From 9ada64d033039c138ec97b7d7a2e21a572bb8c6d Mon Sep 17 00:00:00 2001 From: GuillaumeDelorme Date: Tue, 3 Nov 2020 20:46:26 +0100 Subject: [PATCH 1/7] Updating electron --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 279598b..28268ab 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,6 @@ "author": "Markus Schuetz", "license": "no license available at this time", "dependencies": { - "electron": "~7.0.0" + "electron": "^10.1.5" } } From 3fe253ee28df8003a555f12b347bf6986ce9d2fa Mon Sep 17 00:00:00 2001 From: GuillaumeDelorme Date: Tue, 3 Nov 2020 21:35:08 +0100 Subject: [PATCH 2/7] Adding Linux support for PotreeConverter 2 --- libs/PotreeConverter2/PotreeConverter | Bin 0 -> 1636824 bytes libs/PotreeConverter2/liblaszip.so | Bin 0 -> 561112 bytes src/desktop.js | 21 ++++++++++++++++----- 3 files changed, 16 insertions(+), 5 deletions(-) create mode 100755 libs/PotreeConverter2/PotreeConverter create mode 100755 libs/PotreeConverter2/liblaszip.so diff --git a/libs/PotreeConverter2/PotreeConverter b/libs/PotreeConverter2/PotreeConverter new file mode 100755 index 0000000000000000000000000000000000000000..cbbf6cdf6d9f5297d7887a4d9a2270c8638ce44f GIT binary patch literal 1636824 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%0AXicgpb3~K_Dz|aK&lOC= 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%0Ach!jPUDv8rfcYhJ)16~g*6ucF~eY91j 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

Vzh$--js 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

  • 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 nyujPIlin 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≈4ZLW#P~@# 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�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�>FVDWfNUilM}hZK{u*dS>2)8 zVI<-`4&Kf2J3x^_Q{u7ehB{%-DZvA_L1^$k&Nn3^{rjGVlO(_#|(DN@QDRHUEqDML;_}bwWy^=Xjdb&PD5XSD`vBd=O5hh-M-jssVR-FlNiKP>_JNlcU(!Y=j!Z8|=+iMcp@7~8^Bp|^%U`$4-lBuQr~FY zCSB>t5CWw?&<_!JjF-ccHi)RqCR}ZHL|_^Ft#zl3dVkHuFtFTaRN7XXgAYxi<1}9XGEvuBwS!H|gMh2I8hR zWBX)F2roZ%h+_FH7JKO04@J*$B_m3h0O7)eFhl=5yMzM%?H^Y`ivFfY6o-CFYcO%tw}kcH}zSgV{DQ} z{@L?=(B}FOwM_ZI9@&ksTIOerR{BmQ^>o@7F`T`{G^VtrlAjQp7;mBL6X2;PT`&{X z-5`Say*iP`g!l`m`8Wf!J9lZ%3m}n-BWr}l9Vuk$(P8Uip$4GJ7yOMIg0?sSrMOr9g>`_fFjz$xZ9TqZ( z_=%+mY3Wm-{}M?wXFyW36rM@rXkz(3x_7U-RWRP;D$YY;hfVkA2u$-!E*q^mLv;_4 ze4}28y%afMwON2E?!j4F?+)43z-)}Qwnvd5wgj|%!&v~GqQy%UA zO*;uzEXsj2(04#P>cq7(MK_`D4)fXhfDh( zgi?)ApG0CGsw+0TQavOD&f=jy9wV49J!e2v?uTYfw$GJ}rxZP@5mLS=k^C9jq38Fo zPOvRay|_dHY$O_v4yl*Dy2ScuSKkh+Q3RyX32AZm=6NU$KC`cifm6BMmZC(p67CVG z^a!yu;*+t=%|VzI;svz>`XTnGgKHN_#&bWhH9*?cIcB!sfn+n-DVlMAfS=VE2`9|5 z44!3mv}3Dy7aF6Wt-zlRNLW#R*E&2lwh>_K1Lc&)N+i3IW{CFWm}3s;HM!J;#cqiP zj4F76r^V0;l8Yk`%AgsMmqDkoRcc-zamEBOM(N%kQ=27BE@*-@KW7q}jK3GGQEdI3 z><&=rdTO60VeUCdW&mU*idZADFRBv&#O#FCgr<>CscR)cQk0VW3j*o5W8;WQNn0F3 zu@#bBx8tt$0I3m2c(_Yx(i#u64$%|yZL&X1y7i|wjEj0f>{td$5GmF-vUdVi4(KyF zd8RIVZAb+>({XiTV=iE1^<|OJh{-%#g~FZY)j$X53TVYPn0E+uG*M5YO>CE0$1M2{;^;D1j0k!Z{frz) zky^nxg;^wM1WZkCY7~Q%X6iTtpX`~!@On)wgi@w+wZ0G z94v{Oee8c`EIKw69;E$t+oGsM;=eY3_38PY4BZa}#Aoca#wO#mep zsV!6+dhxyj!|*qafzbAj>vz<_SM0Gpmr76UP#>vgBLzeg`bzN0-t#~&>OP7TE-h6I zeGb8S4VUhC5Dl)bQa{{CVHnibF#+^yFgD|g$Z79^&*WUbH&L-v>e&$|8mPxnuYDh> zurv}Rm26ggbW2jbWR@p=ne8;DWsAhp!-Av%yn0p%nfC(r?*|A-ypR!5fzpTZNfz@| zu-1;aX2E(=+2C9Plxp;g_6ZS*a{&E?yUa3#PvR^yAK@No&t!&SEhc}`lLFimLCZFM zJ@h#)X`@~OaK7%?svqhuNwX&nz|x`fbkBjB-Iyw6*-xG!h$3lq@b-zGZ8d}>&_=eC zz4he-&!dGZ-3JGtvxGH^ud&XU6SD+llAREeE=3}Ywfm5kezwmuXpk>$yTvUMWNjYiT2~! zLuliJK{mY^8ZkgQ6e9p~z#E;jup}onwgFW_ci_Z`SsWAz(vnuel1OX60KJXBC>_2&AF{({-f9*5z`tNC_b^Ev*BKv4gCE`% zrnwQ!F~B3-XP4H3QdP1~AuqzkJNBkWyPj9(D6rPF7nAuW%cNi4L*+3TIIyq5@e*-N zrIEz>z50dv?Sl1@gPX6y&HflML3{Z9EaKI6413J-bQWfS#6%dDCEn_8jLC!qX$46` z^E%~;3`b>{SnbJNn#Mu5mkB5=A&f7au0ne{d$i*&hqVIjM>=CoG?cxJzS4) z{g1K0GU9R~`-RfI@dtvTzed?CAAX@0yU`5x=P15tAJt*pH)mh*4t!YaEd~T?_(`79 z0bVSz@?!l6weM*_T1x|x)I-yIrCLX6?MRX$MCAelTtldqNZ-KL61*p_r`Q64a_gk} z2=Jt>nyti&Hu2hy<0ZiSM$d2&C{)f*PfGp*fULmzR*Yj$coywR^ECH0MB_Z;`hsmE zzr-i@THA@_kd`!SRG8VxP2;Lw0U5LbSvN##(9WwfvxD`-wVLFKA9dM2JK8Y;oaJ%# z9`SHN8OKs1i0GxXSdVltwm|t36n|izYSD<%H8dt%6fldmiK7cGhszIksFU7;&J?*? zhirI>q(+Qc!K7HX!Ag`bTv@FH1lF2l7B2OPY7<+A&$LxC%MocJm*?%&4n!~CfZNUl zCWwA=M$-DIXd(4U6iwER9zdz%GZG!~*q6chtpsgFu#3Q@f&Qf>kn~+-h2d?5OA=Y1 zx07m{%}j62)_`Ewy+4V4VFm>z*nq-i-A6DLr! zmLjCNjd|MI$(Td{P{L}lU7ti5E-hyRLw~K&!n^8;ty8`MMI{DUw2os#B9Kmape11` z#@!-!qLZH1iKe`k2(?M?=T5+KB&q#Vw0Kv>+LHFW9ASzC<1m`86i@}s zztTPjU>ZBHEb0JGi7NLy@C$f?Nl9|6G;WmcFO^ELrdb^!R2D`}A_MTY-uR9(;Ck|2 zDa*Ck0NhSnFbaO7Bm-%JYgg>C!B5>?RT8*kiNMZUv?AhAv(s(})~TK*7SJdqJWvKC zA(j|xV<<}N3G*Q-sU|%DgXfu|*7qmk6WUDkMvk+#CSkCXH(ZkR6o+jlolP@>K6)}t zMKoEZxLAV-LTy-LVeOe|MQdc_l=fpe9P%_P>QAeN+$*N`(crq+Pu3WKH>=~QE-O5! zZL$xprDn9ir!cPbNsW+}#rsNH^4xCNAYM608ZFWtEdimPD3R+S!c3O3@*VucGo^@) zRz;G?1?6uM0;r1%wk)M%&G>6G!E`5v>IlUGW-F`_eqr1q7@w1g>Ln#Bdd`6rz#;R0 zdZQsJU$Q{nwPl&`>*_7SSg)REQgy&dGblF?Q&huUWJFA?0}P|O*~U9+h{N#^Fd8W& zqBNZ7B%7HFe&LNrIX6QfZI_0J1hswypcUjLX7K7Q=WDqC=U$F6ZoY#&YzNG4W%MB; z7_pexWa?9R2HT8DMf!R`Fy5o3uYz)fj8YOLIjKEbUwQtVmrBl$d5~dsQS#j5L4ReI zd%p-8qYSg~pi* z`9dX@<;R}d}#*4j_ljKs_utanyhS}^FPj!RD*vrw=AdG^O z3ORt7C&-Kx)K58Y2;_c%hP3)UZ-5kx#+5i8QHKT`^7Yj#FG{dTBw>)m)L(cr5i;Q9doc|wGB zKy6Sml$*$gC&1oErPDiqr;c*&`8jg{j_MKQv=(5y)3l06cOJ;1Ok;oEA&{!(>zie>pE!@adNP3mFm>wUF;T`q&7@QDVv@V#4KjVG#t@a3r~HaZe|- z?#6aC)Cu1EYtqErARoE7KbLPPS}dFbO3Kp(>u0si05WQz=q7IpMqGpBSgw8*Ky?jP zeEL+fZwLAx>y(UFDA~=I#9l3jnl|}9qLATxLr|}n%1Mb9fmiU|5%3ax%ElDrjeemZ zn6);1w^eM>v)w2gyig0h1W1c!IWwnYGVX~aCwnQvL>p%*u;j zWb~`nFi2O?L?6qfKSe<1bQ&|@koXZVKQre@VU4Hr*wPC!v}pwGm!Hu_>8M?OAlcYE z)5u3Tl9SkN?`9g8?o;%T6$~-L54R-jv!gs%;e$q+4`A!((G_W#iDL))xP-X1s64xi zW}1-$t<514J5i5}8}imZ(k16c(GnC|tG`JZ0>L0y8?()-P2NF7ZoblyRCaf@FJY2l z*tdx;t>sdx=n?HN;n@dF!=HFbdHRu4@CpDLtaH>~BE7#buYVp+P>eN37VEpTd$fuz z;}}AEkn~mQo(z=;TjqaRZf=E00NEtf$_W7O!d5C#aZpM^TZ6tIzN^D+K3b{P0+qDo zwBJZuVHAsYV9yVhTAehj5fV>3I8TwkRvKtC_8dKR{lzOidZUp_7v#z}^nn}RlBO7t zRFnsoS%A+STn}UOYZ(1VQbTlj4mFV9E%UbdG^?rqw()EcPAdye#!fDKY!em}A`t!k zX>349e}2aW;PS4P*Gf|GDJ``82nSj#e^||+6sgZZ3HpJ{@PKo(a#z;K#g|x~+Nnso zt8Y580g!f8>SH(PMGvE`iJUAJh;t{(a2-H)qgQWKdS{juor?TZP)DVko{Udnb#qxs^23=ep zU(|;SMI|94TZbvV$Wr(YlIEN4-af3^^hD7(M5dhKa(x%RbB-S3yRFpHa_ufk zNNKeSGjIWquI3m({WYC&v9XhTQbp^GPx2sN=2B6!rKmTJ7ND(=vmSyqkmo=d+p~|R zk4rKqQ+x2Pa|N9ld7Py?hTxh3<*`hT9AstI5bZRUT7tRZmwIq`<1xO=-4jP5#Dg4} zWiWfk0NTxf_aNi^SZayP`^De>)U)weA(}Okba!JJ6s0=)p9Y+I&!d?13eP2%MUq9@c=$+(zM26zO=uU*g=g3Dy>h<*I4#MFFhIR z!|%lK=)!YCEM26b_Bd3eBOOSmIw)n$AU75QfcX?-C5!;nsC%p+$Klu(k{Y$~tSk0v zv`4Fg-Kh!&0Uh}o>9v(o#I)`AYI>{0gyMK5dl_I|FZ|Cebb(}w6W~!Amx1EsPB)~& zHwNXho>~ET7fA}z`JMcq00qapNsFM^T6DxFTw<3{M{Q)AKx34lKhfC0S;aUbVXewd z^sz2!EsqvKie)kf{bEl=y_$G{`VEBbA zdczduMh_rLYC)_yuong;hxUSRRt}I&q5{%T7F1ejWB`zZ-Q1R*u?4eVEunJ{q zDiiC9)EBEGC>)`QYy=SnL8V@aC5Th2C~ZF!2YzyeFjq4n=ed<5hf$u-xRWfDfH3`Y zH5Q=g73)wv4WEKc1hf@hr{`w^dUZ) zJ`KvKE&#RKfd+^LQGXcHp6o#Z21-H75l1#Cb9?g*x#Ru^$#XxXk0isp*s)eJ1^JoQ zW=43QWBn4bC@p#gsUA2(;%}CaMD2-aW<|Q4)W|8~1Q+4rC&Hx$Lkiki;0G!FN2DS|KHtJSM+IlsQJK2!~Y(hEsN4|@VMr;X*HF6?Ntv^Ev_+}T{ z=H`LEo?xk49n)H)a-$ull4mKF?Ir>1UXV_+eY7QB7#&w8hCnL(13aE)iQ^~R3@e!? zE-6KBpXg1jEhbs#z6fwK`nT&GSLYV>Xk%^VUVKNHXO_YTamN(r;7KgbmUM&= zk>F>4{&Fx=sphCLok1WRc&t@%ghgMB2D7_b9_3-*6vuIcTOBkAB|tJnTjdj|x8I|S zD`ZFGYp!c~Oabdm^auAVY6teFI5%q- zIuT)I$C~I@XWZ2G^h*W$?vU`wtyVs|4oAGT73p<|hdI=$I==|E8(4%-^Q<0A9TM3h z2fmbgU=;k*N-`2tPxuO#S!uz;cAcG0n&@#xiUjA!LqOqm2!mgrrt#Pu$<%~ ziqzY5kBfUwuSM}>YA?HJVRrec%deN)o^x{^lJYLBPPKmZ~Gg`Y=OMB9wn-XHHUgI z?dz@GMm+LR4)=W-Pi+fZgk4;+mW|wKaY|?Zzq-LHjiw3G1o*`NTU-I!)*-L)(DBJg ze8SnF^$^e$Gi$?fZx5xy-gz8ZkcNE3{?oi;&9Z96lCm|SSFQBco)aWy2I4N8)Ic{6 z0*O7_)17c2CQsn`p;_U?QT@<7*k!ws1k(~rsGv+y5}Y55v#TM{_u$+}xbUVqNM_@J zm09eYDWcIndlLp_VyUZ7P>*=`j4b-BB7N@Xs?ud3`E8ULPD{L)#t6@X`tT9(?U?Zz zL0ByOTyX9Ixhrn*YAH%i(!jfu5{0J|Y!ArIBdw+Pw&(Sl!j4I?D^;Jpx`=a)h^s+@SoaF434Q>>4%;pE>TW!M`c2 zc1#;?2Ko~y|9F_l$%)C!gj;LZdDR0T{aN^XIucpx`364`c^l|B(dyv))Q=U_rRCIS z3sTLCKXCO5cX6VzjhxasRd7KiS!OjY&)sj}>ba z(^=j6S7L1lk5n6mdy7*gLT|zShqmjhQ$+4=j(QKF+05+f0I5ZM>IZ7)F+CydPG-zf zP9uELs&A|P9bJTT>i+iaYaAi`Gu%mf>#g9Oj$MHs-+H{R3#m~{NzxClX6}5ToIHZN zOub0)=oNMWs@WPTdyv@o%T2=j4c3Qncj-bY5@xJ}!n(%2Km&FW@^G?h+7_N-9l~pU z!cQf#wqv0Cy{K(u(aSW=3O;>7oX;1>8I;NQhJ0s(C5%0*+^{&bg)L4UByXbZ<{52U zrj2=ems3(=`SQp7Fl(`g z)n@@Ew}DkQ>muyeuH9YjqVuTOGl|GJs?onh0cB>a{_2Ku9$|VqeB&sO0k8JSJVV0k z#HNLk_=t#bewbF1+5MJ|UJcShSkA==+W=ql6{9;geDC}eu5jSZV37H>>er$y&+nzJtA1q4$ z0RP5Tw?;Nf9iHX?*X++hXCnW07EX~AgL7FHP8< zDX$DaIL(ZFvwdlT-7lD_#Gb{dO)Ou0XK@N)EyC&8F-5hC=~6{UJIJ80P$Sk2?E9*jaK%Rm&Eec|`+`C$+lyiOH50e5@5HSCkv2|FVV62>Gk zVxg7L-3hous(c;Lt>P90M?3g!#c0U=F7_2k2{^JYlRXGK;s3;|g1;$G2Vdc-MmU2& zhml3+H^d~kQXT_3KPZ+==J#(WcDxI6zJ|Y7#Y5E>!Zy`Mmbs}`9^Y0ti<>@?bsx|l zlR#9!tHOV^0_?tO7*2I~Os4V5@xd)G6pDdCvvJ=b>rA@;0iI+XgsY70&NkN1N>=DZf^Nvc1RdazZP!^vIG=z7;I zab%DjZrQIOc9$3*gS8D95hQ*BiFcFK-OITo-Z)3hnZJ7%px zTLV@RjUoKy;*RuV$fg@xv%;u(tJyY5xqikEYfX^-xx}jo;~bX?#oRbPay+c&7(ze63qm*A$t!B*>4du^ea({cUlxZL{N%8Q zr78;+31dTJ7uXJ#!g>Y$g9N6>#$kEmCf?a5LB3*Kc z@(kyD=zti`Rb5o<-4M&MCi&rF$_Ba3ps9>2$Ik?1 zyHyT^yq0GjHF-HB0XvH?+NX19^ytf$dLrTQV$GP5)KA5mRcuuVJcck^RkPLlllEd; zi_6{NCy~(I?NZ~(DJLsN0jRwZKWX`LI14b#5z~H-_1E$sm&=nYwx~Th9qe+qZ%_vc z1V_e0%Pqqi;lT0>i9;*Fn^$YX8gjQVbxqop)wISmQ~9i=J>eUT-Ydm2S^GSN`h&O1 z@2Ip_DfSe6zqS{u*R%5C8liRjjqC*4R@M2^w_wlB&r;%==GNkznq6;M`-52+rAL+j zQA6E5-|yUgJZdJg>w3tEswH=6j3JY44;JqvR2E zeE81AL4_XQC`qw+zp?xvi|E@TbLyJD$hUdM6EPwD1~{CX;DxKc%{ZC-K4W(6P%cF2 zX^LlxBZ%f;yye2l>VX~&7nd9m%Ca{8W93i|Qbt?ge3j)q9a8KjZ zwuK<|Op1nF+z(zUyi~&?V3T4F()+nuMY&m_OmyGrCcxYalv5`5H44js3s)BsWK;$R ze_WYA@6wTQqnM=BDUv_5dXiF$f;CeV>646is}Eb0{bm;HOsr%FkZ*IByGs=K*{SX_ zr##;aO$x=_OkG6i4Z{5uel70@%7qf2e<9qijb&WdGF#cdIH9I#k>ZRnV|XL;^D(fM zcfM54dgV0G__j2<)vI(S6~eon9U<=KKLeWXbJ|X>Hf<4O)e!HS!9MMw#e)*B<;z#9 z&?0t+2z*ti>AT|S@R|s_ydgG6INGRFQwNn>L$Ya4g(-BuU+MWiw1s_2^`aX;{GOrW z`MxgQCIi}a!Gf!*D(r0W-q1*=E;~aU{|#JA?4Q(?6n&nvch73af?LVfVSC_#Xv6h* zF$MhU{@grZ$A`kRjq?R5zrY`N%^#L5qG^6>_aGs>k6 zkNXq#>m7@w;x-K%x;P;8aGsGVN}dLh2*D+3qFT1bncI1A8GHUOf%-xs*sn|9SjK<5m7VL_wVW^qh10Scgamt;w) zJ-Y(Kd@Z#oNv#qC;$iIGsBc%Q{QixL-7nzNMKwJugd>e<|B_ew1_(!5nMK(6q^@;( zQ~JT>&=e3hpy=FKt<)I1j5sWn10X+x#CHY4y$Ly8UypH-$0vizd`)8C9s=GC?!4>H zfYnN0a>`5hL@r}+zq9qVp>PZfCxqWAJS(1n8D_eDQRMN^O1D z6~TfXdzCks53T8OU+l9Q`ttHzYZJdVz6>!A>gbn=jk%CNikmV}{ZxJ=s6RXUyu`WO zjAjSZ9%!XFOuTae49kQOhL5s8CfJ|hw6K-5{fN`l8H8ysaYyTT^6RGJx3EluG~^i8 zaJuP%@O4L7#(Kk&KS?A^DK>u)s`idbzS^iJ$bFBnat2AWCseyjOh$J46XPjWtK5-o zciDO1=gOre9$P0?GVc}PYFB@D?AWioS^A{~C_Zf=o~=!_@i>yg`0R2H8(N$b4lDSa zz+>eN)pk`rmZu!+R&$rTmUCrw0%>@zhdZQvO-Hu>RUVU-IPag#NZ1=2ly$6>& z75KHY^TX0A819$(Do5~l%1_#O%yVRvY@UNJn_0zNOE~Bn6ytZSTo&z^vf94=NLM28 zR2$ev5M)%iUMSCkdwy2vy9Pg5WBqp=@c#h*&6UKVPB&X(37l+&{ME!W7ZCRkxL4RT zXF1CGi058Daec@#fIB$BN4;lT%*U3)98ZAVq_LST%(YN;KEVfvH!O-O?{pFNYyKuFd$icE-V7$s{`AXkH z^wQF_KE>Rme4G$d3i=zEuh-WWc%tj1%sOVkH*>ZxW+w0Us6~t4p%KvyH{PqLBQ7XM z1&sX^jXIUSJ&e?(-A{wmRm8Qw@GeXDp^cJ`B)hjSmWTUAP=D5Ie-~0yhJ8TF5zd>x zApKvWHARhy4>Fo%WJbkn6jj^DIWB`(O$@qD3TqMIEEl^=U7D$P&ee=(e)Zz* zM#|Qf?bi?!FXAwX&p#6z@oDm=)%6a>UoP~Vm_DkwG6zw9n-ZUCtex~*h{#u9jm*Kn ztuPaid_#3=bhr`9`O0eBVq`O$K+_fNUd{*4_Oz8H&)QpAmd>KRgzt)%EVi*D!}l5R zx|nb7_ws7#@}%+>@Zn8^jw0&evNda7wAUHKHjB%I#e|63*_5tOf3y7VxgY4`t{F%oC5mJ^cE0ad`*D zaEtI{hTj@u^OVG=eu~#i`n=TVglBoMr57$PvUE(WMEa%-e&qR&YeUCJQkQCaC&QuP zbQ=4zh)81>5nRP4t-?X$M6hzWU0?W|J_iB&o5JJ zHWhI^msQ!*m&dp|c}RmCe8TZPw5#ojZjjhGvEx!%@qP{@uW{bY1N^YV7YQJxk`iFJ zGMo=Xyv(R@nX$R&$CT|J0Ht= z5Tx~t5`*_D22f(bFi{J=O!sc+OzLmkhh_W=unX89PCa*bO;}w6B)1kl!{HPMePd7g zb}#Tvh~*Pqa1K;rru&8XPE)+rl;ka4dcZ`_7JCbI`mWLU!nuAG~Bu z$ER996~l^7IJKk~TE^FzV8a?oT|2i}-RhB2HQ#ltxGAH*s$=tVuVN!(dLY9a0uq;l zA0HGan>~oTBFTB`n9k26hOi1DPaBW8u#_=Tn4}g?;t=e+AB^r9c7jvSOMov=cHvJ= zC;%?2?kR69J}Q2yZmuo^-hBV#{mzA2T764q6TGX?q{3i-TI}%j!1!NZwyfX16We$U zxS|*>qEB;teLB9gwP~Ml1jKB;L`Uw)&a^k5hjtv1 z{pPeF;QR9D41!QRzxPt2W4ea3|42DL7oNzA*G$zr;Lne>_wfz=r^KhiG}OLC)hf3!ZNAds$i2udK zb(BlPspiJ|{_jLadUk4y1Q&HQr=~NH22}o?ZlpfC*rKMr3?DWN3M*Fq0P|!yX(v8W zTsfQ!mF)t6^c!z`7IBh4Zpk$W;`3@=kwf2%e%5Lopc~T3&p1)AJ{@;TS|pEZ0r%i9 z>^!N5o}82&W9F;b%5dDNr;B2|A^hH1tq*PvVhE#x?0et{ujClTyqP4%Q^xmofWsMWWZDE#8&91E`m4&^yGUs1o9R z#p?N(krbb{ddJ`s2>;X|`-t#5z%O=nV1?q8O#TYtONTcxkhswNQRsWcJ`Q$@tg{u1 z_m9h2ieo+CZ>OiI&Z!;aX(raylW#z3%kdv6vwRg!!^lJs)KFJe!})h~G;<%K9wV^B?5uEP8<> z&XM6+Iq@=-&g!n^%JIz1H{NGFufVgFfB!m>B!5><0ljeuFIV{!xIIPNsET`uxfAXD z-f3RYJm=#zBkpOBDXz{*8Vx<7yceh^?)(~bEDEW`!d7G*ylW|UWjnZ9HvFlXa8-Gk z^&JKr&%_!;7x%+qRpvMsHgEL}Vnn`Q?b7Ja@8x2~`xHFAO0Qc))*jUkgjl#bxVXfT zH1D@6L7ytVM>DoMQNePbG1LRFVPfN=83$(hc@HDDE7t=09kMvj3b2{sZ`njvgD3z^ zk?}TDrO@+B+|A_6&zBwrS?5^nm12-4!hP0H7zh$O`An8xQr=HkCEORv@QT^GSK`^e zZ3l)O+b6HRiywuhdraFp8^4T1lv*^)H)m%T{XN57WYhHFi==;gf;8Oetn7O3o@!aJ z`i=lAJAS5k4C?2*3Gt~AQ~c&QuM}Sl8%vd%-}(4k=iz}RD(j@h$?}C?g}f*B4_bpE|*(&sHMqx1r1;i`s1A>WoKIa#ff{Ej8!aewN4^Cjh2Gm*`>mxOj* zxPNL^gs`fy@{`3a8)Ob~^dW2v9R0$ANi6z8uLm>!YX0z%$%FU4j3(}b-_>B-p)O{Q zosuV)@0IjbTSN3LZ)}jkXgv8}zn)Ee8WZ?Eoe3Lg&EUF_aCvoi=QK5VXG3kt&*r?~ zXf}1W-zd^<$h!G_4>VVLs94_ImiXNyIDu_!ejmbsEfX7sg5q^~cun-+JA{1gQl>qn z!h45LC3NcmZ*TK=A|+_N&*4hoBZ$j+7MmmF*~+G&C&8+)s?bhhG*RR~x~M;qN>iVO zd`w;sY{s=ut7}2==MvHLvDsaQO|5Rt)F|O*XIoRd+{ocu>4#HM2@2;^IFC9#;hi0z z=M)=@6&G3=Oc<`RG@SUV+QLz0Y5%aer9)WVrC$=B5e|l0hnT;Z%dg=T@0sK8Q6d4~ zmcwgKcncHWq0Z_$<63>swW#izC8KLRt+nDS!^&^x)Mdi^Y86!)4H|W`7@tS@{uiZ9j@hrvLKOyRy z32uYuD7cc3*SRL|J_DZ7(k5g<5uwEjMmt!(+uE4LGct**67f?(%>5#|7ES1GgJ&f>2dnY5P?#K4EKfGwO6&e3I**}mkUa;_&v@tZewerNb!OhS0bB>h+FTrZIqA=zM|9S-YvNhY^=TIAn}tfjMe zo31ZEEH?;i6U}AiQknfXG|EOrlK|z_rM}a466A2Uj3>m#IT;Vbm(kZv^e0AknR%}` zrFeoUHqG8nhWGG6=IM=cW5J$Lt}kC5K_Q!!xL>N*F2XyX`8Q$st9_kn_eAF0l6$9$ z`;=c5JG5x4DqHV`$<}w2&!Mxeh(9YCo0a3AnxOj$jWh{~%WMOCs~;C5Oq%4+U#xux;# zLcHRxH|OUKex3ZG(KEK`_Z{(n;qjnt;z!tlEf8JpbgmUKN=;u$nuEA>odDDB_BZ&zz;pOKK6$&XLU z2Rfe$4>gGGI^J)D2Mc^Eb$wVdvvZBMnH!`bXd}`%1JI|>#3T7B-PY&Ma2T9fj~wHl z+9Qd>;!=tmluv*(zu(ZE#LW^pNPTYD6=dYQU@uDDUo@*PPju^JwBUi5l+^3xQ&vY6 zxu7QG-mB0jN{Y}r`-IrO8Q64hW|z`VCgaI1fS(uA^P9c%D@k&n8Rk45uoTeu1YUkq z8Qw0=#-|OE()%t97JnWQdtNIhPbem@b}O6TnebXMU6d;q`A!nTPsE?Fz4-y(X%h|n z<^ZALXZqwh1VX2Awy&0WsXTiBDm(@9pKE)d7;feBR{6E_L^7xH`NfMeJVpR6)sc`MQ{4xg?PLSa>)$c! zM}yAOoZkM`qTx!H@9jkEGr&0<>;RLbK>s$vF~$7^-p5H)I{2Paqc?cYdv+qicK~K@ z8(NNYIyPyPbZ->eO{#ZsLAh|TL0AvyrY2dhhyB}^ger!Nw^esRS>)|HikvzoDYdfX zH%h)|x=mu^vbJBBF-!J}@N+_+Qq7)}|NF%eHQKSoN)n%RZ#c?18{)WZ%!YqUeRH6& z2-J-qU7Q&=Qb*{st`*VumJ<;^L|BB=L+ljt)!_Dn4z_^~$U~UGA z)4pMD!F|RM{4HNUyTfPf+jc>pN?0MW zb06?)1*w;(!2QV1KJb3}_*{n;k946E&-diljskl+hAk&a@|%lYcuyZ+EUi<|we1W5++817 zyb5y5PTqZ)Kci=^x#69U0krRq-&?3(I1--#m=aE-US5msI~Ce0kQmo~@I01Gxiu<5NZauNX@>j;-3Zayd>8YAA=4 z=yS6N;XF?Egw*CqKOA|^hZD&$*If#ByT^-qD;M+kAXaTj*?29h6#i|HW!gT69qfq5 z^<}H;XlP%zCiusyO^kO9&^oQLj=wX#Gf6`(+q+Sj0 z)of%jQ&W7dPU5Kw%0%|8@FaQ*MK#{zD7+8IJEMA{@+;3qmIU~jl*>q0KF2#7j!&p# zX8rbFVSPu3n5Cdj{E*a(NYAM=!*&f`ujXLWCH#H|L1ncA_0aMc$Zp~I6zlJEm-<}S zLz~ljPI;cB?jr3e)wRtm;{|;(@u$wRVHZB|PS8B?)@J03-}#C#pL#zl6UIGO{gw3x zvt@Q|lI8EL#UW}zpEebna3|t_zj_yUyZ=72V%A=|lf66G!6$dSvtULd*f8_)g3kMk zuD^+v%iYhFM2g!T+Rr7@hEB`M;2)$HPc0l#?43whvN))^yj%;)<}>FzzZ0$UZx5G2 z^3SCFehu3J{pmvTkmL1h`in)^BF^tv-#X+;S$xlFx%U5*^|N1X)p?zR;QjvtGOtki z55?O~x0pk>4LTnwpQ6-5)yASfu1x+dvc3#=f{oid`^I)r?|6OhwZ!ydX5CIs8sp~z z$XPXLMCdJ=j8&`;Oh7SpQ%1f66!zi*KF9bTtv#~ z`D*#S=?u2y|TyLH=;{Yyy|g$$1wP-d&cuJHU+tN_%tpS?B;ea1U*dc08vr zx*A#atS$=^l66q>uywwA(#qvn=O|@KgkU&sY({)(T zXBQERtM)?*?tce5%ix)VtEZ8^In^P4%y0g{e?74DX2rtr1%^Xflu<76b)mZo?&rXt zKl8F%gACm-g=08$E!IGj>uAoe9Yz*OP>t;T^3HMzk&kn9yjEyYPfvjFh3x7gc~A>` zE(1AJHLGI<@H>&~6A-vaMvvbU+mK+RjVC5H5BE45^-aXMC)DapLp(W$XPxgWxyA3{ ze2O~Y+y6cT>7z5cFR31UTj2kjxyE8~I8gPmZ+rMB)az9@W)d<5-DiQntj_PAPAK}D zRSdv+|DENM6xUqH1{LmM$6eqZtN*w%;+^W8C+2T-nz-!WEH13(srYQjgMd9P5<{vD zJejgMEP=rZIg+xdwXYQ2KZ)Mc^iE_-@o6~T(L6`#C(BJ7QT+_-Aj6&waoNiG0bfjQ zjFd6JSMXnMNwEx({Ybt%lSsW5;@a8%BjDe1)~eKP!^N7EJHGSI7rY~!NP_P;8jdNR zbol&%Jd}~c}nqm;(yh++QfPU z9BFAdhhr2oxP6Pis4VgO%>RV`6#mZyQ9UK)q0fn!wX;$<=dY$)+(lw&>)&PR%qMHi zsTMU$71KAXBd}jsTvDTAY8`XntpNbsQ#73?JId*3U>CIWyYOwm=k9ndRQ;OyJ8!jg;ny}ZbhMTH zy)@={G-)FY!{6gT|9qqub4P{cEwY%8*KmNJY;O1$iglrqmD}<|4Os}V{WVRP#2w>60h`a z;90ZSUg4--4qrHaG-4=O65p?jhT*qg;p=tbapPYk@EmS!S#K_0@^0lM zJ6_md{l_FlIHrCnwuRp<#j=kalIL7Y6J&JR5%S$pM7#(q+xtZF1;%?^m|gn(f3=UW zZ@TDc9Qzn}7r?#@fX_Dn@2*?RE2?iT0yOg2?nN=J^DXDj^E-=wzX~F*Q9cm}_J;X&L-9=eyydYi%O$7J^J_Xl z?`mR+Kdu++m*4ljH_TNhXn+hX@oAb~PbTr0x!Ty_^0_AS9Bd^yH}Kxo!p|{Ij_SgD zSN}g%*T=@iXa8wP1Nh? z_Wg_P!m(jF2U8s1weEk>lETx!;_3vP&h@C4>4|{HpIvGqypLkfV-25zhOgNqx<;4j z*x4kdS9uVDPiaCL>^Jjt`f7KH@tOvMcY=z4mUvEl^Qj; zOEJGF1H;zto7xN-XDtHrR~I~gIHA~x(eyii2R-*i#XY6! zooGiKK5@R>l^?<$mh$;mjT*7(b%<*P{c%EK&=2?{Y55aZOS=de{B7m6LX| zP5A{7EJST=q2eA$=kMdMZ(+E#x{2si;#!7L$SRFCE4KCh*e?07r?@Dr4!@t&G`5xr zD{w%rN(4WO{IO*J6=BA5v91`y6>a!_&_>0>#k@o}XZz8#uG+al|C3JAl`YHu$U@&2 zKyrN_@qD2FIw=n)jFNFTcNS?+IEPq2)AOp7e9oQce-;_bbl{swe0`MobVkqw1c5 zU^mZvf^Wqua6IqVisyCm&hSzl*d=6yvqK3l2Uyb%%x=~4}f)4ArwWif_Zr zjn?44dj0w{%m#5zp8(dW;(6UVt~KP#BJLKy5ms-sYHWD8{jZT##E;CE+?rcA^OUe(r#CENr z)pGzirDlx#B|bK_QX{2z`ZV{s^IKu*eTg(Xp1EJaUoP8=!>;AAqGfa#KA!yWmRuQo z*_0_h8=WESAJ$Hhkozr(1)`q_$5~xg@s*-7@v8N(Gm>(UQXdd_m$nyg5q zCzn=kpgEz!^%!3(Njyik^hGKC{elulzlX}Nsx2Xo9|~%gET*2rr#EV_X*86}&+xsz zNi*DmWY?8d)Bjt#8*Kjs@Y84QFP^aq;ZeaI*Ktw6H`L=b3w#Yc=F-$ECUJ4ATelMR zZLa=to%tux-f6z~Ehg{Sy*%0^q>}U8(9XTZiifij=o!ui89ZlLyxbqsFB@qJVAYJ@XLx%2=hxdgW0-S_)@6X5kK)=8oeH9J5ZC2_eThNl}Wp~@~6`p zS;iZP^JBd(bT%mrb~cN7Oml?BR6PH%Lg@vZTkzBNAInbQpH=kWT(9YR&w!)DtWaX{ z+?ydR@mc3V;q!oH^pElouaYREP#{&W6{+5=d1&>|iNZx?6d1iiF&3HAn>PDc=c+kb3I<;P>e2 z_{j*w@2u+{&V*rei$|R!hs^m+AD#l{gB zRBKht3q2Uz)@%LXhrteips;*MFc1^Ez zd^c!$cfn~5__|$9OG-VZ`8#!raJl)6hJhnNJD;Iy zbwbiHQ?h62-`o61N=nNkQtv>?D_qoAUi!az z+LF4V*w*)ltX3h-bV&{&lS*vx9DclpB{_t@CY<@+%TMJ>Ro5r17p#tLzdP(j!uOP~ z3(Vl`xT&}rzR0;k^{ML%qb2zLtNfbCadSOgE{h~{^llNW$J;k64;K$Riui7q*Yj;T z+G&A(vm}SBk4Rm)bcAy148dKP@iTUg;;tmpqpO<;F+`qtz8r8(cyH214r+WFn(Nj4 zb{*5viO45N&vM0tSzEyGr4JP1rv>*=7yjHrw2P|v+WjfVyA0`Eq0#diV+Qyy*>Zoy z&n#i5wD_H*Wn_ONo7%BOIgzvUZ-_Bc>_zI=j!9W5e$wh0io#OG^8&iN{Hc6ZB%IYb zq?kM5`?i>t==LsW3ixLAbX6bXAE5$k_rZYwsD(!pwrB^rkbyvVo|M*Xjo#f{>b}v> zLWeSrPR7Js>RN&83_Qi`k}mS~bh7cOMk=goO)9U2~K#kADxc)M4`ny z-2Ps16VS~P9xFB}e<-(+62QHN`&`?3$nn;b!^Due? z1|J$&420h>P0!#R8&)%He2Z)TB>ui9VPf5rxT9tK-v+|hszd*VU(Ss1Yum)-{k8Jj z#gkb2M`y!zuxDKDQxJ*SK-^}dRt z`_SsYVXVael=iFOKWQfDBr{tVxP%bCdK}MRjYvxO-yq{+*GC-gWUg29GnJ~jo8iBp zYP#vpyO@uaV~uJ|nA+7H9LM%^dYfcKn7446axs$`Dbm!WVL<1s2Abw?wp(Q6z4to` zJg*w)KkwolucrgO0mGT_l-$SvHYijs4hulMuXJU>a?-gr!ftass%v43!;azXnhd6T zq#?#9k5@d>llm;}!0KRCp4_LRZyg|LpW<~m&2)14Yod3Da8PkrxgEjgOun+gV*Ker z{jLzdTd-y~^>OD!4}3qP8+!a+)xKek;*rFD&AeFdYAt2Ts+YwV{_6mc{8P#7{*h4| z2of6r^yT(Bs|l#g4hyG{oEyVto+wM}II&3=_7AN_geTf?_VKc+FJ91EUhx|ejI%Nl*iH^;eWoqW^MUrvE|jE zrx0*0u!8x#oxG`rGQMb(jF|M=60%*BE+Xi|<-U9p5igB*cwslQ#CJ^6YgM!ImzMmU z^pz>kSN}HHy4n9Wc@)kg^ztlOdb{EbYj2av+3CqEKJDO1rw)feoL46+`xl)S5`KO+ zL-BHPQDXNJ<_}6a!O94~c!7}39re8?4Kdwa2RTmoZw~O^(jO|81|RsOOk1KCWqsL& z^l7QyKUKc(l`arQ`ynaRLJ$;e0h6{;iK%Blvq#c-?gogj= zRm@~DgY~$S!d`86i`t2SB3kgN=*DrP>uY$>=lM-^Z;+gJIcNJ+q2E`y!s>Jr7tC!0 zf4ua2aR;`U9-)5`N_VaKOFXb|EetP|!<;XZiLZLT6p8RXe7*Qg(87=%p&+>TD3`J_ zabQa7iTQNL_CKl~Xzp?GMV1ld3RPU;o<)!~2yJLE^iTPh22OckCD+ zf2R&>XLjC9|K&Y|T|2hOY9w-9AF$;Nc5!;7txxqQys17$V3$eTj5?Z9pE|8rCh$Ke zgnu`O@tmU@tnv8qOJqa0U}o-SbS?o7~sF4 zy;JRK^b6SD5aM?uGtR8=Eh(IO886S;U7uNQp(o3d^-Mp!znnZ z#}H@k$E&b+8s-Mk{C=yR6US#Yf9KjS@v52gtj=laO}7*~Z{U$Ow&Q6))-F&^eD zRAC8D5q5EX%kx$?2bGrz-N}H*vtaqPK^vZ|wkx6d+|`Lo+YSbz#f;D=78EWV_5JmL zvkBqDO?v(G-eVA-OR~Ctm*c;o+|!GOGzweRB);#k3sX78uX8Ns1hbZ+GX-2 zvF}A!KFqLRIn*qHFNRrqKpAJx&WJ9xc;qZT1L<@`!Z+6*%qY6bPS^fk`He5_2I8}e zaq{);9`qgPoP^KOFm&-4hhnPmddwNqx}hkB6vx#tUzVpCO`hN$`)%S`C*1GQ{;WYq zO(qf^TFzgoho^$4L$WtcHl%Y+NO_%=ksaBBk*)x%u^Xs>j>u`qL)}YhVo>=V#dhP)oyLF-GpVeTHGn3V^KOy&7QqN8g zqgra3nEnHk*Xq+_Df3J*odfRLAnS6eBa!U6O8>{ubPcv|FZLZwe4EmLxr@B80|@Ya z1aODM8s71$b^!RDFm^m><-$boHrRxi*5xyO@r210MP1$o!+-hm*LB6&KKnP)>$gu0 z{osSdp)eCNcXQ?z7N%{9B<;c!?61Z7Ez0q`O#baw54B%R2}Y8{p)J4syrUy;BVUd*$e_fAORLE&zYC0Cd<{r^ zFjh;v;Oc+@B{5sZ`$^k0@U4V+oou}Q;EMnej;Y1kRyM$47SmsCzNg58GaU@?SLzNd z=RXg}D+AoGmYB}rVD;pj1=n`Q>^?k+A6&_`BXRStBxazPKzIM&sIH3`QPCCUq=)hJAoILen$Zj=Y=h)jX9z)f4CHM z-D{wA;7vF9POjBcL%75kmxevVq|7cBT>o$|oOzs;>S#jVP3FU}M8W4`>hDIsUEWu| zmi%ug7PfDB2*kiYKikjjpRfyk&q;vwlmvV$IPt}^UMuS~55x2jdCD+zwTYDr&g9N2 z7JzT&E?u^zPzWe>;qYAv{I4es30} zmT_)$3+#VHpKRtQtoyd$fipkCbyB%eLUTI3G0)E$6H$;E>i{2F`a-hZvXm%c1l4EW zW1+5}p*9NH18~2-fe+Dp!G8%j9}_LEt-#(>t9eU3lm95hIQ_N+Gw$wmzG1rV$)r9G zd+zDU;f$c0EUr=~2tT@VzuKUEg^YL8VhX@*=V4?l#Mko$Ldq^ zRjcd5md;iW9iuo0Y`gKr*Y@(+-H4jHy};|1n_#vi&S zk*_vt9`956Oqc1Oo!yH#9kW`TKM?-6i><_`4HJoXiq-fGiLVVs&Ig%4ijVh?%Ee;_ zQqML>0PkxZ8-|~pJS6E`j4G~i`W#y~$@qj~L6H5c`JilTR|7lwNyRlS z>{iNnU!r;;W?G~M0X(i=^LF5w(mfN#d?*B1zgz#`v6ZVpZQ&4zj+gkqru$0Ge8{Bf zds3GIWK)A)0t(tJ*Gk*QS*+KVw(}V3r*hqup^No3RmV)aX~ z23|0{B{}^P$R@_0CVt9f9V`F6XmTRMa|jbkeLE8D`82b4O`v+C?Z;Fk?7A(HLEvdq zSTXEWUP;=tr@b~D46#tVbC#1@MwSCOaf0sw|MLm2ZHrxUL6#p;{z_3k!-I0P*J7sk!$H)D| z#{l(b!E@FDCVj9ld?00bl-y^xn7~t9E8kSQ?$qvNUcx-dBs1;1kY5jE#WNOqX0WPW zG235pg7mm*cK%5F!tezG=KWUmJVf~gQ-R}^`@sCU z+u}1>_!IQw_xt1X%et_*PC(pMb%Gk?+Zu!c4^}VL`mdB!|EKXCNnDubQsNyMMwjms z_P*kXunMKlb?>Tll;@=)A$J-=+Y*Z-euqRs(fuC_lY0;f73mUQZ-lCo>sikSM}e!Mm01T%qKmnGQZLaE8bk*7E=VsvK>* zM}>(CJgcSi=}kJ1D*2q2QsTWm)26ts%YC42-%Nh_(UI{hIxegg`L(_He?VhDgw#8h z=fm%|4ZMi`zq_^t?bpKpqd_Uhms^P~*I1dw78hcBy+O)3|_d8xAU; zZd=xqN?Lb7FuO&VsoX9s+CbF|TGd&#dy&59G5}akDaL1Ng5z}@d!wdfW74H2guZtu zJhOKon0=m{T7XPHIkQ;C4Ew7s96!gmdP7F(es zk`h7aMWXe1*Y>o2cm4m$r>s5c*ERq7()*zNnL2le`N6T}LN(2ZZGD|o9U$NMDasR^ zZLs1QO2lUB!6cNc5dG%O~*Z7ck|U#+b1tqO(UeKIQr59Ks|!%eUENhXcE23@8L zUgd+gKf9!QKTIC3ta%c-)6{Nhwwv73BKJVJb z{7!$yDB0tZa%JF`7M+nL&ta8!LbC2R=}Q&*P%*6Ja($y(m2m4Q%I@n~2^px%1omV6 z9g;4|!pxa1o_bZtxN}Z~;{RLjsk%zziJ-2o4Z|&2KZHAeQ#r0f62I|3dSCWak&{Iz_*sEU;n}cT=PfoHxZT;2zk{WG{=O{G>o=@C+^1(C`>w6_ z&HD0QV)qe1JTj|4`#C#M*4#(8d17qNua*@QP;5#x6n%3in>l_E(BgZ>=eAElTK6h8Z_uuwH${r(;X98`-VBx=6_$4~L+a@yuEXGe z?cwgzx)O`aiwUZgYEq+opBj_N^f*pW627wX`^upYsA*WYe5q_Y8{s`1kj49QlkG$& z$$!`MBxuN-Mt=8&-50zzYoxzQ;`nCUK%&y0O%wlTgLm1M4J(07>Aw60A&ylq7bAfA zr!aqsJ2lT0TLAT!Dh}?$Xl|6ge={P?*=W_##y4E**X3D!`dGa)(lDz1`eF@uM%<^{ z*lin`-~`-xgj3&cvnLAzM1il|3luJ2FGz-dA^e6?zYfkx4Wlj+P%z7s$`3V zO)MluiUvSvxM^!Gv_Q*admNfXRidhZtjuy|6~UsU7;wQtf+R?B7r>nq7YP8t6$D5k zV)$Vq-n}Ai234(o{4zh-tT{t&|rVohKWqN)3y=6!Kz#`XGR|JVGFkNxP0fBmR`CC>ZnFZ%t(34D0_ zt6zTO^OBgXUppQ=I`+YD`Hg*{=IG_ehaOj^4P^`_;eKf1{=OU*~h~=fCp|V&*;0mif0|9{l3d z!7o02{lkwQUuml5|M%Z`_9RiMM_l@)1(1%^8pg}N!M|~iRor&<8_rj5@}JBYlq>K7 zPyYSgUSH3}`p>`HMPEDXzw_+O7+rpKPt6-B&*NV^FaFYHIP3p>{P&)icTbLJoOe*J4tmyNa6|3QoQA6cU>um9Vx^rGR{^m%;N*W)T*UKxLiS0TT8 z^oehb{zf}rM!5d=w~S@ouT}KKt9;xx=S@8JUrp2h%i~|yZh!lY&!N$OqwoL0+{-o3 zl=^BfzI-m!yfU7b>-hoCuUE}?cD^d-d^g7>Gqe}%8MgxKaUDG~6i$G^pz@sp4J z>YFu>{pwqP_}H(${nTT>vKBn{tAF*K-+FIz@bPav@y*}+{Xh8DlQn<%)Pg_y<8S}T zpZ=3S`=|fx&%g5*fB9E`{m=i!zqFoCJoDY}J-cvG?e~AMxURmTammtU&n;i^{K_9T zHMgv4ec`eHzhD1%Q|5n~UmoZ64PH<1`X;a6o0lz6|cYM_0M_z3ts<{m&NO8UI|{$ z@cJ&V@9}z;*Fs*4c-8XyKCd6}TFk4CS3R!=UX8q#@LI}i8L#JfE$6j@*Ymtq^74$&F zOZws~uazv{eeLyi>iqrRe*4t^?nk9>|1mG=>VL>fdi^V}KPY5#PRj50+-!&AIvs^} zJK2@=Q%=e**kQ)+_C2>0W(!U-TPXQ?$LlPH1vlH}bOesm?FU^2XLF(C*nz*v3EKTs z$>l?bALQD7zbo(BB{#dtakHM2aol{y&pBZ><>dT8*QQ+GOBXUuZd2Cj?#Oznyq)I0 zrLd#ux*5k#6`UaF*vX6?ICe+i=L$j5$=N}d-R?TYyzgbQ=?wjJT-!@|PIu^Ray*az zB<;{?_Y0Z49~O$ClgimCC&M`zhx=yif@kNP*Roz$yX&XJ>=vh;^XVVwb&??I6|8wH?{O*#OPDJiptf!TP+H&O!eIgLQp7m4^1A<92v{!O0bq znGWuov%ON_C%dvq-}Aks<1$Yf<|LJMQZF+c+jM) z%gGn=c1WYyeBk@Jmp8ut8vNpIEal-x8s(ZU$H{lNb{hWaf;y=V##5lb0drn}XFH3z zd;w~uXpcVdI~)uz()&^uw1N(W4(7!!7JPUks87N}w%Y|?=Qlx<6z%8Wb!N0sC(n_ z{O0CYn9IQSy1Hq*+xFlgSIm_9dE+md^LEkghTdT@aK5`};WOQKwvc0P;Jq;IJ7F4` zU~1BN`to#Lo#nzmMK4=m-qcPPe3#UFMJE)(0*n)68GgFK zMFzVayQ{!lyok<0?xBenGKXDEcPS`(VQ0}Tp~{yu8VW$aYu?kXd-r&C|y$^h(12%eYr3b6>F2VSBa^!douFSLi~4dGKxv1WrS= zSKHovBULPv-jIH=U8m$1p?d)mWxY;&%a$bfa!O9vkqtB5-QD#;Hl)q=FdsOZmM{*! zJ4+eZ8ssrWKbAE%E^cSe;R5;=c<7Q;yT7@hBil)?gSWZ-vX zAHD9lOJK&Zm@ROr`&L_9LMop*DZR9QV*;8vb{3vfm$Io4(l&ecrcxS#C}i{DGvIjo zfo@EdkoT~**?K>p$-jW^c9Cnh8w0Z?(-eKbVL^?BazbCZ^))rCpQoLCG0b2|3XrBb z2@ia~p`{^%g?kr8NAODdeOj+*D9ZzxdYr^&a}kgN84_tk4jv;<}q;1CTA~XTkqL;JBrBY)}ZV zq>5dRXNPvu&O6=kM!M*BY+SmmDFd&;_k}b%1?7+JD+cJR(h|nMaA9q8ZF8bE7oxPX z$WJy%h3J=d2gyN?Z(OpniK!1I0F2*V0TDakhyT)ZENu5nAv&aXTWZmd|EBhrMLWgZlBh$A znsQ*Rrsr1t3?6W@UNZAjFc<8lKF=HSfJ&^S!mpzSp$uxu1199Ubfc^@dl_ zrI}4x%pI&9f-h)e?w3W`P~-vr!B!QZU41)zn1Ww3U=j2M7|AO%EnD%kmp5+QP`9*k zNr#W6rj7M)tg|+waGI7s_p>!`uKQ_eKIe+=jux}x}Q&{+ZZ8KP;fT%ay zpt<+oZ)x~>_80Z9VSl=E|Nd$>_bI@0b}AL3EnLKLb92p;@1wGOkGZVJFf=wUuZ0$+ zPE>seQz5bFS-%5X)LKg$8{u(e7-9hbz^TYYP)ahdg%X_QfGM)RSC27EV&~G_7n@kW z96D{t)UQJy0QC&M@{sE;cm+#id)ULx@JSNBuSsEZlWsO&i}HD%>!3s9y0_Pb&;O#e zrGQ)t0cU^kgW7K94UpmIF&=)tfXR2A7gzr%gipM>r7JeN(&zB{kKcODYA?Fra=)wj z{RK5IuV1|mnX9$i+tJsyw`j=^SAx$nQVJ~%S$GRwQWTB`CuH-^dv!HWH#RP<^#J-m zU-FCQpZ}t{<~2WUVOI(ZYMy)&dzr?j=GxIuweK#dX%tT|4_$uKe?_lB>(&KfQ$vHr zg=j_L+w`K^cWXG+!fq~Pc==S(#{Sub`d2r+RLjKvvgjB1TZ4?FA>UsBD?G=0Iqwy` zpXa@j_Yapgn*WyY?^52&cyr!T&RfcPOF3^T=Pl*DWt_Q;^OkYmGR|AZdCNF&8Rsoi zdmJMSL^Oyu=QeUpBiAc`G?ePBS zrfdqk0s29EqL+MmBz(4$%xx;$>EpZk;8YJ=EROO(P3^8kODl<*(D!;!bUj;`7HNu=bo-kaQ#%)M=tnI zD-UixxbomG?|TpKeA@Hi%BMY_ZvS+fId?cJIN>2RHb3_rc_+ zy$_Ca?hXE%_;ipK1|NLz>ENeZ`SmKFuk!ae?|Tm>9-QRgXX9 z^G=wfcWD30gCo2T@;?6Qc8*VQ_Ztt6a{n6-Za=uou{->ChU>OJxcS-E&vrdL`&r*- zy$>(&zWv$u&vx*A;Nir>aeleL?>j&1|7_s19iR2`-p&zy?tggk;Wa+*czB*``%N3W zKHJ7M{T%z4mM-d(Id>PIcW|!$Zhv^)wA#x(dOz!Xc$s6nIIr*FD4+T{*2@_K53hsW z!vYiU_%7ab0k<4KnAri<$?F&7!2e5PbNDrs^_OQ4{DFt?EwaguES|GKWssMfi-`v1 z;cbD)aMMuPP1s>Rk`#M2@ zW9(sj?RLM2UyNf?$QIDnpakRg7w}2YW;mgs!ys+K3-~R3754}>Cvi)Y#W0D}6Ugav zK^CZYAR0c1;W7|lH>kn0C{eL*;)6+X~a2$_~S%C%kr5Fdu^#jH!H z1=klN;DEl0sS?7Nl6y^1Laru%AstZ~Id{1b(ZsA_jyW0VqfkIfaS9Kr5tSjNkm<;7 z#=WLP!~_V3DDna}1!rL+Z8yNd4&>2>zbs;(arpC2rbx&DE3ME4egutTow4>Qq9)lS zu1!*^1&V{wGej`JRZL;njj92Z;20>H5~kENDk5;&89v^8v5>({;#zJOLTn-@3eRZJ zDOis_!4M*6F;~E!kWvW<7zBmVS~NqKJh(uyB_?+;ovC31JCb z6$1-UE56DX^Ky?vJD+z;uV{YT!By#E9_6SwiMWYYpeb%Xz9bVAprDvqDZ(y=TI8k) za03m(BA4Z*SUtLz5pQ{lx_Dw5#g3fRMlq{89=;?AK(%?`18xbg*&g8u$it+S>>^C4 z*$NrH>nK*ypaG`Pd=4RwtXsk>bLA}Ah0Y@GYk@coEC8_g)aiDG36j3z3Cwn&0Xm9^ zgvk<2AL3{@3a~&h=+~`j2G0?U$vR2F`mEc*Kv4sdWP%UqgB&g^;WuJ`IDvvaoDM51 zWXH|vHi3*}28ooLUjh|{T?Dp-Vi=#;0s*r`3BY9<>iMu(< zedYFgXhDJ?icr3#_7sXlLk3Ci3nwYk7b?scrua+860HJdVb;2tOQ!?IEM)Lr zaEpOl&2YjdCKTCKv@%>Pxonf>67Vi{N)Pc7HP?;cG|B^SliDO|LS%`!3m{h-L46^t z)*)pc2SJJ6*@Q81FKgA5r3Jbhaz*s7CONf1!pV7Fs^Fu2fDzf$A_YL(6%kRyPpx#|q!Dyf z;M7EXOA4(>aB-SA*J^0M1+(D}zD@F>vT=UM|_fnk0{l@^`F#&!tOq>|uY6W9%jq~i10FfarOomNF; z9PgbUw>|sJvL7~s8S|Up5mRFb=$h9F=MyWf=NnNYL?)xqo2A&Xz&rZX!7h$b?>xb?6g;7b|~V}onN%n;J|yA!R@ zAHfcA9TXZ4-ub-2KTvSy<4M*q$1`Fi0;BFP&)+=z^sH*71zU{`GEre z=nlGzvQ=CJ1e;iS>EP5@gV1`GpQE9RY(xX7wWpJoXY z@rf82s@d6WhaCaZuJFj>_uey(NX`)x)P#hkP$4;HVUuGP3R)TnPbmBos`Hi&he!d* z)pb!}n~@UCBC`sJA)*6K6>GK#KIB56nrA}8p|uE3RS-S(jxdBmpHhNeK`cZ>4*oO3 zC^=6p)7Vhlp~48Evxr!ZwMOuWON*O38BCZ*C%OvqwAMBg8?2L(P1yiP;8p0nC}_p# zweGUn2{+1AVkA6-&dIeBTS>Imhe2``u>iQ$Ev!l;g${|A2c@M7_Y#IJ=Ckl6rq>Sg z2t7lDHB78Jl8F6@&}+9-q+P?saHRYuEO7IeY$0HlU50<97yJLCJc z3YM=H0@Z3&h#)R$#Rn>;6<{`A`YQP>;rq2vaEYSs%$??0B1v2{Y}~w}u~DlA2{;&5 zk?APd5G7%-t!^oxgFVr8@dCTQ)mtc3hZW@`L8aEn$Yzz6_qSxO5_V0((XylbcYc4wg` zlbGs~Mj3==E!SD~OY3u4Eutk9_6BM&J!^%z+EItjQuUNjOzjW!;XMVhkv}Xk3>%aP zCL}DGSX5u@f*Ki!Rm8E!EM(o}5MQbkfkOlZ(%bttSu)>!+&(W-gYEi^0g8a6$*@@FktyR8d~2%1)&EE!19 zdY5q(^5H5gk!Z#kV2?z#C0da{{o9_x==k_soK^m+?=5}Nk~YFMZ+BXVS6jRjt&6RW zPPihSuo9x*>l^+28m-tRSiNvd>zI?Sbti+az zDVDupToVle7_kU|2S%?71X&;!=8n108m*6_Vd9F!Bo!7xs5nK3pokCve8HL+$N0gf zL-$8R^@V7QTTIaxAES;V0rGV`;YIu=0KGg1z6AGA1B*1`Br83BXu>u&pp)h7bik52 zh%@6GHsEg944^r&90HOaw$>Fi12zH|Sw1&rmSx1#5vvvp2Qp-nK;2wm{qbdCM zBEuBA4s2Kqh>tHS6bZ@+w$N_7oHzyo8*roh*K)oF>38ZYxaR&;MyH4dCE!2nGR00X zGH57ZEeSGlBR`FQU}p(0xoCbLD<1j)K8UZmguJZ8h_|rUSUQEQJkLjg0icrf8R=07 zmRPdDD1IlFEC^Zl7J!7RK)oCC9b zgpWjDq(ndf42BM{qypoJX}tTVIZ@$aMv3nP8?jzPcfowD5{ow&JAMG&fEu7{`hxXm zRSLuh5`v5<7x@~fHP9_nCLT&-!!$O5EM^InOat;S>6({?t1*GP2P?Z+#H625P;XP# z?nL>5pzmLTM7a0d1fLkb>9k>Q_!;-hW|bwtk^v2g#o=I^IRvcwq05qCs7aq>Ar&lmZiZvT3q_7{$R_(qPZCOGA*V)3hMi%U_h}RB4?u5GN zemQXrFPpR>#{JPwOcvN0v63vn!mv1EKtPKKlzQN^I;x0`B8-}DGeFT1&t35-&8m$@ zM%0m*k9fBr+u%B+Y7n9!v_uFKs=Bf|^9a_! zfp`XaQb|}MLP*G$0Z$RblJdltgK5wM%v*?@59;MhHn{On8F% zQP43U!Uk^_l;?uj;wh=0$gb}eb9ge09!@+G2pSg|(2?xIQX z=D-qZD2_W}0$u2Dh6s|%GSl70T_+Mkv_^uLE}u#q8v+qJv~?=_g}E-NR}cEAmE&LV>)3bdCaS zOtZkgB8S9Kxu03RrvJE=^0LvqL`tx)9=-{FS>ZM59EO8hSH1#F#fq5_yn}8=RY6`N z3+Xh}Ru~$-*6OkNHk%|*jSL%F!>20Ak`b0I;Em{rQ|K^3Zt|Vzy|SAUt>_7&Iq*A4 zXGW6AEa01om}uVN1$c{<+?2GF$#Wo-=WM3mQv0F+^Gbgd2cZ?rJg|+BxI!EZmHDD? z7zgYV!ht2+B+hi+G8B`T!(b9hfeYE;BqIS#kYxva)?_4r!mAQ!k1n!~OoT@=#aTrR zH|Pus5uZkd67ZFxf$f+xu9aMPCf^PcIKf&eA>tpJWfRXutE7mOtk(*p)M2**m}xsn z+)XmhWEayJbebdB0kl;No=HIh17<7X6zSu0>(vzP<8^$2xpM(2A>nuhI5!RcnOK+Bf?0yKL^(YrL2ie8d>8zh&O!0=$2Gb`XP=c znzaKGHPFQ=L5euAge#PF3GhKZdd`(7MY0;8gF<=qUNO$_C8N6(la*(r$SMk6=a?uf zD3)LlvN{_@V7K z!cF-CeNb>-Oe(Jim6t+SKnqlu*k1ax&O{NQBXocZQ3xOcFs4>g9Aup2qSRVLLj;uT zz={Mb$d@8=M{vMTSok;S4bcSO{ar6Qsry4+OI2x^_-o_Te zc*MlEB=yo)ugh6fj)Sxf@p!k?W^92`^FRw!W$Iav74c^JiDVi_+>)vGQY{MGT3R26 zE9H765LU2-xFrB9Nk3?9+-_~MHf9`)h#bT*>r&yG^)J2hhV?okA-jwnR;V0pL5vC| z$Z`rje8t>Fil-2+&oS9fo6)7nJJOKid$JHO3m`j4dYh38mjB=MOi+g)H!ee>bptp& zn>WEMl&CTjm^E5>(`X57nL>DC;t(qUo!j&y`b|L_g>T)GwaBSY*SC{zhDP$mCkzC} z!J5GH$^zuARVNeLC7ufFnNjhtv9JVtaPZ#~q+xN;%YQTq6wqwGA zcbIFvo#4&QoQi}RjDa@GZZeYVb<6<&P$a?aP`WJc(AbxJXEds0Y!`G#Z9h zl8V@3ZD0m^>#WA8gAzqHfnerygR!s#0O<=!&D@>XjEn|x87DyG$;J)I4!H+k-Shq4^mL9D& z#tPJ1KLOonp)l*4cro~m)lAkSL7RonA88c<)ee7}SPKXW1y9DLVwre0Xg_6SV~&ZE zSnp;D=%H%u68tZRksN9yGtsJGnXH4dMRA6ZZ?l9%?2!Okv$1-z0*TfZJOv}&iYe69 zDYF#~MIJeWp$}vVqBBf1jA)%=G(M{&peHTt!hi~OEw*0qlJ(LEDZ)=kkmZt9nFI(i zIrY-$%!^Jey(4C=f6*X11+Jac>&9ZTyk=!PHVC-|%r!x&+GdkWYg}tW$n?-GFNf<4 z27X^jy6+-BoK6UoMGj@4f*7^NM7E@ORZ>$3TTG-^3pZ9{o?|(3)JdQy85fw`BHRuk zMmW=~$03hJnpkdvQ3?trTJd_oNc93li%7+i?%^X5TQelX3BqhfE?FsF46cR`4f-;< z=<{z>Ii0~WaC0aLu z>Cl(VvJePvJQfOo$b5?8xC{o{quQ`cED*JJ0ka4=pf?h&W@$QHW!8tyg0Ph_tu@91 zUsLmnXIUmqVgr6^SGLX&k$a#A*BFc6CVsLwj(99JI)@-#m}qS@A=fvJma8-B2`>mf z0@kn;rF=$%_%+oDs;u&_r$-`PO9aS6+codnZzoe_TQ*ZR%*CbOifJrh|^ zPCJNEi5zg8BBN&M+p2j|GT5r*uqQd5VxdOA5~nBFMyN=WL_PvhATT#+i(o&-7zTO% zH5oGlvy-Fc!~K=9p4qzxDz~@JeSC0s=5%@MILD*myXArXv(ul=V$MZRJR_iT$?UmJzXBzS-HEv^6|0q&K^Ej$9K@I?mM$xUHbS`<>1Bg zz^%ED4$qywp$mI@%ey#peD28D+?k`5;mN4?+U(?D_3qvBzLCoHGqZPRxTJcQUfqmF zE>@;yW+$gPvwCAk`S7vog}%8n`=j9#(YZb4YZs%w-MahqNcrH+>XD(SuQwXIUEX`K zx@TWBxh)!*D&HJ{4wXw&j4K-2A5Ctbo$i^vJrJG08x0Ls4xTJupN@v_Rd)94*NH>X zN88FLM#?(}%UpZ-%G{CZ@<dc;mV=i)vZu``vuS0LK#_RjU}EDv6S8s$^BqPqv8oqM8zzRJXO zdG7~|F&aKKI|*N%D<3@oRik}-=T2Umz0FAXRJY%q>w%2@oCc>=F6@U%;7pEl)974( zv~K|BiOyZ1C-i^z&WDv#2P>Cu&Q2cSd`LRC{o>r|+m+!l?mpMQyE=2Ud~`gz(-U17 zEN}0P`ffng>W=;Jr1P^(d1aP>k>zz-G{|pQ~T8Z=tulNd;3&0awR(6Q@$}& zy)aPTb%+z-{K~~a2vwfgR_@sg7a=cE&#`FNN%{$w@)I3k)SO%$8;?%zg$dyt2&Fl_ zJ5e4Su5LXVoxM^%x_5SZTC=nDd^B~deCSGf&sgQ&UPINEcFi9l@OC}>_ju}}RUzE?id3oFv|sP`7* zq7k?>8aRT~FptsXVK^-s@2i~Jidczn_g;twkh?2zNOW=v_JFqZit}Nrx&A#GBiuW+ zJ32g4{^ShY3pdgfM3xjx4Oe@%SH};*?PA4~x2t2LbXW{|a3-1>DGxB+Qp|7@L}MRn?uPbj(hqDcpX!hL`^@e3Rxg~5`mWJK2y1lO zAniv(yQSj?};s(XQe0@$>Li`PjC(!v~~12d-4MkIo&rNF#Fx$KYP*Ja_y=G&xxv zoT!eER*v0^rap=$cb7+o#SiDNmB$ZO?`=n`RLA?O7j}p;lEg7F{E>_09q{MY%GG<( z-Am;osBvkhxsQ)Z+gwC(-JUyshIyRp-yfaZfzC(0%pKbYE28n{4%|fCBqDh>b~>kTWA;r_5c#c%vLV!f#r-IzQv#tXE@nQS>p2;Ha1p9%>aTo=CTAd(gV(C#;?nY| z)67V9{Cu>xFB-ZU4P8bGsxt>s`_=2Cv$wBA`}R~WTrtX|4~~)mj$fBdp_Zo(Mx&RE z{yZT2a&a)48iG%%1D}*fwnqm}t2IsH&1h`0QyeOO?w z)^g9*%C4LGcjxVB;N$ApIc^ut^v<20M(1M@qANqX>A?P|M_j63FMojjjdu5z2S1tH zb{74>eWeM}pMAYjNBbDsZAm)vd!dh!&K*00V9IXJ^wZVK!3k`N7!}RgKV|5=ho8!$ zXVK~muzd7n`B3ld)FAvL`+KUNF-rgMI$gbY07>MIupcvCIo*T3kSd#kZO+0ol~MTl z0M<mHD^nLx=FtgM z)6m@I-O<zw(5nQ(Y+&*ls$W8&Zb7AvE49FdB;ipG`6#PwwDu- z(7A16vJt4ksgLH)o~k+^pXHL?~s~d9^lnMMwtSewzF4M({OjS0LI&&Yzte zsh*!f5}Cxg-VdUwBV3NXo1H#d{^TAS0CO*`#Vn8QmVy;BIgF*llFps!i^lH=Wij5} z({KoSL;p_?MZJ@v>hP)P_O)mTDcFHjMrTeSr{&}OKu2QBGbd(m4|1>SR$0>Wp#f%G zynXvRzzkz2j)fr++wq;?4b0Z;%vky0?PzG*?Bw3^&I8e&D@Z8XSX%DPmFk6U0w<$K z1;(!4tDHYk-FwRr>Jo#kOkb!>kIvpb1rCw^$0lAp4N^jt32&eS&z+nb?yVl%TRwm} z8<{)17mOi!ym1RFFaErH08~>sIV#9{{4|s=U!ATTK2n`Qt}kNp7zO4YjR#q(10dJ| zI8*p@_#_BHVs&U}4g@9M-oY*CRrShtDeY_hLX05TT^Fm@PhudVKID|9W&odXZ~5?D z!JDBY)v=2ZM=}dS9@;ba(ST6aohhl`o(t98+ap9Cggkg`_RjvfBUhm(OeiZevZs2X zM~Z!D8D z)u2d6rXU?wFB&}pdo$7KPbv961a`kr)A2Ks2+*VS;RzIrTDx)`27`NzH0=VzRIi-j z|MIahq)A$361Lejd*_t2!NAAm(cR_YtK~tg4|Zf&u(@}SBxvZeEanl=?^))edU03v z-aX_CNzn|Boe_-e*-C2wZ|;T5Ag|>5b+mWo=2dX1kUtix|1#o(uyZf03{VGlojZO> z^ED+4D?JR~-oXH!#lA-ar{<2G6Y&QotGl*AC~yliQvT$0`OqXLJG!!8mUQ3)a2l4e zywmgwdEB>G2(XvA;J!D|Ewgv8VRR~^2QdveDa`5Iha)IGZd5+o1CKEm%pJCXVV19c zpovCTPfk`2epv0lrvB{f6D9=dVJm?&=YYgFxoP#pp6K>u<)a~Ceo)q35DV&}53DPF z0%XO<8MspJIbPll6CyRYqCG=M0hWlN2|u5|i*!KA^6s6eO0gmu>^APwh#2h7$M6i( zE$3w?+G7W-$aI&F&%mpIG*lLXCU@!R0Y)dtw+l%bmWsxw*wYWeWu~XFAXD&+Wa`j$ zfGFLY>p3OODIPmAck&YYqP_82AaZFPK!yAxuGn(i{aL}C9nG*;p1}NHtpLmZ8_&5S>4dijWtB)x&{3 zem-_-;bC}BJcBXC=%DR)oe=R6>W>DnXiO0DHFxkB6Rjca8vyU2(xaX`Fqj5AyuWh% zEOr^yBrk00GUjRSsLYu(>du++U@vNR?$C^pxGA9sJSMC#zRC1;qzvU;zI`vc^-(l* z4e6epz6%RsDG)KdDy%=c4t*}(ICwJJk9&0%X#&2=2Zw*|z!kTvJFmiWjEi|kiX}~G z3>^F&@DIA;O4N%tbX%4b#W=H1Y=csoIa0lLR+#N3fV@8%IVq@o<5+p(B%YlN(B6xJ zzBqmK|M;lv>COvWE4J)8g|73g$nm$ax&`@>eN;Gs7FG(Ul4FPwV!GI9baHXaCh5SWo!ayAwPX$ z8%8i1I*cxrHN;UJo`mv8s^cJ{ zF`=NbF~TbB-1KR#SJe6Mn(7so`Jfu5jv zKRzZ)x?`sD@%i%jkWne4(YaWn`#2)&bM8|4`gz2PQNu-*t!LpVFe*b<{ABVn_9z-V z%1Grhfc%FiWu^y?Ru17v9+cC454UcB6K3zt2uKf)!h!Nb2WFy)!SbmgsUw_3s14in zU$0!=DvsI;dIX4m!tk-A2u1nyS#j*HYbcXw=%eV|VaadrcJMs5+W>~6V76#@*jVS& z)ytsty>lP#t6bO$twgR1J20I@V2E8ry%R`TG;OVD)NBmf_Et&?42Wk-tv(l#li3vnG`0Di6)A& zZye5<>)9p+yZ0n>4d{{@q!9vx_x1vvJ+3X@-cMYiT_faI1QUYDE0jO-OBWF4n}*x0DZGF+X+)J zC>#Ook%CTljz+sMlzTt|#2GMS05oLH%O%cOF3B zRt}y4eU(4jW+GI;-Mw%f!8$;Gy(=h{r7hndIZk zf{*Pa)K&)gP3$BHX0+Te?i*S~A<&Nw1D@q^9NsZ^X@c3ozHpA{(1&*~dBF{zy}fhp z=(VVKC$o=bFW=cVJ2e*d0SpE!doRhx-8;v;3qxMnk5PtCNY1hTd!D&E? z&?!vS&fW%aP7-&LP@hB{O^fC;H-tt`DA)^%6D9GKch4{!cKMRV;SjS|>M3hA)be0a zh84Jg!O)^S)j*YW$O$+66l1ZwhUJyw{s z35%q=fIYsXl#&=pKAKik$@(G1fHqA#taR&$$(m<%Nw>9gl`L3NCYAUYn%r8l1Jgy%Cc`9fe6y&fT115` z*>^#!4F=Zw}RS&l6l^pga|I6IeJCM=>V)tpW7J~@ai`YUgTk(eZ0lRIis zbK6Pd%W|qoQ4K}gf^Twr$c!PWid-YIo^+h?8Y;0ng9Kd0MUt*(ssga8qeNG7A3WFoBS*7-qftIjzV4_vkYxn zYGT!ggaecR8It8dZ*wH$kg4LQ=mayObym0`t664+$BamHr~j<(<+J3wk`BUb(jUzf znM676q9lLynJz0O!!_2?PY8Bw}`_j*uX5R&tm!D z{w2y-zz^5*&K8z-X=f7&;0{%%w06mAFLxmmk33_gvT7R;X$fHmDWl~0lH$C@HW|St zeKkd!Tustzo>7=&SSqrRrN$hRIZZk%342I^G9J_)Wq9T^<4W}n&30Xll(Caf({8i; z2eHYyLMq9dQ-8>1f_vG)KK<#?r~T|&zxQB@UF=irc4yc7r+dtitL%)|UioYMI>T=J zNsj8A8=vmv&5m|{`_LSj;L|O$r+%7qwP*eVbFFsdUw<&F)=Z0cKJDksJDhQY@6-BM zyZE_QS6$&w*XMs{S3P}ua8mcxZ?tE2@N=D7m@@6DXV1?89q;$>*87hcg%RrsQL8+oynCqs1~46t8LX7Q2(y;-(6b%Aim?H zzG<&NSH(T#+O3aT(3R9DpqjvZ#ehk!VC?*N!u%&%_nEt2G3Tg18Xc7j`1cO~-ZuS= z>lfVnbStf0|NPvc&(HUNe(v_?=LgK^p3l!snj?okKX=a@8T|a*!OzcK`TX2v^Y2CT z>yUoZ|1+PT8~yw|SJB9%Il`IeK0nV@w8_7H=0ZMm&bSWhUs^tAPCn1)P7-Tu&zw2( z`MD8uRqyBLKKcCIN9Oa9&(F~}e&Q-Vb88wIGk3iB`MDd9+SDk{o4)Zc_d05N%T;kZ z9HF7^gXC98R8h!iWIR9OkKhAGA zOkIa5Dlkl#N)COWQOkkzRfD0A^CuqOe0YWPw^NCsPZb;Zy_c#Ev|;X|dJsCUGgPtR zGI!j@)zo?5+a+4!zEq6Z_V5<1UF7cEhcnNsSA3$z1pke4oZfPT+7qAkbKdQTH~Dqf zXIuF^O7#fcRekHHU20Qs%_omW($D8>+)tG%`lvRsgRxvQ_nKgIqJXMOT%k`oQ*|w< zDM5>Ik1umijdzr*RHNbsBfidilq0HYF<`1;Trj=W6}r!a#zmXvT6%bvwg(vJ1+G@# zbey}WWm?rp2KbLk7@TpD-^VyQVLn|py`a7Yzntcretyw8I{Sv^hPz#WV%zw8R#f8Z zQQpj>>Bm`fK6Ga8sGGsj0q(pD+FUgB>gOnP^6-<-`swpEuDryrm-%hG8O7AYs~qWL z4A;0qzwF?@e%_*R+`DbiNAszkKw(;<76`{wwc|A3RTqTH9gJ3Ux1DoUFGM_dnP1ea zi=qmx_Hq|dM(02m&KFHa)h}~b(Lo${Rz0BoevKTynRs|heK5IU!U*61QkBR(B~d@4 zBv-d1&cHUX4l}2mOl2b~twi~Z7%NqGNGe~Myr>N6AuVx^y-7JC)huZ~$l7p$5^}KJ zm_2R~QkswCWOhHZ_a$UIIa%9e@|xUa?XJ;2PAX|C@k{uOw49=6N-wYnS(&dwH)Q&y zNS0^oWSq;Zgg)wkm1vWzb8Yd6xF4y;q-dJG5rMYSo1{dgFm^lbDnG&IQu_92A3*ph zU0HXbO8`LSyDCG5KT5o2uYH_%Ur%Z%t()#LJ_@lZA<1CNq&8KjisV_xsiA-w?O)b* zHZr8*%@b52FvB&VS$m7v*uu7jBG42_fq~}k0*`h;4OOy~m2jzKK6XB7|1_Iia^O{R zwYiS6bS5p4oGVBmKmhvMtWKb)*^3FNDX@VmM?SHkHSi$L$xo31MfND$6twGtgkf`A zl2?^TF0ckDB=btiTLSSAQd`F9S-d4gTk4eblw?ZDWs3KbEbgQ+F5&JQdhJm~lLY5DkQYkJ{6_o?0&8qYah^YBf-495t;tAv*G6p3tg42{iC;osj!A?3;`CI%k z^)XbVg5)XkNUkk2+@YnR=#r?bq*rEJ z<5i(W`5M$fC4*0?oAiqbu;ZbCDk;91HyQYBj4|5`*r#Xizb+m-nf@ZdPhwG1CM}(Z zKdJ2pmm?#j2&#ODwq(e^fi);uNOD-5=N2dRDvu8$IIG!YM%o++`ey8AYYWBc%-)L) z@f34EjV0b7gCCd|vE-q^XYAF%?P24AXdQ~{@OW1(F?V`7Rsz;4i!3>7tz?kAH?y@V z)g}(H-8W+0BORiIZ#GMD7IH0lSgYM_^o#v9>~@b+sVVYf_L7)fa3{6Sp~RfF^myWV zlfNItb#_!tra*dkyt$t(@bUOyDGjPOoz$gcTz8j`>8)nrY8DK zskK3ld}}uFQ`cRbWm6;h(WV!s)BrtGyZmY5Z+caN$O<}^jr>RqwJbPD z5<9}2WA`07r(KM8H5vIdvmTF+3HU`k_SaEL{HARwR)HOuWOlNz9AioqMP*HM2PJTG z0i~$2>;WW$Tw1j*-hL;pCtp|fgSniuQ;hvZgrURVEaOHbgnd3)CMZ@`n5@m&TrsDV zahgW2WK)ze!k#hzx*6MswDSPX7w3E9_LJ<+Q0M{Mjx@h01DScY*1(?J)oP1z2qr{9 z7wHl|S9&Xk70}GsM(JcJI9ld@41s&q$0Q)NUP^sE#SVfLRWs6(;r9WdjpDjOUbP9c95oS$5Pqv)o2i=D&D0Lz7y}(Lv2DdVhBb-5TFQ|cezS1dlM5) zX1Odo-`Zt$Lkg^V?8GT3FPaXvDRE!5AlS&jG&%wMLy7Mg{Q{?H43x!T#~83fxI|$9 zw(S=zGyv0ROdSjj9^hxJueKs+9vGjhc8j7Evobq9q{b=Lp^ZUJM9m1Rv1Q1$pq&5_ zwVB!CB$Lc8B9Yu$UDQ6-c$XQKS`7GN4l#`c)+hsp9aqsbP7&(z(xw8&f||T)T4T}S zWFQ$crQIW9HyA~4IwtExD`g+0^=;Gq~QtwoIyK14TRh$zNj zcJTBJx+ajQwZ1(Y5Ty5;^|%IDSKVS^jqCwNrdeN|f$gA!T>wT?kB2E~rIX~f$=tQXP6bYEzO(ZY3NH(3k7 z2{wv)1EwGVJE>x)2{5D$VU+1}blZkl3mDAM5!M;MrHSoeGIa(|B72-~(YF zHL12`v{p{Ll7do$_K2yTv}^UGy9&75JghP^?faifF03Vp9ALX+8`zrGi8)LpqhrH2dA9To7iV zd)u{C#$SBK+7rVNQi7>u|F}`SX|bgpQw%ZQko#x58{%L`yyX@5U1k+pV!t*yZHNc$ zwIfU&ZfOHe024yr(i)gN8@76>5IVj&B%n%y_6*B9!MyBBrkdnt!8_Fx;vir^F1|c= zRCBzEa8X^n5zDv{iB@?%)cR;+&}a<^2|tG$*=$EAfQ6`npdPf4%q%jvpr%F-37}0} z1yg>^Y;S#3`C-*ts*4e*92c@)0v;H>hRT5l<1IwEAE^DNXNs;7Ae5neca@@`&3pz| zAZg0O^Uc{zMCDODM9;19x)|8HILH-~wWi53l>l{9xIp!yC~#vODyB-|DS~1E5Nv|k z-nyU$=aMO^e}PR<)E3eXY;MFd8GNKV0-7Yiyv|`ANM+<}>yg-Ckq``1p@*w*f$Bi< z;-Jg!$hWl(6h?t?m{d!p(h?0=JV`P1#D!)?5gb58315dl7q847Hp zhZekU%B;BYUcZo@nZVLwP*uu8U?_jE>QVRyogoOI8eZ%`WQG;Hcu8eN(Q&b#qibP* z$&E;dWKlj80kMq@FsfPSV-tW7Ax@KO$Kjb{A7C{?5#ZoLur{t%@_LaSbGh&*bdoc1 zsN`WvxM*6|8hXA0Pdcf^7;V%*sX>13JFJUQu>;+!7=g2BH3keYEfK}a#?h_CY_XHX z0f{wZFFP3V(2uu*hpWwEY>Db|syMa|r;>VADu&OQW-}ZciCHj5WDM@v!glq5cV=Qq#4@j4g_HJ=UySy>a!=t?vsbf-B5ESUD91dT%zaBWBvEjB$IX9nY_8 zp;0pcQ?r#bq&lBq!z&nMy8EmiLep#|S~uc*t7eJ^zq}cjWFWc#%M<=_MJzD_--P4w z4%rBd=}Q|}(NRJ%h%B*3TcTuwr9!CqlAt*4@`F8%pn7Rd7{6sui?DElou5=pBnH7E zbw0iWu~@Ai<>DQ(l#GM)Kya#4Qs;ug5^~5!>b72 zNSn&azm-i>(N5!2ISdYB`$K=Rm88lXw!l__!32c`Q9=Rxrr8@As+gUeY&iz1Lu4FH zF4eAJD_m?s6b37{v1VPr@XhZN-8 z3H_N8uF%8iy5_t*0M)u65yA;xGv2Bd*D(oKQ@WYw4aD}{dMgg?tY@n6%F#ulH7ZzK z&ZNUBF%(k(#dtk+gpGhmZ^U@e>;(m6KI#n42`Cm(fr9Kq1$F8{1u7Nu$9Q+AGvd7(o5cM04ql~4`^uQ=4uBN69L&>u_2nKd7l-9=)XID5a5Gg^G@%R@y z$(g2NZEf>vc~{*Q{KC?K#c;sj)H}yP3mj8Qq4`m7o6SlACA%hX5X!dPpH#vrRY!G^7ADf{s$cGSf>{iIVjU*YQ*rx)hfQS}c1+%7-3h zhRS0In4Xf2;$!=7qA8In6fjAaB$274>O>8{Q`<##mvJ{)qA-qw1YNDu8A#U_FDDSV z(v4h|b1syKO-PQUOZhy4d2ajYG$A&6}_`Ha2uY^2}7}iEu&*jDemg zCihD0Xm(IN6Wfcd=wWR2B{F*adT2`c6sSqX14hvfQ}XaB@DbV+mkIryTxGq^&FkTM zacgYmEiyHv(rqC-5`w^EkU$me>8|WM15>~kaUy^TA!YrUV@tIX_>tQR>jSTq%_BqS zrBy*ecYw+1Gz!qCavuvsVmi8jTv|)C*u^PKqg?+rad=p$A7g5uk&5;kxfQ5kSGU=y zkMGN4R!|uorlx~s3XM3a*W$SM%h*Ed-73_G?LZ;%tz@E2Xj4-#!(*3Os!Hn$U9riK@B8me^=8KUH*1+&0zxC$z> z$pDRQgc3HfJc`;FjuZ?9cgb>5(xhkznPCP22n38&nWm!{N1&{@=tb*`plS+gLmt(Y zG1Uv4)Q{t34|SK0i%Lv!yryWGU_jClJ`<6dV;r1#KYtDOL@}~~9 za6DOiRv4ebALS*+L)D{@fTk2jP$>k5H__|5gk#%P0R~SLMdhgN?|<3 z7FsBrkSetjD>1r&!Zvg_uEm56Fg`v+BeD=z@y69PbzVZr7!3W$qM#s%^de+buxDnB z8$nouCl?VfustEOcxOE#N}#x-P+O1HTvTgD$G%kRb4({ zA)>&Oob)UhN^oi#v0)af%Uf&EHY*&=5#a^`D9mQ8O;a1SxR7W?d<}n7(2zJ-+Gl|$ z3^&?o@h8Tc8#UoHNwHw0qykw#QiM)VphO|Xr4OEc4fD*Cpa{E4BuwzZ30@_85R@MK zD+;a1i!>_}78*ZPUr=$1DXo{PUAWjVAKsKNP~_Ga3#oFns!t+sLtfz{n1HE(f|v&` zH1%tkhBe?K&I0hD)<7%BJ*qk8L5!F5C#_(&DQRZHOgwqWaq&KlEw8VS-D5!$m_ce8 z6%m&vQav2xo_f*zDa1L66gdHcsZJBjA`Qyz=s7FFG1s9(N;x>tI0O_|;*`d?EQH_z z=r_jWiH7f6El>Y^t#Q(N4xc~rZ;=?eo!W>4sS>R*>Rdr<}#r|0xBx;4(6%)peN(Q;du>a&RUTPE?g#M#J+4)a!KYle2GxnAo9g`(+#<-wJz@|n zH(l$nq?d3ETN#4jFdM2mN#$ju4ml2nrtEhKG4{iHY;yxEKqmM=_)4fG=C3B6)X11i zubFagA+a@y!pl@`Gcp=b#5*JuL`k!-{!zI{Q~dAI(s!O@2TB&B870)v#DrlK!3Lwb$amz0yG#fwB-UYJ&Qcu;VSB9nWPbXF5yaQ zb88tRu59ymYs!#C^fnCO<(1St;!k8(~ZVpel(1d^ zf}6+Xz)o7~dXdNilPdECUPV>1#*|u1(gG+Ck3f7QSV3zh&_iGzLxjkfWft3A!?Q?1 zvhn)ZBQ;~f4RE-a7InEAa0%7}N;3^G9~zElW2!zT-|*((pO*=$K?(CL0mi_SN$7Q4 zB-BzlehBko4AW}OQ}hiB-lEue zCw^2=sy9zX;^_u(eX_*U5Da38`MGYDiODsKKV_N#B92!dw@DpxF%{@QwObd<*U^*d z;=+J&fhh&alz@Z=BV?nc2JkN$1e+YhwfSoplX2iM%tF-MNc;j@DEouo6!s9wWv<#V z#Yt8|4Xo(Sm?*5)x{zX?^+^TXUF-EYM+vVy#FdvOAwVoFr6oijwINmMZNl_X22`<1Jv=~DWyU~&*^Gp< zz=Bk>xE>qiCDvni~*1s zdrK^f(rY`!OU5>r2wdawhYhhAUCR~`vahVwii=o!1Var2qcj{%8wJ5UsJ5A9*S@RV zF?5^(SVr5!zlbIl?M3rq1x{<;)aJuAu`O-#;8~JFQjmukCg|zKi^2HRMuQbqP2TGY z9Fxn&EyaBVJZDMJ8?TfSQmWV5}oL zOP~!($R883Vi81HJE)7eF6X;~{qSyFLlqe`nIZLY?B9At0R1N(^tJS7} zvVs<}6D9zRwZeWf(@zuH0{Q@O39WiU%~%(@pyddKOkk@;iFI$jzLs@pB^(+#XH1GO z!6ARcP+3T23`7UCh^!zdqg7NjhS1be6ig$nAy(8zhmb+m!p=jn5%eb0;iC0phpJJ%dlfU>*E+A94X{0J;)VWIl>5`{8fn#@g<#3D>&*rKNoXh zz4RcYPqdm0t+jEqo;sSU1guUo8o35YH1I&-zF6IB?!>|Z;DjaS*M!kb*$w#MVqaO9}N(|N&87hQ}Z57KS0>b5xg5@Vk3vn>Q=D|i33q3bY z6ChH+f*ReviJLEqix?Zqll_9KVXQo}LIOxUQv4~>LS%)~_!E0cJX=Y8ve@KVn6y)> zLoZhP6Q^Jh;<%dTkDLWlQd)SJ0-aiKL;>F_WXyUdtc;3KP)~@3r9@6fpD7E9MKkyY$B(b8viLn4Wo=CkUtCs@zKUzni;5xf zOc!e0YDGn*!t2q{vcIch*DJQ0@38jCL&pF^T`GAWr$Q};=QS{jN~$_8fpmp-;u717 z35#gPh&+oh?MCo&<{5IBPnf2N^)lW(HilW3nLsP*$u&wSz`Tghs1^>IVBK5k4?$?f zi$ojZ{3Vo(rVd$=+pMKi2CcOM0c#WijlD$F51=9g%@oIqL2N81K_bIYg+{qfb4q~L zJYmmbQlhJbK^@veEkyw=%`*Q3?2RMtF(PRr@wk!Nvt zn(3E%hnZsi0{2leM)*|@3DhQ9CRGWxW&~m8V9Uueg%IB`IhMPrR&J z%hE(p+2zqfrmiH5Uy2tfkB%uO>Zk7_2nIz7SoACx-<`NAs4cZlTjxl-#7`tYF}9`Z zKn~t$L%KluKW1^5g(6ue$YUzYXTv%)1eyZ2(Zu2AsAuv%`J*GiSMZ3SF_ConGP2t8 zm&_^#yAVvqlCdGaw}uByk&G%dfSxqLcl0&TlrgN0mkgLqF*J5eeutrTY(4?rc(aaQmI42Gi>%oQsI~BMNsEzrj7Pd=5A5E)tu2pA|J(2;m zYJCJ_ZN2g4Mv^#`1GiWT5>3nUkA_KK6s9*UY+J^aTu>7m`+AuXq{A3^v>P1EFcK0@ zs+sbr25i3((So0ldFa6AV%VY4dL?V&i0Oe}Kp*4DOE;rth@h*;`m1`HmlOO{vG=Df zKG9V)szEx47JAwWjmA??1vFlOT}Vca_e(r7*Q}?SXIB~n%PJx&RwL3H&QTcPegT6Gk&JD`S=5iFg8=DzaG0dc)~vRaPGX zSh<8K#|YWHYngnCMf#E&rnzf_ zNjmp8uPMEfT9nvqHh_kU&C_U6tDdoAB<@&983U4hFjb(Z(E70gx@PSVB&6^Sb7ZEt zokH#iHBeSzNcr}1Y*P(!A$}9H!XqK+1B}8Qw90440;_8ET<}V~3@@&s6ucJf>1d3s ztT>OXMb2^VZM#`zp?PSzDT7YgU5Lwr<*_nwh|$T+sCgz;!pL_+#}hJ=L9@LADhe=HrLJ!TVMm*U;zu}fBWuqGtp_1NoS+;S5!RM3rqy~art7;vJ|u*F2z{od83fbeH)yLBQC7MXbYZGp zEqC&h;Gld!6F(vC1(lK}^@@l*^PwQBP_m|qfCo!?SY$oFnX3rbuy|;OtX*VEf(p0P zafY+G2@*;$zzICx_Wvd8O`j|;uRBk9H`z_^`+7UoHdWJASs>3$xNCEi3J@g&BB+wp zGchxctja7ZAuE&4%mNb05!x4o7TdDqMYe<%3&}zPu_GZ~V854N8O6MDM?eWp%=`^A zpU?N4=XY;S+X8Oh`&*vnJm)#f_k16O(IIuiLGH0H=?@Q$enS(8%Is<#&JKM5Ww}+S zlcvA4lW{TrB(#Nbh&;3PQ@BLMSW0prYb00Y=D<&VrG7bQ)vQZS#1 zVW@7Kf$mB!nfD{%1jR`|2t?ytoT$Ps${{pjG#YRNu8W>V&l}O0Z8B{fG!Z~8IpUt@ zitZrzG~4*Gjnwp3--?kSZ580mC@iQAo4Av%3fJK|sfk?{xLGa=^0Vyi2yVi+L4`8D zu`vN#S!QJ0B&#q^SIJn;L_jYnmzXNSWzqeVKha-?{W2g$Y&OhQ{uWGxi?)j81Vy;P zbgYs}p)8-o?nUr`#~EkTS4p7(a;kyP{iq$BD|~ajBh4a=e6qBHV-QV*N~o!@46T0U zAXt24llLYf#58fJ5C=Q6Hk8Noi#~ULjx&5PxS7H_+kg;W)qxn>JYZa-awvKg2KB($ zAkQEciGZn;z_I{}_4L@NWlx`~fD2(ec2ou|iUMWH_olJI3X2vLV&Vc2PGuDVYml=h z*at2d;>HxMvtdpiM=1ez=6zK#ung!aTAB=!D--J?v98@C9fRKwOr6+sP}a;h{v&R! zaBKvUaVVr1@4aW^FmSjdU2rzmVTl{#nUsKXRqe(&aI--G9%Aeb5C!k%p`)bgSq~~; zR1m2%p|o3jcl0_DFpvd?5>fs-z=!=>`se7Z{g`Cp9X}+D1$1`kkJur?e|anIq8EfQ z$g}12DLj{i5d%bx9<{EPX=X=7N;o@(J#NPnM_kP=0sccg89fob8u?7Df;GXkpht}y z(@xeu*jom^s>9He(t0FD#IDb&l|e{*XfYTkuIf@DVtFhK#@qY0Fp>~UoJ!V9a*Y%T zGc_A%M34ZeMO8lmiA7?sC6Su6js;7xd!bt>CQPIcxVYha>})T|7O2RbLzmew*p z#~XFad?!?K8*->+*0t2E%M@s{*A$LkDW-4CBas!hB+X=pf%nk5E6y{kkXS0u(G{xF z*NxTpFrqYcR`G`u%eRXrcO7z{sv?^;PS(w>*YtX{n>*0A)HS}qu&~du5Y?M1?AWdB zOLZ~?h5}?V`A|L1!T|~<#yzDo`S(YyNy_f0qEtK(G3!n2Ws8X|25y&QCYCt z?BBq87<2|}BNngTvWQmoV6Da_Q1vEQh8&6Xg3qE@*Ld#po zFL-iP^gQb#{UL9QA9cJm&#W;Af~c|&$4}z<$2T_;T}@dN)|21@;fC6V?(4@ZvS-kj z8RmdF zqA)ud2Q>Tpop8JA_pg5cehY0B312s5IL^MOHQd z!-w>fP9vS#$>ew3H`c-Q+TN3_0wgCVTxGs-z^9T~*Aq^wVtn#!+r?z{g~Dvr{sZVv z$HEQC23;HQDC`vtQ#6a@%-N7 zfxfYI^v2F0u~)>qEer{g1zUzejA)Kdgw(w@{K0rkj=C zFCYL&sq!v4XAG2`{iUT-7~MNL14%uW;1Tu_vWo{a@S5Omk#+Ya^c1e=zQAo9z}-vt zvZ)(H3n-iMD7eb*3Xyh#^;$>7@K{gT=@Hv1mR!27ig%QYV%zCx{IR|5vq5H1^QOIW za+?$nzB(ieWX^%E(oc53?Hx{`=iw)o-6SxtTgOQIQiqO`3CXsQJk%fu%xcno3ls~Dt-eR!-Ue8%C7Db5;bi1;1onL{mq z13@p|%TzV~Zc1*VBrp>2i}2-lNr!nV7emY0mWILCPymeU`mbtw@2wxhrwc3(qZz|x zkFr-fk@m9?`EP?s2bxB?1<$p%-K8(f#xbySHdE<=O6yv};}rtDe(ATRjJbdJeN7#* z+vE{LEI|R9!Z4H=Jp)gMis2|B#EMUDb~#iGEA64v7-AUnUBA40yke=TTV%gBBBc&y zaw!pGg7wq1tD@V8wjXRVioMl`Qd(gdh`)Ecmzr~8S1o_#)o&q(7Q~&~_5nJoC12Ms zVK#Zb>ONYNAtY6$SB)J_ru)La2u(0NYd45)+GO7&q*VnECsdWHMINWWeVL4^pzp)8 zyXyH(`U4^u>r49@hfc-FzH#|}EZn$J%nNd4{CpNW3%%BA^2WS}-&totM<1`ubcQYQ z9TY26L=TaBH@m;o+Z%C^+HlP;bGv1LiNH7G&urF)Rhu_6hq$fIE?imIcI zs5?Zyd5}t9dD32W+bdWH>!)dyW{f;G0l0hP2TYce8&#`nDqo zmVv%_U+A6oTgg?3a9o}>;Z3Kb(H0FOYZ95I19cSK!2@*|+`&tvQ1>`3&R9siJfh!U z+4{>5?Y;Vgo%>$>#yU)DPs!|-5b3Mm6dG>G)Y5l@_=soxGVBQS5kVDF_((H;TI?|J zS+)OQ6eZd})&<-%L|k!@v`UzL=05>$Ptnt`A_PnxkNwk-%@tz#6yj=cd;dO?Or$@< zK*Hc9=7+Zs%*E6tY@l{`-;JIyZb~}XQhlvI<532q_l$ZYx9Q$3dif@Hvx#qy4<|{OY|7I^(1JgnXm{Rh??_0;36^F{ZM)9^Rt}Vcb?4 zi*_cnW84*qfQ43a4w5d$$n<4;IjLWLV%yX=!;g|+a#3mc3;HJ{m>eJYgXuraPDo*XbU$RDbpG|b97onM zF8)3EU`irs6$U}+O5Oq8(eu%noF{M&uwaRfvtO-lJ&fFmPF6mmCeSkMu_T&Ar@Z=v z?7(5lb|2Y;H=64S5u;|OV=t_^{P#s#^5JG7mSdM^@;%JKF!0uYU!(_5!`Dlj`BrY@;y;$p zSBBwFhZ*_f-Jcg^2j)6ili>vBYTIp}-?U$wb1^I^kh9`#^nf8B_`(Eb1%tl)AJ^p@% zb{BK9&w({L{p9)l_B}p-+h6zU;Bzoto)7z@ETmMaI3;m z3tww-zRp=_y%Y9Tm{~sxiz*zf@VXY4ZgI}a#tNe?w!~xbtA6OUzu<}A;kiEBf1ZG) zHQc#;mZSIMa<#(!`x5-C->T>S_+x3yhw_W>mm}7edjIp>FYB-ju+Q+%Q+)e~JhO1S z%G@jWF1)(7i{Jj7yJVx4L-zSF%gPtab7*tg&tH$zVi|*<;{TuE8aZy^nB~8Zz=tb0 zFHF3A_dVX>=Wo6SLoWaQF2BlH%XoyZ_L1f|{-#W_-W#@E@BB8swC!IFM=?CXUT-^i zE1bh}(Q?Ie{6&xQj;FcDXFDhG_~!2K@+2649doXEgmyF!?`yL2KF2k1CTC7RQ18$6 z_U^0n=D9rA(er6FFOTyy+h=e2oxh&os!uSA@bvyz{$0mh9%8IQW-IKvT*X{e`@P3; z51a0DyvdniWVnVoXFf77Z|VR0nYYyc|Lj}p|9}21_5W}AnVSM{I$ z>6hP9|L-L~%OyYmmS1?wFTUlM*a{NYVuQe3umT1Bj_Kt##GZYB#fmRqwgPCM&4-`` z_N1t*cyu?PyZOjN;b01W97n-2P2z~URN(1Mb+e@z;w8tHn3s>fLj5%xE1q1t^>|@s zb+q(#=y90wGZJ$?8EOvp`BjpW7UB^@-hi;cCRWmthE*1WcU9N|Y-9OzT*H&GPjKj( zgaTtW6@pmqBgZ@&A7WKXXjw591J*rGI}bI3$d=_?=v zvOD*4PCWqu_V$8LfPVncfsx=9i7>Y3a{ZDa#Js|k22TcRxS^8`1mSlE@N%Tzc7tit zfj)&%vX6zMSsWwBq5UyfLOGr>F=!-S3?PaOSDTZ!RZKEH+N z+*!l5IRoGhG9LJw_Iu(1oQi=t>zv|>VGCI=63_4CQZc6R6J}(pX{6@U{d_>UJU|hC z0+>Vo5NJOlq#3-kU-3kK>PWe~lSq%TX+%$FZ}&32sJRf{nl$Sv!u6Q#!~zJv>C-@A zsY8Y17u>d?DVGG#MUaSTB9|t&D$IT|6|DYV;9@=;8G**TSZPT<&>~|D6rGJ(4p19( zxIuC3Q0}^w;eGWRz$^_LT0SxruubTQlG90*jk3zT@ook&RnK!ktpY05-Em~M?LDXDhTH}@aENe$E)yY6d9`|E#X77sOZT7j9Q_H7lA}F6@XxX zP7|Ywer7ZTFTse^+45a~lKc<9xA0Ct+X2xV3KGL2ah~OIWeK82qFspkDO-Uva9ijz=@U5vO|~yPj*8 zvL2z1+u;BR<>G{SGKrD!)5yYMD~V3x;=@Bl0s&`^5GHCM)Pn5vXdC8Ii~;}w6Dg-U zX>QVi5vHkkb~xC$a_H!eb9@2n0m}-_j>@G(jiQJ1u)<^4xnvAG8hp859d5*0F0$Dj zC~GJ95a{?aGnh)bdt}&U2!*Y)?rkxK8O^|Uxd3f6HKSNDLIf-6wLs3z?}>7pc}-pvK8^LEdGmta^JHN$GMyRly+w1y#M&X$+H)3CbTWAOJ=sG_Jd zO>k=&yP|_yUlEC20nY}O*!bX!_ZSJq28QB?Ay?pgblWzgk@)>l9*D_=%r{*0%Ff8X zF&>rR14&BqMrDHDDAi={jy9uk8J4ss)pMpjZ;q+YGh6rSPO!0x^ktVtNucWrl1AeP zHfy&EyJ(CCt(!O5hEk`;Jvkt4w#yh8YsB{XmnpD>sHI1aWNKtVF=JW5(h_TV?~;Tk zJhPx-T6|fjs`OMKLBm4`4-P=q>3vc-fxc_{ItCNX%u=%~CkmgpuZMZ6d>J|j3rMlX zQD#}(=b0U)QVp=RN3P;d&i`PO)nrDp<(=cns5tsAu2%14=fFTxXwM@XkSYPEj67GS zmdE0erR}=|&C4ne)fpQHNjE6=5Q6ip6Wc0+qGp-;6q>!Ikwz^gL)L_yRxkrY)+WKM zCz))(G`kkpoU+)ewtygoSne$eyQiSOVBcjwPMsSUH!H;hR7NKuK_7x4otOku)F3pA`9a}Pt zYXqwUisJ1Ij<;(j?jIfwYT0ZIR2HmulxqGkDw-YtVjJ1!3blxUn4eBHDYlI=c7Ff( zkxDE|da3@cV&_;G!=jGRW)T%8pI4ClQs0wCmgVq2P?#R;LX5|ItYUN3V*gc7nI^4> zE6_T^8-qE!_gg5vhe^Av9#B`n_YbsQ(PF+C1cp~Y6rut0O7KCt3w1s~oOhYqL!V`x^IwH*J>gcmzCX>4qyD}X*-=en+VrkW)|0&2Lzhrz4J z(O@vRYTi4rm{m&6D@pl8tl|APbasM-e z&^*Or?68IiBny+-PX~k+r^Ngzcf}x4|BQYKe@7v*%&lY(W&d$BY-YKUZP(*dCs2XO z43;fhi3^0~ft!r#X8S-e4+wG zGgu>11(L8{tU9*X%{tJ6m$JyIjbe7%tHjF1qr#cGuy^_rni~0~LZvDPkW?j~#)AMP z*UwAY$g1y41Ex?hG@hKg6!w57sK@GZga)wwh8dG660RrsaeyGHMjZMN1~ zO9P~nUJV9$=yKTvtav~OyP)z=;?Xv>Y#Ri3#9)uQvytG~+=nTK?GxM62V%704&Zxc zj1<3Ywf+?IyC8xz&E*hg40(9ci%hrS_TkZcW=XjrO*VaL9pd%%E0<{x+^v}CtnvdR zE`}U3bWqr2>$eOO@e9y}dL4z77+}#yb9<@WG@~OYH{N*vL+^7tN-=sFRJ=_8ADFpe z1PoxUJV&GPtkEaTAIU3&=U81AAP=dSXI3~SG<>*PmD*4e9l?pW$(bCnl2Ft@>;k!L zPScIOELO2`v$MS#$GQ;R&#RG;g2&T%zlphoaTM(@t)RJ(CNr=6(T5SVMzwURucWyg($L*noka~TeN)w~1 z$4&#FMSM#`W;0sP<{?Ki*m zX9d`M5H^1}PPrma7&#M3S=idCz zliv9Fr{DaG&%g1h_h0?ur`~wvu{Zwc@z-Day*EGbxu3lJyH`K{${SyN^7WU#@%k%I zz5e27fBK=v-}u-|Kl#MRfAX~-Uj6j%z4_RqSO5HreEH^QU%vX~AH4a>pS=FU`>#In z^{b!z?(5(G!#BS3r$7DHqi=rq13&rl2j2L`=id0;KYaZMe|+^1p1k_0@4WHS?_YiH z<8MCm;+yaP$QzIR*&84E_8Z^%+MC~b{LSyY^v0tvU48zkH@^7v8!vqD>hC>q^>aU@ zJ#Revh1XyDHs8GQwQs!f#Gn7DT%9Pw38PKkCC@dF<*3zDt`+&s&PV z1NsX87Q@5choPe)9uv$A36Wt^v0#&O=mY4i)|8;!JcC{jQ(MctEfU^N4NKZmau9D+ z{o{D2`kd%1m^ZOJ9-D+U81KelY@r9;l#yzR;fL{tG1g8NFU8cx%n;#*+3j9{X|(|u z3eabL)B7@wX*i=F450`RMClOVq6n3UoNq_TdQ3cLsPk6fnNO^4Tm}uu`_c@q!(wiD z6@fy-|9Gt|`$AxmCV2Im1Xy&p(LaUBDiB!})7C5K5Wy5A^)c)h>910Mj?!%al`S-4 zwy}!(XPjUFz&_N21sqkNtb_y!z%ufT^sA3yKU-hL-Z39THYHnVzs$wpGZJxiyRu=U z7rcv|-FMMuVSGfa#9?x;%nN)$`!yKcK}bNz;snwR)aJu9fBoSRKqk(^ydy2ld%^hR zp=DK~X&E$;l|*~eQdKRA)3LCpB_v{m6%7X=Xu;h9lN=+zz3Va9U+2K=59Ua0P7TkI z+h6A(ZNA}P>^c;j^RqeRn?u3*m4m(ci8Hx5JDeLir<`-Rxta9JbBB z|2!vrb2K=ga}KvBZF4Ud^R#*n-_VSDDc94C$H(noTf;90!FPeCayy51)1)W=_Up8P zgU`8)$MPkgIk}wAf05gHEQh0WJzw&_yv5_aX)2wnw{!A$wUA%y)bQuVPqgIo=^e*} z^SWvh=akpG>X35oYQTEU9^@5@;@5pIqP{s z9mJjn*jmn6=U$r1OY0nW-ol^!L{GVe=ku8lJcMg%;&Mv5lah(+ab}SHJ3|^{%>|=g>j!<>ESR{Yzt@cqT2Z_I%dH_|g)jblIP1TTMFOJd$Sf z3WkX9`H;K(TqDmnw1i&JuNrOcVyt)(fAXOwno;5#{>QJ}TcgUzGYDKm^SF%G@*FOp zN!2j={&-r*ugoSlmaK9Ov%{d#T8@Y3`}D}Z@DuIfPr5+c_=(5zWsTvt@-!}}4l;@L zE?PqSYbqI4uII)tXTbThE@nLGGF{-YG@CE^cS#E$s(EyoHrMBxZf>W|kEVkNNwuej zjzQqcdTBM4KbhRTsN4L0gC=J7P(U6ZgIY+fQ?l#VFP$DZmf5{vf5hx~eq#ezr1st^ zHjCr;4{Q!D^QA2??)Ok}df`4jNos4FvxhS(u@Z4p&^^B@MCRD+Z8zTJlh4+Z2M7qP z1!+E5=`NqgMD{FltZV3_`nq$zdY(Jfc=alw))eEK;41rP5phHGJ%;0=;4M#vm4%h>M%;a zvu6_u39k&(Jdy0QMcaJsJ)W9wX~k#@WxuRwizf6eQL|U{ZF1bJGmog&j(bA^l{# z!a6o$P5FN^iewn$7{BY{0S=Hgd}2!-d(zi@@(#8&5GQp4pHZm0r>tVCW`&q=4!o}= z6her-eTpNx2aH<1gI& zth+Fl^ja|YbYgj(eCx;}P@mYmD91>jrvjE%lai8-$f{H1(XjvOW$#G%a>TWe?8@NV z-+@Jg*?59{3_J!Ue~F+eM8&m7Z)m~&9WF8j#iTO^gR@|L>n_5l)K#*~lQB)A9s$>n z!8sFD$x!JXg)RjPo_e7Kc2LF?&9NPTC3;;^pV+^G^+MH3i3OacGux*PVAm{+#V#DmcqM<1HoU*Eyh7B*|;j8e0z;Y0% z>!+7!_Y{EByNKk`KIMyrhD>($o;zX-*cAR@jpOLAul)~GHr!PPG=`C2&9uAgwM;Lf zJy!SeBa>Zn!v@CGjmKsiGjd!4{~UgiO^5?4kEtzjA;xRA$Mu%w%Zte*M{}u5Y#%jX zjKl8sVFXGT%I^?UE<97$pVNA@j}_Id--_$254frf#^Q=EeH#3fk;prUxD#C7Tt76{ zf=8UfVjCh~1I~4DMqx4xC7zqCNTG}^M?CyW4s#!j zgCVSvJSEZ=GE6rl!)mk6F1XII!Wf}p^DkYOfI?6(tY1wZenls0W%6l`WNNPO%nl-T ze{4H#;J~^ojc+Cg+nP~D!Le^yQ?6*=e&r!-HwK52!4f~BJnW?CnG0LM@kgx>rpk(~cP;EL zL&qZG!f}B1wVlXF##umhKOB>$*3qeg%%jMObt4-%1$!$4=?ar71be#>Db= z?2#d1aJ28zuMG`cJDn014&wZ3c#?I_by3sN<50U6Mc@JCIU0)UVRS==St{bn!*F~u z5xpR~Y6~(?6803YG^c-we|yOj&e@iQY^Z2`N|V`}!M>KM8t z1ucL{t?;R7i>#cG?l!0(%2p*N{_)^zdO8_9~gl;I)saE#MZRE$>dEZc-ZD|AbkV2Hu+$XpG4Ora+P^ zBZOT7aS$&L7Dwg^WvvTSuxNP>Vjs|O?e=TgnPRv=+|_&c+43CFi~R*=hgv=cQ!)FK zKZkN#6-irH*KW6pIdYX`d_e^O@zmJcJV9`XYLo>!e(lt>YNrhE<=YF)2^esKyS{BI zTG>4_**SWe>p5Gr#@=K3hFxxQUXBe{Phg2aAP~7wXk0{95&rPB3$`!WK9c8 z?8szTN}i$FNA8hhEIc&@FB-TRIfmDBl)Sx2dvPIC0mH0L zN_EBOW2TLkDXJMR5eq5J@LKe+3AtO$nVqdSL*@lcj#2Fpo(hN6EPN-!o zfWKJ2jwuQu3`Wp3y13B)zT*}W%#7grJ>be4_>C9s8A581y9xn8n@>+x(0~vxpPZh2 z{SmhNh7{CEOvu~edv|x&?z`dOK|H&hy25}k&TWkX%Vd2TvFUGo#{j16P8ejidX~3{ z;ySuqY$cYt;4Ni}HPf*m_LB;FaWv(K6%>GuTDY?8AdZ6S_C?NXHE11W%a&R-l8nc43LzA&>`P6+$Ui!7-AtEHtv_ zx8Y`%eHvY7DBzx{7zNf6bcT=f$n;yvV{Y%ngggV7mw7l%VYWEmDg2Z?1sjCegsnmr zdc_B4>pyKqAfJReZ@L`{iPHHZTi3#K;@3uzH&Rj+sF;j4I%X(43~hTjR*!Af|U2 zZnC3_xfU7AkT@u|6c%mP2e;I5TpF{)M!4>rTMZYiA2OX)_VeA%)`{K7plFy-FEv>O z9D~E_5l|6ewJymD2Djs=`HtWu5kI*734jnQWp8(p$%DoQ#~vPLN-9+-peYVicVb7G zmFv9O=CxRE13TO+z=xOS_kp+{myILAY}X#W)`+1F_g{V3cs{Gc`hNiI62l_<8xT3S zWUcV>lxP9rw-^?*FC%%u7Q{Er9L0*H_;4M3(-xbnacbQb0OGU?;7Plm2c~kW(+hs+ ztWge;uwb;9Rgcw7&nX`w!bM3Ej=|0MC&%>zhygN$g+dSXAhjFz-Hw@OrSu-wer)twA5t~d5wZ+$ zmvk7Q$ZU1l2bO}mgoY}`R5qZe=@Cb{HycycT4<|HP+9c|jZnWfhc|Zw8xnldktqs6 z%#sj^GgH$=>^i0|l1QcqBqY+L zeIV!nfvL6Xisx*q@}$*G<BbuaozBaDlMch5&G_Ywv;aj* z$s71nW}0#CS5H+90hirs{NPe!h7r!eq`rKT!Dtg^L~%I!realV9IGzCE6%7VoRwx1 z?q0atI=Mt2ajLOhVHaNon2-5n``B{Ww4#9%t063z{03D^V(?WjoaVKK9P4W8OO~eA zV%7yxtetc9uFoqJvv^YPjYb1cDN6~ zq=E!Kuznt#eN-X)s0M}W0IesPCQqq?DaDDJ?S`&1CdOGA#>h+L9t$8InwUyTu<9wg zcd-hbp8}gH?d&3mZ5$eKS8xZ2H;xP;EGPxLeBq0b{xxi(F2Z{IP*DIVtRM(YXCBz5GE+h@Mk6r>d=p)hw8qEX? z>+(CsyHH(NT8XO|MI68^?j0;;iEia>Y%+$bXrDd_@8xZ^53-aAi4dsEb@vk-=})|l zO@a58lmOn6%`7PcR8O+G`nbb>5mA+#KY*)|F;3PT+ra&ZOu9LZ^s-_>8)WFA_F6NG zah^*!+yu zSD&UNTF$W|m+-t7Xu7a<9(Gej!SNroaKXmd>&-R`uu{<^d@es5K?J{Jh2}#0*t80G zF~A2Dfc5YdJr_ozr;1$)jv_gX;C|xM_h2KEx9Kx{eiBw9zx^1We;D2=c%9@d;{Sgb zKBku^o-0|AUgDpp;Wc_vjwtw>yt3G&igzk}R6dV?e9QBLI|-hnW~<`f=ip0{TM3RQ zu6Yh#r4R9L`ISCIJHEs_5S4d+52mT-WnAKp^pb03ev+xG7^nPX z``({1_(A?1PA8rwSJaDrN4T!IN)9Mlp&X4Laxbk4#}w^I3%#q`Oj`!alW+SFBPYYu zE8X8`=sCPyT>rxO#Q6D!;>(gHN>(a3w)(w}A|s#o+U9Um<*jmWIg*ZrQ}MpXc>c>j zdWm0U9D6_C{NP7_JiX&3euHVO+e<%l^^+N&7t=nt%JOU2$>jH9ESO8i)OpJoj8U_d zycd2ip83aoDps|xjrYoDW?Oouij$1-%kyoaEMcGFX*HLh`Rk81d)NoL(|=@LlVJ^3 zGv{M^-jhH2Q=Y;cAtjkh|LUh8A@p2cvq$*`Ml_#Q^PMqzdAhFT?4^vS9AdC~G3W4~ zDYcG*S7yBO>90S{ch0Y^eSbLI?C~?zKEEGabF^C-ec9ePetc#v^WBi$&(fxk@ci$| zq6L%FcYpke*S_vf0mGB5VD;bP5PMNpsA89bB}x`6S-3s|_ms?9uu$>YyPkzL>Zyrk zY~1@C-+n!ORd8(Ojt{~%Rd?`Yo+g7B%w=Jaf~kw|zQx}k=HDNrRkC%-KvjHV&xCtQ zX05PU@$2)v{}JBXEMYvEe)tp^xt`}PuY*U6r+*mMv2XJEDW3d@-}9ZkT-8@O!@e_( zMzN2<)YaF0@U>_8f0(n<4jH}dxuZerZ6CZ|dB=}GHu`2C_(vA6$HOibcC7Gk!E5G| zWKv7t93fe>o=W><>7p$@k9Wd|#uH=+>oK6eALJW3#lD+&$xS9hm)AYZ8{tQL?W;VC z9%UTD0>|&^4Nrzi?8hJHZL|uGuMhLRpMBfYT>lhzKf_sNVm&4L_j z-^~2W1y(anOZ#nUjrZF+p5c>=lg?*3Dj%SIFDetSJ(lsQw&Xh6Co>y!0-IajR=jJ~ z0!Ha^p723_eV!4JtBm=}Q$Na>ez4k-XI77pN1sBEn0LOn1s`-;&&I{(6t8{R9hl%(Oc8yzj>q_M8F!+yVC=|*XhH~Ox{=LW z+pq9bdBr-^6~xQjjM<;_H0)>|Mk)Z)U~fIRqRUXTUOF~am0K2}?YVUifp3hO;Yk`Z zGmwuT-N}EStB*}A)RrZ(ug7abWMrdZ3hC_P@<|W?1K<<$yeLVq(5xQxVVIEgI)>`$ zCg87UAk`abmmAA%aizEA^)v3Kg*&i)>f${_t$BEbhTECD1L0a>`Z;WjlI?(TX_*X6 z@z~C<*D+b?Tkw8HCOxn^p>Z6Uwc~SWQ6ei$se^1nL3o0$KEPmxh6W#8ffzs$KX5Q+ zxRbKFc{2t$(O}&*fC3fuIKg=j(jnEL5?}3=#iS%a;!sOMR_pEfJh)J$dpcWkTyIO4$E-M!;e0_gZ$@66B-96gorsl57!6`0kg#pl|FgsB#s!cOn2 z2_%c5Y0NQcfBfL>oj_6u1W<2wd=76cH@k=0ls2&ig6f5B7GDF_r%RvVtV5~jQ==bP zhW6YxBs!ZI&$=5`Y4ASl*U3V>M%a8MF6G{x)&k!{Z8F|Gy9nxI=pFTh@h(QZl3vmZAb2>N98GHO@(L1z>DRQ#DU#na{IUQZ|u3u*=(somSdU0K8Zw8nZJy zI#C@SP~b8o*vbrpsBxq(nxH6zj@-LD4%*;hqad2cFp-A&*e9mAFg8Jz`JZ2(Z*@x@ zo7Pf5F-3py--ZRBQvfhH;d1cB{52AD3>4wn>^M_311ZiZ3ZzR6in#};mLnDf>7;W$ z4Ega}mOZ>9nFIp=C>5lJR1!v21Cf%UscXk~>`GX)8|&Hut9x^kwc@KA7X=^OhEgDZ zhYZZ_?rc1tQ~YUtDkp`85haIUCHU$vZBny71?l4tNW0I0Hm%>4--hq8qdQ7I-|13< z0|^Tn6V>Q?Yp5wwvX$juMj7lJ>QwA=drni+3n*&E$oO?>n2ZjS#e^m+B~3!ZjFGKU zpu0zbF@WmHZOD32|Ah{+>sBjH&lR{cRxl8KH{TnMgVA&po&Ye}aI5r*7iPnTQjO*@ z-8P)9TNaZu?smkPZBFbvT7^#S9IrueMFfd+jUGM9CIaW)p#(5#`Q@aV0#bTiWJfTv9eWUm(4$WPkQR+fF z@46-;z||U=yMqlB$(@%aa11xqf)8|B8lkG(a%J-}-E(g|vLgb8ff`^GT83q`fy#Bw z3r7*`O^@b#@J+1E?0DQ(%Rj2mY*in-T8ch`LJ<@a4Xk~qEd}0o9>5C|z$diQ9AiGE zSsA`skk}iWo0>_1x}C>RE_8x=Z~Gm0oI4wD<<#8TmY%Bp`AB&}28W!0GAJ?Svcn4B zfl&9JOY9wtZ%K)TW0ykKf{=3$GZeMU1*}C?k2#tiQ#PVjnZd-_s#lz|0HyvN0-tc7;HI0pfO&8XZo~nZGi} z?n4+Jj-+L&dxs@LosN(L!QYmyivU^J$3C+rFji0oGW(n$0iYzV3*aT-wt&$EHlvBs z=mHhU+~7QP{K(`)vW)c4ZPQ%C{Mwnhe=)BRC3u0lJDfZn=l+ezNH0;Jzyu7dO#o0= zYq0fTGNCnSqJZQw;Fz~ozkIuOK{vgRj-NBEhRQ;NUO>Ebv+!94#OQ2 zf#w?|&-56@PewmD02anjnUen@9nO$8J%h(jgbrvg|Kn8ciJ2d6Q9vtVCU^xpm67r` zU?wcoNXCQ7xGH@X(e2^C5&=E2d~Vc);B-#V`CYz+%)D$PBmi?z?8sD+N?H=kV`FYI zEmjsJEn3ke+;{wcZgHsD5k-GFv3-WJN2apZH6-*mCTyI`kr(?qIEdR@!clQ`x9n)% z>ZBl^j+xvRJok>|kYl3^I$^%`IUU?$2#SLdq2`RBg?$F$Fb2 zmX91UZWQAiagG>SiVhExGU>p8l!KX8J~J1_>g=J*n_Ig_x2a=1IWKc>jcni%u^(G~ z!-yR=QHs(uBF|M$6;N^luAFg*ryYgLCd7+vPWvbsPDTf@AE*w5D!`^vgB4Xns?P(q z3>_&&dJ=PK!KmpI!>jR)*^F4yD>t03wky1pp^9S#9k84&8%n$%Sn#(wdwd;MaiR@V zr889j7$i9Zon1sp_DqmvIv*#V`68f!v!TA)PQcX`?H+3ku1g9D26-myQ|J$ABbaZF zw}(>`osVb~PgI`Jg6N+7_C~kRoPv*_mA8RN)q4J~pyDjWs~4{#P@*;HY$K?wTSMXt z^02vo%RDE6lQPO*dJ6HB58=!sMu9nzFzE2kO+2BDevgrN91MFWm?7i@If>vDea<+4 zoHopXjv{DrSEJ0G?JDKiJxcxg`ms<19*+YG4cewBI0Mv889~{7xcpQvFtth+M0^F~ zib0XholnS6myGk?wgv;IbOKmx9yw6F-f zWwlUc%Cl7OMcc-bmQ}QM>bw9p;W2S@Out$g|5pKz0a<Gsg4J z`O|&=ypUUUwpc+L$CAwn$HTLvZ@#;Cvf6nS94cFkwT0-_@$EKDJfpzss<^o`wU)R|OuvXjvgck`sjaMS19fjm%dskf>XWWsC~hJq#y`Nia`cm$e{AK(I2Y z!|vrprEjiu>YD-+c1Rs)oD1aFc9e?J?{06UG%bU}k3%szoA3!L>}h(Pdw)BXQMw6Z z$7*3exOK~blOrV=$-v>qZ1SW^{PAJuP@jFEoVjq?!t!HRSWK~a^8tcUBZ%TK?<@Sg z79KJMm2gBki0&J3yS50QVBoScG-#v3Eg58EIrg45bb8{fPdc zf-gUlYI`*fTc0u1fS&V9O!txVGw91ik4db4n?uBMr@6h&YT+2rv_MU3aIh8@h zEt0mYw8z=G?@z+Zkok$X&EA)I6m<)#VSJK1b1xFAzZ zo-*D6jl?K5%VVqShbeLXGK~#2;|9WM6 z@7T(Wj$xD?L0qW3J)pL=O;!5VlfU5=R!^)_?c$!^~{t>n~B(k6TQ2>x^VrmA!M)3ym zX%`OD&9^$H$i#IE5TU(!)edkD$-23=)JPnrA!OVZ(Wr1RQmvH`EBnj ze!OnJTC|lz4I}r(HnoeyS90BLv!9`!41+U7t57-U|3ev1&*iPFSGtf_nK0^R z8qss_Xk=*RQE%Hb>3VEM&`~G|UNJmjzRkL*=h96R&&mO9Kp~(U_sEv-lI9{h@-Fko zwJ|V29-L8H-nSv*9NOWx%z;CJooc;BHbB`*dfz<9wVgcowvLlx5AbF>$UICKfkV~m zs1vT;?{aA13v8@^`6=9VRv}H*iG;=wKLlhI^&c6&V${`?rZM5OXMq(yRE*lTcRI{ zV*&YzBb?`=-nuph+X7nm>Kp5UBO`nky$D=D*N~4e8|5}uIfVYJ_hJr@Zc>`Vx=OAz zrOCl;Mjq{>*a zU@hixa#?@mQL5?81?udweI`7$KIp%b@d95)KowTPqZ30In|jbQ%ngCQt^3F~U|Ish z6p|&P0uSoQk%_2j>0OZ9aL!nw2xgi_Mor$jM%f;%j3f`lH3G8BSqBsZvziiLYj5HB z0>E^Ppu5RJ7G$Xd=Lt7rJj<@mplltOE#QL|+Mmk{fCYcXkp~}qaOIxu?R$t5EVS7f zaFFEz>o~b1Sg~hv)CQu8d$OX8iWP~_8fu(>Fuc;L9KGq+NyQ77yh7DFM#3l%TLAja zvzPX3A)D7H{$vaJ zW-6LQUxBX*7{l{#&^SuK^oE1CTDXfkViDpTVUZ`=Ml*=&?j)~#!YGQ)XPjhsWjbtN zJO@w51R1}Lx?vtqjsEIdSJ&_6SgV#mr~?&0g<-U@S_4+PiRkgW!Lvk4YDuisBui} zd(CN!1>9z=yTI(kaJY#Cs(1&)baQ2GkJBf_yKq$2V31thJnf#@2v4YDr@I?6nca4d zK{VMvZ^Qy95@kWuE$Fb>O{=k{t8zYTr%G0rZ(;Mg;DKRmpxL+J1|V2RXIEwm4#q$WTp+(WM;R5CJ!yhtrxQDTklANDMJkj5tq``m zvL%_M$u~g?v3DnL$<2L?&$0P{-gGa#0f4mAm)Kzb3j=a7y>o_0N#jutu_2CW|4+=9 zTW76V=7Ickm@Ki1|&u(Y(A>i2D#P}Rlw%RwYO$I>MsIn?EWPSbESv2*9y(33%xswrh zUTR9k1!(nRRiuNHu2?{i238gDEb?=Dp$!vv3E#6rFz*`||97Z*!l0LtJGnHu9z-#8 zBbspI&|P(`5^pu#={}NaAvT_aHCcnJaV45#(N6=9ITDF6<-4pX5>I*rWPYBYL&qr;69gln);BDY*@Aes8obe^ zOVIWX*zQV&mX6M>;#o*h+$3>o@Pzbtq2A>t@;?i6IsnRq?KJr^3K}P-+bfNZ7vNry zJ+aIVR0!>V=fvbq{>_Xq9UTQv0~Mb)zHIgwcHbi0bndQ<2D_-O%LBmq;Iz! z@Vn}a55>w_k&qQcZt?sN=Osru+-%x94z??V8wGX|mlk#FE@@V?y#w0@GbPTFJ0ag2 z{Y?6`_<7=eA6bYz%+Rq99=$~6!ur-Rrj!j8!;*HEt^>i%fK2Ci(?=9cl9Yb$Se&LqPuynqI77X(u)$DxzCF( zpF%yYKlDP4noK0W2XJ}uW9i+&6(ZmhUkS6~@omvFUO&2QUq)V>SB-SelJ7;1@&p5E zSpDhOaO%A8whYQePK>61^F0D3hTf@RD7`wVV#$(jFjRR&R3rg}V4B)>ODLHYwNH>W z$9TPW4ud+%Gew4|3ZA0-k+M?7K_QXumBAv<2s=g za9%}irMnycu1x$@zsu;rwvAA3*X~$S^=PinP&u<9V<4|w9y-`Tc}Vg8>|-O zS$ts*#(KAhr4Vl)*2h|hrSo>J@gxv=j-kwKSoD1%tcj~V)r;-2k88CY^1TbMMS;)# z9Vta3{yI!^d?)%Do!>UOYaB%xubXi|Al`oEyh~p6>^e|L?f=NnikxtxzN(zh56dKL^2r)Jz*8`-9|vQg*-52vBSX2d1x{UT)!L==I*BR?zvUd01M-_>$o z-D5&0d^z)?SOf+U+arbya?G}E@J$=U zrv5#T`+*nXdh8(sm~f2NbYmx&%5+gB|2y;^ubst%z+dveNv3s9E(yD~DA^wo%yewZ zVK{nf>+*BUo;YKHEKwnCMbv4qbsb>K*^r&K%D|sy3@7JDQ>Ev+V(hh=wbP>05qAqy zYONXmLLmT@m7%_Oi;;RTdf_juz>Z5I{;?4Z$=7>^wfia<iWpjPbBzy3^q_#Vs@4=M>d4aA* z0}4O1quP`1Zfo@^MBrgS9gjya0XU~w_oghg@MYoKLg zqm79WVr@(uK@a8x0xEJh*N#OLdapD-MZPz1p-#7JfEMF(mDg>kGIn8mH{$UgkCr8q zxHCI*hUgV51XV`(bgX0V9rCUmD%**l^8FNZWq~TsD6-(XvhH>h`PFvK8g#7Vx5k#H zc946toQ!@eW5bZ`ds*4-oA^@SHP64#AW&MyD2qdLSH-kd0}Fc3%0jFwH#>vXbNJ@6 z?Hsi$#lecP#JdJC(d!jivqcj$oNT@AHMC;*`@=ahiMX<_J} z$=44aSCb8Gw**l|8@!JZqVB%}i$3g9 z!1!n#_o!0gipx2F14!vUl6A+pm9D5gD0_Wl+Dnh|DsJ>%Bk9l@pkiUYo@G*`eUPRhx8N(>#EgB`?tq8h(sxvw-YX#hiqK!b@YY3H89T zN27+&<=o8o$cd=v_!Oll{bO@K0LLCr`VmZ+*Uw>hOG{oa=!xmvW_EeLCNzD|>N8Wb zcZsppBp0UuhyCE3FDAJo>vqti%d|^1fc%`qwM?|ZaVvjxG z#A|K1sHW687iw29);I_5%eDS|0Q=9>q8x47AQ}3b9bKKJy=oGOF~VO~QnEOfDmSel zbLM&38*JqO;jpwiK6oOYQIBE8Niyh+6+NgumwX@*uf)VyM{HGEZvKh3QjD1@0x(_v zuU(zZw$sd=&WkzXnk@?^=aYm~%-Pl^AvPDpSjMbnfK=ABPgTqfB$Kf6Ub6s2CF7b~3G4wJ22dM0<2)eFJVX&3YolU@q_i0daT`1-h3J#h1RJ4= z5&P;K_1I?dPX~GP+ikH+?~YxHG$*m_^$P$*(<;opu>cRo#nHk7R9{V5T(3tSvJvpP zVB%#HIBxtFouWJpBc|3DZDSAO7S?#Rb-`72GY#0u_EhGP3mJq3HEi}0sZ=ttT*I$j z)*n|+TOP7U7YeS%nySmV(Y95@Q{_f1w>NgiA;@&cZdw;;^Sia^XSWd7!x-s&yluly zR>sUO9-8bTI?c396v>W{^YkG2ngdCZ)?RaRp~DOCLlXA`;*U*&>EmvyKCj06hpO*?I=8JX?klP_JfK&VjJ&7M$>$$N?{N<_+sEN<`GI}VM zA=8o8ODT&Tx1lxW~eV;s2J&uAa2echVs%tf4BmEj=uJ zEaSZ3s~(EZ&*&s;&46MF;GWPIw3d2?I1havb`DJfE64%yv>~>x!5%)Bo~)7dnxw+{ z-Z3Ffl=lw1UOS}s@eIM7?E>Zw-Zi)VD)WT8s$=fasTq@rwP2TMEH`xQV!oE0>lBZU zxcvm{ssgMUtMMLf9w1Cw5gRfiE87in*&lngbt){nRBxYS5tZ($z2CS>97sBjo&jN9 zb}fBjHrw_NDwqr?a_IPEQ<#qfb{0CRT$F&7X&XjWpWQrgQ0(r$w>TFp>*~|bF&xfz z65BOy9z+&X?au}7pPP>SAOG9#e|jJP{Kq5rtRH-@p1^~%_1`&Wd&XXFLDtxNhE44n zvC4cD(GnqX0A5Bf8mL%pZ{2$ z3f-Sy{J`rk|9*YG`o&ND^p8I4;meeGMl<~Kgv>n;g;R5%$+ zF#s4oZjU=;*Ew8;IW;qpYc$ysyC$v98UY+%pn=ZE+7-bUwupicmDl0 zCoQ^5C%Wv(L+617sn+X&>M4=d$=fm8G> zrK1C^E+iv`;?3o`iw7LA0COe}rVN|&KCTXA2C)FzX4mLHFU;DvJKU?B5aP;bDz2u_ zK5XR9;8#I=VK2By6E@IAS{7U3VB?gd zb9xsni^y=K_Iq+Fj_2@M-p+6ha=mPV@=|)G_rDC!;3r`de8%?6wMjb%bD?a7(=)kB zM#ZPXQ~Bcj`$cZV@HNVcIo>%qG39uy=fjA&z-old=0Vu9D-@F`RfZxq3c^ zAL3VA|12Z(ne;_Q(@*gCVC*c8(&9|aXWjtsCr^K28WZ?G7uYSIrS};h=4FhH?2U{v z|Nlw)Tg;1cnm)tdFY?~+SFgG1>5R%NwCa<5KUhU&cpQC~fzl_)-1+@x5e@ewy`>-B zIzPk1Dz|1|^FsRc6o1R3Difr07KTu+mFqS9lJxH-=H(S6#$JwbmXXpngg25N`nQrK zkLZ{AZ*i4A`J=D!cgwABu-AF|_jqneO?W-~Ui;#kyb|V1<&#l)N+wRf0B!_KS)397uQ_V7gx%dix=vBGJNvPNrv-g-{uG+Q~C8- znM{B57=Mqo4d>zE01XRi|4+W`FHkgvCnb7p66Y2 zhF0fszK%)?;X_SZp3Hc|minVVQJct9`lDxa;BuX<%#qEU!psTFb(S>eUvo5bedc?P zoUZelbB#wxb3NB^!Kd;Q$2Zr9I%b-GbIoHpx0=r!XwIMY91gAKAZgBko}S5zI48PJ z66dIBzUSe5Q-@a9LDExuxcAwd5IwH<$@NXz#(C3zQ>S&;d+FdOM_+h8m(?|#sm)Iu zBt0Eb&5d8mmt0?Gd~*sm?XPjDqqjL_n`_3q{Ix#U5#AiP%?Cz^JEUfru%h02Wn?by!W{@tPXYl zLdNhLc?Ext@$`BgPS^NAXL%;A{nI?3%lMM#e07Wo1I0Id&&>WH^EmY}Q|34`ICO+l zyuTfhV4_FA>J`rZvl*ot+wsh=e|(J37!$AOO8!kRA~W`@=7KZIc_ZV)_jQIi-}5{s_ z2b;(3lML|uS~awU?-`1E7Y{)a_~wsC`*~Ddz=zRgg)?&NyXrG?%QL^2zLYH0#f$(q z@>pcA#$<&yBQ)|1lIap#J3Ey5`R_`_%@%74(DoIQVMhq<*6DHRIKWS}#ll52?4;cverVZM?mNnU;*T=G&PR z?&1UA5B<=8)?Dxt?|L*7&1d90&+BThwB1#dB@;b{w_~|nVI*% zr_D8C28U%?zUX>a@kodD+xNl2oNp!%*ylgZ{jxIq`P;UM|N769KQ7jBKR>}0-{@yP z0W-8u;(M5#xmUhvuF7LgZ~ZY^Jo@<5YhUfpALQPzq!%BC zGn)SSPu@#=@?6>`-*%75S8a7aUruni(CvT5bTDH-6@GI^2EK9ITkPN5DgShR{~_*t zWa@}{~V{gWB=Fu^!`I1q6%!`tjap9TY<^b%iKLn6II#dTD{k<{o)Rp$$RQ>L zdMZlq{v~wNBh7V(8Od%54+xHu5W(l{HKRMR{l9d7V5V$Ut-^nW>RxF`dC(#a#w(jz{XQ@Go-A z1>g^2=IB6o7|opBVSeWVCvri1LURT9bP;cof1@5cLG}@bC8S2VVKXW$U?ASgk!v~N zuqp*^C44+kukgVo3&p8VbR{_V2^c&M7!Q(Fj-JW^M=o<{z#$UvM4(%d)v30!#zzb z?Z6y?#Kd%()Bsu7`=Ci?@=bi&?F5{ddWn0CWGi`+<}J{DH%1wp;qJOT;fM?)L*Q!n z4gdjWO&BZw_Yi?Ks;WuA5x<{uaYiix=Ld*OkbFj#C>g&DmGe3s(e5A3h%jgdsTLJ= z62vsI@gzo%FJgeE9JW&u;xgX1VttGe;3*Y!mVCmkG!s1NK`&KEZ}*#$t^Pc&z;-a)>ok9)pNX0+%#%Lt&VX zf)E1Htzw4}7$=%dG9W=<=I0&62KQ#N^3v+i(u}03`4p1RXcLAjnY5zahX$GW{ZzPc z?-jZkHdY$i#U&MuH>b;hS6Z*3d&Z=65!cFzXpa08SUc^BnJXW!P6%6zG%j*?}@9bQyL`VB$*-YfcV`*DqXoOA>V`h za}eYoEnr5cp;vOW!cd)yRT`yTTG?%IU^hit=aH`a!kDCpTUW#Xy7Jw{gy!7YuF`8@ zH`B4qtcB!WOqTdz5iE3U0XZsh=|p?CxnJnD_bo!%I(?qm9W-q+O_F{1ZBT8a~ zrLzmPh?bG$+S@;|ynWBnBM%)Wb$#K!2T3a)p4X#fofbzuBX^!t0JxbI5ZJGa$>kY5 zNi+qi-KgMGqsHE!MV!@P%s#DnSt|Qx3ku_i^wwU|h>@YH^L*~vQAvb-$VD=#r%DQ# z(4;A~8lm^Gh?u>gX!4we#!)aqg)dEqPPgl+(?C)l2}r5Ugk zQaHg$b$XS&s+Tx8oVYsI00$6ve1G;#`!j$IA_(TX*VKHVb^RW|eguDa>+ zD?l{MW}-rN=i2`0?5%a=LO)Iw#82Gt{1*3Dm2v$Ig_?{#%XZ6Qo=KwE`VlWi`%3_&Gaj^GLO*k!8^g`Xs^-E_e z8&Ze_lo0qjMiO~J>CJJVE3Q|%#YV!S?e$ZzH3qR6GL=r*;1H1H=g$R{!0+lP7oZ6G zsLo0?_H56>zy`*Kqg71elI#L7=iA2Q)C32%(*0S$lWy*-O$UINl ze-7HC1yzyIJH`OvX0b#vcEI|}GK*+_M)W<#A9Fs3sQCjqU0?i zQEUz~Ts(fY|2G~!rOO;)oqL>91c&z1g3;~SfrGR6LT++j^9rHzSZ0$#StuBy+OBu$ z{D(DFNX@8D#$XbK0IZlY?1t@&3j~5J!Kt8?tpIdpfl^qTn~Mdyhv?~4eS%RNz%!r~ z^uiav1Hg<3BYDJMQ;I9!q?MF92786p_NG=V)*s(nN=xKf(7V)7o z+VOMurPfJ}ib#%e#7t^XZUFT_c|2!PV`1|q1ZS1PBTQ=1E>8V{xmPmEqLxLYVbWWF zJT{>MR=CA-PmsrHGY?U5jgoOJs+7AF0Itfb`aKK~1`C)#AFx=q>7hAo31#+M;I4qg zbCWpdDs%x3czPsc+CnWQXwXZ!sSv1NW<8UJC(C{qvS6c-3bTBeaUh{c$#YztUXh|$JYW5w8SL4k8w!MS|2 z5(3etGtctIpwNrp2hP)^%QicE!F7wJi0-EoR!n_Op??*vPL;Skd3I`XIY$y1`Yf}i z&8VG;hyXi~uVi`fG>q%1le6jlz= zd_^PVgd!LXvC6!Iy`o@!fUm~D2LPxLZd57c-Zs@-^HaQFEYZOF?~CnOr^0(}C3cl9 zhsvPVhB`!{&2B5tQ0YyY!~AqLJ*!0NWw>jV*aeTAPOIx!q_#&F94HL4L31V9#^BFO zL0iWuLNqXwv7kLgp}BSFF)v!B#(t{R*#-QIfjGi5g_Q0cqc)?SQGt6k=fzUkGcKG+`tEu$ z(bmZrvV?W9tvmXHz@ifaw`rm9(HLrYs_eD}c5J53MO9Tg-0g!!E14Gz-_hWo^_ zerQG~H93|mFOoOh(ezSW0no>jo}C-tP=eOMHg~Zx^Ot>(Wt>QKR80Z}uE*^HvG(*c z=5yL~Xu`BrN{jh)6kcK;`?roA#+Tl`2%?-bBynHXLK`+I$C?&9MsTCMxoi&Ura6md z(aHE`cw6{1Z0yrPVT`rTq4-*DgPro{9DXMFz)#3o_UdAYX-N_O=%)nJHH) z*UtIXFw1`mtjZH{d}x_c?@%#nuI<3drjoQn-m@@S^t&*dR5w>8P6@@LRTKARihgZ^ z`Gpi zP>hnMID+{~yf>x|>u5mm8Q=%jZ)KCM;5D;kwx7op(8xRRqTI zKJBBdu|)JqF9J1n?Z#m!eK0w<4!rMSP75r$3aj-5TR*l?lW}~(a#*KOLfefAVL`K5 z(5#fn!0BCDf?pW=RqT|+SyCi0sX^iZskqV|N~@<|w09Bzu}>(Lp!;m34zCS`o}Did z1toDr3aEXXcbnqh+CUO=_SU&^cJsStcfRY~?9}b&Zn-=9D5e@gJuZXw`^aw)me@N{ zTWIsX`+&(J)UKMwu4IcT;vh*50P=jFOd@jKo@)e}fp6*uVkADTMhKNfPwfHLDh@?c z50>~Z^3OmWSzOXFEG9&}L1tP|=yzkH#}=y>Yr(6L5u9UmV4O?=y^)@4J9oWaY5}Tu z9LK1s-d}1jFM;ZN&aW~GtFt?RmVyd}QkSYDs9InB`eyyHwV(eMhu2>{78Wlx1$KO( zsGK4KXB`T6oUG~_DB7*e69!nqlnVq@!0jAhtrZdhHzB}J9h z%7J$P53F(&m>h(*G1ZADd0!UY@Fzw>rF;YiCfMxuV-^`fSOq5+jR-5VQrDDcVtH8S zP^Y}3RNKkVZxwnv+;3>!_6p9OJfUy+E5CN?SKf9j|0~v}ks2BQML6(Ij$D%l`kjM| z%W?&oIyJ&b2Tolx5+|r*dT@4%B*eZ&2G_)TuGw*py<2QBNj7vpNtWe_{=%r;HE%z8 z;)X~D39a?L8{ipm0~lT%><{d1BU?mRWq~G>9SsFi&fEin+6Sd5ijHVGu1$p*PA*lZ zh#d?&czL#TO#t1^EXTHHba@+PmZ=@$oW{(wU*)%jZI5|hNuyV~)3a-W6-6g8c=;E& z=2@#Fg8^~L+P)dUc^sQe)i@G`7a%&$)M(78k*p}t;lqn#e-}7@Qg)G8^v1L?m|QVP zC3S15`_ z#Q7Tw^0Ks4)mWO}YU6A4x|&`mqqzhtfH6`ltt3@Y%yjF4vKjKO!8(QJSxiS9UN{Sm zz{uM>8dHYjHLfnlg(e)^CWjRep3hKcg8ElEGPe47iCAZ55O(!r+oF!=+-9KFBbJ28 z0oBy(-rbdrH9|leoZ!%T5s#vPDQQ8S&Z-{jG|ndcEZVXQ!O1Dyk?ri749iWvef~RQ zO5hWn7D?8qSe;IB!4^b%O5d&TtlXQD+Fm;Jd>r&@w@P<+V^gEKeoN`C0}rlX?T|6P z#q#(AmHL6|2D0&;lM|1FMcJ!o7IV3WSi`Bit*FWAhlx1P?(VbZDkd@eO|}W_x_Q<~ zrws8(*whVib+3-#r~;o8%hLi+2#h{pOO3iYR@~tCqes^y+Uq>Lsj52q_yCmFCf{zb zM`&#{&=P706NF=xhQE69n#c6HiS5u-9oopdn4p`huwhn=0DiW6c23)x7=VEX>1E-muJ^(PD|G~yU-+K`I2-?8kyu6cVkA6GgJoKh2wer z8h^%X!rGLWR@O>PaLc@DdvDx&G1o*JXtm89NAcO}xpwPVdM|$+*;)nOaZUIw?heLh z&orK_qulqQU&wVGR*8$f(AoDL$t|=4(fVb8Dhj=ky{fo&cv7??W<%L1#e*_(!R!`m*r!8~K56f6+k@t0l)$xc~Q ziSeCUOg+)n`1Fnh?(DRaXuUTF<=71;#78#CM21IoTvgvqbO+IxUG6PsI)-mdQe&BO zjiOII`2o==z1}jo%jOw5C}B8e+9dfV@ijI%=pymovdBjtXcOXbjU96RHLI94QuR%B zKGs}U`%sn|VlzgyPkZj&Bpc&MHY*z!uz}i=mSqO1HDJe>&3E&-l8Cin1ASn^idwP! zSt_R8i+&0&YF2nH+(j>K2TqL9Q%$pBQl6@5gr#E(E$OHAxNyTtl!?nM ztbo~U(K5b8JAYudX4m+VGe`tOKw2xH`kcgAR=@)2$&#;Thtm631~Y#V>8XDaqd8Yu zqGQ)+c1MYIo6__D-`=q?_OTL}YwU9LxABF_VxaCr_)Cjd0x+}-aH0hBT6{@^_5DoRn&-1b%cNW$=6FZJ2kv$jl3G98O16#m8hbX!l7>Wm=jeI#%kYlmTS6ksrZC2my(4Gax&nS% z^Hi0?_?=jW(TTv_Shw6d#~Y!qJs4rkSfe>OTEiKA=#JZO!#BO#G+bg~i6>T4j{OfL zQJq4!yBEu98qaGICe%>wka!($h$UAB5;B1@f-wlwQZsq~x7j=A9=)$jDw?ZZUM##2 z{AyfbjV{>b!^jEPHV5_N4_fF4Mkp z;F{&nJSQ(yZ|5b<24Wv5P#tXTcdn?kBEf#Ua3nVOsNC)m18gKj(mU?ILQQ@o&%frp zIp8N_d0xDD@pqP1maZ9IuVnY~AQ*Zy$NM>oTDo(=M$K$M4bgjQEQl#!*Pi0=h*$xA zt~gJ*bum@og2f3F@hNuqnx>pzIJ=P%Nx;}Ci11;eDI5Lvlh?S=J%7CmqHH~Vj5m8T zt9axY_{*muyyhkOok=0$D-OpihZ|$M5j9C0iFfon7qYQj8RIvKNFi zAb&0}aKh4=l$b+?f=*a46%}p9LaL!yGf62iXHsD;or+0`xsr->)%rwz=<}I5i)tHp zFo8Z%=lgt}bKZaMd+(Y3^6|SmUiY5&Ij{3N=e*82uk-qI-k5xSrH#BbFL2KjYmT0O zx8`zafuU!ReB1Iz4>t$L9HRm>S3Mll?czUce z_C{GeU<&tLw9u(%D3{Fexs8ZGc_l(8rV}0-gCx(LTHvAWMKXM zO1Ra%-xMy;x7fHRMafy=X~hCcMR?BT;s$*xr>|X6ghJLe+0GSHt2fP(!5v*{@clmA zGXgUeWt?6W^?QJ1zm=S*udR*4_h$E6BwMk5#Z$%_!tI%IRyK0@CkpMQtyV%3oc`<0 z1KSq8%UrjP*I36~1Febu&fqmSa0m$M5<0g@?7xnR-bq9@_X+sFypV>#JqwsK^)I;*fY@i^ z(TQS~Sbw>NfLL_Wc4j=2C~t|WmuPH>{SHK>Q}W9?U1G^Y<>UqcA1Be(PZGy1k?h3e z2Wy~CqQFU&h;i;J(7z|Tq&^c*;YcL5L& z@5aCrEiN~Z$bAk%wcKm)9UEg#9-U^Q^d;h4-xXo&ewy48g>PE$bmtdzbUQKX(gqu= zFD2!Uia;;%l-l$S6||h3kLU=RKE*G4%YnqZ>pVKfoxD#< zYbA0Wdg!5G4U`Y|1Y^t7r*w?HEhm^rlOEZob4!%|uFf`z0wOkO1MxuL{>^8+ZxRWm zBZNrVNL<`T8v2I znRqJVlfdLgu1QRkms8XA_`a{%sH#VG#F88LBr$$FC}$$%9)%8xnKJQJ&k*}WbeCM&#XMn7vVY!zwG+gv!9apDnif;Wo>H$NAZ-Hifj1bukU zP;Kk8XyCkd{*;WPs&zaxqJQDE^E0h*fqhk|^4iM_gl||8(jZQ}L;C7=BRfwnnKC=@ zjtm3^z5jYj+2n*wV~1?Bfzwfj*B4h!227?1lveZXD%u0)Hz5)>3-}fk`f(e&V-Z@c zq@#ZtFG26!XXeD_sU>-pda&C)4ZD%F=b>SyLL7$is$MhBwbmw0s0|FldBHu{%f20S z`IZA%Kw5*UTX1$1yM#1>%^&R^jAd?dmlt0Llo_^j?8~roIHkzdey$2g%A>QO$2BSu zoH-pzxStQpK4o4GNTCIsH)Edf>9RAc6f?{20WsMU_X zOt}y@kyW*;*78CG-W0dozTiNPI)XLx+^hY&0+Yu$vcOJg)ez$DI3J6=uhubR?KT%7 zQ=CaeQq`y}o4G0jsceA=%&RF-tKUedrzWLvs}Hz(+_bu`SnHVmBPq)m2VD+#_VnYL z<%~F-5nZXpaxJ6U@%9c?zD6K$?y;wA>)04Lxfn$lr!4&Va-Doz$?;|)uh0~1Fx5p~_D%7jx@^V2v)z~$?u5&M2wx?OsOwomFpKt_I z_fAO}LOnSCMeYG@l01cB{aL2{(6r|=wK6coCK@fgv9ocM(SD4skC62jAhYa+D32NG~Tg zNM5zbi9_D6$*vh(g6wp5TZH>VeHA{0_}xkeX(nXLk#$Tkn>S+Umj%G4uI`t4BMd_4 zaCIKOLf7${4ixg-(p<+qhpXkKZfiUpon`NN60zXBlzA#wvn0B48oW>oPc3_n6~8Rw zRiEL{qI)Eu@1GO!iV?aqy?cy4*K?=S5l}YRg$7FJYTc<(NM_jkPt4(fZ^$$MYR#vv zT`w}S8bYbIXUHrw9BL(r$uw4WEA!GCxjNpspqiLYoXK<)vMUY9)CjzD$J~6FEH-x{ zo-cJU4YV$g`}X`TRUh&6kh#uZ7-jr;R2X-ezV3qyL%yvq72&24_m&U2e}fw~%%vsV zp~3Ya=Kc-t9^uv+{^f=ZF1O*j5_5wGnZ3JB%pED_iVtq;(8UEanYqw|r#$+iy~ae) zYE+Vq>Uhd!AWzt9bL`V+G!pkFkPNE0`NUiu1Myq{!o^D7r6T5@6Yd6~UUQp@zH&sG z2C3Y0LJ^a0sDe~}8X8D}9%x=K7a2*BZ5s1e<(ekBrv6N(AA(a9ZOG|dd&z1 zd(sf8udz_=2{qvQv`(Ir#f?A4Wyc`qbwCYjUH?MuV57Tq*9mfZ#$bkj zOugJE10V7oI%&m2`tFy9H8JppX&@ZScTkx=guxhkGMg4Xp}&)|MTikp<~A^T1Ny;W z29f@O46h0BiD|FflR~^13yK*06n|V-?R6c<`EI(-3=ny!h%Pb=Ls|I2;4y4Z3Z&9- zGbpszFb2Fti|AgcqFrzfZ8WnCfbKCSfe#CEDVR z0*^FFl7ZoSL{9-T3WiRK8}@??a+05PCXPlWKcR|(1|dVU#qCmPhBnABwbMCtrXdMl z)rnGyJp446&D}l}G?`tFwVXqH$pGr0R!E|qm7#3O;6Gf{4~QyZ$LbqLvNG+ z?$vA7yg&Gkjq$P~2hK72I2`zGE$TY@NIYXQ1@4@3te@;Aa{6Rz;`r&EIP7bCL#N^f z8#6iqYpg~!fj8eTy}{cxi(QGwJ(-3?S`luw?ZAz>^$tSz$c|H8#sN`uq6FQuJ?M>o zGD^@4S=IMX(&Er$^!nU+tBoIeqnl~`k_lHq?8eK;eXpY{RhMf`th^%)x|S}RYCQ0K zC#TTKFGrj8A zr#mZD6E`3tww4ZbykzLG4u9DC%~5Iclu!p4KLuY@MZ&c^yU1k(GQeN*PAKdbF?_ymlb9JdXhI{;DEu13t>gYJJUand>E;JoZSTpn1>Lu4L zKxI(8=KL#5t_q2^<(c_U%<*l!MnQI-ChNTOtj_N|=A3c;wjHRai9Vc}{`CF(4ChVc zNWs|y?U(ryI)e}qq}3VHY|Xzm?!jAMygSA@$6|{+|CRe+d7l5CedT+vJon0XU)jMe z&yD&nSffAJ)(o`UFK7+8=;q~?W4Y^CYuJG;Xu`k4(V1F1-cY zgIEF@wf_B6onPUX+-Zvi#NJD5ZdBHHK9fsq6~X*L?YzBDnOt%Q?#`cY&~^;5esDXn z#cQkrqPvH7>?-CSUUO^oF7k_Q!`y0Z=(p{|&Or~*KDqyy8-67h+J0>v@cTpehFE0K z{|g1W-k^2FwF-z<*}oId-b?0bozWcc`-a@*7S{NS-XBeQ=sq=c{M=fGrh2>8K0n3X zeB7C5@S&CFmNI?wnSVE##_ZMiG`Z!zH}|=&AFaFCE{tA3^PaQEpg`;ErA!8mTKkPI z+_VUMTr;q$A^5Tu&7fk%Gq&799eQbfMD*sc#=m;Z?ooP;(@t)7r3+80a#ttL>dA}V z(KQgva$|7rLqSNP7@kOkuJ~^X(ZSzFW1yX0%vTdVAUl!qJF!YRG`a3+v@o>1`Mz`R zddQ27@CrbLaTk0pGLcIZ^c2>U84V38Mc&0YTV5%-niX+E#?1{UqR;eK2_38K^{KIp z%C6&jt=cZk5L?70-YX(nSV$@~%ZX^dIUzgdEL1P!vdx?$#8e*t8uiSb=Pc6Ku;o9+&&~y7(jUny=rATx(s;V! z)u!K}q9Bc!`-8sb_ZeqMOI1g-*;9H^|sJEd-gYptVN zahs$P8%ygRIXnioeB--dy3QfqeDJ1Nq1Gv`ndpY5dHsQ{LBeuH#?soyHF~hUP$)*w zDs6o=roKYrCb_W?o+e6hO~%b%(iYd*Tl<#t=B8D49?NQ=&4(w3#ey91AH$3BW`t3D zlh4Xp0&4;*0y=E}S}3XIk`)||{ZpOiI5}m~SXhTLnM}-N(?OXBD^6|t@MY|F zys^}Ci1p{bfAgelyRyq+9`e@@*TUk>1{1_?^yMVtR=t!MJ-wn)Ozak}0(9$ljki9ZM%f(D zb5FFEzkq(j*feF8AFnSWnOewte)E#0wbm+)jl6;0Yu{=6;U9Dp_e_&Cm`C zN>52GK4r$I3ahv?5Uag?!($xa zyQ&shAS4y&+w9;9-#Q9^33uByNEmxcuo>nCpp_gaGh)MxaN>5N2#sQ_NwWN$)WTWSAFY~gyf|2ogO~Q0?^yF) z<&---R_f9NthFjErxLNl6wyj1D$9)97D0pk%XMbt?Wqz~YWO+0R%mxfZ+Q~4QNkp2E=Ey)$Deq!cgw#)%!4av2-($8Le% ztsf#2ib?w>xgJ1^aN>W?S5|sg=y5kSP{K&!_wReRijGOz?ZxbP;)UmElo z^=g4}X{NWRAYy(6-f%ACzQnj9``7fcsfB3{3$n=u-@jNCQCyFLP@+w*Y{Ydp$(_D+ zw`K%iYV8Z!BoV^(O={+PYFG_9iJoD2OjBpgn~^l?ra2s9uECE++Mj7`X1k$=)oUy! zGFWa2EXq3Ub=i&n?9hBTqXFqwL{R<4SkYxIl@WB+N8{YFFmH&J9`goQuL80q3Ox(u zMmBU*=B<%|>$2?}oUu~2;h?Eq1Tr0c;zg6dn3yibi`tD8o<-E9xjbc==^n(0+7(>7 zg)C!3@zx-`%9}drFn4Ussw2f@QTtQg7Y?bl(fxldZJ$SoN%7xeGPx01Oi6fK%2NQ#06(h#oO>e4J{bO#J7sV598Zs^H-D)LMk}Of8 z({NohGw&x6%w~txXFYCh7LBm(x(uH>_k8Ie=Yykcv}ibNnu6XJkh5lLdg@u?SY$fy z`}t?lS>n5lm%8{u%X`YgDXnNU@$?oADsSgPzpJ&fk~{M)Y~tlDZ?&^JPM!u*(1IGR zD({{{54sCq?9XYvuB3XJVRWeS&bSxE?;G8$c&4K@wYuG%$bHE&S$|Q@AWh9H8Zt~-}iTID?;>8LhE^@R?!Tjr@n{pZQ9SiU2C32*DG(fGv4gH zg%BE~z4C@R@!;2Ow|R^ozMG=osK#^AMr;4|&doZ%c>9Z1m^UA4Q?)T+8{;hh8lx%} zRcy!DrZKZ(?IjNuRnLLp3D=m5$rU7+T*+yQ7y~ZmT4Smvk+LL`4KprwTg=UvWsQ~A znBa}^*Vwzk^SI978j&#{OIf#+*qyN*gTa{Bw^`G+n8G36vod4+)s|?f9b&LGLjx`1 zi&wkXF3(%WYlX4V)8zYf5##0o{S?OtuKP+bLj$ydA4@tv=?%!!wrTl76TtI?&i_sQ zIxzCkOpMeN36?TF;yL&#X_oFx>O6=ec1>rISf91HoH| zOkJ6MC@nH0;`tJg;<~b-CeTd!P6vV?slPdY~$1ptx zo!I3`$E$&Cbd+wLe5W(XLkc~Kr-x}K>_l_OLqR-D$i|497pNI}3~S*&VZ2B9*Nla6 zO<@F0=ErqGGP^DH>(cn8ItGqXOa#93FT~J%!(h07kVs$g6AGaUO899!E*Mi&3!`Id zH^p7GiW2L5)W;8-9iu@<1Wj4BJ1ZQ)rjxG-6m0&ZJ#r zvv@)_8aH;sjZN|FK14`-TH+hT8stS$xNkF(QqK|JVBXf`zMaQU`409bY);x<6toW+ zi;%o2Ni0_Z;2|BD4(#KwTIz=B_3GSXc zR14$Y+JuL;H39KL819M{xlnHX=6wv;@~)M@8P;CoH-)1!G1?6xBIrA`ui?ch-t~4? zp_Du~6dxkTHNDRVG&`8mJSmI(R`)M1{_YEWtlVehn~dWh;mJDH6IQu^Y~t(%g~>u& zMk>T$C9iD0{L*=|XcY>4?pku`x*n<9pqLyKO0=lY-3OV$ALmhwG z*Q+2P-3>jDX9#4r*+YjmNlb58qvaYZL|C(msEH9{J5=$cdxArYYZSU@S`O#ukO$30 zA=8`Itv<(7D(!AZHAtQD}IIA$};tKGY$bW&Of7;;$_ zt&*p7;o2k1A8s3cTVg3D7~`C!&4o;a>#mXad0VBxEY1s@{Dzv7SKMfwM&yFtmE006 zQt}Mm2EOb@t#rFgu26tvF+SL11{@>*<2t@CP&SJa-*`I?N^ zbKQ)VzeVNd9y8ply>J^dnqaXnd1E_NM9;}kJ(^J4X+t%}uCFqhBR9&$x{1TBbzB;( z@4zsPF}7?owRm5SSbH=69lCO?u-#xv8ohDA5#Ei-;esCwQ@(YJ4x%TnkkkLl>v$#9 zxMXU=tO;(H`g}j$+{0j0+1MCRY>W%On#^`|;8ZA@etmp`doVKiS{7=wcR2=Boi;)Y z+B|2Z#>%ef|&rFxw1!c6VvEX)erShpmg0wvxa zB#;0r8~3$kH_5f#y7f;At0h@)GX!;1*%AB)PgCt(j2VYss;%FuqUTSux`Bpg3vJ5->USBkd`Myx!HA1J}vg{hn zCvrQ0XimjSi~`eDO&RM6wEIRk@iTIDp>}A!Fc^2qT2^cB5U%rdLFBZqOmwLDVhLkQ z&=i_ObDOHgwSaTDKVG^E{SY0~(X^gO8*^ue+<9ztLPkyFDQ=~W9?MB+ieb5Hd9j-~ zs0G$BzrV~|3|LKAM9pOhvS7fHOiNLL-HK`WItp{qydW7mK(dnuOhb#tUp`}e{qkGa zh!Vlw2A~*%<<($Z>cRb;hWk9-6dO7^2f3iR*yR@--mGy{F9XnrQtBETNGWPA!-Afk z3tu^jIrAhMerKqE%ng&YNvoaKVC`GYjcb@Q^f+Qltt0w}iz1i;tKWOUY;0MU$M{ir zK6ki=>=m*@YHe*OUD)dCP~4;5;sXA);$|6Iq_ykiP&?bA@p6xBikVb=zAW0+*n7Cx zW~d4VSD3)IVkHY#oj0}6mw7?~x%#biUfcX^lgE!2e;PZx?AGh%bA4%~59Hlge(0>x z0Gg$l;sH~*iz=wew;KB3`qW^`X4WiW!fxH3xW&q}>K1fk1Xi)y5tTZ%P_v#0eC&?+ z)MyK)F^|GM%U9I9`?X z@^8(xB9-o=5Hq-vPVlCR%o}u!Koi)GJQ+2^eqqHQ`T)nF&`AB~G~RF_z97D_!M#x~ zIGx2pj~7NpBz8!>E~`$G>88#4K})h{7Yz^^A-##0D`Tkz8*eN#n8G>?Fj`u+4APe= zPg%ydivgUmlyMSA+G&B1Pmj6$8^c(tj8hc%4zswTPv+W7#3_t5E9!WefqiX5z-VFi zJ~-;S71(uP2G+Nb<+EJcYL?@haEWFkHOsN>sm$At15@wjRV!+XOU|ECm~rE{UGep6 zJwit{-{#;i-I?LiM&#yzDABye#2CS4BM|#Zc&pNk5%Pb- z`)`OP+(x*{)~N5r73PgNc%sM`HMr>WrNzGJ#=>pv05;q<>O^N=rFPAl`YHZ5TJ62M z$$cvYZ%ji5@q{03QA5VPL4+`-l*e0g_S1X36`bU0P`bh3qx+OJ^RAviK5N(V8H2oH z&tMC3IZ8XE=rP4Au3gk>mvIWgAg(1lu3>_GMV1qZuh=^v`)7ziUopO>ul!rEU9kfj zA?L!-5aC^z=?x^#J=zDyI3;MuA)!sX;e^~FbQB8V_1LjI|4J>Dnm}bOuiUZ%AEsri zwKZMZAwkd5e|mihRc=Ue124_N#k@a^HGxHMg_g0!EQFl_!npj@1yXmEGtVtFd+xkuCciQ`Ke*OS< zguA#cM>P3jLlA37Agyzowi<9NjlLO2Y$MNwZ5O2BVGf=qZ3Pg^hPJ1G&$WX1HUw^- zA^&$=>jSvHKeQ~i2Jw~8z(*Q)&WIHSyyC+y{`tm7-`GQ3zxOD7c(jY9M{E>)b8Qvv zx^16=UP;sU;aGj0=Ip&`yu)+k*GqNETi}f@7^3`s8p~4E=kq-1{lh@pc5k@iuJBmn#C^D(2FfX_=STn9VDsj+kh(<^=PGM2ej9bHauTp7{y01=@aXJQBMV z%6w8>tBqK5TpNnSS{l0mHUho`EjXTe!ZQkBK*3}{HVh4z68K_lSjJT0Vz5RK^N2*u z5ZHaNJCGlnf@>HOGfJj0%UWJAI#8prVSPoHqArXk7(SpJY&L`c)*o91#d!*aJOZKHGq!2i+DPYr$fKj6(=)z!eL_VKYb53o9byb*29-;s z5KK0&I6c54j6TpDOf=t(p@%#ek{}OM#uP=7Z@N}UW3D0v0?1>=onECBooov7lSd|W z`jLRInm&U`tj5$rPjK+O3B~^)po$EHr43>)41BO(g?m6~{IjG_bmxD)kX>{KSb@pd*=> zs!k;rRa9S6nJk@9lGNmRhb~tm6FTtNtFk!N+k2X{DqLbDIHlsa8<5%EGm?AKo?18` z>&<1>EELs`Yi8>6o~}A@{!502*q&&0gEIGI-eKXMZ+sn;Y#SjAmbFkMi9_Yo!i+6z z>Ur;vus|^|?&Z9JPR)_VMt8E=LF_xsg1aZvifv*p_5D7d}rB6U+srkFVNfOvF!;NY)Wdva24 zMv`bL8;Ig7AC}_=6jVmodAtNKIA&CclA-z_+5RJ2k&N6|?H#?wlHhg2R2=Ris#`WS zN>~X>5NX;UF->d6EF2>(TZp&=TTs@Ojm(Q%6H!E3)*LO8c99S#0FgjGH zGE1z^qFK`s221LK_EoLaNU{*FT*IZN=zY!F5xpE#vpN`ab?JDm-tiF1aM=a6`cj)^ zVuXauY@A{UG;<-awP;mQ!vf5_xPeRD%1nK^dF1-BatSfcLwJ^D#5>NOFA+7hw_4`S z)O&g&yXN6Q|JnAV@Sc^ab<{gvh8^BSwGFj$&z|151Kbki6TNGc zO(-c%RwEz;c7M;{7$nf$3aHc7CF`CraY1?w^7M_N9V}wI)n?DB-h*HtHWZ&{IAzGb z5F{tiUxl^NLd+WR3`R5=vd`LWGthoB*~+8E6R{_Y2ovOA+3}~LnOah3qe+52Eo|vV z>gc&_XTGQ}^sNF$jPUm9VTLfrHG77-vpi~@mI*yfw@uUDnfJ=c-L6pfwqSGs_+XN* zW9MbP)B1;<))Q0KPg(WcTYB5X`;s(n{AE?V%Uwr15%Updk)4hBkGQHOS&>hT%#QHu zodA%I$*+$oBAz368-dq&s2S=0arXp3PNZh=APXDmm?9+dUE_=p=XnGH$k9{*RS5D3 z&R{T7xxpViXP9G+q0>m#9(!KQ^D|Jds9r=`wE-lS*N}Y*(P4MT$OLKTM zvh>8#(yY=fNy%~~!>Cf{gcA9gUFwV|b#h9b+|oEXPb_uvO7lufV|+iU)XC>bsWW;6 z8J(=sllXp0sdI9vb84wmP?}#_dUEMRs!ovpuF_ooJ-yT!Q|g>iI*RJfEOpK*b;df* z=u+q1r3Iy>r<9hCB+qH3Ia#IIe0fi)lbi^JBT7q8fP}2loa_-i&2>t1pyzDI8F8)y z{#a?w$)!$FsdLT<2+pB61i#mD&MtNS!y&VC9<-M_g{8UKr8%P=FgV3d4war?>b$Qs zm$L77D3Y7wkSFJyQfFLg?uhZyqH{`f&MwUb&xF!kYATVwTPs|zNdK4(0`@BydHne0q+W;=781=LzRY=UL}_&JUcIou4?bI=^!E z4XrYel9h~&OJ=*OjD&oNtx0B07@<|63DLl26(&T{87rKYl@ptg%(`lXTsxSI6R$N= z>v5A==Z!Rq{E;S-BOw=^WEGE`kgP`c4APbSgQ6I8{3E)~Sk4JqljG=tV^hJ70VIw| zBWql2>Ukq3p#GdVN{W(sgtni=u^Gp)04KQ6kn;Elj3CAeRA^cFecQ5R><8Nt5+gD~ z>seyUlG4Piv*J@Wp6NJMamVTT&tA2Q?*%h@RS&QXcpO-Laj#09=Qt~X?Z7*Mi^n_8 zHek&J$LRp>0UiME{ZGnQ_NwI{a-8ddT^BmeAA!>+JI+6VJEuC%=?i*Q^)$zM;0n@b zfv*PqvmNJ4wY{owp5v4(>s4dtJI?-VdsQv)Ffd)|IA6Y@S8cq+ak_5oRf{floCzy? zRnrxYlLGEpM18>CD;=i=*jVE@JAns)`+-$U9A^O7vD9(0SM{paWsWlrSahA^OcQv$ zlf9~W zHRXZDYiQqHJO?gb->XU*Xg_clu%HS0Z*rXG&+r_W*i8B@j&u2ay=uo=$NBE(dsW4) zj&lgu1KiO%e!7Ka*j(U~;dB$<-fP0>$|9}n8 zInL9-^6x@#C;ae&H9=IFo$;!*5pDCg5^l4>0@P-$OazT3{`35ZDCFPC^f`2-x%*bOXD9)xe_PLkF+{xDMC>+zc#u9eRPa zz@5N$;9g*&hjvLia8Q1~0lsq>M_@BB^@m=y57+}NV(D%AW3Q?Q79D^efgQl?b1DBP z>IWwNOn(AffxW=gUwYM~BFY1sfK9! zkN5PcPGI7qKDBEm`4{!6-6@{m(Wj1AKz~!8+A@!F50antr2U~jRmXZ#)ZVAE;g6=5 z`c%PL&;u+6wgSt6?ZA3q53m_H2;2rtbo8lqU;%Isun4#xSO!c3Q@{lLQVkpfYypk~ zwgRUE+kxwV9l*`N#1H#aE3g2#6IcY?3oHY615?03U@fo&{%QcGfK9*_;2>}>F!3Yu z0}FtIz#?Ea{8k1`0aL(5z-nL}uol<|Yyh?ZTY%ev9l!$kvEXI;LHHBcBK!&54r~W@ z0K0(ufQdbQYAoYD2wVJS67g+W>;|uHpHo%{$o<6k$*a7U8{qK!F zg{b8e9DrYdO@D^}fVF+J6EU!MpieCZ77S7jSacM=1eP7^Q#GZe|CRm%mO1^Z=mXS~ z=vNKE)Cv9S7_gwAUo~C;o_F=D4q#$TznWA=f1KH`HUbOI>Q{S#9b@~|m=BWg-Tf*B z>;X0cJI?M`yMPVn^s8*<(O@CzAL949{i;o1alcAT0*>!ji-1iZ=vO;{1(W;Lae)_+ zKAC!}`qdU-7jVD)zO-MBokD+C_p3T!;-md)H?Zi+epOHoeZXR1!&UuioxqRxs{_E6 zYsfzhyf^l%PGI%QewBX_bg$}HRluIx`c*4%@LuW%mfhE{%BS=E3;n7Yn0T~bbps24 zgTSV5^s9;)q_;sIF!h~&wGY_wWWTCrJxDwY{j*5l$#Y=sb36yOez#vuXPxMIp8fz1 z?&?>IXG7=rc@9kNhR!+Q0d5ue!+zBZ?D{d~=2Gq_&Fx zmQMN+*!2tAKc9Mk3tnK?QTpX#@cp%4tp(N|?^k<(t&0Av1aHglHfnC6IU?P4{Edr*18-Y#0t-uc8K42HH7uW-=S_ocXEijQdsPe1mM_>`K z2-pT}0PX{J0QY>Da=`t-f)NMRF<=>R^rg@PECx0K%Yp5{wZNW{2h}ct*$35eU{}sT zmAZ_2fs23zxd&Avu=*tM0h{spwC{|A zssorf^PtMUg5PHyR3*T~Sm*_I01Fm@|D1!W2AC+MJg^J6^P}|dx%30D9mr9^=_;Zh zfIaV}-N3|oJO{P_o3Esu#k2!B2<*O^=kKGw8qy~oR9k?xW#C!D?@9FQQrdGN!8|p1NF|KpXzAuJm>|MT}8b&QvVGH)!<5=ucTjAQU2zGYI;5J z(+5@ECwSgWdsjpMeFs%5u<1)YUjy9ExBwfzMgKKG_qPwKE@0P>>BpPshyH_V`7Pib zV4T(h{|Y_8j^p&tt@LY7S{(*ZO z0~0?>tF^!aU^B1?xD8kaYzH;~yMRr=1HcyGabPQO68zc@tQ5Wl)&RSJ4Zt4YM&KZD zE3oJl=zxzKfW^QLU=^_7Rq6-U0=EI%fpzd_53n8nto~J6C50bx5tbnpVr<&z8TX z)h>Z5t@5uS-5F37z>bjvsvTH6YCt96-@)twwO{x+XFwI#g6G5mwGmj9KcKpRWv33P zUGR5H!GOw!zZ=F3s71iCu>-37I_OUhsAgc%x!?hIymvrVFJ~Nz2UIJt?0o|&4QzV< zfEvfV7#ugC)&h$rQvQ1IeSq@7RM~)P0~Y)z^-4N0!Tf2ua6nZ7i>3~!2IfsGu#$Px zFnd641Gdf^P`#^w3#h-I{2!*CPXI6FH}j$6vH>;bX7GM&K-B?@77wW1z_O1Ir~>9m z!?n~0tiF+a>uBdn+6OFKHJ~;FtLq0;r=)*kKux-XcCDtL;QxX(11bgVxp_c!0IP2q zQ2T&Qz+T`WFu##;yLCV<2DYvnP+Nf=pQJuu*ZKifbQjM*J)mlVsk`YfVCzQu3t047 z==c=$eU5Zs(I(P?9rp~VlJ(So-+*caHhg|S?FCl145+b9(EY^$wH(;GWkBr&Ha$o` zewus_GcLgPZS)(k_7Ug?Ha!ZR8^HfK;{mMx)___E?0O2k^85J#bqv_C3wrOST`w?x zz?K)G3s~?n&w))phTe_f2Q~l)ft!IvKN(OvfVIFqz!qQ+u&bN?Wc?_34Z36<85~gC zfrEb^P+L9+zy5=AzyjcLU=eU%GwlO5Z=%0|W%p9Af=*zWb4VQnb^(hvQ%}|*wH(+L zJES%Po8pI5_I>0_98!ybi4lj?c3>B<{0r0zTm&o|c}Q)1fc_eFNL6kjU(O-557?e} zNVR{NeEEk|@+-9GWbi#qzW{51iBl*CEIOU~w~_CxLu$_>lq)%;YQIYR%E;f!xXe1F zT7f;69#YdEgU)LYsr|rKVAtd1Z#tyvw^M%WAyr1Z%f5U_RR9}+i-GOHdSC~z3D^bP z4eSAS0SAExfQhdhQu*{(0k8;I1e_%O2do69fHlBsU<0rgxDnU{+zM<3wgKCL9l$PN zFR%yb(Eo$L0$}3dL#h~904xU<0jq#zz*=AmxE5Fq+y<-#wgVf0dw@;A{lG3@;vVX4 zJ*29E9bc!PfIZ)&J;0V7j4$I=@Wdfi@_Fz9tAL4bgBREY+$ZU6;9(p)fNO!(Paaa8 zGQLkiXAAYW({5nuY1%9BnL}z9uze@vb3gSz2Yz7D^YpX8UC;q+`Til57We|~{37th zL#i2A+i^&B1Iu1!yx^O}Prw7ev;xO{iF)@QQtN=Norlz3V8JgAsWA_Nw~PJ(w*HEK z1~&ZqkU9=*`Yq%05dE>AegZah)1Ix+*+ahoJAh5V+Bawyu;IWVH5R_?`V;&PEc*-3 z;m@)|v>!ff8Khod$1(U8e(d=N;|=VJA6Cwzw7c-IDhGA|tAMQ+99FH84%`VWn{!wV z0#m>=e41K*Sf#!OohuKkEx?Xdht)n{PyJyvM)-I2Vbus6{Pbb9{pbbaBl8VhWB;IQfj4n73F9klZ+ht;Gf zsPB=(svbD_wZm%px5)oZ%6*&i-#V;z15?i*Rt0U0!>+@s7}xfIIta9{2X}WgQ^*rNDQj&@_WRf z+6yciIj9au`shJb_g&~ck>|i3;67kO-k{2Uo_3!!s3rjmP8n2&d>*aR&5;-G2;HUM|Zb6^*+19$+~1w0O{eFXeJpxig11DJS* z=fIvH(VmyU|KmZm5m^0G$^%<|HmH&vJbz_SrGT}+8B}Rt(Vqv^^dFM%FVqk0=o?hK zfbEGl)#xA5zBArbiv?crrrH6lzVuCX99XpaO;!0a`8U6*wgS7p^``0tw!ZSFD&IqW zzkgFT1IyH#YCo{xtRrgNk9j`xh*}5iNgYwOKcW1bBWfG4;F2S%2iX46BWn6jY0t-w zsA^!xRY%lTVAJX&s(vr^tU03g15@{d=Vz3AtG2_ea!rVAJbIR4=fr=ZGr%IpYqj0G7Q$J;0`%qpCyFM;}#Xzo7g{ zM^yuG5V#Robm~#n3G4v&0#m0SRpq~=-DezC&A_HY(t(Ndj;hKo(o2u3t-#hfN7d$E zLHEL=YV?0mU-eP78<_aWQC0M7%6*i2fT^pFsvh7VFnb^EyZWfA1~x1?s{|&vj9aW2g4R;<@dx1rt zJgU;b!A9ucPx_~5AF%80qbl(`@O|c}N&yqivCH?RTN1#AKy0JZ>+1IwN|rt<$pIbabm@%>|}0oVZC1uSsPC+oILovgL_S!azN zmAyI3q>ts%M(hO>B}-~lzJMbB%J@r;MbDnYm%RKrd1L0ElzU5dqjS-jlizoNXthoG z#lYhK=v7HcupgzuHh*J83nfjRML?=#)>^ZB>=J z6{8-y>&h(WEVnIVcqVk0Q|26C;xZ;;wGf_-IhfzHw~A-Ff&3OYhP291+BniGNIQ|| z@{xSgNlTHIr&CN?HEGjBWtWpC^#|)%N7|%Nn)H1cX_Eu^T1k`k2J78P+G5g92;|#K z+MXAC)kgzq-J}&ThL;A?21zTS?C3yRb`0AbX%`04#*(&(v=M={64I(eX(`gA|AP4z zktY2YOsgYJ`tP&=zDClzpgEYYg|yC4+IG@}zF@vxq!owKI!SA#>^XrtdPv(%TClH< zk+v(4COkbljy?79KDA8B&dJMfj-~R(Y>3auORi7cmXkLom6ty=FMD?Ghx5kF&|k?W zJH{_B&{KW9_jn7Jln{#SNQH!eHpOS=C7Tm7@`^W%n2}eqeq`)>IeEqG%{-f_ zcjJm&9tIO+Pwxg-)1!UrCX1^%#vWz&^gE%z?CF;b+0)15vYt{dDdqT#lRwh-k#@Tz z=>6_u4_7Q@kj>4@UPv}ABQNGl1$}bAm!I{{)*ZW!{6>mc5UhL>d0QygM!B6*j<#)z zA!0X+9I`>$zkWn2ujG@a@gOvfpG}$RWbXu);oI|qEo)_%l*lk^y(%xxUEqD6n|r(W zeMW8(1$Q6K~EdTUEPnMTfY=}1_yA_Z}#w5F_ zSId)$`+gwBG+p`7UxHs#AHNfKk*>$;ZP2yYqh(&0E~#%Te@~oi>-&(YPtG1GgsAE8 z>j(HQ``Y^0HEh)LV8?8IHmT)#%`nePD6$)R8+qQ$_rxDxwDisvUeV(gyUL?W_fe93 zgOu4%8965;Iw+&-g{iVDb-f}#?5EyiF7IxV}&vtv9P3op;H&o;zv^5nV# z1j;I&T_Ml>eHvO~^Yy^dFrmAgd>hGkOJ+XgznE;|j4&DJLi&C?<;J%5sVP$K+Pr*`LIvM$(o>`_lk^b2;bit2vL2({I?6pD zJWjcLWsSK<)|gF+nR&&{vc_x}IU{e<`cZT9rpK?&%E_BV64Q??-jXw)#ziE9QfOOz z68raKebMuu2`t^BCj_i%z8aaWg>uQS^{JWQaPG*<7kOtpX^TnAwe)ThdP8eMOcn)3 z$y*fW=f-OFlIW#q*=bPlBcpyAIncBnUW;yfDz7F!Roc#y6Kea6TxsLUqj0Uj4pp z18byh!)$N-7@hT_Qh8PJ(b3~KC%4MBq3YZCOK~PjJU$fP5Ps;4$6t&_n36S2Xl#-8 zJ=v#z5(DSMLvcpX*c**G4YJ&b+P@dEk$wPtQ!TUIO`;2^;(pMZ|%%k%twp)G5Dd;?wW?F(m~ZFB&M z)!^kLyxL1!7D3m)vQ|jBA`WbuDW~^+O(Sd8dRd#V_9&bg;&I`DE!206{jo^ecW75| zotYi6&ZP3{bUai*N@sTvU$XEtQV+G`sv77X6>INo0 zPu+Zkrg5~T1>asx)2IGDnxvjB{0*WD)b%Vd^^}v=LOuK8xg&f}Tx9Cm6l0xfmVUEy zyfUvORvi*#*x`iEF3NAE&*#YeIWL3Gs5Sb-tW!5d&!3sOg0Bc-x9;py*9pE+Zv$U_ z{N8AM6}hq=PeO^c>$`pG7s7N^Z@GWSxPCtxS4z{i8``SAhrgw)KMy@06@YHs{volOXypLzRQN8Z-KX8%ARpWERw#8+!{!0 zco*vm{;qLZ`xi>z`D?eo*6OvJy*E}7iE3VMtST@2r62A6*(;dH};Rn2Ni50!n6CJAsc_&FD0Pi%3)|=W43aN^!r2^$Dw=m++1l>@#(C8zvxpp z2)?Ube0uNK>rsX5n-w0ux$K+gMf1hn+}NKYNuQl7t9FD)G>0}dLBkGcNc|VSHL);1UGm0sf98}jy@OU5C5DsH*a$+ z{xxcsW2GlUi3sD=^H+Wb>)-GD)EBJ`bC0ZVo8t6kb7HQXQ|U|2sjE$SPiU;jtqrBj z&Rrf#nGunqd7>A(J6^YRuQGJM1z&y`zI-aW`%<~m56+q3!yv~WU-6$YGMPC48j3c_PEX9YW<^?CtZ5h$LHlG zV>3Jw=H+U+M&hQ%9I&zpdF}l6_ZR9#;>Z|05zs`QI!4*Wl>H^&MFt+CW1#H%ksk{U zi&^{2&Z5kp@KcXi`?XxB+pEtG$eyvMX)h@u@fkv7osu@x{-sadCbH~~XNTj%s`!{N z8_v+OtHg>861(%N@bLyyeh5DV>1oS~cL_rbrD(qJ^*H|I6Oc1LINg^skh21U2Kht= zC=+;EuadHfQ=oxQ6@Odkr($G{7Lk8qE^Wh}HRk4Ri^cC8ZbpMIg0?SR38=WYGo77t{W1uMR1x?tDxyHZK);yF7gk^+W9f?z%#*q z_T_ndX55^Jua>q9?Ps{x;FP$NNkB^?c($IfT+Iw zXYEd$&3q>2?A=1+3~(}jZ!td57>oZtn%6{?7R77hr~16MdpKUZ=agQ}Q;9!64HkoE z8?<%*x>xPzcjC9C>oWxNK+X`;W7m3z2zopzh4=*K-_zxOz0>8GBXdsH%7>}zbYS9M zQ&&0PN52PsI}@9vG?lbE+@#O&sg7q1@`|3qv;N&L%M6P);-6GWxw z>JRgitVgHyE3|o9HnTPw*3{TSkIsv8QE>g{!Qjt131fx^*L2&Ji*23^RSjHb5Bk_UR@99_L`7Ix*XMd8j3u(HZ=i7sQ;hzmc^}IK_9=(<=2WJWOq?7&X zDBlxz8Jx{xi?h1vdNa7%){XFO^#QYUKjD2(<@zc~WO^@scCM(wjV^13J|}IZt|nrj z&X&F}Hg!eswR7`2vtY{{y;BC&_+FnM0N2`I^{S^vgX@f8`av#YS|up{)kmlIQYQ)UWOonfuYV>NmT0u@7GnJ)!33 z#@EO5w#RPIYr~MT9j4h9({sLwI?5;Xt7+0NQa5ufsH04o^Hxc0Z%80x*2|jFA>}9b ztC3QEsau{kvRV8IHY9ZUi&-r(Vr1wz8A<8?L=kIWNx%9e1DlxTwsD>}$Nh7qZDV61 z{=mq{{@3z-H8>Z6bJ7%OIt`q2U7Vpg9@G=>OjhPKo*SQ<9l3VseMQ>Z2Hx~S+gBHx zwd3vfmF&l9DNj7$`(^Dp&s}@wX13K|6Xaa@@#x{a*yums%l=MW;g`^>CQfqkh1#j{ zxqUY>KH|j4zSF#$FManP=SGDh2}XAEiA$R2%`TThfcSRw2B{Jic&e8-5$ zdgO?#&qKSZr))*Px*d5Zuuu4Fqdz|LMZWw$>4;fFq;b7A%Ggwbua?+I&Bu?sd`Mqd zUHe<{@mk7Pok#gq#FE0t|AZbn8~h4t<_w_*vqEG#r|Zh7{8UxTpTzqvukTkEB!<=< zI+wtwS@Aog_leoL@fp!i=p`A)dg_^eyjNv${!KhQbgc``wfT9QN5u0^8-5%k*18uj z@YlM{BZgV)79!XGF&i5G1`T{<{3OP?b&VarQUBWb>G7BH4aD@yI`q0}Tkve)twVQ& z)*+;N8G~lZH{C?6u#|tv?Hhk?`ul*jO-zqHVtR%ra4no>P9CY;I?`tk;SFY(&^bsw zi*L5=T<_BP_V`rFmz_`fTkLv!wOjt}ueS}9uROI+eV#d;xX5j1=uF_xJv1qK@ndI4 z^1yKW-S@cN$JK9d&KrgYK5$mAItzYJybKL|WDa({4?O~H`~Q0mZl><4_oMq>OKi9| z|3iHeT$ih2?U6l#i5y`&Li|kSVsV&+=o?ZdpbUkbhAt#V#_55k&RhG{C!~We_WT;P zjwg1RE3eH(mul8jX+x5D@WaxtcRy*@u~0kwv7N(OB5M2yt>1jTzigBG?_@6!d{bO} zq5VbUvvM17%ACMj zfF1V=Qs-p4x9Bs!?6n=>?)-GWnjyIP2<`hw8+~`bI?L7IT<^B5yq2X8FNi(?Vw*kvCRG_l1!++Q8RV#=Q(9!FR8VZ`i(_o0rat|0-Gz z(0vfGf7~_RUpvyn>8ws>?RbE`O3a4_K2`ixPM|+0bEn3;NS{o)uSf9Do0X!<|k4c1ExIhU@{CwdwNG)?Lt6a9yAJ$Vt+Fq-&mb^;H#{Ml_E^TeUec zp(M5uWz`K?eA&jAC(&QUD)_QRd!!9V*RAJ!bd4UF&s>W&kK8okp2WQjm#4cv5nq81 zNnbx@=#sfJ<^tx=dhT2jN-Og6WBc;5^Z8mrdQrQ7uAxhv6lqD)5QQk@`^d|)8lIK$ z>;vAjC7ut~I-V^WrrZ{u)eTdwooAbeDc8xf)`)UKdoRz%+?n>`W+Y9N_wD5WpnT^e zX$7Qphti5k>%AkL5r0um+JR776=^+`mE)Lv1YfPi7ff4A+OAO9X3}VESSHEwB#`PxACkjl)s&{=@I#bM>~1efb8%wz8l|N^t#%9N*R*U79aAF9!Gn& zt@Lzkv9_Fmt-FGgNZ_YAW0y@b>)roZ9MP zar&6$CCrc9FX_Lvu9u3IKk6@}I_|z=U(#o>d&OrUXov7+uL@+3BT**`IjQ0G!kw#* zBX@A>c4PB}l?HKH;%J{T=U$N^pIS`O{Sx2IJt3wh$HuUlEH zO6W&NJH&5x0d);T*EJ_MK0msyO6n51K<+#n*O*o>d3=ie6ZChL^UJ=F4rW1aY=_}F z&sjqRNtS%)0Ql-&=vSZPd%(|-Gcc|fVzJPsEb9r+_ls@0W|6)1e@kNvy%N=H? z3H|;VB5F)T#ylQ1&T@|12A)CsVg0|@59=b%alPQ$4oznu>lm7}eq8gsmQ%G&&C2HJ z2cM4~A}yOw2SquGq_scj|F>cd8o@CLj_J}qh9N4}po&L5&_24OUwx17iMfy4J;=9N z4Hs*G^NqDf&B}1;F91(niQ|0rUDlsJ3!HqIPEHjx<=@3UPkc`t{+jM9Z68}7XPt~) z3QFUpJ}+0yW9B=PM38}mqZ}z+B zxivc%@|^;3?by?={>b;lLeqvJw8$KyH5m>vNYX`=kxxLrFFo6nqgmTWY)CZ6H^rn6 z$MM&I?}x|=iT`_ye~s_yqG|9yclP~M5@<`%SDEc0HqY!b##D$lU)Jts%2dGXDd7b^ zGHjvmTX0bXKe2Huvk@nAu zpN`LM#y*An*q6W@N;B;$xd_~}>qQ|Dz0)T4#|#@48kFSxyfL^nepCc~X;&>}+9<=a zsXsORyOy*aq`k+sE9k2b(x1!v@KWUNGDF)57{$<8mqk?gX+L!==e|TYX5e1gXYUdJ zG`m*&dW<_UN>*DE*^-q0ztv-qMb3Y@75VuHZ?B`?;*DwbO-az_UOHiY{9@J^YeomhyiCV(>Cg0Z<^|#-U<)29_eCC65f&Hjid|@|8Oc}n4VTZR=t~f(w%mfxaP)wQ$zR#vT z-Wt;X;Cs9AC{5sUKKIVx>I7E@xc=SP7HQ+yS@>hz_wUmsW4#<)d%<-R-wlri;-36n zWNt8cL&|NVT*2qlkueJrLFsNp!8-|rcDZY{l5(!TdC2<0_;`N9(!;Q07+FSF-GUvxQ$dU=V z>ql-F(VW;6zXx6to|C=!y}7+w*N}Kxdd1k@s^=l^JeF1;lXm@6+hnXYvR(A~Vv27A zSJBtfs-HTY*d-!JGr-nSuhJDw=AaRXZE~ZdFVh+aE^4vS((!RwI%T<=VALpDMs!ec zwQo=V+i^@Xo|WLL_$K;gZ(T(;9zL%0>gXv^p=}mjw0j)md6LYrB@YGHA>{WUe^{F_ z=hY3-^H$UsQNDgx!7HvEu5maU;o=kQ+BNVXSj_mAU5xzq#J@kjGN*RYXHDNqtN)dD zK0qD*daKvLg`WLL>!QTA`h)0xo1NPLzD{T>c#^w~Wejv|m4Alx^;)*is$#uSQ>wy^ zs;UYaC*$4G-D_fKo2a+>SKQssAt#}}G^8DV-Lp(gF5`7}v`tr!m&~trnLpXR>J&iY z1#t3_K1)+qx*eXCKKu62x`v#eYU00$?lTh`I31*oI}P6^J~s@$w;A6iV^Dnw`o`ze z>VBECAN6#LdOZDpaCM8ZMNwlg%N>K7j4}8_^ca{pJ$bLj^6z0+kbe2gmbVxKTX$7_ zT{OO#TE-u{fb+@jf1l6g{J0!k&iyNc zCtGncETWuz0(;D_M*Hi~^zi)_r;O-Th2&4%41PYE|EagTBduo0IA3S#eM|YiCiVvH zU}p}Au=uPc!I?l%>V7$Ge3sB>poHTLiU^uNOP^sSPceC#e>{Aiapc*!kaOWr)9S;5 z^M;}QL1%bJX&H-k;9O4rk+N1r?UP#mvtv;cU-(vYSlTd-JLSJ9eWJb?cTfBck@1&TQzNZt(`B9^?#L#K9siM_Qn|j+B%1$ z?I*EbZ8uJwG=a91n<9Ixp|20mL(YJ&10PkIS zN%;2b;N&PUBo>4|Tt9MdUSk67hOAdX8J)RVtXrKikM1Ak_giBkAf!v5mGIX^pIr}3 ztnvG-teW*gF`m+AOARe=v4-MS>SU(DfsZn8$+XXaTYX`3(ST>87T`lXEXdbhoyx#F+IV$0C+2}75s zl(uEa`)I1V)8;OTSq9&b^D$@m80Nc-$;;_l=5F#MteK}CRJY4mpYGBV)mM72VZ9s? z|8lf!ibN85mN*$dRJX4>hx1pzb9AqIjPi*;`n<6V+PZkR&I>Zn{+IO7JR8Cr#I1ZS z{x6N=P26wm(#HIV9>=?(P1eOki%;94E3lKFeNg?k^jp(V+I$|f{gys8zBYP}47bnx zhC3i!+R~>EL)$gbHbQu5zfapBw3YwILG`Ba|Eq6sI|ATu)IxGHWv~Z*6rp&dT_aQqH+w}&D3N{dMUJ7ePd8P1cqSnFo^k&`AQKZZ}?$yo-zIl{n?+25@r+)!EF5A}51 z?o+7?-CLsAoKHp0sJ@c%=Y2$z851LCu-4c(Hg>f2BQ9pG`a)=}f(wOr_CjYXYv&xn z`MWK4J@C))+D`AUoz>zSt^G-dE}nYM>Ge-5mJYyJ^B$D%}Q<=tKn z${zI|7iZL5wC4=;5-&&3MI9F?bFmVI#Pl(}>ccYUP6sC+scR#3ZQ=bX{ zw7CZPe{)v+qG&lx#7>QKKRBCi<(+M^2Cs4H5A9ug?Ccu6dt|&cdJP_KPF?;FUZZR7 zO3&Lp+?;xZ_AZn5-r%=)?N!Kgjl3UE`gW;HTS)(`+iUxl+fDKF70bL!{2%kh_FKWn;m`F4)fFd_?&(58%``CjA)nn(7UgC~vh~Io3o}bs26MyqxJHNg0H=nk)oMHCWgY?@@;j3xrMD3U! zfVS*i^qcJY6G(q+nHM>3WPEvUWWVXV1|s(Sc>&rwhnowdxmT@2#&naRP4G0;V1M8p zfcyELxPx@Pzc3df?s$+jMC|b!@jE|V@_)qODd+p%8szE$)XJl?s4^1Pew3w)QdL46c%7FPdKk!x>f#1dm<>=fm;QclM`{>6;@zY_P@ zMEP~R3s2MiQ^@P?Be;yDsk%)IkuOGwB(cc~O z=Rx;ya{2AV?~IXs`#fmiBRrCZw$9%jRFyE2PIqOQnfJzL-;rxtTgodWN*3*HWcSK3^$6k9Ftt^B*3MV@xs95wgdy@oqfqSte+yAeLG zn9bZs^6qWEC%$Cr%IEu95*8mhnBk|}Oxp55+8FX}Bdry_l6K3SS|7Vv$4{)|=PsV@ z;hETw4IhMP_4h^W__6mVLskJ9ak;RwLR$oK(NkY^+1_LE23JVIx{&^e2H*;YgGP@zXUUHT~> zTvfb>@(mf^4^m%f4blEu(j%)_L-4xB>&VPKBpg{oqz%sTv^qo9-yBmuxQ<{*j;%ql z&1^89QAjIt?w2+k_y=~B1m%8@>^*EdwEULJ+m;o(Ke8oeP1*;(?Xdy%YnkiE4ZaAw zL1Wh1&|1ihlYSU;E&P`lP@k6azkZAIEQ}d?1Io*ojAe7&GGgH0w&ODVyk8K1Ki>T* zzA&zCJg9Hd>!apZ-8YpOsnKRc3^M$>A@YH_Z>1BOJ9xL~0_rjS@5^JMvjcjU*qfkY z6${w~7*E~)<;*YMPbzVU!;ht1&#Q)YA<|>f3SHxJ2Gsr1{?C~+@!K6s;jJFZH|O#W zRpIID+%t7(zWeL3+z0xJXxr8tZQD9V+nRaT>c4BF7up)ZwJmQz{Z`s0XYeRnhEJQ= za2LN7Z7nO%Tk`%_!8d%rYd(><<13?anY%#8f~(`?0d=G9H)#83bFwD>xoCXG@2`YK ztcQ2fz7w?VgtoP(4X8I{z4%+pThKPo-1Af)|LSlnvheF(Xd83pfZ|R#I|e@Q`)jCO zd#Yj&4#)dRijTPg|ERMDw7$-)*MvC4xB)4j1se^%)K^ZPE#!F*eH)l-+6LpxJF{Kd zKN;PxvvZ3nz7bq?@8;dGvX|-oT>F9|>BZlmoGi3dY}Umz?d;~gzlEddx47xIh`CfB zdp5MLLAUU033YXzH=ynuLHVB}DTa7LuM=b&w6mVP)x2xCUdAZc&Z^iwSYhJHT0R(STa2=cBo=SZ$W{ekc8=DeC z>f0QT-xFP*mR|+uVsMt-FreZmfb;QT)+oJi+csba`&jfMrFlSbN*lKQ<)FG~95`Qf zalXY}Rh>C;UX~ZNQ%jgqlyB2rz5dyvbGS2h6>%G%7G0ItMED48m8*!+J3X!1-beZc z?mj#0I?DOKAU@%oNZRzAqlx+xuzSDp7oWDaf?>}87ZSsGO#1wJ6;#Vu}05D?Iq%^E35&dKVbg}u+VDl5)7E&s}73=Oz1~qmqQFuCOTu04c7fp| zur~n{eAQv^0VecShm8eH=&KIP22ALy4$B3spayIoV25hJ&H}ct2CN7$xih>vKK+lF zkGN;PIxGaRhXFBR2hGo1ljMg!2Ik4O3Vh)j|6E_gcVS|xzW z{&wHp15G`omtoj)-Qh40Y1?9~!Gr&iw7)@G*LjZTeG?Ep6KR(q?RH5E4gFua%jqI; zL}5NAh`a+K(%bpUwuq8CbOcXYgs^^aqMJ6zpl(-VEO9E{^XWOJg;647T|U)#yY-r< z4dZM2vc2E%w(&kd{axV4N6OuTatEPYX*>Ow->=+Yq!s&5`$~L2_TcmT6Zi%2?G}77 z-tob+#8VI0O$FZ}d@EoR^OJn{KESVwzE^>--yhxhZUAod@5All4W9$;om+`-vj^Y6 zKSO>AE3SI)balImc+I;lD$iCw2jl=POOWp@@;xDh8TO;sVLo!*F(q?jAL1V%eyQ{` zXnaJbgglQk`M;2fii3Am=GI=mzj)Zk2HB-wLf(VygL(TmglpEhHacZ4q$1w}@h-B}0ytb}B&JWW@cbD(*$J zQxclfVw?+&Lwpj-9EWz&H)K?=n{gfy2jGMgfk^i~WmOM&RhzqW5+6EAjPZf8h5_&U z4T@d%jX(Y~c-K|ot$7)mv{Ck7uwFI%=h{f-WiawRK)#a*>*W*Ny4Eu=`3!gIu#l+Z z5!VsvawCgfzBMIC=NaEdd#Ia0o{NDQGPv;cfyk5AsMz^iSr-nw@{E@|JlyYihQi`L zYw9oZylJtsRLc3emwLh*v}QeDLZ0`c-SvF>U$3XM*<1ey zejZ!wyoYe@^Hbgj`cOMPa;Krp^&-%f+N{|5wT$7N#M7wJ3HTl>W>DK8%6tw#gc@NRsH;hCeBI3i`GB?v2sjsX#XwINxvS#`(J+2IqC) ztZ41VnfUMHlyTMZeT=`~-Elr8Z5iys>9(a{{JZZdg2i3E>>62Bw(?rmzYCuAFSX`5 z`5f$_w?UbD{y6-?hXCI+Fxb*I#m*T5Fy481!7nFG4OfDdo5?rwCUbOWtS~E=^t2ko+|!9 z&L?C5SLu(7oo3YaJL~zH@ty)N^V+o+a2B}oo-Q`-7Wp2yRPQ{(b>~TJ8uY*R#m;?h z{_ExsHEf-3JJ@ULJg@8qJCM?!gMe#bN9bT;>-4m}H$Unm@vCp{oiJk$|4pFS1$^;c zik&^B&Aj3B*k|PMU!PiN)7pD4$JjR&y5B-MA&JG#Oc^&V#<>0NP-p5TZV;trI z-&;v&Q^Dt3iO<`f#`CT-Q?F?j@2;Oc4SnX&VCYCai=9|fAAQg3E0w&&^`2K*lO7;_ zyX0cm-Hm8BFE-?Ob&zXCs^WWi#s9;qo=eY59)h_KT>tJ_4xwu@aHT#|{BQ5g2(F93 z_2#qR8`om5W5azW@Ux{`^Y+pv76(4Oc^?MFz5?`KtCBigdz*+ z-;BmD_$R(6QPv^IvF{+Pe*rl9XDp88#LK0a?mHAC5htH&JbP53hiAuE-jgf5y&uY` zhkt#ktBf>++YN1IYTj1vH4g z?WaQ90MGzExB57QEMxdf{<_966k$}_Z+Q6D*vm?@p{#h3`6aA}EZl5B<-dW=;joS{BuW3VM5@KhjhU`sEH1>6s$eJFGSR-+A# zc_DP31kRZQV0)6WIp8~S_LO(~cl7Q{iCr&Od&Z6czx`>k^E09ISGC|Y+S91JaUsbq z8Ssy`r=bf8o$mu@)L&tv!C=&#l{jm)<)_%QbuHZoI3JarYa2i7PI|^qc5Qw_y#j7K z$4H-!am@jtEo3Bk^Y}ZiGdz=AbF2FN_UH-jv5h;celKJD(S9-ZF5-YwKGpb5Xf@h0 zYNM?k=4To5=_xMSL{7{FZHHbfcAkeZO&<(i>P1e}A}p=&x-B>`^|Oh@D2*Np1U2_F{O|N+O4K)0Gr5p#kvtoj$9HIMdlv4`WdqF6t zpc>uqz3N@%NWMlFdf`E&tF0onvygBF-`l{~Zk`99(7grtPG;P3ZnXp7ty<{z$S?4D z*0sOsf$5zD+R)S^Jy!HZ^1@ zFXQL*F%NCowVj)p3EGUau6CDBAnjHP+GehRZ%Q4|CO4;J-FWO-gB-K=n%(QXGx&oS z+B#LEEvL438h6DV6n~L<_cIr5($D?SjXC*u9=iKv0fzpw*|0w}LfVcG=^WnVUbLmJ zHm0sudaL#kD}b|NN3rus;gOp&y!VfX@4`n>)&Ag}M;iSj>+!Ro{mR~AmyLa=3upE9 z7{Z_H-SJ-hPbL3Y$-l4IsHIK@k9PZnq^jG{ zN{{aN!+a+%GkG+^bthO`44Jrt#m@FJemYc^Q!C##+HS7dYkySj6{iE|zHN7$0m9Qx zRO0mbrq+-Tfzzbz^Y@Cgw)wL3h-bcBtj#|;24gZ=#zZ~W9z`npB??2X z3HamZa*93QqJ;(gQ?%Kt(UxD^d+krauX~ipT0JL&Di@y-b4Wn5+s<+;;BNqK(DoP^ ztiYlLh(CNS>#~=*{QJY6b}OijwtU#@k3qlHH@j#H0DX}#`z4(%cD@R@d<51Ou#9uX z&I<+v`(*e}2JF@IkS!z~Y?#&U?}mL6^KhssS=8A9iak?#1I~|0_9gh{;B~SY%4?4p zWm1ecK)ecc3xK=mLb3B5=!w!c)n5Ul^@AWKRw7)hj%y;|3F&_5>Z`t0>qBN`Dx*F+ zhALeycJ_7G@l8C20QT&aV&}`?ZLar-7<#EUeg7FbU%o-H7b*jBb6!vTb$p9ZsRHFq zZ(>f8>&+HGD{YyEa+0nUJO3c%;FFKmGR=x8hWt+sIa)Lo@yj z&6sS@L&^Ed|DtKNzbSyG0@~9JeOA0p{};e_089cf2}u*}`|w|YZy~-HL3FnAbELt& zW{)Q7RxMGAx0+SHmv^R+jV+($w~C#wK-T=uxrX*LF5rGt?m{o#bvJAh8a4?H+t+B= zLgjVPTM2s}u%95Ez$!aHVCw$>_)4{e(kqk;lG=j4x4$ZO{$AFulX$?ms?O&jmkXcI zQPiKJt^R}&+yQ*BIn)?SZ{ zC31g1v>UF}xrjmKYW4pE5T1Adr&ep@XQhqbk+kntYviu>3Z<((4TC5hI5P0fG%m_Z z#D#g7?`l_j9=`dibjI%_^GDS(Cn9qqGIvGhuE^XKnY%)}sm$CBnK5*Y%)PyhLeKn? zad;7|epp4Z^SF$|$J1D<^e5V?rwT;79P@_l2;dlVOj>9dWZ`T9ZtYjR% z21W-Oy^q6Re9v*%?>{~cQ_+-zutbdg7X021bZ;N;y=|+@UXYF7_kKRa(0PRyj-3L3 z0^bs6KEm=5ST)?%U4Qe#Jc-C9!x_qD(0_ZYu1_{{P)_r41IK+@hco*Pb$-1(pZc@;V-v(02&1w}MNY zrtco>24|a$s#bC_spcL%+;OQP?qH4;~Amn3mf3;FMs8;l~ipxi>pO@@uj?E@-p za}w~^o-TRFN9;OauL36d)+lob-^F6-PkSd+ckz_^$K$&VdO&yl>q}hq7x-9g zf+ok@b_#vs(~O%FjI;{?&q*wCy|<^j&v>L9-4c1%@EOO(sVg`L*$a{90rE5w=Joh@ zu%*}&;Meb^W_VrnFTBCKSH7F=p_;kcRqBx2wZ!=pc(eWq6!aSHT7y5!IhB{i#Q12t zy7uPJ0^hEuN}Rr;Gp((}=h0IQpXTc8Oq!}a<=uu?n|-l=zNfF!YV&*Ri!t;|G^O4j zG~gq;{(D*Q$Ln6=KC9}Yt@_&iUABTe$=?HfQ|3XF%KTnz1#-R%T%>9b3KkHVFBQn2 z*S^Gg0{k9tSar9xao*k|*BQ0~<2_h#sMoYW?`>nqmvK@te5#G(r?-3BCZjgn{Y=c| zNaWL}!YGAL2)-}P!g>^id!+<`vHTmuL&?QE2O%yJ^{yjv_(=M6z~TUFDu5byNG(8I z0^(%8h@Et(`VRw}%%gn74MJSBjB|sB8~YsawHc}#i`)Z9!>*YDpQc1#$y16v1ACS@ z@lJp5c}gG7lZ<4sv$1|8msI($JR);cAA|XddIVz{pc>}=M1xlh0gl(H5#VvcUt;kM z0FQ5mf87LJ_(BeU_tW3HW~2Rx&9iSrq$gR#G6%rVTUs`gHh{k7^-OdNS+K160i{_0cW z%s^Q3KIE_Xri=SxU>R$hq)$b9z3=x=pN8~rB7HvcK7xN@6@G(vB_T;pHpVZ~e~Lbp z^y9H7TKTRU47RF!G%s3=*Eq`ne8lg}f_A6?p0O{MI8TPT@VLjbVPi;^b1BAncJBk> zy+%t^dqtg8ds=XkJv}(lo`G*>@bmWU;8*NLbzVf=bBKe^7Tg1IJrS3LINXp9SPuU4 z@XZf?8EMr$Nc>wQ?t}kC0Q%$qO+2T#pMU0cHAwb-AMsL1cN79vh5|A{M0Rjr;CSIN zaeqc!3i3TuEnj!!`x)|qHKF?YJjja!OPn9O$4B+H@W=t~wn)%Yy~_cvvuUZoRr>o9 z=U6u`_uWuv*XsA2YR?15LmeXwSk{ybT8m!m6ZHlsqpIFO!Y;e!XPsUz#zka zJ}&eHikJ|@{-hf5{Q1~L+YQni-NtQC1BuKQi^Eb}7@umZp;&%CKHl z!E@x4=5QI2;Gk8W)jgmx3IMzo;}AU3xF2XBaJ{*y#EJJ<8Fp3o+K0PB-S#WAn0g9x zV<+UDJ;-_pc@Mkpo?MQ+?KYPENKyFDJXHB1H!YcMK1w1 z7O-f9<$ks2QU6yF90>RVz~8LRcHyDdH~@JSwsNppm?Sb`7Ryl7RIlvO*e?-U3V=WN zgnKQfr_{drx4_Gc> zO$C6vwBgiVwJ-fF;`SjfP~z|r9IpX(5->I(uJJSoumZqF%fK^uR1IC%XahsnO|f4L zRF8YDvg@7C`M?!?0XlqbxD5H%tvBaIK5M_&Qm#$&qHnnH1uOx+8~+TxCXdDUn&2ye zZZC~t)YYTA)X;@6K6RHJ{844d*rR1A77qyh>a%uB-<=qqLqRK=fwmw`rcbH!kJ9&sTO&^J+4@^Zg-ZvnYXgwzbpr*meJI%k^0FJ^ zU2c(eUHa{0Z_Lr_vRzsdstakeQ`zh5=u8=ThfkVO9n{ zqaX2RmT_`7ll%T?H$OYP?ZpHbiE9=<2SLtj7d``X6Y1*vcF3bfz;Qm4HNUkw?_(|!=FRjr2de7(nEuFAwcFl(0;=fC1-{ozcb!+ofZ!P~DPG2l(Z7M-$6rMMaK z?5=aNEQ%g{9vQ-zn+6YrkD;cu@owL&qOTwDr9O4ndA>@L_~u*;QDN{(9GWL3kwkbsU&j<=NeyvcHRQT&0Os z8P~e`CLno84&?7g zNWI@vWcXCi@GkUK;Y(Tz`|ODy4&P+p%Rm3a;9GzyUJ?3k-gPdt;lbeV-t-OQJw?yk zGlI0Ouu=pi+p~kv`S|7py&=$FpqYbuxS?=k2zpwD1|sjUK?k)RVQ_7Z$^B0*=Q;a(L9It?gFhyosqTE`6lR$1f5k_Kxd?z&bI3?zO}ONNoTl0XE^8#2c7ulgoDm-gU)c!X+S|| zIOq&F=nMy)RZyWb{PA>#gU+h-pi`FJ1boke&dh)^=hJTfKOP3Dhis*|(@13GfftOJqj;g1#gJ#f_XjzjqJo4}C~g!cL_IxL33Eo`~E&DNM_!t<8{PiCF6hxV}Z z0b2lAN5qqRZ@{&O{p-r@Kx41yI?`=Hx^AMle-}@O0d1i7_w5+Io>J7?_;%cYb*NpL z^OvGKqU`E>B8FVz@l(@AfrrFnL#+BzmgxJgH{j2`txQtCduZF|rH1GVor?CH5@zpotr$?FdGU#>T^XSpWUO;vEHzPpZ z=(bkAgnulS0qRAs`c4)8H-SIn`7-C<^-BC6{tG$Gt>0DF-$(nUcY3?~4zOqXz;y2; zYoHID!=U#|d+Y-KoIYjFVR&|p?OJUt;+d(%c$bfjc~%4z!JEL}UM+L_SJ@Oj^wyB0 z;9V*5PmK0U)t(mvr?!{@_I)wk?FBKv2ei8zrj9lONY)%;P7JKnF~4y`)In~*ukjB- zBSszJ2K>qm(1z4z3ecjY&_2KhpDz@i6O-zG?pv9+p_KO=QvA6Rva^zcN(f|R)Y-Bb z^3m_hoc}9h;Jf&P)LCSfq7*IHWUokp)#MpC`#pof@Jv^GCjPVWzvLOnFwelGor3*q zFZ#Nnf90UKVJMsaQs#7sk?{MLou8t$hD|o5hrJ+0g?n8Jq`nlGZ1F9^w;}~L^k@FZ zo}Yp@J$os|kL-Ur$XQvQVOaCS_28_8b)PJz7*7(CSRy^b=9QeYi2>iLo{y#_Md zZ2=GbTbc8)@N|P_?88-m&%H4Rd%Dl9s%O0tfn$T+YKf3>JriXV{=Llkeih$%%s9-j zYQOgGNCAz(#jkGzpJhmybBh;z2ETroZ>VD+@BS3>E@qp{_PhhcB25jA1Tuahqy@uF z4VGXerAUuTtJ?7~bsVUz^3EDu z=e-XBSNg~@!-vW1I5O&I@N%4khIhD^aUl!bAkY=E4f<4ine!(PkI5SPf*V(w@}50i zNr48Cg8E}4N9irsx?@k-O9^PMVH%RZfaHDL$)87Z7ca{|xw+%YoWJwZN00EHjQU!y z@96W3z;`mE%(>hPzJIUJ_j&E})a~G(lWX*Oy@&gJ5Yl8Ljc4vWw$E!>zFd8t4_r}G zF-N?NAESPr^&5Tu+o~QxN1{+Hp4gZYLyPpeUp~g`wEupe4@0>LGrw=22YqLsp9H?w z=KS~iJZT5|b6$-;4}7@K-$I(W`9Dmb=K@#Gf`7lyW!EWA6yL3>VoBoI9p|)GUO_eUAG|rOUuig{Z&_f_xsTd-=`PA zX|=sr>n&LQE!Z=*bQ9i-?K(jOKS9GA%Efc^o!FOLS>|jZJi;SS8unC!=NNp`IBy2D z{@PXVJf})e=?8qNtIMkPkmG>%Ex`QNlsUuPbsejw$a!?wsE6w6CHT2u4XyN}8Hn_m zNdExoJBC!!1lyf=8wI2cKlP+N&kv_B{QBb`l8~P^jS>1eAlSOe^MhpNSDOQ;q0>m2 ze!I{g2mZTdrlHKqm;SqDmZHqp?*I476m{jT-I)JD<<4)U{~s^oiE~?jdvaHMYNGum zyevG){ubWbBW`DZs$$>O)yQPu6tAfVcuk#z_jh=~{em|jNR@dOg?+Dqb;_NuxaXPM zj)2Yb>Ut-HMT>EdpU6km^><^wz6LyR15bM0a;M3J2VQGi34w0Br%vXd7Ps(A>KMSP@{j)66J$tl0bA?^se#Jv{ebMUvpXz~d-) zzAO6F)I)Mgb)7mvd&9f_`i!p@uZx4lp~FXxq93ZC7=e8fsF$Fe zxJl*CcXT|wEw)d{L+(2+vEI1-ezjcX;kCzgR0DUzdfs2BC8+L_40GuS9;=Vj#!FL4 zdj=fF`Z2BCc~sU4!=8-xkuy;Pwe_G~Bu7Jcmvylt(iUcxJKqzz(OX-3>aG<+W|W2T z;e{J}Wym@VcmigYJL}7Q^Nd#{9j8CiC&s$iM(gjrUyL~hEXKNhR_I$;?(}a`iPzKD zHFQHbQa(ywrQJB{2=tqM<;J^l1-GoT?Esqzm~^{*1okXonKjbA2H4~put9)j05(n9 z7$3=-4w&PBrwkdZGXV<$Y*SUc7&5Rik6}u8+fChjmZ{okc_jdvyhbY zB||c9P&wPAEYx|aiFW9mZ=%V}8%#8xdB2H{vj)g;Qy|i0nUMUviC39vthpL8XV#CD zI4LtzHh)P28BoI%9jdH)U~f9{WhI( zsOXZn^nXHhrowZ~O0L37%&0N|ADj7#nM&M^>cQVs2_Gf&ZBo>|x|S{Y9_T!sX^FcT zjige)FuAaHzQWsBSt@a7nM;_4NRN5?9OLURjN`Z;3r?ZGyVCBK&^w$t&ri7~j7}ILO)(^({A|jd>d`GA@Zt?2iqybjv%ml=$9k|kfM*9Qp9S!gVC}5D{5~U?&ji!nVE#5(yB7?=(z?8*E*+GYyj3D} z_rIe*J2mZu!X+AyQu%X@m+QP)rvp-yO3L5dtrR=T7_3$qF1sZTBe&jig?FlSUU`{l zqsoU=x+~KaF@6}EJDEOLcmo?_J;ntO`B-`@P3H$bbV}zUAG*tXm2_VtO$S$+PMZ`y zV5Q3n=UZs5#v3g3p~llJbVB3t78q9)_AdnPHQ~dLSu9; zG0T)fr+uyqd>wzNUbfQoN(%mwt8^tAsYWfb(-pND=AUL;Wv9bh9N36%J8!3rdK<7f z-FDMX%NW7iZ2Q1YStbO}nQYm1Fes$mZ??^_Q-uWAS!`E;%o2|=YPGGi(@87RPW7?v zu+wfI1V{SXHrr{v?-DG=(g@$b6>oWMgl5m9J8miScsQuF@I4z1^Of*)Uk0UXeEBmQ z&GzFjY)0R`>gqdg%>^zVALIh8P>NI@(TJ{rvqsWX<};0GttAPN#n!%y8_`i8p4f=) z__WJH*tc&^BN}YuQxP=BX1fqUmu-@FsGYAz&`di&Xh3W1JiH+tv~zw#Dh%KqkyIMU zt0J+z&IclCQXSskkhawk$nap!i=<6;1^=nK0zX|(@GPp&XCvvHL()u(h(K9;BP30E z0~f`G0g)J-rttL=|tZ?B`N2(mo&pWNVRTs;H91D zeg}b1?}%C~>?o8h?Ii%0d-PQkZn*a_Y>AP=XWj*q2W$$`=q76dLS_ z78?4!%d_gzR9q3Yqb|)f@$kB|+{&x!(heW~psuihyt;JCmmdVvKHFaryTG3p)uo*Q z0zVV*#DTiBJ?NZdE)JH=YwDpm;Qd(bkHAoczl|ZRAS+_%jKW3HkofpYG%Z*8(`Y)Z z@=-uk{veuWYCJre4ru(KDPgtGiK6K`-)TadbiUezuIqfZ35{YdXhLh4w>G8|%&QyI z1Bh#lX_kp+Hl~9nPH#fDF=rdo3^RYwgf^QwqcPnu^XY~(+QPdUQl5oZfk#-ls40!K z^6I9v#L5es(kUy?Y)a);&S**tefU@u?eXE=QB>-~TcT)+FMkw6JAHX0e*N;4BQerX zaO}QpXN1%Ic~UG@1PqagF+sc}maYd)mWOd*PYo$Q*m$^Fmvdt&zuqE=DX-6?V`)jq zm-4VUjOWBsVOW}qhZ_#Q8$+29MzW&~cxx<;YUn^jNhBKdyZRe4?pR?iYZczEDW@ff zZr`UV=QSRx)3;b6b($zk`y%;q4`653@0DLoHt`Jy?KJWI29#;$FB{MzGhb>zTg=h$ ziO;a`wgz;?dR1N1fKJ*NpdEo+9q9?NjRrD=zO?D-wfws z2VD{Iwrb8em1b|^c|4Y0n}`6XZM0kC!#0}5e8EOrz}B!FnYNkn@SXKOt0>2mWT+l= zS>>hiG#SGtp0?_|qK&f5q^^snt7e|tMyhc-p5|C3yw%Ew&JK7(AR#M z%DFc5z@Lw`p&>zx@a`bq5lZU3@ zMpf3yu$iOs0+rTQOZ8o2?>l%+R=SF!7bu&;M?6DcIe2t0x)#9*KZxK(DfDRr3EyeJ zGg9bOLkZt*$m3J!SfqqMkK`dKbf}SpFE!$_UbMHdgwHkRo4x3xCK4`e!e6G))+h;| zh~i5rw63Xy4>sjfDU=&6;RDfpAcbbc_B-E;rZ;E&ZfnlRdns3%tJ_kPku3~J%i+qJ z6e??_-cO-XPw<{zw5Q!NWoj?_rajN=MTa{79iXx$nkenO(& zr@KM!0!4(vnJO=jqY?U(1#vW%ol0IDtu&WwMJ;Hejqw1jWmg<-IOFU%stDxCaa3HN z)8lAJ2p6`X4H0}cj^;)(a&M00D=nxnk{`67>ydn@1)Ygv;JF(mcpgMauJoq43ecU1 zek#8O&5U_6w*_5_X|<#U&5yOsM3K$rD2Uk7oHJU`q2@fSg+cHiK_>`*Sa_8-&w5Vj z+7yvVyj)fKaDl3&D^0ek%5H`CstRJpI z)0vg1JoPdl@9|lkj!BP9R)y={kf}6J<7}NyX?#gnz=jdttHS{eBGeeJ8U_YU-Hd*{ zpzv*`F)9w#fUyl`+M@Ag7DLE-863QV>4J1D6mCQ=;SQ(}^KzI+sw>sbtY%8&yGRD3 zO^K#V(fB3?i;xW(aEZl+>SH4-Q&Yy_E(rdzC9P5UKucMJx3#2$FfX*EJmy6$>5z%n zx1ujiysVWl)=jNxjD=UWrezkM*P2FHd1`CAWaZJVX`2s!+loH$l{6cCxwsV_@#Sl+ zXoM{qkli*u(uy|O`J+~p>;D`e_X7m;+CaV#Pe%j!M7#(+d*f+B9f9ww!<*xAH7{Rk zNgIRtR7+Y=m&e3YZhgKPN83X9d>l;;<>PU*Hng%!KPg~Qj#(cCjO>ZLbolSUWYr24N9L^1L|uq$y90qovV2 zI*umANctl&{A~-m8N(x5(Uw@g-;zF$J**(&RC5N2<<0ve{8bAHSMdk%X~%QuwnClf zTIsgVnO6E%=Ytm7!92!Xnb4VaNKtkw_m#iH+@kTk2->g70u0@FY6M->_>2Pz3m< z$Q!7bAjz)ua~I;`-S&7y4q)6)_6~zROLD&mBb$-uU$#H~AO=QIV=GiPsT<6+!YoUO zkQX4ek@|dJ+hZH0*(`+@>hzJqqjfs0@L-q_m8WOwbVB7xx^hHohVW;?)GGTfQF;1D zCjT51MHe%(-UTtUmdGA^C?)Gt*rSra)yIGa#^?0W#6t*@FW%&ws`y=~_ok zVBy16qoSgQp~3;bck)F${RdSSBew~egdPpuI!STFjNmj5OObCTIW@)ozOXtwPnnAm`1r* z0~hH+r|%)<4j%3BKl`Mp9hiL=zNRwum zZI_sMg^9L2j2?LY1GZKe9A&t+|J&%_r@+8GmHH)$U{)PqLF!&89kSNNUw$t%2& zX@Md#*?N_?GF71InNI7`2v1-MOLE}=LfZmG$y7QdlJFF~Mgg|>z0p|45sM{tOf>CN zd1wsHfCWC9Ac<{`Ru-DnX;6vHoE1Y~nt4?;-L*(~td&ceDl4o!Ax5;6`O&o5&gIdx zBA72kQ(-WF-jr?z^Q~w)6Jf+Q68I>QXl69!Pn*)BrUG8mRFG{k!mf$w9(xYx-`IVz z@Yfb4*UB5MwBCn5_o2D+GB$Tg(GTC6qVP=z?NPbRL1h}BchDi0@Gw)~6%JYq^~yn? znR!lxGTh4P4q9)QG@JaF>$@FvBA7Qi=&N9!6hWgyK2`AWX&58o>o6V}LB-*c_SHK>O9ib^X`H2lWhu5@)rx=NPiIzzqZSI`;}dCt+i9S zi5J6`Yv#*#`oheg*lCNE586do+HR-KK9c6NPdlVPAFoIL+s%Qqb~f!cIz`v@oKj`%9oA&*tza3A7g&ov{RkhklPd>{xSh6|rJ9$F z@K@lp9^Mdr#(jagoP(yN5%+)mkqUJA4Af7WaV-j9k%i<8;$Z2$V?wGRW0@r zQ`M&i_Wgt&M`kKMt30X}Hi>$%;`2$lA8?cy^BkFs7gJabLO*yRQ!|Q+bmw zomP3YFWpqzuk@u{C?me2!=CpgNG(%+X{x?TMZ`GEZFP@phwvTO7^tyD<0DqFt4j09 z56N>A^hAJvX`9goTZ#RTKS_hNcH7#}A&p10rYqWWWlz#Boy+1O^7Whe1YI!2&S*;$ z%zUji7Oc*Do)jK@pcM_b^jp-Himb7V+Q^{)vK8g|ym$Udn&TJyWg9x`$Fp10=YH>f z`ve`a$9~(IzJ=YlHBI$@Z{?HpO+f6*cv=z2=i_O2;ACa?6LdK!8ii%mi3ZXWb)tc2 zOmH+Z?+lJch9PwsX(rU=J@K@-Zod&vP(l3x*Pg&0M(9Ln#G#DJq=yYS9#6Nzq7gek zJO&l}G&}}rCOKjNzw4-fsufL+;PGu~d4ywp8~Qwgk32yW8}Oo5w5&l?F>p4lUkvrJ zA)k4IMn*c$w5E?DdDD|(RM`}di*0T9+t9+s_3yV59rosvbhfeMW<1Sq!t0-)qxeOI zn?y~0lEyWyKQ*3~!-NL=XH&;EXztNGq%Ez%ZyT7?Y#%*AH>0IS3uEek1dTX`=K)(x zgL(0^HkL27q1*UHu4b`o+E7mO`fFOz(dNAD3HrRbV_9q3(t<}nNk#aLr}Q}6fi|=( zZnrdIX-h^U-fPKdxNloB8gXbVM)Re&Vl>LQR*c4-*ox6K)9@QlGg~nlNSMfPTm$I7 z4($XIxXM?1z-SY7I05{i!Hxv63Qy@tC-f&q^`z;{hkMW}j#}D-hM4Q0?m_d-ysigr zG3;RUNuZ^E zd?$gn`#nFr8z^jorFz#vs z?F~#moj^N+ntjuQN-;Tm(C9jU+R=mV1UI|eQ_LLWlCjbG*K<8-e*I=&bf;7G`LphH zyZ-+SPNvnNp`(&$VHgkYN{1X#h4t3n74MP5ltNXyHidSf83oeM)3#TXi7BC>PGp| zJSB-H#_+M8l-4Y2dNM6*-rz=0I^LWYCe!uiad*1W;ugu@bfY`Ic2ShT&3i%_?c`yOqyaSxw&HuS~Q{%~!9P2>RMSGwtQ^%BN=f z%p?yxMF#>|VWLF6%qui87%$N1s>6W=8A`b`tTePxr0rs+K14E_+a z5-CkQ#7t97jPL>@Tq*m6Dgolr0{^V>sGD-CD*~Kjx8%2_ohFK*HR%CSQlkejn#;hSG%2)Uv(+4USF&0_QFo~xZ!qfP<=_V-#u?40l z+->p~<@c{IL8X>ze9@n#=%QbZXU_4bIVLW((+M~-`4hD0G=Et$uNz|1Sv%bTDgJcd z(qRi^G;8Q>f7v%a>93&W$NJMX8v{Pg&VX;X3pO})0RD+xa8|Ym5$Ba(^Wrf2J#P;aQ4qn4Drbd3QR7viwAaMb zLdE!ki@G4+T?(Pi7Cse1X^?BfXq*p^38k-nC49|~4~9{hA5RFQ8Fqo}wezh|*={Qj zrO^RAKa}PK@LHq^l-SRLcxV{i3F6J6biIy1py2KerOUy5B9sd23S=kTDMIN)JuV5M z=^;YN!jM2vvegK~sR9(bs*L*J{FlhSV-%jERYIknkK5Dx7x#K0pLau1Unsn^9=718 zYDenPB%kCn^=LNsx$B82GpinbU01>*>q(+X^%!YnX*CQlPHYeS85kC-yrK)Cd8a49 zDTSwWp(TD2-s#6Hxp`AZVkk#&s1R4>@A0*N@fqXB4R@C8*T_6NW z%Hwr;R2MoC%5%HWhYo?SjS%?Jh?cv%(u4+~=YX@pbOjHCBSXJQq%D#45WX52IvtF> z5hI+_h(~p${6;*u8)Y=*8(nE;(_i21O5>t=cNZ#;7RZ>G50qnFXjN?Nv95G8mZx;3 z51TO{TbuF5u5`E=-$|s4&3Rlm8rnkYG^a(&xn1c(i{NuzC@XHdf``2=g9j(jH!bTS zyr@<1xCHv76(d~Sif?qGAz0qJ(1bSpaROzvd1-$FO?iU1CeVZ@c?T-qR>H+U;&q8M ztevEp)$VUg6KTcMv9l8C`qO+mk!H7NKyupi;Y7-B&sP&^417@%X?+J?m_U;|zXA*u zouzSxb&&>_o)K>g{GV6)idi3=W;QG=su=oVt0@bk<9f`^Fxe(L9|li0M!1mqIA#im z?g^s}rXYmRnnE{)VedZx;mzjIm0?tF4n!D!kn_T5n?=%}vhY;Q7YnZmr`=Y8oVM0k z6fT0%m*KR`hY^M*bSfOa6EK4#P&^1_q>-x1X>I)1*vWhRT&dcd_P+lO ztb^W?`S#F0I5t&l+Xw%fG6ij~u-xd{)!j({?RSK1#0=`M%>(S!gmL3iJ950Wi$z};}H;WI-8jJX- zY_@WKES35(-Z(eU#%bcz^0QK;^ylnoaY5P=L&F0(Cx-F^c|i<~s>7Kv;(a$0dFyaS zEEU(`VX-tanD@cECs^R{#4Cu#wI94InwEudMGOrK<=ZhdG@LKS(4p|*+DSY#l!u&# zoEJ@>HRQ9=G_TQk75TPDNsdENQu60f?I%amhfT#F2s>y+O^q)9i`-m?zHgg|O2Vjm z+A3DSJ63EZ@Kq~)X!hR$lLI7pD`i_^5Qfj$VJqcWC5?=omyi$tmEXWT>Ee4zfwrH; z0%An^m8v7Pui3SQip1@)e2z4W!_2oPg0DE1dtF>!v3I@_+pm(Vgn5sdMw@u6S!~C- z@ESC&a*-PQ8sf)je4ODfcMvdm6`q2>9}LoFIs)Ug_^BJ4`A((&C)l4=2|n64Rr*$8 z80a^vIKT`d!o|J_iDj-zGqG8vic{54m2N1A#<<1!7Wbg;d_+|)!NXUTfmx}ROaA&W z->x=tEl~-+vy)U*+m#n%{{N761;hqjfw2FAy8B!0Cn&YCYPz~@H434zkeggdyM`27)11dBRsg@MGgD+(eRANp8Y2p zE=m(G`N>+xuQdhL8qC^Woe$~smCmDC_#rkGr3cY5?tPsfV*lQ$M2cAWGJnD}NBPAK zmW@hCFk3kc;cr-kZ1^2?gCTpERY4qFZ%nYj(_Ps~nQi7`i!wq?^7MuHPfoM)XI5G( z&9T?Y-&nQzK8!u5uSDvrBpmJ2#85e|E4)Uf11f*3(Pt{()##3jR-sjzyt@v`Mr#m9 zD_YP(g}-VcZuV)h7)M+lBhGoZF%7lDDxz1KOh%!cQxRz7)Ziqs72+r#UTb zz}K7825i{J(y<0JC3;9CZ-FmJBXDE0#`yr?#MP8c7M6jd@B7+S8cF zwxH9Ed1wo|)tK)$r;5gn5WA`gUu#C^n((=1RMdn|HWMCvuo+Eg%BXX8Q$|~0_XH`i zlfOESMn?0JIGPd7bK+=uwCwF~j+R&`$!MM3(UJ?!Mrfm>(Tp}aX~dq67Ch&TaIp+p zbjLb%9!#831b_6cQ6iS*Mv0T=hf(69wJ=I_IK+NoJ|KSwY&<%O?&E|*6pgoYMH9-l z^Q0)svA02Nxm}q2Vt?6k+T<^6|B%0I{>%$73JBmC(ewq3gVB^0$j75-Vjv%iqK$#? zBX3&pPz8T*uALJ_`|I+p#|w}O{*{4R;%jEp4Lb8`AQU> ztk0iD(X`NCN}8~Zg6NQg??=-E2j7XN2@$d!&5e+qsjU%0OJM}hj-hneCt@h8fh<8Q z8pw{=mIh~4M6YZl9+&4EiO1!gMzRJCZOn^fXkTN=T++nVa_|09y&gchs=6qUK392S zAmJPg+~amK?+S#qxh29oOk5C1w{RXPkiIqXr#Kj5=A*FXS|sHWEAO$>DxVfeU*yBM zpE}!@KeW+WU!DhdL|;A|AU;os&9kG-PhDPRrKb0wbqCYK#vrK=G z^Ypg<@VXeST_?%?+&niI%FU!s+PgUb8U{vf`El7mAK&a4|T zzQ4@81%2rry6#2FhVt>E>@t+&w?1zlKp%wg+5xmROu{q6<=1Kao_0uhON9JRZ6Lpy z4GUBhzZES$fJ&S2NBt;0ir4p}Z=3SL7im-s9~?lR$M7cu=-U{+HGn3>a@LEqF_vfa zr<@j?^%Cu9!E5@{trk3V08NkQOa174JeT#OnNLV~%9HDr?Jv@`A5T+J9LzN+p`rsX zevt}0@!A(@YZo5UpSCASX@%Xnd;rbv!HfFS{hqw|CCX3cwJ*`B6hvhqmsMu%$2E>?8Px^p(6b`U*BMLswtIrvY0Bgi|WmBNkmB zXUSG!5r+-HaD7|s$0dGr%ugV$OwO!yU2$r?WEq3O%rhPC6(6e zd1_Irc+y@;rQH@TOr;w>oSTYs5c~k$jMpUgspC)DFz7)kXwub;9llymz+rsAT$v?ubAx~n&hh~g!wU{>1X ze)M_MU_gdN^PyB)5G~;y(R}d*`XZVUo*cs`U!bKiyzd3N8^cTb(t{Yz=u6|8@yx!o z4#H+%8qu69`p~52Pao<_lUjt#Or_!$eES9EU`t64tLt(M-qxJiho;8!?LJCjJYVcX z!`tx5KD4F{7xbe`ZFoT+%6x+Jdec`=aA|Kk@+4>XRu;77$-U`hTh2l3kGK@w|6^Xz zpBA>`eSIjW9bfM));&Oq+wt<=H0$Xu2w!@d)B4lRr#Z7ft!OXdg&p{8KU&d&ulJ*M z9e8YiTF_B)t?I~Ud((!FT+o}AbP~wMPJE>=9qh*Wsk9+U8tzsvX@?sryyXQt{|uv! zUp&XC0>zU^`T2iLC;Nps5B#^dGSye%HB7 zrxGKw*fhf-a-|A~NP2)>dR-bJQ>RUu1_;hzNqzqHbC&_IVHw_&cT`H3#zDnhuqi6v zQz^rM!8bbKeV(akt8o@gp`(%qR=7&JvtJ)0pHDbLcYvMFc#7B!-vM2A5+~}Er$};6&TLj^ekdug}+% z*+M&ILu|m3&MV}fwzqkJ4~t% zXVeU<)NdGcIpzwBau|m?taQ#C1MSKp;3|F{s95T981+N8Dj3@KH+aUG)#31s5{z@9 zqoJ*&Ki#QhEdG;zWL17#Xp+k&<+MoWI9rV10~2SMX^zaJN zOb<7cN$#YT<5Fx5;g$YoX=Vl1c|-Dt?r50kD~bN$e6s%EIok67(mC3T&ly}Ms8IPc zysO9QfzYOB8=ls}!o`Fw|84jU<3AA3GB%+fZ6JtmLqhC`zx8&|{Y3*%bZiHvR6Af2HoKA+h1j`Q0BDWN1 zk)rOwEHczEoxnE@h7y?kVLBOX;ZZ(f+DCYXwI0GkZZ{V)zxm2Sl$m43v2=k4w+Fm8 z?^Fmz{6iiV`@{gi|H6xOD8Rf|qy0Gct->R*MzVyb!Kh`Sl`Ig*YJg0EnI9)Njqn8%&$5WI3-E*HPDZ=_ zLK*NYVBG~p*GHCz-M%8UZSfUn{I$OHiH_PTaDrI|&jjX6KJ>K_hPHq-vv7LMhpt)! zkp`#wksk6o-ag{P)BLI!i}9WUSvTSBH`PLGV4$(mMCnVgz!6qa17NE-uZ!c$V$)e= zoJE0GH6m78xYR<0vSL@wcc+r2;H<#J2(W&h9f1QCyv-r!X#vT${<;{aTYcKCkDxT) z*H6KJ&NpF11U>MR^swR`aL{HOFEdWn-iOiD#%Chv3x7TmK@$S`qX=3P$k!rhV-R0* z(5)Z?Qis2E(81ss;295%&p{v56FleZ@frsWcSxEg4o2(*W8`LyRpD9wDoDoip9h;C z4u8aoy&*f6u$eYFR$4bbR!&m`z7Z$-VrYlP7o)`q{bV!_JO~^uv1-6(NI?bFP zBU=c$(C~0JFNO-O5lB;E<*a71TeBpFrup#97-&hnxEW3K zCs495kaxvu`vc#C5o35Ap3qD|9Ztm3zWRJC7G4&7A(p0v@Rb-j3or~eMh9oWqS+t@ zc`r8<%m*X6BAUu0#SC&dO6dFoHpysO9W6Co9~}yKHQAz~m(1G;#lI6;{fWtlfB>)O*Y>ve5UCvn*Oup_Mt;H{lR|C-#1E`?=S zN;=YSge_K(2vZap4q`|*!s*d;Xr>Dr z%8}P)4F$#eh7vm^@)e`FU(EqSjiPJJ_nXjm(*bp3W1Q*yOq8U2T06`aFb@XjKD7nj;M*UqwUS5Jg#$VyPMlOIj1LupvCFF(du3Ca#*zQo(nL zveh9Pyo5J$0z7{gnOY(Y-@m&KN;8WWFkZTG%s~gtJQ&WE7J=Wh@VE$?W$ijW0uH?; z3NnoM>vzsUBW?8&US}JC!>X(8brAm4K44)4ec~U2@Q8o`A4brSz@H$T9%Ne`L05tp z;jwl2D{PC^8KwYK7`$5WWz~xTF(>N%4B?&iV}S4L`Y|YBZOG37nI9U1qCX9d0q#j* zF@PKlivjMD;X>HfaKTz=gfE3NkbWK>49M5v;^&OxMaVnc;Sb1U2LtDHha9e*?O`c-l$zd}h^pZOSB#Z+K5XQ8p~aF0vJh58P!98LII5cXVgwz-Ry~gH zm^j-Zr|%zx(>ya5g%jMm3mn*|<6R)lhx1T%A6||ywxt@-L|@LuDI8x;i=a&ihtn}% zUJyZ3ZJZfFdDzI0fHO5`G!TEoEfI9l&NCZO3AXd$%I(kl;K1t7*U=gNeAYqR0>$_H zW6UB{H)w{6hoix^L*X>I?jd=&P@n%l_O1gys$%O;fJ-k+sP?57DVv^vWhntdT@6@J zzuk~55J_1#8wBgxd5Ri4ie+txUMkX?sa8>2O#6X*@NYV=_3A$A***F9yL%cd_flW&X++Hp zKeApC4ZWM>qw_e54kge!CfUWT7|5Omo*PKbfN=qBIMLyx0qXts#yw>2-pM$9psI2h zkwNOwWIlNQQL^#$0Cg7~KN>)Wc-OSNla@$(8#mC|@80gq2dJ7o3__mVXAu3qno9Wq zb=H2yD+9O^Eg7Vq+Ryl%SnOw9N_%2X<1@mY#v23Kkm}t5vGQE3U ze}4C-{swU)Ln?mSpDAnl^ILECXAT?tGq>;iGw1LCj)ii(_4!G6P}QYhceb2DslFg- zY0@_bC_3kH-GO{0bmIXuUCg-TKrREXj#i(xKJe4g>g6`ZvTXHQyRkovRyTJri2jKV zV_!U2E$PI+DF<&qkbP>reSrFB7h~O6wUSzuvFZVG1~FE>)76L^pzi2qoOY0Upquf- zf$Ci{Rz65w+uisshtJsko}t z`fhLILfRAG+gNjex_KYtE;9ex$5=9s7w*Y`j23qZr}4ub2dIns7~!$%;(lY-jZt?G zUeeeE*=&f^xu_V_G zV{Ug1H|`^uM;JAvnGw9tUpJDUE^+bGb*@3Ahx1Yfk!GGu@iK?hLB#p<)Ik*EjcJ33 z^P}lT?P&FSy7AxvYDI>z{y_C?mO-(+p2eJNvkca@}8=W_G^03(UNG=4L!*U+o&ZU3+;?gd#FF#8GrU* z*97PERNqqN?XEuRVBFtbEu|A7-PMxLCllqyE(X0tT?XOTIC83bl23vkS`c()cV-mn zA+_lB7RB`AiX`LnAv`9&Y6u@zcxNyl_`jf_DbaZeK9qu(g z9i;AUWn4p>wq!*xfaeNS#%aX-?*Zyl^2snjT}&(7{i#1OuI;Zjwl*#!&k5uMq(9GR zf9S93$d5{YMXrzj?600{Yy8oV+xVyZs1@Xgp$~bwF|H=RFztK|j*q+CK^m{d}@U%}NOD+2SBUSMZN&jx&lYal%-nhMkTG4^t zC+99VbX3=Lq@S@lL(|Hhz3l_7pY5>^F&k?vZ^_4<73~zVUmLQ&(lKmWzA=eROK5MZ zx*wO5v-_#Gv-kjK}-3HORAldHnv_fTUHOjQaNpwT@Ayn+nBVPjj)GPZ9A!MnuE0NysWYUM69L-}+ zX7QGZg!@v$sP#Q<03Rs7bpU&YSvF8BlbYTqjA=wM-}pIOooc+A!QQ=AXYg4^0!RmI zGkE4)oxw97LTI*gQ-<2u!dRBUexwL_rlqkogEz{<8SIFH5Ly-fKAjH>y`8SY)Ng02 z2yHf`^E9?5o%}*Evb43aCY`MZ9!%%45g|X5d z!y|%MbJVS!jc~g9p|eq&rq1kQ+?1s*>|)$EiZ>tW_p@D$s!?n`7agTuaWFzIZJr;c zF6nBlAEjOWn=cwzt8Pz%JW3oTV zR`-ydNsfAg{*G2ZbvIUyrtzt9-)QyE9>&_yY(z%C-=U4@(dzV`{QLZ#+`5w$-WQ|Q z*R&lyT7`QVXC9!g?q#ec{q!62Tr*)-VrD9C0 z;Z%(Ovfah1=$rzwt*GquisALC~7SJ1~eV>q?(#!LIF75$7W zN2q1}jYo*Szi~JD4H#g2vcEcOpz+KwHj}?%81Mc6G)#Ro(72zDhzv3)El&?(o|MZ( z^Vv{-`r}Z3diwtS?p6CU&wFUEbhvtUf96Te?#VO=l9h~MF3ROfIBxR4BVlDWfwuNxcr+}KUg?#C6~_(bG+ z-PHLlj7`a8i9Y?quId^(HPuz!Mj6ao={+9n$~&6(c4d3uRmton;Pzzoj`{oBR>pP7 z>OQhfPv&D?-zBr1@Hxrq39@48sy4MYzV6EBZ0_ntEBK86(e4PMSx?8Jx~cOzFg-Q@ zPbRBZ$x~T3^$hta>!v>FWPCz=Ix|A&>E23KFLWMEzyIiLyp+tQxa+!cmfu4Bsc zU)qdiJ$K;W>pBdg-dZqcB$};Lv8AuN8EnxV$jpm9LDDkb-rT+A*=`I zdn5z>I6Fxss7@vcYLi)lS4o>K*!+Pcc)Kf0@VzO)(qxu^yo!+o%aUoGbnH#Z>iM=~ z*V69}gXs6U9T|VC;~+w4a7DjQr-nY6%{4cY^o~P_^SRV~C-b5r(Oho+zM<<7!da%? zb&@wbqfC1b*pFPFl5u=XK2-Q+OI`~QAdYrN@3 zjUN3xzqN5gYjrp8*GTqrn)^;GAyUKmq#fA~boq`J*ISRI-_%KOqFtw0(tl zV|LwJoGWx&((=w$&$J_ND~lec75#Pw{buGJ_)})|qe~`|DQ&?KTiZSRJh$%5A)jMAY2zN+z_c|(7k zppO6#fL{cmTl06s$CHis>VP}C%5(P@@pK-|A9PWK)yKxu%?F*cKlnf%pN<~_`>K(? z!IDo^2;B$+2&)n5bS}bsPT&zupDBF8ntq7f>-Vbgo(FgUp>s?;-Ad3!@H~ppGePL0 z84}jy#J?9tx&ugW80ih;-i3RQMgNX_P%gT)Hbr#|mC#y#27}H8Iv+wSof~w~WZ_eX z&`LL7^W(V=UA4SqOjk`$3C$b&Qw2KDbSd8fgprfwUem1yonsp60Yc~h$-NWzK7{(c zI=rWVdk|LRJ(s?>yw~<#(VK!iPK54?c)6UQi{N<_VZi*ziI#%e0noXS{#t}p>_(if zDDHjGmws~*-gDx49YQBh8R;TV+Y(ydtHOH@JXd%gz`al7z2oy^CEinb?!bFKr_gzT zdo1ro@m?MB*@^e+KFQbT6A7P!x76NkGW5I%uC zp^r|Iu;#A#_m2Rbd!pbz9s1Bzk3_DzkA+_q*?~8_eg>W6 z2gv`4JdarD9IGTfEHi({zlQ$*O#k~+`!Hn4V|N0~qzLowzOuwI^|1|A%znY|?w2TsYoBq@KL}UMntBTG|=3ukyO(4EW?CG4^ zqlpqO*7yXu$1MdN)n2NX8mbOf*~+CxD|h{)-M@BgV7CT#YhWkPK<&UzaZ=P-?wy0; zpNDZDz`R1g{Gf$S<24EJI^cS~qv@T4B|aS3Zk8nl9RaPGe>`MB@3` z@?Ln)`1HE>iocIq?%jJ^o?GtS`&gb^?%n%Zo?GtS`&ph_?%htybIZNEPyBOt-}w88 zpYP~6oS^rC-l64bZO=a&^d8VVL0{d@ zp56m`H|Skj{!i`Y*%-9wtwQdX=y@jucP7By32+~9o$jdR-WiIIH)6SWR>nUMTkdNu z_c|W;!uazlD40>0cJ-z#M`*<}!Yv?>v=&iW*p2sqLSwp={tnof{7ONrM1(y2>^kue& z&*xk2&%!&QM%Us@aLv- zCZR*Q=B4NVi@;ddw)IF4e~Ol`p0riYR|g4HZ-gQRZYa>JYm*+5CwleQ)kSFZEM4bn zFTC2eRDNi@_W^RR<*uW19elNuAQnH=7E9l6n`;z#I2=tAg5 z=t1a17(f_CScNcxuo__$VGY7sgmnnjS%@E@6QK*C8=(iG4`Bdd7-1E{2*PTFQG_)J zYZ2BVRA(c8gieGmgl>c$gg%4;gkgkL2qOrq5k?W#Ago1Lhftk^_z^l0x)8b%dJy^$ z1`vi3Rw0ZatVS3`Sc9+@VI4xX1o0zuB6J~iBlIBjAq*f4BdkIgL0FA2im(P@Ey6m4 z>K}+7p%bACp&OwGp$}mIVHjZ*!U)1@gi(Yw2x}46AynrgeuPehE`)A`)xXAiLV3aR zH~N3FPV9S!7pZCe;h3&w7~R5qCedH`(>5yoT9|mar%c_9(`{3a*m%MNza6X}OdL0E zlymT`IhAFhN@vc9v=Of1DOr`~ZOSRBt`V;EAp+|c8VT7QsHf%T1TE>5X}}h5Nsck> z=v$HdbvxXMjSCt+ZK>#+8Lb*3^1G#Kqx86;;nSAX_3HjK9&e{~KOB#@SGvEC$2%xJ zE{MmeY=j#k^1G$#q@1>RXXQb;YWP-5)kOttafhn9v>~PDPtKn(4r}5Sez#KJY-#|RKY5(jLOGNV1Mwq4 z@HFr!aB|0DUPllkrq^}=25?Ucdwder2c~zyK0wnaQMtFn9|G00$7mp* zq{#K_jZ)qQ1HX}~7Rzs?UqZ#(Oc(eM0DUP5%(%9P(EKl=@jmk>cl9Qv=6@eG*LL*l zsrhDH+f!)%zf;v>ybkfcsO6-HO!}c*VwB1QK830kGdexGy!D(?h(RA(-)7M()r&HBs`mlxmal)BCJTjjDc~l{p zzRE)XC*e%*bj8!JrK-;K5exljr_e_&^hO_{ueQ)HBAogAQsViK?JM+A3;q3sGrdZU zr$4oy(AQY#za^aMBNlr4_OmH}t%ZIh6;!5or^WOCg>X)9orS(+pwQP^=raciy@Gv_ z&fi-JXa3>zc>Wbsp_sqJLjN)0Oz(spk}eN-4-tB&g?_+Lq1SdxH=?|~OgQs*Tj&Rp zzf$HOfIZb^pdUO;a7UKN`5^EUfY$(j4EUG8tFndOErALS7e3m4>JQNGOJ`wN9*;$y z3c^_)-Cs*$3GW5|+CSwU(Wo)hkujgh3nJ%y>WBCm zJyG2IN{{j5X`-DDAvOz7ICiL1q_Y1`TCgEI8=A)b-TD8%{la<~NMl|H$lj)O{-WN6( z^N3fc8G`Hm;Q;uDf$M!@jen=_Kh|DW5A;pJe3Bh zru^7P*7P?6k6Q5F`Jl(XvZg-|cog_?Nbe?1kA3HFfPXg=e6Zh4(V5pIY7kf+y$`MN zYfOAkrR{KadC5Oa==DDJz2MXCaK`sk+WuD4|7qgMO7CBP3;OSl5PEHQtLfjMfj!F; z#lH6YpnrI_&};i!P5l1oyuZm_^y_^6)vq0#zU96`6BLTi}j?im+Su{WD7vS0+R^ty83cVZl zv7M2wkwt=Qds>Zu0Ne+9Y8K3Epp!K1Jr*8IN#?pP%WqGD`b(K4a8;%8HX#`4#J52gX?B&zs~J3TGU_kTq>A5RtE z#19qxec-7<@SiF8eu(!h;4a|kM$~%X9^ffx&o8eKK2=8uA56p4;UU4JM+!a@^sgqs z52=Klu-iTl^1KRM+jDFDqJ={5_6q+VNY|L-1^4*`-vj-N9%qK<2>uxO>v5*LP;fW+ z{0u(fBEcU4{XL5$-@}%A-D9!Ddo1!%N;P@^176q1Fge@-K6*Ut_6z?9fnR)r@KJLG zp8&lbe4^lN^bY_JBVL+5m{;maLhoK6^v?lb2z&+ThXB6`xGO01ouP-4lO??m zTGIOt;ask?y}TZmo^y)eHQ?VL{4-A#T-(iS`aQ#fe{Z30d79w*oWM&WmI?sx4TWhv ze*k~{5oRnu0zZ7M0LKIW2>6S@4ah%ziSSwXtPryKIA4zgU-rD*UoU~0^ADk~ z{z(LJg8m2Kqh1g~T~5wFSLkbg7W&jZ<@x8pJ)mD?2tJ(}A}&8`Uy=JottGq~xcg1H zKLqjW`A)T^9IgTVMH__P5BiLy!vDv&1lQ%^I^ZKP(fJqXUjn}I9ig8mff{kX@R{+h z01qNxP68edw=y5hMLrI_KI3r9QU3ROqk#TIhdnCt(HQJTBGtcRqpD>n2X?U}!&k13&OGq1X0# zI$bvb*Yl{3<{$@O)AT>t{Cbvw*(_ycT$W;7Qd&-|9C3bo-{q zSCQGGhhspm$5(rTejso?ep5#Y{lUQZ2Y)wk9G6qiYaD#81by&sk;mr~J~gf6LBD$? zf2%F|yZSz%e-nJpLp!<0{essm7CuA4Cjh+YPvQF`;?@1pMoWM6Jm_a{5<*hDc};vk z__w7}$JZG2BMX5$ua$bo*atY5zMsD0X3TU^#Ih}AG$GX-?yWxO5KEk>D z`@0E)e}K=Oz`yD)z!Knp0AJWM9-k5wK7aNST-UGbfa~+|QxUJ$ryKHsy?T`B?c{$R ze8%+_Nw z_@G+Td`9p|7XA+d_gL^3fFEJOKLqZx;6DPN4?GF-v{@tae*-!D<3T^*+HZn2zrq$i zV~C#hug|6GdU2(R)A$7TxU&%N%Qg1-`wilC&l1f~fjsS=5;?056TAw1x&wC}9*^$_ zyc&2E^h1FMju85{TF3)8aL-YKzq+U3hZD~2fO9EYHpsJB+k6rKR2HKW{sa0 zk3UT~*LT-KiT5?|e;K%Ak>E>#zYRRHSnzV-pJ@6M1^*TW?puxDEcnZNNxB?QOT0bc zKchYLlSa7N?jc=tV_s7Ux2uoE;Nv?`Mgm7cpNoJ;4;H+2YvFS?;U@pLpfS*23A}cL z;65Q&cYse#uJCyr_&VT`34*tPoL>U3o+x-F64s06tEQe0jmO6TuRb~+FVXb#;_)jq z{c-X56Po^{c>GIEe|9|HdoAR-C>|dNyn4Cd)sVjoxNk)~ekJhzkdJMkpVfrh<<~Qy zkH8-a$ko4r*I4kkfm{8id`mdDW7SVcdkgieq<=HMx!uuV!dd^?Z;OsM-K5{#ekq@D zJNf6B^wf`^(giFe<`aSYE|mIJ^tIp@C*X5U0(?aR{2szten)LvGv0HNFRuWPd?xs0 z;NJqT`#v7;_N?%6ZxZ|sRD(3&PDeYF|Nf{K6M=h@1y2E93cRX&Jbp3Zc6z%u0e&C& zs4U_0bx%?28^G(P3I0NN!G8rFog?@+dkDVIbCRy;NrFFv36C3i)pGFJPv{GQ`^b$Q zUsr(s9N^^q+Qd5pza6*(6ZB`n=Oy5^z1o}fA7Mc79q^j{1t*{M=GE(Ykuxw!@ORN3 zjt1^25}ZCuX zeMbwf=WA}lS^qWv5d9~EPd@Ocfwu;J67Z-6UkUzUpYWdyIUfgJGe__brP`}kfJYYy zeo8Be;4AR=y%sOeCgAFBG#K)l>im+(uT}#`{oPyRuLwQ~@(8Z&kT*9 zD|i@u<^lJCzZ-ZMcv#aL^56>K5zt4WpSuXRD-ZulfIpc4e}izdeSTRK^EAraM&Pxt z2tEt(wy6<%_iKXhk8+~N8-ewLKaOc={5O{6-jwYSva|Li`zj%BV;dXlacLIC^;Vh5u7%Aal5l8(e0exKpd{Y9v z)64eq?2!QPmjHJW&hv;U=5f`KbF7I|I|+X=>{o`bBNFf_On{dY&gG;A=LW7oIjJ=H zlRf0EGM>@()+;My-u5%3k79{y<-fPbR#*aIegch%9x4%{w(*AP9+ zA6_Bl=Ptzi8Stv8;AJS!onI09$dgij%F)gY0It>u{T-km4?KKtJU)kTWnSNIHvK4$}W z-6DKG0{ueZ;dez&oi7(_dZbI2s|SGx-jj}NG}1M3Tnj3P6lWL!f*Q~}Mo7Hffqz7J z5_xE{o-go}oaNlU*{|EBL@w%ip z0C~m@5P|vtuf9#>XJ`C;xd~Tf)n`55afqgWE}s54;59u(o@t2pT=21;E4c>rwHFGX zQjA;v1za5?cqQ~u13Y}cq$?Tp8-Y943QjJ<%&YAisK3_W_JNgKpNr?9?!jp+Ua+VO5$ZM+8TS6a!!NPthpKA#3s`gRcaefEgh2nkd zWXRAk=<>Gk(f$B+IWGY2;_oBUrS)(b@W9KmQlagameD?UAL{qDe;_pf>N&zWz1pt; z#8=0@XD`nZ!kLfu$JZOezMg=7qe)NWH24Y8dOoa{`OrQo{DcgFe$M!S+};uHOYLNG zu7iR$5YF*BwO<3ooAaT_A3aeRoQ4IONrccpLc&=O+HcR%pnnqd z5%?V)0DL3iT;80o3;)NUpJ^Y9e%8Y8hYR$JHv)%0ADv%U6VCFu;D^!x{b#`I7D&3f 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 literal 0 HcmV?d00001 diff --git a/libs/PotreeConverter2/liblaszip.so b/libs/PotreeConverter2/liblaszip.so new file mode 100755 index 0000000000000000000000000000000000000000..e1f638b61a1a5170df0e4e07fa7749c8aa7082ea GIT binary patch literal 561112 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

    PpnJp6=I!JLO?B$z#q#dHRu`JT(pJ%~X$` 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 #%GqY2wPM`rh1g5~oxa$jq zWTs5nHpbou5}R>7#_x3>ZawxKuZIR=aH;hayDxCue6s@O@kp3ZE_5>DcVAE^!Wj^x zMpr2{GSD}28bvp7l-rBSgSqnyuFt-=S71_15x?RwT9h+dH!&?Fn&DXF6yMH|l56hCcxaUHiKSv-J(v{dX39pg`B;*B8o$WzxYKti45 zIu9zGjKAD~r9(NDTP#Qa337|-uoZzblNmX5vF2m(6=xV%ydWx~<3O9Zk}kQ@jkto{ zIwYwY7tnt_B6eb+dV2@NZL);&U4F3iw&Re1*4LZ9R+Aj_Y4jaC+;Jt z?|Shu?r|KhzVok(&HuC`nEy}Ok$-2(A7T{s=f3k>tcVipA4XO4Wc|;P^*_6=nCgEP z>W?4rCLKTEO$L6@6JT?Sc+=70O&~??J6l?pip|i9xk5(DmxJ|(pZqYkd|zQHa=@J-FnDx?SkWG6#rzS3?1KFZrNYl&XSRSP2%_{e~;=v!SCpP&v{pg zBN`u{b6d>dtw$G19Rp+=iXhjY(j&?Eh-^Wk7_WKgLSw8akVw+;`X+2cFz0ypigg1R zxOOX*2e&q9ygn@*%s%lq>0suG-%AIxPAp`{1n8ud{(3C(=kZK+xQOd8q09*__J-!j z&~hjA9B=67+$0k!oX}3*&^Kj+F?UW-+*xap_^6@5WAF8n$PZ#V_%n|Aa}Sb9%AZ$8 z5r1w$&!*jdN2d@q?|7;=N*01QSZd#I6>%XBp8wr66*}$H&6_{O=vhBd^VO%6G4~&1 z8Z-wT`PsDCjF|!VJ)VL(1-gfigHJ+!IB%tK!9qOoHf`p|1|<2P6gla7lak*q$#qFS z{cz-?Bzc)6FHKq)hz{fh1+2Oro#)Z@Zo-Fr6%D9QFCMxW-$8e`9;*E*{s1z+oS)LCqI%d zI+QH~p~bSlhj_k+d%nkbzAHW7x8OT=eT4QLGcs9wK1Y`)saIi$yo^cXIa0^LK?*dn z3LeY?xcuUMbXQ^nsl#2a`Ps!xZhVuu#-`(-E|vAzkCPV9?4$NGD9_9hNy`)9^te1U zzuMX7h#Qh-?`gD<%-+9}3Ml^g26gVD>=>rbL19=PBL5p;riRyJG5uRTuHpO}Ar#oG zm*j_EJQnMbCw?F6(MK$Z_2?&N!^5rv=1+*I#Gd5mDl-eK|HUj+qu|!VkzXar)hH-B z9QhfNT#bURid?pMk`cTIEW`+|SlOKzI^y*t3>}1%Kf9&rYLWe2?)m-^zCAsF`5%M= z_)~D-dFPUe7HPd2f(|mqzY^@*Dw&fT)}|D`QY zt?b(Y_X6%|MB3|8EB~C*hI{F$TJh_ZeFvqI9}ZC9qOVL9nl3}r?PaF%M&$WyqI!eA z{7gmPVld?2-bUY)Vyrc@_co?Zxpr@3`jqK=8#A@qg=p)&joElgfse?0eyw&rJ_wV* zAoca|TwWSEE38JkuU3o@*#FL7M@-R{^$~wY1}g2UhqPsrdywiOXhfYukX}^> zf>b6*eTpSA5!~nyWNI}Np-Bf(8WW}Qi2>y#20BF9S`A%t08u&1QeSWV?h(hUl-~%IlI`r1%@(qhk8xuDt^Y< z7tuNfk~L&(51IZaPe9>}hG68&6N1{H^k&z3-27D_uKh>HUuaJy+DbkD#@xWEb1Q6?pcG{mUPZ$RisbP5J9^ zqo-dHb?cHY+C2^V8yntD?N@X@ZxNZb518#$~LKacgeKxTy~eW6~SC6z$4YxKu*hijFu!!=|Dnn_hZB)9G~h z;1~s_ky6+)vo|K{bNJW{`x>~jj3x_$21`G3Z`Q)QEv&KBIvKqnyq#Z~NI8J(Lql7P zO%|jEA_NfM*sKlRWj(9h`RlZ0ll^E`vfExk?8?^eZ4g6I9X1zh%P%y~s4Q*y7 zW|WKGL@=96RZW$m@Z%AF28WLmSrq<>8}7U(%@iB3u4V1FZVa4GEyvdEA)Bijr;92~ z08VR?k5!07D&6;}nc^32{JGSC)TVY4OB=~YoF`L}O>Ig~3y+zJNm3q5yPAWL6l~QS zHQc0jGsE6|BQ>%35TZWblP{?$d8+Qao1+R?Q(uy;o9EHa0{4zF2C?%lT!VWjxLDk? zAw2fo(!%wyF9Tjlee}6p4fI*;q(4SRtp(IRbm@koU2aGFcWL2^RX@co=oMd~vx!e2 z>$wBd{+nl_3F_^E=gJrQ#R`%Yba%SZJ2_ClQu=NLWBnpi%Y(2mw&w2@BT=T1F}9#} z33l%5X!rgcH}10sK#rs8Rp_lVNXcwy#@Acf?DY(bG{yKFGu^JS-5XX4*{?XF)VoFys*mROHy z>Ml(+6@le31w2jx9Y}z3|F7K}9hAlr9f6v@tKq9uu>d3xk9@}zqb^OGzZp%Br=@r! z*M}10i&8Q^3PWY$NrRFfj<{aR`?w1SQdo);L0=FA=Y07kYN^eih0xZ8&iSsgpDdLf z6LWoPKip4ScA~Ru?~6?W=@Gi&8esNNT%Gk5o7d)cD#qKutuv|4CO-akV;b~L`61T@fb+UF7-G^b$EWuYuB7=2Vpxr z7i9zw2;%^wAe@^go~DI6*qw(e@?wjy&O;zMd%I_$c6iiq$BiV0`i#*36iqr>Q4Ev8u%HZzPT>Ria-yq@Lmg z>5zJg4${#NEX)+2ZQwXGzh{b%q(f)NJ8+Cns^5dY69uI$Wf{sh#+tI(qaVO(xfbP< z`eeC3H<#mRo40bLK$(Yh!{#5ze5Rw!9rlt^7?6tjY$T_fPfVvcq_7>yrFx>;b`O#X z)Oiy)-kZP&XdOLz{{j#|5xfAluxx#)R}b9QLfORWfwwD9Iae!<@h0-L^}s0l0=$-V zioWPYPthkJXAms%5=`?F45p%)k1PfOX-iI~&Fx4K&}la-gwQ{&vq0o*4q2c3@~emj z3VNqG#>zl=Qhm&DV3I**l-v3kVs{SL2v=OGfsbX!gmIKN>zChnfvOgxU;fi8&VEFy zjFRZj?xxX-@=TKLj~H%w_`p3*#|(B-V@@lFz7|N#CFo%&+OyoSvS`pn{*9e@dcKL7 zgllEZMShOhEFaU;&YxF12r=0idHIPA$ZMc<^5}rGuXOVGfHPM* zd4#~(O*#WAZU^b)QG(EY;3@9FVMC7_RM>(PbtSf`RaxTraraYl|5g;Ue=GJIZ&0Vl zrVST}Taf%BN}jiF?;?P=Zc|VIck2ed1@>+4IrE9qpMweZnT{L-YDAC{9W4;jy38Zv zzxccspJdM$pH=uI6TSGk6AZ>r7B&a?c?hoNlHtVkrjl}B^E}&%aMQfkK<{fVnJB|1 zA2mRjpJ(94583X;&nwb3T)IAzF0!+Wuyk3+8tLi|SJOPU5!^hF_LTJ3G_M8! zq9m|lz<*8i*cx#2y!WLW6hcy5?@)}x7ovRWP|!s(c-Xdno90y$1@5Ed5($2L%inn+ z2rKm&R-euDx*|6HHOzEH8%4#ir0!Go3zlA=OVyy;MEkrY)9 z#dJyWi9@kpQrziK(BmT{nx#0>G%p)p@Oa3fSRyHM9f~}n(B+iVJntEYuwD`la0mlT z=$oF8MIg$dD_Pq3c2 z5KTq1O1w@KJ7JPzB*0j5-HF&}Ba&74QPMz(0X6<<;CtnmS8OFnsr$Ge(C}M~FLb*E z8I&L_5@bVyC`cI7_7FyqNf6;jja@Zp)o4}2RE_BRyiJOJl^SesNt6|+MaPJ)TnyJ@sP7Y;uMhX400v$yE`6Az!xYFFd!G7 z_!%I7hRdIc@~1}r+$VpOd{ct$ed+n7{2>|Ui1jf1WVMwPzuxgsLi;wygJpE{yoHX3 z61ERJ9!eapc082yd(-hy!tN8tL&>%TQ5Gk;n&;UPiuBFT1yJUuc`T~H5SBhzF|NjH zSE=qJw6qrQJukKQ=^%FxKxoyaRMD#%u`o3rBypvbDm%q2S~I7h<*<^&`&e3Ui<>+t z(}G(VDrIWmq$!U>%6jzaMIbg_Llz|AaE?TaZ~EiIrRGQ-gb@Ap+#jtYL6u)G50<1F zJy&Hy%yKjFvx^TO(q!=|ri`&0@`jEp$ToG-7#mh`g-H;~81*Vf*Mr6Qos2=^(ph}d zao3GFC*h43z9)IU=X<_y_I#W8_S`3j{Cc*3(({~jR9BsE?ZIsFoIJgv^R05R6&|XE ziz-CADmxi{PFmad8mP8o$Hf$!PL4gN8|r*3_I^f2&r9UVhP1A(&T-Mjenj&dR`{}i z;KZ#g*26C@kM+nC=f!&T5vRs_^b=XJ9s%(M&0+LLQ%(rP=AhJv7@ORMvYL%90~={j zgp6D4Q<%Zg0Xx8x6mj)RN~qXRMv^Wlj!r@6AY93`)+~FzB76a^4Yrtrqup`-#d)U< zE&OWAJ9I~0lSz1vXjq-8J)i$s zhdHa5i{=n|!AkD}#aQGGO-|wVY3o7Fi~7Zw0^LQu)H5YLj~SVd+c9j9ZNxBbIiAyh zp)J2MJAXsXI_STRrpSw_mHQe}NX>o)4rQ9iR-)0I|6=5&^gzvCt+?4}j=Ypvxvz;y zrs8C#SzA7%E8e;0?+ZrOW(R5zwYVN`xcrs-np3cnp$Zk(=Wod0joNnF03|~XY3~7r z2JGohYoM|F#XniW?yJg$#ck4<-MM(KxqqPBk4NsM_ZOBYwPe&Q;`jC|m)8crpnIygzli8Ebak4ld6>p`R}Gjy`_lb($IeRX;kNFo(YiEg7`cu!Qm!vc#>s3cc`U z9CGnQ^19x0LwGEypS7CPAm8wITE{`))-=6WcoUw1J+F^lrx$L}YPw*4h?e0EU$Q`& z6C?F$6u5tdXbLLoQcZ~Z|Du%{ZB!OpJG<6=`L0yj26$v z+rq-I!ecL}bt$Rn@Y)muPrr(@n+Ns-bxQL! zp3vc}owyjKl6sO4$Ep#OBI`9PHWE_iNaAc6p*d75SvA`^hkKf6qQg=}5u&DzLFX=p zB6@q|y)>NIV>UL(i&rPq6WX>sjsAjHP|p10oOd+JtgT!wQ_9n{7;F9G0(ly=jfVt} z9BN=%c1!@L_FAWc8N4q=ziXf!85-p&vfh*r(1hK5d?@)W%Xv3V-QJZsDR;z-!ei;_a+aKomq&@;%Qx=j=JV zxd1Bt{@?Fwem~eV?_AD1@4WNQoSAp#>9R7=EuY42|RQl*761HUaWCV94*Q7dd1FXXzlQfYy;`TNSW~^DsNWk z61xLD7!{$QQKdJJReEOXjGB^bRNy@CFhdVA;q7lqCMj|z_i9w8ispW^0)@{`fx=Yj z0pr;?8wdxRiYtB1Co*1}F#*}Vk;4!POCMpiO3mst)HbWX`DDLmApl;vwUplwsIRdy z^7j77-mFFZg3wAZ?TA^I%f}DEY^A=7`0<-!&SK8+P;>ew{7Tih_+ZRp(456jc4Im} zm>D%=gAmu-!RS6PXGj4-V=k#N+9AhYn$w+xGxHH=%wo`-#lno~ELh~j`=U&F8-p_+ z@)k)RVr&QL=a>;(65oGcDr-{)zJg-7pGx+#%rw846sAL;S~vl|)=T*f$^Fp*>#Zx0 zn6rwmyms3!7gworDd!b-hH~OA8F(q%=*@+~iL!*`1jN|axG6L~9-xw;*fjUPE=W$KiQPrfKj(We z6kRy$Y-soJQ1r1`w1&e%(TDOdGI8tGY*03ZKB2cpmhQJCT1}%rU6Fxy4Yi+cN=!7KVnm^&tdYp87Gh#8= zo{L%KV6>pHUE_VJuDF`#O)$)x;B=K>zBfT1Z-UNb+k7eo{U5Jq^{hU4JxCcIQVvL9 zBoibsqSfz(38UDoe|RLY^eK#XZz4w7UD_MjkNC?HR0peHdA+$GaVJuF_amMAwyr~tl6aySGIKz+5>AKFvJMVQ~^%Bv#n_=fNyC8!YYs>fnTXW zt^_VqfjkKeW+1YZJL zLMSdj8MLy|iR|5Ys0sWtc&|Yt)jpi2A#O&HglVJe_Br%VMX$!zO9 z6;PUU76Ku2Bp?>-lbc`tJ+A8?ShQb=&5Osr>5cuTiYLw}_+xicg9*Z1S{#eHRdj3`>eVx%mG*X-cJ_i8>2VJ(AqlZ`VQ zXh!J!Mm!5{a@OHDC1AWU$Sm5*p$NBgs%}=AJ;d~HjSHd+1>wvWu7%A}MX_Y~a1^e- zaVc*CYxo07V}r4%bSsDshER?Q{X~U0c-sDsvKlU8`5xlj1v-b#@LA42>~Q$|D_@ay zyo%B~^AYUB-pk6c#uMIDZ+H<3Sq@*pz48iPUuLZYDfX#7&*$At^Qpp$L#^R5G-8bZ zDZA)x7tfA@tN$;|Q|&VsFUI*-*eSPtWIbP26rH26P~Eaj^LOM@H{kE5Q}8;PmiNQG zimrking4y7Tq1dj+9!`p%}uGrjUno=s$8=+?o6JFgqy5cv>t7PX#%fC4!?*ycX1cp zCi4y!j~nFvjsD7V>rk#N)ni^yFG|Bwi}9-v07H=7cFcH!<`c{pDBM2bHK3VhA0kooBfe$CVCRx-ywb7pNRG(OEje}tV z3$Pw-`hNozKDf<96ZQ)g5^xmZE94y>B z;ej|p$zy*7FQ#hrl5Af2$*r5x{5`IIuV5k8akOc~#8_*+{xFrY1h;wY0u~aMl2NoY zY_M?Ggw4dZl<$O~@wr^29pWn_zT7C2`;q7#j8`;w5j`q5%kaUqTRwwW9$fP+7LVq) ztm{!lepaRVnGD-BZd4XpT|q$y3qPN**n0N?^e3ZH8U_xrtBd1p+>qcep1&n_Ay|xm z?|_ro)A+W@Z;5>jdVWjulbmw!(&uT)71Ejnz?qFY9PD1c09W#ZW(7$6|G|!;q7N zcm0hGH8GoMDiFWT6Rt#fizi%#@G4JuG{TP~9KaE0EEx1UTaNRngU*Y<3P9n5ejwDu zts>Uu>p@1n*A+FQXe;DEF?82t!{a_PHb>M??8(Gz*+8|OeR%Y&m@zotVJME>IHn;=vdIJZ?Nn6ds;T(__Sj99q68;a6jCjwzU;n zFHgKV&`#)%C#a0z>4NKHkB0n;4+yPijIOEjm$-(QbE(3A{3xf&?7k*v*CoiB-@Zr2 z8Q5aaiAF&Som&~u30>LNKR}~_28}(a(kZ+BK6Elc-(gQ2yL}l(5;z8AN=oYc1`I;f z6qK9(=!vQ5LhM`k<4_RLdf?c=V56_!n%zO6=_r(m;+-h$6zY~{jLcT0S!L2?#EqjX z>@&E@QFi`EZp5cBsEEjo!9l={ap(;M={Zs|3Z!(qYV4V!A*hA)~I>dB)T}#?< zH5Mt@88Obq9>Z>n^SlVp9{-WV{>h<0H@=k7U_ULt0)@b6Fz*D823MnV%4mR#Tre8+ zV@ENXxR#X(n+aS``+P=x6DqyrXlSqDW(V->b40vele zJHzpwA{_1T!Lw|xOdZX!l{O?5#$DU~K~37Ve^3Xpe|dO|*gvcX$L-&79{a};Us)_p z0j=58RCSE|lDSfb8bbepUK^j!+2bp|s#WA{PnYhDy%DENYo6z`JkMP{&u2Q%X8K9s zOOO7Ji%)Wx0-SN7B`O~2>*^jrRrsf;b2VG*QMYV&OG{JTCj1XnxOefxSkPY-x~1q} zx%7{Op0Y>MXW_?ApN7Y#x@<-7?b3S+Jx|etF1@eNbw$6zrH6!GrRZUoK1%4diax`o zPZIhpMSsAh&k_1OMPKI99}#+^qQB_U*9iSpMgPd9zajLUik=26TD!iV2|WV@$gQVK z?~2E!x*SFC>(c!~FHrQ5OD__7g`$sg>BEFRTG1!D^lOD)r|5HBdcDx^R`f?)`X7Zp zU(wgN^e2VBUeVuh>CXy%tD=AA(%%*OUea|O@om6r1#}!Yr>rZ>q)70aZU5%jzq$4= zyAR_F?B8PhSGRvF?B7cJx61wfG+}$J!I(j}`v-<9hW3?Z0&%9`UmXKRAUW-+%0nYCQFN7drD@+(Lp`E>;pwy5eXx z-_;9W)fyhdLbN@h?J6m-ilgRa5=}2-J9;e!WLehnME{F4HCvvdqA^{R)e6adiyO`J z`N)l>PdEBPH=0Xdh%WF(?-9gic1^;#0!7bbk+CDN1jhZF_Naj(<&X*!Aed&TfCXLg& zvD*1gc^nO)!@Vi~opS2i{4VFxOnPUH-{tDWpDbAQD9H&KeXQ;Gv|rvYQ67f-Zm(_i zVFKJoik0G=lY_>HY^}$j9P4i#6mpU(2wj!mIn{%1;!_sT~;%Z-~VP~9H1Ne0x8VBDQV4Et>eY9(KJq!8{>u+? z@Kt=%3k0V&|pt@pJdS7*ICu&5JW7+40)OVTW2vO4u10Hc?v2-E;_g>wmz zrP6@dLK$1@*zkcxY5c$aa;dNI{|zjnH%CB@@5Ls{+{VrivQ2M(+TD-AHSCg}v9Uqk z^sGT(8R^Y46Wfq$uXYESOpT6EqwT9=^f8Shcyn1QdxX`~Q&X`I`k0NXNt~_|eX=_h zJZSizFzam1^?9^Ab`oYH9(VY4bccVIcg<+IE43e|fA1w9z2P@#H$Mh8;0@m`7ruG) zhJRZhvqdo@T^mdvL#59oYJ;=7W zo11;_aGcPmq>DSHt_%V%y7?YOq-=;X9(D(fVauTfZtmTFv)X1i7NY#?*Mc+UpdQ9k z+(G^5gJwy5*A+{#aVSzb{cmCCu#HdKRdS4&T{9}&n7(&>1}0dKi}`-L9<4f;h{U%u zQXi>9mtiUlrMHHUoKZF{TYM#Aqfm$ktx^oy#t=~AIAR0`TG`Y z1j~^A0b>3hakWqCA_7#8z4UrA;oSdnPAVqE-tTrU5INuO#t}_rIh^SiFb95X)vtUA z+mCzsi$BEr`Rn~Y#)P}U*J1g*Cls&1AAWQBTWyr(;kiQ5Zk^9x{NaP0OUm}+So_gE zaW5R=-3j*>hS$`{VMHpolkzet-yWTy!fMCMb}>>FpN-*A>%#I&BOQGRSp^t z-Hmd^E5}(C!P1*8TpTz2E8l9pa|@?yAK;53$9e_Nc)-<3?}mE?qt{``nV5qunEXBE zSQ;M~&3aU_%r%(>&CJF4I}pGpjm{YSR@uL`>Nmov9{-$~th@8+%F3yaEMMFENHUc( z%kr>6TF3khqqTqv*co`%xs#7@_M40e3YFOdR^pTg-;7)x?P-@AZyPsWVWk`u8#0Tt zc-|-HeV_P;nGT-HnMi|Kn4DuC5ev;kj(CacJS7g3iC4@~vHiCnxV+bp#x3uwXzTLq z^P_TkxZS|G4>6Z0?klmn-Wib4N5Gk9YBo=ynHa|c#>>V~ARq1KcDL^PPu*nfHJddB z3RfKN?OC|Td*NVgR@!GQ)zQfKDa()_2MJ3XOL6;4rvMz-^VbJ(1!ie|Bd9A$;5C?m z&l^)(kR<5GEs&)v@iaIM7^9{6h~Ai4TE79*RUjaggT!)vvvgJd=3xFRIdQ2@TkdgA zTYmqy_G!zru(DB_f)f~h;hH}&J8(vmS&|!w-jxFN$7#!#S!1}4WEWdIXMf#dz_GrV zCqcCO8zjMkQXle8^80Yx6?{2a0KigF!0+q=UU3T0t;bLRuEOd{&y6(XMmcF=9ilHe2T%qMYt~!{*9u?2O!MP< zcZi#kE zcgkLQv6T-Jv>wY=;?HrK1iAZMLwAm2++ZbwX>PCz!QHnquO#Ls-}?yCmxJ4IUSAHd z*912qNvYH_wE(>__3YU1Fs#zPKvPo-Vg^FWuBg4=mti%SNp{|JqqM+U1Bw$WW|Z}~ zhaz>b<|gH;ux2JvDy>OLlq&0Ln?eJCSB;Ks#83@KsaSW+$CQ7LeP18!ob!zf`%Ltz>FM!_{hBvV@ zMYf&6_GPhcYoNv9)Jm%!*>I9Nvb7kQVQl=E3!{MHJ`^z7hYiiH<{$v?u$)(HTZ1E| z<>(3JFgS0cl)gt<7orf{BG{FVPjXas&ziLGAh9Rj4;FmlY_VMRCvyT3{FBRW33;vl*qd|S_A!R z=+H%3bgu4GiY|@A>eYd1@3y4iGF-V$xqcJ6JK(YLqTI;FPA)@FrcOtU^)_Z8)ts{Q zQ=f6<49GUaF2lioDF4$4oeOIUFm$9cAK-${LGIO(pr*_%6i; zEG~Cz!$zX18|tAe{Pe0n8MaGMyWJUsT^}z)Qkg8LGWSD~WBJIa?1wFF+E%pfx3sMZ za;RgK?!65rcAPB1tNFRu*&T?wDB5>CEa4kBi(7=e-*tK)TXHV!MGf$U|bQfK&jI?V!}BKLku? zJ6d8mM#bAboLWIc-9L7TItNCzu85V#&rK*h{Ubwh9rwVguue=SRazM!#Z!m?tlbz+ z;v|uQwM~sMIdSq>>-l6-t+mV{!Nj^gIuANj&SB_#BRVoGnJTJ$lT8&%9QV^X-!}RN zYnU`&<$c?m?EAKLhmk}^i3Ri`*F>S%TdQdcL zydLfOO5MZ)`0G3l#yO$79lsc6n!hjeX`SxKfl>6`iF!)-H_l9OP&93P{_COWq_tRx z=l4Lld8zLBrDI)dI9M!N1zme~DopyF6clcvhhKBrcxV#*zoS>IrN$Lo_tYW5@I1OU zn^7fDUWk1$lD!03BCWW{Vcp`yjiwAY%7?>6P{3m0G=`0{R)pL`;{^0$wy^cAk3@Px6>`luFk;Y+-K)5gR3 zcWtrUSPfTS!nLCb|LtlFzrWNqHbfJEmcVsOH!sSOZ=Pu1Tr4wB@kbvQpKIT9x-l-t z*khGZCAsqj7igSKz}?U#$oHY{TgPkre*@O^)N9n|89Z6@^nTamP66udH45A!zp?rA zc>VeQ;qhro1}@-)^5Ao;-?*G`uj1*wao;q`=2aH`N^)yZ$WVOx4YkXbk4}8qp*{6! zO~RvM@ImU1%OFOKae2-E#EY@+ruNt2Ov*DDnWF&HEtrhb4e%vumSw;#i@g;-{<)^? z@}rK|LoTq~p=j8j*4)pPAK1%85f)B=gYl9aT+y56%bG`X6*BN4y(17=1Kj!SVBue= zEaOi{BKV5GC;r?QPNX?1$*n8OO{saxd2RD5?&o4&;Q@?18mgWt-@A^gueMe~6V>?! z=OePM%21k4$-0?qJ#!QHsp}@@q=dUE<}31iL;c1km;uZ%FzT_2_<#k|NlbM042Y|( z{&>A}-wXtsB0!K?g){C@;lO^z= zia8SjYKNx<;9Z^Pi_Am3qbVZo5?&1jby3leBt}C}ioY;A39tazYIn?Mnz*{D+^TsM z`;sN664yaE z=df<$$XR-9$i%mvIk-#EoZKyBY$@*rh?Ssuom^9ImYz_G+_=0x?C%C`&*8oGjKMq! zH{9c)tK4LdhfICsD)Cf%0*si0pte|Kh-TTf+Nc|w@wJ#{hK?GBo1K1&1+2a=@N4mW za1_Ap_Vr(-VT%M=u|}XMB8zbsVeAz+=|nGHiKpu-PQjj}xSt^_A?@GeX)|SSDlu(N zLfWZFOB6qRx%Wu(WAMtP-z+cG4^W1fFZK-J+MS;0K5g8sPm!s0rya16L+pF{Fb7;; zgTn)7z@mx&IE2kra%f^ds9crxFk%^n0GE>PL2zJ#zj(;wFFqNuNLZ`NvVJW=^)2#S zSnqQ4X_5CW>RHYA)w2lh*L+?#pn{z829d6QtXTES7f0vh60mE|@A;6!2Std2p3tfY7&DK5e3SM0b#6td`A(0ZkNkWp zwoV`U+t8S^WS`X2lpjIk57d4|m6WH}elSo_nMpF0`$N3og9FU3X_3|QCv*PBmvzRyC&Rk;E6LB+$;&uEc*n8+NS zYrI;A!6zJ(GaKe$)F}-glI0nCziw~6kNdwcCkdHjvuh^9F6Ci656EXZ@HEXXkM>PV z{;I0sSJfv}G@e*hUsbecdGIHduc|%P_ix1JT<@Z&5(J_D&n}ZA%|&C$yF?G5h|@`tY}HZSdQcKCH(y z`@g9V!*OFDoEg8K4q%i8ou`)-Do1MCh~004=aC0tBeD{C#-e{|9yXK;l#JU~37Q8O z2dqj=C{T7m^|B8<{sSHGH~e7v3v*C&jqi8PA8v|O@*B_z0;E8vmz^il?B`1JA-MC@ zT$Lovwlua$2DSK5aRH@iI>L1AL6QNpWm$*bujDCqOUd({BzYbbzn{N#ko+EZ*!czK ztSw(EDCC0qT!N;YCqr9Y z`0ZO`k^U^vW3j(V?lJFZ5mf##)aP$qpUdAo$okxbiG@e=4?}(Grskw*^}mJI$*L=6 zU08^Oq_HN%X%pv3RanuJsnY}h0oylGrp61-j7g97O>J|=wBm*Y)@8=To0io&^e3Yc zn>qq3)A-kKgv>cc5hsa)z+UzFtHc+vQ=Z8|C7vW@i(Dm6dwxjx-dbsKn z7%uH1E0AcKvW&W^{Cv#S>Zj0BNF%Yaq=8aVA=PH1@sV~C=HhIugPGsV%36Jw>ip~APd zh6S+HO3W`gouWJ%PETpGSNshhaGnlre@Cd@nLXC)S5eN_LGt+5?>c-(6iVS90oz|L z^5)Q?y!po+zWEoe-uyg19GwMX+|DK}F8TGgLCC@^6kxuKXil zf$OREGHQ6L%?2_;)x2zMLCS+}gC8WaaYiB=m$qVKH&*iGd(2+7kMoh&iVxnOaL|0* zdu@U^lK6OjWU@G-E+2nE_e+WMQP7HyEl7IMd>q>$A7!ohILGDVfdoE^Tk-L|L*XNO zO-J%r@yld+TnGDRw~Jcqcl1MV#mBa|DLjZin%*HF=eFYGSeFmAkKmX@to=HAIyzf= ztQ_t*xbbu9)d|u_7(cgL|NI4F+aEvWrhnMO>vCgHi_b+J8%n~tSlNl&N45SC`-7z6 zrl_n(#L^^FZZVK_C+{>}(_}HfBm%{_5DU65NK+s#g7kh4pf%J(Sr+dyx5*`GrajGseH5S zd=8?Pn={Va10lE!&?Qsol}F2u>{CWp^QRK7+#AEsAsK7xjU zPoDB%nJ*#@|Adz{D&MPizR$e*uu{W(d+mH5dGo!Y^6{`f%jAUt@iMN#TMeg=$t-lK*CH8Tb9^+$ru=&(dPkB^um|N zbk-Ht5?$6O4@~IO*7A;VtdEqN=SqJ<-{-DW z`sM5(3saEYA=685`(=tuyMa#G9ecp+iHLcTF~FZHM+d|y*WSw7`2M4t%kyyD$$A&P zj|^W7Ef^TB?<2Q06oTh*-C3FLI>5MZ{t{(jp$~Pd)_&bst^ET3#x{cKP9eKQST5WK zyu5%#&X#_^yqM1o@@yY-dy1#rz*8}J0*7kD;3*yu1hJP8m&@V2i-f8AUObQ`*U+qM z;6X0_X+4T@J6_7JfR>57m9|x{ycGZmr3Mn2K<_!?|ARbfc4P538T;UB|=?zpN z5c>zlGVc3j1dKbWFV6Ek&+{Xm=lP!JCq2)LJkQHK&y9GF;kaCj+Ns=Yk0}z;jfVAz zw%$o1ZX)ryBqE0(YjF~hqmcDL644^@_9Ws?5^qW(ayYWCa)=0E8=`?Dl2rlX)7=z- z0}@+ZhR7%{W(6HdBOmO=-J!MeOr*a$JcW$C3hIv;?q=UO*bE$Lt$#xc)pb@zgN#&r ze@49>SLxn_g>D$%Aj5{0_436S(sBE(+8rFTPKI{lkyIJn7Prby2*D*e_>Wsd$o@NI zFITzj7eA6JW8oB)waR@nkwCmzuW+;Kcp)trYc0maQ|ongdlADwkr*YFf(c0?CSs;~ zTdn&x$S!3GHZB}SxBs*?qhd~8s-%dXs6$dWw@As8dwv_a#d7>k<(`$08yzG5?sB8a zx>0iP@Eo9hI+fVpAf~fdJ7TdS-*A8m#K@UjZd*nRv9$^Bfg@-a z^Kmw8!L@$40pR$RR`-R^cz$}wpQX)d1jbQXuwVyH(rYCvc_gG~N;oyrn1*8#gN_R{ z#ySOX#Q`#J4i;_+BmZVxEx^L-mUY{Ng0b$0lae?(G7)%q3&Z}S#s6cMmRXWR(;V{W zR2P0;ZA|j#$;q=U93op+t^H_aH5_Tr#yckYv#RNq@RMR~0nTd_`HQtbG{K6~yCe9V zws2e)0xTt1*aR-tf@_WGbCI_so2B$ck#KS;HJVC|btq*|pmBRzAo76*hIxof0}j*5 z57Lo&4`h=GSBI5vckZ$;TC|(&ciGovv#~L&H%E4D5KQB9 zGQ2iJ#%K6Q6zo}99Ig$*!iUTTX*Og-jgT&AY&m09maK6szX7MX;4YxVadW6=0SkDkBxcewT>dh926 z`#{)Fe<*-s>Ao+3mIaiktg~^RC(`08*5wscq;u1U5>qtT`jgnJ~N9`pmZCc zT&aI7WEt{ib3VB-7LhY>d;2`Zn8GbWGmrG}#2UnCHsk)+ z=!%p4+30eU{5fo5?Y1+KTWj#+e_OD)OdAbARpaOu+2_+{{t#tGKI~*&0K=#nJ=Q~g zUmMRyK1fA>E{bJ<z051a8bC*G+XIc3U*M50|A+V|$_b zy3C-tHWzbbGc(PSv_LPoC>xv6y|akEv@dIk!nxXLtP1)*v2GwUa&Z<8FieF`qk*3j z^B>LHtouH!Tf*b~@sH z7?Rt#nY88`fTy&?j-B~S*aSn;nzu2(v4mxz{M$!MDfZiDUhOG`wB}x1e=OXq&B#MK zeay>BPF*3VEcB8Ojhk6o)6K%X9UX-6L6mOZMp^0R&6JUDF5z%)4$S~gmCsn2j8UbJ z*~9w-Agc0c{kaxJ5pGDc&ch(0+Rz-7p^w?bH09Ab$1{Nux-$)3D(pWVrexyr=$zpr zni}RJ##idw!*iLFM+YMBUjW#(RBaCJ63s=>x2qgJU_P9S7`7H{Jub5g8jHJ7L#UJ0 z`4Suyqi20{gK_$ASvu!B z#GQK?Why?jg@d|sAp8j=&HRw`am-R}gobyj#vs!d$0?MNZff`oU#zVdnuSxg0c}MX z8jV6_3RE925po>n?@=(cN4Q&4!voBrD0WpFKLjUog&jnMdgGMTS{m>?8h+NB>!;d+ zp*^e{hOy$4{AX7eVmuC?r5J8%_$$lI-vF7|W4O&9d69Y4USxzFfgd95$S{A-P5o<% z;grTOom7w(;sp?aUOx2?XyKBxMMFZMiaY2iMk7h7!XYs&`FW-1%xi%q~1Wn@*V zjLhypdf8B7E^sL3I7*vc5PN*D<40&qnQf4z`&L1^FHySk6+!88WrSLlg;JD2V;`u@ z^{73%po}rf7OD}(Si})1_93pyLVcCJH)hGGBi7!I->BjNZH5{fdt-3vX|If%#mzLFSPhF|PK;$0xa#0h{XnQh3N+4>oiYW07$) zmpzm`#R@qc8Nn)Kvyv24|L6}EirH1?=HThE=o{CqXN9Uw-c3^FT%8R=3%v^{XSTI=4 zt%ukXh*$}}DC~JZ=L?-=zR*eL3%B6{U5+cp&C>d7aMPO1LyTFXT{EDA5`H?9?>eqR z9W-m;v`$qwXkJUV-pQ42b<%H+*Z8lxN3v}uiG2VLs%J%3b+@unx~==o!d5UPMZNdF zi|qHZzc}yhjk!j`Yw0yGVsA zsW?z!i|vK{aeTfXt8g5j?-Uh|bnWia{m%81S1|{g^s(c6ds|%=Q~QV%lhV6`ypvmp7qVK zK2ZVIH^+Kc1z2C)Z>0jPZ;rK51z6u4Yq<&(AdqX#SAk*){6z(H3Eag%Wc4?~=X>~k zkJ0QFB*WLiirM&lGZ32~$7b|#SB~oZF6DPjk&++x0Y}8vB2`>pI>6^U314gWh}8<8 zZzVO*(VQn$KxxiHDxfsy4=SKECyGDm8cs`nfh{w%|;pR_M+@TO z^Zn8eV+5A_+%86#k8;lqHv0Q}!o1P#Y)`lf;nO@}x;z|>@OOpJ_Y?Hd_VoB+&K11) zd?x^~Qd~~W^!>P*x=nn(_o#(RAs;S~{O#iN-6j(t`z|@2XD+ZNfFuhP3}X6%+vG-h zNg_h)r^y*BtP7G!l~%80Qk9hr5~Y5q_;Zpb&hBSj*3O~C*DFo#(ZN(@cF){0y$WS9c^_}0nCtr&zGVCT*UE3a*Q zzIRl(*xrM-UQl5jVHqV>t8fLvGO9m;@ZrGcyBtg=9{y45P5;B^%ab05Rd{vCzJgt$ z9%G`y-NRIZ>)^nxaMIzsj#tm9bZz7F-Pb#5oc7@J9gQ(I0iSOg00iU`P&2*yPy8-# zjn6lvgYs7WSk|k$orhvN#OLeMK_Qb>A;<29S4BI8p>Woo^ob&ee?N+B)@cHI< zP>5d@a{eFNFGS(Rj2pga8Z*Ih|B|?@H6wY4Mjk{RIah9#( zZgAs%qT*;6Rorkl?t3bZMzSM(zLn+fq;sR^`RIWz{S6P@@1Z~Dp?~gq_LkWN>HmL+ z&$l0@<6Gg!P3D)5T2}@>-=EGvasR{T!$iZz=erNK>|4qABs7pK-wSi&#r@yL=X(%l zDNzyrKZ?)yA8K?*_fzMEK7NBDgI z9(qvtd^b|LJH*#>Sb|F=LFxz@=)vbZ`+)g7#^-yyqt11h@cE{kexN!h@ysPN8=tR} zhu?36&*wYTm*e0-GCtpO4Bp=epYIM#hz}z^-<=(of7tQ)(mQ_t;lSs+akdiaLE`h3 z9M5^A!sj~|&zN@}2%j&dC$rf2e4n0(Jl_pIpL1TY-1yA7h`xP1y1!ttwPQTGkg*e& z4HLyK^=usa`#*?HckA~L8JlhxvUsrR8n9&!ANWJSraJ}&z>)hfVACx=?Z1dk7g8_# zR@ihID1+E^eVPsho30+#PlO)yA0|Ayv8TeJiO#uPm*C+Io*B3C=$<@5_J;eYeI+bJ z6
    2@hCtlC7rSN-&N`7jc91UI@FvDg>``gY;dv1i`lO=z`|BI3S(ft>6d`0J^*7 z*g{Z{c^V!9n++dp_5Z{Xyx2T-4o@YUOlNrI=U<0J){k$~y2rs8aq2pG&v%HwN&;TdZs%4UK-QI- zISy2j7qc!{xJ|3yf?ZXBSd9uABa6^TfUF}fKrv3=j0a#HuQ|YB!%?tA#JWrE|9=y` z?(37$@Q03G*Mw|d^tyl0C-?%>{~h$Yg(ry=za@Iz4J<{_ z>yE%Q?||ra#Kr0Wz3%%c?VF<4eSm@fkkRWNN2UXz*WtXX!rQ|Ry1+p4OIh}1!^kb{ zHWHuiA{aqsHx4sC-Pf4K#Ab`hQubZ!F6Gaz4a-=RC2j%fFikmLd^$hr*yyiP5muHR z9&Lxy?C@AS{Mj)oJsks3koB&F6*iqs+H8|350G+^>S>$Ag)^Jwu6t}C*POReqy*Tm(@Jt(}oAGU>8w+dVcf?XVt zjaU2629@Y_KXA^=34YxaFnhT0>rN9vlzuDxx@*b$XHubq#INhx14g|g{JPhXAZXTj z0PHZah&_WAibK}TJJKlwA0>pWn*_+ZBb7eFm9~Any65p7(+*x;I8&y-t?=rK_^#G? zb!jj_z^g0bPiwq7xjz-3D(wJ{Ibd0b9lvdAH+IW!ir?mg*-+;{oEgt3U`Ql`(Iw-L z9ffy(C-`GG9}SDI{DlvQKbC;sW^@%}lxx-Dfvo&D@!Ot-`no3M8{oG+bJTYvzy9Rp zAmx{U-&PI|FiKQe#dxrR%LfALa_! zmZ(F>+LysX9#9e6RfG)BZ%YJkZ$LTQRD=xC>m`E6*AeluiVz=(#}J|L+pg-)Q))qV zAHB0a!p%mYTYrWTWUPr zfic});ov_s7iAt8)9vp_`^_=k)VfU)p4;9d;B4M5p4)4Pg*kTc+@3+uQAm>Ww>aok z^e=uCu^v3P`y{AtNn8bM?%=sCP|woa9#+rN!S3VpA>z3O&1+mhH;1!0PXKg_EtAEd zdiH1B{*z0tT|_N>=?T=|f$`jKK%YnUgTZq<4)sP-51!i;m=XG=^ZTVTc0qjI$;ETy zrOk3}h{AI#Mlg0^JY52w+XtBANb$JltwTIF*emBdiQe?q5Sfs9@!X1%C{@;(NtDr6 zHYf*!=e85`9owNAcy34IW_)|Aor+bQ^b~)O25O{7qA+rNDB{$V#=i}SZc6RO%&+YG>Av4?vv|5vM z)bjo4d=DHhJU8t(bmlx%JhxM+XfC9X+^+86UF@-jreQPZ@Zh-}3O-5S+C#u6xrj6W zq#C(+E7MXD+x~s={~f%QQ4T^hVD|d`{bnj5{R{o4nYftTx z@K#>%CF>uTNZQ6*(c(N**?5Krfwyv6;_F5IU1b@D*S8jKGK$J~jJHx&b2#u;3NbVH z$l31a4&=x+u$_ksZ)F9Cprrojf}MQQ@>SBC4+GvxQ6dYNe0cFze%*=%UQ5k+!gq|f z@)XA~R}x7$Cm-xjmc-%0TRE#kK7QVckHdwx@>dxp;{b6<@_6OzWO*Deyp@wWk&kl{?cr(vNjtCClUR;H_whTqKyp?N$I>v^I%}XAAy^w{rOLRyKSAZ5VTqcq@NI zVoZrEUA&dsTncZx$1YN>OW`&5pj5jQ-f<7gFqgs$?m_AAQh2*PD0wc$##=errnoDj zUc8kQI~F%x$)1)C!xG!8SO%(jM|dl%kj%kbc^|6j;H|ud=l|iYG<=4&A^r)D$-4;r z4{t?)PyWy0t(>_Jx_h|sR_@%*4$=y5Wr|Hk|K(kG9=w%NjOhSxC5*oN9pkN>D&|1p ztsE=Q4zvnU4`5$5eMZCJ5Q%&M;!+_hyp^|L5`Y%*KfD!O#!Bp!d9c(D_R4pNw=x|X z%P}PZZ)IE(QSer-Od<;2N_i4d@K*XJ5jhZ9rz8;tZ{^4&qTsFUwuh3ZkqwT+3U6gA zi2pC(t&G8I)%656-pX`Q(T?y|sz1h%jyu!U>YYMPA^eFT1C+PQo{YD0IFNXA?F2nQMMtlt`MW$vfci*X&`txR#>W=rUiRKZ)hO0pgRZ>6}6+;Z9Y=_)r@ z3*DM>)y~0sA>K+S$=wm&%KXpc_9X#t58ld;5yeY=%Mf+&cq;|p5#GvBTz~%|@K&}FZ)H`m za24@ZR<^=h;m#9)QFvGTq&D$Z_7iXAY~ZZ`bHa;-a(0YE6|$__NN%s`fL_rWo`!M<)qT_iM=1a#O3+9N zhXyC&p$zt|9T*+`Ab;f%ElM+fb zmlKghtN#J2gB$Af=sCTBHKIq;{pa$Qyf1X%(GaY_w@X{l_egC)8aCw!mZHsBnZHG_ zQdapIj{;DN(bpd^)&U}Apm_}OQZ53}1}*{zP|8*hP)ZB2B|?x!HX2U>rR)IGMu7rK zSs~`|Ov*%HG(xC)HikL}MwjtN z2Mt4@QUC+;3C^#Wiv_*}3HzWw8&ZZbTcA?@fYjBqutT)*U~p34q$c}Ki8v{tSSRr% zERM^66)q2`l=erf2jkE=R0imPLeFW~qRo5}hnj$&V_geVC)!X9y-*qf;C3`3CFjEC z?8f!;K|}6^kG-Zgq166c&@}8C&MZffhSb+wOc_8Fg3z*0yS)ifrbr1go0*&8ih`1h z-A-IS*xN4Sn&yK1SLXmn%X6P`UFH@LEE~ zIzqOXuwhE;#N#knxKW$2PBQOzfk(PNkA^m83qZ>>8=z$mqxER$9O&?D8=@tHm&*qh zanQ4YT7u@0=1?HD4D+MMY@h}LswEKlA}gSktS3s#Gkm{|($aOR(k^+k9+kJ&EmkNk zi&=EIB4|z%;1p;K*Qd>C_0m(O3Bt-^iCU%2cpn|loF+&ttF-8PD4H>i`Hk76#ik;s zEl-pu$sqO{U@S~2C}>Er#$vmK+s8|JcIh)~J>`+se75_&4Ku9GI2XzFF-@-g(ugQz z%o5<1y2AzBGVK#cQdIEp1Gn6Z8WP50@XoJn;Fbi;7FrX)uXKdf0_!9gFFT0Vg7htt z{sUmU>_vYA28@DzY59ieEpyPAWblz47@EIh^px_L_>b2*eGK* zrDTXHv*YhUcElUA$qqym>xJU0XNgC+^%Ks`zZrhZ(sxnoL&9&l&O06^;I}-6Df^+| zw_M0~i-qHTKrRr83-J=mfQE2C$v(rR@LS3}@8L*$ApDkB-toMrZTyxNTVGUJL8A$u z2$)f*S*1Na;54H+j^ENBRzuAzp>_b^L)_poTR27lzvbA?=pC^opOg7IJPO{Mi{BE8 zo#)`U%;q>2TOP-6nJv0?9TZTV>&irC9ph}a_0tb2T|5CE$Hj3G*cu0+C2Dz?sf%J8lZ2?cQ4D%#()gEQQHi6V!mC}Y--Ob5%x^tQT^PtM+^IDz!?Rxa z(>$$#=XevrDZq%WM>Tdb1TA&;RM`GB7ts>S(BZBrBz1` zR*(F1C6v#g671GKxD12v~b4+Q;$r{#m7md z4E`ug82d4q3HSd_VT670^j&V+MNWvG@zo@n*zJ{J?eY~HiM&jo&3fF0^!UELC`~udxoxPM$^4DHrZyjAJ3Phi@#`oE%FI`d@#J0R64 z>8mfoJ5nHAsDDX;B#KQF-s%`Z{uFEfLU&WFRgtxw&=2cnD7lv_s{!38MjRYB-<$D# z{PI~rTny{JV2KGh5}}; zVCH`$XFlsqWY#_J^XdT#sf!o#Ddqz!Xt%5}Qb=2RaQiDLjlSfreYfT33y+2Dz{?{n zW-N<2Et!{TkZWw2GJMTo~eIINm2x0BNk+%+cmE!13S-`g}OHSF0 zE*Jw`q}_slY%?CX0ElM`O-hbm3OgG+j`4F@{uL76mM~UP7?|SOQtOjkQ2+N3|1ZXi z3Lldke?Kf^?9q7sPoWvovAp$`-gg2ys%Jvc>5Y=m?V;8f80pw3#@E8wSq~@2pFo`t zBHnhFjJ>;GtyE%FG`7R@ywCHT-r}a|?s-1J^X&IL|Jd_dAx1Q&FJZar zYW@=o-_-m#f3~m!W@_`T_%C*i*gz#8=Ms+$v#hwVtSCHEH~Xo(6?MH|`iCLj@;yUp zRF-EBDvC_(3qfT?S;-n;Iu3=#78reRGlv#oXa{=epbDd@*SJcfZ;wbxkxw^DDuru0 z>s>x#wNsy|73MX43Aq;XH5w(D2ls7YiIJ~c!k1acq8BsTD5)Uf1fAz!uL95cjm--w z=ax;e8xRD3&qO_?W-G{ZWq!M^q?q0h%+yzIXtvH|$3r>I3sn0|)UAaW>CAD(*fXm@ zjIOVIzf}`xlO5P~4pK6y9KwED|E*|W8vp2q* z6aN7Uv~I=_q|Wbg&OEgel6?$SrA|bqqDL5Cs(F6hR0^HT^tyRrve18K3w`(?CG-@p z{3!35Y9;FrJhHZQk+tZHH$CNDGsI3$0bjHwF6-bMU$v|&;SiZ%piu6{?-kJ1QYB6S#`~X-)o! zx@Zke;6TTbZCDPNKd87K+22CD)4xJD&zfJ3={6du;ZM}|hCQ`M>is6 zhB3n@U&CZF8ktztQe#M}FlWc;Lpew$TGg^il^x4h^1~%rc`Q4l<>H+BMy)<1I)t}N zPD%my)uL*nNXNJ|o!=W$z1vUa6SBuD@!<4F*eEJD)|vd7)+ukXeaGd7j2-SiC#Jn> zpVONE96u;`SfepB!MzRnAH&Y%HP_g7rlcZ&Pk%FOK9J@*M+di=g_tE?wAl^IvwS6{o{H#5oVkVHpaMsrM_(3HO4v4|k6{GD2mG(Fo{q;bubP0Z}k^Cs>er zsotja3B9exF>x}iUyfm&ChmhWbfDK&|M_>KeXF@Lvf5X;`bN9IN%GoKCRg<{Jn5ys z4Y1Q=7C;kl3EIjmE#RFf0^14kY+!ANN*iLF+Kd?nv%EU~UUCzgC=p)zQ=~WF<>_aa zJ`Vxk7soSm2AvE*abypMY%VY_&ESH>4zwRlH@*uDtK2MV6g;=zQ)kU1(4Z|9nOHIi z0nMuLr5pc)oNB!Sgd7%gE+SdX-BOHQU#FaKO;Q;-DC2EptGQOk2{Qr~9?Na-*Pn$` z2R}|3xIm0OMpX>!SE=znwhso_H5gR0m$aJ)Lki@lp5JiIXSRy3QSsq9SU<9?mmrSY z6n_lAim+|7IT+fL3N?Olyk6}VC;D}`!?M5?>ks3o#s?KXJ1Kmc8^$y}C3dtMrubr= z+%V^rv0a-J%i9(YbD8S1;V`wZMc3mWPrepsz_|V{h`Hu%Mi0X|2Z*TyDrTU_=z}Ssm~$dPBas6&dII4d;A*JMul3{2q*aFM$RAKOo;* z`?n$A&W?OLyYhVyX4%89$d{5e(`=P6j==I+(4SUqlwl1`R0GRN?WzXtwbBc0g}U;6 z{Q&ZPCBVsnfhJdfL@Ese@|3 zt~&KN$y<-t+R|?b?fMM!Qfi;mACEwNl)faKf6CSipPS;3KAytL_@1--_w>#(vbjlIZDM#em-=50;*#l$?zlh$)d`|Vh;X_R{*Ow53IUvm_ z%Q6RKKor`-0bS9cJ+%d8r)Uc<=^oj-BC@Tx%ckj0aB5^*ogEyaMczJT`b9ZN*JJvn zr)mo?Il9`o)Q{kCdsbmVF$;4EZNU_+@x!#p)}4`U87o`TyX-^el2hujhK@UN5k26z zm0LSSw&oe|>?t`Vvh{h1$MeZ3CtLDqB-ueNvTdgdE*y|mZIqmbfhPl7j{|Z-(UBtO zU0RQlAKJ$64;NB-dU7(DXi!e3^8646@MKqcp5j0iH-K9G9$V+IkvS;SV^g#?^auT* zC&gwf(8-Akba|qEM8&ko)`wym*m85 zmuXlrl3bCVVJB^Vp?cQkP$t^FlRf$z(`8Ol2a;MZS;RSIYFeu7sMxzH=tCK54Yy)7 zL=08RZ^TwgUbQwJJd^=Ype%c}>ff?^VonwC^>k|=HP@Ud$n5D>PfU(DQ^W+J>*cZT z2r0fVx7P)zub2oH05e+VH4Foua_17B*A6VkvULhzpu4??E5D%7^t(#Yr+t)-U(Yv3 zy*~p4e0CV`U7dP0My?%Jc%5)jPO?t;@=fDUG-^eSZ;nJ z7A>s$XWaE9E+a)g!Y7F5_8mRHQMzVzWPj@TymI4R%xHt!!los~;857)<*m_fN1~(T zH(Kvur&_gy^#@G$xbUar)md_zPYphY)>LwkwYuT8t-rTAdOzI8J9zy=$H?oe-PfPk z(d%b!MEkhL&b23~9Yqi{JEM|AaBX6uC<2ka-6v$By1zJqZfUEq>oi;Ut>+fb!U3Hr z9ZX)5MKcwmseo)Yto^E`62iHR?K24)qSgnnDGCX76$xn#A45eQDKQ>*(ZS3#$sWLz z&Yh$!#&5)?*BI2;`Uy&DUMA`2TckBymzeO+NVw!^B<#k7cc7lw%=jWhYq%E*P#tj! z)NbLt6ltGk+PAT|8{>DJQ*LLi;p?RIr7Hb0rvE3?b2HCLf0EYll%3w*HM!+jmA)UD zp2qaN*vd(Nves}u(o=-div87*eVw#hK7x8xb0Yl?dqVV_FobB8G3Q3wgjuWy`1%;J z3HhFM^8MYDPh-B{GGBcE)|SKW#QfuH@y_r#=Y6lBGsP~8zYq0#G@kxz@aY?`Gkpot zKS}-`V)`>xdTBSBUk`iZPhfKB&pCscyq3wiPla}ohK=#s8f71l=7b(d!|^fpilnJS zVHCwZq!*FCB7uG_>3-55N}#_(dRNkKPoV#b^v}={V-phSH{SgKdh#%M`v3&IahXWw=84e7_4BO#u2XC7@h$~sZRKXU+K`a>BGC?Cw=hD~8}#U;^%<_d zX$!mSkyS8&O`VN_dtqC?sx}6GgCm*~=xd{mKa9IIiXN9&jo^4t3n%3`}OU_4uzzeiiR2MayB zGMbN%*RML5IxbC*tj-7(Hi!G`#+x*Xm#&b?y^}O-guz^ecL^*g{on@bS6{H%{5WA)m;Xc-8rPI1I;KH8QMi7&c__POHBcmC+WKz~MC&_m)N{ zrJQC=PN9|`MJ@k55}K3Y3DIJ0UrZezl#6L!Np`uxiThA|&Zgqa7fN68CRJGLQM?_` z?^hf8eyA_381`u^OYe7@#2)-t|ax!N(YSnxdL5&DKHGGHr&_^?q!;WHnQeDE$Y-08mJiC z=_nC)7Hm7EE!@q;zYn?0tV3#W=R~vpi|SN!dH#lKV-OZ1Cg$aDsWxzr!nw@ zI4+}kMSOitCtO=?94WT0a97Qn z>V@c^Fb*Tp@}0&n!mE#CQ~n08j_X&%IudRh6Y>_R%5`d9uIi1%H;~Ve&8J!vfxJ33 z-(%~=eb{=6^|s@Yem2whbi+SmxGP`gic77}UK+Th+}Ix&UTXXc9%>u7<$=y!EB+)2 z)@?Mdcl_c=?bc8lI^crMuqJ;*4X~PGPXM6?G6_5-r77q?-WQAp)-J`^gjM}5ARJ5T zaVc>2y)rZZ2W1S0SFN-@8gUX2Qu*1xXRzlIj9n}o!H=%nw#~}ifN;~RZe$nN!yjoRir1f} z0~s}OF+Lg9-E6usHbYLc;oZljgny*_R+iSo?dn9lUSHDHPA`n}Mu^u^skJqiDqci}F51y3n4jFituR$)x+x)aq6pQ`WU{WS_h3QhzJ|9Ud`j>?#pB<|f8DJFsi?$KNm7sU zrEXG>*SzWM%HDx=&U@YzYoYk{d6Tj2q z|8cB|b6%03*rCN#F=>L>gTiw$l=_PA`HHm#UyBm^zJ#24<_eS+-rggQ6qCypgiZ%-y+0{iOB1B9vG$92=K-d5(>f$COx61-8D72*( zm8z|@Qb8cRCZGw>s-X3~Dq3IeH7fXqh)Dj=b7t<|yCK;2_xW}=A75rIqTfjnyx`74pkeqev}p30>{w|uJYm7X5#?`Z@m%oOKW>GL~Ls+9^=p( z_{Ctin>&JV6zjw3Tl9cnQB$y?++Ps*^5syn_oK&Sl@?0mY(EE^bcumb5^mjgxP2_l zzBdH1itPgdQSQ&TuZGGha%Us^D7;{P*ZvH#s{h8?N&eno+it?M_Amj*eAfTDR=}s| zytJ#0TW_)Cn&dAiF?Yz45$pP754)?@Qm8~MS;q+lo5x>T5$GD+oBId_TF-9mTz?pa zMe8T@_)JZQxaE-3q4j%|#0@RVbWL zdWv)7Y=B^542hmKLR5vHq~@=md*-jg#5KL@o~!wRGk@i)aZwXp5k3_CQeO&`bC+Mu z_iCz5#VvFvxyM|(lKJfqsrjvc)1ZrLz862zb0)O;-WLLa<^c%g$8k^$EAswL+cAS> zpK2^t0dlm&YsFJrA zSTg`XvYL-9!|UELYCl0B(30)Xv1Mg`T86MI3Fr#9fzPNq(G5C{NH;jKup4Ip%G|~x z^HaSr5sDNr$4DG9+wBYyxI$_kt6d-y~fsjLA98cQP;!oy7{dedpaD$x% zLWUeBit6eiwg7m4R%S-q3yMzhIh&s?{SUA`_n;<@Wx!b65-4biKH`**-bTBzrx|Ts z1Ik>7s)D9h#gsGQEafVcf~MB>Km%2|m#CQ9Ce?UM_g6q3v(U#`XxFyCdC=ekuoq_! zV6cd@=&6E+d~4rh(n@%}=AaY~$~WklAcUK@EHS&pJYrubGCzjw8A1|l+iK($rPruE z4$17SF4t!*QRQaA?t$`H?jN0Ub9K30#FB$iYs=v)ru(c1A)D+w0oMP3H9D35W}Sb$ zlYa*SY*(iJq=G#=)rWwF9pu0+)390W!#()eLbZgAKk(PX?Ia2|?RSV{>y26(Nl7p= zgrt{e0Y;E*3M4C9faH8);!A6_P7{L@Xxpf3hG3Sl^Xqz#hwO)&gZ(|HK_}>hZg>F7 z&SrzC!k{#qrp&d*p+tu|>wb>H>?!!88`EwL(G_ySm(lJ64ghhpKW9o>^bTSd{;y6$ zeun@D>o|J}OQNnt=!1VzWK{%QsLs46G11W~Kl~6>N3PfTb9G0qW+}SK*5kSqIyl(S zlAV-xYpG6|jPmVA-IOn_J0+!NseO+d+ip$J@MoiV`*x&supflXPr~MIES=%`F}j}} z23bSas`-HH54!Z9OppHF4`qu-|J_QGbH0T%mw5n3f(v0X-;Q4&f1UjJKEA{EDILDQ zXwOK4Z|m@Vu*3I1JA5zg@clyCH?)di;;IUm{i5)=S<(O+l<6V?WCfC8$eAI%;M@{w zehW*d$nhgn>rWpR)x{;rNZy6?!rX@`eAt-8l7+|*Z7gwBc_5kX3uf*Zw4>&Ppt+k1 zS#&z%>d>54xEwhajS)~CzJlD^Kqo=#2JljuQufBUd17cu29*uMXiJDL1-Yjqw{<2m zs(fvWJgX(t=iGhGHBWLzE*45K^x%C8nJ7Z$OKHoce0oN8ftN-okrjs15G*2a1$Dl< zi)JWMSX&D~kE5e{rsaXb4JE+jCg9is_k3Z=qa96IS3%kr+Q*uq-SfywA;dz|e^PX8 z^+N7{^$VE$B2XF3HzUcuoUbwx*;X|cStp?$+@H3qOI+nL&{(dvmgofHpCft`z;8Yeu&6CUdcKkW(Edctpb!UpzP zopOpj;afc62R-2zJmGFB_oY^Q5W+ZrjZ1PcV@gz#fcIPx~Sdq^FMkICkfRWDF$} zFOvh!?!*lpJm856+^hoHv$?Hs7^%7k8|SDV6r#dL{Eu?qM(a75U8p-i#Ya{)j2!m_ z>};!Rk!j8mnrNav#Yjz|N&qbZ)#ti(Wnee+X6N+)ex|y0?r6efl zd>)~(*8P!+Mndq!voJu$!7~LJEGJ}U=h=V7EFtTkRQ(WWjM^q;E1SFzy7 zVZHF@s@{Rv!OWVzf!J5sGtZ3ORh2WNlpFInD>Vz`406OK_5=(^uIoSQ3jX^}>p+h` za4MA?ny*-P^mrj`nST<)CPWeo4x;q1*%TSHBYG0Js_t!kuLl{nhX*y!#Ki|!O-PJ} zTU|W{5O902(uww_`{};{w}Eh>LAz&WnZqU}Mo$G86*mFft-#3jUa+Z&(NTcGE}T}{ zGabO9iP5tFmfr!4Ud`UpW+g_?23SD~%&6^yCI!}Gdd$EQHs}Bw_1vvAhs_4590t@0Sh7w!*fpOC2VQk)q=+%p9b|VwH&BAY= z^PQZIV-4vM*%E=7R^>=eN9J^h<2y!l7cV)9P1Tf~-b>BtY4skn^+w~j0{dLo*3deV%7pL`;?yG08&#An(v01-|Y(cQ0B)T{z$B5 zs=D1v(x3!FuT4?8N>|yCbmCE2Q%Sv!N^(dZH6rUtQfi#l;mQ%4}Nb*zd%-5^6PPAyscA`5>p7{vSaI0H~x)L^A0xl$ISU)CID5V>}{B~HC=Gt3^Y=)5^Xj1&D_V+O5Y|xa*)t;T_^hw|T-R>~dkw_JptSgm3bM6Q1yD zPxv)YI1An_PQ9ml!b3gbN>4cH3ID|te%cfM$P?}XZyu-ob3EbUp72ahc!?*x&J(7C zlT*%@p76;}yYUx!!lOOmnV#_dp77s2;V(Sl)1Gn5412;8Jz>)m{*x!X(-XEm;p3il z%PjJQdCUN;yO;C^b)Bpg zNwAA~sYhN5r+B{8;K7vtCA?9)8eIvDj3giC3XS{WTMH3@;KDJ$laYpqfs8Qf!u(2X zm5CND^I7>13X?N}|1eQ-I^)9g%EUDln9eTnoX52AB6ZhrVs-}IX^q+y*lxC7!sq}J zvRdcG(VQ3Q+A<%K3F3pr@gIb{%vw_G12Uv>M(8wItV-HkmBt92=0lJ;^I12lG)Cw& zZaJv5bN?XqF+!&m=rqj8&=IGiF^tiPl#a}(5+@*$F)H!VVoCfcdTHzq*a`}8dPRul zWUG-fF>!~_TBQQ{*24&FDL_65cWc*u(gtSdzfj`Q5cFc6Pby&Y#SeMTC*7xD37}v% zP8C@8a|BCojWa@}EqVk&=$IETT7>|QsRmj6;16gdu}+u9B$yOR2x!RM5h~gpYCf11 z!eQALLxXljyM;{29Kse<$b1FF)e8I}NBsSR=Bu7LwCF1})5t7#tQbM!1V0>oHUgPb!`CWi z1{ND`t@ZOVUkMi-4kYLKX%S5|rj&CSz_|g3e=NiqJJiBfaGd);r!t_rQjS&f_6srb zO~u+2F%^hm1FE55ASe?lq8kW^lJTQUcCgYCzm1Wt@!4*gEQ2I+sT;Xm2c0=P`Wq5a z&hMd3G-gV-3v*VTggs;~vA6cYAGk2VUK(GBAa*Cs>0?@lmNT(sXjLY>h^kw~?mHnH{2h${j&@?yd?O{6nT>o~&V(sQWj ztN#m0hmwm(b)cwF{OyB^CrUAP<|{x!2l_7h3ULmF&uJEot5Z5>X-Lpy%tFnVq|u#F zwnNovG|f5VO;qMkbLXU6ZN^FC|1$-nVDf`CLt_L31-Ff#R&CbLMo^$V^gkJp_$<@xFhzY% zz$bbeLka493hF;i)t{`V5Db}J-Dar$Y26N-BAJpikoA+MRsG|qO<^St&z+TC=h zrs|u*`ldOvd=#sydXd83nq|GHr~R5YSaVMl)*_ugs;gP))n=zvTdcrg4`(Tl;Pk+H zG#W+Sh@pU_s^^e&9K2rvOb?!Gza$o&Jt^_pJL=eqFnVt|yg_vd!C`}!rJMxS%;~F9 zHvyA?tIiw(qeK!9bHd<0{E$FwusBnL99%`C*h)qH4|L`k+eG#g*J_=0C}$?^DwWvv9Oy`k_x zFX`1Vl(yaRy@L&vz2V1ObCQua{UikLIMc|x{Y=JOh?ol*a~WbTLm8t`#wh%j;kOLG zWAHmBQBn@GRidQA99n^Ls~Uz@A*mWk)rpb`=FkaNzu(Kvmvu4V04L8x=Hob8U4#Bs zzrH$7Axu}lzPhFQTmAa#mg{fz>#KW2f2&_#-75X9etmW8^|$)<)ivpF_3NwKp}*Cy zuWq;gR=>Wwm-RP)1F^$hW{eCa>MVR)a}P# zGtR#NKFA+4&L8WfWl%`#W)T*z4C4o~jvpWgpH&3Z1KW(|KireeGF7yDqRF`bXQp(sg&iPz*yzV8wjs-h52--EY?FHI6%`V zqzecP`scLgsWM-Gue8olnSp;AZ0KH>sH3e29a@SXC4;_2KpwrElT5W{~oO{9Xv3*)3Hlc|B_gHDZTn%GB|b z$A`=X|o>IukdbKO)GOR?F}sC6!y0ij;z+1rtM!)&Fuck}yQt>f7nQ`QV^H48)W zSpze0UK67hNjxg+lFWClmS6Hd&=T0z>KFxump_rry_Y9u{}8cL2htK}J@zXUr4SU_ z5D8p!*$vlB9S^9`pi;P-Jc`Z);w>=C)l?XB?}IhVflb`Q;!4cV!_Dt>jby%!EXF!8 zdM=pu@-9YR2-bH2(HR_&%W(!ZbfU5Da-0qg^#bq+Fn=kTe+-zv3@1aSxl-IL7z*2Q zJ{0PjQ*BxkTZ;#xeYkf7O|82YP}P{OD~-C#5ybt3_&O0jFN5&~3R1!kHk|<+`E{XQ zkwnG7^*mui1Jw6%zGg?L+5S-=hOw-pM{&S>HeiObuSoW~i`S{=;-aLkfW($O{DVhA zQr6x>+GYyxNW^J=T8y5NF+ws7P1cBod`xBVW@#mS)O=Q{lP4^Be3Iw4l84Ft-Q;4p z3{s=A0Wg5cXj8bnp1M>@f(7D4!)0{ zCP%d!MdCj2BD(pKSjj@oADo^X{A>6xXSNp|2~{329viu)pnA@1|M&08G=0Y098?^h z^W-*EApXQ*u^i^&Gq9eOwN*I!F^WfxXXK#92nMJ)WWE?S9@~w$b21TU6v1X^6itG^ z0qP7Ud$H1z%;$ndFFMtlz1D}~t(mB<3FQy^%9u-=TOjj=60`4Cbo&B-aqWScB{Be+ zZF`)3JBS9z1mkXAt84!oe>{4GjWwkH=5RE?9j|lNY$Vru`14LcR+|ev{Aph=i-C-- z1%R}UEP!qWO}Zr`6WfD0X_DJoOe|paQ=BiqrqEi7?!gzwBDQd17Uy51b|Jcpp##x? zoUGfylR{WX_gOcmzFLcYtN^k3)@Uad^xzBYs_hWU;r;p}{aJQDAW-B6`@jA;xBpe+ zr~Rm4;`G*f_K}+1(L(As0M~lSR%(IO=Ef+1?W-}!kT)OZMv{xDjFp)C`!@yXoBOP5 z?!;Pgj}1{{zGVFklGND*?47b7r;MRv0G4L&oCA14ll}f7uVM6+j(}w;z%2l@egmX9 z%I`Ti8sk|Y>H7=B=R-TY!sp&|_LX-X5eIyi&{3eER~dDmqvI(Zs&+1i0V6pXL(@_} z7oCTgkB*;KFcY$VJ-7QYjMSAqv@`;+t@SZPax%~Z%0jL~0#riY@GRX$5~m5y1iU86 zIWY?ZHfMqfX)^&FeJ1&R0rPY71@7~Yoy$9j*L?#AmCxm_AKYUN*Jx{01J8l&gA1Wy z9fBO<_16YH1@A%2p?Fns#e7q>p3B;5-T7GfB^NvA(y2y}i}ca$i0-J_NX?UkQd!5T*D--bb)*Jw^e)4=)w8?t2a4B{3D(Be97cDr~_){3ky( z#%`-N&f9L>or8Yi6n`^M@B@15D#=;cnhtfI3$+_ik1bba);I7sX!z=PFk6XHxC3A1 zPvg(n9o0eOyuTZFzXNRJyKLvD0i*9u0xxLNzNBrnA3-$iCZ|{SUh}@Mi@6g20~>_%q|~QwSU| z%ANsS-#rk1J24`keQKPwBVa7ScwDy&l8B4Zx02{as zv#bM!YPJJxrvlr7(w^3(5v<$;_IH3i(>d4|Y(Lw^0YY=n+CjL0aos=Ic5i`adkTDw zkkY=+AaO%Ah?fM8HM~6^KcFWdT!_Fv0BOr_;N}yKcH93@8^;RiC)~jjxv02q)4}r`M`BC;itMO+W04h*{&C4Cpe^1?# z4hPmAOPS7-^j`j}1pnz1j0KLQ#eHoU-ISQE;~5RbwuF-w^t@G50YAwN6;WIPV!F{<=#0)R_Cc z3cY8{-Kn6qYALaRybiSaa;72%1Gx_*YLm7sl=^{!N9bK+uC$-5OFl!mSQ)bj1LN1>L~?!E9#GbG+ep;t^)|LJV4R2Uu9GH?wNOXz zUvoME=_4!x4J+9yKgHa`%cT|g^6^Uq1Jm*$);{<&Wb}Osf6m&07Cmjuy%!~ha0-$o z;qvy_y-PDB6|i99>%f+IiKQq{F*XI?*ljGM$th!pF_#vi&da#&71BkhYb<<|%B&OBCBz0jRO6py6TjqBe*rtimH z-YK}Ac3;k2FK2R=nudb3nz(_}I%n;Wxr9@*cIZo)pw=M+COeOs2wrr{Ye2G63L2e) zbn%$>nMs;vxF)Tc$l&T>vMhAU)BD39yX|h*z+-Fvt&6cPzuTD_e*~7(e4RSq?dESu z%fBp@|M*mXUYqH{x2C}_COk*TdUcLd-#Wk(ugxx`fao&N%7>84`cola#vUB2N=P4MFYj-lp=U$3m<)bLN| z$PssEF`##Ujk;y%0Z8jP5J*qV?F$rXj9n0u`17FL_)eXLry`8IA3zMmIFyjS&;Wc_ zf~LwBESJc!3mP=IDfVsS?mwmjUj_+WUautZ*m^zvY%}ZWR6VU6rEb@X2K7s`o`WU_ zLyDzC>)HQltf6y5@*{4Cp-GiX3-y^Ow7C2jW!IuW_DI9?Vob=xj`-q$=A--;5nPUZ z6dYjmwS4r5vctH$N)JB7t2%#A@|-DSehCwsB$t?5bO0ZX-8STX3MUGU^+*K z=^R{)QT=lH&ATku0bpYZzyT$I8sNOke9jg}^}^2j6G9vR+y32> zS>S&}8%P0<5u8QC(hymB@Z2KSlwtEr8H2m=S&c&*-7})NVPm$xAj7DodKZdsEJP9v zP-W_Cp!zz*FKwhl6>uxSI&ORx%#+hAVB-mrrsv`_l$_87Hp1j(unv~{L%gOJCWZZB z6SrYJ)poq2&zU&(YKd=Fgl7T1r1jNo8=jneBw&8XO!?N*+c>q>_zWEWIIB7^=rW&C zyBLiLCMz>T$r8A1wiJg3VI5lYHy+Xt@hJPi67$_KTn!_cR`B8~f6%D?l>H>GaSg>0 zsnEy+X%zEep?)-KkwsF;=FdUrXY;-(LS)i4N;v3ToAxV-F$ z4CGE^mK|to3G%5SHR^6ctQK*!qq^sD zvHuzCCi%N(-c*kMSApJ@2^xDwk<5>*;wUZEv_gxuS}sb5B@#C1!hzQLx8pqJHB<;> z{V)6ef=$?z#M*dcme<81+2f;qPz`=|D{M+*Y$KJAr(ob63o68wByz>aWX$LN+lz*l z;|%g0y~2q*=!g?7uts2darg-21ye4WDYGRpv;v`EsP(deM5KK#m4?*(6CYZB;nrfr zx58l>KURXpDDyiwF&cuc+3t-jn!kc5I><~s*g7zfoRMkb%IxO%x>}z?&+=sKUt)ft z8ODAAHpbAL?IfMX@1hbx2b|&`+)v5z=4UI!4Kaw8x|$Zr%Q2DM061&NEJrUJ4j%%Xhw!~t=VCN4)gsi0H*2VDK%P`EWGO}d9;-5HQT02mPUBWPu>a3 z?GZVgb^k56ay=sx|Aoz`%n$lEg_Ce$YJNKl)_c%SNjCo6+|~Le#&x)9K|uQ&%I0qb0}xMArqSKS&()tLkNlh48s9e~tz+1O2DZ$IZ zA*DaC-DukT7*Xkq+VGzYs`B*X6{LFl@qzkeKOi)fV}%-*<=vzW?mO z_t!Ws>BYB4-<|W}%iv|t7D}yu2O{(?%KK;&W|H`kvY(M@02;Q*CP5!+|lS8n%j)y~G(#xy$uL3Xv^ZYvy7)}X1 zAL{~irQBbPzg7NH>=Qi|-UMvOzA@q^`77`@>Yo~b?Jr_h`TH3~%ls7F!z-JRvdq66 zzzA&e#}F`zR``8LM8pcI4uQpfF29(qLZzH~5VDbwQ`Pqw>U*WXKz*%&yuequDlKMTBs&?!*s{vmrLl~~SEE@x~#u>6r&Il})p~CU+Vk9qf#%YE0 zhMorDtWj_P{&O*wTudaTZz|_n=6Ib;MY8!@M|1~RAKj0X}>wp@6TOi}AHmh!bBmrTAJS)QPV zu?oL*g!v18lb5$|p;L+w7|OY17RduQcN&j9V-&%&hH+8GHQT2%q9A#J8E?+aJW%v$ zsPZ}EvB+Ydxy$s~wOBWWkEIWv@GQptjT^COZNOW-DgEx4@L7caE8)w$@Eoly)Rm9A ztT!h+Ti31j<2dR7`fjiwGRyv6&)C8sr8G67gIE*N#^uSljUb&ROUR%O46pu;tYNNMRaB)QGXD1 z=+o~_M*T0pBPQ$m3{(lz^#UJ$gXXXaaO&KqkDbRq=xVeyH{f*sB%Cgf9m+Q9mz<26 zl09C3m(6_+)`F|5^&OMA(hU8MJ{^NDwOE` z!W(e@2>L?`sw5vLD+@q|IX##h-{uRoX4HR>1({J&2;W%Tta>e?n{e|z!l~C=!ijnQ zy;4oYk0*L|8g0Q)Vb?HtJ3~l@Zs%##U0G z-j%`4w}YCE`O8>Bj(S?Aq`+*ku7_AawJ?WJU_?(>xq_(B%*OLqXwOlv%CKFQZdaMK z>%KhIu2h4@yA66A4K?bf`;XC}&zRNQpj}v&ch;b?V>c*(2JJ_KU~-Lcn5MYR$;Xq9 z1+TFMzwXTz$QYd_P3qd`s3v907)_8SW&4n9${1ag-lQLJj9~MOxFgg7a{=5kG6AQS zbHj z&0cr|urqY^e~q^TO|TcE9k?H8@xREqPJ?hfUpEMkRv=c!r(FgNo00@W@y^>sAvEZd zJAah^HqrNvY7w)b|7g)MpC#I!8H#^x7`0DuY~o)-K=A!%4BN6vP}}Op;={fge-?so zUv>C)B>46@qhU}lhi?}vzGcURZ@bt-Q}bo=x_{|>Z7r0m$?I_WjqpDomgM(l{cX2- z=6g8|ysv$ae$*{Pu7J>yyX~Q9lG6VpiQ%{ba^C?cCXLJ3iPjS8{}~(9>E;3N?4=Xj z`-twxXiRYhRslxJ+)fo`t>$AK<7h9PFgyXx7fQ=;+EFI{fLnJEQF77#B>)WbzG9N8h@_**7|+&yV#%4U*dKNC^wK8rWPQ0n8{s$ynv}C%okgz_g)1_ z5U!jFOy8vzAnR1BT7dL-Q`G|GH!4*rcHcp&jC%ze26B<1o{A3yRygCZQu?VEAQ*I& zyjXgv79gXs0NJ1yAXru@fMu%No|T9UN8ST^C9*<>!@CmUkYH^QlO}OIjJ(Siss+e2 zEI`IIVG)7_$c=l|0>q*2nVl>^uEKbXKIQ_1kB@m4AUV-DG3Fc5Y+32*B?yt!ltl#B z`j_Jut;)HcfbdOb+$zMS{Gw$|vbdITYFQG7{zNtv3|g6kaLi@?7X`@8cN3N-vhP+F z0Ps}>h$;Xg<2f+sUFJ)yXvEw2;65{$5Bvm99PAIRhoeBWX4>TGq{Z2!MQ~UZesM87 z^7KTW&{l`|Nw-m?A!Vg38eNtPZFX1{`rgk014ka9n+*ZGukr6y+2+X-6G>RKtC(ea z$qZP9W2J>l?k0ec&ouR{lv3CTA4Y)<&c`pgYqtQ_`ZMGkm7plD-WSR*s*qolEWax{ zFcZo}JZi)wj)Fpv9>Pfpp21z&DL0YF_al>V)lLI@p+m`3ICx>sTbY!gH2ScVBt-3Xq# zZ8>-gJT;;T3wrR>n7shn&*tKVXCIy+J&LD7l~*7Q4=5aCQNOA?`XkFqYP;Yr)R=S1 zzYqx&k&k4#uX)SMQ{4dL@YB)j{B)ke0uxk2{DGxPz*0+<>e_*&3IIfwn&)LH1H219 z>gDhM95@QB1s@;KKV8T&L+dNYamL`-*82U3V(T}*f!3#H6L*3`+A=@uAXyK_FD60M zc7e*aLfYtZ8(0c5QKi9(r2;Gcr7AGbUx9$ozlzx8rzJxyWD4iY{4otd+@o$x#fV^y zyXAMW|78KF^*71y8lg7MOED5lk&@r!g5~lJ!;btyyveU3A`}dsV}U%I{~snOTG93+ zv#?Y(S*k=>s>I7u=T?jMsaWdrK7g*Q0SVoqSjwkT6-)JXQx!{nI$mq8oZ@;S70pv~ zc&HM4ZPXQ}qJ9LF06{=W5Y19++*yd7RV;-!Zc=tKC0C@>-5iCy4VtB3PL%IoYL-&6 z11zUmYO%;0a7_%EVXYIE8UvR4`EpE6V5!@hz*=Cb5qkjymcp1MhJ&SQI$^2dNW1o! zEOqK}>C@EHFQX^_%`~-!fdA7pMf~Yms`7itoHk2=SKtT=-s$6~BDfbsg1+ZG^BMrD z0g}}g3agQ9Ih^hc16CtTy`%H|nR!yWAK340BxJg?7GXbEu#ogB01W8deUTgNgy~1k z$B_Lhu-NZIz@z4^@fWC+75;vbl2Y>^LR1Pk4*{~#Lit_nUn-Ex{H5|+>yOE=(g)oc zN|6@Xi@Z)T=VE*q`u*7?lz{?9!#)9X;b(`KffDpj%3RyS3# z(W5F=%}nVPubRun7c>7tDJ#xrma0m=~L4Q?z?>B>UjoK@rzXY(P;l&nMD&i{A5*Vq6 z=cdfp$pIUmlZ9cjd$G9#hIBlzV&wv*TooS2)4^=Hh}mt zjG=o14M=k=dYSgwAEE~3aRg&nmyOyO=G@uXe-w<5Ujl~qv``|a`R}}$tM{vb6C1dC z4dSK>&>~D#WvC*F^h8_)>wN@{tQaPQibg4u1mRQG7(ee}UrF z`WYuG`r>0De%GqVT0%fww&N%>WnYzLD!T7kriNc4o?n6pEBEJPo=#2YS}^g-9Z+D- zo)-b<6-*BxAuDap$Goe6!TAV45J3xYxTi^yC?SFBQWXnb7qOHa&L;PTAaowYor)&qyh@Z{ln?U-M_FDZh9r+jqU5pb#Gu8(Fk*#020kxFpi8ELag3twGy=T^ zQirl^9{{hpB4p974kF~^t06+xSRQ_4i_1`6Xk&EZ&nHfr7`>J9t^%`p!KlcHFqF(P zgejxwy2L%3T0b|`?a3$wb~o7%TZUtsjz20)lM$N1p0is&fIN`&0bi!2!xYW*IveS{ zBd~(sdu)H3{)T0k=?9oD`5*W!m0!Lu-JkjnV^f{&fxzs)wnJ|-*xQ!(2@7{W&vx6A z(R#kt+ih_mT5Y%8p;EBjrZ(axrcx?ZisFb7h!)zdP(-Y_A<$Yv6fq^Wic~z07_Hi? zeYa&YS0h%le%{SKz3a9@lYdPCQd28wXVG{^Kg2ro^6+9QR&l`3O0joW!EH9|s>RR< zBku_z%e>9Y&b^HGi8e{lsX5FqH=uCU>r@@#vu4YxCPmG>_zV?Fq6q% zmGuHSaekoalThVOdI@P$>VBGJ(xDUs;|2`%oeUBRVKQ5QAzc}Om6jtAzkNeVp zeCxQIO#bi2y$+0_=Ho!?Fb}~$G*X)*&Fx}683`It13yot0Befif09a>rc%_vpN?n@ zftn^=GEYs8sku;FT=Twz$4S*LvKszM?%Jj-lX_j7cN0f@u?)QoFozwN#c;IMDQ!2dk%A+yc4 zLGGMDO4Y^Qm^F6W=lxs7MYMkj<1Tq8g&%I<@sxu2u`R&FQG%^4yoLh7I0s+-cbZT_ zhnstWR`cn$UJG%LTo4z@#b3nIFPvD&tfpKEi6>v&J63pWNzFgy#*&(+acDzsE2-J8 zE{m9;ZYJR~T>4&;*u@#V?+5l!c(Px_gC+%LcfVD76;RLXIEOLNI@AZchT?vEzICCB z!0Hf-4eV4FB)a=?rHOe(>PC}7F8oX!R)HpsjXJ-zx|D_W@?-0%06b5z%bbPS7dC47 z76$z5vEk`Qp260PE7I>a>1RceJ(9?Vt~`{!C*ee_SO%-K0^7EJ+1dI5hJ;@6I3$B| z`DR^#bqTWZ8M*>hm(f`YGweQqvLWq(`DvNIqu~e!YCU z4TFaRqcF9RL}4i-OK^H3N8mB#(~}p(U@}fQfz&Q0fY}Wm0f+CxmCe&pe|XMQ+c1K% zS_-FRK%h~sKv8lNO<^l?R4aP-z;8rXiuaOn6-u*Px3U>a-F>9)*NR>h2NYd*_Bvdc zjf+s8YC@%hJ~8I*0}llOTMdx|HbBVg1T&+}b)kWnn(kGmExS{f~Y_*{8 z=mvV;$G@QfEywx~&qqP^iEy?}^nwTG+PxC5>`h#fin@V}6un}`{RPbt7<1r*=NUYE zBjdq$xFAXya=(Le!Z75bU&@d>Or@%|-WTYTPE~8YB9*FUoR^#)S4bgZ$W0AMs{g9H zAs9WRhitg?Y(D~gIVzkr9BaM%^;%DDo)~$5DwXYa;sbC--ruz0Nm;0jyvC_29oUid zaWNF?Xk8N*;sfK3u`u#(S#IRry2{AAy2;49Znu#)Zm*Fy5e|@E|Xcptc8O<;z^{XpTA}0057^((p z)TDm@a{2lbCw1J~6dmU-7*ejGuQp441K!3jR}UGWpyZX%^PhplewK7hap8&-8&_3{ zyPk7Z)x0$#Pjct;HA+G)-Tt6o&Dqm<`G+%e5=tpoid_!_6mg;w)b~X55O^tk*HaSXU0e zjI8pz4;x!w6A`yy6hI)SPW|h4S&8?457UIl9RpI#o`j-7N1;R?zr7CYUyOIolqWIy z(4zvYZFphOzk)05S!hmbVNJNvfP;@3sKH6$BAhA1ks_cxf?$8}GFpncfD7Q@*>D$e z4=S#FM9*{9p#WCFO@I_H6vw}jr=wCU=hhVP(*#}wV8@3Az4ZI-KVax(3K#FEaZh0g+(Y4{)!@SrV~Tfrs+5!({B|nkb50Kq=fDuj z-mBFI0&3aeS@v~UegH)II2d`~K{&PSa5$yXQG?Z12vphvDOJlc#}F>-kYg@Ct^vnf z4~}^-280@U$5?(WMxx`;iaK&uZXxzbk(`^gS1Z*TVYnh~L%Nqx;@w*7j{)u|2iK`| za1EIs*qdSSp$d^@=Yh!5v|B#Qn9^?Re)t7ku+Bh~(sPKrwoU6H0o(0gyp4M%By{|n zPUs_;cU0W6ciY?JJKF8ZsLA>U4q0J6#WIq%BxvFc{v2@7ni>2X*-Cp?@Ov1NU>0D| zeoK|s6Qz|TN-M&NrQ}9?F{np_RG>_69sdSnd%qt-5#G{=qPCQMndg}tpIfa}- zc~-kGeOh<1m}D8wYJVhWwPA+iG(a^uVp?JIb&!4A366e89xz|l=e7B^7rpNT=D)(p zn~!k%$hAHg%-sWZTKk99fs0FUS{n)*>KKZX+E3x6b{~Ju`Uq5~{6PHh5!`Q&1_bm8 z`B3~xJPGab{Uyy6HjzM6M}M!|gu=Eums-k|dE#0NxgwV=gw3s#E)YO+0+U603Uusz zh?QJvNyQ?h)^AO#?<;H|w9VJ~c)VA&-FyRMgA=~E!8UPMd2;kF>^l!E+7>WJmvdR< zw{8(yQ-hzF#G4t3fy}4iuTudvT?VG+Yki{%0M_)z8!BagRajzB@BENBc0Dq}%EM?n?3pqY)~#8yQ_XcqU&UqBnp z7HOp%SotHStgxy2%B`cmN5~$-Jm-VMsg0q)8hE1nK_xQ&b~!-Z^9jWFEbiD$K@9@n zIRu?HuEFhh84!u~8+y^ML$Z&JN=;|2S3*5R(9?ZxnnaqeI>jp^W#8&ry^Md?VQRUv zWzL5?P;AJ2q7Y&Wm!=d557un23Z?D>EZIR1dAxy;JLit=ybCoN<=FJy3})GQE^{|V z0%HoQCr%pQS~nQQ0Lv&bLDKi!7tkH>xJKZ2;_;y`3`mshfX{ulKAQFyKj=?N2qnkA ze7$-sJaB`)9~_q=NaM^mR4u3k#Hk-DQ_c3gZKfmOa=-_^oV?z*%`}AjwwaFT@V1$b z?eMmlj_vTanU3|oZRXZ|p;}$ZK)SK+TV^_QS;s!jopO{S>LgC+oE`SGWp^iVFQ?+vJ7m|$J7gbYB>}(UU4dld zsUUH4<1A1)-yu7r8_v_UM+f6B-58?y_DN6P#{3N)Oh^cnHR8uypv%}LoijBI*@yq9~>((O>O4O0{w-%$@(7o}``teVwG2-&xC#{pu z$Jv{8*Hjy8r&sa1lJ~9N1Jnzz!+S8V=Y`kqXcO+7z?-{~d4F`# z%jo0fX0O7Cc@Rf1aHO;uC8BCfU4wSad?>b2Jy45Yx5VXyk5OyDb{)IDca~9~gHW>c zo7kZ)Gjf5yy6*VK_;V`BL{MJ{jaf00>^NODM*NHWr8NW^Sv>y?_fn~L%1 zCDay}02^V|$GEpdk`r)s%uAm=gi97bEW)NR9N` zff&z_SrI#w8KrY+V8u0Na)EX$1UmAMb=*ngW3b;fyuZEcI@yws$N)c~{M%^xd!gyZ>_##7vU zt#TK#3~8ns72*wB?T^lJ-sk4e0|iJtbm>LhD=Cv~;TpIvgfWDQ}GZ6LiM={_?$#blA@B4}t8eDs~Nx3JZ;Ow;la{vO!V) zV=#t(I@y}rmxQ^WZmhl(yYv(K_`as3KhIkig5Df=3vE_CDfI`J1HKDFL*(|0@R zr+CvTv1^B6eu(eA3okloxoxbQUJbF_N{nS#k6ff)C9Z^3g~GbwyuI{sZ4AkMBQzg$}vpS*h~excyEX7~0W44mxo#;LH1uN9!*I zN`J|9^cSP%4P)KyW9ICWS0H6#wu5Ykv!28$KRzPx)P*Eext1vmD&)Ly0h~lrlk!KH zms>?Tq74~E+v0}?7;`H)k>ZJKC<&nI0?;3rjA9;N`S`J6g}`P)j9EhKCykqa+r+5_ z!v{fgmGt6C~FYMftH6wlfCt?e=UW+%26lwHW$SNN_ zhfjHwr`L)TF=yXCh7|{ka3iRBXRqtVwk_p)aL%2%lPjlG8FkNMMOQuN&hEH*qi#FG zu{(QW5@}?tMr_?meDFz|-V_4gxd0E=6l3W4QQZ$Gb@^dM5Yk#+|00+4unC+iB<7$r zjF|LA5@Wi19y@lZ7STOAkH%xA&~v>dBFwdiCo71%Lkv<8Q{aI?xI+vM2_uHDq(bpj z4}oM^Z=DIVwWDidlOZ}=?8ic(LGy`$!dFj_F;(s`wh{VWp3MFNp;*{+aa}!J45vaI776&Sl0wxX|1m zEZRkb%r$txr=sQ@z7vH56k?#ixtMQK#P|w1VCV#qvCL}5F|k8ij4#Iz z|2dacJP%{J(gSSppfFTmv@kK}G)P@qL3;f5*J$~*5TjaH2hE!*0@npnLe2i`r=Ibm z4WnTts%xA+ae8#z%GD{dtr6T&h1Osn197X@3SsU(TSo&l;;1Jx`-Yg^RT2qO3Z%f=}Ic*qf0H^8+VC zyNNPK^f%UAfU;ZS;%69YES)lOaw5Sw{2zw&COhtiItLmAoq~Ztw+EX$S@1xu-<|hBYvimj5f)F1e$~r z9@YdP3@_b0L0S%(n+sV+mCQ817vVy$j*?i|Y%yy2HUK6F0SR;jY2ceGwRjQ{AgZ}) zXEPx^GS(K$RWsZ#42hKwN?L}vC6XB8e`Mv?t}@o{P7Z;CLJ9YObMBB>@dZKD@=p9d zg7++}p0k;wd>2eW(ETuJp?=X1gdR~$k26t>`vwjR_9G^+fsP=dIoq~L$0bWL! zpf6{x(CyrcM&69&VmLW88~52nk~wGm0bk~}wv%9g#>FP#Ionub$)IPA`7~2Deg|K; z{ux@nXUYD;utfLyxbTzVxr=!yK(Bfe1?AnJNSMIB!Eno+v| z3yX;PrnOuYkUL`55*28$<|ANFMY1M1?3reQo>)DYk!bKA;kl+x+LjkC8-@VnY#A+cJ!z`StMR)!A*m0xm%X27xIq zhB-$@_Gp4CG2bLe@{cGukPKzQ{FE$0I8^xwiVIDAQN{;1b72@*8+K26aWAFZ$G=rR zZl_H0^~2w&uNZ%4`%2*pz+)sXFJi+bR=$qCas*Ov`#X79B}TYM|hj z_zM_sqFO1C=za$ZiAMMEWFT7@|4l5nhhzKlMB(=BtPBQ@pYi{|{&eb|Qk_kwk9_<;ygB9c(K6d9bgL?ZN(XG=Yd*h>QD( z=8;5mIni82G*2R$qd;>zY=FO#MZQLLYYNrTT%ekN%xLc6#09zXqfyhWZ^PO_WBz}@ z+F-I}M3{4=FlV_iXO%GLBr@kFVNO6r1#7d3wRsMs&eK?{5*}Qkxo)w;vx_y0E^~Nx zndZ_-#9EYCn@y}mh_#W#S~;;+rLp!P1|-Fx|G!|(CLN@B?Q5ub$H3a&v?Ld6I~bpa zwOP=4JiG?1aha6t{nI5t8$>JTR^hhbARz9yWH&WezmYy^y$~S3-G+4L5#X;t;o-_% z$KtrY#9dTyH(PKQ5!{Uw+?5k|D;?Zb3GOBlcWWHnty*%kB*7F)6aHk<}8wML%+mw5Nyxy+97BK&g=Q`%| z$a0#-7Q}1W&OXZ?nH#qo$!UOsu^73T=Nn4O%AI`Cequ^&LP1yaW5E0xNbEyQRtY92 z2_~b0$=QO*2r;?L!DQOhsHaP3YMd>YbmqR54kn$6a*cyYXReG8lixZ;Qg(8xcM*x( zp_CGoNJnJQd^25o1_o_6=A8sw9zEl&pfxXr$eJ^biO4Z&NiHIXFy4#Ex-Zd4G_t3Z>J6>DU{varOoJDHNfUc>dOmgAN)C?t)HjkH!AL|CsMrFb3OG52Cj@^MJZ} zz=B9 z9KzkV8|MMEHNF>Z;6Jz<z*W?^mD zG&nX*8#?R}2wS82uno{$TV(;j=2=5jTm!CLi%CR(M(C|(`w+H#T&#SIRyUpoD6lYI zR~QcrTU|OS^J5qjQIA{Z>x^*9{4VIr`nv*2Ys$Kg*&gy{JA>pEzoLuJ9sQ*karB8<=oQL@9n z0j|a_s;AEZs!va$`ZkP#^NvAH*u8#rpC>$DhwTlX$etj3C*%2^aJ46#@Pt=+!Y_Ej zhdkla;O_5~8T5pwd%{aS;mw}#+n%ryamyL3!|-dd$9dv!^n@39!fQO?_dMb64tL8e z@`ML@!Z&%szxRZn^@KC8bjsOopPvf1+Jimen>^u#p73T*_-#+P8;-X* z;R*lF6K?W^-}Qu#$Eg;l%=0|qk)H6ap74F1@ODr5Q%`un)oz(pp70`1c$+8uNh-YE z_TyZq)1GrY;Srv2+!J2o3BQZ5w!29Y@TRJCJeO&_ya<|S%{h+ua?L4q2edn|aZh~= zd@XN}VdBC+g69K#{rJg{G4*4+Ag)#1es9GKiFml795LEics=x)jP0GizZ<>DTmL#t znKc7a^`8#6=zHpUZE>_)OTD-?>GnuNVklMGu@Kq*hjz$5fz$uA`Y-CNe%8zS<@)4K z>-YU1>c2j%|CoYn&PetDJLbAt8FgK&^DgCbfc^i{-(jrJJKoRLj3&-+MXeba`dJ-n z532DlK(-CX!26P;@t)e3IS6fbJ#StMHBK&wPQZJ8Gt~Rh5U}4eWXevKe1OG_pQ7cRB7D2@@8dMDb=rp)JoaErT^ad z&GCeI%BMN#4`D*)&721sD-!$ORg>3u2 zfca1BO2KSApA`VX+){lME$IJT{{xK~8QB@u>)q6HY%`j*wGe--D}2-<7D<*?b!~Up ze7Cij3oL9B>OE}^r@O6f z#egkmZ~JAeir6pbJehVEaka$@>w&C0PryJv3{ZJ|*;>$37#V)ARun^w^S<%*sQoj; zcSd&*1$O5V^}8lS;djvv^_y6QUu)#?@Brz@(B)1cE!JJR+}>XuLKikzSo*3L5Us)< ztY)8;kiZzAJ$zH=pE#rAy-n=NL)G zz_$Q@W9uJX32d)T?7)ZlVo{5^D`4(4cQk#F9f-eW#P=HL*tXcAZbtphfH2l>BsIj} z?$-QvR{Z_e;|>MQ)`mrl3&g$x5ScRm_QCjD-HzL1Zfi&|r3gMs2V)yKI;RXj)X_2O(eS3}viKyn%8cY?!;+ z?B2z`0nrLycxTlet9k!KeEi^@#sca8dCwbn6A2j4fADqL1{p=VP8(aA6h_W!`pg*n zlyM&3vmLX;xcl!O=%x0rS@~&7U(-5RivL?+Gy$6JcLk={8Eo@VeAmF#7~}eNs5W|x zx59j#;SRKv?#dI2oTUlOf0F=pjCZ>lkgnw!!AZYUF9s6mC zMtO=t?^^%Z2*h3|u`vKZ&dST3@J2Z_OE=HCN6&@`)J>{h7=QMs8(3m-gAlDW!Jgul z13U{3?Tci}(niA_2)64lo>tqPW6w^n`Niw7!5GzGp(8Po5XC?G&x`_sqf$uo|cJX*_ zJSN{|iRJ279>=yyvLFiMA}TWbH)-jCcbOM{3;yyjaMq@r)L;qz)C0`$;<^aEfnNdp zBl7TiRDVq>0@X@qMxxgRGu7_Y5ER`t5#Oc6<}d4A>zS>*_nw&Y)5`3DTP!y$7{B0wxsG27Rm4=M@9N$!d z7nhbANpe-H*o#Zc?ihyE|r_>V+4Vjx^>ELlDike~Mo%r!Ovz81rXHe8isY#t$kD z8p(*n2koF6FEo=H{P#*kWd!|;zQ{*EuYspoVVbU(uXRPfe?^QWgt!D*2M}fDWhf`N z?`BiTiB27=`zYF*Q|G%FfGt$M`C)-!Kzl-=t#Rtq{D*>~Io3a*RNec3d3WX$ z;1dGSxj+6*PR$Drj4FT2YF)bI7xW}~bX3=7ehf}24mxatMnOh9&&LP-x$xU$4Z}EM zm~_!8&3Ehut{7qN(0|H(-M8hAFgICN*S#D;+-&03o%pugrT;1SH{X_fBy&Rtb?Sbk zW8LlFmb>gf<<1nuX^i*ILI-Euy5&pM(OwFk_98Trtm0eN?>?Eek8{@6tPskz)TPso@~UI?0m|Y^R#S1*FxDDqvIsMZH9i56U@eDi1mj2!!qu8a)+_>pM4xqq%E&bSOUXaS4-2Pi z^RZUzu1}*D5ry$53)MnxyLvCZ?Uj^#;{^V4T(8&F^V8~i*3=8xyO4_YNEs?@yI-8{ zb|A)C-)?aHGSwtzE+SlO$~jZ7Z|(6Sxq{>$=oiQzSYL+Ls|s%(H|qxYGj@FHdX8JM ztDi_UHn#+o-o^4l0Nm;+ZsOz{s?CiZ9?m}BEv;>XTV5oY2%*JcuaO%{!hN@K_3*6q z^pUUi3FHUWd@tj5H`ce;r8nPP-J!ni0Mf%|Q{HR*NdJ)(+AwW=<&)cG&D7)oS%&DTE zQ6Qw*S6_lx@UiTxw}GQO*jLvB{C}|Xxy0$}Q_(d0;%L^NW?!U_JM=iY(;>sLFBboA z^@={1ra$mLI-?er7Z7R6wlpo1?4sTfr$4-7U8))BSe%SnI9w{rB1id8cX};B%7B7* z!jHBGK~CkSY)ac*{+@*b#A@Z*lblk-W`#WIW-At?1s;P6_qSMizYg4^^1xOn~Y=m&C30q>MlAuL%eY*U6B*0b5J!HO3pz+goortMZk z0R&s=R25r>AMx%#rhVw78mDnq*;nA}eX{1tP&S_G!$c9zazADL?!ecu@u*3bHx}-* z8oP+zTDKWZbf#Zt&V3rQWopjt$5Pxm*Pe$AvR*NtvJd~n<@}6`xs<6z2bDf8T!2L` zGy~l4@+t$`wu*ztUJm$iY^$I%IuWXNe5*|E#yw4DSKKZc?b-@50Fo7tiimLL!`rod zaOqobyvS^qPTQIT2W^YP2GS*(aYi3ZL>sO$e@@BHJVysG^FFd1k{Xh;>^*kT&D7zP;{fBqDgqZ?{n|-Yo3`&LiPLl{;|%B@R{e_bI<*C?z!jwc(^S<4pY}w4Nvd-gvgv;FtB#|jGs=w_)}5zk;hkf z{27ncJTk$t-MKk~htCeP7tj`cX{q#LyQ@hvsh^m4{2>+^KXFirzUGyU@@r0N*>Npv zV;c|ie`ga$iqwc5p5pHcNe`(|jLs|oV7&piETx6d{DQQF7K zr*3bYlX2?z)GXz4M3fS=!+%hI-&SA!BJ0%XmyF+jb@?uwFFxKR?PcZa)Q_D`^3tgp zyh5C2{ZlImgXH2nxBreU2(^MCzv{W;>jj8nN=KCs-aafX5Wj-$8hLhB9juaB^=Ip$ zXo2~hEG3m~KV_|bSiV4#BT&?U=qoYMmG|mw==Rjz`lVA(@G7w<$9g=s^ECexQ zud*D;V(B#bF6)oepD&uk(MK~rZSnLk1uw>c%93O8_U}ceKmTts_heyX`q!RI2$2QO zfB$pmFXRq}ZxwH6?e?k{Swx&Xb)Hx)RuQk6{74}ZAA5$@WLkUC`>qt6`&-VF$!g1_ z-*B@9YoKelKPQWm)1QA%)>k=>z5SakS0{d%RWhlcHCtKDo%Ew`yb`?do7;!Bsl}D; zzhm_}@yiQ}Cw)VH>vh`>S%TadWEYvWl;1@XznPr)<&@5!PwISS(xmTQ*l#V+UO05& z+0Iw8Sh2nE$c6p-HN8{MsbK{>Xtz5{Wfu)zp);z^0$F-7#=6u$uA{YP{T|y++pD&{ z?|x@x-7_=tUsb<;cd@ zi?yj2m3VAWWkK6ZcRN7k%=J(ZM9*v-w7}0ZMFq`I3a!$ozv`xcz7JB^q>0LjA(;a`b z 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

    ?yTwXIdWzTIIRy_G3OYQBFA^ zBZKuXKIhwDeb(oE;iK!VKDyrP)402ln!INVj((7g|CBc{uCm!V=^W8CcKow;`UGiQ zj|tMJwDXmw>l|up91qrWed^a>sylDxo3)+?=AsS%oma1`ufC$LLQlNr>Z{d0-LHW< z9isoJuO^1+^Yzv4aDBYK>JzD#Ho!YX&uO5JMC(Zn)PPt$yaA1x&1j^?7S}@?sXr-c zXO_~v8mTR%;(u?bddBOs4b_zR`0pB0((Y}jdXUdc_puXx=F8no?eGudmjW@9T_f zq<*TPPu5c(Rg6DaPi?NKchpm-D#qv3Qw#ihaXq!mA3v)e)h!e1sil?TGtmL7q)#*4{nA`arPyzHq}4L6+?6 z(T6;03UwwvGnX4Ym~tj%b~=^LJ2>MHcT8Ty80&wd51zc{RGQ?WQ7$7WtgQaoQ6Jy( z;ds1>|AjBQE}q}(bk31xEOd&S?X1D#5%g$IMc~ae4@LkQGmfIa+^c)yMIBt%V3pnj zgrT7vpZdY8m-#4vF7VOtI*?C&tqfD#aOY~UQddLt=5X~x=w%kybhSq>3sbYaH25(z zNUsi4zmwfYh3E-kXr~sR9;S9lUlPFRFyh`5*2ah|+XI{!>Aa-XkKQupwK}Tl`lN2o zAx`uxK?H_{>%o!gYB(J{_@5$x?#X|Sz$X|3#aLjdUK_4%gdUOztn%m)VQRWp4+>KQ zgY?)i^&LgvPoKuH{qG^gdxohQ6oDT?3HT+HxaWtJxD|mPJ^BZY&zhIPVC8O2*ZU*_ z36J5q?HH-VNUT@yfWf``JD-{uq*waX$H9Y~4L-af-Z!Gc9!kV4`CdvKL^AC0#MO@a z?!WQK&&x~?%gY~2+^-YMr9^q^V)gMJU%fs}jD4LAH_3jA54@VGZUIgKoA^`u{2$Jw~ z1W8*Ksk5WhPc(wCDT;_nT1lXE0rF$B=B8x)OqJyV@Umr+M~K8}Dx- zZpQmU#LamB5pgTtfP03Wf~GgZHSnPk?Xa3FLgT^Fku{Xs5~;y)&bX42NqNZdLRx!{ItB5{bP#QseSiB;tl91}?WpmBjc~l!m0?sy9{M z(?d02321yM1%#m+1cc$8z9H`cSx0POC^adlt5Ton@S)-Ap!W6+SG$5wi|`drgK;5h zMv&g=Q;UKU(WNzGA$ZpTX5meL3{i`N^zjhPnmmtx405PLG7O$^~Q92vpN9n^DQ;x!*JCYoibE65~ z6is{wqEQ&}Y}tylQRZo&MkAj=-cU4dHFbB)?eet_!9WYpV-8U}gQq!zLg?)Y&x{ay zO^$!jd8)hqELwf+P)=Lp)yGledr=6SjY0i9rz6n0*IT01HMD-C)I_XVh*mQqY5+eG zLD$!)r1X!XHwXI8hfD?q`;=&6KTbImMU5SFJ?LaRdPseGlP*ujFjW0H4b^N9wOYUN z=)-8E237pLp4zDOoOLv;?TA)4UO8Qr(BIuxf5 zHB{deZw357i92vTu>5mBH&DNp*Gn3yFDq(XFRE1YY6CU8vR>1O`Z#|!QkN_1?51i~ z75!;bHLR-6Z={w~)qU!#&#Dpsv1r1qqyE#gYM2rNWt}zniSUWNt$#{)(CMy zGVy2BrH{8Ea@U+z`b>;^P#=lGxCvtZsiS+ws?Qw#TMWiC^^jOK3eA~Vg*FK$Bt3cw zCJ89Ztw6UUT5a*_O)*r6@IvwGJux)Qvm%CudFIE^=m!?BX+1aAq;!-z9jvFssFglF zDuzb>h9R?1muX9go{d@nBXZH|j}Sc><1wKcIe9DP@vksAhgpX(eK?ke<#xxapTqQq zSSrTLV%6YqeF$>_;grEqL7WxpRa}@90i1Cv&u)pC+H9K7Ieo|ebifaIB{m$w{`!0eg%!| zF%|W^C)8J!^#}w~MgRG@`V*Pz3FlOGo%@6uUqhdGLLEvNMUO4GO<(M+eo5359#`Ka z>19upQDG4T|G>TEl$~JTsf^SGLR`&SM;xy|*C$JN>9KX?v4u1=)Xz;j=<(3iWY*)4VdC)LH4 zx?gAK=T>@nXZ3mO8W8?_>roD#m~^-Pqm$Zo_Zxt=w}S=twbS@6+E48?zUDUYfqpa0F{1i;2e^rv0ajz{#;&T8_b0D5-NUvyEU zJLp}V)!`2MdS^A48s94)(~~-@c^%0>%R7?&H+CdT=XNAZ@9#+F`=%oq^k~O0D0HSH z8RL9MjX3?%kxYEKBU$gOPGtInoyeZ~ohW`btC&7z(z6KbeVyf@>3?ihq$#?kK{`8F zT?x7$pK}QL0L!&P^&X6}%FzGK`l{3s=PC4dJ$jW-?egf)eCm?tSAO5LAMPASFvq<5 z(+I30$be+@L?%V3%~%Q&p-zSBufl1?)5j5N2AbCqYIQhW?=rJgr^AWUNpx|T8*O`>YE_Cyl57J4ASLIctI`r;SzV^ zHHFQ8XB{;hYeyWlPdYR~G?Il-%zXVTOP!-$HOr&%CG_>)*soZ1YU+X`>^+U1?Q*B9 zNuV3!?{n^=PAZnNEb^(IUOnCCOhqHa=ioJVFxa`^)%n3{LXbWgOhd+KIN&XaK69`h zi(WLwjeR#W3e_p0b@Y5kJ&TtuXCJD^QWrVr;M;*U86nPTuU--2#lTW_hPMD#DqG`Kbssk7|83 z17wwUqH4n5M2~Y6ggW+)(KWVle=zpc`huoOx9`mYpCGC`j2{0Bb8h2bb)Kj3nS(Gw ztU{}7POO9X;>0-Tx>tV_>!1mDDi$l<-rW_8eu!QgOXcDc-e$grz2j)|3G1rE^)Qr~ zh)=xhV`*w_c&xe*{WPvm#c1#hi6zN5<5$87e{?2%m`T04I?%*zjOT6$`r^z+H2F9u4}EYF;Ga=$x-9iMC`su5UzoXOvXqqiU11C_S_!+EAp* znrQu9JSH3UMc^^|R4KJDR_`jMzKzx2l)`$ycffP4IO#L61VwvP35w+W5_bb1SdyMX z7Sta}0WLis>)|w3f$2WM>aw{$=^f+&L>aXX<%ApKA9mVg68{(sNrgIJU};7uH4GMn zI;Jb7j`#As{ay5?KtmX% zw>G}sz6A3)QPYm=dbI_M{S6*i-e z%8Sy&lhlxC{VD!q=LIjvlth`88h1Xav@&dbk~&v=hy!qn$qL8|2OVdJQ)?~yiKD%g z-A4vdiP;iF8E#)tQOhyn(Mj2$lT6%zCjLh-`Y?rZoh|7uDl#h*MlRd ztY8QWc^_+CD4#}Bv0V~L1#oN>m5*&vl*dQKQn^_jOXX>6ES0CDu}2-0>NCZV`JJ96 zsDw|a`Kcu(s5tL4z%M08A>@6iJE|nfnNpG@&o4<~Nlk(Tpt`a)p6%s*5e))Ln*#UB zJF%|=!Rv2Fu(QZBKIovCgs}N}e0e8E>&D)C;Q5Ds1#Oms+1<$gkLybR*XKXlKd=Ic zfws&R)GMU)Im{K8qV=e!OR3L7^tYub6Rtwl5T+NFLcOY|fiY5#E~U;#>A|Jc&={Q& zuV!F2tdu$sr$36Ptf(_Rx0yT{F)Jp+)2o=8K+S91h!`BTCG;{D#>cb&=|}ZeEI-4- zQ%p&D^}c%QH;ls8MKYg>99oCwFOJkxU;Fi`dg?0XN$aX>l{Ikm;I3eHuZo^fS7lb! zv#@Bas_un(y{dY29W}ceJ@rj8f}nKy)#Lo==?u?6M}Oav3eV1#v{q$BD|OCu`}|hu zdp6~;gG#5Od|e5j?G68sX7N$6d*QG=rO{?-nrtTAjAr~9^{g_Y-8t6VIsY^C}Z z*8^LrFN@!HrL|g9La%PEu9wgkS~`nLmYUs0O)jN@e_K}L`czqcthMT2L9c76PFB!Y zTBtFIP;0fgGD+B8S#N5kR#Y+9RrQfpYF|~orjD}E!Byn>eE|0+v@0^t(}SWy8xfsK>yZCoo}GQ`D-J6 zrj^>(SZ`~M)zMYJ`EwHrW#%0kW;ooOG@NrMX}jVseXfPNeitFrQ%J&`6pG!_6f)AP z6bAt7p;Pyc9JUH^GL@8(?ZAqPz` zeGx4WYQ0NoLMDpM@z9c(T(ADqi)tD700zmBOze73Mv*sTR(LSAf)~|tuNv-taJvT` z1$7ytL|P5kEpJIRIr`1mL8g5kM76WYSN~7nxz)ZJelI8;%*X z`wC*1E2qBFEKifOwBrBPE#ztNN9a0OjCM-~UH}7~ShUl~7^Ea<@Ng$~T47`s?TRow z)L?}i+ z4tn)2pR<5!6AVjj@;M8A1g!GWHCjPv7W-&u4&%~WLcHrq*K;BIVu|ABRvaSb$x4lyTMS3hSctyqA+;n!LZ3sa+l+u{h=(LOym48xs-p!xB8sG5Y; z<`{zy)wsJlv?=h#)Vij0#@?UN&OVPGP?jdWJ#>QfrPrqU#3Pif-7LNGje zyfjHUUz#NTQJNV0QNw0*8474x8G1getp2#1x>y$QL0ap~1?tB5jgGU5bR1V1+ZXhF zKaxXltgNPn>G6K&Vwm1mN$tWYW@R-fN`LBC)8h2b%Ice9dT%AQ5G~%y>P88@rZQFF z*bY`oe^OPgjn{Lls_UicdSY2UsfyFHoSs=lou$c|%@s)E-U{^mcNHj%6BQ`DpDWNq zS1W*}e?<~IqM{L7F$_|&E0UCLem$tF+E@v@-N#k|-^wa_YE>JL8_u5|be8iUpsD8{ z9-!gDtozk+pI&eejd72?$Fzs;p-m{6_ozwXdP7@vDMFuVr{+ZKMQzoNXg#;BIu@g+ zw^i%nbf0_F>SB6zTeY{i9`T@Bffmd?YEir%_kikGS`UN#()wyUwYZ$V*iN1H6aGgf zx;|7z?|=?f^@a!3r`7a?wyIYR{oMmT9ekN zT2pK;n(OPpA5??dP|QAQLz1WB`fjzL4RNk)LppA5Lt6B_n?gB%H-&Qf9y*N7m9Vn>=|(WR8b#J zR4e_2?5vbBs+Rhqiv9uX=BjRRaQkp|eX^F5UxQ@-S%XCMOrX%Pga@LBCy?k#2_#}p zf?iouEltqpYO3`KBw|+rJ^M$3&bti_4-L_?Yig2t8=`XgHd@wpw3eQhq z8|sV2kxo|R{b1^%$BuH;KlKp&|6BLO{|@xHKn`P|e56B*ny;TU*TdjuzL4;9G&ch#==n81PyN zJ#e(62A9;=0Ag7e$;1+%b?_}JWqjBgvIM?0@y3U>uCw7g9Iq#W3@>fKDJXyNEyOx6 zkQ)r1E~6(vC9EjS1essfaH87j1K-ke#dKl8p~_$=A4tru|xwS#=G#ysq8>nV0M8 zt>FB!o&gWn(_g@MrJl|P$*ym}ocj7x_hc3*D|rlqJcgHlGV_F*$wpt z_;xka>p*%pGT?|tdLUxE1v?M{US@DWWBomRI~(gI#M#tvPHL);;UiXGHq}=^jy5yk z#b){(e3Nh2v%$II4g+qyLr;Y73j6vr*Tdjj)ST}%*L~qT*IbX7=%`QbGT@B6bbt6Z z-lZplTw<_SivAb|S(sv2)~4wB;}OjiJq6@KD?JnU*0~U`y#l_Bd(FMfd-Z(yzP?wV0hxWD0T7MY7eZbtC{eYeVTQ7e= zj{>;?0%2Dk(i5TXfK)vIWJIbS29m?R+*JMNSVxU|Sm%S}Kdg_9b-b4!)_XyQwAULz zmbBN4K{mD5(?Jfl*CRptKBD`AZ11R#A@uJ$n$Z8~7`Y$5@tsUSb35ss2amioS}JKJ$tmg?qofst-ZIYp?3xhNASpuCKwj?R9+tWZ&yez6ZIS zt~Y^mMR&a#kFV>lhkz`3L!ZF|8{X8@5&D-H`v-XBEd!2u`yF~<+B?R#t%v>@;hpTE zPk;=6PmcxX{P*?e@J;wYp8@B%3}=Bu;>Kb6U>k0q1^o>v`WtpMkf_al9X%c6Z~6V4 zEe@%D9nEyo?F2gQWW-*Bm~jOtS!L&7rzQ#Pg`r3aX!J);EM@bBpoDJ$P6729g1sV; zmkCO8H-VBlrw(QQjYBa~2YGlKe~8{6yLoM>omq3?yC)Qa=^f+p*H&7S{m7 zgLR87!Skrz8H{ZfYl59#PKkxV-gS=73ie`G?XX~PACK-8>^#)HH2@57ixnqhIxJjWwx9o#w`8hxa0&>H1K-2r)}y8uB#kM|#fkIKw?j z3E$Vio{;*3Yj_WP?#FdzP`OPBUW_{8dLH#$zSnwsP2X_zylVIk_;hB?(BUC^PJ(Y) znEoiihY_`3YlNYn_NOKui^WyguYQdbXuv%o;7`| zOX=|mzAsAa323X7)mv)#&SS$yLMYmf2xU%reKEl|sDeI`;9KO^2XNP~GZI3#R3deb zR;F-2!#>gKKFq@7`b<@ga7R_sB)J;tv#lCEn^%oA`KcQ545&^rM^-2KW2;jvCRHcN zi>uS!9IR=t?%PzI^u(YE^kGxqOx1&}$W~7}_uf&z4~QxliQ>YaqjXm4Q&dtro%s4fKm1LAsu&4(O;b9FQh#_3lRw>5A>I zG~PG~YalUTuhkNd9;LBCO!wBbv;fE{47+MHsj&D-o{X%iUsiW$jIO+ZadFt|EvMTI z=QK>Y-itM)4yO7xV>JxclZHA=gK@+T#<1swI~cd#9p*iNC8%M}f>65tJd_yC6xbp3 zti!xm&9Nlhdpu093HOc-*Ap;L8m@l~SED1K{9O9u^r9?n(y2oSMB+7l+^10M{Ti(D z9sOgl!pgowK3Wxur9RiZw1)+w;0uBsEGnKJtiIL6gSkHNXW`$>^+>AH zrkLz4iy4KhupLG&JbHeZ^RtI$Aok<*fKb|xpAqKF)ifKybChfuvOU)8SJTsiR8xJ` zi-Pi*7Zbme9L$CF^EhTC?sJTvdDMB2zUZY5OxwM*g&!OBtO&@!{;QJu4!dhq{B3Xg zZ$*$I6h+{gkSs-%_19oq`(ky;#QkIjXb%Q1xK2=$j_) zA3AS5g}mQG{}iI8W6_jJ#jBxeD`wd+NQ2W7Le=mfjS;EM*g+HO4AFXUs5-B)hk{mn z{poX%d4KV#2|kUdP}M^MCilVrJ?*nl+iAem)6GHTsBy}o8FHCX{hDNSRqHT6JFt8A=M<=NR*b9*4Y>kM-&a~;p zNj~O{vD*#%<+dd{=o15(Uy6nZen*cu(K#F+iM?Uy!UE4PN4w)rl-IvtFI)vZJ<-Xk z7>V6+V`|Z!x-V*Jgq2r|_Pq5md&y?iHoNa?ll+afNvmzON%F4RB;l*tqz?|2K`aW? zM|GX*&mu`MmNw8s??cQ$4)N-LsJUL9jY=#CD;o|6=>b6no8uJhC6*H?aZs+b<>ck)Wd%Y?;he}8OUQx}) zMjpTVy}X|1cg|sY$WJ?XfFG|&PyJAl?qXO6PhG%PF2B`~>c|q6@$N>gvyVmUv;j?^ps4yL1UJ<(5hZ`Q4tXLwmRMAPEr!KJj{e=j3U}r~r3hzuu#RA><18VbqmI7hsD3VN++b6!U&sOkXJGT}1P% z-xbq?i>q<8eDPM`H^yf;&f6`4ZNgky0~%z*rmv5&kgTCP7C{@mu13(7wvVDTHh^J4 zCpNZWVdkj@&czr)R+WgP9ckq?{wJ5GeQB9h=z2tr>ex26tQKt^n~_Zaza$ghyDnW% zZ$NTv0W@o@(x3v~oi-yOf12|3tD~`>fL^n^_)()$&K=^YG~I^=3=K+mVp`++ zDS8WUb`AyMl}t~|%eYE?+`H!Vb^i3J4PKgM`UTU3K5T&b_b_aJ_UXRneP4z~?a>GQ zg|_uWr_GM8Ob5?ko4?6xXvfc{roonl9MzC)j~x28?oJA&g3XuET|_;rK@u8>l?o=W65Ti7rP6tyz$(45wP zr$czIgANG}H|k&nMm>qg(U*7B=Om4cBP&Fro`Cb@M2X_X~6=Jl_83P~a?XkN(AjMGtuLW~PG(op$HKLe-{zyBPYq zq>Q9`-^MBx>2i}70zun&!_}c=1Ti|aC{B421E%3Jm z{@ z;4kJ8wnO?n#`!kmxCrVda&kK} zp4O3Rc7LWhk1)-Z=TjaK+$ASNb8;sQ9|ivoV@$6#wgxBO8~=Uk1Asc_jrO!I=7ri$M_lPCPiFL8Qi3C+RG z^55=n3;b5-f-Xz^3G)87_wodH#|N904T~H13*N*fCrfZES6wa~ewxdlf+ zx6kCc{1#6OmiC7Q{%>erS>|`AQ(C#ectQtmr})QngDGEV?qv3-h(A@R4L(Jli?R3w z=8qAYEO?f^FAru_3>=@WB2RtCa#Drb@cyT1hCi@gIYr=UkFniyrg47A#8zZ-DdM;K z_7J{w%jddp`TkpK+r75AY5i{cZAF%7@!wqjIDg^$cZ$C}!&tY?PfD{H9Xs~pv?AjU z9^m+5N0@P)?qhqD6@QvgO#d3UT<&9{%Q#MD93;k{=T=$LO|o-6X*k)6oNfJP%Y!zR z8YZ$n94fwl#_S5GX%up{_m$R}Ic+~7g;sOIVXL@t+$vWJi`tCK#|kZS7SF)!6*;SS zdUfMfwl=WgS77)i-_;v8UMC1on@6vUKj(9ncSHO(-udGHgr_3a74au9yGZ{(M`Ai! z3l^4{Ea{yhG*xJt&~%|0LNkSC3C$LoBQ#fNp3r=uSYTlSjuGk?nk+O$XsXaOq3J?1 zgk}oO5}GYEM`*6lJfZnQ)kO(ks9$KZ&=jGmLeqq%3(XLkDKtxHw$L1*xkB@V<_pC~ zeK`I?{X&z4rU*?HnkF<|Xok>Cp;WT7cSQ-!7pO&6LWG*f7n&}^YOLUV=Y3C$OZ z?*no8Lj6LMg{BBi6`CeAU1)~TOrcpqvxVje%@vv_G+!t_r^Mk4^$SfFnj$n+XqwP; zp&3Fmg=PuO7Mde8S7@Hle4*;HgfG-DG+Ahh&{UymLeqt22+b6lB{W-Tj?i48c|!Ar zsw)z{P`}V*p(#RBg{BEj7n&h7Q)rgZY@sN*qHKSmexb=iQ-r1pO%s|f zG(%{n&@7?ZLUV-X3e6LmFBD63Ieejhp~*s1gr*8j6PhkGLujVZETKjy{*q}43S5d% z>tx6I{s&}}$dI(a@2R(O&I-Brg#JrtFQNT}4iY+4=y0K9gnlk`s?a$?mkC`b zbdS(|LcbPzSm;rqCxreW^hcpT3;jjtC81Y^UKi>)$MFgl8YVPKXq-?xK3P)yHH0=2 z+EVC)LLV2}RcN}?+ZV|du=w6{;3q36Kn9v`D z<_rBv=^aH{73vDI%Iq|HX`>Pq4x>xBlmk3WB$SN-2HO@X`wF){g=>zLPrW+ zb(Z73MC6qeId=U0(KCGicA%8~}3g2q6Z?xQ>Cig3d zTsyAcT=3~aX9~6R0O_K4p6D@K{BwnGjnExJ^MsxfYWrcP62RX*ty(qnCv2!9}tgH*{=5xJ?2%>DlZ@&qtbk~XLc(9uZmT+pLq)W1wugA@ z2`_qiF--#DB~Um2R_YiU&!b3Lz{wUF2icsKM>LG}lT>)xrHh z@wx*z$r&2P0;)*3Jp@-WuU$`YtN$UF{*#N4|Cz}7Oyt|~0c+0`k#FsJMEJK0e|-rz z3gw^lye>E`DJEy_oG)^!N_Mn*#{Z+Rox4H~**~ucJNsgw09;i`nD-=HJFjo;Nz=`N z?73F>Ysa!2oIlPE^RJ|TOTnuN+(Gbeg4dF8v6sT|kBnnECz;>`JklRuf0FTSVaEr1 zn7>B}W_(6&)P$WVT)PfoyM$})lkKw4GvE&tubb&Lh~?Y#qQ%7||C^GG&lf#!ri<|7 zlUl~ve4g?ur;E+!R-a_SZM&Q&#t5D*^6j{owOjTg=0C*jDiZb} zIU9xl9+C4;!NV&sAm&ql3O>ru`28a1IYgY~CS7H2hR`+K4%98af^<;q3rq>veZ_~@BZ<;Gyn~o3HVEMa|U&-10+)esFR!(Qp z$6uTI8!=H|3;tLV12$bk5KYqmqTpSTKgiV=+^)N^`Gm54pnTFp_)}j%27qg5{;}=^ zuW+!Piu@eGe-{4Cf3W_g#h^AnXLn=V+Rf(A)E61I`SVSDuYnUCq`QHL3JLI*4 zq2Lk(Z-s~l;-4$HU61j;@E3ytiQi8Vfum!!$XydWC7to{l26WKyqWm(-elY^ui1~L z4B_<}vfZk&7=_R38N8F=FA9De_C68+dcp4&{2{?ZB%|4SsgK|(g5NLvhXnsf@a=-v zhe1jHV~ts#I|YAH@R2Tjir{+%e^U7ATLvU2xe3d8N$`1sj}v^2;NJ+|sVVb6EV#l8 zh~&%>yocn6E`le|VSB!W{7P<$;FWJ@IYXJKbAo3rWqx5-FXDwx^0S*WV*?hW1_*vq z@aF}`A()2$-aDCplHf-KKP7ly!T%K8uH$JZ`n(v=a$dQM0k9c&SnxiA*B0D^i58=$ z;I%|fg5ck_U|^{54*@0qd|9s-FA=u&UZ>YN|J(ZNAo!_W;TPQIA6pOS6;U6))RMz( zCW2lPeLii)_y>~z@!fT!k6kxt>#-xisXbulLz|2KdFpF`03?8TKe5p;B z9|gDbrMA82M|~fto~#3$?Bls zF8eS+6wX7V$eb2D``hss2yqVy`1uupKqHuQzK27lUg1`PO%dz+v z!Q-A|e5~;QCiq+z-l`_cZ~c5>{)vJgap6A;{&v^G{CC~Pa-v@-j1LxkmJ8o2c#D59 z|0vP35)4K0J>bIM5d7tCh51(su3jvRhu}p|az?rE2L-?FrNaCZ1YhgI?@nYnkG@=( zf4tyl1fL=LpA!7zR|@mrhKxb_RDHED{)XTyT=*KnAAGGazf*_hoN(c71n=>BVSapb z*Myr@mTSoIQt=%VJW>XVrto9xwq)jC(47I>ujw!N8o_OR@i}NCKeqwPe?lH;S(owW z-(Wf2q~4e<_>MOjxB1gSg-Q1D-@|eq7CFxe-t{f!A1`*^F1UJ|ahre2qClB+7yMh{ ze^c;(zQg_er*~MgR|xL6~WU4kC*sv5WL5`%->Mt zN8p0wED+qjj~)?xv*7m${}jPv-eWnI|BT=XF1%hNmY*WHjqf{xr@HVJf~UD~r!mV( zcj2uB&k)?cF9rb*WVeaJZ}-6<`Hb6!f74EOjXNDGLe5E%leUiSAY#-h!82X>6~W#6 zXQG>MxS6hT%L)en>$r3q;FMl=pN|dqVZ;B|@$I7YPdEI<)s6t;Y!!7?_!Tm1$)#@ZC;xF?TrJIsH|2jTj z+2CbWvTM9O3AjRM)II)xm*DRCg7!wvU&r~o0k4Gdhl8??*5>oifX7MP3zAL1DCk?Cj9>5K?ePZ#i`YTXUqO3 zr#L?pjfMp2lld6)cN1Ad1y7}eI^b-1IRHFRyv`JX`|e=*xiVq4fupTD01qVRA4T9F zh@8w8tWS5*^NPhEWc^DD-lMt1t0&`S#m?t|2MV_`8d_wB6xsijEOPDw9*F+~;g6ZY z@{b8W&Wu4WFQ;<4g&QPY@Slp1am8LCCQ(|0S^M44m>q)(I{t zN0?pB5!~*hTP^rD!Bg{?|6Z|w#S{rw;@emF?-D$tD%-h(;7?ipV_fge7JMG?Sh+4p zz5*V|ZYP0P!X3N*zKlHNX~Fu~^~LuHz5;k4Iah^0|8~~%6DI0tOO}&ajP2P~uL{g&ZJxsd&gWkt?N;g6AhgNFtGTyUK9XpqkZ&u=a1b)D`18fO>P zrcGddIvO1H!+Nigu)6{aIs%;ZOvV=p$W_#g-*va(^BFJAkEsoUtC<|&LxLy6uvB09 zAK?6%z+%*+zysO&U4tXP&Eks0_WS6FKFa4A^4_%NWhMAcIifQl;cWgnA>rOD;rh*8 z)WG*jd3mvLdAS2P$x+39hO>dBOU?V3KjoFe{Eq;q@{)C(^~96LZ3j+ra%qAFZZC^d z?b|Y*9>+j=k-uK>%woZY|6w+(Dt3#8&bK|pc(%OnUKYGJ zaI&Y}2fRUKO*MD{!E$*_!Y2X6Ai0M0)#g4bxza`OAIfHM-`;lPPsO=Ei^`x$o< zc#QgMyX8lblNQ1HcNabX^+@3Ot^`i;%98T9P4ZRDqY^JyJyu8X)N-s(yExY8ZQyb# z8ZudFaLj}BV17G3Fr+k;d`o9XC-urexntksNE`on@5jZ~RYwVC0#pP?dl*g3EIbNx| zIlrwEeLe(Ec1tVE`6o}_gC_*fk$Sb7@IU)RVEvZ?r}t(zd4Hk0FwXZR%g?;T^81SX z8o&eP&+fpD9c16!-6H1;k&{hFjlxAr{#+F7C_m}}_d24|PjR?7DBJMc`sY#Ll)kBZ zIDNPAZM97JvtMC@9bxmSLx$goDD-zl`2Dot1nyb6`|{J2&k-|OuO;SJ?*XT9b4nJj zS63Na9xgz31E+L}S;Z0tu=!N8G>O+ctoR9eW<2mf_WTYwrAv-0T@s&ReUeAB9ln-y z=>?p^wfp15JnD+@=WS*EzmR(J4n&;zb3SBF`cfIW&A=(XxgWD36NNwVIl+5zgw`^< zdKfs#N&Su)M+v@L@O1j9FWiTM*L*&3d><+Tf5+e`*YT|X8zN^la0=I+U-6{qd9nyO zmy5t_cI9~G9A$gf6ZyRbkD&>DxaY;rIl!qsrtrZja$C(m_J;u{ee(JR8Dy~FwOeXe=NBF4VHgG@C$h;cQ270OIbOLUztoE?C(X-tTgbQ7OM=^dnG1#gN5SnrOx70P zn|ev)%wsuL{(0bJAG=T4)~gXO2hKmY865fl9hS37;`=UevRkIuzn17TOYoeBSn(*q ztG>c^$d-1_YDxEZ4K7Rt$RgoSpUUA5mV4KMQ@Hs-oPU-|gi~LYe!;8ZhSR=Z(t%el zAlF`gWcaP`7F_{6P`$C!;3(JAIDcAuM!m-QYPsz5>?ER|15SD-(h6uhua3$jp z4F!Mb^}yji2b|>iUE?jsi{KAS4=krVaFP=v?=Ktfsv`I!{>k~o?)$d&LvP^p-Y+Np zILV%BE^x}{dHsDRMj^J|Ft|jr0J#jD^vPJn_IZRKQyJYEx98p1^&XQ2&ysPEdLk=Z z@SLw$ldgjQ0i5c2yT94yhkX@TPc@PQTr2tcHAIl~Nx6&j)feShP>$gFLs`$qgg+m+ zd4H{7{*z*exHlQk|AO<0tsfp2JYzK*rnBV#G~g6&Ivq9*C&O@Ri{P2EfM}e^KV#&u zZUz7AzQuB~vbnq@vs$V*@VJ7Eay`r72zLeR`ESwZtjNiidTEsKk9b?+^+vB z?`j_o1a9K%s>copp1POq87Ao)|31sf`-ANx)9UJJ;DOR{iSWmK#&SAxG*sUY0`reG zINBjHzx;*h{~K_!f3j;_=v_20NdGiizzo;CB0un@!TGx2{{`Sv(Ejw>b?g$a*Z#%w zbADzZTktRb&3Mcv2G)zP>KTFce;7FFnM>c*gBvIL@QmR8UJMM9`seeW%%3Lpwtc^= zUX14*W5(G=noB9J-6%`!P5oLp2F!X$7ZQ@z)k-`<`HcDb`-cNN3QYhr~0z|+*7P4vW;=` zfKz>*E&VmVi@BqIf%Pv5oaATJVLMAVQkCt`_Oa(o*m`3zaLPZ)rC9$LB;0GjNltdJ zAcNTP_U;1$huar8#n+xYVdGn2Aj>fe$RP>efHJP5;P(79JD>YDaMCC9gJ8pVg4xwr z;dhVgW($ALvmD=}vHZX{2A78m5Z@q{uVnl@RPMcO@B)l-*;2MtDC?h&?-UetGk{aL_B=NF6c@Qoz)8OU!Eocp>%+Kf!k_MH$G-b9%fS~h3}2M+ zm&gokx7NTZ+?Y4HVmKlEGYmi4OC>l#Y`His{Qh+2PZB*J8piM0escZ{*IG)24(IgE zo6mBpv-#BHz$x5Rd7maqxPKac@f092BiIhzT=wh&oZdTGZhHbJ`6=}A9=M&N(5oW@ z+hHhh;&<13jZsk;oDR~5>u&y0|9lcyPHBUq{qPazw^?GJwu1Y==5%>cSc5}NOR!()+|EMsO9}}3r zIdHO1auz4-MB#tm@T0ub#tpblf)BU&n{0=sf=?GY_PobRVz(~^&y({f_X~fOv63#w zIbnZgajJ{pdB3tg+l7C;;Q1f3J{X2FZqYcl&vMs%_f_B&ue`@O--Zi+=kbi&^DHAo zeg^PB_MBA&z5%!?*AH>IjuAPhir}v@f#gG6zMw^XI3WZ0dF-guDub zlgX>VNltcmHdt4=JI>&RSdHgs5qRh%)_<#vS0u=z3BXBy{#lmaLhRPV;D43BwFvwS zaEg~bm#CCH+G4Wc8#sOKxJqaibt5v;5(TU8gB5 z-`!uH20T!@FA@HHIbX`w!?mZfeKI~}`+O<#KM*{nKBq6fAZFY?!ToPA{|mxjej3|9 zS@Mrx@W+6gd@`HmU_E+jD5+MNSpqlr9-kZ#NWt zBk(|WC_bI_Nj~N^oWq!?w*|N7?Y<%L9R-}^XRT-Z+jd&M;Axe({Kko#ZZnuayAK18 zivAzWWIVSw%dzdZ3xcQ7=l0-id#uMS)-$CT+b!MPMZE=_^s(pW?h^TD1<(AA^|>bc zduL00*E6GS=Oh59erT3GpH28D2){l5x2=S`*5KkPK#mH3<_1nL`qm7&D}rZy$oLx^ zZB=Cs>*F35dLB5{Kb_=UvnDJ?9RyDCwde6368w^pBc1{zYA(tDtE*fDKClRU8gL3% zz0c|RtcVPr$9UFr9HB}aJvCEs)sf4ET_1RPKF2Fn%0;TkNnXHm>^a7vfalH0Qe(opy?*8mS z;FMlXTc_ z&dcG3GhO)8fRq02bv6IC_<7F%%Y=U;aBAn+bL{RAJm@o)le&Pzts!=JP4G-vuQij4 znTr0L`SUk2e+CoP4S1mR>Iho|mOm(S$DlH8x|M?>DnML5ofm6KP z<4D&9PrktUWR1k@ZX_t>!>z9NQYLVclNrnQIV}9&0uPifNy|B2xhFYZRi(ZfYjAnE z09gl|Yl>&MlNtupTAVNe!EeGoUS<{XAYT^4z~?QPrbcP?Bip@ zH)eCIHNYv|FT3(>$a=B8?&8%kPO}5!~E%g-~z6=`B&INSdRvF9_JSdRZa29^u|OyH!yJty~Wk$=J9@hZ#Jer~Zj zu$~=&lRo}VEI)(Ir*>`$%>Ns3;!i2ThVLrjR@lmTuJo51XudHsx75*Y_6Ba!{Si*s?t(wKm*a(R z^%?}l$~ezgf#t^or+jG7-L~cTS>Pn!J+D-6Utl>;0yq3=tWRZ5HWjy@(>EqH-00Cm z^mzt2@#o9>mac-20v@Oy%eDN{uHGd4`T)yGk@1S#1WyAVNX|rqqr42}dPADgYMaQ( zmlwqkQvaM5+^(jMPE&srC)q$DR{! z^XKcpsh+Xl4XPykqkxm1?)8n=gg)9-V1FnFEH1XT>%B?*&3ho|%I3l?H?v2g2 z&wMN4O8YQT;^jHQc&aSGFD`m^6a(wr3c2t`L&pgQWgPpHzeN^;xtv6c_Jdi%$0gsii3X+Q=C$lb>FFF^4TzsC$ zm+u2{EuqwKi&tU9_OE{fPU)*YWjU`y2DviF7*Cb;&-T63P4HwHms`l}YO2A-Q-G`x ze&w2f@gC>=8R9B0m4Hv7_tgDdkL8Q348spi<$DZe1)mI@@>NWKE+}t0e53J+!1inp zocQhcob3G9JBA;4Urxv0MgGhpL0-VCN-+y{W!JrwiU5IN2vp`hyvQ_Xke)aj(O_D0tfaoIjTe|Ep&L z+kdUWQP0S{a|hu+Tm=6);3i$91Bc``?!mK+r##2;l4MZt0H^X2lgs&JmE^av!tb8< zTn?P#YrhME9A?~)!vB}`gg*w3*D~Owr~OVusK{yZ6YG<{j1fD2`+?x8u64hgfRmie z0bV14zF1Cf$2pPzv&Z;tKkk|Hq<@^U-*1s>MtuOBR{(~p8bQ2q9c$jLmw z`TRk#XM8@#%YL_RJ68v)wZV;wh5m*CCw;QtWjTH(YQ5ljvhL-pFn;Xm3oJh-m+iJr zq)in(ZCi*z>^Rj8gBJ?Yc&c0!Id;94u)GhP(mmca&bi+5&*E@x{tWp=?Dl0DV)sE~<2L)Hm26gi$tqL1t&j*)On z12_58HEu9e@MPJbW6OKK<#(-Ly5lm-$^AEHs9qB8VBmq$WwP++_hA0T!oOZ{_qfV& z;FM47_X^{M-?L2?Z#(rFk)w94k|1KI&@3Xr}< z;QN4+{1~Y)>Pfh_Ukz-B&cLbOu-{3lBVl}01pidvCcUO}xkEG6xYLFo^_7hC1WAUd z_$TwH-^cmteM$Gnfs=jQJeeHKGZThwZPI7WS;0VEM+(KNK^p*a86~QkUTs#GczQJPhZ zvISa6e9syF7<4q)4*euv&6?7FNt~lAc9UqS{vi^tcR0YVa$~>XO4egH5j+kH2`JpG z_gJvqhxNMPsVi8K)e_%*g1g5(LNGx_a0rOM=_)Vm&0`CSt)%CFD5!eX~}A zzX^N_@Byy*uOuuSCHX0(SK2FH6u)+0%=P*Krh=R}q>O7wpUc%X3SA>UEG;a(^9fyl||#Pw%e zdG8zpJ_S!?`M4n_%^($o7dOetmhXFgBK)lc&y?|*wxZ7%gNvsC$pcRB(@fbXk|6i| zu^g|o>ukstlJ4yV&ysX%Y;AkGfv-4(vK^N0h2)K z+X8qc+_B#Syj$c9E`mP`IORk4dX*A5K$!4!S$EP9w=Vp4374syk}dA{9{&*v=fpAzb^cF(qDL1^3UxUSPmrr zLEvOJ`&~wBw=uxU4(|2&r*Hu86!7QCzPtqzZp|{xZ@&W_CHOSpfxAobspr<>JaYKYZxeON|TR$HV{!XrbkiR_3cfY@0 z5ptxMtuEuiQ`vRT@PIBDqk=6sRgplp`Ms0q`6FKhn%vVKDb{LntD)JtGt~!UC zc7XNoD*C(uoWf1M%=T=~L)gh2)HTk}cT4)V10E<|U4%bf*5h>%{>6gl+&zBM-}2ApdeST59ueGq{?EL|+%8oOH~}sH zFT$^aIbK%Jhw8CD>9UUKc8TxTg1h&t)~wHV%ai)Y_LpB5+WuIinyMa@Db7Y-xy6E$w@T)($yk8M~!0jx@eLl$_g6BWVcCIAx_1{5yV*Et* zz1}Nw?gn02t_zZG2FH6@_9JlWEb?rW*2bE4?SGF+Th41?s0fjTqeD$a?1K5*`OPM2a;dnKEhFcPjmhDgxKLZ;3OyOUA7OV+l{`Kklk2i1jfhtV-4{X<;!Mzse5+qt>HG2XI+ z+p8!(#{FOIeSM5H*;-d4$cGB7#1I4wOW;bbhHlNJs;;U<2toJ`Fb_al27`|G4c7u z9}m}QT<^ZA+WBkxmcN1P)Xt|<@d^J+U+;XEYX7fly8ZsA`u>#v?ssvW+J8^iVfgd9 z{eDN?|NdhoFNANri|bi*^-H+^?fB+{R~3KwxNhg8AJ4x3&+>Ih(H~PC{HPjU?eFO8 zpVoGn8bz)4u;T?{=ECUs^JH^Kfi+ObpI>bpZK%-`ZslT zJKvy23iyJ5eh}BQ#``~)T>pY@Cyh5gJk4(B`*5A*``gM+6#4#xd_VSSP3Z%Iv%Qb& zG!O6VbDd-#{U_bdTY+jvQE#pG8@ioze%#kSqyB)dj#c{~)$`EAb+SW0NX4c6Exuph zWPSWYT&MX=rBs|Q1tdI`ufl5`#+^|X?Rfh=PTaK zp3jdgx&C9g&h3AfqPJJ{1pV5Q`+r;CpU%Jd+t1bf?`eJeb={wz!u2dV`L9c^*FT~9 z^O>(y^cHCP_x1Jnhl=ulUDM$Y>Fb~RK6T^MZ&NS+6EL8%-aEi`8t+@0e!f~QbM04_ z-2dB4u7BNMQ0w(Mt%v-S9`ASHI<^1)|4{wh)&2bY`g*#q&LIR%RzH6T*QuR!9@)?9 z>zlu%=t21KZ+@Siw;xdR@NJ6S)PCgq)%EvMev@C<*FU52ZP6?KFRo|t+i&spxPDlT z>$4j09q8+?eqOEDf7A2u6S$r=u3yCUZ^t+9{U6oOLw)}@zV&6;(~CbJ!FAe?6CDTm zlNxCF9=^VK|C_i@^Y-e$RD^t?<^Fs6`loap#Ygp{zm4nMpWjmb5q@~k%kF;<*I!+H zZS61NI=wd?-~Pk;`e!t*`)m5y-_h4U_nT@y-&EVL_UKHt^XX8nuh=^yeLaoq{&+vT zpZ^BesXv=3xz-=3`Ap{p{4%c7JbXr<*CYJ)aiGWbdun~ZTy?kh&vBjj^Shd_zM|>; z7jT{U@Xu&HMCR%%&((WBrQ>pjIalNvm2Bg*N+P~7*JD*qAe_Aa=?IV}!{xmLqq_4lHCr08} zX1Jb3|3Amqp`ZV_>ZkE5g=&6ke_dVwC))7)i+tT0sQ&dwah=vTZRh^%+iG1tma32a zYq(D9^2>T%-qr2=nHTE4lN4S()7L+x>kK^8_y0#+r}utL`@vu* z{jA!L|5>;5Be+iOe2~g>|DKU*CtXkGgs zFMCrzp7z3c*6z2uJ^a%;thYLk`X`UNTmD8koAx#~shyop6i2G5Q7P0>)nsN-Cm5&pUvao^mY<-!%qgSbzUWXT{bw(M1}doGyeAe{=q?OfZx0Z zPt3k_eAd!$eeLnngZ;;tr1_cO_LtA_{dA)C+B6&-2E(DyiC*75xlU9--QVm^ded1z zms=;e(4^nm<3Vt}+<>VD8zfrS@@ZJFS}u1P#fvE7~ASTJq|z1>;~E_TT6Y z=K+m=``PJ(J$j60qWL5kMbq0(6b;RUWKB`4wbz-?E)Ot+*tI+UNw;Ck&ZOt}|2|DN ziNJ>ZacID+U(k?yanR{q1nZDy@{aoT6f4(_=F@&KtJGvS-nk0;Sot=l4tfawZM86y z?GS&2>Q`DF-pKU*0ez2I*6N1voUMBQGU&h9zv_j<-q|n!RgVXtEVD1GbuaxIlIqT^ zR^)9Mp*3>+fsyTCWa;`tZu-WDXfoJ{V*sJ-1j#1bee(K{=xKJB$- zdQw7V={fi6{b)3SGT0uUN3#Om-31>YMrdwbD!6wh!`lwjQQUk>GTxQ~wC-;by<0lA zx9vZekCi?Pi5+-b{sBJxQE!Y*Hf@_h>~!8djs`*Fd)>k>O@h_O7l>IgyT(X?8)cN2m`Z3;Cx))2dB({D8~ig0`ty$D+9w>65V_+G!R z=rk^U6?9h5H{Dt>cO-jO&t2ZTtXI(pEJokZg5@ac&qu*Ht}a`M4l-qM)AujNb2jek zz8^>a4dgVLc2$fPNW4?O^C0Y;Zu+Cnqwb#H0TKIGJ%1R^Vv@(L5t!~L!I>Oc3hIq7 z!2|}LhuH)#@Wat$NTc2J+q~Lf>2V{TPliGJq1gxSqD29HH z>a8oH>`+XCclK1|SBaer3|L@u4_kg~4U`db3pdj0O7EM8k7U2LK7)R4lZ)jAn zHnvb{%%GJpG1BP3ymoo{h%GdHaHW~o@Y`US&;UmhepkYrQnav3<_eS218C4k;p~Ox zlW6#LVkAm&eB^^t6O9xj1-bSHZ_h!kmqBmxGKV?DaPM!Z7-#pff9mKiN-(<}rfz7!#CLayL94uflOiXWTtxg>DAc_VGCo#`tzYbH1y0Da+$L zWK6IAbRI+T1h6pb#WX*Q+H0lmrR89H;)DP^MF5AF;c(Dem|nR{lZjHtD$TLH--vD9 zw9)O3AEgx73{A2>Btz{Cd-*P!kuHH`vXxU?pVq9y(y5hp3psDJL^GCWL+WOpqKfaI z(l~^UQ?p^Z=5j2rP692FW$D{o3f<}r6wsC_jp;Fi+<@cOH(grHVZWz z6f}3*T}F0k8!}@H((_~$+`j^S+I>l{F|*;Wfvhzqg(R7t-d4-6C4P)Fa%;IbyzT37 zI6MgU`~6@N2iS>^(8}%`3{7pd2d&o0d76xD7s=}9bDwTt^S>F!m(e^vBp8c5F815= zo;I8#BT2QV8SL09W^;4nOz zKu0C_Ay{Q+)NK+z=a`Fk)KoGL`;6Sydox&>364_1fH5`;K_ibnPGFbuZUivwMz4PD2Z~g4J>A~ zmewU|24Ks{?NK}QHd)_8gY)SuybAoq#z=BQEBvbUo8kJo!)Np!e~O6 z%#59~o56Gnw^tvgqFJ;%8BH@B!&o44VSn=|yY4r@mq)XO zT~>U7H?dD6u%zB_SZJ!qLq7!S(VMN}eO`SKfwxR<74eXMRtI1SO0?w14&R`ek{{dv z_J=b;Ke0Unw$GkzmwW};Sw*~cGOhf)rAiY*(z5KK;sI=JsG_YTiY=vsuIg(O(sW`8 z1{)n*-pgEJ=57SRBk!cKOj0Q-L$dp2RJK(D)ytcz!mTtD%3Q)US#rYL3j!9QSz?6r zSRUnp!xe3dm&=&{qO-Oa&U|nOu zJoH-le^Y+QrnNjctHgsxaz31q(*e>xV;zWFX=R}3l6b4-W6`FtwMdJ|>{-z^yj7}5 z;f7W#two!H?b_?FH>@2}V&>V4Rw4lNV%WdFgsZ!-PA?6zd5q}DF7y_Ty+oW!UpojW3UG(_Uun!sHA`+n zcuf3h6vaLR7)dU~3MroM-xHsqQNItp$POhf)yyseXNM3{FrMRJObP<1iPESFF00$A zhCMn0B`OY1+M$(Ilaw@66oggt?NL~;fH?^%lxn1zELO!9ylrkG(a|fmqk6)?RK*r3 z_h^V{TVOVJGm@ZW2MG(%w3zMX-rZn*n*Dw{0HD^N#@bg=LtbBS0bB-gbn%F^+;ITx z#|OA`F^tX-#5X|v-+yqj{{-O@$45Q_wfxtPpZTrV^~KkZPUw}h2!JR>4cCs|+?WRE z8;DrFx$&VuBlU#ib^NPM^BsKD2n!Bw$n}c7V_#ndM99wZ7WfyUI*&eay#J(qhz^}T zIW+yHUXfn3rw<-<;bc4AKX?p3vUa5-L2(eo$T9$fL^$@7UW~+p zDLL6qU!c=p1UE@~W$W=743D!-{=Y@xrr3@j``Bwp5<7hU+~3;JJ`8bVUczN{*=qH= z#6?sv+zNJ7R&gNQP`kctPjEAwA?y;F6UxqX{NLnNH<^9#hBNdSZ6O+})n6Ekv<*^r zvLygJIg$HzKT;`N?3K3Wv{(+Sj^)ja5IXCVBdz-S(HeSWF)j~i@AIt0;F@8IBnoyP z61>Hs!mzPF8BQpy9}<|84nV08%;SgzDM$M2S@-K3^^Jx#laxdWV4Q*&KsE&u32~c{ zp7!6?^y?YCWm~(Zt)GRLS~J@8TQ~5pQ8Eu9%{_ZlG>HKsXs&xj3jgFghLYdg@ zll_K|Io$JAPoAFoPZ4yX#;l=`MdV{^99_4roZScysd~uJJ!KvtTpy`!I>g@D6b=6| zh5e5)#Xcpp>|!Y{qlhv{H~m!0OmqqDm;t3SA~~nU!rIdVX&9=X;ZpjCB-F3H$;1QcMX3_1Mm+sQZrrKBB|Juz%aCw_31% z$byQYFOWh;&PAv>lthlMopUUN#h;<1pUuxR6TSBU>rKyx*xR8qRjG|lVIYd1_J$Xc zO2=8vhxdP}9Kf;V_yH9(K1m#GY1zWQyKJ z$SZF8Cuh*V0-9+`f#KQ{(*T-s4D!<}?pCTHzgd8h1ELym4?j3bqR zlTfRhTP{zd2b=!uz1d|<*{bcEu2vcz-Iyf1MB5U2!;~2|j>o&8tA6aMm{n|F*a30W zzCi@*_9a@zZ^y__p+vU`wsLQL5kM=SUBbD`UtoEUg7Y30Ono`vZ{@2F#TsEj=?Nif zZf-Z}wy3zG+iIzau00_~1DV9_hqO_Uvb*VHBceCkKCPLF=%IZik5kqo=4F>s(=VnN zjnGB=j9WgMKnyCP&)v`kK=m}2)cOu_9OMwe+_Dzl`~AyuR)cK}h&LDJW81{2m}DrC z6f>n(f(36|WtT!T#9alaQ)K0$jdkep4ll3!5cMa4Pc%v^gYvFY^PBsF0rL3Ii1WfD z1mdIge7x-R4ZI%?3Nq5T7YFxJw}* zULAXh!zvh!q3lL`L+|-rfRV`1hi1k*s5iJGZl%*8AvzQn4I`B7q3*dgd|W9?Z5sx~ zS=uIhyxD#F?BuZJx1mqn&%}o}?MJGRf~hjmgk8yu?i^$cRlae;&Z;heh+c5oyJ&YF zK#(;3rnv$>)bw|cqZkDp$d+pQJMCE)D1~akQw%FcmvK1FusCDGXq$dyQlXKpd637+BPwWh z+>M4RRrmQ)m-dPE5XO^|W=7)Ml{~*8m1T5f0C*W#AtRByq-Cmo;+9vu z_Lk6Il&ucSS`=Q&F(9U^(b=3tY;Oy8398b(4Qr2li%ydTxuBYFYeNasDjHlXHYf=# z5W$Wq?g*b0RSIE11PI3tGrXdTaX#jPy*feoI2JLWsyCXS;LF1AvaqbtGxh{?9FbG1azZAViiteJnA$_ zMukXW54r|Pf|hOpo?3&PR#+sB5Lyz2IGN5Z@Oa(RHS&|R%LQPDKOZMVIRJPtxdki0 zHl+d~>N|DOM(sc_3w2P4Oo|J9kv9emPEv&97|Q9Q z2%`R#EGUcdj3{z|XxUl$jk;%%X=7SBV@{Mu_K+E@n3k`Iv|UY}i&?AZ=LHjBF+g%_ zo6yuOpn+$hAg$$dN|n2&7~~!h0`}d2i!81qUWY<^4pQDe8m~aI3D6savk7Y_>Mg}L z2sDkSRT!@xjriNKtH^BX2Jg7$W?H7QA;=*TQnMhpt6rfH>oi_S2myA4Vcw;J0aPFW zvnJHY=(kWPX*?%oY|S>cF5$LWVdfD@%#rJ(tX*q6VxE8Edl_3&x^7E$BWtm2iz^(J zNY1D!Ii_=C&Q6Xjnl%%BM+%(8VkiX;E163p!uS~OumhPCiHcTbkb9{(5Wj37Hrjl8UqeCe2mDrSE%Pq)lLQGJncgx&;3#DLhpE36d%=hAMb zSr-bt5$P-C#2R5jx-)iUtiwu5_qIJJ zqr+V7!q8-;%}=wwz~KraeswCTYZ*Z)%Y>R%mX9N}Q;ZTuUZ2MY4 zzY1-Me6h4V37KAz=qm;%-kI-gqs~NY)X{pK5oY8#b5=ri5{^eyKP#`Bv_whPm1W~? z&G8Be!F~yOmj41T}7;673BgZ$7#kU9$14TBEIZtP6uW=?1452 z;e`OA4H~8iqWusOi?PJ3l`;-45e^IyH>6mt4)#$U^vx;~M@uEIv8w;@OH2hE+=F@D zn!_%nxZ42;yc&xM#Szb3CEhbG`V20Ek}VP zTTs$*ny^U~@Q6SUsLsi7q&TCGbdI4rtPM}c*yi`RVCL+iH6T=_HNO(2#V`e#l8`FK z$I3DI7%{e2@Co^OAz6$N(HP z)Vri2EULQ`Xv^DShDyW3HsTyX|A0tdr~iPKU}<*{u`-B8eh($N0Pc!6hAI+c_@`a$ zQ8@JzLl)a2Xy>y{dhQKbssyT64mQzx$~Fqt2;*3eN>D3PL8uZh%@C?Ex#3P%h&Ch6 zf@lk|w;#X;Xel48d2MMJT4K7cu4ox(5Q%bjXJ;1xkI+%OWr-?%h6IHdkarE3>5@Yv zcnHP??0HBRlD{eeo?zK(XULvt6o;B&z^lY2-d&` zAjH{bb};H-_53sB%8Vfd5G!tn?9lpY;ol5f&?&v+liydwC z5SLn4cA!-eBfjn*!m}m88IJ5v*>IduqQX2@IqvnywSYn*28@q5(8!JRj)M9H#t+08 zhLC@bI6wG*;s)E3Gz}Eikq7%1)LZijH6gq8_#W75Dt1IvL=UGyoCJeoL>(muK@bSu zBN2)`rcW+}q7&x36vub%S12_A_0viXmLgY2Flr^bOWu3)={|aY{ZcM9@0J% z)?!(ot82$IJ)9RkK*l>U7&}BXiFdt6n5bxprRw7 z7Wfl}S)d0VF;3q|OfvB8#%>u=RzG-NES_Sfny0X1s@S|8986pQ+OAm-pv19NGtMk zttYMA*%xV*;8$YPWx?ER*sa=keK^)2tI`0sXC?fKAfxj6W_rqzr_v+En|LqL;b!sI ziw+l6Z-rf_!_-Q7RZ z75ZruUjd>No&un=iohkR0MYBxNcC{QG01~O+Tq(|Gc6QR@b*ZrniDcUM3ow@{X@zc zrQAYn7le0!uI?jYX&bst(u@=wwo_NDj8xSAM-b8?QW3V1u7g0<7dqjv#${=*B<|5H zC%)3}$KAtasjr8W*_@sF%3o!tzM{Fz)K|qDHRgcI4LCy)eI{qdiBIu6uM-m1rhgvN zKM&}iBl_ncg|pwGvwx?9f(9Yw|N1Hy4x~kps(8y(FsVv@Ob2Hw-ehFaofP#Tg`c7Z z=)eaKBqVGWy-OGMzz)mK{zU`QFP+(4iOFTroeBVOmr-uOD;V=0cv>7S4sy zk-yhq)0Dj1>BFv}3`aFBcOgm=ac3?5`VmQjEO10pDsZZ-5-M%cpbe^U*O43vV=cxi zInoWOmls_1ZQHdrb*QtY+*uoHmHznXCE0CIrNwSrBGGms;Q3S!?S9M^>*Z=6Vl82u znfJO%xj1F-1A7%>TID$bXUM}+^6Ks`sx7YpoyXocJFIlmwGg z`%08To*vR~DCc(QH&!XR$?UsD z<%^3@?PL|9vTKvUi>Rt)+zk|aKQnDfM`7+3rezRj%J5W0_mo&QJShchYx`7xtv#x{ z*U|I^=s?bRU`DBLF{NYNC%sh2ljqG)0Ro4M+MJdlAX7Pc6#|sUsLJPNr`Z>h@o2q$ z_B zf%+!Wp^)Hv16|M5byV}tVRj2~;JLB&y{`)C%KBz+Dg40EI(YBOz(1k4!*pKz&qCC&&|;E|LKKs8h~bK2 zifW4|c&;J&!g+z>%wGu7BDly3({dH`52v}tG7421pmYq7K?o#4pt-y$79J=LMicLo zU7THW)iPeCGVw2>+4Dx@0hJEcQODP%6_J#$uL{UOR7=B$skStlYX@1`Il#;U|4ST8 zVu>w}dMJVnAZe>8m`kjTEWINlbo%8r{F3E5cz7~|>GXj219=469o!1^((+;%fSToI zM!iH!9DO)9PbSc1!WxQ9eR+MYyfYmnm{|z<^@T#nSFTf%0`%U#iL+ zOrSjLErrsXU4}q4z^=|`3rptgo}zM?&gzgVHAy8nS_NzFaArY(9EtSoC4v4XvZ8@Z z`~C||6gbS`G~QR`j-qL+wS#JWNXwuY-zzStw38guEGJT1OVXGyEXu{=WtCDv4^*vO zhsaqE!ZfBhGGioxbYVG`-*$k4LTzXo5WsZAeFgJH^4BW}U`r$GmYz{?HOSGyM+wt- zp!C=v+?Q0H*E*4%_Je2_2-VVUjYeQIDD|oa&b7oTic&?o64j&xbXlcAq7l^mCMsdB zdghj&yp9LJRm zf-V_;MQJ0FVr#`-aov%)?oGm=A6$n>O6AzA=^P5md zqNlB6J`WEg&gcCS-fIpq&t(1}28+R^o#Jlfk$6}oqiiNX&yvmPJZ)!@++na~Mp6Hr z0Pej>;0#Ncvf>g_>X~k_5!DQ>UWi1qejV;c2wUnKZ|gD)rahEOx$U5;loN@tVyTQU zTkwu*o#s>MZdOqZzZv>VHa_$tWf8m=0qa|a8n z!Y~cD1=C239r{DtE{yCP6bxv?b0(yXem{nTWJyrl(ej`+{wl+=SIuPxwK*~4xiA_! zjaU;jT1x!QFX0{KCfGF>EZpIw_8nbzeAvC&hr;829SzRmXWDORn0`U!y{vhuS<9Y=R76^+sk znZ#LEh{6{WnsgsUB@`an?;Dp!rmL5e6AL7Id31Ua#EhgdVz~DyXNb7gH6_=BZSZyo zddgOLffMlP+`LvFp?1~gED}5xFXUD zby&;BX87Pb>4`Nu~~LL7i3IG)8WJ_-jP$1hzx|$jVGBkDxjls66P{DHrK1b z;Y%%mtB4m>M@N;%@vUQ)vkJJIxlA93#~;wdQF>GaXI%#&v(IW_Z8tnV z1Hs}|cXhsz2xlumA?aong^b3<9vS4GaCi$rV2Pk9i|tDGk)?&~p}5H%6s1GVnyJLL zhZwc%aDW;aTuh6-w3lr@v5s`Fv~*7^Zcf=sOB6u+m8qEXBb!)wBtI+caNVvIcS~uPfqG{%}lQI09L&-V^mr&!J5-x>|JOL190O3n5)uwWZ$Mk zSQ7DKq;6rtUQ+c=v8#%8gfN47`~oFb=Tiiz$36*3fwC4iY6|5k%WY){SfVvrl30AL z!HVn^mxGR4BQmgbp2D-Qa2?1_#Fk5W6Joau$F5|ZY^Pqje5$=VbR1@e1St`K1V1XZ zZb3|S0E!8>M0^nrEX4T{Y$&uk+Z2mSy`zU%PvyD{G^1Ua3D4ub=y=o(89K>bR7;kV zyHM&v$K)!6r@FpqOI4bVysQL|(h_>Z>)!1Qk(cmXUM*U#G&{MZD~>zlb>YlODmg}h zZRw~DK<3gL4x#hB#acAGNOc^~&ZFtbM~wQYH@&S`iiX~l;tYp!z>l}9q9J&Rlz*)f z=1Kw2DtONd53pX`7*;>2j)}?IJe4E{`Crf<_ehj-byL&4o$Rl{u#;)<+mXwl8PR|W zySD|2q%uE=@kM`p@p@|*pV1Kr?T1~sn%FA9=7y^V*fgR-t%@(?t`T+VjAU+hc^k0Z zMBA~0iQ(T{e)@(0zOpYA=^D^Ck(cQk(~5<8BoikF(Uw4!$q;3PC=x1(V=ev!ukt!;f*FkoV`E}ua%?q?GeUnik=G6G7E z{}zSVos=8_g{G|2Zb{%RWu3a3?Iy77QJ0T?tHim9N#{vL_@NNZjlCqNr*aLYYZm$$ z^Qm`c~-N7`<6!O46v|?qnM9A+H>eQgp{FH|-W+9Df=`N=0TZ$=dGPD&W}y2O_zL zAQXw^%sp$_v0sQbr1z_NLhuD>KKJKJ4go--IbuVn$m0K`#b#RYyrk z51rGmyuIsQ7(W}w;SlG4(>XW+$^p`V60W$4C}g#H%2O4Lv-mx!sq#!=NpDq;JV63X z0a*bhfKR3puVPWk@iI2lAmB;q#zUOo2Uv#=hWDX(hVhI~qezxElBGRGXxH&*yBpH_%MH4_z6G=qMEb4ArjhO3AR@!n+OWeJ`|Mu^68qqNOdE)qq@umHkh z^AA;IMv^-J(DSSVwh4!Dw5$zvhPHJQqnlo>of?I^(V+7NOpUM#5a>r7{CUw zL$%$xq&3VA8WHC4%>49~=XpH`8BwrS_Ag5=pN)hu^Q6e6?y zbVzK0qi{+pB6JyzZI<0M5{sQ=w&-lx->)6*o;ryg@L)dflYYiEs^Pdi=poHYmuynA8>|^9a#Gdjxwk4kCRR+Gp>2s9!%-0 zfXe$q?j-p(R~`5qbXYJj7(Y@7q^_G(`Y1b`F0$ndhj{+nNAdw<9pwEmQJ)-D#9^O! zO^Cze9sZ$WZf(WVHIZz7osRZ#C!jn~%(l8o&2Eic_|?Q!!H~X(isqJOUdWm!r7n5K za7$a!){!k+9B@)7oCRux(g|qe5L#UTByg4w&#mpz)7p*e(SyE(?f!aib{SKpg!Y%j zfdL+!$5Z0K01N9U?^I=Hq@{b_2^zBu!A+l_GbHY{LQdht3S!-vY8w3iWYJ`L!1{GOvC;gRIUZm$lrc; z`e0AxW%yq6NiagRQzwdsrs!c?mE|DagKNT-XL^akJ#u|ZZmAM2M|KJCL2w#S11g4< zD1-HlhFV<1i3;Nvb*h4<^C5fVTUc#4e<_&yL4VY1lVYW6^YIZq>_=awD>PJ@o4$RP zvF^85hZ6d_6d>T5G$J8AgB0ixY-QRq`$PFNIIM5f!AJQJHS>*%LTpZhU{jrp&0EK~}6kY)RBf=4)1^9%_mvYt<2?4iN{(9ygdOPIK zxz{koKM+)jr0z_vBXs@JZQ=Tz)RTF*qMi(FYF_JQ^evoj@P50)_qX5?Ghz z*nbG_N#)(jJLfG0UxmRYrUg1_DZ6KgoL?7tNm+VeD#2J3Sle%Falt3OiQ*rXrp%Pn zKyHs9JK3Ict}8({kpWpq*H7|~D8@|efBa7JCi{q_<;5iEo9tQ=OU_5KJ(X-ChaoT(sVvDK@XZn0R&ngVM;BP6w z>WjrXF1|aJa!@KQTOd~IUeV|uHO0FeHx}S!u9_-r$I%9i;cF?-#YwI}P}jOq1{H(4Rv99zf@;F;DcpFi zPTxg5Krv(@$nhp;bR-o(9FY7p6_Jj7}{%QN^v4fjf z-fph}wdu_;zQkb>hg6I(+x49)q|OSOIpZ>cA#znlL;iP&=qAC^Wn4g&I6;e5)Y7Mb z5H%oSaxT$b_WGL{DQqiYM^n(mI>}1qUs{90zJqpMs){$Ab36-+7V=I5=1a7r zyMwT0u;nUWCLltV*A6k9_B5LK8Kv+oc;-c8@sfipfH*8EnE{&uYCZWgxVlKEpN(Qb zgqvmyo=dZR9*%K*Q6?yI*8o~}pxALYYH%bY?fC^E!(lsR0E!s8K_8JH8K6zsxjFRs zU{+4;AOzD|-o4kR;ovYB4vAHfkzolNmMu-XLDi}S?1B|5>R++p)p(R#pE6F)lrf%xO3Scu`9I!PIHhxa^H!T+Qqnj5mMBo5OV2MDd2 z22c?%aS}y}wz!}^I$lV*TCB8%iUH(Q8vCYB9@;WGn`UC#r%gknys1QVW0p+}#U;uR z4^dm`0ZeAJVFp&ZbcE=qD{7fr95j^!p`qKP@`ve5g_G6z>=T@D!Dndrz4;9n=2fVJ zfjG)3`$>`rgHBhq5hCd$aU3OxK)G5O*gEjlXOsc57sEpCZ9E)X`S(4Nd(=aEF&$D$ zNG>QSeYge2mYr${M}p!Br6PK&6bmJNrLso1YL6B>ADMRNeMO<`S2L2slaJGhZ!b*d5EUtL-gz*fY^ zxq~Cj(akJd57FujtY0jiI_i!`N8l0&uYzxF31$gNZ~HnN4i5qa5Fw?C0+^g&21wkEF1i&5N)**`m59Nw|Z(CInD4p?Juv2xa&Z3bfIjl`P z;xx|07M{I?dto2PW*}IcDYUeH-Ad&arlMIyGtqjB1d~-%?QEJ#sThv^;SYLoPgSW= z%bV7pP--J7_+?_EZ5365XULtM?tHI*IJT; z!O7i{B%;FOGdo7)x$jZHdO^E?ZtlrwaUkc%O8JiZPED-Ss^L){pqe(1yN9pT} zRcz{vlF=L7@}rl{7A3l#;!H>J&tE#8d;A5oMgjpYIbzqGwqznUmpE1vTF(b4Lbc!2vdb7T~lP55(!+YqWHlSQl}N`b~Q}PGCq~qVfgMEnijeV zQd8weEQP7GP#_2rrc0uQn9ePkAEVTZOtw=&PoLXm+%##6y0chdZcmaIRP9c}2qk@? z_yJc^#<$!qqS&?>!VgT5M`LE%;TTZO(`827xX%S_ogyg_qzWLugJL60(V5nmjKtdj@I)*oYv&bmF_Z;!wbEDMxYSaZ za%t6jJwQ2O>30@krk0fJRpS&!+G*)LqEb@X+vB(*ADbddb>#=Gs*=(fDcd3BMCM4_<(q)|6i5`;S58V(5oONEw}6gA7nuz8X81D?%Xk(<=F_@;P)2sCu=yposV2?ZL z2bA!iXdb5X#X-^h%psX&j*hjcA{Br{R+yDUkn%%l8_hvK)|C|@>s=T<8Zx8C8xrTqC`g{w>gnu@h*&e7; zYHJniXszNVFyywg3_1UN6l24G(vg)L^-YW8*^yz*aE4+;IR0FvU^(t?iXt;nWxO3_ zWl~2_7=yhSjOTPs>L5&!FoP^Kgs%dFio>&z97z5M5*a;5yMXnT)oRs{!Y*DsEkHZQ zV!(Q2Vk>f4!?+ST0fRhoKoV$(q$aX7cd}07rU3N?X3o0r9)dJDEor-rTvo{7MMM*$ z%5(C-_4m#^M9L+~tuf}gqyqnnW{~eYicqvF3${~}CKATtx+SgSil>RQe?X2Q=}ky5 zLO}BLC6JHO8iAU_`8N)TQUuRVkK|6`JR*8c)K;f%lU4O~ zO;|y&aJ4x=v-cCx&rtWuWG-on;^Y)>0b-Ahh!lU5JEKDpOhs78 z@UYYA>+nEXgb`>AM{Z#!}Ip@*%WNor^qr2 zlWd>*NDlN>VW2Z0K0X`dWNao8oUZ4TLLO7cbl?(i7An=%>b6qR6%I4UlrL{OBPjy& zL&U5(cAkk)Aj)Ma>!{c(+LlYgX-kGTYDY`%UfIH48TD>_016lJWdVi^1$d-5(~^V8 z+;iR??vRSYNEJ!3R0h23UIe|iDpvW`$+Udgs#a|jj0iK*6P5%iYWmnkrBJLjGG}Ox zwOent-0Ibsj!{#<>mCD)L>?WE%fsUV(a(H*i9)0)s#L||?d2{J4Q?`!>=z&4$cq<2 z{6y72vm-(lqKi1NiG!O+fJ34VOy#UKa7Ih7vV%BODd7H154@HNS|G769Zq1`Gfp5I zsc=>xTko1`&TE}+VF{hhdRAn!W)ywOm2ai0LocB7E9)1!C+lXynv0Ect64`dUpjXKEv{#IIRVRJYAh18JQm8( zIEGT0&C(@eju69_E?Qkz_@W-PQr;Ju=loJ)*ic91POPvM-z`Z?#F@^>p1r)Zzf2j_ z6LoH37pF)woh8($E4i4G65?B=HC<0$6GK!ArD>6&vNpeK4y(Z7a|n=*rW$X-IxH)$ z3CuyzPY{+^&BAXbCTN=@!id)rMj;GcwB0y*2H)hgvfXK&RRHSd-lsP5HZf z!wZ~MJ3?6|TMxn4_g-@XhY>ci7$$5~gp%_)0Fvg`iH2eSwxuKgTW1&&0vGvth(Ktr z7|d)w#QB@J4tE8#OyB`%-8pjh)boKawP;!wz55N-&iSx+p%4X|$)t?6=6F70t!2id z48}_zCpY6fjYNc@P`;vQLjibc9vC3|i2a56Fug5>3VV9eN2b~^y$uDL1eD^jo)6SW zSJaAt?ici?WF*)9b~K~^>C`GcWp)uYnTn!gLkU>IbDY{mD`wkk#_)V3anD@UF+m&^Gu8;1I+E5k~>y2}*7f z#ez09y(qnC`)%NU3$`hT6s#DU%pP-k#aTFHJTqY25`Be57FQ*Tr$q2rPmNX^t32oM z!JV5KRKRg|&5c9`7w-sVIx1uU@HzKnX`bv_>Kn&;WM#G%+R=+yVgT>*@XF=Z3_Z0p zRUdh4#->_S^8lI+XRUB?yM>JywY^aPec>zJnu*ks=oKq2B&+_{Jr~zS@C>pa;#*aT z0K72mXgHXkpQF?jCMvhauI!VdTt-!oqd1=`@dP_LwMQ4x16x!V-VQkh1w?R4RoOcZ zFiOI5N!wt-nUohzc%pS$5>}=*q5PHC9=8t;3GZv-F^hsT;=BuOwtPE8Z#>yTbZD5j z3xpX*nBg1-@Mt=4ZpH_dIb|@~rxb+)g$W>HFg<;8IE==@DS0TU*RblG6DXaHqya^< zGhLflG(RZPg@(u40sCGkB*YKIcc|EK#)cL4{Qq$jD2HLvme0{qQsI+oE#<@^V~Y$ zChRt2S+Pq@Xk8Ot#BpzmbjMa-M_red-Go*v8f%?oitp3zN;iPKlUeY#e|QzQuPF++ zi^y_S=dAPSnzm5Ge}*sN56SarnNw_3x0Etd(cn+QWg!$Og!r_5=cD0>#^Ri(2$ryR zhO=_FrDDvgByK65Z98IM`_1C0*B%V|ga*Mt>pVC`*=d+*oeqr6qX{7i#0DCEXJpc2 za`%QqKEl-9r(RI(gCIrUx&}1 z?;o^%Z(~bwa|3ghj%?M6C}Xd)cc$@T%}Jvuxo#nE>!fx1?Bv)#e)i;`b;5XSTHWDl zg0Kg6-(Y=ii$VivH)PmFdcUdR7*10U2dxF+Wjf^ARN^f#Uw52J5?N)v@8ldk(5iio zo`ld+sDyt#B~)SEHPWDSA_2>W86nL^Rk&GFafa&XxfN$tiIo*c$Ylr+vn+0EYBH!o zTXoTNKQal%&ESU4dx60~q>v^X>`h=DI1wJH$7CLGg*Oxh3ZaJfNfiS)MBUcG46rMp zk&O`CMCc`?2*6DXT6cCg<_=s3oCqr2%JXmvTaV<^2f{sqB@st+f}iz}l3)z#u3PD7 zc_)_+y0u*Cf+A@udkD%bcTsn~?RueV996dkIf zOI+-$rFX(FI1F^xqnJOqRi3t-^1Rl_bl%G`C7IEthtDWFP-zjgfhqv9<5c_B~dn zyw>?r6IBKrRP!XsOgsyd`84pa!fA|(#_miI*t`U4#x@kOsKIoVXeZ9Y^2E2|s9tTa zA$2$)*a<;lE zsh-p_7-JbySJtCO*zXHwG`Pv0K*qO56zF*U(mozkj9C$#SDZaD)(*8eKfp?@gluSY z_#WvC6vDDhxux$`=f9!}609uknz>r)s@AK24O&UQDxHIOFDie#>w1hxc#G2L)d3#j+Aes2sl z(Wg@@0;LX-RcQhZ9W-RAfzp_gi*)I6Z@IMAL=U2Ih+ySqZVb&u^L-(!8p$?GB)=s; zk_P7{Ad)8I6gk?McPTLwl>=rD@h0O;{345**DC!I!rXhU)Adi=PXscy2(EYrkc%Fh zV|H_C&D&I-A|ENynbcN*)Xd3GMjU3glu2)9Ulku_0)pm`tlqcIyS1b1Rtb+{$8BW} z2bi46ktYNI*3|(%z^BHjZaj6Py~`*zN)=W*eD!n2H1%osU&0L$EKR8q5G7f_WbQPZ z1{j0NajltxIR~a5(tx zaG)>2)%D$!nZ>sgAYI!S+>Y@I^%+mqH#pjgvi6-ne0(>>LE-d({%tahYa3j~Xam1) zTtxVjewhXR+D423p4tX`Z8xS7om5oY2rm8eDe_?b%K=)GzwnxVAMrlqasb#tkw@IB z565^9gP}I$cWQ^afhM`jy-|pFsn$`7uC{?vXhagVyZHGQH1cKm{}1TKzUj-=FY@`V z`nr73z4p&{;E%7u|ML8veqKIbwQt7nU!D4U2Y=hoKiAL8=Xa*=|BBS#?bP!>pr4n| zS5x<=pMMkI|L-q+A(H;Tr=OS4Kk~;_17E4zN%y~p>wg&k%k%H+2{WH`1Ab_XGg!rFcDbK(4SLkZ3CZCP(c4yrEt5$ml_kO|Z|KI&db%%U@r+%UIU*031^t#`( zp8w#d)$`_4zmWR>2l2o3AHVX?-^9N(r_$cL|4cm~pOZhS?vwY+^D_Rwr=LGix79xP ztLl0A{Ma8&p8sb2ntuMraE+dj_G_P0&&wy#xBZh||9^ll?dMo;Okk9!q(#j=2@?N>} zuknlB|6l$uU&CL?=hw=O`ZGO$Kd+yc^{;(KJujc%u|r~kWpUOsm_a;N%CzyG&z`Rnk%W*fEV zZM9&}o9go|^_clr-Y=hDj>-Re>-nG2&;N{mUhb0ydOT0-C-472KmUP#zLQ$O zSEV8S`K@@E_KrON%A2a+ue_!{J9=S-isZdQM?Z;Y?f1X+2|aGzj~_G}Q@v20m(P!+ z`d@oXJzwjn&&||?zp9!s|Ndz_Pi;y6KQ_?MovP3GbaV2+$K)6NxvAg3nZB-{|5K^! zG*}-FW6wu zhGIfTf&DVyL!6FY{5->5BoTCizfcDLs)c%-)~(=8(T6j8kdGJ(Dx_i9;_NX8-%I0h z?UAb(Tc^V}C6JL|8~3V?{KVKg9iz0=E6LMYTG__NX2>puVlka7pjkRyJEYfjvyJmf zd@&Za#AIZ!l`*grt2tH>#8{f{45gFC4Jn-%vpiUcyptaLzvQQlJZ z=GPO_iJC_W$A78Xg$T+|wjR{T$4D`$m+O-8U^dewyte@A$zie-17LwYR{>zZ+536M zTI(ZXmTtJzr-Q-t_0=|~wTlL4})lmiHHGn(UbUAGH@mrkX26-w#^vzx0B zg!SQ8sj1)^R6eJ;+tk|TvJu;k_0mIfAQ74h{t4Y(bhE~k&1zUIOE0*T(zz`35Hh@q z>0Cl9>5S%SD#2^0*$ou|!IJ}JStdem-l)Fo%ISqA!d*c+LbY@LgS67v9F%S2xuFWmN)a?29`}}@1+o*GK(d*o+ zj8&CYdzIFeZK`&$s2i_St6W@M1rJvtbD>V9?^9o>q>d8Y&&(8DU0q6)GPkHN1ViT4 z8s_9>1qp#>cemP$8fq4Bgi4d^&+&38t5OH5gyOmDT{4Xxg8AqjL8$3n zYL80o2^udejuw%jo7uS)xvTmioAY5ERbFu`tQfe2Ske_*5 zs93SSN~mx45?swwKUkNg6Dl!NaVz1zN1c7brPQOgp1FeFY!0efsoc(p&|Vv%=IWnm zYYfr|u5NB1=P8%KvO1mM7SU?!vD#DJ=SKkFzp~sadFjl8xvQI6@L%Tc>RGy!OGbCM z%cqJ@kD1;e)FVIElBpNmRk>~|(3b}oVrH)3W>htFHCHVWx};=ODRbt2H$m;&%C&i^ z%C6nqg=P%}wOc8(tB~Q^%~;w+Ex6@a+&o_EmI+a&?;{xS@Y` zt>orv?rEN`pFO2zsLIVvCAbFn%1N118!XFHFzeKAZtlVvp?Fqtmtq>`S*p?>DxF##s#mK^hc;HJ1tCQ!FX&uKf9fI_H@Z#{rk!z7e>4c(iL)Y z6~@ZG4sQ&C3?n&x-Retlu zPJmtP2Zd~i_WuR?qS;5Yi6NAXRFZvp%ca0lQnz&(Hm0AhG3K0y2k z;4#1-0Dl7H1F-NHz*B(d051SocnRJ-2}8mH@2)v;f`! zEcj52zXZV-ezyh)AbdNB+tYIgh(Dy~K#EzqAb9Qs5KOqv5O<+x_CA!JyF%OzpgX`v zgzE`$1VAMH?gMdOfPMh|2{(XZ#%mxv52D|LDIP+x0pcinj)vF-5C<>}ARa&rBj`B+ z;zWRCfRO;H0HXoM0!##8VG_hG7CiLt@aWjZp0JH?q5RTDl>De1%UjToA0K&2NZRxok z#qA;P2oMC&2_P82I&_BLp@a*gxEsXX0eS%F0eS*N07L@x0_X$K7eEaC=(#_|10Ws< zFa*E=5CsqeAO;gW4+V%L+%SlT({lpFBOy)&NCOxJFdASC01IOw9tSXiely%ec>Wk* z5&#Sdg((2j0Hy=X0AOJj#q4=DJkJ4`3$OrS5x}PaO97SvtN>tP6~t@kc`e0!Kn2h1 z0X7hB6U8jeW_aFW_4_k;{v2RCzz%?HfZYIl0KNd&3$P#HAiyDj!vIGBSjeFme?gxL zzmEZ&1ULk1@7Jh;FD!{Mw`#Quo0P+BC z0^9*m3U`6#KEMNjM*xoj{shPeVBsmm&j6kSyd>N!ieE$ghMxa{_$|PH^jj!~>DgZw zcy_h=&2YsezhN9J6bC2?;0{mQc;} z>sdXk;kiD5rxmU-JbM9rK)B`*x1i^i5Vr!*0(b-X0Qdp429Sm}Rycon4ghFpg=6#| zN`5n(4sd~X@IinJ0q8>SLLu%7&;vkEIF`N_Jof?U2QUC&Ab_JV7~T&7Fj~~FcIKmfKLFd z!zB2f0WcY0iq*TR@I0MfLO3o&zw~3O5g)=Ue^GvU*+!&x-+;04xPq2Cy7J z8def+6~t=**3xea#OnYy&~KJ*BRp>b*b1->;B$cO06PG70qgQm$v){Mi`8NH&1MyvYegN@9fJXp-06YQs6CfXeg})$v3h<16 zKd1Nw#IFGU0r;12jQ*|Fvx^(}8vt1B;GqP?Y+cM9pfvq12XT3NW`q^sxg!0pOmP*6 zs{?q@Z$?*(o@-m->cDedfcgMU0K5R20PctJQNicwXY;vuEY_Qk!0X)-I?_-Wd1IQ?G6Q z(=^0aQ|I&6M_L8;nW36FU}V~|eW?JMKWeW<#hveB@~VH@`0wDOPuJ8cHs`~P+Q!L^ z4mFtY!Ff-BNoTs8c~k#%oddDuX3YPw%)-+bv@J4(t#@zM3pZAJR$+bJnB?#7O-l$K zWNOr`QBH?fiIH=c{Tg^KabJdhS*e7mh{1n8ez$ye+Z8^o)+U==zkN1CpEbq3U$yyK zpq=>iMQy(gZM@!o`Z6stXOXJd!wGLg{IBF++h4iDA3?>>&hFybdd%jTKlj-9ck{nq zp6~E%!}EqSV%E>Umw9b-Ew8TH2j9dr{W^5q>kWT*U$L!f?OO}_bRB)@&=8Z~hFZmT zl!!m^dz8n)tbxO>t=;%I^mmtX3vL1Yx31sKy}g5mxUBDYbMsN?_p6#;v{8-NQEAr0 z!yk9PeCK4`&Wo3i-v0dJjGm{`eAXt9d~m1tm5)QGb^6Qg;;1ccyv*uGZ^{jv>HYZ^ zdXM$~4~~cTdK6P?>YuqI>bLBEc*NkNcQZr#9FNVKkviu0GY4x=xc?16safqpgfdy3 zCg=2@H|c(zmfmZEr^Y`1;O3!YabcTBEw0k)(DuC@o)(|hX!VeXYrZw8|J43>EGO~y ztTvY_H}#r(ZS%R_+kWnNKwoY^^RC)*z-OJuu@_%Jx{>8-o|&-v=!H_+D-Cm2AHOu^ zzx`iM+TP_|$c7w_Z*LAt zc{Z-=nwSA$X|GJL^|Q8=$?Vvm&B|QAh77KiDwflz)b~q^@41_}x6Rt*k`TW(T6XtN zPFgZ;Sm)oTzHqy!`8IDtY%gJ8-|t?2^3~^Uyy82aTrhI(k6)GAy2t0gwEdc@|hQQJ-Gbte$L}MEhEP#KfO>zJ2Cm__PujIInXF1vv=2DM?9Oiw)(8k-gfO| zdGJ+_s>c&1?I~|M+UfV&$6owC;MR>h0ID%Ab<&dln4fla@z{Th2TeUz?7)}B)*rw0 zOV-B2%YVs8|7PZZjKGp(GB$o(Irm-<>cG_c+)Dp4B@ZhfYioey$ul?AoDT z5sUgC>=V1N*6`%Zhex}sE9-yUeJH$31Bg!^4WD=E$DjUwedSG+apSg}6(W|$O@P>^ zrhm722WD(GMU4 zV!Kan-&-wj(VXQSH{bB{y`9%PzVF^I-aa^-wW3~J<-X+>c-BAm;$?;L#}~oxJugg= z|6DC~bzSAZ&h(t%QYUEh@k_^<9lm##!~`r*Fo6@#3p#^W8=)YEt#oxsAP#&)D9ecaznBY#!LXf$JZypIxuD z@WQTXNlVl67v65Sdu6xuQD3zv*8S}0xIVWR&Dl{UM)m2;H=*CAl)Z8e;LvC9v?(>u ztU9=+`IZl6{Oq52=6vqqO!u*}mG^#7fhj znm-zTWmvl9`L!Dz%T5^ja&u=V)B zMZLo#TRnTW?T2zxH{bYv(_0o_?{rT;xWeEM8^im~XT#?;(dFFOHZCT?|4BR3AJOfX zUTB(fHlapU>d-3c3*gT=` z=dD}4eRh5L65m(HHy&n0J+ z&8+sv=CdA0a!NMZw%xtK`KpV)s=aWA@M3tqnB?r-Uw&S@d)3ZS`ZMLyc>T9pZ{;bh5>J%#k6_8s_Qe=^hu9u&WsFg5^$*A>m!w_wv0@E^=#Xe zYAvJ6zn;I=w5a!^dJoDhs0(o8Y0i~^W+lcn8rrss;G$`HyK(>34Zp5j;mo%iZgvZO zHjaUJaF4r_>%J=6Dz5!fpSO3$jrt;S=94l%cO8B8T~^h+8GXh;yyp7diFMqcM*n(f z%Sj77Z`<_8=IeXs{+Y1!pxdO-7R_eP8j$hFo9-*d?K*NJZRPED%cf`l(6Ua9>S)Eg zBR750?4a@JyU>WSyHm^{_~fM&y!CwYm{n#K3BK= zPGZEJpN4db>eQzbJg=Z8lG)63p^2+viXRtzmQVR`a`p&?yjhFDHr z{moPNc9rqRZ=RozC?4g$a_NG<>I`kwfAy47nwI_jN__k6`0v6_)ZXsyUg=@#Ie1?B zdefXGQ~Mt|(xpVqqPnfibUb)EB+;BOVQHt6;ahS&=L8Ij`Te)#=oi1wo?3SE{orE% z?j8Tzw#%JLeD3!9lkCP%b{1bV@3QB@jfYJonyI2!PA&G&t%}#K@0yW+?#NGjmmiz> zQ7`|A$p=@LIX`FTk(3^nMm1Wouw2xo^r$A;-44fC>NR}f^5a0S%Hi*_R$nqU+dN`+ zP|TV8lV;p7&Rg<*!rC6Ke(S&O%=v)qZi~)lly}|Up;$omzQ^bOdSXfPZ+%}@4E=A< zTkrMJmQ$5BAMEjH&ADPMu65f}cj4~x;HH~ntKF^f>!Ufv6J3iBow4#x%c)}r9y&a1 z*N%{Vu^(*MeQQw1``Pe(r}~BgZuPgj*ZXe#)Sv&|G^crsQ7XSXyPr>ao7=L%iOzpT z+@JC+xyb|L;cv<|F4H@B-m(kP?h8z3-!Q0H#WSGMxlbn=Mid*^W9#6VxwT!p{#j!B zrvpQmR{6rPdSP($AznW{TseGOTT|kT#(y31JJF7{?k$NKOb z`13%oEk{4!-lTl!@>SFR-u?CLlZO)`rsvJBIDgOZkNceTYBZ(mhV%C)ow;S4cj!*^ z7pFIAK6|9E(sb7*zfI3RT6A_(X2P=RhgOBJ_o?)H>6?n7>^Z(zV%s}IEvJ6Cpa1g9 zE71)Osy+*^QnKxd79Q)jocX@&A0957=QM}s#`E0V#@1|8FyN~In8wEE0{TlE?k zoZautzkjc2zH)8-lFt_Z^TDc`OI$)${k3@cm^nw=zy5sUR}UXOKK{kqPR(a=JD;2!I5&D`cyfh$KWKihQorZuR|60CT(xz_oAkjDH(8Ld ztlP1(olT{t{Celt1??tY-8eY$j91A7fY)Q%Z*e>3|Igf-{US{BZU@$C;dOVzoqf-C zh73P^quD&4#Gm^&Vb33rJlV0jZ^pNuxUOtI)3g4SCzZPwPhb7d2i*cI*YusUe4qc^ zQ;&MUbN(sMH#hQkWV8mHUrPIj-6IF|?OXrUn1)v$f6)V;b8l>aH>p*Z?F>@7j_tFw zbi>dJYxnFPy?9IIBkI2Q54nww5Bcltlm%%O>J4t1cVm{%kxm}-Yq%TWIrh@b*oxEM z1PtEQ^ZT`*v|Q4lW~BPjzKBtOXZNrEXO#w5cUPO6{QHA_&u;n5+ui2Y++J>xk77Q^ zKD8_5?vp1iAU4Mw+%~=UR(_LdDye&InepQ6ltv4dgazJu z+_Xm9sB2gB8Qq`$^{aWrdG`t7bHDDf<8(&tk09=tnGrkUPTH%l=Kb@-B)^IG+ve4q zk^%AOT^CH8KK|^3qpkX-KdU)6d4BDB=|6Nj+4Jt{ya~ORXWVEPQzcRL_(r8Cx60Rh z_VD4%7XTGrRywuUaP?%D!$F^wTN6;`ga4j=bhy!+7r&S4xop5wj|}fiJ6=8e_I$vB z+2cmrTA6=kja)Q)g4|Zhu$XFSWjq{o?fBXQvEq(>^G+eN5sv4{P>v z%RPK`5d5ySVsMQ<9S(TsE(@>ga&PmO<@WtnqRo|Qe{4VY-HA6Zd&Rbj+j;Bpxs2ME ze{c8jV*jm^zSoxP8}hhIYxl2i+)doHX3oKx7ou9-OjI|Yyze`odUKOKTmR=#r~7yL zpX~ke5Q~pQT)w-u__6I1<}PiRTJr0a8-5!5XRCYV>vdXq=S=3YpwF((fBkU&{*XEi z%lBLsxB5@Z>X#lFeW&cao42i6v0L@(pZ>mN@V1XSY`$^Mv(fSr13KycNx8Hlqv6qD z26Np<6np!d`rwOJQ!Y-5T3s>9E&D~&+?45GYe&Z)KU4O2`vqf-PqyCtbNt?}+AmM{ zZPe+}<}Y83{;u)Y<8RJAbz;rnTYsN<)@9X_l@lL(^sew}C!a?Zx3{Qrzum(-6)!HC z6dd~F5s$N{W_h%J@!-UOckbnuhVO3?=C>tMv+#$D?fzmC@XmYC)_P4!^okoY(E+}jKq{chw2pI)nCt~^@y?Wv&8+8GnN zGz{3;@YgpU8BHIyEPg68c=6+NiDpvRP;G>?O^!{z7Huh#u{qHkITDl(JUF$`Ukgv5h7VRF{a=m-@izN`>KG@;a zt|7*zqd(R!3*3C+>Y@EzwNw7w{N?pmUSn0rW*Dvd21r4pO+uC<~rKf9`>b|Pj>}6%^^#$qkD|cA4 zl_KGH9<0q&w1a=W(LQ~3i+%j3W$g3usAr#kS5^D?fb#b7t83WDx0T`38Or2or(A0` z*ynQ^^k7dvn`P)do7tzIFC%Baa`x#54YH4~thSHW%iuTEvakQ)GWAkRM*cf+$ibc- zK9wogCK>u~Wa{NVs1tkqTf=^%J^TO}`)Mk}-z=k_eKPcE#qH;N-e?~`M5eqIW$O2# z41R?S|JO43e3|z9N~YeM%gDL3ru}lYmeE5W8F{_|Z)4AI?31yR$};V`vWy*em#MGK zUiRfb4)WNupZYR(#n!s*(KnJQuS$TuXaH&GD8qlNjQl`um(RdD_T_Yy0}nHxbIVv|MuX2Vehya@#%tm#69M3 z-~bonpW7H0tHJzu810Yve6}$Pfvs<|uolY2_`mi>{$`GavlaspuW65Xs8$}faeoNM z{H~yY352&KA-(xSTRA(AM!bKZE&d6&hw?(+hbT`e;*(pQUfpO5;% zzp!_~+g*7$JBjone$PE0=O?8+I@`t%~7bBxg`*P+ZW~E zFVTO$_J|Mlvn^NY50JlVEArn$dTvZ|T3R6`AOFP_nPx)Sl`iYTXO z53_jxQeM!QFy9%(r}HMH*IY*Wa4fdajO#%qSQ?@HV*NIrM0!ZX3RzBk9)y#eLs1^F zz0Arad6pu59n#Mc$~W&O=F83|u}~Ql!t7Js4EaDa=b<<0A$NWYitEod&$|AdHRM6YUu^jV*vJlhCA za2ndrvLIXgIY;)K!wz&ns7d9$5B!-u2%C_Ns~e%L4rZvlC+k z3NG5)z@b!LiND(14)HncpbCV=#Aj0r#OEHdxh3PuzyxwOJ`gB57ZwCzP5G}_9>RjLUs#gz{8*IksP^nGW`_b5<<;JeA1<{;dvF5Cj+o@GuqL zGrd{7k#Icm_l62$cnv$q1z{lB)nW1*Ik6~@AJLaKQF%Mq>gNsV$5;;SnqVf^Hhhsj7?e z!0?8L>Ch4Lay3Ch(av*89y7@UV({=&S(L}z6Y~}AB$4btPcp7pLE|fd`b}^bJbX;` zuAzDt`Jd{E^5l+2dBpL?*Xt2)>4bVqBtFBy0do1N9z}oNQN|DNt%mgczzgtTXZ2X{ zG9x~R9p-=_o*8NxOZiIt_7>7l3h4)?&pgabL3(3J zBA_E?H#ZFWK73oOHxz(;*oP@gEV4eDv%v z8-x(TZ-$>t9>Ej&fLeGMNB-YPem;)y@#N<4`;d7~9;0G`PrzQJOXn^_hL#BXd z=doEZ4;T?{CX2gxJ$%YMGt?u2sK?nHbd;njqP;`4B`9n$N{BfW?p z59Y-5uWpF?1T*GA1N0nE{j!Ddm%5@nxvfibjF|6;aHN;^7pHq8{p$c*`l&QeQL%%& z5X5?%O?u0Fj(US?;^C`}$X_^%_*aBC^g})8Q2&B&;r#Jt%vaYH^EDGa>u6ZHvZ%Zw z{jEVHKRdJr0lIY_?kz(8d6Ir=n-TH(?64YyX8bSs#ZHLV>umW1z+we!j~aHs8Ui#! z9%?|x!Q|0P`jG)m2rp^ZWoKZyygJ#I>%|GYR6@#-N^(GWi2f8i{75b`(E z0p8ivF4}ZKyt*RFKbjUs-#OFCUC{`{t`E603(}$p(_vzlSXeS?AkUmc` zUvnopEi?cDcgMq}MktTYjC$Km_$bn+ne>@Jc&{|%pUV#BLFkK-FdGEm_5Ka=5&f!W zC6iMnXc}X?s6%{)kiS*Y0YN?KXTpbAt~36qe}AHn?1A`xZEf*s{ZSqb%^$^jxvNEa zvdNE$^Tg|roXM$afpV6oeBaXiE;|Jabd>T9CO@2e5$U1$JTxW0ttP)M*2}srDCgEN zlvAvi7eOdzwm;UpcxR(L^|Lyfzl(aSJq6`Vq45|LlZO>ksa)Mr&SQk{(hc>Tqe4A< z5nf#z@kZ*es}jDUjQ?-n2kF&SZ28oc=@;6RqjHgbdJ_LhGX2G&V5C=dLOl#8dUkn_ z)l2?CEY~2y_oaSBNBu|~;Xfw5X`-=S_7J|^bku*IWF9)BH1f}Ci}e2y{nUj>??Lkv zvA#y=h@KtBhfs_Eh4Zy@NX|7Vr#PPcts&x5XkHA>hX)gMKx`f~EClUANBF5!FBYm7 z72)G%BE6dWDUtqk6zWZQjCzCSz(aTy%onb=^53lpzp*LdCH{Z^1jGx?QGT&p!Y0I9 zzC%m?5MRS#bj0Vr#(bff@X%-$%40c-gnv;3Xxk6*(*EKOka7PY=@(86#`0Pue(XFL z2J?G5c9WpM#=a* zp2kJ0I#^y(w-8JHQLbb?^F<)?m-ajUBN3l38Q)%!>0i!+ALjMNE~G#Z?c`Uo+g!3+ zaXjN=B>hl-E!trY^;3dme8t=^<1d|e*W-Q+#%Ypz=?(sb*+Ul1L#cX&GBW+hE;i%^ z`rJsAzY8w~+-c$dt(u^senf2VN1*|7d!vh5-HHBgFyhVRuTlwLi}asO`WN}Q!9a`g zNs)|~ip%sDul!IC(*9*ER5#O4F0~hMvpl#Nk-whw+>Y?|#rD1s%PZc!a;uAcEJnn` zu#kt(<{+QE%V>u#)DQYlf2xx7r&G7EcBB&2eXw7sL44e0{PQ?ZdV~Mmd_=iXMD_5UT}{*c!Hnd z`lQPeOG%ziI>cv_onIz;zfy?LqjBRM!ryC*cnkH{pk5w)p}lZ>qj`!r4jD;uTKb`! zqFv3KfPBo&Q2%Kp&w}-c&k4fz4(7_kxT>g!`w~6ui^Y1$s)_X?+Tq$|Nbg1C5HI5M z3$+V%FO)}Y7iWQh=_hY4;v17Zhi4!@QVasb5@ z){}qJu?u(*!U%s1`fE;4^&*yc$U4l|O!FoXkB42*etEl~d7ql_=h`D)sDSk%;@w&z ze|-+-3)4v+ih+Juz7{Xk!+yg5H5Kb|m}ERt2MmeR4@Ny4Ao>Ns}TMr{uyhLkA(&xpk5vlhM@klX&w{7q!CI!XxUBG;K<9O40uW1!KN~WW5EtBVI4+x+o_!2OcVsU*!jK03(*SA5=H1 zN2#ChMB`!oH)xp0h))(Mg!#j4+D8EQ!owr-ds07NZyw2c75Usn^AcuLKb0lvr}Rl= zZ<2l3RZ++%n_U`%(1ZVld#a<5UM<<54FJc;%9TTY7>4US#B3z}oIycgSjEEu8NdCK z+Nsn(mzDA7=|+?@hwQ2a@lPQ8)akHZur}dNZAU5>`E62<&}}Qqng1FwjmRH%n1Fbx z-=0SN^~9gLB_R{k#q?mL{RMx_UYKvjeD$fe^;;Gk7o*RneH?IiJPZQ=&+$RX0Nfo9 zACsTgOZ}{-Me?JTu^6`?y z&sWkS-oh?aLuf$>~uV@j0y#&%RH>!b0kI)O2yN9pOLV^AwekNBxNC$9l^2UpZi| zOn!AE! zZxf!~UuAq!JW(F#4tS_b?M0BZm+p&E&V0!_FJS?StK_?k+p9(~JBds5bd@krwPJXEwIIwSiu+STT*Sn_REBYC6pDU>^mP^_nHJgZd)gYw*p7?w@0P%Wu$r%C_L+A;Ph2@() z9px1DtR;I3mDt;&WNN?Ef9W_kLC~2HZ|R8knMwG8pfcu9G?IB`H_>i8V!q<{WI~|6 zm^|uuTYES_{xd}~-)}Sx^EFHS%r|2HH3RvRSqncUGI|vl8jdp?lAIHv;M{-GKBkCI zrSV(-4&)=YqorT~Oip7O%9((Xa9yTZg8|oEv!#_Rsj6X`N~y(NCrJo-1kZJE^>yC@gO%szdOT z>380iLjKZzY99IjJo5i>luJ8fa|M$J#zk~a&y)DnCV!h1hxIG& zyM0{-`KTo0)!k~uXS0tcL4a!Fq4YH5pHJs}suRA_dZgFWct-3Ow98R`wHvmtVpPA+ zl2C8UB=ae6Kg8!s=HqR_Av1mEQacjYD_%hZXLj;hvTwe*J>rd$^HC$IesigQ=aBr1 z32$T{1cA_k>!DsQ*uhPe2F6YiQn7itxpTO|Fq}Oyp{kO$Ps0C`|@<{yW4jK>ZXrHS-@n7GY@rQGpm9bwC@i%1r zTI+Oh6P(LnMY~kW6lBWjN?~g>^6Z{gZ7mZ{-63_D(r`H6CX2e!rUFMRuhk{1Y12spg|1p}Xhd0Qt!j@{{7c?{8QTX8iLy z*wQBkVEyLaMEqx{4xw2Uq|c2-yr?%{Xdqmll&{z?Y#T=O5`Vb0FWHsEf3^=qda0j0 z))?_wlQCat&OCGqN4zB#1r+^82O7ufXdDaOIuFli+?7RsfZT~NC=&VPeTsZiiM|Bb zKP#7IB^rXrzg85=pYssudl3EFZfJ)>MYKat!k3wV^!fdePh%{GP!9^i_?ziGc@WVr z27#G98)+X_{4-E*P#hkbkl#>O!h(wJ?)xrCpW7Jui1t=xGvbZ+kzPDU z`ik0D9*x^Y{+8J&zxo{7!(PfaV*&D!t{*-nyVXnfkw0IG^!cxl&#yEf2%Llbb>Aa? zHJY`M`zhkH%c7h+Dc{Axh_}$X=y1X>hYo`2C)W@4bBFL#)+1gBL_UXH@WrZF)PJaC zywSQo@)yP3V(0s)Kh0tjQV5fY{sv^n<)MbyhVVM_dq(nmVBS2GgmN=_ z74?tMe0Xr9aaT6^y@8mGaGd(Jln_LS-#8sEn9DT%ccO^^BQ$^QFR>eo`JUjw(sLmr*PV@+uW%0SZ2_u72$+ocZ1#aS2!pBJnZO}1{hXn3waCYv z+O=j5${$Jc@000YMi75hF!Jw9{Ktd-nLX$YD2TZKcw#2WNp>jqFI9m*lgC3c&O9B) z@G$PB^|Sau!F>QK5`OYv z9)a@c=$sO$ori9X5ucZV^#x|e!@=%|&y}3hejZKbWgkR@0Nor9eW4;)dGn)?4>W%s zY6K&Fwq*QZ00M5$)J{eF^z=YJYRS3xO3M+iaz(wB$83ZigR$OIB=P~M0 zc~w;2vm~d1w_ngd&6^q!Uf-X}D_MWm#gRNuQ4hXE->Wy~YovLW$Y=Z_2+66J$k}fS(o65-%$|jKX+M=Y9`iMZV|#B%knT;^I`f| zHAg+vC4Jr-gLr9ww1BtMYJy&}&wDrq>9g))eTnDsD$4XzNf}75m)vtX5rKG32J#Wl zMgJo93pB8rNafnU4$G^5fi*IW@CU(A`M8Mo85%u>qYZ+4dmBTB>Q5y(4e?K9D$5CPYJi{E+aYD)+09`1EUJ~`CS4hMh7Lbtw%H%rz@UT#4? zI^$_A@xzN-p*`eC#zj93M7)~jSx|f)GKV7GU9w-cy#(f)Mf0EvM1L~{>9&^C8Iu%68|sAf9BJ^DyW5rAd*KdS+~3e?Sj>ddLZ(F zYT{waAkrJH^FPJc!ky_Tzl!dCKsU`pOVB54N1>AQQU9(-KI(9^+oxoo!^scp$PYtz z!^5`DNUxHtD@Kvss*+Fv;&|yJYA?C*D4^J04kV&H{t|zFCLQ@p?}d3(M|?i5=Yu=q zp$pg}YrkfikBIfyM#f*g3S;@IgdE8^gbYZ?^qfNXR-pUi!9RxNq4j6cJ`c$FvGnCg zpHdR_Db6FVY(l){cf^Z&SQd$R>3UtMaflZ`04=s_Px4Cw`K3}MXTUPlXC{rSMf*R@ z?Lh_KD*yw7(17T#(0WTAt+zlm@lcZ635>&OUs9z1b|lK9q5VEEKOVZu_{m7pTMp?> zlrwKK@{!&L`GEQ(Bl&?j#J@E8?JQdF67iW}r>x#JzUYv^Ja|a{2=VHn#rSV=e`+b! zmmukPCX4+-HLRB#W8%!D5T#={0ERd zn1985#s0{vFZmORpZqk4{0WWU9%3?Kp*!+d(fI^%ona#RA9E76yKSVOAJ!9nFf#ax z@V_iY`}tX7KV?FxT$1&@eK3wPg6{BMFi@Ohu)9D+ZM9|Rgd zR3!SL@yJK&Czq1H)zF4USyZc#+6d|Se+&XVL_W{St~CE*c>{?5>kUY6j6-}P^wTUX zUWsysO6I4px-vZczl1dJXo%#(j5kpn3g2ZQPe{S@fin>g2|af`yJvr*nOGECy)9;9nq&pp!}9yD8D#v zxkB}oAAuD@$EJlUGJfV9I6CeJB{)uB;w9*r)w{oB|6&%|VP1XA_Yui?SV#1d zd_RSCSH|azWS!6l92b*6zYWdjpqzTTcR5JZ zTWjQ#C0QqY-4p56AEQBu`^a5*`>iJAO4f6FY({$BBdnJis1D&`3&iKs1OkRVJai&E zw2&P_bK~LRdZf>#eyS6+D;B;EK{@wJ&ar2uA-(i|M8!bL_XP?f)?=oOpJ_<-tCoyc z-^L)H?0cvO5QB$ipjc*Cp_22rm1x|RL*Kh-MD%OBV7+VD!Vv`V-p4@RzF;0r<1UfD zBXsC|UPk*GVtwuLK)huzmP@>swAdHru}IEi3-zwX>`z>aToLn0KVKk!aeX+{9r3xXkiHzz`&0YMqWd@}34f##((7p-e-_~n zCJGUf2PFG?4

    PpnJp6=I!JLO?B$z#q#dHRu`JT(pJ%~X$` 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 #%GqY2wPM`rh1g5~oxa$jq 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 z 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

    wH>Idz2Crjt=F! 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 Z-s*Gp+jrwls{hZQH&6Ox)FJxV`!6T0_`(1H literal 0 HcmV?d00001 diff --git a/src/desktop.js b/src/desktop.js index f876b51..65a2517 100644 --- a/src/desktop.js +++ b/src/desktop.js @@ -72,15 +72,26 @@ export function createPlaceholder(aabb){ export function convert_17(inputPaths, chosenPath, pointcloudName){ - let message = `Starting conversion.
    + const message = `Starting conversion.
    input: ${inputPaths}
    output: ${chosenPath}`; viewer.postMessage(message, {duration: 15000}); const { spawn } = require('child_process'); - let exe = './libs/PotreeConverter/PotreeConverter.exe'; - let parameters = [ + let exe; + switch (process.platform) { + case 'linux': + exe = './libs/PotreeConverter/PotreeConverter'; + break; + case 'win32': + exe = './libs/PotreeConverter/PotreeConverter.exe'; + break; + default: + console.error('No PotreeConverter binary for this OS'); + break; + } + const parameters = [ ...inputPaths, "-o", chosenPath, "--overwrite" From 599322b7813b538ba3a0f3a350957c088527927e Mon Sep 17 00:00:00 2001 From: GuillaumeDelorme Date: Wed, 4 Nov 2020 23:16:05 +0100 Subject: [PATCH 4/7] Fix #16 : potree converter progess display --- src/desktop.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/desktop.js b/src/desktop.js index 65a2517..6f70cb7 100644 --- a/src/desktop.js +++ b/src/desktop.js @@ -116,7 +116,7 @@ export function convert_17(inputPaths, chosenPath, pointcloudName){ try{ const name = match[1]; const value = match[2]; - const aabb = JSON.parse(match[2]); + const aabb = JSON.parse(value); console.log(aabb); if(name === "cubicAABB"){ @@ -131,7 +131,7 @@ export function convert_17(inputPaths, chosenPath, pointcloudName){ } }else{ // match for progress - const regexp = /INDEXING: ([\w\.]*) of ([\w\.]*) processed/g; + const regexp = /INDEXING: ([\w\ ]*) of ([\w\ ]*) processed/g; const matches = outputBuffer.matchAll(regexp); for(const match of matches){ From 6edb57b234db9615db69afe3936271f4d37355f2 Mon Sep 17 00:00:00 2001 From: GuillaumeDelorme Date: Wed, 4 Nov 2020 23:21:08 +0100 Subject: [PATCH 5/7] Incorrect version and repo in package.json --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 28268ab..84663a4 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "potree_desktop", - "version": "1.7.0", + "version": "1.7.2", "description": "A WebGL Point Cloud Viewer", "main": "main.js", "scripts": { "start": "electron ." }, - "repository": "https://github.com/potree/potree", + "repository": "https://github.com/potree/PotreeDesktop", "keywords": [ "Potree", "point cloud viewer", From ff6aae08935ae30dea0ae6cb081a7030376fad80 Mon Sep 17 00:00:00 2001 From: GuillaumeDelorme Date: Wed, 4 Nov 2020 23:43:41 +0100 Subject: [PATCH 6/7] Removing package-lock.json from gitignore --- .gitignore | 1 - package-lock.json | 645 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 645 insertions(+), 1 deletion(-) create mode 100644 package-lock.json diff --git a/.gitignore b/.gitignore index 8c1d64a..1a68bae 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ node_modules -package-lock.json libs/Cesium \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b714ec3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,645 @@ +{ + "name": "potree_desktop", + "version": "1.7.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@electron/get": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz", + "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==", + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^2.0.2", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "progress": "^2.0.3", + "sanitize-filename": "^1.6.2", + "sumchecker": "^3.0.1" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/node": { + "version": "12.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.3.tgz", + "integrity": "sha512-8Jduo8wvvwDzEVJCOvS/G6sgilOLvvhn1eMmK3TW8/T217O7u1jdrK6ImKLv80tVryaPSVeKu6sjDEiFjd4/eg==" + }, + "boolean": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.1.tgz", + "integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==", + "optional": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "optional": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "requires": { + "ms": "2.1.2" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "optional": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "optional": true + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "electron": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/electron/-/electron-10.1.5.tgz", + "integrity": "sha512-fys/KnEfJq05TtMij+lFvLuKkuVH030CHYx03iZrW5DNNLwjE6cW3pysJ420lB0FRSfPjTHBMu2eVCf5TG71zQ==", + "requires": { + "@electron/get": "^1.0.1", + "@types/node": "^12.0.12", + "extract-zip": "^1.0.3" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "optional": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==" + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "optional": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "optional": true + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "global-agent": { + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz", + "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==", + "optional": true, + "requires": { + "boolean": "^3.0.1", + "core-js": "^3.6.5", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + } + }, + "global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "optional": true, + "requires": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + } + }, + "globalthis": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz", + "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", + "optional": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "optional": true + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "optional": true, + "requires": { + "escape-string-regexp": "^4.0.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "optional": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "optional": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "optional": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "optional": true, + "requires": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "optional": true + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "optional": true + }, + "serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "optional": true, + "requires": { + "type-fest": "^0.13.1" + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "optional": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "requires": { + "debug": "^4.1.0" + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "optional": true + }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} From 6a762bb8c3e65b7026584c414f6b4ac3a2c05d49 Mon Sep 17 00:00:00 2001 From: GuillaumeDelorme Date: Thu, 5 Nov 2020 00:23:27 +0100 Subject: [PATCH 7/7] Using npm to get Potree and its dependencies --- index.html | 38 +- libs/MeshLine/LICENSE | 21 - libs/MeshLine/README.md | 137 - libs/MeshLine/src/THREE.MeshLine.js | 477 - libs/ZoomableSlider/ZoomableSlider.css | 48 - libs/ZoomableSlider/ZoomableSlider.html | 31 - libs/ZoomableSlider/ZoomableSlider.js | 133 - libs/brotli/BUILD | 43 - libs/brotli/LICENSE | 19 - libs/brotli/WORKSPACE | 12 - libs/brotli/decode.js | 2031 - libs/brotli/decode.min.js | 2 - libs/brotli/decode_test.js | 79 - libs/brotli/polyfill.js | 65 - libs/d3/LICENSE | 26 - libs/d3/d3.js | 9504 -- libs/d3/d3.min.js | 5 - libs/ept/ParseBuffer.js | 207 - libs/geopackage/LICENSE | 22 - libs/geopackage/README.md | 259 - libs/geopackage/geopackage.js | 80817 ---------------- libs/geopackage/geopackage.min.js | 97 - libs/i18next/i18next.js | 5 - libs/jquery-ui/AUTHORS.txt | 333 - libs/jquery-ui/LICENSE.txt | 43 - .../images/ui-icons_444444_256x240.png | Bin 6992 -> 0 bytes .../images/ui-icons_555555_256x240.png | Bin 6988 -> 0 bytes .../images/ui-icons_777620_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_777777_256x240.png | Bin 6999 -> 0 bytes .../images/ui-icons_cc0000_256x240.png | Bin 4549 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6299 -> 0 bytes libs/jquery-ui/index.html | 559 - libs/jquery-ui/jquery-ui.css | 1312 - libs/jquery-ui/jquery-ui.min.css | 7 - libs/jquery-ui/jquery-ui.min.js | 13 - libs/jquery-ui/jquery-ui.structure.css | 886 - libs/jquery-ui/jquery-ui.structure.min.css | 5 - libs/jquery-ui/jquery-ui.theme.css | 443 - libs/jquery-ui/jquery-ui.theme.min.css | 5 - libs/jquery-ui/package.json | 74 - libs/jquery/jquery-3.1.1.js | 10220 -- libs/jquery/jquery-3.1.1.min.js | 4 - libs/jstree/LICENSE-MIT | 22 - libs/jstree/README.md | 663 - libs/jstree/jstree.js | 8439 -- libs/jstree/jstree.min.js | 6 - libs/jstree/themes/mixed/32px.png | Bin 1562 -> 0 bytes libs/jstree/themes/mixed/40px.png | Bin 5717 -> 0 bytes libs/jstree/themes/mixed/style.css | 1108 - libs/jstree/themes/mixed/style.min.css | 1 - libs/jstree/themes/mixed/throbber.gif | Bin 1720 -> 0 bytes libs/openlayers3/LICENSE | 4 - libs/openlayers3/ol-deps.js | 1716 - libs/openlayers3/ol.css | 1 - libs/openlayers3/ol.js | 1017 - libs/other/BinaryHeap.js | 124 - libs/other/OBJLoader.js | 715 - libs/other/OrbitControls.js | 625 - libs/other/PLYLoader.js | 498 - libs/other/dat.gui.min.js | 91 - libs/other/stats.js | 200 - libs/other/stats.min.js | 28 - libs/other/webgl-debug.js | 945 - libs/plasio/LICENSE | 21 - libs/plasio/js/laslaz.js | 398 - libs/plasio/vendor/bluebird.js | 5140 - libs/plasio/workers/laz-loader-worker.js | 144 - libs/plasio/workers/laz-perf.js | 32 - libs/potree/LICENSE | 33 - libs/potree/lazylibs/geopackage/LICENSE | 22 - libs/potree/lazylibs/geopackage/README.md | 259 - libs/potree/lazylibs/geopackage/geopackage.js | 80817 ---------------- .../lazylibs/geopackage/geopackage.min.js | 97 - libs/potree/lazylibs/sql.js/AUTHORS | 6 - libs/potree/lazylibs/sql.js/LICENSE | 44 - libs/potree/lazylibs/sql.js/README.md | 283 - libs/potree/lazylibs/sql.js/sql-wasm.js | 209 - libs/potree/lazylibs/sql.js/sql-wasm.wasm | Bin 1450157 -> 0 bytes libs/potree/potree.css | 786 - libs/potree/potree.js | 33293 ------- libs/potree/potree.js.map | 1 - libs/potree/profile.html | 113 - libs/potree/resources/LICENSE | 15 - libs/potree/resources/icons/add.svg | 74 - libs/potree/resources/icons/angle.png | Bin 602 -> 0 bytes libs/potree/resources/icons/annotation.svg | 157 - libs/potree/resources/icons/area.svg | 99 - libs/potree/resources/icons/area_backup.svg | 119 - libs/potree/resources/icons/arrow_ccw.svg | 114 - libs/potree/resources/icons/arrow_cw.svg | 114 - libs/potree/resources/icons/arrow_down.svg | 114 - libs/potree/resources/icons/arrow_left.svg | 114 - libs/potree/resources/icons/arrow_right.svg | 114 - libs/potree/resources/icons/arrow_up.svg | 113 - libs/potree/resources/icons/assign.svg | 74 - libs/potree/resources/icons/azimuth.svg | 91 - libs/potree/resources/icons/back.svg | 103 - libs/potree/resources/icons/bottom.svg | 121 - .../resources/icons/camera_animation.svg | 171 - libs/potree/resources/icons/circle.svg | 81 - libs/potree/resources/icons/circled_dot.svg | 74 - libs/potree/resources/icons/clip-plane-x.svg | 62 - libs/potree/resources/icons/clip-plane-y.svg | 61 - libs/potree/resources/icons/clip-plane-z.svg | 62 - libs/potree/resources/icons/clip-polygon.svg | 99 - libs/potree/resources/icons/clip-screen.svg | 93 - libs/potree/resources/icons/clip_volume.svg | 130 - libs/potree/resources/icons/close.svg | 70 - libs/potree/resources/icons/cloud.svg | 66 - libs/potree/resources/icons/copy.svg | 106 - libs/potree/resources/icons/distance.svg | 85 - .../potree/resources/icons/earth_controls.png | Bin 1465 -> 0 bytes .../potree/resources/icons/earth_controls.svg | 174 - .../resources/icons/earth_controls_1.png | Bin 1928 -> 0 bytes libs/potree/resources/icons/eye.svg | 77 - libs/potree/resources/icons/eye_2.png | Bin 2998 -> 0 bytes libs/potree/resources/icons/eye_2.svg | 72 - libs/potree/resources/icons/eye_crossed.svg | 93 - libs/potree/resources/icons/file_csv_2d.svg | 113 - libs/potree/resources/icons/file_dxf.svg | 161 - libs/potree/resources/icons/file_geojson.svg | 170 - libs/potree/resources/icons/file_las_3d.svg | 105 - libs/potree/resources/icons/file_potree.svg | 105 - libs/potree/resources/icons/flip_y_z.png | Bin 1026 -> 0 bytes libs/potree/resources/icons/flip_y_z.svg | 101 - libs/potree/resources/icons/focus.svg | 173 - libs/potree/resources/icons/fps_controls.png | Bin 859 -> 0 bytes libs/potree/resources/icons/fps_controls.svg | 117 - libs/potree/resources/icons/front.svg | 103 - libs/potree/resources/icons/goto.svg | 143 - .../resources/icons/gradients_grayscale.png | Bin 9240 -> 0 bytes .../resources/icons/gradients_plasma.png | Bin 14737 -> 0 bytes .../resources/icons/gradients_rainbow.png | Bin 14977 -> 0 bytes .../resources/icons/gradients_spectral.png | Bin 15594 -> 0 bytes .../icons/gradients_yellow_green.png | Bin 14040 -> 0 bytes libs/potree/resources/icons/height.svg | 110 - .../resources/icons/helicopter_controls.svg | 267 - libs/potree/resources/icons/image_preview.php | 24 - libs/potree/resources/icons/index.html | 606 - libs/potree/resources/icons/left.svg | 108 - libs/potree/resources/icons/map_icon.png | Bin 7937 -> 0 bytes .../potree/resources/icons/matcap/basic_1.jpg | Bin 3801 -> 0 bytes .../potree/resources/icons/matcap/basic_2.jpg | Bin 4358 -> 0 bytes .../resources/icons/matcap/basic_dark.jpg | Bin 3402 -> 0 bytes .../resources/icons/matcap/basic_side.jpg | Bin 4487 -> 0 bytes .../resources/icons/matcap/ceramic_dark.jpg | Bin 3882 -> 0 bytes .../icons/matcap/ceramic_lightbulb.jpg | Bin 4291 -> 0 bytes .../resources/icons/matcap/check_normal+y.jpg | Bin 4924 -> 0 bytes .../resources/icons/matcap/check_rim_dark.jpg | Bin 4397 -> 0 bytes .../icons/matcap/check_rim_light.jpg | Bin 5340 -> 0 bytes .../resources/icons/matcap/clay_brown.jpg | Bin 3602 -> 0 bytes .../resources/icons/matcap/clay_muddy.jpg | Bin 3391 -> 0 bytes .../resources/icons/matcap/clay_studio.jpg | Bin 3652 -> 0 bytes .../resources/icons/matcap/contours_1.jpg | Bin 6018 -> 0 bytes .../resources/icons/matcap/contours_2.jpg | Bin 6302 -> 0 bytes .../resources/icons/matcap/contours_3.jpg | Bin 5284 -> 0 bytes libs/potree/resources/icons/matcap/jade.jpg | Bin 3381 -> 0 bytes libs/potree/resources/icons/matcap/matcap.jpg | Bin 4937 -> 0 bytes .../icons/matcap/metal_anisotropic.jpg | Bin 7456 -> 0 bytes .../resources/icons/matcap/metal_carpaint.jpg | Bin 4637 -> 0 bytes .../resources/icons/matcap/metal_lead.jpg | Bin 3251 -> 0 bytes .../resources/icons/matcap/metal_shiny.jpg | Bin 6476 -> 0 bytes libs/potree/resources/icons/matcap/pearl.jpg | Bin 4929 -> 0 bytes .../matcap/reflection_check_horizontal.jpg | Bin 8593 -> 0 bytes .../matcap/reflection_check_vertical.jpg | Bin 8371 -> 0 bytes libs/potree/resources/icons/matcap/resin.jpg | Bin 4853 -> 0 bytes libs/potree/resources/icons/matcap/skin.jpg | Bin 3726 -> 0 bytes libs/potree/resources/icons/matcap/toon.jpg | Bin 6081 -> 0 bytes libs/potree/resources/icons/menu_button.svg | 95 - libs/potree/resources/icons/menu_icon.svg | 83 - .../resources/icons/navigation_cube.svg | 62 - .../potree/resources/icons/orbit_controls.svg | 108 - .../resources/icons/orthographic-camera.svg | 62 - .../resources/icons/perspective-camera.svg | 62 - libs/potree/resources/icons/picture.svg | 121 - libs/potree/resources/icons/point.svg | 73 - libs/potree/resources/icons/profile.png | Bin 975 -> 0 bytes libs/potree/resources/icons/profile.svg | 145 - libs/potree/resources/icons/remove.svg | 185 - libs/potree/resources/icons/reset_tools.svg | 185 - libs/potree/resources/icons/return_number.svg | 80 - libs/potree/resources/icons/rgb.png | Bin 2307 -> 0 bytes libs/potree/resources/icons/rgb.svg | 140 - libs/potree/resources/icons/rgb_elevation.png | Bin 2467 -> 0 bytes libs/potree/resources/icons/right.svg | 108 - libs/potree/resources/icons/rotate.svg | 136 - libs/potree/resources/icons/scale.svg | 144 - libs/potree/resources/icons/sphere.png | Bin 939 -> 0 bytes libs/potree/resources/icons/sphere.svg | 123 - .../resources/icons/sphere_distances.svg | 154 - libs/potree/resources/icons/target.svg | 156 - libs/potree/resources/icons/top.svg | 108 - libs/potree/resources/icons/translate.svg | 148 - libs/potree/resources/icons/triangle.svg | 111 - libs/potree/resources/icons/volume.svg | 150 - libs/potree/resources/icons/vr_button.svg | 82 - libs/potree/resources/images/background.jpg | Bin 49807 -> 0 bytes .../potree/resources/images/child_indices.svg | 325 - libs/potree/resources/images/compas.svg | 135 - libs/potree/resources/images/loading.jpg | Bin 3211 -> 0 bytes .../potree/resources/lang/de/translation.json | 69 - libs/potree/resources/lang/dev/ns.common.json | 7 - .../potree/resources/lang/dev/ns.special.json | 6 - .../resources/lang/dev/translation.json | 6 - .../resources/lang/en-US/ns.common.json | 6 - .../resources/lang/en-US/ns.special.json | 6 - .../resources/lang/en-US/translation.json | 6 - libs/potree/resources/lang/en/ns.common.json | 7 - libs/potree/resources/lang/en/ns.special.json | 6 - .../potree/resources/lang/en/translation.json | 106 - .../potree/resources/lang/es/translation.json | 90 - .../potree/resources/lang/fr/translation.json | 58 - .../potree/resources/lang/jp/translation.json | 66 - .../potree/resources/lang/se/translation.json | 98 - libs/potree/resources/logo.png | Bin 28793 -> 0 bytes libs/potree/resources/logo.svg | 91 - libs/potree/resources/logo_small.png | Bin 6718 -> 0 bytes .../models/stanford_bunny_reduced.mtl | 13 - .../models/stanford_bunny_reduced.obj | 22384 ----- .../models/stanford_bunny_reduced.ply | Bin 132617 -> 0 bytes .../resources/shapefiles/south_sorvilier.dbf | Bin 20751 -> 0 bytes .../resources/shapefiles/south_sorvilier.shp | Bin 1556 -> 0 bytes libs/potree/resources/textures/LICENSE | 23 - .../resources/textures/brick_pavement.jpg | Bin 97095 -> 0 bytes .../resources/textures/matcap/basic_1.jpg | Bin 12233 -> 0 bytes .../resources/textures/matcap/basic_2.jpg | Bin 14159 -> 0 bytes .../resources/textures/matcap/basic_dark.jpg | Bin 11574 -> 0 bytes .../resources/textures/matcap/basic_side.jpg | Bin 13452 -> 0 bytes .../matcap/blender_matcap_license.txt | 5 - .../textures/matcap/ceramic_dark.jpg | Bin 12223 -> 0 bytes .../textures/matcap/ceramic_lightbulb.jpg | Bin 14086 -> 0 bytes .../textures/matcap/check_normal+y.jpg | Bin 16916 -> 0 bytes .../textures/matcap/check_rim_dark.jpg | Bin 15349 -> 0 bytes .../textures/matcap/check_rim_light.jpg | Bin 18497 -> 0 bytes .../resources/textures/matcap/clay_brown.jpg | Bin 11703 -> 0 bytes .../resources/textures/matcap/clay_muddy.jpg | Bin 11030 -> 0 bytes .../resources/textures/matcap/clay_studio.jpg | Bin 12004 -> 0 bytes .../resources/textures/matcap/contours_1.jpg | Bin 8527 -> 0 bytes .../resources/textures/matcap/contours_2.jpg | Bin 7971 -> 0 bytes .../resources/textures/matcap/contours_3.jpg | Bin 14207 -> 0 bytes .../potree/resources/textures/matcap/jade.jpg | Bin 11421 -> 0 bytes .../resources/textures/matcap/matcap.jpg | Bin 7997 -> 0 bytes .../textures/matcap/metal_anisotropic.jpg | Bin 25282 -> 0 bytes .../textures/matcap/metal_carpaint.jpg | Bin 14689 -> 0 bytes .../resources/textures/matcap/metal_lead.jpg | Bin 9877 -> 0 bytes .../resources/textures/matcap/metal_shiny.jpg | Bin 22652 -> 0 bytes .../resources/textures/matcap/pearl.jpg | Bin 15568 -> 0 bytes .../matcap/reflection_check_horizontal.jpg | Bin 43797 -> 0 bytes .../matcap/reflection_check_vertical.jpg | Bin 42714 -> 0 bytes .../resources/textures/matcap/resin.jpg | Bin 15634 -> 0 bytes .../potree/resources/textures/matcap/skin.jpg | Bin 12473 -> 0 bytes .../potree/resources/textures/matcap/toon.jpg | Bin 18205 -> 0 bytes .../resources/textures/navigation/B.png | Bin 1223 -> 0 bytes .../resources/textures/navigation/D.png | Bin 1068 -> 0 bytes .../resources/textures/navigation/F.png | Bin 510 -> 0 bytes .../resources/textures/navigation/L.png | Bin 421 -> 0 bytes .../resources/textures/navigation/R.png | Bin 1206 -> 0 bytes .../resources/textures/navigation/U.png | Bin 840 -> 0 bytes libs/potree/resources/textures/skybox/nx.jpg | Bin 37734 -> 0 bytes libs/potree/resources/textures/skybox/ny.jpg | Bin 6431 -> 0 bytes libs/potree/resources/textures/skybox/nz.jpg | Bin 41673 -> 0 bytes libs/potree/resources/textures/skybox/px.jpg | Bin 40406 -> 0 bytes libs/potree/resources/textures/skybox/py.jpg | Bin 77251 -> 0 bytes libs/potree/resources/textures/skybox/pz.jpg | Bin 48380 -> 0 bytes .../textures/skybox/skyboxsun25degtest.txt | 1 - .../resources/textures/skybox2/README.TXT | 15 - libs/potree/resources/textures/skybox2/nx.jpg | Bin 339776 -> 0 bytes libs/potree/resources/textures/skybox2/ny.jpg | Bin 6432 -> 0 bytes libs/potree/resources/textures/skybox2/nz.jpg | Bin 276831 -> 0 bytes libs/potree/resources/textures/skybox2/px.jpg | Bin 313642 -> 0 bytes libs/potree/resources/textures/skybox2/py.jpg | Bin 146821 -> 0 bytes libs/potree/resources/textures/skybox2/pz.jpg | Bin 302881 -> 0 bytes .../resources/textures/skyboxsun25degtest.txt | 1 - libs/potree/sidebar.html | 261 - libs/potree/workers/2.0/DecoderWorker.js | 303 - .../workers/2.0/DecoderWorker_brotli.js | 2485 - libs/potree/workers/BinaryDecoderWorker.js | 444 - libs/potree/workers/EptBinaryDecoderWorker.js | 5 - libs/potree/workers/EptLaszipDecoderWorker.js | 200 - .../workers/EptZstandardDecoderWorker.js | 17 - libs/potree/workers/LASDecoderWorker.js | 354 - libs/potree/workers/LASLAZWorker.js | 49756 ---------- libs/potree/workers/OctreeDecoderWorker.js | 2466 - libs/proj4/LICENSE.md | 29 - libs/proj4/README.md | 153 - libs/proj4/proj4.js | 3 - libs/shapefile/shapefile.js | 469 - libs/spectrum/LICENSE | 20 - libs/spectrum/README.md | 69 - libs/spectrum/spectrum.css | 507 - libs/spectrum/spectrum.js | 2341 - libs/sql.js/AUTHORS | 6 - libs/sql.js/LICENSE | 44 - libs/sql.js/README.md | 283 - libs/sql.js/sql-wasm.js | 209 - libs/sql.js/sql-wasm.wasm | Bin 1450157 -> 0 bytes libs/three.js/LICENSE | 21 - libs/three.js/README.md | 91 - libs/three.js/build/three.js | 49632 ---------- libs/three.js/build/three.min.js | 1010 - libs/three.js/build/three.module.js | 49173 ---------- libs/three.js/extra/lines.js | 856 - libs/three.js/extra/lines/Line2.js | 31 - libs/three.js/extra/lines/LineGeometry.js | 98 - libs/three.js/extra/lines/LineMaterial.js | 391 - libs/three.js/extra/lines/LineSegments2.js | 65 - .../extra/lines/LineSegmentsGeometry.js | 258 - libs/three.js/extra/lines/Wireframe.js | 65 - .../extra/lines/WireframeGeometry2.js | 32 - libs/tween/LICENSE.txt | 21 - libs/tween/README.txt | 9 - libs/tween/Tween.js | 912 - libs/tween/tween.min.js | 2 - libs/zstd-codec/bundle.js | 22148 ----- package-lock.json | 3403 +- package.json | 3 +- 316 files changed, 3280 insertions(+), 463117 deletions(-) delete mode 100644 libs/MeshLine/LICENSE delete mode 100644 libs/MeshLine/README.md delete mode 100644 libs/MeshLine/src/THREE.MeshLine.js delete mode 100644 libs/ZoomableSlider/ZoomableSlider.css delete mode 100644 libs/ZoomableSlider/ZoomableSlider.html delete mode 100644 libs/ZoomableSlider/ZoomableSlider.js delete mode 100644 libs/brotli/BUILD delete mode 100644 libs/brotli/LICENSE delete mode 100644 libs/brotli/WORKSPACE delete mode 100644 libs/brotli/decode.js delete mode 100644 libs/brotli/decode.min.js delete mode 100644 libs/brotli/decode_test.js delete mode 100644 libs/brotli/polyfill.js delete mode 100644 libs/d3/LICENSE delete mode 100644 libs/d3/d3.js delete mode 100644 libs/d3/d3.min.js delete mode 100644 libs/ept/ParseBuffer.js delete mode 100644 libs/geopackage/LICENSE delete mode 100644 libs/geopackage/README.md delete mode 100644 libs/geopackage/geopackage.js delete mode 100644 libs/geopackage/geopackage.min.js delete mode 100644 libs/i18next/i18next.js delete mode 100644 libs/jquery-ui/AUTHORS.txt delete mode 100644 libs/jquery-ui/LICENSE.txt delete mode 100644 libs/jquery-ui/images/ui-icons_444444_256x240.png delete mode 100644 libs/jquery-ui/images/ui-icons_555555_256x240.png delete mode 100644 libs/jquery-ui/images/ui-icons_777620_256x240.png delete mode 100644 libs/jquery-ui/images/ui-icons_777777_256x240.png delete mode 100644 libs/jquery-ui/images/ui-icons_cc0000_256x240.png delete mode 100644 libs/jquery-ui/images/ui-icons_ffffff_256x240.png delete mode 100644 libs/jquery-ui/index.html delete mode 100644 libs/jquery-ui/jquery-ui.css delete mode 100644 libs/jquery-ui/jquery-ui.min.css delete mode 100644 libs/jquery-ui/jquery-ui.min.js delete mode 100644 libs/jquery-ui/jquery-ui.structure.css delete mode 100644 libs/jquery-ui/jquery-ui.structure.min.css delete mode 100644 libs/jquery-ui/jquery-ui.theme.css delete mode 100644 libs/jquery-ui/jquery-ui.theme.min.css delete mode 100644 libs/jquery-ui/package.json delete mode 100644 libs/jquery/jquery-3.1.1.js delete mode 100644 libs/jquery/jquery-3.1.1.min.js delete mode 100644 libs/jstree/LICENSE-MIT delete mode 100644 libs/jstree/README.md delete mode 100644 libs/jstree/jstree.js delete mode 100644 libs/jstree/jstree.min.js delete mode 100644 libs/jstree/themes/mixed/32px.png delete mode 100644 libs/jstree/themes/mixed/40px.png delete mode 100644 libs/jstree/themes/mixed/style.css delete mode 100644 libs/jstree/themes/mixed/style.min.css delete mode 100644 libs/jstree/themes/mixed/throbber.gif delete mode 100644 libs/openlayers3/LICENSE delete mode 100644 libs/openlayers3/ol-deps.js delete mode 100644 libs/openlayers3/ol.css delete mode 100644 libs/openlayers3/ol.js delete mode 100644 libs/other/BinaryHeap.js delete mode 100644 libs/other/OBJLoader.js delete mode 100644 libs/other/OrbitControls.js delete mode 100644 libs/other/PLYLoader.js delete mode 100644 libs/other/dat.gui.min.js delete mode 100644 libs/other/stats.js delete mode 100644 libs/other/stats.min.js delete mode 100644 libs/other/webgl-debug.js delete mode 100644 libs/plasio/LICENSE delete mode 100644 libs/plasio/js/laslaz.js delete mode 100644 libs/plasio/vendor/bluebird.js delete mode 100644 libs/plasio/workers/laz-loader-worker.js delete mode 100644 libs/plasio/workers/laz-perf.js delete mode 100644 libs/potree/LICENSE delete mode 100644 libs/potree/lazylibs/geopackage/LICENSE delete mode 100644 libs/potree/lazylibs/geopackage/README.md delete mode 100644 libs/potree/lazylibs/geopackage/geopackage.js delete mode 100644 libs/potree/lazylibs/geopackage/geopackage.min.js delete mode 100644 libs/potree/lazylibs/sql.js/AUTHORS delete mode 100644 libs/potree/lazylibs/sql.js/LICENSE delete mode 100644 libs/potree/lazylibs/sql.js/README.md delete mode 100644 libs/potree/lazylibs/sql.js/sql-wasm.js delete mode 100644 libs/potree/lazylibs/sql.js/sql-wasm.wasm delete mode 100644 libs/potree/potree.css delete mode 100644 libs/potree/potree.js delete mode 100644 libs/potree/potree.js.map delete mode 100644 libs/potree/profile.html delete mode 100644 libs/potree/resources/LICENSE delete mode 100644 libs/potree/resources/icons/add.svg delete mode 100644 libs/potree/resources/icons/angle.png delete mode 100644 libs/potree/resources/icons/annotation.svg delete mode 100644 libs/potree/resources/icons/area.svg delete mode 100644 libs/potree/resources/icons/area_backup.svg delete mode 100644 libs/potree/resources/icons/arrow_ccw.svg delete mode 100644 libs/potree/resources/icons/arrow_cw.svg delete mode 100644 libs/potree/resources/icons/arrow_down.svg delete mode 100644 libs/potree/resources/icons/arrow_left.svg delete mode 100644 libs/potree/resources/icons/arrow_right.svg delete mode 100644 libs/potree/resources/icons/arrow_up.svg delete mode 100644 libs/potree/resources/icons/assign.svg delete mode 100644 libs/potree/resources/icons/azimuth.svg delete mode 100644 libs/potree/resources/icons/back.svg delete mode 100644 libs/potree/resources/icons/bottom.svg delete mode 100644 libs/potree/resources/icons/camera_animation.svg delete mode 100644 libs/potree/resources/icons/circle.svg delete mode 100644 libs/potree/resources/icons/circled_dot.svg delete mode 100644 libs/potree/resources/icons/clip-plane-x.svg delete mode 100644 libs/potree/resources/icons/clip-plane-y.svg delete mode 100644 libs/potree/resources/icons/clip-plane-z.svg delete mode 100644 libs/potree/resources/icons/clip-polygon.svg delete mode 100644 libs/potree/resources/icons/clip-screen.svg delete mode 100644 libs/potree/resources/icons/clip_volume.svg delete mode 100644 libs/potree/resources/icons/close.svg delete mode 100644 libs/potree/resources/icons/cloud.svg delete mode 100644 libs/potree/resources/icons/copy.svg delete mode 100644 libs/potree/resources/icons/distance.svg delete mode 100644 libs/potree/resources/icons/earth_controls.png delete mode 100644 libs/potree/resources/icons/earth_controls.svg delete mode 100644 libs/potree/resources/icons/earth_controls_1.png delete mode 100644 libs/potree/resources/icons/eye.svg delete mode 100644 libs/potree/resources/icons/eye_2.png delete mode 100644 libs/potree/resources/icons/eye_2.svg delete mode 100644 libs/potree/resources/icons/eye_crossed.svg delete mode 100644 libs/potree/resources/icons/file_csv_2d.svg delete mode 100644 libs/potree/resources/icons/file_dxf.svg delete mode 100644 libs/potree/resources/icons/file_geojson.svg delete mode 100644 libs/potree/resources/icons/file_las_3d.svg delete mode 100644 libs/potree/resources/icons/file_potree.svg delete mode 100644 libs/potree/resources/icons/flip_y_z.png delete mode 100644 libs/potree/resources/icons/flip_y_z.svg delete mode 100644 libs/potree/resources/icons/focus.svg delete mode 100644 libs/potree/resources/icons/fps_controls.png delete mode 100644 libs/potree/resources/icons/fps_controls.svg delete mode 100644 libs/potree/resources/icons/front.svg delete mode 100644 libs/potree/resources/icons/goto.svg delete mode 100644 libs/potree/resources/icons/gradients_grayscale.png delete mode 100644 libs/potree/resources/icons/gradients_plasma.png delete mode 100644 libs/potree/resources/icons/gradients_rainbow.png delete mode 100644 libs/potree/resources/icons/gradients_spectral.png delete mode 100644 libs/potree/resources/icons/gradients_yellow_green.png delete mode 100644 libs/potree/resources/icons/height.svg delete mode 100644 libs/potree/resources/icons/helicopter_controls.svg delete mode 100644 libs/potree/resources/icons/image_preview.php delete mode 100644 libs/potree/resources/icons/index.html delete mode 100644 libs/potree/resources/icons/left.svg delete mode 100644 libs/potree/resources/icons/map_icon.png delete mode 100644 libs/potree/resources/icons/matcap/basic_1.jpg delete mode 100644 libs/potree/resources/icons/matcap/basic_2.jpg delete mode 100644 libs/potree/resources/icons/matcap/basic_dark.jpg delete mode 100644 libs/potree/resources/icons/matcap/basic_side.jpg delete mode 100644 libs/potree/resources/icons/matcap/ceramic_dark.jpg delete mode 100644 libs/potree/resources/icons/matcap/ceramic_lightbulb.jpg delete mode 100644 libs/potree/resources/icons/matcap/check_normal+y.jpg delete mode 100644 libs/potree/resources/icons/matcap/check_rim_dark.jpg delete mode 100644 libs/potree/resources/icons/matcap/check_rim_light.jpg delete mode 100644 libs/potree/resources/icons/matcap/clay_brown.jpg delete mode 100644 libs/potree/resources/icons/matcap/clay_muddy.jpg delete mode 100644 libs/potree/resources/icons/matcap/clay_studio.jpg delete mode 100644 libs/potree/resources/icons/matcap/contours_1.jpg delete mode 100644 libs/potree/resources/icons/matcap/contours_2.jpg delete mode 100644 libs/potree/resources/icons/matcap/contours_3.jpg delete mode 100644 libs/potree/resources/icons/matcap/jade.jpg delete mode 100644 libs/potree/resources/icons/matcap/matcap.jpg delete mode 100644 libs/potree/resources/icons/matcap/metal_anisotropic.jpg delete mode 100644 libs/potree/resources/icons/matcap/metal_carpaint.jpg delete mode 100644 libs/potree/resources/icons/matcap/metal_lead.jpg delete mode 100644 libs/potree/resources/icons/matcap/metal_shiny.jpg delete mode 100644 libs/potree/resources/icons/matcap/pearl.jpg delete mode 100644 libs/potree/resources/icons/matcap/reflection_check_horizontal.jpg delete mode 100644 libs/potree/resources/icons/matcap/reflection_check_vertical.jpg delete mode 100644 libs/potree/resources/icons/matcap/resin.jpg delete mode 100644 libs/potree/resources/icons/matcap/skin.jpg delete mode 100644 libs/potree/resources/icons/matcap/toon.jpg delete mode 100644 libs/potree/resources/icons/menu_button.svg delete mode 100644 libs/potree/resources/icons/menu_icon.svg delete mode 100644 libs/potree/resources/icons/navigation_cube.svg delete mode 100644 libs/potree/resources/icons/orbit_controls.svg delete mode 100644 libs/potree/resources/icons/orthographic-camera.svg delete mode 100644 libs/potree/resources/icons/perspective-camera.svg delete mode 100644 libs/potree/resources/icons/picture.svg delete mode 100644 libs/potree/resources/icons/point.svg delete mode 100644 libs/potree/resources/icons/profile.png delete mode 100644 libs/potree/resources/icons/profile.svg delete mode 100644 libs/potree/resources/icons/remove.svg delete mode 100644 libs/potree/resources/icons/reset_tools.svg delete mode 100644 libs/potree/resources/icons/return_number.svg delete mode 100644 libs/potree/resources/icons/rgb.png delete mode 100644 libs/potree/resources/icons/rgb.svg delete mode 100644 libs/potree/resources/icons/rgb_elevation.png delete mode 100644 libs/potree/resources/icons/right.svg delete mode 100644 libs/potree/resources/icons/rotate.svg delete mode 100644 libs/potree/resources/icons/scale.svg delete mode 100644 libs/potree/resources/icons/sphere.png delete mode 100644 libs/potree/resources/icons/sphere.svg delete mode 100644 libs/potree/resources/icons/sphere_distances.svg delete mode 100644 libs/potree/resources/icons/target.svg delete mode 100644 libs/potree/resources/icons/top.svg delete mode 100644 libs/potree/resources/icons/translate.svg delete mode 100644 libs/potree/resources/icons/triangle.svg delete mode 100644 libs/potree/resources/icons/volume.svg delete mode 100644 libs/potree/resources/icons/vr_button.svg delete mode 100644 libs/potree/resources/images/background.jpg delete mode 100644 libs/potree/resources/images/child_indices.svg delete mode 100644 libs/potree/resources/images/compas.svg delete mode 100644 libs/potree/resources/images/loading.jpg delete mode 100644 libs/potree/resources/lang/de/translation.json delete mode 100644 libs/potree/resources/lang/dev/ns.common.json delete mode 100644 libs/potree/resources/lang/dev/ns.special.json delete mode 100644 libs/potree/resources/lang/dev/translation.json delete mode 100644 libs/potree/resources/lang/en-US/ns.common.json delete mode 100644 libs/potree/resources/lang/en-US/ns.special.json delete mode 100644 libs/potree/resources/lang/en-US/translation.json delete mode 100644 libs/potree/resources/lang/en/ns.common.json delete mode 100644 libs/potree/resources/lang/en/ns.special.json delete mode 100644 libs/potree/resources/lang/en/translation.json delete mode 100644 libs/potree/resources/lang/es/translation.json delete mode 100644 libs/potree/resources/lang/fr/translation.json delete mode 100644 libs/potree/resources/lang/jp/translation.json delete mode 100644 libs/potree/resources/lang/se/translation.json delete mode 100644 libs/potree/resources/logo.png delete mode 100644 libs/potree/resources/logo.svg delete mode 100644 libs/potree/resources/logo_small.png delete mode 100644 libs/potree/resources/models/stanford_bunny_reduced.mtl delete mode 100644 libs/potree/resources/models/stanford_bunny_reduced.obj delete mode 100644 libs/potree/resources/models/stanford_bunny_reduced.ply delete mode 100644 libs/potree/resources/shapefiles/south_sorvilier.dbf delete mode 100644 libs/potree/resources/shapefiles/south_sorvilier.shp delete mode 100644 libs/potree/resources/textures/LICENSE delete mode 100644 libs/potree/resources/textures/brick_pavement.jpg delete mode 100644 libs/potree/resources/textures/matcap/basic_1.jpg delete mode 100644 libs/potree/resources/textures/matcap/basic_2.jpg delete mode 100644 libs/potree/resources/textures/matcap/basic_dark.jpg delete mode 100644 libs/potree/resources/textures/matcap/basic_side.jpg delete mode 100644 libs/potree/resources/textures/matcap/blender_matcap_license.txt delete mode 100644 libs/potree/resources/textures/matcap/ceramic_dark.jpg delete mode 100644 libs/potree/resources/textures/matcap/ceramic_lightbulb.jpg delete mode 100644 libs/potree/resources/textures/matcap/check_normal+y.jpg delete mode 100644 libs/potree/resources/textures/matcap/check_rim_dark.jpg delete mode 100644 libs/potree/resources/textures/matcap/check_rim_light.jpg delete mode 100644 libs/potree/resources/textures/matcap/clay_brown.jpg delete mode 100644 libs/potree/resources/textures/matcap/clay_muddy.jpg delete mode 100644 libs/potree/resources/textures/matcap/clay_studio.jpg delete mode 100644 libs/potree/resources/textures/matcap/contours_1.jpg delete mode 100644 libs/potree/resources/textures/matcap/contours_2.jpg delete mode 100644 libs/potree/resources/textures/matcap/contours_3.jpg delete mode 100644 libs/potree/resources/textures/matcap/jade.jpg delete mode 100644 libs/potree/resources/textures/matcap/matcap.jpg delete mode 100644 libs/potree/resources/textures/matcap/metal_anisotropic.jpg delete mode 100644 libs/potree/resources/textures/matcap/metal_carpaint.jpg delete mode 100644 libs/potree/resources/textures/matcap/metal_lead.jpg delete mode 100644 libs/potree/resources/textures/matcap/metal_shiny.jpg delete mode 100644 libs/potree/resources/textures/matcap/pearl.jpg delete mode 100644 libs/potree/resources/textures/matcap/reflection_check_horizontal.jpg delete mode 100644 libs/potree/resources/textures/matcap/reflection_check_vertical.jpg delete mode 100644 libs/potree/resources/textures/matcap/resin.jpg delete mode 100644 libs/potree/resources/textures/matcap/skin.jpg delete mode 100644 libs/potree/resources/textures/matcap/toon.jpg delete mode 100644 libs/potree/resources/textures/navigation/B.png delete mode 100644 libs/potree/resources/textures/navigation/D.png delete mode 100644 libs/potree/resources/textures/navigation/F.png delete mode 100644 libs/potree/resources/textures/navigation/L.png delete mode 100644 libs/potree/resources/textures/navigation/R.png delete mode 100644 libs/potree/resources/textures/navigation/U.png delete mode 100644 libs/potree/resources/textures/skybox/nx.jpg delete mode 100644 libs/potree/resources/textures/skybox/ny.jpg delete mode 100644 libs/potree/resources/textures/skybox/nz.jpg delete mode 100644 libs/potree/resources/textures/skybox/px.jpg delete mode 100644 libs/potree/resources/textures/skybox/py.jpg delete mode 100644 libs/potree/resources/textures/skybox/pz.jpg delete mode 100644 libs/potree/resources/textures/skybox/skyboxsun25degtest.txt delete mode 100644 libs/potree/resources/textures/skybox2/README.TXT delete mode 100644 libs/potree/resources/textures/skybox2/nx.jpg delete mode 100644 libs/potree/resources/textures/skybox2/ny.jpg delete mode 100644 libs/potree/resources/textures/skybox2/nz.jpg delete mode 100644 libs/potree/resources/textures/skybox2/px.jpg delete mode 100644 libs/potree/resources/textures/skybox2/py.jpg delete mode 100644 libs/potree/resources/textures/skybox2/pz.jpg delete mode 100644 libs/potree/resources/textures/skyboxsun25degtest.txt delete mode 100644 libs/potree/sidebar.html delete mode 100644 libs/potree/workers/2.0/DecoderWorker.js delete mode 100644 libs/potree/workers/2.0/DecoderWorker_brotli.js delete mode 100644 libs/potree/workers/BinaryDecoderWorker.js delete mode 100644 libs/potree/workers/EptBinaryDecoderWorker.js delete mode 100644 libs/potree/workers/EptLaszipDecoderWorker.js delete mode 100644 libs/potree/workers/EptZstandardDecoderWorker.js delete mode 100644 libs/potree/workers/LASDecoderWorker.js delete mode 100644 libs/potree/workers/LASLAZWorker.js delete mode 100644 libs/potree/workers/OctreeDecoderWorker.js delete mode 100644 libs/proj4/LICENSE.md delete mode 100644 libs/proj4/README.md delete mode 100644 libs/proj4/proj4.js delete mode 100644 libs/shapefile/shapefile.js delete mode 100644 libs/spectrum/LICENSE delete mode 100644 libs/spectrum/README.md delete mode 100644 libs/spectrum/spectrum.css delete mode 100644 libs/spectrum/spectrum.js delete mode 100644 libs/sql.js/AUTHORS delete mode 100644 libs/sql.js/LICENSE delete mode 100644 libs/sql.js/README.md delete mode 100644 libs/sql.js/sql-wasm.js delete mode 100644 libs/sql.js/sql-wasm.wasm delete mode 100644 libs/three.js/LICENSE delete mode 100644 libs/three.js/README.md delete mode 100644 libs/three.js/build/three.js delete mode 100644 libs/three.js/build/three.min.js delete mode 100644 libs/three.js/build/three.module.js delete mode 100644 libs/three.js/extra/lines.js delete mode 100644 libs/three.js/extra/lines/Line2.js delete mode 100644 libs/three.js/extra/lines/LineGeometry.js delete mode 100644 libs/three.js/extra/lines/LineMaterial.js delete mode 100644 libs/three.js/extra/lines/LineSegments2.js delete mode 100644 libs/three.js/extra/lines/LineSegmentsGeometry.js delete mode 100644 libs/three.js/extra/lines/Wireframe.js delete mode 100644 libs/three.js/extra/lines/WireframeGeometry2.js delete mode 100644 libs/tween/LICENSE.txt delete mode 100644 libs/tween/README.txt delete mode 100644 libs/tween/Tween.js delete mode 100644 libs/tween/tween.min.js delete mode 100644 libs/zstd-codec/bundle.js diff --git a/index.html b/index.html index 87220a6..ea52a37 100644 --- a/index.html +++ b/index.html @@ -7,11 +7,11 @@ Potree Viewer - - - - - + + + + + \nreductionDecember preferredCambridgeopponentsBusiness confusion>\npresentedexplaineddoes not worldwideinterfacepositionsnewspaper</table>\nmountainslike the essentialfinancialselectionaction=\"/abandonedEducationparseInt(stabilityunable to\nrelationsNote thatefficientperformedtwo yearsSince thethereforewrapper\">alternateincreasedBattle ofperceivedtrying tonecessaryportrayedelectionsElizabethdiscoveryinsurances.length;legendaryGeographycandidatecorporatesometimesservices.inheritedCommunityreligiouslocationsCommitteebuildingsthe worldno longerbeginningreferencecannot befrequencytypicallyinto the relative;recordingpresidentinitiallytechniquethe otherit can beexistenceunderlinethis timetelephoneitemscopepracticesadvantage);return For otherprovidingdemocracyboth the extensivesufferingsupportedcomputers functionpracticalsaid thatit may beEnglish\nsuspectedmargin: 0spiritual\n\nmicrosoftgraduallydiscussedhe becameexecutivejquery.jshouseholdconfirmedpurchasedliterallydestroyedup to thevariationremainingit is notcenturiesJapanese among thecompletedalgorithminterestsrebellionundefinedencourageresizableinvolvingsensitiveuniversalprovision(althoughfeaturingconducted), which continued-header\">February numerous overflow:componentfragmentsexcellentcolspan=\"technicalnear the Advanced source ofexpressedHong Kong Facebookmultiple mechanismelevationoffensive\n\tsponsoreddocument.or "there arethose whomovementsprocessesdifficultsubmittedrecommendconvincedpromoting\" width=\".replace(classicalcoalitionhis firstdecisionsassistantindicatedevolution-wrapper\"enough toalong thedelivered-->\r\n\n\r\n

    \n selected=\"high schoolresponse tocomfortableadoption ofthree yearsthe countryin Februaryso that thepeople who provided by\nhaving been\r\n\r\n< "The compilationhe had beenproduced byphilosopherconstructedintended toamong othercompared toto say thatEngineeringa differentreferred todifferencesbelief thatphotographsidentifyingHistory of Republic ofnecessarilyprobabilitytechnicallyleaving thespectacularfraction ofelectricityhead of therestaurantspartnershipemphasis onmost recentshare with saying thatfilled withdesigned toit is often\">as follows:merged withthrough thecommercial pointed outopportunityview of therequirementdivision ofprogramminghe receivedsetInterval\">maintainingChristopherMuch of thewritings of\" height=\"2size of theversion of mixture of between theExamples ofeducationalcompetitive onsubmit=\"director ofdistinctive/DTD XHTML relating totendency toprovince ofwhich woulddespite thescientific legislature.innerHTML allegationsAgriculturewas used inapproach tointelligentyears later,sans-serifdeterminingPerformanceappearances, which is foundationsabbreviatedhigher thans from the individual composed ofsupposed toclaims thatattributionfont-size:1elements ofHistorical his brotherat the timeanniversarygoverned byrelated to ultimately innovationsit is stillcan only bedefinitionstoGMTStringA number ofimg class=\"Eventually,was changedoccurred inneighboringdistinguishwhen he wasintroducingterrestrialMany of theargues thatan Americanconquest ofwidespread were killedscreen and In order toexpected todescendantsare locatedlegislativegenerations backgroundmost peopleyears afterthere is nothe highestfrequently they do notargued thatshowed thatpredominanttheologicalby the timeconsideringshort-livedcan be usedvery littleone of the had alreadyinterpretedcommunicatefeatures ofgovernment,entered the\" height=\"3Independentpopulationslarge-scale. Although used in thedestructionpossibilitystarting intwo or moreexpressionssubordinatelarger thanhistory and\r\nContinentaleliminatingwill not bepractice ofin front ofsite of theensure thatto create amississippipotentiallyoutstandingbetter thanwhat is nowsituated inmeta name=\"TraditionalsuggestionsTranslationthe form ofatmosphericideologicalenterprisescalculatingeast of theremnants ofpluginspage/index.php?remained intransformedHe was alsowas alreadystatisticalin favor ofMinistry ofmovement offormulationis required\nquestion ofwas electedto become abecause of some peopleinspired bysuccessful a time whenmore commonamongst thean officialwidth:100%;technology,was adoptedto keep thesettlementslive birthsindex.html\"Connecticutassigned to&times;account foralign=rightthe companyalways beenreturned toinvolvementBecause thethis period\" name=\"q\" confined toa result ofvalue=\"\" />is actuallyEnvironment\r\n\r\nConversely,>\n
    this is notthe presentif they areand finallya matter of\r\n\t
    \r\n\r\nfaster thanmajority ofafter whichcomparativeto maintainimprove theawarded theer\" class=\"frameborderrestorationin the sameanalysis oftheir firstDuring the continentalsequence offunction(){font-size: work on the\nadopted theproperty ofdirected byeffectivelywas broughtchildren ofProgramminglonger thanmanuscriptswar againstby means ofand most ofsimilar to proprietaryoriginatingprestigiousgrammaticalexperience.to make theIt was alsois found incompetitorsin the U.S.replace thebrought thecalculationfall of thethe generalpracticallyin honor ofreleased inresidentialand some ofking of thereaction to1st Earl ofculture andprincipally\n they can beback to thesome of hisexposure toare similarform of theaddFavoritecitizenshippart in thepeople within practiceto continue&minus;approved by the first allowed theand for thefunctioningplaying thesolution toheight=\"0\" in his bookmore than afollows thecreated thepresence in nationalistthe idea ofa characterwere forced class=\"btndays of thefeatured inshowing theinterest inin place ofturn of thethe head ofLord of thepoliticallyhas its ownEducationalapproval ofsome of theeach other,behavior ofand becauseand anotherappeared onrecorded inblack"may includethe world'scan lead torefers to aborder=\"0\" government winning theresulted in while the Washington,the subjectcity in the>\r\n\t\treflect theto completebecame moreradioactiverejected bywithout anyhis father,which couldcopy of theto indicatea politicalaccounts ofconstitutesworked wither
    Archbishop class=\"nobeing usedapproachesprivilegesnoscript>\nresults inmay be theEaster eggmechanismsreasonablePopulationCollectionselected\">noscript>\r/index.phparrival of-jssdk'));managed toincompletecasualtiescompletionChristiansSeptember arithmeticproceduresmight haveProductionit appearsPhilosophyfriendshipleading togiving thetoward theguaranteeddocumentedcolor:#000video gamecommissionreflectingchange theassociatedsans-serifonkeypress; padding:He was theunderlyingtypically , and the srcElementsuccessivesince the should be networkingaccountinguse of thelower thanshows that\n\t\tcomplaintscontinuousquantitiesastronomerhe did notdue to itsapplied toan averageefforts tothe futureattempt toTherefore,capabilityRepublicanwas formedElectronickilometerschallengespublishingthe formerindigenousdirectionssubsidiaryconspiracydetails ofand in theaffordablesubstancesreason forconventionitemtype=\"absolutelysupposedlyremained aattractivetravellingseparatelyfocuses onelementaryapplicablefound thatstylesheetmanuscriptstands for no-repeat(sometimesCommercialin Americaundertakenquarter ofan examplepersonallyindex.php?\npercentagebest-knowncreating a\" dir=\"ltrLieutenant\n
    is said tostructuralreferendummost oftena separate->\n
    soundtracksearchFormtend to beinput id=\"opening ofrestrictedadopted byaddressingtheologianmethods ofvariant ofChristian very largeautomotiveby far therange frompursuit offollow thebrought toin Englandagree thataccused ofcomes frompreventingdiv style=his or hertremendousfreedom ofconcerning0 1em 1em;Basketball/style.cssan earliereven after/\" title=\".com/indextaking thepittsburghcontent\">\rimplementedcan be seenthere was ademonstratecontainer\">connectionsthe Britishwas written!important;px; margin-followed byability to complicatedduring the immigrationalso called

    \n

    acquisitioncalled the persecutiondesignation{font-size:appeared ininvestigateexperiencedmost likelywidely useddiscussionspresence of (document.extensivelyIt has beenit does notcontrary toinhabitantsimprovementscholarshipconsumptioninstructionfor exampleone or morepx; paddingthe currenta series ofare usuallyrole in thepreviously derivativesevidence ofexperiencescolorschemestated thatcertificate

    wH>Idz2Crjt=F! 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 Z-s*Gp+jrwls{hZQH&6Ox)FJxV`!6T0_`(1H literal 0 HcmV?d00001 diff --git a/src/desktop.js b/src/desktop.js index 0d201d1..f876b51 100644 --- a/src/desktop.js +++ b/src/desktop.js @@ -169,15 +169,26 @@ export function convert_17(inputPaths, chosenPath, pointcloudName){ } export function convert_20(inputPaths, chosenPath, pointcloudName){ - let message = `Starting conversion.
    + const message = `Starting conversion.
    input: ${inputPaths}
    output: ${chosenPath}`; viewer.postMessage(message, {duration: 15000}); - const { spawn, fork, execFile } = require('child_process'); + const { spawn } = require('child_process'); - let exe = './libs/PotreeConverter2/PotreeConverter.exe'; - let parameters = [ + let exe; + switch (process.platform) { + case 'linux': + exe = './libs/PotreeConverter2/PotreeConverter'; + break; + case 'win32': + exe = './libs/PotreeConverter2/PotreeConverter.exe'; + break; + default: + console.error('No PotreeConverter2 binary for this OS'); + break; + } + const parameters = [ ...inputPaths, "-o", chosenPath ]; @@ -201,7 +212,7 @@ export function convert_20(inputPaths, chosenPath, pointcloudName){ try{ const name = match[1]; const value = match[2]; - const aabb = JSON.parse(match[2]); + const aabb = JSON.parse(value); console.log(aabb); if(name === "cubicAABB"){ From 51b53fb9adcd8f678999df44f1f98726e71a83dc Mon Sep 17 00:00:00 2001 From: GuillaumeDelorme Date: Tue, 3 Nov 2020 22:34:40 +0100 Subject: [PATCH 3/7] Adding Linux support for PotreeConverter 1 --- libs/PotreeConverter/PotreeConverter | Bin 0 -> 870520 bytes libs/PotreeConverter/liblaszip.so | Bin 0 -> 561112 bytes src/desktop.js | 17 ++++++++++++++--- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100755 libs/PotreeConverter/PotreeConverter create mode 100755 libs/PotreeConverter/liblaszip.so diff --git a/libs/PotreeConverter/PotreeConverter b/libs/PotreeConverter/PotreeConverter new file mode 100755 index 0000000000000000000000000000000000000000..51bbb78f05ae1ef261519e45bdd16b9e39074f2e GIT binary patch literal 870520 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%0A_mhpFTfh;Gmm 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 z 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

  • of his lifeaccompaniedclientWidthprevent theLegislativedifferentlytogether inhas severalfor anothertext of thefounded thee with the is used forchanged theusually theplace wherewhereas the> \nHowever thelead to the\tThe currentthe site ofsubstantialexperience,in the Westthey shouldslovenD\rinacomentariosuniversidadcondicionesactividadesexperienciatecnologC-aproducciC3npuntuaciC3naplicaciC3ncontraseC1acategorC-asregistrarseprofesionaltratamientoregC-stratesecretarC-aprincipalesprotecciC3nimportantesimportanciaposibilidadinteresantecrecimientonecesidadessuscribirseasociaciC3ndisponiblesevaluaciC3nestudiantesresponsableresoluciC3nguadalajararegistradosoportunidadcomercialesfotografC-aautoridadesingenierC-atelevisiC3ncompetenciaoperacionesestablecidosimplementeactualmentenavegaciC3nconformidadline-height:font-family:\" : \"http://applicationslink\" href=\"specifically//\n/index.html\"window.open( !important;application/independence//www.googleorganizationautocompleterequirementsconservative
    most notably/>notification'undefined')Furthermore,believe thatinnerHTML = prior to thedramaticallyreferring tonegotiationsheadquartersSouth AfricaunsuccessfulPennsylvaniaAs a result,\npadding-top:experimentalgetAttributeinstructionstechnologiespart of the =function(){subscriptionl.dtd\">\r\nEnglish (US)appendChild(transmissions. However, intelligence\" tabindex=\"float:right;Commonwealthranging fromin which theat least onereproductionencyclopedia;font-size:1jurisdictionat that time\">compensationchampionshipmedia=\"all\" violation ofreference toreturn true;Strict//EN\" transactionsinterventionverificationInformation difficultiesChampionshipcapabilities}\n\nChristianityfor example,Professionalrestrictionssuggest thatwas released(such as theremoveClass(unemploymentthe Americanstructure of/index.html published inspan class=\"\">\n\nf (document.border: 1px {font-size:1treatment of0\" height=\"1modificationIndependencedivided intogreater thanachievementsestablishingJavaScript\" neverthelesssignificanceBroadcasting> container\">\nsuch as the influence ofa particularsrc='http://navigation\" half of the substantial  advantage ofdiscovery offundamental metropolitanthe opposite\" xml:lang=\"deliberatelyalign=centerevolution ofpreservationimprovementsbeginning inJesus ChristPublicationsdisagreementtext-align:r, function()similaritiesbody>is currentlyalphabeticalis sometimestype=\"image/many of the flow:hidden;available indescribe theexistence ofall over thethe Internet\t"); - this.element.attr('aria-activedescendant','j'+this._id+'_loading'); - } - this.load_node($.jstree.root, function (o, s) { - if(s) { - this.get_container_ul()[0].className = c; - if(this._firstChild(this.get_container_ul()[0])) { - this.element.attr('aria-activedescendant',this._firstChild(this.get_container_ul()[0]).id); - } - this.set_state($.extend(true, {}, this._data.core.state), function () { - /** - * triggered when a `refresh` call completes - * @event - * @name refresh.jstree - */ - this.trigger('refresh'); - }); - } - this._data.core.state = null; - }); - }, - /** - * refreshes a node in the tree (reload its children) all opened nodes inside that node are reloaded with calls to `load_node`. - * @name refresh_node(obj) - * @param {mixed} obj the node - * @trigger refresh_node.jstree - */ - refresh_node : function (obj) { - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - var opened = [], to_load = [], s = this._data.core.selected.concat([]); - to_load.push(obj.id); - if(obj.state.opened === true) { opened.push(obj.id); } - this.get_node(obj, true).find('.jstree-open').each(function() { to_load.push(this.id); opened.push(this.id); }); - this._load_nodes(to_load, $.proxy(function (nodes) { - this.open_node(opened, false, 0); - this.select_node(s); - /** - * triggered when a node is refreshed - * @event - * @name refresh_node.jstree - * @param {Object} node - the refreshed node - * @param {Array} nodes - an array of the IDs of the nodes that were reloaded - */ - this.trigger('refresh_node', { 'node' : obj, 'nodes' : nodes }); - }, this), false, true); - }, - /** - * set (change) the ID of a node - * @name set_id(obj, id) - * @param {mixed} obj the node - * @param {String} id the new ID - * @return {Boolean} - * @trigger set_id.jstree - */ - set_id : function (obj, id) { - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - var i, j, m = this._model.data, old = obj.id; - id = id.toString(); - // update parents (replace current ID with new one in children and children_d) - m[obj.parent].children[$.inArray(obj.id, m[obj.parent].children)] = id; - for(i = 0, j = obj.parents.length; i < j; i++) { - m[obj.parents[i]].children_d[$.inArray(obj.id, m[obj.parents[i]].children_d)] = id; - } - // update children (replace current ID with new one in parent and parents) - for(i = 0, j = obj.children.length; i < j; i++) { - m[obj.children[i]].parent = id; - } - for(i = 0, j = obj.children_d.length; i < j; i++) { - m[obj.children_d[i]].parents[$.inArray(obj.id, m[obj.children_d[i]].parents)] = id; - } - i = $.inArray(obj.id, this._data.core.selected); - if(i !== -1) { this._data.core.selected[i] = id; } - // update model and obj itself (obj.id, this._model.data[KEY]) - i = this.get_node(obj.id, true); - if(i) { - i.attr('id', id); //.children('.jstree-anchor').attr('id', id + '_anchor').end().attr('aria-labelledby', id + '_anchor'); - if(this.element.attr('aria-activedescendant') === obj.id) { - this.element.attr('aria-activedescendant', id); - } - } - delete m[obj.id]; - obj.id = id; - obj.li_attr.id = id; - m[id] = obj; - /** - * triggered when a node id value is changed - * @event - * @name set_id.jstree - * @param {Object} node - * @param {String} old the old id - */ - this.trigger('set_id',{ "node" : obj, "new" : obj.id, "old" : old }); - return true; - }, - /** - * get the text value of a node - * @name get_text(obj) - * @param {mixed} obj the node - * @return {String} - */ - get_text : function (obj) { - obj = this.get_node(obj); - return (!obj || obj.id === $.jstree.root) ? false : obj.text; - }, - /** - * set the text value of a node. Used internally, please use `rename_node(obj, val)`. - * @private - * @name set_text(obj, val) - * @param {mixed} obj the node, you can pass an array to set the text on multiple nodes - * @param {String} val the new text value - * @return {Boolean} - * @trigger set_text.jstree - */ - set_text : function (obj, val) { - var t1, t2; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.set_text(obj[t1], val); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - obj.text = val; - if(this.get_node(obj, true).length) { - this.redraw_node(obj.id); - } - /** - * triggered when a node text value is changed - * @event - * @name set_text.jstree - * @param {Object} obj - * @param {String} text the new value - */ - this.trigger('set_text',{ "obj" : obj, "text" : val }); - return true; - }, - /** - * gets a JSON representation of a node (or the whole tree) - * @name get_json([obj, options]) - * @param {mixed} obj - * @param {Object} options - * @param {Boolean} options.no_state do not return state information - * @param {Boolean} options.no_id do not return ID - * @param {Boolean} options.no_children do not include children - * @param {Boolean} options.no_data do not include node data - * @param {Boolean} options.no_li_attr do not include LI attributes - * @param {Boolean} options.no_a_attr do not include A attributes - * @param {Boolean} options.flat return flat JSON instead of nested - * @return {Object} - */ - get_json : function (obj, options, flat) { - obj = this.get_node(obj || $.jstree.root); - if(!obj) { return false; } - if(options && options.flat && !flat) { flat = []; } - var tmp = { - 'id' : obj.id, - 'text' : obj.text, - 'icon' : this.get_icon(obj), - 'li_attr' : $.extend(true, {}, obj.li_attr), - 'a_attr' : $.extend(true, {}, obj.a_attr), - 'state' : {}, - 'data' : options && options.no_data ? false : $.extend(true, $.isArray(obj.data)?[]:{}, obj.data) - //( this.get_node(obj, true).length ? this.get_node(obj, true).data() : obj.data ), - }, i, j; - if(options && options.flat) { - tmp.parent = obj.parent; - } - else { - tmp.children = []; - } - if(!options || !options.no_state) { - for(i in obj.state) { - if(obj.state.hasOwnProperty(i)) { - tmp.state[i] = obj.state[i]; - } - } - } else { - delete tmp.state; - } - if(options && options.no_li_attr) { - delete tmp.li_attr; - } - if(options && options.no_a_attr) { - delete tmp.a_attr; - } - if(options && options.no_id) { - delete tmp.id; - if(tmp.li_attr && tmp.li_attr.id) { - delete tmp.li_attr.id; - } - if(tmp.a_attr && tmp.a_attr.id) { - delete tmp.a_attr.id; - } - } - if(options && options.flat && obj.id !== $.jstree.root) { - flat.push(tmp); - } - if(!options || !options.no_children) { - for(i = 0, j = obj.children.length; i < j; i++) { - if(options && options.flat) { - this.get_json(obj.children[i], options, flat); - } - else { - tmp.children.push(this.get_json(obj.children[i], options)); - } - } - } - return options && options.flat ? flat : (obj.id === $.jstree.root ? tmp.children : tmp); - }, - /** - * create a new node (do not confuse with load_node) - * @name create_node([par, node, pos, callback, is_loaded]) - * @param {mixed} par the parent node (to create a root node use either "#" (string) or `null`) - * @param {mixed} node the data for the new node (a valid JSON object, or a simple string with the name) - * @param {mixed} pos the index at which to insert the node, "first" and "last" are also supported, default is "last" - * @param {Function} callback a function to be called once the node is created - * @param {Boolean} is_loaded internal argument indicating if the parent node was succesfully loaded - * @return {String} the ID of the newly create node - * @trigger model.jstree, create_node.jstree - */ - create_node : function (par, node, pos, callback, is_loaded) { - if(par === null) { par = $.jstree.root; } - par = this.get_node(par); - if(!par) { return false; } - pos = pos === undefined ? "last" : pos; - if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { - return this.load_node(par, function () { this.create_node(par, node, pos, callback, true); }); - } - if(!node) { node = { "text" : this.get_string('New node') }; } - if(typeof node === "string") { - node = { "text" : node }; - } else { - node = $.extend(true, {}, node); - } - if(node.text === undefined) { node.text = this.get_string('New node'); } - var tmp, dpc, i, j; - - if(par.id === $.jstree.root) { - if(pos === "before") { pos = "first"; } - if(pos === "after") { pos = "last"; } - } - switch(pos) { - case "before": - tmp = this.get_node(par.parent); - pos = $.inArray(par.id, tmp.children); - par = tmp; - break; - case "after" : - tmp = this.get_node(par.parent); - pos = $.inArray(par.id, tmp.children) + 1; - par = tmp; - break; - case "inside": - case "first": - pos = 0; - break; - case "last": - pos = par.children.length; - break; - default: - if(!pos) { pos = 0; } - break; - } - if(pos > par.children.length) { pos = par.children.length; } - if(!node.id) { node.id = true; } - if(!this.check("create_node", node, par, pos)) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - if(node.id === true) { delete node.id; } - node = this._parse_model_from_json(node, par.id, par.parents.concat()); - if(!node) { return false; } - tmp = this.get_node(node); - dpc = []; - dpc.push(node); - dpc = dpc.concat(tmp.children_d); - this.trigger('model', { "nodes" : dpc, "parent" : par.id }); - - par.children_d = par.children_d.concat(dpc); - for(i = 0, j = par.parents.length; i < j; i++) { - this._model.data[par.parents[i]].children_d = this._model.data[par.parents[i]].children_d.concat(dpc); - } - node = tmp; - tmp = []; - for(i = 0, j = par.children.length; i < j; i++) { - tmp[i >= pos ? i+1 : i] = par.children[i]; - } - tmp[pos] = node.id; - par.children = tmp; - - this.redraw_node(par, true); - /** - * triggered when a node is created - * @event - * @name create_node.jstree - * @param {Object} node - * @param {String} parent the parent's ID - * @param {Number} position the position of the new node among the parent's children - */ - this.trigger('create_node', { "node" : this.get_node(node), "parent" : par.id, "position" : pos }); - if(callback) { callback.call(this, this.get_node(node)); } - return node.id; - }, - /** - * set the text value of a node - * @name rename_node(obj, val) - * @param {mixed} obj the node, you can pass an array to rename multiple nodes to the same name - * @param {String} val the new text value - * @return {Boolean} - * @trigger rename_node.jstree - */ - rename_node : function (obj, val) { - var t1, t2, old; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.rename_node(obj[t1], val); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - old = obj.text; - if(!this.check("rename_node", obj, this.get_parent(obj), val)) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - this.set_text(obj, val); // .apply(this, Array.prototype.slice.call(arguments)) - /** - * triggered when a node is renamed - * @event - * @name rename_node.jstree - * @param {Object} node - * @param {String} text the new value - * @param {String} old the old value - */ - this.trigger('rename_node', { "node" : obj, "text" : val, "old" : old }); - return true; - }, - /** - * remove a node - * @name delete_node(obj) - * @param {mixed} obj the node, you can pass an array to delete multiple nodes - * @return {Boolean} - * @trigger delete_node.jstree, changed.jstree - */ - delete_node : function (obj) { - var t1, t2, par, pos, tmp, i, j, k, l, c, top, lft; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.delete_node(obj[t1]); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - par = this.get_node(obj.parent); - pos = $.inArray(obj.id, par.children); - c = false; - if(!this.check("delete_node", obj, par, pos)) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - if(pos !== -1) { - par.children = $.vakata.array_remove(par.children, pos); - } - tmp = obj.children_d.concat([]); - tmp.push(obj.id); - for(i = 0, j = obj.parents.length; i < j; i++) { - this._model.data[obj.parents[i]].children_d = $.vakata.array_filter(this._model.data[obj.parents[i]].children_d, function (v) { - return $.inArray(v, tmp) === -1; - }); - } - for(k = 0, l = tmp.length; k < l; k++) { - if(this._model.data[tmp[k]].state.selected) { - c = true; - break; - } - } - if (c) { - this._data.core.selected = $.vakata.array_filter(this._data.core.selected, function (v) { - return $.inArray(v, tmp) === -1; - }); - } - /** - * triggered when a node is deleted - * @event - * @name delete_node.jstree - * @param {Object} node - * @param {String} parent the parent's ID - */ - this.trigger('delete_node', { "node" : obj, "parent" : par.id }); - if(c) { - this.trigger('changed', { 'action' : 'delete_node', 'node' : obj, 'selected' : this._data.core.selected, 'parent' : par.id }); - } - for(k = 0, l = tmp.length; k < l; k++) { - delete this._model.data[tmp[k]]; - } - if($.inArray(this._data.core.focused, tmp) !== -1) { - this._data.core.focused = null; - top = this.element[0].scrollTop; - lft = this.element[0].scrollLeft; - if(par.id === $.jstree.root) { - if (this._model.data[$.jstree.root].children[0]) { - this.get_node(this._model.data[$.jstree.root].children[0], true).children('.jstree-anchor').focus(); - } - } - else { - this.get_node(par, true).children('.jstree-anchor').focus(); - } - this.element[0].scrollTop = top; - this.element[0].scrollLeft = lft; - } - this.redraw_node(par, true); - return true; - }, - /** - * check if an operation is premitted on the tree. Used internally. - * @private - * @name check(chk, obj, par, pos) - * @param {String} chk the operation to check, can be "create_node", "rename_node", "delete_node", "copy_node" or "move_node" - * @param {mixed} obj the node - * @param {mixed} par the parent - * @param {mixed} pos the position to insert at, or if "rename_node" - the new name - * @param {mixed} more some various additional information, for example if a "move_node" operations is triggered by DND this will be the hovered node - * @return {Boolean} - */ - check : function (chk, obj, par, pos, more) { - obj = obj && obj.id ? obj : this.get_node(obj); - par = par && par.id ? par : this.get_node(par); - var tmp = chk.match(/^move_node|copy_node|create_node$/i) ? par : obj, - chc = this.settings.core.check_callback; - if(chk === "move_node" || chk === "copy_node") { - if((!more || !more.is_multi) && (obj.id === par.id || (chk === "move_node" && $.inArray(obj.id, par.children) === pos) || $.inArray(par.id, obj.children_d) !== -1)) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_01', 'reason' : 'Moving parent inside child', 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - return false; - } - } - if(tmp && tmp.data) { tmp = tmp.data; } - if(tmp && tmp.functions && (tmp.functions[chk] === false || tmp.functions[chk] === true)) { - if(tmp.functions[chk] === false) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_02', 'reason' : 'Node data prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - } - return tmp.functions[chk]; - } - if(chc === false || ($.isFunction(chc) && chc.call(this, chk, obj, par, pos, more) === false) || (chc && chc[chk] === false)) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_03', 'reason' : 'User config for core.check_callback prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - return false; - } - return true; - }, - /** - * get the last error - * @name last_error() - * @return {Object} - */ - last_error : function () { - return this._data.core.last_error; - }, - /** - * move a node to a new parent - * @name move_node(obj, par [, pos, callback, is_loaded]) - * @param {mixed} obj the node to move, pass an array to move multiple nodes - * @param {mixed} par the new parent - * @param {mixed} pos the position to insert at (besides integer values, "first" and "last" are supported, as well as "before" and "after"), defaults to integer `0` - * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position - * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded - * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn - * @param {Boolean} instance internal parameter indicating if the node comes from another instance - * @trigger move_node.jstree - */ - move_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) { - var t1, t2, old_par, old_pos, new_par, old_ins, is_multi, dpc, tmp, i, j, k, l, p; - - par = this.get_node(par); - pos = pos === undefined ? 0 : pos; - if(!par) { return false; } - if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { - return this.load_node(par, function () { this.move_node(obj, par, pos, callback, true, false, origin); }); - } - - if($.isArray(obj)) { - if(obj.length === 1) { - obj = obj[0]; - } - else { - //obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - if((tmp = this.move_node(obj[t1], par, pos, callback, is_loaded, false, origin))) { - par = tmp; - pos = "after"; - } - } - this.redraw(); - return true; - } - } - obj = obj && obj.id ? obj : this.get_node(obj); - - if(!obj || obj.id === $.jstree.root) { return false; } - - old_par = (obj.parent || $.jstree.root).toString(); - new_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent); - old_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id)); - is_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id); - old_pos = old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1; - if(old_ins && old_ins._id) { - obj = old_ins._model.data[obj.id]; - } - - if(is_multi) { - if((tmp = this.copy_node(obj, par, pos, callback, is_loaded, false, origin))) { - if(old_ins) { old_ins.delete_node(obj); } - return tmp; - } - return false; - } - //var m = this._model.data; - if(par.id === $.jstree.root) { - if(pos === "before") { pos = "first"; } - if(pos === "after") { pos = "last"; } - } - switch(pos) { - case "before": - pos = $.inArray(par.id, new_par.children); - break; - case "after" : - pos = $.inArray(par.id, new_par.children) + 1; - break; - case "inside": - case "first": - pos = 0; - break; - case "last": - pos = new_par.children.length; - break; - default: - if(!pos) { pos = 0; } - break; - } - if(pos > new_par.children.length) { pos = new_par.children.length; } - if(!this.check("move_node", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - if(obj.parent === new_par.id) { - dpc = new_par.children.concat(); - tmp = $.inArray(obj.id, dpc); - if(tmp !== -1) { - dpc = $.vakata.array_remove(dpc, tmp); - if(pos > tmp) { pos--; } - } - tmp = []; - for(i = 0, j = dpc.length; i < j; i++) { - tmp[i >= pos ? i+1 : i] = dpc[i]; - } - tmp[pos] = obj.id; - new_par.children = tmp; - this._node_changed(new_par.id); - this.redraw(new_par.id === $.jstree.root); - } - else { - // clean old parent and up - tmp = obj.children_d.concat(); - tmp.push(obj.id); - for(i = 0, j = obj.parents.length; i < j; i++) { - dpc = []; - p = old_ins._model.data[obj.parents[i]].children_d; - for(k = 0, l = p.length; k < l; k++) { - if($.inArray(p[k], tmp) === -1) { - dpc.push(p[k]); - } - } - old_ins._model.data[obj.parents[i]].children_d = dpc; - } - old_ins._model.data[old_par].children = $.vakata.array_remove_item(old_ins._model.data[old_par].children, obj.id); - - // insert into new parent and up - for(i = 0, j = new_par.parents.length; i < j; i++) { - this._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(tmp); - } - dpc = []; - for(i = 0, j = new_par.children.length; i < j; i++) { - dpc[i >= pos ? i+1 : i] = new_par.children[i]; - } - dpc[pos] = obj.id; - new_par.children = dpc; - new_par.children_d.push(obj.id); - new_par.children_d = new_par.children_d.concat(obj.children_d); - - // update object - obj.parent = new_par.id; - tmp = new_par.parents.concat(); - tmp.unshift(new_par.id); - p = obj.parents.length; - obj.parents = tmp; - - // update object children - tmp = tmp.concat(); - for(i = 0, j = obj.children_d.length; i < j; i++) { - this._model.data[obj.children_d[i]].parents = this._model.data[obj.children_d[i]].parents.slice(0,p*-1); - Array.prototype.push.apply(this._model.data[obj.children_d[i]].parents, tmp); - } - - if(old_par === $.jstree.root || new_par.id === $.jstree.root) { - this._model.force_full_redraw = true; - } - if(!this._model.force_full_redraw) { - this._node_changed(old_par); - this._node_changed(new_par.id); - } - if(!skip_redraw) { - this.redraw(); - } - } - if(callback) { callback.call(this, obj, new_par, pos); } - /** - * triggered when a node is moved - * @event - * @name move_node.jstree - * @param {Object} node - * @param {String} parent the parent's ID - * @param {Number} position the position of the node among the parent's children - * @param {String} old_parent the old parent of the node - * @param {Number} old_position the old position of the node - * @param {Boolean} is_multi do the node and new parent belong to different instances - * @param {jsTree} old_instance the instance the node came from - * @param {jsTree} new_instance the instance of the new parent - */ - this.trigger('move_node', { "node" : obj, "parent" : new_par.id, "position" : pos, "old_parent" : old_par, "old_position" : old_pos, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this }); - return obj.id; - }, - /** - * copy a node to a new parent - * @name copy_node(obj, par [, pos, callback, is_loaded]) - * @param {mixed} obj the node to copy, pass an array to copy multiple nodes - * @param {mixed} par the new parent - * @param {mixed} pos the position to insert at (besides integer values, "first" and "last" are supported, as well as "before" and "after"), defaults to integer `0` - * @param {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position - * @param {Boolean} is_loaded internal parameter indicating if the parent node has been loaded - * @param {Boolean} skip_redraw internal parameter indicating if the tree should be redrawn - * @param {Boolean} instance internal parameter indicating if the node comes from another instance - * @trigger model.jstree copy_node.jstree - */ - copy_node : function (obj, par, pos, callback, is_loaded, skip_redraw, origin) { - var t1, t2, dpc, tmp, i, j, node, old_par, new_par, old_ins, is_multi; - - par = this.get_node(par); - pos = pos === undefined ? 0 : pos; - if(!par) { return false; } - if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { - return this.load_node(par, function () { this.copy_node(obj, par, pos, callback, true, false, origin); }); - } - - if($.isArray(obj)) { - if(obj.length === 1) { - obj = obj[0]; - } - else { - //obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - if((tmp = this.copy_node(obj[t1], par, pos, callback, is_loaded, true, origin))) { - par = tmp; - pos = "after"; - } - } - this.redraw(); - return true; - } - } - obj = obj && obj.id ? obj : this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - - old_par = (obj.parent || $.jstree.root).toString(); - new_par = (!pos.toString().match(/^(before|after)$/) || par.id === $.jstree.root) ? par : this.get_node(par.parent); - old_ins = origin ? origin : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id)); - is_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id); - - if(old_ins && old_ins._id) { - obj = old_ins._model.data[obj.id]; - } - - if(par.id === $.jstree.root) { - if(pos === "before") { pos = "first"; } - if(pos === "after") { pos = "last"; } - } - switch(pos) { - case "before": - pos = $.inArray(par.id, new_par.children); - break; - case "after" : - pos = $.inArray(par.id, new_par.children) + 1; - break; - case "inside": - case "first": - pos = 0; - break; - case "last": - pos = new_par.children.length; - break; - default: - if(!pos) { pos = 0; } - break; - } - if(pos > new_par.children.length) { pos = new_par.children.length; } - if(!this.check("copy_node", obj, new_par, pos, { 'core' : true, 'origin' : origin, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - node = old_ins ? old_ins.get_json(obj, { no_id : true, no_data : true, no_state : true }) : obj; - if(!node) { return false; } - if(node.id === true) { delete node.id; } - node = this._parse_model_from_json(node, new_par.id, new_par.parents.concat()); - if(!node) { return false; } - tmp = this.get_node(node); - if(obj && obj.state && obj.state.loaded === false) { tmp.state.loaded = false; } - dpc = []; - dpc.push(node); - dpc = dpc.concat(tmp.children_d); - this.trigger('model', { "nodes" : dpc, "parent" : new_par.id }); - - // insert into new parent and up - for(i = 0, j = new_par.parents.length; i < j; i++) { - this._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(dpc); - } - dpc = []; - for(i = 0, j = new_par.children.length; i < j; i++) { - dpc[i >= pos ? i+1 : i] = new_par.children[i]; - } - dpc[pos] = tmp.id; - new_par.children = dpc; - new_par.children_d.push(tmp.id); - new_par.children_d = new_par.children_d.concat(tmp.children_d); - - if(new_par.id === $.jstree.root) { - this._model.force_full_redraw = true; - } - if(!this._model.force_full_redraw) { - this._node_changed(new_par.id); - } - if(!skip_redraw) { - this.redraw(new_par.id === $.jstree.root); - } - if(callback) { callback.call(this, tmp, new_par, pos); } - /** - * triggered when a node is copied - * @event - * @name copy_node.jstree - * @param {Object} node the copied node - * @param {Object} original the original node - * @param {String} parent the parent's ID - * @param {Number} position the position of the node among the parent's children - * @param {String} old_parent the old parent of the node - * @param {Number} old_position the position of the original node - * @param {Boolean} is_multi do the node and new parent belong to different instances - * @param {jsTree} old_instance the instance the node came from - * @param {jsTree} new_instance the instance of the new parent - */ - this.trigger('copy_node', { "node" : tmp, "original" : obj, "parent" : new_par.id, "position" : pos, "old_parent" : old_par, "old_position" : old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1,'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this }); - return tmp.id; - }, - /** - * cut a node (a later call to `paste(obj)` would move the node) - * @name cut(obj) - * @param {mixed} obj multiple objects can be passed using an array - * @trigger cut.jstree - */ - cut : function (obj) { - if(!obj) { obj = this._data.core.selected.concat(); } - if(!$.isArray(obj)) { obj = [obj]; } - if(!obj.length) { return false; } - var tmp = [], o, t1, t2; - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - o = this.get_node(obj[t1]); - if(o && o.id && o.id !== $.jstree.root) { tmp.push(o); } - } - if(!tmp.length) { return false; } - ccp_node = tmp; - ccp_inst = this; - ccp_mode = 'move_node'; - /** - * triggered when nodes are added to the buffer for moving - * @event - * @name cut.jstree - * @param {Array} node - */ - this.trigger('cut', { "node" : obj }); - }, - /** - * copy a node (a later call to `paste(obj)` would copy the node) - * @name copy(obj) - * @param {mixed} obj multiple objects can be passed using an array - * @trigger copy.jstree - */ - copy : function (obj) { - if(!obj) { obj = this._data.core.selected.concat(); } - if(!$.isArray(obj)) { obj = [obj]; } - if(!obj.length) { return false; } - var tmp = [], o, t1, t2; - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - o = this.get_node(obj[t1]); - if(o && o.id && o.id !== $.jstree.root) { tmp.push(o); } - } - if(!tmp.length) { return false; } - ccp_node = tmp; - ccp_inst = this; - ccp_mode = 'copy_node'; - /** - * triggered when nodes are added to the buffer for copying - * @event - * @name copy.jstree - * @param {Array} node - */ - this.trigger('copy', { "node" : obj }); - }, - /** - * get the current buffer (any nodes that are waiting for a paste operation) - * @name get_buffer() - * @return {Object} an object consisting of `mode` ("copy_node" or "move_node"), `node` (an array of objects) and `inst` (the instance) - */ - get_buffer : function () { - return { 'mode' : ccp_mode, 'node' : ccp_node, 'inst' : ccp_inst }; - }, - /** - * check if there is something in the buffer to paste - * @name can_paste() - * @return {Boolean} - */ - can_paste : function () { - return ccp_mode !== false && ccp_node !== false; // && ccp_inst._model.data[ccp_node]; - }, - /** - * copy or move the previously cut or copied nodes to a new parent - * @name paste(obj [, pos]) - * @param {mixed} obj the new parent - * @param {mixed} pos the position to insert at (besides integer, "first" and "last" are supported), defaults to integer `0` - * @trigger paste.jstree - */ - paste : function (obj, pos) { - obj = this.get_node(obj); - if(!obj || !ccp_mode || !ccp_mode.match(/^(copy_node|move_node)$/) || !ccp_node) { return false; } - if(this[ccp_mode](ccp_node, obj, pos, false, false, false, ccp_inst)) { - /** - * triggered when paste is invoked - * @event - * @name paste.jstree - * @param {String} parent the ID of the receiving node - * @param {Array} node the nodes in the buffer - * @param {String} mode the performed operation - "copy_node" or "move_node" - */ - this.trigger('paste', { "parent" : obj.id, "node" : ccp_node, "mode" : ccp_mode }); - } - ccp_node = false; - ccp_mode = false; - ccp_inst = false; - }, - /** - * clear the buffer of previously copied or cut nodes - * @name clear_buffer() - * @trigger clear_buffer.jstree - */ - clear_buffer : function () { - ccp_node = false; - ccp_mode = false; - ccp_inst = false; - /** - * triggered when the copy / cut buffer is cleared - * @event - * @name clear_buffer.jstree - */ - this.trigger('clear_buffer'); - }, - /** - * put a node in edit mode (input field to rename the node) - * @name edit(obj [, default_text, callback]) - * @param {mixed} obj - * @param {String} default_text the text to populate the input with (if omitted or set to a non-string value the node's text value is used) - * @param {Function} callback a function to be called once the text box is blurred, it is called in the instance's scope and receives the node, a status parameter (true if the rename is successful, false otherwise) and a boolean indicating if the user cancelled the edit. You can access the node's title using .text - */ - edit : function (obj, default_text, callback) { - var rtl, w, a, s, t, h1, h2, fn, tmp, cancel = false; - obj = this.get_node(obj); - if(!obj) { return false; } - if(!this.check("edit", obj, this.get_parent(obj))) { - this.settings.core.error.call(this, this._data.core.last_error); - return false; - } - tmp = obj; - default_text = typeof default_text === 'string' ? default_text : obj.text; - this.set_text(obj, ""); - obj = this._open_to(obj); - tmp.text = default_text; - - rtl = this._data.core.rtl; - w = this.element.width(); - this._data.core.focused = tmp.id; - a = obj.children('.jstree-anchor').focus(); - s = $(''); - /*! - oi = obj.children("i:visible"), - ai = a.children("i:visible"), - w1 = oi.width() * oi.length, - w2 = ai.width() * ai.length, - */ - t = default_text; - h1 = $("<"+"div />", { css : { "position" : "absolute", "top" : "-200px", "left" : (rtl ? "0px" : "-1000px"), "visibility" : "hidden" } }).appendTo("body"); - h2 = $("<"+"input />", { - "value" : t, - "class" : "jstree-rename-input", - // "size" : t.length, - "css" : { - "padding" : "0", - "border" : "1px solid silver", - "box-sizing" : "border-box", - "display" : "inline-block", - "height" : (this._data.core.li_height) + "px", - "lineHeight" : (this._data.core.li_height) + "px", - "width" : "150px" // will be set a bit further down - }, - "blur" : $.proxy(function (e) { - e.stopImmediatePropagation(); - e.preventDefault(); - var i = s.children(".jstree-rename-input"), - v = i.val(), - f = this.settings.core.force_text, - nv; - if(v === "") { v = t; } - h1.remove(); - s.replaceWith(a); - s.remove(); - t = f ? t : $('
    ').append($.parseHTML(t)).html(); - this.set_text(obj, t); - nv = !!this.rename_node(obj, f ? $('
    ').text(v).text() : $('
    ').append($.parseHTML(v)).html()); - if(!nv) { - this.set_text(obj, t); // move this up? and fix #483 - } - this._data.core.focused = tmp.id; - setTimeout($.proxy(function () { - var node = this.get_node(tmp.id, true); - if(node.length) { - this._data.core.focused = tmp.id; - node.children('.jstree-anchor').focus(); - } - }, this), 0); - if(callback) { - callback.call(this, tmp, nv, cancel); - } - h2 = null; - }, this), - "keydown" : function (e) { - var key = e.which; - if(key === 27) { - cancel = true; - this.value = t; - } - if(key === 27 || key === 13 || key === 37 || key === 38 || key === 39 || key === 40 || key === 32) { - e.stopImmediatePropagation(); - } - if(key === 27 || key === 13) { - e.preventDefault(); - this.blur(); - } - }, - "click" : function (e) { e.stopImmediatePropagation(); }, - "mousedown" : function (e) { e.stopImmediatePropagation(); }, - "keyup" : function (e) { - h2.width(Math.min(h1.text("pW" + this.value).width(),w)); - }, - "keypress" : function(e) { - if(e.which === 13) { return false; } - } - }); - fn = { - fontFamily : a.css('fontFamily') || '', - fontSize : a.css('fontSize') || '', - fontWeight : a.css('fontWeight') || '', - fontStyle : a.css('fontStyle') || '', - fontStretch : a.css('fontStretch') || '', - fontVariant : a.css('fontVariant') || '', - letterSpacing : a.css('letterSpacing') || '', - wordSpacing : a.css('wordSpacing') || '' - }; - s.attr('class', a.attr('class')).append(a.contents().clone()).append(h2); - a.replaceWith(s); - h1.css(fn); - h2.css(fn).width(Math.min(h1.text("pW" + h2[0].value).width(),w))[0].select(); - $(document).one('mousedown.jstree touchstart.jstree dnd_start.vakata', function (e) { - if (h2 && e.target !== h2) { - $(h2).blur(); - } - }); - }, - - - /** - * changes the theme - * @name set_theme(theme_name [, theme_url]) - * @param {String} theme_name the name of the new theme to apply - * @param {mixed} theme_url the location of the CSS file for this theme. Omit or set to `false` if you manually included the file. Set to `true` to autoload from the `core.themes.dir` directory. - * @trigger set_theme.jstree - */ - set_theme : function (theme_name, theme_url) { - if(!theme_name) { return false; } - if(theme_url === true) { - var dir = this.settings.core.themes.dir; - if(!dir) { dir = $.jstree.path + '/themes'; } - theme_url = dir + '/' + theme_name + '/style.css'; - } - if(theme_url && $.inArray(theme_url, themes_loaded) === -1) { - $('head').append('<'+'link rel="stylesheet" href="' + theme_url + '" type="text/css" />'); - themes_loaded.push(theme_url); - } - if(this._data.core.themes.name) { - this.element.removeClass('jstree-' + this._data.core.themes.name); - } - this._data.core.themes.name = theme_name; - this.element.addClass('jstree-' + theme_name); - this.element[this.settings.core.themes.responsive ? 'addClass' : 'removeClass' ]('jstree-' + theme_name + '-responsive'); - /** - * triggered when a theme is set - * @event - * @name set_theme.jstree - * @param {String} theme the new theme - */ - this.trigger('set_theme', { 'theme' : theme_name }); - }, - /** - * gets the name of the currently applied theme name - * @name get_theme() - * @return {String} - */ - get_theme : function () { return this._data.core.themes.name; }, - /** - * changes the theme variant (if the theme has variants) - * @name set_theme_variant(variant_name) - * @param {String|Boolean} variant_name the variant to apply (if `false` is used the current variant is removed) - */ - set_theme_variant : function (variant_name) { - if(this._data.core.themes.variant) { - this.element.removeClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant); - } - this._data.core.themes.variant = variant_name; - if(variant_name) { - this.element.addClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant); - } - }, - /** - * gets the name of the currently applied theme variant - * @name get_theme() - * @return {String} - */ - get_theme_variant : function () { return this._data.core.themes.variant; }, - /** - * shows a striped background on the container (if the theme supports it) - * @name show_stripes() - */ - show_stripes : function () { - this._data.core.themes.stripes = true; - this.get_container_ul().addClass("jstree-striped"); - /** - * triggered when stripes are shown - * @event - * @name show_stripes.jstree - */ - this.trigger('show_stripes'); - }, - /** - * hides the striped background on the container - * @name hide_stripes() - */ - hide_stripes : function () { - this._data.core.themes.stripes = false; - this.get_container_ul().removeClass("jstree-striped"); - /** - * triggered when stripes are hidden - * @event - * @name hide_stripes.jstree - */ - this.trigger('hide_stripes'); - }, - /** - * toggles the striped background on the container - * @name toggle_stripes() - */ - toggle_stripes : function () { if(this._data.core.themes.stripes) { this.hide_stripes(); } else { this.show_stripes(); } }, - /** - * shows the connecting dots (if the theme supports it) - * @name show_dots() - */ - show_dots : function () { - this._data.core.themes.dots = true; - this.get_container_ul().removeClass("jstree-no-dots"); - /** - * triggered when dots are shown - * @event - * @name show_dots.jstree - */ - this.trigger('show_dots'); - }, - /** - * hides the connecting dots - * @name hide_dots() - */ - hide_dots : function () { - this._data.core.themes.dots = false; - this.get_container_ul().addClass("jstree-no-dots"); - /** - * triggered when dots are hidden - * @event - * @name hide_dots.jstree - */ - this.trigger('hide_dots'); - }, - /** - * toggles the connecting dots - * @name toggle_dots() - */ - toggle_dots : function () { if(this._data.core.themes.dots) { this.hide_dots(); } else { this.show_dots(); } }, - /** - * show the node icons - * @name show_icons() - */ - show_icons : function () { - this._data.core.themes.icons = true; - this.get_container_ul().removeClass("jstree-no-icons"); - /** - * triggered when icons are shown - * @event - * @name show_icons.jstree - */ - this.trigger('show_icons'); - }, - /** - * hide the node icons - * @name hide_icons() - */ - hide_icons : function () { - this._data.core.themes.icons = false; - this.get_container_ul().addClass("jstree-no-icons"); - /** - * triggered when icons are hidden - * @event - * @name hide_icons.jstree - */ - this.trigger('hide_icons'); - }, - /** - * toggle the node icons - * @name toggle_icons() - */ - toggle_icons : function () { if(this._data.core.themes.icons) { this.hide_icons(); } else { this.show_icons(); } }, - /** - * show the node ellipsis - * @name show_icons() - */ - show_ellipsis : function () { - this._data.core.themes.ellipsis = true; - this.get_container_ul().addClass("jstree-ellipsis"); - /** - * triggered when ellisis is shown - * @event - * @name show_ellipsis.jstree - */ - this.trigger('show_ellipsis'); - }, - /** - * hide the node ellipsis - * @name hide_ellipsis() - */ - hide_ellipsis : function () { - this._data.core.themes.ellipsis = false; - this.get_container_ul().removeClass("jstree-ellipsis"); - /** - * triggered when ellisis is hidden - * @event - * @name hide_ellipsis.jstree - */ - this.trigger('hide_ellipsis'); - }, - /** - * toggle the node ellipsis - * @name toggle_icons() - */ - toggle_ellipsis : function () { if(this._data.core.themes.ellipsis) { this.hide_ellipsis(); } else { this.show_ellipsis(); } }, - /** - * set the node icon for a node - * @name set_icon(obj, icon) - * @param {mixed} obj - * @param {String} icon the new icon - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class - */ - set_icon : function (obj, icon) { - var t1, t2, dom, old; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.set_icon(obj[t1], icon); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - old = obj.icon; - obj.icon = icon === true || icon === null || icon === undefined || icon === '' ? true : icon; - dom = this.get_node(obj, true).children(".jstree-anchor").children(".jstree-themeicon"); - if(icon === false) { - dom.removeClass('jstree-themeicon-custom ' + old).css("background","").removeAttr("rel"); - this.hide_icon(obj); - } - else if(icon === true || icon === null || icon === undefined || icon === '') { - dom.removeClass('jstree-themeicon-custom ' + old).css("background","").removeAttr("rel"); - if(old === false) { this.show_icon(obj); } - } - else if(icon.indexOf("/") === -1 && icon.indexOf(".") === -1) { - dom.removeClass(old).css("background",""); - dom.addClass(icon + ' jstree-themeicon-custom').attr("rel",icon); - if(old === false) { this.show_icon(obj); } - } - else { - dom.removeClass(old).css("background",""); - dom.addClass('jstree-themeicon-custom').css("background", "url('" + icon + "') center center no-repeat").attr("rel",icon); - if(old === false) { this.show_icon(obj); } - } - return true; - }, - /** - * get the node icon for a node - * @name get_icon(obj) - * @param {mixed} obj - * @return {String} - */ - get_icon : function (obj) { - obj = this.get_node(obj); - return (!obj || obj.id === $.jstree.root) ? false : obj.icon; - }, - /** - * hide the icon on an individual node - * @name hide_icon(obj) - * @param {mixed} obj - */ - hide_icon : function (obj) { - var t1, t2; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.hide_icon(obj[t1]); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj === $.jstree.root) { return false; } - obj.icon = false; - this.get_node(obj, true).children(".jstree-anchor").children(".jstree-themeicon").addClass('jstree-themeicon-hidden'); - return true; - }, - /** - * show the icon on an individual node - * @name show_icon(obj) - * @param {mixed} obj - */ - show_icon : function (obj) { - var t1, t2, dom; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.show_icon(obj[t1]); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj === $.jstree.root) { return false; } - dom = this.get_node(obj, true); - obj.icon = dom.length ? dom.children(".jstree-anchor").children(".jstree-themeicon").attr('rel') : true; - if(!obj.icon) { obj.icon = true; } - dom.children(".jstree-anchor").children(".jstree-themeicon").removeClass('jstree-themeicon-hidden'); - return true; - } - }; - - // helpers - $.vakata = {}; - // collect attributes - $.vakata.attributes = function(node, with_values) { - node = $(node)[0]; - var attr = with_values ? {} : []; - if(node && node.attributes) { - $.each(node.attributes, function (i, v) { - if($.inArray(v.name.toLowerCase(),['style','contenteditable','hasfocus','tabindex']) !== -1) { return; } - if(v.value !== null && $.trim(v.value) !== '') { - if(with_values) { attr[v.name] = v.value; } - else { attr.push(v.name); } - } - }); - } - return attr; - }; - $.vakata.array_unique = function(array) { - var a = [], i, j, l, o = {}; - for(i = 0, l = array.length; i < l; i++) { - if(o[array[i]] === undefined) { - a.push(array[i]); - o[array[i]] = true; - } - } - return a; - }; - // remove item from array - $.vakata.array_remove = function(array, from) { - array.splice(from, 1); - return array; - //var rest = array.slice((to || from) + 1 || array.length); - //array.length = from < 0 ? array.length + from : from; - //array.push.apply(array, rest); - //return array; - }; - // remove item from array - $.vakata.array_remove_item = function(array, item) { - var tmp = $.inArray(item, array); - return tmp !== -1 ? $.vakata.array_remove(array, tmp) : array; - }; - $.vakata.array_filter = function(c,a,b,d,e) { - if (c.filter) { - return c.filter(a, b); - } - d=[]; - for (e in c) { - if (~~e+''===e+'' && e>=0 && a.call(b,c[e],+e,c)) { - d.push(c[e]); - } - } - return d; - }; - - -/** - * ### Changed plugin - * - * This plugin adds more information to the `changed.jstree` event. The new data is contained in the `changed` event data property, and contains a lists of `selected` and `deselected` nodes. - */ - - $.jstree.plugins.changed = function (options, parent) { - var last = []; - this.trigger = function (ev, data) { - var i, j; - if(!data) { - data = {}; - } - if(ev.replace('.jstree','') === 'changed') { - data.changed = { selected : [], deselected : [] }; - var tmp = {}; - for(i = 0, j = last.length; i < j; i++) { - tmp[last[i]] = 1; - } - for(i = 0, j = data.selected.length; i < j; i++) { - if(!tmp[data.selected[i]]) { - data.changed.selected.push(data.selected[i]); - } - else { - tmp[data.selected[i]] = 2; - } - } - for(i = 0, j = last.length; i < j; i++) { - if(tmp[last[i]] === 1) { - data.changed.deselected.push(last[i]); - } - } - last = data.selected.slice(); - } - /** - * triggered when selection changes (the "changed" plugin enhances the original event with more data) - * @event - * @name changed.jstree - * @param {Object} node - * @param {Object} action the action that caused the selection to change - * @param {Array} selected the current selection - * @param {Object} changed an object containing two properties `selected` and `deselected` - both arrays of node IDs, which were selected or deselected since the last changed event - * @param {Object} event the event (if any) that triggered this changed event - * @plugin changed - */ - parent.trigger.call(this, ev, data); - }; - this.refresh = function (skip_loading, forget_state) { - last = []; - return parent.refresh.apply(this, arguments); - }; - }; - -/** - * ### Checkbox plugin - * - * This plugin renders checkbox icons in front of each node, making multiple selection much easier. - * It also supports tri-state behavior, meaning that if a node has a few of its children checked it will be rendered as undetermined, and state will be propagated up. - */ - - var _i = document.createElement('I'); - _i.className = 'jstree-icon jstree-checkbox'; - _i.setAttribute('role', 'presentation'); - /** - * stores all defaults for the checkbox plugin - * @name $.jstree.defaults.checkbox - * @plugin checkbox - */ - $.jstree.defaults.checkbox = { - /** - * a boolean indicating if checkboxes should be visible (can be changed at a later time using `show_checkboxes()` and `hide_checkboxes`). Defaults to `true`. - * @name $.jstree.defaults.checkbox.visible - * @plugin checkbox - */ - visible : true, - /** - * a boolean indicating if checkboxes should cascade down and have an undetermined state. Defaults to `true`. - * @name $.jstree.defaults.checkbox.three_state - * @plugin checkbox - */ - three_state : true, - /** - * a boolean indicating if clicking anywhere on the node should act as clicking on the checkbox. Defaults to `true`. - * @name $.jstree.defaults.checkbox.whole_node - * @plugin checkbox - */ - whole_node : true, - /** - * a boolean indicating if the selected style of a node should be kept, or removed. Defaults to `true`. - * @name $.jstree.defaults.checkbox.keep_selected_style - * @plugin checkbox - */ - keep_selected_style : true, - /** - * This setting controls how cascading and undetermined nodes are applied. - * If 'up' is in the string - cascading up is enabled, if 'down' is in the string - cascading down is enabled, if 'undetermined' is in the string - undetermined nodes will be used. - * If `three_state` is set to `true` this setting is automatically set to 'up+down+undetermined'. Defaults to ''. - * @name $.jstree.defaults.checkbox.cascade - * @plugin checkbox - */ - cascade : '', - /** - * This setting controls if checkbox are bound to the general tree selection or to an internal array maintained by the checkbox plugin. Defaults to `true`, only set to `false` if you know exactly what you are doing. - * @name $.jstree.defaults.checkbox.tie_selection - * @plugin checkbox - */ - tie_selection : true, - - /** - * This setting controls if cascading down affects disabled checkboxes - * @name $.jstree.defaults.checkbox.cascade_to_disabled - * @plugin checkbox - */ - cascade_to_disabled : true, - - /** - * This setting controls if cascading down affects hidden checkboxes - * @name $.jstree.defaults.checkbox.cascade_to_hidden - * @plugin checkbox - */ - cascade_to_hidden : true - }; - $.jstree.plugins.checkbox = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - this._data.checkbox.uto = false; - this._data.checkbox.selected = []; - if(this.settings.checkbox.three_state) { - this.settings.checkbox.cascade = 'up+down+undetermined'; - } - this.element - .on("init.jstree", $.proxy(function () { - this._data.checkbox.visible = this.settings.checkbox.visible; - if(!this.settings.checkbox.keep_selected_style) { - this.element.addClass('jstree-checkbox-no-clicked'); - } - if(this.settings.checkbox.tie_selection) { - this.element.addClass('jstree-checkbox-selection'); - } - }, this)) - .on("loading.jstree", $.proxy(function () { - this[ this._data.checkbox.visible ? 'show_checkboxes' : 'hide_checkboxes' ](); - }, this)); - if(this.settings.checkbox.cascade.indexOf('undetermined') !== -1) { - this.element - .on('changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree', $.proxy(function () { - // only if undetermined is in setting - if(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); } - this._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50); - }, this)); - } - if(!this.settings.checkbox.tie_selection) { - this.element - .on('model.jstree', $.proxy(function (e, data) { - var m = this._model.data, - p = m[data.parent], - dpc = data.nodes, - i, j; - for(i = 0, j = dpc.length; i < j; i++) { - m[dpc[i]].state.checked = m[dpc[i]].state.checked || (m[dpc[i]].original && m[dpc[i]].original.state && m[dpc[i]].original.state.checked); - if(m[dpc[i]].state.checked) { - this._data.checkbox.selected.push(dpc[i]); - } - } - }, this)); - } - if(this.settings.checkbox.cascade.indexOf('up') !== -1 || this.settings.checkbox.cascade.indexOf('down') !== -1) { - this.element - .on('model.jstree', $.proxy(function (e, data) { - var m = this._model.data, - p = m[data.parent], - dpc = data.nodes, - chd = [], - c, i, j, k, l, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection; - - if(s.indexOf('down') !== -1) { - // apply down - if(p.state[ t ? 'selected' : 'checked' ]) { - for(i = 0, j = dpc.length; i < j; i++) { - m[dpc[i]].state[ t ? 'selected' : 'checked' ] = true; - } - - this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(dpc); - } - else { - for(i = 0, j = dpc.length; i < j; i++) { - if(m[dpc[i]].state[ t ? 'selected' : 'checked' ]) { - for(k = 0, l = m[dpc[i]].children_d.length; k < l; k++) { - m[m[dpc[i]].children_d[k]].state[ t ? 'selected' : 'checked' ] = true; - } - this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(m[dpc[i]].children_d); - } - } - } - } - - if(s.indexOf('up') !== -1) { - // apply up - for(i = 0, j = p.children_d.length; i < j; i++) { - if(!m[p.children_d[i]].children.length) { - chd.push(m[p.children_d[i]].parent); - } - } - chd = $.vakata.array_unique(chd); - for(k = 0, l = chd.length; k < l; k++) { - p = m[chd[k]]; - while(p && p.id !== $.jstree.root) { - c = 0; - for(i = 0, j = p.children.length; i < j; i++) { - c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; - } - if(c === j) { - p.state[ t ? 'selected' : 'checked' ] = true; - this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); - tmp = this.get_node(p, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', true).children('.jstree-anchor').addClass( t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - break; - } - p = this.get_node(p.parent); - } - } - } - - this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected); - }, this)) - .on(this.settings.checkbox.tie_selection ? 'select_node.jstree' : 'check_node.jstree', $.proxy(function (e, data) { - var self = this, - obj = data.node, - m = this._model.data, - par = this.get_node(obj.parent), - i, j, c, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection, - sel = {}, cur = this._data[ t ? 'core' : 'checkbox' ].selected; - - for (i = 0, j = cur.length; i < j; i++) { - sel[cur[i]] = true; - } - - // apply down - if(s.indexOf('down') !== -1) { - //this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected.concat(obj.children_d)); - var selectedIds = this._cascade_new_checked_state(obj.id, true); - var temp = obj.children_d.concat(obj.id); - for (i = 0, j = temp.length; i < j; i++) { - if (selectedIds.indexOf(temp[i]) > -1) { - sel[temp[i]] = true; - } - else { - delete sel[temp[i]]; - } - } - } - - // apply up - if(s.indexOf('up') !== -1) { - while(par && par.id !== $.jstree.root) { - c = 0; - for(i = 0, j = par.children.length; i < j; i++) { - c += m[par.children[i]].state[ t ? 'selected' : 'checked' ]; - } - if(c === j) { - par.state[ t ? 'selected' : 'checked' ] = true; - sel[par.id] = true; - //this._data[ t ? 'core' : 'checkbox' ].selected.push(par.id); - tmp = this.get_node(par, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - break; - } - par = this.get_node(par.parent); - } - } - - cur = []; - for (i in sel) { - if (sel.hasOwnProperty(i)) { - cur.push(i); - } - } - this._data[ t ? 'core' : 'checkbox' ].selected = cur; - }, this)) - .on(this.settings.checkbox.tie_selection ? 'deselect_all.jstree' : 'uncheck_all.jstree', $.proxy(function (e, data) { - var obj = this.get_node($.jstree.root), - m = this._model.data, - i, j, tmp; - for(i = 0, j = obj.children_d.length; i < j; i++) { - tmp = m[obj.children_d[i]]; - if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { - tmp.original.state.undetermined = false; - } - } - }, this)) - .on(this.settings.checkbox.tie_selection ? 'deselect_node.jstree' : 'uncheck_node.jstree', $.proxy(function (e, data) { - var self = this, - obj = data.node, - dom = this.get_node(obj, true), - i, j, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection, - cur = this._data[ t ? 'core' : 'checkbox' ].selected, sel = {}, - stillSelectedIds = [], - allIds = obj.children_d.concat(obj.id); - - // apply down - if(s.indexOf('down') !== -1) { - var selectedIds = this._cascade_new_checked_state(obj.id, false); - - cur = cur.filter(function(id) { - return allIds.indexOf(id) === -1 || selectedIds.indexOf(id) > -1; - }); - } - - // only apply up if cascade up is enabled and if this node is not selected - // (if all child nodes are disabled and cascade_to_disabled === false then this node will till be selected). - if(s.indexOf('up') !== -1 && cur.indexOf(obj.id) === -1) { - for(i = 0, j = obj.parents.length; i < j; i++) { - tmp = this._model.data[obj.parents[i]]; - tmp.state[ t ? 'selected' : 'checked' ] = false; - if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) { - tmp.original.state.undetermined = false; - } - tmp = this.get_node(obj.parents[i], true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - - cur = cur.filter(function(id) { - return obj.parents.indexOf(id) === -1; - }); - } - - this._data[ t ? 'core' : 'checkbox' ].selected = cur; - }, this)); - } - if(this.settings.checkbox.cascade.indexOf('up') !== -1) { - this.element - .on('delete_node.jstree', $.proxy(function (e, data) { - // apply up (whole handler) - var p = this.get_node(data.parent), - m = this._model.data, - i, j, c, tmp, t = this.settings.checkbox.tie_selection; - while(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) { - c = 0; - for(i = 0, j = p.children.length; i < j; i++) { - c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; - } - if(j > 0 && c === j) { - p.state[ t ? 'selected' : 'checked' ] = true; - this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); - tmp = this.get_node(p, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - break; - } - p = this.get_node(p.parent); - } - }, this)) - .on('move_node.jstree', $.proxy(function (e, data) { - // apply up (whole handler) - var is_multi = data.is_multi, - old_par = data.old_parent, - new_par = this.get_node(data.parent), - m = this._model.data, - p, c, i, j, tmp, t = this.settings.checkbox.tie_selection; - if(!is_multi) { - p = this.get_node(old_par); - while(p && p.id !== $.jstree.root && !p.state[ t ? 'selected' : 'checked' ]) { - c = 0; - for(i = 0, j = p.children.length; i < j; i++) { - c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; - } - if(j > 0 && c === j) { - p.state[ t ? 'selected' : 'checked' ] = true; - this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); - tmp = this.get_node(p, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - break; - } - p = this.get_node(p.parent); - } - } - p = new_par; - while(p && p.id !== $.jstree.root) { - c = 0; - for(i = 0, j = p.children.length; i < j; i++) { - c += m[p.children[i]].state[ t ? 'selected' : 'checked' ]; - } - if(c === j) { - if(!p.state[ t ? 'selected' : 'checked' ]) { - p.state[ t ? 'selected' : 'checked' ] = true; - this._data[ t ? 'core' : 'checkbox' ].selected.push(p.id); - tmp = this.get_node(p, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - } - else { - if(p.state[ t ? 'selected' : 'checked' ]) { - p.state[ t ? 'selected' : 'checked' ] = false; - this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_remove_item(this._data[ t ? 'core' : 'checkbox' ].selected, p.id); - tmp = this.get_node(p, true); - if(tmp && tmp.length) { - tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - break; - } - } - p = this.get_node(p.parent); - } - }, this)); - } - }; - - /** - * set the undetermined state where and if necessary. Used internally. - * @private - * @name _undetermined() - * @plugin checkbox - */ - this._undetermined = function () { - if(this.element === null) { return; } - var i, j, k, l, o = {}, m = this._model.data, t = this.settings.checkbox.tie_selection, s = this._data[ t ? 'core' : 'checkbox' ].selected, p = [], tt = this; - for(i = 0, j = s.length; i < j; i++) { - if(m[s[i]] && m[s[i]].parents) { - for(k = 0, l = m[s[i]].parents.length; k < l; k++) { - if(o[m[s[i]].parents[k]] !== undefined) { - break; - } - if(m[s[i]].parents[k] !== $.jstree.root) { - o[m[s[i]].parents[k]] = true; - p.push(m[s[i]].parents[k]); - } - } - } - } - // attempt for server side undetermined state - this.element.find('.jstree-closed').not(':has(.jstree-children)') - .each(function () { - var tmp = tt.get_node(this), tmp2; - - if(!tmp) { return; } - - if(!tmp.state.loaded) { - if(tmp.original && tmp.original.state && tmp.original.state.undetermined && tmp.original.state.undetermined === true) { - if(o[tmp.id] === undefined && tmp.id !== $.jstree.root) { - o[tmp.id] = true; - p.push(tmp.id); - } - for(k = 0, l = tmp.parents.length; k < l; k++) { - if(o[tmp.parents[k]] === undefined && tmp.parents[k] !== $.jstree.root) { - o[tmp.parents[k]] = true; - p.push(tmp.parents[k]); - } - } - } - } - else { - for(i = 0, j = tmp.children_d.length; i < j; i++) { - tmp2 = m[tmp.children_d[i]]; - if(!tmp2.state.loaded && tmp2.original && tmp2.original.state && tmp2.original.state.undetermined && tmp2.original.state.undetermined === true) { - if(o[tmp2.id] === undefined && tmp2.id !== $.jstree.root) { - o[tmp2.id] = true; - p.push(tmp2.id); - } - for(k = 0, l = tmp2.parents.length; k < l; k++) { - if(o[tmp2.parents[k]] === undefined && tmp2.parents[k] !== $.jstree.root) { - o[tmp2.parents[k]] = true; - p.push(tmp2.parents[k]); - } - } - } - } - } - }); - - this.element.find('.jstree-undetermined').removeClass('jstree-undetermined'); - for(i = 0, j = p.length; i < j; i++) { - if(!m[p[i]].state[ t ? 'selected' : 'checked' ]) { - s = this.get_node(p[i], true); - if(s && s.length) { - s.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-undetermined'); - } - } - } - }; - this.redraw_node = function(obj, deep, is_callback, force_render) { - obj = parent.redraw_node.apply(this, arguments); - if(obj) { - var i, j, tmp = null, icon = null; - for(i = 0, j = obj.childNodes.length; i < j; i++) { - if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { - tmp = obj.childNodes[i]; - break; - } - } - if(tmp) { - if(!this.settings.checkbox.tie_selection && this._model.data[obj.id].state.checked) { tmp.className += ' jstree-checked'; } - icon = _i.cloneNode(false); - if(this._model.data[obj.id].state.checkbox_disabled) { icon.className += ' jstree-checkbox-disabled'; } - tmp.insertBefore(icon, tmp.childNodes[0]); - } - } - if(!is_callback && this.settings.checkbox.cascade.indexOf('undetermined') !== -1) { - if(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); } - this._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50); - } - return obj; - }; - /** - * show the node checkbox icons - * @name show_checkboxes() - * @plugin checkbox - */ - this.show_checkboxes = function () { this._data.core.themes.checkboxes = true; this.get_container_ul().removeClass("jstree-no-checkboxes"); }; - /** - * hide the node checkbox icons - * @name hide_checkboxes() - * @plugin checkbox - */ - this.hide_checkboxes = function () { this._data.core.themes.checkboxes = false; this.get_container_ul().addClass("jstree-no-checkboxes"); }; - /** - * toggle the node icons - * @name toggle_checkboxes() - * @plugin checkbox - */ - this.toggle_checkboxes = function () { if(this._data.core.themes.checkboxes) { this.hide_checkboxes(); } else { this.show_checkboxes(); } }; - /** - * checks if a node is in an undetermined state - * @name is_undetermined(obj) - * @param {mixed} obj - * @return {Boolean} - */ - this.is_undetermined = function (obj) { - obj = this.get_node(obj); - var s = this.settings.checkbox.cascade, i, j, t = this.settings.checkbox.tie_selection, d = this._data[ t ? 'core' : 'checkbox' ].selected, m = this._model.data; - if(!obj || obj.state[ t ? 'selected' : 'checked' ] === true || s.indexOf('undetermined') === -1 || (s.indexOf('down') === -1 && s.indexOf('up') === -1)) { - return false; - } - if(!obj.state.loaded && obj.original.state.undetermined === true) { - return true; - } - for(i = 0, j = obj.children_d.length; i < j; i++) { - if($.inArray(obj.children_d[i], d) !== -1 || (!m[obj.children_d[i]].state.loaded && m[obj.children_d[i]].original.state.undetermined)) { - return true; - } - } - return false; - }; - /** - * disable a node's checkbox - * @name disable_checkbox(obj) - * @param {mixed} obj an array can be used too - * @trigger disable_checkbox.jstree - * @plugin checkbox - */ - this.disable_checkbox = function (obj) { - var t1, t2, dom; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.disable_checkbox(obj[t1]); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { - return false; - } - dom = this.get_node(obj, true); - if(!obj.state.checkbox_disabled) { - obj.state.checkbox_disabled = true; - if(dom && dom.length) { - dom.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-checkbox-disabled'); - } - /** - * triggered when an node's checkbox is disabled - * @event - * @name disable_checkbox.jstree - * @param {Object} node - * @plugin checkbox - */ - this.trigger('disable_checkbox', { 'node' : obj }); - } - }; - /** - * enable a node's checkbox - * @name disable_checkbox(obj) - * @param {mixed} obj an array can be used too - * @trigger enable_checkbox.jstree - * @plugin checkbox - */ - this.enable_checkbox = function (obj) { - var t1, t2, dom; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.enable_checkbox(obj[t1]); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { - return false; - } - dom = this.get_node(obj, true); - if(obj.state.checkbox_disabled) { - obj.state.checkbox_disabled = false; - if(dom && dom.length) { - dom.children('.jstree-anchor').children('.jstree-checkbox').removeClass('jstree-checkbox-disabled'); - } - /** - * triggered when an node's checkbox is enabled - * @event - * @name enable_checkbox.jstree - * @param {Object} node - * @plugin checkbox - */ - this.trigger('enable_checkbox', { 'node' : obj }); - } - }; - - this.activate_node = function (obj, e) { - if($(e.target).hasClass('jstree-checkbox-disabled')) { - return false; - } - if(this.settings.checkbox.tie_selection && (this.settings.checkbox.whole_node || $(e.target).hasClass('jstree-checkbox'))) { - e.ctrlKey = true; - } - if(this.settings.checkbox.tie_selection || (!this.settings.checkbox.whole_node && !$(e.target).hasClass('jstree-checkbox'))) { - return parent.activate_node.call(this, obj, e); - } - if(this.is_disabled(obj)) { - return false; - } - if(this.is_checked(obj)) { - this.uncheck_node(obj, e); - } - else { - this.check_node(obj, e); - } - this.trigger('activate_node', { 'node' : this.get_node(obj) }); - }; - - /** - * Unchecks a node and all its descendants. This function does NOT affect hidden and disabled nodes (or their descendants). - * However if these unaffected nodes are already selected their ids will be included in the returned array. - * @param id - * @param checkedState - * @returns {Array} Array of all node id's (in this tree branch) that are checked. - */ - this._cascade_new_checked_state = function(id, checkedState) { - var self = this; - var t = this.settings.checkbox.tie_selection; - var node = this._model.data[id]; - var selectedNodeIds = []; - var selectedChildrenIds = [], i, j, selectedChildIds; - - if ( - (this.settings.checkbox.cascade_to_disabled || !node.state.disabled) && - (this.settings.checkbox.cascade_to_hidden || !node.state.hidden) - ) { - //First try and check/uncheck the children - if (node.children) { - for (i = 0, j = node.children.length; i < j; i++) { - var childId = node.children[i]; - selectedChildIds = self._cascade_new_checked_state(childId, checkedState); - selectedNodeIds = selectedNodeIds.concat(selectedChildIds); - if (selectedChildIds.indexOf(childId) > -1) { - selectedChildrenIds.push(childId); - } - } - } - - var dom = self.get_node(node, true); - - //A node's state is undetermined if some but not all of it's children are checked/selected . - var undetermined = selectedChildrenIds.length > 0 && selectedChildrenIds.length < node.children.length; - - if(node.original && node.original.state && node.original.state.undetermined) { - node.original.state.undetermined = undetermined; - } - - //If a node is undetermined then remove selected class - if (undetermined) { - node.state[ t ? 'selected' : 'checked' ] = false; - dom.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - //Otherwise, if the checkedState === true (i.e. the node is being checked now) and all of the node's children are checked (if it has any children), - //check the node and style it correctly. - else if (checkedState && selectedChildrenIds.length === node.children.length) { - node.state[ t ? 'selected' : 'checked' ] = checkedState; - selectedNodeIds.push(node.id); - - dom.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - else { - node.state[ t ? 'selected' : 'checked' ] = false; - dom.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked'); - } - } - else { - selectedChildIds = this.get_checked_descendants(id); - - if (node.state[ t ? 'selected' : 'checked' ]) { - selectedChildIds.push(node.id); - } - - selectedNodeIds = selectedNodeIds.concat(selectedChildIds); - } - - return selectedNodeIds; - }; - - /** - * Gets ids of nodes selected in branch (of tree) specified by id (does not include the node specified by id) - * @param id - */ - this.get_checked_descendants = function(id) { - var self = this; - var t = self.settings.checkbox.tie_selection; - var node = self._model.data[id]; - - return node.children_d.filter(function(_id) { - return self._model.data[_id].state[ t ? 'selected' : 'checked' ]; - }); - }; - - /** - * check a node (only if tie_selection in checkbox settings is false, otherwise select_node will be called internally) - * @name check_node(obj) - * @param {mixed} obj an array can be used to check multiple nodes - * @trigger check_node.jstree - * @plugin checkbox - */ - this.check_node = function (obj, e) { - if(this.settings.checkbox.tie_selection) { return this.select_node(obj, false, true, e); } - var dom, t1, t2, th; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.check_node(obj[t1], e); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { - return false; - } - dom = this.get_node(obj, true); - if(!obj.state.checked) { - obj.state.checked = true; - this._data.checkbox.selected.push(obj.id); - if(dom && dom.length) { - dom.children('.jstree-anchor').addClass('jstree-checked'); - } - /** - * triggered when an node is checked (only if tie_selection in checkbox settings is false) - * @event - * @name check_node.jstree - * @param {Object} node - * @param {Array} selected the current selection - * @param {Object} event the event (if any) that triggered this check_node - * @plugin checkbox - */ - this.trigger('check_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e }); - } - }; - /** - * uncheck a node (only if tie_selection in checkbox settings is false, otherwise deselect_node will be called internally) - * @name uncheck_node(obj) - * @param {mixed} obj an array can be used to uncheck multiple nodes - * @trigger uncheck_node.jstree - * @plugin checkbox - */ - this.uncheck_node = function (obj, e) { - if(this.settings.checkbox.tie_selection) { return this.deselect_node(obj, false, e); } - var t1, t2, dom; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.uncheck_node(obj[t1], e); - } - return true; - } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { - return false; - } - dom = this.get_node(obj, true); - if(obj.state.checked) { - obj.state.checked = false; - this._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, obj.id); - if(dom.length) { - dom.children('.jstree-anchor').removeClass('jstree-checked'); - } - /** - * triggered when an node is unchecked (only if tie_selection in checkbox settings is false) - * @event - * @name uncheck_node.jstree - * @param {Object} node - * @param {Array} selected the current selection - * @param {Object} event the event (if any) that triggered this uncheck_node - * @plugin checkbox - */ - this.trigger('uncheck_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e }); - } - }; - - /** - * checks all nodes in the tree (only if tie_selection in checkbox settings is false, otherwise select_all will be called internally) - * @name check_all() - * @trigger check_all.jstree, changed.jstree - * @plugin checkbox - */ - this.check_all = function () { - if(this.settings.checkbox.tie_selection) { return this.select_all(); } - var tmp = this._data.checkbox.selected.concat([]), i, j; - this._data.checkbox.selected = this._model.data[$.jstree.root].children_d.concat(); - for(i = 0, j = this._data.checkbox.selected.length; i < j; i++) { - if(this._model.data[this._data.checkbox.selected[i]]) { - this._model.data[this._data.checkbox.selected[i]].state.checked = true; - } - } - this.redraw(true); - /** - * triggered when all nodes are checked (only if tie_selection in checkbox settings is false) - * @event - * @name check_all.jstree - * @param {Array} selected the current selection - * @plugin checkbox - */ - this.trigger('check_all', { 'selected' : this._data.checkbox.selected }); - }; - /** - * uncheck all checked nodes (only if tie_selection in checkbox settings is false, otherwise deselect_all will be called internally) - * @name uncheck_all() - * @trigger uncheck_all.jstree - * @plugin checkbox - */ - this.uncheck_all = function () { - if(this.settings.checkbox.tie_selection) { return this.deselect_all(); } - var tmp = this._data.checkbox.selected.concat([]), i, j; - for(i = 0, j = this._data.checkbox.selected.length; i < j; i++) { - if(this._model.data[this._data.checkbox.selected[i]]) { - this._model.data[this._data.checkbox.selected[i]].state.checked = false; - } - } - this._data.checkbox.selected = []; - this.element.find('.jstree-checked').removeClass('jstree-checked'); - /** - * triggered when all nodes are unchecked (only if tie_selection in checkbox settings is false) - * @event - * @name uncheck_all.jstree - * @param {Object} node the previous selection - * @param {Array} selected the current selection - * @plugin checkbox - */ - this.trigger('uncheck_all', { 'selected' : this._data.checkbox.selected, 'node' : tmp }); - }; - /** - * checks if a node is checked (if tie_selection is on in the settings this function will return the same as is_selected) - * @name is_checked(obj) - * @param {mixed} obj - * @return {Boolean} - * @plugin checkbox - */ - this.is_checked = function (obj) { - if(this.settings.checkbox.tie_selection) { return this.is_selected(obj); } - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - return obj.state.checked; - }; - /** - * get an array of all checked nodes (if tie_selection is on in the settings this function will return the same as get_selected) - * @name get_checked([full]) - * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned - * @return {Array} - * @plugin checkbox - */ - this.get_checked = function (full) { - if(this.settings.checkbox.tie_selection) { return this.get_selected(full); } - return full ? $.map(this._data.checkbox.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.checkbox.selected; - }; - /** - * get an array of all top level checked nodes (ignoring children of checked nodes) (if tie_selection is on in the settings this function will return the same as get_top_selected) - * @name get_top_checked([full]) - * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned - * @return {Array} - * @plugin checkbox - */ - this.get_top_checked = function (full) { - if(this.settings.checkbox.tie_selection) { return this.get_top_selected(full); } - var tmp = this.get_checked(true), - obj = {}, i, j, k, l; - for(i = 0, j = tmp.length; i < j; i++) { - obj[tmp[i].id] = tmp[i]; - } - for(i = 0, j = tmp.length; i < j; i++) { - for(k = 0, l = tmp[i].children_d.length; k < l; k++) { - if(obj[tmp[i].children_d[k]]) { - delete obj[tmp[i].children_d[k]]; - } - } - } - tmp = []; - for(i in obj) { - if(obj.hasOwnProperty(i)) { - tmp.push(i); - } - } - return full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp; - }; - /** - * get an array of all bottom level checked nodes (ignoring selected parents) (if tie_selection is on in the settings this function will return the same as get_bottom_selected) - * @name get_bottom_checked([full]) - * @param {mixed} full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned - * @return {Array} - * @plugin checkbox - */ - this.get_bottom_checked = function (full) { - if(this.settings.checkbox.tie_selection) { return this.get_bottom_selected(full); } - var tmp = this.get_checked(true), - obj = [], i, j; - for(i = 0, j = tmp.length; i < j; i++) { - if(!tmp[i].children.length) { - obj.push(tmp[i].id); - } - } - return full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj; - }; - this.load_node = function (obj, callback) { - var k, l, i, j, c, tmp; - if(!$.isArray(obj) && !this.settings.checkbox.tie_selection) { - tmp = this.get_node(obj); - if(tmp && tmp.state.loaded) { - for(k = 0, l = tmp.children_d.length; k < l; k++) { - if(this._model.data[tmp.children_d[k]].state.checked) { - c = true; - this._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, tmp.children_d[k]); - } - } - } - } - return parent.load_node.apply(this, arguments); - }; - this.get_state = function () { - var state = parent.get_state.apply(this, arguments); - if(this.settings.checkbox.tie_selection) { return state; } - state.checkbox = this._data.checkbox.selected.slice(); - return state; - }; - this.set_state = function (state, callback) { - var res = parent.set_state.apply(this, arguments); - if(res && state.checkbox) { - if(!this.settings.checkbox.tie_selection) { - this.uncheck_all(); - var _this = this; - $.each(state.checkbox, function (i, v) { - _this.check_node(v); - }); - } - delete state.checkbox; - this.set_state(state, callback); - return false; - } - return res; - }; - this.refresh = function (skip_loading, forget_state) { - if(!this.settings.checkbox.tie_selection) { - this._data.checkbox.selected = []; - } - return parent.refresh.apply(this, arguments); - }; - }; - - // include the checkbox plugin by default - // $.jstree.defaults.plugins.push("checkbox"); - - -/** - * ### Conditionalselect plugin - * - * This plugin allows defining a callback to allow or deny node selection by user input (activate node method). - */ - - /** - * a callback (function) which is invoked in the instance's scope and receives two arguments - the node and the event that triggered the `activate_node` call. Returning false prevents working with the node, returning true allows invoking activate_node. Defaults to returning `true`. - * @name $.jstree.defaults.checkbox.visible - * @plugin checkbox - */ - $.jstree.defaults.conditionalselect = function () { return true; }; - $.jstree.plugins.conditionalselect = function (options, parent) { - // own function - this.activate_node = function (obj, e) { - if(this.settings.conditionalselect.call(this, this.get_node(obj), e)) { - return parent.activate_node.call(this, obj, e); - } - }; - }; - - -/** - * ### Contextmenu plugin - * - * Shows a context menu when a node is right-clicked. - */ - - /** - * stores all defaults for the contextmenu plugin - * @name $.jstree.defaults.contextmenu - * @plugin contextmenu - */ - $.jstree.defaults.contextmenu = { - /** - * a boolean indicating if the node should be selected when the context menu is invoked on it. Defaults to `true`. - * @name $.jstree.defaults.contextmenu.select_node - * @plugin contextmenu - */ - select_node : true, - /** - * a boolean indicating if the menu should be shown aligned with the node. Defaults to `true`, otherwise the mouse coordinates are used. - * @name $.jstree.defaults.contextmenu.show_at_node - * @plugin contextmenu - */ - show_at_node : true, - /** - * an object of actions, or a function that accepts a node and a callback function and calls the callback function with an object of actions available for that node (you can also return the items too). - * - * Each action consists of a key (a unique name) and a value which is an object with the following properties (only label and action are required). Once a menu item is activated the `action` function will be invoked with an object containing the following keys: item - the contextmenu item definition as seen below, reference - the DOM node that was used (the tree node), element - the contextmenu DOM element, position - an object with x/y properties indicating the position of the menu. - * - * * `separator_before` - a boolean indicating if there should be a separator before this item - * * `separator_after` - a boolean indicating if there should be a separator after this item - * * `_disabled` - a boolean indicating if this action should be disabled - * * `label` - a string - the name of the action (could be a function returning a string) - * * `title` - a string - an optional tooltip for the item - * * `action` - a function to be executed if this item is chosen, the function will receive - * * `icon` - a string, can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class - * * `shortcut` - keyCode which will trigger the action if the menu is open (for example `113` for rename, which equals F2) - * * `shortcut_label` - shortcut label (like for example `F2` for rename) - * * `submenu` - an object with the same structure as $.jstree.defaults.contextmenu.items which can be used to create a submenu - each key will be rendered as a separate option in a submenu that will appear once the current item is hovered - * - * @name $.jstree.defaults.contextmenu.items - * @plugin contextmenu - */ - items : function (o, cb) { // Could be an object directly - return { - "create" : { - "separator_before" : false, - "separator_after" : true, - "_disabled" : false, //(this.check("create_node", data.reference, {}, "last")), - "label" : "Create", - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - inst.create_node(obj, {}, "last", function (new_node) { - try { - inst.edit(new_node); - } catch (ex) { - setTimeout(function () { inst.edit(new_node); },0); - } - }); - } - }, - "rename" : { - "separator_before" : false, - "separator_after" : false, - "_disabled" : false, //(this.check("rename_node", data.reference, this.get_parent(data.reference), "")), - "label" : "Rename", - /*! - "shortcut" : 113, - "shortcut_label" : 'F2', - "icon" : "glyphicon glyphicon-leaf", - */ - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - inst.edit(obj); - } - }, - "remove" : { - "separator_before" : false, - "icon" : false, - "separator_after" : false, - "_disabled" : false, //(this.check("delete_node", data.reference, this.get_parent(data.reference), "")), - "label" : "Delete", - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - if(inst.is_selected(obj)) { - inst.delete_node(inst.get_selected()); - } - else { - inst.delete_node(obj); - } - } - }, - "ccp" : { - "separator_before" : true, - "icon" : false, - "separator_after" : false, - "label" : "Edit", - "action" : false, - "submenu" : { - "cut" : { - "separator_before" : false, - "separator_after" : false, - "label" : "Cut", - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - if(inst.is_selected(obj)) { - inst.cut(inst.get_top_selected()); - } - else { - inst.cut(obj); - } - } - }, - "copy" : { - "separator_before" : false, - "icon" : false, - "separator_after" : false, - "label" : "Copy", - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - if(inst.is_selected(obj)) { - inst.copy(inst.get_top_selected()); - } - else { - inst.copy(obj); - } - } - }, - "paste" : { - "separator_before" : false, - "icon" : false, - "_disabled" : function (data) { - return !$.jstree.reference(data.reference).can_paste(); - }, - "separator_after" : false, - "label" : "Paste", - "action" : function (data) { - var inst = $.jstree.reference(data.reference), - obj = inst.get_node(data.reference); - inst.paste(obj); - } - } - } - } - }; - } - }; - - $.jstree.plugins.contextmenu = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - - var last_ts = 0, cto = null, ex, ey; - this.element - .on("init.jstree loading.jstree ready.jstree", $.proxy(function () { - this.get_container_ul().addClass('jstree-contextmenu'); - }, this)) - .on("contextmenu.jstree", ".jstree-anchor", $.proxy(function (e, data) { - if (e.target.tagName.toLowerCase() === 'input') { - return; - } - e.preventDefault(); - last_ts = e.ctrlKey ? +new Date() : 0; - if(data || cto) { - last_ts = (+new Date()) + 10000; - } - if(cto) { - clearTimeout(cto); - } - if(!this.is_loading(e.currentTarget)) { - this.show_contextmenu(e.currentTarget, e.pageX, e.pageY, e); - } - }, this)) - .on("click.jstree", ".jstree-anchor", $.proxy(function (e) { - if(this._data.contextmenu.visible && (!last_ts || (+new Date()) - last_ts > 250)) { // work around safari & macOS ctrl+click - $.vakata.context.hide(); - } - last_ts = 0; - }, this)) - .on("touchstart.jstree", ".jstree-anchor", function (e) { - if(!e.originalEvent || !e.originalEvent.changedTouches || !e.originalEvent.changedTouches[0]) { - return; - } - ex = e.originalEvent.changedTouches[0].clientX; - ey = e.originalEvent.changedTouches[0].clientY; - cto = setTimeout(function () { - $(e.currentTarget).trigger('contextmenu', true); - }, 750); - }) - .on('touchmove.vakata.jstree', function (e) { - if(cto && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0] && (Math.abs(ex - e.originalEvent.changedTouches[0].clientX) > 10 || Math.abs(ey - e.originalEvent.changedTouches[0].clientY) > 10)) { - clearTimeout(cto); - $.vakata.context.hide(); - } - }) - .on('touchend.vakata.jstree', function (e) { - if(cto) { - clearTimeout(cto); - } - }); - - /*! - if(!('oncontextmenu' in document.body) && ('ontouchstart' in document.body)) { - var el = null, tm = null; - this.element - .on("touchstart", ".jstree-anchor", function (e) { - el = e.currentTarget; - tm = +new Date(); - $(document).one("touchend", function (e) { - e.target = document.elementFromPoint(e.originalEvent.targetTouches[0].pageX - window.pageXOffset, e.originalEvent.targetTouches[0].pageY - window.pageYOffset); - e.currentTarget = e.target; - tm = ((+(new Date())) - tm); - if(e.target === el && tm > 600 && tm < 1000) { - e.preventDefault(); - $(el).trigger('contextmenu', e); - } - el = null; - tm = null; - }); - }); - } - */ - $(document).on("context_hide.vakata.jstree", $.proxy(function (e, data) { - this._data.contextmenu.visible = false; - $(data.reference).removeClass('jstree-context'); - }, this)); - }; - this.teardown = function () { - if(this._data.contextmenu.visible) { - $.vakata.context.hide(); - } - parent.teardown.call(this); - }; - - /** - * prepare and show the context menu for a node - * @name show_contextmenu(obj [, x, y]) - * @param {mixed} obj the node - * @param {Number} x the x-coordinate relative to the document to show the menu at - * @param {Number} y the y-coordinate relative to the document to show the menu at - * @param {Object} e the event if available that triggered the contextmenu - * @plugin contextmenu - * @trigger show_contextmenu.jstree - */ - this.show_contextmenu = function (obj, x, y, e) { - obj = this.get_node(obj); - if(!obj || obj.id === $.jstree.root) { return false; } - var s = this.settings.contextmenu, - d = this.get_node(obj, true), - a = d.children(".jstree-anchor"), - o = false, - i = false; - if(s.show_at_node || x === undefined || y === undefined) { - o = a.offset(); - x = o.left; - y = o.top + this._data.core.li_height; - } - if(this.settings.contextmenu.select_node && !this.is_selected(obj)) { - this.activate_node(obj, e); - } - - i = s.items; - if($.isFunction(i)) { - i = i.call(this, obj, $.proxy(function (i) { - this._show_contextmenu(obj, x, y, i); - }, this)); - } - if($.isPlainObject(i)) { - this._show_contextmenu(obj, x, y, i); - } - }; - /** - * show the prepared context menu for a node - * @name _show_contextmenu(obj, x, y, i) - * @param {mixed} obj the node - * @param {Number} x the x-coordinate relative to the document to show the menu at - * @param {Number} y the y-coordinate relative to the document to show the menu at - * @param {Number} i the object of items to show - * @plugin contextmenu - * @trigger show_contextmenu.jstree - * @private - */ - this._show_contextmenu = function (obj, x, y, i) { - var d = this.get_node(obj, true), - a = d.children(".jstree-anchor"); - $(document).one("context_show.vakata.jstree", $.proxy(function (e, data) { - var cls = 'jstree-contextmenu jstree-' + this.get_theme() + '-contextmenu'; - $(data.element).addClass(cls); - a.addClass('jstree-context'); - }, this)); - this._data.contextmenu.visible = true; - $.vakata.context.show(a, { 'x' : x, 'y' : y }, i); - /** - * triggered when the contextmenu is shown for a node - * @event - * @name show_contextmenu.jstree - * @param {Object} node the node - * @param {Number} x the x-coordinate of the menu relative to the document - * @param {Number} y the y-coordinate of the menu relative to the document - * @plugin contextmenu - */ - this.trigger('show_contextmenu', { "node" : obj, "x" : x, "y" : y }); - }; - }; - - // contextmenu helper - (function ($) { - var right_to_left = false, - vakata_context = { - element : false, - reference : false, - position_x : 0, - position_y : 0, - items : [], - html : "", - is_visible : false - }; - - $.vakata.context = { - settings : { - hide_onmouseleave : 0, - icons : true - }, - _trigger : function (event_name) { - $(document).triggerHandler("context_" + event_name + ".vakata", { - "reference" : vakata_context.reference, - "element" : vakata_context.element, - "position" : { - "x" : vakata_context.position_x, - "y" : vakata_context.position_y - } - }); - }, - _execute : function (i) { - i = vakata_context.items[i]; - return i && (!i._disabled || ($.isFunction(i._disabled) && !i._disabled({ "item" : i, "reference" : vakata_context.reference, "element" : vakata_context.element }))) && i.action ? i.action.call(null, { - "item" : i, - "reference" : vakata_context.reference, - "element" : vakata_context.element, - "position" : { - "x" : vakata_context.position_x, - "y" : vakata_context.position_y - } - }) : false; - }, - _parse : function (o, is_callback) { - if(!o) { return false; } - if(!is_callback) { - vakata_context.html = ""; - vakata_context.items = []; - } - var str = "", - sep = false, - tmp; - - if(is_callback) { str += "<"+"ul>"; } - $.each(o, function (i, val) { - if(!val) { return true; } - vakata_context.items.push(val); - if(!sep && val.separator_before) { - str += "<"+"li class='vakata-context-separator'><"+"a href='#' " + ($.vakata.context.settings.icons ? '' : 'style="margin-left:0px;"') + "> <"+"/a><"+"/li>"; - } - sep = false; - str += "<"+"li class='" + (val._class || "") + (val._disabled === true || ($.isFunction(val._disabled) && val._disabled({ "item" : val, "reference" : vakata_context.reference, "element" : vakata_context.element })) ? " vakata-contextmenu-disabled " : "") + "' "+(val.shortcut?" data-shortcut='"+val.shortcut+"' ":'')+">"; - str += "<"+"a href='#' rel='" + (vakata_context.items.length - 1) + "' " + (val.title ? "title='" + val.title + "'" : "") + ">"; - if($.vakata.context.settings.icons) { - str += "<"+"i "; - if(val.icon) { - if(val.icon.indexOf("/") !== -1 || val.icon.indexOf(".") !== -1) { str += " style='background:url(\"" + val.icon + "\") center center no-repeat' "; } - else { str += " class='" + val.icon + "' "; } - } - str += "><"+"/i><"+"span class='vakata-contextmenu-sep'> <"+"/span>"; - } - str += ($.isFunction(val.label) ? val.label({ "item" : i, "reference" : vakata_context.reference, "element" : vakata_context.element }) : val.label) + (val.shortcut?' '+ (val.shortcut_label || '') +'':'') + "<"+"/a>"; - if(val.submenu) { - tmp = $.vakata.context._parse(val.submenu, true); - if(tmp) { str += tmp; } - } - str += "<"+"/li>"; - if(val.separator_after) { - str += "<"+"li class='vakata-context-separator'><"+"a href='#' " + ($.vakata.context.settings.icons ? '' : 'style="margin-left:0px;"') + "> <"+"/a><"+"/li>"; - sep = true; - } - }); - str = str.replace(/
  • <\/li\>$/,""); - if(is_callback) { str += ""; } - /** - * triggered on the document when the contextmenu is parsed (HTML is built) - * @event - * @plugin contextmenu - * @name context_parse.vakata - * @param {jQuery} reference the element that was right clicked - * @param {jQuery} element the DOM element of the menu itself - * @param {Object} position the x & y coordinates of the menu - */ - if(!is_callback) { vakata_context.html = str; $.vakata.context._trigger("parse"); } - return str.length > 10 ? str : false; - }, - _show_submenu : function (o) { - o = $(o); - if(!o.length || !o.children("ul").length) { return; } - var e = o.children("ul"), - xl = o.offset().left, - x = xl + o.outerWidth(), - y = o.offset().top, - w = e.width(), - h = e.height(), - dw = $(window).width() + $(window).scrollLeft(), - dh = $(window).height() + $(window).scrollTop(); - // може да Ñе ÑпеÑти е една проверка - дали нÑма нÑкой от клаÑовете вече нагоре - if(right_to_left) { - o[x - (w + 10 + o.outerWidth()) < 0 ? "addClass" : "removeClass"]("vakata-context-left"); - } - else { - o[x + w > dw && xl > dw - x ? "addClass" : "removeClass"]("vakata-context-right"); - } - if(y + h + 10 > dh) { - e.css("bottom","-1px"); - } - - //if does not fit - stick it to the side - if (o.hasClass('vakata-context-right')) { - if (xl < w) { - e.css("margin-right", xl - w); - } - } else { - if (dw - x < w) { - e.css("margin-left", dw - x - w); - } - } - - e.show(); - }, - show : function (reference, position, data) { - var o, e, x, y, w, h, dw, dh, cond = true; - if(vakata_context.element && vakata_context.element.length) { - vakata_context.element.width(''); - } - switch(cond) { - case (!position && !reference): - return false; - case (!!position && !!reference): - vakata_context.reference = reference; - vakata_context.position_x = position.x; - vakata_context.position_y = position.y; - break; - case (!position && !!reference): - vakata_context.reference = reference; - o = reference.offset(); - vakata_context.position_x = o.left + reference.outerHeight(); - vakata_context.position_y = o.top; - break; - case (!!position && !reference): - vakata_context.position_x = position.x; - vakata_context.position_y = position.y; - break; - } - if(!!reference && !data && $(reference).data('vakata_contextmenu')) { - data = $(reference).data('vakata_contextmenu'); - } - if($.vakata.context._parse(data)) { - vakata_context.element.html(vakata_context.html); - } - if(vakata_context.items.length) { - vakata_context.element.appendTo("body"); - e = vakata_context.element; - x = vakata_context.position_x; - y = vakata_context.position_y; - w = e.width(); - h = e.height(); - dw = $(window).width() + $(window).scrollLeft(); - dh = $(window).height() + $(window).scrollTop(); - if(right_to_left) { - x -= (e.outerWidth() - $(reference).outerWidth()); - if(x < $(window).scrollLeft() + 20) { - x = $(window).scrollLeft() + 20; - } - } - if(x + w + 20 > dw) { - x = dw - (w + 20); - } - if(y + h + 20 > dh) { - y = dh - (h + 20); - } - - vakata_context.element - .css({ "left" : x, "top" : y }) - .show() - .find('a').first().focus().parent().addClass("vakata-context-hover"); - vakata_context.is_visible = true; - /** - * triggered on the document when the contextmenu is shown - * @event - * @plugin contextmenu - * @name context_show.vakata - * @param {jQuery} reference the element that was right clicked - * @param {jQuery} element the DOM element of the menu itself - * @param {Object} position the x & y coordinates of the menu - */ - $.vakata.context._trigger("show"); - } - }, - hide : function () { - if(vakata_context.is_visible) { - vakata_context.element.hide().find("ul").hide().end().find(':focus').blur().end().detach(); - vakata_context.is_visible = false; - /** - * triggered on the document when the contextmenu is hidden - * @event - * @plugin contextmenu - * @name context_hide.vakata - * @param {jQuery} reference the element that was right clicked - * @param {jQuery} element the DOM element of the menu itself - * @param {Object} position the x & y coordinates of the menu - */ - $.vakata.context._trigger("hide"); - } - } - }; - $(function () { - right_to_left = $("body").css("direction") === "rtl"; - var to = false; - - vakata_context.element = $("
      "); - vakata_context.element - .on("mouseenter", "li", function (e) { - e.stopImmediatePropagation(); - - if($.contains(this, e.relatedTarget)) { - // премахнато заради delegate mouseleave по-долу - // $(this).find(".vakata-context-hover").removeClass("vakata-context-hover"); - return; - } - - if(to) { clearTimeout(to); } - vakata_context.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(); - - $(this) - .siblings().find("ul").hide().end().end() - .parentsUntil(".vakata-context", "li").addBack().addClass("vakata-context-hover"); - $.vakata.context._show_submenu(this); - }) - // теÑтово - дали не натоварва? - .on("mouseleave", "li", function (e) { - if($.contains(this, e.relatedTarget)) { return; } - $(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover"); - }) - .on("mouseleave", function (e) { - $(this).find(".vakata-context-hover").removeClass("vakata-context-hover"); - if($.vakata.context.settings.hide_onmouseleave) { - to = setTimeout( - (function (t) { - return function () { $.vakata.context.hide(); }; - }(this)), $.vakata.context.settings.hide_onmouseleave); - } - }) - .on("click", "a", function (e) { - e.preventDefault(); - //}) - //.on("mouseup", "a", function (e) { - if(!$(this).blur().parent().hasClass("vakata-context-disabled") && $.vakata.context._execute($(this).attr("rel")) !== false) { - $.vakata.context.hide(); - } - }) - .on('keydown', 'a', function (e) { - var o = null; - switch(e.which) { - case 13: - case 32: - e.type = "click"; - e.preventDefault(); - $(e.currentTarget).trigger(e); - break; - case 37: - if(vakata_context.is_visible) { - vakata_context.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children('a').focus(); - e.stopImmediatePropagation(); - e.preventDefault(); - } - break; - case 38: - if(vakata_context.is_visible) { - o = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(); - if(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last(); } - o.addClass("vakata-context-hover").children('a').focus(); - e.stopImmediatePropagation(); - e.preventDefault(); - } - break; - case 39: - if(vakata_context.is_visible) { - vakata_context.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children('a').focus(); - e.stopImmediatePropagation(); - e.preventDefault(); - } - break; - case 40: - if(vakata_context.is_visible) { - o = vakata_context.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(); - if(!o.length) { o = vakata_context.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first(); } - o.addClass("vakata-context-hover").children('a').focus(); - e.stopImmediatePropagation(); - e.preventDefault(); - } - break; - case 27: - $.vakata.context.hide(); - e.preventDefault(); - break; - default: - //console.log(e.which); - break; - } - }) - .on('keydown', function (e) { - e.preventDefault(); - var a = vakata_context.element.find('.vakata-contextmenu-shortcut-' + e.which).parent(); - if(a.parent().not('.vakata-context-disabled')) { - a.click(); - } - }); - - $(document) - .on("mousedown.vakata.jstree", function (e) { - if(vakata_context.is_visible && vakata_context.element[0] !== e.target && !$.contains(vakata_context.element[0], e.target)) { - $.vakata.context.hide(); - } - }) - .on("context_show.vakata.jstree", function (e, data) { - vakata_context.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"); - if(right_to_left) { - vakata_context.element.addClass("vakata-context-rtl").css("direction", "rtl"); - } - // also apply a RTL class? - vakata_context.element.find("ul").hide().end(); - }); - }); - }($)); - // $.jstree.defaults.plugins.push("contextmenu"); - - -/** - * ### Drag'n'drop plugin - * - * Enables dragging and dropping of nodes in the tree, resulting in a move or copy operations. - */ - - /** - * stores all defaults for the drag'n'drop plugin - * @name $.jstree.defaults.dnd - * @plugin dnd - */ - $.jstree.defaults.dnd = { - /** - * a boolean indicating if a copy should be possible while dragging (by pressint the meta key or Ctrl). Defaults to `true`. - * @name $.jstree.defaults.dnd.copy - * @plugin dnd - */ - copy : true, - /** - * a number indicating how long a node should remain hovered while dragging to be opened. Defaults to `500`. - * @name $.jstree.defaults.dnd.open_timeout - * @plugin dnd - */ - open_timeout : 500, - /** - * a function invoked each time a node is about to be dragged, invoked in the tree's scope and receives the nodes about to be dragged as an argument (array) and the event that started the drag - return `false` to prevent dragging - * @name $.jstree.defaults.dnd.is_draggable - * @plugin dnd - */ - is_draggable : true, - /** - * a boolean indicating if checks should constantly be made while the user is dragging the node (as opposed to checking only on drop), default is `true` - * @name $.jstree.defaults.dnd.check_while_dragging - * @plugin dnd - */ - check_while_dragging : true, - /** - * a boolean indicating if nodes from this tree should only be copied with dnd (as opposed to moved), default is `false` - * @name $.jstree.defaults.dnd.always_copy - * @plugin dnd - */ - always_copy : false, - /** - * when dropping a node "inside", this setting indicates the position the node should go to - it can be an integer or a string: "first" (same as 0) or "last", default is `0` - * @name $.jstree.defaults.dnd.inside_pos - * @plugin dnd - */ - inside_pos : 0, - /** - * when starting the drag on a node that is selected this setting controls if all selected nodes are dragged or only the single node, default is `true`, which means all selected nodes are dragged when the drag is started on a selected node - * @name $.jstree.defaults.dnd.drag_selection - * @plugin dnd - */ - drag_selection : true, - /** - * controls whether dnd works on touch devices. If left as boolean true dnd will work the same as in desktop browsers, which in some cases may impair scrolling. If set to boolean false dnd will not work on touch devices. There is a special third option - string "selected" which means only selected nodes can be dragged on touch devices. - * @name $.jstree.defaults.dnd.touch - * @plugin dnd - */ - touch : true, - /** - * controls whether items can be dropped anywhere on the node, not just on the anchor, by default only the node anchor is a valid drop target. Works best with the wholerow plugin. If enabled on mobile depending on the interface it might be hard for the user to cancel the drop, since the whole tree container will be a valid drop target. - * @name $.jstree.defaults.dnd.large_drop_target - * @plugin dnd - */ - large_drop_target : false, - /** - * controls whether a drag can be initiated from any part of the node and not just the text/icon part, works best with the wholerow plugin. Keep in mind it can cause problems with tree scrolling on mobile depending on the interface - in that case set the touch option to "selected". - * @name $.jstree.defaults.dnd.large_drag_target - * @plugin dnd - */ - large_drag_target : false, - /** - * controls whether use HTML5 dnd api instead of classical. That will allow better integration of dnd events with other HTML5 controls. - * @reference http://caniuse.com/#feat=dragndrop - * @name $.jstree.defaults.dnd.use_html5 - * @plugin dnd - */ - use_html5: false - }; - var drg, elm; - // TODO: now check works by checking for each node individually, how about max_children, unique, etc? - $.jstree.plugins.dnd = function (options, parent) { - this.init = function (el, options) { - parent.init.call(this, el, options); - this.settings.dnd.use_html5 = this.settings.dnd.use_html5 && ('draggable' in document.createElement('span')); - }; - this.bind = function () { - parent.bind.call(this); - - this.element - .on(this.settings.dnd.use_html5 ? 'dragstart.jstree' : 'mousedown.jstree touchstart.jstree', this.settings.dnd.large_drag_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) { - if(this.settings.dnd.large_drag_target && $(e.target).closest('.jstree-node')[0] !== e.currentTarget) { - return true; - } - if(e.type === "touchstart" && (!this.settings.dnd.touch || (this.settings.dnd.touch === 'selected' && !$(e.currentTarget).closest('.jstree-node').children('.jstree-anchor').hasClass('jstree-clicked')))) { - return true; - } - var obj = this.get_node(e.target), - mlt = this.is_selected(obj) && this.settings.dnd.drag_selection ? this.get_top_selected().length : 1, - txt = (mlt > 1 ? mlt + ' ' + this.get_string('nodes') : this.get_text(e.currentTarget)); - if(this.settings.core.force_text) { - txt = $.vakata.html.escape(txt); - } - if(obj && obj.id && obj.id !== $.jstree.root && (e.which === 1 || e.type === "touchstart" || e.type === "dragstart") && - (this.settings.dnd.is_draggable === true || ($.isFunction(this.settings.dnd.is_draggable) && this.settings.dnd.is_draggable.call(this, (mlt > 1 ? this.get_top_selected(true) : [obj]), e))) - ) { - drg = { 'jstree' : true, 'origin' : this, 'obj' : this.get_node(obj,true), 'nodes' : mlt > 1 ? this.get_top_selected() : [obj.id] }; - elm = e.currentTarget; - if (this.settings.dnd.use_html5) { - $.vakata.dnd._trigger('start', e, { 'helper': $(), 'element': elm, 'data': drg }); - } else { - this.element.trigger('mousedown.jstree'); - return $.vakata.dnd.start(e, drg, '
      ' + txt + '
      '); - } - } - }, this)); - if (this.settings.dnd.use_html5) { - this.element - .on('dragover.jstree', function (e) { - e.preventDefault(); - $.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg }); - return false; - }) - //.on('dragenter.jstree', this.settings.dnd.large_drop_target ? '.jstree-node' : '.jstree-anchor', $.proxy(function (e) { - // e.preventDefault(); - // $.vakata.dnd._trigger('move', e, { 'helper': $(), 'element': elm, 'data': drg }); - // return false; - // }, this)) - .on('drop.jstree', $.proxy(function (e) { - e.preventDefault(); - $.vakata.dnd._trigger('stop', e, { 'helper': $(), 'element': elm, 'data': drg }); - return false; - }, this)); - } - }; - this.redraw_node = function(obj, deep, callback, force_render) { - obj = parent.redraw_node.apply(this, arguments); - if (obj && this.settings.dnd.use_html5) { - if (this.settings.dnd.large_drag_target) { - obj.setAttribute('draggable', true); - } else { - var i, j, tmp = null; - for(i = 0, j = obj.childNodes.length; i < j; i++) { - if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { - tmp = obj.childNodes[i]; - break; - } - } - if(tmp) { - tmp.setAttribute('draggable', true); - } - } - } - return obj; - }; - }; - - $(function() { - // bind only once for all instances - var lastmv = false, - laster = false, - lastev = false, - opento = false, - marker = $('
       
      ').hide(); //.appendTo('body'); - - $(document) - .on('dnd_start.vakata.jstree', function (e, data) { - lastmv = false; - lastev = false; - if(!data || !data.data || !data.data.jstree) { return; } - marker.appendTo('body'); //.show(); - }) - .on('dnd_move.vakata.jstree', function (e, data) { - var isDifferentNode = data.event.target !== lastev.target; - if(opento) { - if (!data.event || data.event.type !== 'dragover' || isDifferentNode) { - clearTimeout(opento); - } - } - if(!data || !data.data || !data.data.jstree) { return; } - - // if we are hovering the marker image do nothing (can happen on "inside" drags) - if(data.event.target.id && data.event.target.id === 'jstree-marker') { - return; - } - lastev = data.event; - - var ins = $.jstree.reference(data.event.target), - ref = false, - off = false, - rel = false, - tmp, l, t, h, p, i, o, ok, t1, t2, op, ps, pr, ip, tm, is_copy, pn; - // if we are over an instance - if(ins && ins._data && ins._data.dnd) { - marker.attr('class', 'jstree-' + ins.get_theme() + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' )); - is_copy = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))); - data.helper - .children().attr('class', 'jstree-' + ins.get_theme() + ' jstree-' + ins.get_theme() + '-' + ins.get_theme_variant() + ' ' + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' )) - .find('.jstree-copy').first()[ is_copy ? 'show' : 'hide' ](); - - // if are hovering the container itself add a new root node - //console.log(data.event); - if( (data.event.target === ins.element[0] || data.event.target === ins.get_container_ul()[0]) && ins.get_container_ul().children().length === 0) { - ok = true; - for(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) { - ok = ok && ins.check( (data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey)) ) ? "copy_node" : "move_node"), (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), $.jstree.root, 'last', { 'dnd' : true, 'ref' : ins.get_node($.jstree.root), 'pos' : 'i', 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }); - if(!ok) { break; } - } - if(ok) { - lastmv = { 'ins' : ins, 'par' : $.jstree.root, 'pos' : 'last' }; - marker.hide(); - data.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok'); - if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { - data.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move'; - } - return; - } - } - else { - // if we are hovering a tree node - ref = ins.settings.dnd.large_drop_target ? $(data.event.target).closest('.jstree-node').children('.jstree-anchor') : $(data.event.target).closest('.jstree-anchor'); - if(ref && ref.length && ref.parent().is('.jstree-closed, .jstree-open, .jstree-leaf')) { - off = ref.offset(); - rel = (data.event.pageY !== undefined ? data.event.pageY : data.event.originalEvent.pageY) - off.top; - h = ref.outerHeight(); - if(rel < h / 3) { - o = ['b', 'i', 'a']; - } - else if(rel > h - h / 3) { - o = ['a', 'i', 'b']; - } - else { - o = rel > h / 2 ? ['i', 'a', 'b'] : ['i', 'b', 'a']; - } - $.each(o, function (j, v) { - switch(v) { - case 'b': - l = off.left - 6; - t = off.top; - p = ins.get_parent(ref); - i = ref.parent().index(); - break; - case 'i': - ip = ins.settings.dnd.inside_pos; - tm = ins.get_node(ref.parent()); - l = off.left - 2; - t = off.top + h / 2 + 1; - p = tm.id; - i = ip === 'first' ? 0 : (ip === 'last' ? tm.children.length : Math.min(ip, tm.children.length)); - break; - case 'a': - l = off.left - 6; - t = off.top + h; - p = ins.get_parent(ref); - i = ref.parent().index() + 1; - break; - } - ok = true; - for(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) { - op = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? "copy_node" : "move_node"; - ps = i; - if(op === "move_node" && v === 'a' && (data.data.origin && data.data.origin === ins) && p === ins.get_parent(data.data.nodes[t1])) { - pr = ins.get_node(p); - if(ps > $.inArray(data.data.nodes[t1], pr.children)) { - ps -= 1; - } - } - ok = ok && ( (ins && ins.settings && ins.settings.dnd && ins.settings.dnd.check_while_dragging === false) || ins.check(op, (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), p, ps, { 'dnd' : true, 'ref' : ins.get_node(ref.parent()), 'pos' : v, 'origin' : data.data.origin, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }) ); - if(!ok) { - if(ins && ins.last_error) { laster = ins.last_error(); } - break; - } - } - if(v === 'i' && ref.parent().is('.jstree-closed') && ins.settings.dnd.open_timeout) { - if (!data.event || data.event.type !== 'dragover' || isDifferentNode) { - if (opento) { clearTimeout(opento); } - opento = setTimeout((function (x, z) { return function () { x.open_node(z); }; }(ins, ref)), ins.settings.dnd.open_timeout); - } - } - if(ok) { - pn = ins.get_node(p, true); - if (!pn.hasClass('.jstree-dnd-parent')) { - $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); - pn.addClass('jstree-dnd-parent'); - } - lastmv = { 'ins' : ins, 'par' : p, 'pos' : v === 'i' && ip === 'last' && i === 0 && !ins.is_loaded(tm) ? 'last' : i }; - marker.css({ 'left' : l + 'px', 'top' : t + 'px' }).show(); - data.helper.find('.jstree-icon').first().removeClass('jstree-er').addClass('jstree-ok'); - if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { - data.event.originalEvent.dataTransfer.dropEffect = is_copy ? 'copy' : 'move'; - } - laster = {}; - o = true; - return false; - } - }); - if(o === true) { return; } - } - } - } - $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); - lastmv = false; - data.helper.find('.jstree-icon').removeClass('jstree-ok').addClass('jstree-er'); - if (data.event.originalEvent && data.event.originalEvent.dataTransfer) { - data.event.originalEvent.dataTransfer.dropEffect = 'none'; - } - marker.hide(); - }) - .on('dnd_scroll.vakata.jstree', function (e, data) { - if(!data || !data.data || !data.data.jstree) { return; } - marker.hide(); - lastmv = false; - lastev = false; - data.helper.find('.jstree-icon').first().removeClass('jstree-ok').addClass('jstree-er'); - }) - .on('dnd_stop.vakata.jstree', function (e, data) { - $('.jstree-dnd-parent').removeClass('jstree-dnd-parent'); - if(opento) { clearTimeout(opento); } - if(!data || !data.data || !data.data.jstree) { return; } - marker.hide().detach(); - var i, j, nodes = []; - if(lastmv) { - for(i = 0, j = data.data.nodes.length; i < j; i++) { - nodes[i] = data.data.origin ? data.data.origin.get_node(data.data.nodes[i]) : data.data.nodes[i]; - } - lastmv.ins[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? 'copy_node' : 'move_node' ](nodes, lastmv.par, lastmv.pos, false, false, false, data.data.origin); - } - else { - i = $(data.event.target).closest('.jstree'); - if(i.length && laster && laster.error && laster.error === 'check') { - i = i.jstree(true); - if(i) { - i.settings.core.error.call(this, laster); - } - } - } - lastev = false; - lastmv = false; - }) - .on('keyup.jstree keydown.jstree', function (e, data) { - data = $.vakata.dnd._get(); - if(data && data.data && data.data.jstree) { - if (e.type === "keyup" && e.which === 27) { - if (opento) { clearTimeout(opento); } - lastmv = false; - laster = false; - lastev = false; - opento = false; - marker.hide().detach(); - $.vakata.dnd._clean(); - } else { - data.helper.find('.jstree-copy').first()[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (e.metaKey || e.ctrlKey))) ? 'show' : 'hide' ](); - if(lastev) { - lastev.metaKey = e.metaKey; - lastev.ctrlKey = e.ctrlKey; - $.vakata.dnd._trigger('move', lastev); - } - } - } - }); - }); - - // helpers - (function ($) { - $.vakata.html = { - div : $('
      '), - escape : function (str) { - return $.vakata.html.div.text(str).html(); - }, - strip : function (str) { - return $.vakata.html.div.empty().append($.parseHTML(str)).text(); - } - }; - // private variable - var vakata_dnd = { - element : false, - target : false, - is_down : false, - is_drag : false, - helper : false, - helper_w: 0, - data : false, - init_x : 0, - init_y : 0, - scroll_l: 0, - scroll_t: 0, - scroll_e: false, - scroll_i: false, - is_touch: false - }; - $.vakata.dnd = { - settings : { - scroll_speed : 10, - scroll_proximity : 20, - helper_left : 5, - helper_top : 10, - threshold : 5, - threshold_touch : 10 - }, - _trigger : function (event_name, e, data) { - if (data === undefined) { - data = $.vakata.dnd._get(); - } - data.event = e; - $(document).triggerHandler("dnd_" + event_name + ".vakata", data); - }, - _get : function () { - return { - "data" : vakata_dnd.data, - "element" : vakata_dnd.element, - "helper" : vakata_dnd.helper - }; - }, - _clean : function () { - if(vakata_dnd.helper) { vakata_dnd.helper.remove(); } - if(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; } - vakata_dnd = { - element : false, - target : false, - is_down : false, - is_drag : false, - helper : false, - helper_w: 0, - data : false, - init_x : 0, - init_y : 0, - scroll_l: 0, - scroll_t: 0, - scroll_e: false, - scroll_i: false, - is_touch: false - }; - $(document).off("mousemove.vakata.jstree touchmove.vakata.jstree", $.vakata.dnd.drag); - $(document).off("mouseup.vakata.jstree touchend.vakata.jstree", $.vakata.dnd.stop); - }, - _scroll : function (init_only) { - if(!vakata_dnd.scroll_e || (!vakata_dnd.scroll_l && !vakata_dnd.scroll_t)) { - if(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; } - return false; - } - if(!vakata_dnd.scroll_i) { - vakata_dnd.scroll_i = setInterval($.vakata.dnd._scroll, 100); - return false; - } - if(init_only === true) { return false; } - - var i = vakata_dnd.scroll_e.scrollTop(), - j = vakata_dnd.scroll_e.scrollLeft(); - vakata_dnd.scroll_e.scrollTop(i + vakata_dnd.scroll_t * $.vakata.dnd.settings.scroll_speed); - vakata_dnd.scroll_e.scrollLeft(j + vakata_dnd.scroll_l * $.vakata.dnd.settings.scroll_speed); - if(i !== vakata_dnd.scroll_e.scrollTop() || j !== vakata_dnd.scroll_e.scrollLeft()) { - /** - * triggered on the document when a drag causes an element to scroll - * @event - * @plugin dnd - * @name dnd_scroll.vakata - * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start - * @param {DOM} element the DOM element being dragged - * @param {jQuery} helper the helper shown next to the mouse - * @param {jQuery} event the element that is scrolling - */ - $.vakata.dnd._trigger("scroll", vakata_dnd.scroll_e); - } - }, - start : function (e, data, html) { - if(e.type === "touchstart" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { - e.pageX = e.originalEvent.changedTouches[0].pageX; - e.pageY = e.originalEvent.changedTouches[0].pageY; - e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); - } - if(vakata_dnd.is_drag) { $.vakata.dnd.stop({}); } - try { - e.currentTarget.unselectable = "on"; - e.currentTarget.onselectstart = function() { return false; }; - if(e.currentTarget.style) { - e.currentTarget.style.touchAction = "none"; - e.currentTarget.style.msTouchAction = "none"; - e.currentTarget.style.MozUserSelect = "none"; - } - } catch(ignore) { } - vakata_dnd.init_x = e.pageX; - vakata_dnd.init_y = e.pageY; - vakata_dnd.data = data; - vakata_dnd.is_down = true; - vakata_dnd.element = e.currentTarget; - vakata_dnd.target = e.target; - vakata_dnd.is_touch = e.type === "touchstart"; - if(html !== false) { - vakata_dnd.helper = $("
      ").html(html).css({ - "display" : "block", - "margin" : "0", - "padding" : "0", - "position" : "absolute", - "top" : "-2000px", - "lineHeight" : "16px", - "zIndex" : "10000" - }); - } - $(document).on("mousemove.vakata.jstree touchmove.vakata.jstree", $.vakata.dnd.drag); - $(document).on("mouseup.vakata.jstree touchend.vakata.jstree", $.vakata.dnd.stop); - return false; - }, - drag : function (e) { - if(e.type === "touchmove" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { - e.pageX = e.originalEvent.changedTouches[0].pageX; - e.pageY = e.originalEvent.changedTouches[0].pageY; - e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); - } - if(!vakata_dnd.is_down) { return; } - if(!vakata_dnd.is_drag) { - if( - Math.abs(e.pageX - vakata_dnd.init_x) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) || - Math.abs(e.pageY - vakata_dnd.init_y) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) - ) { - if(vakata_dnd.helper) { - vakata_dnd.helper.appendTo("body"); - vakata_dnd.helper_w = vakata_dnd.helper.outerWidth(); - } - vakata_dnd.is_drag = true; - $(vakata_dnd.target).one('click.vakata', false); - /** - * triggered on the document when a drag starts - * @event - * @plugin dnd - * @name dnd_start.vakata - * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start - * @param {DOM} element the DOM element being dragged - * @param {jQuery} helper the helper shown next to the mouse - * @param {Object} event the event that caused the start (probably mousemove) - */ - $.vakata.dnd._trigger("start", e); - } - else { return; } - } - - var d = false, w = false, - dh = false, wh = false, - dw = false, ww = false, - dt = false, dl = false, - ht = false, hl = false; - - vakata_dnd.scroll_t = 0; - vakata_dnd.scroll_l = 0; - vakata_dnd.scroll_e = false; - $($(e.target).parentsUntil("body").addBack().get().reverse()) - .filter(function () { - return (/^auto|scroll$/).test($(this).css("overflow")) && - (this.scrollHeight > this.offsetHeight || this.scrollWidth > this.offsetWidth); - }) - .each(function () { - var t = $(this), o = t.offset(); - if(this.scrollHeight > this.offsetHeight) { - if(o.top + t.height() - e.pageY < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = 1; } - if(e.pageY - o.top < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = -1; } - } - if(this.scrollWidth > this.offsetWidth) { - if(o.left + t.width() - e.pageX < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = 1; } - if(e.pageX - o.left < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = -1; } - } - if(vakata_dnd.scroll_t || vakata_dnd.scroll_l) { - vakata_dnd.scroll_e = $(this); - return false; - } - }); - - if(!vakata_dnd.scroll_e) { - d = $(document); w = $(window); - dh = d.height(); wh = w.height(); - dw = d.width(); ww = w.width(); - dt = d.scrollTop(); dl = d.scrollLeft(); - if(dh > wh && e.pageY - dt < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = -1; } - if(dh > wh && wh - (e.pageY - dt) < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_t = 1; } - if(dw > ww && e.pageX - dl < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = -1; } - if(dw > ww && ww - (e.pageX - dl) < $.vakata.dnd.settings.scroll_proximity) { vakata_dnd.scroll_l = 1; } - if(vakata_dnd.scroll_t || vakata_dnd.scroll_l) { - vakata_dnd.scroll_e = d; - } - } - if(vakata_dnd.scroll_e) { $.vakata.dnd._scroll(true); } - - if(vakata_dnd.helper) { - ht = parseInt(e.pageY + $.vakata.dnd.settings.helper_top, 10); - hl = parseInt(e.pageX + $.vakata.dnd.settings.helper_left, 10); - if(dh && ht + 25 > dh) { ht = dh - 50; } - if(dw && hl + vakata_dnd.helper_w > dw) { hl = dw - (vakata_dnd.helper_w + 2); } - vakata_dnd.helper.css({ - left : hl + "px", - top : ht + "px" - }); - } - /** - * triggered on the document when a drag is in progress - * @event - * @plugin dnd - * @name dnd_move.vakata - * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start - * @param {DOM} element the DOM element being dragged - * @param {jQuery} helper the helper shown next to the mouse - * @param {Object} event the event that caused this to trigger (most likely mousemove) - */ - $.vakata.dnd._trigger("move", e); - return false; - }, - stop : function (e) { - if(e.type === "touchend" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) { - e.pageX = e.originalEvent.changedTouches[0].pageX; - e.pageY = e.originalEvent.changedTouches[0].pageY; - e.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset); - } - if(vakata_dnd.is_drag) { - /** - * triggered on the document when a drag stops (the dragged element is dropped) - * @event - * @plugin dnd - * @name dnd_stop.vakata - * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start - * @param {DOM} element the DOM element being dragged - * @param {jQuery} helper the helper shown next to the mouse - * @param {Object} event the event that caused the stop - */ - if (e.target !== vakata_dnd.target) { - $(vakata_dnd.target).off('click.vakata'); - } - $.vakata.dnd._trigger("stop", e); - } - else { - if(e.type === "touchend" && e.target === vakata_dnd.target) { - var to = setTimeout(function () { $(e.target).click(); }, 100); - $(e.target).one('click', function() { if(to) { clearTimeout(to); } }); - } - } - $.vakata.dnd._clean(); - return false; - } - }; - }($)); - - // include the dnd plugin by default - // $.jstree.defaults.plugins.push("dnd"); - - -/** - * ### Massload plugin - * - * Adds massload functionality to jsTree, so that multiple nodes can be loaded in a single request (only useful with lazy loading). - */ - - /** - * massload configuration - * - * It is possible to set this to a standard jQuery-like AJAX config. - * In addition to the standard jQuery ajax options here you can supply functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node IDs need to be loaded, the return value of those functions will be used. - * - * You can also set this to a function, that function will receive the node IDs being loaded as argument and a second param which is a function (callback) which should be called with the result. - * - * Both the AJAX and the function approach rely on the same return value - an object where the keys are the node IDs, and the value is the children of that node as an array. - * - * { - * "id1" : [{ "text" : "Child of ID1", "id" : "c1" }, { "text" : "Another child of ID1", "id" : "c2" }], - * "id2" : [{ "text" : "Child of ID2", "id" : "c3" }] - * } - * - * @name $.jstree.defaults.massload - * @plugin massload - */ - $.jstree.defaults.massload = null; - $.jstree.plugins.massload = function (options, parent) { - this.init = function (el, options) { - this._data.massload = {}; - parent.init.call(this, el, options); - }; - this._load_nodes = function (nodes, callback, is_callback, force_reload) { - var s = this.settings.massload, - nodesString = JSON.stringify(nodes), - toLoad = [], - m = this._model.data, - i, j, dom; - if (!is_callback) { - for(i = 0, j = nodes.length; i < j; i++) { - if(!m[nodes[i]] || ( (!m[nodes[i]].state.loaded && !m[nodes[i]].state.failed) || force_reload) ) { - toLoad.push(nodes[i]); - dom = this.get_node(nodes[i], true); - if (dom && dom.length) { - dom.addClass("jstree-loading").attr('aria-busy',true); - } - } - } - this._data.massload = {}; - if (toLoad.length) { - if($.isFunction(s)) { - return s.call(this, toLoad, $.proxy(function (data) { - var i, j; - if(data) { - for(i in data) { - if(data.hasOwnProperty(i)) { - this._data.massload[i] = data[i]; - } - } - } - for(i = 0, j = nodes.length; i < j; i++) { - dom = this.get_node(nodes[i], true); - if (dom && dom.length) { - dom.removeClass("jstree-loading").attr('aria-busy',false); - } - } - parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); - }, this)); - } - if(typeof s === 'object' && s && s.url) { - s = $.extend(true, {}, s); - if($.isFunction(s.url)) { - s.url = s.url.call(this, toLoad); - } - if($.isFunction(s.data)) { - s.data = s.data.call(this, toLoad); - } - return $.ajax(s) - .done($.proxy(function (data,t,x) { - var i, j; - if(data) { - for(i in data) { - if(data.hasOwnProperty(i)) { - this._data.massload[i] = data[i]; - } - } - } - for(i = 0, j = nodes.length; i < j; i++) { - dom = this.get_node(nodes[i], true); - if (dom && dom.length) { - dom.removeClass("jstree-loading").attr('aria-busy',false); - } - } - parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); - }, this)) - .fail($.proxy(function (f) { - parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); - }, this)); - } - } - } - return parent._load_nodes.call(this, nodes, callback, is_callback, force_reload); - }; - this._load_node = function (obj, callback) { - var data = this._data.massload[obj.id], - rslt = null, dom; - if(data) { - rslt = this[typeof data === 'string' ? '_append_html_data' : '_append_json_data']( - obj, - typeof data === 'string' ? $($.parseHTML(data)).filter(function () { return this.nodeType !== 3; }) : data, - function (status) { callback.call(this, status); } - ); - dom = this.get_node(obj.id, true); - if (dom && dom.length) { - dom.removeClass("jstree-loading").attr('aria-busy',false); - } - delete this._data.massload[obj.id]; - return rslt; - } - return parent._load_node.call(this, obj, callback); - }; - }; - -/** - * ### Search plugin - * - * Adds search functionality to jsTree. - */ - - /** - * stores all defaults for the search plugin - * @name $.jstree.defaults.search - * @plugin search - */ - $.jstree.defaults.search = { - /** - * a jQuery-like AJAX config, which jstree uses if a server should be queried for results. - * - * A `str` (which is the search string) parameter will be added with the request, an optional `inside` parameter will be added if the search is limited to a node id. The expected result is a JSON array with nodes that need to be opened so that matching nodes will be revealed. - * Leave this setting as `false` to not query the server. You can also set this to a function, which will be invoked in the instance's scope and receive 3 parameters - the search string, the callback to call with the array of nodes to load, and the optional node ID to limit the search to - * @name $.jstree.defaults.search.ajax - * @plugin search - */ - ajax : false, - /** - * Indicates if the search should be fuzzy or not (should `chnd3` match `child node 3`). Default is `false`. - * @name $.jstree.defaults.search.fuzzy - * @plugin search - */ - fuzzy : false, - /** - * Indicates if the search should be case sensitive. Default is `false`. - * @name $.jstree.defaults.search.case_sensitive - * @plugin search - */ - case_sensitive : false, - /** - * Indicates if the tree should be filtered (by default) to show only matching nodes (keep in mind this can be a heavy on large trees in old browsers). - * This setting can be changed at runtime when calling the search method. Default is `false`. - * @name $.jstree.defaults.search.show_only_matches - * @plugin search - */ - show_only_matches : false, - /** - * Indicates if the children of matched element are shown (when show_only_matches is true) - * This setting can be changed at runtime when calling the search method. Default is `false`. - * @name $.jstree.defaults.search.show_only_matches_children - * @plugin search - */ - show_only_matches_children : false, - /** - * Indicates if all nodes opened to reveal the search result, should be closed when the search is cleared or a new search is performed. Default is `true`. - * @name $.jstree.defaults.search.close_opened_onclear - * @plugin search - */ - close_opened_onclear : true, - /** - * Indicates if only leaf nodes should be included in search results. Default is `false`. - * @name $.jstree.defaults.search.search_leaves_only - * @plugin search - */ - search_leaves_only : false, - /** - * If set to a function it wil be called in the instance's scope with two arguments - search string and node (where node will be every node in the structure, so use with caution). - * If the function returns a truthy value the node will be considered a match (it might not be displayed if search_only_leaves is set to true and the node is not a leaf). Default is `false`. - * @name $.jstree.defaults.search.search_callback - * @plugin search - */ - search_callback : false - }; - - $.jstree.plugins.search = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - - this._data.search.str = ""; - this._data.search.dom = $(); - this._data.search.res = []; - this._data.search.opn = []; - this._data.search.som = false; - this._data.search.smc = false; - this._data.search.hdn = []; - - this.element - .on("search.jstree", $.proxy(function (e, data) { - if(this._data.search.som && data.res.length) { - var m = this._model.data, i, j, p = [], k, l; - for(i = 0, j = data.res.length; i < j; i++) { - if(m[data.res[i]] && !m[data.res[i]].state.hidden) { - p.push(data.res[i]); - p = p.concat(m[data.res[i]].parents); - if(this._data.search.smc) { - for (k = 0, l = m[data.res[i]].children_d.length; k < l; k++) { - if (m[m[data.res[i]].children_d[k]] && !m[m[data.res[i]].children_d[k]].state.hidden) { - p.push(m[data.res[i]].children_d[k]); - } - } - } - } - } - p = $.vakata.array_remove_item($.vakata.array_unique(p), $.jstree.root); - this._data.search.hdn = this.hide_all(true); - this.show_node(p, true); - this.redraw(true); - } - }, this)) - .on("clear_search.jstree", $.proxy(function (e, data) { - if(this._data.search.som && data.res.length) { - this.show_node(this._data.search.hdn, true); - this.redraw(true); - } - }, this)); - }; - /** - * used to search the tree nodes for a given string - * @name search(str [, skip_async]) - * @param {String} str the search string - * @param {Boolean} skip_async if set to true server will not be queried even if configured - * @param {Boolean} show_only_matches if set to true only matching nodes will be shown (keep in mind this can be very slow on large trees or old browsers) - * @param {mixed} inside an optional node to whose children to limit the search - * @param {Boolean} append if set to true the results of this search are appended to the previous search - * @plugin search - * @trigger search.jstree - */ - this.search = function (str, skip_async, show_only_matches, inside, append, show_only_matches_children) { - if(str === false || $.trim(str.toString()) === "") { - return this.clear_search(); - } - inside = this.get_node(inside); - inside = inside && inside.id ? inside.id : null; - str = str.toString(); - var s = this.settings.search, - a = s.ajax ? s.ajax : false, - m = this._model.data, - f = null, - r = [], - p = [], i, j; - if(this._data.search.res.length && !append) { - this.clear_search(); - } - if(show_only_matches === undefined) { - show_only_matches = s.show_only_matches; - } - if(show_only_matches_children === undefined) { - show_only_matches_children = s.show_only_matches_children; - } - if(!skip_async && a !== false) { - if($.isFunction(a)) { - return a.call(this, str, $.proxy(function (d) { - if(d && d.d) { d = d.d; } - this._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () { - this.search(str, true, show_only_matches, inside, append, show_only_matches_children); - }); - }, this), inside); - } - else { - a = $.extend({}, a); - if(!a.data) { a.data = {}; } - a.data.str = str; - if(inside) { - a.data.inside = inside; - } - if (this._data.search.lastRequest) { - this._data.search.lastRequest.abort(); - } - this._data.search.lastRequest = $.ajax(a) - .fail($.proxy(function () { - this._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'search', 'id' : 'search_01', 'reason' : 'Could not load search parents', 'data' : JSON.stringify(a) }; - this.settings.core.error.call(this, this._data.core.last_error); - }, this)) - .done($.proxy(function (d) { - if(d && d.d) { d = d.d; } - this._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () { - this.search(str, true, show_only_matches, inside, append, show_only_matches_children); - }); - }, this)); - return this._data.search.lastRequest; - } - } - if(!append) { - this._data.search.str = str; - this._data.search.dom = $(); - this._data.search.res = []; - this._data.search.opn = []; - this._data.search.som = show_only_matches; - this._data.search.smc = show_only_matches_children; - } - - f = new $.vakata.search(str, true, { caseSensitive : s.case_sensitive, fuzzy : s.fuzzy }); - $.each(m[inside ? inside : $.jstree.root].children_d, function (ii, i) { - var v = m[i]; - if(v.text && !v.state.hidden && (!s.search_leaves_only || (v.state.loaded && v.children.length === 0)) && ( (s.search_callback && s.search_callback.call(this, str, v)) || (!s.search_callback && f.search(v.text).isMatch) ) ) { - r.push(i); - p = p.concat(v.parents); - } - }); - if(r.length) { - p = $.vakata.array_unique(p); - for(i = 0, j = p.length; i < j; i++) { - if(p[i] !== $.jstree.root && m[p[i]] && this.open_node(p[i], null, 0) === true) { - this._data.search.opn.push(p[i]); - } - } - if(!append) { - this._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); }).join(', #'))); - this._data.search.res = r; - } - else { - this._data.search.dom = this._data.search.dom.add($(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); }).join(', #')))); - this._data.search.res = $.vakata.array_unique(this._data.search.res.concat(r)); - } - this._data.search.dom.children(".jstree-anchor").addClass('jstree-search'); - } - /** - * triggered after search is complete - * @event - * @name search.jstree - * @param {jQuery} nodes a jQuery collection of matching nodes - * @param {String} str the search string - * @param {Array} res a collection of objects represeing the matching nodes - * @plugin search - */ - this.trigger('search', { nodes : this._data.search.dom, str : str, res : this._data.search.res, show_only_matches : show_only_matches }); - }; - /** - * used to clear the last search (removes classes and shows all nodes if filtering is on) - * @name clear_search() - * @plugin search - * @trigger clear_search.jstree - */ - this.clear_search = function () { - if(this.settings.search.close_opened_onclear) { - this.close_node(this._data.search.opn, 0); - } - /** - * triggered after search is complete - * @event - * @name clear_search.jstree - * @param {jQuery} nodes a jQuery collection of matching nodes (the result from the last search) - * @param {String} str the search string (the last search string) - * @param {Array} res a collection of objects represeing the matching nodes (the result from the last search) - * @plugin search - */ - this.trigger('clear_search', { 'nodes' : this._data.search.dom, str : this._data.search.str, res : this._data.search.res }); - if(this._data.search.res.length) { - this._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(this._data.search.res, function (v) { - return "0123456789".indexOf(v[0]) !== -1 ? '\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\$&') : v.replace($.jstree.idregex,'\\$&'); - }).join(', #'))); - this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search"); - } - this._data.search.str = ""; - this._data.search.res = []; - this._data.search.opn = []; - this._data.search.dom = $(); - }; - - this.redraw_node = function(obj, deep, callback, force_render) { - obj = parent.redraw_node.apply(this, arguments); - if(obj) { - if($.inArray(obj.id, this._data.search.res) !== -1) { - var i, j, tmp = null; - for(i = 0, j = obj.childNodes.length; i < j; i++) { - if(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf("jstree-anchor") !== -1) { - tmp = obj.childNodes[i]; - break; - } - } - if(tmp) { - tmp.className += ' jstree-search'; - } - } - } - return obj; - }; - }; - - // helpers - (function ($) { - // from http://kiro.me/projects/fuse.html - $.vakata.search = function(pattern, txt, options) { - options = options || {}; - options = $.extend({}, $.vakata.search.defaults, options); - if(options.fuzzy !== false) { - options.fuzzy = true; - } - pattern = options.caseSensitive ? pattern : pattern.toLowerCase(); - var MATCH_LOCATION = options.location, - MATCH_DISTANCE = options.distance, - MATCH_THRESHOLD = options.threshold, - patternLen = pattern.length, - matchmask, pattern_alphabet, match_bitapScore, search; - if(patternLen > 32) { - options.fuzzy = false; - } - if(options.fuzzy) { - matchmask = 1 << (patternLen - 1); - pattern_alphabet = (function () { - var mask = {}, - i = 0; - for (i = 0; i < patternLen; i++) { - mask[pattern.charAt(i)] = 0; - } - for (i = 0; i < patternLen; i++) { - mask[pattern.charAt(i)] |= 1 << (patternLen - i - 1); - } - return mask; - }()); - match_bitapScore = function (e, x) { - var accuracy = e / patternLen, - proximity = Math.abs(MATCH_LOCATION - x); - if(!MATCH_DISTANCE) { - return proximity ? 1.0 : accuracy; - } - return accuracy + (proximity / MATCH_DISTANCE); - }; - } - search = function (text) { - text = options.caseSensitive ? text : text.toLowerCase(); - if(pattern === text || text.indexOf(pattern) !== -1) { - return { - isMatch: true, - score: 0 - }; - } - if(!options.fuzzy) { - return { - isMatch: false, - score: 1 - }; - } - var i, j, - textLen = text.length, - scoreThreshold = MATCH_THRESHOLD, - bestLoc = text.indexOf(pattern, MATCH_LOCATION), - binMin, binMid, - binMax = patternLen + textLen, - lastRd, start, finish, rd, charMatch, - score = 1, - locations = []; - if (bestLoc !== -1) { - scoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold); - bestLoc = text.lastIndexOf(pattern, MATCH_LOCATION + patternLen); - if (bestLoc !== -1) { - scoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold); - } - } - bestLoc = -1; - for (i = 0; i < patternLen; i++) { - binMin = 0; - binMid = binMax; - while (binMin < binMid) { - if (match_bitapScore(i, MATCH_LOCATION + binMid) <= scoreThreshold) { - binMin = binMid; - } else { - binMax = binMid; - } - binMid = Math.floor((binMax - binMin) / 2 + binMin); - } - binMax = binMid; - start = Math.max(1, MATCH_LOCATION - binMid + 1); - finish = Math.min(MATCH_LOCATION + binMid, textLen) + patternLen; - rd = new Array(finish + 2); - rd[finish + 1] = (1 << i) - 1; - for (j = finish; j >= start; j--) { - charMatch = pattern_alphabet[text.charAt(j - 1)]; - if (i === 0) { - rd[j] = ((rd[j + 1] << 1) | 1) & charMatch; - } else { - rd[j] = ((rd[j + 1] << 1) | 1) & charMatch | (((lastRd[j + 1] | lastRd[j]) << 1) | 1) | lastRd[j + 1]; - } - if (rd[j] & matchmask) { - score = match_bitapScore(i, j - 1); - if (score <= scoreThreshold) { - scoreThreshold = score; - bestLoc = j - 1; - locations.push(bestLoc); - if (bestLoc > MATCH_LOCATION) { - start = Math.max(1, 2 * MATCH_LOCATION - bestLoc); - } else { - break; - } - } - } - } - if (match_bitapScore(i + 1, MATCH_LOCATION) > scoreThreshold) { - break; - } - lastRd = rd; - } - return { - isMatch: bestLoc >= 0, - score: score - }; - }; - return txt === true ? { 'search' : search } : search(txt); - }; - $.vakata.search.defaults = { - location : 0, - distance : 100, - threshold : 0.6, - fuzzy : false, - caseSensitive : false - }; - }($)); - - // include the search plugin by default - // $.jstree.defaults.plugins.push("search"); - - -/** - * ### Sort plugin - * - * Automatically sorts all siblings in the tree according to a sorting function. - */ - - /** - * the settings function used to sort the nodes. - * It is executed in the tree's context, accepts two nodes as arguments and should return `1` or `-1`. - * @name $.jstree.defaults.sort - * @plugin sort - */ - $.jstree.defaults.sort = function (a, b) { - //return this.get_type(a) === this.get_type(b) ? (this.get_text(a) > this.get_text(b) ? 1 : -1) : this.get_type(a) >= this.get_type(b); - return this.get_text(a) > this.get_text(b) ? 1 : -1; - }; - $.jstree.plugins.sort = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - this.element - .on("model.jstree", $.proxy(function (e, data) { - this.sort(data.parent, true); - }, this)) - .on("rename_node.jstree create_node.jstree", $.proxy(function (e, data) { - this.sort(data.parent || data.node.parent, false); - this.redraw_node(data.parent || data.node.parent, true); - }, this)) - .on("move_node.jstree copy_node.jstree", $.proxy(function (e, data) { - this.sort(data.parent, false); - this.redraw_node(data.parent, true); - }, this)); - }; - /** - * used to sort a node's children - * @private - * @name sort(obj [, deep]) - * @param {mixed} obj the node - * @param {Boolean} deep if set to `true` nodes are sorted recursively. - * @plugin sort - * @trigger search.jstree - */ - this.sort = function (obj, deep) { - var i, j; - obj = this.get_node(obj); - if(obj && obj.children && obj.children.length) { - obj.children.sort($.proxy(this.settings.sort, this)); - if(deep) { - for(i = 0, j = obj.children_d.length; i < j; i++) { - this.sort(obj.children_d[i], false); - } - } - } - }; - }; - - // include the sort plugin by default - // $.jstree.defaults.plugins.push("sort"); - -/** - * ### State plugin - * - * Saves the state of the tree (selected nodes, opened nodes) on the user's computer using available options (localStorage, cookies, etc) - */ - - var to = false; - /** - * stores all defaults for the state plugin - * @name $.jstree.defaults.state - * @plugin state - */ - $.jstree.defaults.state = { - /** - * A string for the key to use when saving the current tree (change if using multiple trees in your project). Defaults to `jstree`. - * @name $.jstree.defaults.state.key - * @plugin state - */ - key : 'jstree', - /** - * A space separated list of events that trigger a state save. Defaults to `changed.jstree open_node.jstree close_node.jstree`. - * @name $.jstree.defaults.state.events - * @plugin state - */ - events : 'changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree', - /** - * Time in milliseconds after which the state will expire. Defaults to 'false' meaning - no expire. - * @name $.jstree.defaults.state.ttl - * @plugin state - */ - ttl : false, - /** - * A function that will be executed prior to restoring state with one argument - the state object. Can be used to clear unwanted parts of the state. - * @name $.jstree.defaults.state.filter - * @plugin state - */ - filter : false - }; - $.jstree.plugins.state = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - var bind = $.proxy(function () { - this.element.on(this.settings.state.events, $.proxy(function () { - if(to) { clearTimeout(to); } - to = setTimeout($.proxy(function () { this.save_state(); }, this), 100); - }, this)); - /** - * triggered when the state plugin is finished restoring the state (and immediately after ready if there is no state to restore). - * @event - * @name state_ready.jstree - * @plugin state - */ - this.trigger('state_ready'); - }, this); - this.element - .on("ready.jstree", $.proxy(function (e, data) { - this.element.one("restore_state.jstree", bind); - if(!this.restore_state()) { bind(); } - }, this)); - }; - /** - * save the state - * @name save_state() - * @plugin state - */ - this.save_state = function () { - var st = { 'state' : this.get_state(), 'ttl' : this.settings.state.ttl, 'sec' : +(new Date()) }; - $.vakata.storage.set(this.settings.state.key, JSON.stringify(st)); - }; - /** - * restore the state from the user's computer - * @name restore_state() - * @plugin state - */ - this.restore_state = function () { - var k = $.vakata.storage.get(this.settings.state.key); - if(!!k) { try { k = JSON.parse(k); } catch(ex) { return false; } } - if(!!k && k.ttl && k.sec && +(new Date()) - k.sec > k.ttl) { return false; } - if(!!k && k.state) { k = k.state; } - if(!!k && $.isFunction(this.settings.state.filter)) { k = this.settings.state.filter.call(this, k); } - if(!!k) { - this.element.one("set_state.jstree", function (e, data) { data.instance.trigger('restore_state', { 'state' : $.extend(true, {}, k) }); }); - this.set_state(k); - return true; - } - return false; - }; - /** - * clear the state on the user's computer - * @name clear_state() - * @plugin state - */ - this.clear_state = function () { - return $.vakata.storage.del(this.settings.state.key); - }; - }; - - (function ($, undefined) { - $.vakata.storage = { - // simply specifying the functions in FF throws an error - set : function (key, val) { return window.localStorage.setItem(key, val); }, - get : function (key) { return window.localStorage.getItem(key); }, - del : function (key) { return window.localStorage.removeItem(key); } - }; - }($)); - - // include the state plugin by default - // $.jstree.defaults.plugins.push("state"); - -/** - * ### Types plugin - * - * Makes it possible to add predefined types for groups of nodes, which make it possible to easily control nesting rules and icon for each group. - */ - - /** - * An object storing all types as key value pairs, where the key is the type name and the value is an object that could contain following keys (all optional). - * - * * `max_children` the maximum number of immediate children this node type can have. Do not specify or set to `-1` for unlimited. - * * `max_depth` the maximum number of nesting this node type can have. A value of `1` would mean that the node can have children, but no grandchildren. Do not specify or set to `-1` for unlimited. - * * `valid_children` an array of node type strings, that nodes of this type can have as children. Do not specify or set to `-1` for no limits. - * * `icon` a string - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class. Omit to use the default icon from your theme. - * * `li_attr` an object of values which will be used to add HTML attributes on the resulting LI DOM node (merged with the node's own data) - * * `a_attr` an object of values which will be used to add HTML attributes on the resulting A DOM node (merged with the node's own data) - * - * There are two predefined types: - * - * * `#` represents the root of the tree, for example `max_children` would control the maximum number of root nodes. - * * `default` represents the default node - any settings here will be applied to all nodes that do not have a type specified. - * - * @name $.jstree.defaults.types - * @plugin types - */ - $.jstree.defaults.types = { - 'default' : {} - }; - $.jstree.defaults.types[$.jstree.root] = {}; - - $.jstree.plugins.types = function (options, parent) { - this.init = function (el, options) { - var i, j; - if(options && options.types && options.types['default']) { - for(i in options.types) { - if(i !== "default" && i !== $.jstree.root && options.types.hasOwnProperty(i)) { - for(j in options.types['default']) { - if(options.types['default'].hasOwnProperty(j) && options.types[i][j] === undefined) { - options.types[i][j] = options.types['default'][j]; - } - } - } - } - } - parent.init.call(this, el, options); - this._model.data[$.jstree.root].type = $.jstree.root; - }; - this.refresh = function (skip_loading, forget_state) { - parent.refresh.call(this, skip_loading, forget_state); - this._model.data[$.jstree.root].type = $.jstree.root; - }; - this.bind = function () { - this.element - .on('model.jstree', $.proxy(function (e, data) { - var m = this._model.data, - dpc = data.nodes, - t = this.settings.types, - i, j, c = 'default', k; - for(i = 0, j = dpc.length; i < j; i++) { - c = 'default'; - if(m[dpc[i]].original && m[dpc[i]].original.type && t[m[dpc[i]].original.type]) { - c = m[dpc[i]].original.type; - } - if(m[dpc[i]].data && m[dpc[i]].data.jstree && m[dpc[i]].data.jstree.type && t[m[dpc[i]].data.jstree.type]) { - c = m[dpc[i]].data.jstree.type; - } - m[dpc[i]].type = c; - if(m[dpc[i]].icon === true && t[c].icon !== undefined) { - m[dpc[i]].icon = t[c].icon; - } - if(t[c].li_attr !== undefined && typeof t[c].li_attr === 'object') { - for (k in t[c].li_attr) { - if (t[c].li_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (m[dpc[i]].li_attr[k] === undefined) { - m[dpc[i]].li_attr[k] = t[c].li_attr[k]; - } - else if (k === 'class') { - m[dpc[i]].li_attr['class'] = t[c].li_attr['class'] + ' ' + m[dpc[i]].li_attr['class']; - } - } - } - } - if(t[c].a_attr !== undefined && typeof t[c].a_attr === 'object') { - for (k in t[c].a_attr) { - if (t[c].a_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (m[dpc[i]].a_attr[k] === undefined) { - m[dpc[i]].a_attr[k] = t[c].a_attr[k]; - } - else if (k === 'href' && m[dpc[i]].a_attr[k] === '#') { - m[dpc[i]].a_attr['href'] = t[c].a_attr['href']; - } - else if (k === 'class') { - m[dpc[i]].a_attr['class'] = t[c].a_attr['class'] + ' ' + m[dpc[i]].a_attr['class']; - } - } - } - } - } - m[$.jstree.root].type = $.jstree.root; - }, this)); - parent.bind.call(this); - }; - this.get_json = function (obj, options, flat) { - var i, j, - m = this._model.data, - opt = options ? $.extend(true, {}, options, {no_id:false}) : {}, - tmp = parent.get_json.call(this, obj, opt, flat); - if(tmp === false) { return false; } - if($.isArray(tmp)) { - for(i = 0, j = tmp.length; i < j; i++) { - tmp[i].type = tmp[i].id && m[tmp[i].id] && m[tmp[i].id].type ? m[tmp[i].id].type : "default"; - if(options && options.no_id) { - delete tmp[i].id; - if(tmp[i].li_attr && tmp[i].li_attr.id) { - delete tmp[i].li_attr.id; - } - if(tmp[i].a_attr && tmp[i].a_attr.id) { - delete tmp[i].a_attr.id; - } - } - } - } - else { - tmp.type = tmp.id && m[tmp.id] && m[tmp.id].type ? m[tmp.id].type : "default"; - if(options && options.no_id) { - tmp = this._delete_ids(tmp); - } - } - return tmp; - }; - this._delete_ids = function (tmp) { - if($.isArray(tmp)) { - for(var i = 0, j = tmp.length; i < j; i++) { - tmp[i] = this._delete_ids(tmp[i]); - } - return tmp; - } - delete tmp.id; - if(tmp.li_attr && tmp.li_attr.id) { - delete tmp.li_attr.id; - } - if(tmp.a_attr && tmp.a_attr.id) { - delete tmp.a_attr.id; - } - if(tmp.children && $.isArray(tmp.children)) { - tmp.children = this._delete_ids(tmp.children); - } - return tmp; - }; - this.check = function (chk, obj, par, pos, more) { - if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; } - obj = obj && obj.id ? obj : this.get_node(obj); - par = par && par.id ? par : this.get_node(par); - var m = obj && obj.id ? (more && more.origin ? more.origin : $.jstree.reference(obj.id)) : null, tmp, d, i, j; - m = m && m._model && m._model.data ? m._model.data : null; - switch(chk) { - case "create_node": - case "move_node": - case "copy_node": - if(chk !== 'move_node' || $.inArray(obj.id, par.children) === -1) { - tmp = this.get_rules(par); - if(tmp.max_children !== undefined && tmp.max_children !== -1 && tmp.max_children === par.children.length) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_01', 'reason' : 'max_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - return false; - } - if(tmp.valid_children !== undefined && tmp.valid_children !== -1 && $.inArray((obj.type || 'default'), tmp.valid_children) === -1) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_02', 'reason' : 'valid_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - return false; - } - if(m && obj.children_d && obj.parents) { - d = 0; - for(i = 0, j = obj.children_d.length; i < j; i++) { - d = Math.max(d, m[obj.children_d[i]].parents.length); - } - d = d - obj.parents.length + 1; - } - if(d <= 0 || d === undefined) { d = 1; } - do { - if(tmp.max_depth !== undefined && tmp.max_depth !== -1 && tmp.max_depth < d) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_03', 'reason' : 'max_depth prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - return false; - } - par = this.get_node(par.parent); - tmp = this.get_rules(par); - d++; - } while(par); - } - break; - } - return true; - }; - /** - * used to retrieve the type settings object for a node - * @name get_rules(obj) - * @param {mixed} obj the node to find the rules for - * @return {Object} - * @plugin types - */ - this.get_rules = function (obj) { - obj = this.get_node(obj); - if(!obj) { return false; } - var tmp = this.get_type(obj, true); - if(tmp.max_depth === undefined) { tmp.max_depth = -1; } - if(tmp.max_children === undefined) { tmp.max_children = -1; } - if(tmp.valid_children === undefined) { tmp.valid_children = -1; } - return tmp; - }; - /** - * used to retrieve the type string or settings object for a node - * @name get_type(obj [, rules]) - * @param {mixed} obj the node to find the rules for - * @param {Boolean} rules if set to `true` instead of a string the settings object will be returned - * @return {String|Object} - * @plugin types - */ - this.get_type = function (obj, rules) { - obj = this.get_node(obj); - return (!obj) ? false : ( rules ? $.extend({ 'type' : obj.type }, this.settings.types[obj.type]) : obj.type); - }; - /** - * used to change a node's type - * @name set_type(obj, type) - * @param {mixed} obj the node to change - * @param {String} type the new type - * @plugin types - */ - this.set_type = function (obj, type) { - var m = this._model.data, t, t1, t2, old_type, old_icon, k, d, a; - if($.isArray(obj)) { - obj = obj.slice(); - for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { - this.set_type(obj[t1], type); - } - return true; - } - t = this.settings.types; - obj = this.get_node(obj); - if(!t[type] || !obj) { return false; } - d = this.get_node(obj, true); - if (d && d.length) { - a = d.children('.jstree-anchor'); - } - old_type = obj.type; - old_icon = this.get_icon(obj); - obj.type = type; - if(old_icon === true || !t[old_type] || (t[old_type].icon !== undefined && old_icon === t[old_type].icon)) { - this.set_icon(obj, t[type].icon !== undefined ? t[type].icon : true); - } - - // remove old type props - if(t[old_type] && t[old_type].li_attr !== undefined && typeof t[old_type].li_attr === 'object') { - for (k in t[old_type].li_attr) { - if (t[old_type].li_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (k === 'class') { - m[obj.id].li_attr['class'] = (m[obj.id].li_attr['class'] || '').replace(t[old_type].li_attr[k], ''); - if (d) { d.removeClass(t[old_type].li_attr[k]); } - } - else if (m[obj.id].li_attr[k] === t[old_type].li_attr[k]) { - m[obj.id].li_attr[k] = null; - if (d) { d.removeAttr(k); } - } - } - } - } - if(t[old_type] && t[old_type].a_attr !== undefined && typeof t[old_type].a_attr === 'object') { - for (k in t[old_type].a_attr) { - if (t[old_type].a_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (k === 'class') { - m[obj.id].a_attr['class'] = (m[obj.id].a_attr['class'] || '').replace(t[old_type].a_attr[k], ''); - if (a) { a.removeClass(t[old_type].a_attr[k]); } - } - else if (m[obj.id].a_attr[k] === t[old_type].a_attr[k]) { - if (k === 'href') { - m[obj.id].a_attr[k] = '#'; - if (a) { a.attr('href', '#'); } - } - else { - delete m[obj.id].a_attr[k]; - if (a) { a.removeAttr(k); } - } - } - } - } - } - - // add new props - if(t[type].li_attr !== undefined && typeof t[type].li_attr === 'object') { - for (k in t[type].li_attr) { - if (t[type].li_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (m[obj.id].li_attr[k] === undefined) { - m[obj.id].li_attr[k] = t[type].li_attr[k]; - if (d) { - if (k === 'class') { - d.addClass(t[type].li_attr[k]); - } - else { - d.attr(k, t[type].li_attr[k]); - } - } - } - else if (k === 'class') { - m[obj.id].li_attr['class'] = t[type].li_attr[k] + ' ' + m[obj.id].li_attr['class']; - if (d) { d.addClass(t[type].li_attr[k]); } - } - } - } - } - if(t[type].a_attr !== undefined && typeof t[type].a_attr === 'object') { - for (k in t[type].a_attr) { - if (t[type].a_attr.hasOwnProperty(k)) { - if (k === 'id') { - continue; - } - else if (m[obj.id].a_attr[k] === undefined) { - m[obj.id].a_attr[k] = t[type].a_attr[k]; - if (a) { - if (k === 'class') { - a.addClass(t[type].a_attr[k]); - } - else { - a.attr(k, t[type].a_attr[k]); - } - } - } - else if (k === 'href' && m[obj.id].a_attr[k] === '#') { - m[obj.id].a_attr['href'] = t[type].a_attr['href']; - if (a) { a.attr('href', t[type].a_attr['href']); } - } - else if (k === 'class') { - m[obj.id].a_attr['class'] = t[type].a_attr['class'] + ' ' + m[obj.id].a_attr['class']; - if (a) { a.addClass(t[type].a_attr[k]); } - } - } - } - } - - return true; - }; - }; - // include the types plugin by default - // $.jstree.defaults.plugins.push("types"); - - -/** - * ### Unique plugin - * - * Enforces that no nodes with the same name can coexist as siblings. - */ - - /** - * stores all defaults for the unique plugin - * @name $.jstree.defaults.unique - * @plugin unique - */ - $.jstree.defaults.unique = { - /** - * Indicates if the comparison should be case sensitive. Default is `false`. - * @name $.jstree.defaults.unique.case_sensitive - * @plugin unique - */ - case_sensitive : false, - /** - * A callback executed in the instance's scope when a new node is created and the name is already taken, the two arguments are the conflicting name and the counter. The default will produce results like `New node (2)`. - * @name $.jstree.defaults.unique.duplicate - * @plugin unique - */ - duplicate : function (name, counter) { - return name + ' (' + counter + ')'; - } - }; - - $.jstree.plugins.unique = function (options, parent) { - this.check = function (chk, obj, par, pos, more) { - if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; } - obj = obj && obj.id ? obj : this.get_node(obj); - par = par && par.id ? par : this.get_node(par); - if(!par || !par.children) { return true; } - var n = chk === "rename_node" ? pos : obj.text, - c = [], - s = this.settings.unique.case_sensitive, - m = this._model.data, i, j; - for(i = 0, j = par.children.length; i < j; i++) { - c.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase()); - } - if(!s) { n = n.toLowerCase(); } - switch(chk) { - case "delete_node": - return true; - case "rename_node": - i = ($.inArray(n, c) === -1 || (obj.text && obj.text[ s ? 'toString' : 'toLowerCase']() === n)); - if(!i) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_01', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - } - return i; - case "create_node": - i = ($.inArray(n, c) === -1); - if(!i) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_04', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - } - return i; - case "copy_node": - i = ($.inArray(n, c) === -1); - if(!i) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_02', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - } - return i; - case "move_node": - i = ( (obj.parent === par.id && (!more || !more.is_multi)) || $.inArray(n, c) === -1); - if(!i) { - this._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_03', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) }; - } - return i; - } - return true; - }; - this.create_node = function (par, node, pos, callback, is_loaded) { - if(!node || node.text === undefined) { - if(par === null) { - par = $.jstree.root; - } - par = this.get_node(par); - if(!par) { - return parent.create_node.call(this, par, node, pos, callback, is_loaded); - } - pos = pos === undefined ? "last" : pos; - if(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) { - return parent.create_node.call(this, par, node, pos, callback, is_loaded); - } - if(!node) { node = {}; } - var tmp, n, dpc, i, j, m = this._model.data, s = this.settings.unique.case_sensitive, cb = this.settings.unique.duplicate; - n = tmp = this.get_string('New node'); - dpc = []; - for(i = 0, j = par.children.length; i < j; i++) { - dpc.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase()); - } - i = 1; - while($.inArray(s ? n : n.toLowerCase(), dpc) !== -1) { - n = cb.call(this, tmp, (++i)).toString(); - } - node.text = n; - } - return parent.create_node.call(this, par, node, pos, callback, is_loaded); - }; - }; - - // include the unique plugin by default - // $.jstree.defaults.plugins.push("unique"); - - -/** - * ### Wholerow plugin - * - * Makes each node appear block level. Making selection easier. May cause slow down for large trees in old browsers. - */ - - var div = document.createElement('DIV'); - div.setAttribute('unselectable','on'); - div.setAttribute('role','presentation'); - div.className = 'jstree-wholerow'; - div.innerHTML = ' '; - $.jstree.plugins.wholerow = function (options, parent) { - this.bind = function () { - parent.bind.call(this); - - this.element - .on('ready.jstree set_state.jstree', $.proxy(function () { - this.hide_dots(); - }, this)) - .on("init.jstree loading.jstree ready.jstree", $.proxy(function () { - //div.style.height = this._data.core.li_height + 'px'; - this.get_container_ul().addClass('jstree-wholerow-ul'); - }, this)) - .on("deselect_all.jstree", $.proxy(function (e, data) { - this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked'); - }, this)) - .on("changed.jstree", $.proxy(function (e, data) { - this.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked'); - var tmp = false, i, j; - for(i = 0, j = data.selected.length; i < j; i++) { - tmp = this.get_node(data.selected[i], true); - if(tmp && tmp.length) { - tmp.children('.jstree-wholerow').addClass('jstree-wholerow-clicked'); - } - } - }, this)) - .on("open_node.jstree", $.proxy(function (e, data) { - this.get_node(data.node, true).find('.jstree-clicked').parent().children('.jstree-wholerow').addClass('jstree-wholerow-clicked'); - }, this)) - .on("hover_node.jstree dehover_node.jstree", $.proxy(function (e, data) { - if(e.type === "hover_node" && this.is_disabled(data.node)) { return; } - this.get_node(data.node, true).children('.jstree-wholerow')[e.type === "hover_node"?"addClass":"removeClass"]('jstree-wholerow-hovered'); - }, this)) - .on("contextmenu.jstree", ".jstree-wholerow", $.proxy(function (e) { - if (this._data.contextmenu) { - e.preventDefault(); - var tmp = $.Event('contextmenu', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey, pageX : e.pageX, pageY : e.pageY }); - $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp); - } - }, this)) - /*! - .on("mousedown.jstree touchstart.jstree", ".jstree-wholerow", function (e) { - if(e.target === e.currentTarget) { - var a = $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor"); - e.target = a[0]; - a.trigger(e); - } - }) - */ - .on("click.jstree", ".jstree-wholerow", function (e) { - e.stopImmediatePropagation(); - var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); - $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); - }) - .on("dblclick.jstree", ".jstree-wholerow", function (e) { - e.stopImmediatePropagation(); - var tmp = $.Event('dblclick', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); - $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); - }) - .on("click.jstree", ".jstree-leaf > .jstree-ocl", $.proxy(function (e) { - e.stopImmediatePropagation(); - var tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey }); - $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(tmp).focus(); - }, this)) - .on("mouseover.jstree", ".jstree-wholerow, .jstree-icon", $.proxy(function (e) { - e.stopImmediatePropagation(); - if(!this.is_disabled(e.currentTarget)) { - this.hover_node(e.currentTarget); - } - return false; - }, this)) - .on("mouseleave.jstree", ".jstree-node", $.proxy(function (e) { - this.dehover_node(e.currentTarget); - }, this)); - }; - this.teardown = function () { - if(this.settings.wholerow) { - this.element.find(".jstree-wholerow").remove(); - } - parent.teardown.call(this); - }; - this.redraw_node = function(obj, deep, callback, force_render) { - obj = parent.redraw_node.apply(this, arguments); - if(obj) { - var tmp = div.cloneNode(true); - //tmp.style.height = this._data.core.li_height + 'px'; - if($.inArray(obj.id, this._data.core.selected) !== -1) { tmp.className += ' jstree-wholerow-clicked'; } - if(this._data.core.focused && this._data.core.focused === obj.id) { tmp.className += ' jstree-wholerow-hovered'; } - obj.insertBefore(tmp, obj.childNodes[0]); - } - return obj; - }; - }; - // include the wholerow plugin by default - // $.jstree.defaults.plugins.push("wholerow"); - if(document.registerElement && Object && Object.create) { - var proto = Object.create(HTMLElement.prototype); - proto.createdCallback = function () { - var c = { core : {}, plugins : [] }, i; - for(i in $.jstree.plugins) { - if($.jstree.plugins.hasOwnProperty(i) && this.attributes[i]) { - c.plugins.push(i); - if(this.getAttribute(i) && JSON.parse(this.getAttribute(i))) { - c[i] = JSON.parse(this.getAttribute(i)); - } - } - } - for(i in $.jstree.defaults.core) { - if($.jstree.defaults.core.hasOwnProperty(i) && this.attributes[i]) { - c.core[i] = JSON.parse(this.getAttribute(i)) || this.getAttribute(i); - } - } - $(this).jstree(c); - }; - // proto.attributeChangedCallback = function (name, previous, value) { }; - try { - document.registerElement("vakata-jstree", { prototype: proto }); - } catch(ignore) { } - } - -})); \ No newline at end of file diff --git a/libs/jstree/jstree.min.js b/libs/jstree/jstree.min.js deleted file mode 100644 index 8cd94cd..0000000 --- a/libs/jstree/jstree.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jsTree - v3.3.4 - 2017-07-31 - (MIT) */ -!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a,b){"use strict";if(!a.jstree){var c=0,d=!1,e=!1,f=!1,g=[],h=a("script:last").attr("src"),i=window.document;a.jstree={version:"3.3.4",defaults:{plugins:[]},plugins:{},path:h&&-1!==h.indexOf("/")?h.replace(/\/[^\/]+$/,""):"",idregex:/[\\:&!^|()\[\]<>@*'+~#";.,=\- \/${}%?`]/g,root:"#"},a.jstree.create=function(b,d){var e=new a.jstree.core(++c),f=d;return d=a.extend(!0,{},a.jstree.defaults,d),f&&f.plugins&&(d.plugins=f.plugins),a.each(d.plugins,function(a,b){"core"!==a&&(e=e.plugin(b,d[b]))}),a(b).data("jstree",e),e.init(b,d),e},a.jstree.destroy=function(){a(".jstree:jstree").jstree("destroy"),a(i).off(".jstree")},a.jstree.core=function(a){this._id=a,this._cnt=0,this._wrk=null,this._data={core:{themes:{name:!1,dots:!1,icons:!1,ellipsis:!1},selected:[],last_error:{},working:!1,worker_queue:[],focused:null}}},a.jstree.reference=function(b){var c=null,d=null;if(!b||!b.id||b.tagName&&b.nodeType||(b=b.id),!d||!d.length)try{d=a(b)}catch(e){}if(!d||!d.length)try{d=a("#"+b.replace(a.jstree.idregex,"\\$&"))}catch(e){}return d&&d.length&&(d=d.closest(".jstree")).length&&(d=d.data("jstree"))?c=d:a(".jstree").each(function(){var d=a(this).data("jstree");return d&&d._model.data[b]?(c=d,!1):void 0}),c},a.fn.jstree=function(c){var d="string"==typeof c,e=Array.prototype.slice.call(arguments,1),f=null;return c!==!0||this.length?(this.each(function(){var g=a.jstree.reference(this),h=d&&g?g[c]:null;return f=d&&h?h.apply(g,e):null,g||d||c!==b&&!a.isPlainObject(c)||a.jstree.create(this,c),(g&&!d||c===!0)&&(f=g||!1),null!==f&&f!==b?!1:void 0}),null!==f&&f!==b?f:this):!1},a.expr.pseudos.jstree=a.expr.createPseudo(function(c){return function(c){return a(c).hasClass("jstree")&&a(c).data("jstree")!==b}}),a.jstree.defaults.core={data:!1,strings:!1,check_callback:!1,error:a.noop,animation:200,multiple:!0,themes:{name:!1,url:!1,dir:!1,dots:!0,icons:!0,ellipsis:!1,stripes:!1,variant:!1,responsive:!1},expand_selected_onload:!0,worker:!0,force_text:!1,dblclick_toggle:!0},a.jstree.core.prototype={plugin:function(b,c){var d=a.jstree.plugins[b];return d?(this._data[b]={},d.prototype=this,new d(c,this)):this},init:function(b,c){this._model={data:{},changed:[],force_full_redraw:!1,redraw_timeout:!1,default_state:{loaded:!0,opened:!1,selected:!1,disabled:!1}},this._model.data[a.jstree.root]={id:a.jstree.root,parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}},this.element=a(b).addClass("jstree jstree-"+this._id),this.settings=c,this._data.core.ready=!1,this._data.core.loaded=!1,this._data.core.rtl="rtl"===this.element.css("direction"),this.element[this._data.core.rtl?"addClass":"removeClass"]("jstree-rtl"),this.element.attr("role","tree"),this.settings.core.multiple&&this.element.attr("aria-multiselectable",!0),this.element.attr("tabindex")||this.element.attr("tabindex","0"),this.bind(),this.trigger("init"),this._data.core.original_container_html=this.element.find(" > ul > li").clone(!0),this._data.core.original_container_html.find("li").addBack().contents().filter(function(){return 3===this.nodeType&&(!this.nodeValue||/^\s+$/.test(this.nodeValue))}).remove(),this.element.html(""),this.element.attr("aria-activedescendant","j"+this._id+"_loading"),this._data.core.li_height=this.get_container_ul().children("li").first().outerHeight()||24,this._data.core.node=this._create_prototype_node(),this.trigger("loading"),this.load_node(a.jstree.root)},destroy:function(a){if(this.trigger("destroy"),this._wrk)try{window.URL.revokeObjectURL(this._wrk),this._wrk=null}catch(b){}a||this.element.empty(),this.teardown()},_create_prototype_node:function(){var a=i.createElement("LI"),b,c;return a.setAttribute("role","treeitem"),b=i.createElement("I"),b.className="jstree-icon jstree-ocl",b.setAttribute("role","presentation"),a.appendChild(b),b=i.createElement("A"),b.className="jstree-anchor",b.setAttribute("href","#"),b.setAttribute("tabindex","-1"),c=i.createElement("I"),c.className="jstree-icon jstree-themeicon",c.setAttribute("role","presentation"),b.appendChild(c),a.appendChild(b),b=c=null,a},teardown:function(){this.unbind(),this.element.removeClass("jstree").removeData("jstree").find("[class^='jstree']").addBack().attr("class",function(){return this.className.replace(/jstree[^ ]*|$/gi,"")}),this.element=null},bind:function(){var b="",c=null,d=0;this.element.on("dblclick.jstree",function(a){if(a.target.tagName&&"input"===a.target.tagName.toLowerCase())return!0;if(i.selection&&i.selection.empty)i.selection.empty();else if(window.getSelection){var b=window.getSelection();try{b.removeAllRanges(),b.collapse()}catch(c){}}}).on("mousedown.jstree",a.proxy(function(a){a.target===this.element[0]&&(a.preventDefault(),d=+new Date)},this)).on("mousedown.jstree",".jstree-ocl",function(a){a.preventDefault()}).on("click.jstree",".jstree-ocl",a.proxy(function(a){this.toggle_node(a.target)},this)).on("dblclick.jstree",".jstree-anchor",a.proxy(function(a){return a.target.tagName&&"input"===a.target.tagName.toLowerCase()?!0:void(this.settings.core.dblclick_toggle&&this.toggle_node(a.target))},this)).on("click.jstree",".jstree-anchor",a.proxy(function(b){b.preventDefault(),b.currentTarget!==i.activeElement&&a(b.currentTarget).focus(),this.activate_node(b.currentTarget,b)},this)).on("keydown.jstree",".jstree-anchor",a.proxy(function(b){if(b.target.tagName&&"input"===b.target.tagName.toLowerCase())return!0;if(32!==b.which&&13!==b.which&&(b.shiftKey||b.ctrlKey||b.altKey||b.metaKey))return!0;var c=null;switch(this._data.core.rtl&&(37===b.which?b.which=39:39===b.which&&(b.which=37)),b.which){case 32:b.ctrlKey&&(b.type="click",a(b.currentTarget).trigger(b));break;case 13:b.type="click",a(b.currentTarget).trigger(b);break;case 37:b.preventDefault(),this.is_open(b.currentTarget)?this.close_node(b.currentTarget):(c=this.get_parent(b.currentTarget),c&&c.id!==a.jstree.root&&this.get_node(c,!0).children(".jstree-anchor").focus());break;case 38:b.preventDefault(),c=this.get_prev_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 39:b.preventDefault(),this.is_closed(b.currentTarget)?this.open_node(b.currentTarget,function(a){this.get_node(a,!0).children(".jstree-anchor").focus()}):this.is_open(b.currentTarget)&&(c=this.get_node(b.currentTarget,!0).children(".jstree-children")[0],c&&a(this._firstChild(c)).children(".jstree-anchor").focus());break;case 40:b.preventDefault(),c=this.get_next_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 106:this.open_all();break;case 36:b.preventDefault(),c=this._firstChild(this.get_container_ul()[0]),c&&a(c).children(".jstree-anchor").filter(":visible").focus();break;case 35:b.preventDefault(),this.element.find(".jstree-anchor").filter(":visible").last().focus();break;case 113:b.preventDefault(),this.edit(b.currentTarget)}},this)).on("load_node.jstree",a.proxy(function(b,c){c.status&&(c.node.id!==a.jstree.root||this._data.core.loaded||(this._data.core.loaded=!0,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.trigger("loaded")),this._data.core.ready||setTimeout(a.proxy(function(){if(this.element&&!this.get_container_ul().find(".jstree-loading").length){if(this._data.core.ready=!0,this._data.core.selected.length){if(this.settings.core.expand_selected_onload){var b=[],c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)b=b.concat(this._model.data[this._data.core.selected[c]].parents);for(b=a.vakata.array_unique(b),c=0,d=b.length;d>c;c++)this.open_node(b[c],!1,0)}this.trigger("changed",{action:"ready",selected:this._data.core.selected})}this.trigger("ready")}},this),0))},this)).on("keypress.jstree",a.proxy(function(d){if(d.target.tagName&&"input"===d.target.tagName.toLowerCase())return!0;c&&clearTimeout(c),c=setTimeout(function(){b=""},500);var e=String.fromCharCode(d.which).toLowerCase(),f=this.element.find(".jstree-anchor").filter(":visible"),g=f.index(i.activeElement)||0,h=!1;if(b+=e,b.length>1){if(f.slice(g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return}if(new RegExp("^"+e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")+"+$").test(b)){if(f.slice(g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return}},this)).on("init.jstree",a.proxy(function(){var a=this.settings.core.themes;this._data.core.themes.dots=a.dots,this._data.core.themes.stripes=a.stripes,this._data.core.themes.icons=a.icons,this._data.core.themes.ellipsis=a.ellipsis,this.set_theme(a.name||"default",a.url),this.set_theme_variant(a.variant)},this)).on("loading.jstree",a.proxy(function(){this[this._data.core.themes.dots?"show_dots":"hide_dots"](),this[this._data.core.themes.icons?"show_icons":"hide_icons"](),this[this._data.core.themes.stripes?"show_stripes":"hide_stripes"](),this[this._data.core.themes.ellipsis?"show_ellipsis":"hide_ellipsis"]()},this)).on("blur.jstree",".jstree-anchor",a.proxy(function(b){this._data.core.focused=null,a(b.currentTarget).filter(".jstree-hovered").mouseleave(),this.element.attr("tabindex","0")},this)).on("focus.jstree",".jstree-anchor",a.proxy(function(b){var c=this.get_node(b.currentTarget);c&&c.id&&(this._data.core.focused=c.id),this.element.find(".jstree-hovered").not(b.currentTarget).mouseleave(),a(b.currentTarget).mouseenter(),this.element.attr("tabindex","-1")},this)).on("focus.jstree",a.proxy(function(){if(+new Date-d>500&&!this._data.core.focused){d=0;var a=this.get_node(this.element.attr("aria-activedescendant"),!0);a&&a.find("> .jstree-anchor").focus()}},this)).on("mouseenter.jstree",".jstree-anchor",a.proxy(function(a){this.hover_node(a.currentTarget)},this)).on("mouseleave.jstree",".jstree-anchor",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},unbind:function(){this.element.off(".jstree"),a(i).off(".jstree-"+this._id)},trigger:function(a,b){b||(b={}),b.instance=this,this.element.triggerHandler(a.replace(".jstree","")+".jstree",b)},get_container:function(){return this.element},get_container_ul:function(){return this.element.children(".jstree-children").first()},get_string:function(b){var c=this.settings.core.strings;return a.isFunction(c)?c.call(this,b):c&&c[b]?c[b]:b},_firstChild:function(a){a=a?a.firstChild:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_nextSibling:function(a){a=a?a.nextSibling:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_previousSibling:function(a){a=a?a.previousSibling:null;while(null!==a&&1!==a.nodeType)a=a.previousSibling;return a},get_node:function(b,c){b&&b.id&&(b=b.id);var d;try{if(this._model.data[b])b=this._model.data[b];else if("string"==typeof b&&this._model.data[b.replace(/^#/,"")])b=this._model.data[b.replace(/^#/,"")];else if("string"==typeof b&&(d=a("#"+b.replace(a.jstree.idregex,"\\$&"),this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else if((d=a(b,this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else{if(!(d=a(b,this.element)).length||!d.hasClass("jstree"))return!1;b=this._model.data[a.jstree.root]}return c&&(b=b.id===a.jstree.root?this.element:a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)),b}catch(e){return!1}},get_path:function(b,c,d){if(b=b.parents?b:this.get_node(b),!b||b.id===a.jstree.root||!b.parents)return!1;var e,f,g=[];for(g.push(d?b.id:b.text),e=0,f=b.parents.length;f>e;e++)g.push(d?b.parents[e]:this.get_text(b.parents[e]));return g=g.reverse().slice(1),c?g.join(c):g},get_next_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this._firstChild(this.get_container_ul()[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}if(b.hasClass("jstree-open")){d=this._firstChild(b.children(".jstree-children")[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);if(null!==d)return a(d)}d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return null!==d?a(d):b.parentsUntil(".jstree",".jstree-node").nextAll(".jstree-node:visible").first()},get_prev_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this.get_container_ul()[0].lastChild;while(d&&0===d.offsetHeight)d=this._previousSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);if(null!==d){b=a(d);while(b.hasClass("jstree-open"))b=b.children(".jstree-children").first().children(".jstree-node:visible:last");return b}return d=b[0].parentNode.parentNode,d&&d.className&&-1!==d.className.indexOf("jstree-node")?a(d):!1},get_parent:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.parent:!1},get_children_dom:function(a){return a=this.get_node(a,!0),a[0]===this.element[0]?this.get_container_ul().children(".jstree-node"):a&&a.length?a.children(".jstree-children").children(".jstree-node"):!1},is_parent:function(a){return a=this.get_node(a),a&&(a.state.loaded===!1||a.children.length>0)},is_loaded:function(a){return a=this.get_node(a),a&&a.state.loaded},is_loading:function(a){return a=this.get_node(a),a&&a.state&&a.state.loading},is_open:function(a){return a=this.get_node(a),a&&a.state.opened},is_closed:function(a){return a=this.get_node(a),a&&this.is_parent(a)&&!a.state.opened},is_leaf:function(a){return!this.is_parent(a)},load_node:function(b,c){var d,e,f,g,h;if(a.isArray(b))return this._load_nodes(b.slice(),c),!0;if(b=this.get_node(b),!b)return c&&c.call(this,b,!1),!1;if(b.state.loaded){for(b.state.loaded=!1,f=0,g=b.parents.length;g>f;f++)this._model.data[b.parents[f]].children_d=a.vakata.array_filter(this._model.data[b.parents[f]].children_d,function(c){return-1===a.inArray(c,b.children_d)});for(d=0,e=b.children_d.length;e>d;d++)this._model.data[b.children_d[d]].state.selected&&(h=!0),delete this._model.data[b.children_d[d]];h&&(this._data.core.selected=a.vakata.array_filter(this._data.core.selected,function(c){return-1===a.inArray(c,b.children_d)})),b.children=[],b.children_d=[],h&&this.trigger("changed",{action:"load_node",node:b,selected:this._data.core.selected})}return b.state.failed=!1,b.state.loading=!0,this.get_node(b,!0).addClass("jstree-loading").attr("aria-busy",!0),this._load_node(b,a.proxy(function(a){b=this._model.data[b.id],b.state.loading=!1,b.state.loaded=a,b.state.failed=!b.state.loaded;var d=this.get_node(b,!0),e=0,f=0,g=this._model.data,h=!1;for(e=0,f=b.children.length;f>e;e++)if(g[b.children[e]]&&!g[b.children[e]].state.hidden){h=!0;break}b.state.loaded&&d&&d.length&&(d.removeClass("jstree-closed jstree-open jstree-leaf"),h?"#"!==b.id&&d.addClass(b.state.opened?"jstree-open":"jstree-closed"):d.addClass("jstree-leaf")),d.removeClass("jstree-loading").attr("aria-busy",!1),this.trigger("load_node",{node:b,status:a}),c&&c.call(this,b,a)},this)),!0},_load_nodes:function(a,b,c,d){var e=!0,f=function(){this._load_nodes(a,b,!0)},g=this._model.data,h,i,j=[];for(h=0,i=a.length;i>h;h++)g[a[h]]&&(!g[a[h]].state.loaded&&!g[a[h]].state.failed||!c&&d)&&(this.is_loading(a[h])||this.load_node(a[h],f),e=!1);if(e){for(h=0,i=a.length;i>h;h++)g[a[h]]&&g[a[h]].state.loaded&&j.push(a[h]);b&&!b.done&&(b.call(this,j),b.done=!0)}},load_all:function(b,c){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var d=[],e=this._model.data,f=e[b.id].children_d,g,h;for(b.state&&!b.state.loaded&&d.push(b.id),g=0,h=f.length;h>g;g++)e[f[g]]&&e[f[g]].state&&!e[f[g]].state.loaded&&d.push(f[g]);d.length?this._load_nodes(d,function(){this.load_all(b,c)}):(c&&c.call(this,b),this.trigger("load_all",{node:b}))},_load_node:function(b,c){var d=this.settings.core.data,e,f=function g(){return 3!==this.nodeType&&8!==this.nodeType};return d?a.isFunction(d)?d.call(this,b,a.proxy(function(d){d===!1?c.call(this,!1):this["string"==typeof d?"_append_html_data":"_append_json_data"](b,"string"==typeof d?a(a.parseHTML(d)).filter(f):d,function(a){c.call(this,a)})},this)):"object"==typeof d?d.url?(d=a.extend(!0,{},d),a.isFunction(d.url)&&(d.url=d.url.call(this,b)),a.isFunction(d.data)&&(d.data=d.data.call(this,b)),a.ajax(d).done(a.proxy(function(d,e,g){var h=g.getResponseHeader("Content-Type");return h&&-1!==h.indexOf("json")||"object"==typeof d?this._append_json_data(b,d,function(a){c.call(this,a)}):h&&-1!==h.indexOf("html")||"string"==typeof d?this._append_html_data(b,a(a.parseHTML(d)).filter(f),function(a){c.call(this,a)}):(this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:g})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))},this)).fail(a.proxy(function(a){this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:a})},c.call(this,!1),this.settings.core.error.call(this,this._data.core.last_error)},this))):(e=a.isArray(d)?a.extend(!0,[],d):a.isPlainObject(d)?a.extend(!0,{},d):d,b.id===a.jstree.root?this._append_json_data(b,e,function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_05",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))):"string"==typeof d?b.id===a.jstree.root?this._append_html_data(b,a(a.parseHTML(d)).filter(f),function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_06",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1)):c.call(this,!1):b.id===a.jstree.root?this._append_html_data(b,this._data.core.original_container_html.clone(!0),function(a){c.call(this,a)}):c.call(this,!1)},_node_changed:function(b){b=this.get_node(b),b&&-1===a.inArray(b.id,this._model.changed)&&this._model.changed.push(b.id)},_append_html_data:function(b,c,d){b=this.get_node(b),b.children=[],b.children_d=[];var e=c.is("ul")?c.children():c,f=b.id,g=[],h=[],i=this._model.data,j=i[f],k=this._data.core.selected.length,l,m,n;for(e.each(a.proxy(function(b,c){l=this._parse_model_from_html(a(c),f,j.parents.concat()),l&&(g.push(l),h.push(l),i[l].children_d.length&&(h=h.concat(i[l].children_d)))},this)),j.children=g,j.children_d=h,m=0,n=j.parents.length;n>m;m++)i[j.parents[m]].children_d=i[j.parents[m]].children_d.concat(h);this.trigger("model",{nodes:h,parent:f}),f!==a.jstree.root?(this._node_changed(f),this.redraw()):(this.get_container_ul().children(".jstree-initial-node").remove(),this.redraw(!0)),this._data.core.selected.length!==k&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)},_append_json_data:function(b,c,d,e){if(null!==this.element){b=this.get_node(b),b.children=[],b.children_d=[],c.d&&(c=c.d,"string"==typeof c&&(c=JSON.parse(c))),a.isArray(c)||(c=[c]);var f=null,g={df:this._model.default_state,dat:c,par:b.id,m:this._model.data,t_id:this._id,t_cnt:this._cnt,sel:this._data.core.selected},h=function(a,b){a.data&&(a=a.data);var c=a.dat,d=a.par,e=[],f=[],g=[],h=a.df,i=a.t_id,j=a.t_cnt,k=a.m,l=k[d],m=a.sel,n,o,p,q,r=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f,i,j,l,m={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(m.state[f]=h[f]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(m.icon=a.data.jstree.icon),(m.icon===b||null===m.icon||""===m.icon)&&(m.icon=!0),a&&a.data&&(m.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(m.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(m.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(m.li_attr[f]=a.li_attr[f]);if(m.li_attr.id||(m.li_attr.id=e),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(m.a_attr[f]=a.a_attr[f]);for(a&&a.children&&a.children===!0&&(m.state.loaded=!1,m.children=[],m.children_d=[]),k[m.id]=m,f=0,i=m.children.length;i>f;f++)j=r(k[m.children[f]],m.id,d),l=k[j],m.children_d.push(j),l.children_d.length&&(m.children_d=m.children_d.concat(l.children_d));return delete a.data,delete a.children,k[m.id].original=a,m.state.selected&&g.push(m.id),m.id},s=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,l,m,n,o;do e="j"+i+"_"+ ++j;while(k[e]);o={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(o.state[f]=h[f]);if(a&&a.id&&(o.id=a.id.toString()),a&&a.text&&(o.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(o.icon=a.data.jstree.icon),(o.icon===b||null===o.icon||""===o.icon)&&(o.icon=!0),a&&a.data&&(o.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(o.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(o.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(o.li_attr[f]=a.li_attr[f]);if(o.li_attr.id&&!o.id&&(o.id=o.li_attr.id.toString()),o.id||(o.id=e),o.li_attr.id||(o.li_attr.id=o.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(o.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,l=a.children.length;l>f;f++)m=s(a.children[f],o.id,d),n=k[m],o.children.push(m),n.children_d.length&&(o.children_d=o.children_d.concat(n.children_d));o.children_d=o.children_d.concat(o.children)}return a&&a.children&&a.children===!0&&(o.state.loaded=!1,o.children=[],o.children_d=[]),delete a.data,delete a.children,o.original=a,k[o.id]=o,o.state.selected&&g.push(o.id),o.id};if(c.length&&c[0].id!==b&&c[0].parent!==b){for(o=0,p=c.length;p>o;o++)c[o].children||(c[o].children=[]),c[o].state||(c[o].state={}),k[c[o].id.toString()]=c[o];for(o=0,p=c.length;p>o;o++)k[c[o].parent.toString()]?(k[c[o].parent.toString()].children.push(c[o].id.toString()),l.children_d.push(c[o].id.toString())):(this._data.core.last_error={error:"parse",plugin:"core",id:"core_07",reason:"Node with invalid parent",data:JSON.stringify({id:c[o].id.toString(),parent:c[o].parent.toString()})},this.settings.core.error.call(this,this._data.core.last_error));for(o=0,p=l.children.length;p>o;o++)n=r(k[l.children[o]],d,l.parents.concat()),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d));for(o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}else{for(o=0,p=c.length;p>o;o++)n=s(c[o],d,l.parents.concat()),n&&(e.push(n),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d)));for(l.children=e,l.children_d=f,o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}return"undefined"!=typeof window&&"undefined"!=typeof window.document?q:void postMessage(q)},i=function(b,c){if(null!==this.element){this._cnt=b.cnt;var e,f=this._model.data;for(e in f)f.hasOwnProperty(e)&&f[e].state&&f[e].state.loading&&b.mod[e]&&(b.mod[e].state.loading=!0);if(this._model.data=b.mod,c){var g,h=b.add,i=b.sel,j=this._data.core.selected.slice();if(f=this._model.data,i.length!==j.length||a.vakata.array_unique(i.concat(j)).length!==i.length){for(e=0,g=i.length;g>e;e++)-1===a.inArray(i[e],h)&&-1===a.inArray(i[e],j)&&(f[i[e]].state.selected=!1);for(e=0,g=j.length;g>e;e++)-1===a.inArray(j[e],i)&&(f[j[e]].state.selected=!0)}}b.add.length&&(this._data.core.selected=this._data.core.selected.concat(b.add)),this.trigger("model",{nodes:b.dpc,parent:b.par}),b.par!==a.jstree.root?(this._node_changed(b.par),this.redraw()):this.redraw(!0),b.add.length&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)}};if(this.settings.core.worker&&window.Blob&&window.URL&&window.Worker)try{null===this._wrk&&(this._wrk=window.URL.createObjectURL(new window.Blob(["self.onmessage = "+h.toString()],{type:"text/javascript"}))),!this._data.core.working||e?(this._data.core.working=!0,f=new window.Worker(this._wrk),f.onmessage=a.proxy(function(a){i.call(this,a.data,!0);try{f.terminate(),f=null}catch(b){}this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1},this),g.par?f.postMessage(g):this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1):this._data.core.worker_queue.push([b,c,d,!0])}catch(j){i.call(this,h(g),!1),this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1}else i.call(this,h(g),!1)}},_parse_model_from_html:function(c,d,e){e=e?[].concat(e):[],d&&e.unshift(d);var f,g,h=this._model.data,i={id:!1,text:!1,icon:!0,parent:d,parents:e,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1},j,k,l;for(j in this._model.default_state)this._model.default_state.hasOwnProperty(j)&&(i.state[j]=this._model.default_state[j]);if(k=a.vakata.attributes(c,!0),a.each(k,function(b,c){return c=a.trim(c),c.length?(i.li_attr[b]=c,void("id"===b&&(i.id=c.toString()))):!0}),k=c.children("a").first(),k.length&&(k=a.vakata.attributes(k,!0),a.each(k,function(b,c){c=a.trim(c),c.length&&(i.a_attr[b]=c)})),k=c.children("a").first().length?c.children("a").first().clone():c.clone(),k.children("ins, i, ul").remove(),k=k.html(),k=a("
      ").html(k),i.text=this.settings.core.force_text?k.text():k.html(),k=c.data(),i.data=k?a.extend(!0,{},k):null,i.state.opened=c.hasClass("jstree-open"),i.state.selected=c.children("a").hasClass("jstree-clicked"),i.state.disabled=c.children("a").hasClass("jstree-disabled"),i.data&&i.data.jstree)for(j in i.data.jstree)i.data.jstree.hasOwnProperty(j)&&(i.state[j]=i.data.jstree[j]);k=c.children("a").children(".jstree-themeicon"),k.length&&(i.icon=k.hasClass("jstree-themeicon-hidden")?!1:k.attr("rel")),i.state.icon!==b&&(i.icon=i.state.icon),(i.icon===b||null===i.icon||""===i.icon)&&(i.icon=!0),k=c.children("ul").children("li");do l="j"+this._id+"_"+ ++this._cnt;while(h[l]);return i.id=i.li_attr.id?i.li_attr.id.toString():l,k.length?(k.each(a.proxy(function(b,c){f=this._parse_model_from_html(a(c),i.id,e),g=this._model.data[f],i.children.push(f),g.children_d.length&&(i.children_d=i.children_d.concat(g.children_d))},this)),i.children_d=i.children_d.concat(i.children)):c.hasClass("jstree-closed")&&(i.state.loaded=!1),i.li_attr["class"]&&(i.li_attr["class"]=i.li_attr["class"].replace("jstree-closed","").replace("jstree-open","")),i.a_attr["class"]&&(i.a_attr["class"]=i.a_attr["class"].replace("jstree-clicked","").replace("jstree-disabled","")),h[i.id]=i,i.state.selected&&this._data.core.selected.push(i.id),i.id},_parse_model_from_flat_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f=this._model.data,g=this._model.default_state,h,i,j,k,l={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(h in g)g.hasOwnProperty(h)&&(l.state[h]=g[h]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),(l.icon===b||null===l.icon||""===l.icon)&&(l.icon=!0),a&&a.data&&(l.data=a.data,a.data.jstree))for(h in a.data.jstree)a.data.jstree.hasOwnProperty(h)&&(l.state[h]=a.data.jstree[h]);if(a&&"object"==typeof a.state)for(h in a.state)a.state.hasOwnProperty(h)&&(l.state[h]=a.state[h]);if(a&&"object"==typeof a.li_attr)for(h in a.li_attr)a.li_attr.hasOwnProperty(h)&&(l.li_attr[h]=a.li_attr[h]);if(l.li_attr.id||(l.li_attr.id=e),a&&"object"==typeof a.a_attr)for(h in a.a_attr)a.a_attr.hasOwnProperty(h)&&(l.a_attr[h]=a.a_attr[h]);for(a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),f[l.id]=l,h=0,i=l.children.length;i>h;h++)j=this._parse_model_from_flat_json(f[l.children[h]],l.id,d),k=f[j],l.children_d.push(j),k.children_d.length&&(l.children_d=l.children_d.concat(k.children_d));return delete a.data,delete a.children,f[l.id].original=a,l.state.selected&&this._data.core.selected.push(l.id),l.id},_parse_model_from_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,g,h,i,j=this._model.data,k=this._model.default_state,l;do e="j"+this._id+"_"+ ++this._cnt;while(j[e]);l={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in k)k.hasOwnProperty(f)&&(l.state[f]=k[f]);if(a&&a.id&&(l.id=a.id.toString()),a&&a.text&&(l.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),(l.icon===b||null===l.icon||""===l.icon)&&(l.icon=!0),a&&a.data&&(l.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(l.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(l.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(l.li_attr[f]=a.li_attr[f]);if(l.li_attr.id&&!l.id&&(l.id=l.li_attr.id.toString()),l.id||(l.id=e),l.li_attr.id||(l.li_attr.id=l.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(l.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,g=a.children.length;g>f;f++)h=this._parse_model_from_json(a.children[f],l.id,d),i=j[h],l.children.push(h),i.children_d.length&&(l.children_d=l.children_d.concat(i.children_d));l.children_d=l.children_d.concat(l.children)}return a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),delete a.data,delete a.children,l.original=a,j[l.id]=l,l.state.selected&&this._data.core.selected.push(l.id),l.id},_redraw:function(){var b=this._model.force_full_redraw?this._model.data[a.jstree.root].children.concat([]):this._model.changed.concat([]),c=i.createElement("UL"),d,e,f,g=this._data.core.focused;for(e=0,f=b.length;f>e;e++)d=this.redraw_node(b[e],!0,this._model.force_full_redraw),d&&this._model.force_full_redraw&&c.appendChild(d);this._model.force_full_redraw&&(c.className=this.get_container_ul()[0].className,c.setAttribute("role","group"),this.element.empty().append(c)),null!==g&&(d=this.get_node(g,!0),d&&d.length&&d.children(".jstree-anchor")[0]!==i.activeElement?d.children(".jstree-anchor").focus():this._data.core.focused=null),this._model.force_full_redraw=!1,this._model.changed=[],this.trigger("redraw",{nodes:b})},redraw:function(a){a&&(this._model.force_full_redraw=!0),this._redraw()},draw_children:function(b){var c=this.get_node(b),d=!1,e=!1,f=!1,g=i;if(!c)return!1;if(c.id===a.jstree.root)return this.redraw(!0);if(b=this.get_node(b,!0), -!b||!b.length)return!1;if(b.children(".jstree-children").remove(),b=b[0],c.children.length&&c.state.loaded){for(f=g.createElement("UL"),f.setAttribute("role","group"),f.className="jstree-children",d=0,e=c.children.length;e>d;d++)f.appendChild(this.redraw_node(c.children[d],!0,!0));b.appendChild(f)}},redraw_node:function(b,c,d,e){var f=this.get_node(b),g=!1,h=!1,j=!1,k=!1,l=!1,m=!1,n="",o=i,p=this._model.data,q=!1,r=!1,s=null,t=0,u=0,v=!1,w=!1;if(!f)return!1;if(f.id===a.jstree.root)return this.redraw(!0);if(c=c||0===f.children.length,b=i.querySelector?this.element[0].querySelector("#"+(-1!=="0123456789".indexOf(f.id[0])?"\\3"+f.id[0]+" "+f.id.substr(1).replace(a.jstree.idregex,"\\$&"):f.id.replace(a.jstree.idregex,"\\$&"))):i.getElementById(f.id))b=a(b),d||(g=b.parent().parent()[0],g===this.element[0]&&(g=null),h=b.index()),c||!f.children.length||b.children(".jstree-children").length||(c=!0),c||(j=b.children(".jstree-children")[0]),q=b.children(".jstree-anchor")[0]===i.activeElement,b.remove();else if(c=!0,!d){if(g=f.parent!==a.jstree.root?a("#"+f.parent.replace(a.jstree.idregex,"\\$&"),this.element)[0]:null,!(null===g||g&&p[f.parent].state.opened))return!1;h=a.inArray(f.id,null===g?p[a.jstree.root].children:p[f.parent].children)}b=this._data.core.node.cloneNode(!0),n="jstree-node ";for(k in f.li_attr)if(f.li_attr.hasOwnProperty(k)){if("id"===k)continue;"class"!==k?b.setAttribute(k,f.li_attr[k]):n+=f.li_attr[k]}for(f.a_attr.id||(f.a_attr.id=f.id+"_anchor"),b.setAttribute("aria-selected",!!f.state.selected),b.setAttribute("aria-level",f.parents.length),b.setAttribute("aria-labelledby",f.a_attr.id),f.state.disabled&&b.setAttribute("aria-disabled",!0),k=0,l=f.children.length;l>k;k++)if(!p[f.children[k]].state.hidden){v=!0;break}if(null!==f.parent&&p[f.parent]&&!f.state.hidden&&(k=a.inArray(f.id,p[f.parent].children),w=f.id,-1!==k))for(k++,l=p[f.parent].children.length;l>k;k++)if(p[p[f.parent].children[k]].state.hidden||(w=p[f.parent].children[k]),w!==f.id)break;f.state.hidden&&(n+=" jstree-hidden"),f.state.loading&&(n+=" jstree-loading"),f.state.loaded&&!v?n+=" jstree-leaf":(n+=f.state.opened&&f.state.loaded?" jstree-open":" jstree-closed",b.setAttribute("aria-expanded",f.state.opened&&f.state.loaded)),w===f.id&&(n+=" jstree-last"),b.id=f.id,b.className=n,n=(f.state.selected?" jstree-clicked":"")+(f.state.disabled?" jstree-disabled":"");for(l in f.a_attr)if(f.a_attr.hasOwnProperty(l)){if("href"===l&&"#"===f.a_attr[l])continue;"class"!==l?b.childNodes[1].setAttribute(l,f.a_attr[l]):n+=" "+f.a_attr[l]}if(n.length&&(b.childNodes[1].className="jstree-anchor "+n),(f.icon&&f.icon!==!0||f.icon===!1)&&(f.icon===!1?b.childNodes[1].childNodes[0].className+=" jstree-themeicon-hidden":-1===f.icon.indexOf("/")&&-1===f.icon.indexOf(".")?b.childNodes[1].childNodes[0].className+=" "+f.icon+" jstree-themeicon-custom":(b.childNodes[1].childNodes[0].style.backgroundImage='url("'+f.icon+'")',b.childNodes[1].childNodes[0].style.backgroundPosition="center center",b.childNodes[1].childNodes[0].style.backgroundSize="auto",b.childNodes[1].childNodes[0].className+=" jstree-themeicon-custom")),this.settings.core.force_text?b.childNodes[1].appendChild(o.createTextNode(f.text)):b.childNodes[1].innerHTML+=f.text,c&&f.children.length&&(f.state.opened||e)&&f.state.loaded){for(m=o.createElement("UL"),m.setAttribute("role","group"),m.className="jstree-children",k=0,l=f.children.length;l>k;k++)m.appendChild(this.redraw_node(f.children[k],c,!0));b.appendChild(m)}if(j&&b.appendChild(j),!d){for(g||(g=this.element[0]),k=0,l=g.childNodes.length;l>k;k++)if(g.childNodes[k]&&g.childNodes[k].className&&-1!==g.childNodes[k].className.indexOf("jstree-children")){s=g.childNodes[k];break}s||(s=o.createElement("UL"),s.setAttribute("role","group"),s.className="jstree-children",g.appendChild(s)),g=s,hf;f++)this.open_node(c[f],d,e);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?(e=e===b?this.settings.core.animation:e,this.is_closed(c)?this.is_loaded(c)?(h=this.get_node(c,!0),i=this,h.length&&(e&&h.children(".jstree-children").length&&h.children(".jstree-children").stop(!0,!0),c.children.length&&!this._firstChild(h.children(".jstree-children")[0])&&this.draw_children(c),e?(this.trigger("before_open",{node:c}),h.children(".jstree-children").css("display","none").end().removeClass("jstree-closed").addClass("jstree-open").attr("aria-expanded",!0).children(".jstree-children").stop(!0,!0).slideDown(e,function(){this.style.display="",i.element&&i.trigger("after_open",{node:c})})):(this.trigger("before_open",{node:c}),h[0].className=h[0].className.replace("jstree-closed","jstree-open"),h[0].setAttribute("aria-expanded",!0))),c.state.opened=!0,d&&d.call(this,c,!0),h.length||this.trigger("before_open",{node:c}),this.trigger("open_node",{node:c}),e&&h.length||this.trigger("after_open",{node:c}),!0):this.is_loading(c)?setTimeout(a.proxy(function(){this.open_node(c,d,e)},this),500):void this.load_node(c,function(a,b){return b?this.open_node(a,d,e):d?d.call(this,a,!1):!1}):(d&&d.call(this,c,!1),!1)):!1},_open_to:function(b){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var c,d,e=b.parents;for(c=0,d=e.length;d>c;c+=1)c!==a.jstree.root&&this.open_node(e[c],!1,0);return a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)},close_node:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.close_node(c[e],d);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?this.is_closed(c)?!1:(d=d===b?this.settings.core.animation:d,g=this,h=this.get_node(c,!0),c.state.opened=!1,this.trigger("close_node",{node:c}),void(h.length?d?h.children(".jstree-children").attr("style","display:block !important").end().removeClass("jstree-open").addClass("jstree-closed").attr("aria-expanded",!1).children(".jstree-children").stop(!0,!0).slideUp(d,function(){this.style.display="",h.children(".jstree-children").remove(),g.element&&g.trigger("after_close",{node:c})}):(h[0].className=h[0].className.replace("jstree-open","jstree-closed"),h.attr("aria-expanded",!1).children(".jstree-children").remove(),this.trigger("after_close",{node:c})):this.trigger("after_close",{node:c}))):!1},toggle_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.toggle_node(b[c]);return!0}return this.is_closed(b)?this.open_node(b):this.is_open(b)?this.close_node(b):void 0},open_all:function(b,c,d){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var e=b.id===a.jstree.root?this.get_container_ul():this.get_node(b,!0),f,g,h;if(!e.length){for(f=0,g=b.children_d.length;g>f;f++)this.is_closed(this._model.data[b.children_d[f]])&&(this._model.data[b.children_d[f]].state.opened=!0);return this.trigger("open_all",{node:b})}d=d||e,h=this,e=this.is_closed(b)?e.find(".jstree-closed").addBack():e.find(".jstree-closed"),e.each(function(){h.open_node(this,function(a,b){b&&this.is_parent(a)&&this.open_all(a,c,d)},c||0)}),0===d.find(".jstree-closed").length&&this.trigger("open_all",{node:this.get_node(d)})},close_all:function(b,c){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var d=b.id===a.jstree.root?this.get_container_ul():this.get_node(b,!0),e=this,f,g;for(d.length&&(d=this.is_open(b)?d.find(".jstree-open").addBack():d.find(".jstree-open"),a(d.get().reverse()).each(function(){e.close_node(this,c||0)})),f=0,g=b.children_d.length;g>f;f++)this._model.data[b.children_d[f]].state.opened=!1;this.trigger("close_all",{node:b})},is_disabled:function(a){return a=this.get_node(a),a&&a.state&&a.state.disabled},enable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_node(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.state.disabled=!1,this.get_node(b,!0).children(".jstree-anchor").removeClass("jstree-disabled").attr("aria-disabled",!1),void this.trigger("enable_node",{node:b})):!1},disable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_node(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.state.disabled=!0,this.get_node(b,!0).children(".jstree-anchor").addClass("jstree-disabled").attr("aria-disabled",!0),void this.trigger("disable_node",{node:b})):!1},is_hidden:function(a){return a=this.get_node(a),a.state.hidden===!0},hide_node:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.hide_node(b[d],!0);return c||this.redraw(),!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?void(b.state.hidden||(b.state.hidden=!0,this._node_changed(b.parent),c||this.redraw(),this.trigger("hide_node",{node:b}))):!1},show_node:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.show_node(b[d],!0);return c||this.redraw(),!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?void(b.state.hidden&&(b.state.hidden=!1,this._node_changed(b.parent),c||this.redraw(),this.trigger("show_node",{node:b}))):!1},hide_all:function(b){var c,d=this._model.data,e=[];for(c in d)d.hasOwnProperty(c)&&c!==a.jstree.root&&!d[c].state.hidden&&(d[c].state.hidden=!0,e.push(c));return this._model.force_full_redraw=!0,b||this.redraw(),this.trigger("hide_all",{nodes:e}),e},show_all:function(b){var c,d=this._model.data,e=[];for(c in d)d.hasOwnProperty(c)&&c!==a.jstree.root&&d[c].state.hidden&&(d[c].state.hidden=!1,e.push(c));return this._model.force_full_redraw=!0,b||this.redraw(),this.trigger("show_all",{nodes:e}),e},activate_node:function(a,c){if(this.is_disabled(a))return!1;if(c&&"object"==typeof c||(c={}),this._data.core.last_clicked=this._data.core.last_clicked&&this._data.core.last_clicked.id!==b?this.get_node(this._data.core.last_clicked.id):null,this._data.core.last_clicked&&!this._data.core.last_clicked.state.selected&&(this._data.core.last_clicked=null),!this._data.core.last_clicked&&this._data.core.selected.length&&(this._data.core.last_clicked=this.get_node(this._data.core.selected[this._data.core.selected.length-1])),this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&(!c.shiftKey||this._data.core.last_clicked&&this.get_parent(a)&&this.get_parent(a)===this._data.core.last_clicked.parent))if(c.shiftKey){var d=this.get_node(a).id,e=this._data.core.last_clicked.id,f=this.get_node(this._data.core.last_clicked.parent).children,g=!1,h,i;for(h=0,i=f.length;i>h;h+=1)f[h]===d&&(g=!g),f[h]===e&&(g=!g),this.is_disabled(f[h])||!g&&f[h]!==d&&f[h]!==e?this.deselect_node(f[h],!0,c):this.is_hidden(f[h])||this.select_node(f[h],!0,!1,c);this.trigger("changed",{action:"select_node",node:this.get_node(a),selected:this._data.core.selected,event:c})}else this.is_selected(a)?this.deselect_node(a,!1,c):this.select_node(a,!1,!1,c);else!this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&this.is_selected(a)?this.deselect_node(a,!1,c):(this.deselect_all(!0),this.select_node(a,!1,!1,c),this._data.core.last_clicked=this.get_node(a));this.trigger("activate_node",{node:this.get_node(a),event:c})},hover_node:function(a){if(a=this.get_node(a,!0),!a||!a.length||a.children(".jstree-hovered").length)return!1;var b=this.element.find(".jstree-hovered"),c=this.element;b&&b.length&&this.dehover_node(b),a.children(".jstree-anchor").addClass("jstree-hovered"),this.trigger("hover_node",{node:this.get_node(a)}),setTimeout(function(){c.attr("aria-activedescendant",a[0].id)},0)},dehover_node:function(a){return a=this.get_node(a,!0),a&&a.length&&a.children(".jstree-hovered").length?(a.children(".jstree-anchor").removeClass("jstree-hovered"),void this.trigger("dehover_node",{node:this.get_node(a)})):!1},select_node:function(b,c,d,e){var f,g,h,i;if(a.isArray(b)){for(b=b.slice(),g=0,h=b.length;h>g;g++)this.select_node(b[g],c,d,e);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=this.get_node(b,!0),void(b.state.selected||(b.state.selected=!0,this._data.core.selected.push(b.id),d||(f=this._open_to(b)),f&&f.length&&f.attr("aria-selected",!0).children(".jstree-anchor").addClass("jstree-clicked"),this.trigger("select_node",{node:b,selected:this._data.core.selected,event:e}),c||this.trigger("changed",{action:"select_node",node:b,selected:this._data.core.selected,event:e})))):!1},deselect_node:function(b,c,d){var e,f,g;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.deselect_node(b[e],c,d);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(g=this.get_node(b,!0),void(b.state.selected&&(b.state.selected=!1,this._data.core.selected=a.vakata.array_remove_item(this._data.core.selected,b.id),g.length&&g.attr("aria-selected",!1).children(".jstree-anchor").removeClass("jstree-clicked"),this.trigger("deselect_node",{node:b,selected:this._data.core.selected,event:d}),c||this.trigger("changed",{action:"deselect_node",node:b,selected:this._data.core.selected,event:d})))):!1},select_all:function(b){var c=this._data.core.selected.concat([]),d,e;for(this._data.core.selected=this._model.data[a.jstree.root].children_d.concat(),d=0,e=this._data.core.selected.length;e>d;d++)this._model.data[this._data.core.selected[d]]&&(this._model.data[this._data.core.selected[d]].state.selected=!0);this.redraw(!0),this.trigger("select_all",{selected:this._data.core.selected}),b||this.trigger("changed",{action:"select_all",selected:this._data.core.selected,old_selection:c})},deselect_all:function(a){var b=this._data.core.selected.concat([]),c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)this._model.data[this._data.core.selected[c]]&&(this._model.data[this._data.core.selected[c]].state.selected=!1);this._data.core.selected=[],this.element.find(".jstree-clicked").removeClass("jstree-clicked").parent().attr("aria-selected",!1),this.trigger("deselect_all",{selected:this._data.core.selected,node:b}),a||this.trigger("changed",{action:"deselect_all",selected:this._data.core.selected,old_selection:b})},is_selected:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.state.selected:!1},get_selected:function(b){return b?a.map(this._data.core.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.core.selected.slice()},get_top_selected:function(b){var c=this.get_selected(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},get_bottom_selected:function(b){var c=this.get_selected(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},get_state:function(){var b={core:{open:[],scroll:{left:this.element.scrollLeft(),top:this.element.scrollTop()},selected:[]}},c;for(c in this._model.data)this._model.data.hasOwnProperty(c)&&c!==a.jstree.root&&(this._model.data[c].state.opened&&b.core.open.push(c),this._model.data[c].state.selected&&b.core.selected.push(c));return b},set_state:function(c,d){if(c){if(c.core&&c.core.selected&&c.core.initial_selection===b&&(c.core.initial_selection=this._data.core.selected.concat([]).sort().join(",")),c.core){var e,f,g,h,i;if(c.core.open)return a.isArray(c.core.open)&&c.core.open.length?this._load_nodes(c.core.open,function(a){this.open_node(a,!1,0),delete c.core.open,this.set_state(c,d)}):(delete c.core.open,this.set_state(c,d)),!1;if(c.core.scroll)return c.core.scroll&&c.core.scroll.left!==b&&this.element.scrollLeft(c.core.scroll.left),c.core.scroll&&c.core.scroll.top!==b&&this.element.scrollTop(c.core.scroll.top),delete c.core.scroll,this.set_state(c,d),!1;if(c.core.selected)return h=this,(c.core.initial_selection===b||c.core.initial_selection===this._data.core.selected.concat([]).sort().join(","))&&(this.deselect_all(),a.each(c.core.selected,function(a,b){h.select_node(b,!1,!0)})),delete c.core.initial_selection,delete c.core.selected,this.set_state(c,d),!1;for(i in c)c.hasOwnProperty(i)&&"core"!==i&&-1===a.inArray(i,this.settings.plugins)&&delete c[i];if(a.isEmptyObject(c.core))return delete c.core,this.set_state(c,d),!1}return a.isEmptyObject(c)?(c=null,d&&d.call(this),this.trigger("set_state"),!1):!0}return!1},refresh:function(b,c){this._data.core.state=c===!0?{}:this.get_state(),c&&a.isFunction(c)&&(this._data.core.state=c.call(this,this._data.core.state)),this._cnt=0,this._model.data={},this._model.data[a.jstree.root]={id:a.jstree.root,parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}},this._data.core.selected=[],this._data.core.last_clicked=null,this._data.core.focused=null;var d=this.get_container_ul()[0].className;b||(this.element.html(""),this.element.attr("aria-activedescendant","j"+this._id+"_loading")),this.load_node(a.jstree.root,function(b,c){c&&(this.get_container_ul()[0].className=d,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.set_state(a.extend(!0,{},this._data.core.state),function(){this.trigger("refresh")})),this._data.core.state=null})},refresh_node:function(b){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var c=[],d=[],e=this._data.core.selected.concat([]);d.push(b.id),b.state.opened===!0&&c.push(b.id),this.get_node(b,!0).find(".jstree-open").each(function(){d.push(this.id),c.push(this.id)}),this._load_nodes(d,a.proxy(function(a){this.open_node(c,!1,0),this.select_node(e),this.trigger("refresh_node",{node:b,nodes:a})},this),!1,!0)},set_id:function(b,c){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var d,e,f=this._model.data,g=b.id;for(c=c.toString(),f[b.parent].children[a.inArray(b.id,f[b.parent].children)]=c,d=0,e=b.parents.length;e>d;d++)f[b.parents[d]].children_d[a.inArray(b.id,f[b.parents[d]].children_d)]=c;for(d=0,e=b.children.length;e>d;d++)f[b.children[d]].parent=c;for(d=0,e=b.children_d.length;e>d;d++)f[b.children_d[d]].parents[a.inArray(b.id,f[b.children_d[d]].parents)]=c;return d=a.inArray(b.id,this._data.core.selected),-1!==d&&(this._data.core.selected[d]=c),d=this.get_node(b.id,!0),d&&(d.attr("id",c),this.element.attr("aria-activedescendant")===b.id&&this.element.attr("aria-activedescendant",c)),delete f[b.id],b.id=c,b.li_attr.id=c,f[c]=b,this.trigger("set_id",{node:b,"new":b.id,old:g}),!0},get_text:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.text:!1},set_text:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.set_text(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.text=c,this.get_node(b,!0).length&&this.redraw_node(b.id),this.trigger("set_text",{obj:b,text:c}),!0):!1},get_json:function(b,c,d){if(b=this.get_node(b||a.jstree.root),!b)return!1;c&&c.flat&&!d&&(d=[]);var e={id:b.id,text:b.text,icon:this.get_icon(b),li_attr:a.extend(!0,{},b.li_attr),a_attr:a.extend(!0,{},b.a_attr),state:{},data:c&&c.no_data?!1:a.extend(!0,a.isArray(b.data)?[]:{},b.data)},f,g;if(c&&c.flat?e.parent=b.parent:e.children=[],c&&c.no_state)delete e.state;else for(f in b.state)b.state.hasOwnProperty(f)&&(e.state[f]=b.state[f]);if(c&&c.no_li_attr&&delete e.li_attr,c&&c.no_a_attr&&delete e.a_attr,c&&c.no_id&&(delete e.id,e.li_attr&&e.li_attr.id&&delete e.li_attr.id,e.a_attr&&e.a_attr.id&&delete e.a_attr.id),c&&c.flat&&b.id!==a.jstree.root&&d.push(e),!c||!c.no_children)for(f=0,g=b.children.length;g>f;f++)c&&c.flat?this.get_json(b.children[f],c,d):e.children.push(this.get_json(b.children[f],c));return c&&c.flat?d:b.id===a.jstree.root?e.children:e},create_node:function(c,d,e,f,g){if(null===c&&(c=a.jstree.root),c=this.get_node(c),!c)return!1;if(e=e===b?"last":e,!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(c))return this.load_node(c,function(){this.create_node(c,d,e,f,!0)});d||(d={text:this.get_string("New node")}),d="string"==typeof d?{text:d}:a.extend(!0,{},d),d.text===b&&(d.text=this.get_string("New node"));var h,i,j,k;switch(c.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":h=this.get_node(c.parent),e=a.inArray(c.id,h.children),c=h;break;case"after":h=this.get_node(c.parent),e=a.inArray(c.id,h.children)+1,c=h;break;case"inside":case"first":e=0;break;case"last":e=c.children.length;break;default:e||(e=0)}if(e>c.children.length&&(e=c.children.length),d.id||(d.id=!0),!this.check("create_node",d,c,e))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(d.id===!0&&delete d.id,d=this._parse_model_from_json(d,c.id,c.parents.concat()),!d)return!1;for(h=this.get_node(d),i=[],i.push(d),i=i.concat(h.children_d),this.trigger("model",{nodes:i,parent:c.id}),c.children_d=c.children_d.concat(i),j=0,k=c.parents.length;k>j;j++)this._model.data[c.parents[j]].children_d=this._model.data[c.parents[j]].children_d.concat(i);for(d=h,h=[],j=0,k=c.children.length;k>j;j++)h[j>=e?j+1:j]=c.children[j];return h[e]=d.id,c.children=h,this.redraw_node(c,!0),this.trigger("create_node",{node:this.get_node(d),parent:c.id,position:e}),f&&f.call(this,this.get_node(d)),d.id},rename_node:function(b,c){var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.rename_node(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=b.text,this.check("rename_node",b,this.get_parent(b),c)?(this.set_text(b,c),this.trigger("rename_node",{node:b,text:c,old:f}),!0):(this.settings.core.error.call(this,this._data.core.last_error),!1)):!1},delete_node:function(b){var c,d,e,f,g,h,i,j,k,l,m,n;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.delete_node(b[c]);return!0}if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;if(e=this.get_node(b.parent),f=a.inArray(b.id,e.children),l=!1,!this.check("delete_node",b,e,f))return this.settings.core.error.call(this,this._data.core.last_error),!1;for(-1!==f&&(e.children=a.vakata.array_remove(e.children,f)),g=b.children_d.concat([]),g.push(b.id),h=0,i=b.parents.length;i>h;h++)this._model.data[b.parents[h]].children_d=a.vakata.array_filter(this._model.data[b.parents[h]].children_d,function(b){return-1===a.inArray(b,g)});for(j=0,k=g.length;k>j;j++)if(this._model.data[g[j]].state.selected){l=!0;break}for(l&&(this._data.core.selected=a.vakata.array_filter(this._data.core.selected,function(b){return-1===a.inArray(b,g)})),this.trigger("delete_node",{node:b,parent:e.id}),l&&this.trigger("changed",{action:"delete_node",node:b,selected:this._data.core.selected,parent:e.id}),j=0,k=g.length;k>j;j++)delete this._model.data[g[j]];return-1!==a.inArray(this._data.core.focused,g)&&(this._data.core.focused=null,m=this.element[0].scrollTop,n=this.element[0].scrollLeft,e.id===a.jstree.root?this._model.data[a.jstree.root].children[0]&&this.get_node(this._model.data[a.jstree.root].children[0],!0).children(".jstree-anchor").focus():this.get_node(e,!0).children(".jstree-anchor").focus(),this.element[0].scrollTop=m,this.element[0].scrollLeft=n),this.redraw_node(e,!0),!0},check:function(b,c,d,e,f){c=c&&c.id?c:this.get_node(c),d=d&&d.id?d:this.get_node(d);var g=b.match(/^move_node|copy_node|create_node$/i)?d:c,h=this.settings.core.check_callback;return"move_node"!==b&&"copy_node"!==b||f&&f.is_multi||c.id!==d.id&&("move_node"!==b||a.inArray(c.id,d.children)!==e)&&-1===a.inArray(d.id,c.children_d)?(g&&g.data&&(g=g.data),g&&g.functions&&(g.functions[b]===!1||g.functions[b]===!0)?(g.functions[b]===!1&&(this._data.core.last_error={error:"check",plugin:"core",id:"core_02",reason:"Node data prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})}),g.functions[b]):h===!1||a.isFunction(h)&&h.call(this,b,c,d,e,f)===!1||h&&h[b]===!1?(this._data.core.last_error={error:"check",plugin:"core",id:"core_03",reason:"User config for core.check_callback prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1):!0):(this._data.core.last_error={error:"check",plugin:"core",id:"core_01",reason:"Moving parent inside child",data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1)},last_error:function(){return this._data.core.last_error},move_node:function(c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t,u,v,w;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.move_node(c,d,e,f,!0,!1,i)});if(a.isArray(c)){if(1!==c.length){for(j=0,k=c.length;k>j;j++)(r=this.move_node(c[j],d,e,f,g,!1,i))&&(d=r,e="after");return this.redraw(),!0}c=c[0]}if(c=c&&c.id?c:this.get_node(c),!c||c.id===a.jstree.root)return!1;if(l=(c.parent||a.jstree.root).toString(),n=e.toString().match(/^(before|after)$/)&&d.id!==a.jstree.root?this.get_node(d.parent):d,o=i?i:this._model.data[c.id]?this:a.jstree.reference(c.id),p=!o||!o._id||this._id!==o._id,m=o&&o._id&&l&&o._model.data[l]&&o._model.data[l].children?a.inArray(c.id,o._model.data[l].children):-1,o&&o._id&&(c=o._model.data[c.id]),p)return(r=this.copy_node(c,d,e,f,g,!1,i))?(o&&o.delete_node(c),r):!1;switch(d.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,n.children);break;case"after":e=a.inArray(d.id,n.children)+1;break;case"inside":case"first":e=0;break;case"last":e=n.children.length;break;default:e||(e=0)}if(e>n.children.length&&(e=n.children.length),!this.check("move_node",c,n,e,{core:!0,origin:i,is_multi:o&&o._id&&o._id!==this._id,is_foreign:!o||!o._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(c.parent===n.id){for(q=n.children.concat(),r=a.inArray(c.id,q),-1!==r&&(q=a.vakata.array_remove(q,r),e>r&&e--),r=[],s=0,t=q.length;t>s;s++)r[s>=e?s+1:s]=q[s];r[e]=c.id,n.children=r,this._node_changed(n.id),this.redraw(n.id===a.jstree.root)}else{for(r=c.children_d.concat(),r.push(c.id),s=0,t=c.parents.length;t>s;s++){for(q=[],w=o._model.data[c.parents[s]].children_d,u=0,v=w.length;v>u;u++)-1===a.inArray(w[u],r)&&q.push(w[u]);o._model.data[c.parents[s]].children_d=q}for(o._model.data[l].children=a.vakata.array_remove_item(o._model.data[l].children,c.id),s=0,t=n.parents.length;t>s;s++)this._model.data[n.parents[s]].children_d=this._model.data[n.parents[s]].children_d.concat(r);for(q=[],s=0,t=n.children.length;t>s;s++)q[s>=e?s+1:s]=n.children[s];for(q[e]=c.id,n.children=q,n.children_d.push(c.id),n.children_d=n.children_d.concat(c.children_d),c.parent=n.id,r=n.parents.concat(),r.unshift(n.id),w=c.parents.length,c.parents=r,r=r.concat(),s=0,t=c.children_d.length;t>s;s++)this._model.data[c.children_d[s]].parents=this._model.data[c.children_d[s]].parents.slice(0,-1*w),Array.prototype.push.apply(this._model.data[c.children_d[s]].parents,r);(l===a.jstree.root||n.id===a.jstree.root)&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||(this._node_changed(l),this._node_changed(n.id)),h||this.redraw()}return f&&f.call(this,c,n,e),this.trigger("move_node",{node:c,parent:n.id,position:e,old_parent:l,old_position:m,is_multi:o&&o._id&&o._id!==this._id,is_foreign:!o||!o._id,old_instance:o,new_instance:this}),c.id},copy_node:function(c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.copy_node(c,d,e,f,!0,!1,i)});if(a.isArray(c)){if(1!==c.length){for(j=0,k=c.length;k>j;j++)(m=this.copy_node(c[j],d,e,f,g,!0,i))&&(d=m,e="after");return this.redraw(),!0}c=c[0]}if(c=c&&c.id?c:this.get_node(c),!c||c.id===a.jstree.root)return!1;switch(q=(c.parent||a.jstree.root).toString(),r=e.toString().match(/^(before|after)$/)&&d.id!==a.jstree.root?this.get_node(d.parent):d,s=i?i:this._model.data[c.id]?this:a.jstree.reference(c.id),t=!s||!s._id||this._id!==s._id,s&&s._id&&(c=s._model.data[c.id]),d.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,r.children);break;case"after":e=a.inArray(d.id,r.children)+1;break;case"inside":case"first":e=0;break;case"last":e=r.children.length;break;default:e||(e=0)}if(e>r.children.length&&(e=r.children.length),!this.check("copy_node",c,r,e,{core:!0,origin:i,is_multi:s&&s._id&&s._id!==this._id,is_foreign:!s||!s._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(p=s?s.get_json(c,{no_id:!0,no_data:!0,no_state:!0}):c,!p)return!1;if(p.id===!0&&delete p.id,p=this._parse_model_from_json(p,r.id,r.parents.concat()),!p)return!1;for(m=this.get_node(p),c&&c.state&&c.state.loaded===!1&&(m.state.loaded=!1),l=[],l.push(p),l=l.concat(m.children_d),this.trigger("model",{nodes:l,parent:r.id}),n=0,o=r.parents.length;o>n;n++)this._model.data[r.parents[n]].children_d=this._model.data[r.parents[n]].children_d.concat(l);for(l=[],n=0,o=r.children.length;o>n;n++)l[n>=e?n+1:n]=r.children[n];return l[e]=m.id,r.children=l,r.children_d.push(m.id),r.children_d=r.children_d.concat(m.children_d),r.id===a.jstree.root&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||this._node_changed(r.id),h||this.redraw(r.id===a.jstree.root),f&&f.call(this,m,r,e),this.trigger("copy_node",{node:m,original:c,parent:r.id,position:e,old_parent:q,old_position:s&&s._id&&q&&s._model.data[q]&&s._model.data[q].children?a.inArray(c.id,s._model.data[q].children):-1,is_multi:s&&s._id&&s._id!==this._id,is_foreign:!s||!s._id,old_instance:s,new_instance:this}),m.id},cut:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&g.id!==a.jstree.root&&c.push(g);return c.length?(d=c,f=this,e="move_node",void this.trigger("cut",{node:b})):!1},copy:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&g.id!==a.jstree.root&&c.push(g);return c.length?(d=c,f=this,e="copy_node",void this.trigger("copy",{node:b})):!1},get_buffer:function(){return{mode:e,node:d,inst:f}},can_paste:function(){return e!==!1&&d!==!1},paste:function(a,b){return a=this.get_node(a),a&&e&&e.match(/^(copy_node|move_node)$/)&&d?(this[e](d,a,b,!1,!1,!1,f)&&this.trigger("paste",{parent:a.id,node:d,mode:e}),d=!1,e=!1,void(f=!1)):!1},clear_buffer:function(){d=!1,e=!1,f=!1,this.trigger("clear_buffer")},edit:function(b,c,d){var e,f,g,h,j,k,l,m,n,o=!1;return(b=this.get_node(b))?this.check("edit",b,this.get_parent(b))?(n=b,c="string"==typeof c?c:b.text,this.set_text(b,""),b=this._open_to(b),n.text=c,e=this._data.core.rtl,f=this.element.width(),this._data.core.focused=n.id,g=b.children(".jstree-anchor").focus(),h=a(""),j=c,k=a("
      ",{css:{position:"absolute",top:"-200px",left:e?"0px":"-1000px",visibility:"hidden"}}).appendTo("body"),l=a("",{value:j,"class":"jstree-rename-input",css:{padding:"0",border:"1px solid silver","box-sizing":"border-box",display:"inline-block",height:this._data.core.li_height+"px",lineHeight:this._data.core.li_height+"px",width:"150px"},blur:a.proxy(function(c){c.stopImmediatePropagation(),c.preventDefault();var e=h.children(".jstree-rename-input"),f=e.val(),i=this.settings.core.force_text,m;""===f&&(f=j),k.remove(),h.replaceWith(g),h.remove(),j=i?j:a("
      ").append(a.parseHTML(j)).html(),this.set_text(b,j),m=!!this.rename_node(b,i?a("
      ").text(f).text():a("
      ").append(a.parseHTML(f)).html()),m||this.set_text(b,j),this._data.core.focused=n.id,setTimeout(a.proxy(function(){var a=this.get_node(n.id,!0); -a.length&&(this._data.core.focused=n.id,a.children(".jstree-anchor").focus())},this),0),d&&d.call(this,n,m,o),l=null},this),keydown:function(a){var b=a.which;27===b&&(o=!0,this.value=j),(27===b||13===b||37===b||38===b||39===b||40===b||32===b)&&a.stopImmediatePropagation(),(27===b||13===b)&&(a.preventDefault(),this.blur())},click:function(a){a.stopImmediatePropagation()},mousedown:function(a){a.stopImmediatePropagation()},keyup:function(a){l.width(Math.min(k.text("pW"+this.value).width(),f))},keypress:function(a){return 13===a.which?!1:void 0}}),m={fontFamily:g.css("fontFamily")||"",fontSize:g.css("fontSize")||"",fontWeight:g.css("fontWeight")||"",fontStyle:g.css("fontStyle")||"",fontStretch:g.css("fontStretch")||"",fontVariant:g.css("fontVariant")||"",letterSpacing:g.css("letterSpacing")||"",wordSpacing:g.css("wordSpacing")||""},h.attr("class",g.attr("class")).append(g.contents().clone()).append(l),g.replaceWith(h),k.css(m),l.css(m).width(Math.min(k.text("pW"+l[0].value).width(),f))[0].select(),void a(i).one("mousedown.jstree touchstart.jstree dnd_start.vakata",function(b){l&&b.target!==l&&a(l).blur()})):(this.settings.core.error.call(this,this._data.core.last_error),!1):!1},set_theme:function(b,c){if(!b)return!1;if(c===!0){var d=this.settings.core.themes.dir;d||(d=a.jstree.path+"/themes"),c=d+"/"+b+"/style.css"}c&&-1===a.inArray(c,g)&&(a("head").append(''),g.push(c)),this._data.core.themes.name&&this.element.removeClass("jstree-"+this._data.core.themes.name),this._data.core.themes.name=b,this.element.addClass("jstree-"+b),this.element[this.settings.core.themes.responsive?"addClass":"removeClass"]("jstree-"+b+"-responsive"),this.trigger("set_theme",{theme:b})},get_theme:function(){return this._data.core.themes.name},set_theme_variant:function(a){this._data.core.themes.variant&&this.element.removeClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant),this._data.core.themes.variant=a,a&&this.element.addClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant)},get_theme_variant:function(){return this._data.core.themes.variant},show_stripes:function(){this._data.core.themes.stripes=!0,this.get_container_ul().addClass("jstree-striped"),this.trigger("show_stripes")},hide_stripes:function(){this._data.core.themes.stripes=!1,this.get_container_ul().removeClass("jstree-striped"),this.trigger("hide_stripes")},toggle_stripes:function(){this._data.core.themes.stripes?this.hide_stripes():this.show_stripes()},show_dots:function(){this._data.core.themes.dots=!0,this.get_container_ul().removeClass("jstree-no-dots"),this.trigger("show_dots")},hide_dots:function(){this._data.core.themes.dots=!1,this.get_container_ul().addClass("jstree-no-dots"),this.trigger("hide_dots")},toggle_dots:function(){this._data.core.themes.dots?this.hide_dots():this.show_dots()},show_icons:function(){this._data.core.themes.icons=!0,this.get_container_ul().removeClass("jstree-no-icons"),this.trigger("show_icons")},hide_icons:function(){this._data.core.themes.icons=!1,this.get_container_ul().addClass("jstree-no-icons"),this.trigger("hide_icons")},toggle_icons:function(){this._data.core.themes.icons?this.hide_icons():this.show_icons()},show_ellipsis:function(){this._data.core.themes.ellipsis=!0,this.get_container_ul().addClass("jstree-ellipsis"),this.trigger("show_ellipsis")},hide_ellipsis:function(){this._data.core.themes.ellipsis=!1,this.get_container_ul().removeClass("jstree-ellipsis"),this.trigger("hide_ellipsis")},toggle_ellipsis:function(){this._data.core.themes.ellipsis?this.hide_ellipsis():this.show_ellipsis()},set_icon:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.set_icon(c[e],d);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?(h=c.icon,c.icon=d===!0||null===d||d===b||""===d?!0:d,g=this.get_node(c,!0).children(".jstree-anchor").children(".jstree-themeicon"),d===!1?(g.removeClass("jstree-themeicon-custom "+h).css("background","").removeAttr("rel"),this.hide_icon(c)):d===!0||null===d||d===b||""===d?(g.removeClass("jstree-themeicon-custom "+h).css("background","").removeAttr("rel"),h===!1&&this.show_icon(c)):-1===d.indexOf("/")&&-1===d.indexOf(".")?(g.removeClass(h).css("background",""),g.addClass(d+" jstree-themeicon-custom").attr("rel",d),h===!1&&this.show_icon(c)):(g.removeClass(h).css("background",""),g.addClass("jstree-themeicon-custom").css("background","url('"+d+"') center center no-repeat").attr("rel",d),h===!1&&this.show_icon(c)),!0):!1},get_icon:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.icon:!1},hide_icon:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.hide_icon(b[c]);return!0}return b=this.get_node(b),b&&b!==a.jstree.root?(b.icon=!1,this.get_node(b,!0).children(".jstree-anchor").children(".jstree-themeicon").addClass("jstree-themeicon-hidden"),!0):!1},show_icon:function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.show_icon(b[c]);return!0}return b=this.get_node(b),b&&b!==a.jstree.root?(e=this.get_node(b,!0),b.icon=e.length?e.children(".jstree-anchor").children(".jstree-themeicon").attr("rel"):!0,b.icon||(b.icon=!0),e.children(".jstree-anchor").children(".jstree-themeicon").removeClass("jstree-themeicon-hidden"),!0):!1}},a.vakata={},a.vakata.attributes=function(b,c){b=a(b)[0];var d=c?{}:[];return b&&b.attributes&&a.each(b.attributes,function(b,e){-1===a.inArray(e.name.toLowerCase(),["style","contenteditable","hasfocus","tabindex"])&&null!==e.value&&""!==a.trim(e.value)&&(c?d[e.name]=e.value:d.push(e.name))}),d},a.vakata.array_unique=function(a){var c=[],d,e,f,g={};for(d=0,f=a.length;f>d;d++)g[a[d]]===b&&(c.push(a[d]),g[a[d]]=!0);return c},a.vakata.array_remove=function(a,b){return a.splice(b,1),a},a.vakata.array_remove_item=function(b,c){var d=a.inArray(c,b);return-1!==d?a.vakata.array_remove(b,d):b},a.vakata.array_filter=function(a,b,c,d,e){if(a.filter)return a.filter(b,c);d=[];for(e in a)~~e+""==e+""&&e>=0&&b.call(c,a[e],+e,a)&&d.push(a[e]);return d},a.jstree.plugins.changed=function(a,b){var c=[];this.trigger=function(a,d){var e,f;if(d||(d={}),"changed"===a.replace(".jstree","")){d.changed={selected:[],deselected:[]};var g={};for(e=0,f=c.length;f>e;e++)g[c[e]]=1;for(e=0,f=d.selected.length;f>e;e++)g[d.selected[e]]?g[d.selected[e]]=2:d.changed.selected.push(d.selected[e]);for(e=0,f=c.length;f>e;e++)1===g[c[e]]&&d.changed.deselected.push(c[e]);c=d.selected.slice()}b.trigger.call(this,a,d)},this.refresh=function(a,d){return c=[],b.refresh.apply(this,arguments)}};var j=i.createElement("I");j.className="jstree-icon jstree-checkbox",j.setAttribute("role","presentation"),a.jstree.defaults.checkbox={visible:!0,three_state:!0,whole_node:!0,keep_selected_style:!0,cascade:"",tie_selection:!0,cascade_to_disabled:!0,cascade_to_hidden:!0},a.jstree.plugins.checkbox=function(c,d){this.bind=function(){d.bind.call(this),this._data.checkbox.uto=!1,this._data.checkbox.selected=[],this.settings.checkbox.three_state&&(this.settings.checkbox.cascade="up+down+undetermined"),this.element.on("init.jstree",a.proxy(function(){this._data.checkbox.visible=this.settings.checkbox.visible,this.settings.checkbox.keep_selected_style||this.element.addClass("jstree-checkbox-no-clicked"),this.settings.checkbox.tie_selection&&this.element.addClass("jstree-checkbox-selection")},this)).on("loading.jstree",a.proxy(function(){this[this._data.checkbox.visible?"show_checkboxes":"hide_checkboxes"]()},this)),-1!==this.settings.checkbox.cascade.indexOf("undetermined")&&this.element.on("changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree",a.proxy(function(){this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)},this)),this.settings.checkbox.tie_selection||this.element.on("model.jstree",a.proxy(function(a,b){var c=this._model.data,d=c[b.parent],e=b.nodes,f,g;for(f=0,g=e.length;g>f;f++)c[e[f]].state.checked=c[e[f]].state.checked||c[e[f]].original&&c[e[f]].original.state&&c[e[f]].original.state.checked,c[e[f]].state.checked&&this._data.checkbox.selected.push(e[f])},this)),(-1!==this.settings.checkbox.cascade.indexOf("up")||-1!==this.settings.checkbox.cascade.indexOf("down"))&&this.element.on("model.jstree",a.proxy(function(b,c){var d=this._model.data,e=d[c.parent],f=c.nodes,g=[],h,i,j,k,l,m,n=this.settings.checkbox.cascade,o=this.settings.checkbox.tie_selection;if(-1!==n.indexOf("down"))if(e.state[o?"selected":"checked"]){for(i=0,j=f.length;j>i;i++)d[f[i]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(f)}else for(i=0,j=f.length;j>i;i++)if(d[f[i]].state[o?"selected":"checked"]){for(k=0,l=d[f[i]].children_d.length;l>k;k++)d[d[f[i]].children_d[k]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(d[f[i]].children_d)}if(-1!==n.indexOf("up")){for(i=0,j=e.children_d.length;j>i;i++)d[e.children_d[i]].children.length||g.push(d[e.children_d[i]].parent);for(g=a.vakata.array_unique(g),k=0,l=g.length;l>k;k++){e=d[g[k]];while(e&&e.id!==a.jstree.root){for(h=0,i=0,j=e.children.length;j>i;i++)h+=d[e.children[i]].state[o?"selected":"checked"];if(h!==j)break;e.state[o?"selected":"checked"]=!0,this._data[o?"core":"checkbox"].selected.push(e.id),m=this.get_node(e,!0),m&&m.length&&m.attr("aria-selected",!0).children(".jstree-anchor").addClass(o?"jstree-clicked":"jstree-checked"),e=this.get_node(e.parent)}}}this._data[o?"core":"checkbox"].selected=a.vakata.array_unique(this._data[o?"core":"checkbox"].selected)},this)).on(this.settings.checkbox.tie_selection?"select_node.jstree":"check_node.jstree",a.proxy(function(b,c){var d=this,e=c.node,f=this._model.data,g=this.get_node(e.parent),h,i,j,k,l=this.settings.checkbox.cascade,m=this.settings.checkbox.tie_selection,n={},o=this._data[m?"core":"checkbox"].selected;for(h=0,i=o.length;i>h;h++)n[o[h]]=!0;if(-1!==l.indexOf("down")){var p=this._cascade_new_checked_state(e.id,!0),q=e.children_d.concat(e.id);for(h=0,i=q.length;i>h;h++)p.indexOf(q[h])>-1?n[q[h]]=!0:delete n[q[h]]}if(-1!==l.indexOf("up"))while(g&&g.id!==a.jstree.root){for(j=0,h=0,i=g.children.length;i>h;h++)j+=f[g.children[h]].state[m?"selected":"checked"];if(j!==i)break;g.state[m?"selected":"checked"]=!0,n[g.id]=!0,k=this.get_node(g,!0),k&&k.length&&k.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),g=this.get_node(g.parent)}o=[];for(h in n)n.hasOwnProperty(h)&&o.push(h);this._data[m?"core":"checkbox"].selected=o},this)).on(this.settings.checkbox.tie_selection?"deselect_all.jstree":"uncheck_all.jstree",a.proxy(function(b,c){var d=this.get_node(a.jstree.root),e=this._model.data,f,g,h;for(f=0,g=d.children_d.length;g>f;f++)h=e[d.children_d[f]],h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1)},this)).on(this.settings.checkbox.tie_selection?"deselect_node.jstree":"uncheck_node.jstree",a.proxy(function(a,b){var c=this,d=b.node,e=this.get_node(d,!0),f,g,h,i=this.settings.checkbox.cascade,j=this.settings.checkbox.tie_selection,k=this._data[j?"core":"checkbox"].selected,l={},m=[],n=d.children_d.concat(d.id);if(-1!==i.indexOf("down")){var o=this._cascade_new_checked_state(d.id,!1);k=k.filter(function(a){return-1===n.indexOf(a)||o.indexOf(a)>-1})}if(-1!==i.indexOf("up")&&-1===k.indexOf(d.id)){for(f=0,g=d.parents.length;g>f;f++)h=this._model.data[d.parents[f]],h.state[j?"selected":"checked"]=!1,h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1),h=this.get_node(d.parents[f],!0),h&&h.length&&h.attr("aria-selected",!1).children(".jstree-anchor").removeClass(j?"jstree-clicked":"jstree-checked");k=k.filter(function(a){return-1===d.parents.indexOf(a)})}this._data[j?"core":"checkbox"].selected=k},this)),-1!==this.settings.checkbox.cascade.indexOf("up")&&this.element.on("delete_node.jstree",a.proxy(function(b,c){var d=this.get_node(c.parent),e=this._model.data,f,g,h,i,j=this.settings.checkbox.tie_selection;while(d&&d.id!==a.jstree.root&&!d.state[j?"selected":"checked"]){for(h=0,f=0,g=d.children.length;g>f;f++)h+=e[d.children[f]].state[j?"selected":"checked"];if(!(g>0&&h===g))break;d.state[j?"selected":"checked"]=!0,this._data[j?"core":"checkbox"].selected.push(d.id),i=this.get_node(d,!0),i&&i.length&&i.attr("aria-selected",!0).children(".jstree-anchor").addClass(j?"jstree-clicked":"jstree-checked"),d=this.get_node(d.parent)}},this)).on("move_node.jstree",a.proxy(function(b,c){var d=c.is_multi,e=c.old_parent,f=this.get_node(c.parent),g=this._model.data,h,i,j,k,l,m=this.settings.checkbox.tie_selection;if(!d){h=this.get_node(e);while(h&&h.id!==a.jstree.root&&!h.state[m?"selected":"checked"]){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(!(k>0&&i===k))break;h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),h=this.get_node(h.parent)}}h=f;while(h&&h.id!==a.jstree.root){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(i===k)h.state[m?"selected":"checked"]||(h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"));else{if(!h.state[m?"selected":"checked"])break;h.state[m?"selected":"checked"]=!1,this._data[m?"core":"checkbox"].selected=a.vakata.array_remove_item(this._data[m?"core":"checkbox"].selected,h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!1).children(".jstree-anchor").removeClass(m?"jstree-clicked":"jstree-checked")}h=this.get_node(h.parent)}},this))},this._undetermined=function(){if(null!==this.element){var c,d,e,f,g={},h=this._model.data,i=this.settings.checkbox.tie_selection,j=this._data[i?"core":"checkbox"].selected,k=[],l=this;for(c=0,d=j.length;d>c;c++)if(h[j[c]]&&h[j[c]].parents)for(e=0,f=h[j[c]].parents.length;f>e;e++){if(g[h[j[c]].parents[e]]!==b)break;h[j[c]].parents[e]!==a.jstree.root&&(g[h[j[c]].parents[e]]=!0,k.push(h[j[c]].parents[e]))}for(this.element.find(".jstree-closed").not(":has(.jstree-children)").each(function(){var i=l.get_node(this),j;if(i)if(i.state.loaded){for(c=0,d=i.children_d.length;d>c;c++)if(j=h[i.children_d[c]],!j.state.loaded&&j.original&&j.original.state&&j.original.state.undetermined&&j.original.state.undetermined===!0)for(g[j.id]===b&&j.id!==a.jstree.root&&(g[j.id]=!0,k.push(j.id)),e=0,f=j.parents.length;f>e;e++)g[j.parents[e]]===b&&j.parents[e]!==a.jstree.root&&(g[j.parents[e]]=!0,k.push(j.parents[e]))}else if(i.original&&i.original.state&&i.original.state.undetermined&&i.original.state.undetermined===!0)for(g[i.id]===b&&i.id!==a.jstree.root&&(g[i.id]=!0,k.push(i.id)),e=0,f=i.parents.length;f>e;e++)g[i.parents[e]]===b&&i.parents[e]!==a.jstree.root&&(g[i.parents[e]]=!0,k.push(i.parents[e]))}),this.element.find(".jstree-undetermined").removeClass("jstree-undetermined"),c=0,d=k.length;d>c;c++)h[k[c]].state[i?"selected":"checked"]||(j=this.get_node(k[c],!0),j&&j.length&&j.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-undetermined"))}},this.redraw_node=function(b,c,e,f){if(b=d.redraw_node.apply(this,arguments)){var g,h,i=null,k=null;for(g=0,h=b.childNodes.length;h>g;g++)if(b.childNodes[g]&&b.childNodes[g].className&&-1!==b.childNodes[g].className.indexOf("jstree-anchor")){i=b.childNodes[g];break}i&&(!this.settings.checkbox.tie_selection&&this._model.data[b.id].state.checked&&(i.className+=" jstree-checked"),k=j.cloneNode(!1),this._model.data[b.id].state.checkbox_disabled&&(k.className+=" jstree-checkbox-disabled"),i.insertBefore(k,i.childNodes[0]))}return e||-1===this.settings.checkbox.cascade.indexOf("undetermined")||(this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)),b},this.show_checkboxes=function(){this._data.core.themes.checkboxes=!0,this.get_container_ul().removeClass("jstree-no-checkboxes")},this.hide_checkboxes=function(){this._data.core.themes.checkboxes=!1,this.get_container_ul().addClass("jstree-no-checkboxes")},this.toggle_checkboxes=function(){this._data.core.themes.checkboxes?this.hide_checkboxes():this.show_checkboxes()},this.is_undetermined=function(b){b=this.get_node(b);var c=this.settings.checkbox.cascade,d,e,f=this.settings.checkbox.tie_selection,g=this._data[f?"core":"checkbox"].selected,h=this._model.data;if(!b||b.state[f?"selected":"checked"]===!0||-1===c.indexOf("undetermined")||-1===c.indexOf("down")&&-1===c.indexOf("up"))return!1;if(!b.state.loaded&&b.original.state.undetermined===!0)return!0;for(d=0,e=b.children_d.length;e>d;d++)if(-1!==a.inArray(b.children_d[d],g)||!h[b.children_d[d]].state.loaded&&h[b.children_d[d]].original.state.undetermined)return!0;return!1},this.disable_checkbox=function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_checkbox(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(e=this.get_node(b,!0),void(b.state.checkbox_disabled||(b.state.checkbox_disabled=!0,e&&e.length&&e.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-checkbox-disabled"),this.trigger("disable_checkbox",{node:b})))):!1},this.enable_checkbox=function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_checkbox(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(e=this.get_node(b,!0),void(b.state.checkbox_disabled&&(b.state.checkbox_disabled=!1,e&&e.length&&e.children(".jstree-anchor").children(".jstree-checkbox").removeClass("jstree-checkbox-disabled"),this.trigger("enable_checkbox",{node:b})))):!1},this.activate_node=function(b,c){return a(c.target).hasClass("jstree-checkbox-disabled")?!1:(this.settings.checkbox.tie_selection&&(this.settings.checkbox.whole_node||a(c.target).hasClass("jstree-checkbox"))&&(c.ctrlKey=!0),this.settings.checkbox.tie_selection||!this.settings.checkbox.whole_node&&!a(c.target).hasClass("jstree-checkbox")?d.activate_node.call(this,b,c):this.is_disabled(b)?!1:(this.is_checked(b)?this.uncheck_node(b,c):this.check_node(b,c),void this.trigger("activate_node",{node:this.get_node(b)})))},this._cascade_new_checked_state=function(a,b){var c=this,d=this.settings.checkbox.tie_selection,e=this._model.data[a],f=[],g=[],h,i,j;if(!this.settings.checkbox.cascade_to_disabled&&e.state.disabled||!this.settings.checkbox.cascade_to_hidden&&e.state.hidden)j=this.get_checked_descendants(a),e.state[d?"selected":"checked"]&&j.push(e.id),f=f.concat(j);else{if(e.children)for(h=0,i=e.children.length;i>h;h++){var k=e.children[h];j=c._cascade_new_checked_state(k,b),f=f.concat(j),j.indexOf(k)>-1&&g.push(k)}var l=c.get_node(e,!0),m=g.length>0&&g.lengthe;e++)this.check_node(b[e],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(d=this.get_node(b,!0),void(b.state.checked||(b.state.checked=!0,this._data.checkbox.selected.push(b.id),d&&d.length&&d.children(".jstree-anchor").addClass("jstree-checked"),this.trigger("check_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.uncheck_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.deselect_node(b,!1,c);var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.uncheck_node(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=this.get_node(b,!0),void(b.state.checked&&(b.state.checked=!1,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,b.id),f.length&&f.children(".jstree-anchor").removeClass("jstree-checked"),this.trigger("uncheck_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.check_all=function(){if(this.settings.checkbox.tie_selection)return this.select_all();var b=this._data.checkbox.selected.concat([]),c,d;for(this._data.checkbox.selected=this._model.data[a.jstree.root].children_d.concat(),c=0,d=this._data.checkbox.selected.length;d>c;c++)this._model.data[this._data.checkbox.selected[c]]&&(this._model.data[this._data.checkbox.selected[c]].state.checked=!0);this.redraw(!0),this.trigger("check_all",{selected:this._data.checkbox.selected})},this.uncheck_all=function(){if(this.settings.checkbox.tie_selection)return this.deselect_all();var a=this._data.checkbox.selected.concat([]),b,c;for(b=0,c=this._data.checkbox.selected.length;c>b;b++)this._model.data[this._data.checkbox.selected[b]]&&(this._model.data[this._data.checkbox.selected[b]].state.checked=!1);this._data.checkbox.selected=[],this.element.find(".jstree-checked").removeClass("jstree-checked"),this.trigger("uncheck_all",{selected:this._data.checkbox.selected,node:a})},this.is_checked=function(b){return this.settings.checkbox.tie_selection?this.is_selected(b):(b=this.get_node(b),b&&b.id!==a.jstree.root?b.state.checked:!1)},this.get_checked=function(b){return this.settings.checkbox.tie_selection?this.get_selected(b):b?a.map(this._data.checkbox.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.checkbox.selected},this.get_top_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_top_selected(b);var c=this.get_checked(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},this.get_bottom_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_bottom_selected(b);var c=this.get_checked(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},this.load_node=function(b,c){var e,f,g,h,i,j;if(!a.isArray(b)&&!this.settings.checkbox.tie_selection&&(j=this.get_node(b),j&&j.state.loaded))for(e=0,f=j.children_d.length;f>e;e++)this._model.data[j.children_d[e]].state.checked&&(i=!0,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,j.children_d[e]));return d.load_node.apply(this,arguments)},this.get_state=function(){var a=d.get_state.apply(this,arguments);return this.settings.checkbox.tie_selection?a:(a.checkbox=this._data.checkbox.selected.slice(),a)},this.set_state=function(b,c){var e=d.set_state.apply(this,arguments);if(e&&b.checkbox){if(!this.settings.checkbox.tie_selection){this.uncheck_all();var f=this;a.each(b.checkbox,function(a,b){f.check_node(b)})}return delete b.checkbox,this.set_state(b,c),!1}return e},this.refresh=function(a,b){return this.settings.checkbox.tie_selection||(this._data.checkbox.selected=[]),d.refresh.apply(this,arguments)}},a.jstree.defaults.conditionalselect=function(){return!0},a.jstree.plugins.conditionalselect=function(a,b){this.activate_node=function(a,c){return this.settings.conditionalselect.call(this,this.get_node(a),c)?b.activate_node.call(this,a,c):void 0}},a.jstree.defaults.contextmenu={select_node:!0,show_at_node:!0,items:function(b,c){return{create:{separator_before:!1,separator_after:!0,_disabled:!1,label:"Create",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.create_node(d,{},"last",function(a){try{c.edit(a)}catch(b){setTimeout(function(){c.edit(a)},0)}})}},rename:{separator_before:!1,separator_after:!1,_disabled:!1,label:"Rename",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.edit(d)}},remove:{separator_before:!1,icon:!1,separator_after:!1,_disabled:!1,label:"Delete",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.delete_node(c.get_selected()):c.delete_node(d)}},ccp:{separator_before:!0,icon:!1,separator_after:!1,label:"Edit",action:!1,submenu:{cut:{separator_before:!1,separator_after:!1,label:"Cut",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.cut(c.get_top_selected()):c.cut(d)}},copy:{separator_before:!1,icon:!1,separator_after:!1,label:"Copy",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.copy(c.get_top_selected()):c.copy(d)}},paste:{separator_before:!1,icon:!1,_disabled:function(b){return!a.jstree.reference(b.reference).can_paste()},separator_after:!1,label:"Paste",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.paste(d)}}}}}}},a.jstree.plugins.contextmenu=function(c,d){this.bind=function(){d.bind.call(this);var b=0,c=null,e,f;this.element.on("init.jstree loading.jstree ready.jstree",a.proxy(function(){this.get_container_ul().addClass("jstree-contextmenu")},this)).on("contextmenu.jstree",".jstree-anchor",a.proxy(function(a,d){"input"!==a.target.tagName.toLowerCase()&&(a.preventDefault(),b=a.ctrlKey?+new Date:0,(d||c)&&(b=+new Date+1e4),c&&clearTimeout(c),this.is_loading(a.currentTarget)||this.show_contextmenu(a.currentTarget,a.pageX,a.pageY,a))},this)).on("click.jstree",".jstree-anchor",a.proxy(function(c){this._data.contextmenu.visible&&(!b||+new Date-b>250)&&a.vakata.context.hide(),b=0},this)).on("touchstart.jstree",".jstree-anchor",function(b){b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(e=b.originalEvent.changedTouches[0].clientX,f=b.originalEvent.changedTouches[0].clientY,c=setTimeout(function(){a(b.currentTarget).trigger("contextmenu",!0)},750))}).on("touchmove.vakata.jstree",function(b){c&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(Math.abs(e-b.originalEvent.changedTouches[0].clientX)>10||Math.abs(f-b.originalEvent.changedTouches[0].clientY)>10)&&(clearTimeout(c),a.vakata.context.hide())}).on("touchend.vakata.jstree",function(a){c&&clearTimeout(c)}),a(i).on("context_hide.vakata.jstree",a.proxy(function(b,c){this._data.contextmenu.visible=!1,a(c.reference).removeClass("jstree-context")},this))},this.teardown=function(){this._data.contextmenu.visible&&a.vakata.context.hide(),d.teardown.call(this)},this.show_contextmenu=function(c,d,e,f){if(c=this.get_node(c),!c||c.id===a.jstree.root)return!1;var g=this.settings.contextmenu,h=this.get_node(c,!0),i=h.children(".jstree-anchor"),j=!1,k=!1;(g.show_at_node||d===b||e===b)&&(j=i.offset(),d=j.left,e=j.top+this._data.core.li_height),this.settings.contextmenu.select_node&&!this.is_selected(c)&&this.activate_node(c,f),k=g.items,a.isFunction(k)&&(k=k.call(this,c,a.proxy(function(a){this._show_contextmenu(c,d,e,a)},this))),a.isPlainObject(k)&&this._show_contextmenu(c,d,e,k)},this._show_contextmenu=function(b,c,d,e){var f=this.get_node(b,!0),g=f.children(".jstree-anchor");a(i).one("context_show.vakata.jstree",a.proxy(function(b,c){var d="jstree-contextmenu jstree-"+this.get_theme()+"-contextmenu";a(c.element).addClass(d),g.addClass("jstree-context")},this)),this._data.contextmenu.visible=!0,a.vakata.context.show(g,{x:c,y:d},e),this.trigger("show_contextmenu",{node:b,x:c,y:d})}},function(a){var b=!1,c={element:!1,reference:!1,position_x:0,position_y:0,items:[],html:"",is_visible:!1};a.vakata.context={settings:{hide_onmouseleave:0,icons:!0},_trigger:function(b){a(i).triggerHandler("context_"+b+".vakata",{reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}})},_execute:function(b){return b=c.items[b],b&&(!b._disabled||a.isFunction(b._disabled)&&!b._disabled({item:b,reference:c.reference,element:c.element}))&&b.action?b.action.call(null,{item:b,reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}}):!1},_parse:function(b,d){if(!b)return!1;d||(c.html="",c.items=[]);var e="",f=!1,g;return d&&(e+=""),d||(c.html=e,a.vakata.context._trigger("parse")),e.length>10?e:!1},_show_submenu:function(c){if(c=a(c),c.length&&c.children("ul").length){var d=c.children("ul"),e=c.offset().left,f=e+c.outerWidth(),g=c.offset().top,h=d.width(),i=d.height(),j=a(window).width()+a(window).scrollLeft(),k=a(window).height()+a(window).scrollTop();b?c[f-(h+10+c.outerWidth())<0?"addClass":"removeClass"]("vakata-context-left"):c[f+h>j&&e>j-f?"addClass":"removeClass"]("vakata-context-right"),g+i+10>k&&d.css("bottom","-1px"),c.hasClass("vakata-context-right")?h>e&&d.css("margin-right",e-h):h>j-f&&d.css("margin-left",j-f-h),d.show()}},show:function(d,e,f){var g,h,i,j,k,l,m,n,o=!0;switch(c.element&&c.element.length&&c.element.width(""),o){case!e&&!d:return!1;case!!e&&!!d:c.reference=d,c.position_x=e.x,c.position_y=e.y;break;case!e&&!!d:c.reference=d,g=d.offset(),c.position_x=g.left+d.outerHeight(),c.position_y=g.top;break;case!!e&&!d:c.position_x=e.x,c.position_y=e.y}d&&!f&&a(d).data("vakata_contextmenu")&&(f=a(d).data("vakata_contextmenu")),a.vakata.context._parse(f)&&c.element.html(c.html),c.items.length&&(c.element.appendTo("body"),h=c.element,i=c.position_x,j=c.position_y,k=h.width(),l=h.height(),m=a(window).width()+a(window).scrollLeft(),n=a(window).height()+a(window).scrollTop(),b&&(i-=h.outerWidth()-a(d).outerWidth(),im&&(i=m-(k+20)),j+l+20>n&&(j=n-(l+20)),c.element.css({left:i,top:j}).show().find("a").first().focus().parent().addClass("vakata-context-hover"),c.is_visible=!0,a.vakata.context._trigger("show"))},hide:function(){c.is_visible&&(c.element.hide().find("ul").hide().end().find(":focus").blur().end().detach(),c.is_visible=!1, -a.vakata.context._trigger("hide"))}},a(function(){b="rtl"===a("body").css("direction");var d=!1;c.element=a("
        "),c.element.on("mouseenter","li",function(b){b.stopImmediatePropagation(),a.contains(this,b.relatedTarget)||(d&&clearTimeout(d),c.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(),a(this).siblings().find("ul").hide().end().end().parentsUntil(".vakata-context","li").addBack().addClass("vakata-context-hover"),a.vakata.context._show_submenu(this))}).on("mouseleave","li",function(b){a.contains(this,b.relatedTarget)||a(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover")}).on("mouseleave",function(b){a(this).find(".vakata-context-hover").removeClass("vakata-context-hover"),a.vakata.context.settings.hide_onmouseleave&&(d=setTimeout(function(b){return function(){a.vakata.context.hide()}}(this),a.vakata.context.settings.hide_onmouseleave))}).on("click","a",function(b){b.preventDefault(),a(this).blur().parent().hasClass("vakata-context-disabled")||a.vakata.context._execute(a(this).attr("rel"))===!1||a.vakata.context.hide()}).on("keydown","a",function(b){var d=null;switch(b.which){case 13:case 32:b.type="click",b.preventDefault(),a(b.currentTarget).trigger(b);break;case 37:c.is_visible&&(c.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 38:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 39:c.is_visible&&(c.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 40:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 27:a.vakata.context.hide(),b.preventDefault()}}).on("keydown",function(a){a.preventDefault();var b=c.element.find(".vakata-contextmenu-shortcut-"+a.which).parent();b.parent().not(".vakata-context-disabled")&&b.click()}),a(i).on("mousedown.vakata.jstree",function(b){c.is_visible&&c.element[0]!==b.target&&!a.contains(c.element[0],b.target)&&a.vakata.context.hide()}).on("context_show.vakata.jstree",function(a,d){c.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"),b&&c.element.addClass("vakata-context-rtl").css("direction","rtl"),c.element.find("ul").hide().end()})})}(a),a.jstree.defaults.dnd={copy:!0,open_timeout:500,is_draggable:!0,check_while_dragging:!0,always_copy:!1,inside_pos:0,drag_selection:!0,touch:!0,large_drop_target:!1,large_drag_target:!1,use_html5:!1};var k,l;a.jstree.plugins.dnd=function(b,c){this.init=function(a,b){c.init.call(this,a,b),this.settings.dnd.use_html5=this.settings.dnd.use_html5&&"draggable"in i.createElement("span")},this.bind=function(){c.bind.call(this),this.element.on(this.settings.dnd.use_html5?"dragstart.jstree":"mousedown.jstree touchstart.jstree",this.settings.dnd.large_drag_target?".jstree-node":".jstree-anchor",a.proxy(function(b){if(this.settings.dnd.large_drag_target&&a(b.target).closest(".jstree-node")[0]!==b.currentTarget)return!0;if("touchstart"===b.type&&(!this.settings.dnd.touch||"selected"===this.settings.dnd.touch&&!a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").hasClass("jstree-clicked")))return!0;var c=this.get_node(b.target),d=this.is_selected(c)&&this.settings.dnd.drag_selection?this.get_top_selected().length:1,e=d>1?d+" "+this.get_string("nodes"):this.get_text(b.currentTarget);if(this.settings.core.force_text&&(e=a.vakata.html.escape(e)),c&&c.id&&c.id!==a.jstree.root&&(1===b.which||"touchstart"===b.type||"dragstart"===b.type)&&(this.settings.dnd.is_draggable===!0||a.isFunction(this.settings.dnd.is_draggable)&&this.settings.dnd.is_draggable.call(this,d>1?this.get_top_selected(!0):[c],b))){if(k={jstree:!0,origin:this,obj:this.get_node(c,!0),nodes:d>1?this.get_top_selected():[c.id]},l=b.currentTarget,!this.settings.dnd.use_html5)return this.element.trigger("mousedown.jstree"),a.vakata.dnd.start(b,k,'
        '+e+'
        ');a.vakata.dnd._trigger("start",b,{helper:a(),element:l,data:k})}},this)),this.settings.dnd.use_html5&&this.element.on("dragover.jstree",function(b){return b.preventDefault(),a.vakata.dnd._trigger("move",b,{helper:a(),element:l,data:k}),!1}).on("drop.jstree",a.proxy(function(b){return b.preventDefault(),a.vakata.dnd._trigger("stop",b,{helper:a(),element:l,data:k}),!1},this))},this.redraw_node=function(a,b,d,e){if(a=c.redraw_node.apply(this,arguments),a&&this.settings.dnd.use_html5)if(this.settings.dnd.large_drag_target)a.setAttribute("draggable",!0);else{var f,g,h=null;for(f=0,g=a.childNodes.length;g>f;f++)if(a.childNodes[f]&&a.childNodes[f].className&&-1!==a.childNodes[f].className.indexOf("jstree-anchor")){h=a.childNodes[f];break}h&&h.setAttribute("draggable",!0)}return a}},a(function(){var c=!1,d=!1,e=!1,f=!1,g=a('
         
        ').hide();a(i).on("dnd_start.vakata.jstree",function(a,b){c=!1,e=!1,b&&b.data&&b.data.jstree&&g.appendTo("body")}).on("dnd_move.vakata.jstree",function(h,i){var j=i.event.target!==e.target;if(f&&(!i.event||"dragover"!==i.event.type||j)&&clearTimeout(f),i&&i.data&&i.data.jstree&&(!i.event.target.id||"jstree-marker"!==i.event.target.id)){e=i.event;var k=a.jstree.reference(i.event.target),l=!1,m=!1,n=!1,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E;if(k&&k._data&&k._data.dnd)if(g.attr("class","jstree-"+k.get_theme()+(k.settings.core.themes.responsive?" jstree-dnd-responsive":"")),D=i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey)),i.helper.children().attr("class","jstree-"+k.get_theme()+" jstree-"+k.get_theme()+"-"+k.get_theme_variant()+" "+(k.settings.core.themes.responsive?" jstree-dnd-responsive":"")).find(".jstree-copy").first()[D?"show":"hide"](),i.event.target!==k.element[0]&&i.event.target!==k.get_container_ul()[0]||0!==k.get_container_ul().children().length){if(l=k.settings.dnd.large_drop_target?a(i.event.target).closest(".jstree-node").children(".jstree-anchor"):a(i.event.target).closest(".jstree-anchor"),l&&l.length&&l.parent().is(".jstree-closed, .jstree-open, .jstree-leaf")&&(m=l.offset(),n=(i.event.pageY!==b?i.event.pageY:i.event.originalEvent.pageY)-m.top,r=l.outerHeight(),u=r/3>n?["b","i","a"]:n>r-r/3?["a","i","b"]:n>r/2?["i","a","b"]:["i","b","a"],a.each(u,function(b,e){switch(e){case"b":p=m.left-6,q=m.top,s=k.get_parent(l),t=l.parent().index();break;case"i":B=k.settings.dnd.inside_pos,C=k.get_node(l.parent()),p=m.left-2,q=m.top+r/2+1,s=C.id,t="first"===B?0:"last"===B?C.children.length:Math.min(B,C.children.length);break;case"a":p=m.left-6,q=m.top+r,s=k.get_parent(l),t=l.parent().index()+1}for(v=!0,w=0,x=i.data.nodes.length;x>w;w++)if(y=i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey))?"copy_node":"move_node",z=t,"move_node"===y&&"a"===e&&i.data.origin&&i.data.origin===k&&s===k.get_parent(i.data.nodes[w])&&(A=k.get_node(s),z>a.inArray(i.data.nodes[w],A.children)&&(z-=1)),v=v&&(k&&k.settings&&k.settings.dnd&&k.settings.dnd.check_while_dragging===!1||k.check(y,i.data.origin&&i.data.origin!==k?i.data.origin.get_node(i.data.nodes[w]):i.data.nodes[w],s,z,{dnd:!0,ref:k.get_node(l.parent()),pos:e,origin:i.data.origin,is_multi:i.data.origin&&i.data.origin!==k,is_foreign:!i.data.origin})),!v){k&&k.last_error&&(d=k.last_error());break}return"i"===e&&l.parent().is(".jstree-closed")&&k.settings.dnd.open_timeout&&(!i.event||"dragover"!==i.event.type||j)&&(f&&clearTimeout(f),f=setTimeout(function(a,b){return function(){a.open_node(b)}}(k,l),k.settings.dnd.open_timeout)),v?(E=k.get_node(s,!0),E.hasClass(".jstree-dnd-parent")||(a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),E.addClass("jstree-dnd-parent")),c={ins:k,par:s,pos:"i"!==e||"last"!==B||0!==t||k.is_loaded(C)?t:"last"},g.css({left:p+"px",top:q+"px"}).show(),i.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok"),i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect=D?"copy":"move"),d={},u=!0,!1):void 0}),u===!0))return}else{for(v=!0,w=0,x=i.data.nodes.length;x>w;w++)if(v=v&&k.check(i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey))?"copy_node":"move_node",i.data.origin&&i.data.origin!==k?i.data.origin.get_node(i.data.nodes[w]):i.data.nodes[w],a.jstree.root,"last",{dnd:!0,ref:k.get_node(a.jstree.root),pos:"i",origin:i.data.origin,is_multi:i.data.origin&&i.data.origin!==k,is_foreign:!i.data.origin}),!v)break;if(v)return c={ins:k,par:a.jstree.root,pos:"last"},g.hide(),i.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok"),void(i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect=D?"copy":"move"))}a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),c=!1,i.helper.find(".jstree-icon").removeClass("jstree-ok").addClass("jstree-er"),i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect="none"),g.hide()}}).on("dnd_scroll.vakata.jstree",function(a,b){b&&b.data&&b.data.jstree&&(g.hide(),c=!1,e=!1,b.helper.find(".jstree-icon").first().removeClass("jstree-ok").addClass("jstree-er"))}).on("dnd_stop.vakata.jstree",function(b,h){if(a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),f&&clearTimeout(f),h&&h.data&&h.data.jstree){g.hide().detach();var i,j,k=[];if(c){for(i=0,j=h.data.nodes.length;j>i;i++)k[i]=h.data.origin?h.data.origin.get_node(h.data.nodes[i]):h.data.nodes[i];c.ins[h.data.origin&&(h.data.origin.settings.dnd.always_copy||h.data.origin.settings.dnd.copy&&(h.event.metaKey||h.event.ctrlKey))?"copy_node":"move_node"](k,c.par,c.pos,!1,!1,!1,h.data.origin)}else i=a(h.event.target).closest(".jstree"),i.length&&d&&d.error&&"check"===d.error&&(i=i.jstree(!0),i&&i.settings.core.error.call(this,d));e=!1,c=!1}}).on("keyup.jstree keydown.jstree",function(b,h){h=a.vakata.dnd._get(),h&&h.data&&h.data.jstree&&("keyup"===b.type&&27===b.which?(f&&clearTimeout(f),c=!1,d=!1,e=!1,f=!1,g.hide().detach(),a.vakata.dnd._clean()):(h.helper.find(".jstree-copy").first()[h.data.origin&&(h.data.origin.settings.dnd.always_copy||h.data.origin.settings.dnd.copy&&(b.metaKey||b.ctrlKey))?"show":"hide"](),e&&(e.metaKey=b.metaKey,e.ctrlKey=b.ctrlKey,a.vakata.dnd._trigger("move",e))))})}),function(a){a.vakata.html={div:a("
        "),escape:function(b){return a.vakata.html.div.text(b).html()},strip:function(b){return a.vakata.html.div.empty().append(a.parseHTML(b)).text()}};var c={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1};a.vakata.dnd={settings:{scroll_speed:10,scroll_proximity:20,helper_left:5,helper_top:10,threshold:5,threshold_touch:10},_trigger:function(c,d,e){e===b&&(e=a.vakata.dnd._get()),e.event=d,a(i).triggerHandler("dnd_"+c+".vakata",e)},_get:function(){return{data:c.data,element:c.element,helper:c.helper}},_clean:function(){c.helper&&c.helper.remove(),c.scroll_i&&(clearInterval(c.scroll_i),c.scroll_i=!1),c={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1},a(i).off("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(i).off("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop)},_scroll:function(b){if(!c.scroll_e||!c.scroll_l&&!c.scroll_t)return c.scroll_i&&(clearInterval(c.scroll_i),c.scroll_i=!1),!1;if(!c.scroll_i)return c.scroll_i=setInterval(a.vakata.dnd._scroll,100),!1;if(b===!0)return!1;var d=c.scroll_e.scrollTop(),e=c.scroll_e.scrollLeft();c.scroll_e.scrollTop(d+c.scroll_t*a.vakata.dnd.settings.scroll_speed),c.scroll_e.scrollLeft(e+c.scroll_l*a.vakata.dnd.settings.scroll_speed),(d!==c.scroll_e.scrollTop()||e!==c.scroll_e.scrollLeft())&&a.vakata.dnd._trigger("scroll",c.scroll_e)},start:function(b,d,e){"touchstart"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_drag&&a.vakata.dnd.stop({});try{b.currentTarget.unselectable="on",b.currentTarget.onselectstart=function(){return!1},b.currentTarget.style&&(b.currentTarget.style.touchAction="none",b.currentTarget.style.msTouchAction="none",b.currentTarget.style.MozUserSelect="none")}catch(f){}return c.init_x=b.pageX,c.init_y=b.pageY,c.data=d,c.is_down=!0,c.element=b.currentTarget,c.target=b.target,c.is_touch="touchstart"===b.type,e!==!1&&(c.helper=a("
        ").html(e).css({display:"block",margin:"0",padding:"0",position:"absolute",top:"-2000px",lineHeight:"16px",zIndex:"10000"})),a(i).on("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(i).on("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop),!1},drag:function(b){if("touchmove"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_down){if(!c.is_drag){if(!(Math.abs(b.pageX-c.init_x)>(c.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)||Math.abs(b.pageY-c.init_y)>(c.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)))return;c.helper&&(c.helper.appendTo("body"),c.helper_w=c.helper.outerWidth()),c.is_drag=!0,a(c.target).one("click.vakata",!1),a.vakata.dnd._trigger("start",b)}var d=!1,e=!1,f=!1,g=!1,h=!1,j=!1,k=!1,l=!1,m=!1,n=!1;return c.scroll_t=0,c.scroll_l=0,c.scroll_e=!1,a(a(b.target).parentsUntil("body").addBack().get().reverse()).filter(function(){return/^auto|scroll$/.test(a(this).css("overflow"))&&(this.scrollHeight>this.offsetHeight||this.scrollWidth>this.offsetWidth)}).each(function(){var d=a(this),e=d.offset();return this.scrollHeight>this.offsetHeight&&(e.top+d.height()-b.pageYthis.offsetWidth&&(e.left+d.width()-b.pageXg&&b.pageY-kg&&g-(b.pageY-k)j&&b.pageX-lj&&j-(b.pageX-l)f&&(m=f-50),h&&n+c.helper_w>h&&(n=h-(c.helper_w+2)),c.helper.css({left:n+"px",top:m+"px"})),a.vakata.dnd._trigger("move",b),!1}},stop:function(b){if("touchend"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_drag)b.target!==c.target&&a(c.target).off("click.vakata"),a.vakata.dnd._trigger("stop",b);else if("touchend"===b.type&&b.target===c.target){var d=setTimeout(function(){a(b.target).click()},100);a(b.target).one("click",function(){d&&clearTimeout(d)})}return a.vakata.dnd._clean(),!1}}}(a),a.jstree.defaults.massload=null,a.jstree.plugins.massload=function(b,c){this.init=function(a,b){this._data.massload={},c.init.call(this,a,b)},this._load_nodes=function(b,d,e,f){var g=this.settings.massload,h=JSON.stringify(b),i=[],j=this._model.data,k,l,m;if(!e){for(k=0,l=b.length;l>k;k++)(!j[b[k]]||!j[b[k]].state.loaded&&!j[b[k]].state.failed||f)&&(i.push(b[k]),m=this.get_node(b[k],!0),m&&m.length&&m.addClass("jstree-loading").attr("aria-busy",!0));if(this._data.massload={},i.length){if(a.isFunction(g))return g.call(this,i,a.proxy(function(a){var g,h;if(a)for(g in a)a.hasOwnProperty(g)&&(this._data.massload[g]=a[g]);for(g=0,h=b.length;h>g;g++)m=this.get_node(b[g],!0),m&&m.length&&m.removeClass("jstree-loading").attr("aria-busy",!1);c._load_nodes.call(this,b,d,e,f)},this));if("object"==typeof g&&g&&g.url)return g=a.extend(!0,{},g),a.isFunction(g.url)&&(g.url=g.url.call(this,i)),a.isFunction(g.data)&&(g.data=g.data.call(this,i)),a.ajax(g).done(a.proxy(function(a,g,h){var i,j;if(a)for(i in a)a.hasOwnProperty(i)&&(this._data.massload[i]=a[i]);for(i=0,j=b.length;j>i;i++)m=this.get_node(b[i],!0),m&&m.length&&m.removeClass("jstree-loading").attr("aria-busy",!1);c._load_nodes.call(this,b,d,e,f)},this)).fail(a.proxy(function(a){c._load_nodes.call(this,b,d,e,f)},this))}}return c._load_nodes.call(this,b,d,e,f)},this._load_node=function(b,d){var e=this._data.massload[b.id],f=null,g;return e?(f=this["string"==typeof e?"_append_html_data":"_append_json_data"](b,"string"==typeof e?a(a.parseHTML(e)).filter(function(){return 3!==this.nodeType}):e,function(a){d.call(this,a)}),g=this.get_node(b.id,!0),g&&g.length&&g.removeClass("jstree-loading").attr("aria-busy",!1),delete this._data.massload[b.id],f):c._load_node.call(this,b,d)}},a.jstree.defaults.search={ajax:!1,fuzzy:!1,case_sensitive:!1,show_only_matches:!1,show_only_matches_children:!1,close_opened_onclear:!0,search_leaves_only:!1,search_callback:!1},a.jstree.plugins.search=function(c,d){this.bind=function(){d.bind.call(this),this._data.search.str="",this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=!1,this._data.search.smc=!1,this._data.search.hdn=[],this.element.on("search.jstree",a.proxy(function(b,c){if(this._data.search.som&&c.res.length){var d=this._model.data,e,f,g=[],h,i;for(e=0,f=c.res.length;f>e;e++)if(d[c.res[e]]&&!d[c.res[e]].state.hidden&&(g.push(c.res[e]),g=g.concat(d[c.res[e]].parents),this._data.search.smc))for(h=0,i=d[c.res[e]].children_d.length;i>h;h++)d[d[c.res[e]].children_d[h]]&&!d[d[c.res[e]].children_d[h]].state.hidden&&g.push(d[c.res[e]].children_d[h]);g=a.vakata.array_remove_item(a.vakata.array_unique(g),a.jstree.root),this._data.search.hdn=this.hide_all(!0),this.show_node(g,!0),this.redraw(!0)}},this)).on("clear_search.jstree",a.proxy(function(a,b){this._data.search.som&&b.res.length&&(this.show_node(this._data.search.hdn,!0),this.redraw(!0))},this))},this.search=function(c,d,e,f,g,h){if(c===!1||""===a.trim(c.toString()))return this.clear_search();f=this.get_node(f),f=f&&f.id?f.id:null,c=c.toString();var i=this.settings.search,j=i.ajax?i.ajax:!1,k=this._model.data,l=null,m=[],n=[],o,p;if(this._data.search.res.length&&!g&&this.clear_search(),e===b&&(e=i.show_only_matches),h===b&&(h=i.show_only_matches_children),!d&&j!==!1)return a.isFunction(j)?j.call(this,c,a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e,f,g,h)})},this),f):(j=a.extend({},j),j.data||(j.data={}),j.data.str=c,f&&(j.data.inside=f),this._data.search.lastRequest&&this._data.search.lastRequest.abort(),this._data.search.lastRequest=a.ajax(j).fail(a.proxy(function(){this._data.core.last_error={error:"ajax",plugin:"search",id:"search_01",reason:"Could not load search parents",data:JSON.stringify(j)},this.settings.core.error.call(this,this._data.core.last_error)},this)).done(a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e,f,g,h)})},this)),this._data.search.lastRequest);if(g||(this._data.search.str=c,this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=e,this._data.search.smc=h),l=new a.vakata.search(c,!0,{caseSensitive:i.case_sensitive,fuzzy:i.fuzzy}),a.each(k[f?f:a.jstree.root].children_d,function(a,b){var d=k[b];d.text&&!d.state.hidden&&(!i.search_leaves_only||d.state.loaded&&0===d.children.length)&&(i.search_callback&&i.search_callback.call(this,c,d)||!i.search_callback&&l.search(d.text).isMatch)&&(m.push(b),n=n.concat(d.parents))}),m.length){for(n=a.vakata.array_unique(n),o=0,p=n.length;p>o;o++)n[o]!==a.jstree.root&&k[n[o]]&&this.open_node(n[o],null,0)===!0&&this._data.search.opn.push(n[o]);g?(this._data.search.dom=this._data.search.dom.add(a(this.element[0].querySelectorAll("#"+a.map(m,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #")))),this._data.search.res=a.vakata.array_unique(this._data.search.res.concat(m))):(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(m,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.res=m),this._data.search.dom.children(".jstree-anchor").addClass("jstree-search")}this.trigger("search",{nodes:this._data.search.dom,str:c,res:this._data.search.res,show_only_matches:e})},this.clear_search=function(){this.settings.search.close_opened_onclear&&this.close_node(this._data.search.opn,0),this.trigger("clear_search",{nodes:this._data.search.dom,str:this._data.search.str,res:this._data.search.res}),this._data.search.res.length&&(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(this._data.search.res,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search")),this._data.search.str="",this._data.search.res=[],this._data.search.opn=[],this._data.search.dom=a()},this.redraw_node=function(b,c,e,f){if(b=d.redraw_node.apply(this,arguments),b&&-1!==a.inArray(b.id,this._data.search.res)){var g,h,i=null;for(g=0,h=b.childNodes.length;h>g;g++)if(b.childNodes[g]&&b.childNodes[g].className&&-1!==b.childNodes[g].className.indexOf("jstree-anchor")){i=b.childNodes[g];break}i&&(i.className+=" jstree-search")}return b}},function(a){a.vakata.search=function(b,c,d){d=d||{},d=a.extend({},a.vakata.search.defaults,d),d.fuzzy!==!1&&(d.fuzzy=!0),b=d.caseSensitive?b:b.toLowerCase();var e=d.location,f=d.distance,g=d.threshold,h=b.length,i,j,k,l;return h>32&&(d.fuzzy=!1),d.fuzzy&&(i=1<c;c++)a[b.charAt(c)]=0;for(c=0;h>c;c++)a[b.charAt(c)]|=1<c;c++){o=0,p=q;while(p>o)k(c,e+p)<=m?o=p:q=p,p=Math.floor((q-o)/2+o);for(q=p,s=Math.max(1,e-p+1),t=Math.min(e+p,l)+h,u=new Array(t+2),u[t+1]=(1<=s;f--)if(v=j[a.charAt(f-1)],0===c?u[f]=(u[f+1]<<1|1)&v:u[f]=(u[f+1]<<1|1)&v|((r[f+1]|r[f])<<1|1)|r[f+1],u[f]&i&&(w=k(c,f-1),m>=w)){if(m=w,n=f-1,x.push(n),!(n>e))break;s=Math.max(1,2*e-n)}if(k(c+1,e)>m)break;r=u}return{isMatch:n>=0,score:w}},c===!0?{search:l}:l(c)},a.vakata.search.defaults={location:0,distance:100,threshold:.6,fuzzy:!1,caseSensitive:!1}}(a),a.jstree.defaults.sort=function(a,b){return this.get_text(a)>this.get_text(b)?1:-1},a.jstree.plugins.sort=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("model.jstree",a.proxy(function(a,b){this.sort(b.parent,!0)},this)).on("rename_node.jstree create_node.jstree",a.proxy(function(a,b){this.sort(b.parent||b.node.parent,!1),this.redraw_node(b.parent||b.node.parent,!0)},this)).on("move_node.jstree copy_node.jstree",a.proxy(function(a,b){this.sort(b.parent,!1),this.redraw_node(b.parent,!0)},this))},this.sort=function(b,c){var d,e;if(b=this.get_node(b),b&&b.children&&b.children.length&&(b.children.sort(a.proxy(this.settings.sort,this)),c))for(d=0,e=b.children_d.length;e>d;d++)this.sort(b.children_d[d],!1)}};var m=!1;a.jstree.defaults.state={key:"jstree",events:"changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree",ttl:!1,filter:!1},a.jstree.plugins.state=function(b,c){this.bind=function(){c.bind.call(this);var b=a.proxy(function(){this.element.on(this.settings.state.events,a.proxy(function(){m&&clearTimeout(m),m=setTimeout(a.proxy(function(){this.save_state()},this),100)},this)),this.trigger("state_ready")},this);this.element.on("ready.jstree",a.proxy(function(a,c){this.element.one("restore_state.jstree",b),this.restore_state()||b()},this))},this.save_state=function(){var b={state:this.get_state(),ttl:this.settings.state.ttl,sec:+new Date};a.vakata.storage.set(this.settings.state.key,JSON.stringify(b))},this.restore_state=function(){var b=a.vakata.storage.get(this.settings.state.key);if(b)try{b=JSON.parse(b)}catch(c){return!1}return b&&b.ttl&&b.sec&&+new Date-b.sec>b.ttl?!1:(b&&b.state&&(b=b.state),b&&a.isFunction(this.settings.state.filter)&&(b=this.settings.state.filter.call(this,b)),b?(this.element.one("set_state.jstree",function(c,d){d.instance.trigger("restore_state",{state:a.extend(!0,{},b)})}),this.set_state(b),!0):!1)},this.clear_state=function(){return a.vakata.storage.del(this.settings.state.key)}},function(a,b){a.vakata.storage={set:function(a,b){return window.localStorage.setItem(a,b)},get:function(a){return window.localStorage.getItem(a)},del:function(a){return window.localStorage.removeItem(a)}}}(a),a.jstree.defaults.types={"default":{}},a.jstree.defaults.types[a.jstree.root]={},a.jstree.plugins.types=function(c,d){this.init=function(c,e){var f,g;if(e&&e.types&&e.types["default"])for(f in e.types)if("default"!==f&&f!==a.jstree.root&&e.types.hasOwnProperty(f))for(g in e.types["default"])e.types["default"].hasOwnProperty(g)&&e.types[f][g]===b&&(e.types[f][g]=e.types["default"][g]);d.init.call(this,c,e),this._model.data[a.jstree.root].type=a.jstree.root},this.refresh=function(b,c){d.refresh.call(this,b,c),this._model.data[a.jstree.root].type=a.jstree.root},this.bind=function(){this.element.on("model.jstree",a.proxy(function(c,d){var e=this._model.data,f=d.nodes,g=this.settings.types,h,i,j="default",k;for(h=0,i=f.length;i>h;h++){if(j="default",e[f[h]].original&&e[f[h]].original.type&&g[e[f[h]].original.type]&&(j=e[f[h]].original.type),e[f[h]].data&&e[f[h]].data.jstree&&e[f[h]].data.jstree.type&&g[e[f[h]].data.jstree.type]&&(j=e[f[h]].data.jstree.type),e[f[h]].type=j,e[f[h]].icon===!0&&g[j].icon!==b&&(e[f[h]].icon=g[j].icon),g[j].li_attr!==b&&"object"==typeof g[j].li_attr)for(k in g[j].li_attr)if(g[j].li_attr.hasOwnProperty(k)){if("id"===k)continue;e[f[h]].li_attr[k]===b?e[f[h]].li_attr[k]=g[j].li_attr[k]:"class"===k&&(e[f[h]].li_attr["class"]=g[j].li_attr["class"]+" "+e[f[h]].li_attr["class"])}if(g[j].a_attr!==b&&"object"==typeof g[j].a_attr)for(k in g[j].a_attr)if(g[j].a_attr.hasOwnProperty(k)){if("id"===k)continue;e[f[h]].a_attr[k]===b?e[f[h]].a_attr[k]=g[j].a_attr[k]:"href"===k&&"#"===e[f[h]].a_attr[k]?e[f[h]].a_attr.href=g[j].a_attr.href:"class"===k&&(e[f[h]].a_attr["class"]=g[j].a_attr["class"]+" "+e[f[h]].a_attr["class"])}}e[a.jstree.root].type=a.jstree.root},this)),d.bind.call(this)},this.get_json=function(b,c,e){var f,g,h=this._model.data,i=c?a.extend(!0,{},c,{no_id:!1}):{},j=d.get_json.call(this,b,i,e);if(j===!1)return!1;if(a.isArray(j))for(f=0,g=j.length;g>f;f++)j[f].type=j[f].id&&h[j[f].id]&&h[j[f].id].type?h[j[f].id].type:"default",c&&c.no_id&&(delete j[f].id,j[f].li_attr&&j[f].li_attr.id&&delete j[f].li_attr.id,j[f].a_attr&&j[f].a_attr.id&&delete j[f].a_attr.id);else j.type=j.id&&h[j.id]&&h[j.id].type?h[j.id].type:"default",c&&c.no_id&&(j=this._delete_ids(j));return j},this._delete_ids=function(b){if(a.isArray(b)){for(var c=0,d=b.length;d>c;c++)b[c]=this._delete_ids(b[c]);return b}return delete b.id,b.li_attr&&b.li_attr.id&&delete b.li_attr.id,b.a_attr&&b.a_attr.id&&delete b.a_attr.id,b.children&&a.isArray(b.children)&&(b.children=this._delete_ids(b.children)),b},this.check=function(c,e,f,g,h){if(d.check.call(this,c,e,f,g,h)===!1)return!1;e=e&&e.id?e:this.get_node(e),f=f&&f.id?f:this.get_node(f);var i=e&&e.id?h&&h.origin?h.origin:a.jstree.reference(e.id):null,j,k,l,m;switch(i=i&&i._model&&i._model.data?i._model.data:null,c){case"create_node":case"move_node":case"copy_node":if("move_node"!==c||-1===a.inArray(e.id,f.children)){if(j=this.get_rules(f),j.max_children!==b&&-1!==j.max_children&&j.max_children===f.children.length)return this._data.core.last_error={error:"check",plugin:"types",id:"types_01",reason:"max_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(j.valid_children!==b&&-1!==j.valid_children&&-1===a.inArray(e.type||"default",j.valid_children))return this._data.core.last_error={error:"check",plugin:"types",id:"types_02",reason:"valid_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(i&&e.children_d&&e.parents){for(k=0,l=0,m=e.children_d.length;m>l;l++)k=Math.max(k,i[e.children_d[l]].parents.length);k=k-e.parents.length+1}(0>=k||k===b)&&(k=1);do{if(j.max_depth!==b&&-1!==j.max_depth&&j.max_depthg;g++)this.set_type(c[g],d);return!0}if(f=this.settings.types,c=this.get_node(c),!f[d]||!c)return!1;if(l=this.get_node(c,!0),l&&l.length&&(m=l.children(".jstree-anchor")),i=c.type,j=this.get_icon(c),c.type=d,(j===!0||!f[i]||f[i].icon!==b&&j===f[i].icon)&&this.set_icon(c,f[d].icon!==b?f[d].icon:!0), -f[i]&&f[i].li_attr!==b&&"object"==typeof f[i].li_attr)for(k in f[i].li_attr)if(f[i].li_attr.hasOwnProperty(k)){if("id"===k)continue;"class"===k?(e[c.id].li_attr["class"]=(e[c.id].li_attr["class"]||"").replace(f[i].li_attr[k],""),l&&l.removeClass(f[i].li_attr[k])):e[c.id].li_attr[k]===f[i].li_attr[k]&&(e[c.id].li_attr[k]=null,l&&l.removeAttr(k))}if(f[i]&&f[i].a_attr!==b&&"object"==typeof f[i].a_attr)for(k in f[i].a_attr)if(f[i].a_attr.hasOwnProperty(k)){if("id"===k)continue;"class"===k?(e[c.id].a_attr["class"]=(e[c.id].a_attr["class"]||"").replace(f[i].a_attr[k],""),m&&m.removeClass(f[i].a_attr[k])):e[c.id].a_attr[k]===f[i].a_attr[k]&&("href"===k?(e[c.id].a_attr[k]="#",m&&m.attr("href","#")):(delete e[c.id].a_attr[k],m&&m.removeAttr(k)))}if(f[d].li_attr!==b&&"object"==typeof f[d].li_attr)for(k in f[d].li_attr)if(f[d].li_attr.hasOwnProperty(k)){if("id"===k)continue;e[c.id].li_attr[k]===b?(e[c.id].li_attr[k]=f[d].li_attr[k],l&&("class"===k?l.addClass(f[d].li_attr[k]):l.attr(k,f[d].li_attr[k]))):"class"===k&&(e[c.id].li_attr["class"]=f[d].li_attr[k]+" "+e[c.id].li_attr["class"],l&&l.addClass(f[d].li_attr[k]))}if(f[d].a_attr!==b&&"object"==typeof f[d].a_attr)for(k in f[d].a_attr)if(f[d].a_attr.hasOwnProperty(k)){if("id"===k)continue;e[c.id].a_attr[k]===b?(e[c.id].a_attr[k]=f[d].a_attr[k],m&&("class"===k?m.addClass(f[d].a_attr[k]):m.attr(k,f[d].a_attr[k]))):"href"===k&&"#"===e[c.id].a_attr[k]?(e[c.id].a_attr.href=f[d].a_attr.href,m&&m.attr("href",f[d].a_attr.href)):"class"===k&&(e[c.id].a_attr["class"]=f[d].a_attr["class"]+" "+e[c.id].a_attr["class"],m&&m.addClass(f[d].a_attr[k]))}return!0}},a.jstree.defaults.unique={case_sensitive:!1,duplicate:function(a,b){return a+" ("+b+")"}},a.jstree.plugins.unique=function(c,d){this.check=function(b,c,e,f,g){if(d.check.call(this,b,c,e,f,g)===!1)return!1;if(c=c&&c.id?c:this.get_node(c),e=e&&e.id?e:this.get_node(e),!e||!e.children)return!0;var h="rename_node"===b?f:c.text,i=[],j=this.settings.unique.case_sensitive,k=this._model.data,l,m;for(l=0,m=e.children.length;m>l;l++)i.push(j?k[e.children[l]].text:k[e.children[l]].text.toLowerCase());switch(j||(h=h.toLowerCase()),b){case"delete_node":return!0;case"rename_node":return l=-1===a.inArray(h,i)||c.text&&c.text[j?"toString":"toLowerCase"]()===h,l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_01",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"create_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_04",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"copy_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_02",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"move_node":return l=c.parent===e.id&&(!g||!g.is_multi)||-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_03",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l}return!0},this.create_node=function(c,e,f,g,h){if(!e||e.text===b){if(null===c&&(c=a.jstree.root),c=this.get_node(c),!c)return d.create_node.call(this,c,e,f,g,h);if(f=f===b?"last":f,!f.toString().match(/^(before|after)$/)&&!h&&!this.is_loaded(c))return d.create_node.call(this,c,e,f,g,h);e||(e={});var i,j,k,l,m,n=this._model.data,o=this.settings.unique.case_sensitive,p=this.settings.unique.duplicate;for(j=i=this.get_string("New node"),k=[],l=0,m=c.children.length;m>l;l++)k.push(o?n[c.children[l]].text:n[c.children[l]].text.toLowerCase());l=1;while(-1!==a.inArray(o?j:j.toLowerCase(),k))j=p.call(this,i,++l).toString();e.text=j}return d.create_node.call(this,c,e,f,g,h)}};var n=i.createElement("DIV");if(n.setAttribute("unselectable","on"),n.setAttribute("role","presentation"),n.className="jstree-wholerow",n.innerHTML=" ",a.jstree.plugins.wholerow=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("ready.jstree set_state.jstree",a.proxy(function(){this.hide_dots()},this)).on("init.jstree loading.jstree ready.jstree",a.proxy(function(){this.get_container_ul().addClass("jstree-wholerow-ul")},this)).on("deselect_all.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked")},this)).on("changed.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked");var c=!1,d,e;for(d=0,e=b.selected.length;e>d;d++)c=this.get_node(b.selected[d],!0),c&&c.length&&c.children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("open_node.jstree",a.proxy(function(a,b){this.get_node(b.node,!0).find(".jstree-clicked").parent().children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("hover_node.jstree dehover_node.jstree",a.proxy(function(a,b){"hover_node"===a.type&&this.is_disabled(b.node)||this.get_node(b.node,!0).children(".jstree-wholerow")["hover_node"===a.type?"addClass":"removeClass"]("jstree-wholerow-hovered")},this)).on("contextmenu.jstree",".jstree-wholerow",a.proxy(function(b){if(this._data.contextmenu){b.preventDefault();var c=a.Event("contextmenu",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey,pageX:b.pageX,pageY:b.pageY});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c)}},this)).on("click.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("dblclick.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("dblclick",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("click.jstree",".jstree-leaf > .jstree-ocl",a.proxy(function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()},this)).on("mouseover.jstree",".jstree-wholerow, .jstree-icon",a.proxy(function(a){return a.stopImmediatePropagation(),this.is_disabled(a.currentTarget)||this.hover_node(a.currentTarget),!1},this)).on("mouseleave.jstree",".jstree-node",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},this.teardown=function(){this.settings.wholerow&&this.element.find(".jstree-wholerow").remove(),c.teardown.call(this)},this.redraw_node=function(b,d,e,f){if(b=c.redraw_node.apply(this,arguments)){var g=n.cloneNode(!0);-1!==a.inArray(b.id,this._data.core.selected)&&(g.className+=" jstree-wholerow-clicked"),this._data.core.focused&&this._data.core.focused===b.id&&(g.className+=" jstree-wholerow-hovered"),b.insertBefore(g,b.childNodes[0])}return b}},i.registerElement&&Object&&Object.create){var o=Object.create(HTMLElement.prototype);o.createdCallback=function(){var b={core:{},plugins:[]},c;for(c in a.jstree.plugins)a.jstree.plugins.hasOwnProperty(c)&&this.attributes[c]&&(b.plugins.push(c),this.getAttribute(c)&&JSON.parse(this.getAttribute(c))&&(b[c]=JSON.parse(this.getAttribute(c))));for(c in a.jstree.defaults.core)a.jstree.defaults.core.hasOwnProperty(c)&&this.attributes[c]&&(b.core[c]=JSON.parse(this.getAttribute(c))||this.getAttribute(c));a(this).jstree(b)};try{i.registerElement("vakata-jstree",{prototype:o})}catch(p){}}}}); \ No newline at end of file diff --git a/libs/jstree/themes/mixed/32px.png b/libs/jstree/themes/mixed/32px.png deleted file mode 100644 index d6fd72114f8205ace7579894ec50cc37739b1471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1562 zcmZ8heKga182_1NL)y?Sx!97DWU52*G8;`HFB3{gC^fx#KelDfGF0oNTV6Y2ZdXn( zW?q&;2$$7yGo_jk?dL78m$BH`?oapJf9~_g^E}_rdCuo~&i8zt=LXs5u#T3Y761S` z9`2;00H8*M@^GX&H~F9M=;#m#1Z8Dq5Z>6> z$mjF#-n~0GIQa47M*@KWf$i<>91aJI#ZoAgjEs!d)>f5DH9kIGP*5;GKd(?ICMG77 zO6APVj7%n*nwnZ#T3T3GSX^A}>+6GfKoAs(L}IbHv$Inu6lP^*QK{7Q%Q;&hYLmpH zKK_8EZ-l{ijlJvfy6TRlf7~;9DPVu?BhfnV*dK~6$QQ=l0)TZW50Xm&^~-c2Cs^XJ zG2LRnx7N-)T||;kWH254-Gre^cGMJXz zIbn5~l}bdTk#HD`I8|A;99ehHfebTtaNb7o zGG3K;76(qcr3!~V^z!nRWo5aU&-H`AEDPT1G+30PS2S8u73QQ}EU)%_Ff^AV5?k+1 zM3Q=9yvY~Cu9z1rB_q)cA94?xD+WqIPvh>Y8jTwk4}SYJ7x;XDhSF61*rcj;P;F3? zbajJrz<1dK)~3=%Pol3!i&})y(x5z|zRCoajmUH&{JC+)Al#Bw6USa2^+xu{>`<{g zZZj?y70(;=YP0^@W~My$HkHU=N`a0Rxu=|Co@%A%{y4<3F|mV|yI(&@SvJpn`gpT) z_K5>-7wk&=XZjzOO-tYaC5tql=~NO7^5aWhm>& z!4?-=;8r!;7Ub&*w-E2Xfb`NE9F6<}appJs<#6A7k^%`KZWa^Yl*@~Qp%q;UGKbjq zZ1mjlEW1>2d3+(XqXhf6Z60<{k178{uvivcKZB&TzDojSp_`?u7tA*T!p(<3C~8F@ zA6v1*i_$dccr+Y-jYz~Ik#NQwj$Su)a{Zc2*4}E6S}NYsnL{GYny;7xiLmk?2-%|y zJ6v5uS+{2phdBUVf{;Vu{;E@XO6L&ebA|d9Fy@o!cv|$8YgYBw8)}!Dz9T3-7_mO9 z#hGHn-I^xp`ZOjZ|t$Dy3Z|I!w0K2DLvO(#^PglepW~D z%&$Y&;~KOuKfeGA?F|g(g2keH+{T#iQ!1HV{WqGwpV{ljSYKjSAe?+r(Eu_i}J)&5spU+}>Ib+a~+cBQ~@br7nUmR?V}= z%^6Mofa6H*FYNwfUj?QK9`DXKjZ08) zosVpzCY<*Tv8StD?y@1m2E6M)zqV>a<)h&U<8y`5lMOwdXhihh^bg^waQeGlk+;$( z>kXAxpC$Xn_nYZvYWn~ zCkqiYlbw2Jl2$xi$2{Vju$1jrDY^!gky_Q1d`sO*G1W}xe!WufFfQOq8 JiRT)A?H?ng_znO7 diff --git a/libs/jstree/themes/mixed/40px.png b/libs/jstree/themes/mixed/40px.png deleted file mode 100644 index 4fc88e41e66508e4657b3ec6e5ec185a6084b7a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5717 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 .jstree-ocl { - cursor: default; -} -.jstree .jstree-open > .jstree-children { - display: block; -} -.jstree .jstree-closed > .jstree-children, -.jstree .jstree-leaf > .jstree-children { - display: none; -} -.jstree-anchor > .jstree-themeicon { - margin-right: 2px; -} -.jstree-no-icons .jstree-themeicon, -.jstree-anchor > .jstree-themeicon-hidden { - display: none; -} -.jstree-hidden, -.jstree-node.jstree-hidden { - display: none; -} -.jstree-rtl .jstree-anchor { - padding: 0 1px 0 4px; -} -.jstree-rtl .jstree-anchor > .jstree-themeicon { - margin-left: 2px; - margin-right: 0; -} -.jstree-rtl .jstree-node { - margin-left: 0; -} -.jstree-rtl .jstree-container-ul > .jstree-node { - margin-right: 0; -} -.jstree-wholerow-ul { - position: relative; - display: inline-block; - min-width: 100%; -} -.jstree-wholerow-ul .jstree-leaf > .jstree-ocl { - cursor: pointer; -} -.jstree-wholerow-ul .jstree-anchor, -.jstree-wholerow-ul .jstree-icon { - position: relative; -} -.jstree-wholerow-ul .jstree-wholerow { - width: 100%; - cursor: pointer; - position: absolute; - left: 0; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.jstree-contextmenu .jstree-anchor { - -webkit-user-select: none; - /* disable selection/Copy of UIWebView */ - -webkit-touch-callout: none; - /* disable the IOS popup when long-press on a link */ -} -.vakata-context { - display: none; -} -.vakata-context, -.vakata-context ul { - margin: 0; - padding: 2px; - position: absolute; - background: #f5f5f5; - border: 1px solid #979797; - box-shadow: 2px 2px 2px #999999; -} -.vakata-context ul { - list-style: none; - left: 100%; - margin-top: -2.7em; - margin-left: -4px; -} -.vakata-context .vakata-context-right ul { - left: auto; - right: 100%; - margin-left: auto; - margin-right: -4px; -} -.vakata-context li { - list-style: none; -} -.vakata-context li > a { - display: block; - padding: 0 2em 0 2em; - text-decoration: none; - width: auto; - color: black; - white-space: nowrap; - line-height: 2.4em; - text-shadow: 1px 1px 0 white; - border-radius: 1px; -} -.vakata-context li > a:hover { - position: relative; - background-color: #e8eff7; - box-shadow: 0 0 2px #0a6aa1; -} -.vakata-context li > a.vakata-context-parent { - background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw=="); - background-position: right center; - background-repeat: no-repeat; -} -.vakata-context li > a:focus { - outline: 0; -} -.vakata-context .vakata-context-hover > a { - position: relative; - background-color: #e8eff7; - box-shadow: 0 0 2px #0a6aa1; -} -.vakata-context .vakata-context-separator > a, -.vakata-context .vakata-context-separator > a:hover { - background: white; - border: 0; - border-top: 1px solid #e2e3e3; - height: 1px; - min-height: 1px; - max-height: 1px; - padding: 0; - margin: 0 0 0 2.4em; - border-left: 1px solid #e0e0e0; - text-shadow: 0 0 0 transparent; - box-shadow: 0 0 0 transparent; - border-radius: 0; -} -.vakata-context .vakata-contextmenu-disabled a, -.vakata-context .vakata-contextmenu-disabled a:hover { - color: silver; - background-color: transparent; - border: 0; - box-shadow: 0 0 0; -} -.vakata-context li > a > i { - text-decoration: none; - display: inline-block; - width: 2.4em; - height: 2.4em; - background: transparent; - margin: 0 0 0 -2em; - vertical-align: top; - text-align: center; - line-height: 2.4em; -} -.vakata-context li > a > i:empty { - width: 2.4em; - line-height: 2.4em; -} -.vakata-context li > a .vakata-contextmenu-sep { - display: inline-block; - width: 1px; - height: 2.4em; - background: white; - margin: 0 0.5em 0 0; - border-left: 1px solid #e2e3e3; -} -.vakata-context .vakata-contextmenu-shortcut { - font-size: 0.8em; - color: silver; - opacity: 0.5; - display: none; -} -.vakata-context-rtl ul { - left: auto; - right: 100%; - margin-left: auto; - margin-right: -4px; -} -.vakata-context-rtl li > a.vakata-context-parent { - background-image: url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7"); - background-position: left center; - background-repeat: no-repeat; -} -.vakata-context-rtl .vakata-context-separator > a { - margin: 0 2.4em 0 0; - border-left: 0; - border-right: 1px solid #e2e3e3; -} -.vakata-context-rtl .vakata-context-left ul { - right: auto; - left: 100%; - margin-left: -4px; - margin-right: auto; -} -.vakata-context-rtl li > a > i { - margin: 0 -2em 0 0; -} -.vakata-context-rtl li > a .vakata-contextmenu-sep { - margin: 0 0 0 0.5em; - border-left-color: white; - background: #e2e3e3; -} -#jstree-marker { - position: absolute; - top: 0; - left: 0; - margin: -5px 0 0 0; - padding: 0; - border-right: 0; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 5px solid; - width: 0; - height: 0; - font-size: 0; - line-height: 0; -} -#jstree-dnd { - line-height: 16px; - margin: 0; - padding: 4px; -} -#jstree-dnd .jstree-icon, -#jstree-dnd .jstree-copy { - display: inline-block; - text-decoration: none; - margin: 0 2px 0 0; - padding: 0; - width: 16px; - height: 16px; -} -#jstree-dnd .jstree-ok { - background: green; -} -#jstree-dnd .jstree-er { - background: red; -} -#jstree-dnd .jstree-copy { - margin: 0 2px 0 2px; -} -.jstree-default .jstree-node, -.jstree-default .jstree-icon { - background-repeat: no-repeat; - background-color: transparent; -} -.jstree-default .jstree-anchor, -.jstree-default .jstree-animated, -.jstree-default .jstree-wholerow { - transition: background-color 0.15s, box-shadow 0.15s; -} -.jstree-default .jstree-hovered { - background: #e7f4f9; - border-radius: 2px; - box-shadow: inset 0 0 1px #cccccc; -} -.jstree-default .jstree-context { - background: #e7f4f9; - border-radius: 2px; - box-shadow: inset 0 0 1px #cccccc; -} -.jstree-default .jstree-clicked { - background: #beebff; - border-radius: 2px; - box-shadow: inset 0 0 1px #999999; -} -.jstree-default .jstree-no-icons .jstree-anchor > .jstree-themeicon { - display: none; -} -.jstree-default .jstree-disabled { - background: transparent; - color: #666666; -} -.jstree-default .jstree-disabled.jstree-hovered { - background: transparent; - box-shadow: none; -} -.jstree-default .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default .jstree-disabled > .jstree-icon { - opacity: 0.8; - filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); - /* Firefox 10+ */ - filter: gray; - /* IE6-9 */ - -webkit-filter: grayscale(100%); - /* Chrome 19+ & Safari 6+ */ -} -.jstree-default .jstree-search { - font-style: italic; - color: #8b0000; - font-weight: bold; -} -.jstree-default .jstree-no-checkboxes .jstree-checkbox { - display: none !important; -} -.jstree-default.jstree-checkbox-no-clicked .jstree-clicked { - background: transparent; - box-shadow: none; -} -.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered { - background: #e7f4f9; -} -.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked { - background: transparent; -} -.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered { - background: #e7f4f9; -} -.jstree-default > .jstree-striped { - min-width: 100%; - display: inline-block; - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") left top repeat; -} -.jstree-default > .jstree-wholerow-ul .jstree-hovered, -.jstree-default > .jstree-wholerow-ul .jstree-clicked { - background: transparent; - box-shadow: none; - border-radius: 0; -} -.jstree-default .jstree-wholerow { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -.jstree-default .jstree-wholerow-hovered { - background: #e7f4f9; -} -.jstree-default .jstree-wholerow-clicked { - background: #beebff; - background: -webkit-linear-gradient(top, #beebff 0%, #a8e4ff 100%); - background: linear-gradient(to bottom, #beebff 0%, #a8e4ff 100%); -} -.jstree-default .jstree-node { - min-height: 24px; - line-height: 24px; - margin-left: 24px; - min-width: 24px; -} -.jstree-default .jstree-anchor { - line-height: 24px; - height: 24px; -} -.jstree-default .jstree-icon { - width: 24px; - height: 24px; - line-height: 24px; -} -.jstree-default .jstree-icon:empty { - width: 24px; - height: 24px; - line-height: 24px; -} -.jstree-default.jstree-rtl .jstree-node { - margin-right: 24px; -} -.jstree-default .jstree-wholerow { - height: 24px; -} -.jstree-default .jstree-node, -.jstree-default .jstree-icon { - background-image: url("32px.png"); -} -.jstree-default .jstree-node { - background-position: -292px -4px; - background-repeat: repeat-y; -} -.jstree-default .jstree-last { - background: transparent; -} -.jstree-default .jstree-open > .jstree-ocl { - background-position: -132px -4px; -} -.jstree-default .jstree-closed > .jstree-ocl { - background-position: -100px -4px; -} -.jstree-default .jstree-leaf > .jstree-ocl { - background-position: -68px -4px; -} -.jstree-default .jstree-themeicon { - background-position: -260px -4px; -} -.jstree-default > .jstree-no-dots .jstree-node, -.jstree-default > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -36px -4px; -} -.jstree-default > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -4px -4px; -} -.jstree-default .jstree-disabled { - background: transparent; -} -.jstree-default .jstree-disabled.jstree-hovered { - background: transparent; -} -.jstree-default .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default .jstree-checkbox { - background-position: -164px -4px; -} -.jstree-default .jstree-checkbox:hover { - background-position: -164px -36px; -} -.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, -.jstree-default .jstree-checked > .jstree-checkbox { - background-position: -228px -4px; -} -.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, -.jstree-default .jstree-checked > .jstree-checkbox:hover { - background-position: -228px -36px; -} -.jstree-default .jstree-anchor > .jstree-undetermined { - background-position: -196px -4px; -} -.jstree-default .jstree-anchor > .jstree-undetermined:hover { - background-position: -196px -36px; -} -.jstree-default .jstree-checkbox-disabled { - opacity: 0.8; - filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); - /* Firefox 10+ */ - filter: gray; - /* IE6-9 */ - -webkit-filter: grayscale(100%); - /* Chrome 19+ & Safari 6+ */ -} -.jstree-default > .jstree-striped { - background-size: auto 48px; -} -.jstree-default.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); - background-position: 100% 1px; - background-repeat: repeat-y; -} -.jstree-default.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default.jstree-rtl .jstree-open > .jstree-ocl { - background-position: -132px -36px; -} -.jstree-default.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -100px -36px; -} -.jstree-default.jstree-rtl .jstree-leaf > .jstree-ocl { - background-position: -68px -36px; -} -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-node, -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -36px -36px; -} -.jstree-default.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -4px -36px; -} -.jstree-default .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; -} -.jstree-default > .jstree-container-ul .jstree-loading > .jstree-ocl { - background: url("throbber.gif") center center no-repeat; -} -.jstree-default .jstree-file { - background: url("32px.png") -100px -68px no-repeat; -} -.jstree-default .jstree-folder { - background: url("32px.png") -260px -4px no-repeat; -} -.jstree-default > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; -} -#jstree-dnd.jstree-default { - line-height: 24px; - padding: 0 4px; -} -#jstree-dnd.jstree-default .jstree-ok, -#jstree-dnd.jstree-default .jstree-er { - background-image: url("32px.png"); - background-repeat: no-repeat; - background-color: transparent; -} -#jstree-dnd.jstree-default i { - background: transparent; - width: 24px; - height: 24px; - line-height: 24px; -} -#jstree-dnd.jstree-default .jstree-ok { - background-position: -4px -68px; -} -#jstree-dnd.jstree-default .jstree-er { - background-position: -36px -68px; -} -.jstree-default .jstree-ellipsis { - overflow: hidden; -} -.jstree-default .jstree-ellipsis .jstree-anchor { - width: calc(100% - 29px); - text-overflow: ellipsis; - overflow: hidden; -} -.jstree-default .jstree-ellipsis.jstree-no-icons .jstree-anchor { - width: calc(100% - 5px); -} -.jstree-default.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); -} -.jstree-default.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-small .jstree-node { - min-height: 18px; - line-height: 18px; - margin-left: 18px; - min-width: 18px; -} -.jstree-default-small .jstree-anchor { - line-height: 18px; - height: 18px; -} -.jstree-default-small .jstree-icon { - width: 18px; - height: 18px; - line-height: 18px; -} -.jstree-default-small .jstree-icon:empty { - width: 18px; - height: 18px; - line-height: 18px; -} -.jstree-default-small.jstree-rtl .jstree-node { - margin-right: 18px; -} -.jstree-default-small .jstree-wholerow { - height: 18px; -} -.jstree-default-small .jstree-node, -.jstree-default-small .jstree-icon { - background-image: url("32px.png"); -} -.jstree-default-small .jstree-node { - background-position: -295px -7px; - background-repeat: repeat-y; -} -.jstree-default-small .jstree-last { - background: transparent; -} -.jstree-default-small .jstree-open > .jstree-ocl { - background-position: -135px -7px; -} -.jstree-default-small .jstree-closed > .jstree-ocl { - background-position: -103px -7px; -} -.jstree-default-small .jstree-leaf > .jstree-ocl { - background-position: -71px -7px; -} -.jstree-default-small .jstree-themeicon { - background-position: -263px -7px; -} -.jstree-default-small > .jstree-no-dots .jstree-node, -.jstree-default-small > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-small > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -39px -7px; -} -.jstree-default-small > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -7px -7px; -} -.jstree-default-small .jstree-disabled { - background: transparent; -} -.jstree-default-small .jstree-disabled.jstree-hovered { - background: transparent; -} -.jstree-default-small .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default-small .jstree-checkbox { - background-position: -167px -7px; -} -.jstree-default-small .jstree-checkbox:hover { - background-position: -167px -39px; -} -.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, -.jstree-default-small .jstree-checked > .jstree-checkbox { - background-position: -231px -7px; -} -.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, -.jstree-default-small .jstree-checked > .jstree-checkbox:hover { - background-position: -231px -39px; -} -.jstree-default-small .jstree-anchor > .jstree-undetermined { - background-position: -199px -7px; -} -.jstree-default-small .jstree-anchor > .jstree-undetermined:hover { - background-position: -199px -39px; -} -.jstree-default-small .jstree-checkbox-disabled { - opacity: 0.8; - filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); - /* Firefox 10+ */ - filter: gray; - /* IE6-9 */ - -webkit-filter: grayscale(100%); - /* Chrome 19+ & Safari 6+ */ -} -.jstree-default-small > .jstree-striped { - background-size: auto 36px; -} -.jstree-default-small.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); - background-position: 100% 1px; - background-repeat: repeat-y; -} -.jstree-default-small.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-small.jstree-rtl .jstree-open > .jstree-ocl { - background-position: -135px -39px; -} -.jstree-default-small.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -103px -39px; -} -.jstree-default-small.jstree-rtl .jstree-leaf > .jstree-ocl { - background-position: -71px -39px; -} -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-node, -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -39px -39px; -} -.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: -7px -39px; -} -.jstree-default-small .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; -} -.jstree-default-small > .jstree-container-ul .jstree-loading > .jstree-ocl { - background: url("throbber.gif") center center no-repeat; -} -.jstree-default-small .jstree-file { - background: url("32px.png") -103px -71px no-repeat; -} -.jstree-default-small .jstree-folder { - background: url("32px.png") -263px -7px no-repeat; -} -.jstree-default-small > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; -} -#jstree-dnd.jstree-default-small { - line-height: 18px; - padding: 0 4px; -} -#jstree-dnd.jstree-default-small .jstree-ok, -#jstree-dnd.jstree-default-small .jstree-er { - background-image: url("32px.png"); - background-repeat: no-repeat; - background-color: transparent; -} -#jstree-dnd.jstree-default-small i { - background: transparent; - width: 18px; - height: 18px; - line-height: 18px; -} -#jstree-dnd.jstree-default-small .jstree-ok { - background-position: -7px -71px; -} -#jstree-dnd.jstree-default-small .jstree-er { - background-position: -39px -71px; -} -.jstree-default-small .jstree-ellipsis { - overflow: hidden; -} -.jstree-default-small .jstree-ellipsis .jstree-anchor { - width: calc(100% - 23px); - text-overflow: ellipsis; - overflow: hidden; -} -.jstree-default-small .jstree-ellipsis.jstree-no-icons .jstree-anchor { - width: calc(100% - 5px); -} -.jstree-default-small.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg=="); -} -.jstree-default-small.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-large .jstree-node { - min-height: 32px; - line-height: 32px; - margin-left: 32px; - min-width: 32px; -} -.jstree-default-large .jstree-anchor { - line-height: 32px; - height: 32px; -} -.jstree-default-large .jstree-icon { - width: 32px; - height: 32px; - line-height: 32px; -} -.jstree-default-large .jstree-icon:empty { - width: 32px; - height: 32px; - line-height: 32px; -} -.jstree-default-large.jstree-rtl .jstree-node { - margin-right: 32px; -} -.jstree-default-large .jstree-wholerow { - height: 32px; -} -.jstree-default-large .jstree-node, -.jstree-default-large .jstree-icon { - background-image: url("32px.png"); -} -.jstree-default-large .jstree-node { - background-position: -288px 0px; - background-repeat: repeat-y; -} -.jstree-default-large .jstree-last { - background: transparent; -} -.jstree-default-large .jstree-open > .jstree-ocl { - background-position: -128px 0px; -} -.jstree-default-large .jstree-closed > .jstree-ocl { - background-position: -96px 0px; -} -.jstree-default-large .jstree-leaf > .jstree-ocl { - background-position: -64px 0px; -} -.jstree-default-large .jstree-themeicon { - background-position: -256px 0px; -} -.jstree-default-large > .jstree-no-dots .jstree-node, -.jstree-default-large > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-large > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -32px 0px; -} -.jstree-default-large > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: 0px 0px; -} -.jstree-default-large .jstree-disabled { - background: transparent; -} -.jstree-default-large .jstree-disabled.jstree-hovered { - background: transparent; -} -.jstree-default-large .jstree-disabled.jstree-clicked { - background: #efefef; -} -.jstree-default-large .jstree-checkbox { - background-position: -160px 0px; -} -.jstree-default-large .jstree-checkbox:hover { - background-position: -160px -32px; -} -.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, -.jstree-default-large .jstree-checked > .jstree-checkbox { - background-position: -224px 0px; -} -.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, -.jstree-default-large .jstree-checked > .jstree-checkbox:hover { - background-position: -224px -32px; -} -.jstree-default-large .jstree-anchor > .jstree-undetermined { - background-position: -192px 0px; -} -.jstree-default-large .jstree-anchor > .jstree-undetermined:hover { - background-position: -192px -32px; -} -.jstree-default-large .jstree-checkbox-disabled { - opacity: 0.8; - filter: url("data:image/svg+xml;utf8,#jstree-grayscale"); - /* Firefox 10+ */ - filter: gray; - /* IE6-9 */ - -webkit-filter: grayscale(100%); - /* Chrome 19+ & Safari 6+ */ -} -.jstree-default-large > .jstree-striped { - background-size: auto 64px; -} -.jstree-default-large.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg=="); - background-position: 100% 1px; - background-repeat: repeat-y; -} -.jstree-default-large.jstree-rtl .jstree-last { - background: transparent; -} -.jstree-default-large.jstree-rtl .jstree-open > .jstree-ocl { - background-position: -128px -32px; -} -.jstree-default-large.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -96px -32px; -} -.jstree-default-large.jstree-rtl .jstree-leaf > .jstree-ocl { - background-position: -64px -32px; -} -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-node, -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl { - background: transparent; -} -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl { - background-position: -32px -32px; -} -.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl { - background-position: 0px -32px; -} -.jstree-default-large .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; -} -.jstree-default-large > .jstree-container-ul .jstree-loading > .jstree-ocl { - background: url("throbber.gif") center center no-repeat; -} -.jstree-default-large .jstree-file { - background: url("32px.png") -96px -64px no-repeat; -} -.jstree-default-large .jstree-folder { - background: url("32px.png") -256px 0px no-repeat; -} -.jstree-default-large > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; -} -#jstree-dnd.jstree-default-large { - line-height: 32px; - padding: 0 4px; -} -#jstree-dnd.jstree-default-large .jstree-ok, -#jstree-dnd.jstree-default-large .jstree-er { - background-image: url("32px.png"); - background-repeat: no-repeat; - background-color: transparent; -} -#jstree-dnd.jstree-default-large i { - background: transparent; - width: 32px; - height: 32px; - line-height: 32px; -} -#jstree-dnd.jstree-default-large .jstree-ok { - background-position: 0px -64px; -} -#jstree-dnd.jstree-default-large .jstree-er { - background-position: -32px -64px; -} -.jstree-default-large .jstree-ellipsis { - overflow: hidden; -} -.jstree-default-large .jstree-ellipsis .jstree-anchor { - width: calc(100% - 37px); - text-overflow: ellipsis; - overflow: hidden; -} -.jstree-default-large .jstree-ellipsis.jstree-no-icons .jstree-anchor { - width: calc(100% - 5px); -} -.jstree-default-large.jstree-rtl .jstree-node { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg=="); -} -.jstree-default-large.jstree-rtl .jstree-last { - background: transparent; -} -@media (max-width: 768px) { - #jstree-dnd.jstree-dnd-responsive { - line-height: 40px; - font-weight: bold; - font-size: 1.1em; - text-shadow: 1px 1px white; - } - #jstree-dnd.jstree-dnd-responsive > i { - background: transparent; - width: 40px; - height: 40px; - } - #jstree-dnd.jstree-dnd-responsive > .jstree-ok { - background-image: url("40px.png"); - background-position: 0 -200px; - background-size: 120px 240px; - } - #jstree-dnd.jstree-dnd-responsive > .jstree-er { - background-image: url("40px.png"); - background-position: -40px -200px; - background-size: 120px 240px; - } - #jstree-marker.jstree-dnd-responsive { - border-left-width: 10px; - border-top-width: 10px; - border-bottom-width: 10px; - margin-top: -10px; - } -} -@media (max-width: 768px) { - .jstree-default-responsive { - /* - .jstree-open > .jstree-ocl, - .jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; } - */ - } - .jstree-default-responsive .jstree-icon { - background-image: url("40px.png"); - } - .jstree-default-responsive .jstree-node, - .jstree-default-responsive .jstree-leaf > .jstree-ocl { - background: transparent; - } - .jstree-default-responsive .jstree-node { - min-height: 40px; - line-height: 40px; - margin-left: 40px; - min-width: 40px; - white-space: nowrap; - } - .jstree-default-responsive .jstree-anchor { - line-height: 40px; - height: 40px; - } - .jstree-default-responsive .jstree-icon, - .jstree-default-responsive .jstree-icon:empty { - width: 40px; - height: 40px; - line-height: 40px; - } - .jstree-default-responsive > .jstree-container-ul > .jstree-node { - margin-left: 0; - } - .jstree-default-responsive.jstree-rtl .jstree-node { - margin-left: 0; - margin-right: 40px; - background: transparent; - } - .jstree-default-responsive.jstree-rtl .jstree-container-ul > .jstree-node { - margin-right: 0; - } - .jstree-default-responsive .jstree-ocl, - .jstree-default-responsive .jstree-themeicon, - .jstree-default-responsive .jstree-checkbox { - background-size: 120px 240px; - } - .jstree-default-responsive .jstree-leaf > .jstree-ocl, - .jstree-default-responsive.jstree-rtl .jstree-leaf > .jstree-ocl { - background: transparent; - } - .jstree-default-responsive .jstree-open > .jstree-ocl { - background-position: 0 0px !important; - } - .jstree-default-responsive .jstree-closed > .jstree-ocl { - background-position: 0 -40px !important; - } - .jstree-default-responsive.jstree-rtl .jstree-closed > .jstree-ocl { - background-position: -40px 0px !important; - } - .jstree-default-responsive .jstree-themeicon { - background-position: -40px -40px; - } - .jstree-default-responsive .jstree-checkbox, - .jstree-default-responsive .jstree-checkbox:hover { - background-position: -40px -80px; - } - .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox, - .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover, - .jstree-default-responsive .jstree-checked > .jstree-checkbox, - .jstree-default-responsive .jstree-checked > .jstree-checkbox:hover { - background-position: 0 -80px; - } - .jstree-default-responsive .jstree-anchor > .jstree-undetermined, - .jstree-default-responsive .jstree-anchor > .jstree-undetermined:hover { - background-position: 0 -120px; - } - .jstree-default-responsive .jstree-anchor { - font-weight: bold; - font-size: 1.1em; - text-shadow: 1px 1px white; - } - .jstree-default-responsive > .jstree-striped { - background: transparent; - } - .jstree-default-responsive .jstree-wholerow { - border-top: 1px solid rgba(255, 255, 255, 0.7); - border-bottom: 1px solid rgba(64, 64, 64, 0.2); - background: #ebebeb; - height: 40px; - } - .jstree-default-responsive .jstree-wholerow-hovered { - background: #e7f4f9; - } - .jstree-default-responsive .jstree-wholerow-clicked { - background: #beebff; - } - .jstree-default-responsive .jstree-children .jstree-last > .jstree-wholerow { - box-shadow: inset 0 -6px 3px -5px #666666; - } - .jstree-default-responsive .jstree-children .jstree-open > .jstree-wholerow { - box-shadow: inset 0 6px 3px -5px #666666; - border-top: 0; - } - .jstree-default-responsive .jstree-children .jstree-open + .jstree-open { - box-shadow: none; - } - .jstree-default-responsive .jstree-node, - .jstree-default-responsive .jstree-icon, - .jstree-default-responsive .jstree-node > .jstree-ocl, - .jstree-default-responsive .jstree-themeicon, - .jstree-default-responsive .jstree-checkbox { - background-image: url("40px.png"); - background-size: 120px 240px; - } - .jstree-default-responsive .jstree-node { - background-position: -80px 0; - background-repeat: repeat-y; - } - .jstree-default-responsive .jstree-last { - background: transparent; - } - .jstree-default-responsive .jstree-leaf > .jstree-ocl { - background-position: -40px -120px; - } - .jstree-default-responsive .jstree-last > .jstree-ocl { - background-position: -40px -160px; - } - .jstree-default-responsive .jstree-themeicon-custom { - background-color: transparent; - background-image: none; - background-position: 0 0; - } - .jstree-default-responsive .jstree-file { - background: url("40px.png") 0 -160px no-repeat; - background-size: 120px 240px; - } - .jstree-default-responsive .jstree-folder { - background: url("40px.png") -40px -40px no-repeat; - background-size: 120px 240px; - } - .jstree-default-responsive > .jstree-container-ul > .jstree-node { - margin-left: 0; - margin-right: 0; - } -} diff --git a/libs/jstree/themes/mixed/style.min.css b/libs/jstree/themes/mixed/style.min.css deleted file mode 100644 index f9822c7..0000000 --- a/libs/jstree/themes/mixed/style.min.css +++ /dev/null @@ -1 +0,0 @@ -.jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jstree-contextmenu .jstree-anchor{-webkit-user-select:none;-webkit-touch-callout:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7);background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default .jstree-anchor,.jstree-default .jstree-animated,.jstree-default .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default .jstree-hovered{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-context{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-clicked{background:#beebff;border-radius:2px;box-shadow:inset 0 0 1px #999}.jstree-default .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default .jstree-disabled{background:0 0;color:#666}.jstree-default .jstree-disabled.jstree-hovered{background:0 0;box-shadow:none}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default .jstree-search{font-style:italic;color:#8b0000;font-weight:700}.jstree-default .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;box-shadow:none}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#e7f4f9}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:0 0}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#e7f4f9}.jstree-default>.jstree-striped{min-width:100%;display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==) left top repeat}.jstree-default>.jstree-wholerow-ul .jstree-hovered,.jstree-default>.jstree-wholerow-ul .jstree-clicked{background:0 0;box-shadow:none;border-radius:0}.jstree-default .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default .jstree-wholerow-clicked{background:#beebff;background:-webkit-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:linear-gradient(to bottom,#beebff 0,#a8e4ff 100%)}.jstree-default .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default .jstree-anchor{line-height:24px;height:24px}.jstree-default .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default.jstree-rtl .jstree-node{margin-right:24px}.jstree-default .jstree-wholerow{height:24px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-image:url(32px.png)}.jstree-default .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default .jstree-last{background:0 0}.jstree-default .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default .jstree-themeicon{background-position:-260px -4px}.jstree-default>.jstree-no-dots .jstree-node,.jstree-default>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default .jstree-disabled{background:0 0}.jstree-default .jstree-disabled.jstree-hovered{background:0 0}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-checkbox{background-position:-164px -4px}.jstree-default .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default>.jstree-striped{background-size:auto 48px}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default .jstree-ok,#jstree-dnd.jstree-default .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default .jstree-er{background-position:-36px -68px}.jstree-default .jstree-ellipsis{overflow:hidden}.jstree-default .jstree-ellipsis .jstree-anchor{width:calc(100% - 29px);text-overflow:ellipsis;overflow:hidden}.jstree-default .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-small .jstree-wholerow{height:18px}.jstree-default-small .jstree-node,.jstree-default-small .jstree-icon{background-image:url(32px.png)}.jstree-default-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-small .jstree-last{background:0 0}.jstree-default-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-small>.jstree-no-dots .jstree-node,.jstree-default-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-small .jstree-disabled{background:0 0}.jstree-default-small .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-small .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-small>.jstree-striped{background-size:auto 36px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-small .jstree-ok,#jstree-dnd.jstree-default-small .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-small .jstree-er{background-position:-39px -71px}.jstree-default-small .jstree-ellipsis{overflow:hidden}.jstree-default-small .jstree-ellipsis .jstree-anchor{width:calc(100% - 23px);text-overflow:ellipsis;overflow:hidden}.jstree-default-small .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-large .jstree-wholerow{height:32px}.jstree-default-large .jstree-node,.jstree-default-large .jstree-icon{background-image:url(32px.png)}.jstree-default-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-large .jstree-last{background:0 0}.jstree-default-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-large .jstree-themeicon{background-position:-256px 0}.jstree-default-large>.jstree-no-dots .jstree-node,.jstree-default-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-large .jstree-disabled{background:0 0}.jstree-default-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-large .jstree-checkbox{background-position:-160px 0}.jstree-default-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-large .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-large>.jstree-striped{background-size:auto 64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}.jstree-default-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-large .jstree-ok,#jstree-dnd.jstree-default-large .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-large .jstree-er{background-position:-32px -64px}.jstree-default-large .jstree-ellipsis{overflow:hidden}.jstree-default-large .jstree-ellipsis .jstree-anchor{width:calc(100% - 37px);text-overflow:ellipsis;overflow:hidden}.jstree-default-large .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:0 0}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl,.jstree-default-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-responsive>.jstree-striped{background:0 0}.jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,.7);border-bottom:1px solid rgba(64,64,64,.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-responsive .jstree-last{background:0 0}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}} \ No newline at end of file diff --git a/libs/jstree/themes/mixed/throbber.gif b/libs/jstree/themes/mixed/throbber.gif deleted file mode 100644 index cd75035ce8086b233c62c3775de4696007ba7950..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1720 zcmZ|OYfMvT7zgm4p2O+ea@rnBg#%t_w^9y@rd%z;T+7W;EEIuRP@n~of>p{*LD94n zD#dD%>4eQ7(f}2w1Jp&gxD-%9@q$L8PU8@DI@}hSaq0)%%HqfF!~5+?{=fX6_gR&k zB#zeL6rA#kLJ1EKkB*MkYPAxH#A31N_4>ZPK7+x~*4Cy{sgz1(XJ@Bct?upZwb^Vn zH8uQyJW~@hGvcMn#IR)|7@|-p{15)|6-An=q7A%lB~@CUrc_g-E7NRPRY{9GBtGW2#F<6Tlp*{3e2sO*9QTn07T-ayS_ZHC-#O>$xhqqdcpZ ztmi!vPe)MeZRuUe$#kkQ=ZCx#&BIF_bl`&&kBftO#70Qh(%BzvH^%Q*V^7k&A({sT z%Y^lTu*avnIgG+U1|!SMokH(YXlu`0j~)X}p;*dbvgwiG8ou~G0H`U%D%A}cX`Z7O z)ni(eb`a})TPHM1hAVH$IJP)wYgYnn9eF%-V%K@toW*&nV8eM+!Cp9L>Vhol^Gh@~ z%&1Z5Vm+|c!un0R(q?jRP)d+nM1>1Mdbt4 zq+z&G4Mf-;dC=>aU>rU4#Qsu;p3RpG$pl+_MhkB8a)~L$l9^5fWiX2+H!!5_T5s^9 z4>JK<{X^Fo%S_uDF%5Ow6`@;%!WN<1E;i0BB-n*W1?E{l7sBj|dY;=Uk(#XoO1L_N z@qGP~b}*65jDQozoGo?S4(63|3?uFyzC7?Gm+`Y=Q}V!~eW9^>IiUQTB_L<1=H*gdQy5&m_IYV z%Li4Uo_>Bi7os#uY}WcRfHHEkH&b8~%gsue?-o<(!aOHjm`s4Z3LOy|RiA_cGTpV7aX)L(k3WdLrb3z#~FKmqZa8IsfA0m#1pKiYPj1TEN53e>tkg z0RTNlJq#uQVrLpQqdM5r6JnuD=hIQXX(5PA4}{kHxmV1!p*>qQvt#tEygNOAs@+Oz zdfw4ZMdhbk+u}+OPG5|*-o?V{NXcn0HBbAn)h^Y1-B04pOzSBDfelR>`teLE(^ROI zh&b$euUUs^kZN*1k{J%gadZHxgJ?{nH{AjOmJrF77iSdv|L<1j9OLgC{;#V|RJlr& zcSW6j{0-Aeuhh1H@4Gt=_&ggRSH>Bn1;_M62O`)zlyTGNWU^sE&gnQmJ~HG$aPw$; zKX(DOIsRy?o{m{z>42;$0!CTTcF2R3?au%K2(p-Mna`zCH@bI}ee7d=$K>rPkFF?8 zv$nvf0d|7yp7!sKocJY+u zY6SVs9!-4A?3JGvc^gfN8$7Nen2o=3aWO!QO@le}aMdx8^`2yXn=H9`9ATLE&9>s? q)n(GDbX6ch9<^Oe2Q%ytegccF@POz|8L)A;FQ!??rHkeqG5-P<(jCG8 diff --git a/libs/openlayers3/LICENSE b/libs/openlayers3/LICENSE deleted file mode 100644 index d2cf0d7..0000000 --- a/libs/openlayers3/LICENSE +++ /dev/null @@ -1,4 +0,0 @@ -http://openlayers.org/ - -Code licensed under the 2-Clause BSD. All documentation CC BY 3.0. Thanks to our sponsors. -https://tldrlegal.com/license/bsd-2-clause-license-(freebsd) \ No newline at end of file diff --git a/libs/openlayers3/ol-deps.js b/libs/openlayers3/ol-deps.js deleted file mode 100644 index eaa5be2..0000000 --- a/libs/openlayers3/ol-deps.js +++ /dev/null @@ -1,1716 +0,0 @@ -// This file was autogenerated by depswriter.py. -// Please do not edit. -goog.addDependency('../../../ol.ext/pbf.js', ['ol.ext.pbf'], [], false); -goog.addDependency('../../../ol.ext/pixelworks.js', ['ol.ext.pixelworks'], [], false); -goog.addDependency('../../../ol.ext/rbush.js', ['ol.ext.rbush'], [], false); -goog.addDependency('../../../ol.ext/vectortile.js', ['ol.ext.vectortile'], [], false); -goog.addDependency('../../../ol/ol/animation.js', ['ol.animation'], ['ol', 'ol.PreRenderFunction', 'ol.ViewHint', 'ol.coordinate', 'ol.easing'], false); -goog.addDependency('../../../ol/ol/array.js', ['ol.array'], ['goog.array', 'goog.asserts'], false); -goog.addDependency('../../../ol/ol/attribution.js', ['ol.Attribution'], ['goog.math', 'ol.TileRange'], false); -goog.addDependency('../../../ol/ol/canvasfunction.js', ['ol.CanvasFunctionType'], [], false); -goog.addDependency('../../../ol/ol/centerconstraint.js', ['ol.CenterConstraint', 'ol.CenterConstraintType'], ['ol.math'], false); -goog.addDependency('../../../ol/ol/collection.js', ['ol.Collection', 'ol.CollectionEvent', 'ol.CollectionEventType'], ['goog.array', 'goog.events.Event', 'ol.Object'], false); -goog.addDependency('../../../ol/ol/color/color.js', ['ol.Color', 'ol.color'], ['goog.asserts', 'goog.color', 'goog.color.names', 'goog.vec.Mat4', 'ol', 'ol.math'], false); -goog.addDependency('../../../ol/ol/constraints.js', ['ol.Constraints'], ['ol.CenterConstraintType', 'ol.ResolutionConstraintType', 'ol.RotationConstraintType'], false); -goog.addDependency('../../../ol/ol/control/attributioncontrol.js', ['ol.control.Attribution'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.object', 'goog.style', 'ol', 'ol.Attribution', 'ol.control.Control', 'ol.css', 'ol.source.Tile'], false); -goog.addDependency('../../../ol/ol/control/control.js', ['ol.control.Control'], ['goog.dom', 'goog.events', 'ol', 'ol.MapEventType', 'ol.Object'], false); -goog.addDependency('../../../ol/ol/control/controldefaults.js', ['ol.control'], ['ol', 'ol.Collection', 'ol.control.Attribution', 'ol.control.Rotate', 'ol.control.Zoom'], false); -goog.addDependency('../../../ol/ol/control/fullscreencontrol.js', ['ol.control.FullScreen'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.dom.fullscreen', 'goog.dom.fullscreen.EventType', 'goog.events', 'goog.events.EventType', 'ol', 'ol.control.Control', 'ol.css'], false); -goog.addDependency('../../../ol/ol/control/mousepositioncontrol.js', ['ol.control.MousePosition'], ['goog.dom', 'goog.events', 'goog.events.EventType', 'ol.CoordinateFormatType', 'ol.Object', 'ol.Pixel', 'ol.TransformFunction', 'ol.control.Control', 'ol.proj', 'ol.proj.Projection'], false); -goog.addDependency('../../../ol/ol/control/overviewmapcontrol.js', ['ol.control.OverviewMap'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.math.Size', 'goog.style', 'ol', 'ol.Collection', 'ol.Map', 'ol.MapEventType', 'ol.Object', 'ol.ObjectEventType', 'ol.Overlay', 'ol.OverlayPositioning', 'ol.View', 'ol.ViewProperty', 'ol.control.Control', 'ol.coordinate', 'ol.css', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/control/rotatecontrol.js', ['ol.control.Rotate'], ['goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'ol', 'ol.animation', 'ol.control.Control', 'ol.css', 'ol.easing'], false); -goog.addDependency('../../../ol/ol/control/scalelinecontrol.js', ['ol.control.ScaleLine', 'ol.control.ScaleLineProperty', 'ol.control.ScaleLineUnits'], ['goog.asserts', 'goog.dom', 'goog.events', 'goog.style', 'ol', 'ol.Object', 'ol.TransformFunction', 'ol.control.Control', 'ol.css', 'ol.math', 'ol.proj', 'ol.proj.METERS_PER_UNIT', 'ol.proj.Units', 'ol.sphere.NORMAL'], false); -goog.addDependency('../../../ol/ol/control/zoomcontrol.js', ['ol.control.Zoom'], ['goog.dom', 'goog.events', 'goog.events.EventType', 'ol.animation', 'ol.control.Control', 'ol.css', 'ol.easing'], false); -goog.addDependency('../../../ol/ol/control/zoomslidercontrol.js', ['ol.control.ZoomSlider'], ['goog.asserts', 'goog.dom', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.fx.DragEvent', 'goog.fx.Dragger', 'goog.fx.Dragger.EventType', 'goog.math.Rect', 'goog.style', 'ol.Size', 'ol.ViewHint', 'ol.animation', 'ol.control.Control', 'ol.css', 'ol.easing', 'ol.math'], false); -goog.addDependency('../../../ol/ol/control/zoomtoextentcontrol.js', ['ol.control.ZoomToExtent'], ['goog.asserts', 'goog.dom', 'goog.events', 'goog.events.EventType', 'ol.control.Control', 'ol.css'], false); -goog.addDependency('../../../ol/ol/coordinate.js', ['ol.Coordinate', 'ol.CoordinateFormatType', 'ol.coordinate'], ['goog.math', 'goog.string'], false); -goog.addDependency('../../../ol/ol/css.js', ['ol.css'], [], false); -goog.addDependency('../../../ol/ol/deviceorientation.js', ['ol.DeviceOrientation', 'ol.DeviceOrientationProperty'], ['goog.events', 'ol', 'ol.Object', 'ol.has', 'ol.math'], false); -goog.addDependency('../../../ol/ol/dom/dom.js', ['ol.dom', 'ol.dom.BrowserFeature'], ['goog.asserts', 'goog.dom', 'goog.userAgent', 'goog.vec.Mat4', 'ol'], false); -goog.addDependency('../../../ol/ol/easing.js', ['ol.easing'], [], false); -goog.addDependency('../../../ol/ol/events/condition.js', ['ol.events.ConditionType', 'ol.events.condition'], ['goog.asserts', 'goog.functions', 'ol.MapBrowserEvent.EventType', 'ol.MapBrowserPointerEvent'], false); -goog.addDependency('../../../ol/ol/extent.js', ['ol.Extent', 'ol.extent', 'ol.extent.Corner', 'ol.extent.Relationship'], ['goog.asserts', 'goog.vec.Mat4', 'ol.Coordinate', 'ol.Size', 'ol.TransformFunction'], false); -goog.addDependency('../../../ol/ol/feature.js', ['ol.Feature', 'ol.FeatureStyleFunction'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'ol', 'ol.Object', 'ol.geom.Geometry', 'ol.style.Style'], false); -goog.addDependency('../../../ol/ol/featureloader.js', ['ol.FeatureLoader', 'ol.FeatureUrlFunction', 'ol.featureloader'], ['goog.asserts', 'goog.events', 'goog.net.EventType', 'goog.net.XhrIo', 'goog.net.XhrIo.ResponseType', 'ol.TileState', 'ol.format.FormatType', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/esrijsonformat.js', ['ol.format.EsriJSON'], ['goog.array', 'goog.asserts', 'goog.object', 'ol.Feature', 'ol.extent', 'ol.format.Feature', 'ol.format.JSONFeature', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.LinearRing', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.geom.flat.orient', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/featureformat.js', ['ol.format.Feature'], ['ol.geom.Geometry', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/format.js', ['ol.format.FormatType'], [], false); -goog.addDependency('../../../ol/ol/format/geojsonformat.js', ['ol.format.GeoJSON'], ['goog.asserts', 'goog.object', 'ol.Feature', 'ol.format.Feature', 'ol.format.JSONFeature', 'ol.geom.GeometryCollection', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/gml/gml2format.js', ['ol.format.GML2'], ['goog.asserts', 'goog.dom.NodeType', 'ol.extent', 'ol.format.GMLBase', 'ol.format.XSD', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/gml/gml3format.js', ['ol.format.GML', 'ol.format.GML3'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol', 'ol.Feature', 'ol.extent', 'ol.format.Feature', 'ol.format.GMLBase', 'ol.format.XSD', 'ol.geom.Geometry', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.LinearRing', 'ol.geom.MultiLineString', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/gml/gmlbaseformat.js', ['ol.format.GMLBase'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.object', 'goog.string', 'ol.Feature', 'ol.format.Feature', 'ol.format.XMLFeature', 'ol.geom.Geometry', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.LinearRing', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/gpxformat.js', ['ol.format.GPX'], ['goog.asserts', 'goog.dom.NodeType', 'ol.Feature', 'ol.array', 'ol.format.Feature', 'ol.format.XMLFeature', 'ol.format.XSD', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.Point', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/igcformat.js', ['ol.format.IGC', 'ol.format.IGCZ'], ['goog.asserts', 'goog.string', 'goog.string.newlines', 'ol.Feature', 'ol.format.Feature', 'ol.format.TextFeature', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/jsonfeatureformat.js', ['ol.format.JSONFeature'], ['goog.asserts', 'goog.json', 'ol.format.Feature', 'ol.format.FormatType'], false); -goog.addDependency('../../../ol/ol/format/kmlformat.js', ['ol.format.KML'], ['goog.Uri', 'goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol', 'ol.Feature', 'ol.FeatureStyleFunction', 'ol.array', 'ol.color', 'ol.format.Feature', 'ol.format.XMLFeature', 'ol.format.XSD', 'ol.geom.Geometry', 'ol.geom.GeometryCollection', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.LinearRing', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.math', 'ol.proj', 'ol.style.Fill', 'ol.style.Icon', 'ol.style.IconAnchorUnits', 'ol.style.IconOrigin', 'ol.style.Image', 'ol.style.Stroke', 'ol.style.Style', 'ol.style.Text', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/mvtformat.js', ['ol.format.MVT'], ['goog.asserts', 'ol.Feature', 'ol.ext.pbf', 'ol.ext.vectortile', 'ol.format.Feature', 'ol.format.FormatType', 'ol.geom.Geometry', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj', 'ol.proj.Projection', 'ol.proj.Units', 'ol.render.Feature'], false); -goog.addDependency('../../../ol/ol/format/osmxmlformat.js', ['ol.format.OSMXML'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol.Feature', 'ol.format.Feature', 'ol.format.XMLFeature', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/owsformat.js', ['ol.format.OWS'], ['goog.asserts', 'goog.dom.NodeType', 'ol.format.XLink', 'ol.format.XML', 'ol.format.XSD', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/polylineformat.js', ['ol.format.Polyline'], ['goog.asserts', 'ol.Feature', 'ol.format.Feature', 'ol.format.TextFeature', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.SimpleGeometry', 'ol.geom.flat.flip', 'ol.geom.flat.inflate', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/textfeatureformat.js', ['ol.format.TextFeature'], ['goog.asserts', 'ol.format.Feature', 'ol.format.FormatType'], false); -goog.addDependency('../../../ol/ol/format/topojsonformat.js', ['ol.format.TopoJSON'], ['goog.asserts', 'goog.object', 'ol.Feature', 'ol.format.Feature', 'ol.format.JSONFeature', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/format/wfsformat.js', ['ol.format.WFS'], ['goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol', 'ol.format.GML3', 'ol.format.GMLBase', 'ol.format.XMLFeature', 'ol.format.XSD', 'ol.geom.Geometry', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/wktformat.js', ['ol.format.WKT'], ['goog.asserts', 'ol', 'ol.Feature', 'ol.format.Feature', 'ol.format.TextFeature', 'ol.geom.Geometry', 'ol.geom.GeometryCollection', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon'], false); -goog.addDependency('../../../ol/ol/format/wmscapabilitiesformat.js', ['ol.format.WMSCapabilities'], ['goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol', 'ol.format.XLink', 'ol.format.XML', 'ol.format.XSD', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/wmsgetfeatureinfoformat.js', ['ol.format.WMSGetFeatureInfo'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.object', 'ol.format.GML2', 'ol.format.XMLFeature', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/wmtscapabilitiesformat.js', ['ol.format.WMTSCapabilities'], ['goog.asserts', 'goog.dom.NodeType', 'ol.extent', 'ol.format.OWS', 'ol.format.XLink', 'ol.format.XML', 'ol.format.XSD', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/xlinkformat.js', ['ol.format.XLink'], [], false); -goog.addDependency('../../../ol/ol/format/xmlfeatureformat.js', ['ol.format.XMLFeature'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.dom.xml', 'ol.format.Feature', 'ol.format.FormatType', 'ol.proj', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/xmlformat.js', ['ol.format.XML'], ['goog.asserts', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/format/xsdformat.js', ['ol.format.XSD'], ['goog.asserts', 'goog.string', 'ol', 'ol.xml'], false); -goog.addDependency('../../../ol/ol/framestate.js', ['ol.PostRenderFunction', 'ol.PreRenderFunction'], [], false); -goog.addDependency('../../../ol/ol/geolocation.js', ['ol.Geolocation', 'ol.GeolocationProperty'], ['goog.events', 'goog.events.EventType', 'ol.Coordinate', 'ol.Object', 'ol.geom.Geometry', 'ol.geom.Polygon', 'ol.has', 'ol.math', 'ol.proj', 'ol.sphere.WGS84'], false); -goog.addDependency('../../../ol/ol/geom/circle.js', ['ol.geom.Circle'], ['goog.asserts', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.SimpleGeometry', 'ol.geom.flat.deflate', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/geom/flat/areaflatgeom.js', ['ol.geom.flat.area'], [], false); -goog.addDependency('../../../ol/ol/geom/flat/centerflatgeom.js', ['ol.geom.flat.center'], ['ol.extent'], false); -goog.addDependency('../../../ol/ol/geom/flat/closestflatgeom.js', ['ol.geom.flat.closest'], ['goog.asserts', 'goog.math', 'ol.math'], false); -goog.addDependency('../../../ol/ol/geom/flat/containsflatgeom.js', ['ol.geom.flat.contains'], ['goog.asserts', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/geom/flat/deflateflatgeom.js', ['ol.geom.flat.deflate'], ['goog.asserts'], false); -goog.addDependency('../../../ol/ol/geom/flat/flipflatgeom.js', ['ol.geom.flat.flip'], ['goog.asserts'], false); -goog.addDependency('../../../ol/ol/geom/flat/geodesicflatgeom.js', ['ol.geom.flat.geodesic'], ['goog.asserts', 'goog.object', 'ol.TransformFunction', 'ol.math', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/geom/flat/inflateflatgeom.js', ['ol.geom.flat.inflate'], [], false); -goog.addDependency('../../../ol/ol/geom/flat/interiorpointflatgeom.js', ['ol.geom.flat.interiorpoint'], ['goog.asserts', 'ol.geom.flat.contains'], false); -goog.addDependency('../../../ol/ol/geom/flat/interpolateflatgeom.js', ['ol.geom.flat.interpolate'], ['goog.array', 'goog.asserts', 'goog.math'], false); -goog.addDependency('../../../ol/ol/geom/flat/intersectsextent.js', ['ol.geom.flat.intersectsextent'], ['goog.asserts', 'ol.extent', 'ol.geom.flat.contains', 'ol.geom.flat.segments'], false); -goog.addDependency('../../../ol/ol/geom/flat/lengthflatgeom.js', ['ol.geom.flat.length'], [], false); -goog.addDependency('../../../ol/ol/geom/flat/orientflatgeom.js', ['ol.geom.flat.orient'], ['ol', 'ol.geom.flat.reverse'], false); -goog.addDependency('../../../ol/ol/geom/flat/reverseflatgeom.js', ['ol.geom.flat.reverse'], [], false); -goog.addDependency('../../../ol/ol/geom/flat/segmentsflatgeom.js', ['ol.geom.flat.segments'], [], false); -goog.addDependency('../../../ol/ol/geom/flat/simplifyflatgeom.js', ['ol.geom.flat.simplify'], ['ol.math'], false); -goog.addDependency('../../../ol/ol/geom/flat/transformflatgeom.js', ['ol.geom.flat.transform'], ['goog.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/geom/geometry.js', ['ol.geom.Geometry', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType'], ['goog.asserts', 'goog.functions', 'ol.Object', 'ol.extent', 'ol.proj', 'ol.proj.Units'], false); -goog.addDependency('../../../ol/ol/geom/geometrycollection.js', ['ol.geom.GeometryCollection'], ['goog.events', 'goog.events.EventType', 'goog.object', 'ol.extent', 'ol.geom.Geometry', 'ol.geom.GeometryType'], false); -goog.addDependency('../../../ol/ol/geom/linearring.js', ['ol.geom.LinearRing'], ['ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.SimpleGeometry', 'ol.geom.flat.area', 'ol.geom.flat.closest', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.geom.flat.simplify'], false); -goog.addDependency('../../../ol/ol/geom/linestring.js', ['ol.geom.LineString'], ['goog.array', 'goog.asserts', 'ol', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.SimpleGeometry', 'ol.geom.flat.closest', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.geom.flat.interpolate', 'ol.geom.flat.intersectsextent', 'ol.geom.flat.length', 'ol.geom.flat.segments', 'ol.geom.flat.simplify'], false); -goog.addDependency('../../../ol/ol/geom/multilinestring.js', ['ol.geom.MultiLineString'], ['goog.array', 'goog.asserts', 'ol', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.SimpleGeometry', 'ol.geom.flat.closest', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.geom.flat.interpolate', 'ol.geom.flat.intersectsextent', 'ol.geom.flat.simplify'], false); -goog.addDependency('../../../ol/ol/geom/multipoint.js', ['ol.geom.MultiPoint'], ['goog.array', 'goog.asserts', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.Point', 'ol.geom.SimpleGeometry', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.math'], false); -goog.addDependency('../../../ol/ol/geom/multipolygon.js', ['ol.geom.MultiPolygon'], ['goog.array', 'goog.asserts', 'goog.object', 'ol', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.MultiPoint', 'ol.geom.Polygon', 'ol.geom.SimpleGeometry', 'ol.geom.flat.area', 'ol.geom.flat.center', 'ol.geom.flat.closest', 'ol.geom.flat.contains', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.geom.flat.interiorpoint', 'ol.geom.flat.intersectsextent', 'ol.geom.flat.orient', 'ol.geom.flat.simplify'], false); -goog.addDependency('../../../ol/ol/geom/point.js', ['ol.geom.Point'], ['ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.SimpleGeometry', 'ol.geom.flat.deflate', 'ol.math'], false); -goog.addDependency('../../../ol/ol/geom/polygon.js', ['ol.geom.Polygon'], ['goog.array', 'goog.asserts', 'goog.math', 'ol', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.GeometryType', 'ol.geom.LinearRing', 'ol.geom.Point', 'ol.geom.SimpleGeometry', 'ol.geom.flat.area', 'ol.geom.flat.closest', 'ol.geom.flat.contains', 'ol.geom.flat.deflate', 'ol.geom.flat.inflate', 'ol.geom.flat.interiorpoint', 'ol.geom.flat.intersectsextent', 'ol.geom.flat.orient', 'ol.geom.flat.simplify'], false); -goog.addDependency('../../../ol/ol/geom/simplegeometry.js', ['ol.geom.SimpleGeometry'], ['goog.asserts', 'goog.functions', 'goog.object', 'ol.extent', 'ol.geom.Geometry', 'ol.geom.GeometryLayout', 'ol.geom.flat.transform'], false); -goog.addDependency('../../../ol/ol/graticule.js', ['ol.Graticule'], ['goog.asserts', 'ol.extent', 'ol.geom.GeometryLayout', 'ol.geom.LineString', 'ol.geom.flat.geodesic', 'ol.math', 'ol.proj', 'ol.render.EventType', 'ol.style.Stroke'], false); -goog.addDependency('../../../ol/ol/has.js', ['ol.has'], ['goog.dom', 'ol', 'ol.dom', 'ol.webgl'], false); -goog.addDependency('../../../ol/ol/image.js', ['ol.Image'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'ol.ImageBase', 'ol.ImageState', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/imagebase.js', ['ol.ImageBase', 'ol.ImageState'], ['goog.asserts', 'goog.events.EventTarget', 'goog.events.EventType', 'ol.Attribution', 'ol.Extent'], false); -goog.addDependency('../../../ol/ol/imagecanvas.js', ['ol.ImageCanvas'], ['goog.asserts', 'ol.ImageBase', 'ol.ImageState'], false); -goog.addDependency('../../../ol/ol/imageloadfunction.js', ['ol.ImageLoadFunctionType'], [], false); -goog.addDependency('../../../ol/ol/imagetile.js', ['ol.ImageTile'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'ol.Tile', 'ol.TileCoord', 'ol.TileLoadFunctionType', 'ol.TileState'], false); -goog.addDependency('../../../ol/ol/imageurlfunction.js', ['ol.ImageUrlFunction', 'ol.ImageUrlFunctionType'], ['ol.Size'], false); -goog.addDependency('../../../ol/ol/interaction/doubleclickzoominteraction.js', ['ol.interaction.DoubleClickZoom'], ['goog.asserts', 'ol.MapBrowserEvent', 'ol.MapBrowserEvent.EventType', 'ol.interaction.Interaction'], false); -goog.addDependency('../../../ol/ol/interaction/draganddropinteraction.js', ['ol.interaction.DragAndDrop', 'ol.interaction.DragAndDropEvent'], ['goog.asserts', 'goog.events', 'goog.events.Event', 'goog.events.FileDropHandler', 'goog.events.FileDropHandler.EventType', 'goog.fs.FileReader', 'goog.functions', 'ol.interaction.Interaction', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/interaction/dragboxinteraction.js', ['ol.DragBoxEvent', 'ol.interaction.DragBox'], ['goog.events.Event', 'ol', 'ol.events.ConditionType', 'ol.events.condition', 'ol.interaction.Pointer', 'ol.render.Box'], false); -goog.addDependency('../../../ol/ol/interaction/dragpaninteraction.js', ['ol.interaction.DragPan'], ['goog.asserts', 'ol.Kinetic', 'ol.Pixel', 'ol.PreRenderFunction', 'ol.ViewHint', 'ol.coordinate', 'ol.events.condition', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/interaction/dragrotateandzoominteraction.js', ['ol.interaction.DragRotateAndZoom'], ['goog.math.Vec2', 'ol', 'ol.ViewHint', 'ol.events.ConditionType', 'ol.events.condition', 'ol.interaction.Interaction', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/interaction/dragrotateinteraction.js', ['ol.interaction.DragRotate'], ['ol', 'ol.ViewHint', 'ol.events.ConditionType', 'ol.events.condition', 'ol.interaction.Interaction', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/interaction/dragzoominteraction.js', ['ol.interaction.DragZoom'], ['goog.asserts', 'ol.animation', 'ol.easing', 'ol.events.condition', 'ol.extent', 'ol.interaction.DragBox'], false); -goog.addDependency('../../../ol/ol/interaction/drawinteraction.js', ['ol.interaction.Draw', 'ol.interaction.DrawEvent', 'ol.interaction.DrawEventType', 'ol.interaction.DrawGeometryFunctionType', 'ol.interaction.DrawMode'], ['goog.asserts', 'goog.events', 'goog.events.Event', 'ol.Collection', 'ol.Coordinate', 'ol.Feature', 'ol.MapBrowserEvent', 'ol.MapBrowserEvent.EventType', 'ol.Object', 'ol.coordinate', 'ol.events.condition', 'ol.geom.Circle', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.geom.SimpleGeometry', 'ol.interaction.InteractionProperty', 'ol.interaction.Pointer', 'ol.layer.Vector', 'ol.source.Vector'], false); -goog.addDependency('../../../ol/ol/interaction/interaction.js', ['ol.interaction.Interaction', 'ol.interaction.InteractionProperty'], ['ol', 'ol.MapBrowserEvent', 'ol.Object', 'ol.animation', 'ol.easing'], false); -goog.addDependency('../../../ol/ol/interaction/interactiondefaults.js', ['ol.interaction'], ['ol', 'ol.Collection', 'ol.Kinetic', 'ol.interaction.DoubleClickZoom', 'ol.interaction.DragPan', 'ol.interaction.DragRotate', 'ol.interaction.DragZoom', 'ol.interaction.KeyboardPan', 'ol.interaction.KeyboardZoom', 'ol.interaction.MouseWheelZoom', 'ol.interaction.PinchRotate', 'ol.interaction.PinchZoom'], false); -goog.addDependency('../../../ol/ol/interaction/keyboardpaninteraction.js', ['ol.interaction.KeyboardPan'], ['goog.asserts', 'goog.events.KeyCodes', 'goog.events.KeyHandler.EventType', 'goog.functions', 'ol', 'ol.coordinate', 'ol.events.ConditionType', 'ol.events.condition', 'ol.interaction.Interaction'], false); -goog.addDependency('../../../ol/ol/interaction/keyboardzoominteraction.js', ['ol.interaction.KeyboardZoom'], ['goog.asserts', 'goog.events.KeyHandler.EventType', 'ol.events.ConditionType', 'ol.events.condition', 'ol.interaction.Interaction'], false); -goog.addDependency('../../../ol/ol/interaction/modifyinteraction.js', ['ol.interaction.Modify', 'ol.interaction.ModifyEvent'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.functions', 'ol', 'ol.Collection', 'ol.CollectionEventType', 'ol.Feature', 'ol.MapBrowserEvent.EventType', 'ol.MapBrowserPointerEvent', 'ol.ViewHint', 'ol.coordinate', 'ol.events.condition', 'ol.extent', 'ol.geom.GeometryType', 'ol.geom.LineString', 'ol.geom.MultiLineString', 'ol.geom.MultiPoint', 'ol.geom.MultiPolygon', 'ol.geom.Point', 'ol.geom.Polygon', 'ol.interaction.Pointer', 'ol.layer.Vector', 'ol.source.Vector', 'ol.structs.RBush'], false); -goog.addDependency('../../../ol/ol/interaction/mousewheelzoominteraction.js', ['ol.interaction.MouseWheelZoom'], ['goog.asserts', 'goog.events.MouseWheelEvent', 'goog.events.MouseWheelHandler.EventType', 'ol', 'ol.Coordinate', 'ol.interaction.Interaction', 'ol.math'], false); -goog.addDependency('../../../ol/ol/interaction/pinchrotateinteraction.js', ['ol.interaction.PinchRotate'], ['goog.asserts', 'goog.functions', 'goog.style', 'ol', 'ol.Coordinate', 'ol.ViewHint', 'ol.interaction.Interaction', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/interaction/pinchzoominteraction.js', ['ol.interaction.PinchZoom'], ['goog.asserts', 'goog.functions', 'goog.style', 'ol', 'ol.Coordinate', 'ol.ViewHint', 'ol.interaction.Interaction', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/interaction/pointerinteraction.js', ['ol.interaction.Pointer'], ['goog.functions', 'goog.object', 'ol', 'ol.MapBrowserEvent.EventType', 'ol.MapBrowserPointerEvent', 'ol.Pixel', 'ol.interaction.Interaction'], false); -goog.addDependency('../../../ol/ol/interaction/selectinteraction.js', ['ol.interaction.Select', 'ol.interaction.SelectEvent', 'ol.interaction.SelectEventType', 'ol.interaction.SelectFilterFunction'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.events.Event', 'goog.functions', 'goog.object', 'ol.CollectionEventType', 'ol.Feature', 'ol.array', 'ol.events.condition', 'ol.geom.GeometryType', 'ol.interaction.Interaction', 'ol.layer.Vector', 'ol.source.Vector'], false); -goog.addDependency('../../../ol/ol/interaction/snapinteraction.js', ['ol.interaction.Snap', 'ol.interaction.SnapProperty'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'ol', 'ol.Collection', 'ol.CollectionEvent', 'ol.CollectionEventType', 'ol.Extent', 'ol.Feature', 'ol.Object', 'ol.Observable', 'ol.coordinate', 'ol.extent', 'ol.geom.Geometry', 'ol.interaction.Pointer', 'ol.source.Vector', 'ol.source.VectorEvent', 'ol.source.VectorEventType', 'ol.structs.RBush'], false); -goog.addDependency('../../../ol/ol/interaction/translateinteraction.js', ['ol.interaction.Translate', 'ol.interaction.TranslateEvent'], ['goog.events', 'goog.events.Event', 'ol.array', 'ol.interaction.Pointer'], false); -goog.addDependency('../../../ol/ol/kinetic.js', ['ol.Kinetic'], ['ol.Coordinate', 'ol.PreRenderFunction', 'ol.animation'], false); -goog.addDependency('../../../ol/ol/layer/heatmaplayer.js', ['ol.layer.Heatmap'], ['goog.asserts', 'goog.events', 'goog.object', 'ol', 'ol.Object', 'ol.dom', 'ol.layer.Vector', 'ol.math', 'ol.render.EventType', 'ol.style.Icon', 'ol.style.Style'], false); -goog.addDependency('../../../ol/ol/layer/imagelayer.js', ['ol.layer.Image'], ['ol.layer.Layer'], false); -goog.addDependency('../../../ol/ol/layer/layer.js', ['ol.layer.Layer'], ['goog.events', 'goog.events.EventType', 'goog.object', 'ol', 'ol.Object', 'ol.layer.Base', 'ol.layer.LayerProperty', 'ol.render.EventType', 'ol.source.State'], false); -goog.addDependency('../../../ol/ol/layer/layerbase.js', ['ol.layer.Base', 'ol.layer.LayerProperty', 'ol.layer.LayerState'], ['goog.object', 'ol', 'ol.Object', 'ol.math', 'ol.source.State'], false); -goog.addDependency('../../../ol/ol/layer/layergroup.js', ['ol.layer.Group'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'ol.Collection', 'ol.CollectionEvent', 'ol.CollectionEventType', 'ol.Object', 'ol.ObjectEventType', 'ol.extent', 'ol.layer.Base', 'ol.source.State'], false); -goog.addDependency('../../../ol/ol/layer/tilelayer.js', ['ol.layer.Tile'], ['goog.object', 'ol', 'ol.layer.Layer'], false); -goog.addDependency('../../../ol/ol/layer/vectorlayer.js', ['ol.layer.Vector'], ['goog.asserts', 'goog.object', 'ol', 'ol.layer.Layer', 'ol.style.Style'], false); -goog.addDependency('../../../ol/ol/layer/vectortilelayer.js', ['ol.layer.VectorTile'], ['goog.object', 'ol.layer.Vector'], false); -goog.addDependency('../../../ol/ol/loadingstrategy.js', ['ol.LoadingStrategy', 'ol.loadingstrategy'], ['ol.TileCoord'], false); -goog.addDependency('../../../ol/ol/map.js', ['ol.Map', 'ol.MapProperty'], ['goog.array', 'goog.asserts', 'goog.async.AnimationDelay', 'goog.async.nextTick', 'goog.debug.Console', 'goog.dom', 'goog.dom.ViewportSizeMonitor', 'goog.dom.classlist', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyHandler', 'goog.events.KeyHandler.EventType', 'goog.events.MouseWheelHandler', 'goog.events.MouseWheelHandler.EventType', 'goog.functions', 'goog.log', 'goog.log.Level', 'goog.object', 'goog.style', 'goog.vec.Mat4', 'ol.Collection', 'ol.CollectionEventType', 'ol.MapBrowserEvent', 'ol.MapBrowserEvent.EventType', 'ol.MapBrowserEventHandler', 'ol.MapEvent', 'ol.MapEventType', 'ol.Object', 'ol.ObjectEvent', 'ol.ObjectEventType', 'ol.Pixel', 'ol.PostRenderFunction', 'ol.PreRenderFunction', 'ol.RendererType', 'ol.Size', 'ol.TileQueue', 'ol.View', 'ol.ViewHint', 'ol.control', 'ol.extent', 'ol.has', 'ol.interaction', 'ol.layer.Base', 'ol.layer.Group', 'ol.proj', 'ol.proj.common', 'ol.renderer.Map', 'ol.renderer.canvas.Map', 'ol.renderer.dom.Map', 'ol.renderer.webgl.Map', 'ol.size', 'ol.structs.PriorityQueue', 'ol.tilecoord', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/mapbrowserevent.js', ['ol.MapBrowserEvent', 'ol.MapBrowserEvent.EventType', 'ol.MapBrowserEventHandler', 'ol.MapBrowserPointerEvent'], ['goog.asserts', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.object', 'ol', 'ol.Coordinate', 'ol.MapEvent', 'ol.Pixel', 'ol.pointer.PointerEvent', 'ol.pointer.PointerEventHandler'], false); -goog.addDependency('../../../ol/ol/mapevent.js', ['ol.MapEvent', 'ol.MapEventType'], ['goog.events.Event'], false); -goog.addDependency('../../../ol/ol/math.js', ['ol.math'], ['goog.asserts'], false); -goog.addDependency('../../../ol/ol/object.js', ['ol.Object', 'ol.ObjectEvent', 'ol.ObjectEventType'], ['goog.events', 'goog.events.Event', 'ol.Observable'], false); -goog.addDependency('../../../ol/ol/observable.js', ['ol.Observable'], ['goog.events', 'goog.events.EventTarget', 'goog.events.EventType'], false); -goog.addDependency('../../../ol/ol/ol.js', ['ol'], [], false); -goog.addDependency('../../../ol/ol/overlay.js', ['ol.Overlay', 'ol.OverlayPositioning', 'ol.OverlayProperty'], ['goog.asserts', 'goog.dom', 'goog.events', 'goog.style', 'ol.Coordinate', 'ol.Map', 'ol.MapEventType', 'ol.Object', 'ol.animation', 'ol.dom', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/pixel.js', ['ol.Pixel'], [], false); -goog.addDependency('../../../ol/ol/pointer/eventsource.js', ['ol.pointer.EventSource'], ['goog.events.BrowserEvent'], false); -goog.addDependency('../../../ol/ol/pointer/mousesource.js', ['ol.pointer.MouseSource'], ['ol.pointer.EventSource'], false); -goog.addDependency('../../../ol/ol/pointer/mssource.js', ['ol.pointer.MsSource'], ['ol.pointer.EventSource'], false); -goog.addDependency('../../../ol/ol/pointer/nativesource.js', ['ol.pointer.NativeSource'], ['ol.pointer.EventSource'], false); -goog.addDependency('../../../ol/ol/pointer/pointerevent.js', ['ol.pointer.PointerEvent'], ['goog.events', 'goog.events.Event'], false); -goog.addDependency('../../../ol/ol/pointer/pointereventhandler.js', ['ol.pointer.PointerEventHandler'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'ol.has', 'ol.pointer.MouseSource', 'ol.pointer.MsSource', 'ol.pointer.NativeSource', 'ol.pointer.PointerEvent', 'ol.pointer.TouchSource'], false); -goog.addDependency('../../../ol/ol/pointer/touchsource.js', ['ol.pointer.TouchSource'], ['goog.array', 'goog.object', 'ol', 'ol.pointer.EventSource', 'ol.pointer.MouseSource'], false); -goog.addDependency('../../../ol/ol/proj/common.js', ['ol.proj.common'], ['ol.proj', 'ol.proj.EPSG3857', 'ol.proj.EPSG4326'], false); -goog.addDependency('../../../ol/ol/proj/epsg3857projection.js', ['ol.proj.EPSG3857'], ['goog.asserts', 'ol.math', 'ol.proj', 'ol.proj.Projection', 'ol.proj.Units'], false); -goog.addDependency('../../../ol/ol/proj/epsg4326projection.js', ['ol.proj.EPSG4326'], ['ol.proj', 'ol.proj.Projection', 'ol.proj.Units'], false); -goog.addDependency('../../../ol/ol/proj/proj.js', ['ol.proj', 'ol.proj.METERS_PER_UNIT', 'ol.proj.Projection', 'ol.proj.ProjectionLike', 'ol.proj.Units'], ['goog.asserts', 'goog.object', 'ol', 'ol.Extent', 'ol.TransformFunction', 'ol.extent', 'ol.sphere.NORMAL'], false); -goog.addDependency('../../../ol/ol/raster/operation.js', ['ol.raster.Operation', 'ol.raster.OperationType'], [], false); -goog.addDependency('../../../ol/ol/raster/pixel.js', ['ol.raster.Pixel'], [], false); -goog.addDependency('../../../ol/ol/render/box.js', ['ol.render.Box'], ['goog.Disposable', 'goog.asserts', 'ol.geom.Polygon'], false); -goog.addDependency('../../../ol/ol/render/canvas/canvas.js', ['ol.render.canvas'], [], false); -goog.addDependency('../../../ol/ol/render/canvas/canvasimmediate.js', ['ol.render.canvas.Immediate'], ['goog.array', 'goog.asserts', 'goog.vec.Mat4', 'ol.color', 'ol.extent', 'ol.geom.flat.transform', 'ol.has', 'ol.render.VectorContext', 'ol.render.canvas', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/render/canvas/canvasreplay.js', ['ol.render.canvas.ImageReplay', 'ol.render.canvas.LineStringReplay', 'ol.render.canvas.PolygonReplay', 'ol.render.canvas.Replay', 'ol.render.canvas.ReplayGroup', 'ol.render.canvas.TextReplay'], ['goog.array', 'goog.asserts', 'goog.object', 'goog.vec.Mat4', 'ol', 'ol.array', 'ol.color', 'ol.dom', 'ol.extent', 'ol.extent.Relationship', 'ol.geom.flat.simplify', 'ol.geom.flat.transform', 'ol.has', 'ol.render.IReplayGroup', 'ol.render.VectorContext', 'ol.render.canvas', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/render/ireplay.js', ['ol.render.IReplayGroup'], ['ol.render.VectorContext'], false); -goog.addDependency('../../../ol/ol/render/renderevent.js', ['ol.render.Event', 'ol.render.EventType'], ['goog.events.Event', 'ol.render.VectorContext'], false); -goog.addDependency('../../../ol/ol/render/renderfeature.js', ['ol.render.Feature'], ['goog.asserts', 'goog.functions', 'ol.extent', 'ol.geom.GeometryType'], false); -goog.addDependency('../../../ol/ol/render/vector.js', ['ol.renderer.vector'], ['goog.asserts', 'ol.render.Feature', 'ol.render.IReplayGroup', 'ol.style.ImageState', 'ol.style.Style'], false); -goog.addDependency('../../../ol/ol/render/vectorcontext.js', ['ol.render.VectorContext'], [], false); -goog.addDependency('../../../ol/ol/render/webgl/webglimagedefaultshader.js', ['ol.render.webgl.imagereplay.shader.Default', 'ol.render.webgl.imagereplay.shader.Default.Locations', 'ol.render.webgl.imagereplay.shader.DefaultFragment', 'ol.render.webgl.imagereplay.shader.DefaultVertex'], ['ol.webgl.shader'], false); -goog.addDependency('../../../ol/ol/render/webgl/webglimmediate.js', ['ol.render.webgl.Immediate'], ['goog.array', 'ol.extent', 'ol.render.VectorContext', 'ol.render.webgl.ImageReplay', 'ol.render.webgl.ReplayGroup'], false); -goog.addDependency('../../../ol/ol/render/webgl/webglreplay.js', ['ol.render.webgl.ImageReplay', 'ol.render.webgl.ReplayGroup'], ['goog.asserts', 'goog.functions', 'goog.object', 'goog.vec.Mat4', 'ol.extent', 'ol.render.IReplayGroup', 'ol.render.VectorContext', 'ol.render.webgl.imagereplay.shader.Default', 'ol.render.webgl.imagereplay.shader.Default.Locations', 'ol.render.webgl.imagereplay.shader.DefaultFragment', 'ol.render.webgl.imagereplay.shader.DefaultVertex', 'ol.vec.Mat4', 'ol.webgl.Buffer', 'ol.webgl.Context'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvasimagelayerrenderer.js', ['ol.renderer.canvas.ImageLayer'], ['goog.asserts', 'goog.functions', 'goog.vec.Mat4', 'ol.ImageBase', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Image', 'ol.proj', 'ol.renderer.canvas.Layer', 'ol.source.ImageVector', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvaslayerrenderer.js', ['ol.renderer.canvas.Layer'], ['goog.array', 'goog.asserts', 'goog.vec.Mat4', 'ol.dom', 'ol.extent', 'ol.layer.Layer', 'ol.render.Event', 'ol.render.EventType', 'ol.render.canvas.Immediate', 'ol.renderer.Layer', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvasmaprenderer.js', ['ol.renderer.canvas.Map'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.style', 'goog.vec.Mat4', 'ol', 'ol.RendererType', 'ol.css', 'ol.dom', 'ol.layer.Image', 'ol.layer.Layer', 'ol.layer.Tile', 'ol.layer.Vector', 'ol.layer.VectorTile', 'ol.render.Event', 'ol.render.EventType', 'ol.render.canvas.Immediate', 'ol.renderer.Map', 'ol.renderer.canvas.ImageLayer', 'ol.renderer.canvas.Layer', 'ol.renderer.canvas.TileLayer', 'ol.renderer.canvas.VectorLayer', 'ol.renderer.canvas.VectorTileLayer', 'ol.source.State', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvastilelayerrenderer.js', ['ol.renderer.canvas.TileLayer'], ['goog.array', 'goog.asserts', 'goog.vec.Mat4', 'ol.Size', 'ol.TileRange', 'ol.TileState', 'ol.dom', 'ol.extent', 'ol.layer.Tile', 'ol.renderer.canvas.Layer', 'ol.size', 'ol.tilecoord', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvasvectorlayerrenderer.js', ['ol.renderer.canvas.VectorLayer'], ['goog.array', 'goog.asserts', 'goog.events', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Vector', 'ol.render.EventType', 'ol.render.canvas.ReplayGroup', 'ol.renderer.canvas.Layer', 'ol.renderer.vector', 'ol.source.Vector'], false); -goog.addDependency('../../../ol/ol/renderer/canvas/canvasvectortilelayerrenderer.js', ['ol.renderer.canvas.VectorTileLayer'], ['goog.asserts', 'goog.events', 'goog.vec.Mat4', 'ol.Feature', 'ol.TileRange', 'ol.TileState', 'ol.VectorTile', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.VectorTile', 'ol.proj.Units', 'ol.render.EventType', 'ol.render.canvas.ReplayGroup', 'ol.renderer.canvas.Layer', 'ol.renderer.vector', 'ol.size', 'ol.source.VectorTile', 'ol.tilecoord', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/dom/domimagelayerrenderer.js', ['ol.renderer.dom.ImageLayer'], ['goog.asserts', 'goog.dom', 'goog.vec.Mat4', 'ol.ImageBase', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Image', 'ol.proj', 'ol.renderer.dom.Layer', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/dom/domlayerrenderer.js', ['ol.renderer.dom.Layer'], ['ol', 'ol.layer.Layer', 'ol.renderer.Layer'], false); -goog.addDependency('../../../ol/ol/renderer/dom/dommaprenderer.js', ['ol.renderer.dom.Map'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.style', 'goog.vec.Mat4', 'ol', 'ol.RendererType', 'ol.css', 'ol.dom', 'ol.layer.Image', 'ol.layer.Layer', 'ol.layer.Tile', 'ol.layer.Vector', 'ol.render.Event', 'ol.render.EventType', 'ol.render.canvas.Immediate', 'ol.renderer.Map', 'ol.renderer.dom.ImageLayer', 'ol.renderer.dom.Layer', 'ol.renderer.dom.TileLayer', 'ol.renderer.dom.VectorLayer', 'ol.source.State', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/dom/domtilelayerrenderer.js', ['ol.renderer.dom.TileLayer'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.style', 'goog.vec.Mat4', 'ol', 'ol.Coordinate', 'ol.TileCoord', 'ol.TileRange', 'ol.TileState', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Tile', 'ol.renderer.dom.Layer', 'ol.size', 'ol.tilecoord', 'ol.tilegrid.TileGrid', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/dom/domvectorlayerrenderer.js', ['ol.renderer.dom.VectorLayer'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.vec.Mat4', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Vector', 'ol.render.Event', 'ol.render.EventType', 'ol.render.canvas.Immediate', 'ol.render.canvas.ReplayGroup', 'ol.renderer.dom.Layer', 'ol.renderer.vector', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/layerrenderer.js', ['ol.renderer.Layer'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.functions', 'ol', 'ol.ImageState', 'ol.Observable', 'ol.TileRange', 'ol.TileState', 'ol.layer.Layer', 'ol.source.Source', 'ol.source.State', 'ol.source.Tile', 'ol.tilecoord', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/maprenderer.js', ['ol.RendererType', 'ol.renderer.Map'], ['goog.Disposable', 'goog.asserts', 'goog.dispose', 'goog.events', 'goog.events.EventType', 'goog.functions', 'goog.object', 'goog.vec.Mat4', 'ol', 'ol.extent', 'ol.layer.Layer', 'ol.renderer.Layer', 'ol.style.IconImageCache', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webglimagelayerrenderer.js', ['ol.renderer.webgl.ImageLayer'], ['goog.asserts', 'goog.functions', 'goog.vec.Mat4', 'goog.webgl', 'ol.Coordinate', 'ol.Extent', 'ol.ImageBase', 'ol.ViewHint', 'ol.dom', 'ol.extent', 'ol.layer.Image', 'ol.proj', 'ol.renderer.webgl.Layer', 'ol.source.ImageVector', 'ol.vec.Mat4', 'ol.webgl.Context'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webgllayerrenderer.js', ['ol.renderer.webgl.Layer'], ['goog.vec.Mat4', 'goog.webgl', 'ol.layer.Layer', 'ol.render.Event', 'ol.render.EventType', 'ol.render.webgl.Immediate', 'ol.renderer.Layer', 'ol.renderer.webgl.map.shader.Default', 'ol.renderer.webgl.map.shader.Default.Locations', 'ol.renderer.webgl.map.shader.DefaultFragment', 'ol.renderer.webgl.map.shader.DefaultVertex', 'ol.webgl.Buffer', 'ol.webgl.Context'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webglmapdefaultshader.js', ['ol.renderer.webgl.map.shader.Default', 'ol.renderer.webgl.map.shader.Default.Locations', 'ol.renderer.webgl.map.shader.DefaultFragment', 'ol.renderer.webgl.map.shader.DefaultVertex'], ['ol.webgl.shader'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webglmaprenderer.js', ['ol.renderer.webgl.Map'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.events', 'goog.events.Event', 'goog.log', 'goog.log.Logger', 'goog.object', 'goog.style', 'goog.webgl', 'ol', 'ol.RendererType', 'ol.css', 'ol.dom', 'ol.layer.Image', 'ol.layer.Layer', 'ol.layer.Tile', 'ol.layer.Vector', 'ol.render.Event', 'ol.render.EventType', 'ol.render.webgl.Immediate', 'ol.renderer.Map', 'ol.renderer.webgl.ImageLayer', 'ol.renderer.webgl.Layer', 'ol.renderer.webgl.TileLayer', 'ol.renderer.webgl.VectorLayer', 'ol.source.State', 'ol.structs.LRUCache', 'ol.structs.PriorityQueue', 'ol.webgl', 'ol.webgl.Context', 'ol.webgl.WebGLContextEventType'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webgltilelayerrenderer.js', ['ol.renderer.webgl.TileLayer'], ['goog.array', 'goog.asserts', 'goog.vec.Mat4', 'goog.vec.Vec4', 'goog.webgl', 'ol.TileRange', 'ol.TileState', 'ol.extent', 'ol.layer.Tile', 'ol.math', 'ol.renderer.webgl.Layer', 'ol.renderer.webgl.tilelayer.shader.Fragment', 'ol.renderer.webgl.tilelayer.shader.Locations', 'ol.renderer.webgl.tilelayer.shader.Vertex', 'ol.size', 'ol.tilecoord', 'ol.vec.Mat4', 'ol.webgl.Buffer'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webgltilelayershader.js', ['ol.renderer.webgl.tilelayer.shader', 'ol.renderer.webgl.tilelayer.shader.Fragment', 'ol.renderer.webgl.tilelayer.shader.Locations', 'ol.renderer.webgl.tilelayer.shader.Vertex'], ['ol.webgl.shader'], false); -goog.addDependency('../../../ol/ol/renderer/webgl/webglvectorlayerrenderer.js', ['ol.renderer.webgl.VectorLayer'], ['goog.array', 'goog.asserts', 'goog.events', 'ol.ViewHint', 'ol.extent', 'ol.layer.Vector', 'ol.render.webgl.ReplayGroup', 'ol.renderer.vector', 'ol.renderer.webgl.Layer', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/reproj/image.js', ['ol.reproj.Image', 'ol.reproj.ImageFunctionType'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'ol.ImageBase', 'ol.ImageState', 'ol.extent', 'ol.proj', 'ol.reproj', 'ol.reproj.Triangulation'], false); -goog.addDependency('../../../ol/ol/reproj/reproj.js', ['ol.reproj'], ['goog.labs.userAgent.browser', 'goog.labs.userAgent.platform', 'goog.math', 'ol.dom', 'ol.extent', 'ol.math', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/reproj/tile.js', ['ol.reproj.Tile', 'ol.reproj.TileFunctionType'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.math', 'goog.object', 'ol.Tile', 'ol.TileState', 'ol.extent', 'ol.math', 'ol.proj', 'ol.reproj', 'ol.reproj.Triangulation'], false); -goog.addDependency('../../../ol/ol/reproj/triangulation.js', ['ol.reproj.Triangulation'], ['goog.asserts', 'goog.math', 'ol.extent', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/resolutionconstraint.js', ['ol.ResolutionConstraint', 'ol.ResolutionConstraintType'], ['ol.array', 'ol.math'], false); -goog.addDependency('../../../ol/ol/rotationconstraint.js', ['ol.RotationConstraint', 'ol.RotationConstraintType'], ['ol.math'], false); -goog.addDependency('../../../ol/ol/size.js', ['ol.Size', 'ol.size'], ['goog.asserts'], false); -goog.addDependency('../../../ol/ol/source/bingmapssource.js', ['ol.source.BingMaps'], ['goog.Uri', 'goog.asserts', 'goog.net.Jsonp', 'ol.Attribution', 'ol.TileRange', 'ol.TileUrlFunction', 'ol.extent', 'ol.proj', 'ol.source.State', 'ol.source.TileImage', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/source/clustersource.js', ['ol.source.Cluster'], ['goog.asserts', 'goog.events.EventType', 'goog.object', 'ol.Feature', 'ol.coordinate', 'ol.extent', 'ol.geom.Point', 'ol.source.Vector'], false); -goog.addDependency('../../../ol/ol/source/imagecanvassource.js', ['ol.source.ImageCanvas'], ['ol.CanvasFunctionType', 'ol.ImageCanvas', 'ol.extent', 'ol.source.Image'], false); -goog.addDependency('../../../ol/ol/source/imagemapguidesource.js', ['ol.source.ImageMapGuide'], ['goog.events', 'goog.events.EventType', 'goog.object', 'goog.uri.utils', 'ol.Image', 'ol.ImageLoadFunctionType', 'ol.ImageUrlFunction', 'ol.extent', 'ol.source.Image'], false); -goog.addDependency('../../../ol/ol/source/imagesource.js', ['ol.source.Image', 'ol.source.ImageEvent'], ['goog.array', 'goog.asserts', 'goog.events.Event', 'ol.Attribution', 'ol.ImageState', 'ol.array', 'ol.extent', 'ol.proj', 'ol.reproj.Image', 'ol.source.Source'], false); -goog.addDependency('../../../ol/ol/source/imagestaticsource.js', ['ol.source.ImageStatic'], ['goog.events', 'goog.events.EventType', 'ol.Image', 'ol.ImageLoadFunctionType', 'ol.extent', 'ol.proj', 'ol.source.Image'], false); -goog.addDependency('../../../ol/ol/source/imagevectorsource.js', ['ol.source.ImageVector'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.vec.Mat4', 'ol.dom', 'ol.extent', 'ol.render.canvas.ReplayGroup', 'ol.renderer.vector', 'ol.source.ImageCanvas', 'ol.source.Vector', 'ol.style.Style', 'ol.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/source/imagewmssource.js', ['ol.source.ImageWMS'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'goog.string', 'goog.uri.utils', 'ol', 'ol.Image', 'ol.ImageLoadFunctionType', 'ol.extent', 'ol.proj', 'ol.source.Image', 'ol.source.wms', 'ol.source.wms.ServerType'], false); -goog.addDependency('../../../ol/ol/source/mapquestsource.js', ['ol.source.MapQuest'], ['goog.asserts', 'ol.Attribution', 'ol.source.OSM', 'ol.source.XYZ'], false); -goog.addDependency('../../../ol/ol/source/osmsource.js', ['ol.source.OSM'], ['ol.Attribution', 'ol.source.XYZ'], false); -goog.addDependency('../../../ol/ol/source/rastersource.js', ['ol.source.Raster', 'ol.source.RasterEvent', 'ol.source.RasterEventType'], ['goog.asserts', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.object', 'goog.vec.Mat4', 'ol.ImageCanvas', 'ol.TileQueue', 'ol.dom', 'ol.ext.pixelworks', 'ol.extent', 'ol.layer.Image', 'ol.layer.Tile', 'ol.raster.OperationType', 'ol.renderer.canvas.ImageLayer', 'ol.renderer.canvas.TileLayer', 'ol.source.Image', 'ol.source.State', 'ol.source.Tile'], false); -goog.addDependency('../../../ol/ol/source/source.js', ['ol.source.Source', 'ol.source.State'], ['ol', 'ol.Attribution', 'ol.Object', 'ol.proj'], false); -goog.addDependency('../../../ol/ol/source/stamensource.js', ['ol.source.Stamen'], ['goog.asserts', 'ol.Attribution', 'ol.source.OSM', 'ol.source.XYZ'], false); -goog.addDependency('../../../ol/ol/source/tilearcgisrestsource.js', ['ol.source.TileArcGISRest'], ['goog.asserts', 'goog.math', 'goog.object', 'goog.string', 'goog.uri.utils', 'ol', 'ol.TileCoord', 'ol.extent', 'ol.proj', 'ol.size', 'ol.source.TileImage', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/source/tiledebugsource.js', ['ol.source.TileDebug'], ['ol.Tile', 'ol.TileCoord', 'ol.TileState', 'ol.dom', 'ol.size', 'ol.source.Tile', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/source/tileimagesource.js', ['ol.source.TileImage'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'goog.object', 'ol.ImageTile', 'ol.TileCache', 'ol.TileState', 'ol.proj', 'ol.reproj.Tile', 'ol.source.UrlTile'], false); -goog.addDependency('../../../ol/ol/source/tilejsonsource.js', ['ol.source.TileJSON', 'ol.tilejson'], ['goog.asserts', 'goog.net.Jsonp', 'ol.Attribution', 'ol.TileRange', 'ol.TileUrlFunction', 'ol.extent', 'ol.proj', 'ol.source.State', 'ol.source.TileImage'], false); -goog.addDependency('../../../ol/ol/source/tilesource.js', ['ol.source.Tile', 'ol.source.TileEvent', 'ol.source.TileOptions'], ['goog.asserts', 'goog.events.Event', 'ol', 'ol.Attribution', 'ol.Extent', 'ol.TileCache', 'ol.TileRange', 'ol.TileState', 'ol.proj', 'ol.size', 'ol.source.Source', 'ol.tilecoord', 'ol.tilegrid.TileGrid'], false); -goog.addDependency('../../../ol/ol/source/tileutfgridsource.js', ['ol.source.TileUTFGrid'], ['goog.asserts', 'goog.async.nextTick', 'goog.events', 'goog.events.EventType', 'goog.net.Jsonp', 'ol.Attribution', 'ol.Tile', 'ol.TileState', 'ol.TileUrlFunction', 'ol.extent', 'ol.proj', 'ol.source.State', 'ol.source.Tile'], false); -goog.addDependency('../../../ol/ol/source/tilewmssource.js', ['ol.source.TileWMS'], ['goog.asserts', 'goog.math', 'goog.object', 'goog.string', 'goog.uri.utils', 'ol', 'ol.TileCoord', 'ol.extent', 'ol.proj', 'ol.size', 'ol.source.TileImage', 'ol.source.wms', 'ol.source.wms.ServerType', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/source/urltilesource.js', ['ol.source.UrlTile'], ['goog.events', 'ol.TileLoadFunctionType', 'ol.TileState', 'ol.TileUrlFunction', 'ol.TileUrlFunctionType', 'ol.proj', 'ol.source.Tile', 'ol.source.TileEvent'], false); -goog.addDependency('../../../ol/ol/source/vectorsource.js', ['ol.source.Vector', 'ol.source.VectorEvent', 'ol.source.VectorEventType'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.object', 'ol', 'ol.Collection', 'ol.CollectionEventType', 'ol.Extent', 'ol.Feature', 'ol.FeatureLoader', 'ol.LoadingStrategy', 'ol.ObjectEventType', 'ol.extent', 'ol.featureloader', 'ol.loadingstrategy', 'ol.proj', 'ol.source.Source', 'ol.source.State', 'ol.structs.RBush'], false); -goog.addDependency('../../../ol/ol/source/vectortilesource.js', ['ol.source.VectorTile'], ['goog.asserts', 'goog.events', 'goog.events.EventType', 'ol.TileState', 'ol.VectorTile', 'ol.featureloader', 'ol.source.UrlTile'], false); -goog.addDependency('../../../ol/ol/source/wmssource.js', ['ol.source.wms', 'ol.source.wms.ServerType'], [], false); -goog.addDependency('../../../ol/ol/source/wmtssource.js', ['ol.source.WMTS', 'ol.source.WMTSRequestEncoding'], ['goog.array', 'goog.asserts', 'goog.object', 'goog.uri.utils', 'ol.TileUrlFunction', 'ol.TileUrlFunctionType', 'ol.array', 'ol.extent', 'ol.proj', 'ol.source.TileImage', 'ol.tilegrid.WMTS'], false); -goog.addDependency('../../../ol/ol/source/xyzsource.js', ['ol.source.XYZ'], ['ol.source.TileImage'], false); -goog.addDependency('../../../ol/ol/source/zoomifysource.js', ['ol.source.Zoomify'], ['goog.asserts', 'ol', 'ol.ImageTile', 'ol.TileCoord', 'ol.TileState', 'ol.dom', 'ol.extent', 'ol.proj', 'ol.source.TileImage', 'ol.tilegrid.TileGrid'], false); -goog.addDependency('../../../ol/ol/sphere/normal.js', ['ol.sphere.NORMAL'], ['ol.Sphere'], false); -goog.addDependency('../../../ol/ol/sphere/sphere.js', ['ol.Sphere'], ['ol.math'], false); -goog.addDependency('../../../ol/ol/sphere/wgs84sphere.js', ['ol.sphere.WGS84'], ['ol.Sphere'], false); -goog.addDependency('../../../ol/ol/structs/checksum.js', ['ol.structs.IHasChecksum'], [], false); -goog.addDependency('../../../ol/ol/structs/lrucache.js', ['ol.structs.LRUCache'], ['goog.asserts', 'goog.object'], false); -goog.addDependency('../../../ol/ol/structs/priorityqueue.js', ['ol.structs.PriorityQueue'], ['goog.asserts', 'goog.object'], false); -goog.addDependency('../../../ol/ol/structs/rbush.js', ['ol.structs.RBush'], ['goog.asserts', 'goog.object', 'ol.ext.rbush', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/style/atlasmanager.js', ['ol.style.Atlas', 'ol.style.AtlasManager'], ['goog.asserts', 'goog.dom', 'goog.functions', 'goog.object', 'ol'], false); -goog.addDependency('../../../ol/ol/style/circlestyle.js', ['ol.style.Circle'], ['goog.asserts', 'goog.dom', 'ol', 'ol.color', 'ol.has', 'ol.render.canvas', 'ol.structs.IHasChecksum', 'ol.style.Fill', 'ol.style.Image', 'ol.style.ImageState', 'ol.style.Stroke'], false); -goog.addDependency('../../../ol/ol/style/fillstyle.js', ['ol.style.Fill'], ['ol.color', 'ol.structs.IHasChecksum'], false); -goog.addDependency('../../../ol/ol/style/iconstyle.js', ['ol.style.Icon', 'ol.style.IconAnchorUnits', 'ol.style.IconImageCache', 'ol.style.IconOrigin'], ['goog.asserts', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'ol.dom', 'ol.style.Image', 'ol.style.ImageState'], false); -goog.addDependency('../../../ol/ol/style/imagestyle.js', ['ol.style.Image', 'ol.style.ImageState'], [], false); -goog.addDependency('../../../ol/ol/style/regularshapestyle.js', ['ol.style.RegularShape'], ['goog.asserts', 'goog.dom', 'ol', 'ol.color', 'ol.has', 'ol.render.canvas', 'ol.structs.IHasChecksum', 'ol.style.AtlasManager', 'ol.style.Fill', 'ol.style.Image', 'ol.style.ImageState', 'ol.style.Stroke'], false); -goog.addDependency('../../../ol/ol/style/strokestyle.js', ['ol.style.Stroke'], ['goog.crypt', 'goog.crypt.Md5', 'ol.color', 'ol.structs.IHasChecksum'], false); -goog.addDependency('../../../ol/ol/style/style.js', ['ol.style.GeometryFunction', 'ol.style.Style', 'ol.style.StyleFunction', 'ol.style.defaultGeometryFunction'], ['goog.asserts', 'ol.geom.Geometry', 'ol.geom.GeometryType', 'ol.style.Circle', 'ol.style.Fill', 'ol.style.Image', 'ol.style.Stroke'], false); -goog.addDependency('../../../ol/ol/style/textstyle.js', ['ol.style.Text'], ['ol.style.Fill'], false); -goog.addDependency('../../../ol/ol/tile.js', ['ol.Tile', 'ol.TileState'], ['goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'ol.TileCoord'], false); -goog.addDependency('../../../ol/ol/tilecache.js', ['ol.TileCache'], ['ol', 'ol.TileRange', 'ol.structs.LRUCache', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/tilecoord.js', ['ol.TileCoord', 'ol.tilecoord'], ['goog.asserts', 'ol.extent'], false); -goog.addDependency('../../../ol/ol/tilegrid/tilegrid.js', ['ol.tilegrid.TileGrid'], ['goog.array', 'goog.asserts', 'goog.object', 'ol', 'ol.Coordinate', 'ol.TileCoord', 'ol.TileRange', 'ol.array', 'ol.extent', 'ol.extent.Corner', 'ol.math', 'ol.proj', 'ol.proj.METERS_PER_UNIT', 'ol.proj.Projection', 'ol.proj.Units', 'ol.size', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/tilegrid/wmtstilegrid.js', ['ol.tilegrid.WMTS'], ['goog.array', 'goog.asserts', 'ol.proj', 'ol.tilegrid.TileGrid'], false); -goog.addDependency('../../../ol/ol/tileloadfunction.js', ['ol.TileLoadFunctionType', 'ol.TileVectorLoadFunctionType'], [], false); -goog.addDependency('../../../ol/ol/tilequeue.js', ['ol.TilePriorityFunction', 'ol.TileQueue'], ['goog.events', 'goog.events.EventType', 'ol.Coordinate', 'ol.TileState', 'ol.structs.PriorityQueue'], false); -goog.addDependency('../../../ol/ol/tilerange.js', ['ol.TileRange'], ['goog.asserts', 'ol.Size', 'ol.TileCoord'], false); -goog.addDependency('../../../ol/ol/tileurlfunction.js', ['ol.TileUrlFunction', 'ol.TileUrlFunctionType'], ['goog.asserts', 'goog.math', 'ol.TileCoord', 'ol.tilecoord'], false); -goog.addDependency('../../../ol/ol/transformfunction.js', ['ol.TransformFunction'], [], false); -goog.addDependency('../../../ol/ol/vec/mat4.js', ['ol.vec.Mat4', 'ol.vec.Mat4.Number'], ['goog.vec.Mat4'], false); -goog.addDependency('../../../ol/ol/vectortile.js', ['ol.VectorTile'], ['ol.Tile', 'ol.TileCoord', 'ol.TileLoadFunctionType', 'ol.TileState'], false); -goog.addDependency('../../../ol/ol/view.js', ['ol.View', 'ol.ViewHint', 'ol.ViewProperty'], ['goog.asserts', 'ol', 'ol.CenterConstraint', 'ol.Constraints', 'ol.Object', 'ol.ResolutionConstraint', 'ol.RotationConstraint', 'ol.RotationConstraintType', 'ol.Size', 'ol.coordinate', 'ol.extent', 'ol.geom.Polygon', 'ol.geom.SimpleGeometry', 'ol.proj', 'ol.proj.METERS_PER_UNIT', 'ol.proj.Projection', 'ol.proj.Units'], false); -goog.addDependency('../../../ol/ol/webgl/buffer.js', ['ol.webgl.Buffer'], ['goog.webgl', 'ol'], false); -goog.addDependency('../../../ol/ol/webgl/context.js', ['ol.webgl.Context'], ['goog.asserts', 'goog.events', 'goog.log', 'goog.object', 'ol', 'ol.array', 'ol.webgl.Buffer', 'ol.webgl.WebGLContextEventType'], false); -goog.addDependency('../../../ol/ol/webgl/shader.js', ['ol.webgl.Fragment', 'ol.webgl.Shader', 'ol.webgl.Vertex', 'ol.webgl.shader'], ['goog.functions', 'goog.webgl', 'ol.webgl'], false); -goog.addDependency('../../../ol/ol/webgl/webgl.js', ['ol.webgl', 'ol.webgl.WebGLContextEventType'], [], false); -goog.addDependency('../../../ol/ol/xml.js', ['ol.xml'], ['goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.dom.xml', 'goog.object', 'goog.userAgent'], false); -goog.addDependency('../../third_party/closure/goog/caja/string/html/htmlparser.js', ['goog.string.html', 'goog.string.html.HtmlParser', 'goog.string.html.HtmlParser.EFlags', 'goog.string.html.HtmlParser.Elements', 'goog.string.html.HtmlParser.Entities', 'goog.string.html.HtmlSaxHandler'], [], false); -goog.addDependency('../../third_party/closure/goog/caja/string/html/htmlsanitizer.js', ['goog.string.html.HtmlSanitizer', 'goog.string.html.HtmlSanitizer.AttributeType', 'goog.string.html.HtmlSanitizer.Attributes', 'goog.string.html.htmlSanitize'], ['goog.string.StringBuffer', 'goog.string.html.HtmlParser', 'goog.string.html.HtmlSaxHandler'], false); -goog.addDependency('../../third_party/closure/goog/dojo/dom/query.js', ['goog.dom.query'], ['goog.array', 'goog.dom', 'goog.functions', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('../../third_party/closure/goog/jpeg_encoder/jpeg_encoder_basic.js', ['goog.crypt.JpegEncoder'], ['goog.crypt.base64'], false); -goog.addDependency('../../third_party/closure/goog/loremipsum/text/loremipsum.js', ['goog.text.LoremIpsum'], ['goog.array', 'goog.math', 'goog.string', 'goog.structs.Map', 'goog.structs.Set'], false); -goog.addDependency('../../third_party/closure/goog/mochikit/async/deferred.js', ['goog.async.Deferred', 'goog.async.Deferred.AlreadyCalledError', 'goog.async.Deferred.CanceledError'], ['goog.Promise', 'goog.Thenable', 'goog.array', 'goog.asserts', 'goog.debug.Error'], false); -goog.addDependency('../../third_party/closure/goog/mochikit/async/deferredlist.js', ['goog.async.DeferredList'], ['goog.async.Deferred'], false); -goog.addDependency('../../third_party/closure/goog/osapi/osapi.js', ['goog.osapi'], [], false); -goog.addDependency('../../third_party/closure/goog/svgpan/svgpan.js', ['svgpan.SvgPan'], ['goog.Disposable', 'goog.events', 'goog.events.EventType', 'goog.events.MouseWheelHandler'], false); -goog.addDependency('a11y/aria/announcer.js', ['goog.a11y.aria.Announcer'], ['goog.Disposable', 'goog.Timer', 'goog.a11y.aria', 'goog.a11y.aria.LivePriority', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.object'], false); -goog.addDependency('a11y/aria/announcer_test.js', ['goog.a11y.aria.AnnouncerTest'], ['goog.a11y.aria', 'goog.a11y.aria.Announcer', 'goog.a11y.aria.LivePriority', 'goog.a11y.aria.State', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.iframe', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('a11y/aria/aria.js', ['goog.a11y.aria'], ['goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.a11y.aria.datatables', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.object', 'goog.string'], false); -goog.addDependency('a11y/aria/aria_test.js', ['goog.a11y.ariaTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit'], false); -goog.addDependency('a11y/aria/attributes.js', ['goog.a11y.aria.AutoCompleteValues', 'goog.a11y.aria.CheckedValues', 'goog.a11y.aria.DropEffectValues', 'goog.a11y.aria.ExpandedValues', 'goog.a11y.aria.GrabbedValues', 'goog.a11y.aria.InvalidValues', 'goog.a11y.aria.LivePriority', 'goog.a11y.aria.OrientationValues', 'goog.a11y.aria.PressedValues', 'goog.a11y.aria.RelevantValues', 'goog.a11y.aria.SelectedValues', 'goog.a11y.aria.SortValues', 'goog.a11y.aria.State'], [], false); -goog.addDependency('a11y/aria/datatables.js', ['goog.a11y.aria.datatables'], ['goog.a11y.aria.State', 'goog.object'], false); -goog.addDependency('a11y/aria/roles.js', ['goog.a11y.aria.Role'], [], false); -goog.addDependency('array/array.js', ['goog.array', 'goog.array.ArrayLike'], ['goog.asserts'], false); -goog.addDependency('array/array_test.js', ['goog.arrayTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('asserts/asserts.js', ['goog.asserts', 'goog.asserts.AssertionError'], ['goog.debug.Error', 'goog.dom.NodeType', 'goog.string'], false); -goog.addDependency('asserts/asserts_test.js', ['goog.assertsTest'], ['goog.asserts', 'goog.asserts.AssertionError', 'goog.dom', 'goog.dom.TagName', 'goog.string', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('async/animationdelay.js', ['goog.async.AnimationDelay'], ['goog.Disposable', 'goog.events', 'goog.functions'], false); -goog.addDependency('async/animationdelay_test.js', ['goog.async.AnimationDelayTest'], ['goog.Timer', 'goog.async.AnimationDelay', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.testing.testSuite'], true); -goog.addDependency('async/conditionaldelay.js', ['goog.async.ConditionalDelay'], ['goog.Disposable', 'goog.async.Delay'], false); -goog.addDependency('async/conditionaldelay_test.js', ['goog.async.ConditionalDelayTest'], ['goog.async.ConditionalDelay', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('async/debouncer.js', ['goog.async.Debouncer'], ['goog.Disposable', 'goog.Timer'], false); -goog.addDependency('async/debouncer_test.js', ['goog.async.DebouncerTest'], ['goog.array', 'goog.async.Debouncer', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('async/delay.js', ['goog.Delay', 'goog.async.Delay'], ['goog.Disposable', 'goog.Timer'], false); -goog.addDependency('async/delay_test.js', ['goog.async.DelayTest'], ['goog.async.Delay', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('async/freelist.js', ['goog.async.FreeList'], [], false); -goog.addDependency('async/freelist_test.js', ['goog.async.FreeListTest'], ['goog.async.FreeList', 'goog.testing.jsunit'], false); -goog.addDependency('async/nexttick.js', ['goog.async.nextTick', 'goog.async.throwException'], ['goog.debug.entryPointRegistry', 'goog.dom.TagName', 'goog.functions', 'goog.labs.userAgent.browser', 'goog.labs.userAgent.engine'], false); -goog.addDependency('async/nexttick_test.js', ['goog.async.nextTickTest'], ['goog.Promise', 'goog.Timer', 'goog.async.nextTick', 'goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.dom', 'goog.dom.TagName', 'goog.labs.userAgent.browser', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('async/run.js', ['goog.async.run'], ['goog.async.WorkQueue', 'goog.async.nextTick', 'goog.async.throwException', 'goog.testing.watchers'], false); -goog.addDependency('async/run_test.js', ['goog.async.runTest'], ['goog.async.run', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('async/throttle.js', ['goog.Throttle', 'goog.async.Throttle'], ['goog.Disposable', 'goog.Timer'], false); -goog.addDependency('async/throttle_test.js', ['goog.async.ThrottleTest'], ['goog.async.Throttle', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('async/workqueue.js', ['goog.async.WorkItem', 'goog.async.WorkQueue'], ['goog.asserts', 'goog.async.FreeList'], false); -goog.addDependency('async/workqueue_test.js', ['goog.async.WorkQueueTest'], ['goog.async.WorkQueue', 'goog.testing.jsunit'], false); -goog.addDependency('base.js', ['goog'], [], false); -goog.addDependency('base_module_test.js', ['goog.baseModuleTest'], ['goog.Timer', 'goog.test_module', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.testSuite'], true); -goog.addDependency('base_test.js', ['an.existing.path', 'dup.base', 'far.out', 'goog.baseTest', 'goog.explicit', 'goog.implicit.explicit', 'goog.test', 'goog.test.name', 'goog.test.name.space', 'goog.xy', 'goog.xy.z', 'ns', 'testDep.bar'], ['goog.Promise', 'goog.Timer', 'goog.dom.TagName', 'goog.functions', 'goog.test_module', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('color/alpha.js', ['goog.color.alpha'], ['goog.color'], false); -goog.addDependency('color/alpha_test.js', ['goog.color.alphaTest'], ['goog.array', 'goog.color', 'goog.color.alpha', 'goog.testing.jsunit'], false); -goog.addDependency('color/color.js', ['goog.color', 'goog.color.Hsl', 'goog.color.Hsv', 'goog.color.Rgb'], ['goog.color.names', 'goog.math'], false); -goog.addDependency('color/color_test.js', ['goog.colorTest'], ['goog.array', 'goog.color', 'goog.color.names', 'goog.testing.jsunit'], false); -goog.addDependency('color/names.js', ['goog.color.names'], [], false); -goog.addDependency('crypt/aes.js', ['goog.crypt.Aes'], ['goog.asserts', 'goog.crypt.BlockCipher'], false); -goog.addDependency('crypt/aes_test.js', ['goog.crypt.AesTest'], ['goog.crypt', 'goog.crypt.Aes', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/arc4.js', ['goog.crypt.Arc4'], ['goog.asserts'], false); -goog.addDependency('crypt/arc4_test.js', ['goog.crypt.Arc4Test'], ['goog.array', 'goog.crypt.Arc4', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/base64.js', ['goog.crypt.base64'], ['goog.asserts', 'goog.crypt', 'goog.userAgent'], false); -goog.addDependency('crypt/base64_test.js', ['goog.crypt.base64Test'], ['goog.crypt', 'goog.crypt.base64', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/basen.js', ['goog.crypt.baseN'], [], false); -goog.addDependency('crypt/basen_test.js', ['goog.crypt.baseNTest'], ['goog.crypt.baseN', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/blobhasher.js', ['goog.crypt.BlobHasher', 'goog.crypt.BlobHasher.EventType'], ['goog.asserts', 'goog.events.EventTarget', 'goog.fs', 'goog.log'], false); -goog.addDependency('crypt/blobhasher_test.js', ['goog.crypt.BlobHasherTest'], ['goog.crypt', 'goog.crypt.BlobHasher', 'goog.crypt.Md5', 'goog.events', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/blockcipher.js', ['goog.crypt.BlockCipher'], [], false); -goog.addDependency('crypt/bytestring_perf.js', ['goog.crypt.byteArrayToStringPerf'], ['goog.array', 'goog.dom', 'goog.testing.PerformanceTable'], false); -goog.addDependency('crypt/cbc.js', ['goog.crypt.Cbc'], ['goog.array', 'goog.asserts', 'goog.crypt'], false); -goog.addDependency('crypt/cbc_test.js', ['goog.crypt.CbcTest'], ['goog.crypt', 'goog.crypt.Aes', 'goog.crypt.Cbc', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/crypt.js', ['goog.crypt'], ['goog.array', 'goog.asserts'], false); -goog.addDependency('crypt/crypt_test.js', ['goog.cryptTest'], ['goog.crypt', 'goog.string', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/hash.js', ['goog.crypt.Hash'], [], false); -goog.addDependency('crypt/hash32.js', ['goog.crypt.hash32'], ['goog.crypt'], false); -goog.addDependency('crypt/hash32_test.js', ['goog.crypt.hash32Test'], ['goog.crypt.hash32', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/hashtester.js', ['goog.crypt.hashTester'], ['goog.array', 'goog.crypt', 'goog.dom', 'goog.dom.TagName', 'goog.testing.PerformanceTable', 'goog.testing.PseudoRandom', 'goog.testing.asserts'], false); -goog.addDependency('crypt/hmac.js', ['goog.crypt.Hmac'], ['goog.crypt.Hash'], false); -goog.addDependency('crypt/hmac_test.js', ['goog.crypt.HmacTest'], ['goog.crypt.Hmac', 'goog.crypt.Sha1', 'goog.crypt.hashTester', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/md5.js', ['goog.crypt.Md5'], ['goog.crypt.Hash'], false); -goog.addDependency('crypt/md5_test.js', ['goog.crypt.Md5Test'], ['goog.crypt', 'goog.crypt.Md5', 'goog.crypt.hashTester', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/pbkdf2.js', ['goog.crypt.pbkdf2'], ['goog.array', 'goog.asserts', 'goog.crypt', 'goog.crypt.Hmac', 'goog.crypt.Sha1'], false); -goog.addDependency('crypt/pbkdf2_test.js', ['goog.crypt.pbkdf2Test'], ['goog.crypt', 'goog.crypt.pbkdf2', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('crypt/sha1.js', ['goog.crypt.Sha1'], ['goog.crypt.Hash'], false); -goog.addDependency('crypt/sha1_test.js', ['goog.crypt.Sha1Test'], ['goog.crypt', 'goog.crypt.Sha1', 'goog.crypt.hashTester', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('crypt/sha2.js', ['goog.crypt.Sha2'], ['goog.array', 'goog.asserts', 'goog.crypt.Hash'], false); -goog.addDependency('crypt/sha224.js', ['goog.crypt.Sha224'], ['goog.crypt.Sha2'], false); -goog.addDependency('crypt/sha224_test.js', ['goog.crypt.Sha224Test'], ['goog.crypt', 'goog.crypt.Sha224', 'goog.crypt.hashTester', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/sha256.js', ['goog.crypt.Sha256'], ['goog.crypt.Sha2'], false); -goog.addDependency('crypt/sha256_test.js', ['goog.crypt.Sha256Test'], ['goog.crypt', 'goog.crypt.Sha256', 'goog.crypt.hashTester', 'goog.testing.jsunit'], false); -goog.addDependency('crypt/sha2_64bit.js', ['goog.crypt.Sha2_64bit'], ['goog.array', 'goog.asserts', 'goog.crypt.Hash', 'goog.math.Long'], false); -goog.addDependency('crypt/sha2_64bit_test.js', ['goog.crypt.Sha2_64bit_test'], ['goog.array', 'goog.crypt', 'goog.crypt.Sha384', 'goog.crypt.Sha512', 'goog.crypt.Sha512_256', 'goog.crypt.hashTester', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('crypt/sha384.js', ['goog.crypt.Sha384'], ['goog.crypt.Sha2_64bit'], false); -goog.addDependency('crypt/sha512.js', ['goog.crypt.Sha512'], ['goog.crypt.Sha2_64bit'], false); -goog.addDependency('crypt/sha512_256.js', ['goog.crypt.Sha512_256'], ['goog.crypt.Sha2_64bit'], false); -goog.addDependency('cssom/cssom.js', ['goog.cssom', 'goog.cssom.CssRuleType'], ['goog.array', 'goog.dom', 'goog.dom.TagName'], false); -goog.addDependency('cssom/cssom_test.js', ['goog.cssomTest'], ['goog.array', 'goog.cssom', 'goog.cssom.CssRuleType', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('cssom/iframe/style.js', ['goog.cssom.iframe.style'], ['goog.asserts', 'goog.cssom', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.string', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('cssom/iframe/style_test.js', ['goog.cssom.iframe.styleTest'], ['goog.cssom', 'goog.cssom.iframe.style', 'goog.dom', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('datasource/datamanager.js', ['goog.ds.DataManager'], ['goog.ds.BasicNodeList', 'goog.ds.DataNode', 'goog.ds.Expr', 'goog.object', 'goog.string', 'goog.structs', 'goog.structs.Map'], false); -goog.addDependency('datasource/datasource.js', ['goog.ds.BaseDataNode', 'goog.ds.BasicNodeList', 'goog.ds.DataNode', 'goog.ds.DataNodeList', 'goog.ds.EmptyNodeList', 'goog.ds.LoadState', 'goog.ds.SortedNodeList', 'goog.ds.Util', 'goog.ds.logger'], ['goog.array', 'goog.log'], false); -goog.addDependency('datasource/datasource_test.js', ['goog.ds.JsDataSourceTest'], ['goog.dom.xml', 'goog.ds.DataManager', 'goog.ds.JsDataSource', 'goog.ds.SortedNodeList', 'goog.ds.XmlDataSource', 'goog.testing.jsunit'], false); -goog.addDependency('datasource/expr.js', ['goog.ds.Expr'], ['goog.ds.BasicNodeList', 'goog.ds.EmptyNodeList', 'goog.string'], false); -goog.addDependency('datasource/expr_test.js', ['goog.ds.ExprTest'], ['goog.ds.DataManager', 'goog.ds.Expr', 'goog.ds.JsDataSource', 'goog.testing.jsunit'], false); -goog.addDependency('datasource/fastdatanode.js', ['goog.ds.AbstractFastDataNode', 'goog.ds.FastDataNode', 'goog.ds.FastListNode', 'goog.ds.PrimitiveFastDataNode'], ['goog.ds.DataManager', 'goog.ds.DataNodeList', 'goog.ds.EmptyNodeList', 'goog.string'], false); -goog.addDependency('datasource/fastdatanode_test.js', ['goog.ds.FastDataNodeTest'], ['goog.array', 'goog.ds.DataManager', 'goog.ds.Expr', 'goog.ds.FastDataNode', 'goog.testing.jsunit'], false); -goog.addDependency('datasource/jsdatasource.js', ['goog.ds.JsDataSource', 'goog.ds.JsPropertyDataSource'], ['goog.ds.BaseDataNode', 'goog.ds.BasicNodeList', 'goog.ds.DataManager', 'goog.ds.DataNode', 'goog.ds.EmptyNodeList', 'goog.ds.LoadState'], false); -goog.addDependency('datasource/jsondatasource.js', ['goog.ds.JsonDataSource'], ['goog.Uri', 'goog.dom', 'goog.dom.TagName', 'goog.ds.DataManager', 'goog.ds.JsDataSource', 'goog.ds.LoadState', 'goog.ds.logger', 'goog.log'], false); -goog.addDependency('datasource/jsxmlhttpdatasource.js', ['goog.ds.JsXmlHttpDataSource'], ['goog.Uri', 'goog.ds.DataManager', 'goog.ds.FastDataNode', 'goog.ds.LoadState', 'goog.ds.logger', 'goog.events', 'goog.log', 'goog.net.EventType', 'goog.net.XhrIo'], false); -goog.addDependency('datasource/jsxmlhttpdatasource_test.js', ['goog.ds.JsXmlHttpDataSourceTest'], ['goog.ds.JsXmlHttpDataSource', 'goog.testing.TestQueue', 'goog.testing.jsunit', 'goog.testing.net.XhrIo'], false); -goog.addDependency('datasource/xmldatasource.js', ['goog.ds.XmlDataSource', 'goog.ds.XmlHttpDataSource'], ['goog.Uri', 'goog.dom.NodeType', 'goog.dom.xml', 'goog.ds.BasicNodeList', 'goog.ds.DataManager', 'goog.ds.DataNode', 'goog.ds.LoadState', 'goog.ds.logger', 'goog.net.XhrIo', 'goog.string'], false); -goog.addDependency('date/date.js', ['goog.date', 'goog.date.Date', 'goog.date.DateTime', 'goog.date.Interval', 'goog.date.month', 'goog.date.weekDay'], ['goog.asserts', 'goog.date.DateLike', 'goog.i18n.DateTimeSymbols', 'goog.string'], false); -goog.addDependency('date/date_test.js', ['goog.dateTest'], ['goog.array', 'goog.date', 'goog.date.Date', 'goog.date.DateTime', 'goog.date.Interval', 'goog.date.month', 'goog.date.weekDay', 'goog.i18n.DateTimeSymbols', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.platform', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('date/datelike.js', ['goog.date.DateLike'], [], false); -goog.addDependency('date/daterange.js', ['goog.date.DateRange', 'goog.date.DateRange.Iterator', 'goog.date.DateRange.StandardDateRangeKeys'], ['goog.date.Date', 'goog.date.Interval', 'goog.iter.Iterator', 'goog.iter.StopIteration'], false); -goog.addDependency('date/daterange_test.js', ['goog.date.DateRangeTest'], ['goog.date.Date', 'goog.date.DateRange', 'goog.date.Interval', 'goog.i18n.DateTimeSymbols', 'goog.testing.jsunit'], false); -goog.addDependency('date/duration.js', ['goog.date.duration'], ['goog.i18n.DateTimeFormat', 'goog.i18n.MessageFormat'], false); -goog.addDependency('date/duration_test.js', ['goog.date.durationTest'], ['goog.date.duration', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_bn', 'goog.i18n.DateTimeSymbols_en', 'goog.i18n.DateTimeSymbols_fa', 'goog.testing.jsunit'], false); -goog.addDependency('date/relative.js', ['goog.date.relative', 'goog.date.relative.TimeDeltaFormatter', 'goog.date.relative.Unit'], ['goog.i18n.DateTimeFormat', 'goog.i18n.DateTimePatterns'], false); -goog.addDependency('date/relative_test.js', ['goog.date.relativeTest'], ['goog.date.DateTime', 'goog.date.relative', 'goog.i18n.DateTimeFormat', 'goog.testing.jsunit'], false); -goog.addDependency('date/relativewithplurals.js', ['goog.date.relativeWithPlurals'], ['goog.date.relative', 'goog.date.relative.Unit', 'goog.i18n.MessageFormat'], false); -goog.addDependency('date/relativewithplurals_test.js', ['goog.date.relativeWithPluralsTest'], ['goog.date.relative', 'goog.date.relativeTest', 'goog.date.relativeWithPlurals', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_bn', 'goog.i18n.DateTimeSymbols_en', 'goog.i18n.DateTimeSymbols_fa', 'goog.i18n.NumberFormatSymbols', 'goog.i18n.NumberFormatSymbols_bn', 'goog.i18n.NumberFormatSymbols_en', 'goog.i18n.NumberFormatSymbols_fa'], false); -goog.addDependency('date/utcdatetime.js', ['goog.date.UtcDateTime'], ['goog.date', 'goog.date.Date', 'goog.date.DateTime', 'goog.date.Interval'], false); -goog.addDependency('date/utcdatetime_test.js', ['goog.date.UtcDateTimeTest'], ['goog.date.Interval', 'goog.date.UtcDateTime', 'goog.date.month', 'goog.date.weekDay', 'goog.testing.jsunit'], false); -goog.addDependency('db/cursor.js', ['goog.db.Cursor'], ['goog.async.Deferred', 'goog.db.Error', 'goog.debug', 'goog.events.EventTarget'], false); -goog.addDependency('db/db.js', ['goog.db', 'goog.db.BlockedCallback', 'goog.db.UpgradeNeededCallback'], ['goog.asserts', 'goog.async.Deferred', 'goog.db.Error', 'goog.db.IndexedDb', 'goog.db.Transaction'], false); -goog.addDependency('db/db_test.js', ['goog.dbTest'], ['goog.Disposable', 'goog.Promise', 'goog.array', 'goog.db', 'goog.db.Cursor', 'goog.db.Error', 'goog.db.IndexedDb', 'goog.db.KeyRange', 'goog.db.Transaction', 'goog.events', 'goog.object', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.userAgent.product'], false); -goog.addDependency('db/error.js', ['goog.db.Error', 'goog.db.Error.ErrorCode', 'goog.db.Error.ErrorName', 'goog.db.Error.VersionChangeBlockedError'], ['goog.debug.Error'], false); -goog.addDependency('db/index.js', ['goog.db.Index'], ['goog.async.Deferred', 'goog.db.Cursor', 'goog.db.Error', 'goog.debug'], false); -goog.addDependency('db/indexeddb.js', ['goog.db.IndexedDb'], ['goog.db.Error', 'goog.db.ObjectStore', 'goog.db.Transaction', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget'], false); -goog.addDependency('db/keyrange.js', ['goog.db.KeyRange'], [], false); -goog.addDependency('db/objectstore.js', ['goog.db.ObjectStore'], ['goog.async.Deferred', 'goog.db.Cursor', 'goog.db.Error', 'goog.db.Index', 'goog.debug', 'goog.events'], false); -goog.addDependency('db/transaction.js', ['goog.db.Transaction', 'goog.db.Transaction.TransactionMode'], ['goog.async.Deferred', 'goog.db.Error', 'goog.db.ObjectStore', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventTarget'], false); -goog.addDependency('debug/console.js', ['goog.debug.Console'], ['goog.debug.LogManager', 'goog.debug.Logger', 'goog.debug.TextFormatter'], false); -goog.addDependency('debug/console_test.js', ['goog.debug.ConsoleTest'], ['goog.debug.Console', 'goog.debug.LogRecord', 'goog.debug.Logger', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('debug/debug.js', ['goog.debug'], ['goog.array', 'goog.html.SafeHtml', 'goog.html.SafeUrl', 'goog.html.uncheckedconversions', 'goog.string.Const', 'goog.structs.Set', 'goog.userAgent'], false); -goog.addDependency('debug/debug_test.js', ['goog.debugTest'], ['goog.debug', 'goog.html.SafeHtml', 'goog.structs.Set', 'goog.testing.jsunit'], false); -goog.addDependency('debug/debugwindow.js', ['goog.debug.DebugWindow'], ['goog.debug.HtmlFormatter', 'goog.debug.LogManager', 'goog.debug.Logger', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.html.SafeStyleSheet', 'goog.string.Const', 'goog.structs.CircularBuffer', 'goog.userAgent'], false); -goog.addDependency('debug/debugwindow_test.js', ['goog.debug.DebugWindowTest'], ['goog.debug.DebugWindow', 'goog.testing.jsunit'], false); -goog.addDependency('debug/devcss/devcss.js', ['goog.debug.DevCss', 'goog.debug.DevCss.UserAgent'], ['goog.asserts', 'goog.cssom', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('debug/devcss/devcss_test.js', ['goog.debug.DevCssTest'], ['goog.debug.DevCss', 'goog.style', 'goog.testing.jsunit'], false); -goog.addDependency('debug/devcss/devcssrunner.js', ['goog.debug.devCssRunner'], ['goog.debug.DevCss'], false); -goog.addDependency('debug/divconsole.js', ['goog.debug.DivConsole'], ['goog.debug.HtmlFormatter', 'goog.debug.LogManager', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.style'], false); -goog.addDependency('debug/enhanceerror_test.js', ['goog.debugEnhanceErrorTest'], ['goog.debug', 'goog.testing.jsunit'], false); -goog.addDependency('debug/entrypointregistry.js', ['goog.debug.EntryPointMonitor', 'goog.debug.entryPointRegistry'], ['goog.asserts'], false); -goog.addDependency('debug/entrypointregistry_test.js', ['goog.debug.entryPointRegistryTest'], ['goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.testing.jsunit'], false); -goog.addDependency('debug/error.js', ['goog.debug.Error'], [], false); -goog.addDependency('debug/error_test.js', ['goog.debug.ErrorTest'], ['goog.debug.Error', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('debug/errorhandler.js', ['goog.debug.ErrorHandler', 'goog.debug.ErrorHandler.ProtectedFunctionError'], ['goog.Disposable', 'goog.asserts', 'goog.debug', 'goog.debug.EntryPointMonitor', 'goog.debug.Error', 'goog.debug.Trace'], false); -goog.addDependency('debug/errorhandler_async_test.js', ['goog.debug.ErrorHandlerAsyncTest'], ['goog.Promise', 'goog.debug.ErrorHandler', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('debug/errorhandler_test.js', ['goog.debug.ErrorHandlerTest'], ['goog.debug.ErrorHandler', 'goog.testing.MockControl', 'goog.testing.jsunit'], false); -goog.addDependency('debug/errorhandlerweakdep.js', ['goog.debug.errorHandlerWeakDep'], [], false); -goog.addDependency('debug/errorreporter.js', ['goog.debug.ErrorReporter', 'goog.debug.ErrorReporter.ExceptionEvent'], ['goog.asserts', 'goog.debug', 'goog.debug.Error', 'goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.log', 'goog.net.XhrIo', 'goog.object', 'goog.string', 'goog.uri.utils', 'goog.userAgent'], false); -goog.addDependency('debug/errorreporter_test.js', ['goog.debug.ErrorReporterTest'], ['goog.debug.Error', 'goog.debug.ErrorReporter', 'goog.events', 'goog.functions', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('debug/fancywindow.js', ['goog.debug.FancyWindow'], ['goog.array', 'goog.debug.DebugWindow', 'goog.debug.LogManager', 'goog.debug.Logger', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.html.SafeStyleSheet', 'goog.object', 'goog.string', 'goog.string.Const', 'goog.userAgent'], false); -goog.addDependency('debug/formatter.js', ['goog.debug.Formatter', 'goog.debug.HtmlFormatter', 'goog.debug.TextFormatter'], ['goog.debug', 'goog.debug.Logger', 'goog.debug.RelativeTimeProvider', 'goog.html.SafeHtml'], false); -goog.addDependency('debug/formatter_test.js', ['goog.debug.FormatterTest'], ['goog.debug.HtmlFormatter', 'goog.debug.LogRecord', 'goog.debug.Logger', 'goog.html.SafeHtml', 'goog.testing.jsunit'], false); -goog.addDependency('debug/fpsdisplay.js', ['goog.debug.FpsDisplay'], ['goog.asserts', 'goog.async.AnimationDelay', 'goog.dom', 'goog.dom.TagName', 'goog.ui.Component'], false); -goog.addDependency('debug/fpsdisplay_test.js', ['goog.debug.FpsDisplayTest'], ['goog.Timer', 'goog.debug.FpsDisplay', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('debug/logbuffer.js', ['goog.debug.LogBuffer'], ['goog.asserts', 'goog.debug.LogRecord'], false); -goog.addDependency('debug/logbuffer_test.js', ['goog.debug.LogBufferTest'], ['goog.debug.LogBuffer', 'goog.debug.Logger', 'goog.testing.jsunit'], false); -goog.addDependency('debug/logger.js', ['goog.debug.LogManager', 'goog.debug.Loggable', 'goog.debug.Logger', 'goog.debug.Logger.Level'], ['goog.array', 'goog.asserts', 'goog.debug', 'goog.debug.LogBuffer', 'goog.debug.LogRecord'], false); -goog.addDependency('debug/logger_test.js', ['goog.debug.LoggerTest'], ['goog.debug.LogManager', 'goog.debug.Logger', 'goog.testing.jsunit'], false); -goog.addDependency('debug/logrecord.js', ['goog.debug.LogRecord'], [], false); -goog.addDependency('debug/logrecordserializer.js', ['goog.debug.logRecordSerializer'], ['goog.debug.LogRecord', 'goog.debug.Logger', 'goog.json', 'goog.object'], false); -goog.addDependency('debug/logrecordserializer_test.js', ['goog.debug.logRecordSerializerTest'], ['goog.debug.LogRecord', 'goog.debug.Logger', 'goog.debug.logRecordSerializer', 'goog.testing.jsunit'], false); -goog.addDependency('debug/relativetimeprovider.js', ['goog.debug.RelativeTimeProvider'], [], false); -goog.addDependency('debug/tracer.js', ['goog.debug.Trace'], ['goog.array', 'goog.debug.Logger', 'goog.iter', 'goog.log', 'goog.structs.Map', 'goog.structs.SimplePool'], false); -goog.addDependency('debug/tracer_test.js', ['goog.debug.TraceTest'], ['goog.debug.Trace', 'goog.testing.jsunit'], false); -goog.addDependency('defineclass_test.js', ['goog.defineClassTest'], ['goog.testing.jsunit'], false); -goog.addDependency('demos/editor/helloworld.js', ['goog.demos.editor.HelloWorld'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.Plugin'], false); -goog.addDependency('demos/editor/helloworlddialog.js', ['goog.demos.editor.HelloWorldDialog', 'goog.demos.editor.HelloWorldDialog.OkEvent'], ['goog.dom.TagName', 'goog.events.Event', 'goog.string', 'goog.ui.editor.AbstractDialog'], false); -goog.addDependency('demos/editor/helloworlddialogplugin.js', ['goog.demos.editor.HelloWorldDialogPlugin', 'goog.demos.editor.HelloWorldDialogPlugin.Command'], ['goog.demos.editor.HelloWorldDialog', 'goog.dom.TagName', 'goog.editor.plugins.AbstractDialogPlugin', 'goog.editor.range', 'goog.functions', 'goog.ui.editor.AbstractDialog'], false); -goog.addDependency('demos/samplecomponent.js', ['goog.demos.SampleComponent'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.ui.Component'], false); -goog.addDependency('demos/xpc/xpcdemo.js', ['xpcdemo'], ['goog.Uri', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.html.SafeHtml', 'goog.json', 'goog.log', 'goog.log.Level', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel'], false); -goog.addDependency('disposable/disposable.js', ['goog.Disposable', 'goog.dispose', 'goog.disposeAll'], ['goog.disposable.IDisposable'], false); -goog.addDependency('disposable/disposable_test.js', ['goog.DisposableTest'], ['goog.Disposable', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('disposable/idisposable.js', ['goog.disposable.IDisposable'], [], false); -goog.addDependency('dom/abstractmultirange.js', ['goog.dom.AbstractMultiRange'], ['goog.array', 'goog.dom', 'goog.dom.AbstractRange'], false); -goog.addDependency('dom/abstractrange.js', ['goog.dom.AbstractRange', 'goog.dom.RangeIterator', 'goog.dom.RangeType'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.SavedCaretRange', 'goog.dom.TagIterator', 'goog.userAgent'], false); -goog.addDependency('dom/abstractrange_test.js', ['goog.dom.AbstractRangeTest'], ['goog.dom', 'goog.dom.AbstractRange', 'goog.dom.Range', 'goog.dom.TagName', 'goog.testing.jsunit'], false); -goog.addDependency('dom/animationframe/animationframe.js', ['goog.dom.animationFrame', 'goog.dom.animationFrame.Spec', 'goog.dom.animationFrame.State'], ['goog.dom.animationFrame.polyfill'], false); -goog.addDependency('dom/animationframe/polyfill.js', ['goog.dom.animationFrame.polyfill'], [], false); -goog.addDependency('dom/annotate.js', ['goog.dom.annotate', 'goog.dom.annotate.AnnotateFn'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml'], false); -goog.addDependency('dom/annotate_test.js', ['goog.dom.annotateTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.annotate', 'goog.html.SafeHtml', 'goog.testing.jsunit'], false); -goog.addDependency('dom/browserfeature.js', ['goog.dom.BrowserFeature'], ['goog.userAgent'], false); -goog.addDependency('dom/browserrange/abstractrange.js', ['goog.dom.browserrange.AbstractRange'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.RangeEndpoint', 'goog.dom.TagName', 'goog.dom.TextRangeIterator', 'goog.iter', 'goog.math.Coordinate', 'goog.string', 'goog.string.StringBuffer', 'goog.userAgent'], false); -goog.addDependency('dom/browserrange/browserrange.js', ['goog.dom.browserrange', 'goog.dom.browserrange.Error'], ['goog.dom', 'goog.dom.BrowserFeature', 'goog.dom.NodeType', 'goog.dom.browserrange.GeckoRange', 'goog.dom.browserrange.IeRange', 'goog.dom.browserrange.OperaRange', 'goog.dom.browserrange.W3cRange', 'goog.dom.browserrange.WebKitRange', 'goog.userAgent'], false); -goog.addDependency('dom/browserrange/browserrange_test.js', ['goog.dom.browserrangeTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.RangeEndpoint', 'goog.dom.TagName', 'goog.dom.browserrange', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/browserrange/geckorange.js', ['goog.dom.browserrange.GeckoRange'], ['goog.dom.browserrange.W3cRange'], false); -goog.addDependency('dom/browserrange/ierange.js', ['goog.dom.browserrange.IeRange'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.RangeEndpoint', 'goog.dom.TagName', 'goog.dom.browserrange.AbstractRange', 'goog.log', 'goog.string'], false); -goog.addDependency('dom/browserrange/operarange.js', ['goog.dom.browserrange.OperaRange'], ['goog.dom.browserrange.W3cRange'], false); -goog.addDependency('dom/browserrange/w3crange.js', ['goog.dom.browserrange.W3cRange'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.RangeEndpoint', 'goog.dom.TagName', 'goog.dom.browserrange.AbstractRange', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('dom/browserrange/webkitrange.js', ['goog.dom.browserrange.WebKitRange'], ['goog.dom.RangeEndpoint', 'goog.dom.browserrange.W3cRange', 'goog.userAgent'], false); -goog.addDependency('dom/bufferedviewportsizemonitor.js', ['goog.dom.BufferedViewportSizeMonitor'], ['goog.asserts', 'goog.async.Delay', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType'], false); -goog.addDependency('dom/bufferedviewportsizemonitor_test.js', ['goog.dom.BufferedViewportSizeMonitorTest'], ['goog.dom.BufferedViewportSizeMonitor', 'goog.dom.ViewportSizeMonitor', 'goog.events', 'goog.events.EventType', 'goog.math.Size', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit'], false); -goog.addDependency('dom/classes.js', ['goog.dom.classes'], ['goog.array'], false); -goog.addDependency('dom/classes_test.js', ['goog.dom.classes_test'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classes', 'goog.testing.jsunit'], false); -goog.addDependency('dom/classlist.js', ['goog.dom.classlist'], ['goog.array'], false); -goog.addDependency('dom/classlist_test.js', ['goog.dom.classlist_test'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit'], false); -goog.addDependency('dom/controlrange.js', ['goog.dom.ControlRange', 'goog.dom.ControlRangeIterator'], ['goog.array', 'goog.dom', 'goog.dom.AbstractMultiRange', 'goog.dom.AbstractRange', 'goog.dom.RangeIterator', 'goog.dom.RangeType', 'goog.dom.SavedRange', 'goog.dom.TagWalkType', 'goog.dom.TextRange', 'goog.iter.StopIteration', 'goog.userAgent'], false); -goog.addDependency('dom/controlrange_test.js', ['goog.dom.ControlRangeTest'], ['goog.dom', 'goog.dom.ControlRange', 'goog.dom.RangeType', 'goog.dom.TagName', 'goog.dom.TextRange', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/dataset.js', ['goog.dom.dataset'], ['goog.string', 'goog.userAgent.product'], false); -goog.addDependency('dom/dataset_test.js', ['goog.dom.datasetTest'], ['goog.dom', 'goog.dom.dataset', 'goog.testing.jsunit'], false); -goog.addDependency('dom/dom.js', ['goog.dom', 'goog.dom.Appendable', 'goog.dom.DomHelper'], ['goog.array', 'goog.asserts', 'goog.dom.BrowserFeature', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.math.Coordinate', 'goog.math.Size', 'goog.object', 'goog.string', 'goog.string.Unicode', 'goog.userAgent'], false); -goog.addDependency('dom/dom_test.js', ['goog.dom.dom_test'], ['goog.dom', 'goog.dom.BrowserFeature', 'goog.dom.DomHelper', 'goog.dom.InputType', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.functions', 'goog.html.testing', 'goog.object', 'goog.string.Unicode', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('dom/fontsizemonitor.js', ['goog.dom.FontSizeMonitor', 'goog.dom.FontSizeMonitor.EventType'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.userAgent'], false); -goog.addDependency('dom/fontsizemonitor_test.js', ['goog.dom.FontSizeMonitorTest'], ['goog.dom', 'goog.dom.FontSizeMonitor', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/forms.js', ['goog.dom.forms'], ['goog.dom.InputType', 'goog.dom.TagName', 'goog.structs.Map'], false); -goog.addDependency('dom/forms_test.js', ['goog.dom.formsTest'], ['goog.dom', 'goog.dom.forms', 'goog.testing.jsunit'], false); -goog.addDependency('dom/fullscreen.js', ['goog.dom.fullscreen', 'goog.dom.fullscreen.EventType'], ['goog.dom', 'goog.userAgent'], false); -goog.addDependency('dom/fullscreen_test.js', ['goog.dom.fullscreen_test'], ['goog.dom.DomHelper', 'goog.dom.fullscreen', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('dom/iframe.js', ['goog.dom.iframe'], ['goog.dom', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.html.SafeStyle', 'goog.html.legacyconversions', 'goog.userAgent'], false); -goog.addDependency('dom/iframe_test.js', ['goog.dom.iframeTest'], ['goog.dom', 'goog.dom.iframe', 'goog.html.SafeHtml', 'goog.html.SafeStyle', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('dom/inputtype.js', ['goog.dom.InputType'], [], false); -goog.addDependency('dom/inputtype_test.js', ['goog.dom.InputTypeTest'], ['goog.dom.InputType', 'goog.object'], false); -goog.addDependency('dom/iter.js', ['goog.dom.iter.AncestorIterator', 'goog.dom.iter.ChildIterator', 'goog.dom.iter.SiblingIterator'], ['goog.iter.Iterator', 'goog.iter.StopIteration'], false); -goog.addDependency('dom/iter_test.js', ['goog.dom.iterTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.iter.AncestorIterator', 'goog.dom.iter.ChildIterator', 'goog.dom.iter.SiblingIterator', 'goog.testing.dom', 'goog.testing.jsunit'], false); -goog.addDependency('dom/multirange.js', ['goog.dom.MultiRange', 'goog.dom.MultiRangeIterator'], ['goog.array', 'goog.dom.AbstractMultiRange', 'goog.dom.AbstractRange', 'goog.dom.RangeIterator', 'goog.dom.RangeType', 'goog.dom.SavedRange', 'goog.dom.TextRange', 'goog.iter.StopIteration', 'goog.log'], false); -goog.addDependency('dom/multirange_test.js', ['goog.dom.MultiRangeTest'], ['goog.dom', 'goog.dom.MultiRange', 'goog.dom.Range', 'goog.iter', 'goog.testing.jsunit'], false); -goog.addDependency('dom/nodeiterator.js', ['goog.dom.NodeIterator'], ['goog.dom.TagIterator'], false); -goog.addDependency('dom/nodeiterator_test.js', ['goog.dom.NodeIteratorTest'], ['goog.dom', 'goog.dom.NodeIterator', 'goog.testing.dom', 'goog.testing.jsunit'], false); -goog.addDependency('dom/nodeoffset.js', ['goog.dom.NodeOffset'], ['goog.Disposable', 'goog.dom.TagName'], false); -goog.addDependency('dom/nodeoffset_test.js', ['goog.dom.NodeOffsetTest'], ['goog.dom', 'goog.dom.NodeOffset', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.testing.jsunit'], false); -goog.addDependency('dom/nodetype.js', ['goog.dom.NodeType'], [], false); -goog.addDependency('dom/pattern/abstractpattern.js', ['goog.dom.pattern.AbstractPattern'], ['goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/allchildren.js', ['goog.dom.pattern.AllChildren'], ['goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/callback/callback.js', ['goog.dom.pattern.callback'], ['goog.dom', 'goog.dom.TagWalkType', 'goog.iter'], false); -goog.addDependency('dom/pattern/callback/counter.js', ['goog.dom.pattern.callback.Counter'], [], false); -goog.addDependency('dom/pattern/callback/test.js', ['goog.dom.pattern.callback.Test'], ['goog.iter.StopIteration'], false); -goog.addDependency('dom/pattern/childmatches.js', ['goog.dom.pattern.ChildMatches'], ['goog.dom.pattern.AllChildren', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/endtag.js', ['goog.dom.pattern.EndTag'], ['goog.dom.TagWalkType', 'goog.dom.pattern.Tag'], false); -goog.addDependency('dom/pattern/fulltag.js', ['goog.dom.pattern.FullTag'], ['goog.dom.pattern.MatchType', 'goog.dom.pattern.StartTag', 'goog.dom.pattern.Tag'], false); -goog.addDependency('dom/pattern/matcher.js', ['goog.dom.pattern.Matcher'], ['goog.dom.TagIterator', 'goog.dom.pattern.MatchType', 'goog.iter'], false); -goog.addDependency('dom/pattern/matcher_test.js', ['goog.dom.pattern.matcherTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.pattern.EndTag', 'goog.dom.pattern.FullTag', 'goog.dom.pattern.Matcher', 'goog.dom.pattern.Repeat', 'goog.dom.pattern.Sequence', 'goog.dom.pattern.StartTag', 'goog.dom.pattern.callback.Counter', 'goog.dom.pattern.callback.Test', 'goog.iter.StopIteration', 'goog.testing.jsunit'], false); -goog.addDependency('dom/pattern/nodetype.js', ['goog.dom.pattern.NodeType'], ['goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/pattern.js', ['goog.dom.pattern', 'goog.dom.pattern.MatchType'], [], false); -goog.addDependency('dom/pattern/pattern_test.js', ['goog.dom.patternTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.TagWalkType', 'goog.dom.pattern.AllChildren', 'goog.dom.pattern.ChildMatches', 'goog.dom.pattern.EndTag', 'goog.dom.pattern.FullTag', 'goog.dom.pattern.MatchType', 'goog.dom.pattern.NodeType', 'goog.dom.pattern.Repeat', 'goog.dom.pattern.Sequence', 'goog.dom.pattern.StartTag', 'goog.dom.pattern.Text', 'goog.testing.jsunit'], false); -goog.addDependency('dom/pattern/repeat.js', ['goog.dom.pattern.Repeat'], ['goog.dom.NodeType', 'goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/sequence.js', ['goog.dom.pattern.Sequence'], ['goog.dom.NodeType', 'goog.dom.pattern', 'goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/pattern/starttag.js', ['goog.dom.pattern.StartTag'], ['goog.dom.TagWalkType', 'goog.dom.pattern.Tag'], false); -goog.addDependency('dom/pattern/tag.js', ['goog.dom.pattern.Tag'], ['goog.dom.pattern', 'goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType', 'goog.object'], false); -goog.addDependency('dom/pattern/text.js', ['goog.dom.pattern.Text'], ['goog.dom.NodeType', 'goog.dom.pattern', 'goog.dom.pattern.AbstractPattern', 'goog.dom.pattern.MatchType'], false); -goog.addDependency('dom/range.js', ['goog.dom.Range'], ['goog.dom', 'goog.dom.AbstractRange', 'goog.dom.BrowserFeature', 'goog.dom.ControlRange', 'goog.dom.MultiRange', 'goog.dom.NodeType', 'goog.dom.TextRange'], false); -goog.addDependency('dom/range_test.js', ['goog.dom.RangeTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.RangeType', 'goog.dom.TagName', 'goog.dom.TextRange', 'goog.dom.browserrange', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/rangeendpoint.js', ['goog.dom.RangeEndpoint'], [], false); -goog.addDependency('dom/safe.js', ['goog.dom.safe', 'goog.dom.safe.InsertAdjacentHtmlPosition'], ['goog.asserts', 'goog.html.SafeHtml', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.string', 'goog.string.Const'], false); -goog.addDependency('dom/safe_test.js', ['goog.dom.safeTest'], ['goog.dom.safe', 'goog.dom.safe.InsertAdjacentHtmlPosition', 'goog.html.SafeHtml', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.html.testing', 'goog.string.Const', 'goog.testing', 'goog.testing.jsunit'], false); -goog.addDependency('dom/savedcaretrange.js', ['goog.dom.SavedCaretRange'], ['goog.array', 'goog.dom', 'goog.dom.SavedRange', 'goog.dom.TagName', 'goog.string'], false); -goog.addDependency('dom/savedcaretrange_test.js', ['goog.dom.SavedCaretRangeTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.SavedCaretRange', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/savedrange.js', ['goog.dom.SavedRange'], ['goog.Disposable', 'goog.log'], false); -goog.addDependency('dom/savedrange_test.js', ['goog.dom.SavedRangeTest'], ['goog.dom', 'goog.dom.Range', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/selection.js', ['goog.dom.selection'], ['goog.dom.InputType', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('dom/selection_test.js', ['goog.dom.selectionTest'], ['goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.selection', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('dom/tagiterator.js', ['goog.dom.TagIterator', 'goog.dom.TagWalkType'], ['goog.dom', 'goog.dom.NodeType', 'goog.iter.Iterator', 'goog.iter.StopIteration'], false); -goog.addDependency('dom/tagiterator_test.js', ['goog.dom.TagIteratorTest'], ['goog.dom', 'goog.dom.TagIterator', 'goog.dom.TagName', 'goog.dom.TagWalkType', 'goog.iter', 'goog.iter.StopIteration', 'goog.testing.dom', 'goog.testing.jsunit'], false); -goog.addDependency('dom/tagname.js', ['goog.dom.TagName'], [], false); -goog.addDependency('dom/tagname_test.js', ['goog.dom.TagNameTest'], ['goog.dom.TagName', 'goog.object', 'goog.testing.jsunit'], false); -goog.addDependency('dom/tags.js', ['goog.dom.tags'], ['goog.object'], false); -goog.addDependency('dom/tags_test.js', ['goog.dom.tagsTest'], ['goog.dom.tags', 'goog.testing.jsunit'], false); -goog.addDependency('dom/textrange.js', ['goog.dom.TextRange'], ['goog.array', 'goog.dom', 'goog.dom.AbstractRange', 'goog.dom.RangeType', 'goog.dom.SavedRange', 'goog.dom.TagName', 'goog.dom.TextRangeIterator', 'goog.dom.browserrange', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('dom/textrange_test.js', ['goog.dom.TextRangeTest'], ['goog.dom', 'goog.dom.ControlRange', 'goog.dom.Range', 'goog.dom.TextRange', 'goog.math.Coordinate', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('dom/textrangeiterator.js', ['goog.dom.TextRangeIterator'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.RangeIterator', 'goog.dom.TagName', 'goog.iter.StopIteration'], false); -goog.addDependency('dom/textrangeiterator_test.js', ['goog.dom.TextRangeIteratorTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.TextRangeIterator', 'goog.iter.StopIteration', 'goog.testing.dom', 'goog.testing.jsunit'], false); -goog.addDependency('dom/vendor.js', ['goog.dom.vendor'], ['goog.string', 'goog.userAgent'], false); -goog.addDependency('dom/vendor_test.js', ['goog.dom.vendorTest'], ['goog.array', 'goog.dom.vendor', 'goog.labs.userAgent.util', 'goog.testing.MockUserAgent', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgentTestUtil'], false); -goog.addDependency('dom/viewportsizemonitor.js', ['goog.dom.ViewportSizeMonitor'], ['goog.dom', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.math.Size'], false); -goog.addDependency('dom/viewportsizemonitor_test.js', ['goog.dom.ViewportSizeMonitorTest'], ['goog.dom.ViewportSizeMonitor', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.math.Size', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('dom/xml.js', ['goog.dom.xml'], ['goog.dom', 'goog.dom.NodeType', 'goog.userAgent'], false); -goog.addDependency('dom/xml_test.js', ['goog.dom.xmlTest'], ['goog.dom.TagName', 'goog.dom.xml', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/browserfeature.js', ['goog.editor.BrowserFeature'], ['goog.editor.defines', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('editor/browserfeature_test.js', ['goog.editor.BrowserFeatureTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit'], false); -goog.addDependency('editor/clicktoeditwrapper.js', ['goog.editor.ClickToEditWrapper'], ['goog.Disposable', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.range', 'goog.events.BrowserEvent', 'goog.events.EventHandler', 'goog.events.EventType'], false); -goog.addDependency('editor/clicktoeditwrapper_test.js', ['goog.editor.ClickToEditWrapperTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.ClickToEditWrapper', 'goog.editor.SeamlessField', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('editor/command.js', ['goog.editor.Command'], [], false); -goog.addDependency('editor/contenteditablefield.js', ['goog.editor.ContentEditableField'], ['goog.asserts', 'goog.editor.Field', 'goog.log'], false); -goog.addDependency('editor/contenteditablefield_test.js', ['goog.editor.ContentEditableFieldTest'], ['goog.dom', 'goog.editor.ContentEditableField', 'goog.editor.field_test', 'goog.testing.jsunit'], false); -goog.addDependency('editor/defines.js', ['goog.editor.defines'], [], false); -goog.addDependency('editor/field.js', ['goog.editor.Field', 'goog.editor.Field.EventType'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.array', 'goog.asserts', 'goog.async.Delay', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Plugin', 'goog.editor.icontent', 'goog.editor.icontent.FieldFormatInfo', 'goog.editor.icontent.FieldStyleInfo', 'goog.editor.node', 'goog.editor.range', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.functions', 'goog.log', 'goog.log.Level', 'goog.string', 'goog.string.Unicode', 'goog.style', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('editor/field_test.js', ['goog.editor.field_test'], ['goog.array', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.editor.BrowserFeature', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.range', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.functions', 'goog.testing.LooseMock', 'goog.testing.MockClock', 'goog.testing.dom', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('editor/focus.js', ['goog.editor.focus'], ['goog.dom.selection'], false); -goog.addDependency('editor/focus_test.js', ['goog.editor.focusTest'], ['goog.dom.selection', 'goog.editor.BrowserFeature', 'goog.editor.focus', 'goog.testing.jsunit'], false); -goog.addDependency('editor/icontent.js', ['goog.editor.icontent', 'goog.editor.icontent.FieldFormatInfo', 'goog.editor.icontent.FieldStyleInfo'], ['goog.dom', 'goog.editor.BrowserFeature', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('editor/icontent_test.js', ['goog.editor.icontentTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.icontent', 'goog.editor.icontent.FieldFormatInfo', 'goog.editor.icontent.FieldStyleInfo', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/link.js', ['goog.editor.Link'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.node', 'goog.editor.range', 'goog.string', 'goog.string.Unicode', 'goog.uri.utils', 'goog.uri.utils.ComponentIndex'], false); -goog.addDependency('editor/link_test.js', ['goog.editor.LinkTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.Link', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/node.js', ['goog.editor.node'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.iter.ChildIterator', 'goog.dom.iter.SiblingIterator', 'goog.iter', 'goog.object', 'goog.string', 'goog.string.Unicode', 'goog.userAgent'], false); -goog.addDependency('editor/node_test.js', ['goog.editor.nodeTest'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.editor.node', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugin.js', ['goog.editor.Plugin'], ['goog.events.EventTarget', 'goog.functions', 'goog.log', 'goog.object', 'goog.reflect', 'goog.userAgent'], false); -goog.addDependency('editor/plugin_test.js', ['goog.editor.PluginTest'], ['goog.editor.Field', 'goog.editor.Plugin', 'goog.functions', 'goog.testing.StrictMock', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/abstractbubbleplugin.js', ['goog.editor.plugins.AbstractBubblePlugin'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.editor.Plugin', 'goog.editor.style', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.actionEventWrapper', 'goog.functions', 'goog.string.Unicode', 'goog.ui.Component', 'goog.ui.editor.Bubble', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/abstractbubbleplugin_test.js', ['goog.editor.plugins.AbstractBubblePluginTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.plugins.AbstractBubblePlugin', 'goog.events.BrowserEvent', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.functions', 'goog.style', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.editor.Bubble', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/abstractdialogplugin.js', ['goog.editor.plugins.AbstractDialogPlugin', 'goog.editor.plugins.AbstractDialogPlugin.EventType'], ['goog.dom', 'goog.dom.Range', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.range', 'goog.events', 'goog.ui.editor.AbstractDialog'], false); -goog.addDependency('editor/plugins/abstractdialogplugin_test.js', ['goog.editor.plugins.AbstractDialogPluginTest'], ['goog.dom.SavedRange', 'goog.dom.TagName', 'goog.editor.Field', 'goog.editor.plugins.AbstractDialogPlugin', 'goog.events.Event', 'goog.events.EventHandler', 'goog.functions', 'goog.testing.MockClock', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers.ArgumentMatcher', 'goog.ui.editor.AbstractDialog', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/abstracttabhandler.js', ['goog.editor.plugins.AbstractTabHandler'], ['goog.editor.Plugin', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/abstracttabhandler_test.js', ['goog.editor.plugins.AbstractTabHandlerTest'], ['goog.editor.Field', 'goog.editor.plugins.AbstractTabHandler', 'goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.testing.StrictMock', 'goog.testing.editor.FieldMock', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/basictextformatter.js', ['goog.editor.plugins.BasicTextFormatter', 'goog.editor.plugins.BasicTextFormatter.COMMAND'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Link', 'goog.editor.Plugin', 'goog.editor.node', 'goog.editor.range', 'goog.editor.style', 'goog.iter', 'goog.iter.StopIteration', 'goog.log', 'goog.object', 'goog.string', 'goog.string.Unicode', 'goog.style', 'goog.ui.editor.messages', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/basictextformatter_test.js', ['goog.editor.plugins.BasicTextFormatterTest'], ['goog.array', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.plugins.BasicTextFormatter', 'goog.object', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.LooseMock', 'goog.testing.PropertyReplacer', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/blockquote.js', ['goog.editor.plugins.Blockquote'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Plugin', 'goog.editor.node', 'goog.functions', 'goog.log'], false); -goog.addDependency('editor/plugins/blockquote_test.js', ['goog.editor.plugins.BlockquoteTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.plugins.Blockquote', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit'], false); -goog.addDependency('editor/plugins/emoticons.js', ['goog.editor.plugins.Emoticons'], ['goog.dom.TagName', 'goog.editor.Plugin', 'goog.editor.range', 'goog.functions', 'goog.ui.emoji.Emoji', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/emoticons_test.js', ['goog.editor.plugins.EmoticonsTest'], ['goog.Uri', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.editor.Field', 'goog.editor.plugins.Emoticons', 'goog.testing.jsunit', 'goog.ui.emoji.Emoji', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/enterhandler.js', ['goog.editor.plugins.EnterHandler'], ['goog.dom', 'goog.dom.NodeOffset', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Plugin', 'goog.editor.node', 'goog.editor.plugins.Blockquote', 'goog.editor.range', 'goog.editor.style', 'goog.events.KeyCodes', 'goog.functions', 'goog.object', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/enterhandler_test.js', ['goog.editor.plugins.EnterHandlerTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.plugins.Blockquote', 'goog.editor.plugins.EnterHandler', 'goog.editor.range', 'goog.events', 'goog.events.KeyCodes', 'goog.testing.ExpectedFailures', 'goog.testing.MockClock', 'goog.testing.dom', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/firststrong.js', ['goog.editor.plugins.FirstStrong'], ['goog.dom.NodeType', 'goog.dom.TagIterator', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.node', 'goog.editor.range', 'goog.i18n.bidi', 'goog.i18n.uChar', 'goog.iter', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/firststrong_test.js', ['goog.editor.plugins.FirstStrongTest'], ['goog.dom.Range', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.plugins.FirstStrong', 'goog.editor.range', 'goog.events.KeyCodes', 'goog.testing.MockClock', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/headerformatter.js', ['goog.editor.plugins.HeaderFormatter'], ['goog.editor.Command', 'goog.editor.Plugin', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/headerformatter_test.js', ['goog.editor.plugins.HeaderFormatterTest'], ['goog.dom', 'goog.editor.Command', 'goog.editor.plugins.BasicTextFormatter', 'goog.editor.plugins.HeaderFormatter', 'goog.events.BrowserEvent', 'goog.testing.LooseMock', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/linkbubble.js', ['goog.editor.plugins.LinkBubble', 'goog.editor.plugins.LinkBubble.Action'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.Link', 'goog.editor.plugins.AbstractBubblePlugin', 'goog.editor.range', 'goog.functions', 'goog.string', 'goog.style', 'goog.ui.editor.messages', 'goog.uri.utils', 'goog.window'], false); -goog.addDependency('editor/plugins/linkbubble_test.js', ['goog.editor.plugins.LinkBubbleTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.Link', 'goog.editor.plugins.LinkBubble', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventType', 'goog.string', 'goog.style', 'goog.testing.FunctionMock', 'goog.testing.PropertyReplacer', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/linkdialogplugin.js', ['goog.editor.plugins.LinkDialogPlugin'], ['goog.array', 'goog.dom', 'goog.editor.Command', 'goog.editor.plugins.AbstractDialogPlugin', 'goog.events.EventHandler', 'goog.functions', 'goog.ui.editor.AbstractDialog', 'goog.ui.editor.LinkDialog', 'goog.uri.utils'], false); -goog.addDependency('editor/plugins/linkdialogplugin_test.js', ['goog.ui.editor.plugins.LinkDialogTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.Link', 'goog.editor.plugins.LinkDialogPlugin', 'goog.string', 'goog.string.Unicode', 'goog.testing.MockControl', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.editor.dom', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.ui.editor.AbstractDialog', 'goog.ui.editor.LinkDialog', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/linkshortcutplugin.js', ['goog.editor.plugins.LinkShortcutPlugin'], ['goog.editor.Command', 'goog.editor.Plugin'], false); -goog.addDependency('editor/plugins/linkshortcutplugin_test.js', ['goog.editor.plugins.LinkShortcutPluginTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.Field', 'goog.editor.plugins.BasicTextFormatter', 'goog.editor.plugins.LinkBubble', 'goog.editor.plugins.LinkShortcutPlugin', 'goog.events.KeyCodes', 'goog.testing.PropertyReplacer', 'goog.testing.dom', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent.product'], false); -goog.addDependency('editor/plugins/listtabhandler.js', ['goog.editor.plugins.ListTabHandler'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.plugins.AbstractTabHandler', 'goog.iter'], false); -goog.addDependency('editor/plugins/listtabhandler_test.js', ['goog.editor.plugins.ListTabHandlerTest'], ['goog.dom', 'goog.editor.Command', 'goog.editor.plugins.ListTabHandler', 'goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.functions', 'goog.testing.StrictMock', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit'], false); -goog.addDependency('editor/plugins/loremipsum.js', ['goog.editor.plugins.LoremIpsum'], ['goog.asserts', 'goog.dom', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.node', 'goog.functions', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/loremipsum_test.js', ['goog.editor.plugins.LoremIpsumTest'], ['goog.dom', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.plugins.LoremIpsum', 'goog.string.Unicode', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/removeformatting.js', ['goog.editor.plugins.RemoveFormatting'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Plugin', 'goog.editor.node', 'goog.editor.range', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/removeformatting_test.js', ['goog.editor.plugins.RemoveFormattingTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.plugins.RemoveFormatting', 'goog.string', 'goog.testing.ExpectedFailures', 'goog.testing.dom', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/spacestabhandler.js', ['goog.editor.plugins.SpacesTabHandler'], ['goog.dom.TagName', 'goog.editor.plugins.AbstractTabHandler', 'goog.editor.range'], false); -goog.addDependency('editor/plugins/spacestabhandler_test.js', ['goog.editor.plugins.SpacesTabHandlerTest'], ['goog.dom', 'goog.dom.Range', 'goog.editor.plugins.SpacesTabHandler', 'goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.functions', 'goog.testing.StrictMock', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit'], false); -goog.addDependency('editor/plugins/tableeditor.js', ['goog.editor.plugins.TableEditor'], ['goog.array', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.Plugin', 'goog.editor.Table', 'goog.editor.node', 'goog.editor.range', 'goog.object', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/tableeditor_test.js', ['goog.editor.plugins.TableEditorTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.plugins.TableEditor', 'goog.object', 'goog.string', 'goog.testing.ExpectedFailures', 'goog.testing.JsUnitException', 'goog.testing.editor.FieldMock', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/tagonenterhandler.js', ['goog.editor.plugins.TagOnEnterHandler'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.node', 'goog.editor.plugins.EnterHandler', 'goog.editor.range', 'goog.editor.style', 'goog.events.KeyCodes', 'goog.functions', 'goog.string.Unicode', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/tagonenterhandler_test.js', ['goog.editor.plugins.TagOnEnterHandlerTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.plugins.TagOnEnterHandler', 'goog.events.KeyCodes', 'goog.string.Unicode', 'goog.testing.dom', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/plugins/undoredo.js', ['goog.editor.plugins.UndoRedo'], ['goog.dom', 'goog.dom.NodeOffset', 'goog.dom.Range', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Field', 'goog.editor.Plugin', 'goog.editor.node', 'goog.editor.plugins.UndoRedoManager', 'goog.editor.plugins.UndoRedoState', 'goog.events', 'goog.events.EventHandler', 'goog.log', 'goog.object'], false); -goog.addDependency('editor/plugins/undoredo_test.js', ['goog.editor.plugins.UndoRedoTest'], ['goog.array', 'goog.dom', 'goog.dom.browserrange', 'goog.editor.Field', 'goog.editor.plugins.LoremIpsum', 'goog.editor.plugins.UndoRedo', 'goog.events', 'goog.functions', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.StrictMock', 'goog.testing.jsunit'], false); -goog.addDependency('editor/plugins/undoredomanager.js', ['goog.editor.plugins.UndoRedoManager', 'goog.editor.plugins.UndoRedoManager.EventType'], ['goog.editor.plugins.UndoRedoState', 'goog.events', 'goog.events.EventTarget'], false); -goog.addDependency('editor/plugins/undoredomanager_test.js', ['goog.editor.plugins.UndoRedoManagerTest'], ['goog.editor.plugins.UndoRedoManager', 'goog.editor.plugins.UndoRedoState', 'goog.events', 'goog.testing.StrictMock', 'goog.testing.jsunit'], false); -goog.addDependency('editor/plugins/undoredostate.js', ['goog.editor.plugins.UndoRedoState'], ['goog.events.EventTarget'], false); -goog.addDependency('editor/plugins/undoredostate_test.js', ['goog.editor.plugins.UndoRedoStateTest'], ['goog.editor.plugins.UndoRedoState', 'goog.testing.jsunit'], false); -goog.addDependency('editor/range.js', ['goog.editor.range', 'goog.editor.range.Point'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.dom.RangeEndpoint', 'goog.dom.SavedCaretRange', 'goog.editor.node', 'goog.editor.style', 'goog.iter', 'goog.userAgent'], false); -goog.addDependency('editor/range_test.js', ['goog.editor.rangeTest'], ['goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.range', 'goog.editor.range.Point', 'goog.string', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('editor/seamlessfield.js', ['goog.editor.SeamlessField'], ['goog.cssom.iframe.style', 'goog.dom', 'goog.dom.Range', 'goog.dom.TagName', 'goog.dom.safe', 'goog.editor.BrowserFeature', 'goog.editor.Field', 'goog.editor.icontent', 'goog.editor.icontent.FieldFormatInfo', 'goog.editor.icontent.FieldStyleInfo', 'goog.editor.node', 'goog.events', 'goog.events.EventType', 'goog.html.uncheckedconversions', 'goog.log', 'goog.string.Const', 'goog.style'], false); -goog.addDependency('editor/seamlessfield_test.js', ['goog.editor.seamlessfield_test'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.Range', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Field', 'goog.editor.SeamlessField', 'goog.events', 'goog.functions', 'goog.style', 'goog.testing.MockClock', 'goog.testing.MockRange', 'goog.testing.jsunit'], false); -goog.addDependency('editor/style.js', ['goog.editor.style'], ['goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.events.EventType', 'goog.object', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('editor/style_test.js', ['goog.editor.styleTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.style', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.style', 'goog.testing.LooseMock', 'goog.testing.jsunit', 'goog.testing.mockmatchers'], false); -goog.addDependency('editor/table.js', ['goog.editor.Table', 'goog.editor.TableCell', 'goog.editor.TableRow'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.log', 'goog.string.Unicode', 'goog.style'], false); -goog.addDependency('editor/table_test.js', ['goog.editor.TableTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.Table', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/actioneventwrapper.js', ['goog.events.actionEventWrapper'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.dom', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.EventWrapper', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('events/actioneventwrapper_test.js', ['goog.events.actionEventWrapperTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.events', 'goog.events.EventHandler', 'goog.events.KeyCodes', 'goog.events.actionEventWrapper', 'goog.testing.events', 'goog.testing.jsunit'], false); -goog.addDependency('events/actionhandler.js', ['goog.events.ActionEvent', 'goog.events.ActionHandler', 'goog.events.ActionHandler.EventType', 'goog.events.BeforeActionEvent'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('events/actionhandler_test.js', ['goog.events.ActionHandlerTest'], ['goog.dom', 'goog.events', 'goog.events.ActionHandler', 'goog.testing.events', 'goog.testing.jsunit'], false); -goog.addDependency('events/browserevent.js', ['goog.events.BrowserEvent', 'goog.events.BrowserEvent.MouseButton'], ['goog.events.BrowserFeature', 'goog.events.Event', 'goog.events.EventType', 'goog.reflect', 'goog.userAgent'], false); -goog.addDependency('events/browserevent_test.js', ['goog.events.BrowserEventTest'], ['goog.events.BrowserEvent', 'goog.events.BrowserFeature', 'goog.math.Coordinate', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/browserfeature.js', ['goog.events.BrowserFeature'], ['goog.userAgent'], false); -goog.addDependency('events/event.js', ['goog.events.Event', 'goog.events.EventLike'], ['goog.Disposable', 'goog.events.EventId'], false); -goog.addDependency('events/event_test.js', ['goog.events.EventTest'], ['goog.events.Event', 'goog.events.EventId', 'goog.events.EventTarget', 'goog.testing.jsunit'], false); -goog.addDependency('events/eventhandler.js', ['goog.events.EventHandler'], ['goog.Disposable', 'goog.events', 'goog.object'], false); -goog.addDependency('events/eventhandler_test.js', ['goog.events.EventHandlerTest'], ['goog.events', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('events/eventid.js', ['goog.events.EventId'], [], false); -goog.addDependency('events/events.js', ['goog.events', 'goog.events.CaptureSimulationMode', 'goog.events.Key', 'goog.events.ListenableType'], ['goog.asserts', 'goog.debug.entryPointRegistry', 'goog.events.BrowserEvent', 'goog.events.BrowserFeature', 'goog.events.Listenable', 'goog.events.ListenerMap'], false); -goog.addDependency('events/events_test.js', ['goog.eventsTest'], ['goog.asserts.AssertionError', 'goog.debug.EntryPointMonitor', 'goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.BrowserFeature', 'goog.events.CaptureSimulationMode', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.Listener', 'goog.functions', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('events/eventtarget.js', ['goog.events.EventTarget'], ['goog.Disposable', 'goog.asserts', 'goog.events', 'goog.events.Event', 'goog.events.Listenable', 'goog.events.ListenerMap', 'goog.object'], false); -goog.addDependency('events/eventtarget_test.js', ['goog.events.EventTargetTest'], ['goog.events.EventTarget', 'goog.events.Listenable', 'goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType', 'goog.testing.jsunit'], false); -goog.addDependency('events/eventtarget_via_googevents_test.js', ['goog.events.EventTargetGoogEventsTest'], ['goog.events', 'goog.events.EventTarget', 'goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType', 'goog.testing', 'goog.testing.jsunit'], false); -goog.addDependency('events/eventtarget_via_w3cinterface_test.js', ['goog.events.EventTargetW3CTest'], ['goog.events.EventTarget', 'goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType', 'goog.testing.jsunit'], false); -goog.addDependency('events/eventtargettester.js', ['goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType'], ['goog.array', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.testing.asserts', 'goog.testing.recordFunction'], false); -goog.addDependency('events/eventtype.js', ['goog.events.EventType'], ['goog.userAgent'], false); -goog.addDependency('events/eventwrapper.js', ['goog.events.EventWrapper'], [], false); -goog.addDependency('events/filedrophandler.js', ['goog.events.FileDropHandler', 'goog.events.FileDropHandler.EventType'], ['goog.array', 'goog.dom', 'goog.events.BrowserEvent', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.log', 'goog.log.Level'], false); -goog.addDependency('events/filedrophandler_test.js', ['goog.events.FileDropHandlerTest'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.FileDropHandler', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/focushandler.js', ['goog.events.FocusHandler', 'goog.events.FocusHandler.EventType'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.userAgent'], false); -goog.addDependency('events/imehandler.js', ['goog.events.ImeHandler', 'goog.events.ImeHandler.Event', 'goog.events.ImeHandler.EventType'], ['goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('events/imehandler_test.js', ['goog.events.ImeHandlerTest'], ['goog.array', 'goog.dom', 'goog.events', 'goog.events.ImeHandler', 'goog.events.KeyCodes', 'goog.object', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/inputhandler.js', ['goog.events.InputHandler', 'goog.events.InputHandler.EventType'], ['goog.Timer', 'goog.dom.TagName', 'goog.events.BrowserEvent', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('events/inputhandler_test.js', ['goog.events.InputHandlerTest'], ['goog.dom', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.InputHandler', 'goog.events.KeyCodes', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('events/keycodes.js', ['goog.events.KeyCodes'], ['goog.userAgent'], false); -goog.addDependency('events/keycodes_test.js', ['goog.events.KeyCodesTest'], ['goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.object', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/keyhandler.js', ['goog.events.KeyEvent', 'goog.events.KeyHandler', 'goog.events.KeyHandler.EventType'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.userAgent'], false); -goog.addDependency('events/keyhandler_test.js', ['goog.events.KeyEventTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/keynames.js', ['goog.events.KeyNames'], [], false); -goog.addDependency('events/listenable.js', ['goog.events.Listenable', 'goog.events.ListenableKey'], ['goog.events.EventId'], false); -goog.addDependency('events/listenable_test.js', ['goog.events.ListenableTest'], ['goog.events.Listenable', 'goog.testing.jsunit'], false); -goog.addDependency('events/listener.js', ['goog.events.Listener'], ['goog.events.ListenableKey'], false); -goog.addDependency('events/listenermap.js', ['goog.events.ListenerMap'], ['goog.array', 'goog.events.Listener', 'goog.object'], false); -goog.addDependency('events/listenermap_test.js', ['goog.events.ListenerMapTest'], ['goog.dispose', 'goog.events', 'goog.events.EventId', 'goog.events.EventTarget', 'goog.events.ListenerMap', 'goog.testing.jsunit'], false); -goog.addDependency('events/mousewheelhandler.js', ['goog.events.MouseWheelEvent', 'goog.events.MouseWheelHandler', 'goog.events.MouseWheelHandler.EventType'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.math', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('events/mousewheelhandler_test.js', ['goog.events.MouseWheelHandlerTest'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.MouseWheelEvent', 'goog.events.MouseWheelHandler', 'goog.functions', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/onlinehandler.js', ['goog.events.OnlineHandler', 'goog.events.OnlineHandler.EventType'], ['goog.Timer', 'goog.events.BrowserFeature', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.net.NetworkStatusMonitor'], false); -goog.addDependency('events/onlinelistener_test.js', ['goog.events.OnlineHandlerTest'], ['goog.events', 'goog.events.BrowserFeature', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.OnlineHandler', 'goog.net.NetworkStatusMonitor', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('events/pastehandler.js', ['goog.events.PasteHandler', 'goog.events.PasteHandler.EventType', 'goog.events.PasteHandler.State'], ['goog.Timer', 'goog.async.ConditionalDelay', 'goog.events.BrowserEvent', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.log', 'goog.userAgent'], false); -goog.addDependency('events/pastehandler_test.js', ['goog.events.PasteHandlerTest'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.PasteHandler', 'goog.testing.MockClock', 'goog.testing.MockUserAgent', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('events/wheelevent.js', ['goog.events.WheelEvent'], ['goog.asserts', 'goog.events.BrowserEvent'], false); -goog.addDependency('events/wheelhandler.js', ['goog.events.WheelHandler'], ['goog.dom', 'goog.events', 'goog.events.EventTarget', 'goog.events.WheelEvent', 'goog.style', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('events/wheelhandler_test.js', ['goog.events.WheelHandlerTest'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.WheelEvent', 'goog.events.WheelHandler', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('format/emailaddress.js', ['goog.format.EmailAddress'], ['goog.string'], false); -goog.addDependency('format/emailaddress_test.js', ['goog.format.EmailAddressTest'], ['goog.array', 'goog.format.EmailAddress', 'goog.testing.jsunit'], false); -goog.addDependency('format/format.js', ['goog.format'], ['goog.i18n.GraphemeBreak', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('format/format_test.js', ['goog.formatTest'], ['goog.dom', 'goog.dom.TagName', 'goog.format', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('format/htmlprettyprinter.js', ['goog.format.HtmlPrettyPrinter', 'goog.format.HtmlPrettyPrinter.Buffer'], ['goog.dom.TagName', 'goog.object', 'goog.string.StringBuffer'], false); -goog.addDependency('format/htmlprettyprinter_test.js', ['goog.format.HtmlPrettyPrinterTest'], ['goog.format.HtmlPrettyPrinter', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('format/internationalizedemailaddress.js', ['goog.format.InternationalizedEmailAddress'], ['goog.format.EmailAddress', 'goog.string'], false); -goog.addDependency('format/internationalizedemailaddress_test.js', ['goog.format.InternationalizedEmailAddressTest'], ['goog.array', 'goog.format.InternationalizedEmailAddress', 'goog.testing.jsunit'], false); -goog.addDependency('format/jsonprettyprinter.js', ['goog.format.JsonPrettyPrinter', 'goog.format.JsonPrettyPrinter.HtmlDelimiters', 'goog.format.JsonPrettyPrinter.TextDelimiters'], ['goog.json', 'goog.json.Serializer', 'goog.string', 'goog.string.StringBuffer', 'goog.string.format'], false); -goog.addDependency('format/jsonprettyprinter_test.js', ['goog.format.JsonPrettyPrinterTest'], ['goog.format.JsonPrettyPrinter', 'goog.testing.jsunit'], false); -goog.addDependency('fs/entry.js', ['goog.fs.DirectoryEntry', 'goog.fs.DirectoryEntry.Behavior', 'goog.fs.Entry', 'goog.fs.FileEntry'], [], false); -goog.addDependency('fs/entryimpl.js', ['goog.fs.DirectoryEntryImpl', 'goog.fs.EntryImpl', 'goog.fs.FileEntryImpl'], ['goog.array', 'goog.async.Deferred', 'goog.fs.DirectoryEntry', 'goog.fs.Entry', 'goog.fs.Error', 'goog.fs.FileEntry', 'goog.fs.FileWriter', 'goog.functions', 'goog.string'], false); -goog.addDependency('fs/error.js', ['goog.fs.Error', 'goog.fs.Error.ErrorCode'], ['goog.debug.Error', 'goog.object', 'goog.string'], false); -goog.addDependency('fs/filereader.js', ['goog.fs.FileReader', 'goog.fs.FileReader.EventType', 'goog.fs.FileReader.ReadyState'], ['goog.async.Deferred', 'goog.events.EventTarget', 'goog.fs.Error', 'goog.fs.ProgressEvent'], false); -goog.addDependency('fs/filesaver.js', ['goog.fs.FileSaver', 'goog.fs.FileSaver.EventType', 'goog.fs.FileSaver.ReadyState'], ['goog.events.EventTarget', 'goog.fs.Error', 'goog.fs.ProgressEvent'], false); -goog.addDependency('fs/filesystem.js', ['goog.fs.FileSystem'], [], false); -goog.addDependency('fs/filesystemimpl.js', ['goog.fs.FileSystemImpl'], ['goog.fs.DirectoryEntryImpl', 'goog.fs.FileSystem'], false); -goog.addDependency('fs/filewriter.js', ['goog.fs.FileWriter'], ['goog.fs.Error', 'goog.fs.FileSaver'], false); -goog.addDependency('fs/fs.js', ['goog.fs'], ['goog.array', 'goog.async.Deferred', 'goog.fs.Error', 'goog.fs.FileReader', 'goog.fs.FileSystemImpl', 'goog.fs.url', 'goog.userAgent'], false); -goog.addDependency('fs/fs_test.js', ['goog.fsTest'], ['goog.Promise', 'goog.array', 'goog.dom', 'goog.events', 'goog.fs', 'goog.fs.DirectoryEntry', 'goog.fs.Error', 'goog.fs.FileReader', 'goog.fs.FileSaver', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('fs/progressevent.js', ['goog.fs.ProgressEvent'], ['goog.events.Event'], false); -goog.addDependency('fs/url.js', ['goog.fs.url'], [], false); -goog.addDependency('fs/url_test.js', ['goog.urlTest'], ['goog.fs.url', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('functions/functions.js', ['goog.functions'], [], false); -goog.addDependency('functions/functions_test.js', ['goog.functionsTest'], ['goog.array', 'goog.functions', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('fx/abstractdragdrop.js', ['goog.fx.AbstractDragDrop', 'goog.fx.AbstractDragDrop.EventType', 'goog.fx.DragDropEvent', 'goog.fx.DragDropItem'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.fx.Dragger', 'goog.math.Box', 'goog.math.Coordinate', 'goog.style'], false); -goog.addDependency('fx/abstractdragdrop_test.js', ['goog.fx.AbstractDragDropTest'], ['goog.array', 'goog.dom.TagName', 'goog.events.EventType', 'goog.functions', 'goog.fx.AbstractDragDrop', 'goog.fx.DragDropItem', 'goog.math.Box', 'goog.math.Coordinate', 'goog.style', 'goog.testing.events', 'goog.testing.jsunit'], false); -goog.addDependency('fx/anim/anim.js', ['goog.fx.anim', 'goog.fx.anim.Animated'], ['goog.async.AnimationDelay', 'goog.async.Delay', 'goog.object'], false); -goog.addDependency('fx/anim/anim_test.js', ['goog.fx.animTest'], ['goog.async.AnimationDelay', 'goog.async.Delay', 'goog.events', 'goog.functions', 'goog.fx.Animation', 'goog.fx.anim', 'goog.object', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('fx/animation.js', ['goog.fx.Animation', 'goog.fx.Animation.EventType', 'goog.fx.Animation.State', 'goog.fx.AnimationEvent'], ['goog.array', 'goog.events.Event', 'goog.fx.Transition', 'goog.fx.TransitionBase', 'goog.fx.anim', 'goog.fx.anim.Animated'], false); -goog.addDependency('fx/animation_test.js', ['goog.fx.AnimationTest'], ['goog.events', 'goog.fx.Animation', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('fx/animationqueue.js', ['goog.fx.AnimationParallelQueue', 'goog.fx.AnimationQueue', 'goog.fx.AnimationSerialQueue'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.fx.Transition', 'goog.fx.TransitionBase'], false); -goog.addDependency('fx/animationqueue_test.js', ['goog.fx.AnimationQueueTest'], ['goog.events', 'goog.fx.Animation', 'goog.fx.AnimationParallelQueue', 'goog.fx.AnimationSerialQueue', 'goog.fx.Transition', 'goog.fx.anim', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('fx/css3/fx.js', ['goog.fx.css3'], ['goog.fx.css3.Transition'], false); -goog.addDependency('fx/css3/transition.js', ['goog.fx.css3.Transition'], ['goog.Timer', 'goog.asserts', 'goog.fx.TransitionBase', 'goog.style', 'goog.style.transition'], false); -goog.addDependency('fx/css3/transition_test.js', ['goog.fx.css3.TransitionTest'], ['goog.dispose', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.fx.Transition', 'goog.fx.css3.Transition', 'goog.style.transition', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('fx/cssspriteanimation.js', ['goog.fx.CssSpriteAnimation'], ['goog.fx.Animation'], false); -goog.addDependency('fx/cssspriteanimation_test.js', ['goog.fx.CssSpriteAnimationTest'], ['goog.fx.CssSpriteAnimation', 'goog.math.Box', 'goog.math.Size', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('fx/dom.js', ['goog.fx.dom', 'goog.fx.dom.BgColorTransform', 'goog.fx.dom.ColorTransform', 'goog.fx.dom.Fade', 'goog.fx.dom.FadeIn', 'goog.fx.dom.FadeInAndShow', 'goog.fx.dom.FadeOut', 'goog.fx.dom.FadeOutAndHide', 'goog.fx.dom.PredefinedEffect', 'goog.fx.dom.Resize', 'goog.fx.dom.ResizeHeight', 'goog.fx.dom.ResizeWidth', 'goog.fx.dom.Scroll', 'goog.fx.dom.Slide', 'goog.fx.dom.SlideFrom', 'goog.fx.dom.Swipe'], ['goog.color', 'goog.events', 'goog.fx.Animation', 'goog.fx.Transition', 'goog.style', 'goog.style.bidi'], false); -goog.addDependency('fx/dragdrop.js', ['goog.fx.DragDrop'], ['goog.fx.AbstractDragDrop', 'goog.fx.DragDropItem'], false); -goog.addDependency('fx/dragdropgroup.js', ['goog.fx.DragDropGroup'], ['goog.dom', 'goog.fx.AbstractDragDrop', 'goog.fx.DragDropItem'], false); -goog.addDependency('fx/dragdropgroup_test.js', ['goog.fx.DragDropGroupTest'], ['goog.events', 'goog.fx.DragDropGroup', 'goog.testing.jsunit'], false); -goog.addDependency('fx/dragger.js', ['goog.fx.DragEvent', 'goog.fx.Dragger', 'goog.fx.Dragger.EventType'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.style', 'goog.style.bidi', 'goog.userAgent'], false); -goog.addDependency('fx/dragger_test.js', ['goog.fx.DraggerTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventType', 'goog.fx.Dragger', 'goog.math.Rect', 'goog.style.bidi', 'goog.testing.StrictMock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('fx/draglistgroup.js', ['goog.fx.DragListDirection', 'goog.fx.DragListGroup', 'goog.fx.DragListGroup.EventType', 'goog.fx.DragListGroupEvent'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.fx.Dragger', 'goog.math.Coordinate', 'goog.string', 'goog.style'], false); -goog.addDependency('fx/draglistgroup_test.js', ['goog.fx.DragListGroupTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.BrowserFeature', 'goog.events.Event', 'goog.events.EventType', 'goog.fx.DragEvent', 'goog.fx.DragListDirection', 'goog.fx.DragListGroup', 'goog.fx.Dragger', 'goog.math.Coordinate', 'goog.object', 'goog.testing.events', 'goog.testing.jsunit'], false); -goog.addDependency('fx/dragscrollsupport.js', ['goog.fx.DragScrollSupport'], ['goog.Disposable', 'goog.Timer', 'goog.dom', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.math.Coordinate', 'goog.style'], false); -goog.addDependency('fx/dragscrollsupport_test.js', ['goog.fx.DragScrollSupportTest'], ['goog.fx.DragScrollSupport', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit'], false); -goog.addDependency('fx/easing.js', ['goog.fx.easing'], [], false); -goog.addDependency('fx/easing_test.js', ['goog.fx.easingTest'], ['goog.fx.easing', 'goog.testing.jsunit'], false); -goog.addDependency('fx/fx.js', ['goog.fx'], ['goog.asserts', 'goog.fx.Animation', 'goog.fx.Animation.EventType', 'goog.fx.Animation.State', 'goog.fx.AnimationEvent', 'goog.fx.Transition.EventType', 'goog.fx.easing'], false); -goog.addDependency('fx/fx_test.js', ['goog.fxTest'], ['goog.fx.Animation', 'goog.object', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('fx/transition.js', ['goog.fx.Transition', 'goog.fx.Transition.EventType'], [], false); -goog.addDependency('fx/transitionbase.js', ['goog.fx.TransitionBase', 'goog.fx.TransitionBase.State'], ['goog.events.EventTarget', 'goog.fx.Transition'], false); -goog.addDependency('graphics/abstractgraphics.js', ['goog.graphics.AbstractGraphics'], ['goog.dom', 'goog.graphics.Path', 'goog.math.Coordinate', 'goog.math.Size', 'goog.style', 'goog.ui.Component'], false); -goog.addDependency('graphics/affinetransform.js', ['goog.graphics.AffineTransform'], ['goog.math'], false); -goog.addDependency('graphics/canvaselement.js', ['goog.graphics.CanvasEllipseElement', 'goog.graphics.CanvasGroupElement', 'goog.graphics.CanvasImageElement', 'goog.graphics.CanvasPathElement', 'goog.graphics.CanvasRectElement', 'goog.graphics.CanvasTextElement'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.graphics.EllipseElement', 'goog.graphics.GroupElement', 'goog.graphics.ImageElement', 'goog.graphics.Path', 'goog.graphics.PathElement', 'goog.graphics.RectElement', 'goog.graphics.TextElement', 'goog.html.SafeHtml', 'goog.html.uncheckedconversions', 'goog.math', 'goog.string', 'goog.string.Const'], false); -goog.addDependency('graphics/canvasgraphics.js', ['goog.graphics.CanvasGraphics'], ['goog.dom.TagName', 'goog.events.EventType', 'goog.graphics.AbstractGraphics', 'goog.graphics.CanvasEllipseElement', 'goog.graphics.CanvasGroupElement', 'goog.graphics.CanvasImageElement', 'goog.graphics.CanvasPathElement', 'goog.graphics.CanvasRectElement', 'goog.graphics.CanvasTextElement', 'goog.graphics.SolidFill', 'goog.math.Size', 'goog.style'], false); -goog.addDependency('graphics/canvasgraphics_test.js', ['goog.graphics.CanvasGraphicsTest'], ['goog.dom', 'goog.graphics.CanvasGraphics', 'goog.graphics.SolidFill', 'goog.graphics.Stroke', 'goog.testing.jsunit'], false); -goog.addDependency('graphics/element.js', ['goog.graphics.Element'], ['goog.asserts', 'goog.events', 'goog.events.EventTarget', 'goog.events.Listenable', 'goog.graphics.AffineTransform', 'goog.math'], false); -goog.addDependency('graphics/ellipseelement.js', ['goog.graphics.EllipseElement'], ['goog.graphics.StrokeAndFillElement'], false); -goog.addDependency('graphics/ext/coordinates.js', ['goog.graphics.ext.coordinates'], ['goog.string'], false); -goog.addDependency('graphics/ext/element.js', ['goog.graphics.ext.Element'], ['goog.events.EventTarget', 'goog.functions', 'goog.graphics.ext.coordinates'], false); -goog.addDependency('graphics/ext/ellipse.js', ['goog.graphics.ext.Ellipse'], ['goog.graphics.ext.StrokeAndFillElement'], false); -goog.addDependency('graphics/ext/ext.js', ['goog.graphics.ext'], ['goog.graphics.ext.Ellipse', 'goog.graphics.ext.Graphics', 'goog.graphics.ext.Group', 'goog.graphics.ext.Image', 'goog.graphics.ext.Rectangle', 'goog.graphics.ext.Shape', 'goog.graphics.ext.coordinates'], false); -goog.addDependency('graphics/ext/graphics.js', ['goog.graphics.ext.Graphics'], ['goog.events', 'goog.events.EventType', 'goog.graphics', 'goog.graphics.ext.Group'], false); -goog.addDependency('graphics/ext/group.js', ['goog.graphics.ext.Group'], ['goog.array', 'goog.graphics.ext.Element'], false); -goog.addDependency('graphics/ext/image.js', ['goog.graphics.ext.Image'], ['goog.graphics.ext.Element'], false); -goog.addDependency('graphics/ext/path.js', ['goog.graphics.ext.Path'], ['goog.graphics.AffineTransform', 'goog.graphics.Path', 'goog.math.Rect'], false); -goog.addDependency('graphics/ext/rectangle.js', ['goog.graphics.ext.Rectangle'], ['goog.graphics.ext.StrokeAndFillElement'], false); -goog.addDependency('graphics/ext/shape.js', ['goog.graphics.ext.Shape'], ['goog.graphics.ext.StrokeAndFillElement'], false); -goog.addDependency('graphics/ext/strokeandfillelement.js', ['goog.graphics.ext.StrokeAndFillElement'], ['goog.graphics.ext.Element'], false); -goog.addDependency('graphics/fill.js', ['goog.graphics.Fill'], [], false); -goog.addDependency('graphics/font.js', ['goog.graphics.Font'], [], false); -goog.addDependency('graphics/graphics.js', ['goog.graphics'], ['goog.dom', 'goog.graphics.CanvasGraphics', 'goog.graphics.SvgGraphics', 'goog.graphics.VmlGraphics', 'goog.userAgent'], false); -goog.addDependency('graphics/groupelement.js', ['goog.graphics.GroupElement'], ['goog.graphics.Element'], false); -goog.addDependency('graphics/imageelement.js', ['goog.graphics.ImageElement'], ['goog.graphics.Element'], false); -goog.addDependency('graphics/lineargradient.js', ['goog.graphics.LinearGradient'], ['goog.asserts', 'goog.graphics.Fill'], false); -goog.addDependency('graphics/path.js', ['goog.graphics.Path', 'goog.graphics.Path.Segment'], ['goog.array', 'goog.math'], false); -goog.addDependency('graphics/pathelement.js', ['goog.graphics.PathElement'], ['goog.graphics.StrokeAndFillElement'], false); -goog.addDependency('graphics/paths.js', ['goog.graphics.paths'], ['goog.graphics.Path', 'goog.math.Coordinate'], false); -goog.addDependency('graphics/rectelement.js', ['goog.graphics.RectElement'], ['goog.graphics.StrokeAndFillElement'], false); -goog.addDependency('graphics/solidfill.js', ['goog.graphics.SolidFill'], ['goog.graphics.Fill'], false); -goog.addDependency('graphics/stroke.js', ['goog.graphics.Stroke'], [], false); -goog.addDependency('graphics/strokeandfillelement.js', ['goog.graphics.StrokeAndFillElement'], ['goog.graphics.Element'], false); -goog.addDependency('graphics/svgelement.js', ['goog.graphics.SvgEllipseElement', 'goog.graphics.SvgGroupElement', 'goog.graphics.SvgImageElement', 'goog.graphics.SvgPathElement', 'goog.graphics.SvgRectElement', 'goog.graphics.SvgTextElement'], ['goog.dom', 'goog.graphics.EllipseElement', 'goog.graphics.GroupElement', 'goog.graphics.ImageElement', 'goog.graphics.PathElement', 'goog.graphics.RectElement', 'goog.graphics.TextElement'], false); -goog.addDependency('graphics/svggraphics.js', ['goog.graphics.SvgGraphics'], ['goog.Timer', 'goog.dom', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.graphics.AbstractGraphics', 'goog.graphics.LinearGradient', 'goog.graphics.Path', 'goog.graphics.SolidFill', 'goog.graphics.Stroke', 'goog.graphics.SvgEllipseElement', 'goog.graphics.SvgGroupElement', 'goog.graphics.SvgImageElement', 'goog.graphics.SvgPathElement', 'goog.graphics.SvgRectElement', 'goog.graphics.SvgTextElement', 'goog.math', 'goog.math.Size', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('graphics/textelement.js', ['goog.graphics.TextElement'], ['goog.graphics.StrokeAndFillElement'], false); -goog.addDependency('graphics/vmlelement.js', ['goog.graphics.VmlEllipseElement', 'goog.graphics.VmlGroupElement', 'goog.graphics.VmlImageElement', 'goog.graphics.VmlPathElement', 'goog.graphics.VmlRectElement', 'goog.graphics.VmlTextElement'], ['goog.dom', 'goog.graphics.EllipseElement', 'goog.graphics.GroupElement', 'goog.graphics.ImageElement', 'goog.graphics.PathElement', 'goog.graphics.RectElement', 'goog.graphics.TextElement'], false); -goog.addDependency('graphics/vmlgraphics.js', ['goog.graphics.VmlGraphics'], ['goog.array', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.graphics.AbstractGraphics', 'goog.graphics.LinearGradient', 'goog.graphics.Path', 'goog.graphics.SolidFill', 'goog.graphics.VmlEllipseElement', 'goog.graphics.VmlGroupElement', 'goog.graphics.VmlImageElement', 'goog.graphics.VmlPathElement', 'goog.graphics.VmlRectElement', 'goog.graphics.VmlTextElement', 'goog.html.uncheckedconversions', 'goog.math', 'goog.math.Size', 'goog.string', 'goog.string.Const', 'goog.style'], false); -goog.addDependency('history/event.js', ['goog.history.Event'], ['goog.events.Event', 'goog.history.EventType'], false); -goog.addDependency('history/eventtype.js', ['goog.history.EventType'], [], false); -goog.addDependency('history/history.js', ['goog.History', 'goog.History.Event', 'goog.History.EventType'], ['goog.Timer', 'goog.asserts', 'goog.dom', 'goog.dom.InputType', 'goog.dom.safe', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.history.Event', 'goog.history.EventType', 'goog.html.SafeHtml', 'goog.html.TrustedResourceUrl', 'goog.html.legacyconversions', 'goog.labs.userAgent.device', 'goog.memoize', 'goog.string', 'goog.string.Const', 'goog.userAgent'], false); -goog.addDependency('history/history_test.js', ['goog.HistoryTest'], ['goog.History', 'goog.dispose', 'goog.dom', 'goog.html.TrustedResourceUrl', 'goog.string.Const', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('history/html5history.js', ['goog.history.Html5History', 'goog.history.Html5History.TokenTransformer'], ['goog.asserts', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.history.Event'], false); -goog.addDependency('history/html5history_test.js', ['goog.history.Html5HistoryTest'], ['goog.Timer', 'goog.events', 'goog.events.EventType', 'goog.history.EventType', 'goog.history.Html5History', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.testing.recordFunction'], false); -goog.addDependency('html/flash.js', ['goog.html.flash'], ['goog.asserts', 'goog.html.SafeHtml'], false); -goog.addDependency('html/flash_test.js', ['goog.html.flashTest'], ['goog.html.SafeHtml', 'goog.html.TrustedResourceUrl', 'goog.html.flash', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/legacyconversions.js', ['goog.html.legacyconversions'], ['goog.html.SafeHtml', 'goog.html.SafeStyle', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl'], false); -goog.addDependency('html/legacyconversions_test.js', ['goog.html.legacyconversionsTest'], ['goog.html.SafeHtml', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.html.legacyconversions', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('html/safehtml.js', ['goog.html.SafeHtml'], ['goog.array', 'goog.asserts', 'goog.dom.TagName', 'goog.dom.tags', 'goog.html.SafeStyle', 'goog.html.SafeStyleSheet', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.DirectionalString', 'goog.object', 'goog.string', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/safehtml_test.js', ['goog.html.safeHtmlTest'], ['goog.html.SafeHtml', 'goog.html.SafeStyle', 'goog.html.SafeStyleSheet', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.html.testing', 'goog.i18n.bidi.Dir', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/safescript.js', ['goog.html.SafeScript'], ['goog.asserts', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/safescript_test.js', ['goog.html.safeScriptTest'], ['goog.html.SafeScript', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/safestyle.js', ['goog.html.SafeStyle'], ['goog.array', 'goog.asserts', 'goog.string', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/safestyle_test.js', ['goog.html.safeStyleTest'], ['goog.html.SafeStyle', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/safestylesheet.js', ['goog.html.SafeStyleSheet'], ['goog.array', 'goog.asserts', 'goog.string', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/safestylesheet_test.js', ['goog.html.safeStyleSheetTest'], ['goog.html.SafeStyleSheet', 'goog.string', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/safeurl.js', ['goog.html.SafeUrl'], ['goog.asserts', 'goog.fs.url', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.DirectionalString', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/safeurl_test.js', ['goog.html.safeUrlTest'], ['goog.html.SafeUrl', 'goog.i18n.bidi.Dir', 'goog.string.Const', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('html/silverlight.js', ['goog.html.silverlight'], ['goog.html.SafeHtml', 'goog.html.TrustedResourceUrl', 'goog.html.flash', 'goog.string.Const'], false); -goog.addDependency('html/silverlight_test.js', ['goog.html.silverlightTest'], ['goog.html.SafeHtml', 'goog.html.TrustedResourceUrl', 'goog.html.silverlight', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/testing.js', ['goog.html.testing'], ['goog.html.SafeHtml', 'goog.html.SafeScript', 'goog.html.SafeStyle', 'goog.html.SafeStyleSheet', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl'], false); -goog.addDependency('html/trustedresourceurl.js', ['goog.html.TrustedResourceUrl'], ['goog.asserts', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.DirectionalString', 'goog.string.Const', 'goog.string.TypedString'], false); -goog.addDependency('html/trustedresourceurl_test.js', ['goog.html.trustedResourceUrlTest'], ['goog.html.TrustedResourceUrl', 'goog.i18n.bidi.Dir', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/uncheckedconversions.js', ['goog.html.uncheckedconversions'], ['goog.asserts', 'goog.html.SafeHtml', 'goog.html.SafeScript', 'goog.html.SafeStyle', 'goog.html.SafeStyleSheet', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.string', 'goog.string.Const'], false); -goog.addDependency('html/uncheckedconversions_test.js', ['goog.html.uncheckedconversionsTest'], ['goog.html.SafeHtml', 'goog.html.SafeScript', 'goog.html.SafeStyle', 'goog.html.SafeStyleSheet', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.html.uncheckedconversions', 'goog.i18n.bidi.Dir', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('html/utils.js', ['goog.html.utils'], ['goog.string'], false); -goog.addDependency('html/utils_test.js', ['goog.html.UtilsTest'], ['goog.array', 'goog.dom.TagName', 'goog.html.utils', 'goog.object', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/bidi.js', ['goog.i18n.bidi', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.DirectionalString', 'goog.i18n.bidi.Format'], [], false); -goog.addDependency('i18n/bidi_test.js', ['goog.i18n.bidiTest'], ['goog.i18n.bidi', 'goog.i18n.bidi.Dir', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/bidiformatter.js', ['goog.i18n.BidiFormatter'], ['goog.html.SafeHtml', 'goog.html.legacyconversions', 'goog.i18n.bidi', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.Format'], false); -goog.addDependency('i18n/bidiformatter_test.js', ['goog.i18n.BidiFormatterTest'], ['goog.html.SafeHtml', 'goog.i18n.BidiFormatter', 'goog.i18n.bidi.Dir', 'goog.i18n.bidi.Format', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/charlistdecompressor.js', ['goog.i18n.CharListDecompressor'], ['goog.array', 'goog.i18n.uChar'], false); -goog.addDependency('i18n/charlistdecompressor_test.js', ['goog.i18n.CharListDecompressorTest'], ['goog.i18n.CharListDecompressor', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/charpickerdata.js', ['goog.i18n.CharPickerData'], [], false); -goog.addDependency('i18n/collation.js', ['goog.i18n.collation'], [], false); -goog.addDependency('i18n/collation_test.js', ['goog.i18n.collationTest'], ['goog.i18n.collation', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('i18n/compactnumberformatsymbols.js', ['goog.i18n.CompactNumberFormatSymbols', 'goog.i18n.CompactNumberFormatSymbols_af', 'goog.i18n.CompactNumberFormatSymbols_af_ZA', 'goog.i18n.CompactNumberFormatSymbols_am', 'goog.i18n.CompactNumberFormatSymbols_am_ET', 'goog.i18n.CompactNumberFormatSymbols_ar', 'goog.i18n.CompactNumberFormatSymbols_ar_001', 'goog.i18n.CompactNumberFormatSymbols_ar_EG', 'goog.i18n.CompactNumberFormatSymbols_az', 'goog.i18n.CompactNumberFormatSymbols_az_Latn', 'goog.i18n.CompactNumberFormatSymbols_az_Latn_AZ', 'goog.i18n.CompactNumberFormatSymbols_be', 'goog.i18n.CompactNumberFormatSymbols_be_BY', 'goog.i18n.CompactNumberFormatSymbols_bg', 'goog.i18n.CompactNumberFormatSymbols_bg_BG', 'goog.i18n.CompactNumberFormatSymbols_bn', 'goog.i18n.CompactNumberFormatSymbols_bn_BD', 'goog.i18n.CompactNumberFormatSymbols_br', 'goog.i18n.CompactNumberFormatSymbols_br_FR', 'goog.i18n.CompactNumberFormatSymbols_bs', 'goog.i18n.CompactNumberFormatSymbols_bs_Latn', 'goog.i18n.CompactNumberFormatSymbols_bs_Latn_BA', 'goog.i18n.CompactNumberFormatSymbols_ca', 'goog.i18n.CompactNumberFormatSymbols_ca_AD', 'goog.i18n.CompactNumberFormatSymbols_ca_ES', 'goog.i18n.CompactNumberFormatSymbols_ca_ES_VALENCIA', 'goog.i18n.CompactNumberFormatSymbols_ca_FR', 'goog.i18n.CompactNumberFormatSymbols_ca_IT', 'goog.i18n.CompactNumberFormatSymbols_chr', 'goog.i18n.CompactNumberFormatSymbols_chr_US', 'goog.i18n.CompactNumberFormatSymbols_cs', 'goog.i18n.CompactNumberFormatSymbols_cs_CZ', 'goog.i18n.CompactNumberFormatSymbols_cy', 'goog.i18n.CompactNumberFormatSymbols_cy_GB', 'goog.i18n.CompactNumberFormatSymbols_da', 'goog.i18n.CompactNumberFormatSymbols_da_DK', 'goog.i18n.CompactNumberFormatSymbols_da_GL', 'goog.i18n.CompactNumberFormatSymbols_de', 'goog.i18n.CompactNumberFormatSymbols_de_AT', 'goog.i18n.CompactNumberFormatSymbols_de_BE', 'goog.i18n.CompactNumberFormatSymbols_de_CH', 'goog.i18n.CompactNumberFormatSymbols_de_DE', 'goog.i18n.CompactNumberFormatSymbols_de_LU', 'goog.i18n.CompactNumberFormatSymbols_el', 'goog.i18n.CompactNumberFormatSymbols_el_CY', 'goog.i18n.CompactNumberFormatSymbols_el_GR', 'goog.i18n.CompactNumberFormatSymbols_en', 'goog.i18n.CompactNumberFormatSymbols_en_001', 'goog.i18n.CompactNumberFormatSymbols_en_AS', 'goog.i18n.CompactNumberFormatSymbols_en_AU', 'goog.i18n.CompactNumberFormatSymbols_en_CA', 'goog.i18n.CompactNumberFormatSymbols_en_DG', 'goog.i18n.CompactNumberFormatSymbols_en_FM', 'goog.i18n.CompactNumberFormatSymbols_en_GB', 'goog.i18n.CompactNumberFormatSymbols_en_GU', 'goog.i18n.CompactNumberFormatSymbols_en_IE', 'goog.i18n.CompactNumberFormatSymbols_en_IN', 'goog.i18n.CompactNumberFormatSymbols_en_IO', 'goog.i18n.CompactNumberFormatSymbols_en_MH', 'goog.i18n.CompactNumberFormatSymbols_en_MP', 'goog.i18n.CompactNumberFormatSymbols_en_PR', 'goog.i18n.CompactNumberFormatSymbols_en_PW', 'goog.i18n.CompactNumberFormatSymbols_en_SG', 'goog.i18n.CompactNumberFormatSymbols_en_TC', 'goog.i18n.CompactNumberFormatSymbols_en_UM', 'goog.i18n.CompactNumberFormatSymbols_en_US', 'goog.i18n.CompactNumberFormatSymbols_en_VG', 'goog.i18n.CompactNumberFormatSymbols_en_VI', 'goog.i18n.CompactNumberFormatSymbols_en_ZA', 'goog.i18n.CompactNumberFormatSymbols_en_ZW', 'goog.i18n.CompactNumberFormatSymbols_es', 'goog.i18n.CompactNumberFormatSymbols_es_419', 'goog.i18n.CompactNumberFormatSymbols_es_EA', 'goog.i18n.CompactNumberFormatSymbols_es_ES', 'goog.i18n.CompactNumberFormatSymbols_es_IC', 'goog.i18n.CompactNumberFormatSymbols_es_MX', 'goog.i18n.CompactNumberFormatSymbols_es_US', 'goog.i18n.CompactNumberFormatSymbols_et', 'goog.i18n.CompactNumberFormatSymbols_et_EE', 'goog.i18n.CompactNumberFormatSymbols_eu', 'goog.i18n.CompactNumberFormatSymbols_eu_ES', 'goog.i18n.CompactNumberFormatSymbols_fa', 'goog.i18n.CompactNumberFormatSymbols_fa_IR', 'goog.i18n.CompactNumberFormatSymbols_fi', 'goog.i18n.CompactNumberFormatSymbols_fi_FI', 'goog.i18n.CompactNumberFormatSymbols_fil', 'goog.i18n.CompactNumberFormatSymbols_fil_PH', 'goog.i18n.CompactNumberFormatSymbols_fr', 'goog.i18n.CompactNumberFormatSymbols_fr_BL', 'goog.i18n.CompactNumberFormatSymbols_fr_CA', 'goog.i18n.CompactNumberFormatSymbols_fr_FR', 'goog.i18n.CompactNumberFormatSymbols_fr_GF', 'goog.i18n.CompactNumberFormatSymbols_fr_GP', 'goog.i18n.CompactNumberFormatSymbols_fr_MC', 'goog.i18n.CompactNumberFormatSymbols_fr_MF', 'goog.i18n.CompactNumberFormatSymbols_fr_MQ', 'goog.i18n.CompactNumberFormatSymbols_fr_PM', 'goog.i18n.CompactNumberFormatSymbols_fr_RE', 'goog.i18n.CompactNumberFormatSymbols_fr_YT', 'goog.i18n.CompactNumberFormatSymbols_ga', 'goog.i18n.CompactNumberFormatSymbols_ga_IE', 'goog.i18n.CompactNumberFormatSymbols_gl', 'goog.i18n.CompactNumberFormatSymbols_gl_ES', 'goog.i18n.CompactNumberFormatSymbols_gsw', 'goog.i18n.CompactNumberFormatSymbols_gsw_CH', 'goog.i18n.CompactNumberFormatSymbols_gsw_LI', 'goog.i18n.CompactNumberFormatSymbols_gu', 'goog.i18n.CompactNumberFormatSymbols_gu_IN', 'goog.i18n.CompactNumberFormatSymbols_haw', 'goog.i18n.CompactNumberFormatSymbols_haw_US', 'goog.i18n.CompactNumberFormatSymbols_he', 'goog.i18n.CompactNumberFormatSymbols_he_IL', 'goog.i18n.CompactNumberFormatSymbols_hi', 'goog.i18n.CompactNumberFormatSymbols_hi_IN', 'goog.i18n.CompactNumberFormatSymbols_hr', 'goog.i18n.CompactNumberFormatSymbols_hr_HR', 'goog.i18n.CompactNumberFormatSymbols_hu', 'goog.i18n.CompactNumberFormatSymbols_hu_HU', 'goog.i18n.CompactNumberFormatSymbols_hy', 'goog.i18n.CompactNumberFormatSymbols_hy_AM', 'goog.i18n.CompactNumberFormatSymbols_id', 'goog.i18n.CompactNumberFormatSymbols_id_ID', 'goog.i18n.CompactNumberFormatSymbols_in', 'goog.i18n.CompactNumberFormatSymbols_is', 'goog.i18n.CompactNumberFormatSymbols_is_IS', 'goog.i18n.CompactNumberFormatSymbols_it', 'goog.i18n.CompactNumberFormatSymbols_it_IT', 'goog.i18n.CompactNumberFormatSymbols_it_SM', 'goog.i18n.CompactNumberFormatSymbols_iw', 'goog.i18n.CompactNumberFormatSymbols_ja', 'goog.i18n.CompactNumberFormatSymbols_ja_JP', 'goog.i18n.CompactNumberFormatSymbols_ka', 'goog.i18n.CompactNumberFormatSymbols_ka_GE', 'goog.i18n.CompactNumberFormatSymbols_kk', 'goog.i18n.CompactNumberFormatSymbols_kk_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_kk_Cyrl_KZ', 'goog.i18n.CompactNumberFormatSymbols_km', 'goog.i18n.CompactNumberFormatSymbols_km_KH', 'goog.i18n.CompactNumberFormatSymbols_kn', 'goog.i18n.CompactNumberFormatSymbols_kn_IN', 'goog.i18n.CompactNumberFormatSymbols_ko', 'goog.i18n.CompactNumberFormatSymbols_ko_KR', 'goog.i18n.CompactNumberFormatSymbols_ky', 'goog.i18n.CompactNumberFormatSymbols_ky_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_ky_Cyrl_KG', 'goog.i18n.CompactNumberFormatSymbols_ln', 'goog.i18n.CompactNumberFormatSymbols_ln_CD', 'goog.i18n.CompactNumberFormatSymbols_lo', 'goog.i18n.CompactNumberFormatSymbols_lo_LA', 'goog.i18n.CompactNumberFormatSymbols_lt', 'goog.i18n.CompactNumberFormatSymbols_lt_LT', 'goog.i18n.CompactNumberFormatSymbols_lv', 'goog.i18n.CompactNumberFormatSymbols_lv_LV', 'goog.i18n.CompactNumberFormatSymbols_mk', 'goog.i18n.CompactNumberFormatSymbols_mk_MK', 'goog.i18n.CompactNumberFormatSymbols_ml', 'goog.i18n.CompactNumberFormatSymbols_ml_IN', 'goog.i18n.CompactNumberFormatSymbols_mn', 'goog.i18n.CompactNumberFormatSymbols_mn_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_mn_Cyrl_MN', 'goog.i18n.CompactNumberFormatSymbols_mr', 'goog.i18n.CompactNumberFormatSymbols_mr_IN', 'goog.i18n.CompactNumberFormatSymbols_ms', 'goog.i18n.CompactNumberFormatSymbols_ms_Latn', 'goog.i18n.CompactNumberFormatSymbols_ms_Latn_MY', 'goog.i18n.CompactNumberFormatSymbols_mt', 'goog.i18n.CompactNumberFormatSymbols_mt_MT', 'goog.i18n.CompactNumberFormatSymbols_my', 'goog.i18n.CompactNumberFormatSymbols_my_MM', 'goog.i18n.CompactNumberFormatSymbols_nb', 'goog.i18n.CompactNumberFormatSymbols_nb_NO', 'goog.i18n.CompactNumberFormatSymbols_nb_SJ', 'goog.i18n.CompactNumberFormatSymbols_ne', 'goog.i18n.CompactNumberFormatSymbols_ne_NP', 'goog.i18n.CompactNumberFormatSymbols_nl', 'goog.i18n.CompactNumberFormatSymbols_nl_NL', 'goog.i18n.CompactNumberFormatSymbols_no', 'goog.i18n.CompactNumberFormatSymbols_no_NO', 'goog.i18n.CompactNumberFormatSymbols_or', 'goog.i18n.CompactNumberFormatSymbols_or_IN', 'goog.i18n.CompactNumberFormatSymbols_pa', 'goog.i18n.CompactNumberFormatSymbols_pa_Guru', 'goog.i18n.CompactNumberFormatSymbols_pa_Guru_IN', 'goog.i18n.CompactNumberFormatSymbols_pl', 'goog.i18n.CompactNumberFormatSymbols_pl_PL', 'goog.i18n.CompactNumberFormatSymbols_pt', 'goog.i18n.CompactNumberFormatSymbols_pt_BR', 'goog.i18n.CompactNumberFormatSymbols_pt_PT', 'goog.i18n.CompactNumberFormatSymbols_ro', 'goog.i18n.CompactNumberFormatSymbols_ro_RO', 'goog.i18n.CompactNumberFormatSymbols_ru', 'goog.i18n.CompactNumberFormatSymbols_ru_RU', 'goog.i18n.CompactNumberFormatSymbols_si', 'goog.i18n.CompactNumberFormatSymbols_si_LK', 'goog.i18n.CompactNumberFormatSymbols_sk', 'goog.i18n.CompactNumberFormatSymbols_sk_SK', 'goog.i18n.CompactNumberFormatSymbols_sl', 'goog.i18n.CompactNumberFormatSymbols_sl_SI', 'goog.i18n.CompactNumberFormatSymbols_sq', 'goog.i18n.CompactNumberFormatSymbols_sq_AL', 'goog.i18n.CompactNumberFormatSymbols_sr', 'goog.i18n.CompactNumberFormatSymbols_sr_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_RS', 'goog.i18n.CompactNumberFormatSymbols_sr_Latn', 'goog.i18n.CompactNumberFormatSymbols_sr_Latn_RS', 'goog.i18n.CompactNumberFormatSymbols_sv', 'goog.i18n.CompactNumberFormatSymbols_sv_SE', 'goog.i18n.CompactNumberFormatSymbols_sw', 'goog.i18n.CompactNumberFormatSymbols_sw_TZ', 'goog.i18n.CompactNumberFormatSymbols_ta', 'goog.i18n.CompactNumberFormatSymbols_ta_IN', 'goog.i18n.CompactNumberFormatSymbols_te', 'goog.i18n.CompactNumberFormatSymbols_te_IN', 'goog.i18n.CompactNumberFormatSymbols_th', 'goog.i18n.CompactNumberFormatSymbols_th_TH', 'goog.i18n.CompactNumberFormatSymbols_tl', 'goog.i18n.CompactNumberFormatSymbols_tr', 'goog.i18n.CompactNumberFormatSymbols_tr_TR', 'goog.i18n.CompactNumberFormatSymbols_uk', 'goog.i18n.CompactNumberFormatSymbols_uk_UA', 'goog.i18n.CompactNumberFormatSymbols_ur', 'goog.i18n.CompactNumberFormatSymbols_ur_PK', 'goog.i18n.CompactNumberFormatSymbols_uz', 'goog.i18n.CompactNumberFormatSymbols_uz_Latn', 'goog.i18n.CompactNumberFormatSymbols_uz_Latn_UZ', 'goog.i18n.CompactNumberFormatSymbols_vi', 'goog.i18n.CompactNumberFormatSymbols_vi_VN', 'goog.i18n.CompactNumberFormatSymbols_zh', 'goog.i18n.CompactNumberFormatSymbols_zh_CN', 'goog.i18n.CompactNumberFormatSymbols_zh_HK', 'goog.i18n.CompactNumberFormatSymbols_zh_Hans', 'goog.i18n.CompactNumberFormatSymbols_zh_Hans_CN', 'goog.i18n.CompactNumberFormatSymbols_zh_TW', 'goog.i18n.CompactNumberFormatSymbols_zu', 'goog.i18n.CompactNumberFormatSymbols_zu_ZA'], [], false); -goog.addDependency('i18n/compactnumberformatsymbols_ext.js', ['goog.i18n.CompactNumberFormatSymbolsExt', 'goog.i18n.CompactNumberFormatSymbols_af_NA', 'goog.i18n.CompactNumberFormatSymbols_agq', 'goog.i18n.CompactNumberFormatSymbols_agq_CM', 'goog.i18n.CompactNumberFormatSymbols_ak', 'goog.i18n.CompactNumberFormatSymbols_ak_GH', 'goog.i18n.CompactNumberFormatSymbols_ar_AE', 'goog.i18n.CompactNumberFormatSymbols_ar_BH', 'goog.i18n.CompactNumberFormatSymbols_ar_DJ', 'goog.i18n.CompactNumberFormatSymbols_ar_DZ', 'goog.i18n.CompactNumberFormatSymbols_ar_EH', 'goog.i18n.CompactNumberFormatSymbols_ar_ER', 'goog.i18n.CompactNumberFormatSymbols_ar_IL', 'goog.i18n.CompactNumberFormatSymbols_ar_IQ', 'goog.i18n.CompactNumberFormatSymbols_ar_JO', 'goog.i18n.CompactNumberFormatSymbols_ar_KM', 'goog.i18n.CompactNumberFormatSymbols_ar_KW', 'goog.i18n.CompactNumberFormatSymbols_ar_LB', 'goog.i18n.CompactNumberFormatSymbols_ar_LY', 'goog.i18n.CompactNumberFormatSymbols_ar_MA', 'goog.i18n.CompactNumberFormatSymbols_ar_MR', 'goog.i18n.CompactNumberFormatSymbols_ar_OM', 'goog.i18n.CompactNumberFormatSymbols_ar_PS', 'goog.i18n.CompactNumberFormatSymbols_ar_QA', 'goog.i18n.CompactNumberFormatSymbols_ar_SA', 'goog.i18n.CompactNumberFormatSymbols_ar_SD', 'goog.i18n.CompactNumberFormatSymbols_ar_SO', 'goog.i18n.CompactNumberFormatSymbols_ar_SS', 'goog.i18n.CompactNumberFormatSymbols_ar_SY', 'goog.i18n.CompactNumberFormatSymbols_ar_TD', 'goog.i18n.CompactNumberFormatSymbols_ar_TN', 'goog.i18n.CompactNumberFormatSymbols_ar_YE', 'goog.i18n.CompactNumberFormatSymbols_as', 'goog.i18n.CompactNumberFormatSymbols_as_IN', 'goog.i18n.CompactNumberFormatSymbols_asa', 'goog.i18n.CompactNumberFormatSymbols_asa_TZ', 'goog.i18n.CompactNumberFormatSymbols_ast', 'goog.i18n.CompactNumberFormatSymbols_ast_ES', 'goog.i18n.CompactNumberFormatSymbols_az_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_az_Cyrl_AZ', 'goog.i18n.CompactNumberFormatSymbols_bas', 'goog.i18n.CompactNumberFormatSymbols_bas_CM', 'goog.i18n.CompactNumberFormatSymbols_bem', 'goog.i18n.CompactNumberFormatSymbols_bem_ZM', 'goog.i18n.CompactNumberFormatSymbols_bez', 'goog.i18n.CompactNumberFormatSymbols_bez_TZ', 'goog.i18n.CompactNumberFormatSymbols_bm', 'goog.i18n.CompactNumberFormatSymbols_bm_Latn', 'goog.i18n.CompactNumberFormatSymbols_bm_Latn_ML', 'goog.i18n.CompactNumberFormatSymbols_bn_IN', 'goog.i18n.CompactNumberFormatSymbols_bo', 'goog.i18n.CompactNumberFormatSymbols_bo_CN', 'goog.i18n.CompactNumberFormatSymbols_bo_IN', 'goog.i18n.CompactNumberFormatSymbols_brx', 'goog.i18n.CompactNumberFormatSymbols_brx_IN', 'goog.i18n.CompactNumberFormatSymbols_bs_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_bs_Cyrl_BA', 'goog.i18n.CompactNumberFormatSymbols_cgg', 'goog.i18n.CompactNumberFormatSymbols_cgg_UG', 'goog.i18n.CompactNumberFormatSymbols_ckb', 'goog.i18n.CompactNumberFormatSymbols_ckb_Arab', 'goog.i18n.CompactNumberFormatSymbols_ckb_Arab_IQ', 'goog.i18n.CompactNumberFormatSymbols_ckb_Arab_IR', 'goog.i18n.CompactNumberFormatSymbols_ckb_IQ', 'goog.i18n.CompactNumberFormatSymbols_ckb_IR', 'goog.i18n.CompactNumberFormatSymbols_ckb_Latn', 'goog.i18n.CompactNumberFormatSymbols_ckb_Latn_IQ', 'goog.i18n.CompactNumberFormatSymbols_dav', 'goog.i18n.CompactNumberFormatSymbols_dav_KE', 'goog.i18n.CompactNumberFormatSymbols_de_LI', 'goog.i18n.CompactNumberFormatSymbols_dje', 'goog.i18n.CompactNumberFormatSymbols_dje_NE', 'goog.i18n.CompactNumberFormatSymbols_dsb', 'goog.i18n.CompactNumberFormatSymbols_dsb_DE', 'goog.i18n.CompactNumberFormatSymbols_dua', 'goog.i18n.CompactNumberFormatSymbols_dua_CM', 'goog.i18n.CompactNumberFormatSymbols_dyo', 'goog.i18n.CompactNumberFormatSymbols_dyo_SN', 'goog.i18n.CompactNumberFormatSymbols_dz', 'goog.i18n.CompactNumberFormatSymbols_dz_BT', 'goog.i18n.CompactNumberFormatSymbols_ebu', 'goog.i18n.CompactNumberFormatSymbols_ebu_KE', 'goog.i18n.CompactNumberFormatSymbols_ee', 'goog.i18n.CompactNumberFormatSymbols_ee_GH', 'goog.i18n.CompactNumberFormatSymbols_ee_TG', 'goog.i18n.CompactNumberFormatSymbols_en_150', 'goog.i18n.CompactNumberFormatSymbols_en_AG', 'goog.i18n.CompactNumberFormatSymbols_en_AI', 'goog.i18n.CompactNumberFormatSymbols_en_BB', 'goog.i18n.CompactNumberFormatSymbols_en_BE', 'goog.i18n.CompactNumberFormatSymbols_en_BM', 'goog.i18n.CompactNumberFormatSymbols_en_BS', 'goog.i18n.CompactNumberFormatSymbols_en_BW', 'goog.i18n.CompactNumberFormatSymbols_en_BZ', 'goog.i18n.CompactNumberFormatSymbols_en_CC', 'goog.i18n.CompactNumberFormatSymbols_en_CK', 'goog.i18n.CompactNumberFormatSymbols_en_CM', 'goog.i18n.CompactNumberFormatSymbols_en_CX', 'goog.i18n.CompactNumberFormatSymbols_en_DM', 'goog.i18n.CompactNumberFormatSymbols_en_ER', 'goog.i18n.CompactNumberFormatSymbols_en_FJ', 'goog.i18n.CompactNumberFormatSymbols_en_FK', 'goog.i18n.CompactNumberFormatSymbols_en_GD', 'goog.i18n.CompactNumberFormatSymbols_en_GG', 'goog.i18n.CompactNumberFormatSymbols_en_GH', 'goog.i18n.CompactNumberFormatSymbols_en_GI', 'goog.i18n.CompactNumberFormatSymbols_en_GM', 'goog.i18n.CompactNumberFormatSymbols_en_GY', 'goog.i18n.CompactNumberFormatSymbols_en_HK', 'goog.i18n.CompactNumberFormatSymbols_en_IM', 'goog.i18n.CompactNumberFormatSymbols_en_JE', 'goog.i18n.CompactNumberFormatSymbols_en_JM', 'goog.i18n.CompactNumberFormatSymbols_en_KE', 'goog.i18n.CompactNumberFormatSymbols_en_KI', 'goog.i18n.CompactNumberFormatSymbols_en_KN', 'goog.i18n.CompactNumberFormatSymbols_en_KY', 'goog.i18n.CompactNumberFormatSymbols_en_LC', 'goog.i18n.CompactNumberFormatSymbols_en_LR', 'goog.i18n.CompactNumberFormatSymbols_en_LS', 'goog.i18n.CompactNumberFormatSymbols_en_MG', 'goog.i18n.CompactNumberFormatSymbols_en_MO', 'goog.i18n.CompactNumberFormatSymbols_en_MS', 'goog.i18n.CompactNumberFormatSymbols_en_MT', 'goog.i18n.CompactNumberFormatSymbols_en_MU', 'goog.i18n.CompactNumberFormatSymbols_en_MW', 'goog.i18n.CompactNumberFormatSymbols_en_MY', 'goog.i18n.CompactNumberFormatSymbols_en_NA', 'goog.i18n.CompactNumberFormatSymbols_en_NF', 'goog.i18n.CompactNumberFormatSymbols_en_NG', 'goog.i18n.CompactNumberFormatSymbols_en_NR', 'goog.i18n.CompactNumberFormatSymbols_en_NU', 'goog.i18n.CompactNumberFormatSymbols_en_NZ', 'goog.i18n.CompactNumberFormatSymbols_en_PG', 'goog.i18n.CompactNumberFormatSymbols_en_PH', 'goog.i18n.CompactNumberFormatSymbols_en_PK', 'goog.i18n.CompactNumberFormatSymbols_en_PN', 'goog.i18n.CompactNumberFormatSymbols_en_RW', 'goog.i18n.CompactNumberFormatSymbols_en_SB', 'goog.i18n.CompactNumberFormatSymbols_en_SC', 'goog.i18n.CompactNumberFormatSymbols_en_SD', 'goog.i18n.CompactNumberFormatSymbols_en_SH', 'goog.i18n.CompactNumberFormatSymbols_en_SL', 'goog.i18n.CompactNumberFormatSymbols_en_SS', 'goog.i18n.CompactNumberFormatSymbols_en_SX', 'goog.i18n.CompactNumberFormatSymbols_en_SZ', 'goog.i18n.CompactNumberFormatSymbols_en_TK', 'goog.i18n.CompactNumberFormatSymbols_en_TO', 'goog.i18n.CompactNumberFormatSymbols_en_TT', 'goog.i18n.CompactNumberFormatSymbols_en_TV', 'goog.i18n.CompactNumberFormatSymbols_en_TZ', 'goog.i18n.CompactNumberFormatSymbols_en_UG', 'goog.i18n.CompactNumberFormatSymbols_en_VC', 'goog.i18n.CompactNumberFormatSymbols_en_VU', 'goog.i18n.CompactNumberFormatSymbols_en_WS', 'goog.i18n.CompactNumberFormatSymbols_en_ZM', 'goog.i18n.CompactNumberFormatSymbols_eo', 'goog.i18n.CompactNumberFormatSymbols_eo_001', 'goog.i18n.CompactNumberFormatSymbols_es_AR', 'goog.i18n.CompactNumberFormatSymbols_es_BO', 'goog.i18n.CompactNumberFormatSymbols_es_CL', 'goog.i18n.CompactNumberFormatSymbols_es_CO', 'goog.i18n.CompactNumberFormatSymbols_es_CR', 'goog.i18n.CompactNumberFormatSymbols_es_CU', 'goog.i18n.CompactNumberFormatSymbols_es_DO', 'goog.i18n.CompactNumberFormatSymbols_es_EC', 'goog.i18n.CompactNumberFormatSymbols_es_GQ', 'goog.i18n.CompactNumberFormatSymbols_es_GT', 'goog.i18n.CompactNumberFormatSymbols_es_HN', 'goog.i18n.CompactNumberFormatSymbols_es_NI', 'goog.i18n.CompactNumberFormatSymbols_es_PA', 'goog.i18n.CompactNumberFormatSymbols_es_PE', 'goog.i18n.CompactNumberFormatSymbols_es_PH', 'goog.i18n.CompactNumberFormatSymbols_es_PR', 'goog.i18n.CompactNumberFormatSymbols_es_PY', 'goog.i18n.CompactNumberFormatSymbols_es_SV', 'goog.i18n.CompactNumberFormatSymbols_es_UY', 'goog.i18n.CompactNumberFormatSymbols_es_VE', 'goog.i18n.CompactNumberFormatSymbols_ewo', 'goog.i18n.CompactNumberFormatSymbols_ewo_CM', 'goog.i18n.CompactNumberFormatSymbols_fa_AF', 'goog.i18n.CompactNumberFormatSymbols_ff', 'goog.i18n.CompactNumberFormatSymbols_ff_CM', 'goog.i18n.CompactNumberFormatSymbols_ff_GN', 'goog.i18n.CompactNumberFormatSymbols_ff_MR', 'goog.i18n.CompactNumberFormatSymbols_ff_SN', 'goog.i18n.CompactNumberFormatSymbols_fo', 'goog.i18n.CompactNumberFormatSymbols_fo_FO', 'goog.i18n.CompactNumberFormatSymbols_fr_BE', 'goog.i18n.CompactNumberFormatSymbols_fr_BF', 'goog.i18n.CompactNumberFormatSymbols_fr_BI', 'goog.i18n.CompactNumberFormatSymbols_fr_BJ', 'goog.i18n.CompactNumberFormatSymbols_fr_CD', 'goog.i18n.CompactNumberFormatSymbols_fr_CF', 'goog.i18n.CompactNumberFormatSymbols_fr_CG', 'goog.i18n.CompactNumberFormatSymbols_fr_CH', 'goog.i18n.CompactNumberFormatSymbols_fr_CI', 'goog.i18n.CompactNumberFormatSymbols_fr_CM', 'goog.i18n.CompactNumberFormatSymbols_fr_DJ', 'goog.i18n.CompactNumberFormatSymbols_fr_DZ', 'goog.i18n.CompactNumberFormatSymbols_fr_GA', 'goog.i18n.CompactNumberFormatSymbols_fr_GN', 'goog.i18n.CompactNumberFormatSymbols_fr_GQ', 'goog.i18n.CompactNumberFormatSymbols_fr_HT', 'goog.i18n.CompactNumberFormatSymbols_fr_KM', 'goog.i18n.CompactNumberFormatSymbols_fr_LU', 'goog.i18n.CompactNumberFormatSymbols_fr_MA', 'goog.i18n.CompactNumberFormatSymbols_fr_MG', 'goog.i18n.CompactNumberFormatSymbols_fr_ML', 'goog.i18n.CompactNumberFormatSymbols_fr_MR', 'goog.i18n.CompactNumberFormatSymbols_fr_MU', 'goog.i18n.CompactNumberFormatSymbols_fr_NC', 'goog.i18n.CompactNumberFormatSymbols_fr_NE', 'goog.i18n.CompactNumberFormatSymbols_fr_PF', 'goog.i18n.CompactNumberFormatSymbols_fr_RW', 'goog.i18n.CompactNumberFormatSymbols_fr_SC', 'goog.i18n.CompactNumberFormatSymbols_fr_SN', 'goog.i18n.CompactNumberFormatSymbols_fr_SY', 'goog.i18n.CompactNumberFormatSymbols_fr_TD', 'goog.i18n.CompactNumberFormatSymbols_fr_TG', 'goog.i18n.CompactNumberFormatSymbols_fr_TN', 'goog.i18n.CompactNumberFormatSymbols_fr_VU', 'goog.i18n.CompactNumberFormatSymbols_fr_WF', 'goog.i18n.CompactNumberFormatSymbols_fur', 'goog.i18n.CompactNumberFormatSymbols_fur_IT', 'goog.i18n.CompactNumberFormatSymbols_fy', 'goog.i18n.CompactNumberFormatSymbols_fy_NL', 'goog.i18n.CompactNumberFormatSymbols_gd', 'goog.i18n.CompactNumberFormatSymbols_gd_GB', 'goog.i18n.CompactNumberFormatSymbols_gsw_FR', 'goog.i18n.CompactNumberFormatSymbols_guz', 'goog.i18n.CompactNumberFormatSymbols_guz_KE', 'goog.i18n.CompactNumberFormatSymbols_gv', 'goog.i18n.CompactNumberFormatSymbols_gv_IM', 'goog.i18n.CompactNumberFormatSymbols_ha', 'goog.i18n.CompactNumberFormatSymbols_ha_Latn', 'goog.i18n.CompactNumberFormatSymbols_ha_Latn_GH', 'goog.i18n.CompactNumberFormatSymbols_ha_Latn_NE', 'goog.i18n.CompactNumberFormatSymbols_ha_Latn_NG', 'goog.i18n.CompactNumberFormatSymbols_hr_BA', 'goog.i18n.CompactNumberFormatSymbols_hsb', 'goog.i18n.CompactNumberFormatSymbols_hsb_DE', 'goog.i18n.CompactNumberFormatSymbols_ig', 'goog.i18n.CompactNumberFormatSymbols_ig_NG', 'goog.i18n.CompactNumberFormatSymbols_ii', 'goog.i18n.CompactNumberFormatSymbols_ii_CN', 'goog.i18n.CompactNumberFormatSymbols_it_CH', 'goog.i18n.CompactNumberFormatSymbols_jgo', 'goog.i18n.CompactNumberFormatSymbols_jgo_CM', 'goog.i18n.CompactNumberFormatSymbols_jmc', 'goog.i18n.CompactNumberFormatSymbols_jmc_TZ', 'goog.i18n.CompactNumberFormatSymbols_kab', 'goog.i18n.CompactNumberFormatSymbols_kab_DZ', 'goog.i18n.CompactNumberFormatSymbols_kam', 'goog.i18n.CompactNumberFormatSymbols_kam_KE', 'goog.i18n.CompactNumberFormatSymbols_kde', 'goog.i18n.CompactNumberFormatSymbols_kde_TZ', 'goog.i18n.CompactNumberFormatSymbols_kea', 'goog.i18n.CompactNumberFormatSymbols_kea_CV', 'goog.i18n.CompactNumberFormatSymbols_khq', 'goog.i18n.CompactNumberFormatSymbols_khq_ML', 'goog.i18n.CompactNumberFormatSymbols_ki', 'goog.i18n.CompactNumberFormatSymbols_ki_KE', 'goog.i18n.CompactNumberFormatSymbols_kkj', 'goog.i18n.CompactNumberFormatSymbols_kkj_CM', 'goog.i18n.CompactNumberFormatSymbols_kl', 'goog.i18n.CompactNumberFormatSymbols_kl_GL', 'goog.i18n.CompactNumberFormatSymbols_kln', 'goog.i18n.CompactNumberFormatSymbols_kln_KE', 'goog.i18n.CompactNumberFormatSymbols_ko_KP', 'goog.i18n.CompactNumberFormatSymbols_kok', 'goog.i18n.CompactNumberFormatSymbols_kok_IN', 'goog.i18n.CompactNumberFormatSymbols_ks', 'goog.i18n.CompactNumberFormatSymbols_ks_Arab', 'goog.i18n.CompactNumberFormatSymbols_ks_Arab_IN', 'goog.i18n.CompactNumberFormatSymbols_ksb', 'goog.i18n.CompactNumberFormatSymbols_ksb_TZ', 'goog.i18n.CompactNumberFormatSymbols_ksf', 'goog.i18n.CompactNumberFormatSymbols_ksf_CM', 'goog.i18n.CompactNumberFormatSymbols_ksh', 'goog.i18n.CompactNumberFormatSymbols_ksh_DE', 'goog.i18n.CompactNumberFormatSymbols_kw', 'goog.i18n.CompactNumberFormatSymbols_kw_GB', 'goog.i18n.CompactNumberFormatSymbols_lag', 'goog.i18n.CompactNumberFormatSymbols_lag_TZ', 'goog.i18n.CompactNumberFormatSymbols_lb', 'goog.i18n.CompactNumberFormatSymbols_lb_LU', 'goog.i18n.CompactNumberFormatSymbols_lg', 'goog.i18n.CompactNumberFormatSymbols_lg_UG', 'goog.i18n.CompactNumberFormatSymbols_lkt', 'goog.i18n.CompactNumberFormatSymbols_lkt_US', 'goog.i18n.CompactNumberFormatSymbols_ln_AO', 'goog.i18n.CompactNumberFormatSymbols_ln_CF', 'goog.i18n.CompactNumberFormatSymbols_ln_CG', 'goog.i18n.CompactNumberFormatSymbols_lu', 'goog.i18n.CompactNumberFormatSymbols_lu_CD', 'goog.i18n.CompactNumberFormatSymbols_luo', 'goog.i18n.CompactNumberFormatSymbols_luo_KE', 'goog.i18n.CompactNumberFormatSymbols_luy', 'goog.i18n.CompactNumberFormatSymbols_luy_KE', 'goog.i18n.CompactNumberFormatSymbols_mas', 'goog.i18n.CompactNumberFormatSymbols_mas_KE', 'goog.i18n.CompactNumberFormatSymbols_mas_TZ', 'goog.i18n.CompactNumberFormatSymbols_mer', 'goog.i18n.CompactNumberFormatSymbols_mer_KE', 'goog.i18n.CompactNumberFormatSymbols_mfe', 'goog.i18n.CompactNumberFormatSymbols_mfe_MU', 'goog.i18n.CompactNumberFormatSymbols_mg', 'goog.i18n.CompactNumberFormatSymbols_mg_MG', 'goog.i18n.CompactNumberFormatSymbols_mgh', 'goog.i18n.CompactNumberFormatSymbols_mgh_MZ', 'goog.i18n.CompactNumberFormatSymbols_mgo', 'goog.i18n.CompactNumberFormatSymbols_mgo_CM', 'goog.i18n.CompactNumberFormatSymbols_ms_Latn_BN', 'goog.i18n.CompactNumberFormatSymbols_ms_Latn_SG', 'goog.i18n.CompactNumberFormatSymbols_mua', 'goog.i18n.CompactNumberFormatSymbols_mua_CM', 'goog.i18n.CompactNumberFormatSymbols_naq', 'goog.i18n.CompactNumberFormatSymbols_naq_NA', 'goog.i18n.CompactNumberFormatSymbols_nd', 'goog.i18n.CompactNumberFormatSymbols_nd_ZW', 'goog.i18n.CompactNumberFormatSymbols_ne_IN', 'goog.i18n.CompactNumberFormatSymbols_nl_AW', 'goog.i18n.CompactNumberFormatSymbols_nl_BE', 'goog.i18n.CompactNumberFormatSymbols_nl_BQ', 'goog.i18n.CompactNumberFormatSymbols_nl_CW', 'goog.i18n.CompactNumberFormatSymbols_nl_SR', 'goog.i18n.CompactNumberFormatSymbols_nl_SX', 'goog.i18n.CompactNumberFormatSymbols_nmg', 'goog.i18n.CompactNumberFormatSymbols_nmg_CM', 'goog.i18n.CompactNumberFormatSymbols_nn', 'goog.i18n.CompactNumberFormatSymbols_nn_NO', 'goog.i18n.CompactNumberFormatSymbols_nnh', 'goog.i18n.CompactNumberFormatSymbols_nnh_CM', 'goog.i18n.CompactNumberFormatSymbols_nus', 'goog.i18n.CompactNumberFormatSymbols_nus_SD', 'goog.i18n.CompactNumberFormatSymbols_nyn', 'goog.i18n.CompactNumberFormatSymbols_nyn_UG', 'goog.i18n.CompactNumberFormatSymbols_om', 'goog.i18n.CompactNumberFormatSymbols_om_ET', 'goog.i18n.CompactNumberFormatSymbols_om_KE', 'goog.i18n.CompactNumberFormatSymbols_os', 'goog.i18n.CompactNumberFormatSymbols_os_GE', 'goog.i18n.CompactNumberFormatSymbols_os_RU', 'goog.i18n.CompactNumberFormatSymbols_pa_Arab', 'goog.i18n.CompactNumberFormatSymbols_pa_Arab_PK', 'goog.i18n.CompactNumberFormatSymbols_ps', 'goog.i18n.CompactNumberFormatSymbols_ps_AF', 'goog.i18n.CompactNumberFormatSymbols_pt_AO', 'goog.i18n.CompactNumberFormatSymbols_pt_CV', 'goog.i18n.CompactNumberFormatSymbols_pt_GW', 'goog.i18n.CompactNumberFormatSymbols_pt_MO', 'goog.i18n.CompactNumberFormatSymbols_pt_MZ', 'goog.i18n.CompactNumberFormatSymbols_pt_ST', 'goog.i18n.CompactNumberFormatSymbols_pt_TL', 'goog.i18n.CompactNumberFormatSymbols_qu', 'goog.i18n.CompactNumberFormatSymbols_qu_BO', 'goog.i18n.CompactNumberFormatSymbols_qu_EC', 'goog.i18n.CompactNumberFormatSymbols_qu_PE', 'goog.i18n.CompactNumberFormatSymbols_rm', 'goog.i18n.CompactNumberFormatSymbols_rm_CH', 'goog.i18n.CompactNumberFormatSymbols_rn', 'goog.i18n.CompactNumberFormatSymbols_rn_BI', 'goog.i18n.CompactNumberFormatSymbols_ro_MD', 'goog.i18n.CompactNumberFormatSymbols_rof', 'goog.i18n.CompactNumberFormatSymbols_rof_TZ', 'goog.i18n.CompactNumberFormatSymbols_ru_BY', 'goog.i18n.CompactNumberFormatSymbols_ru_KG', 'goog.i18n.CompactNumberFormatSymbols_ru_KZ', 'goog.i18n.CompactNumberFormatSymbols_ru_MD', 'goog.i18n.CompactNumberFormatSymbols_ru_UA', 'goog.i18n.CompactNumberFormatSymbols_rw', 'goog.i18n.CompactNumberFormatSymbols_rw_RW', 'goog.i18n.CompactNumberFormatSymbols_rwk', 'goog.i18n.CompactNumberFormatSymbols_rwk_TZ', 'goog.i18n.CompactNumberFormatSymbols_sah', 'goog.i18n.CompactNumberFormatSymbols_sah_RU', 'goog.i18n.CompactNumberFormatSymbols_saq', 'goog.i18n.CompactNumberFormatSymbols_saq_KE', 'goog.i18n.CompactNumberFormatSymbols_sbp', 'goog.i18n.CompactNumberFormatSymbols_sbp_TZ', 'goog.i18n.CompactNumberFormatSymbols_se', 'goog.i18n.CompactNumberFormatSymbols_se_FI', 'goog.i18n.CompactNumberFormatSymbols_se_NO', 'goog.i18n.CompactNumberFormatSymbols_se_SE', 'goog.i18n.CompactNumberFormatSymbols_seh', 'goog.i18n.CompactNumberFormatSymbols_seh_MZ', 'goog.i18n.CompactNumberFormatSymbols_ses', 'goog.i18n.CompactNumberFormatSymbols_ses_ML', 'goog.i18n.CompactNumberFormatSymbols_sg', 'goog.i18n.CompactNumberFormatSymbols_sg_CF', 'goog.i18n.CompactNumberFormatSymbols_shi', 'goog.i18n.CompactNumberFormatSymbols_shi_Latn', 'goog.i18n.CompactNumberFormatSymbols_shi_Latn_MA', 'goog.i18n.CompactNumberFormatSymbols_shi_Tfng', 'goog.i18n.CompactNumberFormatSymbols_shi_Tfng_MA', 'goog.i18n.CompactNumberFormatSymbols_smn', 'goog.i18n.CompactNumberFormatSymbols_smn_FI', 'goog.i18n.CompactNumberFormatSymbols_sn', 'goog.i18n.CompactNumberFormatSymbols_sn_ZW', 'goog.i18n.CompactNumberFormatSymbols_so', 'goog.i18n.CompactNumberFormatSymbols_so_DJ', 'goog.i18n.CompactNumberFormatSymbols_so_ET', 'goog.i18n.CompactNumberFormatSymbols_so_KE', 'goog.i18n.CompactNumberFormatSymbols_so_SO', 'goog.i18n.CompactNumberFormatSymbols_sq_MK', 'goog.i18n.CompactNumberFormatSymbols_sq_XK', 'goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_BA', 'goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_ME', 'goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_XK', 'goog.i18n.CompactNumberFormatSymbols_sr_Latn_BA', 'goog.i18n.CompactNumberFormatSymbols_sr_Latn_ME', 'goog.i18n.CompactNumberFormatSymbols_sr_Latn_XK', 'goog.i18n.CompactNumberFormatSymbols_sv_AX', 'goog.i18n.CompactNumberFormatSymbols_sv_FI', 'goog.i18n.CompactNumberFormatSymbols_sw_CD', 'goog.i18n.CompactNumberFormatSymbols_sw_KE', 'goog.i18n.CompactNumberFormatSymbols_sw_UG', 'goog.i18n.CompactNumberFormatSymbols_ta_LK', 'goog.i18n.CompactNumberFormatSymbols_ta_MY', 'goog.i18n.CompactNumberFormatSymbols_ta_SG', 'goog.i18n.CompactNumberFormatSymbols_teo', 'goog.i18n.CompactNumberFormatSymbols_teo_KE', 'goog.i18n.CompactNumberFormatSymbols_teo_UG', 'goog.i18n.CompactNumberFormatSymbols_ti', 'goog.i18n.CompactNumberFormatSymbols_ti_ER', 'goog.i18n.CompactNumberFormatSymbols_ti_ET', 'goog.i18n.CompactNumberFormatSymbols_to', 'goog.i18n.CompactNumberFormatSymbols_to_TO', 'goog.i18n.CompactNumberFormatSymbols_tr_CY', 'goog.i18n.CompactNumberFormatSymbols_twq', 'goog.i18n.CompactNumberFormatSymbols_twq_NE', 'goog.i18n.CompactNumberFormatSymbols_tzm', 'goog.i18n.CompactNumberFormatSymbols_tzm_Latn', 'goog.i18n.CompactNumberFormatSymbols_tzm_Latn_MA', 'goog.i18n.CompactNumberFormatSymbols_ug', 'goog.i18n.CompactNumberFormatSymbols_ug_Arab', 'goog.i18n.CompactNumberFormatSymbols_ug_Arab_CN', 'goog.i18n.CompactNumberFormatSymbols_ur_IN', 'goog.i18n.CompactNumberFormatSymbols_uz_Arab', 'goog.i18n.CompactNumberFormatSymbols_uz_Arab_AF', 'goog.i18n.CompactNumberFormatSymbols_uz_Cyrl', 'goog.i18n.CompactNumberFormatSymbols_uz_Cyrl_UZ', 'goog.i18n.CompactNumberFormatSymbols_vai', 'goog.i18n.CompactNumberFormatSymbols_vai_Latn', 'goog.i18n.CompactNumberFormatSymbols_vai_Latn_LR', 'goog.i18n.CompactNumberFormatSymbols_vai_Vaii', 'goog.i18n.CompactNumberFormatSymbols_vai_Vaii_LR', 'goog.i18n.CompactNumberFormatSymbols_vun', 'goog.i18n.CompactNumberFormatSymbols_vun_TZ', 'goog.i18n.CompactNumberFormatSymbols_wae', 'goog.i18n.CompactNumberFormatSymbols_wae_CH', 'goog.i18n.CompactNumberFormatSymbols_xog', 'goog.i18n.CompactNumberFormatSymbols_xog_UG', 'goog.i18n.CompactNumberFormatSymbols_yav', 'goog.i18n.CompactNumberFormatSymbols_yav_CM', 'goog.i18n.CompactNumberFormatSymbols_yi', 'goog.i18n.CompactNumberFormatSymbols_yi_001', 'goog.i18n.CompactNumberFormatSymbols_yo', 'goog.i18n.CompactNumberFormatSymbols_yo_BJ', 'goog.i18n.CompactNumberFormatSymbols_yo_NG', 'goog.i18n.CompactNumberFormatSymbols_zgh', 'goog.i18n.CompactNumberFormatSymbols_zgh_MA', 'goog.i18n.CompactNumberFormatSymbols_zh_Hans_HK', 'goog.i18n.CompactNumberFormatSymbols_zh_Hans_MO', 'goog.i18n.CompactNumberFormatSymbols_zh_Hans_SG', 'goog.i18n.CompactNumberFormatSymbols_zh_Hant', 'goog.i18n.CompactNumberFormatSymbols_zh_Hant_HK', 'goog.i18n.CompactNumberFormatSymbols_zh_Hant_MO', 'goog.i18n.CompactNumberFormatSymbols_zh_Hant_TW'], [], false); -goog.addDependency('i18n/currency.js', ['goog.i18n.currency', 'goog.i18n.currency.CurrencyInfo', 'goog.i18n.currency.CurrencyInfoTier2'], [], false); -goog.addDependency('i18n/currency_test.js', ['goog.i18n.currencyTest'], ['goog.i18n.NumberFormat', 'goog.i18n.currency', 'goog.i18n.currency.CurrencyInfo', 'goog.object', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/currencycodemap.js', ['goog.i18n.currencyCodeMap', 'goog.i18n.currencyCodeMapTier2'], [], false); -goog.addDependency('i18n/datetimeformat.js', ['goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeFormat.Format'], ['goog.asserts', 'goog.date', 'goog.i18n.DateTimeSymbols', 'goog.i18n.TimeZone', 'goog.string'], false); -goog.addDependency('i18n/datetimeformat_test.js', ['goog.i18n.DateTimeFormatTest'], ['goog.date.Date', 'goog.date.DateTime', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimePatterns', 'goog.i18n.DateTimePatterns_ar', 'goog.i18n.DateTimePatterns_de', 'goog.i18n.DateTimePatterns_en', 'goog.i18n.DateTimePatterns_fa', 'goog.i18n.DateTimePatterns_fr', 'goog.i18n.DateTimePatterns_ja', 'goog.i18n.DateTimePatterns_sv', 'goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_ar', 'goog.i18n.DateTimeSymbols_ar_AE', 'goog.i18n.DateTimeSymbols_ar_SA', 'goog.i18n.DateTimeSymbols_bn_BD', 'goog.i18n.DateTimeSymbols_de', 'goog.i18n.DateTimeSymbols_en', 'goog.i18n.DateTimeSymbols_en_GB', 'goog.i18n.DateTimeSymbols_en_IE', 'goog.i18n.DateTimeSymbols_en_IN', 'goog.i18n.DateTimeSymbols_en_US', 'goog.i18n.DateTimeSymbols_fa', 'goog.i18n.DateTimeSymbols_fr', 'goog.i18n.DateTimeSymbols_fr_DJ', 'goog.i18n.DateTimeSymbols_he_IL', 'goog.i18n.DateTimeSymbols_ja', 'goog.i18n.DateTimeSymbols_ro_RO', 'goog.i18n.DateTimeSymbols_sv', 'goog.i18n.TimeZone', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/datetimeparse.js', ['goog.i18n.DateTimeParse'], ['goog.date', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeSymbols'], false); -goog.addDependency('i18n/datetimeparse_test.js', ['goog.i18n.DateTimeParseTest'], ['goog.date.Date', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeParse', 'goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_en', 'goog.i18n.DateTimeSymbols_fa', 'goog.i18n.DateTimeSymbols_fr', 'goog.i18n.DateTimeSymbols_pl', 'goog.i18n.DateTimeSymbols_zh', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('i18n/datetimepatterns.js', ['goog.i18n.DateTimePatterns', 'goog.i18n.DateTimePatterns_af', 'goog.i18n.DateTimePatterns_am', 'goog.i18n.DateTimePatterns_ar', 'goog.i18n.DateTimePatterns_az', 'goog.i18n.DateTimePatterns_be', 'goog.i18n.DateTimePatterns_bg', 'goog.i18n.DateTimePatterns_bn', 'goog.i18n.DateTimePatterns_br', 'goog.i18n.DateTimePatterns_bs', 'goog.i18n.DateTimePatterns_ca', 'goog.i18n.DateTimePatterns_chr', 'goog.i18n.DateTimePatterns_cs', 'goog.i18n.DateTimePatterns_cy', 'goog.i18n.DateTimePatterns_da', 'goog.i18n.DateTimePatterns_de', 'goog.i18n.DateTimePatterns_de_AT', 'goog.i18n.DateTimePatterns_de_CH', 'goog.i18n.DateTimePatterns_el', 'goog.i18n.DateTimePatterns_en', 'goog.i18n.DateTimePatterns_en_AU', 'goog.i18n.DateTimePatterns_en_CA', 'goog.i18n.DateTimePatterns_en_GB', 'goog.i18n.DateTimePatterns_en_IE', 'goog.i18n.DateTimePatterns_en_IN', 'goog.i18n.DateTimePatterns_en_SG', 'goog.i18n.DateTimePatterns_en_US', 'goog.i18n.DateTimePatterns_en_ZA', 'goog.i18n.DateTimePatterns_es', 'goog.i18n.DateTimePatterns_es_419', 'goog.i18n.DateTimePatterns_es_ES', 'goog.i18n.DateTimePatterns_es_MX', 'goog.i18n.DateTimePatterns_es_US', 'goog.i18n.DateTimePatterns_et', 'goog.i18n.DateTimePatterns_eu', 'goog.i18n.DateTimePatterns_fa', 'goog.i18n.DateTimePatterns_fi', 'goog.i18n.DateTimePatterns_fil', 'goog.i18n.DateTimePatterns_fr', 'goog.i18n.DateTimePatterns_fr_CA', 'goog.i18n.DateTimePatterns_ga', 'goog.i18n.DateTimePatterns_gl', 'goog.i18n.DateTimePatterns_gsw', 'goog.i18n.DateTimePatterns_gu', 'goog.i18n.DateTimePatterns_haw', 'goog.i18n.DateTimePatterns_he', 'goog.i18n.DateTimePatterns_hi', 'goog.i18n.DateTimePatterns_hr', 'goog.i18n.DateTimePatterns_hu', 'goog.i18n.DateTimePatterns_hy', 'goog.i18n.DateTimePatterns_id', 'goog.i18n.DateTimePatterns_in', 'goog.i18n.DateTimePatterns_is', 'goog.i18n.DateTimePatterns_it', 'goog.i18n.DateTimePatterns_iw', 'goog.i18n.DateTimePatterns_ja', 'goog.i18n.DateTimePatterns_ka', 'goog.i18n.DateTimePatterns_kk', 'goog.i18n.DateTimePatterns_km', 'goog.i18n.DateTimePatterns_kn', 'goog.i18n.DateTimePatterns_ko', 'goog.i18n.DateTimePatterns_ky', 'goog.i18n.DateTimePatterns_ln', 'goog.i18n.DateTimePatterns_lo', 'goog.i18n.DateTimePatterns_lt', 'goog.i18n.DateTimePatterns_lv', 'goog.i18n.DateTimePatterns_mk', 'goog.i18n.DateTimePatterns_ml', 'goog.i18n.DateTimePatterns_mn', 'goog.i18n.DateTimePatterns_mo', 'goog.i18n.DateTimePatterns_mr', 'goog.i18n.DateTimePatterns_ms', 'goog.i18n.DateTimePatterns_mt', 'goog.i18n.DateTimePatterns_my', 'goog.i18n.DateTimePatterns_nb', 'goog.i18n.DateTimePatterns_ne', 'goog.i18n.DateTimePatterns_nl', 'goog.i18n.DateTimePatterns_no', 'goog.i18n.DateTimePatterns_no_NO', 'goog.i18n.DateTimePatterns_or', 'goog.i18n.DateTimePatterns_pa', 'goog.i18n.DateTimePatterns_pl', 'goog.i18n.DateTimePatterns_pt', 'goog.i18n.DateTimePatterns_pt_BR', 'goog.i18n.DateTimePatterns_pt_PT', 'goog.i18n.DateTimePatterns_ro', 'goog.i18n.DateTimePatterns_ru', 'goog.i18n.DateTimePatterns_sh', 'goog.i18n.DateTimePatterns_si', 'goog.i18n.DateTimePatterns_sk', 'goog.i18n.DateTimePatterns_sl', 'goog.i18n.DateTimePatterns_sq', 'goog.i18n.DateTimePatterns_sr', 'goog.i18n.DateTimePatterns_sr_Latn', 'goog.i18n.DateTimePatterns_sv', 'goog.i18n.DateTimePatterns_sw', 'goog.i18n.DateTimePatterns_ta', 'goog.i18n.DateTimePatterns_te', 'goog.i18n.DateTimePatterns_th', 'goog.i18n.DateTimePatterns_tl', 'goog.i18n.DateTimePatterns_tr', 'goog.i18n.DateTimePatterns_uk', 'goog.i18n.DateTimePatterns_ur', 'goog.i18n.DateTimePatterns_uz', 'goog.i18n.DateTimePatterns_vi', 'goog.i18n.DateTimePatterns_zh', 'goog.i18n.DateTimePatterns_zh_CN', 'goog.i18n.DateTimePatterns_zh_HK', 'goog.i18n.DateTimePatterns_zh_TW', 'goog.i18n.DateTimePatterns_zu'], [], false); -goog.addDependency('i18n/datetimepatternsext.js', ['goog.i18n.DateTimePatternsExt', 'goog.i18n.DateTimePatterns_af_NA', 'goog.i18n.DateTimePatterns_af_ZA', 'goog.i18n.DateTimePatterns_agq', 'goog.i18n.DateTimePatterns_agq_CM', 'goog.i18n.DateTimePatterns_ak', 'goog.i18n.DateTimePatterns_ak_GH', 'goog.i18n.DateTimePatterns_am_ET', 'goog.i18n.DateTimePatterns_ar_001', 'goog.i18n.DateTimePatterns_ar_AE', 'goog.i18n.DateTimePatterns_ar_BH', 'goog.i18n.DateTimePatterns_ar_DJ', 'goog.i18n.DateTimePatterns_ar_DZ', 'goog.i18n.DateTimePatterns_ar_EG', 'goog.i18n.DateTimePatterns_ar_EH', 'goog.i18n.DateTimePatterns_ar_ER', 'goog.i18n.DateTimePatterns_ar_IL', 'goog.i18n.DateTimePatterns_ar_IQ', 'goog.i18n.DateTimePatterns_ar_JO', 'goog.i18n.DateTimePatterns_ar_KM', 'goog.i18n.DateTimePatterns_ar_KW', 'goog.i18n.DateTimePatterns_ar_LB', 'goog.i18n.DateTimePatterns_ar_LY', 'goog.i18n.DateTimePatterns_ar_MA', 'goog.i18n.DateTimePatterns_ar_MR', 'goog.i18n.DateTimePatterns_ar_OM', 'goog.i18n.DateTimePatterns_ar_PS', 'goog.i18n.DateTimePatterns_ar_QA', 'goog.i18n.DateTimePatterns_ar_SA', 'goog.i18n.DateTimePatterns_ar_SD', 'goog.i18n.DateTimePatterns_ar_SO', 'goog.i18n.DateTimePatterns_ar_SS', 'goog.i18n.DateTimePatterns_ar_SY', 'goog.i18n.DateTimePatterns_ar_TD', 'goog.i18n.DateTimePatterns_ar_TN', 'goog.i18n.DateTimePatterns_ar_YE', 'goog.i18n.DateTimePatterns_as', 'goog.i18n.DateTimePatterns_as_IN', 'goog.i18n.DateTimePatterns_asa', 'goog.i18n.DateTimePatterns_asa_TZ', 'goog.i18n.DateTimePatterns_az_Cyrl', 'goog.i18n.DateTimePatterns_az_Cyrl_AZ', 'goog.i18n.DateTimePatterns_az_Latn', 'goog.i18n.DateTimePatterns_az_Latn_AZ', 'goog.i18n.DateTimePatterns_bas', 'goog.i18n.DateTimePatterns_bas_CM', 'goog.i18n.DateTimePatterns_be_BY', 'goog.i18n.DateTimePatterns_bem', 'goog.i18n.DateTimePatterns_bem_ZM', 'goog.i18n.DateTimePatterns_bez', 'goog.i18n.DateTimePatterns_bez_TZ', 'goog.i18n.DateTimePatterns_bg_BG', 'goog.i18n.DateTimePatterns_bm', 'goog.i18n.DateTimePatterns_bm_Latn', 'goog.i18n.DateTimePatterns_bm_Latn_ML', 'goog.i18n.DateTimePatterns_bn_BD', 'goog.i18n.DateTimePatterns_bn_IN', 'goog.i18n.DateTimePatterns_bo', 'goog.i18n.DateTimePatterns_bo_CN', 'goog.i18n.DateTimePatterns_bo_IN', 'goog.i18n.DateTimePatterns_br_FR', 'goog.i18n.DateTimePatterns_brx', 'goog.i18n.DateTimePatterns_brx_IN', 'goog.i18n.DateTimePatterns_bs_Cyrl', 'goog.i18n.DateTimePatterns_bs_Cyrl_BA', 'goog.i18n.DateTimePatterns_bs_Latn', 'goog.i18n.DateTimePatterns_bs_Latn_BA', 'goog.i18n.DateTimePatterns_ca_AD', 'goog.i18n.DateTimePatterns_ca_ES', 'goog.i18n.DateTimePatterns_ca_FR', 'goog.i18n.DateTimePatterns_ca_IT', 'goog.i18n.DateTimePatterns_cgg', 'goog.i18n.DateTimePatterns_cgg_UG', 'goog.i18n.DateTimePatterns_chr_US', 'goog.i18n.DateTimePatterns_cs_CZ', 'goog.i18n.DateTimePatterns_cy_GB', 'goog.i18n.DateTimePatterns_da_DK', 'goog.i18n.DateTimePatterns_da_GL', 'goog.i18n.DateTimePatterns_dav', 'goog.i18n.DateTimePatterns_dav_KE', 'goog.i18n.DateTimePatterns_de_BE', 'goog.i18n.DateTimePatterns_de_DE', 'goog.i18n.DateTimePatterns_de_LI', 'goog.i18n.DateTimePatterns_de_LU', 'goog.i18n.DateTimePatterns_dje', 'goog.i18n.DateTimePatterns_dje_NE', 'goog.i18n.DateTimePatterns_dsb', 'goog.i18n.DateTimePatterns_dsb_DE', 'goog.i18n.DateTimePatterns_dua', 'goog.i18n.DateTimePatterns_dua_CM', 'goog.i18n.DateTimePatterns_dyo', 'goog.i18n.DateTimePatterns_dyo_SN', 'goog.i18n.DateTimePatterns_dz', 'goog.i18n.DateTimePatterns_dz_BT', 'goog.i18n.DateTimePatterns_ebu', 'goog.i18n.DateTimePatterns_ebu_KE', 'goog.i18n.DateTimePatterns_ee', 'goog.i18n.DateTimePatterns_ee_GH', 'goog.i18n.DateTimePatterns_ee_TG', 'goog.i18n.DateTimePatterns_el_CY', 'goog.i18n.DateTimePatterns_el_GR', 'goog.i18n.DateTimePatterns_en_001', 'goog.i18n.DateTimePatterns_en_150', 'goog.i18n.DateTimePatterns_en_AG', 'goog.i18n.DateTimePatterns_en_AI', 'goog.i18n.DateTimePatterns_en_AS', 'goog.i18n.DateTimePatterns_en_BB', 'goog.i18n.DateTimePatterns_en_BE', 'goog.i18n.DateTimePatterns_en_BM', 'goog.i18n.DateTimePatterns_en_BS', 'goog.i18n.DateTimePatterns_en_BW', 'goog.i18n.DateTimePatterns_en_BZ', 'goog.i18n.DateTimePatterns_en_CC', 'goog.i18n.DateTimePatterns_en_CK', 'goog.i18n.DateTimePatterns_en_CM', 'goog.i18n.DateTimePatterns_en_CX', 'goog.i18n.DateTimePatterns_en_DG', 'goog.i18n.DateTimePatterns_en_DM', 'goog.i18n.DateTimePatterns_en_ER', 'goog.i18n.DateTimePatterns_en_FJ', 'goog.i18n.DateTimePatterns_en_FK', 'goog.i18n.DateTimePatterns_en_FM', 'goog.i18n.DateTimePatterns_en_GD', 'goog.i18n.DateTimePatterns_en_GG', 'goog.i18n.DateTimePatterns_en_GH', 'goog.i18n.DateTimePatterns_en_GI', 'goog.i18n.DateTimePatterns_en_GM', 'goog.i18n.DateTimePatterns_en_GU', 'goog.i18n.DateTimePatterns_en_GY', 'goog.i18n.DateTimePatterns_en_HK', 'goog.i18n.DateTimePatterns_en_IM', 'goog.i18n.DateTimePatterns_en_IO', 'goog.i18n.DateTimePatterns_en_JE', 'goog.i18n.DateTimePatterns_en_JM', 'goog.i18n.DateTimePatterns_en_KE', 'goog.i18n.DateTimePatterns_en_KI', 'goog.i18n.DateTimePatterns_en_KN', 'goog.i18n.DateTimePatterns_en_KY', 'goog.i18n.DateTimePatterns_en_LC', 'goog.i18n.DateTimePatterns_en_LR', 'goog.i18n.DateTimePatterns_en_LS', 'goog.i18n.DateTimePatterns_en_MG', 'goog.i18n.DateTimePatterns_en_MH', 'goog.i18n.DateTimePatterns_en_MO', 'goog.i18n.DateTimePatterns_en_MP', 'goog.i18n.DateTimePatterns_en_MS', 'goog.i18n.DateTimePatterns_en_MT', 'goog.i18n.DateTimePatterns_en_MU', 'goog.i18n.DateTimePatterns_en_MW', 'goog.i18n.DateTimePatterns_en_MY', 'goog.i18n.DateTimePatterns_en_NA', 'goog.i18n.DateTimePatterns_en_NF', 'goog.i18n.DateTimePatterns_en_NG', 'goog.i18n.DateTimePatterns_en_NR', 'goog.i18n.DateTimePatterns_en_NU', 'goog.i18n.DateTimePatterns_en_NZ', 'goog.i18n.DateTimePatterns_en_PG', 'goog.i18n.DateTimePatterns_en_PH', 'goog.i18n.DateTimePatterns_en_PK', 'goog.i18n.DateTimePatterns_en_PN', 'goog.i18n.DateTimePatterns_en_PR', 'goog.i18n.DateTimePatterns_en_PW', 'goog.i18n.DateTimePatterns_en_RW', 'goog.i18n.DateTimePatterns_en_SB', 'goog.i18n.DateTimePatterns_en_SC', 'goog.i18n.DateTimePatterns_en_SD', 'goog.i18n.DateTimePatterns_en_SH', 'goog.i18n.DateTimePatterns_en_SL', 'goog.i18n.DateTimePatterns_en_SS', 'goog.i18n.DateTimePatterns_en_SX', 'goog.i18n.DateTimePatterns_en_SZ', 'goog.i18n.DateTimePatterns_en_TC', 'goog.i18n.DateTimePatterns_en_TK', 'goog.i18n.DateTimePatterns_en_TO', 'goog.i18n.DateTimePatterns_en_TT', 'goog.i18n.DateTimePatterns_en_TV', 'goog.i18n.DateTimePatterns_en_TZ', 'goog.i18n.DateTimePatterns_en_UG', 'goog.i18n.DateTimePatterns_en_UM', 'goog.i18n.DateTimePatterns_en_US_POSIX', 'goog.i18n.DateTimePatterns_en_VC', 'goog.i18n.DateTimePatterns_en_VG', 'goog.i18n.DateTimePatterns_en_VI', 'goog.i18n.DateTimePatterns_en_VU', 'goog.i18n.DateTimePatterns_en_WS', 'goog.i18n.DateTimePatterns_en_ZM', 'goog.i18n.DateTimePatterns_en_ZW', 'goog.i18n.DateTimePatterns_eo', 'goog.i18n.DateTimePatterns_es_AR', 'goog.i18n.DateTimePatterns_es_BO', 'goog.i18n.DateTimePatterns_es_CL', 'goog.i18n.DateTimePatterns_es_CO', 'goog.i18n.DateTimePatterns_es_CR', 'goog.i18n.DateTimePatterns_es_CU', 'goog.i18n.DateTimePatterns_es_DO', 'goog.i18n.DateTimePatterns_es_EA', 'goog.i18n.DateTimePatterns_es_EC', 'goog.i18n.DateTimePatterns_es_GQ', 'goog.i18n.DateTimePatterns_es_GT', 'goog.i18n.DateTimePatterns_es_HN', 'goog.i18n.DateTimePatterns_es_IC', 'goog.i18n.DateTimePatterns_es_NI', 'goog.i18n.DateTimePatterns_es_PA', 'goog.i18n.DateTimePatterns_es_PE', 'goog.i18n.DateTimePatterns_es_PH', 'goog.i18n.DateTimePatterns_es_PR', 'goog.i18n.DateTimePatterns_es_PY', 'goog.i18n.DateTimePatterns_es_SV', 'goog.i18n.DateTimePatterns_es_UY', 'goog.i18n.DateTimePatterns_es_VE', 'goog.i18n.DateTimePatterns_et_EE', 'goog.i18n.DateTimePatterns_eu_ES', 'goog.i18n.DateTimePatterns_ewo', 'goog.i18n.DateTimePatterns_ewo_CM', 'goog.i18n.DateTimePatterns_fa_AF', 'goog.i18n.DateTimePatterns_fa_IR', 'goog.i18n.DateTimePatterns_ff', 'goog.i18n.DateTimePatterns_ff_CM', 'goog.i18n.DateTimePatterns_ff_GN', 'goog.i18n.DateTimePatterns_ff_MR', 'goog.i18n.DateTimePatterns_ff_SN', 'goog.i18n.DateTimePatterns_fi_FI', 'goog.i18n.DateTimePatterns_fil_PH', 'goog.i18n.DateTimePatterns_fo', 'goog.i18n.DateTimePatterns_fo_FO', 'goog.i18n.DateTimePatterns_fr_BE', 'goog.i18n.DateTimePatterns_fr_BF', 'goog.i18n.DateTimePatterns_fr_BI', 'goog.i18n.DateTimePatterns_fr_BJ', 'goog.i18n.DateTimePatterns_fr_BL', 'goog.i18n.DateTimePatterns_fr_CD', 'goog.i18n.DateTimePatterns_fr_CF', 'goog.i18n.DateTimePatterns_fr_CG', 'goog.i18n.DateTimePatterns_fr_CH', 'goog.i18n.DateTimePatterns_fr_CI', 'goog.i18n.DateTimePatterns_fr_CM', 'goog.i18n.DateTimePatterns_fr_DJ', 'goog.i18n.DateTimePatterns_fr_DZ', 'goog.i18n.DateTimePatterns_fr_FR', 'goog.i18n.DateTimePatterns_fr_GA', 'goog.i18n.DateTimePatterns_fr_GF', 'goog.i18n.DateTimePatterns_fr_GN', 'goog.i18n.DateTimePatterns_fr_GP', 'goog.i18n.DateTimePatterns_fr_GQ', 'goog.i18n.DateTimePatterns_fr_HT', 'goog.i18n.DateTimePatterns_fr_KM', 'goog.i18n.DateTimePatterns_fr_LU', 'goog.i18n.DateTimePatterns_fr_MA', 'goog.i18n.DateTimePatterns_fr_MC', 'goog.i18n.DateTimePatterns_fr_MF', 'goog.i18n.DateTimePatterns_fr_MG', 'goog.i18n.DateTimePatterns_fr_ML', 'goog.i18n.DateTimePatterns_fr_MQ', 'goog.i18n.DateTimePatterns_fr_MR', 'goog.i18n.DateTimePatterns_fr_MU', 'goog.i18n.DateTimePatterns_fr_NC', 'goog.i18n.DateTimePatterns_fr_NE', 'goog.i18n.DateTimePatterns_fr_PF', 'goog.i18n.DateTimePatterns_fr_PM', 'goog.i18n.DateTimePatterns_fr_RE', 'goog.i18n.DateTimePatterns_fr_RW', 'goog.i18n.DateTimePatterns_fr_SC', 'goog.i18n.DateTimePatterns_fr_SN', 'goog.i18n.DateTimePatterns_fr_SY', 'goog.i18n.DateTimePatterns_fr_TD', 'goog.i18n.DateTimePatterns_fr_TG', 'goog.i18n.DateTimePatterns_fr_TN', 'goog.i18n.DateTimePatterns_fr_VU', 'goog.i18n.DateTimePatterns_fr_WF', 'goog.i18n.DateTimePatterns_fr_YT', 'goog.i18n.DateTimePatterns_fur', 'goog.i18n.DateTimePatterns_fur_IT', 'goog.i18n.DateTimePatterns_fy', 'goog.i18n.DateTimePatterns_fy_NL', 'goog.i18n.DateTimePatterns_ga_IE', 'goog.i18n.DateTimePatterns_gd', 'goog.i18n.DateTimePatterns_gd_GB', 'goog.i18n.DateTimePatterns_gl_ES', 'goog.i18n.DateTimePatterns_gsw_CH', 'goog.i18n.DateTimePatterns_gsw_FR', 'goog.i18n.DateTimePatterns_gsw_LI', 'goog.i18n.DateTimePatterns_gu_IN', 'goog.i18n.DateTimePatterns_guz', 'goog.i18n.DateTimePatterns_guz_KE', 'goog.i18n.DateTimePatterns_gv', 'goog.i18n.DateTimePatterns_gv_IM', 'goog.i18n.DateTimePatterns_ha', 'goog.i18n.DateTimePatterns_ha_Latn', 'goog.i18n.DateTimePatterns_ha_Latn_GH', 'goog.i18n.DateTimePatterns_ha_Latn_NE', 'goog.i18n.DateTimePatterns_ha_Latn_NG', 'goog.i18n.DateTimePatterns_haw_US', 'goog.i18n.DateTimePatterns_he_IL', 'goog.i18n.DateTimePatterns_hi_IN', 'goog.i18n.DateTimePatterns_hr_BA', 'goog.i18n.DateTimePatterns_hr_HR', 'goog.i18n.DateTimePatterns_hsb', 'goog.i18n.DateTimePatterns_hsb_DE', 'goog.i18n.DateTimePatterns_hu_HU', 'goog.i18n.DateTimePatterns_hy_AM', 'goog.i18n.DateTimePatterns_id_ID', 'goog.i18n.DateTimePatterns_ig', 'goog.i18n.DateTimePatterns_ig_NG', 'goog.i18n.DateTimePatterns_ii', 'goog.i18n.DateTimePatterns_ii_CN', 'goog.i18n.DateTimePatterns_is_IS', 'goog.i18n.DateTimePatterns_it_CH', 'goog.i18n.DateTimePatterns_it_IT', 'goog.i18n.DateTimePatterns_it_SM', 'goog.i18n.DateTimePatterns_ja_JP', 'goog.i18n.DateTimePatterns_jgo', 'goog.i18n.DateTimePatterns_jgo_CM', 'goog.i18n.DateTimePatterns_jmc', 'goog.i18n.DateTimePatterns_jmc_TZ', 'goog.i18n.DateTimePatterns_ka_GE', 'goog.i18n.DateTimePatterns_kab', 'goog.i18n.DateTimePatterns_kab_DZ', 'goog.i18n.DateTimePatterns_kam', 'goog.i18n.DateTimePatterns_kam_KE', 'goog.i18n.DateTimePatterns_kde', 'goog.i18n.DateTimePatterns_kde_TZ', 'goog.i18n.DateTimePatterns_kea', 'goog.i18n.DateTimePatterns_kea_CV', 'goog.i18n.DateTimePatterns_khq', 'goog.i18n.DateTimePatterns_khq_ML', 'goog.i18n.DateTimePatterns_ki', 'goog.i18n.DateTimePatterns_ki_KE', 'goog.i18n.DateTimePatterns_kk_Cyrl', 'goog.i18n.DateTimePatterns_kk_Cyrl_KZ', 'goog.i18n.DateTimePatterns_kkj', 'goog.i18n.DateTimePatterns_kkj_CM', 'goog.i18n.DateTimePatterns_kl', 'goog.i18n.DateTimePatterns_kl_GL', 'goog.i18n.DateTimePatterns_kln', 'goog.i18n.DateTimePatterns_kln_KE', 'goog.i18n.DateTimePatterns_km_KH', 'goog.i18n.DateTimePatterns_kn_IN', 'goog.i18n.DateTimePatterns_ko_KP', 'goog.i18n.DateTimePatterns_ko_KR', 'goog.i18n.DateTimePatterns_kok', 'goog.i18n.DateTimePatterns_kok_IN', 'goog.i18n.DateTimePatterns_ks', 'goog.i18n.DateTimePatterns_ks_Arab', 'goog.i18n.DateTimePatterns_ks_Arab_IN', 'goog.i18n.DateTimePatterns_ksb', 'goog.i18n.DateTimePatterns_ksb_TZ', 'goog.i18n.DateTimePatterns_ksf', 'goog.i18n.DateTimePatterns_ksf_CM', 'goog.i18n.DateTimePatterns_ksh', 'goog.i18n.DateTimePatterns_ksh_DE', 'goog.i18n.DateTimePatterns_kw', 'goog.i18n.DateTimePatterns_kw_GB', 'goog.i18n.DateTimePatterns_ky_Cyrl', 'goog.i18n.DateTimePatterns_ky_Cyrl_KG', 'goog.i18n.DateTimePatterns_lag', 'goog.i18n.DateTimePatterns_lag_TZ', 'goog.i18n.DateTimePatterns_lb', 'goog.i18n.DateTimePatterns_lb_LU', 'goog.i18n.DateTimePatterns_lg', 'goog.i18n.DateTimePatterns_lg_UG', 'goog.i18n.DateTimePatterns_lkt', 'goog.i18n.DateTimePatterns_lkt_US', 'goog.i18n.DateTimePatterns_ln_AO', 'goog.i18n.DateTimePatterns_ln_CD', 'goog.i18n.DateTimePatterns_ln_CF', 'goog.i18n.DateTimePatterns_ln_CG', 'goog.i18n.DateTimePatterns_lo_LA', 'goog.i18n.DateTimePatterns_lt_LT', 'goog.i18n.DateTimePatterns_lu', 'goog.i18n.DateTimePatterns_lu_CD', 'goog.i18n.DateTimePatterns_luo', 'goog.i18n.DateTimePatterns_luo_KE', 'goog.i18n.DateTimePatterns_luy', 'goog.i18n.DateTimePatterns_luy_KE', 'goog.i18n.DateTimePatterns_lv_LV', 'goog.i18n.DateTimePatterns_mas', 'goog.i18n.DateTimePatterns_mas_KE', 'goog.i18n.DateTimePatterns_mas_TZ', 'goog.i18n.DateTimePatterns_mer', 'goog.i18n.DateTimePatterns_mer_KE', 'goog.i18n.DateTimePatterns_mfe', 'goog.i18n.DateTimePatterns_mfe_MU', 'goog.i18n.DateTimePatterns_mg', 'goog.i18n.DateTimePatterns_mg_MG', 'goog.i18n.DateTimePatterns_mgh', 'goog.i18n.DateTimePatterns_mgh_MZ', 'goog.i18n.DateTimePatterns_mgo', 'goog.i18n.DateTimePatterns_mgo_CM', 'goog.i18n.DateTimePatterns_mk_MK', 'goog.i18n.DateTimePatterns_ml_IN', 'goog.i18n.DateTimePatterns_mn_Cyrl', 'goog.i18n.DateTimePatterns_mn_Cyrl_MN', 'goog.i18n.DateTimePatterns_mr_IN', 'goog.i18n.DateTimePatterns_ms_Latn', 'goog.i18n.DateTimePatterns_ms_Latn_BN', 'goog.i18n.DateTimePatterns_ms_Latn_MY', 'goog.i18n.DateTimePatterns_ms_Latn_SG', 'goog.i18n.DateTimePatterns_mt_MT', 'goog.i18n.DateTimePatterns_mua', 'goog.i18n.DateTimePatterns_mua_CM', 'goog.i18n.DateTimePatterns_my_MM', 'goog.i18n.DateTimePatterns_naq', 'goog.i18n.DateTimePatterns_naq_NA', 'goog.i18n.DateTimePatterns_nb_NO', 'goog.i18n.DateTimePatterns_nb_SJ', 'goog.i18n.DateTimePatterns_nd', 'goog.i18n.DateTimePatterns_nd_ZW', 'goog.i18n.DateTimePatterns_ne_IN', 'goog.i18n.DateTimePatterns_ne_NP', 'goog.i18n.DateTimePatterns_nl_AW', 'goog.i18n.DateTimePatterns_nl_BE', 'goog.i18n.DateTimePatterns_nl_BQ', 'goog.i18n.DateTimePatterns_nl_CW', 'goog.i18n.DateTimePatterns_nl_NL', 'goog.i18n.DateTimePatterns_nl_SR', 'goog.i18n.DateTimePatterns_nl_SX', 'goog.i18n.DateTimePatterns_nmg', 'goog.i18n.DateTimePatterns_nmg_CM', 'goog.i18n.DateTimePatterns_nn', 'goog.i18n.DateTimePatterns_nn_NO', 'goog.i18n.DateTimePatterns_nnh', 'goog.i18n.DateTimePatterns_nnh_CM', 'goog.i18n.DateTimePatterns_nus', 'goog.i18n.DateTimePatterns_nus_SD', 'goog.i18n.DateTimePatterns_nyn', 'goog.i18n.DateTimePatterns_nyn_UG', 'goog.i18n.DateTimePatterns_om', 'goog.i18n.DateTimePatterns_om_ET', 'goog.i18n.DateTimePatterns_om_KE', 'goog.i18n.DateTimePatterns_or_IN', 'goog.i18n.DateTimePatterns_os', 'goog.i18n.DateTimePatterns_os_GE', 'goog.i18n.DateTimePatterns_os_RU', 'goog.i18n.DateTimePatterns_pa_Arab', 'goog.i18n.DateTimePatterns_pa_Arab_PK', 'goog.i18n.DateTimePatterns_pa_Guru', 'goog.i18n.DateTimePatterns_pa_Guru_IN', 'goog.i18n.DateTimePatterns_pl_PL', 'goog.i18n.DateTimePatterns_ps', 'goog.i18n.DateTimePatterns_ps_AF', 'goog.i18n.DateTimePatterns_pt_AO', 'goog.i18n.DateTimePatterns_pt_CV', 'goog.i18n.DateTimePatterns_pt_GW', 'goog.i18n.DateTimePatterns_pt_MO', 'goog.i18n.DateTimePatterns_pt_MZ', 'goog.i18n.DateTimePatterns_pt_ST', 'goog.i18n.DateTimePatterns_pt_TL', 'goog.i18n.DateTimePatterns_qu', 'goog.i18n.DateTimePatterns_qu_BO', 'goog.i18n.DateTimePatterns_qu_EC', 'goog.i18n.DateTimePatterns_qu_PE', 'goog.i18n.DateTimePatterns_rm', 'goog.i18n.DateTimePatterns_rm_CH', 'goog.i18n.DateTimePatterns_rn', 'goog.i18n.DateTimePatterns_rn_BI', 'goog.i18n.DateTimePatterns_ro_MD', 'goog.i18n.DateTimePatterns_ro_RO', 'goog.i18n.DateTimePatterns_rof', 'goog.i18n.DateTimePatterns_rof_TZ', 'goog.i18n.DateTimePatterns_ru_BY', 'goog.i18n.DateTimePatterns_ru_KG', 'goog.i18n.DateTimePatterns_ru_KZ', 'goog.i18n.DateTimePatterns_ru_MD', 'goog.i18n.DateTimePatterns_ru_RU', 'goog.i18n.DateTimePatterns_ru_UA', 'goog.i18n.DateTimePatterns_rw', 'goog.i18n.DateTimePatterns_rw_RW', 'goog.i18n.DateTimePatterns_rwk', 'goog.i18n.DateTimePatterns_rwk_TZ', 'goog.i18n.DateTimePatterns_sah', 'goog.i18n.DateTimePatterns_sah_RU', 'goog.i18n.DateTimePatterns_saq', 'goog.i18n.DateTimePatterns_saq_KE', 'goog.i18n.DateTimePatterns_sbp', 'goog.i18n.DateTimePatterns_sbp_TZ', 'goog.i18n.DateTimePatterns_se', 'goog.i18n.DateTimePatterns_se_FI', 'goog.i18n.DateTimePatterns_se_NO', 'goog.i18n.DateTimePatterns_se_SE', 'goog.i18n.DateTimePatterns_seh', 'goog.i18n.DateTimePatterns_seh_MZ', 'goog.i18n.DateTimePatterns_ses', 'goog.i18n.DateTimePatterns_ses_ML', 'goog.i18n.DateTimePatterns_sg', 'goog.i18n.DateTimePatterns_sg_CF', 'goog.i18n.DateTimePatterns_shi', 'goog.i18n.DateTimePatterns_shi_Latn', 'goog.i18n.DateTimePatterns_shi_Latn_MA', 'goog.i18n.DateTimePatterns_shi_Tfng', 'goog.i18n.DateTimePatterns_shi_Tfng_MA', 'goog.i18n.DateTimePatterns_si_LK', 'goog.i18n.DateTimePatterns_sk_SK', 'goog.i18n.DateTimePatterns_sl_SI', 'goog.i18n.DateTimePatterns_smn', 'goog.i18n.DateTimePatterns_smn_FI', 'goog.i18n.DateTimePatterns_sn', 'goog.i18n.DateTimePatterns_sn_ZW', 'goog.i18n.DateTimePatterns_so', 'goog.i18n.DateTimePatterns_so_DJ', 'goog.i18n.DateTimePatterns_so_ET', 'goog.i18n.DateTimePatterns_so_KE', 'goog.i18n.DateTimePatterns_so_SO', 'goog.i18n.DateTimePatterns_sq_AL', 'goog.i18n.DateTimePatterns_sq_MK', 'goog.i18n.DateTimePatterns_sq_XK', 'goog.i18n.DateTimePatterns_sr_Cyrl', 'goog.i18n.DateTimePatterns_sr_Cyrl_BA', 'goog.i18n.DateTimePatterns_sr_Cyrl_ME', 'goog.i18n.DateTimePatterns_sr_Cyrl_RS', 'goog.i18n.DateTimePatterns_sr_Cyrl_XK', 'goog.i18n.DateTimePatterns_sr_Latn_BA', 'goog.i18n.DateTimePatterns_sr_Latn_ME', 'goog.i18n.DateTimePatterns_sr_Latn_RS', 'goog.i18n.DateTimePatterns_sr_Latn_XK', 'goog.i18n.DateTimePatterns_sv_AX', 'goog.i18n.DateTimePatterns_sv_FI', 'goog.i18n.DateTimePatterns_sv_SE', 'goog.i18n.DateTimePatterns_sw_CD', 'goog.i18n.DateTimePatterns_sw_KE', 'goog.i18n.DateTimePatterns_sw_TZ', 'goog.i18n.DateTimePatterns_sw_UG', 'goog.i18n.DateTimePatterns_ta_IN', 'goog.i18n.DateTimePatterns_ta_LK', 'goog.i18n.DateTimePatterns_ta_MY', 'goog.i18n.DateTimePatterns_ta_SG', 'goog.i18n.DateTimePatterns_te_IN', 'goog.i18n.DateTimePatterns_teo', 'goog.i18n.DateTimePatterns_teo_KE', 'goog.i18n.DateTimePatterns_teo_UG', 'goog.i18n.DateTimePatterns_th_TH', 'goog.i18n.DateTimePatterns_ti', 'goog.i18n.DateTimePatterns_ti_ER', 'goog.i18n.DateTimePatterns_ti_ET', 'goog.i18n.DateTimePatterns_to', 'goog.i18n.DateTimePatterns_to_TO', 'goog.i18n.DateTimePatterns_tr_CY', 'goog.i18n.DateTimePatterns_tr_TR', 'goog.i18n.DateTimePatterns_twq', 'goog.i18n.DateTimePatterns_twq_NE', 'goog.i18n.DateTimePatterns_tzm', 'goog.i18n.DateTimePatterns_tzm_Latn', 'goog.i18n.DateTimePatterns_tzm_Latn_MA', 'goog.i18n.DateTimePatterns_ug', 'goog.i18n.DateTimePatterns_ug_Arab', 'goog.i18n.DateTimePatterns_ug_Arab_CN', 'goog.i18n.DateTimePatterns_uk_UA', 'goog.i18n.DateTimePatterns_ur_IN', 'goog.i18n.DateTimePatterns_ur_PK', 'goog.i18n.DateTimePatterns_uz_Arab', 'goog.i18n.DateTimePatterns_uz_Arab_AF', 'goog.i18n.DateTimePatterns_uz_Cyrl', 'goog.i18n.DateTimePatterns_uz_Cyrl_UZ', 'goog.i18n.DateTimePatterns_uz_Latn', 'goog.i18n.DateTimePatterns_uz_Latn_UZ', 'goog.i18n.DateTimePatterns_vai', 'goog.i18n.DateTimePatterns_vai_Latn', 'goog.i18n.DateTimePatterns_vai_Latn_LR', 'goog.i18n.DateTimePatterns_vai_Vaii', 'goog.i18n.DateTimePatterns_vai_Vaii_LR', 'goog.i18n.DateTimePatterns_vi_VN', 'goog.i18n.DateTimePatterns_vun', 'goog.i18n.DateTimePatterns_vun_TZ', 'goog.i18n.DateTimePatterns_wae', 'goog.i18n.DateTimePatterns_wae_CH', 'goog.i18n.DateTimePatterns_xog', 'goog.i18n.DateTimePatterns_xog_UG', 'goog.i18n.DateTimePatterns_yav', 'goog.i18n.DateTimePatterns_yav_CM', 'goog.i18n.DateTimePatterns_yi', 'goog.i18n.DateTimePatterns_yi_001', 'goog.i18n.DateTimePatterns_yo', 'goog.i18n.DateTimePatterns_yo_BJ', 'goog.i18n.DateTimePatterns_yo_NG', 'goog.i18n.DateTimePatterns_zgh', 'goog.i18n.DateTimePatterns_zgh_MA', 'goog.i18n.DateTimePatterns_zh_Hans', 'goog.i18n.DateTimePatterns_zh_Hans_CN', 'goog.i18n.DateTimePatterns_zh_Hans_HK', 'goog.i18n.DateTimePatterns_zh_Hans_MO', 'goog.i18n.DateTimePatterns_zh_Hans_SG', 'goog.i18n.DateTimePatterns_zh_Hant', 'goog.i18n.DateTimePatterns_zh_Hant_HK', 'goog.i18n.DateTimePatterns_zh_Hant_MO', 'goog.i18n.DateTimePatterns_zh_Hant_TW', 'goog.i18n.DateTimePatterns_zu_ZA'], ['goog.i18n.DateTimePatterns'], false); -goog.addDependency('i18n/datetimesymbols.js', ['goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_af', 'goog.i18n.DateTimeSymbols_am', 'goog.i18n.DateTimeSymbols_ar', 'goog.i18n.DateTimeSymbols_az', 'goog.i18n.DateTimeSymbols_be', 'goog.i18n.DateTimeSymbols_bg', 'goog.i18n.DateTimeSymbols_bn', 'goog.i18n.DateTimeSymbols_br', 'goog.i18n.DateTimeSymbols_bs', 'goog.i18n.DateTimeSymbols_ca', 'goog.i18n.DateTimeSymbols_chr', 'goog.i18n.DateTimeSymbols_cs', 'goog.i18n.DateTimeSymbols_cy', 'goog.i18n.DateTimeSymbols_da', 'goog.i18n.DateTimeSymbols_de', 'goog.i18n.DateTimeSymbols_de_AT', 'goog.i18n.DateTimeSymbols_de_CH', 'goog.i18n.DateTimeSymbols_el', 'goog.i18n.DateTimeSymbols_en', 'goog.i18n.DateTimeSymbols_en_AU', 'goog.i18n.DateTimeSymbols_en_CA', 'goog.i18n.DateTimeSymbols_en_GB', 'goog.i18n.DateTimeSymbols_en_IE', 'goog.i18n.DateTimeSymbols_en_IN', 'goog.i18n.DateTimeSymbols_en_ISO', 'goog.i18n.DateTimeSymbols_en_SG', 'goog.i18n.DateTimeSymbols_en_US', 'goog.i18n.DateTimeSymbols_en_ZA', 'goog.i18n.DateTimeSymbols_es', 'goog.i18n.DateTimeSymbols_es_419', 'goog.i18n.DateTimeSymbols_es_ES', 'goog.i18n.DateTimeSymbols_es_MX', 'goog.i18n.DateTimeSymbols_es_US', 'goog.i18n.DateTimeSymbols_et', 'goog.i18n.DateTimeSymbols_eu', 'goog.i18n.DateTimeSymbols_fa', 'goog.i18n.DateTimeSymbols_fi', 'goog.i18n.DateTimeSymbols_fil', 'goog.i18n.DateTimeSymbols_fr', 'goog.i18n.DateTimeSymbols_fr_CA', 'goog.i18n.DateTimeSymbols_ga', 'goog.i18n.DateTimeSymbols_gl', 'goog.i18n.DateTimeSymbols_gsw', 'goog.i18n.DateTimeSymbols_gu', 'goog.i18n.DateTimeSymbols_haw', 'goog.i18n.DateTimeSymbols_he', 'goog.i18n.DateTimeSymbols_hi', 'goog.i18n.DateTimeSymbols_hr', 'goog.i18n.DateTimeSymbols_hu', 'goog.i18n.DateTimeSymbols_hy', 'goog.i18n.DateTimeSymbols_id', 'goog.i18n.DateTimeSymbols_in', 'goog.i18n.DateTimeSymbols_is', 'goog.i18n.DateTimeSymbols_it', 'goog.i18n.DateTimeSymbols_iw', 'goog.i18n.DateTimeSymbols_ja', 'goog.i18n.DateTimeSymbols_ka', 'goog.i18n.DateTimeSymbols_kk', 'goog.i18n.DateTimeSymbols_km', 'goog.i18n.DateTimeSymbols_kn', 'goog.i18n.DateTimeSymbols_ko', 'goog.i18n.DateTimeSymbols_ky', 'goog.i18n.DateTimeSymbols_ln', 'goog.i18n.DateTimeSymbols_lo', 'goog.i18n.DateTimeSymbols_lt', 'goog.i18n.DateTimeSymbols_lv', 'goog.i18n.DateTimeSymbols_mk', 'goog.i18n.DateTimeSymbols_ml', 'goog.i18n.DateTimeSymbols_mn', 'goog.i18n.DateTimeSymbols_mr', 'goog.i18n.DateTimeSymbols_ms', 'goog.i18n.DateTimeSymbols_mt', 'goog.i18n.DateTimeSymbols_my', 'goog.i18n.DateTimeSymbols_nb', 'goog.i18n.DateTimeSymbols_ne', 'goog.i18n.DateTimeSymbols_nl', 'goog.i18n.DateTimeSymbols_no', 'goog.i18n.DateTimeSymbols_no_NO', 'goog.i18n.DateTimeSymbols_or', 'goog.i18n.DateTimeSymbols_pa', 'goog.i18n.DateTimeSymbols_pl', 'goog.i18n.DateTimeSymbols_pt', 'goog.i18n.DateTimeSymbols_pt_BR', 'goog.i18n.DateTimeSymbols_pt_PT', 'goog.i18n.DateTimeSymbols_ro', 'goog.i18n.DateTimeSymbols_ru', 'goog.i18n.DateTimeSymbols_si', 'goog.i18n.DateTimeSymbols_sk', 'goog.i18n.DateTimeSymbols_sl', 'goog.i18n.DateTimeSymbols_sq', 'goog.i18n.DateTimeSymbols_sr', 'goog.i18n.DateTimeSymbols_sr_Latn', 'goog.i18n.DateTimeSymbols_sv', 'goog.i18n.DateTimeSymbols_sw', 'goog.i18n.DateTimeSymbols_ta', 'goog.i18n.DateTimeSymbols_te', 'goog.i18n.DateTimeSymbols_th', 'goog.i18n.DateTimeSymbols_tl', 'goog.i18n.DateTimeSymbols_tr', 'goog.i18n.DateTimeSymbols_uk', 'goog.i18n.DateTimeSymbols_ur', 'goog.i18n.DateTimeSymbols_uz', 'goog.i18n.DateTimeSymbols_vi', 'goog.i18n.DateTimeSymbols_zh', 'goog.i18n.DateTimeSymbols_zh_CN', 'goog.i18n.DateTimeSymbols_zh_HK', 'goog.i18n.DateTimeSymbols_zh_TW', 'goog.i18n.DateTimeSymbols_zu'], [], false); -goog.addDependency('i18n/datetimesymbolsext.js', ['goog.i18n.DateTimeSymbolsExt', 'goog.i18n.DateTimeSymbols_af_NA', 'goog.i18n.DateTimeSymbols_af_ZA', 'goog.i18n.DateTimeSymbols_agq', 'goog.i18n.DateTimeSymbols_agq_CM', 'goog.i18n.DateTimeSymbols_ak', 'goog.i18n.DateTimeSymbols_ak_GH', 'goog.i18n.DateTimeSymbols_am_ET', 'goog.i18n.DateTimeSymbols_ar_001', 'goog.i18n.DateTimeSymbols_ar_AE', 'goog.i18n.DateTimeSymbols_ar_BH', 'goog.i18n.DateTimeSymbols_ar_DJ', 'goog.i18n.DateTimeSymbols_ar_DZ', 'goog.i18n.DateTimeSymbols_ar_EG', 'goog.i18n.DateTimeSymbols_ar_EH', 'goog.i18n.DateTimeSymbols_ar_ER', 'goog.i18n.DateTimeSymbols_ar_IL', 'goog.i18n.DateTimeSymbols_ar_IQ', 'goog.i18n.DateTimeSymbols_ar_JO', 'goog.i18n.DateTimeSymbols_ar_KM', 'goog.i18n.DateTimeSymbols_ar_KW', 'goog.i18n.DateTimeSymbols_ar_LB', 'goog.i18n.DateTimeSymbols_ar_LY', 'goog.i18n.DateTimeSymbols_ar_MA', 'goog.i18n.DateTimeSymbols_ar_MR', 'goog.i18n.DateTimeSymbols_ar_OM', 'goog.i18n.DateTimeSymbols_ar_PS', 'goog.i18n.DateTimeSymbols_ar_QA', 'goog.i18n.DateTimeSymbols_ar_SA', 'goog.i18n.DateTimeSymbols_ar_SD', 'goog.i18n.DateTimeSymbols_ar_SO', 'goog.i18n.DateTimeSymbols_ar_SS', 'goog.i18n.DateTimeSymbols_ar_SY', 'goog.i18n.DateTimeSymbols_ar_TD', 'goog.i18n.DateTimeSymbols_ar_TN', 'goog.i18n.DateTimeSymbols_ar_YE', 'goog.i18n.DateTimeSymbols_as', 'goog.i18n.DateTimeSymbols_as_IN', 'goog.i18n.DateTimeSymbols_asa', 'goog.i18n.DateTimeSymbols_asa_TZ', 'goog.i18n.DateTimeSymbols_ast', 'goog.i18n.DateTimeSymbols_ast_ES', 'goog.i18n.DateTimeSymbols_az_Cyrl', 'goog.i18n.DateTimeSymbols_az_Cyrl_AZ', 'goog.i18n.DateTimeSymbols_az_Latn', 'goog.i18n.DateTimeSymbols_az_Latn_AZ', 'goog.i18n.DateTimeSymbols_bas', 'goog.i18n.DateTimeSymbols_bas_CM', 'goog.i18n.DateTimeSymbols_be_BY', 'goog.i18n.DateTimeSymbols_bem', 'goog.i18n.DateTimeSymbols_bem_ZM', 'goog.i18n.DateTimeSymbols_bez', 'goog.i18n.DateTimeSymbols_bez_TZ', 'goog.i18n.DateTimeSymbols_bg_BG', 'goog.i18n.DateTimeSymbols_bm', 'goog.i18n.DateTimeSymbols_bm_Latn', 'goog.i18n.DateTimeSymbols_bm_Latn_ML', 'goog.i18n.DateTimeSymbols_bn_BD', 'goog.i18n.DateTimeSymbols_bn_IN', 'goog.i18n.DateTimeSymbols_bo', 'goog.i18n.DateTimeSymbols_bo_CN', 'goog.i18n.DateTimeSymbols_bo_IN', 'goog.i18n.DateTimeSymbols_br_FR', 'goog.i18n.DateTimeSymbols_brx', 'goog.i18n.DateTimeSymbols_brx_IN', 'goog.i18n.DateTimeSymbols_bs_Cyrl', 'goog.i18n.DateTimeSymbols_bs_Cyrl_BA', 'goog.i18n.DateTimeSymbols_bs_Latn', 'goog.i18n.DateTimeSymbols_bs_Latn_BA', 'goog.i18n.DateTimeSymbols_ca_AD', 'goog.i18n.DateTimeSymbols_ca_ES', 'goog.i18n.DateTimeSymbols_ca_ES_VALENCIA', 'goog.i18n.DateTimeSymbols_ca_FR', 'goog.i18n.DateTimeSymbols_ca_IT', 'goog.i18n.DateTimeSymbols_cgg', 'goog.i18n.DateTimeSymbols_cgg_UG', 'goog.i18n.DateTimeSymbols_chr_US', 'goog.i18n.DateTimeSymbols_ckb', 'goog.i18n.DateTimeSymbols_ckb_Arab', 'goog.i18n.DateTimeSymbols_ckb_Arab_IQ', 'goog.i18n.DateTimeSymbols_ckb_Arab_IR', 'goog.i18n.DateTimeSymbols_ckb_IQ', 'goog.i18n.DateTimeSymbols_ckb_IR', 'goog.i18n.DateTimeSymbols_ckb_Latn', 'goog.i18n.DateTimeSymbols_ckb_Latn_IQ', 'goog.i18n.DateTimeSymbols_cs_CZ', 'goog.i18n.DateTimeSymbols_cy_GB', 'goog.i18n.DateTimeSymbols_da_DK', 'goog.i18n.DateTimeSymbols_da_GL', 'goog.i18n.DateTimeSymbols_dav', 'goog.i18n.DateTimeSymbols_dav_KE', 'goog.i18n.DateTimeSymbols_de_BE', 'goog.i18n.DateTimeSymbols_de_DE', 'goog.i18n.DateTimeSymbols_de_LI', 'goog.i18n.DateTimeSymbols_de_LU', 'goog.i18n.DateTimeSymbols_dje', 'goog.i18n.DateTimeSymbols_dje_NE', 'goog.i18n.DateTimeSymbols_dsb', 'goog.i18n.DateTimeSymbols_dsb_DE', 'goog.i18n.DateTimeSymbols_dua', 'goog.i18n.DateTimeSymbols_dua_CM', 'goog.i18n.DateTimeSymbols_dyo', 'goog.i18n.DateTimeSymbols_dyo_SN', 'goog.i18n.DateTimeSymbols_dz', 'goog.i18n.DateTimeSymbols_dz_BT', 'goog.i18n.DateTimeSymbols_ebu', 'goog.i18n.DateTimeSymbols_ebu_KE', 'goog.i18n.DateTimeSymbols_ee', 'goog.i18n.DateTimeSymbols_ee_GH', 'goog.i18n.DateTimeSymbols_ee_TG', 'goog.i18n.DateTimeSymbols_el_CY', 'goog.i18n.DateTimeSymbols_el_GR', 'goog.i18n.DateTimeSymbols_en_001', 'goog.i18n.DateTimeSymbols_en_150', 'goog.i18n.DateTimeSymbols_en_AG', 'goog.i18n.DateTimeSymbols_en_AI', 'goog.i18n.DateTimeSymbols_en_AS', 'goog.i18n.DateTimeSymbols_en_BB', 'goog.i18n.DateTimeSymbols_en_BE', 'goog.i18n.DateTimeSymbols_en_BM', 'goog.i18n.DateTimeSymbols_en_BS', 'goog.i18n.DateTimeSymbols_en_BW', 'goog.i18n.DateTimeSymbols_en_BZ', 'goog.i18n.DateTimeSymbols_en_CC', 'goog.i18n.DateTimeSymbols_en_CK', 'goog.i18n.DateTimeSymbols_en_CM', 'goog.i18n.DateTimeSymbols_en_CX', 'goog.i18n.DateTimeSymbols_en_DG', 'goog.i18n.DateTimeSymbols_en_DM', 'goog.i18n.DateTimeSymbols_en_ER', 'goog.i18n.DateTimeSymbols_en_FJ', 'goog.i18n.DateTimeSymbols_en_FK', 'goog.i18n.DateTimeSymbols_en_FM', 'goog.i18n.DateTimeSymbols_en_GD', 'goog.i18n.DateTimeSymbols_en_GG', 'goog.i18n.DateTimeSymbols_en_GH', 'goog.i18n.DateTimeSymbols_en_GI', 'goog.i18n.DateTimeSymbols_en_GM', 'goog.i18n.DateTimeSymbols_en_GU', 'goog.i18n.DateTimeSymbols_en_GY', 'goog.i18n.DateTimeSymbols_en_HK', 'goog.i18n.DateTimeSymbols_en_IM', 'goog.i18n.DateTimeSymbols_en_IO', 'goog.i18n.DateTimeSymbols_en_JE', 'goog.i18n.DateTimeSymbols_en_JM', 'goog.i18n.DateTimeSymbols_en_KE', 'goog.i18n.DateTimeSymbols_en_KI', 'goog.i18n.DateTimeSymbols_en_KN', 'goog.i18n.DateTimeSymbols_en_KY', 'goog.i18n.DateTimeSymbols_en_LC', 'goog.i18n.DateTimeSymbols_en_LR', 'goog.i18n.DateTimeSymbols_en_LS', 'goog.i18n.DateTimeSymbols_en_MG', 'goog.i18n.DateTimeSymbols_en_MH', 'goog.i18n.DateTimeSymbols_en_MO', 'goog.i18n.DateTimeSymbols_en_MP', 'goog.i18n.DateTimeSymbols_en_MS', 'goog.i18n.DateTimeSymbols_en_MT', 'goog.i18n.DateTimeSymbols_en_MU', 'goog.i18n.DateTimeSymbols_en_MW', 'goog.i18n.DateTimeSymbols_en_MY', 'goog.i18n.DateTimeSymbols_en_NA', 'goog.i18n.DateTimeSymbols_en_NF', 'goog.i18n.DateTimeSymbols_en_NG', 'goog.i18n.DateTimeSymbols_en_NR', 'goog.i18n.DateTimeSymbols_en_NU', 'goog.i18n.DateTimeSymbols_en_NZ', 'goog.i18n.DateTimeSymbols_en_PG', 'goog.i18n.DateTimeSymbols_en_PH', 'goog.i18n.DateTimeSymbols_en_PK', 'goog.i18n.DateTimeSymbols_en_PN', 'goog.i18n.DateTimeSymbols_en_PR', 'goog.i18n.DateTimeSymbols_en_PW', 'goog.i18n.DateTimeSymbols_en_RW', 'goog.i18n.DateTimeSymbols_en_SB', 'goog.i18n.DateTimeSymbols_en_SC', 'goog.i18n.DateTimeSymbols_en_SD', 'goog.i18n.DateTimeSymbols_en_SH', 'goog.i18n.DateTimeSymbols_en_SL', 'goog.i18n.DateTimeSymbols_en_SS', 'goog.i18n.DateTimeSymbols_en_SX', 'goog.i18n.DateTimeSymbols_en_SZ', 'goog.i18n.DateTimeSymbols_en_TC', 'goog.i18n.DateTimeSymbols_en_TK', 'goog.i18n.DateTimeSymbols_en_TO', 'goog.i18n.DateTimeSymbols_en_TT', 'goog.i18n.DateTimeSymbols_en_TV', 'goog.i18n.DateTimeSymbols_en_TZ', 'goog.i18n.DateTimeSymbols_en_UG', 'goog.i18n.DateTimeSymbols_en_UM', 'goog.i18n.DateTimeSymbols_en_VC', 'goog.i18n.DateTimeSymbols_en_VG', 'goog.i18n.DateTimeSymbols_en_VI', 'goog.i18n.DateTimeSymbols_en_VU', 'goog.i18n.DateTimeSymbols_en_WS', 'goog.i18n.DateTimeSymbols_en_ZM', 'goog.i18n.DateTimeSymbols_en_ZW', 'goog.i18n.DateTimeSymbols_eo', 'goog.i18n.DateTimeSymbols_eo_001', 'goog.i18n.DateTimeSymbols_es_AR', 'goog.i18n.DateTimeSymbols_es_BO', 'goog.i18n.DateTimeSymbols_es_CL', 'goog.i18n.DateTimeSymbols_es_CO', 'goog.i18n.DateTimeSymbols_es_CR', 'goog.i18n.DateTimeSymbols_es_CU', 'goog.i18n.DateTimeSymbols_es_DO', 'goog.i18n.DateTimeSymbols_es_EA', 'goog.i18n.DateTimeSymbols_es_EC', 'goog.i18n.DateTimeSymbols_es_GQ', 'goog.i18n.DateTimeSymbols_es_GT', 'goog.i18n.DateTimeSymbols_es_HN', 'goog.i18n.DateTimeSymbols_es_IC', 'goog.i18n.DateTimeSymbols_es_NI', 'goog.i18n.DateTimeSymbols_es_PA', 'goog.i18n.DateTimeSymbols_es_PE', 'goog.i18n.DateTimeSymbols_es_PH', 'goog.i18n.DateTimeSymbols_es_PR', 'goog.i18n.DateTimeSymbols_es_PY', 'goog.i18n.DateTimeSymbols_es_SV', 'goog.i18n.DateTimeSymbols_es_UY', 'goog.i18n.DateTimeSymbols_es_VE', 'goog.i18n.DateTimeSymbols_et_EE', 'goog.i18n.DateTimeSymbols_eu_ES', 'goog.i18n.DateTimeSymbols_ewo', 'goog.i18n.DateTimeSymbols_ewo_CM', 'goog.i18n.DateTimeSymbols_fa_AF', 'goog.i18n.DateTimeSymbols_fa_IR', 'goog.i18n.DateTimeSymbols_ff', 'goog.i18n.DateTimeSymbols_ff_CM', 'goog.i18n.DateTimeSymbols_ff_GN', 'goog.i18n.DateTimeSymbols_ff_MR', 'goog.i18n.DateTimeSymbols_ff_SN', 'goog.i18n.DateTimeSymbols_fi_FI', 'goog.i18n.DateTimeSymbols_fil_PH', 'goog.i18n.DateTimeSymbols_fo', 'goog.i18n.DateTimeSymbols_fo_FO', 'goog.i18n.DateTimeSymbols_fr_BE', 'goog.i18n.DateTimeSymbols_fr_BF', 'goog.i18n.DateTimeSymbols_fr_BI', 'goog.i18n.DateTimeSymbols_fr_BJ', 'goog.i18n.DateTimeSymbols_fr_BL', 'goog.i18n.DateTimeSymbols_fr_CD', 'goog.i18n.DateTimeSymbols_fr_CF', 'goog.i18n.DateTimeSymbols_fr_CG', 'goog.i18n.DateTimeSymbols_fr_CH', 'goog.i18n.DateTimeSymbols_fr_CI', 'goog.i18n.DateTimeSymbols_fr_CM', 'goog.i18n.DateTimeSymbols_fr_DJ', 'goog.i18n.DateTimeSymbols_fr_DZ', 'goog.i18n.DateTimeSymbols_fr_FR', 'goog.i18n.DateTimeSymbols_fr_GA', 'goog.i18n.DateTimeSymbols_fr_GF', 'goog.i18n.DateTimeSymbols_fr_GN', 'goog.i18n.DateTimeSymbols_fr_GP', 'goog.i18n.DateTimeSymbols_fr_GQ', 'goog.i18n.DateTimeSymbols_fr_HT', 'goog.i18n.DateTimeSymbols_fr_KM', 'goog.i18n.DateTimeSymbols_fr_LU', 'goog.i18n.DateTimeSymbols_fr_MA', 'goog.i18n.DateTimeSymbols_fr_MC', 'goog.i18n.DateTimeSymbols_fr_MF', 'goog.i18n.DateTimeSymbols_fr_MG', 'goog.i18n.DateTimeSymbols_fr_ML', 'goog.i18n.DateTimeSymbols_fr_MQ', 'goog.i18n.DateTimeSymbols_fr_MR', 'goog.i18n.DateTimeSymbols_fr_MU', 'goog.i18n.DateTimeSymbols_fr_NC', 'goog.i18n.DateTimeSymbols_fr_NE', 'goog.i18n.DateTimeSymbols_fr_PF', 'goog.i18n.DateTimeSymbols_fr_PM', 'goog.i18n.DateTimeSymbols_fr_RE', 'goog.i18n.DateTimeSymbols_fr_RW', 'goog.i18n.DateTimeSymbols_fr_SC', 'goog.i18n.DateTimeSymbols_fr_SN', 'goog.i18n.DateTimeSymbols_fr_SY', 'goog.i18n.DateTimeSymbols_fr_TD', 'goog.i18n.DateTimeSymbols_fr_TG', 'goog.i18n.DateTimeSymbols_fr_TN', 'goog.i18n.DateTimeSymbols_fr_VU', 'goog.i18n.DateTimeSymbols_fr_WF', 'goog.i18n.DateTimeSymbols_fr_YT', 'goog.i18n.DateTimeSymbols_fur', 'goog.i18n.DateTimeSymbols_fur_IT', 'goog.i18n.DateTimeSymbols_fy', 'goog.i18n.DateTimeSymbols_fy_NL', 'goog.i18n.DateTimeSymbols_ga_IE', 'goog.i18n.DateTimeSymbols_gd', 'goog.i18n.DateTimeSymbols_gd_GB', 'goog.i18n.DateTimeSymbols_gl_ES', 'goog.i18n.DateTimeSymbols_gsw_CH', 'goog.i18n.DateTimeSymbols_gsw_FR', 'goog.i18n.DateTimeSymbols_gsw_LI', 'goog.i18n.DateTimeSymbols_gu_IN', 'goog.i18n.DateTimeSymbols_guz', 'goog.i18n.DateTimeSymbols_guz_KE', 'goog.i18n.DateTimeSymbols_gv', 'goog.i18n.DateTimeSymbols_gv_IM', 'goog.i18n.DateTimeSymbols_ha', 'goog.i18n.DateTimeSymbols_ha_Latn', 'goog.i18n.DateTimeSymbols_ha_Latn_GH', 'goog.i18n.DateTimeSymbols_ha_Latn_NE', 'goog.i18n.DateTimeSymbols_ha_Latn_NG', 'goog.i18n.DateTimeSymbols_haw_US', 'goog.i18n.DateTimeSymbols_he_IL', 'goog.i18n.DateTimeSymbols_hi_IN', 'goog.i18n.DateTimeSymbols_hr_BA', 'goog.i18n.DateTimeSymbols_hr_HR', 'goog.i18n.DateTimeSymbols_hsb', 'goog.i18n.DateTimeSymbols_hsb_DE', 'goog.i18n.DateTimeSymbols_hu_HU', 'goog.i18n.DateTimeSymbols_hy_AM', 'goog.i18n.DateTimeSymbols_id_ID', 'goog.i18n.DateTimeSymbols_ig', 'goog.i18n.DateTimeSymbols_ig_NG', 'goog.i18n.DateTimeSymbols_ii', 'goog.i18n.DateTimeSymbols_ii_CN', 'goog.i18n.DateTimeSymbols_is_IS', 'goog.i18n.DateTimeSymbols_it_CH', 'goog.i18n.DateTimeSymbols_it_IT', 'goog.i18n.DateTimeSymbols_it_SM', 'goog.i18n.DateTimeSymbols_ja_JP', 'goog.i18n.DateTimeSymbols_jgo', 'goog.i18n.DateTimeSymbols_jgo_CM', 'goog.i18n.DateTimeSymbols_jmc', 'goog.i18n.DateTimeSymbols_jmc_TZ', 'goog.i18n.DateTimeSymbols_ka_GE', 'goog.i18n.DateTimeSymbols_kab', 'goog.i18n.DateTimeSymbols_kab_DZ', 'goog.i18n.DateTimeSymbols_kam', 'goog.i18n.DateTimeSymbols_kam_KE', 'goog.i18n.DateTimeSymbols_kde', 'goog.i18n.DateTimeSymbols_kde_TZ', 'goog.i18n.DateTimeSymbols_kea', 'goog.i18n.DateTimeSymbols_kea_CV', 'goog.i18n.DateTimeSymbols_khq', 'goog.i18n.DateTimeSymbols_khq_ML', 'goog.i18n.DateTimeSymbols_ki', 'goog.i18n.DateTimeSymbols_ki_KE', 'goog.i18n.DateTimeSymbols_kk_Cyrl', 'goog.i18n.DateTimeSymbols_kk_Cyrl_KZ', 'goog.i18n.DateTimeSymbols_kkj', 'goog.i18n.DateTimeSymbols_kkj_CM', 'goog.i18n.DateTimeSymbols_kl', 'goog.i18n.DateTimeSymbols_kl_GL', 'goog.i18n.DateTimeSymbols_kln', 'goog.i18n.DateTimeSymbols_kln_KE', 'goog.i18n.DateTimeSymbols_km_KH', 'goog.i18n.DateTimeSymbols_kn_IN', 'goog.i18n.DateTimeSymbols_ko_KP', 'goog.i18n.DateTimeSymbols_ko_KR', 'goog.i18n.DateTimeSymbols_kok', 'goog.i18n.DateTimeSymbols_kok_IN', 'goog.i18n.DateTimeSymbols_ks', 'goog.i18n.DateTimeSymbols_ks_Arab', 'goog.i18n.DateTimeSymbols_ks_Arab_IN', 'goog.i18n.DateTimeSymbols_ksb', 'goog.i18n.DateTimeSymbols_ksb_TZ', 'goog.i18n.DateTimeSymbols_ksf', 'goog.i18n.DateTimeSymbols_ksf_CM', 'goog.i18n.DateTimeSymbols_ksh', 'goog.i18n.DateTimeSymbols_ksh_DE', 'goog.i18n.DateTimeSymbols_kw', 'goog.i18n.DateTimeSymbols_kw_GB', 'goog.i18n.DateTimeSymbols_ky_Cyrl', 'goog.i18n.DateTimeSymbols_ky_Cyrl_KG', 'goog.i18n.DateTimeSymbols_lag', 'goog.i18n.DateTimeSymbols_lag_TZ', 'goog.i18n.DateTimeSymbols_lb', 'goog.i18n.DateTimeSymbols_lb_LU', 'goog.i18n.DateTimeSymbols_lg', 'goog.i18n.DateTimeSymbols_lg_UG', 'goog.i18n.DateTimeSymbols_lkt', 'goog.i18n.DateTimeSymbols_lkt_US', 'goog.i18n.DateTimeSymbols_ln_AO', 'goog.i18n.DateTimeSymbols_ln_CD', 'goog.i18n.DateTimeSymbols_ln_CF', 'goog.i18n.DateTimeSymbols_ln_CG', 'goog.i18n.DateTimeSymbols_lo_LA', 'goog.i18n.DateTimeSymbols_lt_LT', 'goog.i18n.DateTimeSymbols_lu', 'goog.i18n.DateTimeSymbols_lu_CD', 'goog.i18n.DateTimeSymbols_luo', 'goog.i18n.DateTimeSymbols_luo_KE', 'goog.i18n.DateTimeSymbols_luy', 'goog.i18n.DateTimeSymbols_luy_KE', 'goog.i18n.DateTimeSymbols_lv_LV', 'goog.i18n.DateTimeSymbols_mas', 'goog.i18n.DateTimeSymbols_mas_KE', 'goog.i18n.DateTimeSymbols_mas_TZ', 'goog.i18n.DateTimeSymbols_mer', 'goog.i18n.DateTimeSymbols_mer_KE', 'goog.i18n.DateTimeSymbols_mfe', 'goog.i18n.DateTimeSymbols_mfe_MU', 'goog.i18n.DateTimeSymbols_mg', 'goog.i18n.DateTimeSymbols_mg_MG', 'goog.i18n.DateTimeSymbols_mgh', 'goog.i18n.DateTimeSymbols_mgh_MZ', 'goog.i18n.DateTimeSymbols_mgo', 'goog.i18n.DateTimeSymbols_mgo_CM', 'goog.i18n.DateTimeSymbols_mk_MK', 'goog.i18n.DateTimeSymbols_ml_IN', 'goog.i18n.DateTimeSymbols_mn_Cyrl', 'goog.i18n.DateTimeSymbols_mn_Cyrl_MN', 'goog.i18n.DateTimeSymbols_mr_IN', 'goog.i18n.DateTimeSymbols_ms_Latn', 'goog.i18n.DateTimeSymbols_ms_Latn_BN', 'goog.i18n.DateTimeSymbols_ms_Latn_MY', 'goog.i18n.DateTimeSymbols_ms_Latn_SG', 'goog.i18n.DateTimeSymbols_mt_MT', 'goog.i18n.DateTimeSymbols_mua', 'goog.i18n.DateTimeSymbols_mua_CM', 'goog.i18n.DateTimeSymbols_my_MM', 'goog.i18n.DateTimeSymbols_naq', 'goog.i18n.DateTimeSymbols_naq_NA', 'goog.i18n.DateTimeSymbols_nb_NO', 'goog.i18n.DateTimeSymbols_nb_SJ', 'goog.i18n.DateTimeSymbols_nd', 'goog.i18n.DateTimeSymbols_nd_ZW', 'goog.i18n.DateTimeSymbols_ne_IN', 'goog.i18n.DateTimeSymbols_ne_NP', 'goog.i18n.DateTimeSymbols_nl_AW', 'goog.i18n.DateTimeSymbols_nl_BE', 'goog.i18n.DateTimeSymbols_nl_BQ', 'goog.i18n.DateTimeSymbols_nl_CW', 'goog.i18n.DateTimeSymbols_nl_NL', 'goog.i18n.DateTimeSymbols_nl_SR', 'goog.i18n.DateTimeSymbols_nl_SX', 'goog.i18n.DateTimeSymbols_nmg', 'goog.i18n.DateTimeSymbols_nmg_CM', 'goog.i18n.DateTimeSymbols_nn', 'goog.i18n.DateTimeSymbols_nn_NO', 'goog.i18n.DateTimeSymbols_nnh', 'goog.i18n.DateTimeSymbols_nnh_CM', 'goog.i18n.DateTimeSymbols_nus', 'goog.i18n.DateTimeSymbols_nus_SD', 'goog.i18n.DateTimeSymbols_nyn', 'goog.i18n.DateTimeSymbols_nyn_UG', 'goog.i18n.DateTimeSymbols_om', 'goog.i18n.DateTimeSymbols_om_ET', 'goog.i18n.DateTimeSymbols_om_KE', 'goog.i18n.DateTimeSymbols_or_IN', 'goog.i18n.DateTimeSymbols_os', 'goog.i18n.DateTimeSymbols_os_GE', 'goog.i18n.DateTimeSymbols_os_RU', 'goog.i18n.DateTimeSymbols_pa_Arab', 'goog.i18n.DateTimeSymbols_pa_Arab_PK', 'goog.i18n.DateTimeSymbols_pa_Guru', 'goog.i18n.DateTimeSymbols_pa_Guru_IN', 'goog.i18n.DateTimeSymbols_pl_PL', 'goog.i18n.DateTimeSymbols_ps', 'goog.i18n.DateTimeSymbols_ps_AF', 'goog.i18n.DateTimeSymbols_pt_AO', 'goog.i18n.DateTimeSymbols_pt_CV', 'goog.i18n.DateTimeSymbols_pt_GW', 'goog.i18n.DateTimeSymbols_pt_MO', 'goog.i18n.DateTimeSymbols_pt_MZ', 'goog.i18n.DateTimeSymbols_pt_ST', 'goog.i18n.DateTimeSymbols_pt_TL', 'goog.i18n.DateTimeSymbols_qu', 'goog.i18n.DateTimeSymbols_qu_BO', 'goog.i18n.DateTimeSymbols_qu_EC', 'goog.i18n.DateTimeSymbols_qu_PE', 'goog.i18n.DateTimeSymbols_rm', 'goog.i18n.DateTimeSymbols_rm_CH', 'goog.i18n.DateTimeSymbols_rn', 'goog.i18n.DateTimeSymbols_rn_BI', 'goog.i18n.DateTimeSymbols_ro_MD', 'goog.i18n.DateTimeSymbols_ro_RO', 'goog.i18n.DateTimeSymbols_rof', 'goog.i18n.DateTimeSymbols_rof_TZ', 'goog.i18n.DateTimeSymbols_ru_BY', 'goog.i18n.DateTimeSymbols_ru_KG', 'goog.i18n.DateTimeSymbols_ru_KZ', 'goog.i18n.DateTimeSymbols_ru_MD', 'goog.i18n.DateTimeSymbols_ru_RU', 'goog.i18n.DateTimeSymbols_ru_UA', 'goog.i18n.DateTimeSymbols_rw', 'goog.i18n.DateTimeSymbols_rw_RW', 'goog.i18n.DateTimeSymbols_rwk', 'goog.i18n.DateTimeSymbols_rwk_TZ', 'goog.i18n.DateTimeSymbols_sah', 'goog.i18n.DateTimeSymbols_sah_RU', 'goog.i18n.DateTimeSymbols_saq', 'goog.i18n.DateTimeSymbols_saq_KE', 'goog.i18n.DateTimeSymbols_sbp', 'goog.i18n.DateTimeSymbols_sbp_TZ', 'goog.i18n.DateTimeSymbols_se', 'goog.i18n.DateTimeSymbols_se_FI', 'goog.i18n.DateTimeSymbols_se_NO', 'goog.i18n.DateTimeSymbols_se_SE', 'goog.i18n.DateTimeSymbols_seh', 'goog.i18n.DateTimeSymbols_seh_MZ', 'goog.i18n.DateTimeSymbols_ses', 'goog.i18n.DateTimeSymbols_ses_ML', 'goog.i18n.DateTimeSymbols_sg', 'goog.i18n.DateTimeSymbols_sg_CF', 'goog.i18n.DateTimeSymbols_shi', 'goog.i18n.DateTimeSymbols_shi_Latn', 'goog.i18n.DateTimeSymbols_shi_Latn_MA', 'goog.i18n.DateTimeSymbols_shi_Tfng', 'goog.i18n.DateTimeSymbols_shi_Tfng_MA', 'goog.i18n.DateTimeSymbols_si_LK', 'goog.i18n.DateTimeSymbols_sk_SK', 'goog.i18n.DateTimeSymbols_sl_SI', 'goog.i18n.DateTimeSymbols_smn', 'goog.i18n.DateTimeSymbols_smn_FI', 'goog.i18n.DateTimeSymbols_sn', 'goog.i18n.DateTimeSymbols_sn_ZW', 'goog.i18n.DateTimeSymbols_so', 'goog.i18n.DateTimeSymbols_so_DJ', 'goog.i18n.DateTimeSymbols_so_ET', 'goog.i18n.DateTimeSymbols_so_KE', 'goog.i18n.DateTimeSymbols_so_SO', 'goog.i18n.DateTimeSymbols_sq_AL', 'goog.i18n.DateTimeSymbols_sq_MK', 'goog.i18n.DateTimeSymbols_sq_XK', 'goog.i18n.DateTimeSymbols_sr_Cyrl', 'goog.i18n.DateTimeSymbols_sr_Cyrl_BA', 'goog.i18n.DateTimeSymbols_sr_Cyrl_ME', 'goog.i18n.DateTimeSymbols_sr_Cyrl_RS', 'goog.i18n.DateTimeSymbols_sr_Cyrl_XK', 'goog.i18n.DateTimeSymbols_sr_Latn_BA', 'goog.i18n.DateTimeSymbols_sr_Latn_ME', 'goog.i18n.DateTimeSymbols_sr_Latn_RS', 'goog.i18n.DateTimeSymbols_sr_Latn_XK', 'goog.i18n.DateTimeSymbols_sv_AX', 'goog.i18n.DateTimeSymbols_sv_FI', 'goog.i18n.DateTimeSymbols_sv_SE', 'goog.i18n.DateTimeSymbols_sw_CD', 'goog.i18n.DateTimeSymbols_sw_KE', 'goog.i18n.DateTimeSymbols_sw_TZ', 'goog.i18n.DateTimeSymbols_sw_UG', 'goog.i18n.DateTimeSymbols_ta_IN', 'goog.i18n.DateTimeSymbols_ta_LK', 'goog.i18n.DateTimeSymbols_ta_MY', 'goog.i18n.DateTimeSymbols_ta_SG', 'goog.i18n.DateTimeSymbols_te_IN', 'goog.i18n.DateTimeSymbols_teo', 'goog.i18n.DateTimeSymbols_teo_KE', 'goog.i18n.DateTimeSymbols_teo_UG', 'goog.i18n.DateTimeSymbols_th_TH', 'goog.i18n.DateTimeSymbols_ti', 'goog.i18n.DateTimeSymbols_ti_ER', 'goog.i18n.DateTimeSymbols_ti_ET', 'goog.i18n.DateTimeSymbols_to', 'goog.i18n.DateTimeSymbols_to_TO', 'goog.i18n.DateTimeSymbols_tr_CY', 'goog.i18n.DateTimeSymbols_tr_TR', 'goog.i18n.DateTimeSymbols_twq', 'goog.i18n.DateTimeSymbols_twq_NE', 'goog.i18n.DateTimeSymbols_tzm', 'goog.i18n.DateTimeSymbols_tzm_Latn', 'goog.i18n.DateTimeSymbols_tzm_Latn_MA', 'goog.i18n.DateTimeSymbols_ug', 'goog.i18n.DateTimeSymbols_ug_Arab', 'goog.i18n.DateTimeSymbols_ug_Arab_CN', 'goog.i18n.DateTimeSymbols_uk_UA', 'goog.i18n.DateTimeSymbols_ur_IN', 'goog.i18n.DateTimeSymbols_ur_PK', 'goog.i18n.DateTimeSymbols_uz_Arab', 'goog.i18n.DateTimeSymbols_uz_Arab_AF', 'goog.i18n.DateTimeSymbols_uz_Cyrl', 'goog.i18n.DateTimeSymbols_uz_Cyrl_UZ', 'goog.i18n.DateTimeSymbols_uz_Latn', 'goog.i18n.DateTimeSymbols_uz_Latn_UZ', 'goog.i18n.DateTimeSymbols_vai', 'goog.i18n.DateTimeSymbols_vai_Latn', 'goog.i18n.DateTimeSymbols_vai_Latn_LR', 'goog.i18n.DateTimeSymbols_vai_Vaii', 'goog.i18n.DateTimeSymbols_vai_Vaii_LR', 'goog.i18n.DateTimeSymbols_vi_VN', 'goog.i18n.DateTimeSymbols_vun', 'goog.i18n.DateTimeSymbols_vun_TZ', 'goog.i18n.DateTimeSymbols_wae', 'goog.i18n.DateTimeSymbols_wae_CH', 'goog.i18n.DateTimeSymbols_xog', 'goog.i18n.DateTimeSymbols_xog_UG', 'goog.i18n.DateTimeSymbols_yav', 'goog.i18n.DateTimeSymbols_yav_CM', 'goog.i18n.DateTimeSymbols_yi', 'goog.i18n.DateTimeSymbols_yi_001', 'goog.i18n.DateTimeSymbols_yo', 'goog.i18n.DateTimeSymbols_yo_BJ', 'goog.i18n.DateTimeSymbols_yo_NG', 'goog.i18n.DateTimeSymbols_zgh', 'goog.i18n.DateTimeSymbols_zgh_MA', 'goog.i18n.DateTimeSymbols_zh_Hans', 'goog.i18n.DateTimeSymbols_zh_Hans_CN', 'goog.i18n.DateTimeSymbols_zh_Hans_HK', 'goog.i18n.DateTimeSymbols_zh_Hans_MO', 'goog.i18n.DateTimeSymbols_zh_Hans_SG', 'goog.i18n.DateTimeSymbols_zh_Hant', 'goog.i18n.DateTimeSymbols_zh_Hant_HK', 'goog.i18n.DateTimeSymbols_zh_Hant_MO', 'goog.i18n.DateTimeSymbols_zh_Hant_TW', 'goog.i18n.DateTimeSymbols_zu_ZA'], ['goog.i18n.DateTimeSymbols'], false); -goog.addDependency('i18n/graphemebreak.js', ['goog.i18n.GraphemeBreak'], ['goog.structs.InversionMap'], false); -goog.addDependency('i18n/graphemebreak_test.js', ['goog.i18n.GraphemeBreakTest'], ['goog.i18n.GraphemeBreak', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/messageformat.js', ['goog.i18n.MessageFormat'], ['goog.asserts', 'goog.i18n.NumberFormat', 'goog.i18n.ordinalRules', 'goog.i18n.pluralRules'], false); -goog.addDependency('i18n/messageformat_test.js', ['goog.i18n.MessageFormatTest'], ['goog.i18n.MessageFormat', 'goog.i18n.NumberFormatSymbols_hr', 'goog.i18n.pluralRules', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/mime.js', ['goog.i18n.mime', 'goog.i18n.mime.encode'], ['goog.array'], false); -goog.addDependency('i18n/mime_test.js', ['goog.i18n.mime.encodeTest'], ['goog.i18n.mime.encode', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/numberformat.js', ['goog.i18n.NumberFormat', 'goog.i18n.NumberFormat.CurrencyStyle', 'goog.i18n.NumberFormat.Format'], ['goog.asserts', 'goog.i18n.CompactNumberFormatSymbols', 'goog.i18n.NumberFormatSymbols', 'goog.i18n.currency', 'goog.math'], false); -goog.addDependency('i18n/numberformat_test.js', ['goog.i18n.NumberFormatTest'], ['goog.i18n.CompactNumberFormatSymbols', 'goog.i18n.CompactNumberFormatSymbols_de', 'goog.i18n.CompactNumberFormatSymbols_en', 'goog.i18n.CompactNumberFormatSymbols_fr', 'goog.i18n.NumberFormat', 'goog.i18n.NumberFormatSymbols', 'goog.i18n.NumberFormatSymbols_de', 'goog.i18n.NumberFormatSymbols_en', 'goog.i18n.NumberFormatSymbols_fr', 'goog.i18n.NumberFormatSymbols_pl', 'goog.i18n.NumberFormatSymbols_ro', 'goog.testing.ExpectedFailures', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('i18n/numberformatsymbols.js', ['goog.i18n.NumberFormatSymbols', 'goog.i18n.NumberFormatSymbols_af', 'goog.i18n.NumberFormatSymbols_af_ZA', 'goog.i18n.NumberFormatSymbols_am', 'goog.i18n.NumberFormatSymbols_am_ET', 'goog.i18n.NumberFormatSymbols_ar', 'goog.i18n.NumberFormatSymbols_ar_001', 'goog.i18n.NumberFormatSymbols_ar_EG', 'goog.i18n.NumberFormatSymbols_az', 'goog.i18n.NumberFormatSymbols_az_Latn', 'goog.i18n.NumberFormatSymbols_az_Latn_AZ', 'goog.i18n.NumberFormatSymbols_be', 'goog.i18n.NumberFormatSymbols_be_BY', 'goog.i18n.NumberFormatSymbols_bg', 'goog.i18n.NumberFormatSymbols_bg_BG', 'goog.i18n.NumberFormatSymbols_bn', 'goog.i18n.NumberFormatSymbols_bn_BD', 'goog.i18n.NumberFormatSymbols_br', 'goog.i18n.NumberFormatSymbols_br_FR', 'goog.i18n.NumberFormatSymbols_bs', 'goog.i18n.NumberFormatSymbols_bs_Latn', 'goog.i18n.NumberFormatSymbols_bs_Latn_BA', 'goog.i18n.NumberFormatSymbols_ca', 'goog.i18n.NumberFormatSymbols_ca_AD', 'goog.i18n.NumberFormatSymbols_ca_ES', 'goog.i18n.NumberFormatSymbols_ca_ES_VALENCIA', 'goog.i18n.NumberFormatSymbols_ca_FR', 'goog.i18n.NumberFormatSymbols_ca_IT', 'goog.i18n.NumberFormatSymbols_chr', 'goog.i18n.NumberFormatSymbols_chr_US', 'goog.i18n.NumberFormatSymbols_cs', 'goog.i18n.NumberFormatSymbols_cs_CZ', 'goog.i18n.NumberFormatSymbols_cy', 'goog.i18n.NumberFormatSymbols_cy_GB', 'goog.i18n.NumberFormatSymbols_da', 'goog.i18n.NumberFormatSymbols_da_DK', 'goog.i18n.NumberFormatSymbols_da_GL', 'goog.i18n.NumberFormatSymbols_de', 'goog.i18n.NumberFormatSymbols_de_AT', 'goog.i18n.NumberFormatSymbols_de_BE', 'goog.i18n.NumberFormatSymbols_de_CH', 'goog.i18n.NumberFormatSymbols_de_DE', 'goog.i18n.NumberFormatSymbols_de_LU', 'goog.i18n.NumberFormatSymbols_el', 'goog.i18n.NumberFormatSymbols_el_CY', 'goog.i18n.NumberFormatSymbols_el_GR', 'goog.i18n.NumberFormatSymbols_en', 'goog.i18n.NumberFormatSymbols_en_001', 'goog.i18n.NumberFormatSymbols_en_AS', 'goog.i18n.NumberFormatSymbols_en_AU', 'goog.i18n.NumberFormatSymbols_en_CA', 'goog.i18n.NumberFormatSymbols_en_DG', 'goog.i18n.NumberFormatSymbols_en_FM', 'goog.i18n.NumberFormatSymbols_en_GB', 'goog.i18n.NumberFormatSymbols_en_GU', 'goog.i18n.NumberFormatSymbols_en_IE', 'goog.i18n.NumberFormatSymbols_en_IN', 'goog.i18n.NumberFormatSymbols_en_IO', 'goog.i18n.NumberFormatSymbols_en_MH', 'goog.i18n.NumberFormatSymbols_en_MP', 'goog.i18n.NumberFormatSymbols_en_PR', 'goog.i18n.NumberFormatSymbols_en_PW', 'goog.i18n.NumberFormatSymbols_en_SG', 'goog.i18n.NumberFormatSymbols_en_TC', 'goog.i18n.NumberFormatSymbols_en_UM', 'goog.i18n.NumberFormatSymbols_en_US', 'goog.i18n.NumberFormatSymbols_en_VG', 'goog.i18n.NumberFormatSymbols_en_VI', 'goog.i18n.NumberFormatSymbols_en_ZA', 'goog.i18n.NumberFormatSymbols_en_ZW', 'goog.i18n.NumberFormatSymbols_es', 'goog.i18n.NumberFormatSymbols_es_419', 'goog.i18n.NumberFormatSymbols_es_EA', 'goog.i18n.NumberFormatSymbols_es_ES', 'goog.i18n.NumberFormatSymbols_es_IC', 'goog.i18n.NumberFormatSymbols_es_MX', 'goog.i18n.NumberFormatSymbols_es_US', 'goog.i18n.NumberFormatSymbols_et', 'goog.i18n.NumberFormatSymbols_et_EE', 'goog.i18n.NumberFormatSymbols_eu', 'goog.i18n.NumberFormatSymbols_eu_ES', 'goog.i18n.NumberFormatSymbols_fa', 'goog.i18n.NumberFormatSymbols_fa_IR', 'goog.i18n.NumberFormatSymbols_fi', 'goog.i18n.NumberFormatSymbols_fi_FI', 'goog.i18n.NumberFormatSymbols_fil', 'goog.i18n.NumberFormatSymbols_fil_PH', 'goog.i18n.NumberFormatSymbols_fr', 'goog.i18n.NumberFormatSymbols_fr_BL', 'goog.i18n.NumberFormatSymbols_fr_CA', 'goog.i18n.NumberFormatSymbols_fr_FR', 'goog.i18n.NumberFormatSymbols_fr_GF', 'goog.i18n.NumberFormatSymbols_fr_GP', 'goog.i18n.NumberFormatSymbols_fr_MC', 'goog.i18n.NumberFormatSymbols_fr_MF', 'goog.i18n.NumberFormatSymbols_fr_MQ', 'goog.i18n.NumberFormatSymbols_fr_PM', 'goog.i18n.NumberFormatSymbols_fr_RE', 'goog.i18n.NumberFormatSymbols_fr_YT', 'goog.i18n.NumberFormatSymbols_ga', 'goog.i18n.NumberFormatSymbols_ga_IE', 'goog.i18n.NumberFormatSymbols_gl', 'goog.i18n.NumberFormatSymbols_gl_ES', 'goog.i18n.NumberFormatSymbols_gsw', 'goog.i18n.NumberFormatSymbols_gsw_CH', 'goog.i18n.NumberFormatSymbols_gsw_LI', 'goog.i18n.NumberFormatSymbols_gu', 'goog.i18n.NumberFormatSymbols_gu_IN', 'goog.i18n.NumberFormatSymbols_haw', 'goog.i18n.NumberFormatSymbols_haw_US', 'goog.i18n.NumberFormatSymbols_he', 'goog.i18n.NumberFormatSymbols_he_IL', 'goog.i18n.NumberFormatSymbols_hi', 'goog.i18n.NumberFormatSymbols_hi_IN', 'goog.i18n.NumberFormatSymbols_hr', 'goog.i18n.NumberFormatSymbols_hr_HR', 'goog.i18n.NumberFormatSymbols_hu', 'goog.i18n.NumberFormatSymbols_hu_HU', 'goog.i18n.NumberFormatSymbols_hy', 'goog.i18n.NumberFormatSymbols_hy_AM', 'goog.i18n.NumberFormatSymbols_id', 'goog.i18n.NumberFormatSymbols_id_ID', 'goog.i18n.NumberFormatSymbols_in', 'goog.i18n.NumberFormatSymbols_is', 'goog.i18n.NumberFormatSymbols_is_IS', 'goog.i18n.NumberFormatSymbols_it', 'goog.i18n.NumberFormatSymbols_it_IT', 'goog.i18n.NumberFormatSymbols_it_SM', 'goog.i18n.NumberFormatSymbols_iw', 'goog.i18n.NumberFormatSymbols_ja', 'goog.i18n.NumberFormatSymbols_ja_JP', 'goog.i18n.NumberFormatSymbols_ka', 'goog.i18n.NumberFormatSymbols_ka_GE', 'goog.i18n.NumberFormatSymbols_kk', 'goog.i18n.NumberFormatSymbols_kk_Cyrl', 'goog.i18n.NumberFormatSymbols_kk_Cyrl_KZ', 'goog.i18n.NumberFormatSymbols_km', 'goog.i18n.NumberFormatSymbols_km_KH', 'goog.i18n.NumberFormatSymbols_kn', 'goog.i18n.NumberFormatSymbols_kn_IN', 'goog.i18n.NumberFormatSymbols_ko', 'goog.i18n.NumberFormatSymbols_ko_KR', 'goog.i18n.NumberFormatSymbols_ky', 'goog.i18n.NumberFormatSymbols_ky_Cyrl', 'goog.i18n.NumberFormatSymbols_ky_Cyrl_KG', 'goog.i18n.NumberFormatSymbols_ln', 'goog.i18n.NumberFormatSymbols_ln_CD', 'goog.i18n.NumberFormatSymbols_lo', 'goog.i18n.NumberFormatSymbols_lo_LA', 'goog.i18n.NumberFormatSymbols_lt', 'goog.i18n.NumberFormatSymbols_lt_LT', 'goog.i18n.NumberFormatSymbols_lv', 'goog.i18n.NumberFormatSymbols_lv_LV', 'goog.i18n.NumberFormatSymbols_mk', 'goog.i18n.NumberFormatSymbols_mk_MK', 'goog.i18n.NumberFormatSymbols_ml', 'goog.i18n.NumberFormatSymbols_ml_IN', 'goog.i18n.NumberFormatSymbols_mn', 'goog.i18n.NumberFormatSymbols_mn_Cyrl', 'goog.i18n.NumberFormatSymbols_mn_Cyrl_MN', 'goog.i18n.NumberFormatSymbols_mr', 'goog.i18n.NumberFormatSymbols_mr_IN', 'goog.i18n.NumberFormatSymbols_ms', 'goog.i18n.NumberFormatSymbols_ms_Latn', 'goog.i18n.NumberFormatSymbols_ms_Latn_MY', 'goog.i18n.NumberFormatSymbols_mt', 'goog.i18n.NumberFormatSymbols_mt_MT', 'goog.i18n.NumberFormatSymbols_my', 'goog.i18n.NumberFormatSymbols_my_MM', 'goog.i18n.NumberFormatSymbols_nb', 'goog.i18n.NumberFormatSymbols_nb_NO', 'goog.i18n.NumberFormatSymbols_nb_SJ', 'goog.i18n.NumberFormatSymbols_ne', 'goog.i18n.NumberFormatSymbols_ne_NP', 'goog.i18n.NumberFormatSymbols_nl', 'goog.i18n.NumberFormatSymbols_nl_NL', 'goog.i18n.NumberFormatSymbols_no', 'goog.i18n.NumberFormatSymbols_no_NO', 'goog.i18n.NumberFormatSymbols_or', 'goog.i18n.NumberFormatSymbols_or_IN', 'goog.i18n.NumberFormatSymbols_pa', 'goog.i18n.NumberFormatSymbols_pa_Guru', 'goog.i18n.NumberFormatSymbols_pa_Guru_IN', 'goog.i18n.NumberFormatSymbols_pl', 'goog.i18n.NumberFormatSymbols_pl_PL', 'goog.i18n.NumberFormatSymbols_pt', 'goog.i18n.NumberFormatSymbols_pt_BR', 'goog.i18n.NumberFormatSymbols_pt_PT', 'goog.i18n.NumberFormatSymbols_ro', 'goog.i18n.NumberFormatSymbols_ro_RO', 'goog.i18n.NumberFormatSymbols_ru', 'goog.i18n.NumberFormatSymbols_ru_RU', 'goog.i18n.NumberFormatSymbols_si', 'goog.i18n.NumberFormatSymbols_si_LK', 'goog.i18n.NumberFormatSymbols_sk', 'goog.i18n.NumberFormatSymbols_sk_SK', 'goog.i18n.NumberFormatSymbols_sl', 'goog.i18n.NumberFormatSymbols_sl_SI', 'goog.i18n.NumberFormatSymbols_sq', 'goog.i18n.NumberFormatSymbols_sq_AL', 'goog.i18n.NumberFormatSymbols_sr', 'goog.i18n.NumberFormatSymbols_sr_Cyrl', 'goog.i18n.NumberFormatSymbols_sr_Cyrl_RS', 'goog.i18n.NumberFormatSymbols_sr_Latn', 'goog.i18n.NumberFormatSymbols_sr_Latn_RS', 'goog.i18n.NumberFormatSymbols_sv', 'goog.i18n.NumberFormatSymbols_sv_SE', 'goog.i18n.NumberFormatSymbols_sw', 'goog.i18n.NumberFormatSymbols_sw_TZ', 'goog.i18n.NumberFormatSymbols_ta', 'goog.i18n.NumberFormatSymbols_ta_IN', 'goog.i18n.NumberFormatSymbols_te', 'goog.i18n.NumberFormatSymbols_te_IN', 'goog.i18n.NumberFormatSymbols_th', 'goog.i18n.NumberFormatSymbols_th_TH', 'goog.i18n.NumberFormatSymbols_tl', 'goog.i18n.NumberFormatSymbols_tr', 'goog.i18n.NumberFormatSymbols_tr_TR', 'goog.i18n.NumberFormatSymbols_uk', 'goog.i18n.NumberFormatSymbols_uk_UA', 'goog.i18n.NumberFormatSymbols_ur', 'goog.i18n.NumberFormatSymbols_ur_PK', 'goog.i18n.NumberFormatSymbols_uz', 'goog.i18n.NumberFormatSymbols_uz_Latn', 'goog.i18n.NumberFormatSymbols_uz_Latn_UZ', 'goog.i18n.NumberFormatSymbols_vi', 'goog.i18n.NumberFormatSymbols_vi_VN', 'goog.i18n.NumberFormatSymbols_zh', 'goog.i18n.NumberFormatSymbols_zh_CN', 'goog.i18n.NumberFormatSymbols_zh_HK', 'goog.i18n.NumberFormatSymbols_zh_Hans', 'goog.i18n.NumberFormatSymbols_zh_Hans_CN', 'goog.i18n.NumberFormatSymbols_zh_TW', 'goog.i18n.NumberFormatSymbols_zu', 'goog.i18n.NumberFormatSymbols_zu_ZA'], [], false); -goog.addDependency('i18n/numberformatsymbolsext.js', ['goog.i18n.NumberFormatSymbolsExt', 'goog.i18n.NumberFormatSymbols_af_NA', 'goog.i18n.NumberFormatSymbols_agq', 'goog.i18n.NumberFormatSymbols_agq_CM', 'goog.i18n.NumberFormatSymbols_ak', 'goog.i18n.NumberFormatSymbols_ak_GH', 'goog.i18n.NumberFormatSymbols_ar_AE', 'goog.i18n.NumberFormatSymbols_ar_BH', 'goog.i18n.NumberFormatSymbols_ar_DJ', 'goog.i18n.NumberFormatSymbols_ar_DZ', 'goog.i18n.NumberFormatSymbols_ar_EH', 'goog.i18n.NumberFormatSymbols_ar_ER', 'goog.i18n.NumberFormatSymbols_ar_IL', 'goog.i18n.NumberFormatSymbols_ar_IQ', 'goog.i18n.NumberFormatSymbols_ar_JO', 'goog.i18n.NumberFormatSymbols_ar_KM', 'goog.i18n.NumberFormatSymbols_ar_KW', 'goog.i18n.NumberFormatSymbols_ar_LB', 'goog.i18n.NumberFormatSymbols_ar_LY', 'goog.i18n.NumberFormatSymbols_ar_MA', 'goog.i18n.NumberFormatSymbols_ar_MR', 'goog.i18n.NumberFormatSymbols_ar_OM', 'goog.i18n.NumberFormatSymbols_ar_PS', 'goog.i18n.NumberFormatSymbols_ar_QA', 'goog.i18n.NumberFormatSymbols_ar_SA', 'goog.i18n.NumberFormatSymbols_ar_SD', 'goog.i18n.NumberFormatSymbols_ar_SO', 'goog.i18n.NumberFormatSymbols_ar_SS', 'goog.i18n.NumberFormatSymbols_ar_SY', 'goog.i18n.NumberFormatSymbols_ar_TD', 'goog.i18n.NumberFormatSymbols_ar_TN', 'goog.i18n.NumberFormatSymbols_ar_YE', 'goog.i18n.NumberFormatSymbols_as', 'goog.i18n.NumberFormatSymbols_as_IN', 'goog.i18n.NumberFormatSymbols_asa', 'goog.i18n.NumberFormatSymbols_asa_TZ', 'goog.i18n.NumberFormatSymbols_ast', 'goog.i18n.NumberFormatSymbols_ast_ES', 'goog.i18n.NumberFormatSymbols_az_Cyrl', 'goog.i18n.NumberFormatSymbols_az_Cyrl_AZ', 'goog.i18n.NumberFormatSymbols_bas', 'goog.i18n.NumberFormatSymbols_bas_CM', 'goog.i18n.NumberFormatSymbols_bem', 'goog.i18n.NumberFormatSymbols_bem_ZM', 'goog.i18n.NumberFormatSymbols_bez', 'goog.i18n.NumberFormatSymbols_bez_TZ', 'goog.i18n.NumberFormatSymbols_bm', 'goog.i18n.NumberFormatSymbols_bm_Latn', 'goog.i18n.NumberFormatSymbols_bm_Latn_ML', 'goog.i18n.NumberFormatSymbols_bn_IN', 'goog.i18n.NumberFormatSymbols_bo', 'goog.i18n.NumberFormatSymbols_bo_CN', 'goog.i18n.NumberFormatSymbols_bo_IN', 'goog.i18n.NumberFormatSymbols_brx', 'goog.i18n.NumberFormatSymbols_brx_IN', 'goog.i18n.NumberFormatSymbols_bs_Cyrl', 'goog.i18n.NumberFormatSymbols_bs_Cyrl_BA', 'goog.i18n.NumberFormatSymbols_cgg', 'goog.i18n.NumberFormatSymbols_cgg_UG', 'goog.i18n.NumberFormatSymbols_ckb', 'goog.i18n.NumberFormatSymbols_ckb_Arab', 'goog.i18n.NumberFormatSymbols_ckb_Arab_IQ', 'goog.i18n.NumberFormatSymbols_ckb_Arab_IR', 'goog.i18n.NumberFormatSymbols_ckb_IQ', 'goog.i18n.NumberFormatSymbols_ckb_IR', 'goog.i18n.NumberFormatSymbols_ckb_Latn', 'goog.i18n.NumberFormatSymbols_ckb_Latn_IQ', 'goog.i18n.NumberFormatSymbols_dav', 'goog.i18n.NumberFormatSymbols_dav_KE', 'goog.i18n.NumberFormatSymbols_de_LI', 'goog.i18n.NumberFormatSymbols_dje', 'goog.i18n.NumberFormatSymbols_dje_NE', 'goog.i18n.NumberFormatSymbols_dsb', 'goog.i18n.NumberFormatSymbols_dsb_DE', 'goog.i18n.NumberFormatSymbols_dua', 'goog.i18n.NumberFormatSymbols_dua_CM', 'goog.i18n.NumberFormatSymbols_dyo', 'goog.i18n.NumberFormatSymbols_dyo_SN', 'goog.i18n.NumberFormatSymbols_dz', 'goog.i18n.NumberFormatSymbols_dz_BT', 'goog.i18n.NumberFormatSymbols_ebu', 'goog.i18n.NumberFormatSymbols_ebu_KE', 'goog.i18n.NumberFormatSymbols_ee', 'goog.i18n.NumberFormatSymbols_ee_GH', 'goog.i18n.NumberFormatSymbols_ee_TG', 'goog.i18n.NumberFormatSymbols_en_150', 'goog.i18n.NumberFormatSymbols_en_AG', 'goog.i18n.NumberFormatSymbols_en_AI', 'goog.i18n.NumberFormatSymbols_en_BB', 'goog.i18n.NumberFormatSymbols_en_BE', 'goog.i18n.NumberFormatSymbols_en_BM', 'goog.i18n.NumberFormatSymbols_en_BS', 'goog.i18n.NumberFormatSymbols_en_BW', 'goog.i18n.NumberFormatSymbols_en_BZ', 'goog.i18n.NumberFormatSymbols_en_CC', 'goog.i18n.NumberFormatSymbols_en_CK', 'goog.i18n.NumberFormatSymbols_en_CM', 'goog.i18n.NumberFormatSymbols_en_CX', 'goog.i18n.NumberFormatSymbols_en_DM', 'goog.i18n.NumberFormatSymbols_en_ER', 'goog.i18n.NumberFormatSymbols_en_FJ', 'goog.i18n.NumberFormatSymbols_en_FK', 'goog.i18n.NumberFormatSymbols_en_GD', 'goog.i18n.NumberFormatSymbols_en_GG', 'goog.i18n.NumberFormatSymbols_en_GH', 'goog.i18n.NumberFormatSymbols_en_GI', 'goog.i18n.NumberFormatSymbols_en_GM', 'goog.i18n.NumberFormatSymbols_en_GY', 'goog.i18n.NumberFormatSymbols_en_HK', 'goog.i18n.NumberFormatSymbols_en_IM', 'goog.i18n.NumberFormatSymbols_en_JE', 'goog.i18n.NumberFormatSymbols_en_JM', 'goog.i18n.NumberFormatSymbols_en_KE', 'goog.i18n.NumberFormatSymbols_en_KI', 'goog.i18n.NumberFormatSymbols_en_KN', 'goog.i18n.NumberFormatSymbols_en_KY', 'goog.i18n.NumberFormatSymbols_en_LC', 'goog.i18n.NumberFormatSymbols_en_LR', 'goog.i18n.NumberFormatSymbols_en_LS', 'goog.i18n.NumberFormatSymbols_en_MG', 'goog.i18n.NumberFormatSymbols_en_MO', 'goog.i18n.NumberFormatSymbols_en_MS', 'goog.i18n.NumberFormatSymbols_en_MT', 'goog.i18n.NumberFormatSymbols_en_MU', 'goog.i18n.NumberFormatSymbols_en_MW', 'goog.i18n.NumberFormatSymbols_en_MY', 'goog.i18n.NumberFormatSymbols_en_NA', 'goog.i18n.NumberFormatSymbols_en_NF', 'goog.i18n.NumberFormatSymbols_en_NG', 'goog.i18n.NumberFormatSymbols_en_NR', 'goog.i18n.NumberFormatSymbols_en_NU', 'goog.i18n.NumberFormatSymbols_en_NZ', 'goog.i18n.NumberFormatSymbols_en_PG', 'goog.i18n.NumberFormatSymbols_en_PH', 'goog.i18n.NumberFormatSymbols_en_PK', 'goog.i18n.NumberFormatSymbols_en_PN', 'goog.i18n.NumberFormatSymbols_en_RW', 'goog.i18n.NumberFormatSymbols_en_SB', 'goog.i18n.NumberFormatSymbols_en_SC', 'goog.i18n.NumberFormatSymbols_en_SD', 'goog.i18n.NumberFormatSymbols_en_SH', 'goog.i18n.NumberFormatSymbols_en_SL', 'goog.i18n.NumberFormatSymbols_en_SS', 'goog.i18n.NumberFormatSymbols_en_SX', 'goog.i18n.NumberFormatSymbols_en_SZ', 'goog.i18n.NumberFormatSymbols_en_TK', 'goog.i18n.NumberFormatSymbols_en_TO', 'goog.i18n.NumberFormatSymbols_en_TT', 'goog.i18n.NumberFormatSymbols_en_TV', 'goog.i18n.NumberFormatSymbols_en_TZ', 'goog.i18n.NumberFormatSymbols_en_UG', 'goog.i18n.NumberFormatSymbols_en_VC', 'goog.i18n.NumberFormatSymbols_en_VU', 'goog.i18n.NumberFormatSymbols_en_WS', 'goog.i18n.NumberFormatSymbols_en_ZM', 'goog.i18n.NumberFormatSymbols_eo', 'goog.i18n.NumberFormatSymbols_eo_001', 'goog.i18n.NumberFormatSymbols_es_AR', 'goog.i18n.NumberFormatSymbols_es_BO', 'goog.i18n.NumberFormatSymbols_es_CL', 'goog.i18n.NumberFormatSymbols_es_CO', 'goog.i18n.NumberFormatSymbols_es_CR', 'goog.i18n.NumberFormatSymbols_es_CU', 'goog.i18n.NumberFormatSymbols_es_DO', 'goog.i18n.NumberFormatSymbols_es_EC', 'goog.i18n.NumberFormatSymbols_es_GQ', 'goog.i18n.NumberFormatSymbols_es_GT', 'goog.i18n.NumberFormatSymbols_es_HN', 'goog.i18n.NumberFormatSymbols_es_NI', 'goog.i18n.NumberFormatSymbols_es_PA', 'goog.i18n.NumberFormatSymbols_es_PE', 'goog.i18n.NumberFormatSymbols_es_PH', 'goog.i18n.NumberFormatSymbols_es_PR', 'goog.i18n.NumberFormatSymbols_es_PY', 'goog.i18n.NumberFormatSymbols_es_SV', 'goog.i18n.NumberFormatSymbols_es_UY', 'goog.i18n.NumberFormatSymbols_es_VE', 'goog.i18n.NumberFormatSymbols_ewo', 'goog.i18n.NumberFormatSymbols_ewo_CM', 'goog.i18n.NumberFormatSymbols_fa_AF', 'goog.i18n.NumberFormatSymbols_ff', 'goog.i18n.NumberFormatSymbols_ff_CM', 'goog.i18n.NumberFormatSymbols_ff_GN', 'goog.i18n.NumberFormatSymbols_ff_MR', 'goog.i18n.NumberFormatSymbols_ff_SN', 'goog.i18n.NumberFormatSymbols_fo', 'goog.i18n.NumberFormatSymbols_fo_FO', 'goog.i18n.NumberFormatSymbols_fr_BE', 'goog.i18n.NumberFormatSymbols_fr_BF', 'goog.i18n.NumberFormatSymbols_fr_BI', 'goog.i18n.NumberFormatSymbols_fr_BJ', 'goog.i18n.NumberFormatSymbols_fr_CD', 'goog.i18n.NumberFormatSymbols_fr_CF', 'goog.i18n.NumberFormatSymbols_fr_CG', 'goog.i18n.NumberFormatSymbols_fr_CH', 'goog.i18n.NumberFormatSymbols_fr_CI', 'goog.i18n.NumberFormatSymbols_fr_CM', 'goog.i18n.NumberFormatSymbols_fr_DJ', 'goog.i18n.NumberFormatSymbols_fr_DZ', 'goog.i18n.NumberFormatSymbols_fr_GA', 'goog.i18n.NumberFormatSymbols_fr_GN', 'goog.i18n.NumberFormatSymbols_fr_GQ', 'goog.i18n.NumberFormatSymbols_fr_HT', 'goog.i18n.NumberFormatSymbols_fr_KM', 'goog.i18n.NumberFormatSymbols_fr_LU', 'goog.i18n.NumberFormatSymbols_fr_MA', 'goog.i18n.NumberFormatSymbols_fr_MG', 'goog.i18n.NumberFormatSymbols_fr_ML', 'goog.i18n.NumberFormatSymbols_fr_MR', 'goog.i18n.NumberFormatSymbols_fr_MU', 'goog.i18n.NumberFormatSymbols_fr_NC', 'goog.i18n.NumberFormatSymbols_fr_NE', 'goog.i18n.NumberFormatSymbols_fr_PF', 'goog.i18n.NumberFormatSymbols_fr_RW', 'goog.i18n.NumberFormatSymbols_fr_SC', 'goog.i18n.NumberFormatSymbols_fr_SN', 'goog.i18n.NumberFormatSymbols_fr_SY', 'goog.i18n.NumberFormatSymbols_fr_TD', 'goog.i18n.NumberFormatSymbols_fr_TG', 'goog.i18n.NumberFormatSymbols_fr_TN', 'goog.i18n.NumberFormatSymbols_fr_VU', 'goog.i18n.NumberFormatSymbols_fr_WF', 'goog.i18n.NumberFormatSymbols_fur', 'goog.i18n.NumberFormatSymbols_fur_IT', 'goog.i18n.NumberFormatSymbols_fy', 'goog.i18n.NumberFormatSymbols_fy_NL', 'goog.i18n.NumberFormatSymbols_gd', 'goog.i18n.NumberFormatSymbols_gd_GB', 'goog.i18n.NumberFormatSymbols_gsw_FR', 'goog.i18n.NumberFormatSymbols_guz', 'goog.i18n.NumberFormatSymbols_guz_KE', 'goog.i18n.NumberFormatSymbols_gv', 'goog.i18n.NumberFormatSymbols_gv_IM', 'goog.i18n.NumberFormatSymbols_ha', 'goog.i18n.NumberFormatSymbols_ha_Latn', 'goog.i18n.NumberFormatSymbols_ha_Latn_GH', 'goog.i18n.NumberFormatSymbols_ha_Latn_NE', 'goog.i18n.NumberFormatSymbols_ha_Latn_NG', 'goog.i18n.NumberFormatSymbols_hr_BA', 'goog.i18n.NumberFormatSymbols_hsb', 'goog.i18n.NumberFormatSymbols_hsb_DE', 'goog.i18n.NumberFormatSymbols_ig', 'goog.i18n.NumberFormatSymbols_ig_NG', 'goog.i18n.NumberFormatSymbols_ii', 'goog.i18n.NumberFormatSymbols_ii_CN', 'goog.i18n.NumberFormatSymbols_it_CH', 'goog.i18n.NumberFormatSymbols_jgo', 'goog.i18n.NumberFormatSymbols_jgo_CM', 'goog.i18n.NumberFormatSymbols_jmc', 'goog.i18n.NumberFormatSymbols_jmc_TZ', 'goog.i18n.NumberFormatSymbols_kab', 'goog.i18n.NumberFormatSymbols_kab_DZ', 'goog.i18n.NumberFormatSymbols_kam', 'goog.i18n.NumberFormatSymbols_kam_KE', 'goog.i18n.NumberFormatSymbols_kde', 'goog.i18n.NumberFormatSymbols_kde_TZ', 'goog.i18n.NumberFormatSymbols_kea', 'goog.i18n.NumberFormatSymbols_kea_CV', 'goog.i18n.NumberFormatSymbols_khq', 'goog.i18n.NumberFormatSymbols_khq_ML', 'goog.i18n.NumberFormatSymbols_ki', 'goog.i18n.NumberFormatSymbols_ki_KE', 'goog.i18n.NumberFormatSymbols_kkj', 'goog.i18n.NumberFormatSymbols_kkj_CM', 'goog.i18n.NumberFormatSymbols_kl', 'goog.i18n.NumberFormatSymbols_kl_GL', 'goog.i18n.NumberFormatSymbols_kln', 'goog.i18n.NumberFormatSymbols_kln_KE', 'goog.i18n.NumberFormatSymbols_ko_KP', 'goog.i18n.NumberFormatSymbols_kok', 'goog.i18n.NumberFormatSymbols_kok_IN', 'goog.i18n.NumberFormatSymbols_ks', 'goog.i18n.NumberFormatSymbols_ks_Arab', 'goog.i18n.NumberFormatSymbols_ks_Arab_IN', 'goog.i18n.NumberFormatSymbols_ksb', 'goog.i18n.NumberFormatSymbols_ksb_TZ', 'goog.i18n.NumberFormatSymbols_ksf', 'goog.i18n.NumberFormatSymbols_ksf_CM', 'goog.i18n.NumberFormatSymbols_ksh', 'goog.i18n.NumberFormatSymbols_ksh_DE', 'goog.i18n.NumberFormatSymbols_kw', 'goog.i18n.NumberFormatSymbols_kw_GB', 'goog.i18n.NumberFormatSymbols_lag', 'goog.i18n.NumberFormatSymbols_lag_TZ', 'goog.i18n.NumberFormatSymbols_lb', 'goog.i18n.NumberFormatSymbols_lb_LU', 'goog.i18n.NumberFormatSymbols_lg', 'goog.i18n.NumberFormatSymbols_lg_UG', 'goog.i18n.NumberFormatSymbols_lkt', 'goog.i18n.NumberFormatSymbols_lkt_US', 'goog.i18n.NumberFormatSymbols_ln_AO', 'goog.i18n.NumberFormatSymbols_ln_CF', 'goog.i18n.NumberFormatSymbols_ln_CG', 'goog.i18n.NumberFormatSymbols_lu', 'goog.i18n.NumberFormatSymbols_lu_CD', 'goog.i18n.NumberFormatSymbols_luo', 'goog.i18n.NumberFormatSymbols_luo_KE', 'goog.i18n.NumberFormatSymbols_luy', 'goog.i18n.NumberFormatSymbols_luy_KE', 'goog.i18n.NumberFormatSymbols_mas', 'goog.i18n.NumberFormatSymbols_mas_KE', 'goog.i18n.NumberFormatSymbols_mas_TZ', 'goog.i18n.NumberFormatSymbols_mer', 'goog.i18n.NumberFormatSymbols_mer_KE', 'goog.i18n.NumberFormatSymbols_mfe', 'goog.i18n.NumberFormatSymbols_mfe_MU', 'goog.i18n.NumberFormatSymbols_mg', 'goog.i18n.NumberFormatSymbols_mg_MG', 'goog.i18n.NumberFormatSymbols_mgh', 'goog.i18n.NumberFormatSymbols_mgh_MZ', 'goog.i18n.NumberFormatSymbols_mgo', 'goog.i18n.NumberFormatSymbols_mgo_CM', 'goog.i18n.NumberFormatSymbols_ms_Latn_BN', 'goog.i18n.NumberFormatSymbols_ms_Latn_SG', 'goog.i18n.NumberFormatSymbols_mua', 'goog.i18n.NumberFormatSymbols_mua_CM', 'goog.i18n.NumberFormatSymbols_naq', 'goog.i18n.NumberFormatSymbols_naq_NA', 'goog.i18n.NumberFormatSymbols_nd', 'goog.i18n.NumberFormatSymbols_nd_ZW', 'goog.i18n.NumberFormatSymbols_ne_IN', 'goog.i18n.NumberFormatSymbols_nl_AW', 'goog.i18n.NumberFormatSymbols_nl_BE', 'goog.i18n.NumberFormatSymbols_nl_BQ', 'goog.i18n.NumberFormatSymbols_nl_CW', 'goog.i18n.NumberFormatSymbols_nl_SR', 'goog.i18n.NumberFormatSymbols_nl_SX', 'goog.i18n.NumberFormatSymbols_nmg', 'goog.i18n.NumberFormatSymbols_nmg_CM', 'goog.i18n.NumberFormatSymbols_nn', 'goog.i18n.NumberFormatSymbols_nn_NO', 'goog.i18n.NumberFormatSymbols_nnh', 'goog.i18n.NumberFormatSymbols_nnh_CM', 'goog.i18n.NumberFormatSymbols_nus', 'goog.i18n.NumberFormatSymbols_nus_SD', 'goog.i18n.NumberFormatSymbols_nyn', 'goog.i18n.NumberFormatSymbols_nyn_UG', 'goog.i18n.NumberFormatSymbols_om', 'goog.i18n.NumberFormatSymbols_om_ET', 'goog.i18n.NumberFormatSymbols_om_KE', 'goog.i18n.NumberFormatSymbols_os', 'goog.i18n.NumberFormatSymbols_os_GE', 'goog.i18n.NumberFormatSymbols_os_RU', 'goog.i18n.NumberFormatSymbols_pa_Arab', 'goog.i18n.NumberFormatSymbols_pa_Arab_PK', 'goog.i18n.NumberFormatSymbols_ps', 'goog.i18n.NumberFormatSymbols_ps_AF', 'goog.i18n.NumberFormatSymbols_pt_AO', 'goog.i18n.NumberFormatSymbols_pt_CV', 'goog.i18n.NumberFormatSymbols_pt_GW', 'goog.i18n.NumberFormatSymbols_pt_MO', 'goog.i18n.NumberFormatSymbols_pt_MZ', 'goog.i18n.NumberFormatSymbols_pt_ST', 'goog.i18n.NumberFormatSymbols_pt_TL', 'goog.i18n.NumberFormatSymbols_qu', 'goog.i18n.NumberFormatSymbols_qu_BO', 'goog.i18n.NumberFormatSymbols_qu_EC', 'goog.i18n.NumberFormatSymbols_qu_PE', 'goog.i18n.NumberFormatSymbols_rm', 'goog.i18n.NumberFormatSymbols_rm_CH', 'goog.i18n.NumberFormatSymbols_rn', 'goog.i18n.NumberFormatSymbols_rn_BI', 'goog.i18n.NumberFormatSymbols_ro_MD', 'goog.i18n.NumberFormatSymbols_rof', 'goog.i18n.NumberFormatSymbols_rof_TZ', 'goog.i18n.NumberFormatSymbols_ru_BY', 'goog.i18n.NumberFormatSymbols_ru_KG', 'goog.i18n.NumberFormatSymbols_ru_KZ', 'goog.i18n.NumberFormatSymbols_ru_MD', 'goog.i18n.NumberFormatSymbols_ru_UA', 'goog.i18n.NumberFormatSymbols_rw', 'goog.i18n.NumberFormatSymbols_rw_RW', 'goog.i18n.NumberFormatSymbols_rwk', 'goog.i18n.NumberFormatSymbols_rwk_TZ', 'goog.i18n.NumberFormatSymbols_sah', 'goog.i18n.NumberFormatSymbols_sah_RU', 'goog.i18n.NumberFormatSymbols_saq', 'goog.i18n.NumberFormatSymbols_saq_KE', 'goog.i18n.NumberFormatSymbols_sbp', 'goog.i18n.NumberFormatSymbols_sbp_TZ', 'goog.i18n.NumberFormatSymbols_se', 'goog.i18n.NumberFormatSymbols_se_FI', 'goog.i18n.NumberFormatSymbols_se_NO', 'goog.i18n.NumberFormatSymbols_se_SE', 'goog.i18n.NumberFormatSymbols_seh', 'goog.i18n.NumberFormatSymbols_seh_MZ', 'goog.i18n.NumberFormatSymbols_ses', 'goog.i18n.NumberFormatSymbols_ses_ML', 'goog.i18n.NumberFormatSymbols_sg', 'goog.i18n.NumberFormatSymbols_sg_CF', 'goog.i18n.NumberFormatSymbols_shi', 'goog.i18n.NumberFormatSymbols_shi_Latn', 'goog.i18n.NumberFormatSymbols_shi_Latn_MA', 'goog.i18n.NumberFormatSymbols_shi_Tfng', 'goog.i18n.NumberFormatSymbols_shi_Tfng_MA', 'goog.i18n.NumberFormatSymbols_smn', 'goog.i18n.NumberFormatSymbols_smn_FI', 'goog.i18n.NumberFormatSymbols_sn', 'goog.i18n.NumberFormatSymbols_sn_ZW', 'goog.i18n.NumberFormatSymbols_so', 'goog.i18n.NumberFormatSymbols_so_DJ', 'goog.i18n.NumberFormatSymbols_so_ET', 'goog.i18n.NumberFormatSymbols_so_KE', 'goog.i18n.NumberFormatSymbols_so_SO', 'goog.i18n.NumberFormatSymbols_sq_MK', 'goog.i18n.NumberFormatSymbols_sq_XK', 'goog.i18n.NumberFormatSymbols_sr_Cyrl_BA', 'goog.i18n.NumberFormatSymbols_sr_Cyrl_ME', 'goog.i18n.NumberFormatSymbols_sr_Cyrl_XK', 'goog.i18n.NumberFormatSymbols_sr_Latn_BA', 'goog.i18n.NumberFormatSymbols_sr_Latn_ME', 'goog.i18n.NumberFormatSymbols_sr_Latn_XK', 'goog.i18n.NumberFormatSymbols_sv_AX', 'goog.i18n.NumberFormatSymbols_sv_FI', 'goog.i18n.NumberFormatSymbols_sw_CD', 'goog.i18n.NumberFormatSymbols_sw_KE', 'goog.i18n.NumberFormatSymbols_sw_UG', 'goog.i18n.NumberFormatSymbols_ta_LK', 'goog.i18n.NumberFormatSymbols_ta_MY', 'goog.i18n.NumberFormatSymbols_ta_SG', 'goog.i18n.NumberFormatSymbols_teo', 'goog.i18n.NumberFormatSymbols_teo_KE', 'goog.i18n.NumberFormatSymbols_teo_UG', 'goog.i18n.NumberFormatSymbols_ti', 'goog.i18n.NumberFormatSymbols_ti_ER', 'goog.i18n.NumberFormatSymbols_ti_ET', 'goog.i18n.NumberFormatSymbols_to', 'goog.i18n.NumberFormatSymbols_to_TO', 'goog.i18n.NumberFormatSymbols_tr_CY', 'goog.i18n.NumberFormatSymbols_twq', 'goog.i18n.NumberFormatSymbols_twq_NE', 'goog.i18n.NumberFormatSymbols_tzm', 'goog.i18n.NumberFormatSymbols_tzm_Latn', 'goog.i18n.NumberFormatSymbols_tzm_Latn_MA', 'goog.i18n.NumberFormatSymbols_ug', 'goog.i18n.NumberFormatSymbols_ug_Arab', 'goog.i18n.NumberFormatSymbols_ug_Arab_CN', 'goog.i18n.NumberFormatSymbols_ur_IN', 'goog.i18n.NumberFormatSymbols_uz_Arab', 'goog.i18n.NumberFormatSymbols_uz_Arab_AF', 'goog.i18n.NumberFormatSymbols_uz_Cyrl', 'goog.i18n.NumberFormatSymbols_uz_Cyrl_UZ', 'goog.i18n.NumberFormatSymbols_vai', 'goog.i18n.NumberFormatSymbols_vai_Latn', 'goog.i18n.NumberFormatSymbols_vai_Latn_LR', 'goog.i18n.NumberFormatSymbols_vai_Vaii', 'goog.i18n.NumberFormatSymbols_vai_Vaii_LR', 'goog.i18n.NumberFormatSymbols_vun', 'goog.i18n.NumberFormatSymbols_vun_TZ', 'goog.i18n.NumberFormatSymbols_wae', 'goog.i18n.NumberFormatSymbols_wae_CH', 'goog.i18n.NumberFormatSymbols_xog', 'goog.i18n.NumberFormatSymbols_xog_UG', 'goog.i18n.NumberFormatSymbols_yav', 'goog.i18n.NumberFormatSymbols_yav_CM', 'goog.i18n.NumberFormatSymbols_yi', 'goog.i18n.NumberFormatSymbols_yi_001', 'goog.i18n.NumberFormatSymbols_yo', 'goog.i18n.NumberFormatSymbols_yo_BJ', 'goog.i18n.NumberFormatSymbols_yo_NG', 'goog.i18n.NumberFormatSymbols_zgh', 'goog.i18n.NumberFormatSymbols_zgh_MA', 'goog.i18n.NumberFormatSymbols_zh_Hans_HK', 'goog.i18n.NumberFormatSymbols_zh_Hans_MO', 'goog.i18n.NumberFormatSymbols_zh_Hans_SG', 'goog.i18n.NumberFormatSymbols_zh_Hant', 'goog.i18n.NumberFormatSymbols_zh_Hant_HK', 'goog.i18n.NumberFormatSymbols_zh_Hant_MO', 'goog.i18n.NumberFormatSymbols_zh_Hant_TW'], ['goog.i18n.NumberFormatSymbols'], false); -goog.addDependency('i18n/ordinalrules.js', ['goog.i18n.ordinalRules'], [], false); -goog.addDependency('i18n/pluralrules.js', ['goog.i18n.pluralRules'], [], false); -goog.addDependency('i18n/pluralrules_test.js', ['goog.i18n.pluralRulesTest'], ['goog.i18n.pluralRules', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/timezone.js', ['goog.i18n.TimeZone'], ['goog.array', 'goog.date.DateLike', 'goog.object', 'goog.string'], false); -goog.addDependency('i18n/timezone_test.js', ['goog.i18n.TimeZoneTest'], ['goog.i18n.TimeZone', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/uchar.js', ['goog.i18n.uChar'], [], false); -goog.addDependency('i18n/uchar/localnamefetcher.js', ['goog.i18n.uChar.LocalNameFetcher'], ['goog.i18n.uChar.NameFetcher', 'goog.i18n.uCharNames', 'goog.log'], false); -goog.addDependency('i18n/uchar/localnamefetcher_test.js', ['goog.i18n.uChar.LocalNameFetcherTest'], ['goog.i18n.uChar.LocalNameFetcher', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('i18n/uchar/namefetcher.js', ['goog.i18n.uChar.NameFetcher'], [], false); -goog.addDependency('i18n/uchar/remotenamefetcher.js', ['goog.i18n.uChar.RemoteNameFetcher'], ['goog.Disposable', 'goog.Uri', 'goog.i18n.uChar', 'goog.i18n.uChar.NameFetcher', 'goog.log', 'goog.net.XhrIo', 'goog.structs.Map'], false); -goog.addDependency('i18n/uchar/remotenamefetcher_test.js', ['goog.i18n.uChar.RemoteNameFetcherTest'], ['goog.i18n.uChar.RemoteNameFetcher', 'goog.net.XhrIo', 'goog.testing.jsunit', 'goog.testing.net.XhrIo', 'goog.testing.recordFunction'], false); -goog.addDependency('i18n/uchar_test.js', ['goog.i18n.uCharTest'], ['goog.i18n.uChar', 'goog.testing.jsunit'], false); -goog.addDependency('i18n/ucharnames.js', ['goog.i18n.uCharNames'], ['goog.i18n.uChar'], false); -goog.addDependency('i18n/ucharnames_test.js', ['goog.i18n.uCharNamesTest'], ['goog.i18n.uCharNames', 'goog.testing.jsunit'], false); -goog.addDependency('iter/iter.js', ['goog.iter', 'goog.iter.Iterable', 'goog.iter.Iterator', 'goog.iter.StopIteration'], ['goog.array', 'goog.asserts', 'goog.functions', 'goog.math'], false); -goog.addDependency('iter/iter_test.js', ['goog.iterTest'], ['goog.iter', 'goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.testing.jsunit'], false); -goog.addDependency('json/evaljsonprocessor.js', ['goog.json.EvalJsonProcessor'], ['goog.json', 'goog.json.Processor', 'goog.json.Serializer'], false); -goog.addDependency('json/hybrid.js', ['goog.json.hybrid'], ['goog.asserts', 'goog.json'], false); -goog.addDependency('json/hybrid_test.js', ['goog.json.hybridTest'], ['goog.json', 'goog.json.hybrid', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('json/hybridjsonprocessor.js', ['goog.json.HybridJsonProcessor'], ['goog.json.Processor', 'goog.json.hybrid'], false); -goog.addDependency('json/hybridjsonprocessor_test.js', ['goog.json.HybridJsonProcessorTest'], ['goog.json.HybridJsonProcessor', 'goog.json.hybrid', 'goog.testing.jsunit'], false); -goog.addDependency('json/json.js', ['goog.json', 'goog.json.Replacer', 'goog.json.Reviver', 'goog.json.Serializer'], [], false); -goog.addDependency('json/json_perf.js', ['goog.jsonPerf'], ['goog.dom', 'goog.json', 'goog.math', 'goog.string', 'goog.testing.PerformanceTable', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('json/json_test.js', ['goog.jsonTest'], ['goog.functions', 'goog.json', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('json/nativejsonprocessor.js', ['goog.json.NativeJsonProcessor'], ['goog.asserts', 'goog.json.Processor'], false); -goog.addDependency('json/processor.js', ['goog.json.Processor'], ['goog.string.Parser', 'goog.string.Stringifier'], false); -goog.addDependency('json/processor_test.js', ['goog.json.processorTest'], ['goog.json.EvalJsonProcessor', 'goog.json.NativeJsonProcessor', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('labs/dom/pagevisibilitymonitor.js', ['goog.labs.dom.PageVisibilityEvent', 'goog.labs.dom.PageVisibilityMonitor', 'goog.labs.dom.PageVisibilityState'], ['goog.dom', 'goog.dom.vendor', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.memoize'], false); -goog.addDependency('labs/dom/pagevisibilitymonitor_test.js', ['goog.labs.dom.PageVisibilityMonitorTest'], ['goog.events', 'goog.functions', 'goog.labs.dom.PageVisibilityMonitor', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('labs/events/nondisposableeventtarget.js', ['goog.labs.events.NonDisposableEventTarget'], ['goog.array', 'goog.asserts', 'goog.events.Event', 'goog.events.Listenable', 'goog.events.ListenerMap', 'goog.object'], false); -goog.addDependency('labs/events/nondisposableeventtarget_test.js', ['goog.labs.events.NonDisposableEventTargetTest'], ['goog.events.Listenable', 'goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType', 'goog.labs.events.NonDisposableEventTarget', 'goog.testing.jsunit'], false); -goog.addDependency('labs/events/nondisposableeventtarget_via_googevents_test.js', ['goog.labs.events.NonDisposableEventTargetGoogEventsTest'], ['goog.events', 'goog.events.eventTargetTester', 'goog.events.eventTargetTester.KeyType', 'goog.events.eventTargetTester.UnlistenReturnType', 'goog.labs.events.NonDisposableEventTarget', 'goog.testing', 'goog.testing.jsunit'], false); -goog.addDependency('labs/events/touch.js', ['goog.labs.events.touch', 'goog.labs.events.touch.TouchData'], ['goog.array', 'goog.asserts', 'goog.events.EventType', 'goog.string'], false); -goog.addDependency('labs/events/touch_test.js', ['goog.labs.events.touchTest'], ['goog.labs.events.touch', 'goog.testing.jsunit'], false); -goog.addDependency('labs/format/csv.js', ['goog.labs.format.csv', 'goog.labs.format.csv.ParseError', 'goog.labs.format.csv.Token'], ['goog.array', 'goog.asserts', 'goog.debug.Error', 'goog.object', 'goog.string', 'goog.string.newlines'], false); -goog.addDependency('labs/format/csv_test.js', ['goog.labs.format.csvTest'], ['goog.labs.format.csv', 'goog.labs.format.csv.ParseError', 'goog.object', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('labs/html/attribute_rewriter.js', ['goog.labs.html.AttributeRewriter', 'goog.labs.html.AttributeValue', 'goog.labs.html.attributeRewriterPresubmitWorkaround'], [], false); -goog.addDependency('labs/html/sanitizer.js', ['goog.labs.html.Sanitizer'], ['goog.asserts', 'goog.html.SafeUrl', 'goog.labs.html.attributeRewriterPresubmitWorkaround', 'goog.labs.html.scrubber', 'goog.object', 'goog.string'], false); -goog.addDependency('labs/html/sanitizer_test.js', ['goog.labs.html.SanitizerTest'], ['goog.html.SafeUrl', 'goog.labs.html.Sanitizer', 'goog.string', 'goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('labs/html/scrubber.js', ['goog.labs.html.scrubber'], ['goog.array', 'goog.dom.tags', 'goog.labs.html.attributeRewriterPresubmitWorkaround', 'goog.string'], false); -goog.addDependency('labs/html/scrubber_test.js', ['goog.html.ScrubberTest'], ['goog.labs.html.scrubber', 'goog.object', 'goog.string', 'goog.testing.jsunit'], false); -goog.addDependency('labs/i18n/listformat.js', ['goog.labs.i18n.GenderInfo', 'goog.labs.i18n.GenderInfo.Gender', 'goog.labs.i18n.ListFormat'], ['goog.asserts', 'goog.labs.i18n.ListFormatSymbols'], false); -goog.addDependency('labs/i18n/listformat_test.js', ['goog.labs.i18n.ListFormatTest'], ['goog.labs.i18n.GenderInfo', 'goog.labs.i18n.ListFormat', 'goog.labs.i18n.ListFormatSymbols', 'goog.labs.i18n.ListFormatSymbols_el', 'goog.labs.i18n.ListFormatSymbols_en', 'goog.labs.i18n.ListFormatSymbols_fr', 'goog.labs.i18n.ListFormatSymbols_ml', 'goog.labs.i18n.ListFormatSymbols_zu', 'goog.testing.jsunit'], false); -goog.addDependency('labs/i18n/listsymbols.js', ['goog.labs.i18n.ListFormatSymbols', 'goog.labs.i18n.ListFormatSymbols_af', 'goog.labs.i18n.ListFormatSymbols_am', 'goog.labs.i18n.ListFormatSymbols_ar', 'goog.labs.i18n.ListFormatSymbols_az', 'goog.labs.i18n.ListFormatSymbols_be', 'goog.labs.i18n.ListFormatSymbols_bg', 'goog.labs.i18n.ListFormatSymbols_bn', 'goog.labs.i18n.ListFormatSymbols_br', 'goog.labs.i18n.ListFormatSymbols_bs', 'goog.labs.i18n.ListFormatSymbols_ca', 'goog.labs.i18n.ListFormatSymbols_chr', 'goog.labs.i18n.ListFormatSymbols_cs', 'goog.labs.i18n.ListFormatSymbols_cy', 'goog.labs.i18n.ListFormatSymbols_da', 'goog.labs.i18n.ListFormatSymbols_de', 'goog.labs.i18n.ListFormatSymbols_de_AT', 'goog.labs.i18n.ListFormatSymbols_de_CH', 'goog.labs.i18n.ListFormatSymbols_el', 'goog.labs.i18n.ListFormatSymbols_en', 'goog.labs.i18n.ListFormatSymbols_en_AU', 'goog.labs.i18n.ListFormatSymbols_en_CA', 'goog.labs.i18n.ListFormatSymbols_en_GB', 'goog.labs.i18n.ListFormatSymbols_en_IE', 'goog.labs.i18n.ListFormatSymbols_en_IN', 'goog.labs.i18n.ListFormatSymbols_en_SG', 'goog.labs.i18n.ListFormatSymbols_en_US', 'goog.labs.i18n.ListFormatSymbols_en_ZA', 'goog.labs.i18n.ListFormatSymbols_es', 'goog.labs.i18n.ListFormatSymbols_es_419', 'goog.labs.i18n.ListFormatSymbols_es_ES', 'goog.labs.i18n.ListFormatSymbols_es_MX', 'goog.labs.i18n.ListFormatSymbols_es_US', 'goog.labs.i18n.ListFormatSymbols_et', 'goog.labs.i18n.ListFormatSymbols_eu', 'goog.labs.i18n.ListFormatSymbols_fa', 'goog.labs.i18n.ListFormatSymbols_fi', 'goog.labs.i18n.ListFormatSymbols_fil', 'goog.labs.i18n.ListFormatSymbols_fr', 'goog.labs.i18n.ListFormatSymbols_fr_CA', 'goog.labs.i18n.ListFormatSymbols_ga', 'goog.labs.i18n.ListFormatSymbols_gl', 'goog.labs.i18n.ListFormatSymbols_gsw', 'goog.labs.i18n.ListFormatSymbols_gu', 'goog.labs.i18n.ListFormatSymbols_haw', 'goog.labs.i18n.ListFormatSymbols_he', 'goog.labs.i18n.ListFormatSymbols_hi', 'goog.labs.i18n.ListFormatSymbols_hr', 'goog.labs.i18n.ListFormatSymbols_hu', 'goog.labs.i18n.ListFormatSymbols_hy', 'goog.labs.i18n.ListFormatSymbols_id', 'goog.labs.i18n.ListFormatSymbols_in', 'goog.labs.i18n.ListFormatSymbols_is', 'goog.labs.i18n.ListFormatSymbols_it', 'goog.labs.i18n.ListFormatSymbols_iw', 'goog.labs.i18n.ListFormatSymbols_ja', 'goog.labs.i18n.ListFormatSymbols_ka', 'goog.labs.i18n.ListFormatSymbols_kk', 'goog.labs.i18n.ListFormatSymbols_km', 'goog.labs.i18n.ListFormatSymbols_kn', 'goog.labs.i18n.ListFormatSymbols_ko', 'goog.labs.i18n.ListFormatSymbols_ky', 'goog.labs.i18n.ListFormatSymbols_ln', 'goog.labs.i18n.ListFormatSymbols_lo', 'goog.labs.i18n.ListFormatSymbols_lt', 'goog.labs.i18n.ListFormatSymbols_lv', 'goog.labs.i18n.ListFormatSymbols_mk', 'goog.labs.i18n.ListFormatSymbols_ml', 'goog.labs.i18n.ListFormatSymbols_mn', 'goog.labs.i18n.ListFormatSymbols_mo', 'goog.labs.i18n.ListFormatSymbols_mr', 'goog.labs.i18n.ListFormatSymbols_ms', 'goog.labs.i18n.ListFormatSymbols_mt', 'goog.labs.i18n.ListFormatSymbols_my', 'goog.labs.i18n.ListFormatSymbols_nb', 'goog.labs.i18n.ListFormatSymbols_ne', 'goog.labs.i18n.ListFormatSymbols_nl', 'goog.labs.i18n.ListFormatSymbols_no', 'goog.labs.i18n.ListFormatSymbols_no_NO', 'goog.labs.i18n.ListFormatSymbols_or', 'goog.labs.i18n.ListFormatSymbols_pa', 'goog.labs.i18n.ListFormatSymbols_pl', 'goog.labs.i18n.ListFormatSymbols_pt', 'goog.labs.i18n.ListFormatSymbols_pt_BR', 'goog.labs.i18n.ListFormatSymbols_pt_PT', 'goog.labs.i18n.ListFormatSymbols_ro', 'goog.labs.i18n.ListFormatSymbols_ru', 'goog.labs.i18n.ListFormatSymbols_sh', 'goog.labs.i18n.ListFormatSymbols_si', 'goog.labs.i18n.ListFormatSymbols_sk', 'goog.labs.i18n.ListFormatSymbols_sl', 'goog.labs.i18n.ListFormatSymbols_sq', 'goog.labs.i18n.ListFormatSymbols_sr', 'goog.labs.i18n.ListFormatSymbols_sr_Latn', 'goog.labs.i18n.ListFormatSymbols_sv', 'goog.labs.i18n.ListFormatSymbols_sw', 'goog.labs.i18n.ListFormatSymbols_ta', 'goog.labs.i18n.ListFormatSymbols_te', 'goog.labs.i18n.ListFormatSymbols_th', 'goog.labs.i18n.ListFormatSymbols_tl', 'goog.labs.i18n.ListFormatSymbols_tr', 'goog.labs.i18n.ListFormatSymbols_uk', 'goog.labs.i18n.ListFormatSymbols_ur', 'goog.labs.i18n.ListFormatSymbols_uz', 'goog.labs.i18n.ListFormatSymbols_vi', 'goog.labs.i18n.ListFormatSymbols_zh', 'goog.labs.i18n.ListFormatSymbols_zh_CN', 'goog.labs.i18n.ListFormatSymbols_zh_HK', 'goog.labs.i18n.ListFormatSymbols_zh_TW', 'goog.labs.i18n.ListFormatSymbols_zu'], [], false); -goog.addDependency('labs/i18n/listsymbolsext.js', ['goog.labs.i18n.ListFormatSymbolsExt', 'goog.labs.i18n.ListFormatSymbols_af_NA', 'goog.labs.i18n.ListFormatSymbols_af_ZA', 'goog.labs.i18n.ListFormatSymbols_agq', 'goog.labs.i18n.ListFormatSymbols_agq_CM', 'goog.labs.i18n.ListFormatSymbols_ak', 'goog.labs.i18n.ListFormatSymbols_ak_GH', 'goog.labs.i18n.ListFormatSymbols_am_ET', 'goog.labs.i18n.ListFormatSymbols_ar_001', 'goog.labs.i18n.ListFormatSymbols_ar_AE', 'goog.labs.i18n.ListFormatSymbols_ar_BH', 'goog.labs.i18n.ListFormatSymbols_ar_DJ', 'goog.labs.i18n.ListFormatSymbols_ar_DZ', 'goog.labs.i18n.ListFormatSymbols_ar_EG', 'goog.labs.i18n.ListFormatSymbols_ar_EH', 'goog.labs.i18n.ListFormatSymbols_ar_ER', 'goog.labs.i18n.ListFormatSymbols_ar_IL', 'goog.labs.i18n.ListFormatSymbols_ar_IQ', 'goog.labs.i18n.ListFormatSymbols_ar_JO', 'goog.labs.i18n.ListFormatSymbols_ar_KM', 'goog.labs.i18n.ListFormatSymbols_ar_KW', 'goog.labs.i18n.ListFormatSymbols_ar_LB', 'goog.labs.i18n.ListFormatSymbols_ar_LY', 'goog.labs.i18n.ListFormatSymbols_ar_MA', 'goog.labs.i18n.ListFormatSymbols_ar_MR', 'goog.labs.i18n.ListFormatSymbols_ar_OM', 'goog.labs.i18n.ListFormatSymbols_ar_PS', 'goog.labs.i18n.ListFormatSymbols_ar_QA', 'goog.labs.i18n.ListFormatSymbols_ar_SA', 'goog.labs.i18n.ListFormatSymbols_ar_SD', 'goog.labs.i18n.ListFormatSymbols_ar_SO', 'goog.labs.i18n.ListFormatSymbols_ar_SS', 'goog.labs.i18n.ListFormatSymbols_ar_SY', 'goog.labs.i18n.ListFormatSymbols_ar_TD', 'goog.labs.i18n.ListFormatSymbols_ar_TN', 'goog.labs.i18n.ListFormatSymbols_ar_YE', 'goog.labs.i18n.ListFormatSymbols_as', 'goog.labs.i18n.ListFormatSymbols_as_IN', 'goog.labs.i18n.ListFormatSymbols_asa', 'goog.labs.i18n.ListFormatSymbols_asa_TZ', 'goog.labs.i18n.ListFormatSymbols_az_Cyrl', 'goog.labs.i18n.ListFormatSymbols_az_Cyrl_AZ', 'goog.labs.i18n.ListFormatSymbols_az_Latn', 'goog.labs.i18n.ListFormatSymbols_az_Latn_AZ', 'goog.labs.i18n.ListFormatSymbols_bas', 'goog.labs.i18n.ListFormatSymbols_bas_CM', 'goog.labs.i18n.ListFormatSymbols_be_BY', 'goog.labs.i18n.ListFormatSymbols_bem', 'goog.labs.i18n.ListFormatSymbols_bem_ZM', 'goog.labs.i18n.ListFormatSymbols_bez', 'goog.labs.i18n.ListFormatSymbols_bez_TZ', 'goog.labs.i18n.ListFormatSymbols_bg_BG', 'goog.labs.i18n.ListFormatSymbols_bm', 'goog.labs.i18n.ListFormatSymbols_bm_Latn', 'goog.labs.i18n.ListFormatSymbols_bm_Latn_ML', 'goog.labs.i18n.ListFormatSymbols_bn_BD', 'goog.labs.i18n.ListFormatSymbols_bn_IN', 'goog.labs.i18n.ListFormatSymbols_bo', 'goog.labs.i18n.ListFormatSymbols_bo_CN', 'goog.labs.i18n.ListFormatSymbols_bo_IN', 'goog.labs.i18n.ListFormatSymbols_br_FR', 'goog.labs.i18n.ListFormatSymbols_brx', 'goog.labs.i18n.ListFormatSymbols_brx_IN', 'goog.labs.i18n.ListFormatSymbols_bs_Cyrl', 'goog.labs.i18n.ListFormatSymbols_bs_Cyrl_BA', 'goog.labs.i18n.ListFormatSymbols_bs_Latn', 'goog.labs.i18n.ListFormatSymbols_bs_Latn_BA', 'goog.labs.i18n.ListFormatSymbols_ca_AD', 'goog.labs.i18n.ListFormatSymbols_ca_ES', 'goog.labs.i18n.ListFormatSymbols_ca_FR', 'goog.labs.i18n.ListFormatSymbols_ca_IT', 'goog.labs.i18n.ListFormatSymbols_cgg', 'goog.labs.i18n.ListFormatSymbols_cgg_UG', 'goog.labs.i18n.ListFormatSymbols_chr_US', 'goog.labs.i18n.ListFormatSymbols_cs_CZ', 'goog.labs.i18n.ListFormatSymbols_cy_GB', 'goog.labs.i18n.ListFormatSymbols_da_DK', 'goog.labs.i18n.ListFormatSymbols_da_GL', 'goog.labs.i18n.ListFormatSymbols_dav', 'goog.labs.i18n.ListFormatSymbols_dav_KE', 'goog.labs.i18n.ListFormatSymbols_de_BE', 'goog.labs.i18n.ListFormatSymbols_de_DE', 'goog.labs.i18n.ListFormatSymbols_de_LI', 'goog.labs.i18n.ListFormatSymbols_de_LU', 'goog.labs.i18n.ListFormatSymbols_dje', 'goog.labs.i18n.ListFormatSymbols_dje_NE', 'goog.labs.i18n.ListFormatSymbols_dsb', 'goog.labs.i18n.ListFormatSymbols_dsb_DE', 'goog.labs.i18n.ListFormatSymbols_dua', 'goog.labs.i18n.ListFormatSymbols_dua_CM', 'goog.labs.i18n.ListFormatSymbols_dyo', 'goog.labs.i18n.ListFormatSymbols_dyo_SN', 'goog.labs.i18n.ListFormatSymbols_dz', 'goog.labs.i18n.ListFormatSymbols_dz_BT', 'goog.labs.i18n.ListFormatSymbols_ebu', 'goog.labs.i18n.ListFormatSymbols_ebu_KE', 'goog.labs.i18n.ListFormatSymbols_ee', 'goog.labs.i18n.ListFormatSymbols_ee_GH', 'goog.labs.i18n.ListFormatSymbols_ee_TG', 'goog.labs.i18n.ListFormatSymbols_el_CY', 'goog.labs.i18n.ListFormatSymbols_el_GR', 'goog.labs.i18n.ListFormatSymbols_en_001', 'goog.labs.i18n.ListFormatSymbols_en_150', 'goog.labs.i18n.ListFormatSymbols_en_AG', 'goog.labs.i18n.ListFormatSymbols_en_AI', 'goog.labs.i18n.ListFormatSymbols_en_AS', 'goog.labs.i18n.ListFormatSymbols_en_BB', 'goog.labs.i18n.ListFormatSymbols_en_BE', 'goog.labs.i18n.ListFormatSymbols_en_BM', 'goog.labs.i18n.ListFormatSymbols_en_BS', 'goog.labs.i18n.ListFormatSymbols_en_BW', 'goog.labs.i18n.ListFormatSymbols_en_BZ', 'goog.labs.i18n.ListFormatSymbols_en_CC', 'goog.labs.i18n.ListFormatSymbols_en_CK', 'goog.labs.i18n.ListFormatSymbols_en_CM', 'goog.labs.i18n.ListFormatSymbols_en_CX', 'goog.labs.i18n.ListFormatSymbols_en_DG', 'goog.labs.i18n.ListFormatSymbols_en_DM', 'goog.labs.i18n.ListFormatSymbols_en_ER', 'goog.labs.i18n.ListFormatSymbols_en_FJ', 'goog.labs.i18n.ListFormatSymbols_en_FK', 'goog.labs.i18n.ListFormatSymbols_en_FM', 'goog.labs.i18n.ListFormatSymbols_en_GD', 'goog.labs.i18n.ListFormatSymbols_en_GG', 'goog.labs.i18n.ListFormatSymbols_en_GH', 'goog.labs.i18n.ListFormatSymbols_en_GI', 'goog.labs.i18n.ListFormatSymbols_en_GM', 'goog.labs.i18n.ListFormatSymbols_en_GU', 'goog.labs.i18n.ListFormatSymbols_en_GY', 'goog.labs.i18n.ListFormatSymbols_en_HK', 'goog.labs.i18n.ListFormatSymbols_en_IM', 'goog.labs.i18n.ListFormatSymbols_en_IO', 'goog.labs.i18n.ListFormatSymbols_en_JE', 'goog.labs.i18n.ListFormatSymbols_en_JM', 'goog.labs.i18n.ListFormatSymbols_en_KE', 'goog.labs.i18n.ListFormatSymbols_en_KI', 'goog.labs.i18n.ListFormatSymbols_en_KN', 'goog.labs.i18n.ListFormatSymbols_en_KY', 'goog.labs.i18n.ListFormatSymbols_en_LC', 'goog.labs.i18n.ListFormatSymbols_en_LR', 'goog.labs.i18n.ListFormatSymbols_en_LS', 'goog.labs.i18n.ListFormatSymbols_en_MG', 'goog.labs.i18n.ListFormatSymbols_en_MH', 'goog.labs.i18n.ListFormatSymbols_en_MO', 'goog.labs.i18n.ListFormatSymbols_en_MP', 'goog.labs.i18n.ListFormatSymbols_en_MS', 'goog.labs.i18n.ListFormatSymbols_en_MT', 'goog.labs.i18n.ListFormatSymbols_en_MU', 'goog.labs.i18n.ListFormatSymbols_en_MW', 'goog.labs.i18n.ListFormatSymbols_en_MY', 'goog.labs.i18n.ListFormatSymbols_en_NA', 'goog.labs.i18n.ListFormatSymbols_en_NF', 'goog.labs.i18n.ListFormatSymbols_en_NG', 'goog.labs.i18n.ListFormatSymbols_en_NR', 'goog.labs.i18n.ListFormatSymbols_en_NU', 'goog.labs.i18n.ListFormatSymbols_en_NZ', 'goog.labs.i18n.ListFormatSymbols_en_PG', 'goog.labs.i18n.ListFormatSymbols_en_PH', 'goog.labs.i18n.ListFormatSymbols_en_PK', 'goog.labs.i18n.ListFormatSymbols_en_PN', 'goog.labs.i18n.ListFormatSymbols_en_PR', 'goog.labs.i18n.ListFormatSymbols_en_PW', 'goog.labs.i18n.ListFormatSymbols_en_RW', 'goog.labs.i18n.ListFormatSymbols_en_SB', 'goog.labs.i18n.ListFormatSymbols_en_SC', 'goog.labs.i18n.ListFormatSymbols_en_SD', 'goog.labs.i18n.ListFormatSymbols_en_SH', 'goog.labs.i18n.ListFormatSymbols_en_SL', 'goog.labs.i18n.ListFormatSymbols_en_SS', 'goog.labs.i18n.ListFormatSymbols_en_SX', 'goog.labs.i18n.ListFormatSymbols_en_SZ', 'goog.labs.i18n.ListFormatSymbols_en_TC', 'goog.labs.i18n.ListFormatSymbols_en_TK', 'goog.labs.i18n.ListFormatSymbols_en_TO', 'goog.labs.i18n.ListFormatSymbols_en_TT', 'goog.labs.i18n.ListFormatSymbols_en_TV', 'goog.labs.i18n.ListFormatSymbols_en_TZ', 'goog.labs.i18n.ListFormatSymbols_en_UG', 'goog.labs.i18n.ListFormatSymbols_en_UM', 'goog.labs.i18n.ListFormatSymbols_en_US_POSIX', 'goog.labs.i18n.ListFormatSymbols_en_VC', 'goog.labs.i18n.ListFormatSymbols_en_VG', 'goog.labs.i18n.ListFormatSymbols_en_VI', 'goog.labs.i18n.ListFormatSymbols_en_VU', 'goog.labs.i18n.ListFormatSymbols_en_WS', 'goog.labs.i18n.ListFormatSymbols_en_ZM', 'goog.labs.i18n.ListFormatSymbols_en_ZW', 'goog.labs.i18n.ListFormatSymbols_eo', 'goog.labs.i18n.ListFormatSymbols_es_AR', 'goog.labs.i18n.ListFormatSymbols_es_BO', 'goog.labs.i18n.ListFormatSymbols_es_CL', 'goog.labs.i18n.ListFormatSymbols_es_CO', 'goog.labs.i18n.ListFormatSymbols_es_CR', 'goog.labs.i18n.ListFormatSymbols_es_CU', 'goog.labs.i18n.ListFormatSymbols_es_DO', 'goog.labs.i18n.ListFormatSymbols_es_EA', 'goog.labs.i18n.ListFormatSymbols_es_EC', 'goog.labs.i18n.ListFormatSymbols_es_GQ', 'goog.labs.i18n.ListFormatSymbols_es_GT', 'goog.labs.i18n.ListFormatSymbols_es_HN', 'goog.labs.i18n.ListFormatSymbols_es_IC', 'goog.labs.i18n.ListFormatSymbols_es_NI', 'goog.labs.i18n.ListFormatSymbols_es_PA', 'goog.labs.i18n.ListFormatSymbols_es_PE', 'goog.labs.i18n.ListFormatSymbols_es_PH', 'goog.labs.i18n.ListFormatSymbols_es_PR', 'goog.labs.i18n.ListFormatSymbols_es_PY', 'goog.labs.i18n.ListFormatSymbols_es_SV', 'goog.labs.i18n.ListFormatSymbols_es_UY', 'goog.labs.i18n.ListFormatSymbols_es_VE', 'goog.labs.i18n.ListFormatSymbols_et_EE', 'goog.labs.i18n.ListFormatSymbols_eu_ES', 'goog.labs.i18n.ListFormatSymbols_ewo', 'goog.labs.i18n.ListFormatSymbols_ewo_CM', 'goog.labs.i18n.ListFormatSymbols_fa_AF', 'goog.labs.i18n.ListFormatSymbols_fa_IR', 'goog.labs.i18n.ListFormatSymbols_ff', 'goog.labs.i18n.ListFormatSymbols_ff_CM', 'goog.labs.i18n.ListFormatSymbols_ff_GN', 'goog.labs.i18n.ListFormatSymbols_ff_MR', 'goog.labs.i18n.ListFormatSymbols_ff_SN', 'goog.labs.i18n.ListFormatSymbols_fi_FI', 'goog.labs.i18n.ListFormatSymbols_fil_PH', 'goog.labs.i18n.ListFormatSymbols_fo', 'goog.labs.i18n.ListFormatSymbols_fo_FO', 'goog.labs.i18n.ListFormatSymbols_fr_BE', 'goog.labs.i18n.ListFormatSymbols_fr_BF', 'goog.labs.i18n.ListFormatSymbols_fr_BI', 'goog.labs.i18n.ListFormatSymbols_fr_BJ', 'goog.labs.i18n.ListFormatSymbols_fr_BL', 'goog.labs.i18n.ListFormatSymbols_fr_CD', 'goog.labs.i18n.ListFormatSymbols_fr_CF', 'goog.labs.i18n.ListFormatSymbols_fr_CG', 'goog.labs.i18n.ListFormatSymbols_fr_CH', 'goog.labs.i18n.ListFormatSymbols_fr_CI', 'goog.labs.i18n.ListFormatSymbols_fr_CM', 'goog.labs.i18n.ListFormatSymbols_fr_DJ', 'goog.labs.i18n.ListFormatSymbols_fr_DZ', 'goog.labs.i18n.ListFormatSymbols_fr_FR', 'goog.labs.i18n.ListFormatSymbols_fr_GA', 'goog.labs.i18n.ListFormatSymbols_fr_GF', 'goog.labs.i18n.ListFormatSymbols_fr_GN', 'goog.labs.i18n.ListFormatSymbols_fr_GP', 'goog.labs.i18n.ListFormatSymbols_fr_GQ', 'goog.labs.i18n.ListFormatSymbols_fr_HT', 'goog.labs.i18n.ListFormatSymbols_fr_KM', 'goog.labs.i18n.ListFormatSymbols_fr_LU', 'goog.labs.i18n.ListFormatSymbols_fr_MA', 'goog.labs.i18n.ListFormatSymbols_fr_MC', 'goog.labs.i18n.ListFormatSymbols_fr_MF', 'goog.labs.i18n.ListFormatSymbols_fr_MG', 'goog.labs.i18n.ListFormatSymbols_fr_ML', 'goog.labs.i18n.ListFormatSymbols_fr_MQ', 'goog.labs.i18n.ListFormatSymbols_fr_MR', 'goog.labs.i18n.ListFormatSymbols_fr_MU', 'goog.labs.i18n.ListFormatSymbols_fr_NC', 'goog.labs.i18n.ListFormatSymbols_fr_NE', 'goog.labs.i18n.ListFormatSymbols_fr_PF', 'goog.labs.i18n.ListFormatSymbols_fr_PM', 'goog.labs.i18n.ListFormatSymbols_fr_RE', 'goog.labs.i18n.ListFormatSymbols_fr_RW', 'goog.labs.i18n.ListFormatSymbols_fr_SC', 'goog.labs.i18n.ListFormatSymbols_fr_SN', 'goog.labs.i18n.ListFormatSymbols_fr_SY', 'goog.labs.i18n.ListFormatSymbols_fr_TD', 'goog.labs.i18n.ListFormatSymbols_fr_TG', 'goog.labs.i18n.ListFormatSymbols_fr_TN', 'goog.labs.i18n.ListFormatSymbols_fr_VU', 'goog.labs.i18n.ListFormatSymbols_fr_WF', 'goog.labs.i18n.ListFormatSymbols_fr_YT', 'goog.labs.i18n.ListFormatSymbols_fur', 'goog.labs.i18n.ListFormatSymbols_fur_IT', 'goog.labs.i18n.ListFormatSymbols_fy', 'goog.labs.i18n.ListFormatSymbols_fy_NL', 'goog.labs.i18n.ListFormatSymbols_ga_IE', 'goog.labs.i18n.ListFormatSymbols_gd', 'goog.labs.i18n.ListFormatSymbols_gd_GB', 'goog.labs.i18n.ListFormatSymbols_gl_ES', 'goog.labs.i18n.ListFormatSymbols_gsw_CH', 'goog.labs.i18n.ListFormatSymbols_gsw_FR', 'goog.labs.i18n.ListFormatSymbols_gsw_LI', 'goog.labs.i18n.ListFormatSymbols_gu_IN', 'goog.labs.i18n.ListFormatSymbols_guz', 'goog.labs.i18n.ListFormatSymbols_guz_KE', 'goog.labs.i18n.ListFormatSymbols_gv', 'goog.labs.i18n.ListFormatSymbols_gv_IM', 'goog.labs.i18n.ListFormatSymbols_ha', 'goog.labs.i18n.ListFormatSymbols_ha_Latn', 'goog.labs.i18n.ListFormatSymbols_ha_Latn_GH', 'goog.labs.i18n.ListFormatSymbols_ha_Latn_NE', 'goog.labs.i18n.ListFormatSymbols_ha_Latn_NG', 'goog.labs.i18n.ListFormatSymbols_haw_US', 'goog.labs.i18n.ListFormatSymbols_he_IL', 'goog.labs.i18n.ListFormatSymbols_hi_IN', 'goog.labs.i18n.ListFormatSymbols_hr_BA', 'goog.labs.i18n.ListFormatSymbols_hr_HR', 'goog.labs.i18n.ListFormatSymbols_hsb', 'goog.labs.i18n.ListFormatSymbols_hsb_DE', 'goog.labs.i18n.ListFormatSymbols_hu_HU', 'goog.labs.i18n.ListFormatSymbols_hy_AM', 'goog.labs.i18n.ListFormatSymbols_id_ID', 'goog.labs.i18n.ListFormatSymbols_ig', 'goog.labs.i18n.ListFormatSymbols_ig_NG', 'goog.labs.i18n.ListFormatSymbols_ii', 'goog.labs.i18n.ListFormatSymbols_ii_CN', 'goog.labs.i18n.ListFormatSymbols_is_IS', 'goog.labs.i18n.ListFormatSymbols_it_CH', 'goog.labs.i18n.ListFormatSymbols_it_IT', 'goog.labs.i18n.ListFormatSymbols_it_SM', 'goog.labs.i18n.ListFormatSymbols_ja_JP', 'goog.labs.i18n.ListFormatSymbols_jgo', 'goog.labs.i18n.ListFormatSymbols_jgo_CM', 'goog.labs.i18n.ListFormatSymbols_jmc', 'goog.labs.i18n.ListFormatSymbols_jmc_TZ', 'goog.labs.i18n.ListFormatSymbols_ka_GE', 'goog.labs.i18n.ListFormatSymbols_kab', 'goog.labs.i18n.ListFormatSymbols_kab_DZ', 'goog.labs.i18n.ListFormatSymbols_kam', 'goog.labs.i18n.ListFormatSymbols_kam_KE', 'goog.labs.i18n.ListFormatSymbols_kde', 'goog.labs.i18n.ListFormatSymbols_kde_TZ', 'goog.labs.i18n.ListFormatSymbols_kea', 'goog.labs.i18n.ListFormatSymbols_kea_CV', 'goog.labs.i18n.ListFormatSymbols_khq', 'goog.labs.i18n.ListFormatSymbols_khq_ML', 'goog.labs.i18n.ListFormatSymbols_ki', 'goog.labs.i18n.ListFormatSymbols_ki_KE', 'goog.labs.i18n.ListFormatSymbols_kk_Cyrl', 'goog.labs.i18n.ListFormatSymbols_kk_Cyrl_KZ', 'goog.labs.i18n.ListFormatSymbols_kkj', 'goog.labs.i18n.ListFormatSymbols_kkj_CM', 'goog.labs.i18n.ListFormatSymbols_kl', 'goog.labs.i18n.ListFormatSymbols_kl_GL', 'goog.labs.i18n.ListFormatSymbols_kln', 'goog.labs.i18n.ListFormatSymbols_kln_KE', 'goog.labs.i18n.ListFormatSymbols_km_KH', 'goog.labs.i18n.ListFormatSymbols_kn_IN', 'goog.labs.i18n.ListFormatSymbols_ko_KP', 'goog.labs.i18n.ListFormatSymbols_ko_KR', 'goog.labs.i18n.ListFormatSymbols_kok', 'goog.labs.i18n.ListFormatSymbols_kok_IN', 'goog.labs.i18n.ListFormatSymbols_ks', 'goog.labs.i18n.ListFormatSymbols_ks_Arab', 'goog.labs.i18n.ListFormatSymbols_ks_Arab_IN', 'goog.labs.i18n.ListFormatSymbols_ksb', 'goog.labs.i18n.ListFormatSymbols_ksb_TZ', 'goog.labs.i18n.ListFormatSymbols_ksf', 'goog.labs.i18n.ListFormatSymbols_ksf_CM', 'goog.labs.i18n.ListFormatSymbols_ksh', 'goog.labs.i18n.ListFormatSymbols_ksh_DE', 'goog.labs.i18n.ListFormatSymbols_kw', 'goog.labs.i18n.ListFormatSymbols_kw_GB', 'goog.labs.i18n.ListFormatSymbols_ky_Cyrl', 'goog.labs.i18n.ListFormatSymbols_ky_Cyrl_KG', 'goog.labs.i18n.ListFormatSymbols_lag', 'goog.labs.i18n.ListFormatSymbols_lag_TZ', 'goog.labs.i18n.ListFormatSymbols_lb', 'goog.labs.i18n.ListFormatSymbols_lb_LU', 'goog.labs.i18n.ListFormatSymbols_lg', 'goog.labs.i18n.ListFormatSymbols_lg_UG', 'goog.labs.i18n.ListFormatSymbols_lkt', 'goog.labs.i18n.ListFormatSymbols_lkt_US', 'goog.labs.i18n.ListFormatSymbols_ln_AO', 'goog.labs.i18n.ListFormatSymbols_ln_CD', 'goog.labs.i18n.ListFormatSymbols_ln_CF', 'goog.labs.i18n.ListFormatSymbols_ln_CG', 'goog.labs.i18n.ListFormatSymbols_lo_LA', 'goog.labs.i18n.ListFormatSymbols_lt_LT', 'goog.labs.i18n.ListFormatSymbols_lu', 'goog.labs.i18n.ListFormatSymbols_lu_CD', 'goog.labs.i18n.ListFormatSymbols_luo', 'goog.labs.i18n.ListFormatSymbols_luo_KE', 'goog.labs.i18n.ListFormatSymbols_luy', 'goog.labs.i18n.ListFormatSymbols_luy_KE', 'goog.labs.i18n.ListFormatSymbols_lv_LV', 'goog.labs.i18n.ListFormatSymbols_mas', 'goog.labs.i18n.ListFormatSymbols_mas_KE', 'goog.labs.i18n.ListFormatSymbols_mas_TZ', 'goog.labs.i18n.ListFormatSymbols_mer', 'goog.labs.i18n.ListFormatSymbols_mer_KE', 'goog.labs.i18n.ListFormatSymbols_mfe', 'goog.labs.i18n.ListFormatSymbols_mfe_MU', 'goog.labs.i18n.ListFormatSymbols_mg', 'goog.labs.i18n.ListFormatSymbols_mg_MG', 'goog.labs.i18n.ListFormatSymbols_mgh', 'goog.labs.i18n.ListFormatSymbols_mgh_MZ', 'goog.labs.i18n.ListFormatSymbols_mgo', 'goog.labs.i18n.ListFormatSymbols_mgo_CM', 'goog.labs.i18n.ListFormatSymbols_mk_MK', 'goog.labs.i18n.ListFormatSymbols_ml_IN', 'goog.labs.i18n.ListFormatSymbols_mn_Cyrl', 'goog.labs.i18n.ListFormatSymbols_mn_Cyrl_MN', 'goog.labs.i18n.ListFormatSymbols_mr_IN', 'goog.labs.i18n.ListFormatSymbols_ms_Latn', 'goog.labs.i18n.ListFormatSymbols_ms_Latn_BN', 'goog.labs.i18n.ListFormatSymbols_ms_Latn_MY', 'goog.labs.i18n.ListFormatSymbols_ms_Latn_SG', 'goog.labs.i18n.ListFormatSymbols_mt_MT', 'goog.labs.i18n.ListFormatSymbols_mua', 'goog.labs.i18n.ListFormatSymbols_mua_CM', 'goog.labs.i18n.ListFormatSymbols_my_MM', 'goog.labs.i18n.ListFormatSymbols_naq', 'goog.labs.i18n.ListFormatSymbols_naq_NA', 'goog.labs.i18n.ListFormatSymbols_nb_NO', 'goog.labs.i18n.ListFormatSymbols_nb_SJ', 'goog.labs.i18n.ListFormatSymbols_nd', 'goog.labs.i18n.ListFormatSymbols_nd_ZW', 'goog.labs.i18n.ListFormatSymbols_ne_IN', 'goog.labs.i18n.ListFormatSymbols_ne_NP', 'goog.labs.i18n.ListFormatSymbols_nl_AW', 'goog.labs.i18n.ListFormatSymbols_nl_BE', 'goog.labs.i18n.ListFormatSymbols_nl_BQ', 'goog.labs.i18n.ListFormatSymbols_nl_CW', 'goog.labs.i18n.ListFormatSymbols_nl_NL', 'goog.labs.i18n.ListFormatSymbols_nl_SR', 'goog.labs.i18n.ListFormatSymbols_nl_SX', 'goog.labs.i18n.ListFormatSymbols_nmg', 'goog.labs.i18n.ListFormatSymbols_nmg_CM', 'goog.labs.i18n.ListFormatSymbols_nn', 'goog.labs.i18n.ListFormatSymbols_nn_NO', 'goog.labs.i18n.ListFormatSymbols_nnh', 'goog.labs.i18n.ListFormatSymbols_nnh_CM', 'goog.labs.i18n.ListFormatSymbols_nus', 'goog.labs.i18n.ListFormatSymbols_nus_SD', 'goog.labs.i18n.ListFormatSymbols_nyn', 'goog.labs.i18n.ListFormatSymbols_nyn_UG', 'goog.labs.i18n.ListFormatSymbols_om', 'goog.labs.i18n.ListFormatSymbols_om_ET', 'goog.labs.i18n.ListFormatSymbols_om_KE', 'goog.labs.i18n.ListFormatSymbols_or_IN', 'goog.labs.i18n.ListFormatSymbols_os', 'goog.labs.i18n.ListFormatSymbols_os_GE', 'goog.labs.i18n.ListFormatSymbols_os_RU', 'goog.labs.i18n.ListFormatSymbols_pa_Arab', 'goog.labs.i18n.ListFormatSymbols_pa_Arab_PK', 'goog.labs.i18n.ListFormatSymbols_pa_Guru', 'goog.labs.i18n.ListFormatSymbols_pa_Guru_IN', 'goog.labs.i18n.ListFormatSymbols_pl_PL', 'goog.labs.i18n.ListFormatSymbols_ps', 'goog.labs.i18n.ListFormatSymbols_ps_AF', 'goog.labs.i18n.ListFormatSymbols_pt_AO', 'goog.labs.i18n.ListFormatSymbols_pt_CV', 'goog.labs.i18n.ListFormatSymbols_pt_GW', 'goog.labs.i18n.ListFormatSymbols_pt_MO', 'goog.labs.i18n.ListFormatSymbols_pt_MZ', 'goog.labs.i18n.ListFormatSymbols_pt_ST', 'goog.labs.i18n.ListFormatSymbols_pt_TL', 'goog.labs.i18n.ListFormatSymbols_qu', 'goog.labs.i18n.ListFormatSymbols_qu_BO', 'goog.labs.i18n.ListFormatSymbols_qu_EC', 'goog.labs.i18n.ListFormatSymbols_qu_PE', 'goog.labs.i18n.ListFormatSymbols_rm', 'goog.labs.i18n.ListFormatSymbols_rm_CH', 'goog.labs.i18n.ListFormatSymbols_rn', 'goog.labs.i18n.ListFormatSymbols_rn_BI', 'goog.labs.i18n.ListFormatSymbols_ro_MD', 'goog.labs.i18n.ListFormatSymbols_ro_RO', 'goog.labs.i18n.ListFormatSymbols_rof', 'goog.labs.i18n.ListFormatSymbols_rof_TZ', 'goog.labs.i18n.ListFormatSymbols_ru_BY', 'goog.labs.i18n.ListFormatSymbols_ru_KG', 'goog.labs.i18n.ListFormatSymbols_ru_KZ', 'goog.labs.i18n.ListFormatSymbols_ru_MD', 'goog.labs.i18n.ListFormatSymbols_ru_RU', 'goog.labs.i18n.ListFormatSymbols_ru_UA', 'goog.labs.i18n.ListFormatSymbols_rw', 'goog.labs.i18n.ListFormatSymbols_rw_RW', 'goog.labs.i18n.ListFormatSymbols_rwk', 'goog.labs.i18n.ListFormatSymbols_rwk_TZ', 'goog.labs.i18n.ListFormatSymbols_sah', 'goog.labs.i18n.ListFormatSymbols_sah_RU', 'goog.labs.i18n.ListFormatSymbols_saq', 'goog.labs.i18n.ListFormatSymbols_saq_KE', 'goog.labs.i18n.ListFormatSymbols_sbp', 'goog.labs.i18n.ListFormatSymbols_sbp_TZ', 'goog.labs.i18n.ListFormatSymbols_se', 'goog.labs.i18n.ListFormatSymbols_se_FI', 'goog.labs.i18n.ListFormatSymbols_se_NO', 'goog.labs.i18n.ListFormatSymbols_se_SE', 'goog.labs.i18n.ListFormatSymbols_seh', 'goog.labs.i18n.ListFormatSymbols_seh_MZ', 'goog.labs.i18n.ListFormatSymbols_ses', 'goog.labs.i18n.ListFormatSymbols_ses_ML', 'goog.labs.i18n.ListFormatSymbols_sg', 'goog.labs.i18n.ListFormatSymbols_sg_CF', 'goog.labs.i18n.ListFormatSymbols_shi', 'goog.labs.i18n.ListFormatSymbols_shi_Latn', 'goog.labs.i18n.ListFormatSymbols_shi_Latn_MA', 'goog.labs.i18n.ListFormatSymbols_shi_Tfng', 'goog.labs.i18n.ListFormatSymbols_shi_Tfng_MA', 'goog.labs.i18n.ListFormatSymbols_si_LK', 'goog.labs.i18n.ListFormatSymbols_sk_SK', 'goog.labs.i18n.ListFormatSymbols_sl_SI', 'goog.labs.i18n.ListFormatSymbols_smn', 'goog.labs.i18n.ListFormatSymbols_smn_FI', 'goog.labs.i18n.ListFormatSymbols_sn', 'goog.labs.i18n.ListFormatSymbols_sn_ZW', 'goog.labs.i18n.ListFormatSymbols_so', 'goog.labs.i18n.ListFormatSymbols_so_DJ', 'goog.labs.i18n.ListFormatSymbols_so_ET', 'goog.labs.i18n.ListFormatSymbols_so_KE', 'goog.labs.i18n.ListFormatSymbols_so_SO', 'goog.labs.i18n.ListFormatSymbols_sq_AL', 'goog.labs.i18n.ListFormatSymbols_sq_MK', 'goog.labs.i18n.ListFormatSymbols_sq_XK', 'goog.labs.i18n.ListFormatSymbols_sr_Cyrl', 'goog.labs.i18n.ListFormatSymbols_sr_Cyrl_BA', 'goog.labs.i18n.ListFormatSymbols_sr_Cyrl_ME', 'goog.labs.i18n.ListFormatSymbols_sr_Cyrl_RS', 'goog.labs.i18n.ListFormatSymbols_sr_Cyrl_XK', 'goog.labs.i18n.ListFormatSymbols_sr_Latn_BA', 'goog.labs.i18n.ListFormatSymbols_sr_Latn_ME', 'goog.labs.i18n.ListFormatSymbols_sr_Latn_RS', 'goog.labs.i18n.ListFormatSymbols_sr_Latn_XK', 'goog.labs.i18n.ListFormatSymbols_sv_AX', 'goog.labs.i18n.ListFormatSymbols_sv_FI', 'goog.labs.i18n.ListFormatSymbols_sv_SE', 'goog.labs.i18n.ListFormatSymbols_sw_CD', 'goog.labs.i18n.ListFormatSymbols_sw_KE', 'goog.labs.i18n.ListFormatSymbols_sw_TZ', 'goog.labs.i18n.ListFormatSymbols_sw_UG', 'goog.labs.i18n.ListFormatSymbols_ta_IN', 'goog.labs.i18n.ListFormatSymbols_ta_LK', 'goog.labs.i18n.ListFormatSymbols_ta_MY', 'goog.labs.i18n.ListFormatSymbols_ta_SG', 'goog.labs.i18n.ListFormatSymbols_te_IN', 'goog.labs.i18n.ListFormatSymbols_teo', 'goog.labs.i18n.ListFormatSymbols_teo_KE', 'goog.labs.i18n.ListFormatSymbols_teo_UG', 'goog.labs.i18n.ListFormatSymbols_th_TH', 'goog.labs.i18n.ListFormatSymbols_ti', 'goog.labs.i18n.ListFormatSymbols_ti_ER', 'goog.labs.i18n.ListFormatSymbols_ti_ET', 'goog.labs.i18n.ListFormatSymbols_to', 'goog.labs.i18n.ListFormatSymbols_to_TO', 'goog.labs.i18n.ListFormatSymbols_tr_CY', 'goog.labs.i18n.ListFormatSymbols_tr_TR', 'goog.labs.i18n.ListFormatSymbols_twq', 'goog.labs.i18n.ListFormatSymbols_twq_NE', 'goog.labs.i18n.ListFormatSymbols_tzm', 'goog.labs.i18n.ListFormatSymbols_tzm_Latn', 'goog.labs.i18n.ListFormatSymbols_tzm_Latn_MA', 'goog.labs.i18n.ListFormatSymbols_ug', 'goog.labs.i18n.ListFormatSymbols_ug_Arab', 'goog.labs.i18n.ListFormatSymbols_ug_Arab_CN', 'goog.labs.i18n.ListFormatSymbols_uk_UA', 'goog.labs.i18n.ListFormatSymbols_ur_IN', 'goog.labs.i18n.ListFormatSymbols_ur_PK', 'goog.labs.i18n.ListFormatSymbols_uz_Arab', 'goog.labs.i18n.ListFormatSymbols_uz_Arab_AF', 'goog.labs.i18n.ListFormatSymbols_uz_Cyrl', 'goog.labs.i18n.ListFormatSymbols_uz_Cyrl_UZ', 'goog.labs.i18n.ListFormatSymbols_uz_Latn', 'goog.labs.i18n.ListFormatSymbols_uz_Latn_UZ', 'goog.labs.i18n.ListFormatSymbols_vai', 'goog.labs.i18n.ListFormatSymbols_vai_Latn', 'goog.labs.i18n.ListFormatSymbols_vai_Latn_LR', 'goog.labs.i18n.ListFormatSymbols_vai_Vaii', 'goog.labs.i18n.ListFormatSymbols_vai_Vaii_LR', 'goog.labs.i18n.ListFormatSymbols_vi_VN', 'goog.labs.i18n.ListFormatSymbols_vun', 'goog.labs.i18n.ListFormatSymbols_vun_TZ', 'goog.labs.i18n.ListFormatSymbols_wae', 'goog.labs.i18n.ListFormatSymbols_wae_CH', 'goog.labs.i18n.ListFormatSymbols_xog', 'goog.labs.i18n.ListFormatSymbols_xog_UG', 'goog.labs.i18n.ListFormatSymbols_yav', 'goog.labs.i18n.ListFormatSymbols_yav_CM', 'goog.labs.i18n.ListFormatSymbols_yi', 'goog.labs.i18n.ListFormatSymbols_yi_001', 'goog.labs.i18n.ListFormatSymbols_yo', 'goog.labs.i18n.ListFormatSymbols_yo_BJ', 'goog.labs.i18n.ListFormatSymbols_yo_NG', 'goog.labs.i18n.ListFormatSymbols_zgh', 'goog.labs.i18n.ListFormatSymbols_zgh_MA', 'goog.labs.i18n.ListFormatSymbols_zh_Hans', 'goog.labs.i18n.ListFormatSymbols_zh_Hans_CN', 'goog.labs.i18n.ListFormatSymbols_zh_Hans_HK', 'goog.labs.i18n.ListFormatSymbols_zh_Hans_MO', 'goog.labs.i18n.ListFormatSymbols_zh_Hans_SG', 'goog.labs.i18n.ListFormatSymbols_zh_Hant', 'goog.labs.i18n.ListFormatSymbols_zh_Hant_HK', 'goog.labs.i18n.ListFormatSymbols_zh_Hant_MO', 'goog.labs.i18n.ListFormatSymbols_zh_Hant_TW', 'goog.labs.i18n.ListFormatSymbols_zu_ZA'], ['goog.labs.i18n.ListFormatSymbols'], false); -goog.addDependency('labs/iterable/iterable.js', ['goog.labs.iterable'], [], true); -goog.addDependency('labs/iterable/iterable_test.js', ['goog.labs.iterableTest'], ['goog.labs.iterable', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.testing.testSuite'], true); -goog.addDependency('labs/mock/mock.js', ['goog.labs.mock', 'goog.labs.mock.VerificationError'], ['goog.array', 'goog.asserts', 'goog.debug', 'goog.debug.Error', 'goog.functions', 'goog.object'], false); -goog.addDependency('labs/mock/mock_test.js', ['goog.labs.mockTest'], ['goog.array', 'goog.labs.mock', 'goog.labs.mock.VerificationError', 'goog.labs.testing.AnythingMatcher', 'goog.labs.testing.GreaterThanMatcher', 'goog.string', 'goog.testing.jsunit'], false); -goog.addDependency('labs/net/image.js', ['goog.labs.net.image'], ['goog.Promise', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.net.EventType', 'goog.userAgent'], false); -goog.addDependency('labs/net/image_test.js', ['goog.labs.net.imageTest'], ['goog.labs.net.image', 'goog.string', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('labs/net/webchannel.js', ['goog.net.WebChannel'], ['goog.events', 'goog.events.Event'], false); -goog.addDependency('labs/net/webchannel/basetestchannel.js', ['goog.labs.net.webChannel.BaseTestChannel'], ['goog.labs.net.webChannel.Channel', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.Stat'], false); -goog.addDependency('labs/net/webchannel/channel.js', ['goog.labs.net.webChannel.Channel'], [], false); -goog.addDependency('labs/net/webchannel/channelrequest.js', ['goog.labs.net.webChannel.ChannelRequest'], ['goog.Timer', 'goog.async.Throttle', 'goog.events.EventHandler', 'goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.ServerReachability', 'goog.labs.net.webChannel.requestStats.Stat', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.XmlHttp', 'goog.object', 'goog.userAgent'], false); -goog.addDependency('labs/net/webchannel/channelrequest_test.js', ['goog.labs.net.webChannel.channelRequestTest'], ['goog.Uri', 'goog.functions', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.WebChannelDebug', 'goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.ServerReachability', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.net.XhrIo', 'goog.testing.recordFunction'], false); -goog.addDependency('labs/net/webchannel/connectionstate.js', ['goog.labs.net.webChannel.ConnectionState'], [], false); -goog.addDependency('labs/net/webchannel/forwardchannelrequestpool.js', ['goog.labs.net.webChannel.ForwardChannelRequestPool'], ['goog.array', 'goog.string', 'goog.structs.Set'], false); -goog.addDependency('labs/net/webchannel/forwardchannelrequestpool_test.js', ['goog.labs.net.webChannel.forwardChannelRequestPoolTest'], ['goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.ForwardChannelRequestPool', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('labs/net/webchannel/netutils.js', ['goog.labs.net.webChannel.netUtils'], ['goog.Uri', 'goog.labs.net.webChannel.WebChannelDebug'], false); -goog.addDependency('labs/net/webchannel/requeststats.js', ['goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.Event', 'goog.labs.net.webChannel.requestStats.ServerReachability', 'goog.labs.net.webChannel.requestStats.ServerReachabilityEvent', 'goog.labs.net.webChannel.requestStats.Stat', 'goog.labs.net.webChannel.requestStats.StatEvent', 'goog.labs.net.webChannel.requestStats.TimingEvent'], ['goog.events.Event', 'goog.events.EventTarget'], false); -goog.addDependency('labs/net/webchannel/webchannelbase.js', ['goog.labs.net.webChannel.WebChannelBase'], ['goog.Uri', 'goog.array', 'goog.asserts', 'goog.debug.TextFormatter', 'goog.json', 'goog.labs.net.webChannel.BaseTestChannel', 'goog.labs.net.webChannel.Channel', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.ConnectionState', 'goog.labs.net.webChannel.ForwardChannelRequestPool', 'goog.labs.net.webChannel.WebChannelDebug', 'goog.labs.net.webChannel.Wire', 'goog.labs.net.webChannel.WireV8', 'goog.labs.net.webChannel.netUtils', 'goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.Stat', 'goog.log', 'goog.net.XhrIo', 'goog.object', 'goog.string', 'goog.structs', 'goog.structs.CircularBuffer'], false); -goog.addDependency('labs/net/webchannel/webchannelbase_test.js', ['goog.labs.net.webChannel.webChannelBaseTest'], ['goog.Timer', 'goog.array', 'goog.dom', 'goog.functions', 'goog.json', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.ForwardChannelRequestPool', 'goog.labs.net.webChannel.WebChannelBase', 'goog.labs.net.webChannel.WebChannelBaseTransport', 'goog.labs.net.webChannel.WebChannelDebug', 'goog.labs.net.webChannel.Wire', 'goog.labs.net.webChannel.netUtils', 'goog.labs.net.webChannel.requestStats', 'goog.labs.net.webChannel.requestStats.Stat', 'goog.structs.Map', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('labs/net/webchannel/webchannelbasetransport.js', ['goog.labs.net.webChannel.WebChannelBaseTransport'], ['goog.asserts', 'goog.events.EventTarget', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.WebChannelBase', 'goog.log', 'goog.net.WebChannel', 'goog.net.WebChannelTransport', 'goog.object', 'goog.string.path'], false); -goog.addDependency('labs/net/webchannel/webchannelbasetransport_test.js', ['goog.labs.net.webChannel.webChannelBaseTransportTest'], ['goog.events', 'goog.functions', 'goog.labs.net.webChannel.ChannelRequest', 'goog.labs.net.webChannel.WebChannelBaseTransport', 'goog.net.WebChannel', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('labs/net/webchannel/webchanneldebug.js', ['goog.labs.net.webChannel.WebChannelDebug'], ['goog.json', 'goog.log'], false); -goog.addDependency('labs/net/webchannel/wire.js', ['goog.labs.net.webChannel.Wire'], [], false); -goog.addDependency('labs/net/webchannel/wirev8.js', ['goog.labs.net.webChannel.WireV8'], ['goog.asserts', 'goog.json', 'goog.json.NativeJsonProcessor', 'goog.structs'], false); -goog.addDependency('labs/net/webchannel/wirev8_test.js', ['goog.labs.net.webChannel.WireV8Test'], ['goog.labs.net.webChannel.WireV8', 'goog.testing.jsunit'], false); -goog.addDependency('labs/net/webchanneltransport.js', ['goog.net.WebChannelTransport'], [], false); -goog.addDependency('labs/net/webchanneltransportfactory.js', ['goog.net.createWebChannelTransport'], ['goog.functions', 'goog.labs.net.webChannel.WebChannelBaseTransport'], false); -goog.addDependency('labs/net/xhr.js', ['goog.labs.net.xhr', 'goog.labs.net.xhr.Error', 'goog.labs.net.xhr.HttpError', 'goog.labs.net.xhr.Options', 'goog.labs.net.xhr.PostData', 'goog.labs.net.xhr.ResponseType', 'goog.labs.net.xhr.TimeoutError'], ['goog.Promise', 'goog.debug.Error', 'goog.json', 'goog.net.HttpStatus', 'goog.net.XmlHttp', 'goog.string', 'goog.uri.utils', 'goog.userAgent'], false); -goog.addDependency('labs/net/xhr_test.js', ['goog.labs.net.xhrTest'], ['goog.Promise', 'goog.labs.net.xhr', 'goog.net.WrapperXmlHttpFactory', 'goog.net.XmlHttp', 'goog.testing.MockClock', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('labs/object/object.js', ['goog.labs.object'], [], false); -goog.addDependency('labs/object/object_test.js', ['goog.labs.objectTest'], ['goog.labs.object', 'goog.testing.jsunit'], false); -goog.addDependency('labs/pubsub/broadcastpubsub.js', ['goog.labs.pubsub.BroadcastPubSub'], ['goog.Disposable', 'goog.Timer', 'goog.array', 'goog.async.run', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.json', 'goog.log', 'goog.math', 'goog.pubsub.PubSub', 'goog.storage.Storage', 'goog.storage.mechanism.HTML5LocalStorage', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('labs/pubsub/broadcastpubsub_test.js', ['goog.labs.pubsub.BroadcastPubSubTest'], ['goog.array', 'goog.debug.Logger', 'goog.json', 'goog.labs.pubsub.BroadcastPubSub', 'goog.storage.Storage', 'goog.structs.Map', 'goog.testing.MockClock', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.testing.mockmatchers.ArgumentMatcher', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('labs/storage/boundedcollectablestorage.js', ['goog.labs.storage.BoundedCollectableStorage'], ['goog.array', 'goog.asserts', 'goog.iter', 'goog.storage.CollectableStorage', 'goog.storage.ErrorCode', 'goog.storage.ExpiringStorage'], false); -goog.addDependency('labs/storage/boundedcollectablestorage_test.js', ['goog.labs.storage.BoundedCollectableStorageTest'], ['goog.labs.storage.BoundedCollectableStorage', 'goog.storage.collectableStorageTester', 'goog.storage.storage_test', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.storage.FakeMechanism'], false); -goog.addDependency('labs/structs/map.js', ['goog.labs.structs.Map'], ['goog.array', 'goog.asserts', 'goog.labs.object', 'goog.object'], false); -goog.addDependency('labs/structs/map_perf.js', ['goog.labs.structs.MapPerf'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.labs.structs.Map', 'goog.structs.Map', 'goog.testing.PerformanceTable', 'goog.testing.jsunit'], false); -goog.addDependency('labs/structs/map_test.js', ['goog.labs.structs.MapTest'], ['goog.labs.structs.Map', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('labs/structs/multimap.js', ['goog.labs.structs.Multimap'], ['goog.array', 'goog.labs.object', 'goog.labs.structs.Map'], false); -goog.addDependency('labs/structs/multimap_test.js', ['goog.labs.structs.MultimapTest'], ['goog.labs.structs.Map', 'goog.labs.structs.Multimap', 'goog.testing.jsunit'], false); -goog.addDependency('labs/style/pixeldensitymonitor.js', ['goog.labs.style.PixelDensityMonitor', 'goog.labs.style.PixelDensityMonitor.Density', 'goog.labs.style.PixelDensityMonitor.EventType'], ['goog.events', 'goog.events.EventTarget'], false); -goog.addDependency('labs/style/pixeldensitymonitor_test.js', ['goog.labs.style.PixelDensityMonitorTest'], ['goog.array', 'goog.dom.DomHelper', 'goog.events', 'goog.labs.style.PixelDensityMonitor', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('labs/testing/assertthat.js', ['goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat'], ['goog.debug.Error'], false); -goog.addDependency('labs/testing/assertthat_test.js', ['goog.labs.testing.assertThatTest'], ['goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('labs/testing/decoratormatcher.js', ['goog.labs.testing.AnythingMatcher'], ['goog.labs.testing.Matcher'], false); -goog.addDependency('labs/testing/decoratormatcher_test.js', ['goog.labs.testing.decoratorMatcherTest'], ['goog.labs.testing.AnythingMatcher', 'goog.labs.testing.GreaterThanMatcher', 'goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/dictionarymatcher.js', ['goog.labs.testing.HasEntriesMatcher', 'goog.labs.testing.HasEntryMatcher', 'goog.labs.testing.HasKeyMatcher', 'goog.labs.testing.HasValueMatcher'], ['goog.asserts', 'goog.labs.testing.Matcher', 'goog.object'], false); -goog.addDependency('labs/testing/dictionarymatcher_test.js', ['goog.labs.testing.dictionaryMatcherTest'], ['goog.labs.testing.HasEntryMatcher', 'goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/environment.js', ['goog.labs.testing.Environment'], ['goog.array', 'goog.asserts', 'goog.debug.Console', 'goog.testing.MockClock', 'goog.testing.MockControl', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/environment_test.js', ['goog.labs.testing.environmentTest'], ['goog.labs.testing.Environment', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.testing.testSuite'], false); -goog.addDependency('labs/testing/environment_usage_test.js', ['goog.labs.testing.environmentUsageTest'], ['goog.labs.testing.Environment'], false); -goog.addDependency('labs/testing/logicmatcher.js', ['goog.labs.testing.AllOfMatcher', 'goog.labs.testing.AnyOfMatcher', 'goog.labs.testing.IsNotMatcher'], ['goog.array', 'goog.labs.testing.Matcher'], false); -goog.addDependency('labs/testing/logicmatcher_test.js', ['goog.labs.testing.logicMatcherTest'], ['goog.labs.testing.AllOfMatcher', 'goog.labs.testing.GreaterThanMatcher', 'goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/matcher.js', ['goog.labs.testing.Matcher'], [], false); -goog.addDependency('labs/testing/numbermatcher.js', ['goog.labs.testing.CloseToMatcher', 'goog.labs.testing.EqualToMatcher', 'goog.labs.testing.GreaterThanEqualToMatcher', 'goog.labs.testing.GreaterThanMatcher', 'goog.labs.testing.LessThanEqualToMatcher', 'goog.labs.testing.LessThanMatcher'], ['goog.asserts', 'goog.labs.testing.Matcher'], false); -goog.addDependency('labs/testing/numbermatcher_test.js', ['goog.labs.testing.numberMatcherTest'], ['goog.labs.testing.LessThanMatcher', 'goog.labs.testing.MatcherError', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/objectmatcher.js', ['goog.labs.testing.HasPropertyMatcher', 'goog.labs.testing.InstanceOfMatcher', 'goog.labs.testing.IsNullMatcher', 'goog.labs.testing.IsNullOrUndefinedMatcher', 'goog.labs.testing.IsUndefinedMatcher', 'goog.labs.testing.ObjectEqualsMatcher'], ['goog.labs.testing.Matcher'], false); -goog.addDependency('labs/testing/objectmatcher_test.js', ['goog.labs.testing.objectMatcherTest'], ['goog.labs.testing.MatcherError', 'goog.labs.testing.ObjectEqualsMatcher', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/testing/stringmatcher.js', ['goog.labs.testing.ContainsStringMatcher', 'goog.labs.testing.EndsWithMatcher', 'goog.labs.testing.EqualToIgnoringWhitespaceMatcher', 'goog.labs.testing.EqualsMatcher', 'goog.labs.testing.RegexMatcher', 'goog.labs.testing.StartsWithMatcher', 'goog.labs.testing.StringContainsInOrderMatcher'], ['goog.asserts', 'goog.labs.testing.Matcher', 'goog.string'], false); -goog.addDependency('labs/testing/stringmatcher_test.js', ['goog.labs.testing.stringMatcherTest'], ['goog.labs.testing.MatcherError', 'goog.labs.testing.StringContainsInOrderMatcher', 'goog.labs.testing.assertThat', 'goog.testing.jsunit'], false); -goog.addDependency('labs/useragent/browser.js', ['goog.labs.userAgent.browser'], ['goog.array', 'goog.labs.userAgent.util', 'goog.object', 'goog.string'], false); -goog.addDependency('labs/useragent/browser_test.js', ['goog.labs.userAgent.browserTest'], ['goog.labs.userAgent.browser', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.object', 'goog.testing.jsunit'], false); -goog.addDependency('labs/useragent/device.js', ['goog.labs.userAgent.device'], ['goog.labs.userAgent.util'], false); -goog.addDependency('labs/useragent/device_test.js', ['goog.labs.userAgent.deviceTest'], ['goog.labs.userAgent.device', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.jsunit'], false); -goog.addDependency('labs/useragent/engine.js', ['goog.labs.userAgent.engine'], ['goog.array', 'goog.labs.userAgent.util', 'goog.string'], false); -goog.addDependency('labs/useragent/engine_test.js', ['goog.labs.userAgent.engineTest'], ['goog.labs.userAgent.engine', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.jsunit'], false); -goog.addDependency('labs/useragent/platform.js', ['goog.labs.userAgent.platform'], ['goog.labs.userAgent.util', 'goog.string'], false); -goog.addDependency('labs/useragent/platform_test.js', ['goog.labs.userAgent.platformTest'], ['goog.labs.userAgent.platform', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.jsunit'], false); -goog.addDependency('labs/useragent/test_agents.js', ['goog.labs.userAgent.testAgents'], [], false); -goog.addDependency('labs/useragent/util.js', ['goog.labs.userAgent.util'], ['goog.string'], false); -goog.addDependency('labs/useragent/util_test.js', ['goog.labs.userAgent.utilTest'], ['goog.functions', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('locale/countries.js', ['goog.locale.countries'], [], false); -goog.addDependency('locale/countrylanguagenames_test.js', ['goog.locale.countryLanguageNamesTest'], ['goog.locale', 'goog.testing.jsunit'], false); -goog.addDependency('locale/defaultlocalenameconstants.js', ['goog.locale.defaultLocaleNameConstants'], [], false); -goog.addDependency('locale/genericfontnames.js', ['goog.locale.genericFontNames'], [], false); -goog.addDependency('locale/genericfontnames_test.js', ['goog.locale.genericFontNamesTest'], ['goog.locale.genericFontNames', 'goog.testing.jsunit'], false); -goog.addDependency('locale/genericfontnamesdata.js', ['goog.locale.genericFontNamesData'], [], false); -goog.addDependency('locale/locale.js', ['goog.locale'], ['goog.locale.nativeNameConstants'], false); -goog.addDependency('locale/nativenameconstants.js', ['goog.locale.nativeNameConstants'], [], false); -goog.addDependency('locale/scriptToLanguages.js', ['goog.locale.scriptToLanguages'], ['goog.locale'], false); -goog.addDependency('locale/timezonedetection.js', ['goog.locale.timeZoneDetection'], ['goog.locale.TimeZoneFingerprint'], false); -goog.addDependency('locale/timezonedetection_test.js', ['goog.locale.timeZoneDetectionTest'], ['goog.locale.timeZoneDetection', 'goog.testing.jsunit'], false); -goog.addDependency('locale/timezonefingerprint.js', ['goog.locale.TimeZoneFingerprint'], [], false); -goog.addDependency('locale/timezonelist.js', ['goog.locale.TimeZoneList'], ['goog.locale'], false); -goog.addDependency('locale/timezonelist_test.js', ['goog.locale.TimeZoneListTest'], ['goog.locale', 'goog.locale.TimeZoneList', 'goog.testing.jsunit'], false); -goog.addDependency('log/log.js', ['goog.log', 'goog.log.Level', 'goog.log.LogRecord', 'goog.log.Logger'], ['goog.debug', 'goog.debug.LogManager', 'goog.debug.LogRecord', 'goog.debug.Logger'], false); -goog.addDependency('log/log_test.js', ['goog.logTest'], ['goog.debug.LogManager', 'goog.log', 'goog.log.Level', 'goog.testing.jsunit'], false); -goog.addDependency('math/affinetransform.js', ['goog.math.AffineTransform'], ['goog.math'], false); -goog.addDependency('math/affinetransform_test.js', ['goog.math.AffineTransformTest'], ['goog.array', 'goog.math', 'goog.math.AffineTransform', 'goog.testing.jsunit'], false); -goog.addDependency('math/bezier.js', ['goog.math.Bezier'], ['goog.math', 'goog.math.Coordinate'], false); -goog.addDependency('math/bezier_test.js', ['goog.math.BezierTest'], ['goog.math', 'goog.math.Bezier', 'goog.math.Coordinate', 'goog.testing.jsunit'], false); -goog.addDependency('math/box.js', ['goog.math.Box'], ['goog.math.Coordinate'], false); -goog.addDependency('math/box_test.js', ['goog.math.BoxTest'], ['goog.math.Box', 'goog.math.Coordinate', 'goog.testing.jsunit'], false); -goog.addDependency('math/coordinate.js', ['goog.math.Coordinate'], ['goog.math'], false); -goog.addDependency('math/coordinate3.js', ['goog.math.Coordinate3'], [], false); -goog.addDependency('math/coordinate3_test.js', ['goog.math.Coordinate3Test'], ['goog.math.Coordinate3', 'goog.testing.jsunit'], false); -goog.addDependency('math/coordinate_test.js', ['goog.math.CoordinateTest'], ['goog.math.Coordinate', 'goog.testing.jsunit'], false); -goog.addDependency('math/exponentialbackoff.js', ['goog.math.ExponentialBackoff'], ['goog.asserts'], false); -goog.addDependency('math/exponentialbackoff_test.js', ['goog.math.ExponentialBackoffTest'], ['goog.math.ExponentialBackoff', 'goog.testing.jsunit'], false); -goog.addDependency('math/integer.js', ['goog.math.Integer'], [], false); -goog.addDependency('math/integer_test.js', ['goog.math.IntegerTest'], ['goog.math.Integer', 'goog.testing.jsunit'], false); -goog.addDependency('math/interpolator/interpolator1.js', ['goog.math.interpolator.Interpolator1'], [], false); -goog.addDependency('math/interpolator/linear1.js', ['goog.math.interpolator.Linear1'], ['goog.array', 'goog.asserts', 'goog.math', 'goog.math.interpolator.Interpolator1'], false); -goog.addDependency('math/interpolator/linear1_test.js', ['goog.math.interpolator.Linear1Test'], ['goog.math.interpolator.Linear1', 'goog.testing.jsunit'], false); -goog.addDependency('math/interpolator/pchip1.js', ['goog.math.interpolator.Pchip1'], ['goog.math', 'goog.math.interpolator.Spline1'], false); -goog.addDependency('math/interpolator/pchip1_test.js', ['goog.math.interpolator.Pchip1Test'], ['goog.math.interpolator.Pchip1', 'goog.testing.jsunit'], false); -goog.addDependency('math/interpolator/spline1.js', ['goog.math.interpolator.Spline1'], ['goog.array', 'goog.asserts', 'goog.math', 'goog.math.interpolator.Interpolator1', 'goog.math.tdma'], false); -goog.addDependency('math/interpolator/spline1_test.js', ['goog.math.interpolator.Spline1Test'], ['goog.math.interpolator.Spline1', 'goog.testing.jsunit'], false); -goog.addDependency('math/line.js', ['goog.math.Line'], ['goog.math', 'goog.math.Coordinate'], false); -goog.addDependency('math/line_test.js', ['goog.math.LineTest'], ['goog.math.Coordinate', 'goog.math.Line', 'goog.testing.jsunit'], false); -goog.addDependency('math/long.js', ['goog.math.Long'], [], false); -goog.addDependency('math/long_test.js', ['goog.math.LongTest'], ['goog.math.Long', 'goog.testing.jsunit'], false); -goog.addDependency('math/math.js', ['goog.math'], ['goog.array', 'goog.asserts'], false); -goog.addDependency('math/math_test.js', ['goog.mathTest'], ['goog.math', 'goog.testing.jsunit'], false); -goog.addDependency('math/matrix.js', ['goog.math.Matrix'], ['goog.array', 'goog.math', 'goog.math.Size', 'goog.string'], false); -goog.addDependency('math/matrix_test.js', ['goog.math.MatrixTest'], ['goog.math.Matrix', 'goog.testing.jsunit'], false); -goog.addDependency('math/path.js', ['goog.math.Path', 'goog.math.Path.Segment'], ['goog.array', 'goog.math'], false); -goog.addDependency('math/path_test.js', ['goog.math.PathTest'], ['goog.array', 'goog.math.AffineTransform', 'goog.math.Path', 'goog.testing.jsunit'], false); -goog.addDependency('math/paths.js', ['goog.math.paths'], ['goog.math.Coordinate', 'goog.math.Path'], false); -goog.addDependency('math/paths_test.js', ['goog.math.pathsTest'], ['goog.math.Coordinate', 'goog.math.paths', 'goog.testing.jsunit'], false); -goog.addDependency('math/range.js', ['goog.math.Range'], ['goog.asserts'], false); -goog.addDependency('math/range_test.js', ['goog.math.RangeTest'], ['goog.math.Range', 'goog.testing.jsunit'], false); -goog.addDependency('math/rangeset.js', ['goog.math.RangeSet'], ['goog.array', 'goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.math.Range'], false); -goog.addDependency('math/rangeset_test.js', ['goog.math.RangeSetTest'], ['goog.iter', 'goog.math.Range', 'goog.math.RangeSet', 'goog.testing.jsunit'], false); -goog.addDependency('math/rect.js', ['goog.math.Rect'], ['goog.math.Box', 'goog.math.Coordinate', 'goog.math.Size'], false); -goog.addDependency('math/rect_test.js', ['goog.math.RectTest'], ['goog.math.Box', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.math.Size', 'goog.testing.jsunit'], false); -goog.addDependency('math/size.js', ['goog.math.Size'], [], false); -goog.addDependency('math/size_test.js', ['goog.math.SizeTest'], ['goog.math.Size', 'goog.testing.jsunit'], false); -goog.addDependency('math/tdma.js', ['goog.math.tdma'], [], false); -goog.addDependency('math/tdma_test.js', ['goog.math.tdmaTest'], ['goog.math.tdma', 'goog.testing.jsunit'], false); -goog.addDependency('math/vec2.js', ['goog.math.Vec2'], ['goog.math', 'goog.math.Coordinate'], false); -goog.addDependency('math/vec2_test.js', ['goog.math.Vec2Test'], ['goog.math.Vec2', 'goog.testing.jsunit'], false); -goog.addDependency('math/vec3.js', ['goog.math.Vec3'], ['goog.math', 'goog.math.Coordinate3'], false); -goog.addDependency('math/vec3_test.js', ['goog.math.Vec3Test'], ['goog.math.Coordinate3', 'goog.math.Vec3', 'goog.testing.jsunit'], false); -goog.addDependency('memoize/memoize.js', ['goog.memoize'], [], false); -goog.addDependency('memoize/memoize_test.js', ['goog.memoizeTest'], ['goog.memoize', 'goog.testing.jsunit'], false); -goog.addDependency('messaging/abstractchannel.js', ['goog.messaging.AbstractChannel'], ['goog.Disposable', 'goog.json', 'goog.log', 'goog.messaging.MessageChannel'], false); -goog.addDependency('messaging/abstractchannel_test.js', ['goog.messaging.AbstractChannelTest'], ['goog.messaging.AbstractChannel', 'goog.testing.MockControl', 'goog.testing.async.MockControl', 'goog.testing.jsunit'], false); -goog.addDependency('messaging/bufferedchannel.js', ['goog.messaging.BufferedChannel'], ['goog.Disposable', 'goog.Timer', 'goog.events', 'goog.log', 'goog.messaging.MessageChannel', 'goog.messaging.MultiChannel'], false); -goog.addDependency('messaging/bufferedchannel_test.js', ['goog.messaging.BufferedChannelTest'], ['goog.debug.Console', 'goog.dom', 'goog.dom.TagName', 'goog.log', 'goog.log.Level', 'goog.messaging.BufferedChannel', 'goog.testing.MockClock', 'goog.testing.MockControl', 'goog.testing.async.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/deferredchannel.js', ['goog.messaging.DeferredChannel'], ['goog.Disposable', 'goog.messaging.MessageChannel'], false); -goog.addDependency('messaging/deferredchannel_test.js', ['goog.messaging.DeferredChannelTest'], ['goog.async.Deferred', 'goog.messaging.DeferredChannel', 'goog.testing.MockControl', 'goog.testing.async.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/loggerclient.js', ['goog.messaging.LoggerClient'], ['goog.Disposable', 'goog.debug', 'goog.debug.LogManager', 'goog.debug.Logger'], false); -goog.addDependency('messaging/loggerclient_test.js', ['goog.messaging.LoggerClientTest'], ['goog.debug', 'goog.debug.Logger', 'goog.messaging.LoggerClient', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/loggerserver.js', ['goog.messaging.LoggerServer'], ['goog.Disposable', 'goog.log', 'goog.log.Level'], false); -goog.addDependency('messaging/loggerserver_test.js', ['goog.messaging.LoggerServerTest'], ['goog.debug.LogManager', 'goog.debug.Logger', 'goog.log', 'goog.log.Level', 'goog.messaging.LoggerServer', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/messagechannel.js', ['goog.messaging.MessageChannel'], [], false); -goog.addDependency('messaging/messaging.js', ['goog.messaging'], [], false); -goog.addDependency('messaging/messaging_test.js', ['goog.testing.messaging.MockMessageChannelTest'], ['goog.messaging', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/multichannel.js', ['goog.messaging.MultiChannel', 'goog.messaging.MultiChannel.VirtualChannel'], ['goog.Disposable', 'goog.log', 'goog.messaging.MessageChannel', 'goog.object'], false); -goog.addDependency('messaging/multichannel_test.js', ['goog.messaging.MultiChannelTest'], ['goog.messaging.MultiChannel', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel', 'goog.testing.mockmatchers.IgnoreArgument'], false); -goog.addDependency('messaging/portcaller.js', ['goog.messaging.PortCaller'], ['goog.Disposable', 'goog.async.Deferred', 'goog.messaging.DeferredChannel', 'goog.messaging.PortChannel', 'goog.messaging.PortNetwork', 'goog.object'], false); -goog.addDependency('messaging/portcaller_test.js', ['goog.messaging.PortCallerTest'], ['goog.events.EventTarget', 'goog.messaging.PortCaller', 'goog.messaging.PortNetwork', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/portchannel.js', ['goog.messaging.PortChannel'], ['goog.Timer', 'goog.array', 'goog.async.Deferred', 'goog.debug', 'goog.events', 'goog.events.EventType', 'goog.json', 'goog.log', 'goog.messaging.AbstractChannel', 'goog.messaging.DeferredChannel', 'goog.object', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('messaging/portnetwork.js', ['goog.messaging.PortNetwork'], [], false); -goog.addDependency('messaging/portoperator.js', ['goog.messaging.PortOperator'], ['goog.Disposable', 'goog.asserts', 'goog.log', 'goog.messaging.PortChannel', 'goog.messaging.PortNetwork', 'goog.object'], false); -goog.addDependency('messaging/portoperator_test.js', ['goog.messaging.PortOperatorTest'], ['goog.messaging.PortNetwork', 'goog.messaging.PortOperator', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel', 'goog.testing.messaging.MockMessagePort'], false); -goog.addDependency('messaging/respondingchannel.js', ['goog.messaging.RespondingChannel'], ['goog.Disposable', 'goog.log', 'goog.messaging.MultiChannel'], false); -goog.addDependency('messaging/respondingchannel_test.js', ['goog.messaging.RespondingChannelTest'], ['goog.messaging.RespondingChannel', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('messaging/testdata/portchannel_worker.js', ['goog.messaging.testdata.portchannel_worker'], ['goog.messaging.PortChannel'], false); -goog.addDependency('messaging/testdata/portnetwork_worker1.js', ['goog.messaging.testdata.portnetwork_worker1'], ['goog.messaging.PortCaller', 'goog.messaging.PortChannel'], false); -goog.addDependency('messaging/testdata/portnetwork_worker2.js', ['goog.messaging.testdata.portnetwork_worker2'], ['goog.messaging.PortCaller', 'goog.messaging.PortChannel'], false); -goog.addDependency('module/abstractmoduleloader.js', ['goog.module.AbstractModuleLoader'], ['goog.module'], false); -goog.addDependency('module/basemodule.js', ['goog.module.BaseModule'], ['goog.Disposable', 'goog.module'], false); -goog.addDependency('module/loader.js', ['goog.module.Loader'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.module', 'goog.object'], false); -goog.addDependency('module/module.js', ['goog.module'], [], false); -goog.addDependency('module/moduleinfo.js', ['goog.module.ModuleInfo'], ['goog.Disposable', 'goog.async.throwException', 'goog.functions', 'goog.module', 'goog.module.BaseModule', 'goog.module.ModuleLoadCallback'], false); -goog.addDependency('module/moduleinfo_test.js', ['goog.module.ModuleInfoTest'], ['goog.module.BaseModule', 'goog.module.ModuleInfo', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('module/moduleloadcallback.js', ['goog.module.ModuleLoadCallback'], ['goog.debug.entryPointRegistry', 'goog.module'], false); -goog.addDependency('module/moduleloadcallback_test.js', ['goog.module.ModuleLoadCallbackTest'], ['goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.functions', 'goog.module.ModuleLoadCallback', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('module/moduleloader.js', ['goog.module.ModuleLoader'], ['goog.Timer', 'goog.array', 'goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventId', 'goog.events.EventTarget', 'goog.labs.userAgent.browser', 'goog.log', 'goog.module.AbstractModuleLoader', 'goog.net.BulkLoader', 'goog.net.EventType', 'goog.net.jsloader', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('module/moduleloader_test.js', ['goog.module.ModuleLoaderTest'], ['goog.Promise', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.functions', 'goog.module.ModuleLoader', 'goog.module.ModuleManager', 'goog.net.BulkLoader', 'goog.net.XmlHttp', 'goog.object', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.events.EventObserver', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('module/modulemanager.js', ['goog.module.ModuleManager', 'goog.module.ModuleManager.CallbackType', 'goog.module.ModuleManager.FailureType'], ['goog.Disposable', 'goog.array', 'goog.asserts', 'goog.async.Deferred', 'goog.debug.Trace', 'goog.dispose', 'goog.log', 'goog.module', 'goog.module.ModuleInfo', 'goog.module.ModuleLoadCallback', 'goog.object'], false); -goog.addDependency('module/modulemanager_test.js', ['goog.module.ModuleManagerTest'], ['goog.array', 'goog.functions', 'goog.module.BaseModule', 'goog.module.ModuleManager', 'goog.testing', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('module/testdata/modA_1.js', ['goog.module.testdata.modA_1'], [], false); -goog.addDependency('module/testdata/modA_2.js', ['goog.module.testdata.modA_2'], ['goog.module.ModuleManager'], false); -goog.addDependency('module/testdata/modB_1.js', ['goog.module.testdata.modB_1'], ['goog.module.ModuleManager'], false); -goog.addDependency('net/browserchannel.js', ['goog.net.BrowserChannel', 'goog.net.BrowserChannel.Error', 'goog.net.BrowserChannel.Event', 'goog.net.BrowserChannel.Handler', 'goog.net.BrowserChannel.LogSaver', 'goog.net.BrowserChannel.QueuedMap', 'goog.net.BrowserChannel.ServerReachability', 'goog.net.BrowserChannel.ServerReachabilityEvent', 'goog.net.BrowserChannel.Stat', 'goog.net.BrowserChannel.StatEvent', 'goog.net.BrowserChannel.State', 'goog.net.BrowserChannel.TimingEvent'], ['goog.Uri', 'goog.array', 'goog.asserts', 'goog.debug.TextFormatter', 'goog.events.Event', 'goog.events.EventTarget', 'goog.json', 'goog.json.EvalJsonProcessor', 'goog.log', 'goog.net.BrowserTestChannel', 'goog.net.ChannelDebug', 'goog.net.ChannelRequest', 'goog.net.XhrIo', 'goog.net.tmpnetwork', 'goog.object', 'goog.string', 'goog.structs', 'goog.structs.CircularBuffer'], false); -goog.addDependency('net/browserchannel_test.js', ['goog.net.BrowserChannelTest'], ['goog.Timer', 'goog.array', 'goog.dom', 'goog.functions', 'goog.json', 'goog.net.BrowserChannel', 'goog.net.ChannelDebug', 'goog.net.ChannelRequest', 'goog.net.tmpnetwork', 'goog.structs.Map', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('net/browsertestchannel.js', ['goog.net.BrowserTestChannel'], ['goog.json.EvalJsonProcessor', 'goog.net.ChannelRequest', 'goog.net.ChannelRequest.Error', 'goog.net.tmpnetwork', 'goog.string.Parser'], false); -goog.addDependency('net/bulkloader.js', ['goog.net.BulkLoader'], ['goog.events.EventHandler', 'goog.events.EventTarget', 'goog.log', 'goog.net.BulkLoaderHelper', 'goog.net.EventType', 'goog.net.XhrIo'], false); -goog.addDependency('net/bulkloader_test.js', ['goog.net.BulkLoaderTest'], ['goog.events.Event', 'goog.events.EventHandler', 'goog.net.BulkLoader', 'goog.net.EventType', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('net/bulkloaderhelper.js', ['goog.net.BulkLoaderHelper'], ['goog.Disposable'], false); -goog.addDependency('net/channeldebug.js', ['goog.net.ChannelDebug'], ['goog.json', 'goog.log'], false); -goog.addDependency('net/channelrequest.js', ['goog.net.ChannelRequest', 'goog.net.ChannelRequest.Error'], ['goog.Timer', 'goog.async.Throttle', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events.EventHandler', 'goog.html.SafeUrl', 'goog.html.uncheckedconversions', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.XmlHttp', 'goog.object', 'goog.string', 'goog.string.Const', 'goog.userAgent'], false); -goog.addDependency('net/channelrequest_test.js', ['goog.net.ChannelRequestTest'], ['goog.Uri', 'goog.functions', 'goog.net.BrowserChannel', 'goog.net.ChannelDebug', 'goog.net.ChannelRequest', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.net.XhrIo', 'goog.testing.recordFunction'], false); -goog.addDependency('net/cookies.js', ['goog.net.Cookies', 'goog.net.cookies'], [], false); -goog.addDependency('net/cookies_test.js', ['goog.net.cookiesTest'], ['goog.array', 'goog.net.cookies', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('net/corsxmlhttpfactory.js', ['goog.net.CorsXmlHttpFactory', 'goog.net.IeCorsXhrAdapter'], ['goog.net.HttpStatus', 'goog.net.XhrLike', 'goog.net.XmlHttp', 'goog.net.XmlHttpFactory'], false); -goog.addDependency('net/corsxmlhttpfactory_test.js', ['goog.net.CorsXmlHttpFactoryTest'], ['goog.net.CorsXmlHttpFactory', 'goog.net.IeCorsXhrAdapter', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('net/crossdomainrpc.js', ['goog.net.CrossDomainRpc'], ['goog.Uri', 'goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.html.legacyconversions', 'goog.json', 'goog.log', 'goog.net.EventType', 'goog.net.HttpStatus', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('net/crossdomainrpc_test.js', ['goog.net.CrossDomainRpcTest'], ['goog.Promise', 'goog.log', 'goog.net.CrossDomainRpc', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('net/errorcode.js', ['goog.net.ErrorCode'], [], false); -goog.addDependency('net/eventtype.js', ['goog.net.EventType'], [], false); -goog.addDependency('net/fetchxmlhttpfactory.js', ['goog.net.FetchXmlHttp', 'goog.net.FetchXmlHttpFactory'], ['goog.asserts', 'goog.events.EventTarget', 'goog.functions', 'goog.log', 'goog.net.XhrLike', 'goog.net.XmlHttpFactory'], false); -goog.addDependency('net/fetchxmlhttpfactory_test.js', ['goog.net.FetchXmlHttpFactoryTest'], ['goog.net.FetchXmlHttp', 'goog.net.FetchXmlHttpFactory', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('net/filedownloader.js', ['goog.net.FileDownloader', 'goog.net.FileDownloader.Error'], ['goog.Disposable', 'goog.asserts', 'goog.async.Deferred', 'goog.crypt.hash32', 'goog.debug.Error', 'goog.events', 'goog.events.EventHandler', 'goog.fs', 'goog.fs.DirectoryEntry', 'goog.fs.Error', 'goog.fs.FileSaver', 'goog.net.EventType', 'goog.net.XhrIo', 'goog.net.XhrIoPool', 'goog.object'], false); -goog.addDependency('net/filedownloader_test.js', ['goog.net.FileDownloaderTest'], ['goog.fs.Error', 'goog.net.ErrorCode', 'goog.net.FileDownloader', 'goog.net.XhrIo', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.fs', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit', 'goog.testing.net.XhrIoPool'], false); -goog.addDependency('net/httpstatus.js', ['goog.net.HttpStatus'], [], false); -goog.addDependency('net/iframe_xhr_test.js', ['goog.net.iframeXhrTest'], ['goog.Timer', 'goog.debug.Console', 'goog.debug.LogManager', 'goog.debug.Logger', 'goog.dom.TagName', 'goog.events', 'goog.net.IframeIo', 'goog.net.XhrIo', 'goog.testing.AsyncTestCase', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('net/iframeio.js', ['goog.net.IframeIo', 'goog.net.IframeIo.IncrementalDataEvent'], ['goog.Timer', 'goog.Uri', 'goog.array', 'goog.asserts', 'goog.debug', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.html.uncheckedconversions', 'goog.json', 'goog.log', 'goog.log.Level', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.reflect', 'goog.string', 'goog.string.Const', 'goog.structs', 'goog.userAgent'], false); -goog.addDependency('net/iframeio_different_base_test.js', ['goog.net.iframeIoDifferentBaseTest'], ['goog.Promise', 'goog.events', 'goog.net.EventType', 'goog.net.IframeIo', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('net/iframeio_test.js', ['goog.net.IframeIoTest'], ['goog.debug', 'goog.debug.DivConsole', 'goog.debug.LogManager', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.log', 'goog.log.Level', 'goog.net.IframeIo', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('net/iframeloadmonitor.js', ['goog.net.IframeLoadMonitor'], ['goog.dom', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.userAgent'], false); -goog.addDependency('net/iframeloadmonitor_test.js', ['goog.net.IframeLoadMonitorTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.net.IframeLoadMonitor', 'goog.testing.AsyncTestCase', 'goog.testing.jsunit'], false); -goog.addDependency('net/imageloader.js', ['goog.net.ImageLoader'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.net.EventType', 'goog.object', 'goog.userAgent'], false); -goog.addDependency('net/imageloader_test.js', ['goog.net.ImageLoaderTest'], ['goog.Timer', 'goog.array', 'goog.dispose', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.net.EventType', 'goog.net.ImageLoader', 'goog.object', 'goog.string', 'goog.testing.AsyncTestCase', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('net/ipaddress.js', ['goog.net.IpAddress', 'goog.net.Ipv4Address', 'goog.net.Ipv6Address'], ['goog.array', 'goog.math.Integer', 'goog.object', 'goog.string'], false); -goog.addDependency('net/ipaddress_test.js', ['goog.net.IpAddressTest'], ['goog.math.Integer', 'goog.net.IpAddress', 'goog.net.Ipv4Address', 'goog.net.Ipv6Address', 'goog.testing.jsunit'], false); -goog.addDependency('net/jsloader.js', ['goog.net.jsloader', 'goog.net.jsloader.Error', 'goog.net.jsloader.ErrorCode', 'goog.net.jsloader.Options'], ['goog.array', 'goog.async.Deferred', 'goog.debug.Error', 'goog.dom', 'goog.dom.TagName', 'goog.object'], false); -goog.addDependency('net/jsloader_test.js', ['goog.net.jsloaderTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.net.jsloader', 'goog.net.jsloader.ErrorCode', 'goog.testing.AsyncTestCase', 'goog.testing.jsunit'], false); -goog.addDependency('net/jsonp.js', ['goog.net.Jsonp'], ['goog.Uri', 'goog.net.jsloader'], false); -goog.addDependency('net/jsonp_test.js', ['goog.net.JsonpTest'], ['goog.net.Jsonp', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('net/mockiframeio.js', ['goog.net.MockIFrameIo'], ['goog.events.EventTarget', 'goog.json', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.IframeIo'], false); -goog.addDependency('net/multiiframeloadmonitor.js', ['goog.net.MultiIframeLoadMonitor'], ['goog.events', 'goog.net.IframeLoadMonitor'], false); -goog.addDependency('net/multiiframeloadmonitor_test.js', ['goog.net.MultiIframeLoadMonitorTest'], ['goog.dom', 'goog.dom.TagName', 'goog.net.IframeLoadMonitor', 'goog.net.MultiIframeLoadMonitor', 'goog.testing.AsyncTestCase', 'goog.testing.jsunit'], false); -goog.addDependency('net/networkstatusmonitor.js', ['goog.net.NetworkStatusMonitor'], ['goog.events.Listenable'], false); -goog.addDependency('net/networktester.js', ['goog.net.NetworkTester'], ['goog.Timer', 'goog.Uri', 'goog.log'], false); -goog.addDependency('net/networktester_test.js', ['goog.net.NetworkTesterTest'], ['goog.Uri', 'goog.net.NetworkTester', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('net/streams/nodereadablestream.js', ['goog.net.streams.NodeReadableStream'], [], false); -goog.addDependency('net/streams/streamfactory.js', ['goog.net.streams.createNodeReadableStream'], ['goog.asserts', 'goog.net.XhrIo', 'goog.net.streams.NodeReadableStream'], false); -goog.addDependency('net/testdata/jsloader_test1.js', ['goog.net.testdata.jsloader_test1'], [], false); -goog.addDependency('net/testdata/jsloader_test2.js', ['goog.net.testdata.jsloader_test2'], [], false); -goog.addDependency('net/testdata/jsloader_test3.js', ['goog.net.testdata.jsloader_test3'], [], false); -goog.addDependency('net/testdata/jsloader_test4.js', ['goog.net.testdata.jsloader_test4'], [], false); -goog.addDependency('net/tmpnetwork.js', ['goog.net.tmpnetwork'], ['goog.Uri', 'goog.net.ChannelDebug'], false); -goog.addDependency('net/websocket.js', ['goog.net.WebSocket', 'goog.net.WebSocket.ErrorEvent', 'goog.net.WebSocket.EventType', 'goog.net.WebSocket.MessageEvent'], ['goog.Timer', 'goog.asserts', 'goog.debug.entryPointRegistry', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.log'], false); -goog.addDependency('net/websocket_test.js', ['goog.net.WebSocketTest'], ['goog.debug.EntryPointMonitor', 'goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.events', 'goog.functions', 'goog.net.WebSocket', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('net/wrapperxmlhttpfactory.js', ['goog.net.WrapperXmlHttpFactory'], ['goog.net.XhrLike', 'goog.net.XmlHttpFactory'], false); -goog.addDependency('net/xhrio.js', ['goog.net.XhrIo', 'goog.net.XhrIo.ResponseType'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.debug.entryPointRegistry', 'goog.events.EventTarget', 'goog.json', 'goog.log', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.HttpStatus', 'goog.net.XmlHttp', 'goog.object', 'goog.string', 'goog.structs', 'goog.structs.Map', 'goog.uri.utils', 'goog.userAgent'], false); -goog.addDependency('net/xhrio_test.js', ['goog.net.XhrIoTest'], ['goog.Uri', 'goog.debug.EntryPointMonitor', 'goog.debug.ErrorHandler', 'goog.debug.entryPointRegistry', 'goog.events', 'goog.functions', 'goog.net.EventType', 'goog.net.WrapperXmlHttpFactory', 'goog.net.XhrIo', 'goog.net.XmlHttp', 'goog.object', 'goog.string', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.net.XhrIo', 'goog.testing.recordFunction', 'goog.userAgent.product'], false); -goog.addDependency('net/xhriopool.js', ['goog.net.XhrIoPool'], ['goog.net.XhrIo', 'goog.structs.PriorityPool'], false); -goog.addDependency('net/xhriopool_test.js', ['goog.net.XhrIoPoolTest'], ['goog.net.XhrIoPool', 'goog.structs.Map', 'goog.testing.jsunit'], false); -goog.addDependency('net/xhrlike.js', ['goog.net.XhrLike'], [], false); -goog.addDependency('net/xhrmanager.js', ['goog.net.XhrManager', 'goog.net.XhrManager.Event', 'goog.net.XhrManager.Request'], ['goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.XhrIo', 'goog.net.XhrIoPool', 'goog.structs.Map'], false); -goog.addDependency('net/xhrmanager_test.js', ['goog.net.XhrManagerTest'], ['goog.events', 'goog.net.EventType', 'goog.net.XhrIo', 'goog.net.XhrManager', 'goog.testing.jsunit', 'goog.testing.net.XhrIoPool', 'goog.testing.recordFunction'], false); -goog.addDependency('net/xmlhttp.js', ['goog.net.DefaultXmlHttpFactory', 'goog.net.XmlHttp', 'goog.net.XmlHttp.OptionType', 'goog.net.XmlHttp.ReadyState', 'goog.net.XmlHttpDefines'], ['goog.asserts', 'goog.net.WrapperXmlHttpFactory', 'goog.net.XmlHttpFactory'], false); -goog.addDependency('net/xmlhttpfactory.js', ['goog.net.XmlHttpFactory'], ['goog.net.XhrLike'], false); -goog.addDependency('net/xpc/crosspagechannel.js', ['goog.net.xpc.CrossPageChannel'], ['goog.Uri', 'goog.async.Deferred', 'goog.async.Delay', 'goog.dispose', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.json', 'goog.log', 'goog.messaging.AbstractChannel', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.ChannelStates', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.DirectTransport', 'goog.net.xpc.FrameElementMethodTransport', 'goog.net.xpc.IframePollingTransport', 'goog.net.xpc.IframeRelayTransport', 'goog.net.xpc.NativeMessagingTransport', 'goog.net.xpc.NixTransport', 'goog.net.xpc.TransportTypes', 'goog.net.xpc.UriCfgFields', 'goog.string', 'goog.uri.utils', 'goog.userAgent'], false); -goog.addDependency('net/xpc/crosspagechannel_test.js', ['goog.net.xpc.CrossPageChannelTest'], ['goog.Disposable', 'goog.Uri', 'goog.async.Deferred', 'goog.dom', 'goog.dom.TagName', 'goog.labs.userAgent.browser', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.TransportTypes', 'goog.object', 'goog.testing.AsyncTestCase', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('net/xpc/crosspagechannelrole.js', ['goog.net.xpc.CrossPageChannelRole'], [], false); -goog.addDependency('net/xpc/directtransport.js', ['goog.net.xpc.DirectTransport'], ['goog.Timer', 'goog.async.Deferred', 'goog.events.EventHandler', 'goog.log', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes', 'goog.object'], false); -goog.addDependency('net/xpc/directtransport_test.js', ['goog.net.xpc.DirectTransportTest'], ['goog.Promise', 'goog.dom', 'goog.dom.TagName', 'goog.labs.userAgent.browser', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.TransportTypes', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('net/xpc/frameelementmethodtransport.js', ['goog.net.xpc.FrameElementMethodTransport'], ['goog.log', 'goog.net.xpc', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes'], false); -goog.addDependency('net/xpc/iframepollingtransport.js', ['goog.net.xpc.IframePollingTransport', 'goog.net.xpc.IframePollingTransport.Receiver', 'goog.net.xpc.IframePollingTransport.Sender'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes', 'goog.userAgent'], false); -goog.addDependency('net/xpc/iframepollingtransport_test.js', ['goog.net.xpc.IframePollingTransportTest'], ['goog.Timer', 'goog.dom', 'goog.dom.TagName', 'goog.functions', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.TransportTypes', 'goog.object', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('net/xpc/iframerelaytransport.js', ['goog.net.xpc.IframeRelayTransport'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.html.SafeHtml', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes', 'goog.string', 'goog.string.Const', 'goog.userAgent'], false); -goog.addDependency('net/xpc/nativemessagingtransport.js', ['goog.net.xpc.NativeMessagingTransport'], ['goog.Timer', 'goog.asserts', 'goog.async.Deferred', 'goog.events', 'goog.events.EventHandler', 'goog.log', 'goog.net.xpc', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes'], false); -goog.addDependency('net/xpc/nativemessagingtransport_test.js', ['goog.net.xpc.NativeMessagingTransportTest'], ['goog.dom', 'goog.events', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.NativeMessagingTransport', 'goog.testing.jsunit'], false); -goog.addDependency('net/xpc/nixtransport.js', ['goog.net.xpc.NixTransport'], ['goog.log', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes', 'goog.reflect'], false); -goog.addDependency('net/xpc/relay.js', ['goog.net.xpc.relay'], [], false); -goog.addDependency('net/xpc/transport.js', ['goog.net.xpc.Transport'], ['goog.Disposable', 'goog.dom', 'goog.net.xpc.TransportNames'], false); -goog.addDependency('net/xpc/xpc.js', ['goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.ChannelStates', 'goog.net.xpc.TransportNames', 'goog.net.xpc.TransportTypes', 'goog.net.xpc.UriCfgFields'], ['goog.log'], false); -goog.addDependency('object/object.js', ['goog.object'], [], false); -goog.addDependency('object/object_test.js', ['goog.objectTest'], ['goog.functions', 'goog.object', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('positioning/absoluteposition.js', ['goog.positioning.AbsolutePosition'], ['goog.math.Coordinate', 'goog.positioning', 'goog.positioning.AbstractPosition'], false); -goog.addDependency('positioning/abstractposition.js', ['goog.positioning.AbstractPosition'], [], false); -goog.addDependency('positioning/anchoredposition.js', ['goog.positioning.AnchoredPosition'], ['goog.positioning', 'goog.positioning.AbstractPosition'], false); -goog.addDependency('positioning/anchoredposition_test.js', ['goog.positioning.AnchoredPositionTest'], ['goog.dom', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.style', 'goog.testing.jsunit'], false); -goog.addDependency('positioning/anchoredviewportposition.js', ['goog.positioning.AnchoredViewportPosition'], ['goog.positioning', 'goog.positioning.AnchoredPosition', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus'], false); -goog.addDependency('positioning/anchoredviewportposition_test.js', ['goog.positioning.AnchoredViewportPositionTest'], ['goog.dom', 'goog.math.Box', 'goog.positioning.AnchoredViewportPosition', 'goog.positioning.Corner', 'goog.positioning.OverflowStatus', 'goog.style', 'goog.testing.jsunit'], false); -goog.addDependency('positioning/clientposition.js', ['goog.positioning.ClientPosition'], ['goog.asserts', 'goog.dom', 'goog.math.Coordinate', 'goog.positioning', 'goog.positioning.AbstractPosition', 'goog.style'], false); -goog.addDependency('positioning/clientposition_test.js', ['goog.positioning.clientPositionTest'], ['goog.dom', 'goog.dom.TagName', 'goog.positioning.ClientPosition', 'goog.positioning.Corner', 'goog.style', 'goog.testing.jsunit'], false); -goog.addDependency('positioning/menuanchoredposition.js', ['goog.positioning.MenuAnchoredPosition'], ['goog.positioning.AnchoredViewportPosition', 'goog.positioning.Overflow'], false); -goog.addDependency('positioning/menuanchoredposition_test.js', ['goog.positioning.MenuAnchoredPositionTest'], ['goog.dom', 'goog.dom.TagName', 'goog.positioning.Corner', 'goog.positioning.MenuAnchoredPosition', 'goog.testing.jsunit'], false); -goog.addDependency('positioning/positioning.js', ['goog.positioning', 'goog.positioning.Corner', 'goog.positioning.CornerBit', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.math.Size', 'goog.style', 'goog.style.bidi'], false); -goog.addDependency('positioning/positioning_test.js', ['goog.positioningTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.math.Box', 'goog.math.Coordinate', 'goog.math.Size', 'goog.positioning', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('positioning/viewportclientposition.js', ['goog.positioning.ViewportClientPosition'], ['goog.dom', 'goog.math.Coordinate', 'goog.positioning', 'goog.positioning.ClientPosition', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus', 'goog.style'], false); -goog.addDependency('positioning/viewportclientposition_test.js', ['goog.positioning.ViewportClientPositionTest'], ['goog.dom', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.positioning.ViewportClientPosition', 'goog.style', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('positioning/viewportposition.js', ['goog.positioning.ViewportPosition'], ['goog.math.Coordinate', 'goog.positioning', 'goog.positioning.AbstractPosition', 'goog.positioning.Corner', 'goog.style'], false); -goog.addDependency('promise/promise.js', ['goog.Promise'], ['goog.Thenable', 'goog.asserts', 'goog.async.FreeList', 'goog.async.run', 'goog.async.throwException', 'goog.debug.Error', 'goog.promise.Resolver'], false); -goog.addDependency('promise/promise_test.js', ['goog.PromiseTest'], ['goog.Promise', 'goog.Thenable', 'goog.Timer', 'goog.functions', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('promise/resolver.js', ['goog.promise.Resolver'], [], false); -goog.addDependency('promise/testsuiteadapter.js', ['goog.promise.testSuiteAdapter'], ['goog.Promise'], false); -goog.addDependency('promise/thenable.js', ['goog.Thenable'], [], false); -goog.addDependency('proto/proto.js', ['goog.proto'], ['goog.proto.Serializer'], false); -goog.addDependency('proto/serializer.js', ['goog.proto.Serializer'], ['goog.json.Serializer', 'goog.string'], false); -goog.addDependency('proto/serializer_test.js', ['goog.protoTest'], ['goog.proto', 'goog.testing.jsunit'], false); -goog.addDependency('proto2/descriptor.js', ['goog.proto2.Descriptor', 'goog.proto2.Metadata'], ['goog.array', 'goog.asserts', 'goog.object', 'goog.string'], false); -goog.addDependency('proto2/descriptor_test.js', ['goog.proto2.DescriptorTest'], ['goog.proto2.Descriptor', 'goog.proto2.Message', 'goog.testing.jsunit'], false); -goog.addDependency('proto2/fielddescriptor.js', ['goog.proto2.FieldDescriptor'], ['goog.asserts', 'goog.string'], false); -goog.addDependency('proto2/fielddescriptor_test.js', ['goog.proto2.FieldDescriptorTest'], ['goog.proto2.FieldDescriptor', 'goog.proto2.Message', 'goog.testing.jsunit'], false); -goog.addDependency('proto2/lazydeserializer.js', ['goog.proto2.LazyDeserializer'], ['goog.asserts', 'goog.proto2.Message', 'goog.proto2.Serializer'], false); -goog.addDependency('proto2/message.js', ['goog.proto2.Message'], ['goog.asserts', 'goog.proto2.Descriptor', 'goog.proto2.FieldDescriptor'], false); -goog.addDependency('proto2/message_test.js', ['goog.proto2.MessageTest'], ['goog.testing.jsunit', 'proto2.TestAllTypes', 'proto2.TestAllTypes.NestedEnum', 'proto2.TestAllTypes.NestedMessage', 'proto2.TestAllTypes.OptionalGroup', 'proto2.TestAllTypes.RepeatedGroup'], false); -goog.addDependency('proto2/objectserializer.js', ['goog.proto2.ObjectSerializer'], ['goog.asserts', 'goog.proto2.FieldDescriptor', 'goog.proto2.Serializer', 'goog.string'], false); -goog.addDependency('proto2/objectserializer_test.js', ['goog.proto2.ObjectSerializerTest'], ['goog.proto2.ObjectSerializer', 'goog.proto2.Serializer', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'proto2.TestAllTypes'], false); -goog.addDependency('proto2/package_test.pb.js', ['someprotopackage.TestPackageTypes'], ['goog.proto2.Message', 'proto2.TestAllTypes'], false); -goog.addDependency('proto2/pbliteserializer.js', ['goog.proto2.PbLiteSerializer'], ['goog.asserts', 'goog.proto2.FieldDescriptor', 'goog.proto2.LazyDeserializer', 'goog.proto2.Serializer'], false); -goog.addDependency('proto2/pbliteserializer_test.js', ['goog.proto2.PbLiteSerializerTest'], ['goog.proto2.PbLiteSerializer', 'goog.testing.jsunit', 'proto2.TestAllTypes'], false); -goog.addDependency('proto2/proto_test.js', ['goog.proto2.messageTest'], ['goog.proto2.FieldDescriptor', 'goog.testing.jsunit', 'proto2.TestAllTypes', 'someprotopackage.TestPackageTypes'], false); -goog.addDependency('proto2/serializer.js', ['goog.proto2.Serializer'], ['goog.asserts', 'goog.proto2.FieldDescriptor', 'goog.proto2.Message'], false); -goog.addDependency('proto2/test.pb.js', ['proto2.TestAllTypes', 'proto2.TestAllTypes.NestedEnum', 'proto2.TestAllTypes.NestedMessage', 'proto2.TestAllTypes.OptionalGroup', 'proto2.TestAllTypes.RepeatedGroup', 'proto2.TestDefaultChild', 'proto2.TestDefaultParent'], ['goog.proto2.Message'], false); -goog.addDependency('proto2/textformatserializer.js', ['goog.proto2.TextFormatSerializer'], ['goog.array', 'goog.asserts', 'goog.json', 'goog.math', 'goog.object', 'goog.proto2.FieldDescriptor', 'goog.proto2.Message', 'goog.proto2.Serializer', 'goog.string'], false); -goog.addDependency('proto2/textformatserializer_test.js', ['goog.proto2.TextFormatSerializerTest'], ['goog.proto2.ObjectSerializer', 'goog.proto2.TextFormatSerializer', 'goog.testing.jsunit', 'proto2.TestAllTypes'], false); -goog.addDependency('proto2/util.js', ['goog.proto2.Util'], ['goog.asserts'], false); -goog.addDependency('pubsub/pubsub.js', ['goog.pubsub.PubSub'], ['goog.Disposable', 'goog.array'], false); -goog.addDependency('pubsub/pubsub_test.js', ['goog.pubsub.PubSubTest'], ['goog.array', 'goog.pubsub.PubSub', 'goog.testing.jsunit'], false); -goog.addDependency('pubsub/topicid.js', ['goog.pubsub.TopicId'], [], false); -goog.addDependency('pubsub/typedpubsub.js', ['goog.pubsub.TypedPubSub'], ['goog.Disposable', 'goog.pubsub.PubSub'], false); -goog.addDependency('pubsub/typedpubsub_test.js', ['goog.pubsub.TypedPubSubTest'], ['goog.array', 'goog.pubsub.TopicId', 'goog.pubsub.TypedPubSub', 'goog.testing.jsunit'], false); -goog.addDependency('reflect/reflect.js', ['goog.reflect'], [], false); -goog.addDependency('result/deferredadaptor.js', ['goog.result.DeferredAdaptor'], ['goog.async.Deferred', 'goog.result', 'goog.result.Result'], false); -goog.addDependency('result/dependentresult.js', ['goog.result.DependentResult'], ['goog.result.Result'], false); -goog.addDependency('result/result_interface.js', ['goog.result.Result'], ['goog.Thenable'], false); -goog.addDependency('result/resultutil.js', ['goog.result'], ['goog.array', 'goog.result.DependentResult', 'goog.result.Result', 'goog.result.SimpleResult'], false); -goog.addDependency('result/simpleresult.js', ['goog.result.SimpleResult', 'goog.result.SimpleResult.StateError'], ['goog.Promise', 'goog.Thenable', 'goog.debug.Error', 'goog.result.Result'], false); -goog.addDependency('soy/data.js', ['goog.soy.data.SanitizedContent', 'goog.soy.data.SanitizedContentKind', 'goog.soy.data.UnsanitizedText'], ['goog.html.SafeHtml', 'goog.html.uncheckedconversions', 'goog.string.Const'], false); -goog.addDependency('soy/data_test.js', ['goog.soy.dataTest'], ['goog.html.SafeHtml', 'goog.soy.testHelper', 'goog.testing.jsunit'], false); -goog.addDependency('soy/renderer.js', ['goog.soy.InjectedDataSupplier', 'goog.soy.Renderer'], ['goog.asserts', 'goog.dom', 'goog.soy', 'goog.soy.data.SanitizedContent', 'goog.soy.data.SanitizedContentKind'], false); -goog.addDependency('soy/renderer_test.js', ['goog.soy.RendererTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.html.SafeHtml', 'goog.i18n.bidi.Dir', 'goog.soy.Renderer', 'goog.soy.data.SanitizedContentKind', 'goog.soy.testHelper', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('soy/soy.js', ['goog.soy'], ['goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.soy.data.SanitizedContent', 'goog.soy.data.SanitizedContentKind', 'goog.string'], false); -goog.addDependency('soy/soy_test.js', ['goog.soyTest'], ['goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.functions', 'goog.soy', 'goog.soy.testHelper', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('soy/soy_testhelper.js', ['goog.soy.testHelper'], ['goog.dom', 'goog.dom.TagName', 'goog.i18n.bidi.Dir', 'goog.soy.data.SanitizedContent', 'goog.soy.data.SanitizedContentKind', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('spell/spellcheck.js', ['goog.spell.SpellCheck', 'goog.spell.SpellCheck.WordChangedEvent'], ['goog.Timer', 'goog.events.Event', 'goog.events.EventTarget', 'goog.structs.Set'], false); -goog.addDependency('spell/spellcheck_test.js', ['goog.spell.SpellCheckTest'], ['goog.spell.SpellCheck', 'goog.testing.jsunit'], false); -goog.addDependency('stats/basicstat.js', ['goog.stats.BasicStat'], ['goog.asserts', 'goog.log', 'goog.string.format', 'goog.structs.CircularBuffer'], false); -goog.addDependency('stats/basicstat_test.js', ['goog.stats.BasicStatTest'], ['goog.array', 'goog.stats.BasicStat', 'goog.string.format', 'goog.testing.PseudoRandom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('storage/collectablestorage.js', ['goog.storage.CollectableStorage'], ['goog.array', 'goog.iter', 'goog.storage.ErrorCode', 'goog.storage.ExpiringStorage', 'goog.storage.RichStorage'], false); -goog.addDependency('storage/collectablestorage_test.js', ['goog.storage.CollectableStorageTest'], ['goog.storage.CollectableStorage', 'goog.storage.collectableStorageTester', 'goog.storage.storage_test', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.storage.FakeMechanism'], false); -goog.addDependency('storage/collectablestoragetester.js', ['goog.storage.collectableStorageTester'], ['goog.testing.asserts'], false); -goog.addDependency('storage/encryptedstorage.js', ['goog.storage.EncryptedStorage'], ['goog.crypt', 'goog.crypt.Arc4', 'goog.crypt.Sha1', 'goog.crypt.base64', 'goog.json', 'goog.json.Serializer', 'goog.storage.CollectableStorage', 'goog.storage.ErrorCode', 'goog.storage.RichStorage'], false); -goog.addDependency('storage/encryptedstorage_test.js', ['goog.storage.EncryptedStorageTest'], ['goog.json', 'goog.storage.EncryptedStorage', 'goog.storage.ErrorCode', 'goog.storage.RichStorage', 'goog.storage.collectableStorageTester', 'goog.storage.storage_test', 'goog.testing.MockClock', 'goog.testing.PseudoRandom', 'goog.testing.jsunit', 'goog.testing.storage.FakeMechanism'], false); -goog.addDependency('storage/errorcode.js', ['goog.storage.ErrorCode'], [], false); -goog.addDependency('storage/expiringstorage.js', ['goog.storage.ExpiringStorage'], ['goog.storage.RichStorage'], false); -goog.addDependency('storage/expiringstorage_test.js', ['goog.storage.ExpiringStorageTest'], ['goog.storage.ExpiringStorage', 'goog.storage.storage_test', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.storage.FakeMechanism'], false); -goog.addDependency('storage/mechanism/errorcode.js', ['goog.storage.mechanism.ErrorCode'], [], false); -goog.addDependency('storage/mechanism/errorhandlingmechanism.js', ['goog.storage.mechanism.ErrorHandlingMechanism'], ['goog.storage.mechanism.Mechanism'], false); -goog.addDependency('storage/mechanism/errorhandlingmechanism_test.js', ['goog.storage.mechanism.ErrorHandlingMechanismTest'], ['goog.storage.mechanism.ErrorHandlingMechanism', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('storage/mechanism/html5localstorage.js', ['goog.storage.mechanism.HTML5LocalStorage'], ['goog.storage.mechanism.HTML5WebStorage'], false); -goog.addDependency('storage/mechanism/html5localstorage_test.js', ['goog.storage.mechanism.HTML5LocalStorageTest'], ['goog.storage.mechanism.HTML5LocalStorage', 'goog.storage.mechanism.mechanismSeparationTester', 'goog.storage.mechanism.mechanismSharingTester', 'goog.storage.mechanism.mechanismTestDefinition', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('storage/mechanism/html5sessionstorage.js', ['goog.storage.mechanism.HTML5SessionStorage'], ['goog.storage.mechanism.HTML5WebStorage'], false); -goog.addDependency('storage/mechanism/html5sessionstorage_test.js', ['goog.storage.mechanism.HTML5SessionStorageTest'], ['goog.storage.mechanism.HTML5SessionStorage', 'goog.storage.mechanism.mechanismSeparationTester', 'goog.storage.mechanism.mechanismSharingTester', 'goog.storage.mechanism.mechanismTestDefinition', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('storage/mechanism/html5webstorage.js', ['goog.storage.mechanism.HTML5WebStorage'], ['goog.asserts', 'goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.storage.mechanism.ErrorCode', 'goog.storage.mechanism.IterableMechanism'], false); -goog.addDependency('storage/mechanism/html5webstorage_test.js', ['goog.storage.mechanism.HTML5MockStorage', 'goog.storage.mechanism.HTML5WebStorageTest', 'goog.storage.mechanism.MockThrowableStorage'], ['goog.storage.mechanism.ErrorCode', 'goog.storage.mechanism.HTML5WebStorage', 'goog.testing.jsunit'], false); -goog.addDependency('storage/mechanism/ieuserdata.js', ['goog.storage.mechanism.IEUserData'], ['goog.asserts', 'goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.storage.mechanism.ErrorCode', 'goog.storage.mechanism.IterableMechanism', 'goog.structs.Map', 'goog.userAgent'], false); -goog.addDependency('storage/mechanism/ieuserdata_test.js', ['goog.storage.mechanism.IEUserDataTest'], ['goog.storage.mechanism.IEUserData', 'goog.storage.mechanism.mechanismSeparationTester', 'goog.storage.mechanism.mechanismSharingTester', 'goog.storage.mechanism.mechanismTestDefinition', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('storage/mechanism/iterablemechanism.js', ['goog.storage.mechanism.IterableMechanism'], ['goog.array', 'goog.asserts', 'goog.iter', 'goog.storage.mechanism.Mechanism'], false); -goog.addDependency('storage/mechanism/iterablemechanismtester.js', ['goog.storage.mechanism.iterableMechanismTester'], ['goog.iter.Iterator', 'goog.storage.mechanism.IterableMechanism', 'goog.testing.asserts'], false); -goog.addDependency('storage/mechanism/mechanism.js', ['goog.storage.mechanism.Mechanism'], [], false); -goog.addDependency('storage/mechanism/mechanismfactory.js', ['goog.storage.mechanism.mechanismfactory'], ['goog.storage.mechanism.HTML5LocalStorage', 'goog.storage.mechanism.HTML5SessionStorage', 'goog.storage.mechanism.IEUserData', 'goog.storage.mechanism.PrefixedMechanism'], false); -goog.addDependency('storage/mechanism/mechanismfactory_test.js', ['goog.storage.mechanism.mechanismfactoryTest'], ['goog.storage.mechanism.mechanismfactory', 'goog.testing.jsunit'], false); -goog.addDependency('storage/mechanism/mechanismseparationtester.js', ['goog.storage.mechanism.mechanismSeparationTester'], ['goog.iter.StopIteration', 'goog.storage.mechanism.mechanismTestDefinition', 'goog.testing.asserts'], false); -goog.addDependency('storage/mechanism/mechanismsharingtester.js', ['goog.storage.mechanism.mechanismSharingTester'], ['goog.iter.StopIteration', 'goog.storage.mechanism.mechanismTestDefinition', 'goog.testing.asserts'], false); -goog.addDependency('storage/mechanism/mechanismtestdefinition.js', ['goog.storage.mechanism.mechanismTestDefinition'], [], false); -goog.addDependency('storage/mechanism/mechanismtester.js', ['goog.storage.mechanism.mechanismTester'], ['goog.storage.mechanism.ErrorCode', 'goog.testing.asserts', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('storage/mechanism/prefixedmechanism.js', ['goog.storage.mechanism.PrefixedMechanism'], ['goog.iter.Iterator', 'goog.storage.mechanism.IterableMechanism'], false); -goog.addDependency('storage/mechanism/prefixedmechanism_test.js', ['goog.storage.mechanism.PrefixedMechanismTest'], ['goog.storage.mechanism.HTML5LocalStorage', 'goog.storage.mechanism.PrefixedMechanism', 'goog.storage.mechanism.mechanismSeparationTester', 'goog.storage.mechanism.mechanismSharingTester', 'goog.testing.jsunit'], false); -goog.addDependency('storage/richstorage.js', ['goog.storage.RichStorage', 'goog.storage.RichStorage.Wrapper'], ['goog.storage.ErrorCode', 'goog.storage.Storage'], false); -goog.addDependency('storage/richstorage_test.js', ['goog.storage.RichStorageTest'], ['goog.storage.ErrorCode', 'goog.storage.RichStorage', 'goog.storage.storage_test', 'goog.testing.jsunit', 'goog.testing.storage.FakeMechanism'], false); -goog.addDependency('storage/storage.js', ['goog.storage.Storage'], ['goog.json', 'goog.storage.ErrorCode'], false); -goog.addDependency('storage/storage_test.js', ['goog.storage.storage_test'], ['goog.structs.Map', 'goog.testing.asserts'], false); -goog.addDependency('string/const.js', ['goog.string.Const'], ['goog.asserts', 'goog.string.TypedString'], false); -goog.addDependency('string/const_test.js', ['goog.string.constTest'], ['goog.string.Const', 'goog.testing.jsunit'], false); -goog.addDependency('string/linkify.js', ['goog.string.linkify'], ['goog.string'], false); -goog.addDependency('string/linkify_test.js', ['goog.string.linkifyTest'], ['goog.dom.TagName', 'goog.string', 'goog.string.linkify', 'goog.testing.dom', 'goog.testing.jsunit'], false); -goog.addDependency('string/newlines.js', ['goog.string.newlines', 'goog.string.newlines.Line'], ['goog.array'], false); -goog.addDependency('string/newlines_test.js', ['goog.string.newlinesTest'], ['goog.string.newlines', 'goog.testing.jsunit'], false); -goog.addDependency('string/parser.js', ['goog.string.Parser'], [], false); -goog.addDependency('string/path.js', ['goog.string.path'], ['goog.array', 'goog.string'], false); -goog.addDependency('string/path_test.js', ['goog.string.pathTest'], ['goog.string.path', 'goog.testing.jsunit'], false); -goog.addDependency('string/string.js', ['goog.string', 'goog.string.Unicode'], [], false); -goog.addDependency('string/string_test.js', ['goog.stringTest'], ['goog.dom.TagName', 'goog.functions', 'goog.object', 'goog.string', 'goog.string.Unicode', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit'], false); -goog.addDependency('string/stringbuffer.js', ['goog.string.StringBuffer'], [], false); -goog.addDependency('string/stringbuffer_test.js', ['goog.string.StringBufferTest'], ['goog.string.StringBuffer', 'goog.testing.jsunit'], false); -goog.addDependency('string/stringformat.js', ['goog.string.format'], ['goog.string'], false); -goog.addDependency('string/stringformat_test.js', ['goog.string.formatTest'], ['goog.string.format', 'goog.testing.jsunit'], false); -goog.addDependency('string/stringifier.js', ['goog.string.Stringifier'], [], false); -goog.addDependency('string/typedstring.js', ['goog.string.TypedString'], [], false); -goog.addDependency('structs/avltree.js', ['goog.structs.AvlTree', 'goog.structs.AvlTree.Node'], ['goog.structs.Collection'], false); -goog.addDependency('structs/avltree_test.js', ['goog.structs.AvlTreeTest'], ['goog.array', 'goog.structs.AvlTree', 'goog.testing.jsunit'], false); -goog.addDependency('structs/circularbuffer.js', ['goog.structs.CircularBuffer'], [], false); -goog.addDependency('structs/circularbuffer_test.js', ['goog.structs.CircularBufferTest'], ['goog.structs.CircularBuffer', 'goog.testing.jsunit'], false); -goog.addDependency('structs/collection.js', ['goog.structs.Collection'], [], false); -goog.addDependency('structs/collection_test.js', ['goog.structs.CollectionTest'], ['goog.structs.AvlTree', 'goog.structs.Set', 'goog.testing.jsunit'], false); -goog.addDependency('structs/heap.js', ['goog.structs.Heap'], ['goog.array', 'goog.object', 'goog.structs.Node'], false); -goog.addDependency('structs/heap_test.js', ['goog.structs.HeapTest'], ['goog.structs', 'goog.structs.Heap', 'goog.testing.jsunit'], false); -goog.addDependency('structs/inversionmap.js', ['goog.structs.InversionMap'], ['goog.array'], false); -goog.addDependency('structs/inversionmap_test.js', ['goog.structs.InversionMapTest'], ['goog.structs.InversionMap', 'goog.testing.jsunit'], false); -goog.addDependency('structs/linkedmap.js', ['goog.structs.LinkedMap'], ['goog.structs.Map'], false); -goog.addDependency('structs/linkedmap_test.js', ['goog.structs.LinkedMapTest'], ['goog.structs.LinkedMap', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('structs/map.js', ['goog.structs.Map'], ['goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.object'], false); -goog.addDependency('structs/map_test.js', ['goog.structs.MapTest'], ['goog.iter', 'goog.structs', 'goog.structs.Map', 'goog.testing.jsunit'], false); -goog.addDependency('structs/node.js', ['goog.structs.Node'], [], false); -goog.addDependency('structs/pool.js', ['goog.structs.Pool'], ['goog.Disposable', 'goog.structs.Queue', 'goog.structs.Set'], false); -goog.addDependency('structs/pool_test.js', ['goog.structs.PoolTest'], ['goog.structs.Pool', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('structs/prioritypool.js', ['goog.structs.PriorityPool'], ['goog.structs.Pool', 'goog.structs.PriorityQueue'], false); -goog.addDependency('structs/prioritypool_test.js', ['goog.structs.PriorityPoolTest'], ['goog.structs.PriorityPool', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('structs/priorityqueue.js', ['goog.structs.PriorityQueue'], ['goog.structs.Heap'], false); -goog.addDependency('structs/priorityqueue_test.js', ['goog.structs.PriorityQueueTest'], ['goog.structs', 'goog.structs.PriorityQueue', 'goog.testing.jsunit'], false); -goog.addDependency('structs/quadtree.js', ['goog.structs.QuadTree', 'goog.structs.QuadTree.Node', 'goog.structs.QuadTree.Point'], ['goog.math.Coordinate'], false); -goog.addDependency('structs/quadtree_test.js', ['goog.structs.QuadTreeTest'], ['goog.structs', 'goog.structs.QuadTree', 'goog.testing.jsunit'], false); -goog.addDependency('structs/queue.js', ['goog.structs.Queue'], ['goog.array'], false); -goog.addDependency('structs/queue_test.js', ['goog.structs.QueueTest'], ['goog.structs.Queue', 'goog.testing.jsunit'], false); -goog.addDependency('structs/set.js', ['goog.structs.Set'], ['goog.structs', 'goog.structs.Collection', 'goog.structs.Map'], false); -goog.addDependency('structs/set_test.js', ['goog.structs.SetTest'], ['goog.iter', 'goog.structs', 'goog.structs.Set', 'goog.testing.jsunit'], false); -goog.addDependency('structs/simplepool.js', ['goog.structs.SimplePool'], ['goog.Disposable'], false); -goog.addDependency('structs/stringset.js', ['goog.structs.StringSet'], ['goog.asserts', 'goog.iter'], false); -goog.addDependency('structs/stringset_test.js', ['goog.structs.StringSetTest'], ['goog.array', 'goog.iter', 'goog.structs.StringSet', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('structs/structs.js', ['goog.structs'], ['goog.array', 'goog.object'], false); -goog.addDependency('structs/structs_test.js', ['goog.structsTest'], ['goog.array', 'goog.dom.TagName', 'goog.structs', 'goog.structs.Map', 'goog.structs.Set', 'goog.testing.jsunit'], false); -goog.addDependency('structs/treenode.js', ['goog.structs.TreeNode'], ['goog.array', 'goog.asserts', 'goog.structs.Node'], false); -goog.addDependency('structs/treenode_test.js', ['goog.structs.TreeNodeTest'], ['goog.structs.TreeNode', 'goog.testing.jsunit'], false); -goog.addDependency('structs/trie.js', ['goog.structs.Trie'], ['goog.object', 'goog.structs'], false); -goog.addDependency('structs/trie_test.js', ['goog.structs.TrieTest'], ['goog.object', 'goog.structs', 'goog.structs.Trie', 'goog.testing.jsunit'], false); -goog.addDependency('structs/weak/weak.js', ['goog.structs.weak'], ['goog.userAgent'], false); -goog.addDependency('structs/weak/weak_test.js', ['goog.structs.weakTest'], ['goog.array', 'goog.structs.weak', 'goog.testing.jsunit'], false); -goog.addDependency('style/bidi.js', ['goog.style.bidi'], ['goog.dom', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('style/bidi_test.js', ['goog.style.bidiTest'], ['goog.dom', 'goog.style', 'goog.style.bidi', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('style/cursor.js', ['goog.style.cursor'], ['goog.userAgent'], false); -goog.addDependency('style/cursor_test.js', ['goog.style.cursorTest'], ['goog.style.cursor', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('style/style.js', ['goog.style'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.vendor', 'goog.math.Box', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.math.Size', 'goog.object', 'goog.string', 'goog.userAgent'], false); -goog.addDependency('style/style_document_scroll_test.js', ['goog.style.style_document_scroll_test'], ['goog.dom', 'goog.style', 'goog.testing.jsunit'], false); -goog.addDependency('style/style_test.js', ['goog.style_test'], ['goog.array', 'goog.color', 'goog.dom', 'goog.dom.TagName', 'goog.events.BrowserEvent', 'goog.labs.userAgent.util', 'goog.math.Box', 'goog.math.Coordinate', 'goog.math.Rect', 'goog.math.Size', 'goog.object', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.MockUserAgent', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgentTestUtil', 'goog.userAgentTestUtil.UserAgents'], false); -goog.addDependency('style/style_webkit_scrollbars_test.js', ['goog.style.webkitScrollbarsTest'], ['goog.asserts', 'goog.style', 'goog.styleScrollbarTester', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('style/stylescrollbartester.js', ['goog.styleScrollbarTester'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.testing.asserts'], false); -goog.addDependency('style/transform.js', ['goog.style.transform'], ['goog.functions', 'goog.math.Coordinate', 'goog.math.Coordinate3', 'goog.style', 'goog.userAgent', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('style/transform_test.js', ['goog.style.transformTest'], ['goog.dom', 'goog.dom.TagName', 'goog.style.transform', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('style/transition.js', ['goog.style.transition', 'goog.style.transition.Css3Property'], ['goog.array', 'goog.asserts', 'goog.dom.TagName', 'goog.dom.safe', 'goog.dom.vendor', 'goog.functions', 'goog.html.SafeHtml', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('style/transition_test.js', ['goog.style.transitionTest'], ['goog.style', 'goog.style.transition', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('test_module.js', ['goog.test_module'], ['goog.test_module_dep'], true); -goog.addDependency('test_module_dep.js', ['goog.test_module_dep'], [], true); -goog.addDependency('testing/asserts.js', ['goog.testing.JsUnitException', 'goog.testing.asserts', 'goog.testing.asserts.ArrayLike'], ['goog.testing.stacktrace'], false); -goog.addDependency('testing/asserts_test.js', ['goog.testing.assertsTest'], ['goog.array', 'goog.dom', 'goog.iter.Iterator', 'goog.iter.StopIteration', 'goog.labs.userAgent.browser', 'goog.string', 'goog.structs.Map', 'goog.structs.Set', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('testing/async/mockcontrol.js', ['goog.testing.async.MockControl'], ['goog.asserts', 'goog.async.Deferred', 'goog.debug', 'goog.testing.asserts', 'goog.testing.mockmatchers.IgnoreArgument'], false); -goog.addDependency('testing/async/mockcontrol_test.js', ['goog.testing.async.MockControlTest'], ['goog.async.Deferred', 'goog.testing.MockControl', 'goog.testing.asserts', 'goog.testing.async.MockControl', 'goog.testing.jsunit'], false); -goog.addDependency('testing/asynctestcase.js', ['goog.testing.AsyncTestCase', 'goog.testing.AsyncTestCase.ControlBreakingException'], ['goog.testing.TestCase', 'goog.testing.asserts'], false); -goog.addDependency('testing/asynctestcase_async_test.js', ['goog.testing.AsyncTestCaseAsyncTest'], ['goog.testing.AsyncTestCase', 'goog.testing.jsunit'], false); -goog.addDependency('testing/asynctestcase_noasync_test.js', ['goog.testing.AsyncTestCaseSyncTest'], ['goog.testing.AsyncTestCase', 'goog.testing.jsunit'], false); -goog.addDependency('testing/asynctestcase_test.js', ['goog.testing.AsyncTestCaseTest'], ['goog.debug.Error', 'goog.testing.AsyncTestCase', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('testing/benchmark.js', ['goog.testing.benchmark'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.PerformanceTable', 'goog.testing.PerformanceTimer', 'goog.testing.TestCase'], false); -goog.addDependency('testing/continuationtestcase.js', ['goog.testing.ContinuationTestCase', 'goog.testing.ContinuationTestCase.Step', 'goog.testing.ContinuationTestCase.Test'], ['goog.array', 'goog.events.EventHandler', 'goog.testing.TestCase', 'goog.testing.asserts'], false); -goog.addDependency('testing/continuationtestcase_test.js', ['goog.testing.ContinuationTestCaseTest'], ['goog.events', 'goog.events.EventTarget', 'goog.testing.ContinuationTestCase', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('testing/deferredtestcase.js', ['goog.testing.DeferredTestCase'], ['goog.testing.AsyncTestCase', 'goog.testing.TestCase'], false); -goog.addDependency('testing/deferredtestcase_test.js', ['goog.testing.DeferredTestCaseTest'], ['goog.async.Deferred', 'goog.testing.DeferredTestCase', 'goog.testing.TestCase', 'goog.testing.TestRunner', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('testing/dom.js', ['goog.testing.dom'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.InputType', 'goog.dom.NodeIterator', 'goog.dom.NodeType', 'goog.dom.TagIterator', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.iter', 'goog.object', 'goog.string', 'goog.style', 'goog.testing.asserts', 'goog.userAgent'], false); -goog.addDependency('testing/dom_test.js', ['goog.testing.domTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('testing/editor/dom.js', ['goog.testing.editor.dom'], ['goog.dom.NodeType', 'goog.dom.TagIterator', 'goog.dom.TagWalkType', 'goog.iter', 'goog.string', 'goog.testing.asserts'], false); -goog.addDependency('testing/editor/dom_test.js', ['goog.testing.editor.domTest'], ['goog.dom', 'goog.dom.TagName', 'goog.functions', 'goog.testing.editor.dom', 'goog.testing.jsunit'], false); -goog.addDependency('testing/editor/fieldmock.js', ['goog.testing.editor.FieldMock'], ['goog.dom', 'goog.dom.Range', 'goog.editor.Field', 'goog.testing.LooseMock', 'goog.testing.mockmatchers'], false); -goog.addDependency('testing/editor/testhelper.js', ['goog.testing.editor.TestHelper'], ['goog.Disposable', 'goog.dom', 'goog.dom.Range', 'goog.editor.BrowserFeature', 'goog.editor.node', 'goog.editor.plugins.AbstractBubblePlugin', 'goog.testing.dom'], false); -goog.addDependency('testing/editor/testhelper_test.js', ['goog.testing.editor.TestHelperTest'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.node', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('testing/events/eventobserver.js', ['goog.testing.events.EventObserver'], ['goog.array'], false); -goog.addDependency('testing/events/eventobserver_test.js', ['goog.testing.events.EventObserverTest'], ['goog.array', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.testing.events.EventObserver', 'goog.testing.jsunit'], false); -goog.addDependency('testing/events/events.js', ['goog.testing.events', 'goog.testing.events.Event'], ['goog.Disposable', 'goog.asserts', 'goog.dom.NodeType', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.BrowserFeature', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.object', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('testing/events/events_test.js', ['goog.testing.eventsTest'], ['goog.array', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.math.Coordinate', 'goog.string', 'goog.style', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent'], false); -goog.addDependency('testing/events/matchers.js', ['goog.testing.events.EventMatcher'], ['goog.events.Event', 'goog.testing.mockmatchers.ArgumentMatcher'], false); -goog.addDependency('testing/events/matchers_test.js', ['goog.testing.events.EventMatcherTest'], ['goog.events.Event', 'goog.testing.events.EventMatcher', 'goog.testing.jsunit'], false); -goog.addDependency('testing/events/onlinehandler.js', ['goog.testing.events.OnlineHandler'], ['goog.events.EventTarget', 'goog.net.NetworkStatusMonitor'], false); -goog.addDependency('testing/events/onlinehandler_test.js', ['goog.testing.events.OnlineHandlerTest'], ['goog.events', 'goog.net.NetworkStatusMonitor', 'goog.testing.events.EventObserver', 'goog.testing.events.OnlineHandler', 'goog.testing.jsunit'], false); -goog.addDependency('testing/expectedfailures.js', ['goog.testing.ExpectedFailures'], ['goog.debug.DivConsole', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.log', 'goog.style', 'goog.testing.JsUnitException', 'goog.testing.TestCase', 'goog.testing.asserts'], false); -goog.addDependency('testing/expectedfailures_test.js', ['goog.testing.ExpectedFailuresTest'], ['goog.debug.Logger', 'goog.testing.ExpectedFailures', 'goog.testing.JsUnitException', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/blob.js', ['goog.testing.fs.Blob'], ['goog.crypt.base64'], false); -goog.addDependency('testing/fs/blob_test.js', ['goog.testing.fs.BlobTest'], ['goog.testing.fs.Blob', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/directoryentry_test.js', ['goog.testing.fs.DirectoryEntryTest'], ['goog.array', 'goog.fs.DirectoryEntry', 'goog.fs.Error', 'goog.testing.MockClock', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/entry.js', ['goog.testing.fs.DirectoryEntry', 'goog.testing.fs.Entry', 'goog.testing.fs.FileEntry'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.async.Deferred', 'goog.fs.DirectoryEntry', 'goog.fs.DirectoryEntryImpl', 'goog.fs.Entry', 'goog.fs.Error', 'goog.fs.FileEntry', 'goog.functions', 'goog.object', 'goog.string', 'goog.testing.fs.File', 'goog.testing.fs.FileWriter'], false); -goog.addDependency('testing/fs/entry_test.js', ['goog.testing.fs.EntryTest'], ['goog.fs.DirectoryEntry', 'goog.fs.Error', 'goog.testing.MockClock', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/file.js', ['goog.testing.fs.File'], ['goog.testing.fs.Blob'], false); -goog.addDependency('testing/fs/fileentry_test.js', ['goog.testing.fs.FileEntryTest'], ['goog.testing.MockClock', 'goog.testing.fs.FileEntry', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/filereader.js', ['goog.testing.fs.FileReader'], ['goog.Timer', 'goog.events.EventTarget', 'goog.fs.Error', 'goog.fs.FileReader', 'goog.testing.fs.ProgressEvent'], false); -goog.addDependency('testing/fs/filereader_test.js', ['goog.testing.fs.FileReaderTest'], ['goog.Promise', 'goog.array', 'goog.events', 'goog.fs.Error', 'goog.fs.FileReader', 'goog.object', 'goog.testing.events.EventObserver', 'goog.testing.fs.FileReader', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/filesystem.js', ['goog.testing.fs.FileSystem'], ['goog.fs.FileSystem', 'goog.testing.fs.DirectoryEntry'], false); -goog.addDependency('testing/fs/filewriter.js', ['goog.testing.fs.FileWriter'], ['goog.Timer', 'goog.events.EventTarget', 'goog.fs.Error', 'goog.fs.FileSaver', 'goog.string', 'goog.testing.fs.ProgressEvent'], false); -goog.addDependency('testing/fs/filewriter_test.js', ['goog.testing.fs.FileWriterTest'], ['goog.Promise', 'goog.array', 'goog.events', 'goog.fs.Error', 'goog.fs.FileSaver', 'goog.object', 'goog.testing.MockClock', 'goog.testing.events.EventObserver', 'goog.testing.fs.Blob', 'goog.testing.fs.FileSystem', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/fs.js', ['goog.testing.fs'], ['goog.Timer', 'goog.array', 'goog.async.Deferred', 'goog.fs', 'goog.testing.fs.Blob', 'goog.testing.fs.FileSystem'], false); -goog.addDependency('testing/fs/fs_test.js', ['goog.testing.fsTest'], ['goog.testing.AsyncTestCase', 'goog.testing.fs', 'goog.testing.fs.Blob', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/integration_test.js', ['goog.testing.fs.integrationTest'], ['goog.Promise', 'goog.events', 'goog.fs', 'goog.fs.DirectoryEntry', 'goog.fs.Error', 'goog.fs.FileSaver', 'goog.testing.PropertyReplacer', 'goog.testing.fs', 'goog.testing.jsunit'], false); -goog.addDependency('testing/fs/progressevent.js', ['goog.testing.fs.ProgressEvent'], ['goog.events.Event'], false); -goog.addDependency('testing/functionmock.js', ['goog.testing', 'goog.testing.FunctionMock', 'goog.testing.GlobalFunctionMock', 'goog.testing.MethodMock'], ['goog.object', 'goog.testing.LooseMock', 'goog.testing.Mock', 'goog.testing.PropertyReplacer', 'goog.testing.StrictMock'], false); -goog.addDependency('testing/functionmock_test.js', ['goog.testing.FunctionMockTest'], ['goog.array', 'goog.string', 'goog.testing', 'goog.testing.FunctionMock', 'goog.testing.Mock', 'goog.testing.StrictMock', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.mockmatchers'], false); -goog.addDependency('testing/graphics.js', ['goog.testing.graphics'], ['goog.graphics.Path', 'goog.testing.asserts'], false); -goog.addDependency('testing/i18n/asserts.js', ['goog.testing.i18n.asserts'], ['goog.testing.jsunit'], false); -goog.addDependency('testing/i18n/asserts_test.js', ['goog.testing.i18n.assertsTest'], ['goog.testing.ExpectedFailures', 'goog.testing.i18n.asserts'], false); -goog.addDependency('testing/jstdtestcaseadapter.js', ['goog.testing.JsTdTestCaseAdapter'], ['goog.async.run', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('testing/jsunit.js', ['goog.testing.jsunit'], ['goog.dom.TagName', 'goog.testing.TestCase', 'goog.testing.TestRunner'], false); -goog.addDependency('testing/loosemock.js', ['goog.testing.LooseExpectationCollection', 'goog.testing.LooseMock'], ['goog.array', 'goog.structs.Map', 'goog.testing.Mock'], false); -goog.addDependency('testing/loosemock_test.js', ['goog.testing.LooseMockTest'], ['goog.testing.LooseMock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.mockmatchers'], false); -goog.addDependency('testing/messaging/mockmessagechannel.js', ['goog.testing.messaging.MockMessageChannel'], ['goog.messaging.AbstractChannel', 'goog.testing.asserts'], false); -goog.addDependency('testing/messaging/mockmessageevent.js', ['goog.testing.messaging.MockMessageEvent'], ['goog.events.BrowserEvent', 'goog.events.EventType', 'goog.testing.events.Event'], false); -goog.addDependency('testing/messaging/mockmessageport.js', ['goog.testing.messaging.MockMessagePort'], ['goog.events.EventTarget'], false); -goog.addDependency('testing/messaging/mockportnetwork.js', ['goog.testing.messaging.MockPortNetwork'], ['goog.messaging.PortNetwork', 'goog.testing.messaging.MockMessageChannel'], false); -goog.addDependency('testing/mock.js', ['goog.testing.Mock', 'goog.testing.MockExpectation'], ['goog.array', 'goog.object', 'goog.testing.JsUnitException', 'goog.testing.MockInterface', 'goog.testing.mockmatchers'], false); -goog.addDependency('testing/mock_test.js', ['goog.testing.MockTest'], ['goog.array', 'goog.testing', 'goog.testing.Mock', 'goog.testing.MockControl', 'goog.testing.MockExpectation', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockclassfactory.js', ['goog.testing.MockClassFactory', 'goog.testing.MockClassRecord'], ['goog.array', 'goog.object', 'goog.testing.LooseMock', 'goog.testing.StrictMock', 'goog.testing.TestCase', 'goog.testing.mockmatchers'], false); -goog.addDependency('testing/mockclassfactory_test.js', ['fake.BaseClass', 'fake.ChildClass', 'goog.testing.MockClassFactoryTest'], ['goog.testing', 'goog.testing.MockClassFactory', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockclock.js', ['goog.testing.MockClock'], ['goog.Disposable', 'goog.async.run', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.watchers'], false); -goog.addDependency('testing/mockclock_test.js', ['goog.testing.MockClockTest'], ['goog.Promise', 'goog.Timer', 'goog.events', 'goog.functions', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction'], false); -goog.addDependency('testing/mockcontrol.js', ['goog.testing.MockControl'], ['goog.array', 'goog.testing', 'goog.testing.LooseMock', 'goog.testing.StrictMock'], false); -goog.addDependency('testing/mockcontrol_test.js', ['goog.testing.MockControlTest'], ['goog.testing.Mock', 'goog.testing.MockControl', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockinterface.js', ['goog.testing.MockInterface'], [], false); -goog.addDependency('testing/mockmatchers.js', ['goog.testing.mockmatchers', 'goog.testing.mockmatchers.ArgumentMatcher', 'goog.testing.mockmatchers.IgnoreArgument', 'goog.testing.mockmatchers.InstanceOf', 'goog.testing.mockmatchers.ObjectEquals', 'goog.testing.mockmatchers.RegexpMatch', 'goog.testing.mockmatchers.SaveArgument', 'goog.testing.mockmatchers.TypeOf'], ['goog.array', 'goog.dom', 'goog.testing.asserts'], false); -goog.addDependency('testing/mockmatchers_test.js', ['goog.testing.mockmatchersTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.testing.mockmatchers.ArgumentMatcher'], false); -goog.addDependency('testing/mockrandom.js', ['goog.testing.MockRandom'], ['goog.Disposable'], false); -goog.addDependency('testing/mockrandom_test.js', ['goog.testing.MockRandomTest'], ['goog.testing.MockRandom', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockrange.js', ['goog.testing.MockRange'], ['goog.dom.AbstractRange', 'goog.testing.LooseMock'], false); -goog.addDependency('testing/mockrange_test.js', ['goog.testing.MockRangeTest'], ['goog.testing.MockRange', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockstorage.js', ['goog.testing.MockStorage'], ['goog.structs.Map'], false); -goog.addDependency('testing/mockstorage_test.js', ['goog.testing.MockStorageTest'], ['goog.testing.MockStorage', 'goog.testing.jsunit'], false); -goog.addDependency('testing/mockuseragent.js', ['goog.testing.MockUserAgent'], ['goog.Disposable', 'goog.labs.userAgent.util', 'goog.testing.PropertyReplacer', 'goog.userAgent'], false); -goog.addDependency('testing/mockuseragent_test.js', ['goog.testing.MockUserAgentTest'], ['goog.dispose', 'goog.testing.MockUserAgent', 'goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('testing/multitestrunner.js', ['goog.testing.MultiTestRunner', 'goog.testing.MultiTestRunner.TestFrame'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventHandler', 'goog.functions', 'goog.string', 'goog.ui.Component', 'goog.ui.ServerChart', 'goog.ui.TableSorter'], false); -goog.addDependency('testing/net/xhrio.js', ['goog.testing.net.XhrIo'], ['goog.array', 'goog.dom.xml', 'goog.events', 'goog.events.EventTarget', 'goog.json', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.HttpStatus', 'goog.net.XhrIo', 'goog.net.XmlHttp', 'goog.object', 'goog.structs.Map', 'goog.uri.utils'], false); -goog.addDependency('testing/net/xhrio_test.js', ['goog.testing.net.XhrIoTest'], ['goog.dom.xml', 'goog.events', 'goog.events.Event', 'goog.net.ErrorCode', 'goog.net.EventType', 'goog.net.XmlHttp', 'goog.object', 'goog.testing.MockControl', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.mockmatchers.InstanceOf', 'goog.testing.net.XhrIo'], false); -goog.addDependency('testing/net/xhriopool.js', ['goog.testing.net.XhrIoPool'], ['goog.net.XhrIoPool', 'goog.testing.net.XhrIo'], false); -goog.addDependency('testing/objectpropertystring.js', ['goog.testing.ObjectPropertyString'], [], false); -goog.addDependency('testing/performancetable.js', ['goog.testing.PerformanceTable'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.PerformanceTimer'], false); -goog.addDependency('testing/performancetimer.js', ['goog.testing.PerformanceTimer', 'goog.testing.PerformanceTimer.Task'], ['goog.array', 'goog.async.Deferred', 'goog.math'], false); -goog.addDependency('testing/performancetimer_test.js', ['goog.testing.PerformanceTimerTest'], ['goog.async.Deferred', 'goog.dom', 'goog.math', 'goog.testing.MockClock', 'goog.testing.PerformanceTimer', 'goog.testing.jsunit'], false); -goog.addDependency('testing/propertyreplacer.js', ['goog.testing.PropertyReplacer'], ['goog.testing.ObjectPropertyString', 'goog.userAgent'], false); -goog.addDependency('testing/propertyreplacer_test.js', ['goog.testing.PropertyReplacerTest'], ['goog.dom.TagName', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('testing/proto2/proto2.js', ['goog.testing.proto2'], ['goog.proto2.Message', 'goog.proto2.ObjectSerializer', 'goog.testing.asserts'], false); -goog.addDependency('testing/proto2/proto2_test.js', ['goog.testing.proto2Test'], ['goog.testing.jsunit', 'goog.testing.proto2', 'proto2.TestAllTypes'], false); -goog.addDependency('testing/pseudorandom.js', ['goog.testing.PseudoRandom'], ['goog.Disposable'], false); -goog.addDependency('testing/pseudorandom_test.js', ['goog.testing.PseudoRandomTest'], ['goog.testing.PseudoRandom', 'goog.testing.jsunit'], false); -goog.addDependency('testing/recordfunction.js', ['goog.testing.FunctionCall', 'goog.testing.recordConstructor', 'goog.testing.recordFunction'], ['goog.testing.asserts'], false); -goog.addDependency('testing/recordfunction_test.js', ['goog.testing.recordFunctionTest'], ['goog.functions', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordConstructor', 'goog.testing.recordFunction'], false); -goog.addDependency('testing/shardingtestcase.js', ['goog.testing.ShardingTestCase'], ['goog.asserts', 'goog.testing.TestCase'], false); -goog.addDependency('testing/shardingtestcase_test.js', ['goog.testing.ShardingTestCaseTest'], ['goog.testing.ShardingTestCase', 'goog.testing.TestCase', 'goog.testing.asserts', 'goog.testing.jsunit'], false); -goog.addDependency('testing/singleton.js', ['goog.testing.singleton'], [], false); -goog.addDependency('testing/singleton_test.js', ['goog.testing.singletonTest'], ['goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.singleton'], false); -goog.addDependency('testing/stacktrace.js', ['goog.testing.stacktrace', 'goog.testing.stacktrace.Frame'], [], false); -goog.addDependency('testing/stacktrace_test.js', ['goog.testing.stacktraceTest'], ['goog.functions', 'goog.string', 'goog.testing.ExpectedFailures', 'goog.testing.PropertyReplacer', 'goog.testing.StrictMock', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.stacktrace', 'goog.testing.stacktrace.Frame', 'goog.userAgent'], false); -goog.addDependency('testing/storage/fakemechanism.js', ['goog.testing.storage.FakeMechanism'], ['goog.storage.mechanism.IterableMechanism', 'goog.structs.Map'], false); -goog.addDependency('testing/strictmock.js', ['goog.testing.StrictMock'], ['goog.array', 'goog.testing.Mock'], false); -goog.addDependency('testing/strictmock_test.js', ['goog.testing.StrictMockTest'], ['goog.testing.StrictMock', 'goog.testing.jsunit'], false); -goog.addDependency('testing/style/layoutasserts.js', ['goog.testing.style.layoutasserts'], ['goog.style', 'goog.testing.asserts', 'goog.testing.style'], false); -goog.addDependency('testing/style/layoutasserts_test.js', ['goog.testing.style.layoutassertsTest'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.testing.jsunit', 'goog.testing.style.layoutasserts'], false); -goog.addDependency('testing/style/style.js', ['goog.testing.style'], ['goog.dom', 'goog.math.Rect', 'goog.style'], false); -goog.addDependency('testing/style/style_test.js', ['goog.testing.styleTest'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.testing.jsunit', 'goog.testing.style'], false); -goog.addDependency('testing/testcase.js', ['goog.testing.TestCase', 'goog.testing.TestCase.Error', 'goog.testing.TestCase.Order', 'goog.testing.TestCase.Result', 'goog.testing.TestCase.Test'], ['goog.Promise', 'goog.Thenable', 'goog.asserts', 'goog.dom.TagName', 'goog.object', 'goog.testing.asserts', 'goog.testing.stacktrace'], false); -goog.addDependency('testing/testcase_test.js', ['goog.testing.TestCaseTest'], ['goog.Promise', 'goog.string', 'goog.testing.MockRandom', 'goog.testing.TestCase', 'goog.testing.jsunit'], false); -goog.addDependency('testing/testqueue.js', ['goog.testing.TestQueue'], [], false); -goog.addDependency('testing/testrunner.js', ['goog.testing.TestRunner'], ['goog.dom.TagName', 'goog.testing.TestCase'], false); -goog.addDependency('testing/testsuite.js', ['goog.testing.testSuite'], ['goog.labs.testing.Environment', 'goog.testing.TestCase'], false); -goog.addDependency('testing/ui/rendererasserts.js', ['goog.testing.ui.rendererasserts'], ['goog.testing.asserts', 'goog.ui.ControlRenderer'], false); -goog.addDependency('testing/ui/rendererasserts_test.js', ['goog.testing.ui.rendererassertsTest'], ['goog.testing.asserts', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.ControlRenderer'], false); -goog.addDependency('testing/ui/rendererharness.js', ['goog.testing.ui.RendererHarness'], ['goog.Disposable', 'goog.dom.NodeType', 'goog.testing.asserts', 'goog.testing.dom'], false); -goog.addDependency('testing/ui/style.js', ['goog.testing.ui.style'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.testing.asserts'], false); -goog.addDependency('testing/ui/style_test.js', ['goog.testing.ui.styleTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.testing.ui.style'], false); -goog.addDependency('testing/watchers.js', ['goog.testing.watchers'], [], false); -goog.addDependency('timer/timer.js', ['goog.Timer'], ['goog.Promise', 'goog.events.EventTarget'], false); -goog.addDependency('timer/timer_test.js', ['goog.TimerTest'], ['goog.Promise', 'goog.Timer', 'goog.events', 'goog.testing.MockClock', 'goog.testing.jsunit'], false); -goog.addDependency('tweak/entries.js', ['goog.tweak.BaseEntry', 'goog.tweak.BasePrimitiveSetting', 'goog.tweak.BaseSetting', 'goog.tweak.BooleanGroup', 'goog.tweak.BooleanInGroupSetting', 'goog.tweak.BooleanSetting', 'goog.tweak.ButtonAction', 'goog.tweak.NumericSetting', 'goog.tweak.StringSetting'], ['goog.array', 'goog.asserts', 'goog.log', 'goog.object'], false); -goog.addDependency('tweak/entries_test.js', ['goog.tweak.BaseEntryTest'], ['goog.testing.MockControl', 'goog.testing.jsunit', 'goog.tweak.testhelpers'], false); -goog.addDependency('tweak/registry.js', ['goog.tweak.Registry'], ['goog.array', 'goog.asserts', 'goog.log', 'goog.string', 'goog.tweak.BasePrimitiveSetting', 'goog.tweak.BaseSetting', 'goog.tweak.BooleanSetting', 'goog.tweak.NumericSetting', 'goog.tweak.StringSetting', 'goog.uri.utils'], false); -goog.addDependency('tweak/registry_test.js', ['goog.tweak.RegistryTest'], ['goog.asserts.AssertionError', 'goog.testing.jsunit', 'goog.tweak', 'goog.tweak.testhelpers'], false); -goog.addDependency('tweak/testhelpers.js', ['goog.tweak.testhelpers'], ['goog.tweak', 'goog.tweak.BooleanGroup', 'goog.tweak.BooleanInGroupSetting', 'goog.tweak.BooleanSetting', 'goog.tweak.ButtonAction', 'goog.tweak.NumericSetting', 'goog.tweak.Registry', 'goog.tweak.StringSetting'], false); -goog.addDependency('tweak/tweak.js', ['goog.tweak', 'goog.tweak.ConfigParams'], ['goog.asserts', 'goog.tweak.BaseSetting', 'goog.tweak.BooleanGroup', 'goog.tweak.BooleanInGroupSetting', 'goog.tweak.BooleanSetting', 'goog.tweak.ButtonAction', 'goog.tweak.NumericSetting', 'goog.tweak.Registry', 'goog.tweak.StringSetting'], false); -goog.addDependency('tweak/tweakui.js', ['goog.tweak.EntriesPanel', 'goog.tweak.TweakUi'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.object', 'goog.string.Const', 'goog.style', 'goog.tweak', 'goog.tweak.BaseEntry', 'goog.tweak.BooleanGroup', 'goog.tweak.BooleanInGroupSetting', 'goog.tweak.BooleanSetting', 'goog.tweak.ButtonAction', 'goog.tweak.NumericSetting', 'goog.tweak.StringSetting', 'goog.ui.Zippy', 'goog.userAgent'], false); -goog.addDependency('tweak/tweakui_test.js', ['goog.tweak.TweakUiTest'], ['goog.dom', 'goog.dom.TagName', 'goog.string', 'goog.testing.jsunit', 'goog.tweak', 'goog.tweak.TweakUi', 'goog.tweak.testhelpers'], false); -goog.addDependency('ui/abstractspellchecker.js', ['goog.ui.AbstractSpellChecker', 'goog.ui.AbstractSpellChecker.AsyncResult'], ['goog.a11y.aria', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.InputType', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.dom.selection', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.math.Coordinate', 'goog.spell.SpellCheck', 'goog.structs.Set', 'goog.style', 'goog.ui.Component', 'goog.ui.MenuItem', 'goog.ui.MenuSeparator', 'goog.ui.PopupMenu'], false); -goog.addDependency('ui/ac/ac.js', ['goog.ui.ac'], ['goog.ui.ac.ArrayMatcher', 'goog.ui.ac.AutoComplete', 'goog.ui.ac.InputHandler', 'goog.ui.ac.Renderer'], false); -goog.addDependency('ui/ac/ac_test.js', ['goog.ui.acTest'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.classlist', 'goog.dom.selection', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.style', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.ui.ac', 'goog.userAgent'], false); -goog.addDependency('ui/ac/arraymatcher.js', ['goog.ui.ac.ArrayMatcher'], ['goog.string'], false); -goog.addDependency('ui/ac/arraymatcher_test.js', ['goog.ui.ac.ArrayMatcherTest'], ['goog.testing.jsunit', 'goog.ui.ac.ArrayMatcher'], false); -goog.addDependency('ui/ac/autocomplete.js', ['goog.ui.ac.AutoComplete', 'goog.ui.ac.AutoComplete.EventType'], ['goog.array', 'goog.asserts', 'goog.events', 'goog.events.EventTarget', 'goog.object'], false); -goog.addDependency('ui/ac/autocomplete_test.js', ['goog.ui.ac.AutoCompleteTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.string', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.ui.ac.AutoComplete', 'goog.ui.ac.InputHandler', 'goog.ui.ac.RenderOptions', 'goog.ui.ac.Renderer'], false); -goog.addDependency('ui/ac/cachingmatcher.js', ['goog.ui.ac.CachingMatcher'], ['goog.array', 'goog.async.Throttle', 'goog.ui.ac.ArrayMatcher', 'goog.ui.ac.RenderOptions'], false); -goog.addDependency('ui/ac/cachingmatcher_test.js', ['goog.ui.ac.CachingMatcherTest'], ['goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.ui.ac.CachingMatcher'], false); -goog.addDependency('ui/ac/inputhandler.js', ['goog.ui.ac.InputHandler'], ['goog.Disposable', 'goog.Timer', 'goog.a11y.aria', 'goog.dom', 'goog.dom.selection', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.string', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('ui/ac/inputhandler_test.js', ['goog.ui.ac.InputHandlerTest'], ['goog.dom.selection', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.KeyCodes', 'goog.functions', 'goog.object', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.ui.ac.InputHandler', 'goog.userAgent'], false); -goog.addDependency('ui/ac/remote.js', ['goog.ui.ac.Remote'], ['goog.ui.ac.AutoComplete', 'goog.ui.ac.InputHandler', 'goog.ui.ac.RemoteArrayMatcher', 'goog.ui.ac.Renderer'], false); -goog.addDependency('ui/ac/remotearraymatcher.js', ['goog.ui.ac.RemoteArrayMatcher'], ['goog.Disposable', 'goog.Uri', 'goog.events', 'goog.json', 'goog.net.EventType', 'goog.net.XhrIo'], false); -goog.addDependency('ui/ac/remotearraymatcher_test.js', ['goog.ui.ac.RemoteArrayMatcherTest'], ['goog.json', 'goog.net.XhrIo', 'goog.testing.MockControl', 'goog.testing.jsunit', 'goog.testing.net.XhrIo', 'goog.ui.ac.RemoteArrayMatcher'], false); -goog.addDependency('ui/ac/renderer.js', ['goog.ui.ac.Renderer', 'goog.ui.ac.Renderer.CustomRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dispose', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.fx.dom.FadeInAndShow', 'goog.fx.dom.FadeOutAndHide', 'goog.positioning', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.string', 'goog.style', 'goog.ui.IdGenerator', 'goog.ui.ac.AutoComplete'], false); -goog.addDependency('ui/ac/renderer_test.js', ['goog.ui.ac.RendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.fx.dom.FadeInAndShow', 'goog.fx.dom.FadeOutAndHide', 'goog.string', 'goog.style', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.ac.AutoComplete', 'goog.ui.ac.Renderer'], false); -goog.addDependency('ui/ac/renderoptions.js', ['goog.ui.ac.RenderOptions'], [], false); -goog.addDependency('ui/ac/richinputhandler.js', ['goog.ui.ac.RichInputHandler'], ['goog.ui.ac.InputHandler'], false); -goog.addDependency('ui/ac/richremote.js', ['goog.ui.ac.RichRemote'], ['goog.ui.ac.AutoComplete', 'goog.ui.ac.Remote', 'goog.ui.ac.Renderer', 'goog.ui.ac.RichInputHandler', 'goog.ui.ac.RichRemoteArrayMatcher'], false); -goog.addDependency('ui/ac/richremotearraymatcher.js', ['goog.ui.ac.RichRemoteArrayMatcher'], ['goog.dom.safe', 'goog.html.legacyconversions', 'goog.json', 'goog.ui.ac.RemoteArrayMatcher'], false); -goog.addDependency('ui/activitymonitor.js', ['goog.ui.ActivityMonitor'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType'], false); -goog.addDependency('ui/activitymonitor_test.js', ['goog.ui.ActivityMonitorTest'], ['goog.dom', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.ActivityMonitor'], false); -goog.addDependency('ui/advancedtooltip.js', ['goog.ui.AdvancedTooltip'], ['goog.events', 'goog.events.EventType', 'goog.math.Box', 'goog.math.Coordinate', 'goog.style', 'goog.ui.Tooltip', 'goog.userAgent'], false); -goog.addDependency('ui/advancedtooltip_test.js', ['goog.ui.AdvancedTooltipTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events.Event', 'goog.events.EventType', 'goog.math.Box', 'goog.math.Coordinate', 'goog.style', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.AdvancedTooltip', 'goog.ui.Tooltip', 'goog.userAgent'], false); -goog.addDependency('ui/animatedzippy.js', ['goog.ui.AnimatedZippy'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.fx.Animation', 'goog.fx.Transition', 'goog.fx.easing', 'goog.ui.Zippy', 'goog.ui.ZippyEvent'], false); -goog.addDependency('ui/animatedzippy_test.js', ['goog.ui.AnimatedZippyTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.events', 'goog.functions', 'goog.fx.Animation', 'goog.fx.Transition', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.ui.AnimatedZippy', 'goog.ui.Zippy'], false); -goog.addDependency('ui/attachablemenu.js', ['goog.ui.AttachableMenu'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events.Event', 'goog.events.KeyCodes', 'goog.string', 'goog.style', 'goog.ui.ItemEvent', 'goog.ui.MenuBase', 'goog.ui.PopupBase', 'goog.userAgent'], false); -goog.addDependency('ui/bidiinput.js', ['goog.ui.BidiInput'], ['goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.InputHandler', 'goog.i18n.bidi', 'goog.ui.Component'], false); -goog.addDependency('ui/bidiinput_test.js', ['goog.ui.BidiInputTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.BidiInput'], false); -goog.addDependency('ui/bubble.js', ['goog.ui.Bubble'], ['goog.Timer', 'goog.dom.safe', 'goog.events', 'goog.events.EventType', 'goog.html.SafeHtml', 'goog.html.legacyconversions', 'goog.math.Box', 'goog.positioning', 'goog.positioning.AbsolutePosition', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.positioning.CornerBit', 'goog.string.Const', 'goog.style', 'goog.ui.Component', 'goog.ui.Popup'], false); -goog.addDependency('ui/button.js', ['goog.ui.Button', 'goog.ui.Button.Side'], ['goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.ui.ButtonRenderer', 'goog.ui.ButtonSide', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.NativeButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/button_test.js', ['goog.ui.ButtonTest'], ['goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Button', 'goog.ui.ButtonRenderer', 'goog.ui.ButtonSide', 'goog.ui.Component', 'goog.ui.NativeButtonRenderer'], false); -goog.addDependency('ui/buttonrenderer.js', ['goog.ui.ButtonRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.asserts', 'goog.ui.ButtonSide', 'goog.ui.Component', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/buttonrenderer_test.js', ['goog.ui.ButtonRendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.ExpectedFailures', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Button', 'goog.ui.ButtonRenderer', 'goog.ui.ButtonSide', 'goog.ui.Component'], false); -goog.addDependency('ui/buttonside.js', ['goog.ui.ButtonSide'], [], false); -goog.addDependency('ui/charcounter.js', ['goog.ui.CharCounter', 'goog.ui.CharCounter.Display'], ['goog.dom', 'goog.events', 'goog.events.EventTarget', 'goog.events.InputHandler'], false); -goog.addDependency('ui/charcounter_test.js', ['goog.ui.CharCounterTest'], ['goog.dom', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.ui.CharCounter', 'goog.userAgent'], false); -goog.addDependency('ui/charpicker.js', ['goog.ui.CharPicker'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.InputHandler', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.i18n.CharListDecompressor', 'goog.i18n.uChar', 'goog.structs.Set', 'goog.style', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.ContainerScroller', 'goog.ui.FlatButtonRenderer', 'goog.ui.HoverCard', 'goog.ui.LabelInput', 'goog.ui.Menu', 'goog.ui.MenuButton', 'goog.ui.MenuItem', 'goog.ui.Tooltip'], false); -goog.addDependency('ui/charpicker_test.js', ['goog.ui.CharPickerTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dispose', 'goog.dom', 'goog.events.Event', 'goog.events.EventType', 'goog.i18n.CharPickerData', 'goog.i18n.uChar.NameFetcher', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.ui.CharPicker', 'goog.ui.FlatButtonRenderer'], false); -goog.addDependency('ui/checkbox.js', ['goog.ui.Checkbox', 'goog.ui.Checkbox.State'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.string', 'goog.ui.CheckboxRenderer', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.registry'], false); -goog.addDependency('ui/checkbox_test.js', ['goog.ui.CheckboxTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.KeyCodes', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Checkbox', 'goog.ui.CheckboxRenderer', 'goog.ui.Component', 'goog.ui.ControlRenderer', 'goog.ui.decorate'], false); -goog.addDependency('ui/checkboxmenuitem.js', ['goog.ui.CheckBoxMenuItem'], ['goog.ui.MenuItem', 'goog.ui.registry'], false); -goog.addDependency('ui/checkboxrenderer.js', ['goog.ui.CheckboxRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.object', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/colorbutton.js', ['goog.ui.ColorButton'], ['goog.ui.Button', 'goog.ui.ColorButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/colorbutton_test.js', ['goog.ui.ColorButtonTest'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.ui.ColorButton', 'goog.ui.decorate'], false); -goog.addDependency('ui/colorbuttonrenderer.js', ['goog.ui.ColorButtonRenderer'], ['goog.asserts', 'goog.dom.classlist', 'goog.functions', 'goog.ui.ColorMenuButtonRenderer'], false); -goog.addDependency('ui/colormenubutton.js', ['goog.ui.ColorMenuButton'], ['goog.array', 'goog.object', 'goog.ui.ColorMenuButtonRenderer', 'goog.ui.ColorPalette', 'goog.ui.Component', 'goog.ui.Menu', 'goog.ui.MenuButton', 'goog.ui.registry'], false); -goog.addDependency('ui/colormenubuttonrenderer.js', ['goog.ui.ColorMenuButtonRenderer'], ['goog.asserts', 'goog.color', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.MenuButtonRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/colormenubuttonrenderer_test.js', ['goog.ui.ColorMenuButtonTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.testing.ui.RendererHarness', 'goog.testing.ui.rendererasserts', 'goog.ui.ColorMenuButton', 'goog.ui.ColorMenuButtonRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/colorpalette.js', ['goog.ui.ColorPalette'], ['goog.array', 'goog.color', 'goog.dom.TagName', 'goog.style', 'goog.ui.Palette', 'goog.ui.PaletteRenderer'], false); -goog.addDependency('ui/colorpalette_test.js', ['goog.ui.ColorPaletteTest'], ['goog.color', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.ColorPalette'], false); -goog.addDependency('ui/colorpicker.js', ['goog.ui.ColorPicker', 'goog.ui.ColorPicker.EventType'], ['goog.ui.ColorPalette', 'goog.ui.Component'], false); -goog.addDependency('ui/colorsplitbehavior.js', ['goog.ui.ColorSplitBehavior'], ['goog.ui.ColorMenuButton', 'goog.ui.SplitBehavior'], false); -goog.addDependency('ui/combobox.js', ['goog.ui.ComboBox', 'goog.ui.ComboBoxItem'], ['goog.Timer', 'goog.asserts', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.events.InputHandler', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.log', 'goog.positioning.Corner', 'goog.positioning.MenuAnchoredPosition', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.ui.ItemEvent', 'goog.ui.LabelInput', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.ui.MenuSeparator', 'goog.ui.registry', 'goog.userAgent'], false); -goog.addDependency('ui/combobox_test.js', ['goog.ui.ComboBoxTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.KeyCodes', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.ComboBox', 'goog.ui.ComboBoxItem', 'goog.ui.Component', 'goog.ui.ControlRenderer', 'goog.ui.LabelInput', 'goog.ui.Menu', 'goog.ui.MenuItem'], false); -goog.addDependency('ui/component.js', ['goog.ui.Component', 'goog.ui.Component.Error', 'goog.ui.Component.EventType', 'goog.ui.Component.State'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.object', 'goog.style', 'goog.ui.IdGenerator'], false); -goog.addDependency('ui/component_test.js', ['goog.ui.ComponentTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.events.EventTarget', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.Component'], false); -goog.addDependency('ui/container.js', ['goog.ui.Container', 'goog.ui.Container.EventType', 'goog.ui.Container.Orientation'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.object', 'goog.style', 'goog.ui.Component', 'goog.ui.ContainerRenderer', 'goog.ui.Control'], false); -goog.addDependency('ui/container_test.js', ['goog.ui.ContainerTest'], ['goog.a11y.aria', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.KeyCodes', 'goog.events.KeyEvent', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Container', 'goog.ui.Control'], false); -goog.addDependency('ui/containerrenderer.js', ['goog.ui.ContainerRenderer'], ['goog.a11y.aria', 'goog.array', 'goog.asserts', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.string', 'goog.style', 'goog.ui.registry', 'goog.userAgent'], false); -goog.addDependency('ui/containerrenderer_test.js', ['goog.ui.ContainerRendererTest'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Container', 'goog.ui.ContainerRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/containerscroller.js', ['goog.ui.ContainerScroller'], ['goog.Disposable', 'goog.Timer', 'goog.events.EventHandler', 'goog.style', 'goog.ui.Component', 'goog.ui.Container'], false); -goog.addDependency('ui/containerscroller_test.js', ['goog.ui.ContainerScrollerTest'], ['goog.dom', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Container', 'goog.ui.ContainerScroller'], false); -goog.addDependency('ui/control.js', ['goog.ui.Control'], ['goog.Disposable', 'goog.array', 'goog.dom', 'goog.events.BrowserEvent', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.string', 'goog.ui.Component', 'goog.ui.ControlContent', 'goog.ui.ControlRenderer', 'goog.ui.decorate', 'goog.ui.registry', 'goog.userAgent'], false); -goog.addDependency('ui/control_test.js', ['goog.ui.ControlTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.object', 'goog.string', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.ControlRenderer', 'goog.ui.registry', 'goog.userAgent'], false); -goog.addDependency('ui/controlcontent.js', ['goog.ui.ControlContent'], [], false); -goog.addDependency('ui/controlrenderer.js', ['goog.ui.ControlRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.object', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/controlrenderer_test.js', ['goog.ui.ControlRendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.object', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.ControlRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/cookieeditor.js', ['goog.ui.CookieEditor'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.events.EventType', 'goog.net.cookies', 'goog.string', 'goog.style', 'goog.ui.Component'], false); -goog.addDependency('ui/cookieeditor_test.js', ['goog.ui.CookieEditorTest'], ['goog.dom', 'goog.events.Event', 'goog.events.EventType', 'goog.net.cookies', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.CookieEditor'], false); -goog.addDependency('ui/css3buttonrenderer.js', ['goog.ui.Css3ButtonRenderer'], ['goog.asserts', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.Button', 'goog.ui.ButtonRenderer', 'goog.ui.Component', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.registry'], false); -goog.addDependency('ui/css3menubuttonrenderer.js', ['goog.ui.Css3MenuButtonRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.MenuButton', 'goog.ui.MenuButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/cssnames.js', ['goog.ui.INLINE_BLOCK_CLASSNAME'], [], false); -goog.addDependency('ui/custombutton.js', ['goog.ui.CustomButton'], ['goog.ui.Button', 'goog.ui.CustomButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/custombuttonrenderer.js', ['goog.ui.CustomButtonRenderer'], ['goog.a11y.aria.Role', 'goog.asserts', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.string', 'goog.ui.ButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME'], false); -goog.addDependency('ui/customcolorpalette.js', ['goog.ui.CustomColorPalette'], ['goog.color', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.ColorPalette', 'goog.ui.Component'], false); -goog.addDependency('ui/customcolorpalette_test.js', ['goog.ui.CustomColorPaletteTest'], ['goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.ui.CustomColorPalette'], false); -goog.addDependency('ui/datepicker.js', ['goog.ui.DatePicker', 'goog.ui.DatePicker.Events', 'goog.ui.DatePickerEvent'], ['goog.a11y.aria', 'goog.asserts', 'goog.date.Date', 'goog.date.DateRange', 'goog.date.Interval', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyHandler', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimePatterns', 'goog.i18n.DateTimeSymbols', 'goog.style', 'goog.ui.Component', 'goog.ui.DefaultDatePickerRenderer', 'goog.ui.IdGenerator'], false); -goog.addDependency('ui/datepicker_test.js', ['goog.ui.DatePickerTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.date.Date', 'goog.date.DateRange', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.i18n.DateTimeSymbols', 'goog.i18n.DateTimeSymbols_en_US', 'goog.i18n.DateTimeSymbols_zh_HK', 'goog.style', 'goog.testing.jsunit', 'goog.ui.DatePicker'], false); -goog.addDependency('ui/datepickerrenderer.js', ['goog.ui.DatePickerRenderer'], [], false); -goog.addDependency('ui/decorate.js', ['goog.ui.decorate'], ['goog.ui.registry'], false); -goog.addDependency('ui/decorate_test.js', ['goog.ui.decorateTest'], ['goog.testing.jsunit', 'goog.ui.decorate', 'goog.ui.registry'], false); -goog.addDependency('ui/defaultdatepickerrenderer.js', ['goog.ui.DefaultDatePickerRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.ui.DatePickerRenderer'], false); -goog.addDependency('ui/dialog.js', ['goog.ui.Dialog', 'goog.ui.Dialog.ButtonSet', 'goog.ui.Dialog.ButtonSet.DefaultButtons', 'goog.ui.Dialog.DefaultButtonCaptions', 'goog.ui.Dialog.DefaultButtonKeys', 'goog.ui.Dialog.Event', 'goog.ui.Dialog.EventType'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.dom.safe', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Dragger', 'goog.html.SafeHtml', 'goog.html.legacyconversions', 'goog.math.Rect', 'goog.string', 'goog.structs.Map', 'goog.style', 'goog.ui.ModalPopup'], false); -goog.addDependency('ui/dialog_test.js', ['goog.ui.DialogTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.css3', 'goog.html.SafeHtml', 'goog.html.testing', 'goog.style', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Dialog', 'goog.userAgent'], false); -goog.addDependency('ui/dimensionpicker.js', ['goog.ui.DimensionPicker'], ['goog.events.EventType', 'goog.events.KeyCodes', 'goog.math.Size', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.DimensionPickerRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/dimensionpicker_test.js', ['goog.ui.DimensionPickerTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events.KeyCodes', 'goog.math.Size', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.DimensionPicker', 'goog.ui.DimensionPickerRenderer'], false); -goog.addDependency('ui/dimensionpickerrenderer.js', ['goog.ui.DimensionPickerRenderer'], ['goog.a11y.aria.Announcer', 'goog.a11y.aria.LivePriority', 'goog.dom', 'goog.dom.TagName', 'goog.i18n.bidi', 'goog.style', 'goog.ui.ControlRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/dimensionpickerrenderer_test.js', ['goog.ui.DimensionPickerRendererTest'], ['goog.a11y.aria.LivePriority', 'goog.array', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.DimensionPicker', 'goog.ui.DimensionPickerRenderer'], false); -goog.addDependency('ui/dragdropdetector.js', ['goog.ui.DragDropDetector', 'goog.ui.DragDropDetector.EventType', 'goog.ui.DragDropDetector.ImageDropEvent', 'goog.ui.DragDropDetector.LinkDropEvent'], ['goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.math.Coordinate', 'goog.string', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('ui/drilldownrow.js', ['goog.ui.DrilldownRow'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.html.legacyconversions', 'goog.ui.Component'], false); -goog.addDependency('ui/drilldownrow_test.js', ['goog.ui.DrilldownRowTest'], ['goog.dom', 'goog.dom.TagName', 'goog.html.SafeHtml', 'goog.testing.jsunit', 'goog.ui.DrilldownRow'], false); -goog.addDependency('ui/editor/abstractdialog.js', ['goog.ui.editor.AbstractDialog', 'goog.ui.editor.AbstractDialog.Builder', 'goog.ui.editor.AbstractDialog.EventType'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events.EventTarget', 'goog.string', 'goog.ui.Dialog', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/editor/abstractdialog_test.js', ['goog.ui.editor.AbstractDialogTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.KeyCodes', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers.ArgumentMatcher', 'goog.ui.editor.AbstractDialog', 'goog.userAgent'], false); -goog.addDependency('ui/editor/bubble.js', ['goog.ui.editor.Bubble'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.ViewportSizeMonitor', 'goog.dom.classlist', 'goog.editor.style', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.functions', 'goog.log', 'goog.math.Box', 'goog.object', 'goog.positioning', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.ui.PopupBase', 'goog.userAgent'], false); -goog.addDependency('ui/editor/bubble_test.js', ['goog.ui.editor.BubbleTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.positioning.Corner', 'goog.positioning.OverflowStatus', 'goog.string', 'goog.style', 'goog.testing.editor.TestHelper', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.editor.Bubble', 'goog.userAgent.product'], false); -goog.addDependency('ui/editor/defaulttoolbar.js', ['goog.ui.editor.ButtonDescriptor', 'goog.ui.editor.DefaultToolbar'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.editor.Command', 'goog.style', 'goog.ui.editor.ToolbarFactory', 'goog.ui.editor.messages', 'goog.userAgent'], false); -goog.addDependency('ui/editor/linkdialog.js', ['goog.ui.editor.LinkDialog', 'goog.ui.editor.LinkDialog.BeforeTestLinkEvent', 'goog.ui.editor.LinkDialog.EventType', 'goog.ui.editor.LinkDialog.OkEvent'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.safe', 'goog.editor.BrowserFeature', 'goog.editor.Link', 'goog.editor.focus', 'goog.editor.node', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.InputHandler', 'goog.html.SafeHtml', 'goog.string', 'goog.string.Unicode', 'goog.style', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.LinkButtonRenderer', 'goog.ui.editor.AbstractDialog', 'goog.ui.editor.TabPane', 'goog.ui.editor.messages', 'goog.userAgent', 'goog.window'], false); -goog.addDependency('ui/editor/linkdialog_test.js', ['goog.ui.editor.LinkDialogTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Link', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.style', 'goog.testing.MockControl', 'goog.testing.PropertyReplacer', 'goog.testing.dom', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.testing.mockmatchers.ArgumentMatcher', 'goog.ui.editor.AbstractDialog', 'goog.ui.editor.LinkDialog', 'goog.ui.editor.messages', 'goog.userAgent'], false); -goog.addDependency('ui/editor/messages.js', ['goog.ui.editor.messages'], ['goog.html.uncheckedconversions', 'goog.string.Const'], false); -goog.addDependency('ui/editor/tabpane.js', ['goog.ui.editor.TabPane'], ['goog.asserts', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.style', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.Tab', 'goog.ui.TabBar'], false); -goog.addDependency('ui/editor/toolbarcontroller.js', ['goog.ui.editor.ToolbarController'], ['goog.editor.Field', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.ui.Component'], false); -goog.addDependency('ui/editor/toolbarfactory.js', ['goog.ui.editor.ToolbarFactory'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.string', 'goog.string.Unicode', 'goog.style', 'goog.ui.Component', 'goog.ui.Container', 'goog.ui.Option', 'goog.ui.Toolbar', 'goog.ui.ToolbarButton', 'goog.ui.ToolbarColorMenuButton', 'goog.ui.ToolbarMenuButton', 'goog.ui.ToolbarRenderer', 'goog.ui.ToolbarSelect', 'goog.userAgent'], false); -goog.addDependency('ui/editor/toolbarfactory_test.js', ['goog.ui.editor.ToolbarFactoryTest'], ['goog.dom', 'goog.testing.ExpectedFailures', 'goog.testing.editor.TestHelper', 'goog.testing.jsunit', 'goog.ui.editor.ToolbarFactory', 'goog.userAgent'], false); -goog.addDependency('ui/emoji/emoji.js', ['goog.ui.emoji.Emoji'], [], false); -goog.addDependency('ui/emoji/emojipalette.js', ['goog.ui.emoji.EmojiPalette'], ['goog.events.EventType', 'goog.net.ImageLoader', 'goog.ui.Palette', 'goog.ui.emoji.Emoji', 'goog.ui.emoji.EmojiPaletteRenderer'], false); -goog.addDependency('ui/emoji/emojipaletterenderer.js', ['goog.ui.emoji.EmojiPaletteRenderer'], ['goog.a11y.aria', 'goog.asserts', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.style', 'goog.ui.PaletteRenderer', 'goog.ui.emoji.Emoji'], false); -goog.addDependency('ui/emoji/emojipicker.js', ['goog.ui.emoji.EmojiPicker'], ['goog.dom.TagName', 'goog.style', 'goog.ui.Component', 'goog.ui.TabPane', 'goog.ui.emoji.Emoji', 'goog.ui.emoji.EmojiPalette', 'goog.ui.emoji.EmojiPaletteRenderer', 'goog.ui.emoji.ProgressiveEmojiPaletteRenderer'], false); -goog.addDependency('ui/emoji/emojipicker_test.js', ['goog.ui.emoji.EmojiPickerTest'], ['goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventHandler', 'goog.style', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.emoji.Emoji', 'goog.ui.emoji.EmojiPicker', 'goog.ui.emoji.SpriteInfo'], false); -goog.addDependency('ui/emoji/fast_nonprogressive_emojipicker_test.js', ['goog.ui.emoji.FastNonProgressiveEmojiPickerTest'], ['goog.Promise', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.net.EventType', 'goog.style', 'goog.testing.jsunit', 'goog.ui.emoji.Emoji', 'goog.ui.emoji.EmojiPicker', 'goog.ui.emoji.SpriteInfo'], false); -goog.addDependency('ui/emoji/fast_progressive_emojipicker_test.js', ['goog.ui.emoji.FastProgressiveEmojiPickerTest'], ['goog.Promise', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.net.EventType', 'goog.style', 'goog.testing.jsunit', 'goog.ui.emoji.Emoji', 'goog.ui.emoji.EmojiPicker', 'goog.ui.emoji.SpriteInfo'], false); -goog.addDependency('ui/emoji/popupemojipicker.js', ['goog.ui.emoji.PopupEmojiPicker'], ['goog.events.EventType', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.ui.Component', 'goog.ui.Popup', 'goog.ui.emoji.EmojiPicker'], false); -goog.addDependency('ui/emoji/popupemojipicker_test.js', ['goog.ui.emoji.PopupEmojiPickerTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.emoji.PopupEmojiPicker'], false); -goog.addDependency('ui/emoji/progressiveemojipaletterenderer.js', ['goog.ui.emoji.ProgressiveEmojiPaletteRenderer'], ['goog.dom.TagName', 'goog.style', 'goog.ui.emoji.EmojiPaletteRenderer'], false); -goog.addDependency('ui/emoji/spriteinfo.js', ['goog.ui.emoji.SpriteInfo'], [], false); -goog.addDependency('ui/emoji/spriteinfo_test.js', ['goog.ui.emoji.SpriteInfoTest'], ['goog.testing.jsunit', 'goog.ui.emoji.SpriteInfo'], false); -goog.addDependency('ui/filteredmenu.js', ['goog.ui.FilteredMenu'], ['goog.a11y.aria', 'goog.a11y.aria.AutoCompleteValues', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.events.InputHandler', 'goog.events.KeyCodes', 'goog.object', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.ui.FilterObservingMenuItem', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.userAgent'], false); -goog.addDependency('ui/filteredmenu_test.js', ['goog.ui.FilteredMenuTest'], ['goog.a11y.aria', 'goog.a11y.aria.AutoCompleteValues', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.math.Rect', 'goog.style', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.FilteredMenu', 'goog.ui.MenuItem'], false); -goog.addDependency('ui/filterobservingmenuitem.js', ['goog.ui.FilterObservingMenuItem'], ['goog.ui.FilterObservingMenuItemRenderer', 'goog.ui.MenuItem', 'goog.ui.registry'], false); -goog.addDependency('ui/filterobservingmenuitemrenderer.js', ['goog.ui.FilterObservingMenuItemRenderer'], ['goog.ui.MenuItemRenderer'], false); -goog.addDependency('ui/flatbuttonrenderer.js', ['goog.ui.FlatButtonRenderer'], ['goog.a11y.aria.Role', 'goog.asserts', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.Button', 'goog.ui.ButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.registry'], false); -goog.addDependency('ui/flatmenubuttonrenderer.js', ['goog.ui.FlatMenuButtonRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.ui.FlatButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.Menu', 'goog.ui.MenuButton', 'goog.ui.MenuRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/formpost.js', ['goog.ui.FormPost'], ['goog.array', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeHtml', 'goog.ui.Component'], false); -goog.addDependency('ui/formpost_test.js', ['goog.ui.FormPostTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.object', 'goog.testing.jsunit', 'goog.ui.FormPost', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('ui/gauge.js', ['goog.ui.Gauge', 'goog.ui.GaugeColoredRange'], ['goog.a11y.aria', 'goog.asserts', 'goog.dom.TagName', 'goog.events', 'goog.fx.Animation', 'goog.fx.Transition', 'goog.fx.easing', 'goog.graphics', 'goog.graphics.Font', 'goog.graphics.Path', 'goog.graphics.SolidFill', 'goog.math', 'goog.ui.Component', 'goog.ui.GaugeTheme'], false); -goog.addDependency('ui/gaugetheme.js', ['goog.ui.GaugeTheme'], ['goog.graphics.LinearGradient', 'goog.graphics.SolidFill', 'goog.graphics.Stroke'], false); -goog.addDependency('ui/hovercard.js', ['goog.ui.HoverCard', 'goog.ui.HoverCard.EventType', 'goog.ui.HoverCard.TriggerEvent'], ['goog.array', 'goog.dom', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.ui.AdvancedTooltip', 'goog.ui.PopupBase', 'goog.ui.Tooltip'], false); -goog.addDependency('ui/hovercard_test.js', ['goog.ui.HoverCardTest'], ['goog.dom', 'goog.events', 'goog.math.Coordinate', 'goog.style', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.HoverCard'], false); -goog.addDependency('ui/hsvapalette.js', ['goog.ui.HsvaPalette'], ['goog.array', 'goog.color.alpha', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.style', 'goog.ui.Component', 'goog.ui.HsvPalette'], false); -goog.addDependency('ui/hsvapalette_test.js', ['goog.ui.HsvaPaletteTest'], ['goog.color.alpha', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.Event', 'goog.math.Coordinate', 'goog.style', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.HsvaPalette', 'goog.userAgent'], false); -goog.addDependency('ui/hsvpalette.js', ['goog.ui.HsvPalette'], ['goog.color', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.events.InputHandler', 'goog.style', 'goog.style.bidi', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/hsvpalette_test.js', ['goog.ui.HsvPaletteTest'], ['goog.color', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.math.Coordinate', 'goog.style', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.HsvPalette', 'goog.userAgent'], false); -goog.addDependency('ui/idgenerator.js', ['goog.ui.IdGenerator'], [], false); -goog.addDependency('ui/idletimer.js', ['goog.ui.IdleTimer'], ['goog.Timer', 'goog.events', 'goog.events.EventTarget', 'goog.structs.Set', 'goog.ui.ActivityMonitor'], false); -goog.addDependency('ui/idletimer_test.js', ['goog.ui.IdleTimerTest'], ['goog.events', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.ui.IdleTimer', 'goog.ui.MockActivityMonitor'], false); -goog.addDependency('ui/iframemask.js', ['goog.ui.IframeMask'], ['goog.Disposable', 'goog.Timer', 'goog.dom', 'goog.dom.iframe', 'goog.events.EventHandler', 'goog.style'], false); -goog.addDependency('ui/iframemask_test.js', ['goog.ui.IframeMaskTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.iframe', 'goog.structs.Pool', 'goog.style', 'goog.testing.MockClock', 'goog.testing.StrictMock', 'goog.testing.jsunit', 'goog.ui.IframeMask', 'goog.ui.Popup', 'goog.ui.PopupBase', 'goog.userAgent'], false); -goog.addDependency('ui/imagelessbuttonrenderer.js', ['goog.ui.ImagelessButtonRenderer'], ['goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.CustomButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.registry'], false); -goog.addDependency('ui/imagelessmenubuttonrenderer.js', ['goog.ui.ImagelessMenuButtonRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.MenuButton', 'goog.ui.MenuButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/inputdatepicker.js', ['goog.ui.InputDatePicker'], ['goog.date.DateTime', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.string', 'goog.ui.Component', 'goog.ui.DatePicker', 'goog.ui.LabelInput', 'goog.ui.PopupBase', 'goog.ui.PopupDatePicker'], false); -goog.addDependency('ui/inputdatepicker_test.js', ['goog.ui.InputDatePickerTest'], ['goog.dom', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeParse', 'goog.testing.jsunit', 'goog.ui.InputDatePicker'], false); -goog.addDependency('ui/itemevent.js', ['goog.ui.ItemEvent'], ['goog.events.Event'], false); -goog.addDependency('ui/keyboardshortcuthandler.js', ['goog.ui.KeyboardShortcutEvent', 'goog.ui.KeyboardShortcutHandler', 'goog.ui.KeyboardShortcutHandler.EventType'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyNames', 'goog.object', 'goog.userAgent'], false); -goog.addDependency('ui/keyboardshortcuthandler_test.js', ['goog.ui.KeyboardShortcutHandlerTest'], ['goog.dom', 'goog.events', 'goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.StrictMock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.KeyboardShortcutHandler', 'goog.userAgent'], false); -goog.addDependency('ui/labelinput.js', ['goog.ui.LabelInput'], ['goog.Timer', 'goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/labelinput_test.js', ['goog.ui.LabelInputTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.classlist', 'goog.events.EventType', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.LabelInput', 'goog.userAgent'], false); -goog.addDependency('ui/linkbuttonrenderer.js', ['goog.ui.LinkButtonRenderer'], ['goog.ui.Button', 'goog.ui.FlatButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/media/flashobject.js', ['goog.ui.media.FlashObject', 'goog.ui.media.FlashObject.ScriptAccessLevel', 'goog.ui.media.FlashObject.Wmodes'], ['goog.asserts', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.html.SafeUrl', 'goog.html.TrustedResourceUrl', 'goog.html.flash', 'goog.html.legacyconversions', 'goog.log', 'goog.object', 'goog.string', 'goog.structs.Map', 'goog.style', 'goog.ui.Component', 'goog.userAgent', 'goog.userAgent.flash'], false); -goog.addDependency('ui/media/flashobject_test.js', ['goog.ui.media.FlashObjectTest'], ['goog.dom', 'goog.dom.DomHelper', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.html.SafeUrl', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.userAgent'], false); -goog.addDependency('ui/media/flickr.js', ['goog.ui.media.FlickrSet', 'goog.ui.media.FlickrSetModel'], ['goog.html.TrustedResourceUrl', 'goog.string.Const', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/flickr_test.js', ['goog.ui.media.FlickrSetTest'], ['goog.dom', 'goog.dom.TagName', 'goog.html.testing', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.FlickrSet', 'goog.ui.media.FlickrSetModel', 'goog.ui.media.Media'], false); -goog.addDependency('ui/media/googlevideo.js', ['goog.ui.media.GoogleVideo', 'goog.ui.media.GoogleVideoModel'], ['goog.string', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/googlevideo_test.js', ['goog.ui.media.GoogleVideoTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.GoogleVideo', 'goog.ui.media.GoogleVideoModel', 'goog.ui.media.Media'], false); -goog.addDependency('ui/media/media.js', ['goog.ui.media.Media', 'goog.ui.media.MediaRenderer'], ['goog.asserts', 'goog.dom.TagName', 'goog.style', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/media/media_test.js', ['goog.ui.media.MediaTest'], ['goog.dom', 'goog.dom.TagName', 'goog.math.Size', 'goog.testing.jsunit', 'goog.ui.ControlRenderer', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/mediamodel.js', ['goog.ui.media.MediaModel', 'goog.ui.media.MediaModel.Category', 'goog.ui.media.MediaModel.Credit', 'goog.ui.media.MediaModel.Credit.Role', 'goog.ui.media.MediaModel.Credit.Scheme', 'goog.ui.media.MediaModel.Medium', 'goog.ui.media.MediaModel.MimeType', 'goog.ui.media.MediaModel.Player', 'goog.ui.media.MediaModel.SubTitle', 'goog.ui.media.MediaModel.Thumbnail'], ['goog.array', 'goog.html.TrustedResourceUrl', 'goog.html.legacyconversions'], false); -goog.addDependency('ui/media/mediamodel_test.js', ['goog.ui.media.MediaModelTest'], ['goog.testing.jsunit', 'goog.ui.media.MediaModel'], false); -goog.addDependency('ui/media/mp3.js', ['goog.ui.media.Mp3'], ['goog.string', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/mp3_test.js', ['goog.ui.media.Mp3Test'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.Mp3'], false); -goog.addDependency('ui/media/photo.js', ['goog.ui.media.Photo'], ['goog.dom.TagName', 'goog.ui.media.Media', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/photo_test.js', ['goog.ui.media.PhotoTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.MediaModel', 'goog.ui.media.Photo'], false); -goog.addDependency('ui/media/picasa.js', ['goog.ui.media.PicasaAlbum', 'goog.ui.media.PicasaAlbumModel'], ['goog.html.TrustedResourceUrl', 'goog.string.Const', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/picasa_test.js', ['goog.ui.media.PicasaTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.PicasaAlbum', 'goog.ui.media.PicasaAlbumModel'], false); -goog.addDependency('ui/media/vimeo.js', ['goog.ui.media.Vimeo', 'goog.ui.media.VimeoModel'], ['goog.string', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/vimeo_test.js', ['goog.ui.media.VimeoTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.Vimeo', 'goog.ui.media.VimeoModel'], false); -goog.addDependency('ui/media/youtube.js', ['goog.ui.media.Youtube', 'goog.ui.media.YoutubeModel'], ['goog.dom.TagName', 'goog.string', 'goog.ui.Component', 'goog.ui.media.FlashObject', 'goog.ui.media.Media', 'goog.ui.media.MediaModel', 'goog.ui.media.MediaRenderer'], false); -goog.addDependency('ui/media/youtube_test.js', ['goog.ui.media.YoutubeTest'], ['goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.media.FlashObject', 'goog.ui.media.Youtube', 'goog.ui.media.YoutubeModel'], false); -goog.addDependency('ui/menu.js', ['goog.ui.Menu', 'goog.ui.Menu.EventType'], ['goog.dom.TagName', 'goog.math.Coordinate', 'goog.string', 'goog.style', 'goog.ui.Component.EventType', 'goog.ui.Component.State', 'goog.ui.Container', 'goog.ui.Container.Orientation', 'goog.ui.MenuHeader', 'goog.ui.MenuItem', 'goog.ui.MenuRenderer', 'goog.ui.MenuSeparator'], false); -goog.addDependency('ui/menu_test.js', ['goog.ui.MenuTest'], ['goog.dom', 'goog.events', 'goog.math.Coordinate', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Menu'], false); -goog.addDependency('ui/menubar.js', ['goog.ui.menuBar'], ['goog.ui.Container', 'goog.ui.MenuBarRenderer'], false); -goog.addDependency('ui/menubardecorator.js', ['goog.ui.menuBarDecorator'], ['goog.ui.MenuBarRenderer', 'goog.ui.menuBar', 'goog.ui.registry'], false); -goog.addDependency('ui/menubarrenderer.js', ['goog.ui.MenuBarRenderer'], ['goog.a11y.aria.Role', 'goog.ui.Container', 'goog.ui.ContainerRenderer'], false); -goog.addDependency('ui/menubase.js', ['goog.ui.MenuBase'], ['goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyHandler', 'goog.ui.Popup'], false); -goog.addDependency('ui/menubutton.js', ['goog.ui.MenuButton'], ['goog.Timer', 'goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.math.Box', 'goog.math.Rect', 'goog.positioning', 'goog.positioning.Corner', 'goog.positioning.MenuAnchoredPosition', 'goog.positioning.Overflow', 'goog.style', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.IdGenerator', 'goog.ui.Menu', 'goog.ui.MenuButtonRenderer', 'goog.ui.MenuItem', 'goog.ui.MenuRenderer', 'goog.ui.registry', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('ui/menubutton_test.js', ['goog.ui.MenuButtonTest'], ['goog.Timer', 'goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.positioning', 'goog.positioning.Corner', 'goog.positioning.MenuAnchoredPosition', 'goog.positioning.Overflow', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.Menu', 'goog.ui.MenuButton', 'goog.ui.MenuItem', 'goog.ui.SubMenu', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('ui/menubuttonrenderer.js', ['goog.ui.MenuButtonRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.ui.CustomButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.Menu', 'goog.ui.MenuRenderer'], false); -goog.addDependency('ui/menubuttonrenderer_test.js', ['goog.ui.MenuButtonRendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.MenuButton', 'goog.ui.MenuButtonRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/menuheader.js', ['goog.ui.MenuHeader'], ['goog.ui.Component', 'goog.ui.Control', 'goog.ui.MenuHeaderRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/menuheaderrenderer.js', ['goog.ui.MenuHeaderRenderer'], ['goog.ui.ControlRenderer'], false); -goog.addDependency('ui/menuitem.js', ['goog.ui.MenuItem'], ['goog.a11y.aria.Role', 'goog.array', 'goog.dom', 'goog.dom.classlist', 'goog.math.Coordinate', 'goog.string', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.MenuItemRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/menuitem_test.js', ['goog.ui.MenuItemTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.array', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.KeyCodes', 'goog.math.Coordinate', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.MenuItem', 'goog.ui.MenuItemRenderer'], false); -goog.addDependency('ui/menuitemrenderer.js', ['goog.ui.MenuItemRenderer'], ['goog.a11y.aria.Role', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.Component', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/menuitemrenderer_test.js', ['goog.ui.MenuItemRendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Component', 'goog.ui.MenuItem', 'goog.ui.MenuItemRenderer'], false); -goog.addDependency('ui/menurenderer.js', ['goog.ui.MenuRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.ui.ContainerRenderer', 'goog.ui.Separator'], false); -goog.addDependency('ui/menuseparator.js', ['goog.ui.MenuSeparator'], ['goog.ui.MenuSeparatorRenderer', 'goog.ui.Separator', 'goog.ui.registry'], false); -goog.addDependency('ui/menuseparatorrenderer.js', ['goog.ui.MenuSeparatorRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/menuseparatorrenderer_test.js', ['goog.ui.MenuSeparatorRendererTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.MenuSeparator', 'goog.ui.MenuSeparatorRenderer'], false); -goog.addDependency('ui/mockactivitymonitor.js', ['goog.ui.MockActivityMonitor'], ['goog.events.EventType', 'goog.ui.ActivityMonitor'], false); -goog.addDependency('ui/mockactivitymonitor_test.js', ['goog.ui.MockActivityMonitorTest'], ['goog.events', 'goog.functions', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.ActivityMonitor', 'goog.ui.MockActivityMonitor'], false); -goog.addDependency('ui/modalariavisibilityhelper.js', ['goog.ui.ModalAriaVisibilityHelper'], ['goog.a11y.aria', 'goog.a11y.aria.State'], false); -goog.addDependency('ui/modalariavisibilityhelper_test.js', ['goog.ui.ModalAriaVisibilityHelperTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.string', 'goog.testing.jsunit', 'goog.ui.ModalAriaVisibilityHelper'], false); -goog.addDependency('ui/modalpopup.js', ['goog.ui.ModalPopup'], ['goog.Timer', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.dom.iframe', 'goog.events', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.fx.Transition', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.ui.ModalAriaVisibilityHelper', 'goog.ui.PopupBase', 'goog.userAgent'], false); -goog.addDependency('ui/modalpopup_test.js', ['goog.ui.ModalPopupTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dispose', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventTarget', 'goog.fx.Transition', 'goog.fx.css3', 'goog.string', 'goog.style', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.ui.ModalPopup', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/nativebuttonrenderer.js', ['goog.ui.NativeButtonRenderer'], ['goog.asserts', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.ui.ButtonRenderer', 'goog.ui.Component'], false); -goog.addDependency('ui/nativebuttonrenderer_test.js', ['goog.ui.NativeButtonRendererTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.testing.ExpectedFailures', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.NativeButtonRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/option.js', ['goog.ui.Option'], ['goog.ui.Component', 'goog.ui.MenuItem', 'goog.ui.registry'], false); -goog.addDependency('ui/palette.js', ['goog.ui.Palette'], ['goog.array', 'goog.dom', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.math.Size', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.PaletteRenderer', 'goog.ui.SelectionModel'], false); -goog.addDependency('ui/palette_test.js', ['goog.ui.PaletteTest'], ['goog.a11y.aria', 'goog.dom', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyEvent', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.Container', 'goog.ui.Palette'], false); -goog.addDependency('ui/paletterenderer.js', ['goog.ui.PaletteRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.NodeIterator', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.iter', 'goog.style', 'goog.ui.ControlRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/paletterenderer_test.js', ['goog.ui.PaletteRendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.Palette', 'goog.ui.PaletteRenderer'], false); -goog.addDependency('ui/plaintextspellchecker.js', ['goog.ui.PlainTextSpellChecker'], ['goog.Timer', 'goog.a11y.aria', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.spell.SpellCheck', 'goog.style', 'goog.ui.AbstractSpellChecker', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/plaintextspellchecker_test.js', ['goog.ui.PlainTextSpellCheckerTest'], ['goog.Timer', 'goog.dom', 'goog.events.KeyCodes', 'goog.spell.SpellCheck', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.PlainTextSpellChecker'], false); -goog.addDependency('ui/popup.js', ['goog.ui.Popup'], ['goog.math.Box', 'goog.positioning.Corner', 'goog.style', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/popup_test.js', ['goog.ui.PopupTest'], ['goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.style', 'goog.testing.jsunit', 'goog.ui.Popup', 'goog.userAgent'], false); -goog.addDependency('ui/popupbase.js', ['goog.ui.PopupBase', 'goog.ui.PopupBase.EventType', 'goog.ui.PopupBase.Type'], ['goog.Timer', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Transition', 'goog.style', 'goog.userAgent'], false); -goog.addDependency('ui/popupbase_test.js', ['goog.ui.PopupBaseTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Transition', 'goog.fx.css3', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/popupcolorpicker.js', ['goog.ui.PopupColorPicker'], ['goog.asserts', 'goog.dom.classlist', 'goog.events.EventType', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.ui.ColorPicker', 'goog.ui.Component', 'goog.ui.Popup'], false); -goog.addDependency('ui/popupcolorpicker_test.js', ['goog.ui.PopupColorPickerTest'], ['goog.dom', 'goog.events', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.ColorPicker', 'goog.ui.PopupColorPicker'], false); -goog.addDependency('ui/popupdatepicker.js', ['goog.ui.PopupDatePicker'], ['goog.events.EventType', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.style', 'goog.ui.Component', 'goog.ui.DatePicker', 'goog.ui.Popup', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/popupdatepicker_test.js', ['goog.ui.PopupDatePickerTest'], ['goog.date.Date', 'goog.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.PopupBase', 'goog.ui.PopupDatePicker'], false); -goog.addDependency('ui/popupmenu.js', ['goog.ui.PopupMenu'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.positioning.AnchoredViewportPosition', 'goog.positioning.Corner', 'goog.positioning.MenuAnchoredPosition', 'goog.positioning.Overflow', 'goog.positioning.ViewportClientPosition', 'goog.structs.Map', 'goog.style', 'goog.ui.Component', 'goog.ui.Menu', 'goog.ui.PopupBase', 'goog.userAgent'], false); -goog.addDependency('ui/popupmenu_test.js', ['goog.ui.PopupMenuTest'], ['goog.dom', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.math.Box', 'goog.math.Coordinate', 'goog.positioning.Corner', 'goog.style', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.ui.PopupMenu'], false); -goog.addDependency('ui/progressbar.js', ['goog.ui.ProgressBar', 'goog.ui.ProgressBar.Orientation'], ['goog.a11y.aria', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.ui.Component', 'goog.ui.RangeModel', 'goog.userAgent'], false); -goog.addDependency('ui/prompt.js', ['goog.ui.Prompt'], ['goog.Timer', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.EventType', 'goog.functions', 'goog.html.SafeHtml', 'goog.html.legacyconversions', 'goog.ui.Component', 'goog.ui.Dialog', 'goog.userAgent'], false); -goog.addDependency('ui/prompt_test.js', ['goog.ui.PromptTest'], ['goog.dom.selection', 'goog.events.InputHandler', 'goog.events.KeyCodes', 'goog.functions', 'goog.string', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.BidiInput', 'goog.ui.Dialog', 'goog.ui.Prompt', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('ui/rangemodel.js', ['goog.ui.RangeModel'], ['goog.events.EventTarget', 'goog.ui.Component'], false); -goog.addDependency('ui/rangemodel_test.js', ['goog.ui.RangeModelTest'], ['goog.testing.jsunit', 'goog.ui.RangeModel'], false); -goog.addDependency('ui/ratings.js', ['goog.ui.Ratings', 'goog.ui.Ratings.EventType'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.ui.Component'], false); -goog.addDependency('ui/registry.js', ['goog.ui.registry'], ['goog.asserts', 'goog.dom.classlist'], false); -goog.addDependency('ui/registry_test.js', ['goog.ui.registryTest'], ['goog.object', 'goog.testing.jsunit', 'goog.ui.registry'], false); -goog.addDependency('ui/richtextspellchecker.js', ['goog.ui.RichTextSpellChecker'], ['goog.Timer', 'goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.Range', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.math.Coordinate', 'goog.spell.SpellCheck', 'goog.string.StringBuffer', 'goog.style', 'goog.ui.AbstractSpellChecker', 'goog.ui.Component', 'goog.ui.PopupMenu'], false); -goog.addDependency('ui/richtextspellchecker_test.js', ['goog.ui.RichTextSpellCheckerTest'], ['goog.dom.Range', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.KeyCodes', 'goog.object', 'goog.spell.SpellCheck', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.RichTextSpellChecker'], false); -goog.addDependency('ui/roundedpanel.js', ['goog.ui.BaseRoundedPanel', 'goog.ui.CssRoundedPanel', 'goog.ui.GraphicsRoundedPanel', 'goog.ui.RoundedPanel', 'goog.ui.RoundedPanel.Corner'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.graphics', 'goog.graphics.Path', 'goog.graphics.SolidFill', 'goog.graphics.Stroke', 'goog.math', 'goog.math.Coordinate', 'goog.style', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/roundedpanel_test.js', ['goog.ui.RoundedPanelTest'], ['goog.testing.jsunit', 'goog.ui.CssRoundedPanel', 'goog.ui.GraphicsRoundedPanel', 'goog.ui.RoundedPanel', 'goog.userAgent'], false); -goog.addDependency('ui/roundedtabrenderer.js', ['goog.ui.RoundedTabRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.ui.Tab', 'goog.ui.TabBar', 'goog.ui.TabRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/scrollfloater.js', ['goog.ui.ScrollFloater', 'goog.ui.ScrollFloater.EventType'], ['goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.style', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/scrollfloater_test.js', ['goog.ui.ScrollFloaterTest'], ['goog.dom', 'goog.events', 'goog.style', 'goog.testing.jsunit', 'goog.ui.ScrollFloater'], false); -goog.addDependency('ui/select.js', ['goog.ui.Select'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.events.EventType', 'goog.ui.Component', 'goog.ui.IdGenerator', 'goog.ui.MenuButton', 'goog.ui.MenuItem', 'goog.ui.MenuRenderer', 'goog.ui.SelectionModel', 'goog.ui.registry'], false); -goog.addDependency('ui/select_test.js', ['goog.ui.SelectTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.CustomButtonRenderer', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.ui.Select', 'goog.ui.Separator'], false); -goog.addDependency('ui/selectionmenubutton.js', ['goog.ui.SelectionMenuButton', 'goog.ui.SelectionMenuButton.SelectionState'], ['goog.dom.InputType', 'goog.dom.TagName', 'goog.events.EventType', 'goog.style', 'goog.ui.Component', 'goog.ui.MenuButton', 'goog.ui.MenuItem', 'goog.ui.registry'], false); -goog.addDependency('ui/selectionmenubutton_test.js', ['goog.ui.SelectionMenuButtonTest'], ['goog.dom', 'goog.events', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.SelectionMenuButton'], false); -goog.addDependency('ui/selectionmodel.js', ['goog.ui.SelectionModel'], ['goog.array', 'goog.events.EventTarget', 'goog.events.EventType'], false); -goog.addDependency('ui/selectionmodel_test.js', ['goog.ui.SelectionModelTest'], ['goog.array', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.SelectionModel'], false); -goog.addDependency('ui/separator.js', ['goog.ui.Separator'], ['goog.a11y.aria', 'goog.asserts', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.MenuSeparatorRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/serverchart.js', ['goog.ui.ServerChart', 'goog.ui.ServerChart.AxisDisplayType', 'goog.ui.ServerChart.ChartType', 'goog.ui.ServerChart.EncodingType', 'goog.ui.ServerChart.Event', 'goog.ui.ServerChart.LegendPosition', 'goog.ui.ServerChart.MaximumValue', 'goog.ui.ServerChart.MultiAxisAlignment', 'goog.ui.ServerChart.MultiAxisType', 'goog.ui.ServerChart.UriParam', 'goog.ui.ServerChart.UriTooLongEvent'], ['goog.Uri', 'goog.array', 'goog.asserts', 'goog.dom.TagName', 'goog.events.Event', 'goog.string', 'goog.ui.Component'], false); -goog.addDependency('ui/serverchart_test.js', ['goog.ui.ServerChartTest'], ['goog.Uri', 'goog.events', 'goog.testing.jsunit', 'goog.ui.ServerChart'], false); -goog.addDependency('ui/slider.js', ['goog.ui.Slider', 'goog.ui.Slider.Orientation'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.dom', 'goog.dom.TagName', 'goog.ui.SliderBase'], false); -goog.addDependency('ui/sliderbase.js', ['goog.ui.SliderBase', 'goog.ui.SliderBase.AnimationFactory', 'goog.ui.SliderBase.Orientation'], ['goog.Timer', 'goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.events.MouseWheelHandler', 'goog.functions', 'goog.fx.AnimationParallelQueue', 'goog.fx.Dragger', 'goog.fx.Transition', 'goog.fx.dom.ResizeHeight', 'goog.fx.dom.ResizeWidth', 'goog.fx.dom.Slide', 'goog.math', 'goog.math.Coordinate', 'goog.style', 'goog.style.bidi', 'goog.ui.Component', 'goog.ui.RangeModel'], false); -goog.addDependency('ui/sliderbase_test.js', ['goog.ui.SliderBaseTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Animation', 'goog.math.Coordinate', 'goog.style', 'goog.style.bidi', 'goog.testing.MockClock', 'goog.testing.MockControl', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.mockmatchers', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.SliderBase', 'goog.userAgent'], false); -goog.addDependency('ui/splitbehavior.js', ['goog.ui.SplitBehavior', 'goog.ui.SplitBehavior.DefaultHandlers'], ['goog.Disposable', 'goog.asserts', 'goog.dispose', 'goog.dom.NodeType', 'goog.dom.classlist', 'goog.events.EventHandler', 'goog.ui.ButtonSide', 'goog.ui.Component', 'goog.ui.decorate', 'goog.ui.registry'], false); -goog.addDependency('ui/splitbehavior_test.js', ['goog.ui.SplitBehaviorTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.CustomButton', 'goog.ui.Menu', 'goog.ui.MenuButton', 'goog.ui.MenuItem', 'goog.ui.SplitBehavior', 'goog.ui.decorate'], false); -goog.addDependency('ui/splitpane.js', ['goog.ui.SplitPane', 'goog.ui.SplitPane.Orientation'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.fx.Dragger', 'goog.math.Rect', 'goog.math.Size', 'goog.style', 'goog.ui.Component', 'goog.userAgent'], false); -goog.addDependency('ui/splitpane_test.js', ['goog.ui.SplitPaneTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.math.Size', 'goog.style', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.Component', 'goog.ui.SplitPane'], false); -goog.addDependency('ui/style/app/buttonrenderer.js', ['goog.ui.style.app.ButtonRenderer'], ['goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.Button', 'goog.ui.CustomButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.registry'], false); -goog.addDependency('ui/style/app/buttonrenderer_test.js', ['goog.ui.style.app.ButtonRendererTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.testing.ui.style', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.style.app.ButtonRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/style/app/menubuttonrenderer.js', ['goog.ui.style.app.MenuButtonRenderer'], ['goog.a11y.aria.Role', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.style', 'goog.ui.Menu', 'goog.ui.MenuRenderer', 'goog.ui.style.app.ButtonRenderer'], false); -goog.addDependency('ui/style/app/menubuttonrenderer_test.js', ['goog.ui.style.app.MenuButtonRendererTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.testing.ui.style', 'goog.ui.Component', 'goog.ui.MenuButton', 'goog.ui.style.app.MenuButtonRenderer'], false); -goog.addDependency('ui/style/app/primaryactionbuttonrenderer.js', ['goog.ui.style.app.PrimaryActionButtonRenderer'], ['goog.ui.Button', 'goog.ui.registry', 'goog.ui.style.app.ButtonRenderer'], false); -goog.addDependency('ui/style/app/primaryactionbuttonrenderer_test.js', ['goog.ui.style.app.PrimaryActionButtonRendererTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.testing.ui.style', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.style.app.PrimaryActionButtonRenderer'], false); -goog.addDependency('ui/submenu.js', ['goog.ui.SubMenu'], ['goog.Timer', 'goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events.KeyCodes', 'goog.positioning.AnchoredViewportPosition', 'goog.positioning.Corner', 'goog.style', 'goog.ui.Component', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.ui.SubMenuRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/submenu_test.js', ['goog.ui.SubMenuTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.functions', 'goog.positioning', 'goog.positioning.Overflow', 'goog.style', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.ui.SubMenu', 'goog.ui.SubMenuRenderer'], false); -goog.addDependency('ui/submenurenderer.js', ['goog.ui.SubMenuRenderer'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.style', 'goog.ui.Menu', 'goog.ui.MenuItemRenderer'], false); -goog.addDependency('ui/tab.js', ['goog.ui.Tab'], ['goog.ui.Component', 'goog.ui.Control', 'goog.ui.TabRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/tab_test.js', ['goog.ui.TabTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Tab', 'goog.ui.TabRenderer'], false); -goog.addDependency('ui/tabbar.js', ['goog.ui.TabBar', 'goog.ui.TabBar.Location'], ['goog.ui.Component.EventType', 'goog.ui.Container', 'goog.ui.Container.Orientation', 'goog.ui.Tab', 'goog.ui.TabBarRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/tabbar_test.js', ['goog.ui.TabBarTest'], ['goog.dom', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.Container', 'goog.ui.Tab', 'goog.ui.TabBar', 'goog.ui.TabBarRenderer'], false); -goog.addDependency('ui/tabbarrenderer.js', ['goog.ui.TabBarRenderer'], ['goog.a11y.aria.Role', 'goog.object', 'goog.ui.ContainerRenderer'], false); -goog.addDependency('ui/tabbarrenderer_test.js', ['goog.ui.TabBarRendererTest'], ['goog.a11y.aria.Role', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Container', 'goog.ui.TabBar', 'goog.ui.TabBarRenderer'], false); -goog.addDependency('ui/tablesorter.js', ['goog.ui.TableSorter', 'goog.ui.TableSorter.EventType'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.functions', 'goog.ui.Component'], false); -goog.addDependency('ui/tablesorter_test.js', ['goog.ui.TableSorterTest'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.TableSorter'], false); -goog.addDependency('ui/tabpane.js', ['goog.ui.TabPane', 'goog.ui.TabPane.Events', 'goog.ui.TabPane.TabLocation', 'goog.ui.TabPane.TabPage', 'goog.ui.TabPaneEvent'], ['goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.style'], false); -goog.addDependency('ui/tabpane_test.js', ['goog.ui.TabPaneTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.TabPane'], false); -goog.addDependency('ui/tabrenderer.js', ['goog.ui.TabRenderer'], ['goog.a11y.aria.Role', 'goog.ui.Component', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/tabrenderer_test.js', ['goog.ui.TabRendererTest'], ['goog.a11y.aria.Role', 'goog.dom', 'goog.dom.classlist', 'goog.testing.dom', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Tab', 'goog.ui.TabRenderer'], false); -goog.addDependency('ui/textarea.js', ['goog.ui.Textarea', 'goog.ui.Textarea.EventType'], ['goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events.EventType', 'goog.style', 'goog.ui.Control', 'goog.ui.TextareaRenderer', 'goog.userAgent'], false); -goog.addDependency('ui/textarea_test.js', ['goog.ui.TextareaTest'], ['goog.dom', 'goog.dom.classlist', 'goog.events', 'goog.style', 'goog.testing.ExpectedFailures', 'goog.testing.events.EventObserver', 'goog.testing.jsunit', 'goog.ui.Textarea', 'goog.ui.TextareaRenderer', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('ui/textarearenderer.js', ['goog.ui.TextareaRenderer'], ['goog.dom.TagName', 'goog.ui.Component', 'goog.ui.ControlRenderer'], false); -goog.addDependency('ui/togglebutton.js', ['goog.ui.ToggleButton'], ['goog.ui.Button', 'goog.ui.Component', 'goog.ui.CustomButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbar.js', ['goog.ui.Toolbar'], ['goog.ui.Container', 'goog.ui.ToolbarRenderer'], false); -goog.addDependency('ui/toolbar_test.js', ['goog.ui.ToolbarTest'], ['goog.a11y.aria', 'goog.dom', 'goog.events.EventType', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.Toolbar', 'goog.ui.ToolbarMenuButton'], false); -goog.addDependency('ui/toolbarbutton.js', ['goog.ui.ToolbarButton'], ['goog.ui.Button', 'goog.ui.ToolbarButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbarbuttonrenderer.js', ['goog.ui.ToolbarButtonRenderer'], ['goog.ui.CustomButtonRenderer'], false); -goog.addDependency('ui/toolbarcolormenubutton.js', ['goog.ui.ToolbarColorMenuButton'], ['goog.ui.ColorMenuButton', 'goog.ui.ToolbarColorMenuButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbarcolormenubuttonrenderer.js', ['goog.ui.ToolbarColorMenuButtonRenderer'], ['goog.asserts', 'goog.dom.classlist', 'goog.ui.ColorMenuButtonRenderer', 'goog.ui.MenuButtonRenderer', 'goog.ui.ToolbarMenuButtonRenderer'], false); -goog.addDependency('ui/toolbarcolormenubuttonrenderer_test.js', ['goog.ui.ToolbarColorMenuButtonRendererTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.testing.ui.RendererHarness', 'goog.testing.ui.rendererasserts', 'goog.ui.ToolbarColorMenuButton', 'goog.ui.ToolbarColorMenuButtonRenderer'], false); -goog.addDependency('ui/toolbarmenubutton.js', ['goog.ui.ToolbarMenuButton'], ['goog.ui.MenuButton', 'goog.ui.ToolbarMenuButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbarmenubuttonrenderer.js', ['goog.ui.ToolbarMenuButtonRenderer'], ['goog.ui.MenuButtonRenderer'], false); -goog.addDependency('ui/toolbarrenderer.js', ['goog.ui.ToolbarRenderer'], ['goog.a11y.aria.Role', 'goog.dom.TagName', 'goog.ui.Container', 'goog.ui.ContainerRenderer', 'goog.ui.Separator', 'goog.ui.ToolbarSeparatorRenderer'], false); -goog.addDependency('ui/toolbarselect.js', ['goog.ui.ToolbarSelect'], ['goog.ui.Select', 'goog.ui.ToolbarMenuButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbarseparator.js', ['goog.ui.ToolbarSeparator'], ['goog.ui.Separator', 'goog.ui.ToolbarSeparatorRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/toolbarseparatorrenderer.js', ['goog.ui.ToolbarSeparatorRenderer'], ['goog.asserts', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.MenuSeparatorRenderer'], false); -goog.addDependency('ui/toolbarseparatorrenderer_test.js', ['goog.ui.ToolbarSeparatorRendererTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.ToolbarSeparator', 'goog.ui.ToolbarSeparatorRenderer'], false); -goog.addDependency('ui/toolbartogglebutton.js', ['goog.ui.ToolbarToggleButton'], ['goog.ui.ToggleButton', 'goog.ui.ToolbarButtonRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/tooltip.js', ['goog.ui.Tooltip', 'goog.ui.Tooltip.CursorTooltipPosition', 'goog.ui.Tooltip.ElementTooltipPosition', 'goog.ui.Tooltip.State'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.html.legacyconversions', 'goog.math.Box', 'goog.math.Coordinate', 'goog.positioning', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus', 'goog.positioning.ViewportPosition', 'goog.structs.Set', 'goog.style', 'goog.ui.Popup', 'goog.ui.PopupBase'], false); -goog.addDependency('ui/tooltip_test.js', ['goog.ui.TooltipTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.html.testing', 'goog.math.Coordinate', 'goog.positioning.AbsolutePosition', 'goog.style', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.TestQueue', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.PopupBase', 'goog.ui.Tooltip', 'goog.userAgent'], false); -goog.addDependency('ui/tree/basenode.js', ['goog.ui.tree.BaseNode', 'goog.ui.tree.BaseNode.EventType'], ['goog.Timer', 'goog.a11y.aria', 'goog.asserts', 'goog.dom.safe', 'goog.events.Event', 'goog.events.KeyCodes', 'goog.html.SafeHtml', 'goog.html.SafeStyle', 'goog.html.legacyconversions', 'goog.string', 'goog.string.StringBuffer', 'goog.style', 'goog.ui.Component'], false); -goog.addDependency('ui/tree/basenode_test.js', ['goog.ui.tree.BaseNodeTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.html.legacyconversions', 'goog.html.testing', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.tree.BaseNode', 'goog.ui.tree.TreeControl', 'goog.ui.tree.TreeNode'], false); -goog.addDependency('ui/tree/treecontrol.js', ['goog.ui.tree.TreeControl'], ['goog.a11y.aria', 'goog.asserts', 'goog.dom.classlist', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.events.KeyHandler', 'goog.html.SafeHtml', 'goog.log', 'goog.ui.tree.BaseNode', 'goog.ui.tree.TreeNode', 'goog.ui.tree.TypeAhead', 'goog.userAgent'], false); -goog.addDependency('ui/tree/treecontrol_test.js', ['goog.ui.tree.TreeControlTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.tree.TreeControl'], false); -goog.addDependency('ui/tree/treenode.js', ['goog.ui.tree.TreeNode'], ['goog.ui.tree.BaseNode'], false); -goog.addDependency('ui/tree/typeahead.js', ['goog.ui.tree.TypeAhead', 'goog.ui.tree.TypeAhead.Offset'], ['goog.array', 'goog.events.KeyCodes', 'goog.string', 'goog.structs.Trie'], false); -goog.addDependency('ui/tree/typeahead_test.js', ['goog.ui.tree.TypeAheadTest'], ['goog.dom', 'goog.events.KeyCodes', 'goog.testing.jsunit', 'goog.ui.tree.TreeControl', 'goog.ui.tree.TypeAhead'], false); -goog.addDependency('ui/tristatemenuitem.js', ['goog.ui.TriStateMenuItem', 'goog.ui.TriStateMenuItem.State'], ['goog.dom.classlist', 'goog.ui.Component', 'goog.ui.MenuItem', 'goog.ui.TriStateMenuItemRenderer', 'goog.ui.registry'], false); -goog.addDependency('ui/tristatemenuitemrenderer.js', ['goog.ui.TriStateMenuItemRenderer'], ['goog.asserts', 'goog.dom.classlist', 'goog.ui.MenuItemRenderer'], false); -goog.addDependency('ui/twothumbslider.js', ['goog.ui.TwoThumbSlider'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.dom', 'goog.dom.TagName', 'goog.ui.SliderBase'], false); -goog.addDependency('ui/twothumbslider_test.js', ['goog.ui.TwoThumbSliderTest'], ['goog.testing.jsunit', 'goog.ui.SliderBase', 'goog.ui.TwoThumbSlider'], false); -goog.addDependency('ui/zippy.js', ['goog.ui.Zippy', 'goog.ui.Zippy.Events', 'goog.ui.ZippyEvent'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.dom', 'goog.dom.classlist', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.style'], false); -goog.addDependency('ui/zippy_test.js', ['goog.ui.ZippyTest'], ['goog.a11y.aria', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.object', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.Zippy'], false); -goog.addDependency('uri/uri.js', ['goog.Uri', 'goog.Uri.QueryData'], ['goog.array', 'goog.string', 'goog.structs', 'goog.structs.Map', 'goog.uri.utils', 'goog.uri.utils.ComponentIndex', 'goog.uri.utils.StandardQueryParam'], false); -goog.addDependency('uri/uri_test.js', ['goog.UriTest'], ['goog.Uri', 'goog.testing.jsunit'], false); -goog.addDependency('uri/utils.js', ['goog.uri.utils', 'goog.uri.utils.ComponentIndex', 'goog.uri.utils.QueryArray', 'goog.uri.utils.QueryValue', 'goog.uri.utils.StandardQueryParam'], ['goog.asserts', 'goog.string'], false); -goog.addDependency('uri/utils_test.js', ['goog.uri.utilsTest'], ['goog.functions', 'goog.string', 'goog.testing.jsunit', 'goog.uri.utils'], false); -goog.addDependency('useragent/adobereader.js', ['goog.userAgent.adobeReader'], ['goog.string', 'goog.userAgent'], false); -goog.addDependency('useragent/adobereader_test.js', ['goog.userAgent.adobeReaderTest'], ['goog.testing.jsunit', 'goog.userAgent.adobeReader'], false); -goog.addDependency('useragent/flash.js', ['goog.userAgent.flash'], ['goog.string'], false); -goog.addDependency('useragent/flash_test.js', ['goog.userAgent.flashTest'], ['goog.testing.jsunit', 'goog.userAgent.flash'], false); -goog.addDependency('useragent/iphoto.js', ['goog.userAgent.iphoto'], ['goog.string', 'goog.userAgent'], false); -goog.addDependency('useragent/jscript.js', ['goog.userAgent.jscript'], ['goog.string'], false); -goog.addDependency('useragent/jscript_test.js', ['goog.userAgent.jscriptTest'], ['goog.testing.jsunit', 'goog.userAgent.jscript'], false); -goog.addDependency('useragent/keyboard.js', ['goog.userAgent.keyboard'], ['goog.labs.userAgent.platform'], false); -goog.addDependency('useragent/keyboard_test.js', ['goog.userAgent.keyboardTest'], ['goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.MockUserAgent', 'goog.testing.jsunit', 'goog.userAgent.keyboard', 'goog.userAgentTestUtil'], false); -goog.addDependency('useragent/platform.js', ['goog.userAgent.platform'], ['goog.string', 'goog.userAgent'], false); -goog.addDependency('useragent/platform_test.js', ['goog.userAgent.platformTest'], ['goog.testing.MockUserAgent', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.platform', 'goog.userAgentTestUtil'], false); -goog.addDependency('useragent/product.js', ['goog.userAgent.product'], ['goog.labs.userAgent.browser', 'goog.labs.userAgent.platform', 'goog.userAgent'], false); -goog.addDependency('useragent/product_isversion.js', ['goog.userAgent.product.isVersion'], ['goog.labs.userAgent.platform', 'goog.string', 'goog.userAgent', 'goog.userAgent.product'], false); -goog.addDependency('useragent/product_test.js', ['goog.userAgent.productTest'], ['goog.array', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.MockUserAgent', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgent.product', 'goog.userAgent.product.isVersion', 'goog.userAgentTestUtil'], false); -goog.addDependency('useragent/useragent.js', ['goog.userAgent'], ['goog.labs.userAgent.browser', 'goog.labs.userAgent.engine', 'goog.labs.userAgent.platform', 'goog.labs.userAgent.util', 'goog.string'], false); -goog.addDependency('useragent/useragent_quirks_test.js', ['goog.userAgentQuirksTest'], ['goog.testing.jsunit', 'goog.userAgent'], false); -goog.addDependency('useragent/useragent_test.js', ['goog.userAgentTest'], ['goog.array', 'goog.labs.userAgent.platform', 'goog.labs.userAgent.testAgents', 'goog.labs.userAgent.util', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent', 'goog.userAgentTestUtil'], false); -goog.addDependency('useragent/useragenttestutil.js', ['goog.userAgentTestUtil', 'goog.userAgentTestUtil.UserAgents'], ['goog.labs.userAgent.browser', 'goog.labs.userAgent.engine', 'goog.labs.userAgent.platform', 'goog.userAgent', 'goog.userAgent.keyboard', 'goog.userAgent.platform', 'goog.userAgent.product', 'goog.userAgent.product.isVersion'], false); -goog.addDependency('vec/float32array.js', ['goog.vec.Float32Array'], [], false); -goog.addDependency('vec/float64array.js', ['goog.vec.Float64Array'], [], false); -goog.addDependency('vec/mat3.js', ['goog.vec.Mat3'], ['goog.vec'], false); -goog.addDependency('vec/mat3d.js', ['goog.vec.mat3d', 'goog.vec.mat3d.Type'], ['goog.vec'], false); -goog.addDependency('vec/mat3f.js', ['goog.vec.mat3f', 'goog.vec.mat3f.Type'], ['goog.vec'], false); -goog.addDependency('vec/mat4.js', ['goog.vec.Mat4'], ['goog.vec', 'goog.vec.Vec3', 'goog.vec.Vec4'], false); -goog.addDependency('vec/mat4d.js', ['goog.vec.mat4d', 'goog.vec.mat4d.Type'], ['goog.vec', 'goog.vec.vec3d', 'goog.vec.vec4d'], false); -goog.addDependency('vec/mat4f.js', ['goog.vec.mat4f', 'goog.vec.mat4f.Type'], ['goog.vec', 'goog.vec.vec3f', 'goog.vec.vec4f'], false); -goog.addDependency('vec/matrix3.js', ['goog.vec.Matrix3'], [], false); -goog.addDependency('vec/matrix4.js', ['goog.vec.Matrix4'], ['goog.vec', 'goog.vec.Vec3', 'goog.vec.Vec4'], false); -goog.addDependency('vec/quaternion.js', ['goog.vec.Quaternion'], ['goog.vec', 'goog.vec.Vec3', 'goog.vec.Vec4'], false); -goog.addDependency('vec/ray.js', ['goog.vec.Ray'], ['goog.vec.Vec3'], false); -goog.addDependency('vec/vec.js', ['goog.vec', 'goog.vec.AnyType', 'goog.vec.ArrayType', 'goog.vec.Float32', 'goog.vec.Float64', 'goog.vec.Number'], ['goog.vec.Float32Array', 'goog.vec.Float64Array'], false); -goog.addDependency('vec/vec2.js', ['goog.vec.Vec2'], ['goog.vec'], false); -goog.addDependency('vec/vec2d.js', ['goog.vec.vec2d', 'goog.vec.vec2d.Type'], ['goog.vec'], false); -goog.addDependency('vec/vec2f.js', ['goog.vec.vec2f', 'goog.vec.vec2f.Type'], ['goog.vec'], false); -goog.addDependency('vec/vec3.js', ['goog.vec.Vec3'], ['goog.vec'], false); -goog.addDependency('vec/vec3d.js', ['goog.vec.vec3d', 'goog.vec.vec3d.Type'], ['goog.vec'], false); -goog.addDependency('vec/vec3f.js', ['goog.vec.vec3f', 'goog.vec.vec3f.Type'], ['goog.vec'], false); -goog.addDependency('vec/vec4.js', ['goog.vec.Vec4'], ['goog.vec'], false); -goog.addDependency('vec/vec4d.js', ['goog.vec.vec4d', 'goog.vec.vec4d.Type'], ['goog.vec'], false); -goog.addDependency('vec/vec4f.js', ['goog.vec.vec4f', 'goog.vec.vec4f.Type'], ['goog.vec'], false); -goog.addDependency('webgl/webgl.js', ['goog.webgl'], [], false); -goog.addDependency('window/window.js', ['goog.window'], ['goog.dom.TagName', 'goog.dom.safe', 'goog.html.SafeUrl', 'goog.html.uncheckedconversions', 'goog.labs.userAgent.platform', 'goog.string', 'goog.string.Const', 'goog.userAgent'], false); -goog.addDependency('window/window_test.js', ['goog.windowTest'], ['goog.Promise', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.functions', 'goog.labs.userAgent.browser', 'goog.labs.userAgent.engine', 'goog.labs.userAgent.platform', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.TestCase', 'goog.testing.jsunit', 'goog.window'], false); diff --git a/libs/openlayers3/ol.css b/libs/openlayers3/ol.css deleted file mode 100644 index e22b6f4..0000000 --- a/libs/openlayers3/ol.css +++ /dev/null @@ -1 +0,0 @@ -.ol-control,.ol-scale-line{position:absolute;padding:2px}.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:#95b9e6;background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width}.ol-overlay-container{will-change:left,right,top,bottom}.ol-unsupported{display:none}.ol-viewport .ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-control{background-color:#eee;background-color:rgba(255,255,255,.4);border-radius:4px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}@media print{.ol-control{display:none}}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:#7b98bc;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:#4c6079;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;font-size:.7rem;line-height:1.375em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none;line-height:inherit}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button,.ol-attribution ul{display:inline-block}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution.ol-logo-only ul{display:block}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0;height:1.1em;line-height:1em}.ol-attribution.ol-logo-only{background:0 0;bottom:.4em;height:1.1em;line-height:1em}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-logo-only button,.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)} \ No newline at end of file diff --git a/libs/openlayers3/ol.js b/libs/openlayers3/ol.js deleted file mode 100644 index bfca885..0000000 --- a/libs/openlayers3/ol.js +++ /dev/null @@ -1,1017 +0,0 @@ -// OpenLayers 3. See http://openlayers.org/ -// License: https://raw.githubusercontent.com/openlayers/ol3/master/LICENSE.md -// Version: v3.11.2 - -(function (root, factory) { - if (typeof exports === "object") { - module.exports = factory(); - } else if (typeof define === "function" && define.amd) { - define([], factory); - } else { - root.ol = factory(); - } -}(this, function () { - var OPENLAYERS = {}; - var l,aa=aa||{},ba=this;function ca(b){return void 0!==b}function u(b,c,d){b=b.split(".");d=d||ba;b[0]in d||!d.execScript||d.execScript("var "+b[0]);for(var e;b.length&&(e=b.shift());)!b.length&&ca(c)?d[e]=c:d[e]?d=d[e]:d=d[e]={}}function da(){}function ea(b){b.Yb=function(){return b.Ng?b.Ng:b.Ng=new b}} -function fa(b){var c=typeof b;if("object"==c)if(b){if(b instanceof Array)return"array";if(b instanceof Object)return c;var d=Object.prototype.toString.call(b);if("[object Window]"==d)return"object";if("[object Array]"==d||"number"==typeof b.length&&"undefined"!=typeof b.splice&&"undefined"!=typeof b.propertyIsEnumerable&&!b.propertyIsEnumerable("splice"))return"array";if("[object Function]"==d||"undefined"!=typeof b.call&&"undefined"!=typeof b.propertyIsEnumerable&&!b.propertyIsEnumerable("call"))return"function"}else return"null"; -else if("function"==c&&"undefined"==typeof b.call)return"object";return c}function ga(b){return"array"==fa(b)}function ha(b){var c=fa(b);return"array"==c||"object"==c&&"number"==typeof b.length}function ia(b){return"string"==typeof b}function ja(b){return"number"==typeof b}function ka(b){return"function"==fa(b)}function ma(b){var c=typeof b;return"object"==c&&null!=b||"function"==c}function w(b){return b[na]||(b[na]=++oa)}var na="closure_uid_"+(1E9*Math.random()>>>0),oa=0; -function pa(b,c,d){return b.call.apply(b.bind,arguments)}function qa(b,c,d){if(!b)throw Error();if(2")&&(b=b.replace(Ia,">"));-1!=b.indexOf('"')&&(b=b.replace(Ja,"""));-1!=b.indexOf("'")&&(b=b.replace(La,"'"));-1!=b.indexOf("\x00")&&(b=b.replace(Ma,"�"));return b}var Ga=/&/g,Ha=//g,Ja=/"/g,La=/'/g,Ma=/\x00/g,Fa=/[\x00&<>"']/,Na=String.prototype.repeat?function(b,c){return b.repeat(c)}:function(b,c){return Array(c+1).join(b)}; -function Oa(b){b=ca(void 0)?b.toFixed(void 0):String(b);var c=b.indexOf(".");-1==c&&(c=b.length);return Na("0",Math.max(0,2-c))+b} -function Pa(b,c){for(var d=0,e=Ca(String(b)).split("."),f=Ca(String(c)).split("."),g=Math.max(e.length,f.length),h=0;0==d&&hc?1:0};function Sa(b,c,d){return Math.min(Math.max(b,c),d)}var Ta=function(){var b;"cosh"in Math?b=Math.cosh:b=function(b){b=Math.exp(b);return(b+1/b)/2};return b}();function Ua(b,c,d,e,f,g){var h=f-d,k=g-e;if(0!==h||0!==k){var m=((b-d)*h+(c-e)*k)/(h*h+k*k);1d?null:ia(b)?b.charAt(d):b[d]}function gb(b,c,d){for(var e=b.length,f=ia(b)?b.split(""):b,g=0;g=arguments.length?Za.slice.call(b,c):Za.slice.call(b,c,d)}function ob(b,c){b.sort(c||pb)}function qb(b){for(var c=rb,d=0;dc?1:bd)for(d=1;dg?1:.5))+f,0),void 0!==d&&(e=Math.min(e,d)),c/Math.pow(b,e)}};function zb(b){if(void 0!==b)return 0}function Ab(b,c){if(void 0!==b)return b+c}function Bb(b){var c=2*Math.PI/b;return function(b,e){if(void 0!==b)return b=Math.floor((b+e)/c+.5)*c}}function Cb(){var b=Wa(5);return function(c,d){if(void 0!==c)return Math.abs(c+d)<=b?0:c+d}};function Db(b,c,d){this.center=b;this.resolution=c;this.rotation=d};var Eb;a:{var Fb=ba.navigator;if(Fb){var Gb=Fb.userAgent;if(Gb){Eb=Gb;break a}}Eb=""}function Hb(b){return-1!=Eb.indexOf(b)};function Ib(b,c,d){for(var e in b)c.call(d,b[e],e,b)}function Jb(b,c){for(var d in b)if(c.call(void 0,b[d],d,b))return!0;return!1}function Kb(b){var c=0,d;for(d in b)c++;return c}function Lb(b){var c=[],d=0,e;for(e in b)c[d++]=b[e];return c}function Mb(b){var c=[],d=0,e;for(e in b)c[d++]=e;return c}function Nb(b,c){return c in b}function Ob(b,c){for(var d in b)if(b[d]==c)return!0;return!1}function Pb(b,c){for(var d in b)if(c.call(void 0,b[d],d,b))return d} -function Qb(b){for(var c in b)return!1;return!0}function Rb(b){for(var c in b)delete b[c]}function Sb(b,c,d){return c in b?b[c]:d}function Tb(b,c){var d=[];return c in b?b[c]:b[c]=d}function Ub(b){var c={},d;for(d in b)c[d]=b[d];return c}function Vb(b){var c=fa(b);if("object"==c||"array"==c){if(ka(b.clone))return b.clone();var c="array"==c?[]:{},d;for(d in b)c[d]=Vb(b[d]);return c}return b}var Wb="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "); -function Xb(b,c){for(var d,e,f=1;fparseFloat(b))?String(c):b}(),ic={};function jc(b){return ic[b]||(ic[b]=0<=Pa(hc,b))}var kc=ba.document,lc=kc&&Zb?gc()||("CSS1Compat"==kc.compatMode?parseInt(hc,10):5):void 0;var mc=!Zb||9<=lc,nc=!Zb||9<=lc,oc=Zb&&!jc("9");!bc||jc("528");ac&&jc("1.9b")||Zb&&jc("8")||Yb&&jc("9.5")||bc&&jc("528");ac&&!jc("8")||Zb&&jc("9");function pc(){0!=qc&&(rc[w(this)]=this);this.ia=this.ia;this.oa=this.oa}var qc=0,rc={};pc.prototype.ia=!1;pc.prototype.Ec=function(){if(!this.ia&&(this.ia=!0,this.X(),0!=qc)){var b=w(this);delete rc[b]}};function tc(b,c){var d=sa(uc,c);b.ia?d.call(void 0):(b.oa||(b.oa=[]),b.oa.push(ca(void 0)?ra(d,void 0):d))}pc.prototype.X=function(){if(this.oa)for(;this.oa.length;)this.oa.shift()()};function uc(b){b&&"function"==typeof b.Ec&&b.Ec()};function vc(b,c){this.type=b;this.g=this.target=c;this.i=!1;this.Qh=!0}vc.prototype.b=function(){this.i=!0};vc.prototype.preventDefault=function(){this.Qh=!1};function wc(b){b.b()}function xc(b){b.preventDefault()};var yc=Zb?"focusout":"DOMFocusOut";function zc(b){zc[" "](b);return b}zc[" "]=da;function Ac(b,c){vc.call(this,b?b.type:"");this.relatedTarget=this.g=this.target=null;this.u=this.j=this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.A=this.f=this.c=this.B=!1;this.state=null;this.l=!1;this.a=null;if(b){var d=this.type=b.type,e=b.changedTouches?b.changedTouches[0]:null;this.target=b.target||b.srcElement;this.g=c;var f=b.relatedTarget;if(f){if(ac){var g;a:{try{zc(f.nodeName);g=!0;break a}catch(h){}g=!1}g||(f=null)}}else"mouseover"==d? -f=b.fromElement:"mouseout"==d&&(f=b.toElement);this.relatedTarget=f;null===e?(this.offsetX=bc||void 0!==b.offsetX?b.offsetX:b.layerX,this.offsetY=bc||void 0!==b.offsetY?b.offsetY:b.layerY,this.clientX=void 0!==b.clientX?b.clientX:b.pageX,this.clientY=void 0!==b.clientY?b.clientY:b.pageY,this.screenX=b.screenX||0,this.screenY=b.screenY||0):(this.clientX=void 0!==e.clientX?e.clientX:e.pageX,this.clientY=void 0!==e.clientY?e.clientY:e.pageY,this.screenX=e.screenX||0,this.screenY=e.screenY||0);this.button= -b.button;this.j=b.keyCode||0;this.u=b.charCode||("keypress"==d?b.keyCode:0);this.B=b.ctrlKey;this.c=b.altKey;this.f=b.shiftKey;this.A=b.metaKey;this.l=cc?b.metaKey:b.ctrlKey;this.state=b.state;this.a=b;b.defaultPrevented&&this.preventDefault()}}y(Ac,vc);var Bc=[1,4,2];function Cc(b){return(mc?0==b.a.button:"click"==b.type?!0:!!(b.a.button&Bc[0]))&&!(bc&&cc&&b.B)}Ac.prototype.b=function(){Ac.da.b.call(this);this.a.stopPropagation?this.a.stopPropagation():this.a.cancelBubble=!0}; -Ac.prototype.preventDefault=function(){Ac.da.preventDefault.call(this);var b=this.a;if(b.preventDefault)b.preventDefault();else if(b.returnValue=!1,oc)try{if(b.ctrlKey||112<=b.keyCode&&123>=b.keyCode)b.keyCode=-1}catch(c){}};var Dc="closure_listenable_"+(1E6*Math.random()|0);function Ec(b){return!(!b||!b[Dc])}var Fc=0;function Gc(b,c,d,e,f){this.listener=b;this.a=null;this.src=c;this.type=d;this.ad=!!e;this.je=f;this.key=++Fc;this.Tc=this.Ud=!1}function Hc(b){b.Tc=!0;b.listener=null;b.a=null;b.src=null;b.je=null};function Ic(b){this.src=b;this.a={};this.c=0}Ic.prototype.add=function(b,c,d,e,f){var g=b.toString();b=this.a[g];b||(b=this.a[g]=[],this.c++);var h=Jc(b,c,e,f);-1f.keyCode||void 0!=f.returnValue)){a:{var g=!1;if(0==f.keyCode)try{f.keyCode=-1;break a}catch(m){g=!0}if(g||void 0==f.returnValue)f.returnValue=!0}f=[];for(g=d.g;g;g=g.parentNode)f.push(g);for(var g=b.type,h=f.length-1;!d.i&&0<=h;h--){d.g=f[h];var k=$c(f[h],g,!0,d),e=e&&k}for(h=0;!d.i&&h>>0);function Qc(b){if(ka(b))return b;b[bd]||(b[bd]=function(c){return b.handleEvent(c)});return b[bd]};function cd(){pc.call(this);this.zb=new Ic(this);this.Nd=this;this.eb=null}y(cd,pc);cd.prototype[Dc]=!0;l=cd.prototype;l.addEventListener=function(b,c,d,e){C(this,b,c,d,e)};l.removeEventListener=function(b,c,d,e){Yc(this,b,c,d,e)}; -l.o=function(b){var c,d=this.eb;if(d)for(c=[];d;d=d.eb)c.push(d);var d=this.Nd,e=b.type||b;if(ia(b))b=new vc(b,d);else if(b instanceof vc)b.target=b.target||d;else{var f=b;b=new vc(e,d);Xb(b,f)}var f=!0,g;if(c)for(var h=c.length-1;!b.i&&0<=h;h--)g=b.g=c[h],f=dd(g,e,!0,b)&&f;b.i||(g=b.g=d,f=dd(g,e,!0,b)&&f,b.i||(f=dd(g,e,!1,b)&&f));if(c)for(h=0;!b.i&&hd*c?d+c:d}function qd(b,c,d){return b+d*(c-b)};function rd(b,c){b[0]+=c[0];b[1]+=c[1];return b}function sd(b,c){var d=b[0],e=b[1],f=c[0],g=c[1],h=f[0],f=f[1],k=g[0],g=g[1],m=k-h,n=g-f,d=0===m&&0===n?0:(m*(d-h)+n*(e-f))/(m*m+n*n||0);0>=d||(1<=d?(h=k,f=g):(h+=d*m,f+=d*n));return[h,f]}function td(b,c){var d=pd(b+180,360)-180,e=Math.abs(Math.round(3600*d));return Math.floor(e/3600)+"\u00b0 "+Oa(Math.floor(e/60%60))+"\u2032 "+Oa(Math.floor(e%60))+"\u2033 "+c.charAt(0>d?1:0)} -function ud(b,c,d){return b?c.replace("{x}",b[0].toFixed(d)).replace("{y}",b[1].toFixed(d)):""}function vd(b,c){for(var d=!0,e=b.length-1;0<=e;--e)if(b[e]!=c[e]){d=!1;break}return d}function wd(b,c){var d=Math.cos(c),e=Math.sin(c),f=b[1]*d+b[0]*e;b[0]=b[0]*d-b[1]*e;b[1]=f;return b}function xd(b,c){var d=b[0]-c[0],e=b[1]-c[1];return d*d+e*e}function yd(b,c){return xd(b,sd(b,c))}function zd(b,c){return ud(b,"{x}, {y}",c)};function Ad(b){this.length=b.length||b;for(var c=0;ce&&(k=k|4);hf&&(k|=2);0===k&&(k=1);return k}function Od(){return[Infinity,Infinity,-Infinity,-Infinity]} -function Rd(b,c,d,e,f){return f?(f[0]=b,f[1]=c,f[2]=d,f[3]=e,f):[b,c,d,e]}function Zd(b,c){var d=b[0],e=b[1];return Rd(d,e,d,e,c)}function $d(b,c,d,e,f){f=Rd(Infinity,Infinity,-Infinity,-Infinity,f);return ae(f,b,c,d,e)}function be(b,c){return b[0]==c[0]&&b[2]==c[2]&&b[1]==c[1]&&b[3]==c[3]}function ce(b,c){c[0]b[2]&&(b[2]=c[2]);c[1]b[3]&&(b[3]=c[3]);return b} -function Pd(b,c){c[0]b[2]&&(b[2]=c[0]);c[1]b[3]&&(b[3]=c[1])}function ae(b,c,d,e,f){for(;dg;++g)h=f[g],k=e[g],f[g]=b[0]+h*c-k*d,e[g]=b[1]+h*d+k*c;return Qd(f,e,void 0)}function le(b){return b[3]-b[1]}function oe(b,c,d){d=d?d:Od();pe(b,c)&&(d[0]=b[0]>c[0]?b[0]:c[0],d[1]=b[1]>c[1]?b[1]:c[1],d[2]=b[2]=c[0]&&b[1]<=c[3]&&b[3]>=c[1]}function je(b){return b[2]b||0!==this.i&&b<=this.i)return this;var c=b.toString();if(this.j.hasOwnProperty(c))return this.j[c];var d=this.Kc(b);if(d.ja().lengthf&&(f=g);g=k;h=m}return f}function mf(b,c,d,e,f){var g,h;g=0;for(h=d.length;gk){for(;ct&&(n=p,t=v)}t>f&&(m[(n-c)/e]=1,r+eG&&EaG)&&(0>la&&Lla)||(z[h++]=v,z[h++]=O,B=v,A=O);v=K;O=I}}z[h++]=v;z[h++]=O}}k.push(h);c=p}return h};function wf(b,c){df.call(this);this.g=this.l=-1;this.ma(b,c)}y(wf,df);l=wf.prototype;l.clone=function(){var b=new wf(null);xf(b,this.b,this.v.slice());return b};l.mb=function(b,c,d,e){if(eg!=p>g&&f<(n-k)*(g-m)/(p-m)+k&&(h=!h);k=n;m=p}return h}function Af(b,c,d,e,f,g){if(0===d.length||!zf(b,c,d[0],e,f,g))return!1;var h;c=1;for(h=d.length;cq&&(n=(n+p)/2,Af(b,c,d,e,n,r)&&(x=n,q=z));n=p}isNaN(x)&&(x=f[g]);return h?(h.push(x,r),h):[x,r]};function Cf(b,c,d,e,f,g){for(var h=[b[c],b[c+1]],k=[],m;c+e=f[0]&&g[2]<=f[2]||g[1]>=f[1]&&g[3]<=f[3]?!0:Cf(b,c,d,e,function(b,c){var d=!1,e=Yd(f,b),g=Yd(f,c);if(1===e||1===g)d=!0;else{var q=f[0],r=f[1],t=f[2],x=f[3],z=c[0],B=c[1],A=(B-b[1])/(z-b[0]);g&2&&!(e&2)&&(d=z-(B-x)/A,d=d>=q&&d<=t);d||!(g&4)||e&4||(d=B-(z-t)*A,d=d>=r&&d<=x);d||!(g&8)||e&8||(d=z-(B-r)/A,d=d>=q&&d<=t);d||!(g&16)||e&16||(d=B-(z-q)*A,d=d>=r&&d<=x)}return d}):!1} -function Ef(b,c,d,e,f){var g=d[0];if(!(Df(b,c,g,e,f)||zf(b,c,g,e,f[0],f[1])||zf(b,c,g,e,f[0],f[3])||zf(b,c,g,e,f[2],f[1])||zf(b,c,g,e,f[2],f[3])))return!1;if(1===d.length)return!0;c=1;for(g=d.length;cb||this.g.length<=b)return null;var c=new wf(null);xf(c,this.b,this.v.slice(0===b?0:this.g[b-1],this.g[b]));return c};l.ae=function(){var b=this.b,c=this.v,d=this.g,e=[],f=0,g,h;g=0;for(h=d.length;gthis.i)}return void 0!==b?this.f+b:b}; -l.jf=function(b,c,d){b instanceof df||(b=Lf(b));var e=d||{};d=void 0!==e.padding?e.padding:[0,0,0,0];var f=void 0!==e.constrainResolution?e.constrainResolution:!0,g=void 0!==e.nearest?e.nearest:!1,h;void 0!==e.minResolution?h=e.minResolution:void 0!==e.maxZoom?h=this.constrainResolution(this.a,e.maxZoom-this.f,0):h=0;var k=b.ja(),m=this.Ea(),e=Math.cos(-m),m=Math.sin(-m),n=Infinity,p=Infinity,q=-Infinity,r=-Infinity;b=b.ra();for(var t=0,x=k.length;tb?Wf(2*b):1-Wf(2*(b-.5))};function Zf(b){var c=b.source,d=b.start?b.start:Date.now(),e=c[0],f=c[1],g=void 0!==b.duration?b.duration:1E3,h=b.easing?b.easing:Wf;return function(b,c){if(c.time>=1;return d.join("")}function fg(b){return dg(b[0],b[1],b[2])};function gg(b,c,d,e){this.a=b;this.f=c;this.c=d;this.b=e}gg.prototype.contains=function(b){return hg(this,b[1],b[2])};function hg(b,c,d){return b.a<=c&&c<=b.f&&b.c<=d&&d<=b.b}function ig(b,c){return b.a==c.a&&b.c==c.c&&b.f==c.f&&b.b==c.b}function jg(b){return b.b-b.c+1}function kg(b){return b.f-b.a+1}function lg(b,c){return b.a<=c.f&&b.f>=c.a&&b.c<=c.b&&b.b>=c.c};function mg(b){this.c=b.html;this.a=b.tileRanges?b.tileRanges:null}mg.prototype.b=function(){return this.c};function ng(b,c,d){vc.call(this,b,d);this.element=c}y(ng,vc);function og(b){id.call(this);this.a=b?b:[];pg(this)}y(og,id);l=og.prototype;l.clear=function(){for(;0");g=g.join("")}g=f.createElement(g);h&&(ia(h)?g.className=h:ga(h)?g.className=h.join(" "):Eg(g,h));2=this.left&&b.right<=this.right&&b.top>=this.top&&b.bottom<=this.bottom:b.x>=this.left&&b.x<=this.right&&b.y>=this.top&&b.y<=this.bottom:!1}; -l.ceil=function(){this.top=Math.ceil(this.top);this.right=Math.ceil(this.right);this.bottom=Math.ceil(this.bottom);this.left=Math.ceil(this.left);return this};l.floor=function(){this.top=Math.floor(this.top);this.right=Math.floor(this.right);this.bottom=Math.floor(this.bottom);this.left=Math.floor(this.left);return this};l.round=function(){this.top=Math.round(this.top);this.right=Math.round(this.right);this.bottom=Math.round(this.bottom);this.left=Math.round(this.left);return this}; -l.scale=function(b,c){var d=ja(c)?c:b;this.left*=b;this.right*=b;this.top*=d;this.bottom*=d;return this};function $g(b,c,d,e){this.left=b;this.top=c;this.width=d;this.height=e}l=$g.prototype;l.clone=function(){return new $g(this.left,this.top,this.width,this.height)};l.contains=function(b){return b instanceof $g?this.left<=b.left&&this.left+this.width>=b.left+b.width&&this.top<=b.top&&this.top+this.height>=b.top+b.height:b.x>=this.left&&b.x<=this.left+this.width&&b.y>=this.top&&b.y<=this.top+this.height}; -l.distance=function(b){var c=b.xb.g}function vh(b,c){for(var d,e;uh(b)&&!(d=b.a.zc,e=d.a[0].toString(),e in c&&c[e].contains(d.a));)b.pop().Ec()};function wh(b,c){cd.call(this);this.a=b;this.state=c}y(wh,cd);function xh(b){b.o("change")}wh.prototype.tb=function(){return w(this).toString()};wh.prototype.f=function(){return this.a};function yh(b){id.call(this);this.f=Fe(b.projection);this.j=void 0!==b.attributions?b.attributions:null;this.U=b.logo;this.A=void 0!==b.state?b.state:"ready";this.S=void 0!==b.wrapX?b.wrapX:!1}y(yh,id);l=yh.prototype;l.xe=wa;l.sa=function(){return this.j};l.qa=function(){return this.U};l.ta=function(){return this.f};l.ua=function(){return this.A};function zh(b){return b.S}l.na=function(b){this.j=b;this.s()};function Ah(b,c){b.A=c;b.s()};function Bh(b){this.minZoom=void 0!==b.minZoom?b.minZoom:0;this.a=b.resolutions;this.maxZoom=this.a.length-1;this.b=void 0!==b.origin?b.origin:null;this.g=null;void 0!==b.origins&&(this.g=b.origins);var c=b.extent;void 0===c||this.b||this.g||(this.b=he(c));this.j=null;void 0!==b.tileSizes&&(this.j=b.tileSizes);this.l=void 0!==b.tileSize?b.tileSize:this.j?null:256;this.u=void 0!==c?c:null;this.c=null;void 0!==b.sizes?this.c=b.sizes.map(function(b){return new gg(Math.min(0,b[0]),Math.max(b[0]-1,-1), -Math.min(0,b[1]),Math.max(b[1]-1,-1))},this):c&&Ch(this,c);this.f=[0,0]}var Dh=[0,0,0];function Eh(b,c,d,e,f){f=b.Aa(c,f);for(c=c[0]-1;c>=b.minZoom;){if(d.call(null,c,Fh(b,f,c,e)))return!0;--c}return!1}l=Bh.prototype;l.J=function(){return this.u};l.Cg=function(){return this.maxZoom};l.Dg=function(){return this.minZoom};l.Ca=function(b){return this.b?this.b:this.g[b]};l.$=function(b){return this.a[b]};l.wh=function(){return this.a}; -function Gh(b,c,d,e){return c[0]f||f>d.maxZoom)d=!1;else{var g=d.J();d=(d=g?Fh(d,g,f):d.c?d.c[f]:null)?hg(d,e,b):!0}return d?c:null}l.Xf=wa;function Sh(b,c){vc.call(this,b);this.tile=c}y(Sh,vc);function Th(b){b=b?b:{};this.D=Kg("UL");this.A=Kg("LI");this.D.appendChild(this.A);ih(this.A,!1);this.b=void 0!==b.collapsed?b.collapsed:!0;this.i=void 0!==b.collapsible?b.collapsible:!0;this.i||(this.b=!1);var c=b.className?b.className:"ol-attribution",d=b.tipLabel?b.tipLabel:"Attributions",e=b.collapseLabel?b.collapseLabel:"\u00bb";this.G=ia(e)?Hg("SPAN",{},e):e;e=b.label?b.label:"i";this.S=ia(e)?Hg("SPAN",{},e):e;d=Hg("BUTTON",{type:"button",title:d},this.i&&!this.b?this.G:this.S);C(d,"click", -this.Ll,!1,this);C(d,["mouseout",yc],function(){this.blur()},!1);c=Hg("DIV",c+" ol-unselectable ol-control"+(this.b&&this.i?" ol-collapsed":"")+(this.i?"":" ol-uncollapsible"),this.D,d);qh.call(this,{element:c,render:b.render?b.render:Uh,target:b.target});this.C=!0;this.l={};this.j={};this.T={}}y(Th,qh); -function Uh(b){if(b=b.frameState){var c,d,e,f,g,h,k,m,n,p,q,r=b.layerStatesArray,t=Ub(b.attributions),x={},z=b.viewState.projection;d=0;for(c=r.length;dla.f)if(lg(G,new gg(pd(K.a,Ea),pd(K.f,Ea),K.c,K.b))||kg(K)>Ea&&lg(G,la)){q=!0;break a}}q=!1}else q=!0}}else q=!1;q?(m in x&&delete x[m],t[m]=k):x[m]=k}c=[t,x];d=c[0];c=c[1];for(var L in this.l)L in d?(this.j[L]||(ih(this.l[L],!0),this.j[L]=!0),delete d[L]):L in c?(this.j[L]&&(ih(this.l[L],!1),delete this.j[L]),delete c[L]):(Og(this.l[L]),delete this.l[L],delete this.j[L]);for(L in d)e=Kg("LI"),e.innerHTML=d[L].c,this.D.appendChild(e),this.l[L]=e,this.j[L]=!0;for(L in c)e= -Kg("LI"),e.innerHTML=c[L].c,ih(e,!1),this.D.appendChild(e),this.l[L]=e;L=!Qb(this.j)||!Qb(b.logos);this.C!=L&&(ih(this.element,L),this.C=L);L&&Qb(this.j)?Wg(this.element,"ol-logo-only"):Xg(this.element,"ol-logo-only");var za;b=b.logos;L=this.T;for(za in L)za in b||(Og(L[za]),delete L[za]);for(var Ra in b)Ra in L||(za=new Image,za.src=Ra,d=b[Ra],""===d?d=za:(d=Hg("A",{href:d}),d.appendChild(za)),this.A.appendChild(d),L[Ra]=d);ih(this.A,!Qb(b))}else this.C&&(ih(this.element,!1),this.C=!1)}l=Th.prototype; -l.Ll=function(b){b.preventDefault();Vh(this)};function Vh(b){Yg(b.element,"ol-collapsed");b.b?Pg(b.G,b.S):Pg(b.S,b.G);b.b=!b.b}l.Kl=function(){return this.i};l.Nl=function(b){this.i!==b&&(this.i=b,Yg(this.element,"ol-uncollapsible"),!b&&this.b&&Vh(this))};l.Ml=function(b){this.i&&this.b!==b&&Vh(this)};l.Jl=function(){return this.b};function Wh(b){b=b?b:{};var c=b.className?b.className:"ol-rotate",d=b.label?b.label:"\u21e7";this.b=null;ia(d)?this.b=Hg("SPAN","ol-compass",d):(this.b=d,Wg(this.b,"ol-compass"));d=Hg("BUTTON",{"class":c+"-reset",type:"button",title:b.tipLabel?b.tipLabel:"Reset rotation"},this.b);C(d,"click",Wh.prototype.A,!1,this);c=Hg("DIV",c+" ol-unselectable ol-control",d);qh.call(this,{element:c,render:b.render?b.render:Xh,target:b.target});this.i=b.duration?b.duration:250;this.j=void 0!==b.autoHide?b.autoHide: -!0;this.l=void 0;this.j&&Wg(this.element,"ol-hidden")}y(Wh,qh);Wh.prototype.A=function(b){b.preventDefault();b=this.a;var c=b.aa();if(c){var d=c.Ea();void 0!==d&&(0Math.PI&&(d-=2*Math.PI),b.Ma(ag({rotation:d,duration:this.i,easing:Vf}))),c.te(0))}}; -function Xh(b){if(b=b.frameState){b=b.viewState.rotation;if(b!=this.l){var c="rotate("+b+"rad)";if(this.j){var d=this.element;0===b?Wg(d,"ol-hidden"):Xg(d,"ol-hidden")}this.b.style.msTransform=c;this.b.style.webkitTransform=c;this.b.style.transform=c}this.l=b}};function Yh(b){b=b?b:{};var c=b.className?b.className:"ol-zoom",d=b.delta?b.delta:1,e=b.zoomOutLabel?b.zoomOutLabel:"\u2212",f=b.zoomOutTipLabel?b.zoomOutTipLabel:"Zoom out",g=Hg("BUTTON",{"class":c+"-in",type:"button",title:b.zoomInTipLabel?b.zoomInTipLabel:"Zoom in"},b.zoomInLabel?b.zoomInLabel:"+");C(g,"click",sa(Yh.prototype.j,d),!1,this);e=Hg("BUTTON",{"class":c+"-out",type:"button",title:f},e);C(e,"click",sa(Yh.prototype.j,-d),!1,this);c=Hg("DIV",c+" ol-unselectable ol-control",g,e);qh.call(this, -{element:c,target:b.target});this.b=void 0!==b.duration?b.duration:250}y(Yh,qh);Yh.prototype.j=function(b,c){c.preventDefault();var d=this.a,e=d.aa();if(e){var f=e.$();f&&(02*this.b&&si(this),!0):!1};function si(b){if(b.b!=b.a.length){for(var c=0,d=0;c=b||96<=b&&106>=b||65<=b&&90>=b||(bc||$b)&&0==b)return!0;switch(b){case 32:case 43:case 63:case 64:case 107:case 109:case 110:case 111:case 186:case 59:case 189:case 187:case 61:case 188:case 190:case 191:case 192:case 222:case 219:case 220:case 221:return!0;default:return!1}}function yi(b){if(ac)b=zi(b);else if(cc&&bc)a:switch(b){case 93:b=91;break a}return b} -function zi(b){switch(b){case 61:return 187;case 59:return 186;case 173:return 189;case 224:return 91;case 0:return 224;default:return b}};function Ai(b,c){cd.call(this);b&&Bi(this,b,c)}y(Ai,cd);l=Ai.prototype;l.ud=null;l.le=null;l.qf=null;l.me=null;l.ib=-1;l.Zb=-1;l.bf=!1; -var Ci={3:13,12:144,63232:38,63233:40,63234:37,63235:39,63236:112,63237:113,63238:114,63239:115,63240:116,63241:117,63242:118,63243:119,63244:120,63245:121,63246:122,63247:123,63248:44,63272:46,63273:36,63275:35,63276:33,63277:34,63289:144,63302:45},Di={Up:38,Down:40,Left:37,Right:39,Enter:13,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,"U+007F":46,Home:36,End:35,PageUp:33,PageDown:34,Insert:45},Ei=Zb||$b||bc&&jc("525"),Fi=cc&∾ -Ai.prototype.a=function(b){if(bc||$b)if(17==this.ib&&!b.B||18==this.ib&&!b.c||cc&&91==this.ib&&!b.A)this.Zb=this.ib=-1;-1==this.ib&&(b.B&&17!=b.j?this.ib=17:b.c&&18!=b.j?this.ib=18:b.A&&91!=b.j&&(this.ib=91));Ei&&!wi(b.j,this.ib,b.f,b.B,b.c)?this.handleEvent(b):(this.Zb=yi(b.j),Fi&&(this.bf=b.c))};Ai.prototype.c=function(b){this.Zb=this.ib=-1;this.bf=b.c}; -Ai.prototype.handleEvent=function(b){var c=b.a,d,e,f=c.altKey;Zb&&"keypress"==b.type?(d=this.Zb,e=13!=d&&27!=d?c.keyCode:0):(bc||$b)&&"keypress"==b.type?(d=this.Zb,e=0<=c.charCode&&63232>c.charCode&&xi(d)?c.charCode:0):Yb&&!bc?(d=this.Zb,e=xi(d)?c.keyCode:0):(d=c.keyCode||this.Zb,e=c.charCode||0,Fi&&(f=this.bf),cc&&63==e&&224==d&&(d=191));var g=d=yi(d),h=c.keyIdentifier;d?63232<=d&&d in Ci?g=Ci[d]:25==d&&b.f&&(g=9):h&&h in Di&&(g=Di[h]);this.ib=g;b=new Gi(g,e,0,c);b.c=f;this.o(b)}; -function Bi(b,c,d){b.me&&Hi(b);b.ud=c;b.le=C(b.ud,"keypress",b,d);b.qf=C(b.ud,"keydown",b.a,d,b);b.me=C(b.ud,"keyup",b.c,d,b)}function Hi(b){b.le&&(Zc(b.le),Zc(b.qf),Zc(b.me),b.le=null,b.qf=null,b.me=null);b.ud=null;b.ib=-1;b.Zb=-1}Ai.prototype.X=function(){Ai.da.X.call(this);Hi(this)};function Gi(b,c,d,e){Ac.call(this,e);this.type="key";this.j=b;this.u=c}y(Gi,Ac);function Ii(b,c){cd.call(this);var d=this.a=b;(d=ma(d)&&1==d.nodeType?this.a:this.a?this.a.body:null)&&bh(d,"direction");this.c=C(this.a,ac?"DOMMouseScroll":"mousewheel",this,c)}y(Ii,cd); -Ii.prototype.handleEvent=function(b){var c=0,d=0;b=b.a;if("mousewheel"==b.type){c=1;if(Zb||bc&&(dc||jc("532.0")))c=40;d=Ji(-b.wheelDelta,c);c=ca(b.wheelDeltaX)?Ji(-b.wheelDeltaY,c):d}else d=b.detail,100d&&(d=-3),ca(b.axis)&&b.axis===b.HORIZONTAL_AXIS||(c=d);ja(this.b)&&(c=Math.min(Math.max(c,-this.b),this.b));d=new Ki(d,b,0,c);this.o(d)};function Ji(b,c){return bc&&(cc||ec)&&0!=b%c?b:b/c}Ii.prototype.X=function(){Ii.da.X.call(this);Zc(this.c);this.c=null}; -function Ki(b,c,d,e){Ac.call(this,c);this.type="mousewheel";this.detail=b;this.C=e}y(Ki,Ac);function Li(b,c,d){vc.call(this,b);this.a=c;b=d?d:{};this.buttons=Mi(b);this.pressure=Ni(b,this.buttons);this.bubbles="bubbles"in b?b.bubbles:!1;this.cancelable="cancelable"in b?b.cancelable:!1;this.view="view"in b?b.view:null;this.detail="detail"in b?b.detail:null;this.screenX="screenX"in b?b.screenX:0;this.screenY="screenY"in b?b.screenY:0;this.clientX="clientX"in b?b.clientX:0;this.clientY="clientY"in b?b.clientY:0;this.button="button"in b?b.button:0;this.relatedTarget="relatedTarget"in b?b.relatedTarget: -null;this.pointerId="pointerId"in b?b.pointerId:0;this.width="width"in b?b.width:0;this.height="height"in b?b.height:0;this.pointerType="pointerType"in b?b.pointerType:"";this.isPrimary="isPrimary"in b?b.isPrimary:!1;c.preventDefault&&(this.preventDefault=function(){c.preventDefault()})}y(Li,vc);function Mi(b){if(b.buttons||Oi)b=b.buttons;else switch(b.which){case 1:b=1;break;case 2:b=4;break;case 3:b=2;break;default:b=0}return b} -function Ni(b,c){var d=0;b.pressure?d=b.pressure:d=c?.5:0;return d}var Oi=!1;try{Oi=1===(new MouseEvent("click",{buttons:1})).buttons}catch(b){};function Pi(b,c){var d=Kg("CANVAS");b&&(d.width=b);c&&(d.height=c);return d.getContext("2d")} -var Qi=function(){var b;return function(){if(void 0===b)if(ba.getComputedStyle){var c=Kg("P"),d,e={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(c);for(var f in e)f in c.style&&(c.style[f]="translate(1px,1px)",d=ba.getComputedStyle(c).getPropertyValue(e[f]));Og(c);b=d&&"none"!==d}else b=!1;return b}}(),Ri=function(){var b;return function(){if(void 0===b)if(ba.getComputedStyle){var c= -Kg("P"),d,e={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(c);for(var f in e)f in c.style&&(c.style[f]="translate3d(1px,1px,1px)",d=ba.getComputedStyle(c).getPropertyValue(e[f]));Og(c);b=d&&"none"!==d}else b=!1;return b}}();function Si(b,c){var d=b.style;d.WebkitTransform=c;d.MozTransform=c;d.a=c;d.msTransform=c;d.transform=c;Zb&&jc("9.0")&&(b.style.transformOrigin="0 0")} -function Ti(b,c){var d;if(Ri()){var e=Array(16);for(d=0;16>d;++d)e[d]=c[d].toFixed(6);Si(b,"matrix3d("+e.join(",")+")")}else if(Qi()){var e=[c[0],c[1],c[4],c[5],c[12],c[13]],f=Array(6);for(d=0;6>d;++d)f[d]=e[d].toFixed(6);Si(b,"matrix("+f.join(",")+")")}else b.style.left=Math.round(c[12])+"px",b.style.top=Math.round(c[13])+"px"};var Ui=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function Vi(b,c){var d,e,f=Ui.length;for(e=0;e=Math.abs(e-k[0])&&25>=m)return!0}return!1}function lj(b){var c=mj(b,b.a),d=c.preventDefault;c.preventDefault=function(){b.preventDefault();d()};c.pointerId=1;c.isPrimary=!0;c.pointerType="mouse";return c}l=jj.prototype; -l.el=function(b){if(!kj(this,b)){(1).toString()in this.c&&this.cancel(b);var c=lj(b);this.c[(1).toString()]=b;nj(this.a,oj,c,b)}};l.fl=function(b){if(!kj(this,b)){var c=lj(b);nj(this.a,pj,c,b)}};l.il=function(b){if(!kj(this,b)){var c=this.c[(1).toString()];c&&c.button===b.button&&(c=lj(b),nj(this.a,qj,c,b),delete this.c[(1).toString()])}};l.hl=function(b){if(!kj(this,b)){var c=lj(b);rj(this.a,c,b)}};l.gl=function(b){if(!kj(this,b)){var c=lj(b);sj(this.a,c,b)}}; -l.cancel=function(b){var c=lj(b);this.a.cancel(c,b);delete this.c[(1).toString()]};function tj(b){ij.call(this,b,{MSPointerDown:this.nl,MSPointerMove:this.ol,MSPointerUp:this.rl,MSPointerOut:this.pl,MSPointerOver:this.ql,MSPointerCancel:this.ml,MSGotPointerCapture:this.kl,MSLostPointerCapture:this.ll});this.c=b.c;this.b=["","unavailable","touch","pen","mouse"]}y(tj,ij);function uj(b,c){var d=c;ja(c.a.pointerType)&&(d=mj(c,c.a),d.pointerType=b.b[c.a.pointerType]);return d}l=tj.prototype;l.nl=function(b){this.c[b.a.pointerId.toString()]=b;var c=uj(this,b);nj(this.a,oj,c,b)}; -l.ol=function(b){var c=uj(this,b);nj(this.a,pj,c,b)};l.rl=function(b){var c=uj(this,b);nj(this.a,qj,c,b);delete this.c[b.a.pointerId.toString()]};l.pl=function(b){var c=uj(this,b);sj(this.a,c,b)};l.ql=function(b){var c=uj(this,b);rj(this.a,c,b)};l.ml=function(b){var c=uj(this,b);this.a.cancel(c,b);delete this.c[b.a.pointerId.toString()]};l.ll=function(b){this.a.o(new Li("lostpointercapture",b,b.a))};l.kl=function(b){this.a.o(new Li("gotpointercapture",b,b.a))};function vj(b){ij.call(this,b,{pointerdown:this.Vn,pointermove:this.Wn,pointerup:this.Zn,pointerout:this.Xn,pointerover:this.Yn,pointercancel:this.Un,gotpointercapture:this.rk,lostpointercapture:this.dl})}y(vj,ij);l=vj.prototype;l.Vn=function(b){wj(this.a,b)};l.Wn=function(b){wj(this.a,b)};l.Zn=function(b){wj(this.a,b)};l.Xn=function(b){wj(this.a,b)};l.Yn=function(b){wj(this.a,b)};l.Un=function(b){wj(this.a,b)};l.dl=function(b){wj(this.a,b)};l.rk=function(b){wj(this.a,b)};function xj(b,c){ij.call(this,b,{touchstart:this.ap,touchmove:this.$o,touchend:this.Zo,touchcancel:this.Yo});this.c=b.c;this.i=c;this.b=void 0;this.j=0;this.f=void 0}y(xj,ij);l=xj.prototype;l.Ph=function(){this.j=0;this.f=void 0}; -function yj(b,c,d){c=mj(c,d);c.pointerId=d.identifier+2;c.bubbles=!0;c.cancelable=!0;c.detail=b.j;c.button=0;c.buttons=1;c.width=d.webkitRadiusX||d.radiusX||0;c.height=d.webkitRadiusY||d.radiusY||0;c.pressure=d.webkitForce||d.force||.5;c.isPrimary=b.b===d.identifier;c.pointerType="touch";c.clientX=d.clientX;c.clientY=d.clientY;c.screenX=d.screenX;c.screenY=d.screenY;return c} -function zj(b,c,d){function e(){c.preventDefault()}var f=Array.prototype.slice.call(c.a.changedTouches),g=f.length,h,k;for(h=0;h=c.length){var f=[],g,h,k;for(g=0;g=b.minResolution&&cb.f&&(b.f=e.f),e.cb.b&&(b.b=e.b)):b[c][d]=e:(b[c]={},b[c][d]=e)}function sk(b,c,d){return[c*(Math.round(b[0]/c)+d[0]%2/2),c*(Math.round(b[1]/c)+d[1]%2/2)]} -function tk(b,c,d,e,f,g,h,k,m,n){var p=w(c).toString();p in b.wantedTiles||(b.wantedTiles[p]={});var q=b.wantedTiles[p];b=b.tileQueue;var r=d.minZoom,t,x,z,B,A,v;for(v=h;v>=r;--v)for(x=Fh(d,g,v,x),z=d.$(v),B=x.a;B<=x.f;++B)for(A=x.c;A<=x.b;++A)h-v<=k?(t=c.Ob(v,B,A,e,f),0==t.state&&(q[fg(t.a)]=!0,t.tb()in b.b||uk(b,[t,p,Jh(d,t.a),z])),void 0!==m&&m.call(n,t)):c.Xf(v,B,A,f)};function vk(b){this.A=b.opacity;this.D=b.rotateWithView;this.u=b.rotation;this.i=b.scale;this.G=b.snapToPixel}l=vk.prototype;l.Ae=function(){return this.A};l.ce=function(){return this.D};l.Be=function(){return this.u};l.Ce=function(){return this.i};l.de=function(){return this.G};l.De=function(b){this.A=b};l.Ee=function(b){this.u=b};l.Fe=function(b){this.i=b};function wk(b){b=b||{};this.g=void 0!==b.anchor?b.anchor:[.5,.5];this.f=null;this.c=void 0!==b.anchorOrigin?b.anchorOrigin:"top-left";this.l=void 0!==b.anchorXUnits?b.anchorXUnits:"fraction";this.B=void 0!==b.anchorYUnits?b.anchorYUnits:"fraction";var c=void 0!==b.crossOrigin?b.crossOrigin:null,d=void 0!==b.img?b.img:null,e=void 0!==b.imgSize?b.imgSize:null,f=b.src;void 0!==f&&0!==f.length||!d||(f=d.src);var g=void 0!==b.src?0:2,h=xk.Yb(),k=h.get(f,c);k||(k=new yk(d,f,e,c,g),h.set(f,c,k));this.a= -k;this.ia=void 0!==b.offset?b.offset:[0,0];this.b=void 0!==b.offsetOrigin?b.offsetOrigin:"top-left";this.j=null;this.C=void 0!==b.size?b.size:null;vk.call(this,{opacity:void 0!==b.opacity?b.opacity:1,rotation:void 0!==b.rotation?b.rotation:0,scale:void 0!==b.scale?b.scale:1,snapToPixel:void 0!==b.snapToPixel?b.snapToPixel:!0,rotateWithView:void 0!==b.rotateWithView?b.rotateWithView:!1})}y(wk,vk);l=wk.prototype; -l.Xb=function(){if(this.f)return this.f;var b=this.g,c=this.Bb();if("fraction"==this.l||"fraction"==this.B){if(!c)return null;b=this.g.slice();"fraction"==this.l&&(b[0]*=c[0]);"fraction"==this.B&&(b[1]*=c[1])}if("top-left"!=this.c){if(!c)return null;b===this.g&&(b=this.g.slice());if("top-right"==this.c||"bottom-right"==this.c)b[0]=-b[0]+c[0];if("bottom-left"==this.c||"bottom-right"==this.c)b[1]=-b[1]+c[1]}return this.f=b};l.fc=function(){return this.a.a};l.qd=function(){return this.a.b};l.Bd=function(){return this.a.c}; -l.ze=function(){var b=this.a;if(!b.g)if(b.l){var c=b.b[0],d=b.b[1],e=Pi(c,d);e.fillRect(0,0,c,d);b.g=e.canvas}else b.g=b.a;return b.g};l.Ca=function(){if(this.j)return this.j;var b=this.ia;if("top-left"!=this.b){var c=this.Bb(),d=this.a.b;if(!c||!d)return null;b=b.slice();if("top-right"==this.b||"bottom-right"==this.b)b[0]=d[0]-c[0]-b[0];if("bottom-left"==this.b||"bottom-right"==this.b)b[1]=d[1]-c[1]-b[1]}return this.j=b};l.fn=function(){return this.a.j};l.Bb=function(){return this.C?this.C:this.a.b}; -l.sf=function(b,c){return C(this.a,"change",b,!1,c)};l.load=function(){this.a.load()};l.Wf=function(b,c){Yc(this.a,"change",b,!1,c)};function yk(b,c,d,e,f){cd.call(this);this.g=null;this.a=b?b:new Image;null!==e&&(this.a.crossOrigin=e);this.f=null;this.c=f;this.b=d;this.j=c;this.l=!1;2==this.c&&zk(this)}y(yk,cd);function zk(b){var c=Pi(1,1);try{c.drawImage(b.a,0,0),c.getImageData(0,0,1,1)}catch(d){b.l=!0}}yk.prototype.i=function(){this.c=3;this.f.forEach(Zc);this.f=null;this.o("change")}; -yk.prototype.B=function(){this.c=2;this.b=[this.a.width,this.a.height];this.f.forEach(Zc);this.f=null;zk(this);this.o("change")};yk.prototype.load=function(){if(0==this.c){this.c=1;this.f=[Xc(this.a,"error",this.i,!1,this),Xc(this.a,"load",this.B,!1,this)];try{this.a.src=this.j}catch(b){this.i()}}};function xk(){this.a={};this.c=0}ea(xk);xk.prototype.clear=function(){this.a={};this.c=0};xk.prototype.get=function(b,c){var d=c+":"+b;return d in this.a?this.a[d]:null}; -xk.prototype.set=function(b,c,d){this.a[c+":"+b]=d;++this.c};function Ak(b,c){pc.call(this);this.j=c;this.f={};this.u={}}y(Ak,pc);function Bk(b){var c=b.viewState,d=b.coordinateToPixelMatrix;ik(d,b.size[0]/2,b.size[1]/2,1/c.resolution,-1/c.resolution,-c.rotation,-c.center[0],-c.center[1]);Jd(d,b.pixelToCoordinateMatrix)}l=Ak.prototype;l.X=function(){Ib(this.f,uc);Ak.da.X.call(this)}; -function Ck(){var b=xk.Yb();if(32q[2])m=[t+r*Math.ceil((q[0]-t)/r),b[1]]}q=c.layerStatesArray;for(r=q.length-1;0<=r;--r){var t=q[r],x=t.layer;if(!t.rb||fk(t,n)&&f.call(g,x)){var z=Dk(this,x);x.fa()&&(k=z.Za(zh(x.fa())?m:b,c,t.rb?d:h,e));if(k)return k}}}; -l.jh=function(b,c,d,e,f,g){var h,k=c.viewState.resolution,m=c.layerStatesArray,n;for(n=m.length-1;0<=n;--n){h=m[n];var p=h.layer;if(fk(h,k)&&f.call(g,p)&&(h=Dk(this,p).sc(b,c,d,e)))return h}};l.kh=function(b,c,d,e){return void 0!==this.Af(b,c,ue,this,d,e)};function Dk(b,c){var d=w(c).toString();if(d in b.f)return b.f[d];var e=b.gf(c);b.f[d]=e;b.u[d]=C(e,"change",b.Dk,!1,b);return e}l.Dk=function(){this.j.render()};l.Me=wa; -l.Do=function(b,c){for(var d in this.f)if(!(c&&d in c.layerStates)){var e=d,f=this.f[e];delete this.f[e];Zc(this.u[e]);delete this.u[e];uc(f)}};function Ek(b,c){for(var d in b.f)if(!(d in c.layerStates)){c.postRenderFunctions.push(ra(b.Do,b));break}}function rb(b,c){return b.zIndex-c.zIndex};function Fk(b,c){this.i=b;this.g=c;this.a=[];this.c=[];this.b={}}Fk.prototype.clear=function(){this.a.length=0;this.c.length=0;Rb(this.b)};function Gk(b){var c=b.a,d=b.c,e=c[0];1==c.length?(c.length=0,d.length=0):(c[0]=c.pop(),d[0]=d.pop(),Hk(b,0));c=b.g(e);delete b.b[c];return e}function uk(b,c){var d=b.i(c);Infinity!=d&&(b.a.push(c),b.c.push(d),b.b[b.g(c)]=!0,Ik(b,0,b.a.length-1))}Fk.prototype.nc=function(){return this.a.length};Fk.prototype.Ka=function(){return 0===this.a.length}; -function Hk(b,c){for(var d=b.a,e=b.c,f=d.length,g=d[c],h=e[c],k=c;c>1;){var m=2*c+1,n=2*c+2,m=nc;){var h=d-1>>1;if(b[h]>g)e[d]=e[h],b[d]=b[h],d=h;else break}e[d]=f;b[d]=g}function Jk(b){var c=b.i,d=b.a,e=b.c,f=0,g=d.length,h,k,m;for(k=0;k>1)-1;0<=c;c--)Hk(b,c)};function Kk(b,c){Fk.call(this,function(c){return b.apply(null,c)},function(b){return b[0].tb()});this.l=c;this.f=0}y(Kk,Fk);Kk.prototype.j=function(b){b=b.target;var c=b.state;if(2===c||3===c||4===c)Yc(b,"change",this.j,!1,this),--this.f,this.l()};function Lk(b,c,d){for(var e=0,f;b.fd.a.length)d=!1;else{var e=Date.now()-d.j,f=d.a.length-3;if(d.a[f+2]e;)g-=3;var e=d.a[f+2]-d.a[g+2],h=d.a[f]-d.a[g],f=d.a[f+1]-d.a[g+1];d.g=Math.atan2(f,h);d.c=Math.sqrt(h*h+f*f)/e;d=d.c>d.b}}d&&(d=this.a,d=(d.b-d.c)/d.f,f=this.a.g,g=c.Ta(),this.i=Nk(this.a,g),b.Ma(this.i),g=b.Oa(g),d=b.Fa([g[0]-d*Math.cos(f),g[1]-d*Math.sin(f)]),d=c.Wd(d),c.jb(d));Tf(c,-1);b.render(); -return!1}this.f=null;return!0}function el(b){if(0this.D&&(this.a=!0));this.i=d;b=b.map;d=fh(b.a);e=cl(this.j);e[0]-=d.x;e[1]-=d.y;this.f=b.Fa(e);this.a&&(d=b.aa(),e=d.Ea(),b.render(),Pk(b,d,e+c,this.f))}function El(b){if(2>this.j.length){b=b.map;var c=b.aa();Tf(c,-1);if(this.a){var d=c.Ea(),e=this.f,f=this.A,d=c.constrainRotation(d,0);Pk(b,c,d,e,f)}return!1}return!0} -function Cl(b){return 2<=this.j.length?(b=b.map,this.f=null,this.i=void 0,this.a=!1,this.l=0,this.C||Tf(b.aa(),1),b.render(),!0):!1}Bl.prototype.xc=te;function Fl(b){al.call(this,{handleDownEvent:Gl,handleDragEvent:Hl,handleUpEvent:Il});b=b?b:{};this.f=null;this.l=void 0!==b.duration?b.duration:400;this.a=void 0;this.i=1}y(Fl,al);function Hl(b){var c=1,d=this.j[0],e=this.j[1],f=d.clientX-e.clientX,d=d.clientY-e.clientY,f=Math.sqrt(f*f+d*d);void 0!==this.a&&(c=this.a/f);this.a=f;1!=c&&(this.i=c);b=b.map;var f=b.aa(),d=f.$(),e=fh(b.a),g=cl(this.j);g[0]-=e.x;g[1]-=e.y;this.f=b.Fa(g);b.render();Rk(b,f,d*c,this.f)} -function Il(b){if(2>this.j.length){b=b.map;var c=b.aa();Tf(c,-1);var d=c.$(),e=this.f,f=this.l,d=c.constrainResolution(d,0,this.i-1);Rk(b,c,d,e,f);return!1}return!0}function Gl(b){return 2<=this.j.length?(b=b.map,this.f=null,this.a=void 0,this.i=1,this.C||Tf(b.aa(),1),b.render(),!0):!1}Fl.prototype.xc=te;function Jl(b){b=b?b:{};var c=new og,d=new Mk(-.005,.05,100);(void 0!==b.altShiftDragRotate?b.altShiftDragRotate:1)&&c.push(new hl);(void 0!==b.doubleClickZoom?b.doubleClickZoom:1)&&c.push(new Sk({delta:b.zoomDelta,duration:b.zoomDuration}));(void 0!==b.dragPan?b.dragPan:1)&&c.push(new dl({kinetic:d}));(void 0!==b.pinchRotate?b.pinchRotate:1)&&c.push(new Bl);(void 0!==b.pinchZoom?b.pinchZoom:1)&&c.push(new Fl({duration:b.zoomDuration}));if(void 0!==b.keyboard?b.keyboard:1)c.push(new vl),c.push(new xl({delta:b.zoomDelta, -duration:b.zoomDuration}));(void 0!==b.mouseWheelZoom?b.mouseWheelZoom:1)&&c.push(new zl({duration:b.zoomDuration}));(void 0!==b.shiftDragZoom?b.shiftDragZoom:1)&&c.push(new ul({duration:b.zoomDuration}));return c};function Kl(b){var c=b||{};b=Ub(c);delete b.layers;c=c.layers;ak.call(this,b);this.b=[];this.a={};C(this,kd("layers"),this.Fk,!1,this);c?ga(c)&&(c=new og(c.slice())):c=new og;this.gh(c)}y(Kl,ak);l=Kl.prototype;l.he=function(){this.qb()&&this.s()}; -l.Fk=function(){this.b.forEach(Zc);this.b.length=0;var b=this.Pc();this.b.push(C(b,"add",this.Ek,!1,this),C(b,"remove",this.Gk,!1,this));Ib(this.a,function(b){b.forEach(Zc)});Rb(this.a);var b=b.a,c,d,e;c=0;for(d=b.length;cf;++f)e[f]=c.charCodeAt(d++)|c.charCodeAt(d++)<<8|c.charCodeAt(d++)<<16|c.charCodeAt(d++)<<24;else for(f=0;16>f;++f)e[f]=c[d++]|c[d++]<<8|c[d++]<<16|c[d++]<<24;c=b.a[0];d=b.a[1];var f=b.a[2],g=b.a[3],h=0,h=c+(g^d&(f^g))+e[0]+3614090360&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[1]+3905402710&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[2]+606105819&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^ -c))+e[3]+3250441966&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[4]+4118548399&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[5]+1200080426&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[6]+2821735955&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[7]+4249261313&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[8]+1770035416&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[9]+2336552879&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+ -(d^g&(c^d))+e[10]+4294925233&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[11]+2304563134&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[12]+1804603682&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[13]+4254626195&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[14]+2792965006&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[15]+1236535329&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(f^g&(d^f))+e[1]+4129170786&4294967295;c=d+(h<<5&4294967295| -h>>>27);h=g+(d^f&(c^d))+e[6]+3225465664&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[11]+643717713&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[0]+3921069994&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(f^g&(d^f))+e[5]+3593408605&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[10]+38016083&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[15]+3634488961&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[4]+3889429448&4294967295;d=f+(h<<20&4294967295| -h>>>12);h=c+(f^g&(d^f))+e[9]+568446438&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[14]+3275163606&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[3]+4107603335&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[8]+1163531501&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(f^g&(d^f))+e[13]+2850285829&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[2]+4243563512&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[7]+1735328473&4294967295;f=g+(h<<14&4294967295| -h>>>18);h=d+(g^c&(f^g))+e[12]+2368359562&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(d^f^g)+e[5]+4294588738&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[8]+2272392833&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[11]+1839030562&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[14]+4259657740&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[1]+2763975236&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[4]+1272893353&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^ -c^d)+e[7]+4139469664&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[10]+3200236656&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[13]+681279174&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[0]+3936430074&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[3]+3572445317&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[6]+76029189&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[9]+3654602809&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[12]+3873151461&4294967295; -g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[15]+530742520&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[2]+3299628645&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(f^(d|~g))+e[0]+4096336452&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[7]+1126891415&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[14]+2878612391&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[5]+4237533241&4294967295;d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[12]+1700485571&4294967295;c=d+ -(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[3]+2399980690&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[10]+4293915773&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[1]+2240044497&4294967295;d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[8]+1873313359&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[15]+4264355552&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[6]+2734768916&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[13]+1309151649&4294967295; -d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[4]+4149444226&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[11]+3174756917&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[2]+718787259&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[9]+3951481745&4294967295;b.a[0]=b.a[0]+c&4294967295;b.a[1]=b.a[1]+(f+(h<<21&4294967295|h>>>11))&4294967295;b.a[2]=b.a[2]+f&4294967295;b.a[3]=b.a[3]+g&4294967295} -function $l(b,c){var d;ca(d)||(d=c.length);for(var e=d-b.c,f=b.g,g=b.b,h=0;hc.b?c.c:2*c.c)-c.b);b[0]=128;for(var d=1;dd;++d)for(var f=0;32>f;f+=8)b[e++]=c.a[d]>>> -f&255;if(8192>=b.length)c=String.fromCharCode.apply(null,b);else for(c="",d=0;dthis.g&&(this.g=this.b.lineWidth,this.f=null)}; -function Nm(b,c,d){Dm.call(this,b,c,d);this.b={pg:void 0,hd:void 0,cd:void 0,dd:null,ed:void 0,fd:void 0,gd:void 0,fillStyle:void 0,strokeStyle:void 0,lineCap:void 0,lineDash:null,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0}}y(Nm,Dm); -function Om(b,c,d,e,f){var g=b.b,h=[1];b.c.push(h);b.a.push(h);var k,h=0;for(k=e.length;hthis.g&&(this.g=d.lineWidth,this.f=null)):(d.strokeStyle=void 0,d.lineCap=void 0,d.lineDash=null,d.lineJoin=void 0,d.lineWidth=void 0,d.miterLimit=void 0)}; -function Pm(b){var c=b.b,d=c.fillStyle,e=c.strokeStyle,f=c.lineCap,g=c.lineDash,h=c.lineJoin,k=c.lineWidth,m=c.miterLimit;void 0!==d&&c.pg!=d&&(b.c.push([9,d]),c.pg=c.fillStyle);void 0===e||c.hd==e&&c.cd==f&&c.dd==g&&c.ed==h&&c.fd==k&&c.gd==m||(b.c.push([10,e,k,f,h,m,g]),c.hd=e,c.cd=f,c.dd=g,c.ed=h,c.fd=k,c.gd=m)}function Qm(b,c,d){Dm.call(this,b,c,d);this.ia=this.G=this.D=null;this.l="";this.C=this.A=this.u=this.B=0;this.i=this.j=this.b=null}y(Qm,Dm); -Qm.prototype.Hb=function(b,c,d,e,f,g){if(""!==this.l&&this.i&&(this.b||this.j)){if(this.b){f=this.b;var h=this.D;if(!h||h.fillStyle!=f.fillStyle){var k=[9,f.fillStyle];this.c.push(k);this.a.push(k);h?h.fillStyle=f.fillStyle:this.D={fillStyle:f.fillStyle}}}this.j&&(f=this.j,h=this.G,h&&h.lineCap==f.lineCap&&h.lineDash==f.lineDash&&h.lineJoin==f.lineJoin&&h.lineWidth==f.lineWidth&&h.miterLimit==f.miterLimit&&h.strokeStyle==f.strokeStyle||(k=[10,f.strokeStyle,f.lineWidth,f.lineCap,f.lineJoin,f.miterLimit, -f.lineDash,!1],this.c.push(k),this.a.push(k),h?(h.lineCap=f.lineCap,h.lineDash=f.lineDash,h.lineJoin=f.lineJoin,h.lineWidth=f.lineWidth,h.miterLimit=f.miterLimit,h.strokeStyle=f.strokeStyle):this.G={lineCap:f.lineCap,lineDash:f.lineDash,lineJoin:f.lineJoin,lineWidth:f.lineWidth,miterLimit:f.miterLimit,strokeStyle:f.strokeStyle}));f=this.i;h=this.ia;h&&h.font==f.font&&h.textAlign==f.textAlign&&h.textBaseline==f.textBaseline||(k=[11,f.font,f.textAlign,f.textBaseline],this.c.push(k),this.a.push(k),h? -(h.font=f.font,h.textAlign=f.textAlign,h.textBaseline=f.textBaseline):this.ia={font:f.font,textAlign:f.textAlign,textBaseline:f.textBaseline});Fm(this,g);f=this.coordinates.length;b=Em(this,b,c,d,e,!1);b=[5,f,b,this.l,this.B,this.u,this.A,this.C,!!this.b,!!this.j];this.c.push(b);this.a.push(b);Im(this,g)}}; -Qm.prototype.ab=function(b){if(b){var c=b.a;c?(c=c.a,c=vg(c?c:Tl),this.b?this.b.fillStyle=c:this.b={fillStyle:c}):this.b=null;var d=b.l;if(d){var c=d.a,e=d.f,f=d.b,g=d.g,h=d.c,d=d.j,e=void 0!==e?e:"round",f=f?f.slice():Ul,g=void 0!==g?g:"round",h=void 0!==h?h:1,d=void 0!==d?d:10,c=vg(c?c:Vl);if(this.j){var k=this.j;k.lineCap=e;k.lineDash=f;k.lineJoin=g;k.lineWidth=h;k.miterLimit=d;k.strokeStyle=c}else this.j={lineCap:e,lineDash:f,lineJoin:g,lineWidth:h,miterLimit:d,strokeStyle:c}}else this.j=null; -var m=b.f,c=b.g,e=b.j,f=b.i,h=b.c,d=b.b,g=b.B,k=b.u;b=void 0!==m?m:"10px sans-serif";g=void 0!==g?g:"center";k=void 0!==k?k:"middle";this.i?(m=this.i,m.font=b,m.textAlign=g,m.textBaseline=k):this.i={font:b,textAlign:g,textBaseline:k};this.l=void 0!==d?d:"";this.B=void 0!==c?c:0;this.u=void 0!==e?e:0;this.A=void 0!==f?f:0;this.C=void 0!==h?h:1}else this.l=""};function Rm(b,c,d,e){this.u=b;this.g=c;this.B=d;this.j=e;this.c={};this.i=Pi(1,1);this.l=Dd()} -function Sm(b){for(var c in b.c){var d=b.c[c],e;for(e in d)d[e].ve()}}Rm.prototype.f=function(b,c,d,e,f){var g=this.l;ik(g,.5,.5,1/c,-1/c,-d,-b[0],-b[1]);var h=this.i;h.clearRect(0,0,1,1);var k;void 0!==this.j&&(k=Od(),Pd(k,b),Sd(k,c*this.j,k));return Tm(this,h,g,d,e,function(b){if(0za&&(za=Ka,n=Ra)}if(0===za){h=null;break a}za=h[n];h[n]=h[m];h[m]=za;for(n=m+1;nthis.a/2){var c=[[b.source[0][0],b.source[0][1]],[b.source[1][0],b.source[1][1]],[b.source[2][0],b.source[2][1]]];c[0][0]-p>this.a/2&&(c[0][0]-=this.a);c[1][0]-p>this.a/2&&(c[1][0]-=this.a);c[2][0]-p>this.a/2&&(c[2][0]-=this.a);Math.max(c[0][0],c[1][0],c[2][0])-Math.min(c[0][0],c[1][0],c[2][0])q,t=!1;if(0b.u),t)){Math.abs(c[0]-e[0])<=Math.abs(c[1]-e[1])?(r=[(d[0]+e[0])/2,(d[1]+e[1])/2],p=b.c(r),q=[(f[0]+c[0])/2,(f[1]+c[1])/2],t=b.c(q),fn(b,c,d,r,q,g,h,p,t,n-1),fn(b,q,r,e,f,t,p,k,m,n-1)):(r=[(c[0]+d[0])/2,(c[1]+d[1])/2],p=b.c(r),q=[(e[0]+f[0])/2,(e[1]+f[1])/2],t=b.c(q),fn(b,c,r,q,f,g,p,t,m,n-1),fn(b,r,d,e,q,p,h,k,t,n-1));return}if(r){if(!b.B)return;b.l=!0}b.f.push({source:[g,k,m],target:[c,e,f]});b.f.push({source:[g,h,k],target:[c,d,e]})}} -function gn(b){var c=Od();b.f.forEach(function(b){b=b.source;Pd(c,b[0]);Pd(c,b[1]);Pd(c,b[2])});return c};function hn(b,c,d,e,f,g){this.C=c;this.A=b.J();var h=c.J(),k=h?oe(d,h):d,h=bn(b,c,me(k),e);this.B=new en(b,c,k,this.A,.5*h);this.i=e;this.g=d;b=gn(this.B);this.u=(this.c=g(b,h,f))?this.c.b:1;this.f=this.l=null;f=2;g=[];this.c&&(f=0,g=this.c.j);gk.call(this,d,e,this.u,f,g)}y(hn,gk);hn.prototype.X=function(){1==this.state&&(Zc(this.f),this.f=null);hn.da.X.call(this)};hn.prototype.a=function(){return this.l}; -function jn(b){var c=b.c.state;2==c&&(b.l=dn(ke(b.g)/b.i,le(b.g)/b.i,b.u,b.c.$(),0,b.i,b.g,b.B,[{extent:b.c.J(),image:b.c.a()}]));b.state=c;hk(b)}hn.prototype.load=function(){if(0==this.state){this.state=1;hk(this);var b=this.c.state;2==b||3==b?jn(this):(this.f=this.c.Qa("change",function(){var b=this.c.state;if(2==b||3==b)Zc(this.f),this.f=null,jn(this)},!1,this),this.c.load())}};function kn(b){yh.call(this,{attributions:b.attributions,extent:b.extent,logo:b.logo,projection:b.projection,state:b.state});this.G=void 0!==b.resolutions?b.resolutions:null;this.a=null;this.va=0}y(kn,yh);function ln(b,c){if(b.G){var d=wb(b.G,c,0);c=b.G[d]}return c} -kn.prototype.C=function(b,c,d,e){var f=this.f;if(f&&e&&!Xe(f,e)){if(this.a){if(this.va==this.c&&Xe(this.a.C,e)&&this.a.$()==c&&this.a.b==d&&be(this.a.J(),b))return this.a;this.a.Ec();this.a=null}this.a=new hn(f,e,b,c,d,ra(function(b,c,d){return this.pd(b,c,d,f)},this));this.va=this.c;return this.a}f&&(e=f);return this.pd(b,c,d,e)};kn.prototype.D=function(b){b=b.target;switch(b.state){case 1:this.o(new mn(nn,b));break;case 2:this.o(new mn(on,b));break;case 3:this.o(new mn(pn,b))}}; -function qn(b,c){b.a().src=c}function mn(b,c){vc.call(this,b);this.image=c}y(mn,vc);var nn="imageloadstart",on="imageloadend",pn="imageloaderror";function rn(b){kn.call(this,{attributions:b.attributions,logo:b.logo,projection:b.projection,resolutions:b.resolutions,state:void 0!==b.state?b.state:void 0});this.ga=b.canvasFunction;this.Z=null;this.ea=0;this.pa=void 0!==b.ratio?b.ratio:1.5}y(rn,kn);rn.prototype.pd=function(b,c,d,e){c=ln(this,c);var f=this.Z;if(f&&this.ea==this.c&&f.$()==c&&f.b==d&&Xd(f.J(),b))return f;b=b.slice();qe(b,this.pa);(e=this.ga(b,c,d,[ke(b)/c*d,le(b)/c*d],e))&&(f=new $m(b,c,d,this.j,e));this.Z=f;this.ea=this.c;return f};function sn(b){id.call(this);this.wa=void 0;this.a="geometry";this.f=null;this.g=void 0;this.b=null;C(this,kd(this.a),this.ge,!1,this);void 0!==b&&(b instanceof bf||!b?this.La(b):this.I(b))}y(sn,id);l=sn.prototype;l.clone=function(){var b=new sn(this.P());b.vc(this.a);var c=this.W();c&&b.La(c.clone());(c=this.f)&&b.vf(c);return b};l.W=function(){return this.get(this.a)};l.Na=function(){return this.wa};l.Mj=function(){return this.a};l.vl=function(){return this.f};l.Qb=function(){return this.g}; -l.wl=function(){this.s()};l.ge=function(){this.b&&(Zc(this.b),this.b=null);var b=this.W();b&&(this.b=C(b,"change",this.wl,!1,this));this.s()};l.La=function(b){this.set(this.a,b)};l.vf=function(b){this.g=(this.f=b)?tn(b):void 0;this.s()};l.ic=function(b){this.wa=b;this.s()};l.vc=function(b){Yc(this,kd(this.a),this.ge,!1,this);this.a=b;C(this,kd(this.a),this.ge,!1,this);this.ge()};function tn(b){if(!ka(b)){var c;c=ga(b)?b:[b];b=function(){return c}}return b};function un(b){b.prototype.then=b.prototype.then;b.prototype.$goog_Thenable=!0}function vn(b){if(!b)return!1;try{return!!b.$goog_Thenable}catch(c){return!1}};function wn(b,c,d){this.f=d;this.b=b;this.g=c;this.c=0;this.a=null}wn.prototype.get=function(){var b;0d?b[1]="?":d==c.length-1&&(b[1]=void 0)}return b.join("")}function mo(b,c,d){if(ga(c))for(var e=0;e=b[0]&&c[3]>=b[1]}function q(b,c,d,e,f){for(var g=[c,d],h;g.length;)d=g.pop(),c=g.pop(),d-c<=e||(h=c+Math.ceil((d-c)/e/2)*e,r(b,c,d,h,f),g.push(c,h,h,d))}function r(b,c,d,e,f){for(var g,h,k,m,n;d>c;){600h-g/2?-1:1),k=Math.max(c,Math.floor(e-h*m/g+n)),h=Math.min(d,Math.floor(e+(g-h)*m/g+n)),r(b,k,h,e,f));g=b[e];h=c;m=d;t(b,c,e);for(0f(b[h],g);)h++;for(;0this.af)this.fj(e,c),c--;else break;this.Ui(d,e,c)},fj:function(b,c){var e=b[c],f=e.children.length,g=this.gg;this.Vi(e,g,f);f=this.Wi(e,g,f);f={children:e.children.splice(f,e.children.length-f),height:e.height};e.Pa&&(f.Pa=!0);d(e,this.cb);d(f,this.cb);c?b[c-1].children.push(f):this.ig(e, -f)},ig:function(b,c){this.data={children:[b,c],height:b.height+1};d(this.data,this.cb)},Wi:function(b,c,d){var f,g,h,m,n,p,q;n=p=Infinity;for(f=c;f<=d-c;f++)g=e(b,0,f,this.cb),h=e(b,f,d,this.cb),m=Math.max(0,Math.min(g[2],h[2])-Math.max(g[0],h[0]))*Math.max(0,Math.min(g[3],h[3])-Math.max(g[1],h[1])),g=k(g)+k(h),m=c;p--)q=b.children[p],f(k,b.Pa?g(q):q.bbox),n+=m(k);return n},Ui:function(b,c,d){for(;0<=d;d--)f(c[d].bbox,b)},Yi:function(b){for(var c=b.length-1,e;0<=c;c--)0===b[c].children.length?0B||this.b[1]> -A)?(v.width=B,v.height=A,this.b=[B,A],this.B=!Bm(this.b),this.f=null):(B=this.b[0],A=this.b[1],(v=n!=this.C)||(v=this.f,v=!(v.a<=z.a&&z.f<=v.f&&v.c<=z.c&&z.b<=v.b)),v&&(this.f=null))):(O=Pi(B,A),this.j=O.canvas,this.b=[B,A],this.i=O,this.B=!Bm(this.b));var K,I;this.f?(A=this.f,B=kg(A)):(B/=p[0],A/=p[1],K=z.a-Math.floor((B-kg(z))/2),I=z.c-Math.floor((A-jg(z))/2),this.C=n,this.G=p[0],this.D=p[1],this.f=new gg(K,K+B-1,I,I+A-1),this.l=Array(B*A),A=this.f);v={};v[n]={};var G=[],la=this.bd(h,f,v),Ea=g.b(), -L=Od(),za=new gg(0,0,0,0),Ra,Ka,kb;for(I=z.a;I<=z.f;++I)for(kb=z.c;kb<=z.b;++kb)Ka=h.Ob(n,I,kb,d,f),K=Ka.state,2==K||4==K||3==K&&!Ea?v[n][fg(Ka.a)]=Ka:(Ra=Eh(k,Ka.a,la,za,L),Ra||(G.push(Ka),(Ra=Gh(k,Ka.a,za,L))&&la(n+1,Ra)));la=0;for(Ra=G.length;lam[2];)++n,p=k*n,p=zm(this,b,p),q.b(r,f,p,h,g),c-=k;p=zm(this,b,0)}r!=d&&(ym(this,"render",r,b,p),d.drawImage(r.canvas,0,0));r.globalAlpha=t}ym(this,"postcompose",d,b,p)};Sp.prototype.Za=function(b,c,d,e){if(this.b){var f=c.viewState.resolution,g=c.viewState.rotation,h=this.a,k=c.layerStates[w(h)],m={};return this.b.f(b,f,g,k.rb?c.skippedFeatureUids:{},function(b){var c=w(b).toString();if(!(c in m))return m[c]=!0,d.call(e,b,h)})}};Sp.prototype.A=function(){mk(this)}; -Sp.prototype.zd=function(b){function c(b){var c,e=b.Qb();e?c=e.call(b,n):(e=d.b)&&(c=e(b,n));if(c){if(c){var f,g=!1,e=0;for(f=c.length;eG&&Ng(this.target,z.target,0)}else{if(!b.viewHints[0]&&!b.viewHints[1]){O=Fh(z.g,r,z.b[0],A);G=[];v=I=void 0;for(v in z.c)I=z.c[v],O.contains(I.a)||G.push(I);Ea= -O=void 0;O=0;for(Ea=G.length;O=n;){x=b.b[g];d=b.u[g]; -e=w(d).toString();if(void 0===k[e]&&d.W()&&(void 0===p||pe(p,d.W().J()))&&(q.clear(q.COLOR_BUFFER_BIT|q.DEPTH_BUFFER_BIT),q.drawElements(4,t-x,f,x*c),t=m(d))){b=t;break a}t=x;g--}b=void 0}else q.clear(q.COLOR_BUFFER_BIT|q.DEPTH_BUFFER_BIT),Jq(b,q,c,k,b.i,b.j),b=(b=m(null))?b:void 0;x=b}q.disableVertexAttribArray(r.f);q.disableVertexAttribArray(r.a);q.disableVertexAttribArray(r.g);q.disableVertexAttribArray(r.c);q.disableVertexAttribArray(r.b);return x} -function Jq(b,c,d,e,f,g){var h=d.b?5125:5123;d=d.b?4:2;if(Qb(e)){var k;b=0;e=f.length;for(k=0;bc[0]||c[0]>f[0]||0> -c[1]||c[1]>f[1])&&(this.i||(this.i=Pi(1,1)),this.i.clearRect(0,0,1,1),this.i.drawImage(this.f.a(),c[0],c[1],1,1,0,0,1,1),0e?c[0]=e-d:0>f&&(c[0]= -Math.abs(f)+d),0>g?c[1]=g-d:0>h&&(c[1]=Math.abs(h)+d),0===c[0]&&0===c[1])||(d=b.aa().Ta(),e=b.Oa(d),c=[e[0]+c[0],e[1]+c[1]],this.g&&(this.g.source=d,b.Ma(Zf(this.g))),b.aa().jb(b.Fa(c)))}}};l.Pk=function(){nr(this)};l.Uh=function(b){this.set("element",b)};l.setMap=function(b){this.set("map",b)};l.Zh=function(b){this.set("offset",b)};l.xf=function(b){this.set("position",b)}; -function or(b,c){var d=Cg(b),e=new yg(0,0),f;f=d?Cg(d):document;f=!Zb||9<=lc||Sg(Ag(f))?f.documentElement:f.body;b!=f&&(f=eh(b),d=Tg(Ag(d)),e.x=f.left+d.x,e.y=f.top+d.y);return[e.x,e.y,e.x+c[0],e.y+c[1]]}l.bi=function(b){this.set("positioning",b)};function pr(b,c){b.a.visible!==c&&(ih(b.b,c),b.a.visible=c)} -function nr(b){var c=b.se(),d=b.Yg();if(void 0!==c&&c.b&&void 0!==d){var d=c.Oa(d),e=c.Ra(),c=b.b.style,f=b.Eg(),g=b.Fg(),h=f[0],f=f[1];if("bottom-right"==g||"center-right"==g||"top-right"==g)""!==b.a.oe&&(b.a.oe=c.left=""),h=Math.round(e[0]-d[0]-h)+"px",b.a.Ne!=h&&(b.a.Ne=c.right=h);else{""!==b.a.Ne&&(b.a.Ne=c.right="");if("bottom-center"==g||"center-center"==g||"top-center"==g)h-=gh(b.b).width/2;h=Math.round(d[0]+h)+"px";b.a.oe!=h&&(b.a.oe=c.left=h)}if("bottom-left"==g||"bottom-center"==g||"bottom-right"== -g)""!==b.a.Oe&&(b.a.Oe=c.top=""),d=Math.round(e[1]-d[1]-f)+"px",b.a.Td!=d&&(b.a.Td=c.bottom=d);else{""!==b.a.Td&&(b.a.Td=c.bottom="");if("center-left"==g||"center-center"==g||"center-right"==g)f-=gh(b.b).height/2;d=Math.round(d[1]+f)+"px";b.a.Oe!=d&&(b.a.Oe=c.top=d)}pr(b,!0)}else pr(b,!1)};function qr(b){b=b?b:{};this.j=void 0!==b.collapsed?b.collapsed:!0;this.i=void 0!==b.collapsible?b.collapsible:!0;this.i||(this.j=!1);var c=b.className?b.className:"ol-overviewmap",d=b.tipLabel?b.tipLabel:"Overview map",e=b.collapseLabel?b.collapseLabel:"\u00ab";this.A=ia(e)?Hg("SPAN",{},e):e;e=b.label?b.label:"\u00bb";this.C=ia(e)?Hg("SPAN",{},e):e;d=Hg("BUTTON",{type:"button",title:d},this.i&&!this.j?this.A:this.C);C(d,"click",this.Rl,!1,this);var e=Hg("DIV","ol-overviewmap-map"),f=this.b=new S({controls:new og, -interactions:new og,target:e,view:b.view});b.layers&&b.layers.forEach(function(b){f.jg(b)},this);var g=Hg("DIV","ol-overviewmap-box");this.l=new mr({position:[0,0],positioning:"bottom-left",element:g});this.b.kg(this.l);c=Hg("DIV",c+" ol-unselectable ol-control"+(this.j&&this.i?" ol-collapsed":"")+(this.i?"":" ol-uncollapsible"),e,d);qh.call(this,{element:c,render:b.render?b.render:rr,target:b.target})}y(qr,qh);l=qr.prototype; -l.setMap=function(b){var c=this.a;b!==c&&(c&&(c=c.aa())&&Yc(c,kd("rotation"),this.ie,!1,this),qr.da.setMap.call(this,b),b&&(this.u.push(C(b,"propertychange",this.Ik,!1,this)),0===this.b.Xg().$b()&&this.b.Xh(b.oc()),b=b.aa()))&&(C(b,kd("rotation"),this.ie,!1,this),Sf(b)&&(this.b.Uc(),sr(this)))};l.Ik=function(b){"view"===b.key&&((b=b.oldValue)&&Yc(b,kd("rotation"),this.ie,!1,this),b=this.a.aa(),C(b,kd("rotation"),this.ie,!1,this))};l.ie=function(){this.b.aa().te(this.a.aa().Ea())}; -function rr(){var b=this.a,c=this.b;if(b.b&&c.b){var d=b.Ra(),b=b.aa().Zc(d),e=c.Ra(),d=c.aa().Zc(e),f=c.Oa(he(b)),c=c.Oa(fe(b)),c=new zg(Math.abs(f[0]-c[0]),Math.abs(f[1]-c[1])),f=e[0],e=e[1];c.width<.1*f||c.height<.1*e||c.width>.75*f||c.height>.75*e?sr(this):Xd(d,b)||(b=this.b,d=this.a.aa(),b.aa().jb(d.Ta()))}tr(this)}function sr(b){var c=b.a;b=b.b;var d=c.Ra(),c=c.aa().Zc(d),d=b.Ra();b=b.aa();qe(c,1/(.1*Math.pow(2,Math.log(7.5)/Math.LN2/2)));b.jf(c,d)} -function tr(b){var c=b.a,d=b.b;if(c.b&&d.b){var e=c.Ra(),f=c.aa(),g=d.aa();d.Ra();var c=f.Ea(),h=b.l,d=b.l.re(),f=f.Zc(e),e=g.$(),g=ee(f),f=ge(f),k;if(b=b.a.aa().Ta())k=[g[0]-b[0],g[1]-b[1]],wd(k,c),rd(k,b);h.xf(k);d&&(k=new zg(Math.abs((g[0]-f[0])/e),Math.abs((f[1]-g[1])/e)),c=Sg(Ag(Cg(d))),!Zb||jc("10")||c&&jc("8")?(d=d.style,ac?d.MozBoxSizing="border-box":bc?d.WebkitBoxSizing="border-box":d.boxSizing="border-box",d.width=Math.max(k.width,0)+"px",d.height=Math.max(k.height,0)+"px"):(b=d.style,c? -(c=lh(d,"padding"),d=oh(d),b.pixelWidth=k.width-d.left-c.left-c.right-d.right,b.pixelHeight=k.height-d.top-c.top-c.bottom-d.bottom):(b.pixelWidth=k.width,b.pixelHeight=k.height)))}}l.Rl=function(b){b.preventDefault();ur(this)};function ur(b){Yg(b.element,"ol-collapsed");b.j?Pg(b.A,b.C):Pg(b.C,b.A);b.j=!b.j;var c=b.b;b.j||c.b||(c.Uc(),sr(b),Xc(c,"postrender",function(){tr(this)},!1,b))}l.Ql=function(){return this.i}; -l.Tl=function(b){this.i!==b&&(this.i=b,Yg(this.element,"ol-uncollapsible"),!b&&this.j&&ur(this))};l.Sl=function(b){this.i&&this.j!==b&&ur(this)};l.Pl=function(){return this.j};l.ak=function(){return this.b};function vr(b){b=b?b:{};var c=b.className?b.className:"ol-scale-line";this.l=Hg("DIV",c+"-inner");this.i=Hg("DIV",c+" ol-unselectable",this.l);this.C=null;this.A=void 0!==b.minWidth?b.minWidth:64;this.b=!1;this.S=void 0;this.D="";this.j=null;qh.call(this,{element:this.i,render:b.render?b.render:wr,target:b.target});C(this,kd("units"),this.Z,!1,this);this.T(b.units||"metric")}y(vr,qh);var xr=[1,2,5];vr.prototype.G=function(){return this.get("units")}; -function wr(b){(b=b.frameState)?this.C=b.viewState:this.C=null;yr(this)}vr.prototype.Z=function(){yr(this)};vr.prototype.T=function(b){this.set("units",b)}; -function yr(b){var c=b.C;if(c){var d=c.center,e=c.projection,c=e.getPointResolution(c.resolution,d),f=e.c,g=b.G();"degrees"!=f||"metric"!=g&&"imperial"!=g&&"us"!=g&&"nautical"!=g?"degrees"!=f&&"degrees"==g?(b.j||(b.j=Je(e,Fe("EPSG:4326"))),d=Math.cos(Wa(b.j(d)[1])),e=Be.radius,e/=Ce[f],c*=180/(Math.PI*d*e)):b.j=null:(b.j=null,d=Math.cos(Wa(d[1])),c*=Math.PI*d*Be.radius/180);d=b.A*c;f="";"degrees"==g?d<1/60?(f="\u2033",c*=3600):1>d?(f="\u2032",c*=60):f="\u00b0":"imperial"==g?.9144>d?(f="in",c/=.0254): -1609.344>d?(f="ft",c/=.3048):(f="mi",c/=1609.344):"nautical"==g?(c/=1852,f="nm"):"metric"==g?1>d?(f="mm",c*=1E3):1E3>d?f="m":(f="km",c/=1E3):"us"==g&&(.9144>d?(f="in",c*=39.37):1609.344>d?(f="ft",c/=.30480061):(f="mi",c/=1609.3472));for(d=3*Math.floor(Math.log(b.A*c)/Math.log(10));;){e=xr[d%3]*Math.pow(10,Math.floor(d/3));g=Math.round(e/c);if(isNaN(g)){ih(b.i,!1);b.b=!1;return}if(g>=b.A)break;++d}c=e+" "+f;b.D!=c&&(b.l.innerHTML=c,b.D=c);b.S!=g&&(b.l.style.width=g+"px",b.S=g);b.b||(ih(b.i,!0),b.b= -!0)}else b.b&&(ih(b.i,!1),b.b=!1)};function zr(b){pc.call(this);this.c=b;this.a={}}y(zr,pc);var Ar=[];zr.prototype.Qa=function(b,c,d,e){ga(c)||(c&&(Ar[0]=c.toString()),c=Ar);for(var f=0;fd.height?(this.i=1,d=new $g(0,0,e,0)):(this.i=Kr,d=new $g(0,0,0,c));this.b.a=d||new $g(NaN,NaN,NaN,NaN);this.C=!0}b=b.frameState.viewState.resolution;b!==this.j&&(this.j=b,b=1-Qf(this.a.aa())(b),d=this.b,c=Qg(this.element),1==this.i?ch(c,d.a.left+d.a.width*b):ch(c,d.a.left, -d.a.top+d.a.height*b))}}l.sk=function(b){var c=this.a,d=c.aa(),e=d.$();c.Ma(bg({resolution:e,duration:this.A,easing:Vf}));b=Mr(this,Nr(this,b.offsetX-this.l[0]/2,b.offsetY-this.l[1]/2));d.Ub(d.constrainResolution(b))};l.vk=function(){Tf(this.a.aa(),1)};l.tk=function(b){this.j=Mr(this,Nr(this,b.left,b.top));this.a.aa().Ub(this.j)};l.uk=function(){var b=this.a,c=b.aa();Tf(c,-1);b.Ma(bg({resolution:this.j,duration:this.A,easing:Vf}));b=c.constrainResolution(this.j);c.Ub(b)}; -function Nr(b,c,d){var e=b.b.a;return Sa(1===b.i?(c-e.left)/e.width:(d-e.top)/e.height,0,1)}function Mr(b,c){return Pf(b.a.aa())(1-c)};function Or(b){b=b?b:{};this.b=b.extent?b.extent:null;var c=b.className?b.className:"ol-zoom-extent",d=Hg("BUTTON",{type:"button",title:b.tipLabel?b.tipLabel:"Fit to extent"},b.label?b.label:"E");C(d,"click",this.j,!1,this);c=Hg("DIV",c+" ol-unselectable ol-control",d);qh.call(this,{element:c,target:b.target})}y(Or,qh);Or.prototype.j=function(b){b.preventDefault();var c=this.a;b=c.aa();var d=this.b?this.b:b.g.J(),c=c.Ra();b.jf(d,c)};function Pr(b){id.call(this);b=b?b:{};this.a=null;C(this,kd("tracking"),this.ul,!1,this);this.uf(void 0!==b.tracking?b.tracking:!1)}y(Pr,id);l=Pr.prototype;l.X=function(){this.uf(!1);Pr.da.X.call(this)}; -l.On=function(b){b=b.a;if(null!==b.alpha){var c=Wa(b.alpha);this.set("alpha",c);"boolean"==typeof b.absolute&&b.absolute?this.set("heading",c):ja(b.webkitCompassHeading)&&-1!=b.webkitCompassAccuracy&&this.set("heading",Wa(b.webkitCompassHeading))}null!==b.beta&&this.set("beta",Wa(b.beta));null!==b.gamma&&this.set("gamma",Wa(b.gamma));this.s()};l.Bj=function(){return this.get("alpha")};l.Ej=function(){return this.get("beta")};l.Kj=function(){return this.get("gamma")};l.tl=function(){return this.get("heading")}; -l.Tg=function(){return this.get("tracking")};l.ul=function(){if($i){var b=this.Tg();b&&!this.a?this.a=C(ba,"deviceorientation",this.On,!1,this):!b&&this.a&&(Zc(this.a),this.a=null)}};l.uf=function(b){this.set("tracking",b)};function Qr(){this.defaultDataProjection=null}function Rr(b,c,d){var e;d&&(e={dataProjection:d.dataProjection?d.dataProjection:b.Ia(c),featureProjection:d.featureProjection});return Sr(b,e)}function Sr(b,c){var d;c&&(d={featureProjection:c.featureProjection,dataProjection:c.dataProjection?c.dataProjection:b.defaultDataProjection,rightHanded:c.rightHanded});return d} -function Tr(b,c,d){var e=d?Fe(d.featureProjection):null;d=d?Fe(d.dataProjection):null;return e&&d&&!Xe(e,d)?b instanceof bf?(c?b.clone():b).kb(c?e:d,c?d:e):af(c?b.slice():b,c?e:d,c?d:e):b};function Ur(){this.defaultDataProjection=null}y(Ur,Qr);function Vr(b){return ma(b)?b:ia(b)?(b=ao(b))?b:null:null}l=Ur.prototype;l.V=function(){return"json"};l.Tb=function(b,c){return this.Rc(Vr(b),Rr(this,b,c))};l.Ba=function(b,c){return this.Jf(Vr(b),Rr(this,b,c))};l.Sc=function(b,c){return this.Dh(Vr(b),Rr(this,b,c))};l.Ia=function(b){return this.Kh(Vr(b))};l.Jd=function(b,c){return bo(this.Vc(b,c))};l.Vb=function(b,c){return bo(this.Re(b,c))};l.Wc=function(b,c){return bo(this.Te(b,c))};function Wr(b,c,d,e,f){var g=NaN,h=NaN,k=(d-c)/e;if(0!==k)if(1==k)g=b[c],h=b[c+1];else if(2==k)g=.5*b[c]+.5*b[c+e],h=.5*b[c+1]+.5*b[c+e+1];else{var h=b[c],k=b[c+1],m=0,g=[0],n;for(n=c+e;n>1,p=h(d,g[n]),0r?(d=(d-g[-r-2])/(g[-r-1]-g[-r-2]),c+=(-r-2)*e,g=qd(b[c],b[c+e],d),h=qd(b[c+1],b[c+e+1],d)):(g=b[c+r*e],h=b[c+r*e+1])}return f?(f[0]= -g,f[1]=h,f):[g,h]}function Xr(b,c,d,e,f,g){if(d==c)return null;if(f>1,fb||this.g.length<=b)return null;var c=new T(null);c.ba(this.b,this.v.slice(0===b?0:this.g[b-1],this.g[b]));return c}; -l.rd=function(){var b=this.v,c=this.g,d=this.b,e=[],f=0,g,h;g=0;for(h=c.length;gb||c<=b)return null;c=new D(null);c.ba(this.b,this.v.slice(b*this.a,(b+1)*this.a));return c};l.ue=function(){var b=this.v,c=this.b,d=this.a,e=[],f,g;f=0;for(g=b.length;fb||this.g.length<=b)return null;var c;0===b?c=0:(c=this.g[b-1],c=c[c.length-1]);b=this.g[b].slice();var d=b[b.length-1];if(0!==c){var e,f;e=0;for(f=b.length;eb||0!==this.i&&bc)throw Error("Bad port number "+c);b.l=c}else b.l=null}function It(b,c,d){c instanceof Kt?(b.b=c,Qt(b.b,b.j)):(d||(c=Lt(c,Rt)),b.b=new Kt(c,0,b.j))}function St(b){return b instanceof Ft?b.clone():new Ft(b,void 0)} -function Tt(b,c){b instanceof Ft||(b=St(b));c instanceof Ft||(c=St(c));var d=b,e=c,f=d.clone(),g=!!e.f;g?Gt(f,e.f):g=!!e.i;g?f.i=e.i:g=!!e.c;g?f.c=e.c:g=null!=e.l;var h=e.a;if(g)Ht(f,e.l);else if(g=!!e.a)if("/"!=h.charAt(0)&&(d.c&&!d.a?h="/"+h:(d=f.a.lastIndexOf("/"),-1!=d&&(h=f.a.substr(0,d+1)+h))),d=h,".."==d||"."==d)h="";else if(-1!=d.indexOf("./")||-1!=d.indexOf("/.")){for(var h=0==d.lastIndexOf("/",0),d=d.split("/"),k=[],m=0;m>4&15).toString(16)+(b&15).toString(16)} -var Mt=/[#\/\?@]/g,Ot=/[\#\?:]/g,Nt=/[\#\?]/g,Rt=/[\#\?@]/g,Pt=/#/g;function Kt(b,c,d){this.c=this.a=null;this.b=b||null;this.f=!!d}function Vt(b){b.a||(b.a=new ri,b.c=0,b.b&&ko(b.b,function(c,d){b.add(decodeURIComponent(c.replace(/\+/g," ")),d)}))}l=Kt.prototype;l.nc=function(){Vt(this);return this.c};l.add=function(b,c){Vt(this);this.b=null;b=Wt(this,b);var d=this.a.get(b);d||this.a.set(b,d=[]);d.push(c);this.c++;return this}; -l.remove=function(b){Vt(this);b=Wt(this,b);return ti(this.a.c,b)?(this.b=null,this.c-=this.a.get(b).length,this.a.remove(b)):!1};l.clear=function(){this.a=this.b=null;this.c=0};l.Ka=function(){Vt(this);return 0==this.c};function Xt(b,c){Vt(b);c=Wt(b,c);return ti(b.a.c,c)}l.O=function(){Vt(this);for(var b=this.a.pc(),c=this.a.O(),d=[],e=0;ee;++e){var f=parseInt(d[e],10).toString(16);d[e]=1==f.length?"0"+f:f}Es(b,d.join(""))} -function dv(b,c,d){sp({node:b},ev,fv,[c],d)}function gv(b,c,d){var e={node:b};c.Na()&&b.setAttribute("id",c.Na());b=c.P();var f=c.Qb();if(f&&(f=f.call(c,0))&&0>1,x=-7;g=e?g-1:0;var z=e?-1:1,B=b[c+g];g+=z;e=B&(1<<-x)-1;B>>=-x;for(x+=q;0>=-x;for(x+=f;0>1,B=23===g?Math.pow(2,-24)-Math.pow(2,-77):0;q=f?0:q-1;var A=f?1:-1,v=0>c||0===c&&0>1/c?1:0;c=Math.abs(c);isNaN(c)||Infinity===c?(c=isNaN(c)?1:0,f=x):(f=Math.floor(Math.log(c)/Math.LN2),1>c*(r=Math.pow(2,-f))&&(f--,r*=2),c=1<=f+z?c+B/r:c+B*Math.pow(2,1-z),2<=c*r&&(f++,r/=2),f+z>=x?(c=0,f=x):1<=f+z?(c=(c*r-1)*Math.pow(2,g),f+=z):(c=c*Math.pow(2,z-1)*Math.pow(2,g),f=0));for(;8<=g;b[e+q]=c&255,q+=A,c/=256,g-=8);f=f<g)if(h)if(56320>g){e.push(239,191,189);h=g;continue}else g=h-55296<<10|g-56320|65536,h=null;else{56319< -g||f+1===c?e.push(239,191,189):h=g;continue}else h&&(e.push(239,191,189),h=null);128>g?e.push(g):2048>g?e.push(g>>6|192,g&63|128):65536>g?e.push(g>>12|224,g>>6&63|128,g&63|128):e.push(g>>18|240,g>>12&63|128,g>>6&63|128,g&63|128)}return e}c.ka=g;var k=b("ieee754"),m,n,p;m={Mh:function(b){return(this[b]|this[b+1]<<8|this[b+2]<<16)+16777216*this[b+3]},Yf:function(b,c){this[c]=b;this[c+1]=b>>>8;this[c+2]=b>>>16;this[c+3]=b>>>24},Eh:function(b){return(this[b]|this[b+1]<<8|this[b+2]<<16)+(this[b+3]<<24)}, -Nf:function(b){return k.read(this,b,!0,23,4)},Hf:function(b){return k.read(this,b,!0,52,8)},pi:function(b,c){return k.write(this,b,c,!0,23,4)},mi:function(b,c){return k.write(this,b,c,!0,52,8)},toString:function(b,c,e){var f=b="";e=Math.min(this.length,e||this.length);for(c=c||0;c=g?(b+=decodeURIComponent(f)+String.fromCharCode(g),f=""):f+="%"+g.toString(16)}return b+=decodeURIComponent(f)},write:function(b,c){for(var e=b===n?p:h(b),f=0;f>3,c,this);this.ca===g&&this.Xo(f)}return c},lo:function(){var b=this.Eb.Nf(this.ca);this.ca+=4;return b},ho:function(){var b=this.Eb.Hf(this.ca);this.ca+=8;return b},za:function(){var b=this.Eb,c,e,f,g,h;c=b[this.ca++];if(128>c)return c;c=c&127;f=b[this.ca++];if(128>f)return c|f<<7;f=(f&127)<<7;g=b[this.ca++];if(128>g)return c|f|g<<14;g=(g&127)<<14;h=b[this.ca++];if(128>h)return c|f|g|h<<21;e=b[this.ca++];c=(c|f|g|(h&127)<<21)+268435456*(e&127);if(128>e)return c;e=b[this.ca++];c+=34359738368* -(e&127);if(128>e)return c;e=b[this.ca++];c+=4398046511104*(e&127);if(128>e)return c;e=b[this.ca++];c+=562949953421312*(e&127);if(128>e)return c;e=b[this.ca++];c+=72057594037927936*(e&127);if(128>e)return c;e=b[this.ca++];c+=0x7fffffffffffffff*(e&127);if(128>e)return c;throw Error("Expected varint not more than 10 bytes");},wo:function(){var b=this.ca,c=this.za();if(cf?g<<7*f:g* -Math.pow(2,7*f));return-c-1},Fd:function(){var b=this.za();return 1===b%2?(b+1)/-2:b/2},eo:function(){return Boolean(this.za())},Qf:function(){var b=this.za()+this.ca,c=this.Eb.toString("utf8",this.ca,b);this.ca=b;return c},Xo:function(b){b=b&7;if(b===h.f)for(;127>3),f--,1===e||2===e)g+=b.Fd(),h+=b.Fd(),1===e&&(z&&x.push(z),z=[]),z.push(new k(g,h));else if(7===e)z&&z.push(z[0].clone());else throw Error("unknown command "+e);z&&x.push(z);return x};g.prototype.bbox=function(){var b=this.lc;b.ca=this.Ye;for(var c=b.za()+b.ca,e=1,f=0,g=0,h=0,k=Infinity,z=-Infinity,B=Infinity,A= --Infinity;b.ca>3),f--,1===e||2===e)g+=b.Fd(),h+=b.Fd(),gz&&(z=g),hA&&(A=h);else if(7!==e)throw Error("unknown command "+e);return[k,B,z,A]}},{"point-geometry":1}],5:[function(b,c){function g(b,c){this.version=1;this.name=null;this.extent=4096;this.length=0;this.lc=b;this.Pd=[];this.Rd=[];this.Od=[];b.Lf(h,this,c);this.length=this.Od.length}function h(b,c,e){15===b?c.version=e.za():1===b?c.name=e.Qf():5===b?c.extent=e.za():2===b?c.Od.push(e.ca): -3===b?c.Pd.push(e.Qf()):4===b&&c.Rd.push(k(e))}function k(b){for(var c=null,e=b.za()+b.ca;b.ca>3,c=1===c?b.Qf():2===c?b.lo():3===c?b.ho():4===c?b.wo():5===c?b.za():6===c?b.Fd():7===c?b.eo():null;return c}var m=b("./vectortilefeature.js");c.ka=g;g.prototype.feature=function(b){if(0>b||b>=this.Od.length)throw Error("feature index out of bounds");this.lc.ca=this.Od[b];b=this.lc.za()+this.lc.ca;return new m(this.lc,b,this.extent,this.Pd,this.Rd)}},{"./vectortilefeature.js":4}]},{},[2])(2)}); -zp=c.ka})();function Ov(b){this.defaultDataProjection=null;b=b?b:{};this.defaultDataProjection=new De({code:"EPSG:3857",units:"tile-pixels"});this.a=b.featureClass?b.featureClass:Vm;this.f=b.geometryName?b.geometryName:"geometry";this.c=b.layerName?b.layerName:"layer";this.b=b.layers?b.layers:null}y(Ov,Qr);Ov.prototype.V=function(){return"arraybuffer"}; -Ov.prototype.Ba=function(b,c){var d=this.b,e=new yp(b),e=new zp.Si(e),f=[],g=this.a,h,k,m;for(m in e.layers)if(!d||-1!=d.indexOf(m)){h=e.layers[m];for(var n=0,p=h.length;nf?~(f<<1):f<<1;d="";e=0;for(f=b.length;e>=5;h=g+63;k+=String.fromCharCode(h);d+=k}return d} -function sw(b,c){var d=c?c:1E5,e=[],f=0,g=0,h,k;h=0;for(k=b.length;hm?(e.push(f),g=f=0):g+=5}f=0;for(g=e.length;f>1):h>>1;f=0;for(g=e.length;f=b||"."==b&&!(void 0!==c&&c)} -function Uw(b){var c=b.c.charAt(++b.a),d={position:b.a,value:c};if("("==c)d.type=2;else if(","==c)d.type=5;else if(")"==c)d.type=3;else if(Ww(c)||"-"==c){d.type=4;var e,c=b.a,f=!1,g=!1;do{if("."==e)f=!0;else if("e"==e||"E"==e)g=!0;e=b.c.charAt(++b.a)}while(Ww(e,f)||!g&&("e"==e||"E"==e)||g&&("-"==e||"+"==e));b=parseFloat(b.c.substring(c,b.a--));d.value=b}else if("a"<=c&&"z">=c||"A"<=c&&"Z">=c){d.type=1;c=b.a;do e=b.c.charAt(++b.a);while("a"<=e&&"z">=e||"A"<=e&&"Z">=e);b=b.c.substring(c,b.a--).toUpperCase(); -d.value=b}else{if(" "==c||"\t"==c||"\r"==c||"\n"==c)return Uw(b);if(""===c)d.type=6;else throw Error("Unexpected character: "+c);}return d}function Sw(b){this.c=b}l=Sw.prototype;l.match=function(b){if(b=this.a.type==b)this.a=Uw(this.c);return b}; -function Vw(b){var c=b.a;if(b.match(1)){var d=c.value;if("GEOMETRYCOLLECTION"==d){a:{if(b.match(2)){c=[];do c.push(Vw(b));while(b.match(5));if(b.match(3)){b=c;break a}}else if(Xw(b)){b=[];break a}throw Error(Yw(b));}return new js(b)}var e=Zw[d],c=$w[d];if(!e||!c)throw Error("Invalid geometry type: "+d);b=e.call(b);return new c(b)}throw Error(Yw(b));}l.Ef=function(){if(this.match(2)){var b=ax(this);if(this.match(3))return b}else if(Xw(this))return null;throw Error(Yw(this));}; -l.Df=function(){if(this.match(2)){var b=bx(this);if(this.match(3))return b}else if(Xw(this))return[];throw Error(Yw(this));};l.Ff=function(){if(this.match(2)){var b=cx(this);if(this.match(3))return b}else if(Xw(this))return[];throw Error(Yw(this));};l.Sn=function(){if(this.match(2)){var b;if(2==this.a.type)for(b=[this.Ef()];this.match(5);)b.push(this.Ef());else b=bx(this);if(this.match(3))return b}else if(Xw(this))return[];throw Error(Yw(this));}; -l.Rn=function(){if(this.match(2)){var b=cx(this);if(this.match(3))return b}else if(Xw(this))return[];throw Error(Yw(this));};l.Tn=function(){if(this.match(2)){for(var b=[this.Ff()];this.match(5);)b.push(this.Ff());if(this.match(3))return b}else if(Xw(this))return[];throw Error(Yw(this));};function ax(b){for(var c=[],d=0;2>d;++d){var e=b.a;if(b.match(4))c.push(e.value);else break}if(2==c.length)return c;throw Error(Yw(b));}function bx(b){for(var c=[ax(b)];b.match(5);)c.push(ax(b));return c} -function cx(b){for(var c=[b.Df()];b.match(5);)c.push(b.Df());return c}function Xw(b){var c=1==b.a.type&&"EMPTY"==b.a.value;c&&(b.a=Uw(b.c));return c}function Yw(b){return"Unexpected `"+b.a.value+"` at position "+b.a.position+" in `"+b.c.c+"`"}var $w={POINT:D,LINESTRING:T,POLYGON:E,MULTIPOINT:$r,MULTILINESTRING:U,MULTIPOLYGON:V},Zw={POINT:Sw.prototype.Ef,LINESTRING:Sw.prototype.Df,POLYGON:Sw.prototype.Ff,MULTIPOINT:Sw.prototype.Sn,MULTILINESTRING:Sw.prototype.Rn,MULTIPOLYGON:Sw.prototype.Tn};function dx(){this.version=void 0}y(dx,Xv);dx.prototype.c=function(b){for(b=b.firstChild;b;b=b.nextSibling)if(1==b.nodeType)return this.a(b);return null};dx.prototype.a=function(b){this.version=b.getAttribute("version").trim();return(b=Q({version:this.version},ex,b,[]))?b:null};function fx(b,c){return Q({},gx,b,c)}function hx(b,c){return Q({},ix,b,c)}function jx(b,c){var d=fx(b,c);if(d){var e=[Cs(b.getAttribute("width")),Cs(b.getAttribute("height"))];d.size=e;return d}} -function kx(b,c){return Q([],lx,b,c)} -var mx=[null,"http://www.opengis.net/wms"],ex=P(mx,{Service:M(function(b,c){return Q({},nx,b,c)}),Capability:M(function(b,c){return Q({},ox,b,c)})}),ox=P(mx,{Request:M(function(b,c){return Q({},px,b,c)}),Exception:M(function(b,c){return Q([],qx,b,c)}),Layer:M(function(b,c){return Q({},rx,b,c)})}),nx=P(mx,{Name:M(W),Title:M(W),Abstract:M(W),KeywordList:M(kx),OnlineResource:M(Wv),ContactInformation:M(function(b,c){return Q({},sx,b,c)}),Fees:M(W),AccessConstraints:M(W),LayerLimit:M(Bs),MaxWidth:M(Bs), -MaxHeight:M(Bs)}),sx=P(mx,{ContactPersonPrimary:M(function(b,c){return Q({},tx,b,c)}),ContactPosition:M(W),ContactAddress:M(function(b,c){return Q({},ux,b,c)}),ContactVoiceTelephone:M(W),ContactFacsimileTelephone:M(W),ContactElectronicMailAddress:M(W)}),tx=P(mx,{ContactPerson:M(W),ContactOrganization:M(W)}),ux=P(mx,{AddressType:M(W),Address:M(W),City:M(W),StateOrProvince:M(W),PostCode:M(W),Country:M(W)}),qx=P(mx,{Format:jp(W)}),rx=P(mx,{Name:M(W),Title:M(W),Abstract:M(W),KeywordList:M(kx),CRS:lp(W), -EX_GeographicBoundingBox:M(function(b,c){var d=Q({},vx,b,c);if(d){var e=d.westBoundLongitude,f=d.southBoundLatitude,g=d.eastBoundLongitude,d=d.northBoundLatitude;return void 0===e||void 0===f||void 0===g||void 0===d?void 0:[e,f,g,d]}}),BoundingBox:lp(function(b){var c=[As(b.getAttribute("minx")),As(b.getAttribute("miny")),As(b.getAttribute("maxx")),As(b.getAttribute("maxy"))],d=[As(b.getAttribute("resx")),As(b.getAttribute("resy"))];return{crs:b.getAttribute("CRS"),extent:c,res:d}}),Dimension:lp(function(b){return{name:b.getAttribute("name"), -units:b.getAttribute("units"),unitSymbol:b.getAttribute("unitSymbol"),"default":b.getAttribute("default"),multipleValues:xs(b.getAttribute("multipleValues")),nearestValue:xs(b.getAttribute("nearestValue")),current:xs(b.getAttribute("current")),values:W(b)}}),Attribution:M(function(b,c){return Q({},wx,b,c)}),AuthorityURL:lp(function(b,c){var d=fx(b,c);if(d)return d.name=b.getAttribute("name"),d}),Identifier:lp(W),MetadataURL:lp(function(b,c){var d=fx(b,c);if(d)return d.type=b.getAttribute("type"), -d}),DataURL:lp(fx),FeatureListURL:lp(fx),Style:lp(function(b,c){return Q({},xx,b,c)}),MinScaleDenominator:M(zs),MaxScaleDenominator:M(zs),Layer:lp(function(b,c){var d=c[c.length-1],e=Q({},rx,b,c);if(e){var f=xs(b.getAttribute("queryable"));void 0===f&&(f=d.queryable);e.queryable=void 0!==f?f:!1;f=Cs(b.getAttribute("cascaded"));void 0===f&&(f=d.cascaded);e.cascaded=f;f=xs(b.getAttribute("opaque"));void 0===f&&(f=d.opaque);e.opaque=void 0!==f?f:!1;f=xs(b.getAttribute("noSubsets"));void 0===f&&(f=d.noSubsets); -e.noSubsets=void 0!==f?f:!1;(f=As(b.getAttribute("fixedWidth")))||(f=d.fixedWidth);e.fixedWidth=f;(f=As(b.getAttribute("fixedHeight")))||(f=d.fixedHeight);e.fixedHeight=f;["Style","CRS","AuthorityURL"].forEach(function(b){if(b in d){var c=Tb(e,b),c=c.concat(d[b]);e[b]=c}});"EX_GeographicBoundingBox BoundingBox Dimension Attribution MinScaleDenominator MaxScaleDenominator".split(" ").forEach(function(b){b in e||(e[b]=d[b])});return e}})}),wx=P(mx,{Title:M(W),OnlineResource:M(Wv),LogoURL:M(jx)}),vx= -P(mx,{westBoundLongitude:M(zs),eastBoundLongitude:M(zs),southBoundLatitude:M(zs),northBoundLatitude:M(zs)}),px=P(mx,{GetCapabilities:M(hx),GetMap:M(hx),GetFeatureInfo:M(hx)}),ix=P(mx,{Format:lp(W),DCPType:lp(function(b,c){return Q({},yx,b,c)})}),yx=P(mx,{HTTP:M(function(b,c){return Q({},zx,b,c)})}),zx=P(mx,{Get:M(fx),Post:M(fx)}),xx=P(mx,{Name:M(W),Title:M(W),Abstract:M(W),LegendURL:lp(jx),StyleSheetURL:M(fx),StyleURL:M(fx)}),gx=P(mx,{Format:M(W),OnlineResource:M(Wv)}),lx=P(mx,{Keyword:jp(W)});function Ax(){this.b="http://mapserver.gis.umn.edu/mapserver";this.a=new Hs;this.defaultDataProjection=null}y(Ax,ss); -Ax.prototype.hc=function(b,c){var d={featureType:this.featureType,featureNS:this.featureNS};c&&Xb(d,Rr(this,b,c));var e=[d];b.namespaceURI=this.b;var f=So(b),d=[];if(0!==b.childNodes.length){if("msGMLOutput"==f)for(var g=0,h=b.childNodes.length;g=c[0]||b[1]<=c[1]&&b[3]>=c[1]?!0:de(b,this.ng,this)):!1}; -l.Ul=function(b){var c=this.a,d=this.v[c]-this.v[0],e=b.slice();e[c]=e[0]+d;for(d=1;dg[2])&&(k*=Math.ceil((g[0]-d)/k),e=[e[0]+ -k,e[1],e[2]+k,e[3]]);d=this.u[0];g=this.u[1];k=-1;n=Math.pow(this.U*h,2);q=[];r=[];h=0;for(m=Xx.length;h=c.l&&c.cancel())}this.C?this.C.call(this.A,this):this.B=!0;this.a||(b=new gy,hy(this),iy(this,!1,b))}};fy.prototype.u=function(b,c){this.i=!1;iy(this,b,c)};function iy(b,c,d){b.a=!0;b.b=d;b.f=!c;jy(b)} -function hy(b){if(b.a){if(!b.B)throw new ky;b.B=!1}}fy.prototype.$c=function(b){hy(this);iy(this,!0,b)};function ly(b,c,d,e){b.g.push([c,d,e]);b.a&&jy(b)}fy.prototype.then=function(b,c,d){var e,f,g=new Hn(function(b,c){e=b;f=c});ly(this,e,function(b){b instanceof gy?g.cancel():f(b)});return g.then(b,c,d)};un(fy);function my(b){return eb(b.g,function(b){return ka(b[1])})} -function jy(b){if(b.j&&b.a&&my(b)){var c=b.j,d=ny[c];d&&(ba.clearTimeout(d.wa),delete ny[c]);b.j=0}b.c&&(b.c.l--,delete b.c);for(var c=b.b,e=d=!1;b.g.length&&!b.i;){var f=b.g.shift(),g=f[0],h=f[1],f=f[2];if(g=b.f?h:g)try{var k=g.call(f||b.A,c);ca(k)&&(b.f=b.f&&(k==c||k instanceof Error),b.b=c=k);if(vn(c)||"function"===typeof ba.Promise&&c instanceof ba.Promise)e=!0,b.i=!0}catch(m){c=m,b.f=!0,my(b)||(d=!0)}}b.b=c;e&&(k=ra(b.u,b,!0),e=ra(b.u,b,!1),c instanceof fy?(ly(c,k,e),c.D=!0):c.then(k,e));d&& -(c=new oy(c),ny[c.wa]=c,b.j=c.wa)}function ky(){xa.call(this)}y(ky,xa);ky.prototype.message="Deferred has already fired";ky.prototype.name="AlreadyCalledError";function gy(){xa.call(this)}y(gy,xa);gy.prototype.message="Deferred was canceled";gy.prototype.name="CanceledError";function oy(b){this.wa=ba.setTimeout(ra(this.c,this),0);this.a=b}oy.prototype.c=function(){delete ny[this.wa];throw this.a;};var ny={};function py(b,c){ca(b.name)?(this.name=b.name,this.code=qy[b.name]):(this.code=b.code,this.name=ry(b.code));xa.call(this,Ba("%s %s",this.name,c))}y(py,xa);function ry(b){var c=Pb(qy,function(c){return b==c});if(!ca(c))throw Error("Invalid code: "+b);return c}var qy={AbortError:3,EncodingError:5,InvalidModificationError:9,InvalidStateError:7,NotFoundError:1,NotReadableError:4,NoModificationAllowedError:6,PathExistsError:12,QuotaExceededError:10,SecurityError:2,SyntaxError:8,TypeMismatchError:11};function sy(b,c){vc.call(this,b.type,c)}y(sy,vc);function ty(){cd.call(this);this.ub=new FileReader;this.ub.onloadstart=ra(this.a,this);this.ub.onprogress=ra(this.a,this);this.ub.onload=ra(this.a,this);this.ub.onabort=ra(this.a,this);this.ub.onerror=ra(this.a,this);this.ub.onloadend=ra(this.a,this)}y(ty,cd);ty.prototype.getError=function(){return this.ub.error&&new py(this.ub.error,"reading file")};ty.prototype.a=function(b){this.o(new sy(b,this))};ty.prototype.X=function(){ty.da.X.call(this);delete this.ub}; -function uy(b){var c=new fy;b.Qa("loadend",sa(function(b,c){var f=c.ub.result,g=c.getError();null==f||g?(hy(b),iy(b,!1,g)):b.$c(f);c.Ec()},c,b));return c};function vy(b){b=b?b:{};Ok.call(this,{handleEvent:ue});this.j=b.formatConstructors?b.formatConstructors:[];this.A=b.projection?Fe(b.projection):null;this.f=null;this.a=void 0}y(vy,Ok);vy.prototype.X=function(){this.a&&Zc(this.a);vy.da.X.call(this)};vy.prototype.i=function(b){b=b.a.dataTransfer.files;var c,d,e;c=0;for(d=b.length;cb.xa:b.f===Jy&&(e=b.a[0].length>b.xa,f=[b.a[0][0],b.a[0][b.a[0].length-2]]);if(e)for(var e=c.map,g=0,h=f.length;gb.pa,b.D(g,e);else if(b.f===Jy){g=b.a[0];g.push(d.slice());if(f=g.length>b.pa)b.l=g[0];b.D(b.a,e)}Sy(b);f&&b.md()}l.Ao=function(){var b=this.i.W(),c,d;this.f===Ly?(c=this.a,c.splice(-2,1),this.D(c,b)):this.f===Jy&&(c=this.a[0],c.splice(-2,1),d=this.A.W(),d.ma(c),this.D(this.a,b));0===c.length&&(this.l=null);Sy(this)}; -l.md=function(){var b=Ty(this),c=this.a,d=b.W();this.f===Ly?(c.pop(),this.D(c,d)):this.f===Jy&&(c[0].pop(),c[0].push(c[0][0]),this.D(c,d));"MultiPoint"===this.T?b.La(new $r([c])):"MultiLineString"===this.T?b.La(new U([c])):"MultiPolygon"===this.T&&b.La(new V([c]));this.o(new Dy("drawend",b));this.fb&&this.fb.push(b);this.Db&&this.Db.Ad(b)};function Ty(b){b.l=null;var c=b.i;c&&(b.i=null,b.G=null,b.A=null,b.ga.fa().clear(!0));return c} -l.bm=function(b){var c=b.W();this.i=b;this.a=c.Y();b=this.a[this.a.length-1];this.l=b.slice();this.a.push(b.slice());Sy(this);this.o(new Dy("drawstart",this.i))};l.xc=te;function Sy(b){var c=[];b.i&&c.push(b.i);b.A&&c.push(b.A);b.G&&c.push(b.G);b=b.ga.fa();b.clear(!0);b.Dc(c)}l.ki=function(){var b=this.u,c=this.b();b&&c||Ty(this);this.ga.setMap(c?b:null)}; -function Iy(b){var c;"Point"===b||"MultiPoint"===b?c=Ky:"LineString"===b||"MultiLineString"===b?c=Ly:"Polygon"===b||"MultiPolygon"===b?c=Jy:"Circle"===b&&(c=Qy);return c}var Ky="Point",Ly="LineString",Jy="Polygon",Qy="Circle";function Uy(b,c,d){vc.call(this,b);this.features=c;this.mapBrowserPointerEvent=d}y(Uy,vc); -function Vy(b){al.call(this,{handleDownEvent:Wy,handleDragEvent:Xy,handleEvent:Yy,handleUpEvent:Zy});this.pa=b.deleteCondition?b.deleteCondition:ze(Xk,Wk);this.va=this.f=null;this.ea=[0,0];this.D=this.U=!1;this.a=new Bp;this.G=void 0!==b.pixelTolerance?b.pixelTolerance:10;this.l=this.ga=!1;this.i=null;this.S=new H({source:new R({useSpatialIndex:!1,wrapX:!!b.wrapX}),style:b.style?b.style:$y(),updateWhileAnimating:!0,updateWhileInteracting:!0});this.T={Point:this.im,LineString:this.bh,LinearRing:this.bh, -Polygon:this.jm,MultiPoint:this.gm,MultiLineString:this.fm,MultiPolygon:this.hm,GeometryCollection:this.em};this.A=b.features;this.A.forEach(this.zf,this);C(this.A,"add",this.cm,!1,this);C(this.A,"remove",this.dm,!1,this)}y(Vy,al);l=Vy.prototype;l.zf=function(b){var c=b.W();c.V()in this.T&&this.T[c.V()].call(this,b,c);(c=this.u)&&az(this,this.ea,c);C(b,"change",this.ah,!1,this)};function bz(b,c){b.D||(b.D=!0,b.o(new Uy("modifystart",b.A,c)))} -function cz(b,c){dz(b,c);b.f&&0===b.A.$b()&&(b.S.fa().Qc(b.f),b.f=null);Yc(c,"change",b.ah,!1,b)}function dz(b,c){var d=b.a,e=[];d.forEach(function(b){c===b.feature&&e.push(b)});for(var f=e.length-1;0<=f;--f)d.remove(e[f])}l.setMap=function(b){this.S.setMap(b);Vy.da.setMap.call(this,b)};l.cm=function(b){this.zf(b.element)};l.ah=function(b){this.l||(b=b.target,cz(this,b),this.zf(b))};l.dm=function(b){cz(this,b.element)}; -l.im=function(b,c){var d=c.Y(),d={feature:b,geometry:c,la:[d,d]};this.a.ya(c.J(),d)};l.gm=function(b,c){var d=c.Y(),e,f,g;f=0;for(g=d.length;fd?h[1]:h[0]);ez(b,k);d={};d[w(h)]=!0;c=1;for(m=g.length;cd&&(b.index+=f)})}function $y(){var b=hm();return function(){return b.Point}};function hz(b,c,d,e){vc.call(this,b);this.selected=c;this.deselected=d;this.mapBrowserEvent=e}y(hz,vc); -function iz(b){Ok.call(this,{handleEvent:jz});b=b?b:{};this.C=b.condition?b.condition:Wk;this.l=b.addCondition?b.addCondition:te;this.D=b.removeCondition?b.removeCondition:te;this.G=b.toggleCondition?b.toggleCondition:Yk;this.A=b.multi?b.multi:!1;this.j=b.filter?b.filter:ue;var c;if(b.layers)if(ka(b.layers))c=b.layers;else{var d=b.layers;c=function(b){return vb(d,b)}}else c=ue;this.i=c;this.a={};this.f=new H({source:new R({useSpatialIndex:!1,features:b.features,wrapX:b.wrapX}),style:b.style?b.style: -kz(),updateWhileAnimating:!0,updateWhileInteracting:!0});b=this.f.fa().b;C(b,"add",this.km,!1,this);C(b,"remove",this.nm,!1,this)}y(iz,Ok);l=iz.prototype;l.lm=function(){return this.f.fa().b};l.mm=function(b){b=w(b);return this.a[b]}; -function jz(b){if(!this.C(b))return!0;var c=this.l(b),d=this.D(b),e=this.G(b),f=!c&&!d&&!e,g=b.map,h=this.f.fa().b,k=[],m=[],n=!1;if(f)g.od(b.pixel,function(b,c){if(!c||this.j(b,c)){m.push(b);var d=w(b);this.a[d]=c;return!this.A}},this,this.i),0f?h[1]:h[0],d=c.Oa(m),d=[Math.round(d[0]),Math.round(d[1])]);c=m;g&&(b.coordinate=c.slice(0,2),b.pixel=d);return bl.call(this,b)} -function nz(){var b=Lb(this.A);b.length&&(b.forEach(this.ji,this),this.A={});return!1}function oz(b,c){return yd(this.S,b.la)-yd(this.S,c.la)};function pz(b,c,d){vc.call(this,b);this.features=c;this.coordinate=d}y(pz,vc);function qz(b){al.call(this,{handleDownEvent:rz,handleDragEvent:sz,handleMoveEvent:tz,handleUpEvent:uz});this.l=void 0;this.a=null;this.f=void 0!==b.features?b.features:null;this.i=null}y(qz,al);function rz(b){this.i=vz(this,b.pixel,b.map);return!this.a&&this.i?(this.a=b.coordinate,tz.call(this,b),this.o(new pz("translatestart",this.f,b.coordinate)),!0):!1} -function uz(b){return this.a?(this.a=null,tz.call(this,b),this.o(new pz("translateend",this.f,b.coordinate)),!0):!1}function sz(b){if(this.a){b=b.coordinate;var c=b[0]-this.a[0],d=b[1]-this.a[1];if(this.f)this.f.forEach(function(b){var e=b.W();e.Oc(c,d);b.La(e)});else if(this.i){var e=this.i.W();e.Oc(c,d);this.i.La(e)}this.a=b;this.o(new pz("translating",this.f,b))}} -function tz(b){var c=b.map.Lc();if(b=b.map.od(b.pixel,function(b){return b})){var d=!1;this.f&&vb(this.f.a,b)&&(d=!0);this.l=c.style.cursor;c.style.cursor=this.a?"-webkit-grabbing":d?"-webkit-grab":"pointer";c.style.cursor=this.a?d?"grab":"pointer":"grabbing"}else c.style.cursor=void 0!==this.l?this.l:"",this.l=void 0}function vz(b,c,d){var e=null;c=d.od(c,function(b){return b});b.f&&vb(b.f.a,c)&&(e=c);return e};function X(b){b=b?b:{};var c=Ub(b);delete c.gradient;delete c.radius;delete c.blur;delete c.shadow;delete c.weight;H.call(this,c);this.g=null;this.Z=void 0!==b.shadow?b.shadow:250;this.T=void 0;this.U=null;C(this,kd("gradient"),this.zk,!1,this);this.Wh(b.gradient?b.gradient:wz);this.Sh(void 0!==b.blur?b.blur:15);this.ih(void 0!==b.radius?b.radius:8);C(this,[kd("blur"),kd("radius")],this.Lg,!1,this);this.Lg();var d=b.weight?b.weight:"weight",e;ia(d)?e=function(b){return b.get(d)}:e=d;this.f(ra(function(b){b= -e(b);b=void 0!==b?Sa(b,0,1):1;var c=255*b|0,d=this.U[c];d||(d=[new cm({image:new wk({opacity:b,src:this.T})})],this.U[c]=d);return d},this));this.set("renderOrder",null);C(this,"render",this.Rk,!1,this)}y(X,H);var wz=["#00f","#0ff","#0f0","#ff0","#f00"];l=X.prototype;l.tg=function(){return this.get("blur")};l.Ag=function(){return this.get("gradient")};l.hh=function(){return this.get("radius")}; -l.zk=function(){for(var b=this.Ag(),c=Pi(1,256),d=c.createLinearGradient(0,0,1,256),e=1/(b.length-1),f=0,g=b.length;f=e)this.state=4;else if(this.u=new en(b,d,h,g,e*(void 0!==n?n:.5)),0===this.u.f.length)this.state=4;else if(this.l=Kh(c,e),d=gn(this.u),g&&(b.b?(d[1]=Sa(d[1],g[1],g[3]), -d[3]=Sa(d[3],g[1],g[3])):d=oe(d,g)),ie(d))if(b=Fh(c,d,this.l),100>kg(b)*jg(b)){for(c=b.a;c<=b.f;c++)for(d=b.c;d<=b.b;d++)(n=m(this.l,c,d,k))&&this.c.push(n);0===this.c.length&&(this.state=4)}else this.state=3;else this.state=4}y(xz,wh);xz.prototype.X=function(){1==this.state&&(this.b.forEach(Zc),this.b=null);xz.da.X.call(this)};xz.prototype.Sa=function(b){if(void 0!==b){var c=w(b);if(c in this.g)return this.g[c];b=Qb(this.g)?this.j:this.j.cloneNode(!1);return this.g[c]=b}return this.j}; -function yz(b){var c=[];b.c.forEach(function(b){b&&2==b.state&&c.push({extent:this.i.Aa(b.a),image:b.Sa()})},b);b.c.length=0;var d=b.a,e=d[0],f=b.B.Ha(e),g=ja(f)?f:f[0],f=ja(f)?f:f[1],e=b.B.$(e),h=b.i.$(b.l),d=b.B.Aa(d);b.j=dn(g,f,b.A,h,b.i.J(),e,d,b.u,c,b.C);b.state=2;xh(b)} -xz.prototype.load=function(){if(0==this.state){this.state=1;xh(this);var b=0;this.b=[];this.c.forEach(function(c){var d=c.state;if(0==d||1==d){b++;var e;e=c.Qa("change",function(){var d=c.state;if(2==d||3==d||4==d)Zc(e),b--,0===b&&(this.b.forEach(Zc),this.b=null,yz(this))},!1,this);this.b.push(e)}},this);this.c.forEach(function(b){0==b.state&&b.load()});0===b&&yz(this)}};function zz(b,c){var d=c||{},e=d.document||document,f=Kg("SCRIPT"),g={Rh:f,yc:void 0},h=new fy(Az,g),k=null,m=null!=d.timeout?d.timeout:5E3;0Terms of Use'}); -Oz.prototype.D=function(b){if(200!=b.statusCode||"OK"!=b.statusDescription||"ValidCredentials"!=b.authenticationResultCode||1!=b.resourceSets.length||1!=b.resourceSets[0].resources.length)Ah(this,"error");else{var c=b.brandLogoUri;-1==c.indexOf("https")&&(c=c.replace("http","https"));var d=b.resourceSets[0].resources[0],e=-1==this.g?d.zoomMax:this.g;b=Mh(this.f);var f=Oh({extent:b,minZoom:d.zoomMin,maxZoom:e,tileSize:d.imageWidth==d.imageHeight?d.imageWidth:[d.imageWidth,d.imageHeight]});this.tileGrid= -f;var g=this.l;this.tileUrlFunction=Wp(d.imageUrlSubdomains.map(function(b){var c=[0,0,0],e=d.imageUrl.replace("{subdomain}",b).replace("{culture}",g);return function(b){if(b)return cg(b[0],b[1],-b[2]-1,c),e.replace("{quadkey}",eg(c))}}));if(d.imageryProviders){var h=Je(Fe("EPSG:4326"),this.f);b=d.imageryProviders.map(function(b){var c=b.attribution,d={};b.coverageAreas.forEach(function(b){var c=b.zoomMin,g=Math.min(b.zoomMax,e);b=b.bbox;b=re([b[1],b[0],b[3],b[2]],h);var k,m;for(k=c;k<=g;++k)m=k.toString(), -c=Fh(f,b,k),m in d?d[m].push(c):d[m]=[c]});return new mg({html:c,tileRanges:d})});b.push(Pz);this.na(b)}this.U=c;Ah(this,"ready")}};function Qz(b){R.call(this,{attributions:b.attributions,extent:b.extent,logo:b.logo,projection:b.projection,wrapX:b.wrapX});this.G=void 0;this.ea=void 0!==b.distance?b.distance:20;this.D=[];this.C=b.source;this.C.H("change",Qz.prototype.va,this)}y(Qz,R);Qz.prototype.ga=function(){return this.C};Qz.prototype.Mc=function(b,c,d){this.C.Mc(b,c,d);c!==this.G&&(this.clear(),this.G=c,Rz(this),this.Dc(this.D))};Qz.prototype.va=function(){this.clear();Rz(this);this.Dc(this.D);this.s()}; -function Rz(b){if(void 0!==b.G){b.D.length=0;for(var c=Od(),d=b.ea*b.G,e=b.C.ye(),f={},g=0,h=e.length;gk*d?h*g/(k*n):d*g/(m*n),SETVIEWCENTERX:f[0],SETVIEWCENTERY:f[1]};Xb(e,c);return lo(no([b],e))};l.Gm=function(b){this.g=null;this.b=b;this.s()};function Uz(b){var c=void 0!==b.attributions?b.attributions:null,d=b.imageExtent,e,f;void 0!==b.imageSize&&(e=le(d)/b.imageSize[1],f=[e]);var g=void 0!==b.crossOrigin?b.crossOrigin:null,h=void 0!==b.imageLoadFunction?b.imageLoadFunction:qn;kn.call(this,{attributions:c,logo:b.logo,projection:Fe(b.projection),resolutions:f});this.b=new $x(d,e,1,c,b.url,g,h);C(this.b,"change",this.D,!1,this)}y(Uz,kn);Uz.prototype.pd=function(b){return pe(b,this.b.J())?this.b:null};function Vz(b){b=b||{};kn.call(this,{attributions:b.attributions,logo:b.logo,projection:b.projection,resolutions:b.resolutions});this.pa=void 0!==b.crossOrigin?b.crossOrigin:null;this.i=b.url;this.T=void 0!==b.imageLoadFunction?b.imageLoadFunction:qn;this.g=b.params;this.u=!0;Wz(this);this.ga=b.serverType;this.xa=void 0!==b.hidpi?b.hidpi:!0;this.b=null;this.Z=[0,0];this.ea=0;this.l=void 0!==b.ratio?b.ratio:1.5}y(Vz,kn);var Xz=[101,101];l=Vz.prototype; -l.Nm=function(b,c,d,e){if(void 0!==this.i){var f=ne(b,c,0,Xz),g={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.g.LAYERS};Xb(g,this.g,e);e=Math.floor((f[3]-b[1])/c);g[this.u?"I":"X"]=Math.floor((b[0]-f[0])/c);g[this.u?"J":"Y"]=e;return Yz(this,f,Xz,1,Fe(d),g)}};l.Pm=function(){return this.g}; -l.pd=function(b,c,d,e){if(void 0===this.i)return null;c=ln(this,c);1==d||this.xa&&void 0!==this.ga||(d=1);b=b.slice();var f=(b[0]+b[2])/2,g=(b[1]+b[3])/2,h=c/d,k=ke(b)/h,h=le(b)/h,m=this.b;if(m&&this.ea==this.c&&m.$()==c&&m.b==d&&Xd(m.J(),b))return m;if(1!=this.l){var m=this.l*ke(b)/2,n=this.l*le(b)/2;b[0]=f-m;b[1]=g-n;b[2]=f+m;b[3]=g+n}f={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};Xb(f,this.g);this.Z[0]=Math.ceil(k*this.l);this.Z[1]=Math.ceil(h*this.l);e=Yz(this, -b,this.Z,d,e,f);this.b=new $x(b,c,d,this.j,e,this.pa,this.T);this.ea=this.c;C(this.b,"change",this.D,!1,this);return this.b};l.Om=function(){return this.T}; -function Yz(b,c,d,e,f,g){g[b.u?"CRS":"SRS"]=f.a;"STYLES"in b.g||(g.STYLES=new String(""));if(1!=e)switch(b.ga){case "geoserver":e=90*e+.5|0;g.FORMAT_OPTIONS="FORMAT_OPTIONS"in g?g.FORMAT_OPTIONS+(";dpi:"+e):"dpi:"+e;break;case "mapserver":g.MAP_RESOLUTION=90*e;break;case "carmentaserver":case "qgis":g.DPI=90*e}g.WIDTH=d[0];g.HEIGHT=d[1];d=f.g;var h;b.u&&"ne"==d.substr(0,2)?h=[c[1],c[0],c[3],c[2]]:h=c;g.BBOX=h.join(",");return lo(no([b.i],g))}l.Qm=function(){return this.i}; -l.Rm=function(b){this.b=null;this.T=b;this.s()};l.Sm=function(b){b!=this.i&&(this.i=b,this.b=null,this.s())};l.Tm=function(b){Xb(this.g,b);Wz(this);this.b=null;this.s()};function Wz(b){b.u=0<=Pa(Sb(b.g,"VERSION","1.3.0"),"1.3")};function Zz(b){var c=void 0!==b.projection?b.projection:"EPSG:3857",d=void 0!==b.tileGrid?b.tileGrid:Oh({extent:Mh(c),maxZoom:b.maxZoom,tileSize:b.tileSize});Y.call(this,{attributions:b.attributions,crossOrigin:b.crossOrigin,logo:b.logo,projection:c,reprojectionErrorThreshold:b.reprojectionErrorThreshold,tileGrid:d,tileLoadFunction:b.tileLoadFunction,tilePixelRatio:b.tilePixelRatio,tileUrlFunction:b.tileUrlFunction,url:b.url,urls:b.urls,wrapX:void 0!==b.wrapX?b.wrapX:!0})}y(Zz,Y);function $z(b){b=b||{};var c;void 0!==b.attributions?c=b.attributions:c=[aA];Zz.call(this,{attributions:c,crossOrigin:void 0!==b.crossOrigin?b.crossOrigin:"anonymous",opaque:!0,maxZoom:void 0!==b.maxZoom?b.maxZoom:19,reprojectionErrorThreshold:b.reprojectionErrorThreshold,tileLoadFunction:b.tileLoadFunction,url:void 0!==b.url?b.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",wrapX:b.wrapX})}y($z,Zz);var aA=new mg({html:'© OpenStreetMap contributors.'});function bA(b){b=b||{};var c=cA[b.layer];this.g=b.layer;Zz.call(this,{attributions:c.attributions,crossOrigin:"anonymous",logo:"https://developer.mapquest.com/content/osm/mq_logo.png",maxZoom:c.maxZoom,reprojectionErrorThreshold:b.reprojectionErrorThreshold,opaque:!0,tileLoadFunction:b.tileLoadFunction,url:void 0!==b.url?b.url:"https://otile{1-4}-s.mqcdn.com/tiles/1.0.0/"+this.g+"/{z}/{x}/{y}.jpg"})}y(bA,Zz); -var dA=new mg({html:'Tiles Courtesy of MapQuest'}),cA={osm:{maxZoom:19,attributions:[dA,aA]},sat:{maxZoom:18,attributions:[dA,new mg({html:"Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency"})]},hyb:{maxZoom:18,attributions:[dA,aA]}};bA.prototype.l=function(){return this.g};(function(){var b={},c={ka:b};(function(d){if("object"===typeof b&&"undefined"!==typeof c)c.ka=d();else{var e;"undefined"!==typeof window?e=window:"undefined"!==typeof global?e=global:"undefined"!==typeof self?e=self:e=this;e.Bp=d()}})(function(){return function e(b,c,h){function k(n,q){if(!c[n]){if(!b[n]){var r="function"==typeof require&&require;if(!q&&r)return r(n,!0);if(m)return m(n,!0);r=Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r;}r=c[n]={ka:{}};b[n][0].call(r.ka,function(c){var e= -b[n][1][c];return k(e?e:c)},r,r.ka,e,b,c,h)}return c[n].ka}for(var m="function"==typeof require&&require,n=0;nthis.bj;)this.Yc.shift().$c(null,null)};m.prototype.eg=function(){if(0===this.Qd&&0Stamen Design, under CC BY 3.0.'}),aA];function qA(b){b=b||{};var c=void 0!==b.params?b.params:{};Y.call(this,{attributions:b.attributions,crossOrigin:b.crossOrigin,logo:b.logo,projection:b.projection,reprojectionErrorThreshold:b.reprojectionErrorThreshold,tileGrid:b.tileGrid,tileLoadFunction:b.tileLoadFunction,tileUrlFunction:ra(this.G,this),url:b.url,urls:b.urls,wrapX:void 0!==b.wrapX?b.wrapX:!0});this.g=c;this.l=Od()}y(qA,Y);qA.prototype.D=function(){return this.g}; -qA.prototype.Pb=function(b,c,d){b=qA.da.Pb.call(this,b,c,d);return 1==c?b:nd(b,c,this.b)}; -qA.prototype.G=function(b,c,d){var e=this.tileGrid;e||(e=this.hb(d));if(!(e.a.length<=b[0])){var f=e.Aa(b,this.l),g=od(e.Ha(b[0]),this.b);1!=c&&(g=nd(g,c,this.b));e={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};Xb(e,this.g);var h=this.urls;h?(d=d.a.split(":").pop(),e.SIZE=g[0]+","+g[1],e.BBOX=f.join(","),e.BBOXSR=d,e.IMAGESR=d,e.DPI=Math.round(90*c),b=1==h.length?h[0]:h[pd((b[1]<g||e>g;)f.push([Math.ceil(d/g),Math.ceil(e/g)]),g+=g;break;case "truncated":for(;d>g||e>g;)f.push([Math.ceil(d/g),Math.ceil(e/g)]),d>>=1,e>>=1}f.push([1,1]);f.reverse();for(var g=[1],h=[0],e=1,d=f.length;ethis.b||d+this.a>this.b)return null;e=KA(this,!1,b,c,d,e,g);if(!e)return null;b=KA(this,!0,b,c,d,void 0!==f?f:ve,g);return{offsetX:e.offsetX,offsetY:e.offsetY,image:e.image,Mg:b.image}}; -function KA(b,c,d,e,f,g,h){var k=c?b.j:b.g,m,n,p;n=0;for(p=k.length;n=c+this.a&&g.height>=d+this.a)return k={offsetX:g.x+this.a,offsetY:g.y+this.a,image:this.b},this.f[b]=k,e.call(f,this.g,g.x+this.a,g.y+this.a),b=h,c=c+this.a,d=d+this.a,f=e=void 0,g.width-c>g.height-d?(e={x:g.x+c,y:g.y,width:g.width-c,height:g.height},f={x:g.x,y:g.y+d,width:c,height:g.height-d},LA(this,b,e,f)):(e={x:g.x+c,y:g.y,width:g.width-c,height:d},f={x:g.x,y:g.y+d,width:g.width,height:g.height- -d},LA(this,b,e,f)),k;return null};function LA(b,c,d,e){c=[c,1];0f&&(f=0);g=d.TileMatrixSetLink[f].TileMatrixSet; -var h=d.Format[0];"format"in c&&(h=c.format);f=gb(d.Style,function(b){return"style"in c?b.Title==c.style:b.isDefault});0>f&&(f=0);f=d.Style[f].Identifier;var k={};"Dimension"in d&&d.Dimension.forEach(function(b){var c=b.Identifier,d=b.Default;void 0===d&&(d=b.Value[0]);k[c]=d});var m=fb(b.Contents.TileMatrixSet,function(b){return b.Identifier==g}),n;n="projection"in c?Fe(c.projection):Fe(m.SupportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"));var p=d.WGS84BoundingBox,q,r;void 0!==p&& -(r=Fe("EPSG:4326").J(),r=p[0]==r[0]&&p[2]==r[2],q=af(p,"EPSG:4326",n),(p=n.J())&&(Xd(p,q)||(q=void 0)));var m=EA(m,q),t=[];q=c.requestEncoding;q=void 0!==q?q:"";if(b.hasOwnProperty("OperationsMetadata")&&b.OperationsMetadata.hasOwnProperty("GetTile")&&0!==q.indexOf("REST"))for(var d=b.OperationsMetadata.GetTile.DCP.HTTP.Get,p=0,x=d.length;p 0) { - this.content[0] = end; - this.sinkDown(0); - } - return result; - }, - - remove: function(node) { - var length = this.content.length; - // To remove a value, we must search through the array to find - // it. - for (var i = 0; i < length; i++) { - if (this.content[i] != node) continue; - // When it is found, the process seen in 'pop' is repeated - // to fill up the hole. - var end = this.content.pop(); - // If the element we popped was the one we needed to remove, - // we're done. - if (i == length - 1) break; - // Otherwise, we replace the removed element with the popped - // one, and allow it to float up or sink down as appropriate. - this.content[i] = end; - this.bubbleUp(i); - this.sinkDown(i); - break; - } - }, - - size: function() { - return this.content.length; - }, - - bubbleUp: function(n) { - // Fetch the element that has to be moved. - var element = this.content[n], score = this.scoreFunction(element); - // When at 0, an element can not go up any further. - while (n > 0) { - // Compute the parent element's index, and fetch it. - var parentN = Math.floor((n + 1) / 2) - 1, - parent = this.content[parentN]; - // If the parent has a lesser score, things are in order and we - // are done. - if (score >= this.scoreFunction(parent)) - break; - - // Otherwise, swap the parent with the current element and - // continue. - this.content[parentN] = element; - this.content[n] = parent; - n = parentN; - } - }, - - sinkDown: function(n) { - // Look up the target element and its score. - var length = this.content.length, - element = this.content[n], - elemScore = this.scoreFunction(element); - - while(true) { - // Compute the indices of the child elements. - var child2N = (n + 1) * 2, child1N = child2N - 1; - // This is used to store the new position of the element, - // if any. - var swap = null; - // If the first child exists (is inside the array)... - if (child1N < length) { - // Look it up and compute its score. - var child1 = this.content[child1N], - child1Score = this.scoreFunction(child1); - // If the score is less than our element's, we need to swap. - if (child1Score < elemScore) - swap = child1N; - } - // Do the same checks for the other child. - if (child2N < length) { - var child2 = this.content[child2N], - child2Score = this.scoreFunction(child2); - if (child2Score < (swap == null ? elemScore : child1Score)) - swap = child2N; - } - - // No need to swap further, we are done. - if (swap == null) break; - - // Otherwise, swap and continue. - this.content[n] = this.content[swap]; - this.content[swap] = element; - n = swap; - } - } -}; diff --git a/libs/other/OBJLoader.js b/libs/other/OBJLoader.js deleted file mode 100644 index daf80ff..0000000 --- a/libs/other/OBJLoader.js +++ /dev/null @@ -1,715 +0,0 @@ -/** - * @author mrdoob / http://mrdoob.com/ - */ - -THREE.OBJLoader = ( function () { - - // o object_name | g group_name - var object_pattern = /^[og]\s*(.+)?/; - // mtllib file_reference - var material_library_pattern = /^mtllib /; - // usemtl material_name - var material_use_pattern = /^usemtl /; - - function ParserState() { - - var state = { - objects: [], - object: {}, - - vertices: [], - normals: [], - colors: [], - uvs: [], - - materialLibraries: [], - - startObject: function ( name, fromDeclaration ) { - - // If the current object (initial from reset) is not from a g/o declaration in the parsed - // file. We need to use it for the first parsed g/o to keep things in sync. - if ( this.object && this.object.fromDeclaration === false ) { - - this.object.name = name; - this.object.fromDeclaration = ( fromDeclaration !== false ); - return; - - } - - var previousMaterial = ( this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined ); - - if ( this.object && typeof this.object._finalize === 'function' ) { - - this.object._finalize( true ); - - } - - this.object = { - name: name || '', - fromDeclaration: ( fromDeclaration !== false ), - - geometry: { - vertices: [], - normals: [], - colors: [], - uvs: [] - }, - materials: [], - smooth: true, - - startMaterial: function ( name, libraries ) { - - var previous = this._finalize( false ); - - // New usemtl declaration overwrites an inherited material, except if faces were declared - // after the material, then it must be preserved for proper MultiMaterial continuation. - if ( previous && ( previous.inherited || previous.groupCount <= 0 ) ) { - - this.materials.splice( previous.index, 1 ); - - } - - var material = { - index: this.materials.length, - name: name || '', - mtllib: ( Array.isArray( libraries ) && libraries.length > 0 ? libraries[ libraries.length - 1 ] : '' ), - smooth: ( previous !== undefined ? previous.smooth : this.smooth ), - groupStart: ( previous !== undefined ? previous.groupEnd : 0 ), - groupEnd: - 1, - groupCount: - 1, - inherited: false, - - clone: function ( index ) { - - var cloned = { - index: ( typeof index === 'number' ? index : this.index ), - name: this.name, - mtllib: this.mtllib, - smooth: this.smooth, - groupStart: 0, - groupEnd: - 1, - groupCount: - 1, - inherited: false - }; - cloned.clone = this.clone.bind( cloned ); - return cloned; - - } - }; - - this.materials.push( material ); - - return material; - - }, - - currentMaterial: function () { - - if ( this.materials.length > 0 ) { - - return this.materials[ this.materials.length - 1 ]; - - } - - return undefined; - - }, - - _finalize: function ( end ) { - - var lastMultiMaterial = this.currentMaterial(); - if ( lastMultiMaterial && lastMultiMaterial.groupEnd === - 1 ) { - - lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3; - lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart; - lastMultiMaterial.inherited = false; - - } - - // Ignore objects tail materials if no face declarations followed them before a new o/g started. - if ( end && this.materials.length > 1 ) { - - for ( var mi = this.materials.length - 1; mi >= 0; mi -- ) { - - if ( this.materials[ mi ].groupCount <= 0 ) { - - this.materials.splice( mi, 1 ); - - } - - } - - } - - // Guarantee at least one empty material, this makes the creation later more straight forward. - if ( end && this.materials.length === 0 ) { - - this.materials.push( { - name: '', - smooth: this.smooth - } ); - - } - - return lastMultiMaterial; - - } - }; - - // Inherit previous objects material. - // Spec tells us that a declared material must be set to all objects until a new material is declared. - // If a usemtl declaration is encountered while this new object is being parsed, it will - // overwrite the inherited material. Exception being that there was already face declarations - // to the inherited material, then it will be preserved for proper MultiMaterial continuation. - - if ( previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function' ) { - - var declared = previousMaterial.clone( 0 ); - declared.inherited = true; - this.object.materials.push( declared ); - - } - - this.objects.push( this.object ); - - }, - - finalize: function () { - - if ( this.object && typeof this.object._finalize === 'function' ) { - - this.object._finalize( true ); - - } - - }, - - parseVertexIndex: function ( value, len ) { - - var index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; - - }, - - parseNormalIndex: function ( value, len ) { - - var index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; - - }, - - parseUVIndex: function ( value, len ) { - - var index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 2 ) * 2; - - }, - - addVertex: function ( a, b, c ) { - - var src = this.vertices; - var dst = this.object.geometry.vertices; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); - - }, - - addVertexLine: function ( a ) { - - var src = this.vertices; - var dst = this.object.geometry.vertices; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - - }, - - addNormal: function ( a, b, c ) { - - var src = this.normals; - var dst = this.object.geometry.normals; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); - - }, - - addColor: function ( a, b, c ) { - - var src = this.colors; - var dst = this.object.geometry.colors; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); - - }, - - addUV: function ( a, b, c ) { - - var src = this.uvs; - var dst = this.object.geometry.uvs; - - dst.push( src[ a + 0 ], src[ a + 1 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ] ); - - }, - - addUVLine: function ( a ) { - - var src = this.uvs; - var dst = this.object.geometry.uvs; - - dst.push( src[ a + 0 ], src[ a + 1 ] ); - - }, - - addFace: function ( a, b, c, ua, ub, uc, na, nb, nc ) { - - var vLen = this.vertices.length; - - var ia = this.parseVertexIndex( a, vLen ); - var ib = this.parseVertexIndex( b, vLen ); - var ic = this.parseVertexIndex( c, vLen ); - - this.addVertex( ia, ib, ic ); - - if ( ua !== undefined ) { - - var uvLen = this.uvs.length; - - ia = this.parseUVIndex( ua, uvLen ); - ib = this.parseUVIndex( ub, uvLen ); - ic = this.parseUVIndex( uc, uvLen ); - - this.addUV( ia, ib, ic ); - - } - - if ( na !== undefined ) { - - // Normals are many times the same. If so, skip function call and parseInt. - var nLen = this.normals.length; - ia = this.parseNormalIndex( na, nLen ); - - ib = na === nb ? ia : this.parseNormalIndex( nb, nLen ); - ic = na === nc ? ia : this.parseNormalIndex( nc, nLen ); - - this.addNormal( ia, ib, ic ); - - } - - if ( this.colors.length > 0 ) { - - this.addColor( ia, ib, ic ); - - } - - }, - - addLineGeometry: function ( vertices, uvs ) { - - this.object.geometry.type = 'Line'; - - var vLen = this.vertices.length; - var uvLen = this.uvs.length; - - for ( var vi = 0, l = vertices.length; vi < l; vi ++ ) { - - this.addVertexLine( this.parseVertexIndex( vertices[ vi ], vLen ) ); - - } - - for ( var uvi = 0, l = uvs.length; uvi < l; uvi ++ ) { - - this.addUVLine( this.parseUVIndex( uvs[ uvi ], uvLen ) ); - - } - - } - - }; - - state.startObject( '', false ); - - return state; - - } - - // - - function OBJLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; - - this.materials = null; - - } - - OBJLoader.prototype = { - - constructor: OBJLoader, - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new THREE.FileLoader( scope.manager ); - loader.setPath( this.path ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( text ) ); - - }, onProgress, onError ); - - }, - - setPath: function ( value ) { - - this.path = value; - - }, - - setMaterials: function ( materials ) { - - this.materials = materials; - - return this; - - }, - - parse: function ( text ) { - - console.time( 'OBJLoader' ); - - var state = new ParserState(); - - if ( text.indexOf( '\r\n' ) !== - 1 ) { - - // This is faster than String.split with regex that splits on both - text = text.replace( /\r\n/g, '\n' ); - - } - - if ( text.indexOf( '\\\n' ) !== - 1 ) { - - // join lines separated by a line continuation character (\) - text = text.replace( /\\\n/g, '' ); - - } - - var lines = text.split( '\n' ); - var line = '', lineFirstChar = ''; - var lineLength = 0; - var result = []; - - // Faster to just trim left side of the line. Use if available. - var trimLeft = ( typeof ''.trimLeft === 'function' ); - - for ( var i = 0, l = lines.length; i < l; i ++ ) { - - line = lines[ i ]; - - line = trimLeft ? line.trimLeft() : line.trim(); - - lineLength = line.length; - - if ( lineLength === 0 ) continue; - - lineFirstChar = line.charAt( 0 ); - - // @todo invoke passed in handler if any - if ( lineFirstChar === '#' ) continue; - - if ( lineFirstChar === 'v' ) { - - var data = line.split( /\s+/ ); - - switch ( data[ 0 ] ) { - - case 'v': - state.vertices.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ), - parseFloat( data[ 3 ] ) - ); - if ( data.length === 8 ) { - - state.colors.push( - parseFloat( data[ 4 ] ), - parseFloat( data[ 5 ] ), - parseFloat( data[ 6 ] ) - - ); - - } - break; - case 'vn': - state.normals.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ), - parseFloat( data[ 3 ] ) - ); - break; - case 'vt': - state.uvs.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ) - ); - break; - - } - - } else if ( lineFirstChar === 'f' ) { - - var lineData = line.substr( 1 ).trim(); - var vertexData = lineData.split( /\s+/ ); - var faceVertices = []; - - // Parse the face vertex data into an easy to work with format - - for ( var j = 0, jl = vertexData.length; j < jl; j ++ ) { - - var vertex = vertexData[ j ]; - - if ( vertex.length > 0 ) { - - var vertexParts = vertex.split( '/' ); - faceVertices.push( vertexParts ); - - } - - } - - // Draw an edge between the first vertex and all subsequent vertices to form an n-gon - - var v1 = faceVertices[ 0 ]; - - for ( var j = 1, jl = faceVertices.length - 1; j < jl; j ++ ) { - - var v2 = faceVertices[ j ]; - var v3 = faceVertices[ j + 1 ]; - - state.addFace( - v1[ 0 ], v2[ 0 ], v3[ 0 ], - v1[ 1 ], v2[ 1 ], v3[ 1 ], - v1[ 2 ], v2[ 2 ], v3[ 2 ] - ); - - } - - } else if ( lineFirstChar === 'l' ) { - - var lineParts = line.substring( 1 ).trim().split( " " ); - var lineVertices = [], lineUVs = []; - - if ( line.indexOf( "/" ) === - 1 ) { - - lineVertices = lineParts; - - } else { - - for ( var li = 0, llen = lineParts.length; li < llen; li ++ ) { - - var parts = lineParts[ li ].split( "/" ); - - if ( parts[ 0 ] !== "" ) lineVertices.push( parts[ 0 ] ); - if ( parts[ 1 ] !== "" ) lineUVs.push( parts[ 1 ] ); - - } - - } - state.addLineGeometry( lineVertices, lineUVs ); - - } else if ( ( result = object_pattern.exec( line ) ) !== null ) { - - // o object_name - // or - // g group_name - - // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869 - // var name = result[ 0 ].substr( 1 ).trim(); - var name = ( " " + result[ 0 ].substr( 1 ).trim() ).substr( 1 ); - - state.startObject( name ); - - } else if ( material_use_pattern.test( line ) ) { - - // material - - state.object.startMaterial( line.substring( 7 ).trim(), state.materialLibraries ); - - } else if ( material_library_pattern.test( line ) ) { - - // mtl file - - state.materialLibraries.push( line.substring( 7 ).trim() ); - - } else if ( lineFirstChar === 's' ) { - - result = line.split( ' ' ); - - // smooth shading - - // @todo Handle files that have varying smooth values for a set of faces inside one geometry, - // but does not define a usemtl for each face set. - // This should be detected and a dummy material created (later MultiMaterial and geometry groups). - // This requires some care to not create extra material on each smooth value for "normal" obj files. - // where explicit usemtl defines geometry groups. - // Example asset: examples/models/obj/cerberus/Cerberus.obj - - /* - * http://paulbourke.net/dataformats/obj/ - * or - * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf - * - * From chapter "Grouping" Syntax explanation "s group_number": - * "group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off. - * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form - * surfaces, smoothing groups are either turned on or off; there is no difference between values greater - * than 0." - */ - if ( result.length > 1 ) { - - var value = result[ 1 ].trim().toLowerCase(); - state.object.smooth = ( value !== '0' && value !== 'off' ); - - } else { - - // ZBrush can produce "s" lines #11707 - state.object.smooth = true; - - } - var material = state.object.currentMaterial(); - if ( material ) material.smooth = state.object.smooth; - - } else { - - // Handle null terminated files without exception - if ( line === '\0' ) continue; - - throw new Error( 'THREE.OBJLoader: Unexpected line: "' + line + '"' ); - - } - - } - - state.finalize(); - - var container = new THREE.Group(); - container.materialLibraries = [].concat( state.materialLibraries ); - - for ( var i = 0, l = state.objects.length; i < l; i ++ ) { - - var object = state.objects[ i ]; - var geometry = object.geometry; - var materials = object.materials; - var isLine = ( geometry.type === 'Line' ); - - // Skip o/g line declarations that did not follow with any faces - if ( geometry.vertices.length === 0 ) continue; - - var buffergeometry = new THREE.BufferGeometry(); - - buffergeometry.addAttribute( 'position', new THREE.Float32BufferAttribute( geometry.vertices, 3 ) ); - - if ( geometry.normals.length > 0 ) { - - buffergeometry.addAttribute( 'normal', new THREE.Float32BufferAttribute( geometry.normals, 3 ) ); - - } else { - - buffergeometry.computeVertexNormals(); - - } - - if ( geometry.colors.length > 0 ) { - - buffergeometry.addAttribute( 'color', new THREE.Float32BufferAttribute( geometry.colors, 3 ) ); - - } - - if ( geometry.uvs.length > 0 ) { - - buffergeometry.addAttribute( 'uv', new THREE.Float32BufferAttribute( geometry.uvs, 2 ) ); - - } - - // Create materials - - var createdMaterials = []; - - for ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) { - - var sourceMaterial = materials[ mi ]; - var material = undefined; - - if ( this.materials !== null ) { - - material = this.materials.create( sourceMaterial.name ); - - // mtl etc. loaders probably can't create line materials correctly, copy properties to a line material. - if ( isLine && material && ! ( material instanceof THREE.LineBasicMaterial ) ) { - - var materialLine = new THREE.LineBasicMaterial(); - materialLine.copy( material ); - material = materialLine; - - } - - } - - if ( ! material ) { - - material = ( ! isLine ? new THREE.MeshPhongMaterial() : new THREE.LineBasicMaterial() ); - material.name = sourceMaterial.name; - - } - - material.flatShading = sourceMaterial.smooth ? false : true; - - createdMaterials.push( material ); - - } - - // Create mesh - - var mesh; - - if ( createdMaterials.length > 1 ) { - - for ( var mi = 0, miLen = materials.length; mi < miLen; mi ++ ) { - - var sourceMaterial = materials[ mi ]; - buffergeometry.addGroup( sourceMaterial.groupStart, sourceMaterial.groupCount, mi ); - - } - - mesh = ( ! isLine ? new THREE.Mesh( buffergeometry, createdMaterials ) : new THREE.LineSegments( buffergeometry, createdMaterials ) ); - - } else { - - mesh = ( ! isLine ? new THREE.Mesh( buffergeometry, createdMaterials[ 0 ] ) : new THREE.LineSegments( buffergeometry, createdMaterials[ 0 ] ) ); - - } - - mesh.name = object.name; - - container.add( mesh ); - - } - - console.timeEnd( 'OBJLoader' ); - - return container; - - } - - }; - - return OBJLoader; - -} )(); diff --git a/libs/other/OrbitControls.js b/libs/other/OrbitControls.js deleted file mode 100644 index e3caef2..0000000 --- a/libs/other/OrbitControls.js +++ /dev/null @@ -1,625 +0,0 @@ -/** - * @author qiao / https://github.com/qiao - * @author mrdoob / http://mrdoob.com - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author erich666 / http://erichaines.com - */ -/*global THREE, console */ - -// This set of controls performs orbiting, dollying (zooming), and panning. It maintains -// the "up" direction as +Y, unlike the TrackballControls. Touch on tablet and phones is -// supported. -// -// Orbit - left mouse / touch: one finger move -// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish -// Pan - right mouse, or arrow keys / touch: three finter swipe -// -// This is a drop-in replacement for (most) TrackballControls used in examples. -// That is, include this js file and wherever you see: -// controls = new THREE.TrackballControls( camera ); -// controls.target.z = 150; -// Simple substitute "OrbitControls" and the control should work as-is. - -THREE.OrbitControls = function ( object, domElement ) { - - this.object = object; - this.domElement = ( domElement !== undefined ) ? domElement : document; - - // API - - // Set to false to disable this control - this.enabled = true; - - // "target" sets the location of focus, where the control orbits around - // and where it pans with respect to. - this.target = new THREE.Vector3(); - - // center is old, deprecated; use "target" instead - this.center = this.target; - - // This option actually enables dollying in and out; left as "zoom" for - // backwards compatibility - this.noZoom = false; - this.zoomSpeed = 1.0; - - // Limits to how far you can dolly in and out - this.minDistance = 0; - this.maxDistance = Infinity; - - // Set to true to disable this control - this.noRotate = false; - this.rotateSpeed = 1.0; - - // Set to true to disable this control - this.noPan = false; - this.keyPanSpeed = 7.0; // pixels moved per arrow key push - - // Set to true to automatically rotate around the target - this.autoRotate = false; - this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 - - // How far you can orbit vertically, upper and lower limits. - // Range is 0 to Math.PI radians. - this.minPolarAngle = 0; // radians - this.maxPolarAngle = Math.PI; // radians - - // Set to true to disable use of the keys - this.noKeys = false; - - // The four arrow keys - this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; - - //////////// - // internals - - var scope = this; - - var EPS = 0.000001; - - var rotateStart = new THREE.Vector2(); - var rotateEnd = new THREE.Vector2(); - var rotateDelta = new THREE.Vector2(); - - var panStart = new THREE.Vector2(); - var panEnd = new THREE.Vector2(); - var panDelta = new THREE.Vector2(); - var panOffset = new THREE.Vector3(); - - var offset = new THREE.Vector3(); - - var dollyStart = new THREE.Vector2(); - var dollyEnd = new THREE.Vector2(); - var dollyDelta = new THREE.Vector2(); - - var phiDelta = 0; - var thetaDelta = 0; - var scale = 1; - var pan = new THREE.Vector3(); - - var lastPosition = new THREE.Vector3(); - - var STATE = { NONE : -1, ROTATE : 0, DOLLY : 1, PAN : 2, TOUCH_ROTATE : 3, TOUCH_DOLLY : 4, TOUCH_PAN : 5 }; - - var state = STATE.NONE; - - // for reset - - this.target0 = this.target.clone(); - this.position0 = this.object.position.clone(); - - // events - - var changeEvent = { type: 'change' }; - var startEvent = { type: 'start'}; - var endEvent = { type: 'end'}; - - this.rotateLeft = function ( angle ) { - - if ( angle === undefined ) { - - angle = getAutoRotationAngle(); - - } - - thetaDelta -= angle; - - }; - - this.rotateUp = function ( angle ) { - - if ( angle === undefined ) { - - angle = getAutoRotationAngle(); - - } - - phiDelta -= angle; - - }; - - // pass in distance in world space to move left - this.panLeft = function ( distance ) { - - var te = this.object.matrix.elements; - - // get X column of matrix - panOffset.set( te[ 0 ], te[ 1 ], te[ 2 ] ); - panOffset.multiplyScalar( - distance ); - - pan.add( panOffset ); - - }; - - // pass in distance in world space to move up - this.panUp = function ( distance ) { - - var te = this.object.matrix.elements; - - // get Y column of matrix - panOffset.set( te[ 4 ], te[ 5 ], te[ 6 ] ); - panOffset.multiplyScalar( distance ); - - pan.add( panOffset ); - - }; - - // pass in x,y of change desired in pixel space, - // right and down are positive - this.pan = function ( deltaX, deltaY ) { - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - if ( scope.object.fov !== undefined ) { - - // perspective - var position = scope.object.position; - var offset = position.clone().sub( scope.target ); - var targetDistance = offset.length(); - - // half of the fov is center to top of screen - targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); - - // we actually don't use screenWidth, since perspective camera is fixed to screen height - scope.panLeft( 2 * deltaX * targetDistance / element.clientHeight ); - scope.panUp( 2 * deltaY * targetDistance / element.clientHeight ); - - } else if ( scope.object.top !== undefined ) { - - // orthographic - scope.panLeft( deltaX * (scope.object.right - scope.object.left) / element.clientWidth ); - scope.panUp( deltaY * (scope.object.top - scope.object.bottom) / element.clientHeight ); - - } else { - - // camera neither orthographic or perspective - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); - - } - - }; - - this.dollyIn = function ( dollyScale ) { - - if ( dollyScale === undefined ) { - - dollyScale = getZoomScale(); - - } - - scale /= dollyScale; - - }; - - this.dollyOut = function ( dollyScale ) { - - if ( dollyScale === undefined ) { - - dollyScale = getZoomScale(); - - } - - scale *= dollyScale; - - }; - - this.update = function () { - - var position = this.object.position; - - offset.copy( position ).sub( this.target ); - - // angle from z-axis around y-axis - - var theta = Math.atan2( offset.x, offset.z ); - - // angle from y-axis - - var phi = Math.atan2( Math.sqrt( offset.x * offset.x + offset.z * offset.z ), offset.y ); - - if ( this.autoRotate ) { - - this.rotateLeft( getAutoRotationAngle() ); - - } - - theta += thetaDelta; - phi += phiDelta; - - // restrict phi to be between desired limits - phi = Math.max( this.minPolarAngle, Math.min( this.maxPolarAngle, phi ) ); - - // restrict phi to be betwee EPS and PI-EPS - phi = Math.max( EPS, Math.min( Math.PI - EPS, phi ) ); - - var radius = offset.length() * scale; - - // restrict radius to be between desired limits - radius = Math.max( this.minDistance, Math.min( this.maxDistance, radius ) ); - - // move target to panned location - this.target.add( pan ); - - offset.x = radius * Math.sin( phi ) * Math.sin( theta ); - offset.y = radius * Math.cos( phi ); - offset.z = radius * Math.sin( phi ) * Math.cos( theta ); - - position.copy( this.target ).add( offset ); - - this.object.lookAt( this.target ); - - thetaDelta = 0; - phiDelta = 0; - scale = 1; - pan.set( 0, 0, 0 ); - - if ( lastPosition.distanceTo( this.object.position ) > 0 ) { - - this.dispatchEvent( changeEvent ); - - lastPosition.copy( this.object.position ); - - } - - }; - - - this.reset = function () { - - state = STATE.NONE; - - this.target.copy( this.target0 ); - this.object.position.copy( this.position0 ); - - this.update(); - - }; - - function getAutoRotationAngle() { - - return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; - - } - - function getZoomScale() { - - return Math.pow( 0.95, scope.zoomSpeed ); - - } - - function onMouseDown( event ) { - - if ( scope.enabled === false ) return; - event.preventDefault(); - - if ( event.button === 0 ) { - if ( scope.noRotate === true ) return; - - state = STATE.ROTATE; - - rotateStart.set( event.clientX, event.clientY ); - - } else if ( event.button === 1 ) { - if ( scope.noZoom === true ) return; - - state = STATE.DOLLY; - - dollyStart.set( event.clientX, event.clientY ); - - } else if ( event.button === 2 ) { - if ( scope.noPan === true ) return; - - state = STATE.PAN; - - panStart.set( event.clientX, event.clientY ); - - } - - scope.domElement.addEventListener( 'mousemove', onMouseMove, false ); - scope.domElement.addEventListener( 'mouseup', onMouseUp, false ); - scope.dispatchEvent( startEvent ); - - } - - function onMouseMove( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - if ( state === STATE.ROTATE ) { - - if ( scope.noRotate === true ) return; - - rotateEnd.set( event.clientX, event.clientY ); - rotateDelta.subVectors( rotateEnd, rotateStart ); - - // rotating across whole screen goes 360 degrees around - scope.rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); - - // rotating up and down along whole screen attempts to go 360, but limited to 180 - scope.rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); - - rotateStart.copy( rotateEnd ); - - } else if ( state === STATE.DOLLY ) { - - if ( scope.noZoom === true ) return; - - dollyEnd.set( event.clientX, event.clientY ); - dollyDelta.subVectors( dollyEnd, dollyStart ); - - if ( dollyDelta.y > 0 ) { - - scope.dollyIn(); - - } else { - - scope.dollyOut(); - - } - - dollyStart.copy( dollyEnd ); - - } else if ( state === STATE.PAN ) { - - if ( scope.noPan === true ) return; - - panEnd.set( event.clientX, event.clientY ); - panDelta.subVectors( panEnd, panStart ); - - scope.pan( panDelta.x, panDelta.y ); - - panStart.copy( panEnd ); - - } - - scope.update(); - - } - - function onMouseUp( /* event */ ) { - - if ( scope.enabled === false ) return; - - scope.domElement.removeEventListener( 'mousemove', onMouseMove, false ); - scope.domElement.removeEventListener( 'mouseup', onMouseUp, false ); - scope.dispatchEvent( endEvent ); - state = STATE.NONE; - - } - - function onMouseWheel( event ) { - - if ( scope.enabled === false || scope.noZoom === true ) return; - - event.preventDefault(); - - var delta = 0; - - if ( event.wheelDelta !== undefined ) { // WebKit / Opera / Explorer 9 - - delta = event.wheelDelta; - - } else if ( event.detail !== undefined ) { // Firefox - - delta = - event.detail; - - } - - if ( delta > 0 ) { - - scope.dollyOut(); - - } else { - - scope.dollyIn(); - - } - - scope.update(); - scope.dispatchEvent( startEvent ); - scope.dispatchEvent( endEvent ); - - } - - function onKeyDown( event ) { - - if ( scope.enabled === false || scope.noKeys === true || scope.noPan === true ) return; - - switch ( event.keyCode ) { - - case scope.keys.UP: - scope.pan( 0, scope.keyPanSpeed ); - scope.update(); - break; - - case scope.keys.BOTTOM: - scope.pan( 0, - scope.keyPanSpeed ); - scope.update(); - break; - - case scope.keys.LEFT: - scope.pan( scope.keyPanSpeed, 0 ); - scope.update(); - break; - - case scope.keys.RIGHT: - scope.pan( - scope.keyPanSpeed, 0 ); - scope.update(); - break; - - } - - } - - function touchstart( event ) { - - if ( scope.enabled === false ) return; - - switch ( event.touches.length ) { - - case 1: // one-fingered touch: rotate - - if ( scope.noRotate === true ) return; - - state = STATE.TOUCH_ROTATE; - - rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - break; - - case 2: // two-fingered touch: dolly - - if ( scope.noZoom === true ) return; - - state = STATE.TOUCH_DOLLY; - - var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; - var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; - var distance = Math.sqrt( dx * dx + dy * dy ); - dollyStart.set( 0, distance ); - break; - - case 3: // three-fingered touch: pan - - if ( scope.noPan === true ) return; - - state = STATE.TOUCH_PAN; - - panStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - break; - - default: - - state = STATE.NONE; - - } - - scope.dispatchEvent( startEvent ); - - } - - function touchmove( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - event.stopPropagation(); - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - switch ( event.touches.length ) { - - case 1: // one-fingered touch: rotate - - if ( scope.noRotate === true ) return; - if ( state !== STATE.TOUCH_ROTATE ) return; - - rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - rotateDelta.subVectors( rotateEnd, rotateStart ); - - // rotating across whole screen goes 360 degrees around - scope.rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); - // rotating up and down along whole screen attempts to go 360, but limited to 180 - scope.rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); - - rotateStart.copy( rotateEnd ); - - scope.update(); - break; - - case 2: // two-fingered touch: dolly - - if ( scope.noZoom === true ) return; - if ( state !== STATE.TOUCH_DOLLY ) return; - - var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; - var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; - var distance = Math.sqrt( dx * dx + dy * dy ); - - dollyEnd.set( 0, distance ); - dollyDelta.subVectors( dollyEnd, dollyStart ); - - if ( dollyDelta.y > 0 ) { - - scope.dollyOut(); - - } else { - - scope.dollyIn(); - - } - - dollyStart.copy( dollyEnd ); - - scope.update(); - break; - - case 3: // three-fingered touch: pan - - if ( scope.noPan === true ) return; - if ( state !== STATE.TOUCH_PAN ) return; - - panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - panDelta.subVectors( panEnd, panStart ); - - scope.pan( panDelta.x, panDelta.y ); - - panStart.copy( panEnd ); - - scope.update(); - break; - - default: - - state = STATE.NONE; - - } - - } - - function touchend( /* event */ ) { - - if ( scope.enabled === false ) return; - - scope.dispatchEvent( endEvent ); - state = STATE.NONE; - - } - - this.domElement.addEventListener( 'contextmenu', function ( event ) { event.preventDefault(); }, false ); - this.domElement.addEventListener( 'mousedown', onMouseDown, false ); - this.domElement.addEventListener( 'mousewheel', onMouseWheel, false ); - this.domElement.addEventListener( 'DOMMouseScroll', onMouseWheel, false ); // firefox - - this.domElement.addEventListener( 'touchstart', touchstart, false ); - this.domElement.addEventListener( 'touchend', touchend, false ); - this.domElement.addEventListener( 'touchmove', touchmove, false ); - - window.addEventListener( 'keydown', onKeyDown, false ); - -}; - -THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); \ No newline at end of file diff --git a/libs/other/PLYLoader.js b/libs/other/PLYLoader.js deleted file mode 100644 index 16d6d18..0000000 --- a/libs/other/PLYLoader.js +++ /dev/null @@ -1,498 +0,0 @@ -/** - * @author Wei Meng / http://about.me/menway - * - * Utilizes Three.js which is made available under the MIT license. - * Copyright © 2010-2015 three.js authors Ricardo Cabello (mrdoob) - * Description: A THREE loader for PLY ASCII files (known as the Polygon - * File Format or the Stanford Triangle Format). - * - * Limitations: ASCII decoding assumes file is UTF-8. - * - * Usage: - * var loader = new THREE.PLYLoader(); - * loader.load('./models/ply/ascii/dolphins.ply', function (geometry) { - * - * scene.add( new THREE.Mesh( geometry ) ); - * - * } ); - * - * If the PLY file uses non standard property names, they can be mapped while - * loading. For example, the following maps the properties - * “diffuse_(red|green|blue)†in the file to standard color names. - * - * loader.setPropertyNameMapping( { - * diffuse_red: 'red', - * diffuse_green: 'green', - * diffuse_blue: 'blue' - * } ); - * - */ - - -THREE.PLYLoader = function ( manager ) { - - this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; - - this.propertyNameMapping = {}; - -}; - -THREE.PLYLoader.prototype = { - - constructor: THREE.PLYLoader, - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new THREE.FileLoader( this.manager ); - loader.setResponseType( 'arraybuffer' ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( text ) ); - - }, onProgress, onError ); - - }, - - setPropertyNameMapping: function ( mapping ) { - - this.propertyNameMapping = mapping; - - }, - - parse: function ( data ) { - - function isASCII( data ) { - - var header = parseHeader( bin2str( data ) ); - return header.format === 'ascii'; - - } - - function bin2str( buf ) { - - var array_buffer = new Uint8Array( buf ); - var str = ''; - - for ( var i = 0; i < buf.byteLength; i ++ ) { - - str += String.fromCharCode( array_buffer[ i ] ); // implicitly assumes little-endian - - } - - return str; - - } - - function parseHeader( data ) { - - var patternHeader = /ply([\s\S]*)end_header\s/; - var headerText = ''; - var headerLength = 0; - var result = patternHeader.exec( data ); - - if ( result !== null ) { - - headerText = result [ 1 ]; - headerLength = result[ 0 ].length; - - } - - var header = { - comments: [], - elements: [], - headerLength: headerLength - }; - - var lines = headerText.split( '\n' ); - var currentElement; - var lineType, lineValues; - - function make_ply_element_property( propertValues, propertyNameMapping ) { - - var property = { type: propertValues[ 0 ] }; - - if ( property.type === 'list' ) { - - property.name = propertValues[ 3 ]; - property.countType = propertValues[ 1 ]; - property.itemType = propertValues[ 2 ]; - - } else { - - property.name = propertValues[ 1 ]; - - } - - if ( property.name in propertyNameMapping ) { - - property.name = propertyNameMapping[ property.name ]; - - } - - return property; - - } - - for ( var i = 0; i < lines.length; i ++ ) { - - var line = lines[ i ]; - line = line.trim(); - - if ( line === '' ) continue; - - lineValues = line.split( /\s+/ ); - lineType = lineValues.shift(); - line = lineValues.join( ' ' ); - - switch ( lineType ) { - - case 'format': - - header.format = lineValues[ 0 ]; - header.version = lineValues[ 1 ]; - - break; - - case 'comment': - - header.comments.push( line ); - - break; - - case 'element': - - if ( currentElement !== undefined ) { - - header.elements.push( currentElement ); - - } - - currentElement = {}; - currentElement.name = lineValues[ 0 ]; - currentElement.count = parseInt( lineValues[ 1 ] ); - currentElement.properties = []; - - break; - - case 'property': - - currentElement.properties.push( make_ply_element_property( lineValues, scope.propertyNameMapping ) ); - - break; - - - default: - - console.log( 'unhandled', lineType, lineValues ); - - } - - } - - if ( currentElement !== undefined ) { - - header.elements.push( currentElement ); - - } - - return header; - - } - - function parseASCIINumber( n, type ) { - - switch ( type ) { - - case 'char': case 'uchar': case 'short': case 'ushort': case 'int': case 'uint': - case 'int8': case 'uint8': case 'int16': case 'uint16': case 'int32': case 'uint32': - - return parseInt( n ); - - case 'float': case 'double': case 'float32': case 'float64': - - return parseFloat( n ); - - } - - } - - function parseASCIIElement( properties, line ) { - - var values = line.split( /\s+/ ); - - var element = {}; - - for ( var i = 0; i < properties.length; i ++ ) { - - if ( properties[ i ].type === 'list' ) { - - var list = []; - var n = parseASCIINumber( values.shift(), properties[ i ].countType ); - - for ( var j = 0; j < n; j ++ ) { - - list.push( parseASCIINumber( values.shift(), properties[ i ].itemType ) ); - - } - - element[ properties[ i ].name ] = list; - - } else { - - element[ properties[ i ].name ] = parseASCIINumber( values.shift(), properties[ i ].type ); - - } - - } - - return element; - - } - - function parseASCII( data ) { - - // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format) - - var buffer = { - indices : [], - vertices : [], - normals : [], - uvs : [], - colors : [] - }; - - var result; - - var header = parseHeader( data ); - - var patternBody = /end_header\s([\s\S]*)$/; - var body = ''; - if ( ( result = patternBody.exec( data ) ) !== null ) { - - body = result [ 1 ]; - - } - - var lines = body.split( '\n' ); - var currentElement = 0; - var currentElementCount = 0; - - for ( var i = 0; i < lines.length; i ++ ) { - - var line = lines[ i ]; - line = line.trim(); - if ( line === '' ) { - - continue; - - } - - if ( currentElementCount >= header.elements[ currentElement ].count ) { - - currentElement ++; - currentElementCount = 0; - - } - - var element = parseASCIIElement( header.elements[ currentElement ].properties, line ); - - handleElement( buffer, header.elements[ currentElement ].name, element ); - - currentElementCount ++; - - } - - return postProcess( buffer ); - - } - - function postProcess( buffer ) { - - var geometry = new THREE.BufferGeometry(); - - // mandatory buffer data - - geometry.setIndex( new ( buffer.indices.length > 65535 ? THREE.Uint32BufferAttribute : THREE.Uint16BufferAttribute )( buffer.indices, 1 ) ); - geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( buffer.vertices, 3 ) ); - - // optional buffer data - - if ( buffer.normals.length > 0 ) { - - geometry.addAttribute( 'normal', new THREE.Float32BufferAttribute( buffer.normals, 3 ) ); - - } - - if ( buffer.uvs.length > 0 ) { - - geometry.addAttribute( 'uv', new THREE.Float32BufferAttribute( buffer.uvs, 2 ) ); - - } - - if ( buffer.colors.length > 0 ) { - - geometry.addAttribute( 'color', new THREE.Float32BufferAttribute( buffer.colors, 3 ) ); - - } - - geometry.computeBoundingSphere(); - - return geometry; - - } - - function handleElement( buffer, elementName, element ) { - - if ( elementName === 'vertex' ) { - - buffer.vertices.push( element.x, element.y, element.z ); - - if ( 'nx' in element && 'ny' in element && 'nz' in element ) { - - buffer.normals.push( element.nx, element.ny, element.nz ); - - } - - if ( 's' in element && 't' in element ) { - - buffer.uvs.push( element.s, element.t ); - - } - - if ( 'red' in element && 'green' in element && 'blue' in element ) { - - buffer.colors.push( element.red / 255.0, element.green / 255.0, element.blue / 255.0 ); - - } - - } else if ( elementName === 'face' ) { - - var vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338 - - if ( vertex_indices.length === 3 ) { - - buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 2 ] ); - - } else if ( vertex_indices.length === 4 ) { - - buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 3 ] ); - buffer.indices.push( vertex_indices[ 1 ], vertex_indices[ 2 ], vertex_indices[ 3 ] ); - - } - - } - - } - - function binaryRead( dataview, at, type, little_endian ) { - - switch ( type ) { - - // corespondences for non-specific length types here match rply: - case 'int8': case 'char': return [ dataview.getInt8( at ), 1 ]; - case 'uint8': case 'uchar': return [ dataview.getUint8( at ), 1 ]; - case 'int16': case 'short': return [ dataview.getInt16( at, little_endian ), 2 ]; - case 'uint16': case 'ushort': return [ dataview.getUint16( at, little_endian ), 2 ]; - case 'int32': case 'int': return [ dataview.getInt32( at, little_endian ), 4 ]; - case 'uint32': case 'uint': return [ dataview.getUint32( at, little_endian ), 4 ]; - case 'float32': case 'float': return [ dataview.getFloat32( at, little_endian ), 4 ]; - case 'float64': case 'double': return [ dataview.getFloat64( at, little_endian ), 8 ]; - - } - - } - - function binaryReadElement( dataview, at, properties, little_endian ) { - - var element = {}; - var result, read = 0; - - for ( var i = 0; i < properties.length; i ++ ) { - - if ( properties[ i ].type === 'list' ) { - - var list = []; - - result = binaryRead( dataview, at + read, properties[ i ].countType, little_endian ); - var n = result[ 0 ]; - read += result[ 1 ]; - - for ( var j = 0; j < n; j ++ ) { - - result = binaryRead( dataview, at + read, properties[ i ].itemType, little_endian ); - list.push( result[ 0 ] ); - read += result[ 1 ]; - - } - - element[ properties[ i ].name ] = list; - - } else { - - result = binaryRead( dataview, at + read, properties[ i ].type, little_endian ); - element[ properties[ i ].name ] = result[ 0 ]; - read += result[ 1 ]; - - } - - } - - return [ element, read ]; - - } - - function parseBinary( data ) { - - var buffer = { - indices : [], - vertices : [], - normals : [], - uvs : [], - colors : [] - }; - - var header = parseHeader( bin2str( data ) ); - var little_endian = ( header.format === 'binary_little_endian' ); - var body = new DataView( data, header.headerLength ); - var result, loc = 0; - - for ( var currentElement = 0; currentElement < header.elements.length; currentElement ++ ) { - - for ( var currentElementCount = 0; currentElementCount < header.elements[ currentElement ].count; currentElementCount ++ ) { - - result = binaryReadElement( body, loc, header.elements[ currentElement ].properties, little_endian ); - loc += result[ 1 ]; - var element = result[ 0 ]; - - handleElement( buffer, header.elements[ currentElement ].name, element ); - - } - - } - - return postProcess( buffer ); - - } - - // - - var geometry; - var scope = this; - - if ( data instanceof ArrayBuffer ) { - - geometry = isASCII( data ) ? parseASCII( bin2str( data ) ) : parseBinary( data ); - - } else { - - geometry = parseASCII( data ); - - } - - return geometry; - - } - -}; diff --git a/libs/other/dat.gui.min.js b/libs/other/dat.gui.min.js deleted file mode 100644 index e4209ba..0000000 --- a/libs/other/dat.gui.min.js +++ /dev/null @@ -1,91 +0,0 @@ -/*! - * dat-gui JavaScript Controller Library - * http://code.google.com/p/dat-gui - * Copyright 2011 Data Arts Team, Google Creative Lab - * 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 - */ -var dat=dat||{};dat.gui=dat.gui||{};dat.utils=dat.utils||{};dat.controllers=dat.controllers||{};dat.dom=dat.dom||{};dat.color=dat.color||{};dat.utils.css=function(){return{load:function(e,a){a=a||document;var b=a.createElement("link");b.type="text/css";b.rel="stylesheet";b.href=e;a.getElementsByTagName("head")[0].appendChild(b)},inject:function(e,a){a=a||document;var b=document.createElement("style");b.type="text/css";b.innerHTML=e;a.getElementsByTagName("head")[0].appendChild(b)}}}(); -dat.utils.common=function(){var e=Array.prototype.forEach,a=Array.prototype.slice;return{BREAK:{},extend:function(b){this.each(a.call(arguments,1),function(a){for(var f in a)this.isUndefined(a[f])||(b[f]=a[f])},this);return b},defaults:function(b){this.each(a.call(arguments,1),function(a){for(var f in a)this.isUndefined(b[f])&&(b[f]=a[f])},this);return b},compose:function(){var b=a.call(arguments);return function(){for(var d=a.call(arguments),f=b.length-1;0<=f;f--)d=[b[f].apply(this,d)];return d[0]}}, -each:function(a,d,f){if(e&&a.forEach===e)a.forEach(d,f);else if(a.length===a.length+0)for(var c=0,p=a.length;cthis.__max&&(a=this.__max);void 0!==this.__step&&0!=a%this.__step&&(a=Math.round(a/this.__step)*this.__step);return b.superclass.prototype.setValue.call(this,a)},min:function(a){this.__min=a;return this},max:function(a){this.__max=a;return this},step:function(a){this.__step=a;return this}});return b}(dat.controllers.Controller,dat.utils.common); -dat.controllers.NumberControllerBox=function(e,a,b){var d=function(f,c,e){function k(){var a=parseFloat(n.__input.value);b.isNaN(a)||n.setValue(a)}function l(a){var c=r-a.clientY;n.setValue(n.getValue()+c*n.__impliedStep);r=a.clientY}function q(){a.unbind(window,"mousemove",l);a.unbind(window,"mouseup",q)}this.__truncationSuspended=!1;d.superclass.call(this,f,c,e);var n=this,r;this.__input=document.createElement("input");this.__input.setAttribute("type","text");a.bind(this.__input,"change",k);a.bind(this.__input, -"blur",function(){k();n.__onFinishChange&&n.__onFinishChange.call(n,n.getValue())});a.bind(this.__input,"mousedown",function(c){a.bind(window,"mousemove",l);a.bind(window,"mouseup",q);r=c.clientY});a.bind(this.__input,"keydown",function(a){13===a.keyCode&&(n.__truncationSuspended=!0,this.blur(),n.__truncationSuspended=!1)});this.updateDisplay();this.domElement.appendChild(this.__input)};d.superclass=e;b.extend(d.prototype,e.prototype,{updateDisplay:function(){var a=this.__input,c;if(this.__truncationSuspended)c= -this.getValue();else{c=this.getValue();var b=Math.pow(10,this.__precision);c=Math.round(c*b)/b}a.value=c;return d.superclass.prototype.updateDisplay.call(this)}});return d}(dat.controllers.NumberController,dat.dom.dom,dat.utils.common); -dat.controllers.NumberControllerSlider=function(e,a,b,d,f){function c(a,c,d,b,f){return b+(a-c)/(d-c)*(f-b)}var p=function(d,b,f,e,r){function y(d){d.preventDefault();var b=a.getOffset(h.__background),f=a.getWidth(h.__background);h.setValue(c(d.clientX,b.left,b.left+f,h.__min,h.__max));return!1}function g(){a.unbind(window,"mousemove",y);a.unbind(window,"mouseup",g);h.__onFinishChange&&h.__onFinishChange.call(h,h.getValue())}p.superclass.call(this,d,b,{min:f,max:e,step:r});var h=this;this.__background= -document.createElement("div");this.__foreground=document.createElement("div");a.bind(this.__background,"mousedown",function(c){a.bind(window,"mousemove",y);a.bind(window,"mouseup",g);y(c)});a.addClass(this.__background,"slider");a.addClass(this.__foreground,"slider-fg");this.updateDisplay();this.__background.appendChild(this.__foreground);this.domElement.appendChild(this.__background)};p.superclass=e;p.useDefaultStyles=function(){b.inject(f)};d.extend(p.prototype,e.prototype,{updateDisplay:function(){var a= -(this.getValue()-this.__min)/(this.__max-this.__min);this.__foreground.style.width=100*a+"%";return p.superclass.prototype.updateDisplay.call(this)}});return p}(dat.controllers.NumberController,dat.dom.dom,dat.utils.css,dat.utils.common,"/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\n.slider {\n box-shadow: inset 0 2px 4px rgba(0,0,0,0.15);\n height: 1em;\n border-radius: 1em;\n background-color: #eee;\n padding: 0 0.5em;\n overflow: hidden;\n}\n\n.slider-fg {\n padding: 1px 0 2px 0;\n background-color: #aaa;\n height: 1em;\n margin-left: -0.5em;\n padding-right: 0.5em;\n border-radius: 1em 0 0 1em;\n}\n\n.slider-fg:after {\n display: inline-block;\n border-radius: 1em;\n background-color: #fff;\n border: 1px solid #aaa;\n content: '';\n float: right;\n margin-right: -1em;\n margin-top: -1px;\n height: 0.9em;\n width: 0.9em;\n}"); -dat.controllers.FunctionController=function(e,a,b){var d=function(b,c,e){d.superclass.call(this,b,c);var k=this;this.__button=document.createElement("div");this.__button.innerHTML=void 0===e?"Fire":e;a.bind(this.__button,"click",function(a){a.preventDefault();k.fire();return!1});a.addClass(this.__button,"button");this.domElement.appendChild(this.__button)};d.superclass=e;b.extend(d.prototype,e.prototype,{fire:function(){this.__onChange&&this.__onChange.call(this);this.__onFinishChange&&this.__onFinishChange.call(this, -this.getValue());this.getValue().call(this.object)}});return d}(dat.controllers.Controller,dat.dom.dom,dat.utils.common); -dat.controllers.BooleanController=function(e,a,b){var d=function(b,c){d.superclass.call(this,b,c);var e=this;this.__prev=this.getValue();this.__checkbox=document.createElement("input");this.__checkbox.setAttribute("type","checkbox");a.bind(this.__checkbox,"change",function(){e.setValue(!e.__prev)},!1);this.domElement.appendChild(this.__checkbox);this.updateDisplay()};d.superclass=e;b.extend(d.prototype,e.prototype,{setValue:function(a){a=d.superclass.prototype.setValue.call(this,a);this.__onFinishChange&& -this.__onFinishChange.call(this,this.getValue());this.__prev=this.getValue();return a},updateDisplay:function(){!0===this.getValue()?(this.__checkbox.setAttribute("checked","checked"),this.__checkbox.checked=!0):this.__checkbox.checked=!1;return d.superclass.prototype.updateDisplay.call(this)}});return d}(dat.controllers.Controller,dat.dom.dom,dat.utils.common); -dat.color.toString=function(e){return function(a){if(1==a.a||e.isUndefined(a.a)){for(a=a.hex.toString(16);6>a.length;)a="0"+a;return"#"+a}return"rgba("+Math.round(a.r)+","+Math.round(a.g)+","+Math.round(a.b)+","+a.a+")"}}(dat.utils.common); -dat.color.interpret=function(e,a){var b,d,f=[{litmus:a.isString,conversions:{THREE_CHAR_HEX:{read:function(a){a=a.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null===a?!1:{space:"HEX",hex:parseInt("0x"+a[1].toString()+a[1].toString()+a[2].toString()+a[2].toString()+a[3].toString()+a[3].toString())}},write:e},SIX_CHAR_HEX:{read:function(a){a=a.match(/^#([A-F0-9]{6})$/i);return null===a?!1:{space:"HEX",hex:parseInt("0x"+a[1].toString())}},write:e},CSS_RGB:{read:function(a){a=a.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/); -return null===a?!1:{space:"RGB",r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3])}},write:e},CSS_RGBA:{read:function(a){a=a.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\,\s*(.+)\s*\)/);return null===a?!1:{space:"RGB",r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3]),a:parseFloat(a[4])}},write:e}}},{litmus:a.isNumber,conversions:{HEX:{read:function(a){return{space:"HEX",hex:a,conversionName:"HEX"}},write:function(a){return a.hex}}}},{litmus:a.isArray,conversions:{RGB_ARRAY:{read:function(a){return 3!= -a.length?!1:{space:"RGB",r:a[0],g:a[1],b:a[2]}},write:function(a){return[a.r,a.g,a.b]}},RGBA_ARRAY:{read:function(a){return 4!=a.length?!1:{space:"RGB",r:a[0],g:a[1],b:a[2],a:a[3]}},write:function(a){return[a.r,a.g,a.b,a.a]}}}},{litmus:a.isObject,conversions:{RGBA_OBJ:{read:function(c){return a.isNumber(c.r)&&a.isNumber(c.g)&&a.isNumber(c.b)&&a.isNumber(c.a)?{space:"RGB",r:c.r,g:c.g,b:c.b,a:c.a}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b,a:a.a}}},RGB_OBJ:{read:function(c){return a.isNumber(c.r)&& -a.isNumber(c.g)&&a.isNumber(c.b)?{space:"RGB",r:c.r,g:c.g,b:c.b}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b}}},HSVA_OBJ:{read:function(c){return a.isNumber(c.h)&&a.isNumber(c.s)&&a.isNumber(c.v)&&a.isNumber(c.a)?{space:"HSV",h:c.h,s:c.s,v:c.v,a:c.a}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v,a:a.a}}},HSV_OBJ:{read:function(d){return a.isNumber(d.h)&&a.isNumber(d.s)&&a.isNumber(d.v)?{space:"HSV",h:d.h,s:d.s,v:d.v}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v}}}}}];return function(){d=!1; -var c=1\n\n Here\'s the new load parameter for your GUI\'s constructor:\n\n \n\n
        \n\n Automatically save\n values to localStorage on exit.\n\n
        The values saved to localStorage will\n override those passed to dat.GUI\'s constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n \n
        \n \n
        \n\n
        ', -".dg {\n /** Clear list styles */\n /* Auto-place container */\n /* Auto-placed GUI's */\n /* Line items that don't contain folders. */\n /** Folder names */\n /** Hides closed items */\n /** Controller row */\n /** Name-half (left) */\n /** Controller-half (right) */\n /** Controller placement */\n /** Shorter number boxes when slider is present. */\n /** Ensure the entire boolean and function row shows a hand */ }\n .dg ul {\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n clear: both; }\n .dg.ac {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 0;\n z-index: 0; }\n .dg:not(.ac) .main {\n /** Exclude mains in ac so that we don't hide close button */\n overflow: hidden; }\n .dg.main {\n -webkit-transition: opacity 0.1s linear;\n -o-transition: opacity 0.1s linear;\n -moz-transition: opacity 0.1s linear;\n transition: opacity 0.1s linear; }\n .dg.main.taller-than-window {\n overflow-y: auto; }\n .dg.main.taller-than-window .close-button {\n opacity: 1;\n /* TODO, these are style notes */\n margin-top: -1px;\n border-top: 1px solid #2c2c2c; }\n .dg.main ul.closed .close-button {\n opacity: 1 !important; }\n .dg.main:hover .close-button,\n .dg.main .close-button.drag {\n opacity: 1; }\n .dg.main .close-button {\n /*opacity: 0;*/\n -webkit-transition: opacity 0.1s linear;\n -o-transition: opacity 0.1s linear;\n -moz-transition: opacity 0.1s linear;\n transition: opacity 0.1s linear;\n border: 0;\n position: absolute;\n line-height: 19px;\n height: 20px;\n /* TODO, these are style notes */\n cursor: pointer;\n text-align: center;\n background-color: #000; }\n .dg.main .close-button:hover {\n background-color: #111; }\n .dg.a {\n float: right;\n margin-right: 15px;\n overflow-x: hidden; }\n .dg.a.has-save > ul {\n margin-top: 27px; }\n .dg.a.has-save > ul.closed {\n margin-top: 0; }\n .dg.a .save-row {\n position: fixed;\n top: 0;\n z-index: 1002; }\n .dg li {\n -webkit-transition: height 0.1s ease-out;\n -o-transition: height 0.1s ease-out;\n -moz-transition: height 0.1s ease-out;\n transition: height 0.1s ease-out; }\n .dg li:not(.folder) {\n cursor: auto;\n height: 27px;\n line-height: 27px;\n overflow: hidden;\n padding: 0 4px 0 5px; }\n .dg li.folder {\n padding: 0;\n border-left: 4px solid rgba(0, 0, 0, 0); }\n .dg li.title {\n cursor: pointer;\n margin-left: -4px; }\n .dg .closed li:not(.title),\n .dg .closed ul li,\n .dg .closed ul li > * {\n height: 0;\n overflow: hidden;\n border: 0; }\n .dg .cr {\n clear: both;\n padding-left: 3px;\n height: 27px; }\n .dg .property-name {\n cursor: default;\n float: left;\n clear: left;\n width: 40%;\n overflow: hidden;\n text-overflow: ellipsis; }\n .dg .c {\n float: left;\n width: 60%; }\n .dg .c input[type=text] {\n border: 0;\n margin-top: 4px;\n padding: 3px;\n width: 100%;\n float: right; }\n .dg .has-slider input[type=text] {\n width: 30%;\n /*display: none;*/\n margin-left: 0; }\n .dg .slider {\n float: left;\n width: 66%;\n margin-left: -5px;\n margin-right: 0;\n height: 19px;\n margin-top: 4px; }\n .dg .slider-fg {\n height: 100%; }\n .dg .c input[type=checkbox] {\n margin-top: 9px; }\n .dg .c select {\n margin-top: 5px; }\n .dg .cr.function,\n .dg .cr.function .property-name,\n .dg .cr.function *,\n .dg .cr.boolean,\n .dg .cr.boolean * {\n cursor: pointer; }\n .dg .selector {\n display: none;\n position: absolute;\n margin-left: -9px;\n margin-top: 23px;\n z-index: 10; }\n .dg .c:hover .selector,\n .dg .selector.drag {\n display: block; }\n .dg li.save-row {\n padding: 0; }\n .dg li.save-row .button {\n display: inline-block;\n padding: 0px 6px; }\n .dg.dialogue {\n background-color: #222;\n width: 460px;\n padding: 15px;\n font-size: 13px;\n line-height: 15px; }\n\n/* TODO Separate style and structure */\n#dg-new-constructor {\n padding: 10px;\n color: #222;\n font-family: Monaco, monospace;\n font-size: 10px;\n border: 0;\n resize: none;\n box-shadow: inset 1px 1px 1px #888;\n word-wrap: break-word;\n margin: 12px 0;\n display: block;\n width: 440px;\n overflow-y: scroll;\n height: 100px;\n position: relative; }\n\n#dg-local-explain {\n display: none;\n font-size: 11px;\n line-height: 17px;\n border-radius: 3px;\n background-color: #333;\n padding: 8px;\n margin-top: 10px; }\n #dg-local-explain code {\n font-size: 10px; }\n\n#dat-gui-save-locally {\n display: none; }\n\n/** Main type */\n.dg {\n color: #eee;\n font: 11px 'Lucida Grande', sans-serif;\n text-shadow: 0 -1px 0 #111;\n /** Auto place */\n /* Controller row,
      • */\n /** Controllers */ }\n .dg.main {\n /** Scrollbar */ }\n .dg.main::-webkit-scrollbar {\n width: 5px;\n background: #1a1a1a; }\n .dg.main::-webkit-scrollbar-corner {\n height: 0;\n display: none; }\n .dg.main::-webkit-scrollbar-thumb {\n border-radius: 5px;\n background: #676767; }\n .dg li:not(.folder) {\n background: #1a1a1a;\n border-bottom: 1px solid #2c2c2c; }\n .dg li.save-row {\n line-height: 25px;\n background: #dad5cb;\n border: 0; }\n .dg li.save-row select {\n margin-left: 5px;\n width: 108px; }\n .dg li.save-row .button {\n margin-left: 5px;\n margin-top: 1px;\n border-radius: 2px;\n font-size: 9px;\n line-height: 7px;\n padding: 4px 4px 5px 4px;\n background: #c5bdad;\n color: #fff;\n text-shadow: 0 1px 0 #b0a58f;\n box-shadow: 0 -1px 0 #b0a58f;\n cursor: pointer; }\n .dg li.save-row .button.gears {\n background: #c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;\n height: 7px;\n width: 8px; }\n .dg li.save-row .button:hover {\n background-color: #bab19e;\n box-shadow: 0 -1px 0 #b0a58f; }\n .dg li.folder {\n border-bottom: 0; }\n .dg li.title {\n padding-left: 16px;\n background: black url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;\n cursor: pointer;\n border-bottom: 1px solid rgba(255, 255, 255, 0.2); }\n .dg .closed li.title {\n background-image: url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==); }\n .dg .cr.boolean {\n border-left: 3px solid #806787; }\n .dg .cr.function {\n border-left: 3px solid #e61d5f; }\n .dg .cr.number {\n border-left: 3px solid #2fa1d6; }\n .dg .cr.number input[type=text] {\n color: #2fa1d6; }\n .dg .cr.string {\n border-left: 3px solid #1ed36f; }\n .dg .cr.string input[type=text] {\n color: #1ed36f; }\n .dg .cr.function:hover, .dg .cr.boolean:hover {\n background: #111; }\n .dg .c input[type=text] {\n background: #303030;\n outline: none; }\n .dg .c input[type=text]:hover {\n background: #3c3c3c; }\n .dg .c input[type=text]:focus {\n background: #494949;\n color: #fff; }\n .dg .c .slider {\n background: #303030;\n cursor: ew-resize; }\n .dg .c .slider-fg {\n background: #2fa1d6; }\n .dg .c .slider:hover {\n background: #3c3c3c; }\n .dg .c .slider:hover .slider-fg {\n background: #44abda; }\n", -dat.controllers.factory=function(e,a,b,d,f,c,p){return function(k,l,q,n){var r=k[l];if(p.isArray(q)||p.isObject(q))return new e(k,l,q);if(p.isNumber(r))return p.isNumber(q)&&p.isNumber(n)?new b(k,l,q,n):new a(k,l,{min:q,max:n});if(p.isString(r))return new d(k,l);if(p.isFunction(r))return new f(k,l,"");if(p.isBoolean(r))return new c(k,l)}}(dat.controllers.OptionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.StringController=function(e,a,b){var d= -function(b,c){function e(){k.setValue(k.__input.value)}d.superclass.call(this,b,c);var k=this;this.__input=document.createElement("input");this.__input.setAttribute("type","text");a.bind(this.__input,"keyup",e);a.bind(this.__input,"change",e);a.bind(this.__input,"blur",function(){k.__onFinishChange&&k.__onFinishChange.call(k,k.getValue())});a.bind(this.__input,"keydown",function(a){13===a.keyCode&&this.blur()});this.updateDisplay();this.domElement.appendChild(this.__input)};d.superclass=e;b.extend(d.prototype, -e.prototype,{updateDisplay:function(){a.isActive(this.__input)||(this.__input.value=this.getValue());return d.superclass.prototype.updateDisplay.call(this)}});return d}(dat.controllers.Controller,dat.dom.dom,dat.utils.common),dat.controllers.FunctionController,dat.controllers.BooleanController,dat.utils.common),dat.controllers.Controller,dat.controllers.BooleanController,dat.controllers.FunctionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.OptionController, -dat.controllers.ColorController=function(e,a,b,d,f){function c(a,b,d,c){a.style.background="";f.each(l,function(e){a.style.cssText+="background: "+e+"linear-gradient("+b+", "+d+" 0%, "+c+" 100%); "})}function p(a){a.style.background="";a.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);";a.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"; -a.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);";a.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);";a.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}var k=function(e,n){function r(b){t(b);a.bind(window,"mousemove",t);a.bind(window, -"mouseup",l)}function l(){a.unbind(window,"mousemove",t);a.unbind(window,"mouseup",l)}function g(){var a=d(this.value);!1!==a?(s.__color.__state=a,s.setValue(s.__color.toOriginal())):this.value=s.__color.toString()}function h(){a.unbind(window,"mousemove",u);a.unbind(window,"mouseup",h)}function t(b){b.preventDefault();var d=a.getWidth(s.__saturation_field),c=a.getOffset(s.__saturation_field),e=(b.clientX-c.left+document.body.scrollLeft)/d;b=1-(b.clientY-c.top+document.body.scrollTop)/d;1 -b&&(b=0);1e&&(e=0);s.__color.v=b;s.__color.s=e;s.setValue(s.__color.toOriginal());return!1}function u(b){b.preventDefault();var d=a.getHeight(s.__hue_field),c=a.getOffset(s.__hue_field);b=1-(b.clientY-c.top+document.body.scrollTop)/d;1b&&(b=0);s.__color.h=360*b;s.setValue(s.__color.toOriginal());return!1}k.superclass.call(this,e,n);this.__color=new b(this.getValue());this.__temp=new b(0);var s=this;this.domElement=document.createElement("div");a.makeSelectable(this.domElement,!1); -this.__selector=document.createElement("div");this.__selector.className="selector";this.__saturation_field=document.createElement("div");this.__saturation_field.className="saturation-field";this.__field_knob=document.createElement("div");this.__field_knob.className="field-knob";this.__field_knob_border="2px solid ";this.__hue_knob=document.createElement("div");this.__hue_knob.className="hue-knob";this.__hue_field=document.createElement("div");this.__hue_field.className="hue-field";this.__input=document.createElement("input"); -this.__input.type="text";this.__input_textShadow="0 1px 1px ";a.bind(this.__input,"keydown",function(a){13===a.keyCode&&g.call(this)});a.bind(this.__input,"blur",g);a.bind(this.__selector,"mousedown",function(b){a.addClass(this,"drag").bind(window,"mouseup",function(b){a.removeClass(s.__selector,"drag")})});var v=document.createElement("div");f.extend(this.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"});f.extend(this.__field_knob.style, -{position:"absolute",width:"12px",height:"12px",border:this.__field_knob_border+(0.5>this.__color.v?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1});f.extend(this.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1});f.extend(this.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"});f.extend(v.style,{width:"100%",height:"100%", -background:"none"});c(v,"top","rgba(0,0,0,0)","#000");f.extend(this.__hue_field.style,{width:"15px",height:"100px",display:"inline-block",border:"1px solid #555",cursor:"ns-resize"});p(this.__hue_field);f.extend(this.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:this.__input_textShadow+"rgba(0,0,0,0.7)"});a.bind(this.__saturation_field,"mousedown",r);a.bind(this.__field_knob,"mousedown",r);a.bind(this.__hue_field,"mousedown",function(b){u(b);a.bind(window, -"mousemove",u);a.bind(window,"mouseup",h)});this.__saturation_field.appendChild(v);this.__selector.appendChild(this.__field_knob);this.__selector.appendChild(this.__saturation_field);this.__selector.appendChild(this.__hue_field);this.__hue_field.appendChild(this.__hue_knob);this.domElement.appendChild(this.__input);this.domElement.appendChild(this.__selector);this.updateDisplay()};k.superclass=e;f.extend(k.prototype,e.prototype,{updateDisplay:function(){var a=d(this.getValue());if(!1!==a){var e=!1; -f.each(b.COMPONENTS,function(b){if(!f.isUndefined(a[b])&&!f.isUndefined(this.__color.__state[b])&&a[b]!==this.__color.__state[b])return e=!0,{}},this);e&&f.extend(this.__color.__state,a)}f.extend(this.__temp.__state,this.__color.__state);this.__temp.a=1;var k=0.5>this.__color.v||0.5a&&(a+=1);return{h:360*a,s:e/c,v:c/255}},rgb_to_hex:function(a,b,d){a=this.hex_with_component(0,2,a);a=this.hex_with_component(a,1,b);return a=this.hex_with_component(a,0,d)},component_from_hex:function(a,b){return a>>8*b&255},hex_with_component:function(a,b,d){return d<<(e=8*b)|a&~(255< prevTime + 3000 ) { - - this.fps = ( frames * 1000 ) / ( time - prevTime ); - fpsPanel.update( this.fps, 100 ); - - - prevTime = time; - frames = 0; - - if ( memPanel ) { - - var memory = performance.memory; - memPanel.update( memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576 ); - - } - - } - - return time; - - }, - - update: function () { - - beginTime = this.end(); - - }, - - // Backwards Compatibility - - domElement: container, - setMode: showPanel - - }; - -}; - -Stats.Panel = function ( name, fg, bg ) { - - var min = Infinity, max = 0, round = Math.round; - var PR = round( window.devicePixelRatio || 1 ); - - var WIDTH = 80 * PR, HEIGHT = 48 * PR, - TEXT_X = 3 * PR, TEXT_Y = 2 * PR, - GRAPH_X = 3 * PR, GRAPH_Y = 15 * PR, - GRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR; - - var canvas = document.createElement( 'canvas' ); - canvas.width = WIDTH; - canvas.height = HEIGHT; - canvas.style.cssText = 'width:80px;height:48px'; - - var context = canvas.getContext( '2d' ); - context.font = 'bold ' + ( 9 * PR ) + 'px Helvetica,Arial,sans-serif'; - context.textBaseline = 'top'; - - context.fillStyle = bg; - context.fillRect( 0, 0, WIDTH, HEIGHT ); - - context.fillStyle = fg; - context.fillText( name, TEXT_X, TEXT_Y ); - context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT ); - - context.fillStyle = bg; - context.globalAlpha = 0.9; - context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT ); - - return { - - dom: canvas, - - update: function ( value, maxValue ) { - - min = Math.min( min, value ); - max = Math.max( max, value ); - - context.fillStyle = bg; - context.globalAlpha = 1; - context.fillRect( 0, 0, WIDTH, GRAPH_Y ); - context.fillStyle = fg; - context.fillText( round( value ) + ' ' + name + ' (' + round( min ) + '-' + round( max ) + ')', TEXT_X, TEXT_Y ); - - context.drawImage( canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT ); - - context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT ); - - context.fillStyle = bg; - context.globalAlpha = 0.9; - context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round( ( 1 - ( value / maxValue ) ) * GRAPH_HEIGHT ) ); - - } - - }; - -}; - -if ( typeof module === 'object' ) { - - module.exports = Stats; - -} diff --git a/libs/other/stats.min.js b/libs/other/stats.min.js deleted file mode 100644 index f0b40f6..0000000 --- a/libs/other/stats.min.js +++ /dev/null @@ -1,28 +0,0 @@ -// stats.js - http://github.com/mrdoob/stats.js - -// The MIT License -// -// Copyright (c) 2009-2016 stats.js authors -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -var Stats=function(){function h(a){c.appendChild(a.dom);return a}function k(a){for(var d=0;de+1E3&&(r.update(1E3*a/(c-e),100),e=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){g=this.end()},domElement:c,setMode:k}}; -Stats.Panel=function(h,k,l){var c=Infinity,g=0,e=Math.round,a=e(window.devicePixelRatio||1),r=80*a,f=48*a,t=3*a,u=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement("canvas");q.width=r;q.height=f;q.style.cssText="width:80px;height:48px";var b=q.getContext("2d");b.font="bold "+9*a+"px Helvetica,Arial,sans-serif";b.textBaseline="top";b.fillStyle=l;b.fillRect(0,0,r,f);b.fillStyle=k;b.fillText(h,t,u);b.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(f, -v){c=Math.min(c,f);g=Math.max(g,f);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=k;b.fillText(e(f)+" "+h+" ("+e(c)+"-"+e(g)+")",t,u);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,e((1-f/v)*p))}}};"object"===typeof module&&(module.exports=Stats); \ No newline at end of file diff --git a/libs/other/webgl-debug.js b/libs/other/webgl-debug.js deleted file mode 100644 index eeefdf4..0000000 --- a/libs/other/webgl-debug.js +++ /dev/null @@ -1,945 +0,0 @@ -/* -** Copyright (c) 2012 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -// Various functions for helping debug WebGL apps. - -WebGLDebugUtils = function() { - -/** - * Wrapped logging function. - * @param {string} msg Message to log. - */ -var log = function(msg) { - if (window.console && window.console.log) { - window.console.log(msg); - } -}; - -/** - * Wrapped error logging function. - * @param {string} msg Message to log. - */ -var error = function(msg) { - if (window.console && window.console.error) { - window.console.error(msg); - } else { - log(msg); - } -}; - - -/** - * Which arguments are enums based on the number of arguments to the function. - * So - * 'texImage2D': { - * 9: { 0:true, 2:true, 6:true, 7:true }, - * 6: { 0:true, 2:true, 3:true, 4:true }, - * }, - * - * means if there are 9 arguments then 6 and 7 are enums, if there are 6 - * arguments 3 and 4 are enums - * - * @type {!Object.} - */ -var glValidEnumContexts = { - // Generic setters and getters - - 'enable': {1: { 0:true }}, - 'disable': {1: { 0:true }}, - 'getParameter': {1: { 0:true }}, - - // Rendering - - 'drawArrays': {3:{ 0:true }}, - 'drawElements': {4:{ 0:true, 2:true }}, - - // Shaders - - 'createShader': {1: { 0:true }}, - 'getShaderParameter': {2: { 1:true }}, - 'getProgramParameter': {2: { 1:true }}, - 'getShaderPrecisionFormat': {2: { 0: true, 1:true }}, - - // Vertex attributes - - 'getVertexAttrib': {2: { 1:true }}, - 'vertexAttribPointer': {6: { 2:true }}, - - // Textures - - 'bindTexture': {2: { 0:true }}, - 'activeTexture': {1: { 0:true }}, - 'getTexParameter': {2: { 0:true, 1:true }}, - 'texParameterf': {3: { 0:true, 1:true }}, - 'texParameteri': {3: { 0:true, 1:true, 2:true }}, - 'texImage2D': { - 9: { 0:true, 2:true, 6:true, 7:true }, - 6: { 0:true, 2:true, 3:true, 4:true } - }, - 'texSubImage2D': { - 9: { 0:true, 6:true, 7:true }, - 7: { 0:true, 4:true, 5:true } - }, - 'copyTexImage2D': {8: { 0:true, 2:true }}, - 'copyTexSubImage2D': {8: { 0:true }}, - 'generateMipmap': {1: { 0:true }}, - 'compressedTexImage2D': {7: { 0: true, 2:true }}, - 'compressedTexSubImage2D': {8: { 0: true, 6:true }}, - - // Buffer objects - - 'bindBuffer': {2: { 0:true }}, - 'bufferData': {3: { 0:true, 2:true }}, - 'bufferSubData': {3: { 0:true }}, - 'getBufferParameter': {2: { 0:true, 1:true }}, - - // Renderbuffers and framebuffers - - 'pixelStorei': {2: { 0:true, 1:true }}, - 'readPixels': {7: { 4:true, 5:true }}, - 'bindRenderbuffer': {2: { 0:true }}, - 'bindFramebuffer': {2: { 0:true }}, - 'checkFramebufferStatus': {1: { 0:true }}, - 'framebufferRenderbuffer': {4: { 0:true, 1:true, 2:true }}, - 'framebufferTexture2D': {5: { 0:true, 1:true, 2:true }}, - 'getFramebufferAttachmentParameter': {3: { 0:true, 1:true, 2:true }}, - 'getRenderbufferParameter': {2: { 0:true, 1:true }}, - 'renderbufferStorage': {4: { 0:true, 1:true }}, - - // Frame buffer operations (clear, blend, depth test, stencil) - - 'clear': {1: { 0: { 'enumBitwiseOr': ['COLOR_BUFFER_BIT', 'DEPTH_BUFFER_BIT', 'STENCIL_BUFFER_BIT'] }}}, - 'depthFunc': {1: { 0:true }}, - 'blendFunc': {2: { 0:true, 1:true }}, - 'blendFuncSeparate': {4: { 0:true, 1:true, 2:true, 3:true }}, - 'blendEquation': {1: { 0:true }}, - 'blendEquationSeparate': {2: { 0:true, 1:true }}, - 'stencilFunc': {3: { 0:true }}, - 'stencilFuncSeparate': {4: { 0:true, 1:true }}, - 'stencilMaskSeparate': {2: { 0:true }}, - 'stencilOp': {3: { 0:true, 1:true, 2:true }}, - 'stencilOpSeparate': {4: { 0:true, 1:true, 2:true, 3:true }}, - - // Culling - - 'cullFace': {1: { 0:true }}, - 'frontFace': {1: { 0:true }}, - - // ANGLE_instanced_arrays extension - - 'drawArraysInstancedANGLE': {4: { 0:true }}, - 'drawElementsInstancedANGLE': {5: { 0:true, 2:true }}, - - // EXT_blend_minmax extension - - 'blendEquationEXT': {1: { 0:true }} -}; - -/** - * Map of numbers to names. - * @type {Object} - */ -var glEnums = null; - -/** - * Map of names to numbers. - * @type {Object} - */ -var enumStringToValue = null; - -/** - * Initializes this module. Safe to call more than once. - * @param {!WebGLRenderingContext} ctx A WebGL context. If - * you have more than one context it doesn't matter which one - * you pass in, it is only used to pull out constants. - */ -function init(ctx) { - if (glEnums == null) { - glEnums = { }; - enumStringToValue = { }; - for (var propertyName in ctx) { - if (typeof ctx[propertyName] == 'number') { - glEnums[ctx[propertyName]] = propertyName; - enumStringToValue[propertyName] = ctx[propertyName]; - } - } - } -} - -/** - * Checks the utils have been initialized. - */ -function checkInit() { - if (glEnums == null) { - throw 'WebGLDebugUtils.init(ctx) not called'; - } -} - -/** - * Returns true or false if value matches any WebGL enum - * @param {*} value Value to check if it might be an enum. - * @return {boolean} True if value matches one of the WebGL defined enums - */ -function mightBeEnum(value) { - checkInit(); - return (glEnums[value] !== undefined); -} - -/** - * Gets an string version of an WebGL enum. - * - * Example: - * var str = WebGLDebugUtil.glEnumToString(ctx.getError()); - * - * @param {number} value Value to return an enum for - * @return {string} The string version of the enum. - */ -function glEnumToString(value) { - checkInit(); - var name = glEnums[value]; - return (name !== undefined) ? ("gl." + name) : - ("/*UNKNOWN WebGL ENUM*/ 0x" + value.toString(16) + ""); -} - -/** - * Returns the string version of a WebGL argument. - * Attempts to convert enum arguments to strings. - * @param {string} functionName the name of the WebGL function. - * @param {number} numArgs the number of arguments passed to the function. - * @param {number} argumentIndx the index of the argument. - * @param {*} value The value of the argument. - * @return {string} The value as a string. - */ -function glFunctionArgToString(functionName, numArgs, argumentIndex, value) { - var funcInfo = glValidEnumContexts[functionName]; - if (funcInfo !== undefined) { - var funcInfo = funcInfo[numArgs]; - if (funcInfo !== undefined) { - if (funcInfo[argumentIndex]) { - if (typeof funcInfo[argumentIndex] === 'object' && - funcInfo[argumentIndex]['enumBitwiseOr'] !== undefined) { - var enums = funcInfo[argumentIndex]['enumBitwiseOr']; - var orResult = 0; - var orEnums = []; - for (var i = 0; i < enums.length; ++i) { - var enumValue = enumStringToValue[enums[i]]; - if ((value & enumValue) !== 0) { - orResult |= enumValue; - orEnums.push(glEnumToString(enumValue)); - } - } - if (orResult === value) { - return orEnums.join(' | '); - } else { - return glEnumToString(value); - } - } else { - return glEnumToString(value); - } - } - } - } - if (value === null) { - return "null"; - } else if (value === undefined) { - return "undefined"; - } else { - return value.toString(); - } -} - -/** - * Converts the arguments of a WebGL function to a string. - * Attempts to convert enum arguments to strings. - * - * @param {string} functionName the name of the WebGL function. - * @param {number} args The arguments. - * @return {string} The arguments as a string. - */ -function glFunctionArgsToString(functionName, args) { - // apparently we can't do args.join(","); - var argStr = ""; - var numArgs = args.length; - for (var ii = 0; ii < numArgs; ++ii) { - argStr += ((ii == 0) ? '' : ', ') + - glFunctionArgToString(functionName, numArgs, ii, args[ii]); - } - return argStr; -}; - - -function makePropertyWrapper(wrapper, original, propertyName) { - //log("wrap prop: " + propertyName); - wrapper.__defineGetter__(propertyName, function() { - return original[propertyName]; - }); - // TODO(gmane): this needs to handle properties that take more than - // one value? - wrapper.__defineSetter__(propertyName, function(value) { - //log("set: " + propertyName); - original[propertyName] = value; - }); -} - -// Makes a function that calls a function on another object. -function makeFunctionWrapper(original, functionName) { - //log("wrap fn: " + functionName); - var f = original[functionName]; - return function() { - //log("call: " + functionName); - var result = f.apply(original, arguments); - return result; - }; -} - -/** - * Given a WebGL context returns a wrapped context that calls - * gl.getError after every command and calls a function if the - * result is not gl.NO_ERROR. - * - * @param {!WebGLRenderingContext} ctx The webgl context to - * wrap. - * @param {!function(err, funcName, args): void} opt_onErrorFunc - * The function to call when gl.getError returns an - * error. If not specified the default function calls - * console.log with a message. - * @param {!function(funcName, args): void} opt_onFunc The - * function to call when each webgl function is called. - * You can use this to log all calls for example. - * @param {!WebGLRenderingContext} opt_err_ctx The webgl context - * to call getError on if different than ctx. - */ -function makeDebugContext(ctx, opt_onErrorFunc, opt_onFunc, opt_err_ctx) { - opt_err_ctx = opt_err_ctx || ctx; - init(ctx); - opt_onErrorFunc = opt_onErrorFunc || function(err, functionName, args) { - // apparently we can't do args.join(","); - var argStr = ""; - var numArgs = args.length; - for (var ii = 0; ii < numArgs; ++ii) { - argStr += ((ii == 0) ? '' : ', ') + - glFunctionArgToString(functionName, numArgs, ii, args[ii]); - } - error("WebGL error "+ glEnumToString(err) + " in "+ functionName + - "(" + argStr + ")"); - }; - - // Holds booleans for each GL error so after we get the error ourselves - // we can still return it to the client app. - var glErrorShadow = { }; - - // Makes a function that calls a WebGL function and then calls getError. - function makeErrorWrapper(ctx, functionName) { - return function() { - if (opt_onFunc) { - opt_onFunc(functionName, arguments); - } - var result = ctx[functionName].apply(ctx, arguments); - var err = opt_err_ctx.getError(); - if (err != 0) { - glErrorShadow[err] = true; - opt_onErrorFunc(err, functionName, arguments); - } - return result; - }; - } - - // Make a an object that has a copy of every property of the WebGL context - // but wraps all functions. - var wrapper = {}; - for (var propertyName in ctx) { - if (typeof ctx[propertyName] == 'function') { - if (propertyName != 'getExtension') { - wrapper[propertyName] = makeErrorWrapper(ctx, propertyName); - } else { - var wrapped = makeErrorWrapper(ctx, propertyName); - wrapper[propertyName] = function () { - var result = wrapped.apply(ctx, arguments); - return makeDebugContext(result, opt_onErrorFunc, opt_onFunc, opt_err_ctx); - }; - } - } else { - makePropertyWrapper(wrapper, ctx, propertyName); - } - } - - // Override the getError function with one that returns our saved results. - wrapper.getError = function() { - for (var err in glErrorShadow) { - if (glErrorShadow.hasOwnProperty(err)) { - if (glErrorShadow[err]) { - glErrorShadow[err] = false; - return err; - } - } - } - return ctx.NO_ERROR; - }; - - return wrapper; -} - -function resetToInitialState(ctx) { - var numAttribs = ctx.getParameter(ctx.MAX_VERTEX_ATTRIBS); - var tmp = ctx.createBuffer(); - ctx.bindBuffer(ctx.ARRAY_BUFFER, tmp); - for (var ii = 0; ii < numAttribs; ++ii) { - ctx.disableVertexAttribArray(ii); - ctx.vertexAttribPointer(ii, 4, ctx.FLOAT, false, 0, 0); - ctx.vertexAttrib1f(ii, 0); - } - ctx.deleteBuffer(tmp); - - var numTextureUnits = ctx.getParameter(ctx.MAX_TEXTURE_IMAGE_UNITS); - for (var ii = 0; ii < numTextureUnits; ++ii) { - ctx.activeTexture(ctx.TEXTURE0 + ii); - ctx.bindTexture(ctx.TEXTURE_CUBE_MAP, null); - ctx.bindTexture(ctx.TEXTURE_2D, null); - } - - ctx.activeTexture(ctx.TEXTURE0); - ctx.useProgram(null); - ctx.bindBuffer(ctx.ARRAY_BUFFER, null); - ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, null); - ctx.bindFramebuffer(ctx.FRAMEBUFFER, null); - ctx.bindRenderbuffer(ctx.RENDERBUFFER, null); - ctx.disable(ctx.BLEND); - ctx.disable(ctx.CULL_FACE); - ctx.disable(ctx.DEPTH_TEST); - ctx.disable(ctx.DITHER); - ctx.disable(ctx.SCISSOR_TEST); - ctx.blendColor(0, 0, 0, 0); - ctx.blendEquation(ctx.FUNC_ADD); - ctx.blendFunc(ctx.ONE, ctx.ZERO); - ctx.clearColor(0, 0, 0, 0); - ctx.clearDepth(1); - ctx.clearStencil(-1); - ctx.colorMask(true, true, true, true); - ctx.cullFace(ctx.BACK); - ctx.depthFunc(ctx.LESS); - ctx.depthMask(true); - ctx.depthRange(0, 1); - ctx.frontFace(ctx.CCW); - ctx.hint(ctx.GENERATE_MIPMAP_HINT, ctx.DONT_CARE); - ctx.lineWidth(1); - ctx.pixelStorei(ctx.PACK_ALIGNMENT, 4); - ctx.pixelStorei(ctx.UNPACK_ALIGNMENT, 4); - ctx.pixelStorei(ctx.UNPACK_FLIP_Y_WEBGL, false); - ctx.pixelStorei(ctx.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false); - // TODO: Delete this IF. - if (ctx.UNPACK_COLORSPACE_CONVERSION_WEBGL) { - ctx.pixelStorei(ctx.UNPACK_COLORSPACE_CONVERSION_WEBGL, ctx.BROWSER_DEFAULT_WEBGL); - } - ctx.polygonOffset(0, 0); - ctx.sampleCoverage(1, false); - ctx.scissor(0, 0, ctx.canvas.width, ctx.canvas.height); - ctx.stencilFunc(ctx.ALWAYS, 0, 0xFFFFFFFF); - ctx.stencilMask(0xFFFFFFFF); - ctx.stencilOp(ctx.KEEP, ctx.KEEP, ctx.KEEP); - ctx.viewport(0, 0, ctx.canvas.width, ctx.canvas.height); - ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT | ctx.STENCIL_BUFFER_BIT); - - // TODO: This should NOT be needed but Firefox fails with 'hint' - while(ctx.getError()); -} - -function makeLostContextSimulatingCanvas(canvas) { - var unwrappedContext_; - var wrappedContext_; - var onLost_ = []; - var onRestored_ = []; - var wrappedContext_ = {}; - var contextId_ = 1; - var contextLost_ = false; - var resourceId_ = 0; - var resourceDb_ = []; - var numCallsToLoseContext_ = 0; - var numCalls_ = 0; - var canRestore_ = false; - var restoreTimeout_ = 0; - - // Holds booleans for each GL error so can simulate errors. - var glErrorShadow_ = { }; - - canvas.getContext = function(f) { - return function() { - var ctx = f.apply(canvas, arguments); - // Did we get a context and is it a WebGL context? - if (ctx instanceof WebGLRenderingContext) { - if (ctx != unwrappedContext_) { - if (unwrappedContext_) { - throw "got different context" - } - unwrappedContext_ = ctx; - wrappedContext_ = makeLostContextSimulatingContext(unwrappedContext_); - } - return wrappedContext_; - } - return ctx; - } - }(canvas.getContext); - - function wrapEvent(listener) { - if (typeof(listener) == "function") { - return listener; - } else { - return function(info) { - listener.handleEvent(info); - } - } - } - - var addOnContextLostListener = function(listener) { - onLost_.push(wrapEvent(listener)); - }; - - var addOnContextRestoredListener = function(listener) { - onRestored_.push(wrapEvent(listener)); - }; - - - function wrapAddEventListener(canvas) { - var f = canvas.addEventListener; - canvas.addEventListener = function(type, listener, bubble) { - switch (type) { - case 'webglcontextlost': - addOnContextLostListener(listener); - break; - case 'webglcontextrestored': - addOnContextRestoredListener(listener); - break; - default: - f.apply(canvas, arguments); - } - }; - } - - wrapAddEventListener(canvas); - - canvas.loseContext = function() { - if (!contextLost_) { - contextLost_ = true; - numCallsToLoseContext_ = 0; - ++contextId_; - while (unwrappedContext_.getError()); - clearErrors(); - glErrorShadow_[unwrappedContext_.CONTEXT_LOST_WEBGL] = true; - var event = makeWebGLContextEvent("context lost"); - var callbacks = onLost_.slice(); - setTimeout(function() { - //log("numCallbacks:" + callbacks.length); - for (var ii = 0; ii < callbacks.length; ++ii) { - //log("calling callback:" + ii); - callbacks[ii](event); - } - if (restoreTimeout_ >= 0) { - setTimeout(function() { - canvas.restoreContext(); - }, restoreTimeout_); - } - }, 0); - } - }; - - canvas.restoreContext = function() { - if (contextLost_) { - if (onRestored_.length) { - setTimeout(function() { - if (!canRestore_) { - throw "can not restore. webglcontestlost listener did not call event.preventDefault"; - } - freeResources(); - resetToInitialState(unwrappedContext_); - contextLost_ = false; - numCalls_ = 0; - canRestore_ = false; - var callbacks = onRestored_.slice(); - var event = makeWebGLContextEvent("context restored"); - for (var ii = 0; ii < callbacks.length; ++ii) { - callbacks[ii](event); - } - }, 0); - } - } - }; - - canvas.loseContextInNCalls = function(numCalls) { - if (contextLost_) { - throw "You can not ask a lost contet to be lost"; - } - numCallsToLoseContext_ = numCalls_ + numCalls; - }; - - canvas.getNumCalls = function() { - return numCalls_; - }; - - canvas.setRestoreTimeout = function(timeout) { - restoreTimeout_ = timeout; - }; - - function isWebGLObject(obj) { - //return false; - return (obj instanceof WebGLBuffer || - obj instanceof WebGLFramebuffer || - obj instanceof WebGLProgram || - obj instanceof WebGLRenderbuffer || - obj instanceof WebGLShader || - obj instanceof WebGLTexture); - } - - function checkResources(args) { - for (var ii = 0; ii < args.length; ++ii) { - var arg = args[ii]; - if (isWebGLObject(arg)) { - return arg.__webglDebugContextLostId__ == contextId_; - } - } - return true; - } - - function clearErrors() { - var k = Object.keys(glErrorShadow_); - for (var ii = 0; ii < k.length; ++ii) { - delete glErrorShadow_[k]; - } - } - - function loseContextIfTime() { - ++numCalls_; - if (!contextLost_) { - if (numCallsToLoseContext_ == numCalls_) { - canvas.loseContext(); - } - } - } - - // Makes a function that simulates WebGL when out of context. - function makeLostContextFunctionWrapper(ctx, functionName) { - var f = ctx[functionName]; - return function() { - // log("calling:" + functionName); - // Only call the functions if the context is not lost. - loseContextIfTime(); - if (!contextLost_) { - //if (!checkResources(arguments)) { - // glErrorShadow_[wrappedContext_.INVALID_OPERATION] = true; - // return; - //} - var result = f.apply(ctx, arguments); - return result; - } - }; - } - - function freeResources() { - for (var ii = 0; ii < resourceDb_.length; ++ii) { - var resource = resourceDb_[ii]; - if (resource instanceof WebGLBuffer) { - unwrappedContext_.deleteBuffer(resource); - } else if (resource instanceof WebGLFramebuffer) { - unwrappedContext_.deleteFramebuffer(resource); - } else if (resource instanceof WebGLProgram) { - unwrappedContext_.deleteProgram(resource); - } else if (resource instanceof WebGLRenderbuffer) { - unwrappedContext_.deleteRenderbuffer(resource); - } else if (resource instanceof WebGLShader) { - unwrappedContext_.deleteShader(resource); - } else if (resource instanceof WebGLTexture) { - unwrappedContext_.deleteTexture(resource); - } - } - } - - function makeWebGLContextEvent(statusMessage) { - return { - statusMessage: statusMessage, - preventDefault: function() { - canRestore_ = true; - } - }; - } - - return canvas; - - function makeLostContextSimulatingContext(ctx) { - // copy all functions and properties to wrapper - for (var propertyName in ctx) { - if (typeof ctx[propertyName] == 'function') { - wrappedContext_[propertyName] = makeLostContextFunctionWrapper( - ctx, propertyName); - } else { - makePropertyWrapper(wrappedContext_, ctx, propertyName); - } - } - - // Wrap a few functions specially. - wrappedContext_.getError = function() { - loseContextIfTime(); - if (!contextLost_) { - var err; - while (err = unwrappedContext_.getError()) { - glErrorShadow_[err] = true; - } - } - for (var err in glErrorShadow_) { - if (glErrorShadow_[err]) { - delete glErrorShadow_[err]; - return err; - } - } - return wrappedContext_.NO_ERROR; - }; - - var creationFunctions = [ - "createBuffer", - "createFramebuffer", - "createProgram", - "createRenderbuffer", - "createShader", - "createTexture" - ]; - for (var ii = 0; ii < creationFunctions.length; ++ii) { - var functionName = creationFunctions[ii]; - wrappedContext_[functionName] = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return null; - } - var obj = f.apply(ctx, arguments); - obj.__webglDebugContextLostId__ = contextId_; - resourceDb_.push(obj); - return obj; - }; - }(ctx[functionName]); - } - - var functionsThatShouldReturnNull = [ - "getActiveAttrib", - "getActiveUniform", - "getBufferParameter", - "getContextAttributes", - "getAttachedShaders", - "getFramebufferAttachmentParameter", - "getParameter", - "getProgramParameter", - "getProgramInfoLog", - "getRenderbufferParameter", - "getShaderParameter", - "getShaderInfoLog", - "getShaderSource", - "getTexParameter", - "getUniform", - "getUniformLocation", - "getVertexAttrib" - ]; - for (var ii = 0; ii < functionsThatShouldReturnNull.length; ++ii) { - var functionName = functionsThatShouldReturnNull[ii]; - wrappedContext_[functionName] = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return null; - } - return f.apply(ctx, arguments); - } - }(wrappedContext_[functionName]); - } - - var isFunctions = [ - "isBuffer", - "isEnabled", - "isFramebuffer", - "isProgram", - "isRenderbuffer", - "isShader", - "isTexture" - ]; - for (var ii = 0; ii < isFunctions.length; ++ii) { - var functionName = isFunctions[ii]; - wrappedContext_[functionName] = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return false; - } - return f.apply(ctx, arguments); - } - }(wrappedContext_[functionName]); - } - - wrappedContext_.checkFramebufferStatus = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return wrappedContext_.FRAMEBUFFER_UNSUPPORTED; - } - return f.apply(ctx, arguments); - }; - }(wrappedContext_.checkFramebufferStatus); - - wrappedContext_.getAttribLocation = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return -1; - } - return f.apply(ctx, arguments); - }; - }(wrappedContext_.getAttribLocation); - - wrappedContext_.getVertexAttribOffset = function(f) { - return function() { - loseContextIfTime(); - if (contextLost_) { - return 0; - } - return f.apply(ctx, arguments); - }; - }(wrappedContext_.getVertexAttribOffset); - - wrappedContext_.isContextLost = function() { - return contextLost_; - }; - - return wrappedContext_; - } -} - -return { - /** - * Initializes this module. Safe to call more than once. - * @param {!WebGLRenderingContext} ctx A WebGL context. If - * you have more than one context it doesn't matter which one - * you pass in, it is only used to pull out constants. - */ - 'init': init, - - /** - * Returns true or false if value matches any WebGL enum - * @param {*} value Value to check if it might be an enum. - * @return {boolean} True if value matches one of the WebGL defined enums - */ - 'mightBeEnum': mightBeEnum, - - /** - * Gets an string version of an WebGL enum. - * - * Example: - * WebGLDebugUtil.init(ctx); - * var str = WebGLDebugUtil.glEnumToString(ctx.getError()); - * - * @param {number} value Value to return an enum for - * @return {string} The string version of the enum. - */ - 'glEnumToString': glEnumToString, - - /** - * Converts the argument of a WebGL function to a string. - * Attempts to convert enum arguments to strings. - * - * Example: - * WebGLDebugUtil.init(ctx); - * var str = WebGLDebugUtil.glFunctionArgToString('bindTexture', 2, 0, gl.TEXTURE_2D); - * - * would return 'TEXTURE_2D' - * - * @param {string} functionName the name of the WebGL function. - * @param {number} numArgs The number of arguments - * @param {number} argumentIndx the index of the argument. - * @param {*} value The value of the argument. - * @return {string} The value as a string. - */ - 'glFunctionArgToString': glFunctionArgToString, - - /** - * Converts the arguments of a WebGL function to a string. - * Attempts to convert enum arguments to strings. - * - * @param {string} functionName the name of the WebGL function. - * @param {number} args The arguments. - * @return {string} The arguments as a string. - */ - 'glFunctionArgsToString': glFunctionArgsToString, - - /** - * Given a WebGL context returns a wrapped context that calls - * gl.getError after every command and calls a function if the - * result is not NO_ERROR. - * - * You can supply your own function if you want. For example, if you'd like - * an exception thrown on any GL error you could do this - * - * function throwOnGLError(err, funcName, args) { - * throw WebGLDebugUtils.glEnumToString(err) + - * " was caused by call to " + funcName; - * }; - * - * ctx = WebGLDebugUtils.makeDebugContext( - * canvas.getContext("webgl"), throwOnGLError); - * - * @param {!WebGLRenderingContext} ctx The webgl context to wrap. - * @param {!function(err, funcName, args): void} opt_onErrorFunc The function - * to call when gl.getError returns an error. If not specified the default - * function calls console.log with a message. - * @param {!function(funcName, args): void} opt_onFunc The - * function to call when each webgl function is called. You - * can use this to log all calls for example. - */ - 'makeDebugContext': makeDebugContext, - - /** - * Given a canvas element returns a wrapped canvas element that will - * simulate lost context. The canvas returned adds the following functions. - * - * loseContext: - * simulates a lost context event. - * - * restoreContext: - * simulates the context being restored. - * - * lostContextInNCalls: - * loses the context after N gl calls. - * - * getNumCalls: - * tells you how many gl calls there have been so far. - * - * setRestoreTimeout: - * sets the number of milliseconds until the context is restored - * after it has been lost. Defaults to 0. Pass -1 to prevent - * automatic restoring. - * - * @param {!Canvas} canvas The canvas element to wrap. - */ - 'makeLostContextSimulatingCanvas': makeLostContextSimulatingCanvas, - - /** - * Resets a context to the initial state. - * @param {!WebGLRenderingContext} ctx The webgl context to - * reset. - */ - 'resetToInitialState': resetToInitialState -}; - -}(); diff --git a/libs/plasio/LICENSE b/libs/plasio/LICENSE deleted file mode 100644 index 281fd93..0000000 --- a/libs/plasio/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Uday Verma, uday.karan@gmail.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/libs/plasio/js/laslaz.js b/libs/plasio/js/laslaz.js deleted file mode 100644 index c8c40d2..0000000 --- a/libs/plasio/js/laslaz.js +++ /dev/null @@ -1,398 +0,0 @@ -// laslaz.js -// LAS/LAZ loading -// - -//var common = require("./common"), -// Promise = require("bluebird"); - -(function(scope) { - "use strict"; - - var pointFormatReaders = { - 0: function(dv) { - return { - "position": [ dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)], - "intensity": dv.getUint16(12, true), - "classification": dv.getUint8(16, true) - }; - }, - 1: function(dv) { - return { - "position": [ dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)], - "intensity": dv.getUint16(12, true), - "classification": dv.getUint8(16, true) - }; - }, - 2: function(dv) { - return { - "position": [ dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)], - "intensity": dv.getUint16(12, true), - "classification": dv.getUint8(16, true), - "color": [dv.getUint16(20, true), dv.getUint16(22, true), dv.getUint16(24, true)] - }; - }, - 3: function(dv) { - return { - "position": [ dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)], - "intensity": dv.getUint16(12, true), - "classification": dv.getUint8(16, true), - "color": [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)] - }; - } - }; - - function readAs(buf, Type, offset, count) { - count = (count === undefined || count === 0 ? 1 : count); - var sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count); - - var r = new Type(sub); - if (count === undefined || count === 1) - return r[0]; - - var ret = []; - for (var i = 0 ; i < count ; i ++) { - ret.push(r[i]); - } - - return ret; - } - - function parseLASHeader(arraybuffer) { - var o = {}; - - o.pointsOffset = readAs(arraybuffer, Uint32Array, 32*3); - o.pointsFormatId = readAs(arraybuffer, Uint8Array, 32*3+8); - o.pointsStructSize = readAs(arraybuffer, Uint16Array, 32*3+8+1); - o.pointsCount = readAs(arraybuffer, Uint32Array, 32*3 + 11); - - - var start = 32*3 + 35; - o.scale = readAs(arraybuffer, Float64Array, start, 3); start += 24; // 8*3 - o.offset = readAs(arraybuffer, Float64Array, start, 3); start += 24; - - - - var bounds = readAs(arraybuffer, Float64Array, start, 6); start += 48; // 8*6; - o.maxs = [bounds[0], bounds[2], bounds[4]]; - o.mins = [bounds[1], bounds[3], bounds[5]]; - - return o; - } - - var msgIndex = 0; - var waitHandlers = {}; - - // This method is scope-wide since the nacl module uses this fuction to notify - // us of events - scope.handleMessage = function(message_event) { - var msg = message_event.data; - var resolver = waitHandlers[msg.id]; - delete waitHandlers[msg.id]; - - // call the callback in a separate context, make sure we've cleaned our - // state out before the callback is invoked since it may queue more doExchanges - setTimeout(function() { - if (msg.error) - return resolver.reject(new Error(msg.message || "Unknown Error")); - - if (msg.hasOwnProperty('count') && msg.hasOwnProperty('hasMoreData')) { - return resolver.resolve({ - buffer: msg.result, - count: msg.count, - hasMoreData: msg.hasMoreData}); - } - - resolver.resolve(msg.result); - }, 0); - }; - - var doDataExchange = function(cmd, callback) { - cmd.id = msgIndex.toString(); - msgIndex ++; - - var resolver = Promise.defer(); - waitHandlers[cmd.id] = resolver; - - nacl_module.postMessage(cmd); - - return resolver.promise.cancellable(); - }; - - // LAS Loader - // Loads uncompressed files - // - var LASLoader = function(arraybuffer) { - this.arraybuffer = arraybuffer; - }; - - LASLoader.prototype.open = function() { - // nothing needs to be done to open this file - // - this.readOffset = 0; - return new Promise(function(res, rej) { - setTimeout(res, 0); - }); - }; - - LASLoader.prototype.getHeader = function() { - var o = this; - - return new Promise(function(res, rej) { - setTimeout(function() { - o.header = parseLASHeader(o.arraybuffer); - res(o.header); - }, 0); - }); - }; - - LASLoader.prototype.readData = function(count, offset, skip) { - var o = this; - - return new Promise(function(res, rej) { - setTimeout(function() { - if (!o.header) - return rej(new Error("Cannot start reading data till a header request is issued")); - - var start; - if (skip <= 1) { - count = Math.min(count, o.header.pointsCount - o.readOffset); - start = o.header.pointsOffset + o.readOffset * o.header.pointsStructSize; - var end = start + count * o.header.pointsStructSize; - res({ - buffer: o.arraybuffer.slice(start, end), - count: count, - hasMoreData: o.readOffset + count < o.header.pointsCount}); - o.readOffset += count; - } - else { - var pointsToRead = Math.min(count * skip, o.header.pointsCount - o.readOffset); - var bufferSize = Math.ceil(pointsToRead / skip); - var pointsRead = 0; - - var buf = new Uint8Array(bufferSize * o.header.pointsStructSize); - for (var i = 0 ; i < pointsToRead ; i ++) { - if (i % skip === 0) { - start = o.header.pointsOffset + o.readOffset * o.header.pointsStructSize; - var src = new Uint8Array(o.arraybuffer, start, o.header.pointsStructSize); - - buf.set(src, pointsRead * o.header.pointsStructSize); - pointsRead ++; - } - - o.readOffset ++; - } - - res({ - buffer: buf.buffer, - count: pointsRead, - hasMoreData: o.readOffset < o.header.pointsCount - }); - } - }, 0); - }); - }; - - LASLoader.prototype.close = function() { - var o = this; - return new Promise(function(res, rej) { - o.arraybuffer = null; - setTimeout(res, 0); - }); - }; - - // LAZ Loader - // Uses NaCL module to load LAZ files - // - var LAZLoader = function(arraybuffer) { - this.arraybuffer = arraybuffer; - - let workerPath = Potree.scriptPath + "/workers/LASLAZWorker.js"; - this.ww = Potree.workerPool.getWorker(workerPath); - - this.nextCB = null; - var o = this; - - this.ww.onmessage = function(e) { - if (o.nextCB !== null) { - o.nextCB(e.data); - o.nextCB = null; - } - }; - - this.dorr = function(req, cb) { - o.nextCB = cb; - o.ww.postMessage(req); - }; - }; - - LAZLoader.prototype.open = function() { - - // nothing needs to be done to open this file - // - var o = this; - return new Promise(function(res, rej) { - o.dorr({type:"open", arraybuffer: o.arraybuffer}, function(r) { - if (r.status !== 1) - return rej(new Error("Failed to open file")); - - res(true); - }); - }); - }; - - LAZLoader.prototype.getHeader = function() { - var o = this; - - return new Promise(function(res, rej) { - o.dorr({type:'header'}, function(r) { - if (r.status !== 1) - return rej(new Error("Failed to get header")); - - res(r.header); - }); - }); - }; - - LAZLoader.prototype.readData = function(count, offset, skip) { - var o = this; - - return new Promise(function(res, rej) { - o.dorr({type:'read', count: count, offset: offset, skip: skip}, function(r) { - if (r.status !== 1) - return rej(new Error("Failed to read data")); - res({ - buffer: r.buffer, - count: r.count, - hasMoreData: r.hasMoreData - }); - }); - }); - }; - - LAZLoader.prototype.close = function() { - var o = this; - - return new Promise(function(res, rej) { - o.dorr({type:'close'}, function(r) { - let workerPath = Potree.scriptPath + "/workers/LASLAZWorker.js"; - Potree.workerPool.returnWorker(workerPath, o.ww); - - if (r.status !== 1) - return rej(new Error("Failed to close file")); - - res(true); - }); - }); - }; - - // A single consistent interface for loading LAS/LAZ files - var LASFile = function(arraybuffer) { - this.arraybuffer = arraybuffer; - - this.determineVersion(); - if (this.version > 12) - throw new Error("Only file versions <= 1.2 are supported at this time"); - - this.determineFormat(); - if (pointFormatReaders[this.formatId] === undefined) - throw new Error("The point format ID is not supported"); - - this.loader = this.isCompressed ? - new LAZLoader(this.arraybuffer) : - new LASLoader(this.arraybuffer); - }; - - LASFile.prototype.determineFormat = function() { - var formatId = readAs(this.arraybuffer, Uint8Array, 32*3+8); - var bit_7 = (formatId & 0x80) >> 7; - var bit_6 = (formatId & 0x40) >> 6; - - if (bit_7 === 1 && bit_6 === 1) - throw new Error("Old style compression not supported"); - - this.formatId = formatId & 0x3f; - this.isCompressed = (bit_7 === 1 || bit_6 === 1); - }; - - LASFile.prototype.determineVersion = function() { - var ver = new Int8Array(this.arraybuffer, 24, 2); - this.version = ver[0] * 10 + ver[1]; - this.versionAsString = ver[0] + "." + ver[1]; - }; - - LASFile.prototype.open = function() { - return this.loader.open(); - }; - - LASFile.prototype.getHeader = function() { - return this.loader.getHeader(); - }; - - LASFile.prototype.readData = function(count, start, skip) { - return this.loader.readData(count, start, skip); - }; - - LASFile.prototype.close = function() { - return this.loader.close(); - }; - - // Decodes LAS records into points - // - var LASDecoder = function(buffer, pointFormatID, pointSize, pointsCount, scale, offset, mins, maxs) { - this.arrayb = buffer; - this.decoder = pointFormatReaders[pointFormatID]; - this.pointsCount = pointsCount; - this.pointSize = pointSize; - this.scale = scale; - this.offset = offset; - this.mins = mins; - this.maxs = maxs; - }; - - LASDecoder.prototype.getPoint = function(index) { - if (index < 0 || index >= this.pointsCount) - throw new Error("Point index out of range"); - - var dv = new DataView(this.arrayb, index * this.pointSize, this.pointSize); - return this.decoder(dv); - }; - - // NACL Module support - // Called by the common.js module. - // - //window.startNaCl = function(name, tc, config, width, height) { - // // check browser support for nacl - // // - // if(!common.browserSupportsNaCl()) { - // return $.event.trigger({ - // type: "plasio.nacl.error", - // message: "NaCl support is not available" - // }); - // } - - // navigator.webkitPersistentStorage.requestQuota(2048 * 2048, function(bytes) { - // common.updateStatus( - // 'Allocated ' + bytes + ' bytes of persistant storage.'); - // common.attachDefaultListeners(); - // common.createNaClModule(name, tc, config, width, height); - // }, - // function(e) { - // $.event.trigger({ - // type: "plasio.nacl.error", - // message: "Could not allocate persistant storage" - // }); - // }); - - // $(document).on("plasio.nacl.available", function() { - // scope.LASModuleWasLoaded = true; - // }); - //}; - - scope.LAZLoader = LAZLoader; - scope.LASLoader = LASLoader; - scope.LASFile = LASFile; - scope.LASDecoder = LASDecoder; - scope.LASModuleWasLoaded = false; -//})(module.exports); -})(this); - diff --git a/libs/plasio/vendor/bluebird.js b/libs/plasio/vendor/bluebird.js deleted file mode 100644 index b9b7fa0..0000000 --- a/libs/plasio/vendor/bluebird.js +++ /dev/null @@ -1,5140 +0,0 @@ -/** - * bluebird build version 1.0.8 - * Features enabled: core, timers, race, any, call_get, filter, generators, map, nodeify, promisify, props, reduce, settle, some, progress, cancel, synchronous_inspection -*/ -/** - * @preserve Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.Promise=e():"undefined"!=typeof global?global.Promise=e():"undefined"!=typeof self&&(self.Promise=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, Promise$_CreatePromiseArray, PromiseArray) { - - var SomePromiseArray = require("./some_promise_array.js")(PromiseArray); - var ASSERT = require("./assert.js"); - - function Promise$_Any(promises, useBound, caller) { - var ret = Promise$_CreatePromiseArray( - promises, - SomePromiseArray, - caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0 - ); - var promise = ret.promise(); - if (promise.isRejected()) { - return promise; - } - ret.setHowMany(1); - ret.setUnwrap(); - ret.init(); - return promise; - } - - Promise.any = function Promise$Any(promises) { - return Promise$_Any(promises, false, Promise.any); - }; - - Promise.prototype.any = function Promise$any() { - return Promise$_Any(this, true, this.any); - }; - -}; - -},{"./assert.js":2,"./some_promise_array.js":35}],2:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = (function(){ - var AssertionError = (function() { - function AssertionError(a) { - this.constructor$(a); - this.message = a; - this.name = "AssertionError"; - } - AssertionError.prototype = new Error(); - AssertionError.prototype.constructor = AssertionError; - AssertionError.prototype.constructor$ = Error; - return AssertionError; - })(); - - return function assert(boolExpr, message) { - if (boolExpr === true) return; - - var ret = new AssertionError(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(ret, assert); - } - if (console && console.error) { - console.error(ret.stack + ""); - } - throw ret; - - }; -})(); - -},{}],3:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var ASSERT = require("./assert.js"); -var schedule = require("./schedule.js"); -var Queue = require("./queue.js"); -var errorObj = require("./util.js").errorObj; -var tryCatch1 = require("./util.js").tryCatch1; - -function Async() { - this._isTickUsed = false; - this._length = 0; - this._lateBuffer = new Queue(); - this._functionBuffer = new Queue(25000 * 3); - var self = this; - this.consumeFunctionBuffer = function Async$consumeFunctionBuffer() { - self._consumeFunctionBuffer(); - }; -} - -Async.prototype.haveItemsQueued = function Async$haveItemsQueued() { - return this._length > 0; -}; - -Async.prototype.invokeLater = function Async$invokeLater(fn, receiver, arg) { - this._lateBuffer.push(fn, receiver, arg); - this._queueTick(); -}; - -Async.prototype.invoke = function Async$invoke(fn, receiver, arg) { - var functionBuffer = this._functionBuffer; - functionBuffer.push(fn, receiver, arg); - this._length = functionBuffer.length(); - this._queueTick(); -}; - -Async.prototype._consumeFunctionBuffer = -function Async$_consumeFunctionBuffer() { - var functionBuffer = this._functionBuffer; - while(functionBuffer.length() > 0) { - var fn = functionBuffer.shift(); - var receiver = functionBuffer.shift(); - var arg = functionBuffer.shift(); - fn.call(receiver, arg); - } - this._reset(); - this._consumeLateBuffer(); -}; - -Async.prototype._consumeLateBuffer = function Async$_consumeLateBuffer() { - var buffer = this._lateBuffer; - while(buffer.length() > 0) { - var fn = buffer.shift(); - var receiver = buffer.shift(); - var arg = buffer.shift(); - var res = tryCatch1(fn, receiver, arg); - if (res === errorObj) { - this._queueTick(); - throw res.e; - } - } -}; - -Async.prototype._queueTick = function Async$_queue() { - if (!this._isTickUsed) { - schedule(this.consumeFunctionBuffer); - this._isTickUsed = true; - } -}; - -Async.prototype._reset = function Async$_reset() { - this._isTickUsed = false; - this._length = 0; -}; - -module.exports = new Async(); - -},{"./assert.js":2,"./queue.js":28,"./schedule.js":31,"./util.js":39}],4:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var Promise = require("./promise.js")(); -module.exports = Promise; -},{"./promise.js":20}],5:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise) { - Promise.prototype.call = function Promise$call(propertyName) { - var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];} - - return this._then(function(obj) { - return obj[propertyName].apply(obj, args); - }, - void 0, - void 0, - void 0, - void 0, - this.call - ); - }; - - function Promise$getter(obj) { - var prop = typeof this === "string" - ? this - : ("" + this); - return obj[prop]; - } - Promise.prototype.get = function Promise$get(propertyName) { - return this._then( - Promise$getter, - void 0, - void 0, - propertyName, - void 0, - this.get - ); - }; -}; - -},{}],6:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { - var errors = require("./errors.js"); - var async = require("./async.js"); - var ASSERT = require("./assert.js"); - var CancellationError = errors.CancellationError; - var SYNC_TOKEN = {}; - - Promise.prototype._cancel = function Promise$_cancel() { - if (!this.isCancellable()) return this; - var parent; - if ((parent = this._cancellationParent) !== void 0 && - parent.isCancellable()) { - parent.cancel(SYNC_TOKEN); - return; - } - var err = new CancellationError(); - this._attachExtraTrace(err); - this._rejectUnchecked(err); - }; - - Promise.prototype.cancel = function Promise$cancel(token) { - if (!this.isCancellable()) return this; - if (token === SYNC_TOKEN) { - this._cancel(); - return this; - } - async.invokeLater(this._cancel, this, void 0); - return this; - }; - - Promise.prototype.cancellable = function Promise$cancellable() { - if (this._cancellable()) return this; - this._setCancellable(); - this._cancellationParent = void 0; - return this; - }; - - Promise.prototype.uncancellable = function Promise$uncancellable() { - var ret = new Promise(INTERNAL); - ret._setTrace(this.uncancellable, this); - ret._follow(this); - ret._unsetCancellable(); - if (this._isBound()) ret._setBoundTo(this._boundTo); - return ret; - }; - - Promise.prototype.fork = - function Promise$fork(didFulfill, didReject, didProgress) { - var ret = this._then(didFulfill, didReject, didProgress, - void 0, void 0, this.fork); - - ret._setCancellable(); - ret._cancellationParent = void 0; - return ret; - }; -}; - -},{"./assert.js":2,"./async.js":3,"./errors.js":10}],7:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function() { -var ASSERT = require("./assert.js"); -var inherits = require("./util.js").inherits; -var defineProperty = require("./es5.js").defineProperty; - -var rignore = new RegExp( - "\\b(?:[\\w.]*Promise(?:Array|Spawn)?\\$_\\w+|" + - "tryCatch(?:1|2|Apply)|new \\w*PromiseArray|" + - "\\w*PromiseArray\\.\\w*PromiseArray|" + - "setTimeout|CatchFilter\\$_\\w+|makeNodePromisified|processImmediate|" + - "process._tickCallback|nextTick|Async\\$\\w+)\\b" -); - -var rtraceline = null; -var formatStack = null; -var areNamesMangled = false; - -function formatNonError(obj) { - var str; - if (typeof obj === "function") { - str = "[function " + - (obj.name || "anonymous") + - "]"; - } - else { - str = obj.toString(); - var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; - if (ruselessToString.test(str)) { - try { - var newStr = JSON.stringify(obj); - str = newStr; - } - catch(e) { - - } - } - if (str.length === 0) { - str = "(empty array)"; - } - } - return ("(<" + snip(str) + ">, no stack trace)"); -} - -function snip(str) { - var maxChars = 41; - if (str.length < maxChars) { - return str; - } - return str.substr(0, maxChars - 3) + "..."; -} - -function CapturedTrace(ignoreUntil, isTopLevel) { - if (!areNamesMangled) { - } - this.captureStackTrace(ignoreUntil, isTopLevel); - -} -inherits(CapturedTrace, Error); - -CapturedTrace.prototype.captureStackTrace = -function CapturedTrace$captureStackTrace(ignoreUntil, isTopLevel) { - captureStackTrace(this, ignoreUntil, isTopLevel); -}; - -CapturedTrace.possiblyUnhandledRejection = -function CapturedTrace$PossiblyUnhandledRejection(reason) { - if (typeof console === "object") { - var message; - if (typeof reason === "object" || typeof reason === "function") { - var stack = reason.stack; - message = "Possibly unhandled " + formatStack(stack, reason); - } - else { - message = "Possibly unhandled " + String(reason); - } - if (typeof console.error === "function" || - typeof console.error === "object") { - console.error(message); - } - else if (typeof console.log === "function" || - typeof console.error === "object") { - console.log(message); - } - } -}; - -areNamesMangled = CapturedTrace.prototype.captureStackTrace.name !== - "CapturedTrace$captureStackTrace"; - -CapturedTrace.combine = function CapturedTrace$Combine(current, prev) { - var curLast = current.length - 1; - for (var i = prev.length - 1; i >= 0; --i) { - var line = prev[i]; - if (current[curLast] === line) { - current.pop(); - curLast--; - } - else { - break; - } - } - - current.push("From previous event:"); - var lines = current.concat(prev); - - var ret = []; - - - for (var i = 0, len = lines.length; i < len; ++i) { - - if ((rignore.test(lines[i]) || - (i > 0 && !rtraceline.test(lines[i])) && - lines[i] !== "From previous event:") - ) { - continue; - } - ret.push(lines[i]); - } - return ret; -}; - -CapturedTrace.isSupported = function CapturedTrace$IsSupported() { - return typeof captureStackTrace === "function"; -}; - -var captureStackTrace = (function stackDetection() { - if (typeof Error.stackTraceLimit === "number" && - typeof Error.captureStackTrace === "function") { - rtraceline = /^\s*at\s*/; - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if (error.name !== void 0 && - error.message !== void 0) { - return error.name + ". " + error.message; - } - return formatNonError(error); - - - }; - var captureStackTrace = Error.captureStackTrace; - return function CapturedTrace$_captureStackTrace( - receiver, ignoreUntil) { - captureStackTrace(receiver, ignoreUntil); - }; - } - var err = new Error(); - - if (!areNamesMangled && typeof err.stack === "string" && - typeof "".startsWith === "function" && - (err.stack.startsWith("stackDetection@")) && - stackDetection.name === "stackDetection") { - - defineProperty(Error, "stackTraceLimit", { - writable: true, - enumerable: false, - configurable: false, - value: 25 - }); - rtraceline = /@/; - var rline = /[@\n]/; - - formatStack = function(stack, error) { - if (typeof stack === "string") { - return (error.name + ". " + error.message + "\n" + stack); - } - - if (error.name !== void 0 && - error.message !== void 0) { - return error.name + ". " + error.message; - } - return formatNonError(error); - }; - - return function captureStackTrace(o, fn) { - var name = fn.name; - var stack = new Error().stack; - var split = stack.split(rline); - var i, len = split.length; - for (i = 0; i < len; i += 2) { - if (split[i] === name) { - break; - } - } - split = split.slice(i + 2); - len = split.length - 2; - var ret = ""; - for (i = 0; i < len; i += 2) { - ret += split[i]; - ret += "@"; - ret += split[i + 1]; - ret += "\n"; - } - o.stack = ret; - }; - } - else { - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if ((typeof error === "object" || - typeof error === "function") && - error.name !== void 0 && - error.message !== void 0) { - return error.name + ". " + error.message; - } - return formatNonError(error); - }; - - return null; - } -})(); - -return CapturedTrace; -}; - -},{"./assert.js":2,"./es5.js":12,"./util.js":39}],8:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(NEXT_FILTER) { -var util = require("./util.js"); -var errors = require("./errors.js"); -var tryCatch1 = util.tryCatch1; -var errorObj = util.errorObj; -var keys = require("./es5.js").keys; - -function CatchFilter(instances, callback, promise) { - this._instances = instances; - this._callback = callback; - this._promise = promise; -} - -function CatchFilter$_safePredicate(predicate, e) { - var safeObject = {}; - var retfilter = tryCatch1(predicate, safeObject, e); - - if (retfilter === errorObj) return retfilter; - - var safeKeys = keys(safeObject); - if (safeKeys.length) { - errorObj.e = new TypeError( - "Catch filter must inherit from Error " - + "or be a simple predicate function"); - return errorObj; - } - return retfilter; -} - -CatchFilter.prototype.doFilter = function CatchFilter$_doFilter(e) { - var cb = this._callback; - var promise = this._promise; - var boundTo = promise._isBound() ? promise._boundTo : void 0; - for (var i = 0, len = this._instances.length; i < len; ++i) { - var item = this._instances[i]; - var itemIsErrorType = item === Error || - (item != null && item.prototype instanceof Error); - - if (itemIsErrorType && e instanceof item) { - var ret = tryCatch1(cb, boundTo, e); - if (ret === errorObj) { - NEXT_FILTER.e = ret.e; - return NEXT_FILTER; - } - return ret; - } else if (typeof item === "function" && !itemIsErrorType) { - var shouldHandle = CatchFilter$_safePredicate(item, e); - if (shouldHandle === errorObj) { - var trace = errors.canAttach(errorObj.e) - ? errorObj.e - : new Error(errorObj.e + ""); - this._promise._attachExtraTrace(trace); - e = errorObj.e; - break; - } else if (shouldHandle) { - var ret = tryCatch1(cb, boundTo, e); - if (ret === errorObj) { - NEXT_FILTER.e = ret.e; - return NEXT_FILTER; - } - return ret; - } - } - } - NEXT_FILTER.e = e; - return NEXT_FILTER; -}; - -return CatchFilter; -}; - -},{"./errors.js":10,"./es5.js":12,"./util.js":39}],9:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var util = require("./util.js"); -var ASSERT = require("./assert.js"); -var isPrimitive = util.isPrimitive; -var wrapsPrimitiveReceiver = util.wrapsPrimitiveReceiver; - -module.exports = function(Promise) { -var returner = function Promise$_returner() { - return this; -}; -var thrower = function Promise$_thrower() { - throw this; -}; - -var wrapper = function Promise$_wrapper(value, action) { - if (action === 1) { - return function Promise$_thrower() { - throw value; - }; - } - else if (action === 2) { - return function Promise$_returner() { - return value; - }; - } -}; - - -Promise.prototype["return"] = -Promise.prototype.thenReturn = -function Promise$thenReturn(value) { - if (wrapsPrimitiveReceiver && isPrimitive(value)) { - return this._then( - wrapper(value, 2), - void 0, - void 0, - void 0, - void 0, - this.thenReturn - ); - } - return this._then(returner, void 0, void 0, - value, void 0, this.thenReturn); -}; - -Promise.prototype["throw"] = -Promise.prototype.thenThrow = -function Promise$thenThrow(reason) { - if (wrapsPrimitiveReceiver && isPrimitive(reason)) { - return this._then( - wrapper(reason, 1), - void 0, - void 0, - void 0, - void 0, - this.thenThrow - ); - } - return this._then(thrower, void 0, void 0, - reason, void 0, this.thenThrow); -}; -}; - -},{"./assert.js":2,"./util.js":39}],10:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var global = require("./global.js"); -var Objectfreeze = require("./es5.js").freeze; -var util = require("./util.js"); -var inherits = util.inherits; -var notEnumerableProp = util.notEnumerableProp; -var Error = global.Error; - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isAsync", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof RejectionError) || - e["isAsync"] === true); -} - -function isError(obj) { - return obj instanceof Error; -} - -function canAttach(obj) { - return isError(obj); -} - -function subError(nameProperty, defaultMessage) { - function SubError(message) { - if (!(this instanceof SubError)) return new SubError(message); - this.message = typeof message === "string" ? message : defaultMessage; - this.name = nameProperty; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } - inherits(SubError, Error); - return SubError; -} - -var TypeError = global.TypeError; -if (typeof TypeError !== "function") { - TypeError = subError("TypeError", "type error"); -} -var RangeError = global.RangeError; -if (typeof RangeError !== "function") { - RangeError = subError("RangeError", "range error"); -} -var CancellationError = subError("CancellationError", "cancellation error"); -var TimeoutError = subError("TimeoutError", "timeout error"); - -function RejectionError(message) { - this.name = "RejectionError"; - this.message = message; - this.cause = message; - this.isAsync = true; - - if (message instanceof Error) { - this.message = message.message; - this.stack = message.stack; - } - else if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - -} -inherits(RejectionError, Error); - -var key = "__BluebirdErrorTypes__"; -var errorTypes = global[key]; -if (!errorTypes) { - errorTypes = Objectfreeze({ - CancellationError: CancellationError, - TimeoutError: TimeoutError, - RejectionError: RejectionError - }); - notEnumerableProp(global, key, errorTypes); -} - -module.exports = { - Error: Error, - TypeError: TypeError, - RangeError: RangeError, - CancellationError: errorTypes.CancellationError, - RejectionError: errorTypes.RejectionError, - TimeoutError: errorTypes.TimeoutError, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - canAttach: canAttach -}; - -},{"./es5.js":12,"./global.js":16,"./util.js":39}],11:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise) { -var TypeError = require('./errors.js').TypeError; - -function apiRejection(msg) { - var error = new TypeError(msg); - var ret = Promise.rejected(error); - var parent = ret._peekContext(); - if (parent != null) { - parent._attachExtraTrace(error); - } - return ret; -} - -return apiRejection; -}; - -},{"./errors.js":10}],12:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -var isES5 = (function(){ - "use strict"; - return this === void 0; -})(); - -if (isES5) { - module.exports = { - freeze: Object.freeze, - defineProperty: Object.defineProperty, - keys: Object.keys, - getPrototypeOf: Object.getPrototypeOf, - isArray: Array.isArray, - isES5: isES5 - }; -} - -else { - var has = {}.hasOwnProperty; - var str = {}.toString; - var proto = {}.constructor.prototype; - - function ObjectKeys(o) { - var ret = []; - for (var key in o) { - if (has.call(o, key)) { - ret.push(key); - } - } - return ret; - } - - function ObjectDefineProperty(o, key, desc) { - o[key] = desc.value; - return o; - } - - function ObjectFreeze(obj) { - return obj; - } - - function ObjectGetPrototypeOf(obj) { - try { - return Object(obj).constructor.prototype; - } - catch (e) { - return proto; - } - } - - function ArrayIsArray(obj) { - try { - return str.call(obj) === "[object Array]"; - } - catch(e) { - return false; - } - } - - module.exports = { - isArray: ArrayIsArray, - keys: ObjectKeys, - defineProperty: ObjectDefineProperty, - freeze: ObjectFreeze, - getPrototypeOf: ObjectGetPrototypeOf, - isES5: isES5 - }; -} - -},{}],13:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise) { - var ASSERT = require("./assert.js"); - var isArray = require("./util.js").isArray; - - function Promise$_filter(booleans) { - var values = this._settledValue; - var len = values.length; - var ret = new Array(len); - var j = 0; - - for (var i = 0; i < len; ++i) { - if (booleans[i]) ret[j++] = values[i]; - - } - ret.length = j; - return ret; - } - - var ref = {ref: null}; - Promise.filter = function Promise$Filter(promises, fn) { - return Promise.map(promises, fn, ref) - ._then(Promise$_filter, void 0, void 0, - ref.ref, void 0, Promise.filter); - }; - - Promise.prototype.filter = function Promise$filter(fn) { - return this.map(fn, ref) - ._then(Promise$_filter, void 0, void 0, - ref.ref, void 0, this.filter); - }; -}; - -},{"./assert.js":2,"./util.js":39}],14:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -module.exports = function(Promise, NEXT_FILTER) { - var util = require("./util.js"); - var wrapsPrimitiveReceiver = util.wrapsPrimitiveReceiver; - var isPrimitive = util.isPrimitive; - var thrower = util.thrower; - - - function returnThis() { - return this; - } - function throwThis() { - throw this; - } - function makeReturner(r) { - return function Promise$_returner() { - return r; - }; - } - function makeThrower(r) { - return function Promise$_thrower() { - throw r; - }; - } - function promisedFinally(ret, reasonOrValue, isFulfilled) { - var useConstantFunction = - wrapsPrimitiveReceiver && isPrimitive(reasonOrValue); - - if (isFulfilled) { - return ret._then( - useConstantFunction - ? returnThis - : makeReturner(reasonOrValue), - thrower, void 0, reasonOrValue, void 0, promisedFinally); - } - else { - return ret._then( - useConstantFunction - ? throwThis - : makeThrower(reasonOrValue), - thrower, void 0, reasonOrValue, void 0, promisedFinally); - } - } - - function finallyHandler(reasonOrValue) { - var promise = this.promise; - var handler = this.handler; - - var ret = promise._isBound() - ? handler.call(promise._boundTo) - : handler(); - - if (ret !== void 0) { - var maybePromise = Promise._cast(ret, finallyHandler, void 0); - if (Promise.is(maybePromise)) { - return promisedFinally(maybePromise, reasonOrValue, - promise.isFulfilled()); - } - } - - if (promise.isRejected()) { - NEXT_FILTER.e = reasonOrValue; - return NEXT_FILTER; - } - else { - return reasonOrValue; - } - } - - Promise.prototype.lastly = Promise.prototype["finally"] = - function Promise$finally(handler) { - if (typeof handler !== "function") return this.then(); - - var promiseAndHandler = { - promise: this, - handler: handler - }; - - return this._then(finallyHandler, finallyHandler, void 0, - promiseAndHandler, void 0, this.lastly); - }; -}; - -},{"./util.js":39}],15:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, apiRejection, INTERNAL) { - var PromiseSpawn = require("./promise_spawn.js")(Promise, INTERNAL); - var errors = require("./errors.js"); - var TypeError = errors.TypeError; - var deprecated = require("./util.js").deprecated; - - Promise.coroutine = function Promise$Coroutine(generatorFunction) { - if (typeof generatorFunction !== "function") { - throw new TypeError("generatorFunction must be a function"); - } - var PromiseSpawn$ = PromiseSpawn; - return function anonymous() { - var generator = generatorFunction.apply(this, arguments); - var spawn = new PromiseSpawn$(void 0, void 0, anonymous); - spawn._generator = generator; - spawn._next(void 0); - return spawn.promise(); - }; - }; - - Promise.coroutine.addYieldHandler = PromiseSpawn.addYieldHandler; - - Promise.spawn = function Promise$Spawn(generatorFunction) { - deprecated("Promise.spawn is deprecated. Use Promise.coroutine instead."); - if (typeof generatorFunction !== "function") { - return apiRejection("generatorFunction must be a function"); - } - var spawn = new PromiseSpawn(generatorFunction, this, Promise.spawn); - var ret = spawn.promise(); - spawn._run(Promise.spawn); - return ret; - }; -}; - -},{"./errors.js":10,"./promise_spawn.js":24,"./util.js":39}],16:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = (function(){ - if (typeof this !== "undefined") { - return this; - } - if (typeof process !== "undefined" && - typeof global !== "undefined" && - typeof process.execPath === "string") { - return global; - } - if (typeof window !== "undefined" && - typeof document !== "undefined" && - typeof navigator !== "undefined" && navigator !== null && - typeof navigator.appName === "string") { - if(window.wrappedJSObject !== undefined){ - return window.wrappedJSObject; - } - return window; - } -})(); - -},{}],17:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function( - Promise, Promise$_CreatePromiseArray, PromiseArray, apiRejection) { - - var ASSERT = require("./assert.js"); - - function Promise$_mapper(values) { - var fn = this; - var receiver = void 0; - - if (typeof fn !== "function") { - receiver = fn.receiver; - fn = fn.fn; - } - var shouldDefer = false; - - var ret = new Array(values.length); - - if (receiver === void 0) { - for (var i = 0, len = values.length; i < len; ++i) { - var value = fn(values[i], i, len); - if (!shouldDefer) { - var maybePromise = Promise._cast(value, - Promise$_mapper, void 0); - if (maybePromise instanceof Promise) { - if (maybePromise.isFulfilled()) { - ret[i] = maybePromise._settledValue; - continue; - } - else { - shouldDefer = true; - } - value = maybePromise; - } - } - ret[i] = value; - } - } - else { - for (var i = 0, len = values.length; i < len; ++i) { - var value = fn.call(receiver, values[i], i, len); - if (!shouldDefer) { - var maybePromise = Promise._cast(value, - Promise$_mapper, void 0); - if (maybePromise instanceof Promise) { - if (maybePromise.isFulfilled()) { - ret[i] = maybePromise._settledValue; - continue; - } - else { - shouldDefer = true; - } - value = maybePromise; - } - } - ret[i] = value; - } - } - return shouldDefer - ? Promise$_CreatePromiseArray(ret, PromiseArray, - Promise$_mapper, void 0).promise() - : ret; - } - - function Promise$_Map(promises, fn, useBound, caller, ref) { - if (typeof fn !== "function") { - return apiRejection("fn must be a function"); - } - - if (useBound === true && promises._isBound()) { - fn = { - fn: fn, - receiver: promises._boundTo - }; - } - - var ret = Promise$_CreatePromiseArray( - promises, - PromiseArray, - caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0 - ).promise(); - - if (ref !== void 0) { - ref.ref = ret; - } - - return ret._then( - Promise$_mapper, - void 0, - void 0, - fn, - void 0, - caller - ); - } - - Promise.prototype.map = function Promise$map(fn, ref) { - return Promise$_Map(this, fn, true, this.map, ref); - }; - - Promise.map = function Promise$Map(promises, fn, ref) { - return Promise$_Map(promises, fn, false, Promise.map, ref); - }; -}; - -},{"./assert.js":2}],18:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise) { - var util = require("./util.js"); - var async = require("./async.js"); - var ASSERT = require("./assert.js"); - var tryCatch2 = util.tryCatch2; - var tryCatch1 = util.tryCatch1; - var errorObj = util.errorObj; - - function thrower(r) { - throw r; - } - - function Promise$_successAdapter(val, receiver) { - var nodeback = this; - var ret = tryCatch2(nodeback, receiver, null, val); - if (ret === errorObj) { - async.invokeLater(thrower, void 0, ret.e); - } - } - function Promise$_errorAdapter(reason, receiver) { - var nodeback = this; - var ret = tryCatch1(nodeback, receiver, reason); - if (ret === errorObj) { - async.invokeLater(thrower, void 0, ret.e); - } - } - - Promise.prototype.nodeify = function Promise$nodeify(nodeback) { - if (typeof nodeback == "function") { - this._then( - Promise$_successAdapter, - Promise$_errorAdapter, - void 0, - nodeback, - this._isBound() ? this._boundTo : null, - this.nodeify - ); - } - return this; - }; -}; - -},{"./assert.js":2,"./async.js":3,"./util.js":39}],19:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, isPromiseArrayProxy) { - var ASSERT = require("./assert.js"); - var util = require("./util.js"); - var async = require("./async.js"); - var errors = require("./errors.js"); - var tryCatch1 = util.tryCatch1; - var errorObj = util.errorObj; - - Promise.prototype.progressed = function Promise$progressed(handler) { - return this._then(void 0, void 0, handler, - void 0, void 0, this.progressed); - }; - - Promise.prototype._progress = function Promise$_progress(progressValue) { - if (this._isFollowingOrFulfilledOrRejected()) return; - this._progressUnchecked(progressValue); - - }; - - Promise.prototype._progressHandlerAt = - function Promise$_progressHandlerAt(index) { - if (index === 0) return this._progressHandler0; - return this[index + 2 - 5]; - }; - - Promise.prototype._doProgressWith = - function Promise$_doProgressWith(progression) { - var progressValue = progression.value; - var handler = progression.handler; - var promise = progression.promise; - var receiver = progression.receiver; - - this._pushContext(); - var ret = tryCatch1(handler, receiver, progressValue); - this._popContext(); - - if (ret === errorObj) { - if (ret.e != null && - ret.e.name !== "StopProgressPropagation") { - var trace = errors.canAttach(ret.e) - ? ret.e : new Error(ret.e + ""); - promise._attachExtraTrace(trace); - promise._progress(ret.e); - } - } - else if (Promise.is(ret)) { - ret._then(promise._progress, null, null, promise, void 0, - this._progress); - } - else { - promise._progress(ret); - } - }; - - - Promise.prototype._progressUnchecked = - function Promise$_progressUnchecked(progressValue) { - if (!this.isPending()) return; - var len = this._length(); - - for (var i = 0; i < len; i += 5) { - var handler = this._progressHandlerAt(i); - var promise = this._promiseAt(i); - if (!Promise.is(promise)) { - var receiver = this._receiverAt(i); - if (typeof handler === "function") { - handler.call(receiver, progressValue, promise); - } - else if (Promise.is(receiver) && receiver._isProxied()) { - receiver._progressUnchecked(progressValue); - } - else if (isPromiseArrayProxy(receiver, promise)) { - receiver._promiseProgressed(progressValue, promise); - } - continue; - } - - if (typeof handler === "function") { - async.invoke(this._doProgressWith, this, { - handler: handler, - promise: promise, - receiver: this._receiverAt(i), - value: progressValue - }); - } - else { - async.invoke(promise._progress, promise, progressValue); - } - } - }; -}; - -},{"./assert.js":2,"./async.js":3,"./errors.js":10,"./util.js":39}],20:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function() { -var global = require("./global.js"); -var ASSERT = require("./assert.js"); -var util = require("./util.js"); -var async = require("./async.js"); -var errors = require("./errors.js"); - -var INTERNAL = function(){}; -var APPLY = {}; -var NEXT_FILTER = {e: null}; - -var PromiseArray = require("./promise_array.js")(Promise, INTERNAL); -var CapturedTrace = require("./captured_trace.js")(); -var CatchFilter = require("./catch_filter.js")(NEXT_FILTER); -var PromiseResolver = require("./promise_resolver.js"); - -var isArray = util.isArray; - -var errorObj = util.errorObj; -var tryCatch1 = util.tryCatch1; -var tryCatch2 = util.tryCatch2; -var tryCatchApply = util.tryCatchApply; -var RangeError = errors.RangeError; -var TypeError = errors.TypeError; -var CancellationError = errors.CancellationError; -var TimeoutError = errors.TimeoutError; -var RejectionError = errors.RejectionError; -var originatesFromRejection = errors.originatesFromRejection; -var markAsOriginatingFromRejection = errors.markAsOriginatingFromRejection; -var canAttach = errors.canAttach; -var thrower = util.thrower; -var apiRejection = require("./errors_api_rejection")(Promise); - - -var makeSelfResolutionError = function Promise$_makeSelfResolutionError() { - return new TypeError("circular promise resolution chain"); -}; - -function isPromise(obj) { - if (obj === void 0) return false; - return obj instanceof Promise; -} - -function isPromiseArrayProxy(receiver, promiseSlotValue) { - if (receiver instanceof PromiseArray) { - return promiseSlotValue >= 0; - } - return false; -} - -function Promise(resolver) { - if (typeof resolver !== "function") { - throw new TypeError("the promise constructor requires a resolver function"); - } - if (this.constructor !== Promise) { - throw new TypeError("the promise constructor cannot be invoked directly"); - } - this._bitField = 0; - this._fulfillmentHandler0 = void 0; - this._rejectionHandler0 = void 0; - this._promise0 = void 0; - this._receiver0 = void 0; - this._settledValue = void 0; - this._boundTo = void 0; - if (resolver !== INTERNAL) this._resolveFromResolver(resolver); -} - -Promise.prototype.bind = function Promise$bind(thisArg) { - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(this.bind, this); - ret._follow(this); - ret._setBoundTo(thisArg); - if (this._cancellable()) { - ret._setCancellable(); - ret._cancellationParent = this; - } - return ret; -}; - -Promise.prototype.toString = function Promise$toString() { - return "[object Promise]"; -}; - -Promise.prototype.caught = Promise.prototype["catch"] = -function Promise$catch(fn) { - var len = arguments.length; - if (len > 1) { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (typeof item === "function") { - catchInstances[j++] = item; - } - else { - var catchFilterTypeError = - new TypeError( - "A catch filter must be an error constructor " - + "or a filter function"); - - this._attachExtraTrace(catchFilterTypeError); - async.invoke(this._reject, this, catchFilterTypeError); - return; - } - } - catchInstances.length = j; - fn = arguments[i]; - - this._resetTrace(this.caught); - var catchFilter = new CatchFilter(catchInstances, fn, this); - return this._then(void 0, catchFilter.doFilter, void 0, - catchFilter, void 0, this.caught); - } - return this._then(void 0, fn, void 0, void 0, void 0, this.caught); -}; - -Promise.prototype.then = -function Promise$then(didFulfill, didReject, didProgress) { - return this._then(didFulfill, didReject, didProgress, - void 0, void 0, this.then); -}; - - -Promise.prototype.done = -function Promise$done(didFulfill, didReject, didProgress) { - var promise = this._then(didFulfill, didReject, didProgress, - void 0, void 0, this.done); - promise._setIsFinal(); -}; - -Promise.prototype.spread = function Promise$spread(didFulfill, didReject) { - return this._then(didFulfill, didReject, void 0, - APPLY, void 0, this.spread); -}; - -Promise.prototype.isFulfilled = function Promise$isFulfilled() { - return (this._bitField & 268435456) > 0; -}; - - -Promise.prototype.isRejected = function Promise$isRejected() { - return (this._bitField & 134217728) > 0; -}; - -Promise.prototype.isPending = function Promise$isPending() { - return !this.isResolved(); -}; - - -Promise.prototype.isResolved = function Promise$isResolved() { - return (this._bitField & 402653184) > 0; -}; - - -Promise.prototype.isCancellable = function Promise$isCancellable() { - return !this.isResolved() && - this._cancellable(); -}; - -Promise.prototype.toJSON = function Promise$toJSON() { - var ret = { - isFulfilled: false, - isRejected: false, - fulfillmentValue: void 0, - rejectionReason: void 0 - }; - if (this.isFulfilled()) { - ret.fulfillmentValue = this._settledValue; - ret.isFulfilled = true; - } - else if (this.isRejected()) { - ret.rejectionReason = this._settledValue; - ret.isRejected = true; - } - return ret; -}; - -Promise.prototype.all = function Promise$all() { - return Promise$_all(this, true, this.all); -}; - - -Promise.is = isPromise; - -function Promise$_all(promises, useBound, caller) { - return Promise$_CreatePromiseArray( - promises, - PromiseArray, - caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0 - ).promise(); -} -Promise.all = function Promise$All(promises) { - return Promise$_all(promises, false, Promise.all); -}; - -Promise.join = function Promise$Join() { - var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];} - return Promise$_CreatePromiseArray( - args, PromiseArray, Promise.join, void 0).promise(); -}; - -Promise.resolve = Promise.fulfilled = -function Promise$Resolve(value, caller) { - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(typeof caller === "function" - ? caller - : Promise.resolve, void 0); - if (ret._tryFollow(value)) { - return ret; - } - ret._cleanValues(); - ret._setFulfilled(); - ret._settledValue = value; - return ret; -}; - -Promise.reject = Promise.rejected = function Promise$Reject(reason) { - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(Promise.reject, void 0); - markAsOriginatingFromRejection(reason); - ret._cleanValues(); - ret._setRejected(); - ret._settledValue = reason; - if (!canAttach(reason)) { - var trace = new Error(reason + ""); - ret._setCarriedStackTrace(trace); - } - ret._ensurePossibleRejectionHandled(); - return ret; -}; - -Promise.prototype.error = function Promise$_error(fn) { - return this.caught(originatesFromRejection, fn); -}; - -Promise.prototype._resolveFromSyncValue = -function Promise$_resolveFromSyncValue(value, caller) { - if (value === errorObj) { - this._cleanValues(); - this._setRejected(); - this._settledValue = value.e; - this._ensurePossibleRejectionHandled(); - } - else { - var maybePromise = Promise._cast(value, caller, void 0); - if (maybePromise instanceof Promise) { - this._follow(maybePromise); - } - else { - this._cleanValues(); - this._setFulfilled(); - this._settledValue = value; - } - } -}; - -Promise.method = function Promise$_Method(fn) { - if (typeof fn !== "function") { - throw new TypeError("fn must be a function"); - } - return function Promise$_method() { - var value; - switch(arguments.length) { - case 0: value = tryCatch1(fn, this, void 0); break; - case 1: value = tryCatch1(fn, this, arguments[0]); break; - case 2: value = tryCatch2(fn, this, arguments[0], arguments[1]); break; - default: - var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];} - value = tryCatchApply(fn, args, this); break; - } - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(Promise$_method, void 0); - ret._resolveFromSyncValue(value, Promise$_method); - return ret; - }; -}; - -Promise.attempt = Promise["try"] = function Promise$_Try(fn, args, ctx) { - - if (typeof fn !== "function") { - return apiRejection("fn must be a function"); - } - var value = isArray(args) - ? tryCatchApply(fn, args, ctx) - : tryCatch1(fn, ctx, args); - - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(Promise.attempt, void 0); - ret._resolveFromSyncValue(value, Promise.attempt); - return ret; -}; - -Promise.defer = Promise.pending = function Promise$Defer(caller) { - var promise = new Promise(INTERNAL); - if (debugging) promise._setTrace(typeof caller === "function" - ? caller : Promise.defer, void 0); - return new PromiseResolver(promise); -}; - -Promise.bind = function Promise$Bind(thisArg) { - var ret = new Promise(INTERNAL); - if (debugging) ret._setTrace(Promise.bind, void 0); - ret._setFulfilled(); - ret._setBoundTo(thisArg); - return ret; -}; - -Promise.cast = function Promise$_Cast(obj, caller) { - if (typeof caller !== "function") { - caller = Promise.cast; - } - var ret = Promise._cast(obj, caller, void 0); - if (!(ret instanceof Promise)) { - return Promise.resolve(ret, caller); - } - return ret; -}; - -Promise.onPossiblyUnhandledRejection = -function Promise$OnPossiblyUnhandledRejection(fn) { - if (typeof fn === "function") { - CapturedTrace.possiblyUnhandledRejection = fn; - } - else { - CapturedTrace.possiblyUnhandledRejection = void 0; - } -}; - -var debugging = false || !!( - typeof process !== "undefined" && - typeof process.execPath === "string" && - typeof process.env === "object" && - (process.env["BLUEBIRD_DEBUG"] || - process.env["NODE_ENV"] === "development") -); - - -Promise.longStackTraces = function Promise$LongStackTraces() { - if (async.haveItemsQueued() && - debugging === false - ) { - throw new Error("cannot enable long stack traces after promises have been created"); - } - debugging = CapturedTrace.isSupported(); -}; - -Promise.hasLongStackTraces = function Promise$HasLongStackTraces() { - return debugging && CapturedTrace.isSupported(); -}; - -Promise.prototype._setProxyHandlers = -function Promise$_setProxyHandlers(receiver, promiseSlotValue) { - var index = this._length(); - - if (index >= 1048575 - 5) { - index = 0; - this._setLength(0); - } - if (index === 0) { - this._promise0 = promiseSlotValue; - this._receiver0 = receiver; - } - else { - var i = index - 5; - this[i + 3] = promiseSlotValue; - this[i + 4] = receiver; - this[i + 0] = - this[i + 1] = - this[i + 2] = void 0; - } - this._setLength(index + 5); -}; - -Promise.prototype._proxyPromiseArray = -function Promise$_proxyPromiseArray(promiseArray, index) { - this._setProxyHandlers(promiseArray, index); -}; - -Promise.prototype._proxyPromise = function Promise$_proxyPromise(promise) { - promise._setProxied(); - this._setProxyHandlers(promise, -1); -}; - -Promise.prototype._then = -function Promise$_then( - didFulfill, - didReject, - didProgress, - receiver, - internalData, - caller -) { - var haveInternalData = internalData !== void 0; - var ret = haveInternalData ? internalData : new Promise(INTERNAL); - - if (debugging && !haveInternalData) { - var haveSameContext = this._peekContext() === this._traceParent; - ret._traceParent = haveSameContext ? this._traceParent : this; - ret._setTrace(typeof caller === "function" - ? caller - : this._then, this); - } - - if (!haveInternalData && this._isBound()) { - ret._setBoundTo(this._boundTo); - } - - var callbackIndex = - this._addCallbacks(didFulfill, didReject, didProgress, ret, receiver); - - if (!haveInternalData && this._cancellable()) { - ret._setCancellable(); - ret._cancellationParent = this; - } - - if (this.isResolved()) { - async.invoke(this._queueSettleAt, this, callbackIndex); - } - - return ret; -}; - -Promise.prototype._length = function Promise$_length() { - return this._bitField & 1048575; -}; - -Promise.prototype._isFollowingOrFulfilledOrRejected = -function Promise$_isFollowingOrFulfilledOrRejected() { - return (this._bitField & 939524096) > 0; -}; - -Promise.prototype._isFollowing = function Promise$_isFollowing() { - return (this._bitField & 536870912) === 536870912; -}; - -Promise.prototype._setLength = function Promise$_setLength(len) { - this._bitField = (this._bitField & -1048576) | - (len & 1048575); -}; - -Promise.prototype._setFulfilled = function Promise$_setFulfilled() { - this._bitField = this._bitField | 268435456; -}; - -Promise.prototype._setRejected = function Promise$_setRejected() { - this._bitField = this._bitField | 134217728; -}; - -Promise.prototype._setFollowing = function Promise$_setFollowing() { - this._bitField = this._bitField | 536870912; -}; - -Promise.prototype._setIsFinal = function Promise$_setIsFinal() { - this._bitField = this._bitField | 33554432; -}; - -Promise.prototype._isFinal = function Promise$_isFinal() { - return (this._bitField & 33554432) > 0; -}; - -Promise.prototype._cancellable = function Promise$_cancellable() { - return (this._bitField & 67108864) > 0; -}; - -Promise.prototype._setCancellable = function Promise$_setCancellable() { - this._bitField = this._bitField | 67108864; -}; - -Promise.prototype._unsetCancellable = function Promise$_unsetCancellable() { - this._bitField = this._bitField & (~67108864); -}; - -Promise.prototype._setRejectionIsUnhandled = -function Promise$_setRejectionIsUnhandled() { - this._bitField = this._bitField | 2097152; -}; - -Promise.prototype._unsetRejectionIsUnhandled = -function Promise$_unsetRejectionIsUnhandled() { - this._bitField = this._bitField & (~2097152); -}; - -Promise.prototype._isRejectionUnhandled = -function Promise$_isRejectionUnhandled() { - return (this._bitField & 2097152) > 0; -}; - -Promise.prototype._setCarriedStackTrace = -function Promise$_setCarriedStackTrace(capturedTrace) { - this._bitField = this._bitField | 1048576; - this._fulfillmentHandler0 = capturedTrace; -}; - -Promise.prototype._unsetCarriedStackTrace = -function Promise$_unsetCarriedStackTrace() { - this._bitField = this._bitField & (~1048576); - this._fulfillmentHandler0 = void 0; -}; - -Promise.prototype._isCarryingStackTrace = -function Promise$_isCarryingStackTrace() { - return (this._bitField & 1048576) > 0; -}; - -Promise.prototype._getCarriedStackTrace = -function Promise$_getCarriedStackTrace() { - return this._isCarryingStackTrace() - ? this._fulfillmentHandler0 - : void 0; -}; - -Promise.prototype._receiverAt = function Promise$_receiverAt(index) { - var ret; - if (index === 0) { - ret = this._receiver0; - } - else { - ret = this[index + 4 - 5]; - } - if (this._isBound() && ret === void 0) { - return this._boundTo; - } - return ret; -}; - -Promise.prototype._promiseAt = function Promise$_promiseAt(index) { - if (index === 0) return this._promise0; - return this[index + 3 - 5]; -}; - -Promise.prototype._fulfillmentHandlerAt = -function Promise$_fulfillmentHandlerAt(index) { - if (index === 0) return this._fulfillmentHandler0; - return this[index + 0 - 5]; -}; - -Promise.prototype._rejectionHandlerAt = -function Promise$_rejectionHandlerAt(index) { - if (index === 0) return this._rejectionHandler0; - return this[index + 1 - 5]; -}; - -Promise.prototype._unsetAt = function Promise$_unsetAt(index) { - if (index === 0) { - this._rejectionHandler0 = - this._progressHandler0 = - this._promise0 = - this._receiver0 = void 0; - if (!this._isCarryingStackTrace()) { - this._fulfillmentHandler0 = void 0; - } - } - else { - this[index - 5 + 0] = - this[index - 5 + 1] = - this[index - 5 + 2] = - this[index - 5 + 3] = - this[index - 5 + 4] = void 0; - } -}; - -Promise.prototype._resolveFromResolver = -function Promise$_resolveFromResolver(resolver) { - var promise = this; - var localDebugging = debugging; - if (localDebugging) { - this._setTrace(this._resolveFromResolver, void 0); - this._pushContext(); - } - function Promise$_resolver(val) { - if (promise._tryFollow(val)) { - return; - } - promise._fulfill(val); - } - function Promise$_rejecter(val) { - var trace = canAttach(val) ? val : new Error(val + ""); - promise._attachExtraTrace(trace); - markAsOriginatingFromRejection(val); - promise._reject(val, trace === val ? void 0 : trace); - } - var r = tryCatch2(resolver, void 0, Promise$_resolver, Promise$_rejecter); - if (localDebugging) this._popContext(); - - if (r !== void 0 && r === errorObj) { - var trace = canAttach(r.e) ? r.e : new Error(r.e + ""); - promise._reject(r.e, trace); - } -}; - -Promise.prototype._addCallbacks = function Promise$_addCallbacks( - fulfill, - reject, - progress, - promise, - receiver -) { - var index = this._length(); - - if (index >= 1048575 - 5) { - index = 0; - this._setLength(0); - } - - if (index === 0) { - this._promise0 = promise; - if (receiver !== void 0) this._receiver0 = receiver; - if (typeof fulfill === "function" && !this._isCarryingStackTrace()) - this._fulfillmentHandler0 = fulfill; - if (typeof reject === "function") this._rejectionHandler0 = reject; - if (typeof progress === "function") this._progressHandler0 = progress; - } - else { - var i = index - 5; - this[i + 3] = promise; - this[i + 4] = receiver; - this[i + 0] = typeof fulfill === "function" - ? fulfill : void 0; - this[i + 1] = typeof reject === "function" - ? reject : void 0; - this[i + 2] = typeof progress === "function" - ? progress : void 0; - } - this._setLength(index + 5); - return index; -}; - - - -Promise.prototype._setBoundTo = function Promise$_setBoundTo(obj) { - if (obj !== void 0) { - this._bitField = this._bitField | 8388608; - this._boundTo = obj; - } - else { - this._bitField = this._bitField & (~8388608); - } -}; - -Promise.prototype._isBound = function Promise$_isBound() { - return (this._bitField & 8388608) === 8388608; -}; - -Promise.prototype._spreadSlowCase = -function Promise$_spreadSlowCase(targetFn, promise, values, boundTo) { - var promiseForAll = - Promise$_CreatePromiseArray - (values, PromiseArray, this._spreadSlowCase, boundTo) - .promise() - ._then(function() { - return targetFn.apply(boundTo, arguments); - }, void 0, void 0, APPLY, void 0, this._spreadSlowCase); - - promise._follow(promiseForAll); -}; - -Promise.prototype._callSpread = -function Promise$_callSpread(handler, promise, value, localDebugging) { - var boundTo = this._isBound() ? this._boundTo : void 0; - if (isArray(value)) { - var caller = this._settlePromiseFromHandler; - for (var i = 0, len = value.length; i < len; ++i) { - if (isPromise(Promise._cast(value[i], caller, void 0))) { - this._spreadSlowCase(handler, promise, value, boundTo); - return; - } - } - } - if (localDebugging) promise._pushContext(); - return tryCatchApply(handler, value, boundTo); -}; - -Promise.prototype._callHandler = -function Promise$_callHandler( - handler, receiver, promise, value, localDebugging) { - var x; - if (receiver === APPLY && !this.isRejected()) { - x = this._callSpread(handler, promise, value, localDebugging); - } - else { - if (localDebugging) promise._pushContext(); - x = tryCatch1(handler, receiver, value); - } - if (localDebugging) promise._popContext(); - return x; -}; - -Promise.prototype._settlePromiseFromHandler = -function Promise$_settlePromiseFromHandler( - handler, receiver, value, promise -) { - if (!isPromise(promise)) { - handler.call(receiver, value, promise); - return; - } - - var localDebugging = debugging; - var x = this._callHandler(handler, receiver, - promise, value, localDebugging); - - if (promise._isFollowing()) return; - - if (x === errorObj || x === promise || x === NEXT_FILTER) { - var err = x === promise - ? makeSelfResolutionError() - : x.e; - var trace = canAttach(err) ? err : new Error(err + ""); - if (x !== NEXT_FILTER) promise._attachExtraTrace(trace); - promise._rejectUnchecked(err, trace); - } - else { - var castValue = Promise._cast(x, - localDebugging ? this._settlePromiseFromHandler : void 0, - promise); - - if (isPromise(castValue)) { - if (castValue.isRejected() && - !castValue._isCarryingStackTrace() && - !canAttach(castValue._settledValue)) { - var trace = new Error(castValue._settledValue + ""); - promise._attachExtraTrace(trace); - castValue._setCarriedStackTrace(trace); - } - promise._follow(castValue); - if (castValue._cancellable()) { - promise._cancellationParent = castValue; - promise._setCancellable(); - } - } - else { - promise._fulfillUnchecked(x); - } - } -}; - -Promise.prototype._follow = -function Promise$_follow(promise) { - this._setFollowing(); - - if (promise.isPending()) { - if (promise._cancellable() ) { - this._cancellationParent = promise; - this._setCancellable(); - } - promise._proxyPromise(this); - } - else if (promise.isFulfilled()) { - this._fulfillUnchecked(promise._settledValue); - } - else { - this._rejectUnchecked(promise._settledValue, - promise._getCarriedStackTrace()); - } - - if (promise._isRejectionUnhandled()) promise._unsetRejectionIsUnhandled(); - - if (debugging && - promise._traceParent == null) { - promise._traceParent = this; - } -}; - -Promise.prototype._tryFollow = -function Promise$_tryFollow(value) { - if (this._isFollowingOrFulfilledOrRejected() || - value === this) { - return false; - } - var maybePromise = Promise._cast(value, this._tryFollow, void 0); - if (!isPromise(maybePromise)) { - return false; - } - this._follow(maybePromise); - return true; -}; - -Promise.prototype._resetTrace = function Promise$_resetTrace(caller) { - if (debugging) { - var context = this._peekContext(); - var isTopLevel = context === void 0; - this._trace = new CapturedTrace( - typeof caller === "function" - ? caller - : this._resetTrace, - isTopLevel - ); - } -}; - -Promise.prototype._setTrace = function Promise$_setTrace(caller, parent) { - if (debugging) { - var context = this._peekContext(); - this._traceParent = context; - var isTopLevel = context === void 0; - if (parent !== void 0 && - parent._traceParent === context) { - this._trace = parent._trace; - } - else { - this._trace = new CapturedTrace( - typeof caller === "function" - ? caller - : this._setTrace, - isTopLevel - ); - } - } - return this; -}; - -Promise.prototype._attachExtraTrace = -function Promise$_attachExtraTrace(error) { - if (debugging) { - var promise = this; - var stack = error.stack; - stack = typeof stack === "string" - ? stack.split("\n") : []; - var headerLineCount = 1; - - while(promise != null && - promise._trace != null) { - stack = CapturedTrace.combine( - stack, - promise._trace.stack.split("\n") - ); - promise = promise._traceParent; - } - - var max = Error.stackTraceLimit + headerLineCount; - var len = stack.length; - if (len > max) { - stack.length = max; - } - if (stack.length <= headerLineCount) { - error.stack = "(No stack trace)"; - } - else { - error.stack = stack.join("\n"); - } - } -}; - -Promise.prototype._cleanValues = function Promise$_cleanValues() { - if (this._cancellable()) { - this._cancellationParent = void 0; - } -}; - -Promise.prototype._fulfill = function Promise$_fulfill(value) { - if (this._isFollowingOrFulfilledOrRejected()) return; - this._fulfillUnchecked(value); -}; - -Promise.prototype._reject = -function Promise$_reject(reason, carriedStackTrace) { - if (this._isFollowingOrFulfilledOrRejected()) return; - this._rejectUnchecked(reason, carriedStackTrace); -}; - -Promise.prototype._settlePromiseAt = function Promise$_settlePromiseAt(index) { - var handler = this.isFulfilled() - ? this._fulfillmentHandlerAt(index) - : this._rejectionHandlerAt(index); - - var value = this._settledValue; - var receiver = this._receiverAt(index); - var promise = this._promiseAt(index); - - if (typeof handler === "function") { - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - else { - var done = false; - var isFulfilled = this.isFulfilled(); - if (receiver !== void 0) { - if (receiver instanceof Promise && - receiver._isProxied()) { - receiver._unsetProxied(); - - if (isFulfilled) receiver._fulfillUnchecked(value); - else receiver._rejectUnchecked(value, - this._getCarriedStackTrace()); - done = true; - } - else if (isPromiseArrayProxy(receiver, promise)) { - - if (isFulfilled) receiver._promiseFulfilled(value, promise); - else receiver._promiseRejected(value, promise); - - done = true; - } - } - - if (!done) { - - if (isFulfilled) promise._fulfill(value); - else promise._reject(value, this._getCarriedStackTrace()); - - } - } - - if (index >= 256) { - this._queueGC(); - } -}; - -Promise.prototype._isProxied = function Promise$_isProxied() { - return (this._bitField & 4194304) === 4194304; -}; - -Promise.prototype._setProxied = function Promise$_setProxied() { - this._bitField = this._bitField | 4194304; -}; - -Promise.prototype._unsetProxied = function Promise$_unsetProxied() { - this._bitField = this._bitField & (~4194304); -}; - -Promise.prototype._isGcQueued = function Promise$_isGcQueued() { - return (this._bitField & -1073741824) === -1073741824; -}; - -Promise.prototype._setGcQueued = function Promise$_setGcQueued() { - this._bitField = this._bitField | -1073741824; -}; - -Promise.prototype._unsetGcQueued = function Promise$_unsetGcQueued() { - this._bitField = this._bitField & (~-1073741824); -}; - -Promise.prototype._queueGC = function Promise$_queueGC() { - if (this._isGcQueued()) return; - this._setGcQueued(); - async.invokeLater(this._gc, this, void 0); -}; - -Promise.prototype._gc = function Promise$gc() { - var len = this._length(); - this._unsetAt(0); - for (var i = 0; i < len; i++) { - delete this[i]; - } - this._setLength(0); - this._unsetGcQueued(); -}; - -Promise.prototype._queueSettleAt = function Promise$_queueSettleAt(index) { - if (this._isRejectionUnhandled()) this._unsetRejectionIsUnhandled(); - async.invoke(this._settlePromiseAt, this, index); -}; - -Promise.prototype._fulfillUnchecked = -function Promise$_fulfillUnchecked(value) { - if (!this.isPending()) return; - if (value === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._rejectUnchecked(err, void 0); - } - this._cleanValues(); - this._setFulfilled(); - this._settledValue = value; - var len = this._length(); - - if (len > 0) { - async.invoke(this._fulfillPromises, this, len); - } -}; - -Promise.prototype._rejectUncheckedCheckError = -function Promise$_rejectUncheckedCheckError(reason) { - var trace = canAttach(reason) ? reason : new Error(reason + ""); - this._rejectUnchecked(reason, trace === reason ? void 0 : trace); -}; - -Promise.prototype._rejectUnchecked = -function Promise$_rejectUnchecked(reason, trace) { - if (!this.isPending()) return; - if (reason === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._rejectUnchecked(err); - } - this._cleanValues(); - this._setRejected(); - this._settledValue = reason; - - if (this._isFinal()) { - async.invokeLater(thrower, void 0, trace === void 0 ? reason : trace); - return; - } - var len = this._length(); - - if (trace !== void 0) this._setCarriedStackTrace(trace); - - if (len > 0) { - async.invoke(this._rejectPromises, this, len); - } - else { - this._ensurePossibleRejectionHandled(); - } -}; - -Promise.prototype._rejectPromises = function Promise$_rejectPromises(len) { - len = this._length(); - for (var i = 0; i < len; i+= 5) { - this._settlePromiseAt(i); - } - this._unsetCarriedStackTrace(); -}; - -Promise.prototype._fulfillPromises = function Promise$_fulfillPromises(len) { - len = this._length(); - for (var i = 0; i < len; i+= 5) { - this._settlePromiseAt(i); - } -}; - -Promise.prototype._ensurePossibleRejectionHandled = -function Promise$_ensurePossibleRejectionHandled() { - this._setRejectionIsUnhandled(); - if (CapturedTrace.possiblyUnhandledRejection !== void 0) { - async.invokeLater(this._notifyUnhandledRejection, this, void 0); - } -}; - -Promise.prototype._notifyUnhandledRejection = -function Promise$_notifyUnhandledRejection() { - if (this._isRejectionUnhandled()) { - var reason = this._settledValue; - var trace = this._getCarriedStackTrace(); - - this._unsetRejectionIsUnhandled(); - - if (trace !== void 0) { - this._unsetCarriedStackTrace(); - reason = trace; - } - if (typeof CapturedTrace.possiblyUnhandledRejection === "function") { - CapturedTrace.possiblyUnhandledRejection(reason, this); - } - } -}; - -var contextStack = []; -Promise.prototype._peekContext = function Promise$_peekContext() { - var lastIndex = contextStack.length - 1; - if (lastIndex >= 0) { - return contextStack[lastIndex]; - } - return void 0; - -}; - -Promise.prototype._pushContext = function Promise$_pushContext() { - if (!debugging) return; - contextStack.push(this); -}; - -Promise.prototype._popContext = function Promise$_popContext() { - if (!debugging) return; - contextStack.pop(); -}; - -function Promise$_CreatePromiseArray( - promises, PromiseArrayConstructor, caller, boundTo) { - - var list = null; - if (isArray(promises)) { - list = promises; - } - else { - list = Promise._cast(promises, caller, void 0); - if (list !== promises) { - list._setBoundTo(boundTo); - } - else if (!isPromise(list)) { - list = null; - } - } - if (list !== null) { - return new PromiseArrayConstructor( - list, - typeof caller === "function" - ? caller - : Promise$_CreatePromiseArray, - boundTo - ); - } - return { - promise: function() {return apiRejection("expecting an array, a promise or a thenable");} - }; -} - -var old = global.Promise; - -Promise.noConflict = function() { - if (global.Promise === Promise) { - global.Promise = old; - } - return Promise; -}; - -if (!CapturedTrace.isSupported()) { - Promise.longStackTraces = function(){}; - debugging = false; -} - -Promise._makeSelfResolutionError = makeSelfResolutionError; -require("./finally.js")(Promise, NEXT_FILTER); -require("./direct_resolve.js")(Promise); -require("./thenables.js")(Promise, INTERNAL); -Promise.RangeError = RangeError; -Promise.CancellationError = CancellationError; -Promise.TimeoutError = TimeoutError; -Promise.TypeError = TypeError; -Promise.RejectionError = RejectionError; -require('./timers.js')(Promise,INTERNAL); -require('./synchronous_inspection.js')(Promise); -require('./any.js')(Promise,Promise$_CreatePromiseArray,PromiseArray); -require('./race.js')(Promise,INTERNAL); -require('./call_get.js')(Promise); -require('./filter.js')(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection); -require('./generators.js')(Promise,apiRejection,INTERNAL); -require('./map.js')(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection); -require('./nodeify.js')(Promise); -require('./promisify.js')(Promise,INTERNAL); -require('./props.js')(Promise,PromiseArray); -require('./reduce.js')(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection,INTERNAL); -require('./settle.js')(Promise,Promise$_CreatePromiseArray,PromiseArray); -require('./some.js')(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection); -require('./progress.js')(Promise,isPromiseArrayProxy); -require('./cancel.js')(Promise,INTERNAL); - -Promise.prototype = Promise.prototype; -return Promise; - -}; - -},{"./any.js":1,"./assert.js":2,"./async.js":3,"./call_get.js":5,"./cancel.js":6,"./captured_trace.js":7,"./catch_filter.js":8,"./direct_resolve.js":9,"./errors.js":10,"./errors_api_rejection":11,"./filter.js":13,"./finally.js":14,"./generators.js":15,"./global.js":16,"./map.js":17,"./nodeify.js":18,"./progress.js":19,"./promise_array.js":21,"./promise_resolver.js":23,"./promisify.js":25,"./props.js":27,"./race.js":29,"./reduce.js":30,"./settle.js":32,"./some.js":34,"./synchronous_inspection.js":36,"./thenables.js":37,"./timers.js":38,"./util.js":39}],21:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var ASSERT = require("./assert.js"); -var canAttach = require("./errors.js").canAttach; -var util = require("./util.js"); -var async = require("./async.js"); -var hasOwn = {}.hasOwnProperty; -var isArray = util.isArray; - -function toResolutionValue(val) { - switch(val) { - case -1: return void 0; - case -2: return []; - case -3: return {}; - } -} - -function PromiseArray(values, caller, boundTo) { - var promise = this._promise = new Promise(INTERNAL); - var parent = void 0; - if (Promise.is(values)) { - parent = values; - if (values._cancellable()) { - promise._setCancellable(); - promise._cancellationParent = values; - } - if (values._isBound()) { - promise._setBoundTo(boundTo); - } - } - promise._setTrace(caller, parent); - this._values = values; - this._length = 0; - this._totalResolved = 0; - this._init(void 0, -2); -} -PromiseArray.PropertiesPromiseArray = function() {}; - -PromiseArray.prototype.length = function PromiseArray$length() { - return this._length; -}; - -PromiseArray.prototype.promise = function PromiseArray$promise() { - return this._promise; -}; - -PromiseArray.prototype._init = -function PromiseArray$_init(_, resolveValueIfEmpty) { - var values = this._values; - if (Promise.is(values)) { - if (values.isFulfilled()) { - values = values._settledValue; - if (!isArray(values)) { - var err = new Promise.TypeError("expecting an array, a promise or a thenable"); - this.__hardReject__(err); - return; - } - this._values = values; - } - else if (values.isPending()) { - values._then( - this._init, - this._reject, - void 0, - this, - resolveValueIfEmpty, - this.constructor - ); - return; - } - else { - this._reject(values._settledValue); - return; - } - } - - if (values.length === 0) { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - return; - } - var len = values.length; - var newLen = len; - var newValues; - if (this instanceof PromiseArray.PropertiesPromiseArray) { - newValues = this._values; - } - else { - newValues = new Array(len); - } - var isDirectScanNeeded = false; - for (var i = 0; i < len; ++i) { - var promise = values[i]; - if (promise === void 0 && !hasOwn.call(values, i)) { - newLen--; - continue; - } - var maybePromise = Promise._cast(promise, void 0, void 0); - if (maybePromise instanceof Promise && - maybePromise.isPending()) { - maybePromise._proxyPromiseArray(this, i); - } - else { - isDirectScanNeeded = true; - } - newValues[i] = maybePromise; - } - if (newLen === 0) { - if (resolveValueIfEmpty === -2) { - this._resolve(newValues); - } - else { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - } - return; - } - this._values = newValues; - this._length = newLen; - if (isDirectScanNeeded) { - var scanMethod = newLen === len - ? this._scanDirectValues - : this._scanDirectValuesHoled; - async.invoke(scanMethod, this, len); - } -}; - -PromiseArray.prototype._settlePromiseAt = -function PromiseArray$_settlePromiseAt(index) { - var value = this._values[index]; - if (!Promise.is(value)) { - this._promiseFulfilled(value, index); - } - else if (value.isFulfilled()) { - this._promiseFulfilled(value._settledValue, index); - } - else if (value.isRejected()) { - this._promiseRejected(value._settledValue, index); - } -}; - -PromiseArray.prototype._scanDirectValuesHoled = -function PromiseArray$_scanDirectValuesHoled(len) { - for (var i = 0; i < len; ++i) { - if (this._isResolved()) { - break; - } - if (hasOwn.call(this._values, i)) { - this._settlePromiseAt(i); - } - } -}; - -PromiseArray.prototype._scanDirectValues = -function PromiseArray$_scanDirectValues(len) { - for (var i = 0; i < len; ++i) { - if (this._isResolved()) { - break; - } - this._settlePromiseAt(i); - } -}; - -PromiseArray.prototype._isResolved = function PromiseArray$_isResolved() { - return this._values === null; -}; - -PromiseArray.prototype._resolve = function PromiseArray$_resolve(value) { - this._values = null; - this._promise._fulfill(value); -}; - -PromiseArray.prototype.__hardReject__ = -PromiseArray.prototype._reject = function PromiseArray$_reject(reason) { - this._values = null; - var trace = canAttach(reason) ? reason : new Error(reason + ""); - this._promise._attachExtraTrace(trace); - this._promise._reject(reason, trace); -}; - -PromiseArray.prototype._promiseProgressed = -function PromiseArray$_promiseProgressed(progressValue, index) { - if (this._isResolved()) return; - this._promise._progress({ - index: index, - value: progressValue - }); -}; - - -PromiseArray.prototype._promiseFulfilled = -function PromiseArray$_promiseFulfilled(value, index) { - if (this._isResolved()) return; - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - } -}; - -PromiseArray.prototype._promiseRejected = -function PromiseArray$_promiseRejected(reason, index) { - if (this._isResolved()) return; - this._totalResolved++; - this._reject(reason); -}; - -return PromiseArray; -}; - -},{"./assert.js":2,"./async.js":3,"./errors.js":10,"./util.js":39}],22:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var TypeError = require("./errors.js").TypeError; - -function PromiseInspection(promise) { - if (promise !== void 0) { - this._bitField = promise._bitField; - this._settledValue = promise.isResolved() - ? promise._settledValue - : void 0; - } - else { - this._bitField = 0; - this._settledValue = void 0; - } -} -PromiseInspection.prototype.isFulfilled = -function PromiseInspection$isFulfilled() { - return (this._bitField & 268435456) > 0; -}; - -PromiseInspection.prototype.isRejected = -function PromiseInspection$isRejected() { - return (this._bitField & 134217728) > 0; -}; - -PromiseInspection.prototype.isPending = function PromiseInspection$isPending() { - return (this._bitField & 402653184) === 0; -}; - -PromiseInspection.prototype.value = function PromiseInspection$value() { - if (!this.isFulfilled()) { - throw new TypeError("cannot get fulfillment value of a non-fulfilled promise"); - } - return this._settledValue; -}; - -PromiseInspection.prototype.error = function PromiseInspection$error() { - if (!this.isRejected()) { - throw new TypeError("cannot get rejection reason of a non-rejected promise"); - } - return this._settledValue; -}; - -module.exports = PromiseInspection; - -},{"./errors.js":10}],23:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var util = require("./util.js"); -var maybeWrapAsError = util.maybeWrapAsError; -var errors = require("./errors.js"); -var TimeoutError = errors.TimeoutError; -var RejectionError = errors.RejectionError; -var async = require("./async.js"); -var haveGetters = util.haveGetters; -var es5 = require("./es5.js"); - -function isUntypedError(obj) { - return obj instanceof Error && - es5.getPrototypeOf(obj) === Error.prototype; -} - -function wrapAsRejectionError(obj) { - var ret; - if (isUntypedError(obj)) { - ret = new RejectionError(obj); - } - else { - ret = obj; - } - errors.markAsOriginatingFromRejection(ret); - return ret; -} - -function nodebackForPromise(promise) { - function PromiseResolver$_callback(err, value) { - if (promise === null) return; - - if (err) { - var wrapped = wrapAsRejectionError(maybeWrapAsError(err)); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } - else { - if (arguments.length > 2) { - var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];} - promise._fulfill(args); - } - else { - promise._fulfill(value); - } - } - - promise = null; - } - return PromiseResolver$_callback; -} - - -var PromiseResolver; -if (!haveGetters) { - PromiseResolver = function PromiseResolver(promise) { - this.promise = promise; - this.asCallback = nodebackForPromise(promise); - this.callback = this.asCallback; - }; -} -else { - PromiseResolver = function PromiseResolver(promise) { - this.promise = promise; - }; -} -if (haveGetters) { - var prop = { - get: function() { - return nodebackForPromise(this.promise); - } - }; - es5.defineProperty(PromiseResolver.prototype, "asCallback", prop); - es5.defineProperty(PromiseResolver.prototype, "callback", prop); -} - -PromiseResolver._nodebackForPromise = nodebackForPromise; - -PromiseResolver.prototype.toString = function PromiseResolver$toString() { - return "[object PromiseResolver]"; -}; - -PromiseResolver.prototype.resolve = -PromiseResolver.prototype.fulfill = function PromiseResolver$resolve(value) { - var promise = this.promise; - if (promise._tryFollow(value)) { - return; - } - async.invoke(promise._fulfill, promise, value); -}; - -PromiseResolver.prototype.reject = function PromiseResolver$reject(reason) { - var promise = this.promise; - errors.markAsOriginatingFromRejection(reason); - var trace = errors.canAttach(reason) ? reason : new Error(reason + ""); - promise._attachExtraTrace(trace); - async.invoke(promise._reject, promise, reason); - if (trace !== reason) { - async.invoke(this._setCarriedStackTrace, this, trace); - } -}; - -PromiseResolver.prototype.progress = -function PromiseResolver$progress(value) { - async.invoke(this.promise._progress, this.promise, value); -}; - -PromiseResolver.prototype.cancel = function PromiseResolver$cancel() { - async.invoke(this.promise.cancel, this.promise, void 0); -}; - -PromiseResolver.prototype.timeout = function PromiseResolver$timeout() { - this.reject(new TimeoutError("timeout")); -}; - -PromiseResolver.prototype.isResolved = function PromiseResolver$isResolved() { - return this.promise.isResolved(); -}; - -PromiseResolver.prototype.toJSON = function PromiseResolver$toJSON() { - return this.promise.toJSON(); -}; - -PromiseResolver.prototype._setCarriedStackTrace = -function PromiseResolver$_setCarriedStackTrace(trace) { - if (this.promise.isRejected()) { - this.promise._setCarriedStackTrace(trace); - } -}; - -module.exports = PromiseResolver; - -},{"./async.js":3,"./errors.js":10,"./es5.js":12,"./util.js":39}],24:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var errors = require("./errors.js"); -var ASSERT = require("./assert.js"); -var TypeError = errors.TypeError; -var util = require("./util.js"); -var isArray = util.isArray; -var errorObj = util.errorObj; -var tryCatch1 = util.tryCatch1; -var yieldHandlers = []; - -function promiseFromYieldHandler(value) { - var _yieldHandlers = yieldHandlers; - var _errorObj = errorObj; - var _Promise = Promise; - var len = _yieldHandlers.length; - for (var i = 0; i < len; ++i) { - var result = tryCatch1(_yieldHandlers[i], void 0, value); - if (result === _errorObj) { - return _Promise.reject(_errorObj.e); - } - var maybePromise = _Promise._cast(result, - promiseFromYieldHandler, void 0); - if (maybePromise instanceof _Promise) return maybePromise; - } - return null; -} - -function PromiseSpawn(generatorFunction, receiver, caller) { - var promise = this._promise = new Promise(INTERNAL); - promise._setTrace(caller, void 0); - this._generatorFunction = generatorFunction; - this._receiver = receiver; - this._generator = void 0; -} - -PromiseSpawn.prototype.promise = function PromiseSpawn$promise() { - return this._promise; -}; - -PromiseSpawn.prototype._run = function PromiseSpawn$_run() { - this._generator = this._generatorFunction.call(this._receiver); - this._receiver = - this._generatorFunction = void 0; - this._next(void 0); -}; - -PromiseSpawn.prototype._continue = function PromiseSpawn$_continue(result) { - if (result === errorObj) { - this._generator = void 0; - var trace = errors.canAttach(result.e) - ? result.e : new Error(result.e + ""); - this._promise._attachExtraTrace(trace); - this._promise._reject(result.e, trace); - return; - } - - var value = result.value; - if (result.done === true) { - this._generator = void 0; - if (!this._promise._tryFollow(value)) { - this._promise._fulfill(value); - } - } - else { - var maybePromise = Promise._cast(value, PromiseSpawn$_continue, void 0); - if (!(maybePromise instanceof Promise)) { - if (isArray(maybePromise)) { - maybePromise = Promise.all(maybePromise); - } - else { - maybePromise = promiseFromYieldHandler(maybePromise); - } - if (maybePromise === null) { - this._throw(new TypeError("A value was yielded that could not be treated as a promise")); - return; - } - } - maybePromise._then( - this._next, - this._throw, - void 0, - this, - null, - void 0 - ); - } -}; - -PromiseSpawn.prototype._throw = function PromiseSpawn$_throw(reason) { - if (errors.canAttach(reason)) - this._promise._attachExtraTrace(reason); - this._continue( - tryCatch1(this._generator["throw"], this._generator, reason) - ); -}; - -PromiseSpawn.prototype._next = function PromiseSpawn$_next(value) { - this._continue( - tryCatch1(this._generator.next, this._generator, value) - ); -}; - -PromiseSpawn.addYieldHandler = function PromiseSpawn$AddYieldHandler(fn) { - if (typeof fn !== "function") throw new TypeError("fn must be a function"); - yieldHandlers.push(fn); -}; - -return PromiseSpawn; -}; - -},{"./assert.js":2,"./errors.js":10,"./util.js":39}],25:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var THIS = {}; -var util = require("./util.js"); -var es5 = require("./es5.js"); -var nodebackForPromise = require("./promise_resolver.js") - ._nodebackForPromise; -var withAppended = util.withAppended; -var maybeWrapAsError = util.maybeWrapAsError; -var canEvaluate = util.canEvaluate; -var notEnumerableProp = util.notEnumerableProp; -var deprecated = util.deprecated; -var ASSERT = require("./assert.js"); - - -var roriginal = new RegExp("__beforePromisified__" + "$"); -var hasProp = {}.hasOwnProperty; -function isPromisified(fn) { - return fn.__isPromisified__ === true; -} -var inheritedMethods = (function() { - if (es5.isES5) { - var create = Object.create; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - return function(cur) { - var original = cur; - var ret = []; - var visitedKeys = create(null); - while (cur !== null) { - var keys = es5.keys(cur); - for (var i = 0, len = keys.length; i < len; ++i) { - var key = keys[i]; - if (visitedKeys[key] || - roriginal.test(key) || - hasProp.call(original, key + "__beforePromisified__") - ) { - continue; - } - visitedKeys[key] = true; - var desc = getOwnPropertyDescriptor(cur, key); - if (desc != null && - typeof desc.value === "function" && - !isPromisified(desc.value)) { - ret.push(key, desc.value); - } - } - cur = es5.getPrototypeOf(cur); - } - return ret; - }; - } - else { - return function(obj) { - var ret = []; - /*jshint forin:false */ - for (var key in obj) { - if (roriginal.test(key) || - hasProp.call(obj, key + "__beforePromisified__")) { - continue; - } - var fn = obj[key]; - if (typeof fn === "function" && - !isPromisified(fn)) { - ret.push(key, fn); - } - } - return ret; - }; - } -})(); - -function switchCaseArgumentOrder(likelyArgumentCount) { - var ret = [likelyArgumentCount]; - var min = Math.max(0, likelyArgumentCount - 1 - 5); - for(var i = likelyArgumentCount - 1; i >= min; --i) { - if (i === likelyArgumentCount) continue; - ret.push(i); - } - for(var i = likelyArgumentCount + 1; i <= 5; ++i) { - ret.push(i); - } - return ret; -} - -function parameterDeclaration(parameterCount) { - var ret = new Array(parameterCount); - for(var i = 0; i < ret.length; ++i) { - ret[i] = "_arg" + i; - } - return ret.join(", "); -} - -function parameterCount(fn) { - if (typeof fn.length === "number") { - return Math.max(Math.min(fn.length, 1023 + 1), 0); - } - return 0; -} - -function propertyAccess(id) { - var rident = /^[a-z$_][a-z$_0-9]*$/i; - - if (rident.test(id)) { - return "." + id; - } - else return "['" + id.replace(/(['\\])/g, "\\$1") + "']"; -} - -function makeNodePromisifiedEval(callback, receiver, originalName, fn) { - var newParameterCount = Math.max(0, parameterCount(fn) - 1); - var argumentOrder = switchCaseArgumentOrder(newParameterCount); - - var callbackName = (typeof originalName === "string" ? - originalName + "Async" : - "promisified"); - - function generateCallForArgumentCount(count) { - var args = new Array(count); - for (var i = 0, len = args.length; i < len; ++i) { - args[i] = "arguments[" + i + "]"; - } - var comma = count > 0 ? "," : ""; - - if (typeof callback === "string" && - receiver === THIS) { - return "this" + propertyAccess(callback) + "("+args.join(",") + - comma +" fn);"+ - "break;"; - } - return (receiver === void 0 - ? "callback("+args.join(",")+ comma +" fn);" - : "callback.call("+(receiver === THIS - ? "this" - : "receiver")+", "+args.join(",") + comma + " fn);") + - "break;"; - } - - function generateArgumentSwitchCase() { - var ret = ""; - for(var i = 0; i < argumentOrder.length; ++i) { - ret += "case " + argumentOrder[i] +":" + - generateCallForArgumentCount(argumentOrder[i]); - } - ret += "default: var args = new Array(len + 1);" + - "var i = 0;" + - "for (var i = 0; i < len; ++i) { " + - " args[i] = arguments[i];" + - "}" + - "args[i] = fn;" + - - (typeof callback === "string" - ? "this" + propertyAccess(callback) + ".apply(" - : "callback.apply(") + - - (receiver === THIS ? "this" : "receiver") + - ", args); break;"; - return ret; - } - - return new Function("Promise", "callback", "receiver", - "withAppended", "maybeWrapAsError", "nodebackForPromise", - "INTERNAL", - "var ret = function " + callbackName + - "(" + parameterDeclaration(newParameterCount) + ") {\"use strict\";" + - "var len = arguments.length;" + - "var promise = new Promise(INTERNAL);"+ - "promise._setTrace(" + callbackName + ", void 0);" + - "var fn = nodebackForPromise(promise);"+ - "try {" + - "switch(len) {" + - generateArgumentSwitchCase() + - "}" + - "}" + - "catch(e){ " + - "var wrapped = maybeWrapAsError(e);" + - "promise._attachExtraTrace(wrapped);" + - "promise._reject(wrapped);" + - "}" + - "return promise;" + - "" + - "}; ret.__isPromisified__ = true; return ret;" - )(Promise, callback, receiver, withAppended, - maybeWrapAsError, nodebackForPromise, INTERNAL); -} - -function makeNodePromisifiedClosure(callback, receiver) { - function promisified() { - var _receiver = receiver; - if (receiver === THIS) _receiver = this; - if (typeof callback === "string") { - callback = _receiver[callback]; - } - var promise = new Promise(INTERNAL); - promise._setTrace(promisified, void 0); - var fn = nodebackForPromise(promise); - try { - callback.apply(_receiver, withAppended(arguments, fn)); - } - catch(e) { - var wrapped = maybeWrapAsError(e); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } - return promise; - } - promisified.__isPromisified__ = true; - return promisified; -} - -var makeNodePromisified = canEvaluate - ? makeNodePromisifiedEval - : makeNodePromisifiedClosure; - -function f(){} -function _promisify(callback, receiver, isAll) { - if (isAll) { - var methods = inheritedMethods(callback); - for (var i = 0, len = methods.length; i < len; i+= 2) { - var key = methods[i]; - var fn = methods[i+1]; - var originalKey = key + "__beforePromisified__"; - var promisifiedKey = key + "Async"; - notEnumerableProp(callback, originalKey, fn); - callback[promisifiedKey] = - makeNodePromisified(originalKey, THIS, - key, fn); - } - if (methods.length > 16) f.prototype = callback; - return callback; - } - else { - return makeNodePromisified(callback, receiver, void 0, callback); - } -} - -Promise.promisify = function Promise$Promisify(fn, receiver) { - if (typeof fn === "object" && fn !== null) { - deprecated("Promise.promisify for promisifying entire objects is deprecated. Use Promise.promisifyAll instead."); - return _promisify(fn, receiver, true); - } - if (typeof fn !== "function") { - throw new TypeError("fn must be a function"); - } - if (isPromisified(fn)) { - return fn; - } - return _promisify( - fn, - arguments.length < 2 ? THIS : receiver, - false); -}; - -Promise.promisifyAll = function Promise$PromisifyAll(target) { - if (typeof target !== "function" && typeof target !== "object") { - throw new TypeError("the target of promisifyAll must be an object or a function"); - } - return _promisify(target, void 0, true); -}; -}; - - -},{"./assert.js":2,"./es5.js":12,"./promise_resolver.js":23,"./util.js":39}],26:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, PromiseArray) { -var ASSERT = require("./assert.js"); -var util = require("./util.js"); -var inherits = util.inherits; -var es5 = require("./es5.js"); - -function PropertiesPromiseArray(obj, caller, boundTo) { - var keys = es5.keys(obj); - var values = new Array(keys.length); - for (var i = 0, len = values.length; i < len; ++i) { - values[i] = obj[keys[i]]; - } - this.constructor$(values, caller, boundTo); - if (!this._isResolved()) { - for (var i = 0, len = keys.length; i < len; ++i) { - values.push(keys[i]); - } - } -} -inherits(PropertiesPromiseArray, PromiseArray); - -PropertiesPromiseArray.prototype._init = -function PropertiesPromiseArray$_init() { - this._init$(void 0, -3) ; -}; - -PropertiesPromiseArray.prototype._promiseFulfilled = -function PropertiesPromiseArray$_promiseFulfilled(value, index) { - if (this._isResolved()) return; - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - var val = {}; - var keyOffset = this.length(); - for (var i = 0, len = this.length(); i < len; ++i) { - val[this._values[i + keyOffset]] = this._values[i]; - } - this._resolve(val); - } -}; - -PropertiesPromiseArray.prototype._promiseProgressed = -function PropertiesPromiseArray$_promiseProgressed(value, index) { - if (this._isResolved()) return; - - this._promise._progress({ - key: this._values[index + this.length()], - value: value - }); -}; - -PromiseArray.PropertiesPromiseArray = PropertiesPromiseArray; - -return PropertiesPromiseArray; -}; - -},{"./assert.js":2,"./es5.js":12,"./util.js":39}],27:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, PromiseArray) { - var PropertiesPromiseArray = require("./properties_promise_array.js")( - Promise, PromiseArray); - var util = require("./util.js"); - var apiRejection = require("./errors_api_rejection")(Promise); - var isObject = util.isObject; - - function Promise$_Props(promises, useBound, caller) { - var ret; - var castValue = Promise._cast(promises, caller, void 0); - - if (!isObject(castValue)) { - return apiRejection("cannot await properties of a non-object"); - } - else if (Promise.is(castValue)) { - ret = castValue._then(Promise.props, void 0, void 0, - void 0, void 0, caller); - } - else { - ret = new PropertiesPromiseArray( - castValue, - caller, - useBound === true && castValue._isBound() - ? castValue._boundTo - : void 0 - ).promise(); - useBound = false; - } - if (useBound === true && castValue._isBound()) { - ret._setBoundTo(castValue._boundTo); - } - return ret; - } - - Promise.prototype.props = function Promise$props() { - return Promise$_Props(this, true, this.props); - }; - - Promise.props = function Promise$Props(promises) { - return Promise$_Props(promises, false, Promise.props); - }; -}; - -},{"./errors_api_rejection":11,"./properties_promise_array.js":26,"./util.js":39}],28:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var ASSERT = require("./assert.js"); -function arrayCopy(src, srcIndex, dst, dstIndex, len) { - for (var j = 0; j < len; ++j) { - dst[j + dstIndex] = src[j + srcIndex]; - } -} - -function pow2AtLeast(n) { - n = n >>> 0; - n = n - 1; - n = n | (n >> 1); - n = n | (n >> 2); - n = n | (n >> 4); - n = n | (n >> 8); - n = n | (n >> 16); - return n + 1; -} - -function getCapacity(capacity) { - if (typeof capacity !== "number") return 16; - return pow2AtLeast( - Math.min( - Math.max(16, capacity), 1073741824) - ); -} - -function Queue(capacity) { - this._capacity = getCapacity(capacity); - this._length = 0; - this._front = 0; - this._makeCapacity(); -} - -Queue.prototype._willBeOverCapacity = -function Queue$_willBeOverCapacity(size) { - return this._capacity < size; -}; - -Queue.prototype._pushOne = function Queue$_pushOne(arg) { - var length = this.length(); - this._checkCapacity(length + 1); - var i = (this._front + length) & (this._capacity - 1); - this[i] = arg; - this._length = length + 1; -}; - -Queue.prototype.push = function Queue$push(fn, receiver, arg) { - var length = this.length() + 3; - if (this._willBeOverCapacity(length)) { - this._pushOne(fn); - this._pushOne(receiver); - this._pushOne(arg); - return; - } - var j = this._front + length - 3; - this._checkCapacity(length); - var wrapMask = this._capacity - 1; - this[(j + 0) & wrapMask] = fn; - this[(j + 1) & wrapMask] = receiver; - this[(j + 2) & wrapMask] = arg; - this._length = length; -}; - -Queue.prototype.shift = function Queue$shift() { - var front = this._front, - ret = this[front]; - - this[front] = void 0; - this._front = (front + 1) & (this._capacity - 1); - this._length--; - return ret; -}; - -Queue.prototype.length = function Queue$length() { - return this._length; -}; - -Queue.prototype._makeCapacity = function Queue$_makeCapacity() { - var len = this._capacity; - for (var i = 0; i < len; ++i) { - this[i] = void 0; - } -}; - -Queue.prototype._checkCapacity = function Queue$_checkCapacity(size) { - if (this._capacity < size) { - this._resizeTo(this._capacity << 3); - } -}; - -Queue.prototype._resizeTo = function Queue$_resizeTo(capacity) { - var oldFront = this._front; - var oldCapacity = this._capacity; - var oldQueue = new Array(oldCapacity); - var length = this.length(); - - arrayCopy(this, 0, oldQueue, 0, oldCapacity); - this._capacity = capacity; - this._makeCapacity(); - this._front = 0; - if (oldFront + length <= oldCapacity) { - arrayCopy(oldQueue, oldFront, this, 0, length); - } - else { var lengthBeforeWrapping = - length - ((oldFront + length) & (oldCapacity - 1)); - - arrayCopy(oldQueue, oldFront, this, 0, lengthBeforeWrapping); - arrayCopy(oldQueue, 0, this, lengthBeforeWrapping, - length - lengthBeforeWrapping); - } -}; - -module.exports = Queue; - -},{"./assert.js":2}],29:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { - var apiRejection = require("./errors_api_rejection.js")(Promise); - var isArray = require("./util.js").isArray; - - var raceLater = function Promise$_raceLater(promise) { - return promise.then(function Promise$_lateRacer(array) { - return Promise$_Race(array, Promise$_lateRacer, promise); - }); - }; - - var hasOwn = {}.hasOwnProperty; - function Promise$_Race(promises, caller, parent) { - var maybePromise = Promise._cast(promises, caller, void 0); - - if (Promise.is(maybePromise)) { - return raceLater(maybePromise); - } - else if (!isArray(promises)) { - return apiRejection("expecting an array, a promise or a thenable"); - } - - var ret = new Promise(INTERNAL); - ret._setTrace(caller, parent); - if (parent !== void 0) { - if (parent._isBound()) { - ret._setBoundTo(parent._boundTo); - } - if (parent._cancellable()) { - ret._setCancellable(); - ret._cancellationParent = parent; - } - } - var fulfill = ret._fulfill; - var reject = ret._reject; - for (var i = 0, len = promises.length; i < len; ++i) { - var val = promises[i]; - - if (val === void 0 && !(hasOwn.call(promises, i))) { - continue; - } - - Promise.cast(val)._then( - fulfill, - reject, - void 0, - ret, - null, - caller - ); - } - return ret; - } - - Promise.race = function Promise$Race(promises) { - return Promise$_Race(promises, Promise.race, void 0); - }; - - Promise.prototype.race = function Promise$race() { - return Promise$_Race(this, this.race, void 0); - }; - -}; - -},{"./errors_api_rejection.js":11,"./util.js":39}],30:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function( - Promise, Promise$_CreatePromiseArray, - PromiseArray, apiRejection, INTERNAL) { - - var ASSERT = require("./assert.js"); - - function Reduction(callback, index, accum, items, receiver) { - this.promise = new Promise(INTERNAL); - this.index = index; - this.length = items.length; - this.items = items; - this.callback = callback; - this.receiver = receiver; - this.accum = accum; - } - - Reduction.prototype.reject = function Reduction$reject(e) { - this.promise._reject(e); - }; - - Reduction.prototype.fulfill = function Reduction$fulfill(value, index) { - this.accum = value; - this.index = index + 1; - this.iterate(); - }; - - Reduction.prototype.iterate = function Reduction$iterate() { - var i = this.index; - var len = this.length; - var items = this.items; - var result = this.accum; - var receiver = this.receiver; - var callback = this.callback; - var iterate = this.iterate; - - for(; i < len; ++i) { - result = Promise._cast( - callback.call( - receiver, - result, - items[i], - i, - len - ), - iterate, - void 0 - ); - - if (result instanceof Promise) { - result._then( - this.fulfill, this.reject, void 0, this, i, iterate); - return; - } - } - this.promise._fulfill(result); - }; - - function Promise$_reducer(fulfilleds, initialValue) { - var fn = this; - var receiver = void 0; - if (typeof fn !== "function") { - receiver = fn.receiver; - fn = fn.fn; - } - var len = fulfilleds.length; - var accum = void 0; - var startIndex = 0; - - if (initialValue !== void 0) { - accum = initialValue; - startIndex = 0; - } - else { - startIndex = 1; - if (len > 0) accum = fulfilleds[0]; - } - var i = startIndex; - - if (i >= len) { - return accum; - } - - var reduction = new Reduction(fn, i, accum, fulfilleds, receiver); - reduction.iterate(); - return reduction.promise; - } - - function Promise$_unpackReducer(fulfilleds) { - var fn = this.fn; - var initialValue = this.initialValue; - return Promise$_reducer.call(fn, fulfilleds, initialValue); - } - - function Promise$_slowReduce( - promises, fn, initialValue, useBound, caller) { - return initialValue._then(function callee(initialValue) { - return Promise$_Reduce( - promises, fn, initialValue, useBound, callee); - }, void 0, void 0, void 0, void 0, caller); - } - - function Promise$_Reduce(promises, fn, initialValue, useBound, caller) { - if (typeof fn !== "function") { - return apiRejection("fn must be a function"); - } - - if (useBound === true && promises._isBound()) { - fn = { - fn: fn, - receiver: promises._boundTo - }; - } - - if (initialValue !== void 0) { - if (Promise.is(initialValue)) { - if (initialValue.isFulfilled()) { - initialValue = initialValue._settledValue; - } - else { - return Promise$_slowReduce(promises, - fn, initialValue, useBound, caller); - } - } - - return Promise$_CreatePromiseArray(promises, PromiseArray, caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0) - .promise() - ._then(Promise$_unpackReducer, void 0, void 0, { - fn: fn, - initialValue: initialValue - }, void 0, Promise.reduce); - } - return Promise$_CreatePromiseArray(promises, PromiseArray, caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0).promise() - ._then(Promise$_reducer, void 0, void 0, fn, void 0, caller); - } - - - Promise.reduce = function Promise$Reduce(promises, fn, initialValue) { - return Promise$_Reduce(promises, fn, - initialValue, false, Promise.reduce); - }; - - Promise.prototype.reduce = function Promise$reduce(fn, initialValue) { - return Promise$_Reduce(this, fn, initialValue, - true, this.reduce); - }; -}; - -},{"./assert.js":2}],31:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var global = require("./global.js"); -var ASSERT = require("./assert.js"); -var schedule; -if (typeof process !== "undefined" && process !== null && - typeof process.cwd === "function" && - typeof process.nextTick === "function" && - typeof process.version === "string") { - schedule = function Promise$_Scheduler(fn) { - process.nextTick(fn); - }; -} -else if ((typeof global.MutationObserver === "function" || - typeof global.WebkitMutationObserver === "function" || - typeof global.WebKitMutationObserver === "function") && - typeof document !== "undefined" && - typeof document.createElement === "function") { - - - schedule = (function(){ - var MutationObserver = global.MutationObserver || - global.WebkitMutationObserver || - global.WebKitMutationObserver; - var div = document.createElement("div"); - var queuedFn = void 0; - var observer = new MutationObserver( - function Promise$_Scheduler() { - var fn = queuedFn; - queuedFn = void 0; - fn(); - } - ); - observer.observe(div, { - attributes: true - }); - return function Promise$_Scheduler(fn) { - queuedFn = fn; - div.setAttribute("class", "foo"); - }; - - })(); -} -else if (typeof global.postMessage === "function" && - typeof global.importScripts !== "function" && - typeof global.addEventListener === "function" && - typeof global.removeEventListener === "function") { - - var MESSAGE_KEY = "bluebird_message_key_" + Math.random(); - schedule = (function(){ - var queuedFn = void 0; - - function Promise$_Scheduler(e) { - if (e.source === global && - e.data === MESSAGE_KEY) { - var fn = queuedFn; - queuedFn = void 0; - fn(); - } - } - - global.addEventListener("message", Promise$_Scheduler, false); - - return function Promise$_Scheduler(fn) { - queuedFn = fn; - global.postMessage( - MESSAGE_KEY, "*" - ); - }; - - })(); -} -else if (typeof global.MessageChannel === "function") { - schedule = (function(){ - var queuedFn = void 0; - - var channel = new global.MessageChannel(); - channel.port1.onmessage = function Promise$_Scheduler() { - var fn = queuedFn; - queuedFn = void 0; - fn(); - }; - - return function Promise$_Scheduler(fn) { - queuedFn = fn; - channel.port2.postMessage(null); - }; - })(); -} -else if (global.setTimeout) { - schedule = function Promise$_Scheduler(fn) { - setTimeout(fn, 4); - }; -} -else { - schedule = function Promise$_Scheduler(fn) { - fn(); - }; -} - -module.exports = schedule; - -},{"./assert.js":2,"./global.js":16}],32:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = - function(Promise, Promise$_CreatePromiseArray, PromiseArray) { - - var SettledPromiseArray = require("./settled_promise_array.js")( - Promise, PromiseArray); - - function Promise$_Settle(promises, useBound, caller) { - return Promise$_CreatePromiseArray( - promises, - SettledPromiseArray, - caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0 - ).promise(); - } - - Promise.settle = function Promise$Settle(promises) { - return Promise$_Settle(promises, false, Promise.settle); - }; - - Promise.prototype.settle = function Promise$settle() { - return Promise$_Settle(this, true, this.settle); - }; - -}; - -},{"./settled_promise_array.js":33}],33:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, PromiseArray) { -var ASSERT = require("./assert.js"); -var PromiseInspection = require("./promise_inspection.js"); -var util = require("./util.js"); -var inherits = util.inherits; -function SettledPromiseArray(values, caller, boundTo) { - this.constructor$(values, caller, boundTo); -} -inherits(SettledPromiseArray, PromiseArray); - -SettledPromiseArray.prototype._promiseResolved = -function SettledPromiseArray$_promiseResolved(index, inspection) { - this._values[index] = inspection; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - } -}; - -SettledPromiseArray.prototype._promiseFulfilled = -function SettledPromiseArray$_promiseFulfilled(value, index) { - if (this._isResolved()) return; - var ret = new PromiseInspection(); - ret._bitField = 268435456; - ret._settledValue = value; - this._promiseResolved(index, ret); -}; -SettledPromiseArray.prototype._promiseRejected = -function SettledPromiseArray$_promiseRejected(reason, index) { - if (this._isResolved()) return; - var ret = new PromiseInspection(); - ret._bitField = 134217728; - ret._settledValue = reason; - this._promiseResolved(index, ret); -}; - -return SettledPromiseArray; -}; - -},{"./assert.js":2,"./promise_inspection.js":22,"./util.js":39}],34:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = -function(Promise, Promise$_CreatePromiseArray, PromiseArray, apiRejection) { - - var SomePromiseArray = require("./some_promise_array.js")(PromiseArray); - var ASSERT = require("./assert.js"); - - function Promise$_Some(promises, howMany, useBound, caller) { - if ((howMany | 0) !== howMany || howMany < 0) { - return apiRejection("expecting a positive integer"); - } - var ret = Promise$_CreatePromiseArray( - promises, - SomePromiseArray, - caller, - useBound === true && promises._isBound() - ? promises._boundTo - : void 0 - ); - var promise = ret.promise(); - if (promise.isRejected()) { - return promise; - } - ret.setHowMany(howMany); - ret.init(); - return promise; - } - - Promise.some = function Promise$Some(promises, howMany) { - return Promise$_Some(promises, howMany, false, Promise.some); - }; - - Promise.prototype.some = function Promise$some(count) { - return Promise$_Some(this, count, true, this.some); - }; - -}; - -},{"./assert.js":2,"./some_promise_array.js":35}],35:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function (PromiseArray) { -var util = require("./util.js"); -var RangeError = require("./errors.js").RangeError; -var inherits = util.inherits; -var isArray = util.isArray; - -function SomePromiseArray(values, caller, boundTo) { - this.constructor$(values, caller, boundTo); - this._howMany = 0; - this._unwrap = false; - this._initialized = false; -} -inherits(SomePromiseArray, PromiseArray); - -SomePromiseArray.prototype._init = function SomePromiseArray$_init() { - if (!this._initialized) { - return; - } - if (this._howMany === 0) { - this._resolve([]); - return; - } - this._init$(void 0, -2); - var isArrayResolved = isArray(this._values); - this._holes = isArrayResolved ? this._values.length - this.length() : 0; - - if (!this._isResolved() && - isArrayResolved && - this._howMany > this._canPossiblyFulfill()) { - var message = "(Promise.some) input array contains less than " + - this._howMany + " promises"; - this._reject(new RangeError(message)); - } -}; - -SomePromiseArray.prototype.init = function SomePromiseArray$init() { - this._initialized = true; - this._init(); -}; - -SomePromiseArray.prototype.setUnwrap = function SomePromiseArray$setUnwrap() { - this._unwrap = true; -}; - -SomePromiseArray.prototype.howMany = function SomePromiseArray$howMany() { - return this._howMany; -}; - -SomePromiseArray.prototype.setHowMany = -function SomePromiseArray$setHowMany(count) { - if (this._isResolved()) return; - this._howMany = count; -}; - -SomePromiseArray.prototype._promiseFulfilled = -function SomePromiseArray$_promiseFulfilled(value) { - if (this._isResolved()) return; - this._addFulfilled(value); - if (this._fulfilled() === this.howMany()) { - this._values.length = this.howMany(); - if (this.howMany() === 1 && this._unwrap) { - this._resolve(this._values[0]); - } - else { - this._resolve(this._values); - } - } - -}; -SomePromiseArray.prototype._promiseRejected = -function SomePromiseArray$_promiseRejected(reason) { - if (this._isResolved()) return; - this._addRejected(reason); - if (this.howMany() > this._canPossiblyFulfill()) { - if (this._values.length === this.length()) { - this._reject([]); - } - else { - this._reject(this._values.slice(this.length() + this._holes)); - } - } -}; - -SomePromiseArray.prototype._fulfilled = function SomePromiseArray$_fulfilled() { - return this._totalResolved; -}; - -SomePromiseArray.prototype._rejected = function SomePromiseArray$_rejected() { - return this._values.length - this.length() - this._holes; -}; - -SomePromiseArray.prototype._addRejected = -function SomePromiseArray$_addRejected(reason) { - this._values.push(reason); -}; - -SomePromiseArray.prototype._addFulfilled = -function SomePromiseArray$_addFulfilled(value) { - this._values[this._totalResolved++] = value; -}; - -SomePromiseArray.prototype._canPossiblyFulfill = -function SomePromiseArray$_canPossiblyFulfill() { - return this.length() - this._rejected(); -}; - -return SomePromiseArray; -}; - -},{"./errors.js":10,"./util.js":39}],36:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise) { - var PromiseInspection = require("./promise_inspection.js"); - - Promise.prototype.inspect = function Promise$inspect() { - return new PromiseInspection(this); - }; -}; - -},{"./promise_inspection.js":22}],37:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -module.exports = function(Promise, INTERNAL) { - var ASSERT = require("./assert.js"); - var util = require("./util.js"); - var canAttach = require("./errors.js").canAttach; - var errorObj = util.errorObj; - var isObject = util.isObject; - - function getThen(obj) { - try { - return obj.then; - } - catch(e) { - errorObj.e = e; - return errorObj; - } - } - - function Promise$_Cast(obj, caller, originalPromise) { - if (isObject(obj)) { - if (obj instanceof Promise) { - return obj; - } - else if (isAnyBluebirdPromise(obj)) { - var ret = new Promise(INTERNAL); - ret._setTrace(caller, void 0); - obj._then( - ret._fulfillUnchecked, - ret._rejectUncheckedCheckError, - ret._progressUnchecked, - ret, - null, - void 0 - ); - ret._setFollowing(); - return ret; - } - var then = getThen(obj); - if (then === errorObj) { - caller = typeof caller === "function" ? caller : Promise$_Cast; - if (originalPromise !== void 0 && canAttach(then.e)) { - originalPromise._attachExtraTrace(then.e); - } - return Promise.reject(then.e, caller); - } - else if (typeof then === "function") { - caller = typeof caller === "function" ? caller : Promise$_Cast; - return Promise$_doThenable(obj, then, caller, originalPromise); - } - } - return obj; - } - - var hasProp = {}.hasOwnProperty; - function isAnyBluebirdPromise(obj) { - return hasProp.call(obj, "_promise0"); - } - - function Promise$_doThenable(x, then, caller, originalPromise) { - var resolver = Promise.defer(caller); - var called = false; - try { - then.call( - x, - Promise$_resolveFromThenable, - Promise$_rejectFromThenable, - Promise$_progressFromThenable - ); - } - catch(e) { - if (!called) { - called = true; - var trace = canAttach(e) ? e : new Error(e + ""); - if (originalPromise !== void 0) { - originalPromise._attachExtraTrace(trace); - } - resolver.promise._reject(e, trace); - } - } - return resolver.promise; - - function Promise$_resolveFromThenable(y) { - if (called) return; - called = true; - - if (x === y) { - var e = Promise._makeSelfResolutionError(); - if (originalPromise !== void 0) { - originalPromise._attachExtraTrace(e); - } - resolver.promise._reject(e, void 0); - return; - } - resolver.resolve(y); - } - - function Promise$_rejectFromThenable(r) { - if (called) return; - called = true; - var trace = canAttach(r) ? r : new Error(r + ""); - if (originalPromise !== void 0) { - originalPromise._attachExtraTrace(trace); - } - resolver.promise._reject(r, trace); - } - - function Promise$_progressFromThenable(v) { - if (called) return; - var promise = resolver.promise; - if (typeof promise._progress === "function") { - promise._progress(v); - } - } - } - - Promise._cast = Promise$_Cast; -}; - -},{"./assert.js":2,"./errors.js":10,"./util.js":39}],38:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; - -var global = require("./global.js"); -var setTimeout = function(fn, time) { - var $_len = arguments.length;var args = new Array($_len - 2); for(var $_i = 2; $_i < $_len; ++$_i) {args[$_i - 2] = arguments[$_i];} - global.setTimeout(function() { - fn.apply(void 0, args); - }, time); -}; - -var pass = {}; -global.setTimeout( function(_) { - if(_ === pass) { - setTimeout = global.setTimeout; - } -}, 1, pass); - -module.exports = function(Promise, INTERNAL) { - var util = require("./util.js"); - var ASSERT = require("./assert.js"); - var errors = require("./errors.js"); - var apiRejection = require("./errors_api_rejection")(Promise); - var TimeoutError = Promise.TimeoutError; - - var afterTimeout = function Promise$_afterTimeout(promise, message, ms) { - if (!promise.isPending()) return; - if (typeof message !== "string") { - message = "operation timed out after" + " " + ms + " ms" - } - var err = new TimeoutError(message); - errors.markAsOriginatingFromRejection(err); - promise._attachExtraTrace(err); - promise._rejectUnchecked(err); - }; - - var afterDelay = function Promise$_afterDelay(value, promise) { - promise._fulfill(value); - }; - - Promise.delay = function Promise$Delay(value, ms, caller) { - if (ms === void 0) { - ms = value; - value = void 0; - } - ms = +ms; - if (typeof caller !== "function") { - caller = Promise.delay; - } - var maybePromise = Promise._cast(value, caller, void 0); - var promise = new Promise(INTERNAL); - - if (Promise.is(maybePromise)) { - if (maybePromise._isBound()) { - promise._setBoundTo(maybePromise._boundTo); - } - if (maybePromise._cancellable()) { - promise._setCancellable(); - promise._cancellationParent = maybePromise; - } - promise._setTrace(caller, maybePromise); - promise._follow(maybePromise); - return promise.then(function(value) { - return Promise.delay(value, ms); - }); - } - else { - promise._setTrace(caller, void 0); - setTimeout(afterDelay, ms, value, promise); - } - return promise; - }; - - Promise.prototype.delay = function Promise$delay(ms) { - return Promise.delay(this, ms, this.delay); - }; - - Promise.prototype.timeout = function Promise$timeout(ms, message) { - ms = +ms; - - var ret = new Promise(INTERNAL); - ret._setTrace(this.timeout, this); - - if (this._isBound()) ret._setBoundTo(this._boundTo); - if (this._cancellable()) { - ret._setCancellable(); - ret._cancellationParent = this; - } - ret._follow(this); - setTimeout(afterTimeout, ms, ret, message, ms); - return ret; - }; - -}; - -},{"./assert.js":2,"./errors.js":10,"./errors_api_rejection":11,"./global.js":16,"./util.js":39}],39:[function(require,module,exports){ -/** - * Copyright (c) 2014 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions:

        - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -"use strict"; -var global = require("./global.js"); -var ASSERT = require("./assert.js"); -var es5 = require("./es5.js"); -var haveGetters = (function(){ - try { - var o = {}; - es5.defineProperty(o, "f", { - get: function () { - return 3; - } - }); - return o.f === 3; - } - catch (e) { - return false; - } - -})(); - -var canEvaluate = (function() { - if (typeof window !== "undefined" && window !== null && - typeof window.document !== "undefined" && - typeof navigator !== "undefined" && navigator !== null && - typeof navigator.appName === "string" && - window === global) { - return false; - } - return true; -})(); - -function deprecated(msg) { - if (typeof console !== "undefined" && console !== null && - typeof console.warn === "function") { - console.warn("Bluebird: " + msg); - } -} - -var errorObj = {e: {}}; -function tryCatch1(fn, receiver, arg) { - try { - return fn.call(receiver, arg); - } - catch (e) { - errorObj.e = e; - return errorObj; - } -} - -function tryCatch2(fn, receiver, arg, arg2) { - try { - return fn.call(receiver, arg, arg2); - } - catch (e) { - errorObj.e = e; - return errorObj; - } -} - -function tryCatchApply(fn, args, receiver) { - try { - return fn.apply(receiver, args); - } - catch (e) { - errorObj.e = e; - return errorObj; - } -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - -function asString(val) { - return typeof val === "string" ? val : ("" + val); -} - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return !isPrimitive(value); -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(asString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - - -function notEnumerableProp(obj, name, value) { - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - - -var wrapsPrimitiveReceiver = (function() { - return this !== "string"; -}).call("string"); - -function thrower(r) { - throw r; -} - - -var ret = { - thrower: thrower, - isArray: es5.isArray, - haveGetters: haveGetters, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - canEvaluate: canEvaluate, - deprecated: deprecated, - errorObj: errorObj, - tryCatch1: tryCatch1, - tryCatch2: tryCatch2, - tryCatchApply: tryCatchApply, - inherits: inherits, - withAppended: withAppended, - asString: asString, - maybeWrapAsError: maybeWrapAsError, - wrapsPrimitiveReceiver: wrapsPrimitiveReceiver -}; - -module.exports = ret; - -},{"./assert.js":2,"./es5.js":12,"./global.js":16}]},{},[4]) -(4) -}); -; diff --git a/libs/plasio/workers/laz-loader-worker.js b/libs/plasio/workers/laz-loader-worker.js deleted file mode 100644 index 7a7ea96..0000000 --- a/libs/plasio/workers/laz-loader-worker.js +++ /dev/null @@ -1,144 +0,0 @@ -// laz-loader-worker.js -// - -//import {Module} from "./laz-perf.js"; - -let instance = null; // laz-perf instance - -function readAs(buf, Type, offset, count) { - count = (count === undefined || count === 0 ? 1 : count); - var sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count); - - var r = new Type(sub); - if (count === undefined || count === 1) - return r[0]; - - var ret = []; - for (var i = 0 ; i < count ; i ++) { - ret.push(r[i]); - } - - return ret; -} - -function parseLASHeader(arraybuffer) { - var o = {}; - - o.pointsOffset = readAs(arraybuffer, Uint32Array, 32*3); - o.pointsFormatId = readAs(arraybuffer, Uint8Array, 32*3+8); - o.pointsStructSize = readAs(arraybuffer, Uint16Array, 32*3+8+1); - o.pointsCount = readAs(arraybuffer, Uint32Array, 32*3 + 11); - - - var start = 32*3 + 35; - o.scale = readAs(arraybuffer, Float64Array, start, 3); start += 24; // 8*3 - o.offset = readAs(arraybuffer, Float64Array, start, 3); start += 24; - - var bounds = readAs(arraybuffer, Float64Array, start, 6); start += 48; // 8*6; - o.maxs = [bounds[0], bounds[2], bounds[4]]; - o.mins = [bounds[1], bounds[3], bounds[5]]; - - return o; -} - -function handleEvent(msg) { - switch(msg.type) { - case "open": - try { - instance = new Module.LASZip(); - var abInt = new Uint8Array(msg.arraybuffer); - var buf = Module._malloc(msg.arraybuffer.byteLength); - - instance.arraybuffer = msg.arraybuffer; - instance.buf = buf; - Module.HEAPU8.set(abInt, buf); - instance.open(buf, msg.arraybuffer.byteLength); - - instance.readOffset = 0; - - postMessage({ type: "open", status: 1}); - }catch(e) { - debugger; - postMessage({ type: "open", status: 0, details: e }); - } - break; - - case "header": - if (!instance) - throw new Error("You need to open the file before trying to read header"); - - - - var header = parseLASHeader(instance.arraybuffer); - header.pointsFormatId &= 0x3f; - instance.header = header; - postMessage({type: "header", status: 1, header: header}); - break; - - case "read": - if (!instance) - throw new Error("You need to open the file before trying to read stuff"); - - var start = msg.start, count = msg.count, skip = msg.skip; - var o = instance; - - if (!o.header) - throw new Error("You need to query header before reading, I maintain state that way, sorry :("); - - var pointsToRead = Math.min(count * skip, o.header.pointsCount - o.readOffset); - var bufferSize = Math.ceil(pointsToRead / skip); - var pointsRead = 0; - - let buffer = new ArrayBuffer(bufferSize * o.header.pointsStructSize); - let this_buf = new Uint8Array(buffer); - var buf_read = Module._malloc(o.header.pointsStructSize); - for (var i = 0 ; i < pointsToRead ; i ++) { - o.getPoint(buf_read); - - if (i % skip === 0) { - var a = new Uint8Array(Module.HEAPU8.buffer, buf_read, o.header.pointsStructSize); - this_buf.set(a, pointsRead * o.header.pointsStructSize, o.header.pointsStructSize); - pointsRead ++; - } - - o.readOffset ++; - } - Module._free(buf_read); - - let transferables = [buffer]; - - postMessage({ - type: 'header', - status: 1, - buffer: buffer, - count: pointsRead, - hasMoreData: o.readOffset < o.header.pointsCount - }, transferables); - - break; - - - case "close": - if (instance !== null) { - Module._free(instance.buf); - instance.delete(); - instance = null; - }else{ - debugger; - } - - postMessage({ type: "close", status: 1}); - break; - } -} - -onmessage = function(event) { - try { - handleEvent(event.data); - } catch(e) { - debugger; - postMessage({type: event.data.type, status: 0, details: e}); - } -}; - - diff --git a/libs/plasio/workers/laz-perf.js b/libs/plasio/workers/laz-perf.js deleted file mode 100644 index 2984045..0000000 --- a/libs/plasio/workers/laz-perf.js +++ /dev/null @@ -1,32 +0,0 @@ -var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function";var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){return Module["read"](filename,true)};Module["load"]=function load(f){globalEval(read(f))};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}))}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}this["Module"]=Module}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){/*console.log(x)*/};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WEB){window["Module"]=Module}else{Module["load"]=importScripts}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i0)return""}var c1=buffer[0];var c2=buffer[1];var c3=buffer[2];var c4=buffer[3];var ret;if(buffer.length==2){ret=String.fromCharCode((c1&31)<<6|c2&63)}else if(buffer.length==3){ret=String.fromCharCode((c1&15)<<12|(c2&63)<<6|c3&63)}else{var codePoint=(c1&7)<<18|(c2&63)<<12|(c3&63)<<6|c4&63;ret=String.fromCharCode(((codePoint-65536)/1024|0)+55296,(codePoint-65536)%1024+56320)}buffer.length=0;return ret});this.processJSString=function processJSString(string){string=unescape(encodeURIComponent(string));var ret=[];for(var i=0;i=TOTAL_MEMORY)enlargeMemory();return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var stack=0;var JSfuncs={"stackSave":(function(){stack=Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore(stack)}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args){var func=getCFunc(ident);var cArgs=[];if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];if(t>=128)hasUtf=true;else if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(!hasUtf){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}var utf8=new Runtime.UTF8Processor;for(i=0;i>0];ret+=utf8.processCChar(t)}return ret}Module["Pointer_stringify"]=Pointer_stringify;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr){for(var i=0;i>1]=codeUnit}HEAP16[outPtr+str.length*2>>1]=0}Module["stringToUTF16"]=stringToUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr){var iChar=0;for(var iCodeUnit=0;iCodeUnit=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++iCodeUnit);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr+iChar*4>>2]=codeUnit;++iChar}HEAP32[outPtr+iChar*4>>2]=0}Module["stringToUTF32"]=stringToUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var final=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}final=parse()}catch(e){final+="?"}if(final.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling")}return final}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){return x+4095&-4096}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||117440512;var FAST_MEMORY=Module["FAST_MEMORY"]||2097152;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var ret=(new Runtime.UTF8Processor).processJSString(stringy);if(length){ret.length=length}if(!dontAddNull){ret.push(0)}return ret}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer+str.length>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;STATIC_BASE=8;STATICTOP=STATIC_BASE+30128;__ATINIT__.push({func:(function(){__GLOBAL__I_a()})},{func:(function(){__GLOBAL__I_a64()})},{func:(function(){__GLOBAL__I_a117()})});allocate([76,65,83,90,105,112,0,0,111,112,101,110,0,0,0,0,103,101,116,80,111,105,110,116,0,0,0,0,0,0,0,0,103,101,116,67,111,117,110,116,0,0,0,0,0,0,0,0,68,121,110,97,109,105,99,76,65,83,90,105,112,0,0,0,97,100,100,70,105,101,108,100,70,108,111,97,116,105,110,103,0,0,0,0,0,0,0,0,97,100,100,70,105,101,108,100,83,105,103,110,101,100,0,0,97,100,100,70,105,101,108,100,85,110,115,105,103,110,101,100,0,0,0,0,0,0,0,0,118,105,105,105,0,0,0,0,64,110,0,0,208,0,0,0,176,110,0,0,0,0,0,0,80,49,51,68,121,110,97,109,105,99,76,65,83,90,105,112,0,0,0,0,0,0,0,0,49,51,68,121,110,97,109,105,99,76,65,83,90,105,112,0,160,109,0,0,184,0,0,0,200,109,0,0,160,0,0,0,0,0,0,0,200,0,0,0,118,105,105,105,0,0,0,0,64,110,0,0,208,0,0,0,192,110,0,0,0,0,0,0,118,105,105,105,105,0,0,0,64,110,0,0,208,0,0,0,192,110,0,0,192,110,0,0,105,105,0,0,0,0,0,0,208,0,0,0,0,0,0,0,118,105,0,0,0,0,0,0,105,105,0,0,0,0,0,0,80,75,49,51,68,121,110,97,109,105,99,76,65,83,90,105,112,0,0,0,0,0,0,0,200,109,0,0,48,1,0,0,1,0,0,0,200,0,0,0,105,105,105,0,0,0,0,0,192,110,0,0,136,1,0,0,80,54,76,65,83,90,105,112,0,0,0,0,0,0,0,0,54,76,65,83,90,105,112,0,160,109,0,0,120,1,0,0,200,109,0,0,104,1,0,0,0,0,0,0,128,1,0,0,118,105,105,105,0,0,0,0,64,110,0,0,136,1,0,0,176,110,0,0,0,0,0,0,118,105,105,105,105,0,0,0,64,110,0,0,136,1,0,0,192,110,0,0,192,110,0,0,105,105,0,0,0,0,0,0,136,1,0,0,0,0,0,0,118,105,0,0,0,0,0,0,105,105,0,0,0,0,0,0,80,75,54,76,65,83,90,105,112,0,0,0,0,0,0,0,200,109,0,0,232,1,0,0,1,0,0,0,128,1,0,0,0,0,0,0,216,2,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,106,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,106,69,69,69,69,69,69,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,49,48,98,97,115,101,95,102,105,101,108,100,69,0,0,0,160,109,0,0,176,2,0,0,8,111,0,0,40,2,0,0,208,2,0,0,0,0,0,0,73,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,115,121,109,98,111,108,115,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,3,0,0,0,4,0,0,0,5,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,106,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,106,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,40,3,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,106,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,106,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,88,5,0,0,7,0,0,0,8,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,116,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,116,69,69,69,69,69,69,0,0,0,0,0,0,8,111,0,0,208,4,0,0,208,2,0,0,0,0,0,0,0,0,0,0,96,6,0,0,9,0,0,0,10,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,116,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,116,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,136,5,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,116,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,116,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,184,7,0,0,13,0,0,0,14,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,104,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,104,69,69,69,69,69,69,0,0,0,0,0,0,8,111,0,0,48,7,0,0,208,2,0,0,0,0,0,0,0,0,0,0,192,8,0,0,15,0,0,0,16,0,0,0,17,0,0,0,3,0,0,0,18,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,104,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,104,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,232,7,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,104,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,104,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,24,10,0,0,19,0,0,0,20,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,105,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,105,69,69,69,69,69,69,0,0,0,0,0,0,8,111,0,0,144,9,0,0,208,2,0,0,0,0,0,0,0,0,0,0,32,11,0,0,21,0,0,0,22,0,0,0,23,0,0,0,4,0,0,0,24,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,105,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,105,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,72,10,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,105,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,105,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,120,12,0,0,25,0,0,0,26,0,0,0,5,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,115,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,115,69,69,69,69,69,69,0,0,0,0,0,0,8,111,0,0,240,11,0,0,208,2,0,0,0,0,0,0,0,0,0,0,128,13,0,0,27,0,0,0,28,0,0,0,29,0,0,0,5,0,0,0,30,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,115,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,115,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,168,12,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,115,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,115,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,216,14,0,0,31,0,0,0,32,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,48,95,53,102,105,101,108,100,73,97,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,97,69,69,69,69,69,69,0,0,0,0,0,0,8,111,0,0,80,14,0,0,208,2,0,0,0,0,0,0,0,0,0,0,224,15,0,0,33,0,0,0,34,0,0,0,35,0,0,0,6,0,0,0,36,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,97,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,97,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,67,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,67,95,69,69,69,69,0,0,0,0,0,0,0,0,8,111,0,0,8,15,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,95,102,105,101,108,100,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,50,95,53,102,105,101,108,100,73,97,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,97,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,48,17,0,0,8,0,0,0,37,0,0,0,38,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,102,105,101,108,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,69,69,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,48,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,69,0,160,109,0,0,0,17,0,0,8,111,0,0,168,16,0,0,40,17,0,0,0,0,0,0,0,0,0,0,8,18,0,0,39,0,0,0,40,0,0,0,41,0,0,0,7,0,0,0,42,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,102,105,101,108,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,56,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,56,95,69,69,69,69,0,0,0,0,8,111,0,0,96,17,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,54,100,121,110,97,109,105,99,95,102,105,101,108,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,69,69,69,69,0,0,0,0,0,0,0,0,0,0,0,48,19,0,0,43,0,0,0,44,0,0,0,45,0,0,0,8,0,0,0,46,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,53,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,53,95,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,176,18,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,69,69,0,0,0,0,0,0,8,20,0,0,47,0,0,0,48,0,0,0,49,0,0,0,9,0,0,0,50,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,49,48,98,117,102,95,115,116,114,101,97,109,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,49,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,49,95,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,168,19,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,49,48,98,117,102,95,115,116,114,101,97,109,69,69,0,0,118,50,116,54,115,50,48,0,118,50,116,54,115,50,48,118,50,116,55,115,56,0,0,0,118,50,116,54,115,50,48,118,50,116,56,115,54,0,0,0,118,50,116,54,115,50,48,118,50,116,55,115,56,118,50,116,56,115,54,0,0,0,0,0,78,54,108,97,115,122,105,112,49,57,117,110,107,110,111,119,110,95,115,99,104,101,109,97,95,116,121,112,101,69,0,0,8,111,0,0,128,20,0,0,72,108,0,0,0,0,0,0,84,104,101,32,76,65,90,32,115,99,104,101,109,97,32,105,115,32,110,111,116,32,114,101,99,111,103,110,105,122,101,100,0,0,0,0,0,0,0,0,0,0,0,0,160,20,0,0,51,0,0,0,52,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,32,22,0,0,9,0,0,0,53,0,0,0,54,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,48,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,48,95,53,102,105,101,108,100,73,78,83,48,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,68,95,69,69,69,69,78,83,66,95,73,78,83,67,95,55,103,112,115,116,105,109,101,69,78,83,69,95,73,83,72,95,69,69,69,69,78,83,66,95,73,78,83,67,95,51,114,103,98,69,78,83,69,95,73,83,75,95,69,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,8,21,0,0,40,17,0,0,0,0,0,0,78,54,108,97,115,122,105,112,49,49,101,110,100,95,111,102,95,102,105,108,101,69,0,0,8,111,0,0,48,22,0,0,72,108,0,0,0,0,0,0,82,101,97,99,104,101,100,32,69,110,100,32,111,102,32,102,105,108,101,0,0,0,0,0,0,0,0,0,72,22,0,0,55,0,0,0,56,0,0,0,7,0,0,0,0,0,0,0,15,14,13,12,11,10,9,8,14,0,1,3,6,10,10,9,13,1,2,4,7,11,11,10,12,3,4,5,8,12,12,11,11,6,7,8,9,13,13,12,10,10,11,12,13,14,14,13,9,10,11,12,13,14,15,14,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,1,0,1,2,3,4,5,6,2,1,0,1,2,3,4,5,3,2,1,0,1,2,3,4,4,3,2,1,0,1,2,3,5,4,3,2,1,0,1,2,6,5,4,3,2,1,0,1,7,6,5,4,3,2,1,0,0,0,0,0,144,24,0,0,57,0,0,0,58,0,0,0,59,0,0,0,10,0,0,0,60,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,55,103,112,115,116,105,109,101,69,78,83,71,95,73,83,74,95,69,69,69,69,78,83,68,95,73,78,83,69,95,51,114,103,98,69,78,83,71,95,73,83,77,95,69,69,69,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,81,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,81,95,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,40,23,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,55,103,112,115,116,105,109,101,69,78,83,71,95,73,83,74,95,69,69,69,69,78,83,68,95,73,78,83,69,95,51,114,103,98,69,78,83,71,95,73,83,77,95,69,69,69,69,69,69,69,69,69,69,69,0,0,0,0,0,0,224,26,0,0,10,0,0,0,61,0,0,0,62,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,48,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,48,95,53,102,105,101,108,100,73,78,83,48,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,68,95,69,69,69,69,78,83,66,95,73,78,83,67,95,51,114,103,98,69,78,83,69,95,73,83,72,95,69,69,69,69,69,69,69,69,69,0,0,0,0,0,8,111,0,0,232,25,0,0,40,17,0,0,0,0,0,0,0,0,0,0,88,28,0,0,63,0,0,0,64,0,0,0,65,0,0,0,11,0,0,0,66,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,51,114,103,98,69,78,83,71,95,73,83,74,95,69,69,69,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,78,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,78,95,69,69,69,69,0,0,0,0,0,8,111,0,0,16,27,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,51,114,103,98,69,78,83,71,95,73,83,74,95,69,69,69,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,0,0,0,0,0,144,30,0,0,11,0,0,0,67,0,0,0,68,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,48,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,48,95,53,102,105,101,108,100,73,78,83,48,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,68,95,69,69,69,69,78,83,66,95,73,78,83,67,95,55,103,112,115,116,105,109,101,69,78,83,69,95,73,83,72,95,69,69,69,69,69,69,69,69,69,0,8,111,0,0,152,29,0,0,40,17,0,0,0,0,0,0,0,0,0,0,8,32,0,0,69,0,0,0,70,0,0,0,71,0,0,0,12,0,0,0,72,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,55,103,112,115,116,105,109,101,69,78,83,71,95,73,83,74,95,69,69,69,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,78,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,78,95,69,69,69,69,0,8,111,0,0,192,30,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,78,83,68,95,73,78,83,69,95,55,103,112,115,116,105,109,101,69,78,83,71,95,73,83,74,95,69,69,69,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,0,40,34,0,0,12,0,0,0,73,0,0,0,74,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,48,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,48,95,53,102,105,101,108,100,73,78,83,48,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,48,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,68,95,69,69,69,69,69,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,72,33,0,0,40,17,0,0,0,0,0,0,0,0,0,0,136,35,0,0,75,0,0,0,76,0,0,0,77,0,0,0,13,0,0,0,78,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,75,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,75,95,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,88,34,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,102,111,114,109,97,116,115,50,49,100,121,110,97,109,105,99,95,100,101,99,111,109,112,114,101,115,115,111,114,49,73,78,83,49,95,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,50,95,49,57,114,101,99,111,114,100,95,100,101,99,111,109,112,114,101,115,115,111,114,73,74,78,83,50,95,53,102,105,101,108,100,73,78,83,50,95,51,108,97,115,55,112,111,105,110,116,49,48,69,78,83,50,95,50,48,115,116,97,110,100,97,114,100,95,100,105,102,102,95,109,101,116,104,111,100,73,83,70,95,69,69,69,69,69,69,69,69,69,69,69,0,0,118,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,48,37,0,0,79,0,0,0,80,0,0,0,56,0,0,0,248,255,255,255,48,37,0,0,81,0,0,0,82,0,0,0,192,255,255,255,192,255,255,255,48,37,0,0,83,0,0,0,84,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,56,98,97,115,105,99,95,115,116,114,105,110,103,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,0,0,0,8,111,0,0,232,36,0,0,176,67,0,0,0,0,0,0,64,0,0,0,0,0,0,0,144,66,0,0,85,0,0,0,86,0,0,0,192,255,255,255,192,255,255,255,144,66,0,0,87,0,0,0,88,0,0,0,0,0,0,0,240,37,0,0,89,0,0,0,90,0,0,0,13,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,11,0,0,0,14,0,0,0,3,0,0,0,15,0,0,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,105,110,103,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,168,37,0,0,24,66,0,0,0,0,0,0,0,0,0,0,200,38,0,0,91,0,0,0,92,0,0,0,93,0,0,0,16,0,0,0,94,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,57,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,57,95,69,69,69,69,0,8,111,0,0,32,38,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,56,100,101,99,111,100,101,114,115,49,48,97,114,105,116,104,109,101,116,105,99,73,78,83,49,95,50,105,111,49,56,95,95,105,102,115,116,114,101,97,109,95,119,114,97,112,112,101,114,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,69,69,0,0,0,0,71,111,116,32,100,97,116,97,32,0,0,0,0,0,0,0,32,98,121,116,101,115,0,0,76,65,83,70,0,0,0,0,78,54,108,97,115,122,105,112,49,51,105,110,118,97,108,105,100,95,109,97,103,105,99,69,0,0,0,0,0,0,0,0,8,111,0,0,112,39,0,0,72,108,0,0,0,0,0,0,78,54,108,97,115,122,105,112,50,50,99,104,117,110,107,95,116,97,98,108,101,95,114,101,97,100,95,101,114,114,111,114,69,0,0,0,0,0,0,0,8,111,0,0,160,39,0,0,72,108,0,0,0,0,0,0,67,104,117,110,107,32,116,97,98,108,101,32,111,102,102,115,101,116,32,61,61,32,45,49,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,97,116,32,116,104,105],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([115,32,116,105,109,101,0,0,78,54,108,97,115,122,105,112,49,51,110,111,116,95,115,117,112,112,111,114,116,101,100,69,0,0,0,0,0,0,0,0,8,111,0,0,16,40,0,0,72,108,0,0,0,0,0,0,78,54,108,97,115,122,105,112,50,54,117,110,107,110,111,119,110,95,99,104,117,110,107,95,116,97,98,108,101,95,102,111,114,109,97,116,69,0,0,0,8,111,0,0,64,40,0,0,72,108,0,0,0,0,0,0,99,104,117,110,107,95,115,105,122,101,32,61,61,32,117,105,110,116,46,109,97,120,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,97,116,32,116,104,105,115,32,116,105,109,101,44,32,99,97,108,108,32,49,45,56,48,48,45,68,65,70,85,81,32,102,111,114,32,115,117,112,112,111,114,116,46,0,0,0,0,0,84,104,101,32,99,104,117,110,107,32,116,97,98,108,101,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,32,105,115,32,117,110,107,110,111,119,110,0,0,0,0,0,0,0,0,0,0,0,104,40,0,0,95,0,0,0,96,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,48,40,0,0,97,0,0,0,98,0,0,0,7,0,0,0,0,0,0,0,84,104,101,114,101,32,119,97,115,32,97,32,112,114,111,98,108,101,109,32,114,101,97,100,105,110,103,32,116,104,101,32,99,104,117,110,107,32,116,97,98,108,101,0,0,0,0,0,0,0,0,0,200,39,0,0,99,0,0,0,100,0,0,0,7,0,0,0,0,0,0,0,108,97,115,122,105,112,32,101,110,99,111,100,101,100,0,0,78,54,108,97,115,122,105,112,49,51,110,111,95,108,97,115,122,105,112,95,118,108,114,69,0,0,0,0,0,0,0,0,8,111,0,0,136,41,0,0,72,108,0,0,0,0,0,0,78,111,32,76,65,83,122,105,112,32,86,76,82,32,119,97,115,32,102,111,117,110,100,32,105,110,32,116,104,101,32,86,76,82,115,32,115,101,99,116,105,111,110,0,0,0,0,0,0,0,0,0,168,41,0,0,101,0,0,0,102,0,0,0,7,0,0,0,0,0,0,0,78,54,108,97,115,122,105,112,50,53,108,97,115,122,105,112,95,102,111,114,109,97,116,95,117,110,115,117,112,112,111,114,116,101,100,69,0,0,0,0,8,111,0,0,0,42,0,0,72,108,0,0,0,0,0,0,79,110,108,121,32,76,65,83,122,105,112,32,80,79,73,78,84,87,73,83,69,32,67,72,85,78,75,69,68,32,100,101,99,111,109,112,114,101,115,115,111,114,32,105,115,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,40,42,0,0,103,0,0,0,104,0,0,0,7,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,55,98,97,100,95,102,117,110,99,116,105,111,110,95,99,97,108,108,69,0,0,0,0,0,8,111,0,0,136,42,0,0,88,107,0,0,0,0,0,0,0,0,0,0,168,42,0,0,105,0,0,0,106,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,44,0,0,107,0,0,0,108,0,0,0,13,0,0,0,14,0,0,0,109,0,0,0,110,0,0,0,15,0,0,0,17,0,0,0,14,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,102,117,110,99,116,105,111,110,54,95,95,102,117,110,99,73,90,78,54,108,97,115,122,105,112,50,105,111,54,114,101,97,100,101,114,49,48,98,97,115,105,99,95,102,105,108,101,73,78,83,50,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,49,49,95,118,97,108,105,100,97,116,111,114,115,69,118,69,85,108,82,78,83,51,95,54,104,101,97,100,101,114,69,69,95,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,66,95,69,69,70,118,83,65,95,69,69,69,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,102,117,110,99,116,105,111,110,54,95,95,98,97,115,101,73,70,118,82,78,54,108,97,115,122,105,112,50,105,111,54,104,101,97,100,101,114,69,69,69,69,0,0,0,0,160,109,0,0,208,43,0,0,8,111,0,0,56,43,0,0,8,44,0,0,0,0,0,0,90,78,54,108,97,115,122,105,112,50,105,111,54,114,101,97,100,101,114,49,48,98,97,115,105,99,95,102,105,108,101,73,78,83,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,49,49,95,118,97,108,105,100,97,116,111,114,115,69,118,69,85,108,82,78,83,48,95,54,104,101,97,100,101,114,69,69,95,0,0,0,160,109,0,0,32,44,0,0,78,54,108,97,115,122,105,112,50,49,111,108,100,95,115,116,121,108,101,95,99,111,109,112,114,101,115,115,105,111,110,69,0,0,0,0,0,0,0,0,8,111,0,0,136,44,0,0,72,108,0,0,0,0,0,0,78,54,108,97,115,122,105,112,49,52,110,111,116,95,99,111,109,112,114,101,115,115,101,100,69,0,0,0,0,0,0,0,8,111,0,0,192,44,0,0,72,108,0,0,0,0,0,0,84,104,101,32,102,105,108,101,32,100,111,101,115,110,39,116,32,115,101,101,109,32,116,111,32,98,101,32,99,111,109,112,114,101,115,115,101,100,0,0,0,0,0,0,224,44,0,0,111,0,0,0,112,0,0,0,7,0,0,0,0,0,0,0,84,104,101,32,102,105,108,101,32,115,101,101,109,115,32,116,111,32,104,97,118,101,32,111,108,100,32,115,116,121,108,101,32,99,111,109,112,114,101,115,115,105,111,110,32,119,104,105,99,104,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,0,0,176,44,0,0,113,0,0,0,114,0,0,0,7,0,0,0,0,0,0,0,70,105,108,101,32,109,97,103,105,99,32,105,115,32,110,111,116,32,118,97,108,105,100,0,0,0,0,0,144,39,0,0,115,0,0,0,116,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,112,46,0,0,117,0,0,0,118,0,0,0,119,0,0,0,18,0,0,0,120,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,50,105,111,54,114,101,97,100,101,114,49,48,98,97,115,105,99,95,102,105,108,101,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,55,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,55,95,69,69,69,69,0,0,0,0,0,0,8,111,0,0,224,45,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,50,105,111,54,114,101,97,100,101,114,49,48,98,97,115,105,99,95,102,105,108,101,73,78,83,49,95,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,69,69,0,0,0,0,0,104,47,0,0,121,0,0,0,122,0,0,0,123,0,0,0,19,0,0,0,124,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,115,104,97,114,101,100,95,112,116,114,95,112,111,105,110,116,101,114,73,80,78,54,108,97,115,122,105,112,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,78,83,95,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,83,51,95,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,83,51,95,69,69,69,69,0,0,0,8,111,0,0,248,46,0,0,184,60,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,100,101,102,97,117,108,116,95,100,101,108,101,116,101,73,78,54,108,97,115,122,105,112,55,115,116,114,101,97,109,115,49,51,109,101,109,111,114,121,95,115,116,114,101,97,109,69,69,69,0,0,0,0,0,0,118,111,105,100,0,0,0,0,98,111,111,108,0,0,0,0,99,104,97,114,0,0,0,0,115,105,103,110,101,100,32,99,104,97,114,0,0,0,0,0,117,110,115,105,103,110,101,100,32,99,104,97,114,0,0,0,115,104,111,114,116,0,0,0,117,110,115,105,103,110,101,100,32,115,104,111,114,116,0,0,105,110,116,0,0,0,0,0,117,110,115,105,103,110,101,100,32,105,110,116,0,0,0,0,108,111,110,103,0,0,0,0,117,110,115,105,103,110,101,100,32,108,111,110,103,0,0,0,102,108,111,97,116,0,0,0,100,111,117,98,108,101,0,0,115,116,100,58,58,115,116,114,105,110,103,0,0,0,0,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,0,0,0,0,0,0,0,115,116,100,58,58,119,115,116,114,105,110,103,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,99,104,97,114,62,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,105,103,110,101,100,32,99,104,97,114,62,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,104,111,114,116,62,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,62,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,105,110,116,62,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,62,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,108,111,110,103,62,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,56,95,116,62,0,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,49,54,95,116,62,0,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,49,54,95,116,62,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,51,50,95,116,62,0,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,51,50,95,116,62,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,102,108,111,97,116,62,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,100,111,117,98,108,101,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,32,100,111,117,98,108,101,62,0,0,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,101,69,69,0,0,160,109,0,0,56,51,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,100,69,69,0,0,160,109,0,0,96,51,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,102,69,69,0,0,160,109,0,0,136,51,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,109,69,69,0,0,160,109,0,0,176,51,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,108,69,69,0,0,160,109,0,0,216,51,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,106,69,69,0,0,160,109,0,0,0,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,105,69,69,0,0,160,109,0,0,40,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,116,69,69,0,0,160,109,0,0,80,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,115,69,69,0,0,160,109,0,0,120,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,104,69,69,0,0,160,109,0,0,160,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,97,69,69,0,0,160,109,0,0,200,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,99,69,69,0,0,160,109,0,0,240,52,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,51,118,97,108,69,0,0,0,0,0,0,160,109,0,0,24,53,0,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,119,69,69,69,69,0,0,78,83,116,51,95,95,49,50,49,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,73,76,98,49,69,69,69,0,0,0,160,109,0,0,120,53,0,0,104,111,0,0,56,53,0,0,0,0,0,0,1,0,0,0,160,53,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,104,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,104,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,104,69,69,69,69,0,0,104,111,0,0,192,53,0,0,0,0,0,0,1,0,0,0,160,53,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,0,104,111,0,0,24,54,0,0,0,0,0,0,1,0,0,0,160,53],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([248,58,0,0,125,0,0,0,126,0,0,0,16,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,15,0,0,0,16,0,0,0,5,0,0,0,17,0,0,0,18,0,0,0,20,0,0,0,6,0,0,0,21,0,0,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,119,69,69,0,0,0,0,0,0,0,0,8,111,0,0,216,58,0,0,88,66,0,0,0,0,0,0,0,0,0,0,96,59,0,0,127,0,0,0,128,0,0,0,17,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,19,0,0,0,16,0,0,0,5,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,7,0,0,0,23,0,0,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,119,69,69,0,8,111,0,0,72,59,0,0,88,66,0,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,108,111,99,97,108,101,32,102,111,114,32,115,116,97,110,100,97,114,100,32,105,110,112,117,116,0,0,0,0,0,0,0,248,59,0,0,129,0,0,0,130,0,0,0,18,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,22,0,0,0,9,0,0,0,2,0,0,0,23,0,0,0,11,0,0,0,24,0,0,0,8,0,0,0,25,0,0,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,99,69,69,0,0,0,0,0,0,0,0,8,111,0,0,216,59,0,0,24,66,0,0,0,0,0,0,0,0,0,0,96,60,0,0,131,0,0,0,132,0,0,0,19,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,8,0,0,0,9,0,0,0,2,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,3,0,0,0,27,0,0,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,99,69,69,0,8,111,0,0,72,60,0,0,24,66,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,95,95,115,104,97,114,101,100,95,99,111,117,110,116,69,0,0,0,0,0,0,0,0,160,109,0,0,112,60,0,0,78,83,116,51,95,95,49,49,57,95,95,115,104,97,114,101,100,95,119,101,97,107,95,99,111,117,110,116,69,0,0,0,104,111,0,0,152,60,0,0,0,0,0,0,1,0,0,0,144,60,0,0,0,0,0,0,103,101,110,101,114,105,99,0,117,110,115,112,101,99,105,102,105,101,100,32,103,101,110,101,114,105,99,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,121,115,116,101,109,0,0,117,110,115,112,101,99,105,102,105,101,100,32,115,121,115,116,101,109,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,32,0,0,0,0,0,0,0,0,0,0,136,61,0,0,133,0,0,0,134,0,0,0,7,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,115,121,115,116,101,109,95,101,114,114,111,114,69,0,0,8,111,0,0,112,61,0,0,72,108,0,0,0,0,0,0,78,83,116,51,95,95,49,49,52,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,0,0,160,109,0,0,152,61,0,0,78,83,116,51,95,95,49,49,50,95,95,100,111,95,109,101,115,115,97,103,101,69,0,0,8,111,0,0,192,61,0,0,184,61,0,0,0,0,0,0,0,0,0,0,56,62,0,0,135,0,0,0,136,0,0,0,26,0,0,0,1,0,0,0,9,0,0,0,10,0,0,0,2,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,52,95,95,103,101,110,101,114,105,99,95,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,8,111,0,0,16,62,0,0,216,61,0,0,0,0,0,0,0,0,0,0,152,62,0,0,137,0,0,0,138,0,0,0,27,0,0,0,3,0,0,0,9,0,0,0,10,0,0,0,4,0,0,0,0,0,0,0,78,83,116,51,95,95,49,50,51,95,95,115,121,115,116,101,109,95,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,0,0,0,0,0,0,8,111,0,0,112,62,0,0,216,61,0,0,0,0,0,0,109,117,116,101,120,32,108,111,99,107,32,102,97,105,108,101,100,0,0,0,0,0,0,0,101,99,32,61,61,32,48,0,47,85,115,101,114,115,47,118,101,114,109,97,47,116,109,112,47,101,109,115,100,107,47,101,109,115,99,114,105,112,116,101,110,47,49,46,50,55,46,48,47,115,121,115,116,101,109,47,108,105,98,47,108,105,98,99,120,120,47,109,117,116,101,120,46,99,112,112,0,0,0,0,117,110,108,111,99,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,97,115,105,99,95,115,116,114,105,110,103,0,0,0,0,0,0,0,0,24,66,0,0,139,0,0,0,140,0,0,0,13,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,8,0,0,0,9,0,0,0,2,0,0,0,23,0,0,0,11,0,0,0,24,0,0,0,3,0,0,0,27,0,0,0,0,0,0,0,88,66,0,0,141,0,0,0,142,0,0,0,20,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,19,0,0,0,16,0,0,0,5,0,0,0,17,0,0,0,18,0,0,0,20,0,0,0,7,0,0,0,23,0,0,0,8,0,0,0,0,0,0,0,144,66,0,0,85,0,0,0,86,0,0,0,248,255,255,255,248,255,255,255,144,66,0,0,87,0,0,0,88,0,0,0,8,0,0,0,0,0,0,0,216,66,0,0,143,0,0,0,144,0,0,0,248,255,255,255,248,255,255,255,216,66,0,0,145,0,0,0,146,0,0,0,4,0,0,0,0,0,0,0,32,67,0,0,147,0,0,0,148,0,0,0,252,255,255,255,252,255,255,255,32,67,0,0,149,0,0,0,150,0,0,0,4,0,0,0,0,0,0,0,104,67,0,0,151,0,0,0,152,0,0,0,252,255,255,255,252,255,255,255,104,67,0,0,153,0,0,0,154,0,0,0,105,111,115,116,114,101,97,109,0,0,0,0,0,0,0,0,117,110,115,112,101,99,105,102,105,101,100,32,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,65,0,0,155,0,0,0,156,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,88,65,0,0,157,0,0,0,158,0,0,0,105,111,115,95,98,97,115,101,58,58,99,108,101,97,114,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,55,102,97,105,108,117,114,101,69,0,0,0,0,0,0,0,8,111,0,0,16,65,0,0,136,61,0,0,0,0,0,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,69,0,0,0,0,0,0,0,160,109,0,0,64,65,0,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,96,65,0,0,88,65,0,0,0,0,0,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,0,0,0,0,0,8,111,0,0,160,65,0,0,88,65,0,0,0,0,0,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,0,0,0,0,0,0,160,109,0,0,224,65,0,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,0,0,0,0,0,0,160,109,0,0,32,66,0,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,104,111,0,0,96,66,0,0,0,0,0,0,1,0,0,0,144,65,0,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,104,111,0,0,168,66,0,0,0,0,0,0,1,0,0,0,208,65,0,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,0,104,111,0,0,240,66,0,0,0,0,0,0,1,0,0,0,144,65,0,0,3,244,255,255,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,0,104,111,0,0,56,67,0,0,0,0,0,0,1,0,0,0,208,65,0,0,3,244,255,255,78,83,116,51,95,95,49,49,52,98,97,115,105,99,95,105,111,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,104,111,0,0,128,67,0,0,3,0,0,0,2,0,0,0,144,66,0,0,2,0,0,0,32,67,0,0,2,8,0,0,0,0,0,0,24,68,0,0,159,0,0,0,160,0,0,0,28,0,0,0,1,0,0,0,9,0,0,0,10,0,0,0,5,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,57,95,95,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,69,0,0,0,8,111,0,0,248,67,0,0,216,61,0,0,0,0,0,0,0,0,0,0,40,82,0,0,161,0,0,0,162,0,0,0,163,0,0,0,1,0,0,0,4,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,82,0,0,164,0,0,0,165,0,0,0,163,0,0,0,2,0,0,0,5,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,0,0,166,0,0,0,167,0,0,0,163,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,65,66,67,68,69,70,120,88,43,45,112,80,105,73,110,78,0,0,0,0,0,0,0,0,37,112,0,0,0,0,0,0,0,0,0,0,152,87,0,0,168,0,0,0,169,0,0,0,163,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,88,0,0,170,0,0,0,171,0,0,0,163,0,0,0,4,0,0,0,5,0,0,0,23,0,0,0,6,0,0,0,24,0,0,0,1,0,0,0,2,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,240,88,0,0,172,0,0,0,173,0,0,0,163,0,0,0,8,0,0,0,9,0,0,0,25,0,0,0,10,0,0,0,26,0,0,0,3,0,0,0,4,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,37,112,0,0,0,0,0,0,0,0,0,0,24,84,0,0,174,0,0,0,175,0,0,0,163,0,0,0,29,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,1,0,0,0,248,255,255,255,24,84,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,72,58,37,77,58,37,83,37,109,47,37,100,47,37,121,37,89,45,37,109,45,37,100,37,73,58,37,77,58,37,83,32,37,112,0,0,0,0,0,37,72,58,37,77,0,0,0,37,72,58,37,77,58,37,83,0,0,0,0,184,84,0,0,176,0,0,0,177,0,0,0,163,0,0,0,37,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,2,0,0,0,248,255,255,255,184,84,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,37,0,0,0,89,0,0,0,45,0,0,0,37,0,0,0,109,0,0,0,45,0,0,0,37,0,0,0,100,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,72,85,0,0,178,0,0,0,179,0,0,0,163,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,85,0,0,180,0,0,0,181,0,0,0,163,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,82,0,0,182,0,0,0,183,0,0,0,163,0,0,0,45,0,0,0,46,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,47,0,0,0,25,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,82,0,0,184,0,0,0,185,0,0,0,163,0,0,0,48,0,0,0,49,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,50,0,0,0,31,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,83,0,0,186,0,0,0,187,0,0,0,163,0,0,0,51,0,0,0,52,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,53,0,0,0,37,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,83,0,0,188,0,0,0,189,0,0,0,163,0,0,0,54,0,0,0,55,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,56,0,0,0,43,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,89,0,0,190,0,0,0,191,0,0,0,163,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,37,76,102,0,0,0,0,0,109,111,110,101,121,95,103,101,116,32,101,114,114,111,114,0,0,0,0,0,16,90,0,0,192,0,0,0,193,0,0,0,163,0,0,0,5,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,0,0,0,0,160,90,0,0,194,0,0,0,195,0,0,0,163,0,0,0,1,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,46,48,76,102,0,0,0,0,0,0,0,48,91,0,0,196,0,0,0,197,0,0,0,163,0,0,0,2,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,86,0,0,198,0,0,0,199,0,0,0,163,0,0,0,13,0,0,0,12,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,86,0,0,200,0,0,0,201,0,0,0,163,0,0,0,14,0,0,0,13,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,118,101,99,116,111,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,202,0,0,0,203,0,0,0,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,78,0,0,204,0,0,0,205,0,0,0,163,0,0,0,28,0,0,0,15,0,0,0,29,0,0,0,16,0,0,0,30,0,0,0,1,0,0,0,17,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,79,0,0,206,0,0,0,207,0,0,0,163,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,57,0,0,0,58,0,0,0,5,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,81,0,0,208,0,0,0,209,0,0,0,163,0,0,0,60,0,0,0,61,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,0,0,0,0,216,81,0,0,210,0,0,0,211,0,0,0,163,0,0,0,62,0,0,0,63,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,116,0,0,0,114,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,102,97,108,115,101,0,0,0,102,0,0,0,97,0,0,0,108,0,0,0,115,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,97,32,37,98,32,37,100,32,37,72,58,37,77,58,37,83,32,37,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,97,0,0,0,32,0,0,0,37,0,0,0,98,0,0,0,32,0,0,0,37,0,0,0,100,0,0,0,32,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,73,58,37,77,58,37,83,32,37,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,0,0,0,0,108,111,99,97,108,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,0,0,0,0,0,16,78,0,0,212,0,0,0,213,0,0,0,163,0,0,0,0,0,0,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,102,97,99,101,116,69,0,0,0,8,111,0,0,248,77,0,0,144,60,0,0,0,0,0,0,0,0,0,0,160,78,0,0,212,0,0,0,214,0,0,0,163,0,0,0,18,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,31,0,0,0,19,0,0,0,32,0,0,0,20,0,0,0,33,0,0,0,5,0,0,0,21,0,0,0,6,0,0,0,0,0,0,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,119,69,69,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,99,116,121,112,101,95,98,97,115,101,69,0,0,0,0,160,109,0,0,128,78,0,0,104,111,0,0,104,78,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,78,0,0,2,0,0,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,99,69,69,0,0,0,0,0,0,0,104,111,0,0,192,78,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,78,0,0,2,0,0,0,0,0,0,0,112,79,0,0,212,0,0,0,215,0,0,0,163,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,64,0,0,0,65,0,0,0,8,0,0,0,66,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,99,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,0,78,83,116,51,95,95,49,49,50,99,111,100,101,99,118,116,95,98,97,115,101,69,0,0,160,109,0,0,80,79,0,0,104,111,0,0,40,79,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,104,79,0,0,2,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,119,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,0,104,111,0,0,144,79,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,104,79,0,0,2,0,0,0,0,0,0,0,48,80,0,0,212,0,0,0,216,0,0,0,163,0,0,0,5,0,0,0,6,0,0,0,9,0,0,0,67,0,0,0,68,0,0,0,10,0,0,0,69,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,115,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,104,111,0,0,8,80,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,104,79,0,0,2,0,0,0,0,0,0,0,168,80,0,0,212,0,0,0,217,0,0,0,163,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,70,0,0,0,71,0,0,0,12,0,0,0,72,0,0,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,105,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,0,0,0,0,0,104,111,0,0,128,80,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,104,79,0,0,2,0,0,0,0,0,0,0,32,81,0,0,212,0,0,0,218,0,0,0,163,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,70,0,0,0,71,0,0,0,12,0,0,0,72,0,0,0,78,83,116,51,95,95,49,49,54,95,95,110,97,114,114,111,119,95,116,111,95,117,116,102,56,73,76,106,51,50,69,69,69,0,0,0,0,0,0,0,8,111,0,0,248,80,0,0,168,80,0,0,0,0,0,0,0,0,0,0,136,81,0,0,212,0,0,0,219,0,0,0,163,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,70,0,0,0,71,0,0,0,12,0,0,0,72,0,0,0,78,83,116,51,95,95,49,49,55,95,95,119,105,100,101,110,95,102,114,111,109,95,117,116,102,56,73,76,106,51,50,69,69,69,0,0,0,0,0,0,8,111,0,0,96,81,0,0,168,80,0,0,0,0,0,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,99,69,69,0,0,0,0,8,111,0,0,152,81,0,0,16,78,0,0,0,0,0,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,119,69,69,0,0,0,0,8,111,0,0,192,81,0,0,16,78,0,0,0,0,0,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,95,95,105,109,112,69,0,0,0,8,111,0,0,232,81,0,0,16,78,0,0,0,0,0,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,99,69,69,0,0,0,0,0,8,111,0,0,16,82,0,0,16,78,0,0,0,0,0,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,119,69,69,0,0,0,0,0,8,111,0,0,56,82,0,0,16,78,0,0,0,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,48,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,95,98,97,115,101,69,0,0,0,0,160,109,0,0,128,82,0,0,104,111,0,0,96,82,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,82,0,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,49,69,69,69,0,0,0,0,0,104,111,0,0,192,82,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,82,0,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,48,69,69,69,0,0,0,0,0,104,111,0,0,0,83,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,82,0,0,2,0,0,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,49,69,69,69,0,0,0,0,0,104,111,0,0,64,83,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,82,0,0,2,0,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,57,116,105,109,101,95,98,97,115,101,69,0,0,0,0,0,0,160,109,0,0,200,83,0,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,99,69,69,0,0,0,0,0,0,0,160,109,0,0,232,83,0,0,104,111,0,0,128,83,0,0,0,0,0,0,3,0,0,0,16,78,0,0,2,0,0,0,224,83,0,0,2,0,0,0,16,84,0,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,119,69,69,0,0,0,0,0,0,0,160,109,0,0,136,84,0,0,104,111,0,0,64,84,0,0,0,0,0,0,3,0,0,0,16,78,0,0,2,0,0,0,224,83,0,0,2,0,0,0,176,84,0,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,78,83,116,51,95,95,49,49,48,95,95,116,105,109,101,95,112,117,116,69,0,0,0,0,160,109,0,0,40,85,0,0,104,111,0,0,224,84,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,64,85,0,0,0,8,0,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,104,111,0,0,104,85,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,64,85,0,0,0,8,0,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,99,69,69,0,0,0,0,78,83,116,51,95,95,49,49,51,109,101,115,115,97,103,101,115,95,98,97,115,101,69,0,160,109,0,0,232,85,0,0,104,111,0,0,208,85,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,0,86,0,0,2,0,0,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,119,69,69,0,0,0,0,104,111,0,0,40,86,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,0,86,0,0,2,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,99,69,69,0,0,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,103,101,116,95,98,97,115,101,69,0,0,0,0,0,0,0,0,160,109,0,0,192,86,0,0,104,111,0,0,168,86,0,0,0,0,0,0,1,0,0,0,224,86,0,0,0,0,0,0,104,111,0,0,96,86,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,232,86,0,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,119,69,69,0,0,0,104,111,0,0,104,87,0,0,0,0,0,0,1,0,0,0,224,86,0,0,0,0,0,0,104,111,0,0,32,87,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,128,87,0,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,99,69,69,0,0,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,112,117,116,95,98,97,115,101,69,0,0,0,0,0,0,0,0,160,109,0,0,24,88,0,0,104,111,0,0,0,88,0,0,0,0,0,0,1,0,0,0,56,88,0,0,0,0,0,0,104,111,0,0,184,87,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,64,88,0,0,0,0,0,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,0,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,119,69,69,0,0,0,104,111,0,0,192,88,0,0,0,0,0,0,1,0,0,0,56,88,0,0,0,0,0,0,104,111,0,0,120,88,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,216,88,0,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,99,69,69,0,0,0,0,0,0,0,0,160,109,0,0,88,89,0,0,104,111,0,0,16,89,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,120,89,0,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,119,69,69,0,0,0,0,0,0,0,0,160,109,0,0,232,89,0,0,104,111,0,0,160,89,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,8,90,0,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,99,69,69,0,0,0,0,0,0,0,0,160,109,0,0,120,90,0,0,104,111,0,0,48,90,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,152,90,0,0,0,0,0,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,0,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,119,69,69,0,0,0,0,0,0,0,0,160,109,0,0,8,91,0,0,104,111,0,0,192,90,0,0,0,0,0,0,2,0,0,0,16,78,0,0,2,0,0,0,40,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,77,0,0,0,0,0,0,80,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,114,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,99,0,0,0,104,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,105,0,0,0,108,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,117,0,0,0,115,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,116,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,111,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+14996);allocate([65,0,0,0,117,0,0,0,103,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,97,110,117,97,114,121,0,70,101,98,114,117,97,114,121,0,0,0,0,0,0,0,0,77,97,114,99,104,0,0,0,65,112,114,105,108,0,0,0,77,97,121,0,0,0,0,0,74,117,110,101,0,0,0,0,74,117,108,121,0,0,0,0,65,117,103,117,115,116,0,0,83,101,112,116,101,109,98,101,114,0,0,0,0,0,0,0,79,99,116,111,98,101,114,0,78,111,118,101,109,98,101,114,0,0,0,0,0,0,0,0,68,101,99,101,109,98,101,114,0,0,0,0,0,0,0,0,74,97,110,0,0,0,0,0,70,101,98,0,0,0,0,0,77,97,114,0,0,0,0,0,65,112,114,0,0,0,0,0,74,117,110,0,0,0,0,0,74,117,108,0,0,0,0,0,65,117,103,0,0,0,0,0,83,101,112,0,0,0,0,0,79,99,116,0,0,0,0,0,78,111,118,0,0,0,0,0,68,101,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,110,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,114,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,117,0,0,0,114,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,117,110,100,97,121,0,0,77,111,110,100,97,121,0,0,84,117,101,115,100,97,121,0,87,101,100,110,101,115,100,97,121,0,0,0,0,0,0,0,84,104,117,114,115,100,97,121,0,0,0,0,0,0,0,0,70,114,105,100,97,121,0,0,83,97,116,117,114,100,97,121,0,0,0,0,0,0,0,0,83,117,110,0,0,0,0,0,77,111,110,0,0,0,0,0,84,117,101,0,0,0,0,0,87,101,100,0,0,0,0,0,84,104,117,0,0,0,0,0,70,114,105,0,0,0,0,0,83,97,116,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,117,110,99,97,117,103,104,116,0,0,0,0,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,0,0,0,0,0,0,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,0,0,116,101,114,109,105,110,97,116,105,110,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,0,0,0,0,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,0,0,0,0,0,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,0,0,0,0,0,0,0,192,106,0,0,220,0,0,0,221,0,0,0,73,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,0,83,116,57,98,97,100,95,97,108,108,111,99,0,0,0,0,8,111,0,0,176,106,0,0,88,107,0,0,0,0,0,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,116,104,114,101,119,32,97,110,32,101,120,99,101,112,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,116,100,58,58,101,120,99,101,112,116,105,111,110,0,0,83,116,57,101,120,99,101,112,116,105,111,110,0,0,0,0,160,109,0,0,72,107,0,0,0,0,0,0,160,107,0,0,222,0,0,0,223,0,0,0,74,0,0,0,0,0,0,0,0,0,0,0,72,108,0,0,224,0,0,0,225,0,0,0,7,0,0,0,0,0,0,0,83,116,49,49,108,111,103,105,99,95,101,114,114,111,114,0,8,111,0,0,144,107,0,0,88,107,0,0,0,0,0,0,0,0,0,0,224,107,0,0,222,0,0,0,226,0,0,0,74,0,0,0,0,0,0,0,83,116,49,50,108,101,110,103,116,104,95,101,114,114,111,114,0,0,0,0,0,0,0,0,8,111,0,0,200,107,0,0,160,107,0,0,0,0,0,0,0,0,0,0,32,108,0,0,222,0,0,0,227,0,0,0,74,0,0,0,0,0,0,0,83,116,49,50,111,117,116,95,111,102,95,114,97,110,103,101,0,0,0,0,0,0,0,0,8,111,0,0,8,108,0,0,160,107,0,0,0,0,0,0,83,116,49,51,114,117,110,116,105,109,101,95,101,114,114,111,114,0,0,0,0,0,0,0,8,111,0,0,48,108,0,0,88,107,0,0,0,0,0,0,0,0,0,0,168,108,0,0,228,0,0,0,229,0,0,0,75,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,99,97,115,116,0,0,0,83,116,57,116,121,112,101,95,105,110,102,111,0,0,0,0,160,109,0,0,128,108,0,0,83,116,56,98,97,100,95,99,97,115,116,0,0,0,0,0,8,111,0,0,152,108,0,0,88,107,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,0,8,111,0,0,184,108,0,0,144,108,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,8,111,0,0,240,108,0,0,224,108,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,8,111,0,0,80,109,0,0,224,108,0,0,0,0,0,0,8,111,0,0,40,109,0,0,120,109,0,0,0,0,0,0,0,0,0,0,24,109,0,0,230,0,0,0,231,0,0,0,232,0,0,0,233,0,0,0,22,0,0,0,14,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,136,109,0,0,230,0,0,0,234,0,0,0,232,0,0,0,233,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,40,110,0,0,230,0,0,0,235,0,0,0,232,0,0,0,233,0,0,0,24,0,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,8,111,0,0,0,110,0,0,224,108,0,0,0,0,0,0,118,0,0,0,0,0,0,0,232,109,0,0,56,110,0,0,68,110,0,0,0,0,0,0,232,109,0,0,72,110,0,0,98,0,0,0,0,0,0,0,232,109,0,0,88,110,0,0,99,0,0,0,0,0,0,0,232,109,0,0,104,110,0,0,104,0,0,0,0,0,0,0,232,109,0,0,120,110,0,0,97,0,0,0,0,0,0,0,232,109,0,0,136,110,0,0,232,109,0,0,160,36,0,0,232,109,0,0,152,36,0,0,105,0,0,0,0,0,0,0,232,109,0,0,168,110,0,0,106,0,0,0,0,0,0,0,232,109,0,0,184,110,0,0,232,109,0,0,120,69,0,0,109,0,0,0,0,0,0,0,232,109,0,0,208,110,0,0,102,0,0,0,0,0,0,0,232,109,0,0,224,110,0,0,100,0,0,0,0,0,0,0,232,109,0,0,240,110,0,0,0,0,0,0,80,111,0,0,230,0,0,0,236,0,0,0,232,0,0,0,233,0,0,0,22,0,0,0,15,0,0,0,2,0,0,0,7,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,8,111,0,0,40,111,0,0,24,109,0,0,0,0,0,0,0,0,0,0,176,111,0,0,230,0,0,0,237,0,0,0,232,0,0,0,233,0,0,0,22,0,0,0,16,0,0,0,3,0,0,0,8,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,8,111,0,0,136,111,0,0,24,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,1,2,4,7,3,6,5,0,0,0,0,0,0,0,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,95,112,137,0,255,9,47,15,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,0,0,0,0,0,0,40,110,117,108,108,41,0,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,0,0,0,0,0,105,110,102,0,0,0,0,0,73,78,70,0,0,0,0,0,110,97,110,0,0,0,0,0,78,65,78,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+25240);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module["_i64Subtract"]=_i64Subtract;Module["_i64Add"]=_i64Add;function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));throw ptr}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["setTempRet0"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return(new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n"))(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,(function(message){this.name=errorName;this.message=message;var stack=(new Error(message)).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}}));errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=(function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}});return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach((function(type){typeDependencies[type]=dependentTypes}));function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])}),destructorFunction:null})}function _pthread_mutex_lock(){}function _free(){}Module["_free"]=_free;function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}function __embind_register_std_string(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){var length=HEAPU32[value>>2];var a=new Array(length);for(var i=0;i>2]=length;for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}if(destructors!==null){destructors.push(_free,ptr)}return ptr}),"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:(function(ptr){_free(ptr)})})}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var HEAP,shift;if(charSize===2){HEAP=HEAPU16;shift=1}else if(charSize===4){HEAP=HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":(function(value){var length=HEAPU32[value>>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;i>2]=value;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(){done(this.error)});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{return flags}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{return fs.readlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var accmode=flag&2097155;var perms=["r","w","rw"][accmode];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),getStreamFromPtr:(function(ptr){return FS.streams[ptr-1]}),getPtrForStream:(function(stream){return stream?stream.fd+1:0}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return link.node_ops.readlink(link)}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret="";var utf8=new Runtime.UTF8Processor;for(var i=0;i>2]=FS.getPtrForStream(stdin);assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");HEAP32[_stdout>>2]=FS.getPtrForStream(stdout);assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");HEAP32[_stderr>>2]=FS.getPtrForStream(stderr);assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices()}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>8,sock.sport&255]))}return peer}),getPeer:(function(sock,addr,port){return sock.peers[addr+":"+port]}),addPeer:(function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer}),removePeer:(function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]}),handlePeerEvents:(function(sock,peer){var first=true;var handleOpen=(function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}});function handleMessage(data){assert(typeof data!=="string"&&data.byteLength!==undefined);data=new Uint8Array(data);var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(function(data,flags){if(!flags.binary){return}handleMessage((new Uint8Array(data)).buffer)}));peer.socket.on("close",(function(){Module["websocket"].emit("close",sock.stream.fd)}));peer.socket.on("error",(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}))}else{peer.socket.onopen=handleOpen;peer.socket.onclose=(function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}}),poll:(function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask}),ioctl:(function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}}),close:(function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>0]=chr;var fd=_fileno(stream);var ret=_write(fd,_fputc.ret,1);if(ret==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return-1}else{return chr}}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}function _fwrite(ptr,size,nitems,stream){var bytesToWrite=nitems*size;if(bytesToWrite==0)return 0;var fd=_fileno(stream);var bytesWritten=_write(fd,ptr,bytesToWrite);if(bytesWritten==-1){var streamObj=FS.getStreamFromPtr(stream);if(streamObj)streamObj.error=true;return 0}else{return bytesWritten/size|0}}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2]=HEAP32[varargs+argIndex>>2],HEAP32[tempDoublePtr+4>>2]=HEAP32[varargs+(argIndex+4)>>2],+HEAPF64[tempDoublePtr>>3])}else if(type=="i64"){ret=[HEAP32[varargs+argIndex>>2],HEAP32[varargs+(argIndex+4)>>2]]}else{type="i32";ret=HEAP32[varargs+argIndex>>2]}argIndex+=Runtime.getNativeFieldSize(type);return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break};case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg("i32");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg("i32");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case"h":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case"l":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case"L":case"q":case"j":argSize=8;break;case"z":case"t":case"I":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":{var signed=next==100||next==105;argSize=argSize||4;var currArg=getNextArg("i"+argSize*8);var origArg=currArg;var argText;if(argSize==8){currArg=Runtime.makeBigInt(currArg[0],currArg[1],next==117)}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix="";if(next==100||next==105){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],null);else argText=reSign(currArg,8*argSize,1).toString(10)}else if(next==117){if(argSize==8&&i64Math)argText=i64Math.stringify(origArg[0],origArg[1],true);else argText=unSign(currArg,8*argSize,1).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?"0":"")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?"0x":"";if(argSize==8&&i64Math){if(origArg[1]){argText=(origArg[1]>>>0).toString(16);var lower=(origArg[0]>>>0).toString(16);while(lower.length<8)lower="0"+lower;argText+=lower}else{argText=(origArg[0]>>>0).toString(16)}}else if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix="+"+prefix}else if(flagPadSign){prefix=" "+prefix}}if(argText.charAt(0)=="-"){prefix="-"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?"f":"F").charCodeAt(0);precision-=exponent+1}else{next=(next==103?"e":"E").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\d$/.test(argText)){argText=argText.slice(0,-1)+"0"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&__reallyNegative(currArg)){argText="-"+argText}}var parts=argText.split("e");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].indexOf(".")!=-1&&(parts[0].slice(-1)=="0"||parts[0].slice(-1)==".")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(".")==-1)parts[0]+=".";while(precision>effectivePrecision++)parts[0]+="0"}argText=parts[0]+(parts.length>1?"e"+parts[1]:"");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText="+"+argText}else if(flagPadSign){argText=" "+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString("(null)".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg("i8"));break};case"n":{var ptr=getNextArg("i32*");HEAP32[ptr>>2]=ret.length;break};case"%":{ret.push(curr);break};default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function _fprintf(stream,format,varargs){var result=__formatString(format,varargs);var stack=Runtime.stackSave();var ret=_fwrite(allocate(result,"i8",ALLOC_STACK),1,result.length,stream);Runtime.stackRestore(stack);return ret}function _vfprintf(s,f,va_arg){return _fprintf(s,f,HEAP32[va_arg>>2])}function _pthread_mutex_unlock(){}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0)self.alloc(bytes);return ret}Module["_bitshift64Shl"]=_bitshift64Shl;var LOCALE={curr:0,check:(function(locale){if(locale)locale=Pointer_stringify(locale);return locale==="C"||locale==="POSIX"||!locale})};function _calloc(n,s){var ret=_malloc(n*s);_memset(ret,0,n*s);return ret}Module["_calloc"]=_calloc;function _newlocale(mask,locale,base){if(!LOCALE.check(locale)){___setErrNo(ERRNO_CODES.ENOENT);return 0}if(!base)base=_calloc(1,4);return base}Module["_memmove"]=_memmove;function ___errno_location(){return ___errno_state}function _strerror_r(errnum,strerrbuf,buflen){if(errnum in ERRNO_MESSAGES){if(ERRNO_MESSAGES[errnum].length>buflen-1){return ___setErrNo(ERRNO_CODES.ERANGE)}else{var msg=ERRNO_MESSAGES[errnum];writeAsciiToMemory(msg,strerrbuf);return 0}}else{return ___setErrNo(ERRNO_CODES.EINVAL)}}function _strerror(errnum){if(!_strerror.buffer)_strerror.buffer=_malloc(256);_strerror_r(errnum,_strerror.buffer,256);return _strerror.buffer}function _pthread_mutex_destroy(){}function _catclose(catd){return 0}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap["buffer"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function ___cxa_guard_release(){}function _ungetc(c,stream){stream=FS.getStreamFromPtr(stream);if(!stream){return-1}if(c===-1){return c}c=unSign(c&255);stream.ungotten.push(c);stream.eof=false;return c}function _uselocale(locale){var old=LOCALE.curr;if(locale)LOCALE.curr=locale;return old}function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":(function(){return undefined}),"toWireType":(function(destructors,o){return undefined})})}Module["_memset"]=_memset;var _BDtoILow=true;var _BItoD=true;function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?Pointer_stringify(tm_zone):""};var pattern=Pointer_stringify(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":(function(date){return WEEKDAYS[date.tm_wday].substring(0,3)}),"%A":(function(date){return WEEKDAYS[date.tm_wday]}),"%b":(function(date){return MONTHS[date.tm_mon].substring(0,3)}),"%B":(function(date){return MONTHS[date.tm_mon]}),"%C":(function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)}),"%d":(function(date){return leadingNulls(date.tm_mday,2)}),"%e":(function(date){return leadingSomething(date.tm_mday,2," ")}),"%g":(function(date){return getWeekBasedYear(date).toString().substring(2)}),"%G":(function(date){return getWeekBasedYear(date)}),"%H":(function(date){return leadingNulls(date.tm_hour,2)}),"%I":(function(date){return leadingNulls(date.tm_hour<13?date.tm_hour:date.tm_hour-12,2)}),"%j":(function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)}),"%m":(function(date){return leadingNulls(date.tm_mon+1,2)}),"%M":(function(date){return leadingNulls(date.tm_min,2)}),"%n":(function(){return"\n"}),"%p":(function(date){if(date.tm_hour>0&&date.tm_hour<13){return"AM"}else{return"PM"}}),"%S":(function(date){return leadingNulls(date.tm_sec,2)}),"%t":(function(){return"\t"}),"%u":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||7}),"%U":(function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"}),"%V":(function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)}),"%Z":(function(date){return date.tm_zone}),"%%":(function(){return"%"})};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _abort(){Module["abort"]()}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Runtime.dynCall("v",func);_pthread_once.seen[ptr]=1}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}});clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function runDestructor(handle){var $$=handle.$$;if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}this.$$.count.value-=1;var toDelete=0===this.$$.count.value;if(toDelete){runDestructor(this)}if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=(function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)});proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){var ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register((function(){clonedHandle["delete"]()})));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}var _throwInternalError=undefined;function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return Object.create(prototype,{$$:{value:record}})}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value}}function requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i0){HEAP8[ptr++>>0]=streamObj.ungotten.pop();bytesToRead--;bytesRead++}var err=_read(streamObj.fd,ptr,bytesToRead);if(err==-1){if(streamObj)streamObj.error=true;return 0}bytesRead+=err;if(bytesRead>0]}}function _getc(){return _fgetc.apply(null,arguments)}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);registerType(primitiveType,{name:name,"fromWireType":(function(value){return value}),"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return value|0}),"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler(){setTimeout(Browser.mainLoop.runner,value)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}return 0}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg){Module["noExitRuntime"]=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=func;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter((function(){if(typeof arg!=="undefined"){Runtime.dynCall("vi",func,[arg])}else{Runtime.dynCall("v",func)}}));if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler();if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg);_emscripten_set_main_loop_timing(timingMode,timingValue)}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor="black"}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);canvasContainer.requestFullScreen()}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(!ABORT)func()}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(!ABORT)func()}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(!ABORT)func()}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){Browser.lastTouches[touch.identifier]=Browser.touches[touch.identifier];Browser.touches[touch.identifier]={x:adjustedX,y:adjustedY}}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(!noRunDep)addRunDependency("al "+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>1]=values[i]}me.ret=allocate([arr+128*i16size],"i16*",ALLOC_NORMAL)}return me.ret}function _freelocale(locale){_free(locale)}function ___cxa_allocate_exception(size){return _malloc(size)}function _fmod(x,y){return x%y}function _fmodl(){return _fmod.apply(null,arguments)}function _catopen(name,oflag){return-1}function _catgets(catd,set_id,msg_id,s){return s}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return(function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])});case 3:return(function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])});default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":(function(value){return value}),"toWireType":(function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value}),"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function ___ctype_toupper_loc(){var me=___ctype_toupper_loc;if(!me.ret){var values=[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var i32size=4;var arr=_malloc(values.length*i32size);for(var i=0;i>2]=values[i]}me.ret=allocate([arr+128*i32size],"i32*",ALLOC_NORMAL)}return me.ret}function ___cxa_guard_acquire(variable){if(!HEAP8[variable>>0]){HEAP8[variable>>0]=1;return 1}return 0}function ___ctype_tolower_loc(){var me=___ctype_tolower_loc;if(!me.ret){var values=[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var i32size=4;var arr=_malloc(values.length*i32size);for(var i=0;i>2]=values[i]}me.ret=allocate([arr+128*i32size],"i32*",ALLOC_NORMAL)}return me.ret}function ___cxa_begin_catch(ptr){__ZSt18uncaught_exceptionv.uncaught_exception--;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}var PTHREAD_SPECIFIC_NEXT_KEY=1;function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i>2)+i])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],(function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,(function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1))}var destructors=[];var args=new Array(argCount);args[0]=rawConstructor;for(var i=1;i0?", ":"")+argsListWired}var returns=argTypes[0].name!=="void";invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2]=0;__ATINIT__.unshift({func:(function(){TTY.init()})});__ATEXIT__.push({func:(function(){TTY.shutdown()})});TTY.utf8=new Runtime.UTF8Processor;if(ENVIRONMENT_IS_NODE){var fs=require("fs");NODEFS.staticInit()}_fputc.ret=allocate([0],"i8",ALLOC_STATIC);__ATINIT__.push({func:(function(){SOCKFS.root=FS.mount(SOCKFS,{},null)})});init_emval();init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");_fgetc.ret=allocate([0],"i8",ALLOC_STATIC);Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas){Browser.requestFullScreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>2]=16312;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function Ph(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16312;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function Qh(b,d){b=b|0;d=d|0;var e=0;e=i;md[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=Sn(c[d>>2]|0,19144)|0;c[b+36>>2]=d;a[b+44>>0]=(md[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;i=e;return}function Rh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+16|0;g=b+8|0;d=b;e=a+36|0;f=a+40|0;h=g+8|0;j=g;a=a+32|0;while(1){k=c[e>>2]|0;k=wd[c[(c[k>>2]|0)+20>>2]&15](k,c[f>>2]|0,g,h,d)|0;l=(c[d>>2]|0)-j|0;if((Ib(g|0,1,l|0,c[a>>2]|0)|0)!=(l|0)){e=-1;d=5;break}if((k|0)==2){e=-1;d=5;break}else if((k|0)!=1){d=4;break}}if((d|0)==4){l=((Ac(c[a>>2]|0)|0)!=0)<<31>>31;i=b;return l|0}else if((d|0)==5){i=b;return e|0}return 0}function Sh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;if(a[b+44>>0]|0){g=Ib(d|0,4,e|0,c[b+32>>2]|0)|0;i=f;return g|0}if((e|0)>0)g=0;else{g=0;i=f;return g|0}while(1){if((vd[c[(c[b>>2]|0)+52>>2]&63](b,c[d>>2]|0)|0)==-1){e=6;break}g=g+1|0;if((g|0)<(e|0))d=d+4|0;else{e=6;break}}if((e|0)==6){i=f;return g|0}return 0}function Th(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;i=i+32|0;k=e+16|0;p=e+8|0;j=e+4|0;h=e;f=(d|0)==-1;a:do if(!f){c[p>>2]=d;if(a[b+44>>0]|0){if((Ib(p|0,4,1,c[b+32>>2]|0)|0)==1)break;else d=-1;i=e;return d|0}c[j>>2]=k;l=p+4|0;n=b+36|0;o=b+40|0;g=k+8|0;m=k;b=b+32|0;while(1){q=c[n>>2]|0;q=rd[c[(c[q>>2]|0)+12>>2]&15](q,c[o>>2]|0,p,l,h,k,g,j)|0;if((c[h>>2]|0)==(p|0)){d=-1;g=12;break}if((q|0)==3){g=7;break}r=(q|0)==1;if(q>>>0>=2){d=-1;g=12;break}q=(c[j>>2]|0)-m|0;if((Ib(k|0,1,q|0,c[b>>2]|0)|0)!=(q|0)){d=-1;g=12;break}if(r)p=r?c[h>>2]|0:p;else break a}if((g|0)==7){if((Ib(p|0,1,1,c[b>>2]|0)|0)==1)break;else d=-1;i=e;return d|0}else if((g|0)==12){i=e;return d|0}}while(0);r=f?0:d;i=e;return r|0}function Uh(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=16312;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function Vh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16312;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function Wh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=Sn(c[d>>2]|0,19144)|0;f=b+36|0;c[f>>2]=g;d=b+44|0;c[d>>2]=md[c[(c[g>>2]|0)+24>>2]&127](g)|0;f=c[f>>2]|0;a[b+53>>0]=(md[c[(c[f>>2]|0)+28>>2]&127](f)|0)&1;if((c[d>>2]|0)>8)dn(15216);else{i=e;return}}function Xh(a){a=a|0;var b=0;b=i;a=_h(a,0)|0;i=b;return a|0}function Yh(a){a=a|0;var b=0;b=i;a=_h(a,1)|0;i=b;return a|0}function Zh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;j=e+16|0;f=e+8|0;l=e+4|0;k=e;g=b+52|0;m=(a[g>>0]|0)!=0;if((d|0)==-1){if(m){m=-1;i=e;return m|0}m=c[b+48>>2]|0;a[g>>0]=(m|0)!=-1&1;i=e;return m|0}h=b+48|0;a:do if(m){c[l>>2]=c[h>>2];m=c[b+36>>2]|0;k=rd[c[(c[m>>2]|0)+12>>2]&15](m,c[b+40>>2]|0,l,l+4|0,k,j,j+8|0,f)|0;if((k|0)==1|(k|0)==2){m=-1;i=e;return m|0}else if((k|0)==3){a[j>>0]=c[h>>2];c[f>>2]=j+1}b=b+32|0;while(1){k=c[f>>2]|0;if(k>>>0<=j>>>0)break a;m=k+ -1|0;c[f>>2]=m;if((xc(a[m>>0]|0,c[b>>2]|0)|0)==-1){f=-1;break}}i=e;return f|0}while(0);c[h>>2]=d;a[g>>0]=1;m=d;i=e;return m|0}function _h(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=i;i=i+32|0;g=e+16|0;j=e+8|0;m=e+4|0;l=e;n=b+52|0;if(a[n>>0]|0){f=b+48|0;g=c[f>>2]|0;if(!d){v=g;i=e;return v|0}c[f>>2]=-1;a[n>>0]=0;v=g;i=e;return v|0}s=c[b+44>>2]|0;s=(s|0)>1?s:1;a:do if((s|0)>0){p=b+32|0;n=0;while(1){o=Sc(c[p>>2]|0)|0;if((o|0)==-1){h=-1;break}a[g+n>>0]=o;n=n+1|0;if((n|0)>=(s|0))break a}i=e;return h|0}while(0);b:do if(!(a[b+53>>0]|0)){p=b+40|0;q=b+36|0;n=j+4|0;o=b+32|0;while(1){v=c[p>>2]|0;u=v;t=c[u>>2]|0;u=c[u+4>>2]|0;w=c[q>>2]|0;r=g+s|0;v=rd[c[(c[w>>2]|0)+16>>2]&15](w,v,g,r,m,j,n,l)|0;if((v|0)==3){f=14;break}else if((v|0)==2){h=-1;f=22;break}else if((v|0)!=1){k=s;break b}w=c[p>>2]|0;c[w>>2]=t;c[w+4>>2]=u;if((s|0)==8){h=-1;f=22;break}t=Sc(c[o>>2]|0)|0;if((t|0)==-1){h=-1;f=22;break}a[r>>0]=t;s=s+1|0}if((f|0)==14){c[j>>2]=a[g>>0];k=s;break}else if((f|0)==22){i=e;return h|0}}else{c[j>>2]=a[g>>0];k=s}while(0);if(d){w=c[j>>2]|0;c[b+48>>2]=w;i=e;return w|0}d=b+32|0;while(1){if((k|0)<=0)break;k=k+ -1|0;if((xc(a[g+k>>0]|0,c[d>>2]|0)|0)==-1){h=-1;f=22;break}}if((f|0)==22){i=e;return h|0}w=c[j>>2]|0;i=e;return w|0}function $h(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;c[b>>2]=16248;Qn(b+4|0);g=b+8|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[b>>2]=15264;c[b+32>>2]=d;g=c[b+4>>2]|0;j=g+4|0;c[j>>2]=(c[j>>2]|0)+1;d=Sn(g,19136)|0;h=c[j>>2]|0;c[j>>2]=h+ -1;if(!h)jd[c[(c[g>>2]|0)+8>>2]&255](g);c[b+36>>2]=d;c[b+40>>2]=e;a[b+44>>0]=(md[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;i=f;return}function ai(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=16248;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function bi(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16248;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function ci(b,d){b=b|0;d=d|0;var e=0;e=i;md[c[(c[b>>2]|0)+24>>2]&127](b)|0;d=Sn(c[d>>2]|0,19136)|0;c[b+36>>2]=d;a[b+44>>0]=(md[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;i=e;return}function di(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+16|0;g=b+8|0;d=b;e=a+36|0;f=a+40|0;h=g+8|0;j=g;a=a+32|0;while(1){k=c[e>>2]|0;k=wd[c[(c[k>>2]|0)+20>>2]&15](k,c[f>>2]|0,g,h,d)|0;l=(c[d>>2]|0)-j|0;if((Ib(g|0,1,l|0,c[a>>2]|0)|0)!=(l|0)){e=-1;d=5;break}if((k|0)==2){e=-1;d=5;break}else if((k|0)!=1){d=4;break}}if((d|0)==4){l=((Ac(c[a>>2]|0)|0)!=0)<<31>>31;i=b;return l|0}else if((d|0)==5){i=b;return e|0}return 0}function ei(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;if(a[b+44>>0]|0){h=Ib(e|0,1,f|0,c[b+32>>2]|0)|0;i=g;return h|0}if((f|0)>0)h=0;else{h=0;i=g;return h|0}while(1){if((vd[c[(c[b>>2]|0)+52>>2]&63](b,d[e>>0]|0)|0)==-1){f=6;break}h=h+1|0;if((h|0)<(f|0))e=e+1|0;else{f=6;break}}if((f|0)==6){i=g;return h|0}return 0}function fi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=i;i=i+32|0;k=e+16|0;p=e+8|0;j=e+4|0;h=e;f=(d|0)==-1;a:do if(!f){a[p>>0]=d;if(a[b+44>>0]|0){if((Ib(p|0,1,1,c[b+32>>2]|0)|0)==1)break;else d=-1;i=e;return d|0}c[j>>2]=k;l=p+1|0;n=b+36|0;o=b+40|0;g=k+8|0;m=k;b=b+32|0;while(1){q=c[n>>2]|0;q=rd[c[(c[q>>2]|0)+12>>2]&15](q,c[o>>2]|0,p,l,h,k,g,j)|0;if((c[h>>2]|0)==(p|0)){d=-1;g=12;break}if((q|0)==3){g=7;break}r=(q|0)==1;if(q>>>0>=2){d=-1;g=12;break}q=(c[j>>2]|0)-m|0;if((Ib(k|0,1,q|0,c[b>>2]|0)|0)!=(q|0)){d=-1;g=12;break}if(r)p=r?c[h>>2]|0:p;else break a}if((g|0)==7){if((Ib(p|0,1,1,c[b>>2]|0)|0)==1)break;else d=-1;i=e;return d|0}else if((g|0)==12){i=e;return d|0}}while(0);r=f?0:d;i=e;return r|0}function gi(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=16248;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function hi(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16248;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function ii(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;g=Sn(c[d>>2]|0,19136)|0;f=b+36|0;c[f>>2]=g;d=b+44|0;c[d>>2]=md[c[(c[g>>2]|0)+24>>2]&127](g)|0;f=c[f>>2]|0;a[b+53>>0]=(md[c[(c[f>>2]|0)+28>>2]&127](f)|0)&1;if((c[d>>2]|0)>8)dn(15216);else{i=e;return}}function ji(a){a=a|0;var b=0;b=i;a=mi(a,0)|0;i=b;return a|0}function ki(a){a=a|0;var b=0;b=i;a=mi(a,1)|0;i=b;return a|0}function li(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;j=e+16|0;f=e+4|0;l=e+8|0;k=e;g=b+52|0;m=(a[g>>0]|0)!=0;if((d|0)==-1){if(m){m=-1;i=e;return m|0}m=c[b+48>>2]|0;a[g>>0]=(m|0)!=-1&1;i=e;return m|0}h=b+48|0;a:do if(m){a[l>>0]=c[h>>2];m=c[b+36>>2]|0;k=rd[c[(c[m>>2]|0)+12>>2]&15](m,c[b+40>>2]|0,l,l+1|0,k,j,j+8|0,f)|0;if((k|0)==1|(k|0)==2){m=-1;i=e;return m|0}else if((k|0)==3){a[j>>0]=c[h>>2];c[f>>2]=j+1}b=b+32|0;while(1){k=c[f>>2]|0;if(k>>>0<=j>>>0)break a;m=k+ -1|0;c[f>>2]=m;if((xc(a[m>>0]|0,c[b>>2]|0)|0)==-1){f=-1;break}}i=e;return f|0}while(0);c[h>>2]=d;a[g>>0]=1;m=d;i=e;return m|0}function mi(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;f=i;i=i+32|0;h=f+16|0;j=f+8|0;n=f+4|0;m=f;o=b+52|0;if(a[o>>0]|0){g=b+48|0;h=c[g>>2]|0;if(!e){w=h;i=f;return w|0}c[g>>2]=-1;a[o>>0]=0;w=h;i=f;return w|0}p=c[b+44>>2]|0;p=(p|0)>1?p:1;a:do if((p|0)>0){r=b+32|0;o=0;while(1){q=Sc(c[r>>2]|0)|0;if((q|0)==-1){k=-1;break}a[h+o>>0]=q;o=o+1|0;if((o|0)>=(p|0))break a}i=f;return k|0}while(0);b:do if(!(a[b+53>>0]|0)){r=b+40|0;s=b+36|0;o=j+1|0;q=b+32|0;while(1){w=c[r>>2]|0;v=w;u=c[v>>2]|0;v=c[v+4>>2]|0;x=c[s>>2]|0;t=h+p|0;w=rd[c[(c[x>>2]|0)+16>>2]&15](x,w,h,t,n,j,o,m)|0;if((w|0)==2){k=-1;m=23;break}else if((w|0)==3){m=14;break}else if((w|0)!=1){l=p;break b}x=c[r>>2]|0;c[x>>2]=u;c[x+4>>2]=v;if((p|0)==8){k=-1;m=23;break}u=Sc(c[q>>2]|0)|0;if((u|0)==-1){k=-1;m=23;break}a[t>>0]=u;p=p+1|0}if((m|0)==14){a[j>>0]=a[h>>0]|0;l=p;break}else if((m|0)==23){i=f;return k|0}}else{a[j>>0]=a[h>>0]|0;l=p}while(0);do if(!e){e=b+32|0;while(1){if((l|0)<=0){m=21;break}l=l+ -1|0;if((xc(d[h+l>>0]|0,c[e>>2]|0)|0)==-1){k=-1;m=23;break}}if((m|0)==21){g=a[j>>0]|0;break}else if((m|0)==23){i=f;return k|0}}else{g=a[j>>0]|0;c[b+48>>2]=g&255}while(0);x=g&255;i=f;return x|0}function ni(){var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;e=c[q>>2]|0;c[3662]=16248;Qn(14652|0);c[3664]=0;c[3665]=0;c[3666]=0;c[3667]=0;c[3668]=0;c[3669]=0;c[3662]=15376;c[3670]=e;c[3672]=14704;c[3674]=-1;a[14700]=0;j=c[3663]|0;k=j+4|0;c[k>>2]=(c[k>>2]|0)+1;f=Rn(19136)|0;g=c[j+8>>2]|0;if((c[j+12>>2]|0)-g>>2>>>0>f>>>0?(h=c[g+(f<<2)>>2]|0,(h|0)!=0):0){c[3671]=h;c[3673]=md[c[(c[h>>2]|0)+24>>2]&127](h)|0;h=c[3671]|0;a[14701]=(md[c[(c[h>>2]|0)+28>>2]&127](h)|0)&1;if((c[3673]|0)>8)dn(15216);h=c[k>>2]|0;c[k>>2]=h+ -1;if(!h)jd[c[(c[j>>2]|0)+8>>2]&255](j);c[3484]=16380;c[3486]=16400;c[3485]=0;c[3492]=14648;c[3490]=0;c[3491]=0;c[3487]=4098;c[3489]=0;c[3488]=6;h=13976|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(13972|0);c[3504]=0;c[3505]=-1;f=c[r>>2]|0;$h(14752,f,14712|0);c[3506]=16460;c[3507]=16480;c[3513]=14752;c[3511]=0;c[3512]=0;c[3508]=4098;c[3510]=0;c[3509]=6;h=14060|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14056|0);c[3525]=0;c[3526]=-1;g=c[p>>2]|0;$h(14800,g,14720|0);c[3528]=16460;c[3529]=16480;c[3535]=14800;c[3533]=0;c[3534]=0;c[3530]=4098;c[3532]=0;c[3531]=6;h=14148|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14144|0);c[3547]=0;c[3548]=-1;h=c[(c[(c[3528]|0)+ -12>>2]|0)+14136>>2]|0;c[3550]=16460;c[3551]=16480;c[3557]=h;c[3555]=(h|0)==0&1;c[3556]=0;c[3552]=4098;c[3554]=0;c[3553]=6;h=14236|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14232|0);c[3569]=0;c[3570]=-1;c[(c[(c[3484]|0)+ -12>>2]|0)+14008>>2]=14024;j=(c[(c[3528]|0)+ -12>>2]|0)+14116|0;c[j>>2]=c[j>>2]|8192;c[(c[(c[3528]|0)+ -12>>2]|0)+14184>>2]=14024;c[3712]=16312;Qn(14852|0);c[3714]=0;c[3715]=0;c[3716]=0;c[3717]=0;c[3718]=0;c[3719]=0;c[3712]=15120;c[3720]=e;c[3722]=14728;c[3724]=-1;a[14900]=0;j=c[3713]|0;k=j+4|0;c[k>>2]=(c[k>>2]|0)+1;h=Rn(19144)|0;e=c[j+8>>2]|0;if((c[j+12>>2]|0)-e>>2>>>0>h>>>0?(b=c[e+(h<<2)>>2]|0,(b|0)!=0):0){c[3721]=b;c[3723]=md[c[(c[b>>2]|0)+24>>2]&127](b)|0;h=c[3721]|0;a[14901]=(md[c[(c[h>>2]|0)+28>>2]&127](h)|0)&1;if((c[3723]|0)>8)dn(15216);h=c[k>>2]|0;c[k>>2]=h+ -1;if(!h)jd[c[(c[j>>2]|0)+8>>2]&255](j);c[3572]=16420;c[3574]=16440;c[3573]=0;c[3580]=14848;c[3578]=0;c[3579]=0;c[3575]=4098;c[3577]=0;c[3576]=6;h=14328|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14324|0);c[3592]=0;c[3593]=-1;Nh(14904,f,14736|0);c[3594]=16500;c[3595]=16520;c[3601]=14904;c[3599]=0;c[3600]=0;c[3596]=4098;c[3598]=0;c[3597]=6;h=14412|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14408|0);c[3613]=0;c[3614]=-1;Nh(14952,g,14744|0);c[3616]=16500;c[3617]=16520;c[3623]=14952;c[3621]=0;c[3622]=0;c[3618]=4098;c[3620]=0;c[3619]=6;h=14500|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14496|0);c[3635]=0;c[3636]=-1;h=c[(c[(c[3616]|0)+ -12>>2]|0)+14488>>2]|0;c[3638]=16500;c[3639]=16520;c[3645]=h;c[3643]=(h|0)==0&1;c[3644]=0;c[3640]=4098;c[3642]=0;c[3641]=6;h=14588|0;j=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Qn(14584|0);c[3657]=0;c[3658]=-1;c[(c[(c[3572]|0)+ -12>>2]|0)+14360>>2]=14376;k=(c[(c[3616]|0)+ -12>>2]|0)+14468|0;c[k>>2]=c[k>>2]|8192;c[(c[(c[3616]|0)+ -12>>2]|0)+14536>>2]=14376;eb(242,14640,o|0)|0;i=d;return}k=Wb(4)|0;c[k>>2]=27744;Zc(k|0,27816,228)}k=Wb(4)|0;c[k>>2]=27744;Zc(k|0,27816,228)}function oi(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=d;c[a+4>>2]=b;return}function pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;od[c[(c[a>>2]|0)+12>>2]&15](f,a,b);if((c[f+4>>2]|0)!=(c[d+4>>2]|0)){a=0;i=e;return a|0}a=(c[f>>2]|0)==(c[d>>2]|0);i=e;return a|0}function qi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;if((c[b+4>>2]|0)!=(a|0)){a=0;i=e;return a|0}a=(c[b>>2]|0)==(d|0);i=e;return a|0}function ri(a){a=a|0;return 15568}function si(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;d=i;if((e|0)>256){e=$p(48)|0;c[b+8>>2]=e;c[b>>2]=49;c[b+4>>2]=34;g=e+0|0;f=15576|0;b=g+34|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(b|0));a[e+34>>0]=0;i=d;return}else{g=bd(e|0)|0;Gi(b,g,mr(g|0)|0);i=d;return}}function ti(a){a=a|0;return}function ui(a){a=a|0;return 15632}function vi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;d=i;if((e|0)>256){e=$p(48)|0;c[b+8>>2]=e;c[b>>2]=49;c[b+4>>2]=33;g=e+0|0;f=15640|0;b=g+33|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(b|0));a[e+33>>0]=0;i=d;return}else{g=bd(e|0)|0;Gi(b,g,mr(g|0)|0);i=d;return}}function wi(b,d,e){b=b|0;d=d|0;e=e|0;d=i;if((e|0)>256){if((a[15688]|0)==0?(Fa(15688)|0)!=0:0){c[3920]=15952;Vc(15688)}c[b>>2]=e;c[b+4>>2]=15680;i=d;return}else{if((a[15624]|0)==0?(Fa(15624)|0)!=0:0){c[3904]=15856;Vc(15624)}c[b>>2]=e;c[b+4>>2]=15616;i=d;return}}function xi(a){a=a|0;return}function yi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+48|0;k=j+24|0;h=j+12|0;g=j;Gi(g,f,mr(f|0)|0);if(d){f=a[g>>0]|0;if(!(f&1))f=(f&255)>>>1;else f=c[g+4>>2]|0;if(f)Ni(g,15696,2);od[c[(c[e>>2]|0)+24>>2]&15](k,e,d);l=a[k>>0]|0;if(!(l&1)){f=k+1|0;l=(l&255)>>>1}else{f=c[k+8>>2]|0;l=c[k+4>>2]|0}Ni(g,f,l);if(a[k>>0]&1)Uq(c[k+8>>2]|0)}c[h+0>>2]=c[g+0>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[b>>2]=27520;f=(a[h>>0]&1)==0;if(f)k=h+1|0;else k=c[h+8>>2]|0;m=mr(k|0)|0;l=$p(m+13|0)|0;c[l>>2]=m;c[l+4>>2]=m;c[l+8>>2]=0;l=l+12|0;nr(l|0,k|0,m+1|0)|0;c[b+4>>2]=l;if(!f)Uq(c[h+8>>2]|0);if(!(a[g>>0]&1)){c[b>>2]=15712;m=b+8|0;l=e;f=m;c[f>>2]=d;m=m+4|0;c[m>>2]=l;i=j;return}Uq(c[g+8>>2]|0);c[b>>2]=15712;m=b+8|0;l=e;f=m;c[f>>2]=d;m=m+4|0;c[m>>2]=l;i=j;return}function zi(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function Ai(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function Bi(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ci(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Di(a){a=a|0;var b=0;b=i;ac(a|0)|0;i=b;return}function Ei(){var b=0,d=0,e=0,f=0,g=0,h=0;f=Wb(8)|0;c[f>>2]=27496;d=$p(25)|0;e=f+4|0;c[d>>2]=12;c[d+4>>2]=12;c[d+8>>2]=0;d=d+12|0;h=d+0|0;g=16224|0;b=h+13|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(b|0));c[e>>2]=d;c[f>>2]=27576;Zc(f|0,27616,222)}function Fi(b,d){b=b|0;d=d|0;var e=0;e=i;if(!(a[d>>0]&1)){c[b+0>>2]=c[d+0>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];i=e;return}else{Gi(b,c[d+8>>2]|0,c[d+4>>2]|0);i=e;return}}function Gi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(e>>>0>4294967279)Ei();if(e>>>0<11){a[b>>0]=e<<1;b=b+1|0}else{h=e+16&-16;g=$p(h)|0;c[b+8>>2]=g;c[b>>2]=h|1;c[b+4>>2]=e;b=g}nr(b|0,d|0,e|0)|0;a[b+e>>0]=0;i=f;return}function Hi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;h=d;g=e-h|0;if(g>>>0>4294967279)Ei();if(g>>>0<11){a[b>>0]=g<<1;g=b+1|0}else{k=g+16&-16;j=$p(k)|0;c[b+8>>2]=j;c[b>>2]=k|1;c[b+4>>2]=g;g=j}if((d|0)==(e|0)){k=g;a[k>>0]=0;i=f;return}h=e+(0-h)|0;b=g;while(1){a[b>>0]=a[d>>0]|0;d=d+1|0;if((d|0)==(e|0))break;else b=b+1|0}k=g+h|0;a[k>>0]=0;i=f;return}function Ii(b){b=b|0;var d=0;d=i;if(!(a[b>>0]&1)){i=d;return}Uq(c[b+8>>2]|0);i=d;return}function Ji(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;h=a[b>>0]|0;if(!(h&1))g=10;else{h=c[b>>2]|0;g=(h&-2)+ -1|0;h=h&255}j=(h&1)==0;if(g>>>0>>0){if(j)h=(h&255)>>>1;else h=c[b+4>>2]|0;Oi(b,g,e-g|0,h,0,h,e,d);i=f;return}if(j)g=b+1|0;else g=c[b+8>>2]|0;pr(g|0,d|0,e|0)|0;a[g+e>>0]=0;if(!(a[b>>0]&1)){a[b>>0]=e<<1;i=f;return}else{c[b+4>>2]=e;i=f;return}}function Ki(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;g=a[b>>0]|0;j=(g&1)==0;if(j)h=(g&255)>>>1;else h=c[b+4>>2]|0;if(h>>>0>=d>>>0)if(j){a[b+d+1>>0]=0;a[b>>0]=d<<1;i=e;return}else{a[(c[b+8>>2]|0)+d>>0]=0;c[b+4>>2]=d;i=e;return}f=d-h|0;if((h|0)==(d|0)){i=e;return}if(j){h=g;d=10}else{d=c[b>>2]|0;h=d&255;d=(d&-2)+ -1|0}if(!(h&1))g=(h&255)>>>1;else g=c[b+4>>2]|0;if((d-g|0)>>>0>>0){Pi(b,d,f-d+g|0,g,g,0);h=a[b>>0]|0}if(!(h&1))d=b+1|0;else d=c[b+8>>2]|0;qr(d+g|0,0,f|0)|0;f=g+f|0;if(!(a[b>>0]&1))a[b>>0]=f<<1;else c[b+4>>2]=f;a[d+f>>0]=0;i=e;return}function Li(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;g=a[b>>0]|0;if(!(g&1))j=10;else{g=c[b>>2]|0;j=(g&-2)+ -1|0;g=g&255}h=(g&1)==0;if(h)e=(g&255)>>>1;else e=c[b+4>>2]|0;if(e>>>0<11)f=10;else f=(e+16&-16)+ -1|0;if((f|0)==(j|0)){i=d;return}do if((f|0)==10){k=b+1|0;j=c[b+8>>2]|0;if(h){nr(k|0,j|0,((g&255)>>>1)+1|0)|0;Uq(j);h=20}else{g=0;h=18}}else{k=f+1|0;if(f>>>0>j>>>0)k=$p(k)|0;else k=$p(k)|0;if(h){nr(k|0,b+1|0,((g&255)>>>1)+1|0)|0;h=19;break}else{g=1;j=c[b+8>>2]|0;h=18;break}}while(0);if((h|0)==18){nr(k|0,j|0,(c[b+4>>2]|0)+1|0)|0;Uq(j);if(g)h=19;else h=20}if((h|0)==19){c[b>>2]=f+1|1;c[b+4>>2]=e;c[b+8>>2]=k;i=d;return}else if((h|0)==20){a[b>>0]=e<<1;i=d;return}}function Mi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;g=a[b>>0]|0;f=(g&1)!=0;if(f){h=(c[b>>2]&-2)+ -1|0;g=c[b+4>>2]|0}else{h=10;g=(g&255)>>>1}if((g|0)==(h|0)){Pi(b,h,1,h,h,0);if(!(a[b>>0]&1))f=7;else f=8}else if(f)f=8;else f=7;if((f|0)==7){a[b>>0]=(g<<1)+2;f=b+1|0;h=g+1|0;g=f+g|0;a[g>>0]=d;h=f+h|0;a[h>>0]=0;i=e;return}else if((f|0)==8){f=c[b+8>>2]|0;h=g+1|0;c[b+4>>2]=h;g=f+g|0;a[g>>0]=d;h=f+h|0;a[h>>0]=0;i=e;return}}function Ni(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;j=a[b>>0]|0;if(!(j&1))g=10;else{j=c[b>>2]|0;g=(j&-2)+ -1|0;j=j&255}h=(j&1)==0;if(h)j=(j&255)>>>1;else j=c[b+4>>2]|0;if((g-j|0)>>>0>>0){Oi(b,g,e-g+j|0,j,j,0,e,d);i=f;return}if(!e){i=f;return}if(h)g=b+1|0;else g=c[b+8>>2]|0;nr(g+j|0,d|0,e|0)|0;e=j+e|0;if(!(a[b>>0]&1))a[b>>0]=e<<1;else c[b+4>>2]=e;a[g+e>>0]=0;i=f;return}function Oi(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0;l=i;if((-18-d|0)>>>0>>0)Ei();if(!(a[b>>0]&1))m=b+1|0;else m=c[b+8>>2]|0;if(d>>>0<2147483623){e=e+d|0;n=d<<1;e=e>>>0>>0?n:e;if(e>>>0<11)e=11;else e=e+16&-16}else e=-17;n=$p(e)|0;if(g)nr(n|0,m|0,g|0)|0;if(j)nr(n+g|0,k|0,j|0)|0;k=f-h|0;if((k|0)!=(g|0))nr(n+(j+g)|0,m+(h+g)|0,k-g|0)|0;if((d|0)==10){f=b+8|0;c[f>>2]=n;e=e|1;c[b>>2]=e;e=k+j|0;f=b+4|0;c[f>>2]=e;n=n+e|0;a[n>>0]=0;i=l;return}Uq(m);f=b+8|0;c[f>>2]=n;e=e|1;c[b>>2]=e;e=k+j|0;f=b+4|0;c[f>>2]=e;n=n+e|0;a[n>>0]=0;i=l;return}function Pi(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0;j=i;if((-17-d|0)>>>0>>0)Ei();if(!(a[b>>0]&1))k=b+1|0;else k=c[b+8>>2]|0;if(d>>>0<2147483623){e=e+d|0;l=d<<1;e=e>>>0>>0?l:e;if(e>>>0<11)l=11;else l=e+16&-16}else l=-17;e=$p(l)|0;if(g)nr(e|0,k|0,g|0)|0;if((f|0)!=(g|0))nr(e+(h+g)|0,k+g|0,f-g|0)|0;if((d|0)==10){k=b+8|0;c[k>>2]=e;l=l|1;c[b>>2]=l;i=j;return}Uq(k);k=b+8|0;c[k>>2]=e;l=l|1;c[b>>2]=l;i=j;return}function Qi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;g=mr(d|0)|0;h=a[b>>0]|0;j=(h&1)==0;if(j)h=(h&255)>>>1;else h=c[b+4>>2]|0;if((g|0)==-1){b=Wb(8)|0;c[b>>2]=27496;d=$p(25)|0;h=b+4|0;c[d>>2]=12;c[d+4>>2]=12;c[d+8>>2]=0;d=d+12|0;g=d+0|0;e=16224|0;f=g+13|0;do{a[g>>0]=a[e>>0]|0;g=g+1|0;e=e+1|0}while((g|0)<(f|0));c[h>>2]=d;c[b>>2]=27640;Zc(b|0,27680,222)}if(j)k=b+1|0;else k=c[b+8>>2]|0;b=h>>>0>g>>>0;j=b?g:h;if(!j){l=h>>>0>>0;m=b&1;m=l?-1:m;i=f;return m|0}while(1){l=a[k>>0]|0;m=a[d>>0]|0;if(l<<24>>24!=m<<24>>24)break;j=j+ -1|0;if(!j){e=15;break}else{k=k+1|0;d=d+1|0}}if((e|0)==15){l=h>>>0>>0;m=b&1;m=l?-1:m;i=f;return m|0}if(l<<24>>24==m<<24>>24){l=h>>>0>>0;m=b&1;m=l?-1:m;i=f;return m|0}else{i=f;return(l&255)-(m&255)|0}return 0}function Ri(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(e>>>0>1073741807)Ei();if(e>>>0<2){a[b>>0]=e<<1;b=b+4|0}else{g=e+4&-4;h=$p(g<<2)|0;c[b+8>>2]=h;c[b>>2]=g|1;c[b+4>>2]=e;b=h}if(!e){h=b+(e<<2)|0;c[h>>2]=0;i=f;return}else{g=e;h=b}while(1){g=g+ -1|0;c[h>>2]=c[d>>2];if(!g)break;else{d=d+4|0;h=h+4|0}}h=b+(e<<2)|0;c[h>>2]=0;i=f;return}function Si(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(d>>>0>1073741807)Ei();if(d>>>0<2){a[b>>0]=d<<1;b=b+4|0}else{g=d+4&-4;h=$p(g<<2)|0;c[b+8>>2]=h;c[b>>2]=g|1;c[b+4>>2]=d;b=h}if(!d){h=b+(d<<2)|0;c[h>>2]=0;i=f;return}else{h=d;g=b}while(1){h=h+ -1|0;c[g>>2]=e;if(!h)break;else g=g+4|0}h=b+(d<<2)|0;c[h>>2]=0;i=f;return}function Ti(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;g=d;h=e-g|0;j=h>>2;if(j>>>0>1073741807)Ei();if(j>>>0<2){a[b>>0]=h>>>1;h=b+4|0}else{k=j+4&-4;h=$p(k<<2)|0;c[b+8>>2]=h;c[b>>2]=k|1;c[b+4>>2]=j}if((d|0)==(e|0)){k=h;c[k>>2]=0;i=f;return}g=((e+ -4+(0-g)|0)>>>2)+1|0;j=h;while(1){c[j>>2]=c[d>>2];d=d+4|0;if((d|0)==(e|0))break;else j=j+4|0}k=h+(g<<2)|0;c[k>>2]=0;i=f;return}function Ui(b){b=b|0;var d=0;d=i;if(!(a[b>>0]&1)){i=d;return}Uq(c[b+8>>2]|0);i=d;return}function Vi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;f=d;while(1)if(!(c[f>>2]|0))break;else f=f+4|0;j=d;h=f-j|0;f=h>>2;k=a[b>>0]|0;if(!(k&1))g=1;else{k=c[b>>2]|0;g=(k&-2)+ -1|0;k=k&255}if(g>>>0>=f>>>0){if(!(k&1))g=b+4|0;else g=c[b+8>>2]|0;k=(f|0)==0;if(g-j>>2>>>0>>0){if(!k){j=f;do{j=j+ -1|0;c[g+(j<<2)>>2]=c[d+(j<<2)>>2]}while((j|0)!=0)}}else if(!k){j=g;k=f;while(1){k=k+ -1|0;c[j>>2]=c[d>>2];if(!k)break;else{d=d+4|0;j=j+4|0}}}c[g+(f<<2)>>2]=0;if(!(a[b>>0]&1)){a[b>>0]=h>>>1;i=e;return}else{c[b+4>>2]=f;i=e;return}}if((1073741806-g|0)>>>0<(f-g|0)>>>0)Ei();if(!(k&1))h=b+4|0;else h=c[b+8>>2]|0;if(g>>>0<536870887){j=g<<1;j=f>>>0>>0?j:f;if(j>>>0<2)k=2;else k=j+4&-4}else k=1073741807;j=$p(k<<2)|0;if(f){l=f;m=j;while(1){l=l+ -1|0;c[m>>2]=c[d>>2];if(!l)break;else{d=d+4|0;m=m+4|0}}}if((g|0)!=1)Uq(h);c[b+8>>2]=j;c[b>>2]=k|1;c[b+4>>2]=f;c[j+(f<<2)>>2]=0;i=e;return}function Wi(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;d=i;j=a[b>>0]|0;if(!(j&1))g=1;else{j=c[b>>2]|0;g=(j&-2)+ -1|0;j=j&255}h=(j&1)==0;if(h)e=(j&255)>>>1;else e=c[b+4>>2]|0;if(e>>>0<2)f=1;else f=(e+4&-4)+ -1|0;if((f|0)==(g|0)){i=d;return}do if((f|0)==1){g=b+4|0;l=c[b+8>>2]|0;if(h){k=0;m=1;h=18}else{k=0;m=1;h=17}}else{k=(f<<2)+4|0;if(f>>>0>g>>>0)g=$p(k)|0;else g=$p(k)|0;if(h){k=1;l=b+4|0;m=0;h=18;break}else{k=1;l=c[b+8>>2]|0;m=1;h=17;break}}while(0);if((h|0)==17)j=c[b+4>>2]|0;else if((h|0)==18)j=(j&255)>>>1;j=j+1|0;if(j){n=l;h=g;while(1){j=j+ -1|0;c[h>>2]=c[n>>2];if(!j)break;else{n=n+4|0;h=h+4|0}}}if(m)Uq(l);if(k){c[b>>2]=f+1|1;c[b+4>>2]=e;c[b+8>>2]=g;i=d;return}else{a[b>>0]=e<<1;i=d;return}}function Xi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;g=a[b>>0]|0;f=(g&1)!=0;if(f){h=(c[b>>2]&-2)+ -1|0;g=c[b+4>>2]|0}else{h=1;g=(g&255)>>>1}if((g|0)==(h|0)){Yi(b,h,1,h,h,0,0);if(!(a[b>>0]&1))f=7;else f=8}else if(f)f=8;else f=7;if((f|0)==7){a[b>>0]=(g<<1)+2;f=b+4|0;h=g+1|0;g=f+(g<<2)|0;c[g>>2]=d;h=f+(h<<2)|0;c[h>>2]=0;i=e;return}else if((f|0)==8){f=c[b+8>>2]|0;h=g+1|0;c[b+4>>2]=h;g=f+(g<<2)|0;c[g>>2]=d;h=f+(h<<2)|0;c[h>>2]=0;i=e;return}}function Yi(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;k=i;if((1073741807-d|0)>>>0>>0)Ei();if(!(a[b>>0]&1))l=b+4|0;else l=c[b+8>>2]|0;if(d>>>0<536870887){e=e+d|0;p=d<<1;e=e>>>0

        >>0?p:e;if(e>>>0<2)e=2;else e=e+4&-4}else e=1073741807;m=$p(e<<2)|0;if(g){n=g;o=l;p=m;while(1){n=n+ -1|0;c[p>>2]=c[o>>2];if(!n)break;else{o=o+4|0;p=p+4|0}}}f=f-h|0;if((f|0)!=(g|0)){f=f-g|0;h=l+(h+g<<2)|0;j=m+(j+g<<2)|0;while(1){f=f+ -1|0;c[j>>2]=c[h>>2];if(!f)break;else{h=h+4|0;j=j+4|0}}}if((d|0)==1){p=b+8|0;c[p>>2]=m;p=e|1;c[b>>2]=p;i=k;return}Uq(l);p=b+8|0;c[p>>2]=m;p=e|1;c[b>>2]=p;i=k;return}function Zi(b,d){b=b|0;d=d|0;var e=0;e=(c[b+24>>2]|0)==0;if(e)c[b+16>>2]=d|1;else c[b+16>>2]=d;if(!((e&1|d)&c[b+20>>2]))return;d=Wb(16)|0;if((a[16592]|0)==0?(Fa(16592)|0)!=0:0){c[4146]=17368;Vc(16592)}yi(d,1,16584,16640);c[d>>2]=16608;Zc(d|0,16688,155)}function _i(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16632;f=c[a+40>>2]|0;if(f){d=a+32|0;e=a+36|0;do{f=f+ -1|0;od[c[(c[d>>2]|0)+(f<<2)>>2]&15](0,a,c[(c[e>>2]|0)+(f<<2)>>2]|0)}while((f|0)!=0)}d=c[a+28>>2]|0;e=d+4|0;f=c[e>>2]|0;c[e>>2]=f+ -1;if(!f)jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(c[a+32>>2]|0);Uq(c[a+36>>2]|0);Uq(c[a+48>>2]|0);Uq(c[a+60>>2]|0);i=b;return}function $i(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16248;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function aj(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=16248;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function bj(a,b){a=a|0;b=b|0;return}function cj(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function dj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function ej(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function fj(a){a=a|0;return 0}function gj(a){a=a|0;return 0}function hj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;if((e|0)<=0){k=0;i=f;return k|0}g=b+12|0;h=b+16|0;j=0;while(1){k=c[g>>2]|0;if(k>>>0<(c[h>>2]|0)>>>0){c[g>>2]=k+1;k=a[k>>0]|0}else{k=md[c[(c[b>>2]|0)+40>>2]&127](b)|0;if((k|0)==-1){e=8;break}k=k&255}a[d>>0]=k;j=j+1|0;if((j|0)<(e|0))d=d+1|0;else{e=8;break}}if((e|0)==8){i=f;return j|0}return 0}function ij(a){a=a|0;return-1}function jj(a){a=a|0;var b=0,e=0;b=i;if((md[c[(c[a>>2]|0)+36>>2]&127](a)|0)==-1){a=-1;i=b;return a|0}e=a+12|0;a=c[e>>2]|0;c[e>>2]=a+1;a=d[a>>0]|0;i=b;return a|0}function kj(a,b){a=a|0;b=b|0;return-1}function lj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;if((f|0)<=0){l=0;i=g;return l|0}j=b+24|0;h=b+28|0;k=0;while(1){l=c[j>>2]|0;if(l>>>0>=(c[h>>2]|0)>>>0){if((vd[c[(c[b>>2]|0)+52>>2]&63](b,d[e>>0]|0)|0)==-1){h=7;break}}else{m=a[e>>0]|0;c[j>>2]=l+1;a[l>>0]=m}k=k+1|0;if((k|0)<(f|0))e=e+1|0;else{h=7;break}}if((h|0)==7){i=g;return k|0}return 0}function mj(a,b){a=a|0;b=b|0;return-1}function nj(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=16312;d=c[a+4>>2]|0;f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){Uq(a);i=b;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);Uq(a);i=b;return}function oj(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=16312;a=c[a+4>>2]|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function pj(a,b){a=a|0;b=b|0;return}function qj(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function rj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=a;c[g>>2]=0;c[g+4>>2]=0;g=a+8|0;c[g>>2]=-1;c[g+4>>2]=-1;return}function sj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a;c[e>>2]=0;c[e+4>>2]=0;e=a+8|0;c[e>>2]=-1;c[e+4>>2]=-1;return}function tj(a){a=a|0;return 0}function uj(a){a=a|0;return 0}function vj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;if((d|0)<=0){j=0;i=e;return j|0}g=a+12|0;f=a+16|0;h=0;while(1){j=c[g>>2]|0;if(j>>>0>=(c[f>>2]|0)>>>0){j=md[c[(c[a>>2]|0)+40>>2]&127](a)|0;if((j|0)==-1){a=8;break}}else{c[g>>2]=j+4;j=c[j>>2]|0}c[b>>2]=j;h=h+1|0;if((h|0)>=(d|0)){a=8;break}b=b+4|0}if((a|0)==8){i=e;return h|0}return 0}function wj(a){a=a|0;return-1}function xj(a){a=a|0;var b=0,d=0;b=i;if((md[c[(c[a>>2]|0)+36>>2]&127](a)|0)==-1){a=-1;i=b;return a|0}d=a+12|0;a=c[d>>2]|0;c[d>>2]=a+4;a=c[a>>2]|0;i=b;return a|0}function yj(a,b){a=a|0;b=b|0;return-1}function zj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;if((d|0)<=0){j=0;i=e;return j|0}g=a+24|0;f=a+28|0;h=0;while(1){j=c[g>>2]|0;if(j>>>0>=(c[f>>2]|0)>>>0){if((vd[c[(c[a>>2]|0)+52>>2]&63](a,c[b>>2]|0)|0)==-1){f=8;break}}else{k=c[b>>2]|0;c[g>>2]=j+4;c[j>>2]=k}h=h+1|0;if((h|0)>=(d|0)){f=8;break}b=b+4|0}if((f|0)==8){i=e;return h|0}return 0}function Aj(a,b){a=a|0;b=b|0;return-1}function Bj(a){a=a|0;var b=0;b=i;_i(a+8|0);Uq(a);i=b;return}function Cj(a){a=a|0;var b=0;b=i;_i(a+8|0);i=b;return}function Dj(a){a=a|0;var b=0,d=0;b=i;d=c[(c[a>>2]|0)+ -12>>2]|0;_i(a+(d+8)|0);Uq(a+d|0);i=b;return}function Ej(a){a=a|0;var b=0;b=i;_i(a+((c[(c[a>>2]|0)+ -12>>2]|0)+8)|0);i=b;return}function Fj(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d;if(!(c[b+((c[(c[b>>2]|0)+ -12>>2]|0)+24)>>2]|0)){i=d;return}Pj(e,b);if((a[e>>0]|0)!=0?(f=c[b+((c[(c[b>>2]|0)+ -12>>2]|0)+24)>>2]|0,(md[c[(c[f>>2]|0)+24>>2]&127](f)|0)==-1):0){f=c[(c[b>>2]|0)+ -12>>2]|0;Zi(b+f|0,c[b+(f+16)>>2]|1)}Qj(e);i=d;return}function Gj(a){a=a|0;var b=0;b=i;_i(a+8|0);Uq(a);i=b;return}function Hj(a){a=a|0;var b=0;b=i;_i(a+8|0);i=b;return}function Ij(a){a=a|0;var b=0,d=0;b=i;d=c[(c[a>>2]|0)+ -12>>2]|0;_i(a+(d+8)|0);Uq(a+d|0);i=b;return}function Jj(a){a=a|0;var b=0;b=i;_i(a+((c[(c[a>>2]|0)+ -12>>2]|0)+8)|0);i=b;return}function Kj(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d;f=c[(c[b>>2]|0)+ -12>>2]|0;if(!(c[b+(f+24)>>2]|0)){i=d;return}a[e>>0]=0;c[e+4>>2]=b;if(!(c[b+(f+16)>>2]|0)){f=c[b+(f+72)>>2]|0;if(f)Kj(f);a[e>>0]=1;f=c[b+((c[(c[b>>2]|0)+ -12>>2]|0)+24)>>2]|0;if((md[c[(c[f>>2]|0)+24>>2]&127](f)|0)==-1){f=c[(c[b>>2]|0)+ -12>>2]|0;Zi(b+f|0,c[b+(f+16)>>2]|1)}}Wj(e);i=d;return}function Lj(a){a=a|0;var b=0;b=i;_i(a+4|0);Uq(a);i=b;return}function Mj(a){a=a|0;var b=0;b=i;_i(a+4|0);i=b;return}function Nj(a){a=a|0;var b=0,d=0;b=i;d=c[(c[a>>2]|0)+ -12>>2]|0;_i(a+(d+4)|0);Uq(a+d|0);i=b;return}function Oj(a){a=a|0;var b=0;b=i;_i(a+((c[(c[a>>2]|0)+ -12>>2]|0)+4)|0);i=b;return}function Pj(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;a[b>>0]=0;c[b+4>>2]=d;f=c[(c[d>>2]|0)+ -12>>2]|0;if(c[d+(f+16)>>2]|0){i=e;return}f=c[d+(f+72)>>2]|0;if(f)Fj(f);a[b>>0]=1;i=e;return}function Qj(a){a=a|0;var b=0,d=0,e=0;b=i;a=a+4|0;d=c[a>>2]|0;e=c[(c[d>>2]|0)+ -12>>2]|0;if(!(c[d+(e+24)>>2]|0)){i=b;return}if(c[d+(e+16)>>2]|0){i=b;return}if(!(c[d+(e+4)>>2]&8192)){i=b;return}if(Ia()|0){i=b;return}e=c[a>>2]|0;e=c[e+((c[(c[e>>2]|0)+ -12>>2]|0)+24)>>2]|0;if((md[c[(c[e>>2]|0)+24>>2]&127](e)|0)!=-1){i=b;return}d=c[a>>2]|0;e=c[(c[d>>2]|0)+ -12>>2]|0;Zi(d+e|0,c[d+(e+16)>>2]|1);i=b;return}function Rj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;i=i+32|0;k=h+20|0;e=h+16|0;g=h+8|0;f=h;Pj(g,b);if(a[g>>0]|0){l=c[b+((c[(c[b>>2]|0)+ -12>>2]|0)+28)>>2]|0;o=l+4|0;c[o>>2]=(c[o>>2]|0)+1;j=Sn(l,17776)|0;p=c[o>>2]|0;c[o>>2]=p+ -1;if(!p)jd[c[(c[l>>2]|0)+8>>2]&255](l);o=c[(c[b>>2]|0)+ -12>>2]|0;l=c[b+(o+24)>>2]|0;m=b+o|0;n=b+(o+76)|0;p=c[n>>2]|0;if((p|0)==-1){p=c[b+(o+28)>>2]|0;r=p+4|0;c[r>>2]=(c[r>>2]|0)+1;o=Sn(p,19072)|0;o=vd[c[(c[o>>2]|0)+28>>2]&63](o,32)|0;q=c[r>>2]|0;c[r>>2]=q+ -1;if(!q)jd[c[(c[p>>2]|0)+8>>2]&255](p);p=o<<24>>24;c[n>>2]=p}r=p&255;q=c[(c[j>>2]|0)+16>>2]|0;c[e>>2]=l;c[k+0>>2]=c[e+0>>2];ud[q&31](f,j,k,m,r,d);if(!(c[f>>2]|0)){r=c[(c[b>>2]|0)+ -12>>2]|0;Zi(b+r|0,c[b+(r+16)>>2]|5)}}Qj(g);i=h;return b|0}function Sj(a){a=a|0;var b=0;b=i;_i(a+4|0);Uq(a);i=b;return}function Tj(a){a=a|0;var b=0;b=i;_i(a+4|0);i=b;return}function Uj(a){a=a|0;var b=0,d=0;b=i;d=c[(c[a>>2]|0)+ -12>>2]|0;_i(a+(d+4)|0);Uq(a+d|0);i=b;return}function Vj(a){a=a|0;var b=0;b=i;_i(a+((c[(c[a>>2]|0)+ -12>>2]|0)+4)|0);i=b;return}function Wj(a){a=a|0;var b=0,d=0,e=0;b=i;a=a+4|0;d=c[a>>2]|0;e=c[(c[d>>2]|0)+ -12>>2]|0;if(!(c[d+(e+24)>>2]|0)){i=b;return}if(c[d+(e+16)>>2]|0){i=b;return}if(!(c[d+(e+4)>>2]&8192)){i=b;return}if(Ia()|0){i=b;return}e=c[a>>2]|0;e=c[e+((c[(c[e>>2]|0)+ -12>>2]|0)+24)>>2]|0;if((md[c[(c[e>>2]|0)+24>>2]&127](e)|0)!=-1){i=b;return}d=c[a>>2]|0;e=c[(c[d>>2]|0)+ -12>>2]|0;Zi(d+e|0,c[d+(e+16)>>2]|1);i=b;return}function Xj(a){a=a|0;return 16528}function Yj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;d=i;if((e|0)!=1&(e|0)<257){g=bd(e|0)|0;Gi(b,g,mr(g|0)|0);i=d;return}else{e=$p(48)|0;c[b+8>>2]=e;c[b>>2]=49;c[b+4>>2]=35;g=e+0|0;f=16544|0;b=g+35|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(b|0));a[e+35>>0]=0;i=d;return}}function Zj(a){a=a|0;return}function _j(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function $j(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function ak(a){a=a|0;var b=0;b=i;_i(a);Uq(a);i=b;return}function bk(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function ck(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function dk(a){a=a|0;return}function ek(a){a=a|0;return}function fk(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;b=i;a:do if((e|0)==(f|0))g=6;else while(1){if((c|0)==(d|0)){d=-1;break a}h=a[c>>0]|0;j=a[e>>0]|0;if(h<<24>>24>24){d=-1;break a}if(j<<24>>24>24){d=1;break a}c=c+1|0;e=e+1|0;if((e|0)==(f|0)){g=6;break}}while(0);if((g|0)==6)d=(c|0)!=(d|0)&1;i=b;return d|0}function gk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=i;Hi(a,c,d);i=b;return}function hk(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;b=i;if((c|0)==(d|0)){e=0;i=b;return e|0}else e=0;do{e=(a[c>>0]|0)+(e<<4)|0;f=e&-268435456;e=(f>>>24|f)^e;c=c+1|0}while((c|0)!=(d|0));i=b;return e|0}function ik(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function jk(a){a=a|0;return}function kk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;a=i;a:do if((e|0)==(f|0))g=6;else while(1){if((b|0)==(d|0)){d=-1;break a}h=c[b>>2]|0;j=c[e>>2]|0;if((h|0)<(j|0)){d=-1;break a}if((j|0)<(h|0)){d=1;break a}b=b+4|0;e=e+4|0;if((e|0)==(f|0)){g=6;break}}while(0);if((g|0)==6)d=(b|0)!=(d|0)&1;i=a;return d|0}function lk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=i;Ti(a,c,d);i=b;return}function mk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=i;if((b|0)==(d|0)){e=0;i=a;return e|0}else e=0;do{e=(c[b>>2]|0)+(e<<4)|0;f=e&-268435456;e=(f>>>24|f)^e;b=b+4|0}while((b|0)!=(d|0));i=a;return e|0}function nk(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function ok(a){a=a|0;return}function pk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;i=i+64|0;o=k+8|0;p=k+40|0;m=k+44|0;n=k+48|0;r=k+4|0;q=k;l=k+16|0;if(!(c[g+4>>2]&1)){c[m>>2]=-1;l=c[(c[d>>2]|0)+16>>2]|0;c[r>>2]=c[e>>2];c[q>>2]=c[f>>2];c[p+0>>2]=c[r+0>>2];c[o+0>>2]=c[q+0>>2];gd[l&63](n,d,p,o,g,h,m);l=c[n>>2]|0;c[e>>2]=l;e=c[m>>2]|0;if(!e)a[j>>0]=0;else if((e|0)==1)a[j>>0]=1;else{a[j>>0]=1;c[h>>2]=4}c[b>>2]=l;i=k;return}d=g+28|0;n=c[d>>2]|0;m=n+4|0;c[m>>2]=(c[m>>2]|0)+1;m=Sn(n,19072)|0;r=n+4|0;g=c[r>>2]|0;c[r>>2]=g+ -1;if(!g)jd[c[(c[n>>2]|0)+8>>2]&255](n);n=c[d>>2]|0;d=n+4|0;c[d>>2]=(c[d>>2]|0)+1;d=Sn(n,19216)|0;r=n+4|0;g=c[r>>2]|0;c[r>>2]=g+ -1;if(!g)jd[c[(c[n>>2]|0)+8>>2]&255](n);kd[c[(c[d>>2]|0)+24>>2]&63](l,d);g=l+12|0;kd[c[(c[d>>2]|0)+28>>2]&63](g,d);a[j>>0]=(qk(e,c[f>>2]|0,l,l+24|0,m,h,1)|0)==(l|0)&1;c[b>>2]=c[e>>2];if(a[g>>0]&1)Uq(c[l+20>>2]|0);if(!(a[l>>0]&1)){i=k;return}Uq(c[l+8>>2]|0);i=k;return}function qk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;n=i;i=i+112|0;o=n;s=(g-f|0)/12|0;if(s>>>0>100){o=Tq(s)|0;if(!o){y=Wb(4)|0;c[y>>2]=27280;Zc(y|0,27328,220)}else l=o}else l=0;p=(f|0)==(g|0);if(p)t=0;else{q=f;t=0;r=o;while(1){u=a[q>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[q+4>>2]|0;if(!u){a[r>>0]=2;t=t+1|0;s=s+ -1|0}else a[r>>0]=1;q=q+12|0;if((q|0)==(g|0))break;else r=r+1|0}}q=0;a:while(1){v=(s|0)!=0;r=q;while(1){q=c[b>>2]|0;do if(q){if((c[q+12>>2]|0)==(c[q+16>>2]|0))if((md[c[(c[q>>2]|0)+36>>2]&127](q)|0)==-1){c[b>>2]=0;q=0;break}else{q=c[b>>2]|0;break}}else q=0;while(0);x=(q|0)==0;if(e)if((c[e+12>>2]|0)==(c[e+16>>2]|0)){y=(md[c[(c[e>>2]|0)+36>>2]&127](e)|0)==-1;q=y?0:e;e=y?0:e}else q=e;else{q=0;e=0}u=(q|0)==0;w=c[b>>2]|0;if(!((x^u)&v))break a;q=c[w+12>>2]|0;if((q|0)==(c[w+16>>2]|0))q=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else q=d[q>>0]|0;u=q&255;if(!k)u=vd[c[(c[h>>2]|0)+12>>2]&63](h,u)|0;q=r+1|0;if(p)r=q;else{x=0;v=f;w=o;break}}while(1){do if((a[w>>0]|0)==1){if(!(a[v>>0]&1))y=v+1|0;else y=c[v+8>>2]|0;y=a[y+r>>0]|0;if(!k)y=vd[c[(c[h>>2]|0)+12>>2]&63](h,y)|0;if(u<<24>>24!=y<<24>>24){a[w>>0]=0;s=s+ -1|0;break}x=a[v>>0]|0;if(!(x&1))x=(x&255)>>>1;else x=c[v+4>>2]|0;if((x|0)==(q|0)){a[w>>0]=2;x=1;t=t+1|0;s=s+ -1|0}else x=1}while(0);v=v+12|0;if((v|0)==(g|0))break;w=w+1|0}if(!x)continue;r=c[b>>2]|0;u=r+12|0;v=c[u>>2]|0;if((v|0)==(c[r+16>>2]|0))md[c[(c[r>>2]|0)+40>>2]&127](r)|0;else c[u>>2]=v+1;if((t+s|0)>>>0<2)continue;else{r=f;u=o}while(1){if((a[u>>0]|0)==2){v=a[r>>0]|0;if(!(v&1))v=(v&255)>>>1;else v=c[r+4>>2]|0;if((v|0)!=(q|0)){a[u>>0]=0;t=t+ -1|0}}r=r+12|0;if((r|0)==(g|0))continue a;else u=u+1|0}}do if(w){if((c[w+12>>2]|0)==(c[w+16>>2]|0))if((md[c[(c[w>>2]|0)+36>>2]&127](w)|0)==-1){c[b>>2]=0;w=0;break}else{w=c[b>>2]|0;break}}else w=0;while(0);k=(w|0)==0;do if(!u){if((c[q+12>>2]|0)!=(c[q+16>>2]|0))if(k)break;else{m=72;break}if((md[c[(c[q>>2]|0)+36>>2]&127](q)|0)!=-1){if(!k)m=72}else m=70}else m=70;while(0);if((m|0)==70?k:0)m=72;if((m|0)==72)c[j>>2]=c[j>>2]|2;b:do if(!p)if((a[o>>0]|0)==2)g=f;else while(1){f=f+12|0;o=o+1|0;if((f|0)==(g|0)){m=77;break b}if((a[o>>0]|0)==2){g=f;break}}else m=77;while(0);if((m|0)==77)c[j>>2]=c[j>>2]|4;if(!l){i=n;return g|0}Uq(l);i=n;return g|0}function rk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;m=i;i=i+224|0;t=m+198|0;w=m+196|0;e=m+16|0;n=m+4|0;r=m+192|0;s=m+32|0;p=m;q=m+28|0;v=c[f>>2]|0;y=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==8)g=16;else if(!g)g=0;else if((g|0)==64)g=8;else g=10;Tk(e,h,t,w);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){z=n+1|0;h=z;u=n+8|0}else{z=n+8|0;h=n+1|0;u=z;z=c[z>>2]|0}c[r>>2]=z;c[p>>2]=s;c[q>>2]=0;f=n+4|0;w=a[w>>0]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;x=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(x)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!x)break a}else l=19}else l=19;while(0);if((l|0)==19){l=0;if(x){y=0;break}else y=0}C=a[n>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[f>>2]|0;if((c[r>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[f>>2]|0;Ki(n,A<<1);if(!(a[n>>0]&1))z=10;else z=(c[n>>2]&-2)+ -1|0;Ki(n,z);if(!(a[n>>0]&1))z=h;else z=c[u>>2]|0;c[r>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,g,z,r,q,w,e,s,p,t)|0)break;x=c[A>>2]|0;if((x|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=x+1;continue}}t=a[e>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[e+4>>2]|0;if((t|0)!=0?(o=c[p>>2]|0,(o-s|0)<160):0){C=c[q>>2]|0;c[p>>2]=o+4;c[o>>2]=C}c[k>>2]=Ip(z,c[r>>2]|0,j,g)|0;hn(e,s,c[p>>2]|0,j);if(!x){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=60;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!k)l=60}else l=58}else l=58;while(0);if((l|0)==58?k:0)l=60;if((l|0)==60)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=m;return}Uq(c[e+8>>2]|0);i=m;return}function sk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;m=i;i=i+224|0;t=m+198|0;w=m+196|0;e=m+16|0;n=m+4|0;r=m+192|0;s=m+32|0;p=m;q=m+28|0;v=c[f>>2]|0;y=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==64)g=8;else if(!g)g=0;else if((g|0)==8)g=16;else g=10;Tk(e,h,t,w);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){z=n+1|0;h=z;u=n+8|0}else{z=n+8|0;h=n+1|0;u=z;z=c[z>>2]|0}c[r>>2]=z;c[p>>2]=s;c[q>>2]=0;f=n+4|0;w=a[w>>0]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;x=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(x)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!x)break a}else l=19}else l=19;while(0);if((l|0)==19){l=0;if(x){y=0;break}else y=0}C=a[n>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[f>>2]|0;if((c[r>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[f>>2]|0;Ki(n,A<<1);if(!(a[n>>0]&1))z=10;else z=(c[n>>2]&-2)+ -1|0;Ki(n,z);if(!(a[n>>0]&1))z=h;else z=c[u>>2]|0;c[r>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,g,z,r,q,w,e,s,p,t)|0)break;x=c[A>>2]|0;if((x|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=x+1;continue}}t=a[e>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[e+4>>2]|0;if((t|0)!=0?(o=c[p>>2]|0,(o-s|0)<160):0){C=c[q>>2]|0;c[p>>2]=o+4;c[o>>2]=C}B=Hp(z,c[r>>2]|0,j,g)|0;C=k;c[C>>2]=B;c[C+4>>2]=H;hn(e,s,c[p>>2]|0,j);if(!x){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=60;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!k)l=60}else l=58}else l=58;while(0);if((l|0)==58?k:0)l=60;if((l|0)==60)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=m;return}Uq(c[e+8>>2]|0);i=m;return}function tk(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;n=i;i=i+224|0;u=n+198|0;x=n+196|0;f=n+16|0;o=n+4|0;s=n+192|0;t=n+32|0;q=n;r=n+28|0;w=c[g>>2]|0;z=c[h>>2]|0;h=c[j+4>>2]&74;if((h|0)==8)h=16;else if((h|0)==64)h=8;else if(!h)h=0;else h=10;Tk(f,j,u,x);c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;Ki(o,10);if(!(a[o>>0]&1)){A=o+1|0;j=A;v=o+8|0}else{A=o+8|0;j=o+1|0;v=A;A=c[A>>2]|0}c[s>>2]=A;c[q>>2]=t;c[r>>2]=0;g=o+4|0;x=a[x>>0]|0;a:while(1){if(w){if((c[w+12>>2]|0)==(c[w+16>>2]|0)){D=(md[c[(c[w>>2]|0)+36>>2]&127](w)|0)==-1;w=D?0:w}}else w=0;y=(w|0)==0;do if(z){if((c[z+12>>2]|0)!=(c[z+16>>2]|0))if(y)break;else break a;if((md[c[(c[z>>2]|0)+36>>2]&127](z)|0)!=-1){if(!y)break a}else m=19}else m=19;while(0);if((m|0)==19){m=0;if(y){z=0;break}else z=0}D=a[o>>0]|0;C=(D&1)==0;if(C)B=(D&255)>>>1;else B=c[g>>2]|0;if((c[s>>2]|0)==(A+B|0)){if(C)B=(D&255)>>>1;else B=c[g>>2]|0;Ki(o,B<<1);if(!(a[o>>0]&1))A=10;else A=(c[o>>2]&-2)+ -1|0;Ki(o,A);if(!(a[o>>0]&1))A=j;else A=c[v>>2]|0;c[s>>2]=A+B}B=w+12|0;D=c[B>>2]|0;C=w+16|0;if((D|0)==(c[C>>2]|0))D=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else D=d[D>>0]|0;if(Bk(D&255,h,A,s,r,x,f,t,q,u)|0)break;y=c[B>>2]|0;if((y|0)==(c[C>>2]|0)){md[c[(c[w>>2]|0)+40>>2]&127](w)|0;continue}else{c[B>>2]=y+1;continue}}u=a[f>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[f+4>>2]|0;if((u|0)!=0?(p=c[q>>2]|0,(p-t|0)<160):0){D=c[r>>2]|0;c[q>>2]=p+4;c[p>>2]=D}b[l>>1]=Gp(A,c[s>>2]|0,k,h)|0;hn(f,t,c[q>>2]|0,k);if(!y){if((c[w+12>>2]|0)==(c[w+16>>2]|0)){D=(md[c[(c[w>>2]|0)+36>>2]&127](w)|0)==-1;w=D?0:w}}else w=0;l=(w|0)==0;do if(z){if((c[z+12>>2]|0)!=(c[z+16>>2]|0))if(l)break;else{m=60;break}if((md[c[(c[z>>2]|0)+36>>2]&127](z)|0)!=-1){if(!l)m=60}else m=58}else m=58;while(0);if((m|0)==58?l:0)m=60;if((m|0)==60)c[k>>2]=c[k>>2]|2;c[e>>2]=w;if(a[o>>0]&1)Uq(c[o+8>>2]|0);if(!(a[f>>0]&1)){i=n;return}Uq(c[f+8>>2]|0);i=n;return}function uk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;m=i;i=i+224|0;t=m+198|0;w=m+196|0;e=m+16|0;n=m+4|0;r=m+192|0;s=m+32|0;p=m;q=m+28|0;v=c[f>>2]|0;y=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==64)g=8;else if(!g)g=0;else if((g|0)==8)g=16;else g=10;Tk(e,h,t,w);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){z=n+1|0;h=z;u=n+8|0}else{z=n+8|0;h=n+1|0;u=z;z=c[z>>2]|0}c[r>>2]=z;c[p>>2]=s;c[q>>2]=0;f=n+4|0;w=a[w>>0]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;x=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(x)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!x)break a}else l=19}else l=19;while(0);if((l|0)==19){l=0;if(x){y=0;break}else y=0}C=a[n>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[f>>2]|0;if((c[r>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[f>>2]|0;Ki(n,A<<1);if(!(a[n>>0]&1))z=10;else z=(c[n>>2]&-2)+ -1|0;Ki(n,z);if(!(a[n>>0]&1))z=h;else z=c[u>>2]|0;c[r>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,g,z,r,q,w,e,s,p,t)|0)break;x=c[A>>2]|0;if((x|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=x+1;continue}}t=a[e>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[e+4>>2]|0;if((t|0)!=0?(o=c[p>>2]|0,(o-s|0)<160):0){C=c[q>>2]|0;c[p>>2]=o+4;c[o>>2]=C}c[k>>2]=Fp(z,c[r>>2]|0,j,g)|0;hn(e,s,c[p>>2]|0,j);if(!x){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=60;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!k)l=60}else l=58}else l=58;while(0);if((l|0)==58?k:0)l=60;if((l|0)==60)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=m;return}Uq(c[e+8>>2]|0);i=m;return}function vk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;m=i;i=i+224|0;t=m+198|0;w=m+196|0;e=m+16|0;n=m+4|0;r=m+192|0;s=m+32|0;p=m;q=m+28|0;v=c[f>>2]|0;y=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==8)g=16;else if((g|0)==64)g=8;else if(!g)g=0;else g=10;Tk(e,h,t,w);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){z=n+1|0;h=z;u=n+8|0}else{z=n+8|0;h=n+1|0;u=z;z=c[z>>2]|0}c[r>>2]=z;c[p>>2]=s;c[q>>2]=0;f=n+4|0;w=a[w>>0]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;x=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(x)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!x)break a}else l=19}else l=19;while(0);if((l|0)==19){l=0;if(x){y=0;break}else y=0}C=a[n>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[f>>2]|0;if((c[r>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[f>>2]|0;Ki(n,A<<1);if(!(a[n>>0]&1))z=10;else z=(c[n>>2]&-2)+ -1|0;Ki(n,z);if(!(a[n>>0]&1))z=h;else z=c[u>>2]|0;c[r>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,g,z,r,q,w,e,s,p,t)|0)break;x=c[A>>2]|0;if((x|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=x+1;continue}}t=a[e>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[e+4>>2]|0;if((t|0)!=0?(o=c[p>>2]|0,(o-s|0)<160):0){C=c[q>>2]|0;c[p>>2]=o+4;c[o>>2]=C}c[k>>2]=Ep(z,c[r>>2]|0,j,g)|0;hn(e,s,c[p>>2]|0,j);if(!x){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=60;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!k)l=60}else l=58}else l=58;while(0);if((l|0)==58?k:0)l=60;if((l|0)==60)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=m;return}Uq(c[e+8>>2]|0);i=m;return}function wk(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;m=i;i=i+224|0;t=m+198|0;w=m+196|0;e=m+16|0;n=m+4|0;r=m+192|0;s=m+32|0;p=m;q=m+28|0;v=c[f>>2]|0;y=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==64)g=8;else if(!g)g=0;else if((g|0)==8)g=16;else g=10;Tk(e,h,t,w);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){z=n+1|0;h=z;u=n+8|0}else{z=n+8|0;h=n+1|0;u=z;z=c[z>>2]|0}c[r>>2]=z;c[p>>2]=s;c[q>>2]=0;f=n+4|0;w=a[w>>0]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;x=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(x)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!x)break a}else l=19}else l=19;while(0);if((l|0)==19){l=0;if(x){y=0;break}else y=0}C=a[n>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[f>>2]|0;if((c[r>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[f>>2]|0;Ki(n,A<<1);if(!(a[n>>0]&1))z=10;else z=(c[n>>2]&-2)+ -1|0;Ki(n,z);if(!(a[n>>0]&1))z=h;else z=c[u>>2]|0;c[r>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,g,z,r,q,w,e,s,p,t)|0)break;x=c[A>>2]|0;if((x|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=x+1;continue}}t=a[e>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[e+4>>2]|0;if((t|0)!=0?(o=c[p>>2]|0,(o-s|0)<160):0){C=c[q>>2]|0;c[p>>2]=o+4;c[o>>2]=C}B=Dp(z,c[r>>2]|0,j,g)|0;C=k;c[C>>2]=B;c[C+4>>2]=H;hn(e,s,c[p>>2]|0,j);if(!x){if((c[v+12>>2]|0)==(c[v+16>>2]|0)){C=(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1;v=C?0:v}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=60;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1){if(!k)l=60}else l=58}else l=58;while(0);if((l|0)==58?k:0)l=60;if((l|0)==60)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=m;return}Uq(c[e+8>>2]|0);i=m;return}function xk(b,e,f,h,j,k,l){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;o=i;i=i+256|0;v=o+208|0;x=o+200|0;y=o+240|0;e=o;n=o+188|0;s=o+184|0;u=o+16|0;q=o+176|0;r=o+180|0;t=o+241|0;w=o+242|0;z=c[f>>2]|0;B=c[h>>2]|0;Uk(e,j,v,x,y);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){C=n+1|0;h=C;j=n+8|0}else{C=n+8|0;h=n+1|0;j=C;C=c[C>>2]|0}c[s>>2]=C;c[q>>2]=u;c[r>>2]=0;a[t>>0]=1;a[w>>0]=69;f=n+4|0;x=a[x>>0]|0;y=a[y>>0]|0;a:while(1){if(z){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;A=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(A)break;else break a;if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!A)break a}else m=15}else m=15;while(0);if((m|0)==15){m=0;if(A){B=0;break}else B=0}E=a[n>>0]|0;F=(E&1)==0;if(F)D=(E&255)>>>1;else D=c[f>>2]|0;if((c[s>>2]|0)==(C+D|0)){if(F)D=(E&255)>>>1;else D=c[f>>2]|0;Ki(n,D<<1);if(!(a[n>>0]&1))C=10;else C=(c[n>>2]&-2)+ -1|0;Ki(n,C);if(!(a[n>>0]&1))C=h;else C=c[j>>2]|0;c[s>>2]=C+D}E=z+12|0;F=c[E>>2]|0;D=z+16|0;if((F|0)==(c[D>>2]|0))F=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else F=d[F>>0]|0;if(Vk(F&255,t,w,C,s,x,y,e,u,q,r,v)|0)break;A=c[E>>2]|0;if((A|0)==(c[D>>2]|0)){md[c[(c[z>>2]|0)+40>>2]&127](z)|0;continue}else{c[E>>2]=A+1;continue}}v=a[e>>0]|0;if(!(v&1))v=(v&255)>>>1;else v=c[e+4>>2]|0;if(((v|0)!=0?(a[t>>0]|0)!=0:0)?(p=c[q>>2]|0,(p-u|0)<160):0){F=c[r>>2]|0;c[q>>2]=p+4;c[p>>2]=F}g[l>>2]=+Cp(C,c[s>>2]|0,k);hn(e,u,c[q>>2]|0,k);if(!A){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;p=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(p)break;else{m=57;break}if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!p)m=57}else m=55}else m=55;while(0);if((m|0)==55?p:0)m=57;if((m|0)==57)c[k>>2]=c[k>>2]|2;c[b>>2]=z;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=o;return}Uq(c[e+8>>2]|0);i=o;return}function yk(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;o=i;i=i+256|0;v=o+208|0;x=o+200|0;y=o+240|0;e=o;n=o+188|0;s=o+184|0;u=o+16|0;q=o+176|0;r=o+180|0;t=o+241|0;w=o+242|0;z=c[f>>2]|0;B=c[g>>2]|0;Uk(e,j,v,x,y);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){C=n+1|0;g=C;j=n+8|0}else{C=n+8|0;g=n+1|0;j=C;C=c[C>>2]|0}c[s>>2]=C;c[q>>2]=u;c[r>>2]=0;a[t>>0]=1;a[w>>0]=69;f=n+4|0;x=a[x>>0]|0;y=a[y>>0]|0;a:while(1){if(z){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;A=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(A)break;else break a;if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!A)break a}else m=15}else m=15;while(0);if((m|0)==15){m=0;if(A){B=0;break}else B=0}E=a[n>>0]|0;F=(E&1)==0;if(F)D=(E&255)>>>1;else D=c[f>>2]|0;if((c[s>>2]|0)==(C+D|0)){if(F)D=(E&255)>>>1;else D=c[f>>2]|0;Ki(n,D<<1);if(!(a[n>>0]&1))C=10;else C=(c[n>>2]&-2)+ -1|0;Ki(n,C);if(!(a[n>>0]&1))C=g;else C=c[j>>2]|0;c[s>>2]=C+D}E=z+12|0;F=c[E>>2]|0;D=z+16|0;if((F|0)==(c[D>>2]|0))F=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else F=d[F>>0]|0;if(Vk(F&255,t,w,C,s,x,y,e,u,q,r,v)|0)break;A=c[E>>2]|0;if((A|0)==(c[D>>2]|0)){md[c[(c[z>>2]|0)+40>>2]&127](z)|0;continue}else{c[E>>2]=A+1;continue}}v=a[e>>0]|0;if(!(v&1))v=(v&255)>>>1;else v=c[e+4>>2]|0;if(((v|0)!=0?(a[t>>0]|0)!=0:0)?(p=c[q>>2]|0,(p-u|0)<160):0){F=c[r>>2]|0;c[q>>2]=p+4;c[p>>2]=F}h[l>>3]=+Bp(C,c[s>>2]|0,k);hn(e,u,c[q>>2]|0,k);if(!A){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;p=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(p)break;else{m=57;break}if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!p)m=57}else m=55}else m=55;while(0);if((m|0)==55?p:0)m=57;if((m|0)==57)c[k>>2]=c[k>>2]|2;c[b>>2]=z;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=o;return}Uq(c[e+8>>2]|0);i=o;return}function zk(b,e,f,g,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;o=i;i=i+256|0;v=o+208|0;x=o+200|0;y=o+240|0;e=o;n=o+188|0;s=o+184|0;u=o+16|0;q=o+176|0;r=o+180|0;t=o+241|0;w=o+242|0;z=c[f>>2]|0;B=c[g>>2]|0;Uk(e,j,v,x,y);c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;Ki(n,10);if(!(a[n>>0]&1)){C=n+1|0;g=C;j=n+8|0}else{C=n+8|0;g=n+1|0;j=C;C=c[C>>2]|0}c[s>>2]=C;c[q>>2]=u;c[r>>2]=0;a[t>>0]=1;a[w>>0]=69;f=n+4|0;x=a[x>>0]|0;y=a[y>>0]|0;a:while(1){if(z){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;A=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(A)break;else break a;if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!A)break a}else m=15}else m=15;while(0);if((m|0)==15){m=0;if(A){B=0;break}else B=0}E=a[n>>0]|0;F=(E&1)==0;if(F)D=(E&255)>>>1;else D=c[f>>2]|0;if((c[s>>2]|0)==(C+D|0)){if(F)D=(E&255)>>>1;else D=c[f>>2]|0;Ki(n,D<<1);if(!(a[n>>0]&1))C=10;else C=(c[n>>2]&-2)+ -1|0;Ki(n,C);if(!(a[n>>0]&1))C=g;else C=c[j>>2]|0;c[s>>2]=C+D}E=z+12|0;F=c[E>>2]|0;D=z+16|0;if((F|0)==(c[D>>2]|0))F=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else F=d[F>>0]|0;if(Vk(F&255,t,w,C,s,x,y,e,u,q,r,v)|0)break;A=c[E>>2]|0;if((A|0)==(c[D>>2]|0)){md[c[(c[z>>2]|0)+40>>2]&127](z)|0;continue}else{c[E>>2]=A+1;continue}}v=a[e>>0]|0;if(!(v&1))v=(v&255)>>>1;else v=c[e+4>>2]|0;if(((v|0)!=0?(a[t>>0]|0)!=0:0)?(p=c[q>>2]|0,(p-u|0)<160):0){F=c[r>>2]|0;c[q>>2]=p+4;c[p>>2]=F}h[l>>3]=+Ap(C,c[s>>2]|0,k);hn(e,u,c[q>>2]|0,k);if(!A){if((c[z+12>>2]|0)==(c[z+16>>2]|0)){F=(md[c[(c[z>>2]|0)+36>>2]&127](z)|0)==-1;z=F?0:z}}else z=0;p=(z|0)==0;do if(B){if((c[B+12>>2]|0)!=(c[B+16>>2]|0))if(p)break;else{m=57;break}if((md[c[(c[B>>2]|0)+36>>2]&127](B)|0)!=-1){if(!p)m=57}else m=55}else m=55;while(0);if((m|0)==55?p:0)m=57;if((m|0)==57)c[k>>2]=c[k>>2]|2;c[b>>2]=z;if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(!(a[e>>0]&1)){i=o;return}Uq(c[e+8>>2]|0);i=o;return}function Ak(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;n=i;i=i+240|0;o=n;s=n+204|0;e=n+184|0;m=n+172|0;p=n+168|0;r=n+8|0;t=n+196|0;q=n+200|0;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;h=c[h+28>>2]|0;B=h+4|0;c[B>>2]=(c[B>>2]|0)+1;B=Sn(h,19072)|0;sd[c[(c[B>>2]|0)+32>>2]&7](B,17600,17626|0,s)|0;B=h+4|0;C=c[B>>2]|0;c[B>>2]=C+ -1;if(!C)jd[c[(c[h>>2]|0)+8>>2]&255](h);c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;Ki(m,10);if(!(a[m>>0]&1)){z=m+1|0;u=z;h=m+8|0}else{z=m+8|0;u=m+1|0;h=z;z=c[z>>2]|0}c[p>>2]=z;c[t>>2]=r;c[q>>2]=0;x=m+4|0;v=c[f>>2]|0;a:while(1){if(v){if((c[v+12>>2]|0)==(c[v+16>>2]|0)?(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1:0){c[f>>2]=0;v=0}}else v=0;w=(v|0)==0;y=c[g>>2]|0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(w)break;else break a;if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1)if(w)break;else break a;else{c[g>>2]=0;l=21;break}}else l=21;while(0);if((l|0)==21){l=0;if(w){y=0;break}else y=0}C=a[m>>0]|0;B=(C&1)==0;if(B)A=(C&255)>>>1;else A=c[x>>2]|0;if((c[p>>2]|0)==(z+A|0)){if(B)A=(C&255)>>>1;else A=c[x>>2]|0;Ki(m,A<<1);if(!(a[m>>0]&1))z=10;else z=(c[m>>2]&-2)+ -1|0;Ki(m,z);if(!(a[m>>0]&1))z=u;else z=c[h>>2]|0;c[p>>2]=z+A}A=v+12|0;C=c[A>>2]|0;B=v+16|0;if((C|0)==(c[B>>2]|0))C=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else C=d[C>>0]|0;if(Bk(C&255,16,z,p,q,0,e,r,t,s)|0)break;w=c[A>>2]|0;if((w|0)==(c[B>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=w+1;continue}}Ki(m,(c[p>>2]|0)-z|0);if(a[m>>0]&1)u=c[h>>2]|0;C=Dk()|0;c[o>>2]=k;if((Ck(u,C,o)|0)!=1)c[j>>2]=4;if(!w){if((c[v+12>>2]|0)==(c[v+16>>2]|0)?(md[c[(c[v>>2]|0)+36>>2]&127](v)|0)==-1:0){c[f>>2]=0;v=0}}else v=0;k=(v|0)==0;do if(y){if((c[y+12>>2]|0)!=(c[y+16>>2]|0))if(k)break;else{l=64;break}if((md[c[(c[y>>2]|0)+36>>2]&127](y)|0)!=-1)if(k)break;else{l=64;break}else{c[g>>2]=0;l=62;break}}else l=62;while(0);if((l|0)==62?k:0)l=64;if((l|0)==64)c[j>>2]=c[j>>2]|2;c[b>>2]=v;if(a[m>>0]&1)Uq(c[m+8>>2]|0);if(!(a[e>>0]&1)){i=n;return}Uq(c[e+8>>2]|0);i=n;return}function Bk(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0;n=i;p=c[f>>2]|0;o=(p|0)==(e|0);do if(o){q=(a[m+24>>0]|0)==b<<24>>24;if(!q?(a[m+25>>0]|0)!=b<<24>>24:0)break;c[f>>2]=e+1;a[e>>0]=q?43:45;c[g>>2]=0;q=0;i=n;return q|0}while(0);q=a[j>>0]|0;if(!(q&1))j=(q&255)>>>1;else j=c[j+4>>2]|0;if((j|0)!=0?b<<24>>24==h<<24>>24:0){o=c[l>>2]|0;if((o-k|0)>=160){q=0;i=n;return q|0}q=c[g>>2]|0;c[l>>2]=o+4;c[o>>2]=q;c[g>>2]=0;q=0;i=n;return q|0}l=m+26|0;k=m;while(1){if((a[k>>0]|0)==b<<24>>24)break;k=k+1|0;if((k|0)==(l|0)){k=l;break}}m=k-m|0;if((m|0)>23){q=-1;i=n;return q|0}if((d|0)==16){if((m|0)>=22){if(o){q=-1;i=n;return q|0}if((p-e|0)>=3){q=-1;i=n;return q|0}if((a[p+ -1>>0]|0)!=48){q=-1;i=n;return q|0}c[g>>2]=0;q=a[17600+m>>0]|0;c[f>>2]=p+1;a[p>>0]=q;q=0;i=n;return q|0}}else if((d|0)==10|(d|0)==8?(m|0)>=(d|0):0){q=-1;i=n;return q|0}q=a[17600+m>>0]|0;c[f>>2]=p+1;a[p>>0]=q;c[g>>2]=(c[g>>2]|0)+1;q=0;i=n;return q|0}function Ck(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;b=Yb(b|0)|0;a=Vp(a,17640,f)|0;if(!b){i=e;return a|0}Yb(b|0)|0;i=e;return a|0}function Dk(){var b=0;b=i;if((a[18984]|0)==0?(Fa(18984)|0)!=0:0){c[4744]=rb(2147483647,18992,0)|0;Vc(18984)}i=b;return c[4744]|0}function Ek(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Fk(a){a=a|0;return}function Gk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;i=i+64|0;o=k+8|0;p=k+40|0;m=k+44|0;n=k+48|0;r=k+4|0;q=k;l=k+16|0;if(!(c[g+4>>2]&1)){c[m>>2]=-1;l=c[(c[d>>2]|0)+16>>2]|0;c[r>>2]=c[e>>2];c[q>>2]=c[f>>2];c[p+0>>2]=c[r+0>>2];c[o+0>>2]=c[q+0>>2];gd[l&63](n,d,p,o,g,h,m);l=c[n>>2]|0;c[e>>2]=l;e=c[m>>2]|0;if((e|0)==1)a[j>>0]=1;else if(!e)a[j>>0]=0;else{a[j>>0]=1;c[h>>2]=4}c[b>>2]=l;i=k;return}d=g+28|0;n=c[d>>2]|0;m=n+4|0;c[m>>2]=(c[m>>2]|0)+1;m=Sn(n,19064)|0;r=n+4|0;g=c[r>>2]|0;c[r>>2]=g+ -1;if(!g)jd[c[(c[n>>2]|0)+8>>2]&255](n);n=c[d>>2]|0;d=n+4|0;c[d>>2]=(c[d>>2]|0)+1;d=Sn(n,19224)|0;r=n+4|0;g=c[r>>2]|0;c[r>>2]=g+ -1;if(!g)jd[c[(c[n>>2]|0)+8>>2]&255](n);kd[c[(c[d>>2]|0)+24>>2]&63](l,d);g=l+12|0;kd[c[(c[d>>2]|0)+28>>2]&63](g,d);a[j>>0]=(Hk(e,c[f>>2]|0,l,l+24|0,m,h,1)|0)==(l|0)&1;c[b>>2]=c[e>>2];if(a[g>>0]&1)Uq(c[l+20>>2]|0);if(!(a[l>>0]&1)){i=k;return}Uq(c[l+8>>2]|0);i=k;return}function Hk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=i;i=i+112|0;n=m;s=(f-e|0)/12|0;if(s>>>0>100){n=Tq(s)|0;if(!n){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else l=n}else l=0;o=(e|0)==(f|0);if(o)r=0;else{p=e;r=0;q=n;while(1){t=a[p>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[p+4>>2]|0;if(!t){a[q>>0]=2;r=r+1|0;s=s+ -1|0}else a[q>>0]=1;p=p+12|0;if((p|0)==(f|0))break;else q=q+1|0}}p=0;a:while(1){t=(s|0)!=0;q=p;while(1){p=c[b>>2]|0;do if(p){u=c[p+12>>2]|0;if((u|0)==(c[p+16>>2]|0))p=md[c[(c[p>>2]|0)+36>>2]&127](p)|0;else p=c[u>>2]|0;if((p|0)==-1){c[b>>2]=0;u=1;break}else{u=(c[b>>2]|0)==0;break}}else u=1;while(0);if(!d){p=0;w=1;d=0}else{p=c[d+12>>2]|0;if((p|0)==(c[d+16>>2]|0))p=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else p=c[p>>2]|0;x=(p|0)==-1;p=x?0:d;w=x?1:0;d=x?0:d}v=c[b>>2]|0;if(!((u^w)&t))break a;p=c[v+12>>2]|0;if((p|0)==(c[v+16>>2]|0))u=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else u=c[p>>2]|0;if(!j)u=vd[c[(c[g>>2]|0)+28>>2]&63](g,u)|0;p=q+1|0;if(o)q=p;else{w=0;t=e;v=n;break}}while(1){do if((a[v>>0]|0)==1){if(!(a[t>>0]&1))x=t+4|0;else x=c[t+8>>2]|0;x=c[x+(q<<2)>>2]|0;if(!j)x=vd[c[(c[g>>2]|0)+28>>2]&63](g,x)|0;if((u|0)!=(x|0)){a[v>>0]=0;s=s+ -1|0;break}w=a[t>>0]|0;if(!(w&1))w=(w&255)>>>1;else w=c[t+4>>2]|0;if((w|0)==(p|0)){a[v>>0]=2;w=1;r=r+1|0;s=s+ -1|0}else w=1}while(0);t=t+12|0;if((t|0)==(f|0))break;v=v+1|0}if(!w)continue;u=c[b>>2]|0;q=u+12|0;t=c[q>>2]|0;if((t|0)==(c[u+16>>2]|0))md[c[(c[u>>2]|0)+40>>2]&127](u)|0;else c[q>>2]=t+4;if((r+s|0)>>>0<2)continue;else{q=e;t=n}while(1){if((a[t>>0]|0)==2){u=a[q>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[q+4>>2]|0;if((u|0)!=(p|0)){a[t>>0]=0;r=r+ -1|0}}q=q+12|0;if((q|0)==(f|0))continue a;else t=t+1|0}}do if(v){j=c[v+12>>2]|0;if((j|0)==(c[v+16>>2]|0))j=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else j=c[j>>2]|0;if((j|0)==-1){c[b>>2]=0;b=1;break}else{b=(c[b>>2]|0)==0;break}}else b=1;while(0);if(p){j=c[p+12>>2]|0;if((j|0)==(c[p+16>>2]|0))j=md[c[(c[p>>2]|0)+36>>2]&127](p)|0;else j=c[j>>2]|0;if((j|0)!=-1){if(!b)k=75}else k=73}else k=73;if((k|0)==73?b:0)k=75;if((k|0)==75)c[h>>2]=c[h>>2]|2;b:do if(!o)if((a[n>>0]|0)==2)f=e;else while(1){e=e+12|0;n=n+1|0;if((e|0)==(f|0)){k=80;break b}if((a[n>>0]|0)==2){f=e;break}}else k=80;while(0);if((k|0)==80)c[h>>2]=c[h>>2]|4;if(!l){i=m;return f|0}Uq(l);i=m;return f|0}function Ik(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;m=i;i=i+304|0;s=m+160|0;v=m+280|0;l=m+264|0;d=m+284|0;p=m+300|0;r=m;q=m+276|0;o=m+296|0;u=c[e>>2]|0;w=c[f>>2]|0;f=c[g+4>>2]&74;if(!f)f=0;else if((f|0)==8)f=16;else if((f|0)==64)f=8;else f=10;Wk(l,g,s,v);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){x=d+1|0;e=x;t=d+8|0}else{x=d+8|0;e=d+1|0;t=x;x=c[x>>2]|0}c[p>>2]=x;c[q>>2]=r;c[o>>2]=0;g=d+4|0;v=c[v>>2]|0;while(1){if(!u){y=1;u=0}else{y=c[u+12>>2]|0;if((y|0)==(c[u+16>>2]|0))y=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else y=c[y>>2]|0;A=(y|0)==-1;y=A?1:0;u=A?0:u}if(w){z=c[w+12>>2]|0;if((z|0)==(c[w+16>>2]|0))z=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else z=c[z>>2]|0;if((z|0)!=-1){if(!y)break}else k=20}else k=20;if((k|0)==20){k=0;if(y){w=0;break}else w=0}A=a[d>>0]|0;y=(A&1)==0;if(y)z=(A&255)>>>1;else z=c[g>>2]|0;if((c[p>>2]|0)==(x+z|0)){if(y)y=(A&255)>>>1;else y=c[g>>2]|0;Ki(d,y<<1);if(!(a[d>>0]&1))x=10;else x=(c[d>>2]&-2)+ -1|0;Ki(d,x);if(!(a[d>>0]&1))x=e;else x=c[t>>2]|0;c[p>>2]=x+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,f,x,p,o,v,l,r,q,s)|0)break;A=c[z>>2]|0;if((A|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=A+4;continue}}s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if((s|0)!=0?(n=c[q>>2]|0,(n-r|0)<160):0){A=c[o>>2]|0;c[q>>2]=n+4;c[n>>2]=A}c[j>>2]=Ip(x,c[p>>2]|0,h,f)|0;hn(l,r,c[q>>2]|0,h);if(!u){j=0;n=1}else{j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:u;n=n?1:0}if(w){o=c[w+12>>2]|0;if((o|0)==(c[w+16>>2]|0))o=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(!n)k=62}else k=60}else k=60;if((k|0)==60?n:0)k=62;if((k|0)==62)c[h>>2]=c[h>>2]|2;c[b>>2]=j;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[l>>0]&1)){i=m;return}Uq(c[l+8>>2]|0);i=m;return}function Jk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;m=i;i=i+304|0;s=m+160|0;v=m+280|0;l=m+264|0;d=m+284|0;p=m+300|0;r=m;q=m+276|0;o=m+296|0;u=c[e>>2]|0;w=c[f>>2]|0;f=c[g+4>>2]&74;if((f|0)==64)f=8;else if((f|0)==8)f=16;else if(!f)f=0;else f=10;Wk(l,g,s,v);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){x=d+1|0;e=x;t=d+8|0}else{x=d+8|0;e=d+1|0;t=x;x=c[x>>2]|0}c[p>>2]=x;c[q>>2]=r;c[o>>2]=0;g=d+4|0;v=c[v>>2]|0;while(1){if(!u){y=1;u=0}else{y=c[u+12>>2]|0;if((y|0)==(c[u+16>>2]|0))y=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else y=c[y>>2]|0;A=(y|0)==-1;y=A?1:0;u=A?0:u}if(w){z=c[w+12>>2]|0;if((z|0)==(c[w+16>>2]|0))z=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else z=c[z>>2]|0;if((z|0)!=-1){if(!y)break}else k=20}else k=20;if((k|0)==20){k=0;if(y){w=0;break}else w=0}A=a[d>>0]|0;y=(A&1)==0;if(y)z=(A&255)>>>1;else z=c[g>>2]|0;if((c[p>>2]|0)==(x+z|0)){if(y)y=(A&255)>>>1;else y=c[g>>2]|0;Ki(d,y<<1);if(!(a[d>>0]&1))x=10;else x=(c[d>>2]&-2)+ -1|0;Ki(d,x);if(!(a[d>>0]&1))x=e;else x=c[t>>2]|0;c[p>>2]=x+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,f,x,p,o,v,l,r,q,s)|0)break;A=c[z>>2]|0;if((A|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=A+4;continue}}s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if((s|0)!=0?(n=c[q>>2]|0,(n-r|0)<160):0){A=c[o>>2]|0;c[q>>2]=n+4;c[n>>2]=A}z=Hp(x,c[p>>2]|0,h,f)|0;A=j;c[A>>2]=z;c[A+4>>2]=H;hn(l,r,c[q>>2]|0,h);if(!u){j=0;n=1}else{j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:u;n=n?1:0}if(w){o=c[w+12>>2]|0;if((o|0)==(c[w+16>>2]|0))o=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(!n)k=62}else k=60}else k=60;if((k|0)==60?n:0)k=62;if((k|0)==62)c[h>>2]=c[h>>2]|2;c[b>>2]=j;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[l>>0]&1)){i=m;return}Uq(c[l+8>>2]|0);i=m;return}function Kk(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;n=i;i=i+304|0;t=n+160|0;w=n+280|0;m=n+264|0;e=n+284|0;q=n+300|0;s=n;r=n+276|0;p=n+296|0;v=c[f>>2]|0;x=c[g>>2]|0;g=c[h+4>>2]&74;if((g|0)==8)g=16;else if(!g)g=0;else if((g|0)==64)g=8;else g=10;Wk(m,h,t,w);c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;Ki(e,10);if(!(a[e>>0]&1)){y=e+1|0;f=y;u=e+8|0}else{y=e+8|0;f=e+1|0;u=y;y=c[y>>2]|0}c[q>>2]=y;c[r>>2]=s;c[p>>2]=0;h=e+4|0;w=c[w>>2]|0;while(1){if(!v){z=1;v=0}else{z=c[v+12>>2]|0;if((z|0)==(c[v+16>>2]|0))z=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else z=c[z>>2]|0;B=(z|0)==-1;z=B?1:0;v=B?0:v}if(x){A=c[x+12>>2]|0;if((A|0)==(c[x+16>>2]|0))A=md[c[(c[x>>2]|0)+36>>2]&127](x)|0;else A=c[A>>2]|0;if((A|0)!=-1){if(!z)break}else l=20}else l=20;if((l|0)==20){l=0;if(z){x=0;break}else x=0}B=a[e>>0]|0;z=(B&1)==0;if(z)A=(B&255)>>>1;else A=c[h>>2]|0;if((c[q>>2]|0)==(y+A|0)){if(z)z=(B&255)>>>1;else z=c[h>>2]|0;Ki(e,z<<1);if(!(a[e>>0]&1))y=10;else y=(c[e>>2]&-2)+ -1|0;Ki(e,y);if(!(a[e>>0]&1))y=f;else y=c[u>>2]|0;c[q>>2]=y+z}A=v+12|0;B=c[A>>2]|0;z=v+16|0;if((B|0)==(c[z>>2]|0))B=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else B=c[B>>2]|0;if(Sk(B,g,y,q,p,w,m,s,r,t)|0)break;B=c[A>>2]|0;if((B|0)==(c[z>>2]|0)){md[c[(c[v>>2]|0)+40>>2]&127](v)|0;continue}else{c[A>>2]=B+4;continue}}t=a[m>>0]|0;if(!(t&1))t=(t&255)>>>1;else t=c[m+4>>2]|0;if((t|0)!=0?(o=c[r>>2]|0,(o-s|0)<160):0){B=c[p>>2]|0;c[r>>2]=o+4;c[o>>2]=B}b[k>>1]=Gp(y,c[q>>2]|0,j,g)|0;hn(m,s,c[r>>2]|0,j);if(!v){k=0;o=1}else{k=c[v+12>>2]|0;if((k|0)==(c[v+16>>2]|0))k=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else k=c[k>>2]|0;o=(k|0)==-1;k=o?0:v;o=o?1:0}if(x){p=c[x+12>>2]|0;if((p|0)==(c[x+16>>2]|0))p=md[c[(c[x>>2]|0)+36>>2]&127](x)|0;else p=c[p>>2]|0;if((p|0)!=-1){if(!o)l=62}else l=60}else l=60;if((l|0)==60?o:0)l=62;if((l|0)==62)c[j>>2]=c[j>>2]|2;c[d>>2]=k;if(a[e>>0]&1)Uq(c[e+8>>2]|0);if(!(a[m>>0]&1)){i=n;return}Uq(c[m+8>>2]|0);i=n;return}function Lk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;m=i;i=i+304|0;s=m+160|0;v=m+280|0;l=m+264|0;d=m+284|0;p=m+300|0;r=m;q=m+276|0;o=m+296|0;u=c[e>>2]|0;w=c[f>>2]|0;f=c[g+4>>2]&74;if((f|0)==64)f=8;else if((f|0)==8)f=16;else if(!f)f=0;else f=10;Wk(l,g,s,v);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){x=d+1|0;e=x;t=d+8|0}else{x=d+8|0;e=d+1|0;t=x;x=c[x>>2]|0}c[p>>2]=x;c[q>>2]=r;c[o>>2]=0;g=d+4|0;v=c[v>>2]|0;while(1){if(!u){y=1;u=0}else{y=c[u+12>>2]|0;if((y|0)==(c[u+16>>2]|0))y=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else y=c[y>>2]|0;A=(y|0)==-1;y=A?1:0;u=A?0:u}if(w){z=c[w+12>>2]|0;if((z|0)==(c[w+16>>2]|0))z=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else z=c[z>>2]|0;if((z|0)!=-1){if(!y)break}else k=20}else k=20;if((k|0)==20){k=0;if(y){w=0;break}else w=0}A=a[d>>0]|0;y=(A&1)==0;if(y)z=(A&255)>>>1;else z=c[g>>2]|0;if((c[p>>2]|0)==(x+z|0)){if(y)y=(A&255)>>>1;else y=c[g>>2]|0;Ki(d,y<<1);if(!(a[d>>0]&1))x=10;else x=(c[d>>2]&-2)+ -1|0;Ki(d,x);if(!(a[d>>0]&1))x=e;else x=c[t>>2]|0;c[p>>2]=x+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,f,x,p,o,v,l,r,q,s)|0)break;A=c[z>>2]|0;if((A|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=A+4;continue}}s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if((s|0)!=0?(n=c[q>>2]|0,(n-r|0)<160):0){A=c[o>>2]|0;c[q>>2]=n+4;c[n>>2]=A}c[j>>2]=Fp(x,c[p>>2]|0,h,f)|0;hn(l,r,c[q>>2]|0,h);if(!u){j=0;n=1}else{j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:u;n=n?1:0}if(w){o=c[w+12>>2]|0;if((o|0)==(c[w+16>>2]|0))o=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(!n)k=62}else k=60}else k=60;if((k|0)==60?n:0)k=62;if((k|0)==62)c[h>>2]=c[h>>2]|2;c[b>>2]=j;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[l>>0]&1)){i=m;return}Uq(c[l+8>>2]|0);i=m;return}function Mk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;m=i;i=i+304|0;s=m+160|0;v=m+280|0;l=m+264|0;d=m+284|0;p=m+300|0;r=m;q=m+276|0;o=m+296|0;u=c[e>>2]|0;w=c[f>>2]|0;f=c[g+4>>2]&74;if((f|0)==8)f=16;else if(!f)f=0;else if((f|0)==64)f=8;else f=10;Wk(l,g,s,v);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){x=d+1|0;e=x;t=d+8|0}else{x=d+8|0;e=d+1|0;t=x;x=c[x>>2]|0}c[p>>2]=x;c[q>>2]=r;c[o>>2]=0;g=d+4|0;v=c[v>>2]|0;while(1){if(!u){y=1;u=0}else{y=c[u+12>>2]|0;if((y|0)==(c[u+16>>2]|0))y=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else y=c[y>>2]|0;A=(y|0)==-1;y=A?1:0;u=A?0:u}if(w){z=c[w+12>>2]|0;if((z|0)==(c[w+16>>2]|0))z=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else z=c[z>>2]|0;if((z|0)!=-1){if(!y)break}else k=20}else k=20;if((k|0)==20){k=0;if(y){w=0;break}else w=0}A=a[d>>0]|0;y=(A&1)==0;if(y)z=(A&255)>>>1;else z=c[g>>2]|0;if((c[p>>2]|0)==(x+z|0)){if(y)y=(A&255)>>>1;else y=c[g>>2]|0;Ki(d,y<<1);if(!(a[d>>0]&1))x=10;else x=(c[d>>2]&-2)+ -1|0;Ki(d,x);if(!(a[d>>0]&1))x=e;else x=c[t>>2]|0;c[p>>2]=x+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,f,x,p,o,v,l,r,q,s)|0)break;A=c[z>>2]|0;if((A|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=A+4;continue}}s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if((s|0)!=0?(n=c[q>>2]|0,(n-r|0)<160):0){A=c[o>>2]|0;c[q>>2]=n+4;c[n>>2]=A}c[j>>2]=Ep(x,c[p>>2]|0,h,f)|0;hn(l,r,c[q>>2]|0,h);if(!u){j=0;n=1}else{j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:u;n=n?1:0}if(w){o=c[w+12>>2]|0;if((o|0)==(c[w+16>>2]|0))o=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(!n)k=62}else k=60}else k=60;if((k|0)==60?n:0)k=62;if((k|0)==62)c[h>>2]=c[h>>2]|2;c[b>>2]=j;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[l>>0]&1)){i=m;return}Uq(c[l+8>>2]|0);i=m;return}function Nk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;m=i;i=i+304|0;s=m+160|0;v=m+280|0;l=m+264|0;d=m+284|0;p=m+300|0;r=m;q=m+276|0;o=m+296|0;u=c[e>>2]|0;w=c[f>>2]|0;f=c[g+4>>2]&74;if((f|0)==64)f=8;else if((f|0)==8)f=16;else if(!f)f=0;else f=10;Wk(l,g,s,v);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){x=d+1|0;e=x;t=d+8|0}else{x=d+8|0;e=d+1|0;t=x;x=c[x>>2]|0}c[p>>2]=x;c[q>>2]=r;c[o>>2]=0;g=d+4|0;v=c[v>>2]|0;while(1){if(!u){y=1;u=0}else{y=c[u+12>>2]|0;if((y|0)==(c[u+16>>2]|0))y=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else y=c[y>>2]|0;A=(y|0)==-1;y=A?1:0;u=A?0:u}if(w){z=c[w+12>>2]|0;if((z|0)==(c[w+16>>2]|0))z=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else z=c[z>>2]|0;if((z|0)!=-1){if(!y)break}else k=20}else k=20;if((k|0)==20){k=0;if(y){w=0;break}else w=0}A=a[d>>0]|0;y=(A&1)==0;if(y)z=(A&255)>>>1;else z=c[g>>2]|0;if((c[p>>2]|0)==(x+z|0)){if(y)y=(A&255)>>>1;else y=c[g>>2]|0;Ki(d,y<<1);if(!(a[d>>0]&1))x=10;else x=(c[d>>2]&-2)+ -1|0;Ki(d,x);if(!(a[d>>0]&1))x=e;else x=c[t>>2]|0;c[p>>2]=x+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,f,x,p,o,v,l,r,q,s)|0)break;A=c[z>>2]|0;if((A|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=A+4;continue}}s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if((s|0)!=0?(n=c[q>>2]|0,(n-r|0)<160):0){A=c[o>>2]|0;c[q>>2]=n+4;c[n>>2]=A}z=Dp(x,c[p>>2]|0,h,f)|0;A=j;c[A>>2]=z;c[A+4>>2]=H;hn(l,r,c[q>>2]|0,h);if(!u){j=0;n=1}else{j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:u;n=n?1:0}if(w){o=c[w+12>>2]|0;if((o|0)==(c[w+16>>2]|0))o=md[c[(c[w>>2]|0)+36>>2]&127](w)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(!n)k=62}else k=60}else k=60;if((k|0)==60?n:0)k=62;if((k|0)==62)c[h>>2]=c[h>>2]|2;c[b>>2]=j;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[l>>0]&1)){i=m;return}Uq(c[l+8>>2]|0);i=m;return}function Ok(b,d,e,f,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;m=i;i=i+352|0;v=m+208|0;w=m+184|0;x=m+4|0;n=m+8|0;d=m+196|0;p=m;t=m+24|0;s=m+192|0;r=m+188|0;q=m+337|0;u=m+336|0;y=c[e>>2]|0;z=c[f>>2]|0;Xk(n,h,v,w,x);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){A=d+1|0;f=A;h=d+8|0}else{A=d+8|0;f=d+1|0;h=A;A=c[A>>2]|0}c[p>>2]=A;c[s>>2]=t;c[r>>2]=0;a[q>>0]=1;a[u>>0]=69;e=d+4|0;w=c[w>>2]|0;x=c[x>>2]|0;while(1){if(!y){B=1;y=0}else{B=c[y+12>>2]|0;if((B|0)==(c[y+16>>2]|0))B=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else B=c[B>>2]|0;D=(B|0)==-1;B=D?1:0;y=D?0:y}if(z){C=c[z+12>>2]|0;if((C|0)==(c[z+16>>2]|0))C=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else C=c[C>>2]|0;if((C|0)!=-1){if(!B)break}else l=16}else l=16;if((l|0)==16){l=0;if(B){z=0;break}else z=0}D=a[d>>0]|0;B=(D&1)==0;if(B)C=(D&255)>>>1;else C=c[e>>2]|0;if((c[p>>2]|0)==(A+C|0)){if(B)B=(D&255)>>>1;else B=c[e>>2]|0;Ki(d,B<<1);if(!(a[d>>0]&1))A=10;else A=(c[d>>2]&-2)+ -1|0;Ki(d,A);if(!(a[d>>0]&1))A=f;else A=c[h>>2]|0;c[p>>2]=A+B}C=y+12|0;D=c[C>>2]|0;B=y+16|0;if((D|0)==(c[B>>2]|0))D=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else D=c[D>>2]|0;if(Yk(D,q,u,A,p,w,x,n,t,s,r,v)|0)break;D=c[C>>2]|0;if((D|0)==(c[B>>2]|0)){md[c[(c[y>>2]|0)+40>>2]&127](y)|0;continue}else{c[C>>2]=D+4;continue}}u=a[n>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[n+4>>2]|0;if(((u|0)!=0?(a[q>>0]|0)!=0:0)?(o=c[s>>2]|0,(o-t|0)<160):0){D=c[r>>2]|0;c[s>>2]=o+4;c[o>>2]=D}g[k>>2]=+Cp(A,c[p>>2]|0,j);hn(n,t,c[s>>2]|0,j);if(!y){k=0;o=1}else{k=c[y+12>>2]|0;if((k|0)==(c[y+16>>2]|0))k=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else k=c[k>>2]|0;o=(k|0)==-1;k=o?0:y;o=o?1:0}if(z){p=c[z+12>>2]|0;if((p|0)==(c[z+16>>2]|0))p=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else p=c[p>>2]|0;if((p|0)!=-1){if(!o)l=59}else l=57}else l=57;if((l|0)==57?o:0)l=59;if((l|0)==59)c[j>>2]=c[j>>2]|2;c[b>>2]=k;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[n>>0]&1)){i=m;return}Uq(c[n+8>>2]|0);i=m;return}function Pk(b,d,e,f,g,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;m=i;i=i+352|0;v=m+208|0;w=m+184|0;x=m+4|0;n=m+8|0;d=m+196|0;p=m;t=m+24|0;s=m+192|0;r=m+188|0;q=m+337|0;u=m+336|0;y=c[e>>2]|0;z=c[f>>2]|0;Xk(n,g,v,w,x);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){A=d+1|0;f=A;g=d+8|0}else{A=d+8|0;f=d+1|0;g=A;A=c[A>>2]|0}c[p>>2]=A;c[s>>2]=t;c[r>>2]=0;a[q>>0]=1;a[u>>0]=69;e=d+4|0;w=c[w>>2]|0;x=c[x>>2]|0;while(1){if(!y){B=1;y=0}else{B=c[y+12>>2]|0;if((B|0)==(c[y+16>>2]|0))B=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else B=c[B>>2]|0;D=(B|0)==-1;B=D?1:0;y=D?0:y}if(z){C=c[z+12>>2]|0;if((C|0)==(c[z+16>>2]|0))C=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else C=c[C>>2]|0;if((C|0)!=-1){if(!B)break}else l=16}else l=16;if((l|0)==16){l=0;if(B){z=0;break}else z=0}D=a[d>>0]|0;B=(D&1)==0;if(B)C=(D&255)>>>1;else C=c[e>>2]|0;if((c[p>>2]|0)==(A+C|0)){if(B)B=(D&255)>>>1;else B=c[e>>2]|0;Ki(d,B<<1);if(!(a[d>>0]&1))A=10;else A=(c[d>>2]&-2)+ -1|0;Ki(d,A);if(!(a[d>>0]&1))A=f;else A=c[g>>2]|0;c[p>>2]=A+B}C=y+12|0;D=c[C>>2]|0;B=y+16|0;if((D|0)==(c[B>>2]|0))D=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else D=c[D>>2]|0;if(Yk(D,q,u,A,p,w,x,n,t,s,r,v)|0)break;D=c[C>>2]|0;if((D|0)==(c[B>>2]|0)){md[c[(c[y>>2]|0)+40>>2]&127](y)|0;continue}else{c[C>>2]=D+4;continue}}u=a[n>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[n+4>>2]|0;if(((u|0)!=0?(a[q>>0]|0)!=0:0)?(o=c[s>>2]|0,(o-t|0)<160):0){D=c[r>>2]|0;c[s>>2]=o+4;c[o>>2]=D}h[k>>3]=+Bp(A,c[p>>2]|0,j);hn(n,t,c[s>>2]|0,j);if(!y){k=0;o=1}else{k=c[y+12>>2]|0;if((k|0)==(c[y+16>>2]|0))k=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else k=c[k>>2]|0;o=(k|0)==-1;k=o?0:y;o=o?1:0}if(z){p=c[z+12>>2]|0;if((p|0)==(c[z+16>>2]|0))p=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else p=c[p>>2]|0;if((p|0)!=-1){if(!o)l=59}else l=57}else l=57;if((l|0)==57?o:0)l=59;if((l|0)==59)c[j>>2]=c[j>>2]|2;c[b>>2]=k;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[n>>0]&1)){i=m;return}Uq(c[n+8>>2]|0);i=m;return}function Qk(b,d,e,f,g,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;m=i;i=i+352|0;v=m+208|0;w=m+184|0;x=m+4|0;n=m+8|0;d=m+196|0;p=m;t=m+24|0;s=m+192|0;r=m+188|0;q=m+337|0;u=m+336|0;y=c[e>>2]|0;z=c[f>>2]|0;Xk(n,g,v,w,x);c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;Ki(d,10);if(!(a[d>>0]&1)){A=d+1|0;f=A;g=d+8|0}else{A=d+8|0;f=d+1|0;g=A;A=c[A>>2]|0}c[p>>2]=A;c[s>>2]=t;c[r>>2]=0;a[q>>0]=1;a[u>>0]=69;e=d+4|0;w=c[w>>2]|0;x=c[x>>2]|0;while(1){if(!y){B=1;y=0}else{B=c[y+12>>2]|0;if((B|0)==(c[y+16>>2]|0))B=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else B=c[B>>2]|0;D=(B|0)==-1;B=D?1:0;y=D?0:y}if(z){C=c[z+12>>2]|0;if((C|0)==(c[z+16>>2]|0))C=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else C=c[C>>2]|0;if((C|0)!=-1){if(!B)break}else l=16}else l=16;if((l|0)==16){l=0;if(B){z=0;break}else z=0}D=a[d>>0]|0;B=(D&1)==0;if(B)C=(D&255)>>>1;else C=c[e>>2]|0;if((c[p>>2]|0)==(A+C|0)){if(B)B=(D&255)>>>1;else B=c[e>>2]|0;Ki(d,B<<1);if(!(a[d>>0]&1))A=10;else A=(c[d>>2]&-2)+ -1|0;Ki(d,A);if(!(a[d>>0]&1))A=f;else A=c[g>>2]|0;c[p>>2]=A+B}C=y+12|0;D=c[C>>2]|0;B=y+16|0;if((D|0)==(c[B>>2]|0))D=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else D=c[D>>2]|0;if(Yk(D,q,u,A,p,w,x,n,t,s,r,v)|0)break;D=c[C>>2]|0;if((D|0)==(c[B>>2]|0)){md[c[(c[y>>2]|0)+40>>2]&127](y)|0;continue}else{c[C>>2]=D+4;continue}}u=a[n>>0]|0;if(!(u&1))u=(u&255)>>>1;else u=c[n+4>>2]|0;if(((u|0)!=0?(a[q>>0]|0)!=0:0)?(o=c[s>>2]|0,(o-t|0)<160):0){D=c[r>>2]|0;c[s>>2]=o+4;c[o>>2]=D}h[k>>3]=+Ap(A,c[p>>2]|0,j);hn(n,t,c[s>>2]|0,j);if(!y){k=0;o=1}else{k=c[y+12>>2]|0;if((k|0)==(c[y+16>>2]|0))k=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else k=c[k>>2]|0;o=(k|0)==-1;k=o?0:y;o=o?1:0}if(z){p=c[z+12>>2]|0;if((p|0)==(c[z+16>>2]|0))p=md[c[(c[z>>2]|0)+36>>2]&127](z)|0;else p=c[p>>2]|0;if((p|0)!=-1){if(!o)l=59}else l=57}else l=57;if((l|0)==57?o:0)l=59;if((l|0)==59)c[j>>2]=c[j>>2]|2;c[b>>2]=k;if(a[d>>0]&1)Uq(c[d+8>>2]|0);if(!(a[n>>0]&1)){i=m;return}Uq(c[n+8>>2]|0);i=m;return}function Rk(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=i;i=i+320|0;n=d;p=d+168|0;l=d+288|0;m=d+276|0;o=d+300|0;q=d+8|0;s=d+272|0;r=d+304|0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;g=c[g+28>>2]|0;z=g+4|0;c[z>>2]=(c[z>>2]|0)+1;z=Sn(g,19064)|0;sd[c[(c[z>>2]|0)+48>>2]&7](z,17600,17626|0,p)|0;z=g+4|0;A=c[z>>2]|0;c[z>>2]=A+ -1;if(!A)jd[c[(c[g>>2]|0)+8>>2]&255](g);c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;Ki(m,10);if(!(a[m>>0]&1)){w=m+1|0;g=w;t=m+8|0}else{w=m+8|0;g=m+1|0;t=w;w=c[w>>2]|0}c[o>>2]=w;c[s>>2]=q;c[r>>2]=0;v=m+4|0;u=c[e>>2]|0;a:while(1){if(u){x=c[u+12>>2]|0;if((x|0)==(c[u+16>>2]|0))x=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else x=c[x>>2]|0;if((x|0)==-1){c[e>>2]=0;y=1;u=0}else y=0}else{y=1;u=0}x=c[f>>2]|0;do if(x){z=c[x+12>>2]|0;if((z|0)==(c[x+16>>2]|0))z=md[c[(c[x>>2]|0)+36>>2]&127](x)|0;else z=c[z>>2]|0;if((z|0)!=-1)if(y)break;else break a;else{c[f>>2]=0;k=22;break}}else k=22;while(0);if((k|0)==22){k=0;if(y){x=0;break}else x=0}A=a[m>>0]|0;z=(A&1)==0;if(z)y=(A&255)>>>1;else y=c[v>>2]|0;if((c[o>>2]|0)==(w+y|0)){if(z)y=(A&255)>>>1;else y=c[v>>2]|0;Ki(m,y<<1);if(!(a[m>>0]&1))w=10;else w=(c[m>>2]&-2)+ -1|0;Ki(m,w);if(!(a[m>>0]&1))w=g;else w=c[t>>2]|0;c[o>>2]=w+y}z=u+12|0;A=c[z>>2]|0;y=u+16|0;if((A|0)==(c[y>>2]|0))A=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else A=c[A>>2]|0;if(Sk(A,16,w,o,r,0,l,q,s,p)|0)break;x=c[z>>2]|0;if((x|0)==(c[y>>2]|0)){md[c[(c[u>>2]|0)+40>>2]&127](u)|0;continue}else{c[z>>2]=x+4;continue}}Ki(m,(c[o>>2]|0)-w|0);if(a[m>>0]&1)g=c[t>>2]|0;A=Dk()|0;c[n>>2]=j;if((Ck(g,A,n)|0)!=1)c[h>>2]=4;if(u){j=c[u+12>>2]|0;if((j|0)==(c[u+16>>2]|0))j=md[c[(c[u>>2]|0)+36>>2]&127](u)|0;else j=c[j>>2]|0;if((j|0)==-1){c[e>>2]=0;u=0;e=1}else e=0}else{u=0;e=1}do if(x){j=c[x+12>>2]|0;if((j|0)==(c[x+16>>2]|0))j=md[c[(c[x>>2]|0)+36>>2]&127](x)|0;else j=c[j>>2]|0;if((j|0)!=-1)if(e)break;else{k=66;break}else{c[f>>2]=0;k=64;break}}else k=64;while(0);if((k|0)==64?e:0)k=66;if((k|0)==66)c[h>>2]=c[h>>2]|2;c[b>>2]=u;if(a[m>>0]&1)Uq(c[m+8>>2]|0);if(!(a[l>>0]&1)){i=d;return}Uq(c[l+8>>2]|0);i=d;return}function Sk(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0;n=i;p=c[f>>2]|0;o=(p|0)==(e|0);do if(o){q=(c[m+96>>2]|0)==(b|0);if(!q?(c[m+100>>2]|0)!=(b|0):0)break;c[f>>2]=e+1;a[e>>0]=q?43:45;c[g>>2]=0;q=0;i=n;return q|0}while(0);q=a[j>>0]|0;if(!(q&1))j=(q&255)>>>1;else j=c[j+4>>2]|0;if((j|0)!=0&(b|0)==(h|0)){o=c[l>>2]|0;if((o-k|0)>=160){q=0;i=n;return q|0}q=c[g>>2]|0;c[l>>2]=o+4;c[o>>2]=q;c[g>>2]=0;q=0;i=n;return q|0}l=m+104|0;k=m;while(1){if((c[k>>2]|0)==(b|0))break;k=k+4|0;if((k|0)==(l|0)){k=l;break}}b=k-m|0;m=b>>2;if((b|0)>92){q=-1;i=n;return q|0}if((d|0)==10|(d|0)==8){if((m|0)>=(d|0)){q=-1;i=n;return q|0}}else if((d|0)==16?(b|0)>=88:0){if(o){q=-1;i=n;return q|0}if((p-e|0)>=3){q=-1;i=n;return q|0}if((a[p+ -1>>0]|0)!=48){q=-1;i=n;return q|0}c[g>>2]=0;q=a[17600+m>>0]|0;c[f>>2]=p+1;a[p>>0]=q;q=0;i=n;return q|0}q=a[17600+m>>0]|0;c[f>>2]=p+1;a[p>>0]=q;c[g>>2]=(c[g>>2]|0)+1;q=0;i=n;return q|0}function Tk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;d=c[d+28>>2]|0;h=d+4|0;c[h>>2]=(c[h>>2]|0)+1;h=Sn(d,19072)|0;sd[c[(c[h>>2]|0)+32>>2]&7](h,17600,17626|0,e)|0;e=Sn(d,19216)|0;a[f>>0]=md[c[(c[e>>2]|0)+16>>2]&127](e)|0;kd[c[(c[e>>2]|0)+20>>2]&63](b,e);f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){i=g;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);i=g;return}function Uk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;h=i;d=c[d+28>>2]|0;j=d+4|0;c[j>>2]=(c[j>>2]|0)+1;j=Sn(d,19072)|0;sd[c[(c[j>>2]|0)+32>>2]&7](j,17600,17632|0,e)|0;e=Sn(d,19216)|0;a[f>>0]=md[c[(c[e>>2]|0)+12>>2]&127](e)|0;a[g>>0]=md[c[(c[e>>2]|0)+16>>2]&127](e)|0;kd[c[(c[e>>2]|0)+20>>2]&63](b,e);f=d+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){i=h;return}jd[c[(c[d>>2]|0)+8>>2]&255](d);i=h;return}function Vk(b,e,f,g,h,j,k,l,m,n,o,p){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0;q=i;if(b<<24>>24==j<<24>>24){if(!(a[e>>0]|0)){k=-1;i=q;return k|0}a[e>>0]=0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=46;h=a[l>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[l+4>>2]|0;if(!h){k=0;i=q;return k|0}h=c[n>>2]|0;if((h-m|0)>=160){k=0;i=q;return k|0}k=c[o>>2]|0;c[n>>2]=h+4;c[h>>2]=k;k=0;i=q;return k|0}if(b<<24>>24==k<<24>>24){j=a[l>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+4>>2]|0;if(j){if(!(a[e>>0]|0)){k=-1;i=q;return k|0}h=c[n>>2]|0;if((h-m|0)>=160){k=0;i=q;return k|0}k=c[o>>2]|0;c[n>>2]=h+4;c[h>>2]=k;c[o>>2]=0;k=0;i=q;return k|0}}j=p+32|0;k=p;do{if((a[k>>0]|0)==b<<24>>24){j=k;break}k=k+1|0}while((k|0)!=(j|0));b=j-p|0;if((b|0)>31){k=-1;i=q;return k|0}p=a[17600+b>>0]|0;if((b|0)==23|(b|0)==22){a[f>>0]=80;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=p;k=0;i=q;return k|0}else if((b|0)==24|(b|0)==25){o=c[h>>2]|0;if((o|0)!=(g|0)?(d[o+ -1>>0]&95|0)!=(d[f>>0]&127|0):0){k=-1;i=q;return k|0}c[h>>2]=o+1;a[o>>0]=p;k=0;i=q;return k|0}else{g=p&95;if((g|0)==(a[f>>0]|0)?(a[f>>0]=g|128,(a[e>>0]|0)!=0):0){a[e>>0]=0;f=a[l>>0]|0;if(!(f&1))l=(f&255)>>>1;else l=c[l+4>>2]|0;if((l|0)!=0?(r=c[n>>2]|0,(r-m|0)<160):0){k=c[o>>2]|0;c[n>>2]=r+4;c[r>>2]=k}}k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=p;if((b|0)>21){k=0;i=q;return k|0}c[o>>2]=(c[o>>2]|0)+1;k=0;i=q;return k|0}return 0}function Wk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;b=c[b+28>>2]|0;g=b+4|0;c[g>>2]=(c[g>>2]|0)+1;g=Sn(b,19064)|0;sd[c[(c[g>>2]|0)+48>>2]&7](g,17600,17626|0,d)|0;d=Sn(b,19224)|0;c[e>>2]=md[c[(c[d>>2]|0)+16>>2]&127](d)|0;kd[c[(c[d>>2]|0)+20>>2]&63](a,d);e=b+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=f;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);i=f;return}function Xk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;b=c[b+28>>2]|0;h=b+4|0;c[h>>2]=(c[h>>2]|0)+1;h=Sn(b,19064)|0;sd[c[(c[h>>2]|0)+48>>2]&7](h,17600,17632|0,d)|0;d=Sn(b,19224)|0;c[e>>2]=md[c[(c[d>>2]|0)+12>>2]&127](d)|0;c[f>>2]=md[c[(c[d>>2]|0)+16>>2]&127](d)|0;kd[c[(c[d>>2]|0)+20>>2]&63](a,d);e=b+4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if(d){i=g;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);i=g;return}function Yk(b,e,f,g,h,j,k,l,m,n,o,p){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0;q=i;if((b|0)==(j|0)){if(!(a[e>>0]|0)){k=-1;i=q;return k|0}a[e>>0]=0;k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=46;h=a[l>>0]|0;if(!(h&1))h=(h&255)>>>1;else h=c[l+4>>2]|0;if(!h){k=0;i=q;return k|0}h=c[n>>2]|0;if((h-m|0)>=160){k=0;i=q;return k|0}k=c[o>>2]|0;c[n>>2]=h+4;c[h>>2]=k;k=0;i=q;return k|0}if((b|0)==(k|0)){j=a[l>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+4>>2]|0;if(j){if(!(a[e>>0]|0)){k=-1;i=q;return k|0}h=c[n>>2]|0;if((h-m|0)>=160){k=0;i=q;return k|0}k=c[o>>2]|0;c[n>>2]=h+4;c[h>>2]=k;c[o>>2]=0;k=0;i=q;return k|0}}j=p+128|0;k=p;do{if((c[k>>2]|0)==(b|0)){j=k;break}k=k+4|0}while((k|0)!=(j|0));b=j-p|0;j=b>>2;if((b|0)>124){k=-1;i=q;return k|0}p=a[17600+j>>0]|0;if((j|0)==23|(j|0)==22)a[f>>0]=80;else if(!((j|0)==24|(j|0)==25)){g=p&95;if((g|0)==(a[f>>0]|0)?(a[f>>0]=g|128,(a[e>>0]|0)!=0):0){a[e>>0]=0;f=a[l>>0]|0;if(!(f&1))l=(f&255)>>>1;else l=c[l+4>>2]|0;if((l|0)!=0?(r=c[n>>2]|0,(r-m|0)<160):0){k=c[o>>2]|0;c[n>>2]=r+4;c[r>>2]=k}}}else{o=c[h>>2]|0;if((o|0)!=(g|0)?(d[o+ -1>>0]&95|0)!=(d[f>>0]&127|0):0){k=-1;i=q;return k|0}c[h>>2]=o+1;a[o>>0]=p;k=0;i=q;return k|0}k=c[h>>2]|0;c[h>>2]=k+1;a[k>>0]=p;if((b|0)>84){k=0;i=q;return k|0}c[o>>2]=(c[o>>2]|0)+1;k=0;i=q;return k|0}function Zk(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function _k(a){a=a|0;return}function $k(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;j=i;i=i+32|0;l=j+16|0;m=j+12|0;k=j;if(!(c[f+4>>2]&1)){n=c[(c[d>>2]|0)+24>>2]|0;c[m>>2]=c[e>>2];o=h&1;c[l+0>>2]=c[m+0>>2];ud[n&31](b,d,l,f,g,o);i=j;return}l=c[f+28>>2]|0;d=l+4|0;c[d>>2]=(c[d>>2]|0)+1;d=Sn(l,19216)|0;n=l+4|0;o=c[n>>2]|0;c[n>>2]=o+ -1;if(!o)jd[c[(c[l>>2]|0)+8>>2]&255](l);l=c[d>>2]|0;if(h)kd[c[l+24>>2]&63](k,d);else kd[c[l+28>>2]&63](k,d);g=a[k>>0]|0;if(!(g&1)){h=k+1|0;m=h;d=k+8|0}else{d=k+8|0;m=c[d>>2]|0;h=k+1|0}l=k+4|0;while(1){f=(g&1)==0;if(f){n=h;g=(g&255)>>>1}else{n=c[d>>2]|0;g=c[l>>2]|0}if((m|0)==(n+g|0))break;n=a[m>>0]|0;f=c[e>>2]|0;do if(f){o=f+24|0;g=c[o>>2]|0;if((g|0)!=(c[f+28>>2]|0)){c[o>>2]=g+1;a[g>>0]=n;break}if((vd[c[(c[f>>2]|0)+52>>2]&63](f,n&255)|0)==-1)c[e>>2]=0}while(0);g=a[k>>0]|0;m=m+1|0}c[b>>2]=c[e>>2];if(f){i=j;return}Uq(c[k+8>>2]|0);i=j;return}function al(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=i;i=i+64|0;p=l;r=l+16|0;n=l+24|0;d=l+36|0;m=l+8|0;k=l+4|0;o=l+12|0;a[r+0>>0]=a[17880]|0;a[r+1>>0]=a[17881]|0;a[r+2>>0]=a[17882]|0;a[r+3>>0]=a[17883]|0;a[r+4>>0]=a[17884]|0;a[r+5>>0]=a[17885]|0;q=f+4|0;bl(r+1|0,17784,1,c[q>>2]|0);s=Dk()|0;c[p>>2]=h;p=cl(n,12,s,r,p)|0;h=n+p|0;q=c[q>>2]&176;do if((q|0)==16){q=a[n>>0]|0;if(q<<24>>24==43|q<<24>>24==45){p=n+1|0;break}if((p|0)>1&q<<24>>24==48?(s=a[n+1>>0]|0,s<<24>>24==88|s<<24>>24==120):0)p=n+2|0;else j=7}else if((q|0)==32)p=h;else j=7;while(0);if((j|0)==7)p=n;j=c[f+28>>2]|0;c[o>>2]=j;j=j+4|0;c[j>>2]=(c[j>>2]|0)+1;dl(n,p,h,d,m,k,o);j=c[o>>2]|0;r=j+4|0;s=c[r>>2]|0;c[r>>2]=s+ -1;if(s){q=c[e>>2]|0;r=c[m>>2]|0;s=c[k>>2]|0;Sg(b,q,d,r,s,f,g);i=l;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);q=c[e>>2]|0;r=c[m>>2]|0;s=c[k>>2]|0;Sg(b,q,d,r,s,f,g);i=l;return}function bl(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;if(e&2048){a[b>>0]=43;b=b+1|0}if(e&512){a[b>>0]=35;b=b+1|0}g=a[c>>0]|0;if(g<<24>>24)while(1){c=c+1|0;h=b+1|0;a[b>>0]=g;g=a[c>>0]|0;if(!(g<<24>>24)){b=h;break}else b=h}c=e&74;if((c|0)==64){a[b>>0]=111;i=f;return}else if((c|0)==8)if(!(e&16384)){a[b>>0]=120;i=f;return}else{a[b>>0]=88;i=f;return}else if(d){a[b>>0]=100;i=f;return}else{a[b>>0]=117;i=f;return}}function cl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;i=i+16|0;h=g;c[h>>2]=f;d=Yb(d|0)|0;e=fr(a,b,e,h)|0;if(!d){i=g;return e|0}Yb(d|0)|0;i=g;return e|0}function dl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;l=i;i=i+16|0;k=l;n=Sn(c[j>>2]|0,19072)|0;o=Sn(c[j>>2]|0,19216)|0;kd[c[(c[o>>2]|0)+20>>2]&63](k,o);j=a[k>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[k+4>>2]|0;if(j){c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){v=vd[c[(c[n>>2]|0)+28>>2]&63](n,j)|0;j=c[h>>2]|0;c[h>>2]=j+1;a[j>>0]=v;j=b+1|0}else j=b;if(((e-j|0)>1?(a[j>>0]|0)==48:0)?(q=j+1|0,v=a[q>>0]|0,v<<24>>24==88|v<<24>>24==120):0){v=vd[c[(c[n>>2]|0)+28>>2]&63](n,48)|0;u=c[h>>2]|0;c[h>>2]=u+1;a[u>>0]=v;u=vd[c[(c[n>>2]|0)+28>>2]&63](n,a[q>>0]|0)|0;v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=u;j=j+2|0}if((j|0)!=(e|0)?(p=e+ -1|0,p>>>0>j>>>0):0){q=j;do{v=a[q>>0]|0;a[q>>0]=a[p>>0]|0;a[p>>0]=v;q=q+1|0;p=p+ -1|0}while(q>>>0

        >>0)}s=md[c[(c[o>>2]|0)+16>>2]&127](o)|0;if(j>>>0>>0){o=k+1|0;r=k+4|0;p=k+8|0;u=0;t=0;q=j;while(1){v=a[((a[k>>0]&1)==0?o:c[p>>2]|0)+t>>0]|0;if(v<<24>>24!=0&(u|0)==(v<<24>>24|0)){u=c[h>>2]|0;c[h>>2]=u+1;a[u>>0]=s;u=a[k>>0]|0;if(!(u&1))v=(u&255)>>>1;else v=c[r>>2]|0;u=0;t=(t>>>0<(v+ -1|0)>>>0&1)+t|0}w=vd[c[(c[n>>2]|0)+28>>2]&63](n,a[q>>0]|0)|0;v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=w;q=q+1|0;if(q>>>0>=e>>>0)break;else u=u+1|0}}j=f+(j-b)|0;n=c[h>>2]|0;if((j|0)!=(n|0)?(m=n+ -1|0,m>>>0>j>>>0):0)do{w=a[j>>0]|0;a[j>>0]=a[m>>0]|0;a[m>>0]=w;j=j+1|0;m=m+ -1|0}while(j>>>0>>0)}else{sd[c[(c[n>>2]|0)+32>>2]&7](n,b,e,f)|0;c[h>>2]=f+(e-b)}if((d|0)==(e|0))f=c[h>>2]|0;else f=f+(d-b)|0;c[g>>2]=f;if(!(a[k>>0]&1)){i=l;return}Uq(c[k+8>>2]|0);i=l;return}function el(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;i=i+96|0;m=k+8|0;r=k;p=k+64|0;n=k+60|0;d=k+56|0;o=k+52|0;q=r;c[q>>2]=37;c[q+4>>2]=0;q=f+4|0;bl(r+1|0,17792,1,c[q>>2]|0);s=Dk()|0;t=m;c[t>>2]=h;c[t+4>>2]=j;h=cl(p,22,s,r,m)|0;j=p+h|0;q=c[q>>2]&176;do if((q|0)==32)h=j;else if((q|0)==16){q=a[p>>0]|0;if(q<<24>>24==43|q<<24>>24==45){h=p+1|0;break}if((h|0)>1&q<<24>>24==48?(t=a[p+1>>0]|0,t<<24>>24==88|t<<24>>24==120):0)h=p+2|0;else l=7}else l=7;while(0);if((l|0)==7)h=p;l=c[f+28>>2]|0;c[o>>2]=l;l=l+4|0;c[l>>2]=(c[l>>2]|0)+1;dl(p,h,j,m,n,d,o);l=c[o>>2]|0;s=l+4|0;t=c[s>>2]|0;c[s>>2]=t+ -1;if(t){r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;Sg(b,r,m,s,t,f,g);i=k;return}jd[c[(c[l>>2]|0)+8>>2]&255](l);r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;Sg(b,r,m,s,t,f,g);i=k;return}function fl(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=i;i=i+64|0;p=l;r=l+16|0;n=l+24|0;d=l+36|0;m=l+8|0;k=l+4|0;o=l+12|0;a[r+0>>0]=a[17880]|0;a[r+1>>0]=a[17881]|0;a[r+2>>0]=a[17882]|0;a[r+3>>0]=a[17883]|0;a[r+4>>0]=a[17884]|0;a[r+5>>0]=a[17885]|0;q=f+4|0;bl(r+1|0,17784,0,c[q>>2]|0);s=Dk()|0;c[p>>2]=h;p=cl(n,12,s,r,p)|0;h=n+p|0;q=c[q>>2]&176;do if((q|0)==16){q=a[n>>0]|0;if(q<<24>>24==43|q<<24>>24==45){p=n+1|0;break}if((p|0)>1&q<<24>>24==48?(s=a[n+1>>0]|0,s<<24>>24==88|s<<24>>24==120):0)p=n+2|0;else j=7}else if((q|0)==32)p=h;else j=7;while(0);if((j|0)==7)p=n;j=c[f+28>>2]|0;c[o>>2]=j;j=j+4|0;c[j>>2]=(c[j>>2]|0)+1;dl(n,p,h,d,m,k,o);j=c[o>>2]|0;r=j+4|0;s=c[r>>2]|0;c[r>>2]=s+ -1;if(s){q=c[e>>2]|0;r=c[m>>2]|0;s=c[k>>2]|0;Sg(b,q,d,r,s,f,g);i=l;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);q=c[e>>2]|0;r=c[m>>2]|0;s=c[k>>2]|0;Sg(b,q,d,r,s,f,g);i=l;return}function gl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;i=i+96|0;m=k+8|0;r=k;p=k+64|0;n=k+60|0;d=k+56|0;o=k+52|0;q=r;c[q>>2]=37;c[q+4>>2]=0;q=f+4|0;bl(r+1|0,17792,0,c[q>>2]|0);s=Dk()|0;t=m;c[t>>2]=h;c[t+4>>2]=j;h=cl(p,23,s,r,m)|0;j=p+h|0;q=c[q>>2]&176;do if((q|0)==32)h=j;else if((q|0)==16){q=a[p>>0]|0;if(q<<24>>24==43|q<<24>>24==45){h=p+1|0;break}if((h|0)>1&q<<24>>24==48?(t=a[p+1>>0]|0,t<<24>>24==88|t<<24>>24==120):0)h=p+2|0;else l=7}else l=7;while(0);if((l|0)==7)h=p;l=c[f+28>>2]|0;c[o>>2]=l;l=l+4|0;c[l>>2]=(c[l>>2]|0)+1;dl(p,h,j,m,n,d,o);l=c[o>>2]|0;s=l+4|0;t=c[s>>2]|0;c[s>>2]=t+ -1;if(t){r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;Sg(b,r,m,s,t,f,g);i=k;return}jd[c[(c[l>>2]|0)+8>>2]&255](l);r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;Sg(b,r,m,s,t,f,g);i=k;return}function hl(b,d,e,f,g,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=i;i=i+128|0;p=m;u=m+64|0;r=m+92|0;s=m+80|0;l=m+76|0;d=m+72|0;o=m+84|0;n=m+88|0;t=u;c[t>>2]=37;c[t+4>>2]=0;t=f+4|0;v=il(u+1|0,17800,c[t>>2]|0)|0;c[s>>2]=r;w=Dk()|0;if(v){c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}else{h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}if((w|0)>29){if(v){w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}else{w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}s=c[s>>2]|0;if(!s){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else u=s}else{u=r;s=0}v=u+w|0;t=c[t>>2]&176;do if((t|0)==32)t=v;else if((t|0)==16){t=a[u>>0]|0;if(t<<24>>24==43|t<<24>>24==45){t=u+1|0;break}if((w|0)>1&t<<24>>24==48?(x=a[u+1>>0]|0,x<<24>>24==88|x<<24>>24==120):0)t=u+2|0;else q=19}else q=19;while(0);if((q|0)==19)t=u;if((u|0)!=(r|0)){p=Tq(w<<1)|0;if(!p){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else{r=u;q=p}}else q=0;w=c[f+28>>2]|0;c[o>>2]=w;w=w+4|0;c[w>>2]=(c[w>>2]|0)+1;kl(r,t,v,p,l,d,o);o=c[o>>2]|0;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);Sg(n,c[e>>2]|0,p,c[l>>2]|0,c[d>>2]|0,f,g);x=c[n>>2]|0;c[e>>2]=x;c[b>>2]=x;if(q)Uq(q);if(!s){i=m;return}Uq(s);i=m;return}function il(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;if(d&2048){a[b>>0]=43;b=b+1|0}if(d&1024){a[b>>0]=35;b=b+1|0}f=d&260;h=d>>>14;d=(f|0)==260;if(d)g=0;else{a[b>>0]=46;a[b+1>>0]=42;b=b+2|0;g=1}j=a[c>>0]|0;if(j<<24>>24)while(1){c=c+1|0;k=b+1|0;a[b>>0]=j;j=a[c>>0]|0;if(!(j<<24>>24)){b=k;break}else b=k}do if((f|0)==256)if(!(h&1)){a[b>>0]=101;break}else{a[b>>0]=69;break}else if((f|0)==4)if(!(h&1)){a[b>>0]=102;break}else{a[b>>0]=70;break}else{f=(h&1|0)!=0;if(d)if(f){a[b>>0]=65;break}else{a[b>>0]=97;break}else if(f){a[b>>0]=71;break}else{a[b>>0]=103;break}}while(0);i=e;return g|0}function jl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;k=f+16|0;j=f;c[j>>2]=e;b=Yb(b|0)|0;e=Tq(240)|0;do if(e){c[k>>2]=c[j>>2];k=fr(e,240,d,k)|0;if(k>>>0<240){j=Vq(e,k+1|0)|0;c[a>>2]=(j|0)!=0?j:e;break}Uq(e);if((k|0)>=0?(g=k+1|0,h=Tq(g)|0,c[a>>2]=h,(h|0)!=0):0)k=fr(h,g,d,j)|0;else k=-1}else k=-1;while(0);if(!b){i=f;return k|0}Yb(b|0)|0;i=f;return k|0}function kl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;k=i;i=i+16|0;l=k;m=Sn(c[j>>2]|0,19072)|0;j=Sn(c[j>>2]|0,19216)|0;kd[c[(c[j>>2]|0)+20>>2]&63](l,j);c[h>>2]=f;n=a[b>>0]|0;if(n<<24>>24==43|n<<24>>24==45){y=vd[c[(c[m>>2]|0)+28>>2]&63](m,n)|0;t=c[h>>2]|0;c[h>>2]=t+1;a[t>>0]=y;t=b+1|0}else t=b;n=e;a:do if(((n-t|0)>1?(a[t>>0]|0)==48:0)?(p=t+1|0,y=a[p>>0]|0,y<<24>>24==88|y<<24>>24==120):0){y=vd[c[(c[m>>2]|0)+28>>2]&63](m,48)|0;x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=y;t=t+2|0;x=vd[c[(c[m>>2]|0)+28>>2]&63](m,a[p>>0]|0)|0;y=c[h>>2]|0;c[h>>2]=y+1;a[y>>0]=x;if(t>>>0>>0){q=t;while(1){y=a[q>>0]|0;Dk()|0;y=y<<24>>24;if((y+ -48|0)>>>0>=10?((y|32)+ -97|0)>>>0>=6:0){p=t;break a}q=q+1|0;if(q>>>0>=e>>>0){p=t;break}}}else{p=t;q=t}}else s=5;while(0);b:do if((s|0)==5)if(t>>>0>>0){q=t;while(1){y=a[q>>0]|0;Dk()|0;s=q+1|0;if(((y<<24>>24)+ -48|0)>>>0>=10){p=t;break b}if(s>>>0>>0)q=s;else{p=t;q=s;break}}}else{p=t;q=t}while(0);s=a[l>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[l+4>>2]|0;if(s){if((p|0)!=(q|0)?(r=q+ -1|0,r>>>0>p>>>0):0){s=p;do{y=a[s>>0]|0;a[s>>0]=a[r>>0]|0;a[r>>0]=y;s=s+1|0;r=r+ -1|0}while(s>>>0>>0)}u=md[c[(c[j>>2]|0)+16>>2]&127](j)|0;if(p>>>0>>0){r=l+1|0;s=l+4|0;t=l+8|0;x=0;w=0;v=p;while(1){y=a[((a[l>>0]&1)==0?r:c[t>>2]|0)+w>>0]|0;if(y<<24>>24>0&(x|0)==(y<<24>>24|0)){x=c[h>>2]|0;c[h>>2]=x+1;a[x>>0]=u;x=a[l>>0]|0;if(!(x&1))y=(x&255)>>>1;else y=c[s>>2]|0;x=0;w=(w>>>0<(y+ -1|0)>>>0&1)+w|0}z=vd[c[(c[m>>2]|0)+28>>2]&63](m,a[v>>0]|0)|0;y=c[h>>2]|0;c[h>>2]=y+1;a[y>>0]=z;v=v+1|0;if(v>>>0>=q>>>0)break;else x=x+1|0}}r=f+(p-b)|0;p=c[h>>2]|0;if((r|0)!=(p|0)?(o=p+ -1|0,o>>>0>r>>>0):0)do{z=a[r>>0]|0;a[r>>0]=a[o>>0]|0;a[o>>0]=z;r=r+1|0;o=o+ -1|0}while(r>>>0>>0)}else{sd[c[(c[m>>2]|0)+32>>2]&7](m,p,q,c[h>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+(q-p)}c:do if(q>>>0>>0){while(1){o=a[q>>0]|0;if(o<<24>>24==46)break;y=vd[c[(c[m>>2]|0)+28>>2]&63](m,o)|0;z=c[h>>2]|0;c[h>>2]=z+1;a[z>>0]=y;q=q+1|0;if(q>>>0>=e>>>0)break c}y=md[c[(c[j>>2]|0)+12>>2]&127](j)|0;z=c[h>>2]|0;c[h>>2]=z+1;a[z>>0]=y;q=q+1|0}while(0);sd[c[(c[m>>2]|0)+32>>2]&7](m,q,e,c[h>>2]|0)|0;m=(c[h>>2]|0)+(n-q)|0;c[h>>2]=m;if((d|0)!=(e|0))m=f+(d-b)|0;c[g>>2]=m;if(!(a[l>>0]&1)){i=k;return}Uq(c[l+8>>2]|0);i=k;return}function ll(b,d,e,f,g,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;l=i;i=i+128|0;p=l;u=l+64|0;r=l+92|0;s=l+80|0;m=l+76|0;n=l+72|0;o=l+84|0;d=l+88|0;t=u;c[t>>2]=37;c[t+4>>2]=0;t=f+4|0;v=il(u+1|0,17808,c[t>>2]|0)|0;c[s>>2]=r;w=Dk()|0;if(v){c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}else{h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}if((w|0)>29){if(v){w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}else{w=Dk()|0;h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}s=c[s>>2]|0;if(!s){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else v=s}else{v=r;s=0}u=v+w|0;t=c[t>>2]&176;do if((t|0)==32)t=u;else if((t|0)==16){t=a[v>>0]|0;if(t<<24>>24==43|t<<24>>24==45){t=v+1|0;break}if((w|0)>1&t<<24>>24==48?(x=a[v+1>>0]|0,x<<24>>24==88|x<<24>>24==120):0)t=v+2|0;else q=19}else q=19;while(0);if((q|0)==19)t=v;if((v|0)!=(r|0)){p=Tq(w<<1)|0;if(!p){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else{r=v;q=p}}else q=0;w=c[f+28>>2]|0;c[o>>2]=w;w=w+4|0;c[w>>2]=(c[w>>2]|0)+1;kl(r,t,u,p,m,n,o);o=c[o>>2]|0;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);Sg(d,c[e>>2]|0,p,c[m>>2]|0,c[n>>2]|0,f,g);c[b>>2]=c[d>>2];Uq(q);Uq(s);i=l;return}function ml(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+80|0;k=j;m=j+60|0;d=j+40|0;a[m+0>>0]=a[17888]|0;a[m+1>>0]=a[17889]|0;a[m+2>>0]=a[17890]|0;a[m+3>>0]=a[17891]|0;a[m+4>>0]=a[17892]|0;a[m+5>>0]=a[17893]|0;n=Dk()|0;c[k>>2]=h;m=cl(d,20,n,m,k)|0;h=d+m|0;n=c[f+4>>2]&176;do if((n|0)==32)n=h;else if((n|0)==16){n=a[d>>0]|0;if(n<<24>>24==43|n<<24>>24==45){n=d+1|0;break}if((m|0)>1&n<<24>>24==48?(o=a[d+1>>0]|0,o<<24>>24==88|o<<24>>24==120):0)n=d+2|0;else l=7}else l=7;while(0);if((l|0)==7)n=d;l=c[f+28>>2]|0;o=l+4|0;c[o>>2]=(c[o>>2]|0)+1;o=Sn(l,19072)|0;q=l+4|0;p=c[q>>2]|0;c[q>>2]=p+ -1;if(!p)jd[c[(c[l>>2]|0)+8>>2]&255](l);sd[c[(c[o>>2]|0)+32>>2]&7](o,d,h,k)|0;l=k+m|0;if((n|0)==(h|0)){q=l;p=c[e>>2]|0;Sg(b,p,k,q,l,f,g);i=j;return}q=k+(n-d)|0;p=c[e>>2]|0;Sg(b,p,k,q,l,f,g);i=j;return}function nl(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function ol(a){a=a|0;return}function pl(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;l=j+16|0;m=j+12|0;k=j;if(!(c[f+4>>2]&1)){k=c[(c[d>>2]|0)+24>>2]|0;c[m>>2]=c[e>>2];n=h&1;c[l+0>>2]=c[m+0>>2];ud[k&31](b,d,l,f,g,n);i=j;return}d=c[f+28>>2]|0;l=d+4|0;c[l>>2]=(c[l>>2]|0)+1;l=Sn(d,19224)|0;g=d+4|0;n=c[g>>2]|0;c[g>>2]=n+ -1;if(!n)jd[c[(c[d>>2]|0)+8>>2]&255](d);d=c[l>>2]|0;if(h)kd[c[d+24>>2]&63](k,l);else kd[c[d+28>>2]&63](k,l);m=a[k>>0]|0;if(!(m&1)){h=k+4|0;d=h;l=k+8|0}else{l=k+8|0;d=c[l>>2]|0;h=k+4|0}while(1){g=(m&1)==0;if(g){f=h;m=(m&255)>>>1}else{f=c[l>>2]|0;m=c[h>>2]|0}if((d|0)==(f+(m<<2)|0))break;n=c[d>>2]|0;g=c[e>>2]|0;if(g){f=g+24|0;m=c[f>>2]|0;if((m|0)==(c[g+28>>2]|0))n=vd[c[(c[g>>2]|0)+52>>2]&63](g,n)|0;else{c[f>>2]=m+4;c[m>>2]=n}if((n|0)==-1)c[e>>2]=0}m=a[k>>0]|0;d=d+4|0}c[b>>2]=c[e>>2];if(g){i=j;return}Uq(c[k+8>>2]|0);i=j;return}function ql(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+128|0;d=l;p=l+108|0;n=l+96|0;m=l+92|0;k=l+88|0;o=l+84|0;a[p+0>>0]=a[17880]|0;a[p+1>>0]=a[17881]|0;a[p+2>>0]=a[17882]|0;a[p+3>>0]=a[17883]|0;a[p+4>>0]=a[17884]|0;a[p+5>>0]=a[17885]|0;q=f+4|0;bl(p+1|0,17784,1,c[q>>2]|0);r=Dk()|0;c[d>>2]=h;p=cl(n,12,r,p,d)|0;h=n+p|0;q=c[q>>2]&176;do if((q|0)==16){q=a[n>>0]|0;if(q<<24>>24==43|q<<24>>24==45){p=n+1|0;break}if((p|0)>1&q<<24>>24==48?(r=a[n+1>>0]|0,r<<24>>24==88|r<<24>>24==120):0)p=n+2|0;else j=7}else if((q|0)==32)p=h;else j=7;while(0);if((j|0)==7)p=n;j=c[f+28>>2]|0;c[o>>2]=j;j=j+4|0;c[j>>2]=(c[j>>2]|0)+1;rl(n,p,h,d,m,k,o);j=c[o>>2]|0;q=j+4|0;r=c[q>>2]|0;c[q>>2]=r+ -1;if(r){p=c[e>>2]|0;q=c[m>>2]|0;r=c[k>>2]|0;sl(b,p,d,q,r,f,g);i=l;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);p=c[e>>2]|0;q=c[m>>2]|0;r=c[k>>2]|0;sl(b,p,d,q,r,f,g);i=l;return}function rl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;l=i;i=i+16|0;k=l;n=Sn(c[j>>2]|0,19064)|0;p=Sn(c[j>>2]|0,19224)|0;kd[c[(c[p>>2]|0)+20>>2]&63](k,p);j=a[k>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[k+4>>2]|0;if(j){c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){v=vd[c[(c[n>>2]|0)+44>>2]&63](n,j)|0;j=c[h>>2]|0;c[h>>2]=j+4;c[j>>2]=v;j=b+1|0}else j=b;if(((e-j|0)>1?(a[j>>0]|0)==48:0)?(q=j+1|0,v=a[q>>0]|0,v<<24>>24==88|v<<24>>24==120):0){v=vd[c[(c[n>>2]|0)+44>>2]&63](n,48)|0;u=c[h>>2]|0;c[h>>2]=u+4;c[u>>2]=v;u=vd[c[(c[n>>2]|0)+44>>2]&63](n,a[q>>0]|0)|0;v=c[h>>2]|0;c[h>>2]=v+4;c[v>>2]=u;j=j+2|0}if((j|0)!=(e|0)?(o=e+ -1|0,o>>>0>j>>>0):0){q=j;do{v=a[q>>0]|0;a[q>>0]=a[o>>0]|0;a[o>>0]=v;q=q+1|0;o=o+ -1|0}while(q>>>0>>0)}s=md[c[(c[p>>2]|0)+16>>2]&127](p)|0;if(j>>>0>>0){o=k+1|0;r=k+4|0;p=k+8|0;u=0;t=0;q=j;while(1){v=a[((a[k>>0]&1)==0?o:c[p>>2]|0)+t>>0]|0;if(v<<24>>24!=0&(u|0)==(v<<24>>24|0)){u=c[h>>2]|0;c[h>>2]=u+4;c[u>>2]=s;u=a[k>>0]|0;if(!(u&1))v=(u&255)>>>1;else v=c[r>>2]|0;u=0;t=(t>>>0<(v+ -1|0)>>>0&1)+t|0}x=vd[c[(c[n>>2]|0)+44>>2]&63](n,a[q>>0]|0)|0;w=c[h>>2]|0;v=w+4|0;c[h>>2]=v;c[w>>2]=x;q=q+1|0;if(q>>>0>=e>>>0)break;else u=u+1|0}}else v=c[h>>2]|0;n=f+(j-b<<2)|0;if((n|0)!=(v|0)?(m=v+ -4|0,m>>>0>n>>>0):0)do{x=c[n>>2]|0;c[n>>2]=c[m>>2];c[m>>2]=x;n=n+4|0;m=m+ -4|0}while(n>>>0>>0)}else{sd[c[(c[n>>2]|0)+48>>2]&7](n,b,e,f)|0;v=f+(e-b<<2)|0;c[h>>2]=v}if((d|0)!=(e|0))v=f+(d-b<<2)|0;c[g>>2]=v;if(!(a[k>>0]&1)){i=l;return}Uq(c[k+8>>2]|0);i=l;return}function sl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;k=i;i=i+16|0;l=k;if(!d){c[b>>2]=0;i=k;return}p=e;n=g-p>>2;h=h+12|0;m=c[h>>2]|0;n=(m|0)>(n|0)?m-n|0:0;m=f;p=m-p|0;o=p>>2;if((p|0)>0?(fd[c[(c[d>>2]|0)+48>>2]&31](d,e,o)|0)!=(o|0):0){c[b>>2]=0;i=k;return}do if((n|0)>0){Si(l,n,j);if(!(a[l>>0]&1))e=l+4|0;else e=c[l+8>>2]|0;if((fd[c[(c[d>>2]|0)+48>>2]&31](d,e,n)|0)==(n|0)){if(!(a[l>>0]&1))break;Uq(c[l+8>>2]|0);break}c[b>>2]=0;if(!(a[l>>0]&1)){i=k;return}Uq(c[l+8>>2]|0);i=k;return}while(0);p=g-m|0;l=p>>2;if((p|0)>0?(fd[c[(c[d>>2]|0)+48>>2]&31](d,f,l)|0)!=(l|0):0){c[b>>2]=0;i=k;return}c[h>>2]=0;c[b>>2]=d;i=k;return}function tl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;i=i+208|0;m=k+8|0;r=k;p=k+184|0;n=k+180|0;d=k+176|0;o=k+172|0;q=r;c[q>>2]=37;c[q+4>>2]=0;q=f+4|0;bl(r+1|0,17792,1,c[q>>2]|0);s=Dk()|0;t=m;c[t>>2]=h;c[t+4>>2]=j;h=cl(p,22,s,r,m)|0;j=p+h|0;q=c[q>>2]&176;do if((q|0)==16){q=a[p>>0]|0;if(q<<24>>24==43|q<<24>>24==45){h=p+1|0;break}if((h|0)>1&q<<24>>24==48?(t=a[p+1>>0]|0,t<<24>>24==88|t<<24>>24==120):0)h=p+2|0;else l=7}else if((q|0)==32)h=j;else l=7;while(0);if((l|0)==7)h=p;l=c[f+28>>2]|0;c[o>>2]=l;l=l+4|0;c[l>>2]=(c[l>>2]|0)+1;rl(p,h,j,m,n,d,o);l=c[o>>2]|0;s=l+4|0;t=c[s>>2]|0;c[s>>2]=t+ -1;if(t){r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;sl(b,r,m,s,t,f,g);i=k;return}jd[c[(c[l>>2]|0)+8>>2]&255](l);r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;sl(b,r,m,s,t,f,g);i=k;return}function ul(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+128|0;d=l;p=l+108|0;n=l+96|0;m=l+92|0;k=l+88|0;o=l+84|0;a[p+0>>0]=a[17880]|0;a[p+1>>0]=a[17881]|0;a[p+2>>0]=a[17882]|0;a[p+3>>0]=a[17883]|0;a[p+4>>0]=a[17884]|0;a[p+5>>0]=a[17885]|0;q=f+4|0;bl(p+1|0,17784,0,c[q>>2]|0);r=Dk()|0;c[d>>2]=h;p=cl(n,12,r,p,d)|0;h=n+p|0;q=c[q>>2]&176;do if((q|0)==16){q=a[n>>0]|0;if(q<<24>>24==43|q<<24>>24==45){p=n+1|0;break}if((p|0)>1&q<<24>>24==48?(r=a[n+1>>0]|0,r<<24>>24==88|r<<24>>24==120):0)p=n+2|0;else j=7}else if((q|0)==32)p=h;else j=7;while(0);if((j|0)==7)p=n;j=c[f+28>>2]|0;c[o>>2]=j;j=j+4|0;c[j>>2]=(c[j>>2]|0)+1;rl(n,p,h,d,m,k,o);j=c[o>>2]|0;q=j+4|0;r=c[q>>2]|0;c[q>>2]=r+ -1;if(r){p=c[e>>2]|0;q=c[m>>2]|0;r=c[k>>2]|0;sl(b,p,d,q,r,f,g);i=l;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);p=c[e>>2]|0;q=c[m>>2]|0;r=c[k>>2]|0;sl(b,p,d,q,r,f,g);i=l;return}function vl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;i=i+224|0;m=k+8|0;r=k;p=k+192|0;n=k+188|0;d=k+184|0;o=k+180|0;q=r;c[q>>2]=37;c[q+4>>2]=0;q=f+4|0;bl(r+1|0,17792,0,c[q>>2]|0);s=Dk()|0;t=m;c[t>>2]=h;c[t+4>>2]=j;h=cl(p,23,s,r,m)|0;j=p+h|0;q=c[q>>2]&176;do if((q|0)==16){q=a[p>>0]|0;if(q<<24>>24==43|q<<24>>24==45){h=p+1|0;break}if((h|0)>1&q<<24>>24==48?(t=a[p+1>>0]|0,t<<24>>24==88|t<<24>>24==120):0)h=p+2|0;else l=7}else if((q|0)==32)h=j;else l=7;while(0);if((l|0)==7)h=p;l=c[f+28>>2]|0;c[o>>2]=l;l=l+4|0;c[l>>2]=(c[l>>2]|0)+1;rl(p,h,j,m,n,d,o);l=c[o>>2]|0;s=l+4|0;t=c[s>>2]|0;c[s>>2]=t+ -1;if(t){r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;sl(b,r,m,s,t,f,g);i=k;return}jd[c[(c[l>>2]|0)+8>>2]&255](l);r=c[e>>2]|0;s=c[n>>2]|0;t=c[d>>2]|0;sl(b,r,m,s,t,f,g);i=k;return}function wl(b,d,e,f,g,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=i;i=i+304|0;p=m;u=m+232|0;r=m+260|0;s=m+248|0;n=m+244|0;l=m+240|0;o=m+252|0;d=m+256|0;t=u;c[t>>2]=37;c[t+4>>2]=0;t=f+4|0;v=il(u+1|0,17800,c[t>>2]|0)|0;c[s>>2]=r;w=Dk()|0;if(v){c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}else{h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}if((w|0)>29){if(v){w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}else{w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}s=c[s>>2]|0;if(!s){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else u=s}else{u=r;s=0}v=u+w|0;t=c[t>>2]&176;do if((t|0)==16){t=a[u>>0]|0;if(t<<24>>24==43|t<<24>>24==45){t=u+1|0;break}if((w|0)>1&t<<24>>24==48?(x=a[u+1>>0]|0,x<<24>>24==88|x<<24>>24==120):0)t=u+2|0;else q=19}else if((t|0)==32)t=v;else q=19;while(0);if((q|0)==19)t=u;if((u|0)!=(r|0)){p=Tq(w<<3)|0;if(!p){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else{r=u;q=p}}else q=0;w=c[f+28>>2]|0;c[o>>2]=w;w=w+4|0;c[w>>2]=(c[w>>2]|0)+1;xl(r,t,v,p,n,l,o);o=c[o>>2]|0;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);sl(d,c[e>>2]|0,p,c[n>>2]|0,c[l>>2]|0,f,g);x=c[d>>2]|0;c[e>>2]=x;c[b>>2]=x;if(!q){Uq(s);i=m;return}Uq(q);Uq(s);i=m;return}function xl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;l=i;i=i+16|0;k=l;m=Sn(c[j>>2]|0,19064)|0;n=Sn(c[j>>2]|0,19224)|0;kd[c[(c[n>>2]|0)+20>>2]&63](k,n);c[h>>2]=f;j=a[b>>0]|0;if(j<<24>>24==43|j<<24>>24==45){y=vd[c[(c[m>>2]|0)+44>>2]&63](m,j)|0;t=c[h>>2]|0;c[h>>2]=t+4;c[t>>2]=y;t=b+1|0}else t=b;j=e;a:do if(((j-t|0)>1?(a[t>>0]|0)==48:0)?(p=t+1|0,y=a[p>>0]|0,y<<24>>24==88|y<<24>>24==120):0){y=vd[c[(c[m>>2]|0)+44>>2]&63](m,48)|0;x=c[h>>2]|0;c[h>>2]=x+4;c[x>>2]=y;t=t+2|0;x=vd[c[(c[m>>2]|0)+44>>2]&63](m,a[p>>0]|0)|0;y=c[h>>2]|0;c[h>>2]=y+4;c[y>>2]=x;if(t>>>0>>0){q=t;while(1){y=a[q>>0]|0;Dk()|0;y=y<<24>>24;if((y+ -48|0)>>>0>=10?((y|32)+ -97|0)>>>0>=6:0){p=t;break a}q=q+1|0;if(q>>>0>=e>>>0){p=t;break}}}else{p=t;q=t}}else s=5;while(0);b:do if((s|0)==5)if(t>>>0>>0){q=t;while(1){y=a[q>>0]|0;Dk()|0;s=q+1|0;if(((y<<24>>24)+ -48|0)>>>0>=10){p=t;break b}if(s>>>0>>0)q=s;else{p=t;q=s;break}}}else{p=t;q=t}while(0);s=a[k>>0]|0;if(!(s&1))s=(s&255)>>>1;else s=c[k+4>>2]|0;if(s){if((p|0)!=(q|0)?(r=q+ -1|0,r>>>0>p>>>0):0){s=p;do{y=a[s>>0]|0;a[s>>0]=a[r>>0]|0;a[r>>0]=y;s=s+1|0;r=r+ -1|0}while(s>>>0>>0)}t=md[c[(c[n>>2]|0)+16>>2]&127](n)|0;if(p>>>0>>0){r=k+1|0;s=k+4|0;v=k+8|0;x=0;w=0;u=p;while(1){y=a[((a[k>>0]&1)==0?r:c[v>>2]|0)+w>>0]|0;if(y<<24>>24>0&(x|0)==(y<<24>>24|0)){x=c[h>>2]|0;c[h>>2]=x+4;c[x>>2]=t;x=a[k>>0]|0;if(!(x&1))y=(x&255)>>>1;else y=c[s>>2]|0;x=0;w=(w>>>0<(y+ -1|0)>>>0&1)+w|0}A=vd[c[(c[m>>2]|0)+44>>2]&63](m,a[u>>0]|0)|0;z=c[h>>2]|0;y=z+4|0;c[h>>2]=y;c[z>>2]=A;u=u+1|0;if(u>>>0>=q>>>0)break;else x=x+1|0}}else y=c[h>>2]|0;p=f+(p-b<<2)|0;if((p|0)!=(y|0)?(o=y+ -4|0,o>>>0>p>>>0):0)do{A=c[p>>2]|0;c[p>>2]=c[o>>2];c[o>>2]=A;p=p+4|0;o=o+ -4|0}while(p>>>0>>0)}else{sd[c[(c[m>>2]|0)+48>>2]&7](m,p,q,c[h>>2]|0)|0;y=(c[h>>2]|0)+(q-p<<2)|0;c[h>>2]=y}c:do if(q>>>0>>0){while(1){o=a[q>>0]|0;if(o<<24>>24==46)break;z=vd[c[(c[m>>2]|0)+44>>2]&63](m,o)|0;A=c[h>>2]|0;y=A+4|0;c[h>>2]=y;c[A>>2]=z;q=q+1|0;if(q>>>0>=e>>>0)break c}z=md[c[(c[n>>2]|0)+12>>2]&127](n)|0;A=c[h>>2]|0;y=A+4|0;c[h>>2]=y;c[A>>2]=z;q=q+1|0}while(0);sd[c[(c[m>>2]|0)+48>>2]&7](m,q,e,y)|0;m=(c[h>>2]|0)+(j-q<<2)|0;c[h>>2]=m;if((d|0)!=(e|0))m=f+(d-b<<2)|0;c[g>>2]=m;if(!(a[k>>0]&1)){i=l;return}Uq(c[k+8>>2]|0);i=l;return}function yl(b,d,e,f,g,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=+j;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;m=i;i=i+304|0;p=m;u=m+232|0;r=m+260|0;s=m+248|0;n=m+244|0;l=m+240|0;o=m+252|0;d=m+256|0;t=u;c[t>>2]=37;c[t+4>>2]=0;t=f+4|0;v=il(u+1|0,17808,c[t>>2]|0)|0;c[s>>2]=r;w=Dk()|0;if(v){c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}else{h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=cl(r,30,w,u,p)|0}if((w|0)>29){if(v){w=Dk()|0;c[p>>2]=c[f+8>>2];x=p+4|0;h[k>>3]=j;c[x>>2]=c[k>>2];c[x+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}else{w=Dk()|0;h[k>>3]=j;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];w=jl(s,w,u,p)|0}s=c[s>>2]|0;if(!s){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else u=s}else{u=r;s=0}v=u+w|0;t=c[t>>2]&176;do if((t|0)==16){t=a[u>>0]|0;if(t<<24>>24==43|t<<24>>24==45){t=u+1|0;break}if((w|0)>1&t<<24>>24==48?(x=a[u+1>>0]|0,x<<24>>24==88|x<<24>>24==120):0)t=u+2|0;else q=19}else if((t|0)==32)t=v;else q=19;while(0);if((q|0)==19)t=u;if((u|0)!=(r|0)){p=Tq(w<<3)|0;if(!p){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else{r=u;q=p}}else q=0;w=c[f+28>>2]|0;c[o>>2]=w;w=w+4|0;c[w>>2]=(c[w>>2]|0)+1;xl(r,t,v,p,n,l,o);o=c[o>>2]|0;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);sl(d,c[e>>2]|0,p,c[n>>2]|0,c[l>>2]|0,f,g);x=c[d>>2]|0;c[e>>2]=x;c[b>>2]=x;if(!q){Uq(s);i=m;return}Uq(q);Uq(s);i=m;return}function zl(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+176|0;k=j;m=j+168|0;d=j+148|0;a[m+0>>0]=a[17888]|0;a[m+1>>0]=a[17889]|0;a[m+2>>0]=a[17890]|0;a[m+3>>0]=a[17891]|0;a[m+4>>0]=a[17892]|0;a[m+5>>0]=a[17893]|0;n=Dk()|0;c[k>>2]=h;m=cl(d,20,n,m,k)|0;h=d+m|0;n=c[f+4>>2]&176;do if((n|0)==16){n=a[d>>0]|0;if(n<<24>>24==43|n<<24>>24==45){n=d+1|0;break}if((m|0)>1&n<<24>>24==48?(o=a[d+1>>0]|0,o<<24>>24==88|o<<24>>24==120):0)n=d+2|0;else l=7}else if((n|0)==32)n=h;else l=7;while(0);if((l|0)==7)n=d;l=c[f+28>>2]|0;o=l+4|0;c[o>>2]=(c[o>>2]|0)+1;o=Sn(l,19064)|0;q=l+4|0;p=c[q>>2]|0;c[q>>2]=p+ -1;if(!p)jd[c[(c[l>>2]|0)+8>>2]&255](l);sd[c[(c[o>>2]|0)+48>>2]&7](o,d,h,k)|0;l=k+(m<<2)|0;if((n|0)==(h|0)){q=l;p=c[e>>2]|0;sl(b,p,k,q,l,f,g);i=j;return}q=k+(n-d<<2)|0;p=c[e>>2]|0;sl(b,p,k,q,l,f,g);i=j;return}function Al(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;o=i;i=i+32|0;t=o+16|0;q=o+12|0;w=o+8|0;s=o+4|0;r=o;x=c[j+28>>2]|0;v=x+4|0;c[v>>2]=(c[v>>2]|0)+1;v=Sn(x,19072)|0;C=x+4|0;D=c[C>>2]|0;c[C>>2]=D+ -1;if(!D)jd[c[(c[x>>2]|0)+8>>2]&255](x);c[k>>2]=0;a:do if((m|0)!=(n|0)){x=v+8|0;y=0;b:while(1){z=y;y=g;while(1){if(z){g=y;break a}if(y)if((c[y+12>>2]|0)==(c[y+16>>2]|0)){D=(md[c[(c[y>>2]|0)+36>>2]&127](y)|0)==-1;g=D?0:y;y=D?0:y}else g=y;else{g=0;y=0}z=(g|0)==0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0)?(md[c[(c[h>>2]|0)+36>>2]&127](h)|0)==-1:0){p=15;break}if(!z){p=16;break b}}else p=15;while(0);if((p|0)==15){p=0;if(z){h=0;p=16;break b}else h=0}if((fd[c[(c[v>>2]|0)+36>>2]&31](v,a[m>>0]|0,0)|0)<<24>>24==37){p=18;break}z=a[m>>0]|0;if(z<<24>>24>-1?(u=c[x>>2]|0,(b[u+(z<<24>>24<<1)>>1]&8192)!=0):0){p=29;break}A=g+12|0;B=c[A>>2]|0;z=g+16|0;if((B|0)==(c[z>>2]|0))B=md[c[(c[g>>2]|0)+36>>2]&127](g)|0;else B=d[B>>0]|0;D=vd[c[(c[v>>2]|0)+12>>2]&63](v,B&255)|0;if(D<<24>>24==(vd[c[(c[v>>2]|0)+12>>2]&63](v,a[m>>0]|0)|0)<<24>>24){p=54;break}c[k>>2]=4;z=4}c:do if((p|0)==18){p=0;z=m+1|0;if((z|0)==(n|0)){p=19;break b}y=fd[c[(c[v>>2]|0)+36>>2]&31](v,a[z>>0]|0,0)|0;if(y<<24>>24==48|y<<24>>24==69){z=m+2|0;if((z|0)==(n|0)){p=22;break b}m=z;z=fd[c[(c[v>>2]|0)+36>>2]&31](v,a[z>>0]|0,0)|0}else{m=z;z=y;y=0}D=c[(c[f>>2]|0)+36>>2]|0;c[s>>2]=g;c[r>>2]=h;c[q+0>>2]=c[s+0>>2];c[t+0>>2]=c[r+0>>2];ld[D&3](w,f,q,t,j,k,l,z,y);m=m+1|0;g=c[w>>2]|0}else if((p|0)==29){while(1){p=0;m=m+1|0;if((m|0)==(n|0)){m=n;break}z=a[m>>0]|0;if(z<<24>>24<=-1)break;if(!(b[u+(z<<24>>24<<1)>>1]&8192))break;else p=29}B=h;A=h;while(1){if(g){if((c[g+12>>2]|0)==(c[g+16>>2]|0)){D=(md[c[(c[g>>2]|0)+36>>2]&127](g)|0)==-1;g=D?0:g;y=D?0:y}}else g=0;C=(g|0)==0;do if(A){if((c[A+12>>2]|0)!=(c[A+16>>2]|0))if(C){z=B;break}else{g=y;break c}if((md[c[(c[A>>2]|0)+36>>2]&127](A)|0)!=-1)if(C^(B|0)==0){z=B;A=B}else{g=y;break c}else{z=0;h=0;p=40}}else{z=B;p=40}while(0);if((p|0)==40){p=0;if(C){g=y;break c}else A=0}C=g+12|0;D=c[C>>2]|0;B=g+16|0;if((D|0)==(c[B>>2]|0))D=md[c[(c[g>>2]|0)+36>>2]&127](g)|0;else D=d[D>>0]|0;if((D&255)<<24>>24<=-1){g=y;break c}if(!(b[(c[x>>2]|0)+(D<<24>>24<<1)>>1]&8192)){g=y;break c}D=c[C>>2]|0;if((D|0)==(c[B>>2]|0)){md[c[(c[g>>2]|0)+40>>2]&127](g)|0;B=z;continue}else{c[C>>2]=D+1;B=z;continue}}}else if((p|0)==54){p=0;B=c[A>>2]|0;if((B|0)==(c[z>>2]|0))md[c[(c[g>>2]|0)+40>>2]&127](g)|0;else c[A>>2]=B+1;m=m+1|0;g=y}while(0);if((m|0)==(n|0))break a;y=c[k>>2]|0}if((p|0)==16){c[k>>2]=4;break}else if((p|0)==19){c[k>>2]=4;break}else if((p|0)==22){c[k>>2]=4;break}}while(0);if(g){if((c[g+12>>2]|0)==(c[g+16>>2]|0)){D=(md[c[(c[g>>2]|0)+36>>2]&127](g)|0)==-1;g=D?0:g}}else g=0;l=(g|0)==0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0)?(md[c[(c[h>>2]|0)+36>>2]&127](h)|0)==-1:0){p=66;break}if(l){c[e>>2]=g;i=o;return}}else p=66;while(0);if((p|0)==66?!l:0){c[e>>2]=g;i=o;return}c[k>>2]=c[k>>2]|2;c[e>>2]=g;i=o;return}function Bl(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Cl(a){a=a|0;return}function Dl(a){a=a|0;return 2}function El(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;Al(a,b,c[d>>2]|0,c[e>>2]|0,f,g,h,17992,18e3|0);i=j;return}function Fl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0;k=i;m=d+8|0;m=md[c[(c[m>>2]|0)+20>>2]&127](m)|0;n=a[m>>0]|0;if(!(n&1)){l=m+1|0;m=(n&255)>>>1}else{l=c[m+8>>2]|0;m=c[m+4>>2]|0}Al(b,d,c[e>>2]|0,c[f>>2]|0,g,h,j,l,l+m|0);i=k;return}function Gl(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;k=c[f+28>>2]|0;f=k+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(k,19072)|0;m=k+4|0;l=c[m>>2]|0;c[m>>2]=l+ -1;if(!l)jd[c[(c[k>>2]|0)+8>>2]&255](k);Hl(b,h+24|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=j;return}function Hl(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;a=a+8|0;a=md[c[c[a>>2]>>2]&127](a)|0;f=(qk(d,e,a,a+168|0,g,f,0)|0)-a|0;if((f|0)>=168){i=h;return}c[b>>2]=((f|0)/12|0|0)%7|0;i=h;return}function Il(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;k=c[f+28>>2]|0;f=k+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(k,19072)|0;m=k+4|0;l=c[m>>2]|0;c[m>>2]=l+ -1;if(!l)jd[c[(c[k>>2]|0)+8>>2]&255](k);Jl(b,h+16|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=j;return}function Jl(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;a=a+8|0;a=md[c[(c[a>>2]|0)+4>>2]&127](a)|0;f=(qk(d,e,a,a+288|0,g,f,0)|0)-a|0;if((f|0)>=288){i=h;return}c[b>>2]=((f|0)/12|0|0)%12|0;i=h;return}function Kl(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0;b=i;j=c[f+28>>2]|0;f=j+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(j,19072)|0;l=j+4|0;k=c[l>>2]|0;c[l>>2]=k+ -1;if(!k)jd[c[(c[j>>2]|0)+8>>2]&255](j);Ll(h+20|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=b;return}function Ll(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;f=Nl(b,d,e,f,4)|0;if(c[e>>2]&4){i=g;return}if((f|0)<69)e=f+2e3|0;else e=(f+ -69|0)>>>0<31?f+1900|0:f;c[a>>2]=e+ -1900;i=g;return} - - - -function yd(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function zd(){return i|0}function Ad(a){a=a|0;i=a}function Bd(a,b){a=a|0;b=b|0;if(!s){s=a;t=b}}function Cd(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function Dd(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Ed(a){a=a|0;H=a}function Fd(){return H|0}function Gd(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0;g=i;i=i+224|0;s=g+24|0;q=g+80|0;m=g+200|0;j=g+184|0;l=g+104|0;C=g+216|0;B=g+88|0;y=g;t=Rg(14024,10064,9)|0;a[m>>0]=0;c[m+4>>2]=t;v=c[(c[t>>2]|0)+ -12>>2]|0;do if(!(c[t+(v+16)>>2]|0)){v=c[t+(v+72)>>2]|0;if(v)Fj(v);a[m>>0]=1;D=c[t+((c[(c[t>>2]|0)+ -12>>2]|0)+28)>>2]|0;x=D+4|0;c[x>>2]=(c[x>>2]|0)+1;w=Rn(17776)|0;v=c[D+8>>2]|0;if((c[D+12>>2]|0)-v>>2>>>0>w>>>0?(r=c[v+(w<<2)>>2]|0,(r|0)!=0):0){L=c[x>>2]|0;c[x>>2]=L+ -1;if(!L)jd[c[(c[D>>2]|0)+8>>2]&255](D);E=c[(c[t>>2]|0)+ -12>>2]|0;w=c[t+(E+24)>>2]|0;v=t+E|0;x=t+(E+76)|0;D=c[x>>2]|0;do if((D|0)==-1){D=c[t+(E+28)>>2]|0;E=D+4|0;c[E>>2]=(c[E>>2]|0)+1;F=Rn(19072)|0;G=c[D+8>>2]|0;if((c[D+12>>2]|0)-G>>2>>>0>F>>>0?(u=c[G+(F<<2)>>2]|0,(u|0)!=0):0){u=vd[c[(c[u>>2]|0)+28>>2]&63](u,32)|0;L=c[E>>2]|0;c[E>>2]=L+ -1;if(!L)jd[c[(c[D>>2]|0)+8>>2]&255](D);D=u<<24>>24;c[x>>2]=D;break}L=Wb(4)|0;c[L>>2]=27744;Zc(L|0,27816,228)}while(0);L=D&255;K=c[(c[r>>2]|0)+24>>2]|0;c[q>>2]=w;c[s+0>>2]=c[q+0>>2];ud[K&31](j,r,s,v,L,f);if(c[j>>2]|0)break;L=c[(c[t>>2]|0)+ -12>>2]|0;Zi(t+L|0,c[t+(L+16)>>2]|5);break}L=Wb(4)|0;c[L>>2]=27744;Zc(L|0,27816,228)}while(0);Qj(m);r=Rg(t,10080,6)|0;t=c[r+((c[(c[r>>2]|0)+ -12>>2]|0)+28)>>2]|0;u=t+4|0;c[u>>2]=(c[u>>2]|0)+1;w=Rn(19072)|0;v=c[t+8>>2]|0;if((c[t+12>>2]|0)-v>>2>>>0>w>>>0?(p=c[v+(w<<2)>>2]|0,(p|0)!=0):0){p=vd[c[(c[p>>2]|0)+28>>2]&63](p,10)|0;L=c[u>>2]|0;c[u>>2]=L+ -1;if(!L)jd[c[(c[t>>2]|0)+8>>2]&255](t);a[s>>0]=0;c[s+4>>2]=r;t=c[(c[r>>2]|0)+ -12>>2]|0;do if(!(c[r+(t+16)>>2]|0)){t=c[r+(t+72)>>2]|0;if(t)Fj(t);a[s>>0]=1;u=c[(c[r>>2]|0)+ -12>>2]|0;t=c[r+(u+24)>>2]|0;if(t){u=t+24|0;v=c[u>>2]|0;if((v|0)!=(c[t+28>>2]|0)){c[u>>2]=v+1;a[v>>0]=p;break}if((vd[c[(c[t>>2]|0)+52>>2]&63](t,p&255)|0)!=-1)break;u=c[(c[r>>2]|0)+ -12>>2]|0}Zi(r+u|0,c[r+(u+16)>>2]|1)}while(0);Qj(s);Fj(r);p=Tq(20)|0;a:do if(!p){while(1){p=c[6860]|0;c[6860]=p+0;if(!p)break;qd[p&3]();p=Tq(20)|0;if(p)break a}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[p>>2]=e;c[p+4>>2]=f;c[p+8>>2]=0;a[p+12>>0]=0;a[p+13>>0]=0;c[p+16>>2]=0;e=Tq(16)|0;b:do if(!e){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();e=Tq(16)|0;if(e)break b}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[e+4>>2]=0;c[e+8>>2]=0;c[e>>2]=12e3;c[e+12>>2]=p;c[b>>2]=p;L=b+4|0;f=c[L>>2]|0;c[L>>2]=e;if(f){K=f+4|0;L=c[K>>2]|0;c[K>>2]=L+ -1;if((L|0)==0?(jd[c[(c[f>>2]|0)+8>>2]&255](f),K=f+8|0,L=c[K>>2]|0,c[K>>2]=L+ -1,(L|0)==0):0)jd[c[(c[f>>2]|0)+16>>2]&255](f);p=c[b>>2]|0}f=Tq(352)|0;c:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(352)|0;if(f)break c}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[f>>2]=p;c[f+4>>2]=p;e=f+8|0;c[e>>2]=0;p=f+12|0;c[p>>2]=0;w=Tq(1048644)|0;x=w+68&-64;c[x+ -4>>2]=w;c[f+16>>2]=x;x=f+279|0;a[x>>0]=0;a[x+1>>0]=0;w=f+281|0;a[w>>0]=0;a[w+1>>0]=0;a[w+2>>0]=0;a[w+3>>0]=0;t=f+288|0;r=f+292|0;v=f+300|0;u=f+304|0;F=f+344|0;D=t+0|0;E=D+56|0;do{c[D>>2]=0;D=D+4|0}while((D|0)<(E|0));D=F;c[D>>2]=-1;c[D+4>>2]=-1;D=c[f>>2]|0;E=D+13|0;if(!(a[E>>0]|0)){L=D+4|0;I=D+8|0;K=c[I>>2]|0;J=(c[L>>2]|0)-K|0;J=(J|0)<4?J:4;pr(C|0,(c[D>>2]|0)+K|0,J|0)|0;K=(c[I>>2]|0)+J|0;c[I>>2]=K;c[D+16>>2]=J;if((K|0)>=(c[L>>2]|0))a[E>>0]=1}else a[D+12>>0]=1;a[B>>0]=8;a[B+1>>0]=a[C>>0]|0;a[B+2>>0]=a[C+1>>0]|0;a[B+3>>0]=a[C+2>>0]|0;a[B+4>>0]=a[C+3>>0]|0;a[B+(C+(4-C))+1>>0]=0;C=(Qi(B,10088)|0)==0;if(a[B>>0]&1)Uq(c[B+8>>2]|0);if(!C){b=Wb(8)|0;c[b>>2]=27520;g=b+4|0;j=Tq(36)|0;d:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(36)|0;if(j)break d}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=23;c[j+4>>2]=23;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=11664;E=D+24|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[g>>2]=j;c[b>>2]=11696;Zc(b|0,10128,115)}B=c[f>>2]|0;if((c[B+4>>2]|0)>0)c[B+8>>2]=0;else a[B+12>>0]=1;D=c[f>>2]|0;B=f+20|0;C=D+13|0;if(!(a[C>>0]|0)){L=D+4|0;I=D+8|0;K=c[I>>2]|0;J=(c[L>>2]|0)-K|0;J=(J|0)<227?J:227;pr(B|0,(c[D>>2]|0)+K|0,J|0)|0;K=(c[I>>2]|0)+J|0;c[I>>2]=K;c[D+16>>2]=J;if((K|0)>=(c[L>>2]|0))a[C>>0]=1}else a[D+12>>0]=1;F=f+199|0;a[k>>0]=a[F>>0];a[k+1>>0]=a[F+1>>0];a[k+2>>0]=a[F+2>>0];a[k+3>>0]=a[F+3>>0];a[k+4>>0]=a[F+4>>0];a[k+5>>0]=a[F+5>>0];a[k+6>>0]=a[F+6>>0];a[k+7>>0]=a[F+7>>0];Q=+h[k>>3];I=f+207|0;a[k>>0]=a[I>>0];a[k+1>>0]=a[I+1>>0];a[k+2>>0]=a[I+2>>0];a[k+3>>0]=a[I+3>>0];a[k+4>>0]=a[I+4>>0];a[k+5>>0]=a[I+5>>0];a[k+6>>0]=a[I+6>>0];a[k+7>>0]=a[I+7>>0];R=+h[k>>3];K=f+215|0;a[k>>0]=a[K>>0];a[k+1>>0]=a[K+1>>0];a[k+2>>0]=a[K+2>>0];a[k+3>>0]=a[K+3>>0];a[k+4>>0]=a[K+4>>0];a[k+5>>0]=a[K+5>>0];a[k+6>>0]=a[K+6>>0];a[k+7>>0]=a[K+7>>0];O=+h[k>>3];G=f+223|0;a[k>>0]=a[G>>0];a[k+1>>0]=a[G+1>>0];a[k+2>>0]=a[G+2>>0];a[k+3>>0]=a[G+3>>0];a[k+4>>0]=a[G+4>>0];a[k+5>>0]=a[G+5>>0];a[k+6>>0]=a[G+6>>0];a[k+7>>0]=a[G+7>>0];P=+h[k>>3];J=f+231|0;a[k>>0]=a[J>>0];a[k+1>>0]=a[J+1>>0];a[k+2>>0]=a[J+2>>0];a[k+3>>0]=a[J+3>>0];a[k+4>>0]=a[J+4>>0];a[k+5>>0]=a[J+5>>0];a[k+6>>0]=a[J+6>>0];a[k+7>>0]=a[J+7>>0];M=+h[k>>3];L=f+239|0;a[k>>0]=a[L>>0];a[k+1>>0]=a[L+1>>0];a[k+2>>0]=a[L+2>>0];a[k+3>>0]=a[L+3>>0];a[k+4>>0]=a[L+4>>0];a[k+5>>0]=a[L+5>>0];a[k+6>>0]=a[L+6>>0];a[k+7>>0]=a[L+7>>0];N=+h[k>>3];h[k>>3]=R;a[F>>0]=a[k>>0];a[F+1>>0]=a[k+1>>0];a[F+2>>0]=a[k+2>>0];a[F+3>>0]=a[k+3>>0];a[F+4>>0]=a[k+4>>0];a[F+5>>0]=a[k+5>>0];a[F+6>>0]=a[k+6>>0];a[F+7>>0]=a[k+7>>0];h[k>>3]=Q;a[G>>0]=a[k>>0];a[G+1>>0]=a[k+1>>0];a[G+2>>0]=a[k+2>>0];a[G+3>>0]=a[k+3>>0];a[G+4>>0]=a[k+4>>0];a[G+5>>0]=a[k+5>>0];a[G+6>>0]=a[k+6>>0];a[G+7>>0]=a[k+7>>0];h[k>>3]=P;a[I>>0]=a[k>>0];a[I+1>>0]=a[k+1>>0];a[I+2>>0]=a[k+2>>0];a[I+3>>0]=a[k+3>>0];a[I+4>>0]=a[k+4>>0];a[I+5>>0]=a[k+5>>0];a[I+6>>0]=a[k+6>>0];a[I+7>>0]=a[k+7>>0];h[k>>3]=O;a[J>>0]=a[k>>0];a[J+1>>0]=a[k+1>>0];a[J+2>>0]=a[k+2>>0];a[J+3>>0]=a[k+3>>0];a[J+4>>0]=a[k+4>>0];a[J+5>>0]=a[k+5>>0];a[J+6>>0]=a[k+6>>0];a[J+7>>0]=a[k+7>>0];h[k>>3]=N;a[K>>0]=a[k>>0];a[K+1>>0]=a[k+1>>0];a[K+2>>0]=a[k+2>>0];a[K+3>>0]=a[k+3>>0];a[K+4>>0]=a[k+4>>0];a[K+5>>0]=a[k+5>>0];a[K+6>>0]=a[k+6>>0];a[K+7>>0]=a[k+7>>0];h[k>>3]=M;a[L>>0]=a[k>>0];a[L+1>>0]=a[k+1>>0];a[L+2>>0]=a[k+2>>0];a[L+3>>0]=a[k+3>>0];a[L+4>>0]=a[k+4>>0];a[L+5>>0]=a[k+5>>0];a[L+6>>0]=a[k+6>>0];a[L+7>>0]=a[k+7>>0];if((a[10976]|0)==0?(Fa(10976)|0)!=0:0){c[2740]=0;c[2741]=0;c[2742]=0;eb(238,10960,o|0)|0;Vc(10976)}if((a[11008]|0)==0?(Fa(11008)|0)!=0:0){eb(239,10984,o|0)|0;Vc(11008)}D=c[2740]|0;C=c[2741]|0;do if((D|0)==(C|0)){C=Cc(10984)|0;if(C){g=Wb(16)|0;do if(!(a[15688]|0)){if(!(Fa(15688)|0))break;c[3920]=15952;Vc(15688)}while(0);yi(g,C,15680,16040);Zc(g|0,15752,133)}D=c[2740]|0;do if((D|0)==(c[2741]|0)){C=s+16|0;c[C>>2]=s;c[s>>2]=11024;E=c[2742]|0;do if(D>>>0>>0){if(!D)D=0;else{c[D+16>>2]=D;L=c[C>>2]|0;kd[c[(c[L>>2]|0)+12>>2]&63](L,D);D=c[2741]|0}c[2741]=D+24}else{D=(E-D|0)/24|0;if(D>>>0<89478485){D=D<<1;D=(D|0)==0?1:D}else D=178956970;E=D*24|0;E=(E|0)==0?1:E;F=Tq(E)|0;e:do if(!F){while(1){F=c[6860]|0;c[6860]=F+0;if(!F)break;qd[F&3]();F=Tq(E)|0;if(F)break e}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);D=F+(D*24|0)|0;do if(F){E=c[C>>2]|0;if(!E){c[F+16>>2]=0;break}if((E|0)==(s|0)){c[F+16>>2]=F;kd[c[(c[s>>2]|0)+12>>2]&63](s,F);break}else{c[F+16>>2]=E;c[C>>2]=0;break}}while(0);E=F+24|0;G=c[2740]|0;I=c[2741]|0;do if((I|0)==(G|0)){c[2740]=F;c[2741]=E;c[2742]=D}else{do{J=F;F=F+ -24|0;K=I+ -8|0;I=I+ -24|0;L=c[K>>2]|0;do if(L)if((L|0)==(I|0)){c[J+ -8>>2]=F;L=c[K>>2]|0;kd[c[(c[L>>2]|0)+12>>2]&63](L,F);break}else{c[J+ -8>>2]=L;c[K>>2]=0;break}else c[J+ -8>>2]=0;while(0)}while((I|0)!=(G|0));G=c[2740]|0;I=c[2741]|0;c[2740]=F;c[2741]=E;c[2742]=D;if((I|0)==(G|0))break;do{D=c[I+ -8>>2]|0;I=I+ -24|0;do if((D|0)==(I|0))jd[c[(c[D>>2]|0)+16>>2]&255](D);else{if(!D)break;jd[c[(c[D>>2]|0)+20>>2]&255](D)}while(0)}while((I|0)!=(G|0))}while(0);if(!G)break;Uq(G)}while(0);C=c[C>>2]|0;if((C|0)==(s|0)){jd[c[(c[s>>2]|0)+16>>2]&255](s);break}if(!C)break;jd[c[(c[C>>2]|0)+20>>2]&255](C)}while(0);if(!(zb(10984)|0)){A=c[2740]|0;z=c[2741]|0;break}Ha(16064,16072,47,16144)}else{A=D;z=C}while(0);f:do if((A|0)!=(z|0)){C=y+16|0;while(1){D=A+16|0;E=c[D>>2]|0;if(!E){n=148;break}if((E|0)==(A|0)){c[C>>2]=y;D=c[D>>2]|0;kd[c[(c[D>>2]|0)+12>>2]&63](D,y);D=c[C>>2]|0}else{D=md[c[(c[E>>2]|0)+8>>2]&127](E)|0;c[C>>2]=D}if(!D)break;kd[c[(c[D>>2]|0)+24>>2]&63](D,B);D=c[C>>2]|0;do if((D|0)==(y|0))jd[c[(c[y>>2]|0)+16>>2]&255](y);else{if(!D)break;jd[c[(c[D>>2]|0)+20>>2]&255](D)}while(0);A=A+24|0;if((A|0)==(z|0))break f}if((n|0)==148)c[C>>2]=0;L=Wb(4)|0;c[L>>2]=10944;Zc(L|0,10920,105)}while(0);y=c[f>>2]|0;z=f+114|0;z=d[z>>0]|d[z+1>>0]<<8;L=c[y+4>>2]|0;K=((L|0)<0)<<31>>31;if(0<(K|0)|0==(K|0)&(z&65535)>>>0>>0)c[y+8>>2]=z&65535;else a[y+12>>0]=1;A=f+120|0;g:do if(d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24){z=s+2|0;D=s+16|0;C=s+18|0;B=s+20|0;y=0;while(1){K=(c[f>>2]|0)+12|0;L=a[K>>0]|0;a[K>>0]=0;if(L<<24>>24)break g;F=c[f>>2]|0;E=F+13|0;if(a[E>>0]|0)break g;L=F+4|0;I=F+8|0;K=c[I>>2]|0;J=(c[L>>2]|0)-K|0;J=(J|0)<54?J:54;pr(s|0,(c[F>>2]|0)+K|0,J|0)|0;K=(c[I>>2]|0)+J|0;c[I>>2]=K;c[F+16>>2]=J;if((K|0)<(c[L>>2]|0)){F=z;E=10616}else{a[E>>0]=1;F=z;E=10616}while(1){if((a[F>>0]|0)!=(a[E>>0]|0))break;F=F+1|0;if((F|0)==(D|0)){n=174;break}else E=E+1|0}if((n|0)==174?(n=0,(d[C>>0]|d[C+1>>0]<<8)<<16>>16==22204):0)break;E=c[f>>2]|0;G=E+8|0;F=c[G>>2]|0;F=kr(F|0,((F|0)<0)<<31>>31|0,(d[B>>0]|d[B+1>>0]<<8)&65535|0,0)|0;L=H;K=c[E+4>>2]|0;J=((K|0)<0)<<31>>31;E=E+12|0;if((L|0)>(J|0)|(L|0)==(J|0)&F>>>0>=K>>>0|(L|0)<0)a[E>>0]=1;else{a[E>>0]=0;c[G>>2]=F}y=y+1|0;if(y>>>0>=(d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24)>>>0)break g}A=d[B>>0]|d[B+1>>0]<<8;y=A&65535;A=A<<16>>16==0?1:y;z=Tq(A)|0;h:do if(!z){while(1){z=c[6860]|0;c[6860]=z+0;if(!z)break;qd[z&3]();z=Tq(A)|0;if(z)break h}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);A=c[f>>2]|0;B=A+13|0;do if(!(a[B>>0]|0)){L=A+4|0;I=A+8|0;K=c[I>>2]|0;J=(c[L>>2]|0)-K|0;J=(J|0)<(y|0)?J:y;pr(z|0,(c[A>>2]|0)+K|0,J|0)|0;K=(c[I>>2]|0)+J|0;c[I>>2]=K;c[A+16>>2]=J;if((K|0)<(c[L>>2]|0))break;a[B>>0]=1}else a[A+12>>0]=1;while(0);A=f+247|0;D=A+0|0;y=z+0|0;E=D+34|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));if((d[A>>0]|d[A+1>>0]<<8)<<16>>16!=2){b=Wb(8)|0;c[b>>2]=27520;g=b+4|0;j=Tq(68)|0;i:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(68)|0;if(j)break i}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=55;c[j+4>>2]=55;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10808;E=D+56|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[g>>2]=j;c[b>>2]=10872;Zc(b|0,10792,103)}y=d[x>>0]|d[x+1>>0]<<8;A=(y&65535)*6|0;A=(A|0)==0?1:A;B=Tq(A)|0;j:do if(!B){while(1){B=c[6860]|0;c[6860]=B+0;if(!B)break;qd[B&3]();B=Tq(A)|0;if(B)break j}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);a[w>>0]=B;a[w+1>>0]=B>>8;a[w+2>>0]=B>>16;a[w+3>>0]=B>>24;k:do if(!(y<<16>>16))B=0;else{A=z+34|0;a[B+0>>0]=a[A+0>>0]|0;a[B+1>>0]=a[A+1>>0]|0;a[B+2>>0]=a[A+2>>0]|0;a[B+3>>0]=a[A+3>>0]|0;a[B+4>>0]=a[A+4>>0]|0;a[B+5>>0]=a[A+5>>0]|0;if((y&65535)>1)y=1;else{B=1;break}while(1){A=A+6|0;pr(B+(y*6|0)|0,A|0,6)|0;y=y+1|0;B=d[x>>0]|d[x+1>>0]<<8;if((y|0)>=(B&65535|0))break k;B=d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24}}while(0);if(z){Uq(z);B=d[x>>0]|d[x+1>>0]<<8}l:do if(B<<16>>16){y=f+308|0;z=0;m:while(1){D=d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24;C=D+(z*6|0)|0;C=(d[C>>0]|d[C+1>>0]<<8)&65535;A=D+(z*6|0)+2|0;A=(d[A>>0]|d[A+1>>0]<<8)&65535;D=D+(z*6|0)+4|0;D=(d[D>>0]|d[D+1>>0]<<8)&65535;E=c[u>>2]|0;do if((E|0)==(c[y>>2]|0)){B=c[v>>2]|0;F=E-B|0;G=(F|0)/12|0;E=G+1|0;if(E>>>0>357913941){n=225;break m}if(G>>>0<178956970){I=G<<1;I=I>>>0>>0?E:I;if(!I){I=0;K=0}else n=229}else{I=357913941;n=229}if((n|0)==229){n=0;J=I*12|0;J=(J|0)==0?1:J;K=Tq(J)|0;if(!K)do{K=c[6860]|0;c[6860]=K+0;if(!K){n=233;break m}qd[K&3]();K=Tq(J)|0}while((K|0)==0)}J=K+(G*12|0)|0;if(J){c[J>>2]=C;c[K+(G*12|0)+4>>2]=A;c[K+(G*12|0)+8>>2]=D}L=K+((((F|0)/-12|0)+G|0)*12|0)|0;nr(L|0,B|0,F|0)|0;c[v>>2]=L;c[u>>2]=K+(E*12|0);c[y>>2]=K+(I*12|0);if(!B)break;Uq(B)}else{if(!E)A=0;else{c[E>>2]=C;c[E+4>>2]=A;c[E+8>>2]=D;A=c[u>>2]|0}c[u>>2]=A+12}while(0);z=z+1|0;if((z|0)>=((d[x>>0]|d[x+1>>0]<<8)&65535|0))break l}if((n|0)==225)Mn();else if((n|0)==233){L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}}while(0);w=c[f>>2]|0;u=f+116|0;v=d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24;L=c[w+4>>2]|0;K=((L|0)<0)<<31>>31;if(0<(K|0)|0==(K|0)&v>>>0>>0)c[w+8>>2]=v;else a[w+12>>0]=1;w=s;c[w>>2]=0;c[w+4>>2]=0;w=c[f>>2]|0;v=w+13|0;do if(!(a[v>>0]|0)){L=c[w+4>>2]|0;I=w+8|0;K=c[I>>2]|0;J=L-K|0;J=(J|0)<8?J:8;nr(s|0,(c[w>>2]|0)+K|0,J|0)|0;K=K+J|0;c[I>>2]=K;c[w+16>>2]=J;if((K|0)<(L|0))break;a[v>>0]=1}else a[w+12>>0]=1;while(0);K=(c[f>>2]|0)+12|0;L=a[K>>0]|0;a[K>>0]=0;if(L<<24>>24){g=Wb(8)|0;c[g>>2]=27520;b=g+4|0;j=Tq(56)|0;n:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(56)|0;if(j)break n}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=43;c[j+4>>2]=43;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10544;E=D+44|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[b>>2]=j;c[g>>2]=10600;Zc(g|0,10184,99)}v=s;w=c[v>>2]|0;v=c[v+4>>2]|0;if((w|0)==-1&(v|0)==-1){g=Wb(8)|0;c[g>>2]=27520;b=g+4|0;j=Tq(67)|0;o:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(67)|0;if(j)break o}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=54;c[j+4>>2]=54;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10200;E=D+55|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[b>>2]=j;c[g>>2]=10528;Zc(g|0,10288,97)}s=c[f>>2]|0;L=c[s+4>>2]|0;K=((L|0)<0)<<31>>31;if((v|0)<(K|0)|(v|0)==(K|0)&w>>>0>>0)c[s+8>>2]=w;else a[s+12>>0]=1;K=(c[f>>2]|0)+12|0;L=a[K>>0]|0;a[K>>0]=0;if(L<<24>>24){g=Wb(8)|0;c[g>>2]=27520;b=g+4|0;j=Tq(56)|0;p:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(56)|0;if(j)break p}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=43;c[j+4>>2]=43;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10544;E=D+44|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[b>>2]=j;c[g>>2]=10600;Zc(g|0,10184,99)}s=c[f>>2]|0;v=s+13|0;do if(!(a[v>>0]|0)){L=c[s+4>>2]|0;I=s+8|0;K=c[I>>2]|0;J=L-K|0;J=(J|0)<8?J:8;nr(q|0,(c[s>>2]|0)+K|0,J|0)|0;K=K+J|0;c[I>>2]=K;c[s+16>>2]=J;if((K|0)<(L|0))break;a[v>>0]=1}else a[s+12>>0]=1;while(0);K=(c[f>>2]|0)+12|0;L=a[K>>0]|0;a[K>>0]=0;if(L<<24>>24){b=Wb(8)|0;c[b>>2]=27520;g=b+4|0;j=Tq(56)|0;q:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(56)|0;if(j)break q}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=43;c[j+4>>2]=43;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10544;E=D+44|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[g>>2]=j;c[b>>2]=10600;Zc(b|0,10184,99)}if(c[q>>2]|0){g=Wb(8)|0;c[g>>2]=27520;b=g+4|0;j=Tq(54)|0;r:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(54)|0;if(j)break r}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=41;c[j+4>>2]=41;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10448;E=D+42|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[b>>2]=j;c[g>>2]=10504;Zc(g|0,10344,95)}s=c[t>>2]|0;v=c[r>>2]|0;if((v|0)==(s|0))y=s;else{y=v+(~((v+ -8+(0-s)|0)>>>3)<<3)|0;c[r>>2]=y}L=f+259|0;if((d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24|0)==-1){b=Wb(8)|0;c[b>>2]=27520;g=b+4|0;j=Tq(96)|0;s:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(96)|0;if(j)break s}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=83;c[j+4>>2]=83;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10360;E=D+84|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[g>>2]=j;c[b>>2]=10528;Zc(b|0,10288,97)}q=q+4|0;v=c[q>>2]|0;w=v+1|0;B=s;x=y-B>>3;do if(x>>>0>>0){x=w-x|0;w=f+296|0;C=c[w>>2]|0;z=y;if(C-z>>3>>>0>=x>>>0){n=x;w=y;while(1){if(w){L=w;c[L>>2]=0;c[L+4>>2]=0}n=n+ -1|0;if(!n)break;else w=w+8|0}c[r>>2]=y+(x<<3);break}z=z-B|0;A=z>>3;y=A+x|0;if(y>>>0>536870911)Mn();B=C-B|0;if(B>>3>>>0<268435455){B=B>>2;B=B>>>0>>0?y:B;if(!B){B=0;C=0}else n=322}else{B=536870911;n=322}if((n|0)==322){n=B<<3;n=(n|0)==0?1:n;C=Tq(n)|0;t:do if(!C){while(1){C=c[6860]|0;c[6860]=C+0;if(!C)break;qd[C&3]();C=Tq(n)|0;if(C)break t}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0)}n=C+(A<<3)|0;while(1){if(n){L=n;c[L>>2]=0;c[L+4>>2]=0}x=x+ -1|0;if(!x)break;else n=n+8|0}nr(C|0,s|0,z|0)|0;c[t>>2]=C;c[r>>2]=C+(y<<3);c[w>>2]=C+(B<<3);if(!s){s=C;break}Uq(s);s=c[t>>2]|0}else{if(x>>>0<=w>>>0)break;n=s+(w<<3)|0;if((y|0)==(n|0))break;c[r>>2]=y+(~((y+ -8+(0-n)|0)>>>3)<<3)}while(0);L=s;c[L>>2]=(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)+8;c[L+4>>2]=0;if(v>>>0>1){c[m>>2]=c[f>>2];c[m+4>>2]=0;c[m+8>>2]=0;n=m+12|0;v=Tq(1048644)|0;L=v+68&-64;c[L+ -4>>2]=v;c[n>>2]=L;c[j>>2]=m;L=j+4|0;c[L>>2]=0;c[j+8>>2]=-1;c[l+4>>2]=32;c[l+8>>2]=2;c[l+12>>2]=8;c[l+16>>2]=0;v=l+36|0;c[v>>2]=0;s=l+40|0;c[s>>2]=0;c[l+44>>2]=0;c[l+60>>2]=1;c[l+64>>2]=2;c[l+56>>2]=4096;c[l+52>>2]=4;c[l+48>>2]=4;w=l+68|0;c[w>>2]=0;x=l+72|0;c[x>>2]=0;c[l+76>>2]=0;c[l+20>>2]=32;y=l+24|0;c[y>>2]=0;c[l+28>>2]=-2147483648;c[l+32>>2]=2147483647;c[l>>2]=0;J=Wf(m)|0;I=Wf(m)|0;K=Wf(m)|0;c[L>>2]=(I&255)<<16|(J&255)<<24|(K&255)<<8|(Wf(m)|0)&255;ge(l);m=c[q>>2]|0;if(!m)A=c[t>>2]|0;else{q=1;do{if(q>>>0>1)z=c[(c[t>>2]|0)+(q+ -1<<3)>>2]|0;else z=0;A=($f(l,j,(c[v>>2]|0)+44|0)|0)+z|0;z=c[y>>2]|0;if((A|0)<0)z=z+A|0;else z=A-(A>>>0>>0?0:z)|0;A=c[t>>2]|0;L=A+(q<<3)|0;c[L>>2]=z;c[L+4>>2]=((z|0)<0)<<31>>31;q=q+1|0}while(q>>>0<=m>>>0)}j=(c[r>>2]|0)-A>>3;if(j>>>0>1){m=A;l=c[m>>2]|0;m=c[m+4>>2]|0;q=1;do{L=A+(q<<3)|0;K=L;l=kr(c[K>>2]|0,c[K+4>>2]|0,l|0,m|0)|0;m=H;c[L>>2]=l;c[L+4>>2]=m;q=q+1|0}while(q>>>0>>0)}j=c[w>>2]|0;if(j){l=c[x>>2]|0;if((l|0)!=(j|0)){do{c[x>>2]=l+ -44;m=c[l+ -36>>2]|0;if(m)Uq(c[m+ -4>>2]|0);m=c[l+ -32>>2]|0;if(m)Uq(c[m+ -4>>2]|0);l=c[l+ -28>>2]|0;if(l)Uq(c[l+ -4>>2]|0);l=c[x>>2]|0}while((l|0)!=(j|0));j=c[w>>2]|0}Uq(j)}j=c[v>>2]|0;if(j){l=c[s>>2]|0;if((l|0)!=(j|0)){do{c[s>>2]=l+ -44;m=c[l+ -36>>2]|0;if(m)Uq(c[m+ -4>>2]|0);m=c[l+ -32>>2]|0;if(m)Uq(c[m+ -4>>2]|0);l=c[l+ -28>>2]|0;if(l)Uq(c[l+ -4>>2]|0);l=c[s>>2]|0}while((l|0)!=(j|0));j=c[v>>2]|0}Uq(j)}Uq(c[(c[n>>2]|0)+ -4>>2]|0)}j=c[f>>2]|0;a[j+12>>0]=0;a[j+13>>0]=0;j=c[f>>2]|0;l=(d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24)+8|0;L=c[j+4>>2]|0;K=((L|0)<0)<<31>>31;if(0<(K|0)|0==(K|0)&l>>>0>>0)c[j+8>>2]=l;else a[j+12>>0]=1;c[p>>2]=0;c[e>>2]=0;j=Tq(16)|0;u:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(16)|0;if(j)break u}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j+4>>2]=0;c[j+8>>2]=0;c[j>>2]=11720;c[j+12>>2]=f;c[b+8>>2]=f;L=b+12|0;b=c[L>>2]|0;c[L>>2]=j;if(!b){i=g;return}K=b+4|0;L=c[K>>2]|0;c[K>>2]=L+ -1;if(L){i=g;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);K=b+8|0;L=c[K>>2]|0;c[K>>2]=L+ -1;if(L){i=g;return}jd[c[(c[b>>2]|0)+16>>2]&255](b);i=g;return}while(0);g=Wb(8)|0;c[g>>2]=27520;b=g+4|0;j=Tq(56)|0;v:do if(!j){while(1){j=c[6860]|0;c[6860]=j+0;if(!j)break;qd[j&3]();j=Tq(56)|0;if(j)break v}L=Wb(4)|0;c[L>>2]=27280;Zc(L|0,27328,220)}while(0);c[j>>2]=43;c[j+4>>2]=43;c[j+8>>2]=0;j=j+12|0;D=j+0|0;y=10680;E=D+44|0;do{a[D>>0]=a[y>>0]|0;D=D+1|0;y=y+1|0}while((D|0)<(E|0));c[b>>2]=j;c[g>>2]=10736;Zc(g|0,10664,101)}L=Wb(4)|0;c[L>>2]=27744;Zc(L|0,27816,228)}function Hd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;f=i;i=i+176|0;r=f+160|0;m=f+16|0;g=f;b=c[b+8>>2]|0;j=b+336|0;x=j;y=b+259|0;h=b+320|0;if((!((c[x+4>>2]|0)==0?(c[x>>2]|0)==(d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24|0):0)?(k=c[h>>2]|0,(k|0)!=0):0)?(c[b+312>>2]|0)!=0:0){v=k;x=c[v>>2]|0;x=c[x>>2]|0;kd[x&63](v,e);v=j;x=v;x=c[x>>2]|0;v=v+4|0;v=c[v>>2]|0;v=kr(x|0,v|0,1,0)|0;x=H;y=j;w=y;c[w>>2]=v;y=y+4|0;c[y>>2]=x;i=f;return}c[h>>2]=0;k=b+324|0;l=c[k>>2]|0;c[k>>2]=0;if(((l|0)!=0?(x=l+4|0,y=c[x>>2]|0,c[x>>2]=y+ -1,(y|0)==0):0)?(jd[c[(c[l>>2]|0)+8>>2]&255](l),x=l+8|0,y=c[x>>2]|0,c[x>>2]=y+ -1,(y|0)==0):0)jd[c[(c[l>>2]|0)+16>>2]&255](l);n=b+312|0;c[n>>2]=0;o=b+316|0;l=c[o>>2]|0;c[o>>2]=0;if(((l|0)!=0?(x=l+4|0,y=c[x>>2]|0,c[x>>2]=y+ -1,(y|0)==0):0)?(jd[c[(c[l>>2]|0)+8>>2]&255](l),x=l+8|0,y=c[x>>2]|0,c[x>>2]=y+ -1,(y|0)==0):0)jd[c[(c[l>>2]|0)+16>>2]&255](l);l=Tq(12)|0;a:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(12)|0;if(l)break a}y=Wb(4)|0;c[y>>2]=27280;Zc(y|0,27328,220)}while(0);c[l>>2]=b+4;c[l+4>>2]=0;c[l+8>>2]=-1;q=Tq(16)|0;b:do if(!q){while(1){p=c[6860]|0;c[6860]=p+0;if(!p)break;qd[p&3]();q=Tq(16)|0;if(q)break b}y=Wb(4)|0;c[y>>2]=27280;Zc(y|0,27328,220)}while(0);c[q+4>>2]=0;c[q+8>>2]=0;c[q>>2]=9736;c[q+12>>2]=l;c[n>>2]=l;p=c[o>>2]|0;c[o>>2]=q;if(p){x=p+4|0;y=c[x>>2]|0;c[x>>2]=y+ -1;if((y|0)==0?(jd[c[(c[p>>2]|0)+8>>2]&255](p),x=p+8|0,y=c[x>>2]|0,c[x>>2]=y+ -1,(y|0)==0):0)jd[c[(c[p>>2]|0)+16>>2]&255](p);l=c[n>>2]|0}n=m+64|0;o=m+8|0;c[o>>2]=9416;p=m+12|0;c[m>>2]=9548;c[n>>2]=9568;c[m+4>>2]=0;c[m+88>>2]=p;c[m+80>>2]=0;c[m+84>>2]=0;c[m+68>>2]=4098;c[m+76>>2]=0;c[m+72>>2]=6;t=m+92|0;q=m+96|0;s=q+40|0;do{c[q>>2]=0;q=q+4|0}while((q|0)<(s|0));Qn(t);c[m+136>>2]=0;c[m+140>>2]=-1;c[m>>2]=9396;c[n>>2]=9436;c[o>>2]=9416;c[p>>2]=16248;Qn(m+16|0);t=m+20|0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[p>>2]=9584;q=m+44|0;u=m+60|0;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[u>>2]=24;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;Ji(q,r+1|0,0);s=m+56|0;c[s>>2]=0;v=c[u>>2]|0;if(v&8){w=a[q>>0]|0;if(!(w&1)){w=q+((w&255)>>>1)+1|0;c[s>>2]=w;x=q+1|0}else{x=c[m+52>>2]|0;w=x+(c[m+48>>2]|0)|0;c[s>>2]=w}c[t>>2]=x;c[m+24>>2]=x;c[m+28>>2]=w}if(v&16){v=a[q>>0]|0;if(!(v&1)){v=(v&255)>>>1;c[s>>2]=q+v+1;w=10}else{v=c[m+48>>2]|0;c[s>>2]=(c[m+52>>2]|0)+v;w=(c[q>>2]&-2)+ -1|0}Ki(q,w);x=a[q>>0]|0;if(!(x&1)){w=q+1|0;x=(x&255)>>>1}else{w=c[m+52>>2]|0;x=c[m+48>>2]|0}y=m+36|0;c[y>>2]=w;c[m+32>>2]=w;c[m+40>>2]=w+x;if(c[u>>2]&3)c[y>>2]=w+v}if(a[r>>0]&1)Uq(c[r+8>>2]|0);w=c[b+300>>2]|0;r=c[b+304>>2]|0;if((w|0)!=(r|0)){v=m+8|0;do{x=c[w>>2]|0;y=c[w+4>>2]|0;z=c[w+8>>2]|0;Rj(Rg(Rj(Rg(Rj(Rg(v,9360,1)|0,z)|0,9368,1)|0,x)|0,9376,1)|0,y)|0;w=w+12|0}while((w|0)!=(r|0))}r=c[u>>2]|0;do if(!(r&16)){if(!(r&8)){c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;break}t=c[t>>2]|0;s=c[m+28>>2]|0;r=t;v=s-r|0;if(v>>>0>4294967279)Ei();if(v>>>0<11){a[g>>0]=v<<1;x=g+1|0}else{u=v+16&-16;w=(u|0)==0?1:u;x=Tq(w)|0;c:do if(!x){while(1){x=c[6860]|0;c[6860]=x+0;if(!x)break;qd[x&3]();x=Tq(w)|0;if(x)break c}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[g+8>>2]=x;c[g>>2]=u|1;c[g+4>>2]=v}if((t|0)!=(s|0)){u=x;while(1){a[u>>0]=a[t>>0]|0;t=t+1|0;if((t|0)==(s|0))break;else u=u+1|0}x=x+(s+(0-r))|0}a[x>>0]=0}else{t=c[s>>2]|0;r=c[m+36>>2]|0;if(t>>>0>>0)c[s>>2]=r;else r=t;t=c[m+32>>2]|0;s=t;v=r-s|0;if(v>>>0>4294967279)Ei();if(v>>>0<11){a[g>>0]=v<<1;x=g+1|0}else{u=v+16&-16;w=(u|0)==0?1:u;x=Tq(w)|0;d:do if(!x){while(1){x=c[6860]|0;c[6860]=x+0;if(!x)break;qd[x&3]();x=Tq(w)|0;if(x)break d}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[g+8>>2]=x;c[g>>2]=u|1;c[g+4>>2]=v}if((t|0)!=(r|0)){u=x;while(1){a[u>>0]=a[t>>0]|0;t=t+1|0;if((t|0)==(r|0))break;else u=u+1|0}x=x+(r+(0-s))|0}a[x>>0]=0}while(0);c[m>>2]=9396;c[m+64>>2]=9436;c[o>>2]=9416;c[p>>2]=9584;if(a[q>>0]&1)Uq(c[m+52>>2]|0);c[p>>2]=16248;m=c[m+16>>2]|0;y=m+4|0;z=c[y>>2]|0;c[y>>2]=z+ -1;if(!z)jd[c[(c[m>>2]|0)+8>>2]&255](m);_i(n);do if(!(Qi(g,5184)|0)){n=Tq(4788)|0;e:do if(!n){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();n=Tq(4788)|0;if(n)break e}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);Pf(n);a[n+4784>>0]=1;m=Tq(12)|0;f:do if(!m){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();m=Tq(12)|0;if(m)break f}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[m>>2]=8504;c[m+4>>2]=l;c[m+8>>2]=n;l=Tq(16)|0;g:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(16)|0;if(l)break g}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[l+4>>2]=0;c[l+8>>2]=0;c[l>>2]=8768;c[l+12>>2]=m}else{if(!(Qi(g,5192)|0)){n=Tq(5116)|0;h:do if(!n){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();n=Tq(5116)|0;if(n)break h}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);Pf(n);Of(n+4784|0);c[n+4952>>2]=32;c[n+4956>>2]=9;c[n+4960>>2]=8;c[n+4964>>2]=0;c[n+4984>>2]=0;c[n+4988>>2]=0;c[n+4992>>2]=0;c[n+5008>>2]=1;c[n+5012>>2]=2;c[n+5004>>2]=4096;c[n+5e3>>2]=4;c[n+4996>>2]=4;c[n+5016>>2]=0;c[n+5020>>2]=0;c[n+5024>>2]=0;c[n+4968>>2]=32;c[n+4972>>2]=0;c[n+4976>>2]=-2147483648;c[n+4980>>2]=2147483647;c[n+4948>>2]=0;c[n+5032>>2]=32;c[n+5036>>2]=9;c[n+5040>>2]=8;c[n+5044>>2]=0;c[n+5064>>2]=0;c[n+5068>>2]=0;c[n+5072>>2]=0;c[n+5088>>2]=1;c[n+5092>>2]=2;c[n+5084>>2]=4096;c[n+5080>>2]=4;c[n+5076>>2]=4;c[n+5096>>2]=0;c[n+5100>>2]=0;c[n+5104>>2]=0;c[n+5048>>2]=32;c[n+5052>>2]=0;c[n+5056>>2]=-2147483648;c[n+5060>>2]=2147483647;c[n+5028>>2]=0;a[n+5108>>0]=0;a[n+5109>>0]=0;a[n+5112>>0]=1;m=Tq(12)|0;i:do if(!m){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();m=Tq(12)|0;if(m)break i}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[m>>2]=7560;c[m+4>>2]=l;c[m+8>>2]=n;l=Tq(16)|0;j:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(16)|0;if(l)break j}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[l+4>>2]=0;c[l+8>>2]=0;c[l>>2]=7848;c[l+12>>2]=m;break}if(!(Qi(g,5208)|0)){n=Tq(5104)|0;k:do if(!n){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();n=Tq(5104)|0;if(n)break k}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);Pf(n);Nf(n+4784|0);a[n+5100>>0]=1;m=Tq(12)|0;l:do if(!m){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();m=Tq(12)|0;if(m)break l}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[m>>2]=6616;c[m+4>>2]=l;c[m+8>>2]=n;l=Tq(16)|0;m:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(16)|0;if(l)break m}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[l+4>>2]=0;c[l+8>>2]=0;c[l>>2]=6904;c[l+12>>2]=m;break}if(Qi(g,5224)|0){g=Wb(8)|0;c[g>>2]=27520;f=g+4|0;e=Tq(45)|0;n:do if(!e){while(1){e=c[6860]|0;c[6860]=e+0;if(!e)break;qd[e&3]();e=Tq(45)|0;if(e)break n}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[e>>2]=32;c[e+4>>2]=32;c[e+8>>2]=0;b=e+12|0;q=b+0|0;e=5296|0;s=q+33|0;do{a[q>>0]=a[e>>0]|0;q=q+1|0;e=e+1|0}while((q|0)<(s|0));c[f>>2]=b;c[g>>2]=5344;Zc(g|0,5280,51)}n=Tq(5432)|0;o:do if(!n){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();n=Tq(5432)|0;if(n)break o}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);Pf(n);Of(n+4784|0);c[n+4952>>2]=32;c[n+4956>>2]=9;c[n+4960>>2]=8;c[n+4964>>2]=0;c[n+4984>>2]=0;c[n+4988>>2]=0;c[n+4992>>2]=0;c[n+5008>>2]=1;c[n+5012>>2]=2;c[n+5004>>2]=4096;c[n+5e3>>2]=4;c[n+4996>>2]=4;c[n+5016>>2]=0;c[n+5020>>2]=0;c[n+5024>>2]=0;c[n+4968>>2]=32;c[n+4972>>2]=0;c[n+4976>>2]=-2147483648;c[n+4980>>2]=2147483647;c[n+4948>>2]=0;c[n+5032>>2]=32;c[n+5036>>2]=9;c[n+5040>>2]=8;c[n+5044>>2]=0;c[n+5064>>2]=0;c[n+5068>>2]=0;c[n+5072>>2]=0;c[n+5088>>2]=1;c[n+5092>>2]=2;c[n+5084>>2]=4096;c[n+5080>>2]=4;c[n+5076>>2]=4;c[n+5096>>2]=0;c[n+5100>>2]=0;c[n+5104>>2]=0;c[n+5048>>2]=32;c[n+5052>>2]=0;c[n+5056>>2]=-2147483648;c[n+5060>>2]=2147483647;c[n+5028>>2]=0;a[n+5108>>0]=0;a[n+5109>>0]=0;Nf(n+5112|0);a[n+5428>>0]=1;m=Tq(12)|0;p:do if(!m){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();m=Tq(12)|0;if(m)break p}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[m>>2]=5368;c[m+4>>2]=l;c[m+8>>2]=n;l=Tq(16)|0;q:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(16)|0;if(l)break q}z=Wb(4)|0;c[z>>2]=27280;Zc(z|0,27328,220)}while(0);c[l+4>>2]=0;c[l+8>>2]=0;c[l>>2]=5904;c[l+12>>2]=m}while(0);if(a[g>>0]&1)Uq(c[g+8>>2]|0);c[h>>2]=m;g=c[k>>2]|0;c[k>>2]=l;if(((g|0)!=0?(y=g+4|0,z=c[y>>2]|0,c[y>>2]=z+ -1,(z|0)==0):0)?(jd[c[(c[g>>2]|0)+8>>2]&255](g),y=g+8|0,z=c[y>>2]|0,c[y>>2]=z+ -1,(z|0)==0):0)jd[c[(c[g>>2]|0)+16>>2]&255](g);w=b+328|0;y=w;y=kr(c[y>>2]|0,c[y+4>>2]|0,1,0)|0;c[w>>2]=y;c[w+4>>2]=H;w=j;c[w>>2]=0;c[w+4>>2]=0;w=c[h>>2]|0;y=c[w>>2]|0;y=c[y>>2]|0;kd[y&63](w,e);w=j;y=w;y=c[y>>2]|0;w=w+4|0;w=c[w>>2]|0;w=kr(y|0,w|0,1,0)|0;y=H;z=j;x=z;c[x>>2]=w;z=z+4|0;c[z>>2]=y;i=f;return}function Id(a){a=a|0;a=(c[a+8>>2]|0)+127|0;return d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24|0}function Jd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;g=Tq(12)|0;a:do if(!g){while(1){g=c[6860]|0;c[6860]=g+0;if(!g)break;qd[g&3]();g=Tq(12)|0;if(g)break a}h=Wb(4)|0;c[h>>2]=27280;Zc(h|0,27328,220)}while(0);c[g>>2]=d;c[g+4>>2]=e;c[g+8>>2]=0;d=Tq(16)|0;b:do if(!d){while(1){e=c[6860]|0;c[6860]=e+0;if(!e)break;qd[e&3]();d=Tq(16)|0;if(d)break b}h=Wb(4)|0;c[h>>2]=27280;Zc(h|0,27328,220)}while(0);c[d+4>>2]=0;c[d+8>>2]=0;c[d>>2]=5008;c[d+12>>2]=g;c[b>>2]=g;h=b+4|0;e=c[h>>2]|0;c[h>>2]=d;if(!e)e=g;else{d=e+4|0;h=c[d>>2]|0;c[d>>2]=h+ -1;if((h|0)==0?(jd[c[(c[e>>2]|0)+8>>2]&255](e),d=e+8|0,h=c[d>>2]|0,c[d>>2]=h+ -1,(h|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);e=c[b>>2]|0}g=Tq(12)|0;c:do if(!g){while(1){g=c[6860]|0;c[6860]=g+0;if(!g)break;qd[g&3]();g=Tq(12)|0;if(g)break c}h=Wb(4)|0;c[h>>2]=27280;Zc(h|0,27328,220)}while(0);c[g>>2]=e;c[g+4>>2]=0;c[g+8>>2]=-1;h=Tq(16)|0;d:do if(!h){while(1){e=c[6860]|0;c[6860]=e+0;if(!e)break;qd[e&3]();h=Tq(16)|0;if(h)break d}h=Wb(4)|0;c[h>>2]=27280;Zc(h|0,27328,220)}while(0);c[h+4>>2]=0;c[h+8>>2]=0;c[h>>2]=4760;c[h+12>>2]=g;e=b+8|0;c[e>>2]=g;j=b+12|0;d=c[j>>2]|0;c[j>>2]=h;if(d){h=d+4|0;j=c[h>>2]|0;c[h>>2]=j+ -1;if((j|0)==0?(jd[c[(c[d>>2]|0)+8>>2]&255](d),h=d+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[d>>2]|0)+16>>2]&255](d);g=c[e>>2]|0}e=Tq(24)|0;e:do if(!e){while(1){e=c[6860]|0;c[6860]=e+0;if(!e)break;qd[e&3]();e=Tq(24)|0;if(e)break e}j=Wb(4)|0;c[j>>2]=27280;Zc(j|0,27328,220)}while(0);c[e>>2]=4248;c[e+4>>2]=g;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;a[e+20>>0]=1;g=Tq(16)|0;f:do if(!g){while(1){g=c[6860]|0;c[6860]=g+0;if(!g)break;qd[g&3]();g=Tq(16)|0;if(g)break f}j=Wb(4)|0;c[j>>2]=27280;Zc(j|0,27328,220)}while(0);c[g+4>>2]=0;c[g+8>>2]=0;c[g>>2]=4424;c[g+12>>2]=e;c[b+16>>2]=e;j=b+20|0;b=c[j>>2]|0;c[j>>2]=g;if(!b){i=f;return}h=b+4|0;j=c[h>>2]|0;c[h>>2]=j+ -1;if(j){i=f;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);h=b+8|0;j=c[h>>2]|0;c[h>>2]=j+ -1;if(j){i=f;return}jd[c[(c[b>>2]|0)+16>>2]&255](b);i=f;return}function Kd(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=a+16|0;a=c[e>>2]|0;if(!a){i=d;return}if((b|0)==4){Oe(a);i=d;return}else if((b|0)==8){ae(a);ae(c[e>>2]|0);i=d;return}else{i=d;return}}function Ld(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+16|0;f=e+8|0;g=e;h=b+16|0;b=c[h>>2]|0;if(!b){i=e;return}if((d|0)==1){d=Tq(172)|0;a:do if(!d){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();d=Tq(172)|0;if(d)break a}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);f=c[b+4>>2]|0;c[d>>2]=3640;c[d+4>>2]=f;c[d+12>>2]=8;c[d+16>>2]=1;c[d+20>>2]=8;c[d+24>>2]=0;c[d+44>>2]=0;c[d+48>>2]=0;c[d+52>>2]=0;c[d+68>>2]=1;c[d+72>>2]=2;c[d+64>>2]=4096;c[d+60>>2]=4;c[d+56>>2]=4;c[d+76>>2]=0;c[d+80>>2]=0;c[d+84>>2]=0;c[d+28>>2]=8;c[d+32>>2]=256;c[d+36>>2]=-128;c[d+40>>2]=127;c[d+8>>2]=0;c[d+92>>2]=8;c[d+96>>2]=1;c[d+100>>2]=8;c[d+104>>2]=0;c[d+124>>2]=0;c[d+128>>2]=0;c[d+132>>2]=0;c[d+148>>2]=1;c[d+152>>2]=2;c[d+144>>2]=4096;c[d+140>>2]=4;c[d+136>>2]=4;c[d+156>>2]=0;c[d+160>>2]=0;c[d+164>>2]=0;c[d+108>>2]=8;c[d+112>>2]=256;c[d+116>>2]=-128;c[d+120>>2]=127;c[d+88>>2]=0;a[d+168>>0]=0;a[d+169>>0]=0;a[d+171>>0]=0;f=b+8|0;c[g>>2]=d;k=Tq(16)|0;b:do if(!k){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();k=Tq(16)|0;if(k)break b}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[k+4>>2]=0;c[k+8>>2]=0;c[k>>2]=3824;c[k+12>>2]=d;j=g+4|0;c[j>>2]=k;h=b+12|0;l=c[h>>2]|0;if(l>>>0<(c[b+16>>2]|0)>>>0){if(!l)b=0;else{c[l>>2]=d;c[l+4>>2]=k;c[g>>2]=0;c[j>>2]=0;k=0;b=c[h>>2]|0}c[h>>2]=b+8}else{ve(f,g);k=c[j>>2]|0}if(!k){i=e;return}j=k+4|0;l=c[j>>2]|0;c[j>>2]=l+ -1;if(l){i=e;return}jd[c[(c[k>>2]|0)+8>>2]&255](k);j=k+8|0;l=c[j>>2]|0;c[j>>2]=l+ -1;if(l){i=e;return}jd[c[(c[k>>2]|0)+16>>2]&255](k);i=e;return}else if((d|0)==8){Oe(b);b=c[h>>2]|0}else if((d|0)!=4)if((d|0)==2){g=Tq(176)|0;c:do if(!g){while(1){g=c[6860]|0;c[6860]=g+0;if(!g)break;qd[g&3]();g=Tq(176)|0;if(g)break c}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);d=c[b+4>>2]|0;c[g>>2]=3032;c[g+4>>2]=d;c[g+12>>2]=16;c[g+16>>2]=1;c[g+20>>2]=8;c[g+24>>2]=0;c[g+44>>2]=0;c[g+48>>2]=0;c[g+52>>2]=0;c[g+68>>2]=1;c[g+72>>2]=2;c[g+64>>2]=4096;c[g+60>>2]=4;c[g+56>>2]=4;c[g+76>>2]=0;c[g+80>>2]=0;c[g+84>>2]=0;c[g+28>>2]=16;c[g+32>>2]=65536;c[g+36>>2]=-32768;c[g+40>>2]=32767;c[g+8>>2]=0;c[g+92>>2]=16;c[g+96>>2]=1;c[g+100>>2]=8;c[g+104>>2]=0;c[g+124>>2]=0;c[g+128>>2]=0;c[g+132>>2]=0;c[g+148>>2]=1;c[g+152>>2]=2;c[g+144>>2]=4096;c[g+140>>2]=4;c[g+136>>2]=4;c[g+156>>2]=0;c[g+160>>2]=0;c[g+164>>2]=0;c[g+108>>2]=16;c[g+112>>2]=65536;c[g+116>>2]=-32768;c[g+120>>2]=32767;c[g+88>>2]=0;a[g+168>>0]=0;a[g+169>>0]=0;a[g+172>>0]=0;d=b+8|0;c[f>>2]=g;j=Tq(16)|0;d:do if(!j){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();j=Tq(16)|0;if(j)break d}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[j+4>>2]=0;c[j+8>>2]=0;c[j>>2]=3216;c[j+12>>2]=g;l=f+4|0;c[l>>2]=j;h=b+12|0;k=c[h>>2]|0;if(k>>>0<(c[b+16>>2]|0)>>>0){if(!k)b=0;else{c[k>>2]=g;c[k+4>>2]=j;c[f>>2]=0;c[l>>2]=0;b=c[h>>2]|0;j=0}c[h>>2]=b+8}else{ve(d,f);j=c[l>>2]|0}if(!j){i=e;return}k=j+4|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=e;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);k=j+8|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=e;return}jd[c[(c[j>>2]|0)+16>>2]&255](j);i=e;return}else{i=e;return}Oe(b);i=e;return}function Md(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+16|0;f=e+8|0;g=e;h=b+16|0;b=c[h>>2]|0;if(!b){i=e;return}if((d|0)==2){d=Tq(176)|0;a:do if(!d){while(1){g=c[6860]|0;c[6860]=g+0;if(!g)break;qd[g&3]();d=Tq(176)|0;if(d)break a}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);g=c[b+4>>2]|0;c[d>>2]=1208;c[d+4>>2]=g;c[d+12>>2]=16;c[d+16>>2]=1;c[d+20>>2]=8;c[d+24>>2]=0;c[d+44>>2]=0;c[d+48>>2]=0;c[d+52>>2]=0;c[d+68>>2]=1;c[d+72>>2]=2;c[d+64>>2]=4096;c[d+60>>2]=4;c[d+56>>2]=4;c[d+76>>2]=0;c[d+80>>2]=0;c[d+84>>2]=0;c[d+28>>2]=16;c[d+32>>2]=65536;c[d+36>>2]=-32768;c[d+40>>2]=32767;c[d+8>>2]=0;c[d+92>>2]=16;c[d+96>>2]=1;c[d+100>>2]=8;c[d+104>>2]=0;c[d+124>>2]=0;c[d+128>>2]=0;c[d+132>>2]=0;c[d+148>>2]=1;c[d+152>>2]=2;c[d+144>>2]=4096;c[d+140>>2]=4;c[d+136>>2]=4;c[d+156>>2]=0;c[d+160>>2]=0;c[d+164>>2]=0;c[d+108>>2]=16;c[d+112>>2]=65536;c[d+116>>2]=-32768;c[d+120>>2]=32767;c[d+88>>2]=0;a[d+168>>0]=0;a[d+169>>0]=0;a[d+172>>0]=0;g=b+8|0;c[f>>2]=d;j=Tq(16)|0;b:do if(!j){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();j=Tq(16)|0;if(j)break b}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[j+4>>2]=0;c[j+8>>2]=0;c[j>>2]=1392;c[j+12>>2]=d;k=f+4|0;c[k>>2]=j;h=b+12|0;l=c[h>>2]|0;if(l>>>0<(c[b+16>>2]|0)>>>0){if(!l)b=0;else{c[l>>2]=d;c[l+4>>2]=j;c[f>>2]=0;c[k>>2]=0;b=c[h>>2]|0;j=0}c[h>>2]=b+8}else{ve(g,f);j=c[k>>2]|0}if(!j){i=e;return}k=j+4|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=e;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);k=j+8|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=e;return}jd[c[(c[j>>2]|0)+16>>2]&255](j);i=e;return}else if((d|0)==8){ae(b);b=c[h>>2]|0}else if((d|0)!=4)if((d|0)==1){f=Tq(172)|0;c:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(172)|0;if(f)break c}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);d=c[b+4>>2]|0;c[f>>2]=1816;c[f+4>>2]=d;c[f+12>>2]=8;c[f+16>>2]=1;c[f+20>>2]=8;c[f+24>>2]=0;c[f+44>>2]=0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+68>>2]=1;c[f+72>>2]=2;c[f+64>>2]=4096;c[f+60>>2]=4;c[f+56>>2]=4;c[f+76>>2]=0;c[f+80>>2]=0;c[f+84>>2]=0;c[f+28>>2]=8;c[f+32>>2]=256;c[f+36>>2]=-128;c[f+40>>2]=127;c[f+8>>2]=0;c[f+92>>2]=8;c[f+96>>2]=1;c[f+100>>2]=8;c[f+104>>2]=0;c[f+124>>2]=0;c[f+128>>2]=0;c[f+132>>2]=0;c[f+148>>2]=1;c[f+152>>2]=2;c[f+144>>2]=4096;c[f+140>>2]=4;c[f+136>>2]=4;c[f+156>>2]=0;c[f+160>>2]=0;c[f+164>>2]=0;c[f+108>>2]=8;c[f+112>>2]=256;c[f+116>>2]=-128;c[f+120>>2]=127;c[f+88>>2]=0;a[f+168>>0]=0;a[f+169>>0]=0;a[f+171>>0]=0;d=b+8|0;c[g>>2]=f;l=Tq(16)|0;d:do if(!l){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();l=Tq(16)|0;if(l)break d}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[l+4>>2]=0;c[l+8>>2]=0;c[l>>2]=2e3;c[l+12>>2]=f;j=g+4|0;c[j>>2]=l;h=b+12|0;k=c[h>>2]|0;if(k>>>0<(c[b+16>>2]|0)>>>0){if(!k)b=0;else{c[k>>2]=f;c[k+4>>2]=l;c[g>>2]=0;c[j>>2]=0;l=0;b=c[h>>2]|0}c[h>>2]=b+8}else{ve(d,g);l=c[j>>2]|0}if(!l){i=e;return}j=l+4|0;k=c[j>>2]|0;c[j>>2]=k+ -1;if(k){i=e;return}jd[c[(c[l>>2]|0)+8>>2]&255](l);j=l+8|0;k=c[j>>2]|0;c[j>>2]=k+ -1;if(k){i=e;return}jd[c[(c[l>>2]|0)+16>>2]&255](l);i=e;return}else{i=e;return}ae(b);i=e;return}function Nd(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+16>>2]|0;if(!a){i=d;return}kd[c[c[a>>2]>>2]&63](a,b);i=d;return}function Od(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;g=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=g;kd[a&63](b,e);i=f;return}else{a=c[(c[b>>2]|0)+g>>2]|0;kd[a&63](b,e);i=f;return}}function Pd(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;g=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=g;kd[a&63](b,e);i=f;return}else{a=c[(c[b>>2]|0)+g>>2]|0;kd[a&63](b,e);i=f;return}}function Qd(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;h=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=h;od[a&15](b,e,f);i=g;return}else{a=c[(c[b>>2]|0)+h>>2]|0;od[a&15](b,e,f);i=g;return}}function Rd(){var a=0,b=0;a=i;b=Tq(24)|0;a:do if(!b){while(1){b=c[6860]|0;c[6860]=b+0;if(!b)break;qd[b&3]();b=Tq(24)|0;if(b)break a}b=Wb(4)|0;c[b>>2]=27280;Zc(b|0,27328,220)}while(0);c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;i=a;return b|0}function Sd(a){a=a|0;var b=0;b=i;a=id[a&3]()|0;i=b;return a|0}function Td(a){a=a|0;return 200}function Ud(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;if(!a){i=b;return}c[a>>2]=0;d=a+4|0;e=c[d>>2]|0;c[d>>2]=0;if(((e|0)!=0?(f=e+4|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),f=e+8|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);e=a+16|0;c[e>>2]=0;f=a+20|0;g=c[f>>2]|0;c[f>>2]=0;if(g){j=g+4|0;h=c[j>>2]|0;c[j>>2]=h+ -1;if((h|0)==0?(jd[c[(c[g>>2]|0)+8>>2]&255](g),h=g+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[g>>2]|0)+16>>2]&255](g);g=c[f>>2]|0;c[e>>2]=0;c[f>>2]=0;if(g){h=g+4|0;j=c[h>>2]|0;c[h>>2]=j+ -1;if((j|0)==0?(jd[c[(c[g>>2]|0)+8>>2]&255](g),h=g+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[g>>2]|0)+16>>2]&255](g);e=c[f>>2]|0;if(((e|0)!=0?(h=e+4|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),h=e+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e)}}else{c[e>>2]=0;c[f>>2]=0}e=c[a+12>>2]|0;if(((e|0)!=0?(h=e+4|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),h=e+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);d=c[d>>2]|0;if(((d|0)!=0?(h=d+4|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)?(jd[c[(c[d>>2]|0)+8>>2]&255](d),h=d+8|0,j=c[h>>2]|0,c[h>>2]=j+ -1,(j|0)==0):0)jd[c[(c[d>>2]|0)+16>>2]&255](d);Uq(a);i=b;return}function Vd(a,b){a=a|0;b=b|0;var e=0,f=0;e=i;f=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=f;a=md[a&127](b)|0;i=e;return a|0}else{a=c[(c[b>>2]|0)+f>>2]|0;a=md[a&127](b)|0;i=e;return a|0}return 0}function Wd(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0;f=i;g=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=g;kd[a&63](b,e);i=f;return}else{a=c[(c[b>>2]|0)+g>>2]|0;kd[a&63](b,e);i=f;return}}function Xd(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;h=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;a=a+4|0;a=d[a>>0]|d[a+1>>0]<<8|d[a+2>>0]<<16|d[a+3>>0]<<24;b=b+(a>>1)|0;if(!(a&1)){a=h;od[a&15](b,e,f);i=g;return}else{a=c[(c[b>>2]|0)+h>>2]|0;od[a&15](b,e,f);i=g;return}}function Yd(){var a=0,b=0;a=i;b=Tq(16)|0;a:do if(!b){while(1){b=c[6860]|0;c[6860]=b+0;if(!b)break;qd[b&3]();b=Tq(16)|0;if(b)break a}b=Wb(4)|0;c[b>>2]=27280;Zc(b|0,27328,220)}while(0);c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;i=a;return b|0}function Zd(a){a=a|0;var b=0;b=i;a=id[a&3]()|0;i=b;return a|0}function _d(a){a=a|0;return 384}function $d(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;if(!a){i=b;return}c[a>>2]=0;d=a+4|0;e=c[d>>2]|0;c[d>>2]=0;if(((e|0)!=0?(g=e+4|0,f=c[g>>2]|0,c[g>>2]=f+ -1,(f|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),f=e+8|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);c[a+8>>2]=0;e=a+12|0;f=c[e>>2]|0;c[e>>2]=0;if(f){h=f+4|0;g=c[h>>2]|0;c[h>>2]=g+ -1;if((g|0)==0?(jd[c[(c[f>>2]|0)+8>>2]&255](f),g=f+8|0,h=c[g>>2]|0,c[g>>2]=h+ -1,(h|0)==0):0)jd[c[(c[f>>2]|0)+16>>2]&255](f);e=c[e>>2]|0;if(((e|0)!=0?(g=e+4|0,h=c[g>>2]|0,c[g>>2]=h+ -1,(h|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),g=e+8|0,h=c[g>>2]|0,c[g>>2]=h+ -1,(h|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e)}d=c[d>>2]|0;if(((d|0)!=0?(g=d+4|0,h=c[g>>2]|0,c[g>>2]=h+ -1,(h|0)==0):0)?(jd[c[(c[d>>2]|0)+8>>2]&255](d),g=d+8|0,h=c[g>>2]|0,c[g>>2]=h+ -1,(h|0)==0):0)jd[c[(c[d>>2]|0)+16>>2]&255](d);Uq(a);i=b;return}function ae(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+16|0;e=d;f=Tq(180)|0;a:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(180)|0;if(f)break a}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);g=c[b+4>>2]|0;c[f>>2]=528;c[f+4>>2]=g;c[f+12>>2]=32;c[f+16>>2]=1;c[f+20>>2]=8;c[f+24>>2]=0;c[f+44>>2]=0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+68>>2]=1;c[f+72>>2]=2;c[f+64>>2]=4096;c[f+60>>2]=4;c[f+56>>2]=4;c[f+76>>2]=0;c[f+80>>2]=0;c[f+84>>2]=0;c[f+28>>2]=32;c[f+32>>2]=0;c[f+36>>2]=-2147483648;c[f+40>>2]=2147483647;c[f+8>>2]=0;c[f+92>>2]=32;c[f+96>>2]=1;c[f+100>>2]=8;c[f+104>>2]=0;c[f+124>>2]=0;c[f+128>>2]=0;c[f+132>>2]=0;c[f+148>>2]=1;c[f+152>>2]=2;c[f+144>>2]=4096;c[f+140>>2]=4;c[f+136>>2]=4;c[f+156>>2]=0;c[f+160>>2]=0;c[f+164>>2]=0;c[f+108>>2]=32;c[f+112>>2]=0;c[f+116>>2]=-2147483648;c[f+120>>2]=2147483647;c[f+88>>2]=0;a[f+168>>0]=0;a[f+169>>0]=0;a[f+176>>0]=0;g=b+8|0;c[e>>2]=f;j=Tq(16)|0;b:do if(!j){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();j=Tq(16)|0;if(j)break b}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[j+4>>2]=0;c[j+8>>2]=0;c[j>>2]=784;c[j+12>>2]=f;l=e+4|0;c[l>>2]=j;h=b+12|0;k=c[h>>2]|0;if(k>>>0<(c[b+16>>2]|0)>>>0){if(!k)b=0;else{c[k>>2]=f;c[k+4>>2]=j;c[e>>2]=0;c[l>>2]=0;b=c[h>>2]|0;j=0}c[h>>2]=b+8}else{ve(g,e);j=c[l>>2]|0}if(!j){i=d;return}k=j+4|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=d;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);k=j+8|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=d;return}jd[c[(c[j>>2]|0)+16>>2]&255](j);i=d;return}function be(a){a=a|0;var b=0;b=i;c[a>>2]=528;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function ce(a){a=a|0;var b=0;b=i;c[a>>2]=528;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function de(a){a=a|0;return 4}function ee(a,b){a=a|0;b=b|0;return}function fe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;j=c[b+4>>2]|0;if(!(a[b+169>>0]|0))ge(b+88|0);g=b+172|0;h=b+176|0;do if(a[h>>0]|0){k=c[g>>2]|0;j=(he(b+88|0,j,c[b+124>>2]|0)|0)+k|0;b=c[b+112>>2]|0;if((j|0)<0){b=j+b|0;break}else{b=j-(j>>>0>>0?0:b)|0;break}}else{k=c[j>>2]|0;n=k+8|0;o=c[n>>2]|0;m=o+1|0;c[n>>2]=m;k=c[k>>2]|0;l=a[k+o>>0]|0;j=o+2|0;c[n>>2]=j;m=a[k+m>>0]|0;b=o+3|0;c[n>>2]=b;j=a[k+j>>0]|0;c[n>>2]=o+4;b=(m&255)<<8|l&255|(j&255)<<16|d[k+b>>0]<<24}while(0);if(!(a[h>>0]|0))a[h>>0]=1;c[g>>2]=b;a[e+3>>0]=b>>>24;a[e+2>>0]=b>>>16;a[e+1>>0]=b>>>8;a[e>>0]=b;i=f;return}function ge(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;f=i;i=i+96|0;h=f+44|0;d=f;w=b+36|0;u=b+40|0;if((c[w>>2]|0)!=(c[u>>2]|0)){i=f;return}j=b+8|0;e=b+20|0;if(c[j>>2]|0){g=b+44|0;n=h+4|0;m=h+8|0;l=h+12|0;k=h+16|0;o=h+20|0;p=h+24|0;q=h+28|0;r=h+32|0;s=h+36|0;t=h+40|0;v=0;do{me(h,(c[e>>2]|0)+1|0);x=c[u>>2]|0;if(x>>>0<(c[g>>2]|0)>>>0){if(!x)x=0;else{c[x>>2]=c[h>>2];a[x+4>>0]=a[n>>0]|0;c[x+8>>2]=c[m>>2];c[x+12>>2]=c[l>>2];c[x+16>>2]=c[k>>2];c[x+20>>2]=c[o>>2];c[x+24>>2]=c[p>>2];c[x+28>>2]=c[q>>2];c[x+32>>2]=c[r>>2];c[x+36>>2]=c[s>>2];c[x+40>>2]=c[t>>2];c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;x=c[u>>2]|0}c[u>>2]=x+44}else ne(w,h);x=c[m>>2]|0;if(x)Uq(c[x+ -4>>2]|0);x=c[l>>2]|0;if(x)Uq(c[x+ -4>>2]|0);x=c[k>>2]|0;if(x)Uq(c[x+ -4>>2]|0);v=v+1|0}while(v>>>0<(c[j>>2]|0)>>>0)}if(!(c[e>>2]|0)){i=f;return}t=b+12|0;k=b+72|0;s=b+76|0;l=d+4|0;j=d+8|0;o=d+12|0;h=d+16|0;m=d+20|0;n=d+24|0;g=d+28|0;p=d+32|0;q=d+36|0;r=d+40|0;b=b+68|0;u=1;do{v=c[t>>2]|0;me(d,1<<(u>>>0>v>>>0?v:u));v=c[k>>2]|0;if(v>>>0<(c[s>>2]|0)>>>0){if(!v)v=0;else{c[v>>2]=c[d>>2];a[v+4>>0]=a[l>>0]|0;c[v+8>>2]=c[j>>2];c[v+12>>2]=c[o>>2];c[v+16>>2]=c[h>>2];c[v+20>>2]=c[m>>2];c[v+24>>2]=c[n>>2];c[v+28>>2]=c[g>>2];c[v+32>>2]=c[p>>2];c[v+36>>2]=c[q>>2];c[v+40>>2]=c[r>>2];c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;v=c[k>>2]|0}c[k>>2]=v+44}else ne(b,d);v=c[j>>2]|0;if(v)Uq(c[v+ -4>>2]|0);v=c[o>>2]|0;if(v)Uq(c[v+ -4>>2]|0);v=c[h>>2]|0;if(v)Uq(c[v+ -4>>2]|0);u=u+1|0}while(u>>>0<=(c[e>>2]|0)>>>0);i=f;return}function he(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;g=ie(b,e)|0;c[a>>2]=g;if(g){if(g>>>0>=32){m=c[a+28>>2]|0;i=f;return m|0}e=c[a+12>>2]|0;if(g>>>0>e>>>0){e=g-e|0;m=ie(b,(c[a+68>>2]|0)+((g+ -1|0)*44|0)|0)|0;e=m<>2]|0)+((g+ -1|0)*44|0)|0)|0;a=c[a>>2]|0;if((e|0)<(1<>2]|0;k=da(m>>>13,c[g>>2]|0)|0;h=b+4|0;l=c[h>>2]|0;n=l>>>0>=k>>>0;e=n&1;if(n){c[h>>2]=l-k;k=m-k|0;c[j>>2]=k}else{c[j>>2]=k;k=a+60|0;c[k>>2]=(c[k>>2]|0)+1;k=c[j>>2]|0}if(k>>>0<16777216){k=c[h>>2]|0;do{m=c[b>>2]|0;l=m+8|0;n=c[l>>2]|0;c[l>>2]=n+1;k=d[(c[m>>2]|0)+n>>0]|0|k<<8;c[h>>2]=k;n=c[j>>2]<<8;c[j>>2]=n}while(n>>>0<16777216)}j=a+52|0;n=(c[j>>2]|0)+ -1|0;c[j>>2]=n;if(n){n=e;i=f;return n|0}b=a+48|0;h=c[b>>2]|0;k=a+64|0;l=(c[k>>2]|0)+h|0;c[k>>2]=l;if(l>>>0>8192){l=(l+1|0)>>>1;c[k>>2]=l;n=a+60|0;a=((c[n>>2]|0)+1|0)>>>1;c[n>>2]=a;if((a|0)==(l|0)){n=l+1|0;c[k>>2]=n;k=n}else{k=l;l=a}}else{k=l;l=c[a+60>>2]|0}c[g>>2]=(da(2147483648/(k>>>0)|0,l)|0)>>>18;n=h*5|0;n=n>>>0>259?64:n>>>2;c[b>>2]=n;c[j>>2]=n;n=e;i=f;return n|0}function ie(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;e=a+8|0;g=c[e>>2]|0;j=c[b+16>>2]|0;if(j){k=c[a+4>>2]|0;h=g>>>15;c[e>>2]=h;m=(k>>>0)/(h>>>0)|0;n=m>>>(c[b+40>>2]|0);l=c[j+(n<<2)>>2]|0;n=(c[j+(n+1<<2)>>2]|0)+1|0;o=l+1|0;j=c[b+8>>2]|0;if(n>>>0>o>>>0){do{o=(n+l|0)>>>1;p=(c[j+(o<<2)>>2]|0)>>>0>m>>>0;l=p?l:o;n=p?o:n;o=l+1|0}while(n>>>0>o>>>0);m=o}else m=o;o=da(h,c[j+(l<<2)>>2]|0)|0;if((l|0)!=(c[b+32>>2]|0))g=da(c[j+(m<<2)>>2]|0,h)|0}else{j=g>>>15;c[e>>2]=j;m=c[b>>2]|0;h=c[b+8>>2]|0;k=c[a+4>>2]|0;n=m>>>1;l=0;o=0;do{q=da(c[h+(n<<2)>>2]|0,j)|0;p=q>>>0>k>>>0;g=p?q:g;o=p?o:q;l=p?l:n;m=p?n:m;n=(l+m|0)>>>1}while((n|0)!=(l|0))}h=a+4|0;j=k-o|0;c[h>>2]=j;q=g-o|0;c[e>>2]=q;if(q>>>0<16777216)do{p=c[a>>2]|0;o=p+8|0;q=c[o>>2]|0;c[o>>2]=q+1;j=d[(c[p>>2]|0)+q>>0]|0|j<<8;c[h>>2]=j;q=c[e>>2]<<8;c[e>>2]=q}while(q>>>0<16777216);p=(c[b+12>>2]|0)+(l<<2)|0;c[p>>2]=(c[p>>2]|0)+1;p=b+28|0;q=(c[p>>2]|0)+ -1|0;c[p>>2]=q;if(q){i=f;return l|0}ke(b);i=f;return l|0}function je(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;e=a+4|0;h=c[e>>2]|0;f=a+8|0;j=c[f>>2]|0;if(b>>>0>19){k=j>>>16;c[f>>2]=k;j=(h>>>0)/(k>>>0)|0;h=h-(da(j,k)|0)|0;c[e>>2]=h;do{l=c[a>>2]|0;m=l+8|0;k=c[m>>2]|0;c[m>>2]=k+1;h=d[(c[l>>2]|0)+k>>0]|0|h<<8;c[e>>2]=h;k=c[f>>2]<<8;c[f>>2]=k}while(k>>>0<16777216);m=(je(a,b+ -16|0)|0)<<16|j&65535;i=g;return m|0}m=j>>>b;c[f>>2]=m;b=(h>>>0)/(m>>>0)|0;h=h-(da(b,m)|0)|0;c[e>>2]=h;if(m>>>0>=16777216){i=g;return b|0}do{l=c[a>>2]|0;k=l+8|0;m=c[k>>2]|0;c[k>>2]=m+1;h=d[(c[l>>2]|0)+m>>0]|0|h<<8;c[e>>2]=h;m=c[f>>2]<<8;c[f>>2]=m}while(m>>>0<16777216);i=g;return b|0}function ke(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=i;e=b+24|0;h=b+20|0;k=(c[h>>2]|0)+(c[e>>2]|0)|0;c[h>>2]=k;if(k>>>0>32768){c[h>>2]=0;if(!(c[b>>2]|0))k=0;else{l=c[b+12>>2]|0;j=0;do{s=l+(j<<2)|0;k=((c[s>>2]|0)+1|0)>>>1;c[s>>2]=k;k=k+(c[h>>2]|0)|0;c[h>>2]=k;j=j+1|0}while(j>>>0<(c[b>>2]|0)>>>0)}}h=2147483648/(k>>>0)|0;if((a[b+4>>0]|0)==0?(f=b+36|0,(c[f>>2]|0)!=0):0){if(c[b>>2]|0){o=c[b+8>>2]|0;m=c[b+12>>2]|0;k=b+40|0;n=b+16|0;j=0;s=0;l=0;while(1){r=(da(l,h)|0)>>>16;c[o+(j<<2)>>2]=r;l=(c[m+(j<<2)>>2]|0)+l|0;r=r>>>(c[k>>2]|0);if(s>>>0>>0){p=j+ -1|0;q=c[n>>2]|0;do{s=s+1|0;c[q+(s<<2)>>2]=p}while((s|0)!=(r|0))}else r=s;j=j+1|0;if(j>>>0>=(c[b>>2]|0)>>>0)break;else s=r}h=c[n>>2]|0;c[h>>2]=0;if(r>>>0<=(c[f>>2]|0)>>>0)g=18}else{h=c[b+16>>2]|0;c[h>>2]=0;r=0;g=18}if((g|0)==18)do{r=r+1|0;c[h+(r<<2)>>2]=(c[b>>2]|0)+ -1}while(r>>>0<=(c[f>>2]|0)>>>0);s=c[b>>2]|0;r=c[e>>2]|0;r=r*5|0;r=r>>>2;s=s<<3;s=s+48|0;q=r>>>0>s>>>0;r=q?s:r;c[e>>2]=r;s=b+28|0;c[s>>2]=r;i=d;return}if(!(c[b>>2]|0)){s=0;r=c[e>>2]|0;r=r*5|0;r=r>>>2;s=s<<3;s=s+48|0;q=r>>>0>s>>>0;r=q?s:r;c[e>>2]=r;s=b+28|0;c[s>>2]=r;i=d;return}j=c[b+8>>2]|0;k=c[b+12>>2]|0;l=0;g=0;do{c[j+(l<<2)>>2]=(da(g,h)|0)>>>16;g=(c[k+(l<<2)>>2]|0)+g|0;l=l+1|0;f=c[b>>2]|0}while(l>>>0>>0);r=c[e>>2]|0;r=r*5|0;r=r>>>2;s=f<<3;s=s+48|0;q=r>>>0>s>>>0;r=q?s:r;c[e>>2]=r;s=b+28|0;c[s>>2]=r;i=d;return}function le(a){a=a|0;Oa(a|0)|0;eq()}function me(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;c[b>>2]=d;a[b+4>>0]=0;j=b+8|0;c[j>>2]=0;g=b+12|0;c[g>>2]=0;h=b+16|0;c[h>>2]=0;if((d+ -2|0)>>>0>2046){b=Wb(8)|0;c[b>>2]=27520;f=b+4|0;d=Tq(38)|0;if(d){e=d;c[e>>2]=25;g=e+4|0;c[g>>2]=25;g=e+8|0;c[g>>2]=0;e=e+12|0;g=e+0|0;d=744|0;h=g+26|0;do{a[g>>0]=a[d>>0]|0;g=g+1|0;d=d+1|0}while((g|0)<(h|0));c[f>>2]=e;Zc(b|0,27720,224)}while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(38)|0;if(d){e=8;break}}if((e|0)==8){c[d>>2]=25;e=d+4|0;c[e>>2]=25;e=d+8|0;c[e>>2]=0;e=d+12|0;g=e+0|0;d=744|0;h=g+26|0;do{a[g>>0]=a[d>>0]|0;g=g+1|0;d=d+1|0}while((g|0)<(h|0));c[f>>2]=e;Zc(b|0,27720,224)}j=Wb(4)|0;c[j>>2]=27280;Zc(j|0,27328,220)}else{c[b+32>>2]=d+ -1;if(d>>>0>16){e=3;while(1)if(1<>>0>>0)e=e+1|0;else break;k=1<>2]=k;c[b+40>>2]=15-e;k=Tq((k<<2)+76|0)|0;e=k+68&-64;c[e+ -4>>2]=k;c[h>>2]=e}else{c[h>>2]=0;c[b+40>>2]=0;c[b+36>>2]=0}k=(d<<2)+68|0;h=Tq(k)|0;e=h+68&-64;c[e+ -4>>2]=h;c[j>>2]=e;k=Tq(k)|0;e=k+68&-64;c[e+ -4>>2]=k;c[g>>2]=e;c[b+20>>2]=0;g=b+24|0;c[g>>2]=d;if(!d){ke(b);j=c[b>>2]|0;j=j+6|0;j=j>>>1;c[g>>2]=j;k=b+28|0;c[k>>2]=j;i=f;return}else d=0;do{c[e+(d<<2)>>2]=1;d=d+1|0}while(d>>>0<(c[b>>2]|0)>>>0);ke(b);j=c[b>>2]|0;j=j+6|0;j=j>>>1;c[g>>2]=j;k=b+28|0;c[k>>2]=j;i=f;return}}function ne(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;f=b+4|0;l=c[f>>2]|0;k=c[b>>2]|0;m=k;h=(l-m|0)/44|0;j=h+1|0;if(j>>>0>97612893)Mn();g=b+8|0;m=((c[g>>2]|0)-m|0)/44|0;if(m>>>0<48806446){o=m<<1;o=o>>>0>>0?j:o;if(!o){p=0;m=0}else n=5}else{o=97612893;n=5}if((n|0)==5){n=o*44|0;n=(n|0)==0?1:n;m=Tq(n)|0;a:do if(!m){while(1){m=c[6860]|0;c[6860]=m+0;if(!m)break;qd[m&3]();m=Tq(n)|0;if(m)break a}p=Wb(4)|0;c[p>>2]=27280;Zc(p|0,27328,220)}while(0);p=o}o=m+(h*44|0)|0;n=m+(p*44|0)|0;if(o){c[o>>2]=c[d>>2];a[m+(h*44|0)+4>>0]=a[d+4>>0]|0;l=d+8|0;c[m+(h*44|0)+8>>2]=c[l>>2];c[m+(h*44|0)+12>>2]=c[d+12>>2];c[m+(h*44|0)+16>>2]=c[d+16>>2];c[m+(h*44|0)+20>>2]=c[d+20>>2];c[m+(h*44|0)+24>>2]=c[d+24>>2];c[m+(h*44|0)+28>>2]=c[d+28>>2];c[m+(h*44|0)+32>>2]=c[d+32>>2];c[m+(h*44|0)+36>>2]=c[d+36>>2];c[m+(h*44|0)+40>>2]=c[d+40>>2];c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;l=c[f>>2]|0;k=c[b>>2]|0}j=m+(j*44|0)|0;if((l|0)!=(k|0)){h=h+ -1-(((l+ -44+(0-k)|0)>>>0)/44|0)|0;while(1){d=l;l=l+ -44|0;c[o+ -44>>2]=c[l>>2];a[o+ -40>>0]=a[d+ -40>>0]|0;p=d+ -36|0;c[o+ -36>>2]=c[p>>2];c[o+ -32>>2]=c[d+ -32>>2];c[o+ -28>>2]=c[d+ -28>>2];c[o+ -24>>2]=c[d+ -24>>2];c[o+ -20>>2]=c[d+ -20>>2];c[o+ -16>>2]=c[d+ -16>>2];c[o+ -12>>2]=c[d+ -12>>2];c[o+ -8>>2]=c[d+ -8>>2];c[o+ -4>>2]=c[d+ -4>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;if((l|0)==(k|0))break;else o=o+ -44|0}l=c[b>>2]|0;k=c[f>>2]|0;c[b>>2]=m+(h*44|0);c[f>>2]=j;c[g>>2]=n;if((k|0)!=(l|0))do{b=c[k+ -36>>2]|0;if(b)Uq(c[b+ -4>>2]|0);b=c[k+ -32>>2]|0;if(b)Uq(c[b+ -4>>2]|0);b=c[k+ -28>>2]|0;k=k+ -44|0;if(b)Uq(c[b+ -4>>2]|0)}while((k|0)!=(l|0))}else{c[b>>2]=o;c[f>>2]=j;c[g>>2]=n}if(!l){i=e;return}Uq(l);i=e;return}function oe(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;d=a+36|0;e=c[d>>2]|0;f=a+40|0;g=c[f>>2]|0;if((g|0)!=(e|0))do{c[f>>2]=g+ -44;h=c[g+ -36>>2]|0;if(h)Uq(c[h+ -4>>2]|0);h=c[g+ -32>>2]|0;if(h)Uq(c[h+ -4>>2]|0);g=c[g+ -28>>2]|0;if(g)Uq(c[g+ -4>>2]|0);g=c[f>>2]|0}while((g|0)!=(e|0));f=a+68|0;e=c[f>>2]|0;a=a+72|0;g=c[a>>2]|0;if((g|0)==(e|0)){pe(f);pe(d);i=b;return}do{c[a>>2]=g+ -44;h=c[g+ -36>>2]|0;if(h)Uq(c[h+ -4>>2]|0);h=c[g+ -32>>2]|0;if(h)Uq(c[h+ -4>>2]|0);g=c[g+ -28>>2]|0;if(g)Uq(c[g+ -4>>2]|0);g=c[a>>2]|0}while((g|0)!=(e|0));pe(f);pe(d);i=b;return}function pe(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=c[a>>2]|0;if(!d){i=b;return}e=a+4|0;f=c[e>>2]|0;if((f|0)!=(d|0)){do{c[e>>2]=f+ -44;g=c[f+ -36>>2]|0;if(g)Uq(c[g+ -4>>2]|0);g=c[f+ -32>>2]|0;if(g)Uq(c[g+ -4>>2]|0);f=c[f+ -28>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e>>2]|0}while((f|0)!=(d|0));d=c[a>>2]|0}Uq(d);i=b;return}function qe(a){a=a|0;return}function re(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function se(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function te(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==1040)a=a+12|0;else a=0;return a|0}function ue(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function ve(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;d=i;f=a+4|0;k=c[f>>2]|0;j=c[a>>2]|0;l=j;g=k-l>>3;h=g+1|0;if(h>>>0>536870911)Mn();e=a+8|0;l=(c[e>>2]|0)-l|0;if(l>>3>>>0<268435455){n=l>>2;n=n>>>0>>0?h:n;if(!n){o=0;l=0}else m=5}else{n=536870911;m=5}if((m|0)==5){m=n<<3;m=(m|0)==0?1:m;l=Tq(m)|0;a:do if(!l){while(1){l=c[6860]|0;c[6860]=l+0;if(!l)break;qd[l&3]();l=Tq(m)|0;if(l)break a}o=Wb(4)|0;c[o>>2]=27280;Zc(o|0,27328,220)}while(0);o=n}n=l+(g<<3)|0;m=l+(o<<3)|0;if(n){c[n>>2]=c[b>>2];k=b+4|0;c[l+(g<<3)+4>>2]=c[k>>2];c[b>>2]=0;c[k>>2]=0;k=c[f>>2]|0;j=c[a>>2]|0}h=l+(h<<3)|0;if((k|0)!=(j|0)){g=g+ -1-((k+ -8+(0-j)|0)>>>3)|0;while(1){o=k;k=k+ -8|0;c[n+ -8>>2]=c[k>>2];o=o+ -4|0;c[n+ -4>>2]=c[o>>2];c[k>>2]=0;c[o>>2]=0;if((k|0)==(j|0))break;else n=n+ -8|0}k=c[a>>2]|0;j=c[f>>2]|0;c[a>>2]=l+(g<<3);c[f>>2]=h;c[e>>2]=m;if((j|0)!=(k|0))do{a=c[j+ -4>>2]|0;j=j+ -8|0;if(((a|0)!=0?(n=a+4|0,o=c[n>>2]|0,c[n>>2]=o+ -1,(o|0)==0):0)?(jd[c[(c[a>>2]|0)+8>>2]&255](a),n=a+8|0,o=c[n>>2]|0,c[n>>2]=o+ -1,(o|0)==0):0)jd[c[(c[a>>2]|0)+16>>2]&255](a)}while((j|0)!=(k|0))}else{c[a>>2]=n;c[f>>2]=h;c[e>>2]=m}if(!k){i=d;return}Uq(k);i=d;return}function we(a){a=a|0;var b=0;b=i;c[a>>2]=1208;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function xe(a){a=a|0;var b=0;b=i;c[a>>2]=1208;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function ye(a){a=a|0;return 2}function ze(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;k=c[d+4>>2]|0;if(!(a[d+169>>0]|0))ge(d+88|0);h=d+170|0;j=d+172|0;do if(a[j>>0]|0){l=e[h>>1]|0;k=(he(d+88|0,k,c[d+124>>2]|0)|0)+l|0;d=c[d+112>>2]|0;if((k|0)<0){k=k+d|0;break}else{k=k-(k>>>0>>0?0:d)|0;break}}else{d=c[k>>2]|0;m=d+8|0;n=c[m>>2]|0;l=n+1|0;c[m>>2]=l;d=c[d>>2]|0;k=a[d+n>>0]|0;c[m>>2]=n+2;k=a[d+l>>0]<<8|k&255}while(0);d=k&65535;if(a[j>>0]|0){b[h>>1]=d;m=(d&65535)>>>8;m=m&255;n=f+1|0;a[n>>0]=m;n=k&255;a[f>>0]=n;i=g;return}a[j>>0]=1;b[h>>1]=d;m=(d&65535)>>>8;m=m&255;n=f+1|0;a[n>>0]=m;n=k&255;a[f>>0]=n;i=g;return}function Ae(a){a=a|0;return}function Be(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ce(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function De(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==1648)a=a+12|0;else a=0;return a|0}function Ee(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Fe(a){a=a|0;var b=0;b=i;c[a>>2]=1816;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function Ge(a){a=a|0;var b=0;b=i;c[a>>2]=1816;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function He(a){a=a|0;return 1}function Ie(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;j=c[b+4>>2]|0;if(!(a[b+169>>0]|0))ge(b+88|0);h=b+170|0;g=b+171|0;if(a[g>>0]|0){k=d[h>>0]|0;j=(he(b+88|0,j,c[b+124>>2]|0)|0)+k|0;b=c[b+112>>2]|0;if((j|0)<0)b=j+b|0;else b=j-(j>>>0>>0?0:b)|0;b=b&255;if(a[g>>0]|0){j=h;k=b;a[j>>0]=k;a[e>>0]=k;i=f;return}}else{k=c[j>>2]|0;j=k+8|0;b=c[j>>2]|0;c[j>>2]=b+1;b=a[(c[k>>2]|0)+b>>0]|0}a[g>>0]=1;j=h;k=b;a[j>>0]=k;a[e>>0]=k;i=f;return}function Je(a){a=a|0;return}function Ke(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Le(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function Me(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==2256)a=a+12|0;else a=0;return a|0}function Ne(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Oe(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+16|0;e=d;f=Tq(180)|0;a:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(180)|0;if(f)break a}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);g=c[b+4>>2]|0;c[f>>2]=2424;c[f+4>>2]=g;c[f+12>>2]=32;c[f+16>>2]=1;c[f+20>>2]=8;c[f+24>>2]=0;c[f+44>>2]=0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+68>>2]=1;c[f+72>>2]=2;c[f+64>>2]=4096;c[f+60>>2]=4;c[f+56>>2]=4;c[f+76>>2]=0;c[f+80>>2]=0;c[f+84>>2]=0;c[f+28>>2]=32;c[f+32>>2]=0;c[f+36>>2]=-2147483648;c[f+40>>2]=2147483647;c[f+8>>2]=0;c[f+92>>2]=32;c[f+96>>2]=1;c[f+100>>2]=8;c[f+104>>2]=0;c[f+124>>2]=0;c[f+128>>2]=0;c[f+132>>2]=0;c[f+148>>2]=1;c[f+152>>2]=2;c[f+144>>2]=4096;c[f+140>>2]=4;c[f+136>>2]=4;c[f+156>>2]=0;c[f+160>>2]=0;c[f+164>>2]=0;c[f+108>>2]=32;c[f+112>>2]=0;c[f+116>>2]=-2147483648;c[f+120>>2]=2147483647;c[f+88>>2]=0;a[f+168>>0]=0;a[f+169>>0]=0;a[f+176>>0]=0;g=b+8|0;c[e>>2]=f;j=Tq(16)|0;b:do if(!j){while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();j=Tq(16)|0;if(j)break b}l=Wb(4)|0;c[l>>2]=27280;Zc(l|0,27328,220)}while(0);c[j+4>>2]=0;c[j+8>>2]=0;c[j>>2]=2608;c[j+12>>2]=f;l=e+4|0;c[l>>2]=j;h=b+12|0;k=c[h>>2]|0;if(k>>>0<(c[b+16>>2]|0)>>>0){if(!k)b=0;else{c[k>>2]=f;c[k+4>>2]=j;c[e>>2]=0;c[l>>2]=0;b=c[h>>2]|0;j=0}c[h>>2]=b+8}else{ve(g,e);j=c[l>>2]|0}if(!j){i=d;return}k=j+4|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=d;return}jd[c[(c[j>>2]|0)+8>>2]&255](j);k=j+8|0;l=c[k>>2]|0;c[k>>2]=l+ -1;if(l){i=d;return}jd[c[(c[j>>2]|0)+16>>2]&255](j);i=d;return}function Pe(a){a=a|0;var b=0;b=i;c[a>>2]=2424;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function Qe(a){a=a|0;var b=0;b=i;c[a>>2]=2424;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function Re(a){a=a|0;return 4}function Se(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;j=c[b+4>>2]|0;if(!(a[b+169>>0]|0))ge(b+88|0);g=b+172|0;h=b+176|0;do if(a[h>>0]|0){k=c[g>>2]|0;j=(he(b+88|0,j,c[b+124>>2]|0)|0)+k|0;b=c[b+112>>2]|0;if((j|0)<0){b=j+b|0;break}else{b=j-(j>>>0>>0?0:b)|0;break}}else{k=c[j>>2]|0;n=k+8|0;o=c[n>>2]|0;m=o+1|0;c[n>>2]=m;k=c[k>>2]|0;l=a[k+o>>0]|0;j=o+2|0;c[n>>2]=j;m=a[k+m>>0]|0;b=o+3|0;c[n>>2]=b;j=a[k+j>>0]|0;c[n>>2]=o+4;b=(m&255)<<8|l&255|(j&255)<<16|d[k+b>>0]<<24}while(0);if(!(a[h>>0]|0))a[h>>0]=1;c[g>>2]=b;a[e+3>>0]=b>>>24;a[e+2>>0]=b>>>16;a[e+1>>0]=b>>>8;a[e>>0]=b;i=f;return}function Te(a){a=a|0;return}function Ue(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ve(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function We(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==2864)a=a+12|0;else a=0;return a|0}function Xe(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ye(a){a=a|0;var b=0;b=i;c[a>>2]=3032;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function Ze(a){a=a|0;var b=0;b=i;c[a>>2]=3032;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function _e(a){a=a|0;return 2}function $e(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;j=c[d+4>>2]|0;if(!(a[d+169>>0]|0))ge(d+88|0);g=d+170|0;h=d+172|0;do if(a[h>>0]|0){k=b[g>>1]|0;j=(he(d+88|0,j,c[d+124>>2]|0)|0)+k|0;d=c[d+112>>2]|0;if((j|0)<0){j=j+d|0;break}else{j=j-(j>>>0>>0?0:d)|0;break}}else{d=c[j>>2]|0;l=d+8|0;m=c[l>>2]|0;k=m+1|0;c[l>>2]=k;d=c[d>>2]|0;j=a[d+m>>0]|0;c[l>>2]=m+2;j=a[d+k>>0]<<8|j&255}while(0);d=j&65535;if(a[h>>0]|0){b[g>>1]=d;l=(d&65535)>>>8;l=l&255;m=e+1|0;a[m>>0]=l;m=j&255;a[e>>0]=m;i=f;return}a[h>>0]=1;b[g>>1]=d;l=(d&65535)>>>8;l=l&255;m=e+1|0;a[m>>0]=l;m=j&255;a[e>>0]=m;i=f;return}function af(a){a=a|0;return}function bf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function cf(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function df(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==3472)a=a+12|0;else a=0;return a|0}function ef(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function ff(a){a=a|0;var b=0;b=i;c[a>>2]=3640;pe(a+156|0);pe(a+124|0);oe(a+8|0);i=b;return}function gf(a){a=a|0;var b=0;b=i;c[a>>2]=3640;pe(a+156|0);pe(a+124|0);oe(a+8|0);Uq(a);i=b;return}function hf(a){a=a|0;return 1}function jf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;h=c[b+4>>2]|0;if(!(a[b+169>>0]|0))ge(b+88|0);g=b+170|0;f=b+171|0;if(a[f>>0]|0){j=a[g>>0]|0;h=(he(b+88|0,h,c[b+124>>2]|0)|0)+j|0;b=c[b+112>>2]|0;if((h|0)<0)b=h+b|0;else b=h-(h>>>0>>0?0:b)|0;b=b&255;if(a[f>>0]|0){h=g;j=b;a[h>>0]=j;a[d>>0]=j;i=e;return}}else{j=c[h>>2]|0;h=j+8|0;b=c[h>>2]|0;c[h>>2]=b+1;b=a[(c[j>>2]|0)+b>>0]|0}a[f>>0]=1;h=g;j=b;a[h>>0]=j;a[d>>0]=j;i=e;return}function kf(a){a=a|0;return}function lf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function mf(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function nf(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==4080)a=a+12|0;else a=0;return a|0}function of(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function pf(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;m=c[b+8>>2]|0;g=c[b+12>>2]|0;if((m|0)!=(g|0)){k=0;do{j=c[m>>2]|0;l=c[m+4>>2]|0;h=(l|0)==0;if(!h){n=l+4|0;c[n>>2]=(c[n>>2]|0)+1}kd[c[(c[j>>2]|0)+16>>2]&63](j,e+k|0);k=(md[c[(c[j>>2]|0)+8>>2]&127](j)|0)+k|0;if((!h?(j=l+4|0,n=c[j>>2]|0,c[j>>2]=n+ -1,(n|0)==0):0)?(jd[c[(c[l>>2]|0)+8>>2]&255](l),j=l+8|0,n=c[j>>2]|0,c[j>>2]=n+ -1,(n|0)==0):0)jd[c[(c[l>>2]|0)+16>>2]&255](l);m=m+8|0}while((m|0)!=(g|0))}g=b+20|0;if(!(a[g>>0]|0)){i=f;return}a[g>>0]=0;n=c[b+4>>2]|0;m=c[n>>2]|0;k=m+8|0;j=c[k>>2]|0;c[k>>2]=j+1;j=d[(c[m>>2]|0)+j>>0]<<24;m=c[n>>2]|0;k=m+8|0;l=c[k>>2]|0;c[k>>2]=l+1;j=d[(c[m>>2]|0)+l>>0]<<16|j;l=c[n>>2]|0;m=l+8|0;k=c[m>>2]|0;c[m>>2]=k+1;k=j|d[(c[l>>2]|0)+k>>0]<<8;l=c[n>>2]|0;j=l+8|0;m=c[j>>2]|0;c[j>>2]=m+1;c[n+4>>2]=k|d[(c[l>>2]|0)+m>>0];i=f;return}function qf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;c[a>>2]=4248;e=a+8|0;d=c[e>>2]|0;if(!d){i=b;return}a=a+12|0;g=c[a>>2]|0;if((g|0)!=(d|0)){while(1){f=g+ -8|0;c[a>>2]=f;g=c[g+ -4>>2]|0;if(g){h=g+4|0;f=c[h>>2]|0;c[h>>2]=f+ -1;if((f|0)==0?(jd[c[(c[g>>2]|0)+8>>2]&255](g),f=g+8|0,h=c[f>>2]|0,c[f>>2]=h+ -1,(h|0)==0):0)jd[c[(c[g>>2]|0)+16>>2]&255](g);f=c[a>>2]|0}if((f|0)==(d|0))break;else g=f}d=c[e>>2]|0}Uq(d);i=b;return}function rf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;c[a>>2]=4248;e=a+8|0;d=c[e>>2]|0;if(!d){Uq(a);i=b;return}f=a+12|0;h=c[f>>2]|0;if((h|0)!=(d|0)){while(1){g=h+ -8|0;c[f>>2]=g;h=c[h+ -4>>2]|0;if(h){j=h+4|0;g=c[j>>2]|0;c[j>>2]=g+ -1;if((g|0)==0?(jd[c[(c[h>>2]|0)+8>>2]&255](h),g=h+8|0,j=c[g>>2]|0,c[g>>2]=j+ -1,(j|0)==0):0)jd[c[(c[h>>2]|0)+16>>2]&255](h);g=c[f>>2]|0}if((g|0)==(d|0))break;else h=g}d=c[e>>2]|0}Uq(d);Uq(a);i=b;return}function sf(a){a=a|0;return}function tf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function uf(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function vf(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==4632)a=a+12|0;else a=0;return a|0}function wf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function xf(a){a=a|0;return}function yf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function zf(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(a)Uq(a);i=b;return}function Af(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==4928)a=a+12|0;else a=0;return a|0}function Bf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Cf(a){a=a|0;return}function Df(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ef(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(a)Uq(a);i=b;return}function Ff(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==5144)a=a+12|0;else a=0;return a|0}function Gf(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Hf(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function If(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function Jf(a){a=a|0;var b=0;b=i;pe(a+4768|0);pe(a+4736|0);pe(a+4688|0);pe(a+4656|0);pe(a+4608|0);pe(a+4576|0);pe(a+4528|0);pe(a+4496|0);pe(a+4448|0);pe(a+4416|0);oe(a+4300|0);oe(a+4220|0);oe(a+4140|0);oe(a+4060|0);oe(a+3980|0);Kf(a);i=b;return}function Kf(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=c[a+896>>2]|0;if(d){e=c[d+8>>2]|0;if(e)Uq(c[e+ -4>>2]|0);e=c[d+12>>2]|0;if(e)Uq(c[e+ -4>>2]|0);e=c[d+16>>2]|0;if(e)Uq(c[e+ -4>>2]|0);Uq(d)}d=c[a+900>>2]|0;if(!d)d=0;else{e=c[d+8>>2]|0;if(e)Uq(c[e+ -4>>2]|0);e=c[d+12>>2]|0;if(e)Uq(c[e+ -4>>2]|0);e=c[d+16>>2]|0;if(e)Uq(c[e+ -4>>2]|0);Uq(d);d=0}do{e=c[a+(d<<2)+904>>2]|0;if(e){f=c[e+8>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+12>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+16>>2]|0;if(f)Uq(c[f+ -4>>2]|0);Uq(e)}e=c[a+(d<<2)+1928>>2]|0;if(e){f=c[e+8>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+12>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+16>>2]|0;if(f)Uq(c[f+ -4>>2]|0);Uq(e)}e=c[a+(d<<2)+2952>>2]|0;if(e){f=c[e+8>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+12>>2]|0;if(f)Uq(c[f+ -4>>2]|0);f=c[e+16>>2]|0;if(f)Uq(c[f+ -4>>2]|0);Uq(e)}d=d+1|0}while((d|0)!=256);d=c[a+860>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+864>>2]|0;if(d)Uq(c[d+ -4>>2]|0);a=c[a+868>>2]|0;if(!a){i=b;return}Uq(c[a+ -4>>2]|0);i=b;return}function Lf(a){a=a|0;var b=0,d=0;b=i;d=c[a+56>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+60>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+64>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+12>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+16>>2]|0;if(d)Uq(c[d+ -4>>2]|0);a=c[a+20>>2]|0;if(!a){i=b;return}Uq(c[a+ -4>>2]|0);i=b;return}function Mf(a){a=a|0;var b=0,d=0;b=i;d=c[a+280>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+284>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+288>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+236>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+240>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+244>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+192>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+196>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+200>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+148>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+152>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+156>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+104>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+108>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+112>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+60>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+64>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+68>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+16>>2]|0;if(d)Uq(c[d+ -4>>2]|0);d=c[a+20>>2]|0;if(d)Uq(c[d+ -4>>2]|0);a=c[a+24>>2]|0;if(!a){i=b;return}Uq(c[a+ -4>>2]|0);i=b;return}function Nf(b){b=b|0;var c=0,d=0;c=i;d=b+8|0;a[b+0>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;a[b+4>>0]=0;a[b+5>>0]=0;a[b+6>>0]=0;me(d,128);me(b+52|0,256);me(b+96|0,256);me(b+140|0,256);me(b+184|0,256);me(b+228|0,256);me(b+272|0,256);i=c;return}function Of(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;a[b>>0]=0;me(b+4|0,516);e=b+48|0;c[e>>2]=6;a[b+52>>0]=0;c[b+80>>2]=5;c[b+64>>2]=0;c[b+88>>2]=0;c[b+84>>2]=0;g=Tq(92)|0;f=g+68&-64;c[f+ -4>>2]=g;c[b+56>>2]=f;f=Tq(92)|0;g=f+68&-64;c[g+ -4>>2]=f;c[b+60>>2]=g;c[b+68>>2]=0;f=b+72|0;c[f>>2]=6;h=0;do{c[g+(h<<2)>>2]=1;h=h+1|0}while(h>>>0<(c[e>>2]|0)>>>0);ke(e);e=((c[e>>2]|0)+6|0)>>>1;c[f>>2]=e;c[b+76>>2]=e;e=b+92|0;b=e+72|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(b|0));i=d;return}function Pf(d){d=d|0;var e=0,f=0,g=0;e=i;f=d+52|0;g=d+72|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+76|0;f=d+96|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+100|0;g=d+120|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+124|0;f=d+144|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+148|0;g=d+168|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+172|0;f=d+192|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+196|0;g=d+216|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+220|0;f=d+240|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+244|0;g=d+264|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+268|0;f=d+288|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+292|0;g=d+312|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+316|0;f=d+336|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+340|0;g=d+360|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+364|0;f=d+384|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+388|0;g=d+408|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+412|0;f=d+432|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+436|0;g=d+456|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+460|0;f=d+480|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+484|0;g=d+504|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+508|0;f=d+528|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+532|0;g=d+552|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+556|0;f=d+576|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+580|0;g=d+600|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+604|0;f=d+624|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+628|0;g=d+648|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+652|0;f=d+672|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+676|0;g=d+696|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+700|0;f=d+720|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+724|0;g=d+744|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+748|0;f=d+768|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;f=d+772|0;g=d+792|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;a[g>>0]=1;g=d+796|0;f=d+816|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;a[f>>0]=1;me(d+852|0,64);a[d+3976>>0]=0;f=d+20|0;g=f+32|0;do{b[f>>1]=0;f=f+2|0}while((f|0)<(g|0));f=Tq(44)|0;a:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(44)|0;if(f)break a}g=Wb(4)|0;c[g>>2]=27280;Zc(g|0,27328,220)}while(0);me(f,256);c[d+896>>2]=f;f=Tq(44)|0;b:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(44)|0;if(f)break b}g=Wb(4)|0;c[g>>2]=27280;Zc(g|0,27328,220)}while(0);me(f,256);c[d+900>>2]=f;f=d+820|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;f=0;c:while(1){g=Tq(44)|0;if(!g)do{g=c[6860]|0;c[6860]=g+0;if(!g){f=20;break c}qd[g&3]();g=Tq(44)|0}while((g|0)==0);me(g,256);c[d+(f<<2)+904>>2]=g;g=Tq(44)|0;if(!g)do{g=c[6860]|0;c[6860]=g+0;if(!g){f=27;break c}qd[g&3]();g=Tq(44)|0}while((g|0)==0);me(g,256);c[d+(f<<2)+1928>>2]=g;g=Tq(44)|0;if(!g)do{g=c[6860]|0;c[6860]=g+0;if(!g){f=34;break c}qd[g&3]();g=Tq(44)|0}while((g|0)==0);me(g,256);c[d+(f<<2)+2952>>2]=g;f=f+1|0;if((f|0)>=256){f=38;break}}if((f|0)==20){g=Wb(4)|0;c[g>>2]=27280;Zc(g|0,27328,220)}else if((f|0)==27){g=Wb(4)|0;c[g>>2]=27280;Zc(g|0,27328,220)}else if((f|0)==34){g=Wb(4)|0;c[g>>2]=27280;Zc(g|0,27328,220)}else if((f|0)==38){c[d+3984>>2]=16;c[d+3988>>2]=4;c[d+3992>>2]=8;c[d+3996>>2]=0;c[d+4016>>2]=0;c[d+4020>>2]=0;c[d+4024>>2]=0;c[d+4040>>2]=1;c[d+4044>>2]=2;c[d+4036>>2]=4096;c[d+4032>>2]=4;c[d+4028>>2]=4;c[d+4048>>2]=0;c[d+4052>>2]=0;c[d+4056>>2]=0;c[d+4e3>>2]=16;c[d+4004>>2]=65536;c[d+4008>>2]=-32768;c[d+4012>>2]=32767;c[d+3980>>2]=0;c[d+4064>>2]=16;c[d+4068>>2]=1;c[d+4072>>2]=8;c[d+4076>>2]=0;c[d+4096>>2]=0;c[d+4100>>2]=0;c[d+4104>>2]=0;c[d+4120>>2]=1;c[d+4124>>2]=2;c[d+4116>>2]=4096;c[d+4112>>2]=4;c[d+4108>>2]=4;c[d+4128>>2]=0;c[d+4132>>2]=0;c[d+4136>>2]=0;c[d+4080>>2]=16;c[d+4084>>2]=65536;c[d+4088>>2]=-32768;c[d+4092>>2]=32767;c[d+4060>>2]=0;c[d+4144>>2]=32;c[d+4148>>2]=2;c[d+4152>>2]=8;c[d+4156>>2]=0;c[d+4176>>2]=0;c[d+4180>>2]=0;c[d+4184>>2]=0;c[d+4200>>2]=1;c[d+4204>>2]=2;c[d+4196>>2]=4096;c[d+4192>>2]=4;c[d+4188>>2]=4;c[d+4208>>2]=0;c[d+4212>>2]=0;c[d+4216>>2]=0;c[d+4160>>2]=32;c[d+4164>>2]=0;c[d+4168>>2]=-2147483648;c[d+4172>>2]=2147483647;c[d+4140>>2]=0;c[d+4224>>2]=32;c[d+4228>>2]=22;c[d+4232>>2]=8;c[d+4236>>2]=0;c[d+4256>>2]=0;c[d+4260>>2]=0;c[d+4264>>2]=0;c[d+4280>>2]=1;c[d+4284>>2]=2;c[d+4276>>2]=4096;c[d+4272>>2]=4;c[d+4268>>2]=4;c[d+4288>>2]=0;c[d+4292>>2]=0;c[d+4296>>2]=0;c[d+4240>>2]=32;c[d+4244>>2]=0;c[d+4248>>2]=-2147483648;c[d+4252>>2]=2147483647;c[d+4220>>2]=0;c[d+4304>>2]=32;c[d+4308>>2]=20;c[d+4312>>2]=8;c[d+4316>>2]=0;c[d+4336>>2]=0;c[d+4340>>2]=0;c[d+4344>>2]=0;c[d+4360>>2]=1;c[d+4364>>2]=2;c[d+4356>>2]=4096;c[d+4352>>2]=4;c[d+4348>>2]=4;c[d+4368>>2]=0;c[d+4372>>2]=0;c[d+4376>>2]=0;c[d+4320>>2]=32;c[d+4324>>2]=0;c[d+4328>>2]=-2147483648;c[d+4332>>2]=2147483647;c[d+4300>>2]=0;c[d+4384>>2]=16;c[d+4388>>2]=4;c[d+4392>>2]=8;c[d+4396>>2]=0;c[d+4416>>2]=0;c[d+4420>>2]=0;c[d+4424>>2]=0;c[d+4440>>2]=1;c[d+4444>>2]=2;c[d+4436>>2]=4096;c[d+4432>>2]=4;c[d+4428>>2]=4;c[d+4448>>2]=0;c[d+4452>>2]=0;c[d+4456>>2]=0;c[d+4400>>2]=16;c[d+4404>>2]=65536;c[d+4408>>2]=-32768;c[d+4412>>2]=32767;c[d+4380>>2]=0;c[d+4464>>2]=16;c[d+4468>>2]=1;c[d+4472>>2]=8;c[d+4476>>2]=0;c[d+4496>>2]=0;c[d+4500>>2]=0;c[d+4504>>2]=0;c[d+4520>>2]=1;c[d+4524>>2]=2;c[d+4516>>2]=4096;c[d+4512>>2]=4;c[d+4508>>2]=4;c[d+4528>>2]=0;c[d+4532>>2]=0;c[d+4536>>2]=0;c[d+4480>>2]=16;c[d+4484>>2]=65536;c[d+4488>>2]=-32768;c[d+4492>>2]=32767;c[d+4460>>2]=0;c[d+4544>>2]=32;c[d+4548>>2]=2;c[d+4552>>2]=8;c[d+4556>>2]=0;c[d+4576>>2]=0;c[d+4580>>2]=0;c[d+4584>>2]=0;c[d+4600>>2]=1;c[d+4604>>2]=2;c[d+4596>>2]=4096;c[d+4592>>2]=4;c[d+4588>>2]=4;c[d+4608>>2]=0;c[d+4612>>2]=0;c[d+4616>>2]=0;c[d+4560>>2]=32;c[d+4564>>2]=0;c[d+4568>>2]=-2147483648;c[d+4572>>2]=2147483647;c[d+4540>>2]=0;c[d+4624>>2]=32;c[d+4628>>2]=22;c[d+4632>>2]=8;c[d+4636>>2]=0;c[d+4656>>2]=0;c[d+4660>>2]=0;c[d+4664>>2]=0;c[d+4680>>2]=1;c[d+4684>>2]=2;c[d+4676>>2]=4096;c[d+4672>>2]=4;c[d+4668>>2]=4;c[d+4688>>2]=0;c[d+4692>>2]=0;c[d+4696>>2]=0;c[d+4640>>2]=32;c[d+4644>>2]=0;c[d+4648>>2]=-2147483648;c[d+4652>>2]=2147483647;c[d+4620>>2]=0;c[d+4704>>2]=32;c[d+4708>>2]=20;c[d+4712>>2]=8;c[d+4716>>2]=0;c[d+4736>>2]=0;c[d+4740>>2]=0;c[d+4744>>2]=0;c[d+4760>>2]=1;c[d+4764>>2]=2;c[d+4756>>2]=4096;c[d+4752>>2]=4;c[d+4748>>2]=4;c[d+4768>>2]=0;c[d+4772>>2]=0;c[d+4776>>2]=0;c[d+4720>>2]=32;c[d+4724>>2]=0;c[d+4728>>2]=-2147483648;c[d+4732>>2]=2147483647;c[d+4700>>2]=0;a[d+4780>>0]=0;a[d+4781>>0]=0;i=e;return}}function Qf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e;f=c[b+8>>2]|0;b=c[b+4>>2]|0;Tf(h,f,b);g=c[h>>2]|0;a[d+3>>0]=g>>>24;a[d+2>>0]=g>>>16;a[d+1>>0]=g>>>8;a[d>>0]=g;g=c[h+4>>2]|0;a[d+7>>0]=g>>>24;a[d+6>>0]=g>>>16;a[d+5>>0]=g>>>8;a[d+4>>0]=g;g=c[h+8>>2]|0;a[d+11>>0]=g>>>24;a[d+10>>0]=g>>>16;a[d+9>>0]=g>>>8;a[d+8>>0]=g;g=c[h+12>>2]|0;a[d+13>>0]=(g&65535)>>>8;a[d+12>>0]=g;a[d+14>>0]=g>>>16;a[d+15>>0]=g>>>24;h=c[h+16>>2]|0;a[d+16>>0]=h;a[d+17>>0]=(h&65535)>>>8;a[d+19>>0]=h>>>24;a[d+18>>0]=h>>>16;h=Uf(f+4784|0,b)|0;g=H;a[d+23>>0]=h>>>24;a[d+22>>0]=h>>>16;a[d+21>>0]=h>>>8;a[d+20>>0]=h;j=lr(h|0,g|0,56)|0;a[d+27>>0]=j;j=lr(h|0,g|0,48)|0;a[d+26>>0]=j;h=lr(h|0,g|0,40)|0;a[d+25>>0]=h;a[d+24>>0]=g;Vf(f+5112|0,b,d+28|0);i=e;return}function Rf(a){a=a|0;var b=0;b=i;c[a>>2]=5368;a=c[a+8>>2]|0;if(!a){i=b;return}Mf(a+5112|0);pe(a+5096|0);pe(a+5064|0);oe(a+4948|0);Lf(a+4784|0);Jf(a);Uq(a);i=b;return}function Sf(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=5368;d=c[a+8>>2]|0;if(!d){Uq(a);i=b;return}Mf(d+5112|0);pe(d+5096|0);pe(d+5064|0);oe(d+4948|0);Lf(d+4784|0);Jf(d);Uq(d);Uq(a);i=b;return}function Tf(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=i;i=i+32|0;k=j;l=g+4781|0;if(!(a[l>>0]|0)){ge(g+4380|0);ge(g+4460|0);ge(g+4540|0);ge(g+4620|0);ge(g+4700|0);a[l>>0]=1}l=g+3976|0;if(!(a[l>>0]|0)){a[l>>0]=1;Zf(c[h>>2]|0,k,20);r=d[k+1>>0]<<8|d[k>>0]|d[k+2>>0]<<16|d[k+3>>0]<<24;o=d[k+5>>0]<<8|d[k+4>>0]|d[k+6>>0]<<16|d[k+7>>0]<<24;p=d[k+9>>0]<<8|d[k+8>>0]|d[k+10>>0]<<16|d[k+11>>0]<<24;q=(a[k+13>>0]<<8|d[k+12>>0])&65535;s=a[k+14>>0]|0;t=a[k+15>>0]|0;u=a[k+16>>0]|0;h=a[k+17>>0]|0;v=(a[k+19>>0]<<8|d[k+18>>0])&65535;a[g>>0]=r;a[g+1>>0]=r>>8;a[g+2>>0]=r>>16;a[g+3>>0]=r>>24;r=g+4|0;a[r>>0]=o;a[r+1>>0]=o>>8;a[r+2>>0]=o>>16;a[r+3>>0]=o>>24;r=g+8|0;a[r>>0]=p;a[r+1>>0]=p>>8;a[r+2>>0]=p>>16;a[r+3>>0]=p>>24;r=g+12|0;a[r>>0]=q;a[r+1>>0]=q>>8;a[g+14>>0]=s;a[g+15>>0]=t;a[g+16>>0]=u;a[g+17>>0]=h;h=g+18|0;a[h>>0]=v;a[h+1>>0]=v>>8;f=f+0|0;h=g+0|0;g=f+20|0;do{a[f>>0]=a[h>>0]|0;f=f+1|0;h=h+1|0}while((f|0)<(g|0));i=j;return}m=_f(h,g+852|0)|0;if(m){o=g+14|0;k=a[o>>0]|0;if(m&32){k=(_f(h,c[g+((((k&255)>>>7&255)<<7|k&7|((k&255)>>>6&255)<<6&64|((k&255)>>>3&255)<<3&56)<<2)+904>>2]|0)|0)&255;a[o>>0]=k}l=k&7;k=(k&255)>>>3&7;n=d[5768+(k<<3)+l>>0]|0;l=d[5832+(k<<3)+l>>0]|0;if(!(m&16)){u=b[g+(n<<1)+20>>1]|0;v=g+12|0;a[v>>0]=u;a[v+1>>0]=u>>8}else{p=g+(n<<1)+20|0;q=e[p>>1]|0;q=($f(g+4380|0,h,(c[g+4416>>2]|0)+((n>>>0<3?n:3)*44|0)|0)|0)+q|0;r=c[g+4404>>2]|0;if((q|0)<0)q=q+r|0;else q=q-(q>>>0>>0?0:r)|0;v=q&65535;u=g+12|0;a[u>>0]=v;a[u+1>>0]=v>>8;b[p>>1]=v}if(m&8){v=g+15|0;a[v>>0]=_f(h,c[g+(d[v>>0]<<2)+1928>>2]|0)|0}if(m&4){p=_f(h,c[g+(((d[o>>0]|0)>>>6&1)<<2)+896>>2]|0)|0;o=g+16|0;p=(a[o>>0]|0)+p|0;if((p|0)<0)p=p+256|0;else p=(p|0)>255?p+ -256|0:p;a[o>>0]=p}if(m&2){v=g+17|0;a[v>>0]=_f(h,c[g+(d[v>>0]<<2)+2952>>2]|0)|0}if(m&1){m=g+18|0;p=(d[m>>0]|d[m+1>>0]<<8)&65535;p=($f(g+4460|0,h,c[g+4496>>2]|0)|0)+p|0;o=c[g+4484>>2]|0;if((p|0)<0)o=p+o|0;else o=p-(p>>>0>>0?0:o)|0;v=o&65535;a[m>>0]=v;a[m+1>>0]=v>>8}}else{k=a[g+14>>0]|0;n=k&7;k=(k&255)>>>3&7;l=d[5832+(k<<3)+n>>0]|0;n=d[5768+(k<<3)+n>>0]|0}q=g+(n*24|0)+52|0;o=g+(n*24|0)+60|0;p=c[o>>2]|0;m=g+4540|0;k=(k|0)==1&1;p=($f(m,h,(c[g+4576>>2]|0)+(k*44|0)|0)|0)+p|0;r=c[g+4564>>2]|0;if((p|0)<0)p=p+r|0;else p=p-(p>>>0>>0?0:r)|0;r=(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24)+p|0;a[g>>0]=r;a[g+1>>0]=r>>8;a[g+2>>0]=r>>16;a[g+3>>0]=r>>24;r=g+(n*24|0)+72|0;s=c[o>>2]|0;do if(!(a[r>>0]|0)){u=g+(n*24|0)+56|0;t=c[u>>2]|0;if((s|0)>=(p|0)){if((t|0)<(p|0)){c[q>>2]=t;c[u>>2]=p}else c[q>>2]=p;a[r>>0]=1;break}c[q>>2]=t;c[u>>2]=s;t=g+(n*24|0)+68|0;q=c[t>>2]|0;s=g+(n*24|0)+64|0;r=c[s>>2]|0;if((q|0)<(p|0)){c[o>>2]=r;c[s>>2]=q;c[t>>2]=p;break}if((r|0)<(p|0)){c[o>>2]=r;c[s>>2]=p;break}else{c[o>>2]=p;break}}else{t=g+(n*24|0)+64|0;u=c[t>>2]|0;if((p|0)>=(s|0)){o=g+(n*24|0)+68|0;if((p|0)<(u|0)){c[o>>2]=u;c[t>>2]=p}else c[o>>2]=p;a[r>>0]=0;break}c[g+(n*24|0)+68>>2]=u;c[t>>2]=s;s=c[q>>2]|0;t=g+(n*24|0)+56|0;r=c[t>>2]|0;if((p|0)<(s|0)){c[o>>2]=r;c[t>>2]=s;c[q>>2]=p;break}if((p|0)<(r|0)){c[o>>2]=r;c[t>>2]=p;break}else{c[o>>2]=p;break}}while(0);r=g+(n*24|0)+436|0;p=g+(n*24|0)+444|0;q=c[p>>2]|0;s=c[m>>2]|0;o=g+4620|0;q=($f(o,h,(c[g+4656>>2]|0)+(((s>>>0<20?s&-2:20)|k)*44|0)|0)|0)+q|0;s=c[g+4644>>2]|0;if((q|0)<0)q=q+s|0;else q=q-(q>>>0>>0?0:s)|0;s=g+4|0;t=(d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24)+q|0;a[s>>0]=t;a[s+1>>0]=t>>8;a[s+2>>0]=t>>16;a[s+3>>0]=t>>24;s=g+(n*24|0)+456|0;t=c[p>>2]|0;do if(!(a[s>>0]|0)){u=g+(n*24|0)+440|0;v=c[u>>2]|0;if((t|0)>=(q|0)){if((v|0)<(q|0)){c[r>>2]=v;c[u>>2]=q}else c[r>>2]=q;a[s>>0]=1;break}c[r>>2]=v;c[u>>2]=t;s=g+(n*24|0)+452|0;r=c[s>>2]|0;n=g+(n*24|0)+448|0;t=c[n>>2]|0;if((r|0)<(q|0)){c[p>>2]=t;c[n>>2]=r;c[s>>2]=q;break}if((t|0)<(q|0)){c[p>>2]=t;c[n>>2]=q;break}else{c[p>>2]=q;break}}else{u=g+(n*24|0)+448|0;v=c[u>>2]|0;if((q|0)>=(t|0)){n=g+(n*24|0)+452|0;if((q|0)<(v|0)){c[n>>2]=v;c[u>>2]=q}else c[n>>2]=q;a[s>>0]=0;break}c[g+(n*24|0)+452>>2]=v;c[u>>2]=t;s=c[r>>2]|0;n=g+(n*24|0)+440|0;t=c[n>>2]|0;if((q|0)<(s|0)){c[p>>2]=t;c[n>>2]=s;c[r>>2]=q;break}if((q|0)<(t|0)){c[p>>2]=t;c[n>>2]=q;break}else{c[p>>2]=q;break}}while(0);m=(c[o>>2]|0)+(c[m>>2]|0)|0;l=g+(l<<2)+820|0;n=c[l>>2]|0;if(m>>>0<36)m=m>>>1&2147483646;else m=18;k=($f(g+4700|0,h,(c[g+4736>>2]|0)+((m|k)*44|0)|0)|0)+n|0;h=c[g+4724>>2]|0;if((k|0)<0)h=k+h|0;else h=k-(k>>>0>>0?0:h)|0;v=g+8|0;a[v>>0]=h;a[v+1>>0]=h>>8;a[v+2>>0]=h>>16;a[v+3>>0]=h>>24;c[l>>2]=h;f=f+0|0;h=g+0|0;g=f+20|0;do{a[f>>0]=a[h>>0]|0;f=f+1|0;h=h+1|0}while((f|0)<(g|0));i=j;return}function Uf(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+16|0;g=f;h=b+325|0;if(!(a[h>>0]|0)){ge(b+244|0);a[h>>0]=1}if(!(a[b>>0]|0)){a[b>>0]=1;Zf(c[e>>2]|0,g,8);n=d[g+1>>0]<<8|d[g>>0]|d[g+2>>0]<<16|d[g+3>>0]<<24;m=d[g+5>>0]<<8|d[g+4>>0]|d[g+6>>0]<<16|d[g+7>>0]<<24;l=b+100|0;k=l;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;l=l+4|0;a[l>>0]=m;a[l+1>>0]=m>>8;a[l+2>>0]=m>>16;a[l+3>>0]=m>>24;H=m;i=f;return n|0}g=b+92|0;do if(!(c[b+(c[g>>2]<<2)+132>>2]|0)){h=_f(e,b+48|0)|0;if((h|0)==2){h=b+96|0;c[h>>2]=(c[h>>2]|0)+1&3;j=b+(c[g>>2]<<3)+104|0;j=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;j=($f(b+244|0,e,(c[b+280>>2]|0)+352|0)|0)+j|0;k=c[b+268>>2]|0;if((j|0)<0)j=j+k|0;else j=j-(j>>>0>>0?0:k)|0;m=((j|0)<0)<<31>>31;k=b+(c[h>>2]<<3)+100|0;n=k;a[n>>0]=j;a[n+1>>0]=j>>8;a[n+2>>0]=j>>16;a[n+3>>0]=j>>24;k=k+4|0;a[k>>0]=m;a[k+1>>0]=m>>8;a[k+2>>0]=m>>16;a[k+3>>0]=m>>24;k=b+(c[h>>2]<<3)+100|0;m=k;m=d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24;j=k;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;k=k+4|0;a[k>>0]=m;a[k+1>>0]=m>>8;a[k+2>>0]=m>>16;a[k+3>>0]=m>>24;k=e+4|0;m=c[k>>2]|0;j=e+8|0;n=(c[j>>2]|0)>>>16;c[j>>2]=n;l=(m>>>0)/(n>>>0)|0;n=m-(da(n,l)|0)|0;c[k>>2]=n;do{n=(Wf(c[e>>2]|0)|0)&255|n<<8;c[k>>2]=n;m=c[j>>2]|0;o=m<<8;c[j>>2]=o}while(o>>>0<16777216);o=m>>>8&65535;c[j>>2]=o;m=(n>>>0)/(o>>>0)|0;n=n-(da(m,o)|0)|0;c[k>>2]=n;do{n=(Wf(c[e>>2]|0)|0)&255|n<<8;c[k>>2]=n;o=c[j>>2]<<8;c[j>>2]=o}while(o>>>0<16777216);o=b+(c[h>>2]<<3)+100|0;n=o;k=n;n=n+4|0;n=d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24;l=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|(m<<16|l&65535);m=o;a[m>>0]=l;a[m+1>>0]=l>>8;a[m+2>>0]=l>>16;a[m+3>>0]=l>>24;o=o+4|0;a[o>>0]=n;a[o+1>>0]=n>>8;a[o+2>>0]=n>>16;a[o+3>>0]=n>>24;o=c[h>>2]|0;c[g>>2]=o;c[b+(o<<2)+132>>2]=0;c[b+(c[g>>2]<<2)+148>>2]=0;break}else if((h|0)==1){e=$f(b+244|0,e,c[b+280>>2]|0)|0;h=c[b+268>>2]|0;if((e|0)<0)e=h+e|0;else e=e-(e>>>0>>0?0:h)|0;c[b+(c[g>>2]<<2)+132>>2]=e;o=c[g>>2]|0;l=c[b+(o<<2)+132>>2]|0;o=b+(o<<3)+100|0;n=o;m=n;n=n+4|0;l=kr(d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24|0,d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24|0,l|0,((l|0)<0)<<31>>31|0)|0;n=H;m=o;a[m>>0]=l;a[m+1>>0]=l>>8;a[m+2>>0]=l>>16;a[m+3>>0]=l>>24;o=o+4|0;a[o>>0]=n;a[o+1>>0]=n>>8;a[o+2>>0]=n>>16;a[o+3>>0]=n>>24;c[b+(c[g>>2]<<2)+148>>2]=0;break}else{if((h|0)<=2)break;c[g>>2]=h+2+(c[g>>2]|0)&3;Uf(b,e)|0;break}}else{h=_f(e,b+4|0)|0;if((h|0)==1){h=c[b+(c[g>>2]<<2)+132>>2]|0;e=($f(b+244|0,e,(c[b+280>>2]|0)+44|0)|0)+h|0;h=c[b+268>>2]|0;if((e|0)<0)e=e+h|0;else e=e-(e>>>0>>0?0:h)|0;o=b+(c[g>>2]<<3)+100|0;l=o;n=l;l=l+4|0;l=kr(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24|0,d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|0,e|0,((e|0)<0)<<31>>31|0)|0;n=H;m=o;a[m>>0]=l;a[m+1>>0]=l>>8;a[m+2>>0]=l>>16;a[m+3>>0]=l>>24;o=o+4|0;a[o>>0]=n;a[o+1>>0]=n>>8;a[o+2>>0]=n>>16;a[o+3>>0]=n>>24;c[b+(c[g>>2]<<2)+148>>2]=0;break}if((h|0)>=511){if((h|0)!=512){if((h|0)<=511)break;c[g>>2]=(c[g>>2]|0)+h&3;Uf(b,e)|0;break}h=b+96|0;c[h>>2]=(c[h>>2]|0)+1&3;k=b+(c[g>>2]<<3)+104|0;k=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;k=($f(b+244|0,e,(c[b+280>>2]|0)+352|0)|0)+k|0;j=c[b+268>>2]|0;if((k|0)<0)j=k+j|0;else j=k-(k>>>0>>0?0:j)|0;o=((j|0)<0)<<31>>31;k=b+(c[h>>2]<<3)+100|0;l=k;a[l>>0]=j;a[l+1>>0]=j>>8;a[l+2>>0]=j>>16;a[l+3>>0]=j>>24;k=k+4|0;a[k>>0]=o;a[k+1>>0]=o>>8;a[k+2>>0]=o>>16;a[k+3>>0]=o>>24;k=b+(c[h>>2]<<3)+100|0;o=k;o=d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24;l=k;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+3>>0]=0;k=k+4|0;a[k>>0]=o;a[k+1>>0]=o>>8;a[k+2>>0]=o>>16;a[k+3>>0]=o>>24;k=e+4|0;o=c[k>>2]|0;l=e+8|0;m=(c[l>>2]|0)>>>16;c[l>>2]=m;j=(o>>>0)/(m>>>0)|0;m=o-(da(m,j)|0)|0;c[k>>2]=m;do{m=(Wf(c[e>>2]|0)|0)&255|m<<8;c[k>>2]=m;n=c[l>>2]|0;o=n<<8;c[l>>2]=o}while(o>>>0<16777216);o=n>>>8&65535;c[l>>2]=o;n=(m>>>0)/(o>>>0)|0;m=m-(da(n,o)|0)|0;c[k>>2]=m;do{m=(Wf(c[e>>2]|0)|0)&255|m<<8;c[k>>2]=m;o=c[l>>2]<<8;c[l>>2]=o}while(o>>>0<16777216);o=b+(c[h>>2]<<3)+100|0;m=o;l=m;m=m+4|0;m=d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24;l=d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|(n<<16|j&65535);n=o;a[n>>0]=l;a[n+1>>0]=l>>8;a[n+2>>0]=l>>16;a[n+3>>0]=l>>24;o=o+4|0;a[o>>0]=m;a[o+1>>0]=m>>8;a[o+2>>0]=m>>16;a[o+3>>0]=m>>24;o=c[h>>2]|0;c[g>>2]=o;c[b+(o<<2)+132>>2]=0;c[b+(c[g>>2]<<2)+148>>2]=0;break}do if(!h){e=$f(b+244|0,e,(c[b+280>>2]|0)+308|0)|0;h=c[b+268>>2]|0;if((e|0)<0)e=h+e|0;else e=e-(e>>>0>>0?0:h)|0;h=b+(c[g>>2]<<2)+148|0;c[h>>2]=(c[h>>2]|0)+1;h=c[g>>2]|0;if((c[b+(h<<2)+148>>2]|0)>3){c[b+(h<<2)+132>>2]=e;c[b+(c[g>>2]<<2)+148>>2]=0}}else{if((h|0)<500){l=b+244|0;j=da(c[b+(c[g>>2]<<2)+132>>2]|0,h)|0;k=c[b+280>>2]|0;if((h|0)<10){h=($f(l,e,k+88|0)|0)+j|0;e=c[b+268>>2]|0;if((h|0)<0){e=h+e|0;break}else{e=h-(h>>>0>>0?0:e)|0;break}}else{h=($f(l,e,k+132|0)|0)+j|0;e=c[b+268>>2]|0;if((h|0)<0){e=h+e|0;break}else{e=h-(h>>>0>>0?0:e)|0;break}}}if((h|0)==500){h=(c[b+(c[g>>2]<<2)+132>>2]|0)*500|0;h=($f(b+244|0,e,(c[b+280>>2]|0)+176|0)|0)+h|0;e=c[b+268>>2]|0;if((h|0)<0)e=h+e|0;else e=h-(h>>>0>>0?0:e)|0;h=b+(c[g>>2]<<2)+148|0;c[h>>2]=(c[h>>2]|0)+1;h=c[g>>2]|0;if((c[b+(h<<2)+148>>2]|0)<=3)break;c[b+(h<<2)+132>>2]=e;c[b+(c[g>>2]<<2)+148>>2]=0;break}h=500-h|0;k=b+244|0;j=c[b+(c[g>>2]<<2)+132>>2]|0;if((h|0)>-10){h=da(j,h)|0;h=($f(k,e,(c[b+280>>2]|0)+220|0)|0)+h|0;e=c[b+268>>2]|0;if((h|0)<0){e=h+e|0;break}else{e=h-(h>>>0>>0?0:e)|0;break}}h=da(j,-10)|0;e=($f(k,e,(c[b+280>>2]|0)+264|0)|0)+h|0;h=c[b+268>>2]|0;if((e|0)<0)h=e+h|0;else h=e-(e>>>0>>0?0:h)|0;e=b+(c[g>>2]<<2)+148|0;c[e>>2]=(c[e>>2]|0)+1;e=c[g>>2]|0;if((c[b+(e<<2)+148>>2]|0)>3){c[b+(e<<2)+132>>2]=h;c[b+(c[g>>2]<<2)+148>>2]=0;e=h}else e=h}while(0);o=b+(c[g>>2]<<3)+100|0;l=o;n=l;l=l+4|0;l=kr(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24|0,d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|0,e|0,((e|0)<0)<<31>>31|0)|0;n=H;m=o;a[m>>0]=l;a[m+1>>0]=l>>8;a[m+2>>0]=l>>16;a[m+3>>0]=l>>24;o=o+4|0;a[o>>0]=n;a[o+1>>0]=n>>8;a[o+2>>0]=n>>16;a[o+3>>0]=n>>24}while(0);n=b+(c[g>>2]<<3)+100|0;o=n;n=n+4|0;n=d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24;o=d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24;H=n;i=f;return o|0}function Vf(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;g=i;i=i+16|0;h=g;if(!(a[b>>0]|0)){a[b>>0]=1;Zf(c[e>>2]|0,h,6);u=a[h+1>>0]<<8|d[h>>0];j=u&65535;l=a[h+2>>0]|0;k=(a[h+3>>0]<<8|l&255)&65535;n=a[h+4>>0]|0;m=(a[h+5>>0]<<8|n&255)&65535;h=b+1|0;a[h>>0]=j;a[h+1>>0]=j>>8;h=b+3|0;a[h>>0]=k;a[h+1>>0]=k>>8;h=b+5|0;a[h>>0]=m;a[h+1>>0]=m>>8;h=u;m=(m&65535)>>>8&255}else{l=_f(e,b+8|0)|0;if(!(l&1)){m=b+1|0;m=d[m>>0]|d[m+1>>0]<<8;h=m&255}else{h=(_f(e,b+52|0)|0)&255;m=b+1|0;m=d[m>>0]|d[m+1>>0]<<8;h=(m&255)+h|0;h=(h|0)>255?h+65280|0:h}if(!(l&2))h=m&65280|h&65535;else{u=(_f(e,b+96|0)|0)&255;m=b+1|0;m=d[m>>0]|d[m+1>>0]<<8;u=((m&65535)>>>8)+u|0;h=((u|0)>255?u+65280|0:u)<<8|h&65535}j=h&65535;do if(!(l&64)){k=b+1|0;l=b+5|0;n=j;m=j}else{k=b+1|0;m=(h&255)-(m&255)|0;do if(l&4){p=_f(e,b+140|0)|0;n=p&255;o=b+3|0;o=d[o>>0]|d[o+1>>0]<<8;q=o&65535;r=(q&255)+m|0;s=(r|0)<1;if((r+ -1|0)>>>0>253)t=s?0:255;else t=q+m&255;if((t+n|0)>255){if(!s)if((r|0)>254)n=255;else n=q+m&255;else n=0;n=(p|-256)+n|0;break}else{if(!s)if((r|0)>254)p=255;else p=q+m&255;else p=0;n=p+n|0;break}}else{o=b+3|0;o=d[o>>0]|d[o+1>>0]<<8;n=o&255}while(0);do if(l&16){p=_f(e,b+228|0)|0;o=b+3|0;o=d[o>>0]|d[o+1>>0]<<8;r=((n&255)+m-(o&255)|0)/2|0;m=p&255;t=b+5|0;t=(d[t>>0]|d[t+1>>0]<<8)&65535;u=(t&255)+r|0;s=(u|0)<1;if((u+ -1|0)>>>0>253)q=s?0:255;else q=t+r&255;if((q+m|0)>255){if(!s)if((u|0)>254)m=255;else m=t+r&255;else m=0;m=(p|-256)+m|0;p=o;break}else{if(!s)if((u|0)>254)p=255;else p=t+r&255;else p=0;m=p+m|0;p=o;break}}else{m=b+5|0;m=(d[m>>0]|d[m+1>>0]<<8)&255;p=o}while(0);o=(h>>>8&255)-(((d[k>>0]|d[k+1>>0]<<8)&65535)>>>8)|0;if(!(l&8))r=p&65280|n&65535;else{p=_f(e,b+184|0)|0;q=p&255;t=b+3|0;t=(((d[t>>0]|d[t+1>>0]<<8)&65535)>>>8)+o|0;r=(t|0)<1;if(r)s=0;else s=(t|0)>254?255:t&255;if((s+q|0)>255){if(r)q=0;else q=(t|0)>254?255:t&255;p=(p|-256)+q|0}else{if(r)p=0;else p=(t|0)>254?255:t&255;p=p+q|0}r=p<<8|n&65535}n=r&65535;if(!(l&32)){u=b+5|0;l=u;m=((d[u>>0]|d[u+1>>0]<<8)&65280|m)&65535;break}q=_f(e,b+272|0)|0;u=b+3|0;p=q&255;l=b+5|0;r=(((d[l>>0]|d[l+1>>0]<<8)&65535)>>>8)+(((r>>>8&255)+o-(((d[u>>0]|d[u+1>>0]<<8)&65535)>>>8)|0)/2|0)|0;o=(r|0)<1;if(o)s=0;else s=(r|0)>254?255:r&255;if((s+p|0)>255){if(o)o=0;else o=(r|0)>254?255:r&255;o=(q|-256)+o|0}else{if(o)o=0;else o=(r|0)>254?255:r&255;o=o+p|0}m=(o<<8|m)&65535}while(0);a[k>>0]=j;a[k+1>>0]=j>>8;k=b+3|0;a[k>>0]=n;a[k+1>>0]=n>>8;a[l>>0]=m;a[l+1>>0]=m>>8;k=n;l=n&255;n=m&255;m=(m&65535)>>>8&255}a[f+1>>0]=(j&65535)>>>8;a[f>>0]=h;a[f+3>>0]=(k&65535)>>>8;a[f+2>>0]=l;a[f+5>>0]=m;a[f+4>>0]=n;f=b+316|0;if(!(a[f>>0]|0)){i=g;return}u=((Wf(c[e>>2]|0)|0)&255)<<24;u=((Wf(c[e>>2]|0)|0)&255)<<16|u;u=u|((Wf(c[e>>2]|0)|0)&255)<<8;c[e+4>>2]=u|(Wf(c[e>>2]|0)|0)&255;a[f>>0]=0;i=g;return}function Wf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;d=b+4|0;g=c[d>>2]|0;e=b+8|0;if((g|0)<(c[e>>2]|0)){h=g;g=h+1|0;c[d>>2]=g;g=b+12|0;g=c[g>>2]|0;h=g+h|0;h=a[h>>0]|0;i=f;return h|0}c[d>>2]=0;g=c[b>>2]|0;h=g+13|0;if(!(a[h>>0]|0)){j=g+4|0;m=g+8|0;k=c[m>>2]|0;l=(c[j>>2]|0)-k|0;l=(l|0)<1048576?l:1048576;pr(c[b+12>>2]|0,(c[g>>2]|0)+k|0,l|0)|0;k=(c[m>>2]|0)+l|0;c[m>>2]=k;c[g+16>>2]=l;if((k|0)>=(c[j>>2]|0))a[h>>0]=1}else a[g+12>>0]=1;m=c[(c[b>>2]|0)+16>>2]|0;c[e>>2]=m;if(m){m=c[d>>2]|0;l=m+1|0;c[d>>2]=l;l=b+12|0;l=c[l>>2]|0;m=l+m|0;m=a[m>>0]|0;i=f;return m|0}b=Wb(8)|0;c[b>>2]=27520;d=b+4|0;e=Tq(32)|0;a:do if(!e){while(1){e=c[6860]|0;c[6860]=e+0;if(!e)break;qd[e&3]();e=Tq(32)|0;if(e)break a}m=Wb(4)|0;c[m>>2]=27280;Zc(m|0,27328,220)}while(0);c[e>>2]=19;c[e+4>>2]=19;c[e+8>>2]=0;f=e+12|0;h=f+0|0;g=5720;e=h+20|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(e|0));c[d>>2]=f;c[b>>2]=5752;Zc(b|0,5704,55);return 0}function Xf(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function Yf(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function Zf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;h=b+4|0;k=c[h>>2]|0;j=b+8|0;do if((k|0)<(c[j>>2]|0))j=k;else{c[h>>2]=0;k=c[b>>2]|0;l=k+13|0;if(!(a[l>>0]|0)){m=k+4|0;p=k+8|0;n=c[p>>2]|0;o=(c[m>>2]|0)-n|0;o=(o|0)<1048576?o:1048576;pr(c[b+12>>2]|0,(c[k>>2]|0)+n|0,o|0)|0;n=(c[p>>2]|0)+o|0;c[p>>2]=n;c[k+16>>2]=o;if((n|0)>=(c[m>>2]|0))a[l>>0]=1}else a[k+12>>0]=1;p=c[(c[b>>2]|0)+16>>2]|0;c[j>>2]=p;if(p){j=c[h>>2]|0;break}e=Wb(8)|0;c[e>>2]=27520;g=e+4|0;h=Tq(32)|0;if(h){c[h>>2]=19;d=h+4|0;c[d>>2]=19;d=h+8|0;c[d>>2]=0;h=h+12|0;d=h+0|0;b=5720;f=d+20|0;do{a[d>>0]=a[b>>0]|0;d=d+1|0;b=b+1|0}while((d|0)<(f|0));c[g>>2]=h;c[e>>2]=5752;Zc(e|0,5704,55)}while(1){h=c[6860]|0;c[6860]=h+0;if(!h)break;qd[h&3]();h=Tq(32)|0;if(h){f=14;break}}if((f|0)==14){c[h>>2]=19;d=h+4|0;c[d>>2]=19;d=h+8|0;c[d>>2]=0;h=h+12|0;d=h+0|0;b=5720;f=d+20|0;do{a[d>>0]=a[b>>0]|0;d=d+1|0;b=b+1|0}while((d|0)<(f|0));c[g>>2]=h;c[e>>2]=5752;Zc(e|0,5704,55)}p=Wb(4)|0;c[p>>2]=27280;Zc(p|0,27328,220)}while(0);b=c[b+12>>2]|0;f=b+(j+e)|0;if(!e){p=j;p=p+e|0;c[h>>2]=p;i=g;return}b=b+j|0;while(1){a[d>>0]=a[b>>0]|0;b=b+1|0;if((b|0)==(f|0))break;else d=d+1|0}p=c[h>>2]|0;p=p+e|0;c[h>>2]=p;i=g;return}function _f(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;d=a+8|0;f=c[d>>2]|0;h=c[b+16>>2]|0;if(h){j=c[a+4>>2]|0;g=f>>>15;c[d>>2]=g;l=(j>>>0)/(g>>>0)|0;m=l>>>(c[b+40>>2]|0);k=c[h+(m<<2)>>2]|0;m=(c[h+(m+1<<2)>>2]|0)+1|0;n=k+1|0;h=c[b+8>>2]|0;if(m>>>0>n>>>0){do{n=(m+k|0)>>>1;o=(c[h+(n<<2)>>2]|0)>>>0>l>>>0;k=o?k:n;m=o?n:m;n=k+1|0}while(m>>>0>n>>>0);l=n}else l=n;n=da(g,c[h+(k<<2)>>2]|0)|0;if((k|0)!=(c[b+32>>2]|0))f=da(c[h+(l<<2)>>2]|0,g)|0}else{h=f>>>15;c[d>>2]=h;l=c[b>>2]|0;g=c[b+8>>2]|0;j=c[a+4>>2]|0;m=l>>>1;k=0;n=0;do{p=da(c[g+(m<<2)>>2]|0,h)|0;o=p>>>0>j>>>0;f=o?p:f;n=o?n:p;k=o?k:m;l=o?m:l;m=(k+l|0)>>>1}while((m|0)!=(k|0))}g=a+4|0;h=j-n|0;c[g>>2]=h;p=f-n|0;c[d>>2]=p;if(p>>>0<16777216)do{h=(Wf(c[a>>2]|0)|0)&255|h<<8;c[g>>2]=h;p=c[d>>2]<<8;c[d>>2]=p}while(p>>>0<16777216);o=(c[b+12>>2]|0)+(k<<2)|0;c[o>>2]=(c[o>>2]|0)+1;o=b+28|0;p=(c[o>>2]|0)+ -1|0;c[o>>2]=p;if(p){i=e;return k|0}ke(b);i=e;return k|0}function $f(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;f=_f(b,d)|0;c[a>>2]=f;if(f){if(f>>>0>=32){l=c[a+28>>2]|0;i=e;return l|0}d=c[a+12>>2]|0;if(f>>>0>d>>>0){d=f-d|0;l=_f(b,(c[a+68>>2]|0)+((f+ -1|0)*44|0)|0)|0;d=l<>2]|0)+((f+ -1|0)*44|0)|0)|0;a=c[a>>2]|0;if((d|0)<(1<>2]|0;j=da(l>>>13,c[f>>2]|0)|0;g=b+4|0;k=c[g>>2]|0;m=k>>>0>=j>>>0;d=m&1;if(m){c[g>>2]=k-j;j=l-j|0;c[h>>2]=j}else{c[h>>2]=j;j=a+60|0;c[j>>2]=(c[j>>2]|0)+1;j=c[h>>2]|0}if(j>>>0<16777216){j=c[g>>2]|0;do{j=(Wf(c[b>>2]|0)|0)&255|j<<8;c[g>>2]=j;m=c[h>>2]<<8;c[h>>2]=m}while(m>>>0<16777216)}h=a+52|0;m=(c[h>>2]|0)+ -1|0;c[h>>2]=m;if(m){m=d;i=e;return m|0}b=a+48|0;g=c[b>>2]|0;j=a+64|0;k=(c[j>>2]|0)+g|0;c[j>>2]=k;if(k>>>0>8192){k=(k+1|0)>>>1;c[j>>2]=k;m=a+60|0;a=((c[m>>2]|0)+1|0)>>>1;c[m>>2]=a;if((a|0)==(k|0)){m=k+1|0;c[j>>2]=m;j=m}else{j=k;k=a}}else{j=k;k=c[a+60>>2]|0}c[f>>2]=(da(2147483648/(j>>>0)|0,k)|0)>>>18;m=g*5|0;m=m>>>0>259?64:m>>>2;c[b>>2]=m;c[h>>2]=m;m=d;i=e;return m|0}function ag(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;f=i;d=a+4|0;g=c[d>>2]|0;e=a+8|0;h=c[e>>2]|0;if(b>>>0>19){j=h>>>16;c[e>>2]=j;h=(g>>>0)/(j>>>0)|0;g=g-(da(h,j)|0)|0;c[d>>2]=g;do{g=(Wf(c[a>>2]|0)|0)&255|g<<8;c[d>>2]=g;j=c[e>>2]<<8;c[e>>2]=j}while(j>>>0<16777216);j=(ag(a,b+ -16|0)|0)<<16|h&65535;i=f;return j|0}j=h>>>b;c[e>>2]=j;b=(g>>>0)/(j>>>0)|0;g=g-(da(b,j)|0)|0;c[d>>2]=g;if(j>>>0>=16777216){i=f;return b|0}do{g=(Wf(c[a>>2]|0)|0)&255|g<<8;c[d>>2]=g;j=c[e>>2]<<8;c[e>>2]=j}while(j>>>0<16777216);i=f;return b|0}function bg(a){a=a|0;return}function cg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function dg(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function eg(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==6304)a=a+12|0;else a=0;return a|0}function fg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function gg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;g=e;f=c[b+8>>2]|0;b=c[b+4>>2]|0;Tf(g,f,b);h=c[g>>2]|0;a[d+3>>0]=h>>>24;a[d+2>>0]=h>>>16;a[d+1>>0]=h>>>8;a[d>>0]=h;h=c[g+4>>2]|0;a[d+7>>0]=h>>>24;a[d+6>>0]=h>>>16;a[d+5>>0]=h>>>8;a[d+4>>0]=h;h=c[g+8>>2]|0;a[d+11>>0]=h>>>24;a[d+10>>0]=h>>>16;a[d+9>>0]=h>>>8;a[d+8>>0]=h;h=c[g+12>>2]|0;a[d+13>>0]=(h&65535)>>>8;a[d+12>>0]=h;a[d+14>>0]=h>>>16;a[d+15>>0]=h>>>24;g=c[g+16>>2]|0;a[d+16>>0]=g;a[d+17>>0]=(g&65535)>>>8;a[d+19>>0]=g>>>24;a[d+18>>0]=g>>>16;Vf(f+4784|0,b,d+20|0);i=e;return}function hg(a){a=a|0;var b=0;b=i;c[a>>2]=6616;a=c[a+8>>2]|0;if(!a){i=b;return}Mf(a+4784|0);Jf(a);Uq(a);i=b;return}function ig(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=6616;d=c[a+8>>2]|0;if(!d){Uq(a);i=b;return}Mf(d+4784|0);Jf(d);Uq(d);Uq(a);i=b;return}function jg(a){a=a|0;return}function kg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function lg(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function mg(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==7272)a=a+12|0;else a=0;return a|0}function ng(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function og(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e;f=c[b+8>>2]|0;b=c[b+4>>2]|0;Tf(h,f,b);g=c[h>>2]|0;a[d+3>>0]=g>>>24;a[d+2>>0]=g>>>16;a[d+1>>0]=g>>>8;a[d>>0]=g;g=c[h+4>>2]|0;a[d+7>>0]=g>>>24;a[d+6>>0]=g>>>16;a[d+5>>0]=g>>>8;a[d+4>>0]=g;g=c[h+8>>2]|0;a[d+11>>0]=g>>>24;a[d+10>>0]=g>>>16;a[d+9>>0]=g>>>8;a[d+8>>0]=g;g=c[h+12>>2]|0;a[d+13>>0]=(g&65535)>>>8;a[d+12>>0]=g;a[d+14>>0]=g>>>16;a[d+15>>0]=g>>>24;h=c[h+16>>2]|0;a[d+16>>0]=h;a[d+17>>0]=(h&65535)>>>8;a[d+19>>0]=h>>>24;a[d+18>>0]=h>>>16;h=Uf(f+4784|0,b)|0;g=H;a[d+23>>0]=h>>>24;a[d+22>>0]=h>>>16;a[d+21>>0]=h>>>8;a[d+20>>0]=h;j=lr(h|0,g|0,56)|0;a[d+27>>0]=j;j=lr(h|0,g|0,48)|0;a[d+26>>0]=j;h=lr(h|0,g|0,40)|0;a[d+25>>0]=h;a[d+24>>0]=g;d=f+5112|0;if(!(a[d>>0]|0)){i=e;return}j=((Wf(c[b>>2]|0)|0)&255)<<24;j=((Wf(c[b>>2]|0)|0)&255)<<16|j;j=j|((Wf(c[b>>2]|0)|0)&255)<<8;c[b+4>>2]=j|(Wf(c[b>>2]|0)|0)&255;a[d>>0]=0;i=e;return}function pg(a){a=a|0;var b=0;b=i;c[a>>2]=7560;a=c[a+8>>2]|0;if(!a){i=b;return}pe(a+5096|0);pe(a+5064|0);oe(a+4948|0);Lf(a+4784|0);Jf(a);Uq(a);i=b;return}function qg(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=7560;d=c[a+8>>2]|0;if(!d){Uq(a);i=b;return}pe(d+5096|0);pe(d+5064|0);oe(d+4948|0);Lf(d+4784|0);Jf(d);Uq(d);Uq(a);i=b;return}function rg(a){a=a|0;return}function sg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function tg(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function ug(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==8216)a=a+12|0;else a=0;return a|0}function vg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function wg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;g=e;f=c[b+8>>2]|0;b=c[b+4>>2]|0;Tf(g,f,b);h=c[g>>2]|0;a[d+3>>0]=h>>>24;a[d+2>>0]=h>>>16;a[d+1>>0]=h>>>8;a[d>>0]=h;h=c[g+4>>2]|0;a[d+7>>0]=h>>>24;a[d+6>>0]=h>>>16;a[d+5>>0]=h>>>8;a[d+4>>0]=h;h=c[g+8>>2]|0;a[d+11>>0]=h>>>24;a[d+10>>0]=h>>>16;a[d+9>>0]=h>>>8;a[d+8>>0]=h;h=c[g+12>>2]|0;a[d+13>>0]=(h&65535)>>>8;a[d+12>>0]=h;a[d+14>>0]=h>>>16;a[d+15>>0]=h>>>24;g=c[g+16>>2]|0;a[d+16>>0]=g;a[d+17>>0]=(g&65535)>>>8;a[d+19>>0]=g>>>24;a[d+18>>0]=g>>>16;d=f+4784|0;if(!(a[d>>0]|0)){i=e;return}h=((Wf(c[b>>2]|0)|0)&255)<<24;h=((Wf(c[b>>2]|0)|0)&255)<<16|h;h=h|((Wf(c[b>>2]|0)|0)&255)<<8;c[b+4>>2]=h|(Wf(c[b>>2]|0)|0)&255;a[d>>0]=0;i=e;return}function xg(a){a=a|0;var b=0;b=i;c[a>>2]=8504;a=c[a+8>>2]|0;if(!a){i=b;return}Jf(a);Uq(a);i=b;return}function yg(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=8504;d=c[a+8>>2]|0;if(!d){Uq(a);i=b;return}Jf(d);Uq(d);Uq(a);i=b;return}function zg(a){a=a|0;return}function Ag(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Bg(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}jd[c[(c[a>>2]|0)+8>>2]&255](a);i=b;return}function Cg(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==9112)a=a+12|0;else a=0;return a|0}function Dg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Eg(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;c[b>>2]=9396;c[b+64>>2]=9436;c[b+8>>2]=9416;e=b+12|0;c[e>>2]=9584;if(a[b+44>>0]&1)Uq(c[b+52>>2]|0);c[e>>2]=16248;e=c[b+16>>2]|0;g=e+4|0;f=c[g>>2]|0;c[g>>2]=f+ -1;if(f){g=b+64|0;_i(g);i=d;return}jd[c[(c[e>>2]|0)+8>>2]&255](e);g=b+64|0;_i(g);i=d;return}function Fg(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;f=b+ -8|0;c[f>>2]=9396;b=f+64|0;c[b>>2]=9436;c[f+8>>2]=9416;e=f+12|0;c[e>>2]=9584;if(a[f+44>>0]&1)Uq(c[f+52>>2]|0);c[e>>2]=16248;e=c[f+16>>2]|0;g=e+4|0;f=c[g>>2]|0;c[g>>2]=f+ -1;if(f){_i(b);i=d;return}jd[c[(c[e>>2]|0)+8>>2]&255](e);_i(b);i=d;return}function Gg(b){b=b|0;var d=0,e=0,f=0,g=0;e=i;g=c[(c[b>>2]|0)+ -12>>2]|0;c[b+g>>2]=9396;d=b+(g+64)|0;c[d>>2]=9436;c[b+(g+8)>>2]=9416;f=b+(g+12)|0;c[f>>2]=9584;if(a[b+(g+44)>>0]&1)Uq(c[b+(g+52)>>2]|0);c[f>>2]=16248;b=c[b+(g+16)>>2]|0;f=b+4|0;g=c[f>>2]|0;c[f>>2]=g+ -1;if(g){_i(d);i=e;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);_i(d);i=e;return}function Hg(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;c[b>>2]=9396;c[b+64>>2]=9436;c[b+8>>2]=9416;e=b+12|0;c[e>>2]=9584;if(a[b+44>>0]&1)Uq(c[b+52>>2]|0);c[e>>2]=16248;e=c[b+16>>2]|0;g=e+4|0;f=c[g>>2]|0;c[g>>2]=f+ -1;if(f){g=b+64|0;_i(g);Uq(b);i=d;return}jd[c[(c[e>>2]|0)+8>>2]&255](e);g=b+64|0;_i(g);Uq(b);i=d;return}function Ig(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;e=b+ -8|0;c[e>>2]=9396;b=e+64|0;c[b>>2]=9436;c[e+8>>2]=9416;f=e+12|0;c[f>>2]=9584;if(a[e+44>>0]&1)Uq(c[e+52>>2]|0);c[f>>2]=16248;f=c[e+16>>2]|0;h=f+4|0;g=c[h>>2]|0;c[h>>2]=g+ -1;if(g){_i(b);Uq(e);i=d;return}jd[c[(c[f>>2]|0)+8>>2]&255](f);_i(b);Uq(e);i=d;return}function Jg(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=i;h=c[(c[b>>2]|0)+ -12>>2]|0;e=b+h|0;c[e>>2]=9396;d=b+(h+64)|0;c[d>>2]=9436;c[b+(h+8)>>2]=9416;g=b+(h+12)|0;c[g>>2]=9584;if(a[b+(h+44)>>0]&1)Uq(c[b+(h+52)>>2]|0);c[g>>2]=16248;b=c[b+(h+16)>>2]|0;g=b+4|0;h=c[g>>2]|0;c[g>>2]=h+ -1;if(h){_i(d);Uq(e);i=f;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);_i(d);Uq(e);i=f;return}function Kg(b){b=b|0;var d=0,e=0,f=0;d=i;c[b>>2]=9584;if(a[b+32>>0]&1)Uq(c[b+40>>2]|0);c[b>>2]=16248;b=c[b+4>>2]|0;f=b+4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if(e){i=d;return}jd[c[(c[b>>2]|0)+8>>2]&255](b);i=d;return}function Lg(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;c[b>>2]=9584;if(a[b+32>>0]&1)Uq(c[b+40>>2]|0);c[b>>2]=16248;e=c[b+4>>2]|0;g=e+4|0;f=c[g>>2]|0;c[g>>2]=f+ -1;if(f){Uq(b);i=d;return}jd[c[(c[e>>2]|0)+8>>2]&255](e);Uq(b);i=d;return}function Mg(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;l=i;o=d+44|0;m=c[o>>2]|0;k=d+24|0;j=c[k>>2]|0;if(m>>>0>>0){c[o>>2]=j;m=j}o=h&24;do if(!o){o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}else if((o|0)!=24){if(!g){g=0;o=0;break}else if((g|0)==2){n=11;break}else if((g|0)!=1){n=15;break}if(!(h&8)){o=j-(c[d+20>>2]|0)|0;g=o;o=((o|0)<0)<<31>>31;break}else{o=(c[d+12>>2]|0)-(c[d+8>>2]|0)|0;g=o;o=((o|0)<0)<<31>>31;break}}else{if(!g){g=0;o=0;break}else if((g|0)==2){n=11;break}else if((g|0)!=1){n=15;break}o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}while(0);if((n|0)==15){o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}if((n|0)==11){n=d+32|0;if(!(a[n>>0]&1))n=n+1|0;else n=c[d+40>>2]|0;o=m-n|0;g=o;o=((o|0)<0)<<31>>31}f=kr(g|0,o|0,e|0,f|0)|0;e=H;if((e|0)>=0){n=d+32|0;if(!(a[n>>0]&1))n=n+1|0;else n=c[d+40>>2]|0;o=m-n|0;g=((o|0)<0)<<31>>31;if(!((g|0)<(e|0)|(g|0)==(e|0)&o>>>0>>0)){n=h&8;if(!((f|0)==0&(e|0)==0)){if((n|0)!=0?(c[d+12>>2]|0)==0:0){o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}if((h&16|0)!=0&(j|0)==0){o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}}if(n){c[d+12>>2]=(c[d+8>>2]|0)+f;c[d+16>>2]=m}if(h&16)c[k>>2]=(c[d+20>>2]|0)+f;o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=f;c[o+4>>2]=e;i=l;return}}o=b;c[o>>2]=0;c[o+4>>2]=0;o=b+8|0;c[o>>2]=-1;c[o+4>>2]=-1;i=l;return}function Ng(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;d=d+8|0;ud[c[(c[b>>2]|0)+16>>2]&31](a,b,c[d>>2]|0,c[d+4>>2]|0,0,e);i=f;return}function Og(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;f=a+44|0;g=c[f>>2]|0;e=c[a+24>>2]|0;if(g>>>0>>0)c[f>>2]=e;else e=g;if(!(c[a+48>>2]&8)){g=-1;i=b;return g|0}f=a+16|0;g=c[f>>2]|0;a=c[a+12>>2]|0;if(g>>>0>>0)c[f>>2]=e;else e=g;if(a>>>0>=e>>>0){g=-1;i=b;return g|0}g=d[a>>0]|0;i=b;return g|0}function Pg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;g=b+44|0;f=c[g>>2]|0;j=c[b+24>>2]|0;if(f>>>0>>0)c[g>>2]=j;else j=f;f=b+8|0;g=c[f>>2]|0;h=b+12|0;l=c[h>>2]|0;if(g>>>0>=l>>>0){l=-1;i=e;return l|0}if((d|0)==-1){c[f>>2]=g;c[h>>2]=l+ -1;c[b+16>>2]=j;l=0;i=e;return l|0}if(!(c[b+48>>2]&16)){k=d&255;l=l+ -1|0;if(k<<24>>24!=(a[l>>0]|0)){l=-1;i=e;return l|0}}else{k=d&255;l=l+ -1|0}c[f>>2]=g;c[h>>2]=l;c[b+16>>2]=j;a[l>>0]=k;l=d;i=e;return l|0}function Qg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=i;if((d|0)==-1){u=0;i=e;return u|0}h=b+12|0;f=b+8|0;g=(c[h>>2]|0)-(c[f>>2]|0)|0;j=b+24|0;o=c[j>>2]|0;k=b+28|0;n=c[k>>2]|0;if((o|0)==(n|0)){l=b+48|0;if(!(c[l>>2]&16)){u=-1;i=e;return u|0}m=b+20|0;q=c[m>>2]|0;p=o-q|0;n=b+44|0;o=(c[n>>2]|0)-q|0;q=b+32|0;r=a[q>>0]|0;t=(r&1)!=0;if(t){s=(c[q>>2]&-2)+ -1|0;r=c[b+36>>2]|0}else{s=10;r=(r&255)>>>1}if((r|0)==(s|0)){Pi(q,s,1,s,s,0);if(!(a[q>>0]&1))s=12;else s=13}else if(t)s=13;else s=12;if((s|0)==12){a[q>>0]=(r<<1)+2;u=q+1|0;t=r+1|0}else if((s|0)==13){u=c[b+40>>2]|0;t=r+1|0;c[b+36>>2]=t}a[u+r>>0]=0;a[u+t>>0]=0;if(!(a[q>>0]&1))r=10;else r=(c[q>>2]&-2)+ -1|0;Ki(q,r);r=a[q>>0]|0;if(!(r&1)){q=q+1|0;r=(r&255)>>>1}else{q=c[b+40>>2]|0;r=c[b+36>>2]|0}u=q+r|0;c[m>>2]=q;c[k>>2]=u;k=q+p|0;c[j>>2]=k;o=q+o|0;c[n>>2]=o;n=u}else{l=b+48|0;k=o;o=c[b+44>>2]|0}m=k+1|0;o=m>>>0>>0?o:m;c[b+44>>2]=o;if(c[l>>2]&8){l=b+32|0;if(!(a[l>>0]&1))l=l+1|0;else l=c[b+40>>2]|0;c[f>>2]=l;c[h>>2]=l+g;c[b+16>>2]=o}if((k|0)==(n|0)){u=vd[c[(c[b>>2]|0)+52>>2]&63](b,d&255)|0;i=e;return u|0}else{c[j>>2]=m;a[k>>0]=d;u=d&255;i=e;return u|0}return 0}function Rg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;i=i+16|0;f=h+8|0;g=h;a[f>>0]=0;c[f+4>>2]=b;j=c[(c[b>>2]|0)+ -12>>2]|0;if(!(c[b+(j+16)>>2]|0)){j=c[b+(j+72)>>2]|0;if(j)Fj(j);a[f>>0]=1;p=c[(c[b>>2]|0)+ -12>>2]|0;j=c[b+(p+24)>>2]|0;if((c[b+(p+4)>>2]&176|0)==32)l=d+e|0;else l=d;m=b+p|0;n=b+(p+76)|0;o=c[n>>2]|0;do if((o|0)==-1){p=c[b+(p+28)>>2]|0;o=p+4|0;c[o>>2]=(c[o>>2]|0)+1;r=Rn(19072)|0;q=c[p+8>>2]|0;if((c[p+12>>2]|0)-q>>2>>>0>r>>>0?(k=c[q+(r<<2)>>2]|0,(k|0)!=0):0){k=vd[c[(c[k>>2]|0)+28>>2]&63](k,32)|0;r=c[o>>2]|0;c[o>>2]=r+ -1;if(!r)jd[c[(c[p>>2]|0)+8>>2]&255](p);o=k<<24>>24;c[n>>2]=o;break}r=Wb(4)|0;c[r>>2]=27744;Zc(r|0,27816,228)}while(0);Sg(g,j,d,l,d+e|0,m,o&255);if(!(c[g>>2]|0)){r=c[(c[b>>2]|0)+ -12>>2]|0;Zi(b+r|0,c[b+(r+16)>>2]|5)}}Qj(f);i=h;return b|0}function Sg(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;k=i;i=i+16|0;l=k;if(!d){c[b>>2]=0;i=k;return}o=e;m=g-o|0;h=h+12|0;n=c[h>>2]|0;m=(n|0)>(m|0)?n-m|0:0;n=f;o=n-o|0;if((o|0)>0?(fd[c[(c[d>>2]|0)+48>>2]&31](d,e,o)|0)!=(o|0):0){c[b>>2]=0;i=k;return}do if((m|0)>0){if(m>>>0<11){a[l>>0]=m<<1;e=l;o=l+1|0}else{e=m+16&-16;o=(e|0)==0?1:e;p=Tq(o)|0;a:do if(!p){while(1){p=c[6860]|0;c[6860]=p+0;if(!p)break;qd[p&3]();p=Tq(o)|0;if(p){o=p;break a}}p=Wb(4)|0;c[p>>2]=27280;Zc(p|0,27328,220)}else o=p;while(0);c[l+8>>2]=o;c[l>>2]=e|1;c[l+4>>2]=m;e=l}qr(o|0,j|0,m|0)|0;a[o+m>>0]=0;if(!(a[e>>0]&1))j=l+1|0;else j=c[l+8>>2]|0;if((fd[c[(c[d>>2]|0)+48>>2]&31](d,j,m)|0)==(m|0)){if(!(a[e>>0]&1))break;Uq(c[l+8>>2]|0);break}c[b>>2]=0;if(!(a[e>>0]&1)){i=k;return}Uq(c[l+8>>2]|0);i=k;return}while(0);l=g-n|0;if((l|0)>0?(fd[c[(c[d>>2]|0)+48>>2]&31](d,f,l)|0)!=(l|0):0){c[b>>2]=0;i=k;return}c[h>>2]=0;c[b>>2]=d;i=k;return}function Tg(a){a=a|0;return}function Ug(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Vg(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(a)Uq(a);i=b;return}function Wg(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==9944)a=a+12|0;else a=0;return a|0}function Xg(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Yg(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function Zg(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function _g(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function $g(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function ah(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function bh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function ch(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function dh(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function eh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function fh(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function gh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function hh(a){a=a|0;return}function ih(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function jh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;d=c[a>>2]|0;if(!d){i=b;return}e=a+4|0;f=c[e>>2]|0;if((f|0)!=(d|0)){do{g=f+ -24|0;c[e>>2]=g;f=c[f+ -8>>2]|0;if((f|0)!=(g|0)){if(f)jd[c[(c[f>>2]|0)+20>>2]&255](f)}else jd[c[(c[f>>2]|0)+16>>2]&255](f);f=c[e>>2]|0}while((f|0)!=(d|0));d=c[a>>2]|0}Uq(d);i=b;return}function kh(a){a=a|0;return}function lh(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function mh(a){a=a|0;var b=0;a=i;b=Tq(8)|0;a:do if(!b){while(1){b=c[6860]|0;c[6860]=b+0;if(!b)break;qd[b&3]();b=Tq(8)|0;if(b)break a}b=Wb(4)|0;c[b>>2]=27280;Zc(b|0,27328,220)}while(0);c[b>>2]=11024;i=a;return b|0}function nh(a,b){a=a|0;b=b|0;if(b)c[b>>2]=11024;return}function oh(a){a=a|0;return}function ph(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function qh(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;b=i;h=e+104|0;g=d[h>>0]|0;f=g>>>7;e=g>>>6&1;if(!((f|0)!=1|(e|0)==0)){b=Wb(8)|0;c[b>>2]=27520;e=b+4|0;f=Tq(80)|0;a:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(80)|0;if(f)break a}j=Wb(4)|0;c[j>>2]=27280;Zc(j|0,27328,220)}while(0);c[f>>2]=67;c[f+4>>2]=67;c[f+8>>2]=0;j=f+12|0;h=j+0|0;g=11568|0;f=h+68|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(f|0));c[e>>2]=j;c[b>>2]=11648;Zc(b|0,11440,113)}if((f|0)!=(e|0)){a[h>>0]=g&63;i=b;return}b=Wb(8)|0;c[b>>2]=27520;e=b+4|0;f=Tq(51)|0;b:do if(!f){while(1){f=c[6860]|0;c[6860]=f+0;if(!f)break;qd[f&3]();f=Tq(51)|0;if(f)break b}j=Wb(4)|0;c[j>>2]=27280;Zc(j|0,27328,220)}while(0);c[f>>2]=38;c[f+4>>2]=38;c[f+8>>2]=0;j=f+12|0;h=j+0|0;g=11504|0;f=h+39|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(f|0));c[e>>2]=j;c[b>>2]=11552;Zc(b|0,11488,111)}function rh(a,b){a=a|0;b=b|0;return((c[b+4>>2]|0)==11296?a+4|0:0)|0}function sh(a){a=a|0;return 11392}function th(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function uh(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function vh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function wh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function xh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function yh(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;e=c[a+324>>2]|0;if(((e|0)!=0?(f=e+4|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),f=e+8|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);e=c[a+316>>2]|0;if(((e|0)!=0?(f=e+4|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)?(jd[c[(c[e>>2]|0)+8>>2]&255](e),f=e+8|0,g=c[f>>2]|0,c[f>>2]=g+ -1,(g|0)==0):0)jd[c[(c[e>>2]|0)+16>>2]&255](e);e=c[a+300>>2]|0;if(e){f=a+304|0;g=c[f>>2]|0;if((g|0)!=(e|0))c[f>>2]=g+(~(((g+ -12+(0-e)|0)>>>0)/12|0)*12|0);Uq(e)}g=c[a+288>>2]|0;if(g){f=a+292|0;e=c[f>>2]|0;if((e|0)!=(g|0))c[f>>2]=e+(~((e+ -8+(0-g)|0)>>>3)<<3);Uq(g)}e=a+281|0;e=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;if(!e){g=a+16|0;g=c[g>>2]|0;g=g+ -4|0;g=c[g>>2]|0;Uq(g);i=b;return}Uq(e);g=a+16|0;g=c[g>>2]|0;g=g+ -4|0;g=c[g>>2]|0;Uq(g);i=b;return}function zh(a){a=a|0;return}function Ah(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Bh(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(!a){i=b;return}yh(a);Uq(a);i=b;return}function Ch(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==11904)a=a+12|0;else a=0;return a|0}function Dh(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Eh(a){a=a|0;return}function Fh(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Gh(a){a=a|0;var b=0;b=i;a=c[a+12>>2]|0;if(a)Uq(a);i=b;return}function Hh(a,b){a=a|0;b=b|0;if((c[b+4>>2]|0)==12152)a=a+12|0;else a=0;return a|0}function Ih(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Jh(){var b=0,d=0,e=0;b=i;Pb(384,392,504,0,480,76,9360,0,9360,0,8,472,240);cb(384,1,464,456,77,1);d=Tq(8)|0;a:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break a}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=6;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(384,16,4,440,432,9,d|0,0);d=Tq(8)|0;b:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break b}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=53;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(384,24,3,416,408,7,d|0,0);d=Tq(8)|0;c:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break c}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=78;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(384,40,2,352,344,34,d|0,0);Pb(200,208,328,0,296,79,9360,0,9360,0,56,288,241);cb(200,1,280,272,80,2);d=Tq(8)|0;d:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break d}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=8;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(200,16,4,256,248,10,d|0,0);d=Tq(8)|0;e:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break e}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=54;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(200,72,3,232,224,9,d|0,0);d=Tq(8)|0;f:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break f}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=55;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(200,96,3,232,224,9,d|0,0);d=Tq(8)|0;g:do if(!d){while(1){d=c[6860]|0;c[6860]=d+0;if(!d)break;qd[d&3]();d=Tq(8)|0;if(d)break g}e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}while(0);a[d>>0]=56;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(200,112,3,232,224,9,d|0,0);d=Tq(8)|0;if(d){e=d;a[e>>0]=57;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;d=e+4|0;a[d>>0]=0;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;Hc(200,24,3,144,136,10,e|0,0);i=b;return}while(1){d=c[6860]|0;c[6860]=d+0;if(!d){e=32;break}qd[d&3]();d=Tq(8)|0;if(d){e=33;break}}if((e|0)==32){e=Wb(4)|0;c[e>>2]=27280;Zc(e|0,27328,220)}else if((e|0)==33){a[d>>0]=57;a[d+1>>0]=0;a[d+2>>0]=0;a[d+3>>0]=0;e=d+4|0;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;Hc(200,24,3,144,136,10,d|0,0);i=b;return}}function Kh(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[a+4>>2]|0;e=(mr(d|0)|0)+1|0;a=Tq(e)|0;if(!a){e=0;i=b;return e|0}nr(a|0,d|0,e|0)|0;e=a;i=b;return e|0}function Lh(){var a=0;a=i;zc(28224,12216);sb(28256,12224,1,1,0);Vb(28272,12232,1,-128,127);Vb(28304,12240,1,-128,127);Vb(28288,12256,1,0,255);Vb(28312,12272,2,-32768,32767);Vb(28320,12280,2,0,65535);Vb(28336,12296,4,-2147483648,2147483647);Vb(28352,12304,4,0,-1);Vb(28360,12320,4,-2147483648,2147483647);Vb(28376,12328,4,0,-1);Qc(28392,12344,4);Qc(28408,12352,8);Ta(13912,12360);Ta(13824,12376);Gc(13736,4,12416);mb(13616,12432);sc(13584,0,12448);sc(13544,0,12480);sc(13504,1,12520);sc(13464,2,12560);sc(13424,3,12592);sc(13384,4,12632);sc(13344,5,12664);sc(13304,4,12704);sc(13264,5,12736);sc(13544,0,12776);sc(13504,1,12808);sc(13464,2,12848);sc(13424,3,12888);sc(13384,4,12928);sc(13344,5,12968);sc(13224,6,13008);sc(13184,7,13040);sc(13144,7,13072);i=a;return}function Mh(a){a=a|0;a=i;Fj(14024);Fj(14200);Kj(14376);Kj(14552);i=a;return}function Nh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;c[b>>2]=16312;Qn(b+4|0);g=b+8|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[b>>2]=15008;c[b+32>>2]=d;g=c[b+4>>2]|0;j=g+4|0;c[j>>2]=(c[j>>2]|0)+1;d=Sn(g,19144)|0;h=c[j>>2]|0;c[j>>2]=h+ -1;if(!h)jd[c[(c[g>>2]|0)+8>>2]&255](g);c[b+36>>2]=d;c[b+40>>2]=e;a[b+44>>0]=(md[c[(c[d>>2]|0)+28>>2]&127](d)|0)&1;i=f;return} - - - -function Ml(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;n=i;i=i+48|0;x=n+36|0;w=n+16|0;r=n;y=n+28|0;z=n+32|0;t=n+40|0;A=n+12|0;B=n+24|0;u=n+20|0;v=n+8|0;s=n+4|0;c[k>>2]=0;C=c[j+28>>2]|0;p=C+4|0;c[p>>2]=(c[p>>2]|0)+1;p=Sn(C,19072)|0;E=C+4|0;D=c[E>>2]|0;c[E>>2]=D+ -1;if(!D)jd[c[(c[C>>2]|0)+8>>2]&255](C);a:do switch(m<<24>>24|0){case 89:{o=Nl(g,c[h>>2]|0,k,p,4)|0;if(!(c[k>>2]&4))c[l+20>>2]=o+ -1900;break};case 37:{l=c[h>>2]|0;h=c[g>>2]|0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0))if((md[c[(c[h>>2]|0)+36>>2]&127](h)|0)==-1){c[g>>2]=0;h=0;break}else{h=c[g>>2]|0;break}}else h=0;while(0);h=(h|0)==0;do if(l){if((c[l+12>>2]|0)==(c[l+16>>2]|0)?(md[c[(c[l>>2]|0)+36>>2]&127](l)|0)==-1:0){o=104;break}if(!h)o=105}else o=104;while(0);if((o|0)==104)if(h)o=105;else l=0;if((o|0)==105){c[k>>2]=c[k>>2]|6;break a}h=c[g>>2]|0;f=c[h+12>>2]|0;if((f|0)==(c[h+16>>2]|0))h=md[c[(c[h>>2]|0)+36>>2]&127](h)|0;else h=d[f>>0]|0;if((fd[c[(c[p>>2]|0)+36>>2]&31](p,h&255,0)|0)<<24>>24!=37){c[k>>2]=c[k>>2]|4;break a}f=c[g>>2]|0;p=f+12|0;h=c[p>>2]|0;if((h|0)==(c[f+16>>2]|0))md[c[(c[f>>2]|0)+40>>2]&127](f)|0;else c[p>>2]=h+1;p=c[g>>2]|0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0))if((md[c[(c[p>>2]|0)+36>>2]&127](p)|0)==-1){c[g>>2]=0;p=0;break}else{p=c[g>>2]|0;break}}else p=0;while(0);p=(p|0)==0;do if(l){if((c[l+12>>2]|0)==(c[l+16>>2]|0)?(md[c[(c[l>>2]|0)+36>>2]&127](l)|0)==-1:0){o=123;break}if(p)break a}else o=123;while(0);if((o|0)==123?!p:0)break a;c[k>>2]=c[k>>2]|2;break};case 109:{o=Nl(g,c[h>>2]|0,k,p,2)|0;p=c[k>>2]|0;if((p&4|0)==0&(o|0)<13){c[l+16>>2]=o+ -1;break a}else{c[k>>2]=p|4;break a}};case 72:{p=Nl(g,c[h>>2]|0,k,p,2)|0;o=c[k>>2]|0;if((o&4|0)==0&(p|0)<24){c[l+8>>2]=p;break a}else{c[k>>2]=o|4;break a}};case 70:{Al(z,f,c[g>>2]|0,c[h>>2]|0,j,k,l,18008,18016|0);c[g>>2]=c[z>>2];break};case 104:case 66:case 98:{Jl(f,l+16|0,g,c[h>>2]|0,k,p);break};case 77:{p=Nl(g,c[h>>2]|0,k,p,2)|0;o=c[k>>2]|0;if((o&4|0)==0&(p|0)<60){c[l+4>>2]=p;break a}else{c[k>>2]=o|4;break a}};case 99:{p=f+8|0;p=md[c[(c[p>>2]|0)+12>>2]&127](p)|0;q=a[p>>0]|0;if(!(q&1)){o=p+1|0;p=(q&255)>>>1}else{o=c[p+8>>2]|0;p=c[p+4>>2]|0}Al(r,f,c[g>>2]|0,c[h>>2]|0,j,k,l,o,o+p|0);c[g>>2]=c[r>>2];break};case 112:{o=l+8|0;h=c[h>>2]|0;l=f+8|0;l=md[c[(c[l>>2]|0)+8>>2]&127](l)|0;f=a[l>>0]|0;if(!(f&1))f=(f&255)>>>1;else f=c[l+4>>2]|0;j=a[l+12>>0]|0;if(!(j&1))j=(j&255)>>>1;else j=c[l+16>>2]|0;if((f|0)==(0-j|0)){c[k>>2]=c[k>>2]|4;break a}E=qk(g,h,l,l+24|0,p,k,0)|0;k=E-l|0;if((E|0)==(l|0)?(c[o>>2]|0)==12:0){c[o>>2]=0;break a}if((k|0)==12?(q=c[o>>2]|0,(q|0)<12):0)c[o>>2]=q+12;break};case 116:case 110:{l=p+8|0;p=c[h>>2]|0;b:while(1){h=c[g>>2]|0;do if(h){if((c[h+12>>2]|0)==(c[h+16>>2]|0))if((md[c[(c[h>>2]|0)+36>>2]&127](h)|0)==-1){c[g>>2]=0;h=0;break}else{h=c[g>>2]|0;break}}else h=0;while(0);h=(h|0)==0;do if(p){if((c[p+12>>2]|0)!=(c[p+16>>2]|0))if(h)break;else break b;if((md[c[(c[p>>2]|0)+36>>2]&127](p)|0)!=-1){if(!h)break b}else o=43}else o=43;while(0);if((o|0)==43){o=0;if(h){p=0;break}else p=0}f=c[g>>2]|0;h=c[f+12>>2]|0;if((h|0)==(c[f+16>>2]|0))h=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else h=d[h>>0]|0;if((h&255)<<24>>24<=-1)break;if(!(b[(c[l>>2]|0)+(h<<24>>24<<1)>>1]&8192))break;f=c[g>>2]|0;j=f+12|0;h=c[j>>2]|0;if((h|0)==(c[f+16>>2]|0)){md[c[(c[f>>2]|0)+40>>2]&127](f)|0;continue}else{c[j>>2]=h+1;continue}}l=c[g>>2]|0;do if(l){if((c[l+12>>2]|0)==(c[l+16>>2]|0))if((md[c[(c[l>>2]|0)+36>>2]&127](l)|0)==-1){c[g>>2]=0;l=0;break}else{l=c[g>>2]|0;break}}else l=0;while(0);l=(l|0)==0;do if(p){if((c[p+12>>2]|0)==(c[p+16>>2]|0)?(md[c[(c[p>>2]|0)+36>>2]&127](p)|0)==-1:0){o=62;break}if(l)break a}else o=62;while(0);if((o|0)==62?!l:0)break a;c[k>>2]=c[k>>2]|2;break};case 83:{o=Nl(g,c[h>>2]|0,k,p,2)|0;p=c[k>>2]|0;if((p&4|0)==0&(o|0)<61){c[l>>2]=o;break a}else{c[k>>2]=p|4;break a}};case 121:{Ll(l+20|0,g,c[h>>2]|0,k,p);break};case 65:case 97:{Hl(f,l+24|0,g,c[h>>2]|0,k,p);break};case 101:case 100:{o=l+12|0;p=Nl(g,c[h>>2]|0,k,p,2)|0;l=c[k>>2]|0;if((l&4|0)==0?(p+ -1|0)>>>0<31:0){c[o>>2]=p;break a}c[k>>2]=l|4;break};case 114:{Al(t,f,c[g>>2]|0,c[h>>2]|0,j,k,l,18016,18027|0);c[g>>2]=c[t>>2];break};case 120:{E=c[(c[f>>2]|0)+20>>2]|0;c[u>>2]=c[g>>2];c[v>>2]=c[h>>2];c[w+0>>2]=c[u+0>>2];c[x+0>>2]=c[v+0>>2];gd[E&63](e,f,w,x,j,k,l);i=n;return};case 106:{o=Nl(g,c[h>>2]|0,k,p,3)|0;p=c[k>>2]|0;if((p&4|0)==0&(o|0)<366){c[l+28>>2]=o;break a}else{c[k>>2]=p|4;break a}};case 68:{Al(y,f,c[g>>2]|0,c[h>>2]|0,j,k,l,18e3,18008|0);c[g>>2]=c[y>>2];break};case 88:{q=f+8|0;q=md[c[(c[q>>2]|0)+24>>2]&127](q)|0;p=a[q>>0]|0;if(!(p&1)){o=q+1|0;p=(p&255)>>>1}else{o=c[q+8>>2]|0;p=c[q+4>>2]|0}Al(s,f,c[g>>2]|0,c[h>>2]|0,j,k,l,o,o+p|0);c[g>>2]=c[s>>2];break};case 82:{Al(A,f,c[g>>2]|0,c[h>>2]|0,j,k,l,18032,18037|0);c[g>>2]=c[A>>2];break};case 119:{o=Nl(g,c[h>>2]|0,k,p,1)|0;p=c[k>>2]|0;if((p&4|0)==0&(o|0)<7){c[l+24>>2]=o;break a}else{c[k>>2]=p|4;break a}};case 84:{Al(B,f,c[g>>2]|0,c[h>>2]|0,j,k,l,18040,18048|0);c[g>>2]=c[B>>2];break};case 73:{o=l+8|0;l=Nl(g,c[h>>2]|0,k,p,2)|0;p=c[k>>2]|0;if((p&4|0)==0?(l+ -1|0)>>>0<12:0){c[o>>2]=l;break a}c[k>>2]=p|4;break};default:c[k>>2]=c[k>>2]|4}while(0);c[e>>2]=c[g>>2];i=n;return}function Nl(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;l=c[a>>2]|0;do if(l){if((c[l+12>>2]|0)==(c[l+16>>2]|0))if((md[c[(c[l>>2]|0)+36>>2]&127](l)|0)==-1){c[a>>2]=0;l=0;break}else{l=c[a>>2]|0;break}}else l=0;while(0);l=(l|0)==0;do if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(md[c[(c[e>>2]|0)+36>>2]&127](e)|0)==-1:0){m=10;break}if(!l)m=11}else m=10;while(0);if((m|0)==10)if(l)m=11;else e=0;if((m|0)==11){c[f>>2]=c[f>>2]|6;p=0;i=j;return p|0}m=c[a>>2]|0;l=c[m+12>>2]|0;if((l|0)==(c[m+16>>2]|0))m=md[c[(c[m>>2]|0)+36>>2]&127](m)|0;else m=d[l>>0]|0;l=m&255;if(l<<24>>24>-1?(k=g+8|0,(b[(c[k>>2]|0)+(m<<24>>24<<1)>>1]&2048)!=0):0){l=(fd[c[(c[g>>2]|0)+36>>2]&31](g,l,0)|0)<<24>>24;o=c[a>>2]|0;m=o+12|0;n=c[m>>2]|0;if((n|0)==(c[o+16>>2]|0)){md[c[(c[o>>2]|0)+40>>2]&127](o)|0;n=e;m=e}else{c[m>>2]=n+1;n=e;m=e}while(1){l=l+ -48|0;h=h+ -1|0;e=c[a>>2]|0;do if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0))if((md[c[(c[e>>2]|0)+36>>2]&127](e)|0)==-1){c[a>>2]=0;e=0;break}else{e=c[a>>2]|0;break}}else e=0;while(0);o=(e|0)==0;if(m)if((c[m+12>>2]|0)==(c[m+16>>2]|0)){m=(md[c[(c[m>>2]|0)+36>>2]&127](m)|0)==-1;e=m?0:n;m=m?0:n}else e=n;else{e=n;m=0}n=c[a>>2]|0;if(!((o^(m|0)==0)&(h|0)>0)){m=38;break}o=c[n+12>>2]|0;if((o|0)==(c[n+16>>2]|0))n=md[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=d[o>>0]|0;o=n&255;if(o<<24>>24<=-1){m=49;break}if(!(b[(c[k>>2]|0)+(n<<24>>24<<1)>>1]&2048)){m=49;break}l=((fd[c[(c[g>>2]|0)+36>>2]&31](g,o,0)|0)<<24>>24)+(l*10|0)|0;n=c[a>>2]|0;p=n+12|0;o=c[p>>2]|0;if((o|0)==(c[n+16>>2]|0)){md[c[(c[n>>2]|0)+40>>2]&127](n)|0;n=e;continue}else{c[p>>2]=o+1;n=e;continue}}if((m|0)==38){do if(n){if((c[n+12>>2]|0)==(c[n+16>>2]|0))if((md[c[(c[n>>2]|0)+36>>2]&127](n)|0)==-1){c[a>>2]=0;n=0;break}else{n=c[a>>2]|0;break}}else n=0;while(0);g=(n|0)==0;do if(e){if((c[e+12>>2]|0)==(c[e+16>>2]|0)?(md[c[(c[e>>2]|0)+36>>2]&127](e)|0)==-1:0){m=47;break}if(g){p=l;i=j;return p|0}}else m=47;while(0);if((m|0)==47?!g:0){p=l;i=j;return p|0}c[f>>2]=c[f>>2]|2;p=l;i=j;return p|0}else if((m|0)==49){i=j;return l|0}}c[f>>2]=c[f>>2]|4;p=0;i=j;return p|0}function Ol(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;l=i;i=i+32|0;r=l+16|0;n=l+12|0;q=l+8|0;o=l+4|0;p=l;t=c[f+28>>2]|0;s=t+4|0;c[s>>2]=(c[s>>2]|0)+1;s=Sn(t,19064)|0;x=t+4|0;y=c[x>>2]|0;c[x>>2]=y+ -1;if(!y)jd[c[(c[t>>2]|0)+8>>2]&255](t);c[g>>2]=0;a:do if((j|0)!=(k|0)){t=0;b:while(1){u=t;t=d;while(1){if(u){d=t;break a}if(!t){u=1;d=0;t=0}else{d=c[t+12>>2]|0;if((d|0)==(c[t+16>>2]|0))d=md[c[(c[t>>2]|0)+36>>2]&127](t)|0;else d=c[d>>2]|0;y=(d|0)==-1;u=y?1:0;d=y?0:t;t=y?0:t}if(e){v=c[e+12>>2]|0;if((v|0)==(c[e+16>>2]|0))v=md[c[(c[e>>2]|0)+36>>2]&127](e)|0;else v=c[v>>2]|0;if((v|0)!=-1){if(!u){m=20;break b}}else m=18}else m=18;if((m|0)==18){m=0;if(u){e=0;m=20;break b}else e=0}if((fd[c[(c[s>>2]|0)+52>>2]&31](s,c[j>>2]|0,0)|0)<<24>>24==37){m=22;break}if(fd[c[(c[s>>2]|0)+12>>2]&31](s,8192,c[j>>2]|0)|0){m=32;break}u=d+12|0;w=c[u>>2]|0;v=d+16|0;if((w|0)==(c[v>>2]|0))w=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else w=c[w>>2]|0;y=vd[c[(c[s>>2]|0)+28>>2]&63](s,w)|0;if((y|0)==(vd[c[(c[s>>2]|0)+28>>2]&63](s,c[j>>2]|0)|0)){m=58;break}c[g>>2]=4;u=4}c:do if((m|0)==22){m=0;u=j+4|0;if((u|0)==(k|0)){m=23;break b}t=fd[c[(c[s>>2]|0)+52>>2]&31](s,c[u>>2]|0,0)|0;if(t<<24>>24==48|t<<24>>24==69){u=j+8|0;if((u|0)==(k|0)){m=26;break b}j=u;u=fd[c[(c[s>>2]|0)+52>>2]&31](s,c[u>>2]|0,0)|0}else{j=u;u=t;t=0}y=c[(c[b>>2]|0)+36>>2]|0;c[o>>2]=d;c[p>>2]=e;c[n+0>>2]=c[o+0>>2];c[r+0>>2]=c[p+0>>2];ld[y&3](q,b,n,r,f,g,h,u,t);j=j+4|0;d=c[q>>2]|0}else if((m|0)==32){while(1){m=0;j=j+4|0;if((j|0)==(k|0)){j=k;break}if(fd[c[(c[s>>2]|0)+12>>2]&31](s,8192,c[j>>2]|0)|0)m=32;else break}u=e;v=e;while(1){if(!d){w=1;d=0}else{w=c[d+12>>2]|0;if((w|0)==(c[d+16>>2]|0))w=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else w=c[w>>2]|0;y=(w|0)==-1;w=y?1:0;d=y?0:d;t=y?0:t}if(v){x=c[v+12>>2]|0;if((x|0)==(c[v+16>>2]|0))v=md[c[(c[v>>2]|0)+36>>2]&127](v)|0;else v=c[x>>2]|0;if((v|0)!=-1)if(w^(u|0)==0){w=u;v=u}else{d=t;break c}else{u=0;e=0;m=45}}else m=45;if((m|0)==45){m=0;if(w){d=t;break c}else{w=u;v=0}}u=d+12|0;y=c[u>>2]|0;x=d+16|0;if((y|0)==(c[x>>2]|0))y=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else y=c[y>>2]|0;if(!(fd[c[(c[s>>2]|0)+12>>2]&31](s,8192,y)|0)){d=t;break c}y=c[u>>2]|0;if((y|0)==(c[x>>2]|0)){md[c[(c[d>>2]|0)+40>>2]&127](d)|0;u=w;continue}else{c[u>>2]=y+4;u=w;continue}}}else if((m|0)==58){m=0;w=c[u>>2]|0;if((w|0)==(c[v>>2]|0))md[c[(c[d>>2]|0)+40>>2]&127](d)|0;else c[u>>2]=w+4;j=j+4|0;d=t}while(0);if((j|0)==(k|0))break a;t=c[g>>2]|0}if((m|0)==20){c[g>>2]=4;break}else if((m|0)==23){c[g>>2]=4;break}else if((m|0)==26){c[g>>2]=4;break}}while(0);if(!d){f=0;n=1}else{f=c[d+12>>2]|0;if((f|0)==(c[d+16>>2]|0))f=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else f=c[f>>2]|0;n=(f|0)==-1;f=n?0:d;n=n?1:0}if(e){o=c[e+12>>2]|0;if((o|0)==(c[e+16>>2]|0))o=md[c[(c[e>>2]|0)+36>>2]&127](e)|0;else o=c[o>>2]|0;if((o|0)!=-1){if(n){c[a>>2]=f;i=l;return}}else m=73}else m=73;if((m|0)==73?!n:0){c[a>>2]=f;i=l;return}c[g>>2]=c[g>>2]|2;c[a>>2]=f;i=l;return}function Pl(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ql(a){a=a|0;return}function Rl(a){a=a|0;return 2}function Sl(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;Ol(a,b,c[d>>2]|0,c[e>>2]|0,f,g,h,18144,18176|0);i=j;return}function Tl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0;k=i;m=d+8|0;m=md[c[(c[m>>2]|0)+20>>2]&127](m)|0;n=a[m>>0]|0;if(!(n&1)){l=m+4|0;m=(n&255)>>>1}else{l=c[m+8>>2]|0;m=c[m+4>>2]|0}Ol(b,d,c[e>>2]|0,c[f>>2]|0,g,h,j,l,l+(m<<2)|0);i=k;return}function Ul(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;k=c[f+28>>2]|0;f=k+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(k,19064)|0;m=k+4|0;l=c[m>>2]|0;c[m>>2]=l+ -1;if(!l)jd[c[(c[k>>2]|0)+8>>2]&255](k);Vl(b,h+24|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=j;return}function Vl(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;a=a+8|0;a=md[c[c[a>>2]>>2]&127](a)|0;f=(Hk(d,e,a,a+168|0,g,f,0)|0)-a|0;if((f|0)>=168){i=h;return}c[b>>2]=((f|0)/12|0|0)%7|0;i=h;return}function Wl(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;k=c[f+28>>2]|0;f=k+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(k,19064)|0;m=k+4|0;l=c[m>>2]|0;c[m>>2]=l+ -1;if(!l)jd[c[(c[k>>2]|0)+8>>2]&255](k);Xl(b,h+16|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=j;return}function Xl(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;a=a+8|0;a=md[c[(c[a>>2]|0)+4>>2]&127](a)|0;f=(Hk(d,e,a,a+288|0,g,f,0)|0)-a|0;if((f|0)>=288){i=h;return}c[b>>2]=((f|0)/12|0|0)%12|0;i=h;return}function Yl(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0;b=i;j=c[f+28>>2]|0;f=j+4|0;c[f>>2]=(c[f>>2]|0)+1;f=Sn(j,19064)|0;l=j+4|0;k=c[l>>2]|0;c[l>>2]=k+ -1;if(!k)jd[c[(c[j>>2]|0)+8>>2]&255](j);Zl(h+20|0,d,c[e>>2]|0,g,f);c[a>>2]=c[d>>2];i=b;return}function Zl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;f=$l(b,d,e,f,4)|0;if(c[e>>2]&4){i=g;return}if((f|0)<69)e=f+2e3|0;else e=(f+ -69|0)>>>0<31?f+1900|0:f;c[a>>2]=e+ -1900;i=g;return}function _l(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;l=i;i=i+48|0;x=l+36|0;w=l+16|0;q=l;r=l+28|0;t=l+32|0;y=l+40|0;s=l+12|0;z=l+24|0;u=l+20|0;v=l+8|0;p=l+4|0;c[h>>2]=0;A=c[g+28>>2]|0;n=A+4|0;c[n>>2]=(c[n>>2]|0)+1;n=Sn(A,19064)|0;C=A+4|0;B=c[C>>2]|0;c[C>>2]=B+ -1;if(!B)jd[c[(c[A>>2]|0)+8>>2]&255](A);a:do switch(k<<24>>24|0){case 89:{m=$l(e,c[f>>2]|0,h,n,4)|0;if(!(c[h>>2]&4))c[j+20>>2]=m+ -1900;break};case 37:{j=c[f>>2]|0;d=c[e>>2]|0;do if(d){f=c[d+12>>2]|0;if((f|0)==(c[d+16>>2]|0))f=md[c[(c[d>>2]|0)+36>>2]&127](d)|0;else f=c[f>>2]|0;if((f|0)==-1){c[e>>2]=0;f=1;break}else{f=(c[e>>2]|0)==0;break}}else f=1;while(0);if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=c[d>>2]|0;if((d|0)!=-1){if(!f)m=115}else m=113}else m=113;if((m|0)==113)if(f)m=115;else j=0;if((m|0)==115){c[h>>2]=c[h>>2]|6;break a}f=c[e>>2]|0;d=c[f+12>>2]|0;if((d|0)==(c[f+16>>2]|0))f=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else f=c[d>>2]|0;if((fd[c[(c[n>>2]|0)+52>>2]&31](n,f,0)|0)<<24>>24!=37){c[h>>2]=c[h>>2]|4;break a}n=c[e>>2]|0;f=n+12|0;d=c[f>>2]|0;if((d|0)==(c[n+16>>2]|0))md[c[(c[n>>2]|0)+40>>2]&127](n)|0;else c[f>>2]=d+4;f=c[e>>2]|0;do if(f){n=c[f+12>>2]|0;if((n|0)==(c[f+16>>2]|0))n=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=c[n>>2]|0;if((n|0)==-1){c[e>>2]=0;n=1;break}else{n=(c[e>>2]|0)==0;break}}else n=1;while(0);if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))j=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=c[f>>2]|0;if((j|0)!=-1){if(n)break a}else m=136}else m=136;if((m|0)==136?!n:0)break a;c[h>>2]=c[h>>2]|2;break};case 65:case 97:{Vl(d,j+24|0,e,c[f>>2]|0,h,n);break};case 101:case 100:{m=j+12|0;n=$l(e,c[f>>2]|0,h,n,2)|0;j=c[h>>2]|0;if((j&4|0)==0?(n+ -1|0)>>>0<31:0){c[m>>2]=n;break a}c[h>>2]=j|4;break};case 70:{Ol(t,d,c[e>>2]|0,c[f>>2]|0,g,h,j,18208,18240|0);c[e>>2]=c[t>>2];break};case 77:{m=$l(e,c[f>>2]|0,h,n,2)|0;n=c[h>>2]|0;if((n&4|0)==0&(m|0)<60){c[j+4>>2]=m;break a}else{c[h>>2]=n|4;break a}};case 73:{m=j+8|0;j=$l(e,c[f>>2]|0,h,n,2)|0;n=c[h>>2]|0;if((n&4|0)==0?(j+ -1|0)>>>0<12:0){c[m>>2]=j;break a}c[h>>2]=n|4;break};case 112:{m=j+8|0;f=c[f>>2]|0;j=d+8|0;j=md[c[(c[j>>2]|0)+8>>2]&127](j)|0;d=a[j>>0]|0;if(!(d&1))d=(d&255)>>>1;else d=c[j+4>>2]|0;g=a[j+12>>0]|0;if(!(g&1))g=(g&255)>>>1;else g=c[j+16>>2]|0;if((d|0)==(0-g|0)){c[h>>2]=c[h>>2]|4;break a}C=Hk(e,f,j,j+24|0,n,h,0)|0;h=C-j|0;if((C|0)==(j|0)?(c[m>>2]|0)==12:0){c[m>>2]=0;break a}if((h|0)==12?(o=c[m>>2]|0,(o|0)<12):0)c[m>>2]=o+12;break};case 82:{Ol(s,d,c[e>>2]|0,c[f>>2]|0,g,h,j,18288,18308|0);c[e>>2]=c[s>>2];break};case 104:case 66:case 98:{Xl(d,j+16|0,e,c[f>>2]|0,h,n);break};case 84:{Ol(z,d,c[e>>2]|0,c[f>>2]|0,g,h,j,18312,18344|0);c[e>>2]=c[z>>2];break};case 68:{Ol(r,d,c[e>>2]|0,c[f>>2]|0,g,h,j,18176,18208|0);c[e>>2]=c[r>>2];break};case 121:{Zl(j+20|0,e,c[f>>2]|0,h,n);break};case 109:{n=$l(e,c[f>>2]|0,h,n,2)|0;m=c[h>>2]|0;if((m&4|0)==0&(n|0)<13){c[j+16>>2]=n+ -1;break a}else{c[h>>2]=m|4;break a}};case 99:{n=d+8|0;n=md[c[(c[n>>2]|0)+12>>2]&127](n)|0;o=a[n>>0]|0;if(!(o&1)){m=n+4|0;n=(o&255)>>>1}else{m=c[n+8>>2]|0;n=c[n+4>>2]|0}Ol(q,d,c[e>>2]|0,c[f>>2]|0,g,h,j,m,m+(n<<2)|0);c[e>>2]=c[q>>2];break};case 72:{n=$l(e,c[f>>2]|0,h,n,2)|0;m=c[h>>2]|0;if((m&4|0)==0&(n|0)<24){c[j+8>>2]=n;break a}else{c[h>>2]=m|4;break a}};case 106:{m=$l(e,c[f>>2]|0,h,n,3)|0;n=c[h>>2]|0;if((n&4|0)==0&(m|0)<366){c[j+28>>2]=m;break a}else{c[h>>2]=n|4;break a}};case 120:{C=c[(c[d>>2]|0)+20>>2]|0;c[u>>2]=c[e>>2];c[v>>2]=c[f>>2];c[w+0>>2]=c[u+0>>2];c[x+0>>2]=c[v+0>>2];gd[C&63](b,d,w,x,g,h,j);i=l;return};case 114:{Ol(y,d,c[e>>2]|0,c[f>>2]|0,g,h,j,18240,18284|0);c[e>>2]=c[y>>2];break};case 116:case 110:{j=c[f>>2]|0;while(1){f=c[e>>2]|0;do if(f){d=c[f+12>>2]|0;if((d|0)==(c[f+16>>2]|0))f=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else f=c[d>>2]|0;if((f|0)==-1){c[e>>2]=0;f=1;break}else{f=(c[e>>2]|0)==0;break}}else f=1;while(0);if(j){d=c[j+12>>2]|0;if((d|0)==(c[j+16>>2]|0))d=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else d=c[d>>2]|0;if((d|0)!=-1){if(!f)break}else m=46}else m=46;if((m|0)==46){m=0;if(f){j=0;break}else j=0}f=c[e>>2]|0;d=c[f+12>>2]|0;if((d|0)==(c[f+16>>2]|0))f=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else f=c[d>>2]|0;if(!(fd[c[(c[n>>2]|0)+12>>2]&31](n,8192,f)|0))break;g=c[e>>2]|0;d=g+12|0;f=c[d>>2]|0;if((f|0)==(c[g+16>>2]|0)){md[c[(c[g>>2]|0)+40>>2]&127](g)|0;continue}else{c[d>>2]=f+4;continue}}f=c[e>>2]|0;do if(f){n=c[f+12>>2]|0;if((n|0)==(c[f+16>>2]|0))n=md[c[(c[f>>2]|0)+36>>2]&127](f)|0;else n=c[n>>2]|0;if((n|0)==-1){c[e>>2]=0;n=1;break}else{n=(c[e>>2]|0)==0;break}}else n=1;while(0);if(j){f=c[j+12>>2]|0;if((f|0)==(c[j+16>>2]|0))j=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=c[f>>2]|0;if((j|0)!=-1){if(n)break a}else m=67}else m=67;if((m|0)==67?!n:0)break a;c[h>>2]=c[h>>2]|2;break};case 88:{n=d+8|0;n=md[c[(c[n>>2]|0)+24>>2]&127](n)|0;o=a[n>>0]|0;if(!(o&1)){m=n+4|0;n=(o&255)>>>1}else{m=c[n+8>>2]|0;n=c[n+4>>2]|0}Ol(p,d,c[e>>2]|0,c[f>>2]|0,g,h,j,m,m+(n<<2)|0);c[e>>2]=c[p>>2];break};case 83:{n=$l(e,c[f>>2]|0,h,n,2)|0;m=c[h>>2]|0;if((m&4|0)==0&(n|0)<61){c[j>>2]=n;break a}else{c[h>>2]=m|4;break a}};case 119:{m=$l(e,c[f>>2]|0,h,n,1)|0;n=c[h>>2]|0;if((n&4|0)==0&(m|0)<7){c[j+24>>2]=m;break a}else{c[h>>2]=n|4;break a}};default:c[h>>2]=c[h>>2]|4}while(0);c[b>>2]=c[e>>2];i=l;return}function $l(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;k=c[a>>2]|0;do if(k){j=c[k+12>>2]|0;if((j|0)==(c[k+16>>2]|0))j=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else j=c[j>>2]|0;if((j|0)==-1){c[a>>2]=0;j=1;break}else{j=(c[a>>2]|0)==0;break}}else j=1;while(0);if(b){k=c[b+12>>2]|0;if((k|0)==(c[b+16>>2]|0))k=md[c[(c[b>>2]|0)+36>>2]&127](b)|0;else k=c[k>>2]|0;if((k|0)!=-1){if(!j)g=15}else g=13}else g=13;if((g|0)==13)if(j)g=15;else b=0;if((g|0)==15){c[d>>2]=c[d>>2]|6;n=0;i=h;return n|0}j=c[a>>2]|0;k=c[j+12>>2]|0;if((k|0)==(c[j+16>>2]|0))j=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=c[k>>2]|0;if(!(fd[c[(c[e>>2]|0)+12>>2]&31](e,2048,j)|0)){c[d>>2]=c[d>>2]|4;n=0;i=h;return n|0}j=(fd[c[(c[e>>2]|0)+52>>2]&31](e,j,0)|0)<<24>>24;l=c[a>>2]|0;k=l+12|0;m=c[k>>2]|0;if((m|0)==(c[l+16>>2]|0)){md[c[(c[l>>2]|0)+40>>2]&127](l)|0;k=b;l=b;b=j}else{c[k>>2]=m+4;k=b;l=b;b=j}while(1){b=b+ -48|0;f=f+ -1|0;j=c[a>>2]|0;do if(j){m=c[j+12>>2]|0;if((m|0)==(c[j+16>>2]|0))j=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else j=c[m>>2]|0;if((j|0)==-1){c[a>>2]=0;m=1;break}else{m=(c[a>>2]|0)==0;break}}else m=1;while(0);if(!l){j=k;l=0;n=1}else{j=c[l+12>>2]|0;if((j|0)==(c[l+16>>2]|0))j=md[c[(c[l>>2]|0)+36>>2]&127](l)|0;else j=c[j>>2]|0;n=(j|0)==-1;j=n?0:k;l=n?0:k;n=n?1:(k|0)==0}k=c[a>>2]|0;if(!((m^n)&(f|0)>0))break;m=c[k+12>>2]|0;if((m|0)==(c[k+16>>2]|0))k=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=c[m>>2]|0;if(!(fd[c[(c[e>>2]|0)+12>>2]&31](e,2048,k)|0)){g=59;break}b=((fd[c[(c[e>>2]|0)+52>>2]&31](e,k,0)|0)<<24>>24)+(b*10|0)|0;m=c[a>>2]|0;n=m+12|0;k=c[n>>2]|0;if((k|0)==(c[m+16>>2]|0)){md[c[(c[m>>2]|0)+40>>2]&127](m)|0;k=j;continue}else{c[n>>2]=k+4;k=j;continue}}if((g|0)==59){i=h;return b|0}do if(k){e=c[k+12>>2]|0;if((e|0)==(c[k+16>>2]|0))e=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else e=c[e>>2]|0;if((e|0)==-1){c[a>>2]=0;a=1;break}else{a=(c[a>>2]|0)==0;break}}else a=1;while(0);if(j){e=c[j+12>>2]|0;if((e|0)==(c[j+16>>2]|0))e=md[c[(c[j>>2]|0)+36>>2]&127](j)|0;else e=c[e>>2]|0;if((e|0)!=-1){if(a){n=b;i=h;return n|0}}else g=56}else g=56;if((g|0)==56?!a:0){n=b;i=h;return n|0}c[d>>2]=c[d>>2]|2;n=b;i=h;return n|0}function am(a){a=a|0;var b=0;b=i;cm(a+8|0);Uq(a);i=b;return}function bm(a){a=a|0;var b=0;b=i;cm(a+8|0);i=b;return}function cm(a){a=a|0;var b=0,d=0;b=i;d=c[a>>2]|0;if((d|0)==(Dk()|0)){i=b;return}ub(c[a>>2]|0);i=b;return}function dm(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0;g=i;i=i+112|0;f=g+4|0;l=g;c[l>>2]=f+100;em(d+8|0,f,l,h,j,k);j=c[l>>2]|0;d=c[e>>2]|0;if((f|0)==(j|0)){l=d;c[b>>2]=l;i=g;return}else e=d;do{l=a[f>>0]|0;do if(d){k=d+24|0;h=c[k>>2]|0;if((h|0)==(c[d+28>>2]|0)){l=(vd[c[(c[d>>2]|0)+52>>2]&63](d,l&255)|0)==-1;e=l?0:e;d=l?0:d;break}else{c[k>>2]=h+1;a[h>>0]=l;break}}else d=0;while(0);f=f+1|0}while((f|0)!=(j|0));c[b>>2]=e;i=g;return}function em(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;k=j;a[k>>0]=37;m=k+1|0;a[m>>0]=g;l=k+2|0;a[l>>0]=h;a[k+3>>0]=0;if(h<<24>>24){a[m>>0]=h;a[l>>0]=g}c[e>>2]=d+(Bc(d|0,(c[e>>2]|0)-d|0,k|0,f|0,c[b>>2]|0)|0);i=j;return}function fm(a){a=a|0;var b=0;b=i;cm(a+8|0);Uq(a);i=b;return}function gm(a){a=a|0;var b=0;b=i;cm(a+8|0);i=b;return}function hm(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0;f=i;i=i+528|0;m=f+416|0;n=f+412|0;k=f;l=f+408|0;e=f+8|0;b=b+8|0;c[n>>2]=m+100;em(b,m,n,g,h,j);h=k;c[h>>2]=0;c[h+4>>2]=0;c[l>>2]=m;b=Yb(c[b>>2]|0)|0;h=Tp(e,l,100,k)|0;if(b)Yb(b|0)|0;if((h|0)==-1)dn(19912);b=e+(h<<2)|0;j=c[d>>2]|0;if(!h){n=j;c[a>>2]=n;i=f;return}else{d=e;e=j}do{g=c[d>>2]|0;if(!e)e=0;else{h=e+24|0;k=c[h>>2]|0;if((k|0)==(c[e+28>>2]|0))g=vd[c[(c[e>>2]|0)+52>>2]&63](e,g)|0;else{c[h>>2]=k+4;c[k>>2]=g}n=(g|0)==-1;j=n?0:j;e=n?0:e}d=d+4|0}while((d|0)!=(b|0));c[a>>2]=j;i=f;return}function im(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function jm(a){a=a|0;return}function km(a){a=a|0;return 127}function lm(a){a=a|0;return 127}function mm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function nm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function om(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function pm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=45;a[b+2>>0]=0;return}function qm(a){a=a|0;return 0}function rm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function sm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function tm(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function um(a){a=a|0;return}function vm(a){a=a|0;return 127}function wm(a){a=a|0;return 127}function xm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function ym(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function zm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Am(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=45;a[b+2>>0]=0;return}function Bm(a){a=a|0;return 0}function Cm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function Dm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function Em(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Fm(a){a=a|0;return}function Gm(a){a=a|0;return 2147483647}function Hm(a){a=a|0;return 2147483647}function Im(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Jm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Km(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Lm(b,d){b=b|0;d=d|0;var e=0,f=0;d=i;a[b>>0]=2;b=b+4|0;f=1;e=b;while(1){f=f+ -1|0;c[e>>2]=45;if(!f)break;else e=e+4|0}c[b+4>>2]=0;i=d;return}function Mm(a){a=a|0;return 0}function Nm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function Om(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function Pm(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Qm(a){a=a|0;return}function Rm(a){a=a|0;return 2147483647}function Sm(a){a=a|0;return 2147483647}function Tm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Um(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Vm(a,b){a=a|0;b=b|0;b=i;c[a+0>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;i=b;return}function Wm(b,d){b=b|0;d=d|0;var e=0,f=0;d=i;a[b>>0]=2;b=b+4|0;f=1;e=b;while(1){f=f+ -1|0;c[e>>2]=45;if(!f)break;else e=e+4|0}c[b+4>>2]=0;i=d;return}function Xm(a){a=a|0;return 0}function Ym(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function Zm(b,c){b=b|0;c=c|0;a[b>>0]=2;a[b+1>>0]=3;a[b+2>>0]=0;a[b+3>>0]=4;return}function _m(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function $m(a){a=a|0;return}function an(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;d=i;i=i+240|0;q=d;x=d+132|0;n=d+8|0;s=d+16|0;t=d+130|0;r=d+120|0;p=d+20|0;c[n>>2]=x;m=n+4|0;c[m>>2]=243;o=c[h+28>>2]|0;u=o+4|0;c[u>>2]=(c[u>>2]|0)+1;u=Sn(o,19072)|0;a[t>>0]=0;if(cn(e,c[f>>2]|0,g,o,c[h+4>>2]|0,j,t,u,n,s,x+100|0)|0){sd[c[(c[u>>2]|0)+32>>2]&7](u,18704,18714,r)|0;g=c[s>>2]|0;u=c[n>>2]|0;h=g-u|0;if((h|0)>98){v=Tq(h+2|0)|0;if(!v){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else h=v}else{h=0;v=p}if(a[t>>0]|0){a[v>>0]=45;v=v+1|0}if(u>>>0>>0){t=r+10|0;g=r;do{w=a[u>>0]|0;x=r;while(1){if((a[x>>0]|0)==w<<24>>24)break;x=x+1|0;if((x|0)==(t|0)){x=t;break}}a[v>>0]=a[18704+(x-g)>>0]|0;u=u+1|0;v=v+1|0}while(u>>>0<(c[s>>2]|0)>>>0)}a[v>>0]=0;c[q>>2]=k;if((Up(p,18720,q)|0)!=1)dn(18728);Uq(h)}k=c[e>>2]|0;if(k){if((c[k+12>>2]|0)==(c[k+16>>2]|0)?(md[c[(c[k>>2]|0)+36>>2]&127](k)|0)==-1:0){c[e>>2]=0;k=0}}else k=0;p=(k|0)==0;e=c[f>>2]|0;do if(e){if((c[e+12>>2]|0)!=(c[e+16>>2]|0))if(p)break;else{l=33;break}if((md[c[(c[e>>2]|0)+36>>2]&127](e)|0)!=-1)if(p)break;else{l=33;break}else{c[f>>2]=0;l=31;break}}else l=31;while(0);if((l|0)==31?p:0)l=33;if((l|0)==33)c[j>>2]=c[j>>2]|2;c[b>>2]=k;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);l=c[n>>2]|0;c[n>>2]=0;if(!l){i=d;return}jd[c[m>>2]&255](l);i=d;return}function bn(a){a=a|0;return}function cn(e,f,g,h,j,k,l,m,n,o,p){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;r=i;i=i+592|0;F=r+76|0;G=r+112|0;J=r;A=r+176|0;H=r+64|0;M=r+24|0;K=r+28|0;L=r+124|0;I=r+148|0;z=r+164|0;B=r+188|0;U=r+192|0;q=r+80|0;E=r+88|0;D=r+104|0;C=r+108|0;u=r+92|0;w=r+40|0;t=r+136|0;v=r+12|0;s=r+52|0;x=r+160|0;c[B>>2]=p;c[q>>2]=U;p=q+4|0;c[p>>2]=243;c[E>>2]=U;c[D>>2]=U+400;c[C>>2]=0;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[w+0>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;if(g){z=Sn(h,18528)|0;kd[c[(c[z>>2]|0)+44>>2]&63](F,z);c[C>>2]=c[F>>2];kd[c[(c[z>>2]|0)+32>>2]&63](G,z);if(!(a[v>>0]&1)){a[v+1>>0]=0;a[v>>0]=0}else{a[c[v+8>>2]>>0]=0;c[v+4>>2]=0}Li(v);c[v+0>>2]=c[G+0>>2];c[v+4>>2]=c[G+4>>2];c[v+8>>2]=c[G+8>>2];c[G+0>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;kd[c[(c[z>>2]|0)+28>>2]&63](J,z);if(!(a[t>>0]&1)){a[t+1>>0]=0;a[t>>0]=0}else{a[c[t+8>>2]>>0]=0;c[t+4>>2]=0}Li(t);c[t+0>>2]=c[J+0>>2];c[t+4>>2]=c[J+4>>2];c[t+8>>2]=c[J+8>>2];c[J+0>>2]=0;c[J+4>>2]=0;c[J+8>>2]=0;F=md[c[(c[z>>2]|0)+12>>2]&127](z)|0;G=md[c[(c[z>>2]|0)+16>>2]&127](z)|0;kd[c[(c[z>>2]|0)+20>>2]&63](A,z);if(!(a[u>>0]&1)){a[u+1>>0]=0;a[u>>0]=0}else{a[c[u+8>>2]>>0]=0;c[u+4>>2]=0}Li(u);c[u+0>>2]=c[A+0>>2];c[u+4>>2]=c[A+4>>2];c[u+8>>2]=c[A+8>>2];c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;kd[c[(c[z>>2]|0)+24>>2]&63](H,z);if(!(a[w>>0]&1)){a[w+1>>0]=0;a[w>>0]=0}else{a[c[w+8>>2]>>0]=0;c[w+4>>2]=0}Li(w);c[w+0>>2]=c[H+0>>2];c[w+4>>2]=c[H+4>>2];c[w+8>>2]=c[H+8>>2];c[H+0>>2]=0;c[H+4>>2]=0;c[H+8>>2]=0;T=md[c[(c[z>>2]|0)+36>>2]&127](z)|0}else{A=Sn(h,18464)|0;kd[c[(c[A>>2]|0)+44>>2]&63](M,A);c[C>>2]=c[M>>2];kd[c[(c[A>>2]|0)+32>>2]&63](K,A);if(!(a[v>>0]&1)){a[v+1>>0]=0;a[v>>0]=0}else{a[c[v+8>>2]>>0]=0;c[v+4>>2]=0}Li(v);c[v+0>>2]=c[K+0>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[K+0>>2]=0;c[K+4>>2]=0;c[K+8>>2]=0;kd[c[(c[A>>2]|0)+28>>2]&63](L,A);if(!(a[t>>0]&1)){a[t+1>>0]=0;a[t>>0]=0}else{a[c[t+8>>2]>>0]=0;c[t+4>>2]=0}Li(t);c[t+0>>2]=c[L+0>>2];c[t+4>>2]=c[L+4>>2];c[t+8>>2]=c[L+8>>2];c[L+0>>2]=0;c[L+4>>2]=0;c[L+8>>2]=0;F=md[c[(c[A>>2]|0)+12>>2]&127](A)|0;G=md[c[(c[A>>2]|0)+16>>2]&127](A)|0;kd[c[(c[A>>2]|0)+20>>2]&63](I,A);if(!(a[u>>0]&1)){a[u+1>>0]=0;a[u>>0]=0}else{a[c[u+8>>2]>>0]=0;c[u+4>>2]=0}Li(u);c[u+0>>2]=c[I+0>>2];c[u+4>>2]=c[I+4>>2];c[u+8>>2]=c[I+8>>2];c[I+0>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;kd[c[(c[A>>2]|0)+24>>2]&63](z,A);if(!(a[w>>0]&1)){a[w+1>>0]=0;a[w>>0]=0}else{a[c[w+8>>2]>>0]=0;c[w+4>>2]=0}Li(w);c[w+0>>2]=c[z+0>>2];c[w+4>>2]=c[z+4>>2];c[w+8>>2]=c[z+8>>2];c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;T=md[c[(c[A>>2]|0)+36>>2]&127](A)|0}c[o>>2]=c[n>>2];L=m+8|0;J=v+1|0;I=v+4|0;m=v+8|0;H=t+1|0;K=t+4|0;z=t+8|0;P=(j&512|0)!=0;Q=w+1|0;A=w+8|0;h=w+4|0;g=s+1|0;j=s+8|0;M=s+4|0;N=C+3|0;O=u+4|0;S=0;R=0;a:while(1){V=c[e>>2]|0;do if(V){if((c[V+12>>2]|0)==(c[V+16>>2]|0))if((md[c[(c[V>>2]|0)+36>>2]&127](V)|0)==-1){c[e>>2]=0;V=0;break}else{V=c[e>>2]|0;break}}else V=0;while(0);V=(V|0)==0;do if(f){if((c[f+12>>2]|0)!=(c[f+16>>2]|0))if(V)break;else{y=311;break a}if((md[c[(c[f>>2]|0)+36>>2]&127](f)|0)!=-1){if(!V){y=311;break a}}else y=64}else y=64;while(0);if((y|0)==64){y=0;if(V){f=0;y=311;break}else f=0}b:do switch(a[C+S>>0]|0){case 2:{if(!((R|0)!=0|S>>>0<2)){if((S|0)==2)V=(a[N>>0]|0)!=0;else V=0;if(!(P|V)){W=f;R=0;break b}}Y=a[w>>0]|0;W=(Y&1)==0;V=W?Q:c[A>>2]|0;c:do if((S|0)!=0?(d[C+(S+ -1)>>0]|0)<2:0){W=V+(W?(Y&255)>>>1:c[h>>2]|0)|0;X=V;while(1){if((X|0)==(W|0))break;Z=a[X>>0]|0;if(Z<<24>>24<=-1)break;if(!(b[(c[L>>2]|0)+(Z<<24>>24<<1)>>1]&8192))break;else X=X+1|0}W=X-V|0;_=a[s>>0]|0;$=(_&1)==0;if($)Z=(_&255)>>>1;else Z=c[M>>2]|0;if(W>>>0<=Z>>>0){if($){$=(_&255)>>>1;_=g;Z=$;W=s+($-W)+1|0}else{aa=c[j>>2]|0;$=c[M>>2]|0;_=aa;Z=$;W=aa+($-W)|0}Z=_+Z|0;if((W|0)==(Z|0)){W=f;V=X;X=f}else{_=V;while(1){if((a[W>>0]|0)!=(a[_>>0]|0)){W=f;X=f;break c}W=W+1|0;if((W|0)==(Z|0)){W=f;V=X;X=f;break}else _=_+1|0}}}else{W=f;X=f}}else{W=f;X=f}while(0);d:while(1){if(!(Y&1)){Z=Q;Y=(Y&255)>>>1}else{Z=c[A>>2]|0;Y=c[h>>2]|0}if((V|0)==(Z+Y|0))break;Y=c[e>>2]|0;do if(Y){if((c[Y+12>>2]|0)==(c[Y+16>>2]|0))if((md[c[(c[Y>>2]|0)+36>>2]&127](Y)|0)==-1){c[e>>2]=0;Y=0;break}else{Y=c[e>>2]|0;break}}else Y=0;while(0);Y=(Y|0)==0;do if(X){if((c[X+12>>2]|0)!=(c[X+16>>2]|0))if(Y){Y=W;break}else break d;if((md[c[(c[X>>2]|0)+36>>2]&127](X)|0)!=-1)if(Y^(W|0)==0){Y=W;X=W}else break d;else{W=0;f=0;y=204}}else y=204;while(0);if((y|0)==204){y=0;if(Y)break;else{Y=W;X=0}}Z=c[e>>2]|0;W=c[Z+12>>2]|0;if((W|0)==(c[Z+16>>2]|0))W=md[c[(c[Z>>2]|0)+36>>2]&127](Z)|0;else W=d[W>>0]|0;if((W&255)<<24>>24!=(a[V>>0]|0)){W=Y;break}W=c[e>>2]|0;Z=W+12|0;_=c[Z>>2]|0;if((_|0)==(c[W+16>>2]|0))md[c[(c[W>>2]|0)+40>>2]&127](W)|0;else c[Z>>2]=_+1;W=Y;Y=a[w>>0]|0;V=V+1|0}if(P){Y=a[w>>0]|0;if(!(Y&1)){X=Q;Y=(Y&255)>>>1}else{X=c[A>>2]|0;Y=c[h>>2]|0}if((V|0)!=(X+Y|0)){y=219;break a}}break};case 3:{V=a[t>>0]|0;X=(V&1)==0;if(X)_=(V&255)>>>1;else _=c[K>>2]|0;W=a[v>>0]|0;Y=(W&1)==0;if(Y)Z=(W&255)>>>1;else Z=c[I>>2]|0;if((_|0)==(0-Z|0))W=f;else{if(X)Z=(V&255)>>>1;else Z=c[K>>2]|0;if(Z){if(Y)Y=(W&255)>>>1;else Y=c[I>>2]|0;if(Y){X=c[e>>2]|0;Z=c[X+12>>2]|0;Y=c[X+16>>2]|0;if((Z|0)==(Y|0)){W=md[c[(c[X>>2]|0)+36>>2]&127](X)|0;Y=c[e>>2]|0;V=a[t>>0]|0;X=Y;Z=c[Y+12>>2]|0;Y=c[Y+16>>2]|0}else W=d[Z>>0]|0;_=X+12|0;Y=(Z|0)==(Y|0);if((W&255)<<24>>24==(a[((V&1)==0?H:c[z>>2]|0)>>0]|0)){if(Y)md[c[(c[X>>2]|0)+40>>2]&127](X)|0;else c[_>>2]=Z+1;V=a[t>>0]|0;if(!(V&1))V=(V&255)>>>1;else V=c[K>>2]|0;W=f;R=V>>>0>1?t:R;break b}if(Y)V=md[c[(c[X>>2]|0)+36>>2]&127](X)|0;else V=d[Z>>0]|0;if((V&255)<<24>>24!=(a[((a[v>>0]&1)==0?J:c[m>>2]|0)>>0]|0)){y=168;break a}X=c[e>>2]|0;W=X+12|0;V=c[W>>2]|0;if((V|0)==(c[X+16>>2]|0))md[c[(c[X>>2]|0)+40>>2]&127](X)|0;else c[W>>2]=V+1;a[l>>0]=1;V=a[v>>0]|0;if(!(V&1))V=(V&255)>>>1;else V=c[I>>2]|0;W=f;R=V>>>0>1?v:R;break b}}if(X)_=(V&255)>>>1;else _=c[K>>2]|0;Z=c[e>>2]|0;Y=c[Z+12>>2]|0;X=(Y|0)==(c[Z+16>>2]|0);if(!_){if(X){V=md[c[(c[Z>>2]|0)+36>>2]&127](Z)|0;W=a[v>>0]|0}else V=d[Y>>0]|0;if((V&255)<<24>>24!=(a[((W&1)==0?J:c[m>>2]|0)>>0]|0)){W=f;break b}X=c[e>>2]|0;W=X+12|0;V=c[W>>2]|0;if((V|0)==(c[X+16>>2]|0))md[c[(c[X>>2]|0)+40>>2]&127](X)|0;else c[W>>2]=V+1;a[l>>0]=1;V=a[v>>0]|0;if(!(V&1))V=(V&255)>>>1;else V=c[I>>2]|0;W=f;R=V>>>0>1?v:R;break b}if(X){W=md[c[(c[Z>>2]|0)+36>>2]&127](Z)|0;V=a[t>>0]|0}else W=d[Y>>0]|0;if((W&255)<<24>>24!=(a[((V&1)==0?H:c[z>>2]|0)>>0]|0)){a[l>>0]=1;W=f;break b}X=c[e>>2]|0;W=X+12|0;V=c[W>>2]|0;if((V|0)==(c[X+16>>2]|0))md[c[(c[X>>2]|0)+40>>2]&127](X)|0;else c[W>>2]=V+1;V=a[t>>0]|0;if(!(V&1))V=(V&255)>>>1;else V=c[K>>2]|0;W=f;R=V>>>0>1?t:R}break};case 4:{Y=f;X=f;V=0;e:while(1){W=c[e>>2]|0;do if(W){if((c[W+12>>2]|0)==(c[W+16>>2]|0))if((md[c[(c[W>>2]|0)+36>>2]&127](W)|0)==-1){c[e>>2]=0;W=0;break}else{W=c[e>>2]|0;break}}else W=0;while(0);Z=(W|0)==0;do if(X){if((c[X+12>>2]|0)!=(c[X+16>>2]|0))if(Z){W=Y;break}else{W=Y;break e}if((md[c[(c[X>>2]|0)+36>>2]&127](X)|0)!=-1)if(Z^(Y|0)==0){W=Y;X=Y}else{W=Y;break e}else{W=0;f=0;y=231}}else{W=Y;y=231}while(0);if((y|0)==231){y=0;if(Z)break;else X=0}Y=c[e>>2]|0;Z=c[Y+12>>2]|0;if((Z|0)==(c[Y+16>>2]|0))Z=md[c[(c[Y>>2]|0)+36>>2]&127](Y)|0;else Z=d[Z>>0]|0;Y=Z&255;if(Y<<24>>24>-1?(b[(c[L>>2]|0)+(Z<<24>>24<<1)>>1]&2048)!=0:0){Z=c[o>>2]|0;if((Z|0)==(c[B>>2]|0)){fn(n,o,B);Z=c[o>>2]|0}c[o>>2]=Z+1;a[Z>>0]=Y;V=V+1|0}else{Z=a[u>>0]|0;if(!(Z&1))Z=(Z&255)>>>1;else Z=c[O>>2]|0;if(!((V|0)!=0&(Z|0)!=0&Y<<24>>24==G<<24>>24))break;if((U|0)==(c[D>>2]|0)){gn(q,E,D);U=c[E>>2]|0}aa=U+4|0;c[E>>2]=aa;c[U>>2]=V;U=aa;V=0}Z=c[e>>2]|0;_=Z+12|0;Y=c[_>>2]|0;if((Y|0)==(c[Z+16>>2]|0)){md[c[(c[Z>>2]|0)+40>>2]&127](Z)|0;Y=W;continue}else{c[_>>2]=Y+1;Y=W;continue}}if(!((V|0)==0?1:(c[q>>2]|0)==(U|0))){if((U|0)==(c[D>>2]|0)){gn(q,E,D);U=c[E>>2]|0}aa=U+4|0;c[E>>2]=aa;c[U>>2]=V;U=aa}if((T|0)>0){V=c[e>>2]|0;do if(V){if((c[V+12>>2]|0)==(c[V+16>>2]|0))if((md[c[(c[V>>2]|0)+36>>2]&127](V)|0)==-1){c[e>>2]=0;V=0;break}else{V=c[e>>2]|0;break}}else V=0;while(0);V=(V|0)==0;do if(W){if((c[W+12>>2]|0)!=(c[W+16>>2]|0))if(V)break;else{y=276;break a}if((md[c[(c[W>>2]|0)+36>>2]&127](W)|0)!=-1){if(!V){y=276;break a}}else{f=0;y=270}}else y=270;while(0);if((y|0)==270){y=0;if(V){y=276;break a}else W=0}V=c[e>>2]|0;X=c[V+12>>2]|0;if((X|0)==(c[V+16>>2]|0))V=md[c[(c[V>>2]|0)+36>>2]&127](V)|0;else V=d[X>>0]|0;if((V&255)<<24>>24!=F<<24>>24){y=276;break a}Y=c[e>>2]|0;X=Y+12|0;V=c[X>>2]|0;if((V|0)==(c[Y+16>>2]|0)){md[c[(c[Y>>2]|0)+40>>2]&127](Y)|0;X=W;V=W}else{c[X>>2]=V+1;X=W;V=W}while(1){W=c[e>>2]|0;do if(W){if((c[W+12>>2]|0)==(c[W+16>>2]|0))if((md[c[(c[W>>2]|0)+36>>2]&127](W)|0)==-1){c[e>>2]=0;W=0;break}else{W=c[e>>2]|0;break}}else W=0;while(0);Y=(W|0)==0;do if(V){if((c[V+12>>2]|0)!=(c[V+16>>2]|0))if(Y){W=X;break}else{y=298;break a}if((md[c[(c[V>>2]|0)+36>>2]&127](V)|0)!=-1)if(Y^(X|0)==0){W=X;V=X}else{y=298;break a}else{W=0;f=0;y=291}}else{W=X;y=291}while(0);if((y|0)==291){y=0;if(Y){y=298;break a}else V=0}X=c[e>>2]|0;Y=c[X+12>>2]|0;if((Y|0)==(c[X+16>>2]|0))X=md[c[(c[X>>2]|0)+36>>2]&127](X)|0;else X=d[Y>>0]|0;if((X&255)<<24>>24<=-1){y=298;break a}if(!(b[(c[L>>2]|0)+(X<<24>>24<<1)>>1]&2048)){y=298;break a}if((c[o>>2]|0)==(c[B>>2]|0))fn(n,o,B);Y=c[e>>2]|0;X=c[Y+12>>2]|0;if((X|0)==(c[Y+16>>2]|0))X=md[c[(c[Y>>2]|0)+36>>2]&127](Y)|0;else X=d[X>>0]|0;Y=c[o>>2]|0;c[o>>2]=Y+1;a[Y>>0]=X;T=T+ -1|0;X=c[e>>2]|0;Y=X+12|0;Z=c[Y>>2]|0;if((Z|0)==(c[X+16>>2]|0))md[c[(c[X>>2]|0)+40>>2]&127](X)|0;else c[Y>>2]=Z+1;if((T|0)>0)X=W;else break}}if((c[o>>2]|0)==(c[n>>2]|0)){y=309;break a}break};case 0:{y=78;break};case 1:{if((S|0)==3){y=311;break a}y=c[e>>2]|0;V=c[y+12>>2]|0;if((V|0)==(c[y+16>>2]|0))y=md[c[(c[y>>2]|0)+36>>2]&127](y)|0;else y=d[V>>0]|0;if((y&255)<<24>>24<=-1){y=77;break a}if(!(b[(c[L>>2]|0)+(y<<24>>24<<1)>>1]&8192)){y=77;break a}V=c[e>>2]|0;y=V+12|0;W=c[y>>2]|0;if((W|0)==(c[V+16>>2]|0))y=md[c[(c[V>>2]|0)+40>>2]&127](V)|0;else{c[y>>2]=W+1;y=d[W>>0]|0}Mi(s,y&255);y=78;break};default:W=f}while(0);f:do if((y|0)==78){y=0;if((S|0)==3){y=311;break a}else{W=f;X=f}while(1){V=c[e>>2]|0;do if(V){if((c[V+12>>2]|0)==(c[V+16>>2]|0))if((md[c[(c[V>>2]|0)+36>>2]&127](V)|0)==-1){c[e>>2]=0;V=0;break}else{V=c[e>>2]|0;break}}else V=0;while(0);V=(V|0)==0;do if(X){if((c[X+12>>2]|0)!=(c[X+16>>2]|0))if(V){V=W;break}else break f;if((md[c[(c[X>>2]|0)+36>>2]&127](X)|0)!=-1)if(V^(W|0)==0){V=W;X=W}else break f;else{W=0;f=0;y=90}}else y=90;while(0);if((y|0)==90){y=0;if(V)break f;else{V=W;X=0}}Y=c[e>>2]|0;W=c[Y+12>>2]|0;if((W|0)==(c[Y+16>>2]|0))W=md[c[(c[Y>>2]|0)+36>>2]&127](Y)|0;else W=d[W>>0]|0;if((W&255)<<24>>24<=-1){W=V;break f}if(!(b[(c[L>>2]|0)+(W<<24>>24<<1)>>1]&8192)){W=V;break f}W=c[e>>2]|0;Z=W+12|0;Y=c[Z>>2]|0;if((Y|0)==(c[W+16>>2]|0))W=md[c[(c[W>>2]|0)+40>>2]&127](W)|0;else{c[Z>>2]=Y+1;W=d[Y>>0]|0}Mi(s,W&255);W=V}}while(0);S=S+1|0;if(S>>>0>=4){f=W;y=311;break}}g:do if((y|0)==77){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==168){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==219){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==276){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==298){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==309){c[k>>2]=c[k>>2]|4;k=0}else if((y|0)==311){h:do if(R){B=R+1|0;C=R+8|0;D=R+4|0;n=f;E=f;l=1;i:while(1){o=a[R>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=c[D>>2]|0;if(l>>>0>=o>>>0)break h;o=c[e>>2]|0;do if(o){if((c[o+12>>2]|0)==(c[o+16>>2]|0))if((md[c[(c[o>>2]|0)+36>>2]&127](o)|0)==-1){c[e>>2]=0;o=0;break}else{o=c[e>>2]|0;break}}else o=0;while(0);F=(o|0)==0;do if(E){if((c[E+12>>2]|0)!=(c[E+16>>2]|0))if(F){o=n;break}else break i;if((md[c[(c[E>>2]|0)+36>>2]&127](E)|0)!=-1)if(F^(n|0)==0){o=n;E=n}else break i;else{o=0;y=328}}else{o=n;y=328}while(0);if((y|0)==328){y=0;if(F)break;else E=0}n=c[e>>2]|0;F=c[n+12>>2]|0;if((F|0)==(c[n+16>>2]|0))n=md[c[(c[n>>2]|0)+36>>2]&127](n)|0;else n=d[F>>0]|0;if(!(a[R>>0]&1))F=B;else F=c[C>>2]|0;if((n&255)<<24>>24!=(a[F+l>>0]|0))break;l=l+1|0;G=c[e>>2]|0;F=G+12|0;n=c[F>>2]|0;if((n|0)==(c[G+16>>2]|0)){md[c[(c[G>>2]|0)+40>>2]&127](G)|0;n=o;continue}else{c[F>>2]=n+1;n=o;continue}}c[k>>2]=c[k>>2]|4;k=0;break g}while(0);e=c[q>>2]|0;if((e|0)!=(U|0)?(c[x>>2]=0,hn(u,e,U,x),(c[x>>2]|0)!=0):0){c[k>>2]=c[k>>2]|4;k=0}else k=1}while(0);if(a[s>>0]&1)Uq(c[j>>2]|0);if(a[v>>0]&1)Uq(c[m>>2]|0);if(a[t>>0]&1)Uq(c[z>>2]|0);if(a[w>>0]&1)Uq(c[A>>2]|0);if(a[u>>0]&1)Uq(c[u+8>>2]|0);s=c[q>>2]|0;c[q>>2]=0;if(!s){i=r;return k|0}jd[c[p>>2]&255](s);i=r;return k|0}function dn(a){a=a|0;var b=0,d=0,e=0;b=Wb(8)|0;c[b>>2]=27520;e=mr(a|0)|0;d=$p(e+13|0)|0;c[d>>2]=e;c[d+4>>2]=e;c[d+8>>2]=0;d=d+12|0;nr(d|0,a|0,e+1|0)|0;c[b+4>>2]=d;Zc(b|0,27720,224)}function en(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=i;i=i+128|0;u=d+20|0;n=d+8|0;q=d;s=d+16|0;c[n>>2]=u;l=n+4|0;c[l>>2]=243;p=c[h+28>>2]|0;r=p+4|0;c[r>>2]=(c[r>>2]|0)+1;r=Sn(p,19072)|0;a[s>>0]=0;o=c[f>>2]|0;do if(cn(e,o,g,p,c[h+4>>2]|0,j,s,r,n,q,u+100|0)|0){if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}if(a[s>>0]|0)Mi(k,vd[c[(c[r>>2]|0)+28>>2]&63](r,45)|0);g=vd[c[(c[r>>2]|0)+28>>2]&63](r,48)|0;r=c[n>>2]|0;q=c[q>>2]|0;h=q+ -1|0;a:do if(r>>>0>>0)while(1){s=r+1|0;if((a[r>>0]|0)!=g<<24>>24)break a;if(s>>>0>>0)r=s;else{r=s;break}}while(0);t=r;g=a[k>>0]|0;if(!(g&1)){s=g;u=10;g=(g&255)>>>1}else{u=c[k>>2]|0;s=u&255;u=(u&-2)+ -1|0;g=c[k+4>>2]|0}h=q-t|0;if((q|0)!=(r|0)){if((u-g|0)>>>0>>0){Pi(k,u,g+h-u|0,g,g,0);s=a[k>>0]|0}if(!(s&1))s=k+1|0;else s=c[k+8>>2]|0;t=q+(g-t)|0;u=s+g|0;while(1){a[u>>0]=a[r>>0]|0;r=r+1|0;if((r|0)==(q|0))break;u=u+1|0}a[s+t>>0]=0;q=g+h|0;if(!(a[k>>0]&1)){a[k>>0]=q<<1;break}else{c[k+4>>2]=q;break}}}while(0);k=c[e>>2]|0;if(k){if((c[k+12>>2]|0)==(c[k+16>>2]|0)?(md[c[(c[k>>2]|0)+36>>2]&127](k)|0)==-1:0){c[e>>2]=0;k=0}}else k=0;e=(k|0)==0;do if(o){if((c[o+12>>2]|0)!=(c[o+16>>2]|0))if(e)break;else{m=43;break}if((md[c[(c[o>>2]|0)+36>>2]&127](o)|0)!=-1)if(e)break;else{m=43;break}else{c[f>>2]=0;m=41;break}}else m=41;while(0);if((m|0)==41?e:0)m=43;if((m|0)==43)c[j>>2]=c[j>>2]|2;c[b>>2]=k;t=p+4|0;u=c[t>>2]|0;c[t>>2]=u+ -1;if(!u)jd[c[(c[p>>2]|0)+8>>2]&255](p);b=c[n>>2]|0;c[n>>2]=0;if(!b){i=d;return}jd[c[l>>2]&255](b);i=d;return}function fn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;f=a+4|0;k=(c[f>>2]|0)!=243;j=c[a>>2]|0;g=j;h=(c[d>>2]|0)-g|0;h=h>>>0<2147483647?h<<1:-1;g=(c[b>>2]|0)-g|0;j=Vq(k?j:0,h)|0;if(!j){k=Wb(4)|0;c[k>>2]=27280;Zc(k|0,27328,220)}if(!k){k=c[a>>2]|0;c[a>>2]=j;if(k){jd[c[f>>2]&255](k);j=c[a>>2]|0}}else c[a>>2]=j;c[f>>2]=244;c[b>>2]=j+g;c[d>>2]=(c[a>>2]|0)+h;i=e;return}function gn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;g=i;h=a+4|0;j=(c[h>>2]|0)!=243;k=c[a>>2]|0;e=k;f=(c[d>>2]|0)-e|0;f=f>>>0<2147483647?f<<1:-1;e=(c[b>>2]|0)-e>>2;if(!j)k=0;k=Vq(k,f)|0;if(!k){k=Wb(4)|0;c[k>>2]=27280;Zc(k|0,27328,220)}if(!j){j=c[a>>2]|0;c[a>>2]=k;if(j){jd[c[h>>2]&255](j);k=c[a>>2]|0}}else c[a>>2]=k;c[h>>2]=244;c[b>>2]=k+(e<<2);c[d>>2]=(c[a>>2]|0)+(f>>>2<<2);i=g;return}function hn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;k=a[b>>0]|0;if(!(k&1))j=(k&255)>>>1;else j=c[b+4>>2]|0;if(!j){i=g;return}if((d|0)!=(e|0)?(h=e+ -4|0,h>>>0>d>>>0):0){j=d;do{k=c[j>>2]|0;c[j>>2]=c[h>>2];c[h>>2]=k;j=j+4|0;h=h+ -4|0}while(j>>>0>>0);k=a[b>>0]|0}if(!(k&1)){h=b+1|0;b=(k&255)>>>1}else{h=c[b+8>>2]|0;b=c[b+4>>2]|0}e=e+ -4|0;k=a[h>>0]|0;j=k<<24>>24<1|k<<24>>24==127;a:do if(e>>>0>d>>>0){b=h+b|0;while(1){if(!j?(k<<24>>24|0)!=(c[d>>2]|0):0)break;h=(b-h|0)>1?h+1|0:h;d=d+4|0;k=a[h>>0]|0;j=k<<24>>24<1|k<<24>>24==127;if(d>>>0>=e>>>0)break a}c[f>>2]=4;i=g;return}while(0);if(j){i=g;return}j=c[e>>2]|0;if(!(k<<24>>24>>>0>>0|(j|0)==0)){i=g;return}c[f>>2]=4;i=g;return}function jn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function kn(a){a=a|0;return}function ln(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;n=i;i=i+576|0;q=n;x=n+16|0;m=n+8|0;r=n+456|0;t=n+560|0;s=n+416|0;p=n+460|0;c[m>>2]=x;d=m+4|0;c[d>>2]=243;o=c[h+28>>2]|0;u=o+4|0;c[u>>2]=(c[u>>2]|0)+1;u=Sn(o,19064)|0;a[t>>0]=0;if(mn(e,c[f>>2]|0,g,o,c[h+4>>2]|0,j,t,u,m,r,x+400|0)|0){sd[c[(c[u>>2]|0)+48>>2]&7](u,18784,18794,s)|0;u=c[r>>2]|0;g=c[m>>2]|0;h=u-g|0;if((h|0)>392){v=Tq((h>>2)+2|0)|0;if(!v){x=Wb(4)|0;c[x>>2]=27280;Zc(x|0,27328,220)}else h=v}else{h=0;v=p}if(a[t>>0]|0){a[v>>0]=45;v=v+1|0}if(g>>>0>>0){t=s+40|0;u=s;do{x=c[g>>2]|0;w=s;while(1){if((c[w>>2]|0)==(x|0))break;w=w+4|0;if((w|0)==(t|0)){w=t;break}}a[v>>0]=a[18784+(w-u>>2)>>0]|0;g=g+4|0;v=v+1|0}while(g>>>0<(c[r>>2]|0)>>>0)}a[v>>0]=0;c[q>>2]=k;if((Up(p,18720,q)|0)!=1)dn(18728);Uq(h)}k=c[e>>2]|0;if(k){p=c[k+12>>2]|0;if((p|0)==(c[k+16>>2]|0))p=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else p=c[p>>2]|0;if((p|0)==-1){c[e>>2]=0;e=0;k=1}else{e=k;k=0}}else{e=0;k=1}p=c[f>>2]|0;do if(p){q=c[p+12>>2]|0;if((q|0)==(c[p+16>>2]|0))p=md[c[(c[p>>2]|0)+36>>2]&127](p)|0;else p=c[q>>2]|0;if((p|0)!=-1)if(k)break;else{l=34;break}else{c[f>>2]=0;l=32;break}}else l=32;while(0);if((l|0)==32?k:0)l=34;if((l|0)==34)c[j>>2]=c[j>>2]|2;c[b>>2]=e;w=o+4|0;x=c[w>>2]|0;c[w>>2]=x+ -1;if(!x)jd[c[(c[o>>2]|0)+8>>2]&255](o);f=c[m>>2]|0;c[m>>2]=0;if(!f){i=n;return}jd[c[d>>2]&255](f);i=n;return}function mn(b,e,f,g,h,j,k,l,m,n,o){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;p=i;i=i+592|0;L=p+76|0;I=p+112|0;G=p;z=p+176|0;y=p+64|0;F=p+24|0;K=p+28|0;J=p+124|0;H=p+148|0;A=p+164|0;C=p+188|0;P=p+192|0;q=p+80|0;E=p+88|0;D=p+104|0;B=p+108|0;s=p+92|0;r=p+40|0;t=p+136|0;u=p+12|0;v=p+52|0;w=p+160|0;c[C>>2]=o;c[q>>2]=P;o=q+4|0;c[o>>2]=243;c[E>>2]=P;c[D>>2]=P+400;c[B>>2]=0;c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;if(f){A=Sn(g,18656)|0;kd[c[(c[A>>2]|0)+44>>2]&63](L,A);c[B>>2]=c[L>>2];kd[c[(c[A>>2]|0)+32>>2]&63](I,A);if(!(a[u>>0]&1)){c[u+4>>2]=0;a[u>>0]=0}else{c[c[u+8>>2]>>2]=0;c[u+4>>2]=0}Wi(u);c[u+0>>2]=c[I+0>>2];c[u+4>>2]=c[I+4>>2];c[u+8>>2]=c[I+8>>2];c[I+0>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;kd[c[(c[A>>2]|0)+28>>2]&63](G,A);if(!(a[t>>0]&1)){c[t+4>>2]=0;a[t>>0]=0}else{c[c[t+8>>2]>>2]=0;c[t+4>>2]=0}Wi(t);c[t+0>>2]=c[G+0>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[G+0>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;F=md[c[(c[A>>2]|0)+12>>2]&127](A)|0;G=md[c[(c[A>>2]|0)+16>>2]&127](A)|0;kd[c[(c[A>>2]|0)+20>>2]&63](z,A);if(!(a[s>>0]&1)){a[s+1>>0]=0;a[s>>0]=0}else{a[c[s+8>>2]>>0]=0;c[s+4>>2]=0}Li(s);c[s+0>>2]=c[z+0>>2];c[s+4>>2]=c[z+4>>2];c[s+8>>2]=c[z+8>>2];c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;kd[c[(c[A>>2]|0)+24>>2]&63](y,A);if(!(a[r>>0]&1)){c[r+4>>2]=0;a[r>>0]=0}else{c[c[r+8>>2]>>2]=0;c[r+4>>2]=0}Wi(r);c[r+0>>2]=c[y+0>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[y+0>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;O=md[c[(c[A>>2]|0)+36>>2]&127](A)|0}else{y=Sn(g,18592)|0;kd[c[(c[y>>2]|0)+44>>2]&63](F,y);c[B>>2]=c[F>>2];kd[c[(c[y>>2]|0)+32>>2]&63](K,y);if(!(a[u>>0]&1)){c[u+4>>2]=0;a[u>>0]=0}else{c[c[u+8>>2]>>2]=0;c[u+4>>2]=0}Wi(u);c[u+0>>2]=c[K+0>>2];c[u+4>>2]=c[K+4>>2];c[u+8>>2]=c[K+8>>2];c[K+0>>2]=0;c[K+4>>2]=0;c[K+8>>2]=0;kd[c[(c[y>>2]|0)+28>>2]&63](J,y);if(!(a[t>>0]&1)){c[t+4>>2]=0;a[t>>0]=0}else{c[c[t+8>>2]>>2]=0;c[t+4>>2]=0}Wi(t);c[t+0>>2]=c[J+0>>2];c[t+4>>2]=c[J+4>>2];c[t+8>>2]=c[J+8>>2];c[J+0>>2]=0;c[J+4>>2]=0;c[J+8>>2]=0;F=md[c[(c[y>>2]|0)+12>>2]&127](y)|0;G=md[c[(c[y>>2]|0)+16>>2]&127](y)|0;kd[c[(c[y>>2]|0)+20>>2]&63](H,y);if(!(a[s>>0]&1)){a[s+1>>0]=0;a[s>>0]=0}else{a[c[s+8>>2]>>0]=0;c[s+4>>2]=0}Li(s);c[s+0>>2]=c[H+0>>2];c[s+4>>2]=c[H+4>>2];c[s+8>>2]=c[H+8>>2];c[H+0>>2]=0;c[H+4>>2]=0;c[H+8>>2]=0;kd[c[(c[y>>2]|0)+24>>2]&63](A,y);if(!(a[r>>0]&1)){c[r+4>>2]=0;a[r>>0]=0}else{c[c[r+8>>2]>>2]=0;c[r+4>>2]=0}Wi(r);c[r+0>>2]=c[A+0>>2];c[r+4>>2]=c[A+4>>2];c[r+8>>2]=c[A+8>>2];c[A+0>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;O=md[c[(c[y>>2]|0)+36>>2]&127](y)|0}c[n>>2]=c[m>>2];H=u+4|0;z=u+8|0;I=t+4|0;y=t+8|0;L=(h&512|0)!=0;f=r+4|0;A=r+8|0;K=v+4|0;h=v+8|0;J=B+3|0;g=s+4|0;N=0;M=0;a:while(1){R=c[b>>2]|0;do if(R){Q=c[R+12>>2]|0;if((Q|0)==(c[R+16>>2]|0))Q=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else Q=c[Q>>2]|0;if((Q|0)==-1){c[b>>2]=0;Q=1;break}else{Q=(c[b>>2]|0)==0;break}}else Q=1;while(0);if(e){R=c[e+12>>2]|0;if((R|0)==(c[e+16>>2]|0))R=md[c[(c[e>>2]|0)+36>>2]&127](e)|0;else R=c[R>>2]|0;if((R|0)!=-1){if(!Q){x=322;break}}else x=65}else x=65;if((x|0)==65){x=0;if(Q){e=0;x=322;break}else e=0}b:do switch(a[B+N>>0]|0){case 2:{if(!((M|0)!=0|N>>>0<2)){if((N|0)==2)Q=(a[J>>0]|0)!=0;else Q=0;if(!(L|Q)){R=e;M=0;break b}}T=a[r>>0]|0;Q=(T&1)==0?f:c[A>>2]|0;c:do if((N|0)!=0?(d[B+(N+ -1)>>0]|0)<2:0){while(1){if(!(T&1)){R=f;S=(T&255)>>>1}else{R=c[A>>2]|0;S=c[f>>2]|0}if((Q|0)==(R+(S<<2)|0))break;if(!(fd[c[(c[l>>2]|0)+12>>2]&31](l,8192,c[Q>>2]|0)|0)){x=184;break}T=a[r>>0]|0;Q=Q+4|0}if((x|0)==184){x=0;T=a[r>>0]|0}S=(T&1)==0?f:c[A>>2]|0;R=Q-S>>2;U=a[v>>0]|0;V=(U&1)==0;if(V)W=(U&255)>>>1;else W=c[K>>2]|0;if(R>>>0<=W>>>0){if(V){U=(U&255)>>>1;W=K;V=U;U=K+(U-R<<2)|0}else{X=c[h>>2]|0;U=c[K>>2]|0;W=X;V=U;U=X+(U-R<<2)|0}R=W+(V<<2)|0;if((U|0)==(R|0)){R=e;S=e}else{V=U;U=S;while(1){if((c[V>>2]|0)!=(c[U>>2]|0)){R=e;Q=S;S=e;break c}V=V+4|0;if((V|0)==(R|0)){R=e;S=e;break c}U=U+4|0}}}else{R=e;Q=S;S=e}}else{R=e;S=e}while(0);while(1){if(!(T&1)){U=f;T=(T&255)>>>1}else{U=c[A>>2]|0;T=c[f>>2]|0}if((Q|0)==(U+(T<<2)|0))break;T=c[b>>2]|0;do if(T){U=c[T+12>>2]|0;if((U|0)==(c[T+16>>2]|0))T=md[c[(c[T>>2]|0)+36>>2]&127](T)|0;else T=c[U>>2]|0;if((T|0)==-1){c[b>>2]=0;T=1;break}else{T=(c[b>>2]|0)==0;break}}else T=1;while(0);if(S){U=c[S+12>>2]|0;if((U|0)==(c[S+16>>2]|0))S=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else S=c[U>>2]|0;if((S|0)!=-1)if(T^(R|0)==0){T=R;S=R}else break;else{R=0;e=0;x=212}}else x=212;if((x|0)==212){x=0;if(T)break;else{T=R;S=0}}R=c[b>>2]|0;U=c[R+12>>2]|0;if((U|0)==(c[R+16>>2]|0))R=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else R=c[U>>2]|0;if((R|0)!=(c[Q>>2]|0)){R=T;break}V=c[b>>2]|0;U=V+12|0;R=c[U>>2]|0;if((R|0)==(c[V+16>>2]|0))md[c[(c[V>>2]|0)+40>>2]&127](V)|0;else c[U>>2]=R+4;R=T;T=a[r>>0]|0;Q=Q+4|0}if(L){T=a[r>>0]|0;if(!(T&1)){S=f;T=(T&255)>>>1}else{S=c[A>>2]|0;T=c[f>>2]|0}if((Q|0)!=(S+(T<<2)|0)){x=227;break a}}break};case 4:{R=e;T=e;Q=0;while(1){U=c[b>>2]|0;do if(U){S=c[U+12>>2]|0;if((S|0)==(c[U+16>>2]|0))S=md[c[(c[U>>2]|0)+36>>2]&127](U)|0;else S=c[S>>2]|0;if((S|0)==-1){c[b>>2]=0;S=1;break}else{S=(c[b>>2]|0)==0;break}}else S=1;while(0);if(T){U=c[T+12>>2]|0;if((U|0)==(c[T+16>>2]|0))T=md[c[(c[T>>2]|0)+36>>2]&127](T)|0;else T=c[U>>2]|0;if((T|0)!=-1)if(S^(R|0)==0){S=R;T=R}else break;else{R=0;e=0;x=240}}else x=240;if((x|0)==240){x=0;if(S)break;else{S=R;T=0}}R=c[b>>2]|0;U=c[R+12>>2]|0;if((U|0)==(c[R+16>>2]|0))R=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else R=c[U>>2]|0;if(fd[c[(c[l>>2]|0)+12>>2]&31](l,2048,R)|0){U=c[n>>2]|0;if((U|0)==(c[C>>2]|0)){on(m,n,C);U=c[n>>2]|0}c[n>>2]=U+4;c[U>>2]=R;Q=Q+1|0}else{U=a[s>>0]|0;if(!(U&1))U=(U&255)>>>1;else U=c[g>>2]|0;if(!((Q|0)!=0&(U|0)!=0&(R|0)==(G|0))){R=S;break}if((P|0)==(c[D>>2]|0)){gn(q,E,D);P=c[E>>2]|0}X=P+4|0;c[E>>2]=X;c[P>>2]=Q;P=X;Q=0}R=c[b>>2]|0;U=R+12|0;V=c[U>>2]|0;if((V|0)==(c[R+16>>2]|0)){md[c[(c[R>>2]|0)+40>>2]&127](R)|0;R=S;continue}else{c[U>>2]=V+4;R=S;continue}}if(!((Q|0)==0?1:(c[q>>2]|0)==(P|0))){if((P|0)==(c[D>>2]|0)){gn(q,E,D);P=c[E>>2]|0}X=P+4|0;c[E>>2]=X;c[P>>2]=Q;P=X}if((O|0)>0){S=c[b>>2]|0;do if(S){Q=c[S+12>>2]|0;if((Q|0)==(c[S+16>>2]|0))Q=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else Q=c[Q>>2]|0;if((Q|0)==-1){c[b>>2]=0;Q=1;break}else{Q=(c[b>>2]|0)==0;break}}else Q=1;while(0);if(R){S=c[R+12>>2]|0;if((S|0)==(c[R+16>>2]|0))S=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else S=c[S>>2]|0;if((S|0)!=-1){if(!Q){x=286;break a}}else{e=0;x=280}}else x=280;if((x|0)==280){x=0;if(Q){x=286;break a}else R=0}S=c[b>>2]|0;Q=c[S+12>>2]|0;if((Q|0)==(c[S+16>>2]|0))Q=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else Q=c[Q>>2]|0;if((Q|0)!=(F|0)){x=286;break a}T=c[b>>2]|0;S=T+12|0;Q=c[S>>2]|0;if((Q|0)==(c[T+16>>2]|0)){md[c[(c[T>>2]|0)+40>>2]&127](T)|0;Q=R;S=R}else{c[S>>2]=Q+4;Q=R;S=R}while(1){R=c[b>>2]|0;do if(R){T=c[R+12>>2]|0;if((T|0)==(c[R+16>>2]|0))R=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else R=c[T>>2]|0;if((R|0)==-1){c[b>>2]=0;T=1;break}else{T=(c[b>>2]|0)==0;break}}else T=1;while(0);if(S){R=c[S+12>>2]|0;if((R|0)==(c[S+16>>2]|0))R=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else R=c[R>>2]|0;if((R|0)!=-1)if(T^(Q|0)==0){R=Q;S=Q}else{x=309;break a}else{R=0;e=0;x=302}}else{R=Q;x=302}if((x|0)==302){x=0;if(T){x=309;break a}else S=0}Q=c[b>>2]|0;T=c[Q+12>>2]|0;if((T|0)==(c[Q+16>>2]|0))Q=md[c[(c[Q>>2]|0)+36>>2]&127](Q)|0;else Q=c[T>>2]|0;if(!(fd[c[(c[l>>2]|0)+12>>2]&31](l,2048,Q)|0)){x=309;break a}if((c[n>>2]|0)==(c[C>>2]|0))on(m,n,C);Q=c[b>>2]|0;T=c[Q+12>>2]|0;if((T|0)==(c[Q+16>>2]|0))Q=md[c[(c[Q>>2]|0)+36>>2]&127](Q)|0;else Q=c[T>>2]|0;U=c[n>>2]|0;c[n>>2]=U+4;c[U>>2]=Q;O=O+ -1|0;Q=c[b>>2]|0;U=Q+12|0;T=c[U>>2]|0;if((T|0)==(c[Q+16>>2]|0))md[c[(c[Q>>2]|0)+40>>2]&127](Q)|0;else c[U>>2]=T+4;if((O|0)>0)Q=R;else break}}if((c[n>>2]|0)==(c[m>>2]|0)){x=320;break a}break};case 0:{x=79;break};case 1:{if((N|0)==3){x=322;break a}x=c[b>>2]|0;Q=c[x+12>>2]|0;if((Q|0)==(c[x+16>>2]|0))x=md[c[(c[x>>2]|0)+36>>2]&127](x)|0;else x=c[Q>>2]|0;if(!(fd[c[(c[l>>2]|0)+12>>2]&31](l,8192,x)|0)){x=78;break a}x=c[b>>2]|0;R=x+12|0;Q=c[R>>2]|0;if((Q|0)==(c[x+16>>2]|0))x=md[c[(c[x>>2]|0)+40>>2]&127](x)|0;else{c[R>>2]=Q+4;x=c[Q>>2]|0}Xi(v,x);x=79;break};case 3:{Q=a[t>>0]|0;S=(Q&1)==0;if(S)U=(Q&255)>>>1;else U=c[I>>2]|0;R=a[u>>0]|0;T=(R&1)==0;if(T)V=(R&255)>>>1;else V=c[H>>2]|0;if((U|0)==(0-V|0))R=e;else{if(S)U=(Q&255)>>>1;else U=c[I>>2]|0;if(U){if(T)T=(R&255)>>>1;else T=c[H>>2]|0;if(T){S=c[b>>2]|0;T=c[S+12>>2]|0;U=c[S+16>>2]|0;if((T|0)==(U|0)){R=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;U=c[b>>2]|0;Q=a[t>>0]|0;S=U;T=c[U+12>>2]|0;U=c[U+16>>2]|0}else R=c[T>>2]|0;V=S+12|0;U=(T|0)==(U|0);if((R|0)==(c[((Q&1)==0?I:c[y>>2]|0)>>2]|0)){if(U)md[c[(c[S>>2]|0)+40>>2]&127](S)|0;else c[V>>2]=T+4;Q=a[t>>0]|0;if(!(Q&1))Q=(Q&255)>>>1;else Q=c[I>>2]|0;R=e;M=Q>>>0>1?t:M;break b}if(U)Q=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else Q=c[T>>2]|0;if((Q|0)!=(c[((a[u>>0]&1)==0?H:c[z>>2]|0)>>2]|0)){x=170;break a}Q=c[b>>2]|0;R=Q+12|0;S=c[R>>2]|0;if((S|0)==(c[Q+16>>2]|0))md[c[(c[Q>>2]|0)+40>>2]&127](Q)|0;else c[R>>2]=S+4;a[k>>0]=1;Q=a[u>>0]|0;if(!(Q&1))Q=(Q&255)>>>1;else Q=c[H>>2]|0;R=e;M=Q>>>0>1?u:M;break b}}if(S)V=(Q&255)>>>1;else V=c[I>>2]|0;T=c[b>>2]|0;S=c[T+12>>2]|0;U=(S|0)==(c[T+16>>2]|0);if(!V){if(U){Q=md[c[(c[T>>2]|0)+36>>2]&127](T)|0;R=a[u>>0]|0}else Q=c[S>>2]|0;if((Q|0)!=(c[((R&1)==0?H:c[z>>2]|0)>>2]|0)){R=e;break b}Q=c[b>>2]|0;R=Q+12|0;S=c[R>>2]|0;if((S|0)==(c[Q+16>>2]|0))md[c[(c[Q>>2]|0)+40>>2]&127](Q)|0;else c[R>>2]=S+4;a[k>>0]=1;Q=a[u>>0]|0;if(!(Q&1))Q=(Q&255)>>>1;else Q=c[H>>2]|0;R=e;M=Q>>>0>1?u:M;break b}if(U){R=md[c[(c[T>>2]|0)+36>>2]&127](T)|0;Q=a[t>>0]|0}else R=c[S>>2]|0;if((R|0)!=(c[((Q&1)==0?I:c[y>>2]|0)>>2]|0)){a[k>>0]=1;R=e;break b}S=c[b>>2]|0;R=S+12|0;Q=c[R>>2]|0;if((Q|0)==(c[S+16>>2]|0))md[c[(c[S>>2]|0)+40>>2]&127](S)|0;else c[R>>2]=Q+4;Q=a[t>>0]|0;if(!(Q&1))Q=(Q&255)>>>1;else Q=c[I>>2]|0;R=e;M=Q>>>0>1?t:M}break};default:R=e}while(0);d:do if((x|0)==79){x=0;if((N|0)==3){x=322;break a}else{R=e;S=e}while(1){T=c[b>>2]|0;do if(T){Q=c[T+12>>2]|0;if((Q|0)==(c[T+16>>2]|0))Q=md[c[(c[T>>2]|0)+36>>2]&127](T)|0;else Q=c[Q>>2]|0;if((Q|0)==-1){c[b>>2]=0;Q=1;break}else{Q=(c[b>>2]|0)==0;break}}else Q=1;while(0);if(S){T=c[S+12>>2]|0;if((T|0)==(c[S+16>>2]|0))S=md[c[(c[S>>2]|0)+36>>2]&127](S)|0;else S=c[T>>2]|0;if((S|0)!=-1)if(Q^(R|0)==0){Q=R;S=R}else break d;else{R=0;e=0;x=92}}else x=92;if((x|0)==92){x=0;if(Q)break d;else{Q=R;S=0}}R=c[b>>2]|0;T=c[R+12>>2]|0;if((T|0)==(c[R+16>>2]|0))R=md[c[(c[R>>2]|0)+36>>2]&127](R)|0;else R=c[T>>2]|0;if(!(fd[c[(c[l>>2]|0)+12>>2]&31](l,8192,R)|0)){R=Q;break d}T=c[b>>2]|0;U=T+12|0;R=c[U>>2]|0;if((R|0)==(c[T+16>>2]|0))R=md[c[(c[T>>2]|0)+40>>2]&127](T)|0;else{c[U>>2]=R+4;R=c[R>>2]|0}Xi(v,R);R=Q}}while(0);N=N+1|0;if(N>>>0>=4){e=R;x=322;break}}e:do if((x|0)==78){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==170){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==227){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==286){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==309){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==320){c[j>>2]=c[j>>2]|4;w=0}else if((x|0)==322){f:do if(M){l=M+4|0;B=M+8|0;n=e;m=e;C=1;while(1){k=a[M>>0]|0;if(!(k&1))k=(k&255)>>>1;else k=c[l>>2]|0;if(C>>>0>=k>>>0)break f;k=c[b>>2]|0;do if(k){D=c[k+12>>2]|0;if((D|0)==(c[k+16>>2]|0))k=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else k=c[D>>2]|0;if((k|0)==-1){c[b>>2]=0;k=1;break}else{k=(c[b>>2]|0)==0;break}}else k=1;while(0);if(m){D=c[m+12>>2]|0;if((D|0)==(c[m+16>>2]|0))m=md[c[(c[m>>2]|0)+36>>2]&127](m)|0;else m=c[D>>2]|0;if((m|0)!=-1)if(k^(n|0)==0){k=n;m=n}else break;else{n=0;x=340}}else x=340;if((x|0)==340){x=0;if(k)break;else{k=n;m=0}}n=c[b>>2]|0;D=c[n+12>>2]|0;if((D|0)==(c[n+16>>2]|0))D=md[c[(c[n>>2]|0)+36>>2]&127](n)|0;else D=c[D>>2]|0;if(!(a[M>>0]&1))n=l;else n=c[B>>2]|0;if((D|0)!=(c[n+(C<<2)>>2]|0))break;C=C+1|0;E=c[b>>2]|0;n=E+12|0;D=c[n>>2]|0;if((D|0)==(c[E+16>>2]|0)){md[c[(c[E>>2]|0)+40>>2]&127](E)|0;n=k;continue}else{c[n>>2]=D+4;n=k;continue}}c[j>>2]=c[j>>2]|4;w=0;break e}while(0);b=c[q>>2]|0;if((b|0)!=(P|0)?(c[w>>2]=0,hn(s,b,P,w),(c[w>>2]|0)!=0):0){c[j>>2]=c[j>>2]|4;w=0}else w=1}while(0);if(a[v>>0]&1)Uq(c[h>>2]|0);if(a[u>>0]&1)Uq(c[z>>2]|0);if(a[t>>0]&1)Uq(c[y>>2]|0);if(a[r>>0]&1)Uq(c[A>>2]|0);if(a[s>>0]&1)Uq(c[s+8>>2]|0);r=c[q>>2]|0;c[q>>2]=0;if(!r){i=p;return w|0}jd[c[o>>2]&255](r);i=p;return w|0}function nn(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=i;i=i+432|0;v=d+16|0;n=d+8|0;q=d;s=d+416|0;c[n>>2]=v;m=n+4|0;c[m>>2]=243;o=c[h+28>>2]|0;r=o+4|0;c[r>>2]=(c[r>>2]|0)+1;r=Sn(o,19064)|0;a[s>>0]=0;p=c[f>>2]|0;do if(mn(e,p,g,o,c[h+4>>2]|0,j,s,r,n,q,v+400|0)|0){if(!(a[k>>0]&1)){c[k+4>>2]=0;a[k>>0]=0}else{c[c[k+8>>2]>>2]=0;c[k+4>>2]=0}if(a[s>>0]|0)Xi(k,vd[c[(c[r>>2]|0)+44>>2]&63](r,45)|0);h=vd[c[(c[r>>2]|0)+44>>2]&63](r,48)|0;s=c[n>>2]|0;q=c[q>>2]|0;r=q+ -4|0;a:do if(s>>>0>>0)while(1){g=s+4|0;if((c[s>>2]|0)!=(h|0))break a;if(g>>>0>>0)s=g;else{s=g;break}}while(0);t=s;h=a[k>>0]|0;if(!(h&1)){u=h;v=1;h=(h&255)>>>1}else{v=c[k>>2]|0;u=v&255;v=(v&-2)+ -1|0;h=c[k+4>>2]|0}g=q-t>>2;if(g){if((v-h|0)>>>0>>0){Yi(k,v,h+g-v|0,h,h,0,0);u=a[k>>0]|0}if(!(u&1))u=k+4|0;else u=c[k+8>>2]|0;v=u+(h<<2)|0;if((s|0)!=(q|0)){r=h+((r+(0-t)|0)>>>2)+1|0;while(1){c[v>>2]=c[s>>2];s=s+4|0;if((s|0)==(q|0))break;v=v+4|0}v=u+(r<<2)|0}c[v>>2]=0;q=h+g|0;if(!(a[k>>0]&1)){a[k>>0]=q<<1;break}else{c[k+4>>2]=q;break}}}while(0);k=c[e>>2]|0;if(k){q=c[k+12>>2]|0;if((q|0)==(c[k+16>>2]|0))q=md[c[(c[k>>2]|0)+36>>2]&127](k)|0;else q=c[q>>2]|0;if((q|0)==-1){c[e>>2]=0;k=0;e=1}else e=0}else{k=0;e=1}do if(p){q=c[p+12>>2]|0;if((q|0)==(c[p+16>>2]|0))p=md[c[(c[p>>2]|0)+36>>2]&127](p)|0;else p=c[q>>2]|0;if((p|0)!=-1)if(e)break;else{l=46;break}else{c[f>>2]=0;l=44;break}}else l=44;while(0);if((l|0)==44?e:0)l=46;if((l|0)==46)c[j>>2]=c[j>>2]|2;c[b>>2]=k;u=o+4|0;v=c[u>>2]|0;c[u>>2]=v+ -1;if(!v)jd[c[(c[o>>2]|0)+8>>2]&255](o);j=c[n>>2]|0;c[n>>2]=0;if(!j){i=d;return}jd[c[m>>2]&255](j);i=d;return}function on(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;g=i;h=a+4|0;j=(c[h>>2]|0)!=243;k=c[a>>2]|0;e=k;f=(c[d>>2]|0)-e|0;f=f>>>0<2147483647?f<<1:-1;e=(c[b>>2]|0)-e>>2;if(!j)k=0;k=Vq(k,f)|0;if(!k){k=Wb(4)|0;c[k>>2]=27280;Zc(k|0,27328,220)}if(!j){j=c[a>>2]|0;c[a>>2]=k;if(j){jd[c[h>>2]&255](j);k=c[a>>2]|0}}else c[a>>2]=k;c[h>>2]=244;c[b>>2]=k+(e<<2);c[d>>2]=(c[a>>2]|0)+(f>>>2<<2);i=g;return}function pn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function qn(a){a=a|0;return}function rn(b,d,e,f,g,j,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=+l;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;p=i;i=i+368|0;v=p;A=p+156|0;B=p+132|0;x=p+256|0;t=p+148|0;s=p+356|0;d=p+357|0;q=p+136|0;m=p+104|0;n=p+116|0;C=p+100|0;r=p+128|0;o=p+152|0;c[B>>2]=A;h[k>>3]=l;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];A=dr(A,100,18840,v)|0;if(A>>>0>99){A=Dk()|0;h[k>>3]=l;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];A=jl(B,A,18840,v)|0;w=c[B>>2]|0;if(!w){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}x=Tq(A)|0;if(!x){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}else u=x}else{u=0;w=0}y=c[g+28>>2]|0;z=y+4|0;c[z>>2]=(c[z>>2]|0)+1;z=Sn(y,19072)|0;B=c[B>>2]|0;sd[c[(c[z>>2]|0)+32>>2]&7](z,B,B+A|0,x)|0;if(!A)B=0;else B=(a[B>>0]|0)==45;c[t>>2]=0;c[q+0>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;sn(f,B,y,t,s,d,q,m,n,C);f=c[C>>2]|0;if((A|0)>(f|0)){C=a[n>>0]|0;if(!(C&1))C=(C&255)>>>1;else C=c[n+4>>2]|0;D=a[m>>0]|0;if(!(D&1))D=(D&255)>>>1;else D=c[m+4>>2]|0;C=C+(A-f<<1|1)+D|0}else{C=a[n>>0]|0;if(!(C&1))C=(C&255)>>>1;else C=c[n+4>>2]|0;D=a[m>>0]|0;if(!(D&1))D=(D&255)>>>1;else D=c[m+4>>2]|0;C=C+2+D|0}C=C+f|0;if(C>>>0>100){v=Tq(C)|0;if(!v){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}else C=v}else C=0;tn(v,r,o,c[g+4>>2]|0,x,x+A|0,z,B,t,a[s>>0]|0,a[d>>0]|0,q,m,n,f);Sg(b,c[e>>2]|0,v,c[r>>2]|0,c[o>>2]|0,g,j);Uq(C);if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(a[m>>0]&1)Uq(c[m+8>>2]|0);if(a[q>>0]&1)Uq(c[q+8>>2]|0);C=y+4|0;D=c[C>>2]|0;c[C>>2]=D+ -1;if(D){Uq(u);Uq(w);i=p;return}jd[c[(c[y>>2]|0)+8>>2]&255](y);Uq(u);Uq(w);i=p;return}function sn(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;n=i;i=i+112|0;w=n;v=n+16|0;y=n+92|0;x=n+40|0;u=n+80|0;s=n+96|0;q=n+108|0;p=n+56|0;t=n+52|0;r=n+28|0;o=n+4|0;z=n+68|0;if(b){o=Sn(e,18528)|0;p=c[o>>2]|0;if(d){kd[c[p+44>>2]&63](w,o);b=c[w>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[o>>2]|0)+32>>2]&63](v,o);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}Li(l);c[l+0>>2]=c[v+0>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0}else{kd[c[p+40>>2]&63](y,o);b=c[y>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[o>>2]|0)+28>>2]&63](x,o);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}Li(l);c[l+0>>2]=c[x+0>>2];c[l+4>>2]=c[x+4>>2];c[l+8>>2]=c[x+8>>2];c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0}a[g>>0]=md[c[(c[o>>2]|0)+12>>2]&127](o)|0;a[h>>0]=md[c[(c[o>>2]|0)+16>>2]&127](o)|0;kd[c[(c[o>>2]|0)+20>>2]&63](u,o);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}Li(j);c[j+0>>2]=c[u+0>>2];c[j+4>>2]=c[u+4>>2];c[j+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;kd[c[(c[o>>2]|0)+24>>2]&63](s,o);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}Li(k);c[k+0>>2]=c[s+0>>2];c[k+4>>2]=c[s+4>>2];c[k+8>>2]=c[s+8>>2];c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;b=md[c[(c[o>>2]|0)+36>>2]&127](o)|0;c[m>>2]=b;i=n;return}else{s=Sn(e,18464)|0;u=c[s>>2]|0;if(d){kd[c[u+44>>2]&63](q,s);b=c[q>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[s>>2]|0)+32>>2]&63](p,s);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}Li(l);c[l+0>>2]=c[p+0>>2];c[l+4>>2]=c[p+4>>2];c[l+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0}else{kd[c[u+40>>2]&63](t,s);b=c[t>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[s>>2]|0)+28>>2]&63](r,s);if(!(a[l>>0]&1)){a[l+1>>0]=0;a[l>>0]=0}else{a[c[l+8>>2]>>0]=0;c[l+4>>2]=0}Li(l);c[l+0>>2]=c[r+0>>2];c[l+4>>2]=c[r+4>>2];c[l+8>>2]=c[r+8>>2];c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0}a[g>>0]=md[c[(c[s>>2]|0)+12>>2]&127](s)|0;a[h>>0]=md[c[(c[s>>2]|0)+16>>2]&127](s)|0;kd[c[(c[s>>2]|0)+20>>2]&63](o,s);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}Li(j);c[j+0>>2]=c[o+0>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;kd[c[(c[s>>2]|0)+24>>2]&63](z,s);if(!(a[k>>0]&1)){a[k+1>>0]=0;a[k>>0]=0}else{a[c[k+8>>2]>>0]=0;c[k+4>>2]=0}Li(k);c[k+0>>2]=c[z+0>>2];c[k+4>>2]=c[z+4>>2];c[k+8>>2]=c[z+8>>2];c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=md[c[(c[s>>2]|0)+36>>2]&127](s)|0;c[m>>2]=b;i=n;return}}function tn(d,e,f,g,h,j,k,l,m,n,o,p,q,r,s){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;s=s|0;var t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;t=i;c[f>>2]=d;v=r+1|0;w=r+8|0;u=r+4|0;A=(g&512|0)==0;x=q+1|0;y=q+8|0;z=q+4|0;B=(s|0)>0;C=p+1|0;E=p+8|0;H=p+4|0;D=k+8|0;I=0-s|0;J=0;do{switch(a[m+J>>0]|0){case 4:{K=c[f>>2]|0;h=l?h+1|0:h;a:do if(h>>>0>>0){L=h;while(1){M=a[L>>0]|0;if(M<<24>>24<=-1)break a;N=L+1|0;if(!(b[(c[D>>2]|0)+(M<<24>>24<<1)>>1]&2048))break a;if(N>>>0>>0)L=N;else{L=N;break}}}else L=h;while(0);M=L;if(B){if(L>>>0>h>>>0){N=h+(0-M)|0;N=N>>>0>>0?I:N;M=N+s|0;Q=K;P=L;O=s;while(1){P=P+ -1|0;R=a[P>>0]|0;c[f>>2]=Q+1;a[Q>>0]=R;O=O+ -1|0;Q=(O|0)>0;if(!(P>>>0>h>>>0&Q))break;Q=c[f>>2]|0}L=L+N|0;if(Q)F=32;else N=0}else{M=s;F=32}if((F|0)==32){F=0;N=vd[c[(c[k>>2]|0)+28>>2]&63](k,48)|0}O=c[f>>2]|0;c[f>>2]=O+1;if((M|0)>0)do{a[O>>0]=N;M=M+ -1|0;O=c[f>>2]|0;c[f>>2]=O+1}while((M|0)>0);a[O>>0]=n}if((L|0)==(h|0)){Q=vd[c[(c[k>>2]|0)+28>>2]&63](k,48)|0;R=c[f>>2]|0;c[f>>2]=R+1;a[R>>0]=Q}else{N=a[p>>0]|0;M=(N&1)==0;if(M)N=(N&255)>>>1;else N=c[H>>2]|0;if(!N){M=-1;N=0;O=0}else{if(M)M=C;else M=c[E>>2]|0;M=a[M>>0]|0;N=0;O=0}while(1){if((O|0)==(M|0)){P=c[f>>2]|0;c[f>>2]=P+1;a[P>>0]=o;N=N+1|0;P=a[p>>0]|0;O=(P&1)==0;if(O)P=(P&255)>>>1;else P=c[H>>2]|0;if(N>>>0

        >>0){if(O)M=C;else M=c[E>>2]|0;if((a[M+N>>0]|0)==127){M=-1;O=0}else{if(O)M=C;else M=c[E>>2]|0;M=a[M+N>>0]|0;O=0}}else O=0}L=L+ -1|0;Q=a[L>>0]|0;R=c[f>>2]|0;c[f>>2]=R+1;a[R>>0]=Q;if((L|0)==(h|0))break;else O=O+1|0}}L=c[f>>2]|0;if((K|0)!=(L|0)?(G=L+ -1|0,G>>>0>K>>>0):0){L=G;do{R=a[K>>0]|0;a[K>>0]=a[L>>0]|0;a[L>>0]=R;K=K+1|0;L=L+ -1|0}while(K>>>0>>0)}break};case 1:{c[e>>2]=c[f>>2];Q=vd[c[(c[k>>2]|0)+28>>2]&63](k,32)|0;R=c[f>>2]|0;c[f>>2]=R+1;a[R>>0]=Q;break};case 3:{L=a[r>>0]|0;K=(L&1)==0;if(K)L=(L&255)>>>1;else L=c[u>>2]|0;if(L){if(K)K=v;else K=c[w>>2]|0;Q=a[K>>0]|0;R=c[f>>2]|0;c[f>>2]=R+1;a[R>>0]=Q}break};case 2:{L=a[q>>0]|0;K=(L&1)==0;if(K)M=(L&255)>>>1;else M=c[z>>2]|0;if(!((M|0)==0|A)){if(K){K=x;L=(L&255)>>>1}else{K=c[y>>2]|0;L=c[z>>2]|0}L=K+L|0;M=c[f>>2]|0;if((K|0)!=(L|0))do{a[M>>0]=a[K>>0]|0;K=K+1|0;M=M+1|0}while((K|0)!=(L|0));c[f>>2]=M}break};case 0:{c[e>>2]=c[f>>2];break};default:{}}J=J+1|0}while((J|0)!=4);o=a[r>>0]|0;x=(o&1)==0;if(x)y=(o&255)>>>1;else y=c[u>>2]|0;if(y>>>0>1){if(x)u=(o&255)>>>1;else{v=c[w>>2]|0;u=c[u>>2]|0}w=v+1|0;u=v+u|0;v=c[f>>2]|0;if((w|0)!=(u|0))do{a[v>>0]=a[w>>0]|0;w=w+1|0;v=v+1|0}while((w|0)!=(u|0));c[f>>2]=v}g=g&176;if((g|0)==32){c[e>>2]=c[f>>2];i=t;return}else if((g|0)==16){i=t;return}else{c[e>>2]=d;i=t;return}}function un(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;q=i;i=i+160|0;s=q;k=q+52|0;r=q+53|0;l=q+16|0;m=q+4|0;n=q+40|0;w=q+36|0;u=q+56|0;p=q+28|0;t=q+32|0;o=c[g+28>>2]|0;d=o+4|0;c[d>>2]=(c[d>>2]|0)+1;d=Sn(o,19072)|0;x=a[j>>0]|0;v=(x&1)==0;if(v)x=(x&255)>>>1;else x=c[j+4>>2]|0;if(!x)v=0;else{if(v)v=j+1|0;else v=c[j+8>>2]|0;v=a[v>>0]|0;v=v<<24>>24==(vd[c[(c[d>>2]|0)+28>>2]&63](d,45)|0)<<24>>24}c[s>>2]=0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;sn(f,v,o,s,k,r,l,m,n,w);f=a[j>>0]|0;x=(f&1)==0;if(x)y=(f&255)>>>1;else y=c[j+4>>2]|0;w=c[w>>2]|0;if((y|0)>(w|0)){if(x)y=(f&255)>>>1;else y=c[j+4>>2]|0;z=a[n>>0]|0;if(!(z&1))z=(z&255)>>>1;else z=c[n+4>>2]|0;A=a[m>>0]|0;if(!(A&1))A=(A&255)>>>1;else A=c[m+4>>2]|0;y=z+(y-w<<1|1)+A|0}else{y=a[n>>0]|0;if(!(y&1))y=(y&255)>>>1;else y=c[n+4>>2]|0;z=a[m>>0]|0;if(!(z&1))z=(z&255)>>>1;else z=c[m+4>>2]|0;y=y+2+z|0}y=y+w|0;if(y>>>0>100){u=Tq(y)|0;if(!u){A=Wb(4)|0;c[A>>2]=27280;Zc(A|0,27328,220)}else y=u}else y=0;if(x){x=j+1|0;j=(f&255)>>>1}else{x=c[j+8>>2]|0;j=c[j+4>>2]|0}tn(u,p,t,c[g+4>>2]|0,x,x+j|0,d,v,s,a[k>>0]|0,a[r>>0]|0,l,m,n,w);Sg(b,c[e>>2]|0,u,c[p>>2]|0,c[t>>2]|0,g,h);Uq(y);if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(a[m>>0]&1)Uq(c[m+8>>2]|0);if(a[l>>0]&1)Uq(c[l+8>>2]|0);z=o+4|0;A=c[z>>2]|0;c[z>>2]=A+ -1;if(A){i=q;return}jd[c[(c[o>>2]|0)+8>>2]&255](o);i=q;return}function vn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function wn(a){a=a|0;return}function xn(b,d,e,f,g,j,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;j=j|0;l=+l;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;p=i;i=i+976|0;v=p;A=p+868|0;B=p+816|0;x=p+416|0;q=p+408|0;m=p+860|0;n=p+400|0;r=p+824|0;o=p+836|0;t=p+848|0;C=p+820|0;s=p+404|0;d=p+864|0;c[B>>2]=A;h[k>>3]=l;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];A=dr(A,100,18840,v)|0;if(A>>>0>99){A=Dk()|0;h[k>>3]=l;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];A=jl(B,A,18840,v)|0;w=c[B>>2]|0;if(!w){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}x=Tq(A<<2)|0;if(!x){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}else u=x}else{u=0;w=0}z=c[g+28>>2]|0;y=z+4|0;c[y>>2]=(c[y>>2]|0)+1;y=Sn(z,19064)|0;B=c[B>>2]|0;sd[c[(c[y>>2]|0)+48>>2]&7](y,B,B+A|0,x)|0;if(!A)B=0;else B=(a[B>>0]|0)==45;c[q>>2]=0;c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;yn(f,B,z,q,m,n,r,o,t,C);f=c[C>>2]|0;if((A|0)>(f|0)){C=a[t>>0]|0;if(!(C&1))C=(C&255)>>>1;else C=c[t+4>>2]|0;D=a[o>>0]|0;if(!(D&1))D=(D&255)>>>1;else D=c[o+4>>2]|0;C=C+(A-f<<1|1)+D|0}else{C=a[t>>0]|0;if(!(C&1))C=(C&255)>>>1;else C=c[t+4>>2]|0;D=a[o>>0]|0;if(!(D&1))D=(D&255)>>>1;else D=c[o+4>>2]|0;C=C+2+D|0}C=C+f|0;if(C>>>0>100){v=Tq(C<<2)|0;if(!v){D=Wb(4)|0;c[D>>2]=27280;Zc(D|0,27328,220)}else C=v}else C=0;zn(v,s,d,c[g+4>>2]|0,x,x+(A<<2)|0,y,B,q,c[m>>2]|0,c[n>>2]|0,r,o,t,f);sl(b,c[e>>2]|0,v,c[s>>2]|0,c[d>>2]|0,g,j);if(C)Uq(C);if(a[t>>0]&1)Uq(c[t+8>>2]|0);if(a[o>>0]&1)Uq(c[o+8>>2]|0);if(a[r>>0]&1)Uq(c[r+8>>2]|0);C=z+4|0;D=c[C>>2]|0;c[C>>2]=D+ -1;if(!D)jd[c[(c[z>>2]|0)+8>>2]&255](z);if(!u){Uq(w);i=p;return}Uq(u);Uq(w);i=p;return}function yn(b,d,e,f,g,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;n=i;i=i+112|0;w=n;v=n+16|0;y=n+92|0;x=n+40|0;u=n+80|0;s=n+96|0;q=n+108|0;p=n+56|0;t=n+52|0;r=n+28|0;o=n+4|0;z=n+68|0;if(b){o=Sn(e,18656)|0;p=c[o>>2]|0;if(d){kd[c[p+44>>2]&63](w,o);b=c[w>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[o>>2]|0)+32>>2]&63](v,o);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}Wi(l);c[l+0>>2]=c[v+0>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[v+0>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0}else{kd[c[p+40>>2]&63](y,o);b=c[y>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[o>>2]|0)+28>>2]&63](x,o);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}Wi(l);c[l+0>>2]=c[x+0>>2];c[l+4>>2]=c[x+4>>2];c[l+8>>2]=c[x+8>>2];c[x+0>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0}c[g>>2]=md[c[(c[o>>2]|0)+12>>2]&127](o)|0;c[h>>2]=md[c[(c[o>>2]|0)+16>>2]&127](o)|0;kd[c[(c[o>>2]|0)+20>>2]&63](u,o);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}Li(j);c[j+0>>2]=c[u+0>>2];c[j+4>>2]=c[u+4>>2];c[j+8>>2]=c[u+8>>2];c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;kd[c[(c[o>>2]|0)+24>>2]&63](s,o);if(!(a[k>>0]&1)){c[k+4>>2]=0;a[k>>0]=0}else{c[c[k+8>>2]>>2]=0;c[k+4>>2]=0}Wi(k);c[k+0>>2]=c[s+0>>2];c[k+4>>2]=c[s+4>>2];c[k+8>>2]=c[s+8>>2];c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;b=md[c[(c[o>>2]|0)+36>>2]&127](o)|0;c[m>>2]=b;i=n;return}else{s=Sn(e,18592)|0;u=c[s>>2]|0;if(d){kd[c[u+44>>2]&63](q,s);b=c[q>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[s>>2]|0)+32>>2]&63](p,s);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}Wi(l);c[l+0>>2]=c[p+0>>2];c[l+4>>2]=c[p+4>>2];c[l+8>>2]=c[p+8>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0}else{kd[c[u+40>>2]&63](t,s);b=c[t>>2]|0;a[f>>0]=b;a[f+1>>0]=b>>8;a[f+2>>0]=b>>16;a[f+3>>0]=b>>24;kd[c[(c[s>>2]|0)+28>>2]&63](r,s);if(!(a[l>>0]&1)){c[l+4>>2]=0;a[l>>0]=0}else{c[c[l+8>>2]>>2]=0;c[l+4>>2]=0}Wi(l);c[l+0>>2]=c[r+0>>2];c[l+4>>2]=c[r+4>>2];c[l+8>>2]=c[r+8>>2];c[r+0>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0}c[g>>2]=md[c[(c[s>>2]|0)+12>>2]&127](s)|0;c[h>>2]=md[c[(c[s>>2]|0)+16>>2]&127](s)|0;kd[c[(c[s>>2]|0)+20>>2]&63](o,s);if(!(a[j>>0]&1)){a[j+1>>0]=0;a[j>>0]=0}else{a[c[j+8>>2]>>0]=0;c[j+4>>2]=0}Li(j);c[j+0>>2]=c[o+0>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[o+0>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;kd[c[(c[s>>2]|0)+24>>2]&63](z,s);if(!(a[k>>0]&1)){c[k+4>>2]=0;a[k>>0]=0}else{c[c[k+8>>2]>>2]=0;c[k+4>>2]=0}Wi(k);c[k+0>>2]=c[z+0>>2];c[k+4>>2]=c[z+4>>2];c[k+8>>2]=c[z+8>>2];c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;b=md[c[(c[s>>2]|0)+36>>2]&127](s)|0;c[m>>2]=b;i=n;return}}function zn(b,d,e,f,g,h,j,k,l,m,n,o,p,q,r){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;s=i;c[e>>2]=b;t=q+4|0;u=q+8|0;x=(f&512|0)==0;w=p+4|0;A=p+8|0;v=(r|0)>0;y=o+1|0;C=o+8|0;D=o+4|0;E=0;do{switch(a[l+E>>0]|0){case 2:{F=a[p>>0]|0;H=(F&1)==0;if(H)G=(F&255)>>>1;else G=c[w>>2]|0;if(!((G|0)==0|x)){if(H){H=w;I=(F&255)>>>1}else{H=c[A>>2]|0;I=c[w>>2]|0}G=H+(I<<2)|0;F=c[e>>2]|0;if((H|0)!=(G|0)){J=(H+(I+ -1<<2)+(0-H)|0)>>>2;I=F;while(1){c[I>>2]=c[H>>2];H=H+4|0;if((H|0)==(G|0))break;I=I+4|0}F=F+(J+1<<2)|0}c[e>>2]=F}break};case 0:{c[d>>2]=c[e>>2];break};case 3:{G=a[q>>0]|0;F=(G&1)==0;if(F)G=(G&255)>>>1;else G=c[t>>2]|0;if(G){if(F)F=t;else F=c[u>>2]|0;L=c[F>>2]|0;M=c[e>>2]|0;c[e>>2]=M+4;c[M>>2]=L}break};case 4:{F=c[e>>2]|0;g=k?g+4|0:g;a:do if(g>>>0>>0){G=g;while(1){H=G+4|0;if(!(fd[c[(c[j>>2]|0)+12>>2]&31](j,2048,c[G>>2]|0)|0))break a;if(H>>>0>>0)G=H;else{G=H;break}}}else G=g;while(0);if(v){if(G>>>0>g>>>0){H=c[e>>2]|0;I=r;while(1){G=G+ -4|0;K=H+4|0;c[H>>2]=c[G>>2];I=I+ -1|0;J=(I|0)>0;if(!(G>>>0>g>>>0&J))break;else H=K}c[e>>2]=K;if(J)z=34;else c[e>>2]=H+8}else{I=r;z=34}if((z|0)==34){z=0;J=vd[c[(c[j>>2]|0)+44>>2]&63](j,48)|0;K=c[e>>2]|0;M=K+4|0;c[e>>2]=M;if((I|0)>0){H=K;L=I;while(1){c[H>>2]=J;L=L+ -1|0;if((L|0)<=0)break;else{H=M;M=M+4|0}}c[e>>2]=K+(I+1<<2);K=K+(I<<2)|0}}c[K>>2]=m}if((G|0)==(g|0)){K=vd[c[(c[j>>2]|0)+44>>2]&63](j,48)|0;M=c[e>>2]|0;L=M+4|0;c[e>>2]=L;c[M>>2]=K}else{I=a[o>>0]|0;H=(I&1)==0;if(H)I=(I&255)>>>1;else I=c[D>>2]|0;if(!I)H=-1;else{if(H)H=y;else H=c[C>>2]|0;H=a[H>>0]|0}I=c[e>>2]|0;K=0;J=0;while(1){if((J|0)==(H|0)){J=I+4|0;c[e>>2]=J;c[I>>2]=n;K=K+1|0;L=a[o>>0]|0;I=(L&1)==0;if(I)L=(L&255)>>>1;else L=c[D>>2]|0;if(K>>>0>>0){if(I)H=y;else H=c[C>>2]|0;if((a[H+K>>0]|0)==127){I=J;H=-1;J=0}else{if(I)H=y;else H=c[C>>2]|0;I=J;H=a[H+K>>0]|0;J=0}}else{I=J;J=0}}G=G+ -4|0;M=c[G>>2]|0;L=I+4|0;c[e>>2]=L;c[I>>2]=M;if((G|0)==(g|0))break;else{I=L;J=J+1|0}}}if((F|0)!=(L|0)?(B=L+ -4|0,B>>>0>F>>>0):0){G=B;do{M=c[F>>2]|0;c[F>>2]=c[G>>2];c[G>>2]=M;F=F+4|0;G=G+ -4|0}while(F>>>0>>0)}break};case 1:{c[d>>2]=c[e>>2];L=vd[c[(c[j>>2]|0)+44>>2]&63](j,32)|0;M=c[e>>2]|0;c[e>>2]=M+4;c[M>>2]=L;break};default:{}}E=E+1|0}while((E|0)!=4);v=a[q>>0]|0;h=(v&1)==0;if(h)q=(v&255)>>>1;else q=c[t>>2]|0;if(q>>>0>1){if(h){h=t;q=(v&255)>>>1}else{h=c[u>>2]|0;q=c[t>>2]|0}v=h+4|0;u=h+(q<<2)|0;t=c[e>>2]|0;if((v|0)!=(u|0)){q=(h+(q+ -1<<2)+(0-v)|0)>>>2;h=t;while(1){c[h>>2]=c[v>>2];v=v+4|0;if((v|0)==(u|0))break;else h=h+4|0}t=t+(q+1<<2)|0}c[e>>2]=t}f=f&176;if((f|0)==16){i=s;return}else if((f|0)==32){c[d>>2]=c[e>>2];i=s;return}else{c[d>>2]=b;i=s;return}}function An(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;q=i;i=i+464|0;s=q;k=q+24|0;r=q+432|0;l=q+4|0;m=q+436|0;n=q+448|0;w=q+20|0;u=q+32|0;p=q+28|0;t=q+16|0;o=c[g+28>>2]|0;d=o+4|0;c[d>>2]=(c[d>>2]|0)+1;d=Sn(o,19064)|0;x=a[j>>0]|0;v=(x&1)==0;if(v)x=(x&255)>>>1;else x=c[j+4>>2]|0;if(!x)v=0;else{if(v)v=j+4|0;else v=c[j+8>>2]|0;v=c[v>>2]|0;v=(v|0)==(vd[c[(c[d>>2]|0)+44>>2]&63](d,45)|0)}c[s>>2]=0;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;yn(f,v,o,s,k,r,l,m,n,w);f=a[j>>0]|0;x=(f&1)==0;if(x)y=(f&255)>>>1;else y=c[j+4>>2]|0;w=c[w>>2]|0;if((y|0)>(w|0)){if(x)y=(f&255)>>>1;else y=c[j+4>>2]|0;z=a[n>>0]|0;if(!(z&1))z=(z&255)>>>1;else z=c[n+4>>2]|0;A=a[m>>0]|0;if(!(A&1))A=(A&255)>>>1;else A=c[m+4>>2]|0;y=z+(y-w<<1|1)+A|0}else{y=a[n>>0]|0;if(!(y&1))y=(y&255)>>>1;else y=c[n+4>>2]|0;z=a[m>>0]|0;if(!(z&1))z=(z&255)>>>1;else z=c[m+4>>2]|0;y=y+2+z|0}y=y+w|0;if(y>>>0>100){u=Tq(y<<2)|0;if(!u){A=Wb(4)|0;c[A>>2]=27280;Zc(A|0,27328,220)}else y=u}else y=0;if(x){x=j+4|0;j=(f&255)>>>1}else{x=c[j+8>>2]|0;j=c[j+4>>2]|0}zn(u,p,t,c[g+4>>2]|0,x,x+(j<<2)|0,d,v,s,c[k>>2]|0,c[r>>2]|0,l,m,n,w);sl(b,c[e>>2]|0,u,c[p>>2]|0,c[t>>2]|0,g,h);if(y)Uq(y);if(a[n>>0]&1)Uq(c[n+8>>2]|0);if(a[m>>0]&1)Uq(c[m+8>>2]|0);if(a[l>>0]&1)Uq(c[l+8>>2]|0);z=o+4|0;A=c[z>>2]|0;c[z>>2]=A+ -1;if(A){i=q;return}jd[c[(c[o>>2]|0)+8>>2]&255](o);i=q;return}function Bn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Cn(a){a=a|0;return}function Dn(b,d,e){b=b|0;d=d|0;e=e|0;b=i;if(!(a[d>>0]&1))d=d+1|0;else d=c[d+8>>2]|0;e=Nb(d|0,1)|0;i=b;return e>>>((e|0)!=(-1|0)&1)|0}function En(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;d=i;i=i+16|0;j=d;c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;m=a[h>>0]|0;if(!(m&1)){l=h+1|0;h=(m&255)>>>1}else{l=c[h+8>>2]|0;h=c[h+4>>2]|0}h=l+h|0;if(l>>>0>>0){do{Mi(j,a[l>>0]|0);l=l+1|0}while((l|0)!=(h|0));e=(e|0)==-1?-1:e<<1;if(!(a[j>>0]&1))k=10;else l=c[j+8>>2]|0}else{e=(e|0)==-1?-1:e<<1;k=10}if((k|0)==10)l=j+1|0;g=Fc(e|0,f|0,g|0,l|0)|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;m=mr(g|0)|0;f=g+m|0;if((m|0)>0)do{Mi(b,a[g>>0]|0);g=g+1|0}while((g|0)!=(f|0));if(!(a[j>>0]&1)){i=d;return}Uq(c[j+8>>2]|0);i=d;return}function Fn(a,b){a=a|0;b=b|0;a=i;gb(((b|0)==-1?-1:b<<1)|0)|0;i=a;return}function Gn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Hn(a){a=a|0;return}function In(b,d,e){b=b|0;d=d|0;e=e|0;b=i;if(!(a[d>>0]&1))d=d+1|0;else d=c[d+8>>2]|0;e=Nb(d|0,1)|0;i=b;return e>>>((e|0)!=(-1|0)&1)|0}function Jn(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;n=i;i=i+176|0;o=n;l=n+40|0;k=n+168|0;j=n+172|0;m=n+16|0;r=n+8|0;d=n+32|0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[r+4>>2]=0;c[r>>2]=20688;s=a[h>>0]|0;if(!(s&1)){t=h+4|0;h=(s&255)>>>1}else{t=c[h+8>>2]|0;h=c[h+4>>2]|0}h=t+(h<<2)|0;u=o;c[u>>2]=0;c[u+4>>2]=0;do if(t>>>0>>0){s=l+32|0;u=20688|0;while(1){c[j>>2]=t;v=(rd[c[u+12>>2]&15](r,o,t,h,j,l,s,k)|0)==2;u=c[j>>2]|0;if(v|(u|0)==(t|0))break;if(l>>>0<(c[k>>2]|0)>>>0){t=l;do{Mi(m,a[t>>0]|0);t=t+1|0}while(t>>>0<(c[k>>2]|0)>>>0);t=c[j>>2]|0}else t=u;if(t>>>0>=h>>>0){p=16;break}u=c[r>>2]|0}if((p|0)==16){q=(a[m>>0]&1)==0;break}dn(19912)}else q=1;while(0);if(q)p=m+1|0;else p=c[m+8>>2]|0;p=Fc(((e|0)==-1?-1:e<<1)|0,f|0,g|0,p|0)|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[d+4>>2]=0;c[d>>2]=20792;v=mr(p|0)|0;e=p+v|0;u=o;c[u>>2]=0;c[u+4>>2]=0;a:do if((v|0)>0){g=e;f=l+128|0;q=20792|0;while(1){c[j>>2]=p;v=(rd[c[q+16>>2]&15](d,o,p,(g-p|0)>32?p+32|0:e,j,l,f,k)|0)==2;q=c[j>>2]|0;if(v|(q|0)==(p|0))break;if(l>>>0<(c[k>>2]|0)>>>0){p=l;do{Xi(b,c[p>>2]|0);p=p+4|0}while(p>>>0<(c[k>>2]|0)>>>0);p=c[j>>2]|0}else p=q;if(p>>>0>=e>>>0)break a;q=c[d>>2]|0}dn(19912)}while(0);if(!(a[m>>0]&1)){i=n;return}Uq(c[m+8>>2]|0);i=n;return}function Kn(a,b){a=a|0;b=b|0;a=i;gb(((b|0)==-1?-1:b<<1)|0)|0;i=a;return}function Ln(a){a=a|0;var b=0,d=0;b=i;c[a>>2]=19160;a=a+8|0;d=c[a>>2]|0;if((d|0)==(Dk()|0)){i=b;return}ub(c[a>>2]|0);i=b;return}function Mn(){var b=0,d=0,e=0;b=Wb(8)|0;c[b>>2]=27496;e=$p(19)|0;d=b+4|0;c[e>>2]=6;c[e+4>>2]=6;c[e+8>>2]=0;e=e+12|0;a[e+0>>0]=a[18968]|0;a[e+1>>0]=a[18969]|0;a[e+2>>0]=a[18970]|0;a[e+3>>0]=a[18971]|0;a[e+4>>0]=a[18972]|0;a[e+5>>0]=a[18973]|0;a[e+6>>0]=a[18974]|0;c[d>>2]=e;c[b>>2]=27576;Zc(b|0,27616,222)}function Nn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=i;i=i+16|0;j=f;h=d+4|0;c[h>>2]=(c[h>>2]|0)+1;h=b+12|0;m=c[h>>2]|0;g=b+8|0;k=c[g>>2]|0;r=m;q=k;l=r-q>>2;do if(l>>>0<=e>>>0){p=e+1|0;if(l>>>0>=p>>>0){if(l>>>0<=p>>>0)break;j=k+(p<<2)|0;if((m|0)==(j|0))break;c[h>>2]=m+(~((m+ -4+(0-j)|0)>>>2)<<2);break}o=p-l|0;k=b+16|0;s=c[k>>2]|0;do if(s-r>>2>>>0>>0){m=b+24|0;if(p>>>0>1073741823)Mn();q=s-q|0;if(q>>2>>>0<536870911){q=q>>1;q=q>>>0

        >>0?p:q;c[j>>2]=0;if(q){p=b+136|0;if((a[p>>0]|0)==0&q>>>0<29){a[p>>0]=1;p=m}else{p=q;n=15}}else{q=0;p=0}}else{c[j>>2]=0;p=1073741823;n=15}if((n|0)==15){q=p;p=$p(p<<2)|0}c[j>>2]=p+(q<<2);n=p+(l<<2)|0;do{if(!n)n=0;else c[n>>2]=0;n=n+4|0;o=o+ -1|0}while((o|0)!=0);q=c[g>>2]|0;r=(c[h>>2]|0)-q|0;s=p+(l-(r>>2)<<2)|0;nr(s|0,q|0,r|0)|0;l=c[g>>2]|0;c[g>>2]=s;c[h>>2]=n;s=c[k>>2]|0;c[k>>2]=c[j>>2];c[j>>2]=s;if(l)if((m|0)==(l|0)){a[b+136>>0]=0;break}else{Uq(l);break}}else do{if(!m)j=0;else{c[m>>2]=0;j=c[h>>2]|0}m=j+4|0;c[h>>2]=m;o=o+ -1|0}while((o|0)!=0);while(0);k=c[g>>2]|0}while(0);h=c[k+(e<<2)>>2]|0;if(!h){s=k;s=s+(e<<2)|0;c[s>>2]=d;i=f;return}r=h+4|0;s=c[r>>2]|0;c[r>>2]=s+ -1;if(!s)jd[c[(c[h>>2]|0)+8>>2]&255](h);s=c[g>>2]|0;s=s+(e<<2)|0;c[s>>2]=d;i=f;return}function On(a){a=a|0;var b=0;b=i;Pn(a);Uq(a);i=b;return}function Pn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;c[b>>2]=19008;f=b+8|0;e=b+12|0;g=c[e>>2]|0;j=c[f>>2]|0;if((g|0)!=(j|0)){h=0;do{k=c[j+(h<<2)>>2]|0;if(k){g=k+4|0;j=c[g>>2]|0;c[g>>2]=j+ -1;if(!j)jd[c[(c[k>>2]|0)+8>>2]&255](k);g=c[e>>2]|0;j=c[f>>2]|0}h=h+1|0}while(h>>>0>2>>>0)}if(!(a[b+144>>0]&1)){Jp(f);i=d;return}Uq(c[b+152>>2]|0);Jp(f);i=d;return}function Qn(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;if(a[19048]|0){g=c[4760]|0;c[b>>2]=g;g=g+4|0;f=c[g>>2]|0;c[g>>2]=f+1;i=d;return}if(!(Fa(19048)|0)){g=c[4760]|0;c[b>>2]=g;g=g+4|0;f=c[g>>2]|0;c[g>>2]=f+1;i=d;return}if((a[19032]|0)==0?(Fa(19032)|0)!=0:0){c[5845]=0;c[5844]=19008;a[23512]=1;c[5847]=23400;c[5846]=23400;c[5848]=23512;g=28;e=23400;do{c[e>>2]=0;f=c[5847]|0;e=f+4|0;c[5847]=e;g=g+ -1|0}while((g|0)!=0);a[23520]=2;a[23521]=67;a[23522]=0;g=c[5846]|0;if((e|0)!=(g|0))c[5847]=f+(0-((f+(0-g)|0)>>>2)<<2);c[5961]=0;c[5960]=17456;Nn(23376,23840,Rn(17480)|0);c[5959]=0;c[5958]=17496;Nn(23376,23832,Rn(17520)|0);c[5955]=0;c[5954]=19088;c[5956]=0;a[23828]=0;c[5956]=c[(Rb()|0)>>2];Nn(23376,23816,Rn(19072)|0);c[5953]=0;c[5952]=20008;Nn(23376,23808,Rn(19064)|0);c[5951]=0;c[5950]=20224;Nn(23376,23800,Rn(19136)|0);c[5947]=0;c[5946]=19160;c[5948]=Dk()|0;Nn(23376,23784,Rn(19144)|0);c[5945]=0;c[5944]=20448;Nn(23376,23776,Rn(19200)|0);c[5943]=0;c[5942]=20568;Nn(23376,23768,Rn(19208)|0);c[5937]=0;c[5936]=19240;a[23752]=46;a[23753]=44;c[5939]=0;c[5940]=0;c[5941]=0;Nn(23376,23744,Rn(19216)|0);c[5929]=0;c[5928]=19280;c[5930]=46;c[5931]=44;c[5932]=0;c[5933]=0;c[5934]=0;Nn(23376,23712,Rn(19224)|0);c[5927]=0;c[5926]=17536;Nn(23376,23704,Rn(17592)|0);c[5925]=0;c[5924]=17656;Nn(23376,23696,Rn(17712)|0);c[5923]=0;c[5922]=17728;Nn(23376,23688,Rn(17776)|0);c[5921]=0;c[5920]=17824;Nn(23376,23680,Rn(17872)|0);c[5919]=0;c[5918]=18416;Nn(23376,23672,Rn(18464)|0);c[5917]=0;c[5916]=18480;Nn(23376,23664,Rn(18528)|0);c[5915]=0;c[5914]=18544;Nn(23376,23656,Rn(18592)|0);c[5913]=0;c[5912]=18608;Nn(23376,23648,Rn(18656)|0);c[5911]=0;c[5910]=18672;Nn(23376,23640,Rn(18696)|0);c[5909]=0;c[5908]=18752;Nn(23376,23632,Rn(18776)|0);c[5907]=0;c[5906]=18808;Nn(23376,23624,Rn(18832)|0);c[5905]=0;c[5904]=18856;Nn(23376,23616,Rn(18880)|0);c[5901]=0;c[5900]=17904;c[5902]=17952;Nn(23376,23600,Rn(17984)|0);c[5897]=0;c[5896]=18056;c[5898]=18104;Nn(23376,23584,Rn(18136)|0);c[5893]=0;c[5892]=19944;c[5894]=Dk()|0;c[5892]=18352;Nn(23376,23568,Rn(18368)|0);c[5889]=0;c[5888]=19944;c[5890]=Dk()|0;c[5888]=18384;Nn(23376,23552,Rn(18400)|0);c[5887]=0;c[5886]=18896;Nn(23376,23544,Rn(18920)|0);c[5885]=0;c[5884]=18936;Nn(23376,23536,Rn(18960)|0);c[4756]=23376;Vc(19032)}g=c[4756]|0;c[4760]=g;g=g+4|0;c[g>>2]=(c[g>>2]|0)+1;Vc(19048);g=c[4760]|0;c[b>>2]=g;g=g+4|0;f=c[g>>2]|0;c[g>>2]=f+1;i=d;return}function Rn(a){a=a|0;var b=0;b=i;do if((c[a>>2]|0)!=-1){Cc(16152)|0;if((c[a>>2]|0)==1)do rc(16176,16152)|0;while((c[a>>2]|0)==1);if(c[a>>2]|0){zb(16152)|0;break}c[a>>2]=1;zb(16152)|0;Vn(a);Cc(16152)|0;c[a>>2]=-1;zb(16152)|0;gc(16176)|0}while(0);i=b;return(c[a+4>>2]|0)+ -1|0}function Sn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;b=Rn(b)|0;f=c[a+8>>2]|0;if((c[a+12>>2]|0)-f>>2>>>0>b>>>0?(d=c[f+(b<<2)>>2]|0,(d|0)!=0):0){i=e;return d|0}f=Wb(4)|0;c[f>>2]=27744;Zc(f|0,27816,228);return 0}function Tn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Un(a){a=a|0;var b=0;b=i;if(!a){i=b;return}jd[c[(c[a>>2]|0)+4>>2]&255](a);i=b;return}function Vn(a){a=a|0;var b=0;b=c[4764]|0;c[4764]=b+1;c[a+4>>2]=b+1;return}function Wn(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Xn(a,d,e){a=a|0;d=d|0;e=e|0;a=i;if(e>>>0>=128){d=0;i=a;return d|0}d=(b[(c[(Rb()|0)>>2]|0)+(e<<1)>>1]&d)<<16>>16!=0;i=a;return d|0}function Yn(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;a=i;if((d|0)==(e|0)){j=d;i=a;return j|0}g=((e+ -4+(0-d)|0)>>>2)+1|0;h=d;while(1){j=c[h>>2]|0;if(j>>>0<128)j=b[(c[(Rb()|0)>>2]|0)+(j<<1)>>1]|0;else j=0;b[f>>1]=j;h=h+4|0;if((h|0)==(e|0))break;else f=f+2|0}j=d+(g<<2)|0;i=a;return j|0}function Zn(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0;a=i;a:do if((e|0)==(f|0))f=e;else do{g=c[e>>2]|0;if(g>>>0<128?(b[(c[(Rb()|0)>>2]|0)+(g<<1)>>1]&d)<<16>>16!=0:0){f=e;break a}e=e+4|0}while((e|0)!=(f|0));while(0);i=a;return f|0}function _n(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0;a=i;a:do if((e|0)==(f|0))f=e;else do{g=c[e>>2]|0;if(g>>>0>=128){f=e;break a}if(!((b[(c[(Rb()|0)>>2]|0)+(g<<1)>>1]&d)<<16>>16)){f=e;break a}e=e+4|0}while((e|0)!=(f|0));while(0);i=a;return f|0}function $n(a,b){a=a|0;b=b|0;a=i;if(b>>>0>=128){i=a;return b|0}b=c[(c[(Ab()|0)>>2]|0)+(b<<2)>>2]|0;i=a;return b|0}function ao(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;a=i;if((b|0)==(d|0)){g=b;i=a;return g|0}e=((d+ -4+(0-b)|0)>>>2)+1|0;f=b;do{g=c[f>>2]|0;if(g>>>0<128)g=c[(c[(Ab()|0)>>2]|0)+(g<<2)>>2]|0;c[f>>2]=g;f=f+4|0}while((f|0)!=(d|0));g=b+(e<<2)|0;i=a;return g|0}function bo(a,b){a=a|0;b=b|0;a=i;if(b>>>0>=128){i=a;return b|0}b=c[(c[(qb()|0)>>2]|0)+(b<<2)>>2]|0;i=a;return b|0}function co(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;a=i;if((b|0)==(d|0)){g=b;i=a;return g|0}e=((d+ -4+(0-b)|0)>>>2)+1|0;f=b;do{g=c[f>>2]|0;if(g>>>0<128)g=c[(c[(qb()|0)>>2]|0)+(g<<2)>>2]|0;c[f>>2]=g;f=f+4|0}while((f|0)!=(d|0));g=b+(e<<2)|0;i=a;return g|0}function eo(a,b){a=a|0;b=b|0;return b<<24>>24|0}function fo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;b=i;if((d|0)==(e|0)){i=b;return d|0}while(1){c[f>>2]=a[d>>0];d=d+1|0;if((d|0)==(e|0))break;else f=f+4|0}i=b;return e|0}function go(a,b,c){a=a|0;b=b|0;c=c|0;return(b>>>0<128?b&255:c)|0}function ho(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;b=i;if((d|0)==(e|0)){j=d;i=b;return j|0}h=((e+ -4+(0-d)|0)>>>2)+1|0;j=d;while(1){k=c[j>>2]|0;a[g>>0]=k>>>0<128?k&255:f;j=j+4|0;if((j|0)==(e|0))break;else g=g+1|0}k=d+(h<<2)|0;i=b;return k|0}function io(b){b=b|0;var d=0,e=0;d=i;c[b>>2]=19088;e=c[b+8>>2]|0;if((e|0)!=0?(a[b+12>>0]|0)!=0:0)Uq(e);Uq(b);i=d;return}function jo(b){b=b|0;var d=0,e=0;d=i;c[b>>2]=19088;e=c[b+8>>2]|0;if((e|0)!=0?(a[b+12>>0]|0)!=0:0)Uq(e);i=d;return}function ko(a,b){a=a|0;b=b|0;a=i;if(b<<24>>24<=-1){i=a;return b|0}b=c[(c[(Ab()|0)>>2]|0)+((b&255)<<2)>>2]&255;i=a;return b|0}function lo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;b=i;if((d|0)==(e|0)){f=d;i=b;return f|0}do{f=a[d>>0]|0;if(f<<24>>24>-1)f=c[(c[(Ab()|0)>>2]|0)+(f<<24>>24<<2)>>2]&255;a[d>>0]=f;d=d+1|0}while((d|0)!=(e|0));i=b;return e|0}function mo(a,b){a=a|0;b=b|0;a=i;if(b<<24>>24<=-1){i=a;return b|0}b=c[(c[(qb()|0)>>2]|0)+(b<<24>>24<<2)>>2]&255;i=a;return b|0}function no(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;b=i;if((d|0)==(e|0)){f=d;i=b;return f|0}do{f=a[d>>0]|0;if(f<<24>>24>-1)f=c[(c[(qb()|0)>>2]|0)+(f<<24>>24<<2)>>2]&255;a[d>>0]=f;d=d+1|0}while((d|0)!=(e|0));i=b;return e|0}function oo(a,b){a=a|0;b=b|0;return b|0}function po(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;b=i;if((c|0)==(d|0))d=c;else while(1){a[e>>0]=a[c>>0]|0;c=c+1|0;if((c|0)==(d|0))break;else e=e+1|0}i=b;return d|0}function qo(a,b,c){a=a|0;b=b|0;c=c|0;return(b<<24>>24>-1?b:c)|0}function ro(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;b=i;if((c|0)==(d|0)){i=b;return c|0}while(1){g=a[c>>0]|0;a[f>>0]=g<<24>>24>-1?g:e;c=c+1|0;if((c|0)==(d|0))break;else f=f+1|0}i=b;return d|0}function so(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function to(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function uo(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c[f>>2]=d;c[i>>2]=g;return 3}function vo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function wo(a){a=a|0;return 1}function xo(a){a=a|0;return 1}function yo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;b=d-c|0;return(b>>>0>>0?b:e)|0}function zo(a){a=a|0;return 1}function Ao(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=19160;d=a+8|0;e=c[d>>2]|0;if((e|0)==(Dk()|0)){Uq(a);i=b;return}ub(c[d>>2]|0);Uq(a);i=b;return}function Bo(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;d=i;i=i+272|0;o=d+264|0;n=d+8|0;m=d;a:do if((e|0)!=(f|0)){q=e;while(1){if(!(c[q>>2]|0))break;q=q+4|0;if((q|0)==(f|0)){q=f;break}}c[k>>2]=h;c[g>>2]=e;if((h|0)!=(j|0)){p=j;b=b+8|0;while(1){w=q-e>>2;r=Yb(c[b>>2]|0)|0;y=c[g>>2]|0;s=(h|0)!=0;u=s?p-h|0:256;v=s?h:n;b:do if((y|0)==0|(u|0)==0)t=0;else{t=0;do{x=w>>>0>=u>>>0;if(!(x|w>>>0>32))break b;x=x?u:w;w=w-x|0;c:do if(!v){A=c[y>>2]|0;if(!A)x=0;else{x=0;z=y;while(1){if(A>>>0>127){A=ar(o,A)|0;if((A|0)==-1){u=0;t=-1;break b}}else A=1;x=A+x|0;z=z+4|0;A=c[z>>2]|0;if(!A){l=32;break}}}}else{d:do if(x>>>0>3){z=v;A=x;while(1){B=c[y>>2]|0;if((B+ -1|0)>>>0>126){if(!B)break;B=ar(z,B)|0;if((B|0)==-1){u=0;t=-1;break b}z=z+B|0;A=A-B|0}else{a[z>>0]=B;z=z+1|0;A=A+ -1|0}y=y+4|0;if(A>>>0<=3)break d}a[z>>0]=0;x=x-A|0;y=0;l=32;break c}else{z=v;A=x}while(0);if(A){while(1){B=c[y>>2]|0;if((B+ -1|0)>>>0>126){if(!B){l=25;break}B=ar(o,B)|0;if((B|0)==-1){u=0;t=-1;break b}if(B>>>0>A>>>0){l=28;break}ar(z,c[y>>2]|0)|0;z=z+B|0;A=A-B|0}else{a[z>>0]=B;z=z+1|0;A=A+ -1|0}y=y+4|0;if(!A){l=32;break c}}if((l|0)==25){a[z>>0]=0;x=x-A|0;y=0;l=32;break}else if((l|0)==28){x=x-A|0;l=32;break}}else l=32}while(0);if((l|0)==32){l=0;if((x|0)==-1){u=0;t=-1;break b}}if((v|0)==(n|0))v=n;else{u=u-x|0;v=v+x|0}t=x+t|0}while(!((y|0)==0|(u|0)==0))}while(0);e:do if((y|0)!=0?!((u|0)==0|(w|0)==0):0){while(1){x=ar(v,c[y>>2]|0)|0;if((x+1|0)>>>0<2)break;y=y+4|0;w=w+ -1|0;t=t+1|0;if((u|0)==(x|0)|(w|0)==0)break e;else{u=u-x|0;v=v+x|0}}B=(x|0)==0;t=B?t:-1;y=B?0:y}while(0);if(s)c[g>>2]=y;if(r)Yb(r|0)|0;if(!t){g=1;l=67;break}else if((t|0)==-1){l=46;break}h=(c[k>>2]|0)+t|0;c[k>>2]=h;if((h|0)==(j|0)){l=65;break}if((q|0)==(f|0)){e=c[g>>2]|0;q=f}else{e=Yb(c[b>>2]|0)|0;a[m>>0]=0;if(e)Yb(e|0)|0;r=c[k>>2]|0;if((r|0)==(j|0)){g=1;l=67;break}else{q=0;h=0;e=m}while(1){c[k>>2]=r+1;a[r>>0]=q;if(!h)break;B=e+1|0;r=c[k>>2]|0;q=a[B>>0]|0;h=h+ -1|0;e=B}e=(c[g>>2]|0)+4|0;c[g>>2]=e;f:do if((e|0)==(f|0))q=f;else{q=e;while(1){if(!(c[q>>2]|0))break f;q=q+4|0;if((q|0)==(f|0)){q=f;break}}}while(0);h=c[k>>2]|0}if((e|0)==(f|0)|(h|0)==(j|0))break a}if((l|0)==46){c[k>>2]=h;g:do if((e|0)!=(c[g>>2]|0))do{f=c[e>>2]|0;l=Yb(c[b>>2]|0)|0;f=ar(h,f)|0;if(l)Yb(l|0)|0;if((f|0)==-1)break g;h=(c[k>>2]|0)+f|0;c[k>>2]=h;e=e+4|0}while((e|0)!=(c[g>>2]|0));while(0);c[g>>2]=e;B=2;i=d;return B|0}else if((l|0)==65){e=c[g>>2]|0;break}else if((l|0)==67){i=d;return g|0}}}else{c[k>>2]=h;c[g>>2]=e}while(0);B=(e|0)!=(f|0)&1;i=d;return B|0}function Co(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;l=i;i=i+1040|0;n=l+16|0;o=l+8|0;m=l;a:do if((e|0)!=(f|0)){r=e;while(1){if(!(a[r>>0]|0))break;r=r+1|0;if((r|0)==(f|0)){r=f;break}}c[k>>2]=h;c[g>>2]=e;if((h|0)!=(j|0)){p=j;b=b+8|0;while(1){t=d;u=c[t+4>>2]|0;q=m;c[q>>2]=c[t>>2];c[q+4>>2]=u;q=r;u=q-e|0;t=Yb(c[b>>2]|0)|0;y=c[g>>2]|0;c[o>>2]=y;s=(h|0)!=0;w=s?p-h>>2:256;x=s?h:n;b:do if((y|0)==0|(w|0)==0)v=0;else{v=0;while(1){z=u>>>2;A=z>>>0>=w>>>0;if(!(A|u>>>0>131))break b;y=A?w:z;u=u-y|0;y=Tp(x,o,y,d)|0;if((y|0)==-1)break;if((x|0)==(n|0))x=n;else{w=w-y|0;x=x+(y<<2)|0}v=y+v|0;y=c[o>>2]|0;if((y|0)==0|(w|0)==0)break b}w=0;y=c[o>>2]|0;v=-1}while(0);c:do if(y){if(!((w|0)==0|(u|0)==0)){while(1){z=Sp(x,y,u,d)|0;if((z+2|0)>>>0<3)break;y=y+z|0;c[o>>2]=y;w=w+ -1|0;v=v+1|0;if((w|0)==0|(u|0)==(z|0))break c;else{u=u-z|0;x=x+4|0}}if(!z){c[o>>2]=0;y=0;break}else if((z|0)==-1){v=-1;break}else{c[d>>2]=0;break}}}else y=0;while(0);if(s)c[g>>2]=y;if(t)Yb(t|0)|0;if(!v){f=2;d=48;break}else if((v|0)==-1){d=26;break}h=(c[k>>2]|0)+(v<<2)|0;c[k>>2]=h;if((h|0)==(j|0)){d=46;break}e=c[g>>2]|0;if((r|0)==(f|0))r=f;else{q=Yb(c[b>>2]|0)|0;e=Sp(h,e,1,d)|0;if(q)Yb(q|0)|0;if(e){f=2;d=48;break}c[k>>2]=(c[k>>2]|0)+4;e=(c[g>>2]|0)+1|0;c[g>>2]=e;d:do if((e|0)==(f|0))r=f;else{r=e;while(1){if(!(a[r>>0]|0))break d;r=r+1|0;if((r|0)==(f|0)){r=f;break}}}while(0);h=c[k>>2]|0}if((e|0)==(f|0)|(h|0)==(j|0))break a}if((d|0)==26){c[k>>2]=h;e:do if((e|0)!=(c[g>>2]|0)){while(1){d=Yb(c[b>>2]|0)|0;n=Sp(h,e,q-e|0,m)|0;if(d)Yb(d|0)|0;if(!n)e=e+1|0;else if((n|0)==-1){d=31;break}else if((n|0)==-2){d=32;break}else e=e+n|0;h=(c[k>>2]|0)+4|0;c[k>>2]=h;if((e|0)==(c[g>>2]|0))break e}if((d|0)==31){c[g>>2]=e;A=2;i=l;return A|0}else if((d|0)==32){c[g>>2]=e;A=1;i=l;return A|0}}while(0);c[g>>2]=e;A=(e|0)!=(f|0)&1;i=l;return A|0}else if((d|0)==46){e=c[g>>2]|0;break}else if((d|0)==48){i=l;return f|0}}}else{c[k>>2]=h;c[g>>2]=e}while(0);A=(e|0)!=(f|0)&1;i=l;return A|0}function Do(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;b=i;c[f>>2]=d;a=Yb(c[a+8>>2]|0)|0;if(!a){i=b;return 0}Yb(a|0)|0;i=b;return 0}function Eo(a){a=a|0;var b=0,d=0;b=i;a=a+8|0;d=Yb(c[a>>2]|0)|0;if(d)Yb(d|0)|0;a=c[a>>2]|0;if(a){a=Yb(a|0)|0;if(!a)a=0;else{Yb(a|0)|0;a=0}}else a=1;i=b;return a|0}function Fo(a){a=a|0;return 0}function Go(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;if((f|0)==0|(d|0)==(e|0)){m=0;i=g;return m|0}h=e;a=a+8|0;b=(b|0)!=0?b:26896;k=0;j=0;while(1){m=Yb(c[a>>2]|0)|0;l=Sp(0,d,h-d|0,b)|0;if(m)Yb(m|0)|0;if(!l){d=d+1|0;l=1}else if((l|0)==-2|(l|0)==-1){f=9;break}else d=d+l|0;k=l+k|0;j=j+1|0;if(j>>>0>=f>>>0|(d|0)==(e|0)){f=9;break}}if((f|0)==9){i=g;return k|0}return 0}function Ho(a){a=a|0;var b=0;b=i;a=c[a+8>>2]|0;if(a){a=Yb(a|0)|0;if(!a)a=4;else{Yb(a|0)|0;a=4}}else a=1;i=b;return a|0}function Io(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Jo(d,f,g,h,j,k,l,m){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0;f=i;d=h;a:do if(g>>>0>>0){o=g;n=k;while(1){q=b[o>>1]|0;p=q&65535;do if((q&65535)<128){if((l-n|0)<1){h=1;break a}a[n>>0]=q;n=n+1|0}else{if((q&65535)<2048){if((l-n|0)<2){h=1;break a}a[n>>0]=p>>>6|192;a[n+1>>0]=p&63|128;n=n+2|0;break}if((q&65535)<55296){if((l-n|0)<3){h=1;break a}a[n>>0]=p>>>12|224;a[n+1>>0]=p>>>6&63|128;a[n+2>>0]=p&63|128;n=n+3|0;break}if((q&65535)>=56320){if((q&65535)<57344){h=2;break a}if((l-n|0)<3){h=1;break a}a[n>>0]=p>>>12|224;a[n+1>>0]=p>>>6&63|128;a[n+2>>0]=p&63|128;n=n+3|0;break}if((d-o|0)<4){h=1;break a}q=o+2|0;r=e[q>>1]|0;if((r&64512|0)!=56320){h=2;break a}if((l-n|0)<4){h=1;break a}s=p&960;if(((s<<10)+65536|0)>>>0>1114111){h=2;break a}o=(s>>>6)+1|0;a[n>>0]=o>>>2|240;a[n+1>>0]=p>>>2&15|o<<4&48|128;a[n+2>>0]=p<<4&48|r>>>6&15|128;a[n+3>>0]=r&63|128;o=q;n=n+4|0}while(0);o=o+2|0;if(o>>>0>=h>>>0){h=0;break}}}else{h=0;o=g;n=k}while(0);c[j>>2]=g+(o-g>>1<<1);c[m>>2]=k+(n-k);i=f;return h|0}function Ko(e,f,g,h,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=i;a:do if(g>>>0>>0){o=h;p=l;q=g;e=k;while(1){if(e>>>0>=l>>>0){n=31;break a}s=a[q>>0]|0;r=s&255;do if(s<<24>>24>-1){b[e>>1]=s&255;q=q+1|0}else{if((s&255)<194){h=2;break a}if((s&255)<224){if((o-q|0)<2){h=1;break a}s=d[q+1>>0]|0;if((s&192|0)!=128){h=2;break a}b[e>>1]=s&63|r<<6&1984;q=q+2|0;break}if((s&255)<240){if((o-q|0)<3){h=1;break a}s=a[q+1>>0]|0;t=a[q+2>>0]|0;if((r|0)==237){if((s&-32)<<24>>24!=-128){h=2;break a}}else if((r|0)==224){if((s&-32)<<24>>24!=-96){h=2;break a}}else if((s&-64)<<24>>24!=-128){h=2;break a}t=t&255;if((t&192|0)!=128){h=2;break a}b[e>>1]=(s&255)<<6&4032|r<<12|t&63;q=q+3|0;break}if((s&255)>=245){h=2;break a}if((o-q|0)<4){h=1;break a}s=a[q+1>>0]|0;t=a[q+2>>0]|0;u=a[q+3>>0]|0;if((r|0)==244){if((s&-16)<<24>>24!=-128){h=2;break a}}else if((r|0)==240){if((s+112<<24>>24&255)>=48){h=2;break a}}else if((s&-64)<<24>>24!=-128){h=2;break a}t=t&255;if((t&192|0)!=128){h=2;break a}u=u&255;if((u&192|0)!=128){h=2;break a}if((p-e|0)<4){h=1;break a}r=r&7;s=s&255;if((s<<12&196608|r<<18)>>>0>1114111){h=2;break a}b[e>>1]=s<<2&60|t>>>4&3|((s>>>4&3|r<<2)<<6)+16320|55296;e=e+2|0;b[e>>1]=u&63|t<<6&960|56320;q=q+4|0}while(0);e=e+2|0;if(q>>>0>=h>>>0){n=31;break}}}else{q=g;e=k;n=31}while(0);if((n|0)==31)h=q>>>0>>0&1;c[j>>2]=g+(q-g);c[m>>2]=k+(e-k>>1<<1);i=f;return h|0}function Lo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function Mo(a){a=a|0;return 0}function No(a){a=a|0;return 0}function Oo(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;c=i;a:do if(d>>>0>>0&(f|0)!=0){b=e;h=d;g=0;b:while(1){k=a[h>>0]|0;j=k&255;do if(k<<24>>24>-1)h=h+1|0;else{if((k&255)<194)break a;if((k&255)<224){if((b-h|0)<2)break a;if((a[h+1>>0]&-64)<<24>>24!=-128)break a;h=h+2|0;break}if((k&255)<240){k=h;if((b-k|0)<3)break a;m=a[h+1>>0]|0;l=a[h+2>>0]|0;if((j|0)==237){if((m&-32)<<24>>24!=-128){e=16;break b}}else if((j|0)==224){if((m&-32)<<24>>24!=-96){e=14;break b}}else if((m&-64)<<24>>24!=-128){e=18;break b}if((l&-64)<<24>>24!=-128)break a;h=h+3|0;break}if((k&255)>=245)break a;k=h;if((b-k|0)<4)break a;if((f-g|0)>>>0<2)break a;n=a[h+1>>0]|0;l=a[h+2>>0]|0;m=a[h+3>>0]|0;if((j|0)==240){if((n+112<<24>>24&255)>=48){e=26;break b}}else if((j|0)==244){if((n&-16)<<24>>24!=-128){e=28;break b}}else if((n&-64)<<24>>24!=-128){e=30;break b}if((l&-64)<<24>>24!=-128)break a;if((m&-64)<<24>>24!=-128)break a;if(((n&255)<<12&196608|j<<18&1835008)>>>0>1114111)break a;h=h+4|0;g=g+1|0}while(0);g=g+1|0;if(!(h>>>0>>0&g>>>0>>0))break a}if((e|0)==14){n=k-d|0;i=c;return n|0}else if((e|0)==16){n=k-d|0;i=c;return n|0}else if((e|0)==18){n=k-d|0;i=c;return n|0}else if((e|0)==26){n=k-d|0;i=c;return n|0}else if((e|0)==28){n=k-d|0;i=c;return n|0}else if((e|0)==30){n=k-d|0;i=c;return n|0}}else h=d;while(0);n=h-d|0;i=c;return n|0}function Po(a){a=a|0;return 4}function Qo(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Ro(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0;d=i;a:do if(e>>>0>>0){b=e;l=h;while(1){m=c[b>>2]|0;if((m&-2048|0)==55296|m>>>0>1114111){f=2;break a}do if(m>>>0>=128){if(m>>>0<2048){if((j-l|0)<2){f=1;break a}a[l>>0]=m>>>6|192;a[l+1>>0]=m&63|128;l=l+2|0;break}n=j-l|0;if(m>>>0<65536){if((n|0)<3){f=1;break a}a[l>>0]=m>>>12|224;a[l+1>>0]=m>>>6&63|128;a[l+2>>0]=m&63|128;l=l+3|0;break}else{if((n|0)<4){f=1;break a}a[l>>0]=m>>>18|240;a[l+1>>0]=m>>>12&63|128;a[l+2>>0]=m>>>6&63|128;a[l+3>>0]=m&63|128;l=l+4|0;break}}else{if((j-l|0)<1){f=1;break a}a[l>>0]=m;l=l+1|0}while(0);b=b+4|0;if(b>>>0>=f>>>0){f=0;break}}}else{f=0;b=e;l=h}while(0);c[g>>2]=e+(b-e>>2<<2);c[k>>2]=h+(l-h);i=d;return f|0}function So(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;a:do if(f>>>0>>0){o=g;n=f;b=j;while(1){if(b>>>0>=k>>>0){m=30;break a}q=a[n>>0]|0;p=q&255;do if(q<<24>>24>-1){c[b>>2]=p;n=n+1|0}else{if((q&255)<194){g=2;break a}if((q&255)<224){if((o-n|0)<2){g=1;break a}q=d[n+1>>0]|0;if((q&192|0)!=128){g=2;break a}c[b>>2]=q&63|p<<6&1984;n=n+2|0;break}if((q&255)<240){if((o-n|0)<3){g=1;break a}q=a[n+1>>0]|0;r=a[n+2>>0]|0;if((p|0)==237){if((q&-32)<<24>>24!=-128){g=2;break a}}else if((p|0)==224){if((q&-32)<<24>>24!=-96){g=2;break a}}else if((q&-64)<<24>>24!=-128){g=2;break a}r=r&255;if((r&192|0)!=128){g=2;break a}c[b>>2]=(q&255)<<6&4032|p<<12&61440|r&63;n=n+3|0;break}if((q&255)>=245){g=2;break a}if((o-n|0)<4){g=1;break a}q=a[n+1>>0]|0;r=a[n+2>>0]|0;s=a[n+3>>0]|0;if((p|0)==240){if((q+112<<24>>24&255)>=48){g=2;break a}}else if((p|0)==244){if((q&-16)<<24>>24!=-128){g=2;break a}}else if((q&-64)<<24>>24!=-128){g=2;break a}r=r&255;if((r&192|0)!=128){g=2;break a}s=s&255;if((s&192|0)!=128){g=2;break a}p=(q&255)<<12&258048|p<<18&1835008|r<<6&4032|s&63;if(p>>>0>1114111){g=2;break a}c[b>>2]=p;n=n+4|0}while(0);b=b+4|0;if(n>>>0>=g>>>0){m=30;break}}}else{n=f;b=j;m=30}while(0);if((m|0)==30)g=n>>>0>>0&1;c[h>>2]=f+(n-f);c[l>>2]=j+(b-j>>2<<2);i=e;return g|0}function To(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=d;return 3}function Uo(a){a=a|0;return 0}function Vo(a){a=a|0;return 0}function Wo(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;c=i;a:do if(d>>>0>>0&(f|0)!=0){g=e;j=d;b=1;b:while(1){k=a[j>>0]|0;h=k&255;do if(k<<24>>24>-1)j=j+1|0;else{if((k&255)<194)break a;if((k&255)<224){if((g-j|0)<2)break a;if((a[j+1>>0]&-64)<<24>>24!=-128)break a;j=j+2|0;break}if((k&255)<240){k=j;if((g-k|0)<3)break a;m=a[j+1>>0]|0;l=a[j+2>>0]|0;if((h|0)==237){if((m&-32)<<24>>24!=-128){e=16;break b}}else if((h|0)==224){if((m&-32)<<24>>24!=-96){e=14;break b}}else if((m&-64)<<24>>24!=-128){e=18;break b}if((l&-64)<<24>>24!=-128)break a;j=j+3|0;break}if((k&255)>=245)break a;k=j;if((g-k|0)<4)break a;m=a[j+1>>0]|0;n=a[j+2>>0]|0;l=a[j+3>>0]|0;if((h|0)==240){if((m+112<<24>>24&255)>=48){e=25;break b}}else if((h|0)==244){if((m&-16)<<24>>24!=-128){e=27;break b}}else if((m&-64)<<24>>24!=-128){e=29;break b}if((n&-64)<<24>>24!=-128)break a;if((l&-64)<<24>>24!=-128)break a;if(((m&255)<<12&196608|h<<18&1835008)>>>0>1114111)break a;j=j+4|0}while(0);if(!(j>>>0>>0&b>>>0>>0))break a;b=b+1|0}if((e|0)==14){n=k-d|0;i=c;return n|0}else if((e|0)==16){n=k-d|0;i=c;return n|0}else if((e|0)==18){n=k-d|0;i=c;return n|0}else if((e|0)==25){n=k-d|0;i=c;return n|0}else if((e|0)==27){n=k-d|0;i=c;return n|0}else if((e|0)==29){n=k-d|0;i=c;return n|0}}else j=d;while(0);n=j-d|0;i=c;return n|0}function Xo(a){a=a|0;return 4}function Yo(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function Zo(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function _o(b){b=b|0;var d=0;d=i;c[b>>2]=19240;if(!(a[b+12>>0]&1)){Uq(b);i=d;return}Uq(c[b+20>>2]|0);Uq(b);i=d;return}function $o(b){b=b|0;var d=0;d=i;c[b>>2]=19240;if(!(a[b+12>>0]&1)){i=d;return}Uq(c[b+20>>2]|0);i=d;return}function ap(b){b=b|0;var d=0;d=i;c[b>>2]=19280;if(!(a[b+16>>0]&1)){Uq(b);i=d;return}Uq(c[b+24>>2]|0);Uq(b);i=d;return}function bp(b){b=b|0;var d=0;d=i;c[b>>2]=19280;if(!(a[b+16>>0]&1)){i=d;return}Uq(c[b+24>>2]|0);i=d;return}function cp(b){b=b|0;return a[b+8>>0]|0}function dp(a){a=a|0;return c[a+8>>2]|0}function ep(b){b=b|0;return a[b+9>>0]|0}function fp(a){a=a|0;return c[a+12>>2]|0}function gp(a,b){a=a|0;b=b|0;var c=0;c=i;Fi(a,b+12|0);i=c;return}function hp(a,b){a=a|0;b=b|0;var c=0;c=i;Fi(a,b+16|0);i=c;return}function ip(b,c){b=b|0;c=c|0;a[b>>0]=8;c=b+1|0;a[c>>0]=116;a[c+1>>0]=114;a[c+2>>0]=117;a[c+3>>0]=101;a[b+5>>0]=0;return}function jp(a,b){a=a|0;b=b|0;var d=0;d=i;b=19312;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;Ri(a,19312,b-19312>>2);i=d;return}function kp(b,c){b=b|0;c=c|0;var d=0;c=i;a[b>>0]=10;d=b+1|0;a[d+0>>0]=a[19336]|0;a[d+1>>0]=a[19337]|0;a[d+2>>0]=a[19338]|0;a[d+3>>0]=a[19339]|0;a[d+4>>0]=a[19340]|0;a[b+6>>0]=0;i=c;return}function lp(a,b){a=a|0;b=b|0;var d=0;d=i;b=19344;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;Ri(a,19344,b-19344>>2);i=d;return}function mp(b){b=b|0;var d=0;b=i;if(a[19376]|0){d=c[4842]|0;i=b;return d|0}if(!(Fa(19376)|0)){d=c[4842]|0;i=b;return d|0}if((a[26544]|0)==0?(Fa(26544)|0)!=0:0){qr(26376,0,168)|0;eb(245,0,o|0)|0;Vc(26544)}Ji(26376,26552,6);Ji(26388,26560,6);Ji(26400,26568,7);Ji(26412,26576,9);Ji(26424,26592,8);Ji(26436,26608,6);Ji(26448,26616,8);Ji(26460,26632,3);Ji(26472,26640,3);Ji(26484,26648,3);Ji(26496,26656,3);Ji(26508,26664,3);Ji(26520,26672,3);Ji(26532,26680,3);c[4842]=26376;Vc(19376);d=c[4842]|0;i=b;return d|0}function np(b){b=b|0;var d=0;b=i;if(a[19392]|0){d=c[4846]|0;i=b;return d|0}if(!(Fa(19392)|0)){d=c[4846]|0;i=b;return d|0}if((a[26008]|0)==0?(Fa(26008)|0)!=0:0){qr(25840,0,168)|0;eb(246,0,o|0)|0;Vc(26008)}Vi(25840,26016);Vi(25852,26048);Vi(25864,26080);Vi(25876,26112);Vi(25888,26152);Vi(25900,26192);Vi(25912,26224);Vi(25924,26264);Vi(25936,26280);Vi(25948,26296);Vi(25960,26312);Vi(25972,26328);Vi(25984,26344);Vi(25996,26360);c[4846]=25840;Vc(19392);d=c[4846]|0;i=b;return d|0}function op(b){b=b|0;var d=0;b=i;if(a[19408]|0){d=c[4850]|0;i=b;return d|0}if(!(Fa(19408)|0)){d=c[4850]|0;i=b;return d|0}if((a[25616]|0)==0?(Fa(25616)|0)!=0:0){qr(25328,0,288)|0;eb(247,0,o|0)|0;Vc(25616)}Ji(25328,25624,7);Ji(25340,25632,8);Ji(25352,25648,5);Ji(25364,25656,5);Ji(25376,25664,3);Ji(25388,25672,4);Ji(25400,25680,4);Ji(25412,25688,6);Ji(25424,25696,9);Ji(25436,25712,7);Ji(25448,25720,8);Ji(25460,25736,8);Ji(25472,25752,3);Ji(25484,25760,3);Ji(25496,25768,3);Ji(25508,25776,3);Ji(25520,25664,3);Ji(25532,25784,3);Ji(25544,25792,3);Ji(25556,25800,3);Ji(25568,25808,3);Ji(25580,25816,3);Ji(25592,25824,3);Ji(25604,25832,3);c[4850]=25328;Vc(19408);d=c[4850]|0;i=b;return d|0}function pp(b){b=b|0;var d=0;b=i;if(a[19424]|0){d=c[4854]|0;i=b;return d|0}if(!(Fa(19424)|0)){d=c[4854]|0;i=b;return d|0}if((a[24776]|0)==0?(Fa(24776)|0)!=0:0){qr(24488,0,288)|0;eb(248,0,o|0)|0;Vc(24776)}Vi(24488,24784);Vi(24500,24816);Vi(24512,24856);Vi(24524,24880);Vi(24536,25200);Vi(24548,24904);Vi(24560,24928);Vi(24572,24952);Vi(24584,24984);Vi(24596,25024);Vi(24608,25056);Vi(24620,25096);Vi(24632,25136);Vi(24644,25152);Vi(24656,25168);Vi(24668,25184);Vi(24680,25200);Vi(24692,25216);Vi(24704,25232);Vi(24716,25248);Vi(24728,25264);Vi(24740,25280);Vi(24752,25296);Vi(24764,25312);c[4854]=24488;Vc(19424);d=c[4854]|0;i=b;return d|0}function qp(b){b=b|0;var d=0;b=i;if(a[19440]|0){d=c[4858]|0;i=b;return d|0}if(!(Fa(19440)|0)){d=c[4858]|0;i=b;return d|0}if((a[24464]|0)==0?(Fa(24464)|0)!=0:0){qr(24176,0,288)|0;eb(249,0,o|0)|0;Vc(24464)}Ji(24176,24472,2);Ji(24188,24480,2);c[4858]=24176;Vc(19440);d=c[4858]|0;i=b;return d|0}function rp(b){b=b|0;var d=0;b=i;if(a[19456]|0){d=c[4862]|0;i=b;return d|0}if(!(Fa(19456)|0)){d=c[4862]|0;i=b;return d|0}if((a[24136]|0)==0?(Fa(24136)|0)!=0:0){qr(23848,0,288)|0;eb(250,0,o|0)|0;Vc(24136)}Vi(23848,24144);Vi(23860,24160);c[4862]=23848;Vc(19456);d=c[4862]|0;i=b;return d|0}function sp(b){b=b|0;var c=0,d=0;b=i;if(a[19480]|0){i=b;return 19464}if(!(Fa(19480)|0)){i=b;return 19464}a[19464]=16;c=19465;d=c;a[d>>0]=37;a[d+1>>0]=109;a[d+2>>0]=47;a[d+3>>0]=37;c=c+4|0;a[c>>0]=100;a[c+1>>0]=47;a[c+2>>0]=37;a[c+3>>0]=121;a[19473]=0;eb(251,19464,o|0)|0;Vc(19480);i=b;return 19464}function tp(b){b=b|0;var d=0;b=i;if(a[19504]|0){i=b;return 19488}if(!(Fa(19504)|0)){i=b;return 19488}else d=19512;while(1)if(!(c[d>>2]|0))break;else d=d+4|0;Ri(19488,19512,d-19512>>2);eb(252,19488,o|0)|0;Vc(19504);i=b;return 19488}function up(b){b=b|0;var c=0,d=0;b=i;if(a[19568]|0){i=b;return 19552}if(!(Fa(19568)|0)){i=b;return 19552}a[19552]=16;c=19553;d=c;a[d>>0]=37;a[d+1>>0]=72;a[d+2>>0]=58;a[d+3>>0]=37;c=c+4|0;a[c>>0]=77;a[c+1>>0]=58;a[c+2>>0]=37;a[c+3>>0]=83;a[19561]=0;eb(251,19552,o|0)|0;Vc(19568);i=b;return 19552}function vp(b){b=b|0;var d=0;b=i;if(a[19592]|0){i=b;return 19576}if(!(Fa(19592)|0)){i=b;return 19576}else d=19600;while(1)if(!(c[d>>2]|0))break;else d=d+4|0;Ri(19576,19600,d-19600>>2);eb(252,19576,o|0)|0;Vc(19592);i=b;return 19576}function wp(b){b=b|0;var d=0,e=0,f=0,g=0;b=i;if(a[19656]|0){i=b;return 19640}if(!(Fa(19656)|0)){i=b;return 19640}e=$p(32)|0;c[4912]=e;c[4910]=33;c[4911]=20;g=e+0|0;f=19664;d=g+20|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(d|0));a[e+20>>0]=0;eb(251,19640,o|0)|0;Vc(19656);i=b;return 19640}function xp(b){b=b|0;var d=0;b=i;if(a[19704]|0){i=b;return 19688}if(!(Fa(19704)|0)){i=b;return 19688}else d=19712;while(1)if(!(c[d>>2]|0))break;else d=d+4|0;Ri(19688,19712,d-19712>>2);eb(252,19688,o|0)|0;Vc(19704);i=b;return 19688}function yp(b){b=b|0;var d=0,e=0,f=0,g=0;b=i;if(a[19816]|0){i=b;return 19800}if(!(Fa(19816)|0)){i=b;return 19800}e=$p(16)|0;c[4952]=e;c[4950]=17;c[4951]=11;g=e+0|0;f=19824;d=g+11|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(d|0));a[e+11>>0]=0;eb(251,19800,o|0)|0;Vc(19816);i=b;return 19800}function zp(b){b=b|0;var d=0;b=i;if(a[19856]|0){i=b;return 19840}if(!(Fa(19856)|0)){i=b;return 19840}else d=19864;while(1)if(!(c[d>>2]|0))break;else d=d+4|0;Ri(19840,19864,d-19864>>2);eb(252,19840,o|0)|0;Vc(19856);i=b;return 19840}function Ap(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0.0;e=i;i=i+16|0;f=e;do if((a|0)!=(b|0)){g=Uc()|0;h=c[g>>2]|0;c[g>>2]=0;Dk()|0;j=+hr(a,f);a=c[g>>2]|0;if(!a)c[g>>2]=h;if((c[f>>2]|0)!=(b|0)){c[d>>2]=4;j=0.0;break}if((a|0)==34)c[d>>2]=4}else{c[d>>2]=4;j=0.0}while(0);i=e;return+j}function Bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0.0;e=i;i=i+16|0;f=e;do if((a|0)!=(b|0)){g=Uc()|0;h=c[g>>2]|0;c[g>>2]=0;Dk()|0;j=+hr(a,f);a=c[g>>2]|0;if(!a)c[g>>2]=h;if((c[f>>2]|0)!=(b|0)){c[d>>2]=4;j=0.0;break}if((a|0)==34)c[d>>2]=4}else{c[d>>2]=4;j=0.0}while(0);i=e;return+j}function Cp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0.0;e=i;i=i+16|0;f=e;if((a|0)==(b|0)){c[d>>2]=4;j=0.0;i=e;return+j}g=Uc()|0;h=c[g>>2]|0;c[g>>2]=0;Dk()|0;j=+hr(a,f);a=c[g>>2]|0;if(!a)c[g>>2]=h;if((c[f>>2]|0)!=(b|0)){c[d>>2]=4;j=0.0;i=e;return+j}if((a|0)==34)c[d>>2]=4;i=e;return+j}function Dp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;i=i+16|0;h=g;do if((b|0)!=(d|0)){if((a[b>>0]|0)==45){c[e>>2]=4;e=0;f=0;break}j=Uc()|0;k=c[j>>2]|0;c[j>>2]=0;Dk()|0;f=Qp(b,h,f)|0;b=c[j>>2]|0;if(!b)c[j>>2]=k;if((c[h>>2]|0)!=(d|0)){c[e>>2]=4;e=0;f=0;break}if((b|0)==34){c[e>>2]=4;e=-1;f=-1}else e=H}else{c[e>>2]=4;e=0;f=0}while(0);H=e;i=g;return f|0}function Ep(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;h=k;if((b|0)==(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((a[b>>0]|0)==45){c[e>>2]=4;l=0;i=k;return l|0}j=Uc()|0;g=c[j>>2]|0;c[j>>2]=0;Dk()|0;l=Qp(b,h,f)|0;f=H;b=c[j>>2]|0;if(!b)c[j>>2]=g;if((c[h>>2]|0)!=(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((b|0)==34|(f>>>0>0|(f|0)==0&l>>>0>4294967295)){c[e>>2]=4;l=-1;i=k;return l|0}else{i=k;return l|0}return 0}function Fp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;h=k;if((b|0)==(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((a[b>>0]|0)==45){c[e>>2]=4;l=0;i=k;return l|0}j=Uc()|0;g=c[j>>2]|0;c[j>>2]=0;Dk()|0;l=Qp(b,h,f)|0;f=H;b=c[j>>2]|0;if(!b)c[j>>2]=g;if((c[h>>2]|0)!=(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((b|0)==34|(f>>>0>0|(f|0)==0&l>>>0>4294967295)){c[e>>2]=4;l=-1;i=k;return l|0}else{i=k;return l|0}return 0}function Gp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;h=k;if((b|0)==(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((a[b>>0]|0)==45){c[e>>2]=4;l=0;i=k;return l|0}j=Uc()|0;g=c[j>>2]|0;c[j>>2]=0;Dk()|0;l=Qp(b,h,f)|0;f=H;b=c[j>>2]|0;if(!b)c[j>>2]=g;if((c[h>>2]|0)!=(d|0)){c[e>>2]=4;l=0;i=k;return l|0}if((b|0)==34|(f>>>0>0|(f|0)==0&l>>>0>65535)){c[e>>2]=4;l=-1;i=k;return l|0}else{l=l&65535;i=k;return l|0}return 0}function Hp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;g=j;if((a|0)==(b|0)){c[d>>2]=4;e=0;k=0;H=e;i=j;return k|0}h=Uc()|0;f=c[h>>2]|0;c[h>>2]=0;Dk()|0;e=Rp(a,g,e)|0;a=H;k=c[h>>2]|0;if(!k)c[h>>2]=f;if((c[g>>2]|0)!=(b|0)){c[d>>2]=4;e=0;k=0;H=e;i=j;return k|0}if((k|0)==34){c[d>>2]=4;k=(a|0)>0|(a|0)==0&e>>>0>0;H=k?2147483647:-2147483648;i=j;return(k?-1:0)|0}else{k=e;H=a;i=j;return k|0}return 0}function Ip(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;g=j;if((a|0)==(b|0)){c[d>>2]=4;k=0;i=j;return k|0}h=Uc()|0;f=c[h>>2]|0;c[h>>2]=0;Dk()|0;e=Rp(a,g,e)|0;a=H;k=c[h>>2]|0;if(!k)c[h>>2]=f;if((c[g>>2]|0)!=(b|0)){c[d>>2]=4;k=0;i=j;return k|0}do if((k|0)==34){c[d>>2]=4;if((a|0)>0|(a|0)==0&e>>>0>0){k=2147483647;i=j;return k|0}}else{if((a|0)<-1|(a|0)==-1&e>>>0<2147483648){c[d>>2]=4;break}if((a|0)>0|(a|0)==0&e>>>0>2147483647){c[d>>2]=4;k=2147483647;i=j;return k|0}else{k=e;i=j;return k|0}}while(0);k=-2147483648;i=j;return k|0}function Jp(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;e=c[b>>2]|0;if(!e){i=d;return}f=b+4|0;g=c[f>>2]|0;if((g|0)!=(e|0))c[f>>2]=g+(~((g+ -4+(0-e)|0)>>>2)<<2);if((b+16|0)==(e|0)){a[b+128>>0]=0;i=d;return}else{Uq(e);i=d;return}}function Kp(b){b=b|0;b=i;if(a[24124]&1)Uq(c[6033]|0);if(a[24112]&1)Uq(c[6030]|0);if(a[24100]&1)Uq(c[6027]|0);if(a[24088]&1)Uq(c[6024]|0);if(a[24076]&1)Uq(c[6021]|0);if(a[24064]&1)Uq(c[6018]|0);if(a[24052]&1)Uq(c[6015]|0);if(a[24040]&1)Uq(c[6012]|0);if(a[24028]&1)Uq(c[6009]|0);if(a[24016]&1)Uq(c[6006]|0);if(a[24004]&1)Uq(c[6003]|0);if(a[23992]&1)Uq(c[6e3]|0);if(a[23980]&1)Uq(c[5997]|0);if(a[23968]&1)Uq(c[5994]|0);if(a[23956]&1)Uq(c[5991]|0);if(a[23944]&1)Uq(c[5988]|0);if(a[23932]&1)Uq(c[5985]|0);if(a[23920]&1)Uq(c[5982]|0);if(a[23908]&1)Uq(c[5979]|0);if(a[23896]&1)Uq(c[5976]|0);if(a[23884]&1)Uq(c[5973]|0);if(a[23872]&1)Uq(c[5970]|0);if(a[23860]&1)Uq(c[5967]|0);if(!(a[23848]&1)){i=b;return}Uq(c[5964]|0);i=b;return}function Lp(b){b=b|0;b=i;if(a[24452]&1)Uq(c[6115]|0);if(a[24440]&1)Uq(c[6112]|0);if(a[24428]&1)Uq(c[6109]|0);if(a[24416]&1)Uq(c[6106]|0);if(a[24404]&1)Uq(c[6103]|0);if(a[24392]&1)Uq(c[6100]|0);if(a[24380]&1)Uq(c[6097]|0);if(a[24368]&1)Uq(c[6094]|0);if(a[24356]&1)Uq(c[6091]|0);if(a[24344]&1)Uq(c[6088]|0);if(a[24332]&1)Uq(c[6085]|0);if(a[24320]&1)Uq(c[6082]|0);if(a[24308]&1)Uq(c[6079]|0);if(a[24296]&1)Uq(c[6076]|0);if(a[24284]&1)Uq(c[6073]|0);if(a[24272]&1)Uq(c[6070]|0);if(a[24260]&1)Uq(c[6067]|0);if(a[24248]&1)Uq(c[6064]|0);if(a[24236]&1)Uq(c[6061]|0);if(a[24224]&1)Uq(c[6058]|0);if(a[24212]&1)Uq(c[6055]|0);if(a[24200]&1)Uq(c[6052]|0);if(a[24188]&1)Uq(c[6049]|0);if(!(a[24176]&1)){i=b;return}Uq(c[6046]|0);i=b;return} - - - -function Mp(b){b=b|0;b=i;if(a[24764]&1)Uq(c[6193]|0);if(a[24752]&1)Uq(c[6190]|0);if(a[24740]&1)Uq(c[6187]|0);if(a[24728]&1)Uq(c[6184]|0);if(a[24716]&1)Uq(c[6181]|0);if(a[24704]&1)Uq(c[6178]|0);if(a[24692]&1)Uq(c[6175]|0);if(a[24680]&1)Uq(c[6172]|0);if(a[24668]&1)Uq(c[6169]|0);if(a[24656]&1)Uq(c[6166]|0);if(a[24644]&1)Uq(c[6163]|0);if(a[24632]&1)Uq(c[6160]|0);if(a[24620]&1)Uq(c[6157]|0);if(a[24608]&1)Uq(c[6154]|0);if(a[24596]&1)Uq(c[6151]|0);if(a[24584]&1)Uq(c[6148]|0);if(a[24572]&1)Uq(c[6145]|0);if(a[24560]&1)Uq(c[6142]|0);if(a[24548]&1)Uq(c[6139]|0);if(a[24536]&1)Uq(c[6136]|0);if(a[24524]&1)Uq(c[6133]|0);if(a[24512]&1)Uq(c[6130]|0);if(a[24500]&1)Uq(c[6127]|0);if(!(a[24488]&1)){i=b;return}Uq(c[6124]|0);i=b;return}function Np(b){b=b|0;b=i;if(a[25604]&1)Uq(c[6403]|0);if(a[25592]&1)Uq(c[6400]|0);if(a[25580]&1)Uq(c[6397]|0);if(a[25568]&1)Uq(c[6394]|0);if(a[25556]&1)Uq(c[6391]|0);if(a[25544]&1)Uq(c[6388]|0);if(a[25532]&1)Uq(c[6385]|0);if(a[25520]&1)Uq(c[6382]|0);if(a[25508]&1)Uq(c[6379]|0);if(a[25496]&1)Uq(c[6376]|0);if(a[25484]&1)Uq(c[6373]|0);if(a[25472]&1)Uq(c[6370]|0);if(a[25460]&1)Uq(c[6367]|0);if(a[25448]&1)Uq(c[6364]|0);if(a[25436]&1)Uq(c[6361]|0);if(a[25424]&1)Uq(c[6358]|0);if(a[25412]&1)Uq(c[6355]|0);if(a[25400]&1)Uq(c[6352]|0);if(a[25388]&1)Uq(c[6349]|0);if(a[25376]&1)Uq(c[6346]|0);if(a[25364]&1)Uq(c[6343]|0);if(a[25352]&1)Uq(c[6340]|0);if(a[25340]&1)Uq(c[6337]|0);if(!(a[25328]&1)){i=b;return}Uq(c[6334]|0);i=b;return}function Op(b){b=b|0;b=i;if(a[25996]&1)Uq(c[6501]|0);if(a[25984]&1)Uq(c[6498]|0);if(a[25972]&1)Uq(c[6495]|0);if(a[25960]&1)Uq(c[6492]|0);if(a[25948]&1)Uq(c[6489]|0);if(a[25936]&1)Uq(c[6486]|0);if(a[25924]&1)Uq(c[6483]|0);if(a[25912]&1)Uq(c[6480]|0);if(a[25900]&1)Uq(c[6477]|0);if(a[25888]&1)Uq(c[6474]|0);if(a[25876]&1)Uq(c[6471]|0);if(a[25864]&1)Uq(c[6468]|0);if(a[25852]&1)Uq(c[6465]|0);if(!(a[25840]&1)){i=b;return}Uq(c[6462]|0);i=b;return}function Pp(b){b=b|0;b=i;if(a[26532]&1)Uq(c[6635]|0);if(a[26520]&1)Uq(c[6632]|0);if(a[26508]&1)Uq(c[6629]|0);if(a[26496]&1)Uq(c[6626]|0);if(a[26484]&1)Uq(c[6623]|0);if(a[26472]&1)Uq(c[6620]|0);if(a[26460]&1)Uq(c[6617]|0);if(a[26448]&1)Uq(c[6614]|0);if(a[26436]&1)Uq(c[6611]|0);if(a[26424]&1)Uq(c[6608]|0);if(a[26412]&1)Uq(c[6605]|0);if(a[26400]&1)Uq(c[6602]|0);if(a[26388]&1)Uq(c[6599]|0);if(!(a[26376]&1)){i=b;return}Uq(c[6596]|0);i=b;return}function Qp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+112|0;g=e;c[g>>2]=0;f=g+4|0;c[f>>2]=a;c[g+44>>2]=a;if((a|0)<0){c[g+8>>2]=-1;j=-1}else{j=a+2147483647|0;c[g+8>>2]=j}c[g+76>>2]=-1;c[g+104>>2]=0;h=g+108|0;c[h>>2]=j-a;c[g+100>>2]=j;d=Xq(g,d,1,-1,-1)|0;j=H;if(!b){H=j;i=e;return d|0}c[b>>2]=a+((c[f>>2]|0)+(c[h>>2]|0)-(c[g+8>>2]|0));H=j;i=e;return d|0}function Rp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+112|0;g=e;c[g>>2]=0;f=g+4|0;c[f>>2]=a;c[g+44>>2]=a;if((a|0)<0){c[g+8>>2]=-1;j=-1}else{j=a+2147483647|0;c[g+8>>2]=j}c[g+76>>2]=-1;c[g+104>>2]=0;h=g+108|0;c[h>>2]=j-a;c[g+100>>2]=j;d=Xq(g,d,1,0,-2147483648)|0;j=H;if(!b){H=j;i=e;return d|0}c[b>>2]=a+((c[f>>2]|0)+(c[h>>2]|0)-(c[g+8>>2]|0));H=j;i=e;return d|0}function Sp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;h=g;c[h>>2]=b;f=(f|0)==0?26904:f;j=c[f>>2]|0;a:do if(!d){if(!j){k=0;i=g;return k|0}}else{if(!b)c[h>>2]=h;else h=b;if(!e){k=-2;i=g;return k|0}do if(!j){b=a[d>>0]|0;j=b&255;if(b<<24>>24>-1){c[h>>2]=j;k=b<<24>>24!=0&1;i=g;return k|0}else{j=j+ -194|0;if(j>>>0>50)break a;b=e+ -1|0;j=c[26688+(j<<2)>>2]|0;d=d+1|0;break}}else b=e;while(0);b:do if(b){k=a[d>>0]|0;l=(k&255)>>>3;if((l+ -16|l+(j>>26))>>>0>7)break a;while(1){d=d+1|0;j=(k&255)+ -128|j<<6;b=b+ -1|0;if((j|0)>=0)break;if(!b)break b;k=a[d>>0]|0;if(((k&255)+ -128|0)>>>0>63)break a}c[f>>2]=0;c[h>>2]=j;l=e-b|0;i=g;return l|0}while(0);c[f>>2]=j;l=-2;i=g;return l|0}while(0);c[f>>2]=0;c[(Uc()|0)>>2]=84;l=-1;i=g;return l|0}function Tp(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;k=c[e>>2]|0;if((g|0)!=0?(l=c[g>>2]|0,(l|0)!=0):0)if(!b){j=f;g=16}else{c[g>>2]=0;j=f;g=36}else if(!b){j=f;g=7}else{j=f;g=6}a:while(1)if((g|0)==6){if(!j){g=26;break}while(1){g=a[k>>0]|0;b:do if(((g&255)+ -1|0)>>>0<127?(k&3|0)==0&j>>>0>4:0){do{g=c[k>>2]|0;if((g+ -16843009|g)&-2139062144){g=g&255;break b}c[b>>2]=g&255;c[b+4>>2]=d[k+1>>0];c[b+8>>2]=d[k+2>>0];l=k;k=k+4|0;m=b;b=b+16|0;c[m+12>>2]=d[l+3>>0];j=j+ -4|0}while(j>>>0>4);g=a[k>>0]|0}while(0);l=g&255;if((l+ -1|0)>>>0>=127)break;k=k+1|0;c[b>>2]=l;j=j+ -1|0;if(!j){g=26;break a}else b=b+4|0}l=l+ -194|0;if(l>>>0>50){l=g;g=48;break}l=c[26688+(l<<2)>>2]|0;k=k+1|0;g=36;continue}else if((g|0)==7){l=a[k>>0]|0;if(((l&255)+ -1|0)>>>0<127?(k&3|0)==0:0){l=c[k>>2]|0;if(!((l+ -16843009|l)&-2139062144))do{k=k+4|0;j=j+ -4|0;l=c[k>>2]|0}while(((l+ -16843009|l)&-2139062144|0)==0);g=l&255;l=l&255}else g=l;l=l&255;if((l+ -1|0)>>>0<127){j=j+ -1|0;k=k+1|0;g=7;continue}l=l+ -194|0;if(l>>>0>50){l=g;g=48;break}l=c[26688+(l<<2)>>2]|0;k=k+1|0;g=16;continue}else if((g|0)==16){m=(d[k>>0]|0)>>>3;if((m+ -16|m+(l>>26))>>>0>7){g=17;break}g=k+1|0;if(l&33554432){if(((d[g>>0]|0)+ -128|0)>>>0>63){g=20;break}g=k+2|0;if(!(l&524288))k=g;else{if(((d[g>>0]|0)+ -128|0)>>>0>63){g=23;break}k=k+3|0}}else k=g;j=j+ -1|0;g=7;continue}else if((g|0)==36){m=d[k>>0]|0;g=m>>>3;if((g+ -16|g+(l>>26))>>>0>7){g=37;break}g=k+1|0;l=m+ -128|l<<6;if((l|0)<0){m=(d[g>>0]|0)+ -128|0;if(m>>>0>63){g=40;break}g=k+2|0;l=m|l<<6;if((l|0)<0){g=(d[g>>0]|0)+ -128|0;if(g>>>0>63){g=43;break}l=g|l<<6;k=k+3|0}else k=g}else k=g;c[b>>2]=l;b=b+4|0;j=j+ -1|0;g=6;continue}if((g|0)==17){k=k+ -1|0;g=46}else if((g|0)==20){k=k+ -1|0;g=46}else if((g|0)==23){k=k+ -1|0;g=46}else if((g|0)==26){c[e>>2]=k;m=f;i=h;return m|0}else if((g|0)==37){k=k+ -1|0;g=46}else if((g|0)==40){k=k+ -1|0;g=46}else if((g|0)==43){k=k+ -1|0;g=46}if((g|0)==46)if(!l){l=a[k>>0]|0;g=48}if((g|0)==48)if(!(l<<24>>24)){if(b){c[b>>2]=0;c[e>>2]=0}m=f-j|0;i=h;return m|0}c[(Uc()|0)>>2]=84;if(!b){m=-1;i=h;return m|0}c[e>>2]=k;m=-1;i=h;return m|0}function Up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=d;d=Vp(a,b,f)|0;i=e;return d|0}function Vp(e,f,j){e=e|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0;l=i;i=i+416|0;q=l+128|0;o=l+120|0;m=l+145|0;n=l+112|0;p=l+144|0;r=l;s=r+0|0;t=s+112|0;do{c[s>>2]=0;s=s+4|0}while((s|0)<(t|0));c[r+32>>2]=26;c[r+44>>2]=e;c[r+76>>2]=-1;c[r+84>>2]=e;C=a[f>>0]|0;if(!(C<<24>>24)){O=0;i=l;return O|0}A=r+4|0;e=r+100|0;z=r+108|0;B=r+8|0;v=m+10|0;u=m+33|0;t=o+4|0;x=m+46|0;w=m+94|0;y=r+104|0;s=0;D=0;J=0;I=0;a:while(1){b:do if(C<<24>>24!=32?((C&255)+ -9|0)>>>0>=5:0){C=C<<24>>24==37;c:do if(C){G=f+1|0;E=a[G>>0]|0;do if(E<<24>>24==42){C=0;G=f+2|0}else if(E<<24>>24==37)break c;else{E=(E&255)+ -48|0;if(E>>>0<10?(a[f+2>>0]|0)==36:0){c[q>>2]=c[j>>2];while(1){O=c[q>>2]|0;C=c[O>>2]|0;c[q>>2]=O+4;if(E>>>0>1)E=E+ -1|0;else break}G=f+3|0;break}O=c[j>>2]|0;C=c[O>>2]|0;c[j>>2]=O+4}while(0);F=a[G>>0]|0;f=F&255;if((f+ -48|0)>>>0<10){E=0;do{E=(E*10|0)+ -48+f|0;G=G+1|0;F=a[G>>0]|0;f=F&255}while((f+ -48|0)>>>0<10)}else E=0;if(F<<24>>24==109){G=G+1|0;F=a[G>>0]|0;f=(C|0)!=0&1;J=0;I=0}else f=0;K=G+1|0;switch(F&255|0){case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{F=0;break};case 106:{G=K;F=3;break};case 108:{F=(a[K>>0]|0)==108;G=F?G+2|0:K;F=F?3:1;break};case 116:case 122:{G=K;F=1;break};case 104:{F=(a[K>>0]|0)==104;G=F?G+2|0:K;F=F?-2:-1;break};case 76:{G=K;F=2;break};default:{k=169;break a}}M=d[G>>0]|0;K=(M&47|0)==3;M=K?M|32:M;K=K?1:F;if((M|0)==110){if(!C)break b;switch(K|0){case 1:{c[C>>2]=D;break b};case-2:{a[C>>0]=D;break b};case 3:{O=C;c[O>>2]=D;c[O+4>>2]=((D|0)<0)<<31>>31;break b};case-1:{b[C>>1]=D;break b};case 0:{c[C>>2]=D;break b};default:break b}}else if((M|0)==99)E=(E|0)<1?1:E;else if((M|0)!=91){c[y>>2]=0;F=c[B>>2]|0;L=c[A>>2]|0;c[z>>2]=F-L;c[e>>2]=F;while(1){if(L>>>0>>0){c[A>>2]=L+1;F=d[L>>0]|0}else F=_q(r)|0;if(!((F|0)==32|(F+ -9|0)>>>0<5))break;L=c[A>>2]|0;F=c[e>>2]|0}F=c[A>>2]|0;if(c[e>>2]|0){F=F+ -1|0;c[A>>2]=F}D=(c[z>>2]|0)+D+F-(c[B>>2]|0)|0}c[y>>2]=E;L=c[B>>2]|0;F=c[A>>2]|0;O=L-F|0;c[z>>2]=O;if((E|0)!=0&(O|0)>(E|0))L=F+E|0;c[e>>2]=L;if(F>>>0>>0)c[A>>2]=F+1;else{if((_q(r)|0)<0){k=169;break a}L=c[e>>2]|0}if(L)c[A>>2]=(c[A>>2]|0)+ -1;d:do switch(M|0){case 111:{E=8;k=151;break};case 117:case 100:{E=10;k=151;break};case 105:{E=0;k=151;break};case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{P=+Yq(r,K,0);if((c[z>>2]|0)==((c[B>>2]|0)-(c[A>>2]|0)|0))break a;if(C)if(!K){g[C>>2]=P;break d}else if((K|0)==1){h[C>>3]=P;break d}else if((K|0)==2){h[C>>3]=P;break d}else break d;break};case 120:case 88:case 112:{E=16;k=151;break};case 91:case 99:case 115:{F=(M|0)==99;e:do if((M&239|0)==99){qr(m|0,-1,257)|0;a[m>>0]=0;if((M|0)==115){a[u>>0]=0;a[v+0>>0]=0;a[v+1>>0]=0;a[v+2>>0]=0;a[v+3>>0]=0;a[v+4>>0]=0}}else{O=G+1|0;N=(a[O>>0]|0)==94;M=N&1;G=N?G+2|0:O;qr(m|0,N&1|0,257)|0;a[m>>0]=0;N=a[G>>0]|0;if(N<<24>>24==93){M=(M^1)&255;a[w>>0]=M;G=G+1|0}else if(N<<24>>24==45){M=(M^1)&255;a[x>>0]=M;G=G+1|0}else M=(M^1)&255;while(1){O=a[G>>0]|0;if(O<<24>>24==93)break e;else if(!(O<<24>>24)){k=169;break a}else if(O<<24>>24==45){N=G+1|0;O=a[N>>0]|0;if(!(O<<24>>24==93|O<<24>>24==0)){G=a[G+ -1>>0]|0;if((G&255)<(O&255)){G=G&255;do{G=G+1|0;a[m+G>>0]=M;O=a[N>>0]|0}while((G|0)<(O&255|0));G=N}else G=N}else O=45}a[m+((O&255)+1)>>0]=M;G=G+1|0}}while(0);N=F?E+1|0:31;J=(K|0)==1;I=(f|0)!=0;f:do if(J){if(I){K=Tq(N<<2)|0;if(!K){J=0;I=K;k=169;break a}}else K=C;c[o>>2]=0;c[t>>2]=0;M=0;L=N;g:while(1){if(!K){N=I&(M|0)==(L|0);while(1){O=c[A>>2]|0;if(O>>>0<(c[e>>2]|0)>>>0){c[A>>2]=O+1;O=d[O>>0]|0}else O=_q(r)|0;if(!(a[m+(O+1)>>0]|0)){K=0;break g}a[p>>0]=O;O=Sp(n,p,1,o)|0;if((O|0)==-1){J=0;I=0;k=169;break a}else if((O|0)==-2)continue;if(N)break}}else{if(!I){k=105;break}while(1){while(1){N=c[A>>2]|0;if(N>>>0<(c[e>>2]|0)>>>0){c[A>>2]=N+1;N=d[N>>0]|0}else N=_q(r)|0;if(!(a[m+(N+1)>>0]|0))break g;a[p>>0]=N;N=Sp(n,p,1,o)|0;if((N|0)==-1){J=0;I=K;k=169;break a}else if((N|0)!=-2)break}c[K+(M<<2)>>2]=c[n>>2];M=M+1|0;if((M|0)==(L|0)){M=L;break}}}L=L<<1|1;N=Vq(K,L<<2)|0;if(!N){J=0;I=K;k=169;break a}K=N}h:do if((k|0)==105)while(1){k=0;while(1){L=c[A>>2]|0;if(L>>>0<(c[e>>2]|0)>>>0){c[A>>2]=L+1;L=d[L>>0]|0}else L=_q(r)|0;if(!(a[m+(L+1)>>0]|0))break h;a[p>>0]=L;L=Sp(n,p,1,o)|0;if((L|0)==-1){f=0;J=0;I=K;k=169;break a}else if((L|0)!=-2)break}c[K+(M<<2)>>2]=c[n>>2];M=M+1|0;k=105}while(0);if(!(c[o>>2]|0))L=0;else{J=0;I=K;k=169;break a}}else{if(I){L=Tq(N)|0;if(!L){J=0;I=0;k=169;break a}else{M=0;K=N}while(1){do{N=c[A>>2]|0;if(N>>>0<(c[e>>2]|0)>>>0){c[A>>2]=N+1;N=d[N>>0]|0}else N=_q(r)|0;if(!(a[m+(N+1)>>0]|0)){K=0;break f}a[L+M>>0]=N;M=M+1|0}while((M|0)!=(K|0));M=K<<1|1;N=Vq(L,M)|0;if(!N){J=L;I=0;k=169;break a}else{O=K;K=M;L=N;M=O}}}if(!C)while(1){K=c[A>>2]|0;if(K>>>0>>0){c[A>>2]=K+1;K=d[K>>0]|0}else K=_q(r)|0;if(!(a[m+(K+1)>>0]|0)){M=0;L=0;K=0;break f}L=c[e>>2]|0}else{M=0;while(1){K=c[A>>2]|0;if(K>>>0>>0){c[A>>2]=K+1;K=d[K>>0]|0}else K=_q(r)|0;if(!(a[m+(K+1)>>0]|0)){L=C;K=0;break f}a[C+M>>0]=K;L=c[e>>2]|0;M=M+1|0}}}while(0);N=c[A>>2]|0;if(c[e>>2]|0){N=N+ -1|0;c[A>>2]=N}N=N-(c[B>>2]|0)+(c[z>>2]|0)|0;if(!N){J=L;I=K;break a}if(!((N|0)==(E|0)|F^1)){J=L;I=K;break a}do if(I)if(J){c[C>>2]=K;break}else{c[C>>2]=L;break}while(0);if(F){J=L;I=K}else{if(K)c[K+(M<<2)>>2]=0;if(!L){J=0;I=K;break d}a[L+M>>0]=0;J=L;I=K}break};default:{}}while(0);i:do if((k|0)==151){k=0;E=Xq(r,E,0,-1,-1)|0;if((c[z>>2]|0)==((c[B>>2]|0)-(c[A>>2]|0)|0))break a;f=(C|0)==0;if(!((M|0)!=112|f)){c[C>>2]=E;break}if(!f)switch(K|0){case-2:{a[C>>0]=E;break i};case-1:{b[C>>1]=E;break i};case 0:{c[C>>2]=E;break i};case 1:{c[C>>2]=E;break i};case 3:{O=C;c[O>>2]=E;c[O+4>>2]=H;break i};default:break i}}while(0);s=((C|0)!=0&1)+s|0;D=(c[z>>2]|0)+D+(c[A>>2]|0)-(c[B>>2]|0)|0;break b}while(0);G=f+(C&1)|0;c[y>>2]=0;O=c[B>>2]|0;C=c[A>>2]|0;c[z>>2]=O-C;c[e>>2]=O;if(C>>>0>>0){c[A>>2]=C+1;C=d[C>>0]|0}else C=_q(r)|0;if((C|0)!=(d[G>>0]|0)){k=22;break a}D=D+1|0}else{G=f;k=5}while(0);if((k|0)==5){while(1){k=0;f=G+1|0;C=a[f>>0]|0;if(C<<24>>24==32){G=f;k=5;continue}if(((C&255)+ -9|0)>>>0<5){G=f;k=5}else break}c[y>>2]=0;f=c[B>>2]|0;C=c[A>>2]|0;c[z>>2]=f-C;c[e>>2]=f;while(1){if(C>>>0>>0){c[A>>2]=C+1;C=d[C>>0]|0}else C=_q(r)|0;if(!((C|0)==32|(C+ -9|0)>>>0<5))break;C=c[A>>2]|0;f=c[e>>2]|0}C=c[A>>2]|0;if(c[e>>2]|0){C=C+ -1|0;c[A>>2]=C}D=(c[z>>2]|0)+D+C-(c[B>>2]|0)|0}f=G+1|0;C=a[f>>0]|0;if(!(C<<24>>24)){k=172;break}}if((k|0)==172){i=l;return s|0}if((k|0)==22){if(c[e>>2]|0)c[A>>2]=(c[A>>2]|0)+ -1;if((C|0)<0){f=0;k=169}else{O=s;i=l;return O|0}}if((k|0)==169)s=(((s|0)==0)<<31>>31)+s|0;if(!f){O=s;i=l;return O|0}Uq(J);Uq(I);O=s;i=l;return O|0}function Wp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;g=b+84|0;f=c[g>>2]|0;k=e+256|0;j=f;o=(k|0)==0;a:do if((j&3|0)==0|o){m=k;n=f;l=4}else{m=k;n=f;while(1){if(!(a[n>>0]|0))break a;n=n+1|0;m=m+ -1|0;o=(m|0)==0;if((n&3|0)==0|o){l=4;break}}}while(0);b:do if((l|0)==4)if(!o){if(a[n>>0]|0){c:do if(m>>>0>3)do{o=c[n>>2]|0;if((o&-2139062144^-2139062144)&o+ -16843009)break c;n=n+4|0;m=m+ -4|0}while(m>>>0>3);while(0);if(!m)m=0;else while(1){if(!(a[n>>0]|0))break b;n=n+1|0;m=m+ -1|0;if(!m){m=0;break}}}}else m=0;while(0);l=(m|0)!=0?n:0;if(l)k=l-j|0;o=k>>>0>>0?k:e;nr(d|0,f|0,o|0)|0;c[b+4>>2]=f+o;n=f+k|0;c[b+8>>2]=n;c[g>>2]=n;i=h;return o|0}function Xp(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d>>2]=b;b=c[p>>2]|0;Ub(b|0,a|0,d|0)|0;Yc(10,b|0)|0;mc()}function Yp(){var a=0,b=0,d=0,e=0,f=0;a=i;i=i+16|0;b=a;a=a+12|0;if(yb(27096,2)|0)Xp(27104,b);d=qc(c[6772]|0)|0;if(!d)Xp(27072,b);d=c[d>>2]|0;if(!d)Xp(27072,b);f=d+48|0;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!((e&-256|0)==1126902528&(f|0)==1129074247)){c[b>>2]=26920;Xp(27032,b)}if((e|0)==1126902529&(f|0)==1129074247)e=c[d+44>>2]|0;else e=d+80|0;c[a>>2]=e;f=c[d>>2]|0;d=c[f+4>>2]|0;if(Aq(27480,f,a)|0){f=c[a>>2]|0;f=md[c[(c[f>>2]|0)+8>>2]&127](f)|0;c[b>>2]=26920;c[b+4>>2]=d;c[b+8>>2]=f;Xp(26936,b)}else{c[b>>2]=26920;c[b+4>>2]=d;Xp(26984,b)}}function Zp(){var a=0;a=i;i=i+16|0;if(!(dc(27088,253)|0)){i=a;return}else Xp(27160,a)}function _p(a){a=a|0;var b=0;b=i;i=i+16|0;Uq(a);if(!(Wc(c[6772]|0,0)|0)){i=b;return}else Xp(27216,b)}function $p(a){a=a|0;var b=0,d=0;b=i;a=(a|0)==0?1:a;d=Tq(a)|0;if(d){i=b;return d|0}while(1){d=c[6860]|0;c[6860]=d+0;if(!d){a=4;break}qd[d&3]();d=Tq(a)|0;if(d){a=5;break}}if((a|0)==4){d=Wb(4)|0;c[d>>2]=27280;Zc(d|0,27328,220)}else if((a|0)==5){i=b;return d|0}return 0}function aq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function bq(a){a=a|0;return}function cq(a){a=a|0;return 27296}function dq(a){a=a|0;var b=0;b=i;i=i+16|0;qd[a&3]();Xp(27344,b)}function eq(){var a=0,b=0;b=i;i=i+16|0;if(yb(27096,2)|0)Xp(27104,b);b=qc(c[6772]|0)|0;if(((b|0)!=0?(a=c[b>>2]|0,(a|0)!=0):0)?(b=a+48|0,(c[b>>2]&-256|0)==1126902528?(c[b+4>>2]|0)==1129074247:0):0)dq(c[a+12>>2]|0);b=c[6728]|0;c[6728]=b+0;dq(b)}function fq(a){a=a|0;return 27448}function gq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27496;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function hq(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27496;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function iq(a){a=a|0;return c[a+4>>2]|0}function jq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27520;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function kq(a){a=a|0;var b=0,d=0,e=0;b=i;c[a>>2]=27520;a=a+4|0;e=(c[a>>2]|0)+ -4|0;d=c[e>>2]|0;c[e>>2]=d+ -1;if((d+ -1|0)>=0){i=b;return}Uq((c[a>>2]|0)+ -12|0);i=b;return}function lq(a){a=a|0;return c[a+4>>2]|0}function mq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27496;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function nq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;c[a>>2]=27496;d=a+4|0;f=(c[d>>2]|0)+ -4|0;e=c[f>>2]|0;c[f>>2]=e+ -1;if((e+ -1|0)>=0){Uq(a);i=b;return}Uq((c[d>>2]|0)+ -12|0);Uq(a);i=b;return}function oq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function pq(a){a=a|0;return}function qq(a){a=a|0;return 27760}function rq(a){a=a|0;return}function sq(a){a=a|0;return}function tq(a){a=a|0;return}function uq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function vq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function wq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function xq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function yq(a){a=a|0;var b=0;b=i;Uq(a);i=b;return}function zq(a,b,c){a=a|0;b=b|0;c=c|0;return(a|0)==(b|0)|0}function Aq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+64|0;f=e;if((a|0)==(b|0)){h=1;i=e;return h|0}if(!b){h=0;i=e;return h|0}b=Hq(b,27928)|0;if(!b){h=0;i=e;return h|0}h=f+0|0;g=h+56|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(g|0));c[f>>2]=b;c[f+8>>2]=a;c[f+12>>2]=-1;c[f+48>>2]=1;xd[c[(c[b>>2]|0)+28>>2]&15](b,f,c[d>>2]|0,1);if((c[f+24>>2]|0)!=1){h=0;i=e;return h|0}c[d>>2]=c[f+16>>2];h=1;i=e;return h|0}function Bq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=b+16|0;h=c[g>>2]|0;if(!h){c[g>>2]=d;c[b+24>>2]=e;c[b+36>>2]=1;i=f;return}if((h|0)!=(d|0)){h=b+36|0;c[h>>2]=(c[h>>2]|0)+1;c[b+24>>2]=2;a[b+54>>0]=1;i=f;return}d=b+24|0;if((c[d>>2]|0)!=2){i=f;return}c[d>>2]=e;i=f;return}function Cq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((c[b+8>>2]|0)!=(a|0)){i=f;return}Bq(b,d,e);i=f;return}function Dq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;if((a|0)==(c[b+8>>2]|0)){Bq(b,d,e);i=f;return}else{a=c[a+8>>2]|0;xd[c[(c[a>>2]|0)+28>>2]&15](a,b,d,e);i=f;return}}function Eq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;g=c[a+4>>2]|0;h=g>>8;if(g&1)h=c[(c[d>>2]|0)+h>>2]|0;a=c[a>>2]|0;xd[c[(c[a>>2]|0)+28>>2]&15](a,b,d+h|0,(g&2|0)!=0?e:2);i=f;return}function Fq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;if((b|0)==(c[d+8>>2]|0)){Bq(d,e,f);i=g;return}j=c[b+12>>2]|0;h=b+(j<<3)+16|0;Eq(b+16|0,d,e,f);if((j|0)<=1){i=g;return}j=d+54|0;b=b+24|0;while(1){Eq(b,d,e,f);if(a[j>>0]|0){f=7;break}b=b+8|0;if(b>>>0>=h>>>0){f=7;break}}if((f|0)==7){i=g;return}}function Gq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+64|0;h=e;c[d>>2]=c[c[d>>2]>>2];if(!((a|0)==(b|0)|(b|0)==28240))if(((b|0)!=0?(k=Hq(b,28040)|0,(k|0)!=0):0)?(c[k+8>>2]&~c[a+8>>2]|0)==0:0){b=c[a+12>>2]|0;k=k+12|0;if(!((b|0)==28224?1:(b|0)==(c[k>>2]|0)))if((((b|0)!=0?(g=Hq(b,27928)|0,(g|0)!=0):0)?(j=c[k>>2]|0,(j|0)!=0):0)?(f=Hq(j,27928)|0,(f|0)!=0):0){k=h+0|0;j=k+56|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(j|0));c[h>>2]=f;c[h+8>>2]=g;c[h+12>>2]=-1;c[h+48>>2]=1;xd[c[(c[f>>2]|0)+28>>2]&15](f,h,c[d>>2]|0,1);if((c[h+24>>2]|0)==1){c[d>>2]=c[h+16>>2];d=1}else d=0}else d=0;else d=1}else d=0;else d=1;i=e;return d|0}function Hq(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+64|0;m=f;g=c[d>>2]|0;h=d+(c[g+ -8>>2]|0)|0;g=c[g+ -4>>2]|0;c[m>>2]=e;c[m+4>>2]=d;c[m+8>>2]=27872;p=m+12|0;n=m+16|0;o=m+20|0;j=m+24|0;d=m+28|0;k=m+32|0;l=m+40|0;r=(g|0)==(e|0);e=p+0|0;q=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(q|0));b[p+40>>1]=0;a[p+42>>0]=0;do if(r){c[m+48>>2]=1;ud[c[(c[g>>2]|0)+20>>2]&31](g,m,h,h,1,0);d=(c[j>>2]|0)==1?h:0}else{hd[c[(c[g>>2]|0)+24>>2]&3](g,m,h,1,0);g=c[m+36>>2]|0;if(!g){if((c[l>>2]|0)!=1){d=0;break}if((c[d>>2]|0)!=1){d=0;break}d=(c[k>>2]|0)==1?c[o>>2]|0:0;break}else if((g|0)!=1){d=0;break}if((c[j>>2]|0)!=1){if(c[l>>2]|0){d=0;break}if((c[d>>2]|0)!=1){d=0;break}if((c[k>>2]|0)!=1){d=0;break}}d=c[n>>2]|0}while(0);i=f;return d|0}function Iq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;a[b+53>>0]=1;if((c[b+4>>2]|0)!=(e|0)){i=g;return}a[b+52>>0]=1;e=b+16|0;h=c[e>>2]|0;if(!h){c[e>>2]=d;c[b+24>>2]=f;c[b+36>>2]=1;if(!((f|0)==1?(c[b+48>>2]|0)==1:0)){i=g;return}a[b+54>>0]=1;i=g;return}if((h|0)!=(d|0)){h=b+36|0;c[h>>2]=(c[h>>2]|0)+1;a[b+54>>0]=1;i=g;return}d=b+24|0;e=c[d>>2]|0;if((e|0)==2)c[d>>2]=f;else f=e;if(!((f|0)==1?(c[b+48>>2]|0)==1:0)){i=g;return}a[b+54>>0]=1;i=g;return}function Jq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=i;if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){i=h;return}e=d+28|0;if((c[e>>2]|0)==1){i=h;return}c[e>>2]=f;i=h;return}if((b|0)!=(c[d>>2]|0)){u=c[b+12>>2]|0;m=b+(u<<3)+16|0;Lq(b+16|0,d,e,f,g);n=b+24|0;if((u|0)<=1){i=h;return}p=c[b+8>>2]|0;if((p&2|0)==0?(o=d+36|0,(c[o>>2]|0)!=1):0){if(!(p&1)){q=d+54|0;p=n;while(1){if(a[q>>0]|0){p=43;break}if((c[o>>2]|0)==1){p=43;break}Lq(p,d,e,f,g);p=p+8|0;if(p>>>0>=m>>>0){p=43;break}}if((p|0)==43){i=h;return}}p=d+24|0;q=d+54|0;r=n;while(1){if(a[q>>0]|0){p=43;break}if((c[o>>2]|0)==1?(c[p>>2]|0)==1:0){p=43;break}Lq(r,d,e,f,g);r=r+8|0;if(r>>>0>=m>>>0){p=43;break}}if((p|0)==43){i=h;return}}o=d+54|0;while(1){if(a[o>>0]|0){p=43;break}Lq(n,d,e,f,g);n=n+8|0;if(n>>>0>=m>>>0){p=43;break}}if((p|0)==43){i=h;return}}if((c[d+16>>2]|0)!=(e|0)?(j=d+20|0,(c[j>>2]|0)!=(e|0)):0){c[d+32>>2]=f;m=d+44|0;if((c[m>>2]|0)==4){i=h;return}u=c[b+12>>2]|0;t=b+(u<<3)+16|0;a:do if((u|0)>0){o=d+52|0;n=d+53|0;r=d+54|0;q=b+8|0;p=d+24|0;u=0;s=0;b=b+16|0;b:do{a[o>>0]=0;a[n>>0]=0;Kq(b,d,e,e,1,g);if(a[r>>0]|0)break;do if(a[n>>0]|0){if(!(a[o>>0]|0))if(!(c[q>>2]&1)){s=1;break b}else{s=1;break}if((c[p>>2]|0)==1){p=25;break a}if(!(c[q>>2]&2)){p=25;break a}else{u=1;s=1}}while(0);b=b+8|0}while(b>>>0>>0);if(u){l=s;p=24}else{k=s;p=21}}else{k=0;p=21}while(0);if((p|0)==21){c[j>>2]=e;u=d+40|0;c[u>>2]=(c[u>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(k)p=25;else p=26}else{l=k;p=24}}if((p|0)==24)if(l)p=25;else p=26;if((p|0)==25){c[m>>2]=3;i=h;return}else if((p|0)==26){c[m>>2]=4;i=h;return}}if((f|0)!=1){i=h;return}c[d+32>>2]=1;i=h;return}function Kq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;h=i;j=c[a+4>>2]|0;k=j>>8;if(j&1)k=c[(c[e>>2]|0)+k>>2]|0;a=c[a>>2]|0;ud[c[(c[a>>2]|0)+20>>2]&31](a,b,d,e+k|0,(j&2|0)!=0?f:2,g);i=h;return}function Lq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;h=c[a+4>>2]|0;j=h>>8;if(h&1)j=c[(c[d>>2]|0)+j>>2]|0;a=c[a>>2]|0;hd[c[(c[a>>2]|0)+24>>2]&3](a,b,d+j|0,(h&2|0)!=0?e:2,f);i=g;return}function Mq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;if((b|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){i=h;return}j=d+28|0;if((c[j>>2]|0)==1){i=h;return}c[j>>2]=f;i=h;return}if((b|0)!=(c[d>>2]|0)){l=c[b+8>>2]|0;hd[c[(c[l>>2]|0)+24>>2]&3](l,d,e,f,g);i=h;return}if((c[d+16>>2]|0)!=(e|0)?(k=d+20|0,(c[k>>2]|0)!=(e|0)):0){c[d+32>>2]=f;f=d+44|0;if((c[f>>2]|0)==4){i=h;return}l=d+52|0;a[l>>0]=0;m=d+53|0;a[m>>0]=0;b=c[b+8>>2]|0;ud[c[(c[b>>2]|0)+20>>2]&31](b,d,e,e,1,g);if(a[m>>0]|0){if(!(a[l>>0]|0)){b=1;j=13}}else{b=0;j=13}do if((j|0)==13){c[k>>2]=e;m=d+40|0;c[m>>2]=(c[m>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0){a[d+54>>0]=1;if(b)break}else j=16;if((j|0)==16?b:0)break;c[f>>2]=4;i=h;return}while(0);c[f>>2]=3;i=h;return}if((f|0)!=1){i=h;return}c[d+32>>2]=1;i=h;return}function Nq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;g=i;if((c[d+8>>2]|0)==(b|0)){if((c[d+4>>2]|0)!=(e|0)){i=g;return}d=d+28|0;if((c[d>>2]|0)==1){i=g;return}c[d>>2]=f;i=g;return}if((c[d>>2]|0)!=(b|0)){i=g;return}if((c[d+16>>2]|0)!=(e|0)?(h=d+20|0,(c[h>>2]|0)!=(e|0)):0){c[d+32>>2]=f;c[h>>2]=e;b=d+40|0;c[b>>2]=(c[b>>2]|0)+1;if((c[d+36>>2]|0)==1?(c[d+24>>2]|0)==2:0)a[d+54>>0]=1;c[d+44>>2]=4;i=g;return}if((f|0)!=1){i=g;return}c[d+32>>2]=1;i=g;return}function Oq(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;m=i;if((b|0)==(c[d+8>>2]|0)){Iq(d,e,f,g);i=m;return}j=d+52|0;l=a[j>>0]|0;o=d+53|0;n=a[o>>0]|0;r=c[b+12>>2]|0;p=b+(r<<3)+16|0;a[j>>0]=0;a[o>>0]=0;Kq(b+16|0,d,e,f,g,h);a:do if((r|0)>1){k=d+24|0;q=b+8|0;r=d+54|0;b=b+24|0;do{if(a[r>>0]|0)break a;if(!(a[j>>0]|0)){if((a[o>>0]|0)!=0?(c[q>>2]&1|0)==0:0)break a}else{if((c[k>>2]|0)==1)break a;if(!(c[q>>2]&2))break a}a[j>>0]=0;a[o>>0]=0;Kq(b,d,e,f,g,h);b=b+8|0}while(b>>>0

        >>0)}while(0);a[j>>0]=l;a[o>>0]=n;i=m;return}function Pq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;if((a|0)==(c[b+8>>2]|0)){Iq(b,d,e,f);i=h;return}else{a=c[a+8>>2]|0;ud[c[(c[a>>2]|0)+20>>2]&31](a,b,d,e,f,g);i=h;return}}function Qq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;g=i;if((c[b+8>>2]|0)!=(a|0)){i=g;return}Iq(b,d,e,f);i=g;return}function Rq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=c[d>>2];a=fd[c[(c[a>>2]|0)+16>>2]&31](a,b,f)|0;b=a&1;if(!a){i=e;return b|0}c[d>>2]=c[f>>2];i=e;return b|0}function Sq(a){a=a|0;var b=0;b=i;if(!a)a=0;else a=(Hq(a,28040)|0)!=0;i=b;return a&1|0}function Tq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;b=i;do if(a>>>0<245){if(a>>>0<11)a=16;else a=a+11&-8;v=a>>>3;p=c[7152]|0;w=p>>>v;if(w&3){h=(w&1^1)+v|0;g=h<<1;e=28648+(g<<2)|0;g=28648+(g+2<<2)|0;j=c[g>>2]|0;d=j+8|0;f=c[d>>2]|0;do if((e|0)!=(f|0)){if(f>>>0<(c[7156]|0)>>>0)mc();k=f+12|0;if((c[k>>2]|0)==(j|0)){c[k>>2]=e;c[g>>2]=f;break}else mc()}else c[7152]=p&~(1<>2]=H|3;H=j+(H|4)|0;c[H>>2]=c[H>>2]|1;H=d;i=b;return H|0}if(a>>>0>(c[7154]|0)>>>0){if(w){h=2<>>12&16;h=h>>>d;f=h>>>5&8;h=h>>>f;g=h>>>2&4;h=h>>>g;e=h>>>1&2;h=h>>>e;j=h>>>1&1;j=(f|d|g|e|j)+(h>>>j)|0;h=j<<1;e=28648+(h<<2)|0;h=28648+(h+2<<2)|0;g=c[h>>2]|0;d=g+8|0;f=c[d>>2]|0;do if((e|0)!=(f|0)){if(f>>>0<(c[7156]|0)>>>0)mc();k=f+12|0;if((c[k>>2]|0)==(g|0)){c[k>>2]=e;c[h>>2]=f;break}else mc()}else c[7152]=p&~(1<>2]=a|3;e=g+a|0;c[g+(a|4)>>2]=f|1;c[g+h>>2]=f;h=c[7154]|0;if(h){g=c[7157]|0;k=h>>>3;j=k<<1;h=28648+(j<<2)|0;l=c[7152]|0;k=1<>2]|0;if(k>>>0<(c[7156]|0)>>>0)mc();else{D=j;C=k}}else{c[7152]=l|k;D=28648+(j+2<<2)|0;C=h}c[D>>2]=g;c[C+12>>2]=g;c[g+8>>2]=C;c[g+12>>2]=h}c[7154]=f;c[7157]=e;H=d;i=b;return H|0}p=c[7153]|0;if(p){e=(p&0-p)+ -1|0;G=e>>>12&16;e=e>>>G;F=e>>>5&8;e=e>>>F;H=e>>>2&4;e=e>>>H;f=e>>>1&2;e=e>>>f;d=e>>>1&1;d=c[28912+((F|G|H|f|d)+(e>>>d)<<2)>>2]|0;e=(c[d+4>>2]&-8)-a|0;f=d;while(1){g=c[f+16>>2]|0;if(!g){g=c[f+20>>2]|0;if(!g)break}f=(c[g+4>>2]&-8)-a|0;H=f>>>0>>0;e=H?f:e;f=g;d=H?g:d}h=c[7156]|0;if(d>>>0>>0)mc();f=d+a|0;if(d>>>0>=f>>>0)mc();g=c[d+24>>2]|0;k=c[d+12>>2]|0;do if((k|0)==(d|0)){k=d+20|0;j=c[k>>2]|0;if(!j){k=d+16|0;j=c[k>>2]|0;if(!j){B=0;break}}while(1){l=j+20|0;m=c[l>>2]|0;if(m){j=m;k=l;continue}m=j+16|0;l=c[m>>2]|0;if(!l)break;else{j=l;k=m}}if(k>>>0>>0)mc();else{c[k>>2]=0;B=j;break}}else{j=c[d+8>>2]|0;if(j>>>0>>0)mc();h=j+12|0;if((c[h>>2]|0)!=(d|0))mc();l=k+8|0;if((c[l>>2]|0)==(d|0)){c[h>>2]=k;c[l>>2]=j;B=k;break}else mc()}while(0);do if(g){h=c[d+28>>2]|0;j=28912+(h<<2)|0;if((d|0)==(c[j>>2]|0)){c[j>>2]=B;if(!B){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();h=g+16|0;if((c[h>>2]|0)==(d|0))c[h>>2]=B;else c[g+20>>2]=B;if(!B)break}if(B>>>0<(c[7156]|0)>>>0)mc();c[B+24>>2]=g;g=c[d+16>>2]|0;do if(g)if(g>>>0<(c[7156]|0)>>>0)mc();else{c[B+16>>2]=g;c[g+24>>2]=B;break}while(0);g=c[d+20>>2]|0;if(g)if(g>>>0<(c[7156]|0)>>>0)mc();else{c[B+20>>2]=g;c[g+24>>2]=B;break}}while(0);if(e>>>0<16){H=e+a|0;c[d+4>>2]=H|3;H=d+(H+4)|0;c[H>>2]=c[H>>2]|1}else{c[d+4>>2]=a|3;c[d+(a|4)>>2]=e|1;c[d+(e+a)>>2]=e;h=c[7154]|0;if(h){g=c[7157]|0;l=h>>>3;j=l<<1;h=28648+(j<<2)|0;k=c[7152]|0;l=1<>2]|0;if(k>>>0<(c[7156]|0)>>>0)mc();else{A=j;z=k}}else{c[7152]=k|l;A=28648+(j+2<<2)|0;z=h}c[A>>2]=g;c[z+12>>2]=g;c[g+8>>2]=z;c[g+12>>2]=h}c[7154]=e;c[7157]=f}H=d+8|0;i=b;return H|0}}}else if(a>>>0<=4294967231){z=a+11|0;a=z&-8;B=c[7153]|0;if(B){A=0-a|0;z=z>>>8;if(z)if(a>>>0>16777215)C=31;else{G=(z+1048320|0)>>>16&8;H=z<>>16&4;H=H<>>16&2;C=14-(F|G|C)+(H<>>15)|0;C=a>>>(C+7|0)&1|C<<1}else C=0;D=c[28912+(C<<2)>>2]|0;a:do if(!D){F=0;z=0}else{if((C|0)==31)z=0;else z=25-(C>>>1)|0;F=0;E=a<>2]&-8;G=H-a|0;if(G>>>0>>0)if((H|0)==(a|0)){A=G;F=D;z=D;break a}else{A=G;z=D}H=c[D+20>>2]|0;D=c[D+(E>>>31<<2)+16>>2]|0;F=(H|0)==0|(H|0)==(D|0)?F:H;if(!D)break;else E=E<<1}}while(0);if((F|0)==0&(z|0)==0){H=2<>>12&16;H=H>>>D;C=H>>>5&8;H=H>>>C;E=H>>>2&4;H=H>>>E;G=H>>>1&2;H=H>>>G;F=H>>>1&1;F=c[28912+((C|D|E|G|F)+(H>>>F)<<2)>>2]|0}if(F)while(1){H=(c[F+4>>2]&-8)-a|0;B=H>>>0>>0;A=B?H:A;z=B?F:z;B=c[F+16>>2]|0;if(B){F=B;continue}F=c[F+20>>2]|0;if(!F)break}if((z|0)!=0?A>>>0<((c[7154]|0)-a|0)>>>0:0){f=c[7156]|0;if(z>>>0>>0)mc();d=z+a|0;if(z>>>0>=d>>>0)mc();e=c[z+24>>2]|0;h=c[z+12>>2]|0;do if((h|0)==(z|0)){h=z+20|0;g=c[h>>2]|0;if(!g){h=z+16|0;g=c[h>>2]|0;if(!g){x=0;break}}while(1){j=g+20|0;k=c[j>>2]|0;if(k){g=k;h=j;continue}j=g+16|0;k=c[j>>2]|0;if(!k)break;else{g=k;h=j}}if(h>>>0>>0)mc();else{c[h>>2]=0;x=g;break}}else{g=c[z+8>>2]|0;if(g>>>0>>0)mc();f=g+12|0;if((c[f>>2]|0)!=(z|0))mc();j=h+8|0;if((c[j>>2]|0)==(z|0)){c[f>>2]=h;c[j>>2]=g;x=h;break}else mc()}while(0);do if(e){g=c[z+28>>2]|0;f=28912+(g<<2)|0;if((z|0)==(c[f>>2]|0)){c[f>>2]=x;if(!x){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();f=e+16|0;if((c[f>>2]|0)==(z|0))c[f>>2]=x;else c[e+20>>2]=x;if(!x)break}if(x>>>0<(c[7156]|0)>>>0)mc();c[x+24>>2]=e;e=c[z+16>>2]|0;do if(e)if(e>>>0<(c[7156]|0)>>>0)mc();else{c[x+16>>2]=e;c[e+24>>2]=x;break}while(0);e=c[z+20>>2]|0;if(e)if(e>>>0<(c[7156]|0)>>>0)mc();else{c[x+20>>2]=e;c[e+24>>2]=x;break}}while(0);b:do if(A>>>0>=16){c[z+4>>2]=a|3;c[z+(a|4)>>2]=A|1;c[z+(A+a)>>2]=A;f=A>>>3;if(A>>>0<256){h=f<<1;e=28648+(h<<2)|0;g=c[7152]|0;f=1<>2]|0;if(g>>>0>=(c[7156]|0)>>>0){w=f;v=g;break}mc()}while(0);c[w>>2]=d;c[v+12>>2]=d;c[z+(a+8)>>2]=v;c[z+(a+12)>>2]=e;break}e=A>>>8;if(e)if(A>>>0>16777215)e=31;else{G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=A>>>(e+7|0)&1|e<<1}else e=0;f=28912+(e<<2)|0;c[z+(a+28)>>2]=e;c[z+(a+20)>>2]=0;c[z+(a+16)>>2]=0;h=c[7153]|0;g=1<>2]=d;c[z+(a+24)>>2]=f;c[z+(a+12)>>2]=d;c[z+(a+8)>>2]=d;break}f=c[f>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;c:do if((c[f+4>>2]&-8|0)!=(A|0)){e=A<>>31<<2)+16|0;h=c[g>>2]|0;if(!h)break;if((c[h+4>>2]&-8|0)==(A|0)){p=h;break c}else{e=e<<1;f=h}}if(g>>>0<(c[7156]|0)>>>0)mc();else{c[g>>2]=d;c[z+(a+24)>>2]=f;c[z+(a+12)>>2]=d;c[z+(a+8)>>2]=d;break b}}else p=f;while(0);f=p+8|0;e=c[f>>2]|0;g=c[7156]|0;if(p>>>0>>0)mc();if(e>>>0>>0)mc();else{c[e+12>>2]=d;c[f>>2]=d;c[z+(a+8)>>2]=e;c[z+(a+12)>>2]=p;c[z+(a+24)>>2]=0;break}}else{H=A+a|0;c[z+4>>2]=H|3;H=z+(H+4)|0;c[H>>2]=c[H>>2]|1}while(0);H=z+8|0;i=b;return H|0}}}else a=-1;while(0);p=c[7154]|0;if(a>>>0<=p>>>0){e=p-a|0;d=c[7157]|0;if(e>>>0>15){c[7157]=d+a;c[7154]=e;c[d+(a+4)>>2]=e|1;c[d+p>>2]=e;c[d+4>>2]=a|3}else{c[7154]=0;c[7157]=0;c[d+4>>2]=p|3;H=d+(p+4)|0;c[H>>2]=c[H>>2]|1}H=d+8|0;i=b;return H|0}p=c[7155]|0;if(a>>>0

        >>0){G=p-a|0;c[7155]=G;H=c[7158]|0;c[7158]=H+a;c[H+(a+4)>>2]=G|1;c[H+4>>2]=a|3;H=H+8|0;i=b;return H|0}do if(!(c[7270]|0)){p=Ra(30)|0;if(!(p+ -1&p)){c[7272]=p;c[7271]=p;c[7273]=-1;c[7274]=-1;c[7275]=0;c[7263]=0;c[7270]=(Jb(0)|0)&-16^1431655768;break}else mc()}while(0);w=a+48|0;p=c[7272]|0;x=a+47|0;z=p+x|0;p=0-p|0;v=z&p;if(v>>>0<=a>>>0){H=0;i=b;return H|0}A=c[7262]|0;if((A|0)!=0?(G=c[7260]|0,H=G+v|0,H>>>0<=G>>>0|H>>>0>A>>>0):0){H=0;i=b;return H|0}d:do if(!(c[7263]&4)){B=c[7158]|0;e:do if(B){A=29056|0;while(1){C=c[A>>2]|0;if(C>>>0<=B>>>0?(y=A+4|0,(C+(c[y>>2]|0)|0)>>>0>B>>>0):0)break;A=c[A+8>>2]|0;if(!A){o=182;break e}}if(A){B=z-(c[7155]|0)&p;if(B>>>0<2147483647){p=Na(B|0)|0;A=(p|0)==((c[A>>2]|0)+(c[y>>2]|0)|0);y=p;z=B;p=A?p:-1;A=A?B:0;o=191}else A=0}else o=182}else o=182;while(0);do if((o|0)==182){p=Na(0)|0;if((p|0)!=(-1|0)){z=p;A=c[7271]|0;y=A+ -1|0;if(!(y&z))A=v;else A=v-z+(y+z&0-A)|0;y=c[7260]|0;z=y+A|0;if(A>>>0>a>>>0&A>>>0<2147483647){H=c[7262]|0;if((H|0)!=0?z>>>0<=y>>>0|z>>>0>H>>>0:0){A=0;break}y=Na(A|0)|0;o=(y|0)==(p|0);z=A;p=o?p:-1;A=o?A:0;o=191}else A=0}else A=0}while(0);f:do if((o|0)==191){o=0-z|0;if((p|0)!=(-1|0)){q=A;o=202;break d}do if((y|0)!=(-1|0)&z>>>0<2147483647&z>>>0>>0?(u=c[7272]|0,u=x-z+u&0-u,u>>>0<2147483647):0)if((Na(u|0)|0)==(-1|0)){Na(o|0)|0;break f}else{z=u+z|0;break}while(0);if((y|0)!=(-1|0)){p=y;q=z;o=202;break d}}while(0);c[7263]=c[7263]|4;o=199}else{A=0;o=199}while(0);if((((o|0)==199?v>>>0<2147483647:0)?(t=Na(v|0)|0,s=Na(0)|0,(s|0)!=(-1|0)&(t|0)!=(-1|0)&t>>>0>>0):0)?(r=s-t|0,q=r>>>0>(a+40|0)>>>0,q):0){p=t;q=q?r:A;o=202}if((o|0)==202){r=(c[7260]|0)+q|0;c[7260]=r;if(r>>>0>(c[7261]|0)>>>0)c[7261]=r;r=c[7158]|0;g:do if(r){v=29056|0;while(1){t=c[v>>2]|0;u=v+4|0;s=c[u>>2]|0;if((p|0)==(t+s|0)){o=214;break}w=c[v+8>>2]|0;if(!w)break;else v=w}if(((o|0)==214?(c[v+12>>2]&8|0)==0:0)?r>>>0>=t>>>0&r>>>0

        >>0:0){c[u>>2]=s+q;d=(c[7155]|0)+q|0;e=r+8|0;if(!(e&7))e=0;else e=0-e&7;H=d-e|0;c[7158]=r+e;c[7155]=H;c[r+(e+4)>>2]=H|1;c[r+(d+4)>>2]=40;c[7159]=c[7274];break}if(p>>>0<(c[7156]|0)>>>0)c[7156]=p;t=p+q|0;s=29056|0;while(1){if((c[s>>2]|0)==(t|0)){o=224;break}u=c[s+8>>2]|0;if(!u)break;else s=u}if((o|0)==224?(c[s+12>>2]&8|0)==0:0){c[s>>2]=p;h=s+4|0;c[h>>2]=(c[h>>2]|0)+q;h=p+8|0;if(!(h&7))h=0;else h=0-h&7;j=p+(q+8)|0;if(!(j&7))n=0;else n=0-j&7;o=p+(n+q)|0;j=h+a|0;k=p+j|0;m=o-(p+h)-a|0;c[p+(h+4)>>2]=a|3;h:do if((o|0)!=(c[7158]|0)){if((o|0)==(c[7157]|0)){H=(c[7154]|0)+m|0;c[7154]=H;c[7157]=k;c[p+(j+4)>>2]=H|1;c[p+(H+j)>>2]=H;break}r=q+4|0;t=c[p+(r+n)>>2]|0;if((t&3|0)==1){a=t&-8;s=t>>>3;i:do if(t>>>0>=256){l=c[p+((n|24)+q)>>2]|0;u=c[p+(q+12+n)>>2]|0;do if((u|0)==(o|0)){u=n|16;t=p+(r+u)|0;s=c[t>>2]|0;if(!s){t=p+(u+q)|0;s=c[t>>2]|0;if(!s){g=0;break}}while(1){u=s+20|0;v=c[u>>2]|0;if(v){s=v;t=u;continue}u=s+16|0;v=c[u>>2]|0;if(!v)break;else{s=v;t=u}}if(t>>>0<(c[7156]|0)>>>0)mc();else{c[t>>2]=0;g=s;break}}else{t=c[p+((n|8)+q)>>2]|0;if(t>>>0<(c[7156]|0)>>>0)mc();v=t+12|0;if((c[v>>2]|0)!=(o|0))mc();s=u+8|0;if((c[s>>2]|0)==(o|0)){c[v>>2]=u;c[s>>2]=t;g=u;break}else mc()}while(0);if(!l)break;t=c[p+(q+28+n)>>2]|0;s=28912+(t<<2)|0;do if((o|0)!=(c[s>>2]|0)){if(l>>>0<(c[7156]|0)>>>0)mc();s=l+16|0;if((c[s>>2]|0)==(o|0))c[s>>2]=g;else c[l+20>>2]=g;if(!g)break i}else{c[s>>2]=g;if(g)break;c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();c[g+24>>2]=l;l=n|16;o=c[p+(l+q)>>2]|0;do if(o)if(o>>>0<(c[7156]|0)>>>0)mc();else{c[g+16>>2]=o;c[o+24>>2]=g;break}while(0);l=c[p+(r+l)>>2]|0;if(!l)break;if(l>>>0<(c[7156]|0)>>>0)mc();else{c[g+20>>2]=l;c[l+24>>2]=g;break}}else{r=c[p+((n|8)+q)>>2]|0;g=c[p+(q+12+n)>>2]|0;t=28648+(s<<1<<2)|0;do if((r|0)!=(t|0)){if(r>>>0<(c[7156]|0)>>>0)mc();if((c[r+12>>2]|0)==(o|0))break;mc()}while(0);if((g|0)==(r|0)){c[7152]=c[7152]&~(1<>>0<(c[7156]|0)>>>0)mc();s=g+8|0;if((c[s>>2]|0)==(o|0)){l=s;break}mc()}while(0);c[r+12>>2]=g;c[l>>2]=r}while(0);o=p+((a|n)+q)|0;m=a+m|0}g=o+4|0;c[g>>2]=c[g>>2]&-2;c[p+(j+4)>>2]=m|1;c[p+(m+j)>>2]=m;g=m>>>3;if(m>>>0<256){m=g<<1;d=28648+(m<<2)|0;l=c[7152]|0;g=1<>2]|0;if(g>>>0>=(c[7156]|0)>>>0){f=l;e=g;break}mc()}while(0);c[f>>2]=k;c[e+12>>2]=k;c[p+(j+8)>>2]=e;c[p+(j+12)>>2]=d;break}e=m>>>8;do if(!e)e=0;else{if(m>>>0>16777215){e=31;break}G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=m>>>(e+7|0)&1|e<<1}while(0);l=28912+(e<<2)|0;c[p+(j+28)>>2]=e;c[p+(j+20)>>2]=0;c[p+(j+16)>>2]=0;f=c[7153]|0;g=1<>2]=k;c[p+(j+24)>>2]=l;c[p+(j+12)>>2]=k;c[p+(j+8)>>2]=k;break}l=c[l>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;j:do if((c[l+4>>2]&-8|0)!=(m|0)){e=m<>>31<<2)+16|0;f=c[g>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(m|0)){d=f;break j}else{e=e<<1;l=f}}if(g>>>0<(c[7156]|0)>>>0)mc();else{c[g>>2]=k;c[p+(j+24)>>2]=l;c[p+(j+12)>>2]=k;c[p+(j+8)>>2]=k;break h}}else d=l;while(0);f=d+8|0;e=c[f>>2]|0;g=c[7156]|0;if(d>>>0>>0)mc();if(e>>>0>>0)mc();else{c[e+12>>2]=k;c[f>>2]=k;c[p+(j+8)>>2]=e;c[p+(j+12)>>2]=d;c[p+(j+24)>>2]=0;break}}else{H=(c[7155]|0)+m|0;c[7155]=H;c[7158]=k;c[p+(j+4)>>2]=H|1}while(0);H=p+(h|8)|0;i=b;return H|0}e=29056|0;while(1){d=c[e>>2]|0;if(d>>>0<=r>>>0?(n=c[e+4>>2]|0,m=d+n|0,m>>>0>r>>>0):0)break;e=c[e+8>>2]|0}e=d+(n+ -39)|0;if(!(e&7))e=0;else e=0-e&7;d=d+(n+ -47+e)|0;d=d>>>0<(r+16|0)>>>0?r:d;e=d+8|0;f=p+8|0;if(!(f&7))f=0;else f=0-f&7;H=q+ -40-f|0;c[7158]=p+f;c[7155]=H;c[p+(f+4)>>2]=H|1;c[p+(q+ -36)>>2]=40;c[7159]=c[7274];c[d+4>>2]=27;c[e+0>>2]=c[7264];c[e+4>>2]=c[7265];c[e+8>>2]=c[7266];c[e+12>>2]=c[7267];c[7264]=p;c[7265]=q;c[7267]=0;c[7266]=e;e=d+28|0;c[e>>2]=7;if((d+32|0)>>>0>>0)do{H=e;e=e+4|0;c[e>>2]=7}while((H+8|0)>>>0>>0);if((d|0)!=(r|0)){d=d-r|0;e=r+(d+4)|0;c[e>>2]=c[e>>2]&-2;c[r+4>>2]=d|1;c[r+d>>2]=d;e=d>>>3;if(d>>>0<256){g=e<<1;d=28648+(g<<2)|0;f=c[7152]|0;e=1<>2]|0;if(e>>>0>=(c[7156]|0)>>>0){k=f;j=e;break}mc()}while(0);c[k>>2]=r;c[j+12>>2]=r;c[r+8>>2]=j;c[r+12>>2]=d;break}e=d>>>8;if(e)if(d>>>0>16777215)e=31;else{G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=d>>>(e+7|0)&1|e<<1}else e=0;j=28912+(e<<2)|0;c[r+28>>2]=e;c[r+20>>2]=0;c[r+16>>2]=0;f=c[7153]|0;g=1<>2]=r;c[r+24>>2]=j;c[r+12>>2]=r;c[r+8>>2]=r;break}f=c[j>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;k:do if((c[f+4>>2]&-8|0)!=(d|0)){e=d<>>31<<2)+16|0;g=c[j>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(d|0)){h=g;break k}else{e=e<<1;f=g}}if(j>>>0<(c[7156]|0)>>>0)mc();else{c[j>>2]=r;c[r+24>>2]=f;c[r+12>>2]=r;c[r+8>>2]=r;break g}}else h=f;while(0);f=h+8|0;e=c[f>>2]|0;d=c[7156]|0;if(h>>>0>>0)mc();if(e>>>0>>0)mc();else{c[e+12>>2]=r;c[f>>2]=r;c[r+8>>2]=e;c[r+12>>2]=h;c[r+24>>2]=0;break}}}else{H=c[7156]|0;if((H|0)==0|p>>>0>>0)c[7156]=p;c[7264]=p;c[7265]=q;c[7267]=0;c[7161]=c[7270];c[7160]=-1;d=0;do{H=d<<1;G=28648+(H<<2)|0;c[28648+(H+3<<2)>>2]=G;c[28648+(H+2<<2)>>2]=G;d=d+1|0}while((d|0)!=32);d=p+8|0;if(!(d&7))d=0;else d=0-d&7;H=q+ -40-d|0;c[7158]=p+d;c[7155]=H;c[p+(d+4)>>2]=H|1;c[p+(q+ -36)>>2]=40;c[7159]=c[7274]}while(0);d=c[7155]|0;if(d>>>0>a>>>0){G=d-a|0;c[7155]=G;H=c[7158]|0;c[7158]=H+a;c[H+(a+4)>>2]=G|1;c[H+4>>2]=a|3;H=H+8|0;i=b;return H|0}}c[(Uc()|0)>>2]=12;H=0;i=b;return H|0}function Uq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;b=i;if(!a){i=b;return}q=a+ -8|0;r=c[7156]|0;if(q>>>0>>0)mc();o=c[a+ -4>>2]|0;n=o&3;if((n|0)==1)mc();j=o&-8;h=a+(j+ -8)|0;do if(!(o&1)){u=c[q>>2]|0;if(!n){i=b;return}q=-8-u|0;o=a+q|0;n=u+j|0;if(o>>>0>>0)mc();if((o|0)==(c[7157]|0)){d=a+(j+ -4)|0;if((c[d>>2]&3|0)!=3){d=o;m=n;break}c[7154]=n;c[d>>2]=c[d>>2]&-2;c[a+(q+4)>>2]=n|1;c[h>>2]=n;i=b;return}t=u>>>3;if(u>>>0<256){d=c[a+(q+8)>>2]|0;m=c[a+(q+12)>>2]|0;p=28648+(t<<1<<2)|0;if((d|0)!=(p|0)){if(d>>>0>>0)mc();if((c[d+12>>2]|0)!=(o|0))mc()}if((m|0)==(d|0)){c[7152]=c[7152]&~(1<>>0>>0)mc();p=m+8|0;if((c[p>>2]|0)==(o|0))s=p;else mc()}else s=m+8|0;c[d+12>>2]=m;c[s>>2]=d;d=o;m=n;break}s=c[a+(q+24)>>2]|0;t=c[a+(q+12)>>2]|0;do if((t|0)==(o|0)){u=a+(q+20)|0;t=c[u>>2]|0;if(!t){u=a+(q+16)|0;t=c[u>>2]|0;if(!t){p=0;break}}while(1){w=t+20|0;v=c[w>>2]|0;if(v){t=v;u=w;continue}v=t+16|0;w=c[v>>2]|0;if(!w)break;else{t=w;u=v}}if(u>>>0>>0)mc();else{c[u>>2]=0;p=t;break}}else{u=c[a+(q+8)>>2]|0;if(u>>>0>>0)mc();r=u+12|0;if((c[r>>2]|0)!=(o|0))mc();v=t+8|0;if((c[v>>2]|0)==(o|0)){c[r>>2]=t;c[v>>2]=u;p=t;break}else mc()}while(0);if(s){t=c[a+(q+28)>>2]|0;r=28912+(t<<2)|0;if((o|0)==(c[r>>2]|0)){c[r>>2]=p;if(!p){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();r=s+16|0;if((c[r>>2]|0)==(o|0))c[r>>2]=p;else c[s+20>>2]=p;if(!p){d=o;m=n;break}}if(p>>>0<(c[7156]|0)>>>0)mc();c[p+24>>2]=s;r=c[a+(q+16)>>2]|0;do if(r)if(r>>>0<(c[7156]|0)>>>0)mc();else{c[p+16>>2]=r;c[r+24>>2]=p;break}while(0);q=c[a+(q+20)>>2]|0;if(q)if(q>>>0<(c[7156]|0)>>>0)mc();else{c[p+20>>2]=q;c[q+24>>2]=p;d=o;m=n;break}else{d=o;m=n}}else{d=o;m=n}}else{d=q;m=j}while(0);if(d>>>0>=h>>>0)mc();n=a+(j+ -4)|0;o=c[n>>2]|0;if(!(o&1))mc();if(!(o&2)){if((h|0)==(c[7158]|0)){w=(c[7155]|0)+m|0;c[7155]=w;c[7158]=d;c[d+4>>2]=w|1;if((d|0)!=(c[7157]|0)){i=b;return}c[7157]=0;c[7154]=0;i=b;return}if((h|0)==(c[7157]|0)){w=(c[7154]|0)+m|0;c[7154]=w;c[7157]=d;c[d+4>>2]=w|1;c[d+w>>2]=w;i=b;return}m=(o&-8)+m|0;n=o>>>3;do if(o>>>0>=256){l=c[a+(j+16)>>2]|0;q=c[a+(j|4)>>2]|0;do if((q|0)==(h|0)){o=a+(j+12)|0;n=c[o>>2]|0;if(!n){o=a+(j+8)|0;n=c[o>>2]|0;if(!n){k=0;break}}while(1){p=n+20|0;q=c[p>>2]|0;if(q){n=q;o=p;continue}p=n+16|0;q=c[p>>2]|0;if(!q)break;else{n=q;o=p}}if(o>>>0<(c[7156]|0)>>>0)mc();else{c[o>>2]=0;k=n;break}}else{o=c[a+j>>2]|0;if(o>>>0<(c[7156]|0)>>>0)mc();p=o+12|0;if((c[p>>2]|0)!=(h|0))mc();n=q+8|0;if((c[n>>2]|0)==(h|0)){c[p>>2]=q;c[n>>2]=o;k=q;break}else mc()}while(0);if(l){n=c[a+(j+20)>>2]|0;o=28912+(n<<2)|0;if((h|0)==(c[o>>2]|0)){c[o>>2]=k;if(!k){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();n=l+16|0;if((c[n>>2]|0)==(h|0))c[n>>2]=k;else c[l+20>>2]=k;if(!k)break}if(k>>>0<(c[7156]|0)>>>0)mc();c[k+24>>2]=l;h=c[a+(j+8)>>2]|0;do if(h)if(h>>>0<(c[7156]|0)>>>0)mc();else{c[k+16>>2]=h;c[h+24>>2]=k;break}while(0);h=c[a+(j+12)>>2]|0;if(h)if(h>>>0<(c[7156]|0)>>>0)mc();else{c[k+20>>2]=h;c[h+24>>2]=k;break}}}else{k=c[a+j>>2]|0;a=c[a+(j|4)>>2]|0;j=28648+(n<<1<<2)|0;if((k|0)!=(j|0)){if(k>>>0<(c[7156]|0)>>>0)mc();if((c[k+12>>2]|0)!=(h|0))mc()}if((a|0)==(k|0)){c[7152]=c[7152]&~(1<>>0<(c[7156]|0)>>>0)mc();j=a+8|0;if((c[j>>2]|0)==(h|0))l=j;else mc()}else l=a+8|0;c[k+12>>2]=a;c[l>>2]=k}while(0);c[d+4>>2]=m|1;c[d+m>>2]=m;if((d|0)==(c[7157]|0)){c[7154]=m;i=b;return}}else{c[n>>2]=o&-2;c[d+4>>2]=m|1;c[d+m>>2]=m}h=m>>>3;if(m>>>0<256){a=h<<1;e=28648+(a<<2)|0;j=c[7152]|0;h=1<>2]|0;if(a>>>0<(c[7156]|0)>>>0)mc();else{f=h;g=a}}else{c[7152]=j|h;f=28648+(a+2<<2)|0;g=e}c[f>>2]=d;c[g+12>>2]=d;c[d+8>>2]=g;c[d+12>>2]=e;i=b;return}f=m>>>8;if(f)if(m>>>0>16777215)f=31;else{v=(f+1048320|0)>>>16&8;w=f<>>16&4;w=w<>>16&2;f=14-(u|v|f)+(w<>>15)|0;f=m>>>(f+7|0)&1|f<<1}else f=0;g=28912+(f<<2)|0;c[d+28>>2]=f;c[d+20>>2]=0;c[d+16>>2]=0;a=c[7153]|0;h=1<>2]|0;if((f|0)==31)f=0;else f=25-(f>>>1)|0;b:do if((c[g+4>>2]&-8|0)!=(m|0)){f=m<>>31<<2)+16|0;g=c[h>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(m|0)){e=g;break b}else{f=f<<1;a=g}}if(h>>>0<(c[7156]|0)>>>0)mc();else{c[h>>2]=d;c[d+24>>2]=a;c[d+12>>2]=d;c[d+8>>2]=d;break a}}else e=g;while(0);g=e+8|0;f=c[g>>2]|0;h=c[7156]|0;if(e>>>0>>0)mc();if(f>>>0>>0)mc();else{c[f+12>>2]=d;c[g>>2]=d;c[d+8>>2]=f;c[d+12>>2]=e;c[d+24>>2]=0;break}}else{c[7153]=a|h;c[g>>2]=d;c[d+24>>2]=g;c[d+12>>2]=d;c[d+8>>2]=d}while(0);w=(c[7160]|0)+ -1|0;c[7160]=w;if(!w)d=29064|0;else{i=b;return}while(1){d=c[d>>2]|0;if(!d)break;else d=d+8|0}c[7160]=-1;i=b;return}function Vq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;if(!a){r=Tq(b)|0;i=d;return r|0}if(b>>>0>4294967231){c[(Uc()|0)>>2]=12;r=0;i=d;return r|0}if(b>>>0<11)f=16;else f=b+11&-8;e=a+ -4|0;k=c[e>>2]|0;l=k&-8;o=l+ -8|0;h=a+o|0;m=c[7156]|0;if((a+ -8|0)>>>0>>0)mc();r=k&3;if(!((r|0)!=1&(o|0)>-8))mc();o=l|4;q=a+(o+ -8)|0;p=c[q>>2]|0;if(!(p&1))mc();do if(!r){if(!(f>>>0<256|l>>>0<(f|4)>>>0)?(l-f|0)>>>0<=c[7272]<<1>>>0:0){r=a;i=d;return r|0}}else{if(l>>>0>=f>>>0){g=l-f|0;if(g>>>0<=15){r=a;i=d;return r|0}c[e>>2]=k&1|f|2;c[a+((f|4)+ -8)>>2]=g|3;c[q>>2]=c[q>>2]|1;Wq(a+(f+ -8)|0,g);r=a;i=d;return r|0}if((h|0)==(c[7158]|0)){g=(c[7155]|0)+l|0;if(g>>>0<=f>>>0)break;r=g-f|0;c[e>>2]=k&1|f|2;c[a+((f|4)+ -8)>>2]=r|1;c[7158]=a+(f+ -8);c[7155]=r;r=a;i=d;return r|0}if((h|0)==(c[7157]|0)){g=(c[7154]|0)+l|0;if(g>>>0>>0)break;h=g-f|0;if(h>>>0>15){c[e>>2]=k&1|f|2;c[a+((f|4)+ -8)>>2]=h|1;c[a+(g+ -8)>>2]=h;e=a+(g+ -4)|0;c[e>>2]=c[e>>2]&-2;e=a+(f+ -8)|0}else{c[e>>2]=k&1|g|2;e=a+(g+ -4)|0;c[e>>2]=c[e>>2]|1;e=0;h=0}c[7154]=h;c[7157]=e;r=a;i=d;return r|0}if((p&2|0)==0?(g=(p&-8)+l|0,g>>>0>=f>>>0):0){k=g-f|0;b=p>>>3;do if(p>>>0>=256){n=c[a+(l+16)>>2]|0;o=c[a+o>>2]|0;do if((o|0)==(h|0)){b=a+(l+12)|0;o=c[b>>2]|0;if(!o){b=a+(l+8)|0;o=c[b>>2]|0;if(!o){j=0;break}}while(1){q=o+20|0;p=c[q>>2]|0;if(p){o=p;b=q;continue}p=o+16|0;q=c[p>>2]|0;if(!q)break;else{o=q;b=p}}if(b>>>0>>0)mc();else{c[b>>2]=0;j=o;break}}else{b=c[a+l>>2]|0;if(b>>>0>>0)mc();p=b+12|0;if((c[p>>2]|0)!=(h|0))mc();m=o+8|0;if((c[m>>2]|0)==(h|0)){c[p>>2]=o;c[m>>2]=b;j=o;break}else mc()}while(0);if(n){o=c[a+(l+20)>>2]|0;m=28912+(o<<2)|0;if((h|0)==(c[m>>2]|0)){c[m>>2]=j;if(!j){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();m=n+16|0;if((c[m>>2]|0)==(h|0))c[m>>2]=j;else c[n+20>>2]=j;if(!j)break}if(j>>>0<(c[7156]|0)>>>0)mc();c[j+24>>2]=n;h=c[a+(l+8)>>2]|0;do if(h)if(h>>>0<(c[7156]|0)>>>0)mc();else{c[j+16>>2]=h;c[h+24>>2]=j;break}while(0);h=c[a+(l+12)>>2]|0;if(!h)break;if(h>>>0<(c[7156]|0)>>>0)mc();else{c[j+20>>2]=h;c[h+24>>2]=j;break}}}else{j=c[a+l>>2]|0;l=c[a+o>>2]|0;o=28648+(b<<1<<2)|0;if((j|0)!=(o|0)){if(j>>>0>>0)mc();if((c[j+12>>2]|0)!=(h|0))mc()}if((l|0)==(j|0)){c[7152]=c[7152]&~(1<>>0>>0)mc();m=l+8|0;if((c[m>>2]|0)==(h|0)){n=m;break}mc()}while(0);c[j+12>>2]=l;c[n>>2]=j}while(0);if(k>>>0<16){c[e>>2]=g|c[e>>2]&1|2;r=a+((g|4)+ -8)|0;c[r>>2]=c[r>>2]|1;r=a;i=d;return r|0}else{c[e>>2]=c[e>>2]&1|f|2;c[a+((f|4)+ -8)>>2]=k|3;r=a+((g|4)+ -8)|0;c[r>>2]=c[r>>2]|1;Wq(a+(f+ -8)|0,k);r=a;i=d;return r|0}}}while(0);f=Tq(b)|0;if(!f){r=0;i=d;return r|0}r=c[e>>2]|0;r=(r&-8)-((r&3|0)==0?8:4)|0;nr(f|0,a|0,(r>>>0>>0?r:b)|0)|0;Uq(a);r=f;i=d;return r|0}function Wq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=i;h=a+b|0;l=c[a+4>>2]|0;do if(!(l&1)){p=c[a>>2]|0;if(!(l&3)){i=d;return}l=a+(0-p)|0;m=p+b|0;q=c[7156]|0;if(l>>>0>>0)mc();if((l|0)==(c[7157]|0)){e=a+(b+4)|0;if((c[e>>2]&3|0)!=3){e=l;n=m;break}c[7154]=m;c[e>>2]=c[e>>2]&-2;c[a+(4-p)>>2]=m|1;c[h>>2]=m;i=d;return}s=p>>>3;if(p>>>0<256){e=c[a+(8-p)>>2]|0;n=c[a+(12-p)>>2]|0;o=28648+(s<<1<<2)|0;if((e|0)!=(o|0)){if(e>>>0>>0)mc();if((c[e+12>>2]|0)!=(l|0))mc()}if((n|0)==(e|0)){c[7152]=c[7152]&~(1<>>0>>0)mc();o=n+8|0;if((c[o>>2]|0)==(l|0))r=o;else mc()}else r=n+8|0;c[e+12>>2]=n;c[r>>2]=e;e=l;n=m;break}r=c[a+(24-p)>>2]|0;t=c[a+(12-p)>>2]|0;do if((t|0)==(l|0)){u=16-p|0;t=a+(u+4)|0;s=c[t>>2]|0;if(!s){t=a+u|0;s=c[t>>2]|0;if(!s){o=0;break}}while(1){u=s+20|0;v=c[u>>2]|0;if(v){s=v;t=u;continue}v=s+16|0;u=c[v>>2]|0;if(!u)break;else{s=u;t=v}}if(t>>>0>>0)mc();else{c[t>>2]=0;o=s;break}}else{s=c[a+(8-p)>>2]|0;if(s>>>0>>0)mc();u=s+12|0;if((c[u>>2]|0)!=(l|0))mc();q=t+8|0;if((c[q>>2]|0)==(l|0)){c[u>>2]=t;c[q>>2]=s;o=t;break}else mc()}while(0);if(r){q=c[a+(28-p)>>2]|0;s=28912+(q<<2)|0;if((l|0)==(c[s>>2]|0)){c[s>>2]=o;if(!o){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();q=r+16|0;if((c[q>>2]|0)==(l|0))c[q>>2]=o;else c[r+20>>2]=o;if(!o){e=l;n=m;break}}if(o>>>0<(c[7156]|0)>>>0)mc();c[o+24>>2]=r;p=16-p|0;q=c[a+p>>2]|0;do if(q)if(q>>>0<(c[7156]|0)>>>0)mc();else{c[o+16>>2]=q;c[q+24>>2]=o;break}while(0);p=c[a+(p+4)>>2]|0;if(p)if(p>>>0<(c[7156]|0)>>>0)mc();else{c[o+20>>2]=p;c[p+24>>2]=o;e=l;n=m;break}else{e=l;n=m}}else{e=l;n=m}}else{e=a;n=b}while(0);l=c[7156]|0;if(h>>>0>>0)mc();m=a+(b+4)|0;o=c[m>>2]|0;if(!(o&2)){if((h|0)==(c[7158]|0)){v=(c[7155]|0)+n|0;c[7155]=v;c[7158]=e;c[e+4>>2]=v|1;if((e|0)!=(c[7157]|0)){i=d;return}c[7157]=0;c[7154]=0;i=d;return}if((h|0)==(c[7157]|0)){v=(c[7154]|0)+n|0;c[7154]=v;c[7157]=e;c[e+4>>2]=v|1;c[e+v>>2]=v;i=d;return}n=(o&-8)+n|0;m=o>>>3;do if(o>>>0>=256){k=c[a+(b+24)>>2]|0;m=c[a+(b+12)>>2]|0;do if((m|0)==(h|0)){o=a+(b+20)|0;m=c[o>>2]|0;if(!m){o=a+(b+16)|0;m=c[o>>2]|0;if(!m){j=0;break}}while(1){q=m+20|0;p=c[q>>2]|0;if(p){m=p;o=q;continue}p=m+16|0;q=c[p>>2]|0;if(!q)break;else{m=q;o=p}}if(o>>>0>>0)mc();else{c[o>>2]=0;j=m;break}}else{o=c[a+(b+8)>>2]|0;if(o>>>0>>0)mc();l=o+12|0;if((c[l>>2]|0)!=(h|0))mc();p=m+8|0;if((c[p>>2]|0)==(h|0)){c[l>>2]=m;c[p>>2]=o;j=m;break}else mc()}while(0);if(k){l=c[a+(b+28)>>2]|0;m=28912+(l<<2)|0;if((h|0)==(c[m>>2]|0)){c[m>>2]=j;if(!j){c[7153]=c[7153]&~(1<>>0<(c[7156]|0)>>>0)mc();l=k+16|0;if((c[l>>2]|0)==(h|0))c[l>>2]=j;else c[k+20>>2]=j;if(!j)break}if(j>>>0<(c[7156]|0)>>>0)mc();c[j+24>>2]=k;h=c[a+(b+16)>>2]|0;do if(h)if(h>>>0<(c[7156]|0)>>>0)mc();else{c[j+16>>2]=h;c[h+24>>2]=j;break}while(0);h=c[a+(b+20)>>2]|0;if(h)if(h>>>0<(c[7156]|0)>>>0)mc();else{c[j+20>>2]=h;c[h+24>>2]=j;break}}}else{j=c[a+(b+8)>>2]|0;a=c[a+(b+12)>>2]|0;b=28648+(m<<1<<2)|0;if((j|0)!=(b|0)){if(j>>>0>>0)mc();if((c[j+12>>2]|0)!=(h|0))mc()}if((a|0)==(j|0)){c[7152]=c[7152]&~(1<>>0>>0)mc();b=a+8|0;if((c[b>>2]|0)==(h|0))k=b;else mc()}else k=a+8|0;c[j+12>>2]=a;c[k>>2]=j}while(0);c[e+4>>2]=n|1;c[e+n>>2]=n;if((e|0)==(c[7157]|0)){c[7154]=n;i=d;return}}else{c[m>>2]=o&-2;c[e+4>>2]=n|1;c[e+n>>2]=n}a=n>>>3;if(n>>>0<256){b=a<<1;h=28648+(b<<2)|0;j=c[7152]|0;a=1<>2]|0;if(a>>>0<(c[7156]|0)>>>0)mc();else{g=b;f=a}}else{c[7152]=j|a;g=28648+(b+2<<2)|0;f=h}c[g>>2]=e;c[f+12>>2]=e;c[e+8>>2]=f;c[e+12>>2]=h;i=d;return}f=n>>>8;if(f)if(n>>>0>16777215)f=31;else{u=(f+1048320|0)>>>16&8;v=f<>>16&4;v=v<>>16&2;f=14-(t|u|f)+(v<>>15)|0;f=n>>>(f+7|0)&1|f<<1}else f=0;a=28912+(f<<2)|0;c[e+28>>2]=f;c[e+20>>2]=0;c[e+16>>2]=0;h=c[7153]|0;g=1<>2]=e;c[e+24>>2]=a;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}g=c[a>>2]|0;if((f|0)==31)f=0;else f=25-(f>>>1)|0;a:do if((c[g+4>>2]&-8|0)!=(n|0)){f=n<>>31<<2)+16|0;g=c[h>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(n|0))break a;else{f=f<<1;a=g}}if(h>>>0<(c[7156]|0)>>>0)mc();c[h>>2]=e;c[e+24>>2]=a;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}while(0);f=g+8|0;a=c[f>>2]|0;h=c[7156]|0;if(g>>>0>>0)mc();if(a>>>0>>0)mc();c[a+12>>2]=e;c[f>>2]=e;c[e+8>>2]=a;c[e+12>>2]=g;c[e+24>>2]=0;i=d;return}function Xq(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;if(e>>>0>36){c[(Uc()|0)>>2]=22;s=0;t=0;H=s;i=j;return t|0}l=b+4|0;k=b+100|0;do{m=c[l>>2]|0;if(m>>>0<(c[k>>2]|0)>>>0){c[l>>2]=m+1;o=d[m>>0]|0}else o=_q(b)|0}while((o|0)==32|(o+ -9|0)>>>0<5);do if((o|0)==43|(o|0)==45){m=((o|0)==45)<<31>>31;n=c[l>>2]|0;if(n>>>0<(c[k>>2]|0)>>>0){c[l>>2]=n+1;o=d[n>>0]|0;break}else{o=_q(b)|0;break}}else m=0;while(0);n=(e|0)==0;do if((e&-17|0)==0&(o|0)==48){o=c[l>>2]|0;if(o>>>0<(c[k>>2]|0)>>>0){c[l>>2]=o+1;o=d[o>>0]|0}else o=_q(b)|0;if((o|32|0)!=120){f=n?8:e;e=32;break}e=c[l>>2]|0;if(e>>>0<(c[k>>2]|0)>>>0){c[l>>2]=e+1;o=d[e>>0]|0}else o=_q(b)|0;if((d[o+29105>>0]|0)>15){g=(c[k>>2]|0)==0;if(!g)c[l>>2]=(c[l>>2]|0)+ -1;if(!f){c[b+104>>2]=0;s=c[b+8>>2]|0;c[b+108>>2]=s-(c[l>>2]|0);c[k>>2]=s;s=0;t=0;H=s;i=j;return t|0}if(g){s=0;t=0;H=s;i=j;return t|0}c[l>>2]=(c[l>>2]|0)+ -1;s=0;t=0;H=s;i=j;return t|0}else{f=16;e=47}}else{f=n?10:e;if((d[o+29105>>0]|0)>>>0>>0)e=32;else{g=c[l>>2]|0;if(c[k>>2]|0){g=g+ -1|0;c[l>>2]=g}c[b+104>>2]=0;s=c[b+8>>2]|0;c[b+108>>2]=s-g;c[k>>2]=s;c[(Uc()|0)>>2]=22;s=0;t=0;H=s;i=j;return t|0}}while(0);if((e|0)==32)if((f|0)==10){f=o+ -48|0;if(f>>>0<10){n=0;while(1){n=n+f|0;f=c[l>>2]|0;if(f>>>0<(c[k>>2]|0)>>>0){c[l>>2]=f+1;o=d[f>>0]|0}else o=_q(b)|0;f=o+ -48|0;if(!(f>>>0<10&n>>>0<429496729))break;n=n*10|0}p=0}else{n=0;p=0}f=o+ -48|0;if(f>>>0<10){do{r=xr(n|0,p|0,10,0)|0;q=H;s=((f|0)<0)<<31>>31;t=~s;if(q>>>0>t>>>0|(q|0)==(t|0)&r>>>0>~f>>>0)break;n=kr(r|0,q|0,f|0,s|0)|0;p=H;f=c[l>>2]|0;if(f>>>0<(c[k>>2]|0)>>>0){c[l>>2]=f+1;o=d[f>>0]|0}else o=_q(b)|0;f=o+ -48|0}while(f>>>0<10&(p>>>0<429496729|(p|0)==429496729&n>>>0<2576980378));if(f>>>0<=9){f=10;e=73}}}else e=47;a:do if((e|0)==47){if(!(f+ -1&f)){e=a[29368+((f*23|0)>>>5&7)>>0]|0;r=a[o+29105>>0]|0;n=r&255;if(n>>>0>>0){o=n;n=0;do{n=o|n<>2]|0;if(o>>>0<(c[k>>2]|0)>>>0){c[l>>2]=o+1;s=d[o>>0]|0}else s=_q(b)|0;r=a[s+29105>>0]|0;o=r&255}while(o>>>0>>0&n>>>0<134217728);p=0}else{p=0;n=0;s=o}q=lr(-1,-1,e|0)|0;o=H;if((r&255)>>>0>=f>>>0|(p>>>0>o>>>0|(p|0)==(o|0)&n>>>0>q>>>0)){o=s;e=73;break}while(1){n=or(n|0,p|0,e|0)|0;p=H;n=r&255|n;r=c[l>>2]|0;if(r>>>0<(c[k>>2]|0)>>>0){c[l>>2]=r+1;s=d[r>>0]|0}else s=_q(b)|0;r=a[s+29105>>0]|0;if((r&255)>>>0>=f>>>0|(p>>>0>o>>>0|(p|0)==(o|0)&n>>>0>q>>>0)){o=s;e=73;break a}}}r=a[o+29105>>0]|0;e=r&255;if(e>>>0>>0){n=0;do{n=e+(da(n,f)|0)|0;e=c[l>>2]|0;if(e>>>0<(c[k>>2]|0)>>>0){c[l>>2]=e+1;q=d[e>>0]|0}else q=_q(b)|0;r=a[q+29105>>0]|0;e=r&255}while(e>>>0>>0&n>>>0<119304647);p=0}else{n=0;p=0;q=o}if((r&255)>>>0>>0){e=yr(-1,-1,f|0,0)|0;o=H;while(1){if(p>>>0>o>>>0|(p|0)==(o|0)&n>>>0>e>>>0){o=q;e=73;break a}s=xr(n|0,p|0,f|0,0)|0;t=H;r=r&255;if(t>>>0>4294967295|(t|0)==-1&s>>>0>~r>>>0){o=q;e=73;break a}n=kr(r|0,0,s|0,t|0)|0;p=H;q=c[l>>2]|0;if(q>>>0<(c[k>>2]|0)>>>0){c[l>>2]=q+1;q=d[q>>0]|0}else q=_q(b)|0;r=a[q+29105>>0]|0;if((r&255)>>>0>=f>>>0){o=q;e=73;break}}}else{o=q;e=73}}while(0);if((e|0)==73)if((d[o+29105>>0]|0)>>>0>>0){do{e=c[l>>2]|0;if(e>>>0<(c[k>>2]|0)>>>0){c[l>>2]=e+1;e=d[e>>0]|0}else e=_q(b)|0}while((d[e+29105>>0]|0)>>>0>>0);c[(Uc()|0)>>2]=34;p=h;n=g}if(c[k>>2]|0)c[l>>2]=(c[l>>2]|0)+ -1;if(!(p>>>0>>0|(p|0)==(h|0)&n>>>0>>0)){if((g&1|0)==0&0==0&(m|0)==0){c[(Uc()|0)>>2]=34;t=kr(g|0,h|0,-1,-1)|0;s=H;H=s;i=j;return t|0}if(p>>>0>h>>>0|(p|0)==(h|0)&n>>>0>g>>>0){c[(Uc()|0)>>2]=34;s=h;t=g;H=s;i=j;return t|0}}t=((m|0)<0)<<31>>31;t=jr(n^m|0,p^t|0,m|0,t|0)|0;s=H;H=s;i=j;return t|0}function Yq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0.0,L=0,M=0.0,N=0.0,O=0.0,P=0.0;g=i;i=i+512|0;m=g;if((e|0)==1){j=53;l=-1074}else if(!e){j=24;l=-149}else if((e|0)==2){j=53;l=-1074}else{O=0.0;i=g;return+O}p=b+4|0;q=b+100|0;do{e=c[p>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[p>>2]=e+1;A=d[e>>0]|0}else A=_q(b)|0}while((A|0)==32|(A+ -9|0)>>>0<5);do if((A|0)==43|(A|0)==45){e=1-(((A|0)==45&1)<<1)|0;r=c[p>>2]|0;if(r>>>0<(c[q>>2]|0)>>>0){c[p>>2]=r+1;A=d[r>>0]|0;break}else{A=_q(b)|0;break}}else e=1;while(0);u=0;do{if((A|32|0)!=(a[29384+u>>0]|0))break;do if(u>>>0<7){r=c[p>>2]|0;if(r>>>0<(c[q>>2]|0)>>>0){c[p>>2]=r+1;A=d[r>>0]|0;break}else{A=_q(b)|0;break}}while(0);u=u+1|0}while(u>>>0<8);do if((u|0)==3)s=23;else if((u|0)!=8){r=(f|0)==0;if(!(u>>>0<4|r))if((u|0)==8)break;else{s=23;break}a:do if(!u){u=0;do{if((A|32|0)!=(a[29968+u>>0]|0))break a;do if(u>>>0<2){o=c[p>>2]|0;if(o>>>0<(c[q>>2]|0)>>>0){c[p>>2]=o+1;A=d[o>>0]|0;break}else{A=_q(b)|0;break}}while(0);u=u+1|0}while(u>>>0<3)}while(0);if(!u){do if((A|0)==48){o=c[p>>2]|0;if(o>>>0<(c[q>>2]|0)>>>0){c[p>>2]=o+1;o=d[o>>0]|0}else o=_q(b)|0;if((o|32|0)!=120){if(!(c[q>>2]|0)){A=48;break}c[p>>2]=(c[p>>2]|0)+ -1;A=48;break}m=c[p>>2]|0;if(m>>>0<(c[q>>2]|0)>>>0){c[p>>2]=m+1;C=d[m>>0]|0;A=0}else{C=_q(b)|0;A=0}while(1){if((C|0)==46){s=71;break}else if((C|0)!=48){m=0;o=0;u=0;v=0;z=0;B=0;K=1.0;y=0;t=0.0;break}m=c[p>>2]|0;if(m>>>0<(c[q>>2]|0)>>>0){c[p>>2]=m+1;C=d[m>>0]|0;A=1;continue}else{C=_q(b)|0;A=1;continue}}b:do if((s|0)==71){m=c[p>>2]|0;if(m>>>0<(c[q>>2]|0)>>>0){c[p>>2]=m+1;C=d[m>>0]|0}else C=_q(b)|0;if((C|0)==48){u=-1;v=-1;while(1){m=c[p>>2]|0;if(m>>>0<(c[q>>2]|0)>>>0){c[p>>2]=m+1;C=d[m>>0]|0}else C=_q(b)|0;if((C|0)!=48){m=0;o=0;A=1;z=1;B=0;K=1.0;y=0;t=0.0;break b}L=kr(u|0,v|0,-1,-1)|0;u=L;v=H}}else{m=0;o=0;u=0;v=0;z=1;B=0;K=1.0;y=0;t=0.0}}while(0);c:while(1){F=C+ -48|0;do if(F>>>0>=10){E=C|32;D=(C|0)==46;if(!((E+ -97|0)>>>0<6|D))break c;if(D)if(!z){u=o;v=m;z=1;break}else{C=46;break c}else{F=(C|0)>57?E+ -87|0:F;s=85;break}}else s=85;while(0);if((s|0)==85){s=0;do if(!((m|0)<0|(m|0)==0&o>>>0<8)){if((m|0)<0|(m|0)==0&o>>>0<14){O=K*.0625;M=O;t=t+O*+(F|0);break}if((F|0)!=0&(B|0)==0){B=1;M=K;t=t+K*.5}else M=K}else{M=K;y=F+(y<<4)|0}while(0);o=kr(o|0,m|0,1,0)|0;m=H;A=1;K=M}C=c[p>>2]|0;if(C>>>0<(c[q>>2]|0)>>>0){c[p>>2]=C+1;C=d[C>>0]|0;continue}else{C=_q(b)|0;continue}}if(!A){j=(c[q>>2]|0)==0;if(!j)c[p>>2]=(c[p>>2]|0)+ -1;if(!r){if(!j?(n=c[p>>2]|0,c[p>>2]=n+ -1,(z|0)!=0):0)c[p>>2]=n+ -2}else{c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-(c[p>>2]|0);c[q>>2]=L}O=+(e|0)*0.0;i=g;return+O}s=(z|0)==0;n=s?o:u;s=s?m:v;if((m|0)<0|(m|0)==0&o>>>0<8)do{y=y<<4;o=kr(o|0,m|0,1,0)|0;m=H}while((m|0)<0|(m|0)==0&o>>>0<8);do if((C|32|0)==112){o=Zq(b,f)|0;m=H;if((o|0)==0&(m|0)==-2147483648)if(r){c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-(c[p>>2]|0);c[q>>2]=L;O=0.0;i=g;return+O}else{if(!(c[q>>2]|0)){o=0;m=0;break}c[p>>2]=(c[p>>2]|0)+ -1;o=0;m=0;break}}else if(!(c[q>>2]|0)){o=0;m=0}else{c[p>>2]=(c[p>>2]|0)+ -1;o=0;m=0}while(0);n=or(n|0,s|0,2)|0;n=kr(n|0,H|0,-32,-1)|0;m=kr(n|0,H|0,o|0,m|0)|0;n=H;if(!y){O=+(e|0)*0.0;i=g;return+O}if((n|0)>0|(n|0)==0&m>>>0>(0-l|0)>>>0){c[(Uc()|0)>>2]=34;O=+(e|0)*1.7976931348623157e+308*1.7976931348623157e+308;i=g;return+O}L=l+ -106|0;J=((L|0)<0)<<31>>31;if((n|0)<(J|0)|(n|0)==(J|0)&m>>>0>>0){c[(Uc()|0)>>2]=34;O=+(e|0)*2.2250738585072014e-308*2.2250738585072014e-308;i=g;return+O}if((y|0)>-1)do{y=y<<1;if(!(t>=.5))K=t;else{K=t+-1.0;y=y|1}t=t+K;m=kr(m|0,n|0,-1,-1)|0;n=H}while((y|0)>-1);l=jr(32,0,l|0,((l|0)<0)<<31>>31|0)|0;l=kr(m|0,n|0,l|0,H|0)|0;L=H;if(0>(L|0)|0==(L|0)&j>>>0>l>>>0)j=(l|0)<0?0:l;do if((j|0)<53){l=84-j|0;do if((l|0)>1023){n=l+ -1023|0;if((n|0)<=1023){l=n;M=8.98846567431158e+307;break}l=l+ -2046|0;l=(l|0)>1023?1023:l;M=x}else{if((l|0)>=-1022){M=1.0;break}n=l+1022|0;if((n|0)>=-1022){l=n;M=2.2250738585072014e-308;break}l=l+2044|0;l=(l|0)<-1022?-1022:l;M=0.0}while(0);J=or(l+1023|0,0,52)|0;L=H;c[k>>2]=J;c[k+4>>2]=L;K=+(e|0);M=+_c(+(M*+h[k>>3]),+K);if(!((j|0)<32&t!=0.0))break;L=y&1;y=(L^1)+y|0;t=(L|0)==0?0.0:t}else{K=+(e|0);M=0.0}while(0);t=K*t+(M+K*+(y>>>0))-M;if(!(t!=0.0))c[(Uc()|0)>>2]=34;do if((m|0)>1023){t=t*8.98846567431158e+307;e=m+ -1023|0;if((e|0)<=1023){m=e;break}m=m+ -2046|0;m=(m|0)>1023?1023:m;t=t*8.98846567431158e+307}else{if((m|0)>=-1022)break;t=t*2.2250738585072014e-308;e=m+1022|0;if((e|0)>=-1022){m=e;break}m=m+2044|0;m=(m|0)<-1022?-1022:m;t=t*2.2250738585072014e-308}while(0);J=or(m+1023|0,0,52)|0;L=H;c[k>>2]=J;c[k+4>>2]=L;O=t*+h[k>>3];i=g;return+O}while(0);o=l+j|0;n=0-o|0;F=0;while(1){if((A|0)==46){s=152;break}else if((A|0)!=48){J=0;G=0;B=0;break}u=c[p>>2]|0;if(u>>>0<(c[q>>2]|0)>>>0){c[p>>2]=u+1;A=d[u>>0]|0;F=1;continue}else{A=_q(b)|0;F=1;continue}}d:do if((s|0)==152){u=c[p>>2]|0;if(u>>>0<(c[q>>2]|0)>>>0){c[p>>2]=u+1;A=d[u>>0]|0}else A=_q(b)|0;if((A|0)==48){J=-1;G=-1;while(1){u=c[p>>2]|0;if(u>>>0<(c[q>>2]|0)>>>0){c[p>>2]=u+1;A=d[u>>0]|0}else A=_q(b)|0;if((A|0)!=48){F=1;B=1;break d}L=kr(J|0,G|0,-1,-1)|0;J=L;G=H}}else{J=0;G=0;B=1}}while(0);c[m>>2]=0;D=A+ -48|0;I=(A|0)==46;e:do if(D>>>0<10|I){u=m+496|0;E=0;C=0;z=0;y=0;v=0;while(1){do if(I)if(!B){J=E;G=C;B=1}else break e;else{L=kr(E|0,C|0,1,0)|0;C=H;I=(A|0)!=48;if((y|0)>=125){if(!I){E=L;break}c[u>>2]=c[u>>2]|1;E=L;break}E=m+(y<<2)|0;if(z)D=A+ -48+((c[E>>2]|0)*10|0)|0;c[E>>2]=D;z=z+1|0;D=(z|0)==9;E=L;F=1;z=D?0:z;y=(D&1)+y|0;v=I?L:v}while(0);A=c[p>>2]|0;if(A>>>0<(c[q>>2]|0)>>>0){c[p>>2]=A+1;A=d[A>>0]|0}else A=_q(b)|0;D=A+ -48|0;I=(A|0)==46;if(!(D>>>0<10|I)){s=175;break}}}else{E=0;C=0;z=0;y=0;v=0;s=175}while(0);if((s|0)==175){L=(B|0)==0;J=L?E:J;G=L?C:G}s=(F|0)!=0;if(s?(A|32|0)==101:0){u=Zq(b,f)|0;f=H;do if((u|0)==0&(f|0)==-2147483648)if(r){c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-(c[p>>2]|0);c[q>>2]=L;O=0.0;i=g;return+O}else{if(!(c[q>>2]|0)){r=0;f=0;break}c[p>>2]=(c[p>>2]|0)+ -1;r=0;f=0;break}else r=u;while(0);J=kr(r|0,f|0,J|0,G|0)|0;G=H}else if((A|0)>-1?(c[q>>2]|0)!=0:0)c[p>>2]=(c[p>>2]|0)+ -1;if(!s){c[(Uc()|0)>>2]=22;c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-(c[p>>2]|0);c[q>>2]=L;O=0.0;i=g;return+O}p=c[m>>2]|0;if(!p){O=+(e|0)*0.0;i=g;return+O}do if((J|0)==(E|0)&(G|0)==(C|0)&((C|0)<0|(C|0)==0&E>>>0<10)){if(j>>>0<=30?(p>>>j|0)!=0:0)break;O=+(e|0)*+(p>>>0);i=g;return+O}while(0);L=(l|0)/-2|0;I=((L|0)<0)<<31>>31;if((G|0)>(I|0)|(G|0)==(I|0)&J>>>0>L>>>0){c[(Uc()|0)>>2]=34;O=+(e|0)*1.7976931348623157e+308*1.7976931348623157e+308;i=g;return+O}L=l+ -106|0;I=((L|0)<0)<<31>>31;if((G|0)<(I|0)|(G|0)==(I|0)&J>>>0>>0){c[(Uc()|0)>>2]=34;O=+(e|0)*2.2250738585072014e-308*2.2250738585072014e-308;i=g;return+O}if(z){if((z|0)<9){p=m+(y<<2)|0;b=c[p>>2]|0;do{b=b*10|0;z=z+1|0}while((z|0)!=9);c[p>>2]=b}y=y+1|0}do if((v|0)<9?(v|0)<=(J|0)&(J|0)<18:0){if((J|0)==9){O=+(e|0)*+((c[m>>2]|0)>>>0);i=g;return+O}if((J|0)<9){O=+(e|0)*+((c[m>>2]|0)>>>0)/+(c[29408+(8-J<<2)>>2]|0);i=g;return+O}L=j+27+(da(J,-3)|0)|0;p=c[m>>2]|0;if((L|0)<=30?(p>>>L|0)!=0:0)break;O=+(e|0)*+(p>>>0)*+(c[29408+(J+ -10<<2)>>2]|0);i=g;return+O}while(0);p=(J|0)%9|0;if(!p){p=0;b=0;q=J}else{q=(J|0)>-1?p:p+9|0;s=c[29408+(8-q<<2)>>2]|0;if(y){f=1e9/(s|0)|0;p=0;b=0;r=0;do{G=m+(r<<2)|0;I=c[G>>2]|0;L=((I>>>0)/(s>>>0)|0)+b|0;c[G>>2]=L;b=da((I>>>0)%(s>>>0)|0,f)|0;I=r;r=r+1|0;if((I|0)==(p|0)&(L|0)==0){p=r&127;J=J+ -9|0}}while((r|0)!=(y|0));if(b){c[m+(y<<2)>>2]=b;y=y+1|0}}else{p=0;y=0}b=0;q=9-q+J|0}f:while(1){r=m+(p<<2)|0;if((q|0)<18){do{s=0;r=y+127|0;while(1){r=r&127;f=m+(r<<2)|0;u=or(c[f>>2]|0,0,29)|0;u=kr(u|0,H|0,s|0,0)|0;s=H;if(s>>>0>0|(s|0)==0&u>>>0>1e9){L=yr(u|0,s|0,1e9,0)|0;u=zr(u|0,s|0,1e9,0)|0;s=L}else s=0;c[f>>2]=u;f=(r|0)==(p|0);if(!((r|0)!=(y+127&127|0)|f))y=(u|0)==0?r:y;if(f)break;else r=r+ -1|0}b=b+ -29|0}while((s|0)==0)}else{if((q|0)!=18)break;do{if((c[r>>2]|0)>>>0>=9007199){q=18;break f}s=0;f=y+127|0;while(1){f=f&127;u=m+(f<<2)|0;v=or(c[u>>2]|0,0,29)|0;v=kr(v|0,H|0,s|0,0)|0;s=H;if(s>>>0>0|(s|0)==0&v>>>0>1e9){L=yr(v|0,s|0,1e9,0)|0;v=zr(v|0,s|0,1e9,0)|0;s=L}else s=0;c[u>>2]=v;u=(f|0)==(p|0);if(!((f|0)!=(y+127&127|0)|u))y=(v|0)==0?f:y;if(u)break;else f=f+ -1|0}b=b+ -29|0}while((s|0)==0)}p=p+127&127;if((p|0)==(y|0)){L=y+127&127;y=m+((y+126&127)<<2)|0;c[y>>2]=c[y>>2]|c[m+(L<<2)>>2];y=L}c[m+(p<<2)>>2]=s;q=q+9|0}g:while(1){r=y+1&127;f=m+((y+127&127)<<2)|0;while(1){u=(q|0)==18;s=(q|0)>27?9:1;while(1){v=0;while(1){z=v+p&127;if((z|0)==(y|0)){v=2;break}z=c[m+(z<<2)>>2]|0;A=c[29400+(v<<2)>>2]|0;if(z>>>0>>0){v=2;break}B=v+1|0;if(z>>>0>A>>>0)break;if((B|0)<2)v=B;else{v=B;break}}if((v|0)==2&u)break g;b=s+b|0;if((p|0)==(y|0))p=y;else break}v=(1<>>s;A=p;u=0;do{I=m+(p<<2)|0;J=c[I>>2]|0;L=(J>>>s)+u|0;c[I>>2]=L;u=da(J&v,z)|0;L=(p|0)==(A|0)&(L|0)==0;p=p+1&127;q=L?q+ -9|0:q;A=L?p:A}while((p|0)!=(y|0));if(!u){p=A;continue}if((r|0)!=(A|0))break;c[f>>2]=c[f>>2]|1;p=A}c[m+(y<<2)>>2]=u;p=A;y=r}q=p&127;if((q|0)==(y|0)){c[m+(r+ -1<<2)>>2]=0;y=r}K=+((c[m+(q<<2)>>2]|0)>>>0);q=p+1&127;if((q|0)==(y|0)){y=y+1&127;c[m+(y+ -1<<2)>>2]=0}t=+(e|0);K=t*(K*1.0e9+ +((c[m+(q<<2)>>2]|0)>>>0));e=b+53|0;l=e-l|0;if((l|0)<(j|0)){j=(l|0)<0?0:l;q=1}else q=0;if((j|0)<53){r=105-j|0;do if((r|0)>1023){f=r+ -1023|0;if((f|0)<=1023){r=f;M=8.98846567431158e+307;break}r=r+ -2046|0;r=(r|0)>1023?1023:r;M=x}else{if((r|0)>=-1022){M=1.0;break}f=r+1022|0;if((f|0)>=-1022){r=f;M=2.2250738585072014e-308;break}r=r+2044|0;r=(r|0)<-1022?-1022:r;M=0.0}while(0);L=or(r+1023|0,0,52)|0;r=H;c[k>>2]=L;c[k+4>>2]=r;N=+_c(+(M*+h[k>>3]),+K);r=53-j|0;do if((r|0)>1023){f=r+ -1023|0;if((f|0)<=1023){r=f;M=8.98846567431158e+307;break}r=r+ -2046|0;r=(r|0)>1023?1023:r;M=x}else{if((r|0)>=-1022){M=1.0;break}f=r+1022|0;if((f|0)>=-1022){r=f;M=2.2250738585072014e-308;break}r=r+2044|0;r=(r|0)<-1022?-1022:r;M=0.0}while(0);J=or(r+1023|0,0,52)|0;L=H;c[k>>2]=J;c[k+4>>2]=L;P=+Ga(+K,+(M*+h[k>>3]));M=N;O=P;K=N+(K-P)}else{M=0.0;O=0.0}r=p+2&127;do if((r|0)!=(y|0)){m=c[m+(r<<2)>>2]|0;do if(m>>>0>=5e8){if(m>>>0>5e8){O=t*.75+O;break}if((p+3&127|0)==(y|0)){O=t*.5+O;break}else{O=t*.75+O;break}}else{if((m|0)==0?(p+3&127|0)==(y|0):0)break;O=t*.25+O}while(0);if((53-j|0)<=1)break;if(+Ga(+O,1.0)!=0.0)break;O=O+1.0}while(0);t=K+O-M;do if((e&2147483647|0)>(-2-o|0)){if(+S(+t)>=9007199254740992.0){q=(q|0)!=0&(j|0)==(l|0)?0:q;b=b+1|0;t=t*.5}if((b+50|0)<=(n|0)?!((q|0)!=0&O!=0.0):0)break;c[(Uc()|0)>>2]=34}while(0);do if((b|0)>1023){t=t*8.98846567431158e+307;e=b+ -1023|0;if((e|0)<=1023){b=e;break}b=b+ -2046|0;b=(b|0)>1023?1023:b;t=t*8.98846567431158e+307}else{if((b|0)>=-1022)break;t=t*2.2250738585072014e-308;e=b+1022|0;if((e|0)>=-1022){b=e;break}b=b+2044|0;b=(b|0)<-1022?-1022:b;t=t*2.2250738585072014e-308}while(0);J=or(b+1023|0,0,52)|0;L=H;c[k>>2]=J;c[k+4>>2]=L;P=t*+h[k>>3];i=g;return+P}else if((u|0)==3){e=c[p>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[p>>2]=e+1;e=d[e>>0]|0}else e=_q(b)|0;if((e|0)==40)e=1;else{if(!(c[q>>2]|0)){P=w;i=g;return+P}c[p>>2]=(c[p>>2]|0)+ -1;P=w;i=g;return+P}while(1){j=c[p>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[p>>2]=j+1;j=d[j>>0]|0}else j=_q(b)|0;if(!((j+ -48|0)>>>0<10|(j+ -65|0)>>>0<26)?!((j+ -97|0)>>>0<26|(j|0)==95):0)break;e=e+1|0}if((j|0)==41){P=w;i=g;return+P}j=(c[q>>2]|0)==0;if(!j)c[p>>2]=(c[p>>2]|0)+ -1;if(r){c[(Uc()|0)>>2]=22;c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-(c[p>>2]|0);c[q>>2]=L;P=0.0;i=g;return+P}if((e|0)==0|j){P=w;i=g;return+P}j=c[p>>2]|0;do{e=e+ -1|0;j=j+ -1|0}while((e|0)!=0);c[p>>2]=j;P=w;i=g;return+P}else{e=c[p>>2]|0;if(c[q>>2]|0){e=e+ -1|0;c[p>>2]=e}c[(Uc()|0)>>2]=22;c[b+104>>2]=0;L=c[b+8>>2]|0;c[b+108>>2]=L-e;c[q>>2]=L;P=0.0;i=g;return+P}}while(0);if(((s|0)==23?(c[q>>2]|0)!=0:0)?(o=(c[p>>2]|0)+ -1|0,c[p>>2]=o,!(u>>>0<4|(f|0)==0)):0){do{o=o+ -1|0;u=u+ -1|0}while(u>>>0>3);c[p>>2]=o}P=+(e|0)*x;i=g;return+P}function Zq(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;g=a+4|0;h=c[g>>2]|0;f=a+100|0;if(h>>>0<(c[f>>2]|0)>>>0){c[g>>2]=h+1;j=d[h>>0]|0}else j=_q(a)|0;if((j|0)==43|(j|0)==45){h=(j|0)==45&1;j=c[g>>2]|0;if(j>>>0<(c[f>>2]|0)>>>0){c[g>>2]=j+1;j=d[j>>0]|0}else j=_q(a)|0;if(!((j+ -48|0)>>>0<10|(b|0)==0)?(c[f>>2]|0)!=0:0)c[g>>2]=(c[g>>2]|0)+ -1}else h=0;if((j+ -48|0)>>>0>9){if(!(c[f>>2]|0)){k=-2147483648;l=0;H=k;i=e;return l|0}c[g>>2]=(c[g>>2]|0)+ -1;k=-2147483648;l=0;H=k;i=e;return l|0}else b=0;while(1){b=j+ -48+b|0;j=c[g>>2]|0;if(j>>>0<(c[f>>2]|0)>>>0){c[g>>2]=j+1;j=d[j>>0]|0}else j=_q(a)|0;l=(j+ -48|0)>>>0<10;if(!(l&(b|0)<214748364))break;b=b*10|0}k=((b|0)<0)<<31>>31;if(l)do{k=xr(b|0,k|0,10,0)|0;b=H;j=kr(j|0,((j|0)<0)<<31>>31|0,-48,-1)|0;b=kr(j|0,H|0,k|0,b|0)|0;k=H;j=c[g>>2]|0;if(j>>>0<(c[f>>2]|0)>>>0){c[g>>2]=j+1;j=d[j>>0]|0}else j=_q(a)|0}while((j+ -48|0)>>>0<10&((k|0)<21474836|(k|0)==21474836&b>>>0<2061584302));if((j+ -48|0)>>>0<10)do{j=c[g>>2]|0;if(j>>>0<(c[f>>2]|0)>>>0){c[g>>2]=j+1;j=d[j>>0]|0}else j=_q(a)|0}while((j+ -48|0)>>>0<10);if(c[f>>2]|0)c[g>>2]=(c[g>>2]|0)+ -1;j=(h|0)!=0;l=jr(0,0,b|0,k|0)|0;k=j?H:k;l=j?l:b;H=k;i=e;return l|0}function _q(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;h=b+104|0;l=c[h>>2]|0;if(!((l|0)!=0?(c[b+108>>2]|0)>=(l|0):0))g=3;if((g|0)==3?(f=br(b)|0,(f|0)>=0):0){l=c[h>>2]|0;h=c[b+8>>2]|0;k=c[b+4>>2]|0;if((l|0)!=0?(j=l-(c[b+108>>2]|0)+ -1|0,(h-k|0)>(j|0)):0)c[b+100>>2]=k+j;else g=8;if((g|0)==8)c[b+100>>2]=h;if(h){l=b+108|0;c[l>>2]=h+1-k+(c[l>>2]|0)}b=k+ -1|0;if((d[b>>0]|0|0)==(f|0)){l=f;i=e;return l|0}a[b>>0]=f;l=f;i=e;return l|0}c[b+100>>2]=0;l=-1;i=e;return l|0}function $q(a,b){a=+a;b=b|0;var d=0,e=0,f=0,g=0;d=i;h[k>>3]=a;f=c[k>>2]|0;e=c[k+4>>2]|0;g=lr(f|0,e|0,52)|0;g=g&2047;if(!g){if(a!=0.0){a=+$q(a*18446744073709552000.0,b);e=(c[b>>2]|0)+ -64|0}else e=0;c[b>>2]=e;i=d;return+a}else if((g|0)==2047){i=d;return+a}else{c[b>>2]=g+ -1022;c[k>>2]=f;c[k+4>>2]=e&-2146435073|1071644672;a=+h[k>>3];i=d;return+a}return 0.0}function ar(b,d){b=b|0;d=d|0;var e=0;e=i;if(!b){b=1;i=e;return b|0}if(d>>>0<128){a[b>>0]=d;b=1;i=e;return b|0}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;i=e;return b|0}if(d>>>0<55296|(d+ -57344|0)>>>0<8192){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;i=e;return b|0}if((d+ -65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;i=e;return b|0}else{c[(Uc()|0)>>2]=84;b=-1;i=e;return b|0}return 0}function br(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;e=g;f=b+8|0;do if(!(c[f>>2]|0)){j=b+74|0;h=a[j>>0]|0;a[j>>0]=h+255|h;j=b+20|0;h=b+44|0;if((c[j>>2]|0)>>>0>(c[h>>2]|0)>>>0)fd[c[b+36>>2]&31](b,0,0)|0;c[b+16>>2]=0;c[b+28>>2]=0;c[j>>2]=0;j=c[b>>2]|0;if(!(j&20)){j=c[h>>2]|0;c[f>>2]=j;c[b+4>>2]=j;break}if(!(j&4)){j=-1;i=g;return j|0}c[b>>2]=j|32;j=-1;i=g;return j|0}while(0);if((fd[c[b+32>>2]&31](b,e,1)|0)!=1){j=-1;i=g;return j|0}j=d[e>>0]|0;i=g;return j|0}function cr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;g=e+16|0;j=c[g>>2]|0;do if(!j){h=e+74|0;k=a[h>>0]|0;a[h>>0]=k+255|k;h=c[e>>2]|0;if(!(h&8)){c[e+8>>2]=0;c[e+4>>2]=0;h=c[e+44>>2]|0;c[e+28>>2]=h;c[e+20>>2]=h;j=h+(c[e+48>>2]|0)|0;c[g>>2]=j;break}c[e>>2]=h|32;i=f;return}else h=c[e+20>>2]|0;while(0);g=e+20|0;if((j-h|0)>>>0>>0){fd[c[e+36>>2]&31](e,b,d)|0;i=f;return}a:do if((a[e+75>>0]|0)>-1){j=d;while(1){if(!j)break a;k=j+ -1|0;if((a[b+k>>0]|0)==10)break;else j=k}if((fd[c[e+36>>2]&31](e,b,j)|0)>>>0>>0){i=f;return}else{d=d-j|0;b=b+j|0;h=c[g>>2]|0;break}}while(0);nr(h|0,b|0,d|0)|0;c[g>>2]=(c[g>>2]|0)+d;i=f;return}function dr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c[g>>2]=e;e=fr(a,b,d,g)|0;i=f;return e|0}function er(e,f,g,j,l){e=e|0;f=f|0;g=g|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0.0,fb=0,gb=0.0,hb=0;m=i;i=i+864|0;B=m+16|0;r=m+8|0;v=m+560|0;w=v;u=m+840|0;s=m+584|0;J=m+520|0;N=m;G=m+852|0;L=(e|0)!=0;Y=J+40|0;I=Y;J=J+39|0;M=N+4|0;t=u+12|0;u=u+11|0;A=t;z=A-w|0;x=-2-w|0;y=A+2|0;C=B+288|0;D=v+9|0;E=D;F=v+8|0;Ra=0;Ua=0;pa=0;Va=0;Sa=0;a:while(1){do if((pa|0)>-1)if((Va|0)>(2147483647-pa|0)){c[(Uc()|0)>>2]=75;pa=-1;break}else{pa=Va+pa|0;break}while(0);Pa=a[f>>0]|0;if(!(Pa<<24>>24)){Na=357;break}else Oa=f;while(1){if(Pa<<24>>24==37){O=Oa;K=Oa;Na=9;break}else if(!(Pa<<24>>24)){ma=Oa;oa=Oa;break}fb=Oa+1|0;Pa=a[fb>>0]|0;Oa=fb}b:do if((Na|0)==9)while(1){Na=0;if((a[O+1>>0]|0)!=37){ma=O;oa=K;break b}oa=K+1|0;ma=O+2|0;if((a[ma>>0]|0)==37){O=ma;K=oa}else break}while(0);Va=oa-f|0;if(L)cr(f,Va,e);if((oa|0)!=(f|0)){f=ma;continue}Qa=ma+1|0;Ta=a[Qa>>0]|0;Wa=(Ta<<24>>24)+ -48|0;if(Wa>>>0<10?(a[ma+2>>0]|0)==36:0){Qa=ma+3|0;Ta=a[Qa>>0]|0;Oa=1}else{Wa=-1;Oa=Sa}Pa=Ta<<24>>24;c:do if((Pa+ -32|0)>>>0<32){Xa=0;while(1){if(!(1<>24)+ -32|Xa;Qa=Qa+1|0;Ta=a[Qa>>0]|0;Pa=Ta<<24>>24;if((Pa+ -32|0)>>>0>=32){Pa=Ta;break}}}else{Pa=Ta;Xa=0}while(0);do if(Pa<<24>>24==42){Pa=Qa+1|0;Ta=(a[Pa>>0]|0)+ -48|0;if(Ta>>>0<10?(a[Qa+2>>0]|0)==36:0){c[l+(Ta<<2)>>2]=10;Oa=1;Ta=Qa+3|0;Qa=c[j+((a[Pa>>0]|0)+ -48<<3)>>2]|0}else{if(Oa){p=-1;Na=376;break a}if(!L){Oa=0;Qa=0;break}Oa=c[g>>2]|0;Qa=c[Oa>>2]|0;c[g>>2]=Oa+4;Oa=0;Ta=Pa}if((Qa|0)<0){Pa=Ta;Xa=Xa|8192;Qa=0-Qa|0}else Pa=Ta}else{Ta=Pa<<24>>24;if((Ta+ -48|0)>>>0<10){Pa=Qa;Qa=0;do{Qa=Ta+ -48+(Qa*10|0)|0;Pa=Pa+1|0;Ta=a[Pa>>0]|0}while((Ta+ -48|0)>>>0<10);if((Qa|0)<0){p=-1;Na=376;break a}}else{Pa=Qa;Qa=0}}while(0);d:do if((a[Pa>>0]|0)==46){Ta=Pa+1|0;Ya=a[Ta>>0]|0;if(Ya<<24>>24!=42){Ya=Ya<<24>>24;if((Ya+ -48|0)>>>0<10){Pa=Ta;Ta=0}else{Pa=Ta;Ta=0;break}while(1){Ta=Ya+ -48+(Ta*10|0)|0;Pa=Pa+1|0;Ya=a[Pa>>0]|0;if((Ya+ -48|0)>>>0>=10)break d}}Ta=Pa+2|0;Ya=(a[Ta>>0]|0)+ -48|0;if(Ya>>>0<10?(a[Pa+3>>0]|0)==36:0){c[l+(Ya<<2)>>2]=10;Pa=Pa+4|0;Ta=c[j+((a[Ta>>0]|0)+ -48<<3)>>2]|0;break}if(Oa){p=-1;Na=376;break a}if(L){Pa=c[g>>2]|0;fb=c[Pa>>2]|0;c[g>>2]=Pa+4;Pa=Ta;Ta=fb}else{Pa=Ta;Ta=0}}else Ta=-1;while(0);Za=Pa;Ya=0;while(1){_a=a[Za>>0]|0;$a=(_a<<24>>24)+ -65|0;if($a>>>0>57){p=-1;Na=376;break a}Pa=Za+1|0;ab=a[29440+(Ya*58|0)+$a>>0]|0;$a=ab&255;if(($a+ -1|0)>>>0<8){Za=Pa;Ya=$a}else break}if(!(ab<<24>>24)){p=-1;Na=376;break}bb=(Wa|0)>-1;e:do if(ab<<24>>24==19)if(bb){p=-1;Na=376;break a}else{Q=Ra;P=Ua;Na=63}else{if(bb){c[l+(Wa<<2)>>2]=$a;P=j+(Wa<<3)|0;Q=c[P+4>>2]|0;P=c[P>>2]|0;Na=63;break}if(!L){p=0;Na=376;break a}if((ab&255)>20){T=_a;U=Ua;V=Ra}else do switch($a|0){case 11:{S=c[g>>2]|0;R=c[S>>2]|0;c[g>>2]=S+4;S=0;Na=64;break e};case 14:{S=c[g>>2]|0;R=c[S>>2]|0;c[g>>2]=S+4;R=R&65535;S=0;Na=64;break e};case 12:{Na=c[g>>2]|0;S=Na;R=c[S>>2]|0;S=c[S+4>>2]|0;c[g>>2]=Na+8;Na=64;break e};case 16:{S=c[g>>2]|0;R=c[S>>2]|0;c[g>>2]=S+4;R=R&255;S=0;Na=64;break e};case 15:{R=c[g>>2]|0;S=c[R>>2]|0;c[g>>2]=R+4;R=S<<24>>24;S=(((S&255)<<24>>24|0)<0)<<31>>31;Na=64;break e};case 17:{R=c[g>>2]|0;c[k>>2]=c[R>>2];c[k+4>>2]=c[R+4>>2];gb=+h[k>>3];c[g>>2]=R+8;h[k>>3]=gb;R=c[k>>2]|0;S=c[k+4>>2]|0;Na=64;break e};case 9:{S=c[g>>2]|0;R=c[S>>2]|0;c[g>>2]=S+4;S=Ra;Na=64;break e};case 10:{R=c[g>>2]|0;S=c[R>>2]|0;c[g>>2]=R+4;R=S;S=((S|0)<0)<<31>>31;Na=64;break e};case 13:{R=c[g>>2]|0;S=c[R>>2]|0;c[g>>2]=R+4;R=S<<16>>16;S=(((S&65535)<<16>>16|0)<0)<<31>>31;Na=64;break e};case 18:{R=c[g>>2]|0;c[k>>2]=c[R>>2];c[k+4>>2]=c[R+4>>2];gb=+h[k>>3];c[g>>2]=R+8;h[k>>3]=gb;R=c[k>>2]|0;S=c[k+4>>2]|0;Na=64;break e};default:{R=Ua;S=Ra;Na=64;break e}}while(0)}while(0);if((Na|0)==63){Na=0;if(L){R=P;S=Q;Na=64}else{Ra=Q;Ua=P;f=Pa;Sa=Oa;continue}}if((Na|0)==64){Na=0;T=a[Za>>0]|0;U=R;V=S}Ua=T<<24>>24;if(Ya)Ua=(Ua&15|0)==3?Ua&-33:Ua;Wa=Xa&-65537;Ra=(Xa&8192|0)==0?Xa:Wa;f:do switch(Ua|0){case 111:{Ba=U;Ma=(Ba|0)==0&(V|0)==0;if(Ma)Ja=Y;else{Ja=Y;xa=V;do{Ja=Ja+ -1|0;a[Ja>>0]=Ba&7|48;Ba=lr(Ba|0,xa|0,3)|0;xa=H}while(!((Ba|0)==0&(xa|0)==0))}if(!(Ra&8)){xa=U;Ba=V;La=Ra;Ia=Ta;Ka=0;Ma=29904;Na=94}else{xa=U;Ba=V;La=Ra;Ia=Ta;Ka=Ma&1^1;Ma=Ma?29904:29909;Na=94}break};case 67:{c[N>>2]=U;c[M>>2]=0;Z=N;X=N;q=-1;Na=115;break};case 83:{if(!Ta){sa=U;qa=U;ta=0;Na=122}else{Z=U;X=U;q=Ta;Na=115}break};case 109:{ja=bd(c[(Uc()|0)>>2]|0)|0;Na=99;break};case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{c[k>>2]=U;c[k+4>>2]=V;eb=+h[k>>3];c[r>>2]=0;if((V|0)>=0)if(!(Ra&2048)){Sa=Ra&1;f=Sa;Sa=(Sa|0)==0?29929:29934}else{f=1;Sa=29931}else{eb=-eb;f=1;Sa=29928}h[k>>3]=eb;fb=c[k+4>>2]&2146435072;if(!(fb>>>0<2146435072|(fb|0)==2146435072&0<0)){Ta=(Ua&32|0)!=0;if(eb!=eb|0.0!=0.0){f=0;Ua=Ta?29968:29976}else Ua=Ta?29952:29960;Va=f+3|0;Ta=(Va|0)<(Qa|0);if((Ra&8192|0)==0&Ta){Wa=Qa-Va|0;qr(s|0,32,(Wa>>>0>256?256:Wa)|0)|0;if(Wa>>>0>255)do{cr(s,256,e);Wa=Wa+ -256|0}while(Wa>>>0>255);cr(s,Wa,e)}cr(Sa,f,e);cr(Ua,3,e);if((Ra&73728|0)==8192&Ta){Ra=Qa-Va|0;qr(s|0,32,(Ra>>>0>256?256:Ra)|0)|0;if(Ra>>>0>255)do{cr(s,256,e);Ra=Ra+ -256|0}while(Ra>>>0>255);cr(s,Ra,e)}Ra=V;Ua=U;f=Pa;Va=Ta?Qa:Va;Sa=Oa;continue a}eb=+$q(eb,r)*2.0;Wa=eb!=0.0;if(Wa)c[r>>2]=(c[r>>2]|0)+ -1;Ya=Ua|32;if((Ya|0)==97){Wa=Ua&32;Sa=(Wa|0)==0?Sa:Sa+9|0;f=f|2;Va=Ta>>>0>11?0:12-Ta|0;do if(Va){gb=8.0;do{Va=Va+ -1|0;gb=gb*16.0}while((Va|0)!=0);if((a[Sa>>0]|0)==45){eb=-(gb+(-eb-gb));break}else{eb=eb+gb-gb;break}}while(0);Ya=c[r>>2]|0;Ya=(Ya|0)<0?0-Ya|0:Ya;if((Ya|0)<0){Xa=t;Va=Ya;Ya=((Ya|0)<0)<<31>>31;while(1){fb=zr(Va|0,Ya|0,10,0)|0;Xa=Xa+ -1|0;a[Xa>>0]=fb|48;fb=Va;Va=yr(Va|0,Ya|0,10,0)|0;if(!(Ya>>>0>9|(Ya|0)==9&fb>>>0>4294967295))break;else Ya=H}}else{Xa=t;Va=Ya}if(Va)while(1){Xa=Xa+ -1|0;a[Xa>>0]=(Va>>>0)%10|0|48;if(Va>>>0<10)break;else Va=(Va>>>0)/10|0}if((Xa|0)==(t|0)){a[u>>0]=48;Xa=u}a[Xa+ -1>>0]=(c[r>>2]>>31&2)+43;Va=Xa+ -2|0;a[Va>>0]=Ua+15;Ua=(Ra&8|0)==0;if((Ta|0)>0)if(Ua){Xa=v;while(1){fb=~~eb;Ua=Xa+1|0;a[Xa>>0]=d[29984+fb>>0]|Wa;eb=(eb- +(fb|0))*16.0;if((Ua-w|0)==1){a[Ua>>0]=46;Ua=Xa+2|0}if(!(eb!=0.0))break;else Xa=Ua}}else{Xa=v;while(1){fb=~~eb;Ua=Xa+1|0;a[Xa>>0]=d[29984+fb>>0]|Wa;eb=(eb- +(fb|0))*16.0;if((Ua-w|0)==1){a[Ua>>0]=46;Ua=Xa+2|0}if(!(eb!=0.0))break;else Xa=Ua}}else if(Ua){Ya=v;while(1){Xa=~~eb;Ua=Ya+1|0;a[Ya>>0]=d[29984+Xa>>0]|Wa;eb=(eb- +(Xa|0))*16.0;Xa=eb!=0.0;if((Ua-w|0)==1&Xa){a[Ua>>0]=46;Ua=Ya+2|0}if(!Xa)break;else Ya=Ua}}else{Xa=v;while(1){fb=~~eb;Ua=Xa+1|0;a[Xa>>0]=d[29984+fb>>0]|Wa;eb=(eb- +(fb|0))*16.0;if((Ua-w|0)==1){a[Ua>>0]=46;Ua=Xa+2|0}if(!(eb!=0.0))break;else Xa=Ua}}do if(!Ta)Na=186;else{if((x+Ua|0)>=(Ta|0)){Na=186;break}W=y+Ta-Va|0}while(0);if((Na|0)==186){Na=0;W=z-Va+Ua|0}Ta=W+f|0;Ra=Ra&73728;Wa=(Ta|0)<(Qa|0);if((Ra|0)==0&Wa){Xa=Qa-Ta|0;qr(s|0,32,(Xa>>>0>256?256:Xa)|0)|0;if(Xa>>>0>255)do{cr(s,256,e);Xa=Xa+ -256|0}while(Xa>>>0>255);cr(s,Xa,e)}cr(Sa,f,e);if((Ra|0)==65536&Wa){Sa=Qa-Ta|0;qr(s|0,48,(Sa>>>0>256?256:Sa)|0)|0;if(Sa>>>0>255)do{cr(s,256,e);Sa=Sa+ -256|0}while(Sa>>>0>255);cr(s,Sa,e)}f=Ua-w|0;cr(v,f,e);Sa=A-Va|0;f=W-Sa-f|0;if((f|0)>0){qr(s|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255)do{cr(s,256,e);f=f+ -256|0}while(f>>>0>255);cr(s,f,e)}cr(Va,Sa,e);if((Ra|0)==8192&Wa){Ra=Qa-Ta|0;qr(s|0,32,(Ra>>>0>256?256:Ra)|0)|0;if(Ra>>>0>255)do{cr(s,256,e);Ra=Ra+ -256|0}while(Ra>>>0>255);cr(s,Ra,e)}Ra=V;Ua=U;f=Pa;Va=Wa?Qa:Ta;Sa=Oa;continue a}Va=(Ta|0)<0?6:Ta;if(Wa){Ta=(c[r>>2]|0)+ -28|0;c[r>>2]=Ta;eb=eb*268435456.0}else Ta=c[r>>2]|0;Ta=(Ta|0)<0?B:C;Wa=Ta;do{fb=~~eb>>>0;c[Wa>>2]=fb;Wa=Wa+4|0;eb=(eb- +(fb>>>0))*1.0e9}while(eb!=0.0);ab=c[r>>2]|0;if((ab|0)>0){Xa=Ta;do{Za=(ab|0)>29?29:ab;$a=Wa+ -4|0;do if($a>>>0>=Xa>>>0){_a=0;do{db=or(c[$a>>2]|0,0,Za|0)|0;db=kr(db|0,H|0,_a|0,0)|0;fb=H;cb=zr(db|0,fb|0,1e9,0)|0;c[$a>>2]=cb;_a=yr(db|0,fb|0,1e9,0)|0;$a=$a+ -4|0}while($a>>>0>=Xa>>>0);if(!_a)break;Xa=Xa+ -4|0;c[Xa>>2]=_a}while(0);while(1){if(Wa>>>0<=Xa>>>0)break;_a=Wa+ -4|0;if(!(c[_a>>2]|0))Wa=_a;else break}ab=(c[r>>2]|0)-Za|0;c[r>>2]=ab}while((ab|0)>0)}else Xa=Ta;g:do if((ab|0)<0){Za=((Va+25|0)/9|0)+1|0;if((Ya|0)==102){_a=Ta;$a=Ta+(Za<<2)|0;while(1){ab=0-ab|0;ab=(ab|0)>9?9:ab;do if(Xa>>>0>>0){cb=(1<>>ab;bb=0;fb=Xa;do{hb=c[fb>>2]|0;c[fb>>2]=(hb>>>ab)+bb;bb=da(hb&cb,db)|0;fb=fb+4|0}while(fb>>>0>>0);Xa=(c[Xa>>2]|0)==0?Xa+4|0:Xa;if(!bb)break;c[Wa>>2]=bb;Wa=Wa+4|0}else Xa=(c[Xa>>2]|0)==0?Xa+4|0:Xa;while(0);Wa=(Wa-_a>>2|0)>(Za|0)?$a:Wa;ab=(c[r>>2]|0)+ab|0;c[r>>2]=ab;if((ab|0)>=0)break g}}do{_a=0-ab|0;_a=(_a|0)>9?9:_a;do if(Xa>>>0>>0){cb=(1<<_a)+ -1|0;ab=1e9>>>_a;$a=0;bb=Xa;do{hb=c[bb>>2]|0;c[bb>>2]=(hb>>>_a)+$a;$a=da(hb&cb,ab)|0;bb=bb+4|0}while(bb>>>0>>0);Xa=(c[Xa>>2]|0)==0?Xa+4|0:Xa;if(!$a)break;c[Wa>>2]=$a;Wa=Wa+4|0}else Xa=(c[Xa>>2]|0)==0?Xa+4|0:Xa;while(0);if((Wa-Xa>>2|0)>(Za|0))Wa=Xa+(Za<<2)|0;ab=(c[r>>2]|0)+_a|0;c[r>>2]=ab}while((ab|0)<0)}while(0);Za=Ta;do if(Xa>>>0>>0){_a=(Za-Xa>>2)*9|0;$a=c[Xa>>2]|0;if($a>>>0<10)break;else ab=10;do{ab=ab*10|0;_a=_a+1|0}while($a>>>0>=ab>>>0)}else _a=0;while(0);$a=(Ya|0)==103;Ya=Va-((Ya|0)!=102?_a:0)+(($a&(Va|0)!=0)<<31>>31)|0;if((Ya|0)<(((Wa-Za>>2)*9|0)+ -9|0)){cb=Ya+9216|0;bb=(cb|0)/9|0;Ya=Ta+(bb+ -1023<<2)|0;cb=((cb|0)%9|0)+1|0;if((cb|0)<9){ab=10;do{ab=ab*10|0;cb=cb+1|0}while((cb|0)!=9)}else ab=10;db=c[Ya>>2]|0;cb=(db>>>0)%(ab>>>0)|0;if((cb|0)==0?(Ta+(bb+ -1022<<2)|0)==(Wa|0):0){va=Xa;wa=Ya;Da=_a}else Na=246;do if((Na|0)==246){Na=0;eb=(((db>>>0)/(ab>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;va=(ab|0)/2|0;do if(cb>>>0>>0)gb=.5;else{if((cb|0)==(va|0)?(Ta+(bb+ -1022<<2)|0)==(Wa|0):0){gb=1.0;break}gb=1.5}while(0);do if(f){if((a[Sa>>0]|0)!=45)break;eb=eb*-1.0;gb=gb*-1.0}while(0);va=db-cb|0;c[Ya>>2]=va;if(!(eb+gb!=eb)){va=Xa;wa=Ya;Da=_a;break}hb=va+ab|0;c[Ya>>2]=hb;if(hb>>>0>999999999){va=Xa;while(1){wa=Ya+ -4|0;c[Ya>>2]=0;if(wa>>>0>>0){va=va+ -4|0;c[va>>2]=0}hb=(c[wa>>2]|0)+1|0;c[wa>>2]=hb;if(hb>>>0>999999999)Ya=wa;else break}}else{va=Xa;wa=Ya}Da=(Za-va>>2)*9|0;Xa=c[va>>2]|0;if(Xa>>>0<10)break;else Ya=10;do{Ya=Ya*10|0;Da=Da+1|0}while(Xa>>>0>=Ya>>>0)}while(0);hb=wa+4|0;Xa=va;Ya=Da;Wa=Wa>>>0>hb>>>0?hb:Wa}else Ya=_a;bb=0-Ya|0;while(1){if(Wa>>>0<=Xa>>>0){_a=0;break}_a=Wa+ -4|0;if(!(c[_a>>2]|0))Wa=_a;else{_a=1;break}}do if($a){Va=((Va|0)==0&1)+Va|0;if((Va|0)>(Ya|0)&(Ya|0)>-5){Ua=Ua+ -1|0;Va=Va+ -1-Ya|0}else{Ua=Ua+ -2|0;Va=Va+ -1|0}if(Ra&8)break;do if(_a){ab=c[Wa+ -4>>2]|0;if(!ab){cb=9;break}if(!((ab>>>0)%10|0)){$a=10;cb=0}else{cb=0;break}do{$a=$a*10|0;cb=cb+1|0}while(((ab>>>0)%($a>>>0)|0|0)==0)}else cb=9;while(0);Za=((Wa-Za>>2)*9|0)+ -9|0;if((Ua|32|0)==102){hb=Za-cb|0;hb=(hb|0)<0?0:hb;Va=(Va|0)<(hb|0)?Va:hb;break}else{hb=Za+Ya-cb|0;hb=(hb|0)<0?0:hb;Va=(Va|0)<(hb|0)?Va:hb;break}}while(0);$a=(Va|0)!=0;if($a)Za=1;else Za=(Ra&8|0)!=0;Za=Za&1;ab=(Ua|32|0)==102;if(ab){Ua=(Ya|0)>0?Ya:0;bb=0}else{cb=(Ya|0)<0?bb:Ya;if((cb|0)<0){db=t;bb=cb;cb=((cb|0)<0)<<31>>31;while(1){hb=zr(bb|0,cb|0,10,0)|0;db=db+ -1|0;a[db>>0]=hb|48;hb=bb;bb=yr(bb|0,cb|0,10,0)|0;if(!(cb>>>0>9|(cb|0)==9&hb>>>0>4294967295))break;else cb=H}}else{db=t;bb=cb}if(bb)while(1){db=db+ -1|0;a[db>>0]=(bb>>>0)%10|0|48;if(bb>>>0<10)break;else bb=(bb>>>0)/10|0}if((A-db|0)<2)do{db=db+ -1|0;a[db>>0]=48}while((A-db|0)<2);a[db+ -1>>0]=(Ya>>31&2)+43;bb=db+ -2|0;a[bb>>0]=Ua;Ua=A-bb|0}Ya=f+1+Va+Za+Ua|0;Ua=Ra&73728;Za=(Ya|0)<(Qa|0);if((Ua|0)==0&Za){cb=Qa-Ya|0;qr(s|0,32,(cb>>>0>256?256:cb)|0)|0;if(cb>>>0>255)do{cr(s,256,e);cb=cb+ -256|0}while(cb>>>0>255);cr(s,cb,e)}cr(Sa,f,e);if((Ua|0)==65536&Za){Sa=Qa-Ya|0;qr(s|0,48,(Sa>>>0>256?256:Sa)|0)|0;if(Sa>>>0>255)do{cr(s,256,e);Sa=Sa+ -256|0}while(Sa>>>0>255);cr(s,Sa,e)}do if(ab){f=Xa>>>0>Ta>>>0?Ta:Xa;Sa=f;do{_a=c[Sa>>2]|0;if(!_a)Xa=D;else{Xa=D;while(1){Xa=Xa+ -1|0;a[Xa>>0]=(_a>>>0)%10|0|48;if(_a>>>0<10)break;else _a=(_a>>>0)/10|0}}do if((Sa|0)==(f|0)){if((Xa|0)!=(D|0))break;a[F>>0]=48;Xa=F}else{if(Xa>>>0<=v>>>0)break;do{Xa=Xa+ -1|0;a[Xa>>0]=48}while(Xa>>>0>v>>>0)}while(0);cr(Xa,E-Xa|0,e);Sa=Sa+4|0}while(Sa>>>0<=Ta>>>0);if(!$a?(Ra&8|0)==0:0)break;cr(3e4,1,e);if(Sa>>>0>>0&(Va|0)>0)do{Ta=c[Sa>>2]|0;if(Ta){Ra=D;while(1){Ra=Ra+ -1|0;a[Ra>>0]=(Ta>>>0)%10|0|48;if(Ta>>>0<10)break;else Ta=(Ta>>>0)/10|0}if(Ra>>>0>v>>>0){$=Ra;Na=313}else na=Ra}else{$=D;Na=313}if((Na|0)==313)while(1){Na=0;na=$+ -1|0;a[na>>0]=48;if(na>>>0>v>>>0)$=na;else break}cr(na,(Va|0)>9?9:Va,e);Sa=Sa+4|0;Va=Va+ -9|0}while(Sa>>>0>>0&(Va|0)>0);if((Va|0)<=0)break;qr(s|0,48,(Va>>>0>256?256:Va)|0)|0;if(Va>>>0>255)do{cr(s,256,e);Va=Va+ -256|0}while(Va>>>0>255);cr(s,Va,e)}else{Sa=_a?Wa:Xa+4|0;do if((Va|0)>-1){Ra=(Ra&8|0)!=0;Ta=Xa;do{Wa=c[Ta>>2]|0;if(Wa){f=D;while(1){f=f+ -1|0;a[f>>0]=(Wa>>>0)%10|0|48;if(Wa>>>0<10)break;else Wa=(Wa>>>0)/10|0}if((f|0)!=(D|0))aa=f;else Na=324}else Na=324;if((Na|0)==324){Na=0;a[F>>0]=48;aa=F}do if((Ta|0)==(Xa|0)){f=aa+1|0;cr(aa,1,e);if(!((Va|0)>0|Ra))break;cr(3e4,1,e)}else{if(aa>>>0>v>>>0)f=aa;else{f=aa;break}do{f=f+ -1|0;a[f>>0]=48}while(f>>>0>v>>>0)}while(0);hb=E-f|0;cr(f,(hb|0)<(Va|0)?hb:Va,e);Va=Va-hb|0;Ta=Ta+4|0}while(Ta>>>0>>0&(Va|0)>-1);if((Va|0)<=0)break;qr(s|0,48,(Va>>>0>256?256:Va)|0)|0;if(Va>>>0>255)do{cr(s,256,e);Va=Va+ -256|0}while(Va>>>0>255);cr(s,Va,e)}while(0);cr(bb,A-bb|0,e)}while(0);if((Ua|0)==8192&Za){Ra=Qa-Ya|0;qr(s|0,32,(Ra>>>0>256?256:Ra)|0)|0;if(Ra>>>0>255)do{cr(s,256,e);Ra=Ra+ -256|0}while(Ra>>>0>255);cr(s,Ra,e)}Ra=V;Ua=U;f=Pa;Va=Za?Qa:Ya;Sa=Oa;continue a};case 88:case 120:{ca=Ra;ea=Ta;ba=Ua;Na=77;break};case 105:case 100:{if((V|0)<0){fa=jr(0,0,U|0,V|0)|0;ga=H;ha=1;ia=29904;Na=89;break f}if(!(Ra&2048)){ia=Ra&1;fa=U;ga=V;ha=ia;ia=(ia|0)==0?29904:29906;Na=89}else{fa=U;ga=V;ha=1;ia=29905;Na=89}break};case 117:{fa=U;ga=V;ha=0;ia=29904;Na=89;break};case 99:{a[J>>0]=U;Aa=V;za=U;ya=J;Ca=Wa;Ga=1;Fa=0;Ea=29904;Ha=Y;break};case 110:switch(Ya|0){case 7:{Ra=U;c[Ra>>2]=pa;c[Ra+4>>2]=((pa|0)<0)<<31>>31;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 0:{c[U>>2]=pa;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 2:{Ra=U;c[Ra>>2]=pa;c[Ra+4>>2]=((pa|0)<0)<<31>>31;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 6:{c[U>>2]=pa;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 1:{c[U>>2]=pa;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 3:{b[U>>1]=pa;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};case 4:{a[U>>0]=pa;Ra=V;Ua=U;f=Pa;Sa=Oa;continue a};default:{Ra=V;Ua=U;f=Pa;Sa=Oa;continue a}};case 112:{ca=Ra|8;ea=Ta>>>0>8?Ta:8;ba=120;Na=77;break};case 115:{ja=(U|0)==0?29920:U;Na=99;break};default:{Aa=V;za=U;ya=f;Ca=Ra;Ga=Ta;Fa=0;Ea=29904;Ha=Y}}while(0);h:do if((Na|0)==77){Ba=U;xa=ba&32;if(!((Ba|0)==0&(V|0)==0)){Ja=Y;Ia=V;do{Ja=Ja+ -1|0;a[Ja>>0]=d[29984+(Ba&15)>>0]|xa;Ba=lr(Ba|0,Ia|0,4)|0;Ia=H}while(!((Ba|0)==0&(Ia|0)==0));if(!(ca&8)){xa=U;Ba=V;La=ca;Ia=ea;Ka=0;Ma=29904;Na=94}else{xa=U;Ba=V;La=ca;Ia=ea;Ka=2;Ma=29904+(ba>>4)|0;Na=94}}else{xa=U;Ba=V;Ja=Y;La=ca;Ia=ea;Ka=0;Ma=29904;Na=94}}else if((Na|0)==89){xa=fa;if(ga>>>0>0|(ga|0)==0&xa>>>0>4294967295){Ja=Y;Ba=ga;while(1){hb=zr(xa|0,Ba|0,10,0)|0;Ja=Ja+ -1|0;a[Ja>>0]=hb|48;hb=xa;xa=yr(xa|0,Ba|0,10,0)|0;if(!(Ba>>>0>9|(Ba|0)==9&hb>>>0>4294967295))break;else Ba=H}}else Ja=Y;if(!xa){xa=fa;Ba=ga;La=Ra;Ia=Ta;Ka=ha;Ma=ia;Na=94}else while(1){Ja=Ja+ -1|0;a[Ja>>0]=(xa>>>0)%10|0|48;if(xa>>>0<10){xa=fa;Ba=ga;La=Ra;Ia=Ta;Ka=ha;Ma=ia;Na=94;break}else xa=(xa>>>0)/10|0}}else if((Na|0)==99){Na=0;Ea=ja;ya=(Ta|0)==0;i:do if((Ea&3|0)==0|ya){_=Ta;ka=ya;la=ja;Na=102}else{za=Ta;ya=ja;while(1){if(!(a[ya>>0]|0)){ra=za;ua=ya;break i}ya=ya+1|0;za=za+ -1|0;Aa=(za|0)==0;if((ya&3|0)==0|Aa){_=za;ka=Aa;la=ya;Na=102;break}}}while(0);j:do if((Na|0)==102){Na=0;if(!ka)if(a[la>>0]|0){k:do if(_>>>0>3){ra=_;ua=la;do{hb=c[ua>>2]|0;if((hb&-2139062144^-2139062144)&hb+ -16843009)break k;ua=ua+4|0;ra=ra+ -4|0}while(ra>>>0>3)}else{ra=_;ua=la}while(0);if(!ra)ra=0;else while(1){if(!(a[ua>>0]|0))break j;ua=ua+1|0;ra=ra+ -1|0;if(!ra){ra=0;break}}}else{ra=_;ua=la}else{ra=0;ua=la}}while(0);Ha=(ra|0)!=0?ua:0;if(!Ha){Aa=V;za=U;ya=ja;Ca=Wa;Ga=Ta;Fa=0;Ea=29904;Ha=ja+Ta|0;break}else{Aa=V;za=U;ya=ja;Ca=Wa;Ga=Ha-Ea|0;Fa=0;Ea=29904;break}}else if((Na|0)==115){ta=0;sa=0;qa=Z;while(1){Na=c[qa>>2]|0;if(!Na)break;sa=ar(G,Na)|0;if((sa|0)<=-1){p=-1;Na=376;break a}Na=sa+ta|0;if(sa>>>0>(q-ta|0)>>>0){sa=Z;qa=X;Na=122;break h}if(Na>>>0>=q>>>0){ta=Na;break}ta=Na;qa=qa+4|0}if((sa|0)<0){p=-1;Na=376;break a}else{sa=Z;qa=X;Na=122}}while(0);if((Na|0)==94){Na=0;Ca=(Ia|0)>-1?La&-65537:La;ya=(xa|0)==0&(Ba|0)==0;if(ya&(Ia|0)==0){Aa=Ba;za=xa;ya=Y;Ga=0;Fa=Ka;Ea=Ma;Ha=Y}else{Ga=(ya&1)+(I-Ja)|0;Aa=Ba;za=xa;ya=Ja;Ga=(Ia|0)>(Ga|0)?Ia:Ga;Fa=Ka;Ea=Ma;Ha=Y}}else if((Na|0)==122){Na=0;Ra=Ra&73728;Sa=(ta|0)<(Qa|0);if((Ra|0)==0&Sa){Ta=Qa-ta|0;qr(s|0,32,(Ta>>>0>256?256:Ta)|0)|0;if(Ta>>>0>255)do{cr(s,256,e);Ta=Ta+ -256|0}while(Ta>>>0>255);cr(s,Ta,e)}l:do if(ta){f=0;Ta=sa;while(1){Ua=c[Ta>>2]|0;if(!Ua)break l;Ua=ar(G,Ua)|0;f=Ua+f|0;if((f|0)>(ta|0))break l;cr(G,Ua,e);if(f>>>0>=ta>>>0)break l;Ta=Ta+4|0}}while(0);if((Ra|0)==8192&Sa){Ra=Qa-ta|0;qr(s|0,32,(Ra>>>0>256?256:Ra)|0)|0;if(Ra>>>0>255)do{cr(s,256,e);Ra=Ra+ -256|0}while(Ra>>>0>255);cr(s,Ra,e)}Ra=V;Ua=qa;f=Pa;Va=Sa?Qa:ta;Sa=Oa;continue}Ra=Ha-ya|0;f=(Ga|0)<(Ra|0)?Ra:Ga;Sa=Fa+f|0;Va=(Qa|0)<(Sa|0)?Sa:Qa;Ta=Ca&73728;Qa=(Sa|0)<(Va|0);if((Ta|0)==0&Qa){Ua=Va-Sa|0;qr(s|0,32,(Ua>>>0>256?256:Ua)|0)|0;if(Ua>>>0>255)do{cr(s,256,e);Ua=Ua+ -256|0}while(Ua>>>0>255);cr(s,Ua,e)}cr(Ea,Fa,e);if((Ta|0)==65536&Qa){Ua=Va-Sa|0;qr(s|0,48,(Ua>>>0>256?256:Ua)|0)|0;if(Ua>>>0>255)do{cr(s,256,e);Ua=Ua+ -256|0}while(Ua>>>0>255);cr(s,Ua,e)}if((Ra|0)<(f|0)){f=f-Ra|0;qr(s|0,48,(f>>>0>256?256:f)|0)|0;if(f>>>0>255)do{cr(s,256,e);f=f+ -256|0}while(f>>>0>255);cr(s,f,e)}cr(ya,Ra,e);if(!((Ta|0)==8192&Qa)){Ra=Aa;Ua=za;f=Pa;Sa=Oa;continue}Qa=Va-Sa|0;qr(s|0,32,(Qa>>>0>256?256:Qa)|0)|0;if(Qa>>>0>255)do{cr(s,256,e);Qa=Qa+ -256|0}while(Qa>>>0>255);cr(s,Qa,e);Ra=Aa;Ua=za;f=Pa;Sa=Oa}if((Na|0)==357){if(e){hb=pa;i=m;return hb|0}if(!Sa){hb=0;i=m;return hb|0}else q=1;while(1){r=c[l+(q<<2)>>2]|0;if(!r){n=1;o=q;break}s=j+(q<<3)|0;m:do if(r>>>0<=20)do switch(r|0){case 10:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;hb=s;c[hb>>2]=fb;c[hb+4>>2]=((fb|0)<0)<<31>>31;break m};case 11:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;hb=s;c[hb>>2]=fb;c[hb+4>>2]=0;break m};case 12:{hb=c[g>>2]|0;fb=hb;db=c[fb>>2]|0;fb=c[fb+4>>2]|0;c[g>>2]=hb+8;hb=s;c[hb>>2]=db;c[hb+4>>2]=fb;break m};case 13:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;fb=(fb&65535)<<16>>16;hb=s;c[hb>>2]=fb;c[hb+4>>2]=((fb|0)<0)<<31>>31;break m};case 14:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;hb=s;c[hb>>2]=fb&65535;c[hb+4>>2]=0;break m};case 15:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;fb=(fb&255)<<24>>24;hb=s;c[hb>>2]=fb;c[hb+4>>2]=((fb|0)<0)<<31>>31;break m};case 16:{hb=c[g>>2]|0;fb=c[hb>>2]|0;c[g>>2]=hb+4;hb=s;c[hb>>2]=fb&255;c[hb+4>>2]=0;break m};case 17:{hb=c[g>>2]|0;c[k>>2]=c[hb>>2];c[k+4>>2]=c[hb+4>>2];gb=+h[k>>3];c[g>>2]=hb+8;h[s>>3]=gb;break m};case 18:{hb=c[g>>2]|0;c[k>>2]=c[hb>>2];c[k+4>>2]=c[hb+4>>2];gb=+h[k>>3];c[g>>2]=hb+8;h[s>>3]=gb;break m};case 9:{fb=c[g>>2]|0;hb=c[fb>>2]|0;c[g>>2]=fb+4;c[s>>2]=hb;break m};default:break m}while(0);while(0);q=q+1|0;if((q|0)>=10){p=1;Na=376;break}}if((Na|0)==376){i=m;return p|0}while(1){o=o+1|0;if(!n){p=-1;Na=376;break}if((o|0)>=10){p=1;Na=376;break}n=(c[l+(o<<2)>>2]|0)==0}if((Na|0)==376){i=m;return p|0}}else if((Na|0)==376){i=m;return p|0}return 0}function fr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;i=i+336|0;k=g+232|0;j=g+192|0;l=g;m=g+256|0;q=g+248|0;h=g+80|0;n=h+0|0;p=30008|0;o=n+112|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(o|0));if((d+ -1|0)>>>0>2147483646)if(!d){n=q;d=1}else{c[(Uc()|0)>>2]=75;s=-1;i=g;return s|0}else n=b;b=-2-n|0;b=d>>>0>b>>>0?b:d;q=h+48|0;c[q>>2]=b;d=h+20|0;c[d>>2]=n;r=h+44|0;c[r>>2]=n;n=n+b|0;p=h+16|0;c[p>>2]=n;s=h+28|0;c[s>>2]=n;n=j+0|0;o=n+40|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));c[k>>2]=c[f>>2];if((er(0,e,k,l,j)|0)<0)e=-1;else if(!(c[q>>2]|0)){f=c[r>>2]|0;c[r>>2]=m;c[s>>2]=m;c[d>>2]=m;c[q>>2]=80;c[p>>2]=m+80;e=er(h,e,k,l,j)|0;if(f){fd[c[h+36>>2]&31](h,0,0)|0;e=(c[d>>2]|0)==0?-1:e;c[r>>2]=f;c[q>>2]=0;c[p>>2]=0;c[s>>2]=0;c[d>>2]=0}}else e=er(h,e,k,l,j)|0;if(!b){s=e;i=g;return s|0}s=c[d>>2]|0;a[s+(((s|0)==(c[p>>2]|0))<<31>>31)>>0]=0;s=e;i=g;return s|0}function gr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;f=a+20|0;g=c[f>>2]|0;a=(c[a+16>>2]|0)-g|0;a=a>>>0>d>>>0?d:a;nr(g|0,b|0,a|0)|0;c[f>>2]=(c[f>>2]|0)+a;i=e;return d|0}function hr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0.0,j=0;d=i;i=i+112|0;f=d;g=f+0|0;e=g+108|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(e|0));j=f+4|0;c[j>>2]=a;g=f+8|0;c[g>>2]=-1;c[f+44>>2]=a;c[f+76>>2]=-1;c[f+104>>2]=0;e=f+108|0;c[e>>2]=~a;c[f+100>>2]=-1;h=+Yq(f,2,1);e=(c[j>>2]|0)-(c[g>>2]|0)+(c[e>>2]|0)|0;if(!b){i=d;return+h}if(e)a=a+e|0;c[b>>2]=a;i=d;return+h}function ir(){}function jr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=b-d-(c>>>0>a>>>0|0)>>>0;return(H=b,a-c>>>0|0)|0}function kr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return(H=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function lr(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b>>>c;return a>>>c|(b&(1<>>c-32|0}function mr(b){b=b|0;var c=0;c=b;while(a[c>>0]|0)c=c+1|0;return c-b|0}function nr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return Pa(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function or(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b<>>32-c;return a<0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else nr(b,c,d)|0;return b|0}function qr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;i=b&3;h=d|d<<8|d<<16|d<<24;g=f&~3;if(i){i=b+4-i|0;while((b|0)<(i|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function rr(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){H=b>>c;return a>>>c|(b&(1<>c-32|0}function sr(b){b=b|0;var c=0;c=a[n+(b>>>24)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[n+(b&255)>>0]|0)+24|0}function tr(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)>>0]|0)+24|0}function ur(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;d=b&65535;c=da(d,f)|0;e=a>>>16;d=(c>>>16)+(da(d,e)|0)|0;b=b>>>16;a=da(b,f)|0;return(H=(d>>>16)+(da(b,e)|0)+(((d&65535)+a|0)>>>16)|0,d+a<<16|c&65535|0)|0}function vr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=jr(j^a,i^b,j,i)|0;g=H;b=f^j;a=e^i;a=jr((Ar(h,g,jr(f^c,e^d,f,e)|0,H,0)|0)^b,H^a,b,a)|0;return a|0}function wr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+8|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;b=jr(h^a,g^b,h,g)|0;a=H;Ar(b,a,jr(l^d,k^e,l,k)|0,H,j)|0;a=jr(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;b=H;i=f;return(H=b,a)|0}function xr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;a=ur(e,f)|0;c=H;return(H=(da(b,f)|0)+(da(d,e)|0)+c|c&0,a|0|0)|0}function yr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=Ar(a,b,c,d,0)|0;return a|0}function zr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+8|0;f=g|0;Ar(a,b,d,e,f)|0;i=g;return(H=c[f+4>>2]|0,c[f>>2]|0)|0}function Ar(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=a;j=b;i=j;l=d;g=e;k=g;if(!i){g=(f|0)!=0;if(!k){if(g){c[f>>2]=(h>>>0)%(l>>>0);c[f+4>>2]=0}k=0;m=(h>>>0)/(l>>>0)>>>0;return(H=k,m)|0}else{if(!g){l=0;m=0;return(H=l,m)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;l=0;m=0;return(H=l,m)|0}}m=(k|0)==0;do if(l){if(!m){k=(sr(k|0)|0)-(sr(i|0)|0)|0;if(k>>>0<=31){m=k+1|0;l=31-k|0;a=k-31>>31;j=m;b=h>>>(m>>>0)&a|i<>>(m>>>0)&a;k=0;l=h<>2]=a|0;c[f+4>>2]=j|b&0;l=0;m=0;return(H=l,m)|0}k=l-1|0;if(k&l){l=(sr(l|0)|0)+33-(sr(i|0)|0)|0;p=64-l|0;m=32-l|0;n=m>>31;o=l-32|0;a=o>>31;j=l;b=m-1>>31&i>>>(o>>>0)|(i<>>(l>>>0))&a;a=a&i>>>(l>>>0);k=h<>>(o>>>0))&n|h<>31;break}if(f){c[f>>2]=k&h;c[f+4>>2]=0}if((l|0)==1){o=j|b&0;p=a|0|0;return(H=o,p)|0}else{p=tr(l|0)|0;o=i>>>(p>>>0)|0;p=i<<32-p|h>>>(p>>>0)|0;return(H=o,p)|0}}else{if(m){if(f){c[f>>2]=(i>>>0)%(l>>>0);c[f+4>>2]=0}o=0;p=(i>>>0)/(l>>>0)>>>0;return(H=o,p)|0}if(!h){if(f){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(k>>>0)}o=0;p=(i>>>0)/(k>>>0)>>>0;return(H=o,p)|0}l=k-1|0;if(!(l&k)){if(f){c[f>>2]=a|0;c[f+4>>2]=l&i|b&0}o=0;p=i>>>((tr(k|0)|0)>>>0);return(H=o,p)|0}k=(sr(k|0)|0)-(sr(i|0)|0)|0;if(k>>>0<=30){a=k+1|0;l=31-k|0;j=a;b=i<>>(a>>>0);a=i>>>(a>>>0);k=0;l=h<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return(H=o,p)|0}while(0);if(!j){g=l;e=0;i=0}else{h=d|0|0;g=g|e&0;e=kr(h,g,-1,-1)|0;d=H;i=0;do{m=l;l=k>>>31|l<<1;k=i|k<<1;m=b<<1|m>>>31|0;n=b>>>31|a<<1|0;jr(e,d,m,n)|0;p=H;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;b=jr(m,n,o&h,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&g)|0;a=H;j=j-1|0}while((j|0)!=0);g=l;e=0}h=0;if(f){c[f>>2]=b;c[f+4>>2]=a}o=(k|0)>>>31|(g|h)<<1|(h<<1|k>>>31)&0|e;p=(k<<1|0>>>31)&-2|i;return(H=o,p)|0}function Br(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return fd[a&31](b|0,c|0,d|0)|0}function Cr(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;gd[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function Dr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;hd[a&3](b|0,c|0,d|0,e|0,f|0)}function Er(a){a=a|0;return id[a&3]()|0}function Fr(a,b){a=a|0;b=b|0;jd[a&255](b|0)}function Gr(a,b,c){a=a|0;b=b|0;c=c|0;kd[a&63](b|0,c|0)}function Hr(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ld[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function Ir(a,b){a=a|0;b=b|0;return md[a&127](b|0)|0}function Jr(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;nd[a&3](b|0,c|0,d|0,e|0,f|0,g|0,+h)}function Kr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;od[a&15](b|0,c|0,d|0)}function Lr(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;pd[a&7](b|0,c|0,d|0,e|0,f|0,+g)}function Mr(a){a=a|0;qd[a&3]()}function Nr(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return rd[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function Or(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return sd[a&7](b|0,c|0,d|0,e|0)|0}function Pr(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;td[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function Qr(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;ud[a&31](b|0,c|0,d|0,e|0,f|0,g|0)}function Rr(a,b,c){a=a|0;b=b|0;c=c|0;return vd[a&63](b|0,c|0)|0}function Sr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return wd[a&15](b|0,c|0,d|0,e|0,f|0)|0}function Tr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;xd[a&15](b|0,c|0,d|0,e|0)}function Ur(a,b,c){a=a|0;b=b|0;c=c|0;ea(0);return 0}function Vr(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;ea(1)}function Wr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(2)}function Xr(){ea(3);return 0}function Yr(a){a=a|0;ea(4)}function Zr(a,b){a=a|0;b=b|0;ea(5)}function _r(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ea(6)}function $r(a){a=a|0;ea(7);return 0}function as(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;ea(8)}function bs(a,b,c){a=a|0;b=b|0;c=c|0;ea(9)}function cs(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ea(10)}function ds(){ea(11)}function es(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ea(12);return 0}function fs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(13);return 0}function gs(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ea(14)}function hs(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(15)}function is(a,b){a=a|0;b=b|0;ea(16);return 0}function js(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(17);return 0}function ks(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(18)} - - - - -// EMSCRIPTEN_END_FUNCS -var fd=[Ur,cj,hj,lj,qj,vj,Sh,zj,ei,pi,qi,hk,mk,Dn,In,lo,no,qo,Xn,ao,co,go,Aq,Gq,zq,gr,Wp,Ur,Ur,Ur,Ur,Ur];var gd=[Vr,pk,rk,sk,tk,uk,vk,wk,xk,yk,zk,Ak,Gk,Ik,Jk,Kk,Lk,Mk,Nk,Ok,Pk,Qk,Rk,el,gl,tl,vl,El,Fl,Gl,Il,Kl,Sl,Tl,Ul,Wl,Yl,un,An,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr];var hd=[Wr,Nq,Mq,Jq];var id=[Xr,Yd,Rd,Xr];var jd=[Yr,be,ce,qe,re,se,ue,we,xe,Ae,Be,Ce,Ee,Fe,Ge,Je,Ke,Le,Ne,Pe,Qe,Te,Ue,Ve,Xe,Ye,Ze,af,bf,cf,ef,ff,gf,kf,lf,mf,of,qf,rf,sf,tf,uf,wf,xf,yf,zf,Bf,Cf,Df,Ef,Gf,Hf,If,Rf,Sf,Xf,Yf,bg,cg,dg,fg,hg,ig,jg,kg,lg,ng,pg,qg,rg,sg,tg,vg,xg,yg,zg,Ag,Bg,Dg,Eg,Hg,Fg,Ig,Gg,Jg,Cj,Bj,Ej,Dj,Kg,Lg,Tg,Ug,Vg,Xg,$g,ah,_g,bh,Zg,ch,dh,eh,fh,gh,hh,ih,kh,lh,oh,ph,uh,vh,th,wh,Yg,xh,zh,Ah,Bh,Dh,Eh,Fh,Gh,Ih,Oh,Ph,Uh,Vh,ai,bi,gi,hi,Ai,zi,ti,Bi,xi,Ci,aj,$i,oj,nj,Hj,Gj,Jj,Ij,Mj,Lj,Oj,Nj,Tj,Sj,Vj,Uj,$j,_j,_i,ak,Zj,bk,dk,ck,Un,jk,ik,ok,nk,Fk,Ek,_k,Zk,ol,nl,Cl,Bl,Ql,Pl,bm,am,gm,fm,jm,im,um,tm,Fm,Em,Qm,Pm,$m,_m,kn,jn,qn,pn,wn,vn,Cn,Bn,Hn,Gn,Pn,On,jo,io,Ln,Ao,$o,_o,bp,ap,ek,Tn,Wn,so,Io,Qo,Yo,Zo,bq,aq,hq,gq,kq,jq,mq,nq,pq,oq,rq,vq,sq,tq,yq,uq,wq,xq,jh,Di,$d,Ud,Mh,bn,Uq,Pp,Op,Np,Mp,Lp,Kp,Ii,Ui,_p,Yr,Yr];var kd=[Zr,ee,fe,ze,Ie,Se,$e,jf,pf,Qf,gg,og,wg,bj,nh,qh,Qh,Wh,ci,ii,pj,mm,nm,om,pm,rm,sm,xm,ym,zm,Am,Cm,Dm,Im,Jm,Km,Lm,Nm,Om,Tm,Um,Vm,Wm,Ym,Zm,Fn,Kn,gp,ip,kp,hp,jp,lp,Hd,Kd,Ld,Md,Nd,Zr,Zr,Zr,Zr,Zr,Zr];var ld=[_r,Ml,_l,_r];var md=[$r,de,ye,He,Re,_e,hf,lq,fj,gj,Og,jj,fq,mh,sh,Rh,uj,wj,xj,tj,Xh,Yh,di,ij,ji,ki,ri,ui,Xj,Dl,mp,op,qp,wp,yp,sp,up,Rl,np,pp,rp,xp,zp,tp,vp,km,lm,qm,vm,wm,Bm,Gm,Hm,Mm,Rm,Sm,Xm,Eo,Fo,Ho,cp,ep,dp,fp,wo,xo,zo,Mo,No,Po,Uo,Vo,Xo,cq,iq,qq,_d,Zd,Id,Td,Sd,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r,$r];var nd=[as,rn,xn,as];var od=[bs,oi,si,wi,vi,Yj,Gd,Wd,Jd,Pd,Od,bs,bs,bs,bs,bs];var pd=[cs,hl,ll,wl,yl,cs,cs,cs];var qd=[ds,Yp,Zp,ds];var rd=[es,Bo,Co,to,uo,Jo,Ko,Ro,So,es,es,es,es,es,es,es];var sd=[fs,po,Yn,Zn,_n,fo,fs,fs];var td=[gs,dm,hm,an,en,ln,nn,gs];var ud=[hs,Mg,rj,dj,$k,al,fl,ml,pl,ql,ul,zl,En,Jn,Qq,Pq,Oq,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs,hs];var vd=[is,te,De,Me,We,df,nf,vf,Af,Ff,eg,mg,ug,Cg,Pg,Qg,Wg,rh,Ch,Hh,yj,Th,Zh,Aj,kj,fi,li,mj,ko,mo,oo,$n,bo,eo,Vd,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is,is];var wd=[js,fk,kk,ro,Do,Go,ho,vo,yo,Lo,Oo,To,Wo,js,js,js];var xd=[ks,Ng,sj,ej,gk,lk,Cq,Dq,Fq,Xd,Qd,ks,ks,ks,ks,ks];return{___cxa_can_catch:Rq,_free:Uq,_memset:qr,_realloc:Vq,_i64Add:kr,_memmove:pr,___cxa_is_pointer_type:Sq,_i64Subtract:jr,_strlen:mr,_malloc:Tq,_memcpy:nr,___getTypeName:Kh,_bitshift64Lshr:lr,_bitshift64Shl:or,__GLOBAL__I_a:Jh,__GLOBAL__I_a64:Lh,__GLOBAL__I_a117:ni,runPostSets:ir,stackAlloc:yd,stackSave:zd,stackRestore:Ad,setThrew:Bd,setTempRet0:Ed,getTempRet0:Fd,dynCall_iiii:Br,dynCall_viiiiiii:Cr,dynCall_viiiii:Dr,dynCall_i:Er,dynCall_vi:Fr,dynCall_vii:Gr,dynCall_viiiiiiiii:Hr,dynCall_ii:Ir,dynCall_viiiiiid:Jr,dynCall_viii:Kr,dynCall_viiiiid:Lr,dynCall_v:Mr,dynCall_iiiiiiiii:Nr,dynCall_iiiii:Or,dynCall_viiiiiiii:Pr,dynCall_viiiiii:Qr,dynCall_iii:Rr,dynCall_iiiiii:Sr,dynCall_viiii:Tr}}) - - -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _free=Module["_free"]=asm["_free"];var _memset=Module["_memset"]=asm["_memset"];var _realloc=Module["_realloc"]=asm["_realloc"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _memmove=Module["_memmove"]=asm["_memmove"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _strlen=Module["_strlen"]=asm["_strlen"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var ___getTypeName=Module["___getTypeName"]=asm["___getTypeName"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var __GLOBAL__I_a=Module["__GLOBAL__I_a"]=asm["__GLOBAL__I_a"];var __GLOBAL__I_a64=Module["__GLOBAL__I_a64"]=asm["__GLOBAL__I_a64"];var __GLOBAL__I_a117=Module["__GLOBAL__I_a117"]=asm["__GLOBAL__I_a117"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=asm["dynCall_viiiiiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=asm["dynCall_viiiiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viiiiiid=Module["dynCall_viiiiiid"]=asm["dynCall_viiiiiid"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiiiid=Module["dynCall_viiiiid"]=asm["dynCall_viiiiid"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=asm["dynCall_iiiiiiiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=asm["dynCall_viiiiiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];var i64Math=(function(){var goog={math:{}};goog.math.Long=(function(low,high){this.low_=low|0;this.high_=high|0});goog.math.Long.IntCache_={};goog.math.Long.fromInt=(function(value){if(-128<=value&&value<128){var cachedObj=goog.math.Long.IntCache_[value];if(cachedObj){return cachedObj}}var obj=new goog.math.Long(value|0,value<0?-1:0);if(-128<=value&&value<128){goog.math.Long.IntCache_[value]=obj}return obj});goog.math.Long.fromNumber=(function(value){if(isNaN(value)||!isFinite(value)){return goog.math.Long.ZERO}else if(value<=-goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MIN_VALUE}else if(value+1>=goog.math.Long.TWO_PWR_63_DBL_){return goog.math.Long.MAX_VALUE}else if(value<0){return goog.math.Long.fromNumber(-value).negate()}else{return new goog.math.Long(value%goog.math.Long.TWO_PWR_32_DBL_|0,value/goog.math.Long.TWO_PWR_32_DBL_|0)}});goog.math.Long.fromBits=(function(lowBits,highBits){return new goog.math.Long(lowBits,highBits)});goog.math.Long.fromString=(function(str,opt_radix){if(str.length==0){throw Error("number format error: empty string")}var radix=opt_radix||10;if(radix<2||36=0){throw Error('number format error: interior "-" character: '+str)}var radixToPower=goog.math.Long.fromNumber(Math.pow(radix,8));var result=goog.math.Long.ZERO;for(var i=0;i=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_});goog.math.Long.prototype.getNumBitsAbs=(function(){if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){return 64}else{return this.negate().getNumBitsAbs()}}else{var val=this.high_!=0?this.high_:this.low_;for(var bit=31;bit>0;bit--){if((val&1<0});goog.math.Long.prototype.greaterThanOrEqual=(function(other){return this.compare(other)>=0});goog.math.Long.prototype.compare=(function(other){if(this.equals(other)){return 0}var thisNeg=this.isNegative();var otherNeg=other.isNegative();if(thisNeg&&!otherNeg){return-1}if(!thisNeg&&otherNeg){return 1}if(this.subtract(other).isNegative()){return-1}else{return 1}});goog.math.Long.prototype.negate=(function(){if(this.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.MIN_VALUE}else{return this.not().add(goog.math.Long.ONE)}});goog.math.Long.prototype.add=(function(other){var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00+b00;c16+=c00>>>16;c00&=65535;c16+=a16+b16;c32+=c16>>>16;c16&=65535;c32+=a32+b32;c48+=c32>>>16;c32&=65535;c48+=a48+b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.subtract=(function(other){return this.add(other.negate())});goog.math.Long.prototype.multiply=(function(other){if(this.isZero()){return goog.math.Long.ZERO}else if(other.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){return other.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}else if(other.equals(goog.math.Long.MIN_VALUE)){return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().multiply(other.negate())}else{return this.negate().multiply(other).negate()}}else if(other.isNegative()){return this.multiply(other.negate()).negate()}if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&other.lessThan(goog.math.Long.TWO_PWR_24_)){return goog.math.Long.fromNumber(this.toNumber()*other.toNumber())}var a48=this.high_>>>16;var a32=this.high_&65535;var a16=this.low_>>>16;var a00=this.low_&65535;var b48=other.high_>>>16;var b32=other.high_&65535;var b16=other.low_>>>16;var b00=other.low_&65535;var c48=0,c32=0,c16=0,c00=0;c00+=a00*b00;c16+=c00>>>16;c00&=65535;c16+=a16*b00;c32+=c16>>>16;c16&=65535;c16+=a00*b16;c32+=c16>>>16;c16&=65535;c32+=a32*b00;c48+=c32>>>16;c32&=65535;c32+=a16*b16;c48+=c32>>>16;c32&=65535;c32+=a00*b32;c48+=c32>>>16;c32&=65535;c48+=a48*b00+a32*b16+a16*b32+a00*b48;c48&=65535;return goog.math.Long.fromBits(c16<<16|c00,c48<<16|c32)});goog.math.Long.prototype.div=(function(other){if(other.isZero()){throw Error("division by zero")}else if(this.isZero()){return goog.math.Long.ZERO}if(this.equals(goog.math.Long.MIN_VALUE)){if(other.equals(goog.math.Long.ONE)||other.equals(goog.math.Long.NEG_ONE)){return goog.math.Long.MIN_VALUE}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ONE}else{var halfThis=this.shiftRight(1);var approx=halfThis.div(other).shiftLeft(1);if(approx.equals(goog.math.Long.ZERO)){return other.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE}else{var rem=this.subtract(other.multiply(approx));var result=approx.add(rem.div(other));return result}}}else if(other.equals(goog.math.Long.MIN_VALUE)){return goog.math.Long.ZERO}if(this.isNegative()){if(other.isNegative()){return this.negate().div(other.negate())}else{return this.negate().div(other).negate()}}else if(other.isNegative()){return this.div(other.negate()).negate()}var res=goog.math.Long.ZERO;var rem=this;while(rem.greaterThanOrEqual(other)){var approx=Math.max(1,Math.floor(rem.toNumber()/other.toNumber()));var log2=Math.ceil(Math.log(approx)/Math.LN2);var delta=log2<=48?1:Math.pow(2,log2-48);var approxRes=goog.math.Long.fromNumber(approx);var approxRem=approxRes.multiply(other);while(approxRem.isNegative()||approxRem.greaterThan(rem)){approx-=delta;approxRes=goog.math.Long.fromNumber(approx);approxRem=approxRes.multiply(other)}if(approxRes.isZero()){approxRes=goog.math.Long.ONE}res=res.add(approxRes);rem=rem.subtract(approxRem)}return res});goog.math.Long.prototype.modulo=(function(other){return this.subtract(this.div(other).multiply(other))});goog.math.Long.prototype.not=(function(){return goog.math.Long.fromBits(~this.low_,~this.high_)});goog.math.Long.prototype.and=(function(other){return goog.math.Long.fromBits(this.low_&other.low_,this.high_&other.high_)});goog.math.Long.prototype.or=(function(other){return goog.math.Long.fromBits(this.low_|other.low_,this.high_|other.high_)});goog.math.Long.prototype.xor=(function(other){return goog.math.Long.fromBits(this.low_^other.low_,this.high_^other.high_)});goog.math.Long.prototype.shiftLeft=(function(numBits){numBits&=63;if(numBits==0){return this}else{var low=this.low_;if(numBits<32){var high=this.high_;return goog.math.Long.fromBits(low<>>32-numBits)}else{return goog.math.Long.fromBits(0,low<>>numBits|high<<32-numBits,high>>numBits)}else{return goog.math.Long.fromBits(high>>numBits-32,high>=0?0:-1)}}});goog.math.Long.prototype.shiftRightUnsigned=(function(numBits){numBits&=63;if(numBits==0){return this}else{var high=this.high_;if(numBits<32){var low=this.low_;return goog.math.Long.fromBits(low>>>numBits|high<<32-numBits,high>>>numBits)}else if(numBits==32){return goog.math.Long.fromBits(high,0)}else{return goog.math.Long.fromBits(high>>>numBits-32,0)}}});var navigator={appName:"Modern Browser"};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b,c){if(a!=null)if("number"==typeof a)this.fromNumber(a,b,c);else if(b==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b)}function nbi(){return new BigInteger(null)}function am1(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863}return c}function am2(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&1073741823}return c}function am3(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455}return c}if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<=0;--i)r[i]=this[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this[0]=x;else if(x<-1)this[0]=x+DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s,b){var k;if(b==16)k=4;else if(b==8)k=3;else if(b==256)k=8;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else{this.fromRadix(s,b);return}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=k==8?s[i]&255:intAt(s,i);if(x<0){if(s.charAt(i)=="-")mi=true;continue}mi=false;if(sh==0)this[this.t++]=x;else if(sh+k>this.DB){this[this.t-1]|=(x&(1<>this.DB-sh}else this[this.t-1]|=x<=this.DB)sh-=this.DB}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0)this[this.t-1]|=(1<0&&this[this.t-1]==c)--this.t}function bnToString(b){if(this.s<0)return"-"+this.negate().toString(b);var k;if(b==16)k=4;else if(b==8)k=3;else if(b==2)k=1;else if(b==32)k=5;else if(b==4)k=2;else return this.toRadix(b);var km=(1<0){if(p>p)>0){m=true;r=int2char(d)}while(i>=0){if(p>(p+=this.DB-k)}else{d=this[i]>>(p-=k)&km;if(p<=0){p+=this.DB;--i}}if(d>0)m=true;if(m)r+=int2char(d)}}return m?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this[i]-a[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,r){var i;for(i=this.t-1;i>=0;--i)r[i+n]=this[i];for(i=n-1;i>=0;--i)r[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i=0;--i){r[i+ds+1]=this[i]>>cbs|c;c=(this[i]&bm)<=0;--i)r[i]=0;r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=this.s;var ds=Math.floor(n/this.DB);if(ds>=this.t){r.t=0;return}var bs=n%this.DB;var cbs=this.DB-bs;var bm=(1<>bs;for(var i=ds+1;i>bs}if(bs>0)r[this.t-ds-1]|=(this.s&bm)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r[i++]=this.DV+c;else if(c>0)r[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r[i]=0;for(i=0;i=0)r[i]=0;for(i=0;i=x.DV){r[i+x.t]-=x.DV;r[i+x.t+1]=1}}if(r.t>0)r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m,q,r){var pm=m.abs();if(pm.t<=0)return;var pt=this.abs();if(pt.t0){pm.lShiftTo(nsh,y);pt.lShiftTo(nsh,r)}else{pm.copyTo(y);pt.copyTo(r)}var ys=y.t;var y0=y[ys-1];if(y0==0)return;var yt=y0*(1<1?y[ys-2]>>this.F2:0);var d1=this.FV/yt,d2=(1<=0){r[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys,t);t.subTo(y,y);while(y.t=0){var qd=r[--i]==y0?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))0)r.rShiftTo(nsh,r);if(ts<0)BigInteger.ZERO.subTo(r,r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m){this.m=m}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m){this.m=m;this.mp=m.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x[x.t++]=0;for(var i=0;i>15)*this.mpl&this.um)<<15)&x.DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x.DV){x[j]-=x.DV;x[++j]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp(e,z){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g=z.convert(this),i=nbits(e)-1;g.copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&1<0)z.mulTo(r2,g,r);else{var t=r;r=r2;r2=t}}return z.revert(r)}function bnModPowInt(e,m){var z;if(e<256||m.isEven())z=new Classic(m);else z=new Montgomery(m);return this.exp(e,z)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnpFromRadix(s,b){this.fromInt(0);if(b==null)b=10;var cs=this.chunkSize(b);var d=Math.pow(b,cs),mi=false,j=0,w=0;for(var i=0;i=cs){this.dMultiply(d);this.dAddOffset(w,0);j=0;w=0}}if(j>0){this.dMultiply(Math.pow(b,j));this.dAddOffset(w,0)}if(mi)BigInteger.ZERO.subTo(this,this)}function bnpChunkSize(r){return Math.floor(Math.LN2*this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this[0]<=0)return 0;else return 1}function bnpDMultiply(n){this[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w){if(n==0)return;while(this.t<=w)this[this.t++]=0;this[w]+=n;while(this[w]>=this.DV){this[w]-=this.DV;if(++w>=this.t)this[this.t++]=0;++this[w]}}function bnpToRadix(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var cs=this.chunkSize(b);var a=Math.pow(b,cs);var d=nbv(a),y=nbi(),z=nbi(),r="";this.divRemTo(d,y,z);while(y.signum()>0){r=(a+z.intValue()).toString(b).substr(1)+r;y.divRemTo(d,y,z)}return z.intValue().toString(b)+r}function bnIntValue(){if(this.s<0){if(this.t==1)return this[0]-this.DV;else if(this.t==0)return-1}else if(this.t==1)return this[0];else if(this.t==0)return 0;return(this[1]&(1<<32-this.DB)-1)<>=this.DB}if(a.t>=this.DB}c+=this.s}else{c+=this.s;while(i>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r[i++]=c;else if(c<-1)r[i++]=this.DV+c;r.t=i;r.clamp()}BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.addTo=bnpAddTo;var Wrapper={abs:(function(l,h){var x=new goog.math.Long(l,h);var ret;if(x.isNegative()){ret=x.negate()}else{ret=x}HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_}),ensureTemps:(function(){if(Wrapper.ensuredTemps)return;Wrapper.ensuredTemps=true;Wrapper.two32=new BigInteger;Wrapper.two32.fromString("4294967296",10);Wrapper.two64=new BigInteger;Wrapper.two64.fromString("18446744073709551616",10);Wrapper.temp1=new BigInteger;Wrapper.temp2=new BigInteger}),lh2bignum:(function(l,h){var a=new BigInteger;a.fromString(h.toString(),10);var b=new BigInteger;a.multiplyTo(Wrapper.two32,b);var c=new BigInteger;c.fromString(l.toString(),10);var d=new BigInteger;c.addTo(b,d);return d}),stringify:(function(l,h,unsigned){var ret=(new goog.math.Long(l,h)).toString();if(unsigned&&ret[0]=="-"){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(ret,10);ret=new BigInteger;Wrapper.two64.addTo(bignum,ret);ret=ret.toString(10)}return ret}),fromString:(function(str,base,min,max,unsigned){Wrapper.ensureTemps();var bignum=new BigInteger;bignum.fromString(str,base);var bigmin=new BigInteger;bigmin.fromString(min,10);var bigmax=new BigInteger;bigmax.fromString(max,10);if(unsigned&&bignum.compareTo(BigInteger.ZERO)<0){var temp=new BigInteger;bignum.addTo(Wrapper.two64,temp);bignum=temp}var error=false;if(bignum.compareTo(bigmin)<0){bignum=bigmin;error=true}else if(bignum.compareTo(bigmax)>0){bignum=bigmax;error=true}var ret=goog.math.Long.fromString(bignum.toString());HEAP32[tempDoublePtr>>2]=ret.low_;HEAP32[tempDoublePtr+4>>2]=ret.high_;if(error)throw"range error"})};return Wrapper})();if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,STATIC_BASE)}else{addRunDependency("memory initializer");Browser.asyncLoad(memoryInitializer,(function(data){HEAPU8.set(data,STATIC_BASE);removeRunDependency("memory initializer")}),(function(data){throw"could not load memory initializer "+memoryInitializer}))}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"]&&shouldRunNow)run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(ENVIRONMENT_IS_WEB&&preloadStartTime!==null){Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms")}if(Module["_main"]&&shouldRunNow){Module["callMain"](args)}postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status){if(Module["noExitRuntime"]){return}ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;function abort(text){if(text){Module.print(text);Module.printErr(text)}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";throw"abort() at "+stackTrace()+extra}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run() - -//export {Module}; - - - diff --git a/libs/potree/LICENSE b/libs/potree/LICENSE deleted file mode 100644 index a1e6a6e..0000000 --- a/libs/potree/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ - -============ -== POTREE == -============ - -http://potree.org - -Copyright (c) 2011-2020, Markus Schütz -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation are those -of the authors and should not be interpreted as representing official policies, -either expressed or implied, of the FreeBSD Project. diff --git a/libs/potree/lazylibs/geopackage/LICENSE b/libs/potree/lazylibs/geopackage/LICENSE deleted file mode 100644 index f81e84a..0000000 --- a/libs/potree/lazylibs/geopackage/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 National Geospatial-Intelligence Agency - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/libs/potree/lazylibs/geopackage/README.md b/libs/potree/lazylibs/geopackage/README.md deleted file mode 100644 index 020db55..0000000 --- a/libs/potree/lazylibs/geopackage/README.md +++ /dev/null @@ -1,259 +0,0 @@ -# GeoPackage JS - -GeoPackage JS is an implementation of the OGC GeoPackage spec. This library works in both the browser and Node 4+. - -### Demo ### -[GeoPackage JS Demo Page](http://ngageoint.github.io/geopackage-js/) - -Cloning this repository and opening the docs/index.html in your browser will run the demo locally. - -### Installation ### - -[![Build Status](https://travis-ci.org/ngageoint/geopackage-js.svg?branch=master)](https://travis-ci.org/ngageoint/geopackage-js) -[![NPM](https://img.shields.io/npm/v/@ngageoint/geopackage.svg)](https://www.npmjs.com/package/@ngageoint/geopackage) -[![Coverage Status](https://coveralls.io/repos/github/ngageoint/geopackage-js/badge.svg)](https://coveralls.io/github/ngageoint/geopackage-js) - -```sh -$ npm install @ngageoint/geopackage -``` - -#### GeoPackage JS Library #### - -The [GeoPackage Libraries](http://ngageoint.github.io/GeoPackage/) were developed at the [National Geospatial-Intelligence Agency (NGA)](http://www.nga.mil/) in collaboration with [BIT Systems](http://www.bit-sys.com/). The government has "unlimited rights" and is releasing this software to increase the impact of government investments by providing developers with the opportunity to take things in new directions. The software use, modification, and distribution rights are stipulated within the [MIT license](http://choosealicense.com/licenses/mit/). - -### Pull Requests ### -If you'd like to contribute to this project, please make a pull request. We'll review the pull request and discuss the changes. All pull request contributions to this project will be released under the MIT license. - -Software source code previously released under an open source license and then modified by NGA staff is considered a "joint work" (see 17 USC § 101); it is partially copyrighted, partially public domain, and as a whole is protected by the copyrights of the non-government authors and must be released according to the terms of the original open source license. - -### About ### - -[GeoPackage JS](https://github.com/ngageoint/geopackage-js) is a [GeoPackage Library](http://ngageoint.github.io/GeoPackage/) JavaScript implementation of the Open Geospatial Consortium [GeoPackage](http://www.geopackage.org/) [spec](http://www.geopackage.org/spec/). It is listed as an [OGC GeoPackage Implementation](http://www.geopackage.org/#implementations_nga) by the National Geospatial-Intelligence Agency. - -The GeoPackage JavaScript library currently provides the ability to read GeoPackage files. This library works both in the browser and in Node. In the browser tiles are rendered using HTML5 Canvas and GeoPackages are read using [sql.js](https://github.com/kripken/sql.js/). In Node tiles are rendered [PureImage](https://github.com/joshmarinacci/node-pureimage) and GeoPackages are read using [node-sqlite3](https://github.com/mapbox/node-sqlite3). - -### Changelog - -##### 2.1.0 - -- Implementation of the Feature Style Extension and Contents ID Extension - -##### 2.0.8 - -- Checks for Electron when returning a tile creator - -##### 2.0 - -- All new API utilizing Promises - -##### 1.1.4 - -- Adds a method to retrieve tiles in EPSG:4326 - -##### 1.1.3 - -- Fixes issue #115 - -##### 1.1.2 - -- fix case where GeoPackage Zoom does not correspond to the web map zoom - -##### 1.1.1 - -- fix more instances of proj4 bug for react -- fixed tile generation for images with different x and y pixel densities - -##### 1.1.0 - -- accept pull request adding support for react -- fix bug with projected tiles that spanned the date line - -##### 1.0.25 - -- ensure we use proj4 2.4.3 instead of 2.4.4 - -##### 1.0.22 - -- Fixed bug where querying for indexed features only returned the geometry instead of the entire feature - -##### 1.0.19 - -- Remove dependency on Lwip - -### Usage ### - -View examples using [Bower](https://github.com/ngageoint/geopackage-js/tree/master/docs/bower) and [Browserify](https://github.com/ngageoint/geopackage-js/tree/master/docs) - -View the latest [docs](http://ngageoint.github.io/geopackage-js/jsdoc/module-geoPackage-GeoPackage.html) (currently being updated). - -#### Browser Usage #### -```javascript - -// attach this method to a file input onchange event -window.loadGeoPackage = function(files) { - var f = files[0]; - var r = new FileReader(); - r.onload = function() { - var array = new Uint8Array(r.result); - loadByteArray(array); - } - r.readAsArrayBuffer(f); -} - -function loadByteArray(array, callback) { - var db = new SQL.Database(array); - GeoPackageConnection.connectWithDatabase(db, function(err, connection) { - var geoPackage = new GeoPackage('', '', connection); - - // Now you can operate on the GeoPackage - - // get the tile table names - geoPackage.getTileTables(function(err, tileTableNames) { - // tileTableNames is an array of all tile table names - - // get the info for the first table - geoPackage.getTileDaoWithTableName(tileTableNames[0], function(err, tileDao) { - geoPackage.getInfoForTable(tileDao, function(err, info) { - // do something with the tile table info - }); - - // draw a tile into a canvas for an XYZ tile - var canvas = canvasFromSomewhere; - var gpr = new GeoPackageTileRetriever(tileDao, 256, 256); - var x = 0; - var y = 0; - var zoom = 0; - - console.time('Draw tile ' + x + ', ' + y + ' zoom: ' + zoom); - gpr.drawTileIn(x, y, zoom, canvas, function() { - console.timeEnd('Draw tile ' + x + ', ' + y + ' zoom: ' + zoom); - }); - - // or get a tile base64 data URL for an XYZ tile - gpr.getTile(x, y, zoom, function(err, tileBase64DataURL) { - console.log('got the base64 data url'); - }); - - // or get a tile from a GeoPackage tile column and tile row - tileDao.queryForTile(tileColumn, tileRow, zoom, function(err, tile) { - var tileData = tile.getTileData(); // the raw bytes from the GeoPackage - }); - - }); - }); - - // get the feature table names - geoPackage.getFeatureTables(function(err, featureTableNames) { - // featureTableNames is an array of all feature table names - - // get the info for the first table - geoPackage.getFeatureDaoWithTableName(featureTableNames[0], function(err, featureDao) { - geoPackage.getInfoForTable(featureDao, function(err, info) { - // do something with the feature table info - }); - - // query for all features - featureDao.queryForEach(function(err, row, rowDone) { - var feature = featureDao.getFeatureRow(row); - var geometry = currentRow.getGeometry(); - if (geometry) { - var geom = geometry.geometry; - var geoJson = geometry.geometry.toGeoJSON(); - - geoJson.properties = {}; - for (var key in feature.values) { - if(feature.values.hasOwnProperty(key) && key != feature.getGeometryColumn().name) { - var column = info.columnMap[key]; - geoJson.properties[column.displayName] = currentRow.values[key]; - } - } - } - rowDone(); - }); - }); - }); - }); -} - -``` - -#### NodeJS Usage #### - -```javascript -var GeoPackageAPI = require('@ngageoint/geopackage') - , GeoPackageManager = GeoPackageAPI.GeoPackageManager - , GeoPackageConnection = GeoPackageAPI.GeoPackageConnection - , GeoPackageTileRetriever = GeoPackageAPI.GeoPackageTileRetriever; - -GeoPackageAPI.open(filename, function(err, geoPackage) { - - // Now you can operate on the GeoPackage - - // get the tile table names - geoPackage.getTileTables(function(err, tileTableNames) { - // tileTableNames is an array of all tile table names - - // get the info for the first table - geoPackage.getTileDaoWithTableName(tileTableNames[0], function(err, tileDao) { - geoPackage.getInfoForTable(tileDao, function(err, info) { - // do something with the tile table info - }); - - // draw a tile into a canvas for an XYZ tile - var canvas = canvasFromSomewhere; - var gpr = new GeoPackageTileRetriever(tileDao, 256, 256); - var x = 0; - var y = 0; - var zoom = 0; - - console.time('Draw tile ' + x + ', ' + y + ' zoom: ' + zoom); - gpr.drawTileIn(x, y, zoom, canvas, function() { - console.timeEnd('Draw tile ' + x + ', ' + y + ' zoom: ' + zoom); - }); - - // or get a tile base64 data URL for an XYZ tile - gpr.getTile(x, y, zoom, function(err, tileBase64DataURL) { - console.log('got the base64 data url'); - }); - - // or get a tile from a GeoPackage tile column and tile row - tileDao.queryForTile(tileColumn, tileRow, zoom, function(err, tile) { - var tileData = tile.getTileData(); // the raw bytes from the GeoPackage - }); - - }); - }); - - // get the feature table names - geoPackage.getFeatureTables(function(err, featureTableNames) { - // featureTableNames is an array of all feature table names - - // get the info for the first table - geoPackage.getFeatureDaoWithTableName(featureTableNames[0], function(err, featureDao) { - geoPackage.getInfoForTable(featureDao, function(err, info) { - // do something with the feature table info - }); - - // query for all features - featureDao.queryForEach(function(err, row, rowDone) { - var feature = featureDao.getFeatureRow(row); - var geometry = currentRow.getGeometry(); - if (geometry) { - var geom = geometry.geometry; - var geoJson = geometry.geometry.toGeoJSON(); - - geoJson.properties = {}; - for (var key in feature.values) { - if(feature.values.hasOwnProperty(key) && key != feature.getGeometryColumn().name) { - var column = info.columnMap[key]; - geoJson.properties[column.displayName] = currentRow.values[key]; - } - } - } - rowDone(); - }); - }); - }); -}); - -``` diff --git a/libs/potree/lazylibs/geopackage/geopackage.js b/libs/potree/lazylibs/geopackage/geopackage.js deleted file mode 100644 index c9a8edc..0000000 --- a/libs/potree/lazylibs/geopackage/geopackage.js +++ /dev/null @@ -1,80817 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.geopackage = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i} - */ -GeoPackageAPI.iterateGeoJSONFeaturesFromTable = function(geopackage, table) { - var featureDao = geopackage.getFeatureDao(table); - if (!featureDao) { - throw new Error('No Table exists with the name ' + table); - } - - var columnMap = GeoPackageAPI.createDataColumnMap(featureDao); - - var srs = featureDao.getSrs(); - - var iterator = featureDao.queryForEach(); - - return { - srs: srs, - featureDao: featureDao, - results: { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var featureRow; - var geometry; - - while(!nextRow.done && !geometry) { - featureRow = featureDao.getRow(nextRow.value); - return { - value: GeoPackageAPI.parseFeatureRowIntoGeoJSON(featureRow, srs, columnMap), - done: false - }; - } - } - return { - done: true - } - }.bind(this) - } - }; -}; - -/** - * Gets a GeoJSON feature from the table by id - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the table to get the feature from - * @param {Number} featureId ID of the feature - * @param {Function} callback called with an error if one occurred and the GeoJSON feature - */ -GeoPackageAPI.getFeature = function(geopackage, table, featureId) { - var srs; - var featureDao = geopackage.getFeatureDao(table) - srs = featureDao.getSrs(); - var feature = featureDao.queryForId(featureId); - if (!feature) { - var features = featureDao.queryForAllEq('_feature_id', featureId) - if (features.length) { - feature = featureDao.getRow(features[0]); - } else { - var features = featureDao.queryForAllEq('_properties_id', featureId) - if (features.length) { - feature = featureDao.getRow(features[0]); - } - } - } - if (feature) { - return GeoPackageAPI.parseFeatureRowIntoGeoJSON(feature, srs); - } -}; - -GeoPackageAPI.parseFeatureRowIntoGeoJSON = function(featureRow, srs, columnMap) { - var geoJson = { - type: 'Feature', - properties: {} - }; - var geometry = featureRow.getGeometry(); - if (geometry && geometry.geometry) { - var geom = geometry.geometry; - var geoJsonGeom = geometry.geometry.toGeoJSON(); - if (srs.definition && srs.definition !== 'undefined' && (srs.organization.toUpperCase() + ':' + srs.organization_coordsys_id) != 'EPSG:4326') { - // geoJsonGeom = reproject.reproject(geoJsonGeom, srs.organization.toUpperCase() + ':' + srs.organization_coordsys_id, 'EPSG:4326'); - geoJsonGeom = reproject.reproject(geoJsonGeom, srs.getProjection(), 'EPSG:4326'); - - } - geoJson.geometry = geoJsonGeom; - } - - for (var key in featureRow.values) { - if(featureRow.values.hasOwnProperty(key) && key != featureRow.getGeometryColumn().name && key != 'id') { - if (key.toLowerCase() == '_feature_id') { - geoJson.id = featureRow.values[key]; - } else if (key.toLowerCase() == '_properties_id') { - geoJson.properties[key.substring(12)] = featureRow.values[key]; - } else if (columnMap && columnMap[key]) { - geoJson.properties[columnMap[key].displayName] = featureRow.values[key]; - } else { - geoJson.properties[key] = featureRow.values[key]; - } - } else if (featureRow.getGeometryColumn().name === key) { - // geoJson.properties[key] = geometry && !geometry.geometryError ? 'Valid' : geometry.geometryError; - } - } - geoJson.id = geoJson.id || featureRow.getId(); - return geoJson; -} - - -/** - * Gets a tile from the specified table - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the table to get the tile from - * @param {Number} zoom zoom level of the tile - * @param {Number} tileRow row of the tile - * @param {Number} tileColumn column of the tile - * - * @todo jsdoc return value - */ -GeoPackageAPI.getTileFromTable = function(geopackage, table, zoom, tileRow, tileColumn) { - var tileDao = geopackage.getTileDao(table); - return tileDao.queryForTile(tileColumn, tileRow, zoom); -}; - -/** - * Gets the tiles in the EPSG:4326 bounding box - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the tile table - * @param {Number} zoom Zoom of the tiles to query for - * @param {Number} west EPSG:4326 western boundary - * @param {Number} east EPSG:4326 eastern boundary - * @param {Number} south EPSG:4326 southern boundary - * @param {Number} north EPSG:4326 northern boundary - * @param {Function} callback called with an error if one occurred and a tiles object describing the tiles - */ -GeoPackageAPI.getTilesInBoundingBox = function(geopackage, table, zoom, west, east, south, north) { - var tiles = {}; - - var tileDao = geopackage.getTileDao(table); - if (zoom < tileDao.minZoom || zoom > tileDao.maxZoom) { - return - } - tiles.columns = []; - for (var i = 0; i < tileDao.table.columns.length; i++) { - var column = tileDao.table.columns[i]; - tiles.columns.push({ - index: column.index, - name: column.name, - max: column.max, - min: column.min, - notNull: column.notNull, - primaryKey: column.primaryKey - }); - } - var srs = tileDao.getSrs(); - tiles.srs = srs; - tiles.tiles = []; - - var tms = tileDao.tileMatrixSet; - var tm = tileDao.getTileMatrixWithZoomLevel(zoom); - if (!tm) { - return tiles; - } - var mapBoundingBox = new BoundingBox(Math.max(-180, west), Math.min(east, 180), south, north); - tiles.west = Math.max(-180, west).toFixed(2); - tiles.east = Math.min(east, 180).toFixed(2); - tiles.south = south.toFixed(2); - tiles.north = north.toFixed(2); - tiles.zoom = zoom; - mapBoundingBox = mapBoundingBox.projectBoundingBox('EPSG:4326', tileDao.srs.organization.toUpperCase() + ':' + tileDao.srs.organization_coordsys_id); - - var grid = TileBoundingBoxUtils.getTileGridWithTotalBoundingBox(tms.getBoundingBox(), tm.matrix_width, tm.matrix_height, mapBoundingBox); - - var iterator = tileDao.queryByTileGrid(grid, zoom); - - for (var row of iterator ) { - var tile = {}; - tile.tableName = table; - tile.id = row.getId(); - - var tileBB = TileBoundingBoxUtils.getTileBoundingBox(tms.getBoundingBox(), tm, row.getTileColumn(), row.getRow()); - tile.minLongitude = tileBB.minLongitude; - tile.maxLongitude = tileBB.maxLongitude; - tile.minLatitude = tileBB.minLatitude; - tile.maxLatitude = tileBB.maxLatitude; - tile.projection = tileDao.srs.organization.toUpperCase() + ':' + tileDao.srs.organization_coordsys_id; - tile.values = []; - for (var i = 0; i < tiles.columns.length; i++) { - var value = row.values[tiles.columns[i].name]; - if (tiles.columns[i].name === 'tile_data') { - tile.values.push('data'); - } else - if (value === null || value === 'null') { - tile.values.push(''); - } else { - tile.values.push(value.toString()); - tile[tiles.columns[i].name] = value; - } - } - tiles.tiles.push(tile); - } - return tiles; -}; - -/** - * Gets the tiles in the EPSG:4326 bounding box - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the tile table - * @param {Number} zoom Zoom of the tiles to query for - * @param {Number} west EPSG:4326 western boundary - * @param {Number} east EPSG:4326 eastern boundary - * @param {Number} south EPSG:4326 southern boundary - * @param {Number} north EPSG:4326 northern boundary - * @param {Function} callback called with an error if one occurred and a tiles object describing the tiles - */ -GeoPackageAPI.getTilesInBoundingBoxWebZoom = function(geopackage, table, webZoom, west, east, south, north) { - var tiles = {}; - - var tileDao = geopackage.getTileDao(table); - if (webZoom < tileDao.minWebZoom || webZoom > tileDao.maxWebZoom) { - return; - } - tiles.columns = []; - for (var i = 0; i < tileDao.table.columns.length; i++) { - var column = tileDao.table.columns[i]; - tiles.columns.push({ - index: column.index, - name: column.name, - max: column.max, - min: column.min, - notNull: column.notNull, - primaryKey: column.primaryKey - }); - } - var srs = tileDao.getSrs(); - tiles.srs = srs; - tiles.tiles = []; - - var zoom = tileDao.webZoomToGeoPackageZoom(webZoom); - - var tms = tileDao.tileMatrixSet; - var tm = tileDao.getTileMatrixWithZoomLevel(zoom); - if (!tm) { - return tiles; - } - var mapBoundingBox = new BoundingBox(Math.max(-180, west), Math.min(east, 180), south, north); - tiles.west = Math.max(-180, west).toFixed(2); - tiles.east = Math.min(east, 180).toFixed(2); - tiles.south = south.toFixed(2); - tiles.north = north.toFixed(2); - tiles.zoom = zoom; - mapBoundingBox = mapBoundingBox.projectBoundingBox('EPSG:4326', tileDao.srs.organization.toUpperCase() + ':' + tileDao.srs.organization_coordsys_id); - - var grid = TileBoundingBoxUtils.getTileGridWithTotalBoundingBox(tms.getBoundingBox(), tm.matrix_width, tm.matrix_height, mapBoundingBox); - - var iterator = tileDao.queryByTileGrid(grid, zoom); - for (var row of iterator) { - var tile = {}; - tile.tableName = table; - tile.id = row.getId(); - - var tileBB = TileBoundingBoxUtils.getTileBoundingBox(tms.getBoundingBox(), tm, row.getTileColumn(), row.getRow()); - tile.minLongitude = tileBB.minLongitude; - tile.maxLongitude = tileBB.maxLongitude; - tile.minLatitude = tileBB.minLatitude; - tile.maxLatitude = tileBB.maxLatitude; - tile.projection = tileDao.srs.organization.toUpperCase() + ':' + tileDao.srs.organization_coordsys_id; - tile.values = []; - for (var i = 0; i < tiles.columns.length; i++) { - var value = row.values[tiles.columns[i].name]; - if (tiles.columns[i].name === 'tile_data') { - tile.values.push('data'); - } else - if (value === null || value === 'null') { - tile.values.push(''); - } else { - tile.values.push(value.toString()); - tile[tiles.columns[i].name] = value; - } - } - tiles.tiles.push(tile); - } - return tiles; -}; - -GeoPackageAPI.getFeatureTileFromXYZ = function(geopackage, table, x, y, z, width, height) { - x = Number(x); - y = Number(y); - z = Number(z); - width = Number(width); - height = Number(height); - var featureDao = geopackage.getFeatureDao(table) - if (!featureDao) return; - var ft = new FeatureTile(featureDao, width, height); - return ft.drawTile(x, y, z); -} - -/** - * Gets the features in the EPSG:4326 bounding box - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the feature table - * @param {Number} west EPSG:4326 western boundary - * @param {Number} east EPSG:4326 eastern boundary - * @param {Number} south EPSG:4326 southern boundary - * @param {Number} north EPSG:4326 northern boundary - */ -GeoPackageAPI.getGeoJSONFeaturesInTile = function(geopackage, table, x, y, z, skipVerification) { - var webMercatorBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, z); - var bb = webMercatorBoundingBox.projectBoundingBox('EPSG:3857', 'EPSG:4326'); - return geopackage.indexFeatureTable(table) - .then(function(indexed) { - return geopackage.getFeatureDao(table); - }) - .then(function(featureDao) { - if (!featureDao) return; - var features = []; - var iterator = featureDao.queryForGeoJSONIndexedFeaturesWithBoundingBox(bb, skipVerification); - for (var feature of iterator) { - features.push(feature); - } - return features; - }) - .catch(function(error) { - console.log('error', error); - }); -} - -GeoPackageAPI.convertPBFToVectorTile = function(pbf) { - return new VectorTile.VectorTile(new Pbf(pbf)); -} - -/** - * Gets a mapbox VectorTile for the x y z web mercator tile specified - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table table name - * @param {Number} x x tile - * @param {Number} y y tile - * @param {Number} z web zoom - * @return {VectorTile} - */ -GeoPackageAPI.getVectorTile = function(geopackage, table, x, y, z) { - return GeoPackageAPI.getVectorTileProtobuf(geopackage, table, x, y, z) - .then(function(pbf) { - return new VectorTile.VectorTile(new Pbf(pbf)); - }); -} - -/** - * Gets a protobuf for the x y z web mercator tile specified - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table table name - * @param {Number} x x tile - * @param {Number} y y tile - * @param {Number} z web zoom - * @return {Protobuf} - */ -GeoPackageAPI.getVectorTileProtobuf = function(geopackage, table, x, y, z) { - return GeoPackageAPI.getGeoJSONFeaturesInTile(geopackage, table, x, y, z, true) - .then(function(features) { - var featureCollection = { - type: 'FeatureCollection', - features: features - }; - var tileBuffer = 8; - var tileIndex = geojsonvt(featureCollection, {buffer: tileBuffer * 8, maxZoom: z}); - var layer = {}; - var tile = tileIndex.getTile(z, x, y); - - var gjvt = {}; - - if (tile) { - gjvt[table] = tile; - } else { - gjvt[table] = {features:[]}; - } - - return vtpbf.fromGeojsonVt(gjvt); - }); -} - -/** - * Gets the features in the EPSG:4326 bounding box - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the feature table - * @param {Number} west EPSG:4326 western boundary - * @param {Number} east EPSG:4326 eastern boundary - * @param {Number} south EPSG:4326 southern boundary - * @param {Number} north EPSG:4326 northern boundary - */ -GeoPackageAPI.getFeaturesInBoundingBox = function(geopackage, table, west, east, south, north) { - return geopackage.indexFeatureTable(table) - .then(function(indexed) { - var featureDao = geopackage.getFeatureDao(table); - if (!featureDao) throw new Error('Unable to find table ' + table); - var features = []; - var bb = new BoundingBox(west, east, south, north); - var iterator = featureDao.queryIndexedFeaturesWithBoundingBox(bb); - return iterator; - }); -} - -/** - * Gets a tile image for an XYZ tile pyramid location - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the table containing the tiles - * @param {Number} x x index of the tile - * @param {Number} y y index of the tile - * @param {Number} z zoom level of the tile - * @param {Number} width width of the resulting tile - * @param {Number} height height of the resulting tile - * @return {Promise} - */ -GeoPackageAPI.getTileFromXYZ = function(geopackage, table, x, y, z, width, height) { - x = Number(x); - y = Number(y); - z = Number(z); - width = Number(width); - height = Number(height); - var tileDao = geopackage.getTileDao(table); - var retriever = new GeoPackageTileRetriever(tileDao, width, height); - return retriever.getTile(x, y, z); -}; - -/** - * Draws an XYZ tile pyramid location into the provided canvas - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the table containing the tiles - * @param {Number} x x index of the tile - * @param {Number} y y index of the tile - * @param {Number} z zoom level of the tile - * @param {Number} width width of the resulting tile - * @param {Number} height height of the resulting tile - * @param {Canvas} canvas canvas element to draw the tile into - */ -GeoPackageAPI.drawXYZTileInCanvas = function(geopackage, table, x, y, z, width, height, canvas) { - x = Number(x); - y = Number(y); - z = Number(z); - width = Number(width); - height = Number(height); - var tileDao = geopackage.getTileDao(table) - var retriever = new GeoPackageTileRetriever(tileDao, width, height); - return retriever.drawTileIn(x, y, z, canvas); -}; - -/** - * Draws a tile specified by the bounds in EPSG:4326 into the canvas - * @param {module:geoPackage~GeoPackage} geopackage open GeoPackage object - * @param {String} table name of the table containing the tiles - * @param {Number} minLat minimum latitude bounds of tile - * @param {Number} minLon minimum longitude bounds of tile - * @param {Number} maxLat maximum latitude bounds of tile - * @param {Number} maxLon maximum longitude bounds of tile - * @param {Number} z zoom level of the tile - * @param {Number} width width of the resulting tile - * @param {Number} height height of the resulting tile - * @param {Canvas} canvas canvas element to draw the tile into - */ -GeoPackageAPI.draw4326TileInCanvas = function(geopackage, table, minLat, minLon, maxLat, maxLon, z, width, height, canvas) { - z = Number(z); - width = Number(width); - height = Number(height); - var tileDao = geopackage.getTileDao(table); - var retriever = new GeoPackageTileRetriever(tileDao, width, height); - var bounds = new BoundingBox(minLon, maxLon, minLat, maxLat); - return retriever.drawTileWithWgs84BoundsInProjection(bounds, z, 'EPSG:4326', canvas); -} - - -/////////////////// -// JSDoc Globals // -/////////////////// - -/** - * @callback geopackageCallback - * @param {?Error} error - * @param {module:geoPackage~GeoPackage=} geopackage a GeoPackage instance - */ - - /** - * An integer database key referencing a {@link module:core/srs~SpatialReferenceSystem} row in a GeoPackage database - * @typedef {number} SRSRef - * @see https://www.geopackage.org/spec121/index.html#spatial_ref_sys - */ - -}).call(this,require('_process')) -},{"./boundingBox":7,"./dataColumns":13,"./db/dataTypes":14,"./db/geoPackageConnection":15,"./db/tableCreator":19,"./extension/index/featureTableIndex":26,"./extension/relatedTables/mediaTable":35,"./extension/relatedTables/relationType":36,"./extension/relatedTables/simpleAttributesTable":39,"./features/columns":64,"./features/user/featureColumn":65,"./geoPackage":70,"./geom/geometryData":73,"./tiles/features":87,"./tiles/retriever":92,"./tiles/tileBoundingBoxUtils":93,"./user/userColumn":105,"./validate/geoPackageValidate":110,"@mapbox/vector-tile":113,"_process":284,"fs":177,"geojson-vt":226,"path":276,"pbf":277,"reproject":315,"vt-pbf":345,"wkx":360}],3:[function(require,module,exports){ -/** - * @module attributes/attributeDao - */ - -var UserDao = require('../user/userDao') - , AttributeRow = require('./attributeRow'); - -var util = require('util'); - -/** - * Attribute DAO for reading attribute user data tables - * @class AttributeDao - * @extends {module:user/userDao~UserDao} - * @param {module:geoPackage~GeoPackage} geopackage geopackage object - * @param {module:attributes/attributeTable~AttributeTable} table attribute table - */ -var AttributeDao = function(geoPackage, table) { - UserDao.call(this, geoPackage, table); - if (!table.contents) { - throw new Error('Attributes table has null Contents'); - } - /** - * Contents of this AttributeDao - * @member {module:core/contents~Contents} - */ - this.contents = table.contents; -} - -util.inherits(AttributeDao, UserDao); - -/** - * Create a new attribute row with the column types and values - * @param {Array} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {moule:attributes/attributeRow~AttributeRow} attribute row - */ -AttributeDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new AttributeRow(this.table, columnTypes, values); -}; - -/** - * Create a new attribute row - * @return {module:attributes/attributeRow~AttributeRow} attribute row - */ -AttributeDao.prototype.newRow = function () { - return new AttributeRow(this.table); -}; - -module.exports = AttributeDao; - -},{"../user/userDao":106,"./attributeRow":4,"util":343}],4:[function(require,module,exports){ -/** - * AttributeRow module. - * @module attributes/attributeRow - */ - -var UserRow = require('../user/userRow'); -var util = require('util'); - -/** - * Attribute Row containing the values from a single result set row - * @class AttributeRow - * @extends module:user/userRow~UserRow - * @param {module:attributes/attributeTable~AttributeTable} attributeTable attribute table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - */ -var AttributeRow = function(attributeTable, columnTypes, values) { - UserRow.call(this, attributeTable, columnTypes, values); -} - -util.inherits(AttributeRow, UserRow); - -module.exports = AttributeRow; - -},{"../user/userRow":107,"util":343}],5:[function(require,module,exports){ -/** - * @module attributes/attributeTable - */ - -var UserTable = require('../user/userTable') - , ContentsDao = require('../core/contents').ContentsDao; - -var util = require('util'); - -/** - * Represents a user attribute table - * @class AttributeTable - * @extends {module:user/userTable~UserTable} - * @constructor - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns attribute columns - */ -var AttributeTable = function(tableName, columns) { - /** - * Contents of this AttributeTable - * @member {module:core/contents~Contents} - */ - this.contents; - - UserTable.call(this, tableName, columns); -} - -util.inherits(AttributeTable, UserTable); - -/** - * Set the contents - * @param {module:core/contents~Contents} contents the contents - */ -AttributeTable.prototype.setContents = function(contents) { - this.contents = contents; - if (contents.data_type !== ContentsDao.GPKG_CDT_ATTRIBUTES_NAME) { - throw new Error('The Contents of an Attributes Table must have a data type of ' + ContentsDao.GPKG_CDT_ATTRIBUTES_NAME); - } -} - -module.exports = AttributeTable; - -},{"../core/contents":8,"../user/userTable":108,"util":343}],6:[function(require,module,exports){ -/** - * attributeTableReader module. - * @module attributes/attributeTableReader - */ - -var UserTableReader = require('../user/userTableReader') - , AttributeTable = require('./attributeTable') - , DataTypes = require('../db/dataTypes'); - -var util = require('util'); - -/** -* Reads the metadata from an existing attribute table -* @class AttributeTableReader -* @extends {module:user/userTableReader~UserTableReader} -* @classdesc Reads the metadata from an existing attributes table -*/ -var AttributeTableReader = function(tableName) { - UserTableReader.call(this, tableName); -} - -util.inherits(AttributeTableReader, UserTableReader); - -/** - * @inheritdoc - */ -AttributeTableReader.prototype.createTable = function (tableName, columns) { - return new AttributeTable(tableName, columns); -}; - -module.exports = AttributeTableReader; - -},{"../db/dataTypes":14,"../user/userTableReader":109,"./attributeTable":5,"util":343}],7:[function(require,module,exports){ -var proj4 = require('proj4'); -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -/** - * Create a new bounding box - * @class BoundingBox - * @param {Number} minLongitudeOrBoundingBox minimum longitude or bounding box to copy (west) - * @param {Number} maxLongitude maximum longitude (east) - * @param {Number} minLatitude Minimum latitude (south) - * @param {Number} maxLatitude Maximum latitude (north) - * @return {BoundingBox} newly constructed bounding box - */ -var BoundingBox = function(minLongitudeOrBoundingBox, maxLongitude, minLatitude, maxLatitude) { - // if there is a second argument the first argument is the minLongitude - if (maxLongitude !== undefined) { - this.minLongitude = minLongitudeOrBoundingBox; - this.maxLongitude = maxLongitude; - this.minLatitude = minLatitude; - this.maxLatitude = maxLatitude; - } else { - var boundingBox = minLongitudeOrBoundingBox; - this.minLongitude = boundingBox.minLongitude; - this.maxLongitude = boundingBox.maxLongitude; - this.minLatitude = boundingBox.minLatitude; - this.maxLatitude = boundingBox.maxLatitude; - } -} - -module.exports = BoundingBox; - -/** - * Build a Geometry Envelope from the bounding box - * - * @return geometry envelope - */ -BoundingBox.prototype.buildEnvelope = function () { - return { - minY: this.minLatitude, - minX: this.minLongitude, - maxY: this.maxLatitude, - maxX: this.maxLongitude - }; -}; - -BoundingBox.prototype.toGeoJSON = function() { - return { - "type": "Feature", - "properties": {}, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [this.minLongitude,this.minLatitude], - [this.maxLongitude,this.minLatitude], - [this.maxLongitude,this.maxLatitude], - [this.minLongitude,this.maxLatitude], - [this.minLongitude,this.minLatitude] - ] - ] - } - }; -} - -/** - * Determine if equal to the provided bounding box - * @param {BoundingBox} boundingBox bounding boundingBox - * @return {Boolean} true if equal, false if not - */ -BoundingBox.prototype.equals = function (boundingBox) { - if (!boundingBox) { - return false; - } - - if (this === boundingBox) { - return true; - } - - return this.maxLatitude === boundingBox.maxLatitude - && this.minLatitude === boundingBox.minLatitude - && this.maxLongitude === boundingBox.maxLongitude - && this.maxLatitude === boundingBox.maxLatitude; -}; - -BoundingBox.prototype.projectBoundingBox = function (from, to) { - if (from && from !== 'undefined' && to && to !== 'undefined') { - var toProj = to.toUpperCase ? proj4(to) : to; - var fromProj = from.toUpperCase ? proj4(from) : from; - if (to.toUpperCase && to.toUpperCase() === 'EPSG:3857' && from.toUpperCase && from.toUpperCase() === 'EPSG:4326') { - this.maxLatitude = this.maxLatitude > 85.0511 ? 85.0511 : this.maxLatitude; - this.minLatitude = this.minLatitude < -85.0511 ? -85.0511 : this.minLatitude; - this.minLongitude = this.minLongitude < -180.0 ? -180.0 : this.minLongitude; - this.maxLongitude = this.maxLongitude > 180.0 ? 180.0 : this.maxLongitude; - } - var min = proj4(from, to, [this.minLongitude, this.minLatitude]); - var max = proj4(from, to, [this.maxLongitude, this.maxLatitude]); - var projected = new BoundingBox(min[0], max[0], min[1], max[1]); - return projected; - } else { - return this; - } -}; - - - -// /** -// * Get a Map Rectangle representing the bounding box -// * -// * @return map rectangle -// */ -// -(MKMapRect) getMapRect; -// -// /** -// * Get a Coordinate Region of the bounding box -// * -// * @return Coordinate Region -// */ -// -(MKCoordinateRegion) getCoordinateRegion; -// -// /** -// * Get the Span of the bounding box -// * -// * @return Span -// */ -// -(MKCoordinateSpan) getSpan; -// -// /** -// * Get the center of the bounding box -// * -// * @return center location -// */ -// -(CLLocationCoordinate2D) getCenter; -// -// /** -// * Get with width and height of the bounding box in meters -// * -// * @return bounding box size -// */ -// -(struct GPKGBoundingBoxSize) sizeInMeters; - -},{"proj4":285}],8:[function(require,module,exports){ -/** - * Contents module. - * @module core/contents - */ - -var Dao = require('../../dao/dao') - , GeometryColumnsDao = require('../../features/columns').GeometryColumnsDao - , SpatialReferenceSystemDao = require('../srs').SpatialReferenceSystemDao - , TileMatrixDao = require('../../tiles/matrix').TileMatrixDao - , TileMatrixSetDao = require('../../tiles/matrixset').TileMatrixSetDao - , ColumnValues = require('../../dao/columnValues'); - -var util = require('util'); - -/** - * The Contents class models rows in the [`gpkg_contents`](https://www.geopackage.org/spec121/index.html#_contents) - * table. The contents table stores identifying and descriptive information - * that an application can display to a user in a menu of geospatial data - * available in a GeoPackage. - * @class Contents - * @see https://www.geopackage.org/spec121/index.html#_contents - */ -var Contents = function() { - /** - * the name of the tiles, or feature table - * @member {string} - */ - this.table_name; - - /** - * Type of data stored in the table:. “features†per clause Features, - * “tiles†per clause Tiles, or an implementer-defined value for other data - * tables per clause in an Extended GeoPackage. - * @member {string} - */ - this.data_type; - - /** - * A human-readable identifier (e.g. short name) for the table_name content - * @member {string} - */ - this.identifier; - - /** - * A human-readable description for the table_name content - * @member {string} - */ - this.description; - - /** - * timestamp value in ISO 8601 format as defined by the strftime function - * %Y-%m-%dT%H:%M:%fZ format string applied to the current time - * @member {Date} - */ - this.last_change; - - /** - * Bounding box minimum easting or longitude for all content in table_name - * @member {Number} - */ - this.min_x; - - /** - * Bounding box minimum northing or latitude for all content in table_name - * @member {Number} - */ - this.min_y; - - /** - * Bounding box maximum easting or longitude for all content in table_name - * @member {Number} - */ - this.max_x; - - /** - * Bounding box maximum northing or latitude for all content in table_name - * @member {Number} - */ - this.max_y; - - /** - * Unique identifier for each Spatial Reference System within a GeoPackage - * @member {SRSRef} - */ - this.srs_id; -} - -/** - * Contents object. Provides identifying and descriptive information that an - * application can display to a user in a menu of geospatial data that is - * available for access and/or update. - * @class ContentsDao - * @extends {module:dao/dao~Dao} - */ -var ContentsDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(ContentsDao, Dao); - -/** - * Creates a new Contents object - * @return {module:core/contents~Contents} new Contents object - */ -ContentsDao.prototype.createObject = function () { - return new Contents(); -}; - -/** - * Get table names by table type - * @param {string} [tableType] table type to query for - * @return {string[]} Array of table names - */ -ContentsDao.prototype.getTables = function(tableType) { - var results; - if (tableType) { - var fieldValues = new ColumnValues(); - fieldValues.addColumn(ContentsDao.COLUMN_DATA_TYPE, tableType); - results = this.queryForColumns('table_name', fieldValues); - } else { - results = this.queryForColumns('table_name'); - } - var tableNames = []; - for (var i = 0; i < results.length; i++) { - tableNames.push(results[i].table_name); - } - return tableNames; -} - -/** - * Returns the proj4 projection for the Contents - * @param {module:core/contents~Contents} contents Contents to get the projection from - * @return {proj4} proj4 projection - */ -ContentsDao.prototype.getProjection = function (contents) { - var srs = this.getSrs(contents); - var srsDao = this.geoPackage.getSpatialReferenceSystemDao(); - return srsDao.getProjection(srs); -}; - -/** - * Get the SpatialReferenceSystemDao for the Contents - * @param {module:core/contents~Contents} contents Contents to get the SpatialReferenceSystemDao from - * @return {module:core/srs~SpatialReferenceSystemDao} - */ -ContentsDao.prototype.getSrs = function (contents) { - var dao = this.geoPackage.getSpatialReferenceSystemDao(); - return dao.queryForId(contents.srs_id); -}; - -/** - * Get the GeometryColumns for the Contents - * @param {module:core/contents~Contents} contents Contents - * @return {module:features/columns~GeometryColumns} - */ -ContentsDao.prototype.getGeometryColumns = function (contents) { - var dao = this.geoPackage.getGeometryColumnsDao(); - // TODO what is causing this to need to be here and not up in the require section - var GeometryColumnsDao = require('../../features/columns').GeometryColumnsDao; - var results = dao.queryForAllEq(GeometryColumnsDao.COLUMN_TABLE_NAME, contents.table_name); - if (!results || !results.length) return; - var gc = dao.createObject(); - dao.populateObjectFromResult(gc, results[0]); - return gc; -}; - -/** - * Get the TileMatrixSet for the Contents - * @param {module:core/contents~Contents} contents Contents - * @return {module:tiles/matrixset~TileMatrixSet} - */ -ContentsDao.prototype.getTileMatrixSet = function (contents) { - var dao = this.geoPackage.getTileMatrixSetDao(); - var results = dao.queryForAllEq(TileMatrixSetDao.COLUMN_TABLE_NAME, contents.table_name); - if (!results || !results.length) return; - var gc = dao.createObject(); - dao.populateObjectFromResult(gc, results[0]); - return gc; -}; - -/** - * Get the TileMatrix for the Contents - * @param {module:core/contents~Contents} contents Contents - * @return {module:tiles/matrix~TileMatrix} - */ -ContentsDao.prototype.getTileMatrix = function (contents) { - var dao = this.geoPackage.getTileMatrixDao(); - var results = dao.queryForAllEq(TileMatrixDao.COLUMN_TABLE_NAME, contents.table_name); - if (!results || !results.length) return; - var tileMatricies = []; - for (var i = 0; i < results.length; i++) { - var gc = dao.createObject(); - dao.populateObjectFromResult(gc, results[i]); - tileMatricies.push(gc); - } - return tileMatricies; -}; - -ContentsDao.TABLE_NAME = "gpkg_contents"; -ContentsDao.COLUMN_PK = "table_name"; -ContentsDao.COLUMN_TABLE_NAME = "table_name"; -ContentsDao.COLUMN_DATA_TYPE = "data_type"; -ContentsDao.COLUMN_IDENTIFIER = "identifier"; -ContentsDao.COLUMN_DESCRIPTION = "description"; -ContentsDao.COLUMN_LAST_CHANGE = "last_change"; -ContentsDao.COLUMN_MIN_X = "min_x"; -ContentsDao.COLUMN_MIN_Y = "min_y"; -ContentsDao.COLUMN_MAX_X = "max_x"; -ContentsDao.COLUMN_MAX_Y = "max_y"; -ContentsDao.COLUMN_SRS_ID = "srs_id"; - -ContentsDao.GPKG_CDT_FEATURES_NAME = "features"; -ContentsDao.GPKG_CDT_TILES_NAME = "tiles"; -ContentsDao.GPKG_CDT_ATTRIBUTES_NAME = "attributes"; - -ContentsDao.prototype.gpkgTableName = ContentsDao.TABLE_NAME; -ContentsDao.prototype.idColumns = [ContentsDao.COLUMN_PK]; - -module.exports.ContentsDao = ContentsDao; -Contents.TABLE_NAME = ContentsDao.TABLE_NAME; -module.exports.Contents = Contents; - -},{"../../dao/columnValues":10,"../../dao/dao":11,"../../features/columns":64,"../../tiles/matrix":90,"../../tiles/matrixset":91,"../srs":9,"util":343}],9:[function(require,module,exports){ -/** - * SpatialReferenceSystem module. - * @module core/srs - */ - -var Dao = require('../../dao/dao'); - -var util = require('util') - , proj4 = require('proj4'); -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -/** - * Spatial Reference System object. The coordinate reference system definitions it contains are referenced by the GeoPackage Contents and GeometryColumns objects to relate the vector and tile data in user tables to locations on the earth. - * @class SpatialReferenceSystem - */ -var SpatialReferenceSystem = function() { - /** - * Human readable name of this SRS - * @member {string} - */ - this.srs_name; - /** - * Unique identifier for each Spatial Reference System within a GeoPackage - * @member {Number} - */ - this.srs_id; - - /** - * Case-insensitive name of the defining organization e.g. EPSG or epsg - * @member {string} - */ - this.organization; - - /** - * Numeric ID of the Spatial Reference System assigned by the organization - * @member {Number} - */ - this.organization_coordsys_id; - - /** - * Well-known Text [32] Representation of the Spatial Reference System - * @member {string} - */ - this.definition; - - /** - * Human readable description of this SRS - * @member {string} - */ - this.description; - - /** - * Well-known Text Representation of the Spatial Reference System - * @member {string} - */ - this.definition_12_063; -}; - -/** - * Return the proj4 projection specified by this SpatialReferenceSystem - * @return {proj4} - */ -SpatialReferenceSystem.prototype.getProjection = function() { - if(this.organization === 'NONE') return {}; - if(this.organization_coordsys_id === 4326 && (this.organization === 'EPSG' || this.organization === 'epsg')) { - return proj4('EPSG:4326'); - } else if (this.definition_12_063 && this.definition_12_063 !== '' && this.definition_12_063 !== 'undefined') { - return proj4(this.definition_12_063); - } else if (this.definition && this.definition !== '' && this.definition !== 'undefined') { - return proj4(this.definition); - } else if (this.organization && this.organization_coordsys_id) { - return proj4(this.organization.toUpperCase() + ':' + this.organization_coordsys_id); - } else { - return {}; - } -} - -/** - * Spatial Reference System Data Access Object - * @class SpatialReferenceSystemDao - * @extends {module:dao/dao~Dao} - * @param {module:geoPackage~GeoPackage} geoPackage The GeoPackage object - */ -var SpatialReferenceSystemDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(SpatialReferenceSystemDao, Dao); - -/** - * Create a new SpatialReferenceSystem object - * @return {module:core/srs~SpatialReferenceSystem} - */ -SpatialReferenceSystemDao.prototype.createObject = function () { - return new SpatialReferenceSystem(); -}; - -/** - * Get the Spatial Reference System for the provided id - * @param {Number} srsId srs id - * @return {module:core/srs~SpatialReferenceSystem} - */ -SpatialReferenceSystemDao.prototype.getBySrsId = function(srsId) { - return this.queryForId(srsId); -}; - -/** - * Return the proj4 projection specified by this SpatialReferenceSystem - * @return {proj4} - */ -SpatialReferenceSystemDao.prototype.getProjection = function (srs) { - return srs.getProjection(); -}; - -/** - * Creates the required EPSG WGS84 Spatial Reference System (spec - * Requirement 11) - * @return {Number} id of the created row - */ -SpatialReferenceSystemDao.prototype.createWgs84 = function() { - var srs = this.getBySrsId(4326); - if (srs) { - return srs; - } - var srs = new SpatialReferenceSystem(); - srs.srs_name = 'WGS 84 geodetic'; - srs.srs_id = 4326; - srs.organization = 'EPSG'; - srs.organization_coordsys_id = 4326; - srs.definition = 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]'; - srs.description = 'longitude/latitude coordinates in decimal degrees on the WGS 84 spheroid'; - if (this.connection.columnAndTableExists('gpkg_spatial_ref_sys', 'definition_12_063')) { - srs.definition_12_063 = 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]'; - } - return this.create(srs); -} - -/** - * Creates the required Undefined Cartesian Spatial Reference System (spec - * Requirement 11) - * @return {Number} id of the created row - */ -SpatialReferenceSystemDao.prototype.createUndefinedCartesian = function() { - var srs = this.getBySrsId(-1); - if (srs) { - return srs; - } - var srs = new SpatialReferenceSystem(); - srs.srs_name = 'Undefined cartesian SRS'; - srs.srs_id = -1; - srs.organization = 'NONE'; - srs.organization_coordsys_id = -1; - srs.definition = 'undefined'; - srs.description = 'undefined cartesian coordinate reference system'; - if (this.connection.columnAndTableExists('gpkg_spatial_ref_sys', 'definition_12_063')) { - srs.definition_12_063 = 'undefined'; - } - return this.create(srs); -} - -/** - * Creates the required Undefined Geographic Spatial Reference System (spec - * Requirement 11) - * @return {Number} id of the created row - */ -SpatialReferenceSystemDao.prototype.createUndefinedGeographic = function() { - var srs = this.getBySrsId(0); - if (srs) { - return srs; - } - var srs = new SpatialReferenceSystem(); - srs.srs_name = 'Undefined geographic SRS'; - srs.srs_id = 0; - srs.organization = 'NONE'; - srs.organization_coordsys_id = 0; - srs.definition = 'undefined'; - srs.description = 'undefined geographic coordinate reference system'; - if (this.connection.columnAndTableExists('gpkg_spatial_ref_sys', 'definition_12_063')) { - srs.definition_12_063 = 'undefined'; - } - return this.create(srs); -} - -/** - * Creates the Web Mercator Spatial Reference System if it does not already - * exist - * @return {Number} id of the created row - */ -SpatialReferenceSystemDao.prototype.createWebMercator = function() { - var srs = this.getBySrsId(3857); - if (srs) { - return srs; - } - var srs = new SpatialReferenceSystem(); - srs.srs_name = 'WGS 84 / Pseudo-Mercator'; - srs.srs_id = 3857; - srs.organization = 'EPSG'; - srs.organization_coordsys_id = 3857; - srs.definition = 'PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]'; - srs.description = 'Spherical Mercator projection coordinate system'; - if(this.connection.columnAndTableExists('gpkg_spatial_ref_sys', 'definition_12_063')) { - srs.definition_12_063 = 'PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"]]'; - } - return this.create(srs); -} - -/** - * Spatial Reference System Table Name - * @type {String} - */ -SpatialReferenceSystemDao.TABLE_NAME = 'gpkg_spatial_ref_sys'; - -/** - * Table Name - * @type {String} - */ -SpatialReferenceSystemDao.prototype.gpkgTableName = SpatialReferenceSystemDao.TABLE_NAME; - -/** - * srsName field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_SRS_NAME = "srs_name"; - -/** - * srsId field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_SRS_ID = "srs_id"; - -/** - * id field name, srsId - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_ID = SpatialReferenceSystemDao.COLUMN_SRS_ID; - -/** - * organization field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_ORGANIZATION = "organization"; - -/** - * organizationCoordsysId field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_ORGANIZATION_COORDSYS_ID = "organization_coordsys_id"; - -/** - * definition field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_DEFINITION = "definition"; - -/** - * description field name - * @type {String} - */ -SpatialReferenceSystemDao.COLUMN_DESCRIPTION = "description"; - - -SpatialReferenceSystemDao.prototype.idColumns = [SpatialReferenceSystemDao.COLUMN_SRS_ID]; - -module.exports.SpatialReferenceSystemDao = SpatialReferenceSystemDao; -SpatialReferenceSystem.TABLE_NAME = SpatialReferenceSystemDao.TABLE_NAME; -module.exports.SpatialReferenceSystem = SpatialReferenceSystem; - -},{"../../dao/dao":11,"proj4":285,"util":343}],10:[function(require,module,exports){ -/** - * @module dao/columnValues - */ - -/** - * Structure to define columns in a table - * @class ColumnValues - */ -var ColumnValues = function() { - this.values = {}; - this.columns = []; -} - -module.exports = ColumnValues; - -/** - * adds a column to the structure - * @param {string} columnName name of column to add - * @param {module:user/userColumn~UserColumn} column column to add - */ -ColumnValues.prototype.addColumn = function (columnName, column) { - this.columns.push(columnName); - this.values[columnName] = column; -}; - -/** - * Gets the column by name - * @param {string} columnName name of column - * @return {module:user/userColumn~UserColumn} user column - */ -ColumnValues.prototype.getValue = function (columnName) { - return this.values[columnName]; -}; - -},{}],11:[function(require,module,exports){ -/** - * Dao module. - * @module dao/dao - */ - -var sqliteQueryBuilder = require('../db/sqliteQueryBuilder') - , ColumnValues = require('./columnValues'); - -/** - * Base DAO - * @class Dao - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - */ -var Dao = function(geoPackage) { - /** - * GeoPackage object this dao belongs to - * @type {module:geoPackage~GeoPackage} - */ - this.geoPackage = geoPackage; - /** - * Database connection to the sqlite file - * @type {module:db/geoPackageConnection~GeoPackageConnection} - */ - this.connection = geoPackage.getDatabase(); -} - -/** - * Copies object properties from result object to the object - * @param {Object} object object to copy properties to - * @param {Object} result object to copy properties from - */ -Dao.prototype.populateObjectFromResult = function (object, result) { - if (!result) return; - for (var key in result) { - object[key] = result[key]; - } -}; - -/** - * Checks if the table exists - * @return {Boolean} - */ -Dao.prototype.isTableExists = function () { - var results = this.connection.isTableExists(this.gpkgTableName); - return !!results; -}; - -/** - * Refreshes the object by id - * @param {Object} object object to refresh - * @return {Object} - */ -Dao.prototype.refresh = function(object) { - return this.queryForSameId(object); -} - -/** - * Query for object by id - * @param {object} id ID of the object to query for - * @return {Object} object created from the raw database object - */ -Dao.prototype.queryForId = function(id) { - var whereString = this.buildPkWhere(id); - var whereArgs = this.buildPkWhereArgs(id); - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, whereString); - var result = this.connection.get(query, whereArgs); - if (!result) return; - var object = this.createObject(result); - // TOOD something is wrong here - this.populateObjectFromResult(object, result); - return object; -}; - -Dao.prototype.queryForSameId = function (object) { - var idArray = this.getMultiId(object); - return this.queryForMultiId(idArray); -}; - -Dao.prototype.getMultiId = function (object) { - var idValues = []; - for (var i = 0; i < this.idColumns.length; i++) { - var idValue = object.values ? object.values[this.idColumns[i]] : object[this.idColumns[i]]; - if (idValue !== undefined) { - idValues.push(idValue); - } - } - return idValues; -}; - -/** - * Query for object by multi id - * @param {module:dao/columnValues~ColumnValues} idValues ColumnValues with the multi id - * @return {Object} object created from the raw database object - */ -Dao.prototype.queryForMultiId = function (idValues) { - var whereString = this.buildPkWhere(idValues); - var whereArgs = this.buildPkWhereArgs(idValues); - - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, whereString); - - var result = this.connection.get(query, whereArgs); - if (!result) return; - var object = this.createObject(result); - this.populateObjectFromResult(object, result); - return object; -}; - -/** - * Queries for all matches and returns them in the callback. Be aware this pulls all results into memory - * @param {string} [where] Optional where clause - * @param {object[]} [whereArgs] Optional where args array - * @return {Object[]} raw object array from the database - */ -Dao.prototype.queryForAll = function (where, whereArgs) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, where); - return this.connection.all(query, whereArgs); -}; - -/** - * Queries for all matches and returns them in the callback. Be aware this pulls all results into memory - * @param {string} fieldName name of the field to query for - * @param {string} value value of the like clause - * @return {Object[]} raw object array from the database - */ -Dao.prototype.queryForLike = function(fieldName, value) { - var values = new ColumnValues(); - values.addColumn(fieldName, value); - var where = this.buildWhereLike(values); - var whereArgs = this.buildWhereArgs(value); - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, where); - return this.connection.all(query, whereArgs); -} - -/** - * Queries for all matches and returns them. Only queries for the specified column name Be aware this pulls all results into memory - * @param {string} columnName name of the column to query for - * @param {module:dao/columnValues~ColumnValues} [fieldValues] optional values to filter on - * @return {Object[]} raw object array from the database - */ -Dao.prototype.queryForColumns = function (columnName, fieldValues) { - var where; - var whereArgs; - if (fieldValues) { - where = this.buildWhere(fieldValues); - whereArgs = this.buildWhereArgs(fieldValues); - } - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", [columnName], where); - return this.connection.all(query, whereArgs); -}; - -/** - * Queries for all items in the table with a page size and page number - * @param {Number} pageSize size of the chunk to query for - * @param {Number} page chunk number to query for - * @return {Object[]} raw object array from the database - */ -Dao.prototype.queryForChunk = function(pageSize, page) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, undefined, undefined, undefined, undefined, this.idColumns[0], pageSize, page * pageSize); - return this.connection.all(query); -}; - -/** - * Iterate all items in the table one at a time. If no parameters are passed, iterates the entire table. Returns an Iterable object - * @param {string} [field] field to filter on - * @param {Object} [value] value to filter on - * @param {string} [groupBy] group by clause - * @param {string} [having] having clause - * @param {string} [orderBy] order by clause - * @return {Iterable} iterable of database objects - */ -Dao.prototype.queryForEach = function (field, value, groupBy, having, orderBy) { - if (!field) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'"); - var count = 0; - return this.connection.each(query); - } else { - var whereString = this.buildWhereWithFieldAndValue(field, value); - var whereArgs = this.buildWhereArgs(value); - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, whereString); - return this.connection.each(query, whereArgs); - } -}; - -/** - * Iterate all objects in thet able that match the ColumnValues passed in - * @param {module:dao/columnValues~ColumnValues} fieldValues ColumnValues to query for - * @return {Iterable.Object} - */ -Dao.prototype.queryForFieldValues = function (fieldValues) { - var whereString = this.buildWhere(fieldValues); - var whereArgs = this.buildWhereArgs(fieldValues); - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, whereString); - var count = 0; - return this.connection.each(query, whereArgs); -}; - -/** - * Iterate all matching objects - * @param {string} join join clause - * @param {string} where where clause - * @param {Object[]} whereArgs array of where query values - * @param {string[]} columns columns to query for - * @return {Iterable.} - */ -Dao.prototype.queryJoinWhereWithArgs = function(join, where, whereArgs, columns) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", columns, where, join); - var count = 0; - return this.connection.each(query, whereArgs); -} - -/** - * Count all matching objects - * @param {string} join join clause - * @param {string} where where clause - * @param {Object[]} whereArgs array of where query values - * @param {string[]} columns columns to query for - * @return {Number} - */ -Dao.prototype.countJoinWhereWithArgs = function(join, where, whereArgs, columns) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", columns, where, join); - return this.connection.all(query, whereArgs).length; -} - -/** - * Iterate all distinct matching rows in the table - * @param {string} where where clause - * @param {Object[]} whereArgs array of where query values - * @return {Iterable.} - */ -Dao.prototype.queryWhereWithArgsDistinct = function(where, whereArgs) { - var query = sqliteQueryBuilder.buildQuery(true, "'"+this.gpkgTableName+"'", undefined, where); - var count = 0; - return this.connection.each(query, whereArgs); -} - -/** - * Iterate all matching rows - * @param {string} [where] where clause - * @param {Object[]} [whereArgs] array of where query values - * @param {string} [groupBy] group by clause - * @param {string} [having] having clause - * @param {string} [orderBy] order by clause - * @param {string} [limit] limit clause - * @return {Iterable.} - */ -Dao.prototype.queryWhere = function (where, whereArgs, groupBy, having, orderBy, limit) { - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, where, undefined, groupBy, having, orderBy, limit); - return this.connection.each(query, whereArgs); -}; - -/** - * Get the primary key where clause - * @param {Object|Object[]} idValue id - * @return {string} primary key where clause - */ -Dao.prototype.buildPkWhere = function(idValue) { - if (Array.isArray(idValue)) { - var idValuesArray = idValue; - var idColumnValues = new ColumnValues(); - for (var i = 0; i < idValuesArray.length; i++) { - idColumnValues.addColumn(this.idColumns[i], idValuesArray[i]); - } - return this.buildWhere(idColumnValues); - } - return this.buildWhereWithFieldAndValue(this.idColumns, idValue); -}; - -/** - * Get the primary key where args - * @param {Object} idValue id - * @return {Object[]} where args - */ -Dao.prototype.buildPkWhereArgs = function (idValue) { - if (Array.isArray(idValue)) { - var idValuesArray = idValue; - var values = []; - for (var i = 0; i < idValuesArray.length; i++) { - values = values.concat(this.buildWhereArgs(idValuesArray[i])); - } - return values; - } - return this.buildWhereArgs(idValue); -}; - -/** - * Build where (or selection) LIKE statement for fields - * @param {module:dao/columnValues~ColumnValues} fields columns and values - * @param {string} operation AND or OR - * @return {string} where clause - */ -Dao.prototype.buildWhereLike = function(fields, operation) { - var whereString = ''; - for (var i = 0; i < fields.columns.length; i++) { - var column = fields.columns[i]; - if (i) { - whereString += ' ' + operation + ' '; - } - whereString += this.buildWhereWithFieldAndValue(column, fields.getValue(column), 'like'); - } - return whereString; -} - -/** - * Build where or selection statement for fields - * @param {module:dao/columnValues~ColumnValues} fields columns and values - * @param {string} [operation=AND] AND or OR - * @return {string} where clause - */ -Dao.prototype.buildWhere = function (fields, operation) { - operation = operation || 'and'; - var whereString = ''; - - for (var i = 0; i < fields.columns.length; i++) { - var column = fields.columns[i]; - if (i) { - whereString += ' ' + operation + ' '; - } - whereString += this.buildWhereWithFieldAndValue(column, fields.getValue(column)); - } - return whereString; -}; - -Dao.prototype.buildWhereArgs = function (values) { - var args = []; - if (Array.isArray(values)) { - for (var i = 0; i < values.length; i++) { - var value = values[i]; - if (value !== undefined && value !== null) { - args.push(value); - } - } - } else if (values.columns) { - for (var i = 0; i < values.columns.length; i++) { - var column = values.columns[i]; - var value = values.getValue(column); - if (value !== undefined && value !== null) { - args.push(value); - } - } - } else { - if(values !== undefined || values !== null) { - args.push(values); - } - } - return args.count ? null : args; -}; - -/** - * Builds a where clause from the field and value with an optional operation. If the value is empty, 'is null' is added to the query for the field - * @param {string} field field name - * @param {Object} [value] optional value to filter on - * @param {string} [operation='='] optional operation - * @return {string} where clause - */ -Dao.prototype.buildWhereWithFieldAndValue = function (field, value, operation) { - operation = operation || '='; - var whereString = '' + field + ' '; - if(value === undefined || value === null){ - whereString += "is null"; - } else { - whereString += operation + ' ?'; - } - return whereString; -}; - -/** - * Query for all rows in the table that match - * @param {string} field field to match - * @param {string} value value to match - * @param {string} [groupBy] group by clause - * @param {string} [having] having clause - * @param {string} [orderBy] order by clause - * @return {Object[]} array of raw database objects - */ -Dao.prototype.queryForAllEq = function(field, value, groupBy, having, orderBy) { - var whereString = this.buildWhereWithFieldAndValue(field, value); - var whereArgs = this.buildWhereArgs(value); - var query = sqliteQueryBuilder.buildQuery(false, "'"+this.gpkgTableName+"'", undefined, whereString, undefined, groupBy, having, orderBy); - return this.connection.all(query, whereArgs); -}; - -/** - * Count rows in the table optionally filtered by the parameters specified - * @param {module:dao/columnValues~ColumnValues|string} [fields] Either a ColumnValues object or a string specifying a field name - * @param {Object} [value] value to filter on if fields is a string - * @return {Number} count of objects - */ -Dao.prototype.count = function(fields, value) { - if (!fields) { - return this.connection.count(this.gpkgTableName); - } - var where; - var whereArgs; - var query; - if (fields.columns) { - where = this.buildWhere(fields, 'and'); - whereArgs = this.buildWhereArgs(fields); - query = sqliteQueryBuilder.buildCount("'"+this.gpkgTableName+"'", where); - } else { - whereString = this.buildWhereWithFieldAndValue(fields, value); - whereArgs = this.buildWhereArgs(value); - query = sqliteQueryBuilder.buildCount("'"+this.gpkgTableName+"'", whereString); - } - var result = this.connection.get(query, whereArgs); - if (!result) return 0; - return result.count; -} - -/** - * Get the min of the column - * @param {string} column column name - * @param {string} [where] where clause - * @param {Object[]} [whereArgs] where args - * @return {Number} - */ -Dao.prototype.minOfColumn = function (column, where, whereArgs) { - return this.connection.minOfColumn("'"+this.gpkgTableName+"'", column, where, whereArgs); -}; - -/** - * Get the max of the column - * @param {string} column column name - * @param {string} [where] where clause - * @param {Object[]} [whereArgs] where args - * @return {Number} - */ -Dao.prototype.maxOfColumn = function (column, where, whereArgs) { - return this.connection.maxOfColumn("'"+this.gpkgTableName+"'", column, where, whereArgs); -}; - -/** - * Delete the object passed in. Object is deleted by id - * @param {Object} object object to delete - * @return {Number} number of objects deleted - */ -Dao.prototype.delete = function(object) { - if (object.getId) { - return this.deleteById(object.getId()); - } - return this.deleteByMultiId(this.getMultiId(object)); -}; - -/** - * Delete the object specified by the id - * @param {Object} idValue id value - * @return {Number} number of objects deleted - */ -Dao.prototype.deleteById = function(idValue) { - var where = this.buildPkWhere(idValue); - var whereArgs = this.buildPkWhereArgs(idValue); - - return this.connection.delete("'"+this.gpkgTableName+"'", where, whereArgs); -}; - -/** - * Delete the object specified by the ids - * @param {module:dao/columnValues~ColumnValues} idValue id values - * @return {Number} number of objects deleted - */ -Dao.prototype.deleteByMultiId = function(idValues) { - var where = this.buildPkWhere(idValues); - var whereArgs = this.buildPkWhereArgs(idValues); - - return this.connection.delete("'"+this.gpkgTableName+"'", where, whereArgs); -}; - -/** - * Delete objects that match the query - * @param {string} where where clause - * @param {Object[]} whereArgs where arguments - * @return {Number} number of objects deleted - */ -Dao.prototype.deleteWhere = function(where, whereArgs) { - return this.connection.delete("'"+this.gpkgTableName+"'", where, whereArgs); -}; - -/** - * Delete all objects in the table - * @return {Number} number of objects deleted - */ -Dao.prototype.deleteAll = function() { - return this.connection.delete("'"+this.gpkgTableName+"'", '', []); -}; - -/** - * Insert the object into the table - * @param {Object} object object to be inserted - * @return {Number} id of the inserted object - */ -Dao.prototype.create = function(object) { - var sql = sqliteQueryBuilder.buildInsert("'"+this.gpkgTableName+"'", object); - var insertObject = sqliteQueryBuilder.buildUpdateOrInsertObject(object); - return this.connection.insert(sql, insertObject); -}; - -/** - * Update all rows that match the query - * @param {module:dao/columnValues~ColumnValues} values values to insert - * @param {string} where where clause - * @param {Object[]} whereArgs where arguments - * @return {Number} number of objects updated - */ -Dao.prototype.updateWithValues = function (values, where, whereArgs) { - var update = sqliteQueryBuilder.buildUpdate("'"+this.gpkgTableName+"'", values, where, whereArgs); - return this.connection.run(update.sql, update.args); -}; - -/** - * Update the object specified - * @param {Object} object object with updated values - * @return {Number} number of objects updated - */ -Dao.prototype.update = function(object) { - var updateValues = sqliteQueryBuilder.buildUpdateOrInsertObject(object); - var update = sqliteQueryBuilder.buildObjectUpdate("'"+this.gpkgTableName+"'", object); - var multiId = this.getMultiId(object); - if (multiId.length) { - var where = ' where '; - for (var i = 0; i < multiId.length; i++) { - where += '"' + this.idColumns[i] + '" = $' + sqliteQueryBuilder.fixColumnName(this.idColumns[i]); - updateValues[sqliteQueryBuilder.fixColumnName(this.idColumns[i])] = multiId[i]; - } - update += where; - } - return this.connection.run(update, updateValues); -}; - -/** - * Queries for the object by id, and if it exists, updates it, otherwise creates a new object - * @param {Object} object object to update or create - * @return {Number} number of objects modified - */ -Dao.prototype.createOrUpdate = function(object) { - var existing = this.queryForSameId(object); - if (!existing) { - return this.create(object); - } else { - return this.update(object); - } -}; - -/** - * Drops this table - * @return {Number} results of the drop - */ -Dao.prototype.dropTable = function() { - return this.connection.dropTable(this.gpkgTableName); -}; - -Dao.prototype.rename = function(newName) { - var result = this.connection.run('ALTER TABLE ' + '"' + this.gpkgTableName + '" RENAME TO "' + newName + '"'); - this.gpkgTableName = newName; -} - -module.exports = Dao; - -},{"../db/sqliteQueryBuilder":17,"./columnValues":10}],12:[function(require,module,exports){ -/** - * DataColumnConstraints module. - * @module dataColumnConstraints - */ - -var Dao = require('../dao/dao'); - -var util = require('util'); - -/** - * Contains data to specify restrictions on basic data type column values - * @class DataColumnConstraints - */ -var DataColumnConstraints = function() { - - /** - * Case sensitive name of constraint - * @member {string} - */ - this.constraint_name; - - /** - * Lowercase type name of constraint: range | enum | glob - * @member {string} - */ - this.constraint_type; - - /** - * Specified case sensitive value for enum or glob or NULL for range constraint_type - * @member {string} - */ - this.value; - - /** - * Minimum value for 'range' or NULL for 'enum' or 'glob' constraint_type - * @member {Number} - */ - this.min; - - /** - * 0 (false) if min value is exclusive, or 1 (true) if min value is inclusive - * @member {Number} - */ - this.min_is_inclusive; - - /** - * Maximum value for 'range' or NULL for 'enum' or 'glob' constraint_type - * @member {Number} - */ - this.max; - - /** - * 0 (false) if max value is exclusive, or 1 (true) if max value is inclusive - * @member {Number} - */ - this.max_is_inclusive; - - /** - * For ranges and globs, describes the constraing; for enums, describes the enum value. - */ - this.description; - -} - -/** - * Data Column Constraints Data Access Object - * @class - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @extends {module:dao/dao~Dao} - */ -var DataColumnConstraintsDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(DataColumnConstraintsDao, Dao); - -/** - * Creates a new DataColumnConstraints object - * @return {module:dataColumnConstraints~DataColumnConstraints} - */ -DataColumnConstraintsDao.prototype.createObject = function () { - return new DataColumnConstraints(); -}; - -/** - * query by constraint name - * @param {String} constraintName constraint name - * @return {Iterable} - */ -DataColumnConstraintsDao.prototype.queryByConstraintName = function (constraintName) { - return this.queryForEach(DataColumnConstraintsDao.COLUMN_CONSTRAINT_NAME, constraintName); -}; - -/** - * Query by the unique column values - * @param {String} constraintName constraint name - * @param {String} constraintType constraint type - * @param {String} value value - * @return {module:dataColumnConstraints~DataColumnConstraints} - */ -DataColumnConstraintsDao.prototype.queryUnique = function (constraintName, constraintType, value) { - var dataColumnConstraints = new DataColumnConstraints(); - dataColumnConstraints.constraint_name = constraintName; - dataColumnConstraints.constraint_type = constraintType; - dataColumnConstraints.value = value; - - return this.queryForSameId(dataColumnConstraints); -}; - -DataColumnConstraintsDao.TABLE_NAME = "gpkg_data_column_constraints"; -DataColumnConstraintsDao.COLUMN_CONSTRAINT_NAME = "constraint_name"; -DataColumnConstraintsDao.COLUMN_CONSTRAINT_TYPE = "constraint_type"; -DataColumnConstraintsDao.COLUMN_VALUE = "value"; -DataColumnConstraintsDao.COLUMN_MIN = "min"; -DataColumnConstraintsDao.COLUMN_MIN_IS_INCLUSIVE = "min_is_inclusive"; -DataColumnConstraintsDao.COLUMN_MAX = "max"; -DataColumnConstraintsDao.COLUMN_MAX_IS_INCLUSIVE = "max_is_inclusive"; -DataColumnConstraintsDao.COLUMN_DESCRIPTION = "description"; - -DataColumnConstraintsDao.ENUM_TYPE = 'enum'; -DataColumnConstraintsDao.GLOB_TYPE = 'glob'; -DataColumnConstraintsDao.RANGE_TYPE = 'range'; - -DataColumnConstraintsDao.prototype.gpkgTableName = DataColumnConstraintsDao.TABLE_NAME; -DataColumnConstraintsDao.prototype.idColumns = [DataColumnConstraintsDao.COLUMN_CONSTRAINT_NAME, DataColumnConstraintsDao.COLUMN_CONSTRAINT_TYPE, DataColumnConstraintsDao.COLUMN_VALUE]; - -module.exports.DataColumnConstraintsDao = DataColumnConstraintsDao; -module.exports.DataColumnConstraints = DataColumnConstraints; - -},{"../dao/dao":11,"util":343}],13:[function(require,module,exports){ -/** - * DataColumns module. - * @module dataColumns - */ - -var Dao = require('../dao/dao') - , ContentsDao = require('../core/contents').ContentsDao; - -var util = require('util'); - -/** - * Stores minimal application schema identifying, descriptive and MIME type - * information about columns in user vector feature and tile matrix data tables - * that supplements the data available from the SQLite sqlite_master table and - * pragma table_info(table_name) SQL function. The gpkg_data_columns data CAN be - * used to provide more specific column data types and value ranges and - * application specific structural and semantic information to enable more - * informative user menu displays and more effective user decisions on the - * suitability of GeoPackage contents for specific purposes. - * @class DataColumns - */ -var DataColumns = function() { - /** - * the name of the tiles, or feature table - * @member {string} - */ - this.table_name; - - /** - * the name of the table column - * @member {string} - */ - this.column_name; - - /** - * A human-readable identifier (e.g. short name) for the column_name content - * @member {string} - */ - this.name; - - /** - * A human-readable formal title for the column_name content - * @member {string} - */ - this.title; - - /** - * A human-readable description for the table_name contente - * @member {string} - */ - this.description; - - /** - * MIME type of columnName if BLOB type or NULL for other types - * @member {string} - */ - this.mime_type; - - /** - * Case sensitive column value constraint name specified - */ - this.constraint_name; -} - -/** - * Contents object. Provides identifying and descriptive information that an - * application can display to a user in a menu of geospatial data that is - * available for access and/or update. - * @class - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @extends {module:dao/dao~Dao} - */ -var DataColumnsDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(DataColumnsDao, Dao); - -/** - * Creates a new {module:dataColumns~DataColumns} object - * @return {module:dataColumns~DataColumns} - */ -DataColumnsDao.prototype.createObject = function () { - return new DataColumns(); -}; - -/** - * Get the Contents from the Data Columns - * @param {module:dataColumns~DataColumns} dataColumns data columns - * @return {module:core/contents~Contents} contents - */ -DataColumnsDao.prototype.getContents = function (dataColumns) { - var cd = new ContentsDao(this.geoPackage); - return cd.queryForId(dataColumns.table_name); -}; - -/** - * Query by constraint name - * @param {String} constraintName constraint name - * @return {Iterator} iterator of database objects - */ -DataColumnsDao.prototype.queryByConstraintName = function (constraintName) { - return this.queryForEach(DataColumnsDao.COLUMN_CONSTRAINT_NAME, constraintName); -}; - -/** - * Get DataColumn by column name and table name - * @param {String} tableName table name - * @param {String} columnName column name - * @return {module:dataColumns~DataColumns} - */ -DataColumnsDao.prototype.getDataColumns = function (tableName, columnName) { - var exists = this.isTableExists(); - if (!exists) { - return; - } - var where = this.buildWhereWithFieldAndValue(DataColumnsDao.COLUMN_TABLE_NAME, tableName) + - ' and ' + - this.buildWhereWithFieldAndValue(DataColumnsDao.COLUMN_COLUMN_NAME, columnName); - var values = [tableName, columnName]; - var dataColumn; - for (var row of this.queryWhere(where, values)) { - dataColumn = row; - } - return dataColumn; -}; - -DataColumnsDao.TABLE_NAME = "gpkg_data_columns"; -DataColumnsDao.COLUMN_PK1 = "table_name"; -DataColumnsDao.COLUMN_PK2 = "column_name"; -DataColumnsDao.COLUMN_TABLE_NAME = "table_name"; -DataColumnsDao.COLUMN_COLUMN_NAME = "column_name"; -DataColumnsDao.COLUMN_NAME = "name"; -DataColumnsDao.COLUMN_TITLE = "title"; -DataColumnsDao.COLUMN_DESCRIPTION = "description"; -DataColumnsDao.COLUMN_MIME_TYPE = "mime_type"; -DataColumnsDao.COLUMN_CONSTRAINT_NAME = "constraint_name"; - -DataColumnsDao.prototype.gpkgTableName = DataColumnsDao.TABLE_NAME; -DataColumnsDao.prototype.idColumns = [DataColumnsDao.COLUMN_PK1, DataColumnsDao.COLUMN_PK2]; - -module.exports.DataColumnsDao = DataColumnsDao; -module.exports.DataColumns = DataColumns; - -},{"../core/contents":8,"../dao/dao":11,"util":343}],14:[function(require,module,exports){ -/** - * @module db/dataTypes - */ - -/** - * A boolean value representing true or false. - * @type {String} - */ -module.exports.GPKG_DT_BOOLEAN_NAME = "BOOLEAN"; -/** - * 8-bit signed two’s complement integer. - * @type {String} - */ -module.exports.GPKG_DT_TINYINT_NAME = "TINYINT"; -/** - * 16-bit signed two’s complement integer. - * @type {String} - */ -module.exports.GPKG_DT_SMALLINT_NAME = "SMALLINT"; -/** - * 32-bit signed two’s complement integer. - * @type {String} - */ -module.exports.GPKG_DT_MEDIUMINT_NAME = "MEDIUMINT"; -/** - * 64-bit signed two’s complement integer. - * @type {String} - */ -module.exports.GPKG_DT_INT_NAME = "INT"; -/** - * 64-bit signed two’s complement integer. - * @type {String} - */ -module.exports.GPKG_DT_INTEGER_NAME = "INTEGER"; -/** - * 32-bit IEEE floating point number. - * @type {String} - */ -module.exports.GPKG_DT_FLOAT_NAME = "FLOAT"; -/** - * 64-bit IEEE floating point number. - * @type {String} - */ -module.exports.GPKG_DT_DOUBLE_NAME = "DOUBLE"; -/** - * 64-bit IEEE floating point number. - * @type {String} - */ -module.exports.GPKG_DT_REAL_NAME = "REAL"; -/** - * TEXT{(maxchar_count)}: Variable length string encoded in either UTF-8 or UTF-16, determined by PRAGMA encoding; see http://www.sqlite.org/pragma.html#pragma_encoding. - * @type {String} - */ -module.exports.GPKG_DT_TEXT_NAME = "TEXT"; -/** - * BLOB{(max_size)}: Variable length binary data. - * @type {String} - */ -module.exports.GPKG_DT_BLOB_NAME = "BLOB"; -/** - * ISO-8601 date string in the form YYYY-MM-DD encoded in either UTF-8 or UTF-16. - * @type {String} - */ -module.exports.GPKG_DT_DATE_NAME = "DATE"; -/** - * ISO-8601 date/time string in the form YYYY-MM-DDTHH:MM:SS.SSSZ with T separator character and Z suffix for coordinated universal time (UTC) encoded in either UTF-8 or UTF-16. - * @type {String} - */ -module.exports.GPKG_DT_DATETIME_NAME = "DATETIME"; -module.exports.GPKG_DT_GEOMETRY_NAME = "GEOMETRY"; - -/** - * DataType enumeration - * @typedef {object} GPKGDataType - */ -module.exports.GPKGDataType = {}; -module.exports.GPKGDataType[module.exports.GPKG_DT_BOOLEAN_NAME] = 0; -module.exports.GPKGDataType[module.exports.GPKG_DT_TINYINT_NAME] = 1; -module.exports.GPKGDataType[module.exports.GPKG_DT_SMALLINT_NAME] = 2; -module.exports.GPKGDataType[module.exports.GPKG_DT_MEDIUMINT_NAME] = 3; -module.exports.GPKGDataType[module.exports.GPKG_DT_INT_NAME] = 4; -module.exports.GPKGDataType[module.exports.GPKG_DT_INTEGER_NAME] = 5; -module.exports.GPKGDataType[module.exports.GPKG_DT_FLOAT_NAME] = 6; -module.exports.GPKGDataType[module.exports.GPKG_DT_DOUBLE_NAME] = 7; -module.exports.GPKGDataType[module.exports.GPKG_DT_REAL_NAME] = 8; -module.exports.GPKGDataType[module.exports.GPKG_DT_TEXT_NAME] = 9; -module.exports.GPKGDataType[module.exports.GPKG_DT_BLOB_NAME] = 10; -module.exports.GPKGDataType[module.exports.GPKG_DT_DATE_NAME] = 11; -module.exports.GPKGDataType[module.exports.GPKG_DT_DATETIME_NAME] = 12; -module.exports.GPKGDataType[module.exports.GPKG_DT_GEOMETRY_NAME] = 13; - -module.exports.GPKGDataType.GPKG_DT_BOOLEAN = 0; -module.exports.GPKGDataType.GPKG_DT_TINYINT = 1; -module.exports.GPKGDataType.GPKG_DT_SMALLINT = 2; -module.exports.GPKGDataType.GPKG_DT_MEDIUMINT = 3; -module.exports.GPKGDataType.GPKG_DT_INT = 4; -module.exports.GPKGDataType.GPKG_DT_INTEGER = 5; -module.exports.GPKGDataType.GPKG_DT_FLOAT = 6; -module.exports.GPKGDataType.GPKG_DT_DOUBLE = 7; -module.exports.GPKGDataType.GPKG_DT_REAL = 8; -module.exports.GPKGDataType.GPKG_DT_TEXT = 9; -module.exports.GPKGDataType.GPKG_DT_BLOB = 10; -module.exports.GPKGDataType.GPKG_DT_DATE = 11; -module.exports.GPKGDataType.GPKG_DT_DATETIME = 12; -module.exports.GPKGDataType.GPKG_DT_GEOMETRY = 13; - - -/** - * Return the name of the given data type. - * - * @param {module:db/dataTypes~GPKGDataType} dataType the enum to retrieve the name for - * @return {String} the string name of the given data type enum - */ -module.exports.name = function(dataType) { - var name = undefined; - - switch(dataType){ - case module.exports.GPKGDataType.GPKG_DT_BOOLEAN: - name = module.exports.GPKG_DT_BOOLEAN_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_TINYINT: - name = module.exports.GPKG_DT_TINYINT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_SMALLINT: - name = module.exports.GPKG_DT_SMALLINT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_MEDIUMINT: - name = module.exports.GPKG_DT_MEDIUMINT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_INT: - name = module.exports.GPKG_DT_INT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_INTEGER: - name = module.exports.GPKG_DT_INTEGER_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_FLOAT: - name = module.exports.GPKG_DT_FLOAT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_DOUBLE: - name = module.exports.GPKG_DT_DOUBLE_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_REAL: - name = module.exports.GPKG_DT_REAL_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_TEXT: - name = module.exports.GPKG_DT_TEXT_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_BLOB: - name = module.exports.GPKG_DT_BLOB_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_DATE: - name = module.exports.GPKG_DT_DATE_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_DATETIME: - name = module.exports.GPKG_DT_DATETIME_NAME; - break; - case module.exports.GPKGDataType.GPKG_DT_GEOMETRY: - name = module.exports.GPKG_DT_GEOMETRY_NAME; - break; - } - - return name; -} - -/** - * Return the data type enum value for the given name, ignoring case. - * - * @param {String} name the name of the data type enum - * @return {module:db/dataTypes~GPKGDataType} the enum value - */ -module.exports.fromName = function(name) { - var value = 9; - if (name) { - name = name.toUpperCase(); - value = module.exports.GPKGDataType[name]; - } - return value; -} - -},{}],15:[function(require,module,exports){ -(function (process,Buffer){ -/** - * Connection to the SQLite file - * @module db/geoPackageConnection - */ - -var GeoPackageConstants = require('../geoPackageConstants'); - -if (typeof(process) !== 'undefined' && process.version && !process.env.FORCE_SQLJS) { - console.log('Better SQLite'); -} else { - console.log('SQL.js'); -} - -/** - * Creates a connection to the SQLite file and when connected, returns a promise that resolves the connection. - * This will create a {module:db/sqliteAdapter~Adapter} if running in node and the FORCE_SQLJS environment variable is not set. - * This will create a {module:db/sqljsAdapter~Adapter} if running in the browser or the FORCE_SQLJS environment variable is set - * @see {module:db/sqliteAdapter~Adapter} - * @see {module:db/sqljsAdapter~Adapter} - * @class - * @param {string} filePath path to the sqlite file - * @return {Promise} - * @todo change this constructor to return an actual `GeoPackageConnection` instance instead of a `Promise` - */ -var GeoPackageConnection = function(filePath) { - if (typeof(process) !== 'undefined' && process.version && !process.env.FORCE_SQLJS) { - this.adapterCreator = require('./sqliteAdapter'); - } else { - this.adapterCreator = require('./sqljsAdapter'); - } - - var promise = new Promise(function(resolve, reject) { - this.adapterCreator.createAdapter(filePath) - .then(function(adapter) { - this.adapter = adapter; - resolve(this); - }.bind(this)) - .catch(function(error) { - reject(error); - }); - }.bind(this)); - - return promise; -} - -/** - * Close the database. - */ -GeoPackageConnection.prototype.close = function() { - this.adapter.close(); -} - -/** - * exports the GeoPackage as a file - * @param {Function} callback called with an err and the buffer containing the contents of the file - */ -GeoPackageConnection.prototype.export = function(callback) { - this.adapter.export(callback); -} - -/** - * Gets the raw connection to the database - * @return {Object} - */ -GeoPackageConnection.prototype.getDBConnection = function () { - return this.adapter.db; -}; - -/** - * Connects to a GeoPackage database - * @param {Object} db database to connect to - * @return {(module:db/sqliteAdapter~Adapter|module:db/sqljsAdapter~Adapter)} - */ -GeoPackageConnection.prototype.setDBConnection = function (db) { - return this.adapter = this.adapterCreator.createAdapterFromDb(db); -}; - -/** -* Registers the given function so that it can be used by SQL statements -* @param {string} name name of function to register -* @param {Function} functionDefinition function to register -* @return {(module:db/sqliteAdapter~Adapter|module:db/sqljsAdapter~Adapter)} the adapter in use -*/ -GeoPackageConnection.prototype.registerFunction = function(name, functionDefinition) { - this.adapter.registerFunction(name, functionDefinition); - return this.adapter; -} - -/** - * Gets the first result from the query - * @param {string} sql sql query to run - * @param {Array|Object} [params] array of substitution parameters - * @return {object} - */ -GeoPackageConnection.prototype.get = function (sql, params) { - return this.adapter.get(sql, params); -}; - -/** - * Checks if table exists in database - * @param {String} tableName - * @returns {Boolean} - */ -GeoPackageConnection.prototype.isTableExists = function (tableName) { - return this.adapter.isTableExists(tableName); -}; - -/** - * Run the given SQL and return the results. - * @param {string} sql sql to run - * @param {Array|Object} [params] array of substitution parameters - * @return {{changes: number, lastInsertROWID: number}} object: `{ "changes": number, "lastInsertROWID": number }` - * * `changes`: number of rows the statement changed - * * `lastInsertROWID`: ID of the last inserted row - */ -GeoPackageConnection.prototype.run = function (sql, params) { - return this.adapter.run(sql, params) -}; - -/** - * Executes the query and returns all results in an array - * @param {string} sql sql to run - * @param {Array|Object} [params] substitution parameters - * @return {Object[]} - */ -GeoPackageConnection.prototype.all = function (sql, params) { - return this.adapter.all(sql, params); -}; - -/** - * Executes the query and returns an Iterable object of results - * @param {string} sql sql to run - * @param {Array|Object} [params] substitution parameters - * @return {Iterable} - */ -GeoPackageConnection.prototype.each = function (sql, params) { - return this.adapter.each(sql, params); -}; - -/** - * Gets the minimum value from the column - * @param {string} table table to query - * @param {string} column column to get the min value from - * @param {string} [where] where clause - * @param {Array|Object} [whereArgs] substitution parameters - * @return {Object} - */ -GeoPackageConnection.prototype.minOfColumn = function(table, column, where, whereArgs) { - var minStatement = 'select min('+column+') as min from ' + table; - if(where) { - minStatement += ' '; - if (where.indexOf('where')) { - where = 'where ' + where; - } - minStatement += where; - } - return this.adapter.get(minStatement, whereArgs).min; -}; - -/** - * Gets the maximum value from the column - * @param {string} table table to query - * @param {string} column column to get the max value from - * @param {string} [where] where clause - * @param {Array|Object} [whereArgs] substitution parameters - * @return {Object} - */ -GeoPackageConnection.prototype.maxOfColumn = function(table, column, where, whereArgs, callback) { - var maxStatement = 'select max('+column+') as max from ' + table; - if(where) { - maxStatement += ' '; - if (where.indexOf('where')) { - where = 'where ' + where; - } - maxStatement += where; - } - return this.adapter.get(maxStatement, whereArgs).max; -}; - -/** - * Return the count of objects in the table - * @param {string} table table name - * @param {string} [where] where clause - * @param {Array|Object} [whereArgs] substitution parameters - * @return {Number} - */ -GeoPackageConnection.prototype.count = function(table, where, whereArgs) { - return this.adapter.count(table, where, whereArgs); -}; - -/** - * Executes an insert statement and returns the last id inserted - * @param {string} sql sql to insert - * @param {Array|Object} params substitution parameters - * @return {Object} last row id inserted - */ -GeoPackageConnection.prototype.insert = function (sql, params) { - return this.adapter.insert(sql, params); -}; - -/** - * Delete from the table - * @param {string} tableName table name to delete from - * @param {string} [where] where clause - * @param {Array|Object} [whereArgs] substitution parameters - * @return {Number} number of rows deleted - */ -GeoPackageConnection.prototype.delete = function(tableName, where, whereArgs) { - var deleteStatement = 'DELETE FROM ' + tableName + ''; - - if (where) { - deleteStatement += ' WHERE ' + where; - } - - return this.adapter.delete(deleteStatement, whereArgs); -}; - -/** - * Drops the table specified - * @param {string} tableName table to drop - * @return {Boolean} results of table drop - */ -GeoPackageConnection.prototype.dropTable = function(tableName) { - return this.adapter.dropTable(tableName); -}; - -/** - * Gets information about the table specified. If data is returned, the table exists - * @param {string} tableName table to check - * @return {Object} - */ -GeoPackageConnection.prototype.tableExists = function(tableName) { - return this.adapter.get('SELECT name FROM sqlite_master WHERE type="table" AND name=?', [tableName]); -}; - -/** - * Checks if a table and column exist - * @param {string} tableName table to check - * @param {string} columnName column to check - * @return {Boolean} - */ -GeoPackageConnection.prototype.columnAndTableExists = function(tableName, columnName) { - var columns = this.adapter.all('PRAGMA table_info(\''+tableName+'\')'); - for (var i = 0; i < columns.length; i++) { - if (columns[i].name === columnName) { - return true; - } - } - return false; -} - -/** - * Sets the APPLICATION_ID and user_version for GeoPackage - */ -GeoPackageConnection.prototype.setApplicationId = function() { - var buff = Buffer.from(GeoPackageConstants.APPLICATION_ID); - var applicationId = buff.readUInt32BE(0); - this.adapter.run('PRAGMA application_id = ' + applicationId); - this.adapter.run('PRAGMA user_version = ' + GeoPackageConstants.USER_VERSION); -} - -/** - * gets the application_id from the sqlite file - * @return {Object} - */ -GeoPackageConnection.prototype.getApplicationId = function() { - return this.adapter.get('PRAGMA application_id').application_id; -} - -module.exports = GeoPackageConnection; - -/** - * Convenience method - * @see {module:db/geoPackageConnection~GeoPackageConnection} - * @see {module:db/sqliteAdapter~Adapter} - * @see {module:db/sqljsAdapter~Adapter} - * @param {string|Buffer} filePath string path to an existing file or a path to where a new file will be created or a Buffer containing the contents of the file, if undefined, an in memory database is created - * @return {Promise} that resolves - */ -GeoPackageConnection.connect = function(filePath) { - return new GeoPackageConnection(filePath); -} - -/** - * Convenience method - * @param {Object} db open database to connect to - * @return {Promise} - */ -GeoPackageConnection.connectWithDatabase = function(db) { - return new GeoPackageConnection(undefined) - .then(function(connection) { - connection.setDBConnection(db); - }); -} - -}).call(this,require('_process'),require("buffer").Buffer) -},{"../geoPackageConstants":71,"./sqliteAdapter":16,"./sqljsAdapter":18,"_process":284,"buffer":182}],16:[function(require,module,exports){ -/** - * This adapter uses better-sqlite3 to execute queries against the GeoPackage database - * @module db/sqliteAdapter - * @see {@link https://github.com/JoshuaWise/better-sqlite3|better-sqlite3} - */ - -var fs = require('fs') - , path = require('path') - , http = require('http') - , Buffer = require('buffer') - , os = require('os'); - -/** - * Returns a Promise which, when resolved, returns a {module:db/sqliteAdapter~Adapter} which has connected to the GeoPackage database file - * @param {string|Buffer} [filePath] string path to an existing file or a path to where a new file will be created or a Buffer containing the contents of the file, if undefined, an in memory database is created - * @return {Promise} - */ -module.exports.createAdapter = function(filePath) { - var promise = new Promise(function(resolve, reject) { - var Database = require('better-sqlite3'); - try { - var db; - if (filePath && typeof filePath === 'string') { - if (filePath.indexOf('http') === 0) { - http.get(filePath, function(response) { - if (response.statusCode !== 200) { - return reject(new Error('Unable to reach url: ' + filePath)); - } - var tmpPath = path.join(os.tmpdir(), Date.now() + '.gpkg'); - var writeStream = fs.createWriteStream(tmpPath); - response.pipe(writeStream); - writeStream.on('close', function() { - try { - db = new Database(tmpPath); - // verify that this is an actual database - var applicationId = db.pragma('application_id'); - db.pragma('journal_mode = WAL'); - var adapter = new Adapter(db); - adapter.filePath = tmpPath; - resolve(adapter); - } catch (err) { - console.log('error', err); - return reject(err); - } - }); - }); - } else { - db = new Database(filePath); - var adapter = new Adapter(db); - adapter.filePath = filePath; - resolve(adapter); - } - } else if (filePath) { - // write this byte array to a file then open it - var byteArray = filePath; - var tmpPath = path.join(os.tmpdir(), Date.now() + '.gpkg'); - return fs.writeFile(tmpPath, byteArray, function(err) { - db = new Database(tmpPath); - // verify that this is an actual database - try { - var applicationId = db.pragma('application_id'); - db.pragma('journal_mode = WAL'); - } catch (err) { - console.log('error', err); - return reject(err); - } - var adapter = new Adapter(db); - adapter.filePath = tmpPath; - resolve(adapter); - }); - } else { - console.log('create in memory'); - db = new Database("memory", { - memory: !filePath - }); - var adapter = new Adapter(db); - adapter.filePath = filePath; - resolve(adapter); - } - - } catch (err) { - console.log('Error opening database', err); - return reject(err); - } - }); - return promise; -} -/** - * Creates an adapter from an already established better-sqlite3 database connection - * @param {better-sqlite3.Database} db better-sqlite3 database connection - * @return {module:db/sqliteAdapter~Adapter} - */ -module.exports.createAdapterFromDb = function(db) { - return new Adapter(db); -} - -/** - * Class which adapts generic GeoPackage queries to better-sqlite3 queries - * @class Adapter - * @param {better-sqlite3.Database} db better-sqlite3 database connection - */ -function Adapter(db) { - this.db = db; -} - -/** - * Closes the connection to the GeoPackage - */ -Adapter.prototype.close = function() { - this.db.close(); -} - -/** - * Get the connection to the database file - * @return {better-sqlite3.Database} - */ -Adapter.prototype.getDBConnection = function () { - return this.db; -}; - -/** - * Returns a Buffer containing the contents of the database as a file - * @param {Function} callback called when export is complete - */ -Adapter.prototype.export = function(callback) { - fs.readFile(this.filePath, callback); -} - -/** - * Registers the given function so that it can be used by SQL statements - * @see {@link https://github.com/JoshuaWise/better-sqlite3/wiki/API#registeroptions-function---this|better-sqlite3 register} - * @param {string} name name of function to register - * @param {Function} functionDefinition function to register - * @return {module:db/sqliteAdapter~Adapter} this - */ -Adapter.prototype.registerFunction = function(name, functionDefinition) { - this.db.function(name, functionDefinition); - return this; -} - -/** - * Gets one row of results from the statement - * @see {@link https://github.com/JoshuaWise/better-sqlite3/wiki/API#getbindparameters---row|better-sqlite3 get} - * @param {string} sql statement to run - * @param {Array|Object} [params] bind parameters - * @return {Object} - */ -Adapter.prototype.get = function (sql, params) { - var statement = this.db.prepare(sql); - if (params) { - return statement.get(params); - } else { - return statement.get(); - } -}; - -/** - * Determines if a tableName exists in the database - * @param {String} tableName - * @returns {Boolean} - */ -Adapter.prototype.isTableExists = function (tableName) { - var statement = this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=:name"); - var result; - result = statement.get({name: tableName}); - return !!result; -}; - -/** - * Gets all results from the statement in an array - * @see {@link https://github.com/JoshuaWise/better-sqlite3/wiki/API#allbindparameters---array-of-rows|better-sqlite3 all} - * @param {string} sql statement to run - * @param {Array|Object} [params] bind parameters - * @return {Object[]} - */ -Adapter.prototype.all = function (sql, params) { - var statement = this.db.prepare(sql); - if (params) { - return statement.all(params); - } else { - return statement.all(); - } -}; - -/** - * Returns an `Iterable` with results from the query - * @see {@link https://github.com/JoshuaWise/better-sqlite3/wiki/API#iteratebindparameters---iterator|better-sqlite3 iterate} - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {Iterable} - */ -Adapter.prototype.each = function (sql, params) { - var statement = this.db.prepare(sql); - if (params) { - return statement.iterate(params); - } else { - return statement.iterate(); - } -}; - -/** - * Run the given statement, returning information about what changed. - * - * @see {@link https://github.com/JoshuaWise/better-sqlite3/wiki/API#runbindparameters---object|better-sqlite3} - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {{changes: number, lastInsertROWID: number}} object: `{ "changes": number, "lastInsertROWID": number }` - * * `changes`: number of rows the statement changed - * * `lastInsertROWID`: ID of the last inserted row - */ -Adapter.prototype.run = function(sql, params) { - var statement = this.db.prepare(sql); - if (params) { - return statement.run(params); - } else { - return statement.run(); - } -} - -/** - * Runs the specified insert statement and returns the last inserted id or undefined if no insert happened - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {Number} last inserted row id - */ -Adapter.prototype.insert = function(sql, params) { - var statement = this.db.prepare(sql); - return statement.run(params).lastInsertRowid; -}; - -/** - * Runs the specified delete statement and returns the number of deleted rows - * @param {string} sql statement to run - * @param {Object|Array} params bind parameters - * @return {number} deleted rows - */ -Adapter.prototype.delete = function(sql, params) { - var statement = this.db.prepare(sql); - return statement.run(params).changes; -}; - -/** - * Drops the table - * @param {string} table table name - * @return {Boolean} indicates if the table was dropped - */ -Adapter.prototype.dropTable = function(table) { - try { - var statement = this.db.prepare('DROP TABLE IF EXISTS "' + table + '"'); - var result = statement.run(); - var vacuum = this.db.prepare('VACUUM'); - vacuum.run(); - return result.changes == 0; - } catch (e) { - console.log('Drop Table Error', e); - return false; - } -}; - -/** - * Counts rows that match the query - * @param {string} tableName table name from which to count - * @param {string} [where] where clause - * @param {Object|Array} [whereArgs] where args - * @return {Number} count - */ -Adapter.prototype.count = function (tableName, where, whereArgs) { - var sql = 'SELECT COUNT(*) as count FROM "' + tableName + '"'; - if (where) { - sql += ' where ' + where; - } - var statement = this.db.prepare(sql); - if (whereArgs) { - return statement.get(whereArgs).count; - } else { - return statement.get().count; - } -}; - -},{"better-sqlite3":undefined,"buffer":182,"fs":177,"http":329,"os":270,"path":276}],17:[function(require,module,exports){ -/** - * SQLite query builder module. - * @module db/sqliteQueryBuilder - */ - -/** - * Utility class to build sql queries - * @class - */ -function SqliteQueryBuilder() {} - -module.exports = SqliteQueryBuilder; - -/** - * Replaces all whitespace in a column name with underscores - * @param {string} columnName column name to fix - * @return {string} - */ -SqliteQueryBuilder.fixColumnName = function(columnName) { - return columnName.replace(/\W+/g, '_'); -} - -/** - * Builds a query - * @param {Boolean} distinct whether query should be distinct or not - * @param {string} tables table names to query, added to the query from clause - * @param {string[]} [columns=*] columns to query for - * @param {string} [where] where clause - * @param {string} [join] join clause - * @param {string} [groupBy] group by clause - * @param {string} [having] having clause - * @param {string} [orderBy] order by clause - * @param {Number} [limit] limit - * @param {Number} [offset] offset - * @return {string} - */ -SqliteQueryBuilder.buildQuery = function(distinct, tables, columns, where, join, groupBy, having, orderBy, limit, offset) { - - var query = ''; - if (isEmpty(groupBy) && !isEmpty(having)) { - throw new Error('Illegal Arguments: having clauses require a groupBy clause'); - } - - query += 'select '; - if (distinct) { - query += 'distinct '; - } - if(columns && columns.length) { - query = appendColumnsToString(columns, query); - } else { - query += '* '; - } - - query += 'from ' + tables; - if (join) { - query += ' ' + join; - } - query = appendClauseToString(query, ' where ', where); - query = appendClauseToString(query, ' group by ', groupBy); - query = appendClauseToString(query, ' having ', having); - query = appendClauseToString(query, ' order by ', orderBy); - query = appendClauseToString(query, ' limit ', limit); - query = appendClauseToString(query, ' offset ', offset); - - return query; -} - -/** - * Builds a count statement - * @param {string} tables table names to query for - * @param {string} [where] where clause - * @return {string} count statement - */ -SqliteQueryBuilder.buildCount = function(tables, where) { - var query = 'select count(*) as count from ' + tables; - query = appendClauseToString(query, ' where ', where); - return query; -} - -/** - * Builds an insert statement using the properties of the object - * @param {string} table table to insert into - * @param {Object} object object to insert - * @return {string} insert statement - */ -SqliteQueryBuilder.buildInsert = function(table, object) { - if (object.getColumnNames) { - return SqliteQueryBuilder.buildInsertFromColumnNames(table, object); - } - var insert = 'insert into ' + table + ' ('; - var keys = ''; - var values = ''; - var first = true; - for (var key in object) { - if (object.hasOwnProperty(key)) { - if (!first) { - keys += ','; - values += ','; - } - first = false; - keys += key; - values += '$' + SqliteQueryBuilder.fixColumnName(key); - } - } - - insert += keys + ') values (' + values + ')'; - return insert; -} - -/** - * Builds an insert statement from the object.getColumnNames method - * @param {string} table table to insert into - * @param {Object} object object with a getColumnNames method - * @return {string} insert statement - */ -SqliteQueryBuilder.buildInsertFromColumnNames = function(table, object) { - var insert = 'insert into ' + table + ' ('; - var keys = ''; - var values = ''; - var first = true; - var columnNames = object.getColumnNames(); - for (var i = 0; i < columnNames.length; i++) { - var key = columnNames[i]; - if (!first) { - keys += ','; - values += ','; - } - first = false; - keys += '"' + key + '"'; - values += '$' + SqliteQueryBuilder.fixColumnName(key); - } - - insert += keys + ') values (' + values + ')'; - return insert; -} - -/** - * Builds an update or insert object to bind to a statement - * @param {Object} object object to create bind parameters from - * @return {Object} bind parameters - */ -SqliteQueryBuilder.buildUpdateOrInsertObject = function(object) { - var insertOrUpdate = {}; - if (object.getColumnNames) { - var columnNames = object.getColumnNames(); - for (var i = 0; i < columnNames.length; i++) { - insertOrUpdate[SqliteQueryBuilder.fixColumnName(columnNames[i])] = object.toDatabaseValue(columnNames[i]); - } - } else { - for (var key in object) { - if (object.hasOwnProperty(key)) { - if (object.toDatabaseValue) { - insertOrUpdate[SqliteQueryBuilder.fixColumnName(key)] = object.toDatabaseValue(key); - } else { - if (typeof object[key] == 'boolean') { - insertOrUpdate[SqliteQueryBuilder.fixColumnName(key)] = object[key] ? 1 : 0; - } else { - insertOrUpdate[SqliteQueryBuilder.fixColumnName(key)] = object[key]; - } - } - } - } - } - return insertOrUpdate; -} - -/** - * Builds an update statement - * @param {string} table table to update - * @param {Object} values object with values to update - * @param {string} [where] where clause - * @param {Array|Ojbect} [whereArgs] where bind parameters - * @return {Object} object with a sql property containing the update statement and an args property with bind arguments - */ -SqliteQueryBuilder.buildUpdate = function(table, values, where, whereArgs) { - var args = []; - var update = 'update ' + table + ' set '; - var first = true; - for (var columnName in values) { - if (!first) { - update += ', '; - } - first = false; - update += '"'+ columnName + '"'; - args.push(values[columnName]); - update += '=?'; - } - if (whereArgs) { - for (var i = 0; i < whereArgs.length; i++) { - args.push(whereArgs[i]); - } - } - if (where) { - update += ' where '; - update += where; - } - return { - sql: update, - args: args - }; -} - -/** - * Builds an update from an object - * @param {string} table table name to update - * @param {Object} object object with values to update - * @return {string} update statement - */ -SqliteQueryBuilder.buildObjectUpdate = function(table, object) { - var update = 'update ' + table + ' set '; - var first = true; - if (object.getColumnNames) { - var columnNames = object.getColumnNames(); - - for (var i = 0; i < columnNames.length; i++) { - var key = columnNames[i]; - if (!first) { - update += ', '; - } - first = false; - update += '"' + key + '"='; - update += '$' + SqliteQueryBuilder.fixColumnName(key); - } - } else { - for (var key in object) { - if (!first) { - update += ', '; - } - first = false; - - if (object.hasOwnProperty(key)) { - update += '"' + key + '"='; - update += '$' + SqliteQueryBuilder.fixColumnName(key); - } - } - } - - return update; -} - -function appendClauseToString(string, name, clause) { - if (clause) { - string += name + clause; - } - return string; -} - -function appendColumnsToString(columns, string) { - if (!columns || columns.length == 0) return string; - string += columnToAppend(columns[0]); - for (var i = 1; i < columns.length; i++) { - string += ', ' + columnToAppend(columns[i]); - } - string += ' '; - return string; -} - -function columnToAppend(column) { - return column.indexOf('*') != -1 ? column : '"' + column + '"'; -} - -function isEmpty(string) { - return !string || string.length === 0; -} - -},{}],18:[function(require,module,exports){ -(function (process,Buffer){ -/** - * This adapter uses sql.js to execute queries against the GeoPackage database - * @module db/sqljsAdapter - * @see {@link http://kripken.github.io/sql.js/documentation/|sqljs} - */ - -var sqljs = require('sql.js/dist/sql-asm-memory-growth.js'); -// var sqljs = require('sql.js/js/sql.js'); - -/** - * Returns a Promise which, when resolved, returns a {module:db/sqljsAdapter~Adapter} which has connected to the GeoPackage database file - * @param {string|Buffer} [filePath] string path to an existing file or a path to where a new file will be created or a url from which to download a GeoPackage or a Uint8Array containing the contents of the file, if undefined, an in memory database is created - * @return {Promise} - */ -module.exports.createAdapter = function(filePath) { - var promise = new Promise(function(resolve, reject) { - sqljs().then(SQL => { - if (filePath && typeof filePath === 'string') { - if (typeof (process) !== 'undefined' && process.version) { - var fs = require('fs'); - if (filePath.indexOf('http') === 0) { - var http = require('http'); - http.get(filePath, function(response) { - if (response.statusCode !== 200) { - return reject(new Error('Unable to reach url: ' + filePath)); - } - var body = []; - response.on('data', chunk => body.push(chunk)); - response.on('end', function() { - var t = new Uint8Array(Buffer.concat(body)); - var db = new SQL.Database(t); - var adapter = new Adapter(db); - resolve(adapter); - }); - }); - } else { - try { - var stats = fs.statSync(filePath); - } catch (e) { - var db = new SQL.Database(); - var adapter = new Adapter(db); - return resolve(adapter); - } - var filebuffer = fs.readFileSync(filePath); - var t = new Uint8Array(filebuffer); - var db = new SQL.Database(t); - // console.log('setting wal mode'); - // var walMode = db.exec('PRAGMA journal_mode=DELETE'); - // console.log('walMode', walMode); - var adapter = new Adapter(db); - return resolve(adapter); - } - } else { - var xhr = new XMLHttpRequest(); - xhr.open('GET', filePath, true); - xhr.responseType = 'arraybuffer'; - - xhr.onload = function (e) { - if (xhr.status !== 200) { - return reject(new Error('Unable to reach url: ' + filePath)); - } - var uInt8Array = new Uint8Array(this.response); - var db = new SQL.Database(uInt8Array); - var adapter = new Adapter(db); - return resolve(adapter); - }; - xhr.onerror = function (e) { - return reject(new Error('Error reaching url: ' + filePath)); - }; - xhr.send(); - } - } else if (filePath) { - var byteArray = filePath; - var db = new SQL.Database(byteArray); - var adapter = new Adapter(db); - return resolve(adapter); - } else { - var db = new SQL.Database(); - var adapter = new Adapter(db); - return resolve(adapter); - } - }); - }); - - return promise; -} - -/** - * Creates an adapter from an already established better-sqlite3 database connection - * @param {sqljs.Database} db sqljs database connection - * @return {module:db/sqljsAdapter~Adapter} - */ -module.exports.createAdapterFromDb = function(db) { - return new Adapter(db); -} - -/** - * Class which adapts generic GeoPackage queries to sqljs queries - * @class Adapter - * @param {sqljs.Database} db sqljs database connection - */ -function Adapter(db) { - this.db = db; -} - -/** - * Closes the connection to the GeoPackage - */ -Adapter.prototype.close = function() { - this.db.close(); -} - -/** - * Get the connection to the database file - * @return {sqljs.Database} - */ -Adapter.prototype.getDBConnection = function () { - return this.db; -}; - -/** - * Returns a Uint8Array containing the contents of the database as a file - * @param {Function} callback called when export is complete - */ -Adapter.prototype.export = function(callback) { - callback(null, this.db.export()); -} - -/** - * Registers the given function so that it can be used by SQL statements - * @see {@link http://kripken.github.io/sql.js/documentation/#http://kripken.github.io/sql.js/documentation/class/Database.html#create_function-dynamic|sqljs create_function} - * @param {string} name name of function to register - * @param {Function} functionDefinition function to register - * @return {module:db/sqljsAdapter~Adapter} this - */ -Adapter.prototype.registerFunction = function(name, functionDefinition) { - this.db.create_function(name, functionDefinition); - return this; -} - -/** - * Gets one row of results from the statement - * @see {@link http://kripken.github.io/sql.js/documentation/#http://kripken.github.io/sql.js/documentation/class/Statement.html#get-dynamic|sqljs get} - * @see {@link http://kripken.github.io/sql.js/documentation/#http://kripken.github.io/sql.js/documentation/class/Statement.html#getAsObject-dynamic|sqljs getAsObject} - * @param {string} sql statement to run - * @param {Array|Object} [params] substitution parameters - * @return {Object} - */ -Adapter.prototype.get = function (sql, params) { - params = params || []; - var statement = this.db.prepare(sql); - statement.bind(params); - var hasResult = statement.step(); - var row; - - if (hasResult) { - row = statement.getAsObject(); - } - - statement.free(); - return row; -}; - -/** - * Determines if a tableName exists in the database - * @param {String} tableName - * @returns {Boolean} - */ -Adapter.prototype.isTableExists = function (tableName) { - var statement = this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=:name"); - statement.bind([tableName]); - var hasResult = statement.step(); - var row; - if (hasResult) { - row = statement.getAsObject(); - } - statement.free(); - return !!row; -}; - -/** - * Gets all results from the statement in an array - * @param {string} sql statement to run - * @param {Array|Object} [params] bind parameters - * @return {Object[]} - */ -Adapter.prototype.all = function (sql, params) { - var rows = []; - var iterator = this.each(sql, params); - for (var row of iterator) { - rows.push(row); - } - return rows; -}; - -/** - * Returns an Iterable with results from the query - * @param {string} sql statement to run - * @param {Object|Array} params bind parameters - * @return {Iterable} - */ -Adapter.prototype.each = function (sql, params) { - var statement = this.db.prepare(sql); - statement.bind(params); - - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - if (statement.step()) { - return { - value: statement.getAsObject(), - done: false - }; - } else { - statement.free(); - return { - done: true - } - } - } - } -}; - -/** - * Runs the statement specified, returning information about what changed - * @see {@link http://kripken.github.io/sql.js/documentation/#http://kripken.github.io/sql.js/documentation/class/Statement.html#run-dynamic|sqljs run} - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {Object} object containing a changes property indicating the number of rows changed and a lastInsertROWID indicating the last inserted row - */ -Adapter.prototype.run = function(sql, params) { - if (params) { - for (var key in params) { - params['$' + key] = params[key]; - } - } - this.db.run(sql, params); - var lastId = this.db.exec('select last_insert_rowid();'); - var lastInsertedId; - if (lastId) { - lastInsertedId = lastId[0].values[0][0]; - } - return { - lastInsertROWID: lastInsertedId, - changes: this.db.getRowsModified() - }; -}; - -/** - * Runs the specified insert statement and returns the last inserted id or undefined if no insert happened - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {Number} last inserted row id - */ -Adapter.prototype.insert = function(sql, params) { - if (params) { - for (var key in params) { - params['$' + key] = params[key]; - } - } - var statement = this.db.prepare(sql, params); - statement.step(); - statement.free(); - var lastId = this.db.exec('select last_insert_rowid();'); - if (lastId) { - return lastId[0].values[0][0]; - } else { - return; - } -}; - -/** - * Runs the specified delete statement and returns the number of deleted rows - * @param {string} sql statement to run - * @param {Object|Array} [params] bind parameters - * @return {number} deleted rows - */ -Adapter.prototype.delete = function(sql, params) { - var rowsModified = 0; - var statement = this.db.prepare(sql, params); - statement.step(); - rowsModified = this.db.getRowsModified(); - statement.free(); - return rowsModified; -}; - -/** - * Drops the table - * @param {string} table table name - * @return {Boolean} indicates if the table was dropped - */ -Adapter.prototype.dropTable = function(table) { - var response = this.db.exec('DROP TABLE IF EXISTS "' + table + '"'); - var vacuum = this.db.exec('VACUUM'); - return !!response; -}; - -/** - * Counts rows that match the query - * @param {string} tableName table name from which to count - * @param {string} [where] where clause - * @param {Object|Array} [whereArgs] where args - * @return {Number} count - */ -Adapter.prototype.count = function (tableName, where, whereArgs) { - var sql = 'SELECT COUNT(*) as count FROM "' + tableName + '"'; - if (where) { - sql += ' where ' + where; - } - return this.get(sql, whereArgs).count; -}; - -}).call(this,require('_process'),require("buffer").Buffer) -},{"_process":284,"buffer":182,"fs":177,"http":329,"sql.js/dist/sql-asm-memory-growth.js":327}],19:[function(require,module,exports){ -/** - * Creates tables necessary for GeoPackages - * @module db/tableCreator - */ - -const SpatialReferenceSystemDao = require('../core/srs').SpatialReferenceSystemDao; -const DataTypes = require('./dataTypes'); - -/** - * `TableCreator` provides methods for creating the various standard tables in - * a GeoPackage database. - * - * @class - * @param {module:geoPackage~GeoPackage} geopackage GeoPackage object - */ -var TableCreator = function(geopackage) { - this.geopackage = geopackage; - this.connection = geopackage.getDatabase(); -} - -module.exports = TableCreator; - -/** - * Creates all required tables and Spatial Reference Systems, in addition to EPSG:3857 - * @return {Promise} - */ -TableCreator.prototype.createRequired = function () { - var dao = new SpatialReferenceSystemDao(this.geopackage); - return Promise.all([this.createSpatialReferenceSystem(), this.createContents()]) - .then(function() { - // Create the required Spatial Reference Systems (spec Requirement 11) - dao.createUndefinedGeographic(); - dao.createWgs84(); - dao.createUndefinedCartesian(); - // not required but very common - dao.createWebMercator(); - return true; - }); -}; - -/** - * Creates the spatial reference system tables - * @return {Promise} - */ -TableCreator.prototype.createSpatialReferenceSystem = function() { - return this.createTable('spatial_reference_system'); -} - -/** - * Creates the contents tables - * @return {Promise} - */ -TableCreator.prototype.createContents = function() { - return this.createTable('contents'); -} - -/** - * Creates the geometry columns tables - * @return {Promise} - */ -TableCreator.prototype.createGeometryColumns = function() { - return this.createTable('geometry_columns'); -} - -/** - * Creates the tile matrix set tables - * @return {Promise} - */ -TableCreator.prototype.createTileMatrixSet = function() { - return this.createTable('tile_matrix_set'); -} - -/** - * Creates the tile matrix tables - * @return {Promise} - */ -TableCreator.prototype.createTileMatrix = function() { - return this.createTable('tile_matrix'); -} - -/** - * Creates the data columns tables - * @return {Promise} - */ -TableCreator.prototype.createDataColumns = function() { - return this.createTable('data_columns'); -} - -/** - * Creates the data column constraints tables - * @return {Promise} - */ -TableCreator.prototype.createDataColumnConstraints = function() { - return this.createTable('data_column_constraints'); -} - -/** - * Creates the metadata tables - * @return {Promise} - */ -TableCreator.prototype.createMetadata = function() { - return this.createTable('metadata'); -} - -/** - * Creates the metadata reference tables - * @return {Promise} - */ -TableCreator.prototype.createMetadataReference = function() { - return this.createTable('metadata_reference'); -} - -/** - * Creates the extensions tables - * @return {Promise} - */ -TableCreator.prototype.createExtensions = function() { - return this.createTable('extensions'); -} - -/** - * Creates the table index tables - * @return {Promise} - */ -TableCreator.prototype.createTableIndex = function() { - return this.createTable('table_index'); -} - -/** - * Creates the geometry index tables - * @return {Promise} - */ -TableCreator.prototype.createGeometryIndex = function() { - return this.createTable('geometry_index'); -} - -/** - * Creates the feature tile link tables - * @return {Promise} - */ -TableCreator.prototype.createFeatureTileLink = function() { - return this.createTable('feature_tile_link'); -} - -/** - * Creates the extended relations tables - * @return {Promise} - */ -TableCreator.prototype.createExtendedRelations = function() { - return this.createTable('extended_relations'); -} - -/** - * Creates the contentsId tables - * @return {Promise} - */ -TableCreator.prototype.createContentsId = function() { - return this.createTable('contents_id'); -} - -/** - * Creates all tables necessary for the specified table creation script name in the GeoPackage - * @param {string} creationScriptName creation scripts to run - * @return {Promise} - */ -TableCreator.prototype.createTable = function(creationScriptName) { - var connection = this.connection; - - return tableCreationScripts[creationScriptName].reduce(function(sequence, sql) { - return sequence.then(function() { - try { - return !!connection.run(sql); - } catch (error) { - if (error.message.indexOf('already exists') === -1) { - throw error; - } - } - }); - }, Promise.resolve()); -} - -/** - * Create the given user table. - * - * @param {modle:user/userTable~UserTable} userTable user table to create - * @return {object} the result of {@link module:db/geoPackageConnection~GeoPackageConnection#run} - * @throws {Error} if the table already exists - */ -TableCreator.prototype.createUserTable = function (userTable) { - var connection = this.connection; - var result = connection.tableExists(userTable.table_name); - if (result) { - throw new Error('Table already exists and cannot be created: ' + userTable.table_name); - } - var check = ''; - - var sql = 'create table \'' + userTable.table_name + '\' ('; - for (var i = 0; i < userTable.columns.length; i++) { - var tc = userTable.columns[i]; - if (i) { - sql += ', '; - } - sql += '\n\'' + tc.name + '\' ' + tc.getTypeName(); - if (tc.max != null) { - sql += '(' + tc.max + ')'; - if (check.length) { - check += ' AND\n'; - } - check += '\tlength("'+tc.name+'") <= ' + tc.max; - } - if (tc.notNull) { - sql += ' not null' - } - if (tc.primaryKey) { - sql += ' primary key autoincrement'; - } - if (tc.defaultValue) { - if (tc.dataType === DataTypes.GPKGDataType.GPKG_DT_TEXT) { - sql += ' default \'' + tc.defaultValue + '\''; - } else { - sql += ' default ' + tc.defaultValue; - } - } - } - for (var i = 0; i < userTable.uniqueConstraints.length; i++) { - var uniqueConstraint = userTable.uniqueConstraints[i]; - sql += ',\n unique ('; - for (var j = 0; j < uniqueConstraint.columns.length; j++) { - var uniqueColumn = uniqueConstraint.columns[j]; - if (j) { - sql += ', '; - } - sql += uniqueColumn.name; - } - sql += ')'; - } - - if (check.length) { - sql += '\nCHECK(\n' + check + '\n)'; - } - - sql += '\n);'; - return connection.run(sql); -}; - -var tableCreationScripts = { - spatial_reference_system: [ - 'CREATE TABLE gpkg_spatial_ref_sys ('+ - ' srs_name TEXT NOT NULL,'+ - ' srs_id INTEGER NOT NULL PRIMARY KEY,'+ - ' organization TEXT NOT NULL,'+ - ' organization_coordsys_id INTEGER NOT NULL,'+ - ' definition TEXT NOT NULL,'+ - ' description TEXT,'+ - ' definition_12_063 TEXT NOT NULL DEFAULT "undefined"'+ - ')', - - 'CREATE VIEW st_spatial_ref_sys AS'+ - ' SELECT'+ - ' srs_name,'+ - ' srs_id,'+ - ' organization,'+ - ' organization_coordsys_id,'+ - ' definition,'+ - ' description'+ - ' FROM gpkg_spatial_ref_sys', - - 'CREATE VIEW spatial_ref_sys AS'+ - ' SELECT'+ - ' srs_id AS srid,'+ - ' organization AS auth_name,'+ - ' organization_coordsys_id AS auth_srid,'+ - ' definition AS srtext'+ - ' FROM gpkg_spatial_ref_sys' - ], - contents: [ - 'CREATE TABLE gpkg_contents ('+ - ' table_name TEXT NOT NULL PRIMARY KEY,'+ - ' data_type TEXT NOT NULL,'+ - ' identifier TEXT UNIQUE,'+ - " description TEXT DEFAULT '',"+ - " last_change DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),"+ - ' min_x DOUBLE,'+ - ' min_y DOUBLE,'+ - ' max_x DOUBLE,'+ - ' max_y DOUBLE,'+ - ' srs_id INTEGER,'+ - ' CONSTRAINT fk_gc_r_srs_id FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys(srs_id)'+ - ')' - ], - geometry_columns: [ - 'CREATE TABLE gpkg_geometry_columns ('+ - ' table_name TEXT NOT NULL,'+ - ' column_name TEXT NOT NULL,'+ - ' geometry_type_name TEXT NOT NULL,'+ - ' srs_id INTEGER NOT NULL,'+ - ' z TINYINT NOT NULL,'+ - ' m TINYINT NOT NULL,'+ - ' CONSTRAINT pk_geom_cols PRIMARY KEY (table_name, column_name),'+ - ' CONSTRAINT uk_gc_table_name UNIQUE (table_name),'+ - ' CONSTRAINT fk_gc_tn FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name),'+ - ' CONSTRAINT fk_gc_srs FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys (srs_id)'+ - ')', - - 'CREATE VIEW st_geometry_columns AS'+ - ' SELECT'+ - ' table_name,'+ - ' column_name,'+ - ' "ST_" || geometry_type_name AS geometry_type_name,'+ - ' g.srs_id,'+ - ' srs_name'+ - ' FROM gpkg_geometry_columns as g JOIN gpkg_spatial_ref_sys AS s'+ - ' WHERE g.srs_id = s.srs_id', - - 'CREATE VIEW geometry_columns AS'+ - ' SELECT'+ - ' table_name AS f_table_name,'+ - ' column_name AS f_geometry_column,'+ - ' (CASE geometry_type_name'+ - ' WHEN "GEOMETRY" THEN 0'+ - ' WHEN "POINT" THEN 1'+ - ' WHEN "LINESTRING" THEN 2'+ - ' WHEN "POLYGON" THEN 3'+ - ' WHEN "MULTIPOINT" THEN 4'+ - ' WHEN "MULTILINESTRING" THEN 5'+ - ' WHEN "MULTIPOLYGON" THEN 6'+ - ' WHEN "GEOMETRYCOLLECTION" THEN 7'+ - ' WHEN "CIRCULARSTRING" THEN 8'+ - ' WHEN "COMPOUNDCURVE" THEN 9'+ - ' WHEN "CURVEPOLYGON" THEN 10'+ - ' WHEN "MULTICURVE" THEN 11'+ - ' WHEN "MULTISURFACE" THEN 12'+ - ' WHEN "CURVE" THEN 13'+ - ' WHEN "SURFACE" THEN 14'+ - ' WHEN "POLYHEDRALSURFACE" THEN 15'+ - ' WHEN "TIN" THEN 16'+ - ' WHEN "TRIANGLE" THEN 17'+ - ' ELSE 0 END) AS geometry_type,'+ - ' 2 + (CASE z WHEN 1 THEN 1 WHEN 2 THEN 1 ELSE 0 END) + (CASE m WHEN 1 THEN 1 WHEN 2 THEN 1 ELSE 0 END) AS coord_dimension,'+ - ' srs_id AS srid'+ - ' FROM gpkg_geometry_columns' - ], - tile_matrix_set: [ - 'CREATE TABLE gpkg_tile_matrix_set ('+ - ' table_name TEXT NOT NULL PRIMARY KEY,'+ - ' srs_id INTEGER NOT NULL,'+ - ' min_x DOUBLE NOT NULL,'+ - ' min_y DOUBLE NOT NULL,'+ - ' max_x DOUBLE NOT NULL,'+ - ' max_y DOUBLE NOT NULL,'+ - ' CONSTRAINT fk_gtms_table_name FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name),'+ - ' CONSTRAINT fk_gtms_srs FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys (srs_id)'+ - ')' - ], - tile_matrix: [ - 'CREATE TABLE gpkg_tile_matrix ('+ - ' table_name TEXT NOT NULL,'+ - ' zoom_level INTEGER NOT NULL,'+ - ' matrix_width INTEGER NOT NULL,'+ - ' matrix_height INTEGER NOT NULL,'+ - ' tile_width INTEGER NOT NULL,'+ - ' tile_height INTEGER NOT NULL,'+ - ' pixel_x_size DOUBLE NOT NULL,'+ - ' pixel_y_size DOUBLE NOT NULL,'+ - ' CONSTRAINT pk_ttm PRIMARY KEY (table_name, zoom_level),'+ - ' CONSTRAINT fk_tmm_table_name FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name)'+ - ')', - - "CREATE TRIGGER 'gpkg_tile_matrix_zoom_level_insert'"+ - "BEFORE INSERT ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: zoom_level cannot be less than 0')"+ - "WHERE (NEW.zoom_level < 0);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_zoom_level_update'"+ - "BEFORE UPDATE of zoom_level ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: zoom_level cannot be less than 0')"+ - "WHERE (NEW.zoom_level < 0);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_matrix_width_insert'"+ - "BEFORE INSERT ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: matrix_width cannot be less than 1')"+ - "WHERE (NEW.matrix_width < 1);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_matrix_width_update'"+ - "BEFORE UPDATE OF matrix_width ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: matrix_width cannot be less than 1')"+ - "WHERE (NEW.matrix_width < 1);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_matrix_height_insert'"+ - "BEFORE INSERT ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: matrix_height cannot be less than 1')"+ - "WHERE (NEW.matrix_height < 1);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_matrix_height_update'"+ - "BEFORE UPDATE OF matrix_height ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: matrix_height cannot be less than 1')"+ - "WHERE (NEW.matrix_height < 1);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_pixel_x_size_insert'"+ - "BEFORE INSERT ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: pixel_x_size must be greater than 0')"+ - "WHERE NOT (NEW.pixel_x_size > 0);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_pixel_x_size_update'"+ - "BEFORE UPDATE OF pixel_x_size ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: pixel_x_size must be greater than 0')"+ - "WHERE NOT (NEW.pixel_x_size > 0);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_pixel_y_size_insert'"+ - "BEFORE INSERT ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: pixel_y_size must be greater than 0')"+ - "WHERE NOT (NEW.pixel_y_size > 0);"+ - "END", - - "CREATE TRIGGER 'gpkg_tile_matrix_pixel_y_size_update'"+ - "BEFORE UPDATE OF pixel_y_size ON 'gpkg_tile_matrix'"+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: pixel_y_size must be greater than 0')"+ - "WHERE NOT (NEW.pixel_y_size > 0);"+ - "END" - ], - data_columns: [ - 'CREATE TABLE gpkg_data_columns ('+ - ' table_name TEXT NOT NULL,'+ - ' column_name TEXT NOT NULL,'+ - ' name TEXT,'+ - ' title TEXT,'+ - ' description TEXT,'+ - ' mime_type TEXT,'+ - ' constraint_name TEXT,'+ - ' CONSTRAINT pk_gdc PRIMARY KEY (table_name, column_name),'+ - ' CONSTRAINT fk_gdc_tn FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name)'+ - ')' - ], - data_column_constraints: [ - 'CREATE TABLE gpkg_data_column_constraints ('+ - ' constraint_name TEXT NOT NULL,'+ - ' constraint_type TEXT NOT NULL, /* "range" | "enum" | "glob" */'+ - ' value TEXT,'+ - ' min NUMERIC,'+ - ' min_is_inclusive BOOLEAN, /* 0 = false, 1 = true */'+ - ' max NUMERIC,'+ - ' max_is_inclusive BOOLEAN, /* 0 = false, 1 = true */'+ - ' description TEXT,'+ - ' CONSTRAINT gdcc_ntv UNIQUE (constraint_name, constraint_type, value)'+ - ')' - ], - metadata: [ - 'CREATE TABLE gpkg_metadata ('+ - ' id INTEGER CONSTRAINT m_pk PRIMARY KEY ASC NOT NULL UNIQUE,'+ - ' md_scope TEXT NOT NULL DEFAULT "dataset",'+ - ' md_standard_uri TEXT NOT NULL,'+ - ' mime_type TEXT NOT NULL DEFAULT "text/xml",'+ - ' metadata TEXT NOT NULL'+ - ')', - - "CREATE TRIGGER 'gpkg_metadata_md_scope_insert' "+ - "BEFORE INSERT ON 'gpkg_metadata' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata violates "+ - "constraint: md_scope must be one of undefined | fieldSession | "+ - "collectionSession | series | dataset | featureType | feature | "+ - "attributeType | attribute | tile | model | catalogue | schema | "+ - "taxonomy software | service | collectionHardware | "+ - "nonGeographicDataset | dimensionGroup') "+ - "WHERE NOT(NEW.md_scope IN "+ - "('undefined','fieldSession','collectionSession','series','dataset', "+ - "'featureType','feature','attributeType','attribute','tile','model', "+ - "'catalogue','schema','taxonomy','software','service', "+ - "'collectionHardware','nonGeographicDataset','dimensionGroup')); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_md_scope_update' "+ - "BEFORE UPDATE OF 'md_scope' ON 'gpkg_metadata' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata violates "+ - "constraint: md_scope must be one of undefined | fieldSession | "+ - "collectionSession | series | dataset | featureType | feature | "+ - "attributeType | attribute | tile | model | catalogue | schema | "+ - "taxonomy software | service | collectionHardware | "+ - "nonGeographicDataset | dimensionGroup') "+ - "WHERE NOT(NEW.md_scope IN "+ - "('undefined','fieldSession','collectionSession','series','dataset', "+ - "'featureType','feature','attributeType','attribute','tile','model', "+ - "'catalogue','schema','taxonomy','software','service', "+ - "'collectionHardware','nonGeographicDataset','dimensionGroup')); "+ - "END" - ], - metadata_reference: [ - "CREATE TABLE gpkg_metadata_reference (" + - " reference_scope TEXT NOT NULL," + - " table_name TEXT," + - " column_name TEXT," + - " row_id_value INTEGER," + - " timestamp DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now'))," + - " md_file_id INTEGER NOT NULL," + - " md_parent_id INTEGER," + - " CONSTRAINT crmr_mfi_fk FOREIGN KEY (md_file_id) REFERENCES gpkg_metadata(id)," + - " CONSTRAINT crmr_mpi_fk FOREIGN KEY (md_parent_id) REFERENCES gpkg_metadata(id)" + - ")", - - "CREATE TRIGGER 'gpkg_metadata_reference_reference_scope_insert' "+ - "BEFORE INSERT ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference "+ - "violates constraint: reference_scope must be one of \"geopackage\", "+ - "table\", \"column\", \"row\", \"row/col\"') "+ - "WHERE NOT NEW.reference_scope IN "+ - "('geopackage','table','column','row','row/col'); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_reference_scope_update' "+ - "BEFORE UPDATE OF 'reference_scope' ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference "+ - "violates constraint: referrence_scope must be one of \"geopackage\", "+ - "\"table\", \"column\", \"row\", \"row/col\"') "+ - "WHERE NOT NEW.reference_scope IN "+ - "('geopackage','table','column','row','row/col'); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_column_name_insert' "+ - "BEFORE INSERT ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference "+ - "violates constraint: column name must be NULL when reference_scope "+ - "is \"geopackage\", \"table\" or \"row\"') "+ - "WHERE (NEW.reference_scope IN ('geopackage','table','row') "+ - "AND NEW.column_name IS NOT NULL); "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference "+ - "violates constraint: column name must be defined for the specified "+ - "table when reference_scope is \"column\" or \"row/col\"') "+ - "WHERE (NEW.reference_scope IN ('column','row/col') "+ - "AND NOT NEW.table_name IN ( "+ - "SELECT name FROM SQLITE_MASTER WHERE type = 'table' "+ - "AND name = NEW.table_name "+ - "AND sql LIKE ('%' || NEW.column_name || '%'))); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_column_name_update' "+ - "BEFORE UPDATE OF column_name ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference "+ - "violates constraint: column name must be NULL when reference_scope "+ - "is \"geopackage\", \"table\" or \"row\"') "+ - "WHERE (NEW.reference_scope IN ('geopackage','table','row') "+ - "AND NEW.column_nameIS NOT NULL); "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference "+ - "violates constraint: column name must be defined for the specified "+ - "table when reference_scope is \"column\" or \"row/col\"') "+ - "WHERE (NEW.reference_scope IN ('column','row/col') "+ - "AND NOT NEW.table_name IN ( "+ - "SELECT name FROM SQLITE_MASTER WHERE type = 'table' "+ - "AND name = NEW.table_name "+ - "AND sql LIKE ('%' || NEW.column_name || '%'))); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_row_id_value_insert' "+ - "BEFORE INSERT ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference "+ - "violates constraint: row_id_value must be NULL when reference_scope "+ - "is \"geopackage\", \"table\" or \"column\"') "+ - "WHERE NEW.reference_scope IN ('geopackage','table','column') "+ - "AND NEW.row_id_value IS NOT NULL; "+ - "END ", - - "CREATE TRIGGER 'gpkg_metadata_reference_row_id_value_update' "+ - "BEFORE UPDATE OF 'row_id_value' ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference "+ - "violates constraint: row_id_value must be NULL when reference_scope "+ - "is \"geopackage\", \"table\" or \"column\"') "+ - "WHERE NEW.reference_scope IN ('geopackage','table','column') "+ - "AND NEW.row_id_value IS NOT NULL; "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_timestamp_insert' "+ - "BEFORE INSERT ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference "+ - "violates constraint: timestamp must be a valid time in ISO 8601 "+ - "\"yyyy-mm-ddThh:mm:ss.cccZ\" form') "+ - "WHERE NOT (NEW.timestamp GLOB "+ - "'[1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-5][0-9]:[0-5][0-9].[0-9][0-9][0-9]Z' "+ - "AND strftime('%s',NEW.timestamp) NOT NULL); "+ - "END", - - "CREATE TRIGGER 'gpkg_metadata_reference_timestamp_update' "+ - "BEFORE UPDATE OF 'timestamp' ON 'gpkg_metadata_reference' "+ - "FOR EACH ROW BEGIN "+ - "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference "+ - "violates constraint: timestamp must be a valid time in ISO 8601 "+ - "\"yyyy-mm-ddThh:mm:ss.cccZ\" form') "+ - "WHERE NOT (NEW.timestamp GLOB "+ - "'[1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-5][0-9]:[0-5][0-9].[0-9][0-9][0-9]Z' "+ - "AND strftime('%s',NEW.timestamp) NOT NULL); "+ - "END " - ], - extensions: [ - 'CREATE TABLE gpkg_extensions ('+ - ' table_name TEXT,'+ - ' column_name TEXT,'+ - ' extension_name TEXT NOT NULL,'+ - ' definition TEXT NOT NULL,'+ - ' scope TEXT NOT NULL,'+ - ' CONSTRAINT ge_tce UNIQUE (table_name, column_name, extension_name)'+ - ')' - ], - table_index: [ - 'CREATE TABLE nga_table_index ('+ - ' table_name TEXT NOT NULL PRIMARY KEY,'+ - ' last_indexed DATETIME'+ - ')' - ], - geometry_index: [ - 'CREATE TABLE nga_geometry_index ('+ - ' table_name TEXT NOT NULL,'+ - ' geom_id INTEGER NOT NULL,'+ - ' min_x DOUBLE NOT NULL,'+ - ' max_x DOUBLE NOT NULL,'+ - ' min_y DOUBLE NOT NULL,'+ - ' max_y DOUBLE NOT NULL,'+ - ' min_z DOUBLE,'+ - ' max_z DOUBLE,'+ - ' min_m DOUBLE,'+ - ' max_m DOUBLE,'+ - ' CONSTRAINT pk_ngi PRIMARY KEY (table_name, geom_id),'+ - ' CONSTRAINT fk_ngi_nti_tn FOREIGN KEY (table_name) REFERENCES nga_table_index(table_name)'+ - ')' - ], - feature_tile_link: [ - 'CREATE TABLE nga_feature_tile_link ('+ - ' feature_table_name TEXT NOT NULL,'+ - ' tile_table_name TEXT NOT NULL,'+ - ' CONSTRAINT pk_nftl PRIMARY KEY (feature_table_name, tile_table_name)'+ - ')' - ], - extended_relations: [ - 'CREATE TABLE gpkgext_relations (' + - ' id INTEGER PRIMARY KEY AUTOINCREMENT,' + - ' base_table_name TEXT NOT NULL,' + - ' base_primary_column TEXT NOT NULL DEFAULT \'id\',' + - ' related_table_name TEXT NOT NULL,' + - ' related_primary_column TEXT NOT NULL DEFAULT \'id\',' + - ' relation_name TEXT NOT NULL,' + - ' mapping_table_name TEXT NOT NULL UNIQUE' + - ')' - ], - contents_id: [ - 'CREATE TABLE nga_contents_id (' + - ' id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,' + - ' table_name TEXT NOT NULL,' + - ' CONSTRAINT uk_nci_table_name UNIQUE (table_name),' + - ' CONSTRAINT fk_nci_gc_tn FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name)' + - ')' - ] -}; - -},{"../core/srs":9,"./dataTypes":14}],20:[function(require,module,exports){ -/** - * Base Extension - * @module extension/baseExtension - */ - -var Extension = require('./index').Extension - , ExtensionDao = require('./index').ExtensionDao; -/** - * Abstract base GeoPackage extension - * @class - */ -var BaseExtension = function(geoPackage) { - this.geoPackage = geoPackage; - this.connection = geoPackage.connection; - this.extensionsDao = geoPackage.getExtensionDao(); -} - -module.exports = BaseExtension; - -/** - * Get the extension or create as needed - * @param {String} extensionName extension name - * @param {String} tableName table name - * @param {String} columnName column name - * @param {String} definition extension definition - * @param {String} scopeType extension scope type - * @return {Promise} - */ -BaseExtension.prototype.getOrCreate = function(extensionName, tableName, columnName, definition, scopeType) { - var extension = this.getExtension(extensionName, tableName, columnName); - if (extension) { - return Promise.resolve(extension); - } - return this.extensionsDao.createTable() - .then(function() { - return this.createExtension(extensionName, tableName, columnName, definition, scopeType); - }.bind(this)); -}; - -/** - * Get the extension for the name, table name and column name - * @param {String} extensionName extension name - * @param {String} tableName table name - * @param {String} columnName column name - * @param {Function} callback Called with err if one occurred and the extension - */ -BaseExtension.prototype.getExtension = function(extensionName, tableName, columnName) { - if (!this.extensionsDao.isTableExists()) { - return false; - } - return this.extensionsDao.queryByExtensionAndTableNameAndColumnName(extensionName, tableName, columnName); -}; - -/** - * Determine if the GeoPackage has the extension - * @param {String} extensionName extension name - * @param {String} tableName table name - * @param {String} columnName column name - */ -BaseExtension.prototype.hasExtension = function(extensionName, tableName, columnName) { - var exists = this.getExtension(extensionName, tableName, columnName); - return !!this.getExtension(extensionName, tableName, columnName).length; -}; - -BaseExtension.prototype.createExtension = function(extensionName, tableName, columnName, definition, scopeType) { - var extension = new Extension(); - extension.table_name = tableName; - extension.column_name = columnName; - extension.extension_name = extensionName; - extension.definition = definition; - extension.scope = scopeType; - return this.extensionsDao.create(extension); -}; - -},{"./index":25}],21:[function(require,module,exports){ -/** - * @memberOf module:extension/contents - * @class ContentsId - */ - -/** - * Contents Id object, for maintaining a unique identifier for contents tables - * @constructor - */ -var ContentsId = function() { - /** - * Id column, primary key - * @member {Number} - */ - this.id = undefined; - - /** - * Table name column - * @member {String} - */ - this.table_name = undefined; -}; - -module.exports = ContentsId; - -},{}],22:[function(require,module,exports){ -/** - * @memberOf module:extension/contents - * @class ContentsIdDao - */ - -var Dao = require('../../dao/dao') - , ContentsId = require('./contentsId'); -var util = require('util'); - -/** - * Contents Id Data Access Object - * @extends {module:dao/dao~Dao} - * @constructor - */ -var ContentsIdDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(ContentsIdDao, Dao); - -/** - * Create a {module:extension/contents.ContentsId} object - * @return {module:extension/contents.ContentsId} - */ -ContentsIdDao.prototype.createObject = function() { - return new ContentsId(); -}; - -/** - * Create the necessary tables for this dao - * @return {Promise} - */ -ContentsIdDao.prototype.createTable = function() { - return this.geoPackage.getTableCreator().createContentsId(); -}; - -/** - * Get all the table names - * @return {string[]} - */ -ContentsIdDao.prototype.getTableNames = function() { - var tableNames = []; - var tableNameColumns = this.queryForColumns('table_name'); - for (var i = 0; i < tableNameColumns.length; i++) { - tableNames.push(tableNameColumns[i].table_name); - } - return tableNames; -}; - -/** - * Query by table name - * @param {string} tableName name of the table - * @return {module:extension/contents.ContentsId} - */ -ContentsIdDao.prototype.queryForTableName = function(tableName) { - var contentsIds = this.queryForAll(this.buildWhereWithFieldAndValue(ContentsIdDao.COLUMN_TABLE_NAME, tableName), this.buildWhereArgs(tableName)); - if (contentsIds.length > 0) { - return contentsIds[0]; - } else { - return null; - } -}; - -/** - * Delete by tableName - * @param {string} tableName the table name to delete by - * @return {number} number of deleted rows - */ -ContentsIdDao.prototype.deleteByTableName = function(tableName) { - return this.deleteWhere(this.buildWhereWithFieldAndValue(ContentsIdDao.COLUMN_TABLE_NAME, tableName), this.buildWhereArgs(tableName)); -}; - -ContentsIdDao.TABLE_NAME = 'nga_contents_id'; -ContentsIdDao.COLUMN_ID = 'id'; -ContentsIdDao.COLUMN_TABLE_NAME = 'table_name'; - -ContentsIdDao.prototype.gpkgTableName = ContentsIdDao.TABLE_NAME; -ContentsIdDao.prototype.idColumns = ['id']; - -module.exports = ContentsIdDao; - -},{"../../dao/dao":11,"./contentsId":21,"util":343}],23:[function(require,module,exports){ -/** - * @module extension/contents - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension - , ContentsDao = require('../../core/contents').ContentsDao - , ContentsIdDao = require('./contentsIdDao'); - -var util = require('util'); - -/** - * Style extension - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @extends {module:extension/baseExtension~BaseExtension} - * @class ContentsIdExtension - * @constructor - */ -var ContentsIdExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - this.contentsIdDao = geoPackage.getContentsIdDao(); -}; - -util.inherits(ContentsIdExtension, BaseExtension); - -/** - * Get or create the contents id extension - * @return {Promise} - */ -ContentsIdExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(ContentsIdExtension.EXTENSION_NAME, null, null, ContentsIdExtension.EXTENSION_DEFINITION, Extension.READ_WRITE) - .then(function() { - return this.contentsIdDao.createTable(); - }.bind(this)); -}; - -/** - * Get the ContentsIdDao - * @returns {module:extension/contents.ContentsIdDao} - */ -ContentsIdExtension.prototype.getDao = function() { - return this.contentsIdDao; -}; - -ContentsIdExtension.prototype.has = function () { - return this.hasExtension(ContentsIdExtension.EXTENSION_NAME, null, null) && this.contentsIdDao.isTableExists(); -}; - -/** - * Get the ContentsId object - * @param contents {module:core/contents.Contents} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.get = function (contents) { - var contentsId = null; - if (contents && contents.table_name) { - contentsId = this.getByTableName(contents.table_name); - } - return contentsId; -}; - -/** - * Get the ContentsId object - * @param tableName - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.getByTableName = function (tableName) { - var contentsId = null; - if (this.contentsIdDao.isTableExists()) { - contentsId = this.contentsIdDao.queryForTableName(tableName); - } - return contentsId; -}; - -/** - * Get the ContentsId id - * @param contents {module:core/contents.Contents} - * @returns {Number} - */ -ContentsIdExtension.prototype.getId = function (contents) { - let contentsId = null; - if (contents && contents.table_name) { - contentsId = this.getIdByTableName(contents.table_name); - } - return contentsId; -}; - -/** - * Get the ContentsId id - * @param tableName - * @returns {Number} - */ -ContentsIdExtension.prototype.getIdByTableName = function (tableName) { - var id = null; - if (this.contentsIdDao.isTableExists()) { - var contentsId = this.contentsIdDao.queryForTableName(tableName); - if (contentsId) { - id = contentsId.id; - } - } - return id; -}; - -/** - * Creates contentsId for contents - * @param contents {module:core/contents.Contents} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.create = function (contents) { - var contentsId = null; - if (contents && contents.table_name) { - contentsId = this.createWithTableName(contents.table_name); - } - return contentsId; -}; - -/** - * Creates contentsId for contents - * @param tableName - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.createWithTableName = function (tableName) { - var contentsId = this.contentsIdDao.createObject(); - contentsId.table_name = tableName; - contentsId.id = this.contentsIdDao.create(contentsId); - return contentsId; -}; - -/** - * Creates contentsId for contents - * @param contents {module:core/contents.Contents} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.createId = function (contents) { - var contentsId = null; - if (contents && contents.table_name) { - contentsId = this.createIdWithTableName(contents.table_name); - } - return contentsId; -}; - -/** - * Creates contentsId for contents - * @param tableName {string} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.createIdWithTableName = function (tableName) { - return this.createWithTableName(tableName); -}; - -/** - * Gets or creates contentsId for contents - * @param contents {module:core/contents.Contents} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.getOrCreateId = function (contents) { - var contentsId = null; - if (contents && contents.table_name) { - contentsId = this.getOrCreateIdByTableName(contents.table_name); - } - return contentsId; -}; - -/** - * Gets or creates contentsId for table name - * @param tableName {string} - * @returns {module:extension/contents.ContentsId} - */ -ContentsIdExtension.prototype.getOrCreateIdByTableName = function (tableName) { - var contentId = this.getByTableName(tableName); - if (contentId == null) { - contentId = this.createWithTableName(tableName); - } - return contentId; -}; - -/** - * Deletes contentsId for contents - * @param contents {module:core/contents.Contents} - * @returns {number} number of deleted rows - */ -ContentsIdExtension.prototype.deleteId = function (contents) { - var deleted = false; - if (contents && contents.table_name) { - deleted = this.deleteIdByTableName(contents.table_name); - } - return deleted; -}; - -/** - * Deletes contentId for table name - * @param tableName {string} - * @returns {number} number of deleted rows - */ -ContentsIdExtension.prototype.deleteIdByTableName = function (tableName) { - return this.contentsIdDao.deleteByTableName(tableName); -}; - -/** - * Number of contentsIds - * @returns {number} - */ -ContentsIdExtension.prototype.count = function () { - var count = 0; - if (this.has()) { - count = this.contentsIdDao.count(); - } - return count; -}; - -/** - * Create contentsIds for contents of type passed in - * @param type {string} defaults to "" - * @returns {number} - */ -ContentsIdExtension.prototype.createIds = function (type = "") { - var missing = this.getMissing(type); - for (var i = 0; i < missing.length; i++) { - this.getOrCreateIdByTableName(missing[i].table_name); - } - return missing.length; -}; - -/** - * Deletes ids by type - * @param type - * @returns {number} - */ -ContentsIdExtension.prototype.deleteIds = function (type = "") { - var deleted = 0; - if (this.has()) { - if (type.length === 0) { - deleted = this.contentsIdDao.deleteAll(); - } else { - var ids = this.getIdsByType(type); - for (var i = 0; i < ids.length; i++) { - deleted += this.contentsIdDao.deleteById(ids[i].id); - } - } - } - return deleted; -}; - -ContentsIdExtension.prototype.getIdsByType = function (type = "") { - var contentIds = []; - if (this.has()) { - var query = "SELECT "; - query += ContentsIdDao.COLUMN_ID; - query += ", "; - query += ContentsIdDao.COLUMN_TABLE_NAME; - query += " FROM " + ContentsIdDao.TABLE_NAME; - query += " WHERE "; - query += ContentsIdDao.COLUMN_TABLE_NAME; - query += " IN (SELECT "; - query += ContentsDao.COLUMN_TABLE_NAME; - query += " FROM "; - query += ContentsDao.TABLE_NAME; - var where = ""; - var params = []; - if (type != null && type.length > 0) { - where += ContentsDao.COLUMN_DATA_TYPE; - where += " = ?"; - params.push(type); - } - if (where.length > 0) { - query += " WHERE " + where; - } - query += ")"; - contentIds = this.connection.all(query, params); - } - return contentIds; -}; - -/** - * Get contents without contents ids - * @param type - * @returns {string[]} - */ -ContentsIdExtension.prototype.getMissing = function (type = "") { - var query = "SELECT " + ContentsDao.COLUMN_TABLE_NAME + " FROM " + ContentsDao.TABLE_NAME; - var where = ""; - var params = []; - if (type != null && type.length > 0) { - where += ContentsDao.COLUMN_DATA_TYPE; - where += " = ?"; - params.push(type); - } - if (this.has()) { - if (where.length > 0) { - where += " AND "; - } - where += ContentsDao.COLUMN_TABLE_NAME; - where += " NOT IN (SELECT "; - where += ContentsIdDao.COLUMN_TABLE_NAME; - where += " FROM "; - where += ContentsIdDao.TABLE_NAME; - where += ")"; - } - if (where.length > 0) { - query += " WHERE " + where; - } - return this.connection.all(query, params); -}; - -/** - * Remove contents id extension - */ -ContentsIdExtension.prototype.removeExtension = function() { - if (this.contentsIdDao.isTableExists()) { - this.geoPackage.deleteTable(ContentsIdDao.TABLE_NAME); - } - if (this.extensionsDao.isTableExists()) { - this.extensionsDao.deleteByExtension(ContentsIdDao.EXTENSION_NAME); - } -}; - -ContentsIdExtension.EXTENSION_NAME = 'nga_contents_id'; -ContentsIdExtension.EXTENSION_AUTHOR = 'nga'; -ContentsIdExtension.EXTENSION_NAME_NO_AUTHOR = 'contents_id'; -ContentsIdExtension.EXTENSION_DEFINITION = 'http://ngageoint.github.io/GeoPackage/docs/extensions/contents-id.html'; - -module.exports = ContentsIdExtension; - -},{"../.":25,"../../core/contents":8,"../baseExtension":20,"./contentsIdDao":22,"util":343}],24:[function(require,module,exports){ -/** - * CrsWktExtension module. - * @module extension/crsWkt - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension; - -var util = require('util'); - -/** - * OGC Well known text representation of Coordinate Reference Systems extensionName - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @class - * @extends {module:extension/baseExtension~BaseExtension} - */ -var CrsWktExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - - this.extensionName = CrsWktExtension.EXTENSION_NAME; - - this.extensionDefinition = CrsWktExtension.EXTENSION_CRS_WKT_DEFINITION; -} - -util.inherits(CrsWktExtension, BaseExtension); - -/** - * Get or create the extension - * @return {Promise} - */ -CrsWktExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(this.extensionName, null, null, this.extensionDefinition, Extension.READ_WRITE); -}; - -CrsWktExtension.EXTENSION_NAME = 'gpkg_crs_wkt'; -CrsWktExtension.EXTENSION_CRS_WKT_AUTHOR = 'gpkg'; -CrsWktExtension.EXTENSION_CRS_WKT_NAME_NO_AUTHOR = 'crs_wkt'; -CrsWktExtension.EXTENSION_CRS_WKT_DEFINITION = 'http://www.geopackage.org/spec/#extension_crs_wkt'; - -module.exports.CrsWktExtension = CrsWktExtension; - -},{"../.":25,"../baseExtension":20,"util":343}],25:[function(require,module,exports){ -/** - * Metadata module. - * @module extension - * @see module:dao/dao - */ - -var Dao = require('../dao/dao') - , ColumnValues = require('../dao/columnValues') - , TableCreator = require('../db/tableCreator'); - -var util = require('util'); - -/** - * Indicates that a particular extension applies to a GeoPackage, a table in a - * GeoPackage or a column of a table in a GeoPackage. An application that access - * a GeoPackage can query the gpkg_extensions table instead of the contents of - * all the user data tables to determine if it has the required capabilities to - * read or write to tables with extensions, and to “fail fast†and return an - * error message if it does not. - * @class Extension - */ -var Extension = function() { - - /** - * Name of the table that requires the extension. When NULL, the extension - * is required for the entire GeoPackage. SHALL NOT be NULL when the - * column_name is not NULL. - * @member {String} - */ - this.table_name; - - /** - * Name of the column that requires the extension. When NULL, the extension - * is required for the entire table. - * @member {String} - */ - this.column_name; - - /** - * The case sensitive name of the extension that is required, in the form - * _. - * @member {String} - */ - this.extension_name; - - /** - * Definition of the extension in the form specfied by the template in - * GeoPackage Extension Template (Normative) or reference thereto. - * @member {String} - */ - this.definition; - - /** - * Indicates scope of extension effects on readers / writers: read-write or - * write-only in lowercase. - * @member {String} - */ - this.scope; -} - -Extension.EXTENSION_NAME_DIVIDER = "_"; - -Extension.READ_WRITE = "read-write"; -Extension.WRITE_ONLY = "write-only"; - -Extension.prototype.setExtensionName = function(author, extensionName) { - this.extension_name = Extension.buildExtensionName(author, extensionName); -}; - -Extension.prototype.getAuthor = function() { - return Extension.getAuthorWithExtensionName(this.extension_name); -} - -Extension.prototype.getExtensionNameNoAuthor = function() { - return Extension.getExtensionNameNoAuthor(this.extension_name); -} - -Extension.buildExtensionName = function(author, extensionName) { - return author + Extension.EXTENSION_NAME_DIVIDER + extensionName; -} - -Extension.getAuthorWithExtensionName = function(extensionName) { - return extensionName.split(Extension.EXTENSION_NAME_DIVIDER)[0]; -} - -Extension.getExtensionNameNoAuthor = function(extensionName) { - return extensionName.slice(extensionName.indexOf(Extension.EXTENSION_NAME_DIVIDER)+1); -} - -/** - * Extension Data Access Object - * @class - * @extends {module:dao/dao~Dao} - */ -var ExtensionDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(ExtensionDao, Dao); - -ExtensionDao.prototype.createObject = function(row) { - var e = new Extension(); - for (var key in row) { - e[key] = row[key]; - } - return e; -}; - -ExtensionDao.prototype.queryByExtension = function(extensionName) { - var results = this.queryForAllEq(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName); - var e = this.createObject(results[0]); - return e; -} - -ExtensionDao.prototype.queryAllByExtension = function(extensionName) { - var extensions = [] - for (var row of this.queryForAllEq(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName)) { - var e = this.createObject(row); - extensions.push(e); - } - if (extensions.length) { - return extensions; - } else { - return false; - } -} - -ExtensionDao.prototype.queryByExtensionAndTableName = function(extensionName, tableName) { - var values = new ColumnValues(); - values.addColumn(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName); - values.addColumn(ExtensionDao.COLUMN_TABLE_NAME, tableName); - var extensions = []; - for (var row of this.queryForFieldValues(values)) { - var e = this.createObject(row); - extensions.push(e); - } - if (extensions.length) { - return extensions; - } else { - return false; - } -} - -ExtensionDao.prototype.queryByExtensionAndTableNameAndColumnName = function (extensionName, tableName, columnName) { - var values = new ColumnValues(); - values.addColumn(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName); - values.addColumn(ExtensionDao.COLUMN_TABLE_NAME, tableName); - values.addColumn(ExtensionDao.COLUMN_COLUMN_NAME, columnName); - var extensions = []; - for (var row of this.queryForFieldValues(values)) { - var e = this.createObject(row); - extensions.push(e); - } - if (extensions.length) { - return extensions; - } else { - return false; - } -}; - -ExtensionDao.prototype.createTable = function() { - var tc = new TableCreator(this.geoPackage); - return tc.createExtensions(); -} - -ExtensionDao.prototype.deleteByExtension = function(extensionName) { - var values = new ColumnValues(); - values.addColumn(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName); - this.deleteWhere(this.buildWhere(values, '='), this.buildWhereArgs(values)); -} - -ExtensionDao.prototype.deleteByExtensionAndTableName = function(extensionName, tableName) { - var values = new ColumnValues(); - values.addColumn(ExtensionDao.COLUMN_EXTENSION_NAME, extensionName); - values.addColumn(ExtensionDao.COLUMN_TABLE_NAME, tableName); - this.deleteWhere(this.buildWhere(values, 'and'), this.buildWhereArgs(values)); -} - -ExtensionDao.TABLE_NAME = "gpkg_extensions"; -ExtensionDao.COLUMN_TABLE_NAME = "table_name"; -ExtensionDao.COLUMN_COLUMN_NAME = "column_name"; -ExtensionDao.COLUMN_EXTENSION_NAME = "extension_name"; -ExtensionDao.COLUMN_DEFINITION = "definition"; -ExtensionDao.COLUMN_SCOPE = "scope"; - -ExtensionDao.prototype.gpkgTableName = ExtensionDao.TABLE_NAME; -ExtensionDao.prototype.idColumns = [ExtensionDao.COLUMN_TABLE_NAME, ExtensionDao.COLUMN_COLUMN_NAME, ExtensionDao.COLUMN_EXTENSION_NAME]; - -module.exports.ExtensionDao = ExtensionDao; -module.exports.Extension = Extension; - -},{"../dao/columnValues":10,"../dao/dao":11,"../db/tableCreator":19,"util":343}],26:[function(require,module,exports){ -/** - * Feature Table Index - * @module extension/index - */ - -var Extension = require('../index').Extension - , ExtensionDao = require('../index').ExtensionDao - , BaseExtension = require('../baseExtension') - , TableIndexDao = require('./tableIndex').TableIndexDao - , TableIndex = require('./tableIndex').TableIndex - , GeometryIndexDao = require('./geometryIndex').GeometryIndexDao - , RTreeIndexDao = require('../rtree').RTreeIndexDao - , RTreeIndex = require('../rtree').RTreeIndex - , ContentsDao = require('../../core/contents').ContentsDao - , EnvelopeBuilder = require('../../geom/envelopeBuilder'); - -var proj4 = require('proj4'); -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -var util = require('util'); - -/** - * This class will either use the RTree index if it exists, or the - * Feature Table Index NGA Extension implementation. This extension is used to - * index Geometries within a feature table by their minimum bounding box for - * bounding box queries. - * @extends {module:extension/baseExtension~BaseExtension} - * @class - */ -var FeatureTableIndex = function(geoPackage, featureDao) { - BaseExtension.call(this, geoPackage); - - this.progress; - - /** - * Feature Dao to index - * @type {module:features/user/featureDao~FeatureDao} - */ - this.featureDao = featureDao; - - this.extensionName = Extension.buildExtensionName(FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_AUTHOR, FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_NAME_NO_AUTHOR); - - this.extensionDefinition = FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_DEFINITION; - - this.tableName = featureDao.table_name; - - this.columnName = featureDao.getGeometryColumnName(); - - this.extensionsDao = geoPackage.getExtensionDao(); - - this.tableIndexDao = geoPackage.getTableIndexDao(); - - this.geometryIndexDao = geoPackage.getGeometryIndexDao(featureDao); - - this.rtreeIndexDao = new RTreeIndexDao(geoPackage, featureDao); - this.rtreeIndexDao.gpkgTableName = 'rtree_'+this.tableName+'_'+this.columnName; - - this.rtreeIndex = new RTreeIndex(geoPackage, featureDao); - - /** - * true if the table is indexed with an RTree - * @type {Boolean} - */ - this.rtreeIndexed = this.hasExtension('gpkg_rtree_index', this.tableName, this.columnName); -} - -util.inherits(FeatureTableIndex, BaseExtension); - -/** - * Index the table if not already indexed - * @param {Function} progress function which is called with progress while indexing - * @return {Promise} promise resolved when the indexing is complete - */ -FeatureTableIndex.prototype.index = function(progress) { - return this.indexWithForce(false, progress); -}; - -/** - * Index the table if not already indexed or force is true - * @param {Boolean} force force index even if the table is already indexed - * @param {Function} progress function which is called with progress while indexing - * @return {Promise} promise resolved when the indexing is complete - */ -FeatureTableIndex.prototype.indexWithForce = function(force, progress) { - progress = progress || function() {}; - this.progress = function(message) { - setTimeout(progress, 0, message); - }; - var indexed = this.isIndexed(); - if (force || !indexed) { - return this.getOrCreateExtension() - .then(function(extension) { - return this.getOrCreateTableIndex(); - }.bind(this)) - .then(function(tableIndex) { - return this.createOrClearGeometryIndicies() - .then(function() { - return this.indexTable(tableIndex); - }.bind(this)) - .then(function() { - return true; - }); - }.bind(this)); - } else { - return Promise.resolve(indexed); - } -} - -/** - * Check if the table is indexed either with an RTree or the NGA Feature Table Index - * @return {Boolean} - */ -FeatureTableIndex.prototype.isIndexed = function () { - if (this.rtreeIndexed) return true; - - try { - var result = this.getFeatureTableIndexExtension(); - if (result) { - var contentsDao = this.geoPackage.getContentsDao(); - var contents = contentsDao.queryForId(this.tableName); - if (!contents) return false; - var lastChange = new Date(contents.last_change); - var tableIndex = this.tableIndexDao.queryForId(this.tableName); - if (!tableIndex || !tableIndex.last_indexed) { - return false; - } - var lastIndexed = new Date(tableIndex.last_indexed); - return lastIndexed >= lastChange; - } else { - return false; - } - } catch (e) { - return false; - } -}; - -/** - * Returns the feature table index extension for this table and column name if exists - * @return {module:extension~Extension} - */ -FeatureTableIndex.prototype.getFeatureTableIndexExtension = function () { - return this.getExtension(this.extensionName, this.tableName, this.columnName); -}; - -/** - * Get or create the extension for this table name and column name - * @return {module:extension~Extension} - */ -FeatureTableIndex.prototype.getOrCreateExtension = function() { - return this.getOrCreate(this.extensionName, this.tableName, this.columnName, this.extensionDefinition, Extension.READ_WRITE); -}; - -/** - * Get or create if needed the table index - * @return {Promise} - */ -FeatureTableIndex.prototype.getOrCreateTableIndex = function() { - var tableIndex = this.getTableIndex(); - if (tableIndex) return Promise.resolve(tableIndex); - return this.tableIndexDao.createTable() - .then(function() { - this.createTableIndex(); - return this.getTableIndex(); - }.bind(this)); -}; - -/** - * Create the table index - * @return {module:extension/index~TableIndex} - */ -FeatureTableIndex.prototype.createTableIndex = function() { - var ti = new TableIndex(); - ti.table_name = this.tableName; - ti.last_indexed = this.lastIndexed; - return this.tableIndexDao.create(ti); -}; - -/** - * Get the table index - * @return {module:extension/index~TableIndex} - */ -FeatureTableIndex.prototype.getTableIndex = function() { - if (this.tableIndexDao.isTableExists()) { - return this.tableIndexDao.queryForId(this.tableName); - } else { - return; - } -}; - -/** - * Clear the geometry indices or create the table if needed - * @return {Promise} resolved when complete - */ -FeatureTableIndex.prototype.createOrClearGeometryIndicies = function() { - return this.geometryIndexDao.createTable() - .then(function() { - return this.clearGeometryIndicies(); - }.bind(this)); -}; - -/** - * Clears the geometry indices - * @return {Number} number of rows deleted - */ -FeatureTableIndex.prototype.clearGeometryIndicies = function() { - var where = this.geometryIndexDao.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_TABLE_NAME, this.tableName); - var whereArgs = this.geometryIndexDao.buildWhereArgs(this.tableName); - return this.geometryIndexDao.deleteWhere(where, whereArgs); -}; - -/** - * Indexes the table - * @param {module:extension/index~TableIndex} tableIndex TableIndex - * @return {Promise} resolved when complete - */ -FeatureTableIndex.prototype.indexTable = function(tableIndex) { - return new Promise(function(resolve, reject) { - setTimeout(function() { - this.indexChunk(0, tableIndex, resolve, reject); - }.bind(this)); - }.bind(this)) - .then(function(result) { - return this.updateLastIndexed(tableIndex); - }.bind(this)); -}; - -/** - * Indexes a chunk of 100 rows - * @param {Number} page page to start on - * @param {module:extension/index~TableIndex} tableIndex TableIndex - * @param {Function} resolve function to call when all chunks are indexed - * @param {Function} reject called if there is an error - */ -FeatureTableIndex.prototype.indexChunk = function(page, tableIndex, resolve, reject) { - var rows = this.featureDao.queryForChunk(100, page); - if (rows.length) { - this.progress('Indexing ' + (page * 100) + ' to ' + ((page+1) * 100)); - console.log('Indexing ' + (page * 100) + ' to ' + ((page+1) * 100)); - rows.forEach(function(row) { - var fr = this.featureDao.getRow(row); - this.indexRow(tableIndex, fr.getId(), fr.getGeometry()); - }.bind(this)); - setTimeout(function() { - this.indexChunk(++page, tableIndex, resolve, reject); - }.bind(this)); - } else { - resolve(); - } -} - -/** - * Indexes a row - * @param {module:extension/index~TableIndex} tableIndex TableIndex` - * @param {Number} geomId id of the row - * @param {module:geom/geometryData~GeometryData} geomData GeometryData to index - * @return {Boolean} success - */ -FeatureTableIndex.prototype.indexRow = function(tableIndex, geomId, geomData) { - if (!geomData) return false; - var envelope = geomData.envelope; - if (!envelope) { - var geometry = geomData.geometry; - if (geometry) { - envelope = EnvelopeBuilder.buildEnvelopeWithGeometry(geometry); - } - } - if (envelope) { - var geometryIndex = this.geometryIndexDao.populate(tableIndex, geomId, envelope); - return this.geometryIndexDao.createOrUpdate(geometryIndex); - } else { - return false; - } -}; - -/** - * Update the last time this feature table was indexed - * @param {module:extension/index~TableIndex} tableIndex TableIndex - * @return {Object} update status - */ -FeatureTableIndex.prototype.updateLastIndexed = function(tableIndex) { - if (!tableIndex) { - tableIndex = new TableIndex(); - tableIndex.table_name = this.tableName; - } - tableIndex.last_indexed = new Date().toISOString(); - var updateIndex = this.tableIndexDao.createOrUpdate(tableIndex); - return updateIndex; -} - -/** - * Query the index with the specified bounding box and projection - * @param {module:boundingBox~BoundingBox} boundingBox bounding box to query for - * @param {string} projection projection the boundingBox is in - * @return {Iterable} - */ -FeatureTableIndex.prototype.queryWithBoundingBox = function(boundingBox, projection) { - var projectedBoundingBox = boundingBox.projectBoundingBox(projection, this.featureDao.projection); - var envelope = projectedBoundingBox.buildEnvelope(); - return this.queryWithGeometryEnvelope(envelope); -} - -/** - * Query witha geometry envelope - * @param {Envelope} envelope envelope - * @return {Iterable} - */ -FeatureTableIndex.prototype.queryWithGeometryEnvelope = function(envelope) { - if (this.rtreeIndexed) { - return this.rtreeIndexDao.queryWithGeometryEnvelope(envelope); - } else { - return this.geometryIndexDao.queryWithGeometryEnvelope(envelope); - } -} - - -/** - * Count the index with the specified bounding box and projection - * @param {module:boundingBox~BoundingBox} boundingBox bounding box to query for - * @param {string} projection projection the boundingBox is in - * @return {Number} - */ -FeatureTableIndex.prototype.countWithBoundingBox = function(boundingBox, projection) { - var projectedBoundingBox = boundingBox.projectBoundingBox(projection, this.featureDao.projection); - var envelope = projectedBoundingBox.buildEnvelope(); - return this.countWithGeometryEnvelope(envelope); -}; - -/** - * Count with a geometry envelope - * @param {Envelope} envelope envelope - * @return {Number} - */ -FeatureTableIndex.prototype.countWithGeometryEnvelope = function(envelope) { - if (this.rtreeIndexed) { - return this.rtreeIndexDao.countWithGeometryEnvelope(envelope); - } else { - return this.geometryIndexDao.countWithGeometryEnvelope(envelope); - } -}; - -FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_AUTHOR = 'nga'; -FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_NAME_NO_AUTHOR = 'geometry_index'; -FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_DEFINITION = 'http://ngageoint.github.io/GeoPackage/docs/extensions/geometry-index.html'; - -module.exports = FeatureTableIndex; - -},{"../../core/contents":8,"../../geom/envelopeBuilder":72,"../baseExtension":20,"../index":25,"../rtree":44,"./geometryIndex":27,"./tableIndex":28,"proj4":285,"util":343}],27:[function(require,module,exports){ -/** - * GeometryIndexDao module. - * @module extension/index - */ - -var Dao = require('../../dao/dao') - , TableIndexDao = require('./tableIndex').TableIndexDao - , TableCreator = require('../../db/tableCreator'); - -var util = require('util'); - -/** - * Geometry Index object, for indexing data within user tables - * @class - */ -var GeometryIndex = function() { - - /** - * Name of the table - * @member {String} - */ - this.table_name; - - /** - * Geometry Id column - * @member {Number} - */ - this.geom_id; - - /** - * Min X - * @member {Number} - */ - this.min_x; - - /** - * Max X - * @member {Number} - */ - this.max_x; - - /** - * Min Y - * @member {Number} - */ - this.min_y; - - /** - * Max Y - * @member {Number} - */ - this.max_y; - - /** - * Min Z - * @member {Number} - */ - this.min_z; - - /** - * Max Z - * @member {Number} - */ - this.max_z; - - /** - * Min M - * @member {Number} - */ - this.min_m; - - /** - * Max M - * @member {Number} - */ - this.max_m; -} - -GeometryIndex.prototype.setTableIndex = function(tableIndex) { - this.table_name = tableIndex.table_name; -} - -/** - * Geometry Index Data Access Object - * @class - * @extends {module:dao/dao~Dao} - */ -var GeometryIndexDao = function(geoPackage, featureDao) { - Dao.call(this, geoPackage); - this.featureDao = featureDao; -}; - -util.inherits(GeometryIndexDao, Dao); - -GeometryIndexDao.prototype.createObject = function() { - return new GeometryIndex(); -}; - -/** - * Get the Table Index of the Geometry Index - * - * @param {module:extension/index~GeometryIndex} geometryIndex geometry index - * @return {module:extension/index~TableIndex} - */ -GeometryIndexDao.prototype.getTableIndex = function(geometryIndex) { - var dao = this.geoPackage.getTableIndexDao(); - return dao.queryForId(geometryIndex.tableName); -}; - -/** - * Query by table name - * @param {string} tableName table name - * @return {Iterable} - */ -GeometryIndexDao.prototype.queryForTableName = function(tableName) { - return this.queryForEach(GeometryIndexDao.COLUMN_TABLE_NAME, tableName); -}; - -/** - * Count by table name - * - * @param tableName table name - * - * @return count - */ -/** - * Count by table name - * @param {string} tableName table name - * @return {Number} - */ -GeometryIndexDao.prototype.countByTableName = function(tableName) { - return this.count(GeometryIndexDao.COLUMN_TABLE_NAME, tableName); -}; - -/** - * Populate a new geometry index from an envelope - * - * @param tableIndex table index - * @param geomId geometry id - * @param envelope geometry envelope - * @param callback called with results of the populate - */ -/** - * Populate a new goemetry index from an envelope - * @param {module:extension/index~TableIndex} tableIndex TableIndex - * @param {Number} geometryId id of the geometry - * @param {Object} envelope envelope to store - * @return {module:extension/index~GeometryIndex} - */ -GeometryIndexDao.prototype.populate = function(tableIndex, geometryId, envelope) { - var geometryIndex = new GeometryIndex(); - geometryIndex.setTableIndex(tableIndex); - geometryIndex.geom_id = geometryId; - geometryIndex.min_x = envelope.minX; - geometryIndex.min_y = envelope.minY; - geometryIndex.max_x = envelope.maxX; - geometryIndex.max_y = envelope.maxY; - if (envelope.hasZ) { - geometryIndex.min_z = envelope.minZ; - geometryIndex.max_z = envelope.maxZ; - } - - if (envelope.hasM) { - geometryIndex.min_m = envelope.minM; - geometryIndex.max_m = envelope.maxM; - } - return geometryIndex; -}; - -/** - * Create the GeometryIndex table - * @return {Promise} - */ -GeometryIndexDao.prototype.createTable = function() { - var exists = this.isTableExists(); - if (exists) return Promise.resolve(true); - var tc = new TableCreator(this.geoPackage); - return tc.createGeometryIndex(); -} - -/** - * Query the index with an envelope - * @param {Object} envelope envelope - * @param {Number} envelope.minX min x - * @param {Number} envelope.maxX max x - * @param {Number} envelope.minY min y - * @param {Number} envelope.maxY max y - * @return {Iterable} - */ -GeometryIndexDao.prototype._generateGeometryEnvelopeQuery = function(envelope) { - var tableName = this.featureDao.gpkgTableName; - var where = ''; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_TABLE_NAME, tableName); - where += ' and '; - var minXLessThanMaxX = envelope.minX < envelope.maxX; - if (minXLessThanMaxX) { - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_X, envelope.maxX, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_X, envelope.minX, '>='); - } else { - where += '('; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_X, envelope.maxX, '<='); - where += ' or '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_X, envelope.minX, '>='); - where += ' or '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_X, envelope.minX, '>='); - where += ' or '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_X, envelope.maxX, '<='); - where += ')'; - } - - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_Y, envelope.maxY, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_Y, envelope.minY, '>='); - - var whereArgs = [tableName, envelope.maxX, envelope.minX]; - if (!minXLessThanMaxX) { - whereArgs.push(envelope.minX, envelope.maxX); - } - whereArgs.push(envelope.maxY, envelope.minY); - if (envelope.hasZ) { - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_Z, envelope.minZ, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_Z, envelope.maxZ, '>='); - whereArgs.push(envelope.maxZ, envelope.minZ); - } - - if (envelope.hasM) { - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MIN_M, envelope.minM, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(GeometryIndexDao.COLUMN_MAX_M, envelope.maxM, '>='); - whereArgs.push(envelope.maxM, envelope.minM); - } - return { - join: 'inner join "' + tableName + '" on "' + tableName + '".' + this.featureDao.idColumns[0] + ' = ' + GeometryIndexDao.COLUMN_GEOM_ID, - where, - whereArgs, - tableNameArr: ['"' + tableName + '".*'] - }; -}; - -GeometryIndexDao.prototype.queryWithGeometryEnvelope = function(envelope) { - var result = this._generateGeometryEnvelopeQuery(envelope); - return this.queryJoinWhereWithArgs(result.join, result.where, result.whereArgs, result.tableNameArr); -}; - -GeometryIndexDao.prototype.countWithGeometryEnvelope = function(envelope) { - var result = this._generateGeometryEnvelopeQuery(envelope); - return this.countJoinWhereWithArgs(result.join, result.where, result.whereArgs, result.tableNameArr); -}; - -GeometryIndexDao.TABLE_NAME = "nga_geometry_index"; -GeometryIndexDao.COLUMN_TABLE_NAME = GeometryIndexDao.TABLE_NAME + ".table_name"; -GeometryIndexDao.COLUMN_GEOM_ID = GeometryIndexDao.TABLE_NAME + ".geom_id"; -GeometryIndexDao.COLUMN_MIN_X = GeometryIndexDao.TABLE_NAME + ".min_x"; -GeometryIndexDao.COLUMN_MAX_X = GeometryIndexDao.TABLE_NAME + ".max_x"; -GeometryIndexDao.COLUMN_MIN_Y = GeometryIndexDao.TABLE_NAME + ".min_y"; -GeometryIndexDao.COLUMN_MAX_Y = GeometryIndexDao.TABLE_NAME + ".max_y"; -GeometryIndexDao.COLUMN_MIN_Z = GeometryIndexDao.TABLE_NAME + ".min_z"; -GeometryIndexDao.COLUMN_MAX_Z = GeometryIndexDao.TABLE_NAME + ".max_z"; -GeometryIndexDao.COLUMN_MIN_M = GeometryIndexDao.TABLE_NAME + ".min_m"; -GeometryIndexDao.COLUMN_MAX_M = GeometryIndexDao.TABLE_NAME + ".max_m"; - -GeometryIndexDao.prototype.gpkgTableName = GeometryIndexDao.TABLE_NAME; -GeometryIndexDao.prototype.idColumns = ['table_name', 'geom_id']; - -module.exports.GeometryIndexDao = GeometryIndexDao; -module.exports.GeometryIndex = GeometryIndex; - -},{"../../dao/dao":11,"../../db/tableCreator":19,"./tableIndex":28,"util":343}],28:[function(require,module,exports){ -/** - * TableIndexDao module. - * @module extension/index - */ - -var Dao = require('../../dao/dao') - , TableCreator = require('../../db/tableCreator'); - -var util = require('util'); - -/** - * Table Index object, for indexing data within user tables - * @class TableIndex - */ -var TableIndex = function() { - - /** - * Name of the table - * @member {String} - */ - this.table_name; - - /** - * Last indexed date - * @member {String} - */ - this.last_indexed; -} - -/** - * Table Index Data Access Object - * @class - * @extends {module:dao/dao~Dao} - * @param {module:geoPackage~GeoPackage} geoPackage The GeoPackage object - */ -var TableIndexDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(TableIndexDao, Dao); - -/** - * Create a new TableIndex object - * @return {module:extension/index~TableIndex} - */ -TableIndexDao.prototype.createObject = function() { - return new TableIndex(); -}; - -TableIndexDao.prototype.getGeometryIndices = function(tableIndex) { - -}; - -TableIndexDao.prototype.getGeometryIndexCount = function(tableIndex) { - -}; - -/** - * Creates the tables necessary - * @return {Promise} - */ -TableIndexDao.prototype.createTable = function() { - var tc = new TableCreator(this.geoPackage); - return tc.createTableIndex(); -} - - -TableIndexDao.TABLE_NAME = "nga_table_index"; -TableIndexDao.COLUMN_TABLE_NAME = "table_name"; -TableIndexDao.COLUMN_LAST_INDEXED = "last_indexed"; - -TableIndexDao.prototype.gpkgTableName = TableIndexDao.TABLE_NAME; -TableIndexDao.prototype.idColumns = [TableIndexDao.COLUMN_TABLE_NAME]; - -module.exports.TableIndexDao = TableIndexDao; -module.exports.TableIndex = TableIndex; - -},{"../../dao/dao":11,"../../db/tableCreator":19,"util":343}],29:[function(require,module,exports){ -/** - * MetadataExtension module. - * @module extension/metadata - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension; - -var util = require('util'); - -/** - * Metadata extension - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @class - * @extends {module:extension/baseExtension~BaseExtension} - */ -var MetadataExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - - this.extensionName = MetadataExtension.EXTENSION_NAME; - - this.extensionDefinition = MetadataExtension.EXTENSION_Metadata_DEFINITION; -} - -util.inherits(MetadataExtension, BaseExtension); - -/** - * Get or create the metadata extension - * @return {Promise} - */ -MetadataExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(this.extensionName, null, null, this.extensionDefinition, Extension.READ_WRITE); -}; - -MetadataExtension.EXTENSION_NAME = 'gpkg_metadata'; -MetadataExtension.EXTENSION_Metadata_AUTHOR = 'gpkg'; -MetadataExtension.EXTENSION_Metadata_NAME_NO_AUTHOR = 'metadata'; -MetadataExtension.EXTENSION_Metadata_DEFINITION = 'http://www.geopackage.org/spec/#extension_metadata'; - -module.exports.MetadataExtension = MetadataExtension; - -},{"../.":25,"../baseExtension":20,"util":343}],30:[function(require,module,exports){ -/** - * @module extension/relatedTables - */ - -/** - * Dublin Core Metadata Initiative term types - * @class - */ -function DublinCoreType() {} - -module.exports = DublinCoreType; - -/** - * A point or period of time associated with an event in the lifecycle of - * the resource. - * @type {Object} - */ -DublinCoreType.DATE = { - name: 'date' -}; - -/** - * An account of the resource. - * @type {Object} - */ -DublinCoreType.DESCRIPTION = { - name: 'description' -}; - -/** - * The file format, physical medium, or dimensions of the resource. - * @type {Object} - */ -DublinCoreType.FORMAT = { - name: 'format', - synonyms: ['content_type'] -}; - -/** - * An unambiguous reference to the resource within a given context. - * @type {Object} - */ -DublinCoreType.IDENTIFIER = { - name: 'identifier', - synonyms: ['id'] -}; - -/** - * A related resource from which the described resource is derived. - * @type {Object} - */ -DublinCoreType.SOURCE = { - name: 'source' -}; - -/** - * A name given to the resource. - * @type {Object} - */ -DublinCoreType.TITLE = { - name: 'title' -}; - -/** - * Get the Dublin Core Type from the name - * @param {string} name name - * @return {module:extension/relatedTables~DublinCoreType} - */ -DublinCoreType.fromName = function(name) { - for (var prop in module.exports) { - var type = module.exports[prop]; - if (type.name === name) { - return type; - } - } - for (var prop in module.exports) { - var type = module.exports[prop]; - if (type.synonyms) { - for (var i = 0; i < type.synonyms.length; i++) { - if (type.synonyms[i] === name) { - return type; - } - } - } - } -} - -},{}],31:[function(require,module,exports){ -/** - * @module extension/relatedTables - */ - -var Dao = require('../../dao/dao') - , ColumnValues = require('../../dao/columnValues'); - -var util = require('util'); - -/** - * Describes the relationships between a base table, a related data table, and a - * mapping table - * @class ExtendedRelation - */ -var ExtendedRelation = function() { - - /** - * Autoincrement primary key - * @member {Number} - */ - this.id; - - /** - * Name of the table containing the base data (e.g., features) to relate - * @member {String} - */ - this.base_table_name; - - /** - * Name of the primary key column in base_table_name - * @member {String} - */ - this.base_primary_column; - - /** - * Name of the table containing the related content - * @member {String} - */ - this.related_table_name; - - /** - * Name of the primary key column in related_table_name - * @member {String} - */ - this.related_primary_column; - - /** - * Name (profile) of the relationship - * @member {String} - */ - this.relation_name; - - /** - * Name of a mapping table - * @member {String} - */ - this.mapping_table_name; -} - -/** - * Extended Relations Data Access Object - * @class ExtendedRelationDao - * @extends {module:dao/dao~Dao} - */ -var ExtendedRelationDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(ExtendedRelationDao, Dao); - -/** - * Create a {module:extension/relatedTables~ExtendedRelation} object - * @return {module:extension/relatedTables~ExtendedRelation} - */ -ExtendedRelationDao.prototype.createObject = function() { - return new ExtendedRelation(); -}; - -/** - * Create the necessary tables for this dao - * @return {Promise} - */ -ExtendedRelationDao.prototype.createTable = function() { - var tc = this.geoPackage.getTableCreator(); - return tc.createExtendedRelations(); -} - -/** - * Get all the base table names - * @return {string[]} - */ -ExtendedRelationDao.prototype.getBaseTables = function() { - var baseTables = []; - var baseTableColumns = this.queryForColumns('base_table_name'); - for (var i = 0; i < baseTableColumns.length; i++) { - baseTables.push(baseTableColumns[i].base_table_name); - } - return baseTables; -}; - -/** - * Get all the related table names - * @return {string[]} - */ -ExtendedRelationDao.prototype.getRelatedTables = function() { - var relatedTables = []; - var relatedTableColumns = this.queryForColumns('related_table_name'); - for (var i = 0; i < relatedTableColumns.length; i++) { - relatedTables.push(relatedTableColumns[i].related_table_name); - } - return relatedTables; -}; - -/** - * Get all relations for the given base table name - * @param {string} baseTable base table name - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.getBaseTableRelations = function(baseTable) { - return this.queryForAllEq(ExtendedRelationDao.COLUMN_BASE_TABLE_NAME, baseTable); -} - -/** - * Get all relations for the given related table name - * @param {string} relatedTable related table name - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.getRelatedTableRelations = function(relatedTable) { - return this.queryForAllEq(ExtendedRelationDao.COLUMN_RELATED_TABLE_NAME, relatedTable); -} - -/** - * Get all relations for the base table with the relation name - * @param {string} baseTable base table name - * @param {string} name relation name - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.getBaseTableRelationsWithName = function(baseTable, name) { - var fields = new ColumnValues(); - fields.addColumn(ExtendedRelationDao.COLUMN_BASE_TABLE_NAME, baseTable); - fields.addColumn(ExtendedRelationDao.COLUMN_RELATION_NAME, name); - var where = this.buildWhere(fields, 'and'); - var whereArgs = this.buildWhereArgs(fields); - return this.queryForAll(where, whereArgs); -} - -/** - * Get all relations to the table. Returns relations where the table is the base table and relations where the table is the related table. - * @param {string} table table name to query for - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.getTableRelations = function(table) { - var fields = new ColumnValues(); - fields.addColumn(ExtendedRelationDao.COLUMN_BASE_TABLE_NAME, table); - fields.addColumn(ExtendedRelationDao.COLUMN_RELATED_TABLE_NAME, table); - var where = this.buildWhere(fields, 'or'); - var whereArgs = this.buildWhereArgs(fields); - return this.queryForAll(where, whereArgs); -} - -/** - * Gets all relationships in the GeoPackage with an optional base table name and an optional base id - * @param {String} [baseTableName] base table name - * @param {String} [relatedTableName] related table name - * @param {String} [mappingTableName] mapping table name - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.getRelations = function(baseTableName, relatedTableName, mappingTableName) { - var fields = new ColumnValues(); - fields.addColumn(ExtendedRelationDao.COLUMN_BASE_TABLE_NAME, baseTableName); - fields.addColumn(ExtendedRelationDao.COLUMN_RELATED_TABLE_NAME, relatedTableName); - fields.addColumn(ExtendedRelationDao.COLUMN_MAPPING_TABLE_NAME, mappingTableName); - var where = this.buildWhereLike(fields, 'and'); - var whereArgs = this.buildWhereArgs(fields); - return this.queryForAll(where, whereArgs); -}; - -/** - * Get all relations by the mapping table name - * @param {string} mappingTableName name of the mapping table - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -ExtendedRelationDao.prototype.queryByMappingTableName = function(mappingTableName) { - var fields = new ColumnValues(); - fields.addColumn(ExtendedRelationDao.COLUMN_MAPPING_TABLE_NAME, mappingTableName); - var where = this.buildWhere(fields, 'and'); - var whereArgs = this.buildWhereArgs(fields); - return this.queryForAll(where, whereArgs); -} - -ExtendedRelationDao.TABLE_NAME = 'gpkgext_relations'; -ExtendedRelationDao.COLUMN_ID = ExtendedRelationDao.TABLE_NAME + '.id'; -ExtendedRelationDao.COLUMN_BASE_TABLE_NAME = ExtendedRelationDao.TABLE_NAME + '.base_table_name'; -ExtendedRelationDao.COLUMN_BASE_PRIMARY_COLUMN = ExtendedRelationDao.TABLE_NAME + '.base_primary_column'; -ExtendedRelationDao.COLUMN_RELATED_TABLE_NAME = ExtendedRelationDao.TABLE_NAME + '.related_table_name'; -ExtendedRelationDao.COLUMN_RELATED_PRIMARY_COLUMN = ExtendedRelationDao.TABLE_NAME + '.related_primary_column'; -ExtendedRelationDao.COLUMN_RELATION_NAME = ExtendedRelationDao.TABLE_NAME + '.relation_name'; -ExtendedRelationDao.COLUMN_MAPPING_TABLE_NAME = ExtendedRelationDao.TABLE_NAME + '.mapping_table_name'; - -ExtendedRelationDao.prototype.gpkgTableName = ExtendedRelationDao.TABLE_NAME; -ExtendedRelationDao.prototype.idColumns = ['id']; - -module.exports.ExtendedRelationDao = ExtendedRelationDao; -module.exports.ExtendedRelation = ExtendedRelation; - -},{"../../dao/columnValues":10,"../../dao/dao":11,"util":343}],32:[function(require,module,exports){ -/** - * RelatedTablesExtension module. - * @module extension/relatedTables - * @see module:extension/BaseExtension - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension - , ColumnValues = require('../../dao/columnValues') - , OptionBuilder = require('../../optionBuilder') - , ExtendedRelationDao = require('./extendedRelation').ExtendedRelationDao - , ExtendedRelation = require('./extendedRelation').ExtendedRelation - , MediaDao = require('./mediaDao') - , MediaTable = require('./mediaTable') - , SimpleAttributesDao = require('./simpleAttributesDao') - , SimpleAttributesTable = require('./simpleAttributesTable') - , UserMappingTable = require('./userMappingTable') - , UserMappingDao = require('./userMappingDao') - , UserCustomDao = require('../../user/custom/userCustomDao') - , UserDao = require('../../user/userDao') - , UserTableReader = require('../../user/userTableReader') - , RelationType = require('./relationType') - , ContentsDao = require('../../core/contents').ContentsDao - , Contents = require('../../core/contents').Contents - , GeometryColumnsDao = require('../../features/columns').GeometryColumnsDao; - -var util = require('util'); - -/** - * Related Tables Extension - * @param {module:geoPackage~GeoPackage} geoPackage the GeoPackage object - * @class - * @extends {module:extension/baseExtension~BaseExtension} - */ -var RelatedTablesExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - this.extendedRelationDao = geoPackage.getExtendedRelationDao(); -} - -util.inherits(RelatedTablesExtension, BaseExtension); - -/** - * Get or create the extension - * @return {Promise} - */ -RelatedTablesExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(RelatedTablesExtension.EXTENSION_NAME, 'gpkgext_relations', undefined, RelatedTablesExtension.EXTENSION_RELATED_TABLES_DEFINITION, Extension.READ_WRITE) - .then(function() { - return this.extendedRelationDao.createTable(); - }.bind(this)); -}; - -/** - * Get or create the extension for the mapping table - * @param {string} mappingTableName user mapping table - * @return {Promise} - */ -RelatedTablesExtension.prototype.getOrCreateMappingTable = function(mappingTableName) { - return this.getOrCreateExtension() - .then(function() { - this.getOrCreate(RelatedTablesExtension.EXTENSION_NAME, mappingTableName, undefined, RelatedTablesExtension.EXTENSION_RELATED_TABLES_DEFINITION, Extension.READ_WRITE); - }.bind(this)); -} - -/** - * Set the contents in the UserRelatedTable - * @param {module:extension/relatedTables~UserRelatedTable} userRelatedTable user related table - */ -RelatedTablesExtension.prototype.setContents = function(userRelatedTable) { - var contents = this.geoPackage.getContentsDao().queryForId(userRelatedTable.table_name); - userRelatedTable.setContents(contents); -} - -/** - * Reads the user table and creates a UserCustomDao - * @param {string} tableName table name to reader - * @param {string[]} requiredColumns required columns - * @return {module:user/custom~UserCustomDao} - */ -RelatedTablesExtension.prototype.getUserDao = function(tableName, requiredColumns) { - return UserCustomDao.readTable(this.geoPackage, tableName, requiredColumns); -} - -/** - * Gets the UserMappingDao from the mapping table name - * @param {string|module:extension/relatedTables~ExtendedRelation} tableName user mapping table name or ExtendedRelation object - * @return {module:extension/relatedTables~UserMappingDao} - */ -RelatedTablesExtension.prototype.getMappingDao = function(tableName) { - if (tableName.mapping_table_name) { - tableName = tableName.mapping_table_name; - } - return new UserMappingDao(this.getUserDao(tableName, UserMappingTable.requiredColumns()), this.geoPackage); -} - -/** - * Gets all relationships in the GeoPackage with an optional base table name and an optional base id - * @param {string} [baseTableName] base table name - * @return {module:extension/relatedTables~ExtendedRelation[]} - */ -RelatedTablesExtension.prototype.getRelationships = function(baseTableName) { - if (this.extendedRelationDao.isTableExists()) { - if (baseTableName) { - return this.geoPackage.getExtendedRelationDao().getBaseTableRelations(baseTableName); - } - return this.extendedRelationDao.queryForAll(); - } - return []; -} - -/** - * Gets all relationships in the GeoPackage with an optional base table name and an optional base id - * @param {String} [baseTableName] base table name - * @param {String} [relatedTableName] related table name - * @param {String} [mappingTableName] mapping table name - * @return {Boolean} - */ -RelatedTablesExtension.prototype.hasRelations = function(baseTableName, relatedTableName, mappingTableName) { - var relations = []; - if (this.extendedRelationDao.isTableExists()) { - relations = this.extendedRelationDao.getRelations(baseTableName, relatedTableName, mappingTableName); - } - return relations; -}; - -RelatedTablesExtension.prototype.getRelatedRows = function(baseTableName, baseId) { - var relationships = this.getRelationships(baseTableName); - for (var i = 0; i < relationships.length; i++) { - var relation = relationships[i]; - var mappingRows = this.getMappingRowsForBase(relation.mapping_table_name, baseId); - relation.mappingRows = mappingRows; - var userDao; - // TODO do this for all known types - if (relation.relation_name === 'media') { - userDao = MediaDao.readTable(this.geoPackage, relation.related_table_name); - } else { - userDao = UserDao.readTable(this.geoPackage, relation.related_table_name); - } - for (var m = 0; m < mappingRows.length; m++) { - var mappingRow = mappingRows[m]; - mappingRow.row = userDao.queryForId(mappingRow.related_id); - } - } - return relationships; -} - -RelatedTablesExtension.RelationshipBuilder = function() { - return OptionBuilder([ - 'baseTableName', - 'relatedTableName', - 'userMappingTable', - 'mappingTableName', - 'relationName', - 'relationAuthor', - 'relationType', - 'relatedTable' - ]); -} -/** - * Convience object to build a Relationship object for querying and adding - * @typedef {Object} module:extension/relatedTables~Relationship - * @property {module:extension/relatedTables~RelationType} relationType type of relationship - * @property {string} baseTableName base table name - * @property {string} relatedTableName related table name - * @property {string} relationAuthor relationship author - * @property {string} mappingTableName mapping table name - * @property {module:extension/relatedTables~UserMappingTable} userMappingTable UserMappingTable - * @property {module:extension/relatedTables~UserRelatedTable} relatedTable UserRelatedTable - */ -RelatedTablesExtension.prototype.getRelationshipBuilder = function() { - return RelatedTablesExtension.RelationshipBuilder(); -} - -/** - * Adds a relationship to the GeoPackage - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addRelationship = function(relationship) { - var extendedRelation = this.extendedRelationDao.createObject(); - var userMappingTable = relationship.userMappingTable; - if (relationship.hasOwnProperty('base_table_name')) { - extendedRelation = relationship; - userMappingTable = UserMappingTable.create(extendedRelation.mapping_table_name); - } else { - if (relationship.relationType) { - relationship.relationName = relationship.relationType.name; - } - if (relationship.relationAuthor) { - relationship.relationName = this.buildRelationName(relationship.relationAuthor, relationship.relationName); - } - if (relationship.mappingTableName) { - userMappingTable = UserMappingTable.create(relationship.mappingTableName); - } - - if (relationship.relatedTable) { - this.createRelatedTable(relationship.relatedTable); - relationship.relatedTableName = relationship.relatedTable.table_name; - relationship.relationName = relationship.relatedTable.relation_name; - } - - extendedRelation.base_table_name = relationship.baseTableName; - extendedRelation.base_primary_column = this.getPrimaryKeyColumnName(relationship.baseTableName); - extendedRelation.related_table_name = relationship.relatedTableName; - extendedRelation.related_primary_column = this.getPrimaryKeyColumnName(relationship.relatedTableName); - extendedRelation.mapping_table_name = userMappingTable.table_name; - extendedRelation.relation_name = relationship.relationName; - } - - if (!this.validateRelationship(extendedRelation.base_table_name, extendedRelation.related_table_name, extendedRelation.relation_name)) { - return Promise.resolve(false); - } - return this.createUserMappingTable(userMappingTable) - .then(function() { - var mappingTableRelations = this.extendedRelationDao.queryByMappingTableName(extendedRelation.mapping_table_name); - if (mappingTableRelations.length) { - return mappingTableRelations[0]; - } - this.extendedRelationDao.create(extendedRelation); - return extendedRelation; - }.bind(this)); -} - -/** - * Get the primary key column name from the specified table - * @param {string} tableName table name - * @return {string} - */ -RelatedTablesExtension.prototype.getPrimaryKeyColumnName = function(tableName) { - var reader = new UserTableReader(tableName); - var table = reader.readTable(this.geoPackage.getDatabase()); - return table.getPkColumn().name; -} - -/** - * Adds a features relationship between the base feature and related feature - * table. Creates a default user mapping table if needed. - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addFeaturesRelationship = function(relationship) { - if (relationship.hasOwnProperty('relation_name')) { - relationship.relation_name = relationship.relation_name || RelationType.FEATURES.name; - } else { - relationship.relationType = RelationType.FEATURES; - } - return this.addRelationship(relationship); -} - -/** - * Adds a tiles relationship between the base table and related tile - * table. Creates a default user mapping table if needed. - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addTilesRelationship = function(relationship) { - if (relationship.hasOwnProperty('relation_name')) { - relationship.relation_name = relationship.relation_name || RelationType.TILES.name; - } else { - relationship.relationType = RelationType.TILES; - } - return this.addRelationship(relationship); -} - -/** - * Adds an attributes relationship between the base table and related attribute - * table. Creates a default user mapping table if needed. - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addAttributesRelationship = function(relationship) { - if (relationship.hasOwnProperty('relation_name')) { - relationship.relation_name = relationship.relation_name || RelationType.ATTRIBUTES.name; - } else { - relationship.relationType = RelationType.ATTRIBUTES; - } - return this.addRelationship(relationship); -} - -/** - * Adds a simple attributes relationship between the base table and user - * simple attributes related table. Creates a default user mapping table and - * the simple attributes table if needed. - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addSimpleAttributesRelationship = function(relationship) { - if (relationship.hasOwnProperty('relation_name')) { - relationship.relation_name = relationship.relation_name || RelationType.SIMPLE_ATTRIBUTES.name; - } else { - relationship.relationType = RelationType.SIMPLE_ATTRIBUTES; - } - return this.addRelationship(relationship); -} - -/** - * Adds a media relationship between the base table and user media related - * table. Creates a default user mapping table and the media table if - * needed. - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to add - * @return {Promise} - */ -RelatedTablesExtension.prototype.addMediaRelationship = function(relationship) { - if (relationship.hasOwnProperty('relation_name')) { - relationship.relation_name = relationship.relation_name || RelationType.MEDIA.name; - } else { - relationship.relationType = RelationType.MEDIA; - } - return this.addRelationship(relationship); -} - -/** - * Remove a specific relationship from the GeoPackage - * @param {module:extension/relatedTables~Relationship|module:extension/relatedTables~ExtendedRelation} relationship relationship to remove - * @return {Number} number of relationships removed - */ -RelatedTablesExtension.prototype.removeRelationship = function(relationship) { - // this is an ExtendedRelation - if (relationship.hasOwnProperty('base_table_name')) { - relationship.baseTableName = relationship.base_table_name; - relationship.relatedTableName = relationship.related_table_name; - relationship.relationName = relationship.relation_name; - relationship.userMappingTable = relationship.mapping_table_name; - } - - if (relationship.relationType) { - relationship.relationName = relationship.relationType.name; - } - if (relationship.relationAuthor) { - relationship.relationName = this.buildRelationName(relationship.relationAuthor, relationship.relationName); - } - - if (this.extendedRelationDao.isTableExists()) { - - var values = new ColumnValues(); - values.addColumn(ExtendedRelationDao.COLUMN_BASE_TABLE_NAME, relationship.baseTableName); - values.addColumn(ExtendedRelationDao.COLUMN_RELATED_TABLE_NAME, relationship.relatedTableName); - values.addColumn(ExtendedRelationDao.COLUMN_RELATION_NAME, relationship.relationName); - - var iterator = this.extendedRelationDao.queryForFieldValues(values); - - var tablesToDelete = []; - for (var extendedRelation of iterator) { - tablesToDelete.push(extendedRelation.mapping_table_name); - } - tablesToDelete.forEach(function(table) { - this.geoPackage.deleteTable(table); - }.bind(this)); - this.extensionsDao.deleteByExtensionAndTableName(RelatedTablesExtension.EXTENSION_NAME, relationship.userMappingTable); - return this.extendedRelationDao.delete(extendedRelation); - } - - return 0; -} - -/** - * Create a default user mapping table and extension row if either does not - * exist. When not created, there is no guarantee that an existing table has - * the same schema as the provided tabled. - * @param {string|module:extension/relatedTables~UserMappingTable} userMappingTableOrName user mapping table or name - * @return {Promise} - */ -RelatedTablesExtension.prototype.createUserMappingTable = function(userMappingTableOrName) { - var userMappingTable = userMappingTableOrName; - if (typeof userMappingTableOrName === 'string') { - userMappingTable = UserMappingTable.create(userMappingTableOrName); - } - return this.getOrCreateMappingTable(userMappingTable.table_name) - .then(function(){ - if (!this.geoPackage.isTable(userMappingTable.table_name)) { - return this.geoPackage.tableCreator.createUserTable(userMappingTable); - } - return true; - }.bind(this)); -} - -/** - * Create a user related table if it does not exist. When not created, there - * is no guarantee that an existing table has the same schema as the - * provided tabled. - * @param {module:extension/relatedTables~UserRelatedTable} relatedTable user related table - * @return {Boolean} true if the table now exists - */ -RelatedTablesExtension.prototype.createRelatedTable = function(relatedTable) { - if (!this.geoPackage.isTable(relatedTable.table_name)) { - this.geoPackage.tableCreator.createUserTable(relatedTable); - - var contents = new Contents(); - contents.table_name = relatedTable.table_name; - contents.data_type = relatedTable.data_type; - contents.identifier = relatedTable.table_name; - this.geoPackage.getContentsDao().create(contents); - var refreshed = this.geoPackage.getContentsDao().refresh(contents); - relatedTable.setContents(refreshed); - } - return true; -} - -/** - * Validate that the relation name is valid between the base and related tables - * @param {string} baseTableName base table name - * @param {string} relatedTableName related table name - * @param {string} relationName relation name - * @return {Boolean} - */ -RelatedTablesExtension.prototype.validateRelationship = function(baseTableName, relatedTableName, relationName) { - // Verify the base and related tables exist - if (!this.geoPackage.isTable(baseTableName)) { - console.log('Base relationship table does not exist: ' + baseTableName + ', Relation: ' + relationName); - return false; - } - if (!this.geoPackage.isTable(relatedTableName)) { - console.log('Related relationship table does not exist: ' + relatedTableName + ', Relation: ' + relationName); - return false; - } - // Verify spec defined relation types - var relationType = RelationType.fromName(relationName); - if (relationType) { - if (!this.geoPackage.isTableType(relationType.dataType, relatedTableName)) { - console.log('The related table must be a ' + relationType.dataType + ' table. Related Table: ' + relatedTableName + ', Type: ' + this.geoPackage.getTableType(relatedTableName)); - return false; - } - return true; - } - return true; -} - -/** - * Link related Ids - * @param {string} baseTableName base table name - * @param {Number} baseId base row id - * @param {string} relatedTableName related table name - * @param {Number} relatedId related row id - * @param {module:extension/relatedTables~RelationType} relationType relation type - * @return {Promise} - */ -RelatedTablesExtension.prototype.linkRelatedIds = function(baseTableName, baseId, relatedTableName, relatedId, relationType) { - var baseDao = UserDao.readTable(this.geoPackage, baseTableName); - var relatedDao = UserDao.readTable(this.geoPackage, relatedTableName); - - var baseRow = baseDao.queryForId(baseId); - var relatedRow = relatedDao.queryForId(relatedId); - - return baseDao.linkRelatedRow(baseRow, relatedRow, relationType); -} - -/** - * Get the related id mappings for the base id - * @param {string} mappingTableName mapping table name - * @param {Number} baseId base id - * @return {Number[]} ids of related items - */ -RelatedTablesExtension.prototype.getMappingsForBase = function(mappingTableName, baseId) { - var mappingDao = this.getMappingDao(mappingTableName); - var results = mappingDao.queryByBaseId(baseId); - var relatedIds = []; - for (var i = 0; i < results.length; i++) { - var row = mappingDao.getUserMappingRow(results[i]); - relatedIds.push(row.getRelatedId()); - } - return relatedIds; -} - -/** - * Get the related id mapping rows for the base id - * @param {string} mappingTableName mapping table name - * @param {Number} baseId base id - * @return {module:extension/relatedTables~UserMappingRow[]} user mapping rows - */ -RelatedTablesExtension.prototype.getMappingRowsForBase = function(mappingTableName, baseId) { - var mappingDao = this.getMappingDao(mappingTableName); - return mappingDao.queryByBaseId(baseId); -} - -/** - * Get the base id mappings for the base id - * @param {string} mappingTableName mapping table name - * @param {Number} relatedId related id - * @return {Number[]} ids of base items - */ -RelatedTablesExtension.prototype.getMappingsForRelated = function(mappingTableName, relatedId) { - var mappingDao = this.getMappingDao(mappingTableName); - var results = mappingDao.queryByRelatedId(relatedId); - var baseIds = []; - for (var i = 0; i < results.length; i++) { - var row = mappingDao.getUserMappingRow(results[i]); - baseIds.push(row.getBaseId()); - } - return baseIds; -} - -/** - * Returns a {module:extension/relatedTables~MediaDao} from the table specified - * @param {string|module:extension/relatedTables~MediaTable} tableName either a table name or a MediaTable - * @return {module:extension/relatedTables~MediaDao} - */ -RelatedTablesExtension.prototype.getMediaDao = function(tableName) { - var table; - if (tableName.TABLE_TYPE && tableName.TABLE_TYPE === 'media') { - table = tableName; - } else { - if (tableName.related_table_name) { - tableName = tableName.related_table_name; - } - var reader = new UserTableReader(tableName, MediaTable.requiredColumns()); - var userTable = reader.readTable(this.geoPackage.getDatabase()); - table = new MediaTable(userTable.table_name, userTable.columns, MediaTable.requiredColumns()); - table.setContents(this.geoPackage.getContentsDao().queryForId(table.table_name)); - } - - return new MediaDao(this.geoPackage, table); -} - -/** - * Returns a {module:extension/relatedTables~SimpleAttributesDao} from the table specified - * @param {string|module:extension/relatedTables~SimpleAttributesDao} tableName either a table name or a SimpleAttributesDao - * @return {module:extension/relatedTables~SimpleAttributesDao} - */ -RelatedTablesExtension.prototype.getSimpleAttributesDao = function(tableName) { - var table; - if (tableName.TABLE_TYPE && tableName.TABLE_TYPE === 'simple_attributes') { - table = tableName; - } else { - if (tableName.related_table_name) { - tableName = tableName.related_table_name; - } - var reader = new UserTableReader(tableName, SimpleAttributesTable.requiredColumns()); - var userTable = reader.readTable(this.geoPackage.getDatabase()); - table = new SimpleAttributesTable(userTable.table_name, userTable.columns, SimpleAttributesTable.requiredColumns()); - table.setContents(this.geoPackage.getContentsDao().queryForId(table.table_name)); - } - - return new SimpleAttributesDao(this.geoPackage, table); -} - -/** - * Builds the custom relation name with the author - * @param {string} author author - * @param {string} name name - * @return {string} - */ -RelatedTablesExtension.prototype.buildRelationName = function(author, name) { - return 'x-' + author + '_' + name; -} - -/** - * Remove all traces of the extension - */ -RelatedTablesExtension.prototype.removeExtension = function() { - if (this.extendedRelationDao.isTableExists()) { - var extendedRelations = this.extendedRelationDao.queryForAll(); - extendedRelations.forEach(function(relation) { - this.geoPackage.deleteTable(relation.mapping_table_name); - }.bind(this)); - this.geoPackage.deleteTable(ExtendedRelationDao.TABLE_NAME); - } - if (this.extensionsDao.isTableExists()) { - this.extensionsDao.deleteByExtension(RelatedTablesExtension.EXTENSION_NAME); - } -} - -/** - * Determine if the GeoPackage has the extension - * @param {string} [mappingTableName] mapping table name to check, if not specified, this checks for any mapping table name - * @return {Boolean} - */ -RelatedTablesExtension.prototype.has = function(mappingTableName) { - if (mappingTableName) { - return this.hasExtension(RelatedTablesExtension.EXTENSION_NAME, ExtendedRelationDao.TABLE_NAME) - && this.hasExtension(RelatedTablesExtension.EXTENSION_NAME, mappingTableName); - } - return this.hasExtension(RelatedTablesExtension.EXTENSION_NAME, ExtendedRelationDao.TABLE_NAME); -} - -RelatedTablesExtension.EXTENSION_NAME = 'related_tables'; -RelatedTablesExtension.EXTENSION_RELATED_TABLES_AUTHOR = 'gpkg'; -RelatedTablesExtension.EXTENSION_RELATED_TABLES_NAME_NO_AUTHOR = 'related_tables'; -RelatedTablesExtension.EXTENSION_RELATED_TABLES_DEFINITION = 'TBD'; - -module.exports = RelatedTablesExtension; - -},{"../.":25,"../../core/contents":8,"../../dao/columnValues":10,"../../features/columns":64,"../../optionBuilder":76,"../../user/custom/userCustomDao":102,"../../user/userDao":106,"../../user/userTableReader":109,"../baseExtension":20,"./extendedRelation":31,"./mediaDao":33,"./mediaTable":35,"./relationType":36,"./simpleAttributesDao":37,"./simpleAttributesTable":39,"./userMappingDao":40,"./userMappingTable":42,"util":343}],33:[function(require,module,exports){ -/** - * MediaDao module. - * @module extension/relatedTables - */ - -var MediaRow = require('./mediaRow') - , MediaTable = require('./mediaTable') - , Dao = require('../../dao/dao') - , UserDao = require('../../user/userDao') - , UserTableReader = require('../../user/userTableReader'); - -var util = require('util'); - -/** - * User Media DAO for reading user media data tables - * @class - * @extends {module:user/userDao~UserDao} - * @param {module:db/geoPackageConnection~GeoPackageConnection} connection connection - * @param {string} table table name - */ -var MediaDao = function(geoPackage, table) { - UserDao.call(this, geoPackage, table); - this.mediaTable = table; -} - -util.inherits(MediaDao, UserDao); - -/** - * Reads the table specified from the geopackage - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - * @param {string} tableName table name - * @param {string[]} requiredColumns required columns - * @return {module:user/userDao~UserDao} - */ -MediaDao.readTable = function(geoPackage, tableName) { - var reader = new UserTableReader(tableName); - var userTable = reader.readTable(geoPackage.getDatabase()); - return new MediaDao(geoPackage, userTable); -} - -/** - * Create a new media row - * @return {module:extension/relatedTables~MediaRow} - */ -MediaDao.prototype.newRow = function() { - return new MediaRow(this.mediaTable); -} - -/** - * Create a media row with the column types and values - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/relatedTables~MediaRow} media row - */ -MediaDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new MediaRow(this.mediaTable, columnTypes, values); -}; - -/** - * Gets the media table - * @return {module:extension/relatedTables~MediaTable} - */ -MediaDao.prototype.getTable = function() { - return this.mediaTable; -} - -module.exports = MediaDao; - -},{"../../dao/dao":11,"../../user/userDao":106,"../../user/userTableReader":109,"./mediaRow":34,"./mediaTable":35,"util":343}],34:[function(require,module,exports){ -/** - * MediaRow module. - * @module extension/relatedTables - */ -var UserRow = require('../../user/userRow'); - -var util = require('util'); - -var ImageUtils = require('../../tiles/imageUtils'); - -/** - * User Media Row containing the values from a single result set row - * @class - * @extends {module:user/userRow~UserRow} - * @param {module:extension/relatedTables~MediaTable} mediaTable media table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - */ -var MediaRow = function(mediaTable, columnTypes, values) { - UserRow.call(this, mediaTable, columnTypes, values); - this.mediaTable = mediaTable; -} - -util.inherits(MediaRow, UserRow); - -/** - * Gets the id column - * @return {module:user/userColumn~UserColumn} - */ -MediaRow.prototype.getIdColumn = function() { - return this.mediaTable.getIdColumn(); -} - -/** - * Gets the id - * @return {Number} - */ -MediaRow.prototype.getId = function() { - return this.getValueWithColumnName(this.getIdColumn().name); -} - -/** - * Get the data column - * @return {module:user/userColumn~UserColumn} - */ -MediaRow.prototype.getDataColumn = function() { - return this.mediaTable.getDataColumn(); -} - -/** - * Gets the data - * @return {Buffer} - */ -MediaRow.prototype.getData = function() { - return this.getValueWithColumnName(this.getDataColumn().name); -} - -/** - * Get the data image - * - * @return {Promise} - */ -MediaRow.prototype.getDataImage = function() { - return ImageUtils.getImage(this.getData(), this.getContentType()); -} -/** - * Get the scaled data image - * @param {Number} scale - * @return {Promise} - */ -MediaRow.prototype.getScaledDataImage = function(scale) { - return ImageUtils.getScaledImage(this.getData(), scale); -} - -/** - * Sets the data for the row - * @param {Buffer} data data - */ -MediaRow.prototype.setData = function(data) { - this.setValueWithColumnName(this.getDataColumn().name, data); -} - -/** - * Get the content type column - * @return {module:user/userColumn~UserColumn} - */ -MediaRow.prototype.getContentTypeColumn = function() { - return this.mediaTable.getContentTypeColumn(); -} - -/** - * Gets the content type - * @return {string} - */ -MediaRow.prototype.getContentType = function() { - return this.getValueWithColumnName(this.getContentTypeColumn().name); -} - -/** - * Sets the content type for the row - * @param {string} contentType contentType - */ -MediaRow.prototype.setContentType = function(contentType) { - this.setValueWithColumnName(this.getContentTypeColumn().name, contentType); -} - -module.exports = MediaRow; - -},{"../../tiles/imageUtils":89,"../../user/userRow":107,"util":343}],35:[function(require,module,exports){ -/** - * mediaTable module. - * @module extension/relatedTables - */ - -var UserTable = require('../../user/userTable') - , UserRelatedTable = require('./userRelatedTable') - , UserColumn = require('../../user/userColumn') - , DataType = require('../../db/dataTypes') - , RelationType = require('./relationType'); - -var util = require('util'); - -/** - * Media Requirements Class User-Defined Related Data Table - * @class - * @extends {module:extension/relatedTables~UserRelatedTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns media columns - * @param {string[]} requiredColumns required column names - */ -var MediaTable = function(tableName, columns, requiredColumns) { - UserRelatedTable.call(this, tableName, MediaTable.RELATION_TYPE.name, MediaTable.RELATION_TYPE.dataType, columns, requiredColumns); -} - -util.inherits(MediaTable, UserRelatedTable); - -/** - * Create a media table with a minimum required columns followed by the additional columns - * @param {string} tableName name of the table - * @param {module:user/userColumn~UserColumn[]} additionalColumns additional columns - * @return {module:extension/relatedTables~MediaTable} - */ -MediaTable.create = function(tableName, additionalColumns) { - var columns = MediaTable.createRequiredColumns(); - if (additionalColumns) { - columns = columns.concat(additionalColumns); - } - return new MediaTable(tableName, columns, MediaTable.requiredColumns()); -} - -/** - * Get the required columns - * @param {string} [idColumnName=id] id column name - * @return {string[]} - */ -MediaTable.requiredColumns = function(idColumnName) { - var requiredColumns = []; - requiredColumns.push(idColumnName || MediaTable.COLUMN_ID); - requiredColumns.push(MediaTable.COLUMN_DATA); - requiredColumns.push(MediaTable.COLUMN_CONTENT_TYPE); - return requiredColumns; -} - -/** - * Get the number of required columns - * @return {Number} - */ -MediaTable.numRequiredColumns = function(){ - return MediaTable.requiredColumns().length; -} - -/** - * Create the required columns - * @param {Number} [startingIndex=0] starting index of the required columns - * @param {string} [idColumnName=id] id column name - * @return {module:user/userColumn~UserColumn[]} - */ -MediaTable.createRequiredColumns = function(startingIndex, idColumnName) { - startingIndex = startingIndex || 0; - return [ - MediaTable.createIdColumn(startingIndex++, idColumnName || MediaTable.COLUMN_ID), - MediaTable.createDataColumn(startingIndex++), - MediaTable.createContentTypeColumn(startingIndex++) - ]; -} - -/** - * Create the primary key id column - * @param {Number} index index of the column - * @param {string} idColumnName name of the id column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.createIdColumn = function(index, idColumnName) { - return UserColumn.createPrimaryKeyColumnWithIndexAndName(index, idColumnName); -} - -/** - * Create the data column - * @param {Number} index index of the column - * @param {string} idColumnName name of the id column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.createDataColumn = function(index) { - return UserColumn.createColumnWithIndex(index, MediaTable.COLUMN_DATA, DataType.GPKGDataType.GPKG_DT_BLOB, true); -} - -/** - * Create the content type column - * @param {Number} index index of the column - * @param {string} idColumnName name of the id column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.createContentTypeColumn = function(index) { - return UserColumn.createColumnWithIndex(index, MediaTable.COLUMN_CONTENT_TYPE, DataType.GPKGDataType.GPKG_DT_TEXT, true); -} - -/** - * Get the primary key id column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.prototype.getIdColumn = function() { - return this.getPkColumn(); -} - -/** - * Get the data column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.prototype.getDataColumn = function() { - return this.getColumnWithColumnName(MediaTable.COLUMN_DATA); -} - -/** - * Get the content type column - * @return {module:user/userColumn~UserColumn} - */ -MediaTable.prototype.getContentTypeColumn = function() { - return this.getColumnWithColumnName(MediaTable.COLUMN_CONTENT_TYPE); -} - -MediaTable.RELATION_TYPE = RelationType.MEDIA; -MediaTable.COLUMN_ID = 'id'; -MediaTable.COLUMN_DATA = 'data'; -MediaTable.COLUMN_CONTENT_TYPE = 'content_type'; - -MediaTable.prototype.TABLE_TYPE = 'media'; - -module.exports = MediaTable; - -},{"../../db/dataTypes":14,"../../user/userColumn":105,"../../user/userTable":108,"./relationType":36,"./userRelatedTable":43,"util":343}],36:[function(require,module,exports){ -/** - * @module extension/relatedTables - */ - -var ContentsDao = require('../../core/contents').ContentsDao; - -/** - * Spec supported User-Defined Related Data Tables - * @class - */ -var RelationType = function() {} - -module.exports = RelationType; - -/** - * Link features with other features - * @type {Object} - */ -RelationType.FEATURES = { - name: 'features', - dataType: ContentsDao.GPKG_CDT_FEATURES_NAME -}; - -/** - * Relate sets of tabular text or numeric data - * @type {Object} - */ -RelationType.SIMPLE_ATTRIBUTES = { - name: 'simple_attributes', - dataType: ContentsDao.GPKG_CDT_ATTRIBUTES_NAME -}; - -/** - * Relate features or attributes to multimedia files such as pictures and videos - * @type {Object} - */ -RelationType.MEDIA = { - name: 'media', - dataType: ContentsDao.GPKG_CDT_ATTRIBUTES_NAME -}; - -/** - * Attribute type relation - * @type {Object} - */ -RelationType.ATTRIBUTES = { - name: 'attributes', - dataType: ContentsDao.GPKG_CDT_ATTRIBUTES_NAME -}; - -/** - * Tile type relation - * @type {Object} - */ -RelationType.TILES = { - name: 'tiles', - dataType: ContentsDao.GPKG_CDT_TILES_NAME -}; - -/** - * Get the relation type from the name - * @param {string} name name - * @return {module:extension/relatedTables~RelationType} - */ -RelationType.fromName = function(name) { - return RelationType[name.toUpperCase()]; -} - -},{"../../core/contents":8}],37:[function(require,module,exports){ -/** - * SimpleAttributesDao module. - * @module extension/relatedTables - */ - -var SimpleAttributesRow = require('./simpleAttributesRow') - , SimpleAttributesTable = require('./simpleAttributesTable') - , Dao = require('../../dao/dao') - , UserDao = require('../../user/userDao'); - -var util = require('util'); - -/** - * User Simple Attributes DAO for reading user simple attributes data tables - * @class - * @extends {module:user/userDao~UserDao} - * @param {module:db/geoPackageConnection~GeoPackageConnection} connection connection - * @param {string} table table name - */ -var SimpleAttributesDao = function(geoPackage, table) { - UserDao.call(this, geoPackage, table); - this.simpleAttributesTable = table; -} - -util.inherits(SimpleAttributesDao, UserDao); - -/** - * Create a new {module:extension/relatedTables~SimpleAttributesRow} - * @return {module:extension/relatedTables~SimpleAttributesRow} - */ -SimpleAttributesDao.prototype.newRow = function() { - return new SimpleAttributesRow(this.simpleAttributesTable); -} - -/** - * Create a new {module:extension/relatedTables~SimpleAttributesRow} with the column types and values - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/relatedTables~SimpleAttributesRow} simple attributes row - */ -SimpleAttributesDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new SimpleAttributesRow(this.simpleAttributesTable, columnTypes, values); -}; - -/** - * Gets the {module:extension/relatedTables~SimpleAttributesTable} - * @return {module:extension/relatedTables~SimpleAttributesTable} - */ -SimpleAttributesDao.prototype.getTable = function() { - return this.simpleAttributesTable; -} - -/** - * Get the simple attributes rows from this table by ids - * @param {Number[]} ids array of ids - * @return {module:extension/relatedTables~SimpleAttributesRow[]} - */ -SimpleAttributesDao.prototype.getRows = function(ids) { - var simpleAttributesRows = []; - for (var i = 0; i < ids.length; i++) { - var row = this.queryForId(ids[i]); - if (row) { - simpleAttributesRows.push(row); - } - } - return simpleAttributesRows; -} - -module.exports = SimpleAttributesDao; - -},{"../../dao/dao":11,"../../user/userDao":106,"./simpleAttributesRow":38,"./simpleAttributesTable":39,"util":343}],38:[function(require,module,exports){ -/** - * SimpleAttributesRow module. - * @module extension/relatedTables - */ - -var UserRow = require('../../user/userRow'); - -var util = require('util'); - -/** - * User Simple Attributes Row containing the values from a single result set row - * @class - * @extends {module:user/userRow~UserRow} - * @param {module:extension/relatedTables~SimpleAttributesTable} simpleAttributesTable simple attributes table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - */ -var SimpleAttributesRow = function(simpleAttributesTable, columnTypes, values) { - UserRow.call(this, simpleAttributesTable, columnTypes, values); - this.simpleAttributesTable = simpleAttributesTable; -} - -util.inherits(SimpleAttributesRow, UserRow); - -/** - * Gets the primary key id column - * @return {module:user/userColumn~UserColumn} - */ -SimpleAttributesRow.prototype.getIdColumn = function() { - return this.simpleAttributesTable.getIdColumn(); -} - -/** - * Gets the id - * @return {Number} - */ -SimpleAttributesRow.prototype.getId = function() { - return this.getValueWithColumnName(this.getIdColumn().name); -} - -module.exports = SimpleAttributesRow; - -},{"../../user/userRow":107,"util":343}],39:[function(require,module,exports){ -/** - * simpleAttributesTable module. - * @module extension/relatedTables - */ - -var UserTable = require('../../user/userTable') - , UserRelatedTable = require('./userRelatedTable') - , UserColumn = require('../../user/userColumn') - , DataTypes = require('../../db/dataTypes') - , RelationType = require('./relationType'); - -var util = require('util'); - -/** - * Simple Attributes Requirements Class User-Defined Related Data Table - * @class - * @extends {module:extension/relatedTables~UserRelatedTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns attribute columns - * @param {string[]} requiredColumns required column names - */ -var SimpleAttributesTable = function(tableName, columns, requiredColumns) { - UserRelatedTable.call(this, tableName, SimpleAttributesTable.RELATION_TYPE.name, SimpleAttributesTable.RELATION_TYPE.dataType, columns, requiredColumns); - this.validateColumns(); -} - -util.inherits(SimpleAttributesTable, UserRelatedTable); - -/** - * Create a simple attributes table with the columns - * @param {string} tableName name of the table - * @param {module:user/userColumn~UserColumn[]} additionalColumns additional columns - * @return {module:extension/relatedTables~SimpleAttributesTable} - */ -SimpleAttributesTable.create = function(tableName, additionalColumns) { - var tableColumns = SimpleAttributesTable.createRequiredColumns(0); - - if (additionalColumns) { - tableColumns = tableColumns.concat(additionalColumns); - } - - return new SimpleAttributesTable(tableName, tableColumns, SimpleAttributesTable.requiredColumns()); -} - -/** - * Get the required columns - * @param {string} [idColumnName=id] id column name - * @return {string[]} - */ -SimpleAttributesTable.requiredColumns = function(idColumnName) { - var requiredColumns = []; - requiredColumns.push(idColumnName || SimpleAttributesTable.COLUMN_ID); - return requiredColumns; -} - -/** - * Get the number of required columns - * @return {Number} - */ -SimpleAttributesTable.numRequiredColumns = function(){ - return SimpleAttributesTable.requiredColumns().length; -} - -/** - * Create the required columns - * @param {Number} [startingIndex=0] starting index of the required columns - * @param {string} [idColumnName=id] id column name - * @return {module:user/userColumn~UserColumn[]} - */ -SimpleAttributesTable.createRequiredColumns = function(startingIndex, idColumnName) { - startingIndex = startingIndex || 0; - return [SimpleAttributesTable.createIdColumn(startingIndex++, idColumnName || SimpleAttributesTable.COLUMN_ID)]; -} - -/** - * Create the primary key id column - * @param {Number} index index of the column - * @param {string} idColumnName name of the id column - * @return {module:user/userColumn~UserColumn} - */ -SimpleAttributesTable.createIdColumn = function(index, idColumnName) { - return UserColumn.createPrimaryKeyColumnWithIndexAndName(index, idColumnName); -} - -/** - * Validate that Simple Attributes columns to verify at least one non id - * column exists and that all columns are simple data types - */ -SimpleAttributesTable.prototype.validateColumns = function() { - var columns = this.columns; - if (columns.length < 2) { - throw new Error('Simple Attributes Tables require at least one non id column'); - } - - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - if (!SimpleAttributesTable.isSimple(column)) { - throw new Error('Simple Attributes Tables only support simple data types. Column: ' + column.name + ', Non Simple Data Type: ' + column.dataType); - } - } -} - -/** - * Get the column index of the id column - * @return {Number} - */ -SimpleAttributesTable.prototype.getIdColumnIndex = function() { - return this.pkIndex; -} - -/** - * Get the primary key id column - * @return {module:user/userColumn~UserColumn} - */ -SimpleAttributesTable.prototype.getIdColumn = function() { - return this.getPkColumn(); -} - -/** - * Determine if the column is a simple column - * @param {module:user/userColumn~UserColumn} column column to check - * @return {Boolean} - */ -SimpleAttributesTable.isSimple = function(column) { - return column.notNull && SimpleAttributesTable.isSimpleDataType(column.dataType); -} - -/** - * Determine if the data type is a simple type: TEXT, INTEGER, or REAL - * @param {module:db/dataTypes~GPKGDataType} - * @return {Boolean} - */ -SimpleAttributesTable.isSimpleDataType = function(dataType) { - return dataType !== DataTypes.GPKGDataType.GPKG_DT_BLOB && dataType !== DataTypes.GPKGDataType.GPKG_DT_GEOMETRY; -} - -SimpleAttributesTable.RELATION_TYPE = RelationType.SIMPLE_ATTRIBUTES; -SimpleAttributesTable.COLUMN_ID = 'id'; - -SimpleAttributesTable.prototype.TABLE_TYPE = 'simple_attributes'; - -module.exports = SimpleAttributesTable; - -},{"../../db/dataTypes":14,"../../user/userColumn":105,"../../user/userTable":108,"./relationType":36,"./userRelatedTable":43,"util":343}],40:[function(require,module,exports){ -/** - * @module extension/relatedTables - */ - -var UserMappingRow = require('./userMappingRow') - , UserMappingTable = require('./userMappingTable') - , UserCustomDao = require('../../user/custom/userCustomDao') - , ColumnValues = require('../../dao/columnValues'); - -var util = require('util'); - -/** - * User Mapping DAO for reading user mapping data tables - * @class - * @extends {module:user/custom/userCustomDao~UserCustomDao} - * @param {string} table table name - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - */ -var UserMappingDao = function(userCustomDao, geoPackage) { - UserCustomDao.call(this, geoPackage, this.createMappingTable(userCustomDao)); -} - -util.inherits(UserMappingDao, UserCustomDao); - -/** - * Create a new {module:user/custom~UserCustomTable} - * @param {module:user/custom~UserCustomDao} userCustomDao - * @return {module:user/custom~UserCustomTable} userCustomTable user custom table - */ -UserMappingDao.prototype.createMappingTable = function(userCustomDao) { - return new UserMappingTable(userCustomDao.table.table_name, userCustomDao.table.columns); -} - -/** - * Create a new {module:extension/relatedTables~UserMappingRow} - * @return {module:extension/relatedTables~UserMappingRow} - */ -UserMappingDao.prototype.newRow = function() { - return new UserMappingRow(this.table); -} - -/** - * Gets the {module:extension/relatedTables~UserMappingTable} - * @return {module:extension/relatedTables~UserMappingTable} - */ -UserMappingDao.prototype.getTable = function() { - return this.table; -} - -/** - * Create a user mapping row - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/relatedTables~UserMappingRow} user mapping row - */ -UserMappingDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new UserMappingRow(this.table, columnTypes, values); -}; - -/** - * Gets the user mapping row from the result - * @param {Object} result db result - * @return {module:extension/relatedTables~UserMappingRow} user mapping row - */ -UserMappingDao.prototype.getUserMappingRow = function(result) { - return this.getRow(result); -} - -/** - * Query by base id - * @param {Number} baseId base id - * @return {Object[]} - */ -UserMappingDao.prototype.queryByBaseId = function(baseId) { - if (baseId.getBaseId) { - baseId = baseId.getBaseId(); - } - return this.queryForAllEq(UserMappingTable.COLUMN_BASE_ID, baseId); -} - -/** - * Query by related id - * @param {Number} relatedId related id - * @return {Object[]} - */ -UserMappingDao.prototype.queryByRelatedId = function(relatedId) { - if (relatedId.getRelatedId) { - relatedId = relatedId.getRelatedId(); - } - return this.queryForAllEq(UserMappingTable.COLUMN_RELATED_ID, relatedId); -} - -/** - * Query by base id and related id - * @param {Number} baseId base id - * @param {Number} relatedId related id - * @return {Object[]} - */ -UserMappingDao.prototype.queryByIds = function(baseId, relatedId) { - if (baseId.getBaseId) { - relatedId = baseId.getRelatedId(); - baseId = baseId.getBaseId(); - } - - var values = new ColumnValues(); - values.addColumn(UserMappingTable.COLUMN_BASE_ID, baseId); - values.addColumn(UserMappingTable.COLUMN_RELATED_ID, relatedId); - - return this.queryForFieldValues(values); -} - -/** - * The unique related ids - * @return {Number[]} - */ -UserMappingDao.prototype.uniqueRelatedIds = function() { - var query = 'SELECT DISTINCT '; - query += UserMappingTable.COLUMN_RELATED_ID; - query += ' FROM '; - query += "'"+this.gpkgTableName+"'"; - return this.connection.all(query); -} - -/** - * Count user mapping rows by base id and related id - * @param {Number} baseId base id - * @param {Number} relatedId related id - * @return {Number} - */ -UserMappingDao.prototype.countByIds = function(baseId, relatedId) { - if (baseId.getBaseId) { - relatedId = baseId.getRelatedId(); - baseId = baseId.getBaseId(); - } - - var values = new ColumnValues(); - values.addColumn(UserMappingTable.COLUMN_BASE_ID, baseId); - values.addColumn(UserMappingTable.COLUMN_RELATED_ID, relatedId); - - return this.count(values); -} - -/** - * Delete by base id - * @param {Number} baseId base id - * @return {Number} number of deleted rows - */ -UserMappingDao.prototype.deleteByBaseId = function(baseId) { - if (baseId.getBaseId) { - baseId = baseId.getBaseId(); - } - - var where = ''; - where += this.buildWhereWithFieldAndValue(UserMappingTable.COLUMN_BASE_ID, baseId); - var whereArgs = this.buildWhereArgs([baseId]); - - return this.deleteWhere(where, whereArgs); -}; - -/** - * Delete by related id - * @param {Number} relatedId related id - * @return {Number} number of deleted rows - */ -UserMappingDao.prototype.deleteByRelatedId = function(relatedId) { - if (relatedId.getRelatedId) { - relatedId = relatedId.getRelatedId(); - } - - var where = ''; - where += this.buildWhereWithFieldAndValue(UserMappingTable.COLUMN_RELATED_ID, relatedId); - var whereArgs = this.buildWhereArgs([relatedId]); - - return this.deleteWhere(where, whereArgs); -}; - -/** - * Delete by base id and related id - * @param {Number} baseId base id - * @param {Number} relatedId related id - * @return {Number} number of deleted rows - */ -UserMappingDao.prototype.deleteByIds = function(baseId, relatedId) { - if (baseId.getBaseId) { - relatedId = baseId.getRelatedId(); - baseId = baseId.getBaseId(); - } - - var where = ''; - where += this.buildWhereWithFieldAndValue(UserMappingTable.COLUMN_BASE_ID, baseId); - where += ' and '; - where += this.buildWhereWithFieldAndValue(UserMappingTable.COLUMN_RELATED_ID, relatedId); - var whereArgs = this.buildWhereArgs([baseId, relatedId]); - - return this.deleteWhere(where, whereArgs); -} - -module.exports = UserMappingDao; - -},{"../../dao/columnValues":10,"../../user/custom/userCustomDao":102,"./userMappingRow":41,"./userMappingTable":42,"util":343}],41:[function(require,module,exports){ -/** - * UserMappingRow module. - * @module extension/relatedTables - */ - -var UserRow = require('../../user/userRow'); - -var util = require('util'); - -/** - * User Mapping Row containing the values from a single result set row - * @class - * @extends {module:user/userRow~UserRow} - * @param {module:extension/relatedTables~UserMappingTable} userMappingTable user mapping table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - */ -var UserMappingRow = function(userMappingTable, columnTypes, values) { - UserRow.call(this, userMappingTable, columnTypes, values); -} - -util.inherits(UserMappingRow, UserRow); - -/** - * Get the base id column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingRow.prototype.getBaseIdColumn = function() { - return this.table.getBaseIdColumn(); -} - -/** - * Gets the base id - * @return {Number} - */ -UserMappingRow.prototype.getBaseId = function() { - return this.getValueWithColumnName(this.getBaseIdColumn().name); -} - -/** - * Sets the base id - * @param {Number} baseId base id - */ -UserMappingRow.prototype.setBaseId = function(baseId) { - this.setValueWithColumnName(this.getBaseIdColumn().name, baseId); -} - -/** - * Get the related id column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingRow.prototype.getRelatedIdColumn = function() { - return this.table.getRelatedIdColumn(); -} - -/** - * Gets the related id - * @return {Number} - */ -UserMappingRow.prototype.getRelatedId = function() { - return this.getValueWithColumnName(this.getRelatedIdColumn().name); -} - -/** - * Sets the related id - * @param {Number} relatedId related id - */ -UserMappingRow.prototype.setRelatedId = function(relatedId) { - this.setValueWithColumnName(this.getRelatedIdColumn().name, relatedId); -} - -module.exports = UserMappingRow; - -},{"../../user/userRow":107,"util":343}],42:[function(require,module,exports){ -/** - * userMappingTable module. - * @module extension/relatedTables - */ - -var UserTable = require('../../user/userTable') - , UserCustomColumn = require('../../user/custom/userCustomColumn') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * Contains user mapping table factory and utility methods - * @class - * @extends {module:user/userTable~UserTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns user mapping columns - */ -var UserMappingTable = function(tableName, columns) { - UserTable.call(this, tableName, columns); -} - -util.inherits(UserMappingTable, UserTable); - -/** - * Creates a user mapping table with the minimum required columns followed by the additional columns - * @param {string} tableName name of the table - * @param {module:user/userColumn~UserColumn[]} additionalColumns additional columns - * @return {module:extension/relatedTables~UserMappingTable} - */ -UserMappingTable.create = function(tableName, columns) { - var allColumns = UserMappingTable.createRequiredColumns(0); - if (columns) { - allColumns = allColumns.concat(columns); - } - return new UserMappingTable(tableName, allColumns); -} - -/** - * Get the number of required columns - * @return {Number} - */ -UserMappingTable.numRequiredColumns = function() { - return UserMappingTable.createRequiredColumns(0).length; -} - -/** - * Create the required columns - * @param {Number} [startingIndex=0] starting index of the required columns - * @return {module:user/userColumn~UserColumn[]} - */ -UserMappingTable.createRequiredColumns = function(startingIndex) { - startingIndex = startingIndex || 0; - return [ - UserMappingTable.createBaseIdColumn(startingIndex++), - UserMappingTable.createRelatedIdColumn(startingIndex) - ]; -} - -/** - * Create the base id column - * @param {Number} index index of the column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingTable.createBaseIdColumn = function(index) { - var baseIdColumn = UserCustomColumn.createColumn(index, UserMappingTable.COLUMN_BASE_ID, DataTypes.GPKGDataType.GPKG_DT_INTEGER, undefined, true); - return baseIdColumn; -} - -/** - * Create the related id column - * @param {Number} index index of the column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingTable.createRelatedIdColumn = function(index) { - return UserCustomColumn.createColumn(index, UserMappingTable.COLUMN_RELATED_ID, DataTypes.GPKGDataType.GPKG_DT_INTEGER, undefined, true); -} - -/** - * Get the base id column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingTable.prototype.getBaseIdColumn = function() { - return this.getColumnWithColumnName(UserMappingTable.COLUMN_BASE_ID); -} - -/** - * Get the related id column - * @return {module:user/userColumn~UserColumn} - */ -UserMappingTable.prototype.getRelatedIdColumn = function() { - return this.getColumnWithColumnName(UserMappingTable.COLUMN_RELATED_ID); -} - -/** - * Get the required columns - * @return {string[]} - */ -UserMappingTable.requiredColumns = function() { - return [UserMappingTable.COLUMN_BASE_ID, UserMappingTable.COLUMN_RELATED_ID]; -} - -UserMappingTable.COLUMN_BASE_ID = 'base_id'; -UserMappingTable.COLUMN_RELATED_ID = 'related_id'; - -module.exports = UserMappingTable; - -},{"../../db/dataTypes":14,"../../user/custom/userCustomColumn":101,"../../user/userTable":108,"util":343}],43:[function(require,module,exports){ -/** - * userRelatedTable module. - * @module extension/relatedTables - */ - -var UserTable = require('../../user/userTable') - , UserColumn = require('../../user/userColumn') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * User Defined Related Table - * @param {string} tableName table name - * @param {array} columns attribute columns - */ -/** - * User Defined Related Table - * @param {string} tableName table name - * @param {string} relationName relation name - * @param {string} dataType Contents data type - * @param {module:user/userColumn~UserColumn} columns columns - * @param {string[]} requiredColumns required columns - * @return {module:extension/relatedTables~UserRelatedTable} - */ -var UserRelatedTable = function(tableName, relationName, dataType, columns, requiredColumns) { - UserTable.call(this, tableName, columns, requiredColumns); - this.relation_name = relationName; - this.data_type = dataType; -} - -util.inherits(UserRelatedTable, UserTable); - -/** - * Sets the contents - * @param {module:core/contents~Contents} contents contents - * @throw Error if the contents data type does not match this data type - */ -UserRelatedTable.prototype.setContents = function(contents) { - this.contents = contents; - - // verify the contents have a relation name data type - if (!contents.data_type || contents.data_type !== this.data_type) { - throw new Error('The contents of this related table must have a data type of ' + this.data_type); - } -} - -module.exports = UserRelatedTable; - -},{"../../db/dataTypes":14,"../../user/userColumn":105,"../../user/userTable":108,"util":343}],44:[function(require,module,exports){ -/** - * RTreeIndexDao module. - * @module RTreeIndexDao - * @see module:dao/dao - */ - -var Dao = require('../../dao/dao') - , BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension - , EnvelopeBuilder = require('../../geom/envelopeBuilder') - , GeometryData = require('../../geom/geometryData'); - -var util = require('util'); - -var RTreeIndex = function(geoPackage, featureDao) { - BaseExtension.call(this, geoPackage); - - this.extensionName = Extension.buildExtensionName(RTreeIndexDao.EXTENSION_RTREE_INDEX_AUTHOR, RTreeIndexDao.EXTENSION_RTREE_INDEX_NAME_NO_AUTHOR); - - this.extensionDefinition = RTreeIndexDao.EXTENSION_RTREE_INDEX_DEFINITION; - - this.tableName = featureDao.table_name; - this.primaryKeyColumn = featureDao.idColumns[0]; - this.columnName = featureDao.getGeometryColumnName(); - - this.rtreeIndexDao = new RTreeIndexDao(geoPackage, featureDao); - this.extensionExists = this.hasExtension(this.extensionName, this.tableName, this.columnName); -} - -util.inherits(RTreeIndex, BaseExtension); - -RTreeIndex.prototype.getRTreeIndexExtension = function () { - return this.getExtension(this.extensionName, this.tableName, this.columnName); -}; - -RTreeIndex.prototype.getOrCreateExtension = function() { - return this.getOrCreate(this.extensionName, this.tableName, this.columnName, this.extensionDefinition, Extension.WRITE_ONLY); -}; - -RTreeIndex.prototype.create = function() { - if (this.extensionExists) { - return Promise.resolve(this.getRTreeIndexExtension()); - } - - return this.getOrCreate(this.extensionName, this.tableName, this.columnName, RTreeIndexDao.EXTENSION_RTREE_INDEX_DEFINITION, Extension.WRITE_ONLY) - .then(function() { - this.createAllFunctions(); - this.createRTreeIndex(); - this.loadRTreeIndex(); - this.createAllTriggers(); - return this.getRTreeIndexExtension(); - }.bind(this)); -} - -RTreeIndex.prototype.createAllTriggers = function() { - var insertTrigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_insert AFTER INSERT ON '+this.tableName+ - ' WHEN (new.'+this.columnName+' NOT NULL AND NOT ST_IsEmpty(NEW.'+this.columnName+')) '+ - 'BEGIN '+ - ' INSERT OR REPLACE INTO rtree_'+this.tableName+'_'+this.columnName+' VALUES ('+ - ' NEW.'+this.primaryKeyColumn+','+ - ' ST_MinX(NEW.'+this.columnName+'), ST_MaxX(NEW.'+this.columnName+'), '+ - ' ST_MinY(NEW.'+this.columnName+'), ST_MaxY(NEW.'+this.columnName+') '+ - ' ); '+ - 'END;'; - - var update1Trigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_update1 AFTER UPDATE OF '+this.columnName+' ON '+this.tableName+ - ' WHEN OLD.'+this.primaryKeyColumn+' = NEW.'+this.primaryKeyColumn+' AND '+ - ' (NEW.'+this.columnName+' NOTNULL AND NOT ST_IsEmpty(NEW.'+this.columnName+')) '+ - 'BEGIN '+ - ' INSERT OR REPLACE INTO rtree_'+this.tableName+'_'+this.columnName+' VALUES ('+ - ' NEW.'+this.primaryKeyColumn+','+ - ' ST_MinX(NEW.'+this.columnName+'), ST_MaxX(NEW.'+this.columnName+'), '+ - ' ST_MinY(NEW.'+this.columnName+'), ST_MaxY(NEW.'+this.columnName+') '+ - ' ); '+ - 'END;'; - - var update2Trigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_update2 AFTER UPDATE OF '+this.columnName+' ON '+this.tableName+ - ' WHEN OLD.'+this.primaryKeyColumn+' = NEW.'+this.primaryKeyColumn+' AND '+ - ' (NEW.'+this.columnName+' ISNULL OR ST_IsEmpty(NEW.'+this.columnName+')) '+ - 'BEGIN '+ - ' DELETE FROM rtree_'+this.tableName+'_'+this.columnName+' WHERE id = OLD.'+this.primaryKeyColumn+'; '+ - 'END;'; - - var update3Trigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_update3 AFTER UPDATE OF '+this.columnName+' ON '+this.tableName+ - ' WHEN OLD.'+this.primaryKeyColumn+' != NEW.'+this.primaryKeyColumn+' AND '+ - ' (NEW.'+this.columnName+' NOTNULL AND NOT ST_IsEmpty(NEW.'+this.columnName+')) '+ - 'BEGIN '+ - ' DELETE FROM rtree_'+this.tableName+'_'+this.columnName+' WHERE id = OLD.'+this.primaryKeyColumn+'; '+ - ' INSERT OR REPLACE INTO rtree_'+this.tableName+'_'+this.columnName+' VALUES ('+ - ' NEW.'+this.primaryKeyColumn+', '+ - ' ST_MinX(NEW.'+this.columnName+'), ST_MaxX(NEW.'+this.columnName+'), '+ - ' ST_MinY(NEW.'+this.columnName+'), ST_MaxY(NEW.'+this.columnName+')'+ - ' ); '+ - 'END;'; - - var update4Trigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_update4 AFTER UPDATE ON '+this.tableName+ - ' WHEN OLD.'+this.primaryKeyColumn+' != NEW.'+this.primaryKeyColumn+' AND '+ - ' (NEW.'+this.columnName+' ISNULL OR ST_IsEmpty(NEW.'+this.columnName+')) '+ - 'BEGIN '+ - ' DELETE FROM rtree_'+this.tableName+'_'+this.columnName+' WHERE id IN (OLD.'+this.primaryKeyColumn+', NEW.'+this.primaryKeyColumn+'); '+ - 'END;'; - - var deleteTrigger = - 'CREATE TRIGGER rtree_'+this.tableName+'_'+this.columnName+'_delete AFTER DELETE ON '+this.tableName+ - ' WHEN old.'+this.columnName+' NOT NULL '+ - 'BEGIN'+ - ' DELETE FROM rtree_'+this.tableName+'_'+this.columnName+' WHERE id = OLD.'+this.primaryKeyColumn+'; '+ - 'END;'; - - this.connection.run(insertTrigger); - this.connection.run(update1Trigger); - this.connection.run(update2Trigger); - this.connection.run(update3Trigger); - this.connection.run(update4Trigger); - this.connection.run(deleteTrigger); -} - -RTreeIndex.prototype.loadRTreeIndex = function() { - this.connection.run('INSERT OR REPLACE INTO rtree_'+this.tableName+'_'+this.columnName+' SELECT '+this.primaryKeyColumn+', st_minx('+this.columnName+'), st_maxx('+this.columnName+'), st_miny('+this.columnName+'), st_maxy('+this.columnName+') FROM '+this.tableName); -} - -RTreeIndex.prototype.createRTreeIndex = function() { - this.connection.run('CREATE VIRTUAL TABLE rtree_'+this.tableName+'_'+this.columnName+' USING rtree(id, minx, maxx, miny, maxy)'); -} - -RTreeIndex.prototype.createAllFunctions = function() { - this.createMinXFunction(); - this.createMaxXFunction(); - this.createMinYFunction(); - this.createMaxYFunction(); - this.createIsEmptyFunction(); -} - -RTreeIndex.prototype.createMinXFunction = function() { - this.connection.registerFunction('ST_MinX', function(buffer) { - var geom = new GeometryData(buffer); - var envelope = geom.envelope; - if (!envelope) { - envelope = EnvelopeBuilder.buildEnvelopeWithGeometry(geom.geometry); - } - return envelope.minX; - }); -} - -RTreeIndex.prototype.createMinYFunction = function() { - this.connection.registerFunction('ST_MinY', function(buffer) { - var geom = new GeometryData(buffer); - var envelope = geom.envelope; - if (!envelope) { - envelope = EnvelopeBuilder.buildEnvelopeWithGeometry(geom.geometry); - } - return envelope.minY; - }); -} - -RTreeIndex.prototype.createMaxXFunction = function() { - this.connection.registerFunction('ST_MaxX', function(buffer) { - var geom = new GeometryData(buffer); - var envelope = geom.envelope; - if (!envelope) { - envelope = EnvelopeBuilder.buildEnvelopeWithGeometry(geom.geometry); - } - return envelope.maxX; - }); -} - -RTreeIndex.prototype.createMaxYFunction = function() { - this.connection.registerFunction('ST_MaxY', function(buffer) { - var geom = new GeometryData(buffer); - var envelope = geom.envelope; - if (!envelope) { - envelope = EnvelopeBuilder.buildEnvelopeWithGeometry(geom.geometry); - } - return envelope.maxY; - }); -} - -RTreeIndex.prototype.createIsEmptyFunction = function() { - this.connection.registerFunction('ST_IsEmpty', function(buffer) { - var geom = new GeometryData(buffer); - return !geom || geom.empty || !geom.geometry; - }); -} - -/** - * RTree Index Data Access Object - * @class - * @extends {module:dao/dao~Dao} - */ -var RTreeIndexDao = function(geoPackage, featureDao) { - Dao.call(this, geoPackage); - this.featureDao = featureDao; - -}; - -util.inherits(RTreeIndexDao, Dao); - -/** - * Generate query components - * @param envelope - * @returns {{whereArgs: Array, where: string, join: string, tableNameArr: string[]}} - * @private - */ -RTreeIndexDao.prototype._generateGeometryEnvelopeQuery = function(envelope) { - var tableName = this.featureDao.gpkgTableName; - - var where = ''; - var minXLessThanMaxX = envelope.minX < envelope.maxX; - if (minXLessThanMaxX) { - where += this.buildWhereWithFieldAndValue('minx', envelope.maxX, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue('maxx', envelope.minX, '>='); - } else { - where += '('; - where += this.buildWhereWithFieldAndValue('minx', envelope.maxX, '<='); - where += ' or '; - where += this.buildWhereWithFieldAndValue('maxx', envelope.minX, '>='); - where += ' or '; - where += this.buildWhereWithFieldAndValue('minx', envelope.minX, '>='); - where += ' or '; - where += this.buildWhereWithFieldAndValue('maxx', envelope.maxX, '<='); - where += ')'; - } - - where += ' and '; - where += this.buildWhereWithFieldAndValue('miny', envelope.maxY, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue('maxy', envelope.minY, '>='); - - var whereArgs = [] - whereArgs.push(envelope.maxX, envelope.minX); - if (!minXLessThanMaxX) { - whereArgs.push(envelope.minX, envelope.maxX); - } - whereArgs.push(envelope.maxY, envelope.minY); - - return { - join: 'inner join ' + tableName + ' on ' + tableName + '.' + this.featureDao.idColumns[0] + ' = ' + this.gpkgTableName+'.id', - where, - whereArgs, - tableNameArr: [tableName + '.*'] - }; -}; - -RTreeIndexDao.prototype.queryWithGeometryEnvelope = function(envelope) { - var result = this._generateGeometryEnvelopeQuery(envelope) - return this.queryJoinWhereWithArgs(result.join, result.where, result.whereArgs, result.tableNameArr); -}; - -RTreeIndexDao.prototype.countWithGeometryEnvelope = function(envelope) { - var result = this._generateGeometryEnvelopeQuery(envelope) - return this.countJoinWhereWithArgs(result.join, result.where, result.whereArgs, result.tableNameArr); -}; - -RTreeIndexDao.TABLE_NAME = "rtree"; -RTreeIndexDao.COLUMN_TABLE_NAME = RTreeIndexDao.TABLE_NAME + ".table_name"; -RTreeIndexDao.COLUMN_GEOM_ID = RTreeIndexDao.TABLE_NAME + ".geom_id"; -RTreeIndexDao.COLUMN_MIN_X = RTreeIndexDao.TABLE_NAME + ".minx"; -RTreeIndexDao.COLUMN_MAX_X = RTreeIndexDao.TABLE_NAME + ".maxx"; -RTreeIndexDao.COLUMN_MIN_Y = RTreeIndexDao.TABLE_NAME + ".miny"; -RTreeIndexDao.COLUMN_MAX_Y = RTreeIndexDao.TABLE_NAME + ".maxy"; -RTreeIndexDao.COLUMN_MIN_Z = RTreeIndexDao.TABLE_NAME + ".minz"; -RTreeIndexDao.COLUMN_MAX_Z = RTreeIndexDao.TABLE_NAME + ".maxz"; -RTreeIndexDao.COLUMN_MIN_M = RTreeIndexDao.TABLE_NAME + ".minm"; -RTreeIndexDao.COLUMN_MAX_M = RTreeIndexDao.TABLE_NAME + ".maxm"; - -RTreeIndexDao.EXTENSION_NAME = 'gpkg_rtree_index'; -RTreeIndexDao.EXTENSION_RTREE_INDEX_AUTHOR = 'gpkg'; -RTreeIndexDao.EXTENSION_RTREE_INDEX_NAME_NO_AUTHOR = 'rtree_index'; -RTreeIndexDao.EXTENSION_RTREE_INDEX_DEFINITION = 'http://www.geopackage.org/spec/#extension_rtree'; - -RTreeIndexDao.prototype.gpkgTableName = RTreeIndexDao.TABLE_NAME; - -module.exports.RTreeIndexDao = RTreeIndexDao; -module.exports.RTreeIndex = RTreeIndex; - -},{"../.":25,"../../dao/dao":11,"../../geom/envelopeBuilder":72,"../../geom/geometryData":73,"../baseExtension":20,"util":343}],45:[function(require,module,exports){ -/** - * SchemaExtension module. - * @module SchemaExtension - * @see module:extension/BaseExtension - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension; - -var util = require('util'); - -var SchemaExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - - this.extensionName = SchemaExtension.EXTENSION_NAME; - - this.extensionDefinition = SchemaExtension.EXTENSION_SCHEMA_DEFINITION; -} - -util.inherits(SchemaExtension, BaseExtension); - -SchemaExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(this.extensionName, null, null, this.extensionDefinition, Extension.READ_WRITE); -}; - -SchemaExtension.EXTENSION_NAME = 'gpkg_schema'; -SchemaExtension.EXTENSION_SCHEMA_AUTHOR = 'gpkg'; -SchemaExtension.EXTENSION_SCHEMA_NAME_NO_AUTHOR = 'schema'; -SchemaExtension.EXTENSION_SCHEMA_DEFINITION = 'http://www.geopackage.org/spec/#extension_schema'; - -module.exports.SchemaExtension = SchemaExtension; - -},{"../.":25,"../baseExtension":20,"util":343}],46:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class FeatureStyle - */ - -/** - * FeatureStyle constructor - * @param {module:extension/style.StyleRow} styleRow - * @param {module:extension/style.IconRow} iconRow - * @constructor - */ -var FeatureStyle = function(styleRow, iconRow) { - this.styleRow = styleRow; - this.iconRow = iconRow; -}; - -/** - * Set style - * @param {module:extension/style.StyleRow} styleRow - */ -FeatureStyle.prototype.setStyle = function(styleRow) { - this.styleRow = styleRow; -}; - -/** - * Get style - * @returns {module:extension/style.StyleRow} - */ -FeatureStyle.prototype.getStyle = function() { - return this.styleRow; -}; - -/** - * Returns true if has style - * @returns {Boolean} - */ -FeatureStyle.prototype.hasStyle = function() { - return !!this.styleRow; -}; - -/** - * Set icon - * @param {module:extension/style.IconRow} iconRow - */ -FeatureStyle.prototype.setIcon = function(iconRow) { - this.iconRow = iconRow; -}; - -/** - * Get icon - * @returns {module:extension/style.IconRow} - */ -FeatureStyle.prototype.getIcon = function() { - return this.iconRow; -}; - -/** - * Returns true if has icon - * @returns {Boolean} - */ -FeatureStyle.prototype.hasIcon = function() { - return !!this.iconRow; -}; - -module.exports = FeatureStyle; - -},{}],47:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class FeatureStyles - */ - -/** - * FeatureStyles constructor - * @param {module:extension/style.Styles} styles - * @param {module:extension/style.Icons} icons - * @constructor - */ -var FeatureStyles = function(styles = null, icons = null) { - this.styles = styles; - this.icons = icons; -}; - -/** - * Set style - * @param {module:extension/style.Styles} styles - */ -FeatureStyles.prototype.setStyles = function(styles) { - this.styles = styles; -}; - -/** - * Get style - * @returns {module:extension/style.Styles} - */ -FeatureStyles.prototype.getStyles = function() { - return this.styles; -}; - -/** - * Set icon - * @param {module:extension/style.Icons} icons - */ -FeatureStyles.prototype.setIcons = function(icons) { - this.icons = icons; -}; - -/** - * Get icon - * @returns {module:extension/style.Icons} - */ -FeatureStyles.prototype.getIcons = function() { - return this.icons; -}; - -module.exports = FeatureStyles; - -},{}],48:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class FeatureStyleExtension - */ - -var FeatureStyles = require('./featureStyles') - , FeatureStyle = require('./featureStyle') - , Styles = require('./styles') - , Icons = require('./icons'); - - -/** - * Feature Table Styles, styles and icons for an individual feature table - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @param {String} tableName - * @constructor - */ -var FeatureTableStyles = function(geoPackage, tableName) { - this.featureStyleExtension = geoPackage.getFeatureStyleExtension(); - this.cachedTableFeatureStyles = new FeatureStyles(); - this.tableName = tableName; -}; - -/** - * Get the feature style extension - * @return {module:extension/style.FeatureStyleExtension} feature style extension - */ -FeatureTableStyles.prototype.getFeatureStyleExtension = function() { - return this.featureStyleExtension; -}; - -/** - * Get the feature table name - * @return {String} feature table name - */ -FeatureTableStyles.prototype.getTableName = function() { - return this.tableName; -}; - -/** - * Determine if the GeoPackage has the extension for the table - * @return {Boolean} true if has extension - */ -FeatureTableStyles.prototype.has = function() { - return this.featureStyleExtension.has(this.tableName); -}; - -/** - * Create style, icon, table style, and table icon relationships for the - * feature table - * @return {Promise} - */ -FeatureTableStyles.prototype.createRelationships = function() { - return this.featureStyleExtension.createRelationships(this.tableName); -}; - -/** - * Check if feature table has a style, icon, table style, or table icon - * relationships - * @return {Boolean} true if has a relationship - */ -FeatureTableStyles.prototype.hasRelationship = function() { - return this.featureStyleExtension.hasRelationship(this.tableName); -}; - -/** - * Create a style relationship for the feature table - * @return {Promise} - */ -FeatureTableStyles.prototype.createStyleRelationship = function() { - return this.featureStyleExtension.createStyleRelationship(this.tableName); -}; - -/** - * Determine if a style relationship exists for the feature table - * @return {Boolean} true if relationship exists - */ -FeatureTableStyles.prototype.hasStyleRelationship = function() { - return this.featureStyleExtension.hasStyleRelationship(this.tableName); -}; - -/** - * Create a feature table style relationship - * @return {Promise} - */ -FeatureTableStyles.prototype.createTableStyleRelationship = function() { - return this.featureStyleExtension.createTableStyleRelationship(this.tableName); -}; - -/** - * Determine if feature table style relationship exists - * - * @return {Boolean} true if relationship exists - */ -FeatureTableStyles.prototype.hasTableStyleRelationship = function() { - return this.featureStyleExtension.hasTableStyleRelationship(this.tableName); -}; - -/** - * Create an icon relationship for the feature table - * @return {Promise} - */ -FeatureTableStyles.prototype.createIconRelationship = function() { - return this.featureStyleExtension.createIconRelationship(this.tableName); -}; - -/** - * Determine if an icon relationship exists for the feature table - * @return {Boolean} true if relationship exists - */ -FeatureTableStyles.prototype.hasIconRelationship = function() { - return this.featureStyleExtension.hasIconRelationship(this.tableName); -}; - -/** - * Create a feature table icon relationship - * @return {Promise} - */ -FeatureTableStyles.prototype.createTableIconRelationship = function() { - return this.featureStyleExtension.createTableIconRelationship(this.tableName); -}; - -/** - * Determine if feature table icon relationship exists - * @return {Boolean} true if relationship exists - */ -FeatureTableStyles.prototype.hasTableIconRelationship = function() { - return this.featureStyleExtension.hasTableIconRelationship(this.tableName); -}; - -/** - * Delete the style and icon table and row relationships for the feature - * table - */ -FeatureTableStyles.prototype.deleteRelationships = function() { - this.featureStyleExtension.deleteRelationships(this.tableName); -}; - -/** - * Delete a style relationship for the feature table - */ -FeatureTableStyles.prototype.deleteStyleRelationship = function() { - this.featureStyleExtension.deleteStyleRelationship(this.tableName); -}; - -/** - * Delete a table style relationship for the feature table - */ -FeatureTableStyles.prototype.deleteTableStyleRelationship = function() { - this.featureStyleExtension.deleteTableStyleRelationship(this.tableName); -}; - -/** - * Delete a icon relationship for the feature table - */ -FeatureTableStyles.prototype.deleteIconRelationship = function() { - this.featureStyleExtension.deleteIconRelationship(this.tableName); -}; - -/** - * Delete a table icon relationship for the feature table - */ -FeatureTableStyles.prototype.deleteTableIconRelationship = function() { - this.featureStyleExtension.deleteTableIconRelationship(this.tableName); -}; - -/** - * Get a Style Mapping DAO - * @return {module:extension/style.StyleMappingDao} style mapping DAO - */ -FeatureTableStyles.prototype.getStyleMappingDao = function() { - return this.featureStyleExtension.getStyleMappingDao(this.tableName); -}; - -/** - * Get a Table Style Mapping DAO - * @return {module:extension/style.StyleMappingDao} table style mapping DAO - */ -FeatureTableStyles.prototype.getTableStyleMappingDao = function() { - return this.featureStyleExtension.getTableStyleMappingDao(this.tableName); -}; - -/** - * Get a Icon Mapping DAO - * @return {module:extension/style.StyleMappingDao} icon mapping DAO - */ -FeatureTableStyles.prototype.getIconMappingDao = function() { - return this.featureStyleExtension.getIconMappingDao(this.tableName); -}; - -/** - * Get a Table Icon Mapping DAO - * @return {module:extension/style.StyleMappingDao} table icon mapping DAO - */ -FeatureTableStyles.prototype.getTableIconMappingDao = function() { - return this.featureStyleExtension.getTableIconMappingDao(this.tableName); -}; - -/** - * Get a style DAO - * @return {module:extension/style.StyleDao} style DAO - */ -FeatureTableStyles.prototype.getStyleDao = function() { - return this.featureStyleExtension.getStyleDao(); -}; - -/** - * Get a icon DAO - * @return {module:extension/style.IconDao} icon DAO - */ -FeatureTableStyles.prototype.getIconDao = function() { - return this.featureStyleExtension.getIconDao(); -}; - -/** - * Get the table feature styles - * @return {module:extension/style.FeatureStyles} table feature styles or null - */ -FeatureTableStyles.prototype.getTableFeatureStyles = function() { - return this.featureStyleExtension.getTableFeatureStyles(this.tableName); -}; - -/** - * Get the table styles - * @return {module:extension/style.Styles} table styles or null - */ -FeatureTableStyles.prototype.getTableStyles = function() { - return this.featureStyleExtension.getTableStyles(this.tableName); -}; - -/** - * Get the cached table styles, querying and caching if needed - * @return {module:extension/style.Styles} cached table styles - */ -FeatureTableStyles.prototype.getCachedTableStyles = function() { - var styles = this.cachedTableFeatureStyles.getStyles(); - if (styles === null) { - styles = this.cachedTableFeatureStyles.getStyles(); - if (styles === null) { - styles = this.getTableStyles(); - if (styles === null) { - styles = new Styles(); - } - this.cachedTableFeatureStyles.setStyles(styles); - } - } - if (styles.isEmpty()) { - styles = null; - } - return styles; -}; - -/** - * Get the table style of the geometry type - * @param {String} geometryType geometry type - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getTableStyle = function(geometryType) { - return this.featureStyleExtension.getTableStyle(this.tableName, geometryType); -}; - -/** - * Get the table style default - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getTableStyleDefault = function() { - return this.featureStyleExtension.getTableStyleDefault(this.tableName); -}; - -/** - * Get the table icons - * @return {module:extension/style.Icons} table icons or null - */ -FeatureTableStyles.prototype.getTableIcons = function() { - return this.featureStyleExtension.getTableIcons(this.tableName); -}; - -/** - * Get the cached table icons, querying and caching if needed - * @return {module:extension/style.Icons} cached table icons - */ -FeatureTableStyles.prototype.getCachedTableIcons = function() { - var icons = this.cachedTableFeatureStyles.getIcons(); - if (icons === null) { - icons = this.cachedTableFeatureStyles.getIcons(); - if (icons === null) { - icons = this.getTableIcons(); - if (icons === null) { - icons = new Icons(); - } - this.cachedTableFeatureStyles.setIcons(icons); - } - } - if (icons.isEmpty()) { - icons = null; - } - return icons; -}; - -/** - * Get the table icon of the geometry type - * @param {String} geometryType geometry type - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getTableIcon = function(geometryType) { - return this.featureStyleExtension.getTableIcon(this.tableName, geometryType); -}; - -/** - * Get the table icon default - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getTableIconDefault = function() { - return this.featureStyleExtension.getTableIconDefault(this.tableName); -}; - -/** - * Get the feature styles for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyles} feature styles or null - */ -FeatureTableStyles.prototype.getFeatureStylesForFeatureRow = function(featureRow) { - return this.featureStyleExtension.getFeatureStylesForFeatureRow(featureRow); -}; - -/** - * Get the feature styles for the feature id - * - * @param {Number} featureId feature id - * @return {module:extension/style.FeatureStyles} feature styles or null - */ -FeatureTableStyles.prototype.getFeatureStyles = function(featureId) { - return this.featureStyleExtension.getFeatureStyles(this.tableName, featureId); -}; - -/** - * Get the feature style (style and icon) of the feature row, searching in - * order: feature geometry type style or icon, feature default style or - * icon, table geometry type style or icon, table default style or icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureTableStyles.prototype.getFeatureStyleForFeatureRow = function(featureRow) { - return this.getFeatureStyleForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType()); -}; - -/** - * Get the feature style (style and icon) of the feature row with the - * provided geometry type, searching in order: feature geometry type style - * or icon, feature default style or icon, table geometry type style or - * icon, table default style or icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureTableStyles.prototype.getFeatureStyleForFeatureRowAndGeometryType = function(featureRow, geometryType) { - return this.getFeatureStyle(featureRow.getId(), geometryType); -}; - -/** - * Get the feature style default (style and icon) of the feature row, - * searching in order: feature default style or icon, table default style or - * icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureTableStyles.prototype.getFeatureStyleDefaultForFeatureRow = function(featureRow) { - return this.getFeatureStyle(featureRow.getId(), null); -}; - -/** - * Get the feature style (style and icon) of the feature, searching in - * order: feature geometry type style or icon, feature default style or - * icon, table geometry type style or icon, table default style or icon - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureTableStyles.prototype.getFeatureStyle = function(featureId, geometryType) { - var featureStyle = null; - var style = this.getStyle(featureId, geometryType); - var icon = this.getIcon(featureId, geometryType); - if (style != null || icon != null) { - featureStyle = new FeatureStyle(style, icon); - } - return featureStyle; -}; - -/** - * Get the feature style (style and icon) of the feature, searching in - * order: feature geometry type style or icon, feature default style or - * icon, table geometry type style or icon, table default style or icon - * - * @param {Number} featureId feature id - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureTableStyles.prototype.getFeatureStyleDefault = function(featureId) { - return this.getFeatureStyle(featureId, null); -}; - -/** - * Get the styles for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.Styles} styles or null - */ -FeatureTableStyles.prototype.getStylesForFeatureRow = function(featureRow) { - return this.featureStyleExtension.getStylesForFeatureRow(featureRow); -}; - -/** - * Get the styles for the feature id - * - * @param {Number} featureId feature id - * @return {module:extension/style.Styles} styles or null - */ -FeatureTableStyles.prototype.getStylesForFeatureId = function(featureId) { - return this.featureStyleExtension.getStylesForFeatureId(this.tableName, featureId); -}; - -/** - * Get the style of the feature row, searching in order: feature geometry - * type style, feature default style, table geometry type style, table - * default style - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getStyleForFeatureRow = function(featureRow) { - return this.getStyleForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType()); -}; - -/** - * Get the style of the feature row with the provided geometry type, - * searching in order: feature geometry type style, feature default style, - * table geometry type style, table default style - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getStyleForFeatureRowAndGeometryType = function(featureRow, geometryType) { - return this.getStyle(featureRow.getId(), geometryType); -}; - -/** - * Get the default style of the feature row, searching in order: feature - * default style, table default style - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getStyleDefaultForFeatureRow = function(featureRow) { - return this.getStyle(featureRow.getId(), null); -}; - -/** - * Get the style of the feature, searching in order: feature geometry type - * style, feature default style, table geometry type style, table default - * style - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getStyle = function(featureId, geometryType) { - var styleRow = this.featureStyleExtension.getStyle(this.tableName, featureId, geometryType, false); - if (styleRow === null) { - // Table Style - var styles = this.getCachedTableStyles(); - if (styles != null) { - styleRow = styles.getStyle(geometryType); - } - } - return styleRow; -}; - -/** - * Get the default style of the feature, searching in order: feature default - * style, table default style - * - * @param {Number} featureId feature id - * @return {module:extension/style.StyleRow} style row - */ -FeatureTableStyles.prototype.getStyleDefault = function(featureId) { - return this.getStyle(featureId, null); -}; - -/** - * Get the icons for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.Icons} icons or null - */ -FeatureTableStyles.prototype.getIconsForFeatureRow = function(featureRow) { - return this.featureStyleExtension.getIconsForFeatureRow(featureRow); -}; - -/** - * Get the icons for the feature id - * - * @param {Number} featureId feature id - * @return {module:extension/style.Icons} icons or null - */ -FeatureTableStyles.prototype.getIconsForFeatureId = function(featureId) { - return this.featureStyleExtension.getIconsForFeatureId(this.tableName, featureId); -}; - -/** - * Get the icon of the feature row, searching in order: feature geometry - * type icon, feature default icon, table geometry type icon, table default - * icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getIconForFeatureRow = function(featureRow) { - return this.getIconForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType()); -}; - -/** - * Get the icon of the feature row with the provided geometry type, - * searching in order: feature geometry type icon, feature default icon, - * table geometry type icon, table default icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getIconForFeatureRowAndGeometryType = function(featureRow, geometryType) { - return this.getIcon(featureRow.getId(), geometryType); -}; - -/** - * Get the default icon of the feature row, searching in order: feature - * default icon, table default icon - * - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getIconDefaultForFeatureRow = function(featureRow) { - return this.getIcon(featureRow.getId(), null); -}; - -/** - * Get the icon of the feature, searching in order: feature geometry type - * icon, feature default icon, table geometry type icon, table default icon - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getIcon = function(featureId, geometryType) { - var iconRow = this.featureStyleExtension.getIcon(this.tableName, featureId, geometryType, false); - if (iconRow === null) { - // Table Icon - var icons = this.getCachedTableIcons(); - if (icons != null) { - iconRow = icons.getIcon(geometryType); - } - } - return iconRow; -}; - -/** - * Get the default icon of the feature, searching in order: feature default - * icon, table default icon - * - * @param {Number} featureId feature id - * @return {module:extension/style.IconRow} icon row - */ -FeatureTableStyles.prototype.getIconDefault = function(featureId) { - return this.getIcon(featureId, null); -}; - -/** - * Set the feature table default feature styles - * - * @param {module:extension/style.FeatureStyles} featureStyles default feature styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableFeatureStyles = function(featureStyles) { - return this.featureStyleExtension.setTableFeatureStyles(this.tableName, featureStyles).then(function () { - this.clearCachedTableFeatureStyles(); - }.bind(this)); -}; - -/** - * Set the feature table default styles - * - * @param {module:extension/style.Styles} styles default styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableStyles = function(styles) { - return this.featureStyleExtension.setTableStyles(this.tableName, styles).then(function () { - this.clearCachedTableStyles(); - }.bind(this)); -}; - -/** - * Set the feature table style default - * - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableStyleDefault = function(style) { - return this.featureStyleExtension.setTableStyleDefault(this.tableName, style).then(function () { - this.clearCachedTableStyles(); - }.bind(this)); -}; - -/** - * Set the feature table style for the geometry type - * - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableStyle = function(geometryType, style) { - return this.featureStyleExtension.setTableStyle(this.tableName, geometryType, style).then(function () { - this.clearCachedTableStyles(); - }.bind(this)); -}; - -/** - * Set the feature table default icons - * - * @param {module:extension/style.Icons} icons default icons - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableIcons = function(icons) { - return this.featureStyleExtension.setTableIcons(this.tableName, icons).then(function () { - this.clearCachedTableIcons(); - }.bind(this)); -}; - -/** - * Set the feature table icon default - * - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableIconDefault = function(icon) { - return this.featureStyleExtension.setTableIconDefault(this.tableName, icon).then(function () { - this.clearCachedTableIcons(); - }.bind(this)); -}; - -/** - * Set the feature table icon for the geometry type - * - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setTableIcon = function(geometryType, icon) { - return this.featureStyleExtension.setTableIcon(this.tableName, geometryType, icon).then(function () { - this.clearCachedTableIcons(); - }.bind(this)); -}; - -/** - * Set the feature styles for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyles} featureStyles feature styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStylesForFeatureRow = function(featureRow, featureStyles) { - return this.featureStyleExtension.setFeatureStylesForFeatureRow(featureRow, featureStyles); -}; - -/** - * Set the feature styles for the feature table and feature id - * - * @param {Number} featureId feature id - * @param {module:extension/style.FeatureStyles} featureStyles feature styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyles = function(featureId, featureStyles) { - return this.featureStyleExtension.setFeatureStyles(this.tableName, featureId, featureStyles); -}; - -/** - * Set the feature style (style and icon) of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyleForFeatureRow = function(featureRow, featureStyle) { - return this.featureStyleExtension.setFeatureStyleForFeatureRow(featureRow, featureStyle); -}; - -/** - * Set the feature style (style and icon) of the feature row for the - * specified geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyleForFeatureRowAndGeometryType = function(featureRow, geometryType, featureStyle) { - return this.featureStyleExtension.setFeatureStyleForFeatureRowAndGeometryType(featureRow, geometryType, featureStyle); -}; - -/** - * Set the feature style default (style and icon) of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyleDefaultForFeatureRow = function(featureRow, featureStyle) { - return this.featureStyleExtension.setFeatureStyleDefaultForFeatureRow(featureRow, featureStyle); -}; - -/** - * Set the feature style (style and icon) of the feature - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyle = function(featureId, geometryType, featureStyle) { - return this.featureStyleExtension.setFeatureStyle(this.tableName, featureId, geometryType, featureStyle); -}; - -/** - * Set the feature style (style and icon) of the feature - * - * @param {Number} featureId feature id - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureTableStyles.prototype.setFeatureStyleDefault = function(featureId, featureStyle) { - return this.featureStyleExtension.setFeatureStyleDefault(this.tableName, featureId, featureStyle); -}; - -/** - * Set the styles for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.StyleRow} styles styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setStylesForFeatureRow = function(featureRow, styles) { - return this.featureStyleExtension.setStylesForFeatureRow(featureRow, styles); -}; - -/** - * Set the styles for the feature table and feature id - * - * @param {Number} featureId feature id - * @param {module:extension/style.Styles} styles styles - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyles = function(featureId, styles) { - return this.featureStyleExtension.setStyles(this.tableName, featureId, styles); -}; - -/** - * Set the style of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyleForFeatureRow = function(featureRow, style) { - return this.featureStyleExtension.setStyleForFeatureRow(featureRow, style); -}; - -/** - * Set the style of the feature row for the specified geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyleForFeatureRowAndGeometryType = function(featureRow, geometryType, style) { - return this.featureStyleExtension.setStyleForFeatureRowAndGeometryType(featureRow, geometryType, style); -}; - -/** - * Set the default style of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyleDefaultForFeatureRow = function(featureRow, style) { - return this.featureStyleExtension.setStyleDefaultForFeatureRow(featureRow, style); -}; - -/** - * Set the style of the feature - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyle = function(featureId, geometryType, style) { - return this.featureStyleExtension.setStyle(this.tableName, featureId, geometryType, style); -}; - -/** - * Set the default style of the feature - * - * @param {Number} featureId feature id - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureTableStyles.prototype.setStyleDefault = function(featureId, style) { - return this.featureStyleExtension.setStyleDefault(this.tableName, featureId, style); -}; - -/** - * Set the icons for the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.Icons} icons icons - * @return {Promise} - */ -FeatureTableStyles.prototype.setIconsForFeatureRow = function(featureRow, icons) { - return this.featureStyleExtension.setIconsForFeatureRow(featureRow, icons); -}; - -/** - * Set the icons for the feature table and feature id - * - * @param {Number} featureId feature id - * @param {module:extension/style.Icons} icons icons - * @return {Promise} - */ -FeatureTableStyles.prototype.setIcons = function(featureId, icons) { - return this.featureStyleExtension.setIcons(this.tableName, featureId, icons); -}; - -/** - * Set the icon of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setIconForFeatureRow = function(featureRow, icon) { - return this.featureStyleExtension.setIconForFeatureRow(featureRow, icon); -}; - -/** - * Set the icon of the feature row for the specified geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setIconForFeatureRowAndGeometryType = function(featureRow, geometryType, icon) { - return this.featureStyleExtension.setIconForFeatureRowAndGeometryType(featureRow, geometryType, icon); -}; - -/** - * Set the default icon of the feature row - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setIconDefaultForFeatureRow = function(featureRow, icon) { - return this.featureStyleExtension.setIconDefaultForFeatureRow(featureRow, icon); -}; - -/** - * Get the icon of the feature, searching in order: feature geometry type - * icon, feature default icon, table geometry type icon, table default icon - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setIcon = function(featureId, geometryType, icon) { - return this.featureStyleExtension.setIcon(this.tableName, featureId, geometryType, icon); -}; - -/** - * Set the default icon of the feature - * - * @param {Number} featureId feature id - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureTableStyles.prototype.setIconDefault = function(featureId, icon) { - return this.featureStyleExtension.setIconDefault(this.tableName, featureId, icon); -}; - -/** - * Delete all feature styles including table styles, table icons, style, and - * icons - */ -FeatureTableStyles.prototype.deleteAllFeatureStyles = function() { - this.featureStyleExtension.deleteAllFeatureStyles(this.tableName); - this.clearCachedTableFeatureStyles(); -}; - -/** - * Delete all styles including table styles and feature row styles - */ -FeatureTableStyles.prototype.deleteAllStyles = function() { - this.featureStyleExtension.deleteAllStyles(this.tableName); - this.clearCachedTableStyles(); -}; - -/** - * Delete all icons including table icons and feature row icons - */ -FeatureTableStyles.prototype.deleteAllIcons = function() { - this.featureStyleExtension.deleteAllIcons(this.tableName); - this.clearCachedTableIcons(); -}; - -/** - * Delete the feature table feature styles - */ -FeatureTableStyles.prototype.deleteTableFeatureStyles = function() { - this.featureStyleExtension.deleteTableFeatureStyles(this.tableName); - this.clearCachedTableFeatureStyles(); -}; - -/** - * Delete the feature table styles - */ -FeatureTableStyles.prototype.deleteTableStyles = function() { - this.featureStyleExtension.deleteTableStyles(this.tableName); - this.clearCachedTableStyles(); -}; - -/** - * Delete the feature table default style - */ -FeatureTableStyles.prototype.deleteTableStyleDefault = function() { - this.featureStyleExtension.deleteTableStyleDefault(this.tableName); - this.clearCachedTableStyles(); -}; - -/** - * Delete the feature table style for the geometry type - * - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteTableStyle = function(geometryType) { - this.featureStyleExtension.deleteTableStyle(this.tableName, geometryType); - this.clearCachedTableStyles(); -}; - -/** - * Delete the feature table icons - */ -FeatureTableStyles.prototype.deleteTableIcons = function() { - this.featureStyleExtension.deleteTableIcons(this.tableName); - this.clearCachedTableIcons(); -}; - -/** - * Delete the feature table default icon - */ -FeatureTableStyles.prototype.deleteTableIconDefault = function() { - this.featureStyleExtension.deleteTableIconDefault(this.tableName); - this.clearCachedTableIcons(); -}; - -/** - * Delete the feature table icon for the geometry type - * - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteTableIcon = function(geometryType) { - this.featureStyleExtension.deleteTableIcon(this.tableName, geometryType); - this.clearCachedTableIcons(); -}; - -/** - * Clear the cached table feature styles - */ -FeatureTableStyles.prototype.clearCachedTableFeatureStyles = function() { - this.cachedTableFeatureStyles.setStyles(null); - this.cachedTableFeatureStyles.setIcons(null); -}; - -/** - * Clear the cached table styles - */ -FeatureTableStyles.prototype.clearCachedTableStyles = function() { - this.cachedTableFeatureStyles.setStyles(null); -}; - -/** - * Clear the cached table icons - */ -FeatureTableStyles.prototype.clearCachedTableIcons = function() { - this.cachedTableFeatureStyles.setIcons(null); -}; - -/** - * Delete all feature styles - */ -FeatureTableStyles.prototype.deleteFeatureStyles = function() { - this.featureStyleExtension.deleteFeatureStyles(this.tableName); -}; - -/** - * Delete all styles - */ -FeatureTableStyles.prototype.deleteStyles = function() { - this.featureStyleExtension.deleteStyles(this.tableName); -}; - -/** - * Delete feature row styles - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteStylesForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteStylesForFeatureRow(featureRow); -}; - -/** - * Delete feature row styles - * - * @param {Number} featureId feature id - */ -FeatureTableStyles.prototype.deleteStylesForFeatureId = function(featureId) { - this.featureStyleExtension.deleteStylesForFeatureId(this.tableName, featureId); -}; - -/** - * Delete the feature row default style - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteStyleDefaultForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteStyleDefaultForFeatureRow(featureRow); -}; - -/** - * Delete the feature row default style - * - * @param {Number} featureId feature id - */ -FeatureTableStyles.prototype.deleteStyleDefault = function(featureId) { - this.featureStyleExtension.deleteStyleDefault(this.tableName, featureId); -}; - -/** - * Delete the feature row style for the feature row geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteStyleForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteStyleForFeatureRow(featureRow); -}; - -/** - * Delete the feature row style for the geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteStyleForFeatureRowAndGeometryType = function(featureRow, geometryType) { - this.featureStyleExtension.deleteStyleForFeatureRowAndGeometryType(featureRow, geometryType); -}; - -/** - * Delete the feature row style for the geometry type - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteStyle = function(featureId, geometryType) { - this.featureStyleExtension.deleteStyle(this.tableName, featureId, geometryType); -}; - -/** - * Delete all icons - */ -FeatureTableStyles.prototype.deleteIcons = function() { - this.featureStyleExtension.deleteIcons(this.tableName); -}; - -/** - * Delete feature row icons - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteIconsForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteIconsForFeatureRow(featureRow); -}; - -/** - * Delete feature row icons - * - * @param {Number} featureId feature id - */ -FeatureTableStyles.prototype.deleteIconsForFeatureId = function(featureId) { - this.featureStyleExtension.deleteIconsForFeatureId(this.tableName, featureId); -}; - -/** - * Delete the feature row default icon - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteIconDefaultForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteIconDefaultForFeatureRow(featureRow); -}; - -/** - * Delete the feature row default icon - * - * @param {Number} featureId feature id - */ -FeatureTableStyles.prototype.deleteIconDefault = function(featureId) { - this.featureStyleExtension.deleteIconDefault(this.tableName, featureId); -}; - -/** - * Delete the feature row icon for the feature row geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureTableStyles.prototype.deleteIconForFeatureRow = function(featureRow) { - this.featureStyleExtension.deleteIconForFeatureRow(featureRow); -}; - -/** - * Delete the feature row icon for the geometry type - * - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteIconForFeatureRowAndGeometryType = function(featureRow, geometryType) { - this.featureStyleExtension.deleteIconForFeatureRowAndGeometryType(featureRow, geometryType); -}; - -/** - * Delete the feature row icon for the geometry type - * - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - */ -FeatureTableStyles.prototype.deleteIcon = function(featureId, geometryType) { - this.featureStyleExtension.deleteIcon(this.tableName, featureId, geometryType); -}; - -/** - * Get all the unique style row ids the table maps to - * - * @return {module:extension/style.StyleRow} style row ids - */ -FeatureTableStyles.prototype.getAllTableStyleIds = function() { - return this.featureStyleExtension.getAllTableStyleIds(this.tableName); -}; - -/** - * Get all the unique icon row ids the table maps to - * - * @return {module:extension/style.IconRow} icon row ids - */ -FeatureTableStyles.prototype.getAllTableIconIds = function() { - return this.featureStyleExtension.getAllTableIconIds(this.tableName); -}; - -/** - * Get all the unique style row ids the features map to - * - * @return {module:extension/style.StyleRow} style row ids - */ -FeatureTableStyles.prototype.getAllStyleIds = function() { - return this.featureStyleExtension.getAllStyleIds(this.tableName); -}; - -/** - * Get all the unique icon row ids the features map to - * - * @return {module:extension/style.IconRow} icon row ids - */ -FeatureTableStyles.prototype.getAllIconIds = function() { - return this.featureStyleExtension.getAllIconIds(this.tableName); -}; - -module.exports = FeatureTableStyles; - -},{"./featureStyle":46,"./featureStyles":47,"./icons":53,"./styles":62}],49:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class IconCache - */ - -/** - * Constructor, created with cache size of {@link #IconCache.DEFAULT_CACHE_SIZE} - * @constructor - */ -var IconCache = function(size = null) { - this.cacheSize = size !== null ? size : IconCache.DEFAULT_CACHE_SIZE; - this.iconCache = {}; - this.accessHistory = []; -}; - -/** - * Get the cached image for the icon row or null if not cached - * @param {module:extension/style.IconRow} iconRow icon row - * @return {Image} icon image or null - */ -IconCache.prototype.getIconForIconRow = function(iconRow) { - return this.get(iconRow.getId()); -}; - -/** - * Get the cached image for the icon row id or null if not cached - * @param {Number} iconRowId icon row id - * @return {Image} icon image or null - */ -IconCache.prototype.get = function(iconRowId) { - var image = this.iconCache[iconRowId]; - if (!!image) { - var index = this.accessHistory.indexOf(iconRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } - this.accessHistory.push(iconRowId); - } - return image; -}; - -/** - * Cache the icon image for the icon row - * @param {module:extension/style.IconRow} iconRow icon row - * @param {Image} image icon image - * @return {Image} previous cached icon image or null - */ -IconCache.prototype.putIconForIconRow = function(iconRow, image) { - return this.put(iconRow.getId(), image); -}; - -/** - * Cache the icon image for the icon row id - * @param {Number} iconRowId icon row id - * @param {Image} image icon image - * @return {Image} previous cached icon image or null - */ -IconCache.prototype.put = function(iconRowId, image) { - var previous = this.iconCache[iconRowId]; - this.iconCache[iconRowId] = image; - if (!!previous) { - var index = this.accessHistory.indexOf(iconRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } - } - this.accessHistory.push(iconRowId); - if (Object.keys(this.iconCache).length > this.cacheSize) { - var iconId = this.accessHistory.shift(); - if (iconId) { - delete this.iconCache[iconId]; - } - } - return previous; -}; - -/** - * Remove the cached image for the icon row - * @param {module:extension/style.IconRow} iconRow icon row - * @return {Image} removed icon image or null - */ -IconCache.prototype.removeIconForIconRow = function(iconRow) { - return this.remove(iconRow.getId()); -}; - -/** - * Remove the cached image for the icon row id - * @param {Number} iconRowId icon row id - * @return {Image} removed icon image or null - */ -IconCache.prototype.remove = function(iconRowId) { - var removed = this.iconCache[iconRowId]; - delete this.iconCache[iconRowId]; - if (!!removed) { - var index = this.accessHistory.indexOf(iconRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } } - return removed; -}; - -/** - * Clear the cache - */ -IconCache.prototype.clear = function() { - this.iconCache = {}; - this.accessHistory = []; -}; - -/** - * Resize the cache - * @param {Number} maxSize max size - */ -IconCache.prototype.resize = function(maxSize) { - this.cacheSize = maxSize; - var keys = Object.keys(this.iconCache); - if (keys.length > maxSize) { - var numberToRemove = keys.length - maxSize; - for (var i = 0; i < numberToRemove; i++) { - delete this.iconCache[this.accessHistory.shift()]; - } - } -}; - -/** - * Create or retrieve from cache an icon image for the icon row - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} icon image - */ -IconCache.prototype.createIcon = function(icon) { - return this.createAndCacheIcon(icon, this); -}; - -/** - * Create or retrieve from cache an icon image for the icon row - * @param {module:extension/style.IconRow} icon icon row - * @param {Number} scale scale factor - * @return {Promise} icon image - */ -IconCache.prototype.createScaledIcon = function(icon, scale) { - return this.createAndCacheScaledIcon(icon, scale, this); -}; - -/** - * Create an icon image for the icon row without caching - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} icon image - */ -IconCache.prototype.createIconNoCache = function(icon) { - return this.createScaledIconNoCache(icon, 1.0); -}; - -/** - * Create an icon image for the icon row without caching - * @param icon icon row - * @param scale scale factor - * @return {Promise} icon image - */ -IconCache.prototype.createScaledIconNoCache = function(icon, scale) { - return this.createAndCacheScaledIcon(icon, scale, null); -}; - -/** - * Create or retrieve from cache an icon image for the icon row - * @param {module:extension/style.IconRow} icon icon row - * @param {module:extension/style.IconCache} iconCache icon cache - * @return {Promise} icon image - */ -IconCache.prototype.createAndCacheIcon = function(icon, iconCache) { - return this.createAndCacheScaledIcon(icon, 1.0, iconCache); -}; - -/** - * Create or retrieve from cache an icon image for the icon row - * @param {module:extension/style.IconRow} icon icon row - * @param {Number} scale scale factor - * @param {module:extension/style.IconCache} iconCache icon cache - * @return {Promise} icon image - */ -IconCache.prototype.createAndCacheScaledIcon = async function(icon, scale, iconCache) { - var iconImage = null; - if (icon != null) { - var iconId = icon.getId(); - if (iconCache !== null) { - iconImage = iconCache.get(iconId); - } - var iconScaledWidth = Math.round(icon.getWidth() * scale); - var iconScaledHeight = Math.round(icon.getHeight() * scale); - if (!iconImage || iconImage.width !== iconScaledWidth || iconImage.height !== iconScaledHeight) { - iconImage = await icon.getScaledDataImage(scale); - } - if (iconCache !== null) { - iconCache.putIconForIconRow(icon, iconImage); - } - } - return iconImage; -}; - -IconCache.DEFAULT_CACHE_SIZE = 100; - -module.exports = IconCache; - -},{}],50:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class IconDao - */ - -var IconRow = require('./iconRow') - , MediaDao = require('../relatedTables/mediaDao'); - -var util = require('util'); - -/** - * Icon DAO for reading user icon data tables - * @extends {module:user/userDao~MediaDao} - * @param {module:db/geoPackageConnection~GeoPackageConnection} geoPackage connection - * @param {string} table table name - * @constructor - */ -var IconDao = function(geoPackage, table) { - MediaDao.call(this, geoPackage, table); - this.table = table; -}; - -util.inherits(IconDao, MediaDao); - -/** - * Create a new icon row - * @return {module:extension/style.IconRow} - */ -IconDao.prototype.newRow = function() { - return new IconRow(this.table); -}; - -/** - * Create a icon row with the column types and values - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/style.IconRow} icon row - */ -IconDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new IconRow(this.table, columnTypes, values); -}; - -module.exports = IconDao; - -},{"../relatedTables/mediaDao":33,"./iconRow":51,"util":343}],51:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class IconRow - */ - -var MediaRow = require('../relatedTables/mediaRow'); -var util = require('util'); -var ImageUtils = require('../../tiles/imageUtils'); - -/** - * Icon Row - * @extends {module:extension/relatedTables~MediaRow} - * @param {module:extension/style.IconTable} iconTable icon table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @constructor - */ -var IconRow = function(iconTable, columnTypes, values) { - MediaRow.call(this, iconTable, columnTypes, values); - this.iconTable = iconTable; -}; - -util.inherits(IconRow, MediaRow); - -/** - * Get the name column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getNameColumn = function() { - return this.iconTable.getNameColumn(); -}; - -/** - * Gets the name - * @return {String} - */ -IconRow.prototype.getName = function() { - return this.getValueWithColumnName(this.getNameColumn().name); -}; - -/** - * Sets the name for the row - * @param {String} name name - */ -IconRow.prototype.setName = function(name) { - this.setValueWithColumnName(this.getNameColumn().name, name); -}; - -/** - * Get the description column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getDescriptionColumn = function() { - return this.iconTable.getDescriptionColumn(); -}; - -/** - * Gets the description - * @return {String} - */ -IconRow.prototype.getDescription = function() { - return this.getValueWithColumnName(this.getDescriptionColumn().name); -}; - -/** - * Sets the description for the row - * @param {string} description description - */ -IconRow.prototype.setDescription = function(description) { - this.setValueWithColumnName(this.getDescriptionColumn().name, description); -}; - -/** - * Get the width column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getWidthColumn = function() { - return this.iconTable.getWidthColumn(); -}; - -/** - * Gets the width - * @return {Number} - */ -IconRow.prototype.getWidth = function() { - return this.getValueWithColumnName(this.getWidthColumn().name); -}; - -/** - * Sets the width for the row - * @param {Number} width width - */ -IconRow.prototype.setWidth = function(width) { - this.setValueWithColumnName(this.getWidthColumn().name, width); -}; - -/** - * Get the width or derived width from the icon data and scaled as needed - * for the height - * - * @return {Promise} derived width - */ -IconRow.prototype.getDerivedWidth = function() { - var width = this.getWidth(); - if (width === undefined || width === null) { - width = this.getDerivedDimensions()[0]; - } - return width; -}; - -/** - * Get the height column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getHeightColumn = function() { - return this.iconTable.getHeightColumn(); -}; - -/** - * Gets the height - * @return {Number} - */ -IconRow.prototype.getHeight = function() { - return this.getValueWithColumnName(this.getHeightColumn().name); -}; - -/** - * Sets the height for the row - * @param {Number} height height - */ -IconRow.prototype.setHeight = function(height) { - this.setValueWithColumnName(this.getHeightColumn().name, height); -}; - -/** - * Get the height or derived height from the icon data and scaled as needed - * for the width - * - * @return {Promise} derived height - */ -IconRow.prototype.getDerivedHeight = function() { - var height = this.getHeight(); - if (height === undefined || height === null) { - height = this.getDerivedDimensions()[1]; - } - return height; -}; - -/** - * Get the derived width and height from the values and icon data, scaled as needed - * @return {Number[]} derived dimensions array with two values, width at index 0, height at index 1 - */ -IconRow.prototype.getDerivedDimensions = function() { - var width = this.getWidth(); - var height = this.getHeight(); - if (width === undefined || width === null || height === undefined || height === null) { - var dataWidth; - var dataHeight; - var imageSize = ImageUtils.getImageSize(this.getData()); - dataWidth = imageSize.width; - dataHeight = imageSize.height; - if (width === undefined || width === null) { - width = dataWidth; - if (height !== undefined && height !== null) { - width *= (height / dataHeight); - } - } - if (height === undefined || height === null) { - height = dataHeight; - if (width !== undefined && width !== null) { - height *= (width / dataWidth); - } - } - } - return [width, height]; -}; - -/** - * Get the anchor_u column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getAnchorUColumn = function() { - return this.iconTable.getAnchorUColumn(); -}; - -/** - * Gets the anchor_u - * @return {Number} - */ -IconRow.prototype.getAnchorU = function() { - return this.getValueWithColumnName(this.getAnchorUColumn().name); -}; - -/** - * Sets the anchor_u for the row - * @param {Number} anchor_u anchor_u - */ -IconRow.prototype.setAnchorU = function(anchor_u) { - this.validateAnchor(anchor_u); - this.setValueWithColumnName(this.getAnchorUColumn().name, anchor_u); -}; - -/** - * Get the anchor u value or the default value of 0.5 - * @return {Number} anchor u value - */ -IconRow.prototype.getAnchorUOrDefault = function() { - var anchorU = this.getAnchorU(); - if (anchorU == null) { - anchorU = 0.5; - } - return anchorU; -}; - -/** - * Get the anchor_v column - * @return {module:user/userColumn~UserColumn} - */ -IconRow.prototype.getAnchorVColumn = function() { - return this.iconTable.getAnchorVColumn(); -}; - -/** - * Gets the anchor_v - * @return {Number} - */ -IconRow.prototype.getAnchorV = function() { - return this.getValueWithColumnName(this.getAnchorVColumn().name); -}; - -/** - * Sets the anchor_v for the row - * @param {Number} anchor_v anchor_v - */ -IconRow.prototype.setAnchorV = function(anchor_v) { - this.validateAnchor(anchor_v); - this.setValueWithColumnName(this.getAnchorVColumn().name, anchor_v); -}; - -/** - * Get the anchor v value or the default value of 1.0 - * @return {Number} anchor v value - */ -IconRow.prototype.getAnchorVOrDefault = function() { - var anchorV = this.getAnchorV(); - if (anchorV == null) { - anchorV = 1.0; - } - return anchorV; -}; - -/** - * Validate the anchor value - * @param {Number} anchor anchor - */ -IconRow.prototype.validateAnchor = function(anchor) { - if (anchor != null && (anchor < 0.0 || anchor > 1.0)) { - throw new Error("Anchor must be set inclusively between 0.0 and 1.0, invalid value: " + anchor); - } -}; - -module.exports = IconRow; - -},{"../../tiles/imageUtils":89,"../relatedTables/mediaRow":34,"util":343}],52:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class IconTable - */ - -var MediaTable = require('../relatedTables/mediaTable') - , UserCustomColumn = require('../../user/custom/userCustomColumn') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * Icon Requirements Class Media Table - * @class - * @extends {module:extension/relatedTables~MediaTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns media columns - * @param {string[]} requiredColumns required column names - */ -var IconTable = function(tableName, columns, requiredColumns) { - MediaTable.call(this, tableName, columns, requiredColumns); -}; - -util.inherits(IconTable, MediaTable); - -/** - * Create a media table with a minimum required columns followed by the additional columns - * @return {module:extension/relatedTables~MediaTable} - */ -IconTable.create = function() { - return new IconTable(IconTable.TABLE_NAME, IconTable.createColumns(), IconTable.requiredColumns()); -}; - -IconTable.createRequiredColumns = function() { - return MediaTable.createRequiredColumns(); -}; - -/** - * Get the required columns - * @return {string[]} - */ -IconTable.requiredColumns = function() { - return MediaTable.requiredColumns(); -}; - -/** - * Create the columns - * @return {module:user/userColumn~UserColumn[]} - */ -IconTable.createColumns = function() { - var columns = IconTable.createRequiredColumns(); - var index = columns.length; - columns.push(UserCustomColumn.createColumn(index++, IconTable.COLUMN_NAME, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, IconTable.COLUMN_DESCRIPTION, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, IconTable.COLUMN_WIDTH, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, IconTable.COLUMN_HEIGHT, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, IconTable.COLUMN_ANCHOR_U, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index, IconTable.COLUMN_ANCHOR_V, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - return columns; -}; - -/** - * Get the name column index - * @return int - */ -IconTable.prototype.getNameColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_NAME); -}; - -/** - * Get the name column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getNameColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_NAME); -}; - -/** - * Get the description column index - * @return int - */ -IconTable.prototype.getDescriptionColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_DESCRIPTION); -}; - -/** - * Get the description column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getDescriptionColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_DESCRIPTION); -}; - -/** - * Get the width column index - * @return int - */ -IconTable.prototype.getWidthColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_WIDTH); -}; - -/** - * Get the width column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getWidthColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_WIDTH); -}; - -/** - * Get the height column index - * @return int - */ -IconTable.prototype.getHeightColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_HEIGHT); -}; - -/** - * Get the height column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getHeightColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_HEIGHT); -}; - -/** - * Get the anchor_u column index - * @return int - */ -IconTable.prototype.getAnchorUColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_ANCHOR_U); -}; - -/** - * Get the anchor_u column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getAnchorUColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_ANCHOR_U); -}; - -/** - * Get the anchor_v column index - * @return int - */ -IconTable.prototype.getAnchorVColumnIndex = function() { - return this.getColumnIndex(IconTable.COLUMN_ANCHOR_V); -}; - -/** - * Get the anchor_v column - * @return {module:user/userColumn~UserColumn} - */ -IconTable.prototype.getAnchorVColumn = function() { - return this.getColumnWithColumnName(IconTable.COLUMN_ANCHOR_V); -}; - -IconTable.TABLE_NAME = 'nga_icon'; -IconTable.COLUMN_NAME = 'name'; -IconTable.COLUMN_DESCRIPTION = 'description'; -IconTable.COLUMN_WIDTH = 'width'; -IconTable.COLUMN_HEIGHT = 'height'; -IconTable.COLUMN_ANCHOR_U = 'anchor_u'; -IconTable.COLUMN_ANCHOR_V = 'anchor_v'; -IconTable.prototype.TABLE_TYPE = 'media'; - -module.exports = IconTable; - -},{"../../db/dataTypes":14,"../../user/custom/userCustomColumn":101,"../relatedTables/mediaTable":35,"util":343}],53:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class Icons - */ - -/** - * Icons constructor - * @constructor - */ -var Icons = function() { - this.defaultIcon = null; - this.icons = {}; -}; - -Icons.prototype.setDefault = function(iconRow) { - this.defaultIcon = iconRow; -}; - -Icons.prototype.getDefault = function() { - return this.defaultIcon; -}; - -Icons.prototype.setIcon = function(iconRow, geometryType) { - if (geometryType != null) { - if (iconRow != null) { - this.icons[geometryType] = iconRow; - } else { - delete this.icons[geometryType]; - } - } else { - this.setDefault(iconRow); - } -}; - -Icons.prototype.getIcon = function(geometryType) { - var iconRow = null; - if (geometryType != null) { - iconRow = this.icons[geometryType]; - } - if (iconRow === null || geometryType === null) { - iconRow = this.getDefault(); - } - return iconRow; -}; - -Icons.prototype.isEmpty = function() { - return Object.keys(this.icons).length === 0 && this.defaultIcon === null; -}; - -module.exports = Icons; - -},{}],54:[function(require,module,exports){ -/** - * @module extension/style - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension - , ContentsIdDao = require('../contents/contentsIdDao') - , IconTable = require('./iconTable') - , IconDao = require('./iconDao') - , StyleTable = require('./styleTable') - , StyleDao = require('./styleDao') - , StyleMappingTable = require('./styleMappingTable') - , StyleMappingDao = require('./styleMappingDao') - , UserMappingTable = require('../relatedTables/userMappingTable') - , FeatureStyles = require('./featureStyles') - , FeatureStyle = require('./featureStyle') - , Styles = require('./styles') - , Icons = require('./icons') - , StyleTableReader = require('./styleTableReader') - , UserTableReader = require('../../user/userTableReader'); - -var util = require('util'); - -/** - * Style extension - * @param {module:geoPackage~GeoPackage} geoPackage GeoPackage object - * @extends {module:extension/baseExtension~BaseExtension} - * @constructor - */ -var FeatureStyleExtension = function(geoPackage) { - BaseExtension.call(this, geoPackage); - this.relatedTablesExtension = geoPackage.getRelatedTablesExtension(); - this.contentsIdExtension = geoPackage.getContentsIdExtension(); -}; - -util.inherits(FeatureStyleExtension, BaseExtension); - -/** - * Get or create the metadata extension - * @param {module:features/user/featureTable|String} featureTable, defaults to null - * @return {Promise} - */ -FeatureStyleExtension.prototype.getOrCreateExtension = function(featureTable) { - return this.getOrCreate(FeatureStyleExtension.EXTENSION_NAME, this.getFeatureTableName(featureTable), null, FeatureStyleExtension.EXTENSION_DEFINITION, Extension.READ_WRITE); -}; - -/** - * Determine if the GeoPackage has the extension or has the extension for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {Boolean} - */ -FeatureStyleExtension.prototype.has = function (featureTable) { - return this.hasExtension(FeatureStyleExtension.EXTENSION_NAME, this.getFeatureTableName(featureTable), null); -}; - -/** - * Gets featureTables - * @returns {String[]} - */ -FeatureStyleExtension.prototype.getTables = function() { - var tables = []; - if (this.extensionsDao.isTableExists()) { - var extensions = this.extensionsDao.queryAllByExtension(FeatureStyleExtension.EXTENSION_NAME); - for (var i = 0; i < extensions.length; i++) { - tables.push(extensions[i].table_name); - } - } - return tables; -}; - -/** - * Get the related tables extension - * @returns {module:extension/relatedTables~RelatedTablesExtension} - */ -FeatureStyleExtension.prototype.getRelatedTables = function () { - return this.relatedTablesExtension; -}; - -/** - * Get the contentsId extension - * @returns {module:extension/contents~ContentsIdExtension} - */ -FeatureStyleExtension.prototype.getContentsId = function () { - return this.contentsIdExtension; -}; - -/** - * Create style, icon, table style, and table icon relationships for the - * feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Promise} - */ -FeatureStyleExtension.prototype.createRelationships = function(featureTable) { - var promises = []; - promises.push(this.createStyleRelationship(featureTable)); - promises.push(this.createTableStyleRelationship(featureTable)); - promises.push(this.createIconRelationship(featureTable)); - promises.push(this.createTableIconRelationship(featureTable)); - return Promise.all(promises); -}; - -/** - * Check if feature table has a style, icon, table style, or table icon - * relationships - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {boolean} - */ -FeatureStyleExtension.prototype.hasRelationship = function(featureTable) { - return this.hasStyleRelationship(featureTable) - || this.hasTableStyleRelationship(featureTable) - || this.hasIconRelationship(featureTable) - || this.hasTableIconRelationship(featureTable); -}; - -/** - * Create a style relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Promise} - */ -FeatureStyleExtension.prototype.createStyleRelationship = function(featureTable) { - return this._createStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_STYLE, featureTable), this.getFeatureTableName(featureTable), this.getFeatureTableName(featureTable), StyleTable.TABLE_NAME); -}; - -/** - * Determine if a style relationship exists for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {boolean} - */ -FeatureStyleExtension.prototype.hasStyleRelationship = function(featureTable) { - return this._hasStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_STYLE, featureTable), this.getFeatureTableName(featureTable), StyleTable.TABLE_NAME); -}; - -/** - * Create a feature table style relationship - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Promise} - */ -FeatureStyleExtension.prototype.createTableStyleRelationship = function(featureTable) { - return this._createStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_STYLE, featureTable), this.getFeatureTableName(featureTable), ContentsIdDao.TABLE_NAME, StyleTable.TABLE_NAME); -}; - -/** - * Determine if a feature table style relationship exists - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {boolean} true if relationship exists - */ -FeatureStyleExtension.prototype.hasTableStyleRelationship = function(featureTable) { - return this._hasStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_STYLE, featureTable), ContentsIdDao.TABLE_NAME, StyleTable.TABLE_NAME); -}; - -/** - * Create an icon relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Promise} - */ -FeatureStyleExtension.prototype.createIconRelationship = function(featureTable) { - return this._createStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_ICON, featureTable), this.getFeatureTableName(featureTable), this.getFeatureTableName(featureTable), IconTable.TABLE_NAME); -}; - -/** - * Determine if an icon relationship exists for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {boolean} true if relationship exists - */ -FeatureStyleExtension.prototype.hasIconRelationship = function(featureTable) { - return this._hasStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_ICON, featureTable), this.getFeatureTableName(featureTable), IconTable.TABLE_NAME); -}; - -/** - * Create a feature table icon relationship - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Promise} - */ -FeatureStyleExtension.prototype.createTableIconRelationship = function(featureTable) { - return this._createStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_ICON, featureTable), this.getFeatureTableName(featureTable), ContentsIdDao.TABLE_NAME, IconTable.TABLE_NAME); -}; - -/** - * Determine if a feature table icon relationship exists - * @param {module:features/user/featureTable|String} featureTable feature table - * @returns {Boolean} true if relationship exists - */ -FeatureStyleExtension.prototype.hasTableIconRelationship = function(featureTable) { - return this._hasStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_ICON, featureTable), ContentsIdDao.TABLE_NAME, IconTable.TABLE_NAME); -}; - -/** - * Get the mapping table name - * @param tablePrefix table name prefix - * @param {module:features/user/featureTable|String} featureTable feature table name - * @returns {String} mapping table name - */ -FeatureStyleExtension.prototype.getMappingTableName = function(tablePrefix, featureTable) { - return tablePrefix + this.getFeatureTableName(featureTable); -}; - -/** - * Check if the style extension relationship between a feature table and - * style extension table exists - * @param {String} mappingTableName mapping table name - * @param {String} baseTable base table name - * @param {String} relatedTable related table name - * @returns {boolean} true if relationship exists - */ -FeatureStyleExtension.prototype._hasStyleRelationship = function(mappingTableName, baseTable, relatedTable) { - return this.relatedTablesExtension.hasRelations(baseTable, relatedTable, mappingTableName).length !== 0; -}; - -/** - * Create a style extension relationship between a feature table and style - * extension table - * @param {String} mappingTableName mapping table name - * @param {String} featureTable feature table - * @param {String} baseTable base table name - * @param {String} relatedTable related table name - * @return {Promise} - * @private - */ -FeatureStyleExtension.prototype._createStyleRelationship = function(mappingTableName, featureTable, baseTable, relatedTable) { - if (!this._hasStyleRelationship(mappingTableName, baseTable, relatedTable)) { - // Create the extension - return this.getOrCreateExtension(featureTable).then(function () { - if (baseTable === ContentsIdDao.TABLE_NAME && !this.contentsIdExtension.has()) { - return this.contentsIdExtension.getOrCreateExtension().then(function () { - return this._handleCreateStyleRelationship(mappingTableName, baseTable, relatedTable); - }.bind(this)); - } else { - return this._handleCreateStyleRelationship(mappingTableName, baseTable, relatedTable); - } - }.bind(this)); - } else { - return Promise.resolve(); - } -}; - -/** - * Private function to aid in creation of the a style extension relationship between a feature table and style extension table - * @param {String} mappingTableName - * @param {String} baseTable - * @param {String} relatedTable - * @return {Promise} - * @private - */ -FeatureStyleExtension.prototype._handleCreateStyleRelationship = function(mappingTableName, baseTable, relatedTable) { - if (relatedTable === StyleTable.TABLE_NAME) { - return this.relatedTablesExtension.addAttributesRelationship(this.geoPackage.getRelatedTablesExtension().getRelationshipBuilder() - .setBaseTableName(baseTable) - .setUserMappingTable(StyleMappingTable.create(mappingTableName)) - .setRelatedTable(StyleTable.create())); - } else { - return this.relatedTablesExtension.addMediaRelationship(this.geoPackage.getRelatedTablesExtension().getRelationshipBuilder() - .setBaseTableName(baseTable) - .setUserMappingTable(StyleMappingTable.create(mappingTableName)) - .setRelatedTable(IconTable.create())); - } -}; - -/** - * Delete the style and icon table and row relationships for all feature - * tables - */ -FeatureStyleExtension.prototype.deleteAllRelationships = function() { - var tables = this.getTables(); - for (var i = 0; i < tables.length; i++) { - this.deleteRelationships(tables[i]); - } -}; - -/** - * Delete the style and icon table and row relationships for the feature - * table - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteRelationships = function(featureTable) { - this.deleteStyleRelationship(featureTable); - this.deleteTableStyleRelationship(featureTable); - this.deleteIconRelationship(featureTable); - this.deleteTableIconRelationship(featureTable); -}; - -/** - * Delete a style relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteStyleRelationship = function(featureTable) { - this._deleteStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_STYLE, featureTable), featureTable); -}; - -/** - * Delete a table style relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableStyleRelationship = function(featureTable) { - this._deleteStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_STYLE, featureTable), featureTable); -}; - -/** - * Delete a icon relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteIconRelationship = function(featureTable) { - this._deleteStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_ICON, featureTable), featureTable); -}; - -/** - * Delete a table icon relationship for the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableIconRelationship = function(featureTable) { - this._deleteStyleRelationship(this.getMappingTableName(FeatureStyleExtension.TABLE_MAPPING_TABLE_ICON, featureTable), featureTable); -}; - -/** - * Delete a style extension feature table relationship and the mapping table - * @param {String} mappingTableName - * @param {module:features/user/featureTable|String} featureTable feature table - * @private - */ -FeatureStyleExtension.prototype._deleteStyleRelationship = function(mappingTableName, featureTable) { - var relationships = this.geoPackage.getExtendedRelationDao().queryByMappingTableName(mappingTableName); - for (var i = 0; i < relationships.length; i++) { - this.relatedTablesExtension.removeRelationship(relationships[i]); - } - if (!this.hasRelationship(featureTable)) { - if (this.extensionsDao.isTableExists()) { - this.extensionsDao.deleteByExtension(FeatureStyleExtension.EXTENSION_NAME, this.getFeatureTableName(featureTable)); - } - } -}; - -/** - * Get a Style Mapping DAO - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleMappingDao} style mapping DAO - */ -FeatureStyleExtension.prototype.getStyleMappingDao = function (featureTable) { - return this._getMappingDao(FeatureStyleExtension.TABLE_MAPPING_STYLE, featureTable); -}; - -/** - * Get a Table Style Mapping DAO - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleMappingDao} table style mapping DAO - */ -FeatureStyleExtension.prototype.getTableStyleMappingDao = function (featureTable) { - return this._getMappingDao(FeatureStyleExtension.TABLE_MAPPING_TABLE_STYLE, featureTable); -}; - -/** - * Get a Icon Mapping DAO - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleMappingDao} icon mapping DAO - */ -FeatureStyleExtension.prototype.getIconMappingDao = function (featureTable) { - return this._getMappingDao(FeatureStyleExtension.TABLE_MAPPING_ICON, featureTable); -}; - -/** - * Get a Table Icon Mapping DAO - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleMappingDao} table icon mapping DAO - */ -FeatureStyleExtension.prototype.getTableIconMappingDao = function (featureTable) { - return this._getMappingDao(FeatureStyleExtension.TABLE_MAPPING_TABLE_ICON, featureTable); -}; - -/** - * Get a Style Mapping DAO from a table name - * @param {String} tablePrefix table name prefix - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleMappingDao} style mapping dao - * @private - */ -FeatureStyleExtension.prototype._getMappingDao = function (tablePrefix, featureTable) { - var featureTableName = this.getFeatureTableName(featureTable); - var tableName = tablePrefix + featureTableName; - var dao = null; - if (this.geoPackage.isTable(tableName)) { - dao = new StyleMappingDao(this.relatedTablesExtension.getUserDao(tableName, UserMappingTable.requiredColumns()), this.geoPackage); - } - return dao; -}; - -/** - * Get a style DAO - * @return {module:extension/style.StyleDao} style DAO - */ -FeatureStyleExtension.prototype.getStyleDao = function () { - var styleDao = null; - if (this.geoPackage.isTable(StyleTable.TABLE_NAME)) { - var dao = this.geoPackage.getContentsDao(); - var contents = dao.queryForId(StyleTable.TABLE_NAME); - if (contents) { - var reader = new StyleTableReader(contents.table_name); - var table = reader.readTable(this.geoPackage.connection); - this.relatedTablesExtension.setContents(table); - styleDao = new StyleDao(this.geoPackage, table); - } - } - return styleDao; -}; - -/** - * Get a icon DAO - * @return {module:extension/style.IconDao} - */ -FeatureStyleExtension.prototype.getIconDao = function() { - var iconDao = null; - if (this.geoPackage.isTable(IconTable.TABLE_NAME)) { - var reader = new UserTableReader(IconTable.TABLE_NAME, IconTable.requiredColumns()); - var userTable = reader.readTable(this.geoPackage.getDatabase()); - var table = new IconTable(userTable.table_name, userTable.columns, IconTable.requiredColumns()); - table.setContents(this.geoPackage.getContentsDao().queryForId(IconTable.TABLE_NAME)); - iconDao = new IconDao(this.geoPackage, table); - } - return iconDao; -}; - -/** - * Get the feature table default feature styles - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.FeatureStyles} table feature styles or null - */ -FeatureStyleExtension.prototype.getTableFeatureStyles = function(featureTable) { - var featureStyles = null; - var id = this.contentsIdExtension.getIdByTableName(this.getFeatureTableName(featureTable)); - if (id !== null) { - var styles = this.getTableStyles(featureTable); - var icons = this.getTableIcons(featureTable); - if (styles !== null || icons !== null) { - featureStyles = new FeatureStyles(styles, icons); - } - } - return featureStyles; -}; - -/** - * Get the default style of the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.StyleRow} style row - */ -FeatureStyleExtension.prototype.getTableStyleDefault = function(featureTable) { - return this.getTableStyle(featureTable, null); -}; - -/** - * Get the style of the feature table and geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {String} geometryType geometry type - * @return {module:extension/style.StyleRow} style row - */ -FeatureStyleExtension.prototype.getTableStyle = function(featureTable, geometryType) { - var style = null; - var styles = this.getTableStyles(featureTable); - if (styles !== null) { - if (geometryType === null) { - style = styles.getDefault(); - } else { - style = styles.getStyle(geometryType); - } - } - return style; -}; - -/** - * Get the feature table default styles - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.Styles} table styles or null - */ -FeatureStyleExtension.prototype.getTableStyles = function(featureTable) { - var styles = null; - var id = this.contentsIdExtension.getIdByTableName(this.getFeatureTableName(featureTable)); - if (id !== null) { - styles = this.getStyles(id, this.getTableStyleMappingDao(featureTable)); - } - return styles; -}; - -/** - * Get the default icon of the feature table - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.IconRow} icon row - */ -FeatureStyleExtension.prototype.getTableIconDefault = function(featureTable) { - return this.getTableIcon(featureTable, null); -}; - -/** - * Get the icon of the feature table and geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {String} geometryType geometry type - * @return {module:extension/style.IconRow} icon row - */ -FeatureStyleExtension.prototype.getTableIcon = function(featureTable, geometryType) { - var icon = null; - var icons = this.getTableIcons(featureTable); - if (icons !== null) { - if (geometryType === null) { - icon = icons.getDefault(); - } else { - icon = icons.getIcon(geometryType); - } - } - return icon; -}; - -/** - * Get the feature table default icons - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {module:extension/style.Icons} table icons or null - */ -FeatureStyleExtension.prototype.getTableIcons = function(featureTable) { - var icons = null; - var id = this.contentsIdExtension.getIdByTableName(this.getFeatureTableName(featureTable)); - if (id !== null) { - icons = this.getIcons(id, this.getTableIconMappingDao(featureTable)); - } - return icons; -}; - -/** - * Gets Icons for featureId and mappingDao - * @param {Number} featureId - * @param mappingDao - * @returns {module:extension/style.Icons} - * @private - */ -FeatureStyleExtension.prototype.getIcons = function(featureId, mappingDao) { - var icons = new Icons(); - if (mappingDao !== null) { - var iconDao = this.getIconDao(); - var styleMappingRows = mappingDao.queryByBaseId(featureId); - for (var i = 0; i < styleMappingRows.length; i++) { - var styleMappingRow = mappingDao.createObject(styleMappingRows[i]); - var iconRow = iconDao.queryForId(styleMappingRow.getRelatedId()); - if (styleMappingRow.getGeometryTypeName() === null) { - icons.setDefault(iconRow); - } else { - icons.setIcon(iconRow, styleMappingRow.getGeometryTypeName()); - } - } - } - if (icons.isEmpty()) { - icons = null; - } - return icons; -}; - -/** - * Gets Styles for featureId and mappingDao - * @param {Number} featureId - * @param {module:extension/style.StyleMappingDao} mappingDao - * @returns {module:extension/style.Styles} - */ -FeatureStyleExtension.prototype.getStyles = function(featureId, mappingDao) { - var styles = new Styles(); - if (mappingDao !== null) { - var styleDao = this.getStyleDao(); - var styleMappingRows = mappingDao.queryByBaseId(featureId); - for (var i = 0; i < styleMappingRows.length; i++) { - var styleMappingRow = mappingDao.createObject(styleMappingRows[i]); - var styleRow = styleDao.queryForId(styleMappingRow.getRelatedId()); - if (styleMappingRow.getGeometryTypeName() === null) { - styles.setDefault(styleRow); - } else { - styles.setStyle(styleRow, styleMappingRow.getGeometryTypeName()); - } - } - } - if (styles.isEmpty()) { - styles = null; - } - return styles; -}; - -/** - * Get the feature styles for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyles} feature styles or null - */ -FeatureStyleExtension.prototype.getFeatureStylesForFeatureRow = function(featureRow) { - return this.getFeatureStyles(featureRow.featureTable, featureRow.getId()); -}; -/** - * Get the feature styles for the feature row - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @return {module:extension/style.FeatureStyles} feature styles or null - */ -FeatureStyleExtension.prototype.getFeatureStyles = function(featureTable, featureId) { - var styles = this.getStyles(featureId, this.getStyleMappingDao(featureTable)); - var icons = this.getIcons(featureId, this.getIconMappingDao(featureTable)); - var featureStyles = null; - if (styles !== null || icons !== null) { - featureStyles = new FeatureStyles(styles, icons); - } - return featureStyles; -}; - -/** - * Get the styles for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.Styles} styles or null - */ -FeatureStyleExtension.prototype.getStylesForFeatureRow = function(featureRow) { - return this.getStyles(featureRow.getId(), this.getStyleMappingDao(featureRow.featureTable.table_name)); -}; -/** - * Get the styles for the feature id - * @param {String} tableName table name - * @param {Number} featureId feature id - * @return {module:extension/style.Styles} styles or null - */ -FeatureStyleExtension.prototype.getStylesForFeatureId = function(tableName, featureId) { - return this.getStyles(featureId, this.getStyleMappingDao(tableName)); -}; - -/** - * Get the icons for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.Icons} icons or null - */ -FeatureStyleExtension.prototype.getIconsForFeatureRow = function(featureRow) { - return this.getIcons(featureRow.getId(), this.getIconMappingDao(featureRow.featureTable.table_name)); -}; - -/** - * Get the icons for the feature id - * @param {String} tableName table name - * @param {Number} featureId feature id - * @return {module:extension/style.Icons} icons or null - */ -FeatureStyleExtension.prototype.getIconsForFeatureId = function(tableName, featureId) { - return this.getIcons(featureId, this.getIconMappingDao(tableName)); -}; - -/** - * Get the feature style (style and icon) of the feature row, searching in - * order: feature geometry type style or icon, feature default style or - * icon, table geometry type style or icon, table default style or icon - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureStyleExtension.prototype.getFeatureStyleForFeatureRow = function(featureRow) { - return new FeatureStyle(this.getStyle(featureRow.featureTable.table_name, featureRow.getId(), featureRow.getGeometryType(), true), this.getIcon(featureRow.featureTable.table_name, featureRow.getId(), featureRow.getGeometryType(), true)); -}; - -/** - * Get the feature style (style and icon) of the feature, searching in - * order: feature geometry type style or icon, feature default style or - * icon, table geometry type style or icon, table default style or icon - * @param {module:features/user/featureRow} featureRow feature row - * @return {module:extension/style.FeatureStyle} feature style - */ -FeatureStyleExtension.prototype.getFeatureStyleDefault = function(featureRow) { - return new FeatureStyle(this.getStyle(featureRow.featureTable.table_name, featureRow.getId(), null, true), this.getIcon(featureRow.featureTable.table_name, featureRow.getId(), null, true)); -}; - -/** - * Get the icon of the feature, searching in order: feature geometry type - * icon, feature default icon, when tableIcon enabled continue searching: - * table geometry type icon, table default icon - * @param {module:features/user/featureTable|String} featureTable - * @param {Number} featureId - * @param {String} geometryType - * @param {Boolean} tableIcon - * @returns {module:extension/style.IconRow} - * @private - */ -FeatureStyleExtension.prototype.getIcon = function(featureTable, featureId, geometryType, tableIcon) { - var iconRow = null; - var icons = this.getIcons(featureId, this.getIconMappingDao(featureTable)); - if (icons !== null) { - iconRow = icons.getIcon(geometryType); - } - if (iconRow === null && tableIcon) { - iconRow = this.getTableIcon(featureTable, geometryType); - } - return iconRow; -}; - -/** - * Get the style of the feature, searching in order: feature geometry type - * style, feature default style, when tableStyle enabled continue searching: - * table geometry type style, table default style - * @param {module:features/user/featureTable|String} featureTable - * @param {Number} featureId - * @param {String} geometryType - * @param {Boolean} tableStyle - * @returns {module:extension/style.StyleRow} - * @private - */ -FeatureStyleExtension.prototype.getStyle = function(featureTable, featureId, geometryType, tableStyle) { - var styleRow = null; - var styles = this.getStyles(featureId, this.getStyleMappingDao(featureTable)); - if (styles !== null) { - styleRow = styles.getStyle(geometryType); - } - if (styleRow === null && tableStyle) { - styleRow = this.getTableStyle(featureTable, geometryType); - } - return styleRow; -}; - -/** - * Set the feature table default feature styles - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {module:extension/style.FeatureStyles} featureStyles feature styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableFeatureStyles = function(featureTable, featureStyles) { - if (featureStyles !== null) { - var promises = []; - promises.push(this.setTableStyles(featureTable, featureStyles.getStyles())); - promises.push(this.setTableIcons(featureTable, featureStyles.getIcons())); - return Promise.all(promises); - } else { - this.deleteTableFeatureStyles(featureTable); - return Promise.resolve(); - } -}; - -/** - * Set the feature table default styles - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {module:extension/style.Styles} styles default styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableStyles = function(featureTable, styles) { - // var tableName = featureTable.table_name ? featureTable.table_name : featureTable; - this.deleteTableStyles(featureTable); - if (styles !== null) { - var promises = []; - if (styles.getDefault() !== null) { - promises.push(this.setTableStyleDefault(featureTable, styles.getDefault())); - } - var keys = Object.keys(styles.styles); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = styles.styles[key]; - promises.push(this.setTableStyle(featureTable, key, value)); - } - return Promise.all(promises); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the feature table style default - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableStyleDefault = function(featureTable, style) { - return this.setTableStyle(featureTable, null, style); -}; - -/** - * Set the feature table style for the geometry type - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableStyle = function(featureTable, geometryType, style) { - this.deleteTableStyle(featureTable, geometryType); - if (style !== null) { - return this.createTableStyleRelationship(featureTable).then(function () { - var featureContentsId = this.contentsIdExtension.getOrCreateIdByTableName(this.getFeatureTableName(featureTable)); - var styleId = this.getOrInsertStyle(style); - var mappingDao = this.getTableStyleMappingDao(featureTable); - this.insertStyleMapping(mappingDao, featureContentsId.id, styleId, geometryType); - }.bind(this)); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the feature table default icons - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {module:extension/style.Icons} icons default icons - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableIcons = function(featureTable, icons) { - this.deleteTableIcons(featureTable); - if (icons !== null) { - var promises = []; - if (icons.getDefault() !== null) { - promises.push(this.setTableIconDefault(featureTable, icons.getDefault())); - } - var keys = Object.keys(icons.icons); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = icons.icons[key]; - promises.push(this.setTableIcon(featureTable, key, value)); - } - return Promise.all(promises); - } else { - return Promise.resolve(); - } -}; -/** - * Set the feature table icon default - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableIconDefault = function(featureTable, icon) { - return this.setTableIcon(featureTable, null, icon); -}; - -/** - * Set the feature table icon for the geometry type - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setTableIcon = function(featureTable, geometryType, icon) { - this.deleteTableIcon(featureTable, geometryType); - if (icon !== null) { - return this.createTableIconRelationship(featureTable).then(function () { - var featureContentsId = this.contentsIdExtension.getOrCreateIdByTableName(this.getFeatureTableName(featureTable)); - var iconId = this.getOrInsertIcon(icon); - var mappingDao = this.getTableIconMappingDao(featureTable); - this.insertStyleMapping(mappingDao, featureContentsId.id, iconId, geometryType); - }.bind(this)); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the feature styles for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyles} featureStyles feature styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStylesForFeatureRow = function(featureRow, featureStyles) { - return this.setFeatureStyles(featureRow.featureTable.table_name, featureRow.getId(), featureStyles); -}; - -/** - * Set the feature styles for the feature table and feature id - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.FeatureStyles} featureStyles feature styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyles = function(featureTable, featureId, featureStyles) { - if (featureStyles !== null) { - var promises = []; - promises.push(this.setStyles(featureTable, featureId, featureStyles.getStyles())); - promises.push(this.setIcons(featureTable, featureId, featureStyles.getIcons())); - return Promise.all(promises); - } else { - this.deleteStyles(featureTable, featureId); - this.deleteIcons(featureTable, featureId); - return Promise.resolve(); - } -}; - -/** - * Set the feature style (style and icon) of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyleForFeatureRow = function(featureRow, featureStyle) { - return this.setFeatureStyleForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType(), featureStyle); -}; - -/** - * Set the feature style (style and icon) of the feature row for the - * specified geometry type - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyleForFeatureRowAndGeometryType = function(featureRow, geometryType, featureStyle) { - return this.setFeatureStyle(featureRow.featureTable.table_name, featureRow.getId(), geometryType, featureStyle); -}; - -/** - * Set the feature style default (style and icon) of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyleDefaultForFeatureRow = function(featureRow, featureStyle) { - return this.setFeatureStyle(featureRow.featureTable.table_name, featureRow.getId(), null, featureStyle); -}; - -/** - * Set the feature style (style and icon) of the feature - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyle = async function(featureTable, featureId, geometryType, featureStyle) { - if (featureStyle !== null) { - var promises = []; - promises.push(this.setStyle(featureTable, featureId, geometryType, featureStyle.getStyle())); - promises.push(this.setIcon(featureTable, featureId, geometryType, featureStyle.getIcon())); - return Promise.all(promises); - } else { - this.deleteStyle(featureTable, featureId, geometryType); - this.deleteIcon(featureTable, featureId, geometryType); - return Promise.resolve(); - } -}; - -/** - * Set the feature style (style and icon) of the feature - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.FeatureStyle} featureStyle feature style - * @return {Promise} - */ -FeatureStyleExtension.prototype.setFeatureStyleDefault = function(featureTable, featureId, featureStyle) { - return this.setFeatureStyle(featureTable, featureId, null, featureStyle); -}; - -/** - * Set the styles for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.Styles} styles styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStylesForFeatureRow = function(featureRow, styles) { - return this.setStyles(featureRow.featureTable.table_name, featureRow.getId(), styles); -}; - -/** - * Set the styles for the feature table and feature id - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.Styles} styles styles - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyles = function(featureTable, featureId, styles) { - this.deleteStylesForFeatureId(featureTable, featureId); - if (styles !== null) { - var promises = []; - if (styles.getDefault() !== null) { - promises.push(this.setStyleDefault(featureTable, featureId, styles.getDefault())); - } - var keys = Object.keys(styles.styles); - for (var i = 0; i < keys.length; i++) { - promises.push(this.setStyle(featureTable, featureId, keys[i], styles.styles[keys[i]])); - } - return Promise.all(promises); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the style of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyleForFeatureRow = function(featureRow, style) { - return this.setStyleForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType(), style); -}; - -/** - * Set the style of the feature row for the specified geometry type - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyleForFeatureRowAndGeometryType = function(featureRow, geometryType, style) { - return this.setStyle(featureRow.featureTable.table_name, featureRow.getId(), geometryType, style); -}; - -/** - * Set the default style of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyleDefaultForFeatureRow = function(featureRow, style) { - return this.setStyle(featureRow.featureTable.table_name, featureRow.getId(), null, style); -}; - -/** - * Set the style of the feature - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyle = function(featureTable, featureId, geometryType, style) { - this.deleteStyle(featureTable, featureId, geometryType); - if (style !== null) { - return this.createStyleRelationship(featureTable).then(function () { - var styleId = this.getOrInsertStyle(style); - var mappingDao = this.getStyleMappingDao(featureTable); - this.insertStyleMapping(mappingDao, featureId, styleId, geometryType); - }.bind(this)); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the default style of the feature - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.StyleRow} style style row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setStyleDefault = function(featureTable, featureId, style) { - return this.setStyle(featureTable, featureId, null, style); -}; - -/** - * Set the icons for the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.Icons} icons icons - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIconsForFeatureRow = function(featureRow, icons) { - return this.setIcons(featureRow.featureTable.table_name, featureRow.getId(), icons); -}; - -/** - * Set the icons for the feature table and feature id - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.Icons} icons icons - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIcons = function(featureTable, featureId, icons) { - this.deleteIconsForFeatureId(featureTable, featureId); - if (icons !== null) { - var promises = []; - if (icons.getDefault() !== null) { - promises.push(this.setIconDefault(featureTable, featureId, icons.getDefault())); - } - var keys = Object.keys(icons.icons); - for (var i = 0; i < keys.length; i++) { - promises.push(this.setIcon(featureTable, featureId, keys[i], icons.icons[keys[i]])); - } - return Promise.all(promises); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the icon of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIconForFeatureRow = function(featureRow, icon) { - return this.setIconForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType(), icon); -}; - -/** - * Set the icon of the feature row for the specified geometry type - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIconForFeatureRowAndGeometryType = function(featureRow, geometryType, icon) { - return this.setIcon(featureRow.featureTable.table_name, featureRow.getId(), geometryType, icon); -}; - -/** - * Set the default icon of the feature row - * @param {module:features/user/featureRow} featureRow feature row - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIconDefaultForFeatureRow = function(featureRow, icon) { - return this.setIcon(featureRow.featureTable.table_name, featureRow.getId(), null, icon); -}; - -/** - * Get the icon of the feature, searching in order: feature geometry type - * icon, feature default icon, table geometry type icon, table default icon - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIcon = function(featureTable, featureId, geometryType, icon) { - this.deleteIcon(featureTable, featureId, geometryType); - if (icon !== null) { - return this.createIconRelationship(featureTable).then(function () { - var iconId = this.getOrInsertIcon(icon); - var mappingDao = this.getIconMappingDao(featureTable); - this.insertStyleMapping(mappingDao, featureId, iconId, geometryType); - }.bind(this)); - } else { - return Promise.resolve(); - } -}; - -/** - * Set the default icon of the feature - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {module:extension/style.IconRow} icon icon row - * @return {Promise} - */ -FeatureStyleExtension.prototype.setIconDefault = function(featureTable, featureId, icon) { - return this.setIcon(featureTable, featureId, null, icon); -}; - -/** - * Get the style id, either from the existing style or by inserting a new one - * @param {module:extension/style.StyleRow} style style row - * @return {Number} style id - */ -FeatureStyleExtension.prototype.getOrInsertStyle = function(style) { - var styleId; - if (style.hasId()) { - styleId = style.getId(); - } else { - var styleDao = this.getStyleDao(); - if (styleDao !== null) { - styleId = styleDao.create(style); - style.setId(styleId); - } - } - return styleId; -}; - -/** - * Get the icon id, either from the existing icon or by inserting a new one - * @param {module:extension/style.IconRow} icon icon row - * @return {Number} icon id - */ -FeatureStyleExtension.prototype.getOrInsertIcon = function(icon) { - var iconId; - if (icon.hasId()) { - iconId = icon.getId(); - } else { - var iconDao = this.getIconDao(); - if (iconDao != null) { - iconId = iconDao.create(icon); - icon.setId(iconId); - } - } - return iconId; -}; - -/** - * Insert a style mapping row - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - * @param {Number} baseId base id, either contents id or feature id - * @param {Number} relatedId related id, either style or icon id - * @param {String} geometryType geometry type or null - */ -FeatureStyleExtension.prototype.insertStyleMapping = function(mappingDao, baseId, relatedId, geometryType) { - var row = mappingDao.newRow(); - row.setBaseId(baseId); - row.setRelatedId(relatedId); - row.setGeometryTypeName(geometryType); - mappingDao.create(row); -}; - -/** - * Delete all feature styles including table styles, table icons, style, and icons - * @param {module:features/user/featureTable~FeatureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteAllFeatureStyles = function(featureTable) { - this.deleteTableFeatureStyles(featureTable); - this.deleteFeatureStyles(featureTable); -}; - -/** - * Delete all styles including table styles and feature row style - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteAllStyles = function(featureTable) { - this.deleteTableStyles(featureTable); - this.deleteStyles(featureTable); -}; - -/** - * Delete all icons including table icons and feature row icons - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteAllIcons = function(featureTable) { - this.deleteTableIcons(featureTable); - this.deleteIcons(featureTable); -}; - -/** - * Delete the feature table feature styles - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableFeatureStyles = function(featureTable) { - this.deleteTableStyles(featureTable); - this.deleteTableIcons(featureTable); -}; - -/** - * Delete the feature table styles - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableStyles = function(featureTable) { - this.deleteTableMappings(this.getTableStyleMappingDao(featureTable), featureTable); -}; - -/** - * Delete the feature table default style - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableStyleDefault = function(featureTable) { - this.deleteTableStyle(featureTable, null); -}; - -/** - * Delete the feature table style for the geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteTableStyle = function(featureTable, geometryType) { - this.deleteTableMapping(this.getTableStyleMappingDao(featureTable), featureTable, geometryType); -}; - -/** - * Delete the feature table icons - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableIcons = function(featureTable) { - this.deleteTableMappings(this.getTableIconMappingDao(featureTable), featureTable); -}; - -/** - * Delete the feature table default icon - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableIconDefault = function(featureTable) { - this.deleteTableIcon(featureTable, null); -}; - -/** - * Delete the feature table icon for the geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteTableIcon = function(featureTable, geometryType) { - this.deleteTableMapping(this.getTableIconMappingDao(featureTable), featureTable, geometryType); -}; - -/** - * Delete the table style mappings - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteTableMappings = function(mappingDao, featureTable) { - if (mappingDao !== null) { - var featureContentsId = this.contentsIdExtension.getIdByTableName(this.getFeatureTableName(featureTable)); - if (featureContentsId !== null) { - mappingDao.deleteByBaseId(featureContentsId); - } - } -}; - -/** - * Delete the table style mapping with the geometry type value - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteTableMapping = function(mappingDao, featureTable, geometryType) { - if (mappingDao !== null) { - var featureContentsId = this.contentsIdExtension.getIdByTableName(this.getFeatureTableName(featureTable)); - if (featureContentsId !== null) { - mappingDao.deleteByBaseIdAndGeometryType(featureContentsId, geometryType); - } - } -}; - -/** - * Delete all feature styles - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteFeatureStyles = function(featureTable) { - this.deleteStyles(featureTable); - this.deleteIcons(featureTable); -}; - -/** - * Delete all styles - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteStyles = function(featureTable) { - this.deleteMappings(this.getStyleMappingDao(featureTable)); -}; - -/** - * Delete feature row styles - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteStylesForFeatureRow = function(featureRow) { - this.deleteStylesForFeatureId(featureRow.featureTable.table_name, featureRow.getId()); -}; - -/** - * Delete feature row styles - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - */ -FeatureStyleExtension.prototype.deleteStylesForFeatureId = function(featureTable, featureId) { - this.deleteMappingsForFeatureId(this.getStyleMappingDao(featureTable), featureId); -}; - -/** - * Delete the feature row default style - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteStyleDefaultForFeatureRow = function(featureRow) { - this.deleteStyleForFeatureRowAndGeometryType(featureRow, null); -}; - -/** - * Delete the feature row default style - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - */ -FeatureStyleExtension.prototype.deleteStyleDefault = function(featureTable, featureId) { - this.deleteStyle(featureTable, featureId, null); -}; - -/** - * Delete the feature row style for the feature row geometry type - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteStyleForFeatureRow = function(featureRow) { - this.deleteStyleForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType()); -}; - -/** - * Delete the feature row style for the geometry type - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteStyleForFeatureRowAndGeometryType = function(featureRow, geometryType) { - this.deleteStyle(featureRow.featureTable, featureRow.getId(), geometryType); -}; - -/** - * Delete the feature row style for the geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteStyle = function(featureTable, featureId, geometryType) { - this.deleteMapping(this.getStyleMappingDao(featureTable), featureId, geometryType); -}; - -/** - * Delete all icons - * @param {module:features/user/featureTable|String} featureTable feature table - */ -FeatureStyleExtension.prototype.deleteIcons = function(featureTable) { - this.deleteMappings(this.getIconMappingDao(featureTable)); -}; - -/** - * Delete feature row icons - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteIconsForFeatureRow = function(featureRow) { - this.deleteIconsForFeatureId(featureRow.featureTable.table_name, featureRow.getId()); -}; - -/** - * Delete feature row icons - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - */ -FeatureStyleExtension.prototype.deleteIconsForFeatureId = function(featureTable, featureId) { - this.deleteMappingsForFeatureId(this.getIconMappingDao(featureTable), featureId); -}; - -/** - * Delete the feature row default icon - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteIconDefaultForFeatureRow = function(featureRow) { - this.deleteIconDefault(featureRow.featureTable.table_name, featureRow.getId()); -}; - -/** - * Delete the feature row default icon - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - */ -FeatureStyleExtension.prototype.deleteIconDefault = function(featureTable, featureId) { - this.deleteIcon(featureTable, featureId, null); -}; - -/** - * Delete the feature row icon for the feature row geometry type - * @param {module:features/user/featureRow} featureRow feature row - */ -FeatureStyleExtension.prototype.deleteIconForFeatureRow = function(featureRow) { - this.deleteIconForFeatureRowAndGeometryType(featureRow, featureRow.getGeometryType()); -}; - -/** - * Delete the feature row icon for the geometry type - * @param {module:features/user/featureRow} featureRow feature row - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteIconForFeatureRowAndGeometryType = function(featureRow, geometryType) { - this.deleteIcon(featureRow.featureTable, featureRow.getId(), geometryType); -}; - -/** - * Delete the feature row icon for the geometry type - * @param {module:features/user/featureTable|String} featureTable feature table - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteIcon = function(featureTable, featureId, geometryType) { - this.deleteMapping(this.getIconMappingDao(featureTable), featureId, geometryType); -}; - -/** - * Delete all style mappings - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - */ -FeatureStyleExtension.prototype.deleteMappings = function(mappingDao) { - if (mappingDao !== null) { - mappingDao.deleteAll(); - } -}; - -/** - * Delete the style mappings - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - * @param {Number} featureId feature id - */ -FeatureStyleExtension.prototype.deleteMappingsForFeatureId = function(mappingDao, featureId) { - if (mappingDao !== null) { - mappingDao.deleteByBaseId(featureId); - } -}; - -/** - * Delete the style mapping with the geometry type value - * @param {module:extension/style.StyleMappingDao} mappingDao mapping dao - * @param {Number} featureId feature id - * @param {String} geometryType geometry type - */ -FeatureStyleExtension.prototype.deleteMapping = function(mappingDao, featureId, geometryType) { - if (mappingDao !== null) { - mappingDao.deleteByBaseIdAndGeometryType(featureId, geometryType); - } -}; - -/** - * Get all the unique style row ids the table maps to - * @param {module:features/user/featureTable|String} featureTable feature table - * @return style row ids - */ -FeatureStyleExtension.prototype.getAllTableStyleIds = function(featureTable) { - var styleIds = null; - var mappingDao = this.getTableStyleMappingDao(featureTable); - if (mappingDao !== null) { - styleIds = mappingDao.uniqueRelatedIds().map(row => row['related_id']); - } - return styleIds; -}; - -/** - * Get all the unique icon row ids the table maps to - * @param {module:features/user/featureTable|String} featureTable feature table - * @return icon row ids - */ -FeatureStyleExtension.prototype.getAllTableIconIds = function(featureTable) { - var styleIds = null; - var mappingDao = this.getTableIconMappingDao(featureTable); - if (mappingDao !== null) { - styleIds = mappingDao.uniqueRelatedIds().map(row => row['related_id']); - } - return styleIds; -}; - -/** - * Get all the unique style row ids the features map to - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Number[]} style row ids - */ -FeatureStyleExtension.prototype.getAllStyleIds = function(featureTable) { - var styleIds = null; - var mappingDao = this.getStyleMappingDao(featureTable); - if (mappingDao !== null) { - styleIds = mappingDao.uniqueRelatedIds().map(row => row['related_id']); - } - return styleIds; -}; - -/** - * Get all the unique icon row ids the features map to - * @param {module:features/user/featureTable|String} featureTable feature table - * @return {Number[]} icon row ids - */ -FeatureStyleExtension.prototype.getAllIconIds = function(featureTable) { - var styleIds = null; - var mappingDao = this.getIconMappingDao(featureTable); - if (mappingDao !== null) { - styleIds = mappingDao.uniqueRelatedIds().map(row => row['related_id']); - } - return styleIds; -}; - -/** - * Get name of feature table - * @param featureTable - * @returns {String} - */ -FeatureStyleExtension.prototype.getFeatureTableName = function(featureTable) { - return featureTable.table_name ? featureTable.table_name : featureTable; -}; - -/** - * Remove all traces of the extension - */ -FeatureStyleExtension.prototype.removeExtension = function() { - this.deleteAllRelationships(); - this.geoPackage.deleteTable(StyleTable.TABLE_NAME); - this.geoPackage.deleteTable(IconTable.TABLE_NAME); - if (this.extensionsDao.isTableExists()) { - this.extensionsDao.deleteByExtension(FeatureStyleExtension.EXTENSION_NAME); - } -}; - -FeatureStyleExtension.EXTENSION_NAME = 'nga_feature_style'; -FeatureStyleExtension.EXTENSION_AUTHOR = 'nga'; -FeatureStyleExtension.EXTENSION_NAME_NO_AUTHOR = 'feature_style'; -FeatureStyleExtension.EXTENSION_DEFINITION = 'http://ngageoint.github.io/GeoPackage/docs/extensions/feature-style.html'; -FeatureStyleExtension.TABLE_MAPPING_STYLE = FeatureStyleExtension.EXTENSION_AUTHOR + "_style_"; -FeatureStyleExtension.TABLE_MAPPING_TABLE_STYLE = FeatureStyleExtension.EXTENSION_AUTHOR + "_style_default_"; -FeatureStyleExtension.TABLE_MAPPING_ICON = FeatureStyleExtension.EXTENSION_AUTHOR + "_icon_"; -FeatureStyleExtension.TABLE_MAPPING_TABLE_ICON = FeatureStyleExtension.EXTENSION_AUTHOR + "_icon_default_"; - -module.exports = FeatureStyleExtension; - -},{"../.":25,"../../user/userTableReader":109,"../baseExtension":20,"../contents/contentsIdDao":22,"../relatedTables/userMappingTable":42,"./featureStyle":46,"./featureStyles":47,"./iconDao":50,"./iconTable":52,"./icons":53,"./styleDao":55,"./styleMappingDao":56,"./styleMappingTable":58,"./styleTable":60,"./styleTableReader":61,"./styles":62,"util":343}],55:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleDao - */ - -var StyleRow = require('./styleRow') - , StyleTable = require('./styleTable') - , AttributesDao = require('../../attributes/attributeDao'); - -var util = require('util'); - -/** - * Style DAO for reading style tables - * @extends {module:attributes/attributeDao~AttributesDao} - * @param {module:db/geoPackageConnection~GeoPackageConnection} geoPackage connection - * @param {string} table table name - * @constructor - */ -var StyleDao = function(geoPackage, table) { - AttributesDao.call(this, geoPackage, table); - this.table = table; -}; - -util.inherits(StyleDao, AttributesDao); - -/** - * Creates a StyleRow object from the results - * @param results - * @returns {module:extension/style.StyleRow} - */ -StyleDao.prototype.createObject = function (results) { - if (results) { - return this.getRow(results); - } - return this.newRow(); -}; - -/** - * Create a new style row - * @return {module:extension/style.StyleRow} - */ -StyleDao.prototype.newRow = function() { - return new StyleRow(this.table); -}; - -/** - * Create a style row with the column types and values - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/style.StyleRow} icon row - */ -StyleDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new StyleRow(this.table, columnTypes, values); -}; - -module.exports = StyleDao; - -},{"../../attributes/attributeDao":3,"./styleRow":59,"./styleTable":60,"util":343}],56:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleMappingDao - */ - -var StyleMappingRow = require('./styleMappingRow') - , StyleMappingTable = require('./styleMappingTable') - , UserMappingTable = require('../relatedTables/userMappingTable') - , UserMappingDao = require('../relatedTables/userMappingDao'); - -var util = require('util'); - -/** - * Style Mapping DAO for reading user mapping data tables - * @extends {module:extension/relatedTables~UserMappingDao} - * @param {module:user/custom~UserCustomDao} userCustomDao - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - * @constructor - */ -var StyleMappingDao = function(userCustomDao, geoPackage) { - UserMappingDao.call(this, userCustomDao, geoPackage); -}; - -util.inherits(StyleMappingDao, UserMappingDao); - -/** - * Create a new {module:user/custom~UserCustomTable} - * @param {module:user/custom~UserCustomDao} userCustomDao - * @return {module:user/custom~UserCustomTable} userCustomTable user custom table - */ -StyleMappingDao.prototype.createMappingTable = function(userCustomDao) { - return new StyleMappingTable(userCustomDao.table.table_name, userCustomDao.table.columns); -}; - -/** - * Create a new {module:extension/style.StyleMappingRow} - * @return {module:extension/style.StyleMappingRow} - */ -StyleMappingDao.prototype.newRow = function() { - return new StyleMappingRow(this.table); -}; - -/** - * Create a user mapping row - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:extension/style.StyleMappingRow} style mapping row - */ -StyleMappingDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new StyleMappingRow(this.table, columnTypes, values); -}; - -/** - * Delete by base id and geometry type - * @param {Number} baseId base id - * @param {String} geometryType geometry type - * @return {Number} number of deleted rows - */ -StyleMappingDao.prototype.deleteByBaseIdAndGeometryType = function(baseId, geometryType) { - var where = ''; - where += this.buildWhereWithFieldAndValue(UserMappingTable.COLUMN_BASE_ID, baseId); - where += ' AND '; - where += this.buildWhereWithFieldAndValue(StyleMappingTable.COLUMN_GEOMETRY_TYPE_NAME, geometryType); - var whereArgs = this.buildWhereArgs([baseId, geometryType]); - return this.deleteWhere(where, whereArgs); -}; - -module.exports = StyleMappingDao; - -},{"../relatedTables/userMappingDao":40,"../relatedTables/userMappingTable":42,"./styleMappingRow":57,"./styleMappingTable":58,"util":343}],57:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleMappingRow - */ - -var UserMappingRow = require('../relatedTables/userMappingRow'); - -var util = require('util'); - -/** - * User Mapping Row containing the values from a single result set row - * @extends {module:extension/relatedTables~UserMappingRow} - * @param {module:extension/style.StyleMappingTable} styleMappingTable style mapping table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @constructor - */ -var StyleMappingRow = function(styleMappingTable, columnTypes, values) { - UserMappingRow.call(this, styleMappingTable, columnTypes, values); - this.styleMappingTable = styleMappingTable; -}; - -util.inherits(StyleMappingRow, UserMappingRow); - -/** - * Get the geometry type name column - * @return {module:user/userColumn~UserColumn} - */ -StyleMappingRow.prototype.getGeometryTypeNameColumn = function() { - return this.styleMappingTable.getGeometryTypeNameColumn(); -}; - -/** - * Gets the geometry type name - * @return {string} - */ -StyleMappingRow.prototype.getGeometryTypeName = function() { - return this.getValueWithColumnName(this.getGeometryTypeNameColumn().name); -}; - -/** - * Sets the geometry type name - * @param {string} geometryTypeName geometry type name - */ -StyleMappingRow.prototype.setGeometryTypeName = function(geometryTypeName) { - this.setValueWithColumnName(this.getGeometryTypeNameColumn().name, geometryTypeName); -}; - -module.exports = StyleMappingRow; - -},{"../relatedTables/userMappingRow":41,"util":343}],58:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleMappingTable - */ - -var UserMappingTable = require('../relatedTables/userMappingTable') - , UserCustomColumn = require('../../user/custom/userCustomColumn') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * Contains style mapping table factory and utility methods - * @extends {module:extension/relatedTables~UserMappingTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns style mapping columns - * @constructor - */ -var StyleMappingTable = function(tableName, columns) { - UserMappingTable.call(this, tableName, columns); -}; - -util.inherits(StyleMappingTable, UserMappingTable); - -/** - * Creates a user mapping table with the minimum required columns followed by the additional columns - * @param {string} tableName name of the table - * @return {module:extension/relatedTables~UserMappingTable} - */ -StyleMappingTable.create = function(tableName) { - return new StyleMappingTable(tableName, StyleMappingTable.createColumns()); -}; - -/** - * Create the columns - * @return {module:user/userColumn~UserColumn[]} - */ -StyleMappingTable.createColumns = function() { - var columns = UserMappingTable.createRequiredColumns(); - var index = columns.length; - columns.push(UserCustomColumn.createColumn(index, StyleMappingTable.COLUMN_GEOMETRY_TYPE_NAME, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)) - return columns; -}; - -/** - * Get the geometry type name column index - * @return int - */ -StyleMappingTable.prototype.getGeometryTypeNameColumnIndex = function() { - return this.getColumnIndex(StyleMappingTable.COLUMN_GEOMETRY_TYPE_NAME); -}; - -/** - * Get the geometry type name column - * @return {module:user/userColumn~UserColumn} - */ -StyleMappingTable.prototype.getGeometryTypeNameColumn = function() { - return this.getColumnWithColumnName(StyleMappingTable.COLUMN_GEOMETRY_TYPE_NAME); -}; - -StyleMappingTable.COLUMN_GEOMETRY_TYPE_NAME = 'geometry_type_name'; - -module.exports = StyleMappingTable; - -},{"../../db/dataTypes":14,"../../user/custom/userCustomColumn":101,"../relatedTables/userMappingTable":42,"util":343}],59:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleRow - */ - -var AttributesRow = require('../../attributes/attributeRow'); - -var util = require('util'); - -/** - * Color hex pattern - */ -var colorPattern = /^#([0-9a-fA-F]{3}){1,2}$/; - -/** - * Style Row - * @extends {module:attributes/attributeRow~AttributesRow} - * @param {module:extension/style.StyleTable} styleTable style table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @constructor - */ -var StyleRow = function(styleTable, columnTypes, values) { - AttributesRow.call(this, styleTable, columnTypes, values); - this.styleTable = styleTable; -}; - -util.inherits(StyleRow, AttributesRow); - -/** - * Get the name column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getNameColumn = function() { - return this.styleTable.getNameColumn(); -}; - -/** - * Gets the name - * @return {String} - */ -StyleRow.prototype.getName = function() { - return this.getValueWithColumnName(this.getNameColumn().name); -}; - -/** - * Sets the name for the row - * @param {String} name name - */ -StyleRow.prototype.setName = function(name) { - this.setValueWithColumnName(this.getNameColumn().name, name); -}; - -/** - * Get the description column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getDescriptionColumn = function() { - return this.styleTable.getDescriptionColumn(); -}; - -/** - * Gets the description - * @return {String} - */ -StyleRow.prototype.getDescription = function() { - return this.getValueWithColumnName(this.getDescriptionColumn().name); -}; - -/** - * Sets the description for the row - * @param {String} description description - */ -StyleRow.prototype.setDescription = function(description) { - this.setValueWithColumnName(this.getDescriptionColumn().name, description); -}; - -/** - * Get the color column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getColorColumn = function() { - return this.styleTable.getColorColumn(); -}; - -/** - * Get the style color - * @return {String} color - */ -StyleRow.prototype.getColor = function() { - return this.createColor(this.getHexColor(), this.getOpacity()); -}; - -/** - * Check if the style has a color - * @return true if has a color - */ -StyleRow.prototype.hasColor = function() { - return this._hasColor(this.getHexColor(), this.getOpacity()); -}; - -/** - * Get the color - * @return {String} color - */ -StyleRow.prototype.getHexColor = function() { - return this.getValueWithColumnName(this.getColorColumn().name); -}; - -/** - * Set the color - * @param {String} color color - * @param {Number} opacity opacity - */ -StyleRow.prototype.setColor = function(color, opacity) { - this.setHexColor(color); - this.setOpacity(opacity); -}; - -/** - * Sets the color for the row - * @param {String} color color - */ -StyleRow.prototype.setHexColor = function(color) { - var validatedColor = this.validateColor(color); - this.setValueWithColumnName(this.getColorColumn().name, validatedColor); -}; - -/** - * Get the opacity column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getOpacityColumn = function() { - return this.styleTable.getOpacityColumn(); -}; - -/** - * Gets the opacity - * @return {Number} - */ -StyleRow.prototype.getOpacity = function() { - return this.getValueWithColumnName(this.getOpacityColumn().name); -}; - -/** - * Get the opacity or default value - * @return {Number} opacity - */ -StyleRow.prototype.getOpacityOrDefault = function() { - var opacity = this.getOpacity(); - if (opacity === null) { - opacity = 1.0; - } - return opacity; -}; - -/** - * Sets the opacity for the row - * @param {Number} opacity opacity - */ -StyleRow.prototype.setOpacity = function(opacity) { - this.validateOpacity(opacity); - this.setValueWithColumnName(this.getOpacityColumn().name, opacity); -}; - -/** - * Get the width column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getWidthColumn = function() { - return this.styleTable.getWidthColumn(); -}; - -/** - * Gets the width - * @return {int} - */ -StyleRow.prototype.getWidth = function() { - return this.getValueWithColumnName(this.getWidthColumn().name); -}; - -/** - * Sets the width for the row - * @param {Number} width width - */ -StyleRow.prototype.setWidth = function(width) { - if (width !== null && width < 0.0) { - throw new Error("Width must be greater than or equal to 0.0, invalid value: " + width); - } - this.setValueWithColumnName(this.getWidthColumn().name, width); -}; - -/** - * Get the width value or default width - * @return width - */ -StyleRow.prototype.getWidthOrDefault = function() { - var width = this.getWidth(); - if (width === null) { - width = 1.0; - } - return width; -}; - -/** - * Get the fill color column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getFillColorColumn = function() { - return this.styleTable.getFillColorColumn(); -}; - - -/** - * Get the style fill color - * @return {String} color - */ -StyleRow.prototype.getFillColor = function() { - return this.createColor(this.getFillHexColor(), this.getFillOpacity()); -}; - -/** - * Check if the style has a fill color - * @return true if has a color - */ -StyleRow.prototype.hasFillColor = function() { - return this._hasColor(this.getFillHexColor(), this.getFillOpacity()); -}; - -/** - * Get the fill color - * @return {String} color - */ -StyleRow.prototype.getFillHexColor = function() { - return this.getValueWithColumnName(this.getFillColorColumn().name); -}; - -/** - * Set the fill color - * @param {String} color color - * @param {Number} opacity opacity - */ -StyleRow.prototype.setFillColor = function(color, opacity) { - this.setFillHexColor(color); - this.setFillOpacity(opacity); -}; - -/** - * Sets the fill color for the row - * @param {String} color color - */ -StyleRow.prototype.setFillHexColor = function(color) { - var validatedColor = this.validateColor(color); - this.setValueWithColumnName(this.getFillColorColumn().name, validatedColor); -}; - -/** - * Get the fill opacity column - * @return {module:user/userColumn~UserColumn} - */ -StyleRow.prototype.getFillOpacityColumn = function() { - return this.styleTable.getFillOpacityColumn(); -}; - -/** - * Gets the fill opacity - * @return {Number} - */ -StyleRow.prototype.getFillOpacity = function() { - return this.getValueWithColumnName(this.getFillOpacityColumn().name); -}; - -/** - * Sets the fill opacity for the row - * @param {Number} fillOpacity fillOpacity - */ -StyleRow.prototype.setFillOpacity = function(fillOpacity) { - this.validateOpacity(fillOpacity); - this.setValueWithColumnName(this.getFillOpacityColumn().name, fillOpacity); -}; - -/** - * Get the fill opacity or default value - * @return {Number} fill opacity - */ -StyleRow.prototype.getFillOpacityOrDefault = function() { - var fillOpacity = this.getFillOpacity(); - if (fillOpacity == null) { - fillOpacity = 1.0; - } - return fillOpacity; -}; - -/** - * Validate and adjust the color value - * @param {String} color color - */ -StyleRow.prototype.validateColor = function(color) { - var validated = color; - if (color != null) { - if (!color.startsWith("#")) { - validated = "#" + color; - } - if (!colorPattern.test(validated)) { - throw new Error("Color must be in hex format #RRGGBB or #RGB, invalid value: " + color); - } - validated = validated.toUpperCase(); - } - return validated; -}; - -/** - * Validate the opacity value - * @param {Number} opacity opacity - */ -StyleRow.prototype.validateOpacity = function(opacity) { - if (opacity != null && (opacity < 0.0 || opacity > 1.0)) { - throw new Error("Opacity must be set inclusively between 0.0 and 1.0, invalid value: " + opacity); - } -}; - -/** - * Create a color from the hex color and opacity - * @param {String} hexColor hex color - * @param {Number} opacity opacity - * @return {String} rgba color - */ -StyleRow.prototype.createColor = function(hexColor, opacity) { - var color = '#000000'; - if (hexColor !== null) { - color = hexColor; - } - if (opacity !== null) { - var a = Math.round(opacity * 255).toString(16); - if (a.length === 1) { - a = "0" + a; - } - color += a; - } - return color.toUpperCase(); -}; - -/** - * Determine if a color exists from the hex color and opacity - * @param {String} hexColor hex color - * @param {Number} opacity opacity - * @return true if has a color - */ -StyleRow.prototype._hasColor = function(hexColor, opacity) { - return hexColor !== null || opacity !== null; -}; - -module.exports = StyleRow; - -},{"../../attributes/attributeRow":4,"util":343}],60:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleTable - */ - -var AttributesTable = require('../../attributes/attributeTable') - , UserColumn = require('../../user/userColumn') - , UserCustomColumn = require('../../user/custom/userCustomColumn') - , RelationType = require('../relatedTables/relationType') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * Icon Requirements Class Media Table - * @extends {module:attributes/attributeTable~AttributeTable} - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns media columns - * @constructor - */ -var StyleTable = function(tableName, columns) { - this.data_type = RelationType.ATTRIBUTES.dataType; - this.relation_name = RelationType.ATTRIBUTES.name; - AttributesTable.call(this, tableName, columns); -}; - -util.inherits(StyleTable, AttributesTable); - -/** - * Create a media table with a minimum required columns followed by the additional columns - * @return {module:extension/style.StyleTable} - */ -StyleTable.create = function() { - return new StyleTable(StyleTable.TABLE_NAME, StyleTable.createColumns()); -}; - -/** - * Create the columns - * @return {module:user/custom~UserCustomColumn[]} - */ -StyleTable.createColumns = function() { - var columns = []; - var index = 0; - columns.push(UserColumn.createPrimaryKeyColumnWithIndexAndName(index++, StyleTable.COLUMN_ID)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_NAME, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_DESCRIPTION, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_COLOR, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_OPACITY, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_WIDTH, DataTypes.GPKGDataType.GPKG_DT_REAL, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index++, StyleTable.COLUMN_FILL_COLOR, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - columns.push(UserCustomColumn.createColumn(index, StyleTable.COLUMN_FILL_OPACITY, DataTypes.GPKGDataType.GPKG_DT_TEXT, undefined, false, undefined)); - return columns; -}; - -/** - * Get the name column index - * @return int - */ -StyleTable.prototype.getNameColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_NAME); -}; - -/** - * Get the name column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getNameColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_NAME); -}; - -/** - * Get the description column index - * @return int - */ -StyleTable.prototype.getDescriptionColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_DESCRIPTION); -}; - -/** - * Get the description column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getDescriptionColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_DESCRIPTION); -}; - -/** - * Get the color column index - * @return int - */ -StyleTable.prototype.getColorColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_COLOR); -}; - -/** - * Get the color column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getColorColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_COLOR); -}; - -/** - * Get the opacity column index - * @return int - */ -StyleTable.prototype.getOpacityColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_OPACITY); -}; - -/** - * Get the opacity column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getOpacityColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_OPACITY); -}; - -/** - * Get the width column index - * @return int - */ -StyleTable.prototype.getWidthColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_WIDTH); -}; - -/** - * Get the width column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getWidthColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_WIDTH); -}; - -/** - * Get the fill_color column index - * @return int - */ -StyleTable.prototype.getFillColorColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_FILL_COLOR); -}; - -/** - * Get the fill_color column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getFillColorColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_FILL_COLOR); -}; - -/** - * Get the fill_opacity column index - * @return int - */ -StyleTable.prototype.getFillOpacityColumnIndex = function() { - return this.getColumnIndex(StyleTable.COLUMN_FILL_OPACITY); -}; - -/** - * Get the fill_opacity column - * @return {module:user/userColumn~UserColumn} - */ -StyleTable.prototype.getFillOpacityColumn = function() { - return this.getColumnWithColumnName(StyleTable.COLUMN_FILL_OPACITY); -}; - -StyleTable.TABLE_NAME = 'nga_style'; -StyleTable.COLUMN_ID = 'id'; -StyleTable.COLUMN_NAME = 'name'; -StyleTable.COLUMN_DESCRIPTION = 'description'; -StyleTable.COLUMN_COLOR = 'color'; -StyleTable.COLUMN_OPACITY = 'opacity'; -StyleTable.COLUMN_WIDTH = 'width'; -StyleTable.COLUMN_FILL_COLOR = 'fill_color'; -StyleTable.COLUMN_FILL_OPACITY = 'fill_opacity'; -StyleTable.prototype.TABLE_TYPE = 'media'; - -module.exports = StyleTable; - -},{"../../attributes/attributeTable":5,"../../db/dataTypes":14,"../../user/custom/userCustomColumn":101,"../../user/userColumn":105,"../relatedTables/relationType":36,"util":343}],61:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class StyleTableReader - */ - -var AttributeTableReader = require('../../attributes/attributeTableReader') - , StyleTable = require('./styleTable'); - -var util = require('util'); - -/** - * Reads the metadata from an existing attribute table - * @extends {module:attributes/attributeTableReader} - * @constructor -*/ -var StyleTableReader = function(tableName) { - AttributeTableReader.call(this, tableName); -}; - -util.inherits(StyleTableReader, AttributeTableReader); - -/** - * - * @param {String} tableName - * @param columns - * @returns {module:extension/style.StyleTable} - */ -StyleTableReader.prototype.createTable = function (tableName, columns) { - return new StyleTable(tableName, columns); -}; - -module.exports = StyleTableReader; - -},{"../../attributes/attributeTableReader":6,"./styleTable":60,"util":343}],62:[function(require,module,exports){ -/** - * @memberOf module:extension/style - * @class Styles - */ - - -/** - * Styles constructor - * @constructor - */ -var Styles = function() { - this.defaultStyle = null; - this.styles = {}; -}; - -Styles.prototype.setDefault = function(styleRow) { - this.defaultStyle = styleRow; -}; - -Styles.prototype.getDefault = function() { - return this.defaultStyle; -}; - -Styles.prototype.setStyle = function(styleRow, geometryType) { - if (geometryType != null) { - if (styleRow != null) { - this.styles[geometryType] = styleRow; - } else { - delete this.styles[geometryType]; - } - } else { - this.setDefault(styleRow); - } -}; - -Styles.prototype.getStyle = function(geometryType) { - var styleRow = null; - if (geometryType != null) { - styleRow = this.styles[geometryType]; - } - if (styleRow === null || geometryType === null) { - styleRow = this.getDefault(); - } - return styleRow; -}; - -Styles.prototype.isEmpty = function() { - return Object.keys(this.styles).length === 0 && this.defaultStyle === null; -}; - -module.exports = Styles; - -},{}],63:[function(require,module,exports){ -/** - * WebPExtension module. - * @module WebPExtension - * @see module:extension/BaseExtension - */ - -var BaseExtension = require('../baseExtension') - , Extension = require('../.').Extension; - -var util = require('util'); - -var WebPExtension = function(geoPackage, tableName) { - BaseExtension.call(this, geoPackage); - - this.tableName = tableName; -} - -util.inherits(WebPExtension, BaseExtension); - -WebPExtension.prototype.getOrCreateExtension = function() { - return this.getOrCreate(WebPExtension.EXTENSION_NAME, this.tableName, 'tile_data', WebPExtension.EXTENSION_WEBP_DEFINITION, Extension.READ_WRITE); -}; - -WebPExtension.EXTENSION_NAME = 'gpkg_webp'; -WebPExtension.EXTENSION_WEBP_AUTHOR = 'gpkg'; -WebPExtension.EXTENSION_WEBP_NAME_NO_AUTHOR = 'webp'; -WebPExtension.EXTENSION_WEBP_DEFINITION = 'http://www.geopackage.org/spec/#extension_webp'; - -module.exports.WebPExtension = WebPExtension; - -},{"../.":25,"../baseExtension":20,"util":343}],64:[function(require,module,exports){ -/** - * GeometryColumns module. - * @module features/columns - */ - -var Dao = require('../../dao/dao') - , SpatialReferenceSystemDao = require('../../core/srs').SpatialReferenceSystemDao - , ContentsDao = require('../../core/contents').ContentsDao - , Contents = require('../../core/contents').Contents; - -var util = require('util'); - -/** - * Spatial Reference System object. The coordinate reference system definitions it contains are referenced by the GeoPackage Contents and GeometryColumns objects to relate the vector and tile data in user tables to locations on the earth. - * @class GeometryColumns - */ -var GeometryColumns = function() { - /** - * Name of the table containing the geometry column - * @member {string} - */ - this.table_name; - - /** - * Name of a column in the feature table that is a Geometry Column - * @member {string} - */ - this.column_name; - - /** - * Name from Geometry Type Codes (Core) or Geometry Type Codes (Extension) - * in Geometry Types (Normative) - * @member {string} - */ - this.geometry_type_name; - - /** - * Spatial Reference System ID: gpkg_spatial_ref_sys.srs_id - * @member {module:dao/spatialReferenceSystem~SpatialReferenceSystem} - */ - this.srs; - - /** - * Unique identifier for each Spatial Reference System within a GeoPackage - * @member {Number} - */ - this.srs_id; - - /** - * 0: z values prohibited; 1: z values mandatory; 2: z values optional - * @member {byte} - */ - this.z; - - /** - * 0: m values prohibited; 1: m values mandatory; 2: m values optional - * @member {byte} - */ - this.m; - -}; - -GeometryColumns.prototype.getGeometryType = function() { - return this.geometry_type_name; -}; - - // /** - // * Contents - // */ - // @ForeignCollectionField(eager = false) - // private ForeignCollection contents; - // - // /** - // * Geometry Columns - // */ - // @ForeignCollectionField(eager = false) - // private ForeignCollection geometryColumns; - // - // /** - // * Matrix Tile Set - // */ - // @ForeignCollectionField(eager = false) - // private ForeignCollection tileMatrixSet; - - - -/** - * Geometry Columns Data Access Object - * @class GeometryColumnsDao - * @extends {module:dao/dao~Dao} - */ -var GeometryColumnsDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(GeometryColumnsDao, Dao); - -GeometryColumnsDao.prototype.createObject = function () { - return new GeometryColumns(); -}; - -/** - * Query for the table name - * - * @param {string} tableName table name - * @param {callback} callback called with an error if one occurred and the {module:dao/geometryColumns~GeometryColumns} - */ -GeometryColumnsDao.prototype.queryForTableName = function (tableName) { - var results = this.queryForAllEq(GeometryColumnsDao.COLUMN_TABLE_NAME, tableName); - if (results && results.length) { - var gc = this.createObject(); - this.populateObjectFromResult(gc, results[0]); - return gc; - } - return; -}; - -/** - * Get the feature table names - * - * @param {callback} callback called with an error if one occurred and an array of the {FeatureTable} - */ -GeometryColumnsDao.prototype.getFeatureTables = function () { - var tableNames = []; - for (var result of this.connection.each('select ' + GeometryColumnsDao.COLUMN_TABLE_NAME + ' from ' + this.gpkgTableName)) { - tableNames.push(result[GeometryColumnsDao.COLUMN_TABLE_NAME]); - } - return tableNames; -}; - -/** - * Get the Spatial Reference System of the Geometry Columns - * - * @param {module:dao/geometryColumns~GeometryColumns} geometryColumns geometry columns - * @param {callback} callback called with an error if one occurred and the {SpatialReferenceSystem} - */ -GeometryColumnsDao.prototype.getSrs = function (geometryColumns) { - var dao = this.geoPackage.getSpatialReferenceSystemDao(); - return dao.queryForId(geometryColumns.srs_id);; -}; - -/** - * Get the Contents of the Geometry Columns - * - * @param {module:dao/geometryColumns~GeometryColumns} geometryColumns geometry columns - * @return {ContentsDao} contents dao - */ -GeometryColumnsDao.prototype.getContents = function (geometryColumns) { - var dao = this.geoPackage.getContentsDao(); - return dao.queryForId(geometryColumns.table_name); -}; - -GeometryColumnsDao.prototype.getProjection = function (projectionObject) { - var srs = this.getSrs(projectionObject); - var srsDao = this.geoPackage.getSpatialReferenceSystemDao(); - return srsDao.getProjection(srs); -}; - -/** - * tableName field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_TABLE_NAME = "table_name"; - -/** - * columnName field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_COLUMN_NAME = "column_name"; - -/** - * id 1 field name, tableName - * @type {String} - */ -GeometryColumnsDao.COLUMN_ID_1 = GeometryColumnsDao.COLUMN_TABLE_NAME; - -/** - * id 2 field name, columnName - * @type {String} - */ -GeometryColumnsDao.COLUMN_ID_2 = GeometryColumnsDao.COLUMN_COLUMN_NAME; - -/** - * geometryTypeName field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_GEOMETRY_TYPE_NAME = "geometry_type_name"; - -/** - * srsId field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_SRS_ID = 'srs_id'; - -/** - * z field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_Z = "z"; - -/** - * m field name - * @type {String} - */ -GeometryColumnsDao.COLUMN_M = "m"; - -/** - * Table Name - * @type {String} - */ -GeometryColumnsDao.prototype.gpkgTableName = 'gpkg_geometry_columns'; - -GeometryColumnsDao.prototype.idColumns = [GeometryColumnsDao.COLUMN_ID_1, GeometryColumnsDao.COLUMN_ID_2]; -GeometryColumnsDao.prototype.columns = - [GeometryColumnsDao.COLUMN_TABLE_NAME, GeometryColumnsDao.COLUMN_COLUMN_NAME, GeometryColumnsDao.COLUMN_GEOMETRY_TYPE_NAME, GeometryColumnsDao.COLUMN_SRS_ID, GeometryColumnsDao.COLUMN_Z, GeometryColumnsDao.COLUMN_M]; - -GeometryColumns.TABLE_NAME = "tableName"; -GeometryColumns.COLUMN_NAME = "columnName"; -GeometryColumns.GEOMETRY_TYPE_NAME = "geometryTypeName"; -GeometryColumns.SRS_ID = "srsId"; -GeometryColumns.Z = "z"; -GeometryColumns.M = "m"; - -module.exports.GeometryColumnsDao = GeometryColumnsDao; -module.exports.GeometryColumns = GeometryColumns; - -},{"../../core/contents":8,"../../core/srs":9,"../../dao/dao":11,"util":343}],65:[function(require,module,exports){ -/** - * @module features/user/featureColumn - */ - -const UserColumn = require('../../user/userColumn'); -const DataTypes = require('../../db/dataTypes'); -const util = require('util'); - -/** - * Represents a user feature column - * @class - * @extends {module:user/userColumn~UserColumn} - */ -var FeatureColumn = function(index, name, dataType, max, notNull, defaultValue, primaryKey, geometryType) { - UserColumn.call(this, index, name, dataType, max, notNull, defaultValue, primaryKey); - this.geometryType = geometryType; - - if (!geometryType && dataType === DataTypes.GPKGDataType.GPKG_DT_GEOMETRY) { - throw new Error('Data or Geometry Type is required to create column: ' + name); - } -} - -util.inherits(FeatureColumn, UserColumn); - -FeatureColumn.prototype.getTypeName = function () { - if (this.isGeometry()) { - return DataTypes.name(DataTypes.GPKGDataType.GPKG_DT_GEOMETRY); - } - return this.dataType !== undefined && DataTypes.name(this.dataType); -}; - -/** - * Create a new primary key column - * - * @param {Number} index column index - * @param {string} name column name - * - * @return feature column - */ -FeatureColumn.createPrimaryKeyColumnWithIndexAndName = function(index, name) { - return new FeatureColumn(index, name, DataTypes.GPKGDataType.GPKG_DT_INTEGER, undefined, true, undefined, true); -} - -/** - * Create a new geometry column - * - * @param {Number} index column index - * @param {string} name column name - * @param {WKBGeometryType} type geometry type - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return feature column - */ -FeatureColumn.createGeometryColumn = function(index, name, type, notNull, defaultValue) { - return new FeatureColumn(index, name, type, undefined, notNull, defaultValue, false, type); -} - -/** - * Create a new column - * - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return feature column - */ -FeatureColumn.createColumnWithIndex = function(index, name, type, notNull, defaultValue) { - return FeatureColumn.createColumnWithIndexAndMax(index, name, type, undefined, notNull, defaultValue); -} - -/** - * Create a new column - * - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return feature column - */ -FeatureColumn.createColumnWithIndexAndMax = function(index, name, type, max, notNull, defaultValue) { - return new FeatureColumn(index, name, type, max, notNull, defaultValue, false); -} - -/** - * Determine if this column is a geometry - * @return {Boolean} true if a geometry column - */ -FeatureColumn.prototype.isGeometry = function () { - return this.geometryType !== undefined; -}; - -module.exports = FeatureColumn; - -},{"../../db/dataTypes":14,"../../user/userColumn":105,"util":343}],66:[function(require,module,exports){ -/** - * featureDao module. - * @module features/user/featureDao - */ - -var UserDao = require('../../user/userDao') - , GeometryColumnsDao = require('../columns').GeometryColumnsDao - , ContentsDao = require('../../core/contents').ContentsDao - , DataColumnsDao = require('../../dataColumns').DataColumnsDao - , FeatureRow = require('./featureRow') - , DataTypes = require('../../db/dataTypes') - , FeatureTableIndex = require('../../extension/index/featureTableIndex') - , BoundingBox = require('../../boundingBox'); - -var util = require('util') - , reproject = require('reproject') - , LineIntersect = require('@turf/line-intersect').default - , Intersect = require('@turf/intersect').default - , BooleanWithin = require('@turf/boolean-within').default; - -/** - * Feature DAO for reading feature user data tables - * @class FeatureDao - * @extends {module:user/userDao~UserDao} - * @param {sqlite3} db database connection - * @param {FeatureTable} table feature table - * @param {GeometryColumns} geometryColumns geometry columns - * @param {MetadataDb} metadataDb metadata db - */ -var FeatureDao = function(geoPackage, table, geometryColumns, metadataDb) { - UserDao.call(this, geoPackage, table); - this.geometryColumns = geometryColumns; - this.metadataDb = metadataDb; - this.dataColumnsDao = new DataColumnsDao(geoPackage); - this.featureTableIndex = new FeatureTableIndex(geoPackage, this); - var dao = geoPackage.getGeometryColumnsDao(); - if (!dao.getContents(geometryColumns)) { - throw new Error('Geometry Columns ' + dao.getId(geometryColumns) + ' has null Contents'); - } - if (!dao.getSrs(geometryColumns)) { - throw new Error('Geometry Columns ' + dao.getId(geometryColumns) + ' has null Spatial Reference System'); - } - this.projection = dao.getProjection(geometryColumns); -} - -util.inherits(FeatureDao, UserDao); - -FeatureDao.prototype.createObject = function (results) { - if (results) { - return this.getRow(results); - } - return this.newRow(); -}; - -FeatureDao.prototype.getContents = function() { - var dao = this.geoPackage.getGeometryColumnsDao(); - return dao.getContents(this.geometryColumns); -} - -/** - * Get the feature table - * @return {FeatureTable} the feature table - */ -FeatureDao.prototype.getFeatureTable = function () { - return this.table; -}; - -/** - * Create a new feature row with the column types and values - * @param {Array} columnTypes column types - * @param {Array} values values - * @return {FeatureRow} feature row - */ -FeatureDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new FeatureRow(this.getFeatureTable(), columnTypes, values); -}; - -/** - * Create a new feature row - * @return {FeatureRow} feature row - */ -FeatureDao.prototype.newRow = function () { - return new FeatureRow(this.getFeatureTable()); -}; - -/** - * Get the geometry column name - * @return {string} the geometry column name - */ -FeatureDao.prototype.getGeometryColumnName = function () { - return this.geometryColumns.column_name; -}; - -/** - * Get the geometry types - * @return {WKBGeometryType} well known binary geometry type - */ -FeatureDao.prototype.getGeometryType = function () { - return this.geometryColumns.getGeometryType(); -}; - -FeatureDao.prototype.getSrs = function() { - return this.geoPackage.getGeometryColumnsDao().getSrs(this.geometryColumns); -}; - -/** - * Determine if the feature table is indexed - * @param {Function} callback called with err if one occurred and true or false indicating the indexed status - */ -FeatureDao.prototype.isIndexed = function() { - return this.featureTableIndex.isIndexed(); -} - -/** - * Query for count in bounding box - * @param boundingBox - * @returns {Number}} - */ -FeatureDao.prototype.countWebMercatorBoundingBox = function(boundingBox) { - var srs = this.getSrs(); - return this.featureTableIndex.countWithBoundingBox(boundingBox, 'EPSG:3857'); -} - -FeatureDao.prototype.fastQueryWebMercatorBoundingBox = function(boundingBox, featureRowCallback) { - var srs = this.getSrs(); - var iterator = this.featureTableIndex.queryWithBoundingBox(boundingBox, 'EPSG:3857'); - var thisgetRow = this.getRow.bind(this); - - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var featureRow = thisgetRow(nextRow.value); - - return { - value: featureRow, - done: false - }; - } else { - return { - done: true - } - } - } - } -} - -FeatureDao.prototype.queryIndexedFeaturesWithWebMercatorBoundingBox = function(boundingBox) { - var srs = this.getSrs(); - var projection = this.projection; - - var iterator = this.featureTableIndex.queryWithBoundingBox(boundingBox, 'EPSG:3857'); - var thisgetRow = this.getRow.bind(this); - var projectedBoundingBox = boundingBox.projectBoundingBox('EPSG:3857', 'EPSG:4326'); - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var featureRow; - var geometry; - - while(!nextRow.done && !geometry) { - featureRow = thisgetRow(nextRow.value); - geometry = reprojectFeature(featureRow, srs, projection); - geometry = verifyFeature(geometry, projectedBoundingBox); - if (geometry) { - geometry.properties = featureRow.values; - return { - value: featureRow, - done: false - }; - } else { - nextRow = iterator.next(); - } - } - } - return { - done: true - } - } - } -} - -/** - * Calls geoJSONFeatureCallback with the geoJSON of each matched feature (always in 4326 projection) - * @param {BoundingBox} boundingBox 4326 bounding box to query - * @param {function} geoJSONFeatureCallback called with err, geoJSON, doneCallback - * @param {function} doneCallback called when all rows have been returned - */ -FeatureDao.prototype.queryForGeoJSONIndexedFeaturesWithBoundingBox = function(boundingBox, skipVerification) { - - var columns = []; - var columnMap = {}; - - var srs = this.getSrs(); - var projection = this.projection; - this.table.columns.forEach(function(column) { - var dataColumn = this.dataColumnsDao.getDataColumns(this.table.table_name, column.name); - columns.push({ - index: column.index, - name: column.name, - max: column.max, - min: column.min, - notNull: column.notNull, - primaryKey: column.primaryKey, - dataType: column.dataType ? DataTypes.name(column.dataType) : '', - displayName: dataColumn && dataColumn.name ? dataColumn.name : column.name, - dataColumn: dataColumn - }); - columnMap[column.name] = columns[columns.length-1]; - }.bind(this)); - - var verifiedCount = 0; - var iterator = this.featureTableIndex.queryWithBoundingBox(boundingBox, 'EPSG:4326')[Symbol.iterator](); - var thisgetRow = this.getRow.bind(this); - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var featureRow; - var geometry; - - while(!nextRow.done && !geometry) { - featureRow = thisgetRow(nextRow.value); - geometry = reprojectFeature(featureRow, srs, projection); - if (!skipVerification) { - geometry = verifyFeature(geometry, boundingBox); - } - if (geometry) { - var geoJson = { - properties: {}, - geometry: geometry - }; - for (var key in featureRow.values) { - if(featureRow.values.hasOwnProperty(key) && key != featureRow.getGeometryColumn().name && key != 'id') { - if (key.toLowerCase() == '_feature_id') { - geoJson.id = featureRow.values[key]; - } else if (key.toLowerCase() == '_properties_id') { - geoJson.properties[key.substring(12)] = featureRow.values[key]; - } else { - geoJson.properties[columnMap[key].displayName] = featureRow.values[key]; - } - } - } - geoJson.id = geoJson.id || featureRow.getId(); - return { - value: geoJson, - done: false - }; - } else { - nextRow = iterator.next(); - } - } - } - return { - done: true - } - }.bind(this) - } -} - -function reprojectFeature(featureRow, srs, projection) { - var geometry = featureRow.getGeometry().toGeoJSON(); - if (srs.organization + ':' + srs.organization_coordsys_id != 'EPSG:4326') { - geometry = reproject.reproject(geometry, projection, 'EPSG:4326'); - } - return geometry; -} - -function verifyFeature(geometry, boundingBox) { - try { - if (geometry.type == 'Point') { - return geometry; - } else if (geometry.type == 'LineString') { - var intersect = LineIntersect(geometry, boundingBox.toGeoJSON().geometry); - if (intersect.features.length) { - return geometry; - } else if (BooleanWithin(geometry, boundingBox.toGeoJSON().geometry)) { - return geometry; - } - } else if (geometry.type == 'Polygon') { - var polyIntersect = Intersect(geometry, boundingBox.toGeoJSON().geometry); - if (polyIntersect) { - return geometry; - } else if (BooleanWithin(geometry, boundingBox.toGeoJSON().geometry)) { - return geometry; - } - } - } catch (e) {} -} - -FeatureDao.prototype.queryIndexedFeaturesWithBoundingBox = function(boundingBox) { - var srs = this.getSrs(); - var projection = this.projection; - - var iterator = this.featureTableIndex.queryWithBoundingBox(boundingBox, 'EPSG:4326'); - var thisgetRow = this.getRow.bind(this); - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var featureRow; - var geometry; - - while(!nextRow.done && !geometry) { - featureRow = thisgetRow(nextRow.value); - geometry = reprojectFeature(featureRow, srs, projection); - geometry = verifyFeature(geometry, boundingBox); - if (geometry) { - geometry.properties = featureRow.values; - return { - value: featureRow, - done: false - }; - } else { - nextRow = iterator.next(); - } - } - } - return { - done: true - } - }.bind(this) - } -} - -FeatureDao.prototype.getBoundingBox = function () { - var contents = this.getContents(); - return new BoundingBox(contents.min_x, contents.max_x, contents.min_y, contents.max_y); -}; - -module.exports = FeatureDao; - -},{"../../boundingBox":7,"../../core/contents":8,"../../dataColumns":13,"../../db/dataTypes":14,"../../extension/index/featureTableIndex":26,"../../user/userDao":106,"../columns":64,"./featureRow":67,"@turf/boolean-within":120,"@turf/intersect":124,"@turf/line-intersect":126,"reproject":315,"util":343}],67:[function(require,module,exports){ -/** - * featureRow module. - * @module features/user/featureRow - */ - -var UserRow = require('../../user/userRow') - , FeatureColumn = require('./featureColumn') - , GeometryData = require('../../geom/geometryData') - , DataTypes = require('../../db/dataTypes'); - -var util = require('util'); - -/** - * Feature Row containing the values from a single result set row - * @param {FeatureTable} featureTable feature table - * @param {Array} columnTypes column types - * @param {Array} values values - */ -var FeatureRow = function(featureTable, columnTypes, values) { - UserRow.call(this, featureTable, columnTypes, values); - this.featureTable = featureTable; -} - -util.inherits(FeatureRow, UserRow); - -/** - * Get the geometry column index - * @return {Number} geometry column index - */ -FeatureRow.prototype.getGeometryColumnIndex = function () { - return this.featureTable.geometryIndex; -}; - -/** - * Get the geometry column - * @return {FeatureColumn} geometry column - */ -FeatureRow.prototype.getGeometryColumn = function () { - return this.featureTable.getGeometryColumn(); -}; - -/** - * Get the geometry - * @return {Buffer} geometry data - */ -FeatureRow.prototype.getGeometry = function () { - return this.getValueWithIndex(this.featureTable.geometryIndex); -}; - -/** - * Get the geometry's type - * @return {String} geometry data - */ -FeatureRow.prototype.getGeometryType = function () { - var geometryType = null; - var geometry = this.getValueWithIndex(this.featureTable.geometryIndex); - if (geometry !== null) { - geometryType = geometry.toGeoJSON().type; - } - return geometryType; -}; - -/** - * set the geometry - * @param {Buffer} geometryData geometry data - */ -FeatureRow.prototype.setGeometry = function (geometryData) { - this.setValueWithIndex(this.featureTable.geometryIndex, geometryData); -}; - -FeatureRow.prototype.toObjectValue = function (index, value) { - var objectValue = value; - var column = this.getColumnWithIndex(index); - if (column.isGeometry() && value) { - objectValue = new GeometryData(value); - } - return objectValue; -}; - -FeatureRow.prototype.toDatabaseValue = function(columnName) { - var column = this.getColumnWithColumnName(columnName); - var value = this.getValueWithColumnName(columnName); - if (column.isGeometry() && value.toData) { - return value.toData(); - } else if (column.dataType === DataTypes.GPKGDataType.BOOLEAN) { - return value === true ? 1 : 0; - } - - return value; -} - -module.exports = FeatureRow; - -},{"../../db/dataTypes":14,"../../geom/geometryData":73,"../../user/userRow":107,"./featureColumn":65,"util":343}],68:[function(require,module,exports){ -/** - * featureTable module. - * @module features/user/featureTable - */ - -var UserTable = require('../../user/userTable'); - -var util = require('util'); - -/** - * Represents a user feature table - * @param {string} tableName table name - * @param {array} columns feature columns - */ -var FeatureTable = function(tableName, columns) { - UserTable.call(this, tableName, columns); - var geometry = undefined; - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - if (column.isGeometry()) { - this.duplicateCheck(column.index, geometry, /* WKB_GEOMETRY_NAME */ 'GEOMETRY'); - geometry = column.index; - } - } - this.missingCheck(geometry, /* WKB_GEOMETRY_NAME */ 'GEOMETRY'); - this.geometryIndex = geometry; -} - -util.inherits(FeatureTable, UserTable); - -/** - * Get the geometry feature column - * @return {FeatureColumn} geometry feature column - */ -FeatureTable.prototype.getGeometryColumn = function () { - return this.getColumnWithIndex(this.geometryIndex); -}; - -FeatureTable.prototype.getTableType = function() { - return UserTable.FEATURE_TABLE; -} - -/** - * The FeatureTable - * @type {FeatureTable} - */ -module.exports = FeatureTable; - -},{"../../user/userTable":108,"util":343}],69:[function(require,module,exports){ -/** - * featureTableReader module. - * @module features/user/featureTableReader - */ - -var UserTableReader = require('../../user/userTableReader') - , FeatureTable = require('./featureTable') - , FeatureColumn = require('./featureColumn') - , GeometryColumnsDao = require('../columns').GeometryColumnsDao - , DataTypes = require('../../db/dataTypes') - , wkb = require('../../wkb'); - -var util = require('util'); - -/** -* Reads the metadata from an existing feature table -* @class FeatureTableReader -* @extends {module:user~UserTableReader} -*/ -var FeatureTableReader = function(tableNameOrGeometryColumns) { - if (util.isString(tableNameOrGeometryColumns)) { - UserTableReader.call(this, tableNameOrGeometryColumns); - } else { - UserTableReader.call(this, tableNameOrGeometryColumns.table_name); - this.geometryColumns = tableNameOrGeometryColumns; - } -} - -util.inherits(FeatureTableReader, UserTableReader); - -FeatureTableReader.prototype.readFeatureTable = function (geoPackage) { - if (!this.geometryColumns) { - var gcd = new GeometryColumnsDao(geoPackage); - this.geometryColumns = gcd.queryForTableName(this.table_name); - return this.readTable(geoPackage.getDatabase()); - } else { - return this.readTable(geoPackage.getDatabase()); - } -}; - -FeatureTableReader.prototype.createTable = function (tableName, columns) { - return new FeatureTable(tableName, columns); -}; - -FeatureTableReader.prototype.createColumnWithResults = function (results, index, name, type, max, notNull, defaultValue, primaryKey) { - var geometry = name === this.geometryColumns.column_name; - var geometryType = undefined; - var dataType = undefined; - if (geometry) { - geometryType = wkb.fromName(type); - } else { - dataType = DataTypes.fromName(type); - } - var column = new FeatureColumn(index, name, dataType, max, notNull, defaultValue, primaryKey, geometryType); - - return column; -}; - -/** - * The FeatureTableReader - * @type {FeatureTableReader} - */ -module.exports = FeatureTableReader; - -},{"../../db/dataTypes":14,"../../user/userTableReader":109,"../../wkb":111,"../columns":64,"./featureColumn":65,"./featureTable":68,"util":343}],70:[function(require,module,exports){ - -/** - * @module geoPackage - */ - -var SpatialReferenceSystemDao = require('./core/srs').SpatialReferenceSystemDao - , GeometryColumnsDao = require('./features/columns').GeometryColumnsDao - , FeatureDao = require('./features/user/featureDao') - , FeatureTableReader = require('./features/user/featureTableReader') - , ContentsDao = require('./core/contents').ContentsDao - , Contents = require('./core/contents').Contents - , TileMatrixSetDao = require('./tiles/matrixset').TileMatrixSetDao - , TileMatrixSet = require('./tiles/matrixset').TileMatrixSet - , TileMatrixDao = require('./tiles/matrix').TileMatrixDao - , TileMatrix = require('./tiles/matrix').TileMatrix - , TileTableReader = require('./tiles/user/tileTableReader') - , TileDao = require('./tiles/user/tileDao') - , TileTable = require('./tiles/user/tileTable') - , TileBoundingBoxUtils = require('./tiles/tileBoundingBoxUtils') - , TableCreator = require('./db/tableCreator') - , UserTable = require('./user/userTable') - , FeatureTable = require('./features/user/featureTable') - , DataColumnsDao = require('./dataColumns').DataColumnsDao - , DataColumnConstraintsDao = require('./dataColumnConstraints').DataColumnConstraintsDao - , MetadataDao = require('./metadata').MetadataDao - , MetadataReferenceDao = require('./metadata/reference').MetadataReferenceDao - , ExtensionDao = require('./extension').ExtensionDao - , CrsWktExtension = require('./extension/crsWkt').CrsWktExtension - , SchemaExtension = require('./extension/schema').SchemaExtension - , RelatedTablesExtension = require('./extension/relatedTables') - , TableIndexDao = require('./extension/index/tableIndex').TableIndexDao - , GeometryIndexDao = require('./extension/index/geometryIndex').GeometryIndexDao - , ExtendedRelationDao = require('./extension/relatedTables/extendedRelation').ExtendedRelationDao - , ContentsIdDao = require('./extension/contents/contentsIdDao') - , ContentsIdExtension = require('./extension/contents/.') - , FeatureStyleExtension = require('./extension/style/.') - , AttributeTable = require('./attributes/attributeTable') - , AttributeTableReader = require('./attributes/attributeTableReader') - , AttributeDao = require('./attributes/attributeDao') - , DataTypes = require('./db/dataTypes'); - -var proj4 = require('proj4'); - -proj4 = 'default' in proj4 ? proj4['default'] : proj4; // Module loading hack - -var defs = require('./proj4Defs'); -for (var name in defs) { - if (defs[name]) { - proj4.defs(name, defs[name]); - } -} - -/** - * A `GeoPackage` instance is the interface to a physical GeoPackage SQLite - * database. - * @param {string} name - * @param {string} path - * @param {module:db/geoPackageConnection~GeoPackageConnection} connection - * @class - */ -var GeoPackage = module.exports = function(name, path, connection) { - this.name = name; - this.path = path; - this.connection = connection; - this.tableCreator = new TableCreator(this); -} - -GeoPackage.loadProjections = function(items) { - if (!(items instanceof Array)) throw new Error('Invalid array of projections'); - for (var i = 0; i < items.length; i++) { - if (!defs[items[i]]) throw new Error('Projection not found'); - this.addProjection(items[i], defs[items[i]]); - } -} - -GeoPackage.addProjection = function(name, definition) { - if (!name || ! definition) throw new Error('Invalid projection name/definition'); - proj4.defs(''+name, ''+definition); -} - -GeoPackage.hasProjection = function(name) { - return proj4.defs(''+name); -} - -GeoPackage.prototype.close = function() { - this.connection.close(); -} - -GeoPackage.prototype.getDatabase = function() { - return this.connection; -} - -GeoPackage.prototype.getPath = function() { - return this.path; -} - -GeoPackage.prototype.export = function(callback) { - this.connection.export(callback); -} - -/** - * Get the GeoPackage name - * @return {String} the GeoPackage name - */ -GeoPackage.prototype.getName = function() { - return this.name; -} - -/** - * @returns {module:core/srs~SpatialReferenceSystemDao} the DAO to access the [SRS table]{@link module:core/srs~SpatialReferenceSystem} in this `GeoPackage` - */ -GeoPackage.prototype.getSpatialReferenceSystemDao = function() { - return this.spatialReferenceSystemDao || (this.spatialReferenceSystemDao = new SpatialReferenceSystemDao(this)); -} - -/** - * @returns {module:core/contents~ContentsDao} the DAO to access the [contents table]{@link module:core/contents~Contents} in this `GeoPackage` - */ -GeoPackage.prototype.getContentsDao = function() { - return this.contentsDao || (this.contentsDao = new ContentsDao(this)); -} - -/** - * @returns {module:tiles/matrixset~TileMatrixSetDao} the DAO to access the [tile matrix set]{@link module:tiles/matrixset~TileMatrixSet} in this `GeoPackage` - */ -GeoPackage.prototype.getTileMatrixSetDao = function () { - return this.tileMatrixSetDao || (this.tileMatrixSetDao = new TileMatrixSetDao(this)); -}; - -/** - * @returns {module:tiles/matrixset~TileMatrixDao} the DAO to access the [tile matrix]{@link module:tiles/matrixset~TileMatrix} in this `GeoPackage` - */ -GeoPackage.prototype.getTileMatrixDao = function() { - return this.tileMatrixDao || (this.tileMatrixDao = new TileMatrixDao(this)); -} - -GeoPackage.prototype.getDataColumnsDao = function() { - return this.dataColumnsDao || (this.dataColumnsDao = new DataColumnsDao(this)); -} - -GeoPackage.prototype.getExtensionDao = function() { - return this.extensionDao || (this.extensionDao = new ExtensionDao(this)); -} - -GeoPackage.prototype.getTableIndexDao = function() { - return this.tableIndexDao || (this.tableIndexDao = new TableIndexDao(this)); -} - -GeoPackage.prototype.getGeometryColumnsDao = function () { - return this.geometryColumnsDao || (this.geometryColumnsDao = new GeometryColumnsDao(this)); -}; - -GeoPackage.prototype.getDataColumnConstraintsDao = function () { - return this.dataColumnConstraintsDao || (this.dataColumnConstraintsDao = new DataColumnConstraintsDao(this)); -}; - -GeoPackage.prototype.getMetadataReferenceDao = function () { - return this.metadataReferenceDao || (this.metadataReferenceDao = new MetadataReferenceDao(this)); -}; - -GeoPackage.prototype.getMetadataDao = function () { - return this.metadataDao || (this.metadataDao = new MetadataDao(this)); -}; - -GeoPackage.prototype.getExtendedRelationDao = function() { - return this.extendedRelationDao || (this.extendedRelationDao = new ExtendedRelationDao(this)); -} - -GeoPackage.prototype.getContentsIdDao = function() { - return this.contentsIdDao || (this.contentsIdDao = new ContentsIdDao(this)); -} - -GeoPackage.prototype.getContentsIdExtension = function() { - return this.contentsIdExtension || (this.contentsIdExtension = new ContentsIdExtension(this)); -} - -GeoPackage.prototype.getFeatureStyleExtension = function() { - return this.featureStyleExtension || (this.featureStyleExtension = new FeatureStyleExtension(this)); -} - -GeoPackage.prototype.getGeometryIndexDao = function(featureDao) { - return new GeometryIndexDao(this, featureDao); -} - -GeoPackage.prototype.getRelatedTablesExtension = function() { - return this.relatedTablesExtension || (this.relatedTablesExtension = new RelatedTablesExtension(this)); -} - -GeoPackage.prototype.getSrs = function(srsId) { - var dao = this.getSpatialReferenceSystemDao(); - return dao.queryForId(srsId); -} - -GeoPackage.prototype.createRequiredTables = function() { - var geopackage = this; - return this.tableCreator.createRequired() - .then(function(results) { - return geopackage; - }); -} - -GeoPackage.prototype.createSupportedExtensions = function() { - var crs = new CrsWktExtension(this); - crs.getOrCreateExtension(); - var schema = new SchemaExtension(this); - schema.getOrCreateExtension(); - return this; -} - -/** - * @returns {module:tiles/user/tileDao~TileDao} the `TileDao` to access [tiles]{@link module:tiles/user/tileTable} - */ -GeoPackage.prototype.getTileDaoWithTileMatrixSet = function (tileMatrixSet) { - var tileMatrices = []; - var tileMatrixDao = this.getTileMatrixDao(); - var results = tileMatrixDao.queryForAllEq(TileMatrixDao.COLUMN_TABLE_NAME, tileMatrixSet.table_name, null, null, TileMatrixDao.COLUMN_ZOOM_LEVEL + ' ASC, ' + TileMatrixDao.COLUMN_PIXEL_X_SIZE + ' DESC, ' + TileMatrixDao.COLUMN_PIXEL_Y_SIZE + ' DESC'); - results.forEach(function(result) { - var tm = new TileMatrix(); - tileMatrixDao.populateObjectFromResult(tm, result); - tileMatrices.push(tm); - }); - var tableReader = new TileTableReader(tileMatrixSet); - var tileTable = tableReader.readTileTable(this); - return new TileDao(this, tileTable, tileMatrixSet, tileMatrices); -}; - -GeoPackage.prototype.getTileDaoWithContents = function (contents) { - var dao = this.getContentsDao(); - var tileMatrixSet = dao.getTileMatrixSet(contents); - return this.getTileDaoWithTileMatrixSet(tileMatrixSet); -}; - -GeoPackage.prototype.getTileDao = function (tableName) { - var tms = this.getTileMatrixSetDao(); - var results = tms.queryForAllEq(TileMatrixSetDao.COLUMN_TABLE_NAME, tableName); - if (results.length > 1) { - throw new Error('Unexpected state. More than one Tile Matrix Set matched for table name: ' + tableName + ', count: ' + results.length); - } else if (results.length === 0) { - throw new Error('No Tile Matrix found for table name: ' + tableName); - } - var tileMatrixSet = new TileMatrixSet(); - tms.populateObjectFromResult(tileMatrixSet, results[0]); - return this.getTileDaoWithTileMatrixSet(tileMatrixSet); -}; - -/** - * Return a hash containing arrays of table names grouped under keys `features`, - * `tiles`, and `attributes`. - * @return {{features: string[], tiles: string[], attributes: string[]}} - */ -GeoPackage.prototype.getTables = function() { - var tables = {}; - var featureTables = this.getFeatureTables(); - tables.features = featureTables; - var tileTables = this.getTileTables(); - tables.tiles = tileTables; - var attributesTables = this.getAttributesTables(); - tables.attributes = attributesTables; - return tables; -}; - -GeoPackage.prototype.getAttributesTables = function() { - return this.getContentsDao().getTables(ContentsDao.GPKG_CDT_ATTRIBUTES_NAME); -} - -GeoPackage.prototype.hasAttributeTable = function(attributeTableName) { - var tables = this.getAttributesTables(); - return tables && tables.indexOf(attributeTableName) != -1; -} - -/** - * Get the tile tables - * @param {callback} callback called with an error if one occurred and the array of {TileTable} names - */ -GeoPackage.prototype.getTileTables = function () { - var tms = this.getTileMatrixSetDao(); - if (!tms.isTableExists()) { - return []; - } - return tms.getTileTables(); -}; - -/** - * Checks if the tile table exists in the GeoPackage - * @param {String} tileTableName name of the table to query for - * @param {Function} callback called with an error if one occurred and true or false for the existence of the table - */ -GeoPackage.prototype.hasTileTable = function(tileTableName) { - var tables = this.getTileTables(); - return tables && tables.indexOf(tileTableName) != -1; -}; - -/** - * Checks if the feature table exists in the GeoPackage - * @param {GeoPackage} geopackage open GeoPackage object - * @param {String} featureTableName name of the table to query for - * @param {Function} callback called with an error if one occurred and true or false for the existence of the table - */ -GeoPackage.prototype.hasFeatureTable = function(featureTableName) { - var tables = this.getFeatureTables(); - return tables && tables.indexOf(featureTableName) != -1; -}; - -/** - * Get the feature tables - * @param {callback} callback called with an error if one occurred and the array of {FeatureTable} names - */ -GeoPackage.prototype.getFeatureTables = function () { - var gcd = this.getGeometryColumnsDao(); - if (!gcd.isTableExists()) { - return []; - } - return gcd.getFeatureTables(); -}; - -GeoPackage.prototype.isTable = function(tableName) { - return !!this.connection.tableExists(tableName); -} - -GeoPackage.prototype.isTableType = function(type, tableName) { - return type === this.getTableType(tableName); -} - -GeoPackage.prototype.getTableType = function(tableName) { - var contents = this.getTableContents(tableName); - if (contents) { - return contents.data_type; - } -} - -GeoPackage.prototype.getTableContents = function(tableName) { - return this.getContentsDao().queryForId(tableName); -} - -GeoPackage.prototype.deleteTable = function(tableName) { - this.connection.dropTable(tableName); -} - -GeoPackage.prototype.getTableCreator = function() { - return this.tableCreator; -} - -GeoPackage.prototype.index = function() { - var tables = this.getFeatureTables(); - - return tables.reduce(function(sequence, table) { - return sequence.then(function() { - return this.indexFeatureTable(table) - .then(function(indexed) { - if (indexed) { - return true; - } else { - throw new Error('Unable to index table ' + table); - } - }); - }.bind(this)) - }.bind(this), Promise.resolve()); -} - -GeoPackage.prototype.indexFeatureTable = function(table, progress) { - var featureDao = this.getFeatureDao(table); - var fti = featureDao.featureTableIndex; - return new Promise(function(resolve, reject) { - var tableIndex = fti.getTableIndex(); - if (tableIndex) { - return resolve(true); - } - resolve(fti.index(progress)); - }); -} - -/** - * Get a Feature DAO from Geometry Columns - * - * @param {GeometryColumns} geometryColumns Geometry Columns - * @param {callback} callback called with an error if one occurred and the {FeatureDao} - */ -GeoPackage.prototype.getFeatureDaoWithGeometryColumns = function (geometryColumns) { - if (!geometryColumns) { - throw new Error('Non null Geometry Columns is required to create Feature DAO'); - } - - var tableReader = new FeatureTableReader(geometryColumns); - var featureTable = tableReader.readFeatureTable(this); - var dao = new FeatureDao(this, featureTable, geometryColumns, this.metadataDb); - return dao; -}; - -/** - * Get a Feature DAO from Contents - * @param {Contents} contents Contents - * @param {Function} callback callback called with an error if one occurred and the {FeatureDao} - */ -GeoPackage.prototype.getFeatureDaoWithContents = function (contents) { - var dao = this.getContentsDao(); - var columns = dao.getGeometryColumns(contents); - return this.getFeatureDaoWithGeometryColumns(columns); -}; - -/** - * Get a Feature DAO from Contents - * @param {string} tableName table name - * @param {Function} callback callback called with an error if one occurred and the {FeatureDao} - */ -GeoPackage.prototype.getFeatureDao = function (tableName) { - var dao = this.getGeometryColumnsDao(); - var geometryColumns = dao.queryForTableName(tableName); - if (!geometryColumns) { - throw new Error('No Feature Table exists for table name: ' + tableName); - } - return this.getFeatureDaoWithGeometryColumns(geometryColumns); -}; - -/** - * Queries for GeoJSON features in a feature table - * @param {String} tableName Table name to query - * @param {BoundingBox} boundingBox BoundingBox to query - * @param {Function} callback Caled with err, featureArray - */ -GeoPackage.prototype.queryForGeoJSONFeaturesInTable = function(tableName, boundingBox) { - var featureDao = this.getFeatureDao(tableName); - var features = []; - var iterator = featureDao.queryForGeoJSONIndexedFeaturesWithBoundingBox(boundingBox); - for (var feature of iterator) { - features.push(feature); - } - return features; -} - -/** - * iterates GeoJSON features in a feature table within a bounding box - * @param {String} tableName Table name to query - * @param {BoundingBox} boundingBox BoundingBox to query - * @param {Function} rowCallback Caled with err, geoJSON - * @param {Function} doneCallback Caled with err if one occurred - */ -GeoPackage.prototype.iterateGeoJSONFeaturesInTableWithinBoundingBox = function(tableName, boundingBox) { - var featureDao = this.getFeatureDao(tableName); - return featureDao.queryForGeoJSONIndexedFeaturesWithBoundingBox(boundingBox); -} - -/** - * Create the Geometry Columns table if it does not already exist - * @param {Function} callback called with an error if one occurred otherwise the table now exists - */ -GeoPackage.prototype.createGeometryColumnsTable = function () { - var dao = this.getGeometryColumnsDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createGeometryColumns(); -}; - -/** - * Get a Attribute DAO - * @param {string} tableName table name - * @param {Function} callback callback called with an error if one occurred and the {AttributeDao} - */ -GeoPackage.prototype.getAttributeDaoWithTableName = function (tableName) { - var dao = this.getContentsDao(); - var contents = dao.queryForId(tableName); - return this.getAttributeDaoWithContents(contents); -}; - -/** - * Get a Attribute DAO - * @param {Contents} contents Contents - * @param {Function} callback callback called with an error if one occurred and the {AttributeDao} - */ -GeoPackage.prototype.getAttributeDaoWithContents = function (contents) { - if (!contents) { - throw new Error('Non null Contents is required to create an Attributes DAO'); - } - - var reader = new AttributeTableReader(contents.table_name); - var table = reader.readTable(this.connection); - table.setContents(contents); - return new AttributeDao(this, table); -} - -GeoPackage.prototype.createAttributeTable = function(tableName, columns, dataColumns) { - return Promise.resolve() - .then(function() { - var attributeTable = new AttributeTable(tableName, columns); - var result = this.tableCreator.createUserTable(attributeTable); - var contents = new Contents(); - contents.table_name = tableName; - contents.data_type = ContentsDao.GPKG_CDT_ATTRIBUTES_NAME; - contents.identifier = tableName; - contents.last_change = new Date().toISOString(); - - return this.getContentsDao().create(contents); - }.bind(this)) - .then(function() { - if (dataColumns) { - return this.createDataColumns() - .then(function() { - var dataColumnsDao = this.getDataColumnsDao(); - dataColumns.forEach(function(dataColumn) { - dataColumnsDao.create(dataColumn); - }); - }.bind(this)); - } - }.bind(this)) - .then(function() { - return true; - }); -} - -/** - * Create the given {@link module:features/user/featureTable~FeatureTable} - * @param {FeatureTable} featureTable feature table - */ -GeoPackage.prototype.createFeatureTable = function(featureTable) { - return this.tableCreator.createUserTable(featureTable); -}; - -GeoPackage.prototype.createFeatureTableWithGeometryColumns = function(geometryColumns, boundingBox, srsId, columns) { - return this.createFeatureTableWithGeometryColumnsAndDataColumns(geometryColumns, boundingBox, srsId, columns, undefined); -}; - -GeoPackage.prototype.createFeatureTableWithGeometryColumnsAndDataColumns = function(geometryColumns, boundingBox, srsId, columns, dataColumns) { - return this.createGeometryColumnsTable() - .then(function(result) { - var featureTable = new FeatureTable(geometryColumns.table_name, columns); - var result = this.createFeatureTable(featureTable); - var contents = new Contents(); - contents.table_name = geometryColumns.table_name; - contents.data_type = ContentsDao.GPKG_CDT_FEATURES_NAME; - contents.identifier = geometryColumns.table_name; - contents.last_change = new Date().toISOString(); - contents.min_x = boundingBox.minLongitude; - contents.min_y = boundingBox.minLatitude; - contents.max_x = boundingBox.maxLongitude; - contents.max_y = boundingBox.maxLatitude; - contents.srs_id = srsId; - - this.getContentsDao().create(contents); - geometryColumns.srs_id = srsId; - return this.getGeometryColumnsDao().create(geometryColumns); - }.bind(this)) - .then(function() { - if (dataColumns) { - return this.createDataColumns() - .then(function() { - var dataColumnsDao = this.getDataColumnsDao(); - dataColumns.forEach(function(dataColumn) { - dataColumnsDao.create(dataColumn); - }); - }.bind(this)); - } - }.bind(this)) - .then(function() { - return true; - }); -}; - -/** - * Create the Tile Matrix Set table if it does not already exist - * @param {Function} callback called with an error if one occurred otherwise the table now exists - */ -GeoPackage.prototype.createTileMatrixSetTable = function() { - var dao = this.getTileMatrixSetDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createTileMatrixSet(); -} - -/** - * Create the Tile Matrix table if it does not already exist - * @param {Function} callback called with an error if one occurred otherwise the table now exists - */ -GeoPackage.prototype.createTileMatrixTable = function() { - var dao = this.getTileMatrixDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createTileMatrix(); -}; - -/** - * Create the given tile table in this GeoPackage. - * - * @param {module:tiles/user/tileTable~TileTable} tileTable - * @returns {@link module:db/tableCreator~TableCreator#createUserTable} - */ -GeoPackage.prototype.createTileTable = function(tileTable) { - return this.tableCreator.createUserTable(tileTable); -}; - -/** - * Create a new [tile table]{@link module:tiles/user/tileTable~TileTable} in this GeoPackage. - * - * @param {String} tableName tile table name - * @param {BoundingBox} contentsBoundingBox bounding box of the contents table - * @param {Number} contentsSrsId srs id of the contents table - * @param {BoundingBox} tileMatrixSetBoundingBox bounding box of the matrix set - * @param {Number} tileMatrixSetSrsId srs id of the matrix set - * @returns {Promise} `Promise` of the created {@link module:tiles/matrixset~TileMatrixSet} - */ -GeoPackage.prototype.createTileTableWithTableName = function(tableName, contentsBoundingBox, contentsSrsId, tileMatrixSetBoundingBox, tileMatrixSetSrsId) { - const columns = TileTable.createRequiredColumns(); - const tileTable = new TileTable(tableName, columns); - const contents = new Contents(); - contents.table_name = tableName; - contents.data_type = ContentsDao.GPKG_CDT_TILES_NAME; - contents.identifier = tableName; - contents.last_change = new Date().toISOString(); - contents.min_x = contentsBoundingBox.minLongitude; - contents.min_y = contentsBoundingBox.minLatitude; - contents.max_x = contentsBoundingBox.maxLongitude; - contents.max_y = contentsBoundingBox.maxLatitude; - contents.srs_id = contentsSrsId; - - const tileMatrixSet = new TileMatrixSet(); - tileMatrixSet.setContents(contents); - tileMatrixSet.srs_id = tileMatrixSetSrsId; - tileMatrixSet.min_x = tileMatrixSetBoundingBox.minLongitude; - tileMatrixSet.min_y = tileMatrixSetBoundingBox.minLatitude; - tileMatrixSet.max_x = tileMatrixSetBoundingBox.maxLongitude; - tileMatrixSet.max_y = tileMatrixSetBoundingBox.maxLatitude; - - return this.createTileMatrixSetTable() - .then(function() { - return this.createTileMatrixTable(); - }.bind(this)) - .then(function() { - return this.createTileTable(tileTable); - }.bind(this)) - .then(function() { - return this.getContentsDao().create(contents); - }.bind(this)) - .then(function() { - return this.getTileMatrixSetDao().create(tileMatrixSet); - }.bind(this)) - .then(function() { - return tileMatrixSet; - }); -}; - -/** - * Create the tables and rows necessary to store tiles in a {@link module:tiles/matrixset~TileMatrixSet}. - * This will create a [tile matrix row]{@link module:tiles/matrix~TileMatrix} - * for every integral zoom level in the range `[minZoom..maxZoom]`. - * - * @param {BoundingBox} epsg3857TileBoundingBox - * @param {module:tiles/matrixset~TileMatrixSet} tileMatrixSet - * @param {number} minZoom - * @param {number} maxZoom - * @param {number} [tileSize=256] optional tile size in pixels - * @returns {module:geoPackage~GeoPackage} `this` `GeoPackage` - */ -GeoPackage.prototype.createStandardWebMercatorTileMatrix = function(epsg3857TileBoundingBox, tileMatrixSet, minZoom, maxZoom, tileSize) { - tileSize = tileSize || 256; - var tileMatrixDao = this.getTileMatrixDao(); - - for (var zoom = minZoom; zoom <= maxZoom; zoom++) { - var box = TileBoundingBoxUtils.webMercatorTileBox(epsg3857TileBoundingBox, zoom); - var matrixWidth = (box.maxX - box.minX) + 1; - var matrixHeight = (box.maxY - box.minY) + 1; - - var pixelXSize = ((epsg3857TileBoundingBox.maxLongitude - epsg3857TileBoundingBox.minLongitude) / matrixWidth) / tileSize; - var pixelYSize = ((epsg3857TileBoundingBox.maxLatitude - epsg3857TileBoundingBox.minLatitude) / matrixHeight) / tileSize; - - var tileMatrix = new TileMatrix(); - tileMatrix.table_name = tileMatrixSet.table_name; - tileMatrix.zoom_level = zoom; - tileMatrix.matrix_width = matrixWidth; - tileMatrix.matrix_height = matrixHeight; - tileMatrix.tile_width = tileSize; - tileMatrix.tile_height = tileSize; - tileMatrix.pixel_x_size = pixelXSize; - tileMatrix.pixel_y_size = pixelYSize; - tileMatrixDao.create(tileMatrix); - } - - return this; -}; - -/** - * Adds a tile to the GeoPackage - * @param {object} tile Byte array or Buffer containing the tile bytes - * @param {String} tableName Table name to add the tile to - * @param {Number} zoom zoom level of this tile - * @param {Number} tileRow row of this tile - * @param {Number} tileColumn column of this tile - */ -GeoPackage.prototype.addTile = function(tileStream, tableName, zoom, tileRow, tileColumn) { - var tileDao = this.getTileDao(tableName); - var newRow = tileDao.newRow(); - newRow.setZoomLevel(zoom); - newRow.setTileColumn(tileColumn); - newRow.setTileRow(tileRow); - newRow.setTileData(tileStream); - return tileDao.create(newRow); -}; - -/** - * Create the Data Columns table if it does not already exist - * @param {Function} callback called with an error if one occurred otherwise the table now exists - */ -GeoPackage.prototype.createDataColumns = function() { - var dao = this.getDataColumnsDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createDataColumns(); -}; - -/** - * Create the Data Column Constraints table if it does not already exist - * @param {Function} callback called with an error if one occurred otherwise the table now exists - */ -GeoPackage.prototype.createDataColumnConstraintsTable = function () { - var dao = this.getDataColumnConstraintsDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createDataColumnConstraints(); -}; - -GeoPackage.prototype.createMetadataTable = function () { - var dao = this.getMetadataDao() - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createMetadata(); -}; - -GeoPackage.prototype.createMetadataReferenceTable = function () { - var dao = this.getMetadataReferenceDao() - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createMetadataReference(); -}; - -GeoPackage.prototype.createExtensionTable = function () { - var dao = this.getExtensionDao() - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createExtensions(); -}; - -GeoPackage.prototype.createTableIndexTable = function () { - var dao = this.getTableIndexDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createTableIndex(); -}; - -GeoPackage.prototype.createGeometryIndexTable = function() { - var dao = this.getGeometryIndexDao(); - if (dao.isTableExists()) { - return Promise.resolve().then(function() { return true; }); - } - return this.tableCreator.createGeometryIndex(); -}; - -GeoPackage.prototype.createStyleMappingTable = function(tableName, columns, dataColumns) { - return Promise.resolve() - .then(function() { - var attributeTable = new StyleMappingTable(tableName, columns); - var result = this.tableCreator.createUserTable(attributeTable); - var contents = new Contents(); - contents.table_name = tableName; - contents.data_type = ContentsDao.GPKG_CDT_ATTRIBUTES_NAME; - contents.identifier = tableName; - contents.last_change = new Date().toISOString(); - - return this.getContentsDao().create(contents); - }.bind(this)) - .then(function() { - if (dataColumns) { - return this.createDataColumns() - .then(function() { - var dataColumnsDao = this.getDataColumnsDao(); - dataColumns.forEach(function(dataColumn) { - dataColumnsDao.create(dataColumn); - }); - }.bind(this)); - } - }.bind(this)) - .then(function() { - return true; - }); -} - -/** - * Get the application id of the GeoPackage - * @param {Function} callback callback called with the application id - */ -GeoPackage.prototype.getApplicationId = function() { - var connection = this.getDatabase(); - return connection.getApplicationId(); -} - -GeoPackage.prototype.getInfoForTable = function (tableDao) { - var info = {}; - info.tableName = tableDao.table_name; - info.tableType = tableDao.table.getTableType(); - info.count = tableDao.getCount(); - if (info.tableType === UserTable.FEATURE_TABLE) { - info.geometryColumns = {}; - info.geometryColumns.tableName = tableDao.geometryColumns.table_name; - info.geometryColumns.geometryColumn = tableDao.geometryColumns.column_name; - info.geometryColumns.geometryTypeName = tableDao.geometryColumns.geometry_type_name; - info.geometryColumns.z = tableDao.geometryColumns.z; - info.geometryColumns.m = tableDao.geometryColumns.m; - } - if (info.tableType === UserTable.TILE_TABLE) { - info.minZoom = tableDao.minZoom; - info.maxZoom = tableDao.maxZoom; - info.minWebMapZoom = tableDao.minWebMapZoom; - info.maxWebMapZoom = tableDao.maxWebMapZoom; - info.zoomLevels = tableDao.tileMatrices.length; - } - - var dao; - var contentsRetriever; - if (info.tableType === UserTable.FEATURE_TABLE) { - dao = this.getGeometryColumnsDao(); - contentsRetriever = tableDao.geometryColumns; - } else if (info.tableType === UserTable.TILE_TABLE) { - dao = this.getTileMatrixSetDao(); - contentsRetriever = tableDao.tileMatrixSet; - info.tileMatrixSet = {}; - info.tileMatrixSet.srsId = tableDao.tileMatrixSet.srs_id; - info.tileMatrixSet.minX = tableDao.tileMatrixSet.min_x; - info.tileMatrixSet.maxX = tableDao.tileMatrixSet.max_x; - info.tileMatrixSet.minY = tableDao.tileMatrixSet.min_y; - info.tileMatrixSet.maxY = tableDao.tileMatrixSet.max_y; - } - var contents = dao.getContents(contentsRetriever); - info.contents = {}; - info.contents.tableName = contents.table_name; - info.contents.dataType = contents.data_type; - info.contents.identifier = contents.identifier; - info.contents.description = contents.description; - info.contents.lastChange = contents.last_change; - info.contents.minX = contents.min_x; - info.contents.maxX = contents.max_x; - info.contents.minY = contents.min_y; - info.contents.maxY = contents.max_y; - var contentsDao = this.getContentsDao(); - var contentsSrs = contentsDao.getSrs(contents); - info.contents.srs = { - name:contentsSrs.srs_name, - id:contentsSrs.srs_id, - organization:contentsSrs.organization, - organization_coordsys_id:contentsSrs.organization_coordsys_id, - definition:contentsSrs.definition, - description:contentsSrs.description - }; - var srs = tableDao.getSrs(); - - info.srs = { - name:srs.srs_name, - id:srs.srs_id, - organization:srs.organization, - organization_coordsys_id:srs.organization_coordsys_id, - definition:srs.definition, - description:srs.description - }; - info.columns = []; - info.columnMap = {}; - - var dcd = this.getDataColumnsDao(); - - tableDao.table.columns.forEach(function(column) { - var dataColumn = dcd.getDataColumns(tableDao.table.table_name, column.name); - info.columns.push({ - index: column.index, - name: column.name, - max: column.max, - min: column.min, - notNull: column.notNull, - primaryKey: column.primaryKey, - dataType: column.dataType ? DataTypes.name(column.dataType) : '', - displayName: dataColumn && dataColumn.name ? dataColumn.name : column.name, - dataColumn: dataColumn - }); - info.columnMap[column.name] = info.columns[info.columns.length-1]; - }.bind(this)); - - return info; -}; - -},{"./attributes/attributeDao":3,"./attributes/attributeTable":5,"./attributes/attributeTableReader":6,"./core/contents":8,"./core/srs":9,"./dataColumnConstraints":12,"./dataColumns":13,"./db/dataTypes":14,"./db/tableCreator":19,"./extension":25,"./extension/contents/.":23,"./extension/contents/contentsIdDao":22,"./extension/crsWkt":24,"./extension/index/geometryIndex":27,"./extension/index/tableIndex":28,"./extension/relatedTables":32,"./extension/relatedTables/extendedRelation":31,"./extension/schema":45,"./extension/style/.":54,"./features/columns":64,"./features/user/featureDao":66,"./features/user/featureTable":68,"./features/user/featureTableReader":69,"./metadata":74,"./metadata/reference":75,"./proj4Defs":77,"./tiles/matrix":90,"./tiles/matrixset":91,"./tiles/tileBoundingBoxUtils":93,"./tiles/user/tileDao":96,"./tiles/user/tileTable":99,"./tiles/user/tileTableReader":100,"./user/userTable":108,"proj4":285}],71:[function(require,module,exports){ -/** - * GeoPackage Constants module. - * @module dao/geoPackageConstants - */ - -/** @constant {string} GEOPACKAGE_EXTENSION Extension to GeoPackage files */ -exports.GEOPACKAGE_EXTENSION = 'gpkg'; -/** @constant {string} GEOPACKAGE_EXTENDED_EXTENSION Extension to GeoPackage extension files */ -exports.GEOPACKAGE_EXTENDED_EXTENSION = 'gpkx'; -/** @constant {string} APPLICATION_ID GeoPackage application id */ -exports.APPLICATION_ID = 'GPKG'; -/** @constant {string} USER_VERSION GeoPackage user version */ -exports.USER_VERSION = '10200'; -/** @constant {string} GEOPACKAGE_EXTENSION_AUTHOR GeoPackage author */ -exports.GEOPACKAGE_EXTENSION_AUTHOR = exports.GEOPACKAGE_EXTENSION; -/** @constant {string} GEOMETRY_EXTENSION_PREFIX Geometry extension prefix */ -exports.GEOMETRY_EXTENSION_PREFIX = 'geom'; -/** @constant {string} GEOPACKAGE_GEOMETRY_MAGIX_NUMBER Expected magic number */ -exports.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER = 'GP'; -/** @constant {string} GEOPACKAGE_GEOMETRY_VERSION_1 Expected version 1 value */ -exports.GEOPACKAGE_GEOMETRY_VERSION_1 = 0; -/** @constant {string} SQLITE_HEADER_PREFIX SQLite header string prefix */ -exports.SQLITE_HEADER_PREFIX = 'SQLite format 3'; - -},{}],72:[function(require,module,exports){ -var wkx = require('wkx'); -var turfBbox = require('@turf/bbox'); - -module.exports.buildEnvelopeWithGeometry = function(wkbGeometry) { - var geoJson = wkbGeometry.toGeoJSON(); - var bbox = turfBbox(geoJson); - return { - minX: bbox[0], - minY: bbox[1], - maxX: bbox[2], - maxY: bbox[3] - }; -} - -module.exports.expandEnvelopeForGeometry = function(envelope, wkbGeometry) { - -} - -},{"@turf/bbox":117,"wkx":360}],73:[function(require,module,exports){ -(function (Buffer){ -/** - * GeometryData module. - * @module geom/geometryData - */ - -var GeoPackageConstants = require('../geoPackageConstants'); - -var wkx = require('wkx'); - -var BIG_ENDIAN = 0; -var LITTLE_ENDIAN = 1; - -/** - * GeoPackage Geometry Data - */ -var GeometryData = function(buffer) { - this.empty = true; - this.byteOrder = BIG_ENDIAN; - if (buffer) { - this.fromData(buffer); - } -} - -module.exports = GeometryData; - -GeometryData.prototype.setSrsId = function(srsId) { - this.srsId = srsId; -} - -GeometryData.prototype.setGeometry = function(wkbGeometry) { - this.empty = false; - this.geometry = wkbGeometry; -} - -GeometryData.prototype.setEnvelope = function(envelope) { - this.envelope = envelope; -} - -GeometryData.prototype.toGeoJSON = function() { - return this.geometry.toGeoJSON(); -} - -GeometryData.prototype.fromData = function (buffer) { - this.buffer = buffer; - if (buffer instanceof Uint8Array) { - this.buffer = buffer = Buffer.from(buffer); - } - var magicString = buffer.toString('ascii', 0, 2); - if (magicString !== GeoPackageConstants.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER) { - throw new Error('Unexpected GeoPackage Geometry magic number: ' + magicString + ', Expected: ' + GeoPackageConstants.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER); - } - - var version = buffer.readUInt8(2); - if (version !== GeoPackageConstants.GEOPACKAGE_GEOMETRY_VERSION_1) { - throw new Error('Unexpected GeoPackage Geometry version ' + version + ', Expected: ' + GeoPackageConstants.GEOPACKAGE_GEOMETRY_VERSION_1); - } - - var flags = buffer.readUInt8(3); - var envelopeIndicator = this.readFlags(flags); - - this.srsId = buffer[this.byteOrder ? 'readUInt32LE' : 'readUInt32BE'](4); - var envelopeAndOffset = this.readEnvelope(envelopeIndicator, buffer); - this.envelope = envelopeAndOffset.envelope; - - var offset = envelopeAndOffset.offset; - - var wkbBuffer = buffer.slice(offset); - try { - this.geometry = wkx.Geometry.parse(wkbBuffer); - this.geometryError = undefined; - } catch (error) { - this.geometryError = error.message; - console.log('Error parsing geometry'); - } -}; - -GeometryData.prototype.toData = function() { - var header = Buffer.alloc(8); - - // Write GP as the 2 byte magic number - header.write(GeoPackageConstants.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER); - - // Write a byte as the version value of 0 = version 1 - header.writeUInt8(GeoPackageConstants.GEOPACKAGE_GEOMETRY_VERSION_1, 2); - - // Build and write a flags byte - var flags = this.buildFlagsByte(); - header.writeUInt8(flags, 3); - - // write the 4 byte srs id - header[this.byteOrder ? 'writeUInt32LE' : 'writeUInt32BE'](this.srsId, 4); - - var envelopeBuffer = this.writeEnvelope(this.envelope); - var concatArray = [header, envelopeBuffer]; - try { - concatArray.push(this.geometry.toWkb()); - this.geometryError = undefined; - } catch (error) { - this.geometryError = error.message; - } - - this.buffer = Buffer.concat(concatArray); - return this.buffer; -}; - -GeometryData.prototype.writeEnvelope = function() { - if (!this.envelope) return Buffer.alloc(0); - - var writeDoubleMethod = 'writeDouble' + (this.byteOrder ? 'LE' : 'BE'); - - var length = 32; - if (this.envelope.hasZ) { - length += 16; - } - if (this.envelope.hasM) { - length += 16; - } - var envelopeBuffer = Buffer.alloc(length); - envelopeBuffer[writeDoubleMethod](this.envelope.minX, 0); - envelopeBuffer[writeDoubleMethod](this.envelope.maxX, 8); - envelopeBuffer[writeDoubleMethod](this.envelope.minY, 16); - envelopeBuffer[writeDoubleMethod](this.envelope.maxY, 24); - - var position = 32; - if (this.envelope.hasZ) { - envelopeBuffer[writeDoubleMethod](this.envelope.minZ, position); - envelopeBuffer[writeDoubleMethod](this.envelope.maxZ, position+8); - position = 48; - } - if (this.envelope.hasM) { - envelopeBuffer[writeDoubleMethod](this.envelope.minM, position); - envelopeBuffer[writeDoubleMethod](this.envelope.maxM, position+8); - } - - return envelopeBuffer; -}; - -GeometryData.prototype.buildFlagsByte = function() { - var flag = 0; - - // Add the binary type to bit 5, 0 for standard and 1 for extended - var binaryType = this.extended ? 1 : 0; - flag += (binaryType << 5); - - // Add the empty geometry flag to bit 4, 0 for non-empty and 1 for empty - var emptyValue = this.empty ? 1 : 0; - flag += (emptyValue << 4); - - // Add the envelope contents indicator code (3-bit unsigned integer to bits 3, 2, and 1) - var envelopeIndicator = !this.envelope ? 0 : this.getIndicatorWithEnvelope(this.envelope); - flag += (envelopeIndicator << 1); - - // Add the byte order to bit 0, 0 for Big Endian and 1 for Little Endian - var byteOrderValue = (this.byteOrder === BIG_ENDIAN) ? 0 : 1; - flag += byteOrderValue; - - return flag; -}; - -GeometryData.prototype.getIndicatorWithEnvelope = function(envelope) { - var indicator = 1; - if (envelope.hasZ) { - indicator++; - } - if (envelope.hasM) { - indicator += 2; - } - return indicator; -}; - -GeometryData.prototype.readFlags = function (flagsInt) { - // Verify the reserved bits at 7 and 6 are 0 - var reserved7 = (flagsInt >> 7) & 1; - var reserved6 = (flagsInt >> 6) & 1; - if (reserved7 !== 0 || reserved6 !== 0) { - throw new Error('Unexpected GeoPackage Geometry flags. Flag bit 7 and 6 should both be 0, 7='+reserved7+', 6='+ reserved6); - } - - // Get the binary type from bit 5, 0 for standard and 1 for extended - var binaryType = (flagsInt >> 5) & 1; - this.extended = binaryType == 1; - - // Get the empty geometry flag from bit 4, 0 for non-empty and 1 for - // empty - var emptyValue = (flagsInt >> 4) & 1; - this.empty = emptyValue == 1; - - // Get the envelope contents indicator code (3-bit unsigned integer from - // bits 3, 2, and 1) - var envelopeIndicator = (flagsInt >> 1) & 7; - if (envelopeIndicator > 4) { - throw new Error('Unexpected GeoPackage Geometry flags. Envelope contents indicator must be between 0 and 4. Actual: ' + envelopeIndicator); - } - - // Get the byte order from bit 0, 0 for Big Endian and 1 for Little Endian - var byteOrderValue = flagsInt & 1; - this.byteOrder = byteOrderValue; - return envelopeIndicator; -}; - -GeometryData.prototype.readEnvelope = function (envelopeIndicator, buffer) { - var readDoubleMethod = 'readDouble' + (this.byteOrder ? 'LE' : 'BE'); - - var envelopeByteOffset = 8; - reads = 0; - var envelopeAndOffset = { - envelope: undefined, - offset: envelopeByteOffset - }; - - if (envelopeIndicator <= 0) { - return envelopeAndOffset; - } - var envelope = {}; - // Read x and y values and create envelope - envelope.minX = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - envelope.maxX = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - envelope.minY = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - envelope.maxY = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - - envelope.hasZ = false; - var minZ = undefined; - var maxZ = undefined; - - envelope.hasM = false; - var minM = undefined; - var maxM = undefined; - - // Read z values - if (envelopeIndicator === 2 || envelopeIndicator === 4) { - envelope.hasZ = true; - envelope.minZ = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - envelope.maxZ = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - } - - // Read m values - if (envelopeIndicator === 3 || envelopeIndicator === 4) { - envelope.hasM = true; - envelope.minM = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - envelope.maxM = buffer[readDoubleMethod](envelopeByteOffset + (8 * reads++)); - } - envelopeAndOffset.envelope = envelope; - envelopeAndOffset.offset = envelopeByteOffset + (8 * reads); - return envelopeAndOffset; -}; - -}).call(this,require("buffer").Buffer) -},{"../geoPackageConstants":71,"buffer":182,"wkx":360}],74:[function(require,module,exports){ -/** - * Metadata module. - * @module metadata - * @see module:dao/dao - */ - -var Dao = require('../dao/dao'); - -var util = require('util'); - -/** - * Contains metadata in MIME encodings structured in accordance with any - * authoritative metadata specification - * @class Metadata - */ -var Metadata = function() { - - /** - * Metadata primary key - * @member {Number} - */ - this.id; - - /** - * Case sensitive name of the data scope to which this metadata applies; see Metadata Scopes below - * @member {string} - */ - this.md_scope; - - /** - * URI reference to the metadata structure definition authority - * @member {string} - */ - this.md_standard_uri; - - /** - * MIME encoding of metadata - * @member {string} - */ - this.mime_type; - - /** - * metadata - * @member {string} - */ - this.metadata; -} - -Metadata.UNDEFINED = "undefined"; -Metadata.FIELD_SESSION = "fieldSession"; -Metadata.COLLECTION_SESSION = "collectionSession"; -Metadata.SERIES = "series"; -Metadata.DATASET = "dataset"; -Metadata.FEATURE_TYPE = "featureType"; -Metadata.FEATURE = "feature"; -Metadata.ATTRIBUTE_TYPE = "attributeType"; -Metadata.ATTRIBUTE = "attribute"; -Metadata.TILE = "tile"; -Metadata.MODEL = "model"; -Metadata.CATALOG = "catalog"; -Metadata.SCHEMA = "schema"; -Metadata.TAXONOMY = "taxonomy"; -Metadata.SOFTWARE = "software"; -Metadata.SERVICE = "service"; -Metadata.COLLECTION_HARDWARE = "collectionHardware"; -Metadata.NON_GEOGRAPHIC_DATASET = "nonGeographicDataset"; -Metadata.DIMENSION_GROUP = "dimensionGroup"; - -Metadata.prototype.getScopeInformation = function(type) { - switch(type) { - case Metadata.UNDEFINED: - return { - name: Metadata.UNDEFINED, - code: 'NA', - definition: 'Metadata information scope is undefined' - }; - case Metadata.FIELD_SESSION: - return { - name: Metadata.FIELD_SESSION, - code: '012', - definition: 'Information applies to the field session' - }; - case Metadata.COLLECTION_SESSION: - return { - name: Metadata.COLLECTION_SESSION, - code: '004', - definition: 'Information applies to the collection session' - }; - case Metadata.SERIES: - return { - name: Metadata.SERIES, - code: '006', - definition: 'Information applies to the (dataset) series' - }; - case Metadata.DATASET: - return { - name: Metadata.DATASET, - code: '005', - definition: 'Information applies to the (geographic feature) dataset' - }; - case Metadata.FEATURE_TYPE: - return { - name: Metadata.FEATURE_TYPE, - code: '010', - definition: 'Information applies to a feature type (class)' - }; - case Metadata.FEATURE: - return { - name: Metadata.FEATURE, - code: '009', - definition: 'Information applies to a feature (instance)' - }; - case Metadata.ATTRIBUTE_TYPE: - return { - name: Metadata.ATTRIBUTE_TYPE, - code: '002', - definition: 'Information applies to the attribute class' - }; - case Metadata.ATTRIBUTE: - return { - name: Metadata.ATTRIBUTE, - code: '001', - definition: 'Information applies to the characteristic of a feature (instance)' - }; - case Metadata.TILE: - return { - name: Metadata.TILE, - code: '016', - definition: 'Information applies to a tile, a spatial subset of geographic data' - }; - case Metadata.MODEL: - return { - name: Metadata.MODEL, - code: '015', - definition: 'Information applies to a copy or imitation of an existing or hypothetical object' - }; - case Metadata.CATALOG: - return { - name: Metadata.CATALOG, - code: 'NA', - definition: 'Metadata applies to a feature catalog' - }; - case Metadata.SCHEMA: - return { - name: Metadata.SCHEMA, - code: 'NA', - definition: 'Metadata applies to an application schema' - }; - case Metadata.TAXONOMY: - return { - name: Metadata.TAXONOMY, - code: 'NA', - definition: 'Metadata applies to a taxonomy or knowledge system' - }; - case Metadata.SOFTWARE: - return { - name: Metadata.SOFTWARE, - code: '013', - definition: 'Information applies to a computer program or routine' - }; - case Metadata.SERVICE: - return { - name: Metadata.SERVICE, - code: '014', - definition: 'Information applies to a capability which a service provider entity makes available to a service user entity through a set of interfaces that define a behaviour, such as a use case' - }; - case Metadata.COLLECTION_HARDWARE: - return { - name: Metadata.COLLECTION_HARDWARE, - code: '003', - definition: 'Information applies to the collection hardware class' - }; - case Metadata.NON_GEOGRAPHIC_DATASET: - return { - name: Metadata.NON_GEOGRAPHIC_DATASET, - code: '007', - definition: 'Information applies to non-geographic data' - }; - case Metadata.DIMENSION_GROUP: - return { - name: Metadata.DIMENSION_GROUP, - code: '008', - definition: 'Information applies to a dimension group' - }; - } -} - -/** - * Metadata Data Access Object - * @class - * @extends {module:dao/dao~Dao} - */ -var MetadataDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(MetadataDao, Dao); - -MetadataDao.prototype.createObject = function() { - return new Metadata(); -}; - -MetadataDao.TABLE_NAME = "gpkg_metadata"; -MetadataDao.COLUMN_ID = "id"; -MetadataDao.COLUMN_MD_SCOPE = "md_scope"; -MetadataDao.COLUMN_MD_STANDARD_URI = "md_standard_uri"; -MetadataDao.COLUMN_MIME_TYPE = "mime_type"; -MetadataDao.COLUMN_METADATA = "metadata"; - -MetadataDao.prototype.gpkgTableName = MetadataDao.TABLE_NAME; -MetadataDao.prototype.idColumns = [MetadataDao.COLUMN_ID]; - -module.exports.MetadataDao = MetadataDao; -module.exports.Metadata = Metadata; - -},{"../dao/dao":11,"util":343}],75:[function(require,module,exports){ -/** - * MetadataReference module. - * @module metadata/reference - * @see module:dao/dao - */ - -var Dao = require('../../dao/dao') - , ColumnValues = require('../../dao/columnValues'); - -var util = require('util'); - -/** - * Links metadata in the gpkg_metadata table to data in the feature, and tiles tables - * @class MetadataReference - */ -var MetadataReference = function() { - - /** - * Lowercase metadata reference scope; one of ‘geopackage’, ‘table’, ‘column’, ’row’, ’row/col’ - * @member {string} - */ - this.reference_scope; - - /** - * Name of the table to which this metadata reference applies, or NULL for reference_scope of ‘geopackage’. - * @member {string} - */ - this.table_name; - - /** - * Name of the column to which this metadata reference applies; NULL for - * reference_scope of ‘geopackage’,‘table’ or ‘row’, or the name of a column - * in the table_name table for reference_scope of ‘column’ or ‘row/col’ - * @member {string} - */ - this.column_name; - - /** - * NULL for reference_scope of ‘geopackage’, ‘table’ or ‘column’, or the - * rowed of a row record in the table_name table for reference_scope of - * ‘row’ or ‘row/col’ - * @member {Number} - */ - this.row_id_value; - - /** - * timestamp value in ISO 8601 format as defined by the strftime function - * '%Y-%m-%dT%H:%M:%fZ' format string applied to the current time - * @member {Date} - */ - this.timestamp; - - /** - * gpkg_metadata table id column value for the metadata to which this - * gpkg_metadata_reference applies - * @member {Number} - */ - this.md_file_id; - - /** - * gpkg_metadata table id column value for the hierarchical parent - * gpkg_metadata for the gpkg_metadata to which this gpkg_metadata_reference - * applies, or NULL if md_file_id forms the root of a metadata hierarchy - * @member {Number} - */ - this.md_parent_id; -} - -MetadataReference.prototype.toDatabaseValue = function(columnName) { - if (columnName === 'timestamp') { - return this.timestamp.toISOString(); - } - return this[columnName]; -} - -/** - * Set the metadata - * @param {Metadata} metadata metadata - */ -MetadataReference.prototype.setMetadata = function(metadata) { - if (metadata) { - this.md_file_id = metadata.id; - } else { - this.md_file_id = -1; - } -} - -/** - * Set the parent metadata - * @param {Metadata} metadata parent metadata - */ -MetadataReference.prototype.setParentMetadata = function(metadata) { - if (metadata) { - this.md_parent_id = metadata.id; - } else { - this.md_parent_id = -1; - } -} - -MetadataReference.prototype.setReferenceScopeType = function(referenceScopeType) { - this.reference_scope = referenceScopeType; - switch(referenceScopeType) { - case MetadataReference.GEOPACKAGE: - this.table_name = undefined; - this.column_name = undefined; - this.row_id_value = undefined; - break; - case MetadataReference.TABLE: - this.column_name = undefined; - this.row_id_value = undefined; - break; - case MetadataReference.ROW: - this.column_name = undefined; - break; - case MetadataReference.COLUMN: - this.row_id_value = undefined; - break; - } -} - -MetadataReference.GEOPACKAGE = "geopackage"; -MetadataReference.TABLE = "table"; -MetadataReference.COLUMN = "column"; -MetadataReference.ROW = "row"; -MetadataReference.ROW_COL = "row/col"; - -/** - * Metadata Reference Data Access Object - * @class - * @extends {module:dao/dao~Dao} - */ -var MetadataReferenceDao = function(geoPackage) { - Dao.call(this, geoPackage); -}; - -util.inherits(MetadataReferenceDao, Dao); - -MetadataReferenceDao.prototype.createObject = function() { - return new MetadataReference(); -}; - -MetadataReferenceDao.prototype.removeMetadataParent = function(parentId) { - var values = {}; - values[MetadataReferenceDao.COLUMN_MD_PARENT_ID] = null; - - var where = this.buildWhereWithFieldAndValue(MetadataReferenceDao.COLUMN_MD_PARENT_ID, parentId); - var whereArgs = this.buildWhereArgs(parentId); - return this.updateWithValues(values, where, whereArgs); -} - -MetadataReferenceDao.prototype.queryByMetadataAndParent = function (fileId, parentId) { - var columnValues = new ColumnValues(); - columnValues.addColumn(MetadataReferenceDao.COLUMN_MD_FILE_ID, fileId); - columnValues.addColumn(MetadataReferenceDao.COLUMN_MD_PARENT_ID, parentId); - return this.queryForFieldValues(columnValues); -}; - -MetadataReferenceDao.prototype.queryByMetadata = function(fileId) { - var columnValues = new ColumnValues(); - columnValues.addColumn(MetadataReferenceDao.COLUMN_MD_FILE_ID, fileId); - return this.queryForFieldValues(columnValues); -}; - -MetadataReferenceDao.prototype.queryByMetadataParent = function(parentId) { - var columnValues = new ColumnValues(); - columnValues.addColumn(MetadataReferenceDao.COLUMN_MD_PARENT_ID, parentId); - return this.queryForFieldValues(columnValues); -}; - -MetadataReferenceDao.TABLE_NAME = "gpkg_metadata_reference"; -MetadataReferenceDao.COLUMN_REFERENCE_SCOPE = "reference_scope"; -MetadataReferenceDao.COLUMN_TABLE_NAME = "table_name"; -MetadataReferenceDao.COLUMN_COLUMN_NAME = "column_name"; -MetadataReferenceDao.COLUMN_ROW_ID = "row_id"; -MetadataReferenceDao.COLUMN_TIMESTAMP = "timestamp"; -MetadataReferenceDao.COLUMN_MD_FILE_ID = "md_file_id"; -MetadataReferenceDao.COLUMN_MD_PARENT_ID = "md_parent_id"; - - -MetadataReferenceDao.prototype.gpkgTableName = MetadataReferenceDao.TABLE_NAME; -MetadataReferenceDao.prototype.idColumns = [MetadataReferenceDao.COLUMN_MD_FILE_ID, MetadataReferenceDao.COLUMN_MD_PARENT_ID]; - -module.exports.MetadataReferenceDao = MetadataReferenceDao; -module.exports.MetadataReference = MetadataReference; - -},{"../../dao/columnValues":10,"../../dao/dao":11,"util":343}],76:[function(require,module,exports){ -module.exports = function(optionList) { - var optionBuilder = {}; - optionList.forEach(function(option) { - optionBuilder['set'+option.slice(0,1).toUpperCase()+option.slice(1)] = function(param) { - this[option] = param; - return this; - } - optionBuilder['get'+option.slice(0,1).toUpperCase()+option.slice(1)] = function() { - return this[option]; - } - }); - return optionBuilder; -} - -},{}],77:[function(require,module,exports){ -module.exports = { - "EPSG:3819":'+proj=longlat +ellps=bessel +towgs84=595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408 +no_defs ', - "EPSG:3821":'+proj=longlat +ellps=aust_SA +no_defs ', - "EPSG:3824":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:3889":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:3906":'+proj=longlat +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +no_defs ', - "EPSG:4001":'+proj=longlat +ellps=airy +no_defs ', - "EPSG:4002":'+proj=longlat +ellps=mod_airy +no_defs ', - "EPSG:4003":'+proj=longlat +ellps=aust_SA +no_defs ', - "EPSG:4004":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4005":'+proj=longlat +a=6377492.018 +b=6356173.508712696 +no_defs ', - "EPSG:4006":'+proj=longlat +ellps=bess_nam +no_defs ', - "EPSG:4007":'+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs ', - "EPSG:4008":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4009":'+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs ', - "EPSG:4010":'+proj=longlat +a=6378300.789 +b=6356566.435 +no_defs ', - "EPSG:4011":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4012":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4013":'+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs ', - "EPSG:4014":'+proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs ', - "EPSG:4015":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs ', - "EPSG:4016":'+proj=longlat +ellps=evrstSS +no_defs ', - "EPSG:4018":'+proj=longlat +a=6377304.063 +b=6356103.038993155 +no_defs ', - "EPSG:4019":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:4020":'+proj=longlat +ellps=helmert +no_defs ', - "EPSG:4021":'+proj=longlat +a=6378160 +b=6356774.50408554 +no_defs ', - "EPSG:4022":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4023":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4024":'+proj=longlat +ellps=krass +no_defs ', - "EPSG:4025":'+proj=longlat +ellps=WGS66 +no_defs ', - "EPSG:4027":'+proj=longlat +a=6376523 +b=6355862.933255573 +no_defs ', - "EPSG:4028":'+proj=longlat +a=6378298.3 +b=6356657.142669561 +no_defs ', - "EPSG:4029":'+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs ', - "EPSG:4030":'+proj=longlat +ellps=WGS84 +no_defs ', - "EPSG:4031":'+proj=longlat +ellps=WGS84 +no_defs ', - "EPSG:4032":'+proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs ', - "EPSG:4033":'+proj=longlat +a=6378136.3 +b=6356751.616592146 +no_defs ', - "EPSG:4034":'+proj=longlat +a=6378249.144808011 +b=6356514.966204134 +no_defs ', - "EPSG:4035":'+proj=longlat +a=6371000 +b=6371000 +no_defs ', - "EPSG:4036":'+proj=longlat +ellps=GRS67 +no_defs ', - "EPSG:4041":'+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs ', - "EPSG:4042":'+proj=longlat +a=6377299.36559538 +b=6356098.359005156 +no_defs ', - "EPSG:4043":'+proj=longlat +ellps=WGS72 +no_defs ', - "EPSG:4044":'+proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs ', - "EPSG:4045":'+proj=longlat +a=6377299.151 +b=6356098.145120132 +no_defs ', - "EPSG:4046":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4047":'+proj=longlat +a=6371007 +b=6371007 +no_defs ', - "EPSG:4052":'+proj=longlat +a=6370997 +b=6370997 +no_defs ', - "EPSG:4053":'+proj=longlat +a=6371228 +b=6371228 +no_defs ', - "EPSG:4054":'+proj=longlat +a=6378273 +b=6356889.449 +no_defs ', - "EPSG:4055":'+proj=longlat +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4075":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4081":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4120":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4121":'+proj=longlat +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +no_defs ', - "EPSG:4122":'+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs ', - "EPSG:4123":'+proj=longlat +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +no_defs ', - "EPSG:4124":'+proj=longlat +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +no_defs ', - "EPSG:4125":'+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +no_defs ', - "EPSG:4126":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:4127":'+proj=longlat +ellps=clrk66 +towgs84=-73.472,-51.66,-112.482,0.953,4.6,-2.368,0.586 +no_defs ', - "EPSG:4128":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4129":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4130":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no_defs ', - "EPSG:4131":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +no_defs ', - "EPSG:4132":'+proj=longlat +ellps=clrk80 +towgs84=-241.54,-163.64,396.06,0,0,0,0 +no_defs ', - "EPSG:4133":'+proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +no_defs ', - "EPSG:4134":'+proj=longlat +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101 +no_defs ', - "EPSG:4135":'+proj=longlat +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +no_defs ', - "EPSG:4136":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4137":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4138":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4139":'+proj=longlat +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +no_defs ', - "EPSG:4140":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4141":'+proj=longlat +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +no_defs ', - "EPSG:4142":'+proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +no_defs ', - "EPSG:4143":'+proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +no_defs ', - "EPSG:4144":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +no_defs ', - "EPSG:4145":'+proj=longlat +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +no_defs ', - "EPSG:4146":'+proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +no_defs ', - "EPSG:4147":'+proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +no_defs ', - "EPSG:4148":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4149":'+proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +no_defs ', - "EPSG:4150":'+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +no_defs ', - "EPSG:4151":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4152":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4153":'+proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +no_defs ', - "EPSG:4154":'+proj=longlat +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +no_defs ', - "EPSG:4155":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +no_defs ', - "EPSG:4156":'+proj=longlat +ellps=bessel +towgs84=589,76,480,0,0,0,0 +no_defs ', - "EPSG:4157":'+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs ', - "EPSG:4158":'+proj=longlat +ellps=intl +towgs84=-0.465,372.095,171.736,0,0,0,0 +no_defs ', - "EPSG:4159":'+proj=longlat +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +no_defs ', - "EPSG:4160":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4161":'+proj=longlat +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +no_defs ', - "EPSG:4162":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4163":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4164":'+proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +no_defs ', - "EPSG:4165":'+proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0 +no_defs ', - "EPSG:4166":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4167":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4168":'+proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +no_defs ', - "EPSG:4169":'+proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +no_defs ', - "EPSG:4170":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4171":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4172":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4173":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4174":'+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs ', - "EPSG:4175":'+proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +no_defs ', - "EPSG:4176":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4178":'+proj=longlat +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +no_defs ', - "EPSG:4179":'+proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +no_defs ', - "EPSG:4180":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4181":'+proj=longlat +ellps=intl +towgs84=-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598 +no_defs ', - "EPSG:4182":'+proj=longlat +ellps=intl +towgs84=-425,-169,81,0,0,0,0 +no_defs ', - "EPSG:4183":'+proj=longlat +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +no_defs ', - "EPSG:4184":'+proj=longlat +ellps=intl +towgs84=-203,141,53,0,0,0,0 +no_defs ', - "EPSG:4185":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4188":'+proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs ', - "EPSG:4189":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4190":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4191":'+proj=longlat +ellps=krass +no_defs ', - "EPSG:4192":'+proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +no_defs ', - "EPSG:4193":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs ', - "EPSG:4194":'+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs ', - "EPSG:4195":'+proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0.814,-0.6 +no_defs ', - "EPSG:4196":'+proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.814,-0.6 +no_defs ', - "EPSG:4197":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4198":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4199":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4200":'+proj=longlat +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +no_defs ', - "EPSG:4201":'+proj=longlat +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +no_defs ', - "EPSG:4202":'+proj=longlat +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +no_defs ', - "EPSG:4203":'+proj=longlat +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +no_defs ', - "EPSG:4204":'+proj=longlat +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +no_defs ', - "EPSG:4205":'+proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +no_defs ', - "EPSG:4206":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4207":'+proj=longlat +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +no_defs ', - "EPSG:4208":'+proj=longlat +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +no_defs ', - "EPSG:4209":'+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +no_defs ', - "EPSG:4210":'+proj=longlat +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +no_defs ', - "EPSG:4211":'+proj=longlat +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +no_defs ', - "EPSG:4212":'+proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +no_defs ', - "EPSG:4213":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +no_defs ', - "EPSG:4214":'+proj=longlat +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +no_defs ', - "EPSG:4215":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4216":'+proj=longlat +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0 +no_defs ', - "EPSG:4218":'+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 +no_defs ', - "EPSG:4219":'+proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,0 +no_defs ', - "EPSG:4220":'+proj=longlat +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +no_defs ', - "EPSG:4221":'+proj=longlat +ellps=intl +towgs84=-148,136,90,0,0,0,0 +no_defs ', - "EPSG:4222":'+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +no_defs ', - "EPSG:4223":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +no_defs ', - "EPSG:4224":'+proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0 +no_defs ', - "EPSG:4225":'+proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +no_defs ', - "EPSG:4226":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4227":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +no_defs ', - "EPSG:4228":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4229":'+proj=longlat +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +no_defs ', - "EPSG:4230":'+proj=longlat +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +no_defs ', - "EPSG:4231":'+proj=longlat +ellps=intl +towgs84=-83.11,-97.38,-117.22,0.00569291,-0.0446976,0.0442851,0.1218 +no_defs ', - "EPSG:4232":'+proj=longlat +ellps=clrk80 +towgs84=-346,-1,224,0,0,0,0 +no_defs ', - "EPSG:4233":'+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs ', - "EPSG:4234":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4235":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4236":'+proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +no_defs ', - "EPSG:4237":'+proj=longlat +ellps=GRS67 +towgs84=52.17,-71.82,-14.9,0,0,0,0 +no_defs ', - "EPSG:4238":'+proj=longlat +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +no_defs ', - "EPSG:4239":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +no_defs ', - "EPSG:4240":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=210,814,289,0,0,0,0 +no_defs ', - "EPSG:4241":'+proj=longlat +a=6378249.144808011 +b=6356514.966204134 +no_defs ', - "EPSG:4242":'+proj=longlat +ellps=clrk66 +towgs84=70,207,389.5,0,0,0,0 +no_defs ', - "EPSG:4243":'+proj=longlat +a=6377299.36559538 +b=6356098.359005156 +no_defs ', - "EPSG:4244":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +no_defs ', - "EPSG:4245":'+proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +no_defs ', - "EPSG:4246":'+proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +no_defs ', - "EPSG:4247":'+proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +no_defs ', - "EPSG:4248":'+proj=longlat +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +no_defs ', - "EPSG:4249":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4250":'+proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +no_defs ', - "EPSG:4251":'+proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0 +no_defs ', - "EPSG:4252":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4253":'+proj=longlat +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +no_defs ', - "EPSG:4254":'+proj=longlat +ellps=intl +towgs84=16,196,93,0,0,0,0 +no_defs ', - "EPSG:4255":'+proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0 +no_defs ', - "EPSG:4256":'+proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,0 +no_defs ', - "EPSG:4257":'+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +no_defs ', - "EPSG:4258":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4259":'+proj=longlat +ellps=intl +towgs84=-254.1,-5.36,-100.29,0,0,0,0 +no_defs ', - "EPSG:4260":'+proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +no_defs ', - "EPSG:4261":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +no_defs ', - "EPSG:4262":'+proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 +no_defs ', - "EPSG:4263":'+proj=longlat +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +no_defs ', - "EPSG:4264":'+proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +no_defs ', - "EPSG:4265":'+proj=longlat +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +no_defs ', - "EPSG:4266":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-74,-130,42,0,0,0,0 +no_defs ', - "EPSG:4267":'+proj=longlat +datum=NAD27 +no_defs ', - "EPSG:4268":'+proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs ', - "EPSG:4269":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4270":'+proj=longlat +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +no_defs ', - "EPSG:4271":'+proj=longlat +ellps=intl +towgs84=-10,375,165,0,0,0,0 +no_defs ', - "EPSG:4272":'+proj=longlat +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +no_defs ', - "EPSG:4273":'+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs ', - "EPSG:4274":'+proj=longlat +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +no_defs ', - "EPSG:4275":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +no_defs ', - "EPSG:4276":'+proj=longlat +ellps=WGS66 +no_defs ', - "EPSG:4277":'+proj=longlat +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +no_defs ', - "EPSG:4278":'+proj=longlat +ellps=airy +no_defs ', - "EPSG:4279":'+proj=longlat +ellps=airy +no_defs ', - "EPSG:4280":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4281":'+proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +no_defs ', - "EPSG:4282":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-148,51,-291,0,0,0,0 +no_defs ', - "EPSG:4283":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4284":'+proj=longlat +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +no_defs ', - "EPSG:4285":'+proj=longlat +ellps=intl +towgs84=-128.16,-282.42,21.93,0,0,0,0 +no_defs ', - "EPSG:4286":'+proj=longlat +ellps=helmert +no_defs ', - "EPSG:4287":'+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 +no_defs ', - "EPSG:4288":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4289":'+proj=longlat +ellps=bessel +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725 +no_defs ', - "EPSG:4291":'+proj=longlat +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +no_defs ', - "EPSG:4292":'+proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0 +no_defs ', - "EPSG:4293":'+proj=longlat +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +no_defs ', - "EPSG:4294":'+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +no_defs ', - "EPSG:4295":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4296":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4297":'+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +no_defs ', - "EPSG:4298":'+proj=longlat +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +no_defs ', - "EPSG:4299":'+proj=longlat +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs ', - "EPSG:4300":'+proj=longlat +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +no_defs ', - "EPSG:4301":'+proj=longlat +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +no_defs ', - "EPSG:4302":'+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +towgs84=-61.702,284.488,472.052,0,0,0,0 +no_defs ', - "EPSG:4303":'+proj=longlat +ellps=helmert +no_defs ', - "EPSG:4304":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +no_defs ', - "EPSG:4306":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4307":'+proj=longlat +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +no_defs ', - "EPSG:4308":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4309":'+proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0 +no_defs ', - "EPSG:4310":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4311":'+proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +no_defs ', - "EPSG:4312":'+proj=longlat +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +no_defs ', - "EPSG:4313":'+proj=longlat +ellps=intl +towgs84=-106.869,52.2978,-103.724,0.3366,-0.457,1.8422,-1.2747 +no_defs ', - "EPSG:4314":'+proj=longlat +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +no_defs ', - "EPSG:4315":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +no_defs ', - "EPSG:4316":'+proj=longlat +ellps=intl +towgs84=103.25,-100.4,-307.19,0,0,0,0 +no_defs ', - "EPSG:4317":'+proj=longlat +ellps=krass +towgs84=28,-121,-77,0,0,0,0 +no_defs ', - "EPSG:4318":'+proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +no_defs ', - "EPSG:4319":'+proj=longlat +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +no_defs ', - "EPSG:4322":'+proj=longlat +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +no_defs ', - "EPSG:4324":'+proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +no_defs ', - "EPSG:4326":'+proj=longlat +datum=WGS84 +no_defs ', - "EPSG:4463":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4470":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4475":'+proj=longlat +ellps=intl +towgs84=-381.788,-57.501,-256.673,0,0,0,0 +no_defs ', - "EPSG:4483":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4490":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:4555":'+proj=longlat +ellps=krass +no_defs ', - "EPSG:4558":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4600":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4601":'+proj=longlat +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0 +no_defs ', - "EPSG:4602":'+proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +no_defs ', - "EPSG:4603":'+proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +no_defs ', - "EPSG:4604":'+proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +no_defs ', - "EPSG:4605":'+proj=longlat +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +no_defs ', - "EPSG:4606":'+proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +no_defs ', - "EPSG:4607":'+proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +no_defs ', - "EPSG:4608":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4609":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:4610":'+proj=longlat +a=6378140 +b=6356755.288157528 +no_defs ', - "EPSG:4611":'+proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +no_defs ', - "EPSG:4612":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4613":'+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +no_defs ', - "EPSG:4614":'+proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +no_defs ', - "EPSG:4615":'+proj=longlat +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +no_defs ', - "EPSG:4616":'+proj=longlat +ellps=intl +towgs84=-289,-124,60,0,0,0,0 +no_defs ', - "EPSG:4617":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4618":'+proj=longlat +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +no_defs ', - "EPSG:4619":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4620":'+proj=longlat +ellps=clrk80 +towgs84=-106,-129,165,0,0,0,0 +no_defs ', - "EPSG:4621":'+proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0 +no_defs ', - "EPSG:4622":'+proj=longlat +ellps=intl +towgs84=-467,-16,-300,0,0,0,0 +no_defs ', - "EPSG:4623":'+proj=longlat +ellps=intl +towgs84=-186,230,110,0,0,0,0 +no_defs ', - "EPSG:4624":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4625":'+proj=longlat +ellps=intl +towgs84=186,482,151,0,0,0,0 +no_defs ', - "EPSG:4626":'+proj=longlat +ellps=intl +towgs84=94,-948,-1262,0,0,0,0 +no_defs ', - "EPSG:4627":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4628":'+proj=longlat +ellps=intl +towgs84=162,117,154,0,0,0,0 +no_defs ', - "EPSG:4629":'+proj=longlat +ellps=intl +towgs84=72.438,345.918,79.486,1.6045,0.8823,0.5565,1.3746 +no_defs ', - "EPSG:4630":'+proj=longlat +ellps=intl +towgs84=84,274,65,0,0,0,0 +no_defs ', - "EPSG:4631":'+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs ', - "EPSG:4632":'+proj=longlat +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +no_defs ', - "EPSG:4633":'+proj=longlat +ellps=intl +towgs84=335.47,222.58,-230.94,0,0,0,0 +no_defs ', - "EPSG:4634":'+proj=longlat +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +no_defs ', - "EPSG:4635":'+proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +no_defs ', - "EPSG:4636":'+proj=longlat +ellps=intl +towgs84=365,194,166,0,0,0,0 +no_defs ', - "EPSG:4637":'+proj=longlat +ellps=intl +towgs84=325,154,172,0,0,0,0 +no_defs ', - "EPSG:4638":'+proj=longlat +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +no_defs ', - "EPSG:4639":'+proj=longlat +ellps=intl +towgs84=253,-132,-127,0,0,0,0 +no_defs ', - "EPSG:4640":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4641":'+proj=longlat +ellps=intl +towgs84=287.58,177.78,-135.41,0,0,0,0 +no_defs ', - "EPSG:4642":'+proj=longlat +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +no_defs ', - "EPSG:4643":'+proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +no_defs ', - "EPSG:4644":'+proj=longlat +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +no_defs ', - "EPSG:4645":'+proj=longlat +ellps=intl +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4646":'+proj=longlat +ellps=intl +towgs84=-963,510,-359,0,0,0,0 +no_defs ', - "EPSG:4657":'+proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28,199,5,0,0,0,0 +no_defs ', - "EPSG:4658":'+proj=longlat +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +no_defs ', - "EPSG:4659":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4660":'+proj=longlat +ellps=intl +towgs84=982.609,552.753,-540.873,6.68163,-31.6115,-19.8482,16.805 +no_defs ', - "EPSG:4661":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4662":'+proj=longlat +ellps=intl +towgs84=-11.64,-348.6,291.98,0,0,0,0 +no_defs ', - "EPSG:4663":'+proj=longlat +ellps=intl +towgs84=-502.862,-247.438,312.724,0,0,0,0 +no_defs ', - "EPSG:4664":'+proj=longlat +ellps=intl +towgs84=-204.619,140.176,55.226,0,0,0,0 +no_defs ', - "EPSG:4665":'+proj=longlat +ellps=intl +towgs84=-106.226,166.366,-37.893,0,0,0,0 +no_defs ', - "EPSG:4666":'+proj=longlat +ellps=bessel +towgs84=508.088,-191.042,565.223,0,0,0,0 +no_defs ', - "EPSG:4667":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4668":'+proj=longlat +ellps=intl +towgs84=-86,-98,-119,0,0,0,0 +no_defs ', - "EPSG:4669":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4670":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4671":'+proj=longlat +a=6378249.2 +b=6356515 +no_defs ', - "EPSG:4672":'+proj=longlat +ellps=intl +towgs84=175,-38,113,0,0,0,0 +no_defs ', - "EPSG:4673":'+proj=longlat +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-0,0.554,0.2263 +no_defs ', - "EPSG:4674":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4675":'+proj=longlat +ellps=clrk66 +towgs84=-100,-248,259,0,0,0,0 +no_defs ', - "EPSG:4676":'+proj=longlat +ellps=krass +no_defs ', - "EPSG:4677":'+proj=longlat +ellps=krass +no_defs ', - "EPSG:4678":'+proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39.544,0,0,0,0 +no_defs ', - "EPSG:4679":'+proj=longlat +ellps=clrk80 +towgs84=-80.01,253.26,291.19,0,0,0,0 +no_defs ', - "EPSG:4680":'+proj=longlat +ellps=clrk80 +towgs84=124.5,-63.5,-281,0,0,0,0 +no_defs ', - "EPSG:4681":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4682":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=283.7,735.9,261.1,0,0,0,0 +no_defs ', - "EPSG:4683":'+proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +no_defs ', - "EPSG:4684":'+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 +no_defs ', - "EPSG:4685":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4686":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4687":'+proj=longlat +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +no_defs ', - "EPSG:4688":'+proj=longlat +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +no_defs ', - "EPSG:4689":'+proj=longlat +ellps=intl +towgs84=410.721,55.049,80.746,2.5779,2.3514,0.6664,17.3311 +no_defs ', - "EPSG:4690":'+proj=longlat +ellps=intl +towgs84=221.525,152.948,176.768,-2.3847,-1.3896,-0.877,11.4741 +no_defs ', - "EPSG:4691":'+proj=longlat +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +no_defs ', - "EPSG:4692":'+proj=longlat +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +no_defs ', - "EPSG:4693":'+proj=longlat +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +no_defs ', - "EPSG:4694":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4695":'+proj=longlat +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +no_defs ', - "EPSG:4696":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4697":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4698":'+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 +no_defs ', - "EPSG:4699":'+proj=longlat +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +no_defs ', - "EPSG:4700":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4701":'+proj=longlat +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +no_defs ', - "EPSG:4702":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4703":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4704":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4705":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4706":'+proj=longlat +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +no_defs ', - "EPSG:4707":'+proj=longlat +ellps=intl +towgs84=114,-116,-333,0,0,0,0 +no_defs ', - "EPSG:4708":'+proj=longlat +ellps=aust_SA +towgs84=-491,-22,435,0,0,0,0 +no_defs ', - "EPSG:4709":'+proj=longlat +ellps=intl +towgs84=145,75,-272,0,0,0,0 +no_defs ', - "EPSG:4710":'+proj=longlat +ellps=intl +towgs84=-320,550,-494,0,0,0,0 +no_defs ', - "EPSG:4711":'+proj=longlat +ellps=intl +towgs84=124,-234,-25,0,0,0,0 +no_defs ', - "EPSG:4712":'+proj=longlat +ellps=intl +towgs84=-205,107,53,0,0,0,0 +no_defs ', - "EPSG:4713":'+proj=longlat +ellps=clrk80 +towgs84=-79,-129,145,0,0,0,0 +no_defs ', - "EPSG:4714":'+proj=longlat +ellps=intl +towgs84=-127,-769,472,0,0,0,0 +no_defs ', - "EPSG:4715":'+proj=longlat +ellps=intl +towgs84=-104,-129,239,0,0,0,0 +no_defs ', - "EPSG:4716":'+proj=longlat +ellps=intl +towgs84=298,-304,-375,0,0,0,0 +no_defs ', - "EPSG:4717":'+proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0 +no_defs ', - "EPSG:4718":'+proj=longlat +ellps=intl +towgs84=230,-199,-752,0,0,0,0 +no_defs ', - "EPSG:4719":'+proj=longlat +ellps=intl +towgs84=211,147,111,0,0,0,0 +no_defs ', - "EPSG:4720":'+proj=longlat +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +no_defs ', - "EPSG:4721":'+proj=longlat +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +no_defs ', - "EPSG:4722":'+proj=longlat +ellps=intl +towgs84=-794,119,-298,0,0,0,0 +no_defs ', - "EPSG:4723":'+proj=longlat +ellps=clrk66 +towgs84=-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925 +no_defs ', - "EPSG:4724":'+proj=longlat +ellps=intl +towgs84=208,-435,-229,0,0,0,0 +no_defs ', - "EPSG:4725":'+proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0 +no_defs ', - "EPSG:4726":'+proj=longlat +ellps=clrk66 +towgs84=8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081 +no_defs ', - "EPSG:4727":'+proj=longlat +ellps=intl +towgs84=403,-81,277,0,0,0,0 +no_defs ', - "EPSG:4728":'+proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0 +no_defs ', - "EPSG:4729":'+proj=longlat +ellps=intl +towgs84=185,165,42,0,0,0,0 +no_defs ', - "EPSG:4730":'+proj=longlat +ellps=intl +towgs84=170,42,84,0,0,0,0 +no_defs ', - "EPSG:4731":'+proj=longlat +ellps=clrk80 +towgs84=51,391,-36,0,0,0,0 +no_defs ', - "EPSG:4732":'+proj=longlat +a=6378270 +b=6356794.343434343 +towgs84=102,52,-38,0,0,0,0 +no_defs ', - "EPSG:4733":'+proj=longlat +ellps=intl +towgs84=276,-57,149,0,0,0,0 +no_defs ', - "EPSG:4734":'+proj=longlat +ellps=intl +towgs84=-632,438,-609,0,0,0,0 +no_defs ', - "EPSG:4735":'+proj=longlat +ellps=intl +towgs84=647,1777,-1124,0,0,0,0 +no_defs ', - "EPSG:4736":'+proj=longlat +ellps=clrk80 +towgs84=260,12,-147,0,0,0,0 +no_defs ', - "EPSG:4737":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4738":'+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs ', - "EPSG:4739":'+proj=longlat +ellps=intl +towgs84=-156,-271,-189,0,0,0,0 +no_defs ', - "EPSG:4740":'+proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0,0,1.5,-0,-0,0.076,0 +no_defs ', - "EPSG:4741":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4742":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:4743":'+proj=longlat +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +no_defs ', - "EPSG:4744":'+proj=longlat +ellps=clrk80 +no_defs ', - "EPSG:4745":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4746":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:4747":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4748":'+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs ', - "EPSG:4749":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4750":'+proj=longlat +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +no_defs ', - "EPSG:4751":'+proj=longlat +a=6377295.664 +b=6356094.667915204 +no_defs ', - "EPSG:4752":'+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +no_defs ', - "EPSG:4753":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4754":'+proj=longlat +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +no_defs ', - "EPSG:4755":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4756":'+proj=longlat +ellps=WGS84 +towgs84=-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188 +no_defs ', - "EPSG:4757":'+proj=longlat +ellps=WGS84 +no_defs ', - "EPSG:4758":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4759":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4760":'+proj=longlat +ellps=WGS66 +no_defs ', - "EPSG:4761":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4762":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4763":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4764":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4765":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:4801":'+proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +pm=bern +no_defs ', - "EPSG:4802":'+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 +pm=bogota +no_defs ', - "EPSG:4803":'+proj=longlat +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +no_defs ', - "EPSG:4804":'+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +no_defs ', - "EPSG:4805":'+proj=longlat +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +no_defs ', - "EPSG:4806":'+proj=longlat +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +pm=rome +no_defs ', - "EPSG:4807":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +no_defs ', - "EPSG:4808":'+proj=longlat +ellps=bessel +pm=jakarta +no_defs ', - "EPSG:4809":'+proj=longlat +ellps=intl +pm=brussels +no_defs ', - "EPSG:4810":'+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +no_defs ', - "EPSG:4811":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +pm=paris +no_defs ', - "EPSG:4813":'+proj=longlat +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +pm=jakarta +no_defs ', - "EPSG:4814":'+proj=longlat +ellps=bessel +pm=stockholm +no_defs ', - "EPSG:4815":'+proj=longlat +ellps=bessel +pm=athens +no_defs ', - "EPSG:4816":'+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +pm=paris +no_defs ', - "EPSG:4817":'+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +no_defs ', - "EPSG:4818":'+proj=longlat +ellps=bessel +towgs84=589,76,480,0,0,0,0 +pm=ferro +no_defs ', - "EPSG:4819":'+proj=longlat +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +pm=paris +no_defs ', - "EPSG:4820":'+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +pm=jakarta +no_defs ', - "EPSG:4821":'+proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs ', - "EPSG:4823":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4824":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:4901":'+proj=longlat +a=6376523 +b=6355862.933255573 +pm=2.337208333333333 +no_defs ', - "EPSG:4902":'+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs ', - "EPSG:4903":'+proj=longlat +a=6378298.3 +b=6356657.142669561 +pm=madrid +no_defs ', - "EPSG:4904":'+proj=longlat +ellps=bessel +towgs84=508.088,-191.042,565.223,0,0,0,0 +pm=lisbon +no_defs ', - "EPSG:5013":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5132":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:5228":'+proj=longlat +ellps=bessel +towgs84=572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378 +no_defs ', - "EPSG:5229":'+proj=longlat +ellps=bessel +towgs84=572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378 +pm=ferro +no_defs ', - "EPSG:5233":'+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-0.293,766.95,87.713,0.195704,1.69507,3.47302,-0.039338 +no_defs ', - "EPSG:5246":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:5252":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5264":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5324":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5340":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5354":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5360":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5365":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5371":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5373":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5381":'+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5393":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5451":'+proj=longlat +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +no_defs ', - "EPSG:5464":'+proj=longlat +a=6378293.645208759 +b=6356617.987679838 +no_defs ', - "EPSG:5467":'+proj=longlat +ellps=clrk66 +no_defs ', - "EPSG:5489":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5524":'+proj=longlat +ellps=intl +no_defs ', - "EPSG:5527":'+proj=longlat +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +no_defs ', - "EPSG:5546":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5561":'+proj=longlat +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +no_defs ', - "EPSG:5593":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:5681":'+proj=longlat +ellps=bessel +no_defs ', - "EPSG:5886":'+proj=longlat +ellps=GRS80 +no_defs ', - "EPSG:6135":'+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs ', - "EPSG:2000":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs ', - "EPSG:2001":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0 +units=m +no_defs ', - "EPSG:2002":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m +no_defs ', - "EPSG:2003":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m +no_defs ', - "EPSG:2004":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m +no_defs ', - "EPSG:2005":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +units=m +no_defs ', - "EPSG:2006":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m +no_defs ', - "EPSG:2007":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +units=m +no_defs ', - "EPSG:2008":'+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2009":'+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2010":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2011":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2012":'+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2013":'+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2014":'+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2015":'+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2016":'+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2017":'+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2018":'+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2019":'+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2020":'+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2021":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2022":'+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2023":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2024":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2025":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2026":'+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2027":'+proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2028":'+proj=utm +zone=16 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2029":'+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2030":'+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2031":'+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2032":'+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2033":'+proj=utm +zone=19 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2034":'+proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2035":'+proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2036":'+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2037":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2038":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2039":'+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs ', - "EPSG:2040":'+proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs ', - "EPSG:2041":'+proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs ', - "EPSG:2042":'+proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs ', - "EPSG:2043":'+proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs ', - "EPSG:2044":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs ', - "EPSG:2045":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs ', - "EPSG:2046":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2047":'+proj=tmerc +lat_0=0 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2048":'+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2049":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2050":'+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2051":'+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2052":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2053":'+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2054":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2055":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2056":'+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs ', - "EPSG:2057":'+proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=658377.437 +y_0=3044969.194 +gamma=0.5716611944444444 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs ', - "EPSG:2058":'+proj=utm +zone=38 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs ', - "EPSG:2059":'+proj=utm +zone=39 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs ', - "EPSG:2060":'+proj=utm +zone=40 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs ', - "EPSG:2061":'+proj=utm +zone=41 +ellps=intl +towgs84=-117,-132,-164,0,0,0,0 +units=m +no_defs ', - "EPSG:2062":'+proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293 +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.142669561 +pm=madrid +units=m +no_defs ', - "EPSG:2063":'+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs ', - "EPSG:2064":'+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs ', - "EPSG:2065":'+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:2066":'+proj=cass +lat_0=11.25217861111111 +lon_0=-60.68600888888889 +x_0=37718.66159325 +y_0=36209.91512952 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.201166195164 +no_defs ', - "EPSG:2067":'+proj=utm +zone=20 +ellps=intl +towgs84=-0.465,372.095,171.736,0,0,0,0 +units=m +no_defs ', - "EPSG:2068":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2069":'+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2070":'+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2071":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2072":'+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2073":'+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2074":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2075":'+proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2076":'+proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2077":'+proj=utm +zone=32 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2078":'+proj=utm +zone=33 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2079":'+proj=utm +zone=34 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2080":'+proj=utm +zone=35 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2081":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs ', - "EPSG:2082":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m +no_defs ', - "EPSG:2083":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=16,196,93,0,0,0,0 +units=m +no_defs ', - "EPSG:2084":'+proj=utm +zone=19 +south +ellps=intl +towgs84=16,196,93,0,0,0,0 +units=m +no_defs ', - "EPSG:2085":'+proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99993602 +x_0=500000 +y_0=280296.016 +datum=NAD27 +units=m +no_defs ', - "EPSG:2086":'+proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=500000 +y_0=229126.939 +datum=NAD27 +units=m +no_defs ', - "EPSG:2087":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0,0 +units=m +no_defs ', - "EPSG:2088":'+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +units=m +no_defs ', - "EPSG:2089":'+proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2090":'+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2091":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs ', - "EPSG:2092":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs ', - "EPSG:2093":'+proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs ', - "EPSG:2094":'+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:2095":'+proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m +no_defs ', - "EPSG:2096":'+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:2097":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:2098":'+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:2099":'+proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no_defs ', - "EPSG:2100":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m +no_defs ', - "EPSG:2101":'+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684.972 +ellps=intl +units=m +no_defs ', - "EPSG:2102":'+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=147315.028 +ellps=intl +units=m +no_defs ', - "EPSG:2103":'+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=447315.028 +ellps=intl +units=m +no_defs ', - "EPSG:2104":'+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m +no_defs ', - "EPSG:2105":'+proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2106":'+proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2107":'+proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2108":'+proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2109":'+proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2110":'+proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2111":'+proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2112":'+proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2113":'+proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2114":'+proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2115":'+proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2116":'+proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2117":'+proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2118":'+proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2119":'+proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2120":'+proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2121":'+proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2122":'+proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2123":'+proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2124":'+proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2125":'+proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2126":'+proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2127":'+proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2128":'+proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2129":'+proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2130":'+proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2131":'+proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.99996 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2132":'+proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2133":'+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2134":'+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2135":'+proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2136":'+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088 +no_defs ', - "EPSG:2137":'+proj=tmerc +lat_0=0 +lon_0=-1 +k=0.9996 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m +no_defs ', - "EPSG:2138":'+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs ', - "EPSG:2139":'+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2140":'+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2141":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2142":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2143":'+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2144":'+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2145":'+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2146":'+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2147":'+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2148":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2149":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2150":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2151":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2152":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2153":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2154":'+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2155":'+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2156":'+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2157":'+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.99982 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2158":'+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2159":'+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs ', - "EPSG:2160":'+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs ', - "EPSG:2161":'+proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs ', - "EPSG:2162":'+proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs ', - "EPSG:2163":'+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs ', - "EPSG:2164":'+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs ', - "EPSG:2165":'+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs ', - "EPSG:2166":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2167":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2168":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2169":'+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.4598 +units=m +no_defs ', - "EPSG:2170":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:2171":'+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:2172":'+proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:2173":'+proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:2174":'+proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:2175":'+proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:2176":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2177":'+proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2178":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2179":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2180":'+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2188":'+proj=utm +zone=25 +ellps=intl +towgs84=-425,-169,81,0,0,0,0 +units=m +no_defs ', - "EPSG:2189":'+proj=utm +zone=26 +ellps=intl +towgs84=-104,167,-38,0,0,0,0 +units=m +no_defs ', - "EPSG:2190":'+proj=utm +zone=26 +ellps=intl +towgs84=-203,141,53,0,0,0,0 +units=m +no_defs ', - "EPSG:2191":'+proj=utm +zone=28 +ellps=intl +units=m +no_defs ', - "EPSG:2192":'+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2193":'+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2194":'+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2195":'+proj=utm +zone=2 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2196":'+proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.99995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2197":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.99995 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2198":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2199":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:2200":'+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2201":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2202":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2203":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2204":'+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0=30480.06096012192 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:2205":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2206":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2207":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2208":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2209":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2210":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2211":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2212":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2213":'+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2214":'+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs ', - "EPSG:2215":'+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m +no_defs ', - "EPSG:2216":'+proj=utm +zone=22 +ellps=intl +towgs84=164,138,-189,0,0,0,0 +units=m +no_defs ', - "EPSG:2217":'+proj=utm +zone=23 +ellps=intl +towgs84=164,138,-189,0,0,0,0 +units=m +no_defs ', - "EPSG:2219":'+proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2220":'+proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2222":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2223":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2224":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2225":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2226":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2227":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2228":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2229":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2230":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2231":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2232":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2233":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2234":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2235":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2236":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2237":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2238":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2239":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2240":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2241":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2242":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2243":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2244":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2245":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2246":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2247":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2248":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2249":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2250":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2251":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2252":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2253":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2254":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2255":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2256":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2257":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2258":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2259":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2260":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2261":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2262":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2263":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2264":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2265":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2266":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2267":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2268":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2269":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2270":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2271":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2272":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2273":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2274":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2275":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2276":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2277":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2278":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2279":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2280":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2281":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2282":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2283":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2284":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2285":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2286":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2287":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2288":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2289":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2290":'+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=700000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2291":'+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2292":'+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2294":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=4500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2295":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=5500000 +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_defs ', - "EPSG:2308":'+proj=tmerc +lat_0=0 +lon_0=109 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs ', - "EPSG:2309":'+proj=tmerc +lat_0=0 +lon_0=116 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:2310":'+proj=tmerc +lat_0=0 +lon_0=132 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:2311":'+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:2312":'+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs ', - "EPSG:2313":'+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs ', - "EPSG:2314":'+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392052001 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +towgs84=-61.702,284.488,472.052,0,0,0,0 +to_meter=0.3047972654 +no_defs ', - "EPSG:2315":'+proj=utm +zone=19 +south +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:2316":'+proj=utm +zone=20 +south +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:2317":'+proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:2318":'+proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 +x_0=0 +y_0=0 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:2319":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2320":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2321":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2322":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2323":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2324":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2325":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:2326":'+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883,-1.09425 +units=m +no_defs ', - "EPSG:2327":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2328":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2329":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2330":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2331":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2332":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2333":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2334":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2335":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2336":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2337":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2338":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2339":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2340":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2341":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2342":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2343":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2344":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2345":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2346":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2347":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2348":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2349":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2350":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2351":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2352":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2353":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2354":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2355":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2356":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2357":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2358":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2359":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2360":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2361":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2362":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2363":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2364":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2365":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2366":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2367":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2368":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2369":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2370":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2371":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2372":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2373":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2374":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2375":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2376":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2377":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2378":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2379":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2380":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2381":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2382":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2383":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2384":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2385":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2386":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2387":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2388":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2389":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2390":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs ', - "EPSG:2391":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:2392":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:2393":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:2394":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:2395":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs ', - "EPSG:2396":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs ', - "EPSG:2397":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2398":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2399":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:2400":'+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:2401":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2402":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2403":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2404":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2405":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2406":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2407":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2408":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2409":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2410":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2411":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2412":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2413":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2414":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2415":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2416":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2417":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2418":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2419":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2420":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2421":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2422":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2423":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2424":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2425":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2426":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2427":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2428":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2429":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2430":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2431":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2432":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2433":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2434":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2435":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2436":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2437":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2438":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2439":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2440":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2441":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2442":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:2443":'+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2444":'+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2445":'+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2446":'+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2447":'+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2448":'+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2449":'+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2450":'+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2451":'+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2452":'+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2453":'+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2454":'+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2455":'+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2456":'+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2457":'+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2458":'+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2459":'+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2460":'+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2461":'+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2462":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:2463":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2464":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2465":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2466":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2467":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2468":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2469":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2470":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2471":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2472":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2473":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2474":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2475":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2476":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2477":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2478":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2479":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2480":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2481":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2482":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2483":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2484":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2485":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2486":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2487":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2488":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2489":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2490":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2491":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2492":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2493":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2494":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2495":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2496":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2497":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2498":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2499":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2500":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2501":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2502":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2503":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2504":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2505":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2506":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2507":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2508":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2509":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2510":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2511":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2512":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2513":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2514":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2515":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2516":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2517":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2518":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2519":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2520":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2521":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2522":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2523":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2524":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2525":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2526":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2527":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2528":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2529":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2530":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2531":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2532":'+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2533":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2534":'+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2535":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2536":'+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2537":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2538":'+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2539":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2540":'+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2541":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2542":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2543":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2544":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2545":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2546":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2547":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2548":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2549":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2550":'+proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs ', - "EPSG:2551":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2552":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2553":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2554":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2555":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2556":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2557":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2558":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2559":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2560":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2561":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2562":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2563":'+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2564":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2565":'+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2566":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2567":'+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2568":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2569":'+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2570":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2571":'+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2572":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2573":'+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2574":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2575":'+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2576":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2577":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2578":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2579":'+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2580":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2581":'+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2582":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2583":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2584":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2585":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2586":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2587":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2588":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2589":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2590":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2591":'+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2592":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2593":'+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2594":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2595":'+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2596":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2597":'+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2598":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2599":'+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2600":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2601":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2602":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2603":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2604":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2605":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2606":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2607":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2608":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2609":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2610":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2611":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2612":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2613":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2614":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2615":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2616":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2617":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2618":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2619":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2620":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2621":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2622":'+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2623":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2624":'+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2625":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2626":'+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2627":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2628":'+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2629":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2630":'+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2631":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2632":'+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2633":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2634":'+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2635":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2636":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2637":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2638":'+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2639":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2640":'+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2641":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2642":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2643":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2644":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2645":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2646":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2647":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2648":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2649":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2650":'+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2651":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2652":'+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2653":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2654":'+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2655":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2656":'+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2657":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2658":'+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2659":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2660":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2661":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2662":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2663":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2664":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2665":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2666":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2667":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2668":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2669":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2670":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2671":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2672":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2673":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2674":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2675":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2676":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2677":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2678":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2679":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2680":'+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2681":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2682":'+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2683":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2684":'+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2685":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2686":'+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2687":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2688":'+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2689":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2690":'+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2691":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2692":'+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2693":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2694":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2695":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2696":'+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2697":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2698":'+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2699":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2700":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2701":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2702":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2703":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2704":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2705":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2706":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2707":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2708":'+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2709":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2710":'+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2711":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2712":'+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2713":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2714":'+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2715":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2716":'+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2717":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2718":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2719":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2720":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2721":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2722":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2723":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2724":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2725":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2726":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2727":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2728":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2729":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2730":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2731":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2732":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2733":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2734":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2735":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2736":'+proj=utm +zone=36 +south +ellps=clrk66 +towgs84=-73.472,-51.66,-112.482,0.953,4.6,-2.368,0.586 +units=m +no_defs ', - "EPSG:2737":'+proj=utm +zone=37 +south +ellps=clrk66 +towgs84=-73.472,-51.66,-112.482,0.953,4.6,-2.368,0.586 +units=m +no_defs ', - "EPSG:2738":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2739":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2740":'+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2741":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2742":'+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2743":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2744":'+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2745":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2746":'+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2747":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2748":'+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2749":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2750":'+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2751":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2752":'+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2753":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2754":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2755":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2756":'+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2757":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2758":'+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:2759":'+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2760":'+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2761":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2762":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2763":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2764":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2765":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2766":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2767":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2768":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2769":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2770":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2771":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2772":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2773":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2774":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2775":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2776":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2777":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2778":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2779":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2780":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2781":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2782":'+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2783":'+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2784":'+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2785":'+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2786":'+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2787":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2788":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2789":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2790":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2791":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2792":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2793":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2794":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2795":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2796":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2797":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2798":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2799":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2800":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2801":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2802":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2803":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2804":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2805":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2806":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2807":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2808":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2809":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2810":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2811":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2812":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2813":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2814":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2815":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2816":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2817":'+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2818":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2819":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2820":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2821":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2822":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2823":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2824":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2825":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2826":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2827":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2828":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2829":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2830":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2831":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2832":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2833":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2834":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2835":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2836":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2837":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2838":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2839":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2840":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2841":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2842":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2843":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2844":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2845":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2846":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2847":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2848":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2849":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2850":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2851":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2852":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2853":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2854":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2855":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2856":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2857":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2858":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2859":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2860":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2861":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2862":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2863":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2864":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2865":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2866":'+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2867":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2868":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2869":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2870":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2871":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2872":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2873":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2874":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2875":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2876":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2877":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2878":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2879":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2880":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2881":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2882":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2883":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2884":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2885":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2886":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2887":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2888":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2889":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2890":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2891":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2892":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2893":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2894":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2895":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2896":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2897":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2898":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2899":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2900":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2901":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2902":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2903":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2904":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2905":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2906":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2907":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2908":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2909":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2910":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2911":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2912":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2913":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2914":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2915":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2916":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2917":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2918":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2919":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2920":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2921":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2922":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2923":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2924":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2925":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2926":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2927":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2928":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2929":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2930":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2931":'+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,0 +units=m +no_defs ', - "EPSG:2932":'+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +units=m +no_defs ', - "EPSG:2933":'+proj=utm +zone=50 +south +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +units=m +no_defs ', - "EPSG:2934":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:2935":'+proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333333333 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2936":'+proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333333333 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2937":'+proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333333333 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2938":'+proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333333333 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2939":'+proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666666667 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2940":'+proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666666667 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2941":'+proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666666667 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:2942":'+proj=utm +zone=28 +ellps=intl +towgs84=-499,-249,314,0,0,0,0 +units=m +no_defs ', - "EPSG:2943":'+proj=utm +zone=28 +ellps=intl +towgs84=-289,-124,60,0,0,0,0 +units=m +no_defs ', - "EPSG:2944":'+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2945":'+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2946":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2947":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2948":'+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2949":'+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2950":'+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2951":'+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2952":'+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2953":'+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2954":'+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2955":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2956":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2957":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2958":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2959":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2960":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2961":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2962":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2964":'+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:2965":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2966":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2967":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2968":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:2969":'+proj=utm +zone=20 +ellps=intl +towgs84=137,248,-430,0,0,0,0 +units=m +no_defs ', - "EPSG:2970":'+proj=utm +zone=20 +ellps=intl +towgs84=-467,-16,-300,0,0,0,0 +units=m +no_defs ', - "EPSG:2971":'+proj=utm +zone=22 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs ', - "EPSG:2972":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2973":'+proj=utm +zone=20 +ellps=intl +towgs84=186,482,151,0,0,0,0 +units=m +no_defs ', - "EPSG:2975":'+proj=utm +zone=40 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2976":'+proj=utm +zone=6 +south +ellps=intl +towgs84=162,117,154,0,0,0,0 +units=m +no_defs ', - "EPSG:2977":'+proj=utm +zone=5 +south +ellps=intl +towgs84=72.438,345.918,79.486,1.6045,0.8823,0.5565,1.3746 +units=m +no_defs ', - "EPSG:2978":'+proj=utm +zone=7 +south +ellps=intl +towgs84=84,274,65,0,0,0,0 +units=m +no_defs ', - "EPSG:2979":'+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs ', - "EPSG:2980":'+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m +no_defs ', - "EPSG:2981":'+proj=utm +zone=58 +south +ellps=intl +towgs84=335.47,222.58,-230.94,0,0,0,0 +units=m +no_defs ', - "EPSG:2982":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +units=m +no_defs ', - "EPSG:2983":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +units=m +no_defs ', - "EPSG:2984":'+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=intl +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2987":'+proj=utm +zone=21 +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 +units=m +no_defs ', - "EPSG:2988":'+proj=utm +zone=1 +south +ellps=intl +towgs84=253,-132,-127,0,0,0,0 +units=m +no_defs ', - "EPSG:2989":'+proj=utm +zone=20 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2990":'+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=50000 +y_0=160000 +ellps=intl +towgs84=94,-948,-1262,0,0,0,0 +units=m +no_defs ', - "EPSG:2991":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2992":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2993":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:2994":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:2995":'+proj=utm +zone=58 +south +ellps=intl +towgs84=287.58,177.78,-135.41,0,0,0,0 +units=m +no_defs ', - "EPSG:2996":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-13,-348,292,0,0,0,0 +units=m +no_defs ', - "EPSG:2997":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +units=m +no_defs ', - "EPSG:2998":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +units=m +no_defs ', - "EPSG:2999":'+proj=utm +zone=38 +south +ellps=intl +towgs84=-963,510,-359,0,0,0,0 +units=m +no_defs ', - "EPSG:3000":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +units=m +no_defs ', - "EPSG:3001":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs ', - "EPSG:3002":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +units=m +no_defs ', - "EPSG:3003":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +units=m +no_defs ', - "EPSG:3004":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +units=m +no_defs ', - "EPSG:3005":'+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3006":'+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3007":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3008":'+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3009":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3010":'+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3011":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3012":'+proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3013":'+proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3014":'+proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3015":'+proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3016":'+proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3017":'+proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3018":'+proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3019":'+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3020":'+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3021":'+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3022":'+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3023":'+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3024":'+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-0.855,2.141,-7.023,0 +units=m +no_defs ', - "EPSG:3025":'+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3026":'+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3027":'+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3028":'+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3029":'+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3030":'+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3031":'+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3032":'+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=70 +k=1 +x_0=6000000 +y_0=6000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:3033":'+proj=lcc +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50 +lon_0=70 +x_0=6000000 +y_0=6000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:3034":'+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3035":'+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3036":'+proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs ', - "EPSG:3037":'+proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs ', - "EPSG:3038":'+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3039":'+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3040":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3041":'+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3042":'+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3043":'+proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3044":'+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3045":'+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3046":'+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3047":'+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3048":'+proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3049":'+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3050":'+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3051":'+proj=utm +zone=39 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3054":'+proj=utm +zone=26 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs ', - "EPSG:3055":'+proj=utm +zone=27 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs ', - "EPSG:3056":'+proj=utm +zone=28 +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +units=m +no_defs ', - "EPSG:3057":'+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3058":'+proj=tmerc +lat_0=0 +lon_0=-8.5 +k=1 +x_0=50000 +y_0=-7800000 +ellps=intl +towgs84=982.609,552.753,-540.873,6.68163,-31.6115,-19.8482,16.805 +units=m +no_defs ', - "EPSG:3059":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3060":'+proj=utm +zone=58 +south +ellps=intl +towgs84=-11.64,-348.6,291.98,0,0,0,0 +units=m +no_defs ', - "EPSG:3061":'+proj=utm +zone=28 +ellps=intl +towgs84=-502.862,-247.438,312.724,0,0,0,0 +units=m +no_defs ', - "EPSG:3062":'+proj=utm +zone=26 +ellps=intl +towgs84=-204.619,140.176,55.226,0,0,0,0 +units=m +no_defs ', - "EPSG:3063":'+proj=utm +zone=26 +ellps=intl +towgs84=-106.226,166.366,-37.893,0,0,0,0 +units=m +no_defs ', - "EPSG:3064":'+proj=utm +zone=32 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3065":'+proj=utm +zone=33 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3066":'+proj=tmerc +lat_0=0 +lon_0=37 +k=0.9998 +x_0=500000 +y_0=-3000000 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:3067":'+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3068":'+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 +x_0=40000 +y_0=10000 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:3069":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=500000 +y_0=-4500000 +datum=NAD27 +units=m +no_defs ', - "EPSG:3070":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3071":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3072":'+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3073":'+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3074":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3075":'+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3076":'+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3077":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3078":'+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no_uoff +gamma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3079":'+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no_uoff +gamma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3080":'+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=914400 +y_0=914400 +datum=NAD27 +units=ft +no_defs ', - "EPSG:3081":'+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3082":'+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3083":'+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3084":'+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3085":'+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3086":'+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3087":'+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3088":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3089":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3090":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3091":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3092":'+proj=utm +zone=51 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:3093":'+proj=utm +zone=52 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:3094":'+proj=utm +zone=53 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:3095":'+proj=utm +zone=54 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:3096":'+proj=utm +zone=55 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:3097":'+proj=utm +zone=51 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3098":'+proj=utm +zone=52 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3099":'+proj=utm +zone=53 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3100":'+proj=utm +zone=54 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3101":'+proj=utm +zone=55 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3102":'+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=95169.31165862332 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3103":'+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3104":'+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3105":'+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3106":'+proj=tmerc +lat_0=0 +lon_0=90 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +towgs84=283.7,735.9,261.1,0,0,0,0 +units=m +no_defs ', - "EPSG:3107":'+proj=lcc +lat_1=-28 +lat_2=-36 +lat_0=-32 +lon_0=135 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3108":'+proj=tmerc +lat_0=49.5 +lon_0=-2.416666666666667 +k=0.999997 +x_0=47000 +y_0=50000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3109":'+proj=tmerc +lat_0=49.225 +lon_0=-2.135 +k=0.9999999000000001 +x_0=40000 +y_0=70000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3110":'+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=4500000 +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:3111":'+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x_0=2500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3112":'+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3113":'+proj=tmerc +lat_0=-28 +lon_0=153 +k=0.99999 +x_0=50000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3114":'+proj=tmerc +lat_0=4.596200416666666 +lon_0=-80.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3115":'+proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3116":'+proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3117":'+proj=tmerc +lat_0=4.596200416666666 +lon_0=-71.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3118":'+proj=tmerc +lat_0=4.596200416666666 +lon_0=-68.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3119":'+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs ', - "EPSG:3120":'+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5467000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3121":'+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs ', - "EPSG:3122":'+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs ', - "EPSG:3123":'+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs ', - "EPSG:3124":'+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs ', - "EPSG:3125":'+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +units=m +no_defs ', - "EPSG:3126":'+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3127":'+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3128":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3129":'+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3130":'+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3131":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3132":'+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3133":'+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3134":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3135":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3136":'+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3137":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3138":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3140":'+proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=141622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,-36,0,0,0,0 +to_meter=0.201168 +no_defs ', - "EPSG:3141":'+proj=utm +zone=60 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs ', - "EPSG:3142":'+proj=utm +zone=1 +south +ellps=intl +towgs84=265.025,384.929,-194.046,0,0,0,0 +units=m +no_defs ', - "EPSG:3143":'+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:3146":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3147":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3148":'+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +units=m +no_defs ', - "EPSG:3149":'+proj=utm +zone=49 +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +units=m +no_defs ', - "EPSG:3150":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:3151":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:3152":'+proj=tmerc +lat_0=0 +lon_0=18.05779 +k=0.99999425 +x_0=100178.1808 +y_0=-6500614.7836 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3153":'+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3154":'+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3155":'+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3156":'+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3157":'+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3158":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3159":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3160":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3161":'+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3162":'+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x_0=930000 +y_0=6430000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3163":'+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.33333333333333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3164":'+proj=utm +zone=58 +south +ellps=WGS84 +towgs84=-56.263,16.136,-22.856,0,0,0,0 +units=m +no_defs ', - "EPSG:3165":'+proj=lcc +lat_1=-22.24469175 +lat_2=-22.29469175 +lat_0=-22.26969175 +lon_0=166.44242575 +x_0=0.66 +y_0=1.02 +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +units=m +no_defs ', - "EPSG:3166":'+proj=lcc +lat_1=-22.24472222222222 +lat_2=-22.29472222222222 +lat_0=-22.26972222222222 +lon_0=166.4425 +x_0=8.313000000000001 +y_0=-2.354 +ellps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +units=m +no_defs ', - "EPSG:3167":'+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=40000 +y_0=0 +no_uoff +gamma=323.1301023611111 +a=6377295.664 +b=6356094.667915204 +to_meter=20.116756 +no_defs ', - "EPSG:3168":'+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804670.24 +y_0=0 +no_uoff +gamma=323.1301023611111 +a=6377295.664 +b=6356094.667915204 +units=m +no_defs ', - "EPSG:3169":'+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3170":'+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3171":'+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3172":'+proj=utm +zone=59 +south +ellps=intl +towgs84=287.58,177.78,-135.41,0,0,0,0 +units=m +no_defs ', - "EPSG:3174":'+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-84.455955 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3175":'+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568977 +lon_0=-83.248627 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3176":'+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +a=6377276.345 +b=6356075.41314024 +towgs84=198,881,317,0,0,0,0 +units=m +no_defs ', - "EPSG:3177":'+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9965000000000001 +x_0=1000000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3178":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3179":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3180":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3181":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3182":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3183":'+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3184":'+proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3185":'+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3186":'+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3187":'+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3188":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3189":'+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3190":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3191":'+proj=tmerc +lat_0=0 +lon_0=11 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3192":'+proj=tmerc +lat_0=0 +lon_0=13 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3193":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3194":'+proj=tmerc +lat_0=0 +lon_0=17 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3195":'+proj=tmerc +lat_0=0 +lon_0=19 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3196":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3197":'+proj=tmerc +lat_0=0 +lon_0=23 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3198":'+proj=tmerc +lat_0=0 +lon_0=25 +k=0.99995 +x_0=200000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3199":'+proj=utm +zone=32 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3200":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-241.54,-163.64,396.06,0,0,0,0 +units=m +no_defs ', - "EPSG:3201":'+proj=utm +zone=33 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3202":'+proj=utm +zone=34 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3203":'+proj=utm +zone=35 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0,0 +units=m +no_defs ', - "EPSG:3204":'+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3205":'+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3206":'+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.33333333333334 +lat_0=-90 +lon_0=-42 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3207":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-174 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3208":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3209":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3210":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3211":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3212":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3213":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3214":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3215":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3216":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3217":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3218":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3219":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3220":'+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3221":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-102 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3222":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3223":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-78 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3224":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3225":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-18 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3226":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=-6 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3227":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=6 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3228":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=18 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3229":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=30 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3230":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3231":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3232":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3233":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3234":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3235":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3236":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3237":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3238":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3239":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3240":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3241":'+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.33333333333333 +lat_0=-90 +lon_0=174 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3242":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-153 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3243":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-135 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3244":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-117 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3245":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-99 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3246":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-81 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3247":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-63 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3248":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-27 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3249":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=-9 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3250":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=9 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3251":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=27 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3252":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=45 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3253":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=63 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3254":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=81 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3255":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=99 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3256":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=117 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3257":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=135 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3258":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=153 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3259":'+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.33333333333333 +lat_0=-90 +lon_0=171 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3260":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-168 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3261":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-144 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3262":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-120 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3263":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-96 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3264":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-72 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3265":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-48 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3266":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=-24 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3267":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3268":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=24 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3269":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=48 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3270":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=72 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3271":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=96 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3272":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=120 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3273":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=144 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3274":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=168 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3275":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-165 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3276":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-135 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3277":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-105 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3278":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-75 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3279":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3280":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-15 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3281":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=15 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3282":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3283":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=75 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3284":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=105 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3285":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=135 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3286":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=165 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3287":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3288":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-90 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3289":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=-30 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3290":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=30 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3291":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=90 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3292":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3293":'+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3294":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-78 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3296":'+proj=utm +zone=5 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs ', - "EPSG:3297":'+proj=utm +zone=6 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs ', - "EPSG:3298":'+proj=utm +zone=7 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs ', - "EPSG:3299":'+proj=utm +zone=8 +south +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_defs ', - "EPSG:3300":'+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014 +units=m +no_defs ', - "EPSG:3301":'+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.51755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3302":'+proj=utm +zone=7 +south +ellps=intl +towgs84=410.721,55.049,80.746,2.5779,2.3514,0.6664,17.3311 +units=m +no_defs ', - "EPSG:3303":'+proj=utm +zone=7 +south +ellps=intl +towgs84=347.103,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +units=m +no_defs ', - "EPSG:3304":'+proj=utm +zone=6 +south +ellps=intl +towgs84=221.525,152.948,176.768,-2.3847,-1.3896,-0.877,11.4741 +units=m +no_defs ', - "EPSG:3305":'+proj=utm +zone=6 +south +ellps=intl +towgs84=215.525,149.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +units=m +no_defs ', - "EPSG:3306":'+proj=utm +zone=5 +south +ellps=intl +towgs84=217.037,86.959,23.956,0,0,0,0 +units=m +no_defs ', - "EPSG:3307":'+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0 +units=m +no_defs ', - "EPSG:3308":'+proj=lcc +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25 +lon_0=147 +x_0=9300000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3309":'+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +datum=NAD27 +units=m +no_defs ', - "EPSG:3310":'+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3311":'+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3312":'+proj=utm +zone=21 +ellps=intl +towgs84=-186,230,110,0,0,0,0 +units=m +no_defs ', - "EPSG:3313":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3314":'+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=0 +lon_0=26 +x_0=0 +y_0=0 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3315":'+proj=tmerc +lat_0=-9 +lon_0=26 +k=0.9998 +x_0=0 +y_0=0 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3316":'+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3317":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3318":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3319":'+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3320":'+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3321":'+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3322":'+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3323":'+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3324":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3325":'+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3326":'+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3327":'+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3328":'+proj=sterea +lat_0=52.16666666666666 +lon_0=19.16666666666667 +k=0.999714 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3329":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3330":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3331":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3332":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3333":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3334":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3335":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3336":'+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,103,0,0,0,0 +units=m +no_defs ', - "EPSG:3337":'+proj=lcc +lat_1=-20.19506944444445 +lat_0=-20.19506944444445 +lon_0=57.52182777777778 +k_0=1 +x_0=1000000 +y_0=1000000 +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0,0 +units=m +no_defs ', - "EPSG:3338":'+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3339":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs ', - "EPSG:3340":'+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs ', - "EPSG:3341":'+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs ', - "EPSG:3342":'+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,0,0 +units=m +no_defs ', - "EPSG:3343":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3344":'+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3345":'+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3346":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3347":'+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3348":'+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3349":'+proj=merc +lon_0=-150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3350":'+proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3351":'+proj=tmerc +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3352":'+proj=tmerc +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3353":'+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs ', - "EPSG:3354":'+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs ', - "EPSG:3355":'+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0 +units=m +no_defs ', - "EPSG:3356":'+proj=utm +zone=17 +ellps=clrk66 +towgs84=-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925 +units=m +no_defs ', - "EPSG:3357":'+proj=utm +zone=17 +ellps=clrk66 +towgs84=8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081 +units=m +no_defs ', - "EPSG:3358":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3359":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024385 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3360":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3361":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3362":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3363":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3364":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3365":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3366":'+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +units=m +no_defs ', - "EPSG:3367":'+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3368":'+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3369":'+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3370":'+proj=utm +zone=59 +datum=NAD27 +units=m +no_defs ', - "EPSG:3371":'+proj=utm +zone=60 +datum=NAD27 +units=m +no_defs ', - "EPSG:3372":'+proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3373":'+proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3374":'+proj=utm +zone=29 +ellps=intl +units=m +no_defs ', - "EPSG:3375":'+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257964666666 +k=0.99984 +x_0=804671 +y_0=0 +no_uoff +gamma=323.1301023611111 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3376":'+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +no_uoff +gamma=53.13010236111111 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3377":'+proj=cass +lat_0=2.121679744444445 +lon_0=103.4279362361111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3378":'+proj=cass +lat_0=2.682347636111111 +lon_0=101.9749050416667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3379":'+proj=cass +lat_0=3.769388088888889 +lon_0=102.3682989833333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3380":'+proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3381":'+proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19594.245 +y_0=3371.895 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3382":'+proj=cass +lat_0=5.421517541666667 +lon_0=100.3443769638889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3383":'+proj=cass +lat_0=5.964672713888889 +lon_0=100.6363711111111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3384":'+proj=cass +lat_0=4.859063022222222 +lon_0=100.8154105861111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3385":'+proj=cass +lat_0=5.972543658333334 +lon_0=102.2952416694444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m +no_defs ', - "EPSG:3386":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:3387":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496 +units=m +no_defs ', - "EPSG:3388":'+proj=merc +lon_0=51 +lat_ts=42 +x_0=0 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3389":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:3390":'+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:3391":'+proj=utm +zone=37 +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +units=m +no_defs ', - "EPSG:3392":'+proj=utm +zone=38 +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +units=m +no_defs ', - "EPSG:3393":'+proj=utm +zone=39 +ellps=clrk80 +towgs84=70.995,-335.916,262.898,0,0,0,0 +units=m +no_defs ', - "EPSG:3394":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +units=m +no_defs ', - "EPSG:3395":'+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3396":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3397":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3398":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3399":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:3400":'+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3401":'+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3402":'+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3403":'+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3404":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3405":'+proj=utm +zone=48 +ellps=WGS84 +towgs84=-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188 +units=m +no_defs ', - "EPSG:3406":'+proj=utm +zone=49 +ellps=WGS84 +towgs84=-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188 +units=m +no_defs ', - "EPSG:3407":'+proj=cass +lat_0=22.31213333333334 +lon_0=114.1785555555556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs ', - "EPSG:3408":'+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs ', - "EPSG:3409":'+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs ', - "EPSG:3410":'+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +a=6371228 +b=6371228 +units=m +no_defs ', - "EPSG:3411":'+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs ', - "EPSG:3412":'+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs ', - "EPSG:3413":'+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3414":'+proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs ', - "EPSG:3415":'+proj=lcc +lat_1=18 +lat_2=24 +lat_0=21 +lon_0=114 +x_0=500000 +y_0=500000 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:3416":'+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3417":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3418":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3419":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3420":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3421":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3422":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3423":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3424":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3425":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3426":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3427":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3428":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3429":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3430":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3431":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3432":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3433":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3434":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3435":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3436":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3437":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3438":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3439":'+proj=utm +zone=39 +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101 +units=m +no_defs ', - "EPSG:3440":'+proj=utm +zone=40 +ellps=clrk80 +towgs84=-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101 +units=m +no_defs ', - "EPSG:3441":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3442":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3443":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3444":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3445":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3446":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3447":'+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=150328 +y_0=166262 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3448":'+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=750000 +y_0=650000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3449":'+proj=utm +zone=17 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3450":'+proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3451":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3452":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3453":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3454":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3455":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3456":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3457":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3458":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3459":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3460":'+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=2000000 +y_0=4000000 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:3461":'+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs ', - "EPSG:3462":'+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-83,37,124,0,0,0,0 +units=m +no_defs ', - "EPSG:3463":'+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3464":'+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3465":'+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3466":'+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3467":'+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3468":'+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +no_uoff +gamma=323.1301023611111 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3469":'+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3470":'+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3471":'+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3472":'+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3473":'+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3474":'+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3475":'+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3476":'+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3477":'+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3478":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3479":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3480":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3481":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3482":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3483":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3484":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3485":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3486":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3487":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3488":'+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3489":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3490":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3491":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3492":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3493":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3494":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3495":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3496":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3497":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3498":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3499":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3500":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3501":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3502":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3503":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3504":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3505":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3506":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3507":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3508":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3509":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3510":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3511":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3512":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3513":'+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3514":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3515":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3516":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3517":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3518":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3519":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3520":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3521":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3522":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3523":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3524":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3525":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3526":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3527":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3528":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3529":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3530":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3531":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3532":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3533":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3534":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3535":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3536":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3537":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3538":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3539":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3540":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3541":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.99998984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3542":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3543":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3544":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3545":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3546":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3547":'+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3548":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3549":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3550":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3551":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3552":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3553":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3554":'+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3555":'+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0.99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3556":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0.99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3557":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3558":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3559":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3560":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3561":'+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3562":'+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3563":'+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3564":'+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3565":'+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3566":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3567":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3568":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3569":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3570":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3571":'+proj=laea +lat_0=90 +lon_0=180 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3572":'+proj=laea +lat_0=90 +lon_0=-150 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3573":'+proj=laea +lat_0=90 +lon_0=-100 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3574":'+proj=laea +lat_0=90 +lon_0=-40 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3575":'+proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3576":'+proj=laea +lat_0=90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3577":'+proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3578":'+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3579":'+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3580":'+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3581":'+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3582":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3583":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3584":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3585":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3586":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3587":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3588":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.999976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3589":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3590":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3591":'+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=337.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no_uoff +gamma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3592":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3593":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3594":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3595":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3596":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3597":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3598":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3599":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3600":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3601":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3602":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3603":'+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3604":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3605":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3606":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3607":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3608":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3609":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3610":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3611":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3612":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3613":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3614":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3615":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3616":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3617":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3618":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3619":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3620":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3621":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3622":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3623":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3624":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3625":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3626":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3627":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3628":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3629":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3630":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3631":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3632":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3633":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3634":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3635":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3636":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3637":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3638":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3639":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3640":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3641":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3642":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3643":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3644":'+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120.5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3645":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3646":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3647":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3648":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3649":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3650":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3651":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3652":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3653":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3654":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3655":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3656":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3657":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3658":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3659":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3660":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3661":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3662":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3663":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3664":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3665":'+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3666":'+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3667":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3668":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3669":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3670":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3671":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3672":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.0000000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3673":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3674":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3675":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3676":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3677":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3678":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3679":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3680":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3681":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3682":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0=2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:3683":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3684":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3685":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3686":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3687":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3688":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3689":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3690":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3691":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3692":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3693":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3694":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3695":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3696":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3697":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3698":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3699":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3700":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3701":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3702":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3703":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3704":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3705":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3706":'+proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3707":'+proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3708":'+proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3709":'+proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3710":'+proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3711":'+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3712":'+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3713":'+proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3714":'+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3715":'+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3716":'+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3717":'+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3718":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3719":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3720":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3721":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3722":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3723":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3724":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3725":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3726":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3727":'+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333333333 +k=1 +x_0=160000 +y_0=50000 +ellps=intl +towgs84=94,-948,-1262,0,0,0,0 +units=m +no_defs ', - "EPSG:3728":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3729":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3730":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3731":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3732":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3733":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3734":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3735":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3736":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3737":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3738":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3739":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3740":'+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3741":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3742":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3743":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3744":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3745":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3746":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3747":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3748":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3749":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3750":'+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3751":'+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3752":'+proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3753":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3754":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3755":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3756":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3757":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3758":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3759":'+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3760":'+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3761":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3762":'+proj=lcc +lat_1=-54 +lat_2=-54.75 +lat_0=-55 +lon_0=-37 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3763":'+proj=tmerc +lat_0=39.66825833333333 +lon_0=-8.133108333333334 +k=1 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3764":'+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3765":'+proj=tmerc +lat_0=0 +lon_0=16.5 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3766":'+proj=lcc +lat_1=45.91666666666666 +lat_2=43.08333333333334 +lat_0=0 +lon_0=16.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3767":'+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3768":'+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3769":'+proj=utm +zone=20 +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0 +units=m +no_defs ', - "EPSG:3770":'+proj=tmerc +lat_0=32 +lon_0=-64.75 +k=1 +x_0=550000 +y_0=100000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3771":'+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3772":'+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3773":'+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3774":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3775":'+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3776":'+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3777":'+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3778":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3779":'+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3780":'+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3781":'+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3782":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3783":'+proj=tmerc +lat_0=-25.06855261111111 +lon_0=-130.1129671111111 +k=1 +x_0=14200 +y_0=15500 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3784":'+proj=utm +zone=9 +south +ellps=intl +towgs84=185,165,42,0,0,0,0 +units=m +no_defs ', - "EPSG:3785":'+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', - "EPSG:3786":'+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs ', - "EPSG:3787":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:3788":'+proj=tmerc +lat_0=0 +lon_0=166 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3789":'+proj=tmerc +lat_0=0 +lon_0=169 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3790":'+proj=tmerc +lat_0=0 +lon_0=179 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3791":'+proj=tmerc +lat_0=0 +lon_0=-178 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3793":'+proj=tmerc +lat_0=0 +lon_0=-176.5 +k=1 +x_0=3500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3794":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3795":'+proj=lcc +lat_1=23 +lat_2=21.7 +lat_0=22.35 +lon_0=-81 +x_0=500000 +y_0=280296.016 +datum=NAD27 +units=m +no_defs ', - "EPSG:3796":'+proj=lcc +lat_1=21.3 +lat_2=20.13333333333333 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +x_0=500000 +y_0=229126.939 +datum=NAD27 +units=m +no_defs ', - "EPSG:3797":'+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3798":'+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3799":'+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3800":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:3801":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3802":'+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3812":'+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=649328 +y_0=665262 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3814":'+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0=500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3815":'+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0=500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3816":'+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0=500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3825":'+proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3826":'+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3827":'+proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999 +x_0=250000 +y_0=0 +ellps=aust_SA +units=m +no_defs ', - "EPSG:3828":'+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0 +ellps=aust_SA +units=m +no_defs ', - "EPSG:3829":'+proj=utm +zone=51 +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +units=m +no_defs ', - "EPSG:3832":'+proj=merc +lon_0=150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3833":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3834":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3835":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3836":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3837":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3838":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3839":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3840":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3841":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3842":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3843":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:3844":'+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:3845":'+proj=tmerc +lat_0=0 +lon_0=11.30625 +k=1.000006 +x_0=1500025.141 +y_0=-667.282 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3846":'+proj=tmerc +lat_0=0 +lon_0=13.55626666666667 +k=1.0000058 +x_0=1500044.695 +y_0=-667.13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3847":'+proj=tmerc +lat_0=0 +lon_0=15.80628452944445 +k=1.00000561024 +x_0=1500064.274 +y_0=-667.711 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3848":'+proj=tmerc +lat_0=0 +lon_0=18.0563 +k=1.0000054 +x_0=1500083.521 +y_0=-668.8440000000001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3849":'+proj=tmerc +lat_0=0 +lon_0=20.30631666666667 +k=1.0000052 +x_0=1500102.765 +y_0=-670.706 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3850":'+proj=tmerc +lat_0=0 +lon_0=22.55633333333333 +k=1.0000049 +x_0=1500121.846 +y_0=-672.557 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3851":'+proj=lcc +lat_1=-37.5 +lat_2=-44.5 +lat_0=-41 +lon_0=173 +x_0=3000000 +y_0=7000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3852":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-90 +lon_0=157 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3854":'+proj=tmerc +lat_0=0 +lon_0=18.05787 +k=0.99999506 +x_0=100182.7406 +y_0=-6500620.1207 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - //"EPSG:3857":'+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', - "EPSG:3873":'+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=19500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3874":'+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=20500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3875":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=21500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3876":'+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=22500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3877":'+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=23500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3878":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=24500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3879":'+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=25500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3880":'+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=26500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3881":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=27500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3882":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=28500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3883":'+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=29500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3884":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=30500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3885":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=31500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3890":'+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3891":'+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3892":'+proj=utm +zone=39 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3893":'+proj=tmerc +lat_0=29.02626833333333 +lon_0=46.5 +k=0.9994 +x_0=800000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:3907":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3908":'+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3909":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3910":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3911":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3912":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m +no_defs ', - "EPSG:3920":'+proj=utm +zone=20 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=m +no_defs ', - "EPSG:3942":'+proj=lcc +lat_1=41.25 +lat_2=42.75 +lat_0=42 +lon_0=3 +x_0=1700000 +y_0=1200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3943":'+proj=lcc +lat_1=42.25 +lat_2=43.75 +lat_0=43 +lon_0=3 +x_0=1700000 +y_0=2200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3944":'+proj=lcc +lat_1=43.25 +lat_2=44.75 +lat_0=44 +lon_0=3 +x_0=1700000 +y_0=3200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3945":'+proj=lcc +lat_1=44.25 +lat_2=45.75 +lat_0=45 +lon_0=3 +x_0=1700000 +y_0=4200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3946":'+proj=lcc +lat_1=45.25 +lat_2=46.75 +lat_0=46 +lon_0=3 +x_0=1700000 +y_0=5200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3947":'+proj=lcc +lat_1=46.25 +lat_2=47.75 +lat_0=47 +lon_0=3 +x_0=1700000 +y_0=6200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3948":'+proj=lcc +lat_1=47.25 +lat_2=48.75 +lat_0=48 +lon_0=3 +x_0=1700000 +y_0=7200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3949":'+proj=lcc +lat_1=48.25 +lat_2=49.75 +lat_0=49 +lon_0=3 +x_0=1700000 +y_0=8200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3950":'+proj=lcc +lat_1=49.25 +lat_2=50.75 +lat_0=50 +lon_0=3 +x_0=1700000 +y_0=9200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3968":'+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3969":'+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3970":'+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3973":'+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3974":'+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3975":'+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3976":'+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3978":'+proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3979":'+proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:3985":'+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=9 +lon_0=26 +x_0=500000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3986":'+proj=tmerc +lat_0=-9 +lon_0=30 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3987":'+proj=tmerc +lat_0=-9 +lon_0=28 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3988":'+proj=tmerc +lat_0=-9 +lon_0=26 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3989":'+proj=tmerc +lat_0=-9 +lon_0=24 +k=1 +x_0=200000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:3991":'+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3992":'+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:3994":'+proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3995":'+proj=stere +lat_0=90 +lat_ts=71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3996":'+proj=stere +lat_0=90 +lat_ts=75 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:3997":'+proj=tmerc +lat_0=0 +lon_0=55.33333333333334 +k=1 +x_0=500000 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:4026":'+proj=tmerc +lat_0=0 +lon_0=28.4 +k=0.9999400000000001 +x_0=200000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4037":'+proj=utm +zone=35 +datum=WGS84 +units=m +no_defs ', - "EPSG:4038":'+proj=utm +zone=36 +datum=WGS84 +units=m +no_defs ', - "EPSG:4048":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4049":'+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4050":'+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4051":'+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4056":'+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4057":'+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4058":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4059":'+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4060":'+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4061":'+proj=utm +zone=33 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4062":'+proj=utm +zone=34 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4063":'+proj=utm +zone=35 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4071":'+proj=utm +zone=23 +south +ellps=intl +towgs84=-134,229,-29,0,0,0,0 +units=m +no_defs ', - "EPSG:4082":'+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4083":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4087":'+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:4088":'+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs ', - "EPSG:4093":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99998 +x_0=200000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4094":'+proj=tmerc +lat_0=0 +lon_0=10 +k=0.99998 +x_0=400000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4095":'+proj=tmerc +lat_0=0 +lon_0=11.75 +k=0.99998 +x_0=600000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4096":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=800000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4217":'+proj=tmerc +lat_0=0 +lon_0=171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4399":'+proj=tmerc +lat_0=0 +lon_0=171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4400":'+proj=tmerc +lat_0=0 +lon_0=177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4401":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4402":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4403":'+proj=tmerc +lat_0=0 +lon_0=-165 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4404":'+proj=tmerc +lat_0=0 +lon_0=-159 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4405":'+proj=tmerc +lat_0=0 +lon_0=-153 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4406":'+proj=tmerc +lat_0=0 +lon_0=-147 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4407":'+proj=tmerc +lat_0=0 +lon_0=-141 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4408":'+proj=tmerc +lat_0=0 +lon_0=-135 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4409":'+proj=tmerc +lat_0=0 +lon_0=-129 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4410":'+proj=tmerc +lat_0=0 +lon_0=-123 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4411":'+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4412":'+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4413":'+proj=tmerc +lat_0=0 +lon_0=-105 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4414":'+proj=tmerc +lat_0=13.5 +lon_0=144.75 +k=1 +x_0=100000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4415":'+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=-9 +lon_0=26 +x_0=500000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +units=m +no_defs ', - "EPSG:4417":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:4418":'+proj=tmerc +lat_0=0 +lon_0=-75 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4419":'+proj=tmerc +lat_0=0 +lon_0=-69 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4420":'+proj=tmerc +lat_0=0 +lon_0=177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4421":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4422":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4423":'+proj=tmerc +lat_0=0 +lon_0=-165 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4424":'+proj=tmerc +lat_0=0 +lon_0=-159 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4425":'+proj=tmerc +lat_0=0 +lon_0=-153 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4426":'+proj=tmerc +lat_0=0 +lon_0=-147 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4427":'+proj=tmerc +lat_0=0 +lon_0=-141 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4428":'+proj=tmerc +lat_0=0 +lon_0=-135 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4429":'+proj=tmerc +lat_0=0 +lon_0=-129 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4430":'+proj=tmerc +lat_0=0 +lon_0=-123 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4431":'+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4432":'+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4433":'+proj=tmerc +lat_0=0 +lon_0=-105 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4434":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:4437":'+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4438":'+proj=tmerc +lat_0=0 +lon_0=-75 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4439":'+proj=tmerc +lat_0=0 +lon_0=-69 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4455":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4456":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=609601.2192024384 +y_0=30480.06096012192 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:4457":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:4462":'+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=-27 +lon_0=132 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:4467":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4471":'+proj=utm +zone=38 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4474":'+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,-262,0,0,0,0 +units=m +no_defs ', - "EPSG:4484":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4485":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4486":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4487":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4488":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4489":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4491":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4492":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4493":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4494":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4495":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4496":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4497":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4498":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4499":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4500":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4501":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4502":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4503":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4504":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4505":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4506":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4507":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4508":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4509":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4510":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4511":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4512":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4513":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4514":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4515":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4516":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4517":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4518":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4519":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4520":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4521":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4522":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4523":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4524":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4525":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4526":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4527":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4528":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4529":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4530":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4531":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4532":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4533":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4534":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4535":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4536":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4537":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4538":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4539":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4540":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4541":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4542":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4543":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4544":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4545":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4546":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4547":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4548":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4549":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4550":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4551":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4552":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4553":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4554":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs ', - "EPSG:4559":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4568":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4569":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4570":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4571":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4572":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4573":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4574":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4575":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4576":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4577":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4578":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4579":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4580":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4581":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4582":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4583":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4584":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4585":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4586":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4587":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4588":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4589":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4647":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=32500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4652":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4653":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4654":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4655":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4656":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4766":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4767":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4768":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4769":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4770":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4771":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4772":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4773":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4774":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4775":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4776":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4777":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4778":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4779":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4780":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4781":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4782":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4783":'+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4784":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4785":'+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4786":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4787":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4788":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4789":'+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4790":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4791":'+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4792":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4793":'+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4794":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4795":'+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4796":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4797":'+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4798":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4799":'+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4800":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4812":'+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4822":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs ', - "EPSG:4826":'+proj=lcc +lat_1=15 +lat_2=16.66666666666667 +lat_0=15.83333333333333 +lon_0=-24 +x_0=161587.83 +y_0=128511.202 +datum=WGS84 +units=m +no_defs ', - "EPSG:4839":'+proj=lcc +lat_1=48.66666666666666 +lat_2=53.66666666666666 +lat_0=51 +lon_0=10.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4855":'+proj=tmerc +lat_0=0 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4856":'+proj=tmerc +lat_0=0 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4857":'+proj=tmerc +lat_0=0 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4858":'+proj=tmerc +lat_0=0 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4859":'+proj=tmerc +lat_0=0 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4860":'+proj=tmerc +lat_0=0 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4861":'+proj=tmerc +lat_0=0 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4862":'+proj=tmerc +lat_0=0 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4863":'+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4864":'+proj=tmerc +lat_0=0 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4865":'+proj=tmerc +lat_0=0 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4866":'+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4867":'+proj=tmerc +lat_0=0 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4868":'+proj=tmerc +lat_0=0 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4869":'+proj=tmerc +lat_0=0 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4870":'+proj=tmerc +lat_0=0 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4871":'+proj=tmerc +lat_0=0 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4872":'+proj=tmerc +lat_0=0 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4873":'+proj=tmerc +lat_0=0 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4874":'+proj=tmerc +lat_0=0 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4875":'+proj=tmerc +lat_0=0 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4876":'+proj=tmerc +lat_0=0 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4877":'+proj=tmerc +lat_0=0 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4878":'+proj=tmerc +lat_0=0 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4879":'+proj=tmerc +lat_0=0 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:4880":'+proj=tmerc +lat_0=0 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5014":'+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5015":'+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5016":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5018":'+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=0 +y_0=0 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +units=m +no_defs ', - "EPSG:5041":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5042":'+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5048":'+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5069":'+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:5070":'+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5071":'+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5072":'+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5105":'+proj=tmerc +lat_0=58 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5106":'+proj=tmerc +lat_0=58 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5107":'+proj=tmerc +lat_0=58 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5108":'+proj=tmerc +lat_0=58 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5109":'+proj=tmerc +lat_0=58 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5110":'+proj=tmerc +lat_0=58 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5111":'+proj=tmerc +lat_0=58 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5112":'+proj=tmerc +lat_0=58 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5113":'+proj=tmerc +lat_0=58 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5114":'+proj=tmerc +lat_0=58 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5115":'+proj=tmerc +lat_0=58 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5116":'+proj=tmerc +lat_0=58 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5117":'+proj=tmerc +lat_0=58 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5118":'+proj=tmerc +lat_0=58 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5119":'+proj=tmerc +lat_0=58 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5120":'+proj=tmerc +lat_0=58 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5121":'+proj=tmerc +lat_0=58 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5122":'+proj=tmerc +lat_0=58 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5123":'+proj=tmerc +lat_0=58 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5124":'+proj=tmerc +lat_0=58 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5125":'+proj=tmerc +lat_0=58 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5126":'+proj=tmerc +lat_0=58 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5127":'+proj=tmerc +lat_0=58 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5128":'+proj=tmerc +lat_0=58 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5129":'+proj=tmerc +lat_0=58 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5130":'+proj=tmerc +lat_0=58 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5167":'+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5168":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=550000 +ellps=bessel +units=m +no_defs ', - "EPSG:5169":'+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5170":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5171":'+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5172":'+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5173":'+proj=tmerc +lat_0=38 +lon_0=125.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5174":'+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5175":'+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=550000 +ellps=bessel +units=m +no_defs ', - "EPSG:5176":'+proj=tmerc +lat_0=38 +lon_0=129.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5177":'+proj=tmerc +lat_0=38 +lon_0=131.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs ', - "EPSG:5178":'+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=bessel +units=m +no_defs ', - "EPSG:5179":'+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5180":'+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5181":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5182":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=550000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5183":'+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5184":'+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5185":'+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5186":'+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5187":'+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5188":'+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5221":'+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:5223":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5234":'+proj=tmerc +lat_0=7.000480277777778 +lon_0=80.77171111111112 +k=0.9999238418 +x_0=200000 +y_0=200000 +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +units=m +no_defs ', - "EPSG:5235":'+proj=tmerc +lat_0=7.000471527777778 +lon_0=80.77171308333334 +k=0.9999238418 +x_0=500000 +y_0=500000 +a=6377276.345 +b=6356075.41314024 +towgs84=-0.293,766.95,87.713,0.195704,1.69507,3.47302,-0.039338 +units=m +no_defs ', - "EPSG:5243":'+proj=lcc +lat_1=48.66666666666666 +lat_2=53.66666666666666 +lat_0=51 +lon_0=10.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5247":'+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.99984 +x_0=0 +y_0=0 +no_uoff +gamma=53.13010236111111 +ellps=GRS80 +units=m +no_defs ', - "EPSG:5253":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5254":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5255":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5256":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5257":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5258":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5259":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5266":'+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5269":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5270":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5271":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5272":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5273":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5274":'+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5275":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5292":'+proj=tmerc +lat_0=0 +lon_0=90.73333333333333 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5293":'+proj=tmerc +lat_0=0 +lon_0=89.55 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5294":'+proj=tmerc +lat_0=0 +lon_0=89.84999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5295":'+proj=tmerc +lat_0=0 +lon_0=90.03333333333333 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5296":'+proj=tmerc +lat_0=0 +lon_0=90.15000000000001 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5297":'+proj=tmerc +lat_0=0 +lon_0=91.13333333333334 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5298":'+proj=tmerc +lat_0=0 +lon_0=91.23333333333333 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5299":'+proj=tmerc +lat_0=0 +lon_0=89.34999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5300":'+proj=tmerc +lat_0=0 +lon_0=91.34999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5301":'+proj=tmerc +lat_0=0 +lon_0=89.84999999999999 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5302":'+proj=tmerc +lat_0=0 +lon_0=91.56666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5303":'+proj=tmerc +lat_0=0 +lon_0=89.06666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5304":'+proj=tmerc +lat_0=0 +lon_0=90.26666666666667 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5305":'+proj=tmerc +lat_0=0 +lon_0=89.55 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5306":'+proj=tmerc +lat_0=0 +lon_0=91.75 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5307":'+proj=tmerc +lat_0=0 +lon_0=90.5 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5308":'+proj=tmerc +lat_0=0 +lon_0=90.16666666666667 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5309":'+proj=tmerc +lat_0=0 +lon_0=90.11666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5310":'+proj=tmerc +lat_0=0 +lon_0=91.56666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5311":'+proj=tmerc +lat_0=0 +lon_0=90.86666666666666 +k=1 +x_0=250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5316":'+proj=tmerc +lat_0=0 +lon_0=-7 +k=0.999997 +x_0=200000 +y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5320":'+proj=lcc +lat_1=44.5 +lat_2=54.5 +lat_0=0 +lon_0=-84 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5321":'+proj=lcc +lat_1=44.5 +lat_2=54.5 +lat_0=0 +lon_0=-84 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5325":'+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19 +x_0=1700000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5329":'+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-403,684,41,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:5330":'+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:5331":'+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:5337":'+proj=utm +zone=25 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs ', - "EPSG:5343":'+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5344":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5345":'+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5346":'+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5347":'+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5348":'+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5349":'+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5355":'+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5356":'+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5357":'+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5361":'+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5362":'+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5367":'+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5382":'+proj=utm +zone=21 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5383":'+proj=utm +zone=22 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5387":'+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5388":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5389":'+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5396":'+proj=utm +zone=26 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5456":'+proj=lcc +lat_1=10.46666666666667 +lat_0=10.46666666666667 +lon_0=-84.33333333333333 +k_0=0.99995696 +x_0=500000 +y_0=271820.522 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5457":'+proj=lcc +lat_1=9 +lat_0=9 +lon_0=-83.66666666666667 +k_0=0.99995696 +x_0=500000 +y_0=327987.436 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5458":'+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +datum=NAD27 +units=m +no_defs ', - "EPSG:5459":'+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5460":'+proj=lcc +lat_1=13.78333333333333 +lat_0=13.78333333333333 +lon_0=-89 +k_0=0.99996704 +x_0=500000 +y_0=295809.184 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5461":'+proj=lcc +lat_1=13.86666666666667 +lat_0=13.86666666666667 +lon_0=-85.5 +k_0=0.99990314 +x_0=500000 +y_0=359891.816 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5462":'+proj=lcc +lat_1=11.73333333333333 +lat_0=11.73333333333333 +lon_0=-85.5 +k_0=0.9999222800000001 +x_0=500000 +y_0=288876.327 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5463":'+proj=utm +zone=17 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:5466":'+proj=tmerc +lat_0=17.06124194444444 +lon_0=-88.6318575 +k=1 +x_0=66220.02833082761 +y_0=135779.5099885299 +a=6378293.645208759 +b=6356617.987679838 +units=m +no_defs ', - "EPSG:5469":'+proj=lcc +lat_1=8.416666666666666 +lat_0=8.416666666666666 +lon_0=-80 +k_0=0.99989909 +x_0=500000 +y_0=294865.303 +ellps=clrk66 +units=m +no_defs ', - "EPSG:5472":'+proj=poly +lat_0=8.25 +lon_0=-81 +x_0=914391.7962 +y_0=999404.7217154861 +ellps=clrk66 +to_meter=0.9143917962 +no_defs ', - "EPSG:5479":'+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.33333333333333 +lat_0=-78 +lon_0=163 +x_0=7000000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5480":'+proj=lcc +lat_1=-73.66666666666667 +lat_2=-75.33333333333333 +lat_0=-74.5 +lon_0=165 +x_0=5000000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5481":'+proj=lcc +lat_1=-70.66666666666667 +lat_2=-72.33333333333333 +lat_0=-71.5 +lon_0=166 +x_0=3000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5482":'+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=180 +k=0.994 +x_0=5000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5490":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5513":'+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +units=m +no_defs ', - "EPSG:5514":'+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +units=m +no_defs ', - "EPSG:5518":'+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=350000 +y_0=650000 +ellps=intl +towgs84=175,-38,113,0,0,0,0 +units=m +no_defs ', - "EPSG:5519":'+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=350000 +y_0=650000 +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-0,0.554,0.2263 +units=m +no_defs ', - "EPSG:5520":'+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5523":'+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=1500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5530":'+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5531":'+proj=utm +zone=21 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5532":'+proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:5533":'+proj=utm +zone=23 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5534":'+proj=utm +zone=24 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5535":'+proj=utm +zone=25 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5536":'+proj=utm +zone=21 +south +ellps=intl +units=m +no_defs ', - "EPSG:5537":'+proj=utm +zone=22 +south +ellps=intl +units=m +no_defs ', - "EPSG:5538":'+proj=utm +zone=23 +south +ellps=intl +units=m +no_defs ', - "EPSG:5539":'+proj=utm +zone=24 +south +ellps=intl +units=m +no_defs ', - "EPSG:5550":'+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5551":'+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5552":'+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5559":'+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs ', - "EPSG:5562":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5563":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5564":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5565":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5566":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5567":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5568":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5569":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5570":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5571":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5572":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5573":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5574":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5575":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5576":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5577":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5578":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5579":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5580":'+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5581":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5582":'+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5583":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +units=m +no_defs ', - "EPSG:5588":'+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=304800 +y_0=304800 +datum=NAD27 +units=ft +no_defs ', - "EPSG:5589":'+proj=tmerc +lat_0=17.06124194444444 +lon_0=-88.6318575 +k=1 +x_0=66220.02833082761 +y_0=135779.5099885299 +a=6378293.645208759 +b=6356617.987679838 +to_meter=0.3047972654 +no_defs ', - "EPSG:5596":'+proj=tmerc +lat_0=0 +lon_0=11.33333333333333 +k=1 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5623":'+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999942857 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:5624":'+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:5625":'+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:5627":'+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:5629":'+proj=utm +zone=38 +south +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs ', - "EPSG:5631":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:5632":'+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5633":'+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5634":'+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5635":'+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5636":'+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5637":'+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5638":'+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5639":'+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5641":'+proj=merc +lon_0=-43 +lat_ts=-2 +x_0=5000000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5643":'+proj=lcc +lat_1=52.66666666666666 +lat_2=54.33333333333334 +lat_0=48 +lon_0=10 +x_0=815000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:5644":'+proj=utm +zone=39 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5646":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:5649":'+proj=tmerc +lat_0=0 +lon_0=3 +k=0.9996 +x_0=31500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5650":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=33500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5651":'+proj=tmerc +lat_0=0 +lon_0=3 +k=0.9996 +x_0=31500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5652":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=32500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5653":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=33500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5654":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:5655":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:5659":'+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=500053 +y_0=-3999820 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +units=m +no_defs ', - "EPSG:5663":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:5664":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:5665":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:5666":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5667":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5668":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5669":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5670":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:5671":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:5672":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs ', - "EPSG:5673":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:5674":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:5675":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_defs ', - "EPSG:5676":'+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5677":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5678":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5679":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5680":'+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:5682":'+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5683":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5684":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5685":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:5700":'+proj=utm +zone=1 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5825":'+proj=tmerc +lat_0=-35.31773627777778 +lon_0=149.0092948305555 +k=1.000086 +x_0=200000 +y_0=600000 +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:5836":'+proj=utm +zone=37 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5837":'+proj=utm +zone=40 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5839":'+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5842":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5844":'+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5858":'+proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5875":'+proj=utm +zone=18 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5876":'+proj=utm +zone=19 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5877":'+proj=utm +zone=20 +south +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +units=m +no_defs ', - "EPSG:5879":'+proj=utm +zone=38 +south +ellps=intl +towgs84=-381.788,-57.501,-256.673,0,0,0,0 +units=m +no_defs ', - "EPSG:5880":'+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:5887":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=1500000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs ', - "EPSG:5890":'+proj=stere +lat_0=90 +lat_ts=70 +lon_0=90 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs ', - "EPSG:5921":'+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5922":'+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5923":'+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5924":'+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5925":'+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5926":'+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5927":'+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5928":'+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5929":'+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5930":'+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5931":'+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5932":'+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5933":'+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5934":'+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5935":'+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:5936":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=-150 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5937":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=-100 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5938":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=-33 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5939":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=18 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:5940":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=105 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6050":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=-30 +x_0=25500000 +y_0=1500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6051":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-52 +x_0=18500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6052":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-12 +x_0=20500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6053":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-69 +x_0=29500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6054":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-39 +x_0=31500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6055":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-10 +x_0=33500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6056":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-64 +x_0=20500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6057":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-39 +x_0=22500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6058":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-14 +x_0=24500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6059":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-62 +x_0=41500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6060":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-42 +x_0=43500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6061":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-22 +x_0=45500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6062":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-56 +x_0=26500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6063":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-38 +x_0=28500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6064":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-20 +x_0=30500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6065":'+proj=lcc +lat_1=67 +lat_2=63.66666666666666 +lat_0=65.35103930555555 +lon_0=-51 +x_0=11500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6066":'+proj=lcc +lat_1=67 +lat_2=63.66666666666666 +lat_0=65.35103930555555 +lon_0=-34 +x_0=13500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6067":'+proj=lcc +lat_1=63.66666666666666 +lat_2=60.33333333333334 +lat_0=62.01530688888889 +lon_0=-52 +x_0=20500000 +y_0=8500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6068":'+proj=lcc +lat_1=63.66666666666666 +lat_2=60.33333333333334 +lat_0=62.01530688888889 +lon_0=-37 +x_0=22500000 +y_0=8500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6069":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=16 +x_0=22500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6070":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=21 +x_0=11500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6071":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=10 +x_0=26500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6072":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=34 +x_0=28500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6073":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=14 +x_0=11500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6074":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=34 +x_0=13500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6075":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=53 +x_0=24500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6076":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=93 +x_0=26500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6077":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=52 +x_0=13500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6078":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=83 +x_0=15500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6079":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=114 +x_0=17500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6080":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=145 +x_0=19500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6081":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=58 +x_0=30500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6082":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=82 +x_0=32500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6083":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=106 +x_0=34500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6084":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=130 +x_0=36500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6085":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=154 +x_0=38500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6086":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=179 +x_0=40500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6087":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=54 +x_0=15500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6088":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=74 +x_0=17500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6089":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=95 +x_0=19500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6090":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=116 +x_0=21500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6091":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=137 +x_0=23500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6092":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=158 +x_0=25500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6093":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=179 +x_0=27500000 +y_0=5500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6094":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-163 +x_0=29500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6095":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-147 +x_0=31500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6096":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-165 +x_0=14500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6097":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-147 +x_0=16500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6098":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=-90 +x_0=23500000 +y_0=1500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6099":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-115 +x_0=14500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6100":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-75 +x_0=16500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6101":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-129 +x_0=25500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6102":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-99 +x_0=27500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6103":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-69 +x_0=29500000 +y_0=3500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6104":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-129 +x_0=14500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6105":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-104 +x_0=16500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6106":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-79 +x_0=18500000 +y_0=4500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6107":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-131 +x_0=33500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6108":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-111 +x_0=35500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6109":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-91 +x_0=37500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6110":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-71 +x_0=39500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6111":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-132 +x_0=18500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6112":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-113 +x_0=20500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6113":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-94 +x_0=22500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6114":'+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.68747555555557 +lon_0=-75 +x_0=24500000 +y_0=6500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6115":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=30 +x_0=27500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6116":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=90 +x_0=29500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6117":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=150 +x_0=31500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6118":'+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.43711833333333 +lon_0=-150 +x_0=21500000 +y_0=1500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6119":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=133 +x_0=28500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6120":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=166 +x_0=10500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6121":'+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333333 +lat_0=82.05842488888888 +lon_0=-154 +x_0=12500000 +y_0=2500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6122":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=176 +x_0=21500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6123":'+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.70733752777778 +lon_0=-153 +x_0=23500000 +y_0=3500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6124":'+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.36440330555556 +lon_0=-155 +x_0=12500000 +y_0=4500000 +datum=WGS84 +units=m +no_defs ', - "EPSG:6125":'+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333333 +lat_0=72.02500919444445 +lon_0=-5 +x_0=47500000 +y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:6128":'+proj=utm +zone=17 +ellps=clrk66 +towgs84=-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925 +units=ft +no_defs ', - "EPSG:6129":'+proj=utm +zone=17 +ellps=clrk66 +towgs84=8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081 +units=ft +no_defs ', - "EPSG:6141":'+proj=lcc +lat_1=19.33333333333333 +lat_2=19.7 +lat_0=19.33333333333333 +lon_0=80.56666666666666 +x_0=899160 +y_0=579120 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs ', - "EPSG:20004":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20005":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20006":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20007":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20008":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20009":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20010":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20011":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20012":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20013":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20014":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20015":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20016":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20017":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20018":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20019":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20020":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20021":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20022":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20023":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20024":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20025":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20026":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20027":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20028":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20029":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20030":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20031":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20032":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20064":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20065":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20066":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20067":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20068":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20069":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20070":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20071":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20072":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20073":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20074":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20075":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20076":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20077":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20078":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20079":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20080":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20081":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20082":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20083":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20084":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20085":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20086":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20087":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20088":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20089":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20090":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20091":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20092":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0.22 +units=m +no_defs ', - "EPSG:20135":'+proj=utm +zone=35 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs ', - "EPSG:20136":'+proj=utm +zone=36 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs ', - "EPSG:20137":'+proj=utm +zone=37 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs ', - "EPSG:20138":'+proj=utm +zone=38 +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,0 +units=m +no_defs ', - "EPSG:20248":'+proj=utm +zone=48 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20249":'+proj=utm +zone=49 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20250":'+proj=utm +zone=50 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20251":'+proj=utm +zone=51 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20252":'+proj=utm +zone=52 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20253":'+proj=utm +zone=53 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20254":'+proj=utm +zone=54 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20255":'+proj=utm +zone=55 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20256":'+proj=utm +zone=56 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20257":'+proj=utm +zone=57 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20258":'+proj=utm +zone=58 +south +ellps=aust_SA +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_defs ', - "EPSG:20348":'+proj=utm +zone=48 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20349":'+proj=utm +zone=49 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20350":'+proj=utm +zone=50 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20351":'+proj=utm +zone=51 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20352":'+proj=utm +zone=52 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20353":'+proj=utm +zone=53 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20354":'+proj=utm +zone=54 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20355":'+proj=utm +zone=55 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20356":'+proj=utm +zone=56 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20357":'+proj=utm +zone=57 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20358":'+proj=utm +zone=58 +south +ellps=aust_SA +towgs84=-134,-48,149,0,0,0,0 +units=m +no_defs ', - "EPSG:20436":'+proj=utm +zone=36 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20437":'+proj=utm +zone=37 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20438":'+proj=utm +zone=38 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20439":'+proj=utm +zone=39 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20440":'+proj=utm +zone=40 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20499":'+proj=utm +zone=39 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +units=m +no_defs ', - "EPSG:20538":'+proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs ', - "EPSG:20539":'+proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0,0,0 +units=m +no_defs ', - "EPSG:20790":'+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +units=m +no_defs ', - "EPSG:20791":'+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=0 +y_0=0 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +units=m +no_defs ', - "EPSG:20822":'+proj=utm +zone=22 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs ', - "EPSG:20823":'+proj=utm +zone=23 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs ', - "EPSG:20824":'+proj=utm +zone=24 +south +ellps=intl +towgs84=-151.99,287.04,-147.45,0,0,0,0 +units=m +no_defs ', - "EPSG:20934":'+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs ', - "EPSG:20935":'+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs ', - "EPSG:20936":'+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs ', - "EPSG:21035":'+proj=utm +zone=35 +south +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21036":'+proj=utm +zone=36 +south +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21037":'+proj=utm +zone=37 +south +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21095":'+proj=utm +zone=35 +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21096":'+proj=utm +zone=36 +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21097":'+proj=utm +zone=37 +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs ', - "EPSG:21100":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:21148":'+proj=utm +zone=48 +south +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs ', - "EPSG:21149":'+proj=utm +zone=49 +south +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs ', - "EPSG:21150":'+proj=utm +zone=50 +south +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no_defs ', - "EPSG:21291":'+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs ', - "EPSG:21292":'+proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222222222 +k=0.9999986 +x_0=30000 +y_0=75000 +ellps=clrk80 +towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs ', - "EPSG:21413":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21414":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21415":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21416":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21417":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21418":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21419":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21420":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21421":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21422":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21423":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21453":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21454":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21455":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21456":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21457":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21458":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21459":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21460":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21461":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21462":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21463":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21473":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21474":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21475":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21476":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21477":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21478":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21479":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21480":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21481":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21482":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21483":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21500":'+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=0 +x_0=150000 +y_0=5400000 +ellps=intl +pm=brussels +units=m +no_defs ', - "EPSG:21780":'+proj=somerc +lat_0=46.95240555555556 +lon_0=0 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +pm=bern +units=m +no_defs ', - "EPSG:21781":'+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21782":'+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,0,0 +units=m +no_defs ', - "EPSG:21817":'+proj=utm +zone=17 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21818":'+proj=utm +zone=18 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21891":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21892":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21893":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21894":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21896":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21897":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21898":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:21899":'+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ', - "EPSG:22032":'+proj=utm +zone=32 +south +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs ', - "EPSG:22033":'+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs ', - "EPSG:22091":'+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs ', - "EPSG:22092":'+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,0,0 +units=m +no_defs ', - "EPSG:22171":'+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22172":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22173":'+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22174":'+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22175":'+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22176":'+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22177":'+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22181":'+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22182":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22183":'+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22184":'+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22185":'+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22186":'+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22187":'+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:22191":'+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22192":'+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22193":'+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22194":'+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22195":'+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22196":'+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22197":'+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no_defs ', - "EPSG:22234":'+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22235":'+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22236":'+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22275":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22277":'+proj=tmerc +lat_0=0 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22279":'+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22281":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22283":'+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22285":'+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22287":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22289":'+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22291":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22293":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=0 +y_0=0 +axis=wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs ', - "EPSG:22332":'+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +units=m +no_defs ', - "EPSG:22391":'+proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +units=m +no_defs ', - "EPSG:22392":'+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-263,6,431,0,0,0,0 +units=m +no_defs ', - "EPSG:22521":'+proj=utm +zone=21 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs ', - "EPSG:22522":'+proj=utm +zone=22 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs ', - "EPSG:22523":'+proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs ', - "EPSG:22524":'+proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs ', - "EPSG:22525":'+proj=utm +zone=25 +south +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +units=m +no_defs ', - "EPSG:22700":'+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs ', - "EPSG:22770":'+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0.9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs ', - "EPSG:22780":'+proj=sterea +lat_0=34.2 +lon_0=39.15 +k=0.9995341 +x_0=0 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs ', - "EPSG:22832":'+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:22991":'+proj=tmerc +lat_0=30 +lon_0=35 +k=1 +x_0=300000 +y_0=1100000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs ', - "EPSG:22992":'+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=810000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs ', - "EPSG:22993":'+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=200000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs ', - "EPSG:22994":'+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=1200000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units=m +no_defs ', - "EPSG:23028":'+proj=utm +zone=28 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23029":'+proj=utm +zone=29 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23030":'+proj=utm +zone=30 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23031":'+proj=utm +zone=31 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23032":'+proj=utm +zone=32 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23033":'+proj=utm +zone=33 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23034":'+proj=utm +zone=34 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23035":'+proj=utm +zone=35 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23036":'+proj=utm +zone=36 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23037":'+proj=utm +zone=37 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23038":'+proj=utm +zone=38 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23090":'+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23095":'+proj=tmerc +lat_0=0 +lon_0=5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs ', - "EPSG:23239":'+proj=utm +zone=39 +ellps=clrk80 +towgs84=-346,-1,224,0,0,0,0 +units=m +no_defs ', - "EPSG:23240":'+proj=utm +zone=40 +ellps=clrk80 +towgs84=-346,-1,224,0,0,0,0 +units=m +no_defs ', - "EPSG:23433":'+proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:23700":'+proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +k_0=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67 +towgs84=52.17,-71.82,-14.9,0,0,0,0 +units=m +no_defs ', - "EPSG:23830":'+proj=tmerc +lat_0=0 +lon_0=94.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23831":'+proj=tmerc +lat_0=0 +lon_0=97.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23832":'+proj=tmerc +lat_0=0 +lon_0=100.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23833":'+proj=tmerc +lat_0=0 +lon_0=103.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23834":'+proj=tmerc +lat_0=0 +lon_0=106.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23835":'+proj=tmerc +lat_0=0 +lon_0=109.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23836":'+proj=tmerc +lat_0=0 +lon_0=112.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23837":'+proj=tmerc +lat_0=0 +lon_0=115.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23838":'+proj=tmerc +lat_0=0 +lon_0=118.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23839":'+proj=tmerc +lat_0=0 +lon_0=121.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23840":'+proj=tmerc +lat_0=0 +lon_0=124.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23841":'+proj=tmerc +lat_0=0 +lon_0=127.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23842":'+proj=tmerc +lat_0=0 +lon_0=130.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23843":'+proj=tmerc +lat_0=0 +lon_0=133.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23844":'+proj=tmerc +lat_0=0 +lon_0=136.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23845":'+proj=tmerc +lat_0=0 +lon_0=139.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23846":'+proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23847":'+proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23848":'+proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23849":'+proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23850":'+proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23851":'+proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23852":'+proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23853":'+proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23866":'+proj=utm +zone=46 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23867":'+proj=utm +zone=47 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23868":'+proj=utm +zone=48 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23869":'+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23870":'+proj=utm +zone=50 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23871":'+proj=utm +zone=51 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23872":'+proj=utm +zone=52 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23877":'+proj=utm +zone=47 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23878":'+proj=utm +zone=48 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23879":'+proj=utm +zone=49 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23880":'+proj=utm +zone=50 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23881":'+proj=utm +zone=51 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23882":'+proj=utm +zone=52 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23883":'+proj=utm +zone=53 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23884":'+proj=utm +zone=54 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:23886":'+proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23887":'+proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23888":'+proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23889":'+proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23890":'+proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23891":'+proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23892":'+proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23893":'+proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23894":'+proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554 +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs ', - "EPSG:23946":'+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs ', - "EPSG:23947":'+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs ', - "EPSG:23948":'+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +units=m +no_defs ', - "EPSG:24047":'+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +towgs84=210,814,289,0,0,0,0 +units=m +no_defs ', - "EPSG:24048":'+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +towgs84=210,814,289,0,0,0,0 +units=m +no_defs ', - "EPSG:24100":'+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167638.49597 +y_0=121918.90616 +a=6378249.144808011 +b=6356514.966204134 +to_meter=0.3047972654 +no_defs ', - "EPSG:24200":'+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250000 +y_0=150000 +ellps=clrk66 +towgs84=70,207,389.5,0,0,0,0 +units=m +no_defs ', - "EPSG:24305":'+proj=utm +zone=45 +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +units=m +no_defs ', - "EPSG:24306":'+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +units=m +no_defs ', - "EPSG:24311":'+proj=utm +zone=41 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs ', - "EPSG:24312":'+proj=utm +zone=42 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs ', - "EPSG:24313":'+proj=utm +zone=43 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs ', - "EPSG:24342":'+proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24343":'+proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24344":'+proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24345":'+proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24346":'+proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24347":'+proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24370":'+proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24371":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24372":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24373":'+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24374":'+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24375":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075.41314024 +towgs84=214,804,268,0,0,0,0 +units=m +no_defs ', - "EPSG:24376":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs ', - "EPSG:24377":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs ', - "EPSG:24378":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24379":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24380":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24381":'+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24382":'+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299.36559538 +b=6356098.359005156 +to_meter=0.9143985307444408 +no_defs ', - "EPSG:24383":'+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs ', - "EPSG:24500":'+proj=cass +lat_0=1.287646666666667 +lon_0=103.8530022222222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs ', - "EPSG:24547":'+proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs ', - "EPSG:24548":'+proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs ', - "EPSG:24571":'+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k=0.99984 +x_0=804671.2997750348 +y_0=0 +no_uoff +gamma=323.1301023611111 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587 +no_defs ', - "EPSG:24600":'+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.9987864078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +towgs84=-294.7,-200.1,525.5,0,0,0,0 +units=m +no_defs ', - "EPSG:24718":'+proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs ', - "EPSG:24719":'+proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs ', - "EPSG:24720":'+proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-357.9,0,0,0,0 +units=m +no_defs ', - "EPSG:24817":'+proj=utm +zone=17 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24818":'+proj=utm +zone=18 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24819":'+proj=utm +zone=19 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24820":'+proj=utm +zone=20 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24821":'+proj=utm +zone=21 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24877":'+proj=utm +zone=17 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24878":'+proj=utm +zone=18 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24879":'+proj=utm +zone=19 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24880":'+proj=utm +zone=20 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24881":'+proj=utm +zone=21 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24882":'+proj=utm +zone=22 +south +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24891":'+proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.99983008 +x_0=222000 +y_0=1426834.743 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24892":'+proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=720000 +y_0=1039979.159 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:24893":'+proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.99952992 +x_0=1324000 +y_0=1040084.558 +ellps=intl +towgs84=-288,175,-376,0,0,0,0 +units=m +no_defs ', - "EPSG:25000":'+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0 +units=m +no_defs ', - "EPSG:25231":'+proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:25391":'+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs ', - "EPSG:25392":'+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs ', - "EPSG:25393":'+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs ', - "EPSG:25394":'+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs ', - "EPSG:25395":'+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units=m +no_defs ', - "EPSG:25700":'+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm=jakarta +units=m +no_defs ', - "EPSG:25828":'+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25829":'+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25830":'+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25831":'+proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25832":'+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25833":'+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25834":'+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25835":'+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25836":'+proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25837":'+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25838":'+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25884":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:25932":'+proj=utm +zone=32 +south +ellps=intl +towgs84=-254.1,-5.36,-100.29,0,0,0,0 +units=m +no_defs ', - "EPSG:26191":'+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs ', - "EPSG:26192":'+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.9996155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs ', - "EPSG:26193":'+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.9996 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs ', - "EPSG:26194":'+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999616304 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs ', - "EPSG:26195":'+proj=lcc +lat_1=22.5 +lat_0=22.5 +lon_0=-5.4 +k_0=0.999616437 +x_0=1500000 +y_0=400000 +a=6378249.2 +b=6356515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs ', - "EPSG:26237":'+proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0,0,0 +units=m +no_defs ', - "EPSG:26331":'+proj=utm +zone=31 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs ', - "EPSG:26332":'+proj=utm +zone=32 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs ', - "EPSG:26391":'+proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.99975 +x_0=230738.26 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs ', - "EPSG:26392":'+proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.99975 +x_0=670553.98 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs ', - "EPSG:26393":'+proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.99975 +x_0=1110369.7 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +units=m +no_defs ', - "EPSG:26432":'+proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-4.11,-96.38,0,0,0,0 +units=m +no_defs ', - "EPSG:26591":'+proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +pm=rome +units=m +no_defs ', - "EPSG:26592":'+proj=tmerc +lat_0=0 +lon_0=2.54766666666666 +k=0.9996 +x_0=2520000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +pm=rome +units=m +no_defs ', - "EPSG:26632":'+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-74,-130,42,0,0,0,0 +units=m +no_defs ', - "EPSG:26692":'+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +towgs84=-74,-130,42,0,0,0,0 +units=m +no_defs ', - "EPSG:26701":'+proj=utm +zone=1 +datum=NAD27 +units=m +no_defs ', - "EPSG:26702":'+proj=utm +zone=2 +datum=NAD27 +units=m +no_defs ', - "EPSG:26703":'+proj=utm +zone=3 +datum=NAD27 +units=m +no_defs ', - "EPSG:26704":'+proj=utm +zone=4 +datum=NAD27 +units=m +no_defs ', - "EPSG:26705":'+proj=utm +zone=5 +datum=NAD27 +units=m +no_defs ', - "EPSG:26706":'+proj=utm +zone=6 +datum=NAD27 +units=m +no_defs ', - "EPSG:26707":'+proj=utm +zone=7 +datum=NAD27 +units=m +no_defs ', - "EPSG:26708":'+proj=utm +zone=8 +datum=NAD27 +units=m +no_defs ', - "EPSG:26709":'+proj=utm +zone=9 +datum=NAD27 +units=m +no_defs ', - "EPSG:26710":'+proj=utm +zone=10 +datum=NAD27 +units=m +no_defs ', - "EPSG:26711":'+proj=utm +zone=11 +datum=NAD27 +units=m +no_defs ', - "EPSG:26712":'+proj=utm +zone=12 +datum=NAD27 +units=m +no_defs ', - "EPSG:26713":'+proj=utm +zone=13 +datum=NAD27 +units=m +no_defs ', - "EPSG:26714":'+proj=utm +zone=14 +datum=NAD27 +units=m +no_defs ', - "EPSG:26715":'+proj=utm +zone=15 +datum=NAD27 +units=m +no_defs ', - "EPSG:26716":'+proj=utm +zone=16 +datum=NAD27 +units=m +no_defs ', - "EPSG:26717":'+proj=utm +zone=17 +datum=NAD27 +units=m +no_defs ', - "EPSG:26718":'+proj=utm +zone=18 +datum=NAD27 +units=m +no_defs ', - "EPSG:26719":'+proj=utm +zone=19 +datum=NAD27 +units=m +no_defs ', - "EPSG:26720":'+proj=utm +zone=20 +datum=NAD27 +units=m +no_defs ', - "EPSG:26721":'+proj=utm +zone=21 +datum=NAD27 +units=m +no_defs ', - "EPSG:26722":'+proj=utm +zone=22 +datum=NAD27 +units=m +no_defs ', - "EPSG:26729":'+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26730":'+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26731":'+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5000000.001016002 +no_uoff +gamma=323.1301023611111 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26732":'+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26733":'+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26734":'+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26735":'+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26736":'+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26737":'+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=213360.4267208534 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26738":'+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26739":'+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=182880.3657607315 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26740":'+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26741":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26742":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26743":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26744":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26745":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26746":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26747":'+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=127079.524511049 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26748":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26749":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26750":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26751":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26752":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26753":'+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26754":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26755":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26756":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26757":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26758":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26759":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26760":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26766":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26767":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26768":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26769":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26770":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26771":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26772":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26773":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26774":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26775":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26776":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26777":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26778":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26779":'+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26780":'+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26781":'+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26782":'+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26783":'+proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26784":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26785":'+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26786":'+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26787":'+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26791":'+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26792":'+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=45 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26793":'+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26794":'+proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26795":'+proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26796":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26797":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26798":'+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26799":'+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +x_0=1276106.450596901 +y_0=1268253.006858014 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:26801":'+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.999942857 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26802":'+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26803":'+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26811":'+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26812":'+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43.31666666666667 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26813":'+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-ft +no_defs ', - "EPSG:26814":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26815":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26819":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26820":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26821":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26822":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26823":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26824":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26825":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26826":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26830":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26831":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26832":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26833":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26834":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26835":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26836":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26837":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26841":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26842":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26843":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26844":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26845":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26846":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26847":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26848":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26849":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26850":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26851":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26852":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26853":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26854":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26855":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26856":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26857":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26858":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26859":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26860":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26861":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26862":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26863":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26864":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26865":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26866":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26867":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26868":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26869":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26870":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:26891":'+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26892":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26893":'+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26894":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26895":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26896":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26897":'+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26898":'+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26899":'+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26901":'+proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26902":'+proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26903":'+proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26904":'+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26905":'+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26906":'+proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26907":'+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26908":'+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26909":'+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26910":'+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26911":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26912":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26913":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26914":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26915":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26916":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26917":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26918":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26919":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26920":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26921":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26922":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26923":'+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26929":'+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.99996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26930":'+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26931":'+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=323.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +no_uoff +gamma=323.1301023611111 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26932":'+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26933":'+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26934":'+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26935":'+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26936":'+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26937":'+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26938":'+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26939":'+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26940":'+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26941":'+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26942":'+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26943":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26944":'+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26945":'+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26946":'+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26948":'+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26949":'+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26950":'+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26951":'+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26952":'+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32.66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26953":'+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26954":'+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.83333333333334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26955":'+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26956":'+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40.83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=152400.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26957":'+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26958":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26959":'+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26960":'+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26961":'+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26962":'+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26963":'+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26964":'+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0.99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26965":'+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26966":'+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26967":'+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26968":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26969":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.9999473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26970":'+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0.999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26971":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26972":'+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26973":'+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.999966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26974":'+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.999966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26975":'+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26976":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26977":'+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26978":'+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26979":'+proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26980":'+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26981":'+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26982":'+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26983":'+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26984":'+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26985":'+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26986":'+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26987":'+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26988":'+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26989":'+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43.31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26990":'+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26991":'+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26992":'+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=45 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26993":'+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26994":'+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.99995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26995":'+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.99995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26996":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.999933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26997":'+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.999933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:26998":'+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.999941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:27037":'+proj=utm +zone=37 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs ', - "EPSG:27038":'+proj=utm +zone=38 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs ', - "EPSG:27039":'+proj=utm +zone=39 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs ', - "EPSG:27040":'+proj=utm +zone=40 +ellps=clrk80 +towgs84=-242.2,-144.9,370.3,0,0,0,0 +units=m +no_defs ', - "EPSG:27120":'+proj=utm +zone=20 +ellps=intl +towgs84=-10,375,165,0,0,0,0 +units=m +no_defs ', - "EPSG:27200":'+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27205":'+proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.9999 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27206":'+proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.46619725 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27207":'+proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27208":'+proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805277778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27209":'+proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.22801175 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27210":'+proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27211":'+proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27212":'+proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27213":'+proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27214":'+proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27215":'+proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168055555 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27216":'+proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27217":'+proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600555556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27218":'+proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713055556 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27219":'+proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333888889 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27220":'+proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741111111 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27221":'+proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27222":'+proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27223":'+proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27224":'+proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27225":'+proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484722222 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27226":'+proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508333333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27227":'+proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550833333 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27228":'+proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411944444 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27229":'+proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617777778 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27230":'+proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951666667 +k=1 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27231":'+proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891111111 +k=0.99996 +x_0=300000 +y_0=700000 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27232":'+proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 +k=1 +x_0=300002.66 +y_0=699999.58 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27258":'+proj=utm +zone=58 +south +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27259":'+proj=utm +zone=59 +south +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27260":'+proj=utm +zone=60 +south +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +units=m +no_defs ', - "EPSG:27291":'+proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.5243848086 +y_0=365759.3658464114 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +to_meter=0.9143984146160287 +no_defs ', - "EPSG:27292":'+proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1 +x_0=457199.2073080143 +y_0=457199.2073080143 +ellps=intl +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +to_meter=0.9143984146160287 +no_defs ', - "EPSG:27391":'+proj=tmerc +lat_0=58 +lon_0=-4.666666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27392":'+proj=tmerc +lat_0=58 +lon_0=-2.333333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27393":'+proj=tmerc +lat_0=58 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27394":'+proj=tmerc +lat_0=58 +lon_0=2.5 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27395":'+proj=tmerc +lat_0=58 +lon_0=6.166666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27396":'+proj=tmerc +lat_0=58 +lon_0=10.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27397":'+proj=tmerc +lat_0=58 +lon_0=14.16666666666667 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27398":'+proj=tmerc +lat_0=58 +lon_0=18.33333333333333 +k=1 +x_0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs ', - "EPSG:27429":'+proj=utm +zone=29 +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs ', - "EPSG:27492":'+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs ', - "EPSG:27493":'+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps=intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +no_defs ', - "EPSG:27500":'+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=5.399999999999999 +k_0=0.99950908 +x_0=500000 +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=2.337208333333333 +units=m +no_defs ', - "EPSG:27561":'+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27562":'+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27563":'+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27564":'+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27571":'+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27572":'+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27573":'+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27574":'+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27581":'+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27582":'+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27583":'+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27584":'+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27591":'+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27592":'+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27593":'+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27594":'+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.369 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:27700":'+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs ', - "EPSG:28191":'+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs ', - "EPSG:28192":'+proj=tmerc +lat_0=31.73409694444445 +lon_0=35.21208055555556 +k=1 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs ', - "EPSG:28193":'+proj=cass +lat_0=31.73409694444445 +lon_0=35.21208055555556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +units=m +no_defs ', - "EPSG:28232":'+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +towgs84=-148,51,-291,0,0,0,0 +units=m +no_defs ', - "EPSG:28348":'+proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28349":'+proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28350":'+proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28351":'+proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28352":'+proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28353":'+proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28354":'+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28355":'+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28356":'+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28357":'+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28358":'+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:28402":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28403":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28404":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28405":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28406":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28407":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28408":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28409":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28410":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28411":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28412":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28413":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28414":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28415":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28416":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28417":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28418":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28419":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28420":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28421":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28422":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28423":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28424":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28425":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28426":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28427":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28428":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28429":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28430":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28431":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28432":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28462":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28463":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28464":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28465":'+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28466":'+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28467":'+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28468":'+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28469":'+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28470":'+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28471":'+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28472":'+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28473":'+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28474":'+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28475":'+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28476":'+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28477":'+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28478":'+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28479":'+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28480":'+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28481":'+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28482":'+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28483":'+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28484":'+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28485":'+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28486":'+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28487":'+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28488":'+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28489":'+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28490":'+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28491":'+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28492":'+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs ', - "EPSG:28600":'+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.99999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-128.16,-282.42,21.93,0,0,0,0 +units=m +no_defs ', - "EPSG:28991":'+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725 +units=m +no_defs ', - "EPSG:28992":'+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725 +units=m +no_defs ', - "EPSG:29100":'+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29101":'+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=10000000 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29118":'+proj=utm +zone=18 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29119":'+proj=utm +zone=19 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29120":'+proj=utm +zone=20 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29121":'+proj=utm +zone=21 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29122":'+proj=utm +zone=22 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29168":'+proj=utm +zone=18 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29169":'+proj=utm +zone=19 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29170":'+proj=utm +zone=20 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29171":'+proj=utm +zone=21 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29172":'+proj=utm +zone=22 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29177":'+proj=utm +zone=17 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29178":'+proj=utm +zone=18 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29179":'+proj=utm +zone=19 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29180":'+proj=utm +zone=20 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29181":'+proj=utm +zone=21 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29182":'+proj=utm +zone=22 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29183":'+proj=utm +zone=23 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29184":'+proj=utm +zone=24 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29185":'+proj=utm +zone=25 +south +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29187":'+proj=utm +zone=17 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29188":'+proj=utm +zone=18 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29189":'+proj=utm +zone=19 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29190":'+proj=utm +zone=20 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29191":'+proj=utm +zone=21 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29192":'+proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29193":'+proj=utm +zone=23 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29194":'+proj=utm +zone=24 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29195":'+proj=utm +zone=25 +south +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no_defs ', - "EPSG:29220":'+proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs ', - "EPSG:29221":'+proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,72,0,0,0,0 +units=m +no_defs ', - "EPSG:29333":'+proj=utm +zone=33 +south +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +units=m +no_defs ', - "EPSG:29371":'+proj=tmerc +lat_0=-22 +lon_0=11 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29373":'+proj=tmerc +lat_0=-22 +lon_0=13 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29375":'+proj=tmerc +lat_0=-22 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29377":'+proj=tmerc +lat_0=-22 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29379":'+proj=tmerc +lat_0=-22 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29381":'+proj=tmerc +lat_0=-22 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29383":'+proj=tmerc +lat_0=-22 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29385":'+proj=tmerc +lat_0=-22 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_meter=1.0000135965 +no_defs ', - "EPSG:29635":'+proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:29636":'+proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:29700":'+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +gamma=18.9 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:29702":'+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha=18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +gamma=18.9 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=paris +units=m +no_defs ', - "EPSG:29738":'+proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs ', - "EPSG:29739":'+proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +units=m +no_defs ', - "EPSG:29849":'+proj=utm +zone=49 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +units=m +no_defs ', - "EPSG:29850":'+proj=utm +zone=50 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +units=m +no_defs ', - "EPSG:29871":'+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8714630401 +y_0=442857.653094361 +gamma=53.13010236111111 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +to_meter=20.11676512155263 +no_defs ', - "EPSG:29872":'+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.8727431979 +y_0=442857.6545573985 +gamma=53.13010236111111 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +to_meter=0.3047994715386762 +no_defs ', - "EPSG:29873":'+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 +k=0.99984 +x_0=590476.87 +y_0=442857.65 +gamma=53.13010236111111 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +units=m +no_defs ', - "EPSG:29900":'+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs ', - "EPSG:29901":'+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1 +x_0=200000 +y_0=250000 +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs ', - "EPSG:29902":'+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs ', - "EPSG:29903":'+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +ellps=mod_airy +towgs84=482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs ', - "EPSG:30161":'+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30162":'+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30163":'+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30164":'+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30165":'+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30166":'+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30167":'+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30168":'+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30169":'+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30170":'+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30171":'+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30172":'+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30173":'+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30174":'+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30175":'+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30176":'+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30177":'+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30178":'+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30179":'+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +units=m +no_defs ', - "EPSG:30200":'+proj=cass +lat_0=10.44166666666667 +lon_0=-61.33333333333334 +x_0=86501.46392051999 +y_0=65379.0134283 +a=6378293.645208759 +b=6356617.987679838 +towgs84=-61.702,284.488,472.052,0,0,0,0 +to_meter=0.201166195164 +no_defs ', - "EPSG:30339":'+proj=utm +zone=39 +ellps=helmert +units=m +no_defs ', - "EPSG:30340":'+proj=utm +zone=40 +ellps=helmert +units=m +no_defs ', - "EPSG:30491":'+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs ', - "EPSG:30492":'+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs84=-73,-247,227,0,0,0,0 +units=m +no_defs ', - "EPSG:30493":'+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:30494":'+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:30729":'+proj=utm +zone=29 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30730":'+proj=utm +zone=30 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30731":'+proj=utm +zone=31 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30732":'+proj=utm +zone=32 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30791":'+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.999625544 +x_0=500135 +y_0=300090 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30792":'+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.999625769 +x_0=500135 +y_0=300090 +ellps=clrk80 +towgs84=-209.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_defs ', - "EPSG:30800":'+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ', - "EPSG:31028":'+proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m +no_defs ', - "EPSG:31121":'+proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs ', - "EPSG:31154":'+proj=tmerc +lat_0=0 +lon_0=-54 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs ', - "EPSG:31170":'+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs ', - "EPSG:31171":'+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9999 +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m +no_defs ', - "EPSG:31251":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31252":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31253":'+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31254":'+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31255":'+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31256":'+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=0 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31257":'+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31258":'+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31259":'+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=-5000000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31265":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31266":'+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31267":'+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31268":'+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31275":'+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31276":'+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31277":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31278":'+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31279":'+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31281":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31282":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31283":'+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31284":'+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31285":'+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31286":'+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31287":'+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31288":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31289":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31290":'+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31291":'+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31292":'+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31293":'+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m +no_defs ', - "EPSG:31294":'+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0=150000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31295":'+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0=450000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31296":'+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0=750000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31297":'+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs ', - "EPSG:31300":'+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=90 +lon_0=4.356939722222222 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl +towgs84=-106.869,52.2978,-103.724,0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs ', - "EPSG:31370":'+proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=-106.869,52.2978,-103.724,0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs ', - "EPSG:31461":'+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31462":'+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31463":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31464":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31465":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31466":'+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31467":'+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31468":'+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31469":'+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs ', - "EPSG:31528":'+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs ', - "EPSG:31529":'+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs ', - "EPSG:31600":'+proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9996667 +x_0=500000 +y_0=500000 +ellps=intl +towgs84=103.25,-100.4,-307.19,0,0,0,0 +units=m +no_defs ', - "EPSG:31700":'+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass +towgs84=28,-121,-77,0,0,0,0 +units=m +no_defs ', - "EPSG:31838":'+proj=utm +zone=38 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs ', - "EPSG:31839":'+proj=utm +zone=39 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,0 +units=m +no_defs ', - "EPSG:31900":'+proj=tmerc +lat_0=0 +lon_0=48 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +units=m +no_defs ', - "EPSG:31901":'+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +units=m +no_defs ', - "EPSG:31965":'+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31966":'+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31967":'+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31968":'+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31969":'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31970":'+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31971":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31972":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31973":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31974":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31975":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31976":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31977":'+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31978":'+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31979":'+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31980":'+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31981":'+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31982":'+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31983":'+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31984":'+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31985":'+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31986":'+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31987":'+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31988":'+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31989":'+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31990":'+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31991":'+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31992":'+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31993":'+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31994":'+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31995":'+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31996":'+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31997":'+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31998":'+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:31999":'+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32000":'+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32001":'+proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=47 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32002":'+proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=45.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32003":'+proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32005":'+proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=41.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32006":'+proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32007":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32008":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32009":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32010":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32011":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666666667 +k=0.9999749999999999 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32012":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32013":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32014":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32015":'+proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32016":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32017":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32018":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32019":'+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32020":'+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32021":'+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32022":'+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32023":'+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32024":'+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32025":'+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32026":'+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32027":'+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32028":'+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32029":'+proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32030":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9999938 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32031":'+proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32033":'+proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32034":'+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32035":'+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32036":'+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=34.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32037":'+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=34 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32038":'+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32039":'+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32040":'+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32041":'+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32042":'+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32043":'+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32044":'+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32045":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32046":'+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32047":'+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32048":'+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47 +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32049":'+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32050":'+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32051":'+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32052":'+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32053":'+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32054":'+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32055":'+proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32056":'+proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32057":'+proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32058":'+proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32061":'+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=500000 +y_0=292209.579 +datum=NAD27 +units=m +no_defs ', - "EPSG:32062":'+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +datum=NAD27 +units=m +no_defs ', - "EPSG:32064":'+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32065":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32066":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32067":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32074":'+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32075":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32076":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32077":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32081":'+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32082":'+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32083":'+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32084":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32085":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32086":'+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32098":'+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs ', - "EPSG:32099":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs ', - "EPSG:32100":'+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32104":'+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32107":'+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0.9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32108":'+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0.9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32109":'+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0.9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32110":'+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.999966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32111":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32112":'+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32113":'+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32114":'+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32115":'+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32116":'+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.9999375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32117":'+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.9999375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32118":'+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32119":'+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32120":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32121":'+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32122":'+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39.66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32123":'+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32124":'+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32125":'+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32126":'+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.66666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32127":'+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.66666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32128":'+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=40.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32129":'+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32130":'+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.99999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32133":'+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32134":'+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32135":'+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42.33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32136":'+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=34.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32137":'+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=34 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32138":'+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32139":'+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32140":'+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32141":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32142":'+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32143":'+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=38.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32144":'+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=36.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32145":'+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32146":'+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37.66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32147":'+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32148":'+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47 +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32149":'+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32150":'+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32151":'+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32152":'+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32153":'+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32154":'+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32155":'+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32156":'+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32157":'+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32158":'+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32161":'+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32164":'+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:32165":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:32166":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:32167":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs ', - "EPSG:32180":'+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32181":'+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32182":'+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32183":'+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32184":'+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32185":'+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32186":'+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32187":'+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32188":'+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32189":'+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32190":'+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32191":'+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32192":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32193":'+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32194":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32195":'+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32196":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32197":'+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32198":'+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32199":'+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32201":'+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32202":'+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32203":'+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32204":'+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32205":'+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32206":'+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32207":'+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32208":'+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32209":'+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32210":'+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32211":'+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32212":'+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32213":'+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32214":'+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32215":'+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32216":'+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32217":'+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32218":'+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32219":'+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32220":'+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32221":'+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32222":'+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32223":'+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32224":'+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32225":'+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32226":'+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32227":'+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32228":'+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32229":'+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32230":'+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32231":'+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32232":'+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32233":'+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32234":'+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32235":'+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32236":'+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32237":'+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32238":'+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32239":'+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32240":'+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32241":'+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32242":'+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32243":'+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32244":'+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32245":'+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32246":'+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32247":'+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32248":'+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32249":'+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32250":'+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32251":'+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32252":'+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32253":'+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32254":'+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32255":'+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32256":'+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32257":'+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32258":'+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32259":'+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32260":'+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32301":'+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32302":'+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32303":'+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32304":'+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32305":'+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32306":'+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32307":'+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32308":'+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32309":'+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32310":'+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32311":'+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32312":'+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32313":'+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32314":'+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32315":'+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32316":'+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32317":'+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32318":'+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32319":'+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32320":'+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32321":'+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32322":'+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32323":'+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32324":'+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32325":'+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32326":'+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32327":'+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32328":'+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32329":'+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32330":'+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32331":'+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32332":'+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32333":'+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32334":'+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32335":'+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32336":'+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32337":'+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32338":'+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32339":'+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32340":'+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32341":'+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32342":'+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32343":'+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32344":'+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32345":'+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32346":'+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32347":'+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32348":'+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32349":'+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32350":'+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32351":'+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32352":'+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32353":'+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32354":'+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32355":'+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32356":'+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32357":'+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32358":'+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32359":'+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32360":'+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.2263 +units=m +no_defs ', - "EPSG:32401":'+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32402":'+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32403":'+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32404":'+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32405":'+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32406":'+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32407":'+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32408":'+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32409":'+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32410":'+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32411":'+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32412":'+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32413":'+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32414":'+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32415":'+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32416":'+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32417":'+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32418":'+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32419":'+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32420":'+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32421":'+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32422":'+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32423":'+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32424":'+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32425":'+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32426":'+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32427":'+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32428":'+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32429":'+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32430":'+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32431":'+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32432":'+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32433":'+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32434":'+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32435":'+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32436":'+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32437":'+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32438":'+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32439":'+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32440":'+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32441":'+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32442":'+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32443":'+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32444":'+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32445":'+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32446":'+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32447":'+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32448":'+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32449":'+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32450":'+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32451":'+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32452":'+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32453":'+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32454":'+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32455":'+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32456":'+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32457":'+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32458":'+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32459":'+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32460":'+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32501":'+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32502":'+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32503":'+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32504":'+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32505":'+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32506":'+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32507":'+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32508":'+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32509":'+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32510":'+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32511":'+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32512":'+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32513":'+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32514":'+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32515":'+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32516":'+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32517":'+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32518":'+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32519":'+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32520":'+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32521":'+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32522":'+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32523":'+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32524":'+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32525":'+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32526":'+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32527":'+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32528":'+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32529":'+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32530":'+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32531":'+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32532":'+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32533":'+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32534":'+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32535":'+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32536":'+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32537":'+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32538":'+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32539":'+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32540":'+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32541":'+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32542":'+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32543":'+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32544":'+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32545":'+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32546":'+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32547":'+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32548":'+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32549":'+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32550":'+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32551":'+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32552":'+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32553":'+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32554":'+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32555":'+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32556":'+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32557":'+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32558":'+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32559":'+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32560":'+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs ', - "EPSG:32601":'+proj=utm +zone=1 +datum=WGS84 +units=m +no_defs ', - "EPSG:32602":'+proj=utm +zone=2 +datum=WGS84 +units=m +no_defs ', - "EPSG:32603":'+proj=utm +zone=3 +datum=WGS84 +units=m +no_defs ', - "EPSG:32604":'+proj=utm +zone=4 +datum=WGS84 +units=m +no_defs ', - "EPSG:32605":'+proj=utm +zone=5 +datum=WGS84 +units=m +no_defs ', - "EPSG:32606":'+proj=utm +zone=6 +datum=WGS84 +units=m +no_defs ', - "EPSG:32607":'+proj=utm +zone=7 +datum=WGS84 +units=m +no_defs ', - "EPSG:32608":'+proj=utm +zone=8 +datum=WGS84 +units=m +no_defs ', - "EPSG:32609":'+proj=utm +zone=9 +datum=WGS84 +units=m +no_defs ', - "EPSG:32610":'+proj=utm +zone=10 +datum=WGS84 +units=m +no_defs ', - "EPSG:32611":'+proj=utm +zone=11 +datum=WGS84 +units=m +no_defs ', - "EPSG:32612":'+proj=utm +zone=12 +datum=WGS84 +units=m +no_defs ', - "EPSG:32613":'+proj=utm +zone=13 +datum=WGS84 +units=m +no_defs ', - "EPSG:32614":'+proj=utm +zone=14 +datum=WGS84 +units=m +no_defs ', - "EPSG:32615":'+proj=utm +zone=15 +datum=WGS84 +units=m +no_defs ', - "EPSG:32616":'+proj=utm +zone=16 +datum=WGS84 +units=m +no_defs ', - "EPSG:32617":'+proj=utm +zone=17 +datum=WGS84 +units=m +no_defs ', - "EPSG:32618":'+proj=utm +zone=18 +datum=WGS84 +units=m +no_defs ', - "EPSG:32619":'+proj=utm +zone=19 +datum=WGS84 +units=m +no_defs ', - "EPSG:32620":'+proj=utm +zone=20 +datum=WGS84 +units=m +no_defs ', - "EPSG:32621":'+proj=utm +zone=21 +datum=WGS84 +units=m +no_defs ', - "EPSG:32622":'+proj=utm +zone=22 +datum=WGS84 +units=m +no_defs ', - "EPSG:32623":'+proj=utm +zone=23 +datum=WGS84 +units=m +no_defs ', - "EPSG:32624":'+proj=utm +zone=24 +datum=WGS84 +units=m +no_defs ', - "EPSG:32625":'+proj=utm +zone=25 +datum=WGS84 +units=m +no_defs ', - "EPSG:32626":'+proj=utm +zone=26 +datum=WGS84 +units=m +no_defs ', - "EPSG:32627":'+proj=utm +zone=27 +datum=WGS84 +units=m +no_defs ', - "EPSG:32628":'+proj=utm +zone=28 +datum=WGS84 +units=m +no_defs ', - "EPSG:32629":'+proj=utm +zone=29 +datum=WGS84 +units=m +no_defs ', - "EPSG:32630":'+proj=utm +zone=30 +datum=WGS84 +units=m +no_defs ', - "EPSG:32631":'+proj=utm +zone=31 +datum=WGS84 +units=m +no_defs ', - "EPSG:32632":'+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs ', - "EPSG:32633":'+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs ', - "EPSG:32634":'+proj=utm +zone=34 +datum=WGS84 +units=m +no_defs ', - "EPSG:32635":'+proj=utm +zone=35 +datum=WGS84 +units=m +no_defs ', - "EPSG:32636":'+proj=utm +zone=36 +datum=WGS84 +units=m +no_defs ', - "EPSG:32637":'+proj=utm +zone=37 +datum=WGS84 +units=m +no_defs ', - "EPSG:32638":'+proj=utm +zone=38 +datum=WGS84 +units=m +no_defs ', - "EPSG:32639":'+proj=utm +zone=39 +datum=WGS84 +units=m +no_defs ', - "EPSG:32640":'+proj=utm +zone=40 +datum=WGS84 +units=m +no_defs ', - "EPSG:32641":'+proj=utm +zone=41 +datum=WGS84 +units=m +no_defs ', - "EPSG:32642":'+proj=utm +zone=42 +datum=WGS84 +units=m +no_defs ', - "EPSG:32643":'+proj=utm +zone=43 +datum=WGS84 +units=m +no_defs ', - "EPSG:32644":'+proj=utm +zone=44 +datum=WGS84 +units=m +no_defs ', - "EPSG:32645":'+proj=utm +zone=45 +datum=WGS84 +units=m +no_defs ', - "EPSG:32646":'+proj=utm +zone=46 +datum=WGS84 +units=m +no_defs ', - "EPSG:32647":'+proj=utm +zone=47 +datum=WGS84 +units=m +no_defs ', - "EPSG:32648":'+proj=utm +zone=48 +datum=WGS84 +units=m +no_defs ', - "EPSG:32649":'+proj=utm +zone=49 +datum=WGS84 +units=m +no_defs ', - "EPSG:32650":'+proj=utm +zone=50 +datum=WGS84 +units=m +no_defs ', - "EPSG:32651":'+proj=utm +zone=51 +datum=WGS84 +units=m +no_defs ', - "EPSG:32652":'+proj=utm +zone=52 +datum=WGS84 +units=m +no_defs ', - "EPSG:32653":'+proj=utm +zone=53 +datum=WGS84 +units=m +no_defs ', - "EPSG:32654":'+proj=utm +zone=54 +datum=WGS84 +units=m +no_defs ', - "EPSG:32655":'+proj=utm +zone=55 +datum=WGS84 +units=m +no_defs ', - "EPSG:32656":'+proj=utm +zone=56 +datum=WGS84 +units=m +no_defs ', - "EPSG:32657":'+proj=utm +zone=57 +datum=WGS84 +units=m +no_defs ', - "EPSG:32658":'+proj=utm +zone=58 +datum=WGS84 +units=m +no_defs ', - "EPSG:32659":'+proj=utm +zone=59 +datum=WGS84 +units=m +no_defs ', - "EPSG:32660":'+proj=utm +zone=60 +datum=WGS84 +units=m +no_defs ', - "EPSG:32661":'+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:32662":'+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs ', - "EPSG:32663":'+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ', - "EPSG:32664":'+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs ', - "EPSG:32665":'+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs ', - "EPSG:32666":'+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs ', - "EPSG:32667":'+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs ', - "EPSG:32701":'+proj=utm +zone=1 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32702":'+proj=utm +zone=2 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32703":'+proj=utm +zone=3 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32704":'+proj=utm +zone=4 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32705":'+proj=utm +zone=5 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32706":'+proj=utm +zone=6 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32707":'+proj=utm +zone=7 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32708":'+proj=utm +zone=8 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32709":'+proj=utm +zone=9 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32710":'+proj=utm +zone=10 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32711":'+proj=utm +zone=11 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32712":'+proj=utm +zone=12 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32713":'+proj=utm +zone=13 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32714":'+proj=utm +zone=14 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32715":'+proj=utm +zone=15 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32716":'+proj=utm +zone=16 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32717":'+proj=utm +zone=17 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32718":'+proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32719":'+proj=utm +zone=19 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32720":'+proj=utm +zone=20 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32721":'+proj=utm +zone=21 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32722":'+proj=utm +zone=22 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32723":'+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32724":'+proj=utm +zone=24 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32725":'+proj=utm +zone=25 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32726":'+proj=utm +zone=26 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32727":'+proj=utm +zone=27 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32728":'+proj=utm +zone=28 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32729":'+proj=utm +zone=29 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32730":'+proj=utm +zone=30 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32731":'+proj=utm +zone=31 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32732":'+proj=utm +zone=32 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32733":'+proj=utm +zone=33 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32734":'+proj=utm +zone=34 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32735":'+proj=utm +zone=35 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32736":'+proj=utm +zone=36 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32737":'+proj=utm +zone=37 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32738":'+proj=utm +zone=38 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32739":'+proj=utm +zone=39 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32740":'+proj=utm +zone=40 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32741":'+proj=utm +zone=41 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32742":'+proj=utm +zone=42 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32743":'+proj=utm +zone=43 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32744":'+proj=utm +zone=44 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32745":'+proj=utm +zone=45 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32746":'+proj=utm +zone=46 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32747":'+proj=utm +zone=47 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32748":'+proj=utm +zone=48 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32749":'+proj=utm +zone=49 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32750":'+proj=utm +zone=50 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32751":'+proj=utm +zone=51 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32752":'+proj=utm +zone=52 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32753":'+proj=utm +zone=53 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32754":'+proj=utm +zone=54 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32755":'+proj=utm +zone=55 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32756":'+proj=utm +zone=56 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32757":'+proj=utm +zone=57 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32758":'+proj=utm +zone=58 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32759":'+proj=utm +zone=59 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32760":'+proj=utm +zone=60 +south +datum=WGS84 +units=m +no_defs ', - "EPSG:32761":'+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs ', - "EPSG:32766":'+proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs ' -}; - -},{}],78:[function(require,module,exports){ -var util = require('util') - , fileType = require('file-type'); - -var TileCreator = require('./index').TileCreator - , TileBoundingBoxUtils = require('../tileBoundingBoxUtils') - , TileUtilities = require('./tileUtilities') - , ProjectTile = require('./projectTile.js'); - -function CanvasTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas) { - TileCreator.apply(this, arguments); - this.canvas = canvas || document.createElement('canvas'); - this.canvas.width = width; - this.canvas.height = height; - this.ctx = this.canvas.getContext('2d'); - - this.image = document.createElement('img'); - - this.tileCanvas = document.createElement('canvas'); - this.tileContext = this.tileCanvas.getContext('2d'); - this.tileCanvas.width = tileMatrix.tile_width; - this.tileCanvas.height = tileMatrix.tile_height; - - this.imageData = new Uint8ClampedArray(width * height * 4); -} - -util.inherits(CanvasTileCreator, TileCreator); - -CanvasTileCreator.prototype.addPixel = function (targetX, targetY, sourceX, sourceY) { - var color = this.tileContext.getImageData(sourceX, sourceY, 1, 1); - this.imageData.set(color.data, (targetY * this.width * 4) + (targetX * 4)); -}; - -CanvasTileCreator.prototype.addTile = function (tileData, gridColumn, gridRow) { - var bb = TileBoundingBoxUtils.getTileBoundingBox(this.tileMatrixSet.getBoundingBox(), this.tileMatrix, gridColumn, gridRow); - - var type = fileType(tileData); - var binary = ''; - var bytes = tileData; - var len = bytes.byteLength; - for (var i = 0; i < len; i++) { - binary += String.fromCharCode( bytes[ i ] ); - } - var base64Data = btoa( binary ); - - return new Promise(function(resolve, reject) { - this.chunks = []; - this.image.onload = function() { - resolve(this.tileContext.drawImage(this.image, 0, 0)); - }.bind(this); - this.image.src = 'data:'+type.mime+';base64,' + base64Data; - }.bind(this)) - .then(function() { - return this.projectTile(tileData, gridColumn, gridRow); - }.bind(this)) - .then(function() { - if (this.chunks && this.chunks.length) { - return this.chunks.reduce(function(sequence, chunk) { - var type = fileType(tileData); - - var binary = ''; - var bytes = chunk.chunk; - var len = bytes.byteLength; - for (var i = 0; i < len; i++) { - binary += String.fromCharCode( bytes[ i ] ); - } - - var base64DataChunk = btoa( binary ); - var image = document.createElement('img'); - - return sequence.then(function() { - return new Promise(function(resolve, reject) { - image.onload = function() { - var p = chunk.position; - - this.ctx.drawImage(image, - p.sx, - p.sy, - p.sWidth, - p.sHeight, - p.dx, - p.dy, - p.dWidth, - p.dHeight - ); - resolve(); - }.bind(this); - image.src = 'data:'+type.mime+';base64,' + base64DataChunk; - }.bind(this)); - }.bind(this)); - - }.bind(this), Promise.resolve()); - } - }.bind(this)); -}; - -CanvasTileCreator.prototype.getCompleteTile = function (format, callback) { - return this.canvas.toDataURL(); -}; - -CanvasTileCreator.prototype.reproject = function (tileData, tilePieceBoundingBox) { - var ctx = this.ctx; - var width = this.width; - var height = this.height; - - var piecePosition = TileUtilities.getPiecePosition(tilePieceBoundingBox, this.tileBoundingBox, this.height, this.width, this.projectionTo, this.projectionFrom, this.projectionFromDefinition, this.tileHeightUnitsPerPixel, this.tileWidthUnitsPerPixel, this.tileMatrix.pixel_x_size, this.tileMatrix.pixel_y_size); - - var job = { - tileBoundingBox: JSON.stringify(this.tileBoundingBox), - tileWidthUnitsPerPixel: this.tileWidthUnitsPerPixel, - tileHeightUnitsPerPixel: this.tileHeightUnitsPerPixel, - projectionTo: this.projectionTo, - projectionFrom: this.projectionFrom, - projectionFromDefinition: this.projectionFromDefinition, - tileWidth: this.tileMatrix.tile_width, - tileHeight: this.tileMatrix.tile_height, - pixelYSize: this.tileMatrix.pixel_y_size, - pixelXSize: this.tileMatrix.pixel_x_size, - height: this.height, - width: this.width, - tilePieceBoundingBox: JSON.stringify(tilePieceBoundingBox), - imageData: this.tileContext.getImageData(0, 0, this.tileMatrix.tile_width, this.tileMatrix.tile_height).data.buffer - }; - - return new Promise(function(resolve, reject) { - try { - var work = require('webworkify'); - var worker = work(require('./tileWorker.js')); - - worker.onmessage = function(e) { - resolve(workerDone(e.data, piecePosition, ctx)); - }; - - worker.postMessage(job, [this.tileContext.getImageData(0, 0, this.tileMatrix.tile_width, this.tileMatrix.tile_height).data.buffer]); - - } catch (e) { - worker = ProjectTile; - worker(job, function(err, data) { - resolve(workerDone(data, piecePosition, ctx)); - }); - } - }.bind(this)); -}; - -function workerDone(data, piecePosition, ctx) { - if (data.message === 'done') { - var imageData = new Uint8ClampedArray(data.imageData); - var offsetX = piecePosition.startX; - var offsetY = piecePosition.startY; - var finalWidth = data.finalWidth; - var finalHeight = data.finalHeight; - - var tmpCanvas = document.createElement('canvas'); - tmpCanvas.width = finalWidth; - tmpCanvas.height = finalHeight; - tmpCanvas.getContext('2d').putImageData(new ImageData(imageData, finalWidth, finalHeight), 0, 0); - - ctx.drawImage(tmpCanvas, offsetX, offsetY); - } -} - - -module.exports = CanvasTileCreator; - -},{"../tileBoundingBoxUtils":93,"./index":79,"./projectTile.js":81,"./tileUtilities":82,"./tileWorker.js":83,"file-type":223,"util":343,"webworkify":347}],79:[function(require,module,exports){ -(function (process){ -var proj4 = require('proj4'); - -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -var TileBoundingBoxUtils = require('../tileBoundingBoxUtils'); - -module.exports.initialize = function(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas) { - var isElectron = !!(typeof navigator != 'undefined' && navigator.userAgent.toLowerCase().indexOf(' electron/') > -1); - var isPhantom = !!(typeof window != 'undefined' && window.callPhantom && window._phantom); - var isNode = typeof(process) !== 'undefined' && process.version; - if (isNode && !isPhantom && !isElectron) { - var NodeTileCreator = require('./node'); - return new NodeTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas); - } else { - var CanvasTileCreator = require('./canvas'); - return new CanvasTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas); - } -} - -function TileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo) { - this.width = width; - this.height = height; - this.tileMatrix = tileMatrix; - this.projectionFrom = srs.organization.toUpperCase() + ':' + srs.organization_coordsys_id; - this.projectionFromDefinition = srs.definition; - this.projectionTo = projectionTo.toUpperCase(); - this.tileBoundingBox = tileBoundingBox; - this.tileMatrixSet = tileMatrixSet; - this.chunks = []; - - this.tileHeightUnitsPerPixel = (tileBoundingBox.maxLatitude - tileBoundingBox.minLatitude) / height; - this.tileWidthUnitsPerPixel = (tileBoundingBox.maxLongitude - tileBoundingBox.minLongitude) / width; - - // use this as a quick check if the projections are equal. If they are we can shortcut some math - // special cases 'EPSG:900913' =='EPSG:3857' == 'EPSG:102113' - this.sameProjection = (this.projectionFrom === this.projectionTo) || (this.projectionTo === 'EPSG:3857' && (this.projectionFrom === 'EPSG:900913' || this.projectionFrom === 'EPSG:102113')); -} - -module.exports.TileCreator = TileCreator; - -TileCreator.prototype.projectTile = function(tileData, gridColumn, gridRow) { - var bb = TileBoundingBoxUtils.getTileBoundingBox(this.tileMatrixSet.getBoundingBox(), this.tileMatrix, gridColumn, gridRow); - if (!this.sameProjection) { - return this.reproject(tileData, bb); - } else { - return Promise.resolve(this.cutAndScale(tileData, bb)); - } -} - -TileCreator.prototype.cutAndScale = function (tileData, tilePieceBoundingBox) { - var position = TileBoundingBoxUtils.determinePositionAndScale(tilePieceBoundingBox, this.tileMatrix.tile_height, this.tileMatrix.tile_width, this.tileBoundingBox, this.height, this.width); - if (position.xPositionInFinalTileStart >= this.width || position.xPositionInFinalTileEnd <= 0 || position.yPositionInFinalTileStart >= this.height || position.yPositionInFinalTileEnd <= 0) { - // this tile doesn't belong just skip it - } else { - this.addChunk(tileData, position); - } -}; - -TileCreator.prototype.addChunk = function (chunk, position) { - this.chunks.push({ - chunk: chunk, - position: position - }); -}; - -TileCreator.prototype.reproject = function (tileData, tilePieceBoundingBox) { - var y = 0; - var x = 0; - var height = this.height; - var width = this.width; - var proj4To = proj4(this.projectionTo); - var proj4From; - if (this.projectionFrom) { - try { - proj4From = proj4(this.projectionFrom); - } catch (e) {} - } - if (!proj4From && this.projectionFromDefinition) { - proj4From = proj4(this.projectionFromDefinition); - } - var conversion; - try { - conversion = proj4(this.projectionTo, this.projectionFrom); - } catch (e) {} - if (!conversion) { - conversion = proj4(this.projectionTo, this.projectionFromDefinition); - } - - var latitude; - - var rows = []; - for (var i = 0; i < height; i++) { - rows.push(i); - } - var columns = []; - for (var i = 0; i < width; i++) { - columns.push(i); - } - - return rows.reduce(function(rowSequence, row) { - return rowSequence.then(function() { - latitude = this.tileBoundingBox.maxLatitude - (row * this.tileHeightUnitsPerPixel); - var currentColumns = columns.slice(); - return currentColumns.reduce(function(columnSequence, column) { - return columnSequence.then(function() { - // loop over all pixels in the target tile - - // determine the position of the current pixel in the target tile - var longitude = this.tileBoundingBox.minLongitude + (column * this.tileWidthUnitsPerPixel); - - // project that lat/lng to the source coordinate system - var projected = conversion.forward([longitude, latitude]); - var projectedLongitude = projected[0]; - var projectedLatitude = projected[1]; - - // now find the source pixel - var xPixel = this.tileMatrix.tile_width - Math.round((tilePieceBoundingBox.maxLongitude - projectedLongitude) / this.tileMatrix.pixel_x_size); - var yPixel = Math.round((tilePieceBoundingBox.maxLatitude - projectedLatitude) / this.tileMatrix.pixel_y_size); - - if (xPixel >= 0 && xPixel < this.tileMatrix.tile_width - && yPixel >= 0 && yPixel < this.tileMatrix.tile_height) { - this.addPixel(column, row, xPixel, yPixel); - } - }.bind(this)); - }.bind(this), Promise.resolve()); - }.bind(this)); - }.bind(this), Promise.resolve()); -}; - -}).call(this,require('_process')) -},{"../tileBoundingBoxUtils":93,"./canvas":78,"./node":80,"_process":284,"proj4":285}],80:[function(require,module,exports){ -var util = require('util') - , concat = require('concat-stream') - , ImageUtils = require('../imageUtils'); - -var TileCreator = require('./index').TileCreator; - -function NodeTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, projectionFrom, projectionTo, canvas) { - TileCreator.apply(this, arguments); - - this.Canvas = require('canvas'); - this.canvas = canvas || this.Canvas.createCanvas(width, height); - this.ctx = this.canvas.getContext('2d'); - - this.tileCanvas = this.Canvas.createCanvas(width, height); - this.tileContext = this.tileCanvas.getContext('2d'); - this.tileCanvas.width = tileMatrix.tile_width; - this.tileCanvas.height = tileMatrix.tile_height; - this.imageData = this.Canvas.createImageData(new Uint8ClampedArray(width * height * 4), width, height); - this.pixelAdded = false; -} - -util.inherits(NodeTileCreator, TileCreator); - -NodeTileCreator.prototype.addPixel = function (targetX, targetY, sourceX, sourceY) { - var color = this.tileContext.getImageData(sourceX, sourceY, 1, 1); - this.imageData.data.set(color.data, (targetY * this.width * 4) + (targetX * 4)); - this.pixelAdded = true; -}; - -NodeTileCreator.prototype.addTile = function (tileData, gridColumn, gridRow) { - return ImageUtils.getImage(tileData) - .then(function(img) { - this.tile = img; - this.tileContext.drawImage(img, 0, 0); - this.chunks = []; - }.bind(this)) - .then(function() { - return this.projectTile(tileData, gridColumn, gridRow); - }.bind(this)) - .then(function() { - if (this.pixelAdded) { - this.ctx.putImageData(this.imageData, 0, 0); - } - }.bind(this)) - .then(function() { - if (this.chunks && this.chunks.length) { - return this.chunks.reduce(function(sequence, chunk) { - return sequence.then(function() { - return ImageUtils.getImage(tileData); - }.bind(this)) - .then(function(image) { - var p = chunk.position; - this.ctx.drawImage(image, - p.sx, - p.sy, - p.sWidth, - p.sHeight, - p.dx, - p.dy, - p.dWidth, - p.dHeight - ); - }.bind(this)); - }.bind(this), Promise.resolve()); - } - }.bind(this)) - .then(function() { - return this.canvas; - }.bind(this)); -}; - -NodeTileCreator.prototype.getCompleteTile = function (format) { - return new Promise(function (resolve, reject) { - var writeStream = concat(function(buffer) { - resolve(buffer); - }); - var stream = null; - if (format === 'png') { - stream = this.canvas.createPNGStream(); - } else { - stream = this.canvas.createJPEGStream(); - } - stream.pipe(writeStream); - }.bind(this)); -}; - -module.exports = NodeTileCreator; - -},{"../imageUtils":89,"./index":79,"canvas":undefined,"concat-stream":185,"util":343}],81:[function(require,module,exports){ -var proj4 = require('proj4'); - -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -var TileUtilities = require('./tileUtilities') - , proj4Defs = require('../../proj4Defs'); - -module.exports = function(job, callback) { - console.log('Tile Worker - working'); - console.time('Tile Worker - time'); - var self = this; - - if (proj4Defs[job.projectionTo]) { - proj4.defs(job.projectionTo, proj4Defs[job.projectionTo]); - } - if (proj4Defs[job.projectionFrom]) { - proj4.defs(job.projectionFrom, proj4Defs[job.projectionFrom]); - } - var proj4To = proj4(job.projectionTo); - var proj4From = proj4(job.projectionFrom); - - var conversion; - try { - conversion = proj4(job.projectionTo, job.projectionFrom); - } catch (e) {} - if (!conversion) { - conversion = proj4(job.projectionTo, job.projectionFromDefinition); - } - - var tileBoundingBox = JSON.parse(job.tileBoundingBox); - var tilePieceBoundingBox = JSON.parse(job.tilePieceBoundingBox); - - var piecePosition = TileUtilities.getPiecePosition(tilePieceBoundingBox, tileBoundingBox, job.height, job.width, job.projectionTo, job.projectionFrom, job.projectionFromDefinition, job.tileHeightUnitsPerPixel, job.tileWidthUnitsPerPixel, job.pixelXSize, job.pixelYSize); - var x = piecePosition.startX; - var y = piecePosition.startY; - - var finalWidth = (piecePosition.endX - piecePosition.startX); - var finalHeight = (piecePosition.endY - piecePosition.startY); - if (finalWidth <= 0 || finalHeight <= 0) { - console.timeEnd('Tile Worker - time'); - if (callback) { - return callback(null, {message:'donenodata'}); - } else { - postMessage({message:'donenodata'}); - return self.close(); - } - } - - var imageData = new Uint8ClampedArray(job.imageData); - - var finalImageData = new Uint8ClampedArray(finalWidth * finalHeight * 4); - var latitude; - - var yArray = []; - for (var i = y; i < piecePosition.endY; i++) { - yArray.push(i); - } - - var xArray = []; - for (var i = x; i < piecePosition.endX; i++) { - xArray.push(i); - } - - return yArray.reduce(function(ySequence, y) { - return ySequence.then(function() { - latitude = tileBoundingBox.maxLatitude - (y * job.tileHeightUnitsPerPixel); - var currentXArray = xArray.slice(); - return currentXArray.reduce(function(xSequence, x) { - return xSequence.then(function() { - longitude = tileBoundingBox.minLongitude + (x * job.tileWidthUnitsPerPixel); - var projected = conversion.forward([longitude, latitude]); - var projectedLongitude = projected[0]; - var projectedLatitude = projected[1]; - - var xPixel = job.tileWidth - Math.round((tilePieceBoundingBox.maxLongitude - projectedLongitude) / job.pixelXSize); - var yPixel = Math.round((tilePieceBoundingBox.maxLatitude - projectedLatitude) / job.pixelYSize); - if (xPixel >= 0 && xPixel < job.tileWidth - && yPixel >= 0 && yPixel < job.tileHeight) { - var sliceStart = (yPixel * job.tileWidth * 4) + (xPixel * 4); - if (sliceStart >= 0) { - finalImageData.set(imageData.slice(sliceStart, sliceStart + 4), ((y-piecePosition.startY)*finalWidth*4) + ((x-piecePosition.startX)*4)); - } - } - }); - }, Promise.resolve()); - }); - }, Promise.resolve()) - .then(function() { - console.timeEnd('Tile Worker - time'); - if (callback) { - callback(null, {message:'done', imageData: finalImageData.buffer, finalWidth: finalWidth, finalHeight: finalHeight}, [finalImageData.buffer]); - } else { - postMessage({message:'done', imageData: finalImageData.buffer, finalWidth: finalWidth, finalHeight: finalHeight}, [finalImageData.buffer]); - self.close(); - } - }); -} - -},{"../../proj4Defs":77,"./tileUtilities":82,"proj4":285}],82:[function(require,module,exports){ -var proj4 = require('proj4'); -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -module.exports.getPiecePosition = function(tilePieceBoundingBox, tileBoundingBox, height, width, projectionTo, projectionFrom, projectionFromDefinition, tileHeightUnitsPerPixel, tileWidthUnitsPerPixel, pixelXSize, pixelYSize) { - var conversion; - try { - conversion = proj4(projectionTo, projectionFrom); - } catch (e) {} - if (!conversion) { - conversion = proj4(projectionTo, projectionFromDefinition); - } - - var maxLatitude = tilePieceBoundingBox.maxLatitude; - var minLatitude = tilePieceBoundingBox.minLatitude; - var minLongitude = tilePieceBoundingBox.minLongitude - pixelXSize; - var maxLongitude = tilePieceBoundingBox.maxLongitude + pixelXSize; - - if (projectionTo.toUpperCase() === 'EPSG:3857' && projectionFrom.toUpperCase() === 'EPSG:4326') { - maxLatitude = maxLatitude > 85.0511 ? 85.0511 : maxLatitude; - minLatitude = minLatitude < -85.0511 ? -85.0511 : minLatitude; - minLongitude = minLongitude < -180.0 ? -180.0 : minLongitude; - maxLongitude = maxLongitude > 180.0 ? 180.0 : maxLongitude; - } - - // ensure the projeced longitude wont wrap around the world - var negative180 = proj4('EPSG:4326', projectionTo, [-180,0]); - var positive180 = proj4('EPSG:4326', projectionTo, [180,0]); - minLongitude = minLongitude < negative180[0] ? negative180[0] : minLongitude; - maxLongitude = maxLongitude > positive180[0] ? positive180[0] : maxLongitude; - - var pieceBoundingBoxInTileProjectionSW = conversion.inverse([minLongitude, minLatitude]); - var pieceBoundingBoxInTileProjectionNE = conversion.inverse([maxLongitude, maxLatitude]); - - var pieceBBProjected = { - minLatitude: isNaN(pieceBoundingBoxInTileProjectionSW[1]) ? tileBoundingBox.minLatitude : pieceBoundingBoxInTileProjectionSW[1], - maxLatitude: isNaN(pieceBoundingBoxInTileProjectionNE[1]) ? tileBoundingBox.maxLatitude : pieceBoundingBoxInTileProjectionNE[1], - minLongitude: pieceBoundingBoxInTileProjectionSW[0], - maxLongitude: pieceBoundingBoxInTileProjectionNE[0] - }; - - var startY = y = Math.max(0, Math.floor((tileBoundingBox.maxLatitude - pieceBBProjected.maxLatitude) / tileHeightUnitsPerPixel)); - var startX = x = Math.max(0, Math.floor((pieceBBProjected.minLongitude - tileBoundingBox.minLongitude) / tileWidthUnitsPerPixel)); - - var endY = Math.min(height, height - Math.floor((pieceBBProjected.minLatitude - tileBoundingBox.minLatitude) / tileHeightUnitsPerPixel)); - var endX = Math.min(width, width - Math.floor((tileBoundingBox.maxLongitude - pieceBBProjected.maxLongitude) / tileWidthUnitsPerPixel)); - - return { - startY: startY, - startX: startX, - endY: endY, - endX: endX - }; -} - -},{"proj4":285}],83:[function(require,module,exports){ -var ProjectTile = require('./projectTile'); - -function tileWorker(e) { - console.log('Tile Worker - working'); - console.time('Tile Worker - time'); - var self = this; - var job = e.data; - - ProjectTile(job, function(err, data) { - postMessage(data); - self.close(); - }); -} - -module.exports = function(self) { - self.onmessage = tileWorker; - self.onerror = function(e) { - console.log('error', e); - } -}; - -},{"./projectTile":81}],84:[function(require,module,exports){ -/** - * Feature Draw Type module. - * @module tiles/features - */ -var FeatureDrawType = { - /** - * Circle for a point - */ - CIRCLE: 'CIRCLE', - /** - * Stroke for a line of polygon - */ - STROKE: 'STOKE', - /** - * Fill for a polygon - */ - FILL: 'FILL' -}; - - -module.exports = FeatureDrawType; - -},{}],85:[function(require,module,exports){ -/** - * FeaturePaint module. - * @module tiles/features - */ -var FeaturePaint = function () { - this.featurePaints = {}; -}; - -/** - * Get the feature paint for the featureDrawType - * @param {module:tiles/features~FeatureDrawType} featureDrawType - * @return {module:tiles/features~FeaturePaint} paint - */ -FeaturePaint.prototype.getPaint = function(featureDrawType) { - return this.featurePaints[featureDrawType]; -}; - -/** - * Set the feature paint for the featureDrawType - * @param {module:tiles/features~FeatureDrawType} featureDrawType - * @param {module:tiles/features~Paint} paint - */ -FeaturePaint.prototype.setPaint = function(featureDrawType, paint) { - this.featurePaints[featureDrawType] = paint; -}; - -module.exports = FeaturePaint; - -},{}],86:[function(require,module,exports){ -/** - * Feature Paint Cache. - * @module tiles/features - */ -var FeaturePaint = require('./featurePaint'); - - -/** - * Constructor, created with cache size of {@link #DEFAULT_CACHE_SIZE} - * @constructor - */ -var FeaturePaintCache = function(size = null) { - this.cacheSize = size !== null ? size : FeaturePaintCache.DEFAULT_STYLE_PAINT_CACHE_SIZE; - this.paintCache = {}; - this.accessHistory = []; -}; - -/** - * Get the cached featurePaint for the style row or null if not cached - * @param {module:extension/style~StyleRow} styleRow style row - * @return {module:tiles/features~FeaturePaint} feature paint or null - */ -FeaturePaintCache.prototype.getFeaturePaintForStyleRow = function(styleRow) { - return this.getFeaturePaint(styleRow.getId()); -}; - -/** - * Get the cached featurePaint for the style row id or null if not cached - * @param {Number} styleRowId style row id - * @return {module:tiles/features~FeaturePaint} feature paint or null - */ -FeaturePaintCache.prototype.getFeaturePaint = function(styleRowId) { - var featurePaint = this.paintCache[styleRowId]; - if (!!featurePaint) { - var index = this.accessHistory.indexOf(styleRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } - this.accessHistory.push(styleRowId); - } - return featurePaint; -}; - -/** - * Get the paint for the style row and draw type - * @param {module:extension/style~StyleRow} styleRow style row - * @param {String} type feature draw type - * @return {module:tiles/features~Paint} paint - */ -FeaturePaintCache.prototype.getPaintForStyleRow = function(styleRow, type) { - return this.getPaint(styleRow.getId(), type); -}; - -/** - * Get the paint for the style row id and draw type - * @param {Number} styleId style row id - * @param {String} type feature draw type - * @return {module:tiles/features~Paint} paint - */ -FeaturePaintCache.prototype.getPaint = function(styleId, type) { - var paint = null; - var featurePaint = this.getFeaturePaint(styleId); - if (featurePaint !== undefined && featurePaint !== null) { - paint = featurePaint.getPaint(type); - } - return paint; -}; - -/** - * Cache the featurePaint for the style row - * @param {module:extension/style~StyleRow} styleRow style row - * @param {module:tiles/features~FeatureDrawType} type feature draw type - * @param {module:tiles/features~Paint} paint paint - */ -FeaturePaintCache.prototype.setPaintForStyleRow = function(styleRow, type, paint) { - this.setPaint(styleRow.getId(), type, paint); -}; - -/** - * Cache the featurePaint for the style row id - * @param {Number} styleRowId style row id - * @param {module:tiles/features~FeatureDrawType} type feature draw type - * @param {module:tiles/features~Paint} paint paint - */ -FeaturePaintCache.prototype.setPaint = function(styleRowId, type, paint) { - var featurePaint = this.paintCache[styleRowId]; - if (!featurePaint) { - featurePaint = new FeaturePaint(); - } else { - var index = this.accessHistory.indexOf(styleRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } - } - featurePaint.setPaint(type, paint); - this.paintCache[styleRowId] = featurePaint; - this.accessHistory.push(styleRowId); - if (Object.keys(this.paintCache).length > this.cacheSize) { - var styleId = this.accessHistory.shift(); - if (styleId) { - delete this.paintCache[styleId]; - } - } -}; - -/** - * Remove the cached featurePaint for the style row id - * @param {Number} styleRowId style row id - * @return {module:tiles/features~FeaturePaint} removed feature paint or null - */ -FeaturePaintCache.prototype.remove = function(styleRowId) { - var removed = this.paintCache[styleRowId]; - delete this.paintCache[styleRowId]; - if (!!removed) { - var index = this.accessHistory.indexOf(styleRowId); - if (index > -1) { - this.accessHistory.splice(index, 1); - } } - return removed; -}; - -/** - * Clear the cache - */ -FeaturePaintCache.prototype.clear = function() { - this.paintCache = {}; - this.accessHistory = []; -}; - -/** - * Resize the cache - * @param {Number} maxSize max size - */ -FeaturePaintCache.prototype.resize = function(maxSize) { - this.cacheSize = maxSize; - var keys = Object.keys(this.paintCache); - if (keys.length > maxSize) { - var numberToRemove = keys.length - maxSize; - for (var i = 0; i < numberToRemove; i++) { - var styleRowId = this.accessHistory.shift(); - if (!!styleRowId) { - delete this.paintCache[styleRowId]; - } - } - } -}; - -FeaturePaintCache.DEFAULT_STYLE_PAINT_CACHE_SIZE = 100; - - -module.exports = FeaturePaintCache; - -},{"./featurePaint":85}],87:[function(require,module,exports){ -(function (process){ -/** - * FeatureTiles module. - * @module tiles/features - */ -var TileBoundingBoxUtils = require('../tileBoundingBoxUtils') - , BoundingBox = require('../../boundingBox') - , FeatureTableStyles = require('../../extension/style/featureTableStyles') - , Paint = require('./paint') - , FeaturePaintCache = require('./featurePaintCache') - , FeatureDrawType = require('./featureDrawType') - , IconCache = require('../../extension/style/iconCache') - , ImageUtils = require('../imageUtils'); - -var d3geo = require('d3-geo') - , concat = require('concat-stream') - , reproject = require('reproject') - , PolyToLine = require('@turf/polygon-to-line').default; - -/** - * Tiles drawn from or linked to features. Used to query features and optionally draw tiles - * from those features. - */ -var FeatureTiles = function(featureDao, tileWidth = null, tileHeight = null) { - var isElectron = !!(typeof navigator != 'undefined' && navigator.userAgent.toLowerCase().indexOf(' electron/') > -1); - var isPhantom = !!(typeof window != 'undefined' && window.callPhantom && window._phantom); - var isNode = typeof(process) !== 'undefined' && process.version; - this.useNodeCanvas = isNode && !isPhantom && !isElectron; - this.featureDao = featureDao; - this.tileWidth = tileWidth !== null ? tileWidth : 256; - this.tileHeight = tileHeight !== null ? tileHeight : 256; - this.compressFormat = 'png'; - this.pointRadius = 4.0; - this.pointPaint = new Paint(); - this.pointIcon = null; - this.linePaint = new Paint(); - this.linePaint.setStrokeWidth(2.0); - this.lineStrokeWidth = 2.0; - this.polygonPaint = new Paint(); - this.polygonPaint.setStrokeWidth(2.0); - this.polygonStrokeWidth = 2.0; - this.fillPolygon = true; - this.polygonFillPaint = new Paint(); - this.featurePaintCache = new FeaturePaintCache(); - this.iconCache = new IconCache(); - this.scale = 1.0; - this.geoPackage = this.featureDao.geoPackage; - if (this.geoPackage != null) { - this.featureTableStyles = new FeatureTableStyles(this.geoPackage, this.featureDao.getTable()); - if (!this.featureTableStyles.has()) { - this.featureTableStyles = null; - } - } - this.maxFeaturesPerTile = null; - this.maxFeaturesTileDraw = null; - this.calculateDrawOverlap(); -}; - -/** - * Manually set the width and height draw overlap - * @param {Number} pixels pixels - */ -FeatureTiles.prototype.setDrawOverlap = function (pixels) { - this.setWidthDrawOverlap(pixels); - this.setHeightDrawOverlap(pixels); -}; - -/** - * Get the width draw overlap - * @return {Number} width draw overlap - */ -FeatureTiles.prototype.getWidthDrawOverlap = function () { - return this.widthOverlap; -}; - -/** - * Manually set the width draw overlap - * @param {Number} pixels pixels - */ -FeatureTiles.prototype.setWidthDrawOverlap = function (pixels) { - this.widthOverlap = pixels; -}; - -/** - * Get the height draw overlap - * @return {Number} height draw overlap - */ -FeatureTiles.prototype.getHeightDrawOverlap = function () { - return this.heightOverlap; -}; - -/** - * Manually set the height draw overlap - * @param {Number} pixels pixels - */ -FeatureTiles.prototype.setHeightDrawOverlap = function (pixels) { - this.heightOverlap = pixels; -}; - -/** - * Get the feature DAO - * @return {module:features/user/featureDao} feature dao - */ -FeatureTiles.prototype.getFeatureDao = function () { - return this.featureDao; -}; - -/** - * Get the feature table styles - * @return {module:extension/style~FeatureTableStyles} feature table styles - */ -FeatureTiles.prototype.getFeatureTableStyles = function () { - return this.featureTableStyles; -}; - -/** - * Set the feature table styles - * @param {module:extension/style~FeatureTableStyles} featureTableStyles feature table styles - */ -FeatureTiles.prototype.setFeatureTableStyles = function (featureTableStyles) { - this.featureTableStyles = featureTableStyles; -}; - -/** - * Ignore the feature table styles within the GeoPackage - */ -FeatureTiles.prototype.ignoreFeatureTableStyles = function () { - this.setFeatureTableStyles(null); - this.calculateDrawOverlap(); -}; - -/** - * Clear all caches - */ -FeatureTiles.prototype.clearCache = function () { - this.clearStylePaintCache(); - this.clearIconCache(); -}; - -/** - * Clear the style paint cache - */ -FeatureTiles.prototype.clearStylePaintCache = function () { - this.featurePaintCache.clear(); -}; - -/** - * Set / resize the style paint cache size - * - * @param {Number} size - * @since 3.3.0 - */ -FeatureTiles.prototype.setStylePaintCacheSize = function (size) { - this.featurePaintCache.resize(size); -}; - -/** - * Clear the icon cache - */ -FeatureTiles.prototype.clearIconCache = function () { - this.iconCache.clear(); -}; - -/** - * Set / resize the icon cache size - * @param {Number} size new size - */ -FeatureTiles.prototype.setIconCacheSize = function (size) { - this.iconCache.resize(size); -}; - -/** - * Get the tile width - * @return {Number} tile width - */ -FeatureTiles.prototype.getTileWidth = function () { - return this.tileWidth; -}; - -/** - * Set the tile width - * @param {Number} tileWidth tile width - */ -FeatureTiles.prototype.setTileWidth = function (tileWidth) { - this.tileWidth = tileWidth; -}; - -/** - * Get the tile height - * @return {Number} tile height - */ -FeatureTiles.prototype.getTileHeight = function () { - return this.tileHeight; -}; - -/** - * Set the tile height - * @param {Number} tileHeight tile height - */ -FeatureTiles.prototype.setTileHeight = function (tileHeight) { - this.tileHeight = tileHeight; -}; - -/** - * Get the compress format - * @return {String} compress format - */ -FeatureTiles.prototype.getCompressFormat = function () { - return this.compressFormat; -}; - -/** - * Set the compress format - * @param {String} compressFormat compress format - */ -FeatureTiles.prototype.setCompressFormat = function (compressFormat) { - this.compressFormat = compressFormat; -}; - -/** - * Set the scale - * - * @param {Number} scale scale factor - */ -FeatureTiles.prototype.setScale = function(scale) { - this.scale = scale; - this.linePaint.setStrokeWidth(scale * this.lineStrokeWidth); - this.polygonPaint.setStrokeWidth(scale * this.polygonStrokeWidth); - this.featurePaintCache.clear(); -}; - -/** - * Get the scale - * @return {Number} scale factor - */ -FeatureTiles.prototype.getScale = function() { - return this.scale; -}; - -FeatureTiles.prototype.calculateDrawOverlap = function() { - if (this.pointIcon) { - this.heightOverlap = this.scale * this.pointIcon.getHeight(); - this.widthOverlap = this.scale * this.pointIcon.getWidth(); - } else { - this.heightOverlap = this.scale * this.pointRadius; - this.widthOverlap = this.scale * this.pointRadius; - } - - var lineHalfStroke = this.scale * this.lineStrokeWidth / 2.0; - this.heightOverlap = Math.max(this.heightOverlap, lineHalfStroke); - this.widthOverlap = Math.max(this.widthOverlap, lineHalfStroke); - - var polygonHalfStroke = this.scale * this.polygonStrokeWidth / 2.0; - this.heightOverlap = Math.max(this.heightOverlap, polygonHalfStroke); - this.widthOverlap = Math.max(this.widthOverlap, polygonHalfStroke); - - if (this.featureTableStyles !== null && this.featureTableStyles.has()) { - var styleRowIds = []; - var tableStyleIds = this.featureTableStyles.getAllTableStyleIds(); - if (tableStyleIds !== null) { - styleRowIds = styleRowIds.concat(tableStyleIds); - } - var styleIds = this.featureTableStyles.getAllStyleIds(); - if (styleIds != null) { - styleRowIds = styleRowIds.concat(styleIds.filter(id => styleRowIds.indexOf(id) === -1)); - } - var styleDao = this.featureTableStyles.getStyleDao(); - for (var i = 0; i < styleRowIds.length; i++) { - var styleRowId = styleRowIds[i]; - var styleRow = styleDao.queryForId(styleRowId); - var styleHalfWidth = this.scale * (styleRow.getWidthOrDefault() / 2.0); - this.widthOverlap = Math.max(this.widthOverlap, styleHalfWidth); - this.heightOverlap = Math.max(this.heightOverlap, styleHalfWidth); - } - - var iconRowIds = []; - var tableIconIds = this.featureTableStyles.getAllTableIconIds(); - if (tableIconIds != null) { - iconRowIds = iconRowIds.concat(tableIconIds); - } - var iconIds = this.featureTableStyles.getAllIconIds(); - if (iconIds != null) { - iconRowIds = iconRowIds.concat(iconIds.filter(id => iconRowIds.indexOf(id) === -1)); - } - var iconDao = this.featureTableStyles.getIconDao(); - for (i = 0; i < iconRowIds.length; i++) { - var iconRowId = iconRowIds[i]; - var iconRow = iconDao.queryForId(iconRowId); - var iconDimensions = iconRow.getDerivedDimensions(); - var iconWidth = this.scale * Math.ceil(iconDimensions[0]); - var iconHeight = this.scale * Math.ceil(iconDimensions[1]); - this.widthOverlap = Math.max(this.widthOverlap, iconWidth); - this.heightOverlap = Math.max(this.heightOverlap, iconHeight); - } - } -}; - -FeatureTiles.prototype.setDrawOverlapsWithPixels = function(pixels) { - this.widthOverlap = pixels; - this.heightOverlap = pixels; -}; - -FeatureTiles.prototype.getFeatureStyle = function(featureRow) { - var featureStyle = null; - if (this.featureTableStyles !== null) { - featureStyle = this.featureTableStyles.getFeatureStyleForFeatureRow(featureRow); - } - return featureStyle; -}; - -/** - * Get the point paint for the feature style, or return the default paint - * @param featureStyle feature style - * @return paint - */ -FeatureTiles.prototype.getPointPaint = function(featureStyle) { - var paint = this.getFeatureStylePaint(featureStyle, FeatureDrawType.CIRCLE); - if (paint == null) { - paint = this.pointPaint; - } - return paint; -}; - -/** - * Get the line paint for the feature style, or return the default paint - * @param featureStyle feature style - * @return paint - */ -FeatureTiles.prototype.getLinePaint = function(featureStyle) { - var paint = this.getFeatureStylePaint(featureStyle, FeatureDrawType.STROKE); - if (paint === null) { - paint = this.linePaint; - } - return paint; -}; - -/** - * Get the polygon paint for the feature style, or return the default paint - * @param featureStyle feature style - * @return paint - */ -FeatureTiles.prototype.getPolygonPaint = function(featureStyle) { - var paint = this.getFeatureStylePaint(featureStyle, FeatureDrawType.STROKE); - if (paint == null) { - paint = this.polygonPaint; - } - return paint; -}; - -/** - * Get the polygon fill paint for the feature style, or return the default - * paint - * @param featureStyle feature style - * @return paint - */ -FeatureTiles.prototype.getPolygonFillPaint = function(featureStyle) { - var paint = null; - var hasStyleColor = false; - if (featureStyle != null) { - var style = featureStyle.getStyle(); - if (style != null) { - if (style.hasFillColor()) { - paint = this.getStylePaint(style, FeatureDrawType.FILL); - } else { - hasStyleColor = style.hasColor(); - } - } - } - if (paint === null && !hasStyleColor && this.fillPolygon) { - paint = this.polygonFillPaint; - } - return paint; -}; - -/** - * Get the feature style paint from cache, or create and cache it - * @param featureStyle feature style - * @param drawType draw type - * @return feature style paint - */ -FeatureTiles.prototype.getFeatureStylePaint = function(featureStyle, drawType) { - var paint = null; - if (featureStyle != null) { - var style = featureStyle.getStyle(); - if (style !== null && style.hasColor()) { - paint = this.getStylePaint(style, drawType); - } - } - return paint; -}; - -/** - * Get the style paint from cache, or create and cache it - * @param style style row - * @param drawType draw type - * @return {Paint} paint - */ -FeatureTiles.prototype.getStylePaint = function(style, drawType) { - var paint = this.featurePaintCache.getPaintForStyleRow(style, drawType); - if (paint === undefined || paint === null) { - var color = null; - var strokeWidth = null; - if (drawType === FeatureDrawType.CIRCLE) { - color = style.getColor(); - } else if (drawType === FeatureDrawType.STROKE) { - color = style.getColor(); - strokeWidth = this.scale * style.getWidthOrDefault(); - } else if (drawType === FeatureDrawType.FILL) { - color = style.getFillColor(); - strokeWidth = this.scale * style.getWidthOrDefault(); - } else { - throw new Error("Unsupported Draw Type: " + drawType); - } - var stylePaint = new Paint(); - stylePaint.setColor(color); - if (strokeWidth !== null) { - stylePaint.setStrokeWidth(strokeWidth); - } - paint = this.featurePaintCache.getPaintForStyleRow(style, drawType); - if (paint === undefined || paint === null) { - this.featurePaintCache.setPaintForStyleRow(style, drawType, stylePaint); - paint = stylePaint; - } - } - return paint; -}; - -/** - * Get the point radius - * @return {Number} radius - */ -FeatureTiles.prototype.getPointRadius = function() { - return this.pointRadius; -}; - -/** - * Set the point radius - * @param {Number} pointRadius point radius - */ -FeatureTiles.prototype.setPointRadius = function(pointRadius) { - this.pointRadius = pointRadius; -}; - -/** - * Get point color - * @return {String} color - */ -FeatureTiles.prototype.getPointColor = function() { - return this.pointPaint.getColor(); -}; - -/** - * Set point color - * @param {String} pointColor point color - */ -FeatureTiles.prototype.setPointColor = function(pointColor) { - this.pointPaint.setColor(pointColor); -}; - -/** - * Get the point icon - * @return {module:tiles/features.FeatureTilePointIcon} icon - */ -FeatureTiles.prototype.getPointIcon = function() { - return this.pointIcon; -}; - -/** - * Set the point icon - * @param {module:tiles/features.FeatureTilePointIcon} pointIcon point icon - */ -FeatureTiles.prototype.setPointIcon = function(pointIcon) { - this.pointIcon = pointIcon; -}; - -/** - * Get line stroke width - * @return {Number} width - */ -FeatureTiles.prototype.getLineStrokeWidth = function() { - return this.lineStrokeWidth; -}; - -/** - * Set line stroke width - * @param {Number} lineStrokeWidth line stroke width - */ -FeatureTiles.prototype.setLineStrokeWidth = function(lineStrokeWidth) { - this.lineStrokeWidth = lineStrokeWidth; - this.linePaint.setStrokeWidth(this.scale * this.lineStrokeWidth); -}; - -/** - * Get line color - * @return {String} color - */ -FeatureTiles.prototype.getLineColor = function() { - return this.linePaint.getColor(); -}; - -/** - * Set line color - * @param {String} lineColor line color - */ -FeatureTiles.prototype.setLineColor = function(lineColor) { - this.linePaint.setColor(lineColor); -}; - -/** - * Get polygon stroke width - * @return {Number} width - */ -FeatureTiles.prototype.getPolygonStrokeWidth = function() { - return this.polygonStrokeWidth; -}; - -/** - * Set polygon stroke width - * @param {Number} polygonStrokeWidth polygon stroke width - */ -FeatureTiles.prototype.setPolygonStrokeWidth = function(polygonStrokeWidth) { - this.polygonStrokeWidth = polygonStrokeWidth; - this.polygonPaint.setStrokeWidth(this.scale * this.polygonStrokeWidth); -}; - -/** - * Get polygon color - * @return {String} color - */ -FeatureTiles.prototype.getPolygonColor = function() { - return this.polygonPaint.getColor(); -}; - -/** - * Set polygon color - * @param {String} polygonColor polygon color - */ -FeatureTiles.prototype.setPolygonColor = function(polygonColor) { - this.polygonPaint.setColor(polygonColor); -}; - -/** - * Is fill polygon - * @return {Boolean} true if fill polygon - */ -FeatureTiles.prototype.isFillPolygon = function() { - return this.fillPolygon; -}; - -/** - * Set the fill polygon - * @param {Boolean} fillPolygon fill polygon - */ -FeatureTiles.prototype.setFillPolygon = function(fillPolygon) { - this.fillPolygon = fillPolygon; -}; - -/** - * Get polygon fill color - * @return {String} color - */ -FeatureTiles.prototype.getPolygonFillColor = function() { - return this.polygonFillPaint.getColor(); -}; - -/** - * Set polygon fill color - * @param {String} polygonFillColor polygon fill color - */ -FeatureTiles.prototype.setPolygonFillColor = function(polygonFillColor) { - this.polygonFillPaint.setColor(polygonFillColor); -}; - -/** - * Get the max features per tile - * @return {Number} max features per tile or null - */ -FeatureTiles.prototype.getMaxFeaturesPerTile = function() { - return this.maxFeaturesPerTile; -}; - -/** - * Set the max features per tile. When more features are returned in a query - * to create a single tile, the tile is not created. - * @param {Number} maxFeaturesPerTile max features per tile - */ -FeatureTiles.prototype.setMaxFeaturesPerTile = function(maxFeaturesPerTile) { - this.maxFeaturesPerTile = maxFeaturesPerTile; -}; - -/** - * Get the max features tile draw, the custom tile drawing implementation - * for tiles with more features than the max at #getMaxFeaturesPerTile - * @return {module:tiles/features/custom~CustomFeatureTile} max features tile draw or null - */ -FeatureTiles.prototype.getMaxFeaturesTileDraw = function() { - return this.maxFeaturesTileDraw; -}; - -/** - * Set the max features tile draw, used to draw tiles when more features for - * a single tile than the max at #getMaxFeaturesPerTile exist - * @param {module:tiles/features/custom~CustomFeatureTile} maxFeaturesTileDraw max features tile draw - */ -FeatureTiles.prototype.setMaxFeaturesTileDraw = function(maxFeaturesTileDraw) { - this.maxFeaturesTileDraw = maxFeaturesTileDraw; -}; - -FeatureTiles.prototype.drawTile = function (x, y, z, canvas = null) { - var indexed = this.featureDao.isIndexed(); - if (indexed) { - return this.drawTileQueryIndex(x, y, z, canvas); - } else { - return this.drawTileQueryAll(x, y, z, canvas); - } -}; - -FeatureTiles.prototype.drawTileQueryAll = function(x, y, zoom, canvas) { - var boundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, zoom); - boundingBox = this.expandBoundingBox(boundingBox); - - var count = this.featureDao.getCount(); - if (this.maxFeaturesPerTile === null || count <= this.maxFeaturesPerTile) { - return this.drawTileWithBoundingBox(boundingBox, zoom, canvas); - } else if (this.maxFeaturesTileDraw !== null) { - return this.maxFeaturesTileDraw.drawUnindexedTile(256, 256, canvas); - } -}; - -FeatureTiles.prototype.drawTileQueryIndex = async function(x, y, z, tileCanvas) { - var boundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, z); - var expandedBoundingBox = this.expandBoundingBox(boundingBox); - - var width = 256; - var height = 256; - - var positionAndScale = TileBoundingBoxUtils.determinePositionAndScale(boundingBox, height, width, new BoundingBox(-20037508.342789244, 20037508.342789244, -20037508.342789244, 20037508.342789244), height * (1 << z), width * (1 << z)); - var xTranslate = -positionAndScale.xPositionInFinalTileStart; - var yTranslate = -positionAndScale.yPositionInFinalTileStart; - - var pi = Math.PI, - tau = 2 * pi; - var drawProjection = d3geo.geoMercator() - .scale((1 << z) * 256 / tau) - .center([-180, 85.0511287798066]) - .translate([xTranslate, yTranslate]); - - var canvas; - if (tileCanvas !== null) { - canvas = tileCanvas; - } - var context; - if (canvas === undefined || canvas === null) { - if (this.useNodeCanvas) { - var Canvas = require('canvas'); - canvas = Canvas.createCanvas(width, height); - } else { - canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - } - } - context = canvas.getContext('2d'); - context.clearRect(0, 0, width, height); - var srs = this.featureDao.getSrs(); - var tileCount = this.featureDao.countWebMercatorBoundingBox(expandedBoundingBox); - if (this.maxFeaturesPerTile === null || tileCount <= this.maxFeaturesPerTile) { - var iterator = this.featureDao.fastQueryWebMercatorBoundingBox(expandedBoundingBox); - var geojsonFeatures = [] - for (var featureRow of iterator) { - geojsonFeatures.push(featureRow.getGeometry().geometry.toGeoJSON()); - } - for (var gj of geojsonFeatures) { - var style = this.getFeatureStyle(featureRow); - if (srs.organization !== 'EPSG' || srs.organization_coordsys_id !== 4326) { - gj = reproject.toWgs84(gj, this.featureDao.projection); - } - await this.addFeatureToBatch(gj, context, drawProjection, boundingBox, style); - } - return new Promise(function(resolve, reject) { - if (this.useNodeCanvas) { - var writeStream = concat(function (buffer) { - resolve(buffer); - }); - var stream = null; - if (this.compressFormat === 'png') { - stream = canvas.createPNGStream(); - } else { - stream = canvas.createJPEGStream(); - } - stream.pipe(writeStream); - } else { - resolve(canvas.toDataURL('image/' + this.compressFormat)); - } - }.bind(this)); - } else if (this.maxFeaturesTileDraw !== null) { - // Draw the max features tile - return this.maxFeaturesTileDraw.drawTile(width, height, tileCount, canvas); - } -}; - -FeatureTiles.prototype.drawTileWithBoundingBox = async function(boundingBox, zoom, tileCanvas) { - var width = 256; - var height = 256; - var positionAndScale = TileBoundingBoxUtils.determinePositionAndScale(boundingBox, height, width, new BoundingBox(-20037508.342789244, 20037508.342789244, -20037508.342789244, 20037508.342789244), height * (1 << zoom), width * (1 << zoom)); - var xTranslate = -positionAndScale.xPositionInFinalTileStart; - var yTranslate = -positionAndScale.yPositionInFinalTileStart; - - var pi = Math.PI, - tau = 2 * pi; - var drawProjection = d3geo.geoMercator() - .scale((1 << zoom) * 256 / tau) - .center([-180, 85.0511287798066]) - .translate([xTranslate, yTranslate]); - var canvas; - if (tileCanvas !== null) { - canvas = tileCanvas; - } - var context; - if (canvas === undefined || canvas === null) { - if (this.useNodeCanvas) { - var Canvas = require('canvas'); - canvas = Canvas.createCanvas(width, height); - } else { - canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - } - } - context = canvas.getContext('2d'); - context.clearRect(0, 0, width, height); - var featureDao = this.featureDao; - var srs = featureDao.getSrs(); - var each = featureDao.queryForEach(); - var featureRows = []; - for (var row of each) { - featureRows.push(featureDao.getRow(row)); - } - for (var fr of featureRows) { - var gj = fr.getGeometry().geometry.toGeoJSON(); - var style = this.getFeatureStyle(fr); - if (srs.organization !== 'EPSG' || srs.organization_coordsys_id !== 4326) { - gj = reproject.toWgs84(gj, featureDao.projection); - } - await this.addFeatureToBatch(gj, context, drawProjection, boundingBox, style); - } - return new Promise(function(resolve, reject) { - if (this.useNodeCanvas) { - var writeStream = concat(function (buffer) { - resolve(buffer); - }); - var stream = null; - if (this.compressFormat === 'png') { - stream = canvas.createPNGStream(); - } else { - stream = canvas.createJPEGStream(); - } - stream.pipe(writeStream); - } else { - resolve(canvas.toDataURL('image/' + this.compressFormat)); - } - }.bind(this)); -}; - -/** - * Draw a point in the context - * @param path - * @param geoJson - * @param context - * @param boundingBox - * @param featureStyle - * @param drawProjection - */ -FeatureTiles.prototype.drawPoint = async function(path, geoJson, context, boundingBox, featureStyle, drawProjection) { - var width; - var height; - var iconX; - var iconY; - var transformedCoords = drawProjection([geoJson.coordinates[0], geoJson.coordinates[1]]); - var x = transformedCoords[0]; - var y = transformedCoords[1]; - - if (featureStyle !== undefined && featureStyle !== null && featureStyle.hasIcon()) { - var iconRow = featureStyle.getIcon(); - var image = await iconRow.getDataImage(iconRow); - width = Math.round(this.scale * iconRow.getWidth()); - height = Math.round(this.scale * iconRow.getHeight()); - if (x >= 0 - width && x <= this.tileWidth + width && y >= 0 - height && y <= this.tileHeight + height) { - var anchorU = iconRow.getAnchorUOrDefault(); - var anchorV = iconRow.getAnchorVOrDefault(); - iconX = Math.round(x - (anchorU * width)); - iconY = Math.round(y - (anchorV * height)); - context.drawImage(image, iconX, iconY, width, height); - } - } else if (this.pointIcon !== undefined && this.pointIcon !== null) { - width = Math.round(this.scale * this.pointIcon.getWidth()); - height = Math.round(this.scale * this.pointIcon.getHeight()); - if (x >= 0 - width && x <= this.tileWidth + width && y >= 0 - height - && y <= this.tileHeight + height) { - iconX = Math.round(x - this.scale * this.pointIcon.getXOffset()); - iconY = Math.round(y - this.scale * this.pointIcon.getYOffset()); - ImageUtils.scaleBitmap(this.pointIcon.getIcon(), this.scale).then((image) => { - context.drawImage(image, iconX, iconY, width, height); - }); - } - } else { - context.save(); - var radius = null; - if (featureStyle !== undefined && featureStyle !== null) { - var styleRow = featureStyle.getStyle(); - if (styleRow !== undefined && styleRow !== null) { - radius = this.scale * (styleRow.getWidthOrDefault() / 2.0); - } - } - if (radius == null) { - radius = this.scale * this.pointRadius; - } - var pointPaint = this.getPointPaint(featureStyle); - if (x >= 0 - radius && x <= this.tileWidth + radius && y >= 0 - radius && y <= this.tileHeight + radius) { - var circleX = Math.round(x); - var circleY = Math.round(y); - context.beginPath(); - context.arc(circleX, circleY, radius, 0, 2 * Math.PI, true); - context.closePath() - context.fillStyle = pointPaint.getColorRGBA(); - context.fill(); - } - context.restore(); - } -}; - -/** - * Draw a line in the context - * @param path - * @param geoJson - * @param context - * @param featureStyle - */ -FeatureTiles.prototype.drawLine = function(path, geoJson, context, featureStyle) { - context.save(); - context.beginPath(); - var paint = this.getLinePaint(featureStyle); - context.strokeStyle = paint.getColorRGBA(); - context.lineWidth = paint.getStrokeWidth(); - path(geoJson); - context.stroke(); - context.closePath(); - context.restore(); -}; - -/** - * Draw a polygon in the context - * @param path - * @param geoJson - * @param context - * @param featureStyle - */ -FeatureTiles.prototype.drawPolygon = function(path, geoJson, context, featureStyle) { - context.save(); - context.beginPath(); - path(PolyToLine(geoJson).geometry); - context.closePath(); - var fillPaint = this.getPolygonFillPaint(featureStyle); - if (fillPaint !== undefined && fillPaint !== null) { - context.fillStyle = fillPaint.getColorRGBA(); - context.fill(); - } - var paint = this.getPolygonPaint(featureStyle); - context.strokeStyle = paint.getColorRGBA(); - context.lineWidth = paint.getStrokeWidth(); - context.stroke(); - context.restore(); -}; - -/** - * Add a feature to the batch - * @param geoJson - * @param context - * @param drawProjection - * @param boundingBox - * @param featureStyle - */ -FeatureTiles.prototype.addFeatureToBatch = async function(geoJson, context, drawProjection, boundingBox, featureStyle) { - var path = new d3geo.geoPath() - .context(context) - .projection(drawProjection); - var i, c; - if (geoJson.type === 'Point') { - await this.drawPoint(path, geoJson, context, boundingBox, featureStyle, drawProjection); - } else if (geoJson.type === 'LineString') { - this.drawLine(path, geoJson, context, featureStyle); - } else if (geoJson.type === 'Polygon') { - this.drawPolygon(path, geoJson, context, featureStyle); - } else if (geoJson.type === 'MultiPoint') { - for (i = 0; i < geoJson.coordinates.length; i++) { - c = geoJson.coordinates[i]; - var ptGeom = { - type: 'Point', - coordinates: c - }; - await this.drawPoint(path, ptGeom, context, boundingBox, featureStyle, drawProjection); - } - } else if (geoJson.type === 'MultiLineString') { - for (i = 0; i < geoJson.coordinates.length; i++) { - c = geoJson.coordinates[i]; - var lsGeom = { - type: 'LineString', - coordinates: c - }; - this.drawLine(path, lsGeom, context, featureStyle); - } - } else if (geoJson.type === 'MultiPolygon') { - for (i = 0; i < geoJson.coordinates.length; i++) { - c = geoJson.coordinates[i]; - var pGeom = { - type: 'Polygon', - coordinates: c - }; - this.drawPolygon(path, pGeom, context, featureStyle); - } - } -}; - -/** - * Create an expanded bounding box to handle features outside the tile that overlap - * @param webMercatorBoundingBox web mercator bounding box - * @return {BoundingBox} bounding box - */ -FeatureTiles.prototype.expandBoundingBox = function(webMercatorBoundingBox) { - return this.expandWebMercatorBoundingBox(webMercatorBoundingBox, webMercatorBoundingBox); -}; - -/** - * Create an expanded bounding box to handle features outside the tile that overlap - * @param webMercatorBoundingBox web mercator bounding box - * @param tileWebMercatorBoundingBox tile web mercator bounding box - * @return {BoundingBox} bounding box - */ -FeatureTiles.prototype.expandWebMercatorBoundingBox = function(webMercatorBoundingBox, tileWebMercatorBoundingBox) { - // Create an expanded bounding box to handle features outside the tile that overlap - var minLongitude = TileBoundingBoxUtils.getLongitudeFromPixel(this.tileWidth, webMercatorBoundingBox, tileWebMercatorBoundingBox, 0 - this.widthOverlap); - var maxLongitude = TileBoundingBoxUtils.getLongitudeFromPixel(this.tileWidth, webMercatorBoundingBox, tileWebMercatorBoundingBox, this.tileWidth + this.widthOverlap); - var maxLatitude = TileBoundingBoxUtils.getLatitudeFromPixel(this.tileHeight, webMercatorBoundingBox, tileWebMercatorBoundingBox, 0 - this.heightOverlap); - var minLatitude = TileBoundingBoxUtils.getLatitudeFromPixel(this.tileHeight, webMercatorBoundingBox, tileWebMercatorBoundingBox, this.tileHeight + this. heightOverlap); - - // Choose the most expanded longitudes and latitudes - minLongitude = Math.min(minLongitude, webMercatorBoundingBox.minLongitude); - maxLongitude = Math.max(maxLongitude, webMercatorBoundingBox.maxLongitude); - minLatitude = Math.min(minLatitude, webMercatorBoundingBox.minLatitude); - maxLatitude = Math.max(maxLatitude, webMercatorBoundingBox.maxLatitude); - - // Bound with the web mercator limits - minLongitude = Math.max(minLongitude, -1 * TileBoundingBoxUtils.WEB_MERCATOR_HALF_WORLD_WIDTH); - maxLongitude = Math.min(maxLongitude, TileBoundingBoxUtils.WEB_MERCATOR_HALF_WORLD_WIDTH); - minLatitude = Math.max(minLatitude, -1 * TileBoundingBoxUtils.WEB_MERCATOR_HALF_WORLD_WIDTH); - maxLatitude = Math.min(maxLatitude, TileBoundingBoxUtils.WEB_MERCATOR_HALF_WORLD_WIDTH); - - return new BoundingBox(minLongitude, maxLongitude, minLatitude, maxLatitude); -}; - -module.exports = FeatureTiles; - -}).call(this,require('_process')) -},{"../../boundingBox":7,"../../extension/style/featureTableStyles":48,"../../extension/style/iconCache":49,"../imageUtils":89,"../tileBoundingBoxUtils":93,"./featureDrawType":84,"./featurePaintCache":86,"./paint":88,"@turf/polygon-to-line":131,"_process":284,"canvas":undefined,"concat-stream":185,"d3-geo":194,"reproject":315}],88:[function(require,module,exports){ -/** - * Paint module. - * @module tiles/features - */ -var Paint = function () { - this.color = '#000000FF'; - this.strokeWidth = 1.0; -}; - -/** - * Get the color - * @returns {String} color - */ -Paint.prototype.getColor = function() { - return this.color; -}; - -/** - * Get the color - * @returns {String} color - */ -Paint.prototype.getColorRGBA = function() { - // assumes color is in the format #RRGGBB or #RRGGBBAA - var red = parseInt(this.color.substr(1,2), 16); - var green = parseInt(this.color.substr(3,2), 16); - var blue = parseInt(this.color.substr(5,2), 16); - var alpha = 1.0; - if (this.color.length > 7) { - alpha = parseInt(this.color.substr(7,2), 16) / 255; - } - return 'rgba(' + red + ',' + green + ',' + blue + ',' + alpha + ')'; -}; - -/** - * Set the color - * @param {String} color - */ -Paint.prototype.setColor = function(color) { - this.color = color; -}; - -/** - * Get the stroke width - * @returns {Number} strokeWidth - */ -Paint.prototype.getStrokeWidth = function() { - return this.strokeWidth; -}; - -/** - * Set the stroke width - * @param {Number} strokeWidth - */ -Paint.prototype.setStrokeWidth = function(strokeWidth) { - this.strokeWidth = strokeWidth; -}; - -module.exports = Paint; - -},{}],89:[function(require,module,exports){ -(function (process,Buffer){ -var sizeOf = require('image-size'); -var ImageUtils = {}; -var isElectron = !!(typeof navigator != 'undefined' && navigator.userAgent.toLowerCase().indexOf(' electron/') > -1); -var isPhantom = !!(typeof window != 'undefined' && window.callPhantom && window._phantom); -var isNode = typeof(process) !== 'undefined' && process.version; -ImageUtils.useNodeCanvas = isNode && !isPhantom && !isElectron; - -/** - * Get image for data - * @param {Buffer|String} data file data or file path - * @returns {Object} - */ -ImageUtils.getImageSize = function (data) { - return sizeOf(data); -}; - -/** - * Get image for data - * @param {Buffer|String} data file data or file path - * @param {String} contentType - * @returns {Promise} - */ -ImageUtils.getImage = function (data, contentType = 'image/png') { - return new Promise(function (resolve, reject) { - var image; - if (ImageUtils.useNodeCanvas) { - var Canvas = require('canvas'); - image = new Canvas.Image(); - } else { - image = new Image(); - } - image.onload = () => { - resolve(image); - }; - image.onerror = (error) => { - reject(error); - }; - var src = data; - if (data instanceof Buffer) { - src = 'data:' + contentType + ';base64,' + data.toString('base64'); - } - image.src = src; - }.bind(this)); -}; - -/** - * Get a scaled image - * @param {Buffer} data - * @param {Number} scale - * @returns {Promise} - */ -ImageUtils.getScaledImage = function (data, scale) { - return ImageUtils.getImage(data).then(function (image) { - return ImageUtils.scaleBitmap(image, scale); - }.bind(this)); -}; - -/** - * Get a scaled image - * @param {Image} image - * @param {Number} scale - * @returns {Promise} - */ -ImageUtils.scaleBitmap = function (image, scale) { - if (scale === 1.0) { - return Promise.resolve(image); - } else { - var iconWidth = image.width; - var iconHeight = image.height; - var scaledWidth = Math.round(scale * iconWidth); - var scaledHeight = Math.round(scale * iconHeight); - var canvas, ctx, img; - if (ImageUtils.useNodeCanvas) { - var Canvas = require('canvas'); - canvas = Canvas.createCanvas(scaledWidth, scaledHeight); - img = new Canvas.Image(); - } else { - canvas = document.createElement('canvas'); - canvas.width = scaledWidth; - canvas.height = scaledHeight; - img = new Image(); - } - ctx = canvas.getContext('2d'); - ctx.drawImage(image, 0, 0, iconWidth, iconHeight, 0, 0, scaledWidth, scaledHeight); - return new Promise(function (resolve) { - img.onload = () => { resolve(img); }; - img.src = canvas.toDataURL(); - }.bind(this)); - } -}; - -module.exports = ImageUtils; - -}).call(this,require('_process'),require("buffer").Buffer) -},{"_process":284,"buffer":182,"canvas":undefined,"image-size":244}],90:[function(require,module,exports){ -/** - * @module tiles/matrix - * @see module:dao/dao - */ - -var Dao = require('../../dao/dao') - // , ContentsDao = require('../../core/contents').ContentsDao - , TileMatrixSetDao = require('../matrixset').TileMatrixSetDao; - -var util = require('util'); - -/** - * Tile Matrix object. Documents the structure of the tile matrix at each zoom - * level in each tiles table. It allows GeoPackages to contain rectangular as - * well as square tiles (e.g. for better representation of polar regions). It - * allows tile pyramids with zoom levels that differ in resolution by factors of - * 2, irregular intervals, or regular intervals other than factors of 2. - * @class TileMatrix - */ -var TileMatrix = function() { - - /** - * Tile Pyramid User Data Table Name - * @member {string} - */ - this.table_name; - - /** - * 0 ⇠zoom_level ⇠max_level for table_name - * @member {Number} - */ - this.zoom_level; - - /** - * Number of columns (>= 1) in tile matrix at this zoom level - * @member {Number} - */ - this.matrix_width; - - /** - * Number of rows (>= 1) in tile matrix at this zoom level - * @member {Number} - */ - this.matrix_height; - - /** - * Tile width in pixels (>= 1)for this zoom level - * @member {Number} - */ - this.tile_width; - - /** - * Tile height in pixels (>= 1)for this zoom level - * @member {Number} - */ - this.tile_height; - - /** - * In t_table_name srid units or default meters for srid 0 (>0) - * @member {Number} - */ - this.pixel_x_size; - - /** - * In t_table_name srid units or default meters for srid 0 (>0) - * @member {Number} - */ - this.pixel_y_size; -}; - -/** - * Tile Matrix Set Data Access Object - * @class TileMatrixDao - * @extends {module:dao/dao~Dao} - */ -var TileMatrixDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(TileMatrixDao, Dao); - -TileMatrixDao.prototype.createObject = function () { - return new TileMatrix(); -}; - -/** - * get the Contents of the Tile matrix - * @param {tileMatrix} tileMatrix the tile matrix - * @param {Function} callback returns the contents - */ -TileMatrixDao.prototype.getContents = function (tileMatrix) { - var dao = this.geoPackage.getContentsDao(); - return dao.queryForId(tileMatrix.table_name); -}; - -TileMatrixDao.prototype.getTileMatrixSet = function (tileMatrix) { - var dao = this.geoPackage.getTileMatrixSetDao(); - return dao.queryForId(tileMatrix.table_name); -}; - -TileMatrixDao.TABLE_NAME = "gpkg_tile_matrix"; -TileMatrixDao.COLUMN_PK1 = "table_name"; -TileMatrixDao.COLUMN_PK2 = "zoom_level"; -TileMatrixDao.COLUMN_TABLE_NAME = "table_name"; -TileMatrixDao.COLUMN_ZOOM_LEVEL = "zoom_level"; -TileMatrixDao.COLUMN_MATRIX_WIDTH = "matrix_width"; -TileMatrixDao.COLUMN_MATRIX_HEIGHT = "matrix_height"; -TileMatrixDao.COLUMN_TILE_WIDTH = "tile_width"; -TileMatrixDao.COLUMN_TILE_HEIGHT = "tile_height"; -TileMatrixDao.COLUMN_PIXEL_X_SIZE = "pixel_x_size"; -TileMatrixDao.COLUMN_PIXEL_Y_SIZE = "pixel_y_size"; - -TileMatrix.TABLE_NAME = 'tableName'; -TileMatrix.ZOOM_LEVEL = 'zoomLevel'; -TileMatrix.MATRIX_WIDTH = 'matrixWidth'; -TileMatrix.MATRIX_HEIGHT = 'matrixHeight'; -TileMatrix.TILE_WIDTH = 'tileWidth'; -TileMatrix.TILE_HEIGHT = 'tileHeight'; -TileMatrix.PIXEL_X_SIZE = 'pixelXSize'; -TileMatrix.PIXEL_Y_SIZE = 'pixelYSize'; - - -TileMatrixDao.prototype.gpkgTableName = 'gpkg_tile_matrix'; -TileMatrixDao.prototype.idColumns = [TileMatrixDao.COLUMN_PK1, TileMatrixDao.COLUMN_PK2]; -TileMatrixDao.prototype.columns = [TileMatrixDao.COLUMN_TABLE_NAME, TileMatrixDao.COLUMN_ZOOM_LEVEL, TileMatrixDao.COLUMN_MATRIX_WIDTH, TileMatrixDao.COLUMN_MATRIX_HEIGHT, TileMatrixDao.COLUMN_TILE_WIDTH, TileMatrixDao.COLUMN_TILE_HEIGHT, TileMatrixDao.COLUMN_PIXEL_X_SIZE, TileMatrixDao.COLUMN_PIXEL_Y_SIZE]; - -module.exports.TileMatrixDao = TileMatrixDao; -module.exports.TileMatrix = TileMatrix; - -},{"../../dao/dao":11,"../matrixset":91,"util":343}],91:[function(require,module,exports){ -/** - * @module tiles/matrixset - * @see module:dao/dao - */ - -var Dao = require('../../dao/dao') - , BoundingBox = require('../../boundingBox') - , SpatialReferenceSystemDao = require('../../core/srs').SpatialReferenceSystemDao; - // , ContentsDao = require('../../core/contents').ContentsDao; - -var util = require('util'); - -/** - * `TileMatrixSet` models the [`gpkg_tile_matrix_set`](https://www.geopackage.org/spec121/index.html#_tile_matrix_set) - * table. A row in this table defines the minimum bounding box (min_x, min_y, - * max_x, max_y) and spatial reference system (srs_id) for all tiles in a - * [tile pyramid](https://www.geopackage.org/spec121/index.html#tiles_user_tables) - * user data table. While the parent [Contents]{@link module:core/contents~Contents} - * row/object also defines a bounding box, the tile matrix set bounding box is - * used as the reference for calculating tile column/row matrix coordinates, so - * (min_x, max_y) in SRS coordinates would be the upper-left corner of the tile - * at tile matrix coordinate (0, 0). The parent `Contents` bounding box may be - * smaller or larger than the `TileMatrixSet` bounding box, and its purpose is - * to guide a user-facing application to the target region of the tile pyramid. - * The [`srs_id`]{@link module:tiles/matrixset~TileMatrixSet#srs_id} of the `TileMatrixSet`, on the other hand, must - * match that of the parent [`Contents`]{@link module:core/contents~Contents#srs_id}. - * - * @class TileMatrixSet - */ -var TileMatrixSet = function() { - - /** - * Name of the [tile pyramid user data table](https://www.geopackage.org/spec121/index.html#tiles_user_tables) - * that stores the tiles - * @member {string} - */ - this.table_name; - - /** - * Unique identifier for each Spatial Reference System within a GeoPackage - * @member {SRSRef} - */ - this.srs_id; - - /** - * Bounding box minimum easting or longitude for all content in table_name - * @member {Number} - */ - this.min_x; - - /** - * Bounding box minimum northing or latitude for all content in table_name - * @member {Number} - */ - this.min_y; - - /** - * Bounding box maximum easting or longitude for all content in table_name - * @member {Number} - */ - this.max_x; - - /** - * Bounding box maximum northing or latitude for all content in table_name - * @member {Number} - */ - this.max_y; -}; - -TileMatrixSet.prototype.setBoundingBox = function (boundingBox) { - this.min_x = boundingBox.minLongitude; - this.max_x = boundingBox.maxLongitude; - this.min_y = boundingBox.minLatitude; - this.max_y = boundingBox.maxLatitude; -}; - -TileMatrixSet.prototype.getBoundingBox = function () { - return new BoundingBox(this.min_x, this.max_x, this.min_y, this.max_y); -}; - -TileMatrixSet.prototype.setContents = function(contents) { - if (contents && contents.data_type === 'tiles') { - this.table_name = contents.table_name; - } -} - -/** - * Tile Matrix Set Data Access Object - * @class TileMatrixSetDao - * @extends {module:dao/dao~Dao} - */ -var TileMatrixSetDao = function(geoPackage) { - Dao.call(this, geoPackage); -} - -util.inherits(TileMatrixSetDao, Dao); - -TileMatrixSetDao.prototype.createObject = function () { - return new TileMatrixSet(); -}; - -/** - * Get the tile table names - * @param {Function} callback returns the tile table names - */ -TileMatrixSetDao.prototype.getTileTables = function () { - var tableNames = []; - for (var result of this.connection.each('select ' + TileMatrixSetDao.COLUMN_TABLE_NAME + ' from ' + TileMatrixSetDao.TABLE_NAME)) { - tableNames.push(result[TileMatrixSetDao.COLUMN_TABLE_NAME]); - } - return tableNames; -}; - -TileMatrixSetDao.prototype.getProjection = function (tileMatrixSet) { - var srs = this.getSrs(tileMatrixSet); - if (!srs) return; - var srsDao = this.geoPackage.getSpatialReferenceSystemDao(); - return srsDao.getProjection(srs); -}; - -/** - * Get the Spatial Reference System of the Tile Matrix set - * @param {TileMatrixSet} tileMatrixSet tile matrix set - */ -TileMatrixSetDao.prototype.getSrs = function (tileMatrixSet) { - var dao = this.geoPackage.getSpatialReferenceSystemDao(); - return dao.queryForId(tileMatrixSet.srs_id); -}; - -TileMatrixSetDao.prototype.getContents = function (tileMatrixSet) { - var dao = this.geoPackage.getContentsDao(); - return dao.queryForId(tileMatrixSet.table_name); -}; - -TileMatrixSet.TABLE_NAME = "tableName"; -TileMatrixSet.MIN_X = "minX"; -TileMatrixSet.MIN_Y = "minY"; -TileMatrixSet.MAX_X = "maxX"; -TileMatrixSet.MAX_Y = "maxY"; -TileMatrixSet.SRS_ID = "srsId"; - -TileMatrixSetDao.TABLE_NAME = "gpkg_tile_matrix_set"; -TileMatrixSetDao.COLUMN_PK = "table_name"; -TileMatrixSetDao.COLUMN_TABLE_NAME = "table_name"; -TileMatrixSetDao.COLUMN_SRS_ID = "srs_id"; -TileMatrixSetDao.COLUMN_MIN_X = "min_x"; -TileMatrixSetDao.COLUMN_MIN_Y = "min_y"; -TileMatrixSetDao.COLUMN_MAX_X = "max_x"; -TileMatrixSetDao.COLUMN_MAX_Y = "max_y"; - -TileMatrixSetDao.prototype.gpkgTableName = 'gpkg_tile_matrix_set'; -TileMatrixSetDao.prototype.idColumns = [TileMatrixSetDao.COLUMN_PK]; -TileMatrixSetDao.prototype.columns = [TileMatrixSetDao.COLUMN_TABLE_NAME, TileMatrixSetDao.COLUMN_SRS_ID, TileMatrixSetDao.COLUMN_MIN_X, TileMatrixSetDao.COLUMN_MIN_Y, TileMatrixSetDao.COLUMN_MAX_X, TileMatrixSetDao.COLUMN_MAX_Y]; - -TileMatrixSetDao.prototype.columnToPropertyMap = {}; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_TABLE_NAME] = TileMatrixSet.TABLE_NAME; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_SRS_ID] = TileMatrixSet.SRS_ID; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MIN_X] = TileMatrixSet.MIN_X; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MIN_Y] = TileMatrixSet.MIN_Y; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MAX_X] = TileMatrixSet.MAX_X; -TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MAX_Y] = TileMatrixSet.MAX_Y; - -module.exports.TileMatrixSetDao = TileMatrixSetDao; -module.exports.TileMatrixSet = TileMatrixSet; - -},{"../../boundingBox":7,"../../core/srs":9,"../../dao/dao":11,"util":343}],92:[function(require,module,exports){ -var TileMatrixSetDao = require('../matrixset').TileMatrixSetDao - , TileBoundingBoxUtils = require('../tileBoundingBoxUtils') - , TileCreator = require('../creator') - , BoundingBox = require('../../boundingBox'); - -var proj4 = require('proj4'); - -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -var GeoPackageTileRetriever = function(tileDao, width, height) { - this.tileDao = tileDao; - this.tileDao.adjustTileMatrixLengths(); - - this.width = width; - this.height = height; -} - -module.exports = GeoPackageTileRetriever; - -GeoPackageTileRetriever.prototype.getWebMercatorBoundingBox = function () { - if (this.setWebMercatorBoundingBox) { - return this.setWebMercatorBoundingBox; - } else { - var tileMatrixSetDao = this.tileDao.geoPackage.getTileMatrixSetDao(); - var tileMatrixSet = this.tileDao.tileMatrixSet; - var srs = tileMatrixSetDao.getSrs(tileMatrixSet); - this.setProjectionBoundingBox = tileMatrixSet.getBoundingBox(); - if (srs.organization_coordsys_id === 4326 && srs.organization === 'EPSG') { - this.setProjectionBoundingBox.minLatitude = Math.max(this.setProjectionBoundingBox.minLatitude, -85.05); - this.setProjectionBoundingBox.maxLatitude = Math.min(this.setProjectionBoundingBox.maxLatitude, 85.05); - } - this.setWebMercatorBoundingBox = this.setProjectionBoundingBox.projectBoundingBox(this.tileDao.projection, 'EPSG:3857'); - - return this.setWebMercatorBoundingBox; - } -}; - -GeoPackageTileRetriever.prototype.hasTile = function (x, y, zoom) { - var webMercatorBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, zoom); - var tileMatrix = this.tileDao.getTileMatrixWithZoomLevel(zoom); - var iterator = this.retrieveTileResults(webMercatorBoundingBox, tileMatrix); - var exists = false; - for (var row of iterator) { - exists = true; - } - return exists; -}; - -GeoPackageTileRetriever.prototype.getTile = function (x, y, zoom) { - var webMercatorBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, zoom); - var gpZoom = this.determineGeoPackageZoomLevel(webMercatorBoundingBox, zoom); - return this.getTileWithBounds(webMercatorBoundingBox, gpZoom, 'EPSG:3857'); -}; - -GeoPackageTileRetriever.prototype.drawTileIn = function (x, y, zoom, canvas) { - var webMercatorBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, zoom); - var gpZoom = this.determineGeoPackageZoomLevel(webMercatorBoundingBox, zoom); - return this.getTileWithBounds(webMercatorBoundingBox, gpZoom, 'EPSG:3857', canvas); -}; - -GeoPackageTileRetriever.prototype.getTileWithWgs84Bounds = function (wgs84BoundingBox, zoom) { - var webMercatorBoundingBox = wgs84BoundingBox.projectBoundingBox('EPSG:4326', 'EPSG:3857'); - var gpZoom = this.determineGeoPackageZoomLevel(webMercatorBoundingBox, zoom); - return this.getTileWithBounds(webMercatorBoundingBox, gpZoom, 'EPSG:3857'); -}; - -GeoPackageTileRetriever.prototype.getTileWithWgs84BoundsInProjection = function (wgs84BoundingBox, zoom, targetProjection) { - var targetBoundingBox = wgs84BoundingBox.projectBoundingBox('EPSG:4326', targetProjection); - return this.getTileWithBounds(targetBoundingBox, zoom, targetProjection); -}; - -GeoPackageTileRetriever.prototype.getWebMercatorTile = function (x, y, zoom) { - // need to determine the geoPackage zoom level from the web mercator zoom level - var webMercatorBoundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, zoom); - var gpZoom = this.determineGeoPackageZoomLevel(webMercatorBoundingBox, zoom); - return this.getTileWithBounds(webMercatorBoundingBox, gpZoom, 'EPSG:3857'); -}; - -GeoPackageTileRetriever.prototype.determineGeoPackageZoomLevel = function(webMercatorBoundingBox, zoom) { - // find width and height of this tile in geopackage projection - var proj4Projection = proj4(this.tileDao.projection, 'EPSG:3857'); - var ne = proj4Projection.inverse([webMercatorBoundingBox.maxLongitude, webMercatorBoundingBox.maxLatitude]); - var sw = proj4Projection.inverse([webMercatorBoundingBox.minLongitude, webMercatorBoundingBox.minLatitude]); - var width = (ne[0] - sw[0]); - var height = (ne[1] - sw[1]); - var gpZoom = undefined; - // find the closest zoom for width - for (var i = 0; i < this.tileDao.widths.length; i++) { - var tileWidth = this.tileDao.widths[i]; - var difference = Math.abs(width - tileWidth); - var tolerance = .001 * tileWidth; - if (tileWidth <= width || difference <= tolerance) { - gpZoom = this.tileDao.maxZoom - i; - } - } - - return gpZoom; -}; - -GeoPackageTileRetriever.prototype.getTileWithBounds = function (targetBoundingBox, zoom, targetProjection, canvas) { - var tiles = []; - var tileMatrix = this.tileDao.getTileMatrixWithZoomLevel(zoom); - if (!tileMatrix) return Promise.resolve(); - var tileWidth = tileMatrix.tile_width; - var tileHeight = tileMatrix.tile_height; - var matrixSetBoundsInTargetProjection = this.tileDao.tileMatrixSet.getBoundingBox().projectBoundingBox(this.tileDao.projection, targetProjection); - - var matrixTotalBoundingBox = this.tileDao.tileMatrixSet.getBoundingBox(); - var targetBoundingBoxInMatrixSetProjection = targetBoundingBox.projectBoundingBox(targetProjection, this.tileDao.projection); - - var tileGrid = TileBoundingBoxUtils.getTileGridWithTotalBoundingBox(matrixTotalBoundingBox, tileMatrix.matrix_width, tileMatrix.matrix_height, targetBoundingBoxInMatrixSetProjection); - var creator = TileCreator.initialize(this.width || tileWidth, this.height || tileHeight, tileMatrix, this.tileDao.tileMatrixSet, targetBoundingBox, this.tileDao.srs, targetProjection, canvas); - - var iterator = this.retrieveTileResults(targetBoundingBox.projectBoundingBox(targetProjection, this.tileDao.projection), tileMatrix); - for (var tile of iterator) { - tiles.push({ - data: tile.getTileData(), - gridColumn: tile.getTileColumn(), - gridRow: tile.getRow() - }); - } - - return tiles.reduce(function(sequence, tile) { - return sequence.then(function() { - return creator.addTile(tile.data, tile.gridColumn, tile.gridRow); - }); - }, Promise.resolve()) - .then(function() { - if (!canvas) { - return creator.getCompleteTile('png'); - } - }); -}; - -GeoPackageTileRetriever.prototype.retrieveTileResults = function (tileMatrixProjectionBoundingBox, tileMatrix) { - if(tileMatrix) { - var tileGrid = TileBoundingBoxUtils.getTileGridWithTotalBoundingBox(this.tileDao.tileMatrixSet.getBoundingBox(), tileMatrix.matrix_width, tileMatrix.matrix_height, tileMatrixProjectionBoundingBox); - return this.tileDao.queryByTileGrid(tileGrid, tileMatrix.zoom_level); - } else { - return Promise.resolve(); - } -}; - -},{"../../boundingBox":7,"../creator":79,"../matrixset":91,"../tileBoundingBoxUtils":93,"proj4":285}],93:[function(require,module,exports){ - -/** - * This module exports utility functions for [slippy map (XYZ)](https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames) - * tile calculations. - * - * @module tiles/tileBoundingBoxUtils - */ - -const BoundingBox = require('../boundingBox'); -const TileGrid = require('./tileGrid'); -const proj4 = ((proj4) => { return 'default' in proj4 ? proj4['default'] : proj4 })(require('proj4')); - -var WEB_MERCATOR_HALF_WORLD_WIDTH = proj4('EPSG:4326', 'EPSG:3857').forward([180, 0])[0]; - -/** - * Calculate the bounds in tile coordinates that covers the given bounding box - * at the given zoom level. The result object contains the keys `minX`, `maxX`, - * `minY`, and `maxY`, which are tile column and row values in the XYZ tile - * scheme. - * - * @param {BoundingBox} webMercatorBoundingBox bounds in EPSG:3857 coordinates (meters) - * @param {number} zoom the integral zoom level - * @returns {{minX: number, maxX: number, minY: number, maxY: number}} bounds in tile column and row coordinates - */ -module.exports.webMercatorTileBox = function(webMercatorBoundingBox, zoom) { - var tilesPerSide = module.exports.tilesPerSideWithZoom(zoom); - var tileSize = module.exports.tileSizeWithTilesPerSide(tilesPerSide); - - const minLonClip = Math.max(-WEB_MERCATOR_HALF_WORLD_WIDTH, webMercatorBoundingBox.minLongitude); - const maxLonClip = Math.min(WEB_MERCATOR_HALF_WORLD_WIDTH, webMercatorBoundingBox.maxLongitude); - const minLatClip = Math.max(-WEB_MERCATOR_HALF_WORLD_WIDTH, webMercatorBoundingBox.minLatitude); - const maxLatClip = Math.min(WEB_MERCATOR_HALF_WORLD_WIDTH, webMercatorBoundingBox.maxLatitude); - - var minX = Math.floor((minLonClip + WEB_MERCATOR_HALF_WORLD_WIDTH) / tileSize); - var maxX = Math.max(0, Math.ceil((maxLonClip + WEB_MERCATOR_HALF_WORLD_WIDTH) / tileSize) - 1); - var minY = Math.floor((WEB_MERCATOR_HALF_WORLD_WIDTH - maxLatClip) / tileSize); - var maxY = Math.max(0, Math.ceil((WEB_MERCATOR_HALF_WORLD_WIDTH - minLatClip) / tileSize) - 1); - - return { - minX: minX, - maxX: maxX, - minY: minY, - maxY: maxY - }; -} - -module.exports.WEB_MERCATOR_HALF_WORLD_WIDTH = WEB_MERCATOR_HALF_WORLD_WIDTH; - -module.exports.determinePositionAndScale = function(geoPackageTileBoundingBox, tileHeight, tileWidth, totalBoundingBox, totalHeight, totalWidth) { - var p = {}; - - var finalTileWidth = totalBoundingBox.maxLongitude - totalBoundingBox.minLongitude; - var xoffsetMin = geoPackageTileBoundingBox.minLongitude - totalBoundingBox.minLongitude; - var xpercentageMin = xoffsetMin / finalTileWidth; - - var finalTileHeight = totalBoundingBox.maxLatitude - totalBoundingBox.minLatitude; - var yoffsetMax = totalBoundingBox.maxLatitude - geoPackageTileBoundingBox.maxLatitude; - var ypercentageMax = yoffsetMax / finalTileHeight; - - var gpTileWidth = geoPackageTileBoundingBox.maxLongitude - geoPackageTileBoundingBox.minLongitude; - var gpPixelsPerUnitWidth = tileWidth / gpTileWidth; - - var finalTilePixelsPerUnitWidth = totalWidth / finalTileWidth; - - var xPositionInFinalTileUnits = ((geoPackageTileBoundingBox.minLongitude - totalBoundingBox.minLongitude) * finalTilePixelsPerUnitWidth); - var widthInFinalTileUnits = Math.round(((geoPackageTileBoundingBox.maxLongitude - geoPackageTileBoundingBox.minLongitude) * finalTilePixelsPerUnitWidth)); - - var gpTileHeight = geoPackageTileBoundingBox.maxLatitude - geoPackageTileBoundingBox.minLatitude; - var gpPixelsPerUnitHeight = tileHeight / gpTileHeight; - - var finalTilePixelsPerUnitHeight = totalHeight / finalTileHeight; - - var yPositionInFinalTileUnits = ((totalBoundingBox.maxLatitude - geoPackageTileBoundingBox.maxLatitude) * finalTilePixelsPerUnitHeight); - var heightInFinalTileUnits = Math.round((geoPackageTileBoundingBox.maxLatitude - geoPackageTileBoundingBox.minLatitude) * finalTilePixelsPerUnitHeight); - - p.yPositionInFinalTileStart = Math.round(ypercentageMax * totalHeight); - p.xPositionInFinalTileStart = Math.round(xpercentageMin * totalWidth); - p.dx = p.xPositionInFinalTileStart; - p.dy = p.yPositionInFinalTileStart; - p.sx = 0; - p.sy = 0; - p.dWidth = widthInFinalTileUnits; - p.dHeight = heightInFinalTileUnits; - p.sWidth = tileWidth; - p.sHeight = tileHeight; - - return p; -} - -/** - * Calculate the bounds in EPSG:3857 coordinates of the tile at the given XYZ - * coordinates coordinates and zoom level. - * - * @param {number} x tile column - * @param {number} y tile row - * @param {number} zoom zoom level - * @return {BoundingBox} a bounding box in EPSG:3857 meters - */ -module.exports.getWebMercatorBoundingBoxFromXYZ = function(x, y, zoom, options) { - var tilesPerSide = module.exports.tilesPerSideWithZoom(zoom); - var tileSize = module.exports.tileSizeWithTilesPerSide(tilesPerSide); - - var meterBuffer = 0; - if (options && options.buffer && options.tileSize) { - var pixelBuffer = options.buffer; - var metersPerPixel = tileSize / options.tileSize; - meterBuffer = metersPerPixel * pixelBuffer; - } - - var minLon = (-1 * WEB_MERCATOR_HALF_WORLD_WIDTH) + (x * tileSize) - meterBuffer; - var maxLon = (-1 * WEB_MERCATOR_HALF_WORLD_WIDTH) + ((x + 1) * tileSize) + meterBuffer; - var minLat = WEB_MERCATOR_HALF_WORLD_WIDTH - ((y + 1) * tileSize) - meterBuffer; - var maxLat = WEB_MERCATOR_HALF_WORLD_WIDTH - (y * tileSize) + meterBuffer; - - minLon = Math.max((-1 * WEB_MERCATOR_HALF_WORLD_WIDTH), minLon); - maxLon = Math.min(WEB_MERCATOR_HALF_WORLD_WIDTH, maxLon); - minLat = Math.max((-1 * WEB_MERCATOR_HALF_WORLD_WIDTH), minLat); - maxLat = Math.min(WEB_MERCATOR_HALF_WORLD_WIDTH, maxLat); - - var box = new BoundingBox(minLon, maxLon, minLat, maxLat); - - return box; -} - -/** - * Get the tile size in meters - * - * @param tilesPerSide tiles per side - * - * @return meters - */ -module.exports.tileSizeWithTilesPerSide = function(tilesPerSide) { - return (2 * WEB_MERCATOR_HALF_WORLD_WIDTH) / tilesPerSide; -} - -/** - * Get the tiles per side, width and height, at the zoom level - * - * @param zoom zoom level - * - * @return tiles per side - */ -module.exports.tilesPerSideWithZoom = function(zoom) { - return 1 << zoom; -} - -/** - * Get the tile grid - * - * @param webMercatorTotalBox web mercator total bounding box - * @param matrixWidth matrix width - * @param matrixHeight matrix height - * @param boundingBox bounding box - * - * @return tile grid - */ -module.exports.getTileGridWithTotalBoundingBox = function(totalBoundingBox, matrixWidth, matrixHeight, boundingBox) { - var minColumn = module.exports.getTileColumnWithTotalBoundingBox(totalBoundingBox, matrixWidth, boundingBox.minLongitude); - var maxColumn = module.exports.getTileColumnWithTotalBoundingBox(totalBoundingBox, matrixWidth, boundingBox.maxLongitude, true); - if (minColumn < matrixWidth && maxColumn >= 0) { - if (minColumn < 0) { - minColumn = 0; - } - if (maxColumn >= matrixWidth) { - maxColumn = matrixWidth - 1; - } - } - - var maxRow = module.exports.getRowWithTotalBoundingBox(totalBoundingBox, matrixHeight, boundingBox.minLatitude, true); - var minRow = module.exports.getRowWithTotalBoundingBox(totalBoundingBox, matrixHeight, boundingBox.maxLatitude); - - - if(minRow < matrixHeight && maxRow >= 0){ - if(minRow < 0){ - minRow = 0; - } - if(maxRow >= matrixHeight){ - maxRow = matrixHeight - 1; - } - } - - var tileGrid = new TileGrid(minColumn, maxColumn, minRow, maxRow); - return tileGrid; -} - -/** - * Get the tile column of the longitude in degrees - * - * @param webMercatorTotalBox web mercator total bounding box - * @param matrixWidth matrix width - * @param longitude longitude - * - * @return tile column - */ -module.exports.getTileColumnWithTotalBoundingBox = function(webMercatorTotalBox, matrixWidth, longitude, max) { - var minX = webMercatorTotalBox.minLongitude; - var maxX = webMercatorTotalBox.maxLongitude; - var tileId; - if (longitude < minX) { - tileId = -1; - } else if (longitude >= maxX) { - tileId = matrixWidth; - } else { - var matrixWidthMeters = maxX - minX; - var tileWidth = matrixWidthMeters / matrixWidth; - var tileIdDouble = ((longitude - minX) / tileWidth); - tileId = ~~tileIdDouble; - if (max) { - // if the edge lands right on the calculated edge, subtract one - if (tileIdDouble === tileId) { - tileId--; - } - } - } - return tileId; -} - -/** - * Get the tile row of the latitude in degrees - * - * @param webMercatorTotalBox web mercator total bounding box - * @param matrixHeight matrix height - * @param latitude latitude - * - * @return tile row - */ -module.exports.getRowWithTotalBoundingBox = function(webMercatorTotalBox, matrixHeight, latitude, max) { - var minY = webMercatorTotalBox.minLatitude; - var maxY = webMercatorTotalBox.maxLatitude; - - var tileId; - if (latitude < minY) { - tileId = matrixHeight; - } else if (latitude >= maxY) { - tileId = -1; - } else { - var matrixHeightMeters = maxY - minY; - var tileHeight = matrixHeightMeters / matrixHeight; - var tileIdDouble = ((maxY - latitude) / tileHeight); - tileId = ~~tileIdDouble; - if (max) { - // if the edge lands right on the calculated edge, add one - if (tileIdDouble === tileId) { - tileId--; - } - } - } - return tileId; -} - -/** - * Get the web mercator bounding box of the tile column and row in the tile - * matrix using the total bounding box - * - * @param webMercatorTotalBox web mercator total bounding box - * @param tileMatrix tile matrix - * @param tileColumn tile column - * @param tileRow tile row - * - * @return web mercator bounding box - */ -module.exports.getTileBoundingBox = function(box, tileMatrix, tileColumn, tileRow) { - var tileMatrixWidth = tileMatrix.matrix_width; - var tileMatrixHeight = tileMatrix.matrix_height; - var tileGrid = new TileGrid(tileColumn, tileColumn, tileRow, tileRow); - var matrixMinX = box.minLongitude; - var matrixMaxX = box.maxLongitude; - var matrixWidth = matrixMaxX - matrixMinX; - var tileWidth = matrixWidth / tileMatrixWidth; - - // Find the longitude range - var minLon = matrixMinX + (tileWidth * tileGrid.min_x); - var maxLon = minLon + (tileWidth * (tileGrid.max_x + 1 - tileGrid.min_x)); - - // Get the tile height - var matrixMinY = box.minLatitude; - var matrixMaxY = box.maxLatitude; - var matrixHeight = matrixMaxY - matrixMinY; - var tileHeight = matrixHeight / tileMatrixHeight; - - // Find the latitude range - var maxLat = matrixMaxY - (tileHeight * tileGrid.min_y); - var minLat = maxLat - (tileHeight * (tileGrid.max_y + 1 - tileGrid.min_y)); - - return new BoundingBox(minLon, maxLon, minLat, maxLat); -} - -module.exports.getTileGridBoundingBox = function(matrixSetBoundingBox, tileMatrixWidth, tileMatrixHeight, tileGrid) { - // Get the tile width - var matrixMinX = matrixSetBoundingBox.minLongitude; - var matrixMaxX = matrixSetBoundingBox.maxLongitude; - var matrixWidth = matrixMaxX - matrixMinX; - var tileWidth = matrixWidth / tileMatrixWidth; - - // Find the longitude range - var minLon = matrixMinX + (tileWidth * tileGrid.min_x); - var maxLon = minLon + (tileWidth * (tileGrid.max_x + 1 - tileGrid.min_x)); - - // Get the tile height - var matrixMinY = matrixSetBoundingBox.minLatitude; - var matrixMaxY = matrixSetBoundingBox.maxLatitude; - var matrixHeight = matrixMaxY - matrixMinY; - var tileHeight = matrixHeight / tileMatrixHeight; - - // Find the latitude range - var maxLat = matrixMaxY - (tileHeight * tileGrid.min_y); - var minLat = maxLat - (tileHeight * (tileGrid.max_y + 1 - tileGrid.min_y)); - - return new BoundingBox(minLon, maxLon, minLat, maxLat); -} - -module.exports.getXPixel = function(width, boundingBox, longitude) { - var boxWidth = boundingBox.maxLongitude - boundingBox.minLongitude; - var offset = longitude - boundingBox.minLongitude; - var percentage = offset / boxWidth; - return percentage * width; -} - -module.exports.getLongitudeFromPixel = function(width, boundingBox, tileBoundingBox, pixel) { - var boxWidth = tileBoundingBox.maxLongitude - tileBoundingBox.minLongitude; - var percentage = pixel / width; - var offset = percentage * boxWidth; - return offset + boundingBox.minLongitude; -} - -module.exports.getYPixel = function(height, boundingBox, latitude) { - var boxHeight = boundingBox.maxLatitude - boundingBox.minLatitude; - var offset = boundingBox.maxLatitude - latitude; - var percentage = offset / boxHeight; - return percentage * height; -} - -module.exports.getLatitudeFromPixel = function(height, boundingBox, tileBoundingBox, pixel) { - var boxHeight = tileBoundingBox.maxLatitude - tileBoundingBox.minLatitude; - var percentage = pixel / height; - var offset = percentage * boxHeight; - return boundingBox.maxLatitude - offset; -} - -},{"../boundingBox":7,"./tileGrid":94,"proj4":285}],94:[function(require,module,exports){ - -/** - * Tile grid with x and y ranges - * @module tiles/tileGrid - * @class - */ -var TileGrid = function(minX, maxX, minY, maxY) { - this.min_x = minX; - this.max_x = maxX; - this.min_y = minY; - this.max_y = maxY; -} - -TileGrid.prototype.count = function () { - return ((this.max_x + 1) - this.min_x) * ((this.max_y + 1) - this.min_y); -}; - -TileGrid.prototype.equals = function (tileGrid) { - if (!tileGrid) return false; - return this.min_x === tileGrid.min_x - && this.max_x === tileGrid.max_x - && this.min_y === tileGrid.min_y - && this.max_y === tileGrid.max_y; -}; - -module.exports = TileGrid; - -},{}],95:[function(require,module,exports){ -/** - * @module tiles/user/tileColumn - */ - -const UserColumn = require('../../user/userColumn'); -const DataTypes = require('../../db/dataTypes'); -const util = require('util'); - -/** - * `TileColumn` models columns in [user tile pyramid tables]{@link module:tiles/user/tileTable~TileTable}. - * - * @class - * @extends {module:user/userColumn~UserColumn} - */ -var TileColumn = function(index, name, dataType, max, notNull, defaultValue, primaryKey) { - UserColumn.call(this, index, name, dataType, max, notNull, defaultValue, primaryKey); - if (dataType === DataTypes.GPKG_DT_GEOMETRY) { - throw new Error('Data Type is required to create column: ' + name); - } -} - -util.inherits(TileColumn, UserColumn); - -/** - * Create an id column - * @param {number} index Index - */ -TileColumn.createIdColumn = function(index) { - return new TileColumn(index, TileColumn.COLUMN_ID, DataTypes.GPKGDataType.GPKG_DT_INTEGER, null, false, null, true); -} - -/** - * Create a zoom level column - * @param {number} index Index - */ -TileColumn.createZoomLevelColumn = function(index) { - return new TileColumn(index, TileColumn.COLUMN_ZOOM_LEVEL, DataTypes.GPKGDataType.GPKG_DT_INTEGER, null, true, null, false); -} - -/** - * Create a tile column column - * - * @param {number} index column index - */ -TileColumn.createTileColumnColumn = function(index) { - return new TileColumn(index, TileColumn.COLUMN_TILE_COLUMN, DataTypes.GPKGDataType.GPKG_DT_INTEGER, null, true, null, false); -} - -/** - * Create a tile row column - * - * @param {number} index column index - * - */ -TileColumn.createTileRowColumn = function(index) { - return new TileColumn(index, TileColumn.COLUMN_TILE_ROW, DataTypes.GPKGDataType.GPKG_DT_INTEGER, null, true, null, false); -} - -/** - * Create a tile data column - * - * @param {number} index column index - */ -TileColumn.createTileDataColumn = function(index) { - return new TileColumn(index, TileColumn.COLUMN_TILE_DATA, DataTypes.GPKGDataType.GPKG_DT_BLOB, null, true, null, false); -} - -TileColumn.COLUMN_ID = "id"; -TileColumn.COLUMN_ZOOM_LEVEL = "zoom_level"; -TileColumn.COLUMN_TILE_COLUMN = "tile_column"; -TileColumn.COLUMN_TILE_ROW = "tile_row"; -TileColumn.COLUMN_TILE_DATA = "tile_data"; - -module.exports = TileColumn; - -},{"../../db/dataTypes":14,"../../user/userColumn":105,"util":343}],96:[function(require,module,exports){ -/** - * tileDao module. - * @module tiles/user/tileDao - */ - -var UserDao = require('../../user/userDao') - , TileGrid = require('../tileGrid') - , TileRow = require('./tileRow') - , TileMatrixSetDao = require('../matrixset').TileMatrixSetDao - , TileMatrixDao = require('../matrix').TileMatrixDao - , ContentsDao = require('../../core/contents').ContentsDao - , BoundingBox = require('../../boundingBox') - , BoundingBoxUtils = require('../tileBoundingBoxUtils') - , BoundingBox = require('../../boundingBox') - , ColumnValues = require('../../dao/columnValues') - , TileColumn = require('./tileColumn') - , TileDaoUtils = require('./tileDaoUtils'); - -var util = require('util') - , proj4 = require('proj4'); - -proj4 = 'default' in proj4 ? proj4['default'] : proj4; - -/** - * `TileDao` is a {@link module:dao/dao~Dao} subclass for reading - * [user tile tables]{@link module:tiles/user/tileTable~TileTable}. - * - * @class TileDao - * @extends {module:user/userDao~UserDao} - * @param {GeoPackageConnection} connection - * @param {TileTable} table - * @param {TileMatrixSet} tileMatrixSet - * @param {TileMatrix[]} tileMatrices - */ -var TileDao = function(geoPackage, table, tileMatrixSet, tileMatrices) { - UserDao.call(this, geoPackage, table); - - this.tileMatrixSet = tileMatrixSet; - this.tileMatrices = tileMatrices; - this.zoomLevelToTileMatrix = []; - this.widths = []; - this.heights = []; - - if (tileMatrices.length === 0) { - this.minZoom = 0; - this.maxZoom = 0; - } else { - this.minZoom = this.tileMatrices[0].zoom_level; - this.maxZoom = this.tileMatrices[this.tileMatrices.length-1].zoom_level; - } - - // Populate the zoom level to tile matrix and the sorted tile widths and heights - for (var i = this.tileMatrices.length-1; i >= 0; i--) { - var tileMatrix = this.tileMatrices[i]; - this.zoomLevelToTileMatrix[tileMatrix.zoom_level] = tileMatrix; - } - - this.initialize(); -} - -util.inherits(TileDao, UserDao); - -TileDao.prototype.initialize = function() { - var tileMatrixSetDao = this.geoPackage.getTileMatrixSetDao(); - this.srs = tileMatrixSetDao.getSrs(this.tileMatrixSet); - this.projection = this.srs.organization.toUpperCase() + ':' + this.srs.organization_coordsys_id; - - // Populate the zoom level to tile matrix and the sorted tile widths and heights - for (var i = this.tileMatrices.length-1; i >= 0; i--) { - var tileMatrix = this.tileMatrices[i]; - - var width = tileMatrix.pixel_x_size * tileMatrix.tile_width; - var height = tileMatrix.pixel_y_size * tileMatrix.tile_height; - var proj4Projection = proj4(this.projection); - if (proj4Projection.to_meter) { - width = proj4Projection.to_meter * tileMatrix.pixel_x_size * tileMatrix.tile_width; - height = proj4Projection.to_meter * tileMatrix.pixel_y_size * tileMatrix.tile_height; - } - this.widths.push(width); - this.heights.push(height); - } - this.setWebMapZoomLevels(); -} - -TileDao.prototype.webZoomToGeoPackageZoom = function(webZoom) { - var webMercatorBoundingBox = BoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(0, 0, webZoom); - return this.determineGeoPackageZoomLevel(webMercatorBoundingBox, webZoom); -} - -TileDao.prototype.setWebMapZoomLevels = function() { - this.minWebMapZoom = 20; - this.maxWebMapZoom = 0; - - this.webZoomToGeoPackageZooms = {}; - - var totalTileWidth = this.tileMatrixSet.max_x - this.tileMatrixSet.min_x; - var totalTileHeight = this.tileMatrixSet.max_y - this.tileMatrixSet.min_y; - for (var i = 0; i < this.tileMatrices.length; i++) { - var tileMatrix = this.tileMatrices[i]; - var singleTileWidth = totalTileWidth / tileMatrix.matrix_width; - var singleTileHeight = totalTileHeight / tileMatrix.matrix_height; - var tileBox = new BoundingBox(this.tileMatrixSet.min_x, this.tileMatrixSet.min_x + singleTileWidth, this.tileMatrixSet.min_y, this.tileMatrixSet.min_y + singleTileHeight); - var proj4Projection = proj4(this.projection, 'EPSG:4326'); - var ne = proj4Projection.forward([tileBox.maxLongitude, tileBox.maxLatitude]); - var sw = proj4Projection.forward([tileBox.minLongitude, tileBox.minLatitude]); - var width = (ne[0] - sw[0]); - var height = (ne[1] - sw[1]); - var zoom = Math.ceil(Math.log2(360/width)); - if (this.minWebMapZoom > zoom) { - this.minWebMapZoom = zoom; - } - if (this.maxWebMapZoom < zoom) { - this.maxWebMapZoom = zoom; - } - this.webZoomToGeoPackageZooms[zoom] = tileMatrix.zoom_level; - } -} - -TileDao.prototype.determineGeoPackageZoomLevel = function(webMercatorBoundingBox, zoom) { - return this.webZoomToGeoPackageZooms[zoom]; -}; - -/** - * Get the bounding box of tiles at the zoom level - * @param {Number} zoomLevel zoom level - * @return {BoundingBox} bounding box of the zoom level, or null if no tiles - */ -TileDao.prototype.getBoundingBoxWithZoomLevel = function (zoomLevel) { - var boundingBox; - - var tileMatrix = this.getTileMatrixWithZoomLevel(zoomLevel); - if (tileMatrix) { - var tileGrid = this.queryForTileGridWithZoomLevel(zoomLevel); - if (tileGrid) { - var matrixSetBoundingBox = this.getBoundingBox(); - boundingBox = BoundingBoxUtils.getTileGridBoundingBox(matrixSetBoundingBox, tileMatrix.matrix_width, tileMatrix.matrix_height, tileGrid); - } - return boundingBox; - } else { - return boundingBox; - } -}; - -TileDao.prototype.getBoundingBox = function () { - return this.tileMatrixSet.getBoundingBox(); -}; - -TileDao.prototype.queryForTileGridWithZoomLevel = function (zoomLevel) { - var where = this.buildWhereWithFieldAndValue(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - var whereArgs = this.buildWhereArgs(zoomLevel); - var minX = this.minOfColumn(TileColumn.COLUMN_TILE_COLUMN, where, whereArgs); - var maxX = this.maxOfColumn(TileColumn.COLUMN_TILE_COLUMN, where, whereArgs); - var minY = this.minOfColumn(TileColumn.COLUMN_TILE_ROW, where, whereArgs); - var maxY = this.maxOfColumn(TileColumn.COLUMN_TILE_ROW, where, whereArgs); - var tileGrid; - if (minX != null && minY != null && maxX != null && maxY != null) { - tileGrid = new TileGrid(minX, maxX, minY, maxY); - } - return tileGrid; -}; - -/** - * Get the tile grid of the zoom level - * @param {Number} zoomLevel zoom level - * @return {TileGrid} tile grid at zoom level, null if no tile matrix at zoom level - */ -TileDao.prototype.getTileGridWithZoomLevel = function (zoomLevel) { - var tileGrid; - var tileMatrix = this.getTileMatrixWithZoomLevel(zoomLevel); - if (tileMatrix) { - tileGrid = new TileGrid(0, ~~tileMatrix.matrix_width - 1, 0, ~~tileMatrix.matrix_height - 1); - } - return tileGrid; -}; - -/** - * get the tile table - * @return {TileTable} tile table - */ -TileDao.prototype.getTileTable = function () { - return this.table; -}; - -/** - * Create a new tile row with the column types and values - * @param {Array} columnTypes column types - * @param {Array} values values - * @return {TileRow} tile row - */ -TileDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new TileRow(this.getTileTable(), columnTypes, values); -}; - -/** - * Create a new tile row - * @return {TileRow} tile row - */ -TileDao.prototype.newRow = function () { - return new TileRow(this.getTileTable()); -}; - -/** - * Adjust the tile matrix lengths if needed. Check if the tile matrix width - * and height need to expand to account for pixel * number of pixels fitting - * into the tile matrix lengths - */ -TileDao.prototype.adjustTileMatrixLengths = function () { - TileDaoUtils.adjustTileMatrixLengths(this.tileMatrixSet, this.tileMatrices); -}; - -/** - * Get the tile matrix at the zoom level - * @param {Number} zoomLevel zoom level - * @return {TileMatrix} tile matrix - */ -TileDao.prototype.getTileMatrixWithZoomLevel = function (zoomLevel) { - return this.zoomLevelToTileMatrix[zoomLevel]; -}; - -/** - * Query for a tile - * @param {Number} column column - * @param {Number} row row - * @param {Number} zoomLevel zoom level - * @param {Function} callback called with an error if one occurred and the TileDao - */ -TileDao.prototype.queryForTile = function (column, row, zoomLevel) { - var fieldValues = new ColumnValues(); - fieldValues.addColumn(TileColumn.COLUMN_TILE_COLUMN, column); - fieldValues.addColumn(TileColumn.COLUMN_TILE_ROW, row); - fieldValues.addColumn(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - var tileRow; - for (var row of this.queryForFieldValues(fieldValues)) { - tileRow = this.getRow(row); - } - return tileRow; -}; - -TileDao.prototype.queryForTilesWithZoomLevel = function (zoomLevel, tileCallback) { - var iterator = this.queryForEach(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - var thisgetRow = this.getRow.bind(this); - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - return { - value: thisgetRow(nextRow.value), - done: false - }; - } - return { - done: true - } - }.bind(this) - } -}; - -/** - * Query for Tiles at a zoom level in descending row and column order - * @param {Number} zoomLevel zoom level - * @param {Function} tileCallback callback for each tile - * @param {Function} doneCallback called when all tiles are retrieved - */ -TileDao.prototype.queryForTilesDescending = function (zoomLevel, tileCallback) { - var iterator = this.queryForEach(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel, undefined, undefined, TileColumn.COLUMN_TILE_COLUMN + ' DESC, ' + TileColumn.COLUMN_TILE_ROW + ', DESC'); - - var thisgetRow = this.getRow.bind(this); - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - return { - value: thisgetRow(nextRow.value), - done: false - }; - } - return { - done: true - } - }.bind(this) - }; -}; - -/** - * Query for tiles at a zoom level and column - * @param {Number} column column - * @param {Number} zoomLevel zoom level - * @param {Function} tileCallback called for each tile - * @param {Function} doneCallback called when all tiles have been retrieved - */ -TileDao.prototype.queryForTilesInColumn = function (column, zoomLevel, tileCallback) { - var fieldValues = new ColumnValues(); - fieldValues.addColumn(TileColumn.COLUMN_TILE_COLUMN, column); - fieldValues.addColumn(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - - var iterator = this.queryForFieldValues(fieldValues); - var thisgetRow = this.getRow.bind(this); - - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var tileRow = thisgetRow(nextRow.value); - - return { - value: tileRow, - done: false - }; - } else { - return { - done: true - } - } - } - } -}; - -/** - * Query for tiles at a zoom level and row - * @param {Number} row row - * @param {Number} zoomLevel zoom level - * @param {Function} tileCallback called for each tile - * @param {Function} doneCallback called when all tiles have been retrieved - */ -TileDao.prototype.queryForTilesInRow = function (row, zoomLevel, tileCallback, doneCallback) { - var fieldValues = new ColumnValues(); - fieldValues.addColumn(TileColumn.COLUMN_TILE_ROW, row); - fieldValues.addColumn(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - - var iterator = this.queryForFieldValues(fieldValues); - var thisgetRow = this.getRow.bind(this); - - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var tileRow = thisgetRow(nextRow.value); - - return { - value: tileRow, - done: false - }; - } else { - return { - done: true - } - } - } - } -}; - -/** - * Query by tile grid and zoom level - * @param {TileGrid} tileGrid tile grid - * @param {Number} zoomLevel zoom level - * @param {Function} tileCallback called for each tile - * @param {Function} doneCallback called when all tiles have been retrieved - */ -TileDao.prototype.queryByTileGrid = function (tileGrid, zoomLevel) { - if (!tileGrid) return doneCallback(); - var tileCount = 0; - var x = tileGrid.min_x; - - var where = ''; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_COLUMN, tileGrid.min_x, '>='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_COLUMN, tileGrid.max_x, '<='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_ROW, tileGrid.min_y, '>='); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_ROW, tileGrid.max_y, '<='); - var whereArgs = this.buildWhereArgs([zoomLevel, tileGrid.min_x, tileGrid.max_x, tileGrid.min_y, tileGrid.max_y]); - - var iterator = this.queryWhereWithArgsDistinct(where, whereArgs); - var thisgetRow = this.getRow.bind(this); - - return { - [Symbol.iterator]() { - return this; - }, - next: function() { - var nextRow = iterator.next(); - if (!nextRow.done) { - var tileRow = thisgetRow(nextRow.value); - - return { - value: tileRow, - done: false - }; - } else { - return { - done: true - } - } - } - } -}; - -TileDao.prototype.deleteTile = function(column, row, zoomLevel) { - var where = ''; - - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_ZOOM_LEVEL, zoomLevel); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_COLUMN, column); - where += ' and '; - where += this.buildWhereWithFieldAndValue(TileColumn.COLUMN_TILE_ROW, row); - - var whereArgs = this.buildWhereArgs([zoomLevel, column, row]); - - return this.deleteWhere(where, whereArgs); -}; - -TileDao.prototype.getSrs = function() { - return this.geoPackage.getContentsDao().getSrs(this.tileMatrixSet); -}; - -TileDao.prototype.dropTable = function() { - var tileMatrixDao = this.geoPackage.getTileMatrixDao(); - var dropResult = UserDao.prototype.dropTable.call(this); - - var tileMatrixSetDao = this.geoPackage.getTileMatrixSetDao(); - tileMatrixSetDao.delete(this.tileMatrixSet); - - for (var i = this.tileMatrices.length-1; i >= 0; i--) { - var tileMatrix = this.tileMatrices[i]; - tileMatrixDao.delete(tileMatrix); - } - - var dao = this.geoPackage.getContentsDao(); - dao.deleteById(this.gpkgTableName); - return dropResult; -} - -TileDao.prototype.rename = function(newName) { - UserDao.prototype.rename.call(this, newName); - - var oldName = this.tileMatrixSet.table_name; - - var values = {}; - values[TileMatrixSetDao.COLUMN_TABLE_NAME] = newName; - - var where = this.buildWhereWithFieldAndValue(TileMatrixSetDao.COLUMN_TABLE_NAME, oldName); - var whereArgs = this.buildWhereArgs([oldName]); - - var contentsDao = this.geoPackage.getContentsDao(); - var contents = contentsDao.queryForId(oldName); - contents.table_name = newName; - contents.identifier = newName; - contentsDao.create(contents); - - var tileMatrixSetDao = this.geoPackage.getTileMatrixSetDao(); - tileMatrixSetDao.updateWithValues(values, where, whereArgs); - - var tileMatrixDao = this.geoPackage.getTileMatrixDao(); - var tileMatrixUpdate = {}; - tileMatrixUpdate[TileMatrixDao.COLUMN_TABLE_NAME] = newName; - var tileMatrixWhere = this.buildWhereWithFieldAndValue(TileMatrixDao.COLUMN_TABLE_NAME, oldName); - - tileMatrixDao.updateWithValues(tileMatrixUpdate, tileMatrixWhere, whereArgs); - - contentsDao.deleteById(oldName); -} - -module.exports = TileDao; - -},{"../../boundingBox":7,"../../core/contents":8,"../../dao/columnValues":10,"../../user/userDao":106,"../matrix":90,"../matrixset":91,"../tileBoundingBoxUtils":93,"../tileGrid":94,"./tileColumn":95,"./tileDaoUtils":97,"./tileRow":98,"proj4":285,"util":343}],97:[function(require,module,exports){ - -module.exports.adjustTileMatrixLengths = function(tileMatrixSet, tileMatrices) { - var tileMatrixWidth = tileMatrixSet.maxX - tileMatrixSet.minX; - var tileMatrixHeight = tileMatrixSet.maxY - tileMatrixSet.minY; - for (var i = 0; i < tileMatrices.length; i++) { - var tileMatrix = tileMatrices[i]; - var tempMatrixWidth = ~~((tileMatrixWidth / (tileMatrix.pixelXSize * ~~tileMatrix.tileWidth))); - var tempMatrixHeight = ~~((tileMatrixHeight / (tileMatrix.pixelYSize * ~~(tileMatrix.tileHeight)))); - if(tempMatrixWidth > ~~(tileMatrix.matrixWidth)) { - tileMatrix.matrixWidth = ~~(tempMatrixWidth); - } - if (tempMatrixHeight > ~~(tileMatrix.matrixHeight)) { - tileMatrix.matrixHeight = ~~(tempMatrixHeight); - } - } -} - -},{}],98:[function(require,module,exports){ -/** - * tileRow module. - * @module tiles/user/tileRow - */ - -var UserRow = require('../../user/userRow'); - -var util = require('util'); - -/** - * Tile Row containing the values from a single result set row - * @param {TileTable} tileTable tile table - * @param {Array} columnTypes column types - * @param {Array} values values - */ -var TileRow = function(tileTable, columnTypes, values) { - UserRow.call(this, tileTable, columnTypes, values); - this.tileTable = tileTable; -} - -util.inherits(TileRow, UserRow); - -TileRow.prototype.toObjectValue = function (value) { - return value; -}; - -TileRow.prototype.toDatabaseValue = function (columnName) { - return this.getValueWithColumnName(columnName); -}; - -/** - * Get the zoom level column index - * @return {Number} zoom level column index - */ -TileRow.prototype.getZoomLevelColumnIndex = function () { - return this.tileTable.zoomLevelIndex; -}; - -/** - * Get the zoom level column - * @return {TileColumn} zoom level column - */ -TileRow.prototype.getZoomLevelColumn = function() { - return this.tileTable.getZoomLevelColumn(); -} - -/** - * Get the zoom level - * @return {Number} zoom level - */ -TileRow.prototype.getZoomLevel = function () { - return this.getValueWithColumnName(this.getZoomLevelColumn().name); -}; - -/** - * Set the zoom level - * @param {Number} zoomLevel zoom level - */ -TileRow.prototype.setZoomLevel = function (zoomLevel) { - this.setValueWithIndex(this.getZoomLevelColumnIndex(), zoomLevel); -}; - -/** - * Get the tile column column Index - * @return {number} tile column column index - */ -TileRow.prototype.getTileColumnColumnIndex = function () { - return this.tileTable.tileColumnIndex; -}; - -/** - * Get the tile column column - * @return {TileColumn} tile column column - */ -TileRow.prototype.getTileColumnColumn = function () { - return this.tileTable.getTileColumnColumn(); -}; - -/** - * Get the tile column - * @return {Number} tile column - */ -TileRow.prototype.getTileColumn = function () { - return this.getValueWithColumnName(this.getTileColumnColumn().name); -}; - -/** - * Set the tile column - * @param {number} tileColumn tile column - */ -TileRow.prototype.setTileColumn = function (tileColumn) { - this.setValueWithColumnName(this.getTileColumnColumn().name, tileColumn); -}; - -/** - * Get the tile row column index - * @return {Number} tile row column index - */ -TileRow.prototype.getRowColumnIndex = function () { - return this.tileTable.tileRowIndex; -}; - -/** - * Get the tile row column - * @return {TileColumn} tile row column - */ -TileRow.prototype.getRowColumn = function () { - return this.tileTable.getRowColumn(); -}; - -/** - * Get the tile row - * @return {Number} tile row - */ -TileRow.prototype.getRow = function () { - return this.getValueWithColumnName(this.getRowColumn().name); -}; - -/** - * Set the tile row - * @param {Number} tileRow tile row - */ -TileRow.prototype.setTileRow = function (tileRow) { - this.setValueWithColumnName(this.getRowColumn().name, tileRow); -}; - -/** - * Get the tile data column index - * @return {Number} tile data column index - */ -TileRow.prototype.getTileDataColumnIndex = function () { - return this.tileTable.tileDataIndex; -}; - -/** - * Get the tile data column - * @return {TileColumn} tile data column - */ -TileRow.prototype.getTileDataColumn = function () { - return this.tileTable.getTileDataColumn(); -}; - -/** - * Get the tile data - * @return {Buffer} tile data - */ -TileRow.prototype.getTileData = function () { - return this.getValueWithColumnName(this.getTileDataColumn().name); -}; - -/** - * Set the tile data - * @param {Buffer} tileData tile data - */ -TileRow.prototype.setTileData = function (tileData) { - this.setValueWithColumnName(this.getTileDataColumn().name, tileData); -}; - -/** - * Get the tile data as an image - * @return {image} tile image - */ -TileRow.prototype.getTileDataImage = function () { - // TODO -}; - - -// /** -// * Get the tile data as a scaled image -// * -// * @param scale scale, 0.0 to 1.0 -// * -// * @return tile image -// */ -// -(UIImage *) getTileDataImageWithScale: (CGFloat) scale; -// -// /** -// * Set the tile data with an image -// * -// * @param image image -// * @param format image format -// */ -// -(void) setTileDataWithImage: (UIImage *) image andFormat: (enum GPKGCompressFormat) format; -// -// /** -// * Set the tile data with an image -// * -// * @param image image -// * @param format image format -// * @param quality compression quality, 0.0 to 1.0, used only for GPKG_CF_JPEG -// */ -// -(void) setTileDataWithImage: (UIImage *) image andFormat: (enum GPKGCompressFormat) format andQuality: (CGFloat) quality; - - -module.exports = TileRow; - -},{"../../user/userRow":107,"util":343}],99:[function(require,module,exports){ -/** - * @module tiles/user/tileTable - */ - -const UserTable = require('../../user/userTable'); -const TileColumn = require('./tileColumn'); -const util = require('util'); - -/** - * `TileTable` models [tile pyramid user tables](https://www.geopackage.org/spec121/index.html#tiles_user_tables). - * - * @class - * @extends {module:user/userTable~UserTable} - * @param {string} tableName - * @param {module:tiles/user/tileColumn~TileColumn[]} columns - */ -var TileTable = module.exports = function(tableName, columns) { - UserTable.call(this, tableName, columns); - - var zoomLevel; - var tileColumn; - var tileRow; - var tileData; - var uniqueColumns = []; - - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - var columnName = column.name; - var columnIndex = column.index; - - switch(columnName) { - case TileColumn.COLUMN_ZOOM_LEVEL: - this.duplicateCheck(columnIndex, zoomLevel, TileColumn.COLUMN_ZOOM_LEVEL); - zoomLevel = columnIndex; - uniqueColumns.push(column); - break; - case TileColumn.COLUMN_TILE_COLUMN: - this.duplicateCheck(columnIndex, tileColumn, TileColumn.COLUMN_TILE_COLUMN); - tileColumn = columnIndex; - uniqueColumns.push(column); - break; - case TileColumn.COLUMN_TILE_ROW: - this.duplicateCheck(columnIndex, tileRow, TileColumn.COLUMN_TILE_ROW); - tileRow = columnIndex; - uniqueColumns.push(column); - break; - case TileColumn.COLUMN_TILE_DATA: - this.duplicateCheck(columnIndex, tileData, TileColumn.COLUMN_TILE_DATA); - tileData = columnIndex; - break; - } - } - - this.uniqueConstraints = [{columns: uniqueColumns}]; - - this.missingCheck(zoomLevel, TileColumn.COLUMN_ZOOM_LEVEL); - this.zoomLevelIndex = zoomLevel; - - this.missingCheck(tileColumn, TileColumn.COLUMN_TILE_COLUMN); - this.tileColumnIndex = tileColumn; - - this.missingCheck(tileRow, TileColumn.COLUMN_TILE_ROW); - this.tileRowIndex = tileRow; - - this.missingCheck(tileData, TileColumn.COLUMN_TILE_DATA); - this.tileDataIndex = tileData; -} - -util.inherits(TileTable, UserTable); - -TileTable.prototype.getZoomLevelColumn = function() { - return this.getColumnWithIndex(this.zoomLevelIndex); -}; - -TileTable.prototype.getTileColumnColumn = function() { - return this.getColumnWithIndex(this.tileColumnIndex); -}; - -TileTable.prototype.getRowColumn = function() { - return this.getColumnWithIndex(this.tileRowIndex); -}; - -TileTable.prototype.getTileDataColumn = function() { - return this.getColumnWithIndex(this.tileDataIndex); -}; - -TileTable.prototype.getTableType = function() { - return UserTable.TILE_TABLE; -} - -TileTable.createRequiredColumns = function() { - return TileTable.createRequiredColumnsWithStartingIndex(0); -} - -TileTable.createRequiredColumnsWithStartingIndex = function(startingIndex) { - var columns = []; - columns.push(TileColumn.createIdColumn(startingIndex++)); - columns.push(TileColumn.createZoomLevelColumn(startingIndex++)); - columns.push(TileColumn.createTileColumnColumn(startingIndex++)); - columns.push(TileColumn.createTileRowColumn(startingIndex++)); - columns.push(TileColumn.createTileDataColumn(startingIndex++)); - return columns; -} - -},{"../../user/userTable":108,"./tileColumn":95,"util":343}],100:[function(require,module,exports){ -/** - * tileTableReader module. - * @module tiles/user/tileTableReader - */ - -var UserTableReader = require('../../user/userTableReader') - , DataTypes = require('../../db/dataTypes') - , TileMatrixSet = require('../matrixset').TileMatrixSet - , TileTable = require('./tileTable') - , TileColumn = require('./tileColumn'); - -var util = require('util'); - -/** -* Reads the metadata from an existing tile table -* @class TileTableReader -* @extends {module:user~UserTableReader} -*/ -var TileTableReader = function(tileMatrixSet) { - UserTableReader.call(this, tileMatrixSet.table_name); - this.tileMatrixSet = tileMatrixSet; -} - -util.inherits(TileTableReader, UserTableReader); - -TileTableReader.prototype.readTileTable = function (geoPackage) { - return this.readTable(geoPackage.getDatabase()); -}; - -TileTableReader.prototype.createTable = function (tableName, columns) { - return new TileTable(tableName, columns); -}; - -TileTableReader.prototype.createColumnWithResults = function (results, index, name, type, max, notNull, defaultValueIndex, primaryKey) { - var dataType = DataTypes.fromName(type); - var defaultValue = undefined; - if (defaultValueIndex) { - // console.log('default value index', defaultValueIndex); - // console.log('result', results); - } - var column = new TileColumn(index, name, dataType, max, notNull, defaultValue, primaryKey); - - return column; -}; - -/** - * The TileTableReader - * @type {TileTableReader} - */ -module.exports = TileTableReader; - -},{"../../db/dataTypes":14,"../../user/userTableReader":109,"../matrixset":91,"./tileColumn":95,"./tileTable":99,"util":343}],101:[function(require,module,exports){ -/** - * @module user/custom - */ - -var util = require('util'); - -var UserColumn = require('../userColumn') - , DataTypes = require('../../db/dataTypes') - -/** - * Create a new user custom columnd - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} dataType data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * @param {Boolean} primaryKey primary key - */ -var UserCustomColumn = function(index, name, dataType, max, notNull, defaultValue, primaryKey) { - UserColumn.call(this, index, name, dataType, max, notNull, defaultValue, primaryKey); - if (dataType == null) { - throw new Error('Data type is required to create column: ' + name); - } -} - -util.inherits(UserCustomColumn, UserColumn); - -/** - * Create a new column - * - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return {module:user/custom~UserCustomColumn} created column - */ -UserCustomColumn.createColumn = function(index, name, dataType, max, notNull, defaultValue) { - return new UserCustomColumn(index, name, dataType, max, notNull, defaultValue, false); -} - -module.exports = UserCustomColumn; - -},{"../../db/dataTypes":14,"../userColumn":105,"util":343}],102:[function(require,module,exports){ -/** - * @module user/custom - */ -var util = require('util'); - -var UserDao = require('../userDao') - , UserRow = require('../userRow') - , UserCustomTableReader = require('./userCustomTableReader'); - -/** - * User Custom Dao - * @class - * @extends module:user/userDao~UserDao - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - * @param {module:user/custom~UserCustomTable} userCustomTable user custom table - */ -var UserCustomDao = function(geoPackage, userCustomTable) { - UserDao.call(this, geoPackage, userCustomTable); -} - -util.inherits(UserCustomDao, UserDao); - -/** - * Create a new UserRow - * @return {module:user/userRow~UserRow} - */ -UserCustomDao.prototype.newRow = function() { - return new UserRow(this.table); -} - -/** - * Reads the table specified from the geopackage - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - * @param {string} tableName table name - * @param {string[]} requiredColumns required columns - * @return {module:user/custom~UserCustomDao} - */ -UserCustomDao.readTable = function(geoPackage, tableName, requiredColumns) { - var reader = new UserCustomTableReader(tableName, requiredColumns); - var userCustomTable = reader.readTable(geoPackage.getDatabase()); - return new UserCustomDao(geoPackage, userCustomTable); -} - -module.exports = UserCustomDao; - -},{"../userDao":106,"../userRow":107,"./userCustomTableReader":104,"util":343}],103:[function(require,module,exports){ -/** - * @module user/custom - */ -var util = require('util'); - -var UserTable = require('../userTable'); - -/** - * Create a new user custom table - * @class - * @extends module:user/userTable~UserTable - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns user columns - * @param {string[]} requiredColumns required columns - */ -var UserCustomTable = function(tableName, columns, requiredColumns) { - UserTable.call(this, tableName, columns); - if (requiredColumns && requiredColumns.length) { - var found = {}; - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - if (requiredColumns.indexOf(column.name) !== -1) { - var previousIndex = found[column.name]; - this.duplicateCheck(column.index, previousIndex, column.name); - found[column.name] = column.index; - } - } - for (var i = 0; i < requiredColumns.length; i++) { - this.missingCheck(found[requiredColumns[i]], requiredColumns); - } - } -} - -util.inherits(UserCustomTable, UserTable); - -module.exports = UserCustomTable; - -},{"../userTable":108,"util":343}],104:[function(require,module,exports){ -/** - * @module user/custom - */ -var util = require('util'); - -var UserTableReader = require('../userTableReader') - , DataTypes = require('../../db/dataTypes') - , UserCustomColumn = require('./userCustomColumn') - , UserCustomTable = require('./userCustomTable'); - -/** - * User custom table reader - * @class - * @extends module:user/userTableReader~UserTableReader - * @param {string} tableName table name - * @param {string[]} requiredColumns required columns - */ -var UserCustomTableReader = function(tableName, requiredColumns) { - UserTableReader.call(this, tableName, requiredColumns); -} - -util.inherits(UserCustomTableReader, UserTableReader); - -/** - * Creates user custom column - * @param {string} tableName table name - * @param {module:user/userCustom~UserCustomColumn[]} columnList columns - * @param {string[]} requiredColumns required columns - * @return {module:user/userCustom~UserCustomTable} - */ -UserCustomTableReader.prototype.createTable = function(tableName, columnList, requiredColumns) { - return new UserCustomTable(tableName, columnList, requiredColumns); -} - -/** - * Creates a user custom column - * @param {Object} result - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * @param {Boolean} primaryKey primary key - * @return {module:user/custom~UserCustomColumn} - */ -UserCustomTableReader.prototype.createColumnWithResults = function(result, index, name, type, max, notNull, defaultValue, primaryKey) { - - var dataType = DataTypes.fromName(type); - return new UserCustomColumn(index, name, dataType, max, notNull, defaultValue, primaryKey); -} - - -module.exports = UserCustomTableReader; - -},{"../../db/dataTypes":14,"../userTableReader":109,"./userCustomColumn":101,"./userCustomTable":103,"util":343}],105:[function(require,module,exports){ -/** - * @module user/userColumn - */ - -var DataTypes = require('../db/dataTypes'); - -/** - * A `UserColumn` is meta-data about a single column from a {@link module:/user/userTable~UserTable}. - * - * @class - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} dataType data type of the column - * @param {?Number} max max value - * @param {Boolean} notNull not null - * @param {?Object} defaultValue default value or null - * @param {Boolean} primaryKey `true` if this column is part of the table's primary key - */ -function UserColumn(index, name, dataType, max, notNull, defaultValue, primaryKey) { - this.index = index; - this.name = name; - this.dataType = dataType; - this.max = max; - this.notNull = notNull; - this.defaultValue = defaultValue; - this.primaryKey = primaryKey; - this.validateMax(); -} - -/** - * Gets the type name - * @return {module:db/dataTypes~GPKGDataType} - */ -UserColumn.prototype.getTypeName = function () { - var type = undefined; - if (this.dataType !== DataTypes.GPKGDataType.GPKG_DT_GEOMETRY) { - type = DataTypes.name(this.dataType); - } - return type; -}; - -/** - * Validate that if max is set, the data type is text or blob - */ -UserColumn.prototype.validateMax = function () { - if(this.max && this.dataType !== DataTypes.GPKGDataType.GPKG_DT_TEXT && this.dataType !== DataTypes.GPKGDataType.GPKG_DT_BLOB) { - throw new Error('Column max is only supported for TEXT and BLOB columns. column: ' + this.name + ', max: ' + this.max + ', type: ' + this.dataType) - } -}; - -/** - * Create a new primary key column - * - * @param {Number} index column index - * @param {string} name column name - * - * @return {module:user/userColumn~UserColumn} created column - */ -UserColumn.createPrimaryKeyColumnWithIndexAndName = function(index, name) { - return new UserColumn(index, name, DataTypes.GPKGDataType.GPKG_DT_INTEGER, undefined, true, undefined, true); -} - -/** - * Create a new column - * - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return {module:user/userColumn~UserColumn} created column - */ -UserColumn.createColumnWithIndex = function(index, name, type, notNull, defaultValue) { - return UserColumn.createColumnWithIndexAndMax(index, name, type, undefined, notNull, defaultValue); -} - -/** - * Create a new column - * - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * - * @return {module:user/userColumn~UserColumn} created column - */ -UserColumn.createColumnWithIndexAndMax = function(index, name, type, max, notNull, defaultValue) { - return new UserColumn(index, name, type, max, notNull, defaultValue, false); -} - -module.exports = UserColumn; - -},{"../db/dataTypes":14}],106:[function(require,module,exports){ -/** - * UserDao module. - * @module user/userDao - */ - -var UserRow = require('./userRow') - , MediaTable = require('../extension/relatedTables/mediaTable') - , SimpleAttributesTable = require('../extension/relatedTables/simpleAttributesTable') - , RelationType = require('../extension/relatedTables/relationType') - , UserTableReader = require('./userTableReader') - , Dao = require('../dao/dao'); - -var util = require('util'); - -/** - * Abstract User DAO for reading user tables - * @class UserDao - * @extends {module:dao/dao~Dao} - * @param {module:db/geoPackageConnection~GeoPackageConnection} connection connection - * @param {string} table table name - */ -var UserDao = function(geoPackage, table) { - Dao.call(this, geoPackage); - this.table = table; - this.table_name = table.table_name; - this.gpkgTableName = table.table_name; - if (table.getPkColumn()) { - this.idColumns = [table.getPkColumn().name]; - } else { - this.idColumns = []; - } - this.columns = table.columnNames; -} - -util.inherits(UserDao, Dao); - -/** - * Reads the table specified from the geopackage - * @param {module:geoPackage~GeoPackage} geoPackage geopackage object - * @param {string} tableName table name - * @param {string[]} requiredColumns required columns - * @return {module:user/userDao~UserDao} - */ -UserDao.readTable = function(geoPackage, tableName) { - var reader = new UserTableReader(tableName); - var userTable = reader.readTable(geoPackage.getDatabase()); - return new UserDao(geoPackage, userTable); -} - -/** - * Creates a UserRow - * @param {Object} [results] results to create the row from if not specified, an empty row is created - * @return {module:user/userRow~UserRow} - */ -UserDao.prototype.createObject = function (results) { - if (results) { - return this.getRow(results); - } - return this.newRow(); -}; - -/** - * Sets the value in the row - * @param {module:user/userRow~UserRow} object user row - * @param {Number} columnIndex index - * @param {Object} value value - */ -UserDao.prototype.setValueInObject = function (object, columnIndex, value) { - object.setValueNoValidationWithIndex(columnIndex, value); -}; - -/** - * Get a user row from the current results - * @param {Object} results result to create the row from - * @return {module:user/userRow~UserRow} the user row - */ -UserDao.prototype.getRow = function (results) { - var row = undefined; - if (!this.table) return row; - var columns = this.table.columnCount(); - var columnTypes = {}; - for (var i = 0; i < columns; i++) { - var column = this.table.getColumnWithIndex(i); - columnTypes[column.name] = column.dataType; - } - return this.newRowWithColumnTypes(columnTypes, results); -}; - -/** - * Get the table for this dao - * @return {module:user/userTable~UserTable} - */ -UserDao.prototype.getTable = function() { - return this.table; -} - -/** - * Create a user row - * @param {module:db/dataTypes[]} columnTypes column types - * @param {module:dao/columnValues~ColumnValues[]} values values - * @return {module:user/userRow~UserRow} user row - */ -UserDao.prototype.newRowWithColumnTypes = function (columnTypes, values) { - return new UserRow(this.table, columnTypes, values); -}; - -/** - * Get the projection - * @return {string} the projection - */ -UserDao.prototype.getProjection = function () { - return this.projection; -}; - -/** - * Links related rows together - * @param {module:user/userRow~UserRow} userRow user row - * @param {module:user/userRow~UserRow} relatedRow related row - * @param {string} relationType relation type - * @param {string|module:extension/relatedTables~UserMappingTable} [mappingTable] mapping table - * @param {module:dao/columnValues~ColumnValues} [mappingColumnValues] column values - * @return {Promise} - */ -UserDao.prototype.linkRelatedRow = function(userRow, relatedRow, relationType, mappingTable, mappingColumnValues) { - var rte = this.geoPackage.getRelatedTablesExtension(); - var baseTableName = userRow.table.table_name; - var relatedTableName = relatedRow.table.table_name; - var relationship = rte.getRelationshipBuilder() - .setBaseTableName(baseTableName) - .setRelatedTableName(relatedTableName) - .setRelationType(relationType); - - var mappingTableName; - if (!mappingTable || typeof mappingTable === 'string') { - var mappingTable = mappingTable || baseTableName + '_' + relatedTableName; - relationship.setMappingTableName(mappingTable); - mappingTableName = mappingTable; - } else { - relationship.setUserMappingTable(mappingTable); - mappingTableName = mappingTable.table_name; - } - - return rte.addRelationship(relationship) - .then(function() { - var userMappingDao = rte.getMappingDao(mappingTableName); - var userMappingRow = userMappingDao.newRow(); - userMappingRow.setBaseId(userRow.getId()); - userMappingRow.setRelatedId(relatedRow.getId()); - for (var column in mappingColumnValues) { - userMappingRow.setValueWithColumnName(column, mappingColumnValues[column]); - } - userMappingDao.create(userMappingRow); - }); -} - -/** - * Links a user row to a feature row - * @param {module:user/userRow~UserRow} userRow user row - * @param {module:features/user/featureRow~FeatureRow} featureRow feature row - * @param {string|module:extension/relatedTables~UserMappingTable} [mappingTable] mapping table - * @param {module:dao/columnValues~ColumnValues} [mappingColumnValues] column values - * @return {Promise} - */ -UserDao.prototype.linkFeatureRow = function(userRow, featureRow, mappingTable, mappingColumnValues) { - return this.linkRelatedRow(userRow, featureRow, RelationType.FEATURES, mappingTable, mappingColumnValues); -} - -/** - * Links a user row to a media row - * @param {module:user/userRow~UserRow} userRow user row - * @param {module:extension/relatedTables~MediaRow} mediaRow media row - * @param {string|module:extension/relatedTables~UserMappingTable} [mappingTable] mapping table - * @param {module:dao/columnValues~ColumnValues} [mappingColumnValues] column values - * @return {Promise} - */ -UserDao.prototype.linkMediaRow = function(userRow, mediaRow, mappingTable, mappingColumnValues) { - return this.linkRelatedRow(userRow, mediaRow, RelationType.MEDIA, mappingTable, mappingColumnValues); -} - -/** - * Links a user row to a simpleAttributes row - * @param {module:user/userRow~UserRow} userRow user row - * @param {module:extension/relatedTables~SimpleAttributesRow} simpleAttributesRow simple attributes row - * @param {string|module:extension/relatedTables~UserMappingTable} [mappingTable] mapping table - * @param {module:dao/columnValues~ColumnValues} [mappingColumnValues] column values - * @return {Promise} - */ -UserDao.prototype.linkSimpleAttributesRow = function(userRow, simpleAttrbuteRow, mappingTable, mappingColumnValues) { - return this.linkRelatedRow(userRow, simpleAttrbuteRow, RelationType.SIMPLE_ATTRIBUTES, mappingTable, mappingColumnValues); -} - -/** - * Get all media rows that are linked to this user row - * @param {module:user/userRow~UserRow} userRow user row - * @return {module:extension/relatedTables~MediaRow[]} - */ -UserDao.prototype.getLinkedMedia = function(userRow) { - var mediaRelations = this.getMediaRelations(); - var rte = this.geoPackage.getRelatedTablesExtension(); - var linkedMedia = []; - for (var i = 0; i < mediaRelations.length; i++) { - var mediaRelation = mediaRelations[i]; - var mediaDao = rte.getMediaDao(mediaRelation); - var userMappingDao = rte.getMappingDao(mediaRelation.mapping_table_name); - var mappings = userMappingDao.queryByBaseId(userRow.getId()); - for (var m = 0; m < mappings.length; m++) { - var relatedId = mappings[m].related_id; - linkedMedia.push(mediaDao.queryForId(relatedId)); - } - } - return linkedMedia; -} - -/** - * Get all simple attribute rows that are linked to this user row - * @param {module:user/userRow~UserRow} userRow user row - * @return {module:extension/relatedTables~SimpleAttributeRow[]} - */ -UserDao.prototype.getLinkedSimpleAttributes = function(userRow) { - var simpleRelations = this.getSimpleAttributesRelations(); - var rte = this.geoPackage.getRelatedTablesExtension(); - var linkedSimpleAttributes = []; - for (var i = 0; i < simpleRelations.length; i++) { - var simpleRelation = simpleRelations[i]; - var simpleDao = rte.getSimpleAttributesDao(simpleRelation); - var userMappingDao = rte.getMappingDao(simpleRelation.mapping_table_name); - var mappings = userMappingDao.queryByBaseId(userRow.getId()); - for (var m = 0; m < mappings.length; m++) { - var relatedId = mappings[m].related_id; - linkedSimpleAttributes.push(simpleDao.queryForId(relatedId)); - } - } - return linkedSimpleAttributes; -} - -/** - * Get all feature rows that are linked to this user row - * @param {module:user/userRow~UserRow} userRow user row - * @return {module:features/user/featureRow~FeatureRow[]} - */ -UserDao.prototype.getLinkedFeatures = function(userRow) { - var featureRelations = this.getFeatureRelations(); - var rte = this.geoPackage.getRelatedTablesExtension(); - var linkedFeatures = []; - for (var i = 0; i < featureRelations.length; i++) { - var featureRelation = featureRelations[i]; - var featureDao = this.geoPackage.getFeatureDao(featureRelation.base_table_name); - var userMappingDao = rte.getMappingDao(featureRelation.mapping_table_name); - var mappings = userMappingDao.queryByBaseId(userRow.getId()); - for (var m = 0; m < mappings.length; m++) { - var relatedId = mappings[m].related_id; - linkedFeatures.push(featureDao.queryForId(relatedId)); - } - } - return linkedFeatures; -} - -/** - * Get all simple attribute relations to this table - * @return {Object[]} - */ -UserDao.prototype.getSimpleAttributesRelations = function() { - return this.getRelationsWithName(SimpleAttributesTable.RELATION_TYPE.name); -} - -/** - * Get all feature relations to this table - * @return {Object[]} - */ -UserDao.prototype.getFeatureRelations = function() { - return this.getRelationsWithName(RelationType.FEATURES.name); -} - -/** - * Get all media relations to this table - * @return {Object[]} - */ -UserDao.prototype.getMediaRelations = function() { - return this.getRelationsWithName(MediaTable.RELATION_TYPE.name); -} - -/** - * Get all relations to this table with the specified name - * @param {string} name - * @return {Object[]} - */ -UserDao.prototype.getRelationsWithName = function(name) { - return this.geoPackage.getExtendedRelationDao().getBaseTableRelationsWithName(this.table_name, name); -} - -/** - * Get all relations to this table - * @return {Object[]} - */ -UserDao.prototype.getRelations = function() { - return this.geoPackage.getExtendedRelationDao().getBaseTableRelations(this.table_name); -} - -/** - * Gets the rows in this table by id - * @param {Number[]} ids ids to query for - * @return {Object[]} - */ -UserDao.prototype.getRows = function(ids) { - var rows = []; - for (var i = 0; i < ids.length; i++) { - var row = this.queryForId(ids[i]); - if (row) { - rows.push(row); - } - } - return rows; -} - -/** - * Get the approximate zoom level of where the bounding box of the user data fits into the world - * - * @return zoom level - */ -UserDao.prototype.getZoomLevel = function () { - return 0; - // if(self.projection == nil){ - // [NSException raise:@"No Projection" format:@"No projection was set which is required to determine the zoom level"]; - // } - // GPKGBoundingBox * boundingBox = [self getBoundingBox]; - // if([self.projection.epsg intValue] == PROJ_EPSG_WORLD_GEODETIC_SYSTEM){ - // boundingBox = [GPKGTileBoundingBoxUtils boundWgs84BoundingBoxWithWebMercatorLimits:boundingBox]; - // } - // GPKGProjectionTransform * webMercatorTransform = [[GPKGProjectionTransform alloc] initWithFromProjection:self.projection andToEpsg:PROJ_EPSG_WEB_MERCATOR]; - // GPKGBoundingBox * webMercatorBoundingBox = [webMercatorTransform transformWithBoundingBox:boundingBox]; - // int zoomLevel = [GPKGTileBoundingBoxUtils getZoomLevelWithWebMercatorBoundingBox:webMercatorBoundingBox]; - // return zoomLevel; -}; - -/** - * Get count of all rows in this table - * @return {Number} - */ -UserDao.prototype.getCount = function () { - return this.connection.count(this.table_name); -}; - -module.exports = UserDao; - -},{"../dao/dao":11,"../extension/relatedTables/mediaTable":35,"../extension/relatedTables/relationType":36,"../extension/relatedTables/simpleAttributesTable":39,"./userRow":107,"./userTableReader":109,"util":343}],107:[function(require,module,exports){ -(function (Buffer){ -/** - * UserRow module. - * @module user/userRow - */ - -var DataTypes = require('../db/dataTypes'); - -/** - * User Row containing the values from a single result row - * @class UserRow - * @param {UserTable} table user table - * @param {module:db/dataTypes[]} columnTypes column types - * @param {Array} values values - */ -var UserRow = function(table, columnTypes, values) { - /** - * User table - * @type {UserTable} - */ - this.table = table; - /** - * Column types of this row, based upon the data values - * @type {Object} - */ - this.columnTypes = columnTypes; - /** - * Array of row values - * @type {Object} - */ - this.values = values; - - if (!this.columnTypes) { - var columnCount = this.table.columnCount(); - this.columnTypes = {}; - this.values = {}; - for (var i = 0; i < columnCount; i++) { - this.columnTypes[this.table.columnNames[i]] = this.table.columns[i].dataType; - this.values[this.table.columnNames[i]] = this.table.columns[i].defaultValue; - } - } - -} - -module.exports = UserRow; - -/** - * Get the column count - * @return {number} column count - */ -UserRow.prototype.columnCount = function () { - return this.table.columnCount(); -}; - -/** - * Get the column names - * @return {Array} column names - */ -UserRow.prototype.getColumnNames = function () { - return this.table.columnNames; -}; - -/** - * Get the column name at the index - * @param {Number} index index - * @return {string} column name - */ -UserRow.prototype.getColumnNameWithIndex = function (index) { - return this.table.getColumnNameWithIndex(index); -}; - -/** - * Get the column index of the column name - * @param {string} columnName column name - * @return {Number} column index - */ -UserRow.prototype.getColumnIndexWithColumnName = function (columnName) { - return this.table.getColumnIndex(columnName); -}; - -/** - * Get the value at the index - * @param {Number} index index - * @return {object} value - */ -UserRow.prototype.getValueWithIndex = function (index) { - var value = this.values[this.getColumnNameWithIndex(index)]; - if (value !== undefined) { - value = this.toObjectValue(index, value); - } - return value; -}; - -/** - * Get the value of the column name - * @param {string} columnName column name - * @return {Object} value - */ -UserRow.prototype.getValueWithColumnName = function (columnName) { - var value = this.values[columnName]; - var dataType = this.getRowColumnTypeWithColumnName(columnName); - if (value === undefined || value === null) return value; - - if (dataType === DataTypes.GPKGDataType.BOOLEAN) { - return value === 1 ? true : false; - } else if (dataType === DataTypes.GPKGDataType.BLOB) { - return Buffer.from(value); - } - return value; -}; - -UserRow.prototype.toObjectValue = function (index, value) { - var objectValue = value; - var column = this.getColumnWithIndex(index); - if (column.dataType === DataTypes.GPKGDataType.BOOLEAN && value) { - return value === 1 ? true : false; - } - return objectValue; -}; - -UserRow.prototype.toDatabaseValue = function(columnName) { - var column = this.getColumnWithColumnName(columnName); - var value = this.getValueWithColumnName(columnName); - if (column.dataType === DataTypes.GPKGDataType.BOOLEAN) { - return value === true ? 1 : 0; - } - - return value; -} - -/** - * Get the row column type at the index - * @param {Number} index index - * @return {Number} row column type - */ -UserRow.prototype.getRowColumnTypeWithIndex = function (index) { - return this.columnTypes[this.getColumnNameWithIndex(index)]; -}; - -/** - * Get the row column type of the column name - * @param {string} columnName column name - * @return {Number} row column type - */ -UserRow.prototype.getRowColumnTypeWithColumnName = function (columnName) { - return this.columnTypes[columnName]; -}; - -/** - * Get the column at the index - * @param {Number} index index - * @return {UserColumn} column - */ -UserRow.prototype.getColumnWithIndex = function (index) { - return this.table.getColumnWithIndex(index); -}; - -/** - * Get the column of the column name - * @param {string} columnName column name - * @return {UserColumn} column - */ -UserRow.prototype.getColumnWithColumnName = function (columnName) { - return this.table.getColumnWithColumnName(columnName); -}; - -/** - * Get the id value, which is the value of the primary key - * @return {Number} id value - */ -UserRow.prototype.getId = function () { - if (this.getPkColumn()) { - return this.getValueWithColumnName(this.getPkColumn().name); - } -}; - -/** - * Get the primary key column Index - * @return {Number} pk index - */ -UserRow.prototype.getPkColumnIndex = function () { - return this.table.pkIndex; -}; - -/** - * Get the primary key column - * @return {UserColumn} pk column - */ -UserRow.prototype.getPkColumn = function () { - return this.table.getPkColumn(); -}; - -/** - * Set the value at the index - * @param {Number} index index - * @param {object} value value - */ -UserRow.prototype.setValueWithIndex = function (index, value) { - if (index === this.table.pkIndex) { - throw new Error('Cannot update the primary key of the row. Table Name: ' + this.table.tableName + ', Index: ' + index + ', Name: ' + this.table.getPkColumn().name); - } - this.setValueWithColumnName(this.getColumnNameWithIndex(index), value); -}; - -/** - * Set the value at the index without validation - * @param {Number} index index - * @param {Object} value value - */ -UserRow.prototype.setValueNoValidationWithIndex = function (index, value) { - this.values[this.getColumnNameWithIndex(index)] = value; -}; - -/** - * Set the value of the column name - * @param {string} columnName column name - * @param {Object} value value - */ -UserRow.prototype.setValueWithColumnName = function (columnName, value) { - var dataType = this.getRowColumnTypeWithColumnName(columnName); - if (dataType === DataTypes.GPKGDataType.BOOLEAN) { - value === true ? this.values[columnName] = 1 : this.values[columnName] = 0; - } else if (dataType === DataTypes.GPKGDataType.DATE) { - this.values[columnName] = value.toISOString().slice(0,10); - } else if (dataType === DataTypes.GPKGDataType.DATETIME) { - this.values[columnName] = value.toISOString(); - } else { - this.values[columnName] = value; - } -}; - -UserRow.prototype.hasIdColumn = function() { - return this.table.pkIndex !== undefined; -} - -UserRow.prototype.hasId = function() { - var hasId = false; - if (this.hasIdColumn()) { - var objectValue = this.getValueWithIndex(this.table.pkIndex); - hasId = objectValue !== null && objectValue !== undefined && typeof objectValue === 'number'; - } - return hasId; -} - -/** - * Set the primary key id value - * @param {Number} id id - */ -UserRow.prototype.setId = function (id) { - this.values[this.table.getPkColumn().name] = id; -}; - -/** - * Clears the id so the row can be used as part of an insert or create - */ -UserRow.prototype.resetId = function () { - this.values[this.table.getPkColumn().name] = undefined; -}; - -/** - * Validate the value and its actual value types against eh column data type class - * @param {UserColumn} column column - * @param {Object} value value - * @param {Array} valueTypes value types - */ -UserRow.prototype.validateValueWithColumn = function (column, value, valueTypes) { - // TODO implement validation -}; - -}).call(this,require("buffer").Buffer) -},{"../db/dataTypes":14,"buffer":182}],108:[function(require,module,exports){ -/** - * @module user/userTable - */ - -/** - * `UserTable` models optional [user data tables](https://www.geopackage.org/spec121/index.html#_options) - * in a [GeoPackage]{@link module:geoPackage~GeoPackage}. - * - * @class - * @param {string} tableName table name - * @param {module:user/userColumn~UserColumn[]} columns user columns - */ -var UserTable = function(tableName, columns) { - /** - * The name of the table - * @type {string} - */ - this.table_name = tableName; - - // Sort the columns by index - columns.sort(function(a, b) { - return a.index - b.index; - }); - - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - if (column.index != i) { - throw new Error('Column has wrong index of ' + column.index + ', found at index: ' + i + ', Table Name: ' + this.table_name); - } - } - - var pk = undefined; - var tempColumnNames = new Array(); - var tempNameToIndex = {}; - - for (var i = 0; i < columns.length; i++) { - var column = columns[i]; - var index = column.index; - if (column.primaryKey) { - if (pk !== undefined) { - throw new Error('More than one primary key column was found for table \'' + this.table_name + '\'. Index ' + pk + ' and ' + index); - } - pk = index; - } - tempColumnNames.push(column.name); - tempNameToIndex[column.name] = index; - } - - /** - * Array of columns - * @type {module:user/userColumn~UserColumn[]} - */ - this.columns = columns; - - /** - * Array of column names - * @type {string[]} - */ - this.columnNames = tempColumnNames; - - /** - * Mapping between column names and their index - * @type {Object} - */ - this.nameToIndex = tempNameToIndex; - this.uniqueConstraints = []; - - /** - * Primary key column Index - * @type {Number} - */ - this.pkIndex = pk; -} - -/** - * Check for duplicate column names - * @param {Number} index index - * @param {Number} previousIndex previous index - * @param {string} column column - * @throws Throws an error if previous index is not undefined - */ -UserTable.prototype.duplicateCheck = function (index, previousIndex, column) { - if(previousIndex !== undefined) { - throw new Error('More than one ' + column + ' column was found for table \'' + this.table_name + '\'. Index ' + previousIndex + ' and ' + index); - } -}; - -/** - * Check for the expected data type - * @param {module:db/dataTypes~GPKGDataType} expected expected data type - * @param {module:user/userColumn~UserColumn} column column - * @throws Will throw an error if the actual column type does not match the expected column type - */ -UserTable.prototype.typeCheck = function (expected, column) { - var actual = column.dataType; - if (!actual || actual !== expected) { - throw new Error('Unexpected ' + column.name + ' column data type was found for table \'' + this.table_name + '\', expected: ' + DataTypes.name(expected) + ', actual: ' + column.dataType); - } -}; - -/** - * Check for missing columns - * @param {Number} index index - * @param {string} column column - * @throws Will throw an error if no column is found - */ -UserTable.prototype.missingCheck = function (index, column) { - if (index === undefined || index === null) { - throw new Error('No ' + column + ' column was found for table \'' + this.table_name +'\''); - } -}; - -/** - * Get the column index of the column name - * @param {string} columnName column name - * @return {Number} the column index - * @throws Will throw an error if the column is not found in the table - */ -UserTable.prototype.getColumnIndex = function (columnName) { - var index = this.nameToIndex[columnName]; - if (index === undefined || index === null) { - throw new Error('Column does not exist in table \'' + this.table_name + '\', column: ' + columnName); - } - return index; -}; - -/** - * Check if the table has the column - * @param {string} columnName name of the column - * @return {Boolean} true if the column exists in the table - */ -UserTable.prototype.hasColumn = function(columnName) { - try { - this.getColumnIndex(columnName); - return true; - } catch (e) { - return false; - } - return false; -} - -/** - * Get the column name from the index - * @param {Number} index index - * @return {string} the column name - */ -UserTable.prototype.getColumnNameWithIndex = function (index) { - return this.columnNames[index]; -}; - -/** - * Get the column from the index - * @param {Number} index index - * @return {module:user/userColumn~UserColumn} column at the index - */ -UserTable.prototype.getColumnWithIndex = function (index) { - return this.columns[index]; -}; - -/** - * Get column with the column name - * @param {string} columnName column name - * @return {module:user/userColumn~UserColumn} column at the index - */ -UserTable.prototype.getColumnWithColumnName = function (columnName) { - return this.getColumnWithIndex(this.getColumnIndex(columnName)); -}; - -/** - * Get the column count - * @return {Number} the count of the columns - */ -UserTable.prototype.columnCount = function () { - return this.columns.length; -}; - -/** - * Get the primary key column - * @return {module:user/userColumn~UserColumn} the primary key column - */ -UserTable.prototype.getPkColumn = function () { - return this.columns[this.pkIndex]; -}; - -/** - * Get the primary key id column - * @return {module:user/userColumn~UserColumn} - */ -UserTable.prototype.getIdColumn = function() { - return this.getPkColumn(); -} - -UserTable.prototype.addUniqueConstraint = function (uniqueConstraint) { - this.uniqueConstraints.push(uniqueConstraint); -}; - -UserTable.FEATURE_TABLE = 'FEATURE'; -UserTable.TILE_TABLE = 'TILE'; - -module.exports = UserTable; - -},{}],109:[function(require,module,exports){ -/** - * userTableReader module. - * @module user/userTableReader - */ - -var UserColumn = require('./userColumn') - , UserTable = require('./userTable') - , DataTypes = require('../db/dataTypes'); - -/** - * @class - * @param {string} tableName name of the table - * @param {string[]} requiredColumns array of required column names - */ -var UserTableReader = function(tableName, requiredColumns) { - this.table_name = tableName; - this.requiredColumns = requiredColumns; -} - -var GPKG_UTR_CID = "cid"; -var GPKG_UTR_NAME = "name"; -var GPKG_UTR_TYPE = "type"; -var GPKG_UTR_NOT_NULL = "notnull"; -var GPKG_UTR_PK = "pk"; -var GPKG_UTR_DFLT_VALUE = "dflt_value"; - -/** - * Read the table - * @param {object} db db connection - * @return {module:user/userTable~UserTable} - */ -UserTableReader.prototype.readTable = function (db) { - var columnList = []; - var results = db.all('PRAGMA table_info(\''+this.table_name+'\')'); - for (var i =0; i < results.length; i++) { - var result = results[i]; - var index = result[GPKG_UTR_CID]; - var name = result[GPKG_UTR_NAME]; - var type = result[GPKG_UTR_TYPE]; - var notNull = result[GPKG_UTR_NOT_NULL] === 1; - var primarykey = result[GPKG_UTR_PK] === 1; - var max = undefined; - if (type && type.lastIndexOf(')') === type.length-1) { - var maxStart = type.indexOf('('); - if (maxStart > -1) { - var maxString = type.substring(maxStart + 1, type.length - 1); - if (maxString !== '') { - max = parseInt(maxString); - type = type.substring(0, maxStart); - } - } - } - var defaultValue = undefined; - if (result[GPKG_UTR_DFLT_VALUE]) { - defaultValue = result[GPKG_UTR_DFLT_VALUE].replace(/\\'/g, ''); - } - var column = this.createColumnWithResults(result, index, name, type, max, notNull, defaultValue, primarykey); - - columnList.push(column); - } - - if (columnList.length === 0) { - throw new Error('Table does not exist: ' + this.table_name); - } - return this.createTable(this.table_name, columnList, this.requiredColumns); -}; - -/** - * Creates a user column - * @param {Object} result - * @param {Number} index column index - * @param {string} name column name - * @param {module:db/dataTypes~GPKGDataType} type data type - * @param {Number} max max value - * @param {Boolean} notNull not null - * @param {Object} defaultValue default value or nil - * @param {Boolean} primaryKey primary key - * @return {module:user/custom~UserCustomColumn} - */ -UserTableReader.prototype.createColumnWithResults = function(result, index, name, type, max, notNull, defaultValue, primaryKey) { - - var dataType = DataTypes.fromName(type); - return new UserColumn(index, name, dataType, max, notNull, defaultValue, primaryKey); -} - -/** - * Create the table - * @param {string} tableName table name - * @param {module:dao/columnValues~ColumnValues[]} columns columns - * @return {module:user/userTable~UserTable} the user table - */ -UserTableReader.prototype.createTable = function (tableName, columns) { - return new UserTable(tableName, columns); -}; - -module.exports = UserTableReader; - -},{"../db/dataTypes":14,"./userColumn":105,"./userTable":108}],110:[function(require,module,exports){ -/** - * GeoPackageValidate module. - * @module validate/geoPackageValidate - * - */ - -var path = require('path') - , SpatialReferenceSystem = require('../core/srs').SpatialReferenceSystem - , Contents = require('../core/contents').Contents - , GeoPackageConstants = require('../geoPackageConstants'); - -/** - * Check the file extension to see if it is a GeoPackage - * @param {string} filePath Absolute path to the GeoPackage to create - * @return {boolean} true if GeoPackage extension - */ -exports.hasGeoPackageExtension = function(filePath) { - var extension = path.extname(filePath); - return extension && extension !== '' - && (extension.toLowerCase() === '.'+GeoPackageConstants.GEOPACKAGE_EXTENSION.toLowerCase() - || extension.toLowerCase() === '.'+GeoPackageConstants.GEOPACKAGE_EXTENDED_EXTENSION.toLowerCase()); -} - -/** - * Validate the extension file as a GeoPackage - * @param {string} filePath Absolute path to the GeoPackage to create - * @return {Error} error if the extension is not valid - */ -exports.validateGeoPackageExtension = function(filePath) { - if (!exports.hasGeoPackageExtension(filePath)) { - return new Error("GeoPackage database file '" + filePath - + "' does not have a valid extension of '" - + GeoPackageConstants.GEOPACKAGE_EXTENSION + "' or '" - + GeoPackageConstants.GEOPACKAGE_EXTENDED_EXTENSION + "'"); - } -} - -/** - * Check the GeoPackage for the minimum required tables - * @param {Object} geoPackage GeoPackage to check - * @param {module:validate/geoPackageValidate~validationCallback} callback - The validation callback - */ -exports.hasMinimumTables = function(geoPackage) { - var srsExists = geoPackage.getSpatialReferenceSystemDao().isTableExists(); - var contentsExists = geoPackage.getContentsDao().isTableExists(); - return (srsExists && contentsExists); -} - -/** - * Validation callback is passed an error if the validation failed. - * @callback module:validate/geoPackageValidate~validationCallback - * @param {Error} null if no error, otherwise describes the error - */ - -},{"../core/contents":8,"../core/srs":9,"../geoPackageConstants":71,"path":276}],111:[function(require,module,exports){ -/** - * WKB module. - * @module wkb - */ - -var wkx = require('wkx'); - -var wktToEnum = {}; -wktToEnum[wkx.Types.wkt.Point] = wkx.Types.wkb.Point; -wktToEnum[wkx.Types.wkt.LineString] = wkx.Types.wkb.LineString; -wktToEnum[wkx.Types.wkt.Polygon] = wkx.Types.wkb.Polygon; -wktToEnum[wkx.Types.wkt.MultiPoint] = wkx.Types.wkb.MultiPoint; -wktToEnum[wkx.Types.wkt.MultiLineString] = wkx.Types.wkb.MultiLineString; -wktToEnum[wkx.Types.wkt.MultiPolygon] = wkx.Types.wkb.MultiPolygon; -wktToEnum[wkx.Types.wkt.GeometryCollection] = wkx.Types.wkb.GeometryCollection; - -/** - * number from name - * @param {string} name name - * @return {Number} number corresponding to the wkb name - */ -module.exports.fromName = function(name) { - name = name.toUpperCase(); - if (name === 'GEOMETRY') { - return wkx.Types.wkb.GeometryCollection; - } - return wktToEnum[name]; -} - -},{"wkx":360}],112:[function(require,module,exports){ -'use strict'; - -module.exports = Point; - -/** - * A standalone point geometry with useful accessor, comparison, and - * modification methods. - * - * @class Point - * @param {Number} x the x-coordinate. this could be longitude or screen - * pixels, or any other sort of unit. - * @param {Number} y the y-coordinate. this could be latitude or screen - * pixels, or any other sort of unit. - * @example - * var point = new Point(-77, 38); - */ -function Point(x, y) { - this.x = x; - this.y = y; -} - -Point.prototype = { - - /** - * Clone this point, returning a new point that can be modified - * without affecting the old one. - * @return {Point} the clone - */ - clone: function() { return new Point(this.x, this.y); }, - - /** - * Add this point's x & y coordinates to another point, - * yielding a new point. - * @param {Point} p the other point - * @return {Point} output point - */ - add: function(p) { return this.clone()._add(p); }, - - /** - * Subtract this point's x & y coordinates to from point, - * yielding a new point. - * @param {Point} p the other point - * @return {Point} output point - */ - sub: function(p) { return this.clone()._sub(p); }, - - /** - * Multiply this point's x & y coordinates by point, - * yielding a new point. - * @param {Point} p the other point - * @return {Point} output point - */ - multByPoint: function(p) { return this.clone()._multByPoint(p); }, - - /** - * Divide this point's x & y coordinates by point, - * yielding a new point. - * @param {Point} p the other point - * @return {Point} output point - */ - divByPoint: function(p) { return this.clone()._divByPoint(p); }, - - /** - * Multiply this point's x & y coordinates by a factor, - * yielding a new point. - * @param {Point} k factor - * @return {Point} output point - */ - mult: function(k) { return this.clone()._mult(k); }, - - /** - * Divide this point's x & y coordinates by a factor, - * yielding a new point. - * @param {Point} k factor - * @return {Point} output point - */ - div: function(k) { return this.clone()._div(k); }, - - /** - * Rotate this point around the 0, 0 origin by an angle a, - * given in radians - * @param {Number} a angle to rotate around, in radians - * @return {Point} output point - */ - rotate: function(a) { return this.clone()._rotate(a); }, - - /** - * Rotate this point around p point by an angle a, - * given in radians - * @param {Number} a angle to rotate around, in radians - * @param {Point} p Point to rotate around - * @return {Point} output point - */ - rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); }, - - /** - * Multiply this point by a 4x1 transformation matrix - * @param {Array} m transformation matrix - * @return {Point} output point - */ - matMult: function(m) { return this.clone()._matMult(m); }, - - /** - * Calculate this point but as a unit vector from 0, 0, meaning - * that the distance from the resulting point to the 0, 0 - * coordinate will be equal to 1 and the angle from the resulting - * point to the 0, 0 coordinate will be the same as before. - * @return {Point} unit vector point - */ - unit: function() { return this.clone()._unit(); }, - - /** - * Compute a perpendicular point, where the new y coordinate - * is the old x coordinate and the new x coordinate is the old y - * coordinate multiplied by -1 - * @return {Point} perpendicular point - */ - perp: function() { return this.clone()._perp(); }, - - /** - * Return a version of this point with the x & y coordinates - * rounded to integers. - * @return {Point} rounded point - */ - round: function() { return this.clone()._round(); }, - - /** - * Return the magitude of this point: this is the Euclidean - * distance from the 0, 0 coordinate to this point's x and y - * coordinates. - * @return {Number} magnitude - */ - mag: function() { - return Math.sqrt(this.x * this.x + this.y * this.y); - }, - - /** - * Judge whether this point is equal to another point, returning - * true or false. - * @param {Point} other the other point - * @return {boolean} whether the points are equal - */ - equals: function(other) { - return this.x === other.x && - this.y === other.y; - }, - - /** - * Calculate the distance from this point to another point - * @param {Point} p the other point - * @return {Number} distance - */ - dist: function(p) { - return Math.sqrt(this.distSqr(p)); - }, - - /** - * Calculate the distance from this point to another point, - * without the square root step. Useful if you're comparing - * relative distances. - * @param {Point} p the other point - * @return {Number} distance - */ - distSqr: function(p) { - var dx = p.x - this.x, - dy = p.y - this.y; - return dx * dx + dy * dy; - }, - - /** - * Get the angle from the 0, 0 coordinate to this point, in radians - * coordinates. - * @return {Number} angle - */ - angle: function() { - return Math.atan2(this.y, this.x); - }, - - /** - * Get the angle from this point to another point, in radians - * @param {Point} b the other point - * @return {Number} angle - */ - angleTo: function(b) { - return Math.atan2(this.y - b.y, this.x - b.x); - }, - - /** - * Get the angle between this point and another point, in radians - * @param {Point} b the other point - * @return {Number} angle - */ - angleWith: function(b) { - return this.angleWithSep(b.x, b.y); - }, - - /* - * Find the angle of the two vectors, solving the formula for - * the cross product a x b = |a||b|sin(θ) for θ. - * @param {Number} x the x-coordinate - * @param {Number} y the y-coordinate - * @return {Number} the angle in radians - */ - angleWithSep: function(x, y) { - return Math.atan2( - this.x * y - this.y * x, - this.x * x + this.y * y); - }, - - _matMult: function(m) { - var x = m[0] * this.x + m[1] * this.y, - y = m[2] * this.x + m[3] * this.y; - this.x = x; - this.y = y; - return this; - }, - - _add: function(p) { - this.x += p.x; - this.y += p.y; - return this; - }, - - _sub: function(p) { - this.x -= p.x; - this.y -= p.y; - return this; - }, - - _mult: function(k) { - this.x *= k; - this.y *= k; - return this; - }, - - _div: function(k) { - this.x /= k; - this.y /= k; - return this; - }, - - _multByPoint: function(p) { - this.x *= p.x; - this.y *= p.y; - return this; - }, - - _divByPoint: function(p) { - this.x /= p.x; - this.y /= p.y; - return this; - }, - - _unit: function() { - this._div(this.mag()); - return this; - }, - - _perp: function() { - var y = this.y; - this.y = this.x; - this.x = -y; - return this; - }, - - _rotate: function(angle) { - var cos = Math.cos(angle), - sin = Math.sin(angle), - x = cos * this.x - sin * this.y, - y = sin * this.x + cos * this.y; - this.x = x; - this.y = y; - return this; - }, - - _rotateAround: function(angle, p) { - var cos = Math.cos(angle), - sin = Math.sin(angle), - x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y), - y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y); - this.x = x; - this.y = y; - return this; - }, - - _round: function() { - this.x = Math.round(this.x); - this.y = Math.round(this.y); - return this; - } -}; - -/** - * Construct a point from an array if necessary, otherwise if the input - * is already a Point, or an unknown type, return it unchanged - * @param {Array|Point|*} a any kind of input value - * @return {Point} constructed point, or passed-through value. - * @example - * // this - * var point = Point.convert([0, 1]); - * // is equivalent to - * var point = new Point(0, 1); - */ -Point.convert = function (a) { - if (a instanceof Point) { - return a; - } - if (Array.isArray(a)) { - return new Point(a[0], a[1]); - } - return a; -}; - -},{}],113:[function(require,module,exports){ -module.exports.VectorTile = require('./lib/vectortile.js'); -module.exports.VectorTileFeature = require('./lib/vectortilefeature.js'); -module.exports.VectorTileLayer = require('./lib/vectortilelayer.js'); - -},{"./lib/vectortile.js":114,"./lib/vectortilefeature.js":115,"./lib/vectortilelayer.js":116}],114:[function(require,module,exports){ -'use strict'; - -var VectorTileLayer = require('./vectortilelayer'); - -module.exports = VectorTile; - -function VectorTile(pbf, end) { - this.layers = pbf.readFields(readTile, {}, end); -} - -function readTile(tag, layers, pbf) { - if (tag === 3) { - var layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos); - if (layer.length) layers[layer.name] = layer; - } -} - - -},{"./vectortilelayer":116}],115:[function(require,module,exports){ -'use strict'; - -var Point = require('@mapbox/point-geometry'); - -module.exports = VectorTileFeature; - -function VectorTileFeature(pbf, end, extent, keys, values) { - // Public - this.properties = {}; - this.extent = extent; - this.type = 0; - - // Private - this._pbf = pbf; - this._geometry = -1; - this._keys = keys; - this._values = values; - - pbf.readFields(readFeature, this, end); -} - -function readFeature(tag, feature, pbf) { - if (tag == 1) feature.id = pbf.readVarint(); - else if (tag == 2) readTag(pbf, feature); - else if (tag == 3) feature.type = pbf.readVarint(); - else if (tag == 4) feature._geometry = pbf.pos; -} - -function readTag(pbf, feature) { - var end = pbf.readVarint() + pbf.pos; - - while (pbf.pos < end) { - var key = feature._keys[pbf.readVarint()], - value = feature._values[pbf.readVarint()]; - feature.properties[key] = value; - } -} - -VectorTileFeature.types = ['Unknown', 'Point', 'LineString', 'Polygon']; - -VectorTileFeature.prototype.loadGeometry = function() { - var pbf = this._pbf; - pbf.pos = this._geometry; - - var end = pbf.readVarint() + pbf.pos, - cmd = 1, - length = 0, - x = 0, - y = 0, - lines = [], - line; - - while (pbf.pos < end) { - if (length <= 0) { - var cmdLen = pbf.readVarint(); - cmd = cmdLen & 0x7; - length = cmdLen >> 3; - } - - length--; - - if (cmd === 1 || cmd === 2) { - x += pbf.readSVarint(); - y += pbf.readSVarint(); - - if (cmd === 1) { // moveTo - if (line) lines.push(line); - line = []; - } - - line.push(new Point(x, y)); - - } else if (cmd === 7) { - - // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90 - if (line) { - line.push(line[0].clone()); // closePolygon - } - - } else { - throw new Error('unknown command ' + cmd); - } - } - - if (line) lines.push(line); - - return lines; -}; - -VectorTileFeature.prototype.bbox = function() { - var pbf = this._pbf; - pbf.pos = this._geometry; - - var end = pbf.readVarint() + pbf.pos, - cmd = 1, - length = 0, - x = 0, - y = 0, - x1 = Infinity, - x2 = -Infinity, - y1 = Infinity, - y2 = -Infinity; - - while (pbf.pos < end) { - if (length <= 0) { - var cmdLen = pbf.readVarint(); - cmd = cmdLen & 0x7; - length = cmdLen >> 3; - } - - length--; - - if (cmd === 1 || cmd === 2) { - x += pbf.readSVarint(); - y += pbf.readSVarint(); - if (x < x1) x1 = x; - if (x > x2) x2 = x; - if (y < y1) y1 = y; - if (y > y2) y2 = y; - - } else if (cmd !== 7) { - throw new Error('unknown command ' + cmd); - } - } - - return [x1, y1, x2, y2]; -}; - -VectorTileFeature.prototype.toGeoJSON = function(x, y, z) { - var size = this.extent * Math.pow(2, z), - x0 = this.extent * x, - y0 = this.extent * y, - coords = this.loadGeometry(), - type = VectorTileFeature.types[this.type], - i, j; - - function project(line) { - for (var j = 0; j < line.length; j++) { - var p = line[j], y2 = 180 - (p.y + y0) * 360 / size; - line[j] = [ - (p.x + x0) * 360 / size - 180, - 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90 - ]; - } - } - - switch (this.type) { - case 1: - var points = []; - for (i = 0; i < coords.length; i++) { - points[i] = coords[i][0]; - } - coords = points; - project(coords); - break; - - case 2: - for (i = 0; i < coords.length; i++) { - project(coords[i]); - } - break; - - case 3: - coords = classifyRings(coords); - for (i = 0; i < coords.length; i++) { - for (j = 0; j < coords[i].length; j++) { - project(coords[i][j]); - } - } - break; - } - - if (coords.length === 1) { - coords = coords[0]; - } else { - type = 'Multi' + type; - } - - var result = { - type: "Feature", - geometry: { - type: type, - coordinates: coords - }, - properties: this.properties - }; - - if ('id' in this) { - result.id = this.id; - } - - return result; -}; - -// classifies an array of rings into polygons with outer rings and holes - -function classifyRings(rings) { - var len = rings.length; - - if (len <= 1) return [rings]; - - var polygons = [], - polygon, - ccw; - - for (var i = 0; i < len; i++) { - var area = signedArea(rings[i]); - if (area === 0) continue; - - if (ccw === undefined) ccw = area < 0; - - if (ccw === area < 0) { - if (polygon) polygons.push(polygon); - polygon = [rings[i]]; - - } else { - polygon.push(rings[i]); - } - } - if (polygon) polygons.push(polygon); - - return polygons; -} - -function signedArea(ring) { - var sum = 0; - for (var i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) { - p1 = ring[i]; - p2 = ring[j]; - sum += (p2.x - p1.x) * (p1.y + p2.y); - } - return sum; -} - -},{"@mapbox/point-geometry":112}],116:[function(require,module,exports){ -'use strict'; - -var VectorTileFeature = require('./vectortilefeature.js'); - -module.exports = VectorTileLayer; - -function VectorTileLayer(pbf, end) { - // Public - this.version = 1; - this.name = null; - this.extent = 4096; - this.length = 0; - - // Private - this._pbf = pbf; - this._keys = []; - this._values = []; - this._features = []; - - pbf.readFields(readLayer, this, end); - - this.length = this._features.length; -} - -function readLayer(tag, layer, pbf) { - if (tag === 15) layer.version = pbf.readVarint(); - else if (tag === 1) layer.name = pbf.readString(); - else if (tag === 5) layer.extent = pbf.readVarint(); - else if (tag === 2) layer._features.push(pbf.pos); - else if (tag === 3) layer._keys.push(pbf.readString()); - else if (tag === 4) layer._values.push(readValueMessage(pbf)); -} - -function readValueMessage(pbf) { - var value = null, - end = pbf.readVarint() + pbf.pos; - - while (pbf.pos < end) { - var tag = pbf.readVarint() >> 3; - - value = tag === 1 ? pbf.readString() : - tag === 2 ? pbf.readFloat() : - tag === 3 ? pbf.readDouble() : - tag === 4 ? pbf.readVarint64() : - tag === 5 ? pbf.readVarint() : - tag === 6 ? pbf.readSVarint() : - tag === 7 ? pbf.readBoolean() : null; - } - - return value; -} - -// return feature `i` from this layer as a `VectorTileFeature` -VectorTileLayer.prototype.feature = function(i) { - if (i < 0 || i >= this._features.length) throw new Error('feature index out of bounds'); - - this._pbf.pos = this._features[i]; - - var end = this._pbf.readVarint() + this._pbf.pos; - return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values); -}; - -},{"./vectortilefeature.js":115}],117:[function(require,module,exports){ -var each = require('@turf/meta').coordEach; - -/** - * Takes a set of features, calculates the bbox of all input features, and returns a bounding box. - * - * @name bbox - * @param {(Feature|FeatureCollection)} geojson input features - * @returns {Array} bbox extent in [minX, minY, maxX, maxY] order - * @addToMap features, bboxPolygon - * @example - * var pt1 = turf.point([114.175329, 22.2524]) - * var pt2 = turf.point([114.170007, 22.267969]) - * var pt3 = turf.point([114.200649, 22.274641]) - * var pt4 = turf.point([114.200649, 22.274641]) - * var pt5 = turf.point([114.186744, 22.265745]) - * var features = turf.featureCollection([pt1, pt2, pt3, pt4, pt5]) - * - * var bbox = turf.bbox(features); - * - * var bboxPolygon = turf.bboxPolygon(bbox); - * - * //=bbox - * - * //=bboxPolygon - */ -module.exports = function (geojson) { - var bbox = [Infinity, Infinity, -Infinity, -Infinity]; - each(geojson, function (coord) { - if (bbox[0] > coord[0]) bbox[0] = coord[0]; - if (bbox[1] > coord[1]) bbox[1] = coord[1]; - if (bbox[2] < coord[0]) bbox[2] = coord[0]; - if (bbox[3] < coord[1]) bbox[3] = coord[1]; - }); - return bbox; -}; - -},{"@turf/meta":130}],118:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var invariant_1 = require("@turf/invariant"); -// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule -// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js -// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html -/** - * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point - * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes. - * - * @name booleanPointInPolygon - * @param {Coord} point input point - * @param {Feature} polygon input polygon or multipolygon - * @param {Object} [options={}] Optional parameters - * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if - * the point is inside the polygon otherwise false. - * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon - * @example - * var pt = turf.point([-77, 44]); - * var poly = turf.polygon([[ - * [-81, 41], - * [-81, 47], - * [-72, 47], - * [-72, 41], - * [-81, 41] - * ]]); - * - * turf.booleanPointInPolygon(pt, poly); - * //= true - */ -function booleanPointInPolygon(point, polygon, options) { - if (options === void 0) { options = {}; } - // validation - if (!point) { - throw new Error("point is required"); - } - if (!polygon) { - throw new Error("polygon is required"); - } - var pt = invariant_1.getCoord(point); - var geom = invariant_1.getGeom(polygon); - var type = geom.type; - var bbox = polygon.bbox; - var polys = geom.coordinates; - // Quick elimination if point is not inside bbox - if (bbox && inBBox(pt, bbox) === false) { - return false; - } - // normalize to multipolygon - if (type === "Polygon") { - polys = [polys]; - } - var insidePoly = false; - for (var i = 0; i < polys.length && !insidePoly; i++) { - // check if it is in the outer ring first - if (inRing(pt, polys[i][0], options.ignoreBoundary)) { - var inHole = false; - var k = 1; - // check for the point in any of the holes - while (k < polys[i].length && !inHole) { - if (inRing(pt, polys[i][k], !options.ignoreBoundary)) { - inHole = true; - } - k++; - } - if (!inHole) { - insidePoly = true; - } - } - } - return insidePoly; -} -exports.default = booleanPointInPolygon; -/** - * inRing - * - * @private - * @param {Array} pt [x,y] - * @param {Array>} ring [[x,y], [x,y],..] - * @param {boolean} ignoreBoundary ignoreBoundary - * @returns {boolean} inRing - */ -function inRing(pt, ring, ignoreBoundary) { - var isInside = false; - if (ring[0][0] === ring[ring.length - 1][0] && ring[0][1] === ring[ring.length - 1][1]) { - ring = ring.slice(0, ring.length - 1); - } - for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) { - var xi = ring[i][0]; - var yi = ring[i][1]; - var xj = ring[j][0]; - var yj = ring[j][1]; - var onBoundary = (pt[1] * (xi - xj) + yi * (xj - pt[0]) + yj * (pt[0] - xi) === 0) && - ((xi - pt[0]) * (xj - pt[0]) <= 0) && ((yi - pt[1]) * (yj - pt[1]) <= 0); - if (onBoundary) { - return !ignoreBoundary; - } - var intersect = ((yi > pt[1]) !== (yj > pt[1])) && - (pt[0] < (xj - xi) * (pt[1] - yi) / (yj - yi) + xi); - if (intersect) { - isInside = !isInside; - } - } - return isInside; -} -/** - * inBBox - * - * @private - * @param {Position} pt point [x,y] - * @param {BBox} bbox BBox [west, south, east, north] - * @returns {boolean} true/false if point is inside BBox - */ -function inBBox(pt, bbox) { - return bbox[0] <= pt[0] && - bbox[1] <= pt[1] && - bbox[2] >= pt[0] && - bbox[3] >= pt[1]; -} - -},{"@turf/invariant":125}],119:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var invariant_1 = require("@turf/invariant"); -/** - * Returns true if a point is on a line. Accepts a optional parameter to ignore the - * start and end vertices of the linestring. - * - * @name booleanPointOnLine - * @param {Coord} pt GeoJSON Point - * @param {Feature} line GeoJSON LineString - * @param {Object} [options={}] Optional parameters - * @param {boolean} [options.ignoreEndVertices=false] whether to ignore the start and end vertices. - * @returns {boolean} true/false - * @example - * var pt = turf.point([0, 0]); - * var line = turf.lineString([[-1, -1],[1, 1],[1.5, 2.2]]); - * var isPointOnLine = turf.booleanPointOnLine(pt, line); - * //=true - */ -function booleanPointOnLine(pt, line, options) { - if (options === void 0) { options = {}; } - // Normalize inputs - var ptCoords = invariant_1.getCoord(pt); - var lineCoords = invariant_1.getCoords(line); - // Main - for (var i = 0; i < lineCoords.length - 1; i++) { - var ignoreBoundary = false; - if (options.ignoreEndVertices) { - if (i === 0) { - ignoreBoundary = "start"; - } - if (i === lineCoords.length - 2) { - ignoreBoundary = "end"; - } - if (i === 0 && i + 1 === lineCoords.length - 1) { - ignoreBoundary = "both"; - } - } - if (isPointOnLineSegment(lineCoords[i], lineCoords[i + 1], ptCoords, ignoreBoundary)) { - return true; - } - } - return false; -} -// See http://stackoverflow.com/a/4833823/1979085 -/** - * @private - * @param {Position} lineSegmentStart coord pair of start of line - * @param {Position} lineSegmentEnd coord pair of end of line - * @param {Position} pt coord pair of point to check - * @param {boolean|string} excludeBoundary whether the point is allowed to fall on the line ends. - * If true which end to ignore. - * @returns {boolean} true/false - */ -function isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt, excludeBoundary) { - var x = pt[0]; - var y = pt[1]; - var x1 = lineSegmentStart[0]; - var y1 = lineSegmentStart[1]; - var x2 = lineSegmentEnd[0]; - var y2 = lineSegmentEnd[1]; - var dxc = pt[0] - x1; - var dyc = pt[1] - y1; - var dxl = x2 - x1; - var dyl = y2 - y1; - var cross = dxc * dyl - dyc * dxl; - if (cross !== 0) { - return false; - } - if (!excludeBoundary) { - if (Math.abs(dxl) >= Math.abs(dyl)) { - return dxl > 0 ? x1 <= x && x <= x2 : x2 <= x && x <= x1; - } - return dyl > 0 ? y1 <= y && y <= y2 : y2 <= y && y <= y1; - } - else if (excludeBoundary === "start") { - if (Math.abs(dxl) >= Math.abs(dyl)) { - return dxl > 0 ? x1 < x && x <= x2 : x2 <= x && x < x1; - } - return dyl > 0 ? y1 < y && y <= y2 : y2 <= y && y < y1; - } - else if (excludeBoundary === "end") { - if (Math.abs(dxl) >= Math.abs(dyl)) { - return dxl > 0 ? x1 <= x && x < x2 : x2 < x && x <= x1; - } - return dyl > 0 ? y1 <= y && y < y2 : y2 < y && y <= y1; - } - else if (excludeBoundary === "both") { - if (Math.abs(dxl) >= Math.abs(dyl)) { - return dxl > 0 ? x1 < x && x < x2 : x2 < x && x < x1; - } - return dyl > 0 ? y1 < y && y < y2 : y2 < y && y < y1; - } - return false; -} -exports.default = booleanPointOnLine; - -},{"@turf/invariant":125}],120:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var bbox_1 = require("@turf/bbox"); -var boolean_point_on_line_1 = require("@turf/boolean-point-on-line"); -var boolean_point_in_polygon_1 = require("@turf/boolean-point-in-polygon"); -var invariant_1 = require("@turf/invariant"); -/** - * Boolean-within returns true if the first geometry is completely within the second geometry. - * The interiors of both geometries must intersect and, the interior and boundary of the primary (geometry a) - * must not intersect the exterior of the secondary (geometry b). - * Boolean-within returns the exact opposite result of the `@turf/boolean-contains`. - * - * @name booleanWithin - * @param {Geometry|Feature} feature1 GeoJSON Feature or Geometry - * @param {Geometry|Feature} feature2 GeoJSON Feature or Geometry - * @returns {boolean} true/false - * @example - * var line = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]); - * var point = turf.point([1, 2]); - * - * turf.booleanWithin(point, line); - * //=true - */ -function booleanWithin(feature1, feature2) { - var type1 = invariant_1.getType(feature1); - var type2 = invariant_1.getType(feature2); - var geom1 = invariant_1.getGeom(feature1); - var geom2 = invariant_1.getGeom(feature2); - switch (type1) { - case 'Point': - switch (type2) { - case 'MultiPoint': - return isPointInMultiPoint(geom1, geom2); - case 'LineString': - return boolean_point_on_line_1.default(geom1, geom2, { ignoreEndVertices: true }); - case 'Polygon': - case 'MultiPolygon': - return boolean_point_in_polygon_1.default(geom1, geom2, { ignoreBoundary: true }); - default: - throw new Error('feature2 ' + type2 + ' geometry not supported'); - } - case 'MultiPoint': - switch (type2) { - case 'MultiPoint': - return isMultiPointInMultiPoint(geom1, geom2); - case 'LineString': - return isMultiPointOnLine(geom1, geom2); - case 'Polygon': - case 'MultiPolygon': - return isMultiPointInPoly(geom1, geom2); - default: - throw new Error('feature2 ' + type2 + ' geometry not supported'); - } - case 'LineString': - switch (type2) { - case 'LineString': - return isLineOnLine(geom1, geom2); - case 'Polygon': - case 'MultiPolygon': - return isLineInPoly(geom1, geom2); - default: - throw new Error('feature2 ' + type2 + ' geometry not supported'); - } - case 'Polygon': - switch (type2) { - case 'Polygon': - case 'MultiPolygon': - return isPolyInPoly(geom1, geom2); - default: - throw new Error('feature2 ' + type2 + ' geometry not supported'); - } - default: - throw new Error('feature1 ' + type1 + ' geometry not supported'); - } -} -function isPointInMultiPoint(point, multiPoint) { - var i; - var output = false; - for (i = 0; i < multiPoint.coordinates.length; i++) { - if (compareCoords(multiPoint.coordinates[i], point.coordinates)) { - output = true; - break; - } - } - return output; -} -function isMultiPointInMultiPoint(multiPoint1, multiPoint2) { - for (var i = 0; i < multiPoint1.coordinates.length; i++) { - var anyMatch = false; - for (var i2 = 0; i2 < multiPoint2.coordinates.length; i2++) { - if (compareCoords(multiPoint1.coordinates[i], multiPoint2.coordinates[i2])) { - anyMatch = true; - } - } - if (!anyMatch) { - return false; - } - } - return true; -} -function isMultiPointOnLine(multiPoint, lineString) { - var foundInsidePoint = false; - for (var i = 0; i < multiPoint.coordinates.length; i++) { - if (!boolean_point_on_line_1.default(multiPoint.coordinates[i], lineString)) { - return false; - } - if (!foundInsidePoint) { - foundInsidePoint = boolean_point_on_line_1.default(multiPoint.coordinates[i], lineString, { ignoreEndVertices: true }); - } - } - return foundInsidePoint; -} -function isMultiPointInPoly(multiPoint, polygon) { - var output = true; - var oneInside = false; - for (var i = 0; i < multiPoint.coordinates.length; i++) { - var isInside = boolean_point_in_polygon_1.default(multiPoint.coordinates[1], polygon); - if (!isInside) { - output = false; - break; - } - if (!oneInside) { - isInside = boolean_point_in_polygon_1.default(multiPoint.coordinates[1], polygon, { ignoreBoundary: true }); - } - } - return output && isInside; -} -function isLineOnLine(lineString1, lineString2) { - for (var i = 0; i < lineString1.coordinates.length; i++) { - if (!boolean_point_on_line_1.default(lineString1.coordinates[i], lineString2)) { - return false; - } - } - return true; -} -function isLineInPoly(linestring, polygon) { - var polyBbox = bbox_1.default(polygon); - var lineBbox = bbox_1.default(linestring); - if (!doBBoxOverlap(polyBbox, lineBbox)) { - return false; - } - var foundInsidePoint = false; - for (var i = 0; i < linestring.coordinates.length - 1; i++) { - if (!boolean_point_in_polygon_1.default(linestring.coordinates[i], polygon)) { - return false; - } - if (!foundInsidePoint) { - foundInsidePoint = boolean_point_in_polygon_1.default(linestring.coordinates[i], polygon, { ignoreBoundary: true }); - } - if (!foundInsidePoint) { - var midpoint = getMidpoint(linestring.coordinates[i], linestring.coordinates[i + 1]); - foundInsidePoint = boolean_point_in_polygon_1.default(midpoint, polygon, { ignoreBoundary: true }); - } - } - return foundInsidePoint; -} -/** - * Is Polygon2 in Polygon1 - * Only takes into account outer rings - * - * @private - * @param {Geometry|Feature} feature1 Polygon1 - * @param {Geometry|Feature} feature2 Polygon2 - * @returns {boolean} true/false - */ -function isPolyInPoly(feature1, feature2) { - var poly1Bbox = bbox_1.default(feature1); - var poly2Bbox = bbox_1.default(feature2); - if (!doBBoxOverlap(poly2Bbox, poly1Bbox)) { - return false; - } - for (var i = 0; i < feature1.coordinates[0].length; i++) { - if (!boolean_point_in_polygon_1.default(feature1.coordinates[0][i], feature2)) { - return false; - } - } - return true; -} -function doBBoxOverlap(bbox1, bbox2) { - if (bbox1[0] > bbox2[0]) - return false; - if (bbox1[2] < bbox2[2]) - return false; - if (bbox1[1] > bbox2[1]) - return false; - if (bbox1[3] < bbox2[3]) - return false; - return true; -} -/** - * compareCoords - * - * @private - * @param {Position} pair1 point [x,y] - * @param {Position} pair2 point [x,y] - * @returns {boolean} true/false if coord pairs match - */ -function compareCoords(pair1, pair2) { - return pair1[0] === pair2[0] && pair1[1] === pair2[1]; -} -/** - * getMidpoint - * - * @private - * @param {Position} pair1 point [x,y] - * @param {Position} pair2 point [x,y] - * @returns {Position} midpoint of pair1 and pair2 - */ -function getMidpoint(pair1, pair2) { - return [(pair1[0] + pair2[0]) / 2, (pair1[1] + pair2[1]) / 2]; -} -exports.default = booleanWithin; - -},{"@turf/bbox":121,"@turf/boolean-point-in-polygon":118,"@turf/boolean-point-on-line":119,"@turf/invariant":125}],121:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var meta_1 = require("@turf/meta"); -/** - * Takes a set of features, calculates the bbox of all input features, and returns a bounding box. - * - * @name bbox - * @param {GeoJSON} geojson any GeoJSON object - * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order - * @example - * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]); - * var bbox = turf.bbox(line); - * var bboxPolygon = turf.bboxPolygon(bbox); - * - * //addToMap - * var addToMap = [line, bboxPolygon] - */ -function bbox(geojson) { - var result = [Infinity, Infinity, -Infinity, -Infinity]; - meta_1.coordEach(geojson, function (coord) { - if (result[0] > coord[0]) { - result[0] = coord[0]; - } - if (result[1] > coord[1]) { - result[1] = coord[1]; - } - if (result[2] < coord[0]) { - result[2] = coord[0]; - } - if (result[3] < coord[1]) { - result[3] = coord[1]; - } - }); - return result; -} -exports.default = bbox; - -},{"@turf/meta":122}],122:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var helpers = require('@turf/helpers'); - -/** - * Callback for coordEach - * - * @callback coordEachCallback - * @param {Array} currentCoord The current coordinate being processed. - * @param {number} coordIndex The current index of the coordinate being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - * @param {number} geometryIndex The current index of the Geometry being processed. - */ - -/** - * Iterate over coordinates in any GeoJSON object, similar to Array.forEach() - * - * @name coordEach - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex) - * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration. - * @returns {void} - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {"foo": "bar"}), - * turf.point([36, 53], {"hello": "world"}) - * ]); - * - * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) { - * //=currentCoord - * //=coordIndex - * //=featureIndex - * //=multiFeatureIndex - * //=geometryIndex - * }); - */ -function coordEach(geojson, callback, excludeWrapCoord) { - // Handles null Geometry -- Skips this GeoJSON - if (geojson === null) return; - var j, k, l, geometry, stopG, coords, - geometryMaybeCollection, - wrapShrink = 0, - coordIndex = 0, - isGeometryCollection, - type = geojson.type, - isFeatureCollection = type === 'FeatureCollection', - isFeature = type === 'Feature', - stop = isFeatureCollection ? geojson.features.length : 1; - - // This logic may look a little weird. The reason why it is that way - // is because it's trying to be fast. GeoJSON supports multiple kinds - // of objects at its root: FeatureCollection, Features, Geometries. - // This function has the responsibility of handling all of them, and that - // means that some of the `for` loops you see below actually just don't apply - // to certain inputs. For instance, if you give this just a - // Point geometry, then both loops are short-circuited and all we do - // is gradually rename the input until it's called 'geometry'. - // - // This also aims to allocate as few resources as possible: just a - // few numbers and booleans, rather than any temporary arrays as would - // be required with the normalization approach. - for (var featureIndex = 0; featureIndex < stop; featureIndex++) { - geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry : - (isFeature ? geojson.geometry : geojson)); - isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false; - stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1; - - for (var geomIndex = 0; geomIndex < stopG; geomIndex++) { - var multiFeatureIndex = 0; - var geometryIndex = 0; - geometry = isGeometryCollection ? - geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection; - - // Handles null Geometry -- Skips this geometry - if (geometry === null) continue; - coords = geometry.coordinates; - var geomType = geometry.type; - - wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0; - - switch (geomType) { - case null: - break; - case 'Point': - if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false; - coordIndex++; - multiFeatureIndex++; - break; - case 'LineString': - case 'MultiPoint': - for (j = 0; j < coords.length; j++) { - if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false; - coordIndex++; - if (geomType === 'MultiPoint') multiFeatureIndex++; - } - if (geomType === 'LineString') multiFeatureIndex++; - break; - case 'Polygon': - case 'MultiLineString': - for (j = 0; j < coords.length; j++) { - for (k = 0; k < coords[j].length - wrapShrink; k++) { - if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false; - coordIndex++; - } - if (geomType === 'MultiLineString') multiFeatureIndex++; - if (geomType === 'Polygon') geometryIndex++; - } - if (geomType === 'Polygon') multiFeatureIndex++; - break; - case 'MultiPolygon': - for (j = 0; j < coords.length; j++) { - geometryIndex = 0; - for (k = 0; k < coords[j].length; k++) { - for (l = 0; l < coords[j][k].length - wrapShrink; l++) { - if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false; - coordIndex++; - } - geometryIndex++; - } - multiFeatureIndex++; - } - break; - case 'GeometryCollection': - for (j = 0; j < geometry.geometries.length; j++) - if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false; - break; - default: - throw new Error('Unknown Geometry Type'); - } - } - } -} - -/** - * Callback for coordReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback coordReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Array} currentCoord The current coordinate being processed. - * @param {number} coordIndex The current index of the coordinate being processed. - * Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - * @param {number} geometryIndex The current index of the Geometry being processed. - */ - -/** - * Reduce coordinates in any GeoJSON object, similar to Array.reduce() - * - * @name coordReduce - * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration. - * @returns {*} The value that results from the reduction. - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {"foo": "bar"}), - * turf.point([36, 53], {"hello": "world"}) - * ]); - * - * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) { - * //=previousValue - * //=currentCoord - * //=coordIndex - * //=featureIndex - * //=multiFeatureIndex - * //=geometryIndex - * return currentCoord; - * }); - */ -function coordReduce(geojson, callback, initialValue, excludeWrapCoord) { - var previousValue = initialValue; - coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) { - if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord; - else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex); - }, excludeWrapCoord); - return previousValue; -} - -/** - * Callback for propEach - * - * @callback propEachCallback - * @param {Object} currentProperties The current Properties being processed. - * @param {number} featureIndex The current index of the Feature being processed. - */ - -/** - * Iterate over properties in any GeoJSON object, similar to Array.forEach() - * - * @name propEach - * @param {FeatureCollection|Feature} geojson any GeoJSON object - * @param {Function} callback a method that takes (currentProperties, featureIndex) - * @returns {void} - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * turf.propEach(features, function (currentProperties, featureIndex) { - * //=currentProperties - * //=featureIndex - * }); - */ -function propEach(geojson, callback) { - var i; - switch (geojson.type) { - case 'FeatureCollection': - for (i = 0; i < geojson.features.length; i++) { - if (callback(geojson.features[i].properties, i) === false) break; - } - break; - case 'Feature': - callback(geojson.properties, 0); - break; - } -} - - -/** - * Callback for propReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback propReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {*} currentProperties The current Properties being processed. - * @param {number} featureIndex The current index of the Feature being processed. - */ - -/** - * Reduce properties in any GeoJSON object into a single value, - * similar to how Array.reduce works. However, in this case we lazily run - * the reduction, so an array of all properties is unnecessary. - * - * @name propReduce - * @param {FeatureCollection|Feature} geojson any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) { - * //=previousValue - * //=currentProperties - * //=featureIndex - * return currentProperties - * }); - */ -function propReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - propEach(geojson, function (currentProperties, featureIndex) { - if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties; - else previousValue = callback(previousValue, currentProperties, featureIndex); - }); - return previousValue; -} - -/** - * Callback for featureEach - * - * @callback featureEachCallback - * @param {Feature} currentFeature The current Feature being processed. - * @param {number} featureIndex The current index of the Feature being processed. - */ - -/** - * Iterate over features in any GeoJSON object, similar to - * Array.forEach. - * - * @name featureEach - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (currentFeature, featureIndex) - * @returns {void} - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * turf.featureEach(features, function (currentFeature, featureIndex) { - * //=currentFeature - * //=featureIndex - * }); - */ -function featureEach(geojson, callback) { - if (geojson.type === 'Feature') { - callback(geojson, 0); - } else if (geojson.type === 'FeatureCollection') { - for (var i = 0; i < geojson.features.length; i++) { - if (callback(geojson.features[i], i) === false) break; - } - } -} - -/** - * Callback for featureReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback featureReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Feature} currentFeature The current Feature being processed. - * @param {number} featureIndex The current index of the Feature being processed. - */ - -/** - * Reduce features in any GeoJSON object, similar to Array.reduce(). - * - * @name featureReduce - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {"foo": "bar"}), - * turf.point([36, 53], {"hello": "world"}) - * ]); - * - * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) { - * //=previousValue - * //=currentFeature - * //=featureIndex - * return currentFeature - * }); - */ -function featureReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - featureEach(geojson, function (currentFeature, featureIndex) { - if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature; - else previousValue = callback(previousValue, currentFeature, featureIndex); - }); - return previousValue; -} - -/** - * Get all coordinates from any GeoJSON object. - * - * @name coordAll - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @returns {Array>} coordinate position array - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * var coords = turf.coordAll(features); - * //= [[26, 37], [36, 53]] - */ -function coordAll(geojson) { - var coords = []; - coordEach(geojson, function (coord) { - coords.push(coord); - }); - return coords; -} - -/** - * Callback for geomEach - * - * @callback geomEachCallback - * @param {Geometry} currentGeometry The current Geometry being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {Object} featureProperties The current Feature Properties being processed. - * @param {Array} featureBBox The current Feature BBox being processed. - * @param {number|string} featureId The current Feature Id being processed. - */ - -/** - * Iterate over each geometry in any GeoJSON object, similar to Array.forEach() - * - * @name geomEach - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) - * @returns {void} - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) { - * //=currentGeometry - * //=featureIndex - * //=featureProperties - * //=featureBBox - * //=featureId - * }); - */ -function geomEach(geojson, callback) { - var i, j, g, geometry, stopG, - geometryMaybeCollection, - isGeometryCollection, - featureProperties, - featureBBox, - featureId, - featureIndex = 0, - isFeatureCollection = geojson.type === 'FeatureCollection', - isFeature = geojson.type === 'Feature', - stop = isFeatureCollection ? geojson.features.length : 1; - - // This logic may look a little weird. The reason why it is that way - // is because it's trying to be fast. GeoJSON supports multiple kinds - // of objects at its root: FeatureCollection, Features, Geometries. - // This function has the responsibility of handling all of them, and that - // means that some of the `for` loops you see below actually just don't apply - // to certain inputs. For instance, if you give this just a - // Point geometry, then both loops are short-circuited and all we do - // is gradually rename the input until it's called 'geometry'. - // - // This also aims to allocate as few resources as possible: just a - // few numbers and booleans, rather than any temporary arrays as would - // be required with the normalization approach. - for (i = 0; i < stop; i++) { - - geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry : - (isFeature ? geojson.geometry : geojson)); - featureProperties = (isFeatureCollection ? geojson.features[i].properties : - (isFeature ? geojson.properties : {})); - featureBBox = (isFeatureCollection ? geojson.features[i].bbox : - (isFeature ? geojson.bbox : undefined)); - featureId = (isFeatureCollection ? geojson.features[i].id : - (isFeature ? geojson.id : undefined)); - isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false; - stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1; - - for (g = 0; g < stopG; g++) { - geometry = isGeometryCollection ? - geometryMaybeCollection.geometries[g] : geometryMaybeCollection; - - // Handle null Geometry - if (geometry === null) { - if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false; - continue; - } - switch (geometry.type) { - case 'Point': - case 'LineString': - case 'MultiPoint': - case 'Polygon': - case 'MultiLineString': - case 'MultiPolygon': { - if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false; - break; - } - case 'GeometryCollection': { - for (j = 0; j < geometry.geometries.length; j++) { - if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false; - } - break; - } - default: - throw new Error('Unknown Geometry Type'); - } - } - // Only increase `featureIndex` per each feature - featureIndex++; - } -} - -/** - * Callback for geomReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback geomReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Geometry} currentGeometry The current Geometry being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {Object} featureProperties The current Feature Properties being processed. - * @param {Array} featureBBox The current Feature BBox being processed. - * @param {number|string} featureId The current Feature Id being processed. - */ - -/** - * Reduce geometry in any GeoJSON object, similar to Array.reduce(). - * - * @name geomReduce - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.point([36, 53], {hello: 'world'}) - * ]); - * - * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) { - * //=previousValue - * //=currentGeometry - * //=featureIndex - * //=featureProperties - * //=featureBBox - * //=featureId - * return currentGeometry - * }); - */ -function geomReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) { - if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry; - else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId); - }); - return previousValue; -} - -/** - * Callback for flattenEach - * - * @callback flattenEachCallback - * @param {Feature} currentFeature The current flattened feature being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - */ - -/** - * Iterate over flattened features in any GeoJSON object, similar to - * Array.forEach. - * - * @name flattenEach - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex) - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'}) - * ]); - * - * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) { - * //=currentFeature - * //=featureIndex - * //=multiFeatureIndex - * }); - */ -function flattenEach(geojson, callback) { - geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) { - // Callback for single geometry - var type = (geometry === null) ? null : geometry.type; - switch (type) { - case null: - case 'Point': - case 'LineString': - case 'Polygon': - if (callback(helpers.feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false; - return; - } - - var geomType; - - // Callback for multi-geometry - switch (type) { - case 'MultiPoint': - geomType = 'Point'; - break; - case 'MultiLineString': - geomType = 'LineString'; - break; - case 'MultiPolygon': - geomType = 'Polygon'; - break; - } - - for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) { - var coordinate = geometry.coordinates[multiFeatureIndex]; - var geom = { - type: geomType, - coordinates: coordinate - }; - if (callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false; - } - }); -} - -/** - * Callback for flattenReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback flattenReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Feature} currentFeature The current Feature being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - */ - -/** - * Reduce flattened features in any GeoJSON object, similar to Array.reduce(). - * - * @name flattenReduce - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = turf.featureCollection([ - * turf.point([26, 37], {foo: 'bar'}), - * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'}) - * ]); - * - * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) { - * //=previousValue - * //=currentFeature - * //=featureIndex - * //=multiFeatureIndex - * return currentFeature - * }); - */ -function flattenReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) { - if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature; - else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex); - }); - return previousValue; -} - -/** - * Callback for segmentEach - * - * @callback segmentEachCallback - * @param {Feature} currentSegment The current Segment being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - * @param {number} geometryIndex The current index of the Geometry being processed. - * @param {number} segmentIndex The current index of the Segment being processed. - * @returns {void} - */ - -/** - * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach() - * (Multi)Point geometries do not contain segments therefore they are ignored during this operation. - * - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON - * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) - * @returns {void} - * @example - * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]); - * - * // Iterate over GeoJSON by 2-vertex segments - * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) { - * //=currentSegment - * //=featureIndex - * //=multiFeatureIndex - * //=geometryIndex - * //=segmentIndex - * }); - * - * // Calculate the total number of segments - * var total = 0; - * turf.segmentEach(polygon, function () { - * total++; - * }); - */ -function segmentEach(geojson, callback) { - flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) { - var segmentIndex = 0; - - // Exclude null Geometries - if (!feature.geometry) return; - // (Multi)Point geometries do not contain segments therefore they are ignored during this operation. - var type = feature.geometry.type; - if (type === 'Point' || type === 'MultiPoint') return; - - // Generate 2-vertex line segments - var previousCoords; - var previousFeatureIndex = 0; - var previousMultiIndex = 0; - var prevGeomIndex = 0; - if (coordEach(feature, function (currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) { - // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false` - if (previousCoords === undefined || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) { - previousCoords = currentCoord; - previousFeatureIndex = featureIndex; - previousMultiIndex = multiPartIndexCoord; - prevGeomIndex = geometryIndex; - segmentIndex = 0; - return; - } - var currentSegment = helpers.lineString([previousCoords, currentCoord], feature.properties); - if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false; - segmentIndex++; - previousCoords = currentCoord; - }) === false) return false; - }); -} - -/** - * Callback for segmentReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback segmentReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Feature} currentSegment The current Segment being processed. - * @param {number} featureIndex The current index of the Feature being processed. - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed. - * @param {number} geometryIndex The current index of the Geometry being processed. - * @param {number} segmentIndex The current index of the Segment being processed. - */ - -/** - * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce() - * (Multi)Point geometries do not contain segments therefore they are ignored during this operation. - * - * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON - * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {void} - * @example - * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]); - * - * // Iterate over GeoJSON by 2-vertex segments - * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) { - * //= previousSegment - * //= currentSegment - * //= featureIndex - * //= multiFeatureIndex - * //= geometryIndex - * //= segmentInex - * return currentSegment - * }); - * - * // Calculate the total number of segments - * var initialValue = 0 - * var total = turf.segmentReduce(polygon, function (previousValue) { - * previousValue++; - * return previousValue; - * }, initialValue); - */ -function segmentReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - var started = false; - segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) { - if (started === false && initialValue === undefined) previousValue = currentSegment; - else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex); - started = true; - }); - return previousValue; -} - -/** - * Callback for lineEach - * - * @callback lineEachCallback - * @param {Feature} currentLine The current LineString|LinearRing being processed - * @param {number} featureIndex The current index of the Feature being processed - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed - * @param {number} geometryIndex The current index of the Geometry being processed - */ - -/** - * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries, - * similar to Array.forEach. - * - * @name lineEach - * @param {Geometry|Feature} geojson object - * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex) - * @example - * var multiLine = turf.multiLineString([ - * [[26, 37], [35, 45]], - * [[36, 53], [38, 50], [41, 55]] - * ]); - * - * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) { - * //=currentLine - * //=featureIndex - * //=multiFeatureIndex - * //=geometryIndex - * }); - */ -function lineEach(geojson, callback) { - // validation - if (!geojson) throw new Error('geojson is required'); - - flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) { - if (feature.geometry === null) return; - var type = feature.geometry.type; - var coords = feature.geometry.coordinates; - switch (type) { - case 'LineString': - if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false) return false; - break; - case 'Polygon': - for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) { - if (callback(helpers.lineString(coords[geometryIndex], feature.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false; - } - break; - } - }); -} - -/** - * Callback for lineReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @callback lineReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Feature} currentLine The current LineString|LinearRing being processed. - * @param {number} featureIndex The current index of the Feature being processed - * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed - * @param {number} geometryIndex The current index of the Geometry being processed - */ - -/** - * Reduce features in any GeoJSON object, similar to Array.reduce(). - * - * @name lineReduce - * @param {Geometry|Feature} geojson object - * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var multiPoly = turf.multiPolygon([ - * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]), - * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]]) - * ]); - * - * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) { - * //=previousValue - * //=currentLine - * //=featureIndex - * //=multiFeatureIndex - * //=geometryIndex - * return currentLine - * }); - */ -function lineReduce(geojson, callback, initialValue) { - var previousValue = initialValue; - lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) { - if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine; - else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex); - }); - return previousValue; -} - -/** - * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes. - * - * Negative indexes are permitted. - * Point & MultiPoint will always return null. - * - * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry - * @param {Object} [options={}] Optional parameters - * @param {number} [options.featureIndex=0] Feature Index - * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index - * @param {number} [options.geometryIndex=0] Geometry Index - * @param {number} [options.segmentIndex=0] Segment Index - * @param {Object} [options.properties={}] Translate Properties to output LineString - * @param {BBox} [options.bbox={}] Translate BBox to output LineString - * @param {number|string} [options.id={}] Translate Id to output LineString - * @returns {Feature} 2-vertex GeoJSON Feature LineString - * @example - * var multiLine = turf.multiLineString([ - * [[10, 10], [50, 30], [30, 40]], - * [[-10, -10], [-50, -30], [-30, -40]] - * ]); - * - * // First Segment (defaults are 0) - * turf.findSegment(multiLine); - * // => Feature> - * - * // First Segment of 2nd Multi Feature - * turf.findSegment(multiLine, {multiFeatureIndex: 1}); - * // => Feature> - * - * // Last Segment of Last Multi Feature - * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1}); - * // => Feature> - */ -function findSegment(geojson, options) { - // Optional Parameters - options = options || {}; - if (!helpers.isObject(options)) throw new Error('options is invalid'); - var featureIndex = options.featureIndex || 0; - var multiFeatureIndex = options.multiFeatureIndex || 0; - var geometryIndex = options.geometryIndex || 0; - var segmentIndex = options.segmentIndex || 0; - - // Find FeatureIndex - var properties = options.properties; - var geometry; - - switch (geojson.type) { - case 'FeatureCollection': - if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex; - properties = properties || geojson.features[featureIndex].properties; - geometry = geojson.features[featureIndex].geometry; - break; - case 'Feature': - properties = properties || geojson.properties; - geometry = geojson.geometry; - break; - case 'Point': - case 'MultiPoint': - return null; - case 'LineString': - case 'Polygon': - case 'MultiLineString': - case 'MultiPolygon': - geometry = geojson; - break; - default: - throw new Error('geojson is invalid'); - } - - // Find SegmentIndex - if (geometry === null) return null; - var coords = geometry.coordinates; - switch (geometry.type) { - case 'Point': - case 'MultiPoint': - return null; - case 'LineString': - if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1; - return helpers.lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options); - case 'Polygon': - if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex; - if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1; - return helpers.lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options); - case 'MultiLineString': - if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex; - if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1; - return helpers.lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options); - case 'MultiPolygon': - if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex; - if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex; - if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1; - return helpers.lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options); - } - throw new Error('geojson is invalid'); -} - -/** - * Finds a particular Point from a GeoJSON using `@turf/meta` indexes. - * - * Negative indexes are permitted. - * - * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry - * @param {Object} [options={}] Optional parameters - * @param {number} [options.featureIndex=0] Feature Index - * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index - * @param {number} [options.geometryIndex=0] Geometry Index - * @param {number} [options.coordIndex=0] Coord Index - * @param {Object} [options.properties={}] Translate Properties to output Point - * @param {BBox} [options.bbox={}] Translate BBox to output Point - * @param {number|string} [options.id={}] Translate Id to output Point - * @returns {Feature} 2-vertex GeoJSON Feature Point - * @example - * var multiLine = turf.multiLineString([ - * [[10, 10], [50, 30], [30, 40]], - * [[-10, -10], [-50, -30], [-30, -40]] - * ]); - * - * // First Segment (defaults are 0) - * turf.findPoint(multiLine); - * // => Feature> - * - * // First Segment of the 2nd Multi-Feature - * turf.findPoint(multiLine, {multiFeatureIndex: 1}); - * // => Feature> - * - * // Last Segment of last Multi-Feature - * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1}); - * // => Feature> - */ -function findPoint(geojson, options) { - // Optional Parameters - options = options || {}; - if (!helpers.isObject(options)) throw new Error('options is invalid'); - var featureIndex = options.featureIndex || 0; - var multiFeatureIndex = options.multiFeatureIndex || 0; - var geometryIndex = options.geometryIndex || 0; - var coordIndex = options.coordIndex || 0; - - // Find FeatureIndex - var properties = options.properties; - var geometry; - - switch (geojson.type) { - case 'FeatureCollection': - if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex; - properties = properties || geojson.features[featureIndex].properties; - geometry = geojson.features[featureIndex].geometry; - break; - case 'Feature': - properties = properties || geojson.properties; - geometry = geojson.geometry; - break; - case 'Point': - case 'MultiPoint': - return null; - case 'LineString': - case 'Polygon': - case 'MultiLineString': - case 'MultiPolygon': - geometry = geojson; - break; - default: - throw new Error('geojson is invalid'); - } - - // Find Coord Index - if (geometry === null) return null; - var coords = geometry.coordinates; - switch (geometry.type) { - case 'Point': - return helpers.point(coords, properties, options); - case 'MultiPoint': - if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex; - return helpers.point(coords[multiFeatureIndex], properties, options); - case 'LineString': - if (coordIndex < 0) coordIndex = coords.length + coordIndex; - return helpers.point(coords[coordIndex], properties, options); - case 'Polygon': - if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex; - if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex; - return helpers.point(coords[geometryIndex][coordIndex], properties, options); - case 'MultiLineString': - if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex; - if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex; - return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options); - case 'MultiPolygon': - if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex; - if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex; - if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex; - return helpers.point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options); - } - throw new Error('geojson is invalid'); -} - -exports.coordEach = coordEach; -exports.coordReduce = coordReduce; -exports.propEach = propEach; -exports.propReduce = propReduce; -exports.featureEach = featureEach; -exports.featureReduce = featureReduce; -exports.coordAll = coordAll; -exports.geomEach = geomEach; -exports.geomReduce = geomReduce; -exports.flattenEach = flattenEach; -exports.flattenReduce = flattenReduce; -exports.segmentEach = segmentEach; -exports.segmentReduce = segmentReduce; -exports.lineEach = lineEach; -exports.lineReduce = lineReduce; -exports.findSegment = findSegment; -exports.findPoint = findPoint; - -},{"@turf/helpers":123}],123:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @module helpers - */ -/** - * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth. - * - * @memberof helpers - * @type {number} - */ -exports.earthRadius = 6371008.8; -/** - * Unit of measurement factors using a spherical (non-ellipsoid) earth radius. - * - * @memberof helpers - * @type {Object} - */ -exports.factors = { - centimeters: exports.earthRadius * 100, - centimetres: exports.earthRadius * 100, - degrees: exports.earthRadius / 111325, - feet: exports.earthRadius * 3.28084, - inches: exports.earthRadius * 39.370, - kilometers: exports.earthRadius / 1000, - kilometres: exports.earthRadius / 1000, - meters: exports.earthRadius, - metres: exports.earthRadius, - miles: exports.earthRadius / 1609.344, - millimeters: exports.earthRadius * 1000, - millimetres: exports.earthRadius * 1000, - nauticalmiles: exports.earthRadius / 1852, - radians: 1, - yards: exports.earthRadius / 1.0936, -}; -/** - * Units of measurement factors based on 1 meter. - * - * @memberof helpers - * @type {Object} - */ -exports.unitsFactors = { - centimeters: 100, - centimetres: 100, - degrees: 1 / 111325, - feet: 3.28084, - inches: 39.370, - kilometers: 1 / 1000, - kilometres: 1 / 1000, - meters: 1, - metres: 1, - miles: 1 / 1609.344, - millimeters: 1000, - millimetres: 1000, - nauticalmiles: 1 / 1852, - radians: 1 / exports.earthRadius, - yards: 1 / 1.0936, -}; -/** - * Area of measurement factors based on 1 square meter. - * - * @memberof helpers - * @type {Object} - */ -exports.areaFactors = { - acres: 0.000247105, - centimeters: 10000, - centimetres: 10000, - feet: 10.763910417, - inches: 1550.003100006, - kilometers: 0.000001, - kilometres: 0.000001, - meters: 1, - metres: 1, - miles: 3.86e-7, - millimeters: 1000000, - millimetres: 1000000, - yards: 1.195990046, -}; -/** - * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}. - * - * @name feature - * @param {Geometry} geometry input geometry - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a GeoJSON Feature - * @example - * var geometry = { - * "type": "Point", - * "coordinates": [110, 50] - * }; - * - * var feature = turf.feature(geometry); - * - * //=feature - */ -function feature(geom, properties, options) { - if (options === void 0) { options = {}; } - var feat = { type: "Feature" }; - if (options.id === 0 || options.id) { - feat.id = options.id; - } - if (options.bbox) { - feat.bbox = options.bbox; - } - feat.properties = properties || {}; - feat.geometry = geom; - return feat; -} -exports.feature = feature; -/** - * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates. - * For GeometryCollection type use `helpers.geometryCollection` - * - * @name geometry - * @param {string} type Geometry Type - * @param {Array} coordinates Coordinates - * @param {Object} [options={}] Optional Parameters - * @returns {Geometry} a GeoJSON Geometry - * @example - * var type = "Point"; - * var coordinates = [110, 50]; - * var geometry = turf.geometry(type, coordinates); - * // => geometry - */ -function geometry(type, coordinates, options) { - if (options === void 0) { options = {}; } - switch (type) { - case "Point": return point(coordinates).geometry; - case "LineString": return lineString(coordinates).geometry; - case "Polygon": return polygon(coordinates).geometry; - case "MultiPoint": return multiPoint(coordinates).geometry; - case "MultiLineString": return multiLineString(coordinates).geometry; - case "MultiPolygon": return multiPolygon(coordinates).geometry; - default: throw new Error(type + " is invalid"); - } -} -exports.geometry = geometry; -/** - * Creates a {@link Point} {@link Feature} from a Position. - * - * @name point - * @param {Array} coordinates longitude, latitude position (each in decimal degrees) - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a Point feature - * @example - * var point = turf.point([-75.343, 39.984]); - * - * //=point - */ -function point(coordinates, properties, options) { - if (options === void 0) { options = {}; } - var geom = { - type: "Point", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.point = point; -/** - * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates. - * - * @name points - * @param {Array>} coordinates an array of Points - * @param {Object} [properties={}] Translate these properties to each Feature - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] - * associated with the FeatureCollection - * @param {string|number} [options.id] Identifier associated with the FeatureCollection - * @returns {FeatureCollection} Point Feature - * @example - * var points = turf.points([ - * [-75, 39], - * [-80, 45], - * [-78, 50] - * ]); - * - * //=points - */ -function points(coordinates, properties, options) { - if (options === void 0) { options = {}; } - return featureCollection(coordinates.map(function (coords) { - return point(coords, properties); - }), options); -} -exports.points = points; -/** - * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings. - * - * @name polygon - * @param {Array>>} coordinates an array of LinearRings - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} Polygon Feature - * @example - * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' }); - * - * //=polygon - */ -function polygon(coordinates, properties, options) { - if (options === void 0) { options = {}; } - for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) { - var ring = coordinates_1[_i]; - if (ring.length < 4) { - throw new Error("Each LinearRing of a Polygon must have 4 or more Positions."); - } - for (var j = 0; j < ring[ring.length - 1].length; j++) { - // Check if first point of Polygon contains two numbers - if (ring[ring.length - 1][j] !== ring[0][j]) { - throw new Error("First and last Position are not equivalent."); - } - } - } - var geom = { - type: "Polygon", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.polygon = polygon; -/** - * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates. - * - * @name polygons - * @param {Array>>>} coordinates an array of Polygon coordinates - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the FeatureCollection - * @returns {FeatureCollection} Polygon FeatureCollection - * @example - * var polygons = turf.polygons([ - * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], - * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]], - * ]); - * - * //=polygons - */ -function polygons(coordinates, properties, options) { - if (options === void 0) { options = {}; } - return featureCollection(coordinates.map(function (coords) { - return polygon(coords, properties); - }), options); -} -exports.polygons = polygons; -/** - * Creates a {@link LineString} {@link Feature} from an Array of Positions. - * - * @name lineString - * @param {Array>} coordinates an array of Positions - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} LineString Feature - * @example - * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'}); - * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'}); - * - * //=linestring1 - * //=linestring2 - */ -function lineString(coordinates, properties, options) { - if (options === void 0) { options = {}; } - if (coordinates.length < 2) { - throw new Error("coordinates must be an array of two or more positions"); - } - var geom = { - type: "LineString", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.lineString = lineString; -/** - * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates. - * - * @name lineStrings - * @param {Array>>} coordinates an array of LinearRings - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] - * associated with the FeatureCollection - * @param {string|number} [options.id] Identifier associated with the FeatureCollection - * @returns {FeatureCollection} LineString FeatureCollection - * @example - * var linestrings = turf.lineStrings([ - * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]], - * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]] - * ]); - * - * //=linestrings - */ -function lineStrings(coordinates, properties, options) { - if (options === void 0) { options = {}; } - return featureCollection(coordinates.map(function (coords) { - return lineString(coords, properties); - }), options); -} -exports.lineStrings = lineStrings; -/** - * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}. - * - * @name featureCollection - * @param {Feature[]} features input features - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {FeatureCollection} FeatureCollection of Features - * @example - * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'}); - * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'}); - * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'}); - * - * var collection = turf.featureCollection([ - * locationA, - * locationB, - * locationC - * ]); - * - * //=collection - */ -function featureCollection(features, options) { - if (options === void 0) { options = {}; } - var fc = { type: "FeatureCollection" }; - if (options.id) { - fc.id = options.id; - } - if (options.bbox) { - fc.bbox = options.bbox; - } - fc.features = features; - return fc; -} -exports.featureCollection = featureCollection; -/** - * Creates a {@link Feature} based on a - * coordinate array. Properties can be added optionally. - * - * @name multiLineString - * @param {Array>>} coordinates an array of LineStrings - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a MultiLineString feature - * @throws {Error} if no coordinates are passed - * @example - * var multiLine = turf.multiLineString([[[0,0],[10,10]]]); - * - * //=multiLine - */ -function multiLineString(coordinates, properties, options) { - if (options === void 0) { options = {}; } - var geom = { - type: "MultiLineString", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.multiLineString = multiLineString; -/** - * Creates a {@link Feature} based on a - * coordinate array. Properties can be added optionally. - * - * @name multiPoint - * @param {Array>} coordinates an array of Positions - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a MultiPoint feature - * @throws {Error} if no coordinates are passed - * @example - * var multiPt = turf.multiPoint([[0,0],[10,10]]); - * - * //=multiPt - */ -function multiPoint(coordinates, properties, options) { - if (options === void 0) { options = {}; } - var geom = { - type: "MultiPoint", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.multiPoint = multiPoint; -/** - * Creates a {@link Feature} based on a - * coordinate array. Properties can be added optionally. - * - * @name multiPolygon - * @param {Array>>>} coordinates an array of Polygons - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a multipolygon feature - * @throws {Error} if no coordinates are passed - * @example - * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]); - * - * //=multiPoly - * - */ -function multiPolygon(coordinates, properties, options) { - if (options === void 0) { options = {}; } - var geom = { - type: "MultiPolygon", - coordinates: coordinates, - }; - return feature(geom, properties, options); -} -exports.multiPolygon = multiPolygon; -/** - * Creates a {@link Feature} based on a - * coordinate array. Properties can be added optionally. - * - * @name geometryCollection - * @param {Array} geometries an array of GeoJSON Geometries - * @param {Object} [properties={}] an Object of key-value pairs to add as properties - * @param {Object} [options={}] Optional Parameters - * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature - * @param {string|number} [options.id] Identifier associated with the Feature - * @returns {Feature} a GeoJSON GeometryCollection Feature - * @example - * var pt = turf.geometry("Point", [100, 0]); - * var line = turf.geometry("LineString", [[101, 0], [102, 1]]); - * var collection = turf.geometryCollection([pt, line]); - * - * // => collection - */ -function geometryCollection(geometries, properties, options) { - if (options === void 0) { options = {}; } - var geom = { - type: "GeometryCollection", - geometries: geometries, - }; - return feature(geom, properties, options); -} -exports.geometryCollection = geometryCollection; -/** - * Round number to precision - * - * @param {number} num Number - * @param {number} [precision=0] Precision - * @returns {number} rounded number - * @example - * turf.round(120.4321) - * //=120 - * - * turf.round(120.4321, 2) - * //=120.43 - */ -function round(num, precision) { - if (precision === void 0) { precision = 0; } - if (precision && !(precision >= 0)) { - throw new Error("precision must be a positive number"); - } - var multiplier = Math.pow(10, precision || 0); - return Math.round(num * multiplier) / multiplier; -} -exports.round = round; -/** - * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit. - * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet - * - * @name radiansToLength - * @param {number} radians in radians across the sphere - * @param {string} [units="kilometers"] can be degrees, radians, miles, or kilometers inches, yards, metres, - * meters, kilometres, kilometers. - * @returns {number} distance - */ -function radiansToLength(radians, units) { - if (units === void 0) { units = "kilometers"; } - var factor = exports.factors[units]; - if (!factor) { - throw new Error(units + " units is invalid"); - } - return radians * factor; -} -exports.radiansToLength = radiansToLength; -/** - * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians - * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet - * - * @name lengthToRadians - * @param {number} distance in real units - * @param {string} [units="kilometers"] can be degrees, radians, miles, or kilometers inches, yards, metres, - * meters, kilometres, kilometers. - * @returns {number} radians - */ -function lengthToRadians(distance, units) { - if (units === void 0) { units = "kilometers"; } - var factor = exports.factors[units]; - if (!factor) { - throw new Error(units + " units is invalid"); - } - return distance / factor; -} -exports.lengthToRadians = lengthToRadians; -/** - * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees - * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet - * - * @name lengthToDegrees - * @param {number} distance in real units - * @param {string} [units="kilometers"] can be degrees, radians, miles, or kilometers inches, yards, metres, - * meters, kilometres, kilometers. - * @returns {number} degrees - */ -function lengthToDegrees(distance, units) { - return radiansToDegrees(lengthToRadians(distance, units)); -} -exports.lengthToDegrees = lengthToDegrees; -/** - * Converts any bearing angle from the north line direction (positive clockwise) - * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line - * - * @name bearingToAzimuth - * @param {number} bearing angle, between -180 and +180 degrees - * @returns {number} angle between 0 and 360 degrees - */ -function bearingToAzimuth(bearing) { - var angle = bearing % 360; - if (angle < 0) { - angle += 360; - } - return angle; -} -exports.bearingToAzimuth = bearingToAzimuth; -/** - * Converts an angle in radians to degrees - * - * @name radiansToDegrees - * @param {number} radians angle in radians - * @returns {number} degrees between 0 and 360 degrees - */ -function radiansToDegrees(radians) { - var degrees = radians % (2 * Math.PI); - return degrees * 180 / Math.PI; -} -exports.radiansToDegrees = radiansToDegrees; -/** - * Converts an angle in degrees to radians - * - * @name degreesToRadians - * @param {number} degrees angle between 0 and 360 degrees - * @returns {number} angle in radians - */ -function degreesToRadians(degrees) { - var radians = degrees % 360; - return radians * Math.PI / 180; -} -exports.degreesToRadians = degreesToRadians; -/** - * Converts a length to the requested unit. - * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet - * - * @param {number} length to be converted - * @param {Units} [originalUnit="kilometers"] of the length - * @param {Units} [finalUnit="kilometers"] returned unit - * @returns {number} the converted length - */ -function convertLength(length, originalUnit, finalUnit) { - if (originalUnit === void 0) { originalUnit = "kilometers"; } - if (finalUnit === void 0) { finalUnit = "kilometers"; } - if (!(length >= 0)) { - throw new Error("length must be a positive number"); - } - return radiansToLength(lengthToRadians(length, originalUnit), finalUnit); -} -exports.convertLength = convertLength; -/** - * Converts a area to the requested unit. - * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches - * @param {number} area to be converted - * @param {Units} [originalUnit="meters"] of the distance - * @param {Units} [finalUnit="kilometers"] returned unit - * @returns {number} the converted distance - */ -function convertArea(area, originalUnit, finalUnit) { - if (originalUnit === void 0) { originalUnit = "meters"; } - if (finalUnit === void 0) { finalUnit = "kilometers"; } - if (!(area >= 0)) { - throw new Error("area must be a positive number"); - } - var startFactor = exports.areaFactors[originalUnit]; - if (!startFactor) { - throw new Error("invalid original units"); - } - var finalFactor = exports.areaFactors[finalUnit]; - if (!finalFactor) { - throw new Error("invalid final units"); - } - return (area / startFactor) * finalFactor; -} -exports.convertArea = convertArea; -/** - * isNumber - * - * @param {*} num Number to validate - * @returns {boolean} true/false - * @example - * turf.isNumber(123) - * //=true - * turf.isNumber('foo') - * //=false - */ -function isNumber(num) { - return !isNaN(num) && num !== null && !Array.isArray(num) && !/^\s*$/.test(num); -} -exports.isNumber = isNumber; -/** - * isObject - * - * @param {*} input variable to validate - * @returns {boolean} true/false - * @example - * turf.isObject({elevation: 10}) - * //=true - * turf.isObject('foo') - * //=false - */ -function isObject(input) { - return (!!input) && (input.constructor === Object); -} -exports.isObject = isObject; -/** - * Validate BBox - * - * @private - * @param {Array} bbox BBox to validate - * @returns {void} - * @throws Error if BBox is not valid - * @example - * validateBBox([-180, -40, 110, 50]) - * //=OK - * validateBBox([-180, -40]) - * //=Error - * validateBBox('Foo') - * //=Error - * validateBBox(5) - * //=Error - * validateBBox(null) - * //=Error - * validateBBox(undefined) - * //=Error - */ -function validateBBox(bbox) { - if (!bbox) { - throw new Error("bbox is required"); - } - if (!Array.isArray(bbox)) { - throw new Error("bbox must be an Array"); - } - if (bbox.length !== 4 && bbox.length !== 6) { - throw new Error("bbox must be an Array of 4 or 6 numbers"); - } - bbox.forEach(function (num) { - if (!isNumber(num)) { - throw new Error("bbox must only contain numbers"); - } - }); -} -exports.validateBBox = validateBBox; -/** - * Validate Id - * - * @private - * @param {string|number} id Id to validate - * @returns {void} - * @throws Error if Id is not valid - * @example - * validateId([-180, -40, 110, 50]) - * //=Error - * validateId([-180, -40]) - * //=Error - * validateId('Foo') - * //=OK - * validateId(5) - * //=OK - * validateId(null) - * //=Error - * validateId(undefined) - * //=Error - */ -function validateId(id) { - if (!id) { - throw new Error("id is required"); - } - if (["string", "number"].indexOf(typeof id) === -1) { - throw new Error("id must be a number or a string"); - } -} -exports.validateId = validateId; -// Deprecated methods -function radians2degrees() { - throw new Error("method has been renamed to `radiansToDegrees`"); -} -exports.radians2degrees = radians2degrees; -function degrees2radians() { - throw new Error("method has been renamed to `degreesToRadians`"); -} -exports.degrees2radians = degrees2radians; -function distanceToDegrees() { - throw new Error("method has been renamed to `lengthToDegrees`"); -} -exports.distanceToDegrees = distanceToDegrees; -function distanceToRadians() { - throw new Error("method has been renamed to `lengthToRadians`"); -} -exports.distanceToRadians = distanceToRadians; -function radiansToDistance() { - throw new Error("method has been renamed to `radiansToLength`"); -} -exports.radiansToDistance = radiansToDistance; -function bearingToAngle() { - throw new Error("method has been renamed to `bearingToAzimuth`"); -} -exports.bearingToAngle = bearingToAngle; -function convertDistance() { - throw new Error("method has been renamed to `convertLength`"); -} -exports.convertDistance = convertDistance; - -},{}],124:[function(require,module,exports){ -"use strict"; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var helpers_1 = require("@turf/helpers"); -var invariant_1 = require("@turf/invariant"); -var martinez = __importStar(require("martinez-polygon-clipping")); -/** - * Takes two {@link Polygon|polygon} or {@link MultiPolygon|multi-polygon} geometries and - * finds their polygonal intersection. If they don't intersect, returns null. - * - * @name intersect - * @param {Feature} poly1 the first polygon or multipolygon - * @param {Feature} poly2 the second polygon or multipolygon - * @param {Object} [options={}] Optional Parameters - * @param {Object} [options.properties={}] Translate GeoJSON Properties to Feature - * @returns {Feature|null} returns a feature representing the area they share (either a {@link Polygon} or - * {@link MultiPolygon}). If they do not share any area, returns `null`. - * @example - * var poly1 = turf.polygon([[ - * [-122.801742, 45.48565], - * [-122.801742, 45.60491], - * [-122.584762, 45.60491], - * [-122.584762, 45.48565], - * [-122.801742, 45.48565] - * ]]); - * - * var poly2 = turf.polygon([[ - * [-122.520217, 45.535693], - * [-122.64038, 45.553967], - * [-122.720031, 45.526554], - * [-122.669906, 45.507309], - * [-122.723464, 45.446643], - * [-122.532577, 45.408574], - * [-122.487258, 45.477466], - * [-122.520217, 45.535693] - * ]]); - * - * var intersection = turf.intersect(poly1, poly2); - * - * //addToMap - * var addToMap = [poly1, poly2, intersection]; - */ -function intersect(poly1, poly2, options) { - if (options === void 0) { options = {}; } - var geom1 = invariant_1.getGeom(poly1); - var geom2 = invariant_1.getGeom(poly2); - if (geom1.type === "Polygon" && geom2.type === "Polygon") { - var intersection = martinez.intersection(geom1.coordinates, geom2.coordinates); - if (intersection === null || intersection.length === 0) { - return null; - } - if (intersection.length === 1) { - var start = intersection[0][0][0]; - var end = intersection[0][0][intersection[0][0].length - 1]; - if (start[0] === end[0] && start[1] === end[1]) { - return helpers_1.polygon(intersection[0], options.properties); - } - return null; - } - return helpers_1.multiPolygon(intersection, options.properties); - } - else if (geom1.type === "MultiPolygon") { - var resultCoords = []; - // iterate through the polygon and run intersect with each part, adding to the resultCoords. - for (var _i = 0, _a = geom1.coordinates; _i < _a.length; _i++) { - var coords = _a[_i]; - var subGeom = invariant_1.getGeom(helpers_1.polygon(coords)); - var subIntersection = intersect(subGeom, geom2); - if (subIntersection) { - var subIntGeom = invariant_1.getGeom(subIntersection); - if (subIntGeom.type === "Polygon") { - resultCoords.push(subIntGeom.coordinates); - } - else if (subIntGeom.type === "MultiPolygon") { - resultCoords = resultCoords.concat(subIntGeom.coordinates); - } - else { - throw new Error("intersection is invalid"); - } - } - } - // Make a polygon with the result - if (resultCoords.length === 0) { - return null; - } - if (resultCoords.length === 1) { - return helpers_1.polygon(resultCoords[0], options.properties); - } - else { - return helpers_1.multiPolygon(resultCoords, options.properties); - } - } - else if (geom2.type === "MultiPolygon") { - // geom1 is a polygon and geom2 a multiPolygon, - // put the multiPolygon first and fallback to the previous case. - return intersect(geom2, geom1); - } - else { - // handle invalid geometry types - throw new Error("poly1 and poly2 must be either polygons or multiPolygons"); - } -} -exports.default = intersect; - -},{"@turf/helpers":123,"@turf/invariant":125,"martinez-polygon-clipping":265}],125:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var helpers_1 = require("@turf/helpers"); -/** - * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate. - * - * @name getCoord - * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers - * @returns {Array} coordinates - * @example - * var pt = turf.point([10, 10]); - * - * var coord = turf.getCoord(pt); - * //= [10, 10] - */ -function getCoord(coord) { - if (!coord) { - throw new Error("coord is required"); - } - if (!Array.isArray(coord)) { - if (coord.type === "Feature" && coord.geometry !== null && coord.geometry.type === "Point") { - return coord.geometry.coordinates; - } - if (coord.type === "Point") { - return coord.coordinates; - } - } - if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) { - return coord; - } - throw new Error("coord must be GeoJSON Point or an Array of numbers"); -} -exports.getCoord = getCoord; -/** - * Unwrap coordinates from a Feature, Geometry Object or an Array - * - * @name getCoords - * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array - * @returns {Array} coordinates - * @example - * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]); - * - * var coords = turf.getCoords(poly); - * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]] - */ -function getCoords(coords) { - if (Array.isArray(coords)) { - return coords; - } - // Feature - if (coords.type === "Feature") { - if (coords.geometry !== null) { - return coords.geometry.coordinates; - } - } - else { - // Geometry - if (coords.coordinates) { - return coords.coordinates; - } - } - throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array"); -} -exports.getCoords = getCoords; -/** - * Checks if coordinates contains a number - * - * @name containsNumber - * @param {Array} coordinates GeoJSON Coordinates - * @returns {boolean} true if Array contains a number - */ -function containsNumber(coordinates) { - if (coordinates.length > 1 && helpers_1.isNumber(coordinates[0]) && helpers_1.isNumber(coordinates[1])) { - return true; - } - if (Array.isArray(coordinates[0]) && coordinates[0].length) { - return containsNumber(coordinates[0]); - } - throw new Error("coordinates must only contain numbers"); -} -exports.containsNumber = containsNumber; -/** - * Enforce expectations about types of GeoJSON objects for Turf. - * - * @name geojsonType - * @param {GeoJSON} value any GeoJSON object - * @param {string} type expected GeoJSON type - * @param {string} name name of calling function - * @throws {Error} if value is not the expected type. - */ -function geojsonType(value, type, name) { - if (!type || !name) { - throw new Error("type and name required"); - } - if (!value || value.type !== type) { - throw new Error("Invalid input to " + name + ": must be a " + type + ", given " + value.type); - } -} -exports.geojsonType = geojsonType; -/** - * Enforce expectations about types of {@link Feature} inputs for Turf. - * Internally this uses {@link geojsonType} to judge geometry types. - * - * @name featureOf - * @param {Feature} feature a feature with an expected geometry type - * @param {string} type expected GeoJSON type - * @param {string} name name of calling function - * @throws {Error} error if value is not the expected type. - */ -function featureOf(feature, type, name) { - if (!feature) { - throw new Error("No feature passed"); - } - if (!name) { - throw new Error(".featureOf() requires a name"); - } - if (!feature || feature.type !== "Feature" || !feature.geometry) { - throw new Error("Invalid input to " + name + ", Feature with geometry required"); - } - if (!feature.geometry || feature.geometry.type !== type) { - throw new Error("Invalid input to " + name + ": must be a " + type + ", given " + feature.geometry.type); - } -} -exports.featureOf = featureOf; -/** - * Enforce expectations about types of {@link FeatureCollection} inputs for Turf. - * Internally this uses {@link geojsonType} to judge geometry types. - * - * @name collectionOf - * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged - * @param {string} type expected GeoJSON type - * @param {string} name name of calling function - * @throws {Error} if value is not the expected type. - */ -function collectionOf(featureCollection, type, name) { - if (!featureCollection) { - throw new Error("No featureCollection passed"); - } - if (!name) { - throw new Error(".collectionOf() requires a name"); - } - if (!featureCollection || featureCollection.type !== "FeatureCollection") { - throw new Error("Invalid input to " + name + ", FeatureCollection required"); - } - for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) { - var feature = _a[_i]; - if (!feature || feature.type !== "Feature" || !feature.geometry) { - throw new Error("Invalid input to " + name + ", Feature with geometry required"); - } - if (!feature.geometry || feature.geometry.type !== type) { - throw new Error("Invalid input to " + name + ": must be a " + type + ", given " + feature.geometry.type); - } - } -} -exports.collectionOf = collectionOf; -/** - * Get Geometry from Feature or Geometry Object - * - * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object - * @returns {Geometry|null} GeoJSON Geometry Object - * @throws {Error} if geojson is not a Feature or Geometry Object - * @example - * var point = { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [110, 40] - * } - * } - * var geom = turf.getGeom(point) - * //={"type": "Point", "coordinates": [110, 40]} - */ -function getGeom(geojson) { - if (geojson.type === "Feature") { - return geojson.geometry; - } - return geojson; -} -exports.getGeom = getGeom; -/** - * Get GeoJSON object's type, Geometry type is prioritize. - * - * @param {GeoJSON} geojson GeoJSON object - * @param {string} [name="geojson"] name of the variable to display in error message - * @returns {string} GeoJSON type - * @example - * var point = { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [110, 40] - * } - * } - * var geom = turf.getType(point) - * //="Point" - */ -function getType(geojson, name) { - if (geojson.type === "FeatureCollection") { - return "FeatureCollection"; - } - if (geojson.type === "GeometryCollection") { - return "GeometryCollection"; - } - if (geojson.type === "Feature" && geojson.geometry !== null) { - return geojson.geometry.type; - } - return geojson.type; -} -exports.getType = getType; - -},{"@turf/helpers":123}],126:[function(require,module,exports){ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -} -Object.defineProperty(exports, "__esModule", { value: true }); -var helpers_1 = require("@turf/helpers"); -var invariant_1 = require("@turf/invariant"); -var line_segment_1 = __importDefault(require("@turf/line-segment")); -var meta_1 = require("@turf/meta"); -var geojson_rbush_1 = __importDefault(require("geojson-rbush")); -/** - * Takes any LineString or Polygon GeoJSON and returns the intersecting point(s). - * - * @name lineIntersect - * @param {GeoJSON} line1 any LineString or Polygon - * @param {GeoJSON} line2 any LineString or Polygon - * @returns {FeatureCollection} point(s) that intersect both - * @example - * var line1 = turf.lineString([[126, -11], [129, -21]]); - * var line2 = turf.lineString([[123, -18], [131, -14]]); - * var intersects = turf.lineIntersect(line1, line2); - * - * //addToMap - * var addToMap = [line1, line2, intersects] - */ -function lineIntersect(line1, line2) { - var unique = {}; - var results = []; - // First, normalize geometries to features - // Then, handle simple 2-vertex segments - if (line1.type === "LineString") { - line1 = helpers_1.feature(line1); - } - if (line2.type === "LineString") { - line2 = helpers_1.feature(line2); - } - if (line1.type === "Feature" && - line2.type === "Feature" && - line1.geometry !== null && - line2.geometry !== null && - line1.geometry.type === "LineString" && - line2.geometry.type === "LineString" && - line1.geometry.coordinates.length === 2 && - line2.geometry.coordinates.length === 2) { - var intersect = intersects(line1, line2); - if (intersect) { - results.push(intersect); - } - return helpers_1.featureCollection(results); - } - // Handles complex GeoJSON Geometries - var tree = geojson_rbush_1.default(); - tree.load(line_segment_1.default(line2)); - meta_1.featureEach(line_segment_1.default(line1), function (segment) { - meta_1.featureEach(tree.search(segment), function (match) { - var intersect = intersects(segment, match); - if (intersect) { - // prevent duplicate points https://github.com/Turfjs/turf/issues/688 - var key = invariant_1.getCoords(intersect).join(","); - if (!unique[key]) { - unique[key] = true; - results.push(intersect); - } - } - }); - }); - return helpers_1.featureCollection(results); -} -/** - * Find a point that intersects LineStrings with two coordinates each - * - * @private - * @param {Feature} line1 GeoJSON LineString (Must only contain 2 coordinates) - * @param {Feature} line2 GeoJSON LineString (Must only contain 2 coordinates) - * @returns {Feature} intersecting GeoJSON Point - */ -function intersects(line1, line2) { - var coords1 = invariant_1.getCoords(line1); - var coords2 = invariant_1.getCoords(line2); - if (coords1.length !== 2) { - throw new Error(" line1 must only contain 2 coordinates"); - } - if (coords2.length !== 2) { - throw new Error(" line2 must only contain 2 coordinates"); - } - var x1 = coords1[0][0]; - var y1 = coords1[0][1]; - var x2 = coords1[1][0]; - var y2 = coords1[1][1]; - var x3 = coords2[0][0]; - var y3 = coords2[0][1]; - var x4 = coords2[1][0]; - var y4 = coords2[1][1]; - var denom = ((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1)); - var numeA = ((x4 - x3) * (y1 - y3)) - ((y4 - y3) * (x1 - x3)); - var numeB = ((x2 - x1) * (y1 - y3)) - ((y2 - y1) * (x1 - x3)); - if (denom === 0) { - if (numeA === 0 && numeB === 0) { - return null; - } - return null; - } - var uA = numeA / denom; - var uB = numeB / denom; - if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) { - var x = x1 + (uA * (x2 - x1)); - var y = y1 + (uA * (y2 - y1)); - return helpers_1.point([x, y]); - } - return null; -} -exports.default = lineIntersect; - -},{"@turf/helpers":123,"@turf/invariant":125,"@turf/line-segment":128,"@turf/meta":127,"geojson-rbush":224}],127:[function(require,module,exports){ -arguments[4][122][0].apply(exports,arguments) -},{"@turf/helpers":123,"dup":122}],128:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var helpers_1 = require("@turf/helpers"); -var invariant_1 = require("@turf/invariant"); -var meta_1 = require("@turf/meta"); -/** - * Creates a {@link FeatureCollection} of 2-vertex {@link LineString} segments from a - * {@link LineString|(Multi)LineString} or {@link Polygon|(Multi)Polygon}. - * - * @name lineSegment - * @param {GeoJSON} geojson GeoJSON Polygon or LineString - * @returns {FeatureCollection} 2-vertex line segments - * @example - * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]); - * var segments = turf.lineSegment(polygon); - * - * //addToMap - * var addToMap = [polygon, segments] - */ -function lineSegment(geojson) { - if (!geojson) { - throw new Error("geojson is required"); - } - var results = []; - meta_1.flattenEach(geojson, function (feature) { - lineSegmentFeature(feature, results); - }); - return helpers_1.featureCollection(results); -} -/** - * Line Segment - * - * @private - * @param {Feature} geojson Line or polygon feature - * @param {Array} results push to results - * @returns {void} - */ -function lineSegmentFeature(geojson, results) { - var coords = []; - var geometry = geojson.geometry; - if (geometry !== null) { - switch (geometry.type) { - case "Polygon": - coords = invariant_1.getCoords(geometry); - break; - case "LineString": - coords = [invariant_1.getCoords(geometry)]; - } - coords.forEach(function (coord) { - var segments = createSegments(coord, geojson.properties); - segments.forEach(function (segment) { - segment.id = results.length; - results.push(segment); - }); - }); - } -} -/** - * Create Segments from LineString coordinates - * - * @private - * @param {Array>} coords LineString coordinates - * @param {*} properties GeoJSON properties - * @returns {Array>} line segments - */ -function createSegments(coords, properties) { - var segments = []; - coords.reduce(function (previousCoords, currentCoords) { - var segment = helpers_1.lineString([previousCoords, currentCoords], properties); - segment.bbox = bbox(previousCoords, currentCoords); - segments.push(segment); - return currentCoords; - }); - return segments; -} -/** - * Create BBox between two coordinates (faster than @turf/bbox) - * - * @private - * @param {Array} coords1 Point coordinate - * @param {Array} coords2 Point coordinate - * @returns {BBox} [west, south, east, north] - */ -function bbox(coords1, coords2) { - var x1 = coords1[0]; - var y1 = coords1[1]; - var x2 = coords2[0]; - var y2 = coords2[1]; - var west = (x1 < x2) ? x1 : x2; - var south = (y1 < y2) ? y1 : y2; - var east = (x1 > x2) ? x1 : x2; - var north = (y1 > y2) ? y1 : y2; - return [west, south, east, north]; -} -exports.default = lineSegment; - -},{"@turf/helpers":123,"@turf/invariant":125,"@turf/meta":129}],129:[function(require,module,exports){ -arguments[4][122][0].apply(exports,arguments) -},{"@turf/helpers":123,"dup":122}],130:[function(require,module,exports){ -/** - * Callback for coordEach - * - * @private - * @callback coordEachCallback - * @param {[number, number]} currentCoords The current coordinates being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Iterate over coordinates in any GeoJSON object, similar to Array.forEach() - * - * @name coordEach - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (currentCoords, currentIndex) - * @param {boolean} [excludeWrapCoord=false] whether or not to include - * the final coordinate of LinearRings that wraps the ring in its iteration. - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.coordEach(features, function (currentCoords, currentIndex) { - * //=currentCoords - * //=currentIndex - * }); - */ -function coordEach(layer, callback, excludeWrapCoord) { - var i, j, k, g, l, geometry, stopG, coords, - geometryMaybeCollection, - wrapShrink = 0, - currentIndex = 0, - isGeometryCollection, - isFeatureCollection = layer.type === 'FeatureCollection', - isFeature = layer.type === 'Feature', - stop = isFeatureCollection ? layer.features.length : 1; - - // This logic may look a little weird. The reason why it is that way - // is because it's trying to be fast. GeoJSON supports multiple kinds - // of objects at its root: FeatureCollection, Features, Geometries. - // This function has the responsibility of handling all of them, and that - // means that some of the `for` loops you see below actually just don't apply - // to certain inputs. For instance, if you give this just a - // Point geometry, then both loops are short-circuited and all we do - // is gradually rename the input until it's called 'geometry'. - // - // This also aims to allocate as few resources as possible: just a - // few numbers and booleans, rather than any temporary arrays as would - // be required with the normalization approach. - for (i = 0; i < stop; i++) { - - geometryMaybeCollection = (isFeatureCollection ? layer.features[i].geometry : - (isFeature ? layer.geometry : layer)); - isGeometryCollection = geometryMaybeCollection.type === 'GeometryCollection'; - stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1; - - for (g = 0; g < stopG; g++) { - geometry = isGeometryCollection ? - geometryMaybeCollection.geometries[g] : geometryMaybeCollection; - coords = geometry.coordinates; - - wrapShrink = (excludeWrapCoord && - (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon')) ? - 1 : 0; - - if (geometry.type === 'Point') { - callback(coords, currentIndex); - currentIndex++; - } else if (geometry.type === 'LineString' || geometry.type === 'MultiPoint') { - for (j = 0; j < coords.length; j++) { - callback(coords[j], currentIndex); - currentIndex++; - } - } else if (geometry.type === 'Polygon' || geometry.type === 'MultiLineString') { - for (j = 0; j < coords.length; j++) - for (k = 0; k < coords[j].length - wrapShrink; k++) { - callback(coords[j][k], currentIndex); - currentIndex++; - } - } else if (geometry.type === 'MultiPolygon') { - for (j = 0; j < coords.length; j++) - for (k = 0; k < coords[j].length; k++) - for (l = 0; l < coords[j][k].length - wrapShrink; l++) { - callback(coords[j][k][l], currentIndex); - currentIndex++; - } - } else if (geometry.type === 'GeometryCollection') { - for (j = 0; j < geometry.geometries.length; j++) - coordEach(geometry.geometries[j], callback, excludeWrapCoord); - } else { - throw new Error('Unknown Geometry Type'); - } - } - } -} -module.exports.coordEach = coordEach; - -/** - * Callback for coordReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @private - * @callback coordReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {[number, number]} currentCoords The current coordinate being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Reduce coordinates in any GeoJSON object, similar to Array.reduce() - * - * @name coordReduce - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentCoords, currentIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @param {boolean} [excludeWrapCoord=false] whether or not to include - * the final coordinate of LinearRings that wraps the ring in its iteration. - * @returns {*} The value that results from the reduction. - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.coordReduce(features, function (previousValue, currentCoords, currentIndex) { - * //=previousValue - * //=currentCoords - * //=currentIndex - * return currentCoords; - * }); - */ -function coordReduce(layer, callback, initialValue, excludeWrapCoord) { - var previousValue = initialValue; - coordEach(layer, function (currentCoords, currentIndex) { - if (currentIndex === 0 && initialValue === undefined) { - previousValue = currentCoords; - } else { - previousValue = callback(previousValue, currentCoords, currentIndex); - } - }, excludeWrapCoord); - return previousValue; -} -module.exports.coordReduce = coordReduce; - -/** - * Callback for propEach - * - * @private - * @callback propEachCallback - * @param {*} currentProperties The current properties being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Iterate over properties in any GeoJSON object, similar to Array.forEach() - * - * @name propEach - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (currentProperties, currentIndex) - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {"foo": "bar"}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {"hello": "world"}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.propEach(features, function (currentProperties, currentIndex) { - * //=currentProperties - * //=currentIndex - * }); - */ -function propEach(layer, callback) { - var i; - switch (layer.type) { - case 'FeatureCollection': - for (i = 0; i < layer.features.length; i++) { - callback(layer.features[i].properties, i); - } - break; - case 'Feature': - callback(layer.properties, 0); - break; - } -} -module.exports.propEach = propEach; - - -/** - * Callback for propReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @private - * @callback propReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {*} currentProperties The current properties being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Reduce properties in any GeoJSON object into a single value, - * similar to how Array.reduce works. However, in this case we lazily run - * the reduction, so an array of all properties is unnecessary. - * - * @name propReduce - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentProperties, currentIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {"foo": "bar"}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {"hello": "world"}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.propReduce(features, function (previousValue, currentProperties, currentIndex) { - * //=previousValue - * //=currentProperties - * //=currentIndex - * return currentProperties - * }); - */ -function propReduce(layer, callback, initialValue) { - var previousValue = initialValue; - propEach(layer, function (currentProperties, currentIndex) { - if (currentIndex === 0 && initialValue === undefined) { - previousValue = currentProperties; - } else { - previousValue = callback(previousValue, currentProperties, currentIndex); - } - }); - return previousValue; -} -module.exports.propReduce = propReduce; - -/** - * Callback for featureEach - * - * @private - * @callback featureEachCallback - * @param {Feature} currentFeature The current feature being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Iterate over features in any GeoJSON object, similar to - * Array.forEach. - * - * @name featureEach - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (currentFeature, currentIndex) - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.featureEach(features, function (currentFeature, currentIndex) { - * //=currentFeature - * //=currentIndex - * }); - */ -function featureEach(layer, callback) { - if (layer.type === 'Feature') { - callback(layer, 0); - } else if (layer.type === 'FeatureCollection') { - for (var i = 0; i < layer.features.length; i++) { - callback(layer.features[i], i); - } - } -} -module.exports.featureEach = featureEach; - -/** - * Callback for featureReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @private - * @callback featureReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {Feature} currentFeature The current Feature being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Reduce features in any GeoJSON object, similar to Array.reduce(). - * - * @name featureReduce - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentFeature, currentIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {"foo": "bar"}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {"hello": "world"}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.featureReduce(features, function (previousValue, currentFeature, currentIndex) { - * //=previousValue - * //=currentFeature - * //=currentIndex - * return currentFeature - * }); - */ -function featureReduce(layer, callback, initialValue) { - var previousValue = initialValue; - featureEach(layer, function (currentFeature, currentIndex) { - if (currentIndex === 0 && initialValue === undefined) { - previousValue = currentFeature; - } else { - previousValue = callback(previousValue, currentFeature, currentIndex); - } - }); - return previousValue; -} -module.exports.featureReduce = featureReduce; - -/** - * Get all coordinates from any GeoJSON object. - * - * @name coordAll - * @param {Object} layer any GeoJSON object - * @returns {Array>} coordinate position array - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * var coords = turf.coordAll(features); - * //=coords - */ -function coordAll(layer) { - var coords = []; - coordEach(layer, function (coord) { - coords.push(coord); - }); - return coords; -} -module.exports.coordAll = coordAll; - -/** - * Iterate over each geometry in any GeoJSON object, similar to Array.forEach() - * - * @name geomEach - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (currentGeometry, currentIndex) - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.geomEach(features, function (currentGeometry, currentIndex) { - * //=currentGeometry - * //=currentIndex - * }); - */ -function geomEach(layer, callback) { - var i, j, g, geometry, stopG, - geometryMaybeCollection, - isGeometryCollection, - currentIndex = 0, - isFeatureCollection = layer.type === 'FeatureCollection', - isFeature = layer.type === 'Feature', - stop = isFeatureCollection ? layer.features.length : 1; - - // This logic may look a little weird. The reason why it is that way - // is because it's trying to be fast. GeoJSON supports multiple kinds - // of objects at its root: FeatureCollection, Features, Geometries. - // This function has the responsibility of handling all of them, and that - // means that some of the `for` loops you see below actually just don't apply - // to certain inputs. For instance, if you give this just a - // Point geometry, then both loops are short-circuited and all we do - // is gradually rename the input until it's called 'geometry'. - // - // This also aims to allocate as few resources as possible: just a - // few numbers and booleans, rather than any temporary arrays as would - // be required with the normalization approach. - for (i = 0; i < stop; i++) { - - geometryMaybeCollection = (isFeatureCollection ? layer.features[i].geometry : - (isFeature ? layer.geometry : layer)); - isGeometryCollection = geometryMaybeCollection.type === 'GeometryCollection'; - stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1; - - for (g = 0; g < stopG; g++) { - geometry = isGeometryCollection ? - geometryMaybeCollection.geometries[g] : geometryMaybeCollection; - - if (geometry.type === 'Point' || - geometry.type === 'LineString' || - geometry.type === 'MultiPoint' || - geometry.type === 'Polygon' || - geometry.type === 'MultiLineString' || - geometry.type === 'MultiPolygon') { - callback(geometry, currentIndex); - currentIndex++; - } else if (geometry.type === 'GeometryCollection') { - for (j = 0; j < geometry.geometries.length; j++) { - callback(geometry.geometries[j], currentIndex); - currentIndex++; - } - } else { - throw new Error('Unknown Geometry Type'); - } - } - } -} -module.exports.geomEach = geomEach; - -/** - * Callback for geomReduce - * - * The first time the callback function is called, the values provided as arguments depend - * on whether the reduce method has an initialValue argument. - * - * If an initialValue is provided to the reduce method: - * - The previousValue argument is initialValue. - * - The currentValue argument is the value of the first element present in the array. - * - * If an initialValue is not provided: - * - The previousValue argument is the value of the first element present in the array. - * - The currentValue argument is the value of the second element present in the array. - * - * @private - * @callback geomReduceCallback - * @param {*} previousValue The accumulated value previously returned in the last invocation - * of the callback, or initialValue, if supplied. - * @param {*} currentGeometry The current Feature being processed. - * @param {number} currentIndex The index of the current element being processed in the - * array.Starts at index 0, if an initialValue is provided, and at index 1 otherwise. - */ - -/** - * Reduce geometry in any GeoJSON object, similar to Array.reduce(). - * - * @name geomReduce - * @param {Object} layer any GeoJSON object - * @param {Function} callback a method that takes (previousValue, currentGeometry, currentIndex) - * @param {*} [initialValue] Value to use as the first argument to the first call of the callback. - * @returns {*} The value that results from the reduction. - * @example - * var features = { - * "type": "FeatureCollection", - * "features": [ - * { - * "type": "Feature", - * "properties": {"foo": "bar"}, - * "geometry": { - * "type": "Point", - * "coordinates": [26, 37] - * } - * }, - * { - * "type": "Feature", - * "properties": {"hello": "world"}, - * "geometry": { - * "type": "Point", - * "coordinates": [36, 53] - * } - * } - * ] - * }; - * turf.geomReduce(features, function (previousValue, currentGeometry, currentIndex) { - * //=previousValue - * //=currentGeometry - * //=currentIndex - * return currentGeometry - * }); - */ -function geomReduce(layer, callback, initialValue) { - var previousValue = initialValue; - geomEach(layer, function (currentGeometry, currentIndex) { - if (currentIndex === 0 && initialValue === undefined) { - previousValue = currentGeometry; - } else { - previousValue = callback(previousValue, currentGeometry, currentIndex); - } - }); - return previousValue; -} -module.exports.geomReduce = geomReduce; - -},{}],131:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var helpers_1 = require("@turf/helpers"); -var invariant_1 = require("@turf/invariant"); -/** - * Converts a {@link Polygon} to {@link LineString|(Multi)LineString} or {@link MultiPolygon} to a - * {@link FeatureCollection} of {@link LineString|(Multi)LineString}. - * - * @name polygonToLine - * @param {Feature} poly Feature to convert - * @param {Object} [options={}] Optional parameters - * @param {Object} [options.properties={}] translates GeoJSON properties to Feature - * @returns {FeatureCollection|Feature} converted (Multi)Polygon to (Multi)LineString - * @example - * var poly = turf.polygon([[[125, -30], [145, -30], [145, -20], [125, -20], [125, -30]]]); - * - * var line = turf.polygonToLine(poly); - * - * //addToMap - * var addToMap = [line]; - */ -function default_1(poly, options) { - if (options === void 0) { options = {}; } - var geom = invariant_1.getGeom(poly); - if (!options.properties && poly.type === "Feature") { - options.properties = poly.properties; - } - switch (geom.type) { - case "Polygon": return polygonToLine(geom, options); - case "MultiPolygon": return multiPolygonToLine(geom, options); - default: throw new Error("invalid poly"); - } -} -exports.default = default_1; -/** - * @private - */ -function polygonToLine(poly, options) { - if (options === void 0) { options = {}; } - var geom = invariant_1.getGeom(poly); - var type = geom.type; - var coords = geom.coordinates; - var properties = options.properties ? options.properties : poly.type === "Feature" ? poly.properties : {}; - return coordsToLine(coords, properties); -} -exports.polygonToLine = polygonToLine; -/** - * @private - */ -function multiPolygonToLine(multiPoly, options) { - if (options === void 0) { options = {}; } - var geom = invariant_1.getGeom(multiPoly); - var type = geom.type; - var coords = geom.coordinates; - var properties = options.properties ? options.properties : - multiPoly.type === "Feature" ? multiPoly.properties : {}; - var lines = []; - coords.forEach(function (coord) { - lines.push(coordsToLine(coord, properties)); - }); - return helpers_1.featureCollection(lines); -} -exports.multiPolygonToLine = multiPolygonToLine; -/** - * @private - */ -function coordsToLine(coords, properties) { - if (coords.length > 1) { - return helpers_1.multiLineString(coords, properties); - } - return helpers_1.lineString(coords[0], properties); -} -exports.coordsToLine = coordsToLine; - -},{"@turf/helpers":123,"@turf/invariant":125}],132:[function(require,module,exports){ -var asn1 = exports; - -asn1.bignum = require('bn.js'); - -asn1.define = require('./asn1/api').define; -asn1.base = require('./asn1/base'); -asn1.constants = require('./asn1/constants'); -asn1.decoders = require('./asn1/decoders'); -asn1.encoders = require('./asn1/encoders'); - -},{"./asn1/api":133,"./asn1/base":135,"./asn1/constants":139,"./asn1/decoders":141,"./asn1/encoders":144,"bn.js":147}],133:[function(require,module,exports){ -var asn1 = require('../asn1'); -var inherits = require('inherits'); - -var api = exports; - -api.define = function define(name, body) { - return new Entity(name, body); -}; - -function Entity(name, body) { - this.name = name; - this.body = body; - - this.decoders = {}; - this.encoders = {}; -}; - -Entity.prototype._createNamed = function createNamed(base) { - var named; - try { - named = require('vm').runInThisContext( - '(function ' + this.name + '(entity) {\n' + - ' this._initNamed(entity);\n' + - '})' - ); - } catch (e) { - named = function (entity) { - this._initNamed(entity); - }; - } - inherits(named, base); - named.prototype._initNamed = function initnamed(entity) { - base.call(this, entity); - }; - - return new named(this); -}; - -Entity.prototype._getDecoder = function _getDecoder(enc) { - enc = enc || 'der'; - // Lazily create decoder - if (!this.decoders.hasOwnProperty(enc)) - this.decoders[enc] = this._createNamed(asn1.decoders[enc]); - return this.decoders[enc]; -}; - -Entity.prototype.decode = function decode(data, enc, options) { - return this._getDecoder(enc).decode(data, options); -}; - -Entity.prototype._getEncoder = function _getEncoder(enc) { - enc = enc || 'der'; - // Lazily create encoder - if (!this.encoders.hasOwnProperty(enc)) - this.encoders[enc] = this._createNamed(asn1.encoders[enc]); - return this.encoders[enc]; -}; - -Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { - return this._getEncoder(enc).encode(data, reporter); -}; - -},{"../asn1":132,"inherits":262,"vm":344}],134:[function(require,module,exports){ -var inherits = require('inherits'); -var Reporter = require('../base').Reporter; -var Buffer = require('buffer').Buffer; - -function DecoderBuffer(base, options) { - Reporter.call(this, options); - if (!Buffer.isBuffer(base)) { - this.error('Input not Buffer'); - return; - } - - this.base = base; - this.offset = 0; - this.length = base.length; -} -inherits(DecoderBuffer, Reporter); -exports.DecoderBuffer = DecoderBuffer; - -DecoderBuffer.prototype.save = function save() { - return { offset: this.offset, reporter: Reporter.prototype.save.call(this) }; -}; - -DecoderBuffer.prototype.restore = function restore(save) { - // Return skipped data - var res = new DecoderBuffer(this.base); - res.offset = save.offset; - res.length = this.offset; - - this.offset = save.offset; - Reporter.prototype.restore.call(this, save.reporter); - - return res; -}; - -DecoderBuffer.prototype.isEmpty = function isEmpty() { - return this.offset === this.length; -}; - -DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) { - if (this.offset + 1 <= this.length) - return this.base.readUInt8(this.offset++, true); - else - return this.error(fail || 'DecoderBuffer overrun'); -} - -DecoderBuffer.prototype.skip = function skip(bytes, fail) { - if (!(this.offset + bytes <= this.length)) - return this.error(fail || 'DecoderBuffer overrun'); - - var res = new DecoderBuffer(this.base); - - // Share reporter state - res._reporterState = this._reporterState; - - res.offset = this.offset; - res.length = this.offset + bytes; - this.offset += bytes; - return res; -} - -DecoderBuffer.prototype.raw = function raw(save) { - return this.base.slice(save ? save.offset : this.offset, this.length); -} - -function EncoderBuffer(value, reporter) { - if (Array.isArray(value)) { - this.length = 0; - this.value = value.map(function(item) { - if (!(item instanceof EncoderBuffer)) - item = new EncoderBuffer(item, reporter); - this.length += item.length; - return item; - }, this); - } else if (typeof value === 'number') { - if (!(0 <= value && value <= 0xff)) - return reporter.error('non-byte EncoderBuffer value'); - this.value = value; - this.length = 1; - } else if (typeof value === 'string') { - this.value = value; - this.length = Buffer.byteLength(value); - } else if (Buffer.isBuffer(value)) { - this.value = value; - this.length = value.length; - } else { - return reporter.error('Unsupported type: ' + typeof value); - } -} -exports.EncoderBuffer = EncoderBuffer; - -EncoderBuffer.prototype.join = function join(out, offset) { - if (!out) - out = new Buffer(this.length); - if (!offset) - offset = 0; - - if (this.length === 0) - return out; - - if (Array.isArray(this.value)) { - this.value.forEach(function(item) { - item.join(out, offset); - offset += item.length; - }); - } else { - if (typeof this.value === 'number') - out[offset] = this.value; - else if (typeof this.value === 'string') - out.write(this.value, offset); - else if (Buffer.isBuffer(this.value)) - this.value.copy(out, offset); - offset += this.length; - } - - return out; -}; - -},{"../base":135,"buffer":182,"inherits":262}],135:[function(require,module,exports){ -var base = exports; - -base.Reporter = require('./reporter').Reporter; -base.DecoderBuffer = require('./buffer').DecoderBuffer; -base.EncoderBuffer = require('./buffer').EncoderBuffer; -base.Node = require('./node'); - -},{"./buffer":134,"./node":136,"./reporter":137}],136:[function(require,module,exports){ -var Reporter = require('../base').Reporter; -var EncoderBuffer = require('../base').EncoderBuffer; -var DecoderBuffer = require('../base').DecoderBuffer; -var assert = require('minimalistic-assert'); - -// Supported tags -var tags = [ - 'seq', 'seqof', 'set', 'setof', 'objid', 'bool', - 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc', - 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str', - 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr' -]; - -// Public methods list -var methods = [ - 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice', - 'any', 'contains' -].concat(tags); - -// Overrided methods list -var overrided = [ - '_peekTag', '_decodeTag', '_use', - '_decodeStr', '_decodeObjid', '_decodeTime', - '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList', - - '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime', - '_encodeNull', '_encodeInt', '_encodeBool' -]; - -function Node(enc, parent) { - var state = {}; - this._baseState = state; - - state.enc = enc; - - state.parent = parent || null; - state.children = null; - - // State - state.tag = null; - state.args = null; - state.reverseArgs = null; - state.choice = null; - state.optional = false; - state.any = false; - state.obj = false; - state.use = null; - state.useDecoder = null; - state.key = null; - state['default'] = null; - state.explicit = null; - state.implicit = null; - state.contains = null; - - // Should create new instance on each method - if (!state.parent) { - state.children = []; - this._wrap(); - } -} -module.exports = Node; - -var stateProps = [ - 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', - 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', - 'implicit', 'contains' -]; - -Node.prototype.clone = function clone() { - var state = this._baseState; - var cstate = {}; - stateProps.forEach(function(prop) { - cstate[prop] = state[prop]; - }); - var res = new this.constructor(cstate.parent); - res._baseState = cstate; - return res; -}; - -Node.prototype._wrap = function wrap() { - var state = this._baseState; - methods.forEach(function(method) { - this[method] = function _wrappedMethod() { - var clone = new this.constructor(this); - state.children.push(clone); - return clone[method].apply(clone, arguments); - }; - }, this); -}; - -Node.prototype._init = function init(body) { - var state = this._baseState; - - assert(state.parent === null); - body.call(this); - - // Filter children - state.children = state.children.filter(function(child) { - return child._baseState.parent === this; - }, this); - assert.equal(state.children.length, 1, 'Root node can have only one child'); -}; - -Node.prototype._useArgs = function useArgs(args) { - var state = this._baseState; - - // Filter children and args - var children = args.filter(function(arg) { - return arg instanceof this.constructor; - }, this); - args = args.filter(function(arg) { - return !(arg instanceof this.constructor); - }, this); - - if (children.length !== 0) { - assert(state.children === null); - state.children = children; - - // Replace parent to maintain backward link - children.forEach(function(child) { - child._baseState.parent = this; - }, this); - } - if (args.length !== 0) { - assert(state.args === null); - state.args = args; - state.reverseArgs = args.map(function(arg) { - if (typeof arg !== 'object' || arg.constructor !== Object) - return arg; - - var res = {}; - Object.keys(arg).forEach(function(key) { - if (key == (key | 0)) - key |= 0; - var value = arg[key]; - res[value] = key; - }); - return res; - }); - } -}; - -// -// Overrided methods -// - -overrided.forEach(function(method) { - Node.prototype[method] = function _overrided() { - var state = this._baseState; - throw new Error(method + ' not implemented for encoding: ' + state.enc); - }; -}); - -// -// Public methods -// - -tags.forEach(function(tag) { - Node.prototype[tag] = function _tagMethod() { - var state = this._baseState; - var args = Array.prototype.slice.call(arguments); - - assert(state.tag === null); - state.tag = tag; - - this._useArgs(args); - - return this; - }; -}); - -Node.prototype.use = function use(item) { - assert(item); - var state = this._baseState; - - assert(state.use === null); - state.use = item; - - return this; -}; - -Node.prototype.optional = function optional() { - var state = this._baseState; - - state.optional = true; - - return this; -}; - -Node.prototype.def = function def(val) { - var state = this._baseState; - - assert(state['default'] === null); - state['default'] = val; - state.optional = true; - - return this; -}; - -Node.prototype.explicit = function explicit(num) { - var state = this._baseState; - - assert(state.explicit === null && state.implicit === null); - state.explicit = num; - - return this; -}; - -Node.prototype.implicit = function implicit(num) { - var state = this._baseState; - - assert(state.explicit === null && state.implicit === null); - state.implicit = num; - - return this; -}; - -Node.prototype.obj = function obj() { - var state = this._baseState; - var args = Array.prototype.slice.call(arguments); - - state.obj = true; - - if (args.length !== 0) - this._useArgs(args); - - return this; -}; - -Node.prototype.key = function key(newKey) { - var state = this._baseState; - - assert(state.key === null); - state.key = newKey; - - return this; -}; - -Node.prototype.any = function any() { - var state = this._baseState; - - state.any = true; - - return this; -}; - -Node.prototype.choice = function choice(obj) { - var state = this._baseState; - - assert(state.choice === null); - state.choice = obj; - this._useArgs(Object.keys(obj).map(function(key) { - return obj[key]; - })); - - return this; -}; - -Node.prototype.contains = function contains(item) { - var state = this._baseState; - - assert(state.use === null); - state.contains = item; - - return this; -}; - -// -// Decoding -// - -Node.prototype._decode = function decode(input, options) { - var state = this._baseState; - - // Decode root node - if (state.parent === null) - return input.wrapResult(state.children[0]._decode(input, options)); - - var result = state['default']; - var present = true; - - var prevKey = null; - if (state.key !== null) - prevKey = input.enterKey(state.key); - - // Check if tag is there - if (state.optional) { - var tag = null; - if (state.explicit !== null) - tag = state.explicit; - else if (state.implicit !== null) - tag = state.implicit; - else if (state.tag !== null) - tag = state.tag; - - if (tag === null && !state.any) { - // Trial and Error - var save = input.save(); - try { - if (state.choice === null) - this._decodeGeneric(state.tag, input, options); - else - this._decodeChoice(input, options); - present = true; - } catch (e) { - present = false; - } - input.restore(save); - } else { - present = this._peekTag(input, tag, state.any); - - if (input.isError(present)) - return present; - } - } - - // Push object on stack - var prevObj; - if (state.obj && present) - prevObj = input.enterObject(); - - if (present) { - // Unwrap explicit values - if (state.explicit !== null) { - var explicit = this._decodeTag(input, state.explicit); - if (input.isError(explicit)) - return explicit; - input = explicit; - } - - var start = input.offset; - - // Unwrap implicit and normal values - if (state.use === null && state.choice === null) { - if (state.any) - var save = input.save(); - var body = this._decodeTag( - input, - state.implicit !== null ? state.implicit : state.tag, - state.any - ); - if (input.isError(body)) - return body; - - if (state.any) - result = input.raw(save); - else - input = body; - } - - if (options && options.track && state.tag !== null) - options.track(input.path(), start, input.length, 'tagged'); - - if (options && options.track && state.tag !== null) - options.track(input.path(), input.offset, input.length, 'content'); - - // Select proper method for tag - if (state.any) - result = result; - else if (state.choice === null) - result = this._decodeGeneric(state.tag, input, options); - else - result = this._decodeChoice(input, options); - - if (input.isError(result)) - return result; - - // Decode children - if (!state.any && state.choice === null && state.children !== null) { - state.children.forEach(function decodeChildren(child) { - // NOTE: We are ignoring errors here, to let parser continue with other - // parts of encoded data - child._decode(input, options); - }); - } - - // Decode contained/encoded by schema, only in bit or octet strings - if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) { - var data = new DecoderBuffer(result); - result = this._getUse(state.contains, input._reporterState.obj) - ._decode(data, options); - } - } - - // Pop object - if (state.obj && present) - result = input.leaveObject(prevObj); - - // Set key - if (state.key !== null && (result !== null || present === true)) - input.leaveKey(prevKey, state.key, result); - else if (prevKey !== null) - input.exitKey(prevKey); - - return result; -}; - -Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) { - var state = this._baseState; - - if (tag === 'seq' || tag === 'set') - return null; - if (tag === 'seqof' || tag === 'setof') - return this._decodeList(input, tag, state.args[0], options); - else if (/str$/.test(tag)) - return this._decodeStr(input, tag, options); - else if (tag === 'objid' && state.args) - return this._decodeObjid(input, state.args[0], state.args[1], options); - else if (tag === 'objid') - return this._decodeObjid(input, null, null, options); - else if (tag === 'gentime' || tag === 'utctime') - return this._decodeTime(input, tag, options); - else if (tag === 'null_') - return this._decodeNull(input, options); - else if (tag === 'bool') - return this._decodeBool(input, options); - else if (tag === 'objDesc') - return this._decodeStr(input, tag, options); - else if (tag === 'int' || tag === 'enum') - return this._decodeInt(input, state.args && state.args[0], options); - - if (state.use !== null) { - return this._getUse(state.use, input._reporterState.obj) - ._decode(input, options); - } else { - return input.error('unknown tag: ' + tag); - } -}; - -Node.prototype._getUse = function _getUse(entity, obj) { - - var state = this._baseState; - // Create altered use decoder if implicit is set - state.useDecoder = this._use(entity, obj); - assert(state.useDecoder._baseState.parent === null); - state.useDecoder = state.useDecoder._baseState.children[0]; - if (state.implicit !== state.useDecoder._baseState.implicit) { - state.useDecoder = state.useDecoder.clone(); - state.useDecoder._baseState.implicit = state.implicit; - } - return state.useDecoder; -}; - -Node.prototype._decodeChoice = function decodeChoice(input, options) { - var state = this._baseState; - var result = null; - var match = false; - - Object.keys(state.choice).some(function(key) { - var save = input.save(); - var node = state.choice[key]; - try { - var value = node._decode(input, options); - if (input.isError(value)) - return false; - - result = { type: key, value: value }; - match = true; - } catch (e) { - input.restore(save); - return false; - } - return true; - }, this); - - if (!match) - return input.error('Choice not matched'); - - return result; -}; - -// -// Encoding -// - -Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) { - return new EncoderBuffer(data, this.reporter); -}; - -Node.prototype._encode = function encode(data, reporter, parent) { - var state = this._baseState; - if (state['default'] !== null && state['default'] === data) - return; - - var result = this._encodeValue(data, reporter, parent); - if (result === undefined) - return; - - if (this._skipDefault(result, reporter, parent)) - return; - - return result; -}; - -Node.prototype._encodeValue = function encode(data, reporter, parent) { - var state = this._baseState; - - // Decode root node - if (state.parent === null) - return state.children[0]._encode(data, reporter || new Reporter()); - - var result = null; - - // Set reporter to share it with a child class - this.reporter = reporter; - - // Check if data is there - if (state.optional && data === undefined) { - if (state['default'] !== null) - data = state['default'] - else - return; - } - - // Encode children first - var content = null; - var primitive = false; - if (state.any) { - // Anything that was given is translated to buffer - result = this._createEncoderBuffer(data); - } else if (state.choice) { - result = this._encodeChoice(data, reporter); - } else if (state.contains) { - content = this._getUse(state.contains, parent)._encode(data, reporter); - primitive = true; - } else if (state.children) { - content = state.children.map(function(child) { - if (child._baseState.tag === 'null_') - return child._encode(null, reporter, data); - - if (child._baseState.key === null) - return reporter.error('Child should have a key'); - var prevKey = reporter.enterKey(child._baseState.key); - - if (typeof data !== 'object') - return reporter.error('Child expected, but input is not object'); - - var res = child._encode(data[child._baseState.key], reporter, data); - reporter.leaveKey(prevKey); - - return res; - }, this).filter(function(child) { - return child; - }); - content = this._createEncoderBuffer(content); - } else { - if (state.tag === 'seqof' || state.tag === 'setof') { - // TODO(indutny): this should be thrown on DSL level - if (!(state.args && state.args.length === 1)) - return reporter.error('Too many args for : ' + state.tag); - - if (!Array.isArray(data)) - return reporter.error('seqof/setof, but data is not Array'); - - var child = this.clone(); - child._baseState.implicit = null; - content = this._createEncoderBuffer(data.map(function(item) { - var state = this._baseState; - - return this._getUse(state.args[0], data)._encode(item, reporter); - }, child)); - } else if (state.use !== null) { - result = this._getUse(state.use, parent)._encode(data, reporter); - } else { - content = this._encodePrimitive(state.tag, data); - primitive = true; - } - } - - // Encode data itself - var result; - if (!state.any && state.choice === null) { - var tag = state.implicit !== null ? state.implicit : state.tag; - var cls = state.implicit === null ? 'universal' : 'context'; - - if (tag === null) { - if (state.use === null) - reporter.error('Tag could be omitted only for .use()'); - } else { - if (state.use === null) - result = this._encodeComposite(tag, primitive, cls, content); - } - } - - // Wrap in explicit - if (state.explicit !== null) - result = this._encodeComposite(state.explicit, false, 'context', result); - - return result; -}; - -Node.prototype._encodeChoice = function encodeChoice(data, reporter) { - var state = this._baseState; - - var node = state.choice[data.type]; - if (!node) { - assert( - false, - data.type + ' not found in ' + - JSON.stringify(Object.keys(state.choice))); - } - return node._encode(data.value, reporter); -}; - -Node.prototype._encodePrimitive = function encodePrimitive(tag, data) { - var state = this._baseState; - - if (/str$/.test(tag)) - return this._encodeStr(data, tag); - else if (tag === 'objid' && state.args) - return this._encodeObjid(data, state.reverseArgs[0], state.args[1]); - else if (tag === 'objid') - return this._encodeObjid(data, null, null); - else if (tag === 'gentime' || tag === 'utctime') - return this._encodeTime(data, tag); - else if (tag === 'null_') - return this._encodeNull(); - else if (tag === 'int' || tag === 'enum') - return this._encodeInt(data, state.args && state.reverseArgs[0]); - else if (tag === 'bool') - return this._encodeBool(data); - else if (tag === 'objDesc') - return this._encodeStr(data, tag); - else - throw new Error('Unsupported tag: ' + tag); -}; - -Node.prototype._isNumstr = function isNumstr(str) { - return /^[0-9 ]*$/.test(str); -}; - -Node.prototype._isPrintstr = function isPrintstr(str) { - return /^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str); -}; - -},{"../base":135,"minimalistic-assert":268}],137:[function(require,module,exports){ -var inherits = require('inherits'); - -function Reporter(options) { - this._reporterState = { - obj: null, - path: [], - options: options || {}, - errors: [] - }; -} -exports.Reporter = Reporter; - -Reporter.prototype.isError = function isError(obj) { - return obj instanceof ReporterError; -}; - -Reporter.prototype.save = function save() { - var state = this._reporterState; - - return { obj: state.obj, pathLen: state.path.length }; -}; - -Reporter.prototype.restore = function restore(data) { - var state = this._reporterState; - - state.obj = data.obj; - state.path = state.path.slice(0, data.pathLen); -}; - -Reporter.prototype.enterKey = function enterKey(key) { - return this._reporterState.path.push(key); -}; - -Reporter.prototype.exitKey = function exitKey(index) { - var state = this._reporterState; - - state.path = state.path.slice(0, index - 1); -}; - -Reporter.prototype.leaveKey = function leaveKey(index, key, value) { - var state = this._reporterState; - - this.exitKey(index); - if (state.obj !== null) - state.obj[key] = value; -}; - -Reporter.prototype.path = function path() { - return this._reporterState.path.join('/'); -}; - -Reporter.prototype.enterObject = function enterObject() { - var state = this._reporterState; - - var prev = state.obj; - state.obj = {}; - return prev; -}; - -Reporter.prototype.leaveObject = function leaveObject(prev) { - var state = this._reporterState; - - var now = state.obj; - state.obj = prev; - return now; -}; - -Reporter.prototype.error = function error(msg) { - var err; - var state = this._reporterState; - - var inherited = msg instanceof ReporterError; - if (inherited) { - err = msg; - } else { - err = new ReporterError(state.path.map(function(elem) { - return '[' + JSON.stringify(elem) + ']'; - }).join(''), msg.message || msg, msg.stack); - } - - if (!state.options.partial) - throw err; - - if (!inherited) - state.errors.push(err); - - return err; -}; - -Reporter.prototype.wrapResult = function wrapResult(result) { - var state = this._reporterState; - if (!state.options.partial) - return result; - - return { - result: this.isError(result) ? null : result, - errors: state.errors - }; -}; - -function ReporterError(path, msg) { - this.path = path; - this.rethrow(msg); -}; -inherits(ReporterError, Error); - -ReporterError.prototype.rethrow = function rethrow(msg) { - this.message = msg + ' at: ' + (this.path || '(shallow)'); - if (Error.captureStackTrace) - Error.captureStackTrace(this, ReporterError); - - if (!this.stack) { - try { - // IE only adds stack when thrown - throw new Error(this.message); - } catch (e) { - this.stack = e.stack; - } - } - return this; -}; - -},{"inherits":262}],138:[function(require,module,exports){ -var constants = require('../constants'); - -exports.tagClass = { - 0: 'universal', - 1: 'application', - 2: 'context', - 3: 'private' -}; -exports.tagClassByName = constants._reverse(exports.tagClass); - -exports.tag = { - 0x00: 'end', - 0x01: 'bool', - 0x02: 'int', - 0x03: 'bitstr', - 0x04: 'octstr', - 0x05: 'null_', - 0x06: 'objid', - 0x07: 'objDesc', - 0x08: 'external', - 0x09: 'real', - 0x0a: 'enum', - 0x0b: 'embed', - 0x0c: 'utf8str', - 0x0d: 'relativeOid', - 0x10: 'seq', - 0x11: 'set', - 0x12: 'numstr', - 0x13: 'printstr', - 0x14: 't61str', - 0x15: 'videostr', - 0x16: 'ia5str', - 0x17: 'utctime', - 0x18: 'gentime', - 0x19: 'graphstr', - 0x1a: 'iso646str', - 0x1b: 'genstr', - 0x1c: 'unistr', - 0x1d: 'charstr', - 0x1e: 'bmpstr' -}; -exports.tagByName = constants._reverse(exports.tag); - -},{"../constants":139}],139:[function(require,module,exports){ -var constants = exports; - -// Helper -constants._reverse = function reverse(map) { - var res = {}; - - Object.keys(map).forEach(function(key) { - // Convert key to integer if it is stringified - if ((key | 0) == key) - key = key | 0; - - var value = map[key]; - res[value] = key; - }); - - return res; -}; - -constants.der = require('./der'); - -},{"./der":138}],140:[function(require,module,exports){ -var inherits = require('inherits'); - -var asn1 = require('../../asn1'); -var base = asn1.base; -var bignum = asn1.bignum; - -// Import DER constants -var der = asn1.constants.der; - -function DERDecoder(entity) { - this.enc = 'der'; - this.name = entity.name; - this.entity = entity; - - // Construct base tree - this.tree = new DERNode(); - this.tree._init(entity.body); -}; -module.exports = DERDecoder; - -DERDecoder.prototype.decode = function decode(data, options) { - if (!(data instanceof base.DecoderBuffer)) - data = new base.DecoderBuffer(data, options); - - return this.tree._decode(data, options); -}; - -// Tree methods - -function DERNode(parent) { - base.Node.call(this, 'der', parent); -} -inherits(DERNode, base.Node); - -DERNode.prototype._peekTag = function peekTag(buffer, tag, any) { - if (buffer.isEmpty()) - return false; - - var state = buffer.save(); - var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"'); - if (buffer.isError(decodedTag)) - return decodedTag; - - buffer.restore(state); - - return decodedTag.tag === tag || decodedTag.tagStr === tag || - (decodedTag.tagStr + 'of') === tag || any; -}; - -DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) { - var decodedTag = derDecodeTag(buffer, - 'Failed to decode tag of "' + tag + '"'); - if (buffer.isError(decodedTag)) - return decodedTag; - - var len = derDecodeLen(buffer, - decodedTag.primitive, - 'Failed to get length of "' + tag + '"'); - - // Failure - if (buffer.isError(len)) - return len; - - if (!any && - decodedTag.tag !== tag && - decodedTag.tagStr !== tag && - decodedTag.tagStr + 'of' !== tag) { - return buffer.error('Failed to match tag: "' + tag + '"'); - } - - if (decodedTag.primitive || len !== null) - return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); - - // Indefinite length... find END tag - var state = buffer.save(); - var res = this._skipUntilEnd( - buffer, - 'Failed to skip indefinite length body: "' + this.tag + '"'); - if (buffer.isError(res)) - return res; - - len = buffer.offset - state.offset; - buffer.restore(state); - return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); -}; - -DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) { - while (true) { - var tag = derDecodeTag(buffer, fail); - if (buffer.isError(tag)) - return tag; - var len = derDecodeLen(buffer, tag.primitive, fail); - if (buffer.isError(len)) - return len; - - var res; - if (tag.primitive || len !== null) - res = buffer.skip(len) - else - res = this._skipUntilEnd(buffer, fail); - - // Failure - if (buffer.isError(res)) - return res; - - if (tag.tagStr === 'end') - break; - } -}; - -DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, - options) { - var result = []; - while (!buffer.isEmpty()) { - var possibleEnd = this._peekTag(buffer, 'end'); - if (buffer.isError(possibleEnd)) - return possibleEnd; - - var res = decoder.decode(buffer, 'der', options); - if (buffer.isError(res) && possibleEnd) - break; - result.push(res); - } - return result; -}; - -DERNode.prototype._decodeStr = function decodeStr(buffer, tag) { - if (tag === 'bitstr') { - var unused = buffer.readUInt8(); - if (buffer.isError(unused)) - return unused; - return { unused: unused, data: buffer.raw() }; - } else if (tag === 'bmpstr') { - var raw = buffer.raw(); - if (raw.length % 2 === 1) - return buffer.error('Decoding of string type: bmpstr length mismatch'); - - var str = ''; - for (var i = 0; i < raw.length / 2; i++) { - str += String.fromCharCode(raw.readUInt16BE(i * 2)); - } - return str; - } else if (tag === 'numstr') { - var numstr = buffer.raw().toString('ascii'); - if (!this._isNumstr(numstr)) { - return buffer.error('Decoding of string type: ' + - 'numstr unsupported characters'); - } - return numstr; - } else if (tag === 'octstr') { - return buffer.raw(); - } else if (tag === 'objDesc') { - return buffer.raw(); - } else if (tag === 'printstr') { - var printstr = buffer.raw().toString('ascii'); - if (!this._isPrintstr(printstr)) { - return buffer.error('Decoding of string type: ' + - 'printstr unsupported characters'); - } - return printstr; - } else if (/str$/.test(tag)) { - return buffer.raw().toString(); - } else { - return buffer.error('Decoding of string type: ' + tag + ' unsupported'); - } -}; - -DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) { - var result; - var identifiers = []; - var ident = 0; - while (!buffer.isEmpty()) { - var subident = buffer.readUInt8(); - ident <<= 7; - ident |= subident & 0x7f; - if ((subident & 0x80) === 0) { - identifiers.push(ident); - ident = 0; - } - } - if (subident & 0x80) - identifiers.push(ident); - - var first = (identifiers[0] / 40) | 0; - var second = identifiers[0] % 40; - - if (relative) - result = identifiers; - else - result = [first, second].concat(identifiers.slice(1)); - - if (values) { - var tmp = values[result.join(' ')]; - if (tmp === undefined) - tmp = values[result.join('.')]; - if (tmp !== undefined) - result = tmp; - } - - return result; -}; - -DERNode.prototype._decodeTime = function decodeTime(buffer, tag) { - var str = buffer.raw().toString(); - if (tag === 'gentime') { - var year = str.slice(0, 4) | 0; - var mon = str.slice(4, 6) | 0; - var day = str.slice(6, 8) | 0; - var hour = str.slice(8, 10) | 0; - var min = str.slice(10, 12) | 0; - var sec = str.slice(12, 14) | 0; - } else if (tag === 'utctime') { - var year = str.slice(0, 2) | 0; - var mon = str.slice(2, 4) | 0; - var day = str.slice(4, 6) | 0; - var hour = str.slice(6, 8) | 0; - var min = str.slice(8, 10) | 0; - var sec = str.slice(10, 12) | 0; - if (year < 70) - year = 2000 + year; - else - year = 1900 + year; - } else { - return buffer.error('Decoding ' + tag + ' time is not supported yet'); - } - - return Date.UTC(year, mon - 1, day, hour, min, sec, 0); -}; - -DERNode.prototype._decodeNull = function decodeNull(buffer) { - return null; -}; - -DERNode.prototype._decodeBool = function decodeBool(buffer) { - var res = buffer.readUInt8(); - if (buffer.isError(res)) - return res; - else - return res !== 0; -}; - -DERNode.prototype._decodeInt = function decodeInt(buffer, values) { - // Bigint, return as it is (assume big endian) - var raw = buffer.raw(); - var res = new bignum(raw); - - if (values) - res = values[res.toString(10)] || res; - - return res; -}; - -DERNode.prototype._use = function use(entity, obj) { - if (typeof entity === 'function') - entity = entity(obj); - return entity._getDecoder('der').tree; -}; - -// Utility methods - -function derDecodeTag(buf, fail) { - var tag = buf.readUInt8(fail); - if (buf.isError(tag)) - return tag; - - var cls = der.tagClass[tag >> 6]; - var primitive = (tag & 0x20) === 0; - - // Multi-octet tag - load - if ((tag & 0x1f) === 0x1f) { - var oct = tag; - tag = 0; - while ((oct & 0x80) === 0x80) { - oct = buf.readUInt8(fail); - if (buf.isError(oct)) - return oct; - - tag <<= 7; - tag |= oct & 0x7f; - } - } else { - tag &= 0x1f; - } - var tagStr = der.tag[tag]; - - return { - cls: cls, - primitive: primitive, - tag: tag, - tagStr: tagStr - }; -} - -function derDecodeLen(buf, primitive, fail) { - var len = buf.readUInt8(fail); - if (buf.isError(len)) - return len; - - // Indefinite form - if (!primitive && len === 0x80) - return null; - - // Definite form - if ((len & 0x80) === 0) { - // Short form - return len; - } - - // Long form - var num = len & 0x7f; - if (num > 4) - return buf.error('length octect is too long'); - - len = 0; - for (var i = 0; i < num; i++) { - len <<= 8; - var j = buf.readUInt8(fail); - if (buf.isError(j)) - return j; - len |= j; - } - - return len; -} - -},{"../../asn1":132,"inherits":262}],141:[function(require,module,exports){ -var decoders = exports; - -decoders.der = require('./der'); -decoders.pem = require('./pem'); - -},{"./der":140,"./pem":142}],142:[function(require,module,exports){ -var inherits = require('inherits'); -var Buffer = require('buffer').Buffer; - -var DERDecoder = require('./der'); - -function PEMDecoder(entity) { - DERDecoder.call(this, entity); - this.enc = 'pem'; -}; -inherits(PEMDecoder, DERDecoder); -module.exports = PEMDecoder; - -PEMDecoder.prototype.decode = function decode(data, options) { - var lines = data.toString().split(/[\r\n]+/g); - - var label = options.label.toUpperCase(); - - var re = /^-----(BEGIN|END) ([^-]+)-----$/; - var start = -1; - var end = -1; - for (var i = 0; i < lines.length; i++) { - var match = lines[i].match(re); - if (match === null) - continue; - - if (match[2] !== label) - continue; - - if (start === -1) { - if (match[1] !== 'BEGIN') - break; - start = i; - } else { - if (match[1] !== 'END') - break; - end = i; - break; - } - } - if (start === -1 || end === -1) - throw new Error('PEM section not found for: ' + label); - - var base64 = lines.slice(start + 1, end).join(''); - // Remove excessive symbols - base64.replace(/[^a-z0-9\+\/=]+/gi, ''); - - var input = new Buffer(base64, 'base64'); - return DERDecoder.prototype.decode.call(this, input, options); -}; - -},{"./der":140,"buffer":182,"inherits":262}],143:[function(require,module,exports){ -var inherits = require('inherits'); -var Buffer = require('buffer').Buffer; - -var asn1 = require('../../asn1'); -var base = asn1.base; - -// Import DER constants -var der = asn1.constants.der; - -function DEREncoder(entity) { - this.enc = 'der'; - this.name = entity.name; - this.entity = entity; - - // Construct base tree - this.tree = new DERNode(); - this.tree._init(entity.body); -}; -module.exports = DEREncoder; - -DEREncoder.prototype.encode = function encode(data, reporter) { - return this.tree._encode(data, reporter).join(); -}; - -// Tree methods - -function DERNode(parent) { - base.Node.call(this, 'der', parent); -} -inherits(DERNode, base.Node); - -DERNode.prototype._encodeComposite = function encodeComposite(tag, - primitive, - cls, - content) { - var encodedTag = encodeTag(tag, primitive, cls, this.reporter); - - // Short form - if (content.length < 0x80) { - var header = new Buffer(2); - header[0] = encodedTag; - header[1] = content.length; - return this._createEncoderBuffer([ header, content ]); - } - - // Long form - // Count octets required to store length - var lenOctets = 1; - for (var i = content.length; i >= 0x100; i >>= 8) - lenOctets++; - - var header = new Buffer(1 + 1 + lenOctets); - header[0] = encodedTag; - header[1] = 0x80 | lenOctets; - - for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8) - header[i] = j & 0xff; - - return this._createEncoderBuffer([ header, content ]); -}; - -DERNode.prototype._encodeStr = function encodeStr(str, tag) { - if (tag === 'bitstr') { - return this._createEncoderBuffer([ str.unused | 0, str.data ]); - } else if (tag === 'bmpstr') { - var buf = new Buffer(str.length * 2); - for (var i = 0; i < str.length; i++) { - buf.writeUInt16BE(str.charCodeAt(i), i * 2); - } - return this._createEncoderBuffer(buf); - } else if (tag === 'numstr') { - if (!this._isNumstr(str)) { - return this.reporter.error('Encoding of string type: numstr supports ' + - 'only digits and space'); - } - return this._createEncoderBuffer(str); - } else if (tag === 'printstr') { - if (!this._isPrintstr(str)) { - return this.reporter.error('Encoding of string type: printstr supports ' + - 'only latin upper and lower case letters, ' + - 'digits, space, apostrophe, left and rigth ' + - 'parenthesis, plus sign, comma, hyphen, ' + - 'dot, slash, colon, equal sign, ' + - 'question mark'); - } - return this._createEncoderBuffer(str); - } else if (/str$/.test(tag)) { - return this._createEncoderBuffer(str); - } else if (tag === 'objDesc') { - return this._createEncoderBuffer(str); - } else { - return this.reporter.error('Encoding of string type: ' + tag + - ' unsupported'); - } -}; - -DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) { - if (typeof id === 'string') { - if (!values) - return this.reporter.error('string objid given, but no values map found'); - if (!values.hasOwnProperty(id)) - return this.reporter.error('objid not found in values map'); - id = values[id].split(/[\s\.]+/g); - for (var i = 0; i < id.length; i++) - id[i] |= 0; - } else if (Array.isArray(id)) { - id = id.slice(); - for (var i = 0; i < id.length; i++) - id[i] |= 0; - } - - if (!Array.isArray(id)) { - return this.reporter.error('objid() should be either array or string, ' + - 'got: ' + JSON.stringify(id)); - } - - if (!relative) { - if (id[1] >= 40) - return this.reporter.error('Second objid identifier OOB'); - id.splice(0, 2, id[0] * 40 + id[1]); - } - - // Count number of octets - var size = 0; - for (var i = 0; i < id.length; i++) { - var ident = id[i]; - for (size++; ident >= 0x80; ident >>= 7) - size++; - } - - var objid = new Buffer(size); - var offset = objid.length - 1; - for (var i = id.length - 1; i >= 0; i--) { - var ident = id[i]; - objid[offset--] = ident & 0x7f; - while ((ident >>= 7) > 0) - objid[offset--] = 0x80 | (ident & 0x7f); - } - - return this._createEncoderBuffer(objid); -}; - -function two(num) { - if (num < 10) - return '0' + num; - else - return num; -} - -DERNode.prototype._encodeTime = function encodeTime(time, tag) { - var str; - var date = new Date(time); - - if (tag === 'gentime') { - str = [ - two(date.getFullYear()), - two(date.getUTCMonth() + 1), - two(date.getUTCDate()), - two(date.getUTCHours()), - two(date.getUTCMinutes()), - two(date.getUTCSeconds()), - 'Z' - ].join(''); - } else if (tag === 'utctime') { - str = [ - two(date.getFullYear() % 100), - two(date.getUTCMonth() + 1), - two(date.getUTCDate()), - two(date.getUTCHours()), - two(date.getUTCMinutes()), - two(date.getUTCSeconds()), - 'Z' - ].join(''); - } else { - this.reporter.error('Encoding ' + tag + ' time is not supported yet'); - } - - return this._encodeStr(str, 'octstr'); -}; - -DERNode.prototype._encodeNull = function encodeNull() { - return this._createEncoderBuffer(''); -}; - -DERNode.prototype._encodeInt = function encodeInt(num, values) { - if (typeof num === 'string') { - if (!values) - return this.reporter.error('String int or enum given, but no values map'); - if (!values.hasOwnProperty(num)) { - return this.reporter.error('Values map doesn\'t contain: ' + - JSON.stringify(num)); - } - num = values[num]; - } - - // Bignum, assume big endian - if (typeof num !== 'number' && !Buffer.isBuffer(num)) { - var numArray = num.toArray(); - if (!num.sign && numArray[0] & 0x80) { - numArray.unshift(0); - } - num = new Buffer(numArray); - } - - if (Buffer.isBuffer(num)) { - var size = num.length; - if (num.length === 0) - size++; - - var out = new Buffer(size); - num.copy(out); - if (num.length === 0) - out[0] = 0 - return this._createEncoderBuffer(out); - } - - if (num < 0x80) - return this._createEncoderBuffer(num); - - if (num < 0x100) - return this._createEncoderBuffer([0, num]); - - var size = 1; - for (var i = num; i >= 0x100; i >>= 8) - size++; - - var out = new Array(size); - for (var i = out.length - 1; i >= 0; i--) { - out[i] = num & 0xff; - num >>= 8; - } - if(out[0] & 0x80) { - out.unshift(0); - } - - return this._createEncoderBuffer(new Buffer(out)); -}; - -DERNode.prototype._encodeBool = function encodeBool(value) { - return this._createEncoderBuffer(value ? 0xff : 0); -}; - -DERNode.prototype._use = function use(entity, obj) { - if (typeof entity === 'function') - entity = entity(obj); - return entity._getEncoder('der').tree; -}; - -DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) { - var state = this._baseState; - var i; - if (state['default'] === null) - return false; - - var data = dataBuffer.join(); - if (state.defaultBuffer === undefined) - state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join(); - - if (data.length !== state.defaultBuffer.length) - return false; - - for (i=0; i < data.length; i++) - if (data[i] !== state.defaultBuffer[i]) - return false; - - return true; -}; - -// Utility methods - -function encodeTag(tag, primitive, cls, reporter) { - var res; - - if (tag === 'seqof') - tag = 'seq'; - else if (tag === 'setof') - tag = 'set'; - - if (der.tagByName.hasOwnProperty(tag)) - res = der.tagByName[tag]; - else if (typeof tag === 'number' && (tag | 0) === tag) - res = tag; - else - return reporter.error('Unknown tag: ' + tag); - - if (res >= 0x1f) - return reporter.error('Multi-octet tag encoding unsupported'); - - if (!primitive) - res |= 0x20; - - res |= (der.tagClassByName[cls || 'universal'] << 6); - - return res; -} - -},{"../../asn1":132,"buffer":182,"inherits":262}],144:[function(require,module,exports){ -var encoders = exports; - -encoders.der = require('./der'); -encoders.pem = require('./pem'); - -},{"./der":143,"./pem":145}],145:[function(require,module,exports){ -var inherits = require('inherits'); - -var DEREncoder = require('./der'); - -function PEMEncoder(entity) { - DEREncoder.call(this, entity); - this.enc = 'pem'; -}; -inherits(PEMEncoder, DEREncoder); -module.exports = PEMEncoder; - -PEMEncoder.prototype.encode = function encode(data, options) { - var buf = DEREncoder.prototype.encode.call(this, data); - - var p = buf.toString('base64'); - var out = [ '-----BEGIN ' + options.label + '-----' ]; - for (var i = 0; i < p.length; i += 64) - out.push(p.slice(i, i + 64)); - out.push('-----END ' + options.label + '-----'); - return out.join('\n'); -}; - -},{"./der":143,"inherits":262}],146:[function(require,module,exports){ -'use strict' - -exports.byteLength = byteLength -exports.toByteArray = toByteArray -exports.fromByteArray = fromByteArray - -var lookup = [] -var revLookup = [] -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array - -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] - revLookup[code.charCodeAt(i)] = i -} - -// Support decoding URL-safe base64 strings, as Node.js does. -// See: https://en.wikipedia.org/wiki/Base64#URL_applications -revLookup['-'.charCodeAt(0)] = 62 -revLookup['_'.charCodeAt(0)] = 63 - -function getLens (b64) { - var len = b64.length - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - var validLen = b64.indexOf('=') - if (validLen === -1) validLen = len - - var placeHoldersLen = validLen === len - ? 0 - : 4 - (validLen % 4) - - return [validLen, placeHoldersLen] -} - -// base64 is 4/3 + up to two characters of the original data -function byteLength (b64) { - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function _byteLength (b64, validLen, placeHoldersLen) { - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function toByteArray (b64) { - var tmp - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) - - var curByte = 0 - - // if there are placeholders, only get up to the last complete 4 chars - var len = placeHoldersLen > 0 - ? validLen - 4 - : validLen - - var i - for (i = 0; i < len; i += 4) { - tmp = - (revLookup[b64.charCodeAt(i)] << 18) | - (revLookup[b64.charCodeAt(i + 1)] << 12) | - (revLookup[b64.charCodeAt(i + 2)] << 6) | - revLookup[b64.charCodeAt(i + 3)] - arr[curByte++] = (tmp >> 16) & 0xFF - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 2) { - tmp = - (revLookup[b64.charCodeAt(i)] << 2) | - (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 1) { - tmp = - (revLookup[b64.charCodeAt(i)] << 10) | - (revLookup[b64.charCodeAt(i + 1)] << 4) | - (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk( - uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) - )) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1] - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ) - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1] - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ) - } - - return parts.join('') -} - -},{}],147:[function(require,module,exports){ -(function (module, exports) { - 'use strict'; - - // Utils - function assert (val, msg) { - if (!val) throw new Error(msg || 'Assertion failed'); - } - - // Could use `inherits` module, but don't want to move from single file - // architecture yet. - function inherits (ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - } - - // BN - - function BN (number, base, endian) { - if (BN.isBN(number)) { - return number; - } - - this.negative = 0; - this.words = null; - this.length = 0; - - // Reduction context - this.red = null; - - if (number !== null) { - if (base === 'le' || base === 'be') { - endian = base; - base = 10; - } - - this._init(number || 0, base || 10, endian || 'be'); - } - } - if (typeof module === 'object') { - module.exports = BN; - } else { - exports.BN = BN; - } - - BN.BN = BN; - BN.wordSize = 26; - - var Buffer; - try { - Buffer = require('buffer').Buffer; - } catch (e) { - } - - BN.isBN = function isBN (num) { - if (num instanceof BN) { - return true; - } - - return num !== null && typeof num === 'object' && - num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); - }; - - BN.max = function max (left, right) { - if (left.cmp(right) > 0) return left; - return right; - }; - - BN.min = function min (left, right) { - if (left.cmp(right) < 0) return left; - return right; - }; - - BN.prototype._init = function init (number, base, endian) { - if (typeof number === 'number') { - return this._initNumber(number, base, endian); - } - - if (typeof number === 'object') { - return this._initArray(number, base, endian); - } - - if (base === 'hex') { - base = 16; - } - assert(base === (base | 0) && base >= 2 && base <= 36); - - number = number.toString().replace(/\s+/g, ''); - var start = 0; - if (number[0] === '-') { - start++; - } - - if (base === 16) { - this._parseHex(number, start); - } else { - this._parseBase(number, base, start); - } - - if (number[0] === '-') { - this.negative = 1; - } - - this.strip(); - - if (endian !== 'le') return; - - this._initArray(this.toArray(), base, endian); - }; - - BN.prototype._initNumber = function _initNumber (number, base, endian) { - if (number < 0) { - this.negative = 1; - number = -number; - } - if (number < 0x4000000) { - this.words = [ number & 0x3ffffff ]; - this.length = 1; - } else if (number < 0x10000000000000) { - this.words = [ - number & 0x3ffffff, - (number / 0x4000000) & 0x3ffffff - ]; - this.length = 2; - } else { - assert(number < 0x20000000000000); // 2 ^ 53 (unsafe) - this.words = [ - number & 0x3ffffff, - (number / 0x4000000) & 0x3ffffff, - 1 - ]; - this.length = 3; - } - - if (endian !== 'le') return; - - // Reverse the bytes - this._initArray(this.toArray(), base, endian); - }; - - BN.prototype._initArray = function _initArray (number, base, endian) { - // Perhaps a Uint8Array - assert(typeof number.length === 'number'); - if (number.length <= 0) { - this.words = [ 0 ]; - this.length = 1; - return this; - } - - this.length = Math.ceil(number.length / 3); - this.words = new Array(this.length); - for (var i = 0; i < this.length; i++) { - this.words[i] = 0; - } - - var j, w; - var off = 0; - if (endian === 'be') { - for (i = number.length - 1, j = 0; i >= 0; i -= 3) { - w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16); - this.words[j] |= (w << off) & 0x3ffffff; - this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; - off += 24; - if (off >= 26) { - off -= 26; - j++; - } - } - } else if (endian === 'le') { - for (i = 0, j = 0; i < number.length; i += 3) { - w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16); - this.words[j] |= (w << off) & 0x3ffffff; - this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; - off += 24; - if (off >= 26) { - off -= 26; - j++; - } - } - } - return this.strip(); - }; - - function parseHex (str, start, end) { - var r = 0; - var len = Math.min(str.length, end); - for (var i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - - r <<= 4; - - // 'a' - 'f' - if (c >= 49 && c <= 54) { - r |= c - 49 + 0xa; - - // 'A' - 'F' - } else if (c >= 17 && c <= 22) { - r |= c - 17 + 0xa; - - // '0' - '9' - } else { - r |= c & 0xf; - } - } - return r; - } - - BN.prototype._parseHex = function _parseHex (number, start) { - // Create possibly bigger array to ensure that it fits the number - this.length = Math.ceil((number.length - start) / 6); - this.words = new Array(this.length); - for (var i = 0; i < this.length; i++) { - this.words[i] = 0; - } - - var j, w; - // Scan 24-bit chunks and add them to the number - var off = 0; - for (i = number.length - 6, j = 0; i >= start; i -= 6) { - w = parseHex(number, i, i + 6); - this.words[j] |= (w << off) & 0x3ffffff; - // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb - this.words[j + 1] |= w >>> (26 - off) & 0x3fffff; - off += 24; - if (off >= 26) { - off -= 26; - j++; - } - } - if (i + 6 !== start) { - w = parseHex(number, start, i + 6); - this.words[j] |= (w << off) & 0x3ffffff; - this.words[j + 1] |= w >>> (26 - off) & 0x3fffff; - } - this.strip(); - }; - - function parseBase (str, start, end, mul) { - var r = 0; - var len = Math.min(str.length, end); - for (var i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - - r *= mul; - - // 'a' - if (c >= 49) { - r += c - 49 + 0xa; - - // 'A' - } else if (c >= 17) { - r += c - 17 + 0xa; - - // '0' - '9' - } else { - r += c; - } - } - return r; - } - - BN.prototype._parseBase = function _parseBase (number, base, start) { - // Initialize as zero - this.words = [ 0 ]; - this.length = 1; - - // Find length of limb in base - for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) { - limbLen++; - } - limbLen--; - limbPow = (limbPow / base) | 0; - - var total = number.length - start; - var mod = total % limbLen; - var end = Math.min(total, total - mod) + start; - - var word = 0; - for (var i = start; i < end; i += limbLen) { - word = parseBase(number, i, i + limbLen, base); - - this.imuln(limbPow); - if (this.words[0] + word < 0x4000000) { - this.words[0] += word; - } else { - this._iaddn(word); - } - } - - if (mod !== 0) { - var pow = 1; - word = parseBase(number, i, number.length, base); - - for (i = 0; i < mod; i++) { - pow *= base; - } - - this.imuln(pow); - if (this.words[0] + word < 0x4000000) { - this.words[0] += word; - } else { - this._iaddn(word); - } - } - }; - - BN.prototype.copy = function copy (dest) { - dest.words = new Array(this.length); - for (var i = 0; i < this.length; i++) { - dest.words[i] = this.words[i]; - } - dest.length = this.length; - dest.negative = this.negative; - dest.red = this.red; - }; - - BN.prototype.clone = function clone () { - var r = new BN(null); - this.copy(r); - return r; - }; - - BN.prototype._expand = function _expand (size) { - while (this.length < size) { - this.words[this.length++] = 0; - } - return this; - }; - - // Remove leading `0` from `this` - BN.prototype.strip = function strip () { - while (this.length > 1 && this.words[this.length - 1] === 0) { - this.length--; - } - return this._normSign(); - }; - - BN.prototype._normSign = function _normSign () { - // -0 = 0 - if (this.length === 1 && this.words[0] === 0) { - this.negative = 0; - } - return this; - }; - - BN.prototype.inspect = function inspect () { - return (this.red ? ''; - }; - - /* - - var zeros = []; - var groupSizes = []; - var groupBases = []; - - var s = ''; - var i = -1; - while (++i < BN.wordSize) { - zeros[i] = s; - s += '0'; - } - groupSizes[0] = 0; - groupSizes[1] = 0; - groupBases[0] = 0; - groupBases[1] = 0; - var base = 2 - 1; - while (++base < 36 + 1) { - var groupSize = 0; - var groupBase = 1; - while (groupBase < (1 << BN.wordSize) / base) { - groupBase *= base; - groupSize += 1; - } - groupSizes[base] = groupSize; - groupBases[base] = groupBase; - } - - */ - - var zeros = [ - '', - '0', - '00', - '000', - '0000', - '00000', - '000000', - '0000000', - '00000000', - '000000000', - '0000000000', - '00000000000', - '000000000000', - '0000000000000', - '00000000000000', - '000000000000000', - '0000000000000000', - '00000000000000000', - '000000000000000000', - '0000000000000000000', - '00000000000000000000', - '000000000000000000000', - '0000000000000000000000', - '00000000000000000000000', - '000000000000000000000000', - '0000000000000000000000000' - ]; - - var groupSizes = [ - 0, 0, - 25, 16, 12, 11, 10, 9, 8, - 8, 7, 7, 7, 7, 6, 6, - 6, 6, 6, 6, 6, 5, 5, - 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5 - ]; - - var groupBases = [ - 0, 0, - 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, - 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, - 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, - 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, - 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 - ]; - - BN.prototype.toString = function toString (base, padding) { - base = base || 10; - padding = padding | 0 || 1; - - var out; - if (base === 16 || base === 'hex') { - out = ''; - var off = 0; - var carry = 0; - for (var i = 0; i < this.length; i++) { - var w = this.words[i]; - var word = (((w << off) | carry) & 0xffffff).toString(16); - carry = (w >>> (24 - off)) & 0xffffff; - if (carry !== 0 || i !== this.length - 1) { - out = zeros[6 - word.length] + word + out; - } else { - out = word + out; - } - off += 2; - if (off >= 26) { - off -= 26; - i--; - } - } - if (carry !== 0) { - out = carry.toString(16) + out; - } - while (out.length % padding !== 0) { - out = '0' + out; - } - if (this.negative !== 0) { - out = '-' + out; - } - return out; - } - - if (base === (base | 0) && base >= 2 && base <= 36) { - // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base)); - var groupSize = groupSizes[base]; - // var groupBase = Math.pow(base, groupSize); - var groupBase = groupBases[base]; - out = ''; - var c = this.clone(); - c.negative = 0; - while (!c.isZero()) { - var r = c.modn(groupBase).toString(base); - c = c.idivn(groupBase); - - if (!c.isZero()) { - out = zeros[groupSize - r.length] + r + out; - } else { - out = r + out; - } - } - if (this.isZero()) { - out = '0' + out; - } - while (out.length % padding !== 0) { - out = '0' + out; - } - if (this.negative !== 0) { - out = '-' + out; - } - return out; - } - - assert(false, 'Base should be between 2 and 36'); - }; - - BN.prototype.toNumber = function toNumber () { - var ret = this.words[0]; - if (this.length === 2) { - ret += this.words[1] * 0x4000000; - } else if (this.length === 3 && this.words[2] === 0x01) { - // NOTE: at this stage it is known that the top bit is set - ret += 0x10000000000000 + (this.words[1] * 0x4000000); - } else if (this.length > 2) { - assert(false, 'Number can only safely store up to 53 bits'); - } - return (this.negative !== 0) ? -ret : ret; - }; - - BN.prototype.toJSON = function toJSON () { - return this.toString(16); - }; - - BN.prototype.toBuffer = function toBuffer (endian, length) { - assert(typeof Buffer !== 'undefined'); - return this.toArrayLike(Buffer, endian, length); - }; - - BN.prototype.toArray = function toArray (endian, length) { - return this.toArrayLike(Array, endian, length); - }; - - BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) { - var byteLength = this.byteLength(); - var reqLength = length || Math.max(1, byteLength); - assert(byteLength <= reqLength, 'byte array longer than desired length'); - assert(reqLength > 0, 'Requested array length <= 0'); - - this.strip(); - var littleEndian = endian === 'le'; - var res = new ArrayType(reqLength); - - var b, i; - var q = this.clone(); - if (!littleEndian) { - // Assume big-endian - for (i = 0; i < reqLength - byteLength; i++) { - res[i] = 0; - } - - for (i = 0; !q.isZero(); i++) { - b = q.andln(0xff); - q.iushrn(8); - - res[reqLength - i - 1] = b; - } - } else { - for (i = 0; !q.isZero(); i++) { - b = q.andln(0xff); - q.iushrn(8); - - res[i] = b; - } - - for (; i < reqLength; i++) { - res[i] = 0; - } - } - - return res; - }; - - if (Math.clz32) { - BN.prototype._countBits = function _countBits (w) { - return 32 - Math.clz32(w); - }; - } else { - BN.prototype._countBits = function _countBits (w) { - var t = w; - var r = 0; - if (t >= 0x1000) { - r += 13; - t >>>= 13; - } - if (t >= 0x40) { - r += 7; - t >>>= 7; - } - if (t >= 0x8) { - r += 4; - t >>>= 4; - } - if (t >= 0x02) { - r += 2; - t >>>= 2; - } - return r + t; - }; - } - - BN.prototype._zeroBits = function _zeroBits (w) { - // Short-cut - if (w === 0) return 26; - - var t = w; - var r = 0; - if ((t & 0x1fff) === 0) { - r += 13; - t >>>= 13; - } - if ((t & 0x7f) === 0) { - r += 7; - t >>>= 7; - } - if ((t & 0xf) === 0) { - r += 4; - t >>>= 4; - } - if ((t & 0x3) === 0) { - r += 2; - t >>>= 2; - } - if ((t & 0x1) === 0) { - r++; - } - return r; - }; - - // Return number of used bits in a BN - BN.prototype.bitLength = function bitLength () { - var w = this.words[this.length - 1]; - var hi = this._countBits(w); - return (this.length - 1) * 26 + hi; - }; - - function toBitArray (num) { - var w = new Array(num.bitLength()); - - for (var bit = 0; bit < w.length; bit++) { - var off = (bit / 26) | 0; - var wbit = bit % 26; - - w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; - } - - return w; - } - - // Number of trailing zero bits - BN.prototype.zeroBits = function zeroBits () { - if (this.isZero()) return 0; - - var r = 0; - for (var i = 0; i < this.length; i++) { - var b = this._zeroBits(this.words[i]); - r += b; - if (b !== 26) break; - } - return r; - }; - - BN.prototype.byteLength = function byteLength () { - return Math.ceil(this.bitLength() / 8); - }; - - BN.prototype.toTwos = function toTwos (width) { - if (this.negative !== 0) { - return this.abs().inotn(width).iaddn(1); - } - return this.clone(); - }; - - BN.prototype.fromTwos = function fromTwos (width) { - if (this.testn(width - 1)) { - return this.notn(width).iaddn(1).ineg(); - } - return this.clone(); - }; - - BN.prototype.isNeg = function isNeg () { - return this.negative !== 0; - }; - - // Return negative clone of `this` - BN.prototype.neg = function neg () { - return this.clone().ineg(); - }; - - BN.prototype.ineg = function ineg () { - if (!this.isZero()) { - this.negative ^= 1; - } - - return this; - }; - - // Or `num` with `this` in-place - BN.prototype.iuor = function iuor (num) { - while (this.length < num.length) { - this.words[this.length++] = 0; - } - - for (var i = 0; i < num.length; i++) { - this.words[i] = this.words[i] | num.words[i]; - } - - return this.strip(); - }; - - BN.prototype.ior = function ior (num) { - assert((this.negative | num.negative) === 0); - return this.iuor(num); - }; - - // Or `num` with `this` - BN.prototype.or = function or (num) { - if (this.length > num.length) return this.clone().ior(num); - return num.clone().ior(this); - }; - - BN.prototype.uor = function uor (num) { - if (this.length > num.length) return this.clone().iuor(num); - return num.clone().iuor(this); - }; - - // And `num` with `this` in-place - BN.prototype.iuand = function iuand (num) { - // b = min-length(num, this) - var b; - if (this.length > num.length) { - b = num; - } else { - b = this; - } - - for (var i = 0; i < b.length; i++) { - this.words[i] = this.words[i] & num.words[i]; - } - - this.length = b.length; - - return this.strip(); - }; - - BN.prototype.iand = function iand (num) { - assert((this.negative | num.negative) === 0); - return this.iuand(num); - }; - - // And `num` with `this` - BN.prototype.and = function and (num) { - if (this.length > num.length) return this.clone().iand(num); - return num.clone().iand(this); - }; - - BN.prototype.uand = function uand (num) { - if (this.length > num.length) return this.clone().iuand(num); - return num.clone().iuand(this); - }; - - // Xor `num` with `this` in-place - BN.prototype.iuxor = function iuxor (num) { - // a.length > b.length - var a; - var b; - if (this.length > num.length) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - for (var i = 0; i < b.length; i++) { - this.words[i] = a.words[i] ^ b.words[i]; - } - - if (this !== a) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - this.length = a.length; - - return this.strip(); - }; - - BN.prototype.ixor = function ixor (num) { - assert((this.negative | num.negative) === 0); - return this.iuxor(num); - }; - - // Xor `num` with `this` - BN.prototype.xor = function xor (num) { - if (this.length > num.length) return this.clone().ixor(num); - return num.clone().ixor(this); - }; - - BN.prototype.uxor = function uxor (num) { - if (this.length > num.length) return this.clone().iuxor(num); - return num.clone().iuxor(this); - }; - - // Not ``this`` with ``width`` bitwidth - BN.prototype.inotn = function inotn (width) { - assert(typeof width === 'number' && width >= 0); - - var bytesNeeded = Math.ceil(width / 26) | 0; - var bitsLeft = width % 26; - - // Extend the buffer with leading zeroes - this._expand(bytesNeeded); - - if (bitsLeft > 0) { - bytesNeeded--; - } - - // Handle complete words - for (var i = 0; i < bytesNeeded; i++) { - this.words[i] = ~this.words[i] & 0x3ffffff; - } - - // Handle the residue - if (bitsLeft > 0) { - this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft)); - } - - // And remove leading zeroes - return this.strip(); - }; - - BN.prototype.notn = function notn (width) { - return this.clone().inotn(width); - }; - - // Set `bit` of `this` - BN.prototype.setn = function setn (bit, val) { - assert(typeof bit === 'number' && bit >= 0); - - var off = (bit / 26) | 0; - var wbit = bit % 26; - - this._expand(off + 1); - - if (val) { - this.words[off] = this.words[off] | (1 << wbit); - } else { - this.words[off] = this.words[off] & ~(1 << wbit); - } - - return this.strip(); - }; - - // Add `num` to `this` in-place - BN.prototype.iadd = function iadd (num) { - var r; - - // negative + positive - if (this.negative !== 0 && num.negative === 0) { - this.negative = 0; - r = this.isub(num); - this.negative ^= 1; - return this._normSign(); - - // positive + negative - } else if (this.negative === 0 && num.negative !== 0) { - num.negative = 0; - r = this.isub(num); - num.negative = 1; - return r._normSign(); - } - - // a.length > b.length - var a, b; - if (this.length > num.length) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - var carry = 0; - for (var i = 0; i < b.length; i++) { - r = (a.words[i] | 0) + (b.words[i] | 0) + carry; - this.words[i] = r & 0x3ffffff; - carry = r >>> 26; - } - for (; carry !== 0 && i < a.length; i++) { - r = (a.words[i] | 0) + carry; - this.words[i] = r & 0x3ffffff; - carry = r >>> 26; - } - - this.length = a.length; - if (carry !== 0) { - this.words[this.length] = carry; - this.length++; - // Copy the rest of the words - } else if (a !== this) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - return this; - }; - - // Add `num` to `this` - BN.prototype.add = function add (num) { - var res; - if (num.negative !== 0 && this.negative === 0) { - num.negative = 0; - res = this.sub(num); - num.negative ^= 1; - return res; - } else if (num.negative === 0 && this.negative !== 0) { - this.negative = 0; - res = num.sub(this); - this.negative = 1; - return res; - } - - if (this.length > num.length) return this.clone().iadd(num); - - return num.clone().iadd(this); - }; - - // Subtract `num` from `this` in-place - BN.prototype.isub = function isub (num) { - // this - (-num) = this + num - if (num.negative !== 0) { - num.negative = 0; - var r = this.iadd(num); - num.negative = 1; - return r._normSign(); - - // -this - num = -(this + num) - } else if (this.negative !== 0) { - this.negative = 0; - this.iadd(num); - this.negative = 1; - return this._normSign(); - } - - // At this point both numbers are positive - var cmp = this.cmp(num); - - // Optimization - zeroify - if (cmp === 0) { - this.negative = 0; - this.length = 1; - this.words[0] = 0; - return this; - } - - // a > b - var a, b; - if (cmp > 0) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - var carry = 0; - for (var i = 0; i < b.length; i++) { - r = (a.words[i] | 0) - (b.words[i] | 0) + carry; - carry = r >> 26; - this.words[i] = r & 0x3ffffff; - } - for (; carry !== 0 && i < a.length; i++) { - r = (a.words[i] | 0) + carry; - carry = r >> 26; - this.words[i] = r & 0x3ffffff; - } - - // Copy rest of the words - if (carry === 0 && i < a.length && a !== this) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - this.length = Math.max(this.length, i); - - if (a !== this) { - this.negative = 1; - } - - return this.strip(); - }; - - // Subtract `num` from `this` - BN.prototype.sub = function sub (num) { - return this.clone().isub(num); - }; - - function smallMulTo (self, num, out) { - out.negative = num.negative ^ self.negative; - var len = (self.length + num.length) | 0; - out.length = len; - len = (len - 1) | 0; - - // Peel one iteration (compiler can't do it, because of code complexity) - var a = self.words[0] | 0; - var b = num.words[0] | 0; - var r = a * b; - - var lo = r & 0x3ffffff; - var carry = (r / 0x4000000) | 0; - out.words[0] = lo; - - for (var k = 1; k < len; k++) { - // Sum all words with the same `i + j = k` and accumulate `ncarry`, - // note that ncarry could be >= 0x3ffffff - var ncarry = carry >>> 26; - var rword = carry & 0x3ffffff; - var maxJ = Math.min(k, num.length - 1); - for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { - var i = (k - j) | 0; - a = self.words[i] | 0; - b = num.words[j] | 0; - r = a * b + rword; - ncarry += (r / 0x4000000) | 0; - rword = r & 0x3ffffff; - } - out.words[k] = rword | 0; - carry = ncarry | 0; - } - if (carry !== 0) { - out.words[k] = carry | 0; - } else { - out.length--; - } - - return out.strip(); - } - - // TODO(indutny): it may be reasonable to omit it for users who don't need - // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit - // multiplication (like elliptic secp256k1). - var comb10MulTo = function comb10MulTo (self, num, out) { - var a = self.words; - var b = num.words; - var o = out.words; - var c = 0; - var lo; - var mid; - var hi; - var a0 = a[0] | 0; - var al0 = a0 & 0x1fff; - var ah0 = a0 >>> 13; - var a1 = a[1] | 0; - var al1 = a1 & 0x1fff; - var ah1 = a1 >>> 13; - var a2 = a[2] | 0; - var al2 = a2 & 0x1fff; - var ah2 = a2 >>> 13; - var a3 = a[3] | 0; - var al3 = a3 & 0x1fff; - var ah3 = a3 >>> 13; - var a4 = a[4] | 0; - var al4 = a4 & 0x1fff; - var ah4 = a4 >>> 13; - var a5 = a[5] | 0; - var al5 = a5 & 0x1fff; - var ah5 = a5 >>> 13; - var a6 = a[6] | 0; - var al6 = a6 & 0x1fff; - var ah6 = a6 >>> 13; - var a7 = a[7] | 0; - var al7 = a7 & 0x1fff; - var ah7 = a7 >>> 13; - var a8 = a[8] | 0; - var al8 = a8 & 0x1fff; - var ah8 = a8 >>> 13; - var a9 = a[9] | 0; - var al9 = a9 & 0x1fff; - var ah9 = a9 >>> 13; - var b0 = b[0] | 0; - var bl0 = b0 & 0x1fff; - var bh0 = b0 >>> 13; - var b1 = b[1] | 0; - var bl1 = b1 & 0x1fff; - var bh1 = b1 >>> 13; - var b2 = b[2] | 0; - var bl2 = b2 & 0x1fff; - var bh2 = b2 >>> 13; - var b3 = b[3] | 0; - var bl3 = b3 & 0x1fff; - var bh3 = b3 >>> 13; - var b4 = b[4] | 0; - var bl4 = b4 & 0x1fff; - var bh4 = b4 >>> 13; - var b5 = b[5] | 0; - var bl5 = b5 & 0x1fff; - var bh5 = b5 >>> 13; - var b6 = b[6] | 0; - var bl6 = b6 & 0x1fff; - var bh6 = b6 >>> 13; - var b7 = b[7] | 0; - var bl7 = b7 & 0x1fff; - var bh7 = b7 >>> 13; - var b8 = b[8] | 0; - var bl8 = b8 & 0x1fff; - var bh8 = b8 >>> 13; - var b9 = b[9] | 0; - var bl9 = b9 & 0x1fff; - var bh9 = b9 >>> 13; - - out.negative = self.negative ^ num.negative; - out.length = 19; - /* k = 0 */ - lo = Math.imul(al0, bl0); - mid = Math.imul(al0, bh0); - mid = (mid + Math.imul(ah0, bl0)) | 0; - hi = Math.imul(ah0, bh0); - var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0; - w0 &= 0x3ffffff; - /* k = 1 */ - lo = Math.imul(al1, bl0); - mid = Math.imul(al1, bh0); - mid = (mid + Math.imul(ah1, bl0)) | 0; - hi = Math.imul(ah1, bh0); - lo = (lo + Math.imul(al0, bl1)) | 0; - mid = (mid + Math.imul(al0, bh1)) | 0; - mid = (mid + Math.imul(ah0, bl1)) | 0; - hi = (hi + Math.imul(ah0, bh1)) | 0; - var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0; - w1 &= 0x3ffffff; - /* k = 2 */ - lo = Math.imul(al2, bl0); - mid = Math.imul(al2, bh0); - mid = (mid + Math.imul(ah2, bl0)) | 0; - hi = Math.imul(ah2, bh0); - lo = (lo + Math.imul(al1, bl1)) | 0; - mid = (mid + Math.imul(al1, bh1)) | 0; - mid = (mid + Math.imul(ah1, bl1)) | 0; - hi = (hi + Math.imul(ah1, bh1)) | 0; - lo = (lo + Math.imul(al0, bl2)) | 0; - mid = (mid + Math.imul(al0, bh2)) | 0; - mid = (mid + Math.imul(ah0, bl2)) | 0; - hi = (hi + Math.imul(ah0, bh2)) | 0; - var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0; - w2 &= 0x3ffffff; - /* k = 3 */ - lo = Math.imul(al3, bl0); - mid = Math.imul(al3, bh0); - mid = (mid + Math.imul(ah3, bl0)) | 0; - hi = Math.imul(ah3, bh0); - lo = (lo + Math.imul(al2, bl1)) | 0; - mid = (mid + Math.imul(al2, bh1)) | 0; - mid = (mid + Math.imul(ah2, bl1)) | 0; - hi = (hi + Math.imul(ah2, bh1)) | 0; - lo = (lo + Math.imul(al1, bl2)) | 0; - mid = (mid + Math.imul(al1, bh2)) | 0; - mid = (mid + Math.imul(ah1, bl2)) | 0; - hi = (hi + Math.imul(ah1, bh2)) | 0; - lo = (lo + Math.imul(al0, bl3)) | 0; - mid = (mid + Math.imul(al0, bh3)) | 0; - mid = (mid + Math.imul(ah0, bl3)) | 0; - hi = (hi + Math.imul(ah0, bh3)) | 0; - var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0; - w3 &= 0x3ffffff; - /* k = 4 */ - lo = Math.imul(al4, bl0); - mid = Math.imul(al4, bh0); - mid = (mid + Math.imul(ah4, bl0)) | 0; - hi = Math.imul(ah4, bh0); - lo = (lo + Math.imul(al3, bl1)) | 0; - mid = (mid + Math.imul(al3, bh1)) | 0; - mid = (mid + Math.imul(ah3, bl1)) | 0; - hi = (hi + Math.imul(ah3, bh1)) | 0; - lo = (lo + Math.imul(al2, bl2)) | 0; - mid = (mid + Math.imul(al2, bh2)) | 0; - mid = (mid + Math.imul(ah2, bl2)) | 0; - hi = (hi + Math.imul(ah2, bh2)) | 0; - lo = (lo + Math.imul(al1, bl3)) | 0; - mid = (mid + Math.imul(al1, bh3)) | 0; - mid = (mid + Math.imul(ah1, bl3)) | 0; - hi = (hi + Math.imul(ah1, bh3)) | 0; - lo = (lo + Math.imul(al0, bl4)) | 0; - mid = (mid + Math.imul(al0, bh4)) | 0; - mid = (mid + Math.imul(ah0, bl4)) | 0; - hi = (hi + Math.imul(ah0, bh4)) | 0; - var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0; - w4 &= 0x3ffffff; - /* k = 5 */ - lo = Math.imul(al5, bl0); - mid = Math.imul(al5, bh0); - mid = (mid + Math.imul(ah5, bl0)) | 0; - hi = Math.imul(ah5, bh0); - lo = (lo + Math.imul(al4, bl1)) | 0; - mid = (mid + Math.imul(al4, bh1)) | 0; - mid = (mid + Math.imul(ah4, bl1)) | 0; - hi = (hi + Math.imul(ah4, bh1)) | 0; - lo = (lo + Math.imul(al3, bl2)) | 0; - mid = (mid + Math.imul(al3, bh2)) | 0; - mid = (mid + Math.imul(ah3, bl2)) | 0; - hi = (hi + Math.imul(ah3, bh2)) | 0; - lo = (lo + Math.imul(al2, bl3)) | 0; - mid = (mid + Math.imul(al2, bh3)) | 0; - mid = (mid + Math.imul(ah2, bl3)) | 0; - hi = (hi + Math.imul(ah2, bh3)) | 0; - lo = (lo + Math.imul(al1, bl4)) | 0; - mid = (mid + Math.imul(al1, bh4)) | 0; - mid = (mid + Math.imul(ah1, bl4)) | 0; - hi = (hi + Math.imul(ah1, bh4)) | 0; - lo = (lo + Math.imul(al0, bl5)) | 0; - mid = (mid + Math.imul(al0, bh5)) | 0; - mid = (mid + Math.imul(ah0, bl5)) | 0; - hi = (hi + Math.imul(ah0, bh5)) | 0; - var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0; - w5 &= 0x3ffffff; - /* k = 6 */ - lo = Math.imul(al6, bl0); - mid = Math.imul(al6, bh0); - mid = (mid + Math.imul(ah6, bl0)) | 0; - hi = Math.imul(ah6, bh0); - lo = (lo + Math.imul(al5, bl1)) | 0; - mid = (mid + Math.imul(al5, bh1)) | 0; - mid = (mid + Math.imul(ah5, bl1)) | 0; - hi = (hi + Math.imul(ah5, bh1)) | 0; - lo = (lo + Math.imul(al4, bl2)) | 0; - mid = (mid + Math.imul(al4, bh2)) | 0; - mid = (mid + Math.imul(ah4, bl2)) | 0; - hi = (hi + Math.imul(ah4, bh2)) | 0; - lo = (lo + Math.imul(al3, bl3)) | 0; - mid = (mid + Math.imul(al3, bh3)) | 0; - mid = (mid + Math.imul(ah3, bl3)) | 0; - hi = (hi + Math.imul(ah3, bh3)) | 0; - lo = (lo + Math.imul(al2, bl4)) | 0; - mid = (mid + Math.imul(al2, bh4)) | 0; - mid = (mid + Math.imul(ah2, bl4)) | 0; - hi = (hi + Math.imul(ah2, bh4)) | 0; - lo = (lo + Math.imul(al1, bl5)) | 0; - mid = (mid + Math.imul(al1, bh5)) | 0; - mid = (mid + Math.imul(ah1, bl5)) | 0; - hi = (hi + Math.imul(ah1, bh5)) | 0; - lo = (lo + Math.imul(al0, bl6)) | 0; - mid = (mid + Math.imul(al0, bh6)) | 0; - mid = (mid + Math.imul(ah0, bl6)) | 0; - hi = (hi + Math.imul(ah0, bh6)) | 0; - var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0; - w6 &= 0x3ffffff; - /* k = 7 */ - lo = Math.imul(al7, bl0); - mid = Math.imul(al7, bh0); - mid = (mid + Math.imul(ah7, bl0)) | 0; - hi = Math.imul(ah7, bh0); - lo = (lo + Math.imul(al6, bl1)) | 0; - mid = (mid + Math.imul(al6, bh1)) | 0; - mid = (mid + Math.imul(ah6, bl1)) | 0; - hi = (hi + Math.imul(ah6, bh1)) | 0; - lo = (lo + Math.imul(al5, bl2)) | 0; - mid = (mid + Math.imul(al5, bh2)) | 0; - mid = (mid + Math.imul(ah5, bl2)) | 0; - hi = (hi + Math.imul(ah5, bh2)) | 0; - lo = (lo + Math.imul(al4, bl3)) | 0; - mid = (mid + Math.imul(al4, bh3)) | 0; - mid = (mid + Math.imul(ah4, bl3)) | 0; - hi = (hi + Math.imul(ah4, bh3)) | 0; - lo = (lo + Math.imul(al3, bl4)) | 0; - mid = (mid + Math.imul(al3, bh4)) | 0; - mid = (mid + Math.imul(ah3, bl4)) | 0; - hi = (hi + Math.imul(ah3, bh4)) | 0; - lo = (lo + Math.imul(al2, bl5)) | 0; - mid = (mid + Math.imul(al2, bh5)) | 0; - mid = (mid + Math.imul(ah2, bl5)) | 0; - hi = (hi + Math.imul(ah2, bh5)) | 0; - lo = (lo + Math.imul(al1, bl6)) | 0; - mid = (mid + Math.imul(al1, bh6)) | 0; - mid = (mid + Math.imul(ah1, bl6)) | 0; - hi = (hi + Math.imul(ah1, bh6)) | 0; - lo = (lo + Math.imul(al0, bl7)) | 0; - mid = (mid + Math.imul(al0, bh7)) | 0; - mid = (mid + Math.imul(ah0, bl7)) | 0; - hi = (hi + Math.imul(ah0, bh7)) | 0; - var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0; - w7 &= 0x3ffffff; - /* k = 8 */ - lo = Math.imul(al8, bl0); - mid = Math.imul(al8, bh0); - mid = (mid + Math.imul(ah8, bl0)) | 0; - hi = Math.imul(ah8, bh0); - lo = (lo + Math.imul(al7, bl1)) | 0; - mid = (mid + Math.imul(al7, bh1)) | 0; - mid = (mid + Math.imul(ah7, bl1)) | 0; - hi = (hi + Math.imul(ah7, bh1)) | 0; - lo = (lo + Math.imul(al6, bl2)) | 0; - mid = (mid + Math.imul(al6, bh2)) | 0; - mid = (mid + Math.imul(ah6, bl2)) | 0; - hi = (hi + Math.imul(ah6, bh2)) | 0; - lo = (lo + Math.imul(al5, bl3)) | 0; - mid = (mid + Math.imul(al5, bh3)) | 0; - mid = (mid + Math.imul(ah5, bl3)) | 0; - hi = (hi + Math.imul(ah5, bh3)) | 0; - lo = (lo + Math.imul(al4, bl4)) | 0; - mid = (mid + Math.imul(al4, bh4)) | 0; - mid = (mid + Math.imul(ah4, bl4)) | 0; - hi = (hi + Math.imul(ah4, bh4)) | 0; - lo = (lo + Math.imul(al3, bl5)) | 0; - mid = (mid + Math.imul(al3, bh5)) | 0; - mid = (mid + Math.imul(ah3, bl5)) | 0; - hi = (hi + Math.imul(ah3, bh5)) | 0; - lo = (lo + Math.imul(al2, bl6)) | 0; - mid = (mid + Math.imul(al2, bh6)) | 0; - mid = (mid + Math.imul(ah2, bl6)) | 0; - hi = (hi + Math.imul(ah2, bh6)) | 0; - lo = (lo + Math.imul(al1, bl7)) | 0; - mid = (mid + Math.imul(al1, bh7)) | 0; - mid = (mid + Math.imul(ah1, bl7)) | 0; - hi = (hi + Math.imul(ah1, bh7)) | 0; - lo = (lo + Math.imul(al0, bl8)) | 0; - mid = (mid + Math.imul(al0, bh8)) | 0; - mid = (mid + Math.imul(ah0, bl8)) | 0; - hi = (hi + Math.imul(ah0, bh8)) | 0; - var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0; - w8 &= 0x3ffffff; - /* k = 9 */ - lo = Math.imul(al9, bl0); - mid = Math.imul(al9, bh0); - mid = (mid + Math.imul(ah9, bl0)) | 0; - hi = Math.imul(ah9, bh0); - lo = (lo + Math.imul(al8, bl1)) | 0; - mid = (mid + Math.imul(al8, bh1)) | 0; - mid = (mid + Math.imul(ah8, bl1)) | 0; - hi = (hi + Math.imul(ah8, bh1)) | 0; - lo = (lo + Math.imul(al7, bl2)) | 0; - mid = (mid + Math.imul(al7, bh2)) | 0; - mid = (mid + Math.imul(ah7, bl2)) | 0; - hi = (hi + Math.imul(ah7, bh2)) | 0; - lo = (lo + Math.imul(al6, bl3)) | 0; - mid = (mid + Math.imul(al6, bh3)) | 0; - mid = (mid + Math.imul(ah6, bl3)) | 0; - hi = (hi + Math.imul(ah6, bh3)) | 0; - lo = (lo + Math.imul(al5, bl4)) | 0; - mid = (mid + Math.imul(al5, bh4)) | 0; - mid = (mid + Math.imul(ah5, bl4)) | 0; - hi = (hi + Math.imul(ah5, bh4)) | 0; - lo = (lo + Math.imul(al4, bl5)) | 0; - mid = (mid + Math.imul(al4, bh5)) | 0; - mid = (mid + Math.imul(ah4, bl5)) | 0; - hi = (hi + Math.imul(ah4, bh5)) | 0; - lo = (lo + Math.imul(al3, bl6)) | 0; - mid = (mid + Math.imul(al3, bh6)) | 0; - mid = (mid + Math.imul(ah3, bl6)) | 0; - hi = (hi + Math.imul(ah3, bh6)) | 0; - lo = (lo + Math.imul(al2, bl7)) | 0; - mid = (mid + Math.imul(al2, bh7)) | 0; - mid = (mid + Math.imul(ah2, bl7)) | 0; - hi = (hi + Math.imul(ah2, bh7)) | 0; - lo = (lo + Math.imul(al1, bl8)) | 0; - mid = (mid + Math.imul(al1, bh8)) | 0; - mid = (mid + Math.imul(ah1, bl8)) | 0; - hi = (hi + Math.imul(ah1, bh8)) | 0; - lo = (lo + Math.imul(al0, bl9)) | 0; - mid = (mid + Math.imul(al0, bh9)) | 0; - mid = (mid + Math.imul(ah0, bl9)) | 0; - hi = (hi + Math.imul(ah0, bh9)) | 0; - var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0; - w9 &= 0x3ffffff; - /* k = 10 */ - lo = Math.imul(al9, bl1); - mid = Math.imul(al9, bh1); - mid = (mid + Math.imul(ah9, bl1)) | 0; - hi = Math.imul(ah9, bh1); - lo = (lo + Math.imul(al8, bl2)) | 0; - mid = (mid + Math.imul(al8, bh2)) | 0; - mid = (mid + Math.imul(ah8, bl2)) | 0; - hi = (hi + Math.imul(ah8, bh2)) | 0; - lo = (lo + Math.imul(al7, bl3)) | 0; - mid = (mid + Math.imul(al7, bh3)) | 0; - mid = (mid + Math.imul(ah7, bl3)) | 0; - hi = (hi + Math.imul(ah7, bh3)) | 0; - lo = (lo + Math.imul(al6, bl4)) | 0; - mid = (mid + Math.imul(al6, bh4)) | 0; - mid = (mid + Math.imul(ah6, bl4)) | 0; - hi = (hi + Math.imul(ah6, bh4)) | 0; - lo = (lo + Math.imul(al5, bl5)) | 0; - mid = (mid + Math.imul(al5, bh5)) | 0; - mid = (mid + Math.imul(ah5, bl5)) | 0; - hi = (hi + Math.imul(ah5, bh5)) | 0; - lo = (lo + Math.imul(al4, bl6)) | 0; - mid = (mid + Math.imul(al4, bh6)) | 0; - mid = (mid + Math.imul(ah4, bl6)) | 0; - hi = (hi + Math.imul(ah4, bh6)) | 0; - lo = (lo + Math.imul(al3, bl7)) | 0; - mid = (mid + Math.imul(al3, bh7)) | 0; - mid = (mid + Math.imul(ah3, bl7)) | 0; - hi = (hi + Math.imul(ah3, bh7)) | 0; - lo = (lo + Math.imul(al2, bl8)) | 0; - mid = (mid + Math.imul(al2, bh8)) | 0; - mid = (mid + Math.imul(ah2, bl8)) | 0; - hi = (hi + Math.imul(ah2, bh8)) | 0; - lo = (lo + Math.imul(al1, bl9)) | 0; - mid = (mid + Math.imul(al1, bh9)) | 0; - mid = (mid + Math.imul(ah1, bl9)) | 0; - hi = (hi + Math.imul(ah1, bh9)) | 0; - var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0; - w10 &= 0x3ffffff; - /* k = 11 */ - lo = Math.imul(al9, bl2); - mid = Math.imul(al9, bh2); - mid = (mid + Math.imul(ah9, bl2)) | 0; - hi = Math.imul(ah9, bh2); - lo = (lo + Math.imul(al8, bl3)) | 0; - mid = (mid + Math.imul(al8, bh3)) | 0; - mid = (mid + Math.imul(ah8, bl3)) | 0; - hi = (hi + Math.imul(ah8, bh3)) | 0; - lo = (lo + Math.imul(al7, bl4)) | 0; - mid = (mid + Math.imul(al7, bh4)) | 0; - mid = (mid + Math.imul(ah7, bl4)) | 0; - hi = (hi + Math.imul(ah7, bh4)) | 0; - lo = (lo + Math.imul(al6, bl5)) | 0; - mid = (mid + Math.imul(al6, bh5)) | 0; - mid = (mid + Math.imul(ah6, bl5)) | 0; - hi = (hi + Math.imul(ah6, bh5)) | 0; - lo = (lo + Math.imul(al5, bl6)) | 0; - mid = (mid + Math.imul(al5, bh6)) | 0; - mid = (mid + Math.imul(ah5, bl6)) | 0; - hi = (hi + Math.imul(ah5, bh6)) | 0; - lo = (lo + Math.imul(al4, bl7)) | 0; - mid = (mid + Math.imul(al4, bh7)) | 0; - mid = (mid + Math.imul(ah4, bl7)) | 0; - hi = (hi + Math.imul(ah4, bh7)) | 0; - lo = (lo + Math.imul(al3, bl8)) | 0; - mid = (mid + Math.imul(al3, bh8)) | 0; - mid = (mid + Math.imul(ah3, bl8)) | 0; - hi = (hi + Math.imul(ah3, bh8)) | 0; - lo = (lo + Math.imul(al2, bl9)) | 0; - mid = (mid + Math.imul(al2, bh9)) | 0; - mid = (mid + Math.imul(ah2, bl9)) | 0; - hi = (hi + Math.imul(ah2, bh9)) | 0; - var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0; - w11 &= 0x3ffffff; - /* k = 12 */ - lo = Math.imul(al9, bl3); - mid = Math.imul(al9, bh3); - mid = (mid + Math.imul(ah9, bl3)) | 0; - hi = Math.imul(ah9, bh3); - lo = (lo + Math.imul(al8, bl4)) | 0; - mid = (mid + Math.imul(al8, bh4)) | 0; - mid = (mid + Math.imul(ah8, bl4)) | 0; - hi = (hi + Math.imul(ah8, bh4)) | 0; - lo = (lo + Math.imul(al7, bl5)) | 0; - mid = (mid + Math.imul(al7, bh5)) | 0; - mid = (mid + Math.imul(ah7, bl5)) | 0; - hi = (hi + Math.imul(ah7, bh5)) | 0; - lo = (lo + Math.imul(al6, bl6)) | 0; - mid = (mid + Math.imul(al6, bh6)) | 0; - mid = (mid + Math.imul(ah6, bl6)) | 0; - hi = (hi + Math.imul(ah6, bh6)) | 0; - lo = (lo + Math.imul(al5, bl7)) | 0; - mid = (mid + Math.imul(al5, bh7)) | 0; - mid = (mid + Math.imul(ah5, bl7)) | 0; - hi = (hi + Math.imul(ah5, bh7)) | 0; - lo = (lo + Math.imul(al4, bl8)) | 0; - mid = (mid + Math.imul(al4, bh8)) | 0; - mid = (mid + Math.imul(ah4, bl8)) | 0; - hi = (hi + Math.imul(ah4, bh8)) | 0; - lo = (lo + Math.imul(al3, bl9)) | 0; - mid = (mid + Math.imul(al3, bh9)) | 0; - mid = (mid + Math.imul(ah3, bl9)) | 0; - hi = (hi + Math.imul(ah3, bh9)) | 0; - var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0; - w12 &= 0x3ffffff; - /* k = 13 */ - lo = Math.imul(al9, bl4); - mid = Math.imul(al9, bh4); - mid = (mid + Math.imul(ah9, bl4)) | 0; - hi = Math.imul(ah9, bh4); - lo = (lo + Math.imul(al8, bl5)) | 0; - mid = (mid + Math.imul(al8, bh5)) | 0; - mid = (mid + Math.imul(ah8, bl5)) | 0; - hi = (hi + Math.imul(ah8, bh5)) | 0; - lo = (lo + Math.imul(al7, bl6)) | 0; - mid = (mid + Math.imul(al7, bh6)) | 0; - mid = (mid + Math.imul(ah7, bl6)) | 0; - hi = (hi + Math.imul(ah7, bh6)) | 0; - lo = (lo + Math.imul(al6, bl7)) | 0; - mid = (mid + Math.imul(al6, bh7)) | 0; - mid = (mid + Math.imul(ah6, bl7)) | 0; - hi = (hi + Math.imul(ah6, bh7)) | 0; - lo = (lo + Math.imul(al5, bl8)) | 0; - mid = (mid + Math.imul(al5, bh8)) | 0; - mid = (mid + Math.imul(ah5, bl8)) | 0; - hi = (hi + Math.imul(ah5, bh8)) | 0; - lo = (lo + Math.imul(al4, bl9)) | 0; - mid = (mid + Math.imul(al4, bh9)) | 0; - mid = (mid + Math.imul(ah4, bl9)) | 0; - hi = (hi + Math.imul(ah4, bh9)) | 0; - var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0; - w13 &= 0x3ffffff; - /* k = 14 */ - lo = Math.imul(al9, bl5); - mid = Math.imul(al9, bh5); - mid = (mid + Math.imul(ah9, bl5)) | 0; - hi = Math.imul(ah9, bh5); - lo = (lo + Math.imul(al8, bl6)) | 0; - mid = (mid + Math.imul(al8, bh6)) | 0; - mid = (mid + Math.imul(ah8, bl6)) | 0; - hi = (hi + Math.imul(ah8, bh6)) | 0; - lo = (lo + Math.imul(al7, bl7)) | 0; - mid = (mid + Math.imul(al7, bh7)) | 0; - mid = (mid + Math.imul(ah7, bl7)) | 0; - hi = (hi + Math.imul(ah7, bh7)) | 0; - lo = (lo + Math.imul(al6, bl8)) | 0; - mid = (mid + Math.imul(al6, bh8)) | 0; - mid = (mid + Math.imul(ah6, bl8)) | 0; - hi = (hi + Math.imul(ah6, bh8)) | 0; - lo = (lo + Math.imul(al5, bl9)) | 0; - mid = (mid + Math.imul(al5, bh9)) | 0; - mid = (mid + Math.imul(ah5, bl9)) | 0; - hi = (hi + Math.imul(ah5, bh9)) | 0; - var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0; - w14 &= 0x3ffffff; - /* k = 15 */ - lo = Math.imul(al9, bl6); - mid = Math.imul(al9, bh6); - mid = (mid + Math.imul(ah9, bl6)) | 0; - hi = Math.imul(ah9, bh6); - lo = (lo + Math.imul(al8, bl7)) | 0; - mid = (mid + Math.imul(al8, bh7)) | 0; - mid = (mid + Math.imul(ah8, bl7)) | 0; - hi = (hi + Math.imul(ah8, bh7)) | 0; - lo = (lo + Math.imul(al7, bl8)) | 0; - mid = (mid + Math.imul(al7, bh8)) | 0; - mid = (mid + Math.imul(ah7, bl8)) | 0; - hi = (hi + Math.imul(ah7, bh8)) | 0; - lo = (lo + Math.imul(al6, bl9)) | 0; - mid = (mid + Math.imul(al6, bh9)) | 0; - mid = (mid + Math.imul(ah6, bl9)) | 0; - hi = (hi + Math.imul(ah6, bh9)) | 0; - var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0; - w15 &= 0x3ffffff; - /* k = 16 */ - lo = Math.imul(al9, bl7); - mid = Math.imul(al9, bh7); - mid = (mid + Math.imul(ah9, bl7)) | 0; - hi = Math.imul(ah9, bh7); - lo = (lo + Math.imul(al8, bl8)) | 0; - mid = (mid + Math.imul(al8, bh8)) | 0; - mid = (mid + Math.imul(ah8, bl8)) | 0; - hi = (hi + Math.imul(ah8, bh8)) | 0; - lo = (lo + Math.imul(al7, bl9)) | 0; - mid = (mid + Math.imul(al7, bh9)) | 0; - mid = (mid + Math.imul(ah7, bl9)) | 0; - hi = (hi + Math.imul(ah7, bh9)) | 0; - var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0; - w16 &= 0x3ffffff; - /* k = 17 */ - lo = Math.imul(al9, bl8); - mid = Math.imul(al9, bh8); - mid = (mid + Math.imul(ah9, bl8)) | 0; - hi = Math.imul(ah9, bh8); - lo = (lo + Math.imul(al8, bl9)) | 0; - mid = (mid + Math.imul(al8, bh9)) | 0; - mid = (mid + Math.imul(ah8, bl9)) | 0; - hi = (hi + Math.imul(ah8, bh9)) | 0; - var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0; - w17 &= 0x3ffffff; - /* k = 18 */ - lo = Math.imul(al9, bl9); - mid = Math.imul(al9, bh9); - mid = (mid + Math.imul(ah9, bl9)) | 0; - hi = Math.imul(ah9, bh9); - var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0; - w18 &= 0x3ffffff; - o[0] = w0; - o[1] = w1; - o[2] = w2; - o[3] = w3; - o[4] = w4; - o[5] = w5; - o[6] = w6; - o[7] = w7; - o[8] = w8; - o[9] = w9; - o[10] = w10; - o[11] = w11; - o[12] = w12; - o[13] = w13; - o[14] = w14; - o[15] = w15; - o[16] = w16; - o[17] = w17; - o[18] = w18; - if (c !== 0) { - o[19] = c; - out.length++; - } - return out; - }; - - // Polyfill comb - if (!Math.imul) { - comb10MulTo = smallMulTo; - } - - function bigMulTo (self, num, out) { - out.negative = num.negative ^ self.negative; - out.length = self.length + num.length; - - var carry = 0; - var hncarry = 0; - for (var k = 0; k < out.length - 1; k++) { - // Sum all words with the same `i + j = k` and accumulate `ncarry`, - // note that ncarry could be >= 0x3ffffff - var ncarry = hncarry; - hncarry = 0; - var rword = carry & 0x3ffffff; - var maxJ = Math.min(k, num.length - 1); - for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { - var i = k - j; - var a = self.words[i] | 0; - var b = num.words[j] | 0; - var r = a * b; - - var lo = r & 0x3ffffff; - ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0; - lo = (lo + rword) | 0; - rword = lo & 0x3ffffff; - ncarry = (ncarry + (lo >>> 26)) | 0; - - hncarry += ncarry >>> 26; - ncarry &= 0x3ffffff; - } - out.words[k] = rword; - carry = ncarry; - ncarry = hncarry; - } - if (carry !== 0) { - out.words[k] = carry; - } else { - out.length--; - } - - return out.strip(); - } - - function jumboMulTo (self, num, out) { - var fftm = new FFTM(); - return fftm.mulp(self, num, out); - } - - BN.prototype.mulTo = function mulTo (num, out) { - var res; - var len = this.length + num.length; - if (this.length === 10 && num.length === 10) { - res = comb10MulTo(this, num, out); - } else if (len < 63) { - res = smallMulTo(this, num, out); - } else if (len < 1024) { - res = bigMulTo(this, num, out); - } else { - res = jumboMulTo(this, num, out); - } - - return res; - }; - - // Cooley-Tukey algorithm for FFT - // slightly revisited to rely on looping instead of recursion - - function FFTM (x, y) { - this.x = x; - this.y = y; - } - - FFTM.prototype.makeRBT = function makeRBT (N) { - var t = new Array(N); - var l = BN.prototype._countBits(N) - 1; - for (var i = 0; i < N; i++) { - t[i] = this.revBin(i, l, N); - } - - return t; - }; - - // Returns binary-reversed representation of `x` - FFTM.prototype.revBin = function revBin (x, l, N) { - if (x === 0 || x === N - 1) return x; - - var rb = 0; - for (var i = 0; i < l; i++) { - rb |= (x & 1) << (l - i - 1); - x >>= 1; - } - - return rb; - }; - - // Performs "tweedling" phase, therefore 'emulating' - // behaviour of the recursive algorithm - FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) { - for (var i = 0; i < N; i++) { - rtws[i] = rws[rbt[i]]; - itws[i] = iws[rbt[i]]; - } - }; - - FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) { - this.permute(rbt, rws, iws, rtws, itws, N); - - for (var s = 1; s < N; s <<= 1) { - var l = s << 1; - - var rtwdf = Math.cos(2 * Math.PI / l); - var itwdf = Math.sin(2 * Math.PI / l); - - for (var p = 0; p < N; p += l) { - var rtwdf_ = rtwdf; - var itwdf_ = itwdf; - - for (var j = 0; j < s; j++) { - var re = rtws[p + j]; - var ie = itws[p + j]; - - var ro = rtws[p + j + s]; - var io = itws[p + j + s]; - - var rx = rtwdf_ * ro - itwdf_ * io; - - io = rtwdf_ * io + itwdf_ * ro; - ro = rx; - - rtws[p + j] = re + ro; - itws[p + j] = ie + io; - - rtws[p + j + s] = re - ro; - itws[p + j + s] = ie - io; - - /* jshint maxdepth : false */ - if (j !== l) { - rx = rtwdf * rtwdf_ - itwdf * itwdf_; - - itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; - rtwdf_ = rx; - } - } - } - } - }; - - FFTM.prototype.guessLen13b = function guessLen13b (n, m) { - var N = Math.max(m, n) | 1; - var odd = N & 1; - var i = 0; - for (N = N / 2 | 0; N; N = N >>> 1) { - i++; - } - - return 1 << i + 1 + odd; - }; - - FFTM.prototype.conjugate = function conjugate (rws, iws, N) { - if (N <= 1) return; - - for (var i = 0; i < N / 2; i++) { - var t = rws[i]; - - rws[i] = rws[N - i - 1]; - rws[N - i - 1] = t; - - t = iws[i]; - - iws[i] = -iws[N - i - 1]; - iws[N - i - 1] = -t; - } - }; - - FFTM.prototype.normalize13b = function normalize13b (ws, N) { - var carry = 0; - for (var i = 0; i < N / 2; i++) { - var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + - Math.round(ws[2 * i] / N) + - carry; - - ws[i] = w & 0x3ffffff; - - if (w < 0x4000000) { - carry = 0; - } else { - carry = w / 0x4000000 | 0; - } - } - - return ws; - }; - - FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) { - var carry = 0; - for (var i = 0; i < len; i++) { - carry = carry + (ws[i] | 0); - - rws[2 * i] = carry & 0x1fff; carry = carry >>> 13; - rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13; - } - - // Pad with zeroes - for (i = 2 * len; i < N; ++i) { - rws[i] = 0; - } - - assert(carry === 0); - assert((carry & ~0x1fff) === 0); - }; - - FFTM.prototype.stub = function stub (N) { - var ph = new Array(N); - for (var i = 0; i < N; i++) { - ph[i] = 0; - } - - return ph; - }; - - FFTM.prototype.mulp = function mulp (x, y, out) { - var N = 2 * this.guessLen13b(x.length, y.length); - - var rbt = this.makeRBT(N); - - var _ = this.stub(N); - - var rws = new Array(N); - var rwst = new Array(N); - var iwst = new Array(N); - - var nrws = new Array(N); - var nrwst = new Array(N); - var niwst = new Array(N); - - var rmws = out.words; - rmws.length = N; - - this.convert13b(x.words, x.length, rws, N); - this.convert13b(y.words, y.length, nrws, N); - - this.transform(rws, _, rwst, iwst, N, rbt); - this.transform(nrws, _, nrwst, niwst, N, rbt); - - for (var i = 0; i < N; i++) { - var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; - iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; - rwst[i] = rx; - } - - this.conjugate(rwst, iwst, N); - this.transform(rwst, iwst, rmws, _, N, rbt); - this.conjugate(rmws, _, N); - this.normalize13b(rmws, N); - - out.negative = x.negative ^ y.negative; - out.length = x.length + y.length; - return out.strip(); - }; - - // Multiply `this` by `num` - BN.prototype.mul = function mul (num) { - var out = new BN(null); - out.words = new Array(this.length + num.length); - return this.mulTo(num, out); - }; - - // Multiply employing FFT - BN.prototype.mulf = function mulf (num) { - var out = new BN(null); - out.words = new Array(this.length + num.length); - return jumboMulTo(this, num, out); - }; - - // In-place Multiplication - BN.prototype.imul = function imul (num) { - return this.clone().mulTo(num, this); - }; - - BN.prototype.imuln = function imuln (num) { - assert(typeof num === 'number'); - assert(num < 0x4000000); - - // Carry - var carry = 0; - for (var i = 0; i < this.length; i++) { - var w = (this.words[i] | 0) * num; - var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); - carry >>= 26; - carry += (w / 0x4000000) | 0; - // NOTE: lo is 27bit maximum - carry += lo >>> 26; - this.words[i] = lo & 0x3ffffff; - } - - if (carry !== 0) { - this.words[i] = carry; - this.length++; - } - - return this; - }; - - BN.prototype.muln = function muln (num) { - return this.clone().imuln(num); - }; - - // `this` * `this` - BN.prototype.sqr = function sqr () { - return this.mul(this); - }; - - // `this` * `this` in-place - BN.prototype.isqr = function isqr () { - return this.imul(this.clone()); - }; - - // Math.pow(`this`, `num`) - BN.prototype.pow = function pow (num) { - var w = toBitArray(num); - if (w.length === 0) return new BN(1); - - // Skip leading zeroes - var res = this; - for (var i = 0; i < w.length; i++, res = res.sqr()) { - if (w[i] !== 0) break; - } - - if (++i < w.length) { - for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { - if (w[i] === 0) continue; - - res = res.mul(q); - } - } - - return res; - }; - - // Shift-left in-place - BN.prototype.iushln = function iushln (bits) { - assert(typeof bits === 'number' && bits >= 0); - var r = bits % 26; - var s = (bits - r) / 26; - var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r); - var i; - - if (r !== 0) { - var carry = 0; - - for (i = 0; i < this.length; i++) { - var newCarry = this.words[i] & carryMask; - var c = ((this.words[i] | 0) - newCarry) << r; - this.words[i] = c | carry; - carry = newCarry >>> (26 - r); - } - - if (carry) { - this.words[i] = carry; - this.length++; - } - } - - if (s !== 0) { - for (i = this.length - 1; i >= 0; i--) { - this.words[i + s] = this.words[i]; - } - - for (i = 0; i < s; i++) { - this.words[i] = 0; - } - - this.length += s; - } - - return this.strip(); - }; - - BN.prototype.ishln = function ishln (bits) { - // TODO(indutny): implement me - assert(this.negative === 0); - return this.iushln(bits); - }; - - // Shift-right in-place - // NOTE: `hint` is a lowest bit before trailing zeroes - // NOTE: if `extended` is present - it will be filled with destroyed bits - BN.prototype.iushrn = function iushrn (bits, hint, extended) { - assert(typeof bits === 'number' && bits >= 0); - var h; - if (hint) { - h = (hint - (hint % 26)) / 26; - } else { - h = 0; - } - - var r = bits % 26; - var s = Math.min((bits - r) / 26, this.length); - var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); - var maskedWords = extended; - - h -= s; - h = Math.max(0, h); - - // Extended mode, copy masked part - if (maskedWords) { - for (var i = 0; i < s; i++) { - maskedWords.words[i] = this.words[i]; - } - maskedWords.length = s; - } - - if (s === 0) { - // No-op, we should not move anything at all - } else if (this.length > s) { - this.length -= s; - for (i = 0; i < this.length; i++) { - this.words[i] = this.words[i + s]; - } - } else { - this.words[0] = 0; - this.length = 1; - } - - var carry = 0; - for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { - var word = this.words[i] | 0; - this.words[i] = (carry << (26 - r)) | (word >>> r); - carry = word & mask; - } - - // Push carried bits as a mask - if (maskedWords && carry !== 0) { - maskedWords.words[maskedWords.length++] = carry; - } - - if (this.length === 0) { - this.words[0] = 0; - this.length = 1; - } - - return this.strip(); - }; - - BN.prototype.ishrn = function ishrn (bits, hint, extended) { - // TODO(indutny): implement me - assert(this.negative === 0); - return this.iushrn(bits, hint, extended); - }; - - // Shift-left - BN.prototype.shln = function shln (bits) { - return this.clone().ishln(bits); - }; - - BN.prototype.ushln = function ushln (bits) { - return this.clone().iushln(bits); - }; - - // Shift-right - BN.prototype.shrn = function shrn (bits) { - return this.clone().ishrn(bits); - }; - - BN.prototype.ushrn = function ushrn (bits) { - return this.clone().iushrn(bits); - }; - - // Test if n bit is set - BN.prototype.testn = function testn (bit) { - assert(typeof bit === 'number' && bit >= 0); - var r = bit % 26; - var s = (bit - r) / 26; - var q = 1 << r; - - // Fast case: bit is much higher than all existing words - if (this.length <= s) return false; - - // Check bit and return - var w = this.words[s]; - - return !!(w & q); - }; - - // Return only lowers bits of number (in-place) - BN.prototype.imaskn = function imaskn (bits) { - assert(typeof bits === 'number' && bits >= 0); - var r = bits % 26; - var s = (bits - r) / 26; - - assert(this.negative === 0, 'imaskn works only with positive numbers'); - - if (this.length <= s) { - return this; - } - - if (r !== 0) { - s++; - } - this.length = Math.min(s, this.length); - - if (r !== 0) { - var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); - this.words[this.length - 1] &= mask; - } - - return this.strip(); - }; - - // Return only lowers bits of number - BN.prototype.maskn = function maskn (bits) { - return this.clone().imaskn(bits); - }; - - // Add plain number `num` to `this` - BN.prototype.iaddn = function iaddn (num) { - assert(typeof num === 'number'); - assert(num < 0x4000000); - if (num < 0) return this.isubn(-num); - - // Possible sign change - if (this.negative !== 0) { - if (this.length === 1 && (this.words[0] | 0) < num) { - this.words[0] = num - (this.words[0] | 0); - this.negative = 0; - return this; - } - - this.negative = 0; - this.isubn(num); - this.negative = 1; - return this; - } - - // Add without checks - return this._iaddn(num); - }; - - BN.prototype._iaddn = function _iaddn (num) { - this.words[0] += num; - - // Carry - for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) { - this.words[i] -= 0x4000000; - if (i === this.length - 1) { - this.words[i + 1] = 1; - } else { - this.words[i + 1]++; - } - } - this.length = Math.max(this.length, i + 1); - - return this; - }; - - // Subtract plain number `num` from `this` - BN.prototype.isubn = function isubn (num) { - assert(typeof num === 'number'); - assert(num < 0x4000000); - if (num < 0) return this.iaddn(-num); - - if (this.negative !== 0) { - this.negative = 0; - this.iaddn(num); - this.negative = 1; - return this; - } - - this.words[0] -= num; - - if (this.length === 1 && this.words[0] < 0) { - this.words[0] = -this.words[0]; - this.negative = 1; - } else { - // Carry - for (var i = 0; i < this.length && this.words[i] < 0; i++) { - this.words[i] += 0x4000000; - this.words[i + 1] -= 1; - } - } - - return this.strip(); - }; - - BN.prototype.addn = function addn (num) { - return this.clone().iaddn(num); - }; - - BN.prototype.subn = function subn (num) { - return this.clone().isubn(num); - }; - - BN.prototype.iabs = function iabs () { - this.negative = 0; - - return this; - }; - - BN.prototype.abs = function abs () { - return this.clone().iabs(); - }; - - BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) { - var len = num.length + shift; - var i; - - this._expand(len); - - var w; - var carry = 0; - for (i = 0; i < num.length; i++) { - w = (this.words[i + shift] | 0) + carry; - var right = (num.words[i] | 0) * mul; - w -= right & 0x3ffffff; - carry = (w >> 26) - ((right / 0x4000000) | 0); - this.words[i + shift] = w & 0x3ffffff; - } - for (; i < this.length - shift; i++) { - w = (this.words[i + shift] | 0) + carry; - carry = w >> 26; - this.words[i + shift] = w & 0x3ffffff; - } - - if (carry === 0) return this.strip(); - - // Subtraction overflow - assert(carry === -1); - carry = 0; - for (i = 0; i < this.length; i++) { - w = -(this.words[i] | 0) + carry; - carry = w >> 26; - this.words[i] = w & 0x3ffffff; - } - this.negative = 1; - - return this.strip(); - }; - - BN.prototype._wordDiv = function _wordDiv (num, mode) { - var shift = this.length - num.length; - - var a = this.clone(); - var b = num; - - // Normalize - var bhi = b.words[b.length - 1] | 0; - var bhiBits = this._countBits(bhi); - shift = 26 - bhiBits; - if (shift !== 0) { - b = b.ushln(shift); - a.iushln(shift); - bhi = b.words[b.length - 1] | 0; - } - - // Initialize quotient - var m = a.length - b.length; - var q; - - if (mode !== 'mod') { - q = new BN(null); - q.length = m + 1; - q.words = new Array(q.length); - for (var i = 0; i < q.length; i++) { - q.words[i] = 0; - } - } - - var diff = a.clone()._ishlnsubmul(b, 1, m); - if (diff.negative === 0) { - a = diff; - if (q) { - q.words[m] = 1; - } - } - - for (var j = m - 1; j >= 0; j--) { - var qj = (a.words[b.length + j] | 0) * 0x4000000 + - (a.words[b.length + j - 1] | 0); - - // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max - // (0x7ffffff) - qj = Math.min((qj / bhi) | 0, 0x3ffffff); - - a._ishlnsubmul(b, qj, j); - while (a.negative !== 0) { - qj--; - a.negative = 0; - a._ishlnsubmul(b, 1, j); - if (!a.isZero()) { - a.negative ^= 1; - } - } - if (q) { - q.words[j] = qj; - } - } - if (q) { - q.strip(); - } - a.strip(); - - // Denormalize - if (mode !== 'div' && shift !== 0) { - a.iushrn(shift); - } - - return { - div: q || null, - mod: a - }; - }; - - // NOTE: 1) `mode` can be set to `mod` to request mod only, - // to `div` to request div only, or be absent to - // request both div & mod - // 2) `positive` is true if unsigned mod is requested - BN.prototype.divmod = function divmod (num, mode, positive) { - assert(!num.isZero()); - - if (this.isZero()) { - return { - div: new BN(0), - mod: new BN(0) - }; - } - - var div, mod, res; - if (this.negative !== 0 && num.negative === 0) { - res = this.neg().divmod(num, mode); - - if (mode !== 'mod') { - div = res.div.neg(); - } - - if (mode !== 'div') { - mod = res.mod.neg(); - if (positive && mod.negative !== 0) { - mod.iadd(num); - } - } - - return { - div: div, - mod: mod - }; - } - - if (this.negative === 0 && num.negative !== 0) { - res = this.divmod(num.neg(), mode); - - if (mode !== 'mod') { - div = res.div.neg(); - } - - return { - div: div, - mod: res.mod - }; - } - - if ((this.negative & num.negative) !== 0) { - res = this.neg().divmod(num.neg(), mode); - - if (mode !== 'div') { - mod = res.mod.neg(); - if (positive && mod.negative !== 0) { - mod.isub(num); - } - } - - return { - div: res.div, - mod: mod - }; - } - - // Both numbers are positive at this point - - // Strip both numbers to approximate shift value - if (num.length > this.length || this.cmp(num) < 0) { - return { - div: new BN(0), - mod: this - }; - } - - // Very short reduction - if (num.length === 1) { - if (mode === 'div') { - return { - div: this.divn(num.words[0]), - mod: null - }; - } - - if (mode === 'mod') { - return { - div: null, - mod: new BN(this.modn(num.words[0])) - }; - } - - return { - div: this.divn(num.words[0]), - mod: new BN(this.modn(num.words[0])) - }; - } - - return this._wordDiv(num, mode); - }; - - // Find `this` / `num` - BN.prototype.div = function div (num) { - return this.divmod(num, 'div', false).div; - }; - - // Find `this` % `num` - BN.prototype.mod = function mod (num) { - return this.divmod(num, 'mod', false).mod; - }; - - BN.prototype.umod = function umod (num) { - return this.divmod(num, 'mod', true).mod; - }; - - // Find Round(`this` / `num`) - BN.prototype.divRound = function divRound (num) { - var dm = this.divmod(num); - - // Fast case - exact division - if (dm.mod.isZero()) return dm.div; - - var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; - - var half = num.ushrn(1); - var r2 = num.andln(1); - var cmp = mod.cmp(half); - - // Round down - if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; - - // Round up - return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); - }; - - BN.prototype.modn = function modn (num) { - assert(num <= 0x3ffffff); - var p = (1 << 26) % num; - - var acc = 0; - for (var i = this.length - 1; i >= 0; i--) { - acc = (p * acc + (this.words[i] | 0)) % num; - } - - return acc; - }; - - // In-place division by number - BN.prototype.idivn = function idivn (num) { - assert(num <= 0x3ffffff); - - var carry = 0; - for (var i = this.length - 1; i >= 0; i--) { - var w = (this.words[i] | 0) + carry * 0x4000000; - this.words[i] = (w / num) | 0; - carry = w % num; - } - - return this.strip(); - }; - - BN.prototype.divn = function divn (num) { - return this.clone().idivn(num); - }; - - BN.prototype.egcd = function egcd (p) { - assert(p.negative === 0); - assert(!p.isZero()); - - var x = this; - var y = p.clone(); - - if (x.negative !== 0) { - x = x.umod(p); - } else { - x = x.clone(); - } - - // A * x + B * y = x - var A = new BN(1); - var B = new BN(0); - - // C * x + D * y = y - var C = new BN(0); - var D = new BN(1); - - var g = 0; - - while (x.isEven() && y.isEven()) { - x.iushrn(1); - y.iushrn(1); - ++g; - } - - var yp = y.clone(); - var xp = x.clone(); - - while (!x.isZero()) { - for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) { - x.iushrn(i); - while (i-- > 0) { - if (A.isOdd() || B.isOdd()) { - A.iadd(yp); - B.isub(xp); - } - - A.iushrn(1); - B.iushrn(1); - } - } - - for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) { - y.iushrn(j); - while (j-- > 0) { - if (C.isOdd() || D.isOdd()) { - C.iadd(yp); - D.isub(xp); - } - - C.iushrn(1); - D.iushrn(1); - } - } - - if (x.cmp(y) >= 0) { - x.isub(y); - A.isub(C); - B.isub(D); - } else { - y.isub(x); - C.isub(A); - D.isub(B); - } - } - - return { - a: C, - b: D, - gcd: y.iushln(g) - }; - }; - - // This is reduced incarnation of the binary EEA - // above, designated to invert members of the - // _prime_ fields F(p) at a maximal speed - BN.prototype._invmp = function _invmp (p) { - assert(p.negative === 0); - assert(!p.isZero()); - - var a = this; - var b = p.clone(); - - if (a.negative !== 0) { - a = a.umod(p); - } else { - a = a.clone(); - } - - var x1 = new BN(1); - var x2 = new BN(0); - - var delta = b.clone(); - - while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { - for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) { - a.iushrn(i); - while (i-- > 0) { - if (x1.isOdd()) { - x1.iadd(delta); - } - - x1.iushrn(1); - } - } - - for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) { - b.iushrn(j); - while (j-- > 0) { - if (x2.isOdd()) { - x2.iadd(delta); - } - - x2.iushrn(1); - } - } - - if (a.cmp(b) >= 0) { - a.isub(b); - x1.isub(x2); - } else { - b.isub(a); - x2.isub(x1); - } - } - - var res; - if (a.cmpn(1) === 0) { - res = x1; - } else { - res = x2; - } - - if (res.cmpn(0) < 0) { - res.iadd(p); - } - - return res; - }; - - BN.prototype.gcd = function gcd (num) { - if (this.isZero()) return num.abs(); - if (num.isZero()) return this.abs(); - - var a = this.clone(); - var b = num.clone(); - a.negative = 0; - b.negative = 0; - - // Remove common factor of two - for (var shift = 0; a.isEven() && b.isEven(); shift++) { - a.iushrn(1); - b.iushrn(1); - } - - do { - while (a.isEven()) { - a.iushrn(1); - } - while (b.isEven()) { - b.iushrn(1); - } - - var r = a.cmp(b); - if (r < 0) { - // Swap `a` and `b` to make `a` always bigger than `b` - var t = a; - a = b; - b = t; - } else if (r === 0 || b.cmpn(1) === 0) { - break; - } - - a.isub(b); - } while (true); - - return b.iushln(shift); - }; - - // Invert number in the field F(num) - BN.prototype.invm = function invm (num) { - return this.egcd(num).a.umod(num); - }; - - BN.prototype.isEven = function isEven () { - return (this.words[0] & 1) === 0; - }; - - BN.prototype.isOdd = function isOdd () { - return (this.words[0] & 1) === 1; - }; - - // And first word and num - BN.prototype.andln = function andln (num) { - return this.words[0] & num; - }; - - // Increment at the bit position in-line - BN.prototype.bincn = function bincn (bit) { - assert(typeof bit === 'number'); - var r = bit % 26; - var s = (bit - r) / 26; - var q = 1 << r; - - // Fast case: bit is much higher than all existing words - if (this.length <= s) { - this._expand(s + 1); - this.words[s] |= q; - return this; - } - - // Add bit and propagate, if needed - var carry = q; - for (var i = s; carry !== 0 && i < this.length; i++) { - var w = this.words[i] | 0; - w += carry; - carry = w >>> 26; - w &= 0x3ffffff; - this.words[i] = w; - } - if (carry !== 0) { - this.words[i] = carry; - this.length++; - } - return this; - }; - - BN.prototype.isZero = function isZero () { - return this.length === 1 && this.words[0] === 0; - }; - - BN.prototype.cmpn = function cmpn (num) { - var negative = num < 0; - - if (this.negative !== 0 && !negative) return -1; - if (this.negative === 0 && negative) return 1; - - this.strip(); - - var res; - if (this.length > 1) { - res = 1; - } else { - if (negative) { - num = -num; - } - - assert(num <= 0x3ffffff, 'Number is too big'); - - var w = this.words[0] | 0; - res = w === num ? 0 : w < num ? -1 : 1; - } - if (this.negative !== 0) return -res | 0; - return res; - }; - - // Compare two numbers and return: - // 1 - if `this` > `num` - // 0 - if `this` == `num` - // -1 - if `this` < `num` - BN.prototype.cmp = function cmp (num) { - if (this.negative !== 0 && num.negative === 0) return -1; - if (this.negative === 0 && num.negative !== 0) return 1; - - var res = this.ucmp(num); - if (this.negative !== 0) return -res | 0; - return res; - }; - - // Unsigned comparison - BN.prototype.ucmp = function ucmp (num) { - // At this point both numbers have the same sign - if (this.length > num.length) return 1; - if (this.length < num.length) return -1; - - var res = 0; - for (var i = this.length - 1; i >= 0; i--) { - var a = this.words[i] | 0; - var b = num.words[i] | 0; - - if (a === b) continue; - if (a < b) { - res = -1; - } else if (a > b) { - res = 1; - } - break; - } - return res; - }; - - BN.prototype.gtn = function gtn (num) { - return this.cmpn(num) === 1; - }; - - BN.prototype.gt = function gt (num) { - return this.cmp(num) === 1; - }; - - BN.prototype.gten = function gten (num) { - return this.cmpn(num) >= 0; - }; - - BN.prototype.gte = function gte (num) { - return this.cmp(num) >= 0; - }; - - BN.prototype.ltn = function ltn (num) { - return this.cmpn(num) === -1; - }; - - BN.prototype.lt = function lt (num) { - return this.cmp(num) === -1; - }; - - BN.prototype.lten = function lten (num) { - return this.cmpn(num) <= 0; - }; - - BN.prototype.lte = function lte (num) { - return this.cmp(num) <= 0; - }; - - BN.prototype.eqn = function eqn (num) { - return this.cmpn(num) === 0; - }; - - BN.prototype.eq = function eq (num) { - return this.cmp(num) === 0; - }; - - // - // A reduce context, could be using montgomery or something better, depending - // on the `m` itself. - // - BN.red = function red (num) { - return new Red(num); - }; - - BN.prototype.toRed = function toRed (ctx) { - assert(!this.red, 'Already a number in reduction context'); - assert(this.negative === 0, 'red works only with positives'); - return ctx.convertTo(this)._forceRed(ctx); - }; - - BN.prototype.fromRed = function fromRed () { - assert(this.red, 'fromRed works only with numbers in reduction context'); - return this.red.convertFrom(this); - }; - - BN.prototype._forceRed = function _forceRed (ctx) { - this.red = ctx; - return this; - }; - - BN.prototype.forceRed = function forceRed (ctx) { - assert(!this.red, 'Already a number in reduction context'); - return this._forceRed(ctx); - }; - - BN.prototype.redAdd = function redAdd (num) { - assert(this.red, 'redAdd works only with red numbers'); - return this.red.add(this, num); - }; - - BN.prototype.redIAdd = function redIAdd (num) { - assert(this.red, 'redIAdd works only with red numbers'); - return this.red.iadd(this, num); - }; - - BN.prototype.redSub = function redSub (num) { - assert(this.red, 'redSub works only with red numbers'); - return this.red.sub(this, num); - }; - - BN.prototype.redISub = function redISub (num) { - assert(this.red, 'redISub works only with red numbers'); - return this.red.isub(this, num); - }; - - BN.prototype.redShl = function redShl (num) { - assert(this.red, 'redShl works only with red numbers'); - return this.red.shl(this, num); - }; - - BN.prototype.redMul = function redMul (num) { - assert(this.red, 'redMul works only with red numbers'); - this.red._verify2(this, num); - return this.red.mul(this, num); - }; - - BN.prototype.redIMul = function redIMul (num) { - assert(this.red, 'redMul works only with red numbers'); - this.red._verify2(this, num); - return this.red.imul(this, num); - }; - - BN.prototype.redSqr = function redSqr () { - assert(this.red, 'redSqr works only with red numbers'); - this.red._verify1(this); - return this.red.sqr(this); - }; - - BN.prototype.redISqr = function redISqr () { - assert(this.red, 'redISqr works only with red numbers'); - this.red._verify1(this); - return this.red.isqr(this); - }; - - // Square root over p - BN.prototype.redSqrt = function redSqrt () { - assert(this.red, 'redSqrt works only with red numbers'); - this.red._verify1(this); - return this.red.sqrt(this); - }; - - BN.prototype.redInvm = function redInvm () { - assert(this.red, 'redInvm works only with red numbers'); - this.red._verify1(this); - return this.red.invm(this); - }; - - // Return negative clone of `this` % `red modulo` - BN.prototype.redNeg = function redNeg () { - assert(this.red, 'redNeg works only with red numbers'); - this.red._verify1(this); - return this.red.neg(this); - }; - - BN.prototype.redPow = function redPow (num) { - assert(this.red && !num.red, 'redPow(normalNum)'); - this.red._verify1(this); - return this.red.pow(this, num); - }; - - // Prime numbers with efficient reduction - var primes = { - k256: null, - p224: null, - p192: null, - p25519: null - }; - - // Pseudo-Mersenne prime - function MPrime (name, p) { - // P = 2 ^ N - K - this.name = name; - this.p = new BN(p, 16); - this.n = this.p.bitLength(); - this.k = new BN(1).iushln(this.n).isub(this.p); - - this.tmp = this._tmp(); - } - - MPrime.prototype._tmp = function _tmp () { - var tmp = new BN(null); - tmp.words = new Array(Math.ceil(this.n / 13)); - return tmp; - }; - - MPrime.prototype.ireduce = function ireduce (num) { - // Assumes that `num` is less than `P^2` - // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P) - var r = num; - var rlen; - - do { - this.split(r, this.tmp); - r = this.imulK(r); - r = r.iadd(this.tmp); - rlen = r.bitLength(); - } while (rlen > this.n); - - var cmp = rlen < this.n ? -1 : r.ucmp(this.p); - if (cmp === 0) { - r.words[0] = 0; - r.length = 1; - } else if (cmp > 0) { - r.isub(this.p); - } else { - r.strip(); - } - - return r; - }; - - MPrime.prototype.split = function split (input, out) { - input.iushrn(this.n, 0, out); - }; - - MPrime.prototype.imulK = function imulK (num) { - return num.imul(this.k); - }; - - function K256 () { - MPrime.call( - this, - 'k256', - 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'); - } - inherits(K256, MPrime); - - K256.prototype.split = function split (input, output) { - // 256 = 9 * 26 + 22 - var mask = 0x3fffff; - - var outLen = Math.min(input.length, 9); - for (var i = 0; i < outLen; i++) { - output.words[i] = input.words[i]; - } - output.length = outLen; - - if (input.length <= 9) { - input.words[0] = 0; - input.length = 1; - return; - } - - // Shift by 9 limbs - var prev = input.words[9]; - output.words[output.length++] = prev & mask; - - for (i = 10; i < input.length; i++) { - var next = input.words[i] | 0; - input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22); - prev = next; - } - prev >>>= 22; - input.words[i - 10] = prev; - if (prev === 0 && input.length > 10) { - input.length -= 10; - } else { - input.length -= 9; - } - }; - - K256.prototype.imulK = function imulK (num) { - // K = 0x1000003d1 = [ 0x40, 0x3d1 ] - num.words[num.length] = 0; - num.words[num.length + 1] = 0; - num.length += 2; - - // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390 - var lo = 0; - for (var i = 0; i < num.length; i++) { - var w = num.words[i] | 0; - lo += w * 0x3d1; - num.words[i] = lo & 0x3ffffff; - lo = w * 0x40 + ((lo / 0x4000000) | 0); - } - - // Fast length reduction - if (num.words[num.length - 1] === 0) { - num.length--; - if (num.words[num.length - 1] === 0) { - num.length--; - } - } - return num; - }; - - function P224 () { - MPrime.call( - this, - 'p224', - 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'); - } - inherits(P224, MPrime); - - function P192 () { - MPrime.call( - this, - 'p192', - 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'); - } - inherits(P192, MPrime); - - function P25519 () { - // 2 ^ 255 - 19 - MPrime.call( - this, - '25519', - '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'); - } - inherits(P25519, MPrime); - - P25519.prototype.imulK = function imulK (num) { - // K = 0x13 - var carry = 0; - for (var i = 0; i < num.length; i++) { - var hi = (num.words[i] | 0) * 0x13 + carry; - var lo = hi & 0x3ffffff; - hi >>>= 26; - - num.words[i] = lo; - carry = hi; - } - if (carry !== 0) { - num.words[num.length++] = carry; - } - return num; - }; - - // Exported mostly for testing purposes, use plain name instead - BN._prime = function prime (name) { - // Cached version of prime - if (primes[name]) return primes[name]; - - var prime; - if (name === 'k256') { - prime = new K256(); - } else if (name === 'p224') { - prime = new P224(); - } else if (name === 'p192') { - prime = new P192(); - } else if (name === 'p25519') { - prime = new P25519(); - } else { - throw new Error('Unknown prime ' + name); - } - primes[name] = prime; - - return prime; - }; - - // - // Base reduction engine - // - function Red (m) { - if (typeof m === 'string') { - var prime = BN._prime(m); - this.m = prime.p; - this.prime = prime; - } else { - assert(m.gtn(1), 'modulus must be greater than 1'); - this.m = m; - this.prime = null; - } - } - - Red.prototype._verify1 = function _verify1 (a) { - assert(a.negative === 0, 'red works only with positives'); - assert(a.red, 'red works only with red numbers'); - }; - - Red.prototype._verify2 = function _verify2 (a, b) { - assert((a.negative | b.negative) === 0, 'red works only with positives'); - assert(a.red && a.red === b.red, - 'red works only with red numbers'); - }; - - Red.prototype.imod = function imod (a) { - if (this.prime) return this.prime.ireduce(a)._forceRed(this); - return a.umod(this.m)._forceRed(this); - }; - - Red.prototype.neg = function neg (a) { - if (a.isZero()) { - return a.clone(); - } - - return this.m.sub(a)._forceRed(this); - }; - - Red.prototype.add = function add (a, b) { - this._verify2(a, b); - - var res = a.add(b); - if (res.cmp(this.m) >= 0) { - res.isub(this.m); - } - return res._forceRed(this); - }; - - Red.prototype.iadd = function iadd (a, b) { - this._verify2(a, b); - - var res = a.iadd(b); - if (res.cmp(this.m) >= 0) { - res.isub(this.m); - } - return res; - }; - - Red.prototype.sub = function sub (a, b) { - this._verify2(a, b); - - var res = a.sub(b); - if (res.cmpn(0) < 0) { - res.iadd(this.m); - } - return res._forceRed(this); - }; - - Red.prototype.isub = function isub (a, b) { - this._verify2(a, b); - - var res = a.isub(b); - if (res.cmpn(0) < 0) { - res.iadd(this.m); - } - return res; - }; - - Red.prototype.shl = function shl (a, num) { - this._verify1(a); - return this.imod(a.ushln(num)); - }; - - Red.prototype.imul = function imul (a, b) { - this._verify2(a, b); - return this.imod(a.imul(b)); - }; - - Red.prototype.mul = function mul (a, b) { - this._verify2(a, b); - return this.imod(a.mul(b)); - }; - - Red.prototype.isqr = function isqr (a) { - return this.imul(a, a.clone()); - }; - - Red.prototype.sqr = function sqr (a) { - return this.mul(a, a); - }; - - Red.prototype.sqrt = function sqrt (a) { - if (a.isZero()) return a.clone(); - - var mod3 = this.m.andln(3); - assert(mod3 % 2 === 1); - - // Fast case - if (mod3 === 3) { - var pow = this.m.add(new BN(1)).iushrn(2); - return this.pow(a, pow); - } - - // Tonelli-Shanks algorithm (Totally unoptimized and slow) - // - // Find Q and S, that Q * 2 ^ S = (P - 1) - var q = this.m.subn(1); - var s = 0; - while (!q.isZero() && q.andln(1) === 0) { - s++; - q.iushrn(1); - } - assert(!q.isZero()); - - var one = new BN(1).toRed(this); - var nOne = one.redNeg(); - - // Find quadratic non-residue - // NOTE: Max is such because of generalized Riemann hypothesis. - var lpow = this.m.subn(1).iushrn(1); - var z = this.m.bitLength(); - z = new BN(2 * z * z).toRed(this); - - while (this.pow(z, lpow).cmp(nOne) !== 0) { - z.redIAdd(nOne); - } - - var c = this.pow(z, q); - var r = this.pow(a, q.addn(1).iushrn(1)); - var t = this.pow(a, q); - var m = s; - while (t.cmp(one) !== 0) { - var tmp = t; - for (var i = 0; tmp.cmp(one) !== 0; i++) { - tmp = tmp.redSqr(); - } - assert(i < m); - var b = this.pow(c, new BN(1).iushln(m - i - 1)); - - r = r.redMul(b); - c = b.redSqr(); - t = t.redMul(c); - m = i; - } - - return r; - }; - - Red.prototype.invm = function invm (a) { - var inv = a._invmp(this.m); - if (inv.negative !== 0) { - inv.negative = 0; - return this.imod(inv).redNeg(); - } else { - return this.imod(inv); - } - }; - - Red.prototype.pow = function pow (a, num) { - if (num.isZero()) return new BN(1).toRed(this); - if (num.cmpn(1) === 0) return a.clone(); - - var windowSize = 4; - var wnd = new Array(1 << windowSize); - wnd[0] = new BN(1).toRed(this); - wnd[1] = a; - for (var i = 2; i < wnd.length; i++) { - wnd[i] = this.mul(wnd[i - 1], a); - } - - var res = wnd[0]; - var current = 0; - var currentLen = 0; - var start = num.bitLength() % 26; - if (start === 0) { - start = 26; - } - - for (i = num.length - 1; i >= 0; i--) { - var word = num.words[i]; - for (var j = start - 1; j >= 0; j--) { - var bit = (word >> j) & 1; - if (res !== wnd[0]) { - res = this.sqr(res); - } - - if (bit === 0 && current === 0) { - currentLen = 0; - continue; - } - - current <<= 1; - current |= bit; - currentLen++; - if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; - - res = this.mul(res, wnd[current]); - currentLen = 0; - current = 0; - } - start = 26; - } - - return res; - }; - - Red.prototype.convertTo = function convertTo (num) { - var r = num.umod(this.m); - - return r === num ? r.clone() : r; - }; - - Red.prototype.convertFrom = function convertFrom (num) { - var res = num.clone(); - res.red = null; - return res; - }; - - // - // Montgomery method engine - // - - BN.mont = function mont (num) { - return new Mont(num); - }; - - function Mont (m) { - Red.call(this, m); - - this.shift = this.m.bitLength(); - if (this.shift % 26 !== 0) { - this.shift += 26 - (this.shift % 26); - } - - this.r = new BN(1).iushln(this.shift); - this.r2 = this.imod(this.r.sqr()); - this.rinv = this.r._invmp(this.m); - - this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); - this.minv = this.minv.umod(this.r); - this.minv = this.r.sub(this.minv); - } - inherits(Mont, Red); - - Mont.prototype.convertTo = function convertTo (num) { - return this.imod(num.ushln(this.shift)); - }; - - Mont.prototype.convertFrom = function convertFrom (num) { - var r = this.imod(num.mul(this.rinv)); - r.red = null; - return r; - }; - - Mont.prototype.imul = function imul (a, b) { - if (a.isZero() || b.isZero()) { - a.words[0] = 0; - a.length = 1; - return a; - } - - var t = a.imul(b); - var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); - var u = t.isub(c).iushrn(this.shift); - var res = u; - - if (u.cmp(this.m) >= 0) { - res = u.isub(this.m); - } else if (u.cmpn(0) < 0) { - res = u.iadd(this.m); - } - - return res._forceRed(this); - }; - - Mont.prototype.mul = function mul (a, b) { - if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); - - var t = a.mul(b); - var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); - var u = t.isub(c).iushrn(this.shift); - var res = u; - if (u.cmp(this.m) >= 0) { - res = u.isub(this.m); - } else if (u.cmpn(0) < 0) { - res = u.iadd(this.m); - } - - return res._forceRed(this); - }; - - Mont.prototype.invm = function invm (a) { - // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R - var res = this.imod(a._invmp(this.m).mul(this.r2)); - return res._forceRed(this); - }; -})(typeof module === 'undefined' || module, this); - -},{"buffer":149}],148:[function(require,module,exports){ -var r; - -module.exports = function rand(len) { - if (!r) - r = new Rand(null); - - return r.generate(len); -}; - -function Rand(rand) { - this.rand = rand; -} -module.exports.Rand = Rand; - -Rand.prototype.generate = function generate(len) { - return this._rand(len); -}; - -// Emulate crypto API using randy -Rand.prototype._rand = function _rand(n) { - if (this.rand.getBytes) - return this.rand.getBytes(n); - - var res = new Uint8Array(n); - for (var i = 0; i < res.length; i++) - res[i] = this.rand.getByte(); - return res; -}; - -if (typeof self === 'object') { - if (self.crypto && self.crypto.getRandomValues) { - // Modern browsers - Rand.prototype._rand = function _rand(n) { - var arr = new Uint8Array(n); - self.crypto.getRandomValues(arr); - return arr; - }; - } else if (self.msCrypto && self.msCrypto.getRandomValues) { - // IE - Rand.prototype._rand = function _rand(n) { - var arr = new Uint8Array(n); - self.msCrypto.getRandomValues(arr); - return arr; - }; - - // Safari's WebWorkers do not have `crypto` - } else if (typeof window === 'object') { - // Old junk - Rand.prototype._rand = function() { - throw new Error('Not implemented yet'); - }; - } -} else { - // Node.js or Web worker with no crypto support - try { - var crypto = require('crypto'); - if (typeof crypto.randomBytes !== 'function') - throw new Error('Not supported'); - - Rand.prototype._rand = function _rand(n) { - return crypto.randomBytes(n); - }; - } catch (e) { - } -} - -},{"crypto":149}],149:[function(require,module,exports){ - -},{}],150:[function(require,module,exports){ -// based on the aes implimentation in triple sec -// https://github.com/keybase/triplesec -// which is in turn based on the one from crypto-js -// https://code.google.com/p/crypto-js/ - -var Buffer = require('safe-buffer').Buffer - -function asUInt32Array (buf) { - if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf) - - var len = (buf.length / 4) | 0 - var out = new Array(len) - - for (var i = 0; i < len; i++) { - out[i] = buf.readUInt32BE(i * 4) - } - - return out -} - -function scrubVec (v) { - for (var i = 0; i < v.length; v++) { - v[i] = 0 - } -} - -function cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) { - var SUB_MIX0 = SUB_MIX[0] - var SUB_MIX1 = SUB_MIX[1] - var SUB_MIX2 = SUB_MIX[2] - var SUB_MIX3 = SUB_MIX[3] - - var s0 = M[0] ^ keySchedule[0] - var s1 = M[1] ^ keySchedule[1] - var s2 = M[2] ^ keySchedule[2] - var s3 = M[3] ^ keySchedule[3] - var t0, t1, t2, t3 - var ksRow = 4 - - for (var round = 1; round < nRounds; round++) { - t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++] - t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++] - t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++] - t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++] - s0 = t0 - s1 = t1 - s2 = t2 - s3 = t3 - } - - t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++] - t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++] - t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++] - t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++] - t0 = t0 >>> 0 - t1 = t1 >>> 0 - t2 = t2 >>> 0 - t3 = t3 >>> 0 - - return [t0, t1, t2, t3] -} - -// AES constants -var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36] -var G = (function () { - // Compute double table - var d = new Array(256) - for (var j = 0; j < 256; j++) { - if (j < 128) { - d[j] = j << 1 - } else { - d[j] = (j << 1) ^ 0x11b - } - } - - var SBOX = [] - var INV_SBOX = [] - var SUB_MIX = [[], [], [], []] - var INV_SUB_MIX = [[], [], [], []] - - // Walk GF(2^8) - var x = 0 - var xi = 0 - for (var i = 0; i < 256; ++i) { - // Compute sbox - var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4) - sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63 - SBOX[x] = sx - INV_SBOX[sx] = x - - // Compute multiplication - var x2 = d[x] - var x4 = d[x2] - var x8 = d[x4] - - // Compute sub bytes, mix columns tables - var t = (d[sx] * 0x101) ^ (sx * 0x1010100) - SUB_MIX[0][x] = (t << 24) | (t >>> 8) - SUB_MIX[1][x] = (t << 16) | (t >>> 16) - SUB_MIX[2][x] = (t << 8) | (t >>> 24) - SUB_MIX[3][x] = t - - // Compute inv sub bytes, inv mix columns tables - t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100) - INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8) - INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16) - INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24) - INV_SUB_MIX[3][sx] = t - - if (x === 0) { - x = xi = 1 - } else { - x = x2 ^ d[d[d[x8 ^ x2]]] - xi ^= d[d[xi]] - } - } - - return { - SBOX: SBOX, - INV_SBOX: INV_SBOX, - SUB_MIX: SUB_MIX, - INV_SUB_MIX: INV_SUB_MIX - } -})() - -function AES (key) { - this._key = asUInt32Array(key) - this._reset() -} - -AES.blockSize = 4 * 4 -AES.keySize = 256 / 8 -AES.prototype.blockSize = AES.blockSize -AES.prototype.keySize = AES.keySize -AES.prototype._reset = function () { - var keyWords = this._key - var keySize = keyWords.length - var nRounds = keySize + 6 - var ksRows = (nRounds + 1) * 4 - - var keySchedule = [] - for (var k = 0; k < keySize; k++) { - keySchedule[k] = keyWords[k] - } - - for (k = keySize; k < ksRows; k++) { - var t = keySchedule[k - 1] - - if (k % keySize === 0) { - t = (t << 8) | (t >>> 24) - t = - (G.SBOX[t >>> 24] << 24) | - (G.SBOX[(t >>> 16) & 0xff] << 16) | - (G.SBOX[(t >>> 8) & 0xff] << 8) | - (G.SBOX[t & 0xff]) - - t ^= RCON[(k / keySize) | 0] << 24 - } else if (keySize > 6 && k % keySize === 4) { - t = - (G.SBOX[t >>> 24] << 24) | - (G.SBOX[(t >>> 16) & 0xff] << 16) | - (G.SBOX[(t >>> 8) & 0xff] << 8) | - (G.SBOX[t & 0xff]) - } - - keySchedule[k] = keySchedule[k - keySize] ^ t - } - - var invKeySchedule = [] - for (var ik = 0; ik < ksRows; ik++) { - var ksR = ksRows - ik - var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)] - - if (ik < 4 || ksR <= 4) { - invKeySchedule[ik] = tt - } else { - invKeySchedule[ik] = - G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ - G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^ - G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^ - G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]] - } - } - - this._nRounds = nRounds - this._keySchedule = keySchedule - this._invKeySchedule = invKeySchedule -} - -AES.prototype.encryptBlockRaw = function (M) { - M = asUInt32Array(M) - return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds) -} - -AES.prototype.encryptBlock = function (M) { - var out = this.encryptBlockRaw(M) - var buf = Buffer.allocUnsafe(16) - buf.writeUInt32BE(out[0], 0) - buf.writeUInt32BE(out[1], 4) - buf.writeUInt32BE(out[2], 8) - buf.writeUInt32BE(out[3], 12) - return buf -} - -AES.prototype.decryptBlock = function (M) { - M = asUInt32Array(M) - - // swap - var m1 = M[1] - M[1] = M[3] - M[3] = m1 - - var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds) - var buf = Buffer.allocUnsafe(16) - buf.writeUInt32BE(out[0], 0) - buf.writeUInt32BE(out[3], 4) - buf.writeUInt32BE(out[2], 8) - buf.writeUInt32BE(out[1], 12) - return buf -} - -AES.prototype.scrub = function () { - scrubVec(this._keySchedule) - scrubVec(this._invKeySchedule) - scrubVec(this._key) -} - -module.exports.AES = AES - -},{"safe-buffer":318}],151:[function(require,module,exports){ -var aes = require('./aes') -var Buffer = require('safe-buffer').Buffer -var Transform = require('cipher-base') -var inherits = require('inherits') -var GHASH = require('./ghash') -var xor = require('buffer-xor') -var incr32 = require('./incr32') - -function xorTest (a, b) { - var out = 0 - if (a.length !== b.length) out++ - - var len = Math.min(a.length, b.length) - for (var i = 0; i < len; ++i) { - out += (a[i] ^ b[i]) - } - - return out -} - -function calcIv (self, iv, ck) { - if (iv.length === 12) { - self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]) - return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]) - } - var ghash = new GHASH(ck) - var len = iv.length - var toPad = len % 16 - ghash.update(iv) - if (toPad) { - toPad = 16 - toPad - ghash.update(Buffer.alloc(toPad, 0)) - } - ghash.update(Buffer.alloc(8, 0)) - var ivBits = len * 8 - var tail = Buffer.alloc(8) - tail.writeUIntBE(ivBits, 0, 8) - ghash.update(tail) - self._finID = ghash.state - var out = Buffer.from(self._finID) - incr32(out) - return out -} -function StreamCipher (mode, key, iv, decrypt) { - Transform.call(this) - - var h = Buffer.alloc(4, 0) - - this._cipher = new aes.AES(key) - var ck = this._cipher.encryptBlock(h) - this._ghash = new GHASH(ck) - iv = calcIv(this, iv, ck) - - this._prev = Buffer.from(iv) - this._cache = Buffer.allocUnsafe(0) - this._secCache = Buffer.allocUnsafe(0) - this._decrypt = decrypt - this._alen = 0 - this._len = 0 - this._mode = mode - - this._authTag = null - this._called = false -} - -inherits(StreamCipher, Transform) - -StreamCipher.prototype._update = function (chunk) { - if (!this._called && this._alen) { - var rump = 16 - (this._alen % 16) - if (rump < 16) { - rump = Buffer.alloc(rump, 0) - this._ghash.update(rump) - } - } - - this._called = true - var out = this._mode.encrypt(this, chunk) - if (this._decrypt) { - this._ghash.update(chunk) - } else { - this._ghash.update(out) - } - this._len += chunk.length - return out -} - -StreamCipher.prototype._final = function () { - if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data') - - var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID)) - if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data') - - this._authTag = tag - this._cipher.scrub() -} - -StreamCipher.prototype.getAuthTag = function getAuthTag () { - if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state') - - return this._authTag -} - -StreamCipher.prototype.setAuthTag = function setAuthTag (tag) { - if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state') - - this._authTag = tag -} - -StreamCipher.prototype.setAAD = function setAAD (buf) { - if (this._called) throw new Error('Attempting to set AAD in unsupported state') - - this._ghash.update(buf) - this._alen += buf.length -} - -module.exports = StreamCipher - -},{"./aes":150,"./ghash":155,"./incr32":156,"buffer-xor":181,"cipher-base":184,"inherits":262,"safe-buffer":318}],152:[function(require,module,exports){ -var ciphers = require('./encrypter') -var deciphers = require('./decrypter') -var modes = require('./modes/list.json') - -function getCiphers () { - return Object.keys(modes) -} - -exports.createCipher = exports.Cipher = ciphers.createCipher -exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv -exports.createDecipher = exports.Decipher = deciphers.createDecipher -exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv -exports.listCiphers = exports.getCiphers = getCiphers - -},{"./decrypter":153,"./encrypter":154,"./modes/list.json":164}],153:[function(require,module,exports){ -var AuthCipher = require('./authCipher') -var Buffer = require('safe-buffer').Buffer -var MODES = require('./modes') -var StreamCipher = require('./streamCipher') -var Transform = require('cipher-base') -var aes = require('./aes') -var ebtk = require('evp_bytestokey') -var inherits = require('inherits') - -function Decipher (mode, key, iv) { - Transform.call(this) - - this._cache = new Splitter() - this._last = void 0 - this._cipher = new aes.AES(key) - this._prev = Buffer.from(iv) - this._mode = mode - this._autopadding = true -} - -inherits(Decipher, Transform) - -Decipher.prototype._update = function (data) { - this._cache.add(data) - var chunk - var thing - var out = [] - while ((chunk = this._cache.get(this._autopadding))) { - thing = this._mode.decrypt(this, chunk) - out.push(thing) - } - return Buffer.concat(out) -} - -Decipher.prototype._final = function () { - var chunk = this._cache.flush() - if (this._autopadding) { - return unpad(this._mode.decrypt(this, chunk)) - } else if (chunk) { - throw new Error('data not multiple of block length') - } -} - -Decipher.prototype.setAutoPadding = function (setTo) { - this._autopadding = !!setTo - return this -} - -function Splitter () { - this.cache = Buffer.allocUnsafe(0) -} - -Splitter.prototype.add = function (data) { - this.cache = Buffer.concat([this.cache, data]) -} - -Splitter.prototype.get = function (autoPadding) { - var out - if (autoPadding) { - if (this.cache.length > 16) { - out = this.cache.slice(0, 16) - this.cache = this.cache.slice(16) - return out - } - } else { - if (this.cache.length >= 16) { - out = this.cache.slice(0, 16) - this.cache = this.cache.slice(16) - return out - } - } - - return null -} - -Splitter.prototype.flush = function () { - if (this.cache.length) return this.cache -} - -function unpad (last) { - var padded = last[15] - if (padded < 1 || padded > 16) { - throw new Error('unable to decrypt data') - } - var i = -1 - while (++i < padded) { - if (last[(i + (16 - padded))] !== padded) { - throw new Error('unable to decrypt data') - } - } - if (padded === 16) return - - return last.slice(0, 16 - padded) -} - -function createDecipheriv (suite, password, iv) { - var config = MODES[suite.toLowerCase()] - if (!config) throw new TypeError('invalid suite type') - - if (typeof iv === 'string') iv = Buffer.from(iv) - if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length) - - if (typeof password === 'string') password = Buffer.from(password) - if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length) - - if (config.type === 'stream') { - return new StreamCipher(config.module, password, iv, true) - } else if (config.type === 'auth') { - return new AuthCipher(config.module, password, iv, true) - } - - return new Decipher(config.module, password, iv) -} - -function createDecipher (suite, password) { - var config = MODES[suite.toLowerCase()] - if (!config) throw new TypeError('invalid suite type') - - var keys = ebtk(password, false, config.key, config.iv) - return createDecipheriv(suite, keys.key, keys.iv) -} - -exports.createDecipher = createDecipher -exports.createDecipheriv = createDecipheriv - -},{"./aes":150,"./authCipher":151,"./modes":163,"./streamCipher":166,"cipher-base":184,"evp_bytestokey":222,"inherits":262,"safe-buffer":318}],154:[function(require,module,exports){ -var MODES = require('./modes') -var AuthCipher = require('./authCipher') -var Buffer = require('safe-buffer').Buffer -var StreamCipher = require('./streamCipher') -var Transform = require('cipher-base') -var aes = require('./aes') -var ebtk = require('evp_bytestokey') -var inherits = require('inherits') - -function Cipher (mode, key, iv) { - Transform.call(this) - - this._cache = new Splitter() - this._cipher = new aes.AES(key) - this._prev = Buffer.from(iv) - this._mode = mode - this._autopadding = true -} - -inherits(Cipher, Transform) - -Cipher.prototype._update = function (data) { - this._cache.add(data) - var chunk - var thing - var out = [] - - while ((chunk = this._cache.get())) { - thing = this._mode.encrypt(this, chunk) - out.push(thing) - } - - return Buffer.concat(out) -} - -var PADDING = Buffer.alloc(16, 0x10) - -Cipher.prototype._final = function () { - var chunk = this._cache.flush() - if (this._autopadding) { - chunk = this._mode.encrypt(this, chunk) - this._cipher.scrub() - return chunk - } - - if (!chunk.equals(PADDING)) { - this._cipher.scrub() - throw new Error('data not multiple of block length') - } -} - -Cipher.prototype.setAutoPadding = function (setTo) { - this._autopadding = !!setTo - return this -} - -function Splitter () { - this.cache = Buffer.allocUnsafe(0) -} - -Splitter.prototype.add = function (data) { - this.cache = Buffer.concat([this.cache, data]) -} - -Splitter.prototype.get = function () { - if (this.cache.length > 15) { - var out = this.cache.slice(0, 16) - this.cache = this.cache.slice(16) - return out - } - return null -} - -Splitter.prototype.flush = function () { - var len = 16 - this.cache.length - var padBuff = Buffer.allocUnsafe(len) - - var i = -1 - while (++i < len) { - padBuff.writeUInt8(len, i) - } - - return Buffer.concat([this.cache, padBuff]) -} - -function createCipheriv (suite, password, iv) { - var config = MODES[suite.toLowerCase()] - if (!config) throw new TypeError('invalid suite type') - - if (typeof password === 'string') password = Buffer.from(password) - if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length) - - if (typeof iv === 'string') iv = Buffer.from(iv) - if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length) - - if (config.type === 'stream') { - return new StreamCipher(config.module, password, iv) - } else if (config.type === 'auth') { - return new AuthCipher(config.module, password, iv) - } - - return new Cipher(config.module, password, iv) -} - -function createCipher (suite, password) { - var config = MODES[suite.toLowerCase()] - if (!config) throw new TypeError('invalid suite type') - - var keys = ebtk(password, false, config.key, config.iv) - return createCipheriv(suite, keys.key, keys.iv) -} - -exports.createCipheriv = createCipheriv -exports.createCipher = createCipher - -},{"./aes":150,"./authCipher":151,"./modes":163,"./streamCipher":166,"cipher-base":184,"evp_bytestokey":222,"inherits":262,"safe-buffer":318}],155:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer -var ZEROES = Buffer.alloc(16, 0) - -function toArray (buf) { - return [ - buf.readUInt32BE(0), - buf.readUInt32BE(4), - buf.readUInt32BE(8), - buf.readUInt32BE(12) - ] -} - -function fromArray (out) { - var buf = Buffer.allocUnsafe(16) - buf.writeUInt32BE(out[0] >>> 0, 0) - buf.writeUInt32BE(out[1] >>> 0, 4) - buf.writeUInt32BE(out[2] >>> 0, 8) - buf.writeUInt32BE(out[3] >>> 0, 12) - return buf -} - -function GHASH (key) { - this.h = key - this.state = Buffer.alloc(16, 0) - this.cache = Buffer.allocUnsafe(0) -} - -// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html -// by Juho Vähä-Herttua -GHASH.prototype.ghash = function (block) { - var i = -1 - while (++i < block.length) { - this.state[i] ^= block[i] - } - this._multiply() -} - -GHASH.prototype._multiply = function () { - var Vi = toArray(this.h) - var Zi = [0, 0, 0, 0] - var j, xi, lsbVi - var i = -1 - while (++i < 128) { - xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0 - if (xi) { - // Z_i+1 = Z_i ^ V_i - Zi[0] ^= Vi[0] - Zi[1] ^= Vi[1] - Zi[2] ^= Vi[2] - Zi[3] ^= Vi[3] - } - - // Store the value of LSB(V_i) - lsbVi = (Vi[3] & 1) !== 0 - - // V_i+1 = V_i >> 1 - for (j = 3; j > 0; j--) { - Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31) - } - Vi[0] = Vi[0] >>> 1 - - // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R - if (lsbVi) { - Vi[0] = Vi[0] ^ (0xe1 << 24) - } - } - this.state = fromArray(Zi) -} - -GHASH.prototype.update = function (buf) { - this.cache = Buffer.concat([this.cache, buf]) - var chunk - while (this.cache.length >= 16) { - chunk = this.cache.slice(0, 16) - this.cache = this.cache.slice(16) - this.ghash(chunk) - } -} - -GHASH.prototype.final = function (abl, bl) { - if (this.cache.length) { - this.ghash(Buffer.concat([this.cache, ZEROES], 16)) - } - - this.ghash(fromArray([0, abl, 0, bl])) - return this.state -} - -module.exports = GHASH - -},{"safe-buffer":318}],156:[function(require,module,exports){ -function incr32 (iv) { - var len = iv.length - var item - while (len--) { - item = iv.readUInt8(len) - if (item === 255) { - iv.writeUInt8(0, len) - } else { - item++ - iv.writeUInt8(item, len) - break - } - } -} -module.exports = incr32 - -},{}],157:[function(require,module,exports){ -var xor = require('buffer-xor') - -exports.encrypt = function (self, block) { - var data = xor(block, self._prev) - - self._prev = self._cipher.encryptBlock(data) - return self._prev -} - -exports.decrypt = function (self, block) { - var pad = self._prev - - self._prev = block - var out = self._cipher.decryptBlock(block) - - return xor(out, pad) -} - -},{"buffer-xor":181}],158:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer -var xor = require('buffer-xor') - -function encryptStart (self, data, decrypt) { - var len = data.length - var out = xor(data, self._cache) - self._cache = self._cache.slice(len) - self._prev = Buffer.concat([self._prev, decrypt ? data : out]) - return out -} - -exports.encrypt = function (self, data, decrypt) { - var out = Buffer.allocUnsafe(0) - var len - - while (data.length) { - if (self._cache.length === 0) { - self._cache = self._cipher.encryptBlock(self._prev) - self._prev = Buffer.allocUnsafe(0) - } - - if (self._cache.length <= data.length) { - len = self._cache.length - out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)]) - data = data.slice(len) - } else { - out = Buffer.concat([out, encryptStart(self, data, decrypt)]) - break - } - } - - return out -} - -},{"buffer-xor":181,"safe-buffer":318}],159:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer - -function encryptByte (self, byteParam, decrypt) { - var pad - var i = -1 - var len = 8 - var out = 0 - var bit, value - while (++i < len) { - pad = self._cipher.encryptBlock(self._prev) - bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0 - value = pad[0] ^ bit - out += ((value & 0x80) >> (i % 8)) - self._prev = shiftIn(self._prev, decrypt ? bit : value) - } - return out -} - -function shiftIn (buffer, value) { - var len = buffer.length - var i = -1 - var out = Buffer.allocUnsafe(buffer.length) - buffer = Buffer.concat([buffer, Buffer.from([value])]) - - while (++i < len) { - out[i] = buffer[i] << 1 | buffer[i + 1] >> (7) - } - - return out -} - -exports.encrypt = function (self, chunk, decrypt) { - var len = chunk.length - var out = Buffer.allocUnsafe(len) - var i = -1 - - while (++i < len) { - out[i] = encryptByte(self, chunk[i], decrypt) - } - - return out -} - -},{"safe-buffer":318}],160:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer - -function encryptByte (self, byteParam, decrypt) { - var pad = self._cipher.encryptBlock(self._prev) - var out = pad[0] ^ byteParam - - self._prev = Buffer.concat([ - self._prev.slice(1), - Buffer.from([decrypt ? byteParam : out]) - ]) - - return out -} - -exports.encrypt = function (self, chunk, decrypt) { - var len = chunk.length - var out = Buffer.allocUnsafe(len) - var i = -1 - - while (++i < len) { - out[i] = encryptByte(self, chunk[i], decrypt) - } - - return out -} - -},{"safe-buffer":318}],161:[function(require,module,exports){ -var xor = require('buffer-xor') -var Buffer = require('safe-buffer').Buffer -var incr32 = require('../incr32') - -function getBlock (self) { - var out = self._cipher.encryptBlockRaw(self._prev) - incr32(self._prev) - return out -} - -var blockSize = 16 -exports.encrypt = function (self, chunk) { - var chunkNum = Math.ceil(chunk.length / blockSize) - var start = self._cache.length - self._cache = Buffer.concat([ - self._cache, - Buffer.allocUnsafe(chunkNum * blockSize) - ]) - for (var i = 0; i < chunkNum; i++) { - var out = getBlock(self) - var offset = start + i * blockSize - self._cache.writeUInt32BE(out[0], offset + 0) - self._cache.writeUInt32BE(out[1], offset + 4) - self._cache.writeUInt32BE(out[2], offset + 8) - self._cache.writeUInt32BE(out[3], offset + 12) - } - var pad = self._cache.slice(0, chunk.length) - self._cache = self._cache.slice(chunk.length) - return xor(chunk, pad) -} - -},{"../incr32":156,"buffer-xor":181,"safe-buffer":318}],162:[function(require,module,exports){ -exports.encrypt = function (self, block) { - return self._cipher.encryptBlock(block) -} - -exports.decrypt = function (self, block) { - return self._cipher.decryptBlock(block) -} - -},{}],163:[function(require,module,exports){ -var modeModules = { - ECB: require('./ecb'), - CBC: require('./cbc'), - CFB: require('./cfb'), - CFB8: require('./cfb8'), - CFB1: require('./cfb1'), - OFB: require('./ofb'), - CTR: require('./ctr'), - GCM: require('./ctr') -} - -var modes = require('./list.json') - -for (var key in modes) { - modes[key].module = modeModules[modes[key].mode] -} - -module.exports = modes - -},{"./cbc":157,"./cfb":158,"./cfb1":159,"./cfb8":160,"./ctr":161,"./ecb":162,"./list.json":164,"./ofb":165}],164:[function(require,module,exports){ -module.exports={ - "aes-128-ecb": { - "cipher": "AES", - "key": 128, - "iv": 0, - "mode": "ECB", - "type": "block" - }, - "aes-192-ecb": { - "cipher": "AES", - "key": 192, - "iv": 0, - "mode": "ECB", - "type": "block" - }, - "aes-256-ecb": { - "cipher": "AES", - "key": 256, - "iv": 0, - "mode": "ECB", - "type": "block" - }, - "aes-128-cbc": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes-192-cbc": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes-256-cbc": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes128": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes192": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes256": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CBC", - "type": "block" - }, - "aes-128-cfb": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CFB", - "type": "stream" - }, - "aes-192-cfb": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CFB", - "type": "stream" - }, - "aes-256-cfb": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CFB", - "type": "stream" - }, - "aes-128-cfb8": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CFB8", - "type": "stream" - }, - "aes-192-cfb8": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CFB8", - "type": "stream" - }, - "aes-256-cfb8": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CFB8", - "type": "stream" - }, - "aes-128-cfb1": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CFB1", - "type": "stream" - }, - "aes-192-cfb1": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CFB1", - "type": "stream" - }, - "aes-256-cfb1": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CFB1", - "type": "stream" - }, - "aes-128-ofb": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "OFB", - "type": "stream" - }, - "aes-192-ofb": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "OFB", - "type": "stream" - }, - "aes-256-ofb": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "OFB", - "type": "stream" - }, - "aes-128-ctr": { - "cipher": "AES", - "key": 128, - "iv": 16, - "mode": "CTR", - "type": "stream" - }, - "aes-192-ctr": { - "cipher": "AES", - "key": 192, - "iv": 16, - "mode": "CTR", - "type": "stream" - }, - "aes-256-ctr": { - "cipher": "AES", - "key": 256, - "iv": 16, - "mode": "CTR", - "type": "stream" - }, - "aes-128-gcm": { - "cipher": "AES", - "key": 128, - "iv": 12, - "mode": "GCM", - "type": "auth" - }, - "aes-192-gcm": { - "cipher": "AES", - "key": 192, - "iv": 12, - "mode": "GCM", - "type": "auth" - }, - "aes-256-gcm": { - "cipher": "AES", - "key": 256, - "iv": 12, - "mode": "GCM", - "type": "auth" - } -} - -},{}],165:[function(require,module,exports){ -(function (Buffer){ -var xor = require('buffer-xor') - -function getBlock (self) { - self._prev = self._cipher.encryptBlock(self._prev) - return self._prev -} - -exports.encrypt = function (self, chunk) { - while (self._cache.length < chunk.length) { - self._cache = Buffer.concat([self._cache, getBlock(self)]) - } - - var pad = self._cache.slice(0, chunk.length) - self._cache = self._cache.slice(chunk.length) - return xor(chunk, pad) -} - -}).call(this,require("buffer").Buffer) -},{"buffer":182,"buffer-xor":181}],166:[function(require,module,exports){ -var aes = require('./aes') -var Buffer = require('safe-buffer').Buffer -var Transform = require('cipher-base') -var inherits = require('inherits') - -function StreamCipher (mode, key, iv, decrypt) { - Transform.call(this) - - this._cipher = new aes.AES(key) - this._prev = Buffer.from(iv) - this._cache = Buffer.allocUnsafe(0) - this._secCache = Buffer.allocUnsafe(0) - this._decrypt = decrypt - this._mode = mode -} - -inherits(StreamCipher, Transform) - -StreamCipher.prototype._update = function (chunk) { - return this._mode.encrypt(this, chunk, this._decrypt) -} - -StreamCipher.prototype._final = function () { - this._cipher.scrub() -} - -module.exports = StreamCipher - -},{"./aes":150,"cipher-base":184,"inherits":262,"safe-buffer":318}],167:[function(require,module,exports){ -var DES = require('browserify-des') -var aes = require('browserify-aes/browser') -var aesModes = require('browserify-aes/modes') -var desModes = require('browserify-des/modes') -var ebtk = require('evp_bytestokey') - -function createCipher (suite, password) { - suite = suite.toLowerCase() - - var keyLen, ivLen - if (aesModes[suite]) { - keyLen = aesModes[suite].key - ivLen = aesModes[suite].iv - } else if (desModes[suite]) { - keyLen = desModes[suite].key * 8 - ivLen = desModes[suite].iv - } else { - throw new TypeError('invalid suite type') - } - - var keys = ebtk(password, false, keyLen, ivLen) - return createCipheriv(suite, keys.key, keys.iv) -} - -function createDecipher (suite, password) { - suite = suite.toLowerCase() - - var keyLen, ivLen - if (aesModes[suite]) { - keyLen = aesModes[suite].key - ivLen = aesModes[suite].iv - } else if (desModes[suite]) { - keyLen = desModes[suite].key * 8 - ivLen = desModes[suite].iv - } else { - throw new TypeError('invalid suite type') - } - - var keys = ebtk(password, false, keyLen, ivLen) - return createDecipheriv(suite, keys.key, keys.iv) -} - -function createCipheriv (suite, key, iv) { - suite = suite.toLowerCase() - if (aesModes[suite]) return aes.createCipheriv(suite, key, iv) - if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite }) - - throw new TypeError('invalid suite type') -} - -function createDecipheriv (suite, key, iv) { - suite = suite.toLowerCase() - if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv) - if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true }) - - throw new TypeError('invalid suite type') -} - -function getCiphers () { - return Object.keys(desModes).concat(aes.getCiphers()) -} - -exports.createCipher = exports.Cipher = createCipher -exports.createCipheriv = exports.Cipheriv = createCipheriv -exports.createDecipher = exports.Decipher = createDecipher -exports.createDecipheriv = exports.Decipheriv = createDecipheriv -exports.listCiphers = exports.getCiphers = getCiphers - -},{"browserify-aes/browser":152,"browserify-aes/modes":163,"browserify-des":168,"browserify-des/modes":169,"evp_bytestokey":222}],168:[function(require,module,exports){ -var CipherBase = require('cipher-base') -var des = require('des.js') -var inherits = require('inherits') -var Buffer = require('safe-buffer').Buffer - -var modes = { - 'des-ede3-cbc': des.CBC.instantiate(des.EDE), - 'des-ede3': des.EDE, - 'des-ede-cbc': des.CBC.instantiate(des.EDE), - 'des-ede': des.EDE, - 'des-cbc': des.CBC.instantiate(des.DES), - 'des-ecb': des.DES -} -modes.des = modes['des-cbc'] -modes.des3 = modes['des-ede3-cbc'] -module.exports = DES -inherits(DES, CipherBase) -function DES (opts) { - CipherBase.call(this) - var modeName = opts.mode.toLowerCase() - var mode = modes[modeName] - var type - if (opts.decrypt) { - type = 'decrypt' - } else { - type = 'encrypt' - } - var key = opts.key - if (!Buffer.isBuffer(key)) { - key = Buffer.from(key) - } - if (modeName === 'des-ede' || modeName === 'des-ede-cbc') { - key = Buffer.concat([key, key.slice(0, 8)]) - } - var iv = opts.iv - if (!Buffer.isBuffer(iv)) { - iv = Buffer.from(iv) - } - this._des = mode.create({ - key: key, - iv: iv, - type: type - }) -} -DES.prototype._update = function (data) { - return Buffer.from(this._des.update(data)) -} -DES.prototype._final = function () { - return Buffer.from(this._des.final()) -} - -},{"cipher-base":184,"des.js":195,"inherits":262,"safe-buffer":318}],169:[function(require,module,exports){ -exports['des-ecb'] = { - key: 8, - iv: 0 -} -exports['des-cbc'] = exports.des = { - key: 8, - iv: 8 -} -exports['des-ede3-cbc'] = exports.des3 = { - key: 24, - iv: 8 -} -exports['des-ede3'] = { - key: 24, - iv: 0 -} -exports['des-ede-cbc'] = { - key: 16, - iv: 8 -} -exports['des-ede'] = { - key: 16, - iv: 0 -} - -},{}],170:[function(require,module,exports){ -(function (Buffer){ -var bn = require('bn.js'); -var randomBytes = require('randombytes'); -module.exports = crt; -function blind(priv) { - var r = getr(priv); - var blinder = r.toRed(bn.mont(priv.modulus)) - .redPow(new bn(priv.publicExponent)).fromRed(); - return { - blinder: blinder, - unblinder:r.invm(priv.modulus) - }; -} -function crt(msg, priv) { - var blinds = blind(priv); - var len = priv.modulus.byteLength(); - var mod = bn.mont(priv.modulus); - var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus); - var c1 = blinded.toRed(bn.mont(priv.prime1)); - var c2 = blinded.toRed(bn.mont(priv.prime2)); - var qinv = priv.coefficient; - var p = priv.prime1; - var q = priv.prime2; - var m1 = c1.redPow(priv.exponent1); - var m2 = c2.redPow(priv.exponent2); - m1 = m1.fromRed(); - m2 = m2.fromRed(); - var h = m1.isub(m2).imul(qinv).umod(p); - h.imul(q); - m2.iadd(h); - return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len)); -} -crt.getr = getr; -function getr(priv) { - var len = priv.modulus.byteLength(); - var r = new bn(randomBytes(len)); - while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) { - r = new bn(randomBytes(len)); - } - return r; -} - -}).call(this,require("buffer").Buffer) -},{"bn.js":147,"buffer":182,"randombytes":298}],171:[function(require,module,exports){ -module.exports = require('./browser/algorithms.json') - -},{"./browser/algorithms.json":172}],172:[function(require,module,exports){ -module.exports={ - "sha224WithRSAEncryption": { - "sign": "rsa", - "hash": "sha224", - "id": "302d300d06096086480165030402040500041c" - }, - "RSA-SHA224": { - "sign": "ecdsa/rsa", - "hash": "sha224", - "id": "302d300d06096086480165030402040500041c" - }, - "sha256WithRSAEncryption": { - "sign": "rsa", - "hash": "sha256", - "id": "3031300d060960864801650304020105000420" - }, - "RSA-SHA256": { - "sign": "ecdsa/rsa", - "hash": "sha256", - "id": "3031300d060960864801650304020105000420" - }, - "sha384WithRSAEncryption": { - "sign": "rsa", - "hash": "sha384", - "id": "3041300d060960864801650304020205000430" - }, - "RSA-SHA384": { - "sign": "ecdsa/rsa", - "hash": "sha384", - "id": "3041300d060960864801650304020205000430" - }, - "sha512WithRSAEncryption": { - "sign": "rsa", - "hash": "sha512", - "id": "3051300d060960864801650304020305000440" - }, - "RSA-SHA512": { - "sign": "ecdsa/rsa", - "hash": "sha512", - "id": "3051300d060960864801650304020305000440" - }, - "RSA-SHA1": { - "sign": "rsa", - "hash": "sha1", - "id": "3021300906052b0e03021a05000414" - }, - "ecdsa-with-SHA1": { - "sign": "ecdsa", - "hash": "sha1", - "id": "" - }, - "sha256": { - "sign": "ecdsa", - "hash": "sha256", - "id": "" - }, - "sha224": { - "sign": "ecdsa", - "hash": "sha224", - "id": "" - }, - "sha384": { - "sign": "ecdsa", - "hash": "sha384", - "id": "" - }, - "sha512": { - "sign": "ecdsa", - "hash": "sha512", - "id": "" - }, - "DSA-SHA": { - "sign": "dsa", - "hash": "sha1", - "id": "" - }, - "DSA-SHA1": { - "sign": "dsa", - "hash": "sha1", - "id": "" - }, - "DSA": { - "sign": "dsa", - "hash": "sha1", - "id": "" - }, - "DSA-WITH-SHA224": { - "sign": "dsa", - "hash": "sha224", - "id": "" - }, - "DSA-SHA224": { - "sign": "dsa", - "hash": "sha224", - "id": "" - }, - "DSA-WITH-SHA256": { - "sign": "dsa", - "hash": "sha256", - "id": "" - }, - "DSA-SHA256": { - "sign": "dsa", - "hash": "sha256", - "id": "" - }, - "DSA-WITH-SHA384": { - "sign": "dsa", - "hash": "sha384", - "id": "" - }, - "DSA-SHA384": { - "sign": "dsa", - "hash": "sha384", - "id": "" - }, - "DSA-WITH-SHA512": { - "sign": "dsa", - "hash": "sha512", - "id": "" - }, - "DSA-SHA512": { - "sign": "dsa", - "hash": "sha512", - "id": "" - }, - "DSA-RIPEMD160": { - "sign": "dsa", - "hash": "rmd160", - "id": "" - }, - "ripemd160WithRSA": { - "sign": "rsa", - "hash": "rmd160", - "id": "3021300906052b2403020105000414" - }, - "RSA-RIPEMD160": { - "sign": "rsa", - "hash": "rmd160", - "id": "3021300906052b2403020105000414" - }, - "md5WithRSAEncryption": { - "sign": "rsa", - "hash": "md5", - "id": "3020300c06082a864886f70d020505000410" - }, - "RSA-MD5": { - "sign": "rsa", - "hash": "md5", - "id": "3020300c06082a864886f70d020505000410" - } -} - -},{}],173:[function(require,module,exports){ -module.exports={ - "1.3.132.0.10": "secp256k1", - "1.3.132.0.33": "p224", - "1.2.840.10045.3.1.1": "p192", - "1.2.840.10045.3.1.7": "p256", - "1.3.132.0.34": "p384", - "1.3.132.0.35": "p521" -} - -},{}],174:[function(require,module,exports){ -(function (Buffer){ -var createHash = require('create-hash') -var stream = require('stream') -var inherits = require('inherits') -var sign = require('./sign') -var verify = require('./verify') - -var algorithms = require('./algorithms.json') -Object.keys(algorithms).forEach(function (key) { - algorithms[key].id = new Buffer(algorithms[key].id, 'hex') - algorithms[key.toLowerCase()] = algorithms[key] -}) - -function Sign (algorithm) { - stream.Writable.call(this) - - var data = algorithms[algorithm] - if (!data) throw new Error('Unknown message digest') - - this._hashType = data.hash - this._hash = createHash(data.hash) - this._tag = data.id - this._signType = data.sign -} -inherits(Sign, stream.Writable) - -Sign.prototype._write = function _write (data, _, done) { - this._hash.update(data) - done() -} - -Sign.prototype.update = function update (data, enc) { - if (typeof data === 'string') data = new Buffer(data, enc) - - this._hash.update(data) - return this -} - -Sign.prototype.sign = function signMethod (key, enc) { - this.end() - var hash = this._hash.digest() - var sig = sign(hash, key, this._hashType, this._signType, this._tag) - - return enc ? sig.toString(enc) : sig -} - -function Verify (algorithm) { - stream.Writable.call(this) - - var data = algorithms[algorithm] - if (!data) throw new Error('Unknown message digest') - - this._hash = createHash(data.hash) - this._tag = data.id - this._signType = data.sign -} -inherits(Verify, stream.Writable) - -Verify.prototype._write = function _write (data, _, done) { - this._hash.update(data) - done() -} - -Verify.prototype.update = function update (data, enc) { - if (typeof data === 'string') data = new Buffer(data, enc) - - this._hash.update(data) - return this -} - -Verify.prototype.verify = function verifyMethod (key, sig, enc) { - if (typeof sig === 'string') sig = new Buffer(sig, enc) - - this.end() - var hash = this._hash.digest() - return verify(sig, hash, key, this._signType, this._tag) -} - -function createSign (algorithm) { - return new Sign(algorithm) -} - -function createVerify (algorithm) { - return new Verify(algorithm) -} - -module.exports = { - Sign: createSign, - Verify: createVerify, - createSign: createSign, - createVerify: createVerify -} - -}).call(this,require("buffer").Buffer) -},{"./algorithms.json":172,"./sign":175,"./verify":176,"buffer":182,"create-hash":188,"inherits":262,"stream":328}],175:[function(require,module,exports){ -(function (Buffer){ -// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js -var createHmac = require('create-hmac') -var crt = require('browserify-rsa') -var EC = require('elliptic').ec -var BN = require('bn.js') -var parseKeys = require('parse-asn1') -var curves = require('./curves.json') - -function sign (hash, key, hashType, signType, tag) { - var priv = parseKeys(key) - if (priv.curve) { - // rsa keys can be interpreted as ecdsa ones in openssl - if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type') - return ecSign(hash, priv) - } else if (priv.type === 'dsa') { - if (signType !== 'dsa') throw new Error('wrong private key type') - return dsaSign(hash, priv, hashType) - } else { - if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type') - } - hash = Buffer.concat([tag, hash]) - var len = priv.modulus.byteLength() - var pad = [ 0, 1 ] - while (hash.length + pad.length + 1 < len) pad.push(0xff) - pad.push(0x00) - var i = -1 - while (++i < hash.length) pad.push(hash[i]) - - var out = crt(pad, priv) - return out -} - -function ecSign (hash, priv) { - var curveId = curves[priv.curve.join('.')] - if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.')) - - var curve = new EC(curveId) - var key = curve.keyFromPrivate(priv.privateKey) - var out = key.sign(hash) - - return new Buffer(out.toDER()) -} - -function dsaSign (hash, priv, algo) { - var x = priv.params.priv_key - var p = priv.params.p - var q = priv.params.q - var g = priv.params.g - var r = new BN(0) - var k - var H = bits2int(hash, q).mod(q) - var s = false - var kv = getKey(x, q, hash, algo) - while (s === false) { - k = makeKey(q, kv, algo) - r = makeR(g, k, p, q) - s = k.invm(q).imul(H.add(x.mul(r))).mod(q) - if (s.cmpn(0) === 0) { - s = false - r = new BN(0) - } - } - return toDER(r, s) -} - -function toDER (r, s) { - r = r.toArray() - s = s.toArray() - - // Pad values - if (r[0] & 0x80) r = [ 0 ].concat(r) - if (s[0] & 0x80) s = [ 0 ].concat(s) - - var total = r.length + s.length + 4 - var res = [ 0x30, total, 0x02, r.length ] - res = res.concat(r, [ 0x02, s.length ], s) - return new Buffer(res) -} - -function getKey (x, q, hash, algo) { - x = new Buffer(x.toArray()) - if (x.length < q.byteLength()) { - var zeros = new Buffer(q.byteLength() - x.length) - zeros.fill(0) - x = Buffer.concat([ zeros, x ]) - } - var hlen = hash.length - var hbits = bits2octets(hash, q) - var v = new Buffer(hlen) - v.fill(1) - var k = new Buffer(hlen) - k.fill(0) - k = createHmac(algo, k).update(v).update(new Buffer([ 0 ])).update(x).update(hbits).digest() - v = createHmac(algo, k).update(v).digest() - k = createHmac(algo, k).update(v).update(new Buffer([ 1 ])).update(x).update(hbits).digest() - v = createHmac(algo, k).update(v).digest() - return { k: k, v: v } -} - -function bits2int (obits, q) { - var bits = new BN(obits) - var shift = (obits.length << 3) - q.bitLength() - if (shift > 0) bits.ishrn(shift) - return bits -} - -function bits2octets (bits, q) { - bits = bits2int(bits, q) - bits = bits.mod(q) - var out = new Buffer(bits.toArray()) - if (out.length < q.byteLength()) { - var zeros = new Buffer(q.byteLength() - out.length) - zeros.fill(0) - out = Buffer.concat([ zeros, out ]) - } - return out -} - -function makeKey (q, kv, algo) { - var t - var k - - do { - t = new Buffer(0) - - while (t.length * 8 < q.bitLength()) { - kv.v = createHmac(algo, kv.k).update(kv.v).digest() - t = Buffer.concat([ t, kv.v ]) - } - - k = bits2int(t, q) - kv.k = createHmac(algo, kv.k).update(kv.v).update(new Buffer([ 0 ])).digest() - kv.v = createHmac(algo, kv.k).update(kv.v).digest() - } while (k.cmp(q) !== -1) - - return k -} - -function makeR (g, k, p, q) { - return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q) -} - -module.exports = sign -module.exports.getKey = getKey -module.exports.makeKey = makeKey - -}).call(this,require("buffer").Buffer) -},{"./curves.json":173,"bn.js":147,"browserify-rsa":170,"buffer":182,"create-hmac":190,"elliptic":205,"parse-asn1":275}],176:[function(require,module,exports){ -(function (Buffer){ -// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js -var BN = require('bn.js') -var EC = require('elliptic').ec -var parseKeys = require('parse-asn1') -var curves = require('./curves.json') - -function verify (sig, hash, key, signType, tag) { - var pub = parseKeys(key) - if (pub.type === 'ec') { - // rsa keys can be interpreted as ecdsa ones in openssl - if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type') - return ecVerify(sig, hash, pub) - } else if (pub.type === 'dsa') { - if (signType !== 'dsa') throw new Error('wrong public key type') - return dsaVerify(sig, hash, pub) - } else { - if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type') - } - hash = Buffer.concat([tag, hash]) - var len = pub.modulus.byteLength() - var pad = [ 1 ] - var padNum = 0 - while (hash.length + pad.length + 2 < len) { - pad.push(0xff) - padNum++ - } - pad.push(0x00) - var i = -1 - while (++i < hash.length) { - pad.push(hash[i]) - } - pad = new Buffer(pad) - var red = BN.mont(pub.modulus) - sig = new BN(sig).toRed(red) - - sig = sig.redPow(new BN(pub.publicExponent)) - sig = new Buffer(sig.fromRed().toArray()) - var out = padNum < 8 ? 1 : 0 - len = Math.min(sig.length, pad.length) - if (sig.length !== pad.length) out = 1 - - i = -1 - while (++i < len) out |= sig[i] ^ pad[i] - return out === 0 -} - -function ecVerify (sig, hash, pub) { - var curveId = curves[pub.data.algorithm.curve.join('.')] - if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')) - - var curve = new EC(curveId) - var pubkey = pub.data.subjectPrivateKey.data - - return curve.verify(hash, sig, pubkey) -} - -function dsaVerify (sig, hash, pub) { - var p = pub.data.p - var q = pub.data.q - var g = pub.data.g - var y = pub.data.pub_key - var unpacked = parseKeys.signature.decode(sig, 'der') - var s = unpacked.s - var r = unpacked.r - checkValue(s, q) - checkValue(r, q) - var montp = BN.mont(p) - var w = s.invm(q) - var v = g.toRed(montp) - .redPow(new BN(hash).mul(w).mod(q)) - .fromRed() - .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()) - .mod(p) - .mod(q) - return v.cmp(r) === 0 -} - -function checkValue (b, q) { - if (b.cmpn(0) <= 0) throw new Error('invalid sig') - if (b.cmp(q) >= q) throw new Error('invalid sig') -} - -module.exports = verify - -}).call(this,require("buffer").Buffer) -},{"./curves.json":173,"bn.js":147,"buffer":182,"elliptic":205,"parse-asn1":275}],177:[function(require,module,exports){ -arguments[4][149][0].apply(exports,arguments) -},{"dup":149}],178:[function(require,module,exports){ -/* eslint-disable node/no-deprecated-api */ -var buffer = require('buffer') -var Buffer = buffer.Buffer - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) - } - return buf -} - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -} - -},{"buffer":182}],179:[function(require,module,exports){ -'use strict'; - -var Buffer = require('safe-buffer').Buffer; - -var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.toLowerCase()) { - case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': - return true; - default: - return false; - } -}; - -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - case 'latin1': - case 'binary': - return 'latin1'; - case 'base64': - case 'ascii': - case 'hex': - return enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } - } -}; - -// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -exports.StringDecoder = StringDecoder; -function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); -} - -StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; - -StringDecoder.prototype.end = utf8End; - -// Returns only complete characters in a Buffer -StringDecoder.prototype.text = utf8Text; - -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; - -// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. -function utf8CheckByte(byte) { - if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; - return -1; -} - -// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - return nb; - } - return 0; -} - -// Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'.repeat(p); - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'.repeat(p + 1); - } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'.repeat(p + 2); - } - } - } -} - -// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf, p); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} - -// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a -// partial character, the character's bytes are buffered until the required -// number of bytes are available. -function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); -} - -// For UTF-8, a replacement character for each buffered byte of a (partial) -// character needs to be added to the output. -function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed); - return r; -} - -// UTF-16LE typically needs two bytes per character, but even if we have an even -// number of bytes available, we need to check if we end on a leading/high -// surrogate. In that case, we need to wait for the next two bytes in order to -// decode the last character properly. -function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - if (r) { - var c = r.charCodeAt(r.length - 1); - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - return r; - } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} - -// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - return r; -} - -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - return buf.toString('base64', i, buf.length - n); -} - -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; -} - -// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function simpleWrite(buf) { - return buf.toString(this.encoding); -} - -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; -} -},{"safe-buffer":178}],180:[function(require,module,exports){ -(function (Buffer){ -var toString = Object.prototype.toString - -var isModern = ( - typeof Buffer.alloc === 'function' && - typeof Buffer.allocUnsafe === 'function' && - typeof Buffer.from === 'function' -) - -function isArrayBuffer (input) { - return toString.call(input).slice(8, -1) === 'ArrayBuffer' -} - -function fromArrayBuffer (obj, byteOffset, length) { - byteOffset >>>= 0 - - var maxLength = obj.byteLength - byteOffset - - if (maxLength < 0) { - throw new RangeError("'offset' is out of bounds") - } - - if (length === undefined) { - length = maxLength - } else { - length >>>= 0 - - if (length > maxLength) { - throw new RangeError("'length' is out of bounds") - } - } - - return isModern - ? Buffer.from(obj.slice(byteOffset, byteOffset + length)) - : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length))) -} - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('"encoding" must be a valid string encoding') - } - - return isModern - ? Buffer.from(string, encoding) - : new Buffer(string, encoding) -} - -function bufferFrom (value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number') - } - - if (isArrayBuffer(value)) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - return isModern - ? Buffer.from(value) - : new Buffer(value) -} - -module.exports = bufferFrom - -}).call(this,require("buffer").Buffer) -},{"buffer":182}],181:[function(require,module,exports){ -(function (Buffer){ -module.exports = function xor (a, b) { - var length = Math.min(a.length, b.length) - var buffer = new Buffer(length) - - for (var i = 0; i < length; ++i) { - buffer[i] = a[i] ^ b[i] - } - - return buffer -} - -}).call(this,require("buffer").Buffer) -},{"buffer":182}],182:[function(require,module,exports){ -(function (Buffer){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - -'use strict' - -var base64 = require('base64-js') -var ieee754 = require('ieee754') -var customInspectSymbol = - (typeof Symbol === 'function' && typeof Symbol.for === 'function') - ? Symbol.for('nodejs.util.inspect.custom') - : null - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 - -var K_MAX_LENGTH = 0x7fffffff -exports.kMaxLength = K_MAX_LENGTH - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() - -if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && - typeof console.error === 'function') { - console.error( - 'This browser lacks typed array (Uint8Array) support which is required by ' + - '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' - ) -} - -function typedArraySupport () { - // Can typed array instances can be augmented? - try { - var arr = new Uint8Array(1) - var proto = { foo: function () { return 42 } } - Object.setPrototypeOf(proto, Uint8Array.prototype) - Object.setPrototypeOf(arr, proto) - return arr.foo() === 42 - } catch (e) { - return false - } -} - -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.buffer - } -}) - -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.byteOffset - } -}) - -function createBuffer (length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"') - } - // Return an augmented `Uint8Array` instance - var buf = new Uint8Array(length) - Object.setPrototypeOf(buf, Buffer.prototype) - return buf -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ) - } - return allocUnsafe(arg) - } - return from(arg, encodingOrOffset, length) -} - -// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 -if (typeof Symbol !== 'undefined' && Symbol.species != null && - Buffer[Symbol.species] === Buffer) { - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true, - enumerable: false, - writable: false - }) -} - -Buffer.poolSize = 8192 // not used by this implementation - -function from (value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - if (ArrayBuffer.isView(value)) { - return fromArrayLike(value) - } - - if (value == null) { - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) - } - - if (isInstance(value, ArrayBuffer) || - (value && isInstance(value.buffer, ArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'number') { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ) - } - - var valueOf = value.valueOf && value.valueOf() - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length) - } - - var b = fromObject(value) - if (b) return b - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && - typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from( - value[Symbol.toPrimitive]('string'), encodingOrOffset, length - ) - } - - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length) -} - -// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 -Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype) -Object.setPrototypeOf(Buffer, Uint8Array) - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number') - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } -} - -function alloc (size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(size).fill(fill, encoding) - : createBuffer(size).fill(fill) - } - return createBuffer(size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding) -} - -function allocUnsafe (size) { - assertSize(size) - return createBuffer(size < 0 ? 0 : checked(size) | 0) -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size) -} -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size) -} - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - - var length = byteLength(string, encoding) | 0 - var buf = createBuffer(length) - - var actual = buf.write(string, encoding) - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual) - } - - return buf -} - -function fromArrayLike (array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0 - var buf = createBuffer(length) - for (var i = 0; i < length; i += 1) { - buf[i] = array[i] & 255 - } - return buf -} - -function fromArrayBuffer (array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds') - } - - var buf - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array) - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset) - } else { - buf = new Uint8Array(array, byteOffset, length) - } - - // Return an augmented `Uint8Array` instance - Object.setPrototypeOf(buf, Buffer.prototype) - - return buf -} - -function fromObject (obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0 - var buf = createBuffer(len) - - if (buf.length === 0) { - return buf - } - - obj.copy(buf, 0, 0, len) - return buf - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0) - } - return fromArrayLike(obj) - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data) - } -} - -function checked (length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return b != null && b._isBuffer === true && - b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false -} - -Buffer.compare = function compare (a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ) - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } - - var buffer = Buffer.allocUnsafe(length) - var pos = 0 - for (i = 0; i < list.length; ++i) { - var buf = list[i] - if (isInstance(buf, Uint8Array)) { - buf = Buffer.from(buf) - } - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos) - pos += buf.length - } - return buffer -} - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + - 'Received type ' + typeof string - ) - } - - var len = string.length - var mustMatch = (arguments.length > 2 && arguments[2] === true) - if (!mustMatch && len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 - } - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - var loweredCase = false - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0 - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -Buffer.prototype._isBuffer = true - -function swap (b, n, m) { - var i = b[n] - b[n] = b[m] - b[m] = i -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1) - } - return this -} - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this -} - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) - } - return this -} - -Buffer.prototype.toString = function toString () { - var length = this.length - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.toLocaleString = Buffer.prototype.toString - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() - if (this.length > max) str += ' ... ' - return '' -} -if (customInspectSymbol) { - Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength) - } - if (!Buffer.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. ' + - 'Received type ' + (typeof target) - ) - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 - - if (this === target) return 0 - - var x = thisEnd - thisStart - var y = end - start - var len = Math.min(x, y) - - var thisCopy = this.slice(thisStart, thisEnd) - var targetCopy = target.slice(start, end) - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1) - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [val], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1 - var arrLength = arr.length - var valLength = val.length - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i - if (dir) { - var foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - var found = true - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -} - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - var strLen = string.length - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (numberIsNaN(parsed)) return i - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0 - if (isFinite(length)) { - length = length >>> 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] - - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; ++i) { - out += hexSliceLookupTable[buf[i]] - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf = this.subarray(start, end) - // Return an augmented `Uint8Array` instance - Object.setPrototypeOf(newBuf, Buffer.prototype) - - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('Index out of range') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end) - } else if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (var i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start] - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ) - } - - return len -} - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - if (val.length === 1) { - var code = val.charCodeAt(0) - if ((encoding === 'utf8' && code < 128) || - encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code - } - } - } else if (typeof val === 'number') { - val = val & 255 - } else if (typeof val === 'boolean') { - val = Number(val) - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 - - if (!val) val = 0 - - var i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : Buffer.from(val, encoding) - var len = bytes.length - if (len === 0) { - throw new TypeError('The value "' + val + - '" is invalid for argument "value"') - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] - } - } - - return this -} - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g - -function base64clean (str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0] - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = str.trim().replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - // valid lead - leadSurrogate = codePoint - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function isInstance (obj, type) { - return obj instanceof type || - (obj != null && obj.constructor != null && obj.constructor.name != null && - obj.constructor.name === type.name) -} -function numberIsNaN (obj) { - // For IE11 support - return obj !== obj // eslint-disable-line no-self-compare -} - -// Create lookup table for `toString('hex')` -// See: https://github.com/feross/buffer/issues/219 -var hexSliceLookupTable = (function () { - var alphabet = '0123456789abcdef' - var table = new Array(256) - for (var i = 0; i < 16; ++i) { - var i16 = i * 16 - for (var j = 0; j < 16; ++j) { - table[i16 + j] = alphabet[i] + alphabet[j] - } - } - return table -})() - -}).call(this,require("buffer").Buffer) -},{"base64-js":146,"buffer":182,"ieee754":241}],183:[function(require,module,exports){ -module.exports = { - "100": "Continue", - "101": "Switching Protocols", - "102": "Processing", - "200": "OK", - "201": "Created", - "202": "Accepted", - "203": "Non-Authoritative Information", - "204": "No Content", - "205": "Reset Content", - "206": "Partial Content", - "207": "Multi-Status", - "208": "Already Reported", - "226": "IM Used", - "300": "Multiple Choices", - "301": "Moved Permanently", - "302": "Found", - "303": "See Other", - "304": "Not Modified", - "305": "Use Proxy", - "307": "Temporary Redirect", - "308": "Permanent Redirect", - "400": "Bad Request", - "401": "Unauthorized", - "402": "Payment Required", - "403": "Forbidden", - "404": "Not Found", - "405": "Method Not Allowed", - "406": "Not Acceptable", - "407": "Proxy Authentication Required", - "408": "Request Timeout", - "409": "Conflict", - "410": "Gone", - "411": "Length Required", - "412": "Precondition Failed", - "413": "Payload Too Large", - "414": "URI Too Long", - "415": "Unsupported Media Type", - "416": "Range Not Satisfiable", - "417": "Expectation Failed", - "418": "I'm a teapot", - "421": "Misdirected Request", - "422": "Unprocessable Entity", - "423": "Locked", - "424": "Failed Dependency", - "425": "Unordered Collection", - "426": "Upgrade Required", - "428": "Precondition Required", - "429": "Too Many Requests", - "431": "Request Header Fields Too Large", - "451": "Unavailable For Legal Reasons", - "500": "Internal Server Error", - "501": "Not Implemented", - "502": "Bad Gateway", - "503": "Service Unavailable", - "504": "Gateway Timeout", - "505": "HTTP Version Not Supported", - "506": "Variant Also Negotiates", - "507": "Insufficient Storage", - "508": "Loop Detected", - "509": "Bandwidth Limit Exceeded", - "510": "Not Extended", - "511": "Network Authentication Required" -} - -},{}],184:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer -var Transform = require('stream').Transform -var StringDecoder = require('string_decoder').StringDecoder -var inherits = require('inherits') - -function CipherBase (hashMode) { - Transform.call(this) - this.hashMode = typeof hashMode === 'string' - if (this.hashMode) { - this[hashMode] = this._finalOrDigest - } else { - this.final = this._finalOrDigest - } - if (this._final) { - this.__final = this._final - this._final = null - } - this._decoder = null - this._encoding = null -} -inherits(CipherBase, Transform) - -CipherBase.prototype.update = function (data, inputEnc, outputEnc) { - if (typeof data === 'string') { - data = Buffer.from(data, inputEnc) - } - - var outData = this._update(data) - if (this.hashMode) return this - - if (outputEnc) { - outData = this._toString(outData, outputEnc) - } - - return outData -} - -CipherBase.prototype.setAutoPadding = function () {} -CipherBase.prototype.getAuthTag = function () { - throw new Error('trying to get auth tag in unsupported state') -} - -CipherBase.prototype.setAuthTag = function () { - throw new Error('trying to set auth tag in unsupported state') -} - -CipherBase.prototype.setAAD = function () { - throw new Error('trying to set aad in unsupported state') -} - -CipherBase.prototype._transform = function (data, _, next) { - var err - try { - if (this.hashMode) { - this._update(data) - } else { - this.push(this._update(data)) - } - } catch (e) { - err = e - } finally { - next(err) - } -} -CipherBase.prototype._flush = function (done) { - var err - try { - this.push(this.__final()) - } catch (e) { - err = e - } - - done(err) -} -CipherBase.prototype._finalOrDigest = function (outputEnc) { - var outData = this.__final() || Buffer.alloc(0) - if (outputEnc) { - outData = this._toString(outData, outputEnc, true) - } - return outData -} - -CipherBase.prototype._toString = function (value, enc, fin) { - if (!this._decoder) { - this._decoder = new StringDecoder(enc) - this._encoding = enc - } - - if (this._encoding !== enc) throw new Error('can\'t switch encodings') - - var out = this._decoder.write(value) - if (fin) { - out += this._decoder.end() - } - - return out -} - -module.exports = CipherBase - -},{"inherits":262,"safe-buffer":318,"stream":328,"string_decoder":179}],185:[function(require,module,exports){ -(function (Buffer){ -var Writable = require('readable-stream').Writable -var inherits = require('inherits') -var bufferFrom = require('buffer-from') - -if (typeof Uint8Array === 'undefined') { - var U8 = require('typedarray').Uint8Array -} else { - var U8 = Uint8Array -} - -function ConcatStream(opts, cb) { - if (!(this instanceof ConcatStream)) return new ConcatStream(opts, cb) - - if (typeof opts === 'function') { - cb = opts - opts = {} - } - if (!opts) opts = {} - - var encoding = opts.encoding - var shouldInferEncoding = false - - if (!encoding) { - shouldInferEncoding = true - } else { - encoding = String(encoding).toLowerCase() - if (encoding === 'u8' || encoding === 'uint8') { - encoding = 'uint8array' - } - } - - Writable.call(this, { objectMode: true }) - - this.encoding = encoding - this.shouldInferEncoding = shouldInferEncoding - - if (cb) this.on('finish', function () { cb(this.getBody()) }) - this.body = [] -} - -module.exports = ConcatStream -inherits(ConcatStream, Writable) - -ConcatStream.prototype._write = function(chunk, enc, next) { - this.body.push(chunk) - next() -} - -ConcatStream.prototype.inferEncoding = function (buff) { - var firstBuffer = buff === undefined ? this.body[0] : buff; - if (Buffer.isBuffer(firstBuffer)) return 'buffer' - if (typeof Uint8Array !== 'undefined' && firstBuffer instanceof Uint8Array) return 'uint8array' - if (Array.isArray(firstBuffer)) return 'array' - if (typeof firstBuffer === 'string') return 'string' - if (Object.prototype.toString.call(firstBuffer) === "[object Object]") return 'object' - return 'buffer' -} - -ConcatStream.prototype.getBody = function () { - if (!this.encoding && this.body.length === 0) return [] - if (this.shouldInferEncoding) this.encoding = this.inferEncoding() - if (this.encoding === 'array') return arrayConcat(this.body) - if (this.encoding === 'string') return stringConcat(this.body) - if (this.encoding === 'buffer') return bufferConcat(this.body) - if (this.encoding === 'uint8array') return u8Concat(this.body) - return this.body -} - -var isArray = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]' -} - -function isArrayish (arr) { - return /Array\]$/.test(Object.prototype.toString.call(arr)) -} - -function isBufferish (p) { - return typeof p === 'string' || isArrayish(p) || (p && typeof p.subarray === 'function') -} - -function stringConcat (parts) { - var strings = [] - var needsToString = false - for (var i = 0; i < parts.length; i++) { - var p = parts[i] - if (typeof p === 'string') { - strings.push(p) - } else if (Buffer.isBuffer(p)) { - strings.push(p) - } else if (isBufferish(p)) { - strings.push(bufferFrom(p)) - } else { - strings.push(bufferFrom(String(p))) - } - } - if (Buffer.isBuffer(parts[0])) { - strings = Buffer.concat(strings) - strings = strings.toString('utf8') - } else { - strings = strings.join('') - } - return strings -} - -function bufferConcat (parts) { - var bufs = [] - for (var i = 0; i < parts.length; i++) { - var p = parts[i] - if (Buffer.isBuffer(p)) { - bufs.push(p) - } else if (isBufferish(p)) { - bufs.push(bufferFrom(p)) - } else { - bufs.push(bufferFrom(String(p))) - } - } - return Buffer.concat(bufs) -} - -function arrayConcat (parts) { - var res = [] - for (var i = 0; i < parts.length; i++) { - res.push.apply(res, parts[i]) - } - return res -} - -function u8Concat (parts) { - var len = 0 - for (var i = 0; i < parts.length; i++) { - if (typeof parts[i] === 'string') { - parts[i] = bufferFrom(parts[i]) - } - len += parts[i].length - } - var u8 = new U8(len) - for (var i = 0, offset = 0; i < parts.length; i++) { - var part = parts[i] - for (var j = 0; j < part.length; j++) { - u8[offset++] = part[j] - } - } - return u8 -} - -}).call(this,require("buffer").Buffer) -},{"buffer":182,"buffer-from":180,"inherits":262,"readable-stream":312,"typedarray":337}],186:[function(require,module,exports){ -(function (Buffer){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. - -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); - } - return objectToString(arg) === '[object Array]'; -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = Buffer.isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - -}).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":263}],187:[function(require,module,exports){ -(function (Buffer){ -var elliptic = require('elliptic') -var BN = require('bn.js') - -module.exports = function createECDH (curve) { - return new ECDH(curve) -} - -var aliases = { - secp256k1: { - name: 'secp256k1', - byteLength: 32 - }, - secp224r1: { - name: 'p224', - byteLength: 28 - }, - prime256v1: { - name: 'p256', - byteLength: 32 - }, - prime192v1: { - name: 'p192', - byteLength: 24 - }, - ed25519: { - name: 'ed25519', - byteLength: 32 - }, - secp384r1: { - name: 'p384', - byteLength: 48 - }, - secp521r1: { - name: 'p521', - byteLength: 66 - } -} - -aliases.p224 = aliases.secp224r1 -aliases.p256 = aliases.secp256r1 = aliases.prime256v1 -aliases.p192 = aliases.secp192r1 = aliases.prime192v1 -aliases.p384 = aliases.secp384r1 -aliases.p521 = aliases.secp521r1 - -function ECDH (curve) { - this.curveType = aliases[curve] - if (!this.curveType) { - this.curveType = { - name: curve - } - } - this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap - this.keys = void 0 -} - -ECDH.prototype.generateKeys = function (enc, format) { - this.keys = this.curve.genKeyPair() - return this.getPublicKey(enc, format) -} - -ECDH.prototype.computeSecret = function (other, inenc, enc) { - inenc = inenc || 'utf8' - if (!Buffer.isBuffer(other)) { - other = new Buffer(other, inenc) - } - var otherPub = this.curve.keyFromPublic(other).getPublic() - var out = otherPub.mul(this.keys.getPrivate()).getX() - return formatReturnValue(out, enc, this.curveType.byteLength) -} - -ECDH.prototype.getPublicKey = function (enc, format) { - var key = this.keys.getPublic(format === 'compressed', true) - if (format === 'hybrid') { - if (key[key.length - 1] % 2) { - key[0] = 7 - } else { - key[0] = 6 - } - } - return formatReturnValue(key, enc) -} - -ECDH.prototype.getPrivateKey = function (enc) { - return formatReturnValue(this.keys.getPrivate(), enc) -} - -ECDH.prototype.setPublicKey = function (pub, enc) { - enc = enc || 'utf8' - if (!Buffer.isBuffer(pub)) { - pub = new Buffer(pub, enc) - } - this.keys._importPublic(pub) - return this -} - -ECDH.prototype.setPrivateKey = function (priv, enc) { - enc = enc || 'utf8' - if (!Buffer.isBuffer(priv)) { - priv = new Buffer(priv, enc) - } - - var _priv = new BN(priv) - _priv = _priv.toString(16) - this.keys = this.curve.genKeyPair() - this.keys._importPrivate(_priv) - return this -} - -function formatReturnValue (bn, enc, len) { - if (!Array.isArray(bn)) { - bn = bn.toArray() - } - var buf = new Buffer(bn) - if (len && buf.length < len) { - var zeros = new Buffer(len - buf.length) - zeros.fill(0) - buf = Buffer.concat([zeros, buf]) - } - if (!enc) { - return buf - } else { - return buf.toString(enc) - } -} - -}).call(this,require("buffer").Buffer) -},{"bn.js":147,"buffer":182,"elliptic":205}],188:[function(require,module,exports){ -'use strict' -var inherits = require('inherits') -var MD5 = require('md5.js') -var RIPEMD160 = require('ripemd160') -var sha = require('sha.js') -var Base = require('cipher-base') - -function Hash (hash) { - Base.call(this, 'digest') - - this._hash = hash -} - -inherits(Hash, Base) - -Hash.prototype._update = function (data) { - this._hash.update(data) -} - -Hash.prototype._final = function () { - return this._hash.digest() -} - -module.exports = function createHash (alg) { - alg = alg.toLowerCase() - if (alg === 'md5') return new MD5() - if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160() - - return new Hash(sha(alg)) -} - -},{"cipher-base":184,"inherits":262,"md5.js":266,"ripemd160":317,"sha.js":320}],189:[function(require,module,exports){ -var MD5 = require('md5.js') - -module.exports = function (buffer) { - return new MD5().update(buffer).digest() -} - -},{"md5.js":266}],190:[function(require,module,exports){ -'use strict' -var inherits = require('inherits') -var Legacy = require('./legacy') -var Base = require('cipher-base') -var Buffer = require('safe-buffer').Buffer -var md5 = require('create-hash/md5') -var RIPEMD160 = require('ripemd160') - -var sha = require('sha.js') - -var ZEROS = Buffer.alloc(128) - -function Hmac (alg, key) { - Base.call(this, 'digest') - if (typeof key === 'string') { - key = Buffer.from(key) - } - - var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64 - - this._alg = alg - this._key = key - if (key.length > blocksize) { - var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg) - key = hash.update(key).digest() - } else if (key.length < blocksize) { - key = Buffer.concat([key, ZEROS], blocksize) - } - - var ipad = this._ipad = Buffer.allocUnsafe(blocksize) - var opad = this._opad = Buffer.allocUnsafe(blocksize) - - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36 - opad[i] = key[i] ^ 0x5C - } - this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg) - this._hash.update(ipad) -} - -inherits(Hmac, Base) - -Hmac.prototype._update = function (data) { - this._hash.update(data) -} - -Hmac.prototype._final = function () { - var h = this._hash.digest() - var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg) - return hash.update(this._opad).update(h).digest() -} - -module.exports = function createHmac (alg, key) { - alg = alg.toLowerCase() - if (alg === 'rmd160' || alg === 'ripemd160') { - return new Hmac('rmd160', key) - } - if (alg === 'md5') { - return new Legacy(md5, key) - } - return new Hmac(alg, key) -} - -},{"./legacy":191,"cipher-base":184,"create-hash/md5":189,"inherits":262,"ripemd160":317,"safe-buffer":318,"sha.js":320}],191:[function(require,module,exports){ -'use strict' -var inherits = require('inherits') -var Buffer = require('safe-buffer').Buffer - -var Base = require('cipher-base') - -var ZEROS = Buffer.alloc(128) -var blocksize = 64 - -function Hmac (alg, key) { - Base.call(this, 'digest') - if (typeof key === 'string') { - key = Buffer.from(key) - } - - this._alg = alg - this._key = key - - if (key.length > blocksize) { - key = alg(key) - } else if (key.length < blocksize) { - key = Buffer.concat([key, ZEROS], blocksize) - } - - var ipad = this._ipad = Buffer.allocUnsafe(blocksize) - var opad = this._opad = Buffer.allocUnsafe(blocksize) - - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36 - opad[i] = key[i] ^ 0x5C - } - - this._hash = [ipad] -} - -inherits(Hmac, Base) - -Hmac.prototype._update = function (data) { - this._hash.push(data) -} - -Hmac.prototype._final = function () { - var h = this._alg(Buffer.concat(this._hash)) - return this._alg(Buffer.concat([this._opad, h])) -} -module.exports = Hmac - -},{"cipher-base":184,"inherits":262,"safe-buffer":318}],192:[function(require,module,exports){ -'use strict' - -exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes') -exports.createHash = exports.Hash = require('create-hash') -exports.createHmac = exports.Hmac = require('create-hmac') - -var algos = require('browserify-sign/algos') -var algoKeys = Object.keys(algos) -var hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys) -exports.getHashes = function () { - return hashes -} - -var p = require('pbkdf2') -exports.pbkdf2 = p.pbkdf2 -exports.pbkdf2Sync = p.pbkdf2Sync - -var aes = require('browserify-cipher') - -exports.Cipher = aes.Cipher -exports.createCipher = aes.createCipher -exports.Cipheriv = aes.Cipheriv -exports.createCipheriv = aes.createCipheriv -exports.Decipher = aes.Decipher -exports.createDecipher = aes.createDecipher -exports.Decipheriv = aes.Decipheriv -exports.createDecipheriv = aes.createDecipheriv -exports.getCiphers = aes.getCiphers -exports.listCiphers = aes.listCiphers - -var dh = require('diffie-hellman') - -exports.DiffieHellmanGroup = dh.DiffieHellmanGroup -exports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup -exports.getDiffieHellman = dh.getDiffieHellman -exports.createDiffieHellman = dh.createDiffieHellman -exports.DiffieHellman = dh.DiffieHellman - -var sign = require('browserify-sign') - -exports.createSign = sign.createSign -exports.Sign = sign.Sign -exports.createVerify = sign.createVerify -exports.Verify = sign.Verify - -exports.createECDH = require('create-ecdh') - -var publicEncrypt = require('public-encrypt') - -exports.publicEncrypt = publicEncrypt.publicEncrypt -exports.privateEncrypt = publicEncrypt.privateEncrypt -exports.publicDecrypt = publicEncrypt.publicDecrypt -exports.privateDecrypt = publicEncrypt.privateDecrypt - -// the least I can do is make error messages for the rest of the node.js/crypto api. -// ;[ -// 'createCredentials' -// ].forEach(function (name) { -// exports[name] = function () { -// throw new Error([ -// 'sorry, ' + name + ' is not implemented yet', -// 'we accept pull requests', -// 'https://github.com/crypto-browserify/crypto-browserify' -// ].join('\n')) -// } -// }) - -var rf = require('randomfill') - -exports.randomFill = rf.randomFill -exports.randomFillSync = rf.randomFillSync - -exports.createCredentials = function () { - throw new Error([ - 'sorry, createCredentials is not implemented yet', - 'we accept pull requests', - 'https://github.com/crypto-browserify/crypto-browserify' - ].join('\n')) -} - -exports.constants = { - 'DH_CHECK_P_NOT_SAFE_PRIME': 2, - 'DH_CHECK_P_NOT_PRIME': 1, - 'DH_UNABLE_TO_CHECK_GENERATOR': 4, - 'DH_NOT_SUITABLE_GENERATOR': 8, - 'NPN_ENABLED': 1, - 'ALPN_ENABLED': 1, - 'RSA_PKCS1_PADDING': 1, - 'RSA_SSLV23_PADDING': 2, - 'RSA_NO_PADDING': 3, - 'RSA_PKCS1_OAEP_PADDING': 4, - 'RSA_X931_PADDING': 5, - 'RSA_PKCS1_PSS_PADDING': 6, - 'POINT_CONVERSION_COMPRESSED': 2, - 'POINT_CONVERSION_UNCOMPRESSED': 4, - 'POINT_CONVERSION_HYBRID': 6 -} - -},{"browserify-cipher":167,"browserify-sign":174,"browserify-sign/algos":171,"create-ecdh":187,"create-hash":188,"create-hmac":190,"diffie-hellman":201,"pbkdf2":278,"public-encrypt":286,"randombytes":298,"randomfill":299}],193:[function(require,module,exports){ -// https://d3js.org/d3-array/ v1.2.4 Copyright 2018 Mike Bostock -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : -typeof define === 'function' && define.amd ? define(['exports'], factory) : -(factory((global.d3 = global.d3 || {}))); -}(this, (function (exports) { 'use strict'; - -function ascending(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function bisector(compare) { - if (compare.length === 1) compare = ascendingComparator(compare); - return { - left: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) < 0) lo = mid + 1; - else hi = mid; - } - return lo; - }, - right: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) > 0) hi = mid; - else lo = mid + 1; - } - return lo; - } - }; -} - -function ascendingComparator(f) { - return function(d, x) { - return ascending(f(d), x); - }; -} - -var ascendingBisect = bisector(ascending); -var bisectRight = ascendingBisect.right; -var bisectLeft = ascendingBisect.left; - -function pairs(array, f) { - if (f == null) f = pair; - var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n); - while (i < n) pairs[i] = f(p, p = array[++i]); - return pairs; -} - -function pair(a, b) { - return [a, b]; -} - -function cross(values0, values1, reduce) { - var n0 = values0.length, - n1 = values1.length, - values = new Array(n0 * n1), - i0, - i1, - i, - value0; - - if (reduce == null) reduce = pair; - - for (i0 = i = 0; i0 < n0; ++i0) { - for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) { - values[i] = reduce(value0, values1[i1]); - } - } - - return values; -} - -function descending(a, b) { - return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; -} - -function number(x) { - return x === null ? NaN : +x; -} - -function variance(values, valueof) { - var n = values.length, - m = 0, - i = -1, - mean = 0, - value, - delta, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) { - delta = value - mean; - mean += delta / ++m; - sum += delta * (value - mean); - } - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) { - delta = value - mean; - mean += delta / ++m; - sum += delta * (value - mean); - } - } - } - - if (m > 1) return sum / (m - 1); -} - -function deviation(array, f) { - var v = variance(array, f); - return v ? Math.sqrt(v) : v; -} - -function extent(values, valueof) { - var n = values.length, - i = -1, - value, - min, - max; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - min = max = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null) { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - min = max = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null) { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - } - - return [min, max]; -} - -var array = Array.prototype; - -var slice = array.slice; -var map = array.map; - -function constant(x) { - return function() { - return x; - }; -} - -function identity(x) { - return x; -} - -function range(start, stop, step) { - start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; - - var i = -1, - n = Math.max(0, Math.ceil((stop - start) / step)) | 0, - range = new Array(n); - - while (++i < n) { - range[i] = start + i * step; - } - - return range; -} - -var e10 = Math.sqrt(50), - e5 = Math.sqrt(10), - e2 = Math.sqrt(2); - -function ticks(start, stop, count) { - var reverse, - i = -1, - n, - ticks, - step; - - stop = +stop, start = +start, count = +count; - if (start === stop && count > 0) return [start]; - if (reverse = stop < start) n = start, start = stop, stop = n; - if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return []; - - if (step > 0) { - start = Math.ceil(start / step); - stop = Math.floor(stop / step); - ticks = new Array(n = Math.ceil(stop - start + 1)); - while (++i < n) ticks[i] = (start + i) * step; - } else { - start = Math.floor(start * step); - stop = Math.ceil(stop * step); - ticks = new Array(n = Math.ceil(start - stop + 1)); - while (++i < n) ticks[i] = (start - i) / step; - } - - if (reverse) ticks.reverse(); - - return ticks; -} - -function tickIncrement(start, stop, count) { - var step = (stop - start) / Math.max(0, count), - power = Math.floor(Math.log(step) / Math.LN10), - error = step / Math.pow(10, power); - return power >= 0 - ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) - : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); -} - -function tickStep(start, stop, count) { - var step0 = Math.abs(stop - start) / Math.max(0, count), - step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), - error = step0 / step1; - if (error >= e10) step1 *= 10; - else if (error >= e5) step1 *= 5; - else if (error >= e2) step1 *= 2; - return stop < start ? -step1 : step1; -} - -function sturges(values) { - return Math.ceil(Math.log(values.length) / Math.LN2) + 1; -} - -function histogram() { - var value = identity, - domain = extent, - threshold = sturges; - - function histogram(data) { - var i, - n = data.length, - x, - values = new Array(n); - - for (i = 0; i < n; ++i) { - values[i] = value(data[i], i, data); - } - - var xz = domain(values), - x0 = xz[0], - x1 = xz[1], - tz = threshold(values, x0, x1); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - tz = tickStep(x0, x1, tz); - tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive - } - - // Remove any thresholds outside the domain. - var m = tz.length; - while (tz[0] <= x0) tz.shift(), --m; - while (tz[m - 1] > x1) tz.pop(), --m; - - var bins = new Array(m + 1), - bin; - - // Initialize bins. - for (i = 0; i <= m; ++i) { - bin = bins[i] = []; - bin.x0 = i > 0 ? tz[i - 1] : x0; - bin.x1 = i < m ? tz[i] : x1; - } - - // Assign data to bins by value, ignoring any outside the domain. - for (i = 0; i < n; ++i) { - x = values[i]; - if (x0 <= x && x <= x1) { - bins[bisectRight(tz, x, 0, m)].push(data[i]); - } - } - - return bins; - } - - histogram.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant(_), histogram) : value; - }; - - histogram.domain = function(_) { - return arguments.length ? (domain = typeof _ === "function" ? _ : constant([_[0], _[1]]), histogram) : domain; - }; - - histogram.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold; - }; - - return histogram; -} - -function quantile(values, p, valueof) { - if (valueof == null) valueof = number; - if (!(n = values.length)) return; - if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values); - if (p >= 1) return +valueof(values[n - 1], n - 1, values); - var n, - i = (n - 1) * p, - i0 = Math.floor(i), - value0 = +valueof(values[i0], i0, values), - value1 = +valueof(values[i0 + 1], i0 + 1, values); - return value0 + (value1 - value0) * (i - i0); -} - -function freedmanDiaconis(values, min, max) { - values = map.call(values, number).sort(ascending); - return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3))); -} - -function scott(values, min, max) { - return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3))); -} - -function max(values, valueof) { - var n = values.length, - i = -1, - value, - max; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - max = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && value > max) { - max = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - max = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && value > max) { - max = value; - } - } - } - } - } - - return max; -} - -function mean(values, valueof) { - var n = values.length, - m = n, - i = -1, - value, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) sum += value; - else --m; - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value; - else --m; - } - } - - if (m) return sum / m; -} - -function median(values, valueof) { - var n = values.length, - i = -1, - value, - numbers = []; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) { - numbers.push(value); - } - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) { - numbers.push(value); - } - } - } - - return quantile(numbers.sort(ascending), 0.5); -} - -function merge(arrays) { - var n = arrays.length, - m, - i = -1, - j = 0, - merged, - array; - - while (++i < n) j += arrays[i].length; - merged = new Array(j); - - while (--n >= 0) { - array = arrays[n]; - m = array.length; - while (--m >= 0) { - merged[--j] = array[m]; - } - } - - return merged; -} - -function min(values, valueof) { - var n = values.length, - i = -1, - value, - min; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - min = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && min > value) { - min = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - min = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && min > value) { - min = value; - } - } - } - } - } - - return min; -} - -function permute(array, indexes) { - var i = indexes.length, permutes = new Array(i); - while (i--) permutes[i] = array[indexes[i]]; - return permutes; -} - -function scan(values, compare) { - if (!(n = values.length)) return; - var n, - i = 0, - j = 0, - xi, - xj = values[j]; - - if (compare == null) compare = ascending; - - while (++i < n) { - if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) { - xj = xi, j = i; - } - } - - if (compare(xj, xj) === 0) return j; -} - -function shuffle(array, i0, i1) { - var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0), - t, - i; - - while (m) { - i = Math.random() * m-- | 0; - t = array[m + i0]; - array[m + i0] = array[i + i0]; - array[i + i0] = t; - } - - return array; -} - -function sum(values, valueof) { - var n = values.length, - i = -1, - value, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (value = +values[i]) sum += value; // Note: zero and null are equivalent. - } - } - - else { - while (++i < n) { - if (value = +valueof(values[i], i, values)) sum += value; - } - } - - return sum; -} - -function transpose(matrix) { - if (!(n = matrix.length)) return []; - for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) { - for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) { - row[j] = matrix[j][i]; - } - } - return transpose; -} - -function length(d) { - return d.length; -} - -function zip() { - return transpose(arguments); -} - -exports.bisect = bisectRight; -exports.bisectRight = bisectRight; -exports.bisectLeft = bisectLeft; -exports.ascending = ascending; -exports.bisector = bisector; -exports.cross = cross; -exports.descending = descending; -exports.deviation = deviation; -exports.extent = extent; -exports.histogram = histogram; -exports.thresholdFreedmanDiaconis = freedmanDiaconis; -exports.thresholdScott = scott; -exports.thresholdSturges = sturges; -exports.max = max; -exports.mean = mean; -exports.median = median; -exports.merge = merge; -exports.min = min; -exports.pairs = pairs; -exports.permute = permute; -exports.quantile = quantile; -exports.range = range; -exports.scan = scan; -exports.shuffle = shuffle; -exports.sum = sum; -exports.ticks = ticks; -exports.tickIncrement = tickIncrement; -exports.tickStep = tickStep; -exports.transpose = transpose; -exports.variance = variance; -exports.zip = zip; - -Object.defineProperty(exports, '__esModule', { value: true }); - -}))); - -},{}],194:[function(require,module,exports){ -// https://d3js.org/d3-geo/ v1.11.6 Copyright 2019 Mike Bostock -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) : -typeof define === 'function' && define.amd ? define(['exports', 'd3-array'], factory) : -(factory((global.d3 = global.d3 || {}),global.d3)); -}(this, (function (exports,d3Array) { 'use strict'; - -// Adds floating point numbers with twice the normal precision. -// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and -// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3) -// 305–363 (1997). -// Code adapted from GeographicLib by Charles F. F. Karney, -// http://geographiclib.sourceforge.net/ - -function adder() { - return new Adder; -} - -function Adder() { - this.reset(); -} - -Adder.prototype = { - constructor: Adder, - reset: function() { - this.s = // rounded value - this.t = 0; // exact error - }, - add: function(y) { - add(temp, y, this.t); - add(this, temp.s, this.s); - if (this.s) this.t += temp.t; - else this.s = temp.t; - }, - valueOf: function() { - return this.s; - } -}; - -var temp = new Adder; - -function add(adder, a, b) { - var x = adder.s = a + b, - bv = x - a, - av = x - bv; - adder.t = (a - av) + (b - bv); -} - -var epsilon = 1e-6; -var epsilon2 = 1e-12; -var pi = Math.PI; -var halfPi = pi / 2; -var quarterPi = pi / 4; -var tau = pi * 2; - -var degrees = 180 / pi; -var radians = pi / 180; - -var abs = Math.abs; -var atan = Math.atan; -var atan2 = Math.atan2; -var cos = Math.cos; -var ceil = Math.ceil; -var exp = Math.exp; -var log = Math.log; -var pow = Math.pow; -var sin = Math.sin; -var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }; -var sqrt = Math.sqrt; -var tan = Math.tan; - -function acos(x) { - return x > 1 ? 0 : x < -1 ? pi : Math.acos(x); -} - -function asin(x) { - return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x); -} - -function haversin(x) { - return (x = sin(x / 2)) * x; -} - -function noop() {} - -function streamGeometry(geometry, stream) { - if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) { - streamGeometryType[geometry.type](geometry, stream); - } -} - -var streamObjectType = { - Feature: function(object, stream) { - streamGeometry(object.geometry, stream); - }, - FeatureCollection: function(object, stream) { - var features = object.features, i = -1, n = features.length; - while (++i < n) streamGeometry(features[i].geometry, stream); - } -}; - -var streamGeometryType = { - Sphere: function(object, stream) { - stream.sphere(); - }, - Point: function(object, stream) { - object = object.coordinates; - stream.point(object[0], object[1], object[2]); - }, - MultiPoint: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]); - }, - LineString: function(object, stream) { - streamLine(object.coordinates, stream, 0); - }, - MultiLineString: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamLine(coordinates[i], stream, 0); - }, - Polygon: function(object, stream) { - streamPolygon(object.coordinates, stream); - }, - MultiPolygon: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamPolygon(coordinates[i], stream); - }, - GeometryCollection: function(object, stream) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) streamGeometry(geometries[i], stream); - } -}; - -function streamLine(coordinates, stream, closed) { - var i = -1, n = coordinates.length - closed, coordinate; - stream.lineStart(); - while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]); - stream.lineEnd(); -} - -function streamPolygon(coordinates, stream) { - var i = -1, n = coordinates.length; - stream.polygonStart(); - while (++i < n) streamLine(coordinates[i], stream, 1); - stream.polygonEnd(); -} - -function geoStream(object, stream) { - if (object && streamObjectType.hasOwnProperty(object.type)) { - streamObjectType[object.type](object, stream); - } else { - streamGeometry(object, stream); - } -} - -var areaRingSum = adder(); - -var areaSum = adder(), - lambda00, - phi00, - lambda0, - cosPhi0, - sinPhi0; - -var areaStream = { - point: noop, - lineStart: noop, - lineEnd: noop, - polygonStart: function() { - areaRingSum.reset(); - areaStream.lineStart = areaRingStart; - areaStream.lineEnd = areaRingEnd; - }, - polygonEnd: function() { - var areaRing = +areaRingSum; - areaSum.add(areaRing < 0 ? tau + areaRing : areaRing); - this.lineStart = this.lineEnd = this.point = noop; - }, - sphere: function() { - areaSum.add(tau); - } -}; - -function areaRingStart() { - areaStream.point = areaPointFirst; -} - -function areaRingEnd() { - areaPoint(lambda00, phi00); -} - -function areaPointFirst(lambda, phi) { - areaStream.point = areaPoint; - lambda00 = lambda, phi00 = phi; - lambda *= radians, phi *= radians; - lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi); -} - -function areaPoint(lambda, phi) { - lambda *= radians, phi *= radians; - phi = phi / 2 + quarterPi; // half the angular distance from south pole - - // Spherical excess E for a spherical triangle with vertices: south pole, - // previous point, current point. Uses a formula derived from Cagnoli’s - // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2). - var dLambda = lambda - lambda0, - sdLambda = dLambda >= 0 ? 1 : -1, - adLambda = sdLambda * dLambda, - cosPhi = cos(phi), - sinPhi = sin(phi), - k = sinPhi0 * sinPhi, - u = cosPhi0 * cosPhi + k * cos(adLambda), - v = k * sdLambda * sin(adLambda); - areaRingSum.add(atan2(v, u)); - - // Advance the previous points. - lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi; -} - -function area(object) { - areaSum.reset(); - geoStream(object, areaStream); - return areaSum * 2; -} - -function spherical(cartesian) { - return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])]; -} - -function cartesian(spherical) { - var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi); - return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)]; -} - -function cartesianDot(a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; -} - -function cartesianCross(a, b) { - return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]; -} - -// TODO return a -function cartesianAddInPlace(a, b) { - a[0] += b[0], a[1] += b[1], a[2] += b[2]; -} - -function cartesianScale(vector, k) { - return [vector[0] * k, vector[1] * k, vector[2] * k]; -} - -// TODO return d -function cartesianNormalizeInPlace(d) { - var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); - d[0] /= l, d[1] /= l, d[2] /= l; -} - -var lambda0$1, phi0, lambda1, phi1, // bounds - lambda2, // previous lambda-coordinate - lambda00$1, phi00$1, // first point - p0, // previous 3D point - deltaSum = adder(), - ranges, - range; - -var boundsStream = { - point: boundsPoint, - lineStart: boundsLineStart, - lineEnd: boundsLineEnd, - polygonStart: function() { - boundsStream.point = boundsRingPoint; - boundsStream.lineStart = boundsRingStart; - boundsStream.lineEnd = boundsRingEnd; - deltaSum.reset(); - areaStream.polygonStart(); - }, - polygonEnd: function() { - areaStream.polygonEnd(); - boundsStream.point = boundsPoint; - boundsStream.lineStart = boundsLineStart; - boundsStream.lineEnd = boundsLineEnd; - if (areaRingSum < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - else if (deltaSum > epsilon) phi1 = 90; - else if (deltaSum < -epsilon) phi0 = -90; - range[0] = lambda0$1, range[1] = lambda1; - }, - sphere: function() { - lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - } -}; - -function boundsPoint(lambda, phi) { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; -} - -function linePoint(lambda, phi) { - var p = cartesian([lambda * radians, phi * radians]); - if (p0) { - var normal = cartesianCross(p0, p), - equatorial = [normal[1], -normal[0], 0], - inflection = cartesianCross(equatorial, normal); - cartesianNormalizeInPlace(inflection); - inflection = spherical(inflection); - var delta = lambda - lambda2, - sign$$1 = delta > 0 ? 1 : -1, - lambdai = inflection[0] * degrees * sign$$1, - phii, - antimeridian = abs(delta) > 180; - if (antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) { - phii = inflection[1] * degrees; - if (phii > phi1) phi1 = phii; - } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) { - phii = -inflection[1] * degrees; - if (phii < phi0) phi0 = phii; - } else { - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - } - if (antimeridian) { - if (lambda < lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } else { - if (lambda1 >= lambda0$1) { - if (lambda < lambda0$1) lambda0$1 = lambda; - if (lambda > lambda1) lambda1 = lambda; - } else { - if (lambda > lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } - } - } else { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - } - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - p0 = p, lambda2 = lambda; -} - -function boundsLineStart() { - boundsStream.point = linePoint; -} - -function boundsLineEnd() { - range[0] = lambda0$1, range[1] = lambda1; - boundsStream.point = boundsPoint; - p0 = null; -} - -function boundsRingPoint(lambda, phi) { - if (p0) { - var delta = lambda - lambda2; - deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta); - } else { - lambda00$1 = lambda, phi00$1 = phi; - } - areaStream.point(lambda, phi); - linePoint(lambda, phi); -} - -function boundsRingStart() { - areaStream.lineStart(); -} - -function boundsRingEnd() { - boundsRingPoint(lambda00$1, phi00$1); - areaStream.lineEnd(); - if (abs(deltaSum) > epsilon) lambda0$1 = -(lambda1 = 180); - range[0] = lambda0$1, range[1] = lambda1; - p0 = null; -} - -// Finds the left-right distance between two longitudes. -// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want -// the distance between ±180° to be 360°. -function angle(lambda0, lambda1) { - return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1; -} - -function rangeCompare(a, b) { - return a[0] - b[0]; -} - -function rangeContains(range, x) { - return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; -} - -function bounds(feature) { - var i, n, a, b, merged, deltaMax, delta; - - phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity); - ranges = []; - geoStream(feature, boundsStream); - - // First, sort ranges by their minimum longitudes. - if (n = ranges.length) { - ranges.sort(rangeCompare); - - // Then, merge any ranges that overlap. - for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) { - b = ranges[i]; - if (rangeContains(a, b[0]) || rangeContains(a, b[1])) { - if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; - if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; - } else { - merged.push(a = b); - } - } - - // Finally, find the largest gap between the merged ranges. - // The final bounding box will be the inverse of this gap. - for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) { - b = merged[i]; - if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1]; - } - } - - ranges = range = null; - - return lambda0$1 === Infinity || phi0 === Infinity - ? [[NaN, NaN], [NaN, NaN]] - : [[lambda0$1, phi0], [lambda1, phi1]]; -} - -var W0, W1, - X0, Y0, Z0, - X1, Y1, Z1, - X2, Y2, Z2, - lambda00$2, phi00$2, // first point - x0, y0, z0; // previous point - -var centroidStream = { - sphere: noop, - point: centroidPoint, - lineStart: centroidLineStart, - lineEnd: centroidLineEnd, - polygonStart: function() { - centroidStream.lineStart = centroidRingStart; - centroidStream.lineEnd = centroidRingEnd; - }, - polygonEnd: function() { - centroidStream.lineStart = centroidLineStart; - centroidStream.lineEnd = centroidLineEnd; - } -}; - -// Arithmetic mean of Cartesian vectors. -function centroidPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos(phi); - centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)); -} - -function centroidPointCartesian(x, y, z) { - ++W0; - X0 += (x - X0) / W0; - Y0 += (y - Y0) / W0; - Z0 += (z - Z0) / W0; -} - -function centroidLineStart() { - centroidStream.point = centroidLinePointFirst; -} - -function centroidLinePointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos(phi); - x0 = cosPhi * cos(lambda); - y0 = cosPhi * sin(lambda); - z0 = sin(phi); - centroidStream.point = centroidLinePoint; - centroidPointCartesian(x0, y0, z0); -} - -function centroidLinePoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos(phi), - x = cosPhi * cos(lambda), - y = cosPhi * sin(lambda), - z = sin(phi), - w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z); - W1 += w; - X1 += w * (x0 + (x0 = x)); - Y1 += w * (y0 + (y0 = y)); - Z1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0, y0, z0); -} - -function centroidLineEnd() { - centroidStream.point = centroidPoint; -} - -// See J. E. Brock, The Inertia Tensor for a Spherical Triangle, -// J. Applied Mechanics 42, 239 (1975). -function centroidRingStart() { - centroidStream.point = centroidRingPointFirst; -} - -function centroidRingEnd() { - centroidRingPoint(lambda00$2, phi00$2); - centroidStream.point = centroidPoint; -} - -function centroidRingPointFirst(lambda, phi) { - lambda00$2 = lambda, phi00$2 = phi; - lambda *= radians, phi *= radians; - centroidStream.point = centroidRingPoint; - var cosPhi = cos(phi); - x0 = cosPhi * cos(lambda); - y0 = cosPhi * sin(lambda); - z0 = sin(phi); - centroidPointCartesian(x0, y0, z0); -} - -function centroidRingPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos(phi), - x = cosPhi * cos(lambda), - y = cosPhi * sin(lambda), - z = sin(phi), - cx = y0 * z - z0 * y, - cy = z0 * x - x0 * z, - cz = x0 * y - y0 * x, - m = sqrt(cx * cx + cy * cy + cz * cz), - w = asin(m), // line weight = angle - v = m && -w / m; // area weight multiplier - X2 += v * cx; - Y2 += v * cy; - Z2 += v * cz; - W1 += w; - X1 += w * (x0 + (x0 = x)); - Y1 += w * (y0 + (y0 = y)); - Z1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0, y0, z0); -} - -function centroid(object) { - W0 = W1 = - X0 = Y0 = Z0 = - X1 = Y1 = Z1 = - X2 = Y2 = Z2 = 0; - geoStream(object, centroidStream); - - var x = X2, - y = Y2, - z = Z2, - m = x * x + y * y + z * z; - - // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid. - if (m < epsilon2) { - x = X1, y = Y1, z = Z1; - // If the feature has zero length, fall back to arithmetic mean of point vectors. - if (W1 < epsilon) x = X0, y = Y0, z = Z0; - m = x * x + y * y + z * z; - // If the feature still has an undefined ccentroid, then return. - if (m < epsilon2) return [NaN, NaN]; - } - - return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees]; -} - -function constant(x) { - return function() { - return x; - }; -} - -function compose(a, b) { - - function compose(x, y) { - return x = a(x, y), b(x[0], x[1]); - } - - if (a.invert && b.invert) compose.invert = function(x, y) { - return x = b.invert(x, y), x && a.invert(x[0], x[1]); - }; - - return compose; -} - -function rotationIdentity(lambda, phi) { - return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi]; -} - -rotationIdentity.invert = rotationIdentity; - -function rotateRadians(deltaLambda, deltaPhi, deltaGamma) { - return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) - : rotationLambda(deltaLambda)) - : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) - : rotationIdentity); -} - -function forwardRotationLambda(deltaLambda) { - return function(lambda, phi) { - return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi]; - }; -} - -function rotationLambda(deltaLambda) { - var rotation = forwardRotationLambda(deltaLambda); - rotation.invert = forwardRotationLambda(-deltaLambda); - return rotation; -} - -function rotationPhiGamma(deltaPhi, deltaGamma) { - var cosDeltaPhi = cos(deltaPhi), - sinDeltaPhi = sin(deltaPhi), - cosDeltaGamma = cos(deltaGamma), - sinDeltaGamma = sin(deltaGamma); - - function rotation(lambda, phi) { - var cosPhi = cos(phi), - x = cos(lambda) * cosPhi, - y = sin(lambda) * cosPhi, - z = sin(phi), - k = z * cosDeltaPhi + x * sinDeltaPhi; - return [ - atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), - asin(k * cosDeltaGamma + y * sinDeltaGamma) - ]; - } - - rotation.invert = function(lambda, phi) { - var cosPhi = cos(phi), - x = cos(lambda) * cosPhi, - y = sin(lambda) * cosPhi, - z = sin(phi), - k = z * cosDeltaGamma - y * sinDeltaGamma; - return [ - atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), - asin(k * cosDeltaPhi - x * sinDeltaPhi) - ]; - }; - - return rotation; -} - -function rotation(rotate) { - rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0); - - function forward(coordinates) { - coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates; - } - - forward.invert = function(coordinates) { - coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates; - }; - - return forward; -} - -// Generates a circle centered at [0°, 0°], with a given radius and precision. -function circleStream(stream, radius, delta, direction, t0, t1) { - if (!delta) return; - var cosRadius = cos(radius), - sinRadius = sin(radius), - step = direction * delta; - if (t0 == null) { - t0 = radius + direction * tau; - t1 = radius - step / 2; - } else { - t0 = circleRadius(cosRadius, t0); - t1 = circleRadius(cosRadius, t1); - if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau; - } - for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) { - point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]); - stream.point(point[0], point[1]); - } -} - -// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0]. -function circleRadius(cosRadius, point) { - point = cartesian(point), point[0] -= cosRadius; - cartesianNormalizeInPlace(point); - var radius = acos(-point[1]); - return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau; -} - -function circle() { - var center = constant([0, 0]), - radius = constant(90), - precision = constant(6), - ring, - rotate, - stream = {point: point}; - - function point(x, y) { - ring.push(x = rotate(x, y)); - x[0] *= degrees, x[1] *= degrees; - } - - function circle() { - var c = center.apply(this, arguments), - r = radius.apply(this, arguments) * radians, - p = precision.apply(this, arguments) * radians; - ring = []; - rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert; - circleStream(stream, r, p, 1); - c = {type: "Polygon", coordinates: [ring]}; - ring = rotate = null; - return c; - } - - circle.center = function(_) { - return arguments.length ? (center = typeof _ === "function" ? _ : constant([+_[0], +_[1]]), circle) : center; - }; - - circle.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), circle) : radius; - }; - - circle.precision = function(_) { - return arguments.length ? (precision = typeof _ === "function" ? _ : constant(+_), circle) : precision; - }; - - return circle; -} - -function clipBuffer() { - var lines = [], - line; - return { - point: function(x, y) { - line.push([x, y]); - }, - lineStart: function() { - lines.push(line = []); - }, - lineEnd: noop, - rejoin: function() { - if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); - }, - result: function() { - var result = lines; - lines = []; - line = null; - return result; - } - }; -} - -function pointEqual(a, b) { - return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon; -} - -function Intersection(point, points, other, entry) { - this.x = point; - this.z = points; - this.o = other; // another intersection - this.e = entry; // is an entry? - this.v = false; // visited - this.n = this.p = null; // next & previous -} - -// A generalized polygon clipping algorithm: given a polygon that has been cut -// into its visible line segments, and rejoins the segments by interpolating -// along the clip edge. -function clipRejoin(segments, compareIntersection, startInside, interpolate, stream) { - var subject = [], - clip = [], - i, - n; - - segments.forEach(function(segment) { - if ((n = segment.length - 1) <= 0) return; - var n, p0 = segment[0], p1 = segment[n], x; - - // If the first and last points of a segment are coincident, then treat as a - // closed ring. TODO if all rings are closed, then the winding order of the - // exterior ring should be checked. - if (pointEqual(p0, p1)) { - stream.lineStart(); - for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]); - stream.lineEnd(); - return; - } - - subject.push(x = new Intersection(p0, segment, null, true)); - clip.push(x.o = new Intersection(p0, null, x, false)); - subject.push(x = new Intersection(p1, segment, null, false)); - clip.push(x.o = new Intersection(p1, null, x, true)); - }); - - if (!subject.length) return; - - clip.sort(compareIntersection); - link(subject); - link(clip); - - for (i = 0, n = clip.length; i < n; ++i) { - clip[i].e = startInside = !startInside; - } - - var start = subject[0], - points, - point; - - while (1) { - // Find first unvisited intersection. - var current = start, - isSubject = true; - while (current.v) if ((current = current.n) === start) return; - points = current.z; - stream.lineStart(); - do { - current.v = current.o.v = true; - if (current.e) { - if (isSubject) { - for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.n.x, 1, stream); - } - current = current.n; - } else { - if (isSubject) { - points = current.p.z; - for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.p.x, -1, stream); - } - current = current.p; - } - current = current.o; - points = current.z; - isSubject = !isSubject; - } while (!current.v); - stream.lineEnd(); - } -} - -function link(array) { - if (!(n = array.length)) return; - var n, - i = 0, - a = array[0], - b; - while (++i < n) { - a.n = b = array[i]; - b.p = a; - a = b; - } - a.n = b = array[0]; - b.p = a; -} - -var sum = adder(); - -function longitude(point) { - if (abs(point[0]) <= pi) - return point[0]; - else - return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi); -} - -function polygonContains(polygon, point) { - var lambda = longitude(point), - phi = point[1], - sinPhi = sin(phi), - normal = [sin(lambda), -cos(lambda), 0], - angle = 0, - winding = 0; - - sum.reset(); - - if (sinPhi === 1) phi = halfPi + epsilon; - else if (sinPhi === -1) phi = -halfPi - epsilon; - - for (var i = 0, n = polygon.length; i < n; ++i) { - if (!(m = (ring = polygon[i]).length)) continue; - var ring, - m, - point0 = ring[m - 1], - lambda0 = longitude(point0), - phi0 = point0[1] / 2 + quarterPi, - sinPhi0 = sin(phi0), - cosPhi0 = cos(phi0); - - for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) { - var point1 = ring[j], - lambda1 = longitude(point1), - phi1 = point1[1] / 2 + quarterPi, - sinPhi1 = sin(phi1), - cosPhi1 = cos(phi1), - delta = lambda1 - lambda0, - sign$$1 = delta >= 0 ? 1 : -1, - absDelta = sign$$1 * delta, - antimeridian = absDelta > pi, - k = sinPhi0 * sinPhi1; - - sum.add(atan2(k * sign$$1 * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta))); - angle += antimeridian ? delta + sign$$1 * tau : delta; - - // Are the longitudes either side of the point’s meridian (lambda), - // and are the latitudes smaller than the parallel (phi)? - if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) { - var arc = cartesianCross(cartesian(point0), cartesian(point1)); - cartesianNormalizeInPlace(arc); - var intersection = cartesianCross(normal, arc); - cartesianNormalizeInPlace(intersection); - var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]); - if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) { - winding += antimeridian ^ delta >= 0 ? 1 : -1; - } - } - } - } - - // First, determine whether the South pole is inside or outside: - // - // It is inside if: - // * the polygon winds around it in a clockwise direction. - // * the polygon does not (cumulatively) wind around it, but has a negative - // (counter-clockwise) area. - // - // Second, count the (signed) number of times a segment crosses a lambda - // from the point to the South pole. If it is zero, then the point is the - // same side as the South pole. - - return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1); -} - -function clip(pointVisible, clipLine, interpolate, start) { - return function(sink) { - var line = clipLine(sink), - ringBuffer = clipBuffer(), - ringSink = clipLine(ringBuffer), - polygonStarted = false, - polygon, - segments, - ring; - - var clip = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { - clip.point = pointRing; - clip.lineStart = ringStart; - clip.lineEnd = ringEnd; - segments = []; - polygon = []; - }, - polygonEnd: function() { - clip.point = point; - clip.lineStart = lineStart; - clip.lineEnd = lineEnd; - segments = d3Array.merge(segments); - var startInside = polygonContains(polygon, start); - if (segments.length) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - clipRejoin(segments, compareIntersection, startInside, interpolate, sink); - } else if (startInside) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - } - if (polygonStarted) sink.polygonEnd(), polygonStarted = false; - segments = polygon = null; - }, - sphere: function() { - sink.polygonStart(); - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - sink.polygonEnd(); - } - }; - - function point(lambda, phi) { - if (pointVisible(lambda, phi)) sink.point(lambda, phi); - } - - function pointLine(lambda, phi) { - line.point(lambda, phi); - } - - function lineStart() { - clip.point = pointLine; - line.lineStart(); - } - - function lineEnd() { - clip.point = point; - line.lineEnd(); - } - - function pointRing(lambda, phi) { - ring.push([lambda, phi]); - ringSink.point(lambda, phi); - } - - function ringStart() { - ringSink.lineStart(); - ring = []; - } - - function ringEnd() { - pointRing(ring[0][0], ring[0][1]); - ringSink.lineEnd(); - - var clean = ringSink.clean(), - ringSegments = ringBuffer.result(), - i, n = ringSegments.length, m, - segment, - point; - - ring.pop(); - polygon.push(ring); - ring = null; - - if (!n) return; - - // No intersections. - if (clean & 1) { - segment = ringSegments[0]; - if ((m = segment.length - 1) > 0) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]); - sink.lineEnd(); - } - return; - } - - // Rejoin connected segments. - // TODO reuse ringBuffer.rejoin()? - if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); - - segments.push(ringSegments.filter(validSegment)); - } - - return clip; - }; -} - -function validSegment(segment) { - return segment.length > 1; -} - -// Intersections are sorted along the clip edge. For both antimeridian cutting -// and circle clipping, the same comparison is used. -function compareIntersection(a, b) { - return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1]) - - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]); -} - -var clipAntimeridian = clip( - function() { return true; }, - clipAntimeridianLine, - clipAntimeridianInterpolate, - [-pi, -halfPi] -); - -// Takes a line and cuts into visible segments. Return values: 0 - there were -// intersections or the line was empty; 1 - no intersections; 2 - there were -// intersections, and the first and last segments should be rejoined. -function clipAntimeridianLine(stream) { - var lambda0 = NaN, - phi0 = NaN, - sign0 = NaN, - clean; // no intersections - - return { - lineStart: function() { - stream.lineStart(); - clean = 1; - }, - point: function(lambda1, phi1) { - var sign1 = lambda1 > 0 ? pi : -pi, - delta = abs(lambda1 - lambda0); - if (abs(delta - pi) < epsilon) { // line crosses a pole - stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - stream.point(lambda1, phi0); - clean = 0; - } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian - if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies - if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon; - phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - clean = 0; - } - stream.point(lambda0 = lambda1, phi0 = phi1); - sign0 = sign1; - }, - lineEnd: function() { - stream.lineEnd(); - lambda0 = phi0 = NaN; - }, - clean: function() { - return 2 - clean; // if intersections, rejoin first and last segments - } - }; -} - -function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) { - var cosPhi0, - cosPhi1, - sinLambda0Lambda1 = sin(lambda0 - lambda1); - return abs(sinLambda0Lambda1) > epsilon - ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1) - - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0)) - / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) - : (phi0 + phi1) / 2; -} - -function clipAntimeridianInterpolate(from, to, direction, stream) { - var phi; - if (from == null) { - phi = direction * halfPi; - stream.point(-pi, phi); - stream.point(0, phi); - stream.point(pi, phi); - stream.point(pi, 0); - stream.point(pi, -phi); - stream.point(0, -phi); - stream.point(-pi, -phi); - stream.point(-pi, 0); - stream.point(-pi, phi); - } else if (abs(from[0] - to[0]) > epsilon) { - var lambda = from[0] < to[0] ? pi : -pi; - phi = direction * lambda / 2; - stream.point(-lambda, phi); - stream.point(0, phi); - stream.point(lambda, phi); - } else { - stream.point(to[0], to[1]); - } -} - -function clipCircle(radius) { - var cr = cos(radius), - delta = 6 * radians, - smallRadius = cr > 0, - notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case - - function interpolate(from, to, direction, stream) { - circleStream(stream, radius, delta, direction, from, to); - } - - function visible(lambda, phi) { - return cos(lambda) * cos(phi) > cr; - } - - // Takes a line and cuts into visible segments. Return values used for polygon - // clipping: 0 - there were intersections or the line was empty; 1 - no - // intersections 2 - there were intersections, and the first and last segments - // should be rejoined. - function clipLine(stream) { - var point0, // previous point - c0, // code for previous point - v0, // visibility of previous point - v00, // visibility of first point - clean; // no intersections - return { - lineStart: function() { - v00 = v0 = false; - clean = 1; - }, - point: function(lambda, phi) { - var point1 = [lambda, phi], - point2, - v = visible(lambda, phi), - c = smallRadius - ? v ? 0 : code(lambda, phi) - : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0; - if (!point0 && (v00 = v0 = v)) stream.lineStart(); - // Handle degeneracies. - // TODO ignore if not clipping polygons. - if (v !== v0) { - point2 = intersect(point0, point1); - if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) { - point1[0] += epsilon; - point1[1] += epsilon; - v = visible(point1[0], point1[1]); - } - } - if (v !== v0) { - clean = 0; - if (v) { - // outside going in - stream.lineStart(); - point2 = intersect(point1, point0); - stream.point(point2[0], point2[1]); - } else { - // inside going out - point2 = intersect(point0, point1); - stream.point(point2[0], point2[1]); - stream.lineEnd(); - } - point0 = point2; - } else if (notHemisphere && point0 && smallRadius ^ v) { - var t; - // If the codes for two points are different, or are both zero, - // and there this segment intersects with the small circle. - if (!(c & c0) && (t = intersect(point1, point0, true))) { - clean = 0; - if (smallRadius) { - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - } else { - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - } - } - } - if (v && (!point0 || !pointEqual(point0, point1))) { - stream.point(point1[0], point1[1]); - } - point0 = point1, v0 = v, c0 = c; - }, - lineEnd: function() { - if (v0) stream.lineEnd(); - point0 = null; - }, - // Rejoin first and last segments if there were intersections and the first - // and last points were visible. - clean: function() { - return clean | ((v00 && v0) << 1); - } - }; - } - - // Intersects the great circle between a and b with the clip circle. - function intersect(a, b, two) { - var pa = cartesian(a), - pb = cartesian(b); - - // We have two planes, n1.p = d1 and n2.p = d2. - // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2). - var n1 = [1, 0, 0], // normal - n2 = cartesianCross(pa, pb), - n2n2 = cartesianDot(n2, n2), - n1n2 = n2[0], // cartesianDot(n1, n2), - determinant = n2n2 - n1n2 * n1n2; - - // Two polar points. - if (!determinant) return !two && a; - - var c1 = cr * n2n2 / determinant, - c2 = -cr * n1n2 / determinant, - n1xn2 = cartesianCross(n1, n2), - A = cartesianScale(n1, c1), - B = cartesianScale(n2, c2); - cartesianAddInPlace(A, B); - - // Solve |p(t)|^2 = 1. - var u = n1xn2, - w = cartesianDot(A, u), - uu = cartesianDot(u, u), - t2 = w * w - uu * (cartesianDot(A, A) - 1); - - if (t2 < 0) return; - - var t = sqrt(t2), - q = cartesianScale(u, (-w - t) / uu); - cartesianAddInPlace(q, A); - q = spherical(q); - - if (!two) return q; - - // Two intersection points. - var lambda0 = a[0], - lambda1 = b[0], - phi0 = a[1], - phi1 = b[1], - z; - - if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z; - - var delta = lambda1 - lambda0, - polar = abs(delta - pi) < epsilon, - meridian = polar || delta < epsilon; - - if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z; - - // Check that the first point is between a and b. - if (meridian - ? polar - ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1) - : phi0 <= q[1] && q[1] <= phi1 - : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) { - var q1 = cartesianScale(u, (-w + t) / uu); - cartesianAddInPlace(q1, A); - return [q, spherical(q1)]; - } - } - - // Generates a 4-bit vector representing the location of a point relative to - // the small circle's bounding box. - function code(lambda, phi) { - var r = smallRadius ? radius : pi - radius, - code = 0; - if (lambda < -r) code |= 1; // left - else if (lambda > r) code |= 2; // right - if (phi < -r) code |= 4; // below - else if (phi > r) code |= 8; // above - return code; - } - - return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]); -} - -function clipLine(a, b, x0, y0, x1, y1) { - var ax = a[0], - ay = a[1], - bx = b[0], - by = b[1], - t0 = 0, - t1 = 1, - dx = bx - ax, - dy = by - ay, - r; - - r = x0 - ax; - if (!dx && r > 0) return; - r /= dx; - if (dx < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dx > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = x1 - ax; - if (!dx && r < 0) return; - r /= dx; - if (dx < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dx > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - r = y0 - ay; - if (!dy && r > 0) return; - r /= dy; - if (dy < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dy > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = y1 - ay; - if (!dy && r < 0) return; - r /= dy; - if (dy < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dy > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy; - if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy; - return true; -} - -var clipMax = 1e9, clipMin = -clipMax; - -// TODO Use d3-polygon’s polygonContains here for the ring check? -// TODO Eliminate duplicate buffering in clipBuffer and polygon.push? - -function clipRectangle(x0, y0, x1, y1) { - - function visible(x, y) { - return x0 <= x && x <= x1 && y0 <= y && y <= y1; - } - - function interpolate(from, to, direction, stream) { - var a = 0, a1 = 0; - if (from == null - || (a = corner(from, direction)) !== (a1 = corner(to, direction)) - || comparePoint(from, to) < 0 ^ direction > 0) { - do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); - while ((a = (a + direction + 4) % 4) !== a1); - } else { - stream.point(to[0], to[1]); - } - } - - function corner(p, direction) { - return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3 - : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1 - : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0 - : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon - } - - function compareIntersection(a, b) { - return comparePoint(a.x, b.x); - } - - function comparePoint(a, b) { - var ca = corner(a, 1), - cb = corner(b, 1); - return ca !== cb ? ca - cb - : ca === 0 ? b[1] - a[1] - : ca === 1 ? a[0] - b[0] - : ca === 2 ? a[1] - b[1] - : b[0] - a[0]; - } - - return function(stream) { - var activeStream = stream, - bufferStream = clipBuffer(), - segments, - polygon, - ring, - x__, y__, v__, // first point - x_, y_, v_, // previous point - first, - clean; - - var clipStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: polygonStart, - polygonEnd: polygonEnd - }; - - function point(x, y) { - if (visible(x, y)) activeStream.point(x, y); - } - - function polygonInside() { - var winding = 0; - - for (var i = 0, n = polygon.length; i < n; ++i) { - for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) { - a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1]; - if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; } - else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; } - } - } - - return winding; - } - - // Buffer geometry within a polygon and then clip it en masse. - function polygonStart() { - activeStream = bufferStream, segments = [], polygon = [], clean = true; - } - - function polygonEnd() { - var startInside = polygonInside(), - cleanInside = clean && startInside, - visible = (segments = d3Array.merge(segments)).length; - if (cleanInside || visible) { - stream.polygonStart(); - if (cleanInside) { - stream.lineStart(); - interpolate(null, null, 1, stream); - stream.lineEnd(); - } - if (visible) { - clipRejoin(segments, compareIntersection, startInside, interpolate, stream); - } - stream.polygonEnd(); - } - activeStream = stream, segments = polygon = ring = null; - } - - function lineStart() { - clipStream.point = linePoint; - if (polygon) polygon.push(ring = []); - first = true; - v_ = false; - x_ = y_ = NaN; - } - - // TODO rather than special-case polygons, simply handle them separately. - // Ideally, coincident intersection points should be jittered to avoid - // clipping issues. - function lineEnd() { - if (segments) { - linePoint(x__, y__); - if (v__ && v_) bufferStream.rejoin(); - segments.push(bufferStream.result()); - } - clipStream.point = point; - if (v_) activeStream.lineEnd(); - } - - function linePoint(x, y) { - var v = visible(x, y); - if (polygon) ring.push([x, y]); - if (first) { - x__ = x, y__ = y, v__ = v; - first = false; - if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - } - } else { - if (v && v_) activeStream.point(x, y); - else { - var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], - b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))]; - if (clipLine(a, b, x0, y0, x1, y1)) { - if (!v_) { - activeStream.lineStart(); - activeStream.point(a[0], a[1]); - } - activeStream.point(b[0], b[1]); - if (!v) activeStream.lineEnd(); - clean = false; - } else if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - clean = false; - } - } - } - x_ = x, y_ = y, v_ = v; - } - - return clipStream; - }; -} - -function extent() { - var x0 = 0, - y0 = 0, - x1 = 960, - y1 = 500, - cache, - cacheStream, - clip; - - return clip = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream); - }, - extent: function(_) { - return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]]; - } - }; -} - -var lengthSum = adder(), - lambda0$2, - sinPhi0$1, - cosPhi0$1; - -var lengthStream = { - sphere: noop, - point: noop, - lineStart: lengthLineStart, - lineEnd: noop, - polygonStart: noop, - polygonEnd: noop -}; - -function lengthLineStart() { - lengthStream.point = lengthPointFirst; - lengthStream.lineEnd = lengthLineEnd; -} - -function lengthLineEnd() { - lengthStream.point = lengthStream.lineEnd = noop; -} - -function lengthPointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - lambda0$2 = lambda, sinPhi0$1 = sin(phi), cosPhi0$1 = cos(phi); - lengthStream.point = lengthPoint; -} - -function lengthPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var sinPhi = sin(phi), - cosPhi = cos(phi), - delta = abs(lambda - lambda0$2), - cosDelta = cos(delta), - sinDelta = sin(delta), - x = cosPhi * sinDelta, - y = cosPhi0$1 * sinPhi - sinPhi0$1 * cosPhi * cosDelta, - z = sinPhi0$1 * sinPhi + cosPhi0$1 * cosPhi * cosDelta; - lengthSum.add(atan2(sqrt(x * x + y * y), z)); - lambda0$2 = lambda, sinPhi0$1 = sinPhi, cosPhi0$1 = cosPhi; -} - -function length(object) { - lengthSum.reset(); - geoStream(object, lengthStream); - return +lengthSum; -} - -var coordinates = [null, null], - object = {type: "LineString", coordinates: coordinates}; - -function distance(a, b) { - coordinates[0] = a; - coordinates[1] = b; - return length(object); -} - -var containsObjectType = { - Feature: function(object, point) { - return containsGeometry(object.geometry, point); - }, - FeatureCollection: function(object, point) { - var features = object.features, i = -1, n = features.length; - while (++i < n) if (containsGeometry(features[i].geometry, point)) return true; - return false; - } -}; - -var containsGeometryType = { - Sphere: function() { - return true; - }, - Point: function(object, point) { - return containsPoint(object.coordinates, point); - }, - MultiPoint: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPoint(coordinates[i], point)) return true; - return false; - }, - LineString: function(object, point) { - return containsLine(object.coordinates, point); - }, - MultiLineString: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsLine(coordinates[i], point)) return true; - return false; - }, - Polygon: function(object, point) { - return containsPolygon(object.coordinates, point); - }, - MultiPolygon: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPolygon(coordinates[i], point)) return true; - return false; - }, - GeometryCollection: function(object, point) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) if (containsGeometry(geometries[i], point)) return true; - return false; - } -}; - -function containsGeometry(geometry, point) { - return geometry && containsGeometryType.hasOwnProperty(geometry.type) - ? containsGeometryType[geometry.type](geometry, point) - : false; -} - -function containsPoint(coordinates, point) { - return distance(coordinates, point) === 0; -} - -function containsLine(coordinates, point) { - var ao, bo, ab; - for (var i = 0, n = coordinates.length; i < n; i++) { - bo = distance(coordinates[i], point); - if (bo === 0) return true; - if (i > 0) { - ab = distance(coordinates[i], coordinates[i - 1]); - if ( - ab > 0 && - ao <= ab && - bo <= ab && - (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab - ) - return true; - } - ao = bo; - } - return false; -} - -function containsPolygon(coordinates, point) { - return !!polygonContains(coordinates.map(ringRadians), pointRadians(point)); -} - -function ringRadians(ring) { - return ring = ring.map(pointRadians), ring.pop(), ring; -} - -function pointRadians(point) { - return [point[0] * radians, point[1] * radians]; -} - -function contains(object, point) { - return (object && containsObjectType.hasOwnProperty(object.type) - ? containsObjectType[object.type] - : containsGeometry)(object, point); -} - -function graticuleX(y0, y1, dy) { - var y = d3Array.range(y0, y1 - epsilon, dy).concat(y1); - return function(x) { return y.map(function(y) { return [x, y]; }); }; -} - -function graticuleY(x0, x1, dx) { - var x = d3Array.range(x0, x1 - epsilon, dx).concat(x1); - return function(y) { return x.map(function(x) { return [x, y]; }); }; -} - -function graticule() { - var x1, x0, X1, X0, - y1, y0, Y1, Y0, - dx = 10, dy = dx, DX = 90, DY = 360, - x, y, X, Y, - precision = 2.5; - - function graticule() { - return {type: "MultiLineString", coordinates: lines()}; - } - - function lines() { - return d3Array.range(ceil(X0 / DX) * DX, X1, DX).map(X) - .concat(d3Array.range(ceil(Y0 / DY) * DY, Y1, DY).map(Y)) - .concat(d3Array.range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x)) - .concat(d3Array.range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y)); - } - - graticule.lines = function() { - return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; }); - }; - - graticule.outline = function() { - return { - type: "Polygon", - coordinates: [ - X(X0).concat( - Y(Y1).slice(1), - X(X1).reverse().slice(1), - Y(Y0).reverse().slice(1)) - ] - }; - }; - - graticule.extent = function(_) { - if (!arguments.length) return graticule.extentMinor(); - return graticule.extentMajor(_).extentMinor(_); - }; - - graticule.extentMajor = function(_) { - if (!arguments.length) return [[X0, Y0], [X1, Y1]]; - X0 = +_[0][0], X1 = +_[1][0]; - Y0 = +_[0][1], Y1 = +_[1][1]; - if (X0 > X1) _ = X0, X0 = X1, X1 = _; - if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; - return graticule.precision(precision); - }; - - graticule.extentMinor = function(_) { - if (!arguments.length) return [[x0, y0], [x1, y1]]; - x0 = +_[0][0], x1 = +_[1][0]; - y0 = +_[0][1], y1 = +_[1][1]; - if (x0 > x1) _ = x0, x0 = x1, x1 = _; - if (y0 > y1) _ = y0, y0 = y1, y1 = _; - return graticule.precision(precision); - }; - - graticule.step = function(_) { - if (!arguments.length) return graticule.stepMinor(); - return graticule.stepMajor(_).stepMinor(_); - }; - - graticule.stepMajor = function(_) { - if (!arguments.length) return [DX, DY]; - DX = +_[0], DY = +_[1]; - return graticule; - }; - - graticule.stepMinor = function(_) { - if (!arguments.length) return [dx, dy]; - dx = +_[0], dy = +_[1]; - return graticule; - }; - - graticule.precision = function(_) { - if (!arguments.length) return precision; - precision = +_; - x = graticuleX(y0, y1, 90); - y = graticuleY(x0, x1, precision); - X = graticuleX(Y0, Y1, 90); - Y = graticuleY(X0, X1, precision); - return graticule; - }; - - return graticule - .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]]) - .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]); -} - -function graticule10() { - return graticule()(); -} - -function interpolate(a, b) { - var x0 = a[0] * radians, - y0 = a[1] * radians, - x1 = b[0] * radians, - y1 = b[1] * radians, - cy0 = cos(y0), - sy0 = sin(y0), - cy1 = cos(y1), - sy1 = sin(y1), - kx0 = cy0 * cos(x0), - ky0 = cy0 * sin(x0), - kx1 = cy1 * cos(x1), - ky1 = cy1 * sin(x1), - d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))), - k = sin(d); - - var interpolate = d ? function(t) { - var B = sin(t *= d) / k, - A = sin(d - t) / k, - x = A * kx0 + B * kx1, - y = A * ky0 + B * ky1, - z = A * sy0 + B * sy1; - return [ - atan2(y, x) * degrees, - atan2(z, sqrt(x * x + y * y)) * degrees - ]; - } : function() { - return [x0 * degrees, y0 * degrees]; - }; - - interpolate.distance = d; - - return interpolate; -} - -function identity(x) { - return x; -} - -var areaSum$1 = adder(), - areaRingSum$1 = adder(), - x00, - y00, - x0$1, - y0$1; - -var areaStream$1 = { - point: noop, - lineStart: noop, - lineEnd: noop, - polygonStart: function() { - areaStream$1.lineStart = areaRingStart$1; - areaStream$1.lineEnd = areaRingEnd$1; - }, - polygonEnd: function() { - areaStream$1.lineStart = areaStream$1.lineEnd = areaStream$1.point = noop; - areaSum$1.add(abs(areaRingSum$1)); - areaRingSum$1.reset(); - }, - result: function() { - var area = areaSum$1 / 2; - areaSum$1.reset(); - return area; - } -}; - -function areaRingStart$1() { - areaStream$1.point = areaPointFirst$1; -} - -function areaPointFirst$1(x, y) { - areaStream$1.point = areaPoint$1; - x00 = x0$1 = x, y00 = y0$1 = y; -} - -function areaPoint$1(x, y) { - areaRingSum$1.add(y0$1 * x - x0$1 * y); - x0$1 = x, y0$1 = y; -} - -function areaRingEnd$1() { - areaPoint$1(x00, y00); -} - -var x0$2 = Infinity, - y0$2 = x0$2, - x1 = -x0$2, - y1 = x1; - -var boundsStream$1 = { - point: boundsPoint$1, - lineStart: noop, - lineEnd: noop, - polygonStart: noop, - polygonEnd: noop, - result: function() { - var bounds = [[x0$2, y0$2], [x1, y1]]; - x1 = y1 = -(y0$2 = x0$2 = Infinity); - return bounds; - } -}; - -function boundsPoint$1(x, y) { - if (x < x0$2) x0$2 = x; - if (x > x1) x1 = x; - if (y < y0$2) y0$2 = y; - if (y > y1) y1 = y; -} - -// TODO Enforce positive area for exterior, negative area for interior? - -var X0$1 = 0, - Y0$1 = 0, - Z0$1 = 0, - X1$1 = 0, - Y1$1 = 0, - Z1$1 = 0, - X2$1 = 0, - Y2$1 = 0, - Z2$1 = 0, - x00$1, - y00$1, - x0$3, - y0$3; - -var centroidStream$1 = { - point: centroidPoint$1, - lineStart: centroidLineStart$1, - lineEnd: centroidLineEnd$1, - polygonStart: function() { - centroidStream$1.lineStart = centroidRingStart$1; - centroidStream$1.lineEnd = centroidRingEnd$1; - }, - polygonEnd: function() { - centroidStream$1.point = centroidPoint$1; - centroidStream$1.lineStart = centroidLineStart$1; - centroidStream$1.lineEnd = centroidLineEnd$1; - }, - result: function() { - var centroid = Z2$1 ? [X2$1 / Z2$1, Y2$1 / Z2$1] - : Z1$1 ? [X1$1 / Z1$1, Y1$1 / Z1$1] - : Z0$1 ? [X0$1 / Z0$1, Y0$1 / Z0$1] - : [NaN, NaN]; - X0$1 = Y0$1 = Z0$1 = - X1$1 = Y1$1 = Z1$1 = - X2$1 = Y2$1 = Z2$1 = 0; - return centroid; - } -}; - -function centroidPoint$1(x, y) { - X0$1 += x; - Y0$1 += y; - ++Z0$1; -} - -function centroidLineStart$1() { - centroidStream$1.point = centroidPointFirstLine; -} - -function centroidPointFirstLine(x, y) { - centroidStream$1.point = centroidPointLine; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function centroidPointLine(x, y) { - var dx = x - x0$3, dy = y - y0$3, z = sqrt(dx * dx + dy * dy); - X1$1 += z * (x0$3 + x) / 2; - Y1$1 += z * (y0$3 + y) / 2; - Z1$1 += z; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function centroidLineEnd$1() { - centroidStream$1.point = centroidPoint$1; -} - -function centroidRingStart$1() { - centroidStream$1.point = centroidPointFirstRing; -} - -function centroidRingEnd$1() { - centroidPointRing(x00$1, y00$1); -} - -function centroidPointFirstRing(x, y) { - centroidStream$1.point = centroidPointRing; - centroidPoint$1(x00$1 = x0$3 = x, y00$1 = y0$3 = y); -} - -function centroidPointRing(x, y) { - var dx = x - x0$3, - dy = y - y0$3, - z = sqrt(dx * dx + dy * dy); - - X1$1 += z * (x0$3 + x) / 2; - Y1$1 += z * (y0$3 + y) / 2; - Z1$1 += z; - - z = y0$3 * x - x0$3 * y; - X2$1 += z * (x0$3 + x); - Y2$1 += z * (y0$3 + y); - Z2$1 += z * 3; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function PathContext(context) { - this._context = context; -} - -PathContext.prototype = { - _radius: 4.5, - pointRadius: function(_) { - return this._radius = _, this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._context.closePath(); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._context.moveTo(x, y); - this._point = 1; - break; - } - case 1: { - this._context.lineTo(x, y); - break; - } - default: { - this._context.moveTo(x + this._radius, y); - this._context.arc(x, y, this._radius, 0, tau); - break; - } - } - }, - result: noop -}; - -var lengthSum$1 = adder(), - lengthRing, - x00$2, - y00$2, - x0$4, - y0$4; - -var lengthStream$1 = { - point: noop, - lineStart: function() { - lengthStream$1.point = lengthPointFirst$1; - }, - lineEnd: function() { - if (lengthRing) lengthPoint$1(x00$2, y00$2); - lengthStream$1.point = noop; - }, - polygonStart: function() { - lengthRing = true; - }, - polygonEnd: function() { - lengthRing = null; - }, - result: function() { - var length = +lengthSum$1; - lengthSum$1.reset(); - return length; - } -}; - -function lengthPointFirst$1(x, y) { - lengthStream$1.point = lengthPoint$1; - x00$2 = x0$4 = x, y00$2 = y0$4 = y; -} - -function lengthPoint$1(x, y) { - x0$4 -= x, y0$4 -= y; - lengthSum$1.add(sqrt(x0$4 * x0$4 + y0$4 * y0$4)); - x0$4 = x, y0$4 = y; -} - -function PathString() { - this._string = []; -} - -PathString.prototype = { - _radius: 4.5, - _circle: circle$1(4.5), - pointRadius: function(_) { - if ((_ = +_) !== this._radius) this._radius = _, this._circle = null; - return this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._string.push("Z"); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._string.push("M", x, ",", y); - this._point = 1; - break; - } - case 1: { - this._string.push("L", x, ",", y); - break; - } - default: { - if (this._circle == null) this._circle = circle$1(this._radius); - this._string.push("M", x, ",", y, this._circle); - break; - } - } - }, - result: function() { - if (this._string.length) { - var result = this._string.join(""); - this._string = []; - return result; - } else { - return null; - } - } -}; - -function circle$1(radius) { - return "m0," + radius - + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius - + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius - + "z"; -} - -function index(projection, context) { - var pointRadius = 4.5, - projectionStream, - contextStream; - - function path(object) { - if (object) { - if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); - geoStream(object, projectionStream(contextStream)); - } - return contextStream.result(); - } - - path.area = function(object) { - geoStream(object, projectionStream(areaStream$1)); - return areaStream$1.result(); - }; - - path.measure = function(object) { - geoStream(object, projectionStream(lengthStream$1)); - return lengthStream$1.result(); - }; - - path.bounds = function(object) { - geoStream(object, projectionStream(boundsStream$1)); - return boundsStream$1.result(); - }; - - path.centroid = function(object) { - geoStream(object, projectionStream(centroidStream$1)); - return centroidStream$1.result(); - }; - - path.projection = function(_) { - return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection; - }; - - path.context = function(_) { - if (!arguments.length) return context; - contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _); - if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); - return path; - }; - - path.pointRadius = function(_) { - if (!arguments.length) return pointRadius; - pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); - return path; - }; - - return path.projection(projection).context(context); -} - -function transform(methods) { - return { - stream: transformer(methods) - }; -} - -function transformer(methods) { - return function(stream) { - var s = new TransformStream; - for (var key in methods) s[key] = methods[key]; - s.stream = stream; - return s; - }; -} - -function TransformStream() {} - -TransformStream.prototype = { - constructor: TransformStream, - point: function(x, y) { this.stream.point(x, y); }, - sphere: function() { this.stream.sphere(); }, - lineStart: function() { this.stream.lineStart(); }, - lineEnd: function() { this.stream.lineEnd(); }, - polygonStart: function() { this.stream.polygonStart(); }, - polygonEnd: function() { this.stream.polygonEnd(); } -}; - -function fit(projection, fitBounds, object) { - var clip = projection.clipExtent && projection.clipExtent(); - projection.scale(150).translate([0, 0]); - if (clip != null) projection.clipExtent(null); - geoStream(object, projection.stream(boundsStream$1)); - fitBounds(boundsStream$1.result()); - if (clip != null) projection.clipExtent(clip); - return projection; -} - -function fitExtent(projection, extent, object) { - return fit(projection, function(b) { - var w = extent[1][0] - extent[0][0], - h = extent[1][1] - extent[0][1], - k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), - x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2, - y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitSize(projection, size, object) { - return fitExtent(projection, [[0, 0], size], object); -} - -function fitWidth(projection, width, object) { - return fit(projection, function(b) { - var w = +width, - k = w / (b[1][0] - b[0][0]), - x = (w - k * (b[1][0] + b[0][0])) / 2, - y = -k * b[0][1]; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitHeight(projection, height, object) { - return fit(projection, function(b) { - var h = +height, - k = h / (b[1][1] - b[0][1]), - x = -k * b[0][0], - y = (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -var maxDepth = 16, // maximum depth of subdivision - cosMinDistance = cos(30 * radians); // cos(minimum angular distance) - -function resample(project, delta2) { - return +delta2 ? resample$1(project, delta2) : resampleNone(project); -} - -function resampleNone(project) { - return transformer({ - point: function(x, y) { - x = project(x, y); - this.stream.point(x[0], x[1]); - } - }); -} - -function resample$1(project, delta2) { - - function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) { - var dx = x1 - x0, - dy = y1 - y0, - d2 = dx * dx + dy * dy; - if (d2 > 4 * delta2 && depth--) { - var a = a0 + a1, - b = b0 + b1, - c = c0 + c1, - m = sqrt(a * a + b * b + c * c), - phi2 = asin(c /= m), - lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a), - p = project(lambda2, phi2), - x2 = p[0], - y2 = p[1], - dx2 = x2 - x0, - dy2 = y2 - y0, - dz = dy * dx2 - dx * dy2; - if (dz * dz / d2 > delta2 // perpendicular projected distance - || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end - || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream); - stream.point(x2, y2); - resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream); - } - } - } - return function(stream) { - var lambda00, x00, y00, a00, b00, c00, // first point - lambda0, x0, y0, a0, b0, c0; // previous point - - var resampleStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; }, - polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; } - }; - - function point(x, y) { - x = project(x, y); - stream.point(x[0], x[1]); - } - - function lineStart() { - x0 = NaN; - resampleStream.point = linePoint; - stream.lineStart(); - } - - function linePoint(lambda, phi) { - var c = cartesian([lambda, phi]), p = project(lambda, phi); - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); - stream.point(x0, y0); - } - - function lineEnd() { - resampleStream.point = point; - stream.lineEnd(); - } - - function ringStart() { - lineStart(); - resampleStream.point = ringPoint; - resampleStream.lineEnd = ringEnd; - } - - function ringPoint(lambda, phi) { - linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; - resampleStream.point = linePoint; - } - - function ringEnd() { - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream); - resampleStream.lineEnd = lineEnd; - lineEnd(); - } - - return resampleStream; - }; -} - -var transformRadians = transformer({ - point: function(x, y) { - this.stream.point(x * radians, y * radians); - } -}); - -function transformRotate(rotate) { - return transformer({ - point: function(x, y) { - var r = rotate(x, y); - return this.stream.point(r[0], r[1]); - } - }); -} - -function scaleTranslate(k, dx, dy) { - function transform$$1(x, y) { - return [dx + k * x, dy - k * y]; - } - transform$$1.invert = function(x, y) { - return [(x - dx) / k, (dy - y) / k]; - }; - return transform$$1; -} - -function scaleTranslateRotate(k, dx, dy, alpha) { - var cosAlpha = cos(alpha), - sinAlpha = sin(alpha), - a = cosAlpha * k, - b = sinAlpha * k, - ai = cosAlpha / k, - bi = sinAlpha / k, - ci = (sinAlpha * dy - cosAlpha * dx) / k, - fi = (sinAlpha * dx + cosAlpha * dy) / k; - function transform$$1(x, y) { - return [a * x - b * y + dx, dy - b * x - a * y]; - } - transform$$1.invert = function(x, y) { - return [ai * x - bi * y + ci, fi - bi * x - ai * y]; - }; - return transform$$1; -} - -function projection(project) { - return projectionMutator(function() { return project; })(); -} - -function projectionMutator(projectAt) { - var project, - k = 150, // scale - x = 480, y = 250, // translate - lambda = 0, phi = 0, // center - deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate - alpha = 0, // post-rotate - theta = null, preclip = clipAntimeridian, // pre-clip angle - x0 = null, y0, x1, y1, postclip = identity, // post-clip extent - delta2 = 0.5, // precision - projectResample, - projectTransform, - projectRotateTransform, - cache, - cacheStream; - - function projection(point) { - return projectRotateTransform(point[0] * radians, point[1] * radians); - } - - function invert(point) { - point = projectRotateTransform.invert(point[0], point[1]); - return point && [point[0] * degrees, point[1] * degrees]; - } - - projection.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream))))); - }; - - projection.preclip = function(_) { - return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip; - }; - - projection.postclip = function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }; - - projection.clipAngle = function(_) { - return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees; - }; - - projection.clipExtent = function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - projection.scale = function(_) { - return arguments.length ? (k = +_, recenter()) : k; - }; - - projection.translate = function(_) { - return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y]; - }; - - projection.center = function(_) { - return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees]; - }; - - projection.rotate = function(_) { - return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees]; - }; - - projection.angle = function(_) { - return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees; - }; - - projection.precision = function(_) { - return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2); - }; - - projection.fitExtent = function(extent, object) { - return fitExtent(projection, extent, object); - }; - - projection.fitSize = function(size, object) { - return fitSize(projection, size, object); - }; - - projection.fitWidth = function(width, object) { - return fitWidth(projection, width, object); - }; - - projection.fitHeight = function(height, object) { - return fitHeight(projection, height, object); - }; - - function recenter() { - var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)), - transform$$1 = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha); - rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma); - projectTransform = compose(project, transform$$1); - projectRotateTransform = compose(rotate, projectTransform); - projectResample = resample(projectTransform, delta2); - return reset(); - } - - function reset() { - cache = cacheStream = null; - return projection; - } - - return function() { - project = projectAt.apply(this, arguments); - projection.invert = project.invert && invert; - return recenter(); - }; -} - -function conicProjection(projectAt) { - var phi0 = 0, - phi1 = pi / 3, - m = projectionMutator(projectAt), - p = m(phi0, phi1); - - p.parallels = function(_) { - return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees]; - }; - - return p; -} - -function cylindricalEqualAreaRaw(phi0) { - var cosPhi0 = cos(phi0); - - function forward(lambda, phi) { - return [lambda * cosPhi0, sin(phi) / cosPhi0]; - } - - forward.invert = function(x, y) { - return [x / cosPhi0, asin(y * cosPhi0)]; - }; - - return forward; -} - -function conicEqualAreaRaw(y0, y1) { - var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2; - - // Are the parallels symmetrical around the Equator? - if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0); - - var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n; - - function project(x, y) { - var r = sqrt(c - 2 * n * sin(y)) / n; - return [r * sin(x *= n), r0 - r * cos(x)]; - } - - project.invert = function(x, y) { - var r0y = r0 - y; - return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))]; - }; - - return project; -} - -function conicEqualArea() { - return conicProjection(conicEqualAreaRaw) - .scale(155.424) - .center([0, 33.6442]); -} - -function albers() { - return conicEqualArea() - .parallels([29.5, 45.5]) - .scale(1070) - .translate([480, 250]) - .rotate([96, 0]) - .center([-0.6, 38.7]); -} - -// The projections must have mutually exclusive clip regions on the sphere, -// as this will avoid emitting interleaving lines and polygons. -function multiplex(streams) { - var n = streams.length; - return { - point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); }, - sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); }, - lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); }, - lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); }, - polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); }, - polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); } - }; -} - -// A composite projection for the United States, configured by default for -// 960×500. The projection also works quite well at 960×600 if you change the -// scale to 1285 and adjust the translate accordingly. The set of standard -// parallels for each region comes from USGS, which is published here: -// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers -function albersUsa() { - var cache, - cacheStream, - lower48 = albers(), lower48Point, - alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338 - hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007 - point, pointStream = {point: function(x, y) { point = [x, y]; }}; - - function albersUsa(coordinates) { - var x = coordinates[0], y = coordinates[1]; - return point = null, - (lower48Point.point(x, y), point) - || (alaskaPoint.point(x, y), point) - || (hawaiiPoint.point(x, y), point); - } - - albersUsa.invert = function(coordinates) { - var k = lower48.scale(), - t = lower48.translate(), - x = (coordinates[0] - t[0]) / k, - y = (coordinates[1] - t[1]) / k; - return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska - : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii - : lower48).invert(coordinates); - }; - - albersUsa.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]); - }; - - albersUsa.precision = function(_) { - if (!arguments.length) return lower48.precision(); - lower48.precision(_), alaska.precision(_), hawaii.precision(_); - return reset(); - }; - - albersUsa.scale = function(_) { - if (!arguments.length) return lower48.scale(); - lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_); - return albersUsa.translate(lower48.translate()); - }; - - albersUsa.translate = function(_) { - if (!arguments.length) return lower48.translate(); - var k = lower48.scale(), x = +_[0], y = +_[1]; - - lower48Point = lower48 - .translate(_) - .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]) - .stream(pointStream); - - alaskaPoint = alaska - .translate([x - 0.307 * k, y + 0.201 * k]) - .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]]) - .stream(pointStream); - - hawaiiPoint = hawaii - .translate([x - 0.205 * k, y + 0.212 * k]) - .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]]) - .stream(pointStream); - - return reset(); - }; - - albersUsa.fitExtent = function(extent, object) { - return fitExtent(albersUsa, extent, object); - }; - - albersUsa.fitSize = function(size, object) { - return fitSize(albersUsa, size, object); - }; - - albersUsa.fitWidth = function(width, object) { - return fitWidth(albersUsa, width, object); - }; - - albersUsa.fitHeight = function(height, object) { - return fitHeight(albersUsa, height, object); - }; - - function reset() { - cache = cacheStream = null; - return albersUsa; - } - - return albersUsa.scale(1070); -} - -function azimuthalRaw(scale) { - return function(x, y) { - var cx = cos(x), - cy = cos(y), - k = scale(cx * cy); - return [ - k * cy * sin(x), - k * sin(y) - ]; - } -} - -function azimuthalInvert(angle) { - return function(x, y) { - var z = sqrt(x * x + y * y), - c = angle(z), - sc = sin(c), - cc = cos(c); - return [ - atan2(x * sc, z * cc), - asin(z && y * sc / z) - ]; - } -} - -var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) { - return sqrt(2 / (1 + cxcy)); -}); - -azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) { - return 2 * asin(z / 2); -}); - -function azimuthalEqualArea() { - return projection(azimuthalEqualAreaRaw) - .scale(124.75) - .clipAngle(180 - 1e-3); -} - -var azimuthalEquidistantRaw = azimuthalRaw(function(c) { - return (c = acos(c)) && c / sin(c); -}); - -azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) { - return z; -}); - -function azimuthalEquidistant() { - return projection(azimuthalEquidistantRaw) - .scale(79.4188) - .clipAngle(180 - 1e-3); -} - -function mercatorRaw(lambda, phi) { - return [lambda, log(tan((halfPi + phi) / 2))]; -} - -mercatorRaw.invert = function(x, y) { - return [x, 2 * atan(exp(y)) - halfPi]; -}; - -function mercator() { - return mercatorProjection(mercatorRaw) - .scale(961 / tau); -} - -function mercatorProjection(project) { - var m = projection(project), - center = m.center, - scale = m.scale, - translate = m.translate, - clipExtent = m.clipExtent, - x0 = null, y0, x1, y1; // clip extent - - m.scale = function(_) { - return arguments.length ? (scale(_), reclip()) : scale(); - }; - - m.translate = function(_) { - return arguments.length ? (translate(_), reclip()) : translate(); - }; - - m.center = function(_) { - return arguments.length ? (center(_), reclip()) : center(); - }; - - m.clipExtent = function(_) { - return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - function reclip() { - var k = pi * scale(), - t = m(rotation(m.rotate()).invert([0, 0])); - return clipExtent(x0 == null - ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw - ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] - : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]); - } - - return reclip(); -} - -function tany(y) { - return tan((halfPi + y) / 2); -} - -function conicConformalRaw(y0, y1) { - var cy0 = cos(y0), - n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)), - f = cy0 * pow(tany(y0), n) / n; - - if (!n) return mercatorRaw; - - function project(x, y) { - if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; } - else { if (y > halfPi - epsilon) y = halfPi - epsilon; } - var r = f / pow(tany(y), n); - return [r * sin(n * x), f - r * cos(n * x)]; - } - - project.invert = function(x, y) { - var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy); - return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi]; - }; - - return project; -} - -function conicConformal() { - return conicProjection(conicConformalRaw) - .scale(109.5) - .parallels([30, 30]); -} - -function equirectangularRaw(lambda, phi) { - return [lambda, phi]; -} - -equirectangularRaw.invert = equirectangularRaw; - -function equirectangular() { - return projection(equirectangularRaw) - .scale(152.63); -} - -function conicEquidistantRaw(y0, y1) { - var cy0 = cos(y0), - n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0), - g = cy0 / n + y0; - - if (abs(n) < epsilon) return equirectangularRaw; - - function project(x, y) { - var gy = g - y, nx = n * x; - return [gy * sin(nx), g - gy * cos(nx)]; - } - - project.invert = function(x, y) { - var gy = g - y; - return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)]; - }; - - return project; -} - -function conicEquidistant() { - return conicProjection(conicEquidistantRaw) - .scale(131.154) - .center([0, 13.9389]); -} - -var A1 = 1.340264, - A2 = -0.081106, - A3 = 0.000893, - A4 = 0.003796, - M = sqrt(3) / 2, - iterations = 12; - -function equalEarthRaw(lambda, phi) { - var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2; - return [ - lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), - l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - ]; -} - -equalEarthRaw.invert = function(x, y) { - var l = y, l2 = l * l, l6 = l2 * l2 * l2; - for (var i = 0, delta, fy, fpy; i < iterations; ++i) { - fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y; - fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2); - l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2; - if (abs(delta) < epsilon2) break; - } - return [ - M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l), - asin(sin(l) / M) - ]; -}; - -function equalEarth() { - return projection(equalEarthRaw) - .scale(177.158); -} - -function gnomonicRaw(x, y) { - var cy = cos(y), k = cos(x) * cy; - return [cy * sin(x) / k, sin(y) / k]; -} - -gnomonicRaw.invert = azimuthalInvert(atan); - -function gnomonic() { - return projection(gnomonicRaw) - .scale(144.049) - .clipAngle(60); -} - -function scaleTranslate$1(kx, ky, tx, ty) { - return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({ - point: function(x, y) { - this.stream.point(x * kx + tx, y * ky + ty); - } - }); -} - -function identity$1() { - var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform$$1 = identity, // scale, translate and reflect - x0 = null, y0, x1, y1, // clip extent - postclip = identity, - cache, - cacheStream, - projection; - - function reset() { - cache = cacheStream = null; - return projection; - } - - return projection = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = transform$$1(postclip(cacheStream = stream)); - }, - postclip: function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }, - clipExtent: function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }, - scale: function(_) { - return arguments.length ? (transform$$1 = scaleTranslate$1((k = +_) * sx, k * sy, tx, ty), reset()) : k; - }, - translate: function(_) { - return arguments.length ? (transform$$1 = scaleTranslate$1(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty]; - }, - reflectX: function(_) { - return arguments.length ? (transform$$1 = scaleTranslate$1(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0; - }, - reflectY: function(_) { - return arguments.length ? (transform$$1 = scaleTranslate$1(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0; - }, - fitExtent: function(extent, object) { - return fitExtent(projection, extent, object); - }, - fitSize: function(size, object) { - return fitSize(projection, size, object); - }, - fitWidth: function(width, object) { - return fitWidth(projection, width, object); - }, - fitHeight: function(height, object) { - return fitHeight(projection, height, object); - } - }; -} - -function naturalEarth1Raw(lambda, phi) { - var phi2 = phi * phi, phi4 = phi2 * phi2; - return [ - lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))), - phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - ]; -} - -naturalEarth1Raw.invert = function(x, y) { - var phi = y, i = 25, delta; - do { - var phi2 = phi * phi, phi4 = phi2 * phi2; - phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / - (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4))); - } while (abs(delta) > epsilon && --i > 0); - return [ - x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))), - phi - ]; -}; - -function naturalEarth1() { - return projection(naturalEarth1Raw) - .scale(175.295); -} - -function orthographicRaw(x, y) { - return [cos(y) * sin(x), sin(y)]; -} - -orthographicRaw.invert = azimuthalInvert(asin); - -function orthographic() { - return projection(orthographicRaw) - .scale(249.5) - .clipAngle(90 + epsilon); -} - -function stereographicRaw(x, y) { - var cy = cos(y), k = 1 + cos(x) * cy; - return [cy * sin(x) / k, sin(y) / k]; -} - -stereographicRaw.invert = azimuthalInvert(function(z) { - return 2 * atan(z); -}); - -function stereographic() { - return projection(stereographicRaw) - .scale(250) - .clipAngle(142); -} - -function transverseMercatorRaw(lambda, phi) { - return [log(tan((halfPi + phi) / 2)), -lambda]; -} - -transverseMercatorRaw.invert = function(x, y) { - return [-y, 2 * atan(exp(x)) - halfPi]; -}; - -function transverseMercator() { - var m = mercatorProjection(transverseMercatorRaw), - center = m.center, - rotate = m.rotate; - - m.center = function(_) { - return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]); - }; - - m.rotate = function(_) { - return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]); - }; - - return rotate([0, 0, 90]) - .scale(159.155); -} - -exports.geoArea = area; -exports.geoBounds = bounds; -exports.geoCentroid = centroid; -exports.geoCircle = circle; -exports.geoClipAntimeridian = clipAntimeridian; -exports.geoClipCircle = clipCircle; -exports.geoClipExtent = extent; -exports.geoClipRectangle = clipRectangle; -exports.geoContains = contains; -exports.geoDistance = distance; -exports.geoGraticule = graticule; -exports.geoGraticule10 = graticule10; -exports.geoInterpolate = interpolate; -exports.geoLength = length; -exports.geoPath = index; -exports.geoAlbers = albers; -exports.geoAlbersUsa = albersUsa; -exports.geoAzimuthalEqualArea = azimuthalEqualArea; -exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw; -exports.geoAzimuthalEquidistant = azimuthalEquidistant; -exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw; -exports.geoConicConformal = conicConformal; -exports.geoConicConformalRaw = conicConformalRaw; -exports.geoConicEqualArea = conicEqualArea; -exports.geoConicEqualAreaRaw = conicEqualAreaRaw; -exports.geoConicEquidistant = conicEquidistant; -exports.geoConicEquidistantRaw = conicEquidistantRaw; -exports.geoEqualEarth = equalEarth; -exports.geoEqualEarthRaw = equalEarthRaw; -exports.geoEquirectangular = equirectangular; -exports.geoEquirectangularRaw = equirectangularRaw; -exports.geoGnomonic = gnomonic; -exports.geoGnomonicRaw = gnomonicRaw; -exports.geoIdentity = identity$1; -exports.geoProjection = projection; -exports.geoProjectionMutator = projectionMutator; -exports.geoMercator = mercator; -exports.geoMercatorRaw = mercatorRaw; -exports.geoNaturalEarth1 = naturalEarth1; -exports.geoNaturalEarth1Raw = naturalEarth1Raw; -exports.geoOrthographic = orthographic; -exports.geoOrthographicRaw = orthographicRaw; -exports.geoStereographic = stereographic; -exports.geoStereographicRaw = stereographicRaw; -exports.geoTransverseMercator = transverseMercator; -exports.geoTransverseMercatorRaw = transverseMercatorRaw; -exports.geoRotation = rotation; -exports.geoStream = geoStream; -exports.geoTransform = transform; - -Object.defineProperty(exports, '__esModule', { value: true }); - -}))); - -},{"d3-array":193}],195:[function(require,module,exports){ -'use strict'; - -exports.utils = require('./des/utils'); -exports.Cipher = require('./des/cipher'); -exports.DES = require('./des/des'); -exports.CBC = require('./des/cbc'); -exports.EDE = require('./des/ede'); - -},{"./des/cbc":196,"./des/cipher":197,"./des/des":198,"./des/ede":199,"./des/utils":200}],196:[function(require,module,exports){ -'use strict'; - -var assert = require('minimalistic-assert'); -var inherits = require('inherits'); - -var proto = {}; - -function CBCState(iv) { - assert.equal(iv.length, 8, 'Invalid IV length'); - - this.iv = new Array(8); - for (var i = 0; i < this.iv.length; i++) - this.iv[i] = iv[i]; -} - -function instantiate(Base) { - function CBC(options) { - Base.call(this, options); - this._cbcInit(); - } - inherits(CBC, Base); - - var keys = Object.keys(proto); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - CBC.prototype[key] = proto[key]; - } - - CBC.create = function create(options) { - return new CBC(options); - }; - - return CBC; -} - -exports.instantiate = instantiate; - -proto._cbcInit = function _cbcInit() { - var state = new CBCState(this.options.iv); - this._cbcState = state; -}; - -proto._update = function _update(inp, inOff, out, outOff) { - var state = this._cbcState; - var superProto = this.constructor.super_.prototype; - - var iv = state.iv; - if (this.type === 'encrypt') { - for (var i = 0; i < this.blockSize; i++) - iv[i] ^= inp[inOff + i]; - - superProto._update.call(this, iv, 0, out, outOff); - - for (var i = 0; i < this.blockSize; i++) - iv[i] = out[outOff + i]; - } else { - superProto._update.call(this, inp, inOff, out, outOff); - - for (var i = 0; i < this.blockSize; i++) - out[outOff + i] ^= iv[i]; - - for (var i = 0; i < this.blockSize; i++) - iv[i] = inp[inOff + i]; - } -}; - -},{"inherits":262,"minimalistic-assert":268}],197:[function(require,module,exports){ -'use strict'; - -var assert = require('minimalistic-assert'); - -function Cipher(options) { - this.options = options; - - this.type = this.options.type; - this.blockSize = 8; - this._init(); - - this.buffer = new Array(this.blockSize); - this.bufferOff = 0; -} -module.exports = Cipher; - -Cipher.prototype._init = function _init() { - // Might be overrided -}; - -Cipher.prototype.update = function update(data) { - if (data.length === 0) - return []; - - if (this.type === 'decrypt') - return this._updateDecrypt(data); - else - return this._updateEncrypt(data); -}; - -Cipher.prototype._buffer = function _buffer(data, off) { - // Append data to buffer - var min = Math.min(this.buffer.length - this.bufferOff, data.length - off); - for (var i = 0; i < min; i++) - this.buffer[this.bufferOff + i] = data[off + i]; - this.bufferOff += min; - - // Shift next - return min; -}; - -Cipher.prototype._flushBuffer = function _flushBuffer(out, off) { - this._update(this.buffer, 0, out, off); - this.bufferOff = 0; - return this.blockSize; -}; - -Cipher.prototype._updateEncrypt = function _updateEncrypt(data) { - var inputOff = 0; - var outputOff = 0; - - var count = ((this.bufferOff + data.length) / this.blockSize) | 0; - var out = new Array(count * this.blockSize); - - if (this.bufferOff !== 0) { - inputOff += this._buffer(data, inputOff); - - if (this.bufferOff === this.buffer.length) - outputOff += this._flushBuffer(out, outputOff); - } - - // Write blocks - var max = data.length - ((data.length - inputOff) % this.blockSize); - for (; inputOff < max; inputOff += this.blockSize) { - this._update(data, inputOff, out, outputOff); - outputOff += this.blockSize; - } - - // Queue rest - for (; inputOff < data.length; inputOff++, this.bufferOff++) - this.buffer[this.bufferOff] = data[inputOff]; - - return out; -}; - -Cipher.prototype._updateDecrypt = function _updateDecrypt(data) { - var inputOff = 0; - var outputOff = 0; - - var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1; - var out = new Array(count * this.blockSize); - - // TODO(indutny): optimize it, this is far from optimal - for (; count > 0; count--) { - inputOff += this._buffer(data, inputOff); - outputOff += this._flushBuffer(out, outputOff); - } - - // Buffer rest of the input - inputOff += this._buffer(data, inputOff); - - return out; -}; - -Cipher.prototype.final = function final(buffer) { - var first; - if (buffer) - first = this.update(buffer); - - var last; - if (this.type === 'encrypt') - last = this._finalEncrypt(); - else - last = this._finalDecrypt(); - - if (first) - return first.concat(last); - else - return last; -}; - -Cipher.prototype._pad = function _pad(buffer, off) { - if (off === 0) - return false; - - while (off < buffer.length) - buffer[off++] = 0; - - return true; -}; - -Cipher.prototype._finalEncrypt = function _finalEncrypt() { - if (!this._pad(this.buffer, this.bufferOff)) - return []; - - var out = new Array(this.blockSize); - this._update(this.buffer, 0, out, 0); - return out; -}; - -Cipher.prototype._unpad = function _unpad(buffer) { - return buffer; -}; - -Cipher.prototype._finalDecrypt = function _finalDecrypt() { - assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt'); - var out = new Array(this.blockSize); - this._flushBuffer(out, 0); - - return this._unpad(out); -}; - -},{"minimalistic-assert":268}],198:[function(require,module,exports){ -'use strict'; - -var assert = require('minimalistic-assert'); -var inherits = require('inherits'); - -var des = require('../des'); -var utils = des.utils; -var Cipher = des.Cipher; - -function DESState() { - this.tmp = new Array(2); - this.keys = null; -} - -function DES(options) { - Cipher.call(this, options); - - var state = new DESState(); - this._desState = state; - - this.deriveKeys(state, options.key); -} -inherits(DES, Cipher); -module.exports = DES; - -DES.create = function create(options) { - return new DES(options); -}; - -var shiftTable = [ - 1, 1, 2, 2, 2, 2, 2, 2, - 1, 2, 2, 2, 2, 2, 2, 1 -]; - -DES.prototype.deriveKeys = function deriveKeys(state, key) { - state.keys = new Array(16 * 2); - - assert.equal(key.length, this.blockSize, 'Invalid key length'); - - var kL = utils.readUInt32BE(key, 0); - var kR = utils.readUInt32BE(key, 4); - - utils.pc1(kL, kR, state.tmp, 0); - kL = state.tmp[0]; - kR = state.tmp[1]; - for (var i = 0; i < state.keys.length; i += 2) { - var shift = shiftTable[i >>> 1]; - kL = utils.r28shl(kL, shift); - kR = utils.r28shl(kR, shift); - utils.pc2(kL, kR, state.keys, i); - } -}; - -DES.prototype._update = function _update(inp, inOff, out, outOff) { - var state = this._desState; - - var l = utils.readUInt32BE(inp, inOff); - var r = utils.readUInt32BE(inp, inOff + 4); - - // Initial Permutation - utils.ip(l, r, state.tmp, 0); - l = state.tmp[0]; - r = state.tmp[1]; - - if (this.type === 'encrypt') - this._encrypt(state, l, r, state.tmp, 0); - else - this._decrypt(state, l, r, state.tmp, 0); - - l = state.tmp[0]; - r = state.tmp[1]; - - utils.writeUInt32BE(out, l, outOff); - utils.writeUInt32BE(out, r, outOff + 4); -}; - -DES.prototype._pad = function _pad(buffer, off) { - var value = buffer.length - off; - for (var i = off; i < buffer.length; i++) - buffer[i] = value; - - return true; -}; - -DES.prototype._unpad = function _unpad(buffer) { - var pad = buffer[buffer.length - 1]; - for (var i = buffer.length - pad; i < buffer.length; i++) - assert.equal(buffer[i], pad); - - return buffer.slice(0, buffer.length - pad); -}; - -DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) { - var l = lStart; - var r = rStart; - - // Apply f() x16 times - for (var i = 0; i < state.keys.length; i += 2) { - var keyL = state.keys[i]; - var keyR = state.keys[i + 1]; - - // f(r, k) - utils.expand(r, state.tmp, 0); - - keyL ^= state.tmp[0]; - keyR ^= state.tmp[1]; - var s = utils.substitute(keyL, keyR); - var f = utils.permute(s); - - var t = r; - r = (l ^ f) >>> 0; - l = t; - } - - // Reverse Initial Permutation - utils.rip(r, l, out, off); -}; - -DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) { - var l = rStart; - var r = lStart; - - // Apply f() x16 times - for (var i = state.keys.length - 2; i >= 0; i -= 2) { - var keyL = state.keys[i]; - var keyR = state.keys[i + 1]; - - // f(r, k) - utils.expand(l, state.tmp, 0); - - keyL ^= state.tmp[0]; - keyR ^= state.tmp[1]; - var s = utils.substitute(keyL, keyR); - var f = utils.permute(s); - - var t = l; - l = (r ^ f) >>> 0; - r = t; - } - - // Reverse Initial Permutation - utils.rip(l, r, out, off); -}; - -},{"../des":195,"inherits":262,"minimalistic-assert":268}],199:[function(require,module,exports){ -'use strict'; - -var assert = require('minimalistic-assert'); -var inherits = require('inherits'); - -var des = require('../des'); -var Cipher = des.Cipher; -var DES = des.DES; - -function EDEState(type, key) { - assert.equal(key.length, 24, 'Invalid key length'); - - var k1 = key.slice(0, 8); - var k2 = key.slice(8, 16); - var k3 = key.slice(16, 24); - - if (type === 'encrypt') { - this.ciphers = [ - DES.create({ type: 'encrypt', key: k1 }), - DES.create({ type: 'decrypt', key: k2 }), - DES.create({ type: 'encrypt', key: k3 }) - ]; - } else { - this.ciphers = [ - DES.create({ type: 'decrypt', key: k3 }), - DES.create({ type: 'encrypt', key: k2 }), - DES.create({ type: 'decrypt', key: k1 }) - ]; - } -} - -function EDE(options) { - Cipher.call(this, options); - - var state = new EDEState(this.type, this.options.key); - this._edeState = state; -} -inherits(EDE, Cipher); - -module.exports = EDE; - -EDE.create = function create(options) { - return new EDE(options); -}; - -EDE.prototype._update = function _update(inp, inOff, out, outOff) { - var state = this._edeState; - - state.ciphers[0]._update(inp, inOff, out, outOff); - state.ciphers[1]._update(out, outOff, out, outOff); - state.ciphers[2]._update(out, outOff, out, outOff); -}; - -EDE.prototype._pad = DES.prototype._pad; -EDE.prototype._unpad = DES.prototype._unpad; - -},{"../des":195,"inherits":262,"minimalistic-assert":268}],200:[function(require,module,exports){ -'use strict'; - -exports.readUInt32BE = function readUInt32BE(bytes, off) { - var res = (bytes[0 + off] << 24) | - (bytes[1 + off] << 16) | - (bytes[2 + off] << 8) | - bytes[3 + off]; - return res >>> 0; -}; - -exports.writeUInt32BE = function writeUInt32BE(bytes, value, off) { - bytes[0 + off] = value >>> 24; - bytes[1 + off] = (value >>> 16) & 0xff; - bytes[2 + off] = (value >>> 8) & 0xff; - bytes[3 + off] = value & 0xff; -}; - -exports.ip = function ip(inL, inR, out, off) { - var outL = 0; - var outR = 0; - - for (var i = 6; i >= 0; i -= 2) { - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= (inR >>> (j + i)) & 1; - } - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= (inL >>> (j + i)) & 1; - } - } - - for (var i = 6; i >= 0; i -= 2) { - for (var j = 1; j <= 25; j += 8) { - outR <<= 1; - outR |= (inR >>> (j + i)) & 1; - } - for (var j = 1; j <= 25; j += 8) { - outR <<= 1; - outR |= (inL >>> (j + i)) & 1; - } - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.rip = function rip(inL, inR, out, off) { - var outL = 0; - var outR = 0; - - for (var i = 0; i < 4; i++) { - for (var j = 24; j >= 0; j -= 8) { - outL <<= 1; - outL |= (inR >>> (j + i)) & 1; - outL <<= 1; - outL |= (inL >>> (j + i)) & 1; - } - } - for (var i = 4; i < 8; i++) { - for (var j = 24; j >= 0; j -= 8) { - outR <<= 1; - outR |= (inR >>> (j + i)) & 1; - outR <<= 1; - outR |= (inL >>> (j + i)) & 1; - } - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.pc1 = function pc1(inL, inR, out, off) { - var outL = 0; - var outR = 0; - - // 7, 15, 23, 31, 39, 47, 55, 63 - // 6, 14, 22, 30, 39, 47, 55, 63 - // 5, 13, 21, 29, 39, 47, 55, 63 - // 4, 12, 20, 28 - for (var i = 7; i >= 5; i--) { - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= (inR >> (j + i)) & 1; - } - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= (inL >> (j + i)) & 1; - } - } - for (var j = 0; j <= 24; j += 8) { - outL <<= 1; - outL |= (inR >> (j + i)) & 1; - } - - // 1, 9, 17, 25, 33, 41, 49, 57 - // 2, 10, 18, 26, 34, 42, 50, 58 - // 3, 11, 19, 27, 35, 43, 51, 59 - // 36, 44, 52, 60 - for (var i = 1; i <= 3; i++) { - for (var j = 0; j <= 24; j += 8) { - outR <<= 1; - outR |= (inR >> (j + i)) & 1; - } - for (var j = 0; j <= 24; j += 8) { - outR <<= 1; - outR |= (inL >> (j + i)) & 1; - } - } - for (var j = 0; j <= 24; j += 8) { - outR <<= 1; - outR |= (inL >> (j + i)) & 1; - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.r28shl = function r28shl(num, shift) { - return ((num << shift) & 0xfffffff) | (num >>> (28 - shift)); -}; - -var pc2table = [ - // inL => outL - 14, 11, 17, 4, 27, 23, 25, 0, - 13, 22, 7, 18, 5, 9, 16, 24, - 2, 20, 12, 21, 1, 8, 15, 26, - - // inR => outR - 15, 4, 25, 19, 9, 1, 26, 16, - 5, 11, 23, 8, 12, 7, 17, 0, - 22, 3, 10, 14, 6, 20, 27, 24 -]; - -exports.pc2 = function pc2(inL, inR, out, off) { - var outL = 0; - var outR = 0; - - var len = pc2table.length >>> 1; - for (var i = 0; i < len; i++) { - outL <<= 1; - outL |= (inL >>> pc2table[i]) & 0x1; - } - for (var i = len; i < pc2table.length; i++) { - outR <<= 1; - outR |= (inR >>> pc2table[i]) & 0x1; - } - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -exports.expand = function expand(r, out, off) { - var outL = 0; - var outR = 0; - - outL = ((r & 1) << 5) | (r >>> 27); - for (var i = 23; i >= 15; i -= 4) { - outL <<= 6; - outL |= (r >>> i) & 0x3f; - } - for (var i = 11; i >= 3; i -= 4) { - outR |= (r >>> i) & 0x3f; - outR <<= 6; - } - outR |= ((r & 0x1f) << 1) | (r >>> 31); - - out[off + 0] = outL >>> 0; - out[off + 1] = outR >>> 0; -}; - -var sTable = [ - 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, - 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, - 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, - 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, - - 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, - 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, - 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, - 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, - - 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, - 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, - 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, - 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, - - 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, - 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, - 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, - 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, - - 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, - 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, - 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, - 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, - - 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, - 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, - 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, - 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, - - 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, - 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, - 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, - 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, - - 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, - 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, - 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, - 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11 -]; - -exports.substitute = function substitute(inL, inR) { - var out = 0; - for (var i = 0; i < 4; i++) { - var b = (inL >>> (18 - i * 6)) & 0x3f; - var sb = sTable[i * 0x40 + b]; - - out <<= 4; - out |= sb; - } - for (var i = 0; i < 4; i++) { - var b = (inR >>> (18 - i * 6)) & 0x3f; - var sb = sTable[4 * 0x40 + i * 0x40 + b]; - - out <<= 4; - out |= sb; - } - return out >>> 0; -}; - -var permuteTable = [ - 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, - 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7 -]; - -exports.permute = function permute(num) { - var out = 0; - for (var i = 0; i < permuteTable.length; i++) { - out <<= 1; - out |= (num >>> permuteTable[i]) & 0x1; - } - return out >>> 0; -}; - -exports.padSplit = function padSplit(num, size, group) { - var str = num.toString(2); - while (str.length < size) - str = '0' + str; - - var out = []; - for (var i = 0; i < size; i += group) - out.push(str.slice(i, i + group)); - return out.join(' '); -}; - -},{}],201:[function(require,module,exports){ -(function (Buffer){ -var generatePrime = require('./lib/generatePrime') -var primes = require('./lib/primes.json') - -var DH = require('./lib/dh') - -function getDiffieHellman (mod) { - var prime = new Buffer(primes[mod].prime, 'hex') - var gen = new Buffer(primes[mod].gen, 'hex') - - return new DH(prime, gen) -} - -var ENCODINGS = { - 'binary': true, 'hex': true, 'base64': true -} - -function createDiffieHellman (prime, enc, generator, genc) { - if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) { - return createDiffieHellman(prime, 'binary', enc, generator) - } - - enc = enc || 'binary' - genc = genc || 'binary' - generator = generator || new Buffer([2]) - - if (!Buffer.isBuffer(generator)) { - generator = new Buffer(generator, genc) - } - - if (typeof prime === 'number') { - return new DH(generatePrime(prime, generator), generator, true) - } - - if (!Buffer.isBuffer(prime)) { - prime = new Buffer(prime, enc) - } - - return new DH(prime, generator, true) -} - -exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman -exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman - -}).call(this,require("buffer").Buffer) -},{"./lib/dh":202,"./lib/generatePrime":203,"./lib/primes.json":204,"buffer":182}],202:[function(require,module,exports){ -(function (Buffer){ -var BN = require('bn.js'); -var MillerRabin = require('miller-rabin'); -var millerRabin = new MillerRabin(); -var TWENTYFOUR = new BN(24); -var ELEVEN = new BN(11); -var TEN = new BN(10); -var THREE = new BN(3); -var SEVEN = new BN(7); -var primes = require('./generatePrime'); -var randomBytes = require('randombytes'); -module.exports = DH; - -function setPublicKey(pub, enc) { - enc = enc || 'utf8'; - if (!Buffer.isBuffer(pub)) { - pub = new Buffer(pub, enc); - } - this._pub = new BN(pub); - return this; -} - -function setPrivateKey(priv, enc) { - enc = enc || 'utf8'; - if (!Buffer.isBuffer(priv)) { - priv = new Buffer(priv, enc); - } - this._priv = new BN(priv); - return this; -} - -var primeCache = {}; -function checkPrime(prime, generator) { - var gen = generator.toString('hex'); - var hex = [gen, prime.toString(16)].join('_'); - if (hex in primeCache) { - return primeCache[hex]; - } - var error = 0; - - if (prime.isEven() || - !primes.simpleSieve || - !primes.fermatTest(prime) || - !millerRabin.test(prime)) { - //not a prime so +1 - error += 1; - - if (gen === '02' || gen === '05') { - // we'd be able to check the generator - // it would fail so +8 - error += 8; - } else { - //we wouldn't be able to test the generator - // so +4 - error += 4; - } - primeCache[hex] = error; - return error; - } - if (!millerRabin.test(prime.shrn(1))) { - //not a safe prime - error += 2; - } - var rem; - switch (gen) { - case '02': - if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) { - // unsuidable generator - error += 8; - } - break; - case '05': - rem = prime.mod(TEN); - if (rem.cmp(THREE) && rem.cmp(SEVEN)) { - // prime mod 10 needs to equal 3 or 7 - error += 8; - } - break; - default: - error += 4; - } - primeCache[hex] = error; - return error; -} - -function DH(prime, generator, malleable) { - this.setGenerator(generator); - this.__prime = new BN(prime); - this._prime = BN.mont(this.__prime); - this._primeLen = prime.length; - this._pub = undefined; - this._priv = undefined; - this._primeCode = undefined; - if (malleable) { - this.setPublicKey = setPublicKey; - this.setPrivateKey = setPrivateKey; - } else { - this._primeCode = 8; - } -} -Object.defineProperty(DH.prototype, 'verifyError', { - enumerable: true, - get: function () { - if (typeof this._primeCode !== 'number') { - this._primeCode = checkPrime(this.__prime, this.__gen); - } - return this._primeCode; - } -}); -DH.prototype.generateKeys = function () { - if (!this._priv) { - this._priv = new BN(randomBytes(this._primeLen)); - } - this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed(); - return this.getPublicKey(); -}; - -DH.prototype.computeSecret = function (other) { - other = new BN(other); - other = other.toRed(this._prime); - var secret = other.redPow(this._priv).fromRed(); - var out = new Buffer(secret.toArray()); - var prime = this.getPrime(); - if (out.length < prime.length) { - var front = new Buffer(prime.length - out.length); - front.fill(0); - out = Buffer.concat([front, out]); - } - return out; -}; - -DH.prototype.getPublicKey = function getPublicKey(enc) { - return formatReturnValue(this._pub, enc); -}; - -DH.prototype.getPrivateKey = function getPrivateKey(enc) { - return formatReturnValue(this._priv, enc); -}; - -DH.prototype.getPrime = function (enc) { - return formatReturnValue(this.__prime, enc); -}; - -DH.prototype.getGenerator = function (enc) { - return formatReturnValue(this._gen, enc); -}; - -DH.prototype.setGenerator = function (gen, enc) { - enc = enc || 'utf8'; - if (!Buffer.isBuffer(gen)) { - gen = new Buffer(gen, enc); - } - this.__gen = gen; - this._gen = new BN(gen); - return this; -}; - -function formatReturnValue(bn, enc) { - var buf = new Buffer(bn.toArray()); - if (!enc) { - return buf; - } else { - return buf.toString(enc); - } -} - -}).call(this,require("buffer").Buffer) -},{"./generatePrime":203,"bn.js":147,"buffer":182,"miller-rabin":267,"randombytes":298}],203:[function(require,module,exports){ -var randomBytes = require('randombytes'); -module.exports = findPrime; -findPrime.simpleSieve = simpleSieve; -findPrime.fermatTest = fermatTest; -var BN = require('bn.js'); -var TWENTYFOUR = new BN(24); -var MillerRabin = require('miller-rabin'); -var millerRabin = new MillerRabin(); -var ONE = new BN(1); -var TWO = new BN(2); -var FIVE = new BN(5); -var SIXTEEN = new BN(16); -var EIGHT = new BN(8); -var TEN = new BN(10); -var THREE = new BN(3); -var SEVEN = new BN(7); -var ELEVEN = new BN(11); -var FOUR = new BN(4); -var TWELVE = new BN(12); -var primes = null; - -function _getPrimes() { - if (primes !== null) - return primes; - - var limit = 0x100000; - var res = []; - res[0] = 2; - for (var i = 1, k = 3; k < limit; k += 2) { - var sqrt = Math.ceil(Math.sqrt(k)); - for (var j = 0; j < i && res[j] <= sqrt; j++) - if (k % res[j] === 0) - break; - - if (i !== j && res[j] <= sqrt) - continue; - - res[i++] = k; - } - primes = res; - return res; -} - -function simpleSieve(p) { - var primes = _getPrimes(); - - for (var i = 0; i < primes.length; i++) - if (p.modn(primes[i]) === 0) { - if (p.cmpn(primes[i]) === 0) { - return true; - } else { - return false; - } - } - - return true; -} - -function fermatTest(p) { - var red = BN.mont(p); - return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0; -} - -function findPrime(bits, gen) { - if (bits < 16) { - // this is what openssl does - if (gen === 2 || gen === 5) { - return new BN([0x8c, 0x7b]); - } else { - return new BN([0x8c, 0x27]); - } - } - gen = new BN(gen); - - var num, n2; - - while (true) { - num = new BN(randomBytes(Math.ceil(bits / 8))); - while (num.bitLength() > bits) { - num.ishrn(1); - } - if (num.isEven()) { - num.iadd(ONE); - } - if (!num.testn(1)) { - num.iadd(TWO); - } - if (!gen.cmp(TWO)) { - while (num.mod(TWENTYFOUR).cmp(ELEVEN)) { - num.iadd(FOUR); - } - } else if (!gen.cmp(FIVE)) { - while (num.mod(TEN).cmp(THREE)) { - num.iadd(FOUR); - } - } - n2 = num.shrn(1); - if (simpleSieve(n2) && simpleSieve(num) && - fermatTest(n2) && fermatTest(num) && - millerRabin.test(n2) && millerRabin.test(num)) { - return num; - } - } - -} - -},{"bn.js":147,"miller-rabin":267,"randombytes":298}],204:[function(require,module,exports){ -module.exports={ - "modp1": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff" - }, - "modp2": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff" - }, - "modp5": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff" - }, - "modp14": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff" - }, - "modp15": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff" - }, - "modp16": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff" - }, - "modp17": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff" - }, - "modp18": { - "gen": "02", - "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff" - } -} -},{}],205:[function(require,module,exports){ -'use strict'; - -var elliptic = exports; - -elliptic.version = require('../package.json').version; -elliptic.utils = require('./elliptic/utils'); -elliptic.rand = require('brorand'); -elliptic.curve = require('./elliptic/curve'); -elliptic.curves = require('./elliptic/curves'); - -// Protocols -elliptic.ec = require('./elliptic/ec'); -elliptic.eddsa = require('./elliptic/eddsa'); - -},{"../package.json":220,"./elliptic/curve":208,"./elliptic/curves":211,"./elliptic/ec":212,"./elliptic/eddsa":215,"./elliptic/utils":219,"brorand":148}],206:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); -var utils = require('../utils'); -var getNAF = utils.getNAF; -var getJSF = utils.getJSF; -var assert = utils.assert; - -function BaseCurve(type, conf) { - this.type = type; - this.p = new BN(conf.p, 16); - - // Use Montgomery, when there is no fast reduction for the prime - this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); - - // Useful for many curves - this.zero = new BN(0).toRed(this.red); - this.one = new BN(1).toRed(this.red); - this.two = new BN(2).toRed(this.red); - - // Curve configuration, optional - this.n = conf.n && new BN(conf.n, 16); - this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); - - // Temporary arrays - this._wnafT1 = new Array(4); - this._wnafT2 = new Array(4); - this._wnafT3 = new Array(4); - this._wnafT4 = new Array(4); - - // Generalized Greg Maxwell's trick - var adjustCount = this.n && this.p.div(this.n); - if (!adjustCount || adjustCount.cmpn(100) > 0) { - this.redN = null; - } else { - this._maxwellTrick = true; - this.redN = this.n.toRed(this.red); - } -} -module.exports = BaseCurve; - -BaseCurve.prototype.point = function point() { - throw new Error('Not implemented'); -}; - -BaseCurve.prototype.validate = function validate() { - throw new Error('Not implemented'); -}; - -BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) { - assert(p.precomputed); - var doubles = p._getDoubles(); - - var naf = getNAF(k, 1); - var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1); - I /= 3; - - // Translate into more windowed form - var repr = []; - for (var j = 0; j < naf.length; j += doubles.step) { - var nafW = 0; - for (var k = j + doubles.step - 1; k >= j; k--) - nafW = (nafW << 1) + naf[k]; - repr.push(nafW); - } - - var a = this.jpoint(null, null, null); - var b = this.jpoint(null, null, null); - for (var i = I; i > 0; i--) { - for (var j = 0; j < repr.length; j++) { - var nafW = repr[j]; - if (nafW === i) - b = b.mixedAdd(doubles.points[j]); - else if (nafW === -i) - b = b.mixedAdd(doubles.points[j].neg()); - } - a = a.add(b); - } - return a.toP(); -}; - -BaseCurve.prototype._wnafMul = function _wnafMul(p, k) { - var w = 4; - - // Precompute window - var nafPoints = p._getNAFPoints(w); - w = nafPoints.wnd; - var wnd = nafPoints.points; - - // Get NAF form - var naf = getNAF(k, w); - - // Add `this`*(N+1) for every w-NAF index - var acc = this.jpoint(null, null, null); - for (var i = naf.length - 1; i >= 0; i--) { - // Count zeroes - for (var k = 0; i >= 0 && naf[i] === 0; i--) - k++; - if (i >= 0) - k++; - acc = acc.dblp(k); - - if (i < 0) - break; - var z = naf[i]; - assert(z !== 0); - if (p.type === 'affine') { - // J +- P - if (z > 0) - acc = acc.mixedAdd(wnd[(z - 1) >> 1]); - else - acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg()); - } else { - // J +- J - if (z > 0) - acc = acc.add(wnd[(z - 1) >> 1]); - else - acc = acc.add(wnd[(-z - 1) >> 1].neg()); - } - } - return p.type === 'affine' ? acc.toP() : acc; -}; - -BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, - points, - coeffs, - len, - jacobianResult) { - var wndWidth = this._wnafT1; - var wnd = this._wnafT2; - var naf = this._wnafT3; - - // Fill all arrays - var max = 0; - for (var i = 0; i < len; i++) { - var p = points[i]; - var nafPoints = p._getNAFPoints(defW); - wndWidth[i] = nafPoints.wnd; - wnd[i] = nafPoints.points; - } - - // Comb small window NAFs - for (var i = len - 1; i >= 1; i -= 2) { - var a = i - 1; - var b = i; - if (wndWidth[a] !== 1 || wndWidth[b] !== 1) { - naf[a] = getNAF(coeffs[a], wndWidth[a]); - naf[b] = getNAF(coeffs[b], wndWidth[b]); - max = Math.max(naf[a].length, max); - max = Math.max(naf[b].length, max); - continue; - } - - var comb = [ - points[a], /* 1 */ - null, /* 3 */ - null, /* 5 */ - points[b] /* 7 */ - ]; - - // Try to avoid Projective points, if possible - if (points[a].y.cmp(points[b].y) === 0) { - comb[1] = points[a].add(points[b]); - comb[2] = points[a].toJ().mixedAdd(points[b].neg()); - } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) { - comb[1] = points[a].toJ().mixedAdd(points[b]); - comb[2] = points[a].add(points[b].neg()); - } else { - comb[1] = points[a].toJ().mixedAdd(points[b]); - comb[2] = points[a].toJ().mixedAdd(points[b].neg()); - } - - var index = [ - -3, /* -1 -1 */ - -1, /* -1 0 */ - -5, /* -1 1 */ - -7, /* 0 -1 */ - 0, /* 0 0 */ - 7, /* 0 1 */ - 5, /* 1 -1 */ - 1, /* 1 0 */ - 3 /* 1 1 */ - ]; - - var jsf = getJSF(coeffs[a], coeffs[b]); - max = Math.max(jsf[0].length, max); - naf[a] = new Array(max); - naf[b] = new Array(max); - for (var j = 0; j < max; j++) { - var ja = jsf[0][j] | 0; - var jb = jsf[1][j] | 0; - - naf[a][j] = index[(ja + 1) * 3 + (jb + 1)]; - naf[b][j] = 0; - wnd[a] = comb; - } - } - - var acc = this.jpoint(null, null, null); - var tmp = this._wnafT4; - for (var i = max; i >= 0; i--) { - var k = 0; - - while (i >= 0) { - var zero = true; - for (var j = 0; j < len; j++) { - tmp[j] = naf[j][i] | 0; - if (tmp[j] !== 0) - zero = false; - } - if (!zero) - break; - k++; - i--; - } - if (i >= 0) - k++; - acc = acc.dblp(k); - if (i < 0) - break; - - for (var j = 0; j < len; j++) { - var z = tmp[j]; - var p; - if (z === 0) - continue; - else if (z > 0) - p = wnd[j][(z - 1) >> 1]; - else if (z < 0) - p = wnd[j][(-z - 1) >> 1].neg(); - - if (p.type === 'affine') - acc = acc.mixedAdd(p); - else - acc = acc.add(p); - } - } - // Zeroify references - for (var i = 0; i < len; i++) - wnd[i] = null; - - if (jacobianResult) - return acc; - else - return acc.toP(); -}; - -function BasePoint(curve, type) { - this.curve = curve; - this.type = type; - this.precomputed = null; -} -BaseCurve.BasePoint = BasePoint; - -BasePoint.prototype.eq = function eq(/*other*/) { - throw new Error('Not implemented'); -}; - -BasePoint.prototype.validate = function validate() { - return this.curve.validate(this); -}; - -BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) { - bytes = utils.toArray(bytes, enc); - - var len = this.p.byteLength(); - - // uncompressed, hybrid-odd, hybrid-even - if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && - bytes.length - 1 === 2 * len) { - if (bytes[0] === 0x06) - assert(bytes[bytes.length - 1] % 2 === 0); - else if (bytes[0] === 0x07) - assert(bytes[bytes.length - 1] % 2 === 1); - - var res = this.point(bytes.slice(1, 1 + len), - bytes.slice(1 + len, 1 + 2 * len)); - - return res; - } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && - bytes.length - 1 === len) { - return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03); - } - throw new Error('Unknown point format'); -}; - -BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) { - return this.encode(enc, true); -}; - -BasePoint.prototype._encode = function _encode(compact) { - var len = this.curve.p.byteLength(); - var x = this.getX().toArray('be', len); - - if (compact) - return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x); - - return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ; -}; - -BasePoint.prototype.encode = function encode(enc, compact) { - return utils.encode(this._encode(compact), enc); -}; - -BasePoint.prototype.precompute = function precompute(power) { - if (this.precomputed) - return this; - - var precomputed = { - doubles: null, - naf: null, - beta: null - }; - precomputed.naf = this._getNAFPoints(8); - precomputed.doubles = this._getDoubles(4, power); - precomputed.beta = this._getBeta(); - this.precomputed = precomputed; - - return this; -}; - -BasePoint.prototype._hasDoubles = function _hasDoubles(k) { - if (!this.precomputed) - return false; - - var doubles = this.precomputed.doubles; - if (!doubles) - return false; - - return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step); -}; - -BasePoint.prototype._getDoubles = function _getDoubles(step, power) { - if (this.precomputed && this.precomputed.doubles) - return this.precomputed.doubles; - - var doubles = [ this ]; - var acc = this; - for (var i = 0; i < power; i += step) { - for (var j = 0; j < step; j++) - acc = acc.dbl(); - doubles.push(acc); - } - return { - step: step, - points: doubles - }; -}; - -BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) { - if (this.precomputed && this.precomputed.naf) - return this.precomputed.naf; - - var res = [ this ]; - var max = (1 << wnd) - 1; - var dbl = max === 1 ? null : this.dbl(); - for (var i = 1; i < max; i++) - res[i] = res[i - 1].add(dbl); - return { - wnd: wnd, - points: res - }; -}; - -BasePoint.prototype._getBeta = function _getBeta() { - return null; -}; - -BasePoint.prototype.dblp = function dblp(k) { - var r = this; - for (var i = 0; i < k; i++) - r = r.dbl(); - return r; -}; - -},{"../utils":219,"bn.js":147}],207:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var BN = require('bn.js'); -var inherits = require('inherits'); -var Base = require('./base'); - -var assert = utils.assert; - -function EdwardsCurve(conf) { - // NOTE: Important as we are creating point in Base.call() - this.twisted = (conf.a | 0) !== 1; - this.mOneA = this.twisted && (conf.a | 0) === -1; - this.extended = this.mOneA; - - Base.call(this, 'edwards', conf); - - this.a = new BN(conf.a, 16).umod(this.red.m); - this.a = this.a.toRed(this.red); - this.c = new BN(conf.c, 16).toRed(this.red); - this.c2 = this.c.redSqr(); - this.d = new BN(conf.d, 16).toRed(this.red); - this.dd = this.d.redAdd(this.d); - - assert(!this.twisted || this.c.fromRed().cmpn(1) === 0); - this.oneC = (conf.c | 0) === 1; -} -inherits(EdwardsCurve, Base); -module.exports = EdwardsCurve; - -EdwardsCurve.prototype._mulA = function _mulA(num) { - if (this.mOneA) - return num.redNeg(); - else - return this.a.redMul(num); -}; - -EdwardsCurve.prototype._mulC = function _mulC(num) { - if (this.oneC) - return num; - else - return this.c.redMul(num); -}; - -// Just for compatibility with Short curve -EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) { - return this.point(x, y, z, t); -}; - -EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) { - x = new BN(x, 16); - if (!x.red) - x = x.toRed(this.red); - - var x2 = x.redSqr(); - var rhs = this.c2.redSub(this.a.redMul(x2)); - var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2)); - - var y2 = rhs.redMul(lhs.redInvm()); - var y = y2.redSqrt(); - if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) - throw new Error('invalid point'); - - var isOdd = y.fromRed().isOdd(); - if (odd && !isOdd || !odd && isOdd) - y = y.redNeg(); - - return this.point(x, y); -}; - -EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) { - y = new BN(y, 16); - if (!y.red) - y = y.toRed(this.red); - - // x^2 = (y^2 - c^2) / (c^2 d y^2 - a) - var y2 = y.redSqr(); - var lhs = y2.redSub(this.c2); - var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a); - var x2 = lhs.redMul(rhs.redInvm()); - - if (x2.cmp(this.zero) === 0) { - if (odd) - throw new Error('invalid point'); - else - return this.point(this.zero, y); - } - - var x = x2.redSqrt(); - if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) - throw new Error('invalid point'); - - if (x.fromRed().isOdd() !== odd) - x = x.redNeg(); - - return this.point(x, y); -}; - -EdwardsCurve.prototype.validate = function validate(point) { - if (point.isInfinity()) - return true; - - // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2) - point.normalize(); - - var x2 = point.x.redSqr(); - var y2 = point.y.redSqr(); - var lhs = x2.redMul(this.a).redAdd(y2); - var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2))); - - return lhs.cmp(rhs) === 0; -}; - -function Point(curve, x, y, z, t) { - Base.BasePoint.call(this, curve, 'projective'); - if (x === null && y === null && z === null) { - this.x = this.curve.zero; - this.y = this.curve.one; - this.z = this.curve.one; - this.t = this.curve.zero; - this.zOne = true; - } else { - this.x = new BN(x, 16); - this.y = new BN(y, 16); - this.z = z ? new BN(z, 16) : this.curve.one; - this.t = t && new BN(t, 16); - if (!this.x.red) - this.x = this.x.toRed(this.curve.red); - if (!this.y.red) - this.y = this.y.toRed(this.curve.red); - if (!this.z.red) - this.z = this.z.toRed(this.curve.red); - if (this.t && !this.t.red) - this.t = this.t.toRed(this.curve.red); - this.zOne = this.z === this.curve.one; - - // Use extended coordinates - if (this.curve.extended && !this.t) { - this.t = this.x.redMul(this.y); - if (!this.zOne) - this.t = this.t.redMul(this.z.redInvm()); - } - } -} -inherits(Point, Base.BasePoint); - -EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) { - return Point.fromJSON(this, obj); -}; - -EdwardsCurve.prototype.point = function point(x, y, z, t) { - return new Point(this, x, y, z, t); -}; - -Point.fromJSON = function fromJSON(curve, obj) { - return new Point(curve, obj[0], obj[1], obj[2]); -}; - -Point.prototype.inspect = function inspect() { - if (this.isInfinity()) - return ''; - return ''; -}; - -Point.prototype.isInfinity = function isInfinity() { - // XXX This code assumes that zero is always zero in red - return this.x.cmpn(0) === 0 && - (this.y.cmp(this.z) === 0 || - (this.zOne && this.y.cmp(this.curve.c) === 0)); -}; - -Point.prototype._extDbl = function _extDbl() { - // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html - // #doubling-dbl-2008-hwcd - // 4M + 4S - - // A = X1^2 - var a = this.x.redSqr(); - // B = Y1^2 - var b = this.y.redSqr(); - // C = 2 * Z1^2 - var c = this.z.redSqr(); - c = c.redIAdd(c); - // D = a * A - var d = this.curve._mulA(a); - // E = (X1 + Y1)^2 - A - B - var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); - // G = D + B - var g = d.redAdd(b); - // F = G - C - var f = g.redSub(c); - // H = D - B - var h = d.redSub(b); - // X3 = E * F - var nx = e.redMul(f); - // Y3 = G * H - var ny = g.redMul(h); - // T3 = E * H - var nt = e.redMul(h); - // Z3 = F * G - var nz = f.redMul(g); - return this.curve.point(nx, ny, nz, nt); -}; - -Point.prototype._projDbl = function _projDbl() { - // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html - // #doubling-dbl-2008-bbjlp - // #doubling-dbl-2007-bl - // and others - // Generally 3M + 4S or 2M + 4S - - // B = (X1 + Y1)^2 - var b = this.x.redAdd(this.y).redSqr(); - // C = X1^2 - var c = this.x.redSqr(); - // D = Y1^2 - var d = this.y.redSqr(); - - var nx; - var ny; - var nz; - if (this.curve.twisted) { - // E = a * C - var e = this.curve._mulA(c); - // F = E + D - var f = e.redAdd(d); - if (this.zOne) { - // X3 = (B - C - D) * (F - 2) - nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); - // Y3 = F * (E - D) - ny = f.redMul(e.redSub(d)); - // Z3 = F^2 - 2 * F - nz = f.redSqr().redSub(f).redSub(f); - } else { - // H = Z1^2 - var h = this.z.redSqr(); - // J = F - 2 * H - var j = f.redSub(h).redISub(h); - // X3 = (B-C-D)*J - nx = b.redSub(c).redISub(d).redMul(j); - // Y3 = F * (E - D) - ny = f.redMul(e.redSub(d)); - // Z3 = F * J - nz = f.redMul(j); - } - } else { - // E = C + D - var e = c.redAdd(d); - // H = (c * Z1)^2 - var h = this.curve._mulC(this.z).redSqr(); - // J = E - 2 * H - var j = e.redSub(h).redSub(h); - // X3 = c * (B - E) * J - nx = this.curve._mulC(b.redISub(e)).redMul(j); - // Y3 = c * E * (C - D) - ny = this.curve._mulC(e).redMul(c.redISub(d)); - // Z3 = E * J - nz = e.redMul(j); - } - return this.curve.point(nx, ny, nz); -}; - -Point.prototype.dbl = function dbl() { - if (this.isInfinity()) - return this; - - // Double in extended coordinates - if (this.curve.extended) - return this._extDbl(); - else - return this._projDbl(); -}; - -Point.prototype._extAdd = function _extAdd(p) { - // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html - // #addition-add-2008-hwcd-3 - // 8M - - // A = (Y1 - X1) * (Y2 - X2) - var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); - // B = (Y1 + X1) * (Y2 + X2) - var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); - // C = T1 * k * T2 - var c = this.t.redMul(this.curve.dd).redMul(p.t); - // D = Z1 * 2 * Z2 - var d = this.z.redMul(p.z.redAdd(p.z)); - // E = B - A - var e = b.redSub(a); - // F = D - C - var f = d.redSub(c); - // G = D + C - var g = d.redAdd(c); - // H = B + A - var h = b.redAdd(a); - // X3 = E * F - var nx = e.redMul(f); - // Y3 = G * H - var ny = g.redMul(h); - // T3 = E * H - var nt = e.redMul(h); - // Z3 = F * G - var nz = f.redMul(g); - return this.curve.point(nx, ny, nz, nt); -}; - -Point.prototype._projAdd = function _projAdd(p) { - // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html - // #addition-add-2008-bbjlp - // #addition-add-2007-bl - // 10M + 1S - - // A = Z1 * Z2 - var a = this.z.redMul(p.z); - // B = A^2 - var b = a.redSqr(); - // C = X1 * X2 - var c = this.x.redMul(p.x); - // D = Y1 * Y2 - var d = this.y.redMul(p.y); - // E = d * C * D - var e = this.curve.d.redMul(c).redMul(d); - // F = B - E - var f = b.redSub(e); - // G = B + E - var g = b.redAdd(e); - // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D) - var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d); - var nx = a.redMul(f).redMul(tmp); - var ny; - var nz; - if (this.curve.twisted) { - // Y3 = A * G * (D - a * C) - ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); - // Z3 = F * G - nz = f.redMul(g); - } else { - // Y3 = A * G * (D - C) - ny = a.redMul(g).redMul(d.redSub(c)); - // Z3 = c * F * G - nz = this.curve._mulC(f).redMul(g); - } - return this.curve.point(nx, ny, nz); -}; - -Point.prototype.add = function add(p) { - if (this.isInfinity()) - return p; - if (p.isInfinity()) - return this; - - if (this.curve.extended) - return this._extAdd(p); - else - return this._projAdd(p); -}; - -Point.prototype.mul = function mul(k) { - if (this._hasDoubles(k)) - return this.curve._fixedNafMul(this, k); - else - return this.curve._wnafMul(this, k); -}; - -Point.prototype.mulAdd = function mulAdd(k1, p, k2) { - return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false); -}; - -Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) { - return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true); -}; - -Point.prototype.normalize = function normalize() { - if (this.zOne) - return this; - - // Normalize coordinates - var zi = this.z.redInvm(); - this.x = this.x.redMul(zi); - this.y = this.y.redMul(zi); - if (this.t) - this.t = this.t.redMul(zi); - this.z = this.curve.one; - this.zOne = true; - return this; -}; - -Point.prototype.neg = function neg() { - return this.curve.point(this.x.redNeg(), - this.y, - this.z, - this.t && this.t.redNeg()); -}; - -Point.prototype.getX = function getX() { - this.normalize(); - return this.x.fromRed(); -}; - -Point.prototype.getY = function getY() { - this.normalize(); - return this.y.fromRed(); -}; - -Point.prototype.eq = function eq(other) { - return this === other || - this.getX().cmp(other.getX()) === 0 && - this.getY().cmp(other.getY()) === 0; -}; - -Point.prototype.eqXToP = function eqXToP(x) { - var rx = x.toRed(this.curve.red).redMul(this.z); - if (this.x.cmp(rx) === 0) - return true; - - var xc = x.clone(); - var t = this.curve.redN.redMul(this.z); - for (;;) { - xc.iadd(this.curve.n); - if (xc.cmp(this.curve.p) >= 0) - return false; - - rx.redIAdd(t); - if (this.x.cmp(rx) === 0) - return true; - } -}; - -// Compatibility with BaseCurve -Point.prototype.toP = Point.prototype.normalize; -Point.prototype.mixedAdd = Point.prototype.add; - -},{"../utils":219,"./base":206,"bn.js":147,"inherits":262}],208:[function(require,module,exports){ -'use strict'; - -var curve = exports; - -curve.base = require('./base'); -curve.short = require('./short'); -curve.mont = require('./mont'); -curve.edwards = require('./edwards'); - -},{"./base":206,"./edwards":207,"./mont":209,"./short":210}],209:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); -var inherits = require('inherits'); -var Base = require('./base'); - -var utils = require('../utils'); - -function MontCurve(conf) { - Base.call(this, 'mont', conf); - - this.a = new BN(conf.a, 16).toRed(this.red); - this.b = new BN(conf.b, 16).toRed(this.red); - this.i4 = new BN(4).toRed(this.red).redInvm(); - this.two = new BN(2).toRed(this.red); - this.a24 = this.i4.redMul(this.a.redAdd(this.two)); -} -inherits(MontCurve, Base); -module.exports = MontCurve; - -MontCurve.prototype.validate = function validate(point) { - var x = point.normalize().x; - var x2 = x.redSqr(); - var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x); - var y = rhs.redSqrt(); - - return y.redSqr().cmp(rhs) === 0; -}; - -function Point(curve, x, z) { - Base.BasePoint.call(this, curve, 'projective'); - if (x === null && z === null) { - this.x = this.curve.one; - this.z = this.curve.zero; - } else { - this.x = new BN(x, 16); - this.z = new BN(z, 16); - if (!this.x.red) - this.x = this.x.toRed(this.curve.red); - if (!this.z.red) - this.z = this.z.toRed(this.curve.red); - } -} -inherits(Point, Base.BasePoint); - -MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) { - return this.point(utils.toArray(bytes, enc), 1); -}; - -MontCurve.prototype.point = function point(x, z) { - return new Point(this, x, z); -}; - -MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) { - return Point.fromJSON(this, obj); -}; - -Point.prototype.precompute = function precompute() { - // No-op -}; - -Point.prototype._encode = function _encode() { - return this.getX().toArray('be', this.curve.p.byteLength()); -}; - -Point.fromJSON = function fromJSON(curve, obj) { - return new Point(curve, obj[0], obj[1] || curve.one); -}; - -Point.prototype.inspect = function inspect() { - if (this.isInfinity()) - return ''; - return ''; -}; - -Point.prototype.isInfinity = function isInfinity() { - // XXX This code assumes that zero is always zero in red - return this.z.cmpn(0) === 0; -}; - -Point.prototype.dbl = function dbl() { - // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3 - // 2M + 2S + 4A - - // A = X1 + Z1 - var a = this.x.redAdd(this.z); - // AA = A^2 - var aa = a.redSqr(); - // B = X1 - Z1 - var b = this.x.redSub(this.z); - // BB = B^2 - var bb = b.redSqr(); - // C = AA - BB - var c = aa.redSub(bb); - // X3 = AA * BB - var nx = aa.redMul(bb); - // Z3 = C * (BB + A24 * C) - var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c))); - return this.curve.point(nx, nz); -}; - -Point.prototype.add = function add() { - throw new Error('Not supported on Montgomery curve'); -}; - -Point.prototype.diffAdd = function diffAdd(p, diff) { - // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3 - // 4M + 2S + 6A - - // A = X2 + Z2 - var a = this.x.redAdd(this.z); - // B = X2 - Z2 - var b = this.x.redSub(this.z); - // C = X3 + Z3 - var c = p.x.redAdd(p.z); - // D = X3 - Z3 - var d = p.x.redSub(p.z); - // DA = D * A - var da = d.redMul(a); - // CB = C * B - var cb = c.redMul(b); - // X5 = Z1 * (DA + CB)^2 - var nx = diff.z.redMul(da.redAdd(cb).redSqr()); - // Z5 = X1 * (DA - CB)^2 - var nz = diff.x.redMul(da.redISub(cb).redSqr()); - return this.curve.point(nx, nz); -}; - -Point.prototype.mul = function mul(k) { - var t = k.clone(); - var a = this; // (N / 2) * Q + Q - var b = this.curve.point(null, null); // (N / 2) * Q - var c = this; // Q - - for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) - bits.push(t.andln(1)); - - for (var i = bits.length - 1; i >= 0; i--) { - if (bits[i] === 0) { - // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q - a = a.diffAdd(b, c); - // N * Q = 2 * ((N / 2) * Q + Q)) - b = b.dbl(); - } else { - // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q) - b = a.diffAdd(b, c); - // N * Q + Q = 2 * ((N / 2) * Q + Q) - a = a.dbl(); - } - } - return b; -}; - -Point.prototype.mulAdd = function mulAdd() { - throw new Error('Not supported on Montgomery curve'); -}; - -Point.prototype.jumlAdd = function jumlAdd() { - throw new Error('Not supported on Montgomery curve'); -}; - -Point.prototype.eq = function eq(other) { - return this.getX().cmp(other.getX()) === 0; -}; - -Point.prototype.normalize = function normalize() { - this.x = this.x.redMul(this.z.redInvm()); - this.z = this.curve.one; - return this; -}; - -Point.prototype.getX = function getX() { - // Normalize coordinates - this.normalize(); - - return this.x.fromRed(); -}; - -},{"../utils":219,"./base":206,"bn.js":147,"inherits":262}],210:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var BN = require('bn.js'); -var inherits = require('inherits'); -var Base = require('./base'); - -var assert = utils.assert; - -function ShortCurve(conf) { - Base.call(this, 'short', conf); - - this.a = new BN(conf.a, 16).toRed(this.red); - this.b = new BN(conf.b, 16).toRed(this.red); - this.tinv = this.two.redInvm(); - - this.zeroA = this.a.fromRed().cmpn(0) === 0; - this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; - - // If the curve is endomorphic, precalculate beta and lambda - this.endo = this._getEndomorphism(conf); - this._endoWnafT1 = new Array(4); - this._endoWnafT2 = new Array(4); -} -inherits(ShortCurve, Base); -module.exports = ShortCurve; - -ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) { - // No efficient endomorphism - if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) - return; - - // Compute beta and lambda, that lambda * P = (beta * Px; Py) - var beta; - var lambda; - if (conf.beta) { - beta = new BN(conf.beta, 16).toRed(this.red); - } else { - var betas = this._getEndoRoots(this.p); - // Choose the smallest beta - beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1]; - beta = beta.toRed(this.red); - } - if (conf.lambda) { - lambda = new BN(conf.lambda, 16); - } else { - // Choose the lambda that is matching selected beta - var lambdas = this._getEndoRoots(this.n); - if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) { - lambda = lambdas[0]; - } else { - lambda = lambdas[1]; - assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0); - } - } - - // Get basis vectors, used for balanced length-two representation - var basis; - if (conf.basis) { - basis = conf.basis.map(function(vec) { - return { - a: new BN(vec.a, 16), - b: new BN(vec.b, 16) - }; - }); - } else { - basis = this._getEndoBasis(lambda); - } - - return { - beta: beta, - lambda: lambda, - basis: basis - }; -}; - -ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) { - // Find roots of for x^2 + x + 1 in F - // Root = (-1 +- Sqrt(-3)) / 2 - // - var red = num === this.p ? this.red : BN.mont(num); - var tinv = new BN(2).toRed(red).redInvm(); - var ntinv = tinv.redNeg(); - - var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv); - - var l1 = ntinv.redAdd(s).fromRed(); - var l2 = ntinv.redSub(s).fromRed(); - return [ l1, l2 ]; -}; - -ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) { - // aprxSqrt >= sqrt(this.n) - var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); - - // 3.74 - // Run EGCD, until r(L + 1) < aprxSqrt - var u = lambda; - var v = this.n.clone(); - var x1 = new BN(1); - var y1 = new BN(0); - var x2 = new BN(0); - var y2 = new BN(1); - - // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n) - var a0; - var b0; - // First vector - var a1; - var b1; - // Second vector - var a2; - var b2; - - var prevR; - var i = 0; - var r; - var x; - while (u.cmpn(0) !== 0) { - var q = v.div(u); - r = v.sub(q.mul(u)); - x = x2.sub(q.mul(x1)); - var y = y2.sub(q.mul(y1)); - - if (!a1 && r.cmp(aprxSqrt) < 0) { - a0 = prevR.neg(); - b0 = x1; - a1 = r.neg(); - b1 = x; - } else if (a1 && ++i === 2) { - break; - } - prevR = r; - - v = u; - u = r; - x2 = x1; - x1 = x; - y2 = y1; - y1 = y; - } - a2 = r.neg(); - b2 = x; - - var len1 = a1.sqr().add(b1.sqr()); - var len2 = a2.sqr().add(b2.sqr()); - if (len2.cmp(len1) >= 0) { - a2 = a0; - b2 = b0; - } - - // Normalize signs - if (a1.negative) { - a1 = a1.neg(); - b1 = b1.neg(); - } - if (a2.negative) { - a2 = a2.neg(); - b2 = b2.neg(); - } - - return [ - { a: a1, b: b1 }, - { a: a2, b: b2 } - ]; -}; - -ShortCurve.prototype._endoSplit = function _endoSplit(k) { - var basis = this.endo.basis; - var v1 = basis[0]; - var v2 = basis[1]; - - var c1 = v2.b.mul(k).divRound(this.n); - var c2 = v1.b.neg().mul(k).divRound(this.n); - - var p1 = c1.mul(v1.a); - var p2 = c2.mul(v2.a); - var q1 = c1.mul(v1.b); - var q2 = c2.mul(v2.b); - - // Calculate answer - var k1 = k.sub(p1).sub(p2); - var k2 = q1.add(q2).neg(); - return { k1: k1, k2: k2 }; -}; - -ShortCurve.prototype.pointFromX = function pointFromX(x, odd) { - x = new BN(x, 16); - if (!x.red) - x = x.toRed(this.red); - - var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b); - var y = y2.redSqrt(); - if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) - throw new Error('invalid point'); - - // XXX Is there any way to tell if the number is odd without converting it - // to non-red form? - var isOdd = y.fromRed().isOdd(); - if (odd && !isOdd || !odd && isOdd) - y = y.redNeg(); - - return this.point(x, y); -}; - -ShortCurve.prototype.validate = function validate(point) { - if (point.inf) - return true; - - var x = point.x; - var y = point.y; - - var ax = this.a.redMul(x); - var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b); - return y.redSqr().redISub(rhs).cmpn(0) === 0; -}; - -ShortCurve.prototype._endoWnafMulAdd = - function _endoWnafMulAdd(points, coeffs, jacobianResult) { - var npoints = this._endoWnafT1; - var ncoeffs = this._endoWnafT2; - for (var i = 0; i < points.length; i++) { - var split = this._endoSplit(coeffs[i]); - var p = points[i]; - var beta = p._getBeta(); - - if (split.k1.negative) { - split.k1.ineg(); - p = p.neg(true); - } - if (split.k2.negative) { - split.k2.ineg(); - beta = beta.neg(true); - } - - npoints[i * 2] = p; - npoints[i * 2 + 1] = beta; - ncoeffs[i * 2] = split.k1; - ncoeffs[i * 2 + 1] = split.k2; - } - var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); - - // Clean-up references to points and coefficients - for (var j = 0; j < i * 2; j++) { - npoints[j] = null; - ncoeffs[j] = null; - } - return res; -}; - -function Point(curve, x, y, isRed) { - Base.BasePoint.call(this, curve, 'affine'); - if (x === null && y === null) { - this.x = null; - this.y = null; - this.inf = true; - } else { - this.x = new BN(x, 16); - this.y = new BN(y, 16); - // Force redgomery representation when loading from JSON - if (isRed) { - this.x.forceRed(this.curve.red); - this.y.forceRed(this.curve.red); - } - if (!this.x.red) - this.x = this.x.toRed(this.curve.red); - if (!this.y.red) - this.y = this.y.toRed(this.curve.red); - this.inf = false; - } -} -inherits(Point, Base.BasePoint); - -ShortCurve.prototype.point = function point(x, y, isRed) { - return new Point(this, x, y, isRed); -}; - -ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) { - return Point.fromJSON(this, obj, red); -}; - -Point.prototype._getBeta = function _getBeta() { - if (!this.curve.endo) - return; - - var pre = this.precomputed; - if (pre && pre.beta) - return pre.beta; - - var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y); - if (pre) { - var curve = this.curve; - var endoMul = function(p) { - return curve.point(p.x.redMul(curve.endo.beta), p.y); - }; - pre.beta = beta; - beta.precomputed = { - beta: null, - naf: pre.naf && { - wnd: pre.naf.wnd, - points: pre.naf.points.map(endoMul) - }, - doubles: pre.doubles && { - step: pre.doubles.step, - points: pre.doubles.points.map(endoMul) - } - }; - } - return beta; -}; - -Point.prototype.toJSON = function toJSON() { - if (!this.precomputed) - return [ this.x, this.y ]; - - return [ this.x, this.y, this.precomputed && { - doubles: this.precomputed.doubles && { - step: this.precomputed.doubles.step, - points: this.precomputed.doubles.points.slice(1) - }, - naf: this.precomputed.naf && { - wnd: this.precomputed.naf.wnd, - points: this.precomputed.naf.points.slice(1) - } - } ]; -}; - -Point.fromJSON = function fromJSON(curve, obj, red) { - if (typeof obj === 'string') - obj = JSON.parse(obj); - var res = curve.point(obj[0], obj[1], red); - if (!obj[2]) - return res; - - function obj2point(obj) { - return curve.point(obj[0], obj[1], red); - } - - var pre = obj[2]; - res.precomputed = { - beta: null, - doubles: pre.doubles && { - step: pre.doubles.step, - points: [ res ].concat(pre.doubles.points.map(obj2point)) - }, - naf: pre.naf && { - wnd: pre.naf.wnd, - points: [ res ].concat(pre.naf.points.map(obj2point)) - } - }; - return res; -}; - -Point.prototype.inspect = function inspect() { - if (this.isInfinity()) - return ''; - return ''; -}; - -Point.prototype.isInfinity = function isInfinity() { - return this.inf; -}; - -Point.prototype.add = function add(p) { - // O + P = P - if (this.inf) - return p; - - // P + O = P - if (p.inf) - return this; - - // P + P = 2P - if (this.eq(p)) - return this.dbl(); - - // P + (-P) = O - if (this.neg().eq(p)) - return this.curve.point(null, null); - - // P + Q = O - if (this.x.cmp(p.x) === 0) - return this.curve.point(null, null); - - var c = this.y.redSub(p.y); - if (c.cmpn(0) !== 0) - c = c.redMul(this.x.redSub(p.x).redInvm()); - var nx = c.redSqr().redISub(this.x).redISub(p.x); - var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); - return this.curve.point(nx, ny); -}; - -Point.prototype.dbl = function dbl() { - if (this.inf) - return this; - - // 2P = O - var ys1 = this.y.redAdd(this.y); - if (ys1.cmpn(0) === 0) - return this.curve.point(null, null); - - var a = this.curve.a; - - var x2 = this.x.redSqr(); - var dyinv = ys1.redInvm(); - var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv); - - var nx = c.redSqr().redISub(this.x.redAdd(this.x)); - var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); - return this.curve.point(nx, ny); -}; - -Point.prototype.getX = function getX() { - return this.x.fromRed(); -}; - -Point.prototype.getY = function getY() { - return this.y.fromRed(); -}; - -Point.prototype.mul = function mul(k) { - k = new BN(k, 16); - if (this.isInfinity()) - return this; - else if (this._hasDoubles(k)) - return this.curve._fixedNafMul(this, k); - else if (this.curve.endo) - return this.curve._endoWnafMulAdd([ this ], [ k ]); - else - return this.curve._wnafMul(this, k); -}; - -Point.prototype.mulAdd = function mulAdd(k1, p2, k2) { - var points = [ this, p2 ]; - var coeffs = [ k1, k2 ]; - if (this.curve.endo) - return this.curve._endoWnafMulAdd(points, coeffs); - else - return this.curve._wnafMulAdd(1, points, coeffs, 2); -}; - -Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) { - var points = [ this, p2 ]; - var coeffs = [ k1, k2 ]; - if (this.curve.endo) - return this.curve._endoWnafMulAdd(points, coeffs, true); - else - return this.curve._wnafMulAdd(1, points, coeffs, 2, true); -}; - -Point.prototype.eq = function eq(p) { - return this === p || - this.inf === p.inf && - (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0); -}; - -Point.prototype.neg = function neg(_precompute) { - if (this.inf) - return this; - - var res = this.curve.point(this.x, this.y.redNeg()); - if (_precompute && this.precomputed) { - var pre = this.precomputed; - var negate = function(p) { - return p.neg(); - }; - res.precomputed = { - naf: pre.naf && { - wnd: pre.naf.wnd, - points: pre.naf.points.map(negate) - }, - doubles: pre.doubles && { - step: pre.doubles.step, - points: pre.doubles.points.map(negate) - } - }; - } - return res; -}; - -Point.prototype.toJ = function toJ() { - if (this.inf) - return this.curve.jpoint(null, null, null); - - var res = this.curve.jpoint(this.x, this.y, this.curve.one); - return res; -}; - -function JPoint(curve, x, y, z) { - Base.BasePoint.call(this, curve, 'jacobian'); - if (x === null && y === null && z === null) { - this.x = this.curve.one; - this.y = this.curve.one; - this.z = new BN(0); - } else { - this.x = new BN(x, 16); - this.y = new BN(y, 16); - this.z = new BN(z, 16); - } - if (!this.x.red) - this.x = this.x.toRed(this.curve.red); - if (!this.y.red) - this.y = this.y.toRed(this.curve.red); - if (!this.z.red) - this.z = this.z.toRed(this.curve.red); - - this.zOne = this.z === this.curve.one; -} -inherits(JPoint, Base.BasePoint); - -ShortCurve.prototype.jpoint = function jpoint(x, y, z) { - return new JPoint(this, x, y, z); -}; - -JPoint.prototype.toP = function toP() { - if (this.isInfinity()) - return this.curve.point(null, null); - - var zinv = this.z.redInvm(); - var zinv2 = zinv.redSqr(); - var ax = this.x.redMul(zinv2); - var ay = this.y.redMul(zinv2).redMul(zinv); - - return this.curve.point(ax, ay); -}; - -JPoint.prototype.neg = function neg() { - return this.curve.jpoint(this.x, this.y.redNeg(), this.z); -}; - -JPoint.prototype.add = function add(p) { - // O + P = P - if (this.isInfinity()) - return p; - - // P + O = P - if (p.isInfinity()) - return this; - - // 12M + 4S + 7A - var pz2 = p.z.redSqr(); - var z2 = this.z.redSqr(); - var u1 = this.x.redMul(pz2); - var u2 = p.x.redMul(z2); - var s1 = this.y.redMul(pz2.redMul(p.z)); - var s2 = p.y.redMul(z2.redMul(this.z)); - - var h = u1.redSub(u2); - var r = s1.redSub(s2); - if (h.cmpn(0) === 0) { - if (r.cmpn(0) !== 0) - return this.curve.jpoint(null, null, null); - else - return this.dbl(); - } - - var h2 = h.redSqr(); - var h3 = h2.redMul(h); - var v = u1.redMul(h2); - - var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); - var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); - var nz = this.z.redMul(p.z).redMul(h); - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.mixedAdd = function mixedAdd(p) { - // O + P = P - if (this.isInfinity()) - return p.toJ(); - - // P + O = P - if (p.isInfinity()) - return this; - - // 8M + 3S + 7A - var z2 = this.z.redSqr(); - var u1 = this.x; - var u2 = p.x.redMul(z2); - var s1 = this.y; - var s2 = p.y.redMul(z2).redMul(this.z); - - var h = u1.redSub(u2); - var r = s1.redSub(s2); - if (h.cmpn(0) === 0) { - if (r.cmpn(0) !== 0) - return this.curve.jpoint(null, null, null); - else - return this.dbl(); - } - - var h2 = h.redSqr(); - var h3 = h2.redMul(h); - var v = u1.redMul(h2); - - var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); - var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); - var nz = this.z.redMul(h); - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.dblp = function dblp(pow) { - if (pow === 0) - return this; - if (this.isInfinity()) - return this; - if (!pow) - return this.dbl(); - - if (this.curve.zeroA || this.curve.threeA) { - var r = this; - for (var i = 0; i < pow; i++) - r = r.dbl(); - return r; - } - - // 1M + 2S + 1A + N * (4S + 5M + 8A) - // N = 1 => 6M + 6S + 9A - var a = this.curve.a; - var tinv = this.curve.tinv; - - var jx = this.x; - var jy = this.y; - var jz = this.z; - var jz4 = jz.redSqr().redSqr(); - - // Reuse results - var jyd = jy.redAdd(jy); - for (var i = 0; i < pow; i++) { - var jx2 = jx.redSqr(); - var jyd2 = jyd.redSqr(); - var jyd4 = jyd2.redSqr(); - var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); - - var t1 = jx.redMul(jyd2); - var nx = c.redSqr().redISub(t1.redAdd(t1)); - var t2 = t1.redISub(nx); - var dny = c.redMul(t2); - dny = dny.redIAdd(dny).redISub(jyd4); - var nz = jyd.redMul(jz); - if (i + 1 < pow) - jz4 = jz4.redMul(jyd4); - - jx = nx; - jz = nz; - jyd = dny; - } - - return this.curve.jpoint(jx, jyd.redMul(tinv), jz); -}; - -JPoint.prototype.dbl = function dbl() { - if (this.isInfinity()) - return this; - - if (this.curve.zeroA) - return this._zeroDbl(); - else if (this.curve.threeA) - return this._threeDbl(); - else - return this._dbl(); -}; - -JPoint.prototype._zeroDbl = function _zeroDbl() { - var nx; - var ny; - var nz; - // Z = 1 - if (this.zOne) { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html - // #doubling-mdbl-2007-bl - // 1M + 5S + 14A - - // XX = X1^2 - var xx = this.x.redSqr(); - // YY = Y1^2 - var yy = this.y.redSqr(); - // YYYY = YY^2 - var yyyy = yy.redSqr(); - // S = 2 * ((X1 + YY)^2 - XX - YYYY) - var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - s = s.redIAdd(s); - // M = 3 * XX + a; a = 0 - var m = xx.redAdd(xx).redIAdd(xx); - // T = M ^ 2 - 2*S - var t = m.redSqr().redISub(s).redISub(s); - - // 8 * YYYY - var yyyy8 = yyyy.redIAdd(yyyy); - yyyy8 = yyyy8.redIAdd(yyyy8); - yyyy8 = yyyy8.redIAdd(yyyy8); - - // X3 = T - nx = t; - // Y3 = M * (S - T) - 8 * YYYY - ny = m.redMul(s.redISub(t)).redISub(yyyy8); - // Z3 = 2*Y1 - nz = this.y.redAdd(this.y); - } else { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html - // #doubling-dbl-2009-l - // 2M + 5S + 13A - - // A = X1^2 - var a = this.x.redSqr(); - // B = Y1^2 - var b = this.y.redSqr(); - // C = B^2 - var c = b.redSqr(); - // D = 2 * ((X1 + B)^2 - A - C) - var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c); - d = d.redIAdd(d); - // E = 3 * A - var e = a.redAdd(a).redIAdd(a); - // F = E^2 - var f = e.redSqr(); - - // 8 * C - var c8 = c.redIAdd(c); - c8 = c8.redIAdd(c8); - c8 = c8.redIAdd(c8); - - // X3 = F - 2 * D - nx = f.redISub(d).redISub(d); - // Y3 = E * (D - X3) - 8 * C - ny = e.redMul(d.redISub(nx)).redISub(c8); - // Z3 = 2 * Y1 * Z1 - nz = this.y.redMul(this.z); - nz = nz.redIAdd(nz); - } - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype._threeDbl = function _threeDbl() { - var nx; - var ny; - var nz; - // Z = 1 - if (this.zOne) { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html - // #doubling-mdbl-2007-bl - // 1M + 5S + 15A - - // XX = X1^2 - var xx = this.x.redSqr(); - // YY = Y1^2 - var yy = this.y.redSqr(); - // YYYY = YY^2 - var yyyy = yy.redSqr(); - // S = 2 * ((X1 + YY)^2 - XX - YYYY) - var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - s = s.redIAdd(s); - // M = 3 * XX + a - var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); - // T = M^2 - 2 * S - var t = m.redSqr().redISub(s).redISub(s); - // X3 = T - nx = t; - // Y3 = M * (S - T) - 8 * YYYY - var yyyy8 = yyyy.redIAdd(yyyy); - yyyy8 = yyyy8.redIAdd(yyyy8); - yyyy8 = yyyy8.redIAdd(yyyy8); - ny = m.redMul(s.redISub(t)).redISub(yyyy8); - // Z3 = 2 * Y1 - nz = this.y.redAdd(this.y); - } else { - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b - // 3M + 5S - - // delta = Z1^2 - var delta = this.z.redSqr(); - // gamma = Y1^2 - var gamma = this.y.redSqr(); - // beta = X1 * gamma - var beta = this.x.redMul(gamma); - // alpha = 3 * (X1 - delta) * (X1 + delta) - var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta)); - alpha = alpha.redAdd(alpha).redIAdd(alpha); - // X3 = alpha^2 - 8 * beta - var beta4 = beta.redIAdd(beta); - beta4 = beta4.redIAdd(beta4); - var beta8 = beta4.redAdd(beta4); - nx = alpha.redSqr().redISub(beta8); - // Z3 = (Y1 + Z1)^2 - gamma - delta - nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); - // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2 - var ggamma8 = gamma.redSqr(); - ggamma8 = ggamma8.redIAdd(ggamma8); - ggamma8 = ggamma8.redIAdd(ggamma8); - ggamma8 = ggamma8.redIAdd(ggamma8); - ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8); - } - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype._dbl = function _dbl() { - var a = this.curve.a; - - // 4M + 6S + 10A - var jx = this.x; - var jy = this.y; - var jz = this.z; - var jz4 = jz.redSqr().redSqr(); - - var jx2 = jx.redSqr(); - var jy2 = jy.redSqr(); - - var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); - - var jxd4 = jx.redAdd(jx); - jxd4 = jxd4.redIAdd(jxd4); - var t1 = jxd4.redMul(jy2); - var nx = c.redSqr().redISub(t1.redAdd(t1)); - var t2 = t1.redISub(nx); - - var jyd8 = jy2.redSqr(); - jyd8 = jyd8.redIAdd(jyd8); - jyd8 = jyd8.redIAdd(jyd8); - jyd8 = jyd8.redIAdd(jyd8); - var ny = c.redMul(t2).redISub(jyd8); - var nz = jy.redAdd(jy).redMul(jz); - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.trpl = function trpl() { - if (!this.curve.zeroA) - return this.dbl().add(this); - - // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl - // 5M + 10S + ... - - // XX = X1^2 - var xx = this.x.redSqr(); - // YY = Y1^2 - var yy = this.y.redSqr(); - // ZZ = Z1^2 - var zz = this.z.redSqr(); - // YYYY = YY^2 - var yyyy = yy.redSqr(); - // M = 3 * XX + a * ZZ2; a = 0 - var m = xx.redAdd(xx).redIAdd(xx); - // MM = M^2 - var mm = m.redSqr(); - // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM - var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - e = e.redIAdd(e); - e = e.redAdd(e).redIAdd(e); - e = e.redISub(mm); - // EE = E^2 - var ee = e.redSqr(); - // T = 16*YYYY - var t = yyyy.redIAdd(yyyy); - t = t.redIAdd(t); - t = t.redIAdd(t); - t = t.redIAdd(t); - // U = (M + E)^2 - MM - EE - T - var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); - // X3 = 4 * (X1 * EE - 4 * YY * U) - var yyu4 = yy.redMul(u); - yyu4 = yyu4.redIAdd(yyu4); - yyu4 = yyu4.redIAdd(yyu4); - var nx = this.x.redMul(ee).redISub(yyu4); - nx = nx.redIAdd(nx); - nx = nx.redIAdd(nx); - // Y3 = 8 * Y1 * (U * (T - U) - E * EE) - var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee))); - ny = ny.redIAdd(ny); - ny = ny.redIAdd(ny); - ny = ny.redIAdd(ny); - // Z3 = (Z1 + E)^2 - ZZ - EE - var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee); - - return this.curve.jpoint(nx, ny, nz); -}; - -JPoint.prototype.mul = function mul(k, kbase) { - k = new BN(k, kbase); - - return this.curve._wnafMul(this, k); -}; - -JPoint.prototype.eq = function eq(p) { - if (p.type === 'affine') - return this.eq(p.toJ()); - - if (this === p) - return true; - - // x1 * z2^2 == x2 * z1^2 - var z2 = this.z.redSqr(); - var pz2 = p.z.redSqr(); - if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) - return false; - - // y1 * z2^3 == y2 * z1^3 - var z3 = z2.redMul(this.z); - var pz3 = pz2.redMul(p.z); - return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0; -}; - -JPoint.prototype.eqXToP = function eqXToP(x) { - var zs = this.z.redSqr(); - var rx = x.toRed(this.curve.red).redMul(zs); - if (this.x.cmp(rx) === 0) - return true; - - var xc = x.clone(); - var t = this.curve.redN.redMul(zs); - for (;;) { - xc.iadd(this.curve.n); - if (xc.cmp(this.curve.p) >= 0) - return false; - - rx.redIAdd(t); - if (this.x.cmp(rx) === 0) - return true; - } -}; - -JPoint.prototype.inspect = function inspect() { - if (this.isInfinity()) - return ''; - return ''; -}; - -JPoint.prototype.isInfinity = function isInfinity() { - // XXX This code assumes that zero is always zero in red - return this.z.cmpn(0) === 0; -}; - -},{"../utils":219,"./base":206,"bn.js":147,"inherits":262}],211:[function(require,module,exports){ -'use strict'; - -var curves = exports; - -var hash = require('hash.js'); -var curve = require('./curve'); -var utils = require('./utils'); - -var assert = utils.assert; - -function PresetCurve(options) { - if (options.type === 'short') - this.curve = new curve.short(options); - else if (options.type === 'edwards') - this.curve = new curve.edwards(options); - else - this.curve = new curve.mont(options); - this.g = this.curve.g; - this.n = this.curve.n; - this.hash = options.hash; - - assert(this.g.validate(), 'Invalid curve'); - assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O'); -} -curves.PresetCurve = PresetCurve; - -function defineCurve(name, options) { - Object.defineProperty(curves, name, { - configurable: true, - enumerable: true, - get: function() { - var curve = new PresetCurve(options); - Object.defineProperty(curves, name, { - configurable: true, - enumerable: true, - value: curve - }); - return curve; - } - }); -} - -defineCurve('p192', { - type: 'short', - prime: 'p192', - p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff', - a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc', - b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1', - n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831', - hash: hash.sha256, - gRed: false, - g: [ - '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', - '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811' - ] -}); - -defineCurve('p224', { - type: 'short', - prime: 'p224', - p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001', - a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe', - b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4', - n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d', - hash: hash.sha256, - gRed: false, - g: [ - 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', - 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34' - ] -}); - -defineCurve('p256', { - type: 'short', - prime: null, - p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff', - a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc', - b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b', - n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551', - hash: hash.sha256, - gRed: false, - g: [ - '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', - '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5' - ] -}); - -defineCurve('p384', { - type: 'short', - prime: null, - p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'fffffffe ffffffff 00000000 00000000 ffffffff', - a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'fffffffe ffffffff 00000000 00000000 fffffffc', - b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + - '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef', - n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + - 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973', - hash: hash.sha384, - gRed: false, - g: [ - 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + - '5502f25d bf55296c 3a545e38 72760ab7', - '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + - '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f' - ] -}); - -defineCurve('p521', { - type: 'short', - prime: null, - p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'ffffffff ffffffff ffffffff ffffffff ffffffff', - a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'ffffffff ffffffff ffffffff ffffffff fffffffc', - b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + - '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + - '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00', - n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + - 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + - 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409', - hash: hash.sha512, - gRed: false, - g: [ - '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + - '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + - 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', - '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + - '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + - '3fad0761 353c7086 a272c240 88be9476 9fd16650' - ] -}); - -defineCurve('curve25519', { - type: 'mont', - prime: 'p25519', - p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', - a: '76d06', - b: '1', - n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', - hash: hash.sha256, - gRed: false, - g: [ - '9' - ] -}); - -defineCurve('ed25519', { - type: 'edwards', - prime: 'p25519', - p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', - a: '-1', - c: '1', - // -121665 * (121666^(-1)) (mod P) - d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3', - n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', - hash: hash.sha256, - gRed: false, - g: [ - '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a', - - // 4/5 - '6666666666666666666666666666666666666666666666666666666666666658' - ] -}); - -var pre; -try { - pre = require('./precomputed/secp256k1'); -} catch (e) { - pre = undefined; -} - -defineCurve('secp256k1', { - type: 'short', - prime: 'k256', - p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f', - a: '0', - b: '7', - n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141', - h: '1', - hash: hash.sha256, - - // Precomputed endomorphism - beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee', - lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72', - basis: [ - { - a: '3086d221a7d46bcde86c90e49284eb15', - b: '-e4437ed6010e88286f547fa90abfe4c3' - }, - { - a: '114ca50f7a8e2f3f657c1108d9d44cfd8', - b: '3086d221a7d46bcde86c90e49284eb15' - } - ], - - gRed: false, - g: [ - '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', - '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', - pre - ] -}); - -},{"./curve":208,"./precomputed/secp256k1":218,"./utils":219,"hash.js":228}],212:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); -var HmacDRBG = require('hmac-drbg'); -var utils = require('../utils'); -var curves = require('../curves'); -var rand = require('brorand'); -var assert = utils.assert; - -var KeyPair = require('./key'); -var Signature = require('./signature'); - -function EC(options) { - if (!(this instanceof EC)) - return new EC(options); - - // Shortcut `elliptic.ec(curve-name)` - if (typeof options === 'string') { - assert(curves.hasOwnProperty(options), 'Unknown curve ' + options); - - options = curves[options]; - } - - // Shortcut for `elliptic.ec(elliptic.curves.curveName)` - if (options instanceof curves.PresetCurve) - options = { curve: options }; - - this.curve = options.curve.curve; - this.n = this.curve.n; - this.nh = this.n.ushrn(1); - this.g = this.curve.g; - - // Point on curve - this.g = options.curve.g; - this.g.precompute(options.curve.n.bitLength() + 1); - - // Hash for function for DRBG - this.hash = options.hash || options.curve.hash; -} -module.exports = EC; - -EC.prototype.keyPair = function keyPair(options) { - return new KeyPair(this, options); -}; - -EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) { - return KeyPair.fromPrivate(this, priv, enc); -}; - -EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) { - return KeyPair.fromPublic(this, pub, enc); -}; - -EC.prototype.genKeyPair = function genKeyPair(options) { - if (!options) - options = {}; - - // Instantiate Hmac_DRBG - var drbg = new HmacDRBG({ - hash: this.hash, - pers: options.pers, - persEnc: options.persEnc || 'utf8', - entropy: options.entropy || rand(this.hash.hmacStrength), - entropyEnc: options.entropy && options.entropyEnc || 'utf8', - nonce: this.n.toArray() - }); - - var bytes = this.n.byteLength(); - var ns2 = this.n.sub(new BN(2)); - do { - var priv = new BN(drbg.generate(bytes)); - if (priv.cmp(ns2) > 0) - continue; - - priv.iaddn(1); - return this.keyFromPrivate(priv); - } while (true); -}; - -EC.prototype._truncateToN = function truncateToN(msg, truncOnly) { - var delta = msg.byteLength() * 8 - this.n.bitLength(); - if (delta > 0) - msg = msg.ushrn(delta); - if (!truncOnly && msg.cmp(this.n) >= 0) - return msg.sub(this.n); - else - return msg; -}; - -EC.prototype.sign = function sign(msg, key, enc, options) { - if (typeof enc === 'object') { - options = enc; - enc = null; - } - if (!options) - options = {}; - - key = this.keyFromPrivate(key, enc); - msg = this._truncateToN(new BN(msg, 16)); - - // Zero-extend key to provide enough entropy - var bytes = this.n.byteLength(); - var bkey = key.getPrivate().toArray('be', bytes); - - // Zero-extend nonce to have the same byte size as N - var nonce = msg.toArray('be', bytes); - - // Instantiate Hmac_DRBG - var drbg = new HmacDRBG({ - hash: this.hash, - entropy: bkey, - nonce: nonce, - pers: options.pers, - persEnc: options.persEnc || 'utf8' - }); - - // Number of bytes to generate - var ns1 = this.n.sub(new BN(1)); - - for (var iter = 0; true; iter++) { - var k = options.k ? - options.k(iter) : - new BN(drbg.generate(this.n.byteLength())); - k = this._truncateToN(k, true); - if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) - continue; - - var kp = this.g.mul(k); - if (kp.isInfinity()) - continue; - - var kpX = kp.getX(); - var r = kpX.umod(this.n); - if (r.cmpn(0) === 0) - continue; - - var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg)); - s = s.umod(this.n); - if (s.cmpn(0) === 0) - continue; - - var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | - (kpX.cmp(r) !== 0 ? 2 : 0); - - // Use complement of `s`, if it is > `n / 2` - if (options.canonical && s.cmp(this.nh) > 0) { - s = this.n.sub(s); - recoveryParam ^= 1; - } - - return new Signature({ r: r, s: s, recoveryParam: recoveryParam }); - } -}; - -EC.prototype.verify = function verify(msg, signature, key, enc) { - msg = this._truncateToN(new BN(msg, 16)); - key = this.keyFromPublic(key, enc); - signature = new Signature(signature, 'hex'); - - // Perform primitive values validation - var r = signature.r; - var s = signature.s; - if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) - return false; - if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) - return false; - - // Validate signature - var sinv = s.invm(this.n); - var u1 = sinv.mul(msg).umod(this.n); - var u2 = sinv.mul(r).umod(this.n); - - if (!this.curve._maxwellTrick) { - var p = this.g.mulAdd(u1, key.getPublic(), u2); - if (p.isInfinity()) - return false; - - return p.getX().umod(this.n).cmp(r) === 0; - } - - // NOTE: Greg Maxwell's trick, inspired by: - // https://git.io/vad3K - - var p = this.g.jmulAdd(u1, key.getPublic(), u2); - if (p.isInfinity()) - return false; - - // Compare `p.x` of Jacobian point with `r`, - // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the - // inverse of `p.z^2` - return p.eqXToP(r); -}; - -EC.prototype.recoverPubKey = function(msg, signature, j, enc) { - assert((3 & j) === j, 'The recovery param is more than two bits'); - signature = new Signature(signature, enc); - - var n = this.n; - var e = new BN(msg); - var r = signature.r; - var s = signature.s; - - // A set LSB signifies that the y-coordinate is odd - var isYOdd = j & 1; - var isSecondKey = j >> 1; - if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) - throw new Error('Unable to find sencond key candinate'); - - // 1.1. Let x = r + jn. - if (isSecondKey) - r = this.curve.pointFromX(r.add(this.curve.n), isYOdd); - else - r = this.curve.pointFromX(r, isYOdd); - - var rInv = signature.r.invm(n); - var s1 = n.sub(e).mul(rInv).umod(n); - var s2 = s.mul(rInv).umod(n); - - // 1.6.1 Compute Q = r^-1 (sR - eG) - // Q = r^-1 (sR + -eG) - return this.g.mulAdd(s1, r, s2); -}; - -EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { - signature = new Signature(signature, enc); - if (signature.recoveryParam !== null) - return signature.recoveryParam; - - for (var i = 0; i < 4; i++) { - var Qprime; - try { - Qprime = this.recoverPubKey(e, signature, i); - } catch (e) { - continue; - } - - if (Qprime.eq(Q)) - return i; - } - throw new Error('Unable to find valid recovery factor'); -}; - -},{"../curves":211,"../utils":219,"./key":213,"./signature":214,"bn.js":147,"brorand":148,"hmac-drbg":240}],213:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); -var utils = require('../utils'); -var assert = utils.assert; - -function KeyPair(ec, options) { - this.ec = ec; - this.priv = null; - this.pub = null; - - // KeyPair(ec, { priv: ..., pub: ... }) - if (options.priv) - this._importPrivate(options.priv, options.privEnc); - if (options.pub) - this._importPublic(options.pub, options.pubEnc); -} -module.exports = KeyPair; - -KeyPair.fromPublic = function fromPublic(ec, pub, enc) { - if (pub instanceof KeyPair) - return pub; - - return new KeyPair(ec, { - pub: pub, - pubEnc: enc - }); -}; - -KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) { - if (priv instanceof KeyPair) - return priv; - - return new KeyPair(ec, { - priv: priv, - privEnc: enc - }); -}; - -KeyPair.prototype.validate = function validate() { - var pub = this.getPublic(); - - if (pub.isInfinity()) - return { result: false, reason: 'Invalid public key' }; - if (!pub.validate()) - return { result: false, reason: 'Public key is not a point' }; - if (!pub.mul(this.ec.curve.n).isInfinity()) - return { result: false, reason: 'Public key * N != O' }; - - return { result: true, reason: null }; -}; - -KeyPair.prototype.getPublic = function getPublic(compact, enc) { - // compact is optional argument - if (typeof compact === 'string') { - enc = compact; - compact = null; - } - - if (!this.pub) - this.pub = this.ec.g.mul(this.priv); - - if (!enc) - return this.pub; - - return this.pub.encode(enc, compact); -}; - -KeyPair.prototype.getPrivate = function getPrivate(enc) { - if (enc === 'hex') - return this.priv.toString(16, 2); - else - return this.priv; -}; - -KeyPair.prototype._importPrivate = function _importPrivate(key, enc) { - this.priv = new BN(key, enc || 16); - - // Ensure that the priv won't be bigger than n, otherwise we may fail - // in fixed multiplication method - this.priv = this.priv.umod(this.ec.curve.n); -}; - -KeyPair.prototype._importPublic = function _importPublic(key, enc) { - if (key.x || key.y) { - // Montgomery points only have an `x` coordinate. - // Weierstrass/Edwards points on the other hand have both `x` and - // `y` coordinates. - if (this.ec.curve.type === 'mont') { - assert(key.x, 'Need x coordinate'); - } else if (this.ec.curve.type === 'short' || - this.ec.curve.type === 'edwards') { - assert(key.x && key.y, 'Need both x and y coordinate'); - } - this.pub = this.ec.curve.point(key.x, key.y); - return; - } - this.pub = this.ec.curve.decodePoint(key, enc); -}; - -// ECDH -KeyPair.prototype.derive = function derive(pub) { - return pub.mul(this.priv).getX(); -}; - -// ECDSA -KeyPair.prototype.sign = function sign(msg, enc, options) { - return this.ec.sign(msg, this, enc, options); -}; - -KeyPair.prototype.verify = function verify(msg, signature) { - return this.ec.verify(msg, signature, this); -}; - -KeyPair.prototype.inspect = function inspect() { - return ''; -}; - -},{"../utils":219,"bn.js":147}],214:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); - -var utils = require('../utils'); -var assert = utils.assert; - -function Signature(options, enc) { - if (options instanceof Signature) - return options; - - if (this._importDER(options, enc)) - return; - - assert(options.r && options.s, 'Signature without r or s'); - this.r = new BN(options.r, 16); - this.s = new BN(options.s, 16); - if (options.recoveryParam === undefined) - this.recoveryParam = null; - else - this.recoveryParam = options.recoveryParam; -} -module.exports = Signature; - -function Position() { - this.place = 0; -} - -function getLength(buf, p) { - var initial = buf[p.place++]; - if (!(initial & 0x80)) { - return initial; - } - var octetLen = initial & 0xf; - var val = 0; - for (var i = 0, off = p.place; i < octetLen; i++, off++) { - val <<= 8; - val |= buf[off]; - } - p.place = off; - return val; -} - -function rmPadding(buf) { - var i = 0; - var len = buf.length - 1; - while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) { - i++; - } - if (i === 0) { - return buf; - } - return buf.slice(i); -} - -Signature.prototype._importDER = function _importDER(data, enc) { - data = utils.toArray(data, enc); - var p = new Position(); - if (data[p.place++] !== 0x30) { - return false; - } - var len = getLength(data, p); - if ((len + p.place) !== data.length) { - return false; - } - if (data[p.place++] !== 0x02) { - return false; - } - var rlen = getLength(data, p); - var r = data.slice(p.place, rlen + p.place); - p.place += rlen; - if (data[p.place++] !== 0x02) { - return false; - } - var slen = getLength(data, p); - if (data.length !== slen + p.place) { - return false; - } - var s = data.slice(p.place, slen + p.place); - if (r[0] === 0 && (r[1] & 0x80)) { - r = r.slice(1); - } - if (s[0] === 0 && (s[1] & 0x80)) { - s = s.slice(1); - } - - this.r = new BN(r); - this.s = new BN(s); - this.recoveryParam = null; - - return true; -}; - -function constructLength(arr, len) { - if (len < 0x80) { - arr.push(len); - return; - } - var octets = 1 + (Math.log(len) / Math.LN2 >>> 3); - arr.push(octets | 0x80); - while (--octets) { - arr.push((len >>> (octets << 3)) & 0xff); - } - arr.push(len); -} - -Signature.prototype.toDER = function toDER(enc) { - var r = this.r.toArray(); - var s = this.s.toArray(); - - // Pad values - if (r[0] & 0x80) - r = [ 0 ].concat(r); - // Pad values - if (s[0] & 0x80) - s = [ 0 ].concat(s); - - r = rmPadding(r); - s = rmPadding(s); - - while (!s[0] && !(s[1] & 0x80)) { - s = s.slice(1); - } - var arr = [ 0x02 ]; - constructLength(arr, r.length); - arr = arr.concat(r); - arr.push(0x02); - constructLength(arr, s.length); - var backHalf = arr.concat(s); - var res = [ 0x30 ]; - constructLength(res, backHalf.length); - res = res.concat(backHalf); - return utils.encode(res, enc); -}; - -},{"../utils":219,"bn.js":147}],215:[function(require,module,exports){ -'use strict'; - -var hash = require('hash.js'); -var curves = require('../curves'); -var utils = require('../utils'); -var assert = utils.assert; -var parseBytes = utils.parseBytes; -var KeyPair = require('./key'); -var Signature = require('./signature'); - -function EDDSA(curve) { - assert(curve === 'ed25519', 'only tested with ed25519 so far'); - - if (!(this instanceof EDDSA)) - return new EDDSA(curve); - - var curve = curves[curve].curve; - this.curve = curve; - this.g = curve.g; - this.g.precompute(curve.n.bitLength() + 1); - - this.pointClass = curve.point().constructor; - this.encodingLength = Math.ceil(curve.n.bitLength() / 8); - this.hash = hash.sha512; -} - -module.exports = EDDSA; - -/** -* @param {Array|String} message - message bytes -* @param {Array|String|KeyPair} secret - secret bytes or a keypair -* @returns {Signature} - signature -*/ -EDDSA.prototype.sign = function sign(message, secret) { - message = parseBytes(message); - var key = this.keyFromSecret(secret); - var r = this.hashInt(key.messagePrefix(), message); - var R = this.g.mul(r); - var Rencoded = this.encodePoint(R); - var s_ = this.hashInt(Rencoded, key.pubBytes(), message) - .mul(key.priv()); - var S = r.add(s_).umod(this.curve.n); - return this.makeSignature({ R: R, S: S, Rencoded: Rencoded }); -}; - -/** -* @param {Array} message - message bytes -* @param {Array|String|Signature} sig - sig bytes -* @param {Array|String|Point|KeyPair} pub - public key -* @returns {Boolean} - true if public key matches sig of message -*/ -EDDSA.prototype.verify = function verify(message, sig, pub) { - message = parseBytes(message); - sig = this.makeSignature(sig); - var key = this.keyFromPublic(pub); - var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message); - var SG = this.g.mul(sig.S()); - var RplusAh = sig.R().add(key.pub().mul(h)); - return RplusAh.eq(SG); -}; - -EDDSA.prototype.hashInt = function hashInt() { - var hash = this.hash(); - for (var i = 0; i < arguments.length; i++) - hash.update(arguments[i]); - return utils.intFromLE(hash.digest()).umod(this.curve.n); -}; - -EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) { - return KeyPair.fromPublic(this, pub); -}; - -EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) { - return KeyPair.fromSecret(this, secret); -}; - -EDDSA.prototype.makeSignature = function makeSignature(sig) { - if (sig instanceof Signature) - return sig; - return new Signature(this, sig); -}; - -/** -* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2 -* -* EDDSA defines methods for encoding and decoding points and integers. These are -* helper convenience methods, that pass along to utility functions implied -* parameters. -* -*/ -EDDSA.prototype.encodePoint = function encodePoint(point) { - var enc = point.getY().toArray('le', this.encodingLength); - enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0; - return enc; -}; - -EDDSA.prototype.decodePoint = function decodePoint(bytes) { - bytes = utils.parseBytes(bytes); - - var lastIx = bytes.length - 1; - var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80); - var xIsOdd = (bytes[lastIx] & 0x80) !== 0; - - var y = utils.intFromLE(normed); - return this.curve.pointFromY(y, xIsOdd); -}; - -EDDSA.prototype.encodeInt = function encodeInt(num) { - return num.toArray('le', this.encodingLength); -}; - -EDDSA.prototype.decodeInt = function decodeInt(bytes) { - return utils.intFromLE(bytes); -}; - -EDDSA.prototype.isPoint = function isPoint(val) { - return val instanceof this.pointClass; -}; - -},{"../curves":211,"../utils":219,"./key":216,"./signature":217,"hash.js":228}],216:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var assert = utils.assert; -var parseBytes = utils.parseBytes; -var cachedProperty = utils.cachedProperty; - -/** -* @param {EDDSA} eddsa - instance -* @param {Object} params - public/private key parameters -* -* @param {Array} [params.secret] - secret seed bytes -* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms) -* @param {Array} [params.pub] - public key point encoded as bytes -* -*/ -function KeyPair(eddsa, params) { - this.eddsa = eddsa; - this._secret = parseBytes(params.secret); - if (eddsa.isPoint(params.pub)) - this._pub = params.pub; - else - this._pubBytes = parseBytes(params.pub); -} - -KeyPair.fromPublic = function fromPublic(eddsa, pub) { - if (pub instanceof KeyPair) - return pub; - return new KeyPair(eddsa, { pub: pub }); -}; - -KeyPair.fromSecret = function fromSecret(eddsa, secret) { - if (secret instanceof KeyPair) - return secret; - return new KeyPair(eddsa, { secret: secret }); -}; - -KeyPair.prototype.secret = function secret() { - return this._secret; -}; - -cachedProperty(KeyPair, 'pubBytes', function pubBytes() { - return this.eddsa.encodePoint(this.pub()); -}); - -cachedProperty(KeyPair, 'pub', function pub() { - if (this._pubBytes) - return this.eddsa.decodePoint(this._pubBytes); - return this.eddsa.g.mul(this.priv()); -}); - -cachedProperty(KeyPair, 'privBytes', function privBytes() { - var eddsa = this.eddsa; - var hash = this.hash(); - var lastIx = eddsa.encodingLength - 1; - - var a = hash.slice(0, eddsa.encodingLength); - a[0] &= 248; - a[lastIx] &= 127; - a[lastIx] |= 64; - - return a; -}); - -cachedProperty(KeyPair, 'priv', function priv() { - return this.eddsa.decodeInt(this.privBytes()); -}); - -cachedProperty(KeyPair, 'hash', function hash() { - return this.eddsa.hash().update(this.secret()).digest(); -}); - -cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() { - return this.hash().slice(this.eddsa.encodingLength); -}); - -KeyPair.prototype.sign = function sign(message) { - assert(this._secret, 'KeyPair can only verify'); - return this.eddsa.sign(message, this); -}; - -KeyPair.prototype.verify = function verify(message, sig) { - return this.eddsa.verify(message, sig, this); -}; - -KeyPair.prototype.getSecret = function getSecret(enc) { - assert(this._secret, 'KeyPair is public only'); - return utils.encode(this.secret(), enc); -}; - -KeyPair.prototype.getPublic = function getPublic(enc) { - return utils.encode(this.pubBytes(), enc); -}; - -module.exports = KeyPair; - -},{"../utils":219}],217:[function(require,module,exports){ -'use strict'; - -var BN = require('bn.js'); -var utils = require('../utils'); -var assert = utils.assert; -var cachedProperty = utils.cachedProperty; -var parseBytes = utils.parseBytes; - -/** -* @param {EDDSA} eddsa - eddsa instance -* @param {Array|Object} sig - -* @param {Array|Point} [sig.R] - R point as Point or bytes -* @param {Array|bn} [sig.S] - S scalar as bn or bytes -* @param {Array} [sig.Rencoded] - R point encoded -* @param {Array} [sig.Sencoded] - S scalar encoded -*/ -function Signature(eddsa, sig) { - this.eddsa = eddsa; - - if (typeof sig !== 'object') - sig = parseBytes(sig); - - if (Array.isArray(sig)) { - sig = { - R: sig.slice(0, eddsa.encodingLength), - S: sig.slice(eddsa.encodingLength) - }; - } - - assert(sig.R && sig.S, 'Signature without R or S'); - - if (eddsa.isPoint(sig.R)) - this._R = sig.R; - if (sig.S instanceof BN) - this._S = sig.S; - - this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded; - this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded; -} - -cachedProperty(Signature, 'S', function S() { - return this.eddsa.decodeInt(this.Sencoded()); -}); - -cachedProperty(Signature, 'R', function R() { - return this.eddsa.decodePoint(this.Rencoded()); -}); - -cachedProperty(Signature, 'Rencoded', function Rencoded() { - return this.eddsa.encodePoint(this.R()); -}); - -cachedProperty(Signature, 'Sencoded', function Sencoded() { - return this.eddsa.encodeInt(this.S()); -}); - -Signature.prototype.toBytes = function toBytes() { - return this.Rencoded().concat(this.Sencoded()); -}; - -Signature.prototype.toHex = function toHex() { - return utils.encode(this.toBytes(), 'hex').toUpperCase(); -}; - -module.exports = Signature; - -},{"../utils":219,"bn.js":147}],218:[function(require,module,exports){ -module.exports = { - doubles: { - step: 4, - points: [ - [ - 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', - 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821' - ], - [ - '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', - '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf' - ], - [ - '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', - 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695' - ], - [ - '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', - '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9' - ], - [ - '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', - '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36' - ], - [ - '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', - '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f' - ], - [ - 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', - '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999' - ], - [ - '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', - 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09' - ], - [ - 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', - '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d' - ], - [ - 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', - 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088' - ], - [ - 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', - '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d' - ], - [ - '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', - '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8' - ], - [ - '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', - '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a' - ], - [ - '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', - '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453' - ], - [ - '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', - '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160' - ], - [ - '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', - '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0' - ], - [ - '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', - '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6' - ], - [ - '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', - '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589' - ], - [ - '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', - 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17' - ], - [ - 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', - '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda' - ], - [ - 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', - '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd' - ], - [ - '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', - '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2' - ], - [ - '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', - '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6' - ], - [ - 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', - '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f' - ], - [ - '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', - 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01' - ], - [ - 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', - '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3' - ], - [ - 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', - 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f' - ], - [ - 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', - '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7' - ], - [ - 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', - 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78' - ], - [ - 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', - '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1' - ], - [ - '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', - 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150' - ], - [ - '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', - '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82' - ], - [ - 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', - '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc' - ], - [ - '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', - 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b' - ], - [ - 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', - '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51' - ], - [ - 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', - '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45' - ], - [ - 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', - 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120' - ], - [ - '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', - '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84' - ], - [ - '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', - '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d' - ], - [ - '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', - 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d' - ], - [ - '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', - '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8' - ], - [ - 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', - '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8' - ], - [ - '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', - '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac' - ], - [ - '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', - 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f' - ], - [ - '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', - '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962' - ], - [ - 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', - '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907' - ], - [ - '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', - 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec' - ], - [ - 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', - 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d' - ], - [ - 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', - '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414' - ], - [ - '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', - 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd' - ], - [ - '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', - 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0' - ], - [ - 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', - '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811' - ], - [ - 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', - '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1' - ], - [ - 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', - '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c' - ], - [ - '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', - 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73' - ], - [ - '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', - '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd' - ], - [ - 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', - 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405' - ], - [ - '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', - 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589' - ], - [ - '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', - '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e' - ], - [ - '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', - '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27' - ], - [ - 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', - 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1' - ], - [ - '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', - '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482' - ], - [ - '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', - '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945' - ], - [ - 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', - '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573' - ], - [ - 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', - 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82' - ] - ] - }, - naf: { - wnd: 7, - points: [ - [ - 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', - '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672' - ], - [ - '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', - 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6' - ], - [ - '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', - '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da' - ], - [ - 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', - 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37' - ], - [ - '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', - 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b' - ], - [ - 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', - 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81' - ], - [ - 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', - '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58' - ], - [ - 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', - '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77' - ], - [ - '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', - '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a' - ], - [ - '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', - '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c' - ], - [ - '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', - '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67' - ], - [ - '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', - '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402' - ], - [ - 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', - 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55' - ], - [ - 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', - '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482' - ], - [ - '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', - 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82' - ], - [ - '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', - 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396' - ], - [ - '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', - '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49' - ], - [ - '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', - '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf' - ], - [ - '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', - '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a' - ], - [ - '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', - 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7' - ], - [ - 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', - 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933' - ], - [ - '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', - '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a' - ], - [ - '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', - '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6' - ], - [ - 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', - 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37' - ], - [ - '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', - '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e' - ], - [ - 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', - 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6' - ], - [ - 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', - 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476' - ], - [ - '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', - '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40' - ], - [ - '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', - '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61' - ], - [ - '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', - '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683' - ], - [ - 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', - '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5' - ], - [ - '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', - '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b' - ], - [ - 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', - '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417' - ], - [ - '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', - 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868' - ], - [ - '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', - 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a' - ], - [ - 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', - 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6' - ], - [ - '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', - '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996' - ], - [ - '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', - 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e' - ], - [ - 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', - 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d' - ], - [ - '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', - '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2' - ], - [ - '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', - 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e' - ], - [ - '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', - '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437' - ], - [ - '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', - 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311' - ], - [ - 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', - '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4' - ], - [ - '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', - '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575' - ], - [ - '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', - 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d' - ], - [ - '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', - 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d' - ], - [ - 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', - 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629' - ], - [ - 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', - 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06' - ], - [ - '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', - '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374' - ], - [ - '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', - '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee' - ], - [ - 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', - '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1' - ], - [ - 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', - 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b' - ], - [ - '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', - '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661' - ], - [ - '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', - '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6' - ], - [ - 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', - '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e' - ], - [ - '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', - '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d' - ], - [ - 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', - 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc' - ], - [ - '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', - 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4' - ], - [ - '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', - '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c' - ], - [ - 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', - '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b' - ], - [ - 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', - '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913' - ], - [ - '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', - '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154' - ], - [ - '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', - '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865' - ], - [ - '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', - 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc' - ], - [ - '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', - 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224' - ], - [ - '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', - '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e' - ], - [ - '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', - '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6' - ], - [ - '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', - '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511' - ], - [ - '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', - 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b' - ], - [ - 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', - 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2' - ], - [ - '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', - 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c' - ], - [ - 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', - '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3' - ], - [ - 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', - '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d' - ], - [ - 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', - '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700' - ], - [ - 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', - '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4' - ], - [ - '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', - 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196' - ], - [ - '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', - '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4' - ], - [ - '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', - 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257' - ], - [ - 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', - 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13' - ], - [ - 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', - '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096' - ], - [ - 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', - 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38' - ], - [ - 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', - '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f' - ], - [ - '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', - '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448' - ], - [ - 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', - '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a' - ], - [ - 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', - '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4' - ], - [ - '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', - '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437' - ], - [ - '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', - 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7' - ], - [ - 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', - '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d' - ], - [ - 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', - '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a' - ], - [ - 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', - '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54' - ], - [ - '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', - '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77' - ], - [ - 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', - 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517' - ], - [ - '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', - 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10' - ], - [ - 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', - 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125' - ], - [ - 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', - '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e' - ], - [ - '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', - 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1' - ], - [ - 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', - '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2' - ], - [ - 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', - '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423' - ], - [ - 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', - '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8' - ], - [ - '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', - 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758' - ], - [ - '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', - 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375' - ], - [ - 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', - '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d' - ], - [ - '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', - 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec' - ], - [ - '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', - '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0' - ], - [ - '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', - 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c' - ], - [ - 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', - 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4' - ], - [ - '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', - 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f' - ], - [ - '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', - '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649' - ], - [ - '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', - 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826' - ], - [ - '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', - '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5' - ], - [ - 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', - 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87' - ], - [ - '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', - '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b' - ], - [ - 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', - '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc' - ], - [ - '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', - '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c' - ], - [ - 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', - 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f' - ], - [ - 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', - '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a' - ], - [ - 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', - 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46' - ], - [ - '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', - 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f' - ], - [ - '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', - '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03' - ], - [ - '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', - 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08' - ], - [ - '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', - '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8' - ], - [ - '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', - '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373' - ], - [ - '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', - 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3' - ], - [ - '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', - '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8' - ], - [ - '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', - '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1' - ], - [ - '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', - '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9' - ] - ] - } -}; - -},{}],219:[function(require,module,exports){ -'use strict'; - -var utils = exports; -var BN = require('bn.js'); -var minAssert = require('minimalistic-assert'); -var minUtils = require('minimalistic-crypto-utils'); - -utils.assert = minAssert; -utils.toArray = minUtils.toArray; -utils.zero2 = minUtils.zero2; -utils.toHex = minUtils.toHex; -utils.encode = minUtils.encode; - -// Represent num in a w-NAF form -function getNAF(num, w) { - var naf = []; - var ws = 1 << (w + 1); - var k = num.clone(); - while (k.cmpn(1) >= 0) { - var z; - if (k.isOdd()) { - var mod = k.andln(ws - 1); - if (mod > (ws >> 1) - 1) - z = (ws >> 1) - mod; - else - z = mod; - k.isubn(z); - } else { - z = 0; - } - naf.push(z); - - // Optimization, shift by word if possible - var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1; - for (var i = 1; i < shift; i++) - naf.push(0); - k.iushrn(shift); - } - - return naf; -} -utils.getNAF = getNAF; - -// Represent k1, k2 in a Joint Sparse Form -function getJSF(k1, k2) { - var jsf = [ - [], - [] - ]; - - k1 = k1.clone(); - k2 = k2.clone(); - var d1 = 0; - var d2 = 0; - while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) { - - // First phase - var m14 = (k1.andln(3) + d1) & 3; - var m24 = (k2.andln(3) + d2) & 3; - if (m14 === 3) - m14 = -1; - if (m24 === 3) - m24 = -1; - var u1; - if ((m14 & 1) === 0) { - u1 = 0; - } else { - var m8 = (k1.andln(7) + d1) & 7; - if ((m8 === 3 || m8 === 5) && m24 === 2) - u1 = -m14; - else - u1 = m14; - } - jsf[0].push(u1); - - var u2; - if ((m24 & 1) === 0) { - u2 = 0; - } else { - var m8 = (k2.andln(7) + d2) & 7; - if ((m8 === 3 || m8 === 5) && m14 === 2) - u2 = -m24; - else - u2 = m24; - } - jsf[1].push(u2); - - // Second phase - if (2 * d1 === u1 + 1) - d1 = 1 - d1; - if (2 * d2 === u2 + 1) - d2 = 1 - d2; - k1.iushrn(1); - k2.iushrn(1); - } - - return jsf; -} -utils.getJSF = getJSF; - -function cachedProperty(obj, name, computer) { - var key = '_' + name; - obj.prototype[name] = function cachedProperty() { - return this[key] !== undefined ? this[key] : - this[key] = computer.call(this); - }; -} -utils.cachedProperty = cachedProperty; - -function parseBytes(bytes) { - return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : - bytes; -} -utils.parseBytes = parseBytes; - -function intFromLE(bytes) { - return new BN(bytes, 'hex', 'le'); -} -utils.intFromLE = intFromLE; - - -},{"bn.js":147,"minimalistic-assert":268,"minimalistic-crypto-utils":269}],220:[function(require,module,exports){ -module.exports={ - "_args": [ - [ - "elliptic@6.5.1", - "/Users/caldwell/geopackage-js" - ] - ], - "_development": true, - "_from": "elliptic@6.5.1", - "_id": "elliptic@6.5.1", - "_inBundle": false, - "_integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", - "_location": "/elliptic", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "elliptic@6.5.1", - "name": "elliptic", - "escapedName": "elliptic", - "rawSpec": "6.5.1", - "saveSpec": null, - "fetchSpec": "6.5.1" - }, - "_requiredBy": [ - "/browserify-sign", - "/create-ecdh" - ], - "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", - "_spec": "6.5.1", - "_where": "/Users/caldwell/geopackage-js", - "author": { - "name": "Fedor Indutny", - "email": "fedor@indutny.com" - }, - "bugs": { - "url": "https://github.com/indutny/elliptic/issues" - }, - "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - }, - "description": "EC cryptography", - "devDependencies": { - "brfs": "^1.4.3", - "coveralls": "^3.0.4", - "grunt": "^1.0.4", - "grunt-browserify": "^5.0.0", - "grunt-cli": "^1.2.0", - "grunt-contrib-connect": "^1.0.0", - "grunt-contrib-copy": "^1.0.0", - "grunt-contrib-uglify": "^1.0.1", - "grunt-mocha-istanbul": "^3.0.1", - "grunt-saucelabs": "^9.0.1", - "istanbul": "^0.4.2", - "jscs": "^3.0.7", - "jshint": "^2.6.0", - "mocha": "^6.1.4" - }, - "files": [ - "lib" - ], - "homepage": "https://github.com/indutny/elliptic", - "keywords": [ - "EC", - "Elliptic", - "curve", - "Cryptography" - ], - "license": "MIT", - "main": "lib/elliptic.js", - "name": "elliptic", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/indutny/elliptic.git" - }, - "scripts": { - "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js", - "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js", - "lint": "npm run jscs && npm run jshint", - "test": "npm run lint && npm run unit", - "unit": "istanbul test _mocha --reporter=spec test/index.js", - "version": "grunt dist && git add dist/" - }, - "version": "6.5.1" -} - -},{}],221:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -function EventEmitter() { - this._events = this._events || {}; - this._maxListeners = this._maxListeners || undefined; -} -module.exports = EventEmitter; - -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -EventEmitter.defaultMaxListeners = 10; - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function(n) { - if (!isNumber(n) || n < 0 || isNaN(n)) - throw TypeError('n must be a positive number'); - this._maxListeners = n; - return this; -}; - -EventEmitter.prototype.emit = function(type) { - var er, handler, len, args, i, listeners; - - if (!this._events) - this._events = {}; - - // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events.error || - (isObject(this._events.error) && !this._events.error.length)) { - er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } else { - // At least give some kind of context to the user - var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); - err.context = er; - throw err; - } - } - } - - handler = this._events[type]; - - if (isUndefined(handler)) - return false; - - if (isFunction(handler)) { - switch (arguments.length) { - // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - // slower - default: - args = Array.prototype.slice.call(arguments, 1); - handler.apply(this, args); - } - } else if (isObject(handler)) { - args = Array.prototype.slice.call(arguments, 1); - listeners = handler.slice(); - len = listeners.length; - for (i = 0; i < len; i++) - listeners[i].apply(this, args); - } - - return true; -}; - -EventEmitter.prototype.addListener = function(type, listener) { - var m; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events) - this._events = {}; - - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (this._events.newListener) - this.emit('newListener', type, - isFunction(listener.listener) ? - listener.listener : listener); - - if (!this._events[type]) - // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - else if (isObject(this._events[type])) - // If we've already got an array, just append. - this._events[type].push(listener); - else - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; - - // Check for listener leak - if (isObject(this._events[type]) && !this._events[type].warned) { - if (!isUndefined(this._maxListeners)) { - m = this._maxListeners; - } else { - m = EventEmitter.defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - if (typeof console.trace === 'function') { - // not supported in IE 10 - console.trace(); - } - } - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - var fired = false; - - function g() { - this.removeListener(type, g); - - if (!fired) { - fired = true; - listener.apply(this, arguments); - } - } - - g.listener = listener; - this.on(type, g); - - return this; -}; - -// emits a 'removeListener' event iff the listener was removed -EventEmitter.prototype.removeListener = function(type, listener) { - var list, position, length, i; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events || !this._events[type]) - return this; - - list = this._events[type]; - length = list.length; - position = -1; - - if (list === listener || - (isFunction(list.listener) && list.listener === listener)) { - delete this._events[type]; - if (this._events.removeListener) - this.emit('removeListener', type, listener); - - } else if (isObject(list)) { - for (i = length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - position = i; - break; - } - } - - if (position < 0) - return this; - - if (list.length === 1) { - list.length = 0; - delete this._events[type]; - } else { - list.splice(position, 1); - } - - if (this._events.removeListener) - this.emit('removeListener', type, listener); - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - var key, listeners; - - if (!this._events) - return this; - - // not listening for removeListener, no need to emit - if (!this._events.removeListener) { - if (arguments.length === 0) - this._events = {}; - else if (this._events[type]) - delete this._events[type]; - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - for (key in this._events) { - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = {}; - return this; - } - - listeners = this._events[type]; - - if (isFunction(listeners)) { - this.removeListener(type, listeners); - } else if (listeners) { - // LIFO order - while (listeners.length) - this.removeListener(type, listeners[listeners.length - 1]); - } - delete this._events[type]; - - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - var ret; - if (!this._events || !this._events[type]) - ret = []; - else if (isFunction(this._events[type])) - ret = [this._events[type]]; - else - ret = this._events[type].slice(); - return ret; -}; - -EventEmitter.prototype.listenerCount = function(type) { - if (this._events) { - var evlistener = this._events[type]; - - if (isFunction(evlistener)) - return 1; - else if (evlistener) - return evlistener.length; - } - return 0; -}; - -EventEmitter.listenerCount = function(emitter, type) { - return emitter.listenerCount(type); -}; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -function isNumber(arg) { - return typeof arg === 'number'; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isUndefined(arg) { - return arg === void 0; -} - -},{}],222:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer -var MD5 = require('md5.js') - -/* eslint-disable camelcase */ -function EVP_BytesToKey (password, salt, keyBits, ivLen) { - if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary') - if (salt) { - if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary') - if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length') - } - - var keyLen = keyBits / 8 - var key = Buffer.alloc(keyLen) - var iv = Buffer.alloc(ivLen || 0) - var tmp = Buffer.alloc(0) - - while (keyLen > 0 || ivLen > 0) { - var hash = new MD5() - hash.update(tmp) - hash.update(password) - if (salt) hash.update(salt) - tmp = hash.digest() - - var used = 0 - - if (keyLen > 0) { - var keyStart = key.length - keyLen - used = Math.min(keyLen, tmp.length) - tmp.copy(key, keyStart, 0, used) - keyLen -= used - } - - if (used < tmp.length && ivLen > 0) { - var ivStart = iv.length - ivLen - var length = Math.min(ivLen, tmp.length - used) - tmp.copy(iv, ivStart, used, used + length) - ivLen -= length - } - } - - tmp.fill(0) - return { key: key, iv: iv } -} - -module.exports = EVP_BytesToKey - -},{"md5.js":266,"safe-buffer":318}],223:[function(require,module,exports){ -'use strict'; -const toBytes = s => [...s].map(c => c.charCodeAt(0)); -const xpiZipFilename = toBytes('META-INF/mozilla.rsa'); -const oxmlContentTypes = toBytes('[Content_Types].xml'); -const oxmlRels = toBytes('_rels/.rels'); - -module.exports = input => { - const buf = input instanceof Uint8Array ? input : new Uint8Array(input); - - if (!(buf && buf.length > 1)) { - return null; - } - - const check = (header, options) => { - options = Object.assign({ - offset: 0 - }, options); - - for (let i = 0; i < header.length; i++) { - // If a bitmask is set - if (options.mask) { - // If header doesn't equal `buf` with bits masked off - if (header[i] !== (options.mask[i] & buf[i + options.offset])) { - return false; - } - } else if (header[i] !== buf[i + options.offset]) { - return false; - } - } - - return true; - }; - - const checkString = (header, options) => check(toBytes(header), options); - - if (check([0xFF, 0xD8, 0xFF])) { - return { - ext: 'jpg', - mime: 'image/jpeg' - }; - } - - if (check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) { - return { - ext: 'png', - mime: 'image/png' - }; - } - - if (check([0x47, 0x49, 0x46])) { - return { - ext: 'gif', - mime: 'image/gif' - }; - } - - if (check([0x57, 0x45, 0x42, 0x50], {offset: 8})) { - return { - ext: 'webp', - mime: 'image/webp' - }; - } - - if (check([0x46, 0x4C, 0x49, 0x46])) { - return { - ext: 'flif', - mime: 'image/flif' - }; - } - - // Needs to be before `tif` check - if ( - (check([0x49, 0x49, 0x2A, 0x0]) || check([0x4D, 0x4D, 0x0, 0x2A])) && - check([0x43, 0x52], {offset: 8}) - ) { - return { - ext: 'cr2', - mime: 'image/x-canon-cr2' - }; - } - - if ( - check([0x49, 0x49, 0x2A, 0x0]) || - check([0x4D, 0x4D, 0x0, 0x2A]) - ) { - return { - ext: 'tif', - mime: 'image/tiff' - }; - } - - if (check([0x42, 0x4D])) { - return { - ext: 'bmp', - mime: 'image/bmp' - }; - } - - if (check([0x49, 0x49, 0xBC])) { - return { - ext: 'jxr', - mime: 'image/vnd.ms-photo' - }; - } - - if (check([0x38, 0x42, 0x50, 0x53])) { - return { - ext: 'psd', - mime: 'image/vnd.adobe.photoshop' - }; - } - - // Zip-based file formats - // Need to be before the `zip` check - if (check([0x50, 0x4B, 0x3, 0x4])) { - if ( - check([0x6D, 0x69, 0x6D, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x65, 0x70, 0x75, 0x62, 0x2B, 0x7A, 0x69, 0x70], {offset: 30}) - ) { - return { - ext: 'epub', - mime: 'application/epub+zip' - }; - } - - // Assumes signed `.xpi` from addons.mozilla.org - if (check(xpiZipFilename, {offset: 30})) { - return { - ext: 'xpi', - mime: 'application/x-xpinstall' - }; - } - - if (checkString('mimetypeapplication/vnd.oasis.opendocument.text', {offset: 30})) { - return { - ext: 'odt', - mime: 'application/vnd.oasis.opendocument.text' - }; - } - - if (checkString('mimetypeapplication/vnd.oasis.opendocument.spreadsheet', {offset: 30})) { - return { - ext: 'ods', - mime: 'application/vnd.oasis.opendocument.spreadsheet' - }; - } - - if (checkString('mimetypeapplication/vnd.oasis.opendocument.presentation', {offset: 30})) { - return { - ext: 'odp', - mime: 'application/vnd.oasis.opendocument.presentation' - }; - } - - // https://github.com/file/file/blob/master/magic/Magdir/msooxml - if (check(oxmlContentTypes, {offset: 30}) || check(oxmlRels, {offset: 30})) { - const sliced = buf.subarray(4, 4 + 2000); - const nextZipHeaderIndex = arr => arr.findIndex((el, i, arr) => arr[i] === 0x50 && arr[i + 1] === 0x4B && arr[i + 2] === 0x3 && arr[i + 3] === 0x4); - const header2Pos = nextZipHeaderIndex(sliced); - - if (header2Pos !== -1) { - const slicedAgain = buf.subarray(header2Pos + 8, header2Pos + 8 + 1000); - const header3Pos = nextZipHeaderIndex(slicedAgain); - - if (header3Pos !== -1) { - const offset = 8 + header2Pos + header3Pos + 30; - - if (checkString('word/', {offset})) { - return { - ext: 'docx', - mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' - }; - } - - if (checkString('ppt/', {offset})) { - return { - ext: 'pptx', - mime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' - }; - } - - if (checkString('xl/', {offset})) { - return { - ext: 'xlsx', - mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' - }; - } - } - } - } - } - - if ( - check([0x50, 0x4B]) && - (buf[2] === 0x3 || buf[2] === 0x5 || buf[2] === 0x7) && - (buf[3] === 0x4 || buf[3] === 0x6 || buf[3] === 0x8) - ) { - return { - ext: 'zip', - mime: 'application/zip' - }; - } - - if (check([0x75, 0x73, 0x74, 0x61, 0x72], {offset: 257})) { - return { - ext: 'tar', - mime: 'application/x-tar' - }; - } - - if ( - check([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7]) && - (buf[6] === 0x0 || buf[6] === 0x1) - ) { - return { - ext: 'rar', - mime: 'application/x-rar-compressed' - }; - } - - if (check([0x1F, 0x8B, 0x8])) { - return { - ext: 'gz', - mime: 'application/gzip' - }; - } - - if (check([0x42, 0x5A, 0x68])) { - return { - ext: 'bz2', - mime: 'application/x-bzip2' - }; - } - - if (check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) { - return { - ext: '7z', - mime: 'application/x-7z-compressed' - }; - } - - if (check([0x78, 0x01])) { - return { - ext: 'dmg', - mime: 'application/x-apple-diskimage' - }; - } - - if (check([0x33, 0x67, 0x70, 0x35]) || // 3gp5 - ( - check([0x0, 0x0, 0x0]) && check([0x66, 0x74, 0x79, 0x70], {offset: 4}) && - ( - check([0x6D, 0x70, 0x34, 0x31], {offset: 8}) || // MP41 - check([0x6D, 0x70, 0x34, 0x32], {offset: 8}) || // MP42 - check([0x69, 0x73, 0x6F, 0x6D], {offset: 8}) || // ISOM - check([0x69, 0x73, 0x6F, 0x32], {offset: 8}) || // ISO2 - check([0x6D, 0x6D, 0x70, 0x34], {offset: 8}) || // MMP4 - check([0x4D, 0x34, 0x56], {offset: 8}) || // M4V - check([0x64, 0x61, 0x73, 0x68], {offset: 8}) // DASH - ) - )) { - return { - ext: 'mp4', - mime: 'video/mp4' - }; - } - - if (check([0x4D, 0x54, 0x68, 0x64])) { - return { - ext: 'mid', - mime: 'audio/midi' - }; - } - - // https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska - if (check([0x1A, 0x45, 0xDF, 0xA3])) { - const sliced = buf.subarray(4, 4 + 4096); - const idPos = sliced.findIndex((el, i, arr) => arr[i] === 0x42 && arr[i + 1] === 0x82); - - if (idPos !== -1) { - const docTypePos = idPos + 3; - const findDocType = type => [...type].every((c, i) => sliced[docTypePos + i] === c.charCodeAt(0)); - - if (findDocType('matroska')) { - return { - ext: 'mkv', - mime: 'video/x-matroska' - }; - } - - if (findDocType('webm')) { - return { - ext: 'webm', - mime: 'video/webm' - }; - } - } - } - - if (check([0x0, 0x0, 0x0, 0x14, 0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20]) || - check([0x66, 0x72, 0x65, 0x65], {offset: 4}) || - check([0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20], {offset: 4}) || - check([0x6D, 0x64, 0x61, 0x74], {offset: 4}) || // MJPEG - check([0x77, 0x69, 0x64, 0x65], {offset: 4})) { - return { - ext: 'mov', - mime: 'video/quicktime' - }; - } - - // RIFF file format which might be AVI, WAV, QCP, etc - if (check([0x52, 0x49, 0x46, 0x46])) { - if (check([0x41, 0x56, 0x49], {offset: 8})) { - return { - ext: 'avi', - mime: 'video/x-msvideo' - }; - } - if (check([0x57, 0x41, 0x56, 0x45], {offset: 8})) { - return { - ext: 'wav', - mime: 'audio/x-wav' - }; - } - // QLCM, QCP file - if (check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) { - return { - ext: 'qcp', - mime: 'audio/qcelp' - }; - } - } - - if (check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) { - return { - ext: 'wmv', - mime: 'video/x-ms-wmv' - }; - } - - if ( - check([0x0, 0x0, 0x1, 0xBA]) || - check([0x0, 0x0, 0x1, 0xB3]) - ) { - return { - ext: 'mpg', - mime: 'video/mpeg' - }; - } - - if (check([0x66, 0x74, 0x79, 0x70, 0x33, 0x67], {offset: 4})) { - return { - ext: '3gp', - mime: 'video/3gpp' - }; - } - - // Check for MPEG header at different starting offsets - for (let start = 0; start < 2 && start < (buf.length - 16); start++) { - if ( - check([0x49, 0x44, 0x33], {offset: start}) || // ID3 header - check([0xFF, 0xE2], {offset: start, mask: [0xFF, 0xE2]}) // MPEG 1 or 2 Layer 3 header - ) { - return { - ext: 'mp3', - mime: 'audio/mpeg' - }; - } - - if ( - check([0xFF, 0xE4], {offset: start, mask: [0xFF, 0xE4]}) // MPEG 1 or 2 Layer 2 header - ) { - return { - ext: 'mp2', - mime: 'audio/mpeg' - }; - } - - if ( - check([0xFF, 0xF8], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 2 layer 0 using ADTS - ) { - return { - ext: 'mp2', - mime: 'audio/mpeg' - }; - } - - if ( - check([0xFF, 0xF0], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 4 layer 0 using ADTS - ) { - return { - ext: 'mp4', - mime: 'audio/mpeg' - }; - } - } - - if ( - check([0x66, 0x74, 0x79, 0x70, 0x4D, 0x34, 0x41], {offset: 4}) || - check([0x4D, 0x34, 0x41, 0x20]) - ) { - return { - ext: 'm4a', - mime: 'audio/m4a' - }; - } - - // Needs to be before `ogg` check - if (check([0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64], {offset: 28})) { - return { - ext: 'opus', - mime: 'audio/opus' - }; - } - - // If 'OggS' in first bytes, then OGG container - if (check([0x4F, 0x67, 0x67, 0x53])) { - // This is a OGG container - - // If ' theora' in header. - if (check([0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61], {offset: 28})) { - return { - ext: 'ogv', - mime: 'video/ogg' - }; - } - // If '\x01video' in header. - if (check([0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00], {offset: 28})) { - return { - ext: 'ogm', - mime: 'video/ogg' - }; - } - // If ' FLAC' in header https://xiph.org/flac/faq.html - if (check([0x7F, 0x46, 0x4C, 0x41, 0x43], {offset: 28})) { - return { - ext: 'oga', - mime: 'audio/ogg' - }; - } - - // 'Speex ' in header https://en.wikipedia.org/wiki/Speex - if (check([0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20], {offset: 28})) { - return { - ext: 'spx', - mime: 'audio/ogg' - }; - } - - // If '\x01vorbis' in header - if (check([0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73], {offset: 28})) { - return { - ext: 'ogg', - mime: 'audio/ogg' - }; - } - - // Default OGG container https://www.iana.org/assignments/media-types/application/ogg - return { - ext: 'ogx', - mime: 'application/ogg' - }; - } - - if (check([0x66, 0x4C, 0x61, 0x43])) { - return { - ext: 'flac', - mime: 'audio/x-flac' - }; - } - - if (check([0x4D, 0x41, 0x43, 0x20])) { - return { - ext: 'ape', - mime: 'audio/ape' - }; - } - - if (check([0x23, 0x21, 0x41, 0x4D, 0x52, 0x0A])) { - return { - ext: 'amr', - mime: 'audio/amr' - }; - } - - if (check([0x25, 0x50, 0x44, 0x46])) { - return { - ext: 'pdf', - mime: 'application/pdf' - }; - } - - if (check([0x4D, 0x5A])) { - return { - ext: 'exe', - mime: 'application/x-msdownload' - }; - } - - if ( - (buf[0] === 0x43 || buf[0] === 0x46) && - check([0x57, 0x53], {offset: 1}) - ) { - return { - ext: 'swf', - mime: 'application/x-shockwave-flash' - }; - } - - if (check([0x7B, 0x5C, 0x72, 0x74, 0x66])) { - return { - ext: 'rtf', - mime: 'application/rtf' - }; - } - - if (check([0x00, 0x61, 0x73, 0x6D])) { - return { - ext: 'wasm', - mime: 'application/wasm' - }; - } - - if ( - check([0x77, 0x4F, 0x46, 0x46]) && - ( - check([0x00, 0x01, 0x00, 0x00], {offset: 4}) || - check([0x4F, 0x54, 0x54, 0x4F], {offset: 4}) - ) - ) { - return { - ext: 'woff', - mime: 'font/woff' - }; - } - - if ( - check([0x77, 0x4F, 0x46, 0x32]) && - ( - check([0x00, 0x01, 0x00, 0x00], {offset: 4}) || - check([0x4F, 0x54, 0x54, 0x4F], {offset: 4}) - ) - ) { - return { - ext: 'woff2', - mime: 'font/woff2' - }; - } - - if ( - check([0x4C, 0x50], {offset: 34}) && - ( - check([0x00, 0x00, 0x01], {offset: 8}) || - check([0x01, 0x00, 0x02], {offset: 8}) || - check([0x02, 0x00, 0x02], {offset: 8}) - ) - ) { - return { - ext: 'eot', - mime: 'application/octet-stream' - }; - } - - if (check([0x00, 0x01, 0x00, 0x00, 0x00])) { - return { - ext: 'ttf', - mime: 'font/ttf' - }; - } - - if (check([0x4F, 0x54, 0x54, 0x4F, 0x00])) { - return { - ext: 'otf', - mime: 'font/otf' - }; - } - - if (check([0x00, 0x00, 0x01, 0x00])) { - return { - ext: 'ico', - mime: 'image/x-icon' - }; - } - - if (check([0x00, 0x00, 0x02, 0x00])) { - return { - ext: 'cur', - mime: 'image/x-icon' - }; - } - - if (check([0x46, 0x4C, 0x56, 0x01])) { - return { - ext: 'flv', - mime: 'video/x-flv' - }; - } - - if (check([0x25, 0x21])) { - return { - ext: 'ps', - mime: 'application/postscript' - }; - } - - if (check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) { - return { - ext: 'xz', - mime: 'application/x-xz' - }; - } - - if (check([0x53, 0x51, 0x4C, 0x69])) { - return { - ext: 'sqlite', - mime: 'application/x-sqlite3' - }; - } - - if (check([0x4E, 0x45, 0x53, 0x1A])) { - return { - ext: 'nes', - mime: 'application/x-nintendo-nes-rom' - }; - } - - if (check([0x43, 0x72, 0x32, 0x34])) { - return { - ext: 'crx', - mime: 'application/x-google-chrome-extension' - }; - } - - if ( - check([0x4D, 0x53, 0x43, 0x46]) || - check([0x49, 0x53, 0x63, 0x28]) - ) { - return { - ext: 'cab', - mime: 'application/vnd.ms-cab-compressed' - }; - } - - // Needs to be before `ar` check - if (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E, 0x0A, 0x64, 0x65, 0x62, 0x69, 0x61, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79])) { - return { - ext: 'deb', - mime: 'application/x-deb' - }; - } - - if (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E])) { - return { - ext: 'ar', - mime: 'application/x-unix-archive' - }; - } - - if (check([0xED, 0xAB, 0xEE, 0xDB])) { - return { - ext: 'rpm', - mime: 'application/x-rpm' - }; - } - - if ( - check([0x1F, 0xA0]) || - check([0x1F, 0x9D]) - ) { - return { - ext: 'Z', - mime: 'application/x-compress' - }; - } - - if (check([0x4C, 0x5A, 0x49, 0x50])) { - return { - ext: 'lz', - mime: 'application/x-lzip' - }; - } - - if (check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) { - return { - ext: 'msi', - mime: 'application/x-msi' - }; - } - - if (check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) { - return { - ext: 'mxf', - mime: 'application/mxf' - }; - } - - if (check([0x47], {offset: 4}) && (check([0x47], {offset: 192}) || check([0x47], {offset: 196}))) { - return { - ext: 'mts', - mime: 'video/mp2t' - }; - } - - if (check([0x42, 0x4C, 0x45, 0x4E, 0x44, 0x45, 0x52])) { - return { - ext: 'blend', - mime: 'application/x-blender' - }; - } - - if (check([0x42, 0x50, 0x47, 0xFB])) { - return { - ext: 'bpg', - mime: 'image/bpg' - }; - } - - if (check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) { - // JPEG-2000 family - - if (check([0x6A, 0x70, 0x32, 0x20], {offset: 20})) { - return { - ext: 'jp2', - mime: 'image/jp2' - }; - } - - if (check([0x6A, 0x70, 0x78, 0x20], {offset: 20})) { - return { - ext: 'jpx', - mime: 'image/jpx' - }; - } - - if (check([0x6A, 0x70, 0x6D, 0x20], {offset: 20})) { - return { - ext: 'jpm', - mime: 'image/jpm' - }; - } - - if (check([0x6D, 0x6A, 0x70, 0x32], {offset: 20})) { - return { - ext: 'mj2', - mime: 'image/mj2' - }; - } - } - - if (check([0x46, 0x4F, 0x52, 0x4D, 0x00])) { - return { - ext: 'aif', - mime: 'audio/aiff' - }; - } - - if (checkString('} features load entire GeoJSON FeatureCollection - * @returns {RBush} GeoJSON RBush - * @example - * var polys = turf.polygons([ - * [[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]], - * [[[-93, 32], [-83, 32], [-83, 39], [-93, 39], [-93, 32]]] - * ]); - * tree.load(polys); - */ - tree.load = function (features) { - var load = []; - // Load an Array of Features - if (Array.isArray(features)) { - features.forEach(function (feature) { - if (feature.type !== 'Feature') throw new Error('invalid features'); - feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature); - load.push(feature); - }); - } else { - // Load a FeatureCollection - featureEach(features, function (feature) { - if (feature.type !== 'Feature') throw new Error('invalid features'); - feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature); - load.push(feature); - }); - } - return rbush.prototype.load.call(this, load); - }; - - /** - * [remove](https://github.com/mourner/rbush#removing-data) - * - * @param {Feature} feature remove single GeoJSON Feature - * @param {Function} equals Pass a custom equals function to compare by value for removal. - * @returns {RBush} GeoJSON RBush - * @example - * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]); - * - * tree.remove(poly); - */ - tree.remove = function (feature, equals) { - if (feature.type !== 'Feature') throw new Error('invalid feature'); - feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature); - return rbush.prototype.remove.call(this, feature, equals); - }; - - /** - * [clear](https://github.com/mourner/rbush#removing-data) - * - * @returns {RBush} GeoJSON Rbush - * @example - * tree.clear() - */ - tree.clear = function () { - return rbush.prototype.clear.call(this); - }; - - /** - * [search](https://github.com/mourner/rbush#search) - * - * @param {BBox|FeatureCollection|Feature} geojson search with GeoJSON - * @returns {FeatureCollection} all features that intersects with the given GeoJSON. - * @example - * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]); - * - * tree.search(poly); - */ - tree.search = function (geojson) { - var features = rbush.prototype.search.call(this, this.toBBox(geojson)); - return featureCollection(features); - }; - - /** - * [collides](https://github.com/mourner/rbush#collisions) - * - * @param {BBox|FeatureCollection|Feature} geojson collides with GeoJSON - * @returns {boolean} true if there are any items intersecting the given GeoJSON, otherwise false. - * @example - * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]); - * - * tree.collides(poly); - */ - tree.collides = function (geojson) { - return rbush.prototype.collides.call(this, this.toBBox(geojson)); - }; - - /** - * [all](https://github.com/mourner/rbush#search) - * - * @returns {FeatureCollection} all the features in RBush - * @example - * tree.all() - */ - tree.all = function () { - var features = rbush.prototype.all.call(this); - return featureCollection(features); - }; - - /** - * [toJSON](https://github.com/mourner/rbush#export-and-import) - * - * @returns {any} export data as JSON object - * @example - * var exported = tree.toJSON() - */ - tree.toJSON = function () { - return rbush.prototype.toJSON.call(this); - }; - - /** - * [fromJSON](https://github.com/mourner/rbush#export-and-import) - * - * @param {any} json import previously exported data - * @returns {RBush} GeoJSON RBush - * @example - * var exported = { - * "children": [ - * { - * "type": "Feature", - * "geometry": { - * "type": "Point", - * "coordinates": [110, 50] - * }, - * "properties": {}, - * "bbox": [110, 50, 110, 50] - * } - * ], - * "height": 1, - * "leaf": true, - * "minX": 110, - * "minY": 50, - * "maxX": 110, - * "maxY": 50 - * } - * tree.fromJSON(exported) - */ - tree.fromJSON = function (json) { - return rbush.prototype.fromJSON.call(this, json); - }; - - /** - * Converts GeoJSON to {minX, minY, maxX, maxY} schema - * - * @private - * @param {BBox|FeatureCollection|Feature} geojson feature(s) to retrieve BBox from - * @returns {Object} converted to {minX, minY, maxX, maxY} - */ - tree.toBBox = function (geojson) { - var bbox; - if (geojson.bbox) bbox = geojson.bbox; - else if (Array.isArray(geojson) && geojson.length === 4) bbox = geojson; - else if (Array.isArray(geojson) && geojson.length === 6) bbox = [geojson[0], geojson[1], geojson[3], geojson[4]]; - else if (geojson.type === 'Feature') bbox = turfBBox(geojson); - else if (geojson.type === 'FeatureCollection') bbox = turfBBox(geojson); - else throw new Error('invalid geojson') - - return { - minX: bbox[0], - minY: bbox[1], - maxX: bbox[2], - maxY: bbox[3] - }; - }; - return tree; -} - -module.exports = geojsonRbush; -module.exports.default = geojsonRbush; - -},{"@turf/bbox":117,"@turf/helpers":123,"@turf/meta":225,"rbush":300}],225:[function(require,module,exports){ -arguments[4][122][0].apply(exports,arguments) -},{"@turf/helpers":123,"dup":122}],226:[function(require,module,exports){ -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : -typeof define === 'function' && define.amd ? define(factory) : -(global.geojsonvt = factory()); -}(this, (function () { 'use strict'; - -// calculate simplification data using optimized Douglas-Peucker algorithm - -function simplify(coords, first, last, sqTolerance) { - var maxSqDist = sqTolerance; - var mid = (last - first) >> 1; - var minPosToMid = last - first; - var index; - - var ax = coords[first]; - var ay = coords[first + 1]; - var bx = coords[last]; - var by = coords[last + 1]; - - for (var i = first + 3; i < last; i += 3) { - var d = getSqSegDist(coords[i], coords[i + 1], ax, ay, bx, by); - - if (d > maxSqDist) { - index = i; - maxSqDist = d; - - } else if (d === maxSqDist) { - // a workaround to ensure we choose a pivot close to the middle of the list, - // reducing recursion depth, for certain degenerate inputs - // https://github.com/mapbox/geojson-vt/issues/104 - var posToMid = Math.abs(i - mid); - if (posToMid < minPosToMid) { - index = i; - minPosToMid = posToMid; - } - } - } - - if (maxSqDist > sqTolerance) { - if (index - first > 3) simplify(coords, first, index, sqTolerance); - coords[index + 2] = maxSqDist; - if (last - index > 3) simplify(coords, index, last, sqTolerance); - } -} - -// square distance from a point to a segment -function getSqSegDist(px, py, x, y, bx, by) { - - var dx = bx - x; - var dy = by - y; - - if (dx !== 0 || dy !== 0) { - - var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy); - - if (t > 1) { - x = bx; - y = by; - - } else if (t > 0) { - x += dx * t; - y += dy * t; - } - } - - dx = px - x; - dy = py - y; - - return dx * dx + dy * dy; -} - -function createFeature(id, type, geom, tags) { - var feature = { - id: typeof id === 'undefined' ? null : id, - type: type, - geometry: geom, - tags: tags, - minX: Infinity, - minY: Infinity, - maxX: -Infinity, - maxY: -Infinity - }; - calcBBox(feature); - return feature; -} - -function calcBBox(feature) { - var geom = feature.geometry; - var type = feature.type; - - if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') { - calcLineBBox(feature, geom); - - } else if (type === 'Polygon' || type === 'MultiLineString') { - for (var i = 0; i < geom.length; i++) { - calcLineBBox(feature, geom[i]); - } - - } else if (type === 'MultiPolygon') { - for (i = 0; i < geom.length; i++) { - for (var j = 0; j < geom[i].length; j++) { - calcLineBBox(feature, geom[i][j]); - } - } - } -} - -function calcLineBBox(feature, geom) { - for (var i = 0; i < geom.length; i += 3) { - feature.minX = Math.min(feature.minX, geom[i]); - feature.minY = Math.min(feature.minY, geom[i + 1]); - feature.maxX = Math.max(feature.maxX, geom[i]); - feature.maxY = Math.max(feature.maxY, geom[i + 1]); - } -} - -// converts GeoJSON feature into an intermediate projected JSON vector format with simplification data - -function convert(data, options) { - var features = []; - if (data.type === 'FeatureCollection') { - for (var i = 0; i < data.features.length; i++) { - convertFeature(features, data.features[i], options, i); - } - - } else if (data.type === 'Feature') { - convertFeature(features, data, options); - - } else { - // single geometry or a geometry collection - convertFeature(features, {geometry: data}, options); - } - - return features; -} - -function convertFeature(features, geojson, options, index) { - if (!geojson.geometry) return; - - var coords = geojson.geometry.coordinates; - var type = geojson.geometry.type; - var tolerance = Math.pow(options.tolerance / ((1 << options.maxZoom) * options.extent), 2); - var geometry = []; - var id = geojson.id; - if (options.promoteId) { - id = geojson.properties[options.promoteId]; - } else if (options.generateId) { - id = index || 0; - } - if (type === 'Point') { - convertPoint(coords, geometry); - - } else if (type === 'MultiPoint') { - for (var i = 0; i < coords.length; i++) { - convertPoint(coords[i], geometry); - } - - } else if (type === 'LineString') { - convertLine(coords, geometry, tolerance, false); - - } else if (type === 'MultiLineString') { - if (options.lineMetrics) { - // explode into linestrings to be able to track metrics - for (i = 0; i < coords.length; i++) { - geometry = []; - convertLine(coords[i], geometry, tolerance, false); - features.push(createFeature(id, 'LineString', geometry, geojson.properties)); - } - return; - } else { - convertLines(coords, geometry, tolerance, false); - } - - } else if (type === 'Polygon') { - convertLines(coords, geometry, tolerance, true); - - } else if (type === 'MultiPolygon') { - for (i = 0; i < coords.length; i++) { - var polygon = []; - convertLines(coords[i], polygon, tolerance, true); - geometry.push(polygon); - } - } else if (type === 'GeometryCollection') { - for (i = 0; i < geojson.geometry.geometries.length; i++) { - convertFeature(features, { - id: id, - geometry: geojson.geometry.geometries[i], - properties: geojson.properties - }, options, index); - } - return; - } else { - throw new Error('Input data is not a valid GeoJSON object.'); - } - - features.push(createFeature(id, type, geometry, geojson.properties)); -} - -function convertPoint(coords, out) { - out.push(projectX(coords[0])); - out.push(projectY(coords[1])); - out.push(0); -} - -function convertLine(ring, out, tolerance, isPolygon) { - var x0, y0; - var size = 0; - - for (var j = 0; j < ring.length; j++) { - var x = projectX(ring[j][0]); - var y = projectY(ring[j][1]); - - out.push(x); - out.push(y); - out.push(0); - - if (j > 0) { - if (isPolygon) { - size += (x0 * y - x * y0) / 2; // area - } else { - size += Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2)); // length - } - } - x0 = x; - y0 = y; - } - - var last = out.length - 3; - out[2] = 1; - simplify(out, 0, last, tolerance); - out[last + 2] = 1; - - out.size = Math.abs(size); - out.start = 0; - out.end = out.size; -} - -function convertLines(rings, out, tolerance, isPolygon) { - for (var i = 0; i < rings.length; i++) { - var geom = []; - convertLine(rings[i], geom, tolerance, isPolygon); - out.push(geom); - } -} - -function projectX(x) { - return x / 360 + 0.5; -} - -function projectY(y) { - var sin = Math.sin(y * Math.PI / 180); - var y2 = 0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI; - return y2 < 0 ? 0 : y2 > 1 ? 1 : y2; -} - -/* clip features between two axis-parallel lines: - * | | - * ___|___ | / - * / | \____|____/ - * | | - */ - -function clip(features, scale, k1, k2, axis, minAll, maxAll, options) { - - k1 /= scale; - k2 /= scale; - - if (minAll >= k1 && maxAll < k2) return features; // trivial accept - else if (maxAll < k1 || minAll >= k2) return null; // trivial reject - - var clipped = []; - - for (var i = 0; i < features.length; i++) { - - var feature = features[i]; - var geometry = feature.geometry; - var type = feature.type; - - var min = axis === 0 ? feature.minX : feature.minY; - var max = axis === 0 ? feature.maxX : feature.maxY; - - if (min >= k1 && max < k2) { // trivial accept - clipped.push(feature); - continue; - } else if (max < k1 || min >= k2) { // trivial reject - continue; - } - - var newGeometry = []; - - if (type === 'Point' || type === 'MultiPoint') { - clipPoints(geometry, newGeometry, k1, k2, axis); - - } else if (type === 'LineString') { - clipLine(geometry, newGeometry, k1, k2, axis, false, options.lineMetrics); - - } else if (type === 'MultiLineString') { - clipLines(geometry, newGeometry, k1, k2, axis, false); - - } else if (type === 'Polygon') { - clipLines(geometry, newGeometry, k1, k2, axis, true); - - } else if (type === 'MultiPolygon') { - for (var j = 0; j < geometry.length; j++) { - var polygon = []; - clipLines(geometry[j], polygon, k1, k2, axis, true); - if (polygon.length) { - newGeometry.push(polygon); - } - } - } - - if (newGeometry.length) { - if (options.lineMetrics && type === 'LineString') { - for (j = 0; j < newGeometry.length; j++) { - clipped.push(createFeature(feature.id, type, newGeometry[j], feature.tags)); - } - continue; - } - - if (type === 'LineString' || type === 'MultiLineString') { - if (newGeometry.length === 1) { - type = 'LineString'; - newGeometry = newGeometry[0]; - } else { - type = 'MultiLineString'; - } - } - if (type === 'Point' || type === 'MultiPoint') { - type = newGeometry.length === 3 ? 'Point' : 'MultiPoint'; - } - - clipped.push(createFeature(feature.id, type, newGeometry, feature.tags)); - } - } - - return clipped.length ? clipped : null; -} - -function clipPoints(geom, newGeom, k1, k2, axis) { - for (var i = 0; i < geom.length; i += 3) { - var a = geom[i + axis]; - - if (a >= k1 && a <= k2) { - newGeom.push(geom[i]); - newGeom.push(geom[i + 1]); - newGeom.push(geom[i + 2]); - } - } -} - -function clipLine(geom, newGeom, k1, k2, axis, isPolygon, trackMetrics) { - - var slice = newSlice(geom); - var intersect = axis === 0 ? intersectX : intersectY; - var len = geom.start; - var segLen, t; - - for (var i = 0; i < geom.length - 3; i += 3) { - var ax = geom[i]; - var ay = geom[i + 1]; - var az = geom[i + 2]; - var bx = geom[i + 3]; - var by = geom[i + 4]; - var a = axis === 0 ? ax : ay; - var b = axis === 0 ? bx : by; - var exited = false; - - if (trackMetrics) segLen = Math.sqrt(Math.pow(ax - bx, 2) + Math.pow(ay - by, 2)); - - if (a < k1) { - // ---|--> | (line enters the clip region from the left) - if (b > k1) { - t = intersect(slice, ax, ay, bx, by, k1); - if (trackMetrics) slice.start = len + segLen * t; - } - } else if (a > k2) { - // | <--|--- (line enters the clip region from the right) - if (b < k2) { - t = intersect(slice, ax, ay, bx, by, k2); - if (trackMetrics) slice.start = len + segLen * t; - } - } else { - addPoint(slice, ax, ay, az); - } - if (b < k1 && a >= k1) { - // <--|--- | or <--|-----|--- (line exits the clip region on the left) - t = intersect(slice, ax, ay, bx, by, k1); - exited = true; - } - if (b > k2 && a <= k2) { - // | ---|--> or ---|-----|--> (line exits the clip region on the right) - t = intersect(slice, ax, ay, bx, by, k2); - exited = true; - } - - if (!isPolygon && exited) { - if (trackMetrics) slice.end = len + segLen * t; - newGeom.push(slice); - slice = newSlice(geom); - } - - if (trackMetrics) len += segLen; - } - - // add the last point - var last = geom.length - 3; - ax = geom[last]; - ay = geom[last + 1]; - az = geom[last + 2]; - a = axis === 0 ? ax : ay; - if (a >= k1 && a <= k2) addPoint(slice, ax, ay, az); - - // close the polygon if its endpoints are not the same after clipping - last = slice.length - 3; - if (isPolygon && last >= 3 && (slice[last] !== slice[0] || slice[last + 1] !== slice[1])) { - addPoint(slice, slice[0], slice[1], slice[2]); - } - - // add the final slice - if (slice.length) { - newGeom.push(slice); - } -} - -function newSlice(line) { - var slice = []; - slice.size = line.size; - slice.start = line.start; - slice.end = line.end; - return slice; -} - -function clipLines(geom, newGeom, k1, k2, axis, isPolygon) { - for (var i = 0; i < geom.length; i++) { - clipLine(geom[i], newGeom, k1, k2, axis, isPolygon, false); - } -} - -function addPoint(out, x, y, z) { - out.push(x); - out.push(y); - out.push(z); -} - -function intersectX(out, ax, ay, bx, by, x) { - var t = (x - ax) / (bx - ax); - out.push(x); - out.push(ay + (by - ay) * t); - out.push(1); - return t; -} - -function intersectY(out, ax, ay, bx, by, y) { - var t = (y - ay) / (by - ay); - out.push(ax + (bx - ax) * t); - out.push(y); - out.push(1); - return t; -} - -function wrap(features, options) { - var buffer = options.buffer / options.extent; - var merged = features; - var left = clip(features, 1, -1 - buffer, buffer, 0, -1, 2, options); // left world copy - var right = clip(features, 1, 1 - buffer, 2 + buffer, 0, -1, 2, options); // right world copy - - if (left || right) { - merged = clip(features, 1, -buffer, 1 + buffer, 0, -1, 2, options) || []; // center world copy - - if (left) merged = shiftFeatureCoords(left, 1).concat(merged); // merge left into center - if (right) merged = merged.concat(shiftFeatureCoords(right, -1)); // merge right into center - } - - return merged; -} - -function shiftFeatureCoords(features, offset) { - var newFeatures = []; - - for (var i = 0; i < features.length; i++) { - var feature = features[i], - type = feature.type; - - var newGeometry; - - if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') { - newGeometry = shiftCoords(feature.geometry, offset); - - } else if (type === 'MultiLineString' || type === 'Polygon') { - newGeometry = []; - for (var j = 0; j < feature.geometry.length; j++) { - newGeometry.push(shiftCoords(feature.geometry[j], offset)); - } - } else if (type === 'MultiPolygon') { - newGeometry = []; - for (j = 0; j < feature.geometry.length; j++) { - var newPolygon = []; - for (var k = 0; k < feature.geometry[j].length; k++) { - newPolygon.push(shiftCoords(feature.geometry[j][k], offset)); - } - newGeometry.push(newPolygon); - } - } - - newFeatures.push(createFeature(feature.id, type, newGeometry, feature.tags)); - } - - return newFeatures; -} - -function shiftCoords(points, offset) { - var newPoints = []; - newPoints.size = points.size; - - if (points.start !== undefined) { - newPoints.start = points.start; - newPoints.end = points.end; - } - - for (var i = 0; i < points.length; i += 3) { - newPoints.push(points[i] + offset, points[i + 1], points[i + 2]); - } - return newPoints; -} - -// Transforms the coordinates of each feature in the given tile from -// mercator-projected space into (extent x extent) tile space. -function transformTile(tile, extent) { - if (tile.transformed) return tile; - - var z2 = 1 << tile.z, - tx = tile.x, - ty = tile.y, - i, j, k; - - for (i = 0; i < tile.features.length; i++) { - var feature = tile.features[i], - geom = feature.geometry, - type = feature.type; - - feature.geometry = []; - - if (type === 1) { - for (j = 0; j < geom.length; j += 2) { - feature.geometry.push(transformPoint(geom[j], geom[j + 1], extent, z2, tx, ty)); - } - } else { - for (j = 0; j < geom.length; j++) { - var ring = []; - for (k = 0; k < geom[j].length; k += 2) { - ring.push(transformPoint(geom[j][k], geom[j][k + 1], extent, z2, tx, ty)); - } - feature.geometry.push(ring); - } - } - } - - tile.transformed = true; - - return tile; -} - -function transformPoint(x, y, extent, z2, tx, ty) { - return [ - Math.round(extent * (x * z2 - tx)), - Math.round(extent * (y * z2 - ty))]; -} - -function createTile(features, z, tx, ty, options) { - var tolerance = z === options.maxZoom ? 0 : options.tolerance / ((1 << z) * options.extent); - var tile = { - features: [], - numPoints: 0, - numSimplified: 0, - numFeatures: 0, - source: null, - x: tx, - y: ty, - z: z, - transformed: false, - minX: 2, - minY: 1, - maxX: -1, - maxY: 0 - }; - for (var i = 0; i < features.length; i++) { - tile.numFeatures++; - addFeature(tile, features[i], tolerance, options); - - var minX = features[i].minX; - var minY = features[i].minY; - var maxX = features[i].maxX; - var maxY = features[i].maxY; - - if (minX < tile.minX) tile.minX = minX; - if (minY < tile.minY) tile.minY = minY; - if (maxX > tile.maxX) tile.maxX = maxX; - if (maxY > tile.maxY) tile.maxY = maxY; - } - return tile; -} - -function addFeature(tile, feature, tolerance, options) { - - var geom = feature.geometry, - type = feature.type, - simplified = []; - - if (type === 'Point' || type === 'MultiPoint') { - for (var i = 0; i < geom.length; i += 3) { - simplified.push(geom[i]); - simplified.push(geom[i + 1]); - tile.numPoints++; - tile.numSimplified++; - } - - } else if (type === 'LineString') { - addLine(simplified, geom, tile, tolerance, false, false); - - } else if (type === 'MultiLineString' || type === 'Polygon') { - for (i = 0; i < geom.length; i++) { - addLine(simplified, geom[i], tile, tolerance, type === 'Polygon', i === 0); - } - - } else if (type === 'MultiPolygon') { - - for (var k = 0; k < geom.length; k++) { - var polygon = geom[k]; - for (i = 0; i < polygon.length; i++) { - addLine(simplified, polygon[i], tile, tolerance, true, i === 0); - } - } - } - - if (simplified.length) { - var tags = feature.tags || null; - if (type === 'LineString' && options.lineMetrics) { - tags = {}; - for (var key in feature.tags) tags[key] = feature.tags[key]; - tags['mapbox_clip_start'] = geom.start / geom.size; - tags['mapbox_clip_end'] = geom.end / geom.size; - } - var tileFeature = { - geometry: simplified, - type: type === 'Polygon' || type === 'MultiPolygon' ? 3 : - type === 'LineString' || type === 'MultiLineString' ? 2 : 1, - tags: tags - }; - if (feature.id !== null) { - tileFeature.id = feature.id; - } - tile.features.push(tileFeature); - } -} - -function addLine(result, geom, tile, tolerance, isPolygon, isOuter) { - var sqTolerance = tolerance * tolerance; - - if (tolerance > 0 && (geom.size < (isPolygon ? sqTolerance : tolerance))) { - tile.numPoints += geom.length / 3; - return; - } - - var ring = []; - - for (var i = 0; i < geom.length; i += 3) { - if (tolerance === 0 || geom[i + 2] > sqTolerance) { - tile.numSimplified++; - ring.push(geom[i]); - ring.push(geom[i + 1]); - } - tile.numPoints++; - } - - if (isPolygon) rewind(ring, isOuter); - - result.push(ring); -} - -function rewind(ring, clockwise) { - var area = 0; - for (var i = 0, len = ring.length, j = len - 2; i < len; j = i, i += 2) { - area += (ring[i] - ring[j]) * (ring[i + 1] + ring[j + 1]); - } - if (area > 0 === clockwise) { - for (i = 0, len = ring.length; i < len / 2; i += 2) { - var x = ring[i]; - var y = ring[i + 1]; - ring[i] = ring[len - 2 - i]; - ring[i + 1] = ring[len - 1 - i]; - ring[len - 2 - i] = x; - ring[len - 1 - i] = y; - } - } -} - -function geojsonvt(data, options) { - return new GeoJSONVT(data, options); -} - -function GeoJSONVT(data, options) { - options = this.options = extend(Object.create(this.options), options); - - var debug = options.debug; - - if (debug) console.time('preprocess data'); - - if (options.maxZoom < 0 || options.maxZoom > 24) throw new Error('maxZoom should be in the 0-24 range'); - if (options.promoteId && options.generateId) throw new Error('promoteId and generateId cannot be used together.'); - - var features = convert(data, options); - - this.tiles = {}; - this.tileCoords = []; - - if (debug) { - console.timeEnd('preprocess data'); - console.log('index: maxZoom: %d, maxPoints: %d', options.indexMaxZoom, options.indexMaxPoints); - console.time('generate tiles'); - this.stats = {}; - this.total = 0; - } - - features = wrap(features, options); - - // start slicing from the top tile down - if (features.length) this.splitTile(features, 0, 0, 0); - - if (debug) { - if (features.length) console.log('features: %d, points: %d', this.tiles[0].numFeatures, this.tiles[0].numPoints); - console.timeEnd('generate tiles'); - console.log('tiles generated:', this.total, JSON.stringify(this.stats)); - } -} - -GeoJSONVT.prototype.options = { - maxZoom: 14, // max zoom to preserve detail on - indexMaxZoom: 5, // max zoom in the tile index - indexMaxPoints: 100000, // max number of points per tile in the tile index - tolerance: 3, // simplification tolerance (higher means simpler) - extent: 4096, // tile extent - buffer: 64, // tile buffer on each side - lineMetrics: false, // whether to calculate line metrics - promoteId: null, // name of a feature property to be promoted to feature.id - generateId: false, // whether to generate feature ids. Cannot be used with promoteId - debug: 0 // logging level (0, 1 or 2) -}; - -GeoJSONVT.prototype.splitTile = function (features, z, x, y, cz, cx, cy) { - - var stack = [features, z, x, y], - options = this.options, - debug = options.debug; - - // avoid recursion by using a processing queue - while (stack.length) { - y = stack.pop(); - x = stack.pop(); - z = stack.pop(); - features = stack.pop(); - - var z2 = 1 << z, - id = toID(z, x, y), - tile = this.tiles[id]; - - if (!tile) { - if (debug > 1) console.time('creation'); - - tile = this.tiles[id] = createTile(features, z, x, y, options); - this.tileCoords.push({z: z, x: x, y: y}); - - if (debug) { - if (debug > 1) { - console.log('tile z%d-%d-%d (features: %d, points: %d, simplified: %d)', - z, x, y, tile.numFeatures, tile.numPoints, tile.numSimplified); - console.timeEnd('creation'); - } - var key = 'z' + z; - this.stats[key] = (this.stats[key] || 0) + 1; - this.total++; - } - } - - // save reference to original geometry in tile so that we can drill down later if we stop now - tile.source = features; - - // if it's the first-pass tiling - if (!cz) { - // stop tiling if we reached max zoom, or if the tile is too simple - if (z === options.indexMaxZoom || tile.numPoints <= options.indexMaxPoints) continue; - - // if a drilldown to a specific tile - } else { - // stop tiling if we reached base zoom or our target tile zoom - if (z === options.maxZoom || z === cz) continue; - - // stop tiling if it's not an ancestor of the target tile - var m = 1 << (cz - z); - if (x !== Math.floor(cx / m) || y !== Math.floor(cy / m)) continue; - } - - // if we slice further down, no need to keep source geometry - tile.source = null; - - if (features.length === 0) continue; - - if (debug > 1) console.time('clipping'); - - // values we'll use for clipping - var k1 = 0.5 * options.buffer / options.extent, - k2 = 0.5 - k1, - k3 = 0.5 + k1, - k4 = 1 + k1, - tl, bl, tr, br, left, right; - - tl = bl = tr = br = null; - - left = clip(features, z2, x - k1, x + k3, 0, tile.minX, tile.maxX, options); - right = clip(features, z2, x + k2, x + k4, 0, tile.minX, tile.maxX, options); - features = null; - - if (left) { - tl = clip(left, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options); - bl = clip(left, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options); - left = null; - } - - if (right) { - tr = clip(right, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options); - br = clip(right, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options); - right = null; - } - - if (debug > 1) console.timeEnd('clipping'); - - stack.push(tl || [], z + 1, x * 2, y * 2); - stack.push(bl || [], z + 1, x * 2, y * 2 + 1); - stack.push(tr || [], z + 1, x * 2 + 1, y * 2); - stack.push(br || [], z + 1, x * 2 + 1, y * 2 + 1); - } -}; - -GeoJSONVT.prototype.getTile = function (z, x, y) { - var options = this.options, - extent = options.extent, - debug = options.debug; - - if (z < 0 || z > 24) return null; - - var z2 = 1 << z; - x = ((x % z2) + z2) % z2; // wrap tile x coordinate - - var id = toID(z, x, y); - if (this.tiles[id]) return transformTile(this.tiles[id], extent); - - if (debug > 1) console.log('drilling down to z%d-%d-%d', z, x, y); - - var z0 = z, - x0 = x, - y0 = y, - parent; - - while (!parent && z0 > 0) { - z0--; - x0 = Math.floor(x0 / 2); - y0 = Math.floor(y0 / 2); - parent = this.tiles[toID(z0, x0, y0)]; - } - - if (!parent || !parent.source) return null; - - // if we found a parent tile containing the original geometry, we can drill down from it - if (debug > 1) console.log('found parent tile z%d-%d-%d', z0, x0, y0); - - if (debug > 1) console.time('drilling down'); - this.splitTile(parent.source, z0, x0, y0, z, x, y); - if (debug > 1) console.timeEnd('drilling down'); - - return this.tiles[id] ? transformTile(this.tiles[id], extent) : null; -}; - -function toID(z, x, y) { - return (((1 << z) * y + x) * 32) + z; -} - -function extend(dest, src) { - for (var i in src) dest[i] = src[i]; - return dest; -} - -return geojsonvt; - -}))); - -},{}],227:[function(require,module,exports){ -'use strict' -var Buffer = require('safe-buffer').Buffer -var Transform = require('stream').Transform -var inherits = require('inherits') - -function throwIfNotStringOrBuffer (val, prefix) { - if (!Buffer.isBuffer(val) && typeof val !== 'string') { - throw new TypeError(prefix + ' must be a string or a buffer') - } -} - -function HashBase (blockSize) { - Transform.call(this) - - this._block = Buffer.allocUnsafe(blockSize) - this._blockSize = blockSize - this._blockOffset = 0 - this._length = [0, 0, 0, 0] - - this._finalized = false -} - -inherits(HashBase, Transform) - -HashBase.prototype._transform = function (chunk, encoding, callback) { - var error = null - try { - this.update(chunk, encoding) - } catch (err) { - error = err - } - - callback(error) -} - -HashBase.prototype._flush = function (callback) { - var error = null - try { - this.push(this.digest()) - } catch (err) { - error = err - } - - callback(error) -} - -HashBase.prototype.update = function (data, encoding) { - throwIfNotStringOrBuffer(data, 'Data') - if (this._finalized) throw new Error('Digest already called') - if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding) - - // consume data - var block = this._block - var offset = 0 - while (this._blockOffset + data.length - offset >= this._blockSize) { - for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++] - this._update() - this._blockOffset = 0 - } - while (offset < data.length) block[this._blockOffset++] = data[offset++] - - // update length - for (var j = 0, carry = data.length * 8; carry > 0; ++j) { - this._length[j] += carry - carry = (this._length[j] / 0x0100000000) | 0 - if (carry > 0) this._length[j] -= 0x0100000000 * carry - } - - return this -} - -HashBase.prototype._update = function () { - throw new Error('_update is not implemented') -} - -HashBase.prototype.digest = function (encoding) { - if (this._finalized) throw new Error('Digest already called') - this._finalized = true - - var digest = this._digest() - if (encoding !== undefined) digest = digest.toString(encoding) - - // reset state - this._block.fill(0) - this._blockOffset = 0 - for (var i = 0; i < 4; ++i) this._length[i] = 0 - - return digest -} - -HashBase.prototype._digest = function () { - throw new Error('_digest is not implemented') -} - -module.exports = HashBase - -},{"inherits":262,"safe-buffer":318,"stream":328}],228:[function(require,module,exports){ -var hash = exports; - -hash.utils = require('./hash/utils'); -hash.common = require('./hash/common'); -hash.sha = require('./hash/sha'); -hash.ripemd = require('./hash/ripemd'); -hash.hmac = require('./hash/hmac'); - -// Proxy hash functions to the main object -hash.sha1 = hash.sha.sha1; -hash.sha256 = hash.sha.sha256; -hash.sha224 = hash.sha.sha224; -hash.sha384 = hash.sha.sha384; -hash.sha512 = hash.sha.sha512; -hash.ripemd160 = hash.ripemd.ripemd160; - -},{"./hash/common":229,"./hash/hmac":230,"./hash/ripemd":231,"./hash/sha":232,"./hash/utils":239}],229:[function(require,module,exports){ -'use strict'; - -var utils = require('./utils'); -var assert = require('minimalistic-assert'); - -function BlockHash() { - this.pending = null; - this.pendingTotal = 0; - this.blockSize = this.constructor.blockSize; - this.outSize = this.constructor.outSize; - this.hmacStrength = this.constructor.hmacStrength; - this.padLength = this.constructor.padLength / 8; - this.endian = 'big'; - - this._delta8 = this.blockSize / 8; - this._delta32 = this.blockSize / 32; -} -exports.BlockHash = BlockHash; - -BlockHash.prototype.update = function update(msg, enc) { - // Convert message to array, pad it, and join into 32bit blocks - msg = utils.toArray(msg, enc); - if (!this.pending) - this.pending = msg; - else - this.pending = this.pending.concat(msg); - this.pendingTotal += msg.length; - - // Enough data, try updating - if (this.pending.length >= this._delta8) { - msg = this.pending; - - // Process pending data in blocks - var r = msg.length % this._delta8; - this.pending = msg.slice(msg.length - r, msg.length); - if (this.pending.length === 0) - this.pending = null; - - msg = utils.join32(msg, 0, msg.length - r, this.endian); - for (var i = 0; i < msg.length; i += this._delta32) - this._update(msg, i, i + this._delta32); - } - - return this; -}; - -BlockHash.prototype.digest = function digest(enc) { - this.update(this._pad()); - assert(this.pending === null); - - return this._digest(enc); -}; - -BlockHash.prototype._pad = function pad() { - var len = this.pendingTotal; - var bytes = this._delta8; - var k = bytes - ((len + this.padLength) % bytes); - var res = new Array(k + this.padLength); - res[0] = 0x80; - for (var i = 1; i < k; i++) - res[i] = 0; - - // Append length - len <<= 3; - if (this.endian === 'big') { - for (var t = 8; t < this.padLength; t++) - res[i++] = 0; - - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - res[i++] = (len >>> 24) & 0xff; - res[i++] = (len >>> 16) & 0xff; - res[i++] = (len >>> 8) & 0xff; - res[i++] = len & 0xff; - } else { - res[i++] = len & 0xff; - res[i++] = (len >>> 8) & 0xff; - res[i++] = (len >>> 16) & 0xff; - res[i++] = (len >>> 24) & 0xff; - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - res[i++] = 0; - - for (t = 8; t < this.padLength; t++) - res[i++] = 0; - } - - return res; -}; - -},{"./utils":239,"minimalistic-assert":268}],230:[function(require,module,exports){ -'use strict'; - -var utils = require('./utils'); -var assert = require('minimalistic-assert'); - -function Hmac(hash, key, enc) { - if (!(this instanceof Hmac)) - return new Hmac(hash, key, enc); - this.Hash = hash; - this.blockSize = hash.blockSize / 8; - this.outSize = hash.outSize / 8; - this.inner = null; - this.outer = null; - - this._init(utils.toArray(key, enc)); -} -module.exports = Hmac; - -Hmac.prototype._init = function init(key) { - // Shorten key, if needed - if (key.length > this.blockSize) - key = new this.Hash().update(key).digest(); - assert(key.length <= this.blockSize); - - // Add padding to key - for (var i = key.length; i < this.blockSize; i++) - key.push(0); - - for (i = 0; i < key.length; i++) - key[i] ^= 0x36; - this.inner = new this.Hash().update(key); - - // 0x36 ^ 0x5c = 0x6a - for (i = 0; i < key.length; i++) - key[i] ^= 0x6a; - this.outer = new this.Hash().update(key); -}; - -Hmac.prototype.update = function update(msg, enc) { - this.inner.update(msg, enc); - return this; -}; - -Hmac.prototype.digest = function digest(enc) { - this.outer.update(this.inner.digest()); - return this.outer.digest(enc); -}; - -},{"./utils":239,"minimalistic-assert":268}],231:[function(require,module,exports){ -'use strict'; - -var utils = require('./utils'); -var common = require('./common'); - -var rotl32 = utils.rotl32; -var sum32 = utils.sum32; -var sum32_3 = utils.sum32_3; -var sum32_4 = utils.sum32_4; -var BlockHash = common.BlockHash; - -function RIPEMD160() { - if (!(this instanceof RIPEMD160)) - return new RIPEMD160(); - - BlockHash.call(this); - - this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ]; - this.endian = 'little'; -} -utils.inherits(RIPEMD160, BlockHash); -exports.ripemd160 = RIPEMD160; - -RIPEMD160.blockSize = 512; -RIPEMD160.outSize = 160; -RIPEMD160.hmacStrength = 192; -RIPEMD160.padLength = 64; - -RIPEMD160.prototype._update = function update(msg, start) { - var A = this.h[0]; - var B = this.h[1]; - var C = this.h[2]; - var D = this.h[3]; - var E = this.h[4]; - var Ah = A; - var Bh = B; - var Ch = C; - var Dh = D; - var Eh = E; - for (var j = 0; j < 80; j++) { - var T = sum32( - rotl32( - sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), - s[j]), - E); - A = E; - E = D; - D = rotl32(C, 10); - C = B; - B = T; - T = sum32( - rotl32( - sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), - sh[j]), - Eh); - Ah = Eh; - Eh = Dh; - Dh = rotl32(Ch, 10); - Ch = Bh; - Bh = T; - } - T = sum32_3(this.h[1], C, Dh); - this.h[1] = sum32_3(this.h[2], D, Eh); - this.h[2] = sum32_3(this.h[3], E, Ah); - this.h[3] = sum32_3(this.h[4], A, Bh); - this.h[4] = sum32_3(this.h[0], B, Ch); - this.h[0] = T; -}; - -RIPEMD160.prototype._digest = function digest(enc) { - if (enc === 'hex') - return utils.toHex32(this.h, 'little'); - else - return utils.split32(this.h, 'little'); -}; - -function f(j, x, y, z) { - if (j <= 15) - return x ^ y ^ z; - else if (j <= 31) - return (x & y) | ((~x) & z); - else if (j <= 47) - return (x | (~y)) ^ z; - else if (j <= 63) - return (x & z) | (y & (~z)); - else - return x ^ (y | (~z)); -} - -function K(j) { - if (j <= 15) - return 0x00000000; - else if (j <= 31) - return 0x5a827999; - else if (j <= 47) - return 0x6ed9eba1; - else if (j <= 63) - return 0x8f1bbcdc; - else - return 0xa953fd4e; -} - -function Kh(j) { - if (j <= 15) - return 0x50a28be6; - else if (j <= 31) - return 0x5c4dd124; - else if (j <= 47) - return 0x6d703ef3; - else if (j <= 63) - return 0x7a6d76e9; - else - return 0x00000000; -} - -var r = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 -]; - -var rh = [ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 -]; - -var s = [ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 -]; - -var sh = [ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 -]; - -},{"./common":229,"./utils":239}],232:[function(require,module,exports){ -'use strict'; - -exports.sha1 = require('./sha/1'); -exports.sha224 = require('./sha/224'); -exports.sha256 = require('./sha/256'); -exports.sha384 = require('./sha/384'); -exports.sha512 = require('./sha/512'); - -},{"./sha/1":233,"./sha/224":234,"./sha/256":235,"./sha/384":236,"./sha/512":237}],233:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var common = require('../common'); -var shaCommon = require('./common'); - -var rotl32 = utils.rotl32; -var sum32 = utils.sum32; -var sum32_5 = utils.sum32_5; -var ft_1 = shaCommon.ft_1; -var BlockHash = common.BlockHash; - -var sha1_K = [ - 0x5A827999, 0x6ED9EBA1, - 0x8F1BBCDC, 0xCA62C1D6 -]; - -function SHA1() { - if (!(this instanceof SHA1)) - return new SHA1(); - - BlockHash.call(this); - this.h = [ - 0x67452301, 0xefcdab89, 0x98badcfe, - 0x10325476, 0xc3d2e1f0 ]; - this.W = new Array(80); -} - -utils.inherits(SHA1, BlockHash); -module.exports = SHA1; - -SHA1.blockSize = 512; -SHA1.outSize = 160; -SHA1.hmacStrength = 80; -SHA1.padLength = 64; - -SHA1.prototype._update = function _update(msg, start) { - var W = this.W; - - for (var i = 0; i < 16; i++) - W[i] = msg[start + i]; - - for(; i < W.length; i++) - W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1); - - var a = this.h[0]; - var b = this.h[1]; - var c = this.h[2]; - var d = this.h[3]; - var e = this.h[4]; - - for (i = 0; i < W.length; i++) { - var s = ~~(i / 20); - var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]); - e = d; - d = c; - c = rotl32(b, 30); - b = a; - a = t; - } - - this.h[0] = sum32(this.h[0], a); - this.h[1] = sum32(this.h[1], b); - this.h[2] = sum32(this.h[2], c); - this.h[3] = sum32(this.h[3], d); - this.h[4] = sum32(this.h[4], e); -}; - -SHA1.prototype._digest = function digest(enc) { - if (enc === 'hex') - return utils.toHex32(this.h, 'big'); - else - return utils.split32(this.h, 'big'); -}; - -},{"../common":229,"../utils":239,"./common":238}],234:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var SHA256 = require('./256'); - -function SHA224() { - if (!(this instanceof SHA224)) - return new SHA224(); - - SHA256.call(this); - this.h = [ - 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, - 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ]; -} -utils.inherits(SHA224, SHA256); -module.exports = SHA224; - -SHA224.blockSize = 512; -SHA224.outSize = 224; -SHA224.hmacStrength = 192; -SHA224.padLength = 64; - -SHA224.prototype._digest = function digest(enc) { - // Just truncate output - if (enc === 'hex') - return utils.toHex32(this.h.slice(0, 7), 'big'); - else - return utils.split32(this.h.slice(0, 7), 'big'); -}; - - -},{"../utils":239,"./256":235}],235:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var common = require('../common'); -var shaCommon = require('./common'); -var assert = require('minimalistic-assert'); - -var sum32 = utils.sum32; -var sum32_4 = utils.sum32_4; -var sum32_5 = utils.sum32_5; -var ch32 = shaCommon.ch32; -var maj32 = shaCommon.maj32; -var s0_256 = shaCommon.s0_256; -var s1_256 = shaCommon.s1_256; -var g0_256 = shaCommon.g0_256; -var g1_256 = shaCommon.g1_256; - -var BlockHash = common.BlockHash; - -var sha256_K = [ - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, - 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, - 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, - 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, - 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, - 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, - 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, - 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, - 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 -]; - -function SHA256() { - if (!(this instanceof SHA256)) - return new SHA256(); - - BlockHash.call(this); - this.h = [ - 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, - 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 - ]; - this.k = sha256_K; - this.W = new Array(64); -} -utils.inherits(SHA256, BlockHash); -module.exports = SHA256; - -SHA256.blockSize = 512; -SHA256.outSize = 256; -SHA256.hmacStrength = 192; -SHA256.padLength = 64; - -SHA256.prototype._update = function _update(msg, start) { - var W = this.W; - - for (var i = 0; i < 16; i++) - W[i] = msg[start + i]; - for (; i < W.length; i++) - W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]); - - var a = this.h[0]; - var b = this.h[1]; - var c = this.h[2]; - var d = this.h[3]; - var e = this.h[4]; - var f = this.h[5]; - var g = this.h[6]; - var h = this.h[7]; - - assert(this.k.length === W.length); - for (i = 0; i < W.length; i++) { - var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]); - var T2 = sum32(s0_256(a), maj32(a, b, c)); - h = g; - g = f; - f = e; - e = sum32(d, T1); - d = c; - c = b; - b = a; - a = sum32(T1, T2); - } - - this.h[0] = sum32(this.h[0], a); - this.h[1] = sum32(this.h[1], b); - this.h[2] = sum32(this.h[2], c); - this.h[3] = sum32(this.h[3], d); - this.h[4] = sum32(this.h[4], e); - this.h[5] = sum32(this.h[5], f); - this.h[6] = sum32(this.h[6], g); - this.h[7] = sum32(this.h[7], h); -}; - -SHA256.prototype._digest = function digest(enc) { - if (enc === 'hex') - return utils.toHex32(this.h, 'big'); - else - return utils.split32(this.h, 'big'); -}; - -},{"../common":229,"../utils":239,"./common":238,"minimalistic-assert":268}],236:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); - -var SHA512 = require('./512'); - -function SHA384() { - if (!(this instanceof SHA384)) - return new SHA384(); - - SHA512.call(this); - this.h = [ - 0xcbbb9d5d, 0xc1059ed8, - 0x629a292a, 0x367cd507, - 0x9159015a, 0x3070dd17, - 0x152fecd8, 0xf70e5939, - 0x67332667, 0xffc00b31, - 0x8eb44a87, 0x68581511, - 0xdb0c2e0d, 0x64f98fa7, - 0x47b5481d, 0xbefa4fa4 ]; -} -utils.inherits(SHA384, SHA512); -module.exports = SHA384; - -SHA384.blockSize = 1024; -SHA384.outSize = 384; -SHA384.hmacStrength = 192; -SHA384.padLength = 128; - -SHA384.prototype._digest = function digest(enc) { - if (enc === 'hex') - return utils.toHex32(this.h.slice(0, 12), 'big'); - else - return utils.split32(this.h.slice(0, 12), 'big'); -}; - -},{"../utils":239,"./512":237}],237:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var common = require('../common'); -var assert = require('minimalistic-assert'); - -var rotr64_hi = utils.rotr64_hi; -var rotr64_lo = utils.rotr64_lo; -var shr64_hi = utils.shr64_hi; -var shr64_lo = utils.shr64_lo; -var sum64 = utils.sum64; -var sum64_hi = utils.sum64_hi; -var sum64_lo = utils.sum64_lo; -var sum64_4_hi = utils.sum64_4_hi; -var sum64_4_lo = utils.sum64_4_lo; -var sum64_5_hi = utils.sum64_5_hi; -var sum64_5_lo = utils.sum64_5_lo; - -var BlockHash = common.BlockHash; - -var sha512_K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -]; - -function SHA512() { - if (!(this instanceof SHA512)) - return new SHA512(); - - BlockHash.call(this); - this.h = [ - 0x6a09e667, 0xf3bcc908, - 0xbb67ae85, 0x84caa73b, - 0x3c6ef372, 0xfe94f82b, - 0xa54ff53a, 0x5f1d36f1, - 0x510e527f, 0xade682d1, - 0x9b05688c, 0x2b3e6c1f, - 0x1f83d9ab, 0xfb41bd6b, - 0x5be0cd19, 0x137e2179 ]; - this.k = sha512_K; - this.W = new Array(160); -} -utils.inherits(SHA512, BlockHash); -module.exports = SHA512; - -SHA512.blockSize = 1024; -SHA512.outSize = 512; -SHA512.hmacStrength = 192; -SHA512.padLength = 128; - -SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) { - var W = this.W; - - // 32 x 32bit words - for (var i = 0; i < 32; i++) - W[i] = msg[start + i]; - for (; i < W.length; i += 2) { - var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2 - var c0_lo = g1_512_lo(W[i - 4], W[i - 3]); - var c1_hi = W[i - 14]; // i - 7 - var c1_lo = W[i - 13]; - var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15 - var c2_lo = g0_512_lo(W[i - 30], W[i - 29]); - var c3_hi = W[i - 32]; // i - 16 - var c3_lo = W[i - 31]; - - W[i] = sum64_4_hi( - c0_hi, c0_lo, - c1_hi, c1_lo, - c2_hi, c2_lo, - c3_hi, c3_lo); - W[i + 1] = sum64_4_lo( - c0_hi, c0_lo, - c1_hi, c1_lo, - c2_hi, c2_lo, - c3_hi, c3_lo); - } -}; - -SHA512.prototype._update = function _update(msg, start) { - this._prepareBlock(msg, start); - - var W = this.W; - - var ah = this.h[0]; - var al = this.h[1]; - var bh = this.h[2]; - var bl = this.h[3]; - var ch = this.h[4]; - var cl = this.h[5]; - var dh = this.h[6]; - var dl = this.h[7]; - var eh = this.h[8]; - var el = this.h[9]; - var fh = this.h[10]; - var fl = this.h[11]; - var gh = this.h[12]; - var gl = this.h[13]; - var hh = this.h[14]; - var hl = this.h[15]; - - assert(this.k.length === W.length); - for (var i = 0; i < W.length; i += 2) { - var c0_hi = hh; - var c0_lo = hl; - var c1_hi = s1_512_hi(eh, el); - var c1_lo = s1_512_lo(eh, el); - var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl); - var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl); - var c3_hi = this.k[i]; - var c3_lo = this.k[i + 1]; - var c4_hi = W[i]; - var c4_lo = W[i + 1]; - - var T1_hi = sum64_5_hi( - c0_hi, c0_lo, - c1_hi, c1_lo, - c2_hi, c2_lo, - c3_hi, c3_lo, - c4_hi, c4_lo); - var T1_lo = sum64_5_lo( - c0_hi, c0_lo, - c1_hi, c1_lo, - c2_hi, c2_lo, - c3_hi, c3_lo, - c4_hi, c4_lo); - - c0_hi = s0_512_hi(ah, al); - c0_lo = s0_512_lo(ah, al); - c1_hi = maj64_hi(ah, al, bh, bl, ch, cl); - c1_lo = maj64_lo(ah, al, bh, bl, ch, cl); - - var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo); - var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo); - - hh = gh; - hl = gl; - - gh = fh; - gl = fl; - - fh = eh; - fl = el; - - eh = sum64_hi(dh, dl, T1_hi, T1_lo); - el = sum64_lo(dl, dl, T1_hi, T1_lo); - - dh = ch; - dl = cl; - - ch = bh; - cl = bl; - - bh = ah; - bl = al; - - ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo); - al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo); - } - - sum64(this.h, 0, ah, al); - sum64(this.h, 2, bh, bl); - sum64(this.h, 4, ch, cl); - sum64(this.h, 6, dh, dl); - sum64(this.h, 8, eh, el); - sum64(this.h, 10, fh, fl); - sum64(this.h, 12, gh, gl); - sum64(this.h, 14, hh, hl); -}; - -SHA512.prototype._digest = function digest(enc) { - if (enc === 'hex') - return utils.toHex32(this.h, 'big'); - else - return utils.split32(this.h, 'big'); -}; - -function ch64_hi(xh, xl, yh, yl, zh) { - var r = (xh & yh) ^ ((~xh) & zh); - if (r < 0) - r += 0x100000000; - return r; -} - -function ch64_lo(xh, xl, yh, yl, zh, zl) { - var r = (xl & yl) ^ ((~xl) & zl); - if (r < 0) - r += 0x100000000; - return r; -} - -function maj64_hi(xh, xl, yh, yl, zh) { - var r = (xh & yh) ^ (xh & zh) ^ (yh & zh); - if (r < 0) - r += 0x100000000; - return r; -} - -function maj64_lo(xh, xl, yh, yl, zh, zl) { - var r = (xl & yl) ^ (xl & zl) ^ (yl & zl); - if (r < 0) - r += 0x100000000; - return r; -} - -function s0_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 28); - var c1_hi = rotr64_hi(xl, xh, 2); // 34 - var c2_hi = rotr64_hi(xl, xh, 7); // 39 - - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) - r += 0x100000000; - return r; -} - -function s0_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 28); - var c1_lo = rotr64_lo(xl, xh, 2); // 34 - var c2_lo = rotr64_lo(xl, xh, 7); // 39 - - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) - r += 0x100000000; - return r; -} - -function s1_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 14); - var c1_hi = rotr64_hi(xh, xl, 18); - var c2_hi = rotr64_hi(xl, xh, 9); // 41 - - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) - r += 0x100000000; - return r; -} - -function s1_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 14); - var c1_lo = rotr64_lo(xh, xl, 18); - var c2_lo = rotr64_lo(xl, xh, 9); // 41 - - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) - r += 0x100000000; - return r; -} - -function g0_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 1); - var c1_hi = rotr64_hi(xh, xl, 8); - var c2_hi = shr64_hi(xh, xl, 7); - - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) - r += 0x100000000; - return r; -} - -function g0_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 1); - var c1_lo = rotr64_lo(xh, xl, 8); - var c2_lo = shr64_lo(xh, xl, 7); - - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) - r += 0x100000000; - return r; -} - -function g1_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 19); - var c1_hi = rotr64_hi(xl, xh, 29); // 61 - var c2_hi = shr64_hi(xh, xl, 6); - - var r = c0_hi ^ c1_hi ^ c2_hi; - if (r < 0) - r += 0x100000000; - return r; -} - -function g1_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 19); - var c1_lo = rotr64_lo(xl, xh, 29); // 61 - var c2_lo = shr64_lo(xh, xl, 6); - - var r = c0_lo ^ c1_lo ^ c2_lo; - if (r < 0) - r += 0x100000000; - return r; -} - -},{"../common":229,"../utils":239,"minimalistic-assert":268}],238:[function(require,module,exports){ -'use strict'; - -var utils = require('../utils'); -var rotr32 = utils.rotr32; - -function ft_1(s, x, y, z) { - if (s === 0) - return ch32(x, y, z); - if (s === 1 || s === 3) - return p32(x, y, z); - if (s === 2) - return maj32(x, y, z); -} -exports.ft_1 = ft_1; - -function ch32(x, y, z) { - return (x & y) ^ ((~x) & z); -} -exports.ch32 = ch32; - -function maj32(x, y, z) { - return (x & y) ^ (x & z) ^ (y & z); -} -exports.maj32 = maj32; - -function p32(x, y, z) { - return x ^ y ^ z; -} -exports.p32 = p32; - -function s0_256(x) { - return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22); -} -exports.s0_256 = s0_256; - -function s1_256(x) { - return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25); -} -exports.s1_256 = s1_256; - -function g0_256(x) { - return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3); -} -exports.g0_256 = g0_256; - -function g1_256(x) { - return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10); -} -exports.g1_256 = g1_256; - -},{"../utils":239}],239:[function(require,module,exports){ -'use strict'; - -var assert = require('minimalistic-assert'); -var inherits = require('inherits'); - -exports.inherits = inherits; - -function isSurrogatePair(msg, i) { - if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) { - return false; - } - if (i < 0 || i + 1 >= msg.length) { - return false; - } - return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00; -} - -function toArray(msg, enc) { - if (Array.isArray(msg)) - return msg.slice(); - if (!msg) - return []; - var res = []; - if (typeof msg === 'string') { - if (!enc) { - // Inspired by stringToUtf8ByteArray() in closure-library by Google - // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143 - // Apache License 2.0 - // https://github.com/google/closure-library/blob/master/LICENSE - var p = 0; - for (var i = 0; i < msg.length; i++) { - var c = msg.charCodeAt(i); - if (c < 128) { - res[p++] = c; - } else if (c < 2048) { - res[p++] = (c >> 6) | 192; - res[p++] = (c & 63) | 128; - } else if (isSurrogatePair(msg, i)) { - c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF); - res[p++] = (c >> 18) | 240; - res[p++] = ((c >> 12) & 63) | 128; - res[p++] = ((c >> 6) & 63) | 128; - res[p++] = (c & 63) | 128; - } else { - res[p++] = (c >> 12) | 224; - res[p++] = ((c >> 6) & 63) | 128; - res[p++] = (c & 63) | 128; - } - } - } else if (enc === 'hex') { - msg = msg.replace(/[^a-z0-9]+/ig, ''); - if (msg.length % 2 !== 0) - msg = '0' + msg; - for (i = 0; i < msg.length; i += 2) - res.push(parseInt(msg[i] + msg[i + 1], 16)); - } - } else { - for (i = 0; i < msg.length; i++) - res[i] = msg[i] | 0; - } - return res; -} -exports.toArray = toArray; - -function toHex(msg) { - var res = ''; - for (var i = 0; i < msg.length; i++) - res += zero2(msg[i].toString(16)); - return res; -} -exports.toHex = toHex; - -function htonl(w) { - var res = (w >>> 24) | - ((w >>> 8) & 0xff00) | - ((w << 8) & 0xff0000) | - ((w & 0xff) << 24); - return res >>> 0; -} -exports.htonl = htonl; - -function toHex32(msg, endian) { - var res = ''; - for (var i = 0; i < msg.length; i++) { - var w = msg[i]; - if (endian === 'little') - w = htonl(w); - res += zero8(w.toString(16)); - } - return res; -} -exports.toHex32 = toHex32; - -function zero2(word) { - if (word.length === 1) - return '0' + word; - else - return word; -} -exports.zero2 = zero2; - -function zero8(word) { - if (word.length === 7) - return '0' + word; - else if (word.length === 6) - return '00' + word; - else if (word.length === 5) - return '000' + word; - else if (word.length === 4) - return '0000' + word; - else if (word.length === 3) - return '00000' + word; - else if (word.length === 2) - return '000000' + word; - else if (word.length === 1) - return '0000000' + word; - else - return word; -} -exports.zero8 = zero8; - -function join32(msg, start, end, endian) { - var len = end - start; - assert(len % 4 === 0); - var res = new Array(len / 4); - for (var i = 0, k = start; i < res.length; i++, k += 4) { - var w; - if (endian === 'big') - w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3]; - else - w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k]; - res[i] = w >>> 0; - } - return res; -} -exports.join32 = join32; - -function split32(msg, endian) { - var res = new Array(msg.length * 4); - for (var i = 0, k = 0; i < msg.length; i++, k += 4) { - var m = msg[i]; - if (endian === 'big') { - res[k] = m >>> 24; - res[k + 1] = (m >>> 16) & 0xff; - res[k + 2] = (m >>> 8) & 0xff; - res[k + 3] = m & 0xff; - } else { - res[k + 3] = m >>> 24; - res[k + 2] = (m >>> 16) & 0xff; - res[k + 1] = (m >>> 8) & 0xff; - res[k] = m & 0xff; - } - } - return res; -} -exports.split32 = split32; - -function rotr32(w, b) { - return (w >>> b) | (w << (32 - b)); -} -exports.rotr32 = rotr32; - -function rotl32(w, b) { - return (w << b) | (w >>> (32 - b)); -} -exports.rotl32 = rotl32; - -function sum32(a, b) { - return (a + b) >>> 0; -} -exports.sum32 = sum32; - -function sum32_3(a, b, c) { - return (a + b + c) >>> 0; -} -exports.sum32_3 = sum32_3; - -function sum32_4(a, b, c, d) { - return (a + b + c + d) >>> 0; -} -exports.sum32_4 = sum32_4; - -function sum32_5(a, b, c, d, e) { - return (a + b + c + d + e) >>> 0; -} -exports.sum32_5 = sum32_5; - -function sum64(buf, pos, ah, al) { - var bh = buf[pos]; - var bl = buf[pos + 1]; - - var lo = (al + bl) >>> 0; - var hi = (lo < al ? 1 : 0) + ah + bh; - buf[pos] = hi >>> 0; - buf[pos + 1] = lo; -} -exports.sum64 = sum64; - -function sum64_hi(ah, al, bh, bl) { - var lo = (al + bl) >>> 0; - var hi = (lo < al ? 1 : 0) + ah + bh; - return hi >>> 0; -} -exports.sum64_hi = sum64_hi; - -function sum64_lo(ah, al, bh, bl) { - var lo = al + bl; - return lo >>> 0; -} -exports.sum64_lo = sum64_lo; - -function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) { - var carry = 0; - var lo = al; - lo = (lo + bl) >>> 0; - carry += lo < al ? 1 : 0; - lo = (lo + cl) >>> 0; - carry += lo < cl ? 1 : 0; - lo = (lo + dl) >>> 0; - carry += lo < dl ? 1 : 0; - - var hi = ah + bh + ch + dh + carry; - return hi >>> 0; -} -exports.sum64_4_hi = sum64_4_hi; - -function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) { - var lo = al + bl + cl + dl; - return lo >>> 0; -} -exports.sum64_4_lo = sum64_4_lo; - -function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { - var carry = 0; - var lo = al; - lo = (lo + bl) >>> 0; - carry += lo < al ? 1 : 0; - lo = (lo + cl) >>> 0; - carry += lo < cl ? 1 : 0; - lo = (lo + dl) >>> 0; - carry += lo < dl ? 1 : 0; - lo = (lo + el) >>> 0; - carry += lo < el ? 1 : 0; - - var hi = ah + bh + ch + dh + eh + carry; - return hi >>> 0; -} -exports.sum64_5_hi = sum64_5_hi; - -function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { - var lo = al + bl + cl + dl + el; - - return lo >>> 0; -} -exports.sum64_5_lo = sum64_5_lo; - -function rotr64_hi(ah, al, num) { - var r = (al << (32 - num)) | (ah >>> num); - return r >>> 0; -} -exports.rotr64_hi = rotr64_hi; - -function rotr64_lo(ah, al, num) { - var r = (ah << (32 - num)) | (al >>> num); - return r >>> 0; -} -exports.rotr64_lo = rotr64_lo; - -function shr64_hi(ah, al, num) { - return ah >>> num; -} -exports.shr64_hi = shr64_hi; - -function shr64_lo(ah, al, num) { - var r = (ah << (32 - num)) | (al >>> num); - return r >>> 0; -} -exports.shr64_lo = shr64_lo; - -},{"inherits":262,"minimalistic-assert":268}],240:[function(require,module,exports){ -'use strict'; - -var hash = require('hash.js'); -var utils = require('minimalistic-crypto-utils'); -var assert = require('minimalistic-assert'); - -function HmacDRBG(options) { - if (!(this instanceof HmacDRBG)) - return new HmacDRBG(options); - this.hash = options.hash; - this.predResist = !!options.predResist; - - this.outLen = this.hash.outSize; - this.minEntropy = options.minEntropy || this.hash.hmacStrength; - - this._reseed = null; - this.reseedInterval = null; - this.K = null; - this.V = null; - - var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex'); - var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex'); - var pers = utils.toArray(options.pers, options.persEnc || 'hex'); - assert(entropy.length >= (this.minEntropy / 8), - 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); - this._init(entropy, nonce, pers); -} -module.exports = HmacDRBG; - -HmacDRBG.prototype._init = function init(entropy, nonce, pers) { - var seed = entropy.concat(nonce).concat(pers); - - this.K = new Array(this.outLen / 8); - this.V = new Array(this.outLen / 8); - for (var i = 0; i < this.V.length; i++) { - this.K[i] = 0x00; - this.V[i] = 0x01; - } - - this._update(seed); - this._reseed = 1; - this.reseedInterval = 0x1000000000000; // 2^48 -}; - -HmacDRBG.prototype._hmac = function hmac() { - return new hash.hmac(this.hash, this.K); -}; - -HmacDRBG.prototype._update = function update(seed) { - var kmac = this._hmac() - .update(this.V) - .update([ 0x00 ]); - if (seed) - kmac = kmac.update(seed); - this.K = kmac.digest(); - this.V = this._hmac().update(this.V).digest(); - if (!seed) - return; - - this.K = this._hmac() - .update(this.V) - .update([ 0x01 ]) - .update(seed) - .digest(); - this.V = this._hmac().update(this.V).digest(); -}; - -HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) { - // Optional entropy enc - if (typeof entropyEnc !== 'string') { - addEnc = add; - add = entropyEnc; - entropyEnc = null; - } - - entropy = utils.toArray(entropy, entropyEnc); - add = utils.toArray(add, addEnc); - - assert(entropy.length >= (this.minEntropy / 8), - 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); - - this._update(entropy.concat(add || [])); - this._reseed = 1; -}; - -HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { - if (this._reseed > this.reseedInterval) - throw new Error('Reseed is required'); - - // Optional encoding - if (typeof enc !== 'string') { - addEnc = add; - add = enc; - enc = null; - } - - // Optional additional data - if (add) { - add = utils.toArray(add, addEnc || 'hex'); - this._update(add); - } - - var temp = []; - while (temp.length < len) { - this.V = this._hmac().update(this.V).digest(); - temp = temp.concat(this.V); - } - - var res = temp.slice(0, len); - this._update(add); - this._reseed++; - return utils.encode(res, enc); -}; - -},{"hash.js":228,"minimalistic-assert":268,"minimalistic-crypto-utils":269}],241:[function(require,module,exports){ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var nBits = -7 - var i = isLE ? (nBytes - 1) : 0 - var d = isLE ? -1 : 1 - var s = buffer[offset + i] - - i += d - - e = s & ((1 << (-nBits)) - 1) - s >>= (-nBits) - nBits += eLen - for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1) - e >>= (-nBits) - nBits += mLen - for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen) - e = e - eBias - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -} - -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) - var i = isLE ? 0 : (nBytes - 1) - var d = isLE ? 1 : -1 - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 - - value = Math.abs(value) - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0 - e = eMax - } else { - e = Math.floor(Math.log(value) / Math.LN2) - if (value * (c = Math.pow(2, -e)) < 1) { - e-- - c *= 2 - } - if (e + eBias >= 1) { - value += rt / c - } else { - value += rt * Math.pow(2, 1 - eBias) - } - if (value * c >= 2) { - e++ - c /= 2 - } - - if (e + eBias >= eMax) { - m = 0 - e = eMax - } else if (e + eBias >= 1) { - m = ((value * c) - 1) * Math.pow(2, mLen) - e = e + eBias - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) - e = 0 - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m - eLen += mLen - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128 -} - -},{}],242:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const types_1 = require("./types"); -const keys = Object.keys(types_1.typeHandlers); -// This map helps avoid validating for every single image type -const firstBytes = { - 0x38: 'psd', - 0x42: 'bmp', - 0x44: 'dds', - 0x47: 'gif', - 0x49: 'tiff', - 0x4d: 'tiff', - 0x52: 'webp', - 0x69: 'icns', - 0x89: 'png', - 0xff: 'jpg' -}; -function detector(buffer) { - const byte = buffer[0]; - if (byte in firstBytes) { - const type = firstBytes[byte]; - if (types_1.typeHandlers[type].validate(buffer)) { - return type; - } - } - const finder = (key) => types_1.typeHandlers[key].validate(buffer); - return keys.find(finder); -} -exports.detector = detector; - -},{"./types":246}],243:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs = require("fs"); -// fs.promises polyfill for node 8.x -if (!('promises' in fs)) { - class FileHandle { - constructor(fd) { - this.fd = fd; - } - stat() { - return new Promise((resolve, reject) => { - fs.fstat(this.fd, (err, stats) => { - if (err) { - reject(err); - } - else { - resolve(stats); - } - }); - }); - } - read(buffer, offset, length, position) { - return new Promise((resolve, reject) => { - fs.read(this.fd, buffer, offset, length, position, (err) => { - if (err) { - reject(err); - } - else { - resolve(); - } - }); - }); - } - close() { - return new Promise((resolve, reject) => { - fs.close(this.fd, (err) => { - if (err) { - reject(err); - } - else { - resolve(); - } - }); - }); - } - } - Object.defineProperty(fs, 'promises', { - value: { - open: (filepath, flags) => (new Promise((resolve, reject) => { - fs.open(filepath, flags, (err, fd) => { - if (err) { - reject(err); - } - else { - resolve(new FileHandle(fd)); - } - }); - })), - }, - writable: false - }); -} - -},{"fs":177}],244:[function(require,module,exports){ -(function (process,Buffer){ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs = require("fs"); -const path = require("path"); -const queue_1 = require("queue"); -const types_1 = require("./types"); -const detector_1 = require("./detector"); -require("./fs.promises"); -// Maximum buffer size, with a default of 512 kilobytes. -// TO-DO: make this adaptive based on the initial signature of the image -const MaxBufferSize = 512 * 1024; -// This queue is for async `fs` operations, to avoid reaching file-descriptor limits -const queue = new queue_1.default({ concurrency: 100, autostart: true }); -/** - * Return size information based on a buffer - * - * @param {Buffer} buffer - * @param {String} filepath - * @returns {Object} - */ -function lookup(buffer, filepath) { - // detect the file type.. don't rely on the extension - const type = detector_1.detector(buffer); - // find an appropriate handler for this file type - if (type && type in types_1.typeHandlers) { - const size = types_1.typeHandlers[type].calculate(buffer, filepath); - if (size !== undefined) { - size.type = type; - return size; - } - } - // throw up, if we don't understand the file - throw new TypeError('unsupported file type: ' + type + ' (file: ' + filepath + ')'); -} -/** - * Reads a file into a buffer. - * @param {String} filepath - * @returns {Promise} - */ -function asyncFileToBuffer(filepath) { - return __awaiter(this, void 0, void 0, function* () { - const handle = yield fs.promises.open(filepath, 'r'); - const { size } = yield handle.stat(); - if (size <= 0) { - throw new Error('Empty file'); - } - const bufferSize = Math.min(size, MaxBufferSize); - const buffer = Buffer.alloc(bufferSize); - yield handle.read(buffer, 0, bufferSize, 0); - yield handle.close(); - return buffer; - }); -} -/** - * Synchronously reads a file into a buffer, blocking the nodejs process. - * - * @param {String} filepath - * @returns {Buffer} - */ -function syncFileToBuffer(filepath) { - // read from the file, synchronously - const descriptor = fs.openSync(filepath, 'r'); - const size = fs.fstatSync(descriptor).size; - const bufferSize = Math.min(size, MaxBufferSize); - const buffer = Buffer.alloc(bufferSize); - fs.readSync(descriptor, buffer, 0, bufferSize, 0); - fs.closeSync(descriptor); - return buffer; -} -module.exports = exports = imageSize; // backwards compatibility -/** - * @param {Buffer|string} input - buffer or relative/absolute path of the image file - * @param {Function=} [callback] - optional function for async detection - */ -function imageSize(input, callback) { - // Handle buffer input - if (Buffer.isBuffer(input)) { - return lookup(input); - } - // input should be a string at this point - if (typeof input !== 'string') { - throw new TypeError('invalid invocation'); - } - // resolve the file path - const filepath = path.resolve(input); - if (typeof callback === 'function') { - queue.push(() => asyncFileToBuffer(filepath) - .then((buffer) => process.nextTick(callback, null, lookup(buffer, filepath))) - .catch(callback)); - } - else { - const buffer = syncFileToBuffer(filepath); - return lookup(buffer, filepath); - } -} -exports.imageSize = imageSize; -exports.setConcurrency = (c) => { queue.concurrency = c; }; -exports.types = Object.keys(types_1.typeHandlers); - -}).call(this,require('_process'),require("buffer").Buffer) -},{"./detector":242,"./fs.promises":243,"./types":246,"_process":284,"buffer":182,"fs":177,"path":276,"queue":296}],245:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -// Abstract reading multi-byte unsigned integers -function readUInt(buffer, bits, offset, isBigEndian) { - offset = offset || 0; - const endian = isBigEndian ? 'BE' : 'LE'; - const methodName = ('readUInt' + bits + endian); - const method = buffer[methodName]; - return method.call(buffer, offset); -} -exports.readUInt = readUInt; - -},{}],246:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const bmp_1 = require("./types/bmp"); -const cur_1 = require("./types/cur"); -const dds_1 = require("./types/dds"); -const gif_1 = require("./types/gif"); -const icns_1 = require("./types/icns"); -const ico_1 = require("./types/ico"); -const jpg_1 = require("./types/jpg"); -const ktx_1 = require("./types/ktx"); -const png_1 = require("./types/png"); -const pnm_1 = require("./types/pnm"); -const psd_1 = require("./types/psd"); -const svg_1 = require("./types/svg"); -const tiff_1 = require("./types/tiff"); -const webp_1 = require("./types/webp"); -exports.typeHandlers = { - bmp: bmp_1.BMP, - cur: cur_1.CUR, - dds: dds_1.DDS, - gif: gif_1.GIF, - icns: icns_1.ICNS, - ico: ico_1.ICO, - jpg: jpg_1.JPG, - ktx: ktx_1.KTX, - png: png_1.PNG, - pnm: pnm_1.PNM, - psd: psd_1.PSD, - svg: svg_1.SVG, - tiff: tiff_1.TIFF, - webp: webp_1.WEBP, -}; - -},{"./types/bmp":247,"./types/cur":248,"./types/dds":249,"./types/gif":250,"./types/icns":251,"./types/ico":252,"./types/jpg":253,"./types/ktx":254,"./types/png":255,"./types/pnm":256,"./types/psd":257,"./types/svg":258,"./types/tiff":259,"./types/webp":260}],247:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BMP = { - validate(buffer) { - return ('BM' === buffer.toString('ascii', 0, 2)); - }, - calculate(buffer) { - return { - height: Math.abs(buffer.readInt32LE(22)), - width: buffer.readUInt32LE(18) - }; - } -}; - -},{}],248:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const ico_1 = require("./ico"); -const TYPE_CURSOR = 2; -exports.CUR = { - validate(buffer) { - if (buffer.readUInt16LE(0) !== 0) { - return false; - } - return buffer.readUInt16LE(2) === TYPE_CURSOR; - }, - calculate(buffer) { - return ico_1.ICO.calculate(buffer); - } -}; - -},{"./ico":252}],249:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DDS = { - validate(buffer) { - return buffer.readUInt32LE(0) === 0x20534444; - }, - calculate(buffer) { - return { - height: buffer.readUInt32LE(12), - width: buffer.readUInt32LE(16) - }; - } -}; - -},{}],250:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const gifRegexp = /^GIF8[79]a/; -exports.GIF = { - validate(buffer) { - const signature = buffer.toString('ascii', 0, 6); - return (gifRegexp.test(signature)); - }, - calculate(buffer) { - return { - height: buffer.readUInt16LE(8), - width: buffer.readUInt16LE(6) - }; - } -}; - -},{}],251:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * ICNS Header - * - * | Offset | Size | Purpose | - * | 0 | 4 | Magic literal, must be "icns" (0x69, 0x63, 0x6e, 0x73) | - * | 4 | 4 | Length of file, in bytes, msb first. | - * - */ -const SIZE_HEADER = 4 + 4; // 8 -const FILE_LENGTH_OFFSET = 4; // MSB => BIG ENDIAN -/** - * Image Entry - * - * | Offset | Size | Purpose | - * | 0 | 4 | Icon type, see OSType below. | - * | 4 | 4 | Length of data, in bytes (including type and length), msb first. | - * | 8 | n | Icon data | - */ -const ENTRY_LENGTH_OFFSET = 4; // MSB => BIG ENDIAN -/* tslint:disable:object-literal-sort-keys */ -const ICON_TYPE_SIZE = { - ICON: 32, - 'ICN#': 32, - // m => 16 x 16 - 'icm#': 16, - icm4: 16, - icm8: 16, - // s => 16 x 16 - 'ics#': 16, - ics4: 16, - ics8: 16, - is32: 16, - s8mk: 16, - icp4: 16, - // l => 32 x 32 - icl4: 32, - icl8: 32, - il32: 32, - l8mk: 32, - icp5: 32, - ic11: 32, - // h => 48 x 48 - ich4: 48, - ich8: 48, - ih32: 48, - h8mk: 48, - // . => 64 x 64 - icp6: 64, - ic12: 32, - // t => 128 x 128 - it32: 128, - t8mk: 128, - ic07: 128, - // . => 256 x 256 - ic08: 256, - ic13: 256, - // . => 512 x 512 - ic09: 512, - ic14: 512, - // . => 1024 x 1024 - ic10: 1024, -}; -/* tslint:enable:object-literal-sort-keys */ -function readImageHeader(buffer, imageOffset) { - const imageLengthOffset = imageOffset + ENTRY_LENGTH_OFFSET; - return [ - buffer.toString('ascii', imageOffset, imageLengthOffset), - buffer.readUInt32BE(imageLengthOffset) - ]; -} -function getImageSize(type) { - const size = ICON_TYPE_SIZE[type]; - return { width: size, height: size, type }; -} -exports.ICNS = { - validate(buffer) { - return ('icns' === buffer.toString('ascii', 0, 4)); - }, - calculate(buffer) { - const bufferLength = buffer.length; - const fileLength = buffer.readUInt32BE(FILE_LENGTH_OFFSET); - let imageOffset = SIZE_HEADER; - let imageHeader = readImageHeader(buffer, imageOffset); - let imageSize = getImageSize(imageHeader[0]); - imageOffset += imageHeader[1]; - if (imageOffset === fileLength) { - return imageSize; - } - const result = { - height: imageSize.height, - images: [imageSize], - width: imageSize.width - }; - while (imageOffset < fileLength && imageOffset < bufferLength) { - imageHeader = readImageHeader(buffer, imageOffset); - imageSize = getImageSize(imageHeader[0]); - imageOffset += imageHeader[1]; - result.images.push(imageSize); - } - return result; - } -}; - -},{}],252:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const TYPE_ICON = 1; -/** - * ICON Header - * - * | Offset | Size | Purpose | - * | 0 | 2 | Reserved. Must always be 0. | - * | 2 | 2 | Image type: 1 for icon (.ICO) image, 2 for cursor (.CUR) image. Other values are invalid. | - * | 4 | 2 | Number of images in the file. | - * - */ -const SIZE_HEADER = 2 + 2 + 2; // 6 -/** - * Image Entry - * - * | Offset | Size | Purpose | - * | 0 | 1 | Image width in pixels. Can be any number between 0 and 255. Value 0 means width is 256 pixels. | - * | 1 | 1 | Image height in pixels. Can be any number between 0 and 255. Value 0 means height is 256 pixels. | - * | 2 | 1 | Number of colors in the color palette. Should be 0 if the image does not use a color palette. | - * | 3 | 1 | Reserved. Should be 0. | - * | 4 | 2 | ICO format: Color planes. Should be 0 or 1. | - * | | | CUR format: The horizontal coordinates of the hotspot in number of pixels from the left. | - * | 6 | 2 | ICO format: Bits per pixel. | - * | | | CUR format: The vertical coordinates of the hotspot in number of pixels from the top. | - * | 8 | 4 | The size of the image's data in bytes | - * | 12 | 4 | The offset of BMP or PNG data from the beginning of the ICO/CUR file | - * - */ -const SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4; // 16 -function getSizeFromOffset(buffer, offset) { - const value = buffer.readUInt8(offset); - return value === 0 ? 256 : value; -} -function getImageSize(buffer, imageIndex) { - const offset = SIZE_HEADER + (imageIndex * SIZE_IMAGE_ENTRY); - return { - height: getSizeFromOffset(buffer, offset + 1), - width: getSizeFromOffset(buffer, offset) - }; -} -exports.ICO = { - validate(buffer) { - if (buffer.readUInt16LE(0) !== 0) { - return false; - } - return buffer.readUInt16LE(2) === TYPE_ICON; - }, - calculate(buffer) { - const nbImages = buffer.readUInt16LE(4); - const imageSize = getImageSize(buffer, 0); - if (nbImages === 1) { - return imageSize; - } - const result = { - height: imageSize.height, - images: [imageSize], - width: imageSize.width - }; - for (let imageIndex = 1; imageIndex < nbImages; imageIndex += 1) { - result.images.push(getImageSize(buffer, imageIndex)); - } - return result; - } -}; - -},{}],253:[function(require,module,exports){ -"use strict"; -// NOTE: we only support baseline and progressive JPGs here -// due to the structure of the loader class, we only get a buffer -// with a maximum size of 4096 bytes. so if the SOF marker is outside -// if this range we can't detect the file size correctly. -Object.defineProperty(exports, "__esModule", { value: true }); -const readUInt_1 = require("../readUInt"); -const EXIF_MARKER = '45786966'; -const APP1_DATA_SIZE_BYTES = 2; -const EXIF_HEADER_BYTES = 6; -const TIFF_BYTE_ALIGN_BYTES = 2; -const BIG_ENDIAN_BYTE_ALIGN = '4d4d'; -const LITTLE_ENDIAN_BYTE_ALIGN = '4949'; -// Each entry is exactly 12 bytes -const IDF_ENTRY_BYTES = 12; -const NUM_DIRECTORY_ENTRIES_BYTES = 2; -function isEXIF(buffer) { - return (buffer.toString('hex', 2, 6) === EXIF_MARKER); -} -function extractSize(buffer, index) { - return { - height: buffer.readUInt16BE(index), - width: buffer.readUInt16BE(index + 2) - }; -} -function validateExifBlock(buffer, index) { - // Skip APP1 Data Size - const exifBlock = buffer.slice(APP1_DATA_SIZE_BYTES, index); - // Consider byte alignment - const byteAlign = exifBlock.toString('hex', EXIF_HEADER_BYTES, EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES); - // Ignore Empty EXIF. Validate byte alignment - const isBigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN; - const isLittleEndian = byteAlign === LITTLE_ENDIAN_BYTE_ALIGN; - if (isBigEndian || isLittleEndian) { - return extractOrientation(exifBlock, isBigEndian); - } -} -function extractOrientation(exifBlock, isBigEndian) { - // TODO: assert that this contains 0x002A - // let STATIC_MOTOROLA_TIFF_HEADER_BYTES = 2 - // let TIFF_IMAGE_FILE_DIRECTORY_BYTES = 4 - // TODO: derive from TIFF_IMAGE_FILE_DIRECTORY_BYTES - const idfOffset = 8; - // IDF osset works from right after the header bytes - // (so the offset includes the tiff byte align) - const offset = EXIF_HEADER_BYTES + idfOffset; - const idfDirectoryEntries = readUInt_1.readUInt(exifBlock, 16, offset, isBigEndian); - for (let directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++) { - const start = offset + NUM_DIRECTORY_ENTRIES_BYTES + (directoryEntryNumber * IDF_ENTRY_BYTES); - const end = start + IDF_ENTRY_BYTES; - // Skip on corrupt EXIF blocks - if (start > exifBlock.length) { - return; - } - const block = exifBlock.slice(start, end); - const tagNumber = readUInt_1.readUInt(block, 16, 0, isBigEndian); - // 0x0112 (decimal: 274) is the `orientation` tag ID - if (tagNumber === 274) { - const dataFormat = readUInt_1.readUInt(block, 16, 2, isBigEndian); - if (dataFormat !== 3) { - return; - } - // unsinged int has 2 bytes per component - // if there would more than 4 bytes in total it's a pointer - const numberOfComponents = readUInt_1.readUInt(block, 32, 4, isBigEndian); - if (numberOfComponents !== 1) { - return; - } - return readUInt_1.readUInt(block, 16, 8, isBigEndian); - } - } -} -function validateBuffer(buffer, index) { - // index should be within buffer limits - if (index > buffer.length) { - throw new TypeError('Corrupt JPG, exceeded buffer limits'); - } - // Every JPEG block must begin with a 0xFF - if (buffer[index] !== 0xFF) { - throw new TypeError('Invalid JPG, marker table corrupted'); - } -} -exports.JPG = { - validate(buffer) { - const SOIMarker = buffer.toString('hex', 0, 2); - return ('ffd8' === SOIMarker); - }, - calculate(buffer) { - // Skip 4 chars, they are for signature - buffer = buffer.slice(4); - let orientation; - let next; - while (buffer.length) { - // read length of the next block - const i = buffer.readUInt16BE(0); - if (isEXIF(buffer)) { - orientation = validateExifBlock(buffer, i); - } - // ensure correct format - validateBuffer(buffer, i); - // 0xFFC0 is baseline standard(SOF) - // 0xFFC1 is baseline optimized(SOF) - // 0xFFC2 is progressive(SOF2) - next = buffer[i + 1]; - if (next === 0xC0 || next === 0xC1 || next === 0xC2) { - const size = extractSize(buffer, i + 5); - // TODO: is orientation=0 a valid answer here? - if (!orientation) { - return size; - } - return { - height: size.height, - orientation, - width: size.width - }; - } - // move to the next block - buffer = buffer.slice(i + 2); - } - throw new TypeError('Invalid JPG, no size found'); - } -}; - -},{"../readUInt":245}],254:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const SIGNATURE = 'KTX 11'; -exports.KTX = { - validate(buffer) { - return SIGNATURE === buffer.toString('ascii', 1, 7); - }, - calculate(buffer) { - return { - height: buffer.readUInt32LE(40), - width: buffer.readUInt32LE(36), - }; - } -}; - -},{}],255:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const pngSignature = 'PNG\r\n\x1a\n'; -const pngImageHeaderChunkName = 'IHDR'; -// Used to detect "fried" png's: http://www.jongware.com/pngdefry.html -const pngFriedChunkName = 'CgBI'; -exports.PNG = { - validate(buffer) { - if (pngSignature === buffer.toString('ascii', 1, 8)) { - let chunkName = buffer.toString('ascii', 12, 16); - if (chunkName === pngFriedChunkName) { - chunkName = buffer.toString('ascii', 28, 32); - } - if (chunkName !== pngImageHeaderChunkName) { - throw new TypeError('Invalid PNG'); - } - return true; - } - return false; - }, - calculate(buffer) { - if (buffer.toString('ascii', 12, 16) === pngFriedChunkName) { - return { - height: buffer.readUInt32BE(36), - width: buffer.readUInt32BE(32) - }; - } - return { - height: buffer.readUInt32BE(20), - width: buffer.readUInt32BE(16) - }; - } -}; - -},{}],256:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const PNMTypes = { - P1: 'pbm/ascii', - P2: 'pgm/ascii', - P3: 'ppm/ascii', - P4: 'pbm', - P5: 'pgm', - P6: 'ppm', - P7: 'pam', - PF: 'pfm' -}; -const Signatures = Object.keys(PNMTypes); -const handlers = { - default: (lines) => { - let dimensions = []; - while (lines.length > 0) { - const line = lines.shift(); - if (line[0] === '#') { - continue; - } - dimensions = line.split(' '); - break; - } - if (dimensions.length === 2) { - return { - height: parseInt(dimensions[1], 10), - width: parseInt(dimensions[0], 10), - }; - } - else { - throw new TypeError('Invalid PNM'); - } - }, - pam: (lines) => { - const size = {}; - while (lines.length > 0) { - const line = lines.shift(); - if (line.length > 16 || line.charCodeAt(0) > 128) { - continue; - } - const [key, value] = line.split(' '); - if (key && value) { - size[key.toLowerCase()] = parseInt(value, 10); - } - if (size.height && size.width) { - break; - } - } - if (size.height && size.width) { - return { - height: size.height, - width: size.width - }; - } - else { - throw new TypeError('Invalid PAM'); - } - } -}; -exports.PNM = { - validate(buffer) { - const signature = buffer.toString('ascii', 0, 2); - return Signatures.includes(signature); - }, - calculate(buffer) { - const signature = buffer.toString('ascii', 0, 2); - const type = PNMTypes[signature]; - // TODO: this probably generates garbage. move to a stream based parser - const lines = buffer.toString('ascii', 3).split(/[\r\n]+/); - const handler = handlers[type] || handlers.default; - return handler(lines); - } -}; - -},{}],257:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PSD = { - validate(buffer) { - return ('8BPS' === buffer.toString('ascii', 0, 4)); - }, - calculate(buffer) { - return { - height: buffer.readUInt32BE(14), - width: buffer.readUInt32BE(18) - }; - } -}; - -},{}],258:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const svgReg = /"']|"[^"]*"|'[^']*')*>/; -const extractorRegExps = { - height: /\sheight=(['"])([^%]+?)\1/, - root: svgReg, - viewbox: /\sviewBox=(['"])(.+?)\1/, - width: /\swidth=(['"])([^%]+?)\1/, -}; -const INCH_CM = 2.54; -const units = { - cm: 96 / INCH_CM, - em: 16, - ex: 8, - m: 96 / INCH_CM * 100, - mm: 96 / INCH_CM / 10, - pc: 96 / 72 / 12, - pt: 96 / 72, -}; -function parseLength(len) { - const m = /([0-9.]+)([a-z]*)/.exec(len); - if (!m) { - return undefined; - } - return Math.round(parseFloat(m[1]) * (units[m[2]] || 1)); -} -function parseViewbox(viewbox) { - const bounds = viewbox.split(' '); - return { - height: parseLength(bounds[3]), - width: parseLength(bounds[2]) - }; -} -function parseAttributes(root) { - const width = root.match(extractorRegExps.width); - const height = root.match(extractorRegExps.height); - const viewbox = root.match(extractorRegExps.viewbox); - return { - height: height && parseLength(height[2]), - viewbox: viewbox && parseViewbox(viewbox[2]), - width: width && parseLength(width[2]), - }; -} -function calculateByDimensions(attrs) { - return { - height: attrs.height, - width: attrs.width, - }; -} -function calculateByViewbox(attrs) { - const viewbox = attrs && attrs.viewbox; - if (!viewbox) { - return; - } - const ratio = viewbox.width / viewbox.height; - if (attrs.width) { - return { - height: Math.floor(attrs.width / ratio), - width: attrs.width, - }; - } - if (attrs.height) { - return { - height: attrs.height, - width: Math.floor(attrs.height * ratio), - }; - } - return { - height: viewbox.height, - width: viewbox.width, - }; -} -exports.SVG = { - validate(buffer) { - const str = String(buffer); - return svgReg.test(str); - }, - calculate(buffer) { - const root = buffer.toString('utf8').match(extractorRegExps.root); - if (root) { - const attrs = parseAttributes(root[0]); - if (attrs.width && attrs.height) { - return calculateByDimensions(attrs); - } - if (attrs.viewbox) { - return calculateByViewbox(attrs); - } - } - throw new TypeError('Invalid SVG'); - } -}; - -},{}],259:[function(require,module,exports){ -(function (Buffer){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -// based on http://www.compix.com/fileformattif.htm -// TO-DO: support big-endian as well -const fs = require("fs"); -const readUInt_1 = require("../readUInt"); -// Read IFD (image-file-directory) into a buffer -function readIFD(buffer, filepath, isBigEndian) { - const ifdOffset = readUInt_1.readUInt(buffer, 32, 4, isBigEndian); - // read only till the end of the file - let bufferSize = 1024; - const fileSize = fs.statSync(filepath).size; - if (ifdOffset + bufferSize > fileSize) { - bufferSize = fileSize - ifdOffset - 10; - } - // populate the buffer - const endBuffer = Buffer.alloc(bufferSize); - const descriptor = fs.openSync(filepath, 'r'); - fs.readSync(descriptor, endBuffer, 0, bufferSize, ifdOffset); - return endBuffer.slice(2); -} -// TIFF values seem to be messed up on Big-Endian, this helps -function readValue(buffer, isBigEndian) { - const low = readUInt_1.readUInt(buffer, 16, 8, isBigEndian); - const high = readUInt_1.readUInt(buffer, 16, 10, isBigEndian); - return (high << 16) + low; -} -// move to the next tag -function nextTag(buffer) { - if (buffer.length > 24) { - return buffer.slice(12); - } -} -// Extract IFD tags from TIFF metadata -function extractTags(buffer, isBigEndian) { - const tags = {}; - let temp = buffer; - while (temp && temp.length) { - const code = readUInt_1.readUInt(temp, 16, 0, isBigEndian); - const type = readUInt_1.readUInt(temp, 16, 2, isBigEndian); - const length = readUInt_1.readUInt(temp, 32, 4, isBigEndian); - // 0 means end of IFD - if (code === 0) { - break; - } - else { - // 256 is width, 257 is height - // if (code === 256 || code === 257) { - if (length === 1 && (type === 3 || type === 4)) { - tags[code] = readValue(temp, isBigEndian); - } - // move to the next tag - temp = nextTag(temp); - } - } - return tags; -} -// Test if the TIFF is Big Endian or Little Endian -function determineEndianness(buffer) { - const signature = buffer.toString('ascii', 0, 2); - if ('II' === signature) { - return 'LE'; - } - else if ('MM' === signature) { - return 'BE'; - } -} -const signatures = [ - // '492049', // currently not supported - '49492a00', - '4d4d002a', -]; -exports.TIFF = { - validate(buffer) { - return signatures.includes(buffer.toString('hex', 0, 4)); - }, - calculate(buffer, filepath) { - if (!filepath) { - throw new TypeError('Tiff doesn\'t support buffer'); - } - // Determine BE/LE - const isBigEndian = determineEndianness(buffer) === 'BE'; - // read the IFD - const ifdBuffer = readIFD(buffer, filepath, isBigEndian); - // extract the tags from the IFD - const tags = extractTags(ifdBuffer, isBigEndian); - const width = tags[256]; - const height = tags[257]; - if (!width || !height) { - throw new TypeError('Invalid Tiff. Missing tags'); - } - return { height, width }; - } -}; - -}).call(this,require("buffer").Buffer) -},{"../readUInt":245,"buffer":182,"fs":177}],260:[function(require,module,exports){ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function calculateExtended(buffer) { - return { - height: 1 + buffer.readUIntLE(7, 3), - width: 1 + buffer.readUIntLE(4, 3) - }; -} -function calculateLossless(buffer) { - return { - height: 1 + (((buffer[4] & 0xF) << 10) | (buffer[3] << 2) | ((buffer[2] & 0xC0) >> 6)), - width: 1 + (((buffer[2] & 0x3F) << 8) | buffer[1]) - }; -} -function calculateLossy(buffer) { - // `& 0x3fff` returns the last 14 bits - // TO-DO: include webp scaling in the calculations - return { - height: buffer.readInt16LE(8) & 0x3fff, - width: buffer.readInt16LE(6) & 0x3fff - }; -} -exports.WEBP = { - validate(buffer) { - const riffHeader = 'RIFF' === buffer.toString('ascii', 0, 4); - const webpHeader = 'WEBP' === buffer.toString('ascii', 8, 12); - const vp8Header = 'VP8' === buffer.toString('ascii', 12, 15); - return (riffHeader && webpHeader && vp8Header); - }, - calculate(buffer) { - const chunkHeader = buffer.toString('ascii', 12, 16); - buffer = buffer.slice(20, 30); - // Extended webp stream signature - if (chunkHeader === 'VP8X') { - const extendedHeader = buffer[0]; - const validStart = (extendedHeader & 0xc0) === 0; - const validEnd = (extendedHeader & 0x01) === 0; - if (validStart && validEnd) { - return calculateExtended(buffer); - } - else { - // TODO: breaking change - throw new TypeError('Invalid WebP'); - } - } - // Lossless webp stream signature - if (chunkHeader === 'VP8 ' && buffer[0] !== 0x2f) { - return calculateLossy(buffer); - } - // Lossy webp stream signature - const signature = buffer.toString('hex', 3, 6); - if (chunkHeader === 'VP8L' && signature !== '9d012a') { - return calculateLossless(buffer); - } - throw new TypeError('Invalid WebP'); - } -}; - -},{}],261:[function(require,module,exports){ - -var indexOf = [].indexOf; - -module.exports = function(arr, obj){ - if (indexOf) return arr.indexOf(obj); - for (var i = 0; i < arr.length; ++i) { - if (arr[i] === obj) return i; - } - return -1; -}; -},{}],262:[function(require,module,exports){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }) - } - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } - } -} - -},{}],263:[function(require,module,exports){ -/*! - * Determine if an object is a Buffer - * - * @author Feross Aboukhadijeh - * @license MIT - */ - -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -module.exports = function (obj) { - return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) -} - -function isBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} - -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) -} - -},{}],264:[function(require,module,exports){ -var toString = {}.toString; - -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; - -},{}],265:[function(require,module,exports){ -/** - * martinez v0.4.3 - * Martinez polygon clipping algorithm, does boolean operation on polygons (multipolygons, polygons with holes etc): intersection, union, difference, xor - * - * @author Alex Milevski - * @license MIT - * @preserve - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global.martinez = {}))); -}(this, (function (exports) { 'use strict'; - - function DEFAULT_COMPARE (a, b) { return a > b ? 1 : a < b ? -1 : 0; } - - var SplayTree = function SplayTree(compare, noDuplicates) { - if ( compare === void 0 ) compare = DEFAULT_COMPARE; - if ( noDuplicates === void 0 ) noDuplicates = false; - - this._compare = compare; - this._root = null; - this._size = 0; - this._noDuplicates = !!noDuplicates; - }; - - var prototypeAccessors = { size: { configurable: true } }; - - - SplayTree.prototype.rotateLeft = function rotateLeft (x) { - var y = x.right; - if (y) { - x.right = y.left; - if (y.left) { y.left.parent = x; } - y.parent = x.parent; - } - - if (!x.parent) { this._root = y; } - else if (x === x.parent.left) { x.parent.left = y; } - else { x.parent.right = y; } - if (y) { y.left = x; } - x.parent = y; - }; - - - SplayTree.prototype.rotateRight = function rotateRight (x) { - var y = x.left; - if (y) { - x.left = y.right; - if (y.right) { y.right.parent = x; } - y.parent = x.parent; - } - - if (!x.parent) { this._root = y; } - else if(x === x.parent.left) { x.parent.left = y; } - else { x.parent.right = y; } - if (y) { y.right = x; } - x.parent = y; - }; - - - SplayTree.prototype._splay = function _splay (x) { - var this$1 = this; - - while (x.parent) { - var p = x.parent; - if (!p.parent) { - if (p.left === x) { this$1.rotateRight(p); } - else { this$1.rotateLeft(p); } - } else if (p.left === x && p.parent.left === p) { - this$1.rotateRight(p.parent); - this$1.rotateRight(p); - } else if (p.right === x && p.parent.right === p) { - this$1.rotateLeft(p.parent); - this$1.rotateLeft(p); - } else if (p.left === x && p.parent.right === p) { - this$1.rotateRight(p); - this$1.rotateLeft(p); - } else { - this$1.rotateLeft(p); - this$1.rotateRight(p); - } - } - }; - - - SplayTree.prototype.splay = function splay (x) { - var this$1 = this; - - var p, gp, ggp, l, r; - - while (x.parent) { - p = x.parent; - gp = p.parent; - - if (gp && gp.parent) { - ggp = gp.parent; - if (ggp.left === gp) { ggp.left= x; } - else { ggp.right = x; } - x.parent = ggp; - } else { - x.parent = null; - this$1._root = x; - } - - l = x.left; r = x.right; - - if (x === p.left) { // left - if (gp) { - if (gp.left === p) { - /* zig-zig */ - if (p.right) { - gp.left = p.right; - gp.left.parent = gp; - } else { gp.left = null; } - - p.right = gp; - gp.parent = p; - } else { - /* zig-zag */ - if (l) { - gp.right = l; - l.parent = gp; - } else { gp.right = null; } - - x.left = gp; - gp.parent = x; - } - } - if (r) { - p.left = r; - r.parent = p; - } else { p.left = null; } - - x.right= p; - p.parent = x; - } else { // right - if (gp) { - if (gp.right === p) { - /* zig-zig */ - if (p.left) { - gp.right = p.left; - gp.right.parent = gp; - } else { gp.right = null; } - - p.left = gp; - gp.parent = p; - } else { - /* zig-zag */ - if (r) { - gp.left = r; - r.parent = gp; - } else { gp.left = null; } - - x.right = gp; - gp.parent = x; - } - } - if (l) { - p.right = l; - l.parent = p; - } else { p.right = null; } - - x.left = p; - p.parent = x; - } - } - }; - - - SplayTree.prototype.replace = function replace (u, v) { - if (!u.parent) { this._root = v; } - else if (u === u.parent.left) { u.parent.left = v; } - else { u.parent.right = v; } - if (v) { v.parent = u.parent; } - }; - - - SplayTree.prototype.minNode = function minNode (u) { - if ( u === void 0 ) u = this._root; - - if (u) { while (u.left) { u = u.left; } } - return u; - }; - - - SplayTree.prototype.maxNode = function maxNode (u) { - if ( u === void 0 ) u = this._root; - - if (u) { while (u.right) { u = u.right; } } - return u; - }; - - - SplayTree.prototype.insert = function insert (key, data) { - var z = this._root; - var p = null; - var comp = this._compare; - var cmp; - - if (this._noDuplicates) { - while (z) { - p = z; - cmp = comp(z.key, key); - if (cmp === 0) { return; } - else if (comp(z.key, key) < 0) { z = z.right; } - else { z = z.left; } - } - } else { - while (z) { - p = z; - if (comp(z.key, key) < 0) { z = z.right; } - else { z = z.left; } - } - } - - z = { key: key, data: data, left: null, right: null, parent: p }; - - if (!p) { this._root = z; } - else if (comp(p.key, z.key) < 0) { p.right = z; } - else { p.left= z; } - - this.splay(z); - this._size++; - return z; - }; - - - SplayTree.prototype.find = function find (key) { - var z = this._root; - var comp = this._compare; - while (z) { - var cmp = comp(z.key, key); - if (cmp < 0) { z = z.right; } - else if (cmp > 0) { z = z.left; } - else { return z; } - } - return null; - }; - - /** - * Whether the tree contains a node with the given key - * @param{Key} key - * @return {boolean} true/false - */ - SplayTree.prototype.contains = function contains (key) { - var node = this._root; - var comparator = this._compare; - while (node){ - var cmp = comparator(key, node.key); - if (cmp === 0) { return true; } - else if (cmp < 0) { node = node.left; } - else { node = node.right; } - } - - return false; - }; - - - SplayTree.prototype.remove = function remove (key) { - var z = this.find(key); - - if (!z) { return false; } - - this.splay(z); - - if (!z.left) { this.replace(z, z.right); } - else if (!z.right) { this.replace(z, z.left); } - else { - var y = this.minNode(z.right); - if (y.parent !== z) { - this.replace(y, y.right); - y.right = z.right; - y.right.parent = y; - } - this.replace(z, y); - y.left = z.left; - y.left.parent = y; - } - - this._size--; - return true; - }; - - - SplayTree.prototype.removeNode = function removeNode (z) { - if (!z) { return false; } - - this.splay(z); - - if (!z.left) { this.replace(z, z.right); } - else if (!z.right) { this.replace(z, z.left); } - else { - var y = this.minNode(z.right); - if (y.parent !== z) { - this.replace(y, y.right); - y.right = z.right; - y.right.parent = y; - } - this.replace(z, y); - y.left = z.left; - y.left.parent = y; - } - - this._size--; - return true; - }; - - - SplayTree.prototype.erase = function erase (key) { - var z = this.find(key); - if (!z) { return; } - - this.splay(z); - - var s = z.left; - var t = z.right; - - var sMax = null; - if (s) { - s.parent = null; - sMax = this.maxNode(s); - this.splay(sMax); - this._root = sMax; - } - if (t) { - if (s) { sMax.right = t; } - else { this._root = t; } - t.parent = sMax; - } - - this._size--; - }; - - /** - * Removes and returns the node with smallest key - * @return {?Node} - */ - SplayTree.prototype.pop = function pop () { - var node = this._root, returnValue = null; - if (node) { - while (node.left) { node = node.left; } - returnValue = { key: node.key, data: node.data }; - this.remove(node.key); - } - return returnValue; - }; - - - /* eslint-disable class-methods-use-this */ - - /** - * Successor node - * @param{Node} node - * @return {?Node} - */ - SplayTree.prototype.next = function next (node) { - var successor = node; - if (successor) { - if (successor.right) { - successor = successor.right; - while (successor && successor.left) { successor = successor.left; } - } else { - successor = node.parent; - while (successor && successor.right === node) { - node = successor; successor = successor.parent; - } - } - } - return successor; - }; - - - /** - * Predecessor node - * @param{Node} node - * @return {?Node} - */ - SplayTree.prototype.prev = function prev (node) { - var predecessor = node; - if (predecessor) { - if (predecessor.left) { - predecessor = predecessor.left; - while (predecessor && predecessor.right) { predecessor = predecessor.right; } - } else { - predecessor = node.parent; - while (predecessor && predecessor.left === node) { - node = predecessor; - predecessor = predecessor.parent; - } - } - } - return predecessor; - }; - /* eslint-enable class-methods-use-this */ - - - /** - * @param{forEachCallback} callback - * @return {SplayTree} - */ - SplayTree.prototype.forEach = function forEach (callback) { - var current = this._root; - var s = [], done = false, i = 0; - - while (!done) { - // Reach the left most Node of the current Node - if (current) { - // Place pointer to a tree node on the stack - // before traversing the node's left subtree - s.push(current); - current = current.left; - } else { - // BackTrack from the empty subtree and visit the Node - // at the top of the stack; however, if the stack is - // empty you are done - if (s.length > 0) { - current = s.pop(); - callback(current, i++); - - // We have visited the node and its left - // subtree. Now, it's right subtree's turn - current = current.right; - } else { done = true; } - } - } - return this; - }; - - - /** - * Walk key range from `low` to `high`. Stops if `fn` returns a value. - * @param{Key} low - * @param{Key} high - * @param{Function} fn - * @param{*?} ctx - * @return {SplayTree} - */ - SplayTree.prototype.range = function range (low, high, fn, ctx) { - var this$1 = this; - - var Q = []; - var compare = this._compare; - var node = this._root, cmp; - - while (Q.length !== 0 || node) { - if (node) { - Q.push(node); - node = node.left; - } else { - node = Q.pop(); - cmp = compare(node.key, high); - if (cmp > 0) { - break; - } else if (compare(node.key, low) >= 0) { - if (fn.call(ctx, node)) { return this$1; } // stop if smth is returned - } - node = node.right; - } - } - return this; - }; - - /** - * Returns all keys in order - * @return {Array} - */ - SplayTree.prototype.keys = function keys () { - var current = this._root; - var s = [], r = [], done = false; - - while (!done) { - if (current) { - s.push(current); - current = current.left; - } else { - if (s.length > 0) { - current = s.pop(); - r.push(current.key); - current = current.right; - } else { done = true; } - } - } - return r; - }; - - - /** - * Returns `data` fields of all nodes in order. - * @return {Array} - */ - SplayTree.prototype.values = function values () { - var current = this._root; - var s = [], r = [], done = false; - - while (!done) { - if (current) { - s.push(current); - current = current.left; - } else { - if (s.length > 0) { - current = s.pop(); - r.push(current.data); - current = current.right; - } else { done = true; } - } - } - return r; - }; - - - /** - * Returns node at given index - * @param{number} index - * @return {?Node} - */ - SplayTree.prototype.at = function at (index) { - // removed after a consideration, more misleading than useful - // index = index % this.size; - // if (index < 0) index = this.size - index; - - var current = this._root; - var s = [], done = false, i = 0; - - while (!done) { - if (current) { - s.push(current); - current = current.left; - } else { - if (s.length > 0) { - current = s.pop(); - if (i === index) { return current; } - i++; - current = current.right; - } else { done = true; } - } - } - return null; - }; - - /** - * Bulk-load items. Both array have to be same size - * @param{Array} keys - * @param{Array}[values] - * @param{Boolean} [presort=false] Pre-sort keys and values, using - * tree's comparator. Sorting is done - * in-place - * @return {AVLTree} - */ - SplayTree.prototype.load = function load (keys, values, presort) { - if ( keys === void 0 ) keys = []; - if ( values === void 0 ) values = []; - if ( presort === void 0 ) presort = false; - - if (this._size !== 0) { throw new Error('bulk-load: tree is not empty'); } - var size = keys.length; - if (presort) { sort(keys, values, 0, size - 1, this._compare); } - this._root = loadRecursive(null, keys, values, 0, size); - this._size = size; - return this; - }; - - - SplayTree.prototype.min = function min () { - var node = this.minNode(this._root); - if (node) { return node.key; } - else { return null; } - }; - - - SplayTree.prototype.max = function max () { - var node = this.maxNode(this._root); - if (node) { return node.key; } - else { return null; } - }; - - SplayTree.prototype.isEmpty = function isEmpty () { return this._root === null; }; - prototypeAccessors.size.get = function () { return this._size; }; - - - /** - * Create a tree and load it with items - * @param{Array} keys - * @param{Array?} [values] - - * @param{Function?} [comparator] - * @param{Boolean?} [presort=false] Pre-sort keys and values, using - * tree's comparator. Sorting is done - * in-place - * @param{Boolean?} [noDuplicates=false] Allow duplicates - * @return {SplayTree} - */ - SplayTree.createTree = function createTree (keys, values, comparator, presort, noDuplicates) { - return new SplayTree(comparator, noDuplicates).load(keys, values, presort); - }; - - Object.defineProperties( SplayTree.prototype, prototypeAccessors ); - - - function loadRecursive (parent, keys, values, start, end) { - var size = end - start; - if (size > 0) { - var middle = start + Math.floor(size / 2); - var key = keys[middle]; - var data = values[middle]; - var node = { key: key, data: data, parent: parent }; - node.left = loadRecursive(node, keys, values, start, middle); - node.right = loadRecursive(node, keys, values, middle + 1, end); - return node; - } - return null; - } - - - function sort(keys, values, left, right, compare) { - if (left >= right) { return; } - - var pivot = keys[(left + right) >> 1]; - var i = left - 1; - var j = right + 1; - - while (true) { - do { i++; } while (compare(keys[i], pivot) < 0); - do { j--; } while (compare(keys[j], pivot) > 0); - if (i >= j) { break; } - - var tmp = keys[i]; - keys[i] = keys[j]; - keys[j] = tmp; - - tmp = values[i]; - values[i] = values[j]; - values[j] = tmp; - } - - sort(keys, values, left, j, compare); - sort(keys, values, j + 1, right, compare); - } - - var NORMAL = 0; - var NON_CONTRIBUTING = 1; - var SAME_TRANSITION = 2; - var DIFFERENT_TRANSITION = 3; - - var INTERSECTION = 0; - var UNION = 1; - var DIFFERENCE = 2; - var XOR = 3; - - /** - * @param {SweepEvent} event - * @param {SweepEvent} prev - * @param {Operation} operation - */ - function computeFields (event, prev, operation) { - // compute inOut and otherInOut fields - if (prev === null) { - event.inOut = false; - event.otherInOut = true; - - // previous line segment in sweepline belongs to the same polygon - } else { - if (event.isSubject === prev.isSubject) { - event.inOut = !prev.inOut; - event.otherInOut = prev.otherInOut; - - // previous line segment in sweepline belongs to the clipping polygon - } else { - event.inOut = !prev.otherInOut; - event.otherInOut = prev.isVertical() ? !prev.inOut : prev.inOut; - } - - // compute prevInResult field - if (prev) { - event.prevInResult = (!inResult(prev, operation) || prev.isVertical()) - ? prev.prevInResult : prev; - } - } - - // check if the line segment belongs to the Boolean operation - event.inResult = inResult(event, operation); - } - - - /* eslint-disable indent */ - function inResult(event, operation) { - switch (event.type) { - case NORMAL: - switch (operation) { - case INTERSECTION: - return !event.otherInOut; - case UNION: - return event.otherInOut; - case DIFFERENCE: - // return (event.isSubject && !event.otherInOut) || - // (!event.isSubject && event.otherInOut); - return (event.isSubject && event.otherInOut) || - (!event.isSubject && !event.otherInOut); - case XOR: - return true; - } - break; - case SAME_TRANSITION: - return operation === INTERSECTION || operation === UNION; - case DIFFERENT_TRANSITION: - return operation === DIFFERENCE; - case NON_CONTRIBUTING: - return false; - } - return false; - } - /* eslint-enable indent */ - - var SweepEvent = function SweepEvent (point, left, otherEvent, isSubject, edgeType) { - - /** - * Is left endpoint? - * @type {Boolean} - */ - this.left = left; - - /** - * @type {Array.} - */ - this.point = point; - - /** - * Other edge reference - * @type {SweepEvent} - */ - this.otherEvent = otherEvent; - - /** - * Belongs to source or clipping polygon - * @type {Boolean} - */ - this.isSubject = isSubject; - - /** - * Edge contribution type - * @type {Number} - */ - this.type = edgeType || NORMAL; - - - /** - * In-out transition for the sweepline crossing polygon - * @type {Boolean} - */ - this.inOut = false; - - - /** - * @type {Boolean} - */ - this.otherInOut = false; - - /** - * Previous event in result? - * @type {SweepEvent} - */ - this.prevInResult = null; - - /** - * Does event belong to result? - * @type {Boolean} - */ - this.inResult = false; - - - // connection step - - /** - * @type {Boolean} - */ - this.resultInOut = false; - - this.isExteriorRing = true; - }; - - - /** - * @param{Array.}p - * @return {Boolean} - */ - SweepEvent.prototype.isBelow = function isBelow (p) { - var p0 = this.point, p1 = this.otherEvent.point; - return this.left - ? (p0[0] - p[0]) * (p1[1] - p[1]) - (p1[0] - p[0]) * (p0[1] - p[1]) > 0 - // signedArea(this.point, this.otherEvent.point, p) > 0 : - : (p1[0] - p[0]) * (p0[1] - p[1]) - (p0[0] - p[0]) * (p1[1] - p[1]) > 0; - //signedArea(this.otherEvent.point, this.point, p) > 0; - }; - - - /** - * @param{Array.}p - * @return {Boolean} - */ - SweepEvent.prototype.isAbove = function isAbove (p) { - return !this.isBelow(p); - }; - - - /** - * @return {Boolean} - */ - SweepEvent.prototype.isVertical = function isVertical () { - return this.point[0] === this.otherEvent.point[0]; - }; - - - SweepEvent.prototype.clone = function clone () { - var copy = new SweepEvent( - this.point, this.left, this.otherEvent, this.isSubject, this.type); - - copy.inResult = this.inResult; - copy.prevInResult = this.prevInResult; - copy.isExteriorRing = this.isExteriorRing; - copy.inOut = this.inOut; - copy.otherInOut = this.otherInOut; - - return copy; - }; - - function equals(p1, p2) { - if (p1[0] === p2[0]) { - if (p1[1] === p2[1]) { - return true; - } else { - return false; - } - } - return false; - } - - // const EPSILON = 1e-9; - // const abs = Math.abs; - // TODO https://github.com/w8r/martinez/issues/6#issuecomment-262847164 - // Precision problem. - // - // module.exports = function equals(p1, p2) { - // return abs(p1[0] - p2[0]) <= EPSILON && abs(p1[1] - p2[1]) <= EPSILON; - // }; - - /** - * Signed area of the triangle (p0, p1, p2) - * @param {Array.} p0 - * @param {Array.} p1 - * @param {Array.} p2 - * @return {Number} - */ - function signedArea(p0, p1, p2) { - return (p0[0] - p2[0]) * (p1[1] - p2[1]) - (p1[0] - p2[0]) * (p0[1] - p2[1]); - } - - /** - * @param {SweepEvent} e1 - * @param {SweepEvent} e2 - * @return {Number} - */ - function compareEvents(e1, e2) { - var p1 = e1.point; - var p2 = e2.point; - - // Different x-coordinate - if (p1[0] > p2[0]) { return 1; } - if (p1[0] < p2[0]) { return -1; } - - // Different points, but same x-coordinate - // Event with lower y-coordinate is processed first - if (p1[1] !== p2[1]) { return p1[1] > p2[1] ? 1 : -1; } - - return specialCases(e1, e2, p1, p2); - } - - - /* eslint-disable no-unused-vars */ - function specialCases(e1, e2, p1, p2) { - // Same coordinates, but one is a left endpoint and the other is - // a right endpoint. The right endpoint is processed first - if (e1.left !== e2.left) - { return e1.left ? 1 : -1; } - - // const p2 = e1.otherEvent.point, p3 = e2.otherEvent.point; - // const sa = (p1[0] - p3[0]) * (p2[1] - p3[1]) - (p2[0] - p3[0]) * (p1[1] - p3[1]) - // Same coordinates, both events - // are left endpoints or right endpoints. - // not collinear - if (signedArea(p1, e1.otherEvent.point, e2.otherEvent.point) !== 0) { - // the event associate to the bottom segment is processed first - return (!e1.isBelow(e2.otherEvent.point)) ? 1 : -1; - } - - return (!e1.isSubject && e2.isSubject) ? 1 : -1; - } - /* eslint-enable no-unused-vars */ - - /** - * @param {SweepEvent} se - * @param {Array.} p - * @param {Queue} queue - * @return {Queue} - */ - function divideSegment(se, p, queue) { - var r = new SweepEvent(p, false, se, se.isSubject); - var l = new SweepEvent(p, true, se.otherEvent, se.isSubject); - - /* eslint-disable no-console */ - if (equals(se.point, se.otherEvent.point)) { - - console.warn('what is that, a collapsed segment?', se); - } - /* eslint-enable no-console */ - - r.contourId = l.contourId = se.contourId; - - // avoid a rounding error. The left event would be processed after the right event - if (compareEvents(l, se.otherEvent) > 0) { - se.otherEvent.left = true; - l.left = false; - } - - // avoid a rounding error. The left event would be processed after the right event - // if (compareEvents(se, r) > 0) {} - - se.otherEvent.otherEvent = l; - se.otherEvent = r; - - queue.push(l); - queue.push(r); - - return queue; - } - - //const EPS = 1e-9; - - /** - * Finds the magnitude of the cross product of two vectors (if we pretend - * they're in three dimensions) - * - * @param {Object} a First vector - * @param {Object} b Second vector - * @private - * @returns {Number} The magnitude of the cross product - */ - function crossProduct(a, b) { - return (a[0] * b[1]) - (a[1] * b[0]); - } - - /** - * Finds the dot product of two vectors. - * - * @param {Object} a First vector - * @param {Object} b Second vector - * @private - * @returns {Number} The dot product - */ - function dotProduct(a, b) { - return (a[0] * b[0]) + (a[1] * b[1]); - } - - /** - * Finds the intersection (if any) between two line segments a and b, given the - * line segments' end points a1, a2 and b1, b2. - * - * This algorithm is based on Schneider and Eberly. - * http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf - * Page 244. - * - * @param {Array.} a1 point of first line - * @param {Array.} a2 point of first line - * @param {Array.} b1 point of second line - * @param {Array.} b2 point of second line - * @param {Boolean=} noEndpointTouch whether to skip single touchpoints - * (meaning connected segments) as - * intersections - * @returns {Array.>|Null} If the lines intersect, the point of - * intersection. If they overlap, the two end points of the overlapping segment. - * Otherwise, null. - */ - function intersection (a1, a2, b1, b2, noEndpointTouch) { - // The algorithm expects our lines in the form P + sd, where P is a point, - // s is on the interval [0, 1], and d is a vector. - // We are passed two points. P can be the first point of each pair. The - // vector, then, could be thought of as the distance (in x and y components) - // from the first point to the second point. - // So first, let's make our vectors: - var va = [a2[0] - a1[0], a2[1] - a1[1]]; - var vb = [b2[0] - b1[0], b2[1] - b1[1]]; - // We also define a function to convert back to regular point form: - - /* eslint-disable arrow-body-style */ - - function toPoint(p, s, d) { - return [ - p[0] + s * d[0], - p[1] + s * d[1] - ]; - } - - /* eslint-enable arrow-body-style */ - - // The rest is pretty much a straight port of the algorithm. - var e = [b1[0] - a1[0], b1[1] - a1[1]]; - var kross = crossProduct(va, vb); - var sqrKross = kross * kross; - var sqrLenA = dotProduct(va, va); - //const sqrLenB = dotProduct(vb, vb); - - // Check for line intersection. This works because of the properties of the - // cross product -- specifically, two vectors are parallel if and only if the - // cross product is the 0 vector. The full calculation involves relative error - // to account for possible very small line segments. See Schneider & Eberly - // for details. - if (sqrKross > 0/* EPS * sqrLenB * sqLenA */) { - // If they're not parallel, then (because these are line segments) they - // still might not actually intersect. This code checks that the - // intersection point of the lines is actually on both line segments. - var s = crossProduct(e, vb) / kross; - if (s < 0 || s > 1) { - // not on line segment a - return null; - } - var t = crossProduct(e, va) / kross; - if (t < 0 || t > 1) { - // not on line segment b - return null; - } - if (s === 0 || s === 1) { - // on an endpoint of line segment a - return noEndpointTouch ? null : [toPoint(a1, s, va)]; - } - if (t === 0 || t === 1) { - // on an endpoint of line segment b - return noEndpointTouch ? null : [toPoint(b1, t, vb)]; - } - return [toPoint(a1, s, va)]; - } - - // If we've reached this point, then the lines are either parallel or the - // same, but the segments could overlap partially or fully, or not at all. - // So we need to find the overlap, if any. To do that, we can use e, which is - // the (vector) difference between the two initial points. If this is parallel - // with the line itself, then the two lines are the same line, and there will - // be overlap. - //const sqrLenE = dotProduct(e, e); - kross = crossProduct(e, va); - sqrKross = kross * kross; - - if (sqrKross > 0 /* EPS * sqLenB * sqLenE */) { - // Lines are just parallel, not the same. No overlap. - return null; - } - - var sa = dotProduct(va, e) / sqrLenA; - var sb = sa + dotProduct(va, vb) / sqrLenA; - var smin = Math.min(sa, sb); - var smax = Math.max(sa, sb); - - // this is, essentially, the FindIntersection acting on floats from - // Schneider & Eberly, just inlined into this function. - if (smin <= 1 && smax >= 0) { - - // overlap on an end point - if (smin === 1) { - return noEndpointTouch ? null : [toPoint(a1, smin > 0 ? smin : 0, va)]; - } - - if (smax === 0) { - return noEndpointTouch ? null : [toPoint(a1, smax < 1 ? smax : 1, va)]; - } - - if (noEndpointTouch && smin === 0 && smax === 1) { return null; } - - // There's overlap on a segment -- two points of intersection. Return both. - return [ - toPoint(a1, smin > 0 ? smin : 0, va), - toPoint(a1, smax < 1 ? smax : 1, va) - ]; - } - - return null; - } - - /** - * @param {SweepEvent} se1 - * @param {SweepEvent} se2 - * @param {Queue} queue - * @return {Number} - */ - function possibleIntersection (se1, se2, queue) { - // that disallows self-intersecting polygons, - // did cost us half a day, so I'll leave it - // out of respect - // if (se1.isSubject === se2.isSubject) return; - var inter = intersection( - se1.point, se1.otherEvent.point, - se2.point, se2.otherEvent.point - ); - - var nintersections = inter ? inter.length : 0; - if (nintersections === 0) { return 0; } // no intersection - - // the line segments intersect at an endpoint of both line segments - if ((nintersections === 1) && - (equals(se1.point, se2.point) || - equals(se1.otherEvent.point, se2.otherEvent.point))) { - return 0; - } - - if (nintersections === 2 && se1.isSubject === se2.isSubject) { - // if(se1.contourId === se2.contourId){ - // console.warn('Edges of the same polygon overlap', - // se1.point, se1.otherEvent.point, se2.point, se2.otherEvent.point); - // } - //throw new Error('Edges of the same polygon overlap'); - return 0; - } - - // The line segments associated to se1 and se2 intersect - if (nintersections === 1) { - - // if the intersection point is not an endpoint of se1 - if (!equals(se1.point, inter[0]) && !equals(se1.otherEvent.point, inter[0])) { - divideSegment(se1, inter[0], queue); - } - - // if the intersection point is not an endpoint of se2 - if (!equals(se2.point, inter[0]) && !equals(se2.otherEvent.point, inter[0])) { - divideSegment(se2, inter[0], queue); - } - return 1; - } - - // The line segments associated to se1 and se2 overlap - var events = []; - var leftCoincide = false; - var rightCoincide = false; - - if (equals(se1.point, se2.point)) { - leftCoincide = true; // linked - } else if (compareEvents(se1, se2) === 1) { - events.push(se2, se1); - } else { - events.push(se1, se2); - } - - if (equals(se1.otherEvent.point, se2.otherEvent.point)) { - rightCoincide = true; - } else if (compareEvents(se1.otherEvent, se2.otherEvent) === 1) { - events.push(se2.otherEvent, se1.otherEvent); - } else { - events.push(se1.otherEvent, se2.otherEvent); - } - - if ((leftCoincide && rightCoincide) || leftCoincide) { - // both line segments are equal or share the left endpoint - se2.type = NON_CONTRIBUTING; - se1.type = (se2.inOut === se1.inOut) - ? SAME_TRANSITION : DIFFERENT_TRANSITION; - - if (leftCoincide && !rightCoincide) { - // honestly no idea, but changing events selection from [2, 1] - // to [0, 1] fixes the overlapping self-intersecting polygons issue - divideSegment(events[1].otherEvent, events[0].point, queue); - } - return 2; - } - - // the line segments share the right endpoint - if (rightCoincide) { - divideSegment(events[0], events[1].point, queue); - return 3; - } - - // no line segment includes totally the other one - if (events[0] !== events[3].otherEvent) { - divideSegment(events[0], events[1].point, queue); - divideSegment(events[1], events[2].point, queue); - return 3; - } - - // one line segment includes the other one - divideSegment(events[0], events[1].point, queue); - divideSegment(events[3].otherEvent, events[2].point, queue); - - return 3; - } - - /** - * @param {SweepEvent} le1 - * @param {SweepEvent} le2 - * @return {Number} - */ - function compareSegments(le1, le2) { - if (le1 === le2) { return 0; } - - // Segments are not collinear - if (signedArea(le1.point, le1.otherEvent.point, le2.point) !== 0 || - signedArea(le1.point, le1.otherEvent.point, le2.otherEvent.point) !== 0) { - - // If they share their left endpoint use the right endpoint to sort - if (equals(le1.point, le2.point)) { return le1.isBelow(le2.otherEvent.point) ? -1 : 1; } - - // Different left endpoint: use the left endpoint to sort - if (le1.point[0] === le2.point[0]) { return le1.point[1] < le2.point[1] ? -1 : 1; } - - // has the line segment associated to e1 been inserted - // into S after the line segment associated to e2 ? - if (compareEvents(le1, le2) === 1) { return le2.isAbove(le1.point) ? -1 : 1; } - - // The line segment associated to e2 has been inserted - // into S after the line segment associated to e1 - return le1.isBelow(le2.point) ? -1 : 1; - } - - if (le1.isSubject === le2.isSubject) { // same polygon - var p1 = le1.point, p2 = le2.point; - if (p1[0] === p2[0] && p1[1] === p2[1]/*equals(le1.point, le2.point)*/) { - p1 = le1.otherEvent.point; p2 = le2.otherEvent.point; - if (p1[0] === p2[0] && p1[1] === p2[1]) { return 0; } - else { return le1.contourId > le2.contourId ? 1 : -1; } - } - } else { // Segments are collinear, but belong to separate polygons - return le1.isSubject ? -1 : 1; - } - - return compareEvents(le1, le2) === 1 ? 1 : -1; - } - - function subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation) { - var sweepLine = new SplayTree(compareSegments); - var sortedEvents = []; - - var rightbound = Math.min(sbbox[2], cbbox[2]); - - var prev, next, begin; - - while (eventQueue.length !== 0) { - var event = eventQueue.pop(); - sortedEvents.push(event); - - // optimization by bboxes for intersection and difference goes here - if ((operation === INTERSECTION && event.point[0] > rightbound) || - (operation === DIFFERENCE && event.point[0] > sbbox[2])) { - break; - } - - if (event.left) { - next = prev = sweepLine.insert(event); - begin = sweepLine.minNode(); - - if (prev !== begin) { prev = sweepLine.prev(prev); } - else { prev = null; } - - next = sweepLine.next(next); - - var prevEvent = prev ? prev.key : null; - var prevprevEvent = (void 0); - computeFields(event, prevEvent, operation); - if (next) { - if (possibleIntersection(event, next.key, eventQueue) === 2) { - computeFields(event, prevEvent, operation); - computeFields(event, next.key, operation); - } - } - - if (prev) { - if (possibleIntersection(prev.key, event, eventQueue) === 2) { - var prevprev = prev; - if (prevprev !== begin) { prevprev = sweepLine.prev(prevprev); } - else { prevprev = null; } - - prevprevEvent = prevprev ? prevprev.key : null; - computeFields(prevEvent, prevprevEvent, operation); - computeFields(event, prevEvent, operation); - } - } - } else { - event = event.otherEvent; - next = prev = sweepLine.find(event); - - if (prev && next) { - - if (prev !== begin) { prev = sweepLine.prev(prev); } - else { prev = null; } - - next = sweepLine.next(next); - sweepLine.remove(event); - - if (next && prev) { - possibleIntersection(prev.key, next.key, eventQueue); - } - } - } - } - return sortedEvents; - } - - /** - * @param {Array.} sortedEvents - * @return {Array.} - */ - function orderEvents(sortedEvents) { - var event, i, len, tmp; - var resultEvents = []; - for (i = 0, len = sortedEvents.length; i < len; i++) { - event = sortedEvents[i]; - if ((event.left && event.inResult) || - (!event.left && event.otherEvent.inResult)) { - resultEvents.push(event); - } - } - // Due to overlapping edges the resultEvents array can be not wholly sorted - var sorted = false; - while (!sorted) { - sorted = true; - for (i = 0, len = resultEvents.length; i < len; i++) { - if ((i + 1) < len && - compareEvents(resultEvents[i], resultEvents[i + 1]) === 1) { - tmp = resultEvents[i]; - resultEvents[i] = resultEvents[i + 1]; - resultEvents[i + 1] = tmp; - sorted = false; - } - } - } - - - for (i = 0, len = resultEvents.length; i < len; i++) { - event = resultEvents[i]; - event.pos = i; - } - - // imagine, the right event is found in the beginning of the queue, - // when his left counterpart is not marked yet - for (i = 0, len = resultEvents.length; i < len; i++) { - event = resultEvents[i]; - if (!event.left) { - tmp = event.pos; - event.pos = event.otherEvent.pos; - event.otherEvent.pos = tmp; - } - } - - return resultEvents; - } - - - /** - * @param {Number} pos - * @param {Array.} resultEvents - * @param {Object>} processed - * @return {Number} - */ - function nextPos(pos, resultEvents, processed, origIndex) { - var newPos = pos + 1; - var length = resultEvents.length; - if (newPos > length - 1) { return pos - 1; } - var p = resultEvents[pos].point; - var p1 = resultEvents[newPos].point; - - - // while in range and not the current one by value - while (newPos < length && p1[0] === p[0] && p1[1] === p[1]) { - if (!processed[newPos]) { - return newPos; - } else { - newPos++; - } - p1 = resultEvents[newPos].point; - } - - newPos = pos - 1; - - while (processed[newPos] && newPos >= origIndex) { - newPos--; - } - return newPos; - } - - - /** - * @param {Array.} sortedEvents - * @return {Array.<*>} polygons - */ - function connectEdges(sortedEvents, operation) { - var i, len; - var resultEvents = orderEvents(sortedEvents); - - // "false"-filled array - var processed = {}; - var result = []; - var event; - - for (i = 0, len = resultEvents.length; i < len; i++) { - if (processed[i]) { continue; } - var contour = [[]]; - - if (!resultEvents[i].isExteriorRing) { - if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length === 0) { - result.push(contour); - } else if (result.length === 0) { - result.push([[contour]]); - } else { - result[result.length - 1].push(contour[0]); - } - } else if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length > 1) { - result[result.length - 1].push(contour[0]); - } else { - result.push(contour); - } - - var ringId = result.length - 1; - var pos = i; - - var initial = resultEvents[i].point; - contour[0].push(initial); - - while (pos >= i) { - event = resultEvents[pos]; - processed[pos] = true; - - if (event.left) { - event.resultInOut = false; - event.contourId = ringId; - } else { - event.otherEvent.resultInOut = true; - event.otherEvent.contourId = ringId; - } - - pos = event.pos; - processed[pos] = true; - contour[0].push(resultEvents[pos].point); - pos = nextPos(pos, resultEvents, processed, i); - } - - pos = pos === -1 ? i : pos; - - event = resultEvents[pos]; - processed[pos] = processed[event.pos] = true; - event.otherEvent.resultInOut = true; - event.otherEvent.contourId = ringId; - } - - // Handle if the result is a polygon (eg not multipoly) - // Commented it again, let's see what do we mean by that - // if (result.length === 1) result = result[0]; - return result; - } - - var tinyqueue = TinyQueue; - var default_1 = TinyQueue; - - function TinyQueue(data, compare) { - var this$1 = this; - - if (!(this instanceof TinyQueue)) { return new TinyQueue(data, compare); } - - this.data = data || []; - this.length = this.data.length; - this.compare = compare || defaultCompare; - - if (this.length > 0) { - for (var i = (this.length >> 1) - 1; i >= 0; i--) { this$1._down(i); } - } - } - - function defaultCompare(a, b) { - return a < b ? -1 : a > b ? 1 : 0; - } - - TinyQueue.prototype = { - - push: function (item) { - this.data.push(item); - this.length++; - this._up(this.length - 1); - }, - - pop: function () { - if (this.length === 0) { return undefined; } - - var top = this.data[0]; - this.length--; - - if (this.length > 0) { - this.data[0] = this.data[this.length]; - this._down(0); - } - this.data.pop(); - - return top; - }, - - peek: function () { - return this.data[0]; - }, - - _up: function (pos) { - var data = this.data; - var compare = this.compare; - var item = data[pos]; - - while (pos > 0) { - var parent = (pos - 1) >> 1; - var current = data[parent]; - if (compare(item, current) >= 0) { break; } - data[pos] = current; - pos = parent; - } - - data[pos] = item; - }, - - _down: function (pos) { - var this$1 = this; - - var data = this.data; - var compare = this.compare; - var halfLength = this.length >> 1; - var item = data[pos]; - - while (pos < halfLength) { - var left = (pos << 1) + 1; - var right = left + 1; - var best = data[left]; - - if (right < this$1.length && compare(data[right], best) < 0) { - left = right; - best = data[right]; - } - if (compare(best, item) >= 0) { break; } - - data[pos] = best; - pos = left; - } - - data[pos] = item; - } - }; - tinyqueue.default = default_1; - - var max = Math.max; - var min = Math.min; - - var contourId = 0; - - - function processPolygon(contourOrHole, isSubject, depth, Q, bbox, isExteriorRing) { - var i, len, s1, s2, e1, e2; - for (i = 0, len = contourOrHole.length - 1; i < len; i++) { - s1 = contourOrHole[i]; - s2 = contourOrHole[i + 1]; - e1 = new SweepEvent(s1, false, undefined, isSubject); - e2 = new SweepEvent(s2, false, e1, isSubject); - e1.otherEvent = e2; - - if (s1[0] === s2[0] && s1[1] === s2[1]) { - continue; // skip collapsed edges, or it breaks - } - - e1.contourId = e2.contourId = depth; - if (!isExteriorRing) { - e1.isExteriorRing = false; - e2.isExteriorRing = false; - } - if (compareEvents(e1, e2) > 0) { - e2.left = true; - } else { - e1.left = true; - } - - var x = s1[0], y = s1[1]; - bbox[0] = min(bbox[0], x); - bbox[1] = min(bbox[1], y); - bbox[2] = max(bbox[2], x); - bbox[3] = max(bbox[3], y); - - // Pushing it so the queue is sorted from left to right, - // with object on the left having the highest priority. - Q.push(e1); - Q.push(e2); - } - } - - - function fillQueue(subject, clipping, sbbox, cbbox, operation) { - var eventQueue = new tinyqueue(null, compareEvents); - var polygonSet, isExteriorRing, i, ii, j, jj; //, k, kk; - - for (i = 0, ii = subject.length; i < ii; i++) { - polygonSet = subject[i]; - for (j = 0, jj = polygonSet.length; j < jj; j++) { - isExteriorRing = j === 0; - if (isExteriorRing) { contourId++; } - processPolygon(polygonSet[j], true, contourId, eventQueue, sbbox, isExteriorRing); - } - } - - for (i = 0, ii = clipping.length; i < ii; i++) { - polygonSet = clipping[i]; - for (j = 0, jj = polygonSet.length; j < jj; j++) { - isExteriorRing = j === 0; - if (operation === DIFFERENCE) { isExteriorRing = false; } - if (isExteriorRing) { contourId++; } - processPolygon(polygonSet[j], false, contourId, eventQueue, cbbox, isExteriorRing); - } - } - - return eventQueue; - } - - var EMPTY = []; - - - function trivialOperation(subject, clipping, operation) { - var result = null; - if (subject.length * clipping.length === 0) { - if (operation === INTERSECTION) { - result = EMPTY; - } else if (operation === DIFFERENCE) { - result = subject; - } else if (operation === UNION || - operation === XOR) { - result = (subject.length === 0) ? clipping : subject; - } - } - return result; - } - - - function compareBBoxes(subject, clipping, sbbox, cbbox, operation) { - var result = null; - if (sbbox[0] > cbbox[2] || - cbbox[0] > sbbox[2] || - sbbox[1] > cbbox[3] || - cbbox[1] > sbbox[3]) { - if (operation === INTERSECTION) { - result = EMPTY; - } else if (operation === DIFFERENCE) { - result = subject; - } else if (operation === UNION || - operation === XOR) { - result = subject.concat(clipping); - } - } - return result; - } - - - function boolean(subject, clipping, operation) { - if (typeof subject[0][0][0] === 'number') { - subject = [subject]; - } - if (typeof clipping[0][0][0] === 'number') { - clipping = [clipping]; - } - var trivial = trivialOperation(subject, clipping, operation); - if (trivial) { - return trivial === EMPTY ? null : trivial; - } - var sbbox = [Infinity, Infinity, -Infinity, -Infinity]; - var cbbox = [Infinity, Infinity, -Infinity, -Infinity]; - - //console.time('fill queue'); - var eventQueue = fillQueue(subject, clipping, sbbox, cbbox, operation); - //console.timeEnd('fill queue'); - - trivial = compareBBoxes(subject, clipping, sbbox, cbbox, operation); - if (trivial) { - return trivial === EMPTY ? null : trivial; - } - //console.time('subdivide edges'); - var sortedEvents = subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation); - //console.timeEnd('subdivide edges'); - - //console.time('connect vertices'); - var result = connectEdges(sortedEvents, operation); - //console.timeEnd('connect vertices'); - return result; - } - - function union (subject, clipping) { - return boolean(subject, clipping, UNION); - } - - function diff (subject, clipping) { - return boolean(subject, clipping, DIFFERENCE); - } - - function xor (subject, clipping){ - return boolean(subject, clipping, XOR); - } - - function intersection$1 (subject, clipping) { - return boolean(subject, clipping, INTERSECTION); - } - - /** - * @enum {Number} - */ - var operations = { UNION: UNION, DIFFERENCE: DIFFERENCE, INTERSECTION: INTERSECTION, XOR: XOR }; - - exports.union = union; - exports.diff = diff; - exports.xor = xor; - exports.intersection = intersection$1; - exports.operations = operations; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); - - -},{}],266:[function(require,module,exports){ -'use strict' -var inherits = require('inherits') -var HashBase = require('hash-base') -var Buffer = require('safe-buffer').Buffer - -var ARRAY16 = new Array(16) - -function MD5 () { - HashBase.call(this, 64) - - // state - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 -} - -inherits(MD5, HashBase) - -MD5.prototype._update = function () { - var M = ARRAY16 - for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4) - - var a = this._a - var b = this._b - var c = this._c - var d = this._d - - a = fnF(a, b, c, d, M[0], 0xd76aa478, 7) - d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12) - c = fnF(c, d, a, b, M[2], 0x242070db, 17) - b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22) - a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7) - d = fnF(d, a, b, c, M[5], 0x4787c62a, 12) - c = fnF(c, d, a, b, M[6], 0xa8304613, 17) - b = fnF(b, c, d, a, M[7], 0xfd469501, 22) - a = fnF(a, b, c, d, M[8], 0x698098d8, 7) - d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12) - c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17) - b = fnF(b, c, d, a, M[11], 0x895cd7be, 22) - a = fnF(a, b, c, d, M[12], 0x6b901122, 7) - d = fnF(d, a, b, c, M[13], 0xfd987193, 12) - c = fnF(c, d, a, b, M[14], 0xa679438e, 17) - b = fnF(b, c, d, a, M[15], 0x49b40821, 22) - - a = fnG(a, b, c, d, M[1], 0xf61e2562, 5) - d = fnG(d, a, b, c, M[6], 0xc040b340, 9) - c = fnG(c, d, a, b, M[11], 0x265e5a51, 14) - b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20) - a = fnG(a, b, c, d, M[5], 0xd62f105d, 5) - d = fnG(d, a, b, c, M[10], 0x02441453, 9) - c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14) - b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20) - a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5) - d = fnG(d, a, b, c, M[14], 0xc33707d6, 9) - c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14) - b = fnG(b, c, d, a, M[8], 0x455a14ed, 20) - a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5) - d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9) - c = fnG(c, d, a, b, M[7], 0x676f02d9, 14) - b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20) - - a = fnH(a, b, c, d, M[5], 0xfffa3942, 4) - d = fnH(d, a, b, c, M[8], 0x8771f681, 11) - c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16) - b = fnH(b, c, d, a, M[14], 0xfde5380c, 23) - a = fnH(a, b, c, d, M[1], 0xa4beea44, 4) - d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11) - c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16) - b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23) - a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4) - d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11) - c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16) - b = fnH(b, c, d, a, M[6], 0x04881d05, 23) - a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4) - d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11) - c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16) - b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23) - - a = fnI(a, b, c, d, M[0], 0xf4292244, 6) - d = fnI(d, a, b, c, M[7], 0x432aff97, 10) - c = fnI(c, d, a, b, M[14], 0xab9423a7, 15) - b = fnI(b, c, d, a, M[5], 0xfc93a039, 21) - a = fnI(a, b, c, d, M[12], 0x655b59c3, 6) - d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10) - c = fnI(c, d, a, b, M[10], 0xffeff47d, 15) - b = fnI(b, c, d, a, M[1], 0x85845dd1, 21) - a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6) - d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10) - c = fnI(c, d, a, b, M[6], 0xa3014314, 15) - b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21) - a = fnI(a, b, c, d, M[4], 0xf7537e82, 6) - d = fnI(d, a, b, c, M[11], 0xbd3af235, 10) - c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15) - b = fnI(b, c, d, a, M[9], 0xeb86d391, 21) - - this._a = (this._a + a) | 0 - this._b = (this._b + b) | 0 - this._c = (this._c + c) | 0 - this._d = (this._d + d) | 0 -} - -MD5.prototype._digest = function () { - // create padding and handle blocks - this._block[this._blockOffset++] = 0x80 - if (this._blockOffset > 56) { - this._block.fill(0, this._blockOffset, 64) - this._update() - this._blockOffset = 0 - } - - this._block.fill(0, this._blockOffset, 56) - this._block.writeUInt32LE(this._length[0], 56) - this._block.writeUInt32LE(this._length[1], 60) - this._update() - - // produce result - var buffer = Buffer.allocUnsafe(16) - buffer.writeInt32LE(this._a, 0) - buffer.writeInt32LE(this._b, 4) - buffer.writeInt32LE(this._c, 8) - buffer.writeInt32LE(this._d, 12) - return buffer -} - -function rotl (x, n) { - return (x << n) | (x >>> (32 - n)) -} - -function fnF (a, b, c, d, m, k, s) { - return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0 -} - -function fnG (a, b, c, d, m, k, s) { - return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0 -} - -function fnH (a, b, c, d, m, k, s) { - return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0 -} - -function fnI (a, b, c, d, m, k, s) { - return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0 -} - -module.exports = MD5 - -},{"hash-base":227,"inherits":262,"safe-buffer":318}],267:[function(require,module,exports){ -var bn = require('bn.js'); -var brorand = require('brorand'); - -function MillerRabin(rand) { - this.rand = rand || new brorand.Rand(); -} -module.exports = MillerRabin; - -MillerRabin.create = function create(rand) { - return new MillerRabin(rand); -}; - -MillerRabin.prototype._randbelow = function _randbelow(n) { - var len = n.bitLength(); - var min_bytes = Math.ceil(len / 8); - - // Generage random bytes until a number less than n is found. - // This ensures that 0..n-1 have an equal probability of being selected. - do - var a = new bn(this.rand.generate(min_bytes)); - while (a.cmp(n) >= 0); - - return a; -}; - -MillerRabin.prototype._randrange = function _randrange(start, stop) { - // Generate a random number greater than or equal to start and less than stop. - var size = stop.sub(start); - return start.add(this._randbelow(size)); -}; - -MillerRabin.prototype.test = function test(n, k, cb) { - var len = n.bitLength(); - var red = bn.mont(n); - var rone = new bn(1).toRed(red); - - if (!k) - k = Math.max(1, (len / 48) | 0); - - // Find d and s, (n - 1) = (2 ^ s) * d; - var n1 = n.subn(1); - for (var s = 0; !n1.testn(s); s++) {} - var d = n.shrn(s); - - var rn1 = n1.toRed(red); - - var prime = true; - for (; k > 0; k--) { - var a = this._randrange(new bn(2), n1); - if (cb) - cb(a); - - var x = a.toRed(red).redPow(d); - if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) - continue; - - for (var i = 1; i < s; i++) { - x = x.redSqr(); - - if (x.cmp(rone) === 0) - return false; - if (x.cmp(rn1) === 0) - break; - } - - if (i === s) - return false; - } - - return prime; -}; - -MillerRabin.prototype.getDivisor = function getDivisor(n, k) { - var len = n.bitLength(); - var red = bn.mont(n); - var rone = new bn(1).toRed(red); - - if (!k) - k = Math.max(1, (len / 48) | 0); - - // Find d and s, (n - 1) = (2 ^ s) * d; - var n1 = n.subn(1); - for (var s = 0; !n1.testn(s); s++) {} - var d = n.shrn(s); - - var rn1 = n1.toRed(red); - - for (; k > 0; k--) { - var a = this._randrange(new bn(2), n1); - - var g = n.gcd(a); - if (g.cmpn(1) !== 0) - return g; - - var x = a.toRed(red).redPow(d); - if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) - continue; - - for (var i = 1; i < s; i++) { - x = x.redSqr(); - - if (x.cmp(rone) === 0) - return x.fromRed().subn(1).gcd(n); - if (x.cmp(rn1) === 0) - break; - } - - if (i === s) { - x = x.redSqr(); - return x.fromRed().subn(1).gcd(n); - } - } - - return false; -}; - -},{"bn.js":147,"brorand":148}],268:[function(require,module,exports){ -module.exports = assert; - -function assert(val, msg) { - if (!val) - throw new Error(msg || 'Assertion failed'); -} - -assert.equal = function assertEqual(l, r, msg) { - if (l != r) - throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r)); -}; - -},{}],269:[function(require,module,exports){ -'use strict'; - -var utils = exports; - -function toArray(msg, enc) { - if (Array.isArray(msg)) - return msg.slice(); - if (!msg) - return []; - var res = []; - if (typeof msg !== 'string') { - for (var i = 0; i < msg.length; i++) - res[i] = msg[i] | 0; - return res; - } - if (enc === 'hex') { - msg = msg.replace(/[^a-z0-9]+/ig, ''); - if (msg.length % 2 !== 0) - msg = '0' + msg; - for (var i = 0; i < msg.length; i += 2) - res.push(parseInt(msg[i] + msg[i + 1], 16)); - } else { - for (var i = 0; i < msg.length; i++) { - var c = msg.charCodeAt(i); - var hi = c >> 8; - var lo = c & 0xff; - if (hi) - res.push(hi, lo); - else - res.push(lo); - } - } - return res; -} -utils.toArray = toArray; - -function zero2(word) { - if (word.length === 1) - return '0' + word; - else - return word; -} -utils.zero2 = zero2; - -function toHex(msg) { - var res = ''; - for (var i = 0; i < msg.length; i++) - res += zero2(msg[i].toString(16)); - return res; -} -utils.toHex = toHex; - -utils.encode = function encode(arr, enc) { - if (enc === 'hex') - return toHex(arr); - else - return arr; -}; - -},{}],270:[function(require,module,exports){ -exports.endianness = function () { return 'LE' }; - -exports.hostname = function () { - if (typeof location !== 'undefined') { - return location.hostname - } - else return ''; -}; - -exports.loadavg = function () { return [] }; - -exports.uptime = function () { return 0 }; - -exports.freemem = function () { - return Number.MAX_VALUE; -}; - -exports.totalmem = function () { - return Number.MAX_VALUE; -}; - -exports.cpus = function () { return [] }; - -exports.type = function () { return 'Browser' }; - -exports.release = function () { - if (typeof navigator !== 'undefined') { - return navigator.appVersion; - } - return ''; -}; - -exports.networkInterfaces -= exports.getNetworkInterfaces -= function () { return {} }; - -exports.arch = function () { return 'javascript' }; - -exports.platform = function () { return 'browser' }; - -exports.tmpdir = exports.tmpDir = function () { - return '/tmp'; -}; - -exports.EOL = '\n'; - -exports.homedir = function () { - return '/' -}; - -},{}],271:[function(require,module,exports){ -module.exports={"2.16.840.1.101.3.4.1.1": "aes-128-ecb", -"2.16.840.1.101.3.4.1.2": "aes-128-cbc", -"2.16.840.1.101.3.4.1.3": "aes-128-ofb", -"2.16.840.1.101.3.4.1.4": "aes-128-cfb", -"2.16.840.1.101.3.4.1.21": "aes-192-ecb", -"2.16.840.1.101.3.4.1.22": "aes-192-cbc", -"2.16.840.1.101.3.4.1.23": "aes-192-ofb", -"2.16.840.1.101.3.4.1.24": "aes-192-cfb", -"2.16.840.1.101.3.4.1.41": "aes-256-ecb", -"2.16.840.1.101.3.4.1.42": "aes-256-cbc", -"2.16.840.1.101.3.4.1.43": "aes-256-ofb", -"2.16.840.1.101.3.4.1.44": "aes-256-cfb" -} -},{}],272:[function(require,module,exports){ -// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js -// Fedor, you are amazing. -'use strict' - -var asn1 = require('asn1.js') - -exports.certificate = require('./certificate') - -var RSAPrivateKey = asn1.define('RSAPrivateKey', function () { - this.seq().obj( - this.key('version').int(), - this.key('modulus').int(), - this.key('publicExponent').int(), - this.key('privateExponent').int(), - this.key('prime1').int(), - this.key('prime2').int(), - this.key('exponent1').int(), - this.key('exponent2').int(), - this.key('coefficient').int() - ) -}) -exports.RSAPrivateKey = RSAPrivateKey - -var RSAPublicKey = asn1.define('RSAPublicKey', function () { - this.seq().obj( - this.key('modulus').int(), - this.key('publicExponent').int() - ) -}) -exports.RSAPublicKey = RSAPublicKey - -var PublicKey = asn1.define('SubjectPublicKeyInfo', function () { - this.seq().obj( - this.key('algorithm').use(AlgorithmIdentifier), - this.key('subjectPublicKey').bitstr() - ) -}) -exports.PublicKey = PublicKey - -var AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () { - this.seq().obj( - this.key('algorithm').objid(), - this.key('none').null_().optional(), - this.key('curve').objid().optional(), - this.key('params').seq().obj( - this.key('p').int(), - this.key('q').int(), - this.key('g').int() - ).optional() - ) -}) - -var PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () { - this.seq().obj( - this.key('version').int(), - this.key('algorithm').use(AlgorithmIdentifier), - this.key('subjectPrivateKey').octstr() - ) -}) -exports.PrivateKey = PrivateKeyInfo -var EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () { - this.seq().obj( - this.key('algorithm').seq().obj( - this.key('id').objid(), - this.key('decrypt').seq().obj( - this.key('kde').seq().obj( - this.key('id').objid(), - this.key('kdeparams').seq().obj( - this.key('salt').octstr(), - this.key('iters').int() - ) - ), - this.key('cipher').seq().obj( - this.key('algo').objid(), - this.key('iv').octstr() - ) - ) - ), - this.key('subjectPrivateKey').octstr() - ) -}) - -exports.EncryptedPrivateKey = EncryptedPrivateKeyInfo - -var DSAPrivateKey = asn1.define('DSAPrivateKey', function () { - this.seq().obj( - this.key('version').int(), - this.key('p').int(), - this.key('q').int(), - this.key('g').int(), - this.key('pub_key').int(), - this.key('priv_key').int() - ) -}) -exports.DSAPrivateKey = DSAPrivateKey - -exports.DSAparam = asn1.define('DSAparam', function () { - this.int() -}) - -var ECPrivateKey = asn1.define('ECPrivateKey', function () { - this.seq().obj( - this.key('version').int(), - this.key('privateKey').octstr(), - this.key('parameters').optional().explicit(0).use(ECParameters), - this.key('publicKey').optional().explicit(1).bitstr() - ) -}) -exports.ECPrivateKey = ECPrivateKey - -var ECParameters = asn1.define('ECParameters', function () { - this.choice({ - namedCurve: this.objid() - }) -}) - -exports.signature = asn1.define('signature', function () { - this.seq().obj( - this.key('r').int(), - this.key('s').int() - ) -}) - -},{"./certificate":273,"asn1.js":132}],273:[function(require,module,exports){ -// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js -// thanks to @Rantanen - -'use strict' - -var asn = require('asn1.js') - -var Time = asn.define('Time', function () { - this.choice({ - utcTime: this.utctime(), - generalTime: this.gentime() - }) -}) - -var AttributeTypeValue = asn.define('AttributeTypeValue', function () { - this.seq().obj( - this.key('type').objid(), - this.key('value').any() - ) -}) - -var AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () { - this.seq().obj( - this.key('algorithm').objid(), - this.key('parameters').optional(), - this.key('curve').objid().optional() - ) -}) - -var SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () { - this.seq().obj( - this.key('algorithm').use(AlgorithmIdentifier), - this.key('subjectPublicKey').bitstr() - ) -}) - -var RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () { - this.setof(AttributeTypeValue) -}) - -var RDNSequence = asn.define('RDNSequence', function () { - this.seqof(RelativeDistinguishedName) -}) - -var Name = asn.define('Name', function () { - this.choice({ - rdnSequence: this.use(RDNSequence) - }) -}) - -var Validity = asn.define('Validity', function () { - this.seq().obj( - this.key('notBefore').use(Time), - this.key('notAfter').use(Time) - ) -}) - -var Extension = asn.define('Extension', function () { - this.seq().obj( - this.key('extnID').objid(), - this.key('critical').bool().def(false), - this.key('extnValue').octstr() - ) -}) - -var TBSCertificate = asn.define('TBSCertificate', function () { - this.seq().obj( - this.key('version').explicit(0).int().optional(), - this.key('serialNumber').int(), - this.key('signature').use(AlgorithmIdentifier), - this.key('issuer').use(Name), - this.key('validity').use(Validity), - this.key('subject').use(Name), - this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo), - this.key('issuerUniqueID').implicit(1).bitstr().optional(), - this.key('subjectUniqueID').implicit(2).bitstr().optional(), - this.key('extensions').explicit(3).seqof(Extension).optional() - ) -}) - -var X509Certificate = asn.define('X509Certificate', function () { - this.seq().obj( - this.key('tbsCertificate').use(TBSCertificate), - this.key('signatureAlgorithm').use(AlgorithmIdentifier), - this.key('signatureValue').bitstr() - ) -}) - -module.exports = X509Certificate - -},{"asn1.js":132}],274:[function(require,module,exports){ -// adapted from https://github.com/apatil/pemstrip -var findProc = /Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r\+\/\=]+)[\n\r]+/m -var startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m -var fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r\+\/\=]+)-----END \1-----$/m -var evp = require('evp_bytestokey') -var ciphers = require('browserify-aes') -var Buffer = require('safe-buffer').Buffer -module.exports = function (okey, password) { - var key = okey.toString() - var match = key.match(findProc) - var decrypted - if (!match) { - var match2 = key.match(fullRegex) - decrypted = new Buffer(match2[2].replace(/[\r\n]/g, ''), 'base64') - } else { - var suite = 'aes' + match[1] - var iv = Buffer.from(match[2], 'hex') - var cipherText = Buffer.from(match[3].replace(/[\r\n]/g, ''), 'base64') - var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key - var out = [] - var cipher = ciphers.createDecipheriv(suite, cipherKey, iv) - out.push(cipher.update(cipherText)) - out.push(cipher.final()) - decrypted = Buffer.concat(out) - } - var tag = key.match(startRegex)[1] - return { - tag: tag, - data: decrypted - } -} - -},{"browserify-aes":152,"evp_bytestokey":222,"safe-buffer":318}],275:[function(require,module,exports){ -var asn1 = require('./asn1') -var aesid = require('./aesid.json') -var fixProc = require('./fixProc') -var ciphers = require('browserify-aes') -var compat = require('pbkdf2') -var Buffer = require('safe-buffer').Buffer -module.exports = parseKeys - -function parseKeys (buffer) { - var password - if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) { - password = buffer.passphrase - buffer = buffer.key - } - if (typeof buffer === 'string') { - buffer = Buffer.from(buffer) - } - - var stripped = fixProc(buffer, password) - - var type = stripped.tag - var data = stripped.data - var subtype, ndata - switch (type) { - case 'CERTIFICATE': - ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo - // falls through - case 'PUBLIC KEY': - if (!ndata) { - ndata = asn1.PublicKey.decode(data, 'der') - } - subtype = ndata.algorithm.algorithm.join('.') - switch (subtype) { - case '1.2.840.113549.1.1.1': - return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der') - case '1.2.840.10045.2.1': - ndata.subjectPrivateKey = ndata.subjectPublicKey - return { - type: 'ec', - data: ndata - } - case '1.2.840.10040.4.1': - ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der') - return { - type: 'dsa', - data: ndata.algorithm.params - } - default: throw new Error('unknown key id ' + subtype) - } - throw new Error('unknown key type ' + type) - case 'ENCRYPTED PRIVATE KEY': - data = asn1.EncryptedPrivateKey.decode(data, 'der') - data = decrypt(data, password) - // falls through - case 'PRIVATE KEY': - ndata = asn1.PrivateKey.decode(data, 'der') - subtype = ndata.algorithm.algorithm.join('.') - switch (subtype) { - case '1.2.840.113549.1.1.1': - return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der') - case '1.2.840.10045.2.1': - return { - curve: ndata.algorithm.curve, - privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey - } - case '1.2.840.10040.4.1': - ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der') - return { - type: 'dsa', - params: ndata.algorithm.params - } - default: throw new Error('unknown key id ' + subtype) - } - throw new Error('unknown key type ' + type) - case 'RSA PUBLIC KEY': - return asn1.RSAPublicKey.decode(data, 'der') - case 'RSA PRIVATE KEY': - return asn1.RSAPrivateKey.decode(data, 'der') - case 'DSA PRIVATE KEY': - return { - type: 'dsa', - params: asn1.DSAPrivateKey.decode(data, 'der') - } - case 'EC PRIVATE KEY': - data = asn1.ECPrivateKey.decode(data, 'der') - return { - curve: data.parameters.value, - privateKey: data.privateKey - } - default: throw new Error('unknown key type ' + type) - } -} -parseKeys.signature = asn1.signature -function decrypt (data, password) { - var salt = data.algorithm.decrypt.kde.kdeparams.salt - var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10) - var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')] - var iv = data.algorithm.decrypt.cipher.iv - var cipherText = data.subjectPrivateKey - var keylen = parseInt(algo.split('-')[1], 10) / 8 - var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1') - var cipher = ciphers.createDecipheriv(algo, key, iv) - var out = [] - out.push(cipher.update(cipherText)) - out.push(cipher.final()) - return Buffer.concat(out) -} - -},{"./aesid.json":271,"./asn1":272,"./fixProc":274,"browserify-aes":152,"pbkdf2":278,"safe-buffer":318}],276:[function(require,module,exports){ -(function (process){ -// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1, -// backported and transplited with Babel, with backwards-compat fixes - -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// resolves . and .. elements in a path array with directory names there -// must be no slashes, empty elements, or device names (c:\) in the array -// (so also no leading and trailing slashes - it does not distinguish -// relative and absolute paths) -function normalizeArray(parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - - return parts; -} - -// path.resolve([from ...], to) -// posix version -exports.resolve = function() { - var resolvedPath = '', - resolvedAbsolute = false; - - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : process.cwd(); - - // Skip empty and invalid entries - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; - } - - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - - // Normalize the path - resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; -}; - -// path.normalize(path) -// posix version -exports.normalize = function(path) { - var isAbsolute = exports.isAbsolute(path), - trailingSlash = substr(path, -1) === '/'; - - // Normalize the path - path = normalizeArray(filter(path.split('/'), function(p) { - return !!p; - }), !isAbsolute).join('/'); - - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - - return (isAbsolute ? '/' : '') + path; -}; - -// posix version -exports.isAbsolute = function(path) { - return path.charAt(0) === '/'; -}; - -// posix version -exports.join = function() { - var paths = Array.prototype.slice.call(arguments, 0); - return exports.normalize(filter(paths, function(p, index) { - if (typeof p !== 'string') { - throw new TypeError('Arguments to path.join must be strings'); - } - return p; - }).join('/')); -}; - - -// path.relative(from, to) -// posix version -exports.relative = function(from, to) { - from = exports.resolve(from).substr(1); - to = exports.resolve(to).substr(1); - - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - - return outputParts.join('/'); -}; - -exports.sep = '/'; -exports.delimiter = ':'; - -exports.dirname = function (path) { - if (typeof path !== 'string') path = path + ''; - if (path.length === 0) return '.'; - var code = path.charCodeAt(0); - var hasRoot = code === 47 /*/*/; - var end = -1; - var matchedSlash = true; - for (var i = path.length - 1; i >= 1; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - if (!matchedSlash) { - end = i; - break; - } - } else { - // We saw the first non-path separator - matchedSlash = false; - } - } - - if (end === -1) return hasRoot ? '/' : '.'; - if (hasRoot && end === 1) { - // return '//'; - // Backwards-compat fix: - return '/'; - } - return path.slice(0, end); -}; - -function basename(path) { - if (typeof path !== 'string') path = path + ''; - - var start = 0; - var end = -1; - var matchedSlash = true; - var i; - - for (i = path.length - 1; i >= 0; --i) { - if (path.charCodeAt(i) === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // path component - matchedSlash = false; - end = i + 1; - } - } - - if (end === -1) return ''; - return path.slice(start, end); -} - -// Uses a mixed approach for backwards-compatibility, as ext behavior changed -// in new Node.js versions, so only basename() above is backported here -exports.basename = function (path, ext) { - var f = basename(path); - if (ext && f.substr(-1 * ext.length) === ext) { - f = f.substr(0, f.length - ext.length); - } - return f; -}; - -exports.extname = function (path) { - if (typeof path !== 'string') path = path + ''; - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - for (var i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46 /*.*/) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) - startDot = i; - else if (preDotState !== 1) - preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - return ''; - } - return path.slice(startDot, end); -}; - -function filter (xs, f) { - if (xs.filter) return xs.filter(f); - var res = []; - for (var i = 0; i < xs.length; i++) { - if (f(xs[i], i, xs)) res.push(xs[i]); - } - return res; -} - -// String.prototype.substr - negative index don't work in IE8 -var substr = 'ab'.substr(-1) === 'b' - ? function (str, start, len) { return str.substr(start, len) } - : function (str, start, len) { - if (start < 0) start = str.length + start; - return str.substr(start, len); - } -; - -}).call(this,require('_process')) -},{"_process":284}],277:[function(require,module,exports){ -'use strict'; - -module.exports = Pbf; - -var ieee754 = require('ieee754'); - -function Pbf(buf) { - this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0); - this.pos = 0; - this.type = 0; - this.length = this.buf.length; -} - -Pbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum -Pbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64 -Pbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields -Pbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32 - -var SHIFT_LEFT_32 = (1 << 16) * (1 << 16), - SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32; - -Pbf.prototype = { - - destroy: function() { - this.buf = null; - }, - - // === READING ================================================================= - - readFields: function(readField, result, end) { - end = end || this.length; - - while (this.pos < end) { - var val = this.readVarint(), - tag = val >> 3, - startPos = this.pos; - - this.type = val & 0x7; - readField(tag, result, this); - - if (this.pos === startPos) this.skip(val); - } - return result; - }, - - readMessage: function(readField, result) { - return this.readFields(readField, result, this.readVarint() + this.pos); - }, - - readFixed32: function() { - var val = readUInt32(this.buf, this.pos); - this.pos += 4; - return val; - }, - - readSFixed32: function() { - var val = readInt32(this.buf, this.pos); - this.pos += 4; - return val; - }, - - // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed) - - readFixed64: function() { - var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32; - this.pos += 8; - return val; - }, - - readSFixed64: function() { - var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32; - this.pos += 8; - return val; - }, - - readFloat: function() { - var val = ieee754.read(this.buf, this.pos, true, 23, 4); - this.pos += 4; - return val; - }, - - readDouble: function() { - var val = ieee754.read(this.buf, this.pos, true, 52, 8); - this.pos += 8; - return val; - }, - - readVarint: function(isSigned) { - var buf = this.buf, - val, b; - - b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val; - b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val; - b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val; - b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val; - b = buf[this.pos]; val |= (b & 0x0f) << 28; - - return readVarintRemainder(val, isSigned, this); - }, - - readVarint64: function() { // for compatibility with v2.0.1 - return this.readVarint(true); - }, - - readSVarint: function() { - var num = this.readVarint(); - return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding - }, - - readBoolean: function() { - return Boolean(this.readVarint()); - }, - - readString: function() { - var end = this.readVarint() + this.pos, - str = readUtf8(this.buf, this.pos, end); - this.pos = end; - return str; - }, - - readBytes: function() { - var end = this.readVarint() + this.pos, - buffer = this.buf.subarray(this.pos, end); - this.pos = end; - return buffer; - }, - - // verbose for performance reasons; doesn't affect gzipped size - - readPackedVarint: function(arr, isSigned) { - if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned)); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readVarint(isSigned)); - return arr; - }, - readPackedSVarint: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readSVarint()); - return arr; - }, - readPackedBoolean: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readBoolean()); - return arr; - }, - readPackedFloat: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readFloat()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readFloat()); - return arr; - }, - readPackedDouble: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readDouble()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readDouble()); - return arr; - }, - readPackedFixed32: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readFixed32()); - return arr; - }, - readPackedSFixed32: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readSFixed32()); - return arr; - }, - readPackedFixed64: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readFixed64()); - return arr; - }, - readPackedSFixed64: function(arr) { - if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64()); - var end = readPackedEnd(this); - arr = arr || []; - while (this.pos < end) arr.push(this.readSFixed64()); - return arr; - }, - - skip: function(val) { - var type = val & 0x7; - if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {} - else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos; - else if (type === Pbf.Fixed32) this.pos += 4; - else if (type === Pbf.Fixed64) this.pos += 8; - else throw new Error('Unimplemented type: ' + type); - }, - - // === WRITING ================================================================= - - writeTag: function(tag, type) { - this.writeVarint((tag << 3) | type); - }, - - realloc: function(min) { - var length = this.length || 16; - - while (length < this.pos + min) length *= 2; - - if (length !== this.length) { - var buf = new Uint8Array(length); - buf.set(this.buf); - this.buf = buf; - this.length = length; - } - }, - - finish: function() { - this.length = this.pos; - this.pos = 0; - return this.buf.subarray(0, this.length); - }, - - writeFixed32: function(val) { - this.realloc(4); - writeInt32(this.buf, val, this.pos); - this.pos += 4; - }, - - writeSFixed32: function(val) { - this.realloc(4); - writeInt32(this.buf, val, this.pos); - this.pos += 4; - }, - - writeFixed64: function(val) { - this.realloc(8); - writeInt32(this.buf, val & -1, this.pos); - writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4); - this.pos += 8; - }, - - writeSFixed64: function(val) { - this.realloc(8); - writeInt32(this.buf, val & -1, this.pos); - writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4); - this.pos += 8; - }, - - writeVarint: function(val) { - val = +val || 0; - - if (val > 0xfffffff || val < 0) { - writeBigVarint(val, this); - return; - } - - this.realloc(4); - - this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return; - this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return; - this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return; - this.buf[this.pos++] = (val >>> 7) & 0x7f; - }, - - writeSVarint: function(val) { - this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2); - }, - - writeBoolean: function(val) { - this.writeVarint(Boolean(val)); - }, - - writeString: function(str) { - str = String(str); - this.realloc(str.length * 4); - - this.pos++; // reserve 1 byte for short string length - - var startPos = this.pos; - // write the string directly to the buffer and see how much was written - this.pos = writeUtf8(this.buf, str, this.pos); - var len = this.pos - startPos; - - if (len >= 0x80) makeRoomForExtraLength(startPos, len, this); - - // finally, write the message length in the reserved place and restore the position - this.pos = startPos - 1; - this.writeVarint(len); - this.pos += len; - }, - - writeFloat: function(val) { - this.realloc(4); - ieee754.write(this.buf, val, this.pos, true, 23, 4); - this.pos += 4; - }, - - writeDouble: function(val) { - this.realloc(8); - ieee754.write(this.buf, val, this.pos, true, 52, 8); - this.pos += 8; - }, - - writeBytes: function(buffer) { - var len = buffer.length; - this.writeVarint(len); - this.realloc(len); - for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i]; - }, - - writeRawMessage: function(fn, obj) { - this.pos++; // reserve 1 byte for short message length - - // write the message directly to the buffer and see how much was written - var startPos = this.pos; - fn(obj, this); - var len = this.pos - startPos; - - if (len >= 0x80) makeRoomForExtraLength(startPos, len, this); - - // finally, write the message length in the reserved place and restore the position - this.pos = startPos - 1; - this.writeVarint(len); - this.pos += len; - }, - - writeMessage: function(tag, fn, obj) { - this.writeTag(tag, Pbf.Bytes); - this.writeRawMessage(fn, obj); - }, - - writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); }, - writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); }, - writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); }, - writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); }, - writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); }, - writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); }, - writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); }, - writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); }, - writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); }, - - writeBytesField: function(tag, buffer) { - this.writeTag(tag, Pbf.Bytes); - this.writeBytes(buffer); - }, - writeFixed32Field: function(tag, val) { - this.writeTag(tag, Pbf.Fixed32); - this.writeFixed32(val); - }, - writeSFixed32Field: function(tag, val) { - this.writeTag(tag, Pbf.Fixed32); - this.writeSFixed32(val); - }, - writeFixed64Field: function(tag, val) { - this.writeTag(tag, Pbf.Fixed64); - this.writeFixed64(val); - }, - writeSFixed64Field: function(tag, val) { - this.writeTag(tag, Pbf.Fixed64); - this.writeSFixed64(val); - }, - writeVarintField: function(tag, val) { - this.writeTag(tag, Pbf.Varint); - this.writeVarint(val); - }, - writeSVarintField: function(tag, val) { - this.writeTag(tag, Pbf.Varint); - this.writeSVarint(val); - }, - writeStringField: function(tag, str) { - this.writeTag(tag, Pbf.Bytes); - this.writeString(str); - }, - writeFloatField: function(tag, val) { - this.writeTag(tag, Pbf.Fixed32); - this.writeFloat(val); - }, - writeDoubleField: function(tag, val) { - this.writeTag(tag, Pbf.Fixed64); - this.writeDouble(val); - }, - writeBooleanField: function(tag, val) { - this.writeVarintField(tag, Boolean(val)); - } -}; - -function readVarintRemainder(l, s, p) { - var buf = p.buf, - h, b; - - b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s); - b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s); - b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s); - b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s); - b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s); - b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s); - - throw new Error('Expected varint not more than 10 bytes'); -} - -function readPackedEnd(pbf) { - return pbf.type === Pbf.Bytes ? - pbf.readVarint() + pbf.pos : pbf.pos + 1; -} - -function toNum(low, high, isSigned) { - if (isSigned) { - return high * 0x100000000 + (low >>> 0); - } - - return ((high >>> 0) * 0x100000000) + (low >>> 0); -} - -function writeBigVarint(val, pbf) { - var low, high; - - if (val >= 0) { - low = (val % 0x100000000) | 0; - high = (val / 0x100000000) | 0; - } else { - low = ~(-val % 0x100000000); - high = ~(-val / 0x100000000); - - if (low ^ 0xffffffff) { - low = (low + 1) | 0; - } else { - low = 0; - high = (high + 1) | 0; - } - } - - if (val >= 0x10000000000000000 || val < -0x10000000000000000) { - throw new Error('Given varint doesn\'t fit into 10 bytes'); - } - - pbf.realloc(10); - - writeBigVarintLow(low, high, pbf); - writeBigVarintHigh(high, pbf); -} - -function writeBigVarintLow(low, high, pbf) { - pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; - pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; - pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; - pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7; - pbf.buf[pbf.pos] = low & 0x7f; -} - -function writeBigVarintHigh(high, pbf) { - var lsb = (high & 0x07) << 4; - - pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return; - pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; - pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; - pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; - pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return; - pbf.buf[pbf.pos++] = high & 0x7f; -} - -function makeRoomForExtraLength(startPos, len, pbf) { - var extraLen = - len <= 0x3fff ? 1 : - len <= 0x1fffff ? 2 : - len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7)); - - // if 1 byte isn't enough for encoding message length, shift the data to the right - pbf.realloc(extraLen); - for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i]; -} - -function writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); } -function writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); } -function writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); } -function writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); } -function writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); } -function writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); } -function writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); } -function writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); } -function writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); } - -// Buffer code below from https://github.com/feross/buffer, MIT-licensed - -function readUInt32(buf, pos) { - return ((buf[pos]) | - (buf[pos + 1] << 8) | - (buf[pos + 2] << 16)) + - (buf[pos + 3] * 0x1000000); -} - -function writeInt32(buf, val, pos) { - buf[pos] = val; - buf[pos + 1] = (val >>> 8); - buf[pos + 2] = (val >>> 16); - buf[pos + 3] = (val >>> 24); -} - -function readInt32(buf, pos) { - return ((buf[pos]) | - (buf[pos + 1] << 8) | - (buf[pos + 2] << 16)) + - (buf[pos + 3] << 24); -} - -function readUtf8(buf, pos, end) { - var str = ''; - var i = pos; - - while (i < end) { - var b0 = buf[i]; - var c = null; // codepoint - var bytesPerSequence = - b0 > 0xEF ? 4 : - b0 > 0xDF ? 3 : - b0 > 0xBF ? 2 : 1; - - if (i + bytesPerSequence > end) break; - - var b1, b2, b3; - - if (bytesPerSequence === 1) { - if (b0 < 0x80) { - c = b0; - } - } else if (bytesPerSequence === 2) { - b1 = buf[i + 1]; - if ((b1 & 0xC0) === 0x80) { - c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F); - if (c <= 0x7F) { - c = null; - } - } - } else if (bytesPerSequence === 3) { - b1 = buf[i + 1]; - b2 = buf[i + 2]; - if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) { - c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F); - if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) { - c = null; - } - } - } else if (bytesPerSequence === 4) { - b1 = buf[i + 1]; - b2 = buf[i + 2]; - b3 = buf[i + 3]; - if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) { - c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F); - if (c <= 0xFFFF || c >= 0x110000) { - c = null; - } - } - } - - if (c === null) { - c = 0xFFFD; - bytesPerSequence = 1; - - } else if (c > 0xFFFF) { - c -= 0x10000; - str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800); - c = 0xDC00 | c & 0x3FF; - } - - str += String.fromCharCode(c); - i += bytesPerSequence; - } - - return str; -} - -function writeUtf8(buf, str, pos) { - for (var i = 0, c, lead; i < str.length; i++) { - c = str.charCodeAt(i); // code point - - if (c > 0xD7FF && c < 0xE000) { - if (lead) { - if (c < 0xDC00) { - buf[pos++] = 0xEF; - buf[pos++] = 0xBF; - buf[pos++] = 0xBD; - lead = c; - continue; - } else { - c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000; - lead = null; - } - } else { - if (c > 0xDBFF || (i + 1 === str.length)) { - buf[pos++] = 0xEF; - buf[pos++] = 0xBF; - buf[pos++] = 0xBD; - } else { - lead = c; - } - continue; - } - } else if (lead) { - buf[pos++] = 0xEF; - buf[pos++] = 0xBF; - buf[pos++] = 0xBD; - lead = null; - } - - if (c < 0x80) { - buf[pos++] = c; - } else { - if (c < 0x800) { - buf[pos++] = c >> 0x6 | 0xC0; - } else { - if (c < 0x10000) { - buf[pos++] = c >> 0xC | 0xE0; - } else { - buf[pos++] = c >> 0x12 | 0xF0; - buf[pos++] = c >> 0xC & 0x3F | 0x80; - } - buf[pos++] = c >> 0x6 & 0x3F | 0x80; - } - buf[pos++] = c & 0x3F | 0x80; - } - } - return pos; -} - -},{"ieee754":241}],278:[function(require,module,exports){ -exports.pbkdf2 = require('./lib/async') -exports.pbkdf2Sync = require('./lib/sync') - -},{"./lib/async":279,"./lib/sync":282}],279:[function(require,module,exports){ -(function (process,global){ -var checkParameters = require('./precondition') -var defaultEncoding = require('./default-encoding') -var sync = require('./sync') -var Buffer = require('safe-buffer').Buffer - -var ZERO_BUF -var subtle = global.crypto && global.crypto.subtle -var toBrowser = { - 'sha': 'SHA-1', - 'sha-1': 'SHA-1', - 'sha1': 'SHA-1', - 'sha256': 'SHA-256', - 'sha-256': 'SHA-256', - 'sha384': 'SHA-384', - 'sha-384': 'SHA-384', - 'sha-512': 'SHA-512', - 'sha512': 'SHA-512' -} -var checks = [] -function checkNative (algo) { - if (global.process && !global.process.browser) { - return Promise.resolve(false) - } - if (!subtle || !subtle.importKey || !subtle.deriveBits) { - return Promise.resolve(false) - } - if (checks[algo] !== undefined) { - return checks[algo] - } - ZERO_BUF = ZERO_BUF || Buffer.alloc(8) - var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo) - .then(function () { - return true - }).catch(function () { - return false - }) - checks[algo] = prom - return prom -} - -function browserPbkdf2 (password, salt, iterations, length, algo) { - return subtle.importKey( - 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits'] - ).then(function (key) { - return subtle.deriveBits({ - name: 'PBKDF2', - salt: salt, - iterations: iterations, - hash: { - name: algo - } - }, key, length << 3) - }).then(function (res) { - return Buffer.from(res) - }) -} - -function resolvePromise (promise, callback) { - promise.then(function (out) { - process.nextTick(function () { - callback(null, out) - }) - }, function (e) { - process.nextTick(function () { - callback(e) - }) - }) -} -module.exports = function (password, salt, iterations, keylen, digest, callback) { - if (typeof digest === 'function') { - callback = digest - digest = undefined - } - - digest = digest || 'sha1' - var algo = toBrowser[digest.toLowerCase()] - - if (!algo || typeof global.Promise !== 'function') { - return process.nextTick(function () { - var out - try { - out = sync(password, salt, iterations, keylen, digest) - } catch (e) { - return callback(e) - } - callback(null, out) - }) - } - - checkParameters(password, salt, iterations, keylen) - if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2') - if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding) - if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding) - - resolvePromise(checkNative(algo).then(function (resp) { - if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo) - - return sync(password, salt, iterations, keylen, digest) - }), callback) -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./default-encoding":280,"./precondition":281,"./sync":282,"_process":284,"safe-buffer":318}],280:[function(require,module,exports){ -(function (process){ -var defaultEncoding -/* istanbul ignore next */ -if (process.browser) { - defaultEncoding = 'utf-8' -} else { - var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10) - - defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary' -} -module.exports = defaultEncoding - -}).call(this,require('_process')) -},{"_process":284}],281:[function(require,module,exports){ -(function (Buffer){ -var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs - -function checkBuffer (buf, name) { - if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) { - throw new TypeError(name + ' must be a buffer or string') - } -} - -module.exports = function (password, salt, iterations, keylen) { - checkBuffer(password, 'Password') - checkBuffer(salt, 'Salt') - - if (typeof iterations !== 'number') { - throw new TypeError('Iterations not a number') - } - - if (iterations < 0) { - throw new TypeError('Bad iterations') - } - - if (typeof keylen !== 'number') { - throw new TypeError('Key length not a number') - } - - if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */ - throw new TypeError('Bad key length') - } -} - -}).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":263}],282:[function(require,module,exports){ -var md5 = require('create-hash/md5') -var RIPEMD160 = require('ripemd160') -var sha = require('sha.js') - -var checkParameters = require('./precondition') -var defaultEncoding = require('./default-encoding') -var Buffer = require('safe-buffer').Buffer -var ZEROS = Buffer.alloc(128) -var sizes = { - md5: 16, - sha1: 20, - sha224: 28, - sha256: 32, - sha384: 48, - sha512: 64, - rmd160: 20, - ripemd160: 20 -} - -function Hmac (alg, key, saltLen) { - var hash = getDigest(alg) - var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64 - - if (key.length > blocksize) { - key = hash(key) - } else if (key.length < blocksize) { - key = Buffer.concat([key, ZEROS], blocksize) - } - - var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]) - var opad = Buffer.allocUnsafe(blocksize + sizes[alg]) - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36 - opad[i] = key[i] ^ 0x5C - } - - var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4) - ipad.copy(ipad1, 0, 0, blocksize) - this.ipad1 = ipad1 - this.ipad2 = ipad - this.opad = opad - this.alg = alg - this.blocksize = blocksize - this.hash = hash - this.size = sizes[alg] -} - -Hmac.prototype.run = function (data, ipad) { - data.copy(ipad, this.blocksize) - var h = this.hash(ipad) - h.copy(this.opad, this.blocksize) - return this.hash(this.opad) -} - -function getDigest (alg) { - function shaFunc (data) { - return sha(alg).update(data).digest() - } - function rmd160Func (data) { - return new RIPEMD160().update(data).digest() - } - - if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func - if (alg === 'md5') return md5 - return shaFunc -} - -function pbkdf2 (password, salt, iterations, keylen, digest) { - checkParameters(password, salt, iterations, keylen) - - if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding) - if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding) - - digest = digest || 'sha1' - - var hmac = new Hmac(digest, password, salt.length) - - var DK = Buffer.allocUnsafe(keylen) - var block1 = Buffer.allocUnsafe(salt.length + 4) - salt.copy(block1, 0, 0, salt.length) - - var destPos = 0 - var hLen = sizes[digest] - var l = Math.ceil(keylen / hLen) - - for (var i = 1; i <= l; i++) { - block1.writeUInt32BE(i, salt.length) - - var T = hmac.run(block1, hmac.ipad1) - var U = T - - for (var j = 1; j < iterations; j++) { - U = hmac.run(U, hmac.ipad2) - for (var k = 0; k < hLen; k++) T[k] ^= U[k] - } - - T.copy(DK, destPos) - destPos += hLen - } - - return DK -} - -module.exports = pbkdf2 - -},{"./default-encoding":280,"./precondition":281,"create-hash/md5":189,"ripemd160":317,"safe-buffer":318,"sha.js":320}],283:[function(require,module,exports){ -(function (process){ -'use strict'; - -if (typeof process === 'undefined' || - !process.version || - process.version.indexOf('v0.') === 0 || - process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { - module.exports = { nextTick: nextTick }; -} else { - module.exports = process -} - -function nextTick(fn, arg1, arg2, arg3) { - if (typeof fn !== 'function') { - throw new TypeError('"callback" argument must be a function'); - } - var len = arguments.length; - var args, i; - switch (len) { - case 0: - case 1: - return process.nextTick(fn); - case 2: - return process.nextTick(function afterTickOne() { - fn.call(null, arg1); - }); - case 3: - return process.nextTick(function afterTickTwo() { - fn.call(null, arg1, arg2); - }); - case 4: - return process.nextTick(function afterTickThree() { - fn.call(null, arg1, arg2, arg3); - }); - default: - args = new Array(len - 1); - i = 0; - while (i < args.length) { - args[i++] = arguments[i]; - } - return process.nextTick(function afterTick() { - fn.apply(null, args); - }); - } -} - - -}).call(this,require('_process')) -},{"_process":284}],284:[function(require,module,exports){ -// shim for using process in browser -var process = module.exports = {}; - -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; - -process.listeners = function (name) { return [] } - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - -},{}],285:[function(require,module,exports){ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.proj4 = factory()); -}(this, (function () { 'use strict'; - - var globals = function(defs) { - defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"); - defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees"); - defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"); - - defs.WGS84 = defs['EPSG:4326']; - defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857 - defs.GOOGLE = defs['EPSG:3857']; - defs['EPSG:900913'] = defs['EPSG:3857']; - defs['EPSG:102113'] = defs['EPSG:3857']; - }; - - var PJD_3PARAM = 1; - var PJD_7PARAM = 2; - var PJD_WGS84 = 4; // WGS84 or equivalent - var PJD_NODATUM = 5; // WGS84 or equivalent - var SEC_TO_RAD = 4.84813681109535993589914102357e-6; - var HALF_PI = Math.PI/2; - // ellipoid pj_set_ell.c - var SIXTH = 0.1666666666666666667; - /* 1/6 */ - var RA4 = 0.04722222222222222222; - /* 17/360 */ - var RA6 = 0.02215608465608465608; - var EPSLN = (typeof Number.EPSILON === 'undefined') ? 1.0e-10 : Number.EPSILON; - var D2R = 0.01745329251994329577; - var R2D = 57.29577951308232088; - var FORTPI = Math.PI/4; - var TWO_PI = Math.PI * 2; - // SPI is slightly greater than Math.PI, so values that exceed the -180..180 - // degree range by a tiny amount don't get wrapped. This prevents points that - // have drifted from their original location along the 180th meridian (due to - // floating point error) from changing their sign. - var SPI = 3.14159265359; - - var exports$1 = {}; - exports$1.greenwich = 0.0; //"0dE", - exports$1.lisbon = -9.131906111111; //"9d07'54.862\"W", - exports$1.paris = 2.337229166667; //"2d20'14.025\"E", - exports$1.bogota = -74.080916666667; //"74d04'51.3\"W", - exports$1.madrid = -3.687938888889; //"3d41'16.58\"W", - exports$1.rome = 12.452333333333; //"12d27'8.4\"E", - exports$1.bern = 7.439583333333; //"7d26'22.5\"E", - exports$1.jakarta = 106.807719444444; //"106d48'27.79\"E", - exports$1.ferro = -17.666666666667; //"17d40'W", - exports$1.brussels = 4.367975; //"4d22'4.71\"E", - exports$1.stockholm = 18.058277777778; //"18d3'29.8\"E", - exports$1.athens = 23.7163375; //"23d42'58.815\"E", - exports$1.oslo = 10.722916666667; //"10d43'22.5\"E" - - var units = { - ft: {to_meter: 0.3048}, - 'us-ft': {to_meter: 1200 / 3937} - }; - - var ignoredChar = /[\s_\-\/\(\)]/g; - function match(obj, key) { - if (obj[key]) { - return obj[key]; - } - var keys = Object.keys(obj); - var lkey = key.toLowerCase().replace(ignoredChar, ''); - var i = -1; - var testkey, processedKey; - while (++i < keys.length) { - testkey = keys[i]; - processedKey = testkey.toLowerCase().replace(ignoredChar, ''); - if (processedKey === lkey) { - return obj[testkey]; - } - } - } - - var parseProj = function(defData) { - var self = {}; - var paramObj = defData.split('+').map(function(v) { - return v.trim(); - }).filter(function(a) { - return a; - }).reduce(function(p, a) { - var split = a.split('='); - split.push(true); - p[split[0].toLowerCase()] = split[1]; - return p; - }, {}); - var paramName, paramVal, paramOutname; - var params = { - proj: 'projName', - datum: 'datumCode', - rf: function(v) { - self.rf = parseFloat(v); - }, - lat_0: function(v) { - self.lat0 = v * D2R; - }, - lat_1: function(v) { - self.lat1 = v * D2R; - }, - lat_2: function(v) { - self.lat2 = v * D2R; - }, - lat_ts: function(v) { - self.lat_ts = v * D2R; - }, - lon_0: function(v) { - self.long0 = v * D2R; - }, - lon_1: function(v) { - self.long1 = v * D2R; - }, - lon_2: function(v) { - self.long2 = v * D2R; - }, - alpha: function(v) { - self.alpha = parseFloat(v) * D2R; - }, - lonc: function(v) { - self.longc = v * D2R; - }, - x_0: function(v) { - self.x0 = parseFloat(v); - }, - y_0: function(v) { - self.y0 = parseFloat(v); - }, - k_0: function(v) { - self.k0 = parseFloat(v); - }, - k: function(v) { - self.k0 = parseFloat(v); - }, - a: function(v) { - self.a = parseFloat(v); - }, - b: function(v) { - self.b = parseFloat(v); - }, - r_a: function() { - self.R_A = true; - }, - zone: function(v) { - self.zone = parseInt(v, 10); - }, - south: function() { - self.utmSouth = true; - }, - towgs84: function(v) { - self.datum_params = v.split(",").map(function(a) { - return parseFloat(a); - }); - }, - to_meter: function(v) { - self.to_meter = parseFloat(v); - }, - units: function(v) { - self.units = v; - var unit = match(units, v); - if (unit) { - self.to_meter = unit.to_meter; - } - }, - from_greenwich: function(v) { - self.from_greenwich = v * D2R; - }, - pm: function(v) { - var pm = match(exports$1, v); - self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R; - }, - nadgrids: function(v) { - if (v === '@null') { - self.datumCode = 'none'; - } - else { - self.nadgrids = v; - } - }, - axis: function(v) { - var legalAxis = "ewnsud"; - if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) { - self.axis = v; - } - } - }; - for (paramName in paramObj) { - paramVal = paramObj[paramName]; - if (paramName in params) { - paramOutname = params[paramName]; - if (typeof paramOutname === 'function') { - paramOutname(paramVal); - } - else { - self[paramOutname] = paramVal; - } - } - else { - self[paramName] = paramVal; - } - } - if(typeof self.datumCode === 'string' && self.datumCode !== "WGS84"){ - self.datumCode = self.datumCode.toLowerCase(); - } - return self; - }; - - var NEUTRAL = 1; - var KEYWORD = 2; - var NUMBER = 3; - var QUOTED = 4; - var AFTERQUOTE = 5; - var ENDED = -1; - var whitespace = /\s/; - var latin = /[A-Za-z]/; - var keyword = /[A-Za-z84]/; - var endThings = /[,\]]/; - var digets = /[\d\.E\-\+]/; - // const ignoredChar = /[\s_\-\/\(\)]/g; - function Parser(text) { - if (typeof text !== 'string') { - throw new Error('not a string'); - } - this.text = text.trim(); - this.level = 0; - this.place = 0; - this.root = null; - this.stack = []; - this.currentObject = null; - this.state = NEUTRAL; - } - Parser.prototype.readCharicter = function() { - var char = this.text[this.place++]; - if (this.state !== QUOTED) { - while (whitespace.test(char)) { - if (this.place >= this.text.length) { - return; - } - char = this.text[this.place++]; - } - } - switch (this.state) { - case NEUTRAL: - return this.neutral(char); - case KEYWORD: - return this.keyword(char) - case QUOTED: - return this.quoted(char); - case AFTERQUOTE: - return this.afterquote(char); - case NUMBER: - return this.number(char); - case ENDED: - return; - } - }; - Parser.prototype.afterquote = function(char) { - if (char === '"') { - this.word += '"'; - this.state = QUOTED; - return; - } - if (endThings.test(char)) { - this.word = this.word.trim(); - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in afterquote yet, index ' + this.place); - }; - Parser.prototype.afterItem = function(char) { - if (char === ',') { - if (this.word !== null) { - this.currentObject.push(this.word); - } - this.word = null; - this.state = NEUTRAL; - return; - } - if (char === ']') { - this.level--; - if (this.word !== null) { - this.currentObject.push(this.word); - this.word = null; - } - this.state = NEUTRAL; - this.currentObject = this.stack.pop(); - if (!this.currentObject) { - this.state = ENDED; - } - - return; - } - }; - Parser.prototype.number = function(char) { - if (digets.test(char)) { - this.word += char; - return; - } - if (endThings.test(char)) { - this.word = parseFloat(this.word); - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in number yet, index ' + this.place); - }; - Parser.prototype.quoted = function(char) { - if (char === '"') { - this.state = AFTERQUOTE; - return; - } - this.word += char; - return; - }; - Parser.prototype.keyword = function(char) { - if (keyword.test(char)) { - this.word += char; - return; - } - if (char === '[') { - var newObjects = []; - newObjects.push(this.word); - this.level++; - if (this.root === null) { - this.root = newObjects; - } else { - this.currentObject.push(newObjects); - } - this.stack.push(this.currentObject); - this.currentObject = newObjects; - this.state = NEUTRAL; - return; - } - if (endThings.test(char)) { - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in keyword yet, index ' + this.place); - }; - Parser.prototype.neutral = function(char) { - if (latin.test(char)) { - this.word = char; - this.state = KEYWORD; - return; - } - if (char === '"') { - this.word = ''; - this.state = QUOTED; - return; - } - if (digets.test(char)) { - this.word = char; - this.state = NUMBER; - return; - } - if (endThings.test(char)) { - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in neutral yet, index ' + this.place); - }; - Parser.prototype.output = function() { - while (this.place < this.text.length) { - this.readCharicter(); - } - if (this.state === ENDED) { - return this.root; - } - throw new Error('unable to parse string "' +this.text + '". State is ' + this.state); - }; - - function parseString(txt) { - var parser = new Parser(txt); - return parser.output(); - } - - function mapit(obj, key, value) { - if (Array.isArray(key)) { - value.unshift(key); - key = null; - } - var thing = key ? {} : obj; - - var out = value.reduce(function(newObj, item) { - sExpr(item, newObj); - return newObj - }, thing); - if (key) { - obj[key] = out; - } - } - - function sExpr(v, obj) { - if (!Array.isArray(v)) { - obj[v] = true; - return; - } - var key = v.shift(); - if (key === 'PARAMETER') { - key = v.shift(); - } - if (v.length === 1) { - if (Array.isArray(v[0])) { - obj[key] = {}; - sExpr(v[0], obj[key]); - return; - } - obj[key] = v[0]; - return; - } - if (!v.length) { - obj[key] = true; - return; - } - if (key === 'TOWGS84') { - obj[key] = v; - return; - } - if (!Array.isArray(key)) { - obj[key] = {}; - } - - var i; - switch (key) { - case 'UNIT': - case 'PRIMEM': - case 'VERT_DATUM': - obj[key] = { - name: v[0].toLowerCase(), - convert: v[1] - }; - if (v.length === 3) { - sExpr(v[2], obj[key]); - } - return; - case 'SPHEROID': - case 'ELLIPSOID': - obj[key] = { - name: v[0], - a: v[1], - rf: v[2] - }; - if (v.length === 4) { - sExpr(v[3], obj[key]); - } - return; - case 'PROJECTEDCRS': - case 'PROJCRS': - case 'GEOGCS': - case 'GEOCCS': - case 'PROJCS': - case 'LOCAL_CS': - case 'GEODCRS': - case 'GEODETICCRS': - case 'GEODETICDATUM': - case 'EDATUM': - case 'ENGINEERINGDATUM': - case 'VERT_CS': - case 'VERTCRS': - case 'VERTICALCRS': - case 'COMPD_CS': - case 'COMPOUNDCRS': - case 'ENGINEERINGCRS': - case 'ENGCRS': - case 'FITTED_CS': - case 'LOCAL_DATUM': - case 'DATUM': - v[0] = ['name', v[0]]; - mapit(obj, key, v); - return; - default: - i = -1; - while (++i < v.length) { - if (!Array.isArray(v[i])) { - return sExpr(v, obj[key]); - } - } - return mapit(obj, key, v); - } - } - - var D2R$1 = 0.01745329251994329577; - function rename(obj, params) { - var outName = params[0]; - var inName = params[1]; - if (!(outName in obj) && (inName in obj)) { - obj[outName] = obj[inName]; - if (params.length === 3) { - obj[outName] = params[2](obj[outName]); - } - } - } - - function d2r(input) { - return input * D2R$1; - } - - function cleanWKT(wkt) { - if (wkt.type === 'GEOGCS') { - wkt.projName = 'longlat'; - } else if (wkt.type === 'LOCAL_CS') { - wkt.projName = 'identity'; - wkt.local = true; - } else { - if (typeof wkt.PROJECTION === 'object') { - wkt.projName = Object.keys(wkt.PROJECTION)[0]; - } else { - wkt.projName = wkt.PROJECTION; - } - } - if (wkt.UNIT) { - wkt.units = wkt.UNIT.name.toLowerCase(); - if (wkt.units === 'metre') { - wkt.units = 'meter'; - } - if (wkt.UNIT.convert) { - if (wkt.type === 'GEOGCS') { - if (wkt.DATUM && wkt.DATUM.SPHEROID) { - wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a; - } - } else { - wkt.to_meter = wkt.UNIT.convert, 10; - } - } - } - var geogcs = wkt.GEOGCS; - if (wkt.type === 'GEOGCS') { - geogcs = wkt; - } - if (geogcs) { - //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){ - // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R; - //} - if (geogcs.DATUM) { - wkt.datumCode = geogcs.DATUM.name.toLowerCase(); - } else { - wkt.datumCode = geogcs.name.toLowerCase(); - } - if (wkt.datumCode.slice(0, 2) === 'd_') { - wkt.datumCode = wkt.datumCode.slice(2); - } - if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') { - wkt.datumCode = 'nzgd49'; - } - if (wkt.datumCode === 'wgs_1984') { - if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') { - wkt.sphere = true; - } - wkt.datumCode = 'wgs84'; - } - if (wkt.datumCode.slice(-6) === '_ferro') { - wkt.datumCode = wkt.datumCode.slice(0, - 6); - } - if (wkt.datumCode.slice(-8) === '_jakarta') { - wkt.datumCode = wkt.datumCode.slice(0, - 8); - } - if (~wkt.datumCode.indexOf('belge')) { - wkt.datumCode = 'rnb72'; - } - if (geogcs.DATUM && geogcs.DATUM.SPHEROID) { - wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk'); - if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') { - wkt.ellps = 'intl'; - } - - wkt.a = geogcs.DATUM.SPHEROID.a; - wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10); - } - if (~wkt.datumCode.indexOf('osgb_1936')) { - wkt.datumCode = 'osgb36'; - } - } - if (wkt.b && !isFinite(wkt.b)) { - wkt.b = wkt.a; - } - - function toMeter(input) { - var ratio = wkt.to_meter || 1; - return input * ratio; - } - var renamer = function(a) { - return rename(wkt, a); - }; - var list = [ - ['standard_parallel_1', 'Standard_Parallel_1'], - ['standard_parallel_2', 'Standard_Parallel_2'], - ['false_easting', 'False_Easting'], - ['false_northing', 'False_Northing'], - ['central_meridian', 'Central_Meridian'], - ['latitude_of_origin', 'Latitude_Of_Origin'], - ['latitude_of_origin', 'Central_Parallel'], - ['scale_factor', 'Scale_Factor'], - ['k0', 'scale_factor'], - ['latitude_of_center', 'Latitude_of_center'], - ['lat0', 'latitude_of_center', d2r], - ['longitude_of_center', 'Longitude_Of_Center'], - ['longc', 'longitude_of_center', d2r], - ['x0', 'false_easting', toMeter], - ['y0', 'false_northing', toMeter], - ['long0', 'central_meridian', d2r], - ['lat0', 'latitude_of_origin', d2r], - ['lat0', 'standard_parallel_1', d2r], - ['lat1', 'standard_parallel_1', d2r], - ['lat2', 'standard_parallel_2', d2r], - ['alpha', 'azimuth', d2r], - ['srsCode', 'name'] - ]; - list.forEach(renamer); - if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) { - wkt.long0 = wkt.longc; - } - if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) { - wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90); - wkt.lat_ts = wkt.lat1; - } - } - var wkt = function(wkt) { - var lisp = parseString(wkt); - var type = lisp.shift(); - var name = lisp.shift(); - lisp.unshift(['name', name]); - lisp.unshift(['type', type]); - var obj = {}; - sExpr(lisp, obj); - cleanWKT(obj); - return obj; - }; - - function defs(name) { - /*global console*/ - var that = this; - if (arguments.length === 2) { - var def = arguments[1]; - if (typeof def === 'string') { - if (def.charAt(0) === '+') { - defs[name] = parseProj(arguments[1]); - } - else { - defs[name] = wkt(arguments[1]); - } - } else { - defs[name] = def; - } - } - else if (arguments.length === 1) { - if (Array.isArray(name)) { - return name.map(function(v) { - if (Array.isArray(v)) { - defs.apply(that, v); - } - else { - defs(v); - } - }); - } - else if (typeof name === 'string') { - if (name in defs) { - return defs[name]; - } - } - else if ('EPSG' in name) { - defs['EPSG:' + name.EPSG] = name; - } - else if ('ESRI' in name) { - defs['ESRI:' + name.ESRI] = name; - } - else if ('IAU2000' in name) { - defs['IAU2000:' + name.IAU2000] = name; - } - else { - console.log(name); - } - return; - } - - - } - globals(defs); - - function testObj(code){ - return typeof code === 'string'; - } - function testDef(code){ - return code in defs; - } - var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS']; - function testWKT(code){ - return codeWords.some(function (word) { - return code.indexOf(word) > -1; - }); - } - function testProj(code){ - return code[0] === '+'; - } - function parse(code){ - if (testObj(code)) { - //check to see if this is a WKT string - if (testDef(code)) { - return defs[code]; - } - if (testWKT(code)) { - return wkt(code); - } - if (testProj(code)) { - return parseProj(code); - } - }else{ - return code; - } - } - - var extend = function(destination, source) { - destination = destination || {}; - var value, property; - if (!source) { - return destination; - } - for (property in source) { - value = source[property]; - if (value !== undefined) { - destination[property] = value; - } - } - return destination; - }; - - var msfnz = function(eccent, sinphi, cosphi) { - var con = eccent * sinphi; - return cosphi / (Math.sqrt(1 - con * con)); - }; - - var sign = function(x) { - return x<0 ? -1 : 1; - }; - - var adjust_lon = function(x) { - return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI)); - }; - - var tsfnz = function(eccent, phi, sinphi) { - var con = eccent * sinphi; - var com = 0.5 * eccent; - con = Math.pow(((1 - con) / (1 + con)), com); - return (Math.tan(0.5 * (HALF_PI - phi)) / con); - }; - - var phi2z = function(eccent, ts) { - var eccnth = 0.5 * eccent; - var con, dphi; - var phi = HALF_PI - 2 * Math.atan(ts); - for (var i = 0; i <= 15; i++) { - con = eccent * Math.sin(phi); - dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi; - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - //console.log("phi2z has NoConvergence"); - return -9999; - }; - - function init() { - var con = this.b / this.a; - this.es = 1 - con * con; - if(!('x0' in this)){ - this.x0 = 0; - } - if(!('y0' in this)){ - this.y0 = 0; - } - this.e = Math.sqrt(this.es); - if (this.lat_ts) { - if (this.sphere) { - this.k0 = Math.cos(this.lat_ts); - } - else { - this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)); - } - } - else { - if (!this.k0) { - if (this.k) { - this.k0 = this.k; - } - else { - this.k0 = 1; - } - } - } - } - - /* Mercator forward equations--mapping lat,long to x,y - --------------------------------------------------*/ - - function forward(p) { - var lon = p.x; - var lat = p.y; - // convert to radians - if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) { - return null; - } - - var x, y; - if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) { - return null; - } - else { - if (this.sphere) { - x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0); - y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat)); - } - else { - var sinphi = Math.sin(lat); - var ts = tsfnz(this.e, lat, sinphi); - x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0); - y = this.y0 - this.a * this.k0 * Math.log(ts); - } - p.x = x; - p.y = y; - return p; - } - } - - /* Mercator inverse equations--mapping x,y to lat/long - --------------------------------------------------*/ - function inverse(p) { - - var x = p.x - this.x0; - var y = p.y - this.y0; - var lon, lat; - - if (this.sphere) { - lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0))); - } - else { - var ts = Math.exp(-y / (this.a * this.k0)); - lat = phi2z(this.e, ts); - if (lat === -9999) { - return null; - } - } - lon = adjust_lon(this.long0 + x / (this.a * this.k0)); - - p.x = lon; - p.y = lat; - return p; - } - - var names$1 = ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"]; - var merc = { - init: init, - forward: forward, - inverse: inverse, - names: names$1 - }; - - function init$1() { - //no-op for longlat - } - - function identity(pt) { - return pt; - } - var names$2 = ["longlat", "identity"]; - var longlat = { - init: init$1, - forward: identity, - inverse: identity, - names: names$2 - }; - - var projs = [merc, longlat]; - var names$$1 = {}; - var projStore = []; - - function add(proj, i) { - var len = projStore.length; - if (!proj.names) { - console.log(i); - return true; - } - projStore[len] = proj; - proj.names.forEach(function(n) { - names$$1[n.toLowerCase()] = len; - }); - return this; - } - - function get(name) { - if (!name) { - return false; - } - var n = name.toLowerCase(); - if (typeof names$$1[n] !== 'undefined' && projStore[names$$1[n]]) { - return projStore[names$$1[n]]; - } - } - - function start() { - projs.forEach(add); - } - var projections = { - start: start, - add: add, - get: get - }; - - var exports$2 = {}; - exports$2.MERIT = { - a: 6378137.0, - rf: 298.257, - ellipseName: "MERIT 1983" - }; - - exports$2.SGS85 = { - a: 6378136.0, - rf: 298.257, - ellipseName: "Soviet Geodetic System 85" - }; - - exports$2.GRS80 = { - a: 6378137.0, - rf: 298.257222101, - ellipseName: "GRS 1980(IUGG, 1980)" - }; - - exports$2.IAU76 = { - a: 6378140.0, - rf: 298.257, - ellipseName: "IAU 1976" - }; - - exports$2.airy = { - a: 6377563.396, - b: 6356256.910, - ellipseName: "Airy 1830" - }; - - exports$2.APL4 = { - a: 6378137, - rf: 298.25, - ellipseName: "Appl. Physics. 1965" - }; - - exports$2.NWL9D = { - a: 6378145.0, - rf: 298.25, - ellipseName: "Naval Weapons Lab., 1965" - }; - - exports$2.mod_airy = { - a: 6377340.189, - b: 6356034.446, - ellipseName: "Modified Airy" - }; - - exports$2.andrae = { - a: 6377104.43, - rf: 300.0, - ellipseName: "Andrae 1876 (Den., Iclnd.)" - }; - - exports$2.aust_SA = { - a: 6378160.0, - rf: 298.25, - ellipseName: "Australian Natl & S. Amer. 1969" - }; - - exports$2.GRS67 = { - a: 6378160.0, - rf: 298.2471674270, - ellipseName: "GRS 67(IUGG 1967)" - }; - - exports$2.bessel = { - a: 6377397.155, - rf: 299.1528128, - ellipseName: "Bessel 1841" - }; - - exports$2.bess_nam = { - a: 6377483.865, - rf: 299.1528128, - ellipseName: "Bessel 1841 (Namibia)" - }; - - exports$2.clrk66 = { - a: 6378206.4, - b: 6356583.8, - ellipseName: "Clarke 1866" - }; - - exports$2.clrk80 = { - a: 6378249.145, - rf: 293.4663, - ellipseName: "Clarke 1880 mod." - }; - - exports$2.clrk58 = { - a: 6378293.645208759, - rf: 294.2606763692654, - ellipseName: "Clarke 1858" - }; - - exports$2.CPM = { - a: 6375738.7, - rf: 334.29, - ellipseName: "Comm. des Poids et Mesures 1799" - }; - - exports$2.delmbr = { - a: 6376428.0, - rf: 311.5, - ellipseName: "Delambre 1810 (Belgium)" - }; - - exports$2.engelis = { - a: 6378136.05, - rf: 298.2566, - ellipseName: "Engelis 1985" - }; - - exports$2.evrst30 = { - a: 6377276.345, - rf: 300.8017, - ellipseName: "Everest 1830" - }; - - exports$2.evrst48 = { - a: 6377304.063, - rf: 300.8017, - ellipseName: "Everest 1948" - }; - - exports$2.evrst56 = { - a: 6377301.243, - rf: 300.8017, - ellipseName: "Everest 1956" - }; - - exports$2.evrst69 = { - a: 6377295.664, - rf: 300.8017, - ellipseName: "Everest 1969" - }; - - exports$2.evrstSS = { - a: 6377298.556, - rf: 300.8017, - ellipseName: "Everest (Sabah & Sarawak)" - }; - - exports$2.fschr60 = { - a: 6378166.0, - rf: 298.3, - ellipseName: "Fischer (Mercury Datum) 1960" - }; - - exports$2.fschr60m = { - a: 6378155.0, - rf: 298.3, - ellipseName: "Fischer 1960" - }; - - exports$2.fschr68 = { - a: 6378150.0, - rf: 298.3, - ellipseName: "Fischer 1968" - }; - - exports$2.helmert = { - a: 6378200.0, - rf: 298.3, - ellipseName: "Helmert 1906" - }; - - exports$2.hough = { - a: 6378270.0, - rf: 297.0, - ellipseName: "Hough" - }; - - exports$2.intl = { - a: 6378388.0, - rf: 297.0, - ellipseName: "International 1909 (Hayford)" - }; - - exports$2.kaula = { - a: 6378163.0, - rf: 298.24, - ellipseName: "Kaula 1961" - }; - - exports$2.lerch = { - a: 6378139.0, - rf: 298.257, - ellipseName: "Lerch 1979" - }; - - exports$2.mprts = { - a: 6397300.0, - rf: 191.0, - ellipseName: "Maupertius 1738" - }; - - exports$2.new_intl = { - a: 6378157.5, - b: 6356772.2, - ellipseName: "New International 1967" - }; - - exports$2.plessis = { - a: 6376523.0, - rf: 6355863.0, - ellipseName: "Plessis 1817 (France)" - }; - - exports$2.krass = { - a: 6378245.0, - rf: 298.3, - ellipseName: "Krassovsky, 1942" - }; - - exports$2.SEasia = { - a: 6378155.0, - b: 6356773.3205, - ellipseName: "Southeast Asia" - }; - - exports$2.walbeck = { - a: 6376896.0, - b: 6355834.8467, - ellipseName: "Walbeck" - }; - - exports$2.WGS60 = { - a: 6378165.0, - rf: 298.3, - ellipseName: "WGS 60" - }; - - exports$2.WGS66 = { - a: 6378145.0, - rf: 298.25, - ellipseName: "WGS 66" - }; - - exports$2.WGS7 = { - a: 6378135.0, - rf: 298.26, - ellipseName: "WGS 72" - }; - - var WGS84 = exports$2.WGS84 = { - a: 6378137.0, - rf: 298.257223563, - ellipseName: "WGS 84" - }; - - exports$2.sphere = { - a: 6370997.0, - b: 6370997.0, - ellipseName: "Normal Sphere (r=6370997)" - }; - - function eccentricity(a, b, rf, R_A) { - var a2 = a * a; // used in geocentric - var b2 = b * b; // used in geocentric - var es = (a2 - b2) / a2; // e ^ 2 - var e = 0; - if (R_A) { - a *= 1 - es * (SIXTH + es * (RA4 + es * RA6)); - a2 = a * a; - es = 0; - } else { - e = Math.sqrt(es); // eccentricity - } - var ep2 = (a2 - b2) / b2; // used in geocentric - return { - es: es, - e: e, - ep2: ep2 - }; - } - function sphere(a, b, rf, ellps, sphere) { - if (!a) { // do we have an ellipsoid? - var ellipse = match(exports$2, ellps); - if (!ellipse) { - ellipse = WGS84; - } - a = ellipse.a; - b = ellipse.b; - rf = ellipse.rf; - } - - if (rf && !b) { - b = (1.0 - 1.0 / rf) * a; - } - if (rf === 0 || Math.abs(a - b) < EPSLN) { - sphere = true; - b = a; - } - return { - a: a, - b: b, - rf: rf, - sphere: sphere - }; - } - - var exports$3 = {}; - exports$3.wgs84 = { - towgs84: "0,0,0", - ellipse: "WGS84", - datumName: "WGS84" - }; - - exports$3.ch1903 = { - towgs84: "674.374,15.056,405.346", - ellipse: "bessel", - datumName: "swiss" - }; - - exports$3.ggrs87 = { - towgs84: "-199.87,74.79,246.62", - ellipse: "GRS80", - datumName: "Greek_Geodetic_Reference_System_1987" - }; - - exports$3.nad83 = { - towgs84: "0,0,0", - ellipse: "GRS80", - datumName: "North_American_Datum_1983" - }; - - exports$3.nad27 = { - nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat", - ellipse: "clrk66", - datumName: "North_American_Datum_1927" - }; - - exports$3.potsdam = { - towgs84: "606.0,23.0,413.0", - ellipse: "bessel", - datumName: "Potsdam Rauenberg 1950 DHDN" - }; - - exports$3.carthage = { - towgs84: "-263.0,6.0,431.0", - ellipse: "clark80", - datumName: "Carthage 1934 Tunisia" - }; - - exports$3.hermannskogel = { - towgs84: "653.0,-212.0,449.0", - ellipse: "bessel", - datumName: "Hermannskogel" - }; - - exports$3.ire65 = { - towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15", - ellipse: "mod_airy", - datumName: "Ireland 1965" - }; - - exports$3.rassadiran = { - towgs84: "-133.63,-157.5,-158.62", - ellipse: "intl", - datumName: "Rassadiran" - }; - - exports$3.nzgd49 = { - towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993", - ellipse: "intl", - datumName: "New Zealand Geodetic Datum 1949" - }; - - exports$3.osgb36 = { - towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894", - ellipse: "airy", - datumName: "Airy 1830" - }; - - exports$3.s_jtsk = { - towgs84: "589,76,480", - ellipse: 'bessel', - datumName: 'S-JTSK (Ferro)' - }; - - exports$3.beduaram = { - towgs84: '-106,-87,188', - ellipse: 'clrk80', - datumName: 'Beduaram' - }; - - exports$3.gunung_segara = { - towgs84: '-403,684,41', - ellipse: 'bessel', - datumName: 'Gunung Segara Jakarta' - }; - - exports$3.rnb72 = { - towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1", - ellipse: "intl", - datumName: "Reseau National Belge 1972" - }; - - function datum(datumCode, datum_params, a, b, es, ep2) { - var out = {}; - - if (datumCode === undefined || datumCode === 'none') { - out.datum_type = PJD_NODATUM; - } else { - out.datum_type = PJD_WGS84; - } - - if (datum_params) { - out.datum_params = datum_params.map(parseFloat); - if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) { - out.datum_type = PJD_3PARAM; - } - if (out.datum_params.length > 3) { - if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) { - out.datum_type = PJD_7PARAM; - out.datum_params[3] *= SEC_TO_RAD; - out.datum_params[4] *= SEC_TO_RAD; - out.datum_params[5] *= SEC_TO_RAD; - out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0; - } - } - } - - out.a = a; //datum object also uses these values - out.b = b; - out.es = es; - out.ep2 = ep2; - return out; - } - - function Projection$1(srsCode,callback) { - if (!(this instanceof Projection$1)) { - return new Projection$1(srsCode); - } - callback = callback || function(error){ - if(error){ - throw error; - } - }; - var json = parse(srsCode); - if(typeof json !== 'object'){ - callback(srsCode); - return; - } - var ourProj = Projection$1.projections.get(json.projName); - if(!ourProj){ - callback(srsCode); - return; - } - if (json.datumCode && json.datumCode !== 'none') { - var datumDef = match(exports$3, json.datumCode); - if (datumDef) { - json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null; - json.ellps = datumDef.ellipse; - json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode; - } - } - json.k0 = json.k0 || 1.0; - json.axis = json.axis || 'enu'; - json.ellps = json.ellps || 'wgs84'; - var sphere_ = sphere(json.a, json.b, json.rf, json.ellps, json.sphere); - var ecc = eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A); - var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2); - - extend(this, json); // transfer everything over from the projection because we don't know what we'll need - extend(this, ourProj); // transfer all the methods from the projection - - // copy the 4 things over we calulated in deriveConstants.sphere - this.a = sphere_.a; - this.b = sphere_.b; - this.rf = sphere_.rf; - this.sphere = sphere_.sphere; - - // copy the 3 things we calculated in deriveConstants.eccentricity - this.es = ecc.es; - this.e = ecc.e; - this.ep2 = ecc.ep2; - - // add in the datum object - this.datum = datumObj; - - // init the projection - this.init(); - - // legecy callback from back in the day when it went to spatialreference.org - callback(null, this); - - } - Projection$1.projections = projections; - Projection$1.projections.start(); - - function compareDatums(source, dest) { - if (source.datum_type !== dest.datum_type) { - return false; // false, datums are not equal - } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) { - // the tolerance for es is to ensure that GRS80 and WGS84 - // are considered identical - return false; - } else if (source.datum_type === PJD_3PARAM) { - return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]); - } else if (source.datum_type === PJD_7PARAM) { - return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]); - } else { - return true; // datums are equal - } - } // cs_compare_datums() - - /* - * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates - * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z), - * according to the current ellipsoid parameters. - * - * Latitude : Geodetic latitude in radians (input) - * Longitude : Geodetic longitude in radians (input) - * Height : Geodetic height, in meters (input) - * X : Calculated Geocentric X coordinate, in meters (output) - * Y : Calculated Geocentric Y coordinate, in meters (output) - * Z : Calculated Geocentric Z coordinate, in meters (output) - * - */ - function geodeticToGeocentric(p, es, a) { - var Longitude = p.x; - var Latitude = p.y; - var Height = p.z ? p.z : 0; //Z value not always supplied - - var Rn; /* Earth radius at location */ - var Sin_Lat; /* Math.sin(Latitude) */ - var Sin2_Lat; /* Square of Math.sin(Latitude) */ - var Cos_Lat; /* Math.cos(Latitude) */ - - /* - ** Don't blow up if Latitude is just a little out of the value - ** range as it may just be a rounding issue. Also removed longitude - ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001. - */ - if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) { - Latitude = -HALF_PI; - } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) { - Latitude = HALF_PI; - } else if ((Latitude < -HALF_PI) || (Latitude > HALF_PI)) { - /* Latitude out of range */ - //..reportError('geocent:lat out of range:' + Latitude); - return null; - } - - if (Longitude > Math.PI) { - Longitude -= (2 * Math.PI); - } - Sin_Lat = Math.sin(Latitude); - Cos_Lat = Math.cos(Latitude); - Sin2_Lat = Sin_Lat * Sin_Lat; - Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat)); - return { - x: (Rn + Height) * Cos_Lat * Math.cos(Longitude), - y: (Rn + Height) * Cos_Lat * Math.sin(Longitude), - z: ((Rn * (1 - es)) + Height) * Sin_Lat - }; - } // cs_geodetic_to_geocentric() - - function geocentricToGeodetic(p, es, a, b) { - /* local defintions and variables */ - /* end-criterium of loop, accuracy of sin(Latitude) */ - var genau = 1e-12; - var genau2 = (genau * genau); - var maxiter = 30; - - var P; /* distance between semi-minor axis and location */ - var RR; /* distance between center and location */ - var CT; /* sin of geocentric latitude */ - var ST; /* cos of geocentric latitude */ - var RX; - var RK; - var RN; /* Earth radius at location */ - var CPHI0; /* cos of start or old geodetic latitude in iterations */ - var SPHI0; /* sin of start or old geodetic latitude in iterations */ - var CPHI; /* cos of searched geodetic latitude */ - var SPHI; /* sin of searched geodetic latitude */ - var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */ - var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */ - - var X = p.x; - var Y = p.y; - var Z = p.z ? p.z : 0.0; //Z value not always supplied - var Longitude; - var Latitude; - var Height; - - P = Math.sqrt(X * X + Y * Y); - RR = Math.sqrt(X * X + Y * Y + Z * Z); - - /* special cases for latitude and longitude */ - if (P / a < genau) { - - /* special case, if P=0. (X=0., Y=0.) */ - Longitude = 0.0; - - /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis - * of ellipsoid (=center of mass), Latitude becomes PI/2 */ - if (RR / a < genau) { - Latitude = HALF_PI; - Height = -b; - return { - x: p.x, - y: p.y, - z: p.z - }; - } - } else { - /* ellipsoidal (geodetic) longitude - * interval: -PI < Longitude <= +PI */ - Longitude = Math.atan2(Y, X); - } - - /* -------------------------------------------------------------- - * Following iterative algorithm was developped by - * "Institut for Erdmessung", University of Hannover, July 1988. - * Internet: www.ife.uni-hannover.de - * Iterative computation of CPHI,SPHI and Height. - * Iteration of CPHI and SPHI to 10**-12 radian resp. - * 2*10**-7 arcsec. - * -------------------------------------------------------------- - */ - CT = Z / RR; - ST = P / RR; - RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST); - CPHI0 = ST * (1.0 - es) * RX; - SPHI0 = CT * RX; - iter = 0; - - /* loop to find sin(Latitude) resp. Latitude - * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */ - do { - iter++; - RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0); - - /* ellipsoidal (geodetic) height */ - Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0); - - RK = es * RN / (RN + Height); - RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST); - CPHI = ST * (1.0 - RK) * RX; - SPHI = CT * RX; - SDPHI = SPHI * CPHI0 - CPHI * SPHI0; - CPHI0 = CPHI; - SPHI0 = SPHI; - } - while (SDPHI * SDPHI > genau2 && iter < maxiter); - - /* ellipsoidal (geodetic) latitude */ - Latitude = Math.atan(SPHI / Math.abs(CPHI)); - return { - x: Longitude, - y: Latitude, - z: Height - }; - } // cs_geocentric_to_geodetic() - - /****************************************************************/ - // pj_geocentic_to_wgs84( p ) - // p = point to transform in geocentric coordinates (x,y,z) - - - /** point object, nothing fancy, just allows values to be - passed back and forth by reference rather than by value. - Other point classes may be used as long as they have - x and y properties, which will get modified in the transform method. - */ - function geocentricToWgs84(p, datum_type, datum_params) { - - if (datum_type === PJD_3PARAM) { - // if( x[io] === HUGE_VAL ) - // continue; - return { - x: p.x + datum_params[0], - y: p.y + datum_params[1], - z: p.z + datum_params[2], - }; - } else if (datum_type === PJD_7PARAM) { - var Dx_BF = datum_params[0]; - var Dy_BF = datum_params[1]; - var Dz_BF = datum_params[2]; - var Rx_BF = datum_params[3]; - var Ry_BF = datum_params[4]; - var Rz_BF = datum_params[5]; - var M_BF = datum_params[6]; - // if( x[io] === HUGE_VAL ) - // continue; - return { - x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF, - y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF, - z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF - }; - } - } // cs_geocentric_to_wgs84 - - /****************************************************************/ - // pj_geocentic_from_wgs84() - // coordinate system definition, - // point to transform in geocentric coordinates (x,y,z) - function geocentricFromWgs84(p, datum_type, datum_params) { - - if (datum_type === PJD_3PARAM) { - //if( x[io] === HUGE_VAL ) - // continue; - return { - x: p.x - datum_params[0], - y: p.y - datum_params[1], - z: p.z - datum_params[2], - }; - - } else if (datum_type === PJD_7PARAM) { - var Dx_BF = datum_params[0]; - var Dy_BF = datum_params[1]; - var Dz_BF = datum_params[2]; - var Rx_BF = datum_params[3]; - var Ry_BF = datum_params[4]; - var Rz_BF = datum_params[5]; - var M_BF = datum_params[6]; - var x_tmp = (p.x - Dx_BF) / M_BF; - var y_tmp = (p.y - Dy_BF) / M_BF; - var z_tmp = (p.z - Dz_BF) / M_BF; - //if( x[io] === HUGE_VAL ) - // continue; - - return { - x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp, - y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp, - z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp - }; - } //cs_geocentric_from_wgs84() - } - - function checkParams(type) { - return (type === PJD_3PARAM || type === PJD_7PARAM); - } - - var datum_transform = function(source, dest, point) { - // Short cut if the datums are identical. - if (compareDatums(source, dest)) { - return point; // in this case, zero is sucess, - // whereas cs_compare_datums returns 1 to indicate TRUE - // confusing, should fix this - } - - // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest - if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) { - return point; - } - - // If this datum requires grid shifts, then apply it to geodetic coordinates. - - // Do we need to go through geocentric coordinates? - if (source.es === dest.es && source.a === dest.a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) { - return point; - } - - // Convert to geocentric coordinates. - point = geodeticToGeocentric(point, source.es, source.a); - // Convert between datums - if (checkParams(source.datum_type)) { - point = geocentricToWgs84(point, source.datum_type, source.datum_params); - } - if (checkParams(dest.datum_type)) { - point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params); - } - return geocentricToGeodetic(point, dest.es, dest.a, dest.b); - - }; - - var adjust_axis = function(crs, denorm, point) { - var xin = point.x, - yin = point.y, - zin = point.z || 0.0; - var v, t, i; - var out = {}; - for (i = 0; i < 3; i++) { - if (denorm && i === 2 && point.z === undefined) { - continue; - } - if (i === 0) { - v = xin; - t = 'x'; - } - else if (i === 1) { - v = yin; - t = 'y'; - } - else { - v = zin; - t = 'z'; - } - switch (crs.axis[i]) { - case 'e': - out[t] = v; - break; - case 'w': - out[t] = -v; - break; - case 'n': - out[t] = v; - break; - case 's': - out[t] = -v; - break; - case 'u': - if (point[t] !== undefined) { - out.z = v; - } - break; - case 'd': - if (point[t] !== undefined) { - out.z = -v; - } - break; - default: - //console.log("ERROR: unknow axis ("+crs.axis[i]+") - check definition of "+crs.projName); - return null; - } - } - return out; - }; - - var toPoint = function (array){ - var out = { - x: array[0], - y: array[1] - }; - if (array.length>2) { - out.z = array[2]; - } - if (array.length>3) { - out.m = array[3]; - } - return out; - }; - - function checkNotWGS(source, dest) { - return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84'); - } - - function transform(source, dest, point) { - var wgs84; - if (Array.isArray(point)) { - point = toPoint(point); - } - - // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84 - if (source.datum && dest.datum && checkNotWGS(source, dest)) { - wgs84 = new Projection$1('WGS84'); - point = transform(source, wgs84, point); - source = wgs84; - } - // DGR, 2010/11/12 - if (source.axis !== 'enu') { - point = adjust_axis(source, false, point); - } - // Transform source points to long/lat, if they aren't already. - if (source.projName === 'longlat') { - point = { - x: point.x * D2R, - y: point.y * D2R - }; - } - else { - if (source.to_meter) { - point = { - x: point.x * source.to_meter, - y: point.y * source.to_meter - }; - } - point = source.inverse(point); // Convert Cartesian to longlat - } - // Adjust for the prime meridian if necessary - if (source.from_greenwich) { - point.x += source.from_greenwich; - } - - // Convert datums if needed, and if possible. - point = datum_transform(source.datum, dest.datum, point); - - // Adjust for the prime meridian if necessary - if (dest.from_greenwich) { - point = { - x: point.x - dest.from_greenwich, - y: point.y - }; - } - - if (dest.projName === 'longlat') { - // convert radians to decimal degrees - point = { - x: point.x * R2D, - y: point.y * R2D - }; - } else { // else project - point = dest.forward(point); - if (dest.to_meter) { - point = { - x: point.x / dest.to_meter, - y: point.y / dest.to_meter - }; - } - } - - // DGR, 2010/11/12 - if (dest.axis !== 'enu') { - return adjust_axis(dest, true, point); - } - - return point; - } - - var wgs84 = Projection$1('WGS84'); - - function transformer(from, to, coords) { - var transformedArray; - if (Array.isArray(coords)) { - transformedArray = transform(from, to, coords); - if (coords.length === 3) { - return [transformedArray.x, transformedArray.y, transformedArray.z]; - } - else { - return [transformedArray.x, transformedArray.y]; - } - } - else { - return transform(from, to, coords); - } - } - - function checkProj(item) { - if (item instanceof Projection$1) { - return item; - } - if (item.oProj) { - return item.oProj; - } - return Projection$1(item); - } - function proj4$1(fromProj, toProj, coord) { - fromProj = checkProj(fromProj); - var single = false; - var obj; - if (typeof toProj === 'undefined') { - toProj = fromProj; - fromProj = wgs84; - single = true; - } - else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) { - coord = toProj; - toProj = fromProj; - fromProj = wgs84; - single = true; - } - toProj = checkProj(toProj); - if (coord) { - return transformer(fromProj, toProj, coord); - } - else { - obj = { - forward: function(coords) { - return transformer(fromProj, toProj, coords); - }, - inverse: function(coords) { - return transformer(toProj, fromProj, coords); - } - }; - if (single) { - obj.oProj = toProj; - } - return obj; - } - } - - /** - * UTM zones are grouped, and assigned to one of a group of 6 - * sets. - * - * {int} @private - */ - var NUM_100K_SETS = 6; - - /** - * The column letters (for easting) of the lower left value, per - * set. - * - * {string} @private - */ - var SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS'; - - /** - * The row letters (for northing) of the lower left value, per - * set. - * - * {string} @private - */ - var SET_ORIGIN_ROW_LETTERS = 'AFAFAF'; - - var A = 65; // A - var I = 73; // I - var O = 79; // O - var V = 86; // V - var Z = 90; // Z - var mgrs = { - forward: forward$1, - inverse: inverse$1, - toPoint: toPoint$1 - }; - /** - * Conversion of lat/lon to MGRS. - * - * @param {object} ll Object literal with lat and lon properties on a - * WGS84 ellipsoid. - * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for - * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5. - * @return {string} the MGRS string for the given location and accuracy. - */ - function forward$1(ll, accuracy) { - accuracy = accuracy || 5; // default accuracy 1m - return encode(LLtoUTM({ - lat: ll[1], - lon: ll[0] - }), accuracy); - } - - /** - * Conversion of MGRS to lat/lon. - * - * @param {string} mgrs MGRS string. - * @return {array} An array with left (longitude), bottom (latitude), right - * (longitude) and top (latitude) values in WGS84, representing the - * bounding box for the provided MGRS reference. - */ - function inverse$1(mgrs) { - var bbox = UTMtoLL(decode(mgrs.toUpperCase())); - if (bbox.lat && bbox.lon) { - return [bbox.lon, bbox.lat, bbox.lon, bbox.lat]; - } - return [bbox.left, bbox.bottom, bbox.right, bbox.top]; - } - - function toPoint$1(mgrs) { - var bbox = UTMtoLL(decode(mgrs.toUpperCase())); - if (bbox.lat && bbox.lon) { - return [bbox.lon, bbox.lat]; - } - return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2]; - } - /** - * Conversion from degrees to radians. - * - * @private - * @param {number} deg the angle in degrees. - * @return {number} the angle in radians. - */ - function degToRad(deg) { - return (deg * (Math.PI / 180.0)); - } - - /** - * Conversion from radians to degrees. - * - * @private - * @param {number} rad the angle in radians. - * @return {number} the angle in degrees. - */ - function radToDeg(rad) { - return (180.0 * (rad / Math.PI)); - } - - /** - * Converts a set of Longitude and Latitude co-ordinates to UTM - * using the WGS84 ellipsoid. - * - * @private - * @param {object} ll Object literal with lat and lon properties - * representing the WGS84 coordinate to be converted. - * @return {object} Object literal containing the UTM value with easting, - * northing, zoneNumber and zoneLetter properties, and an optional - * accuracy property in digits. Returns null if the conversion failed. - */ - function LLtoUTM(ll) { - var Lat = ll.lat; - var Long = ll.lon; - var a = 6378137.0; //ellip.radius; - var eccSquared = 0.00669438; //ellip.eccsq; - var k0 = 0.9996; - var LongOrigin; - var eccPrimeSquared; - var N, T, C, A, M; - var LatRad = degToRad(Lat); - var LongRad = degToRad(Long); - var LongOriginRad; - var ZoneNumber; - // (int) - ZoneNumber = Math.floor((Long + 180) / 6) + 1; - - //Make sure the longitude 180.00 is in Zone 60 - if (Long === 180) { - ZoneNumber = 60; - } - - // Special zone for Norway - if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) { - ZoneNumber = 32; - } - - // Special zones for Svalbard - if (Lat >= 72.0 && Lat < 84.0) { - if (Long >= 0.0 && Long < 9.0) { - ZoneNumber = 31; - } - else if (Long >= 9.0 && Long < 21.0) { - ZoneNumber = 33; - } - else if (Long >= 21.0 && Long < 33.0) { - ZoneNumber = 35; - } - else if (Long >= 33.0 && Long < 42.0) { - ZoneNumber = 37; - } - } - - LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin - // in middle of - // zone - LongOriginRad = degToRad(LongOrigin); - - eccPrimeSquared = (eccSquared) / (1 - eccSquared); - - N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad)); - T = Math.tan(LatRad) * Math.tan(LatRad); - C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad); - A = Math.cos(LatRad) * (LongRad - LongOriginRad); - - M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad)); - - var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0); - - var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0))); - if (Lat < 0.0) { - UTMNorthing += 10000000.0; //10000000 meter offset for - // southern hemisphere - } - - return { - northing: Math.round(UTMNorthing), - easting: Math.round(UTMEasting), - zoneNumber: ZoneNumber, - zoneLetter: getLetterDesignator(Lat) - }; - } - - /** - * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience - * class where the Zone can be specified as a single string eg."60N" which - * is then broken down into the ZoneNumber and ZoneLetter. - * - * @private - * @param {object} utm An object literal with northing, easting, zoneNumber - * and zoneLetter properties. If an optional accuracy property is - * provided (in meters), a bounding box will be returned instead of - * latitude and longitude. - * @return {object} An object literal containing either lat and lon values - * (if no accuracy was provided), or top, right, bottom and left values - * for the bounding box calculated according to the provided accuracy. - * Returns null if the conversion failed. - */ - function UTMtoLL(utm) { - - var UTMNorthing = utm.northing; - var UTMEasting = utm.easting; - var zoneLetter = utm.zoneLetter; - var zoneNumber = utm.zoneNumber; - // check the ZoneNummber is valid - if (zoneNumber < 0 || zoneNumber > 60) { - return null; - } - - var k0 = 0.9996; - var a = 6378137.0; //ellip.radius; - var eccSquared = 0.00669438; //ellip.eccsq; - var eccPrimeSquared; - var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared)); - var N1, T1, C1, R1, D, M; - var LongOrigin; - var mu, phi1Rad; - - // remove 500,000 meter offset for longitude - var x = UTMEasting - 500000.0; - var y = UTMNorthing; - - // We must know somehow if we are in the Northern or Southern - // hemisphere, this is the only time we use the letter So even - // if the Zone letter isn't exactly correct it should indicate - // the hemisphere correctly - if (zoneLetter < 'N') { - y -= 10000000.0; // remove 10,000,000 meter offset used - // for southern hemisphere - } - - // There are 60 zones with zone 1 being at West -180 to -174 - LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin - // in middle of - // zone - - eccPrimeSquared = (eccSquared) / (1 - eccSquared); - - M = y / k0; - mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256)); - - phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu); - // double phi1 = ProjMath.radToDeg(phi1Rad); - - N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad)); - T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad); - C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad); - R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5); - D = x / (N1 * k0); - - var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720); - lat = radToDeg(lat); - - var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad); - lon = LongOrigin + radToDeg(lon); - - var result; - if (utm.accuracy) { - var topRight = UTMtoLL({ - northing: utm.northing + utm.accuracy, - easting: utm.easting + utm.accuracy, - zoneLetter: utm.zoneLetter, - zoneNumber: utm.zoneNumber - }); - result = { - top: topRight.lat, - right: topRight.lon, - bottom: lat, - left: lon - }; - } - else { - result = { - lat: lat, - lon: lon - }; - } - return result; - } - - /** - * Calculates the MGRS letter designator for the given latitude. - * - * @private - * @param {number} lat The latitude in WGS84 to get the letter designator - * for. - * @return {char} The letter designator. - */ - function getLetterDesignator(lat) { - //This is here as an error flag to show that the Latitude is - //outside MGRS limits - var LetterDesignator = 'Z'; - - if ((84 >= lat) && (lat >= 72)) { - LetterDesignator = 'X'; - } - else if ((72 > lat) && (lat >= 64)) { - LetterDesignator = 'W'; - } - else if ((64 > lat) && (lat >= 56)) { - LetterDesignator = 'V'; - } - else if ((56 > lat) && (lat >= 48)) { - LetterDesignator = 'U'; - } - else if ((48 > lat) && (lat >= 40)) { - LetterDesignator = 'T'; - } - else if ((40 > lat) && (lat >= 32)) { - LetterDesignator = 'S'; - } - else if ((32 > lat) && (lat >= 24)) { - LetterDesignator = 'R'; - } - else if ((24 > lat) && (lat >= 16)) { - LetterDesignator = 'Q'; - } - else if ((16 > lat) && (lat >= 8)) { - LetterDesignator = 'P'; - } - else if ((8 > lat) && (lat >= 0)) { - LetterDesignator = 'N'; - } - else if ((0 > lat) && (lat >= -8)) { - LetterDesignator = 'M'; - } - else if ((-8 > lat) && (lat >= -16)) { - LetterDesignator = 'L'; - } - else if ((-16 > lat) && (lat >= -24)) { - LetterDesignator = 'K'; - } - else if ((-24 > lat) && (lat >= -32)) { - LetterDesignator = 'J'; - } - else if ((-32 > lat) && (lat >= -40)) { - LetterDesignator = 'H'; - } - else if ((-40 > lat) && (lat >= -48)) { - LetterDesignator = 'G'; - } - else if ((-48 > lat) && (lat >= -56)) { - LetterDesignator = 'F'; - } - else if ((-56 > lat) && (lat >= -64)) { - LetterDesignator = 'E'; - } - else if ((-64 > lat) && (lat >= -72)) { - LetterDesignator = 'D'; - } - else if ((-72 > lat) && (lat >= -80)) { - LetterDesignator = 'C'; - } - return LetterDesignator; - } - - /** - * Encodes a UTM location as MGRS string. - * - * @private - * @param {object} utm An object literal with easting, northing, - * zoneLetter, zoneNumber - * @param {number} accuracy Accuracy in digits (1-5). - * @return {string} MGRS string for the given UTM location. - */ - function encode(utm, accuracy) { - // prepend with leading zeroes - var seasting = "00000" + utm.easting, - snorthing = "00000" + utm.northing; - - return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy); - } - - /** - * Get the two letter 100k designator for a given UTM easting, - * northing and zone number value. - * - * @private - * @param {number} easting - * @param {number} northing - * @param {number} zoneNumber - * @return the two letter 100k designator for the given UTM location. - */ - function get100kID(easting, northing, zoneNumber) { - var setParm = get100kSetForZone(zoneNumber); - var setColumn = Math.floor(easting / 100000); - var setRow = Math.floor(northing / 100000) % 20; - return getLetter100kID(setColumn, setRow, setParm); - } - - /** - * Given a UTM zone number, figure out the MGRS 100K set it is in. - * - * @private - * @param {number} i An UTM zone number. - * @return {number} the 100k set the UTM zone is in. - */ - function get100kSetForZone(i) { - var setParm = i % NUM_100K_SETS; - if (setParm === 0) { - setParm = NUM_100K_SETS; - } - - return setParm; - } - - /** - * Get the two-letter MGRS 100k designator given information - * translated from the UTM northing, easting and zone number. - * - * @private - * @param {number} column the column index as it relates to the MGRS - * 100k set spreadsheet, created from the UTM easting. - * Values are 1-8. - * @param {number} row the row index as it relates to the MGRS 100k set - * spreadsheet, created from the UTM northing value. Values - * are from 0-19. - * @param {number} parm the set block, as it relates to the MGRS 100k set - * spreadsheet, created from the UTM zone. Values are from - * 1-60. - * @return two letter MGRS 100k code. - */ - function getLetter100kID(column, row, parm) { - // colOrigin and rowOrigin are the letters at the origin of the set - var index = parm - 1; - var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index); - var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index); - - // colInt and rowInt are the letters to build to return - var colInt = colOrigin + column - 1; - var rowInt = rowOrigin + row; - var rollover = false; - - if (colInt > Z) { - colInt = colInt - Z + A - 1; - rollover = true; - } - - if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) { - colInt++; - } - - if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) { - colInt++; - - if (colInt === I) { - colInt++; - } - } - - if (colInt > Z) { - colInt = colInt - Z + A - 1; - } - - if (rowInt > V) { - rowInt = rowInt - V + A - 1; - rollover = true; - } - else { - rollover = false; - } - - if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) { - rowInt++; - } - - if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) { - rowInt++; - - if (rowInt === I) { - rowInt++; - } - } - - if (rowInt > V) { - rowInt = rowInt - V + A - 1; - } - - var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt); - return twoLetter; - } - - /** - * Decode the UTM parameters from a MGRS string. - * - * @private - * @param {string} mgrsString an UPPERCASE coordinate string is expected. - * @return {object} An object literal with easting, northing, zoneLetter, - * zoneNumber and accuracy (in meters) properties. - */ - function decode(mgrsString) { - - if (mgrsString && mgrsString.length === 0) { - throw ("MGRSPoint coverting from nothing"); - } - - var length = mgrsString.length; - - var hunK = null; - var sb = ""; - var testChar; - var i = 0; - - // get Zone number - while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) { - if (i >= 2) { - throw ("MGRSPoint bad conversion from: " + mgrsString); - } - sb += testChar; - i++; - } - - var zoneNumber = parseInt(sb, 10); - - if (i === 0 || i + 3 > length) { - // A good MGRS string has to be 4-5 digits long, - // ##AAA/#AAA at least. - throw ("MGRSPoint bad conversion from: " + mgrsString); - } - - var zoneLetter = mgrsString.charAt(i++); - - // Should we check the zone letter here? Why not. - if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') { - throw ("MGRSPoint zone letter " + zoneLetter + " not handled: " + mgrsString); - } - - hunK = mgrsString.substring(i, i += 2); - - var set = get100kSetForZone(zoneNumber); - - var east100k = getEastingFromChar(hunK.charAt(0), set); - var north100k = getNorthingFromChar(hunK.charAt(1), set); - - // We have a bug where the northing may be 2000000 too low. - // How - // do we know when to roll over? - - while (north100k < getMinNorthing(zoneLetter)) { - north100k += 2000000; - } - - // calculate the char index for easting/northing separator - var remainder = length - i; - - if (remainder % 2 !== 0) { - throw ("MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + mgrsString); - } - - var sep = remainder / 2; - - var sepEasting = 0.0; - var sepNorthing = 0.0; - var accuracyBonus, sepEastingString, sepNorthingString, easting, northing; - if (sep > 0) { - accuracyBonus = 100000.0 / Math.pow(10, sep); - sepEastingString = mgrsString.substring(i, i + sep); - sepEasting = parseFloat(sepEastingString) * accuracyBonus; - sepNorthingString = mgrsString.substring(i + sep); - sepNorthing = parseFloat(sepNorthingString) * accuracyBonus; - } - - easting = sepEasting + east100k; - northing = sepNorthing + north100k; - - return { - easting: easting, - northing: northing, - zoneLetter: zoneLetter, - zoneNumber: zoneNumber, - accuracy: accuracyBonus - }; - } - - /** - * Given the first letter from a two-letter MGRS 100k zone, and given the - * MGRS table set for the zone number, figure out the easting value that - * should be added to the other, secondary easting value. - * - * @private - * @param {char} e The first letter from a two-letter MGRS 100´k zone. - * @param {number} set The MGRS table set for the zone number. - * @return {number} The easting value for the given letter and set. - */ - function getEastingFromChar(e, set) { - // colOrigin is the letter at the origin of the set for the - // column - var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1); - var eastingValue = 100000.0; - var rewindMarker = false; - - while (curCol !== e.charCodeAt(0)) { - curCol++; - if (curCol === I) { - curCol++; - } - if (curCol === O) { - curCol++; - } - if (curCol > Z) { - if (rewindMarker) { - throw ("Bad character: " + e); - } - curCol = A; - rewindMarker = true; - } - eastingValue += 100000.0; - } - - return eastingValue; - } - - /** - * Given the second letter from a two-letter MGRS 100k zone, and given the - * MGRS table set for the zone number, figure out the northing value that - * should be added to the other, secondary northing value. You have to - * remember that Northings are determined from the equator, and the vertical - * cycle of letters mean a 2000000 additional northing meters. This happens - * approx. every 18 degrees of latitude. This method does *NOT* count any - * additional northings. You have to figure out how many 2000000 meters need - * to be added for the zone letter of the MGRS coordinate. - * - * @private - * @param {char} n Second letter of the MGRS 100k zone - * @param {number} set The MGRS table set number, which is dependent on the - * UTM zone number. - * @return {number} The northing value for the given letter and set. - */ - function getNorthingFromChar(n, set) { - - if (n > 'V') { - throw ("MGRSPoint given invalid Northing " + n); - } - - // rowOrigin is the letter at the origin of the set for the - // column - var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1); - var northingValue = 0.0; - var rewindMarker = false; - - while (curRow !== n.charCodeAt(0)) { - curRow++; - if (curRow === I) { - curRow++; - } - if (curRow === O) { - curRow++; - } - // fixing a bug making whole application hang in this loop - // when 'n' is a wrong character - if (curRow > V) { - if (rewindMarker) { // making sure that this loop ends - throw ("Bad character: " + n); - } - curRow = A; - rewindMarker = true; - } - northingValue += 100000.0; - } - - return northingValue; - } - - /** - * The function getMinNorthing returns the minimum northing value of a MGRS - * zone. - * - * Ported from Geotrans' c Lattitude_Band_Value structure table. - * - * @private - * @param {char} zoneLetter The MGRS zone to get the min northing for. - * @return {number} - */ - function getMinNorthing(zoneLetter) { - var northing; - switch (zoneLetter) { - case 'C': - northing = 1100000.0; - break; - case 'D': - northing = 2000000.0; - break; - case 'E': - northing = 2800000.0; - break; - case 'F': - northing = 3700000.0; - break; - case 'G': - northing = 4600000.0; - break; - case 'H': - northing = 5500000.0; - break; - case 'J': - northing = 6400000.0; - break; - case 'K': - northing = 7300000.0; - break; - case 'L': - northing = 8200000.0; - break; - case 'M': - northing = 9100000.0; - break; - case 'N': - northing = 0.0; - break; - case 'P': - northing = 800000.0; - break; - case 'Q': - northing = 1700000.0; - break; - case 'R': - northing = 2600000.0; - break; - case 'S': - northing = 3500000.0; - break; - case 'T': - northing = 4400000.0; - break; - case 'U': - northing = 5300000.0; - break; - case 'V': - northing = 6200000.0; - break; - case 'W': - northing = 7000000.0; - break; - case 'X': - northing = 7900000.0; - break; - default: - northing = -1.0; - } - if (northing >= 0.0) { - return northing; - } - else { - throw ("Invalid zone letter: " + zoneLetter); - } - - } - - function Point(x, y, z) { - if (!(this instanceof Point)) { - return new Point(x, y, z); - } - if (Array.isArray(x)) { - this.x = x[0]; - this.y = x[1]; - this.z = x[2] || 0.0; - } else if(typeof x === 'object') { - this.x = x.x; - this.y = x.y; - this.z = x.z || 0.0; - } else if (typeof x === 'string' && typeof y === 'undefined') { - var coords = x.split(','); - this.x = parseFloat(coords[0], 10); - this.y = parseFloat(coords[1], 10); - this.z = parseFloat(coords[2], 10) || 0.0; - } else { - this.x = x; - this.y = y; - this.z = z || 0.0; - } - console.warn('proj4.Point will be removed in version 3, use proj4.toPoint'); - } - - Point.fromMGRS = function(mgrsStr) { - return new Point(toPoint$1(mgrsStr)); - }; - Point.prototype.toMGRS = function(accuracy) { - return forward$1([this.x, this.y], accuracy); - }; - - var version = "2.4.3"; - - var C00 = 1; - var C02 = 0.25; - var C04 = 0.046875; - var C06 = 0.01953125; - var C08 = 0.01068115234375; - var C22 = 0.75; - var C44 = 0.46875; - var C46 = 0.01302083333333333333; - var C48 = 0.00712076822916666666; - var C66 = 0.36458333333333333333; - var C68 = 0.00569661458333333333; - var C88 = 0.3076171875; - - var pj_enfn = function(es) { - var en = []; - en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08))); - en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08))); - var t = es * es; - en[2] = t * (C44 - es * (C46 + es * C48)); - t *= es; - en[3] = t * (C66 - es * C68); - en[4] = t * es * C88; - return en; - }; - - var pj_mlfn = function(phi, sphi, cphi, en) { - cphi *= sphi; - sphi *= sphi; - return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4])))); - }; - - var MAX_ITER = 20; - - var pj_inv_mlfn = function(arg, es, en) { - var k = 1 / (1 - es); - var phi = arg; - for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */ - var s = Math.sin(phi); - var t = 1 - es * s * s; - //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg; - //phi -= t * (t * Math.sqrt(t)) * k; - t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k; - phi -= t; - if (Math.abs(t) < EPSLN) { - return phi; - } - } - //..reportError("cass:pj_inv_mlfn: Convergence error"); - return phi; - }; - - // Heavily based on this tmerc projection implementation - // https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js - - function init$2() { - this.x0 = this.x0 !== undefined ? this.x0 : 0; - this.y0 = this.y0 !== undefined ? this.y0 : 0; - this.long0 = this.long0 !== undefined ? this.long0 : 0; - this.lat0 = this.lat0 !== undefined ? this.lat0 : 0; - - if (this.es) { - this.en = pj_enfn(this.es); - this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en); - } - } - - /** - Transverse Mercator Forward - long/lat to x/y - long/lat in radians - */ - function forward$2(p) { - var lon = p.x; - var lat = p.y; - - var delta_lon = adjust_lon(lon - this.long0); - var con; - var x, y; - var sin_phi = Math.sin(lat); - var cos_phi = Math.cos(lat); - - if (!this.es) { - var b = cos_phi * Math.sin(delta_lon); - - if ((Math.abs(Math.abs(b) - 1)) < EPSLN) { - return (93); - } - else { - x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0; - y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2)); - b = Math.abs(y); - - if (b >= 1) { - if ((b - 1) > EPSLN) { - return (93); - } - else { - y = 0; - } - } - else { - y = Math.acos(y); - } - - if (lat < 0) { - y = -y; - } - - y = this.a * this.k0 * (y - this.lat0) + this.y0; - } - } - else { - var al = cos_phi * delta_lon; - var als = Math.pow(al, 2); - var c = this.ep2 * Math.pow(cos_phi, 2); - var cs = Math.pow(c, 2); - var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0; - var t = Math.pow(tq, 2); - var ts = Math.pow(t, 2); - con = 1 - this.es * Math.pow(sin_phi, 2); - al = al / Math.sqrt(con); - var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en); - - x = this.a * (this.k0 * al * (1 + - als / 6 * (1 - t + c + - als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c + - als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) + - this.x0; - - y = this.a * (this.k0 * (ml - this.ml0 + - sin_phi * delta_lon * al / 2 * (1 + - als / 12 * (5 - t + 9 * c + 4 * cs + - als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c + - als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) + - this.y0; - } - - p.x = x; - p.y = y; - - return p; - } - - /** - Transverse Mercator Inverse - x/y to long/lat - */ - function inverse$2(p) { - var con, phi; - var lat, lon; - var x = (p.x - this.x0) * (1 / this.a); - var y = (p.y - this.y0) * (1 / this.a); - - if (!this.es) { - var f = Math.exp(x / this.k0); - var g = 0.5 * (f - 1 / f); - var temp = this.lat0 + y / this.k0; - var h = Math.cos(temp); - con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2))); - lat = Math.asin(con); - - if (y < 0) { - lat = -lat; - } - - if ((g === 0) && (h === 0)) { - lon = 0; - } - else { - lon = adjust_lon(Math.atan2(g, h) + this.long0); - } - } - else { // ellipsoidal form - con = this.ml0 + y / this.k0; - phi = pj_inv_mlfn(con, this.es, this.en); - - if (Math.abs(phi) < HALF_PI) { - var sin_phi = Math.sin(phi); - var cos_phi = Math.cos(phi); - var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0; - var c = this.ep2 * Math.pow(cos_phi, 2); - var cs = Math.pow(c, 2); - var t = Math.pow(tan_phi, 2); - var ts = Math.pow(t, 2); - con = 1 - this.es * Math.pow(sin_phi, 2); - var d = x * Math.sqrt(con) / this.k0; - var ds = Math.pow(d, 2); - con = con * tan_phi; - - lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 - - ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs - - ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c - - ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t)))); - - lon = adjust_lon(this.long0 + (d * (1 - - ds / 6 * (1 + 2 * t + c - - ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c - - ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi)); - } - else { - lat = HALF_PI * sign(y); - lon = 0; - } - } - - p.x = lon; - p.y = lat; - - return p; - } - - var names$3 = ["Transverse_Mercator", "Transverse Mercator", "tmerc"]; - var tmerc = { - init: init$2, - forward: forward$2, - inverse: inverse$2, - names: names$3 - }; - - var sinh = function(x) { - var r = Math.exp(x); - r = (r - 1 / r) / 2; - return r; - }; - - var hypot = function(x, y) { - x = Math.abs(x); - y = Math.abs(y); - var a = Math.max(x, y); - var b = Math.min(x, y) / (a ? a : 1); - - return a * Math.sqrt(1 + Math.pow(b, 2)); - }; - - var log1py = function(x) { - var y = 1 + x; - var z = y - 1; - - return z === 0 ? x : x * Math.log(y) / z; - }; - - var asinhy = function(x) { - var y = Math.abs(x); - y = log1py(y * (1 + y / (hypot(1, y) + 1))); - - return x < 0 ? -y : y; - }; - - var gatg = function(pp, B) { - var cos_2B = 2 * Math.cos(2 * B); - var i = pp.length - 1; - var h1 = pp[i]; - var h2 = 0; - var h; - - while (--i >= 0) { - h = -h2 + cos_2B * h1 + pp[i]; - h2 = h1; - h1 = h; - } - - return (B + h * Math.sin(2 * B)); - }; - - var clens = function(pp, arg_r) { - var r = 2 * Math.cos(arg_r); - var i = pp.length - 1; - var hr1 = pp[i]; - var hr2 = 0; - var hr; - - while (--i >= 0) { - hr = -hr2 + r * hr1 + pp[i]; - hr2 = hr1; - hr1 = hr; - } - - return Math.sin(arg_r) * hr; - }; - - var cosh = function(x) { - var r = Math.exp(x); - r = (r + 1 / r) / 2; - return r; - }; - - var clens_cmplx = function(pp, arg_r, arg_i) { - var sin_arg_r = Math.sin(arg_r); - var cos_arg_r = Math.cos(arg_r); - var sinh_arg_i = sinh(arg_i); - var cosh_arg_i = cosh(arg_i); - var r = 2 * cos_arg_r * cosh_arg_i; - var i = -2 * sin_arg_r * sinh_arg_i; - var j = pp.length - 1; - var hr = pp[j]; - var hi1 = 0; - var hr1 = 0; - var hi = 0; - var hr2; - var hi2; - - while (--j >= 0) { - hr2 = hr1; - hi2 = hi1; - hr1 = hr; - hi1 = hi; - hr = -hr2 + r * hr1 - i * hi1 + pp[j]; - hi = -hi2 + i * hr1 + r * hi1; - } - - r = sin_arg_r * cosh_arg_i; - i = cos_arg_r * sinh_arg_i; - - return [r * hr - i * hi, r * hi + i * hr]; - }; - - // Heavily based on this etmerc projection implementation - // https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js - - function init$3() { - if (this.es === undefined || this.es <= 0) { - throw new Error('incorrect elliptical usage'); - } - - this.x0 = this.x0 !== undefined ? this.x0 : 0; - this.y0 = this.y0 !== undefined ? this.y0 : 0; - this.long0 = this.long0 !== undefined ? this.long0 : 0; - this.lat0 = this.lat0 !== undefined ? this.lat0 : 0; - - this.cgb = []; - this.cbg = []; - this.utg = []; - this.gtu = []; - - var f = this.es / (1 + Math.sqrt(1 - this.es)); - var n = f / (2 - f); - var np = n; - - this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 )))))); - this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725)))))); - - np = np * n; - this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945))))); - this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945))))); - - np = np * n; - this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835)))); - this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835)))); - - np = np * n; - this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175))); - this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175))); - - np = np * n; - this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237)); - this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185)); - - np = np * n; - this.cgb[5] = np * (601676 / 22275); - this.cbg[5] = np * (444337 / 155925); - - np = Math.pow(n, 2); - this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256))); - - this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800)))))); - this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800)))))); - - this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720))))); - this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360))))); - - np = np * n; - this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 )))); - this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440)))); - - np = np * n; - this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600))); - this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600))); - - np = np * n; - this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680)); - this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840)); - - np = np * n; - this.utg[5] = np * (-20648693 / 638668800); - this.gtu[5] = np * (212378941 / 319334400); - - var Z = gatg(this.cbg, this.lat0); - this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z)); - } - - function forward$3(p) { - var Ce = adjust_lon(p.x - this.long0); - var Cn = p.y; - - Cn = gatg(this.cbg, Cn); - var sin_Cn = Math.sin(Cn); - var cos_Cn = Math.cos(Cn); - var sin_Ce = Math.sin(Ce); - var cos_Ce = Math.cos(Ce); - - Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn); - Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce)); - Ce = asinhy(Math.tan(Ce)); - - var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce); - - Cn = Cn + tmp[0]; - Ce = Ce + tmp[1]; - - var x; - var y; - - if (Math.abs(Ce) <= 2.623395162778) { - x = this.a * (this.Qn * Ce) + this.x0; - y = this.a * (this.Qn * Cn + this.Zb) + this.y0; - } - else { - x = Infinity; - y = Infinity; - } - - p.x = x; - p.y = y; - - return p; - } - - function inverse$3(p) { - var Ce = (p.x - this.x0) * (1 / this.a); - var Cn = (p.y - this.y0) * (1 / this.a); - - Cn = (Cn - this.Zb) / this.Qn; - Ce = Ce / this.Qn; - - var lon; - var lat; - - if (Math.abs(Ce) <= 2.623395162778) { - var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce); - - Cn = Cn + tmp[0]; - Ce = Ce + tmp[1]; - Ce = Math.atan(sinh(Ce)); - - var sin_Cn = Math.sin(Cn); - var cos_Cn = Math.cos(Cn); - var sin_Ce = Math.sin(Ce); - var cos_Ce = Math.cos(Ce); - - Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn)); - Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn); - - lon = adjust_lon(Ce + this.long0); - lat = gatg(this.cgb, Cn); - } - else { - lon = Infinity; - lat = Infinity; - } - - p.x = lon; - p.y = lat; - - return p; - } - - var names$4 = ["Extended_Transverse_Mercator", "Extended Transverse Mercator", "etmerc"]; - var etmerc = { - init: init$3, - forward: forward$3, - inverse: inverse$3, - names: names$4 - }; - - var adjust_zone = function(zone, lon) { - if (zone === undefined) { - zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1; - - if (zone < 0) { - return 0; - } else if (zone > 60) { - return 60; - } - } - return zone; - }; - - var dependsOn = 'etmerc'; - function init$4() { - var zone = adjust_zone(this.zone, this.long0); - if (zone === undefined) { - throw new Error('unknown utm zone'); - } - this.lat0 = 0; - this.long0 = ((6 * Math.abs(zone)) - 183) * D2R; - this.x0 = 500000; - this.y0 = this.utmSouth ? 10000000 : 0; - this.k0 = 0.9996; - - etmerc.init.apply(this); - this.forward = etmerc.forward; - this.inverse = etmerc.inverse; - } - - var names$5 = ["Universal Transverse Mercator System", "utm"]; - var utm = { - init: init$4, - names: names$5, - dependsOn: dependsOn - }; - - var srat = function(esinp, exp) { - return (Math.pow((1 - esinp) / (1 + esinp), exp)); - }; - - var MAX_ITER$1 = 20; - function init$6() { - var sphi = Math.sin(this.lat0); - var cphi = Math.cos(this.lat0); - cphi *= cphi; - this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi); - this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es)); - this.phic0 = Math.asin(sphi / this.C); - this.ratexp = 0.5 * this.C * this.e; - this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp)); - } - - function forward$5(p) { - var lon = p.x; - var lat = p.y; - - p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI; - p.x = this.C * lon; - return p; - } - - function inverse$5(p) { - var DEL_TOL = 1e-14; - var lon = p.x / this.C; - var lat = p.y; - var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C); - for (var i = MAX_ITER$1; i > 0; --i) { - lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI; - if (Math.abs(lat - p.y) < DEL_TOL) { - break; - } - p.y = lat; - } - /* convergence failed */ - if (!i) { - return null; - } - p.x = lon; - p.y = lat; - return p; - } - - var names$7 = ["gauss"]; - var gauss = { - init: init$6, - forward: forward$5, - inverse: inverse$5, - names: names$7 - }; - - function init$5() { - gauss.init.apply(this); - if (!this.rc) { - return; - } - this.sinc0 = Math.sin(this.phic0); - this.cosc0 = Math.cos(this.phic0); - this.R2 = 2 * this.rc; - if (!this.title) { - this.title = "Oblique Stereographic Alternative"; - } - } - - function forward$4(p) { - var sinc, cosc, cosl, k; - p.x = adjust_lon(p.x - this.long0); - gauss.forward.apply(this, [p]); - sinc = Math.sin(p.y); - cosc = Math.cos(p.y); - cosl = Math.cos(p.x); - k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl); - p.x = k * cosc * Math.sin(p.x); - p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl); - p.x = this.a * p.x + this.x0; - p.y = this.a * p.y + this.y0; - return p; - } - - function inverse$4(p) { - var sinc, cosc, lon, lat, rho; - p.x = (p.x - this.x0) / this.a; - p.y = (p.y - this.y0) / this.a; - - p.x /= this.k0; - p.y /= this.k0; - if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) { - var c = 2 * Math.atan2(rho, this.R2); - sinc = Math.sin(c); - cosc = Math.cos(c); - lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho); - lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc); - } - else { - lat = this.phic0; - lon = 0; - } - - p.x = lon; - p.y = lat; - gauss.inverse.apply(this, [p]); - p.x = adjust_lon(p.x + this.long0); - return p; - } - - var names$6 = ["Stereographic_North_Pole", "Oblique_Stereographic", "Polar_Stereographic", "sterea","Oblique Stereographic Alternative"]; - var sterea = { - init: init$5, - forward: forward$4, - inverse: inverse$4, - names: names$6 - }; - - function ssfn_(phit, sinphi, eccen) { - sinphi *= eccen; - return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen)); - } - - function init$7() { - this.coslat0 = Math.cos(this.lat0); - this.sinlat0 = Math.sin(this.lat0); - if (this.sphere) { - if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) { - this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts)); - } - } - else { - if (Math.abs(this.coslat0) <= EPSLN) { - if (this.lat0 > 0) { - //North pole - //trace('stere:north pole'); - this.con = 1; - } - else { - //South pole - //trace('stere:south pole'); - this.con = -1; - } - } - this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e)); - if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) { - this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts)); - } - this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0); - this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI; - this.cosX0 = Math.cos(this.X0); - this.sinX0 = Math.sin(this.X0); - } - } - - // Stereographic forward equations--mapping lat,long to x,y - function forward$6(p) { - var lon = p.x; - var lat = p.y; - var sinlat = Math.sin(lat); - var coslat = Math.cos(lat); - var A, X, sinX, cosX, ts, rh; - var dlon = adjust_lon(lon - this.long0); - - if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) { - //case of the origine point - //trace('stere:this is the origin point'); - p.x = NaN; - p.y = NaN; - return p; - } - if (this.sphere) { - //trace('stere:sphere case'); - A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon)); - p.x = this.a * A * coslat * Math.sin(dlon) + this.x0; - p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0; - return p; - } - else { - X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI; - cosX = Math.cos(X); - sinX = Math.sin(X); - if (Math.abs(this.coslat0) <= EPSLN) { - ts = tsfnz(this.e, lat * this.con, this.con * sinlat); - rh = 2 * this.a * this.k0 * ts / this.cons; - p.x = this.x0 + rh * Math.sin(lon - this.long0); - p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0); - //trace(p.toString()); - return p; - } - else if (Math.abs(this.sinlat0) < EPSLN) { - //Eq - //trace('stere:equateur'); - A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon)); - p.y = A * sinX; - } - else { - //other case - //trace('stere:normal case'); - A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon))); - p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0; - } - p.x = A * cosX * Math.sin(dlon) + this.x0; - } - //trace(p.toString()); - return p; - } - - //* Stereographic inverse equations--mapping x,y to lat/long - function inverse$6(p) { - p.x -= this.x0; - p.y -= this.y0; - var lon, lat, ts, ce, Chi; - var rh = Math.sqrt(p.x * p.x + p.y * p.y); - if (this.sphere) { - var c = 2 * Math.atan(rh / (0.5 * this.a * this.k0)); - lon = this.long0; - lat = this.lat0; - if (rh <= EPSLN) { - p.x = lon; - p.y = lat; - return p; - } - lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh); - if (Math.abs(this.coslat0) < EPSLN) { - if (this.lat0 > 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y)); - } - else { - lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y)); - } - } - else { - lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c))); - } - p.x = lon; - p.y = lat; - return p; - } - else { - if (Math.abs(this.coslat0) <= EPSLN) { - if (rh <= EPSLN) { - lat = this.lat0; - lon = this.long0; - p.x = lon; - p.y = lat; - //trace(p.toString()); - return p; - } - p.x *= this.con; - p.y *= this.con; - ts = rh * this.cons / (2 * this.a * this.k0); - lat = this.con * phi2z(this.e, ts); - lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y)); - } - else { - ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1)); - lon = this.long0; - if (rh <= EPSLN) { - Chi = this.X0; - } - else { - Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh); - lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce))); - } - lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi))); - } - } - p.x = lon; - p.y = lat; - - //trace(p.toString()); - return p; - - } - - var names$8 = ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)"]; - var stere = { - init: init$7, - forward: forward$6, - inverse: inverse$6, - names: names$8, - ssfn_: ssfn_ - }; - - /* - references: - Formules et constantes pour le Calcul pour la - projection cylindrique conforme à axe oblique et pour la transformation entre - des systèmes de référence. - http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf - */ - - function init$8() { - var phy0 = this.lat0; - this.lambda0 = this.long0; - var sinPhy0 = Math.sin(phy0); - var semiMajorAxis = this.a; - var invF = this.rf; - var flattening = 1 / invF; - var e2 = 2 * flattening - Math.pow(flattening, 2); - var e = this.e = Math.sqrt(e2); - this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2)); - this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4)); - this.b0 = Math.asin(sinPhy0 / this.alpha); - var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2)); - var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2)); - var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0)); - this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3; - } - - function forward$7(p) { - var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2)); - var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y))); - var S = -this.alpha * (Sa1 + Sa2) + this.K; - - // spheric latitude - var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4); - - // spheric longitude - var I = this.alpha * (p.x - this.lambda0); - - // psoeudo equatorial rotation - var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I))); - - var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I)); - - p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0; - p.x = this.R * rotI + this.x0; - return p; - } - - function inverse$7(p) { - var Y = p.x - this.x0; - var X = p.y - this.y0; - - var rotI = Y / this.R; - var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4); - - var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI)); - var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB))); - - var lambda = this.lambda0 + I / this.alpha; - - var S = 0; - var phy = b; - var prevPhy = -1000; - var iteration = 0; - while (Math.abs(phy - prevPhy) > 0.0000001) { - if (++iteration > 20) { - //...reportError("omercFwdInfinity"); - return; - } - //S = Math.log(Math.tan(Math.PI / 4 + phy / 2)); - S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2)); - prevPhy = phy; - phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2; - } - - p.x = lambda; - p.y = phy; - return p; - } - - var names$9 = ["somerc"]; - var somerc = { - init: init$8, - forward: forward$7, - inverse: inverse$7, - names: names$9 - }; - - /* Initialize the Oblique Mercator projection - ------------------------------------------*/ - function init$9() { - this.no_off = this.no_off || false; - this.no_rot = this.no_rot || false; - - if (isNaN(this.k0)) { - this.k0 = 1; - } - var sinlat = Math.sin(this.lat0); - var coslat = Math.cos(this.lat0); - var con = this.e * sinlat; - - this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4)); - this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con); - var t0 = tsfnz(this.e, this.lat0, sinlat); - var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con)); - if (dl * dl < 1) { - dl = 1; - } - var fl; - var gl; - if (!isNaN(this.longc)) { - //Central point and azimuth method - - if (this.lat0 >= 0) { - fl = dl + Math.sqrt(dl * dl - 1); - } - else { - fl = dl - Math.sqrt(dl * dl - 1); - } - this.el = fl * Math.pow(t0, this.bl); - gl = 0.5 * (fl - 1 / fl); - this.gamma0 = Math.asin(Math.sin(this.alpha) / dl); - this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl; - - } - else { - //2 points method - var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1)); - var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2)); - if (this.lat0 >= 0) { - this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl); - } - else { - this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl); - } - var hl = Math.pow(t1, this.bl); - var ll = Math.pow(t2, this.bl); - fl = this.el / hl; - gl = 0.5 * (fl - 1 / fl); - var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl); - var pl = (ll - hl) / (ll + hl); - var dlon12 = adjust_lon(this.long1 - this.long2); - this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl; - this.long0 = adjust_lon(this.long0); - var dlon10 = adjust_lon(this.long1 - this.long0); - this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl); - this.alpha = Math.asin(dl * Math.sin(this.gamma0)); - } - - if (this.no_off) { - this.uc = 0; - } - else { - if (this.lat0 >= 0) { - this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha)); - } - else { - this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha)); - } - } - - } - - /* Oblique Mercator forward equations--mapping lat,long to x,y - ----------------------------------------------------------*/ - function forward$8(p) { - var lon = p.x; - var lat = p.y; - var dlon = adjust_lon(lon - this.long0); - var us, vs; - var con; - if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) { - if (lat > 0) { - con = -1; - } - else { - con = 1; - } - vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5)); - us = -1 * con * HALF_PI * this.al / this.bl; - } - else { - var t = tsfnz(this.e, lat, Math.sin(lat)); - var ql = this.el / Math.pow(t, this.bl); - var sl = 0.5 * (ql - 1 / ql); - var tl = 0.5 * (ql + 1 / ql); - var vl = Math.sin(this.bl * (dlon)); - var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl; - if (Math.abs(Math.abs(ul) - 1) <= EPSLN) { - vs = Number.POSITIVE_INFINITY; - } - else { - vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl; - } - if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) { - us = this.al * this.bl * (dlon); - } - else { - us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl; - } - } - - if (this.no_rot) { - p.x = this.x0 + us; - p.y = this.y0 + vs; - } - else { - - us -= this.uc; - p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha); - p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha); - } - return p; - } - - function inverse$8(p) { - var us, vs; - if (this.no_rot) { - vs = p.y - this.y0; - us = p.x - this.x0; - } - else { - vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha); - us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha); - us += this.uc; - } - var qp = Math.exp(-1 * this.bl * vs / this.al); - var sp = 0.5 * (qp - 1 / qp); - var tp = 0.5 * (qp + 1 / qp); - var vp = Math.sin(this.bl * us / this.al); - var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp; - var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl); - if (Math.abs(up - 1) < EPSLN) { - p.x = this.long0; - p.y = HALF_PI; - } - else if (Math.abs(up + 1) < EPSLN) { - p.x = this.long0; - p.y = -1 * HALF_PI; - } - else { - p.y = phi2z(this.e, ts); - p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl); - } - return p; - } - - var names$10 = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"]; - var omerc = { - init: init$9, - forward: forward$8, - inverse: inverse$8, - names: names$10 - }; - - function init$10() { - - // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north - //double c_lat; /* center latitude */ - //double c_lon; /* center longitude */ - //double lat1; /* first standard parallel */ - //double lat2; /* second standard parallel */ - //double r_maj; /* major axis */ - //double r_min; /* minor axis */ - //double false_east; /* x offset in meters */ - //double false_north; /* y offset in meters */ - - if (!this.lat2) { - this.lat2 = this.lat1; - } //if lat2 is not defined - if (!this.k0) { - this.k0 = 1; - } - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - // Standard Parallels cannot be equal and on opposite sides of the equator - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - - var temp = this.b / this.a; - this.e = Math.sqrt(1 - temp * temp); - - var sin1 = Math.sin(this.lat1); - var cos1 = Math.cos(this.lat1); - var ms1 = msfnz(this.e, sin1, cos1); - var ts1 = tsfnz(this.e, this.lat1, sin1); - - var sin2 = Math.sin(this.lat2); - var cos2 = Math.cos(this.lat2); - var ms2 = msfnz(this.e, sin2, cos2); - var ts2 = tsfnz(this.e, this.lat2, sin2); - - var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0)); - - if (Math.abs(this.lat1 - this.lat2) > EPSLN) { - this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2); - } - else { - this.ns = sin1; - } - if (isNaN(this.ns)) { - this.ns = sin1; - } - this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns)); - this.rh = this.a * this.f0 * Math.pow(ts0, this.ns); - if (!this.title) { - this.title = "Lambert Conformal Conic"; - } - } - - // Lambert Conformal conic forward equations--mapping lat,long to x,y - // ----------------------------------------------------------------- - function forward$9(p) { - - var lon = p.x; - var lat = p.y; - - // singular cases : - if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) { - lat = sign(lat) * (HALF_PI - 2 * EPSLN); - } - - var con = Math.abs(Math.abs(lat) - HALF_PI); - var ts, rh1; - if (con > EPSLN) { - ts = tsfnz(this.e, lat, Math.sin(lat)); - rh1 = this.a * this.f0 * Math.pow(ts, this.ns); - } - else { - con = lat * this.ns; - if (con <= 0) { - return null; - } - rh1 = 0; - } - var theta = this.ns * adjust_lon(lon - this.long0); - p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0; - p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0; - - return p; - } - - // Lambert Conformal Conic inverse equations--mapping x,y to lat/long - // ----------------------------------------------------------------- - function inverse$9(p) { - - var rh1, con, ts; - var lat, lon; - var x = (p.x - this.x0) / this.k0; - var y = (this.rh - (p.y - this.y0) / this.k0); - if (this.ns > 0) { - rh1 = Math.sqrt(x * x + y * y); - con = 1; - } - else { - rh1 = -Math.sqrt(x * x + y * y); - con = -1; - } - var theta = 0; - if (rh1 !== 0) { - theta = Math.atan2((con * x), (con * y)); - } - if ((rh1 !== 0) || (this.ns > 0)) { - con = 1 / this.ns; - ts = Math.pow((rh1 / (this.a * this.f0)), con); - lat = phi2z(this.e, ts); - if (lat === -9999) { - return null; - } - } - else { - lat = -HALF_PI; - } - lon = adjust_lon(theta / this.ns + this.long0); - - p.x = lon; - p.y = lat; - return p; - } - - var names$11 = ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"]; - var lcc = { - init: init$10, - forward: forward$9, - inverse: inverse$9, - names: names$11 - }; - - function init$11() { - this.a = 6377397.155; - this.es = 0.006674372230614; - this.e = Math.sqrt(this.es); - if (!this.lat0) { - this.lat0 = 0.863937979737193; - } - if (!this.long0) { - this.long0 = 0.7417649320975901 - 0.308341501185665; - } - /* if scale not set default to 0.9999 */ - if (!this.k0) { - this.k0 = 0.9999; - } - this.s45 = 0.785398163397448; /* 45 */ - this.s90 = 2 * this.s45; - this.fi0 = this.lat0; - this.e2 = this.es; - this.e = Math.sqrt(this.e2); - this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2)); - this.uq = 1.04216856380474; - this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa); - this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2); - this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g; - this.k1 = this.k0; - this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2)); - this.s0 = 1.37008346281555; - this.n = Math.sin(this.s0); - this.ro0 = this.k1 * this.n0 / Math.tan(this.s0); - this.ad = this.s90 - this.uq; - } - - /* ellipsoid */ - /* calculate xy from lat/lon */ - /* Constants, identical to inverse transform function */ - function forward$10(p) { - var gfi, u, deltav, s, d, eps, ro; - var lon = p.x; - var lat = p.y; - var delta_lon = adjust_lon(lon - this.long0); - /* Transformation */ - gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2)); - u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45); - deltav = -delta_lon * this.alfa; - s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav)); - d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s)); - eps = this.n * d; - ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n); - p.y = ro * Math.cos(eps) / 1; - p.x = ro * Math.sin(eps) / 1; - - if (!this.czech) { - p.y *= -1; - p.x *= -1; - } - return (p); - } - - /* calculate lat/lon from xy */ - function inverse$10(p) { - var u, deltav, s, d, eps, ro, fi1; - var ok; - - /* Transformation */ - /* revert y, x*/ - var tmp = p.x; - p.x = p.y; - p.y = tmp; - if (!this.czech) { - p.y *= -1; - p.x *= -1; - } - ro = Math.sqrt(p.x * p.x + p.y * p.y); - eps = Math.atan2(p.y, p.x); - d = eps / Math.sin(this.s0); - s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45); - u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d)); - deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u)); - p.x = this.long0 - deltav / this.alfa; - fi1 = u; - ok = 0; - var iter = 0; - do { - p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45); - if (Math.abs(fi1 - p.y) < 0.0000000001) { - ok = 1; - } - fi1 = p.y; - iter += 1; - } while (ok === 0 && iter < 15); - if (iter >= 15) { - return null; - } - - return (p); - } - - var names$12 = ["Krovak", "krovak"]; - var krovak = { - init: init$11, - forward: forward$10, - inverse: inverse$10, - names: names$12 - }; - - var mlfn = function(e0, e1, e2, e3, phi) { - return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi)); - }; - - var e0fn = function(x) { - return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x))); - }; - - var e1fn = function(x) { - return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x))); - }; - - var e2fn = function(x) { - return (0.05859375 * x * x * (1 + 0.75 * x)); - }; - - var e3fn = function(x) { - return (x * x * x * (35 / 3072)); - }; - - var gN = function(a, e, sinphi) { - var temp = e * sinphi; - return a / Math.sqrt(1 - temp * temp); - }; - - var adjust_lat = function(x) { - return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI)); - }; - - var imlfn = function(ml, e0, e1, e2, e3) { - var phi; - var dphi; - - phi = ml / e0; - for (var i = 0; i < 15; i++) { - dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi)); - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - - //..reportError("IMLFN-CONV:Latitude failed to converge after 15 iterations"); - return NaN; - }; - - function init$12() { - if (!this.sphere) { - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); - } - } - - /* Cassini forward equations--mapping lat,long to x,y - -----------------------------------------------------------------------*/ - function forward$11(p) { - - /* Forward equations - -----------------*/ - var x, y; - var lam = p.x; - var phi = p.y; - lam = adjust_lon(lam - this.long0); - - if (this.sphere) { - x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam)); - y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0); - } - else { - //ellipsoid - var sinphi = Math.sin(phi); - var cosphi = Math.cos(phi); - var nl = gN(this.a, this.e, sinphi); - var tl = Math.tan(phi) * Math.tan(phi); - var al = lam * Math.cos(phi); - var asq = al * al; - var cl = this.es * cosphi * cosphi / (1 - this.es); - var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi); - - x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120)); - y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24); - - - } - - p.x = x + this.x0; - p.y = y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$11(p) { - p.x -= this.x0; - p.y -= this.y0; - var x = p.x / this.a; - var y = p.y / this.a; - var phi, lam; - - if (this.sphere) { - var dd = y + this.lat0; - phi = Math.asin(Math.sin(dd) * Math.cos(x)); - lam = Math.atan2(Math.tan(x), Math.cos(dd)); - } - else { - /* ellipsoid */ - var ml1 = this.ml0 / this.a + y; - var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3); - if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) { - p.x = this.long0; - p.y = HALF_PI; - if (y < 0) { - p.y *= -1; - } - return p; - } - var nl1 = gN(this.a, this.e, Math.sin(phi1)); - - var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es); - var tl1 = Math.pow(Math.tan(phi1), 2); - var dl = x * this.a / nl1; - var dsq = dl * dl; - phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24); - lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1); - - } - - p.x = adjust_lon(lam + this.long0); - p.y = adjust_lat(phi); - return p; - - } - - var names$13 = ["Cassini", "Cassini_Soldner", "cass"]; - var cass = { - init: init$12, - forward: forward$11, - inverse: inverse$11, - names: names$13 - }; - - var qsfnz = function(eccent, sinphi) { - var con; - if (eccent > 1.0e-7) { - con = eccent * sinphi; - return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con)))); - } - else { - return (2 * sinphi); - } - }; - - /* - reference - "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder, - The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355. - */ - - var S_POLE = 1; - - var N_POLE = 2; - var EQUIT = 3; - var OBLIQ = 4; - - /* Initialize the Lambert Azimuthal Equal Area projection - ------------------------------------------------------*/ - function init$13() { - var t = Math.abs(this.lat0); - if (Math.abs(t - HALF_PI) < EPSLN) { - this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE; - } - else if (Math.abs(t) < EPSLN) { - this.mode = this.EQUIT; - } - else { - this.mode = this.OBLIQ; - } - if (this.es > 0) { - var sinphi; - - this.qp = qsfnz(this.e, 1); - this.mmf = 0.5 / (1 - this.es); - this.apa = authset(this.es); - switch (this.mode) { - case this.N_POLE: - this.dd = 1; - break; - case this.S_POLE: - this.dd = 1; - break; - case this.EQUIT: - this.rq = Math.sqrt(0.5 * this.qp); - this.dd = 1 / this.rq; - this.xmf = 1; - this.ymf = 0.5 * this.qp; - break; - case this.OBLIQ: - this.rq = Math.sqrt(0.5 * this.qp); - sinphi = Math.sin(this.lat0); - this.sinb1 = qsfnz(this.e, sinphi) / this.qp; - this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1); - this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1); - this.ymf = (this.xmf = this.rq) / this.dd; - this.xmf *= this.dd; - break; - } - } - else { - if (this.mode === this.OBLIQ) { - this.sinph0 = Math.sin(this.lat0); - this.cosph0 = Math.cos(this.lat0); - } - } - } - - /* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y - -----------------------------------------------------------------------*/ - function forward$12(p) { - - /* Forward equations - -----------------*/ - var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi; - var lam = p.x; - var phi = p.y; - - lam = adjust_lon(lam - this.long0); - if (this.sphere) { - sinphi = Math.sin(phi); - cosphi = Math.cos(phi); - coslam = Math.cos(lam); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam; - if (y <= EPSLN) { - return null; - } - y = Math.sqrt(2 / y); - x = y * cosphi * Math.sin(lam); - y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam; - } - else if (this.mode === this.N_POLE || this.mode === this.S_POLE) { - if (this.mode === this.N_POLE) { - coslam = -coslam; - } - if (Math.abs(phi + this.phi0) < EPSLN) { - return null; - } - y = FORTPI - phi * 0.5; - y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y)); - x = y * Math.sin(lam); - y *= coslam; - } - } - else { - sinb = 0; - cosb = 0; - b = 0; - coslam = Math.cos(lam); - sinlam = Math.sin(lam); - sinphi = Math.sin(phi); - q = qsfnz(this.e, sinphi); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - sinb = q / this.qp; - cosb = Math.sqrt(1 - sinb * sinb); - } - switch (this.mode) { - case this.OBLIQ: - b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam; - break; - case this.EQUIT: - b = 1 + cosb * coslam; - break; - case this.N_POLE: - b = HALF_PI + phi; - q = this.qp - q; - break; - case this.S_POLE: - b = phi - HALF_PI; - q = this.qp + q; - break; - } - if (Math.abs(b) < EPSLN) { - return null; - } - switch (this.mode) { - case this.OBLIQ: - case this.EQUIT: - b = Math.sqrt(2 / b); - if (this.mode === this.OBLIQ) { - y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam); - } - else { - y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf; - } - x = this.xmf * b * cosb * sinlam; - break; - case this.N_POLE: - case this.S_POLE: - if (q >= 0) { - x = (b = Math.sqrt(q)) * sinlam; - y = coslam * ((this.mode === this.S_POLE) ? b : -b); - } - else { - x = y = 0; - } - break; - } - } - - p.x = this.a * x + this.x0; - p.y = this.a * y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$12(p) { - p.x -= this.x0; - p.y -= this.y0; - var x = p.x / this.a; - var y = p.y / this.a; - var lam, phi, cCe, sCe, q, rho, ab; - if (this.sphere) { - var cosz = 0, - rh, sinz = 0; - - rh = Math.sqrt(x * x + y * y); - phi = rh * 0.5; - if (phi > 1) { - return null; - } - phi = 2 * Math.asin(phi); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - sinz = Math.sin(phi); - cosz = Math.cos(phi); - } - switch (this.mode) { - case this.EQUIT: - phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh); - x *= sinz; - y = cosz * rh; - break; - case this.OBLIQ: - phi = (Math.abs(rh) <= EPSLN) ? this.phi0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh); - x *= sinz * this.cosph0; - y = (cosz - Math.sin(phi) * this.sinph0) * rh; - break; - case this.N_POLE: - y = -y; - phi = HALF_PI - phi; - break; - case this.S_POLE: - phi -= HALF_PI; - break; - } - lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y); - } - else { - ab = 0; - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - x /= this.dd; - y *= this.dd; - rho = Math.sqrt(x * x + y * y); - if (rho < EPSLN) { - p.x = 0; - p.y = this.phi0; - return p; - } - sCe = 2 * Math.asin(0.5 * rho / this.rq); - cCe = Math.cos(sCe); - x *= (sCe = Math.sin(sCe)); - if (this.mode === this.OBLIQ) { - ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho; - q = this.qp * ab; - y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe; - } - else { - ab = y * sCe / rho; - q = this.qp * ab; - y = rho * cCe; - } - } - else if (this.mode === this.N_POLE || this.mode === this.S_POLE) { - if (this.mode === this.N_POLE) { - y = -y; - } - q = (x * x + y * y); - if (!q) { - p.x = 0; - p.y = this.phi0; - return p; - } - ab = 1 - q / this.qp; - if (this.mode === this.S_POLE) { - ab = -ab; - } - } - lam = Math.atan2(x, y); - phi = authlat(Math.asin(ab), this.apa); - } - - p.x = adjust_lon(this.long0 + lam); - p.y = phi; - return p; - } - - /* determine latitude from authalic latitude */ - var P00 = 0.33333333333333333333; - - var P01 = 0.17222222222222222222; - var P02 = 0.10257936507936507936; - var P10 = 0.06388888888888888888; - var P11 = 0.06640211640211640211; - var P20 = 0.01641501294219154443; - - function authset(es) { - var t; - var APA = []; - APA[0] = es * P00; - t = es * es; - APA[0] += t * P01; - APA[1] = t * P10; - t *= es; - APA[0] += t * P02; - APA[1] += t * P11; - APA[2] = t * P20; - return APA; - } - - function authlat(beta, APA) { - var t = beta + beta; - return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t)); - } - - var names$14 = ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"]; - var laea = { - init: init$13, - forward: forward$12, - inverse: inverse$12, - names: names$14, - S_POLE: S_POLE, - N_POLE: N_POLE, - EQUIT: EQUIT, - OBLIQ: OBLIQ - }; - - var asinz = function(x) { - if (Math.abs(x) > 1) { - x = (x > 1) ? 1 : -1; - } - return Math.asin(x); - }; - - function init$14() { - - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); - this.e3 = Math.sqrt(this.es); - - this.sin_po = Math.sin(this.lat1); - this.cos_po = Math.cos(this.lat1); - this.t1 = this.sin_po; - this.con = this.sin_po; - this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po); - this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po); - - this.sin_po = Math.sin(this.lat2); - this.cos_po = Math.cos(this.lat2); - this.t2 = this.sin_po; - this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po); - this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po); - - this.sin_po = Math.sin(this.lat0); - this.cos_po = Math.cos(this.lat0); - this.t3 = this.sin_po; - this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po); - - if (Math.abs(this.lat1 - this.lat2) > EPSLN) { - this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1); - } - else { - this.ns0 = this.con; - } - this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1; - this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0; - } - - /* Albers Conical Equal Area forward equations--mapping lat,long to x,y - -------------------------------------------------------------------*/ - function forward$13(p) { - - var lon = p.x; - var lat = p.y; - - this.sin_phi = Math.sin(lat); - this.cos_phi = Math.cos(lat); - - var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi); - var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0; - var theta = this.ns0 * adjust_lon(lon - this.long0); - var x = rh1 * Math.sin(theta) + this.x0; - var y = this.rh - rh1 * Math.cos(theta) + this.y0; - - p.x = x; - p.y = y; - return p; - } - - function inverse$13(p) { - var rh1, qs, con, theta, lon, lat; - - p.x -= this.x0; - p.y = this.rh - p.y + this.y0; - if (this.ns0 >= 0) { - rh1 = Math.sqrt(p.x * p.x + p.y * p.y); - con = 1; - } - else { - rh1 = -Math.sqrt(p.x * p.x + p.y * p.y); - con = -1; - } - theta = 0; - if (rh1 !== 0) { - theta = Math.atan2(con * p.x, con * p.y); - } - con = rh1 * this.ns0 / this.a; - if (this.sphere) { - lat = Math.asin((this.c - con * con) / (2 * this.ns0)); - } - else { - qs = (this.c - con * con) / this.ns0; - lat = this.phi1z(this.e3, qs); - } - - lon = adjust_lon(theta / this.ns0 + this.long0); - p.x = lon; - p.y = lat; - return p; - } - - /* Function to compute phi1, the latitude for the inverse of the - Albers Conical Equal-Area projection. - -------------------------------------------*/ - function phi1z(eccent, qs) { - var sinphi, cosphi, con, com, dphi; - var phi = asinz(0.5 * qs); - if (eccent < EPSLN) { - return phi; - } - - var eccnts = eccent * eccent; - for (var i = 1; i <= 25; i++) { - sinphi = Math.sin(phi); - cosphi = Math.cos(phi); - con = eccent * sinphi; - com = 1 - con * con; - dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con))); - phi = phi + dphi; - if (Math.abs(dphi) <= 1e-7) { - return phi; - } - } - return null; - } - - var names$15 = ["Albers_Conic_Equal_Area", "Albers", "aea"]; - var aea = { - init: init$14, - forward: forward$13, - inverse: inverse$13, - names: names$15, - phi1z: phi1z - }; - - /* - reference: - Wolfram Mathworld "Gnomonic Projection" - http://mathworld.wolfram.com/GnomonicProjection.html - Accessed: 12th November 2009 - */ - function init$15() { - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.sin_p14 = Math.sin(this.lat0); - this.cos_p14 = Math.cos(this.lat0); - // Approximation for projecting points to the horizon (infinity) - this.infinity_dist = 1000 * this.a; - this.rc = 1; - } - - /* Gnomonic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$14(p) { - var sinphi, cosphi; /* sin and cos value */ - var dlon; /* delta longitude value */ - var coslon; /* cos of longitude */ - var ksp; /* scale factor */ - var g; - var x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - dlon = adjust_lon(lon - this.long0); - - sinphi = Math.sin(lat); - cosphi = Math.cos(lat); - - coslon = Math.cos(dlon); - g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon; - ksp = 1; - if ((g > 0) || (Math.abs(g) <= EPSLN)) { - x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g; - y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g; - } - else { - - // Point is in the opposing hemisphere and is unprojectable - // We still need to return a reasonable point, so we project - // to infinity, on a bearing - // equivalent to the northern hemisphere equivalent - // This is a reasonable approximation for short shapes and lines that - // straddle the horizon. - - x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon); - y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon); - - } - p.x = x; - p.y = y; - return p; - } - - function inverse$14(p) { - var rh; /* Rho */ - var sinc, cosc; - var c; - var lon, lat; - - /* Inverse equations - -----------------*/ - p.x = (p.x - this.x0) / this.a; - p.y = (p.y - this.y0) / this.a; - - p.x /= this.k0; - p.y /= this.k0; - - if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) { - c = Math.atan2(rh, this.rc); - sinc = Math.sin(c); - cosc = Math.cos(c); - - lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh); - lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc); - lon = adjust_lon(this.long0 + lon); - } - else { - lat = this.phic0; - lon = 0; - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$16 = ["gnom"]; - var gnom = { - init: init$15, - forward: forward$14, - inverse: inverse$14, - names: names$16 - }; - - var iqsfnz = function(eccent, q) { - var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent)); - if (Math.abs(Math.abs(q) - temp) < 1.0E-6) { - if (q < 0) { - return (-1 * HALF_PI); - } - else { - return HALF_PI; - } - } - //var phi = 0.5* q/(1-eccent*eccent); - var phi = Math.asin(0.5 * q); - var dphi; - var sin_phi; - var cos_phi; - var con; - for (var i = 0; i < 30; i++) { - sin_phi = Math.sin(phi); - cos_phi = Math.cos(phi); - con = eccent * sin_phi; - dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con))); - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - - //console.log("IQSFN-CONV:Latitude failed to converge after 30 iterations"); - return NaN; - }; - - /* - reference: - "Cartographic Projection Procedures for the UNIX Environment- - A User's Manual" by Gerald I. Evenden, - USGS Open File Report 90-284and Release 4 Interim Reports (2003) - */ - function init$16() { - //no-op - if (!this.sphere) { - this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)); - } - } - - /* Cylindrical Equal Area forward equations--mapping lat,long to x,y - ------------------------------------------------------------*/ - function forward$15(p) { - var lon = p.x; - var lat = p.y; - var x, y; - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - if (this.sphere) { - x = this.x0 + this.a * dlon * Math.cos(this.lat_ts); - y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts); - } - else { - var qs = qsfnz(this.e, Math.sin(lat)); - x = this.x0 + this.a * this.k0 * dlon; - y = this.y0 + this.a * qs * 0.5 / this.k0; - } - - p.x = x; - p.y = y; - return p; - } - - /* Cylindrical Equal Area inverse equations--mapping x,y to lat/long - ------------------------------------------------------------*/ - function inverse$15(p) { - p.x -= this.x0; - p.y -= this.y0; - var lon, lat; - - if (this.sphere) { - lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts)); - lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts)); - } - else { - lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a); - lon = adjust_lon(this.long0 + p.x / (this.a * this.k0)); - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$17 = ["cea"]; - var cea = { - init: init$16, - forward: forward$15, - inverse: inverse$15, - names: names$17 - }; - - function init$17() { - - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - this.lat0 = this.lat0 || 0; - this.long0 = this.long0 || 0; - this.lat_ts = this.lat_ts || 0; - this.title = this.title || "Equidistant Cylindrical (Plate Carre)"; - - this.rc = Math.cos(this.lat_ts); - } - - // forward equations--mapping lat,long to x,y - // ----------------------------------------------------------------- - function forward$16(p) { - - var lon = p.x; - var lat = p.y; - - var dlon = adjust_lon(lon - this.long0); - var dlat = adjust_lat(lat - this.lat0); - p.x = this.x0 + (this.a * dlon * this.rc); - p.y = this.y0 + (this.a * dlat); - return p; - } - - // inverse equations--mapping x,y to lat/long - // ----------------------------------------------------------------- - function inverse$16(p) { - - var x = p.x; - var y = p.y; - - p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc))); - p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a))); - return p; - } - - var names$18 = ["Equirectangular", "Equidistant_Cylindrical", "eqc"]; - var eqc = { - init: init$17, - forward: forward$16, - inverse: inverse$16, - names: names$18 - }; - - var MAX_ITER$2 = 20; - - function init$18() { - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles - this.e = Math.sqrt(this.es); - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas - } - - /* Polyconic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$17(p) { - var lon = p.x; - var lat = p.y; - var x, y, el; - var dlon = adjust_lon(lon - this.long0); - el = dlon * Math.sin(lat); - if (this.sphere) { - if (Math.abs(lat) <= EPSLN) { - x = this.a * dlon; - y = -1 * this.a * this.lat0; - } - else { - x = this.a * Math.sin(el) / Math.tan(lat); - y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat)); - } - } - else { - if (Math.abs(lat) <= EPSLN) { - x = this.a * dlon; - y = -1 * this.ml0; - } - else { - var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat); - x = nl * Math.sin(el); - y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el)); - } - - } - p.x = x + this.x0; - p.y = y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$17(p) { - var lon, lat, x, y, i; - var al, bl; - var phi, dphi; - x = p.x - this.x0; - y = p.y - this.y0; - - if (this.sphere) { - if (Math.abs(y + this.a * this.lat0) <= EPSLN) { - lon = adjust_lon(x / this.a + this.long0); - lat = 0; - } - else { - al = this.lat0 + y / this.a; - bl = x * x / this.a / this.a + al * al; - phi = al; - var tanphi; - for (i = MAX_ITER$2; i; --i) { - tanphi = Math.tan(phi); - dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1); - phi += dphi; - if (Math.abs(dphi) <= EPSLN) { - lat = phi; - break; - } - } - lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat)); - } - } - else { - if (Math.abs(y + this.ml0) <= EPSLN) { - lat = 0; - lon = adjust_lon(this.long0 + x / this.a); - } - else { - - al = (this.ml0 + y) / this.a; - bl = x * x / this.a / this.a + al * al; - phi = al; - var cl, mln, mlnp, ma; - var con; - for (i = MAX_ITER$2; i; --i) { - con = this.e * Math.sin(phi); - cl = Math.sqrt(1 - con * con) * Math.tan(phi); - mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi); - mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi); - ma = mln / this.a; - dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp); - phi -= dphi; - if (Math.abs(dphi) <= EPSLN) { - lat = phi; - break; - } - } - - //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0); - cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat); - lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat)); - } - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$19 = ["Polyconic", "poly"]; - var poly = { - init: init$18, - forward: forward$17, - inverse: inverse$17, - names: names$19 - }; - - /* - reference - Department of Land and Survey Technical Circular 1973/32 - http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf - OSG Technical Report 4.1 - http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf - */ - - /** - * iterations: Number of iterations to refine inverse transform. - * 0 -> km accuracy - * 1 -> m accuracy -- suitable for most mapping applications - * 2 -> mm accuracy - */ - - - function init$19() { - this.A = []; - this.A[1] = 0.6399175073; - this.A[2] = -0.1358797613; - this.A[3] = 0.063294409; - this.A[4] = -0.02526853; - this.A[5] = 0.0117879; - this.A[6] = -0.0055161; - this.A[7] = 0.0026906; - this.A[8] = -0.001333; - this.A[9] = 0.00067; - this.A[10] = -0.00034; - - this.B_re = []; - this.B_im = []; - this.B_re[1] = 0.7557853228; - this.B_im[1] = 0; - this.B_re[2] = 0.249204646; - this.B_im[2] = 0.003371507; - this.B_re[3] = -0.001541739; - this.B_im[3] = 0.041058560; - this.B_re[4] = -0.10162907; - this.B_im[4] = 0.01727609; - this.B_re[5] = -0.26623489; - this.B_im[5] = -0.36249218; - this.B_re[6] = -0.6870983; - this.B_im[6] = -1.1651967; - - this.C_re = []; - this.C_im = []; - this.C_re[1] = 1.3231270439; - this.C_im[1] = 0; - this.C_re[2] = -0.577245789; - this.C_im[2] = -0.007809598; - this.C_re[3] = 0.508307513; - this.C_im[3] = -0.112208952; - this.C_re[4] = -0.15094762; - this.C_im[4] = 0.18200602; - this.C_re[5] = 1.01418179; - this.C_im[5] = 1.64497696; - this.C_re[6] = 1.9660549; - this.C_im[6] = 2.5127645; - - this.D = []; - this.D[1] = 1.5627014243; - this.D[2] = 0.5185406398; - this.D[3] = -0.03333098; - this.D[4] = -0.1052906; - this.D[5] = -0.0368594; - this.D[6] = 0.007317; - this.D[7] = 0.01220; - this.D[8] = 0.00394; - this.D[9] = -0.0013; - } - - /** - New Zealand Map Grid Forward - long/lat to x/y - long/lat in radians - */ - function forward$18(p) { - var n; - var lon = p.x; - var lat = p.y; - - var delta_lat = lat - this.lat0; - var delta_lon = lon - this.long0; - - // 1. Calculate d_phi and d_psi ... // and d_lambda - // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians. - var d_phi = delta_lat / SEC_TO_RAD * 1E-5; - var d_lambda = delta_lon; - var d_phi_n = 1; // d_phi^0 - - var d_psi = 0; - for (n = 1; n <= 10; n++) { - d_phi_n = d_phi_n * d_phi; - d_psi = d_psi + this.A[n] * d_phi_n; - } - - // 2. Calculate theta - var th_re = d_psi; - var th_im = d_lambda; - - // 3. Calculate z - var th_n_re = 1; - var th_n_im = 0; // theta^0 - var th_n_re1; - var th_n_im1; - - var z_re = 0; - var z_im = 0; - for (n = 1; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im; - z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im; - } - - // 4. Calculate easting and northing - p.x = (z_im * this.a) + this.x0; - p.y = (z_re * this.a) + this.y0; - - return p; - } - - /** - New Zealand Map Grid Inverse - x/y to long/lat - */ - function inverse$18(p) { - var n; - var x = p.x; - var y = p.y; - - var delta_x = x - this.x0; - var delta_y = y - this.y0; - - // 1. Calculate z - var z_re = delta_y / this.a; - var z_im = delta_x / this.a; - - // 2a. Calculate theta - first approximation gives km accuracy - var z_n_re = 1; - var z_n_im = 0; // z^0 - var z_n_re1; - var z_n_im1; - - var th_re = 0; - var th_im = 0; - for (n = 1; n <= 6; n++) { - z_n_re1 = z_n_re * z_re - z_n_im * z_im; - z_n_im1 = z_n_im * z_re + z_n_re * z_im; - z_n_re = z_n_re1; - z_n_im = z_n_im1; - th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im; - th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im; - } - - // 2b. Iterate to refine the accuracy of the calculation - // 0 iterations gives km accuracy - // 1 iteration gives m accuracy -- good enough for most mapping applications - // 2 iterations bives mm accuracy - for (var i = 0; i < this.iterations; i++) { - var th_n_re = th_re; - var th_n_im = th_im; - var th_n_re1; - var th_n_im1; - - var num_re = z_re; - var num_im = z_im; - for (n = 2; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im); - num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im); - } - - th_n_re = 1; - th_n_im = 0; - var den_re = this.B_re[1]; - var den_im = this.B_im[1]; - for (n = 2; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im); - den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im); - } - - // Complex division - var den2 = den_re * den_re + den_im * den_im; - th_re = (num_re * den_re + num_im * den_im) / den2; - th_im = (num_im * den_re - num_re * den_im) / den2; - } - - // 3. Calculate d_phi ... // and d_lambda - var d_psi = th_re; - var d_lambda = th_im; - var d_psi_n = 1; // d_psi^0 - - var d_phi = 0; - for (n = 1; n <= 9; n++) { - d_psi_n = d_psi_n * d_psi; - d_phi = d_phi + this.D[n] * d_psi_n; - } - - // 4. Calculate latitude and longitude - // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians. - var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5); - var lon = this.long0 + d_lambda; - - p.x = lon; - p.y = lat; - - return p; - } - - var names$20 = ["New_Zealand_Map_Grid", "nzmg"]; - var nzmg = { - init: init$19, - forward: forward$18, - inverse: inverse$18, - names: names$20 - }; - - /* - reference - "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder, - The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355. - */ - - - /* Initialize the Miller Cylindrical projection - -------------------------------------------*/ - function init$20() { - //no-op - } - - /* Miller Cylindrical forward equations--mapping lat,long to x,y - ------------------------------------------------------------*/ - function forward$19(p) { - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - var x = this.x0 + this.a * dlon; - var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25; - - p.x = x; - p.y = y; - return p; - } - - /* Miller Cylindrical inverse equations--mapping x,y to lat/long - ------------------------------------------------------------*/ - function inverse$19(p) { - p.x -= this.x0; - p.y -= this.y0; - - var lon = adjust_lon(this.long0 + p.x / this.a); - var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4); - - p.x = lon; - p.y = lat; - return p; - } - - var names$21 = ["Miller_Cylindrical", "mill"]; - var mill = { - init: init$20, - forward: forward$19, - inverse: inverse$19, - names: names$21 - }; - - var MAX_ITER$3 = 20; - function init$21() { - /* Place parameters in static storage for common use - -------------------------------------------------*/ - - - if (!this.sphere) { - this.en = pj_enfn(this.es); - } - else { - this.n = 1; - this.m = 0; - this.es = 0; - this.C_y = Math.sqrt((this.m + 1) / this.n); - this.C_x = this.C_y / (this.m + 1); - } - - } - - /* Sinusoidal forward equations--mapping lat,long to x,y - -----------------------------------------------------*/ - function forward$20(p) { - var x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - lon = adjust_lon(lon - this.long0); - - if (this.sphere) { - if (!this.m) { - lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat; - } - else { - var k = this.n * Math.sin(lat); - for (var i = MAX_ITER$3; i; --i) { - var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat)); - lat -= V; - if (Math.abs(V) < EPSLN) { - break; - } - } - } - x = this.a * this.C_x * lon * (this.m + Math.cos(lat)); - y = this.a * this.C_y * lat; - - } - else { - - var s = Math.sin(lat); - var c = Math.cos(lat); - y = this.a * pj_mlfn(lat, s, c, this.en); - x = this.a * lon * c / Math.sqrt(1 - this.es * s * s); - } - - p.x = x; - p.y = y; - return p; - } - - function inverse$20(p) { - var lat, temp, lon, s; - - p.x -= this.x0; - lon = p.x / this.a; - p.y -= this.y0; - lat = p.y / this.a; - - if (this.sphere) { - lat /= this.C_y; - lon = lon / (this.C_x * (this.m + Math.cos(lat))); - if (this.m) { - lat = asinz((this.m * lat + Math.sin(lat)) / this.n); - } - else if (this.n !== 1) { - lat = asinz(Math.sin(lat) / this.n); - } - lon = adjust_lon(lon + this.long0); - lat = adjust_lat(lat); - } - else { - lat = pj_inv_mlfn(p.y / this.a, this.es, this.en); - s = Math.abs(lat); - if (s < HALF_PI) { - s = Math.sin(lat); - temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat)); - //temp = this.long0 + p.x / (this.a * Math.cos(lat)); - lon = adjust_lon(temp); - } - else if ((s - EPSLN) < HALF_PI) { - lon = this.long0; - } - } - p.x = lon; - p.y = lat; - return p; - } - - var names$22 = ["Sinusoidal", "sinu"]; - var sinu = { - init: init$21, - forward: forward$20, - inverse: inverse$20, - names: names$22 - }; - - function init$22() {} - /* Mollweide forward equations--mapping lat,long to x,y - ----------------------------------------------------*/ - function forward$21(p) { - - /* Forward equations - -----------------*/ - var lon = p.x; - var lat = p.y; - - var delta_lon = adjust_lon(lon - this.long0); - var theta = lat; - var con = Math.PI * Math.sin(lat); - - /* Iterate using the Newton-Raphson method to find theta - -----------------------------------------------------*/ - for (var i = 0; true; i++) { - var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta)); - theta += delta_theta; - if (Math.abs(delta_theta) < EPSLN) { - break; - } - } - theta /= 2; - - /* If the latitude is 90 deg, force the x coordinate to be "0 + false easting" - this is done here because of precision problems with "cos(theta)" - --------------------------------------------------------------------------*/ - if (Math.PI / 2 - Math.abs(lat) < EPSLN) { - delta_lon = 0; - } - var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0; - var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0; - - p.x = x; - p.y = y; - return p; - } - - function inverse$21(p) { - var theta; - var arg; - - /* Inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - arg = p.y / (1.4142135623731 * this.a); - - /* Because of division by zero problems, 'arg' can not be 1. Therefore - a number very close to one is used instead. - -------------------------------------------------------------------*/ - if (Math.abs(arg) > 0.999999999999) { - arg = 0.999999999999; - } - theta = Math.asin(arg); - var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta)))); - if (lon < (-Math.PI)) { - lon = -Math.PI; - } - if (lon > Math.PI) { - lon = Math.PI; - } - arg = (2 * theta + Math.sin(2 * theta)) / Math.PI; - if (Math.abs(arg) > 1) { - arg = 1; - } - var lat = Math.asin(arg); - - p.x = lon; - p.y = lat; - return p; - } - - var names$23 = ["Mollweide", "moll"]; - var moll = { - init: init$22, - forward: forward$21, - inverse: inverse$21, - names: names$23 - }; - - function init$23() { - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - // Standard Parallels cannot be equal and on opposite sides of the equator - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - this.lat2 = this.lat2 || this.lat1; - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); - this.e = Math.sqrt(this.es); - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - - this.sinphi = Math.sin(this.lat1); - this.cosphi = Math.cos(this.lat1); - - this.ms1 = msfnz(this.e, this.sinphi, this.cosphi); - this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1); - - if (Math.abs(this.lat1 - this.lat2) < EPSLN) { - this.ns = this.sinphi; - } - else { - this.sinphi = Math.sin(this.lat2); - this.cosphi = Math.cos(this.lat2); - this.ms2 = msfnz(this.e, this.sinphi, this.cosphi); - this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2); - this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1); - } - this.g = this.ml1 + this.ms1 / this.ns; - this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); - this.rh = this.a * (this.g - this.ml0); - } - - /* Equidistant Conic forward equations--mapping lat,long to x,y - -----------------------------------------------------------*/ - function forward$22(p) { - var lon = p.x; - var lat = p.y; - var rh1; - - /* Forward equations - -----------------*/ - if (this.sphere) { - rh1 = this.a * (this.g - lat); - } - else { - var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat); - rh1 = this.a * (this.g - ml); - } - var theta = this.ns * adjust_lon(lon - this.long0); - var x = this.x0 + rh1 * Math.sin(theta); - var y = this.y0 + this.rh - rh1 * Math.cos(theta); - p.x = x; - p.y = y; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$22(p) { - p.x -= this.x0; - p.y = this.rh - p.y + this.y0; - var con, rh1, lat, lon; - if (this.ns >= 0) { - rh1 = Math.sqrt(p.x * p.x + p.y * p.y); - con = 1; - } - else { - rh1 = -Math.sqrt(p.x * p.x + p.y * p.y); - con = -1; - } - var theta = 0; - if (rh1 !== 0) { - theta = Math.atan2(con * p.x, con * p.y); - } - - if (this.sphere) { - lon = adjust_lon(this.long0 + theta / this.ns); - lat = adjust_lat(this.g - rh1 / this.a); - p.x = lon; - p.y = lat; - return p; - } - else { - var ml = this.g - rh1 / this.a; - lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3); - lon = adjust_lon(this.long0 + theta / this.ns); - p.x = lon; - p.y = lat; - return p; - } - - } - - var names$24 = ["Equidistant_Conic", "eqdc"]; - var eqdc = { - init: init$23, - forward: forward$22, - inverse: inverse$22, - names: names$24 - }; - - /* Initialize the Van Der Grinten projection - ----------------------------------------*/ - function init$24() { - //this.R = 6370997; //Radius of earth - this.R = this.a; - } - - function forward$23(p) { - - var lon = p.x; - var lat = p.y; - - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - var x, y; - - if (Math.abs(lat) <= EPSLN) { - x = this.x0 + this.R * dlon; - y = this.y0; - } - var theta = asinz(2 * Math.abs(lat / Math.PI)); - if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) { - x = this.x0; - if (lat >= 0) { - y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta); - } - else { - y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta); - } - // return(OK); - } - var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI)); - var asq = al * al; - var sinth = Math.sin(theta); - var costh = Math.cos(theta); - - var g = costh / (sinth + costh - 1); - var gsq = g * g; - var m = g * (2 / sinth - 1); - var msq = m * m; - var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq); - if (dlon < 0) { - con = -con; - } - x = this.x0 + con; - //con = Math.abs(con / (Math.PI * this.R)); - var q = asq + g; - con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq); - if (lat >= 0) { - //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con); - y = this.y0 + con; - } - else { - //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con); - y = this.y0 - con; - } - p.x = x; - p.y = y; - return p; - } - - /* Van Der Grinten inverse equations--mapping x,y to lat/long - ---------------------------------------------------------*/ - function inverse$23(p) { - var lon, lat; - var xx, yy, xys, c1, c2, c3; - var a1; - var m1; - var con; - var th1; - var d; - - /* inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - con = Math.PI * this.R; - xx = p.x / con; - yy = p.y / con; - xys = xx * xx + yy * yy; - c1 = -Math.abs(yy) * (1 + xys); - c2 = c1 - 2 * yy * yy + xx * xx; - c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys; - d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27; - a1 = (c1 - c2 * c2 / 3 / c3) / c3; - m1 = 2 * Math.sqrt(-a1 / 3); - con = ((3 * d) / a1) / m1; - if (Math.abs(con) > 1) { - if (con >= 0) { - con = 1; - } - else { - con = -1; - } - } - th1 = Math.acos(con) / 3; - if (p.y >= 0) { - lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI; - } - else { - lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI; - } - - if (Math.abs(xx) < EPSLN) { - lon = this.long0; - } - else { - lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx); - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$25 = ["Van_der_Grinten_I", "VanDerGrinten", "vandg"]; - var vandg = { - init: init$24, - forward: forward$23, - inverse: inverse$23, - names: names$25 - }; - - function init$25() { - this.sin_p12 = Math.sin(this.lat0); - this.cos_p12 = Math.cos(this.lat0); - } - - function forward$24(p) { - var lon = p.x; - var lat = p.y; - var sinphi = Math.sin(p.y); - var cosphi = Math.cos(p.y); - var dlon = adjust_lon(lon - this.long0); - var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5; - if (this.sphere) { - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North Pole case - p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon); - p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon); - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South Pole case - p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon); - p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon); - return p; - } - else { - //default case - cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon); - c = Math.acos(cos_c); - kp = c / Math.sin(c); - p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon); - p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon)); - return p; - } - } - else { - e0 = e0fn(this.es); - e1 = e1fn(this.es); - e2 = e2fn(this.es); - e3 = e3fn(this.es); - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North Pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - Ml = this.a * mlfn(e0, e1, e2, e3, lat); - p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon); - p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon); - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South Pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - Ml = this.a * mlfn(e0, e1, e2, e3, lat); - p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon); - p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon); - return p; - } - else { - //Default case - tanphi = sinphi / cosphi; - Nl1 = gN(this.a, this.e, this.sin_p12); - Nl = gN(this.a, this.e, sinphi); - psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi)); - Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon)); - if (Az === 0) { - s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi)); - } - else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) { - s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi)); - } - else { - s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az)); - } - G = this.e * this.sin_p12 / Math.sqrt(1 - this.es); - H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es); - GH = G * H; - Hs = H * H; - s2 = s * s; - s3 = s2 * s; - s4 = s3 * s; - s5 = s4 * s; - c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH); - p.x = this.x0 + c * Math.sin(Az); - p.y = this.y0 + c * Math.cos(Az); - return p; - } - } - - - } - - function inverse$24(p) { - p.x -= this.x0; - p.y -= this.y0; - var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F; - if (this.sphere) { - rh = Math.sqrt(p.x * p.x + p.y * p.y); - if (rh > (2 * HALF_PI * this.a)) { - return; - } - z = rh / this.a; - - sinz = Math.sin(z); - cosz = Math.cos(z); - - lon = this.long0; - if (Math.abs(rh) <= EPSLN) { - lat = this.lat0; - } - else { - lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh); - con = Math.abs(this.lat0) - HALF_PI; - if (Math.abs(con) <= EPSLN) { - if (this.lat0 >= 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y)); - } - else { - lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y)); - } - } - else { - /*con = cosz - this.sin_p12 * Math.sin(lat); - if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) { - //no-op, just keep the lon value as is - } else { - var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh)); - lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh))); - }*/ - lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz)); - } - } - - p.x = lon; - p.y = lat; - return p; - } - else { - e0 = e0fn(this.es); - e1 = e1fn(this.es); - e2 = e2fn(this.es); - e3 = e3fn(this.es); - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - rh = Math.sqrt(p.x * p.x + p.y * p.y); - M = Mlp - rh; - lat = imlfn(M / this.a, e0, e1, e2, e3); - lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y)); - p.x = lon; - p.y = lat; - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - rh = Math.sqrt(p.x * p.x + p.y * p.y); - M = rh - Mlp; - - lat = imlfn(M / this.a, e0, e1, e2, e3); - lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y)); - p.x = lon; - p.y = lat; - return p; - } - else { - //default case - rh = Math.sqrt(p.x * p.x + p.y * p.y); - Az = Math.atan2(p.x, p.y); - N1 = gN(this.a, this.e, this.sin_p12); - cosAz = Math.cos(Az); - tmp = this.e * this.cos_p12 * cosAz; - A = -tmp * tmp / (1 - this.es); - B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es); - D = rh / N1; - Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24; - F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6; - psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz); - lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi))); - lat = Math.atan((1 - this.es * F * this.sin_p12 / Math.sin(psi)) * Math.tan(psi) / (1 - this.es)); - p.x = lon; - p.y = lat; - return p; - } - } - - } - - var names$26 = ["Azimuthal_Equidistant", "aeqd"]; - var aeqd = { - init: init$25, - forward: forward$24, - inverse: inverse$24, - names: names$26 - }; - - function init$26() { - //double temp; /* temporary variable */ - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.sin_p14 = Math.sin(this.lat0); - this.cos_p14 = Math.cos(this.lat0); - } - - /* Orthographic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$25(p) { - var sinphi, cosphi; /* sin and cos value */ - var dlon; /* delta longitude value */ - var coslon; /* cos of longitude */ - var ksp; /* scale factor */ - var g, x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - dlon = adjust_lon(lon - this.long0); - - sinphi = Math.sin(lat); - cosphi = Math.cos(lat); - - coslon = Math.cos(dlon); - g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon; - ksp = 1; - if ((g > 0) || (Math.abs(g) <= EPSLN)) { - x = this.a * ksp * cosphi * Math.sin(dlon); - y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon); - } - p.x = x; - p.y = y; - return p; - } - - function inverse$25(p) { - var rh; /* height above ellipsoid */ - var z; /* angle */ - var sinz, cosz; /* sin of z and cos of z */ - var con; - var lon, lat; - /* Inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - rh = Math.sqrt(p.x * p.x + p.y * p.y); - z = asinz(rh / this.a); - - sinz = Math.sin(z); - cosz = Math.cos(z); - - lon = this.long0; - if (Math.abs(rh) <= EPSLN) { - lat = this.lat0; - p.x = lon; - p.y = lat; - return p; - } - lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh); - con = Math.abs(this.lat0) - HALF_PI; - if (Math.abs(con) <= EPSLN) { - if (this.lat0 >= 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y)); - } - else { - lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y)); - } - p.x = lon; - p.y = lat; - return p; - } - lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz)); - p.x = lon; - p.y = lat; - return p; - } - - var names$27 = ["ortho"]; - var ortho = { - init: init$26, - forward: forward$25, - inverse: inverse$25, - names: names$27 - }; - - var includedProjections = function(proj4){ - proj4.Proj.projections.add(tmerc); - proj4.Proj.projections.add(etmerc); - proj4.Proj.projections.add(utm); - proj4.Proj.projections.add(sterea); - proj4.Proj.projections.add(stere); - proj4.Proj.projections.add(somerc); - proj4.Proj.projections.add(omerc); - proj4.Proj.projections.add(lcc); - proj4.Proj.projections.add(krovak); - proj4.Proj.projections.add(cass); - proj4.Proj.projections.add(laea); - proj4.Proj.projections.add(aea); - proj4.Proj.projections.add(gnom); - proj4.Proj.projections.add(cea); - proj4.Proj.projections.add(eqc); - proj4.Proj.projections.add(poly); - proj4.Proj.projections.add(nzmg); - proj4.Proj.projections.add(mill); - proj4.Proj.projections.add(sinu); - proj4.Proj.projections.add(moll); - proj4.Proj.projections.add(eqdc); - proj4.Proj.projections.add(vandg); - proj4.Proj.projections.add(aeqd); - proj4.Proj.projections.add(ortho); - }; - - proj4$1.defaultDatum = 'WGS84'; //default datum - proj4$1.Proj = Projection$1; - proj4$1.WGS84 = new proj4$1.Proj('WGS84'); - proj4$1.Point = Point; - proj4$1.toPoint = toPoint; - proj4$1.defs = defs; - proj4$1.transform = transform; - proj4$1.mgrs = mgrs; - proj4$1.version = version; - includedProjections(proj4$1); - - return proj4$1; - -}))); - -},{}],286:[function(require,module,exports){ -exports.publicEncrypt = require('./publicEncrypt') -exports.privateDecrypt = require('./privateDecrypt') - -exports.privateEncrypt = function privateEncrypt (key, buf) { - return exports.publicEncrypt(key, buf, true) -} - -exports.publicDecrypt = function publicDecrypt (key, buf) { - return exports.privateDecrypt(key, buf, true) -} - -},{"./privateDecrypt":288,"./publicEncrypt":289}],287:[function(require,module,exports){ -var createHash = require('create-hash') -var Buffer = require('safe-buffer').Buffer - -module.exports = function (seed, len) { - var t = Buffer.alloc(0) - var i = 0 - var c - while (t.length < len) { - c = i2ops(i++) - t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]) - } - return t.slice(0, len) -} - -function i2ops (c) { - var out = Buffer.allocUnsafe(4) - out.writeUInt32BE(c, 0) - return out -} - -},{"create-hash":188,"safe-buffer":318}],288:[function(require,module,exports){ -var parseKeys = require('parse-asn1') -var mgf = require('./mgf') -var xor = require('./xor') -var BN = require('bn.js') -var crt = require('browserify-rsa') -var createHash = require('create-hash') -var withPublic = require('./withPublic') -var Buffer = require('safe-buffer').Buffer - -module.exports = function privateDecrypt (privateKey, enc, reverse) { - var padding - if (privateKey.padding) { - padding = privateKey.padding - } else if (reverse) { - padding = 1 - } else { - padding = 4 - } - - var key = parseKeys(privateKey) - var k = key.modulus.byteLength() - if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) { - throw new Error('decryption error') - } - var msg - if (reverse) { - msg = withPublic(new BN(enc), key) - } else { - msg = crt(enc, key) - } - var zBuffer = Buffer.alloc(k - msg.length) - msg = Buffer.concat([zBuffer, msg], k) - if (padding === 4) { - return oaep(key, msg) - } else if (padding === 1) { - return pkcs1(key, msg, reverse) - } else if (padding === 3) { - return msg - } else { - throw new Error('unknown padding') - } -} - -function oaep (key, msg) { - var k = key.modulus.byteLength() - var iHash = createHash('sha1').update(Buffer.alloc(0)).digest() - var hLen = iHash.length - if (msg[0] !== 0) { - throw new Error('decryption error') - } - var maskedSeed = msg.slice(1, hLen + 1) - var maskedDb = msg.slice(hLen + 1) - var seed = xor(maskedSeed, mgf(maskedDb, hLen)) - var db = xor(maskedDb, mgf(seed, k - hLen - 1)) - if (compare(iHash, db.slice(0, hLen))) { - throw new Error('decryption error') - } - var i = hLen - while (db[i] === 0) { - i++ - } - if (db[i++] !== 1) { - throw new Error('decryption error') - } - return db.slice(i) -} - -function pkcs1 (key, msg, reverse) { - var p1 = msg.slice(0, 2) - var i = 2 - var status = 0 - while (msg[i++] !== 0) { - if (i >= msg.length) { - status++ - break - } - } - var ps = msg.slice(2, i - 1) - - if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) { - status++ - } - if (ps.length < 8) { - status++ - } - if (status) { - throw new Error('decryption error') - } - return msg.slice(i) -} -function compare (a, b) { - a = Buffer.from(a) - b = Buffer.from(b) - var dif = 0 - var len = a.length - if (a.length !== b.length) { - dif++ - len = Math.min(a.length, b.length) - } - var i = -1 - while (++i < len) { - dif += (a[i] ^ b[i]) - } - return dif -} - -},{"./mgf":287,"./withPublic":290,"./xor":291,"bn.js":147,"browserify-rsa":170,"create-hash":188,"parse-asn1":275,"safe-buffer":318}],289:[function(require,module,exports){ -var parseKeys = require('parse-asn1') -var randomBytes = require('randombytes') -var createHash = require('create-hash') -var mgf = require('./mgf') -var xor = require('./xor') -var BN = require('bn.js') -var withPublic = require('./withPublic') -var crt = require('browserify-rsa') -var Buffer = require('safe-buffer').Buffer - -module.exports = function publicEncrypt (publicKey, msg, reverse) { - var padding - if (publicKey.padding) { - padding = publicKey.padding - } else if (reverse) { - padding = 1 - } else { - padding = 4 - } - var key = parseKeys(publicKey) - var paddedMsg - if (padding === 4) { - paddedMsg = oaep(key, msg) - } else if (padding === 1) { - paddedMsg = pkcs1(key, msg, reverse) - } else if (padding === 3) { - paddedMsg = new BN(msg) - if (paddedMsg.cmp(key.modulus) >= 0) { - throw new Error('data too long for modulus') - } - } else { - throw new Error('unknown padding') - } - if (reverse) { - return crt(paddedMsg, key) - } else { - return withPublic(paddedMsg, key) - } -} - -function oaep (key, msg) { - var k = key.modulus.byteLength() - var mLen = msg.length - var iHash = createHash('sha1').update(Buffer.alloc(0)).digest() - var hLen = iHash.length - var hLen2 = 2 * hLen - if (mLen > k - hLen2 - 2) { - throw new Error('message too long') - } - var ps = Buffer.alloc(k - mLen - hLen2 - 2) - var dblen = k - hLen - 1 - var seed = randomBytes(hLen) - var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen)) - var maskedSeed = xor(seed, mgf(maskedDb, hLen)) - return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k)) -} -function pkcs1 (key, msg, reverse) { - var mLen = msg.length - var k = key.modulus.byteLength() - if (mLen > k - 11) { - throw new Error('message too long') - } - var ps - if (reverse) { - ps = Buffer.alloc(k - mLen - 3, 0xff) - } else { - ps = nonZero(k - mLen - 3) - } - return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k)) -} -function nonZero (len) { - var out = Buffer.allocUnsafe(len) - var i = 0 - var cache = randomBytes(len * 2) - var cur = 0 - var num - while (i < len) { - if (cur === cache.length) { - cache = randomBytes(len * 2) - cur = 0 - } - num = cache[cur++] - if (num) { - out[i++] = num - } - } - return out -} - -},{"./mgf":287,"./withPublic":290,"./xor":291,"bn.js":147,"browserify-rsa":170,"create-hash":188,"parse-asn1":275,"randombytes":298,"safe-buffer":318}],290:[function(require,module,exports){ -var BN = require('bn.js') -var Buffer = require('safe-buffer').Buffer - -function withPublic (paddedMsg, key) { - return Buffer.from(paddedMsg - .toRed(BN.mont(key.modulus)) - .redPow(new BN(key.publicExponent)) - .fromRed() - .toArray()) -} - -module.exports = withPublic - -},{"bn.js":147,"safe-buffer":318}],291:[function(require,module,exports){ -module.exports = function xor (a, b) { - var len = a.length - var i = -1 - while (++i < len) { - a[i] ^= b[i] - } - return a -} - -},{}],292:[function(require,module,exports){ -(function (global){ -/*! https://mths.be/punycode v1.4.1 by @mathias */ -;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw new RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.4.1', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { - // in Node.js, io.js, or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { - // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { - // in Rhino or a web browser - root.punycode = punycode; - } - -}(this)); - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],293:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -// If obj.hasOwnProperty has been overridden, then calling -// obj.hasOwnProperty(prop) will break. -// See: https://github.com/joyent/node/issues/1707 -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -module.exports = function(qs, sep, eq, options) { - sep = sep || '&'; - eq = eq || '='; - var obj = {}; - - if (typeof qs !== 'string' || qs.length === 0) { - return obj; - } - - var regexp = /\+/g; - qs = qs.split(sep); - - var maxKeys = 1000; - if (options && typeof options.maxKeys === 'number') { - maxKeys = options.maxKeys; - } - - var len = qs.length; - // maxKeys <= 0 means that we should not limit keys count - if (maxKeys > 0 && len > maxKeys) { - len = maxKeys; - } - - for (var i = 0; i < len; ++i) { - var x = qs[i].replace(regexp, '%20'), - idx = x.indexOf(eq), - kstr, vstr, k, v; - - if (idx >= 0) { - kstr = x.substr(0, idx); - vstr = x.substr(idx + 1); - } else { - kstr = x; - vstr = ''; - } - - k = decodeURIComponent(kstr); - v = decodeURIComponent(vstr); - - if (!hasOwnProperty(obj, k)) { - obj[k] = v; - } else if (isArray(obj[k])) { - obj[k].push(v); - } else { - obj[k] = [obj[k], v]; - } - } - - return obj; -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -},{}],294:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -var stringifyPrimitive = function(v) { - switch (typeof v) { - case 'string': - return v; - - case 'boolean': - return v ? 'true' : 'false'; - - case 'number': - return isFinite(v) ? v : ''; - - default: - return ''; - } -}; - -module.exports = function(obj, sep, eq, name) { - sep = sep || '&'; - eq = eq || '='; - if (obj === null) { - obj = undefined; - } - - if (typeof obj === 'object') { - return map(objectKeys(obj), function(k) { - var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (isArray(obj[k])) { - return map(obj[k], function(v) { - return ks + encodeURIComponent(stringifyPrimitive(v)); - }).join(sep); - } else { - return ks + encodeURIComponent(stringifyPrimitive(obj[k])); - } - }).join(sep); - - } - - if (!name) return ''; - return encodeURIComponent(stringifyPrimitive(name)) + eq + - encodeURIComponent(stringifyPrimitive(obj)); -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -function map (xs, f) { - if (xs.map) return xs.map(f); - var res = []; - for (var i = 0; i < xs.length; i++) { - res.push(f(xs[i], i)); - } - return res; -} - -var objectKeys = Object.keys || function (obj) { - var res = []; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); - } - return res; -}; - -},{}],295:[function(require,module,exports){ -'use strict'; - -exports.decode = exports.parse = require('./decode'); -exports.encode = exports.stringify = require('./encode'); - -},{"./decode":293,"./encode":294}],296:[function(require,module,exports){ -var inherits = require('inherits') -var EventEmitter = require('events').EventEmitter - -module.exports = Queue -module.exports.default = Queue - -function Queue (options) { - if (!(this instanceof Queue)) { - return new Queue(options) - } - - EventEmitter.call(this) - options = options || {} - this.concurrency = options.concurrency || Infinity - this.timeout = options.timeout || 0 - this.autostart = options.autostart || false - this.results = options.results || null - this.pending = 0 - this.session = 0 - this.running = false - this.jobs = [] - this.timers = {} -} -inherits(Queue, EventEmitter) - -var arrayMethods = [ - 'pop', - 'shift', - 'indexOf', - 'lastIndexOf' -] - -arrayMethods.forEach(function (method) { - Queue.prototype[method] = function () { - return Array.prototype[method].apply(this.jobs, arguments) - } -}) - -Queue.prototype.slice = function (begin, end) { - this.jobs = this.jobs.slice(begin, end) - return this -} - -Queue.prototype.reverse = function () { - this.jobs.reverse() - return this -} - -var arrayAddMethods = [ - 'push', - 'unshift', - 'splice' -] - -arrayAddMethods.forEach(function (method) { - Queue.prototype[method] = function () { - var methodResult = Array.prototype[method].apply(this.jobs, arguments) - if (this.autostart) { - this.start() - } - return methodResult - } -}) - -Object.defineProperty(Queue.prototype, 'length', { - get: function () { - return this.pending + this.jobs.length - } -}) - -Queue.prototype.start = function (cb) { - if (cb) { - callOnErrorOrEnd.call(this, cb) - } - - this.running = true - - if (this.pending >= this.concurrency) { - return - } - - if (this.jobs.length === 0) { - if (this.pending === 0) { - done.call(this) - } - return - } - - var self = this - var job = this.jobs.shift() - var once = true - var session = this.session - var timeoutId = null - var didTimeout = false - var resultIndex = null - var timeout = job.timeout || this.timeout - - function next (err, result) { - if (once && self.session === session) { - once = false - self.pending-- - if (timeoutId !== null) { - delete self.timers[timeoutId] - clearTimeout(timeoutId) - } - - if (err) { - self.emit('error', err, job) - } else if (didTimeout === false) { - if (resultIndex !== null) { - self.results[resultIndex] = Array.prototype.slice.call(arguments, 1) - } - self.emit('success', result, job) - } - - if (self.session === session) { - if (self.pending === 0 && self.jobs.length === 0) { - done.call(self) - } else if (self.running) { - self.start() - } - } - } - } - - if (timeout) { - timeoutId = setTimeout(function () { - didTimeout = true - if (self.listeners('timeout').length > 0) { - self.emit('timeout', next, job) - } else { - next() - } - }, timeout) - this.timers[timeoutId] = timeoutId - } - - if (this.results) { - resultIndex = this.results.length - this.results[resultIndex] = null - } - - this.pending++ - self.emit('start', job) - var promise = job(next) - if (promise && promise.then && typeof promise.then === 'function') { - promise.then(function (result) { - return next(null, result) - }).catch(function (err) { - return next(err || true) - }) - } - - if (this.running && this.jobs.length > 0) { - this.start() - } -} - -Queue.prototype.stop = function () { - this.running = false -} - -Queue.prototype.end = function (err) { - clearTimers.call(this) - this.jobs.length = 0 - this.pending = 0 - done.call(this, err) -} - -function clearTimers () { - for (var key in this.timers) { - var timeoutId = this.timers[key] - delete this.timers[key] - clearTimeout(timeoutId) - } -} - -function callOnErrorOrEnd (cb) { - var self = this - this.on('error', onerror) - this.on('end', onend) - - function onerror (err) { self.end(err) } - function onend (err) { - self.removeListener('error', onerror) - self.removeListener('end', onend) - cb(err, this.results) - } -} - -function done (err) { - this.session++ - this.running = false - this.emit('end', err) -} - -},{"events":221,"inherits":262}],297:[function(require,module,exports){ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.quickselect = factory()); -}(this, (function () { 'use strict'; - -function quickselect(arr, k, left, right, compare) { - quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare); -} - -function quickselectStep(arr, k, left, right, compare) { - - while (right > left) { - if (right - left > 600) { - var n = right - left + 1; - var m = k - left + 1; - var z = Math.log(n); - var s = 0.5 * Math.exp(2 * z / 3); - var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1); - var newLeft = Math.max(left, Math.floor(k - m * s / n + sd)); - var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd)); - quickselectStep(arr, k, newLeft, newRight, compare); - } - - var t = arr[k]; - var i = left; - var j = right; - - swap(arr, left, k); - if (compare(arr[right], t) > 0) swap(arr, left, right); - - while (i < j) { - swap(arr, i, j); - i++; - j--; - while (compare(arr[i], t) < 0) i++; - while (compare(arr[j], t) > 0) j--; - } - - if (compare(arr[left], t) === 0) swap(arr, left, j); - else { - j++; - swap(arr, j, right); - } - - if (j <= k) left = j + 1; - if (k <= j) right = j - 1; - } -} - -function swap(arr, i, j) { - var tmp = arr[i]; - arr[i] = arr[j]; - arr[j] = tmp; -} - -function defaultCompare(a, b) { - return a < b ? -1 : a > b ? 1 : 0; -} - -return quickselect; - -}))); - -},{}],298:[function(require,module,exports){ -(function (process,global){ -'use strict' - -// limit of Crypto.getRandomValues() -// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues -var MAX_BYTES = 65536 - -// Node supports requesting up to this number of bytes -// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48 -var MAX_UINT32 = 4294967295 - -function oldBrowser () { - throw new Error('Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11') -} - -var Buffer = require('safe-buffer').Buffer -var crypto = global.crypto || global.msCrypto - -if (crypto && crypto.getRandomValues) { - module.exports = randomBytes -} else { - module.exports = oldBrowser -} - -function randomBytes (size, cb) { - // phantomjs needs to throw - if (size > MAX_UINT32) throw new RangeError('requested too many random bytes') - - var bytes = Buffer.allocUnsafe(size) - - if (size > 0) { // getRandomValues fails on IE if size == 0 - if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues - // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues - for (var generated = 0; generated < size; generated += MAX_BYTES) { - // buffer.slice automatically checks if the end is past the end of - // the buffer so we don't have to here - crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES)) - } - } else { - crypto.getRandomValues(bytes) - } - } - - if (typeof cb === 'function') { - return process.nextTick(function () { - cb(null, bytes) - }) - } - - return bytes -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":284,"safe-buffer":318}],299:[function(require,module,exports){ -(function (process,global){ -'use strict' - -function oldBrowser () { - throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11') -} -var safeBuffer = require('safe-buffer') -var randombytes = require('randombytes') -var Buffer = safeBuffer.Buffer -var kBufferMaxLength = safeBuffer.kMaxLength -var crypto = global.crypto || global.msCrypto -var kMaxUint32 = Math.pow(2, 32) - 1 -function assertOffset (offset, length) { - if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare - throw new TypeError('offset must be a number') - } - - if (offset > kMaxUint32 || offset < 0) { - throw new TypeError('offset must be a uint32') - } - - if (offset > kBufferMaxLength || offset > length) { - throw new RangeError('offset out of range') - } -} - -function assertSize (size, offset, length) { - if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare - throw new TypeError('size must be a number') - } - - if (size > kMaxUint32 || size < 0) { - throw new TypeError('size must be a uint32') - } - - if (size + offset > length || size > kBufferMaxLength) { - throw new RangeError('buffer too small') - } -} -if ((crypto && crypto.getRandomValues) || !process.browser) { - exports.randomFill = randomFill - exports.randomFillSync = randomFillSync -} else { - exports.randomFill = oldBrowser - exports.randomFillSync = oldBrowser -} -function randomFill (buf, offset, size, cb) { - if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) { - throw new TypeError('"buf" argument must be a Buffer or Uint8Array') - } - - if (typeof offset === 'function') { - cb = offset - offset = 0 - size = buf.length - } else if (typeof size === 'function') { - cb = size - size = buf.length - offset - } else if (typeof cb !== 'function') { - throw new TypeError('"cb" argument must be a function') - } - assertOffset(offset, buf.length) - assertSize(size, offset, buf.length) - return actualFill(buf, offset, size, cb) -} - -function actualFill (buf, offset, size, cb) { - if (process.browser) { - var ourBuf = buf.buffer - var uint = new Uint8Array(ourBuf, offset, size) - crypto.getRandomValues(uint) - if (cb) { - process.nextTick(function () { - cb(null, buf) - }) - return - } - return buf - } - if (cb) { - randombytes(size, function (err, bytes) { - if (err) { - return cb(err) - } - bytes.copy(buf, offset) - cb(null, buf) - }) - return - } - var bytes = randombytes(size) - bytes.copy(buf, offset) - return buf -} -function randomFillSync (buf, offset, size) { - if (typeof offset === 'undefined') { - offset = 0 - } - if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) { - throw new TypeError('"buf" argument must be a Buffer or Uint8Array') - } - - assertOffset(offset, buf.length) - - if (size === undefined) size = buf.length - offset - - assertSize(size, offset, buf.length) - - return actualFill(buf, offset, size) -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":284,"randombytes":298,"safe-buffer":318}],300:[function(require,module,exports){ -'use strict'; - -module.exports = rbush; -module.exports.default = rbush; - -var quickselect = require('quickselect'); - -function rbush(maxEntries, format) { - if (!(this instanceof rbush)) return new rbush(maxEntries, format); - - // max entries in a node is 9 by default; min node fill is 40% for best performance - this._maxEntries = Math.max(4, maxEntries || 9); - this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4)); - - if (format) { - this._initFormat(format); - } - - this.clear(); -} - -rbush.prototype = { - - all: function () { - return this._all(this.data, []); - }, - - search: function (bbox) { - - var node = this.data, - result = [], - toBBox = this.toBBox; - - if (!intersects(bbox, node)) return result; - - var nodesToSearch = [], - i, len, child, childBBox; - - while (node) { - for (i = 0, len = node.children.length; i < len; i++) { - - child = node.children[i]; - childBBox = node.leaf ? toBBox(child) : child; - - if (intersects(bbox, childBBox)) { - if (node.leaf) result.push(child); - else if (contains(bbox, childBBox)) this._all(child, result); - else nodesToSearch.push(child); - } - } - node = nodesToSearch.pop(); - } - - return result; - }, - - collides: function (bbox) { - - var node = this.data, - toBBox = this.toBBox; - - if (!intersects(bbox, node)) return false; - - var nodesToSearch = [], - i, len, child, childBBox; - - while (node) { - for (i = 0, len = node.children.length; i < len; i++) { - - child = node.children[i]; - childBBox = node.leaf ? toBBox(child) : child; - - if (intersects(bbox, childBBox)) { - if (node.leaf || contains(bbox, childBBox)) return true; - nodesToSearch.push(child); - } - } - node = nodesToSearch.pop(); - } - - return false; - }, - - load: function (data) { - if (!(data && data.length)) return this; - - if (data.length < this._minEntries) { - for (var i = 0, len = data.length; i < len; i++) { - this.insert(data[i]); - } - return this; - } - - // recursively build the tree with the given data from scratch using OMT algorithm - var node = this._build(data.slice(), 0, data.length - 1, 0); - - if (!this.data.children.length) { - // save as is if tree is empty - this.data = node; - - } else if (this.data.height === node.height) { - // split root if trees have the same height - this._splitRoot(this.data, node); - - } else { - if (this.data.height < node.height) { - // swap trees if inserted one is bigger - var tmpNode = this.data; - this.data = node; - node = tmpNode; - } - - // insert the small tree into the large tree at appropriate level - this._insert(node, this.data.height - node.height - 1, true); - } - - return this; - }, - - insert: function (item) { - if (item) this._insert(item, this.data.height - 1); - return this; - }, - - clear: function () { - this.data = createNode([]); - return this; - }, - - remove: function (item, equalsFn) { - if (!item) return this; - - var node = this.data, - bbox = this.toBBox(item), - path = [], - indexes = [], - i, parent, index, goingUp; - - // depth-first iterative tree traversal - while (node || path.length) { - - if (!node) { // go up - node = path.pop(); - parent = path[path.length - 1]; - i = indexes.pop(); - goingUp = true; - } - - if (node.leaf) { // check current node - index = findItem(item, node.children, equalsFn); - - if (index !== -1) { - // item found, remove the item and condense tree upwards - node.children.splice(index, 1); - path.push(node); - this._condense(path); - return this; - } - } - - if (!goingUp && !node.leaf && contains(node, bbox)) { // go down - path.push(node); - indexes.push(i); - i = 0; - parent = node; - node = node.children[0]; - - } else if (parent) { // go right - i++; - node = parent.children[i]; - goingUp = false; - - } else node = null; // nothing found - } - - return this; - }, - - toBBox: function (item) { return item; }, - - compareMinX: compareNodeMinX, - compareMinY: compareNodeMinY, - - toJSON: function () { return this.data; }, - - fromJSON: function (data) { - this.data = data; - return this; - }, - - _all: function (node, result) { - var nodesToSearch = []; - while (node) { - if (node.leaf) result.push.apply(result, node.children); - else nodesToSearch.push.apply(nodesToSearch, node.children); - - node = nodesToSearch.pop(); - } - return result; - }, - - _build: function (items, left, right, height) { - - var N = right - left + 1, - M = this._maxEntries, - node; - - if (N <= M) { - // reached leaf level; return leaf - node = createNode(items.slice(left, right + 1)); - calcBBox(node, this.toBBox); - return node; - } - - if (!height) { - // target height of the bulk-loaded tree - height = Math.ceil(Math.log(N) / Math.log(M)); - - // target number of root entries to maximize storage utilization - M = Math.ceil(N / Math.pow(M, height - 1)); - } - - node = createNode([]); - node.leaf = false; - node.height = height; - - // split the items into M mostly square tiles - - var N2 = Math.ceil(N / M), - N1 = N2 * Math.ceil(Math.sqrt(M)), - i, j, right2, right3; - - multiSelect(items, left, right, N1, this.compareMinX); - - for (i = left; i <= right; i += N1) { - - right2 = Math.min(i + N1 - 1, right); - - multiSelect(items, i, right2, N2, this.compareMinY); - - for (j = i; j <= right2; j += N2) { - - right3 = Math.min(j + N2 - 1, right2); - - // pack each entry recursively - node.children.push(this._build(items, j, right3, height - 1)); - } - } - - calcBBox(node, this.toBBox); - - return node; - }, - - _chooseSubtree: function (bbox, node, level, path) { - - var i, len, child, targetNode, area, enlargement, minArea, minEnlargement; - - while (true) { - path.push(node); - - if (node.leaf || path.length - 1 === level) break; - - minArea = minEnlargement = Infinity; - - for (i = 0, len = node.children.length; i < len; i++) { - child = node.children[i]; - area = bboxArea(child); - enlargement = enlargedArea(bbox, child) - area; - - // choose entry with the least area enlargement - if (enlargement < minEnlargement) { - minEnlargement = enlargement; - minArea = area < minArea ? area : minArea; - targetNode = child; - - } else if (enlargement === minEnlargement) { - // otherwise choose one with the smallest area - if (area < minArea) { - minArea = area; - targetNode = child; - } - } - } - - node = targetNode || node.children[0]; - } - - return node; - }, - - _insert: function (item, level, isNode) { - - var toBBox = this.toBBox, - bbox = isNode ? item : toBBox(item), - insertPath = []; - - // find the best node for accommodating the item, saving all nodes along the path too - var node = this._chooseSubtree(bbox, this.data, level, insertPath); - - // put the item into the node - node.children.push(item); - extend(node, bbox); - - // split on node overflow; propagate upwards if necessary - while (level >= 0) { - if (insertPath[level].children.length > this._maxEntries) { - this._split(insertPath, level); - level--; - } else break; - } - - // adjust bboxes along the insertion path - this._adjustParentBBoxes(bbox, insertPath, level); - }, - - // split overflowed node into two - _split: function (insertPath, level) { - - var node = insertPath[level], - M = node.children.length, - m = this._minEntries; - - this._chooseSplitAxis(node, m, M); - - var splitIndex = this._chooseSplitIndex(node, m, M); - - var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex)); - newNode.height = node.height; - newNode.leaf = node.leaf; - - calcBBox(node, this.toBBox); - calcBBox(newNode, this.toBBox); - - if (level) insertPath[level - 1].children.push(newNode); - else this._splitRoot(node, newNode); - }, - - _splitRoot: function (node, newNode) { - // split root node - this.data = createNode([node, newNode]); - this.data.height = node.height + 1; - this.data.leaf = false; - calcBBox(this.data, this.toBBox); - }, - - _chooseSplitIndex: function (node, m, M) { - - var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index; - - minOverlap = minArea = Infinity; - - for (i = m; i <= M - m; i++) { - bbox1 = distBBox(node, 0, i, this.toBBox); - bbox2 = distBBox(node, i, M, this.toBBox); - - overlap = intersectionArea(bbox1, bbox2); - area = bboxArea(bbox1) + bboxArea(bbox2); - - // choose distribution with minimum overlap - if (overlap < minOverlap) { - minOverlap = overlap; - index = i; - - minArea = area < minArea ? area : minArea; - - } else if (overlap === minOverlap) { - // otherwise choose distribution with minimum area - if (area < minArea) { - minArea = area; - index = i; - } - } - } - - return index; - }, - - // sorts node children by the best axis for split - _chooseSplitAxis: function (node, m, M) { - - var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX, - compareMinY = node.leaf ? this.compareMinY : compareNodeMinY, - xMargin = this._allDistMargin(node, m, M, compareMinX), - yMargin = this._allDistMargin(node, m, M, compareMinY); - - // if total distributions margin value is minimal for x, sort by minX, - // otherwise it's already sorted by minY - if (xMargin < yMargin) node.children.sort(compareMinX); - }, - - // total margin of all possible split distributions where each node is at least m full - _allDistMargin: function (node, m, M, compare) { - - node.children.sort(compare); - - var toBBox = this.toBBox, - leftBBox = distBBox(node, 0, m, toBBox), - rightBBox = distBBox(node, M - m, M, toBBox), - margin = bboxMargin(leftBBox) + bboxMargin(rightBBox), - i, child; - - for (i = m; i < M - m; i++) { - child = node.children[i]; - extend(leftBBox, node.leaf ? toBBox(child) : child); - margin += bboxMargin(leftBBox); - } - - for (i = M - m - 1; i >= m; i--) { - child = node.children[i]; - extend(rightBBox, node.leaf ? toBBox(child) : child); - margin += bboxMargin(rightBBox); - } - - return margin; - }, - - _adjustParentBBoxes: function (bbox, path, level) { - // adjust bboxes along the given tree path - for (var i = level; i >= 0; i--) { - extend(path[i], bbox); - } - }, - - _condense: function (path) { - // go through the path, removing empty nodes and updating bboxes - for (var i = path.length - 1, siblings; i >= 0; i--) { - if (path[i].children.length === 0) { - if (i > 0) { - siblings = path[i - 1].children; - siblings.splice(siblings.indexOf(path[i]), 1); - - } else this.clear(); - - } else calcBBox(path[i], this.toBBox); - } - }, - - _initFormat: function (format) { - // data format (minX, minY, maxX, maxY accessors) - - // uses eval-type function compilation instead of just accepting a toBBox function - // because the algorithms are very sensitive to sorting functions performance, - // so they should be dead simple and without inner calls - - var compareArr = ['return a', ' - b', ';']; - - this.compareMinX = new Function('a', 'b', compareArr.join(format[0])); - this.compareMinY = new Function('a', 'b', compareArr.join(format[1])); - - this.toBBox = new Function('a', - 'return {minX: a' + format[0] + - ', minY: a' + format[1] + - ', maxX: a' + format[2] + - ', maxY: a' + format[3] + '};'); - } -}; - -function findItem(item, items, equalsFn) { - if (!equalsFn) return items.indexOf(item); - - for (var i = 0; i < items.length; i++) { - if (equalsFn(item, items[i])) return i; - } - return -1; -} - -// calculate node's bbox from bboxes of its children -function calcBBox(node, toBBox) { - distBBox(node, 0, node.children.length, toBBox, node); -} - -// min bounding rectangle of node children from k to p-1 -function distBBox(node, k, p, toBBox, destNode) { - if (!destNode) destNode = createNode(null); - destNode.minX = Infinity; - destNode.minY = Infinity; - destNode.maxX = -Infinity; - destNode.maxY = -Infinity; - - for (var i = k, child; i < p; i++) { - child = node.children[i]; - extend(destNode, node.leaf ? toBBox(child) : child); - } - - return destNode; -} - -function extend(a, b) { - a.minX = Math.min(a.minX, b.minX); - a.minY = Math.min(a.minY, b.minY); - a.maxX = Math.max(a.maxX, b.maxX); - a.maxY = Math.max(a.maxY, b.maxY); - return a; -} - -function compareNodeMinX(a, b) { return a.minX - b.minX; } -function compareNodeMinY(a, b) { return a.minY - b.minY; } - -function bboxArea(a) { return (a.maxX - a.minX) * (a.maxY - a.minY); } -function bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); } - -function enlargedArea(a, b) { - return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) * - (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY)); -} - -function intersectionArea(a, b) { - var minX = Math.max(a.minX, b.minX), - minY = Math.max(a.minY, b.minY), - maxX = Math.min(a.maxX, b.maxX), - maxY = Math.min(a.maxY, b.maxY); - - return Math.max(0, maxX - minX) * - Math.max(0, maxY - minY); -} - -function contains(a, b) { - return a.minX <= b.minX && - a.minY <= b.minY && - b.maxX <= a.maxX && - b.maxY <= a.maxY; -} - -function intersects(a, b) { - return b.minX <= a.maxX && - b.minY <= a.maxY && - b.maxX >= a.minX && - b.maxY >= a.minY; -} - -function createNode(children) { - return { - children: children, - height: 1, - leaf: true, - minX: Infinity, - minY: Infinity, - maxX: -Infinity, - maxY: -Infinity - }; -} - -// sort an array so that items come in groups of n unsorted items, with groups sorted between each other; -// combines selection algorithm with binary divide & conquer approach - -function multiSelect(arr, left, right, n, compare) { - var stack = [left, right], - mid; - - while (stack.length) { - right = stack.pop(); - left = stack.pop(); - - if (right - left <= n) continue; - - mid = left + Math.ceil((right - left) / n / 2) * n; - quickselect(arr, mid, left, right, compare); - - stack.push(left, mid, mid, right); - } -} - -},{"quickselect":297}],301:[function(require,module,exports){ -module.exports = require('./lib/_stream_duplex.js'); - -},{"./lib/_stream_duplex.js":302}],302:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; -}; -/**/ - -module.exports = Duplex; - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -{ - // avoid scope creep, the keys array can then be collected - var keys = objectKeys(Writable.prototype); - for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - - this.once('end', onend); -} - -Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._writableState.highWaterMark; - } -}); - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. - // But allow more writes to happen in this tick. - pna.nextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -Object.defineProperty(Duplex.prototype, 'destroyed', { - get: function () { - if (this._readableState === undefined || this._writableState === undefined) { - return false; - } - return this._readableState.destroyed && this._writableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (this._readableState === undefined || this._writableState === undefined) { - return; - } - - // backward compatibility, the user is explicitly - // managing destroyed - this._readableState.destroyed = value; - this._writableState.destroyed = value; - } -}); - -Duplex.prototype._destroy = function (err, cb) { - this.push(null); - this.end(); - - pna.nextTick(cb, err); -}; -},{"./_stream_readable":304,"./_stream_writable":306,"core-util-is":186,"inherits":262,"process-nextick-args":283}],303:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -'use strict'; - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; -},{"./_stream_transform":305,"core-util-is":186,"inherits":262}],304:[function(require,module,exports){ -(function (process,global){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - -/**/ -var Duplex; -/**/ - -Readable.ReadableState = ReadableState; - -/**/ -var EE = require('events').EventEmitter; - -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -/**/ -var Stream = require('./internal/streams/stream'); -/**/ - -/**/ - -var Buffer = require('safe-buffer').Buffer; -var OurUint8Array = global.Uint8Array || function () {}; -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} - -/**/ - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -/**/ -var debugUtil = require('util'); -var debug = void 0; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - -var BufferList = require('./internal/streams/BufferList'); -var destroyImpl = require('./internal/streams/destroy'); -var StringDecoder; - -util.inherits(Readable, Stream); - -var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; - -function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); - - // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; -} - -function ReadableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - var isDuplex = stream instanceof Duplex; - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var readableHwm = options.readableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; - - // cast to ints. - this.highWaterMark = Math.floor(this.highWaterMark); - - // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the event 'readable'/'data' is emitted - // immediately, or on a later tick. We set this to true at first, because - // any actions that shouldn't happen until "later" should generally also - // not happen before the first read call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - - // has it been destroyed - this.destroyed = false; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - if (!(this instanceof Readable)) return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - if (options) { - if (typeof options.read === 'function') this._read = options.read; - - if (typeof options.destroy === 'function') this._destroy = options.destroy; - } - - Stream.call(this); -} - -Object.defineProperty(Readable.prototype, 'destroyed', { - get: function () { - if (this._readableState === undefined) { - return false; - } - return this._readableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._readableState) { - return; - } - - // backward compatibility, the user is explicitly - // managing destroyed - this._readableState.destroyed = value; - } -}); - -Readable.prototype.destroy = destroyImpl.destroy; -Readable.prototype._undestroy = destroyImpl.undestroy; -Readable.prototype._destroy = function (err, cb) { - this.push(null); - cb(err); -}; - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - var skipChunkCheck; - - if (!state.objectMode) { - if (typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = Buffer.from(chunk, encoding); - encoding = ''; - } - skipChunkCheck = true; - } - } else { - skipChunkCheck = true; - } - - return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function (chunk) { - return readableAddChunk(this, chunk, null, true, false); -}; - -function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { - var state = stream._readableState; - if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else { - var er; - if (!skipChunkCheck) er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (addToFront) { - if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); - } else if (state.ended) { - stream.emit('error', new Error('stream.push() after EOF')); - } else { - state.reading = false; - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk); - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); - } else { - addChunk(stream, state, chunk, false); - } - } - } else if (!addToFront) { - state.reading = false; - } - } - - return needMoreData(state); -} - -function addChunk(stream, state, chunk, addToFront) { - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - - if (state.needReadable) emitReadable(stream); - } - maybeReadMore(stream, state); -} - -function chunkInvalid(state, chunk) { - var er; - if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); -} - -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; - -// backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; - -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; -} - -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; - // Don't have enough - if (!state.ended) { - state.needReadable = true; - return 0; - } - return state.length; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - - if (n !== 0) state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); - - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); - } - - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } else { - state.length -= n; - } - - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable(this); - } - - if (ret !== null) this.emit('data', ret); - - return ret; -}; - -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); - } -} - -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - pna.nextTick(maybeReadMore_, stream, state); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - this.emit('error', new Error('_read() is not implemented')); -}; - -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - - var endFn = doEnd ? onend : unpipe; - if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable, unpipeInfo) { - debug('onunpipe'); - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true; - cleanup(); - } - } - } - - function onend() { - debug('onend'); - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', unpipe); - src.removeListener('data', ondata); - - cleanedUp = true; - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - - // If the user pushes more data while we're writing to dest then we'll end up - // in ondata again. However, we only want to increase awaitDrain once because - // dest will only emit one 'drain' event for the multiple writes. - // => Introduce a guard on increasing awaitDrain. - var increasedAwaitDrain = false; - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - increasedAwaitDrain = false; - var ret = dest.write(chunk); - if (false === ret && !increasedAwaitDrain) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - increasedAwaitDrain = true; - } - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } - - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - var unpipeInfo = { hasUnpiped: false }; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - - if (!dest) dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this, unpipeInfo); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, unpipeInfo); - }return this; - } - - // try to find the right one. - var index = indexOf(state.pipes, dest); - if (index === -1) return this; - - state.pipes.splice(index, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - - dest.emit('unpipe', this, unpipeInfo); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data') { - // Start flowing on next tick if stream isn't explicitly paused - if (this._readableState.flowing !== false) this.resume(); - } else if (ev === 'readable') { - var state = this._readableState; - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.emittedReadable = false; - if (!state.reading) { - pna.nextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - pna.nextTick(resume_, stream, state); - } -} - -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } - - state.resumeScheduled = false; - state.awaitDrain = 0; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - while (state.flowing && stream.read() !== null) {} -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - var _this = this; - - var state = this._readableState; - var paused = false; - - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) _this.push(chunk); - } - - _this.push(null); - }); - - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = _this.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } - - // proxy certain important events. - for (var n = 0; n < kProxyEvents.length; n++) { - stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); - } - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - this._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; - - return this; -}; - -Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._readableState.highWaterMark; - } -}); - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; - - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = fromListPartial(n, state.buffer, state.decoder); - } - - return ret; -} - -// Extracts only enough buffered data to satisfy the amount requested. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromListPartial(n, list, hasStrings) { - var ret; - if (n < list.head.data.length) { - // slice is the same for buffers and strings - ret = list.head.data.slice(0, n); - list.head.data = list.head.data.slice(n); - } else if (n === list.head.data.length) { - // first chunk is a perfect match - ret = list.shift(); - } else { - // result spans more than one buffer - ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); - } - return ret; -} - -// Copies a specified amount of characters from the list of buffered data -// chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBufferString(n, list) { - var p = list.head; - var c = 1; - var ret = p.data; - n -= ret.length; - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = str.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; -} - -// Copies a specified amount of bytes from the list of buffered data chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBuffer(n, list) { - var ret = Buffer.allocUnsafe(n); - var p = list.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = buf.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - pna.nextTick(endReadableNT, state, stream); - } -} - -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } -} - -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./_stream_duplex":302,"./internal/streams/BufferList":307,"./internal/streams/destroy":308,"./internal/streams/stream":309,"_process":284,"core-util-is":186,"events":221,"inherits":262,"isarray":264,"process-nextick-args":283,"safe-buffer":310,"string_decoder/":333,"util":149}],305:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -'use strict'; - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - -function afterTransform(er, data) { - var ts = this._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) { - return this.emit('error', new Error('write callback called multiple times')); - } - - ts.writechunk = null; - ts.writecb = null; - - if (data != null) // single equals check for both `null` and `undefined` - this.push(data); - - cb(er); - - var rs = this._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - this._read(rs.highWaterMark); - } -} - -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - - Duplex.call(this, options); - - this._transformState = { - afterTransform: afterTransform.bind(this), - needTransform: false, - transforming: false, - writecb: null, - writechunk: null, - writeencoding: null - }; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - - if (typeof options.flush === 'function') this._flush = options.flush; - } - - // When the writable side finishes, then flush out anything remaining. - this.on('prefinish', prefinish); -} - -function prefinish() { - var _this = this; - - if (typeof this._flush === 'function') { - this._flush(function (er, data) { - done(_this, er, data); - }); - } else { - done(this, null, null); - } -} - -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('_transform() is not implemented'); -}; - -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - -Transform.prototype._destroy = function (err, cb) { - var _this2 = this; - - Duplex.prototype._destroy.call(this, err, function (err2) { - cb(err2); - _this2.emit('close'); - }); -}; - -function done(stream, er, data) { - if (er) return stream.emit('error', er); - - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); - - if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); - - return stream.push(null); -} -},{"./_stream_duplex":302,"core-util-is":186,"inherits":262}],306:[function(require,module,exports){ -(function (process,global,setImmediate){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -module.exports = Writable; - -/* */ -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} - -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - this.finish = function () { - onCorkedFinish(_this, state); - }; -} -/* */ - -/**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; -/**/ - -/**/ -var Duplex; -/**/ - -Writable.WritableState = WritableState; - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -/**/ -var internalUtil = { - deprecate: require('util-deprecate') -}; -/**/ - -/**/ -var Stream = require('./internal/streams/stream'); -/**/ - -/**/ - -var Buffer = require('safe-buffer').Buffer; -var OurUint8Array = global.Uint8Array || function () {}; -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} - -/**/ - -var destroyImpl = require('./internal/streams/destroy'); - -util.inherits(Writable, Stream); - -function nop() {} - -function WritableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - var isDuplex = stream instanceof Duplex; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var writableHwm = options.writableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; - - // cast to ints. - this.highWaterMark = Math.floor(this.highWaterMark); - - // if _final has been called - this.finalCalled = false; - - // drain event flag. - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // has it been destroyed - this.destroyed = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.bufferedRequest = null; - this.lastBufferedRequest = null; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; - - // count buffered requests - this.bufferedRequestCount = 0; - - // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); -} - -WritableState.prototype.getBuffer = function getBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; -}; - -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') - }); - } catch (_) {} -})(); - -// Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. -var realHasInstance; -if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { - realHasInstance = Function.prototype[Symbol.hasInstance]; - Object.defineProperty(Writable, Symbol.hasInstance, { - value: function (object) { - if (realHasInstance.call(this, object)) return true; - if (this !== Writable) return false; - - return object && object._writableState instanceof WritableState; - } - }); -} else { - realHasInstance = function (object) { - return object instanceof this; - }; -} - -function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, too. - // `realHasInstance` is necessary because using plain `instanceof` - // would return false, as no `_writableState` property is attached. - - // Trying to use the custom `instanceof` for Writable here will also break the - // Node.js LazyTransform implementation, which has a non-trivial getter for - // `_writableState` that would lead to infinite recursion. - if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { - return new Writable(options); - } - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - - if (typeof options.writev === 'function') this._writev = options.writev; - - if (typeof options.destroy === 'function') this._destroy = options.destroy; - - if (typeof options.final === 'function') this._final = options.final; - } - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); -}; - -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - pna.nextTick(cb, er); -} - -// Checks that a user-supplied chunk is valid, especially for the particular -// mode the stream is in. Currently this means that `null` is never accepted -// and undefined/non-string values are only allowed in object mode. -function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; - - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - if (er) { - stream.emit('error', er); - pna.nextTick(cb, er); - valid = false; - } - return valid; -} - -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - var isBuf = !state.objectMode && _isUint8Array(chunk); - - if (isBuf && !Buffer.isBuffer(chunk)) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - - if (typeof cb !== 'function') cb = nop; - - if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); - } - - return ret; -}; - -Writable.prototype.cork = function () { - var state = this._writableState; - - state.corked++; -}; - -Writable.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; - return this; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = Buffer.from(chunk, encoding); - } - return chunk; -} - -Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._writableState.highWaterMark; - } -}); - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { - if (!isBuf) { - var newChunk = decodeChunk(state, chunk, encoding); - if (chunk !== newChunk) { - isBuf = true; - encoding = 'buffer'; - chunk = newChunk; - } - } - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = { - chunk: chunk, - encoding: encoding, - isBuf: isBuf, - callback: cb, - next: null - }; - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - - if (sync) { - // defer the callback if we are being called synchronously - // to avoid piling up things on the stack - pna.nextTick(cb, er); - // this can emit finish, and it will always happen - // after error - pna.nextTick(finishMaybe, stream, state); - stream._writableState.errorEmitted = true; - stream.emit('error', er); - } else { - // the caller expect this to happen before if - // it is async - cb(er); - stream._writableState.errorEmitted = true; - stream.emit('error', er); - // this can emit finish, but finish must - // always follow error - finishMaybe(stream, state); - } -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - - var count = 0; - var allBuffers = true; - while (entry) { - buffer[count] = entry; - if (!entry.isBuf) allBuffers = false; - entry = entry.next; - count += 1; - } - buffer.allBuffers = allBuffers; - - doWrite(stream, state, true, state.length, buffer, '', holder.finish); - - // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - state.bufferedRequestCount = 0; - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - state.bufferedRequestCount--; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('_write() is not implemented')); -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); -}; - -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} -function callFinal(stream, state) { - stream._final(function (err) { - state.pendingcb--; - if (err) { - stream.emit('error', err); - } - state.prefinished = true; - stream.emit('prefinish'); - finishMaybe(stream, state); - }); -} -function prefinish(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function') { - state.pendingcb++; - state.finalCalled = true; - pna.nextTick(callFinal, stream, state); - } else { - state.prefinished = true; - stream.emit('prefinish'); - } - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - prefinish(stream, state); - if (state.pendingcb === 0) { - state.finished = true; - stream.emit('finish'); - } - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); - } - state.ended = true; - stream.writable = false; -} - -function onCorkedFinish(corkReq, state, err) { - var entry = corkReq.entry; - corkReq.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = corkReq; - } else { - state.corkedRequestsFree = corkReq; - } -} - -Object.defineProperty(Writable.prototype, 'destroyed', { - get: function () { - if (this._writableState === undefined) { - return false; - } - return this._writableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._writableState) { - return; - } - - // backward compatibility, the user is explicitly - // managing destroyed - this._writableState.destroyed = value; - } -}); - -Writable.prototype.destroy = destroyImpl.destroy; -Writable.prototype._undestroy = destroyImpl.undestroy; -Writable.prototype._destroy = function (err, cb) { - this.end(); - cb(err); -}; -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) -},{"./_stream_duplex":302,"./internal/streams/destroy":308,"./internal/streams/stream":309,"_process":284,"core-util-is":186,"inherits":262,"process-nextick-args":283,"safe-buffer":310,"timers":335,"util-deprecate":340}],307:[function(require,module,exports){ -'use strict'; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Buffer = require('safe-buffer').Buffer; -var util = require('util'); - -function copyBuffer(src, target, offset) { - src.copy(target, offset); -} - -module.exports = function () { - function BufferList() { - _classCallCheck(this, BufferList); - - this.head = null; - this.tail = null; - this.length = 0; - } - - BufferList.prototype.push = function push(v) { - var entry = { data: v, next: null }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - }; - - BufferList.prototype.unshift = function unshift(v) { - var entry = { data: v, next: this.head }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - }; - - BufferList.prototype.shift = function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - }; - - BufferList.prototype.clear = function clear() { - this.head = this.tail = null; - this.length = 0; - }; - - BufferList.prototype.join = function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - while (p = p.next) { - ret += s + p.data; - }return ret; - }; - - BufferList.prototype.concat = function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - if (this.length === 1) return this.head.data; - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - return ret; - }; - - return BufferList; -}(); - -if (util && util.inspect && util.inspect.custom) { - module.exports.prototype[util.inspect.custom] = function () { - var obj = util.inspect({ length: this.length }); - return this.constructor.name + ' ' + obj; - }; -} -},{"safe-buffer":310,"util":149}],308:[function(require,module,exports){ -'use strict'; - -/**/ - -var pna = require('process-nextick-args'); -/**/ - -// undocumented cb() API, needed for core, not for public API -function destroy(err, cb) { - var _this = this; - - var readableDestroyed = this._readableState && this._readableState.destroyed; - var writableDestroyed = this._writableState && this._writableState.destroyed; - - if (readableDestroyed || writableDestroyed) { - if (cb) { - cb(err); - } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { - pna.nextTick(emitErrorNT, this, err); - } - return this; - } - - // we set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks - - if (this._readableState) { - this._readableState.destroyed = true; - } - - // if this is a duplex stream mark the writable part as destroyed as well - if (this._writableState) { - this._writableState.destroyed = true; - } - - this._destroy(err || null, function (err) { - if (!cb && err) { - pna.nextTick(emitErrorNT, _this, err); - if (_this._writableState) { - _this._writableState.errorEmitted = true; - } - } else if (cb) { - cb(err); - } - }); - - return this; -} - -function undestroy() { - if (this._readableState) { - this._readableState.destroyed = false; - this._readableState.reading = false; - this._readableState.ended = false; - this._readableState.endEmitted = false; - } - - if (this._writableState) { - this._writableState.destroyed = false; - this._writableState.ended = false; - this._writableState.ending = false; - this._writableState.finished = false; - this._writableState.errorEmitted = false; - } -} - -function emitErrorNT(self, err) { - self.emit('error', err); -} - -module.exports = { - destroy: destroy, - undestroy: undestroy -}; -},{"process-nextick-args":283}],309:[function(require,module,exports){ -module.exports = require('events').EventEmitter; - -},{"events":221}],310:[function(require,module,exports){ -arguments[4][178][0].apply(exports,arguments) -},{"buffer":182,"dup":178}],311:[function(require,module,exports){ -module.exports = require('./readable').PassThrough - -},{"./readable":312}],312:[function(require,module,exports){ -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); - -},{"./lib/_stream_duplex.js":302,"./lib/_stream_passthrough.js":303,"./lib/_stream_readable.js":304,"./lib/_stream_transform.js":305,"./lib/_stream_writable.js":306}],313:[function(require,module,exports){ -module.exports = require('./readable').Transform - -},{"./readable":312}],314:[function(require,module,exports){ -module.exports = require('./lib/_stream_writable.js'); - -},{"./lib/_stream_writable.js":306}],315:[function(require,module,exports){ -'use strict'; - -var proj4 = require('proj4').hasOwnProperty('default') ? require('proj4').default : require('proj4'); -// Checks if `list` looks like a `[x, y]`. -function isXY(list) { - return list.length >= 2 && - typeof list[0] === 'number' && - typeof list[1] === 'number'; -} - -function traverseCoords(coordinates, callback) { - if (isXY(coordinates)) return callback(coordinates); - return coordinates.map(function(coord){return traverseCoords(coord, callback);}); -} - -// Simplistic shallow clone that will work for a normal GeoJSON object. -function clone(obj) { - if (null == obj || 'object' !== typeof obj) return obj; - var copy = obj.constructor(); - for (var attr in obj) { - if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr]; - } - return copy; -} - -function traverseGeoJson(geometryCb, nodeCb, geojson) { - if (geojson == null) return geojson; - - var r = clone(geojson); - var self = traverseGeoJson.bind(this, geometryCb, nodeCb); - - switch (geojson.type) { - case 'Feature': - r.geometry = self(geojson.geometry); - break; - case 'FeatureCollection': - r.features = r.features.map(self); - break; - case 'GeometryCollection': - r.geometries = r.geometries.map(self); - break; - default: - geometryCb(r); - break; - } - - if (nodeCb) nodeCb(r); - - return r; -} - -function detectCrs(geojson, projs) { - var crsInfo = geojson.crs, - crs; - - if (crsInfo === undefined) { - throw new Error('Unable to detect CRS, GeoJSON has no "crs" property.'); - } - - if (crsInfo.type === 'name') { - crs = projs[crsInfo.properties.name]; - } else if (crsInfo.type === 'EPSG') { - crs = projs['EPSG:' + crsInfo.properties.code]; - } - - if (!crs) { - throw new Error('CRS defined in crs section could not be identified: ' + JSON.stringify(crsInfo)); - } - - return crs; -} - -function determineCrs(crs, projs) { - if (typeof crs === 'string' || crs instanceof String) { - return projs[crs] || proj4.Proj(crs); - } - - return crs; -} - -function calcBbox(geojson) { - var min = [Number.MAX_VALUE, Number.MAX_VALUE], - max = [-Number.MAX_VALUE, -Number.MAX_VALUE]; - traverseGeoJson(function(_gj) { - traverseCoords(_gj.coordinates, function(xy) { - min[0] = Math.min(min[0], xy[0]); - min[1] = Math.min(min[1], xy[1]); - max[0] = Math.max(max[0], xy[0]); - max[1] = Math.max(max[1], xy[1]); - }); - }, null, geojson); - return [min[0], min[1], max[0], max[1]]; -} - -function reproject(geojson, from, to, projs) { - projs = projs || {}; - if (!from) { - from = detectCrs(geojson, projs); - } else { - from = determineCrs(from, projs); - } - - to = determineCrs(to, projs); - var transform = proj4(from, to).forward.bind(transform); - - var transformGeometryCoords = function(gj) { - // No easy way to put correct CRS info into the GeoJSON, - // and definitely wrong to keep the old, so delete it. - if (gj.crs) { - delete gj.crs; - } - gj.coordinates = traverseCoords(gj.coordinates, transform); - } - - var transformBbox = function(gj) { - if (gj.bbox) { - gj.bbox = calcBbox(gj); - } - } - - return traverseGeoJson(transformGeometryCoords, transformBbox, geojson); -} - -module.exports = { - detectCrs: detectCrs, - - reproject: reproject, - - reverse: function(geojson) { - return traverseGeoJson(function(gj) { - gj.coordinates = traverseCoords(gj.coordinates, function(xy) { - return [ xy[1], xy[0] ]; - }); - }, null, geojson); - }, - - toWgs84: function(geojson, from, projs) { - return reproject(geojson, from, proj4.WGS84, projs); - } -}; - -},{"proj4":316}],316:[function(require,module,exports){ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.proj4 = factory()); -}(this, (function () { 'use strict'; - - var globals = function(defs) { - defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"); - defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees"); - defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"); - - defs.WGS84 = defs['EPSG:4326']; - defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857 - defs.GOOGLE = defs['EPSG:3857']; - defs['EPSG:900913'] = defs['EPSG:3857']; - defs['EPSG:102113'] = defs['EPSG:3857']; - }; - - var PJD_3PARAM = 1; - var PJD_7PARAM = 2; - var PJD_WGS84 = 4; // WGS84 or equivalent - var PJD_NODATUM = 5; // WGS84 or equivalent - var SEC_TO_RAD = 4.84813681109535993589914102357e-6; - var HALF_PI = Math.PI/2; - // ellipoid pj_set_ell.c - var SIXTH = 0.1666666666666666667; - /* 1/6 */ - var RA4 = 0.04722222222222222222; - /* 17/360 */ - var RA6 = 0.02215608465608465608; - var EPSLN = 1.0e-10; - // you'd think you could use Number.EPSILON above but that makes - // Mollweide get into an infinate loop. - - var D2R = 0.01745329251994329577; - var R2D = 57.29577951308232088; - var FORTPI = Math.PI/4; - var TWO_PI = Math.PI * 2; - // SPI is slightly greater than Math.PI, so values that exceed the -180..180 - // degree range by a tiny amount don't get wrapped. This prevents points that - // have drifted from their original location along the 180th meridian (due to - // floating point error) from changing their sign. - var SPI = 3.14159265359; - - var exports$1 = {}; - exports$1.greenwich = 0.0; //"0dE", - exports$1.lisbon = -9.131906111111; //"9d07'54.862\"W", - exports$1.paris = 2.337229166667; //"2d20'14.025\"E", - exports$1.bogota = -74.080916666667; //"74d04'51.3\"W", - exports$1.madrid = -3.687938888889; //"3d41'16.58\"W", - exports$1.rome = 12.452333333333; //"12d27'8.4\"E", - exports$1.bern = 7.439583333333; //"7d26'22.5\"E", - exports$1.jakarta = 106.807719444444; //"106d48'27.79\"E", - exports$1.ferro = -17.666666666667; //"17d40'W", - exports$1.brussels = 4.367975; //"4d22'4.71\"E", - exports$1.stockholm = 18.058277777778; //"18d3'29.8\"E", - exports$1.athens = 23.7163375; //"23d42'58.815\"E", - exports$1.oslo = 10.722916666667; //"10d43'22.5\"E" - - var units = { - ft: {to_meter: 0.3048}, - 'us-ft': {to_meter: 1200 / 3937} - }; - - var ignoredChar = /[\s_\-\/\(\)]/g; - function match(obj, key) { - if (obj[key]) { - return obj[key]; - } - var keys = Object.keys(obj); - var lkey = key.toLowerCase().replace(ignoredChar, ''); - var i = -1; - var testkey, processedKey; - while (++i < keys.length) { - testkey = keys[i]; - processedKey = testkey.toLowerCase().replace(ignoredChar, ''); - if (processedKey === lkey) { - return obj[testkey]; - } - } - } - - var parseProj = function(defData) { - var self = {}; - var paramObj = defData.split('+').map(function(v) { - return v.trim(); - }).filter(function(a) { - return a; - }).reduce(function(p, a) { - var split = a.split('='); - split.push(true); - p[split[0].toLowerCase()] = split[1]; - return p; - }, {}); - var paramName, paramVal, paramOutname; - var params = { - proj: 'projName', - datum: 'datumCode', - rf: function(v) { - self.rf = parseFloat(v); - }, - lat_0: function(v) { - self.lat0 = v * D2R; - }, - lat_1: function(v) { - self.lat1 = v * D2R; - }, - lat_2: function(v) { - self.lat2 = v * D2R; - }, - lat_ts: function(v) { - self.lat_ts = v * D2R; - }, - lon_0: function(v) { - self.long0 = v * D2R; - }, - lon_1: function(v) { - self.long1 = v * D2R; - }, - lon_2: function(v) { - self.long2 = v * D2R; - }, - alpha: function(v) { - self.alpha = parseFloat(v) * D2R; - }, - lonc: function(v) { - self.longc = v * D2R; - }, - x_0: function(v) { - self.x0 = parseFloat(v); - }, - y_0: function(v) { - self.y0 = parseFloat(v); - }, - k_0: function(v) { - self.k0 = parseFloat(v); - }, - k: function(v) { - self.k0 = parseFloat(v); - }, - a: function(v) { - self.a = parseFloat(v); - }, - b: function(v) { - self.b = parseFloat(v); - }, - r_a: function() { - self.R_A = true; - }, - zone: function(v) { - self.zone = parseInt(v, 10); - }, - south: function() { - self.utmSouth = true; - }, - towgs84: function(v) { - self.datum_params = v.split(",").map(function(a) { - return parseFloat(a); - }); - }, - to_meter: function(v) { - self.to_meter = parseFloat(v); - }, - units: function(v) { - self.units = v; - var unit = match(units, v); - if (unit) { - self.to_meter = unit.to_meter; - } - }, - from_greenwich: function(v) { - self.from_greenwich = v * D2R; - }, - pm: function(v) { - var pm = match(exports$1, v); - self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R; - }, - nadgrids: function(v) { - if (v === '@null') { - self.datumCode = 'none'; - } - else { - self.nadgrids = v; - } - }, - axis: function(v) { - var legalAxis = "ewnsud"; - if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) { - self.axis = v; - } - } - }; - for (paramName in paramObj) { - paramVal = paramObj[paramName]; - if (paramName in params) { - paramOutname = params[paramName]; - if (typeof paramOutname === 'function') { - paramOutname(paramVal); - } - else { - self[paramOutname] = paramVal; - } - } - else { - self[paramName] = paramVal; - } - } - if(typeof self.datumCode === 'string' && self.datumCode !== "WGS84"){ - self.datumCode = self.datumCode.toLowerCase(); - } - return self; - }; - - var NEUTRAL = 1; - var KEYWORD = 2; - var NUMBER = 3; - var QUOTED = 4; - var AFTERQUOTE = 5; - var ENDED = -1; - var whitespace = /\s/; - var latin = /[A-Za-z]/; - var keyword = /[A-Za-z84]/; - var endThings = /[,\]]/; - var digets = /[\d\.E\-\+]/; - // const ignoredChar = /[\s_\-\/\(\)]/g; - function Parser(text) { - if (typeof text !== 'string') { - throw new Error('not a string'); - } - this.text = text.trim(); - this.level = 0; - this.place = 0; - this.root = null; - this.stack = []; - this.currentObject = null; - this.state = NEUTRAL; - } - Parser.prototype.readCharicter = function() { - var char = this.text[this.place++]; - if (this.state !== QUOTED) { - while (whitespace.test(char)) { - if (this.place >= this.text.length) { - return; - } - char = this.text[this.place++]; - } - } - switch (this.state) { - case NEUTRAL: - return this.neutral(char); - case KEYWORD: - return this.keyword(char) - case QUOTED: - return this.quoted(char); - case AFTERQUOTE: - return this.afterquote(char); - case NUMBER: - return this.number(char); - case ENDED: - return; - } - }; - Parser.prototype.afterquote = function(char) { - if (char === '"') { - this.word += '"'; - this.state = QUOTED; - return; - } - if (endThings.test(char)) { - this.word = this.word.trim(); - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in afterquote yet, index ' + this.place); - }; - Parser.prototype.afterItem = function(char) { - if (char === ',') { - if (this.word !== null) { - this.currentObject.push(this.word); - } - this.word = null; - this.state = NEUTRAL; - return; - } - if (char === ']') { - this.level--; - if (this.word !== null) { - this.currentObject.push(this.word); - this.word = null; - } - this.state = NEUTRAL; - this.currentObject = this.stack.pop(); - if (!this.currentObject) { - this.state = ENDED; - } - - return; - } - }; - Parser.prototype.number = function(char) { - if (digets.test(char)) { - this.word += char; - return; - } - if (endThings.test(char)) { - this.word = parseFloat(this.word); - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in number yet, index ' + this.place); - }; - Parser.prototype.quoted = function(char) { - if (char === '"') { - this.state = AFTERQUOTE; - return; - } - this.word += char; - return; - }; - Parser.prototype.keyword = function(char) { - if (keyword.test(char)) { - this.word += char; - return; - } - if (char === '[') { - var newObjects = []; - newObjects.push(this.word); - this.level++; - if (this.root === null) { - this.root = newObjects; - } else { - this.currentObject.push(newObjects); - } - this.stack.push(this.currentObject); - this.currentObject = newObjects; - this.state = NEUTRAL; - return; - } - if (endThings.test(char)) { - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in keyword yet, index ' + this.place); - }; - Parser.prototype.neutral = function(char) { - if (latin.test(char)) { - this.word = char; - this.state = KEYWORD; - return; - } - if (char === '"') { - this.word = ''; - this.state = QUOTED; - return; - } - if (digets.test(char)) { - this.word = char; - this.state = NUMBER; - return; - } - if (endThings.test(char)) { - this.afterItem(char); - return; - } - throw new Error('havn\'t handled "' +char + '" in neutral yet, index ' + this.place); - }; - Parser.prototype.output = function() { - while (this.place < this.text.length) { - this.readCharicter(); - } - if (this.state === ENDED) { - return this.root; - } - throw new Error('unable to parse string "' +this.text + '". State is ' + this.state); - }; - - function parseString(txt) { - var parser = new Parser(txt); - return parser.output(); - } - - function mapit(obj, key, value) { - if (Array.isArray(key)) { - value.unshift(key); - key = null; - } - var thing = key ? {} : obj; - - var out = value.reduce(function(newObj, item) { - sExpr(item, newObj); - return newObj - }, thing); - if (key) { - obj[key] = out; - } - } - - function sExpr(v, obj) { - if (!Array.isArray(v)) { - obj[v] = true; - return; - } - var key = v.shift(); - if (key === 'PARAMETER') { - key = v.shift(); - } - if (v.length === 1) { - if (Array.isArray(v[0])) { - obj[key] = {}; - sExpr(v[0], obj[key]); - return; - } - obj[key] = v[0]; - return; - } - if (!v.length) { - obj[key] = true; - return; - } - if (key === 'TOWGS84') { - obj[key] = v; - return; - } - if (!Array.isArray(key)) { - obj[key] = {}; - } - - var i; - switch (key) { - case 'UNIT': - case 'PRIMEM': - case 'VERT_DATUM': - obj[key] = { - name: v[0].toLowerCase(), - convert: v[1] - }; - if (v.length === 3) { - sExpr(v[2], obj[key]); - } - return; - case 'SPHEROID': - case 'ELLIPSOID': - obj[key] = { - name: v[0], - a: v[1], - rf: v[2] - }; - if (v.length === 4) { - sExpr(v[3], obj[key]); - } - return; - case 'PROJECTEDCRS': - case 'PROJCRS': - case 'GEOGCS': - case 'GEOCCS': - case 'PROJCS': - case 'LOCAL_CS': - case 'GEODCRS': - case 'GEODETICCRS': - case 'GEODETICDATUM': - case 'EDATUM': - case 'ENGINEERINGDATUM': - case 'VERT_CS': - case 'VERTCRS': - case 'VERTICALCRS': - case 'COMPD_CS': - case 'COMPOUNDCRS': - case 'ENGINEERINGCRS': - case 'ENGCRS': - case 'FITTED_CS': - case 'LOCAL_DATUM': - case 'DATUM': - v[0] = ['name', v[0]]; - mapit(obj, key, v); - return; - default: - i = -1; - while (++i < v.length) { - if (!Array.isArray(v[i])) { - return sExpr(v, obj[key]); - } - } - return mapit(obj, key, v); - } - } - - var D2R$1 = 0.01745329251994329577; - function rename(obj, params) { - var outName = params[0]; - var inName = params[1]; - if (!(outName in obj) && (inName in obj)) { - obj[outName] = obj[inName]; - if (params.length === 3) { - obj[outName] = params[2](obj[outName]); - } - } - } - - function d2r(input) { - return input * D2R$1; - } - - function cleanWKT(wkt) { - if (wkt.type === 'GEOGCS') { - wkt.projName = 'longlat'; - } else if (wkt.type === 'LOCAL_CS') { - wkt.projName = 'identity'; - wkt.local = true; - } else { - if (typeof wkt.PROJECTION === 'object') { - wkt.projName = Object.keys(wkt.PROJECTION)[0]; - } else { - wkt.projName = wkt.PROJECTION; - } - } - if (wkt.UNIT) { - wkt.units = wkt.UNIT.name.toLowerCase(); - if (wkt.units === 'metre') { - wkt.units = 'meter'; - } - if (wkt.UNIT.convert) { - if (wkt.type === 'GEOGCS') { - if (wkt.DATUM && wkt.DATUM.SPHEROID) { - wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a; - } - } else { - wkt.to_meter = wkt.UNIT.convert, 10; - } - } - } - var geogcs = wkt.GEOGCS; - if (wkt.type === 'GEOGCS') { - geogcs = wkt; - } - if (geogcs) { - //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){ - // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R; - //} - if (geogcs.DATUM) { - wkt.datumCode = geogcs.DATUM.name.toLowerCase(); - } else { - wkt.datumCode = geogcs.name.toLowerCase(); - } - if (wkt.datumCode.slice(0, 2) === 'd_') { - wkt.datumCode = wkt.datumCode.slice(2); - } - if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') { - wkt.datumCode = 'nzgd49'; - } - if (wkt.datumCode === 'wgs_1984') { - if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') { - wkt.sphere = true; - } - wkt.datumCode = 'wgs84'; - } - if (wkt.datumCode.slice(-6) === '_ferro') { - wkt.datumCode = wkt.datumCode.slice(0, - 6); - } - if (wkt.datumCode.slice(-8) === '_jakarta') { - wkt.datumCode = wkt.datumCode.slice(0, - 8); - } - if (~wkt.datumCode.indexOf('belge')) { - wkt.datumCode = 'rnb72'; - } - if (geogcs.DATUM && geogcs.DATUM.SPHEROID) { - wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk'); - if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') { - wkt.ellps = 'intl'; - } - - wkt.a = geogcs.DATUM.SPHEROID.a; - wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10); - } - - if (geogcs.DATUM && geogcs.DATUM.TOWGS84) { - wkt.datum_params = geogcs.DATUM.TOWGS84; - } - if (~wkt.datumCode.indexOf('osgb_1936')) { - wkt.datumCode = 'osgb36'; - } - if (~wkt.datumCode.indexOf('osni_1952')) { - wkt.datumCode = 'osni52'; - } - if (~wkt.datumCode.indexOf('tm65') - || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) { - wkt.datumCode = 'ire65'; - } - if (wkt.datumCode === 'ch1903+') { - wkt.datumCode = 'ch1903'; - } - if (~wkt.datumCode.indexOf('israel')) { - wkt.datumCode = 'isr93'; - } - } - if (wkt.b && !isFinite(wkt.b)) { - wkt.b = wkt.a; - } - - function toMeter(input) { - var ratio = wkt.to_meter || 1; - return input * ratio; - } - var renamer = function(a) { - return rename(wkt, a); - }; - var list = [ - ['standard_parallel_1', 'Standard_Parallel_1'], - ['standard_parallel_2', 'Standard_Parallel_2'], - ['false_easting', 'False_Easting'], - ['false_northing', 'False_Northing'], - ['central_meridian', 'Central_Meridian'], - ['latitude_of_origin', 'Latitude_Of_Origin'], - ['latitude_of_origin', 'Central_Parallel'], - ['scale_factor', 'Scale_Factor'], - ['k0', 'scale_factor'], - ['latitude_of_center', 'Latitude_Of_Center'], - ['latitude_of_center', 'Latitude_of_center'], - ['lat0', 'latitude_of_center', d2r], - ['longitude_of_center', 'Longitude_Of_Center'], - ['longitude_of_center', 'Longitude_of_center'], - ['longc', 'longitude_of_center', d2r], - ['x0', 'false_easting', toMeter], - ['y0', 'false_northing', toMeter], - ['long0', 'central_meridian', d2r], - ['lat0', 'latitude_of_origin', d2r], - ['lat0', 'standard_parallel_1', d2r], - ['lat1', 'standard_parallel_1', d2r], - ['lat2', 'standard_parallel_2', d2r], - ['azimuth', 'Azimuth'], - ['alpha', 'azimuth', d2r], - ['srsCode', 'name'] - ]; - list.forEach(renamer); - if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) { - wkt.long0 = wkt.longc; - } - if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) { - wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90); - wkt.lat_ts = wkt.lat1; - } - } - var wkt = function(wkt) { - var lisp = parseString(wkt); - var type = lisp.shift(); - var name = lisp.shift(); - lisp.unshift(['name', name]); - lisp.unshift(['type', type]); - var obj = {}; - sExpr(lisp, obj); - cleanWKT(obj); - return obj; - }; - - function defs(name) { - /*global console*/ - var that = this; - if (arguments.length === 2) { - var def = arguments[1]; - if (typeof def === 'string') { - if (def.charAt(0) === '+') { - defs[name] = parseProj(arguments[1]); - } - else { - defs[name] = wkt(arguments[1]); - } - } else { - defs[name] = def; - } - } - else if (arguments.length === 1) { - if (Array.isArray(name)) { - return name.map(function(v) { - if (Array.isArray(v)) { - defs.apply(that, v); - } - else { - defs(v); - } - }); - } - else if (typeof name === 'string') { - if (name in defs) { - return defs[name]; - } - } - else if ('EPSG' in name) { - defs['EPSG:' + name.EPSG] = name; - } - else if ('ESRI' in name) { - defs['ESRI:' + name.ESRI] = name; - } - else if ('IAU2000' in name) { - defs['IAU2000:' + name.IAU2000] = name; - } - else { - console.log(name); - } - return; - } - - - } - globals(defs); - - function testObj(code){ - return typeof code === 'string'; - } - function testDef(code){ - return code in defs; - } - var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS']; - function testWKT(code){ - return codeWords.some(function (word) { - return code.indexOf(word) > -1; - }); - } - var codes = ['3857', '900913', '3785', '102113']; - function checkMercator(item) { - var auth = match(item, 'authority'); - if (!auth) { - return; - } - var code = match(auth, 'epsg'); - return code && codes.indexOf(code) > -1; - } - function checkProjStr(item) { - var ext = match(item, 'extension'); - if (!ext) { - return; - } - return match(ext, 'proj4'); - } - function testProj(code){ - return code[0] === '+'; - } - function parse(code){ - if (testObj(code)) { - //check to see if this is a WKT string - if (testDef(code)) { - return defs[code]; - } - if (testWKT(code)) { - var out = wkt(code); - // test of spetial case, due to this being a very common and often malformed - if (checkMercator(out)) { - return defs['EPSG:3857']; - } - var maybeProjStr = checkProjStr(out); - if (maybeProjStr) { - return parseProj(maybeProjStr); - } - return out; - } - if (testProj(code)) { - return parseProj(code); - } - }else{ - return code; - } - } - - var extend = function(destination, source) { - destination = destination || {}; - var value, property; - if (!source) { - return destination; - } - for (property in source) { - value = source[property]; - if (value !== undefined) { - destination[property] = value; - } - } - return destination; - }; - - var msfnz = function(eccent, sinphi, cosphi) { - var con = eccent * sinphi; - return cosphi / (Math.sqrt(1 - con * con)); - }; - - var sign = function(x) { - return x<0 ? -1 : 1; - }; - - var adjust_lon = function(x) { - return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI)); - }; - - var tsfnz = function(eccent, phi, sinphi) { - var con = eccent * sinphi; - var com = 0.5 * eccent; - con = Math.pow(((1 - con) / (1 + con)), com); - return (Math.tan(0.5 * (HALF_PI - phi)) / con); - }; - - var phi2z = function(eccent, ts) { - var eccnth = 0.5 * eccent; - var con, dphi; - var phi = HALF_PI - 2 * Math.atan(ts); - for (var i = 0; i <= 15; i++) { - con = eccent * Math.sin(phi); - dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi; - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - //console.log("phi2z has NoConvergence"); - return -9999; - }; - - function init() { - var con = this.b / this.a; - this.es = 1 - con * con; - if(!('x0' in this)){ - this.x0 = 0; - } - if(!('y0' in this)){ - this.y0 = 0; - } - this.e = Math.sqrt(this.es); - if (this.lat_ts) { - if (this.sphere) { - this.k0 = Math.cos(this.lat_ts); - } - else { - this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)); - } - } - else { - if (!this.k0) { - if (this.k) { - this.k0 = this.k; - } - else { - this.k0 = 1; - } - } - } - } - - /* Mercator forward equations--mapping lat,long to x,y - --------------------------------------------------*/ - - function forward(p) { - var lon = p.x; - var lat = p.y; - // convert to radians - if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) { - return null; - } - - var x, y; - if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) { - return null; - } - else { - if (this.sphere) { - x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0); - y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat)); - } - else { - var sinphi = Math.sin(lat); - var ts = tsfnz(this.e, lat, sinphi); - x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0); - y = this.y0 - this.a * this.k0 * Math.log(ts); - } - p.x = x; - p.y = y; - return p; - } - } - - /* Mercator inverse equations--mapping x,y to lat/long - --------------------------------------------------*/ - function inverse(p) { - - var x = p.x - this.x0; - var y = p.y - this.y0; - var lon, lat; - - if (this.sphere) { - lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0))); - } - else { - var ts = Math.exp(-y / (this.a * this.k0)); - lat = phi2z(this.e, ts); - if (lat === -9999) { - return null; - } - } - lon = adjust_lon(this.long0 + x / (this.a * this.k0)); - - p.x = lon; - p.y = lat; - return p; - } - - var names$1 = ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"]; - var merc = { - init: init, - forward: forward, - inverse: inverse, - names: names$1 - }; - - function init$1() { - //no-op for longlat - } - - function identity(pt) { - return pt; - } - var names$2 = ["longlat", "identity"]; - var longlat = { - init: init$1, - forward: identity, - inverse: identity, - names: names$2 - }; - - var projs = [merc, longlat]; - var names = {}; - var projStore = []; - - function add(proj, i) { - var len = projStore.length; - if (!proj.names) { - console.log(i); - return true; - } - projStore[len] = proj; - proj.names.forEach(function(n) { - names[n.toLowerCase()] = len; - }); - return this; - } - - function get(name) { - if (!name) { - return false; - } - var n = name.toLowerCase(); - if (typeof names[n] !== 'undefined' && projStore[names[n]]) { - return projStore[names[n]]; - } - } - - function start() { - projs.forEach(add); - } - var projections = { - start: start, - add: add, - get: get - }; - - var exports$2 = {}; - exports$2.MERIT = { - a: 6378137.0, - rf: 298.257, - ellipseName: "MERIT 1983" - }; - - exports$2.SGS85 = { - a: 6378136.0, - rf: 298.257, - ellipseName: "Soviet Geodetic System 85" - }; - - exports$2.GRS80 = { - a: 6378137.0, - rf: 298.257222101, - ellipseName: "GRS 1980(IUGG, 1980)" - }; - - exports$2.IAU76 = { - a: 6378140.0, - rf: 298.257, - ellipseName: "IAU 1976" - }; - - exports$2.airy = { - a: 6377563.396, - b: 6356256.910, - ellipseName: "Airy 1830" - }; - - exports$2.APL4 = { - a: 6378137, - rf: 298.25, - ellipseName: "Appl. Physics. 1965" - }; - - exports$2.NWL9D = { - a: 6378145.0, - rf: 298.25, - ellipseName: "Naval Weapons Lab., 1965" - }; - - exports$2.mod_airy = { - a: 6377340.189, - b: 6356034.446, - ellipseName: "Modified Airy" - }; - - exports$2.andrae = { - a: 6377104.43, - rf: 300.0, - ellipseName: "Andrae 1876 (Den., Iclnd.)" - }; - - exports$2.aust_SA = { - a: 6378160.0, - rf: 298.25, - ellipseName: "Australian Natl & S. Amer. 1969" - }; - - exports$2.GRS67 = { - a: 6378160.0, - rf: 298.2471674270, - ellipseName: "GRS 67(IUGG 1967)" - }; - - exports$2.bessel = { - a: 6377397.155, - rf: 299.1528128, - ellipseName: "Bessel 1841" - }; - - exports$2.bess_nam = { - a: 6377483.865, - rf: 299.1528128, - ellipseName: "Bessel 1841 (Namibia)" - }; - - exports$2.clrk66 = { - a: 6378206.4, - b: 6356583.8, - ellipseName: "Clarke 1866" - }; - - exports$2.clrk80 = { - a: 6378249.145, - rf: 293.4663, - ellipseName: "Clarke 1880 mod." - }; - - exports$2.clrk58 = { - a: 6378293.645208759, - rf: 294.2606763692654, - ellipseName: "Clarke 1858" - }; - - exports$2.CPM = { - a: 6375738.7, - rf: 334.29, - ellipseName: "Comm. des Poids et Mesures 1799" - }; - - exports$2.delmbr = { - a: 6376428.0, - rf: 311.5, - ellipseName: "Delambre 1810 (Belgium)" - }; - - exports$2.engelis = { - a: 6378136.05, - rf: 298.2566, - ellipseName: "Engelis 1985" - }; - - exports$2.evrst30 = { - a: 6377276.345, - rf: 300.8017, - ellipseName: "Everest 1830" - }; - - exports$2.evrst48 = { - a: 6377304.063, - rf: 300.8017, - ellipseName: "Everest 1948" - }; - - exports$2.evrst56 = { - a: 6377301.243, - rf: 300.8017, - ellipseName: "Everest 1956" - }; - - exports$2.evrst69 = { - a: 6377295.664, - rf: 300.8017, - ellipseName: "Everest 1969" - }; - - exports$2.evrstSS = { - a: 6377298.556, - rf: 300.8017, - ellipseName: "Everest (Sabah & Sarawak)" - }; - - exports$2.fschr60 = { - a: 6378166.0, - rf: 298.3, - ellipseName: "Fischer (Mercury Datum) 1960" - }; - - exports$2.fschr60m = { - a: 6378155.0, - rf: 298.3, - ellipseName: "Fischer 1960" - }; - - exports$2.fschr68 = { - a: 6378150.0, - rf: 298.3, - ellipseName: "Fischer 1968" - }; - - exports$2.helmert = { - a: 6378200.0, - rf: 298.3, - ellipseName: "Helmert 1906" - }; - - exports$2.hough = { - a: 6378270.0, - rf: 297.0, - ellipseName: "Hough" - }; - - exports$2.intl = { - a: 6378388.0, - rf: 297.0, - ellipseName: "International 1909 (Hayford)" - }; - - exports$2.kaula = { - a: 6378163.0, - rf: 298.24, - ellipseName: "Kaula 1961" - }; - - exports$2.lerch = { - a: 6378139.0, - rf: 298.257, - ellipseName: "Lerch 1979" - }; - - exports$2.mprts = { - a: 6397300.0, - rf: 191.0, - ellipseName: "Maupertius 1738" - }; - - exports$2.new_intl = { - a: 6378157.5, - b: 6356772.2, - ellipseName: "New International 1967" - }; - - exports$2.plessis = { - a: 6376523.0, - rf: 6355863.0, - ellipseName: "Plessis 1817 (France)" - }; - - exports$2.krass = { - a: 6378245.0, - rf: 298.3, - ellipseName: "Krassovsky, 1942" - }; - - exports$2.SEasia = { - a: 6378155.0, - b: 6356773.3205, - ellipseName: "Southeast Asia" - }; - - exports$2.walbeck = { - a: 6376896.0, - b: 6355834.8467, - ellipseName: "Walbeck" - }; - - exports$2.WGS60 = { - a: 6378165.0, - rf: 298.3, - ellipseName: "WGS 60" - }; - - exports$2.WGS66 = { - a: 6378145.0, - rf: 298.25, - ellipseName: "WGS 66" - }; - - exports$2.WGS7 = { - a: 6378135.0, - rf: 298.26, - ellipseName: "WGS 72" - }; - - var WGS84 = exports$2.WGS84 = { - a: 6378137.0, - rf: 298.257223563, - ellipseName: "WGS 84" - }; - - exports$2.sphere = { - a: 6370997.0, - b: 6370997.0, - ellipseName: "Normal Sphere (r=6370997)" - }; - - function eccentricity(a, b, rf, R_A) { - var a2 = a * a; // used in geocentric - var b2 = b * b; // used in geocentric - var es = (a2 - b2) / a2; // e ^ 2 - var e = 0; - if (R_A) { - a *= 1 - es * (SIXTH + es * (RA4 + es * RA6)); - a2 = a * a; - es = 0; - } else { - e = Math.sqrt(es); // eccentricity - } - var ep2 = (a2 - b2) / b2; // used in geocentric - return { - es: es, - e: e, - ep2: ep2 - }; - } - function sphere(a, b, rf, ellps, sphere) { - if (!a) { // do we have an ellipsoid? - var ellipse = match(exports$2, ellps); - if (!ellipse) { - ellipse = WGS84; - } - a = ellipse.a; - b = ellipse.b; - rf = ellipse.rf; - } - - if (rf && !b) { - b = (1.0 - 1.0 / rf) * a; - } - if (rf === 0 || Math.abs(a - b) < EPSLN) { - sphere = true; - b = a; - } - return { - a: a, - b: b, - rf: rf, - sphere: sphere - }; - } - - var exports$3 = {}; - exports$3.wgs84 = { - towgs84: "0,0,0", - ellipse: "WGS84", - datumName: "WGS84" - }; - - exports$3.ch1903 = { - towgs84: "674.374,15.056,405.346", - ellipse: "bessel", - datumName: "swiss" - }; - - exports$3.ggrs87 = { - towgs84: "-199.87,74.79,246.62", - ellipse: "GRS80", - datumName: "Greek_Geodetic_Reference_System_1987" - }; - - exports$3.nad83 = { - towgs84: "0,0,0", - ellipse: "GRS80", - datumName: "North_American_Datum_1983" - }; - - exports$3.nad27 = { - nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat", - ellipse: "clrk66", - datumName: "North_American_Datum_1927" - }; - - exports$3.potsdam = { - towgs84: "606.0,23.0,413.0", - ellipse: "bessel", - datumName: "Potsdam Rauenberg 1950 DHDN" - }; - - exports$3.carthage = { - towgs84: "-263.0,6.0,431.0", - ellipse: "clark80", - datumName: "Carthage 1934 Tunisia" - }; - - exports$3.hermannskogel = { - towgs84: "653.0,-212.0,449.0", - ellipse: "bessel", - datumName: "Hermannskogel" - }; - - exports$3.osni52 = { - towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15", - ellipse: "airy", - datumName: "Irish National" - }; - - exports$3.ire65 = { - towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15", - ellipse: "mod_airy", - datumName: "Ireland 1965" - }; - - exports$3.rassadiran = { - towgs84: "-133.63,-157.5,-158.62", - ellipse: "intl", - datumName: "Rassadiran" - }; - - exports$3.nzgd49 = { - towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993", - ellipse: "intl", - datumName: "New Zealand Geodetic Datum 1949" - }; - - exports$3.osgb36 = { - towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894", - ellipse: "airy", - datumName: "Airy 1830" - }; - - exports$3.s_jtsk = { - towgs84: "589,76,480", - ellipse: 'bessel', - datumName: 'S-JTSK (Ferro)' - }; - - exports$3.beduaram = { - towgs84: '-106,-87,188', - ellipse: 'clrk80', - datumName: 'Beduaram' - }; - - exports$3.gunung_segara = { - towgs84: '-403,684,41', - ellipse: 'bessel', - datumName: 'Gunung Segara Jakarta' - }; - - exports$3.rnb72 = { - towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1", - ellipse: "intl", - datumName: "Reseau National Belge 1972" - }; - - function datum(datumCode, datum_params, a, b, es, ep2) { - var out = {}; - - if (datumCode === undefined || datumCode === 'none') { - out.datum_type = PJD_NODATUM; - } else { - out.datum_type = PJD_WGS84; - } - - if (datum_params) { - out.datum_params = datum_params.map(parseFloat); - if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) { - out.datum_type = PJD_3PARAM; - } - if (out.datum_params.length > 3) { - if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) { - out.datum_type = PJD_7PARAM; - out.datum_params[3] *= SEC_TO_RAD; - out.datum_params[4] *= SEC_TO_RAD; - out.datum_params[5] *= SEC_TO_RAD; - out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0; - } - } - } - - out.a = a; //datum object also uses these values - out.b = b; - out.es = es; - out.ep2 = ep2; - return out; - } - - function Projection(srsCode,callback) { - if (!(this instanceof Projection)) { - return new Projection(srsCode); - } - callback = callback || function(error){ - if(error){ - throw error; - } - }; - var json = parse(srsCode); - if(typeof json !== 'object'){ - callback(srsCode); - return; - } - var ourProj = Projection.projections.get(json.projName); - if(!ourProj){ - callback(srsCode); - return; - } - if (json.datumCode && json.datumCode !== 'none') { - var datumDef = match(exports$3, json.datumCode); - if (datumDef) { - json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null; - json.ellps = datumDef.ellipse; - json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode; - } - } - json.k0 = json.k0 || 1.0; - json.axis = json.axis || 'enu'; - json.ellps = json.ellps || 'wgs84'; - var sphere_ = sphere(json.a, json.b, json.rf, json.ellps, json.sphere); - var ecc = eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A); - var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2); - - extend(this, json); // transfer everything over from the projection because we don't know what we'll need - extend(this, ourProj); // transfer all the methods from the projection - - // copy the 4 things over we calulated in deriveConstants.sphere - this.a = sphere_.a; - this.b = sphere_.b; - this.rf = sphere_.rf; - this.sphere = sphere_.sphere; - - // copy the 3 things we calculated in deriveConstants.eccentricity - this.es = ecc.es; - this.e = ecc.e; - this.ep2 = ecc.ep2; - - // add in the datum object - this.datum = datumObj; - - // init the projection - this.init(); - - // legecy callback from back in the day when it went to spatialreference.org - callback(null, this); - - } - Projection.projections = projections; - Projection.projections.start(); - - 'use strict'; - function compareDatums(source, dest) { - if (source.datum_type !== dest.datum_type) { - return false; // false, datums are not equal - } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) { - // the tolerance for es is to ensure that GRS80 and WGS84 - // are considered identical - return false; - } else if (source.datum_type === PJD_3PARAM) { - return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]); - } else if (source.datum_type === PJD_7PARAM) { - return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]); - } else { - return true; // datums are equal - } - } // cs_compare_datums() - - /* - * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates - * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z), - * according to the current ellipsoid parameters. - * - * Latitude : Geodetic latitude in radians (input) - * Longitude : Geodetic longitude in radians (input) - * Height : Geodetic height, in meters (input) - * X : Calculated Geocentric X coordinate, in meters (output) - * Y : Calculated Geocentric Y coordinate, in meters (output) - * Z : Calculated Geocentric Z coordinate, in meters (output) - * - */ - function geodeticToGeocentric(p, es, a) { - var Longitude = p.x; - var Latitude = p.y; - var Height = p.z ? p.z : 0; //Z value not always supplied - - var Rn; /* Earth radius at location */ - var Sin_Lat; /* Math.sin(Latitude) */ - var Sin2_Lat; /* Square of Math.sin(Latitude) */ - var Cos_Lat; /* Math.cos(Latitude) */ - - /* - ** Don't blow up if Latitude is just a little out of the value - ** range as it may just be a rounding issue. Also removed longitude - ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001. - */ - if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) { - Latitude = -HALF_PI; - } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) { - Latitude = HALF_PI; - } else if (Latitude < -HALF_PI) { - /* Latitude out of range */ - //..reportError('geocent:lat out of range:' + Latitude); - return { x: -Infinity, y: -Infinity, z: p.z }; - } else if (Latitude > HALF_PI) { - /* Latitude out of range */ - return { x: Infinity, y: Infinity, z: p.z }; - } - - if (Longitude > Math.PI) { - Longitude -= (2 * Math.PI); - } - Sin_Lat = Math.sin(Latitude); - Cos_Lat = Math.cos(Latitude); - Sin2_Lat = Sin_Lat * Sin_Lat; - Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat)); - return { - x: (Rn + Height) * Cos_Lat * Math.cos(Longitude), - y: (Rn + Height) * Cos_Lat * Math.sin(Longitude), - z: ((Rn * (1 - es)) + Height) * Sin_Lat - }; - } // cs_geodetic_to_geocentric() - - function geocentricToGeodetic(p, es, a, b) { - /* local defintions and variables */ - /* end-criterium of loop, accuracy of sin(Latitude) */ - var genau = 1e-12; - var genau2 = (genau * genau); - var maxiter = 30; - - var P; /* distance between semi-minor axis and location */ - var RR; /* distance between center and location */ - var CT; /* sin of geocentric latitude */ - var ST; /* cos of geocentric latitude */ - var RX; - var RK; - var RN; /* Earth radius at location */ - var CPHI0; /* cos of start or old geodetic latitude in iterations */ - var SPHI0; /* sin of start or old geodetic latitude in iterations */ - var CPHI; /* cos of searched geodetic latitude */ - var SPHI; /* sin of searched geodetic latitude */ - var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */ - var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */ - - var X = p.x; - var Y = p.y; - var Z = p.z ? p.z : 0.0; //Z value not always supplied - var Longitude; - var Latitude; - var Height; - - P = Math.sqrt(X * X + Y * Y); - RR = Math.sqrt(X * X + Y * Y + Z * Z); - - /* special cases for latitude and longitude */ - if (P / a < genau) { - - /* special case, if P=0. (X=0., Y=0.) */ - Longitude = 0.0; - - /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis - * of ellipsoid (=center of mass), Latitude becomes PI/2 */ - if (RR / a < genau) { - Latitude = HALF_PI; - Height = -b; - return { - x: p.x, - y: p.y, - z: p.z - }; - } - } else { - /* ellipsoidal (geodetic) longitude - * interval: -PI < Longitude <= +PI */ - Longitude = Math.atan2(Y, X); - } - - /* -------------------------------------------------------------- - * Following iterative algorithm was developped by - * "Institut for Erdmessung", University of Hannover, July 1988. - * Internet: www.ife.uni-hannover.de - * Iterative computation of CPHI,SPHI and Height. - * Iteration of CPHI and SPHI to 10**-12 radian resp. - * 2*10**-7 arcsec. - * -------------------------------------------------------------- - */ - CT = Z / RR; - ST = P / RR; - RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST); - CPHI0 = ST * (1.0 - es) * RX; - SPHI0 = CT * RX; - iter = 0; - - /* loop to find sin(Latitude) resp. Latitude - * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */ - do { - iter++; - RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0); - - /* ellipsoidal (geodetic) height */ - Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0); - - RK = es * RN / (RN + Height); - RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST); - CPHI = ST * (1.0 - RK) * RX; - SPHI = CT * RX; - SDPHI = SPHI * CPHI0 - CPHI * SPHI0; - CPHI0 = CPHI; - SPHI0 = SPHI; - } - while (SDPHI * SDPHI > genau2 && iter < maxiter); - - /* ellipsoidal (geodetic) latitude */ - Latitude = Math.atan(SPHI / Math.abs(CPHI)); - return { - x: Longitude, - y: Latitude, - z: Height - }; - } // cs_geocentric_to_geodetic() - - /****************************************************************/ - // pj_geocentic_to_wgs84( p ) - // p = point to transform in geocentric coordinates (x,y,z) - - - /** point object, nothing fancy, just allows values to be - passed back and forth by reference rather than by value. - Other point classes may be used as long as they have - x and y properties, which will get modified in the transform method. - */ - function geocentricToWgs84(p, datum_type, datum_params) { - - if (datum_type === PJD_3PARAM) { - // if( x[io] === HUGE_VAL ) - // continue; - return { - x: p.x + datum_params[0], - y: p.y + datum_params[1], - z: p.z + datum_params[2], - }; - } else if (datum_type === PJD_7PARAM) { - var Dx_BF = datum_params[0]; - var Dy_BF = datum_params[1]; - var Dz_BF = datum_params[2]; - var Rx_BF = datum_params[3]; - var Ry_BF = datum_params[4]; - var Rz_BF = datum_params[5]; - var M_BF = datum_params[6]; - // if( x[io] === HUGE_VAL ) - // continue; - return { - x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF, - y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF, - z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF - }; - } - } // cs_geocentric_to_wgs84 - - /****************************************************************/ - // pj_geocentic_from_wgs84() - // coordinate system definition, - // point to transform in geocentric coordinates (x,y,z) - function geocentricFromWgs84(p, datum_type, datum_params) { - - if (datum_type === PJD_3PARAM) { - //if( x[io] === HUGE_VAL ) - // continue; - return { - x: p.x - datum_params[0], - y: p.y - datum_params[1], - z: p.z - datum_params[2], - }; - - } else if (datum_type === PJD_7PARAM) { - var Dx_BF = datum_params[0]; - var Dy_BF = datum_params[1]; - var Dz_BF = datum_params[2]; - var Rx_BF = datum_params[3]; - var Ry_BF = datum_params[4]; - var Rz_BF = datum_params[5]; - var M_BF = datum_params[6]; - var x_tmp = (p.x - Dx_BF) / M_BF; - var y_tmp = (p.y - Dy_BF) / M_BF; - var z_tmp = (p.z - Dz_BF) / M_BF; - //if( x[io] === HUGE_VAL ) - // continue; - - return { - x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp, - y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp, - z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp - }; - } //cs_geocentric_from_wgs84() - } - - function checkParams(type) { - return (type === PJD_3PARAM || type === PJD_7PARAM); - } - - var datum_transform = function(source, dest, point) { - // Short cut if the datums are identical. - if (compareDatums(source, dest)) { - return point; // in this case, zero is sucess, - // whereas cs_compare_datums returns 1 to indicate TRUE - // confusing, should fix this - } - - // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest - if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) { - return point; - } - - // If this datum requires grid shifts, then apply it to geodetic coordinates. - - // Do we need to go through geocentric coordinates? - if (source.es === dest.es && source.a === dest.a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) { - return point; - } - - // Convert to geocentric coordinates. - point = geodeticToGeocentric(point, source.es, source.a); - // Convert between datums - if (checkParams(source.datum_type)) { - point = geocentricToWgs84(point, source.datum_type, source.datum_params); - } - if (checkParams(dest.datum_type)) { - point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params); - } - return geocentricToGeodetic(point, dest.es, dest.a, dest.b); - - }; - - var adjust_axis = function(crs, denorm, point) { - var xin = point.x, - yin = point.y, - zin = point.z || 0.0; - var v, t, i; - var out = {}; - for (i = 0; i < 3; i++) { - if (denorm && i === 2 && point.z === undefined) { - continue; - } - if (i === 0) { - v = xin; - t = 'x'; - } - else if (i === 1) { - v = yin; - t = 'y'; - } - else { - v = zin; - t = 'z'; - } - switch (crs.axis[i]) { - case 'e': - out[t] = v; - break; - case 'w': - out[t] = -v; - break; - case 'n': - out[t] = v; - break; - case 's': - out[t] = -v; - break; - case 'u': - if (point[t] !== undefined) { - out.z = v; - } - break; - case 'd': - if (point[t] !== undefined) { - out.z = -v; - } - break; - default: - //console.log("ERROR: unknow axis ("+crs.axis[i]+") - check definition of "+crs.projName); - return null; - } - } - return out; - }; - - var toPoint = function (array){ - var out = { - x: array[0], - y: array[1] - }; - if (array.length>2) { - out.z = array[2]; - } - if (array.length>3) { - out.m = array[3]; - } - return out; - }; - - var checkSanity = function (point) { - checkCoord(point.x); - checkCoord(point.y); - }; - function checkCoord(num) { - if (typeof Number.isFinite === 'function') { - if (Number.isFinite(num)) { - return; - } - throw new TypeError('coordinates must be finite numbers'); - } - if (typeof num !== 'number' || num !== num || !isFinite(num)) { - throw new TypeError('coordinates must be finite numbers'); - } - } - - function checkNotWGS(source, dest) { - return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84'); - } - - function transform(source, dest, point) { - var wgs84; - if (Array.isArray(point)) { - point = toPoint(point); - } - checkSanity(point); - // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84 - if (source.datum && dest.datum && checkNotWGS(source, dest)) { - wgs84 = new Projection('WGS84'); - point = transform(source, wgs84, point); - source = wgs84; - } - // DGR, 2010/11/12 - if (source.axis !== 'enu') { - point = adjust_axis(source, false, point); - } - // Transform source points to long/lat, if they aren't already. - if (source.projName === 'longlat') { - point = { - x: point.x * D2R, - y: point.y * D2R - }; - } - else { - if (source.to_meter) { - point = { - x: point.x * source.to_meter, - y: point.y * source.to_meter - }; - } - point = source.inverse(point); // Convert Cartesian to longlat - } - // Adjust for the prime meridian if necessary - if (source.from_greenwich) { - point.x += source.from_greenwich; - } - - // Convert datums if needed, and if possible. - point = datum_transform(source.datum, dest.datum, point); - - // Adjust for the prime meridian if necessary - if (dest.from_greenwich) { - point = { - x: point.x - dest.from_greenwich, - y: point.y - }; - } - - if (dest.projName === 'longlat') { - // convert radians to decimal degrees - point = { - x: point.x * R2D, - y: point.y * R2D - }; - } else { // else project - point = dest.forward(point); - if (dest.to_meter) { - point = { - x: point.x / dest.to_meter, - y: point.y / dest.to_meter - }; - } - } - - // DGR, 2010/11/12 - if (dest.axis !== 'enu') { - return adjust_axis(dest, true, point); - } - - return point; - } - - var wgs84 = Projection('WGS84'); - - function transformer(from, to, coords) { - var transformedArray, out, keys; - if (Array.isArray(coords)) { - transformedArray = transform(from, to, coords); - if (coords.length === 3) { - return [transformedArray.x, transformedArray.y, transformedArray.z]; - } - else { - return [transformedArray.x, transformedArray.y]; - } - } - else { - out = transform(from, to, coords); - keys = Object.keys(coords); - if (keys.length === 2) { - return out; - } - keys.forEach(function (key) { - if (key === 'x' || key === 'y') { - return; - } - out[key] = coords[key]; - }); - return out; - } - } - - function checkProj(item) { - if (item instanceof Projection) { - return item; - } - if (item.oProj) { - return item.oProj; - } - return Projection(item); - } - function proj4$1(fromProj, toProj, coord) { - fromProj = checkProj(fromProj); - var single = false; - var obj; - if (typeof toProj === 'undefined') { - toProj = fromProj; - fromProj = wgs84; - single = true; - } - else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) { - coord = toProj; - toProj = fromProj; - fromProj = wgs84; - single = true; - } - toProj = checkProj(toProj); - if (coord) { - return transformer(fromProj, toProj, coord); - } - else { - obj = { - forward: function(coords) { - return transformer(fromProj, toProj, coords); - }, - inverse: function(coords) { - return transformer(toProj, fromProj, coords); - } - }; - if (single) { - obj.oProj = toProj; - } - return obj; - } - } - - /** - * UTM zones are grouped, and assigned to one of a group of 6 - * sets. - * - * {int} @private - */ - var NUM_100K_SETS = 6; - - /** - * The column letters (for easting) of the lower left value, per - * set. - * - * {string} @private - */ - var SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS'; - - /** - * The row letters (for northing) of the lower left value, per - * set. - * - * {string} @private - */ - var SET_ORIGIN_ROW_LETTERS = 'AFAFAF'; - - var A = 65; // A - var I = 73; // I - var O = 79; // O - var V = 86; // V - var Z = 90; // Z - var mgrs = { - forward: forward$1, - inverse: inverse$1, - toPoint: toPoint$1 - }; - /** - * Conversion of lat/lon to MGRS. - * - * @param {object} ll Object literal with lat and lon properties on a - * WGS84 ellipsoid. - * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for - * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5. - * @return {string} the MGRS string for the given location and accuracy. - */ - function forward$1(ll, accuracy) { - accuracy = accuracy || 5; // default accuracy 1m - return encode(LLtoUTM({ - lat: ll[1], - lon: ll[0] - }), accuracy); - } - - /** - * Conversion of MGRS to lat/lon. - * - * @param {string} mgrs MGRS string. - * @return {array} An array with left (longitude), bottom (latitude), right - * (longitude) and top (latitude) values in WGS84, representing the - * bounding box for the provided MGRS reference. - */ - function inverse$1(mgrs) { - var bbox = UTMtoLL(decode(mgrs.toUpperCase())); - if (bbox.lat && bbox.lon) { - return [bbox.lon, bbox.lat, bbox.lon, bbox.lat]; - } - return [bbox.left, bbox.bottom, bbox.right, bbox.top]; - } - - function toPoint$1(mgrs) { - var bbox = UTMtoLL(decode(mgrs.toUpperCase())); - if (bbox.lat && bbox.lon) { - return [bbox.lon, bbox.lat]; - } - return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2]; - } - /** - * Conversion from degrees to radians. - * - * @private - * @param {number} deg the angle in degrees. - * @return {number} the angle in radians. - */ - function degToRad(deg) { - return (deg * (Math.PI / 180.0)); - } - - /** - * Conversion from radians to degrees. - * - * @private - * @param {number} rad the angle in radians. - * @return {number} the angle in degrees. - */ - function radToDeg(rad) { - return (180.0 * (rad / Math.PI)); - } - - /** - * Converts a set of Longitude and Latitude co-ordinates to UTM - * using the WGS84 ellipsoid. - * - * @private - * @param {object} ll Object literal with lat and lon properties - * representing the WGS84 coordinate to be converted. - * @return {object} Object literal containing the UTM value with easting, - * northing, zoneNumber and zoneLetter properties, and an optional - * accuracy property in digits. Returns null if the conversion failed. - */ - function LLtoUTM(ll) { - var Lat = ll.lat; - var Long = ll.lon; - var a = 6378137.0; //ellip.radius; - var eccSquared = 0.00669438; //ellip.eccsq; - var k0 = 0.9996; - var LongOrigin; - var eccPrimeSquared; - var N, T, C, A, M; - var LatRad = degToRad(Lat); - var LongRad = degToRad(Long); - var LongOriginRad; - var ZoneNumber; - // (int) - ZoneNumber = Math.floor((Long + 180) / 6) + 1; - - //Make sure the longitude 180.00 is in Zone 60 - if (Long === 180) { - ZoneNumber = 60; - } - - // Special zone for Norway - if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) { - ZoneNumber = 32; - } - - // Special zones for Svalbard - if (Lat >= 72.0 && Lat < 84.0) { - if (Long >= 0.0 && Long < 9.0) { - ZoneNumber = 31; - } - else if (Long >= 9.0 && Long < 21.0) { - ZoneNumber = 33; - } - else if (Long >= 21.0 && Long < 33.0) { - ZoneNumber = 35; - } - else if (Long >= 33.0 && Long < 42.0) { - ZoneNumber = 37; - } - } - - LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin - // in middle of - // zone - LongOriginRad = degToRad(LongOrigin); - - eccPrimeSquared = (eccSquared) / (1 - eccSquared); - - N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad)); - T = Math.tan(LatRad) * Math.tan(LatRad); - C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad); - A = Math.cos(LatRad) * (LongRad - LongOriginRad); - - M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad)); - - var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0); - - var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0))); - if (Lat < 0.0) { - UTMNorthing += 10000000.0; //10000000 meter offset for - // southern hemisphere - } - - return { - northing: Math.round(UTMNorthing), - easting: Math.round(UTMEasting), - zoneNumber: ZoneNumber, - zoneLetter: getLetterDesignator(Lat) - }; - } - - /** - * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience - * class where the Zone can be specified as a single string eg."60N" which - * is then broken down into the ZoneNumber and ZoneLetter. - * - * @private - * @param {object} utm An object literal with northing, easting, zoneNumber - * and zoneLetter properties. If an optional accuracy property is - * provided (in meters), a bounding box will be returned instead of - * latitude and longitude. - * @return {object} An object literal containing either lat and lon values - * (if no accuracy was provided), or top, right, bottom and left values - * for the bounding box calculated according to the provided accuracy. - * Returns null if the conversion failed. - */ - function UTMtoLL(utm) { - - var UTMNorthing = utm.northing; - var UTMEasting = utm.easting; - var zoneLetter = utm.zoneLetter; - var zoneNumber = utm.zoneNumber; - // check the ZoneNummber is valid - if (zoneNumber < 0 || zoneNumber > 60) { - return null; - } - - var k0 = 0.9996; - var a = 6378137.0; //ellip.radius; - var eccSquared = 0.00669438; //ellip.eccsq; - var eccPrimeSquared; - var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared)); - var N1, T1, C1, R1, D, M; - var LongOrigin; - var mu, phi1Rad; - - // remove 500,000 meter offset for longitude - var x = UTMEasting - 500000.0; - var y = UTMNorthing; - - // We must know somehow if we are in the Northern or Southern - // hemisphere, this is the only time we use the letter So even - // if the Zone letter isn't exactly correct it should indicate - // the hemisphere correctly - if (zoneLetter < 'N') { - y -= 10000000.0; // remove 10,000,000 meter offset used - // for southern hemisphere - } - - // There are 60 zones with zone 1 being at West -180 to -174 - LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin - // in middle of - // zone - - eccPrimeSquared = (eccSquared) / (1 - eccSquared); - - M = y / k0; - mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256)); - - phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu); - // double phi1 = ProjMath.radToDeg(phi1Rad); - - N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad)); - T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad); - C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad); - R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5); - D = x / (N1 * k0); - - var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720); - lat = radToDeg(lat); - - var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad); - lon = LongOrigin + radToDeg(lon); - - var result; - if (utm.accuracy) { - var topRight = UTMtoLL({ - northing: utm.northing + utm.accuracy, - easting: utm.easting + utm.accuracy, - zoneLetter: utm.zoneLetter, - zoneNumber: utm.zoneNumber - }); - result = { - top: topRight.lat, - right: topRight.lon, - bottom: lat, - left: lon - }; - } - else { - result = { - lat: lat, - lon: lon - }; - } - return result; - } - - /** - * Calculates the MGRS letter designator for the given latitude. - * - * @private - * @param {number} lat The latitude in WGS84 to get the letter designator - * for. - * @return {char} The letter designator. - */ - function getLetterDesignator(lat) { - //This is here as an error flag to show that the Latitude is - //outside MGRS limits - var LetterDesignator = 'Z'; - - if ((84 >= lat) && (lat >= 72)) { - LetterDesignator = 'X'; - } - else if ((72 > lat) && (lat >= 64)) { - LetterDesignator = 'W'; - } - else if ((64 > lat) && (lat >= 56)) { - LetterDesignator = 'V'; - } - else if ((56 > lat) && (lat >= 48)) { - LetterDesignator = 'U'; - } - else if ((48 > lat) && (lat >= 40)) { - LetterDesignator = 'T'; - } - else if ((40 > lat) && (lat >= 32)) { - LetterDesignator = 'S'; - } - else if ((32 > lat) && (lat >= 24)) { - LetterDesignator = 'R'; - } - else if ((24 > lat) && (lat >= 16)) { - LetterDesignator = 'Q'; - } - else if ((16 > lat) && (lat >= 8)) { - LetterDesignator = 'P'; - } - else if ((8 > lat) && (lat >= 0)) { - LetterDesignator = 'N'; - } - else if ((0 > lat) && (lat >= -8)) { - LetterDesignator = 'M'; - } - else if ((-8 > lat) && (lat >= -16)) { - LetterDesignator = 'L'; - } - else if ((-16 > lat) && (lat >= -24)) { - LetterDesignator = 'K'; - } - else if ((-24 > lat) && (lat >= -32)) { - LetterDesignator = 'J'; - } - else if ((-32 > lat) && (lat >= -40)) { - LetterDesignator = 'H'; - } - else if ((-40 > lat) && (lat >= -48)) { - LetterDesignator = 'G'; - } - else if ((-48 > lat) && (lat >= -56)) { - LetterDesignator = 'F'; - } - else if ((-56 > lat) && (lat >= -64)) { - LetterDesignator = 'E'; - } - else if ((-64 > lat) && (lat >= -72)) { - LetterDesignator = 'D'; - } - else if ((-72 > lat) && (lat >= -80)) { - LetterDesignator = 'C'; - } - return LetterDesignator; - } - - /** - * Encodes a UTM location as MGRS string. - * - * @private - * @param {object} utm An object literal with easting, northing, - * zoneLetter, zoneNumber - * @param {number} accuracy Accuracy in digits (1-5). - * @return {string} MGRS string for the given UTM location. - */ - function encode(utm, accuracy) { - // prepend with leading zeroes - var seasting = "00000" + utm.easting, - snorthing = "00000" + utm.northing; - - return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy); - } - - /** - * Get the two letter 100k designator for a given UTM easting, - * northing and zone number value. - * - * @private - * @param {number} easting - * @param {number} northing - * @param {number} zoneNumber - * @return the two letter 100k designator for the given UTM location. - */ - function get100kID(easting, northing, zoneNumber) { - var setParm = get100kSetForZone(zoneNumber); - var setColumn = Math.floor(easting / 100000); - var setRow = Math.floor(northing / 100000) % 20; - return getLetter100kID(setColumn, setRow, setParm); - } - - /** - * Given a UTM zone number, figure out the MGRS 100K set it is in. - * - * @private - * @param {number} i An UTM zone number. - * @return {number} the 100k set the UTM zone is in. - */ - function get100kSetForZone(i) { - var setParm = i % NUM_100K_SETS; - if (setParm === 0) { - setParm = NUM_100K_SETS; - } - - return setParm; - } - - /** - * Get the two-letter MGRS 100k designator given information - * translated from the UTM northing, easting and zone number. - * - * @private - * @param {number} column the column index as it relates to the MGRS - * 100k set spreadsheet, created from the UTM easting. - * Values are 1-8. - * @param {number} row the row index as it relates to the MGRS 100k set - * spreadsheet, created from the UTM northing value. Values - * are from 0-19. - * @param {number} parm the set block, as it relates to the MGRS 100k set - * spreadsheet, created from the UTM zone. Values are from - * 1-60. - * @return two letter MGRS 100k code. - */ - function getLetter100kID(column, row, parm) { - // colOrigin and rowOrigin are the letters at the origin of the set - var index = parm - 1; - var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index); - var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index); - - // colInt and rowInt are the letters to build to return - var colInt = colOrigin + column - 1; - var rowInt = rowOrigin + row; - var rollover = false; - - if (colInt > Z) { - colInt = colInt - Z + A - 1; - rollover = true; - } - - if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) { - colInt++; - } - - if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) { - colInt++; - - if (colInt === I) { - colInt++; - } - } - - if (colInt > Z) { - colInt = colInt - Z + A - 1; - } - - if (rowInt > V) { - rowInt = rowInt - V + A - 1; - rollover = true; - } - else { - rollover = false; - } - - if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) { - rowInt++; - } - - if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) { - rowInt++; - - if (rowInt === I) { - rowInt++; - } - } - - if (rowInt > V) { - rowInt = rowInt - V + A - 1; - } - - var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt); - return twoLetter; - } - - /** - * Decode the UTM parameters from a MGRS string. - * - * @private - * @param {string} mgrsString an UPPERCASE coordinate string is expected. - * @return {object} An object literal with easting, northing, zoneLetter, - * zoneNumber and accuracy (in meters) properties. - */ - function decode(mgrsString) { - - if (mgrsString && mgrsString.length === 0) { - throw ("MGRSPoint coverting from nothing"); - } - - var length = mgrsString.length; - - var hunK = null; - var sb = ""; - var testChar; - var i = 0; - - // get Zone number - while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) { - if (i >= 2) { - throw ("MGRSPoint bad conversion from: " + mgrsString); - } - sb += testChar; - i++; - } - - var zoneNumber = parseInt(sb, 10); - - if (i === 0 || i + 3 > length) { - // A good MGRS string has to be 4-5 digits long, - // ##AAA/#AAA at least. - throw ("MGRSPoint bad conversion from: " + mgrsString); - } - - var zoneLetter = mgrsString.charAt(i++); - - // Should we check the zone letter here? Why not. - if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') { - throw ("MGRSPoint zone letter " + zoneLetter + " not handled: " + mgrsString); - } - - hunK = mgrsString.substring(i, i += 2); - - var set = get100kSetForZone(zoneNumber); - - var east100k = getEastingFromChar(hunK.charAt(0), set); - var north100k = getNorthingFromChar(hunK.charAt(1), set); - - // We have a bug where the northing may be 2000000 too low. - // How - // do we know when to roll over? - - while (north100k < getMinNorthing(zoneLetter)) { - north100k += 2000000; - } - - // calculate the char index for easting/northing separator - var remainder = length - i; - - if (remainder % 2 !== 0) { - throw ("MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + mgrsString); - } - - var sep = remainder / 2; - - var sepEasting = 0.0; - var sepNorthing = 0.0; - var accuracyBonus, sepEastingString, sepNorthingString, easting, northing; - if (sep > 0) { - accuracyBonus = 100000.0 / Math.pow(10, sep); - sepEastingString = mgrsString.substring(i, i + sep); - sepEasting = parseFloat(sepEastingString) * accuracyBonus; - sepNorthingString = mgrsString.substring(i + sep); - sepNorthing = parseFloat(sepNorthingString) * accuracyBonus; - } - - easting = sepEasting + east100k; - northing = sepNorthing + north100k; - - return { - easting: easting, - northing: northing, - zoneLetter: zoneLetter, - zoneNumber: zoneNumber, - accuracy: accuracyBonus - }; - } - - /** - * Given the first letter from a two-letter MGRS 100k zone, and given the - * MGRS table set for the zone number, figure out the easting value that - * should be added to the other, secondary easting value. - * - * @private - * @param {char} e The first letter from a two-letter MGRS 100´k zone. - * @param {number} set The MGRS table set for the zone number. - * @return {number} The easting value for the given letter and set. - */ - function getEastingFromChar(e, set) { - // colOrigin is the letter at the origin of the set for the - // column - var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1); - var eastingValue = 100000.0; - var rewindMarker = false; - - while (curCol !== e.charCodeAt(0)) { - curCol++; - if (curCol === I) { - curCol++; - } - if (curCol === O) { - curCol++; - } - if (curCol > Z) { - if (rewindMarker) { - throw ("Bad character: " + e); - } - curCol = A; - rewindMarker = true; - } - eastingValue += 100000.0; - } - - return eastingValue; - } - - /** - * Given the second letter from a two-letter MGRS 100k zone, and given the - * MGRS table set for the zone number, figure out the northing value that - * should be added to the other, secondary northing value. You have to - * remember that Northings are determined from the equator, and the vertical - * cycle of letters mean a 2000000 additional northing meters. This happens - * approx. every 18 degrees of latitude. This method does *NOT* count any - * additional northings. You have to figure out how many 2000000 meters need - * to be added for the zone letter of the MGRS coordinate. - * - * @private - * @param {char} n Second letter of the MGRS 100k zone - * @param {number} set The MGRS table set number, which is dependent on the - * UTM zone number. - * @return {number} The northing value for the given letter and set. - */ - function getNorthingFromChar(n, set) { - - if (n > 'V') { - throw ("MGRSPoint given invalid Northing " + n); - } - - // rowOrigin is the letter at the origin of the set for the - // column - var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1); - var northingValue = 0.0; - var rewindMarker = false; - - while (curRow !== n.charCodeAt(0)) { - curRow++; - if (curRow === I) { - curRow++; - } - if (curRow === O) { - curRow++; - } - // fixing a bug making whole application hang in this loop - // when 'n' is a wrong character - if (curRow > V) { - if (rewindMarker) { // making sure that this loop ends - throw ("Bad character: " + n); - } - curRow = A; - rewindMarker = true; - } - northingValue += 100000.0; - } - - return northingValue; - } - - /** - * The function getMinNorthing returns the minimum northing value of a MGRS - * zone. - * - * Ported from Geotrans' c Lattitude_Band_Value structure table. - * - * @private - * @param {char} zoneLetter The MGRS zone to get the min northing for. - * @return {number} - */ - function getMinNorthing(zoneLetter) { - var northing; - switch (zoneLetter) { - case 'C': - northing = 1100000.0; - break; - case 'D': - northing = 2000000.0; - break; - case 'E': - northing = 2800000.0; - break; - case 'F': - northing = 3700000.0; - break; - case 'G': - northing = 4600000.0; - break; - case 'H': - northing = 5500000.0; - break; - case 'J': - northing = 6400000.0; - break; - case 'K': - northing = 7300000.0; - break; - case 'L': - northing = 8200000.0; - break; - case 'M': - northing = 9100000.0; - break; - case 'N': - northing = 0.0; - break; - case 'P': - northing = 800000.0; - break; - case 'Q': - northing = 1700000.0; - break; - case 'R': - northing = 2600000.0; - break; - case 'S': - northing = 3500000.0; - break; - case 'T': - northing = 4400000.0; - break; - case 'U': - northing = 5300000.0; - break; - case 'V': - northing = 6200000.0; - break; - case 'W': - northing = 7000000.0; - break; - case 'X': - northing = 7900000.0; - break; - default: - northing = -1.0; - } - if (northing >= 0.0) { - return northing; - } - else { - throw ("Invalid zone letter: " + zoneLetter); - } - - } - - function Point(x, y, z) { - if (!(this instanceof Point)) { - return new Point(x, y, z); - } - if (Array.isArray(x)) { - this.x = x[0]; - this.y = x[1]; - this.z = x[2] || 0.0; - } else if(typeof x === 'object') { - this.x = x.x; - this.y = x.y; - this.z = x.z || 0.0; - } else if (typeof x === 'string' && typeof y === 'undefined') { - var coords = x.split(','); - this.x = parseFloat(coords[0], 10); - this.y = parseFloat(coords[1], 10); - this.z = parseFloat(coords[2], 10) || 0.0; - } else { - this.x = x; - this.y = y; - this.z = z || 0.0; - } - console.warn('proj4.Point will be removed in version 3, use proj4.toPoint'); - } - - Point.fromMGRS = function(mgrsStr) { - return new Point(toPoint$1(mgrsStr)); - }; - Point.prototype.toMGRS = function(accuracy) { - return forward$1([this.x, this.y], accuracy); - }; - - var version = "2.5.0"; - - var C00 = 1; - var C02 = 0.25; - var C04 = 0.046875; - var C06 = 0.01953125; - var C08 = 0.01068115234375; - var C22 = 0.75; - var C44 = 0.46875; - var C46 = 0.01302083333333333333; - var C48 = 0.00712076822916666666; - var C66 = 0.36458333333333333333; - var C68 = 0.00569661458333333333; - var C88 = 0.3076171875; - - var pj_enfn = function(es) { - var en = []; - en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08))); - en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08))); - var t = es * es; - en[2] = t * (C44 - es * (C46 + es * C48)); - t *= es; - en[3] = t * (C66 - es * C68); - en[4] = t * es * C88; - return en; - }; - - var pj_mlfn = function(phi, sphi, cphi, en) { - cphi *= sphi; - sphi *= sphi; - return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4])))); - }; - - var MAX_ITER = 20; - - var pj_inv_mlfn = function(arg, es, en) { - var k = 1 / (1 - es); - var phi = arg; - for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */ - var s = Math.sin(phi); - var t = 1 - es * s * s; - //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg; - //phi -= t * (t * Math.sqrt(t)) * k; - t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k; - phi -= t; - if (Math.abs(t) < EPSLN) { - return phi; - } - } - //..reportError("cass:pj_inv_mlfn: Convergence error"); - return phi; - }; - - // Heavily based on this tmerc projection implementation - // https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js - - function init$2() { - this.x0 = this.x0 !== undefined ? this.x0 : 0; - this.y0 = this.y0 !== undefined ? this.y0 : 0; - this.long0 = this.long0 !== undefined ? this.long0 : 0; - this.lat0 = this.lat0 !== undefined ? this.lat0 : 0; - - if (this.es) { - this.en = pj_enfn(this.es); - this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en); - } - } - - /** - Transverse Mercator Forward - long/lat to x/y - long/lat in radians - */ - function forward$2(p) { - var lon = p.x; - var lat = p.y; - - var delta_lon = adjust_lon(lon - this.long0); - var con; - var x, y; - var sin_phi = Math.sin(lat); - var cos_phi = Math.cos(lat); - - if (!this.es) { - var b = cos_phi * Math.sin(delta_lon); - - if ((Math.abs(Math.abs(b) - 1)) < EPSLN) { - return (93); - } - else { - x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0; - y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2)); - b = Math.abs(y); - - if (b >= 1) { - if ((b - 1) > EPSLN) { - return (93); - } - else { - y = 0; - } - } - else { - y = Math.acos(y); - } - - if (lat < 0) { - y = -y; - } - - y = this.a * this.k0 * (y - this.lat0) + this.y0; - } - } - else { - var al = cos_phi * delta_lon; - var als = Math.pow(al, 2); - var c = this.ep2 * Math.pow(cos_phi, 2); - var cs = Math.pow(c, 2); - var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0; - var t = Math.pow(tq, 2); - var ts = Math.pow(t, 2); - con = 1 - this.es * Math.pow(sin_phi, 2); - al = al / Math.sqrt(con); - var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en); - - x = this.a * (this.k0 * al * (1 + - als / 6 * (1 - t + c + - als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c + - als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) + - this.x0; - - y = this.a * (this.k0 * (ml - this.ml0 + - sin_phi * delta_lon * al / 2 * (1 + - als / 12 * (5 - t + 9 * c + 4 * cs + - als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c + - als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) + - this.y0; - } - - p.x = x; - p.y = y; - - return p; - } - - /** - Transverse Mercator Inverse - x/y to long/lat - */ - function inverse$2(p) { - var con, phi; - var lat, lon; - var x = (p.x - this.x0) * (1 / this.a); - var y = (p.y - this.y0) * (1 / this.a); - - if (!this.es) { - var f = Math.exp(x / this.k0); - var g = 0.5 * (f - 1 / f); - var temp = this.lat0 + y / this.k0; - var h = Math.cos(temp); - con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2))); - lat = Math.asin(con); - - if (y < 0) { - lat = -lat; - } - - if ((g === 0) && (h === 0)) { - lon = 0; - } - else { - lon = adjust_lon(Math.atan2(g, h) + this.long0); - } - } - else { // ellipsoidal form - con = this.ml0 + y / this.k0; - phi = pj_inv_mlfn(con, this.es, this.en); - - if (Math.abs(phi) < HALF_PI) { - var sin_phi = Math.sin(phi); - var cos_phi = Math.cos(phi); - var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0; - var c = this.ep2 * Math.pow(cos_phi, 2); - var cs = Math.pow(c, 2); - var t = Math.pow(tan_phi, 2); - var ts = Math.pow(t, 2); - con = 1 - this.es * Math.pow(sin_phi, 2); - var d = x * Math.sqrt(con) / this.k0; - var ds = Math.pow(d, 2); - con = con * tan_phi; - - lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 - - ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs - - ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c - - ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t)))); - - lon = adjust_lon(this.long0 + (d * (1 - - ds / 6 * (1 + 2 * t + c - - ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c - - ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi)); - } - else { - lat = HALF_PI * sign(y); - lon = 0; - } - } - - p.x = lon; - p.y = lat; - - return p; - } - - var names$3 = ["Transverse_Mercator", "Transverse Mercator", "tmerc"]; - var tmerc = { - init: init$2, - forward: forward$2, - inverse: inverse$2, - names: names$3 - }; - - var sinh = function(x) { - var r = Math.exp(x); - r = (r - 1 / r) / 2; - return r; - }; - - var hypot = function(x, y) { - x = Math.abs(x); - y = Math.abs(y); - var a = Math.max(x, y); - var b = Math.min(x, y) / (a ? a : 1); - - return a * Math.sqrt(1 + Math.pow(b, 2)); - }; - - var log1py = function(x) { - var y = 1 + x; - var z = y - 1; - - return z === 0 ? x : x * Math.log(y) / z; - }; - - var asinhy = function(x) { - var y = Math.abs(x); - y = log1py(y * (1 + y / (hypot(1, y) + 1))); - - return x < 0 ? -y : y; - }; - - var gatg = function(pp, B) { - var cos_2B = 2 * Math.cos(2 * B); - var i = pp.length - 1; - var h1 = pp[i]; - var h2 = 0; - var h; - - while (--i >= 0) { - h = -h2 + cos_2B * h1 + pp[i]; - h2 = h1; - h1 = h; - } - - return (B + h * Math.sin(2 * B)); - }; - - var clens = function(pp, arg_r) { - var r = 2 * Math.cos(arg_r); - var i = pp.length - 1; - var hr1 = pp[i]; - var hr2 = 0; - var hr; - - while (--i >= 0) { - hr = -hr2 + r * hr1 + pp[i]; - hr2 = hr1; - hr1 = hr; - } - - return Math.sin(arg_r) * hr; - }; - - var cosh = function(x) { - var r = Math.exp(x); - r = (r + 1 / r) / 2; - return r; - }; - - var clens_cmplx = function(pp, arg_r, arg_i) { - var sin_arg_r = Math.sin(arg_r); - var cos_arg_r = Math.cos(arg_r); - var sinh_arg_i = sinh(arg_i); - var cosh_arg_i = cosh(arg_i); - var r = 2 * cos_arg_r * cosh_arg_i; - var i = -2 * sin_arg_r * sinh_arg_i; - var j = pp.length - 1; - var hr = pp[j]; - var hi1 = 0; - var hr1 = 0; - var hi = 0; - var hr2; - var hi2; - - while (--j >= 0) { - hr2 = hr1; - hi2 = hi1; - hr1 = hr; - hi1 = hi; - hr = -hr2 + r * hr1 - i * hi1 + pp[j]; - hi = -hi2 + i * hr1 + r * hi1; - } - - r = sin_arg_r * cosh_arg_i; - i = cos_arg_r * sinh_arg_i; - - return [r * hr - i * hi, r * hi + i * hr]; - }; - - // Heavily based on this etmerc projection implementation - // https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js - - function init$3() { - if (this.es === undefined || this.es <= 0) { - throw new Error('incorrect elliptical usage'); - } - - this.x0 = this.x0 !== undefined ? this.x0 : 0; - this.y0 = this.y0 !== undefined ? this.y0 : 0; - this.long0 = this.long0 !== undefined ? this.long0 : 0; - this.lat0 = this.lat0 !== undefined ? this.lat0 : 0; - - this.cgb = []; - this.cbg = []; - this.utg = []; - this.gtu = []; - - var f = this.es / (1 + Math.sqrt(1 - this.es)); - var n = f / (2 - f); - var np = n; - - this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 )))))); - this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725)))))); - - np = np * n; - this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945))))); - this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945))))); - - np = np * n; - this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835)))); - this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835)))); - - np = np * n; - this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175))); - this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175))); - - np = np * n; - this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237)); - this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185)); - - np = np * n; - this.cgb[5] = np * (601676 / 22275); - this.cbg[5] = np * (444337 / 155925); - - np = Math.pow(n, 2); - this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256))); - - this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800)))))); - this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800)))))); - - this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720))))); - this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360))))); - - np = np * n; - this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 )))); - this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440)))); - - np = np * n; - this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600))); - this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600))); - - np = np * n; - this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680)); - this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840)); - - np = np * n; - this.utg[5] = np * (-20648693 / 638668800); - this.gtu[5] = np * (212378941 / 319334400); - - var Z = gatg(this.cbg, this.lat0); - this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z)); - } - - function forward$3(p) { - var Ce = adjust_lon(p.x - this.long0); - var Cn = p.y; - - Cn = gatg(this.cbg, Cn); - var sin_Cn = Math.sin(Cn); - var cos_Cn = Math.cos(Cn); - var sin_Ce = Math.sin(Ce); - var cos_Ce = Math.cos(Ce); - - Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn); - Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce)); - Ce = asinhy(Math.tan(Ce)); - - var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce); - - Cn = Cn + tmp[0]; - Ce = Ce + tmp[1]; - - var x; - var y; - - if (Math.abs(Ce) <= 2.623395162778) { - x = this.a * (this.Qn * Ce) + this.x0; - y = this.a * (this.Qn * Cn + this.Zb) + this.y0; - } - else { - x = Infinity; - y = Infinity; - } - - p.x = x; - p.y = y; - - return p; - } - - function inverse$3(p) { - var Ce = (p.x - this.x0) * (1 / this.a); - var Cn = (p.y - this.y0) * (1 / this.a); - - Cn = (Cn - this.Zb) / this.Qn; - Ce = Ce / this.Qn; - - var lon; - var lat; - - if (Math.abs(Ce) <= 2.623395162778) { - var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce); - - Cn = Cn + tmp[0]; - Ce = Ce + tmp[1]; - Ce = Math.atan(sinh(Ce)); - - var sin_Cn = Math.sin(Cn); - var cos_Cn = Math.cos(Cn); - var sin_Ce = Math.sin(Ce); - var cos_Ce = Math.cos(Ce); - - Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn)); - Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn); - - lon = adjust_lon(Ce + this.long0); - lat = gatg(this.cgb, Cn); - } - else { - lon = Infinity; - lat = Infinity; - } - - p.x = lon; - p.y = lat; - - return p; - } - - var names$4 = ["Extended_Transverse_Mercator", "Extended Transverse Mercator", "etmerc"]; - var etmerc = { - init: init$3, - forward: forward$3, - inverse: inverse$3, - names: names$4 - }; - - var adjust_zone = function(zone, lon) { - if (zone === undefined) { - zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1; - - if (zone < 0) { - return 0; - } else if (zone > 60) { - return 60; - } - } - return zone; - }; - - var dependsOn = 'etmerc'; - function init$4() { - var zone = adjust_zone(this.zone, this.long0); - if (zone === undefined) { - throw new Error('unknown utm zone'); - } - this.lat0 = 0; - this.long0 = ((6 * Math.abs(zone)) - 183) * D2R; - this.x0 = 500000; - this.y0 = this.utmSouth ? 10000000 : 0; - this.k0 = 0.9996; - - etmerc.init.apply(this); - this.forward = etmerc.forward; - this.inverse = etmerc.inverse; - } - - var names$5 = ["Universal Transverse Mercator System", "utm"]; - var utm = { - init: init$4, - names: names$5, - dependsOn: dependsOn - }; - - var srat = function(esinp, exp) { - return (Math.pow((1 - esinp) / (1 + esinp), exp)); - }; - - var MAX_ITER$1 = 20; - function init$6() { - var sphi = Math.sin(this.lat0); - var cphi = Math.cos(this.lat0); - cphi *= cphi; - this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi); - this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es)); - this.phic0 = Math.asin(sphi / this.C); - this.ratexp = 0.5 * this.C * this.e; - this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp)); - } - - function forward$5(p) { - var lon = p.x; - var lat = p.y; - - p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI; - p.x = this.C * lon; - return p; - } - - function inverse$5(p) { - var DEL_TOL = 1e-14; - var lon = p.x / this.C; - var lat = p.y; - var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C); - for (var i = MAX_ITER$1; i > 0; --i) { - lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI; - if (Math.abs(lat - p.y) < DEL_TOL) { - break; - } - p.y = lat; - } - /* convergence failed */ - if (!i) { - return null; - } - p.x = lon; - p.y = lat; - return p; - } - - var names$7 = ["gauss"]; - var gauss = { - init: init$6, - forward: forward$5, - inverse: inverse$5, - names: names$7 - }; - - function init$5() { - gauss.init.apply(this); - if (!this.rc) { - return; - } - this.sinc0 = Math.sin(this.phic0); - this.cosc0 = Math.cos(this.phic0); - this.R2 = 2 * this.rc; - if (!this.title) { - this.title = "Oblique Stereographic Alternative"; - } - } - - function forward$4(p) { - var sinc, cosc, cosl, k; - p.x = adjust_lon(p.x - this.long0); - gauss.forward.apply(this, [p]); - sinc = Math.sin(p.y); - cosc = Math.cos(p.y); - cosl = Math.cos(p.x); - k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl); - p.x = k * cosc * Math.sin(p.x); - p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl); - p.x = this.a * p.x + this.x0; - p.y = this.a * p.y + this.y0; - return p; - } - - function inverse$4(p) { - var sinc, cosc, lon, lat, rho; - p.x = (p.x - this.x0) / this.a; - p.y = (p.y - this.y0) / this.a; - - p.x /= this.k0; - p.y /= this.k0; - if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) { - var c = 2 * Math.atan2(rho, this.R2); - sinc = Math.sin(c); - cosc = Math.cos(c); - lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho); - lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc); - } - else { - lat = this.phic0; - lon = 0; - } - - p.x = lon; - p.y = lat; - gauss.inverse.apply(this, [p]); - p.x = adjust_lon(p.x + this.long0); - return p; - } - - var names$6 = ["Stereographic_North_Pole", "Oblique_Stereographic", "Polar_Stereographic", "sterea","Oblique Stereographic Alternative","Double_Stereographic"]; - var sterea = { - init: init$5, - forward: forward$4, - inverse: inverse$4, - names: names$6 - }; - - function ssfn_(phit, sinphi, eccen) { - sinphi *= eccen; - return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen)); - } - - function init$7() { - this.coslat0 = Math.cos(this.lat0); - this.sinlat0 = Math.sin(this.lat0); - if (this.sphere) { - if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) { - this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts)); - } - } - else { - if (Math.abs(this.coslat0) <= EPSLN) { - if (this.lat0 > 0) { - //North pole - //trace('stere:north pole'); - this.con = 1; - } - else { - //South pole - //trace('stere:south pole'); - this.con = -1; - } - } - this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e)); - if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) { - this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts)); - } - this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0); - this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI; - this.cosX0 = Math.cos(this.X0); - this.sinX0 = Math.sin(this.X0); - } - } - - // Stereographic forward equations--mapping lat,long to x,y - function forward$6(p) { - var lon = p.x; - var lat = p.y; - var sinlat = Math.sin(lat); - var coslat = Math.cos(lat); - var A, X, sinX, cosX, ts, rh; - var dlon = adjust_lon(lon - this.long0); - - if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) { - //case of the origine point - //trace('stere:this is the origin point'); - p.x = NaN; - p.y = NaN; - return p; - } - if (this.sphere) { - //trace('stere:sphere case'); - A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon)); - p.x = this.a * A * coslat * Math.sin(dlon) + this.x0; - p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0; - return p; - } - else { - X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI; - cosX = Math.cos(X); - sinX = Math.sin(X); - if (Math.abs(this.coslat0) <= EPSLN) { - ts = tsfnz(this.e, lat * this.con, this.con * sinlat); - rh = 2 * this.a * this.k0 * ts / this.cons; - p.x = this.x0 + rh * Math.sin(lon - this.long0); - p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0); - //trace(p.toString()); - return p; - } - else if (Math.abs(this.sinlat0) < EPSLN) { - //Eq - //trace('stere:equateur'); - A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon)); - p.y = A * sinX; - } - else { - //other case - //trace('stere:normal case'); - A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon))); - p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0; - } - p.x = A * cosX * Math.sin(dlon) + this.x0; - } - //trace(p.toString()); - return p; - } - - //* Stereographic inverse equations--mapping x,y to lat/long - function inverse$6(p) { - p.x -= this.x0; - p.y -= this.y0; - var lon, lat, ts, ce, Chi; - var rh = Math.sqrt(p.x * p.x + p.y * p.y); - if (this.sphere) { - var c = 2 * Math.atan(rh / (2 * this.a * this.k0)); - lon = this.long0; - lat = this.lat0; - if (rh <= EPSLN) { - p.x = lon; - p.y = lat; - return p; - } - lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh); - if (Math.abs(this.coslat0) < EPSLN) { - if (this.lat0 > 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y)); - } - else { - lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y)); - } - } - else { - lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c))); - } - p.x = lon; - p.y = lat; - return p; - } - else { - if (Math.abs(this.coslat0) <= EPSLN) { - if (rh <= EPSLN) { - lat = this.lat0; - lon = this.long0; - p.x = lon; - p.y = lat; - //trace(p.toString()); - return p; - } - p.x *= this.con; - p.y *= this.con; - ts = rh * this.cons / (2 * this.a * this.k0); - lat = this.con * phi2z(this.e, ts); - lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y)); - } - else { - ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1)); - lon = this.long0; - if (rh <= EPSLN) { - Chi = this.X0; - } - else { - Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh); - lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce))); - } - lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi))); - } - } - p.x = lon; - p.y = lat; - - //trace(p.toString()); - return p; - - } - - var names$8 = ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)"]; - var stere = { - init: init$7, - forward: forward$6, - inverse: inverse$6, - names: names$8, - ssfn_: ssfn_ - }; - - /* - references: - Formules et constantes pour le Calcul pour la - projection cylindrique conforme à axe oblique et pour la transformation entre - des systèmes de référence. - http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf - */ - - function init$8() { - var phy0 = this.lat0; - this.lambda0 = this.long0; - var sinPhy0 = Math.sin(phy0); - var semiMajorAxis = this.a; - var invF = this.rf; - var flattening = 1 / invF; - var e2 = 2 * flattening - Math.pow(flattening, 2); - var e = this.e = Math.sqrt(e2); - this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2)); - this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4)); - this.b0 = Math.asin(sinPhy0 / this.alpha); - var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2)); - var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2)); - var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0)); - this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3; - } - - function forward$7(p) { - var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2)); - var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y))); - var S = -this.alpha * (Sa1 + Sa2) + this.K; - - // spheric latitude - var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4); - - // spheric longitude - var I = this.alpha * (p.x - this.lambda0); - - // psoeudo equatorial rotation - var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I))); - - var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I)); - - p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0; - p.x = this.R * rotI + this.x0; - return p; - } - - function inverse$7(p) { - var Y = p.x - this.x0; - var X = p.y - this.y0; - - var rotI = Y / this.R; - var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4); - - var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI)); - var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB))); - - var lambda = this.lambda0 + I / this.alpha; - - var S = 0; - var phy = b; - var prevPhy = -1000; - var iteration = 0; - while (Math.abs(phy - prevPhy) > 0.0000001) { - if (++iteration > 20) { - //...reportError("omercFwdInfinity"); - return; - } - //S = Math.log(Math.tan(Math.PI / 4 + phy / 2)); - S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2)); - prevPhy = phy; - phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2; - } - - p.x = lambda; - p.y = phy; - return p; - } - - var names$9 = ["somerc"]; - var somerc = { - init: init$8, - forward: forward$7, - inverse: inverse$7, - names: names$9 - }; - - /* Initialize the Oblique Mercator projection - ------------------------------------------*/ - function init$9() { - this.no_off = this.no_off || false; - this.no_rot = this.no_rot || false; - - if (isNaN(this.k0)) { - this.k0 = 1; - } - var sinlat = Math.sin(this.lat0); - var coslat = Math.cos(this.lat0); - var con = this.e * sinlat; - - this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4)); - this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con); - var t0 = tsfnz(this.e, this.lat0, sinlat); - var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con)); - if (dl * dl < 1) { - dl = 1; - } - var fl; - var gl; - if (!isNaN(this.longc)) { - //Central point and azimuth method - - if (this.lat0 >= 0) { - fl = dl + Math.sqrt(dl * dl - 1); - } - else { - fl = dl - Math.sqrt(dl * dl - 1); - } - this.el = fl * Math.pow(t0, this.bl); - gl = 0.5 * (fl - 1 / fl); - this.gamma0 = Math.asin(Math.sin(this.alpha) / dl); - this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl; - - } - else { - //2 points method - var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1)); - var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2)); - if (this.lat0 >= 0) { - this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl); - } - else { - this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl); - } - var hl = Math.pow(t1, this.bl); - var ll = Math.pow(t2, this.bl); - fl = this.el / hl; - gl = 0.5 * (fl - 1 / fl); - var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl); - var pl = (ll - hl) / (ll + hl); - var dlon12 = adjust_lon(this.long1 - this.long2); - this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl; - this.long0 = adjust_lon(this.long0); - var dlon10 = adjust_lon(this.long1 - this.long0); - this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl); - this.alpha = Math.asin(dl * Math.sin(this.gamma0)); - } - - if (this.no_off) { - this.uc = 0; - } - else { - if (this.lat0 >= 0) { - this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha)); - } - else { - this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha)); - } - } - - } - - /* Oblique Mercator forward equations--mapping lat,long to x,y - ----------------------------------------------------------*/ - function forward$8(p) { - var lon = p.x; - var lat = p.y; - var dlon = adjust_lon(lon - this.long0); - var us, vs; - var con; - if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) { - if (lat > 0) { - con = -1; - } - else { - con = 1; - } - vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5)); - us = -1 * con * HALF_PI * this.al / this.bl; - } - else { - var t = tsfnz(this.e, lat, Math.sin(lat)); - var ql = this.el / Math.pow(t, this.bl); - var sl = 0.5 * (ql - 1 / ql); - var tl = 0.5 * (ql + 1 / ql); - var vl = Math.sin(this.bl * (dlon)); - var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl; - if (Math.abs(Math.abs(ul) - 1) <= EPSLN) { - vs = Number.POSITIVE_INFINITY; - } - else { - vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl; - } - if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) { - us = this.al * this.bl * (dlon); - } - else { - us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl; - } - } - - if (this.no_rot) { - p.x = this.x0 + us; - p.y = this.y0 + vs; - } - else { - - us -= this.uc; - p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha); - p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha); - } - return p; - } - - function inverse$8(p) { - var us, vs; - if (this.no_rot) { - vs = p.y - this.y0; - us = p.x - this.x0; - } - else { - vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha); - us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha); - us += this.uc; - } - var qp = Math.exp(-1 * this.bl * vs / this.al); - var sp = 0.5 * (qp - 1 / qp); - var tp = 0.5 * (qp + 1 / qp); - var vp = Math.sin(this.bl * us / this.al); - var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp; - var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl); - if (Math.abs(up - 1) < EPSLN) { - p.x = this.long0; - p.y = HALF_PI; - } - else if (Math.abs(up + 1) < EPSLN) { - p.x = this.long0; - p.y = -1 * HALF_PI; - } - else { - p.y = phi2z(this.e, ts); - p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl); - } - return p; - } - - var names$10 = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"]; - var omerc = { - init: init$9, - forward: forward$8, - inverse: inverse$8, - names: names$10 - }; - - function init$10() { - - // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north - //double c_lat; /* center latitude */ - //double c_lon; /* center longitude */ - //double lat1; /* first standard parallel */ - //double lat2; /* second standard parallel */ - //double r_maj; /* major axis */ - //double r_min; /* minor axis */ - //double false_east; /* x offset in meters */ - //double false_north; /* y offset in meters */ - - if (!this.lat2) { - this.lat2 = this.lat1; - } //if lat2 is not defined - if (!this.k0) { - this.k0 = 1; - } - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - // Standard Parallels cannot be equal and on opposite sides of the equator - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - - var temp = this.b / this.a; - this.e = Math.sqrt(1 - temp * temp); - - var sin1 = Math.sin(this.lat1); - var cos1 = Math.cos(this.lat1); - var ms1 = msfnz(this.e, sin1, cos1); - var ts1 = tsfnz(this.e, this.lat1, sin1); - - var sin2 = Math.sin(this.lat2); - var cos2 = Math.cos(this.lat2); - var ms2 = msfnz(this.e, sin2, cos2); - var ts2 = tsfnz(this.e, this.lat2, sin2); - - var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0)); - - if (Math.abs(this.lat1 - this.lat2) > EPSLN) { - this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2); - } - else { - this.ns = sin1; - } - if (isNaN(this.ns)) { - this.ns = sin1; - } - this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns)); - this.rh = this.a * this.f0 * Math.pow(ts0, this.ns); - if (!this.title) { - this.title = "Lambert Conformal Conic"; - } - } - - // Lambert Conformal conic forward equations--mapping lat,long to x,y - // ----------------------------------------------------------------- - function forward$9(p) { - - var lon = p.x; - var lat = p.y; - - // singular cases : - if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) { - lat = sign(lat) * (HALF_PI - 2 * EPSLN); - } - - var con = Math.abs(Math.abs(lat) - HALF_PI); - var ts, rh1; - if (con > EPSLN) { - ts = tsfnz(this.e, lat, Math.sin(lat)); - rh1 = this.a * this.f0 * Math.pow(ts, this.ns); - } - else { - con = lat * this.ns; - if (con <= 0) { - return null; - } - rh1 = 0; - } - var theta = this.ns * adjust_lon(lon - this.long0); - p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0; - p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0; - - return p; - } - - // Lambert Conformal Conic inverse equations--mapping x,y to lat/long - // ----------------------------------------------------------------- - function inverse$9(p) { - - var rh1, con, ts; - var lat, lon; - var x = (p.x - this.x0) / this.k0; - var y = (this.rh - (p.y - this.y0) / this.k0); - if (this.ns > 0) { - rh1 = Math.sqrt(x * x + y * y); - con = 1; - } - else { - rh1 = -Math.sqrt(x * x + y * y); - con = -1; - } - var theta = 0; - if (rh1 !== 0) { - theta = Math.atan2((con * x), (con * y)); - } - if ((rh1 !== 0) || (this.ns > 0)) { - con = 1 / this.ns; - ts = Math.pow((rh1 / (this.a * this.f0)), con); - lat = phi2z(this.e, ts); - if (lat === -9999) { - return null; - } - } - else { - lat = -HALF_PI; - } - lon = adjust_lon(theta / this.ns + this.long0); - - p.x = lon; - p.y = lat; - return p; - } - - var names$11 = ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"]; - var lcc = { - init: init$10, - forward: forward$9, - inverse: inverse$9, - names: names$11 - }; - - function init$11() { - this.a = 6377397.155; - this.es = 0.006674372230614; - this.e = Math.sqrt(this.es); - if (!this.lat0) { - this.lat0 = 0.863937979737193; - } - if (!this.long0) { - this.long0 = 0.7417649320975901 - 0.308341501185665; - } - /* if scale not set default to 0.9999 */ - if (!this.k0) { - this.k0 = 0.9999; - } - this.s45 = 0.785398163397448; /* 45 */ - this.s90 = 2 * this.s45; - this.fi0 = this.lat0; - this.e2 = this.es; - this.e = Math.sqrt(this.e2); - this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2)); - this.uq = 1.04216856380474; - this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa); - this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2); - this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g; - this.k1 = this.k0; - this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2)); - this.s0 = 1.37008346281555; - this.n = Math.sin(this.s0); - this.ro0 = this.k1 * this.n0 / Math.tan(this.s0); - this.ad = this.s90 - this.uq; - } - - /* ellipsoid */ - /* calculate xy from lat/lon */ - /* Constants, identical to inverse transform function */ - function forward$10(p) { - var gfi, u, deltav, s, d, eps, ro; - var lon = p.x; - var lat = p.y; - var delta_lon = adjust_lon(lon - this.long0); - /* Transformation */ - gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2)); - u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45); - deltav = -delta_lon * this.alfa; - s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav)); - d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s)); - eps = this.n * d; - ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n); - p.y = ro * Math.cos(eps) / 1; - p.x = ro * Math.sin(eps) / 1; - - if (!this.czech) { - p.y *= -1; - p.x *= -1; - } - return (p); - } - - /* calculate lat/lon from xy */ - function inverse$10(p) { - var u, deltav, s, d, eps, ro, fi1; - var ok; - - /* Transformation */ - /* revert y, x*/ - var tmp = p.x; - p.x = p.y; - p.y = tmp; - if (!this.czech) { - p.y *= -1; - p.x *= -1; - } - ro = Math.sqrt(p.x * p.x + p.y * p.y); - eps = Math.atan2(p.y, p.x); - d = eps / Math.sin(this.s0); - s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45); - u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d)); - deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u)); - p.x = this.long0 - deltav / this.alfa; - fi1 = u; - ok = 0; - var iter = 0; - do { - p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45); - if (Math.abs(fi1 - p.y) < 0.0000000001) { - ok = 1; - } - fi1 = p.y; - iter += 1; - } while (ok === 0 && iter < 15); - if (iter >= 15) { - return null; - } - - return (p); - } - - var names$12 = ["Krovak", "krovak"]; - var krovak = { - init: init$11, - forward: forward$10, - inverse: inverse$10, - names: names$12 - }; - - var mlfn = function(e0, e1, e2, e3, phi) { - return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi)); - }; - - var e0fn = function(x) { - return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x))); - }; - - var e1fn = function(x) { - return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x))); - }; - - var e2fn = function(x) { - return (0.05859375 * x * x * (1 + 0.75 * x)); - }; - - var e3fn = function(x) { - return (x * x * x * (35 / 3072)); - }; - - var gN = function(a, e, sinphi) { - var temp = e * sinphi; - return a / Math.sqrt(1 - temp * temp); - }; - - var adjust_lat = function(x) { - return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI)); - }; - - var imlfn = function(ml, e0, e1, e2, e3) { - var phi; - var dphi; - - phi = ml / e0; - for (var i = 0; i < 15; i++) { - dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi)); - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - - //..reportError("IMLFN-CONV:Latitude failed to converge after 15 iterations"); - return NaN; - }; - - function init$12() { - if (!this.sphere) { - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); - } - } - - /* Cassini forward equations--mapping lat,long to x,y - -----------------------------------------------------------------------*/ - function forward$11(p) { - - /* Forward equations - -----------------*/ - var x, y; - var lam = p.x; - var phi = p.y; - lam = adjust_lon(lam - this.long0); - - if (this.sphere) { - x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam)); - y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0); - } - else { - //ellipsoid - var sinphi = Math.sin(phi); - var cosphi = Math.cos(phi); - var nl = gN(this.a, this.e, sinphi); - var tl = Math.tan(phi) * Math.tan(phi); - var al = lam * Math.cos(phi); - var asq = al * al; - var cl = this.es * cosphi * cosphi / (1 - this.es); - var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi); - - x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120)); - y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24); - - - } - - p.x = x + this.x0; - p.y = y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$11(p) { - p.x -= this.x0; - p.y -= this.y0; - var x = p.x / this.a; - var y = p.y / this.a; - var phi, lam; - - if (this.sphere) { - var dd = y + this.lat0; - phi = Math.asin(Math.sin(dd) * Math.cos(x)); - lam = Math.atan2(Math.tan(x), Math.cos(dd)); - } - else { - /* ellipsoid */ - var ml1 = this.ml0 / this.a + y; - var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3); - if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) { - p.x = this.long0; - p.y = HALF_PI; - if (y < 0) { - p.y *= -1; - } - return p; - } - var nl1 = gN(this.a, this.e, Math.sin(phi1)); - - var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es); - var tl1 = Math.pow(Math.tan(phi1), 2); - var dl = x * this.a / nl1; - var dsq = dl * dl; - phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24); - lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1); - - } - - p.x = adjust_lon(lam + this.long0); - p.y = adjust_lat(phi); - return p; - - } - - var names$13 = ["Cassini", "Cassini_Soldner", "cass"]; - var cass = { - init: init$12, - forward: forward$11, - inverse: inverse$11, - names: names$13 - }; - - var qsfnz = function(eccent, sinphi) { - var con; - if (eccent > 1.0e-7) { - con = eccent * sinphi; - return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con)))); - } - else { - return (2 * sinphi); - } - }; - - /* - reference - "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder, - The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355. - */ - - var S_POLE = 1; - - var N_POLE = 2; - var EQUIT = 3; - var OBLIQ = 4; - - /* Initialize the Lambert Azimuthal Equal Area projection - ------------------------------------------------------*/ - function init$13() { - var t = Math.abs(this.lat0); - if (Math.abs(t - HALF_PI) < EPSLN) { - this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE; - } - else if (Math.abs(t) < EPSLN) { - this.mode = this.EQUIT; - } - else { - this.mode = this.OBLIQ; - } - if (this.es > 0) { - var sinphi; - - this.qp = qsfnz(this.e, 1); - this.mmf = 0.5 / (1 - this.es); - this.apa = authset(this.es); - switch (this.mode) { - case this.N_POLE: - this.dd = 1; - break; - case this.S_POLE: - this.dd = 1; - break; - case this.EQUIT: - this.rq = Math.sqrt(0.5 * this.qp); - this.dd = 1 / this.rq; - this.xmf = 1; - this.ymf = 0.5 * this.qp; - break; - case this.OBLIQ: - this.rq = Math.sqrt(0.5 * this.qp); - sinphi = Math.sin(this.lat0); - this.sinb1 = qsfnz(this.e, sinphi) / this.qp; - this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1); - this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1); - this.ymf = (this.xmf = this.rq) / this.dd; - this.xmf *= this.dd; - break; - } - } - else { - if (this.mode === this.OBLIQ) { - this.sinph0 = Math.sin(this.lat0); - this.cosph0 = Math.cos(this.lat0); - } - } - } - - /* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y - -----------------------------------------------------------------------*/ - function forward$12(p) { - - /* Forward equations - -----------------*/ - var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi; - var lam = p.x; - var phi = p.y; - - lam = adjust_lon(lam - this.long0); - if (this.sphere) { - sinphi = Math.sin(phi); - cosphi = Math.cos(phi); - coslam = Math.cos(lam); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam; - if (y <= EPSLN) { - return null; - } - y = Math.sqrt(2 / y); - x = y * cosphi * Math.sin(lam); - y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam; - } - else if (this.mode === this.N_POLE || this.mode === this.S_POLE) { - if (this.mode === this.N_POLE) { - coslam = -coslam; - } - if (Math.abs(phi + this.phi0) < EPSLN) { - return null; - } - y = FORTPI - phi * 0.5; - y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y)); - x = y * Math.sin(lam); - y *= coslam; - } - } - else { - sinb = 0; - cosb = 0; - b = 0; - coslam = Math.cos(lam); - sinlam = Math.sin(lam); - sinphi = Math.sin(phi); - q = qsfnz(this.e, sinphi); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - sinb = q / this.qp; - cosb = Math.sqrt(1 - sinb * sinb); - } - switch (this.mode) { - case this.OBLIQ: - b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam; - break; - case this.EQUIT: - b = 1 + cosb * coslam; - break; - case this.N_POLE: - b = HALF_PI + phi; - q = this.qp - q; - break; - case this.S_POLE: - b = phi - HALF_PI; - q = this.qp + q; - break; - } - if (Math.abs(b) < EPSLN) { - return null; - } - switch (this.mode) { - case this.OBLIQ: - case this.EQUIT: - b = Math.sqrt(2 / b); - if (this.mode === this.OBLIQ) { - y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam); - } - else { - y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf; - } - x = this.xmf * b * cosb * sinlam; - break; - case this.N_POLE: - case this.S_POLE: - if (q >= 0) { - x = (b = Math.sqrt(q)) * sinlam; - y = coslam * ((this.mode === this.S_POLE) ? b : -b); - } - else { - x = y = 0; - } - break; - } - } - - p.x = this.a * x + this.x0; - p.y = this.a * y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$12(p) { - p.x -= this.x0; - p.y -= this.y0; - var x = p.x / this.a; - var y = p.y / this.a; - var lam, phi, cCe, sCe, q, rho, ab; - if (this.sphere) { - var cosz = 0, - rh, sinz = 0; - - rh = Math.sqrt(x * x + y * y); - phi = rh * 0.5; - if (phi > 1) { - return null; - } - phi = 2 * Math.asin(phi); - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - sinz = Math.sin(phi); - cosz = Math.cos(phi); - } - switch (this.mode) { - case this.EQUIT: - phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh); - x *= sinz; - y = cosz * rh; - break; - case this.OBLIQ: - phi = (Math.abs(rh) <= EPSLN) ? this.phi0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh); - x *= sinz * this.cosph0; - y = (cosz - Math.sin(phi) * this.sinph0) * rh; - break; - case this.N_POLE: - y = -y; - phi = HALF_PI - phi; - break; - case this.S_POLE: - phi -= HALF_PI; - break; - } - lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y); - } - else { - ab = 0; - if (this.mode === this.OBLIQ || this.mode === this.EQUIT) { - x /= this.dd; - y *= this.dd; - rho = Math.sqrt(x * x + y * y); - if (rho < EPSLN) { - p.x = 0; - p.y = this.phi0; - return p; - } - sCe = 2 * Math.asin(0.5 * rho / this.rq); - cCe = Math.cos(sCe); - x *= (sCe = Math.sin(sCe)); - if (this.mode === this.OBLIQ) { - ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho; - q = this.qp * ab; - y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe; - } - else { - ab = y * sCe / rho; - q = this.qp * ab; - y = rho * cCe; - } - } - else if (this.mode === this.N_POLE || this.mode === this.S_POLE) { - if (this.mode === this.N_POLE) { - y = -y; - } - q = (x * x + y * y); - if (!q) { - p.x = 0; - p.y = this.phi0; - return p; - } - ab = 1 - q / this.qp; - if (this.mode === this.S_POLE) { - ab = -ab; - } - } - lam = Math.atan2(x, y); - phi = authlat(Math.asin(ab), this.apa); - } - - p.x = adjust_lon(this.long0 + lam); - p.y = phi; - return p; - } - - /* determine latitude from authalic latitude */ - var P00 = 0.33333333333333333333; - - var P01 = 0.17222222222222222222; - var P02 = 0.10257936507936507936; - var P10 = 0.06388888888888888888; - var P11 = 0.06640211640211640211; - var P20 = 0.01641501294219154443; - - function authset(es) { - var t; - var APA = []; - APA[0] = es * P00; - t = es * es; - APA[0] += t * P01; - APA[1] = t * P10; - t *= es; - APA[0] += t * P02; - APA[1] += t * P11; - APA[2] = t * P20; - return APA; - } - - function authlat(beta, APA) { - var t = beta + beta; - return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t)); - } - - var names$14 = ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"]; - var laea = { - init: init$13, - forward: forward$12, - inverse: inverse$12, - names: names$14, - S_POLE: S_POLE, - N_POLE: N_POLE, - EQUIT: EQUIT, - OBLIQ: OBLIQ - }; - - var asinz = function(x) { - if (Math.abs(x) > 1) { - x = (x > 1) ? 1 : -1; - } - return Math.asin(x); - }; - - function init$14() { - - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); - this.e3 = Math.sqrt(this.es); - - this.sin_po = Math.sin(this.lat1); - this.cos_po = Math.cos(this.lat1); - this.t1 = this.sin_po; - this.con = this.sin_po; - this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po); - this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po); - - this.sin_po = Math.sin(this.lat2); - this.cos_po = Math.cos(this.lat2); - this.t2 = this.sin_po; - this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po); - this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po); - - this.sin_po = Math.sin(this.lat0); - this.cos_po = Math.cos(this.lat0); - this.t3 = this.sin_po; - this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po); - - if (Math.abs(this.lat1 - this.lat2) > EPSLN) { - this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1); - } - else { - this.ns0 = this.con; - } - this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1; - this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0; - } - - /* Albers Conical Equal Area forward equations--mapping lat,long to x,y - -------------------------------------------------------------------*/ - function forward$13(p) { - - var lon = p.x; - var lat = p.y; - - this.sin_phi = Math.sin(lat); - this.cos_phi = Math.cos(lat); - - var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi); - var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0; - var theta = this.ns0 * adjust_lon(lon - this.long0); - var x = rh1 * Math.sin(theta) + this.x0; - var y = this.rh - rh1 * Math.cos(theta) + this.y0; - - p.x = x; - p.y = y; - return p; - } - - function inverse$13(p) { - var rh1, qs, con, theta, lon, lat; - - p.x -= this.x0; - p.y = this.rh - p.y + this.y0; - if (this.ns0 >= 0) { - rh1 = Math.sqrt(p.x * p.x + p.y * p.y); - con = 1; - } - else { - rh1 = -Math.sqrt(p.x * p.x + p.y * p.y); - con = -1; - } - theta = 0; - if (rh1 !== 0) { - theta = Math.atan2(con * p.x, con * p.y); - } - con = rh1 * this.ns0 / this.a; - if (this.sphere) { - lat = Math.asin((this.c - con * con) / (2 * this.ns0)); - } - else { - qs = (this.c - con * con) / this.ns0; - lat = this.phi1z(this.e3, qs); - } - - lon = adjust_lon(theta / this.ns0 + this.long0); - p.x = lon; - p.y = lat; - return p; - } - - /* Function to compute phi1, the latitude for the inverse of the - Albers Conical Equal-Area projection. - -------------------------------------------*/ - function phi1z(eccent, qs) { - var sinphi, cosphi, con, com, dphi; - var phi = asinz(0.5 * qs); - if (eccent < EPSLN) { - return phi; - } - - var eccnts = eccent * eccent; - for (var i = 1; i <= 25; i++) { - sinphi = Math.sin(phi); - cosphi = Math.cos(phi); - con = eccent * sinphi; - com = 1 - con * con; - dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con))); - phi = phi + dphi; - if (Math.abs(dphi) <= 1e-7) { - return phi; - } - } - return null; - } - - var names$15 = ["Albers_Conic_Equal_Area", "Albers", "aea"]; - var aea = { - init: init$14, - forward: forward$13, - inverse: inverse$13, - names: names$15, - phi1z: phi1z - }; - - /* - reference: - Wolfram Mathworld "Gnomonic Projection" - http://mathworld.wolfram.com/GnomonicProjection.html - Accessed: 12th November 2009 - */ - function init$15() { - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.sin_p14 = Math.sin(this.lat0); - this.cos_p14 = Math.cos(this.lat0); - // Approximation for projecting points to the horizon (infinity) - this.infinity_dist = 1000 * this.a; - this.rc = 1; - } - - /* Gnomonic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$14(p) { - var sinphi, cosphi; /* sin and cos value */ - var dlon; /* delta longitude value */ - var coslon; /* cos of longitude */ - var ksp; /* scale factor */ - var g; - var x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - dlon = adjust_lon(lon - this.long0); - - sinphi = Math.sin(lat); - cosphi = Math.cos(lat); - - coslon = Math.cos(dlon); - g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon; - ksp = 1; - if ((g > 0) || (Math.abs(g) <= EPSLN)) { - x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g; - y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g; - } - else { - - // Point is in the opposing hemisphere and is unprojectable - // We still need to return a reasonable point, so we project - // to infinity, on a bearing - // equivalent to the northern hemisphere equivalent - // This is a reasonable approximation for short shapes and lines that - // straddle the horizon. - - x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon); - y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon); - - } - p.x = x; - p.y = y; - return p; - } - - function inverse$14(p) { - var rh; /* Rho */ - var sinc, cosc; - var c; - var lon, lat; - - /* Inverse equations - -----------------*/ - p.x = (p.x - this.x0) / this.a; - p.y = (p.y - this.y0) / this.a; - - p.x /= this.k0; - p.y /= this.k0; - - if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) { - c = Math.atan2(rh, this.rc); - sinc = Math.sin(c); - cosc = Math.cos(c); - - lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh); - lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc); - lon = adjust_lon(this.long0 + lon); - } - else { - lat = this.phic0; - lon = 0; - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$16 = ["gnom"]; - var gnom = { - init: init$15, - forward: forward$14, - inverse: inverse$14, - names: names$16 - }; - - var iqsfnz = function(eccent, q) { - var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent)); - if (Math.abs(Math.abs(q) - temp) < 1.0E-6) { - if (q < 0) { - return (-1 * HALF_PI); - } - else { - return HALF_PI; - } - } - //var phi = 0.5* q/(1-eccent*eccent); - var phi = Math.asin(0.5 * q); - var dphi; - var sin_phi; - var cos_phi; - var con; - for (var i = 0; i < 30; i++) { - sin_phi = Math.sin(phi); - cos_phi = Math.cos(phi); - con = eccent * sin_phi; - dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con))); - phi += dphi; - if (Math.abs(dphi) <= 0.0000000001) { - return phi; - } - } - - //console.log("IQSFN-CONV:Latitude failed to converge after 30 iterations"); - return NaN; - }; - - /* - reference: - "Cartographic Projection Procedures for the UNIX Environment- - A User's Manual" by Gerald I. Evenden, - USGS Open File Report 90-284and Release 4 Interim Reports (2003) - */ - function init$16() { - //no-op - if (!this.sphere) { - this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)); - } - } - - /* Cylindrical Equal Area forward equations--mapping lat,long to x,y - ------------------------------------------------------------*/ - function forward$15(p) { - var lon = p.x; - var lat = p.y; - var x, y; - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - if (this.sphere) { - x = this.x0 + this.a * dlon * Math.cos(this.lat_ts); - y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts); - } - else { - var qs = qsfnz(this.e, Math.sin(lat)); - x = this.x0 + this.a * this.k0 * dlon; - y = this.y0 + this.a * qs * 0.5 / this.k0; - } - - p.x = x; - p.y = y; - return p; - } - - /* Cylindrical Equal Area inverse equations--mapping x,y to lat/long - ------------------------------------------------------------*/ - function inverse$15(p) { - p.x -= this.x0; - p.y -= this.y0; - var lon, lat; - - if (this.sphere) { - lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts)); - lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts)); - } - else { - lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a); - lon = adjust_lon(this.long0 + p.x / (this.a * this.k0)); - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$17 = ["cea"]; - var cea = { - init: init$16, - forward: forward$15, - inverse: inverse$15, - names: names$17 - }; - - function init$17() { - - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - this.lat0 = this.lat0 || 0; - this.long0 = this.long0 || 0; - this.lat_ts = this.lat_ts || 0; - this.title = this.title || "Equidistant Cylindrical (Plate Carre)"; - - this.rc = Math.cos(this.lat_ts); - } - - // forward equations--mapping lat,long to x,y - // ----------------------------------------------------------------- - function forward$16(p) { - - var lon = p.x; - var lat = p.y; - - var dlon = adjust_lon(lon - this.long0); - var dlat = adjust_lat(lat - this.lat0); - p.x = this.x0 + (this.a * dlon * this.rc); - p.y = this.y0 + (this.a * dlat); - return p; - } - - // inverse equations--mapping x,y to lat/long - // ----------------------------------------------------------------- - function inverse$16(p) { - - var x = p.x; - var y = p.y; - - p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc))); - p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a))); - return p; - } - - var names$18 = ["Equirectangular", "Equidistant_Cylindrical", "eqc"]; - var eqc = { - init: init$17, - forward: forward$16, - inverse: inverse$16, - names: names$18 - }; - - var MAX_ITER$2 = 20; - - function init$18() { - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles - this.e = Math.sqrt(this.es); - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas - } - - /* Polyconic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$17(p) { - var lon = p.x; - var lat = p.y; - var x, y, el; - var dlon = adjust_lon(lon - this.long0); - el = dlon * Math.sin(lat); - if (this.sphere) { - if (Math.abs(lat) <= EPSLN) { - x = this.a * dlon; - y = -1 * this.a * this.lat0; - } - else { - x = this.a * Math.sin(el) / Math.tan(lat); - y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat)); - } - } - else { - if (Math.abs(lat) <= EPSLN) { - x = this.a * dlon; - y = -1 * this.ml0; - } - else { - var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat); - x = nl * Math.sin(el); - y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el)); - } - - } - p.x = x + this.x0; - p.y = y + this.y0; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$17(p) { - var lon, lat, x, y, i; - var al, bl; - var phi, dphi; - x = p.x - this.x0; - y = p.y - this.y0; - - if (this.sphere) { - if (Math.abs(y + this.a * this.lat0) <= EPSLN) { - lon = adjust_lon(x / this.a + this.long0); - lat = 0; - } - else { - al = this.lat0 + y / this.a; - bl = x * x / this.a / this.a + al * al; - phi = al; - var tanphi; - for (i = MAX_ITER$2; i; --i) { - tanphi = Math.tan(phi); - dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1); - phi += dphi; - if (Math.abs(dphi) <= EPSLN) { - lat = phi; - break; - } - } - lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat)); - } - } - else { - if (Math.abs(y + this.ml0) <= EPSLN) { - lat = 0; - lon = adjust_lon(this.long0 + x / this.a); - } - else { - - al = (this.ml0 + y) / this.a; - bl = x * x / this.a / this.a + al * al; - phi = al; - var cl, mln, mlnp, ma; - var con; - for (i = MAX_ITER$2; i; --i) { - con = this.e * Math.sin(phi); - cl = Math.sqrt(1 - con * con) * Math.tan(phi); - mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi); - mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi); - ma = mln / this.a; - dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp); - phi -= dphi; - if (Math.abs(dphi) <= EPSLN) { - lat = phi; - break; - } - } - - //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0); - cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat); - lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat)); - } - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$19 = ["Polyconic", "poly"]; - var poly = { - init: init$18, - forward: forward$17, - inverse: inverse$17, - names: names$19 - }; - - /* - reference - Department of Land and Survey Technical Circular 1973/32 - http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf - OSG Technical Report 4.1 - http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf - */ - - /** - * iterations: Number of iterations to refine inverse transform. - * 0 -> km accuracy - * 1 -> m accuracy -- suitable for most mapping applications - * 2 -> mm accuracy - */ - - - function init$19() { - this.A = []; - this.A[1] = 0.6399175073; - this.A[2] = -0.1358797613; - this.A[3] = 0.063294409; - this.A[4] = -0.02526853; - this.A[5] = 0.0117879; - this.A[6] = -0.0055161; - this.A[7] = 0.0026906; - this.A[8] = -0.001333; - this.A[9] = 0.00067; - this.A[10] = -0.00034; - - this.B_re = []; - this.B_im = []; - this.B_re[1] = 0.7557853228; - this.B_im[1] = 0; - this.B_re[2] = 0.249204646; - this.B_im[2] = 0.003371507; - this.B_re[3] = -0.001541739; - this.B_im[3] = 0.041058560; - this.B_re[4] = -0.10162907; - this.B_im[4] = 0.01727609; - this.B_re[5] = -0.26623489; - this.B_im[5] = -0.36249218; - this.B_re[6] = -0.6870983; - this.B_im[6] = -1.1651967; - - this.C_re = []; - this.C_im = []; - this.C_re[1] = 1.3231270439; - this.C_im[1] = 0; - this.C_re[2] = -0.577245789; - this.C_im[2] = -0.007809598; - this.C_re[3] = 0.508307513; - this.C_im[3] = -0.112208952; - this.C_re[4] = -0.15094762; - this.C_im[4] = 0.18200602; - this.C_re[5] = 1.01418179; - this.C_im[5] = 1.64497696; - this.C_re[6] = 1.9660549; - this.C_im[6] = 2.5127645; - - this.D = []; - this.D[1] = 1.5627014243; - this.D[2] = 0.5185406398; - this.D[3] = -0.03333098; - this.D[4] = -0.1052906; - this.D[5] = -0.0368594; - this.D[6] = 0.007317; - this.D[7] = 0.01220; - this.D[8] = 0.00394; - this.D[9] = -0.0013; - } - - /** - New Zealand Map Grid Forward - long/lat to x/y - long/lat in radians - */ - function forward$18(p) { - var n; - var lon = p.x; - var lat = p.y; - - var delta_lat = lat - this.lat0; - var delta_lon = lon - this.long0; - - // 1. Calculate d_phi and d_psi ... // and d_lambda - // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians. - var d_phi = delta_lat / SEC_TO_RAD * 1E-5; - var d_lambda = delta_lon; - var d_phi_n = 1; // d_phi^0 - - var d_psi = 0; - for (n = 1; n <= 10; n++) { - d_phi_n = d_phi_n * d_phi; - d_psi = d_psi + this.A[n] * d_phi_n; - } - - // 2. Calculate theta - var th_re = d_psi; - var th_im = d_lambda; - - // 3. Calculate z - var th_n_re = 1; - var th_n_im = 0; // theta^0 - var th_n_re1; - var th_n_im1; - - var z_re = 0; - var z_im = 0; - for (n = 1; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im; - z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im; - } - - // 4. Calculate easting and northing - p.x = (z_im * this.a) + this.x0; - p.y = (z_re * this.a) + this.y0; - - return p; - } - - /** - New Zealand Map Grid Inverse - x/y to long/lat - */ - function inverse$18(p) { - var n; - var x = p.x; - var y = p.y; - - var delta_x = x - this.x0; - var delta_y = y - this.y0; - - // 1. Calculate z - var z_re = delta_y / this.a; - var z_im = delta_x / this.a; - - // 2a. Calculate theta - first approximation gives km accuracy - var z_n_re = 1; - var z_n_im = 0; // z^0 - var z_n_re1; - var z_n_im1; - - var th_re = 0; - var th_im = 0; - for (n = 1; n <= 6; n++) { - z_n_re1 = z_n_re * z_re - z_n_im * z_im; - z_n_im1 = z_n_im * z_re + z_n_re * z_im; - z_n_re = z_n_re1; - z_n_im = z_n_im1; - th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im; - th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im; - } - - // 2b. Iterate to refine the accuracy of the calculation - // 0 iterations gives km accuracy - // 1 iteration gives m accuracy -- good enough for most mapping applications - // 2 iterations bives mm accuracy - for (var i = 0; i < this.iterations; i++) { - var th_n_re = th_re; - var th_n_im = th_im; - var th_n_re1; - var th_n_im1; - - var num_re = z_re; - var num_im = z_im; - for (n = 2; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im); - num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im); - } - - th_n_re = 1; - th_n_im = 0; - var den_re = this.B_re[1]; - var den_im = this.B_im[1]; - for (n = 2; n <= 6; n++) { - th_n_re1 = th_n_re * th_re - th_n_im * th_im; - th_n_im1 = th_n_im * th_re + th_n_re * th_im; - th_n_re = th_n_re1; - th_n_im = th_n_im1; - den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im); - den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im); - } - - // Complex division - var den2 = den_re * den_re + den_im * den_im; - th_re = (num_re * den_re + num_im * den_im) / den2; - th_im = (num_im * den_re - num_re * den_im) / den2; - } - - // 3. Calculate d_phi ... // and d_lambda - var d_psi = th_re; - var d_lambda = th_im; - var d_psi_n = 1; // d_psi^0 - - var d_phi = 0; - for (n = 1; n <= 9; n++) { - d_psi_n = d_psi_n * d_psi; - d_phi = d_phi + this.D[n] * d_psi_n; - } - - // 4. Calculate latitude and longitude - // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians. - var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5); - var lon = this.long0 + d_lambda; - - p.x = lon; - p.y = lat; - - return p; - } - - var names$20 = ["New_Zealand_Map_Grid", "nzmg"]; - var nzmg = { - init: init$19, - forward: forward$18, - inverse: inverse$18, - names: names$20 - }; - - /* - reference - "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder, - The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355. - */ - - - /* Initialize the Miller Cylindrical projection - -------------------------------------------*/ - function init$20() { - //no-op - } - - /* Miller Cylindrical forward equations--mapping lat,long to x,y - ------------------------------------------------------------*/ - function forward$19(p) { - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - var x = this.x0 + this.a * dlon; - var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25; - - p.x = x; - p.y = y; - return p; - } - - /* Miller Cylindrical inverse equations--mapping x,y to lat/long - ------------------------------------------------------------*/ - function inverse$19(p) { - p.x -= this.x0; - p.y -= this.y0; - - var lon = adjust_lon(this.long0 + p.x / this.a); - var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4); - - p.x = lon; - p.y = lat; - return p; - } - - var names$21 = ["Miller_Cylindrical", "mill"]; - var mill = { - init: init$20, - forward: forward$19, - inverse: inverse$19, - names: names$21 - }; - - var MAX_ITER$3 = 20; - function init$21() { - /* Place parameters in static storage for common use - -------------------------------------------------*/ - - - if (!this.sphere) { - this.en = pj_enfn(this.es); - } - else { - this.n = 1; - this.m = 0; - this.es = 0; - this.C_y = Math.sqrt((this.m + 1) / this.n); - this.C_x = this.C_y / (this.m + 1); - } - - } - - /* Sinusoidal forward equations--mapping lat,long to x,y - -----------------------------------------------------*/ - function forward$20(p) { - var x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - lon = adjust_lon(lon - this.long0); - - if (this.sphere) { - if (!this.m) { - lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat; - } - else { - var k = this.n * Math.sin(lat); - for (var i = MAX_ITER$3; i; --i) { - var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat)); - lat -= V; - if (Math.abs(V) < EPSLN) { - break; - } - } - } - x = this.a * this.C_x * lon * (this.m + Math.cos(lat)); - y = this.a * this.C_y * lat; - - } - else { - - var s = Math.sin(lat); - var c = Math.cos(lat); - y = this.a * pj_mlfn(lat, s, c, this.en); - x = this.a * lon * c / Math.sqrt(1 - this.es * s * s); - } - - p.x = x; - p.y = y; - return p; - } - - function inverse$20(p) { - var lat, temp, lon, s; - - p.x -= this.x0; - lon = p.x / this.a; - p.y -= this.y0; - lat = p.y / this.a; - - if (this.sphere) { - lat /= this.C_y; - lon = lon / (this.C_x * (this.m + Math.cos(lat))); - if (this.m) { - lat = asinz((this.m * lat + Math.sin(lat)) / this.n); - } - else if (this.n !== 1) { - lat = asinz(Math.sin(lat) / this.n); - } - lon = adjust_lon(lon + this.long0); - lat = adjust_lat(lat); - } - else { - lat = pj_inv_mlfn(p.y / this.a, this.es, this.en); - s = Math.abs(lat); - if (s < HALF_PI) { - s = Math.sin(lat); - temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat)); - //temp = this.long0 + p.x / (this.a * Math.cos(lat)); - lon = adjust_lon(temp); - } - else if ((s - EPSLN) < HALF_PI) { - lon = this.long0; - } - } - p.x = lon; - p.y = lat; - return p; - } - - var names$22 = ["Sinusoidal", "sinu"]; - var sinu = { - init: init$21, - forward: forward$20, - inverse: inverse$20, - names: names$22 - }; - - function init$22() {} - /* Mollweide forward equations--mapping lat,long to x,y - ----------------------------------------------------*/ - function forward$21(p) { - - /* Forward equations - -----------------*/ - var lon = p.x; - var lat = p.y; - - var delta_lon = adjust_lon(lon - this.long0); - var theta = lat; - var con = Math.PI * Math.sin(lat); - - /* Iterate using the Newton-Raphson method to find theta - -----------------------------------------------------*/ - while (true) { - var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta)); - theta += delta_theta; - if (Math.abs(delta_theta) < EPSLN) { - break; - } - } - theta /= 2; - - /* If the latitude is 90 deg, force the x coordinate to be "0 + false easting" - this is done here because of precision problems with "cos(theta)" - --------------------------------------------------------------------------*/ - if (Math.PI / 2 - Math.abs(lat) < EPSLN) { - delta_lon = 0; - } - var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0; - var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0; - - p.x = x; - p.y = y; - return p; - } - - function inverse$21(p) { - var theta; - var arg; - - /* Inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - arg = p.y / (1.4142135623731 * this.a); - - /* Because of division by zero problems, 'arg' can not be 1. Therefore - a number very close to one is used instead. - -------------------------------------------------------------------*/ - if (Math.abs(arg) > 0.999999999999) { - arg = 0.999999999999; - } - theta = Math.asin(arg); - var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta)))); - if (lon < (-Math.PI)) { - lon = -Math.PI; - } - if (lon > Math.PI) { - lon = Math.PI; - } - arg = (2 * theta + Math.sin(2 * theta)) / Math.PI; - if (Math.abs(arg) > 1) { - arg = 1; - } - var lat = Math.asin(arg); - - p.x = lon; - p.y = lat; - return p; - } - - var names$23 = ["Mollweide", "moll"]; - var moll = { - init: init$22, - forward: forward$21, - inverse: inverse$21, - names: names$23 - }; - - function init$23() { - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - // Standard Parallels cannot be equal and on opposite sides of the equator - if (Math.abs(this.lat1 + this.lat2) < EPSLN) { - return; - } - this.lat2 = this.lat2 || this.lat1; - this.temp = this.b / this.a; - this.es = 1 - Math.pow(this.temp, 2); - this.e = Math.sqrt(this.es); - this.e0 = e0fn(this.es); - this.e1 = e1fn(this.es); - this.e2 = e2fn(this.es); - this.e3 = e3fn(this.es); - - this.sinphi = Math.sin(this.lat1); - this.cosphi = Math.cos(this.lat1); - - this.ms1 = msfnz(this.e, this.sinphi, this.cosphi); - this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1); - - if (Math.abs(this.lat1 - this.lat2) < EPSLN) { - this.ns = this.sinphi; - } - else { - this.sinphi = Math.sin(this.lat2); - this.cosphi = Math.cos(this.lat2); - this.ms2 = msfnz(this.e, this.sinphi, this.cosphi); - this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2); - this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1); - } - this.g = this.ml1 + this.ms1 / this.ns; - this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); - this.rh = this.a * (this.g - this.ml0); - } - - /* Equidistant Conic forward equations--mapping lat,long to x,y - -----------------------------------------------------------*/ - function forward$22(p) { - var lon = p.x; - var lat = p.y; - var rh1; - - /* Forward equations - -----------------*/ - if (this.sphere) { - rh1 = this.a * (this.g - lat); - } - else { - var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat); - rh1 = this.a * (this.g - ml); - } - var theta = this.ns * adjust_lon(lon - this.long0); - var x = this.x0 + rh1 * Math.sin(theta); - var y = this.y0 + this.rh - rh1 * Math.cos(theta); - p.x = x; - p.y = y; - return p; - } - - /* Inverse equations - -----------------*/ - function inverse$22(p) { - p.x -= this.x0; - p.y = this.rh - p.y + this.y0; - var con, rh1, lat, lon; - if (this.ns >= 0) { - rh1 = Math.sqrt(p.x * p.x + p.y * p.y); - con = 1; - } - else { - rh1 = -Math.sqrt(p.x * p.x + p.y * p.y); - con = -1; - } - var theta = 0; - if (rh1 !== 0) { - theta = Math.atan2(con * p.x, con * p.y); - } - - if (this.sphere) { - lon = adjust_lon(this.long0 + theta / this.ns); - lat = adjust_lat(this.g - rh1 / this.a); - p.x = lon; - p.y = lat; - return p; - } - else { - var ml = this.g - rh1 / this.a; - lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3); - lon = adjust_lon(this.long0 + theta / this.ns); - p.x = lon; - p.y = lat; - return p; - } - - } - - var names$24 = ["Equidistant_Conic", "eqdc"]; - var eqdc = { - init: init$23, - forward: forward$22, - inverse: inverse$22, - names: names$24 - }; - - /* Initialize the Van Der Grinten projection - ----------------------------------------*/ - function init$24() { - //this.R = 6370997; //Radius of earth - this.R = this.a; - } - - function forward$23(p) { - - var lon = p.x; - var lat = p.y; - - /* Forward equations - -----------------*/ - var dlon = adjust_lon(lon - this.long0); - var x, y; - - if (Math.abs(lat) <= EPSLN) { - x = this.x0 + this.R * dlon; - y = this.y0; - } - var theta = asinz(2 * Math.abs(lat / Math.PI)); - if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) { - x = this.x0; - if (lat >= 0) { - y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta); - } - else { - y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta); - } - // return(OK); - } - var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI)); - var asq = al * al; - var sinth = Math.sin(theta); - var costh = Math.cos(theta); - - var g = costh / (sinth + costh - 1); - var gsq = g * g; - var m = g * (2 / sinth - 1); - var msq = m * m; - var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq); - if (dlon < 0) { - con = -con; - } - x = this.x0 + con; - //con = Math.abs(con / (Math.PI * this.R)); - var q = asq + g; - con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq); - if (lat >= 0) { - //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con); - y = this.y0 + con; - } - else { - //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con); - y = this.y0 - con; - } - p.x = x; - p.y = y; - return p; - } - - /* Van Der Grinten inverse equations--mapping x,y to lat/long - ---------------------------------------------------------*/ - function inverse$23(p) { - var lon, lat; - var xx, yy, xys, c1, c2, c3; - var a1; - var m1; - var con; - var th1; - var d; - - /* inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - con = Math.PI * this.R; - xx = p.x / con; - yy = p.y / con; - xys = xx * xx + yy * yy; - c1 = -Math.abs(yy) * (1 + xys); - c2 = c1 - 2 * yy * yy + xx * xx; - c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys; - d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27; - a1 = (c1 - c2 * c2 / 3 / c3) / c3; - m1 = 2 * Math.sqrt(-a1 / 3); - con = ((3 * d) / a1) / m1; - if (Math.abs(con) > 1) { - if (con >= 0) { - con = 1; - } - else { - con = -1; - } - } - th1 = Math.acos(con) / 3; - if (p.y >= 0) { - lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI; - } - else { - lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI; - } - - if (Math.abs(xx) < EPSLN) { - lon = this.long0; - } - else { - lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx); - } - - p.x = lon; - p.y = lat; - return p; - } - - var names$25 = ["Van_der_Grinten_I", "VanDerGrinten", "vandg"]; - var vandg = { - init: init$24, - forward: forward$23, - inverse: inverse$23, - names: names$25 - }; - - function init$25() { - this.sin_p12 = Math.sin(this.lat0); - this.cos_p12 = Math.cos(this.lat0); - } - - function forward$24(p) { - var lon = p.x; - var lat = p.y; - var sinphi = Math.sin(p.y); - var cosphi = Math.cos(p.y); - var dlon = adjust_lon(lon - this.long0); - var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5; - if (this.sphere) { - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North Pole case - p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon); - p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon); - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South Pole case - p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon); - p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon); - return p; - } - else { - //default case - cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon); - c = Math.acos(cos_c); - kp = c / Math.sin(c); - p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon); - p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon)); - return p; - } - } - else { - e0 = e0fn(this.es); - e1 = e1fn(this.es); - e2 = e2fn(this.es); - e3 = e3fn(this.es); - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North Pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - Ml = this.a * mlfn(e0, e1, e2, e3, lat); - p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon); - p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon); - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South Pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - Ml = this.a * mlfn(e0, e1, e2, e3, lat); - p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon); - p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon); - return p; - } - else { - //Default case - tanphi = sinphi / cosphi; - Nl1 = gN(this.a, this.e, this.sin_p12); - Nl = gN(this.a, this.e, sinphi); - psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi)); - Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon)); - if (Az === 0) { - s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi)); - } - else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) { - s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi)); - } - else { - s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az)); - } - G = this.e * this.sin_p12 / Math.sqrt(1 - this.es); - H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es); - GH = G * H; - Hs = H * H; - s2 = s * s; - s3 = s2 * s; - s4 = s3 * s; - s5 = s4 * s; - c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH); - p.x = this.x0 + c * Math.sin(Az); - p.y = this.y0 + c * Math.cos(Az); - return p; - } - } - - - } - - function inverse$24(p) { - p.x -= this.x0; - p.y -= this.y0; - var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F; - if (this.sphere) { - rh = Math.sqrt(p.x * p.x + p.y * p.y); - if (rh > (2 * HALF_PI * this.a)) { - return; - } - z = rh / this.a; - - sinz = Math.sin(z); - cosz = Math.cos(z); - - lon = this.long0; - if (Math.abs(rh) <= EPSLN) { - lat = this.lat0; - } - else { - lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh); - con = Math.abs(this.lat0) - HALF_PI; - if (Math.abs(con) <= EPSLN) { - if (this.lat0 >= 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y)); - } - else { - lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y)); - } - } - else { - /*con = cosz - this.sin_p12 * Math.sin(lat); - if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) { - //no-op, just keep the lon value as is - } else { - var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh)); - lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh))); - }*/ - lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz)); - } - } - - p.x = lon; - p.y = lat; - return p; - } - else { - e0 = e0fn(this.es); - e1 = e1fn(this.es); - e2 = e2fn(this.es); - e3 = e3fn(this.es); - if (Math.abs(this.sin_p12 - 1) <= EPSLN) { - //North pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - rh = Math.sqrt(p.x * p.x + p.y * p.y); - M = Mlp - rh; - lat = imlfn(M / this.a, e0, e1, e2, e3); - lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y)); - p.x = lon; - p.y = lat; - return p; - } - else if (Math.abs(this.sin_p12 + 1) <= EPSLN) { - //South pole case - Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI); - rh = Math.sqrt(p.x * p.x + p.y * p.y); - M = rh - Mlp; - - lat = imlfn(M / this.a, e0, e1, e2, e3); - lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y)); - p.x = lon; - p.y = lat; - return p; - } - else { - //default case - rh = Math.sqrt(p.x * p.x + p.y * p.y); - Az = Math.atan2(p.x, p.y); - N1 = gN(this.a, this.e, this.sin_p12); - cosAz = Math.cos(Az); - tmp = this.e * this.cos_p12 * cosAz; - A = -tmp * tmp / (1 - this.es); - B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es); - D = rh / N1; - Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24; - F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6; - psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz); - lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi))); - lat = Math.atan((1 - this.es * F * this.sin_p12 / Math.sin(psi)) * Math.tan(psi) / (1 - this.es)); - p.x = lon; - p.y = lat; - return p; - } - } - - } - - var names$26 = ["Azimuthal_Equidistant", "aeqd"]; - var aeqd = { - init: init$25, - forward: forward$24, - inverse: inverse$24, - names: names$26 - }; - - function init$26() { - //double temp; /* temporary variable */ - - /* Place parameters in static storage for common use - -------------------------------------------------*/ - this.sin_p14 = Math.sin(this.lat0); - this.cos_p14 = Math.cos(this.lat0); - } - - /* Orthographic forward equations--mapping lat,long to x,y - ---------------------------------------------------*/ - function forward$25(p) { - var sinphi, cosphi; /* sin and cos value */ - var dlon; /* delta longitude value */ - var coslon; /* cos of longitude */ - var ksp; /* scale factor */ - var g, x, y; - var lon = p.x; - var lat = p.y; - /* Forward equations - -----------------*/ - dlon = adjust_lon(lon - this.long0); - - sinphi = Math.sin(lat); - cosphi = Math.cos(lat); - - coslon = Math.cos(dlon); - g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon; - ksp = 1; - if ((g > 0) || (Math.abs(g) <= EPSLN)) { - x = this.a * ksp * cosphi * Math.sin(dlon); - y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon); - } - p.x = x; - p.y = y; - return p; - } - - function inverse$25(p) { - var rh; /* height above ellipsoid */ - var z; /* angle */ - var sinz, cosz; /* sin of z and cos of z */ - var con; - var lon, lat; - /* Inverse equations - -----------------*/ - p.x -= this.x0; - p.y -= this.y0; - rh = Math.sqrt(p.x * p.x + p.y * p.y); - z = asinz(rh / this.a); - - sinz = Math.sin(z); - cosz = Math.cos(z); - - lon = this.long0; - if (Math.abs(rh) <= EPSLN) { - lat = this.lat0; - p.x = lon; - p.y = lat; - return p; - } - lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh); - con = Math.abs(this.lat0) - HALF_PI; - if (Math.abs(con) <= EPSLN) { - if (this.lat0 >= 0) { - lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y)); - } - else { - lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y)); - } - p.x = lon; - p.y = lat; - return p; - } - lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz)); - p.x = lon; - p.y = lat; - return p; - } - - var names$27 = ["ortho"]; - var ortho = { - init: init$26, - forward: forward$25, - inverse: inverse$25, - names: names$27 - }; - - // QSC projection rewritten from the original PROJ4 - // https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c - - /* constants */ - var FACE_ENUM = { - FRONT: 1, - RIGHT: 2, - BACK: 3, - LEFT: 4, - TOP: 5, - BOTTOM: 6 - }; - - var AREA_ENUM = { - AREA_0: 1, - AREA_1: 2, - AREA_2: 3, - AREA_3: 4 - }; - - function init$27() { - - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - this.lat0 = this.lat0 || 0; - this.long0 = this.long0 || 0; - this.lat_ts = this.lat_ts || 0; - this.title = this.title || "Quadrilateralized Spherical Cube"; - - /* Determine the cube face from the center of projection. */ - if (this.lat0 >= HALF_PI - FORTPI / 2.0) { - this.face = FACE_ENUM.TOP; - } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) { - this.face = FACE_ENUM.BOTTOM; - } else if (Math.abs(this.long0) <= FORTPI) { - this.face = FACE_ENUM.FRONT; - } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) { - this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT; - } else { - this.face = FACE_ENUM.BACK; - } - - /* Fill in useful values for the ellipsoid <-> sphere shift - * described in [LK12]. */ - if (this.es !== 0) { - this.one_minus_f = 1 - (this.a - this.b) / this.a; - this.one_minus_f_squared = this.one_minus_f * this.one_minus_f; - } - } - - // QSC forward equations--mapping lat,long to x,y - // ----------------------------------------------------------------- - function forward$26(p) { - var xy = {x: 0, y: 0}; - var lat, lon; - var theta, phi; - var t, mu; - /* nu; */ - var area = {value: 0}; - - // move lon according to projection's lon - p.x -= this.long0; - - /* Convert the geodetic latitude to a geocentric latitude. - * This corresponds to the shift from the ellipsoid to the sphere - * described in [LK12]. */ - if (this.es !== 0) {//if (P->es != 0) { - lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y)); - } else { - lat = p.y; - } - - /* Convert the input lat, lon into theta, phi as used by QSC. - * This depends on the cube face and the area on it. - * For the top and bottom face, we can compute theta and phi - * directly from phi, lam. For the other faces, we must use - * unit sphere cartesian coordinates as an intermediate step. */ - lon = p.x; //lon = lp.lam; - if (this.face === FACE_ENUM.TOP) { - phi = HALF_PI - lat; - if (lon >= FORTPI && lon <= HALF_PI + FORTPI) { - area.value = AREA_ENUM.AREA_0; - theta = lon - HALF_PI; - } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) { - area.value = AREA_ENUM.AREA_1; - theta = (lon > 0.0 ? lon - SPI : lon + SPI); - } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) { - area.value = AREA_ENUM.AREA_2; - theta = lon + HALF_PI; - } else { - area.value = AREA_ENUM.AREA_3; - theta = lon; - } - } else if (this.face === FACE_ENUM.BOTTOM) { - phi = HALF_PI + lat; - if (lon >= FORTPI && lon <= HALF_PI + FORTPI) { - area.value = AREA_ENUM.AREA_0; - theta = -lon + HALF_PI; - } else if (lon < FORTPI && lon >= -FORTPI) { - area.value = AREA_ENUM.AREA_1; - theta = -lon; - } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) { - area.value = AREA_ENUM.AREA_2; - theta = -lon - HALF_PI; - } else { - area.value = AREA_ENUM.AREA_3; - theta = (lon > 0.0 ? -lon + SPI : -lon - SPI); - } - } else { - var q, r, s; - var sinlat, coslat; - var sinlon, coslon; - - if (this.face === FACE_ENUM.RIGHT) { - lon = qsc_shift_lon_origin(lon, +HALF_PI); - } else if (this.face === FACE_ENUM.BACK) { - lon = qsc_shift_lon_origin(lon, +SPI); - } else if (this.face === FACE_ENUM.LEFT) { - lon = qsc_shift_lon_origin(lon, -HALF_PI); - } - sinlat = Math.sin(lat); - coslat = Math.cos(lat); - sinlon = Math.sin(lon); - coslon = Math.cos(lon); - q = coslat * coslon; - r = coslat * sinlon; - s = sinlat; - - if (this.face === FACE_ENUM.FRONT) { - phi = Math.acos(q); - theta = qsc_fwd_equat_face_theta(phi, s, r, area); - } else if (this.face === FACE_ENUM.RIGHT) { - phi = Math.acos(r); - theta = qsc_fwd_equat_face_theta(phi, s, -q, area); - } else if (this.face === FACE_ENUM.BACK) { - phi = Math.acos(-q); - theta = qsc_fwd_equat_face_theta(phi, s, -r, area); - } else if (this.face === FACE_ENUM.LEFT) { - phi = Math.acos(-r); - theta = qsc_fwd_equat_face_theta(phi, s, q, area); - } else { - /* Impossible */ - phi = theta = 0; - area.value = AREA_ENUM.AREA_0; - } - } - - /* Compute mu and nu for the area of definition. - * For mu, see Eq. (3-21) in [OL76], but note the typos: - * compare with Eq. (3-14). For nu, see Eq. (3-38). */ - mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI)); - t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta))))); - - /* Apply the result to the real area. */ - if (area.value === AREA_ENUM.AREA_1) { - mu += HALF_PI; - } else if (area.value === AREA_ENUM.AREA_2) { - mu += SPI; - } else if (area.value === AREA_ENUM.AREA_3) { - mu += 1.5 * SPI; - } - - /* Now compute x, y from mu and nu */ - xy.x = t * Math.cos(mu); - xy.y = t * Math.sin(mu); - xy.x = xy.x * this.a + this.x0; - xy.y = xy.y * this.a + this.y0; - - p.x = xy.x; - p.y = xy.y; - return p; - } - - // QSC inverse equations--mapping x,y to lat/long - // ----------------------------------------------------------------- - function inverse$26(p) { - var lp = {lam: 0, phi: 0}; - var mu, nu, cosmu, tannu; - var tantheta, theta, cosphi, phi; - var t; - var area = {value: 0}; - - /* de-offset */ - p.x = (p.x - this.x0) / this.a; - p.y = (p.y - this.y0) / this.a; - - /* Convert the input x, y to the mu and nu angles as used by QSC. - * This depends on the area of the cube face. */ - nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y)); - mu = Math.atan2(p.y, p.x); - if (p.x >= 0.0 && p.x >= Math.abs(p.y)) { - area.value = AREA_ENUM.AREA_0; - } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) { - area.value = AREA_ENUM.AREA_1; - mu -= HALF_PI; - } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) { - area.value = AREA_ENUM.AREA_2; - mu = (mu < 0.0 ? mu + SPI : mu - SPI); - } else { - area.value = AREA_ENUM.AREA_3; - mu += HALF_PI; - } - - /* Compute phi and theta for the area of definition. - * The inverse projection is not described in the original paper, but some - * good hints can be found here (as of 2011-12-14): - * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302 - * (search for "Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>") */ - t = (SPI / 12) * Math.tan(mu); - tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2))); - theta = Math.atan(tantheta); - cosmu = Math.cos(mu); - tannu = Math.tan(nu); - cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta)))); - if (cosphi < -1) { - cosphi = -1; - } else if (cosphi > +1) { - cosphi = +1; - } - - /* Apply the result to the real area on the cube face. - * For the top and bottom face, we can compute phi and lam directly. - * For the other faces, we must use unit sphere cartesian coordinates - * as an intermediate step. */ - if (this.face === FACE_ENUM.TOP) { - phi = Math.acos(cosphi); - lp.phi = HALF_PI - phi; - if (area.value === AREA_ENUM.AREA_0) { - lp.lam = theta + HALF_PI; - } else if (area.value === AREA_ENUM.AREA_1) { - lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI); - } else if (area.value === AREA_ENUM.AREA_2) { - lp.lam = theta - HALF_PI; - } else /* area.value == AREA_ENUM.AREA_3 */ { - lp.lam = theta; - } - } else if (this.face === FACE_ENUM.BOTTOM) { - phi = Math.acos(cosphi); - lp.phi = phi - HALF_PI; - if (area.value === AREA_ENUM.AREA_0) { - lp.lam = -theta + HALF_PI; - } else if (area.value === AREA_ENUM.AREA_1) { - lp.lam = -theta; - } else if (area.value === AREA_ENUM.AREA_2) { - lp.lam = -theta - HALF_PI; - } else /* area.value == AREA_ENUM.AREA_3 */ { - lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI); - } - } else { - /* Compute phi and lam via cartesian unit sphere coordinates. */ - var q, r, s; - q = cosphi; - t = q * q; - if (t >= 1) { - s = 0; - } else { - s = Math.sqrt(1 - t) * Math.sin(theta); - } - t += s * s; - if (t >= 1) { - r = 0; - } else { - r = Math.sqrt(1 - t); - } - /* Rotate q,r,s into the correct area. */ - if (area.value === AREA_ENUM.AREA_1) { - t = r; - r = -s; - s = t; - } else if (area.value === AREA_ENUM.AREA_2) { - r = -r; - s = -s; - } else if (area.value === AREA_ENUM.AREA_3) { - t = r; - r = s; - s = -t; - } - /* Rotate q,r,s into the correct cube face. */ - if (this.face === FACE_ENUM.RIGHT) { - t = q; - q = -r; - r = t; - } else if (this.face === FACE_ENUM.BACK) { - q = -q; - r = -r; - } else if (this.face === FACE_ENUM.LEFT) { - t = q; - q = r; - r = -t; - } - /* Now compute phi and lam from the unit sphere coordinates. */ - lp.phi = Math.acos(-s) - HALF_PI; - lp.lam = Math.atan2(r, q); - if (this.face === FACE_ENUM.RIGHT) { - lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI); - } else if (this.face === FACE_ENUM.BACK) { - lp.lam = qsc_shift_lon_origin(lp.lam, -SPI); - } else if (this.face === FACE_ENUM.LEFT) { - lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI); - } - } - - /* Apply the shift from the sphere to the ellipsoid as described - * in [LK12]. */ - if (this.es !== 0) { - var invert_sign; - var tanphi, xa; - invert_sign = (lp.phi < 0 ? 1 : 0); - tanphi = Math.tan(lp.phi); - xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared); - lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa)); - if (invert_sign) { - lp.phi = -lp.phi; - } - } - - lp.lam += this.long0; - p.x = lp.lam; - p.y = lp.phi; - return p; - } - - /* Helper function for forward projection: compute the theta angle - * and determine the area number. */ - function qsc_fwd_equat_face_theta(phi, y, x, area) { - var theta; - if (phi < EPSLN) { - area.value = AREA_ENUM.AREA_0; - theta = 0.0; - } else { - theta = Math.atan2(y, x); - if (Math.abs(theta) <= FORTPI) { - area.value = AREA_ENUM.AREA_0; - } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) { - area.value = AREA_ENUM.AREA_1; - theta -= HALF_PI; - } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) { - area.value = AREA_ENUM.AREA_2; - theta = (theta >= 0.0 ? theta - SPI : theta + SPI); - } else { - area.value = AREA_ENUM.AREA_3; - theta += HALF_PI; - } - } - return theta; - } - - /* Helper function: shift the longitude. */ - function qsc_shift_lon_origin(lon, offset) { - var slon = lon + offset; - if (slon < -SPI) { - slon += TWO_PI; - } else if (slon > +SPI) { - slon -= TWO_PI; - } - return slon; - } - - var names$28 = ["Quadrilateralized Spherical Cube", "Quadrilateralized_Spherical_Cube", "qsc"]; - var qsc = { - init: init$27, - forward: forward$26, - inverse: inverse$26, - names: names$28 - }; - - // Robinson projection - // Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c - // Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039 - - var COEFS_X = [ - [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06], - [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06], - [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07], - [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06], - [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06], - [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08], - [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06], - [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06], - [0.9216, -0.00467746, -0.00010457, 4.81243e-06], - [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06], - [0.8679, -0.00609363, -0.000113898, 3.32484e-06], - [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07], - [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07], - [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06], - [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06], - [0.6732, -0.00986209, -0.000199569, 1.91974e-05], - [0.6213, -0.010418, 8.83923e-05, 6.24051e-06], - [0.5722, -0.00906601, 0.000182, 6.24051e-06], - [0.5322, -0.00677797, 0.000275608, 6.24051e-06] - ]; - - var COEFS_Y = [ - [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11], - [0.0620, 0.0124, -1.26793e-09, 4.22642e-10], - [0.1240, 0.0124, 5.07171e-09, -1.60604e-09], - [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09], - [0.2480, 0.0124002, 7.10039e-08, -2.24e-08], - [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08], - [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07], - [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07], - [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07], - [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07], - [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07], - [0.6769, 0.011713, -3.20223e-05, -5.16405e-07], - [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07], - [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06], - [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09], - [0.8936, 0.00969686, -6.4636e-05, -8.547e-06], - [0.9394, 0.00840947, -0.000192841, -4.2106e-06], - [0.9761, 0.00616527, -0.000256, -4.2106e-06], - [1.0000, 0.00328947, -0.000319159, -4.2106e-06] - ]; - - var FXC = 0.8487; - var FYC = 1.3523; - var C1 = R2D/5; // rad to 5-degree interval - var RC1 = 1/C1; - var NODES = 18; - - var poly3_val = function(coefs, x) { - return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3])); - }; - - var poly3_der = function(coefs, x) { - return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]); - }; - - function newton_rapshon(f_df, start, max_err, iters) { - var x = start; - for (; iters; --iters) { - var upd = f_df(x); - x -= upd; - if (Math.abs(upd) < max_err) { - break; - } - } - return x; - } - - function init$28() { - this.x0 = this.x0 || 0; - this.y0 = this.y0 || 0; - this.long0 = this.long0 || 0; - this.es = 0; - this.title = this.title || "Robinson"; - } - - function forward$27(ll) { - var lon = adjust_lon(ll.x - this.long0); - - var dphi = Math.abs(ll.y); - var i = Math.floor(dphi * C1); - if (i < 0) { - i = 0; - } else if (i >= NODES) { - i = NODES - 1; - } - dphi = R2D * (dphi - RC1 * i); - var xy = { - x: poly3_val(COEFS_X[i], dphi) * lon, - y: poly3_val(COEFS_Y[i], dphi) - }; - if (ll.y < 0) { - xy.y = -xy.y; - } - - xy.x = xy.x * this.a * FXC + this.x0; - xy.y = xy.y * this.a * FYC + this.y0; - return xy; - } - - function inverse$27(xy) { - var ll = { - x: (xy.x - this.x0) / (this.a * FXC), - y: Math.abs(xy.y - this.y0) / (this.a * FYC) - }; - - if (ll.y >= 1) { // pathologic case - ll.x /= COEFS_X[NODES][0]; - ll.y = xy.y < 0 ? -HALF_PI : HALF_PI; - } else { - // find table interval - var i = Math.floor(ll.y * NODES); - if (i < 0) { - i = 0; - } else if (i >= NODES) { - i = NODES - 1; - } - for (;;) { - if (COEFS_Y[i][0] > ll.y) { - --i; - } else if (COEFS_Y[i+1][0] <= ll.y) { - ++i; - } else { - break; - } - } - // linear interpolation in 5 degree interval - var coefs = COEFS_Y[i]; - var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]); - // find t so that poly3_val(coefs, t) = ll.y - t = newton_rapshon(function(x) { - return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x); - }, t, EPSLN, 100); - - ll.x /= poly3_val(COEFS_X[i], t); - ll.y = (5 * i + t) * D2R; - if (xy.y < 0) { - ll.y = -ll.y; - } - } - - ll.x = adjust_lon(ll.x + this.long0); - return ll; - } - - var names$29 = ["Robinson", "robin"]; - var robin = { - init: init$28, - forward: forward$27, - inverse: inverse$27, - names: names$29 - }; - - var includedProjections = function(proj4){ - proj4.Proj.projections.add(tmerc); - proj4.Proj.projections.add(etmerc); - proj4.Proj.projections.add(utm); - proj4.Proj.projections.add(sterea); - proj4.Proj.projections.add(stere); - proj4.Proj.projections.add(somerc); - proj4.Proj.projections.add(omerc); - proj4.Proj.projections.add(lcc); - proj4.Proj.projections.add(krovak); - proj4.Proj.projections.add(cass); - proj4.Proj.projections.add(laea); - proj4.Proj.projections.add(aea); - proj4.Proj.projections.add(gnom); - proj4.Proj.projections.add(cea); - proj4.Proj.projections.add(eqc); - proj4.Proj.projections.add(poly); - proj4.Proj.projections.add(nzmg); - proj4.Proj.projections.add(mill); - proj4.Proj.projections.add(sinu); - proj4.Proj.projections.add(moll); - proj4.Proj.projections.add(eqdc); - proj4.Proj.projections.add(vandg); - proj4.Proj.projections.add(aeqd); - proj4.Proj.projections.add(ortho); - proj4.Proj.projections.add(qsc); - proj4.Proj.projections.add(robin); - }; - - proj4$1.defaultDatum = 'WGS84'; //default datum - proj4$1.Proj = Projection; - proj4$1.WGS84 = new proj4$1.Proj('WGS84'); - proj4$1.Point = Point; - proj4$1.toPoint = toPoint; - proj4$1.defs = defs; - proj4$1.transform = transform; - proj4$1.mgrs = mgrs; - proj4$1.version = version; - includedProjections(proj4$1); - - return proj4$1; - -}))); - -},{}],317:[function(require,module,exports){ -'use strict' -var Buffer = require('buffer').Buffer -var inherits = require('inherits') -var HashBase = require('hash-base') - -var ARRAY16 = new Array(16) - -var zl = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 -] - -var zr = [ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 -] - -var sl = [ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 -] - -var sr = [ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 -] - -var hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e] -var hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000] - -function RIPEMD160 () { - HashBase.call(this, 64) - - // state - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 -} - -inherits(RIPEMD160, HashBase) - -RIPEMD160.prototype._update = function () { - var words = ARRAY16 - for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4) - - var al = this._a | 0 - var bl = this._b | 0 - var cl = this._c | 0 - var dl = this._d | 0 - var el = this._e | 0 - - var ar = this._a | 0 - var br = this._b | 0 - var cr = this._c | 0 - var dr = this._d | 0 - var er = this._e | 0 - - // computation - for (var i = 0; i < 80; i += 1) { - var tl - var tr - if (i < 16) { - tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]) - tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]) - } else if (i < 32) { - tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]) - tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]) - } else if (i < 48) { - tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]) - tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]) - } else if (i < 64) { - tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]) - tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]) - } else { // if (i<80) { - tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]) - tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]) - } - - al = el - el = dl - dl = rotl(cl, 10) - cl = bl - bl = tl - - ar = er - er = dr - dr = rotl(cr, 10) - cr = br - br = tr - } - - // update state - var t = (this._b + cl + dr) | 0 - this._b = (this._c + dl + er) | 0 - this._c = (this._d + el + ar) | 0 - this._d = (this._e + al + br) | 0 - this._e = (this._a + bl + cr) | 0 - this._a = t -} - -RIPEMD160.prototype._digest = function () { - // create padding and handle blocks - this._block[this._blockOffset++] = 0x80 - if (this._blockOffset > 56) { - this._block.fill(0, this._blockOffset, 64) - this._update() - this._blockOffset = 0 - } - - this._block.fill(0, this._blockOffset, 56) - this._block.writeUInt32LE(this._length[0], 56) - this._block.writeUInt32LE(this._length[1], 60) - this._update() - - // produce result - var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20) - buffer.writeInt32LE(this._a, 0) - buffer.writeInt32LE(this._b, 4) - buffer.writeInt32LE(this._c, 8) - buffer.writeInt32LE(this._d, 12) - buffer.writeInt32LE(this._e, 16) - return buffer -} - -function rotl (x, n) { - return (x << n) | (x >>> (32 - n)) -} - -function fn1 (a, b, c, d, e, m, k, s) { - return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0 -} - -function fn2 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0 -} - -function fn3 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0 -} - -function fn4 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0 -} - -function fn5 (a, b, c, d, e, m, k, s) { - return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0 -} - -module.exports = RIPEMD160 - -},{"buffer":182,"hash-base":227,"inherits":262}],318:[function(require,module,exports){ -/* eslint-disable node/no-deprecated-api */ -var buffer = require('buffer') -var Buffer = buffer.Buffer - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.prototype = Object.create(Buffer.prototype) - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) - } - return buf -} - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -} - -},{"buffer":182}],319:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer - -// prototype class for hash functions -function Hash (blockSize, finalSize) { - this._block = Buffer.alloc(blockSize) - this._finalSize = finalSize - this._blockSize = blockSize - this._len = 0 -} - -Hash.prototype.update = function (data, enc) { - if (typeof data === 'string') { - enc = enc || 'utf8' - data = Buffer.from(data, enc) - } - - var block = this._block - var blockSize = this._blockSize - var length = data.length - var accum = this._len - - for (var offset = 0; offset < length;) { - var assigned = accum % blockSize - var remainder = Math.min(length - offset, blockSize - assigned) - - for (var i = 0; i < remainder; i++) { - block[assigned + i] = data[offset + i] - } - - accum += remainder - offset += remainder - - if ((accum % blockSize) === 0) { - this._update(block) - } - } - - this._len += length - return this -} - -Hash.prototype.digest = function (enc) { - var rem = this._len % this._blockSize - - this._block[rem] = 0x80 - - // zero (rem + 1) trailing bits, where (rem + 1) is the smallest - // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize - this._block.fill(0, rem + 1) - - if (rem >= this._finalSize) { - this._update(this._block) - this._block.fill(0) - } - - var bits = this._len * 8 - - // uint32 - if (bits <= 0xffffffff) { - this._block.writeUInt32BE(bits, this._blockSize - 4) - - // uint64 - } else { - var lowBits = (bits & 0xffffffff) >>> 0 - var highBits = (bits - lowBits) / 0x100000000 - - this._block.writeUInt32BE(highBits, this._blockSize - 8) - this._block.writeUInt32BE(lowBits, this._blockSize - 4) - } - - this._update(this._block) - var hash = this._hash() - - return enc ? hash.toString(enc) : hash -} - -Hash.prototype._update = function () { - throw new Error('_update must be implemented by subclass') -} - -module.exports = Hash - -},{"safe-buffer":318}],320:[function(require,module,exports){ -var exports = module.exports = function SHA (algorithm) { - algorithm = algorithm.toLowerCase() - - var Algorithm = exports[algorithm] - if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') - - return new Algorithm() -} - -exports.sha = require('./sha') -exports.sha1 = require('./sha1') -exports.sha224 = require('./sha224') -exports.sha256 = require('./sha256') -exports.sha384 = require('./sha384') -exports.sha512 = require('./sha512') - -},{"./sha":321,"./sha1":322,"./sha224":323,"./sha256":324,"./sha384":325,"./sha512":326}],321:[function(require,module,exports){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined - * in FIPS PUB 180-1 - * This source code is derived from sha1.js of the same repository. - * The difference between SHA-0 and SHA-1 is just a bitwise rotate left - * operation was added. - */ - -var inherits = require('inherits') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] - -var W = new Array(80) - -function Sha () { - this.init() - this._w = W - - Hash.call(this, 64, 56) -} - -inherits(Sha, Hash) - -Sha.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 - - return this -} - -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} - -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} - -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} - -Sha.prototype._update = function (M) { - var W = this._w - - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] - - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 - - e = d - d = c - c = rotl30(b) - b = a - a = t - } - - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 -} - -Sha.prototype._hash = function () { - var H = Buffer.allocUnsafe(20) - - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) - - return H -} - -module.exports = Sha - -},{"./hash":319,"inherits":262,"safe-buffer":318}],322:[function(require,module,exports){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ - -var inherits = require('inherits') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] - -var W = new Array(80) - -function Sha1 () { - this.init() - this._w = W - - Hash.call(this, 64, 56) -} - -inherits(Sha1, Hash) - -Sha1.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 - - return this -} - -function rotl1 (num) { - return (num << 1) | (num >>> 31) -} - -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} - -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} - -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} - -Sha1.prototype._update = function (M) { - var W = this._w - - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) - - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 - - e = d - d = c - c = rotl30(b) - b = a - a = t - } - - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 -} - -Sha1.prototype._hash = function () { - var H = Buffer.allocUnsafe(20) - - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) - - return H -} - -module.exports = Sha1 - -},{"./hash":319,"inherits":262,"safe-buffer":318}],323:[function(require,module,exports){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ - -var inherits = require('inherits') -var Sha256 = require('./sha256') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var W = new Array(64) - -function Sha224 () { - this.init() - - this._w = W // new Array(64) - - Hash.call(this, 64, 56) -} - -inherits(Sha224, Sha256) - -Sha224.prototype.init = function () { - this._a = 0xc1059ed8 - this._b = 0x367cd507 - this._c = 0x3070dd17 - this._d = 0xf70e5939 - this._e = 0xffc00b31 - this._f = 0x68581511 - this._g = 0x64f98fa7 - this._h = 0xbefa4fa4 - - return this -} - -Sha224.prototype._hash = function () { - var H = Buffer.allocUnsafe(28) - - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) - - return H -} - -module.exports = Sha224 - -},{"./hash":319,"./sha256":324,"inherits":262,"safe-buffer":318}],324:[function(require,module,exports){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ - -var inherits = require('inherits') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var K = [ - 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, - 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, - 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, - 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, - 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, - 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, - 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, - 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, - 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, - 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, - 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, - 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, - 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, - 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, - 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, - 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 -] - -var W = new Array(64) - -function Sha256 () { - this.init() - - this._w = W // new Array(64) - - Hash.call(this, 64, 56) -} - -inherits(Sha256, Hash) - -Sha256.prototype.init = function () { - this._a = 0x6a09e667 - this._b = 0xbb67ae85 - this._c = 0x3c6ef372 - this._d = 0xa54ff53a - this._e = 0x510e527f - this._f = 0x9b05688c - this._g = 0x1f83d9ab - this._h = 0x5be0cd19 - - return this -} - -function ch (x, y, z) { - return z ^ (x & (y ^ z)) -} - -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} - -function sigma0 (x) { - return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) -} - -function sigma1 (x) { - return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) -} - -function gamma0 (x) { - return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) -} - -function gamma1 (x) { - return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) -} - -Sha256.prototype._update = function (M) { - var W = this._w - - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - var f = this._f | 0 - var g = this._g | 0 - var h = this._h | 0 - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 - - for (var j = 0; j < 64; ++j) { - var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 - var T2 = (sigma0(a) + maj(a, b, c)) | 0 - - h = g - g = f - f = e - e = (d + T1) | 0 - d = c - c = b - b = a - a = (T1 + T2) | 0 - } - - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 - this._f = (f + this._f) | 0 - this._g = (g + this._g) | 0 - this._h = (h + this._h) | 0 -} - -Sha256.prototype._hash = function () { - var H = Buffer.allocUnsafe(32) - - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) - H.writeInt32BE(this._h, 28) - - return H -} - -module.exports = Sha256 - -},{"./hash":319,"inherits":262,"safe-buffer":318}],325:[function(require,module,exports){ -var inherits = require('inherits') -var SHA512 = require('./sha512') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var W = new Array(160) - -function Sha384 () { - this.init() - this._w = W - - Hash.call(this, 128, 112) -} - -inherits(Sha384, SHA512) - -Sha384.prototype.init = function () { - this._ah = 0xcbbb9d5d - this._bh = 0x629a292a - this._ch = 0x9159015a - this._dh = 0x152fecd8 - this._eh = 0x67332667 - this._fh = 0x8eb44a87 - this._gh = 0xdb0c2e0d - this._hh = 0x47b5481d - - this._al = 0xc1059ed8 - this._bl = 0x367cd507 - this._cl = 0x3070dd17 - this._dl = 0xf70e5939 - this._el = 0xffc00b31 - this._fl = 0x68581511 - this._gl = 0x64f98fa7 - this._hl = 0xbefa4fa4 - - return this -} - -Sha384.prototype._hash = function () { - var H = Buffer.allocUnsafe(48) - - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) - } - - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) - - return H -} - -module.exports = Sha384 - -},{"./hash":319,"./sha512":326,"inherits":262,"safe-buffer":318}],326:[function(require,module,exports){ -var inherits = require('inherits') -var Hash = require('./hash') -var Buffer = require('safe-buffer').Buffer - -var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -] - -var W = new Array(160) - -function Sha512 () { - this.init() - this._w = W - - Hash.call(this, 128, 112) -} - -inherits(Sha512, Hash) - -Sha512.prototype.init = function () { - this._ah = 0x6a09e667 - this._bh = 0xbb67ae85 - this._ch = 0x3c6ef372 - this._dh = 0xa54ff53a - this._eh = 0x510e527f - this._fh = 0x9b05688c - this._gh = 0x1f83d9ab - this._hh = 0x5be0cd19 - - this._al = 0xf3bcc908 - this._bl = 0x84caa73b - this._cl = 0xfe94f82b - this._dl = 0x5f1d36f1 - this._el = 0xade682d1 - this._fl = 0x2b3e6c1f - this._gl = 0xfb41bd6b - this._hl = 0x137e2179 - - return this -} - -function Ch (x, y, z) { - return z ^ (x & (y ^ z)) -} - -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} - -function sigma0 (x, xl) { - return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) -} - -function sigma1 (x, xl) { - return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) -} - -function Gamma0 (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) -} - -function Gamma0l (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) -} - -function Gamma1 (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) -} - -function Gamma1l (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) -} - -function getCarry (a, b) { - return (a >>> 0) < (b >>> 0) ? 1 : 0 -} - -Sha512.prototype._update = function (M) { - var W = this._w - - var ah = this._ah | 0 - var bh = this._bh | 0 - var ch = this._ch | 0 - var dh = this._dh | 0 - var eh = this._eh | 0 - var fh = this._fh | 0 - var gh = this._gh | 0 - var hh = this._hh | 0 - - var al = this._al | 0 - var bl = this._bl | 0 - var cl = this._cl | 0 - var dl = this._dl | 0 - var el = this._el | 0 - var fl = this._fl | 0 - var gl = this._gl | 0 - var hl = this._hl | 0 - - for (var i = 0; i < 32; i += 2) { - W[i] = M.readInt32BE(i * 4) - W[i + 1] = M.readInt32BE(i * 4 + 4) - } - for (; i < 160; i += 2) { - var xh = W[i - 15 * 2] - var xl = W[i - 15 * 2 + 1] - var gamma0 = Gamma0(xh, xl) - var gamma0l = Gamma0l(xl, xh) - - xh = W[i - 2 * 2] - xl = W[i - 2 * 2 + 1] - var gamma1 = Gamma1(xh, xl) - var gamma1l = Gamma1l(xl, xh) - - // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - var Wi7h = W[i - 7 * 2] - var Wi7l = W[i - 7 * 2 + 1] - - var Wi16h = W[i - 16 * 2] - var Wi16l = W[i - 16 * 2 + 1] - - var Wil = (gamma0l + Wi7l) | 0 - var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 - Wil = (Wil + gamma1l) | 0 - Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 - Wil = (Wil + Wi16l) | 0 - Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 - - W[i] = Wih - W[i + 1] = Wil - } - - for (var j = 0; j < 160; j += 2) { - Wih = W[j] - Wil = W[j + 1] - - var majh = maj(ah, bh, ch) - var majl = maj(al, bl, cl) - - var sigma0h = sigma0(ah, al) - var sigma0l = sigma0(al, ah) - var sigma1h = sigma1(eh, el) - var sigma1l = sigma1(el, eh) - - // t1 = h + sigma1 + ch + K[j] + W[j] - var Kih = K[j] - var Kil = K[j + 1] - - var chh = Ch(eh, fh, gh) - var chl = Ch(el, fl, gl) - - var t1l = (hl + sigma1l) | 0 - var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 - t1l = (t1l + chl) | 0 - t1h = (t1h + chh + getCarry(t1l, chl)) | 0 - t1l = (t1l + Kil) | 0 - t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 - t1l = (t1l + Wil) | 0 - t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 - - // t2 = sigma0 + maj - var t2l = (sigma0l + majl) | 0 - var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 - - hh = gh - hl = gl - gh = fh - gl = fl - fh = eh - fl = el - el = (dl + t1l) | 0 - eh = (dh + t1h + getCarry(el, dl)) | 0 - dh = ch - dl = cl - ch = bh - cl = bl - bh = ah - bl = al - al = (t1l + t2l) | 0 - ah = (t1h + t2h + getCarry(al, t1l)) | 0 - } - - this._al = (this._al + al) | 0 - this._bl = (this._bl + bl) | 0 - this._cl = (this._cl + cl) | 0 - this._dl = (this._dl + dl) | 0 - this._el = (this._el + el) | 0 - this._fl = (this._fl + fl) | 0 - this._gl = (this._gl + gl) | 0 - this._hl = (this._hl + hl) | 0 - - this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 - this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 - this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 - this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 - this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 - this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 - this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 - this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 -} - -Sha512.prototype._hash = function () { - var H = Buffer.allocUnsafe(64) - - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) - } - - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) - writeInt64BE(this._gh, this._gl, 48) - writeInt64BE(this._hh, this._hl, 56) - - return H -} - -module.exports = Sha512 - -},{"./hash":319,"inherits":262,"safe-buffer":318}],327:[function(require,module,exports){ -(function (process,Buffer,__dirname){ - -// We are modularizing this manually because the current modularize setting in Emscripten has some issues: -// https://github.com/kripken/emscripten/issues/5820 -// In addition, When you use emcc's modularization, it still expects to export a global object called `Module`, -// which is able to be used/called before the WASM is loaded. -// The modularization below exports a promise that loads and resolves to the actual sql.js module. -// That way, this module can't be used before the WASM is finished loading. - -// We are going to define a function that a user will call to start loading initializing our Sql.js library -// However, that function might be called multiple times, and on subsequent calls, we don't actually want it to instantiate a new instance of the Module -// Instead, we want to return the previously loaded module - -// TODO: Make this not declare a global if used in the browser -var initSqlJsPromise = undefined; - -var initSqlJs = function (moduleConfig) { - - if (initSqlJsPromise){ - return initSqlJsPromise; - } - // If we're here, we've never called this function before - initSqlJsPromise = new Promise((resolveModule, reject) => { - - // We are modularizing this manually because the current modularize setting in Emscripten has some issues: - // https://github.com/kripken/emscripten/issues/5820 - - // The way to affect the loading of emcc compiled modules is to create a variable called `Module` and add - // properties to it, like `preRun`, `postRun`, etc - // We are using that to get notified when the WASM has finished loading. - // Only then will we return our promise - - // If they passed in a moduleConfig object, use that - // Otherwise, initialize Module to the empty object - var Module = typeof moduleConfig !== 'undefined' ? moduleConfig : {}; - - // EMCC only allows for a single onAbort function (not an array of functions) - // So if the user defined their own onAbort function, we remember it and call it - var originalOnAbortFunction = Module['onAbort']; - Module['onAbort'] = function (errorThatCausedAbort) { - reject(new Error(errorThatCausedAbort)); - if (originalOnAbortFunction){ - originalOnAbortFunction(errorThatCausedAbort); - } - }; - - Module['postRun'] = Module['postRun'] || []; - Module['postRun'].push(function () { - // When Emscripted calls postRun, this promise resolves with the built Module - resolveModule(Module); - }); - - // There is a section of code in the emcc-generated code below that looks like this: - // (Note that this is lowercase `module`) - // if (typeof module !== 'undefined') { - // module['exports'] = Module; - // } - // When that runs, it's going to overwrite our own modularization export efforts in shell-post.js! - // The only way to tell emcc not to emit it is to pass the MODULARIZE=1 or MODULARIZE_INSTANCE=1 flags, - // but that carries with it additional unnecessary baggage/bugs we don't want either. - // So, we have three options: - // 1) We undefine `module` - // 2) We remember what `module['exports']` was at the beginning of this function and we restore it later - // 3) We write a script to remove those lines of code as part of the Make process. - // - // Since those are the only lines of code that care about module, we will undefine it. It's the most straightforward - // of the options, and has the side effect of reducing emcc's efforts to modify the module if its output were to change in the future. - // That's a nice side effect since we're handling the modularization efforts ourselves - module = undefined; - - // The emcc-generated code and shell-post.js code goes below, - // meaning that all of it runs inside of this promise. If anything throws an exception, our promise will abort -var aa;var f;f||(f=typeof Module !== 'undefined' ? Module : {}); -var wa=function(){var a;var b=h(4);var c={};var d=function(){function a(a,b){this.ga=a;this.db=b;this.oa=1;this.Ha=[]}a.prototype.bind=function(a){if(!this.ga)throw"Statement closed";this.reset();return Array.isArray(a)?this.pb(a):this.qb(a)};a.prototype.step=function(){var a;if(!this.ga)throw"Statement closed";this.oa=1;switch(a=fc(this.ga)){case c.lb:return!0;case c.DONE:return!1;default:return this.db.handleError(a)}};a.prototype.wb=function(a){null==a&&(a=this.oa++);return hc(this.ga,a)};a.prototype.xb= -function(a){null==a&&(a=this.oa++);return ic(this.ga,a)};a.prototype.getBlob=function(a){var b;null==a&&(a=this.oa++);var c=jc(this.ga,a);var d=kc(this.ga,a);var e=new Uint8Array(c);for(a=b=0;0<=c?bc;a=0<=c?++b:--b)e[a]=l[d+a];return e};a.prototype.get=function(a){var b,d;null!=a&&this.bind(a)&&this.step();var e=[];a=b=0;for(d=pb(this.ga);0<=d?bd;a=0<=d?++b:--b)switch(lc(this.ga,a)){case c.kb:case c.FLOAT:e.push(this.wb(a));break;case c.mb:e.push(this.xb(a));break;case c.cb:e.push(this.getBlob(a)); -break;default:e.push(null)}return e};a.prototype.getColumnNames=function(){var a,b;var c=[];var d=a=0;for(b=pb(this.ga);0<=b?ab;d=0<=b?++a:--a)c.push(mc(this.ga,d));return c};a.prototype.getAsObject=function(a){var b,c;var d=this.get(a);var e=this.getColumnNames();var g={};a=b=0;for(c=e.length;b>>0);if(null!=a){var c=this.filename,d=c?m("/",c):"/";c=ia(!0,!0);d=ja(d,(void 0!==c?c:438)&4095|32768,0);if(a){if("string"===typeof a){for(var e=Array(a.length),k=0,Oa=a.length;kc;e=0<=c?++g:--g){var n=q(d+4*e,"i32");var A=wc(n);e=function(){switch(!1){case 1!==A:return ub;case 2!==A:return ub;case 3!==A:return xc;case 4!==A:return function(a){var b,c;var d=zc(a);var e=Ac(a);a=new Uint8Array(d);for(b=c=0;0<=d?cd;b=0<=d?++c:--c)a[b]=l[e+b];return a};default:return function(){return null}}}();e=e(n);k.push(e)}try{var v=b.apply(null,k)}catch(yc){v=yc;vb(a,v,-1);return}switch(typeof v){case "boolean":Bc(a,v?1:0);break;case "number":Cc(a, -v);break;case "string":Dc(a,v,-1,-1);break;case "object":null===v?wb(a):null!=v.length?(c=ca(v),Ec(a,c,v.length,-1),fa(c)):vb(a,"Wrong API use : tried to return a value of an unknown type ("+v+").",-1);break;default:wb(a)}});this.qa[a]=d;this.handleError(Fc(this.db,a,b.length,c.nb,0,d,0,0,0));return this};return a}();var g=f.cwrap("sqlite3_open","number",["string","number"]);var k=f.cwrap("sqlite3_close_v2","number",["number"]);var n=f.cwrap("sqlite3_exec","number",["number","string","number","number", -"number"]);f.cwrap("sqlite3_free","",["number"]);var v=f.cwrap("sqlite3_changes","number",["number"]);var A=f.cwrap("sqlite3_prepare_v2","number",["number","string","number","number","number"]);var ha=f.cwrap("sqlite3_prepare_v2","number",["number","number","number","number","number"]);var da=f.cwrap("sqlite3_bind_text","number",["number","number","number","number","number"]);var Pa=f.cwrap("sqlite3_bind_blob","number",["number","number","number","number","number"]);var oc=f.cwrap("sqlite3_bind_double", -"number",["number","number","number"]);var nc=f.cwrap("sqlite3_bind_int","number",["number","number","number"]);var pc=f.cwrap("sqlite3_bind_parameter_index","number",["number","string"]);var fc=f.cwrap("sqlite3_step","number",["number"]);var uc=f.cwrap("sqlite3_errmsg","string",["number"]);var pb=f.cwrap("sqlite3_data_count","number",["number"]);var hc=f.cwrap("sqlite3_column_double","number",["number","number"]);var ic=f.cwrap("sqlite3_column_text","string",["number","number"]);var kc=f.cwrap("sqlite3_column_blob", -"number",["number","number"]);var jc=f.cwrap("sqlite3_column_bytes","number",["number","number"]);var lc=f.cwrap("sqlite3_column_type","number",["number","number"]);var mc=f.cwrap("sqlite3_column_name","string",["number","number"]);var rc=f.cwrap("sqlite3_reset","number",["number"]);var qc=f.cwrap("sqlite3_clear_bindings","number",["number"]);var sc=f.cwrap("sqlite3_finalize","number",["number"]);var Fc=f.cwrap("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")); -var wc=f.cwrap("sqlite3_value_type","number",["number"]);var zc=f.cwrap("sqlite3_value_bytes","number",["number"]);var xc=f.cwrap("sqlite3_value_text","string",["number"]);f.cwrap("sqlite3_value_int","number",["number"]);var Ac=f.cwrap("sqlite3_value_blob","number",["number"]);var ub=f.cwrap("sqlite3_value_double","number",["number"]);var Cc=f.cwrap("sqlite3_result_double","",["number","number"]);var wb=f.cwrap("sqlite3_result_null","",["number"]);var Dc=f.cwrap("sqlite3_result_text","",["number", -"string","number","number"]);var Ec=f.cwrap("sqlite3_result_blob","",["number","number","number","number"]);var Bc=f.cwrap("sqlite3_result_int","",["number","number"]);f.cwrap("sqlite3_result_int64","",["number","number"]);var vb=f.cwrap("sqlite3_result_error","",["number","string","number"]);var tc=f.cwrap("RegisterExtensionFunctions","number",["number"]);this.SQL={Database:e};for(a in this.SQL)f[a]=this.SQL[a];var ea=0;c.Aa=0;c.Dd=1;c.Wd=2;c.ge=3;c.Gb=4;c.Ib=5;c.Zd=6;c.NOMEM=7;c.je=8;c.Xd=9;c.Yd= -10;c.Lb=11;c.NOTFOUND=12;c.Vd=13;c.Jb=14;c.he=15;c.EMPTY=16;c.ke=17;c.le=18;c.Kb=19;c.$d=20;c.be=21;c.ce=22;c.Hb=23;c.Ud=24;c.ie=25;c.de=26;c.ee=27;c.me=28;c.lb=100;c.DONE=101;c.kb=1;c.FLOAT=2;c.mb=3;c.cb=4;c.fe=5;c.nb=1}.bind(this);f.preRun=f.preRun||[];f.preRun.push(wa);var xa={},w;for(w in f)f.hasOwnProperty(w)&&(xa[w]=f[w]);f.arguments=[];f.thisProgram="./this.program";f.quit=function(a,b){throw b;};f.preRun=[];f.postRun=[];var ya=!1,x=!1,y=!1,za=!1;ya="object"===typeof window; -x="function"===typeof importScripts;y="object"===typeof process&&"function"===typeof require&&!ya&&!x;za=!ya&&!y&&!x;var z=""; -if(y){z=__dirname+"/";var Aa,Ba;f.read=function(a,b){var c=B(a);c||(Aa||(Aa=require("fs")),Ba||(Ba=require("path")),a=Ba.normalize(a),c=Aa.readFileSync(a));return b?c:c.toString()};f.readBinary=function(a){a=f.read(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a};1>2];a=b+a+15&-16;if(a<=Ha())D[Ga>>2]=a;else if(!Ia(a))return 0;return b}var ra=1,t=Array(64);function va(a){for(var b=0;64>b;b++)if(!t[b])return t[b]=a,ra+b;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.";}var Ja=0; -function q(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return l[a>>0];case "i8":return l[a>>0];case "i16":return Ka[a>>1];case "i32":return D[a>>2];case "i64":return D[a>>2];case "float":return La[a>>2];case "double":return Ma[a>>3];default:C("invalid type for getValue: "+b)}return null}var Na=!1;function assert(a,b){a||C("Assertion failed: "+b)}function Qa(a){var b=f["_"+a];assert(b,"Cannot call unknown function "+a+", make sure it is exported");return b} -function Ra(a,b,c,d){var e={string:function(a){var b=0;if(null!==a&&void 0!==a&&0!==a){var c=(a.length<<2)+1;b=h(c);r(a,E,b,c)}return b},array:function(a){var b=h(a.length);l.set(a,b);return b}},g=Qa(a),k=[];a=0;if(d)for(var n=0;n>0]=0;break;case "i8":l[a>>0]=0;break;case "i16":Ka[a>>1]=0;break;case "i32":D[a>>2]=0;break;case "i64":aa=[0,1<=+Sa(0)?~~+Ta(0)>>>0:0];D[a>>2]=aa[0];D[a+4>>2]=aa[1];break;case "float":La[a>>2]=0;break;case "double":Ma[a>>3]=0;break;default:C("invalid type for setValue: "+b)}}var Ua=0,Va=3; -function ca(a){var b=Ua;if("number"===typeof a){var c=!0;var d=a}else c=!1,d=a.length;var e;b==Va?e=g:e=[Wa,h,Fa][b](Math.max(d,1));if(c){var g=e;assert(0==(e&3));for(a=e+(d&-4);g>2]=0;for(a=e+d;g>0]=0;return e}a.subarray||a.slice?E.set(a,e):E.set(new Uint8Array(a),e);return e}var Xa="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0; -function u(a,b,c){var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}function F(a){return a?u(E,a,void 0):""} -function r(a,b,c,d){if(!(0=k){var n=a.charCodeAt(++g);k=65536+((k&1023)<<10)|n&1023}if(127>=k){if(c>=d)break;b[c++]=k}else{if(2047>=k){if(c+1>=d)break;b[c++]=192|k>>6}else{if(65535>=k){if(c+2>=d)break;b[c++]=224|k>>12}else{if(c+3>=d)break;b[c++]=240|k>>18;b[c++]=128|k>>12&63}b[c++]=128|k>>6&63}b[c++]=128|k&63}}b[c]=0;return c-e} -function oa(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");function Ya(a){return a.replace(/__Z[\w\d_]+/g,function(a){return a===a?a:a+" ["+a+"]"})}function Za(a){0ab&&Ea("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+ab+"! (TOTAL_STACK=5242880)");f.buffer?buffer=f.buffer:buffer=new ArrayBuffer(ab);$a();D[Ga>>2]=5303376; -function bb(a){for(;0>2];var c=D[b>>2]}else mb.pa=!0,I.USER=I.LOGNAME="web_user",I.PATH="/",I.PWD="/",I.HOME="/home/web_user",I.LANG="C.UTF-8",I._=f.thisProgram,c=gb?Wa(1024):Fa(1024),b=gb?Wa(256):Fa(256),D[b>>2]=c,D[a>>2]=b;a=[];var d=0,e;for(e in I)if("string"===typeof I[e]){var g=e+"="+I[e];a.push(g);d+=g.length}if(1024>0]=d.charCodeAt(n);l[k>>0]=0;D[b+ -4*e>>2]=c;c+=g.length+1}D[b+4*a.length>>2]=0}function nb(a){f.___errno_location&&(D[f.___errno_location()>>2]=a);return a}function ob(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}function qb(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=ob(a.split("/").filter(function(a){return!!a}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a} -function rb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function sb(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function tb(){var a=Array.prototype.slice.call(arguments,0);return qb(a.join("/"))}function m(a,b){return qb(a+"/"+b)} -function xb(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=ob(a.split("/").filter(function(a){return!!a}),!b).join("/");return(b?"/":"")+a||"."}var yb=[];function zb(a,b){yb[a]={input:[],output:[],wa:b};Ab(a,Bb)} -var Bb={open:function(a){var b=yb[a.node.rdev];if(!b)throw new J(K.Fa);a.tty=b;a.seekable=!1},close:function(a){a.tty.wa.flush(a.tty)},flush:function(a){a.tty.wa.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.wa.$a)throw new J(K.Ra);for(var e=0,g=0;g=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.da,a.da=new Uint8Array(b),0b)a.da.length=b;else for(;a.da.length=a.node.ha)return 0;a=Math.min(a.node.ha-e,d);if(8b)throw new J(K.ja);return b},Sa:function(a,b,c){L.Wa(a.node,b+c);a.node.ha=Math.max(a.node.ha,b+c)},Ca:function(a,b,c,d,e,g,k){if(32768!== -(a.node.mode&61440))throw new J(K.Fa);c=a.node.da;if(k&2||c.buffer!==b&&c.buffer!==b.buffer){if(0>2)}catch(c){if(!c.code)throw c; -throw new J(K[c.code]);}return b.mode},la:function(a){for(var b=[];a.parent!==a;)b.push(a.name),a=a.parent;b.push(a.ka.Ka.root);b.reverse();return tb.apply(null,b)},ub:function(a){a&=-2656257;var b=0,c;for(c in O.Xa)a&c&&(b|=O.Xa[c],a^=c);if(a)throw new J(K.ja);return b},ba:{ma:function(a){a=O.la(a);try{var b=fs.lstatSync(a)}catch(c){if(!c.code)throw c;throw new J(K[c.code]);}O.Ba&&!b.sa&&(b.sa=4096);O.Ba&&!b.blocks&&(b.blocks=(b.size+b.sa-1)/b.sa|0);return{dev:b.dev,ino:b.ino,mode:b.mode,nlink:b.nlink, -uid:b.uid,gid:b.gid,rdev:b.rdev,size:b.size,atime:b.atime,mtime:b.mtime,ctime:b.ctime,sa:b.sa,blocks:b.blocks}},ia:function(a,b){var c=O.la(a);try{void 0!==b.mode&&(fs.chmodSync(c,b.mode),a.mode=b.mode),void 0!==b.size&&fs.truncateSync(c,b.size)}catch(d){if(!d.code)throw d;throw new J(K[d.code]);}},lookup:function(a,b){var c=m(O.la(a),b);c=O.Za(c);return O.createNode(a,b,c)},ya:function(a,b,c,d){a=O.createNode(a,b,c,d);b=O.la(a);try{M(a.mode)?fs.mkdirSync(b,a.mode):fs.writeFileSync(b,"",{mode:a.mode})}catch(e){if(!e.code)throw e; -throw new J(K[e.code]);}return a},rename:function(a,b,c){a=O.la(a);b=m(O.la(b),c);try{fs.renameSync(a,b)}catch(d){if(!d.code)throw d;throw new J(K[d.code]);}},unlink:function(a,b){a=m(O.la(a),b);try{fs.unlinkSync(a)}catch(c){if(!c.code)throw c;throw new J(K[c.code]);}},rmdir:function(a,b){a=m(O.la(a),b);try{fs.rmdirSync(a)}catch(c){if(!c.code)throw c;throw new J(K[c.code]);}},readdir:function(a){a=O.la(a);try{return fs.readdirSync(a)}catch(b){if(!b.code)throw b;throw new J(K[b.code]);}},symlink:function(a, -b,c){a=m(O.la(a),b);try{fs.symlinkSync(c,a)}catch(d){if(!d.code)throw d;throw new J(K[d.code]);}},readlink:function(a){var b=O.la(a);try{return b=fs.readlinkSync(b),b=Hb.relative(Hb.resolve(a.ka.Ka.root),b)}catch(c){if(!c.code)throw c;throw new J(K[c.code]);}}},ea:{open:function(a){var b=O.la(a.node);try{32768===(a.node.mode&61440)&&(a.za=fs.openSync(b,O.ub(a.flags)))}catch(c){if(!c.code)throw c;throw new J(K[c.code]);}},close:function(a){try{32768===(a.node.mode&61440)&&a.za&&fs.closeSync(a.za)}catch(b){if(!b.code)throw b; -throw new J(K[b.code]);}},read:function(a,b,c,d,e){if(0===d)return 0;try{return fs.readSync(a.za,O.Ua(b.buffer),c,d,e)}catch(g){throw new J(K[g.code]);}},write:function(a,b,c,d,e){try{return fs.writeSync(a.za,O.Ua(b.buffer),c,d,e)}catch(g){throw new J(K[g.code]);}},ra:function(a,b,c){if(1===c)b+=a.position;else if(2===c&&32768===(a.node.mode&61440))try{b+=fs.fstatSync(a.za).size}catch(d){throw new J(K[d.code]);}if(0>b)throw new J(K.ja);return b}}},Ib=null,Jb={},P=[],Kb=1,Q=null,Lb=!0,R={},J=null, -Gb={};function S(a,b){a=xb("/",a);b=b||{};if(!a)return{path:"",node:null};var c={Ya:!0,Ma:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8>>0)%Q.length}function Pb(a){var b=Ob(a.parent.id,a.name);a.va=Q[b];Q[b]=a}function Qb(a){var b=Ob(a.parent.id,a.name);if(Q[b]===a)Q[b]=a.va;else for(b=Q[b];b;){if(b.va===a){b.va=a.va;break}b=b.va}} -function N(a,b){var c;if(c=(c=Rb(a,"x"))?c:a.ba.lookup?0:13)throw new J(c,a);for(c=Q[Ob(a.id,b)];c;c=c.va){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.ba.lookup(a,b)} -function Fb(a,b,c,d){Sb||(Sb=function(a,b,c,d){a||(a=this);this.parent=a;this.ka=a.ka;this.ua=null;this.id=Kb++;this.name=b;this.mode=c;this.ba={};this.ea={};this.rdev=d},Sb.prototype={},Object.defineProperties(Sb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}}));a=new Sb(a,b,c,d);Pb(a);return a} -function M(a){return 16384===(a&61440)}var Tb={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function Ub(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Rb(a,b){if(Lb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 13}else return 13;return 0}function Vb(a,b){try{return N(a,b),17}catch(c){}return Rb(a,"wx")} -function Wb(a,b,c){try{var d=N(a,b)}catch(e){return e.fa}if(a=Rb(a,"wx"))return a;if(c){if(!M(d.mode))return 20;if(d===d.parent||"/"===Nb(d))return 16}else if(M(d.mode))return 21;return 0}function Xb(a){var b=4096;for(a=a||0;a<=b;a++)if(!P[a])return a;throw new J(24);} -function Yb(a,b){Zb||(Zb=function(){},Zb.prototype={},Object.defineProperties(Zb.prototype,{object:{get:function(){return this.node},set:function(a){this.node=a}}}));var c=new Zb,d;for(d in a)c[d]=a[d];a=c;b=Xb(b);a.fd=b;return P[b]=a}var Eb={open:function(a){a.ea=Jb[a.node.rdev].ea;a.ea.open&&a.ea.open(a)},ra:function(){throw new J(29);}};function Ab(a,b){Jb[a]={ea:b}} -function $b(a,b){var c="/"===b,d=!b;if(c&&Ib)throw new J(16);if(!c&&!d){var e=S(b,{Ya:!1});b=e.path;e=e.node;if(e.ua)throw new J(16);if(!M(e.mode))throw new J(20);}b={type:a,Ka:{},bb:b,Ab:[]};a=a.ka(b);a.ka=b;b.root=a;c?Ib=a:e&&(e.ua=b,e.ka&&e.ka.Ab.push(b))}function ja(a,b,c){var d=S(a,{parent:!0}).node;a=sb(a);if(!a||"."===a||".."===a)throw new J(22);var e=Vb(d,a);if(e)throw new J(e);if(!d.ba.ya)throw new J(1);return d.ba.ya(d,a,b,c)}function T(a,b){ja(a,(void 0!==b?b:511)&1023|16384,0)} -function ac(a,b,c){"undefined"===typeof c&&(c=b,b=438);ja(a,b|8192,c)}function bc(a,b){if(!xb(a))throw new J(2);var c=S(b,{parent:!0}).node;if(!c)throw new J(2);b=sb(b);var d=Vb(c,b);if(d)throw new J(d);if(!c.ba.symlink)throw new J(1);c.ba.symlink(c,b,a)} -function ua(a){var b=S(a,{parent:!0}).node,c=sb(a),d=N(b,c),e=Wb(b,c,!1);if(e)throw new J(e);if(!b.ba.unlink)throw new J(1);if(d.ua)throw new J(16);try{R.willDeletePath&&R.willDeletePath(a)}catch(g){console.log("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+g.message)}b.ba.unlink(b,c);Qb(d);try{if(R.onDeletePath)R.onDeletePath(a)}catch(g){console.log("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+g.message)}} -function Mb(a){a=S(a).node;if(!a)throw new J(2);if(!a.ba.readlink)throw new J(22);return xb(Nb(a.parent),a.ba.readlink(a))}function sa(a,b){a=S(a,{ta:!b}).node;if(!a)throw new J(2);if(!a.ba.ma)throw new J(1);return a.ba.ma(a)}function cc(a){return sa(a,!0)}function ka(a,b){var c;"string"===typeof a?c=S(a,{ta:!0}).node:c=a;if(!c.ba.ia)throw new J(1);c.ba.ia(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})} -function dc(a){var b;"string"===typeof a?b=S(a,{ta:!0}).node:b=a;if(!b.ba.ia)throw new J(1);b.ba.ia(b,{timestamp:Date.now()})}function ec(a,b){if(0>b)throw new J(22);var c;"string"===typeof a?c=S(a,{ta:!0}).node:c=a;if(!c.ba.ia)throw new J(1);if(M(c.mode))throw new J(21);if(32768!==(c.mode&61440))throw new J(22);if(a=Rb(c,"w"))throw new J(a);c.ba.ia(c,{size:b,timestamp:Date.now()})} -function p(a,b,c,d){if(""===a)throw new J(2);if("string"===typeof b){var e=Tb[b];if("undefined"===typeof e)throw Error("Unknown file open mode: "+b);b=e}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;if("object"===typeof a)var g=a;else{a=qb(a);try{g=S(a,{ta:!(b&131072)}).node}catch(k){}}e=!1;if(b&64)if(g){if(b&128)throw new J(17);}else g=ja(a,c,0),e=!0;if(!g)throw new J(2);8192===(g.mode&61440)&&(b&=-513);if(b&65536&&!M(g.mode))throw new J(20);if(!e&&(c=g?40960===(g.mode&61440)?40:M(g.mode)&& -("r"!==Ub(b)||b&512)?21:Rb(g,Ub(b)):2))throw new J(c);b&512&&ec(g,0);b&=-641;d=Yb({node:g,path:Nb(g),flags:b,seekable:!0,position:0,ea:g.ea,Fb:[],error:!1},d);d.ea.open&&d.ea.open(d);!f.logReadFiles||b&1||(vc||(vc={}),a in vc||(vc[a]=1,console.log("FS.trackingDelegate error on read file: "+a)));try{R.onOpenFile&&(g=0,1!==(b&2097155)&&(g|=1),0!==(b&2097155)&&(g|=2),R.onOpenFile(a,g))}catch(k){console.log("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+k.message)}return d} -function ma(a){if(null===a.fd)throw new J(9);a.Ja&&(a.Ja=null);try{a.ea.close&&a.ea.close(a)}catch(b){throw b;}finally{P[a.fd]=null}a.fd=null}function Gc(a,b,c){if(null===a.fd)throw new J(9);if(!a.seekable||!a.ea.ra)throw new J(29);if(0!=c&&1!=c&&2!=c)throw new J(22);a.position=a.ea.ra(a,b,c);a.Fb=[]} -function ta(a,b,c,d,e){if(0>d||0>e)throw new J(22);if(null===a.fd)throw new J(9);if(1===(a.flags&2097155))throw new J(9);if(M(a.node.mode))throw new J(21);if(!a.ea.read)throw new J(22);var g="undefined"!==typeof e;if(!g)e=a.position;else if(!a.seekable)throw new J(29);b=a.ea.read(a,b,c,d,e);g||(a.position+=b);return b} -function la(a,b,c,d,e,g){if(0>d||0>e)throw new J(22);if(null===a.fd)throw new J(9);if(0===(a.flags&2097155))throw new J(9);if(M(a.node.mode))throw new J(21);if(!a.ea.write)throw new J(22);a.flags&1024&&Gc(a,0,2);var k="undefined"!==typeof e;if(!k)e=a.position;else if(!a.seekable)throw new J(29);b=a.ea.write(a,b,c,d,e,g);k||(a.position+=b);try{if(a.path&&R.onWriteToFile)R.onWriteToFile(a.path)}catch(n){console.log("FS.trackingDelegate['onWriteToFile']('"+a.path+"') threw an exception: "+n.message)}return b} -function Hc(){J||(J=function(a,b){this.node=b;this.Db=function(a){this.fa=a};this.Db(a);this.message="FS error";this.stack&&Object.defineProperty(this,"stack",{value:Error().stack,writable:!0})},J.prototype=Error(),J.prototype.constructor=J,[2].forEach(function(a){Gb[a]=new J(a);Gb[a].stack=""}))}var Ic;function ia(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c} -function Jc(a,b,c){a=m("/dev",a);var d=ia(!!b,!!c);Kc||(Kc=64);var e=Kc++<<8|0;Ab(e,{open:function(a){a.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(a,c,d,e){for(var g=0,k=0;k>2]=d.dev;D[c+4>>2]=0;D[c+8>>2]=d.ino;D[c+12>>2]=d.mode;D[c+16>>2]=d.nlink;D[c+20>>2]=d.uid;D[c+24>>2]=d.gid;D[c+28>>2]=d.rdev;D[c+32>>2]=0;D[c+36>>2]=d.size;D[c+40>>2]=4096;D[c+44>>2]=d.blocks;D[c+48>>2]=d.atime.getTime()/1E3|0;D[c+52>>2]=0;D[c+56>>2]=d.mtime.getTime()/1E3|0;D[c+60>>2]=0;D[c+64>>2]=d.ctime.getTime()/1E3|0;D[c+68>>2]=0;D[c+72>>2]=d.ino;return 0}var V=0; -function W(){V+=4;return D[V-4>>2]}function X(){return F(W())}function Y(){var a=P[W()];if(!a)throw new J(K.Na);return a}function Nc(a,b){V=b;return 0}function Ha(){return l.length} -function Oc(a){try{var b=new ArrayBuffer(a);if(b.byteLength!=a)return!1;(new Int8Array(b)).set(l)}catch(c){return!1}f._emscripten_replace_memory(b);l=new Int8Array(b);Ka=new Int16Array(b);D=new Int32Array(b);E=new Uint8Array(b);new Uint16Array(b);new Uint32Array(b);La=new Float32Array(b);Ma=new Float64Array(b);return buffer=b} -function Ia(a){if(2130706432=b?b=Za(2*b):b=Math.min(Za((3*b+2147483648)/4),2130706432);a=Oc(b);if(!a||a.byteLength!=b)return!1;$a();return!0}function Pc(a){if(0===a)return 0;a=F(a);if(!I.hasOwnProperty(a))return 0;Pc.pa&&fa(Pc.pa);a=I[a];var b=oa(a)+1,c=Wa(b);c&&r(a,l,c,b);Pc.pa=c;return Pc.pa}function Qc(a){return Math.log(a)/Math.LN10}r("GMT",E,60384,4); -function Rc(){function a(a){return(a=a.toTimeString().match(/\(([A-Za-z ]+)\)$/))?a[1]:"GMT"}if(!Rc.pa){Rc.pa=!0;D[Sc()>>2]=60*(new Date).getTimezoneOffset();var b=new Date(2E3,0,1),c=new Date(2E3,6,1);D[Tc()>>2]=Number(b.getTimezoneOffset()!=c.getTimezoneOffset());var d=a(b),e=a(c);d=ca(ba(d));e=ca(ba(e));c.getTimezoneOffset()>2]=d,D[Uc()+4>>2]=e):(D[Uc()>>2]=e,D[Uc()+4>>2]=d)}} -function Vc(a,b){Rc();a=new Date(1E3*D[a>>2]);D[b>>2]=a.getSeconds();D[b+4>>2]=a.getMinutes();D[b+8>>2]=a.getHours();D[b+12>>2]=a.getDate();D[b+16>>2]=a.getMonth();D[b+20>>2]=a.getFullYear()-1900;D[b+24>>2]=a.getDay();var c=new Date(a.getFullYear(),0,1);D[b+28>>2]=(a.getTime()-c.getTime())/864E5|0;D[b+36>>2]=-(60*a.getTimezoneOffset());var d=(new Date(2E3,6,1)).getTimezoneOffset();c=c.getTimezoneOffset();a=(d!=c&&a.getTimezoneOffset()==Math.min(c,d))|0;D[b+32>>2]=a;a=D[Uc()+(a?4:0)>>2];D[b+40>>2]= -a;return b}function Wc(a){a/=1E3;if((ya||x)&&self.performance&&self.performance.now)for(var b=self.performance.now();self.performance.now()-b>4; -e=(e&15)<<4|g>>2;var n=(g&3)<<6|k;b+=String.fromCharCode(d);64!==g&&(b+=String.fromCharCode(e));64!==k&&(b+=String.fromCharCode(n))}while(c>2]=c.position;c.Ja&&0===d&&0===g&&(c.Ja=null);return 0}catch(k){return"undefined"!==typeof U&&k instanceof J||C(k),-k.fa}},v:function(a,b){V=b;try{var c=X(),d=W();ka(c,d);return 0}catch(e){return"undefined"!==typeof U&&e instanceof J||C(e),-e.fa}},w:function(a,b){V=b;try{var c=W(),d=W();if(0===d)return-K.ja;if(dd?-K.ja:p(c.path,c.flags,0,d).fd;case 1:case 2:return 0; -case 3:return c.flags;case 4:return d=W(),c.flags|=d,0;case 12:return d=W(),Ka[d+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-K.ja;case 9:return nb(K.ja),-1;default:return-K.ja}}catch(e){return"undefined"!==typeof U&&e instanceof J||C(e),-e.fa}},I:function(a,b){V=b;try{var c=Y(),d=W(),e=W();return ta(c,l,d,e)}catch(g){return"undefined"!==typeof U&&g instanceof J||C(g),-g.fa}},J:function(a,b){V=b;try{var c=X();var d=W();if(d&-8)var e=-K.ja;else{var g=S(c,{ta:!0}).node;a="";d&4&&(a+="r"); -d&2&&(a+="w");d&1&&(a+="x");e=a&&Rb(g,a)?-K.eb:0}return e}catch(k){return"undefined"!==typeof U&&k instanceof J||C(k),-k.fa}},K:function(a,b){V=b;try{var c=X(),d=W();a=c;a=qb(a);"/"===a[a.length-1]&&(a=a.substr(0,a.length-1));T(a,d);return 0}catch(e){return"undefined"!==typeof U&&e instanceof J||C(e),-e.fa}},L:function(a,b){V=b;try{var c=Y(),d=W(),e=W();return la(c,l,d,e)}catch(g){return"undefined"!==typeof U&&g instanceof J||C(g),-g.fa}},M:function(a,b){V=b;try{var c=X(),d=S(c,{parent:!0}).node, -e=sb(c),g=N(d,e),k=Wb(d,e,!0);if(k)throw new J(k);if(!d.ba.rmdir)throw new J(1);if(g.ua)throw new J(16);try{R.willDeletePath&&R.willDeletePath(c)}catch(n){console.log("FS.trackingDelegate['willDeletePath']('"+c+"') threw an exception: "+n.message)}d.ba.rmdir(d,e);Qb(g);try{if(R.onDeletePath)R.onDeletePath(c)}catch(n){console.log("FS.trackingDelegate['onDeletePath']('"+c+"') threw an exception: "+n.message)}return 0}catch(n){return"undefined"!==typeof U&&n instanceof J||C(n),-n.fa}},N:function(a,b){V= -b;try{var c=X(),d=W(),e=W();return p(c,d,e).fd}catch(g){return"undefined"!==typeof U&&g instanceof J||C(g),-g.fa}},O:function(a,b){V=b;try{var c=Y();ma(c);return 0}catch(d){return"undefined"!==typeof U&&d instanceof J||C(d),-d.fa}},P:function(a,b){V=b;try{var c=X(),d=W();var e=W();if(0>=e)var g=-K.ja;else{var k=Mb(c),n=Math.min(e,oa(k)),v=l[d+n];r(k,E,d,e+1);l[d+n]=v;g=n}return g}catch(A){return"undefined"!==typeof U&&A instanceof J||C(A),-A.fa}},Q:function(a,b){V=b;try{var c=W(),d=W(),e=Lc[c];if(!e)return 0; -if(d===e.yb){var g=P[e.fd],k=e.flags,n=new Uint8Array(E.subarray(c,c+d));g&&g.ea.Da&&g.ea.Da(g,n,0,d,k);Lc[c]=null;e.Ga&&fa(e.zb)}return 0}catch(v){return"undefined"!==typeof U&&v instanceof J||C(v),-v.fa}},R:function(a,b){V=b;try{var c=W(),d=W(),e=P[c];if(!e)throw new J(9);ka(e.node,d);return 0}catch(g){return"undefined"!==typeof U&&g instanceof J||C(g),-g.fa}},S:Ha,T:function(a,b,c){E.set(E.subarray(b,b+c),a)},U:Ia,V:Pc,W:function(a){var b=Date.now();D[a>>2]=b/1E3|0;D[a+4>>2]=b%1E3*1E3|0;return 0}, -X:Qc,Y:function(a){return Qc(a)},Z:function(){C("trap!")},_:function(a){return Vc(a,60336)},$:Vc,aa:function(a,b){var c=D[a>>2];a=D[a+4>>2];0!==b&&(D[b>>2]=0,D[b+4>>2]=0);return Wc(1E6*c+a/1E3)},ab:function(a){switch(a){case 30:return 16384;case 85:return 130048;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809; -case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32; -case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}nb(22);return-1}, -ac:function(a){var b=Date.now()/1E3|0;a&&(D[a>>2]=b);return b},ad:Rc,ae:Wc,af:function(a,b){if(b){var c=1E3*D[b+8>>2];c+=D[b+12>>2]/1E3}else c=Date.now();a=F(a);try{b=c;var d=S(a,{ta:!0}).node;d.ba.ia(d,{timestamp:Math.max(b,c)});return 0}catch(e){a=e;if(!(a instanceof J)){a+=" : ";a:{d=Error();if(!d.stack){try{throw Error(0);}catch(g){d=g}if(!d.stack){d="(no stack trace available)";break a}}d=d.stack.toString()}f.extraStackTrace&&(d+="\n"+f.extraStackTrace());d=Ya(d);throw a+d;}nb(a.fa);return-1}}, -ag:function(){C("OOM")},ah:Oc,ai:60480,aj:Ga};// EMSCRIPTEN_START_ASM -var Z=(/** @suppress {uselessCode} */ function(global,env,buffer) { -"almost asm";var a=new global.Int8Array(buffer),b=new global.Int16Array(buffer),c=new global.Int32Array(buffer),d=new global.Uint8Array(buffer),e=new global.Uint16Array(buffer),f=new global.Float32Array(buffer),g=new global.Float64Array(buffer),h=env.ai|0,i=env.aj|0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=global.Infinity,s=global.Math.floor,t=global.Math.abs,u=global.Math.sqrt,v=global.Math.pow,w=global.Math.cos,x=global.Math.sin,y=global.Math.tan,z=global.Math.acos,A=global.Math.asin,B=global.Math.atan,C=global.Math.atan2,D=global.Math.exp,E=global.Math.log,F=global.Math.ceil,G=global.Math.imul,H=global.Math.min,I=global.Math.clz32,J=env.a,K=env.b,L=env.c,M=env.d,N=env.e,O=env.f,P=env.g,Q=env.h,R=env.i,S=env.j,T=env.k,U=env.l,V=env.m,W=env.n,X=env.o,Y=env.p,Z=env.q,_=env.r,$=env.s,aa=env.t,ba=env.u,ca=env.v,da=env.w,ea=env.x,fa=env.y,ga=env.z,ha=env.A,ia=env.B,ja=env.C,ka=env.D,la=env.E,ma=env.F,na=env.G,oa=env.H,pa=env.I,qa=env.J,ra=env.K,sa=env.L,ta=env.M,ua=env.N,va=env.O,wa=env.P,xa=env.Q,ya=env.R,za=env.S,Aa=env.T,Ba=env.U,Ca=env.V,Da=env.W,Ea=env.X,Fa=env.Y,Ga=env.Z,Ha=env._,Ia=env.$,Ja=env.aa,Ka=env.ab,La=env.ac,Ma=env.ad,Na=env.ae,Oa=env.af,Pa=env.ag,Qa=env.ah,Ra=60496,Sa=5303376,Ta=0.0;function Ua(newBuffer){a=new Int8Array(newBuffer);d=new Uint8Array(newBuffer);b=new Int16Array(newBuffer);e=new Uint16Array(newBuffer);c=new Int32Array(newBuffer);f=new Float32Array(newBuffer);g=new Float64Array(newBuffer);buffer=newBuffer;return true} -// EMSCRIPTEN_START_FUNCS -function Rg(f){f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Sa=0,Ta=0,Ua=0,Va=0,$a=0,db=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Eb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,_b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,$c=0,ad=0,bd=0,cd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Od=0,Pd=0,Qd=0,Rd=0,Td=0,Ud=0,Vd=0,Wd=0,Yd=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Ef=0,Ff=0,Gf=0,Hf=0;Hf=Ra;Ra=Ra+864|0;nf=Hf+848|0;yf=Hf+840|0;Be=Hf+832|0;Gf=Hf+816|0;Ff=Hf+800|0;Ef=Hf+792|0;ze=Hf+784|0;ye=Hf+776|0;xe=Hf+768|0;we=Hf+760|0;ve=Hf+752|0;ue=Hf+736|0;te=Hf+728|0;bf=Hf+720|0;Ye=Hf+712|0;Xe=Hf+704|0;We=Hf+696|0;Ue=Hf+688|0;Te=Hf+664|0;Se=Hf+656|0;Re=Hf+648|0;Qe=Hf+640|0;Oe=Hf+624|0;Ne=Hf+608|0;Me=Hf+592|0;Le=Hf+576|0;Ke=Hf+560|0;Je=Hf+544|0;ef=Hf+536|0;df=Hf+528|0;cf=Hf+520|0;Ie=Hf+512|0;He=Hf+504|0;Ge=Hf+496|0;Fe=Hf+488|0;Ee=Hf+472|0;De=Hf+456|0;Ce=Hf+440|0;Ae=Hf+432|0;lf=Hf+416|0;gf=Hf+408|0;kf=Hf+400|0;ff=Hf+392|0;rf=Hf+352|0;Hd=Hf+112|0;Td=Hf+280|0;Yd=Hf;ee=Hf+272|0;je=Hf+852|0;le=f+104|0;q=c[le>>2]|0;Cf=c[f>>2]|0;sd=a[Cf+78>>0]|0;xd=f+88|0;o=c[xd>>2]|0;i=c[f+156>>2]|0;if(i|0?(k=c[Cf+16>>2]|0,l=c[Cf+20>>2]|0,(l|0)>0):0){h=0;do{if(((h|0)!=1?1<>2]|0,m|0):0)c[(c[m+4>>2]|0)+4>>2]=c[m>>2];h=h+1|0}while((h|0)!=(l|0))}Af=Cf+320|0;if(!(c[Af>>2]|0))h=-1;else{h=c[Cf+328>>2]|0;h=h-(((c[f+176>>2]|0)>>>0)%(h>>>0)|0)|0}Bf=f+40|0;a:do if((c[Bf>>2]|0)==7){l=q;n=0;k=0;m=q;j=h;i=Cf+81|0;oa=3892}else{Zc=f+56|0;c[Zc>>2]=0;c[Zc+4>>2]=0;Zc=f+120|0;c[Zc>>2]=0;c[Cf+404>>2]=0;lc=Cf+264|0;b:do if(!(c[lc>>2]|0)){xf=f+36|0;mc=f+100|0;qf=Cf+88|0;nc=f+196|0;oc=f+96|0;pc=f+147|0;uf=Cf+16|0;vf=f+149|0;qc=rf+8|0;rc=f+44|0;sc=Cf+100|0;tc=Cf+104|0;uc=f+168|0;vc=Hd+8|0;wc=Hd+10|0;xc=Hd+4|0;zc=Hd+8|0;Ac=Hd+10|0;Bc=Hd+4|0;Cc=Cf+90|0;Dc=Td+4|0;Ec=Td+12|0;Fc=Td+16|0;Gc=Td+20|0;Hc=Td+24|0;Ic=Td+28|0;Jc=Td+8|0;Kc=Td+64|0;Lc=Td+40|0;Mc=Td+44|0;Nc=Td+48|0;Oc=Td+52|0;Pc=Td+56|0;Qc=Td+60|0;Rc=Td+61|0;Sc=Cf+32|0;$c=Cf+272|0;Tc=rf+8|0;Uc=rf+4|0;mf=f+124|0;Vc=Cf+332|0;Wc=rf+32|0;sa=rf+8|0;ad=Cf+184|0;ta=f+92|0;zf=Cf+81|0;ua=f+32|0;bd=Cf+176|0;qd=Cf+444|0;va=f+24|0;wa=Yd+8|0;xa=Yd+10|0;ya=Yd+4|0;za=Yd+14|0;Aa=Hd+8|0;Ba=Hd+4|0;Ca=Cf+232|0;Da=Cf+108|0;Ea=rf+8|0;Fa=rf+32|0;Ga=rf+24|0;Ha=Cf+172|0;hf=Cf+24|0;Ia=rf+8|0;Ja=rf+4|0;Ka=rf+16|0;Ze=Cf+480|0;La=f+204|0;Ma=Cf+148|0;Na=Cf+472|0;Oa=f+64|0;Pa=Cf+464|0;Xc=Cf+276|0;Qa=rf+12|0;Sa=Hd+8|0;Ta=Hd+32|0;Ua=rf+8|0;Va=rf+4|0;$a=Cf+4|0;db=Cf+356|0;fb=Cf+328|0;gb=Cf+324|0;hb=sd<<24>>24==1;ib=f+184|0;_e=Cf+304|0;$e=Cf+308|0;af=Cf+300|0;jb=Hd+8|0;kb=Hd+32|0;lb=Hd+24|0;mb=rf+16|0;nb=rf+12|0;ob=Cf+165|0;pb=rf+12|0;qb=rf+20|0;Yc=Cf+288|0;rb=rf+20|0;tb=rf+8|0;ub=rf+4|0;vb=rf+20|0;wb=f+108|0;hd=f+188|0;Fd=Cf+456|0;Gd=Cf+452|0;xb=rf+16|0;yb=rf+28|0;zb=Cf+40|0;Ab=Hd+8|0;Bb=Hd+20|0;Cb=Hd+24|0;Eb=Hd+16|0;Gb=Hd+12|0;Hb=f+216|0;Ib=f+28|0;cd=Cf+296|0;ed=Cf+284|0;Jb=rf+10|0;Kb=rf+20|0;Lb=Cf+180|0;of=Cf+196|0;pf=Cf+200|0;Mb=rf+8|0;Nb=rf+8|0;fd=Cf+292|0;Ob=rf+16|0;Pb=Cf+348|0;Qb=rf+24|0;Rb=Cf+86|0;gd=Cf+79|0;Sb=rf+32|0;Tb=Cf+228|0;Ub=rf+8|0;Vb=Cf+344|0;Wb=Cf+340|0;Xb=rf+12|0;Yb=Hd+16|0;_b=Hd+8|0;ac=Hd+12|0;bc=f+48|0;ra=Cf+80|0;cc=rf+8|0;dc=Cf+336|0;ec=rf+20|0;Id=Cf+87|0;fc=Hd+24|0;sf=Cf+20|0;jf=Cf+56|0;gc=f+72|0;hc=f+80|0;ic=rf+8|0;Jd=f+146|0;jc=Cf+8|0;kc=rf+4|0;m=q;p=q+((c[xf>>2]|0)*20|0)|0;K=0;k=0;qa=0;n=0;pa=o;c:while(1){n=n+1|0;z=a[p>>0]|0;d:do switch(z<<24>>24){case 81:{oa=153;break c}case 1:{oa=922;break c}case 11:{i=K;oa=20;break}case 12:{i=c[p+4>>2]|0;b[pa+(i*40|0)+8>>1]=4;oa=(p-m|0)/20|0;i=pa+(i*40|0)|0;c[i>>2]=oa;c[i+4>>2]=((oa|0)<0)<<31>>31;i=K;oa=28;break}case 66:{l=c[p+4>>2]|0;p=m+((c[pa+(l*40|0)>>2]|0)*20|0)|0;b[pa+(l*40|0)+8>>1]=128;l=m;q=pa;o=qa;i=K;break}case 13:{na=c[p+4>>2]|0;la=(c[p+12>>2]|0)+-1|0;ma=pa+(na*40|0)|0;c[ma>>2]=la;c[ma+4>>2]=((la|0)<0)<<31>>31;b[pa+(na*40|0)+8>>1]=4;if(!(c[p+8>>2]|0)){l=m;q=pa;o=qa;i=K}else{i=K;oa=28}break}case 67:{l=c[p+4>>2]|0;p=m+(((c[m+((c[pa+(l*40|0)>>2]|0)*20|0)+8>>2]|0)+-1|0)*20|0)|0;b[pa+(l*40|0)+8>>1]=128;l=m;q=pa;o=qa;i=K;break}case 14:{l=c[p+4>>2]|0;b[pa+(l*40|0)+8>>1]=4;l=pa+(l*40|0)|0;i=c[l>>2]|0;q=(p-m|0)/20|0;c[l>>2]=q;c[l+4>>2]=((q|0)<0)<<31>>31;l=m;q=pa;o=qa;p=m+(i*20|0)|0;i=K;break}case 68:{if(!(b[pa+((c[p+12>>2]|0)*40|0)+8>>1]&1)){l=m;q=pa;o=qa;i=K}else oa=34;break}case 69:{oa=34;break}case 70:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;q=c[p+4>>2]|0;l=i;c[l>>2]=q;c[l+4>>2]=((q|0)<0)<<31>>31;l=m;q=pa;o=qa;i=K;break}case 71:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;o=c[p+16>>2]|0;q=c[o+4>>2]|0;l=i;c[l>>2]=c[o>>2];c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break}case -111:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;b[i+8>>1]=8;g[i>>3]=+g[c[p+16>>2]>>3];l=m;q=pa;o=qa;i=K;break}case 110:{oa=c[xd>>2]|0;s=p+8|0;l=c[s>>2]|0;i=oa+(l*40|0)|0;l=oa+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;a[p>>0]=72;q=p+16|0;o=c[q>>2]|0;if(!o)l=0;else l=(Eu(o)|0)&1073741823;r=p+4|0;c[r>>2]=l;if(hb)i=K;else{if(yc(i,o,-1,1,0)|0){oa=3891;break c}o=i+8|0;l=b[o>>1]|0;if((l&2)!=0?(a[i+10>>0]|0)!=sd<<24>>24:0){if(Ig(i,sd)|0){l=p;j=h;i=zf;oa=3892;break a}l=b[o>>1]|0}c[i+24>>2]=0;b[o>>1]=l|2048;l=p+1|0;e:do if((a[l>>0]|0)==-7?(ae=c[q>>2]|0,ae|0):0){if(c[Ze>>2]|0){Xd(Cf,ae);break}o=ae;do if((c[_e>>2]|0)>>>0<=o>>>0){if((c[$e>>2]|0)>>>0<=o>>>0)break;c[ae>>2]=c[af>>2];c[af>>2]=ae;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](ae);break}else{oa=Wa[c[29352>>2]&127](ae)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ae);break}}while(0);a[l>>0]=-7;c[q>>2]=c[i+16>>2];l=c[i+12>>2]|0;c[r>>2]=l;i=0}if((l|0)>(c[Da>>2]|0)){oa=3891;break c}else{l=s;oa=83}break}case 72:{l=p+8|0;i=K;oa=83;break}case 73:{o=c[xd>>2]|0;q=p+8|0;i=c[q>>2]|0;l=o+(i*40|0)|0;o=o+(i*40|0)+8|0;if(!(b[o>>1]&9216))b[o>>1]=4;else{lh(l)|0;i=c[q>>2]|0}i=(c[p+12>>2]|0)-i|0;r=(c[p+4>>2]|0)==0?1:257;b[l+8>>1]=r;c[l+12>>2]=0;if((i|0)>0)while(1){o=l;l=l+40|0;q=o+48|0;if(!(b[q>>1]&9216))b[q>>1]=1;else Dg(l);b[q>>1]=r;c[o+52>>2]=0;if((i|0)<=1){l=m;q=pa;o=qa;i=K;break}else i=i+-1|0}else{l=m;q=pa;o=qa;i=K}break}case 74:{l=pa+((c[p+4>>2]|0)*40|0)+8|0;b[l>>1]=b[l>>1]&-160|1;l=m;q=pa;o=qa;i=K;break}case 75:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;yc(i,c[p+16>>2]|0,c[p+4>>2]|0,0,0)|0;a[i+10>>0]=sd;l=m;q=pa;o=qa;i=K;break}case 76:{o=c[mc>>2]|0;q=(c[p+4>>2]|0)+-1|0;r=o+(q*40|0)|0;l=e[o+(q*40|0)+8>>1]|0;if(l&18|0){i=c[o+(q*40|0)+12>>2]|0;if(l&16384)i=(c[r>>2]|0)+i|0;if((i|0)>(c[(c[o+(q*40|0)+32>>2]|0)+108>>2]|0)){oa=3891;break c}}l=c[p+8>>2]|0;i=pa+(l*40|0)|0;l=pa+(l*40|0)+8|0;if(b[l>>1]&9216)Dg(i);c[i>>2]=c[r>>2];c[i+4>>2]=c[r+4>>2];c[i+8>>2]=c[r+8>>2];c[i+12>>2]=c[r+12>>2];c[i+16>>2]=c[r+16>>2];b[l>>1]=b[l>>1]&-7201|2080;l=m;q=pa;o=qa;i=K;break}case 77:{q=pa+((c[p+4>>2]|0)*40|0)|0;r=c[p+12>>2]|0;s=pa+((c[p+8>>2]|0)*40|0)|0;while(1){t=s+8|0;if(!((b[t>>1]&9216)==0?!(c[s+24>>2]|0):0))Cg(s);ea=s;l=q;fa=ea+40|0;do{c[ea>>2]=c[l>>2];ea=ea+4|0;l=l+4|0}while((ea|0)<(fa|0));b[q+8>>1]=1;c[q+24>>2]=0;i=b[t>>1]|0;if(i&4096){l=i&65535;do if(l&18){do if(l&16384){o=s+12|0;l=(c[s>>2]|0)+(c[o>>2]|0)|0;if((l|0)<1)if(!(i&16))break;else i=1;else i=l;if(Eg(s,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[s+16>>2]|0)+(c[o>>2]|0)|0,0,c[s>>2]|0)|0;c[o>>2]=(c[o>>2]|0)+(c[s>>2]|0);i=b[t>>1]&-16897;b[t>>1]=i}while(0);if(c[s+24>>2]|0?(c[s+16>>2]|0)==(c[s+20>>2]|0):0)break;if(Jg(s)|0){l=p;j=h;i=zf;oa=3892;break a}i=b[t>>1]|0}while(0);b[t>>1]=i&-4097}r=r+-1|0;if(!r){l=m;q=pa;o=qa;i=K;break}else{q=q+40|0;s=s+40|0}}break}case 78:{q=c[p+12>>2]|0;r=pa+((c[p+4>>2]|0)*40|0)|0;s=pa+((c[p+8>>2]|0)*40|0)|0;while(1){t=s+8|0;if(!(b[t>>1]&9216)){c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];c[s+16>>2]=c[r+16>>2];if(!(b[r+8>>1]&2048))b[t>>1]=b[t>>1]&-7169|4096}else mh(s,r,4096);i=b[t>>1]|0;if(i&4096){l=i&65535;do if(l&18){do if(l&16384){o=s+12|0;l=(c[s>>2]|0)+(c[o>>2]|0)|0;if((l|0)<1)if(!(i&16))break;else i=1;else i=l;if(Eg(s,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[s+16>>2]|0)+(c[o>>2]|0)|0,0,c[s>>2]|0)|0;c[o>>2]=(c[o>>2]|0)+(c[s>>2]|0);i=b[t>>1]&-16897;b[t>>1]=i}while(0);if(c[s+24>>2]|0?(c[s+16>>2]|0)==(c[s+20>>2]|0):0)break;if(Jg(s)|0){l=p;j=h;i=zf;oa=3892;break a}i=b[t>>1]|0}while(0);b[t>>1]=i&-4097}if(!q){l=m;q=pa;o=qa;i=K;break d}q=q+-1|0;r=r+40|0;s=s+40|0}}case 79:{i=c[p+4>>2]|0;l=pa+(i*40|0)|0;q=c[p+8>>2]|0;o=pa+(q*40|0)|0;q=pa+(q*40|0)+8|0;if(b[q>>1]&9216){mh(o,l,4096);l=m;q=pa;o=qa;i=K;break d};c[o>>2]=c[l>>2];c[o+4>>2]=c[l+4>>2];c[o+8>>2]=c[l+8>>2];c[o+12>>2]=c[l+12>>2];c[o+16>>2]=c[l+16>>2];if(!(b[pa+(i*40|0)+8>>1]&2048)){b[q>>1]=b[q>>1]&-7169|4096;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case 80:{q=c[p+8>>2]|0;i=pa+(q*40|0)|0;o=pa+((c[p+4>>2]|0)*40|0)|0;l=c[o>>2]|0;o=c[o+4>>2]|0;q=pa+(q*40|0)+8|0;if(!(b[q>>1]&9216)){c[i>>2]=l;c[i+4>>2]=o;b[q>>1]=4;l=m;q=pa;o=qa;i=K;break d}else{Pg(i,l,o);l=m;q=pa;o=qa;i=K;break d}}case 105:{z=c[p+4>>2]|0;s=pa+(z*40|0)|0;x=c[p+8>>2]|0;w=pa+(x*40|0)|0;A=c[p+12>>2]|0;y=pa+(A*40|0)|0;r=pa+(z*40|0)+8|0;l=b[r>>1]|0;t=pa+(x*40|0)+8|0;i=b[t>>1]|0;if((i|l)&1){i=pa+(A*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;l=m;q=pa;o=qa;i=K;break d}else{Dg(y);l=m;q=pa;o=qa;i=K;break d}}do if(l&16384){q=pa+(z*40|0)+12|0;o=(c[s>>2]|0)+(c[q>>2]|0)|0;if((o|0)<1)if(!(l&16))break;else i=1;else i=o;if(Eg(s,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[pa+(z*40|0)+16>>2]|0)+(c[q>>2]|0)|0,0,c[s>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+(c[s>>2]|0);l=b[r>>1]&-16897;b[r>>1]=l;i=b[t>>1]|0}while(0);do if(i&16384){q=pa+(x*40|0)+12|0;o=(c[w>>2]|0)+(c[q>>2]|0)|0;if((o|0)<1)if(!(i&16))break;else i=1;else i=o;if(Eg(w,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[pa+(x*40|0)+16>>2]|0)+(c[q>>2]|0)|0,0,c[w>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+(c[w>>2]|0);i=b[t>>1]&-16897;b[t>>1]=i;l=b[r>>1]|0}while(0);if(!(l&18)){if(Hg(s,sd,0)|0){l=p;j=h;i=zf;oa=3892;break a}i=b[t>>1]|0}if((i&18)==0?Hg(w,sd,0)|0:0){l=p;j=h;i=zf;oa=3892;break a}q=pa+(z*40|0)+12|0;r=pa+(x*40|0)+12|0;s=(c[r>>2]|0)+(c[q>>2]|0)|0;if((s|0)>(c[Da>>2]|0)){oa=3891;break c}l=(A|0)==(x|0);if(Eg(y,s+2|0,l&1)|0){l=p;j=h;i=zf;oa=3892;break a}o=pa+(A*40|0)+8|0;b[o>>1]=b[o>>1]&15904|2;i=pa+(x*40|0)+16|0;if(!l){na=pa+(A*40|0)+16|0;ew(c[na>>2]|0,c[i>>2]|0,c[r>>2]|0)|0;i=na}ew((c[i>>2]|0)+(c[r>>2]|0)|0,c[pa+(z*40|0)+16>>2]|0,c[q>>2]|0)|0;a[(c[i>>2]|0)+s>>0]=0;a[(c[i>>2]|0)+(s+1)>>0]=0;b[o>>1]=b[o>>1]|512;c[pa+(A*40|0)+12>>2]=s;a[pa+(A*40|0)+10>>0]=sd;l=m;q=pa;o=qa;i=K;break}case 104:case 103:case 102:case 101:case 100:{s=c[p+4>>2]|0;t=pa+(s*40|0)|0;r=pa+(s*40|0)+8|0;i=e[r>>1]|0;l=i&12;if(!l)if(!(i&18))B=0;else B=nh(t)|0;else B=l&65535;x=c[p+8>>2]|0;y=pa+(x*40|0)|0;w=pa+(x*40|0)+8|0;i=e[w>>1]|0;l=i&12;if(!l)if(!(i&18))A=0;else A=nh(y)|0;else A=l&65535;C=c[p+12>>2]|0;D=pa+(C*40|0)|0;f:do if(!((B&4&A)<<16>>16)){if(!((b[w>>1]|b[r>>1])&1)){z=0;oa=245}}else{i=t;o=c[i>>2]|0;i=c[i+4>>2]|0;q=y;l=c[q>>2]|0;q=c[q+4>>2]|0;g:do switch(a[p>>0]|0){case 100:{if((i|0)>-1|(i|0)==-1&o>>>0>4294967295){na=Tv(-1,2147483647,l|0,q|0)|0;ma=L()|0;if(((q|0)>0|(q|0)==0&l>>>0>0)&((ma|0)<(i|0)|(ma|0)==(i|0)&na>>>0>>0)){z=1;oa=245;break f}}else if((q|0)<0?(ma=Tv(1,-2147483648,l|0,q|0)|0,ka=L()|0,na=Sv(o|0,i|0,1,0)|0,la=L()|0,(ka|0)>(la|0)|(ka|0)==(la|0)&ma>>>0>na>>>0):0){z=1;oa=245;break f}l=Sv(l|0,q|0,o|0,i|0)|0;i=L()|0;break}case 101:{if((o|0)==0&(i|0)==-2147483648)if((q|0)>-1|(q|0)==-1&l>>>0>4294967295){z=1;oa=245;break f}else{i=q^-2147483648;break g}if((i|0)<0|(i|0)==0&o>>>0<1){na=Tv(0,0,o|0,i|0)|0;la=L()|0;ma=Tv(-1,2147483647,l|0,q|0)|0;ka=L()|0;if(((q|0)>0|(q|0)==0&l>>>0>0)&((ka|0)<(la|0)|(ka|0)==(la|0)&ma>>>0>>0)){z=1;oa=245;break f}}else if((q|0)<0?(ma=Tv(1,-2147483648,l|0,q|0)|0,ka=L()|0,na=Tv(1,0,o|0,i|0)|0,la=L()|0,(ka|0)>(la|0)|(ka|0)==(la|0)&ma>>>0>na>>>0):0){z=1;oa=245;break f}l=Tv(l|0,q|0,o|0,i|0)|0;i=L()|0;break}case 102:{do if((i|0)>0|(i|0)==0&o>>>0>0){na=_v(-1,2147483647,o|0,i|0)|0;ma=L()|0;if((q|0)>(ma|0)|(q|0)==(ma|0)&l>>>0>na>>>0){z=1;oa=245;break f}na=Wv(0,-2147483648,o|0,i|0)|0;ma=L()|0;if((q|0)<(ma|0)|(q|0)==(ma|0)&l>>>0>>0){z=1;oa=245;break f}}else if((i|0)<0){if((q|0)>0|(q|0)==0&l>>>0>0){na=Wv(0,-2147483648,l|0,q|0)|0;ma=L()|0;if((ma|0)>(i|0)|(ma|0)==(i|0)&na>>>0>o>>>0){z=1;oa=245;break f}else break}if((q|0)<0){if((o|0)==0&(i|0)==-2147483648|(l|0)==0&(q|0)==-2147483648){z=1;oa=245;break f}na=Tv(0,0,l|0,q|0)|0;la=L()|0;ma=Tv(0,0,o|0,i|0)|0;ma=Wv(-1,2147483647,ma|0,L()|0)|0;ka=L()|0;if((ka|0)<(la|0)|(ka|0)==(la|0)&ma>>>0>>0){z=1;oa=245;break f}}}while(0);l=Yv(l|0,q|0,o|0,i|0)|0;i=L()|0;break}case 103:{if((o|0)==0&(i|0)==0)break f;if((o|0)==-1&(i|0)==-1&((l|0)==0&(q|0)==-2147483648)){z=1;oa=245;break f}l=Wv(l|0,q|0,o|0,i|0)|0;i=L()|0;break}default:{switch(o|0){case 0:{if(!i)break f;break}case -1:{if((i|0)==-1){o=1;i=0}break}default:{}}l=Zv(l|0,q|0,o|0,i|0)|0;i=L()|0}}while(0);q=D;c[q>>2]=l;c[q+4>>2]=i;l=pa+(C*40|0)+8|0;b[l>>1]=b[l>>1]&15904|4;l=m;q=pa;o=qa;i=K;break d}while(0);h:do if((oa|0)==245){oa=0;i=e[r>>1]|0;do if(!(i&8)){if(i&4|0){na=t;v=+((c[na>>2]|0)>>>0)+4294967296.0*+(c[na+4>>2]|0);break}if(!(i&18))v=0.0;else v=+Kg(a[pa+(s*40|0)+10>>0]|0,c[pa+(s*40|0)+12>>2]|0,c[pa+(s*40|0)+16>>2]|0)}else v=+g[t>>3];while(0);i=e[w>>1]|0;do if(!(i&8)){if(i&4|0){na=y;u=+((c[na>>2]|0)>>>0)+4294967296.0*+(c[na+4>>2]|0);break}if(!(i&18))u=0.0;else u=+Kg(a[pa+(x*40|0)+10>>0]|0,c[pa+(x*40|0)+12>>2]|0,c[pa+(x*40|0)+16>>2]|0)}else u=+g[y>>3];while(0);switch(a[p>>0]|0){case 100:{u=v+u;break}case 101:{u=u-v;break}case 102:{u=v*u;break}case 103:{if(v==0.0)break h;u=u/v;break}default:{i=e[r>>1]|0;do if(!(i&4)){if(i&8|0){r=Mg(+g[t>>3])|0;i=L()|0;break}if(!(i&18)){r=0;i=0}else{r=Ng(a[pa+(s*40|0)+10>>0]|0,c[pa+(s*40|0)+12>>2]|0,c[pa+(s*40|0)+16>>2]|0)|0;i=L()|0}}else{i=t;r=c[i>>2]|0;i=c[i+4>>2]|0}while(0);l=e[w>>1]|0;do if(!(l&4)){if(l&8|0){o=Mg(+g[y>>3])|0;q=L()|0;break}if(!(l&18)){o=0;q=0}else{o=Ng(a[pa+(x*40|0)+10>>0]|0,c[pa+(x*40|0)+12>>2]|0,c[pa+(x*40|0)+16>>2]|0)|0;q=L()|0}}else{q=y;o=c[q>>2]|0;q=c[q+4>>2]|0}while(0);switch(r|0){case 0:{if(!i)break h;else l=r;break}case -1:{if((i|0)==-1){l=1;i=0}else l=r;break}default:l=r}u=+((Zv(o|0,q|0,l|0,i|0)|0)>>>0)+4294967296.0*+(L()|0)}}g[rf>>3]=u;g[Hd>>3]=+g[rf>>3];if(+g[rf>>3]==+g[Hd>>3]){g[D>>3]=u;o=pa+(C*40|0)+8|0;q=b[o>>1]&15904;b[o>>1]=q|8;if(((A|B)&8)!=0|z<<24>>24!=0){l=m;q=pa;o=qa;i=K;break d}i=Mg(u)|0;l=L()|0;na=Sv(i|0,l|0,1,-2147483648)|0;ma=L()|0;if(!((ma>>>0>0|(ma|0)==0&na>>>0>1)&u==+(i>>>0)+4294967296.0*+(l|0))){l=m;q=pa;o=qa;i=K;break d}na=D;c[na>>2]=i;c[na+4>>2]=l;b[o>>1]=q|4;l=m;q=pa;o=qa;i=K;break d}}while(0);i=pa+(C*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;l=m;q=pa;o=qa;i=K;break d}else{Dg(D);l=m;q=pa;o=qa;i=K;break d}}case 82:{i=c[p+4>>2]|0;if(i){l=pa+(i*40|0)|0;i=pa+(i*40|0)+8|0;if(!(b[i>>1]&9216)){c[l>>2]=0;c[l+4>>2]=0;b[i>>1]=4;l=m;q=pa;o=qa;i=K;break d}else{Pg(l,0,0);l=m;q=pa;o=qa;i=K;break d}}else{l=m;q=pa;o=qa;i=K}break}case 99:case 98:case 97:case 96:{s=c[p+4>>2]|0;l=c[p+8>>2]|0;w=c[p+12>>2]|0;x=pa+(w*40|0)|0;q=pa+(s*40|0)+8|0;o=b[q>>1]|0;i=b[pa+(l*40|0)+8>>1]|0;if((i|o)&1){i=pa+(w*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;l=m;q=pa;o=qa;i=K;break d}else{Dg(x);l=m;q=pa;o=qa;i=K;break d}}r=pa+(l*40|0)|0;t=pa+(s*40|0)|0;i=i&65535;do if(!(i&4)){if(i&8|0){l=Mg(+g[r>>3])|0;i=L()|0;break}if(!(i&18)){l=0;i=0}else{l=Ng(a[pa+(l*40|0)+10>>0]|0,c[pa+(l*40|0)+12>>2]|0,c[pa+(l*40|0)+16>>2]|0)|0;i=L()|0;o=b[q>>1]|0}}else{i=r;l=c[i>>2]|0;i=c[i+4>>2]|0}while(0);o=o&65535;do if(!(o&4)){if(o&8|0){q=Mg(+g[t>>3])|0;s=L()|0;break}if(!(o&18)){q=0;s=0}else{q=Ng(a[pa+(s*40|0)+10>>0]|0,c[pa+(s*40|0)+12>>2]|0,c[pa+(s*40|0)+16>>2]|0)|0;s=L()|0}}else{s=t;q=c[s>>2]|0;s=c[s+4>>2]|0}while(0);o=a[p>>0]|0;i:do switch(o<<24>>24){case 96:{l=q&l;i=s&i;break}case 97:{l=q|l;i=s|i;break}default:if(!((q|0)==0&(s|0)==0)){la=(s|0)<0;ma=(s|0)>-1|(s|0)==-1&q>>>0>4294967232;ka=Tv(0,0,q|0,s|0)|0;na=L()|0;r=la?197-(o&255)&255:o;q=la?(ma?ka:64):q;o=la?(ma?na:0):s;if((o|0)>0|(o|0)==0&q>>>0>63){i=((i|0)<0&r<<24>>24!=98)<<31>>31;l=i;i=((i|0)<0)<<31>>31;break i}if(r<<24>>24==98){l=cw(l|0,i|0,q|0)|0;i=L()|0;break i}else{l=bw(l|0,i|0,q|0)|0;na=L()|0;ma=(i|0)<0;la=Tv(64,0,q|0,o|0)|0;L()|0;la=cw(-1,-1,la|0)|0;i=L()|0;l=(ma?la:0)|l;i=(ma?i:0)|na;break i}}}while(0);q=x;c[q>>2]=l;c[q+4>>2]=i;l=pa+(w*40|0)+8|0;b[l>>1]=b[l>>1]&15904|4;l=m;q=pa;o=qa;i=K;break}case 83:{i=c[p+4>>2]|0;r=pa+(i*40|0)|0;s=pa+(i*40|0)+8|0;q=b[s>>1]|0;l=q&65535;do if(!(l&4)){if(l&8|0){l=Mg(+g[r>>3])|0;o=L()|0;i=q;break}if(!(l&18)){l=0;o=0;i=q}else{l=Ng(a[pa+(i*40|0)+10>>0]|0,c[pa+(i*40|0)+12>>2]|0,c[pa+(i*40|0)+16>>2]|0)|0;o=L()|0;i=b[s>>1]|0}}else{o=r;l=c[o>>2]|0;o=c[o+4>>2]|0;i=q}while(0);q=r;c[q>>2]=l;c[q+4>>2]=o;b[s>>1]=i&15904|4;q=c[p+8>>2]|0;o=Sv(l|0,o|0,q|0,((q|0)<0)<<31>>31|0)|0;q=L()|0;l=r;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break}case 15:{q=c[p+4>>2]|0;s=pa+(q*40|0)+8|0;i=b[s>>1]|0;if(!(i&4)){r=pa+(q*40|0)|0;l=i&65535;do if(!(l&4)){if(l&8|0){v=+g[r>>3];l=Mg(v)|0;o=L()|0;na=Sv(l|0,o|0,1,-2147483648)|0;ma=L()|0;q=i&15904|4;if(!((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(l>>>0)+4294967296.0*+(o|0)))break;i=r;c[i>>2]=l;c[i+4>>2]=o;b[s>>1]=q;i=q;break}if(l&2){l=a[pa+(q*40|0)+10>>0]|0;o=pa+(q*40|0)+16|0;i=pa+(q*40|0)+12|0;if(!(Lg(c[o>>2]|0,rf,c[i>>2]|0,l)|0))i=b[s>>1]|0;else{if(Og(c[o>>2]|0,Hd,c[i>>2]|0,l)|0){v=+g[rf>>3];g[r>>3]=v;l=b[s>>1]|0;i=l|8;b[s>>1]=i;o=Mg(v)|0;q=L()|0;na=Sv(o|0,q|0,1,-2147483648)|0;ma=L()|0;if((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(o>>>0)+4294967296.0*+(q|0)){i=r;c[i>>2]=o;c[i+4>>2]=q;i=l&15904;oa=334}}else{na=Hd;oa=c[na+4>>2]|0;i=r;c[i>>2]=c[na>>2];c[i+4>>2]=oa;i=b[s>>1]|0;oa=334}if((oa|0)==334){oa=0;i=i|4;b[s>>1]=i}i=i&-3;b[s>>1]=i}}}while(0);if(!(i&4))if(!(c[p+8>>2]|0)){i=20;oa=3855;break c}else{i=K;oa=28;break d}}b[s>>1]=i&15904|4;l=m;q=pa;o=qa;i=K;break}case 84:{l=c[p+4>>2]|0;q=pa+(l*40|0)+8|0;i=b[q>>1]|0;if(!(i&4)){l=m;q=pa;o=qa;i=K}else{r=pa+(l*40|0)|0;o=i&65535;do if(!(o&8)){if(o&4|0){na=r;u=+((c[na>>2]|0)>>>0)+4294967296.0*+(c[na+4>>2]|0);break}if(!(o&18))u=0.0;else{u=+Kg(a[pa+(l*40|0)+10>>0]|0,c[pa+(l*40|0)+12>>2]|0,c[pa+(l*40|0)+16>>2]|0);i=b[q>>1]|0}}else u=+g[r>>3];while(0);g[r>>3]=u;b[q>>1]=i&15904|8;l=m;q=pa;o=qa;i=K}break}case 85:{o=c[p+4>>2]|0;s=pa+(o*40|0)|0;q=pa+(o*40|0)+8|0;l=b[q>>1]|0;do if(l&16384){r=pa+(o*40|0)+12|0;i=(c[s>>2]|0)+(c[r>>2]|0)|0;if((i|0)<1)if(!(l&16)){i=0;break}else i=1;if(!(Eg(s,i,1)|0)){gw((c[pa+(o*40|0)+16>>2]|0)+(c[r>>2]|0)|0,0,c[s>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+(c[s>>2]|0);b[q>>1]=b[q>>1]&-16897;i=0}else i=7}else i=0;while(0);Sg(s,c[p+8>>2]&255,sd);if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 57:case 54:case 55:case 56:case 52:case 53:{s=c[p+4>>2]|0;y=pa+(s*40|0)|0;w=c[p+12>>2]|0;x=pa+(w*40|0)|0;A=pa+(s*40|0)+8|0;i=b[A>>1]|0;B=pa+(w*40|0)+8|0;l=b[B>>1]|0;q=i&65535;t=l&65535;r=(l|i)&65535;C=p+2|0;o=e[C>>1]|0;do if(r&1){if(o&128|0){if(!((i&1&l)<<16>>16!=0&(t&256|0)==0)){r=(t<<1&2^2)+-1|0;oa=389;break}q=z;o=(z&255)+-52|0;oa=392;break}if(!(o&32))if(!(o&16)){l=m;q=pa;o=qa;i=K;break d}else{i=K;oa=28;break d}else{l=pa+((c[p+8>>2]|0)*40|0)+8|0;b[l>>1]=b[l>>1]&15904|1;l=m;q=pa;o=1;i=K;break d}}else{o=o&71;if(o>>>0>66){if(r&2){if((q&14|0)==2){o=a[pa+(s*40|0)+10>>0]|0;q=pa+(s*40|0)+16|0;l=pa+(s*40|0)+12|0;if(Lg(c[q>>2]|0,rf,c[l>>2]|0,o)|0){if(!(Og(c[q>>2]|0,Hd,c[l>>2]|0,o)|0)){na=Hd;oa=c[na+4>>2]|0;l=y;c[l>>2]=c[na>>2];c[l+4>>2]=oa;l=4}else{g[y>>3]=+g[rf>>3];l=8}b[A>>1]=b[A>>1]&-3|l}r=b[B>>1]|0}else r=l;if((r&14)==2){o=a[pa+(w*40|0)+10>>0]|0;q=pa+(w*40|0)+16|0;l=pa+(w*40|0)+12|0;if(!(Lg(c[q>>2]|0,rf,c[l>>2]|0,o)|0))l=b[B>>1]|0;else{if(!(Og(c[q>>2]|0,Hd,c[l>>2]|0,o)|0)){na=Hd;oa=c[na+4>>2]|0;l=x;c[l>>2]=c[na>>2];c[l+4>>2]=oa;l=4}else{g[x>>3]=+g[rf>>3];l=8}l=b[B>>1]&-3|l;b[B>>1]=l}s=r}else{s=r;l=r}}else s=l;if(!((l&4&b[A>>1])<<16>>16))l=s;else{r=x;q=c[r>>2]|0;r=c[r+4>>2]|0;o=y;l=c[o>>2]|0;o=c[o+4>>2]|0;if(!((r|0)>(o|0)|(r|0)==(o|0)&q>>>0>l>>>0)){r=((r|0)<(o|0)|(r|0)==(o|0)&q>>>0>>0)<<31>>31;l=s;oa=389;break}o=a[p>>0]|0;r=1;l=s;q=o;o=(o&255)+-52|0;oa=393;break}}else if((o|0)==66){if(!((q&2|0)!=0|(q&12|0)==0)){Hg(y,sd,1)|0;i=(q&49631|b[A>>1]&15904)&65535}if(!((t&2|0)!=0|(t&12|0)==0)){Hg(x,sd,1)|0;l=(t&49631|b[B>>1]&15904)&65535}}r=Tg(x,y,c[p+16>>2]|0)|0;oa=389}while(0);do if((oa|0)==389){oa=0;if((r|0)>=0){q=a[p>>0]|0;o=(q&255)+-52|0;if(!r){oa=392;break}else{oa=393;break}}else{na=a[p>>0]|0;s=r;o=34207+((na&255)+-52)|0;r=na;break}}while(0);if((oa|0)==392){oa=0;s=0;o=34213+o|0;r=q}else if((oa|0)==393){oa=0;s=r;o=34219+o|0;r=q}o=a[o>>0]|0;q=o&255;b[A>>1]=i;b[B>>1]=l;l=e[C>>1]|0;if(!(l&32))if(!(o<<24>>24)){l=m;q=pa;o=qa;i=K;break d}else{i=K;oa=28;break d}i=c[p+8>>2]|0;if(l&8|0?(q|0)==(r<<24>>24==53|0):0){l=m;q=pa;o=s;i=K;break d}l=pa+(i*40|0)+8|0;b[l>>1]=b[l>>1]&15904|4;l=pa+(i*40|0)|0;c[l>>2]=o&255;c[l+4>>2]=0;l=m;q=pa;o=s;i=K;break}case 58:{if(!qa){l=m;q=pa;o=0;i=K}else{i=K;oa=28}break}case -88:case 61:{l=a[qf>>0]|0;do if(l&65?((d[vf>>0]|d[vf+1>>0]<<8)&16)==0:0){i=c[p+16>>2]|0;if(!i){i=c[hd>>2]|0;if(!i)break}if(l&64){na=c[of>>2]|0;i=_c(f,i)|0;bb[na&127](c[pf>>2]|0,i);if(!i)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}if((c[Lb>>2]|0)<=1){Za[c[of>>2]&127](1,c[pf>>2]|0,f,i)|0;break}c[ze>>2]=i;i=dd(Cf,34793,ze)|0;Za[c[of>>2]&127](1,c[pf>>2]|0,f,i)|0;if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}}while(0);q=p+4|0;i=c[q>>2]|0;if((i|0)>=(c[7392]|0)){if((a[p>>0]|0)==-88){l=m;q=pa;o=qa;i=K;break d}l=c[wb>>2]|0;if((l|0)>1){o=c[le>>2]|0;i=1;do{if((a[o+(i*20|0)>>0]|0)==17)c[o+(i*20|0)+4>>2]=0;i=i+1|0}while((i|0)!=(l|0))}c[q>>2]=0;i=0}c[q>>2]=i+1;c[ib>>2]=(c[ib>>2]|0)+1;i=K;oa=28;break}case 87:{if(!(b[p+2>>1]&1))q=0;else q=(c[p+-4>>2]|0)+4|0;s=c[p+12>>2]|0;t=c[p+16>>2]|0;w=c[p+4>>2]|0;x=c[p+8>>2]|0;if((s|0)>0){r=t+16|0;j:do if(!q){l=0;while(1){i=a[(c[r>>2]|0)+l>>0]|0;o=Tg(pa+((l+w|0)*40|0)|0,pa+((l+x|0)*40|0)|0,c[t+20+(l<<2)>>2]|0)|0;l=l+1|0;if(o|0)break j;if((l|0)>=(s|0)){l=m;q=pa;o=0;i=K;break d}}}else{l=0;while(1){o=c[q+(l<<2)>>2]|0;i=a[(c[r>>2]|0)+l>>0]|0;o=Tg(pa+((o+w|0)*40|0)|0,pa+((o+x|0)*40|0)|0,c[t+20+(l<<2)>>2]|0)|0;l=l+1|0;if(o|0)break j;if((l|0)>=(s|0)){l=m;q=pa;o=0;i=K;break d}}}while(0);l=m;q=pa;o=i<<24>>24==0?o:0-o|0;i=K}else{l=m;q=pa;o=qa;i=K}break}case 16:{if((qa|0)<0){l=m;q=pa;o=qa;p=m+(((c[p+4>>2]|0)+-1|0)*20|0)|0;i=K;break d}if(!qa){l=m;q=pa;o=0;p=m+(((c[p+8>>2]|0)+-1|0)*20|0)|0;i=K;break d}else{l=m;q=pa;o=qa;p=m+(((c[p+12>>2]|0)+-1|0)*20|0)|0;i=K;break d}}case 43:case 44:{i=c[p+4>>2]|0;l=pa+(i*40|0)|0;o=e[pa+(i*40|0)+8>>1]|0;if(!(o&4))if(!(o&1)){if(!(o&8))if(!(o&18))u=0.0;else u=+Kg(a[pa+(i*40|0)+10>>0]|0,c[pa+(i*40|0)+12>>2]|0,c[pa+(i*40|0)+16>>2]|0);else u=+g[l>>3];q=u!=0.0&1}else q=2;else{q=l;q=((c[q>>2]|0)!=0|(c[q+4>>2]|0)!=0)&1}i=c[p+8>>2]|0;l=pa+(i*40|0)|0;o=e[pa+(i*40|0)+8>>1]|0;if(!(o&4))if(!(o&1)){if(!(o&8))if(!(o&18))u=0.0;else u=+Kg(a[pa+(i*40|0)+10>>0]|0,c[pa+(i*40|0)+12>>2]|0,c[pa+(i*40|0)+16>>2]|0);else u=+g[l>>3];i=u!=0.0&1}else i=2;else{i=l;i=((c[i>>2]|0)!=0|(c[i+4>>2]|0)!=0)&1}i=a[((a[p>>0]|0)==44?34225:34234)+(i+(q*3|0))>>0]|0;l=c[p+12>>2]|0;if(i<<24>>24==2){l=pa+(l*40|0)+8|0;b[l>>1]=b[l>>1]&15904|1;l=m;q=pa;o=qa;i=K;break d}else{q=pa+(l*40|0)|0;c[q>>2]=i&255;c[q+4>>2]=0;l=pa+(l*40|0)+8|0;b[l>>1]=b[l>>1]&15904|4;l=m;q=pa;o=qa;i=K;break d}}case 88:{r=c[p+8>>2]|0;s=pa+(r*40|0)|0;l=c[p+4>>2]|0;o=pa+(l*40|0)|0;q=e[pa+(l*40|0)+8>>1]|0;if(!(q&4)){i=c[p+12>>2]|0;if(!(q&1)){if(!(q&8))if(!(q&18))u=0.0;else u=+Kg(a[pa+(l*40|0)+10>>0]|0,c[pa+(l*40|0)+12>>2]|0,c[pa+(l*40|0)+16>>2]|0);else u=+g[o>>3];i=u!=0.0&1}}else{i=o;i=((c[i>>2]|0)!=0|(c[i+4>>2]|0)!=0)&1}l=c[p+16>>2]^i;o=((l|0)<0)<<31>>31;i=pa+(r*40|0)+8|0;if(!(b[i>>1]&9216)){q=s;c[q>>2]=l;c[q+4>>2]=o;b[i>>1]=4;l=m;q=pa;o=qa;i=K;break d}else{Pg(s,l,o);l=m;q=pa;o=qa;i=K;break d}}case 19:{l=c[p+4>>2]|0;q=c[p+8>>2]|0;r=pa+(q*40|0)|0;i=b[pa+(l*40|0)+8>>1]|0;if(i&1){i=pa+(q*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;l=m;q=pa;o=qa;i=K;break d}else{Dg(r);l=m;q=pa;o=qa;i=K;break d}}o=pa+(l*40|0)|0;i=i&65535;if(!(i&4))if(!(i&1)){if(!(i&8))if(!(i&18))u=0.0;else u=+Kg(a[pa+(l*40|0)+10>>0]|0,c[pa+(l*40|0)+12>>2]|0,c[pa+(l*40|0)+16>>2]|0);else u=+g[o>>3];i=u!=0.0}else i=0;else{i=o;i=(c[i>>2]|0)!=0|(c[i+4>>2]|0)!=0}l=(i^1)&1;i=pa+(q*40|0)+8|0;if(!(b[i>>1]&9216)){q=r;c[q>>2]=l;c[q+4>>2]=0;b[i>>1]=4;l=m;q=pa;o=qa;i=K;break d}else{Pg(r,l,0);l=m;q=pa;o=qa;i=K;break d}}case 107:{o=c[p+4>>2]|0;i=c[p+8>>2]|0;r=pa+(i*40|0)|0;i=pa+(i*40|0)+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else Dg(r);l=pa+(o*40|0)+8|0;if(!(b[l>>1]&1)){q=pa+(o*40|0)|0;b[i>>1]=4;i=e[l>>1]|0;do if(!(i&4)){if(i&8|0){i=Mg(+g[q>>3])|0;l=L()|0;break}if(!(i&18)){i=0;l=0}else{i=Ng(a[pa+(o*40|0)+10>>0]|0,c[pa+(o*40|0)+12>>2]|0,c[pa+(o*40|0)+16>>2]|0)|0;l=L()|0}}else{l=q;i=c[l>>2]|0;l=c[l+4>>2]|0}while(0);q=r;c[q>>2]=~i;c[q+4>>2]=~l;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case 17:{i=c[nc>>2]|0;if(!i){l=c[(c[le>>2]|0)+4>>2]|0;i=p+4|0;if((l|0)==(c[i>>2]|0)){i=K;oa=28;break d}}else{o=(p-(c[le>>2]|0)|0)/20|0;i=(c[i+24>>2]|0)+(o>>>3)|0;l=d[i>>0]|0;o=1<<(o&7);if(o&l|0){i=K;oa=28;break d}a[i>>0]=o|l;i=p+4|0;l=c[(c[le>>2]|0)+4>>2]|0}c[i>>2]=l;l=m;q=pa;o=qa;i=K;break}case 18:{l=c[p+4>>2]|0;o=pa+(l*40|0)|0;q=e[pa+(l*40|0)+8>>1]|0;if(!(q&4)){i=c[p+12>>2]|0;if(!(q&1)){if(!(q&8))if(!(q&18))u=0.0;else u=+Kg(a[pa+(l*40|0)+10>>0]|0,c[pa+(l*40|0)+12>>2]|0,c[pa+(l*40|0)+16>>2]|0);else u=+g[o>>3];i=u!=0.0&1}}else{i=o;i=((c[i>>2]|0)!=0|(c[i+4>>2]|0)!=0)&1}if(!i){l=m;q=pa;o=qa;i=K}else{i=K;oa=28}break}case 20:{i=c[p+4>>2]|0;l=pa+(i*40|0)|0;o=e[pa+(i*40|0)+8>>1]|0;if(o&4|0){na=l;if((c[na>>2]|0)==0&(c[na+4>>2]|0)==0){i=K;oa=28;break d}else{l=m;q=pa;o=qa;i=K;break d}}if(o&1|0)if(!(c[p+12>>2]|0)){l=m;q=pa;o=qa;i=K;break d}else{i=K;oa=28;break d}if(!(o&8)){if(!(o&18)){i=K;oa=28;break d}u=+Kg(a[pa+(i*40|0)+10>>0]|0,c[pa+(i*40|0)+12>>2]|0,c[pa+(i*40|0)+16>>2]|0)}else u=+g[l>>3];if(u!=0.0){l=m;q=pa;o=qa;i=K}else{i=K;oa=28}break}case 50:{if(!(b[pa+((c[p+4>>2]|0)*40|0)+8>>1]&1)){l=m;q=pa;o=qa;i=K}else{i=K;oa=28}break}case 51:{if(!(b[pa+((c[p+4>>2]|0)*40|0)+8>>1]&1)){i=K;oa=28}else{l=m;q=pa;o=qa;i=K}break}case 21:{if(a[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+2>>0]|0){i=c[p+12>>2]|0;l=pa+(i*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=1;i=K;oa=28;break d}else{Dg(pa+(i*40|0)|0);i=K;oa=28;break d}}else{l=m;q=pa;o=qa;i=K}break}case 90:{o=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;l=c[p+8>>2]|0;do if(!(a[o+3>>0]|0)){if(a[c[o+40>>2]>>0]|0){i=sh(o)|0;oa=508}}else{i=c[o+24>>2]|0;if(i|0?(Kd=c[i+(l+1<<2)>>2]|0,(Kd|0)>0):0){l=Kd+-1|0;o=c[o+36>>2]|0;break}i=rh(o)|0;oa=508}while(0);if((oa|0)==508){oa=0;if(i){oa=601;break c}}F=c[p+12>>2]|0;H=pa+(F*40|0)|0;E=c[o+72>>2]|0;r=o+28|0;i=c[ua>>2]|0;k:do if((c[r>>2]|0)!=(i|0)){do if(a[o+2>>0]|0){if((a[o>>0]|0)==3){q=c[o+32>>2]|0;x=c[pa+(q*40|0)+12>>2]|0;c[o+84>>2]=x;c[o+80>>2]=x;q=c[pa+(q*40|0)+16>>2]|0;x=o+76|0;c[x>>2]=q;break}i=pa+(F*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;break k}else{Dg(H);break k}}else{na=c[o+40>>2]|0;bg(na);oa=c[na+44>>2]|0;c[o+80>>2]=oa;i=e[na+48>>1]|0;q=c[na+40>>2]|0;na=(c[(c[na+116>>2]|0)+60>>2]|0)-q|0;c[o+84>>2]=(na|0)<(i|0)?((na|0)>0?na:0):i;i=o+76|0;c[i>>2]=q;if(oa>>>0>(c[Da>>2]|0)>>>0){oa=518;break c}x=i;i=c[ua>>2]|0}while(0);c[r>>2]=i;oa=a[q>>0]|0;i=oa&255;if(oa<<24>>24>-1){c[E>>2]=i;w=1}else{r=d[q+1>>0]|0;do if(r&128){s=d[q+2>>0]|0;if(!(s&128)){c[E>>2]=(i<<14|s)&2080895|r<<7&16256;i=3;break}else{i=Of(q,rf)|0;na=rf;oa=c[na>>2]|0;c[E>>2]=((oa|0)==(oa|0)?0==(c[na+4>>2]|0):0)?oa:-1;break}}else{c[E>>2]=i<<7&16256|r;i=2}while(0);w=i&255}t=o+48|0;c[t>>2]=w;r=o+58|0;b[r>>1]=0;i=o+84|0;s=c[E>>2]|0;if((c[i>>2]|0)>>>0>=s>>>0){q=c[x>>2]|0;i=0;oa=540;break}c[x>>2]=0;c[i>>2]=0;oa=c[E>>2]|0;if(oa>>>0<=98307?oa>>>0<=(c[o+80>>2]|0)>>>0:0){i=0;oa=532}else oa=597}else{i=o+58|0;r=i;i=b[i>>1]|0;oa=532}while(0);do if((oa|0)==532){if((l|0)<(i&65535|0)){r=c[o+88+(l<<2)>>2]|0;oa=576;break}x=o+48|0;w=c[x>>2]|0;s=c[E>>2]|0;if(w>>>0>>0){q=c[o+76>>2]|0;if(!q){ea=Hd;fa=ea+40|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));s=c[o+40>>2]|0;t=c[E>>2]|0;oa=e[s+48>>1]|0;q=c[s+40>>2]|0;na=(c[(c[s+116>>2]|0)+60>>2]|0)-q|0;if(t>>>0>((na|0)<(oa|0)?((na|0)>0?na:0):oa)>>>0){i=uh(s,0,t,Hd)|0;if(i|0){oa=601;break c}i=b[r>>1]|0;s=c[x>>2]|0;q=c[Yb>>2]|0}else{c[Yb>>2]=q;b[_b>>1]=4112;c[ac>>2]=t;s=w}t=x;w=s;s=c[E>>2]|0;oa=540}else{t=x;oa=540}}else{q=0;oa=566}}while(0);do if((oa|0)==540){B=i&65535;D=q+s|0;i=B;s=q+w|0;B=c[E+(B<<2)>>2]|0;C=0;do{oa=a[s>>0]|0;w=oa&255;A=o+88+(i<<2)|0;c[A>>2]=w;if(oa<<24>>24>-1){s=s+1|0;y=w;w=d[3520+w>>0]|0;x=0}else{x=d[s>>0]|0;y=d[s+1>>0]|0;do if(y&128){z=d[s+2>>0]|0;if(!(z&128)){w=3;x=(x<<14|z)&2080895|y<<7&16256;oa=549;break}w=Of(s,rf)|0;oa=rf;x=c[oa>>2]|0;if((x|0)==(x|0)?0==(c[oa+4>>2]|0):0)oa=549;else{c[A>>2]=-1;x=-1;s=s+(w&255)|0;oa=550}}else{w=2;x=x<<7&16256|y;oa=549}while(0);if((oa|0)==549){oa=0;s=s+(w&255)|0;c[A>>2]=x;if(x>>>0>127)oa=550;else w=d[3520+x>>0]|0}if((oa|0)==550)w=(x+-12|0)>>>1;y=x;x=0}B=Sv(w|0,x|0,B|0,C|0)|0;C=L()|0;oa=i;i=i+1|0;c[E+(i<<2)>>2]=B;w=s>>>0>>0}while((oa|0)<(l|0)&w);if(!w)if(s>>>0<=D>>>0?((C|0)==0?(B|0)==(c[o+80>>2]|0):0):0){w=C;x=B;oa=558}else oa=559;else{w=0;x=c[o+80>>2]|0;oa=558}if((oa|0)==558){oa=0;if(C>>>0>w>>>0|(C|0)==(w|0)&B>>>0>x>>>0)oa=559}if((oa|0)==559)if(!(c[E>>2]|0)){i=0;s=D}else{if(c[o+76>>2]|0){oa=597;break}if((b[_b>>1]&9216)==0&(c[fc>>2]|0)==0){oa=597;break}Cg(Hd);oa=597;break}i=i&65535;b[r>>1]=i;c[t>>2]=s-q;if((c[o+76>>2]|0)==0?!((b[_b>>1]&9216)==0&(c[fc>>2]|0)==0):0){Cg(Hd);q=y;i=b[r>>1]|0;oa=566}else{q=y;oa=566}}while(0);do if((oa|0)==566){oa=0;if((l|0)>=(i&65535|0)){if((a[p+1>>0]|0)!=-11){i=pa+(F*40|0)+8|0;if(!(b[i>>1]&9216)){b[i>>1]=1;break}else{Dg(H);break}}l=c[p+16>>2]|0;i=pa+(F*40|0)+8|0;if(b[i>>1]&9216){mh(H,l,2048);break};c[H>>2]=c[l>>2];c[H+4>>2]=c[l+4>>2];c[H+8>>2]=c[l+8>>2];c[H+12>>2]=c[l+12>>2];c[H+16>>2]=c[l+16>>2];if(!(b[l+8>>1]&2048))b[i>>1]=b[i>>1]&-7169|2048}else{r=q;oa=576}}else if((oa|0)==597){oa=0;i=c[m+12>>2]|0;if((i|0)<=0){oa=599;break c}p=m+((i+-1|0)*20|0)|0}while(0);l:do if((oa|0)==576){oa=0;s=pa+(F*40|0)+8|0;if(b[s>>1]&9216)Dg(H);if((c[o+84>>2]|0)>>>0>=(c[E+(l+1<<2)>>2]|0)>>>0){o=(c[o+76>>2]|0)+(c[E+(l<<2)>>2]|0)|0;if(r>>>0<12){Ug(o,r,H)|0;break}q=(r+-12|0)>>>1;c[pa+(F*40|0)+12>>2]=q;a[pa+(F*40|0)+10>>0]=sd;i=q+2|0;if((c[pa+(F*40|0)+24>>2]|0)<(i|0)){b[s>>1]=1;if(Eg(H,i,0)|0){oa=602;break c}l=pa+(F*40|0)+16|0;i=l;l=c[l>>2]|0}else{l=c[pa+(F*40|0)+20>>2]|0;i=pa+(F*40|0)+16|0;c[i>>2]=l}ew(l|0,o|0,q|0)|0;a[(c[i>>2]|0)+q>>0]=0;a[(c[i>>2]|0)+(q+1)>>0]=0;b[s>>1]=b[31112+((r&1)<<1)>>1]|0;break}a[pa+(F*40|0)+10>>0]=sd;na=b[p+2>>1]|0;if(!((na&192)!=0?!((r>>>0<12|(r&1|0)!=0)&(na&128)==0):0))oa=588;do if((oa|0)==588){oa=0;if(r>>>0<=127){i=a[3520+r>>0]|0;if(!(i<<24>>24))break;else q=i&255}else q=(r+-12|0)>>>1;o=c[o+40>>2]|0;i=c[E+(l<<2)>>2]|0;na=e[o+48>>1]|0;l=c[o+40>>2]|0;ma=(c[(c[o+116>>2]|0)+60>>2]|0)-l|0;if((i+q|0)>>>0>((ma|0)<(na|0)?((ma|0)>0?ma:0):na)>>>0){i=uh(o,i,q,H)|0;if(i|0){oa=601;break c}i=c[pa+(F*40|0)+16>>2]|0}else{i=l+i|0;c[pa+(F*40|0)+16>>2]=i;b[s>>1]=4112;c[pa+(F*40|0)+12>>2]=q}Ug(i,r,H)|0;b[s>>1]=b[s>>1]&-4097;break l}while(0);Ug(59040,r,H)|0}while(0);l=m;q=pa;o=qa;i=0;break}case 91:{i=c[p+16>>2]|0;s=i;t=pa+((c[p+4>>2]|0)*40|0)|0;i=a[i>>0]|0;while(1){s=s+1|0;do if(i<<24>>24>66){r=t+8|0;o=b[r>>1]|0;i=o&65535;if(!(i&4)){if(i&8|0){v=+g[t>>3];i=Mg(v)|0;l=L()|0;na=Sv(i|0,l|0,1,-2147483648)|0;ma=L()|0;if(!((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(i>>>0)+4294967296.0*+(l|0)))break;na=t;c[na>>2]=i;c[na+4>>2]=l;b[r>>1]=o&15904|4;break}if(i&2|0?(Ld=a[t+10>>0]|0,Md=t+16|0,Od=t+12|0,Lg(c[Md>>2]|0,rf,c[Od>>2]|0,Ld)|0):0){if(Og(c[Md>>2]|0,Hd,c[Od>>2]|0,Ld)|0){v=+g[rf>>3];g[t>>3]=v;l=b[r>>1]|0;i=l|8;b[r>>1]=i;o=Mg(v)|0;q=L()|0;na=Sv(o|0,q|0,1,-2147483648)|0;ma=L()|0;if((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(o>>>0)+4294967296.0*+(q|0)){i=t;c[i>>2]=o;c[i+4>>2]=q;i=l&15904;oa=613}}else{na=Hd;oa=c[na+4>>2]|0;i=t;c[i>>2]=c[na>>2];c[i+4>>2]=oa;i=b[r>>1]|0;oa=613}if((oa|0)==613){oa=0;i=i|4;b[r>>1]=i}b[r>>1]=i&-3}}}else if(i<<24>>24==66){l=t+8|0;i=b[l>>1]|0;na=i&65535;if(!((na&2|0)!=0|(na&12|0)==0)){Hg(t,sd,1)|0;i=b[l>>1]|0}b[l>>1]=i&-13}while(0);i=a[s>>0]|0;if(!(i<<24>>24)){l=m;q=pa;o=qa;i=K;break}else t=t+40|0}break}case 92:{i=c[p+16>>2]|0;E=pa+((c[p+4>>2]|0)*40|0)|0;F=E+(((c[p+8>>2]|0)+-1|0)*40|0)|0;x=a[pc>>0]|0;H=c[p+12>>2]|0;I=pa+(H*40|0)|0;if(i|0){t=E;w=i;i=a[i>>0]|0;do{s=t;t=t+40|0;w=w+1|0;do if(i<<24>>24>66){r=s+8|0;o=b[r>>1]|0;i=o&65535;if(!(i&4)){if(i&8|0){v=+g[s>>3];i=Mg(v)|0;l=L()|0;na=Sv(i|0,l|0,1,-2147483648)|0;ma=L()|0;if(!((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(i>>>0)+4294967296.0*+(l|0)))break;na=s;c[na>>2]=i;c[na+4>>2]=l;b[r>>1]=o&15904|4;break}if(i&2|0?(Pd=a[s+10>>0]|0,Qd=s+16|0,Rd=s+12|0,Lg(c[Qd>>2]|0,rf,c[Rd>>2]|0,Pd)|0):0){do if(!(Og(c[Qd>>2]|0,Hd,c[Rd>>2]|0,Pd)|0)){na=Hd;oa=c[na+4>>2]|0;i=s;c[i>>2]=c[na>>2];c[i+4>>2]=oa;i=b[r>>1]|0;oa=634}else{v=+g[rf>>3];g[s>>3]=v;l=b[r>>1]|0;i=l|8;b[r>>1]=i;o=Mg(v)|0;q=L()|0;na=Sv(o|0,q|0,1,-2147483648)|0;ma=L()|0;if(!((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(o>>>0)+4294967296.0*+(q|0)))break;i=s;c[i>>2]=o;c[i+4>>2]=q;i=l&15904;oa=634}while(0);if((oa|0)==634){oa=0;i=i|4;b[r>>1]=i}b[r>>1]=i&-3}}}else if(i<<24>>24==66){l=s+8|0;i=b[l>>1]|0;na=i&65535;if(!((na&2|0)!=0|(na&12|0)==0)){Hg(s,sd,1)|0;i=b[l>>1]|0}b[l>>1]=i&-13}while(0);i=a[w>>0]|0}while(i<<24>>24!=0)}B=(x&255)>3;C=0;A=F;z=0;y=0;s=0;t=0;while(1){w=A+8|0;r=b[w>>1]|0;l=r&65535;do if(!(l&1)){if(!(l&4)){if(l&8|0){o=8;x=7;break}i=c[A+12>>2]|0;if(l&16384)i=(c[A>>2]|0)+i|0;o=i;x=(i<<1)+12|l>>>1&1;break}l=A;i=c[l>>2]|0;l=c[l+4>>2]|0;q=aw(i|0,l|0,63)|0;q=q^i;o=(L()|0)^l;if(o>>>0<0|(o|0)==0&q>>>0<128){if(!(B&((i&1|0)==(i|0)&0==(l|0)))){o=1;x=1;break}o=0;x=q+8|0;break}if(!(o>>>0<0|(o|0)==0&q>>>0<32768))if(o>>>0<0|(o|0)==0&q>>>0<8388608){o=3;x=3}else{na=o>>>0<0|(o|0)==0&q>>>0<2147483648;x=o>>>0<32768|(o|0)==32768&q>>>0<0;o=na?4:x?6:8;x=na?4:x?5:6}else{o=2;x=2}}else{o=0;x=0}while(0);do if(!(r&16384)){i=o;oa=666}else{if(!x){w=Sv(z|0,y|0,o|0,0)|0;i=10;o=1;x=L()|0;D=s;break}if((z|0)==0&(y|0)==0){i=c[A>>2]|0;s=Sv(s|0,t|0,i|0,((i|0)<0)<<31>>31|0)|0;i=o-i|0;t=L()|0;oa=666;break}l=A+12|0;i=(c[A>>2]|0)+(c[l>>2]|0)|0;if((i|0)<1)if(!(r&16)){i=o;oa=666;break}else i=1;if(Eg(A,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[A+16>>2]|0)+(c[l>>2]|0)|0,0,c[A>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+(c[A>>2]|0);b[w>>1]=b[w>>1]&-16897;i=o;oa=666}while(0);if((oa|0)==666){oa=0;q=Sv(z|0,y|0,i|0,0)|0;r=L()|0;if(x>>>0<128){i=x;o=1;w=q;x=r;D=s}else{o=1;i=x;l=0;while(1){i=bw(i|0,l|0,7)|0;l=L()|0;if((i|0)==0&(l|0)==0){i=x;w=q;x=r;D=s;break}else o=o+1|0}}}C=o+C|0;c[A+28>>2]=i;if((A|0)==(E|0))break;else{A=A+-40|0;z=w;y=x;s=D}}if(C>>>0<127)r=C+1|0;else{r=1;i=C;l=0;while(1){i=bw(i|0,l|0,7)|0;l=L()|0;if((i|0)==0&(l|0)==0)break;else r=r+1|0}l=r+C|0;i=1;o=l;q=0;while(1){o=bw(o|0,q|0,7)|0;q=L()|0;if((o|0)==0&(q|0)==0)break;else i=i+1|0}r=l+(r>>>0>>0&1)|0}q=((r|0)<0)<<31>>31;z=Sv(w|0,x|0,r|0,q|0)|0;i=Sv(z|0,L()|0,D|0,t|0)|0;l=L()|0;o=c[pa+(H*40|0)+24>>2]|0;na=((o|0)<0)<<31>>31;do if((l|0)>(na|0)|(l|0)==(na|0)&i>>>0>o>>>0){na=c[Da>>2]|0;ma=((na|0)<0)<<31>>31;if((l|0)>(ma|0)|(l|0)==(ma|0)&i>>>0>na>>>0){oa=3891;break c}if((o|0)>=(z|0)){y=c[pa+(H*40|0)+20>>2]|0;c[pa+(H*40|0)+16>>2]=y;na=pa+(H*40|0)+8|0;b[na>>1]=b[na>>1]&13;break}if(Eg(I,z,0)|0){l=p;j=h;i=zf;oa=3892;break a}y=c[pa+(H*40|0)+16>>2]|0}else{y=c[pa+(H*40|0)+20>>2]|0;c[pa+(H*40|0)+16>>2]=y}while(0);do if(r>>>0>=128)if(r>>>0<16384){i=bw(r|0,q|0,7)|0;L()|0;a[y>>0]=i&255|-128;a[y+1>>0]=r&127;i=2;break}else{i=wh(y,r,q)|0;break}else{a[y>>0]=r;i=1}while(0);o=i&255;x=r;w=E;while(1){l=c[w+28>>2]|0;do if(l>>>0<128){a[y+o>>0]=l;i=o+1|0;o=y+x|0;if((l+-1|0)>>>0>=7)if(l>>>0>11){oa=699;break}else{l=0;break}s=w;l=d[3520+l>>0]|0;q=l;r=c[s>>2]|0;s=c[s+4>>2]|0;do{q=q+-1|0;a[o+q>>0]=r;r=bw(r|0,s|0,8)|0;s=L()|0}while((q|0)!=0)}else{i=y+o|0;if(l>>>0<16384){a[i>>0]=l>>>7&255|-128;a[i+1>>0]=l&127;i=2}else i=wh(i,l,0)|0;i=(i&255)+o|0;o=y+x|0;oa=699}while(0);if((oa|0)==699){oa=0;l=c[w+12>>2]|0;if(!l)l=0;else ew(o|0,c[w+16>>2]|0,l|0)|0}w=w+40|0;if(w>>>0>F>>>0)break;else{o=i;x=l+x|0}}c[pa+(H*40|0)+12>>2]=z;i=pa+(H*40|0)+8|0;b[i>>1]=16;if((D|0)==0&(t|0)==0){l=m;q=pa;o=qa;i=K}else{c[I>>2]=D;b[i>>1]=16400;l=m;q=pa;o=qa;i=K}break}case 93:{F=c[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+40>>2]|0;i=xh(F)|0;switch(i|0){case 16:{q=0;o=0;break}case 0:{y=F+116|0;z=F+70|0;A=F+68|0;B=F+50|0;C=F+1|0;D=F+20|0;E=F+2|0;q=0;o=0;m:while(1){l=c[y>>2]|0;if(!(a[l+8>>0]|0)){t=(a[l+2>>0]|0)==0;r=b[l+24>>1]|0;q=Sv((t?r&65535:0)|0,(t?0:0)|0,q|0,o|0)|0;o=L()|0;t=l;x=b[z>>1]|0;s=l}else{q=Sv(q|0,o|0,e[l+24>>1]|0,0)|0;o=L()|0;do{i=a[A>>0]|0;if(!(i<<24>>24))break m;b[B>>1]=0;a[C>>0]=a[C>>0]&-7;s=b[F+72+((i<<24>>24)+-1<<1)>>1]|0;b[z>>1]=s;r=i+-1<<24>>24;a[A>>0]=r;r=c[F+120+(r<<24>>24<<2)>>2]|0;c[y>>2]=r;i=c[l+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);l=c[y>>2]|0;w=l;i=b[z>>1]|0}else{w=c[i+20>>2]|0;l=w+120|0;c[l>>2]=(c[l>>2]|0)+-1;w=w+136|0;c[i+16>>2]=c[w>>2];c[w>>2]=i;w=r;l=r;i=s}r=b[l+24>>1]|0}while((i&65535)>=(r&65535));x=i+1<<16>>16;b[z>>1]=x;t=l;s=w}i=c[t+56>>2]|0;if(x<<16>>16==r<<16>>16){i=i+((d[t+9>>0]|0)+8)|0;l=a[A>>0]|0;if(l<<24>>24>18){oa=717;break c}i=d[i>>0]<<24|d[i+1>>0]<<16|d[i+2>>0]<<8|d[i+3>>0];na=c[D>>2]|0;b[B>>1]=0;a[C>>0]=a[C>>0]&-7;ma=l<<24>>24;b[F+72+(ma<<1)>>1]=x;c[F+120+(ma<<2)>>2]=s;b[z>>1]=0;a[A>>0]=l+1<<24>>24;i=yh(na,i,y,F,d[E>>0]|0)|0}else{l=(c[t+64>>2]|0)+((x&65535)<<1)|0;i=i+((d[l>>0]<<8|d[l+1>>0])&e[t+26>>1])|0;l=a[A>>0]|0;if(l<<24>>24>18){oa=720;break c}i=d[i>>0]<<24|d[i+1>>0]<<16|d[i+2>>0]<<8|d[i+3>>0];na=c[D>>2]|0;b[B>>1]=0;a[C>>0]=a[C>>0]&-7;ma=l<<24>>24;b[F+72+(ma<<1)>>1]=x;c[F+120+(ma<<2)>>2]=s;b[z>>1]=0;a[A>>0]=l+1<<24>>24;i=yh(na,i,y,F,d[E>>0]|0)|0}if(i){oa=3845;break c}}i=xh(F)|0;if(i){oa=3855;break c}break}default:{oa=3855;break c}}na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;l=i;c[l>>2]=q;c[l+4>>2]=o;l=m;q=pa;o=qa;i=0;break}case 0:{w=c[p+4>>2]|0;A=c[p+16>>2]|0;if(!w){if((c[bd>>2]|0)>0){oa=730;break c}if(!A)z=0;else z=(Eu(A)|0)&1073741823;x=(c[Gd>>2]|0)+(c[Fd>>2]|0)|0;n:do if(c[db>>2]|0){y=x+1|0;w=0;while(1){if((w|0)>=(c[Vc>>2]|0))break n;t=c[(c[db>>2]|0)+(w<<2)>>2]|0;i=c[c[t+4>>2]>>2]|0;r=t+8|0;l=c[r>>2]|0;o:do if((l|0)!=0?(c[i>>2]|0)>1:0){s=t+12|0;o=(c[s>>2]|0)+1|0;c[s>>2]=o;i=c[i+80>>2]|0;c[t+20>>2]=y;if(!i){q=0;i=o}else{q=Xa[i&255](l,x)|0;i=c[s>>2]|0}l=c[t>>2]|0;na=i+-1|0;c[s>>2]=na;if(na|0){i=q;break}i=c[r>>2]|0;if(i|0)Wa[c[(c[i>>2]|0)+16>>2]&127](i)|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,t);i=q;break o}i=t;if((c[l+304>>2]|0)>>>0>i>>>0)break;if((c[l+308>>2]|0)>>>0<=i>>>0)break;i=l+300|0;c[t>>2]=c[i>>2];c[i>>2]=t;i=q;break o}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);i=q;break}else{i=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);i=q;break}}else i=0;while(0);if(!i)w=w+1|0;else{oa=3846;break c}}}while(0);l=z+33|0;do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=761;else{l=m;q=pa;o=qa;i=0;break d}else{if(!(0<0|(0==0?(e[Xc>>1]|0)>>>0>>0:0))){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=761}while(0);if((oa|0)==761){oa=0;i=_d(Cf,l,0)|0}if(!i){l=m;q=pa;o=qa;i=0;break d}na=i+32|0;c[i>>2]=na;ew(na|0,A|0,z+1|0)|0;if(!(a[gd>>0]|0))c[Gd>>2]=(c[Gd>>2]|0)+1;else{a[gd>>0]=0;a[Id>>0]=1}c[i+24>>2]=c[qd>>2];c[qd>>2]=i;l=Pa;q=c[l+4>>2]|0;o=i+8|0;c[o>>2]=c[l>>2];c[o+4>>2]=q;o=Na;q=c[o+4>>2]|0;l=i+16|0;c[l>>2]=c[o>>2];c[l+4>>2]=q;l=m;q=pa;o=qa;i=0;break d}i=c[qd>>2]|0;if(!i){oa=774;break c}q=d[208+(d[A>>0]|0)>>0]|0;B=i;r=0;while(1){l=c[B>>2]|0;na=a[l>>0]|0;i=(d[208+(na&255)>>0]|0)-q|0;if(!(na<<24>>24==0|(i|0)!=0)){o=A;do{l=l+1|0;o=o+1|0;na=a[l>>0]|0;i=(d[208+(na&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(na<<24>>24==0|(i|0)!=0))}if(!i)break;i=c[B+24>>2]|0;if(!i){oa=774;break c}else{B=i;r=r+1|0}}z=(w|0)==1;if(z&(c[bd>>2]|0)>0){oa=776;break c}A=B+24|0;if(!(c[A>>2]|0)){i=(a[Id>>0]|0)!=0;if(z&i){ma=c[f>>2]|0;na=ma+464|0;ma=ma+472|0;na=Sv(c[ma>>2]|0,c[ma+4>>2]|0,c[na>>2]|0,c[na+4>>2]|0)|0;ma=L()|0;if((ma|0)>0|(ma|0)==0&na>>>0>0){oa=780;break c}a[gd>>0]=1;if((pg(f)|0)==5){oa=782;break c}a[Id>>0]=0;y=r;i=c[Bf>>2]|0;q=1}else{q=i;oa=784}}else{q=0;oa=784}if((oa|0)==784){oa=0;s=(c[Gd>>2]|0)-r|0;x=s+-1|0;t=(w|0)==2;if(t){l=c[hf>>2]&1;if((c[sf>>2]|0)>0){o=l^1;i=0;while(1){r=jg(c[(c[uf>>2]|0)+(i<<4)+4>>2]|0,516,o)|0;i=i+1|0;if(r|0){oa=3854;break c}r=c[sf>>2]|0;if((i|0)>=(r|0)){i=0;oa=790;break}}}else i=K}else{l=0;i=K;r=c[sf>>2]|0;oa=790}p:do if((oa|0)==790){oa=0;if((r|0)>0){i=(s|0)<1;if(!t){if(!i){s=0;i=r;while(1){o=c[(c[uf>>2]|0)+(s<<4)+4>>2]|0;do if(o){if((a[o+8>>0]|0)!=2)break;r=c[o+4>>2]|0;c[r+4>>2]=c[o>>2];i=wf(c[r>>2]|0,w,x)|0;if(i|0){oa=3853;break c}i=Rf(r)|0;na=c[(c[r+12>>2]|0)+56>>2]|0;c[r+44>>2]=d[na+29>>0]<<16|d[na+28>>0]<<24|d[na+30>>0]<<8|d[na+31>>0];if(i|0){oa=3853;break c}i=c[sf>>2]|0}while(0);s=s+1|0;if((s|0)>=(i|0)){i=0;break p}}}s=0;i=r;while(1){o=c[(c[uf>>2]|0)+(s<<4)+4>>2]|0;do if(o){if((a[o+8>>0]|0)!=2)break;r=c[o+4>>2]|0;c[r+4>>2]=c[o>>2];i=wf(c[r>>2]|0,w,x)|0;if(i|0){oa=3852;break c}o=r+44|0;if(b[r+22>>1]&16)c[o>>2]=0;i=Rf(r)|0;na=c[(c[r+12>>2]|0)+56>>2]|0;c[o>>2]=d[na+29>>0]<<16|d[na+28>>0]<<24|d[na+30>>0]<<8|d[na+31>>0];if(i|0){oa=3852;break c}i=c[sf>>2]|0}while(0);s=s+1|0;if((s|0)>=(i|0)){i=0;break p}}}if(!i){s=0;i=r;while(1){o=c[(c[uf>>2]|0)+(s<<4)+4>>2]|0;do if(o){if((a[o+8>>0]|0)!=2)break;r=c[o+4>>2]|0;c[r+4>>2]=c[o>>2];i=c[r+8>>2]|0;if(i|0?(Vd=$f(i,0,0)|0,Vd|0):0){i=Vd;oa=3851;break c}i=wf(c[r>>2]|0,2,x)|0;if(i|0){oa=3851;break c}i=Rf(r)|0;na=c[(c[r+12>>2]|0)+56>>2]|0;c[r+44>>2]=d[na+29>>0]<<16|d[na+28>>0]<<24|d[na+30>>0]<<8|d[na+31>>0];if(i|0){oa=3851;break c}i=c[sf>>2]|0}while(0);s=s+1|0;if((s|0)>=(i|0)){i=0;break p}}}s=0;i=r;while(1){o=c[(c[uf>>2]|0)+(s<<4)+4>>2]|0;do if(o){if((a[o+8>>0]|0)!=2)break;r=c[o+4>>2]|0;c[r+4>>2]=c[o>>2];i=c[r+8>>2]|0;if(i|0?(Ud=$f(i,0,0)|0,Ud|0):0){i=Ud;oa=3850;break c}i=wf(c[r>>2]|0,2,x)|0;if(i|0){oa=3850;break c}o=r+44|0;if(b[r+22>>1]&16)c[o>>2]=0;i=Rf(r)|0;na=c[(c[r+12>>2]|0)+56>>2]|0;c[o>>2]=d[na+29>>0]<<16|d[na+28>>0]<<24|d[na+30>>0]<<8|d[na+31>>0];if(i|0){oa=3850;break c}i=c[sf>>2]|0}while(0);s=s+1|0;if((s|0)>=(i|0)){i=0;break}}}}while(0);if(!l)y=x;else{l=c[$a>>2]|0;if(l|0)do{na=l+149|0;ma=(d[na>>0]|d[na+1>>0]<<8)&-4|1;a[na>>0]=ma;a[na+1>>0]=ma>>8;l=c[l+8>>2]|0}while((l|0)!=0);$b(Cf);c[hf>>2]=c[hf>>2]|1;y=x}}l=c[qd>>2]|0;if((l|0)!=(B|0))do{c[qd>>2]=c[l+24>>2];q:do if(l|0){if(c[Ze>>2]|0){Xd(Cf,l);break}o=l;do if((c[_e>>2]|0)>>>0<=o>>>0){if((c[$e>>2]|0)>>>0<=o>>>0)break;c[l>>2]=c[af>>2];c[af>>2]=l;break q}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[Gd>>2]=(c[Gd>>2]|0)+-1;l=c[qd>>2]|0}while((l|0)!=(B|0));if(z){c[qd>>2]=c[A>>2];do if(!(c[Ze>>2]|0)){na=B;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[B>>2]=c[af>>2];c[af>>2]=B;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](B);break}else{na=Wa[c[29352>>2]&127](B)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](B);break}}else Xd(Cf,B);while(0);if(q){Wd=1;oa=859}else c[Gd>>2]=(c[Gd>>2]|0)+-1}else{Wd=B+8|0;oa=c[Wd+4>>2]|0;na=Pa;c[na>>2]=c[Wd>>2];c[na+4>>2]=oa;na=B+16|0;oa=c[na+4>>2]|0;Wd=Na;c[Wd>>2]=c[na>>2];c[Wd+4>>2]=oa;Wd=q;oa=859}if((oa|0)==859?(oa=0,!((w|0)==2|Wd^1)):0)if(!i){l=m;q=pa;o=qa;i=0;break d}else{oa=3855;break c}if(!(c[db>>2]|0)){l=m;q=pa;o=qa;i=0}else{x=y+1|0;switch(w|0){case 0:while(1){if((w|0)>=(c[Vc>>2]|0)){l=m;q=pa;o=qa;i=0;break d}t=c[(c[db>>2]|0)+(w<<2)>>2]|0;i=c[c[t+4>>2]>>2]|0;r=t+8|0;l=c[r>>2]|0;r:do if(l){if((c[i>>2]|0)<=1){i=0;break}s=t+12|0;o=(c[s>>2]|0)+1|0;c[s>>2]=o;i=c[i+80>>2]|0;c[t+20>>2]=x;if(!i){q=0;i=o}else{q=Xa[i&255](l,y)|0;i=c[s>>2]|0}l=c[t>>2]|0;na=i+-1|0;c[s>>2]=na;if(na|0){i=q;break}i=c[r>>2]|0;if(i|0)Wa[c[(c[i>>2]|0)+16>>2]&127](i)|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,t);i=q;break r}i=t;if((c[l+304>>2]|0)>>>0>i>>>0)break;if((c[l+308>>2]|0)>>>0<=i>>>0)break;i=l+300|0;c[t>>2]=c[i>>2];c[i>>2]=t;i=q;break r}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);i=q;break}else{i=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);i=q;break}}else i=0;while(0);if(!i)w=w+1|0;else{oa=3848;break c}}case 2:{w=0;while(1){if((w|0)>=(c[Vc>>2]|0)){l=m;q=pa;o=qa;i=0;break d}t=c[(c[db>>2]|0)+(w<<2)>>2]|0;i=c[c[t+4>>2]>>2]|0;r=t+8|0;l=c[r>>2]|0;s:do if(l){if((c[i>>2]|0)<=1){i=0;break}s=t+12|0;o=(c[s>>2]|0)+1|0;c[s>>2]=o;i=c[i+88>>2]|0;do if(!i){q=0;i=o}else{if((c[t+20>>2]|0)<=(y|0)){q=0;i=o;break}q=Xa[i&255](l,y)|0;i=c[s>>2]|0}while(0);l=c[t>>2]|0;na=i+-1|0;c[s>>2]=na;if(na|0){i=q;break}i=c[r>>2]|0;if(i|0)Wa[c[(c[i>>2]|0)+16>>2]&127](i)|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,t);i=q;break s}i=t;if((c[l+304>>2]|0)>>>0>i>>>0)break;if((c[l+308>>2]|0)>>>0<=i>>>0)break;i=l+300|0;c[t>>2]=c[i>>2];c[i>>2]=t;i=q;break s}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);i=q;break}else{i=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);i=q;break}}else i=0;while(0);if(!i)w=w+1|0;else{oa=3849;break c}}}default:{w=0;while(1){if((w|0)>=(c[Vc>>2]|0)){l=m;q=pa;o=qa;i=0;break d}t=c[(c[db>>2]|0)+(w<<2)>>2]|0;i=c[c[t+4>>2]>>2]|0;r=t+8|0;l=c[r>>2]|0;t:do if(l){if((c[i>>2]|0)<=1){i=0;break}s=t+12|0;o=(c[s>>2]|0)+1|0;c[s>>2]=o;i=c[i+84>>2]|0;do if(!i){q=0;i=o}else{if((c[t+20>>2]|0)<=(y|0)){q=0;i=o;break}q=Xa[i&255](l,y)|0;i=c[s>>2]|0}while(0);l=c[t>>2]|0;na=i+-1|0;c[s>>2]=na;if(na|0){i=q;break}i=c[r>>2]|0;if(i|0)Wa[c[(c[i>>2]|0)+16>>2]&127](i)|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,t);i=q;break t}i=t;if((c[l+304>>2]|0)>>>0>i>>>0)break;if((c[l+308>>2]|0)>>>0<=i>>>0)break;i=l+300|0;c[t>>2]=c[i>>2];c[i>>2]=t;i=q;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);i=q;break}else{i=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);i=q;break}}else i=0;while(0);if(!i)w=w+1|0;else{oa=3847;break c}}}}}break}case 2:{c[rf>>2]=0;o=p+8|0;i=c[o>>2]|0;if(i|0?!((c[Sc>>2]&1048576|0)==0&0==0):0){l=8;oa=1017;break c}z=p+4|0;y=c[(c[uf>>2]|0)+(c[z>>2]<<4)+4>>2]|0;do if(y){l=Zb(y,i,rf)|0;if(l|0){oa=950;break c}if((c[o>>2]|0)!=0?((d[vf>>0]|d[vf+1>>0]<<8)&128)!=0:0){if(a[gd>>0]|0?(c[Ha>>2]|0)<=1:0){i=0;break}i=c[bc>>2]|0;if(!i){l=(c[Fd>>2]|0)+1|0;c[Fd>>2]=l;l=(c[Gd>>2]|0)+l|0;c[bc>>2]=l}else l=i;x=l+-1|0;u:do if(!(c[db>>2]|0))oa=979;else{w=0;while(1){if((w|0)>=(c[Vc>>2]|0))break;t=c[(c[db>>2]|0)+(w<<2)>>2]|0;i=c[c[t+4>>2]>>2]|0;r=t+8|0;q=c[r>>2]|0;v:do if(q){if((c[i>>2]|0)<=1){i=0;break}s=t+12|0;o=(c[s>>2]|0)+1|0;c[s>>2]=o;i=c[i+80>>2]|0;c[t+20>>2]=l;if(!i)i=0;else{i=Xa[i&255](q,x)|0;o=c[s>>2]|0}q=c[t>>2]|0;na=o+-1|0;c[s>>2]=na;if(na|0)break;o=c[r>>2]|0;if(o|0)Wa[c[(c[o>>2]|0)+16>>2]&127](o)|0;do if(q|0){if(c[q+480>>2]|0){Xd(q,t);break v}o=t;if((c[q+304>>2]|0)>>>0>o>>>0)break;if((c[q+308>>2]|0)>>>0<=o>>>0)break;na=q+300|0;c[t>>2]=c[na>>2];c[na>>2]=t;break v}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{na=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}else i=0;while(0);if(!i)w=w+1|0;else break u}l=c[bc>>2]|0;oa=979}while(0);if((oa|0)==979){oa=0;i=c[y+4>>2]|0;c[i+4>>2]=c[y>>2];i=c[i>>2]|0;if((c[i+96>>2]|0)<(l|0)?(a[i+6>>0]|0)!=0:0)i=Vf(i,l)|0;else i=0}na=Pa;ma=c[na+4>>2]|0;la=gc;c[la>>2]=c[na>>2];c[la+4>>2]=ma;la=Na;ma=c[la+4>>2]|0;na=hc;c[na>>2]=c[la>>2];c[na+4>>2]=ma}else i=0}else i=K;while(0);if(b[p+2>>1]|0){if((c[rf>>2]|0)!=(c[p+12>>2]|0)){oa=986;break c}if((c[(c[(c[uf>>2]|0)+(c[z>>2]<<4)+12>>2]|0)+4>>2]|0)!=(c[p+16>>2]|0)){oa=986;break c}}if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 94:{i=c[p+12>>2]|0;l=c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0;o=c[l+4>>2]|0;c[o+4>>2]=c[l>>2];if((i|0)==15)o=(c[l+20>>2]|0)+(c[(c[o>>2]|0)+100>>2]|0)|0;else{o=(c[(c[o+12>>2]|0)+56>>2]|0)+((i<<2)+36)|0;o=d[o+1>>0]<<16|d[o>>0]<<24|d[o+2>>0]<<8|d[o+3>>0]}na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;l=i;c[l>>2]=o;c[l+4>>2]=((o|0)<0)<<31>>31;l=m;q=pa;o=qa;i=K;break}case 95:{w=c[uf>>2]|0;x=p+4|0;y=c[x>>2]|0;l=c[w+(y<<4)+4>>2]|0;z=p+8|0;s=c[z>>2]|0;A=p+12|0;q=c[A>>2]|0;t=c[l+4>>2]|0;c[t+4>>2]=c[l>>2];l=c[t+12>>2]|0;r=c[l+56>>2]|0;l=c[l+72>>2]|0;o=c[l+20>>2]|0;if((b[l+28>>1]&4)!=0?(c[o+24>>2]|0)>>>0>=(c[l+24>>2]|0)>>>0:0)if(!(c[o+96>>2]|0))oa=1035;else{i=Ve(l)|0;oa=1034}else oa=1030;do if((oa|0)==1030){oa=0;i=c[o+40>>2]|0;if(!i)if((c[o+148>>2]|0)>>>0>(c[o+152>>2]|0)>>>0){i=Wf(l)|0;oa=1034;break}else{i=Xf(l)|0;oa=1034;break}else o=0}while(0);if((oa|0)==1034){oa=0;if(!i)oa=1035;else o=0}if((oa|0)==1035){oa=0;na=r+((s<<2)+36)|0;a[na>>0]=q>>>24;a[na+1>>0]=q>>>16;a[na+2>>0]=q>>>8;i=q&255;a[na+3>>0]=i;if((s|0)==7){a[t+18>>0]=i;i=0;o=1}else{i=0;o=1}}switch(c[z>>2]|0){case 1:{c[c[w+(y<<4)+12>>2]>>2]=c[A>>2];c[hf>>2]=c[hf>>2]|1;break}case 2:{a[(c[w+(y<<4)+12>>2]|0)+76>>0]=c[A>>2];break}default:{}}if((c[x>>2]|0)==1){l=c[$a>>2]|0;if(l|0)do{na=l+149|0;ma=(d[na>>0]|d[na+1>>0]<<8)&-4|1;a[na>>0]=ma;a[na+1>>0]=ma>>8;l=c[l+8>>2]|0}while((l|0)!=0);na=(d[vf>>0]|d[vf+1>>0]<<8)&-4;a[vf>>0]=na;a[vf+1>>0]=na>>8}if(o){l=m;q=pa;o=qa}else{oa=3855;break c}break}case 106:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;if((i|0)!=0?(c[i+52>>2]|0)==(c[p+8>>2]|0):0){o=i;i=K;l=p+2|0;oa=1074}else oa=1049;break}case 109:case 108:{oa=1049;break}case 111:{l=c[oc>>2]|0;w=c[l+(c[p+8>>2]<<2)>>2]|0;q=c[p+4>>2]|0;s=b[w+56>>1]|0;t=s<<16>>16;i=c[xd>>2]|0;if((q|0)>0)i=i+(((c[va>>2]|0)-q|0)*40|0)|0;o=t<<3;r=o+96|0;o=o+296|0;l=c[l+(q<<2)>>2]|0;if(l|0){na=l+5|0;a[na>>0]=a[na>>0]&-2;tg(f,c[(c[oc>>2]|0)+(q<<2)>>2]|0);c[(c[oc>>2]|0)+(q<<2)>>2]=0}if((c[i+24>>2]|0)<(o|0)){if(Eg(i,o,0)|0){l=p;j=h;i=zf;oa=3892;break a}o=i+16|0;l=o;o=c[o>>2]|0}else{o=c[i+20>>2]|0;l=i+16|0;c[l>>2]=o;na=i+8|0;b[na>>1]=b[na>>1]&13}c[(c[oc>>2]|0)+(q<<2)>>2]=o;i=o+1|0;ea=o;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[i>>0]=-1;b[o+56>>1]=s;c[o+72>>2]=o+88+(t<<2);na=(c[l>>2]|0)+r|0;i=o+40|0;c[i>>2]=na;c[na>>2]=0;c[na+4>>2]=0;c[na+8>>2]=0;c[na+12>>2]=0;c[na+16>>2]=0;if(!o){l=p;j=h;i=zf;oa=3892;break a}a[o+2>>0]=1;l=o+5|0;q=a[l>>0]|1;a[l>>0]=q;na=c[w+44>>2]|0;c[o+44>>2]=na;a[o+4>>0]=a[w+4>>0]|0;ma=c[w+52>>2]|0;c[o+52>>2]=ma;a[l>>0]=a[w+5>>0]&4|q&-5;l=m;q=pa;o=qa;i=Vg(c[w+8>>2]|0,ma,4,na,c[i>>2]|0)|0;break}case 113:case 112:{o=c[p+4>>2]|0;q=(c[oc>>2]|0)+(o<<2)|0;i=c[q>>2]|0;if(!i){s=c[p+8>>2]|0;i=c[xd>>2]|0;if((o|0)>0)i=i+(((c[va>>2]|0)-o|0)*40|0)|0;l=s<<3;r=l+96|0;l=l+296|0;if((c[i+24>>2]|0)<(l|0)){if(Eg(i,l,0)|0){l=p;j=h;i=zf;oa=3892;break a}w=i+16|0;l=w;i=(c[oc>>2]|0)+(o<<2)|0;w=c[w>>2]|0}else{w=c[i+20>>2]|0;l=i+16|0;c[l>>2]=w;i=i+8|0;b[i>>1]=b[i>>1]&13;i=q}c[i>>2]=w;i=w+1|0;ea=w;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[i>>0]=-1;b[w+56>>1]=s;c[w+72>>2]=w+88+(s<<2);na=(c[l>>2]|0)+r|0;q=w+40|0;c[q>>2]=na;c[na>>2]=0;c[na+4>>2]=0;c[na+8>>2]=0;c[na+12>>2]=0;c[na+16>>2]=0;if(!w){l=p;j=h;i=zf;oa=3892;break a}a[w+2>>0]=1;s=w+5|0;a[s>>0]=a[s>>0]|1;r=w+8|0;t=p+2|0;i=Pe(c[Cf>>2]|0,0,Cf,r,(b[t>>1]|5)&65535,1054)|0;do if(!i){i=Zb(c[r>>2]|0,1,0)|0;if(!i){l=c[p+16>>2]|0;c[w+44>>2]=l;if(!l){c[w+52>>2]=1;i=Vg(c[r>>2]|0,1,4,0,c[q>>2]|0)|0;a[w+4>>0]=1;break}o=w+52|0;i=Wg(c[r>>2]|0,o,(b[t>>1]|2)&65535)|0;if(!i)i=Vg(c[r>>2]|0,c[o>>2]|0,4,l,c[q>>2]|0)|0;a[w+4>>0]=0}}while(0);a[s>>0]=((b[t>>1]|0)!=8&1)<<2&255|a[s>>0]&-5}else{l=c[i+8>>2]|0;q=c[i+52>>2]|0;o=l+4|0;r=c[o>>2]|0;c[r+4>>2]=c[l>>2];i=c[r+8>>2]|0;w:do if(i|0){x:do if(q)while(1){if((c[i+64>>2]|0)==(q|0))break x;i=c[i+24>>2]|0;if(!i)break w}while(0);i=$f(i,q,0)|0;if(i|0){oa=3855;break c}}while(0);l=l+11|0;if(a[l>>0]|0?(a[l>>0]=0,md=c[(c[o>>2]|0)+8>>2]|0,md|0):0){i=md;do{if(a[i+1>>0]&16?(a[l>>0]=1,(c[i+64>>2]|0)==(q|0)):0)a[i>>0]=1;i=c[i+24>>2]|0}while((i|0)!=0)}i=zh(r,q,0,0)|0}if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 114:{q=c[p+4>>2]|0;r=c[p+8>>2]|0;i=c[xd>>2]|0;if((q|0)>0)i=i+(((c[va>>2]|0)-q|0)*40|0)|0;l=(r<<3)+96|0;o=c[(c[oc>>2]|0)+(q<<2)>>2]|0;if(o|0){na=o+5|0;a[na>>0]=a[na>>0]&-2;tg(f,c[(c[oc>>2]|0)+(q<<2)>>2]|0);c[(c[oc>>2]|0)+(q<<2)>>2]=0}if((c[i+24>>2]|0)<(l|0)){if(Eg(i,l,0)|0){l=p;j=h;i=zf;oa=3892;break a}s=c[i+16>>2]|0}else{s=c[i+20>>2]|0;c[i+16>>2]=s;na=i+8|0;b[na>>1]=b[na>>1]&13}c[(c[oc>>2]|0)+(q<<2)>>2]=s;ea=s;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[s>>0]=1;a[s+1>>0]=-1;b[s+56>>1]=r;c[s+72>>2]=s+88+(r<<2);if(!s){l=p;j=h;i=zf;oa=3892;break a}q=c[p+16>>2]|0;l=s+44|0;c[l>>2]=q;o=c[p+12>>2]|0;q=e[q+6>>1]<<2;r=q+156|0;do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=1133;else{oa=1135;break c}else{if(!(0<0|(0==0?(e[Xc>>1]|0)>>>0>>0:0))){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;t=i;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;t=i;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=1133}while(0);if((oa|0)==1133){oa=0;t=_d(Cf,r,0)|0}if(!t){oa=1135;break c}gw(t|0,0,r|0)|0;c[s+40>>2]=t;na=t+136|0;c[t+28>>2]=na;ew(na|0,c[l>>2]|0,q+20|0)|0;c[t+148>>2]=0;if(o|0)b[t+142>>1]=o;i=c[uf>>2]|0;l=c[(c[(c[i+4>>2]|0)+4>>2]|0)+32>>2]|0;c[t+12>>2]=l;a[t+59>>0]=1;a[t+58>>0]=-1;a[t+57>>0]=0;c[t+24>>2]=Cf;c[t+72>>2]=t;if((a[ra>>0]|0)!=2?(ma=G(c[7379]|0,l)|0,c[t>>2]=ma,na=c[(c[i+12>>2]|0)+80>>2]|0,la=(na|0)<0,be=((l|0)<0)<<31>>31,na=Yv((la?-1024:l)|0,(la?-1:be)|0,na|0,((na|0)<0)<<31>>31|0)|0,la=L()|0,ka=(la|0)<0|(la|0)==0&na>>>0<536870912,na=ka?na:536870912,ka?la:0,c[t+4>>2]=(ma|0)>(na|0)?ma:na,(c[7329]|0)==0):0){c[t+52>>2]=l;na=Sv(l|0,be|0,-1,-1)|0;ma=L()|0;do if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390)i=0;else{if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](l)|0;break}o=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;l=59064;i=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&i>>>0>0){na=c[14978]|0;ma=Tv(i|0,l|0,o|0,((o|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](o)|0;if(!i){i=0;break}l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0)break;c[14987]=l}while(0);c[t+40>>2]=i;i=(i|0)==0?7:0}else i=0;do if((e[t+144>>1]|0)<13){na=c[t+156>>2]|0;if(na|0?(na|0)!=(c[jc>>2]|0):0)break;a[t+60>>0]=3}while(0);if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 115:{la=(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+16|0;na=la;ma=c[na>>2]|0;na=c[na+4>>2]|0;ja=Sv(ma|0,na|0,1,0)|0;ka=L()|0;c[la>>2]=ja;c[la+4>>2]=ka;if((ma|0)==0&(na|0)==0){i=K;oa=28}else{l=m;q=pa;o=qa;i=K}break}case 116:{q=c[p+4>>2]|0;r=c[p+12>>2]|0;i=c[xd>>2]|0;if((q|0)>0)i=i+(((c[va>>2]|0)-q|0)*40|0)|0;l=(r<<3)+96|0;o=c[(c[oc>>2]|0)+(q<<2)>>2]|0;if(o|0){na=o+5|0;a[na>>0]=a[na>>0]&-2;tg(f,c[(c[oc>>2]|0)+(q<<2)>>2]|0);c[(c[oc>>2]|0)+(q<<2)>>2]=0}if((c[i+24>>2]|0)<(l|0)){if(Eg(i,l,0)|0){l=p;j=h;i=zf;oa=3892;break a}i=c[i+16>>2]|0}else{na=c[i+20>>2]|0;c[i+16>>2]=na;i=i+8|0;b[i>>1]=b[i>>1]&13;i=na}c[(c[oc>>2]|0)+(q<<2)>>2]=i;ea=i;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[i>>0]=3;a[i+1>>0]=-1;b[i+56>>1]=r;c[i+72>>2]=i+88+(r<<2);if(!i){l=p;j=h;i=zf;oa=3892;break a}a[i+2>>0]=1;c[i+32>>2]=c[p+8>>2];a[i+4>>0]=1;c[i+40>>2]=59954;l=m;q=pa;o=qa;i=K;break}case 117:{l=p+4|0;tg(f,c[(c[oc>>2]|0)+(c[l>>2]<<2)>>2]|0);c[(c[oc>>2]|0)+(c[l>>2]<<2)>>2]=0;l=m;q=pa;o=qa;i=K;break}case 25:case 24:case 23:case 22:{w=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;l=z&255;a[w+2>>0]=0;y:do if(!(a[w+4>>0]|0)){i=c[w+40>>2]|0;o=(d[i+3>>0]|0)>>>1&1;oa=c[p+16>>2]|0;c[Yd>>2]=c[w+44>>2];b[wa>>1]=oa;a[xa>>0]=(l<<1&2^2)+255;c[ya>>2]=pa+((c[p+12>>2]|0)*40|0);a[za>>0]=0;i=Xg(i,Yd,0,0,0,Td)|0;if(i|0){oa=1213;break c}i=o&255;if(o<<24>>24!=0&(a[za>>0]|0)==0)if(!(c[Td>>2]|0)){p=p+20|0;oa=1212}else{i=0;oa=1211}else{o=i;oa=1194}}else{r=c[p+12>>2]|0;t=pa+(r*40|0)|0;s=pa+(r*40|0)+8|0;i=b[s>>1]|0;if((i&14)==2){i=a[pa+(r*40|0)+10>>0]|0;o=pa+(r*40|0)+16|0;q=pa+(r*40|0)+12|0;if(!(Lg(c[o>>2]|0,rf,c[q>>2]|0,i)|0))i=b[s>>1]|0;else{if(!(Og(c[o>>2]|0,Hd,c[q>>2]|0,i)|0)){na=Hd;oa=c[na+4>>2]|0;i=t;c[i>>2]=c[na>>2];c[i+4>>2]=oa;i=4}else{g[t>>3]=+g[rf>>3];i=8}i=b[s>>1]&-3|i;b[s>>1]=i}}i=i&65535;do if(!(i&4)){if(i&8|0){o=Mg(+g[t>>3])|0;q=L()|0;break}if(!(i&18)){o=0;q=0}else{o=Ng(a[pa+(r*40|0)+10>>0]|0,c[pa+(r*40|0)+12>>2]|0,c[pa+(r*40|0)+16>>2]|0)|0;q=L()|0;i=e[s>>1]|0}}else{q=t;o=c[q>>2]|0;q=c[q+4>>2]|0}while(0);do if(!(i&4)){if(!(i&8)){i=K;oa=1211;break y}u=+g[t>>3];v=+(o>>>0)+4294967296.0*+(q|0);if(u>31)+l|0;break}else{l=((l&1|0)==0&u>v&1)+l|0;break}}while(0);i=Xg(c[w+40>>2]|0,0,o,q,0,Td)|0;oa=w+64|0;c[oa>>2]=o;c[oa+4>>2]=q;if(!i){o=0;oa=1194}else{oa=1213;break c}}while(0);z:do if((oa|0)==1194){oa=0;a[w+3>>0]=0;c[w+28>>2]=0;i=c[Td>>2]|0;if((l|0)>23){if((i|0)>=0?!((l|0)==25&(i|0)==0):0)c[Td>>2]=0;else oa=1197;A:do if((oa|0)==1197){c[Td>>2]=0;i=Yg(c[w+40>>2]|0,0)|0;switch(i|0){case 0:break A;case 101:break;default:{oa=1213;break c}}c[Td>>2]=1;i=0;oa=1211;break z}while(0);p=(o|0)==0?p:p+20|0;oa=1212;break}if((i|0)<=0?!((l|0)==22&(i|0)==0):0){oa=(a[c[w+40>>2]>>0]|0)!=0;c[Td>>2]=oa&1;if(oa){i=0;oa=1211;break}else{p=(o|0)==0?p:p+20|0;oa=1212;break}}c[Td>>2]=0;i=c[w+40>>2]|0;na=i+1|0;a[na>>0]=a[na>>0]&-15;b[i+50>>1]=0;if(((a[i>>0]|0)==0?(ce=i+70|0,de=b[ce>>1]|0,de<<16>>16!=0):0)?(a[(c[i+116>>2]|0)+8>>0]|0)!=0:0)b[ce>>1]=de+-1<<16>>16;else oa=1206;B:do if((oa|0)==1206){i=Hh(i)|0;switch(i|0){case 0:break B;case 101:break;default:{oa=1213;break c}}c[Td>>2]=1;i=0;oa=1211;break z}while(0);p=(o|0)==0?p:p+20|0;oa=1212}while(0);if((oa|0)==1211){oa=28;break d}else if((oa|0)==1212){oa=0;l=m;q=pa;o=qa;i=0;break d}break}case 119:{l=(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+5|0;a[l>>0]=(c[p+8>>2]&255)<<3&8|a[l>>0]&-9;l=m;q=pa;o=qa;i=K;break}case 26:{if(!(a[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+5>>0]&8))oa=1216;else{l=m;q=pa;o=qa;i=K}break}case 29:case 28:case 27:{oa=1216;break}case 30:{i=p+12|0;o=c[i>>2]|0;t=pa+(o*40|0)+8|0;w=b[t>>1]|0;if(!(w&4)){s=pa+(o*40|0)|0;l=w&65535;do if(!(l&4)){if(l&8|0){v=+g[s>>3];o=Mg(v)|0;q=L()|0;oa=Sv(o|0,q|0,1,-2147483648)|0;na=L()|0;l=w&15904|4;if(!((na>>>0>0|(na|0)==0&oa>>>0>1)&v==+(o>>>0)+4294967296.0*+(q|0))){l=w;break}oa=s;c[oa>>2]=o;c[oa+4>>2]=q;b[t>>1]=l;break}if(l&2){q=a[pa+(o*40|0)+10>>0]|0;r=pa+(o*40|0)+16|0;l=pa+(o*40|0)+12|0;if(!(Lg(c[r>>2]|0,rf,c[l>>2]|0,q)|0))l=b[t>>1]|0;else{if(Og(c[r>>2]|0,Hd,c[l>>2]|0,q)|0){v=+g[rf>>3];g[s>>3]=v;o=b[t>>1]|0;l=o|8;b[t>>1]=l;q=Mg(v)|0;r=L()|0;na=Sv(q|0,r|0,1,-2147483648)|0;ma=L()|0;if((ma>>>0>0|(ma|0)==0&na>>>0>1)&v==+(q>>>0)+4294967296.0*+(r|0)){l=s;c[l>>2]=q;c[l+4>>2]=r;l=o&15904;oa=1281}}else{na=Hd;oa=c[na+4>>2]|0;l=s;c[l>>2]=c[na>>2];c[l+4>>2]=oa;l=b[t>>1]|0;oa=1281}if((oa|0)==1281){l=l|4;b[t>>1]=l}l=l&-3;b[t>>1]=l}}else l=w}else l=w;while(0);b[t>>1]=w;if(!(l&4)){i=K;oa=28}else oa=1287}else oa=1287;break}case 31:{i=p+12|0;oa=1287;break}case 120:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;l=(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+16|0;q=l;o=c[q>>2]|0;q=c[q+4>>2]|0;ma=Sv(o|0,q|0,1,0)|0;na=L()|0;c[l>>2]=ma;c[l+4>>2]=na;l=i;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break}case 121:{na=rf;c[na>>2]=0;c[na+4>>2]=0;c[Hd>>2]=0;na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=4;y=i}else{lh(i)|0;y=i}z=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;x=z+5|0;do if(!(a[x>>0]&2)){l=z+40|0;i=$g(c[l>>2]|0,Hd)|0;if(i|0){oa=1328;break c}if(c[Hd>>2]|0){i=rf;c[i>>2]=1;c[i+4>>2]=0;i=0;break}l=c[l>>2]|0;bg(l);l=l+32|0;i=c[l>>2]|0;l=c[l+4>>2]|0;na=rf;c[na>>2]=i;c[na+4>>2]=l;if((i|0)==-1&(l|0)==2147483647){a[x>>0]=a[x>>0]|2;i=0;break}else{ma=Sv(i|0,l|0,1,0)|0;na=L()|0;i=rf;c[i>>2]=ma;c[i+4>>2]=na;i=0;break}}else i=K;while(0);r=c[p+12>>2]|0;if(r|0){l=c[nc>>2]|0;if(!l)o=pa;else{while(1){o=c[l+4>>2]|0;if(!o)break;else l=o}o=c[l+16>>2]|0}w=o+(r*40|0)|0;s=o+(r*40|0)+8|0;l=b[s>>1]|0;q=l&65535;do if(!(q&4)){if(q&8|0){q=Mg(+g[w>>3])|0;o=L()|0;oa=1317;break}if(!(q&18)){t=w;c[t>>2]=0;c[t+4>>2]=0;b[s>>1]=l&15904|4;t=0;q=0;break}else{q=Ng(a[o+(r*40|0)+10>>0]|0,c[o+(r*40|0)+12>>2]|0,c[o+(r*40|0)+16>>2]|0)|0;o=L()|0;l=b[s>>1]|0;oa=1317;break}}else{o=w;q=c[o>>2]|0;o=c[o+4>>2]|0;oa=1317}while(0);if((oa|0)==1317){oa=0;na=w;c[na>>2]=q;c[na+4>>2]=o;b[s>>1]=l&15904|4;if((q|0)==-1&(o|0)==2147483647){i=13;oa=1328;break c}else t=o}if(a[x>>0]&2){i=13;oa=1328;break c}l=rf;o=c[l>>2]|0;l=c[l+4>>2]|0;r=Sv(q|0,t|0,1,0)|0;s=L()|0;if(!((l|0)>(t|0)|(l|0)==(t|0)&o>>>0>q>>>0)){o=rf;c[o>>2]=r;c[o+4>>2]=s;o=r;l=s}na=w;c[na>>2]=o;c[na+4>>2]=l}if(a[x>>0]&2){o=z+40|0;l=0;do{Fb(8,rf);q=rf;q=Sv(c[q>>2]|0,c[q+4>>2]&1073741823|0,1,0)|0;i=L()|0;na=rf;c[na>>2]=q;c[na+4>>2]=i;i=Xg(c[o>>2]|0,0,q,i,0,Hd)|0;q=c[Hd>>2]|0;if(q|i|0)break;l=l+1|0}while(l>>>0<100);if(i|0){oa=1328;break c}if(!q){i=13;oa=1328;break c}else i=0}a[z+3>>0]=0;c[z+28>>2]=0;o=rf;q=c[o+4>>2]|0;l=y;c[l>>2]=c[o>>2];c[l+4>>2]=q;l=m;q=pa;o=qa;break}case 122:{i=c[p+8>>2]|0;s=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;w=pa+((c[p+12>>2]|0)*40|0)|0;t=c[w>>2]|0;w=c[w+4>>2]|0;na=qc;c[na>>2]=t;c[na+4>>2]=w;if((a[p+1>>0]|0)==-6?(c[Ca>>2]|0)!=0:0){q=c[(c[uf>>2]|0)+(a[s+1>>0]<<4)>>2]|0;r=c[p+16>>2]|0}else{q=0;r=0}x=p+2|0;l=b[x>>1]|0;if(l&1)c[rc>>2]=(c[rc>>2]|0)+1;if(l&32){na=zb;c[na>>2]=t;c[na+4>>2]=w}c[xb>>2]=c[pa+(i*40|0)+16>>2];c[yb>>2]=c[pa+(i*40|0)+12>>2];if(!(l&16))o=0;else o=c[s+32>>2]|0;if(!(b[pa+(i*40|0)+8>>1]&16384))i=0;else i=c[pa+(i*40|0)>>2]|0;c[Sb>>2]=i;c[rf>>2]=0;i=ah(c[s+40>>2]|0,rf,l&10,o)|0;a[s+3>>0]=0;c[s+28>>2]=0;if(i|0){oa=1345;break c}if(r|0)eb[c[Ca>>2]&127](c[Tb>>2]|0,(b[x>>1]&4)==0?18:23,q,c[r>>2]|0,t,w);l=m;q=pa;o=qa;i=0;break}case 123:{q=c[p+8>>2]|0;r=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;if((a[p+1>>0]|0)==-6?(c[Ca>>2]|0)!=0:0){i=c[(c[uf>>2]|0)+(a[r+1>>0]<<4)>>2]|0;l=c[p+16>>2]|0;if((b[p+2>>1]&2)!=0?(a[r+4>>0]|0)!=0:0){ma=c[r+40>>2]|0;bg(ma);ma=ma+32|0;na=c[ma+4>>2]|0;o=r+64|0;c[o>>2]=c[ma>>2];c[o+4>>2]=na;o=i}else o=i}else{o=0;l=0}i=bh(c[r+40>>2]|0,b[p+2>>1]&255)|0;c[r+28>>2]=0;c[r+32>>2]=0;if(i|0){oa=3855;break c}if(((q&1|0)!=0?(c[rc>>2]=(c[rc>>2]|0)+1,ge=c[Ca>>2]|0,(ge|0)!=0):0)?(c[l+36>>2]&32|0)==0:0){q=r+64|0;eb[ge&127](c[Tb>>2]|0,9,o,c[l>>2]|0,c[q>>2]|0,c[q+4>>2]|0);l=m;q=pa;o=qa;i=0}else{l=m;q=pa;o=qa;i=0}break}case 124:{l=c[rc>>2]|0;c[sc>>2]=l;c[tc>>2]=(c[tc>>2]|0)+l;c[rc>>2]=0;l=m;q=pa;o=qa;i=K;break}case 125:{t=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;w=c[p+12>>2]|0;x=c[p+16>>2]|0;s=c[t+40>>2]|0;r=s+32|0;i=c[r>>2]|0;t=c[t+44>>2]|0;if(!i){q=((e[t+6>>1]|0)*40|0)+56|0;o=c[t+12>>2]|0;C:do if(!o){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](q)|0;oa=1381;break}o=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0>>0)c[14985]=q;l=59064;i=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&i>>>0>0){na=c[14978]|0;ma=Tv(i|0,l|0,o|0,((o|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](o)|0;if(!i){oa=1382;break c}l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[o+272>>2]|0){if(a[o+81>>0]|0){oa=1382;break c}}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){l=o+300|0;i=c[l>>2]|0;if(i|0){c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1381;break C}l=o+296|0;i=c[l>>2]|0;if(!i){i=o+292|0;break}else{c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1381;break C}}else i=o+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(o,q,0)|0;oa=1381}while(0);if((oa|0)==1381){oa=0;if(!i){oa=1382;break c}}c[i+4>>2]=i+16;c[i>>2]=t;c[r>>2]=i;b[i+8>>1]=x;o=i}else o=i;if(!(a[s+56>>0]|0)){l=c[s+36>>2]|0;i=l+8|0}else{l=c[s+20>>2]|0;na=c[l+12>>2]|0;l=c[(c[l+8>>2]|0)+4>>2]|0;i=c[na+(l*56|0)+32>>2]|0;l=na+(l*56|0)+20|0}_g(t,c[l>>2]|0,i,o);if((x|0)>0){l=c[o+4>>2]|0;i=0;do{if(b[l+(i*40|0)+8>>1]&1){i=0;oa=28;break d}i=i+1|0}while((i|0)<(x|0))}if(!(Fh(c[pa+(w*40|0)+12>>2]|0,c[pa+(w*40|0)+16>>2]|0,o,0)|0)){l=m;q=pa;o=qa;i=0}else{i=0;oa=28}break}case 126:{s=c[p+8>>2]|0;i=c[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+40>>2]|0;if(!(a[i+56>>0]|0)){i=c[i+36>>2]|0;r=i+8|0}else{i=c[i+20>>2]|0;na=c[i+12>>2]|0;i=c[(c[i+8>>2]|0)+4>>2]|0;r=c[na+(i*56|0)+32>>2]|0;i=na+(i*56|0)+20|0}i=c[i>>2]|0;if((c[pa+(s*40|0)+24>>2]|0)<(i|0)){if(Eg(pa+(s*40|0)|0,i,0)|0){i=7;oa=3855;break c}o=pa+(s*40|0)+8|0;l=o;o=b[o>>1]|0;q=c[pa+(s*40|0)+16>>2]|0}else{q=c[pa+(s*40|0)+20>>2]|0;c[pa+(s*40|0)+16>>2]=q;l=pa+(s*40|0)+8|0;o=b[l>>1]&13;b[l>>1]=o}c[pa+(s*40|0)+12>>2]=i;b[l>>1]=o&15904|16;ew(q|0,r|0,i|0)|0;c[(c[(c[oc>>2]|0)+(c[p+12>>2]<<2)>>2]|0)+28>>2]=0;l=m;q=pa;o=qa;i=0;break}case 127:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=4;q=i}else{lh(i)|0;q=i}i=c[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+40>>2]|0;bg(i);l=c[i+44>>2]|0;if(l>>>0>(c[Da>>2]|0)>>>0){oa=3891;break c}na=e[i+48>>1]|0;o=c[i+40>>2]|0;ma=(c[(c[i+116>>2]|0)+60>>2]|0)-o|0;if(l>>>0>((ma|0)<(na|0)?((ma|0)>0?ma:0):na)>>>0){i=uh(i,0,l,q)|0;if(i|0){oa=3855;break c}}else{c[q+16>>2]=o;b[q+8>>1]=4112;c[q+12>>2]=l}if((c[p+12>>2]|0)==0?(he=q+8|0,ie=b[he>>1]|0,(ie&4096)!=0):0){i=ie&65535;do if(!(i&18))i=ie;else{do if(!(i&16384))i=ie;else{l=q+12|0;i=(c[q>>2]|0)+(c[l>>2]|0)|0;if((i|0)<1)if(!(ie&16)){i=ie;break}else i=1;if(Eg(q,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[q+16>>2]|0)+(c[l>>2]|0)|0,0,c[q>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+(c[q>>2]|0);i=b[he>>1]&-16897;b[he>>1]=i}while(0);if(c[q+24>>2]|0?(c[q+16>>2]|0)==(c[q+20>>2]|0):0)break;if(Jg(q)|0){l=p;j=h;i=zf;oa=3892;break a}i=b[he>>1]|0}while(0);b[he>>1]=i&-4097;l=m;q=pa;o=qa;i=0}else{l=m;q=pa;o=qa;i=0}break}case -128:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=4;w=i}else{lh(i)|0;w=i}l=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;q=l+2|0;D:do if(!(a[q>>0]|0)){do if(!(a[l+3>>0]|0)){if((a[l>>0]|0)!=2){o=l+40|0;i=c[o>>2]|0;do if(a[i>>0]|0){i=sh(l)|0;if(i|0){oa=1481;break c}if(!(a[q>>0]|0)){i=c[o>>2]|0;break}else{b[w+8>>1]=1;i=0;break D}}while(0);bg(i);o=i+32|0;l=c[o>>2]|0;o=c[o+4>>2]|0;i=rf;c[i>>2]=l;c[i+4>>2]=o;i=0;break}i=c[l+40>>2]|0;t=c[i>>2]|0;i=Xa[c[(c[t>>2]|0)+48>>2]&255](i,rf)|0;t=t+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;E:do if(l|0){do if(q|0){if(c[q+480>>2]|0){Xd(q,l);break E}o=l;if((c[q+304>>2]|0)>>>0>o>>>0)break;if((c[q+308>>2]|0)>>>0<=o>>>0)break;na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break E}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;F:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;G:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break F}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=1464;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break F}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break F}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1464;break G}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1464;break G}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=1464}while(0);if((oa|0)==1464){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}if(i|0){oa=1481;break c}o=rf;i=0;l=c[o>>2]|0;o=c[o+4>>2]|0}else{o=l+64|0;l=c[o>>2]|0;o=c[o+4>>2]|0;i=rf;c[i>>2]=l;c[i+4>>2]=o;i=K}while(0);na=w;c[na>>2]=l;c[na+4>>2]=o}else{b[w+8>>1]=1;i=K}while(0);l=m;q=pa;o=qa;break}case -127:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;a[i+2>>0]=1;c[i+28>>2]=0;if(!(a[i>>0]|0)){i=c[i+40>>2]|0;l=i+16|0;o=c[l>>2]|0;do if(o|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);c[l>>2]=0;a[i>>0]=1;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case 32:case -126:{l=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;i=c[l+40>>2]|0;c[rf>>2]=0;if(z<<24>>24==-126?(c[l+32>>2]=-1,(a[i>>0]|0)==0):0){l=m;q=pa;o=qa;i=K;break d}r=$g(i,rf)|0;i=c[rf>>2]|0;a[l+2>>0]=i;a[l+3>>0]=0;c[l+28>>2]=0;if(r|0){oa=1492;break c}if((i|0)!=0&(c[p+8>>2]|0)>0){i=0;oa=28}else{l=m;q=pa;o=qa;i=0}break}case 33:{s=c[(c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0)+40>>2]|0;i=ch(s,rf)|0;if(i|0){oa=1519;break c}do if(!(c[rf>>2]|0)){if((a[s>>0]|0)==0?(ke=c[s+116>>2]|0,a[ke+8>>0]|0):0){i=e[ke+24>>1]|0;l=a[s+68>>0]|0;if(l<<24>>24>0){q=l<<24>>24;o=0;r=0;l=0;do{i=Yv(i|0,l|0,e[(c[s+120+(r<<2)>>2]|0)+24>>1]|0,0)|0;l=L()|0;o=o+1<<24>>24;r=o&255}while((r|0)<(q|0))}else l=0;if(l>>>0<0|(l|0)==0&i>>>0<8)if(l>>>0<0|(l|0)==0&i>>>0<2)i=0;else{o=40;do{o=(o&65535)+65526|0;i=cw(i|0,l|0,1)|0;l=L()|0}while(l>>>0<0|(l|0)==0&i>>>0<8);o=o&65535;oa=1514}else{if(l>>>0>0|(l|0)==0&i>>>0>255){o=40;do{o=(o&65535)+40|0;oa=i;i=bw(i|0,l|0,4)|0;na=l;l=L()|0}while(na>>>0>0|(na|0)==0&oa>>>0>4095);o=o&65535}else o=40;if(l>>>0>0|(l|0)==0&i>>>0>15){do{o=(o&65535)+10&65535;oa=i;i=bw(i|0,l|0,1)|0;na=l;l=L()|0}while(na>>>0>0|(na|0)==0&oa>>>0>31);oa=1514}else oa=1514}if((oa|0)==1514){oa=0;i=(o&65535)+65526+(e[3648+((i&7)<<1)>>1]|0)|0}if((c[p+12>>2]|0)>(i<<16>>16|0)){c[rf>>2]=1;break}}l=m;q=pa;o=qa;i=0;break d}while(0);i=0;oa=28;break}case 35:case 34:{c[uc>>2]=(c[uc>>2]|0)+1;oa=1521;break}case 36:{oa=1521;break}case 3:{l=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;i=c[l+40>>2]|0;if(a[i+56>>0]|0){c[rf>>2]=0;i=fi(c[i+20>>2]|0,rf)|0;i=(i|0)==0&(c[rf>>2]|0)!=0?101:i;oa=2160;break d}q=i+36|0;o=c[q>>2]|0;oa=o+4|0;c[q>>2]=c[oa>>2];c[oa>>2]=0;do if(!((o|0)==0|(c[i+40>>2]|0)!=0)){if(c[Ze>>2]|0){Xd(Cf,o);break}oa=o;if((c[_e>>2]|0)>>>0<=oa>>>0?(c[$e>>2]|0)>>>0>oa>>>0:0){c[o>>2]=c[af>>2];c[af>>2]=o;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{oa=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);i=(c[q>>2]|0)==0?101:0;oa=2160;break}case 5:case 4:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;l=i;i=Xa[c[p+16>>2]&255](c[i+40>>2]|0,c[p+12>>2]|0)|0;oa=2160;break}case -124:case -125:{t=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;w=c[p+8>>2]|0;o=pa+(w*40|0)|0;s=p+2|0;if(b[s>>1]&1)c[rc>>2]=(c[rc>>2]|0)+1;q=pa+(w*40|0)+8|0;l=b[q>>1]|0;do if(!(l&16384))i=z;else{r=pa+(w*40|0)+12|0;i=(c[o>>2]|0)+(c[r>>2]|0)|0;if((i|0)<1)if(!(l&16)){i=z;break}else i=1;if(Eg(o,i,1)|0){oa=2221;break c}gw((c[pa+(w*40|0)+16>>2]|0)+(c[r>>2]|0)|0,0,c[o>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+(c[o>>2]|0);b[q>>1]=b[q>>1]&-16897;i=a[p>>0]|0}while(0);if(i<<24>>24==-125){t=c[t+40>>2]|0;F=pa+(w*40|0)+16|0;l=c[F>>2]|0;o=l+1|0;na=a[o>>0]|0;i=na&255;do if(na<<24>>24<=-1){q=d[l+2>>0]|0;if(!(q&128)){i=i<<7&16256|q;break}l=d[l+3>>0]|0;if(!(l&128)){i=(i<<14|l)&2080895|q<<7&16256;break}else{Of(o,rf)|0;na=rf;i=c[na>>2]|0;i=((i|0)==(i|0)?0==(c[na+4>>2]|0):0)?i:-1;break}}while(0);do if(!((i|0)!=7&(i+-1|0)>>>0<9)){l=t+60|0;if((i|0)<11|(i&1|0)==0){a[l>>0]=0;break}else{a[l>>0]=a[l>>0]&2;break}}else{na=t+60|0;a[na>>0]=a[na>>0]&1}while(0);E=pa+(w*40|0)+12|0;D=c[E>>2]|0;o=1;i=D;l=((D|0)<0)<<31>>31;while(1){i=bw(i|0,l|0,7)|0;l=L()|0;if((i|0)==0&(l|0)==0)break;else o=o+1|0}s=D+8|0;q=o+D|0;B=t+4|0;l=c[B>>2]|0;do if(!l)i=0;else{if(!(c[t+40>>2]|0)){i=t+44|0;na=c[i>>2]|0;if((na|0)<=(l|0)?!(c[14768]|0?(na|0)>(c[t>>2]|0):0):0){i=0;break}}else{na=c[t+48>>2]|0;if((na|0)==0|(na+s|0)<=(l|0)){i=0;break}i=t+44|0}na=Vh(t)|0;c[i>>2]=0;c[t+48>>2]=0;i=na}while(0);o=t+36|0;l=t+44|0;c[l>>2]=(c[l>>2]|0)+q;l=t+8|0;if((q|0)>(c[l>>2]|0))c[l>>2]=q;A=t+40|0;l=c[A>>2]|0;r=l;if(l){C=t+48|0;q=c[C>>2]|0;y=q+s|0;z=t+52|0;s=c[z>>2]|0;if((y|0)>(s|0)){q=c[o>>2]|0;x=((y|0)<0)<<31>>31;w=s;t=((s|0)<0)<<31>>31;do{w=cw(w|0,t|0,1)|0;t=L()|0}while((t|0)<(x|0)|(t|0)==(x|0)&w>>>0>>0);s=(q|0)==0?-1:q-r|0;q=c[B>>2]|0;r=((q|0)<0)<<31>>31;na=(t|0)>(r|0)|(t|0)==(r|0)&w>>>0>q>>>0;q=na?q:w;r=na?r:t;na=(r|0)<(x|0)|(r|0)==(x|0)&q>>>0>>0;q=na?y:q;r=sb(l,q,na?x:r)|0;if(!r){oa=2221;break c}if((s|0)>-1)c[o>>2]=r+s;c[A>>2]=r;c[z>>2]=q;l=r;q=c[C>>2]|0}l=l+q|0;c[C>>2]=q+(D+15&-8);q=c[o>>2]|0;if(q)c[l+4>>2]=q-r}else{na=Sv(s|0,((s|0)<0)<<31>>31|0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){oa=2221;break c}do if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;if(!l){oa=2221;break c}}else{r=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;l=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&l>>>0>0){na=c[14978]|0;ma=Tv(l|0,q|0,r|0,((r|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](r)|0;if(!l){oa=2221;break c}q=Wa[c[29352>>2]&127](l)|0;q=(c[14978]|0)+q|0;c[14978]=q;if(q>>>0>(c[14982]|0)>>>0)c[14982]=q;q=(c[14981]|0)+1|0;c[14981]=q;if(q>>>0<=(c[14987]|0)>>>0)break;c[14987]=q}while(0);c[l+4>>2]=c[o>>2]}ew(l+8|0,c[F>>2]|0,c[E>>2]|0)|0;c[l>>2]=c[E>>2];c[o>>2]=l}else{na=c[pa+(w*40|0)+12>>2]|0;i=Ab;c[i>>2]=na;c[i+4>>2]=((na|0)<0)<<31>>31;c[Hd>>2]=c[pa+(w*40|0)+16>>2];c[Bb>>2]=pa+((c[p+12>>2]|0)*40|0);b[Cb>>1]=c[p+16>>2];i=e[s>>1]|0;if(!(i&16))l=0;else l=c[t+32>>2]|0;i=ah(c[t+40>>2]|0,Hd,i&10,l)|0;c[t+28>>2]=0}if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -123:{l=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;o=c[l+40>>2]|0;c[Hd>>2]=c[l+44>>2];b[vc>>1]=c[p+12>>2];a[wc>>0]=0;c[xc>>2]=pa+((c[p+8>>2]|0)*40|0);i=Xg(o,Hd,0,0,0,rf)|0;if(i|0){oa=2226;break c}if((c[rf>>2]|0)==0?(me=bh(o,4)|0,me|0):0){i=me;oa=2226;break c}c[l+28>>2]=0;c[l+32>>2]=0;l=m;q=pa;o=qa;i=0;break}case -121:case -122:{s=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;i=s+40|0;if(a[c[i>>2]>>0]|0?(ne=sh(s)|0,ne|0):0){i=ne;oa=3855;break c}if(a[s+2>>0]|0){i=c[p+8>>2]|0;l=pa+(i*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=1;l=m;q=pa;o=qa;i=0;break d}else{Dg(pa+(i*40|0)|0);l=m;q=pa;o=qa;i=0;break d}}i=c[i>>2]|0;bg(i);l=c[i+44>>2]|0;b[jb>>1]=0;c[kb>>2]=Cf;c[lb>>2]=0;na=e[i+48>>1]|0;o=c[i+40>>2]|0;ma=(c[(c[i+116>>2]|0)+60>>2]|0)-o|0;if(l>>>0>((ma|0)<(na|0)?((ma|0)>0?ma:0):na)>>>0){i=uh(i,0,l,Hd)|0;if(i|0){oa=2256;break c}o=c[Eb>>2]|0}else{c[Eb>>2]=o;b[jb>>1]=4112;c[Gb>>2]=l}na=a[o>>0]|0;i=na&255;do if(na<<24>>24<=-1){l=d[o+1>>0]|0;if(!(l&128)){i=i<<7&16256|l;oa=2241;break}q=d[o+2>>0]|0;if(q&128){Of(o,rf)|0;na=rf;i=c[na>>2]|0;if((i|0)==(i|0)?0==(c[na+4>>2]|0):0){oa=2241;break}else{i=-1;break}}else{i=(i<<14|q)&2080895|l<<7&16256;oa=2241;break}}else oa=2241;while(0);if((oa|0)==2241){oa=0;if(i>>>0<3){oa=2253;break c}}if(i>>>0>(c[Gb>>2]|0)>>>0){oa=2253;break c}o=c[Eb>>2]|0;r=o+(i+-1)|0;na=a[r>>0]|0;l=na&255;do if(na<<24>>24<=-1){o=d[o+i>>0]|0;if(!(o&128)){l=l<<7&16256|o;break}q=d[r+2>>0]|0;if(!(q&128)){l=(l<<14|q)&2080895|o<<7&16256;break}else{Of(r,rf)|0;na=rf;l=c[na>>2]|0;l=((l|0)==(l|0)?0==(c[na+4>>2]|0):0)?l:-1;break}}while(0);if((l|0)==7|(l+-1|0)>>>0>8){oa=2253;break c}o=d[3520+l>>0]|0;q=c[Gb>>2]|0;if(q>>>0<(i+o|0)>>>0){oa=2253;break c}Ug((c[Eb>>2]|0)+(q-o)|0,l,Td)|0;q=Td;o=c[q>>2]|0;q=c[q+4>>2]|0;if(!((b[jb>>1]&9216)==0&(c[lb>>2]|0)==0))Cg(Hd);if((a[p>>0]|0)==-122){l=c[(c[oc>>2]|0)+(c[p+12>>2]<<2)>>2]|0;a[l+2>>0]=0;i=l+64|0;c[i>>2]=o;c[i+4>>2]=q;a[l+3>>0]=1;c[l+24>>2]=c[p+16>>2];c[l+36>>2]=s;l=m;q=pa;o=qa;i=0;break d}na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;l=i;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=0;break}case 40:case 39:case 38:case 37:{o=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;c[Hd>>2]=c[o+44>>2];b[zc>>1]=c[p+16>>2];a[Ac>>0]=((z&255)<39)<<31>>31;c[Bc>>2]=pa+((c[p+12>>2]|0)*40|0);o=c[o+40>>2]|0;bg(o);i=c[o+44>>2]|0;if((i|0)<1){oa=2267;break c}b[Ea>>1]=0;c[Fa>>2]=Cf;c[Ga>>2]=0;na=e[o+48>>1]|0;l=c[o+40>>2]|0;ma=(c[(c[o+116>>2]|0)+60>>2]|0)-l|0;if(i>>>0>((ma|0)<(na|0)?((ma|0)>0?ma:0):na)>>>0){i=uh(o,0,i,rf)|0;if(i|0){oa=2274;break c}i=c[nb>>2]|0;l=c[mb>>2]|0}else{c[mb>>2]=l;b[Ea>>1]=4112;c[nb>>2]=i}i=Fh(i,l,Hd,0)|0;if(!((b[Ea>>1]&9216)==0&(c[Ga>>2]|0)==0))Cg(rf);if((((a[p>>0]&1)==0?i+1|0:0-i|0)|0)>0){i=0;oa=28}else{l=m;q=pa;o=qa;i=0}break}case -120:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=4;A=i}else{lh(i)|0;A=i}B=A+8|0;b[B>>1]=1;if((c[Ha>>2]|0)>((c[ad>>2]|0)+1|0)){oa=2280;break c}C=c[p+12>>2]|0;x=c[(c[uf>>2]|0)+(C<<4)+4>>2]|0;z=p+4|0;s=c[z>>2]|0;y=x+4|0;w=c[y>>2]|0;c[w+4>>2]=c[x>>2];if((c[w+44>>2]|0)>>>0>>0){oa=2282;break c}l=c[w>>2]|0;l=Za[c[l+204>>2]&127](l,s,rf,0)|0;if(l|0){oa=2286;break c}i=c[rf>>2]|0;r=c[i+8>>2]|0;q=r+4|0;if((c[q>>2]|0)!=(s|0)){c[r+56>>2]=c[i+4>>2];c[r+72>>2]=i;c[r+52>>2]=w;c[q>>2]=s;a[r+9>>0]=(s|0)==1?100:0}o=c[y>>2]|0;c[o+4>>2]=c[x>>2];i=c[o+8>>2]|0;H:do if(i|0){I:do if(s)while(1){if((c[i+64>>2]|0)==(s|0))break I;i=c[i+24>>2]|0;if(!i)break H}while(0);i=$f(i,s,0)|0;if(i|0){j=i;oa=2301;break c}}while(0);l=x+11|0;if(a[l>>0]|0?(a[l>>0]=0,kd=c[(c[y>>2]|0)+8>>2]|0,kd|0):0){i=kd;do{do if(a[i+1>>0]&16){a[l>>0]=1;if((c[i+64>>2]|0)!=(s|0))break;a[i>>0]=1}while(0);i=c[i+24>>2]|0}while((i|0)!=0)}i=zh(o,s,0,0)|0;if(i|0){j=i;oa=2301;break c}if(!(a[w+17>>0]|0)){i=Bh(c[r+52>>2]|0,r,c[q>>2]|0)|0;do if(r|0){l=c[r+72>>2]|0;if(!(b[l+28>>1]&32)){Df(l);break}else{na=c[l+20>>2]|0;ma=na+120|0;c[ma>>2]=(c[ma>>2]|0)+-1;na=na+136|0;c[l+16>>2]=c[na>>2];c[na>>2]=l;break}}while(0);b[B>>1]=4;na=A;c[na>>2]=0;c[na+4>>2]=0;if(!i){l=m;q=pa;o=qa;i=0;break d}else{oa=3855;break c}}t=c[y>>2]|0;c[t+4>>2]=c[x>>2];t=c[(c[t+12>>2]|0)+56>>2]|0;t=d[t+53>>0]<<16|d[t+52>>0]<<24|d[t+54>>0]<<8|d[t+55>>0];if((t|0)==(s|0)){l=Bh(c[r+52>>2]|0,r,c[q>>2]|0)|0;do if(r|0){i=c[r+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{na=c[i+20>>2]|0;ma=na+120|0;c[ma>>2]=(c[ma>>2]|0)+-1;na=na+136|0;c[i+16>>2]=c[na>>2];c[na>>2]=i;break}}while(0);if(!l)i=0;else{i=0;j=l;oa=2353;break c}}else{do if(r|0){i=c[r+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{na=c[i+20>>2]|0;ma=na+120|0;c[ma>>2]=(c[ma>>2]|0)+-1;na=na+136|0;c[i+16>>2]=c[na>>2];c[na>>2]=i;break}}while(0);l=c[w>>2]|0;l=Za[c[l+204>>2]&127](l,t,rf,0)|0;if(l|0){oa=2319;break c}i=c[rf>>2]|0;o=c[i+8>>2]|0;l=o+4|0;if((c[l>>2]|0)!=(t|0)){c[o+56>>2]=c[i+4>>2];c[o+72>>2]=i;c[o+52>>2]=w;c[l>>2]=t;a[o+9>>0]=(t|0)==1?100:0}l=gg(w,o,1,0,s,0)|0;do if(o|0){i=c[o+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{na=c[i+20>>2]|0;ma=na+120|0;c[ma>>2]=(c[ma>>2]|0)+-1;na=na+136|0;c[i+16>>2]=c[na>>2];c[na>>2]=i;break}}while(0);if(l|0){i=0;j=l;oa=2353;break c}l=c[w>>2]|0;l=Za[c[l+204>>2]&127](l,t,rf,0)|0;if(l|0){oa=2329;break c}i=c[rf>>2]|0;o=c[i+8>>2]|0;l=o+4|0;if((c[l>>2]|0)==(t|0)){l=o+72|0;i=c[o+52>>2]|0}else{c[o+56>>2]=c[i+4>>2];na=o+72|0;c[na>>2]=i;c[o+52>>2]=w;c[l>>2]=t;a[o+9>>0]=(t|0)==1?100:0;l=na;i=w}o=Bh(i,o,t)|0;i=c[l>>2]|0;if(!(b[i+28>>1]&32))Df(i);else{na=c[i+20>>2]|0;ma=na+120|0;c[ma>>2]=(c[ma>>2]|0)+-1;na=na+136|0;c[i+16>>2]=c[na>>2];c[na>>2]=i}if(!o)i=t;else{i=0;j=o;oa=2353;break c}}q=1073741824/((c[w+32>>2]|0)>>>0)|0;r=q+1|0;o=w+36|0;l=t;while(1){s=l+-1|0;if((s|0)!=(r|0)){if(s>>>0<2)l=0;else{l=l+-3|0;l=l-((l>>>0)%(((((c[o>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;l=((l+1|0)==(q|0)?3:2)+l|0}if((l|0)!=(s|0))break}l=s}o=c[y>>2]|0;c[o+4>>2]=c[x>>2];o=c[o+12>>2]|0;l=c[o+56>>2]|0;o=c[o+72>>2]|0;q=c[o+20>>2]|0;do if(!(b[o+28>>1]&4))oa=2344;else{if((c[q+24>>2]|0)>>>0<(c[o+24>>2]|0)>>>0){oa=2344;break}if(!(c[q+96>>2]|0))break;j=Ve(o)|0;oa=2348}while(0);do if((oa|0)==2344){j=c[q+40>>2]|0;if(j|0){oa=2353;break c}if((c[q+148>>2]|0)>>>0>(c[q+152>>2]|0)>>>0){j=Wf(o)|0;oa=2348;break}else{j=Xf(o)|0;oa=2348;break}}while(0);if((oa|0)==2348?(oa=0,j|0):0){oa=2353;break c}a[l+52>>0]=s>>>24;a[l+53>>0]=s>>>16;a[l+54>>0]=s>>>8;a[l+55>>0]=s;b[B>>1]=4;na=A;c[na>>2]=i;c[na+4>>2]=((i|0)<0)<<31>>31;if(!i){l=m;q=pa;o=qa;i=0}else{q=c[z>>2]|0;o=c[(c[uf>>2]|0)+(C<<4)+12>>2]|0;k=c[o+16>>2]|0;if(k|0)do{l=(c[k+8>>2]|0)+28|0;if((c[l>>2]|0)==(i|0))c[l>>2]=q;k=c[k>>2]|0}while((k|0)!=0);k=c[o+32>>2]|0;if(k|0)do{l=(c[k+8>>2]|0)+44|0;if((c[l>>2]|0)==(i|0))c[l>>2]=q;k=c[k>>2]|0}while((k|0)!=0);k=C+1&255;l=m;q=pa;o=qa;i=0}break}case -119:{c[rf>>2]=0;l=c[(c[uf>>2]|0)+(c[p+8>>2]<<4)+4>>2]|0;r=c[p+4>>2]|0;t=p+12|0;q=(c[t>>2]|0)==0?0:rf;o=l+4|0;s=c[o>>2]|0;c[s+4>>2]=c[l>>2];i=c[s+8>>2]|0;J:do if(i){K:do if(r)while(1){if((c[i+64>>2]|0)==(r|0))break K;i=c[i+24>>2]|0;if(!i){oa=2373;break J}}while(0);i=$f(i,r,0)|0;if(!i)oa=2373}else oa=2373;while(0);if((oa|0)==2373){oa=0;l=l+11|0;if(a[l>>0]|0?(a[l>>0]=0,ld=c[(c[o>>2]|0)+8>>2]|0,ld|0):0){i=ld;do{if(a[i+1>>0]&16?(a[l>>0]=1,(c[i+64>>2]|0)==(r|0)):0)a[i>>0]=1;i=c[i+24>>2]|0}while((i|0)!=0)}i=zh(s,r,0,q)|0}l=c[t>>2]|0;if(l|0?(oe=c[rf>>2]|0,c[rc>>2]=(c[rc>>2]|0)+oe,pe=pa+(l*40|0)|0,(l|0)>0):0){la=pe;la=Sv(c[la>>2]|0,c[la+4>>2]|0,oe|0,((oe|0)<0)<<31>>31|0)|0;ma=L()|0;na=pe;c[na>>2]=la;c[na+4>>2]=ma}if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -118:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;if((a[i>>0]|0)==1){wg(Cf,c[i+40>>2]|0);l=m;q=pa;o=qa;i=K;break d}q=c[i+40>>2]|0;l=c[q+8>>2]|0;q=c[q+64>>2]|0;o=l+4|0;r=c[o>>2]|0;c[r+4>>2]=c[l>>2];i=c[r+8>>2]|0;L:do if(i|0){M:do if(q)while(1){if((c[i+64>>2]|0)==(q|0))break M;i=c[i+24>>2]|0;if(!i)break L}while(0);i=$f(i,q,0)|0;if(i|0){oa=3855;break c}}while(0);l=l+11|0;if(a[l>>0]|0?(a[l>>0]=0,jd=c[(c[o>>2]|0)+8>>2]|0,jd|0):0){i=jd;do{if(a[i+1>>0]&16?(a[l>>0]=1,(c[i+64>>2]|0)==(q|0)):0)a[i>>0]=1;i=c[i+24>>2]|0}while((i|0)!=0)}i=zh(r,q,0,0)|0;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -117:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;c[rf>>2]=0;l=Wg(c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0,rf,c[p+12>>2]|0)|0;if(l|0){oa=2406;break c}q=c[rf>>2]|0;l=i;c[l>>2]=q;c[l+4>>2]=((q|0)<0)<<31>>31;l=m;q=pa;o=qa;i=0;break}case -116:{a[Cc>>0]=(a[Cc>>0]|0)+1<<24>>24;i=nd(Cf,c[p+16>>2]|0,0,0,0)|0;a[Cc>>0]=(a[Cc>>0]|0)+-1<<24>>24;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -115:{i=c[p+4>>2]|0;l=p+16|0;if(!(c[l>>2]|0)){dh(c[(c[uf>>2]|0)+(i<<4)+12>>2]|0);c[hf>>2]=c[hf>>2]&-17;i=eh(Cf,i,mf,1)|0;c[hf>>2]=c[hf>>2]|1;na=(d[vf>>0]|d[vf+1>>0]<<8)&-4;a[vf>>0]=na;a[vf+1>>0]=na>>8}else{c[rf>>2]=Cf;c[Ia>>2]=i;c[Ja>>2]=mf;c[Ka>>2]=0;l=c[l>>2]|0;c[Ne>>2]=c[(c[uf>>2]|0)+(i<<4)>>2];c[Ne+4>>2]=34585;c[Ne+8>>2]=l;l=dd(Cf,34599,Ne)|0;if(!l){oa=2424;break c}a[ob>>0]=1;c[pb>>2]=0;c[qb>>2]=0;i=nd(Cf,l,77,rf,0)|0;i=(i|0)==0?c[pb>>2]|0:i;if(!(i|c[qb>>2])){c[Oe>>2]=32306;c[Oe+4>>2]=89378;c[Oe+8>>2]=31517;Db(11,32001,Oe);i=11}do if(!(c[Ze>>2]|0)){na=l;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[l>>2]=c[af>>2];c[af>>2]=l;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}else Xd(Cf,l);while(0);a[ob>>0]=0}switch(i|0){case 7:{oa=2424;break c}case 0:break;default:{oa=2425;break c}}l=m;q=pa;o=qa;i=0;break}case -114:{i=gh(Cf,c[p+4>>2]|0)|0;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -113:{i=mi((c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+12>>2]|0)+8|0,c[p+16>>2]|0,0)|0;do if(i|0){if(c[Ze>>2]|0){Vi(Cf,i);break}ma=i+32|0;na=(c[ma>>2]|0)+-1|0;c[ma>>2]=na;if(!na)Vi(Cf,i)}while(0);c[hf>>2]=c[hf>>2]|1;l=m;q=pa;o=qa;i=K;break}case -112:{o=mi((c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+12>>2]|0)+24|0,c[p+16>>2]|0,0)|0;do if(o|0){l=(c[o+12>>2]|0)+8|0;i=c[l>>2]|0;if((i|0)==(o|0)){c[l>>2]=c[o+20>>2];i=c[o+36>>2]|0;if(i|0)ni(Cf,i);i=c[o+40>>2]|0;if(i|0)ri(Cf,i);i=c[o+16>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);na=o+55|0;N:do if((d[na>>0]|d[na+1>>0]<<8)&16?(qe=c[o+32>>2]|0,qe|0):0){if(c[Ze>>2]|0){Xd(Cf,qe);break}i=qe;do if((c[_e>>2]|0)>>>0<=i>>>0){if((c[$e>>2]|0)>>>0<=i>>>0)break;c[qe>>2]=c[af>>2];c[af>>2]=qe;break N}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](qe);break}else{na=Wa[c[29352>>2]&127](qe)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](qe);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,o);break}na=o;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[o>>2]=c[af>>2];c[af>>2]=o;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}O:do if(i|0){while(1){l=c[i+20>>2]|0;if((l|0)==(o|0))break;if(!l)break O;else i=l}c[i+20>>2]=c[o+20>>2]}while(0);i=c[o+36>>2]|0;if(i|0)ni(Cf,i);i=c[o+40>>2]|0;if(i|0)ri(Cf,i);i=c[o+16>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);na=o+55|0;P:do if((d[na>>0]|d[na+1>>0]<<8)&16?(re=c[o+32>>2]|0,re|0):0){if(c[Ze>>2]|0){Xd(Cf,re);break}i=re;do if((c[_e>>2]|0)>>>0<=i>>>0){if((c[$e>>2]|0)>>>0<=i>>>0)break;c[re>>2]=c[af>>2];c[af>>2]=re;break P}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](re);break}else{na=Wa[c[29352>>2]&127](re)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](re);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,o);break}na=o;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[o>>2]=c[af>>2];c[af>>2]=o;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);c[hf>>2]=c[hf>>2]|1;l=m;q=pa;o=qa;i=K;break}case -110:{x=mi((c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+12>>2]|0)+40|0,c[p+16>>2]|0,0)|0;if(!x){l=m;q=pa;o=qa;i=K}else{q=c[x+20>>2]|0;Q:do if((q|0)==(c[x+24>>2]|0)){w=x+4|0;t=c[w>>2]|0;r=c[q+20>>2]|0;if(!r){l=q+12|0;i=q+16|0}else{l=a[t>>0]|0;if(!(l<<24>>24))i=0;else{i=0;o=t;do{o=o+1|0;i=G(i+(d[208+(l&255)>>0]|0)|0,-1640531535)|0;l=a[o>>0]|0}while(l<<24>>24!=0)}i=(i>>>0)%((c[q+8>>2]|0)>>>0)|0;l=r+(i<<3)|0;i=r+(i<<3)+4|0}l=c[l>>2]|0;R:do if(!l)i=59292;else{s=d[208+(d[t>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;l=l+-1|0;q=c[i+12>>2]|0;na=a[q>>0]|0;o=(d[208+(na&255)>>0]|0)-s|0;if(!(na<<24>>24==0|(o|0)!=0)){r=t;do{q=q+1|0;r=r+1|0;na=a[q>>0]|0;o=(d[208+(na&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(na<<24>>24==0|(o|0)!=0))}if(!o)break R;if(!l){i=59292;break}}}while(0);i=(c[i+8>>2]|0)+68|0;while(1){na=c[i>>2]|0;l=na+32|0;if((na|0)==(x|0))break;else i=l}c[i>>2]=c[l>>2];Xi(Cf,c[x+28>>2]|0);i=c[x>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=c[w>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=c[x+12>>2]|0;if(i|0)ni(Cf,i);r=c[x+16>>2]|0;S:do if(r|0){q=r+4|0;i=c[r>>2]|0;if((c[q>>2]|0)>0){o=0;do{i=c[i+(o<<3)>>2]|0;T:do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}l=i;do if((c[_e>>2]|0)>>>0<=l>>>0){if((c[$e>>2]|0)>>>0<=l>>>0)break;c[i>>2]=c[af>>2];c[af>>2]=i;break T}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);o=o+1|0;i=c[r>>2]|0}while((o|0)<(c[q>>2]|0))}U:do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}l=i;do if((c[_e>>2]|0)>>>0<=l>>>0){if((c[$e>>2]|0)>>>0<=l>>>0)break;c[i>>2]=c[af>>2];c[af>>2]=i;break U}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,r);break}i=r;do if((c[_e>>2]|0)>>>0<=i>>>0){if((c[$e>>2]|0)>>>0<=i>>>0)break;c[r>>2]=c[af>>2];c[af>>2]=r;break S}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{na=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,x);break}i=x;do if((c[_e>>2]|0)>>>0<=i>>>0){if((c[$e>>2]|0)>>>0<=i>>>0)break;c[x>>2]=c[af>>2];c[af>>2]=x;break Q}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](x);break}else{na=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x);break}}else{Xi(Cf,c[x+28>>2]|0);i=c[x>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=c[x+4>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=c[x+12>>2]|0;if(i|0)ni(Cf,i);r=c[x+16>>2]|0;V:do if(r|0){q=r+4|0;i=c[r>>2]|0;if((c[q>>2]|0)>0){o=0;do{i=c[i+(o<<3)>>2]|0;W:do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}l=i;do if((c[_e>>2]|0)>>>0<=l>>>0){if((c[$e>>2]|0)>>>0<=l>>>0)break;c[i>>2]=c[af>>2];c[af>>2]=i;break W}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);o=o+1|0;i=c[r>>2]|0}while((o|0)<(c[q>>2]|0))}X:do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}l=i;do if((c[_e>>2]|0)>>>0<=l>>>0){if((c[$e>>2]|0)>>>0<=l>>>0)break;c[i>>2]=c[af>>2];c[af>>2]=i;break X}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,r);break}i=r;do if((c[_e>>2]|0)>>>0<=i>>>0){if((c[$e>>2]|0)>>>0<=i>>>0)break;c[r>>2]=c[af>>2];c[af>>2]=r;break V}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{na=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);if(c[Ze>>2]|0){Xd(Cf,x);break}na=x;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){c[x>>2]=c[af>>2];c[af>>2]=x;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](x);break}else{na=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x);break}}while(0);c[hf>>2]=c[hf>>2]|1;l=m;q=pa;o=qa;i=K}break}case -109:{w=c[p+8>>2]|0;C=c[p+4>>2]|0;D=pa+(C*40|0)|0;i=c[(c[uf>>2]|0)+(e[p+2>>1]<<4)+4>>2]|0;x=(c[p+16>>2]|0)+4|0;E=pa+((c[p+12>>2]|0)*40|0)|0;na=(c[E>>2]|0)+1|0;z=c[i+4>>2]|0;y=z+4|0;B=(c[y>>2]|0)+32|0;A=c[B>>2]|0;B=c[B+4>>2]|0;c[y>>2]=c[i>>2];c[Td>>2]=z;c[Dc>>2]=c[z>>2];i=c[z+44>>2]|0;c[Ec>>2]=i;c[Fc>>2]=na;c[Jc>>2]=0;c[Kc>>2]=0;c[Gc>>2]=0;c[Gc+4>>2]=0;c[Gc+8>>2]=0;c[Gc+12>>2]=0;c[Gc+16>>2]=0;c[Mc>>2]=Yd;c[Lc>>2]=0;c[Nc>>2]=100;c[Oc>>2]=1e9;c[Pc>>2]=0;a[Qc>>0]=0;a[Rc>>0]=1;Y:do if(i){i=i>>>3;q=i+1|0;if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](q)|0;if(!i)oa=2649}else{o=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0<=i>>>0)c[14985]=q;l=59064;i=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&i>>>0>0){na=c[14978]|0;ma=Tv(i|0,l|0,o|0,((o|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](o)|0;if(i){l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else oa=2649}if((oa|0)==2649){c[Jc>>2]=0;c[Hc>>2]=1;oa=2710;break}gw(i|0,0,q|0)|0;c[Jc>>2]=i;t=z+32|0;q=c[t>>2]|0;if((c[14813]|0)>=(q|0)?(se=c[14819]|0,(se|0)!=0):0){c[14819]=c[se>>2];na=c[14820]|0;c[14820]=na+-1;c[14821]=(na|0)<=(c[14815]|0)&1;if((c[14986]|0)>>>0>>0)c[14986]=q;i=(c[14979]|0)+1|0;c[14979]=i;if(i>>>0>(c[14983]|0)>>>0){c[14983]=i;i=se}else i=se}else oa=2656;Z:do if((oa|0)==2656){oa=0;na=Sv(q|0,((q|0)<0)<<31>>31|0,-1,-1)|0;ma=L()|0;_:do if(!(ma>>>0>0|(ma|0)==0&na>>>0>2147483390)){do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](q)|0;if(!i)break _}else{l=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0>>0)c[14985]=q;i=59064;o=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](l)|0;if(!i)break _;l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0)break;c[14987]=l}while(0);l=Wa[c[29352>>2]&127](i)|0;if((c[14986]|0)>>>0>>0)c[14986]=q;l=(c[14980]|0)+l|0;c[14980]=l;if(l>>>0<=(c[14984]|0)>>>0)break Z;c[14984]=l;break Z}while(0);c[Kc>>2]=0;c[Hc>>2]=1;break Y}while(0);c[Kc>>2]=i;i=(1073741824/((c[t>>2]|0)>>>0)|0)+1|0;if(i>>>0<=(c[Ec>>2]|0)>>>0){na=(c[Jc>>2]|0)+(i>>>3)|0;a[na>>0]=1<<(i&7)|d[na>>0]}c[Ic>>2]=35261;o=z+12|0;s=c[(c[o>>2]|0)+56>>2]|0;si(Td,1,d[s+33>>0]<<16|d[s+32>>0]<<24|d[s+34>>0]<<8|d[s+35>>0],d[s+37>>0]<<16|d[s+36>>0]<<24|d[s+38>>0]<<8|d[s+39>>0]);c[Ic>>2]=0;s=z+17|0;if(!(a[s>>0]|0)){na=c[(c[o>>2]|0)+56>>2]|0;if(d[na+65>>0]<<16|d[na+64>>0]<<24|d[na+66>>0]<<8|d[na+67>>0]|0)ti(Td,35322,Re)}else{if((w|0)>0){i=0;l=0;do{na=c[x+(i<<2)>>2]|0;l=(l|0)<(na|0)?na:l;i=i+1|0}while((i|0)!=(w|0))}else l=0;i=c[(c[o>>2]|0)+56>>2]|0;i=d[i+53>>0]<<16|d[i+52>>0]<<24|d[i+54>>0]<<8|d[i+55>>0];if((l|0)!=(i|0)){c[Qe>>2]=l;c[Qe+4>>2]=i;ti(Td,35277,Qe)}}l=(c[y>>2]|0)+32|0;ma=l;na=c[ma+4>>2]|0;i=l;c[i>>2]=c[ma>>2]&-2097153;c[i+4>>2]=na;i=c[Fc>>2]|0;if((w|0)>0&(i|0)!=0){r=0;do{o=x+(r<<2)|0;q=c[o>>2]|0;if(q){if((q|0)>1&(a[s>>0]|0)!=0){i=eg(c[Td>>2]|0,q,rf,Hd)|0;$:do if((i|0)<7){switch(i|0){case 0:break;default:{oa=2689;break $}}i=a[rf>>0]|0;l=c[Hd>>2]|0;if(i<<24>>24==1&(l|0)==0)break;c[Te>>2]=q;c[Te+4>>2]=1;c[Te+8>>2]=0;c[Te+12>>2]=i&255;c[Te+16>>2]=l;ti(Td,35625,Te)}else{if((i|0)<3082)switch(i|0){case 7:break;default:{oa=2689;break $}}else switch(i|0){case 3082:break;default:{oa=2689;break $}}c[Hc>>2]=1;oa=2689}while(0);if((oa|0)==2689){oa=0;c[Se>>2]=q;ti(Td,35596,Se)}i=c[o>>2]|0}else i=q;ui(Td,i,ee,-1,2147483647)|0;i=c[Fc>>2]|0}r=r+1|0}while((r|0)<(w|0)&(i|0)!=0);l=(c[y>>2]|0)+32|0}na=l;c[na>>2]=A;c[na+4>>2]=B;if((i|0)!=0&(c[Ec>>2]|0)!=0){r=z+36|0;q=1;do{l=q>>>3;o=1<<(q&7);do if(!(o&d[(c[Jc>>2]|0)+l>>0])){if(q>>>0<2)i=0;else{i=q+-2|0;i=i-((i>>>0)%(((((c[r>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;i=((i+1|0)==(1073741824/((c[t>>2]|0)>>>0)|0|0)?3:2)+i|0}if((i|0)==(q|0)?a[s>>0]|0:0)break;c[Ue>>2]=q;ti(Td,35377,Ue);if(o&d[(c[Jc>>2]|0)+l>>0]|0)oa=2704}else oa=2704;while(0);do if((oa|0)==2704){oa=0;if(q>>>0<2)i=0;else{i=q+-2|0;i=i-((i>>>0)%(((((c[r>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;i=((i+1|0)==(1073741824/((c[t>>2]|0)>>>0)|0|0)?3:2)+i|0}if((i|0)!=(q|0))break;if(!(a[s>>0]|0))break;c[We>>2]=q;ti(Td,35399,We)}while(0);q=q+1|0}while(c[Fc>>2]|0?q>>>0<=(c[Ec>>2]|0)>>>0:0);oa=2710}else oa=2710}else oa=2710;while(0);aa:do if((oa|0)==2710?(oa=0,pd=c[Kc>>2]|0,pd|0):0){i=pd;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[pd>>2]=c[14819];c[14819]=pd;na=(c[14820]|0)+1|0;c[14820]=na;c[14821]=(na|0)<(c[14815]|0)&1;break aa}else{i=Wa[c[29352>>2]&127](pd)|0;break}else i=Wa[c[29352>>2]&127](pd)|0;while(0);c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](pd);break}else{na=Wa[c[29352>>2]&127](pd)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](pd);break}}while(0);i=c[Jc>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);if(!(c[Hc>>2]|0))r=c[Gc>>2]|0;else{if(a[Rc>>0]&4){i=c[Lc>>2]|0;l=c[Mc>>2]|0;ba:do if(l|0){do if(i|0){if(c[i+480>>2]|0){Xd(i,l);break ba}o=l;if((c[i+304>>2]|0)>>>0<=o>>>0){if((c[i+308>>2]|0)>>>0<=o>>>0)break;na=i+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break ba}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);a[Rc>>0]=a[Rc>>0]&-5}c[Nc>>2]=0;c[Pc>>2]=0;c[Mc>>2]=0;r=(c[Gc>>2]|0)+1|0;c[Gc>>2]=r}q=(r|0)==0;if(!q){i=c[Mc>>2]|0;if(((i|0)!=0?(a[i+(c[Pc>>2]|0)>>0]=0,(c[Oc>>2]|0)!=0):0)?(a[Rc>>0]&4)==0:0)i=$d(Lc)|0;else oa=2756}else{if(a[Rc>>0]&4){i=c[Lc>>2]|0;l=c[Mc>>2]|0;ca:do if(l|0){do if(i|0){if(c[i+480>>2]|0){Xd(i,l);break ca}o=l;if((c[i+304>>2]|0)>>>0>o>>>0)break;if((c[i+308>>2]|0)>>>0<=o>>>0)break;oa=i+300|0;c[l>>2]=c[oa>>2];c[oa>>2]=l;break ca}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);a[Rc>>0]=a[Rc>>0]&-5}c[Nc>>2]=0;c[Pc>>2]=0;c[Mc>>2]=0;oa=2756}if((oa|0)==2756){oa=0;i=c[Mc>>2]|0}l=pa+(C*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=1;else Dg(D);if(!q){if(!i){l=p;j=h;i=zf;oa=3892;break a}la=r+-1|0;ma=E;la=Tv(c[ma>>2]|0,c[ma+4>>2]|0,la|0,((la|0)<0)<<31>>31|0)|0;ma=L()|0;na=E;c[na>>2]=la;c[na+4>>2]=ma;yc(D,i,-1,1,90)|0}if((b[l>>1]&2)!=0?(a[pa+(C*40|0)+10>>0]|0)!=sd<<24>>24:0){Ig(D,sd)|0;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case -108:{i=c[p+4>>2]|0;l=c[p+8>>2]|0;if((b[pa+(i*40|0)+8>>1]&16)==0?hh(pa+(i*40|0)|0)|0:0){l=p;j=h;i=zf;oa=3892;break a}t=c[pa+(i*40|0)+16>>2]|0;s=pa+(l*40|0)|0;r=c[s>>2]|0;s=c[s+4>>2]|0;q=t+24|0;l=b[q>>1]|0;if(l<<16>>16){na=t+16|0;i=c[na>>2]|0;b[q>>1]=l+-1<<16>>16;c[na>>2]=i+16;if(!i){l=m;q=pa;o=qa;i=K;break d}}else{o=c[t+4>>2]|0;da:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))oa=2779;else{l=m;q=pa;o=qa;i=K;break d}else{do if((e[o+276>>1]|0)>=1016){l=o+300|0;i=c[l>>2]|0;if(i|0){c[l>>2]=c[i>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break da}l=o+296|0;i=c[l>>2]|0;if(!i){i=o+292|0;break}else{c[l>>2]=c[i>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break da}}else i=o+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;oa=2779}while(0);if((oa|0)==2779){oa=0;i=_d(o,1016,0)|0}if(!i){l=m;q=pa;o=qa;i=K;break d}c[i>>2]=c[t>>2];c[t>>2]=i;b[q>>1]=62;c[t+16>>2]=i+24;i=i+8|0}l=i;c[l>>2]=r;c[l+4>>2]=s;c[i+8>>2]=0;l=t+12|0;o=c[l>>2]|0;if(!o)c[t+8>>2]=i;else{na=o;ma=c[na+4>>2]|0;if(!((ma|0)<(s|0)|((ma|0)==(s|0)?(c[na>>2]|0)>>>0>>0:0))){na=t+26|0;b[na>>1]=b[na>>1]&-2}c[o+8>>2]=i}c[l>>2]=i;l=m;q=pa;o=qa;i=K;break}case 41:{l=c[p+4>>2]|0;B=pa+(l*40|0)|0;C=pa+(l*40|0)+8|0;i=b[C>>1]|0;do if(i&16){D=c[pa+(l*40|0)+16>>2]|0;E=D+26|0;A=b[E>>1]|0;i=A&65535;if(!(i&2)){if(!(i&1)){z=D+8|0;i=c[z>>2]|0;gw(Hd|0,0,160)|0;if(!i)i=0;else{l=0;while(1){na=i+8|0;o=i;i=c[na>>2]|0;c[na>>2]=0;if(!l)l=Hd;else{y=0;x=Hd;while(1){q=rf;ea:while(1){w=l;t=c[w>>2]|0;w=c[w+4>>2]|0;while(1){s=o;r=c[s>>2]|0;s=c[s+4>>2]|0;if(!((w|0)>(s|0)|(w|0)==(s|0)&t>>>0>r>>>0))break;c[q+8>>2]=o;q=c[o+8>>2]|0;if(!q){q=o;break ea}else{na=o;o=q;q=na}}if((w|0)<(s|0)|(w|0)==(s|0)&t>>>0>>0){c[q+8>>2]=l;q=l}l=c[l+8>>2]|0;if(!l){l=o;break}}c[q+8>>2]=l;o=c[Nb>>2]|0;c[x>>2]=0;y=y+1|0;q=Hd+(y<<2)|0;l=c[q>>2]|0;if(!l){l=q;break}else x=q}}c[l>>2]=o;l=c[Hd>>2]|0;if(!i){i=l;break}}}w=1;do{o=c[Hd+(w<<2)>>2]|0;if(o)if(!i)i=o;else{l=rf;fa:while(1){t=i;s=c[t>>2]|0;t=c[t+4>>2]|0;while(1){r=o;q=c[r>>2]|0;r=c[r+4>>2]|0;if(!((t|0)>(r|0)|(t|0)==(r|0)&s>>>0>q>>>0))break;c[l+8>>2]=o;l=c[o+8>>2]|0;if(!l){l=o;break fa}else{na=o;o=l;l=na}}if((t|0)<(r|0)|(t|0)==(r|0)&s>>>0>>0){c[l+8>>2]=i;l=i}i=c[i+8>>2]|0;if(!i){i=o;break}}c[l+8>>2]=i;i=c[Mb>>2]|0}w=w+1|0}while((w|0)!=40);c[z>>2]=i}b[E>>1]=A|3}s=D+8|0;i=c[s>>2]|0;if(!i){i=b[C>>1]|0;break}w=i;t=c[w>>2]|0;w=c[w+4>>2]|0;na=c[i+8>>2]|0;c[s>>2]=na;if(!na){i=c[D>>2]|0;if(i|0){r=D+4|0;do{l=i;i=c[i>>2]|0;o=c[r>>2]|0;do if(!o)oa=2830;else{if(c[o+480>>2]|0){Xd(o,l);break}q=l;if((c[o+304>>2]|0)>>>0>q>>>0){oa=2830;break}if((c[o+308>>2]|0)>>>0<=q>>>0){oa=2830;break}na=o+300|0;c[l>>2]=c[na>>2];c[na>>2]=l}while(0);do if((oa|0)==2830){oa=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0)}while((i|0)!=0)}c[D>>2]=0;b[D+24>>1]=0;c[s>>2]=0;c[D+12>>2]=0;c[D+20>>2]=0;b[E>>1]=1}l=c[p+12>>2]|0;i=pa+(l*40|0)|0;l=pa+(l*40|0)+8|0;if(!(b[l>>1]&9216)){o=i;c[o>>2]=t;c[o+4>>2]=w;b[l>>1]=4;l=m;o=pa;i=K;oa=21;break d}else{Pg(i,t,w);l=m;o=pa;i=K;oa=21;break d}}while(0);if(!(i&9216)){b[C>>1]=1;i=K;oa=20;break d}else{Dg(B);i=K;oa=20;break d}}case 42:{l=c[p+4>>2]|0;i=pa+((c[p+12>>2]|0)*40|0)|0;J=c[p+16>>2]|0;if((b[pa+(l*40|0)+8>>1]&16)==0?hh(pa+(l*40|0)|0)|0:0){l=p;j=h;i=zf;oa=3892;break a}I=pa+(l*40|0)+16|0;if(J){B=c[I>>2]|0;H=i;F=c[H>>2]|0;H=c[H+4>>2]|0;C=B+28|0;if((c[C>>2]|0)!=(J|0)){D=B+8|0;l=c[D>>2]|0;if(l|0){A=B+20|0;E=B+26|0;if(!(b[E>>1]&1)){gw(Hd|0,0,160)|0;z=l;l=0;do{na=z+8|0;o=z;z=c[na>>2]|0;c[na>>2]=0;if(!l)l=Hd;else{y=0;x=Hd;while(1){q=rf;ga:while(1){w=l;t=c[w>>2]|0;w=c[w+4>>2]|0;while(1){s=o;r=c[s>>2]|0;s=c[s+4>>2]|0;if(!((w|0)>(s|0)|(w|0)==(s|0)&t>>>0>r>>>0))break;c[q+8>>2]=o;q=c[o+8>>2]|0;if(!q){q=o;break ga}else{na=o;o=q;q=na}}if((w|0)<(s|0)|(w|0)==(s|0)&t>>>0>>0){c[q+8>>2]=l;q=l}l=c[l+8>>2]|0;if(!l){l=o;break}}c[q+8>>2]=l;o=c[Ub>>2]|0;c[x>>2]=0;y=y+1|0;q=Hd+(y<<2)|0;l=c[q>>2]|0;if(!l){l=q;break}else x=q}}c[l>>2]=o;l=c[Hd>>2]|0}while((z|0)!=0);x=1;do{q=c[Hd+(x<<2)>>2]|0;do if(q){if(!l){l=q;break}o=rf;ha:while(1){w=l;t=c[w>>2]|0;w=c[w+4>>2]|0;while(1){s=q;r=c[s>>2]|0;s=c[s+4>>2]|0;if(!((w|0)>(s|0)|(w|0)==(s|0)&t>>>0>r>>>0))break;c[o+8>>2]=q;o=c[q+8>>2]|0;if(!o){o=q;break ha}else{na=q;q=o;o=na}}if((w|0)<(s|0)|(w|0)==(s|0)&t>>>0>>0){c[o+8>>2]=l;o=l}l=c[l+8>>2]|0;if(!l){l=q;break}}c[o+8>>2]=l;l=c[ic>>2]|0}while(0);x=x+1|0}while((x|0)!=40)}o=c[A>>2]|0;ia:do if(!o){s=A;oa=2889}else{while(1){x=o+8|0;r=o+12|0;o=c[r>>2]|0;if(!o)break;wi(o,Hd,Td);c[r>>2]=0;o=rf;w=c[Hd>>2]|0;ja:do{t=w;s=c[t>>2]|0;t=c[t+4>>2]|0;while(1){r=l;q=c[r>>2]|0;r=c[r+4>>2]|0;if(!((t|0)>(r|0)|(t|0)==(r|0)&s>>>0>q>>>0))break;c[o+8>>2]=l;o=c[l+8>>2]|0;if(!o){o=l;l=w;break ja}else{na=l;l=o;o=na}}if((t|0)<(r|0)|(t|0)==(r|0)&s>>>0>>0){c[o+8>>2]=w;o=w}w=c[w+8>>2]|0}while((w|0)!=0);c[o+8>>2]=l;l=c[cc>>2]|0;o=c[x>>2]|0;if(!o){s=x;oa=2889;break ia}}na=l+8|0;o=c[na>>2]|0;c[rf>>2]=o;c[na>>2]=0;c[l+12>>2]=0;if(!o){c[r>>2]=l;break}q=1;while(1){na=o+8|0;c[rf>>2]=c[na>>2];c[o+12>>2]=l;l=xi(rf,q)|0;c[na>>2]=l;l=c[rf>>2]|0;if(!l)break;else{na=o;q=q+1|0;o=l;l=na}}c[r>>2]=o}while(0);ka:do if((oa|0)==2889){oa=0;t=B+24|0;q=b[t>>1]|0;la:do if(q<<16>>16){na=B+16|0;o=c[na>>2]|0;b[t>>1]=q+-1<<16>>16;c[na>>2]=o+16;c[s>>2]=o;if(!o)break ka}else{r=c[B+4>>2]|0;ma:do if(c[r+272>>2]|0){if(!(a[r+81>>0]|0))oa=2900}else{do if((e[r+276>>1]|0)>=1016){q=r+300|0;o=c[q>>2]|0;if(o|0){c[q>>2]=c[o>>2];oa=r+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=2901;break ma}q=r+296|0;o=c[q>>2]|0;if(!o){o=r+292|0;break}else{c[q>>2]=c[o>>2];oa=r+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=2901;break ma}}else o=r+288|0;while(0);c[o>>2]=(c[o>>2]|0)+1;oa=2900}while(0);if((oa|0)==2900){o=_d(r,1016,0)|0;oa=2901}do if((oa|0)==2901){oa=0;if(!o)break;c[o>>2]=c[B>>2];c[B>>2]=o;na=o+8|0;b[t>>1]=62;c[B+16>>2]=o+24;c[s>>2]=na;o=na;break la}while(0);c[s>>2]=0;break ka}while(0);na=o;c[na>>2]=0;c[na+4>>2]=0;c[o+8>>2]=0;na=l+8|0;q=c[na>>2]|0;c[rf>>2]=q;c[na>>2]=0;c[l+12>>2]=0;if(q){r=1;while(1){na=q+8|0;c[rf>>2]=c[na>>2];c[q+12>>2]=l;l=xi(rf,r)|0;c[na>>2]=l;l=c[rf>>2]|0;if(!l){l=q;break}else{na=q;r=r+1|0;q=l;l=na}}}c[o+12>>2]=l}while(0);c[D>>2]=0;c[B+12>>2]=0;b[E>>1]=b[E>>1]|1}c[C>>2]=J}l=c[B+20>>2]|0;if(l|0)do{o=c[l+12>>2]|0;if(o|0)do{r=o;q=c[r>>2]|0;r=c[r+4>>2]|0;if((r|0)<(H|0)|(r|0)==(H|0)&q>>>0>>0)o=o+8|0;else{if(!((r|0)>(H|0)|(r|0)==(H|0)&q>>>0>F>>>0)){i=K;oa=28;break d}o=o+12|0}o=c[o>>2]|0}while((o|0)!=0);l=c[l+8>>2]|0}while((l|0)!=0);if((J|0)<=-1){l=m;q=pa;o=qa;i=K;break d}}t=c[I>>2]|0;s=i;r=c[s>>2]|0;s=c[s+4>>2]|0;q=t+24|0;l=b[q>>1]|0;if(l<<16>>16){na=t+16|0;i=c[na>>2]|0;b[q>>1]=l+-1<<16>>16;c[na>>2]=i+16;if(!i){l=m;q=pa;o=qa;i=K;break d}}else{o=c[t+4>>2]|0;na:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))oa=2933;else{l=m;q=pa;o=qa;i=K;break d}else{do if((e[o+276>>1]|0)>=1016){l=o+300|0;i=c[l>>2]|0;if(i|0){c[l>>2]=c[i>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break na}l=o+296|0;i=c[l>>2]|0;if(!i){i=o+292|0;break}else{c[l>>2]=c[i>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break na}}else i=o+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;oa=2933}while(0);if((oa|0)==2933){oa=0;i=_d(o,1016,0)|0}if(!i){l=m;q=pa;o=qa;i=K;break d}c[i>>2]=c[t>>2];c[t>>2]=i;b[q>>1]=62;c[t+16>>2]=i+24;i=i+8|0}l=i;c[l>>2]=r;c[l+4>>2]=s;c[i+8>>2]=0;l=t+12|0;o=c[l>>2]|0;if(!o)c[t+8>>2]=i;else{na=o;ma=c[na+4>>2]|0;if(!((ma|0)<(s|0)|((ma|0)==(s|0)?(c[na>>2]|0)>>>0>>0:0))){na=t+26|0;b[na>>1]=b[na>>1]&-2}c[o+8>>2]=i}c[l>>2]=i;l=m;q=pa;o=qa;i=K;break}case 45:{z=c[p+16>>2]|0;s=c[p+12>>2]|0;t=pa+(s*40|0)|0;if(b[p+2>>1]|0?(rd=c[z+20>>2]|0,od=c[nc>>2]|0,od|0):0){i=od;do{if((c[i+28>>2]|0)==(rd|0)){l=m;q=pa;o=qa;i=K;break d}i=c[i+4>>2]|0}while((i|0)!=0)}if((c[La>>2]|0)>=(c[Ma>>2]|0)){oa=2968;break c}o=pa+(s*40|0)+8|0;if(!(b[o>>1]&16)){q=z+12|0;r=c[q>>2]|0;w=r+(c[z+8>>2]|0)+((r|0)==0&1)|0;y=z+4|0;r=(r<<2)+80+(((c[y>>2]|0)+7|0)/8|0)+(w*40|0)|0;l=((r|0)<0)<<31>>31;do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=2958;else{l=p;j=m;i=zf;oa=3898;break a}else{if(!(0>>0|(0==(l|0)?(e[Xc>>1]|0)>>>0>>0:0))){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;x=i;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;x=i;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=2958}while(0);if((oa|0)==2958)x=_d(Cf,r,l)|0;if(!x){l=p;j=h;i=zf;oa=3892;break a}gw(x|0,0,r|0)|0;if(!((b[o>>1]&9216)==0?!(c[pa+(s*40|0)+24>>2]|0):0))Cg(t);b[o>>1]=1040;c[pa+(s*40|0)+16>>2]=x;c[pa+(s*40|0)+12>>2]=r;c[pa+(s*40|0)+36>>2]=93;c[x>>2]=f;c[x+60>>2]=w;r=c[q>>2]|0;c[x+64>>2]=r;c[x+48>>2]=(p-m|0)/20|0;c[x+16>>2]=c[xd>>2];c[x+56>>2]=c[va>>2];c[x+20>>2]=c[oc>>2];c[x+44>>2]=c[Ib>>2];c[x+8>>2]=c[le>>2];c[x+52>>2]=c[wb>>2];c[x+28>>2]=c[z+20>>2];m=x+80|0;l=m+(w*40|0)|0;if((l|0)==(m|0)){o=x;p=m;q=m;m=y;l=x;i=r}else{i=m;do{b[i+8>>1]=128;c[i+32>>2]=Cf;i=i+40|0}while((i|0)!=(l|0));o=x;p=m;q=m;m=y;l=x;i=r}}else{l=c[pa+(s*40|0)+16>>2]|0;q=l+80|0;o=l;p=q;m=z+4|0;i=c[z+12>>2]|0}c[La>>2]=(c[La>>2]|0)+1;c[o+4>>2]=c[nc>>2];na=zb;pa=c[na+4>>2]|0;oa=o+32|0;c[oa>>2]=c[na>>2];c[oa+4>>2]=pa;c[o+68>>2]=c[rc>>2];c[o+72>>2]=c[(c[f>>2]|0)+100>>2];c[o+40>>2]=c[Hb>>2];c[Hb>>2]=0;c[rc>>2]=0;c[nc>>2]=l;c[xd>>2]=p;p=c[o+60>>2]|0;c[va>>2]=p;c[Ib>>2]=c[o+64>>2]&65535;p=q+(p*40|0)|0;c[oc>>2]=p;p=p+(i<<2)|0;c[o+24>>2]=p;gw(p|0,0,((c[m>>2]|0)+7|0)/8|0|0)|0;p=c[z>>2]|0;c[le>>2]=p;c[wb>>2]=c[m>>2];l=p;p=p+-20|0;o=q;i=K;oa=21;break}case -107:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;o=c[nc>>2]|0;l=c[o+16>>2]|0;o=(c[(c[o+8>>2]|0)+((c[o+48>>2]|0)*20|0)+4>>2]|0)+(c[p+4>>2]|0)|0;q=l+(o*40|0)|0;r=i+8|0;if(b[r>>1]&9216){mh(i,q,4096);l=m;q=pa;o=qa;i=K;break d};c[i>>2]=c[q>>2];c[i+4>>2]=c[q+4>>2];c[i+8>>2]=c[q+8>>2];c[i+12>>2]=c[q+12>>2];c[i+16>>2]=c[q+16>>2];if(!(b[l+(o*40|0)+8>>1]&2048)){b[r>>1]=b[r>>1]&-7169|4096;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case -106:{if(!((c[Sc>>2]&524288|0)==0&0==0)){o=c[p+8>>2]|0;q=Na;o=Sv(c[q>>2]|0,c[q+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;q=L()|0;l=Na;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break d}i=c[p+8>>2]|0;l=((i|0)<0)<<31>>31;if(!(c[p+4>>2]|0)){o=Oa;o=Sv(c[o>>2]|0,c[o+4>>2]|0,i|0,l|0)|0;q=L()|0;l=Oa;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break d}else{o=Pa;o=Sv(c[o>>2]|0,c[o+4>>2]|0,i|0,l|0)|0;q=L()|0;l=Pa;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break d}}case 46:if(!(c[p+4>>2]|0)){na=Oa;if(!((c[na>>2]|0)==0&(c[na+4>>2]|0)==0)){l=m;q=pa;o=qa;i=K;break d}na=Na;if((c[na>>2]|0)==0&(c[na+4>>2]|0)==0){i=K;oa=28;break d}else{l=m;q=pa;o=qa;i=K;break d}}else{na=Pa;if(!((c[na>>2]|0)==0&(c[na+4>>2]|0)==0)){l=m;q=pa;o=qa;i=K;break d}na=Na;if((c[na>>2]|0)==0&(c[na+4>>2]|0)==0){i=K;oa=28;break d}else{l=m;q=pa;o=qa;i=K;break d}}case -105:{i=c[nc>>2]|0;if(!i)l=pa;else{while(1){l=c[i+4>>2]|0;if(!l)break;else i=l}l=c[i+16>>2]|0}o=c[p+4>>2]|0;t=l+(o*40|0)|0;r=l+(o*40|0)+8|0;i=b[r>>1]|0;q=i&65535;do if(!(q&4)){if(q&8|0){l=Mg(+g[t>>3])|0;o=L()|0;break}if(!(q&18)){l=0;o=0}else{l=Ng(a[l+(o*40|0)+10>>0]|0,c[l+(o*40|0)+12>>2]|0,c[l+(o*40|0)+16>>2]|0)|0;o=L()|0;i=b[r>>1]|0}}else{o=t;l=c[o>>2]|0;o=c[o+4>>2]|0}while(0);s=t;c[s>>2]=l;c[s+4>>2]=o;b[r>>1]=i&15904|4;i=c[p+8>>2]|0;r=pa+(i*40|0)|0;s=pa+(i*40|0)+8|0;q=b[s>>1]|0;l=q&65535;do if(!(l&4)){if(l&8|0){l=Mg(+g[r>>3])|0;o=L()|0;i=q;break}if(!(l&18)){l=0;o=0;i=q}else{l=Ng(a[pa+(i*40|0)+10>>0]|0,c[pa+(i*40|0)+12>>2]|0,c[pa+(i*40|0)+16>>2]|0)|0;o=L()|0;i=b[s>>1]|0}}else{o=r;l=c[o>>2]|0;o=c[o+4>>2]|0;i=q}while(0);na=r;c[na>>2]=l;c[na+4>>2]=o;b[s>>1]=i&15904|4;na=t;ma=c[na+4>>2]|0;if((ma|0)<(o|0)|((ma|0)==(o|0)?(c[na>>2]|0)>>>0>>0:0)){q=t;c[q>>2]=l;c[q+4>>2]=o;l=m;q=pa;o=qa;i=K}else{l=m;q=pa;o=qa;i=K}break}case 47:{i=pa+((c[p+4>>2]|0)*40|0)|0;o=i;l=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&l>>>0>0){na=c[p+12>>2]|0;na=Tv(l|0,o|0,na|0,((na|0)<0)<<31>>31|0)|0;oa=L()|0;c[i>>2]=na;c[i+4>>2]=oa;i=K;oa=28}else{l=m;q=pa;o=qa;i=K}break}case -104:{o=c[p+4>>2]|0;q=c[p+12>>2]|0;na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;o=pa+(o*40|0)|0;l=c[o>>2]|0;o=c[o+4>>2]|0;if(!((o|0)<0|(o|0)==0&l>>>0<1)?(ud=pa+(q*40|0)|0,td=c[ud>>2]|0,ud=c[ud+4>>2]|0,na=(ud|0)>0|(ud|0)==0&td>>>0>0,td=na?td:0,ud=na?ud:0,na=Tv(-1,2147483647,l|0,o|0)|0,ma=L()|0,!(((ud|0)>-1|(ud|0)==-1&td>>>0>4294967295)&((ma|0)<(ud|0)|(ma|0)==(ud|0)&na>>>0>>0))):0){o=Sv(td|0,ud|0,l|0,o|0)|0;q=L()|0;l=i;c[l>>2]=o;c[l+4>>2]=q;l=m;q=pa;o=qa;i=K;break d}l=i;c[l>>2]=-1;c[l+4>>2]=-1;l=m;q=pa;o=qa;i=K;break}case 48:{i=pa+((c[p+4>>2]|0)*40|0)|0;o=i;l=c[o>>2]|0;o=c[o+4>>2]|0;if(!((l|0)==0&(o|0)==0))if((o|0)>0|(o|0)==0&l>>>0>0){na=Sv(l|0,o|0,-1,-1)|0;oa=L()|0;c[i>>2]=na;c[i+4>>2]=oa;i=K;oa=28}else{i=K;oa=28}else{l=m;q=pa;o=qa;i=K}break}case 49:{i=pa+((c[p+4>>2]|0)*40|0)|0;na=i;ma=c[na>>2]|0;na=c[na+4>>2]|0;l=Sv(ma|0,na|0,-1,-1)|0;o=L()|0;if(!((ma|0)==0&(na|0)==-2147483648)?(na=i,c[na>>2]=l,c[na+4>>2]=o,(l|0)==0&(o|0)==0):0){i=K;oa=28}else{l=m;q=pa;o=qa;i=K}break}case -102:case -103:{o=b[p+2>>1]|0;q=o&65535;l=(q<<2)+68|0;do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=3026;else{l=p;j=m;i=zf;oa=3898;break a}else{if(!(0<0|(0==0?(e[Xc>>1]|0)>>>0>>0:0))){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=3026}while(0);if((oa|0)==3026)i=_d(Cf,l,0)|0;if(!i){l=p;j=h;i=zf;oa=3892;break a}c[i+8>>2]=0;s=i+28+(q<<2)|0;c[i>>2]=s;b[s+8>>1]=1;c[s+32>>2]=Cf;c[s+24>>2]=0;s=p+16|0;c[i+4>>2]=c[s>>2];c[i+16>>2]=(p-m|0)/20|0;c[i+12>>2]=f;a[i+24>>0]=0;c[i+20>>2]=0;a[i+25>>0]=o;a[p+1>>0]=-16;c[s>>2]=i;a[p>>0]=-101;s=i;oa=3029;break}case -101:{s=c[p+16>>2]|0;oa=3029;break}case -99:case -100:{o=c[p+4>>2]|0;r=pa+(o*40|0)|0;q=p+12|0;i=c[q>>2]|0;if(!i){l=c[p+16>>2]|0;c[Qa>>2]=0;c[Qa+4>>2]=0;c[Qa+8>>2]=0;c[Qa+12>>2]=0;c[Qa+16>>2]=0;ea=Hd;fa=ea+40|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));b[Sa>>1]=1;i=pa+(o*40|0)+32|0;c[Ta>>2]=c[i>>2];c[rf>>2]=Hd;c[Ua>>2]=r;c[Va>>2]=l;ab[c[l+20>>2]&127](rf);do if((c[pa+(o*40|0)+24>>2]|0)>0){l=c[i>>2]|0;i=c[pa+(o*40|0)+20>>2]|0;if(l|0){if(c[l+480>>2]|0){Xd(l,i);break}na=i;if((c[l+304>>2]|0)>>>0<=na>>>0?(c[l+308>>2]|0)>>>0>na>>>0:0){na=l+300|0;c[i>>2]=c[na>>2];c[na>>2]=i;break}}if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);ea=r;l=Hd;fa=ea+40|0;do{c[ea>>2]=c[l>>2];ea=ea+4|0;l=l+4|0}while((ea|0)<(fa|0));o=r;l=c[rb>>2]|0}else{l=pa+(i*40|0)|0;o=c[p+16>>2]|0;c[rf>>2]=0;c[rf+4>>2]=0;c[rf+8>>2]=0;c[rf+12>>2]=0;c[rf+16>>2]=0;c[rf+20>>2]=0;c[rf+24>>2]=0;c[rf+28>>2]=0;i=pa+(i*40|0)+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else Dg(l);c[rf>>2]=l;c[tb>>2]=r;c[ub>>2]=o;ab[c[o+24>>2]&127](rf);o=pa+((c[q>>2]|0)*40|0)|0;l=c[vb>>2]|0}if(l|0){oa=3073;break c}l=o+8|0;i=b[l>>1]|0;if((i&2)!=0?(a[o+10>>0]|0)!=sd<<24>>24:0){Ig(o,sd)|0;i=b[l>>1]|0}l=i&65535;if(l&18){i=c[o+12>>2]|0;if(l&16384)i=(c[o>>2]|0)+i|0;if((i|0)>(c[(c[o+32>>2]|0)+108>>2]|0)){oa=3891;break c}else{l=m;q=pa;o=qa;i=0}}else{l=m;q=pa;o=qa;i=0}break}case 6:{c[rf>>2]=0;c[Tc>>2]=-1;c[Uc>>2]=-1;i=Nd(Cf,c[p+4>>2]|0,c[p+8>>2]|0,Uc,Tc)|0;switch(i|0){case 0:{l=c[rf>>2]|0;break}case 5:{c[rf>>2]=1;l=1;break}default:{oa=3094;break c}}q=c[p+12>>2]|0;i=pa+(q*40|0)|0;o=((l|0)<0)<<31>>31;q=pa+(q*40|0)+8|0;if(!(b[q>>1]&9216)){na=i;c[na>>2]=l;c[na+4>>2]=o;b[q>>1]=4}else Pg(i,l,o);i=i+40|0;l=c[Uc>>2]|0;o=((l|0)<0)<<31>>31;q=i+8|0;if(!(b[q>>1]&9216)){na=i;c[na>>2]=l;c[na+4>>2]=o;b[q>>1]=4}else Pg(i,l,o);i=i+40|0;l=c[Tc>>2]|0;o=((l|0)<0)<<31>>31;q=i+8|0;if(!(b[q>>1]&9216)){na=i;c[na>>2]=l;c[na+4>>2]=o;b[q>>1]=4}else Pg(i,l,o);l=m;q=pa;o=qa;i=0;break}case 7:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216)){b[l>>1]=4;B=i}else{lh(i)|0;B=i}i=c[p+12>>2]|0;x=c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0;s=x+4|0;z=c[c[s>>2]>>2]|0;o=a[z+5>>0]|0;A=o&255;i=(i|0)==-1?A:i;if((d[z+16>>0]|0)<=2){if((c[c[z+64>>2]>>2]|0)!=0?(na=z+72|0,ma=c[na+4>>2]|0,(ma|0)>0|(ma|0)==0&(c[na>>2]|0)>>>0>0):0)oa=3101}else oa=3101;if((oa|0)==3101){oa=0;i=A}if(!(a[z+15>>0]|0))l=c[z+168>>2]|0;else l=59952;if((i|0)==5)if(((l|0)!=0?((Eu(l)|0)&1073741823|0)!=0:0)?(wd=c[c[z+60>>2]>>2]|0,(a[z+13>>0]|0)==0):0)if(!(a[z+4>>0]|0))if((c[wd>>2]|0)>1?(c[wd+52>>2]|0)!=0:0){y=5;oa=3111}else{l=A;i=K}else{y=5;oa=3111}else{l=A;i=K}else{y=i;oa=3111}oa:do if((oa|0)==3111){oa=0;if((y|0)!=(A|0)){i=o<<24>>24==5;w=(y|0)==5;if(i|w){if(!(a[gd>>0]|0)){oa=3115;break c}if((c[Ha>>2]|0)>1){oa=3115;break c}if(!i){if(o<<24>>24==4)jh(z,2)|0;if(K|0){l=y;i=K;break}}else{o=z+216|0;i=c[o>>2]|0;if(!i){c[rf>>2]=0;l=z+17|0;i=a[l>>0]|0;pa:do switch(i<<24>>24){case 0:case 5:{do if(!(a[z+13>>0]|0)){i=c[z+60>>2]|0;i=Xa[c[(c[i>>2]|0)+28>>2]&255](i,1)|0;if(!i){i=a[l>>0]|0;break}else{l=y;break oa}}while(0);if(i<<24>>24==5)break pa;a[l>>0]=1;break}default:{}}while(0);i=c[z>>2]|0;i=Za[c[i+32>>2]&127](i,c[z+220>>2]|0,0,rf)|0;if((i|0)==0&(c[rf>>2]|0)!=0)i=Uf(z)|0;if(i|0){l=y;break}i=c[o>>2]|0;if(i|0){r=l;oa=3130}}else{r=z+17|0;oa=3130}do if((oa|0)==3130){oa=0;switch(a[r>>0]|0){case 0:case 1:case 2:case 3:case 5:{q=z+13|0;do if(!(a[q>>0]|0)){l=z+60|0;i=c[l>>2]|0;i=Xa[c[(c[i>>2]|0)+28>>2]&255](i,4)|0;if(!i){i=c[o>>2]|0;break}l=c[l>>2]|0;o=c[l>>2]|0;if(!o){l=y;break oa}if(!(a[q>>0]|0))Xa[c[o+32>>2]&255](l,1)|0;if((a[r>>0]|0)==5){l=y;break oa}a[r>>0]=1;l=y;break oa}while(0);a[r>>0]=4;break}default:{}}i=Pf(i,Cf,d[z+11>>0]|0,c[z+152>>2]|0,c[z+208>>2]|0)|0;c[o>>2]=0;if(!i)break;if(a[z+4>>0]|0){l=y;break oa}l=c[z+60>>2]|0;o=c[l>>2]|0;if(!o){l=y;break oa}if(!(a[z+13>>0]|0))Xa[c[o+32>>2]&255](l,1)|0;if((a[r>>0]|0)==5){l=y;break oa}a[r>>0]=1;l=y;break oa}while(0);jh(z,y)|0}l=c[s>>2]|0;t=l+22|0;i=b[t>>1]|0;b[t>>1]=w?i&-33:i|32;i=Zb(x,0,0)|0;qa:do if(!i){l=l+12|0;r=c[(c[l>>2]|0)+56>>2]|0;s=r+18|0;na=a[s>>0]|0;q=w?2:1;if(na<<24>>24==q<<24>>24?(a[r+19>>0]|0)==na<<24>>24:0){i=0;break}i=Zb(x,2,0)|0;if(i|0)break;l=c[(c[l>>2]|0)+72>>2]|0;o=c[l+20>>2]|0;do if(!(b[l+28>>1]&4))oa=3159;else{if((c[o+24>>2]|0)>>>0<(c[l+24>>2]|0)>>>0){oa=3159;break}if(!(c[o+96>>2]|0))break;id=Ve(l)|0;oa=3163}while(0);do if((oa|0)==3159){oa=0;i=c[o+40>>2]|0;if(i|0)break qa;if((c[o+148>>2]|0)>>>0>(c[o+152>>2]|0)>>>0){id=Wf(l)|0;oa=3163;break}else{id=Xf(l)|0;oa=3163;break}}while(0);if((oa|0)==3163?(oa=0,id|0):0){i=id;break}a[s>>0]=q;a[r+19>>0]=q;i=0}while(0);b[t>>1]=b[t>>1]&-33;l=y}else{l=y;i=K}}else{l=A;i=K}}while(0);o=(i|0)!=0;l=jh(z,o?A:l)|0;b[B+8>>1]=2562;if((l|0)==6){c[B+16>>2]=0;l=0}else{l=c[3664+(l<<2)>>2]|0;c[B+16>>2]=l;l=(Eu(l)|0)&1073741823}c[B+12>>2]=l;a[B+10>>0]=1;if(!hb)Ig(B,sd)|0;if(o){oa=3855;break c}else{l=m;q=pa;o=qa;i=0}break}case 8:{i=c[p+8>>2]|0;i=kh(mf,Cf,c[p+4>>2]|0,(i|0)==0?0:pa+(i*40|0)|0)|0;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 59:{na=c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0;w=c[na+4>>2]|0;c[w+4>>2]=c[na>>2];if(a[w+17>>0]|0){x=w+44|0;t=c[x>>2]|0;y=w+12|0;r=c[(c[y>>2]|0)+56>>2]|0;r=d[r+37>>0]<<16|d[r+36>>0]<<24|d[r+38>>0]<<8|d[r+39>>0];l=((c[w+36>>2]|0)>>>0)/5|0;if(t>>>0<2){i=0;o=1073741824/((c[w+32>>2]|0)>>>0)|0;q=l+1|0}else{q=l+1|0;i=t+-2|0;i=i-((i>>>0)%(q>>>0)|0)|0;o=1073741824/((c[w+32>>2]|0)>>>0)|0;i=((i+1|0)==(o|0)?3:2)+i|0}s=t-r-(((l-t+r+i|0)>>>0)/(l>>>0)|0)|0;l=o+1|0;s=s+((l>>>0>>0&s>>>0>>0)<<31>>31)|0;while(1){if(s>>>0<2)i=0;else{i=s+-2|0;i=i-((i>>>0)%(q>>>0)|0)|0;i=((i+1|0)==(o|0)?3:2)+i|0}if((s|0)==(l|0)|(i|0)==(s|0))s=s+-1|0;else break}if(t>>>0>>0){oa=3182;break c}if(r){l=w+8|0;i=c[l>>2]|0;if(i){i=$f(i,0,0)|0;if(!i){i=c[l>>2]|0;if(!i)oa=3189;else{do{oa=i+1|0;a[oa>>0]=a[oa>>0]&-5;i=c[i+24>>2]|0}while((i|0)!=0);oa=3189}}}else oa=3189;if((oa|0)==3189){oa=0;i=_f(w,s,t,0)|0;if(!i){l=c[(c[y>>2]|0)+72>>2]|0;o=c[l+20>>2]|0;if((b[l+28>>1]&4)!=0?(c[o+24>>2]|0)>>>0>=(c[l+24>>2]|0)>>>0:0)if(!(c[o+96>>2]|0))i=0;else i=Ve(l)|0;else oa=3194;do if((oa|0)==3194){oa=0;i=c[o+40>>2]|0;if(!i)if((c[o+148>>2]|0)>>>0>(c[o+152>>2]|0)>>>0){i=Wf(l)|0;break}else{i=Xf(l)|0;break}}while(0);na=c[(c[y>>2]|0)+56>>2]|0;ma=c[x>>2]|0;a[na+28>>0]=ma>>>24;a[na+29>>0]=ma>>>16;a[na+30>>0]=ma>>>8;a[na+31>>0]=ma}}switch(i|0){case 101:{i=0;oa=28;break}case 0:{l=m;q=pa;o=qa;break}default:{oa=3855;break c}}}else{i=0;oa=28}}else{i=0;oa=28}break}case -98:{l=c[p+8>>2]|0;if(c[p+4>>2]|0){l=(d[vf>>0]|d[vf+1>>0]<<8)&-4|l+1&3;a[vf>>0]=l;a[vf+1>>0]=l>>8;l=m;q=pa;o=qa;i=K;break d}i=c[$a>>2]|0;if(!i){l=m;q=pa;o=qa;i=K}else{l=l+1&3;do{na=i+149|0;ma=(d[na>>0]|d[na+1>>0]<<8)&-4|l;a[na>>0]=ma;a[na+1>>0]=ma>>8;i=c[i+8>>2]|0}while((i|0)!=0);l=m;q=pa;o=qa;i=K}break}case -97:{i=c[p+12>>2]|0;if((i&255|0)==0?!((c[Sc>>2]&1024|0)==0&0==0):0){l=m;q=pa;o=qa;i=K;break d}r=c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0;s=c[p+8>>2]|0;if(a[r+9>>0]|0){t=i+1&255;o=c[r+4>>2]|0;c[o+4>>2]=c[r>>2];if((c[o+76>>2]|0)!=(r|0)?b[o+22>>1]&64:0){oa=3236;break c}q=o+72|0;i=c[q>>2]|0;ra:do if(!i)oa=3222;else{l=i;do{if(((c[l>>2]|0)!=(r|0)?(c[l+4>>2]|0)==(s|0):0)?(a[l+8>>0]|0)!=t<<24>>24:0){oa=3215;break c}l=c[l+12>>2]|0}while((l|0)!=0);while(1){if((c[i+4>>2]|0)==(s|0)?(c[i>>2]|0)==(r|0):0)break ra;i=c[i+12>>2]|0;if(!i){oa=3222;break}}}while(0);if((oa|0)==3222){oa=0;if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](16)|0;if(!i){i=7;oa=3855;break c}}else{i=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;o=59064;l=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&l>>>0>0){na=c[14978]|0;ma=Tv(l|0,o|0,i|0,((i|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=7;oa=3855;break c}l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}na=i+8|0;a[na>>0]=0;a[na+1>>0]=0;a[na+2>>0]=0;a[na+3>>0]=0;c[i+4>>2]=s;c[i>>2]=r;c[i+12>>2]=c[q>>2];c[q>>2]=i}i=i+8|0;if((d[i>>0]|0)<(t&255)){a[i>>0]=t;l=m;q=pa;o=qa;i=0}else{l=m;q=pa;o=qa;i=0}}else{l=m;q=pa;o=qa;i=0}break}case -96:{x=c[p+16>>2]|0;s=c[Vc>>2]|0;q=(s|0)>0;if(q?(c[db>>2]|0)==0:0){i=6;oa=3268}else oa=3239;sa:do if((oa|0)==3239){oa=0;if(!x){l=m;q=pa;o=qa;i=0;break d}l=x+8|0;i=c[l>>2]|0;w=c[i>>2]|0;t=w+56|0;o=c[t>>2]|0;if(o){if(q){r=c[db>>2]|0;q=0;do{if((c[r+(q<<2)>>2]|0)==(x|0)){i=0;oa=3268;break sa}q=q+1|0}while((q|0)<(s|0))}if(!((s|0)%5|0)){o=cw(s|0,((s|0)<0)<<31>>31|0,2)|0;o=Sv(o|0,L()|0,20,0)|0;q=L()|0;i=c[db>>2]|0;ta:do if(!i){if(c[$c>>2]|0){if(a[zf>>0]|0){i=7;oa=3268;break sa}}else{do if(q>>>0>0|((q|0)==0?o>>>0>(e[Xc>>1]|0)>>>0:0))i=Yc;else{i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=3261;break ta}i=c[cd>>2]|0;if(!i){i=fd;break}c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=3261;break ta}while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(Cf,o,q)|0;oa=3261}else{na=i;if((c[_e>>2]|0)>>>0<=na>>>0?(c[$e>>2]|0)>>>0>na>>>0:0){if(!(q>>>0>0|((q|0)==0?o>>>0>(e[Xc>>1]|0)>>>0:0))){o=s;break}i=Zd(Cf,i,o,q)|0;oa=3261;break}i=Zd(Cf,i,o,q)|0;oa=3261}while(0);if((oa|0)==3261){if(!i){i=7;oa=3268;break}o=c[Vc>>2]|0}o=i+(o<<2)|0;c[o>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[o+16>>2]=0;c[db>>2]=i;o=c[t>>2]|0;i=c[l>>2]|0}i=Wa[o&127](i)|0;if(!i){i=(c[Gd>>2]|0)+(c[Fd>>2]|0)|0;na=c[db>>2]|0;oa=c[Vc>>2]|0;c[Vc>>2]=oa+1;c[na+(oa<<2)>>2]=x;oa=x+12|0;c[oa>>2]=(c[oa>>2]|0)+1;if((i|0)!=0?(yd=c[w+80>>2]|0,(yd|0)!=0):0){c[x+20>>2]=i;i=Xa[yd&255](c[l>>2]|0,i+-1|0)|0;oa=3270}else{i=0;oa=3270}}else oa=3268}else{i=0;oa=3270}}while(0);if((oa|0)==3268){oa=0;if(x){l=x+8|0;oa=3270}}if((oa|0)==3270){oa=0;t=(c[l>>2]|0)+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;ua:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;va:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break ua}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3306;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break ua}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break ua}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3306;break va}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3306;break va}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3306}while(0);if((oa|0)==3306){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}}if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -95:{ea=rf;fa=ea+40|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));c[Wc>>2]=Cf;na=c[p+8>>2]|0;i=pa+(na*40|0)|0;c[rf>>2]=c[i>>2];c[rf+4>>2]=c[i+4>>2];c[rf+8>>2]=c[i+8>>2];c[rf+12>>2]=c[i+12>>2];c[rf+16>>2]=c[i+16>>2];i=b[sa>>1]&-1025;b[sa>>1]=i;i=i&65535;wa:do if((i&18|0)!=0?(b[pa+(na*40|0)+8>>1]&2048)==0:0){l=(i|4096)&65535;b[sa>>1]=l;do if(i&16384){i=(c[rf>>2]|0)+(c[Xb>>2]|0)|0;if((i|0)<1)if(!(l&16)){oa=3322;break}else i=1;if(Eg(rf,i,1)|0){i=7;break wa}gw((c[Ob>>2]|0)+(c[Xb>>2]|0)|0,0,c[rf>>2]|0)|0;c[Xb>>2]=(c[Xb>>2]|0)+(c[rf>>2]|0);i=b[sa>>1]&-16897;b[sa>>1]=i;if(!((c[Qb>>2]|0)!=0?(c[Ob>>2]|0)==(c[ec>>2]|0):0))oa=3322}else oa=3322;while(0);if((oa|0)==3322){oa=0;i=Jg(rf)|0;if(i|0)break;i=b[sa>>1]|0}b[sa>>1]=i&-4097;i=0}else i=0;while(0);l=b[sa>>1]|0;if(!((l&514)==514&(a[Jb>>0]|0)==1)){if(!(l&1)){l=Gg(rf,1)|0;oa=3329}}else{l=c[Ob>>2]|0;oa=3329}xa:do if((oa|0)==3329){oa=0;if(l){w=Sd(Cf,l,c[(c[uf>>2]|0)+(c[p+4>>2]<<4)>>2]|0)|0;t=c[c[w+60>>2]>>2]|0;q=c[Pb>>2]|0;if(!q){l=Wb;i=Vb}else{l=a[t>>0]|0;if(!(l<<24>>24))i=0;else{i=0;o=t;do{o=o+1|0;i=G(i+(d[208+(l&255)>>0]|0)|0,-1640531535)|0;l=a[o>>0]|0}while(l<<24>>24!=0)}i=(i>>>0)%((c[dc>>2]|0)>>>0)|0;l=q+(i<<3)|0;i=q+(i<<3)+4|0}l=c[l>>2]|0;ya:do if(!l)i=59292;else{s=d[208+(d[t>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;l=l+-1|0;q=c[i+12>>2]|0;na=a[q>>0]|0;o=(d[208+(na&255)>>0]|0)-s|0;if(!(na<<24>>24==0|(o|0)!=0)){r=t;do{q=q+1|0;r=r+1|0;na=a[q>>0]|0;o=(d[208+(na&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(na<<24>>24==0|(o|0)!=0))}if(!o)break ya;if(!l){i=59292;break}}}while(0);i=c[i+8>>2]|0;if((i|0?(zd=c[i>>2]|0,Ad=c[zd+4>>2]|0,Ad|0):0)?c[zd+20>>2]|0:0){i=Ai(Cf,w,i,Ad,mf)|0;if(i|0)break;s=w+64|0;i=c[s>>2]|0;if(!i){i=0;break}l=i;while(1){if((c[l>>2]|0)==(Cf|0))break;l=c[l+24>>2]|0;if(!l){i=0;break xa}}l=c[Vc>>2]|0;if(!((l|0)%5|0)){q=cw(l|0,((l|0)<0)<<31>>31|0,2)|0;q=Sv(q|0,L()|0,20,0)|0;r=L()|0;i=c[db>>2]|0;za:do if(!i){if(c[$c>>2]|0){if(a[zf>>0]|0){i=7;break xa}}else{do if(r>>>0>0|((r|0)==0?q>>>0>(e[Xc>>1]|0)>>>0:0))i=Yc;else{i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=3367;break za}i=c[cd>>2]|0;if(!i){i=fd;break}c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=3367;break za}while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(Cf,q,r)|0;oa=3367}else{o=i;do if((c[_e>>2]|0)>>>0<=o>>>0){if((c[$e>>2]|0)>>>0<=o>>>0)break;if(!(r>>>0>0|((r|0)==0?q>>>0>(e[Xc>>1]|0)>>>0:0)))break za;i=Zd(Cf,i,q,r)|0;oa=3367;break za}while(0);i=Zd(Cf,i,q,r)|0;oa=3367}while(0);if((oa|0)==3367){oa=0;if(!i){i=7;break}l=c[Vc>>2]|0}na=i+(l<<2)|0;c[na>>2]=0;c[na+4>>2]=0;c[na+8>>2]=0;c[na+12>>2]=0;c[na+16>>2]=0;c[db>>2]=i;i=c[s>>2]|0}Aa:do if(!i)i=0;else while(1){if((c[i>>2]|0)==(Cf|0))break Aa;i=c[i+24>>2]|0;if(!i){i=0;break}}while(0);ma=c[db>>2]|0;na=c[Vc>>2]|0;c[Vc>>2]=na+1;c[ma+(na<<2)>>2]=i;i=i+12|0;c[i>>2]=(c[i>>2]|0)+1;i=0;break}c[we>>2]=t;i=dd(Cf,36690,we)|0;c[mf>>2]=i;i=1}}while(0);if(!((b[sa>>1]&9216)==0&(c[Qb>>2]|0)==0))Cg(rf);if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case -94:{i=(c[ad>>2]|0)+1|0;c[ad>>2]=i;l=Sd(Cf,c[p+16>>2]|0,c[(c[uf>>2]|0)+(c[p+4>>2]<<4)>>2]|0)|0;do if(l|0?(Bd=l+64|0,Cd=c[Bd>>2]|0,Cd|0):0){l=Cd;do{if((c[(c[l+8>>2]|0)+4>>2]|0)>0){j=6;oa=3401;break c}l=c[l+24>>2]|0}while((l|0)!=0);c[Bd>>2]=0;r=Cd;l=0;while(1){o=c[r>>2]|0;q=r+24|0;i=r;r=c[q>>2]|0;if((o|0)==(Cf|0)){c[Bd>>2]=i;c[q>>2]=0;o=i}else{o=o+360|0;c[q>>2]=c[o>>2];c[o>>2]=i;o=l}if(!r)break;else l=o}i=o+8|0;l=Wa[c[(c[c[o+4>>2]>>2]|0)+20>>2]&127](c[i>>2]|0)|0;if(l|0){oa=3400;break c}c[i>>2]=0;c[Bd>>2]=0;i=c[o>>2]|0;ma=o+12|0;na=(c[ma>>2]|0)+-1|0;c[ma>>2]=na;if(!na){if(i|0){if(c[i+480>>2]|0){Xd(i,o);break}na=o;if((c[i+304>>2]|0)>>>0<=na>>>0?(c[i+308>>2]|0)>>>0>na>>>0:0){na=i+300|0;c[o>>2]=c[na>>2];c[na>>2]=o;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}}while(0);c[ad>>2]=(c[ad>>2]|0)+-1;l=m;q=pa;o=qa;i=0;break}case -93:{c[rf>>2]=0;w=c[(c[p+16>>2]|0)+8>>2]|0;if(!w){i=6;oa=3458;break c}x=c[w>>2]|0;if(!x){i=6;oa=3458;break c}i=Xa[c[x+24>>2]&255](w,rf)|0;t=w+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;Ba:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;Ca:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break Ba}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3440;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Ba}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break Ba}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3440;break Ca}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3440;break Ca}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3440}while(0);if((oa|0)==3440){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}if(i|0){oa=3458;break c}c[c[rf>>2]>>2]=w;o=c[p+4>>2]|0;i=c[xd>>2]|0;if((o|0)>0)i=i+(((c[va>>2]|0)-o|0)*40|0)|0;l=c[(c[oc>>2]|0)+(o<<2)>>2]|0;if(l|0){na=l+5|0;a[na>>0]=a[na>>0]&-2;tg(f,c[(c[oc>>2]|0)+(o<<2)>>2]|0);c[(c[oc>>2]|0)+(o<<2)>>2]=0}if((c[i+24>>2]|0)<96){if(Eg(i,96,0)|0){oa=3459;break c}i=c[i+16>>2]|0}else{na=c[i+20>>2]|0;c[i+16>>2]=na;i=i+8|0;b[i>>1]=b[i>>1]&13;i=na}c[(c[oc>>2]|0)+(o<<2)>>2]=i;ea=i;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[i>>0]=2;a[i+1>>0]=-1;b[i+56>>1]=0;c[i+72>>2]=i+88;if(!i){oa=3459;break c}c[i+40>>2]=c[rf>>2];l=w+4|0;c[l>>2]=(c[l>>2]|0)+1;l=m;q=pa;o=qa;i=0;break}case 9:{q=pa+((c[p+12>>2]|0)*40|0)|0;l=q+40|0;w=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;x=c[w+40>>2]|0;s=c[x>>2]|0;y=c[s>>2]|0;o=c[l>>2]|0;q=c[q>>2]|0;r=c[ta>>2]|0;if((o|0)>0){i=0;do{na=i;i=i+1|0;c[r+(na<<2)>>2]=l+(i*40|0)}while((i|0)!=(o|0))}i=_a[c[y+32>>2]&127](x,q,c[p+16>>2]|0,o,r)|0;t=s+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;Da:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;Ea:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break Da}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3499;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Da}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break Da}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3499;break Ea}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3499;break Ea}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3499}while(0);if((oa|0)==3499){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}if(i|0){oa=3855;break c}na=Wa[c[y+40>>2]&127](x)|0;a[w+2>>0]=0;if(!na){l=m;q=pa;o=qa;i=0}else{i=0;oa=28}break}case -92:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;x=c[p+12>>2]|0;y=pa+(x*40|0)|0;if(a[i+2>>0]|0){i=pa+(x*40|0)+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else Dg(y);l=m;q=pa;o=qa;i=K;break d}i=i+40|0;q=c[c[i>>2]>>2]|0;l=c[q>>2]|0;c[kc>>2]=0;c[kc+4>>2]=0;c[kc+8>>2]=0;c[kc+12>>2]=0;c[kc+16>>2]=0;c[kc+20>>2]=0;c[kc+24>>2]=0;c[rf>>2]=y;w=pa+(x*40|0)+8|0;o=b[w>>1]|0;if(!(b[p+2>>1]&1))b[w>>1]=o&15904|1;else{if(!(o&9216))b[w>>1]=1;else Dg(y);b[w>>1]=16385;c[y>>2]=0}i=Ya[c[l+44>>2]&127](c[i>>2]|0,rf,c[p+8>>2]|0)|0;t=q+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;Fa:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;Ga:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break Fa}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3554;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Fa}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break Fa}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3554;break Ga}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3554;break Ga}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3554}while(0);if((oa|0)==3554){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}if((c[Kb>>2]|0)>0){i=b[w>>1]|0;if((i&514)==514?(a[pa+(x*40|0)+10>>0]|0)==1:0)i=c[pa+(x*40|0)+16>>2]|0;else if(!(i&1))i=Gg(y,1)|0;else i=0;c[xe>>2]=i;Ag(f,31408,xe);i=c[Kb>>2]|0}l=b[w>>1]|0;if((l&2)!=0?(a[pa+(x*40|0)+10>>0]|0)!=sd<<24>>24:0){Ig(y,sd)|0;l=b[w>>1]|0}o=l&65535;if(o&18){l=c[pa+(x*40|0)+12>>2]|0;if(o&16384)l=(c[y>>2]|0)+l|0;if((l|0)>(c[(c[pa+(x*40|0)+32>>2]|0)+108>>2]|0)){oa=3576;break c}else l=(i|0)==0?7:12}else l=(i|0)==0?7:12;switch(l&15){case 12:{oa=3855;break c}case 15:{oa=3891;break c}case 7:{l=m;q=pa;o=qa;break}default:{h=0;oa=3900;break c}}break}case 60:{i=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;if(!(a[i+2>>0]|0)){t=i+40|0;i=c[t>>2]|0;x=c[i>>2]|0;w=c[x>>2]|0;i=Wa[c[w+36>>2]&127](i)|0;x=x+8|0;if(c[x>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[x>>2]|0;Ha:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;Ia:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break Ha}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3616;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Ha}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break Ha}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3616;break Ia}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3616;break Ia}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3616}while(0);if((oa|0)==3616)if(!l){l=0;break}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[x>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[x>>2]=0}if(i|0){oa=3855;break c}if(!(Wa[c[w+40>>2]&127](c[t>>2]|0)|0)){i=0;oa=20}else{l=m;o=pa;i=0;oa=21}}else{l=m;q=pa;o=qa;i=K}break}case -91:{i=Sc;o=c[i>>2]|0;i=c[i+4>>2]|0;q=Sc;c[q>>2]=o|67108864;c[q+4>>2]=i;q=c[(c[p+16>>2]|0)+8>>2]|0;i=c[p+4>>2]|0;l=pa+(i*40|0)|0;if((b[pa+(i*40|0)+8>>1]&2?(a[pa+(i*40|0)+10>>0]|0)!=1:0)?(Dd=Ig(l,1)|0,Dd|0):0){i=Dd;oa=3855;break c}i=Xa[c[(c[q>>2]|0)+76>>2]&255](q,c[pa+(i*40|0)+16>>2]|0)|0;if((o&67108864|0)==0&0==0){la=Sc;ma=c[la+4>>2]|0;na=Sc;c[na>>2]=c[la>>2]&-67108865;c[na+4>>2]=ma}t=q+8|0;if(c[t>>2]|0){q=c[f>>2]|0;l=c[mf>>2]|0;do if(l|0){if(q|0){if(c[q+480>>2]|0){Xd(q,l);break}na=l;if((c[q+304>>2]|0)>>>0<=na>>>0?(c[q+308>>2]|0)>>>0>na>>>0:0){na=q+300|0;c[l>>2]=c[na>>2];c[na>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);r=c[t>>2]|0;Ja:do if(!r)l=0;else{s=(Eu(r)|0)+1|0;Ka:do if(!q){na=Sv(s|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){l=0;break Ja}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](s)|0;oa=3666;break}l=Wa[c[29356>>2]&127](s)|0;if((c[14985]|0)>>>0>>0)c[14985]=s;q=59064;o=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&o>>>0>0){na=c[14978]|0;ma=Tv(o|0,q|0,l|0,((l|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Ja}o=Wa[c[29352>>2]&127](l)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){l=0;break Ja}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){o=q+300|0;l=c[o>>2]|0;if(l|0){c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3666;break Ka}o=q+296|0;l=c[o>>2]|0;if(!l){l=q+292|0;break}else{c[o>>2]=c[l>>2];oa=q+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3666;break Ka}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(q,s,0)|0;oa=3666}while(0);if((oa|0)==3666){oa=0;if(!l){l=0;break}}ew(l|0,r|0,s|0)|0}while(0);c[mf>>2]=l;l=c[t>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{na=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[t>>2]=0}na=(d[vf>>0]|d[vf+1>>0]<<8)&-4;a[vf>>0]=na;a[vf+1>>0]=na>>8;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}break}case 10:{if(a[zf>>0]|0){i=2;j=K;break c}y=p+16|0;t=c[(c[y>>2]|0)+8>>2]|0;if(!t){i=12;j=6;break c}i=c[t>>2]|0;if(!i){i=12;j=6;break c}s=c[p+8>>2]|0;o=i+52|0;i=c[o>>2]|0;La:do if(i){r=a[Rb>>0]|0;q=c[ta>>2]|0;if((s|0)>0){i=pa+((c[p+12>>2]|0)*40|0)|0;l=0;while(1){c[q+(l<<2)>>2]=i;l=l+1|0;if((l|0)==(s|0))break;else i=i+40|0}i=c[o>>2]|0}w=p+2|0;a[Rb>>0]=b[w>>1];x=Za[i&127](t,s,q,rf)|0;a[Rb>>0]=r;s=t+8|0;if(c[s>>2]|0){o=c[f>>2]|0;i=c[mf>>2]|0;Ma:do if(i|0){do if(o|0){if(c[o+480>>2]|0){Xd(o,i);break Ma}l=i;if((c[o+304>>2]|0)>>>0>l>>>0)break;if((c[o+308>>2]|0)>>>0<=l>>>0)break;na=o+300|0;c[i>>2]=c[na>>2];c[na>>2]=i;break Ma}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);q=c[s>>2]|0;Na:do if(!q)i=0;else{r=(Eu(q)|0)+1|0;Oa:do if(!o){na=Sv(r|0,0,-1,-1)|0;ma=L()|0;if(ma>>>0>0|(ma|0)==0&na>>>0>2147483390){i=0;break Na}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](r)|0;oa=3718;break}i=Wa[c[29356>>2]&127](r)|0;if((c[14985]|0)>>>0>>0)c[14985]=r;o=59064;l=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&l>>>0>0){na=c[14978]|0;ma=Tv(l|0,o|0,i|0,((i|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=0;break Na}l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0)break;c[14987]=l}else{if(c[o+272>>2]|0){if(a[o+81>>0]|0){i=0;break Na}}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){l=o+300|0;i=c[l>>2]|0;if(i|0){c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3718;break Oa}l=o+296|0;i=c[l>>2]|0;if(!i){i=o+292|0;break}else{c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=3718;break Oa}}else i=o+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(o,r,0)|0;oa=3718}while(0);if((oa|0)==3718){oa=0;if(!i){i=0;break}}ew(i|0,q|0,r|0)|0}while(0);c[mf>>2]=i;i=c[s>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{na=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[s>>2]=0}if(!x){if(c[p+4>>2]|0){la=rf;ma=c[la+4>>2]|0;na=zb;c[na>>2]=c[la>>2];c[na+4>>2]=ma}c[rc>>2]=(c[rc>>2]|0)+1;i=0;break}else{if((x&255|0)!=19){oa=3733;break c}if(!(a[(c[y>>2]|0)+16>>0]|0)){oa=3733;break c}i=b[w>>1]|0;switch(i<<16>>16){case 5:{i=2;oa=3732;break c}case 4:{i=0;break La}default:{oa=3731;break c}}}}else i=K;while(0);l=m;q=pa;o=qa;break}case -90:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;l=i;c[l>>2]=c[(c[(c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0)+4>>2]|0)+44>>2];c[l+4>>2]=0;l=m;q=pa;o=qa;i=K;break}case -89:{na=c[xd>>2]|0;l=c[p+8>>2]|0;i=na+(l*40|0)|0;l=na+(l*40|0)+8|0;if(!(b[l>>1]&9216))b[l>>1]=4;else lh(i)|0;q=c[(c[uf>>2]|0)+(c[p+4>>2]<<4)+4>>2]|0;l=c[p+12>>2]|0;o=c[q+4>>2]|0;if(!l)l=0;else{na=c[o+44>>2]|0;l=na>>>0>>0?l:na}c[o+4>>2]=c[q>>2];o=(c[o>>2]|0)+156|0;if((l|0)>0)c[o>>2]=l;else l=c[o>>2]|0;q=i;c[q>>2]=l;c[q+4>>2]=((l|0)<0)<<31>>31;l=m;q=pa;o=qa;i=K;break}case 63:case 62:{o=b[p+2>>1]|0;l=((o&65535)<<2)+28|0;do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=3758;else{l=p;j=m;i=zf;oa=3898;break a}else{if(!(0<0|(0==0?(e[Xc>>1]|0)>>>0>>0:0))){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=3758}while(0);if((oa|0)==3758)i=_d(Cf,l,0)|0;if(!i){l=p;j=h;i=zf;oa=3892;break a}c[i>>2]=0;oa=p+16|0;c[i+4>>2]=c[oa>>2];c[i+16>>2]=(p-m|0)/20|0;c[i+12>>2]=f;c[i+20>>2]=0;a[i+25>>0]=o;a[p+1>>0]=-16;c[oa>>2]=i;a[p>>0]=(d[p>>0]|0)+2;oa=3761;break}case 65:case 64:{oa=3761;break}default:{l=m;q=pa;o=qa;i=K}}while(0);Pa:do if((oa|0)==34){oa=0;i=c[p+4>>2]|0;if(i|0){oa=39;break c}i=c[nc>>2]|0;if(!i){oa=38;break c}c[nc>>2]=c[i+4>>2];c[La>>2]=(c[La>>2]|0)+-1;m=c[rc>>2]|0;c[sc>>2]=m;c[tc>>2]=(c[tc>>2]|0)+m;i=sg(i)|0;m=c[le>>2]|0;if((c[p+8>>2]|0)==4)i=(c[m+(i*20|0)+8>>2]|0)+-1|0;l=m;q=c[xd>>2]|0;o=qa;p=m+(i*20|0)|0;i=K}else if((oa|0)==83){oa=0;na=c[xd>>2]|0;o=c[l>>2]|0;l=na+(o*40|0)|0;o=na+(o*40|0)+8|0;if(!(b[o>>1]&9216))b[o>>1]=4;else lh(l)|0;o=l+8|0;b[o>>1]=2562;c[l+16>>2]=c[p+16>>2];c[l+12>>2]=c[p+4>>2];a[l+10>>0]=sd;l=c[p+12>>2]|0;if((l|0)>0?(na=pa+(l*40|0)|0,(c[na+4>>2]|0)==0?(c[na>>2]|0)==(e[p+2>>1]|0):0):0){b[o>>1]=2576;l=m;q=pa;o=qa}else{l=m;q=pa;o=qa}}else if((oa|0)==1049){if(((d[vf>>0]|d[vf+1>>0]<<8)&3)==1){i=516;oa=3855;break c}w=c[p+8>>2]|0;A=c[p+12>>2]|0;i=c[uf>>2]|0;C=c[i+(A<<4)+4>>2]|0;l=p+2|0;q=b[l>>1]|0;if(z<<24>>24==109){o=(q&8|4)&65535;i=a[(c[i+(A<<4)+12>>2]|0)+76>>0]|0;if((i&255)<(d[pc>>0]|0)){a[pc>>0]=i;B=o}else B=o}else B=0;if(q&16){s=pa+(w*40|0)|0;t=pa+(w*40|0)+8|0;r=b[t>>1]|0;i=r&65535;do if(!(i&4)){if(i&8|0){o=Mg(+g[s>>3])|0;q=L()|0;i=r;break}if(!(i&18)){o=0;q=0;i=r}else{o=Ng(a[pa+(w*40|0)+10>>0]|0,c[pa+(w*40|0)+12>>2]|0,c[pa+(w*40|0)+16>>2]|0)|0;q=L()|0;i=b[t>>1]|0}}else{q=s;o=c[q>>2]|0;q=c[q+4>>2]|0;i=r}while(0);w=s;c[w>>2]=o;c[w+4>>2]=q;b[t>>1]=i&15904|4;w=o}z=p+1|0;switch(a[z>>0]|0){case -9:{y=c[p+16>>2]|0;x=e[y+8>>1]|0;break}case -3:{x=c[p+16>>2]|0;y=0;break}default:{x=0;y=0}}s=c[p+4>>2]|0;i=c[xd>>2]|0;if((s|0)>0)i=i+(((c[va>>2]|0)-s|0)*40|0)|0;o=x<<3;t=o+96|0;o=o+296|0;q=c[(c[oc>>2]|0)+(s<<2)>>2]|0;if(q|0){oa=q+5|0;a[oa>>0]=a[oa>>0]&-2;tg(f,c[(c[oc>>2]|0)+(s<<2)>>2]|0);c[(c[oc>>2]|0)+(s<<2)>>2]=0}if((c[i+24>>2]|0)<(o|0)){if(Eg(i,o,0)|0){l=p;j=h;i=zf;oa=3892;break a}o=i+16|0;r=o;o=c[o>>2]|0}else{o=c[i+20>>2]|0;r=i+16|0;c[r>>2]=o;oa=i+8|0;b[oa>>1]=b[oa>>1]&13}c[(c[oc>>2]|0)+(s<<2)>>2]=o;i=A&255;q=o+1|0;ea=o;fa=ea+36|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));a[q>>0]=i;b[o+56>>1]=x;c[o+72>>2]=o+88+(x<<2);oa=(c[r>>2]|0)+t|0;i=o+40|0;c[i>>2]=oa;c[oa>>2]=0;c[oa+4>>2]=0;c[oa+8>>2]=0;c[oa+12>>2]=0;c[oa+16>>2]=0;if(!o){l=p;j=h;i=zf;oa=3892;break a}a[o+2>>0]=1;oa=o+5|0;a[oa>>0]=a[oa>>0]|4;c[o+52>>2]=w;i=Vg(C,w,B,y,c[i>>2]|0)|0;c[o+44>>2]=y;a[o+4>>0]=(a[z>>0]|0)!=-9&1;oa=1074}else if((oa|0)==1216){oa=0;x=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;w=c[p+12>>2]|0;r=pa+(w*40|0)|0;i=c[p+16>>2]|0;if((i|0)>0){c[Hd>>2]=c[x+44>>2];b[Aa>>1]=i;c[Ba>>2]=r;s=0;r=Hd;i=z;q=0}else{o=pa+(w*40|0)+8|0;l=b[o>>1]|0;do if(l&16384){q=pa+(w*40|0)+12|0;i=(c[r>>2]|0)+(c[q>>2]|0)|0;if((i|0)<1)if(!(l&16))break;else i=1;if(Eg(r,i,1)|0){oa=1268;break c}gw((c[pa+(w*40|0)+16>>2]|0)+(c[q>>2]|0)|0,0,c[r>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+(c[r>>2]|0);b[o>>1]=b[o>>1]&-16897}while(0);r=x+44|0;s=c[r>>2]|0;t=s+6|0;q=((e[t>>1]|0)*40|0)+56|0;o=c[s+12>>2]|0;Qa:do if(!o){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](q)|0;oa=1246;break}o=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0>>0)c[14985]=q;l=59064;i=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&i>>>0>0){na=c[14978]|0;ma=Tv(i|0,l|0,o|0,((o|0)<0)<<31>>31|0)|0;la=L()|0;c[14768]=((la|0)<0|(la|0)==0&ma>>>0<=na>>>0)&1}l=Wa[c[29340>>2]&127](o)|0;if(!l){oa=1268;break c}i=Wa[c[29352>>2]&127](l)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}else{if(c[o+272>>2]|0){if(a[o+81>>0]|0){oa=1268;break c}}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){l=o+300|0;i=c[l>>2]|0;if(i|0){c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1246;break Qa}l=o+296|0;i=c[l>>2]|0;if(!i){i=o+292|0;break}else{c[l>>2]=c[i>>2];oa=o+284|0;c[oa>>2]=(c[oa>>2]|0)+1;oa=1246;break Qa}}else i=o+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(o,q,0)|0;oa=1246}while(0);if((oa|0)==1246)if(!i){oa=1268;break c}else l=i;c[l+4>>2]=l+16;c[l>>2]=s;b[l+8>>1]=(e[t>>1]|0)+1;_g(c[r>>2]|0,c[pa+(w*40|0)+12>>2]|0,c[pa+(w*40|0)+16>>2]|0,l);s=l;r=l;i=a[p>>0]|0;q=l}a[r+10>>0]=0;Ra:do if(i<<24>>24==27?(fe=b[r+8>>1]|0,fe<<16>>16!=0):0){l=c[r+4>>2]|0;o=fe&65535;i=0;while(1){if(b[l+(i*40|0)+8>>1]&1){o=1;break Ra}i=i+1|0;if(i>>>0>=o>>>0){o=0;break}}}else o=0;while(0);i=Xg(c[x+40>>2]|0,r,0,0,0,rf)|0;do if(s|0){if(c[Ze>>2]|0){Xd(Cf,q);break}oa=q;if((c[_e>>2]|0)>>>0<=oa>>>0?(c[$e>>2]|0)>>>0>oa>>>0:0){c[q>>2]=c[af>>2];c[af>>2]=q;break}if(q|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{oa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}while(0);if(i|0){oa=1270;break c}i=c[rf>>2]|0;c[x+32>>2]=i;l=(i|0)==0;a[x+2>>0]=(l^1)&1;a[x+3>>0]=0;c[x+28>>2]=0;if((a[p>>0]|0)==29)if(l)oa=1269;else oa=1267;else if(!(i|o))oa=1267;else oa=1269;if((oa|0)==1267){oa=0;l=m;q=pa;o=qa;i=0;break}else if((oa|0)==1269){i=0;oa=28;break}}else if((oa|0)==1287){oa=0;la=c[i>>2]|0;ma=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;i=c[ma+40>>2]|0;c[je>>2]=0;la=pa+(la*40|0)|0;ka=c[la>>2]|0;la=c[la+4>>2]|0;i=Xg(i,0,ka,la,0,je)|0;na=ma+64|0;c[na>>2]=ka;c[na+4>>2]=la;a[ma+2>>0]=0;c[ma+28>>2]=0;a[ma+3>>0]=0;na=c[je>>2]|0;c[ma+32>>2]=na;if(!na)if(!i){l=m;q=pa;o=qa;i=0;break}else{oa=3855;break c}else if(!(c[p+8>>2]|0)){oa=1289;break c}else{oa=28;break}}else if((oa|0)==1521){oa=0;na=c[(c[oc>>2]|0)+(c[p+4>>2]<<2)>>2]|0;c[Yd>>2]=1;do if((a[na>>0]|0)==1){ma=c[na+40>>2]|0;if(!(a[ma+56>>0]|0)){i=ma+36|0;if(!(c[i>>2]|0)){c[Yd>>2]=1;a[na+2>>0]=1;break}else{c[Yd>>2]=0;i=Uh(ma+64|0,i)|0;oa=2142;break}}i=Vh(ma)|0;if(i|0){oa=2145;break c}la=ma+59|0;R=0;ka=0;while(1){if(ka>>>0>=(d[la>>0]|0)>>>0){oa=2138;break}ha=ma+64+(ka*72|0)|0;c[rf>>2]=0;ia=ma+64+(ka*72|0)+28|0;i=c[ia>>2]|0;l=((i|0)<0)<<31>>31;if((i|0)>16){ga=0;o=16;q=0;while(1){o=cw(o|0,q|0,4)|0;q=L()|0;ja=ga+1|0;if(!((q|0)<(l|0)|(q|0)==(l|0)&o>>>0>>0))break;else ga=ja}fa=Hd;c[fa>>2]=0;c[fa+4>>2]=0;if((i|0)>=17){i=c[7389]|0;if((i|0)!=0?(Wa[i&127](100)|0)!=0:0){S=0;U=0}else oa=1537;Sa:do if((oa|0)==1537){oa=0;do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](976)|0;if(!i){S=0;U=0;break Sa}}else{i=Wa[c[29356>>2]&127](976)|0;if((c[14985]|0)>>>0<976)c[14985]=976;o=59064;l=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&l>>>0>0){fa=c[14978]|0;ea=Tv(l|0,o|0,i|0,((i|0)<0)<<31>>31|0)|0;da=L()|0;c[14768]=((da|0)<0|(da|0)==0&ea>>>0<=fa>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){S=0;U=0;break Sa}l=Wa[c[29352>>2]&127](i)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0)break;c[14987]=l}while(0);S=i+16|0;gw(S|0,0,960)|0;c[i>>2]=16;c[i+4>>2]=0;c[i+12>>2]=S;c[i+8>>2]=i+912;S=i;U=i}while(0);c[rf>>2]=U;fa=(U|0)==0;i=fa?7:0;l=c[ia>>2]|0;if((l|0)>0&(fa^1)){ba=(ga|0)==0;ca=ma+64+(ka*72|0)+8|0;da=ma+64+(ka*72|0)+64|0;o=0;aa=0;do{c[Td>>2]=0;i=l-aa|0;i=$h(ha,(i|0)<16?i:16,Hd,Td)|0;do if(!i){$=o+1|0;Z=c[Td>>2]|0;i=c[7389]|0;if((i|0)!=0?(Wa[i&127](100)|0)!=0:0)oa=1566;else oa=1554;Ta:do if((oa|0)==1554){oa=0;do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](64)|0;if(!i){oa=1566;break Ta}else l=i}else{i=Wa[c[29356>>2]&127](64)|0;if((c[14985]|0)>>>0<64)c[14985]=64;q=59064;l=c[q>>2]|0;q=c[q+4>>2]|0;if((q|0)>0|(q|0)==0&l>>>0>0){fa=c[14978]|0;ea=Tv(l|0,q|0,i|0,((i|0)<0)<<31>>31|0)|0;_=L()|0;c[14768]=((_|0)<0|(_|0)==0&ea>>>0<=fa>>>0)&1}l=Wa[c[29340>>2]&127](i)|0;if(!l){oa=1566;break Ta}i=Wa[c[29352>>2]&127](l)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0<=(c[14987]|0)>>>0)break;c[14987]=i}while(0);ea=l+8|0;fa=ea+56|0;do{a[ea>>0]=0;ea=ea+1|0}while((ea|0)<(fa|0));c[l+4>>2]=Z;c[l>>2]=ha;_=c[ca>>2]|0;Z=(c[_+8>>2]|0)+9|0;_=(c[_+4>>2]|0)/2|0;_=(Z|0)>(_|0)?Z:_;c[l+16>>2]=_;Z=da;_=Sv(c[Z>>2]|0,c[Z+4>>2]|0,_|0,((_|0)<0)<<31>>31|0)|0;Z=L()|0;i=da;c[i>>2]=_;c[i+4>>2]=Z;i=0;Z=l;_=l}while(0);do if((oa|0)==1566){oa=0;if(!Z){i=7;Z=0;_=0;break}if((c[Z>>2]|0)>0){X=Z+12|0;W=0;do{l=c[X>>2]|0;Y=l+(W*56|0)|0;i=c[l+(W*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(W*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);P=c[l+(W*56|0)+48>>2]|0;do if(P|0){Q=c[P+4>>2]|0;do if(Q|0){if((c[Q>>2]|0)>0){T=Q+12|0;O=0;do{l=c[T>>2]|0;V=l+(O*56|0)|0;i=c[l+(O*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(O*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);J=c[l+(O*56|0)+48>>2]|0;do if(J|0){K=c[J+4>>2]|0;do if(K|0){if((c[K>>2]|0)>0){M=K+12|0;I=0;do{l=c[M>>2]|0;N=l+(I*56|0)|0;i=c[l+(I*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(I*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);D=c[l+(I*56|0)+48>>2]|0;do if(D|0){E=c[D+4>>2]|0;do if(E|0){if((c[E>>2]|0)>0){F=E+12|0;C=0;do{l=c[F>>2]|0;H=l+(C*56|0)|0;i=c[l+(C*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(C*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);y=c[l+(C*56|0)+48>>2]|0;do if(y|0){z=c[y+4>>2]|0;do if(z|0){if((c[z>>2]|0)>0){A=z+12|0;x=0;do{l=c[A>>2]|0;B=l+(x*56|0)|0;i=c[l+(x*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(x*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);s=c[l+(x*56|0)+48>>2]|0;do if(s|0){t=c[s+4>>2]|0;do if(t|0){if((c[t>>2]|0)>0){w=t+12|0;r=0;do{l=c[w>>2]|0;q=l+(r*56|0)|0;i=c[l+(r*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(r*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[l+(r*56|0)+48>>2]|0;do if(i|0){xg(c[i+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);ea=q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));r=r+1|0}while((r|0)<(c[t>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{fa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{fa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);ea=B;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));x=x+1|0}while((x|0)<(c[z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{fa=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{fa=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);ea=H;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));C=C+1|0}while((C|0)<(c[E>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{fa=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{fa=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);ea=N;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));I=I+1|0}while((I|0)<(c[K>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](K);break}else{fa=Wa[c[29352>>2]&127](K)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](K);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{fa=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}}while(0);ea=V;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));O=O+1|0}while((O|0)<(c[Q>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](Q);break}else{fa=Wa[c[29352>>2]&127](Q)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Q);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](P);break}else{fa=Wa[c[29352>>2]&127](P)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](P);break}}while(0);ea=Y;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));W=W+1|0}while((W|0)<(c[Z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](Z);i=7;Z=0;_=0;break}else{i=Wa[c[29352>>2]&127](Z)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Z);i=7;Z=0;_=0;break}}while(0);Ua:do if(ba){if(!i){i=U;oa=1830}}else{q=1;l=1;do{q=q<<4;l=l+1|0}while((l|0)!=(ja|0));if(i|0)break;i=U;w=1;Va:while(1){t=(c[i+12>>2]|0)+((((o|0)/(q|0)|0|0)%16|0)*56|0)+48|0;i=c[t>>2]|0;if(!i){i=c[7389]|0;if(i|0?Wa[i&127](100)|0:0){i=7;break Ua}do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](976)|0;if(!i){i=7;break Ua}else l=i}else{i=Wa[c[29356>>2]&127](976)|0;if((c[14985]|0)>>>0<976)c[14985]=976;r=59064;l=c[r>>2]|0;r=c[r+4>>2]|0;if((r|0)>0|(r|0)==0&l>>>0>0){fa=c[14978]|0;ea=Tv(l|0,r|0,i|0,((i|0)<0)<<31>>31|0)|0;Y=L()|0;c[14768]=((Y|0)<0|(Y|0)==0&ea>>>0<=fa>>>0)&1}l=Wa[c[29340>>2]&127](i)|0;if(!l){i=7;break Ua}i=Wa[c[29352>>2]&127](l)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0<=(c[14987]|0)>>>0)break;c[14987]=i}while(0);i=l+16|0;gw(i|0,0,960)|0;Y=l+12|0;c[l>>2]=16;c[l+4>>2]=0;c[Y>>2]=i;c[l+8>>2]=l+912;i=c[7389]|0;if(i|0?Wa[i&127](100)|0:0){oa=1702;break}do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](64)|0;if(!i){oa=1714;break Va}}else{i=Wa[c[29356>>2]&127](64)|0;if((c[14985]|0)>>>0<64)c[14985]=64;s=59064;r=c[s>>2]|0;s=c[s+4>>2]|0;if((s|0)>0|(s|0)==0&r>>>0>0){fa=c[14978]|0;ea=Tv(r|0,s|0,i|0,((i|0)<0)<<31>>31|0)|0;X=L()|0;c[14768]=((X|0)<0|(X|0)==0&ea>>>0<=fa>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){oa=1714;break Va}r=Wa[c[29352>>2]&127](i)|0;r=(c[14978]|0)+r|0;c[14978]=r;if(r>>>0>(c[14982]|0)>>>0)c[14982]=r;r=(c[14981]|0)+1|0;c[14981]=r;if(r>>>0<=(c[14987]|0)>>>0)break;c[14987]=r}while(0);ea=i+8|0;fa=ea+56|0;do{a[ea>>0]=0;ea=ea+1|0}while((ea|0)<(fa|0));c[t>>2]=i;c[i+4>>2]=l;c[i>>2]=ha;Y=c[ca>>2]|0;ea=(c[Y+8>>2]|0)+9|0;Y=(c[Y+4>>2]|0)/2|0;Y=(ea|0)>(Y|0)?ea:Y;c[i+16>>2]=Y;ea=da;Y=Sv(c[ea>>2]|0,c[ea+4>>2]|0,Y|0,((Y|0)<0)<<31>>31|0)|0;ea=L()|0;fa=da;c[fa>>2]=Y;c[fa+4>>2]=ea}i=c[i+4>>2]|0;if(w>>>0>>0){q=(q|0)/16|0;w=w+1|0}else{oa=1830;break Ua}}if((oa|0)==1702){oa=0;c[t>>2]=0}else if((oa|0)==1714){oa=0;c[t>>2]=0}if((c[l>>2]|0)>0){W=0;do{o=c[Y>>2]|0;X=o+(W*56|0)|0;i=c[o+(W*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(W*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);P=c[o+(W*56|0)+48>>2]|0;do if(P|0){Q=c[P+4>>2]|0;do if(Q|0){if((c[Q>>2]|0)>0){T=Q+12|0;O=0;do{o=c[T>>2]|0;V=o+(O*56|0)|0;i=c[o+(O*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(O*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);J=c[o+(O*56|0)+48>>2]|0;do if(J|0){K=c[J+4>>2]|0;do if(K|0){if((c[K>>2]|0)>0){M=K+12|0;I=0;do{o=c[M>>2]|0;N=o+(I*56|0)|0;i=c[o+(I*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(I*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);D=c[o+(I*56|0)+48>>2]|0;do if(D|0){E=c[D+4>>2]|0;do if(E|0){if((c[E>>2]|0)>0){F=E+12|0;C=0;do{o=c[F>>2]|0;H=o+(C*56|0)|0;i=c[o+(C*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(C*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);y=c[o+(C*56|0)+48>>2]|0;do if(y|0){z=c[y+4>>2]|0;do if(z|0){if((c[z>>2]|0)>0){A=z+12|0;x=0;do{o=c[A>>2]|0;B=o+(x*56|0)|0;i=c[o+(x*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(x*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);s=c[o+(x*56|0)+48>>2]|0;do if(s|0){t=c[s+4>>2]|0;do if(t|0){if((c[t>>2]|0)>0){w=t+12|0;r=0;do{o=c[w>>2]|0;q=o+(r*56|0)|0;i=c[o+(r*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(r*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[o+(r*56|0)+48>>2]|0;do if(i|0){xg(c[i+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{fa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);ea=q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));r=r+1|0}while((r|0)<(c[t>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{fa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{fa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);ea=B;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));x=x+1|0}while((x|0)<(c[z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{fa=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{fa=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);ea=H;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));C=C+1|0}while((C|0)<(c[E>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{fa=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{fa=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);ea=N;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));I=I+1|0}while((I|0)<(c[K>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](K);break}else{fa=Wa[c[29352>>2]&127](K)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](K);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{fa=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}}while(0);ea=V;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));O=O+1|0}while((O|0)<(c[Q>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](Q);break}else{fa=Wa[c[29352>>2]&127](Q)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Q);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](P);break}else{fa=Wa[c[29352>>2]&127](P)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](P);break}}while(0);ea=X;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));W=W+1|0}while((W|0)<(c[l>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);i=7;break}else{i=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);i=7;break}}while(0);if((oa|0)==1830){oa=0;c[(c[i+12>>2]|0)+(((o|0)%16|0)*56|0)+48>>2]=_;o=$;i=0;break}if(!Z){o=$;break}X=c[Z+4>>2]|0;do if(X|0){if((c[X>>2]|0)>0){Y=X+12|0;W=0;do{o=c[Y>>2]|0;Z=o+(W*56|0)|0;l=c[o+(W*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(W*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);P=c[o+(W*56|0)+48>>2]|0;do if(P|0){Q=c[P+4>>2]|0;do if(Q|0){if((c[Q>>2]|0)>0){T=Q+12|0;O=0;do{o=c[T>>2]|0;V=o+(O*56|0)|0;l=c[o+(O*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(O*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);J=c[o+(O*56|0)+48>>2]|0;do if(J|0){K=c[J+4>>2]|0;do if(K|0){if((c[K>>2]|0)>0){M=K+12|0;I=0;do{o=c[M>>2]|0;N=o+(I*56|0)|0;l=c[o+(I*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(I*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);D=c[o+(I*56|0)+48>>2]|0;do if(D|0){E=c[D+4>>2]|0;do if(E|0){if((c[E>>2]|0)>0){F=E+12|0;C=0;do{o=c[F>>2]|0;H=o+(C*56|0)|0;l=c[o+(C*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(C*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);y=c[o+(C*56|0)+48>>2]|0;do if(y|0){z=c[y+4>>2]|0;do if(z|0){if((c[z>>2]|0)>0){A=z+12|0;x=0;do{o=c[A>>2]|0;B=o+(x*56|0)|0;l=c[o+(x*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(x*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);s=c[o+(x*56|0)+48>>2]|0;do if(s|0){t=c[s+4>>2]|0;do if(t|0){if((c[t>>2]|0)>0){w=t+12|0;r=0;do{o=c[w>>2]|0;q=o+(r*56|0)|0;l=c[o+(r*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(r*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);zg(c[o+(r*56|0)+48>>2]|0);ea=q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));r=r+1|0}while((r|0)<(c[t>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{fa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{fa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);ea=B;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));x=x+1|0}while((x|0)<(c[z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{fa=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{fa=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);ea=H;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));C=C+1|0}while((C|0)<(c[E>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{fa=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{fa=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);ea=N;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));I=I+1|0}while((I|0)<(c[K>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](K);break}else{fa=Wa[c[29352>>2]&127](K)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](K);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{fa=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}}while(0);ea=V;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));O=O+1|0}while((O|0)<(c[Q>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](Q);break}else{fa=Wa[c[29352>>2]&127](Q)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Q);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](P);break}else{fa=Wa[c[29352>>2]&127](P)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](P);break}}while(0);ea=Z;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));W=W+1|0}while((W|0)<(c[X>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](X);break}else{fa=Wa[c[29352>>2]&127](X)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](X);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](_);o=$;break}else{o=Wa[c[29352>>2]&127](_)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](_);o=$;break}}while(0);aa=aa+16|0;l=c[ia>>2]|0}while((i|0)==0&(l|0)>(aa|0))}}else oa=1534}else{oa=Hd;c[oa>>2]=0;c[oa+4>>2]=0;oa=1534}if((oa|0)==1534){oa=0;i=$h(ha,i,Hd,rf)|0;S=c[rf>>2]|0;U=S}T=(i|0)==0;do if(!T){if(U){if((c[U>>2]|0)>0){P=U+12|0;O=0;do{o=c[P>>2]|0;Q=o+(O*56|0)|0;l=c[o+(O*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(O*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);J=c[o+(O*56|0)+48>>2]|0;do if(J|0){K=c[J+4>>2]|0;do if(K|0){if((c[K>>2]|0)>0){M=K+12|0;I=0;do{o=c[M>>2]|0;N=o+(I*56|0)|0;l=c[o+(I*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(I*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);D=c[o+(I*56|0)+48>>2]|0;do if(D|0){E=c[D+4>>2]|0;do if(E|0){if((c[E>>2]|0)>0){F=E+12|0;C=0;do{o=c[F>>2]|0;H=o+(C*56|0)|0;l=c[o+(C*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(C*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);y=c[o+(C*56|0)+48>>2]|0;do if(y|0){z=c[y+4>>2]|0;do if(z|0){if((c[z>>2]|0)>0){A=z+12|0;x=0;do{o=c[A>>2]|0;B=o+(x*56|0)|0;l=c[o+(x*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(x*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);s=c[o+(x*56|0)+48>>2]|0;do if(s|0){t=c[s+4>>2]|0;do if(t|0){if((c[t>>2]|0)>0){w=t+12|0;r=0;do{o=c[w>>2]|0;q=o+(r*56|0)|0;l=c[o+(r*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(r*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(r*56|0)+48>>2]|0;do if(l|0){xg(c[l+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ja=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);ea=q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));r=r+1|0}while((r|0)<(c[t>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{ja=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{ja=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);ea=B;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));x=x+1|0}while((x|0)<(c[z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{ja=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{ja=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);ea=H;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));C=C+1|0}while((C|0)<(c[E>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{ja=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{ja=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);ea=N;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));I=I+1|0}while((I|0)<(c[K>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](K);break}else{ja=Wa[c[29352>>2]&127](K)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](K);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{ja=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}}while(0);ea=Q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));O=O+1|0}while((O|0)<(c[U>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](S);break}else{ja=Wa[c[29352>>2]&127](S)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](S);break}}}else R=U;while(0);if(T)ka=ka+1|0;else{oa=2043;break}}do if((oa|0)==2043)if(R){if((c[R>>2]|0)>0){P=R+12|0;O=0;do{o=c[P>>2]|0;Q=o+(O*56|0)|0;l=c[o+(O*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(O*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);J=c[o+(O*56|0)+48>>2]|0;do if(J|0){K=c[J+4>>2]|0;do if(K|0){if((c[K>>2]|0)>0){M=K+12|0;I=0;do{o=c[M>>2]|0;N=o+(I*56|0)|0;l=c[o+(I*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(I*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);D=c[o+(I*56|0)+48>>2]|0;do if(D|0){E=c[D+4>>2]|0;do if(E|0){if((c[E>>2]|0)>0){F=E+12|0;C=0;do{o=c[F>>2]|0;H=o+(C*56|0)|0;l=c[o+(C*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(C*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);y=c[o+(C*56|0)+48>>2]|0;do if(y|0){z=c[y+4>>2]|0;do if(z|0){if((c[z>>2]|0)>0){A=z+12|0;x=0;do{o=c[A>>2]|0;B=o+(x*56|0)|0;l=c[o+(x*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(x*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);s=c[o+(x*56|0)+48>>2]|0;do if(s|0){t=c[s+4>>2]|0;do if(t|0){if((c[t>>2]|0)>0){w=t+12|0;r=0;do{o=c[w>>2]|0;q=o+(r*56|0)|0;l=c[o+(r*56|0)+28>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(r*56|0)+36>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[o+(r*56|0)+48>>2]|0;do if(l|0){xg(c[l+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);ea=q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));r=r+1|0}while((r|0)<(c[t>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{oa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{oa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);ea=B;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));x=x+1|0}while((x|0)<(c[z>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{oa=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{oa=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);ea=H;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));C=C+1|0}while((C|0)<(c[E>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{oa=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{oa=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);ea=N;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));I=I+1|0}while((I|0)<(c[K>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](K);break}else{oa=Wa[c[29352>>2]&127](K)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](K);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{oa=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}}while(0);ea=Q;fa=ea+56|0;do{c[ea>>2]=0;ea=ea+4|0}while((ea|0)<(fa|0));O=O+1|0}while((O|0)<(c[R>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](R);oa=2139;break}else{oa=Wa[c[29352>>2]&127](R)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](R);oa=2139;break}}else oa=2139;else if((oa|0)==2138){oa=0;i=_h(ma+64|0,R)|0;c[ma+20>>2]=R;if(!i)i=0;else oa=2139}while(0);c[Yd>>2]=0;oa=2142}else{i=ch(c[na+40>>2]|0,Yd)|0;a[na+3>>0]=0;c[na+28>>2]=0;oa=2142}while(0);if((oa|0)==2142){oa=0;if(i|0){oa=2145;break c}ma=c[Yd>>2]|0;a[na+2>>0]=ma;if(!ma){l=m;q=pa;o=qa;i=0;break}}i=0;oa=28}else if((oa|0)==2160){c[l+28>>2]=0;switch(i|0){case 0:{a[l+2>>0]=0;i=f+160+(e[p+2>>1]<<2)|0;c[i>>2]=(c[i>>2]|0)+1;i=0;oa=20;break Pa}case 101:{a[l+2>>0]=1;l=m;o=pa;i=0;oa=21;break Pa}default:{oa=3855;break c}}}else if((oa|0)==3029){oa=0;o=c[p+12>>2]|0;i=pa+(o*40|0)|0;l=s+8|0;if((c[l>>2]|0)!=(i|0)?(c[l>>2]=i,vd=a[s+25>>0]|0,vd<<24>>24):0){l=c[p+8>>2]|0;i=vd&255;do{na=i;i=i+-1|0;c[s+28+(i<<2)>>2]=pa+((i+l|0)*40|0)}while((na|0)>1)}i=pa+(o*40|0)+12|0;c[i>>2]=(c[i>>2]|0)+1;i=c[s+4>>2]|0;if(!(c[p+4>>2]|0))cb[c[i+16>>2]&255](s,d[s+25>>0]|0,s+28|0);else cb[c[i+28>>2]&255](s,d[s+25>>0]|0,s+28|0);r=s+20|0;i=c[r>>2]|0;if(i){if((i|0)>0){i=c[s>>2]|0;do if(i){l=b[i+8>>1]|0;if((l&514)==514?(a[i+10>>0]|0)==1:0){i=c[i+16>>2]|0;break}if(!(l&1))i=Gg(i,1)|0;else i=0}else i=0;while(0);c[Ye>>2]=i;Ag(f,31408,Ye);i=c[r>>2]|0}else i=K;o=s+24|0;if(a[o>>0]|0){l=c[p+-16>>2]|0;do if(l|0){q=pa+(l*40|0)|0;l=pa+(l*40|0)+8|0;if(!(b[l>>1]&9216)){na=q;c[na>>2]=1;c[na+4>>2]=0;b[l>>1]=4;break}else{Pg(q,1,0);break}}while(0);a[o>>0]=0}o=c[s>>2]|0;l=o+8|0;if(!((b[l>>1]&9216)==0?(c[o+24>>2]|0)==0:0)){Cg(o);l=(c[s>>2]|0)+8|0}b[l>>1]=1;c[r>>2]=0;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break c}}else{l=m;q=pa;o=qa;i=K}}else if((oa|0)==3761){oa=0;q=c[p+16>>2]|0;y=c[p+12>>2]|0;x=pa+(y*40|0)|0;if((c[q>>2]|0)!=(x|0)){c[q>>2]=x;i=a[q+25>>0]|0;if(!(i<<24>>24))i=0;else{o=c[p+8>>2]|0;l=i&255;do{na=l;l=l+-1|0;c[q+28+(l<<2)>>2]=pa+((l+o|0)*40|0)}while((na|0)>1)}}else i=a[q+25>>0]|0;w=pa+(y*40|0)+8|0;b[w>>1]=b[w>>1]&15904|1;cb[c[(c[q+4>>2]|0)+16>>2]&255](q,i&255,q+28|0);t=q+20|0;i=c[t>>2]|0;if(i){if((i|0)>0){i=b[w>>1]|0;if((i&514)==514?(a[pa+(y*40|0)+10>>0]|0)==1:0)i=c[pa+(y*40|0)+16>>2]|0;else if(!(i&1))i=Gg(x,1)|0;else i=0;c[ye>>2]=i;Ag(f,31408,ye);i=c[t>>2]|0}else i=K;r=c[q+16>>2]|0;s=c[p+4>>2]|0;o=c[Hb>>2]|0;Wa:do if(o|0){if((r|0)<0)while(1){l=c[o+12>>2]|0;if(l|0)ab[l&127](c[o+8>>2]|0);c[Hb>>2]=c[o+16>>2];Xa:do if(!(c[Ze>>2]|0)){l=o;do if((c[_e>>2]|0)>>>0<=l>>>0){if((c[$e>>2]|0)>>>0<=l>>>0)break;c[o>>2]=c[af>>2];c[af>>2]=o;break Xa}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else Xd(Cf,o);while(0);o=c[Hb>>2]|0;if(!o)break Wa}l=Hb;do{Ya:do if((c[o>>2]|0)==(r|0)?(Ed=c[o+4>>2]|0,(Ed|0)>-1):0){if((Ed|0)<=31?1<>2]|0;if(q|0)ab[q&127](c[o+8>>2]|0);c[l>>2]=c[o+16>>2];if(c[Ze>>2]|0){Xd(Cf,o);break}q=o;do if((c[_e>>2]|0)>>>0<=q>>>0){if((c[$e>>2]|0)>>>0<=q>>>0)break;c[o>>2]=c[af>>2];c[af>>2]=o;break Ya}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{na=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else oa=3803;while(0);if((oa|0)==3803){oa=0;l=o+16|0}o=c[l>>2]|0}while((o|0)!=0)}while(0);c[t>>2]=0;if(!i)i=0;else{oa=3855;break c}}else i=K;l=b[w>>1]|0;if(l&18){if((l&2)!=0?(a[pa+(y*40|0)+10>>0]|0)!=sd<<24>>24:0){Ig(x,sd)|0;l=b[w>>1]|0}o=l&65535;if(o&18){l=c[pa+(y*40|0)+12>>2]|0;if(o&16384)l=(c[x>>2]|0)+l|0;if((l|0)>(c[(c[pa+(y*40|0)+32>>2]|0)+108>>2]|0)){oa=3891;break c}else{l=m;q=pa;o=qa}}else{l=m;q=pa;o=qa}}else{l=m;q=pa;o=qa}}while(0);if((oa|0)==20){l=m;p=m+(((c[p+8>>2]|0)+-1|0)*20|0)|0;o=pa;oa=21}else if((oa|0)==28){oa=0;l=m;q=pa;o=qa;p=m+(((c[p+8>>2]|0)+-1|0)*20|0)|0}else if((oa|0)==1074){oa=0;a[(c[o+40>>2]|0)+3>>0]=b[l>>1]&3;if(!i){l=m;q=pa;o=qa;i=0}else{oa=3855;break}}Za:do if((oa|0)==21){oa=0;if(c[lc>>2]|0){j=n;i=zf;break b}if(n>>>0>>0){q=o;o=qa}else while(1){m=c[Af>>2]|0;if(!m){q=o;o=qa;break Za}pa=c[fb>>2]|0;h=pa+h|0;if(Wa[m&127](c[gb>>2]|0)|0){oa=3844;break c}if(n>>>0>>0){q=o;o=qa;break}}}while(0);m=l;p=p+20|0;K=i;qa=o;pa=q}switch(oa|0){case 38:{c[Bf>>2]=0;a[Jd>>0]=c[p+8>>2];c[xf>>2]=(p-m|0)/20|0;oa=44;break}case 39:{j=p+4|0;l=(p-m|0)/20|0;c[Bf>>2]=i;a[Jd>>0]=c[p+8>>2];c[xf>>2]=l;i=b[p+2>>1]|0;if(i<<16>>16){c[ff>>2]=c[3504+((i&65535)+-1<<2)>>2];Ag(f,34155,ff);i=c[p+16>>2]|0;if(i|0){c[kf>>2]=c[mf>>2];c[kf+4>>2]=i;zf=dd(Cf,34176,kf)|0;c[mf>>2]=zf}}else{c[gf>>2]=c[p+16>>2];Ag(f,31408,gf)}oa=c[j>>2]|0;yf=c[hd>>2]|0;zf=c[mf>>2]|0;c[lf>>2]=l;c[lf+4>>2]=yf;c[lf+8>>2]=zf;Db(oa,34183,lf);oa=44;break}case 153:{vf=Oa;uf=c[vf+4>>2]|0;if((uf|0)>0|(uf|0)==0&(c[vf>>2]|0)>>>0>0){c[Bf>>2]=787;a[Jd>>0]=2;Ag(f,32436,Ae);o=k;q=h;h=1;i=zf;break a}if(c[(c[f>>2]|0)+456>>2]|0?c[bc>>2]|0:0)Bg(f,1)|0;c[ua>>2]=(c[ua>>2]|0)+2|1;t=pa+((c[p+4>>2]|0)*40|0)|0;c[Zc>>2]=t;r=p+8|0;if((c[r>>2]|0)>0){q=0;do{s=t+(q*40|0)|0;o=s+8|0;i=b[o>>1]|0;if(i&4096){j=i&65535;do if(j&18){do if(j&16384){l=s+12|0;j=(c[s>>2]|0)+(c[l>>2]|0)|0;if((j|0)<1)if(!(i&16))break;else i=1;else i=j;if(Eg(s,i,1)|0){l=p;j=h;i=zf;oa=3892;break a}gw((c[s+16>>2]|0)+(c[l>>2]|0)|0,0,c[s>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+(c[s>>2]|0);i=b[o>>1]&-16897;b[o>>1]=i}while(0);if(c[s+24>>2]|0?(c[s+16>>2]|0)==(c[s+20>>2]|0):0)break;if(Jg(s)|0){l=p;j=h;i=zf;oa=3892;break a}i=b[o>>1]|0}while(0);i=i&-4097;b[o>>1]=i}if((i&514)==2)Jg(s)|0;q=q+1|0}while((q|0)<(c[r>>2]|0))}if(a[zf>>0]|0){l=p;j=m;i=zf;oa=3898;break a}if(a[qf>>0]&4)Za[c[of>>2]&127](4,c[pf>>2]|0,f,0)|0;c[xf>>2]=((p-m|0)/20|0)+1;o=k;l=100;oa=3884;break a}case 518:{oa=3891;break}case 599:{c[Ce>>2]=32306;c[Ce+4>>2]=86318;c[Ce+8>>2]=31517;Db(11,32001,Ce);i=11;oa=601;break}case 602:{l=p;j=h;i=zf;oa=3892;break a}case 717:{c[De>>2]=32306;c[De+4>>2]=68229;c[De+8>>2]=31517;Db(11,32001,De);o=k;q=h;h=11;i=zf;break a}case 720:{c[Ee>>2]=32306;c[Ee+4>>2]=68229;c[Ee+8>>2]=31517;Db(11,32001,Ee);o=k;q=h;h=11;i=zf;break a}case 730:{Ag(f,34243,Fe);o=k;q=h;h=5;i=zf;break a}case 774:{c[Ge>>2]=A;Ag(f,34294,Ge);o=k;q=h;h=1;i=zf;break a}case 776:{Ag(f,34316,He);o=k;q=h;h=5;i=zf;break a}case 780:{c[Bf>>2]=787;a[Jd>>0]=2;Ag(f,32436,Ie);o=k;l=1;oa=3884;break a}case 782:{c[xf>>2]=(p-m|0)/20|0;a[gd>>0]=0;c[Bf>>2]=5;o=k;l=5;oa=3884;break a}case 922:{j=c[p+4>>2]|0;i=c[p+8>>2]|0;if((j|0)==(d[gd>>0]|0)){Ag(f,(j|0)==0?34425:(i|0)==0?34516:34473,ef);o=k;q=h;h=1;i=zf;break a}do if(!i){if(j|0?(c[bd>>2]|0)>0:0){Ag(f,34370,cf);o=k;q=h;h=5;i=zf;break a}yf=c[f>>2]|0;zf=yf+464|0;yf=yf+472|0;zf=Sv(c[yf>>2]|0,c[yf+4>>2]|0,c[zf>>2]|0,c[zf+4>>2]|0)|0;yf=L()|0;if((yf|0)>0|(yf|0)==0&zf>>>0>0){c[Bf>>2]=787;a[Jd>>0]=2;Ag(f,32436,df);o=k;l=1;oa=3884;break a}else{i=j&255;break}}else{rg(Cf,516);i=1}while(0);a[gd>>0]=i;if((pg(f)|0)==5){c[xf>>2]=(p-m|0)/20|0;a[gd>>0]=1-j;c[Bf>>2]=5;o=k;l=5;oa=3884;break a}i=c[qd>>2]|0;if(i|0)do{c[qd>>2]=c[i+24>>2];do if(!(c[Ze>>2]|0)){zf=i;if((c[_e>>2]|0)>>>0<=zf>>>0?(c[$e>>2]|0)>>>0>zf>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{zf=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-zf;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}else Xd(Cf,i);while(0);i=c[qd>>2]|0}while((i|0)!=0);c[Gd>>2]=0;c[Fd>>2]=0;a[Id>>0]=0;o=k;l=(c[Bf>>2]|0)==0?101:1;oa=3884;break a}case 950:{if((l&255|0)==5){c[xf>>2]=(p-m|0)/20|0;c[Bf>>2]=l;o=k;oa=3884;break a}else oa=1017;break}case 986:{i=c[mf>>2]|0;do if(i|0){if(c[Ze>>2]|0){Xd(Cf,i);break}yf=i;if((c[_e>>2]|0)>>>0<=yf>>>0?(c[$e>>2]|0)>>>0>yf>>>0:0){c[i>>2]=c[af>>2];c[af>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{yf=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-yf;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);do if(c[$c>>2]|0)if(!(a[zf>>0]|0))oa=1003;else i=0;else{if((e[Xc>>1]|0)>=28){i=c[af>>2]|0;if(i|0){c[af>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=1004;break}i=c[cd>>2]|0;if(!i)i=fd;else{c[cd>>2]=c[i>>2];c[ed>>2]=(c[ed>>2]|0)+1;oa=1004;break}}else i=Yc;c[i>>2]=(c[i>>2]|0)+1;oa=1003}while(0);if((oa|0)==1003){i=_d(Cf,28,0)|0;oa=1004}if((oa|0)==1004)if(!i)i=0;else{ea=i;l=34557;fa=ea+28|0;do{a[ea>>0]=a[l>>0]|0;ea=ea+1|0;l=l+1|0}while((ea|0)<(fa|0))}c[mf>>2]=i;j=c[uf>>2]|0;i=c[z>>2]|0;l=c[j+(i<<4)+12>>2]|0;_a:do if((c[l>>2]|0)!=(c[rf>>2]|0)){if((i|0)>-1){yf=l+78|0;b[yf>>1]=b[yf>>1]|8;yf=(c[j+28>>2]|0)+78|0;b[yf>>1]=b[yf>>1]|8;c[hf>>2]=c[hf>>2]&-17}if((c[jf>>2]|0)==0?(tf=c[sf>>2]|0,(tf|0)>0):0){i=0;l=tf;while(1){j=c[j+(i<<4)+12>>2]|0;if(!(b[j+78>>1]&8))j=l;else{dh(j);j=c[sf>>2]|0}i=i+1|0;if((i|0)>=(j|0))break _a;l=j;j=c[uf>>2]|0}}}while(0);l=(d[vf>>0]|d[vf+1>>0]<<8)&-4|1;a[vf>>0]=l;a[vf+1>>0]=l>>8;l=17;oa=1017;break}case 1135:{c[s+40>>2]=0;o=k;q=h;h=7;i=zf;break a}case 1213:{o=k;q=h;h=i;i=zf;break a}case 1268:{l=p;j=h;i=zf;oa=3892;break a}case 1270:{o=k;q=h;h=i;i=zf;break a}case 1289:{c[Je>>2]=32306;c[Je+4>>2]=87969;c[Je+8>>2]=31517;Db(11,32001,Je);o=k;q=h;h=11;i=zf;break a}case 1328:{o=k;q=h;h=i;i=zf;break a}case 1345:{o=k;q=h;h=i;i=zf;break a}case 1382:{c[r>>2]=0;o=k;q=h;h=7;i=zf;break a}case 1481:{o=k;q=h;h=i;i=zf;break a}case 1492:{o=k;q=h;h=r;i=zf;break a}case 1519:{o=k;q=h;h=i;i=zf;break a}case 2145:{o=k;q=h;h=i;i=zf;break a}case 2221:{o=k;q=h;h=7;i=zf;break a}case 2226:{o=k;q=h;h=i;i=zf;break a}case 2253:{if(!((b[jb>>1]&9216)==0&(c[lb>>2]|0)==0))Cg(Hd);c[Ke>>2]=32306;c[Ke+4>>2]=81024;c[Ke+8>>2]=31517;Db(11,32001,Ke);i=11;oa=2256;break}case 2267:{c[Le>>2]=32306;c[Le+4>>2]=81057;c[Le+8>>2]=31517;Db(11,32001,Le);i=11;oa=2274;break}case 2280:{a[Jd>>0]=2;o=k;q=h;h=6;i=zf;break a}case 2282:{c[Me>>2]=32306;c[Me+4>>2]=72453;c[Me+8>>2]=31517;Db(11,32001,Me);i=0;j=11;oa=2353;break}case 2286:{i=0;j=l;oa=2353;break}case 2301:{if(r){i=c[r+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);i=0;oa=2353;break}else{oa=c[i+20>>2]|0;yf=oa+120|0;c[yf>>2]=(c[yf>>2]|0)+-1;oa=oa+136|0;c[i+16>>2]=c[oa>>2];c[oa>>2]=i;i=0;oa=2353;break}}else{i=0;oa=2353}break}case 2319:{i=0;j=l;oa=2353;break}case 2329:{i=0;j=l;oa=2353;break}case 2406:{o=k;q=h;h=l;i=zf;break a}case 2424:{$b(Cf);l=p;j=h;i=zf;oa=3892;break a}case 2425:{$b(Cf);o=k;q=h;h=i;i=zf;break a}case 2968:{Ag(f,34663,Xe);o=k;q=h;h=1;i=zf;break a}case 3073:{do if(o){i=b[o+8>>1]|0;if((i&514)==514?(a[o+10>>0]|0)==1:0){i=c[o+16>>2]|0;break}if(!(i&1))i=Gg(o,1)|0;else i=0}else i=0;while(0);c[bf>>2]=i;Ag(f,31408,bf);o=k;q=h;h=l;i=zf;break a}case 3094:{o=k;q=h;h=i;i=zf;break a}case 3115:{c[te>>2]=w?34752:34757;Ag(f,34700,te);o=k;q=h;h=1;i=zf;break a}case 3182:{c[ue>>2]=32306;c[ue+4>>2]=67051;c[ue+8>>2]=31517;Db(11,32001,ue);o=k;q=h;h=11;i=zf;break a}case 3215:{if(t<<24>>24==2){oa=o+22|0;b[oa>>1]=b[oa>>1]|128;oa=3236}else oa=3236;break}case 3400:{j=l;i=c[ad>>2]|0;oa=3401;break}case 3458:{o=k;q=h;h=i;i=zf;break a}case 3459:{Wa[c[x+28>>2]&127](c[rf>>2]|0)|0;l=p;j=h;i=zf;oa=3892;break a}case 3576:{oa=3891;break}case 3731:{i=i&65535;oa=3732;break}case 3733:{c[rc>>2]=(c[rc>>2]|0)+1;i=12;j=x;break}case 3844:{o=k;q=-1;m=l;h=9;i=zf;break a}case 3845:{o=k;q=h;h=i;i=zf;break a}case 3846:{o=k;q=h;h=i;i=zf;break a}case 3847:{o=k;q=h;h=i;i=zf;break a}case 3848:{o=k;q=h;h=i;i=zf;break a}case 3849:{o=k;q=h;h=i;i=zf;break a}case 3850:{o=k;q=h;h=i;i=zf;break a}case 3851:{o=k;q=h;h=i;i=zf;break a}case 3852:{o=k;q=h;h=i;i=zf;break a}case 3853:{o=k;q=h;h=i;i=zf;break a}case 3854:{o=k;q=h;h=r;i=zf;break a}case 3855:{o=k;q=h;h=i;i=zf;break a}case 3900:{Ra=Hf;return h|0}}switch(oa|0){case 44:if((pg(f)|0)==5){c[Bf>>2]=5;o=k;l=5;oa=3884;break a}else{o=k;l=(c[Bf>>2]|0)==0?101:1;oa=3884;break a}case 601:{o=k;q=h;h=i;i=zf;break a}case 1017:{o=k;q=h;h=l;i=zf;break a}case 2256:{o=k;q=h;h=i;i=zf;break a}case 2274:{o=k;q=h;h=i;i=zf;break a}case 2353:{b[B>>1]=4;o=A;c[o>>2]=i;c[o+4>>2]=((i|0)<0)<<31>>31;o=k;q=h;h=j;i=zf;break a}case 3236:{c[ve>>2]=c[p+16>>2];Ag(f,34764,ve);o=k;q=h;h=262;i=zf;break a}case 3401:{c[ad>>2]=i+-1;o=k;q=h;h=j;i=zf;break a}case 3732:{a[Jd>>0]=i;i=12;j=x;break}case 3891:{Ag(f,31223,Be);o=k;q=h;h=18;i=zf;break a}}switch(i&15){case 12:{o=k;q=h;h=j;i=zf;break a}case 2:{l=p;j=h;i=zf;oa=3892;break a}default:h=0}Ra=Hf;return h|0}else{p=q;j=0;k=0;l=q;i=Cf+81|0}while(0);zf=(a[i>>0]|0)==0?9:7;c[Bf>>2]=zf;c[nf>>2]=c[22960+(zf<<2)>>2];Ag(f,31408,nf);n=j;o=k;q=h;m=l;h=zf}while(0);if((oa|0)==3892)if((a[i>>0]|0)==0?(a[Cf+82>>0]|0)==0:0){a[i>>0]=1;if((c[Cf+180>>2]|0)>0)c[Cf+264>>2]=1;h=Cf+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[Cf+236>>2]|0;if(h){c[h+12>>2]=7;h=j;j=m;oa=3898}else{h=j;j=m;oa=3898}}else{h=j;j=m;oa=3898}if((oa|0)==3898){Ag(f,34831,yf);o=k;q=h;m=j;p=l;h=7}$a:while(1){if((oa|0)==3884){if(n>>>0>>0)break;j=Cf+328|0;k=Cf+324|0;while(1){i=c[Af>>2]|0;if(!i)break $a;zf=c[j>>2]|0;h=zf+h|0;if(Wa[i&127](c[k>>2]|0)|0)break;if(n>>>0>>0)break $a}q=-1;h=9;i=Cf+81|0}k=(a[i>>0]|0)==0?h:7;j=f+124|0;if((c[j>>2]|0)==0&(k|0)!=3082){switch(k|0){case 516:{h=50738;break}case 100:{h=50760;break}case 101:{h=50782;break}default:{h=k&255;if(h>>>0<29?(520028155>>>h&1|0)!=0:0)h=c[22960+(h<<2)>>2]|0;else h=50724}}c[Ef>>2]=h;Ag(f,31408,Ef)}c[Bf>>2]=k;if((k|0)==3082){yf=c[f+188>>2]|0;zf=c[j>>2]|0;c[Gf>>2]=(p-m|0)/20|0;c[Gf+4>>2]=yf;c[Gf+8>>2]=zf;Db(3082,34799,Gf);pg(f)|0;if((a[i>>0]|0)==0?(a[Cf+82>>0]|0)==0:0){a[i>>0]=1;if((c[Cf+180>>2]|0)>0)c[Cf+264>>2]=1;h=Cf+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[Cf+236>>2]|0;if(h|0)c[h+12>>2]=7}}else{if((k&251|4|0)==14){h=c[Cf>>2]|0;i=c[h+68>>2]|0;if(!i)h=0;else h=Ya[i&127](h,0,0)|0;c[Cf+72>>2]=h}yf=c[f+188>>2]|0;zf=c[j>>2]|0;c[Ff>>2]=(p-m|0)/20|0;c[Ff+4>>2]=yf;c[Ff+8>>2]=zf;Db(k,34799,Ff);pg(f)|0}if(!(o<<24>>24)){o=0;h=q;l=1;oa=3884;continue}k=Cf+16|0;i=c[k>>2]|0;zf=(c[i+((o&255)+-1<<4)+12>>2]|0)+78|0;b[zf>>1]=b[zf>>1]|8;zf=(c[i+28>>2]|0)+78|0;b[zf>>1]=b[zf>>1]|8;zf=Cf+24|0;c[zf>>2]=c[zf>>2]&-17;if(c[Cf+56>>2]|0){h=q;l=1;oa=3884;continue}l=Cf+20|0;j=c[l>>2]|0;if((j|0)<=0){h=q;l=1;oa=3884;continue}h=0;while(1){i=c[i+(h<<4)+12>>2]|0;if(b[i+78>>1]&8){dh(i);j=c[l>>2]|0}h=h+1|0;if((h|0)>=(j|0)){h=q;l=1;oa=3884;continue $a}i=c[k>>2]|0}}Gf=f+176|0;c[Gf>>2]=(c[Gf>>2]|0)+n;Gf=l;Ra=Hf;return Gf|0} -function $i(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Sa=0,Ta=0,Ua=0,Va=0,Xa=0,Ya=0,Za=0,_a=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,fd=0,gd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0;ud=Ra;Ra=Ra+1392|0;Qc=ud+1352|0;Nc=ud+1344|0;Mc=ud+1328|0;Lc=ud+1320|0;Kc=ud+1304|0;mb=ud+1296|0;Cc=ud+1288|0;Bc=ud+1280|0;ic=ud+1272|0;Eb=ud+1264|0;na=ud+1256|0;bc=ud+1248|0;_b=ud+1232|0;ac=ud+1216|0;$b=ud+1200|0;Xb=ud+1176|0;Wb=ud+1136|0;Ub=ud+1128|0;Db=ud+1120|0;Bb=ud+1112|0;Ma=ud+1104|0;kc=ud+1096|0;Ja=ud+1088|0;Ia=ud+1080|0;Zb=ud+1056|0;Ab=ud+1048|0;xb=ud+1040|0;lb=ud+1032|0;kb=ud+1024|0;jb=ud+1016|0;fb=ud+1008|0;eb=ud+1e3|0;Vc=ud+992|0;Jc=ud+976|0;Uc=ud+960|0;Tc=ud+944|0;wc=ud+920|0;vc=ud+904|0;uc=ud+872|0;tc=ud+840|0;Ib=ud+832|0;Hb=ud+824|0;wb=ud+816|0;ib=ud+808|0;hb=ud+800|0;dc=ud+792|0;jc=ud+784|0;Pc=ud+776|0;Va=ud+768|0;Qa=ud+760|0;Yb=ud+752|0;Vb=ud+744|0;cc=ud+736|0;qc=ud+728|0;o=ud+720|0;n=ud+712|0;i=ud+704|0;od=ud+696|0;nd=ud+688|0;md=ud+680|0;ld=ud+672|0;jd=ud+664|0;id=ud+648|0;gd=ud+640|0;$c=ud+632|0;Yc=ud+624|0;Fc=ud+616|0;Ec=ud+608|0;hc=ud+600|0;bb=ud+592|0;_a=ud+584|0;Za=ud+576|0;Xc=ud+568|0;Wc=ud+544|0;mc=ud+536|0;Ic=ud+528|0;Hc=ud+512|0;Gc=ud+504|0;Oc=ud;pc=ud+496|0;Tb=ud+488|0;Sb=ud+480|0;Mb=ud+472|0;Lb=ud+464|0;Ua=ud+456|0;Ta=ud+448|0;t=ud+440|0;H=ud+432|0;ka=ud+424|0;s=ud+416|0;_=ud+408|0;M=ud+400|0;w=ud+392|0;$=ud+384|0;va=ud+376|0;ua=ud+368|0;ta=ud+360|0;sa=ud+352|0;v=ud+344|0;X=ud+336|0;K=ud+328|0;Fa=ud+320|0;ra=ud+312|0;ja=ud+304|0;u=ud+296|0;qa=ud+288|0;ia=ud+280|0;J=ud+272|0;yc=ud+264|0;Xa=ud+256|0;ha=ud+248|0;Na=ud+240|0;pa=ud+232|0;oa=ud+224|0;ma=ud+216|0;Ka=ud+208|0;Ha=ud+200|0;la=ud+192|0;nc=ud+184|0;U=ud+176|0;gb=ud+168|0;vb=ud+160|0;ub=ud+152|0;tb=ud+144|0;sb=ud+136|0;rb=ud+128|0;yb=ud+120|0;W=ud+112|0;V=ud+104|0;I=ud+96|0;F=ud+88|0;T=ud+80|0;qd=ud+48|0;_c=ud+24|0;Qb=ud+1368|0;td=c[f>>2]|0;sd=a[16752+g>>0]|0;if(sd<<24>>24==0?td>>>0>=(c[f+1208>>2]|0)>>>0:0){l=f+4|0;m=c[l>>2]|0;i=f+8|0;if(td>>>0>i>>>0?(c[f>>2]=td+-12,aj(m,b[td+2>>1]|0,td+4|0),O=c[f>>2]|0,O>>>0>i>>>0):0){k=O;do{td=c[l>>2]|0;c[f>>2]=k+-12;aj(td,b[k+2>>1]|0,k+4|0);k=c[f>>2]|0}while(k>>>0>i>>>0)}cd(m,38790,T);c[l>>2]=m;f=0;Ra=ud;return f|0}a:do switch(g|0){case 0:{a[j+199>>0]=1;break}case 1:{a[j+199>>0]=2;break}case 2:{w=c[j>>2]|0;if(!(a[j+18>>0]|0)){A=w+81|0;if((a[A>>0]|0)==0?(kd=j+36|0,(c[kd>>2]|0)==0):0){z=j+8|0;k=c[z>>2]|0;if(!k){if((c[j+116>>2]|0)==0?(b[w+76>>1]&8)==0:0)a[j+23>>0]=1;b:do if(!(c[w+272>>2]|0)){do if((e[w+276>>1]|0)>=224){k=w+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];qd=w+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break b}k=w+296|0;l=c[k>>2]|0;if(!l){k=w+292|0;break}else{c[k>>2]=c[l>>2];qd=w+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break b}}else k=w+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=29}else rd=29;while(0);if((rd|0)==29)l=_d(w,224,0)|0;if(l|0){I=l+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[l>>2]=w;k=w+4|0;m=c[k>>2]|0;if(m|0)c[m+4>>2]=l;c[l+8>>2]=m;c[l+4>>2]=0;c[k>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=j;c[z>>2]=l;Di(l,61,0,1,0)|0;rd=34}}else{l=k;rd=34}if((rd|0)==34){x=l+108|0;k=c[x>>2]|0;y=l+112|0;if((c[y>>2]|0)>(k|0)){c[x>>2]=k+1;I=c[l+104>>2]|0;a[I+(k*20|0)>>0]=69;I=I+(k*20|0)+1|0;J=I+19|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0))}else Di(l,69,0,0,0)|0;do if(!(a[A>>0]|0)){v=j+84|0;i=c[v>>2]|0;if(!i){if(!(c[j+68>>2]|0))break;k=c[x>>2]|0;if(!(a[(c[l>>2]|0)+81>>0]|0))m=c[l+104>>2]|0;else m=59308}else{k=c[x>>2]|0;if(!(a[(c[l>>2]|0)+81>>0]|0))m=c[l+104>>2]|0;else m=59308}c[m+8>>2]=k;o=w+20|0;c:do if((c[o>>2]|0)>0){p=l+152|0;q=w+16|0;r=j+80|0;s=l+104|0;t=l+156|0;u=w+165|0;k=0;while(1){m=1<>2]=c[p>>2]|m;if((k|0)!=1?a[(c[(c[(c[l>>2]|0)+16>>2]|0)+(k<<4)+4>>2]|0)+9>>0]|0:0)c[t>>2]=c[t>>2]|m;n=c[(c[q>>2]|0)+(k<<4)+12>>2]|0;i=(c[r>>2]&m|0)!=0&1;h=c[n>>2]|0;n=c[n+4>>2]|0;m=c[x>>2]|0;if((c[y>>2]|0)>(m|0)){c[x>>2]=m+1;qd=c[s>>2]|0;a[qd+(m*20|0)>>0]=2;b[qd+(m*20|0)+2>>1]=0;c[qd+(m*20|0)+4>>2]=k;c[qd+(m*20|0)+8>>2]=i;c[qd+(m*20|0)+12>>2]=h;c[qd+(m*20|0)+16>>2]=0;a[qd+(m*20|0)+1>>0]=0}else m=Di(l,2,k,i,h)|0;if(!(a[(c[l>>2]|0)+81>>0]|0)){qd=c[s>>2]|0;a[qd+(m*20|0)+1>>0]=-3;c[qd+(m*20|0)+16>>2]=n}if(a[u>>0]|0)break;m=c[x>>2]|0;if((m|0)<=0)break;b[(c[s>>2]|0)+((m+-1|0)*20|0)+2>>1]=1}while(0);k=k+1|0;if((k|0)>=(c[o>>2]|0))break c;i=c[v>>2]|0}}while(0);o=j+204|0;if((c[o>>2]|0)>0){p=j+252|0;q=l+104|0;n=0;do{k=c[(c[(c[p>>2]|0)+(n<<2)>>2]|0)+64>>2]|0;d:do if(!k)k=0;else while(1){if((c[k>>2]|0)==(w|0))break d;k=c[k+24>>2]|0;if(!k){k=0;break}}while(0);m=c[x>>2]|0;if((c[y>>2]|0)>(m|0)){c[x>>2]=m+1;I=c[q>>2]|0;a[I+(m*20|0)>>0]=-96;I=I+(m*20|0)+1|0;J=I+19|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0))}else m=Di(l,160,0,0,0)|0;do if(!(a[(c[l>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[x>>2]|0)+-1|0;i=c[q>>2]|0;h=i+(m*20|0)+1|0;if(a[h>>0]|0){Ei(l,i+(m*20|0)|0,k,-12);break}if(!k)break;c[i+(m*20|0)+16>>2]=k;a[h>>0]=-12;qd=k+12|0;c[qd>>2]=(c[qd>>2]|0)+1}while(0);n=n+1|0}while((n|0)<(c[o>>2]|0))}c[o>>2]=0;k=c[z>>2]|0;e:do if(!k){i=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[i+76>>1]&8)==0:0)a[j+23>>0]=1;f:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=91;else{k=0;break e}else{do if((e[i+276>>1]|0)>=224){m=i+300|0;k=c[m>>2]|0;if(k|0){c[m>>2]=c[k>>2];qd=i+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break f}m=i+296|0;k=c[m>>2]|0;if(!k){k=i+292|0;break}else{c[m>>2]=c[k>>2];qd=i+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break f}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=91}while(0);if((rd|0)==91)k=_d(i,224,0)|0;if(!k)k=0;else{I=k+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[k>>2]=i;m=i+4|0;i=c[m>>2]|0;if(i|0)c[i+4>>2]=k;c[k+8>>2]=i;c[k+4>>2]=0;c[m>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=j;c[z>>2]=k;Di(k,61,0,1,0)|0}}while(0);p=j+104|0;if((c[p>>2]|0)>0){q=j+108|0;r=k+108|0;s=k+112|0;t=k+104|0;o=0;do{u=c[q>>2]|0;i=c[u+(o<<4)>>2]|0;h=c[u+(o<<4)+4>>2]|0;n=d[u+(o<<4)+8>>0]|0;u=c[u+(o<<4)+12>>2]|0;m=c[r>>2]|0;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;qd=c[t>>2]|0;a[qd+(m*20|0)>>0]=-97;b[qd+(m*20|0)+2>>1]=0;c[qd+(m*20|0)+4>>2]=i;c[qd+(m*20|0)+8>>2]=h;c[qd+(m*20|0)+12>>2]=n;c[qd+(m*20|0)+16>>2]=0;a[qd+(m*20|0)+1>>0]=0}else m=Di(k,159,i,h,n)|0;do if(!(a[(c[k>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[r>>2]|0)+-1|0;i=c[t>>2]|0;h=i+(m*20|0)+1|0;if(a[h>>0]|0){Ei(k,i+(m*20|0)|0,u,-1);break}if(!u)break;c[i+(m*20|0)+16>>2]=u;a[h>>0]=-1}while(0);o=o+1|0}while((o|0)<(c[p>>2]|0))}o=c[z>>2]|0;k=c[j+112>>2]|0;g:do if(k|0){p=(c[j>>2]|0)+16|0;q=o+108|0;r=o+112|0;s=o+104|0;t=j+40|0;do{n=c[k+8>>2]|0;h=c[k+12>>2]|0;Gj(j,0,n,c[(c[(c[p>>2]|0)+(n<<4)+12>>2]|0)+72>>2]|0,108);n=h+-1|0;i=c[c[k+4>>2]>>2]|0;m=c[q>>2]|0;if((c[r>>2]|0)>(m|0)){c[q>>2]=m+1;qd=c[s>>2]|0;a[qd+(m*20|0)>>0]=110;b[qd+(m*20|0)+2>>1]=0;c[qd+(m*20|0)+4>>2]=0;c[qd+(m*20|0)+8>>2]=n;c[qd+(m*20|0)+12>>2]=0;c[qd+(m*20|0)+16>>2]=0;a[qd+(m*20|0)+1>>0]=0}else m=Di(o,110,0,n,0)|0;if(!(a[(c[o>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[q>>2]|0)+-1|0;Ei(o,(c[s>>2]|0)+(m*20|0)|0,i,0)}m=ed(o,12,17904)|0;if(!m)break g;c[m+8>>2]=h;qd=h+2|0;c[m+12>>2]=qd;c[m+52>>2]=h;c[m+64>>2]=n;c[m+72>>2]=h;b[m+62>>1]=16;c[m+88>>2]=h+1;c[m+112>>2]=h;c[m+124>>2]=h;c[m+148>>2]=qd;c[m+144>>2]=h;c[m+208>>2]=h;if(!(c[t>>2]|0))c[t>>2]=1;k=c[k>>2]|0}while((k|0)!=0)}while(0);o=c[j+68>>2]|0;if(o|0?(a[j+23>>0]=0,(c[o>>2]|0)>0):0){n=0;do{k=c[o+4+(n*20|0)>>2]|0;p=c[o+4+(n*20|0)+16>>2]|0;do if(k){if((a[k>>0]|0)!=-88){h=Jj(j,k,p)|0;rd=132;break}h=c[z>>2]|0;k=c[k+28>>2]|0;m=h+108|0;i=c[m>>2]|0;if((c[h+112>>2]|0)>(i|0)){c[m>>2]=i+1;qd=c[h+104>>2]|0;a[qd+(i*20|0)>>0]=78;b[qd+(i*20|0)+2>>1]=0;c[qd+(i*20|0)+4>>2]=k;c[qd+(i*20|0)+8>>2]=p;c[qd+(i*20|0)+12>>2]=0;c[qd+(i*20|0)+16>>2]=0;a[qd+(i*20|0)+1>>0]=0;break}else{Di(h,78,k,p,0)|0;break}}else{h=Jj(j,0,p)|0;rd=132}while(0);do if((rd|0)==132){rd=0;if((h|0)==(p|0))break;k=c[z>>2]|0;if(!k)break;m=k+108|0;i=c[m>>2]|0;if((c[k+112>>2]|0)>(i|0)){c[m>>2]=i+1;qd=c[k+104>>2]|0;a[qd+(i*20|0)>>0]=79;b[qd+(i*20|0)+2>>1]=0;c[qd+(i*20|0)+4>>2]=h;c[qd+(i*20|0)+8>>2]=p;c[qd+(i*20|0)+12>>2]=0;c[qd+(i*20|0)+16>>2]=0;a[qd+(i*20|0)+1>>0]=0;break}else{Di(k,79,h,p,0)|0;break}}while(0);n=n+1|0}while((n|0)<(c[o>>2]|0))}k=c[x>>2]|0;if((c[y>>2]|0)>(k|0)){c[x>>2]=k+1;rd=c[l+104>>2]|0;a[rd+(k*20|0)>>0]=11;b[rd+(k*20|0)+2>>1]=0;c[rd+(k*20|0)+4>>2]=0;c[rd+(k*20|0)+8>>2]=1;c[rd+(k*20|0)+12>>2]=0;c[rd+(k*20|0)+16>>2]=0;a[rd+(k*20|0)+1>>0]=0;break}else{Di(l,11,0,1,0)|0;break}}while(0);if((c[kd>>2]|0)==0?(a[A>>0]|0)==0:0){hd(l,j);c[j+12>>2]=101;break a}}c[j+12>>2]=1;break a}k=j+12|0;if(!(c[k>>2]|0))c[k>>2]=1}break}case 3:{o=c[td+-8>>2]|0;n=c[j>>2]|0;do if(((a[n+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(z=c[n+312>>2]|0,z|0):0){k=$a[z&127](c[n+316>>2]|0,22,36223,0,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,F);c[j+12>>2]=23;break a}if((k|2|0)==2)if(!k)break;else break a;else{cd(j,39231,I);c[j+12>>2]=1;break a}}while(0);h=j+8|0;k=c[h>>2]|0;if(!k){i=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[i+76>>1]&8)==0:0)a[j+23>>0]=1;h:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=167;else break a;else{do if((e[i+276>>1]|0)>=224){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break h}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break h}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=167}while(0);if((rd|0)==167)m=_d(i,224,0)|0;if(!m)break a;I=m+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[m>>2]=i;k=i+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=j;c[h>>2]=m;Di(m,61,0,1,0)|0;r=m}else r=k;if((o|0)==7){k=r+108|0;l=c[k>>2]|0;if((c[r+112>>2]|0)>(l|0)){c[k>>2]=l+1;I=c[r+104>>2]|0;a[I+(l*20|0)>>0]=1;I=I+(l*20|0)+1|0;J=I+19|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));break a}else{Di(r,1,0,0,0)|0;break a}}q=n+20|0;if((c[q>>2]|0)>0){h=(o|0)==9?2:1;m=r+108|0;k=r+112|0;n=r+104|0;o=r+152|0;p=r+156|0;i=0;do{l=c[m>>2]|0;if((c[k>>2]|0)>(l|0)){c[m>>2]=l+1;j=c[n>>2]|0;a[j+(l*20|0)>>0]=2;b[j+(l*20|0)+2>>1]=0;c[j+(l*20|0)+4>>2]=i;c[j+(l*20|0)+8>>2]=h;c[j+(l*20|0)+12>>2]=0;c[j+(l*20|0)+16>>2]=0;a[j+(l*20|0)+1>>0]=0}else Di(r,2,i,h,0)|0;l=1<>2]=c[o>>2]|l;if((i|0)!=1?a[(c[(c[(c[r>>2]|0)+16>>2]|0)+(i<<4)+4>>2]|0)+9>>0]|0:0)c[p>>2]=c[p>>2]|l;i=i+1|0}while((i|0)<(c[q>>2]|0))}else{m=r+108|0;k=r+112|0}l=c[m>>2]|0;if((c[k>>2]|0)>(l|0)){c[m>>2]=l+1;I=c[r+104>>2]|0;a[I+(l*20|0)>>0]=1;I=I+(l*20|0)+1|0;J=I+19|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));break a}else{Di(r,1,0,0,0)|0;break a}}case 4:{c[td+16>>2]=7;break}case 300:case 7:case 6:case 5:{c[td+4>>2]=e[td+2>>1];break}case 9:case 8:{k=(b[td+-10>>1]|0)==12;h=k&1;k=k?39254:39263;l=c[j>>2]|0;do if(((a[l+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(S=c[l+312>>2]|0,S|0):0){k=$a[S&127](c[l+316>>2]|0,22,k,0,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,V);c[j+12>>2]=23;break a}if((k|2|0)==2)if(!k)break;else break a;else{cd(j,39231,W);c[j+12>>2]=1;break a}}while(0);i=j+8|0;k=c[i>>2]|0;if(!k){m=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[j+23>>0]=1;i:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=213;else break a;else{do if((e[m+276>>1]|0)>=224){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];qd=m+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break i}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];qd=m+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break i}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=213}while(0);if((rd|0)==213)k=_d(m,224,0)|0;if(!k)break a;I=k+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[k>>2]=m;l=m+4|0;m=c[l>>2]|0;if(m|0)c[m+4>>2]=k;c[k+8>>2]=m;c[k+4>>2]=0;c[l>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=j;c[i>>2]=k;Di(k,61,0,1,0)|0}l=k+108|0;m=c[l>>2]|0;if((c[k+112>>2]|0)>(m|0)){c[l>>2]=m+1;j=c[k+104>>2]|0;a[j+(m*20|0)>>0]=1;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=1;c[j+(m*20|0)+8>>2]=h;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0;break a}else{Di(k,1,1,h,0)|0;break a}}case 10:{n=qj(c[j>>2]|0,td+4|0)|0;if(n|0){h=j+8|0;k=c[h>>2]|0;j:do if(!k){i=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[i+76>>1]&8)==0:0)a[j+23>>0]=1;k:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=236;else break j;else{do if((e[i+276>>1]|0)>=224){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break k}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break k}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=236}while(0);if((rd|0)==236)m=_d(i,224,0)|0;if(m|0){I=m+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[m>>2]=i;k=i+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=j;c[h>>2]=m;Di(m,61,0,1,0)|0;i=m;rd=241}}else{i=k;rd=241}while(0);l:do if((rd|0)==241){k=c[j>>2]|0;do if(((a[k+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(pb=c[k+312>>2]|0,pb|0):0){k=$a[pb&127](c[k+316>>2]|0,32,36223,n,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,yb);c[j+12>>2]=23;break l}if((k|2|0)==2)if(!k)break;else break l;else{cd(j,39231,rb);c[j+12>>2]=1;break l}}while(0);m=i+108|0;k=c[m>>2]|0;if((c[i+112>>2]|0)>(k|0)){c[m>>2]=k+1;j=(c[i+104>>2]|0)+(k*20|0)|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0}else k=Di(i,0,0,0,0)|0;l=c[i>>2]|0;if(!(a[l+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;l=c[i+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=n;a[m>>0]=-7;break a}else{Ei(i,l+(k*20|0)|0,n,-7);break a}}if(l|0){if(c[l+480>>2]|0){Xd(l,n);break a}j=n;if((c[l+304>>2]|0)>>>0<=j>>>0?(c[l+308>>2]|0)>>>0>j>>>0:0){j=l+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}while(0);k=c[j>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,n);break a}j=n;if((c[k+304>>2]|0)>>>0<=j>>>0?(c[k+308>>2]|0)>>>0>j>>>0:0){j=k+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}break}case 11:{n=qj(c[j>>2]|0,td+4|0)|0;if(n|0){h=j+8|0;k=c[h>>2]|0;m:do if(!k){i=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[i+76>>1]&8)==0:0)a[j+23>>0]=1;n:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=291;else break m;else{do if((e[i+276>>1]|0)>=224){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break n}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break n}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=291}while(0);if((rd|0)==291)m=_d(i,224,0)|0;if(m|0){I=m+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[m>>2]=i;k=i+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=j;c[h>>2]=m;Di(m,61,0,1,0)|0;i=m;rd=296}}else{i=k;rd=296}while(0);o:do if((rd|0)==296){k=c[j>>2]|0;do if(((a[k+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(qb=c[k+312>>2]|0,qb|0):0){k=$a[qb&127](c[k+316>>2]|0,32,39270,n,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,sb);c[j+12>>2]=23;break o}if((k|2|0)==2)if(!k)break;else break o;else{cd(j,39231,tb);c[j+12>>2]=1;break o}}while(0);m=i+108|0;k=c[m>>2]|0;if((c[i+112>>2]|0)>(k|0)){c[m>>2]=k+1;j=c[i+104>>2]|0;a[j+(k*20|0)>>0]=0;b[j+(k*20|0)+2>>1]=0;c[j+(k*20|0)+4>>2]=1;c[j+(k*20|0)+8>>2]=0;c[j+(k*20|0)+12>>2]=0;c[j+(k*20|0)+16>>2]=0;a[j+(k*20|0)+1>>0]=0}else k=Di(i,0,1,0,0)|0;l=c[i>>2]|0;if(!(a[l+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;l=c[i+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=n;a[m>>0]=-7;break a}else{Ei(i,l+(k*20|0)|0,n,-7);break a}}if(l|0){if(c[l+480>>2]|0){Xd(l,n);break a}j=n;if((c[l+304>>2]|0)>>>0<=j>>>0?(c[l+308>>2]|0)>>>0>j>>>0:0){j=l+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}while(0);k=c[j>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,n);break a}j=n;if((c[k+304>>2]|0)>>>0<=j>>>0?(c[k+308>>2]|0)>>>0>j>>>0:0){j=k+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}break}case 12:{n=qj(c[j>>2]|0,td+4|0)|0;if(n|0){h=j+8|0;k=c[h>>2]|0;p:do if(!k){i=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[i+76>>1]&8)==0:0)a[j+23>>0]=1;q:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=346;else break p;else{do if((e[i+276>>1]|0)>=224){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break q}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break q}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=346}while(0);if((rd|0)==346)m=_d(i,224,0)|0;if(m|0){I=m+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[m>>2]=i;k=i+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=j;c[h>>2]=m;Di(m,61,0,1,0)|0;i=m;rd=351}}else{i=k;rd=351}while(0);r:do if((rd|0)==351){k=c[j>>2]|0;do if(((a[k+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(nb=c[k+312>>2]|0,nb|0):0){k=$a[nb&127](c[k+316>>2]|0,32,39254,n,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,ub);c[j+12>>2]=23;break r}if((k|2|0)==2)if(!k)break;else break r;else{cd(j,39231,vb);c[j+12>>2]=1;break r}}while(0);m=i+108|0;k=c[m>>2]|0;if((c[i+112>>2]|0)>(k|0)){c[m>>2]=k+1;j=c[i+104>>2]|0;a[j+(k*20|0)>>0]=0;b[j+(k*20|0)+2>>1]=0;c[j+(k*20|0)+4>>2]=2;c[j+(k*20|0)+8>>2]=0;c[j+(k*20|0)+12>>2]=0;c[j+(k*20|0)+16>>2]=0;a[j+(k*20|0)+1>>0]=0}else k=Di(i,0,2,0,0)|0;l=c[i>>2]|0;if(!(a[l+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;l=c[i+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=n;a[m>>0]=-7;break a}else{Ei(i,l+(k*20|0)|0,n,-7);break a}}if(l|0){if(c[l+480>>2]|0){Xd(l,n);break a}j=n;if((c[l+304>>2]|0)>>>0<=j>>>0?(c[l+308>>2]|0)>>>0>j>>>0:0){j=l+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}while(0);k=c[j>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,n);break a}j=n;if((c[k+304>>2]|0)>>>0<=j>>>0?(c[k+308>>2]|0)>>>0>j>>>0:0){j=k+300|0;c[n>>2]=c[j>>2];c[j>>2]=n;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break a}else{j=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break a}}break}case 13:{bj(j,td+-8|0,td+4|0,c[td+-44>>2]|0,0,0,c[td+-20>>2]|0);break}case 14:{rd=j+24|0;a[rd>>0]=(a[rd>>0]|0)+1<<24>>24;j=(c[j>>2]|0)+272|0;c[j>>2]=(c[j>>2]|0)+1;break}case 226:case 93:case 76:case 67:case 57:case 42:case 21:case 18:case 15:{c[td+16>>2]=0;break}case 16:{c[td+-20>>2]=1;break}case 43:case 17:{c[td+4>>2]=1;break}case 19:{cj(j,td+-20|0,td+-8|0,c[td+4>>2]&255,0);break}case 20:{k=td+4|0;cj(j,0,0,0,c[k>>2]|0);k=c[k>>2]|0;if(k|0)pi(c[j>>2]|0,k,1);break}case 22:{i=c[td+8>>2]|0;k=c[td+4>>2]|0;do if((i|0)==5)if(!k)k=0;else{l=a[k>>0]|0;do if(!(l<<24>>24)){l=38132;rd=397}else{qd=l&255;l=208+qd|0;if((qd|32|0)==114){l=a[k+1>>0]|0;if(!(l<<24>>24)){l=38133;rd=397;break}qd=l&255;l=208+qd|0;if((qd|32|0)==111){l=a[k+2>>0]|0;if(!(l<<24>>24)){l=38134;rd=397;break}qd=l&255;l=208+qd|0;if((qd|32|0)==119){l=a[k+3>>0]|0;if(!(l<<24>>24)){l=38135;rd=397;break}qd=l&255;l=208+qd|0;if((qd|32|0)==105){l=a[k+4>>0]|0;if(!(l<<24>>24)){l=38136;rd=397;break}l=l&255;if((l|32|0)==100)break;else{m=100;l=208+l|0}}else m=105}else m=119}else m=111}else m=114;cb=d[l>>0]|0;rd=401}while(0);if((rd|0)==397){cb=0;m=a[208+(d[l>>0]|0)>>0]|0;rd=401}if((rd|0)==401?(cb|0)!=(m&255|0):0)break;c[td+-8>>2]=96;break a}while(0);c[td+-8>>2]=0;c[gb>>2]=i;c[gb+4>>2]=k;cd(j,38466,gb);break}case 23:{h=td+-8|0;q=c[j>>2]|0;n=c[j+228>>2]|0;if(n|0){t=n+42|0;if((c[q+116>>2]|0)<=(b[t>>1]|0)){c[U>>2]=c[n>>2];cd(j,38221,U);break a}i=td+-4|0;s=td+8|0;m=(c[i>>2]|0)+2+(c[s>>2]|0)|0;p=q+272|0;s:do if(c[p>>2]|0)if(!(a[q+81>>0]|0))rd=417;else break a;else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){k=q+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];r=q+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break s}k=q+296|0;l=c[k>>2]|0;if(!l){k=q+292|0;break}else{c[k>>2]=c[l>>2];r=q+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break s}}else k=q+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=417}while(0);if((rd|0)==417)r=_d(q,m,0)|0;if(r|0){t:do if((d[j+200>>0]|0)>1){m=c[j>>2]|0;u:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=443;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){pd=c[14978]|0;od=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;nd=L()|0;c[14768]=((nd|0)<0|(nd|0)==0&od>>>0<=pd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break t;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break t}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=443;break u}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=443;break u}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=443}while(0);if((rd|0)==443)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=r;nd=h;od=c[nd+4>>2]|0;pd=l;c[pd>>2]=c[nd>>2];c[pd+4>>2]=od;pd=j+272|0;c[k+12>>2]=c[pd>>2];c[pd>>2]=k}while(0);ew(r|0,c[h>>2]|0,c[i>>2]|0)|0;a[r+(c[i>>2]|0)>>0]=0;k=a[r>>0]|0;if((a[880+(k&255)>>0]|0)<0){i=k<<24>>24==91?93:k;m=0;k=1;while(1){l=a[r+k>>0]|0;if(l<<24>>24==i<<24>>24){k=k+1|0;l=r+m|0;if((a[r+k>>0]|0)!=i<<24>>24)break;a[l>>0]=i}else a[r+m>>0]=l;m=m+1|0;k=k+1|0}a[l>>0]=0}pd=b[t>>1]|0;k=pd<<16>>16;o=n+4|0;v:do if(pd<<16>>16>0){n=c[o>>2]|0;h=0;while(1){m=c[n+(h<<4)>>2]|0;if(m|0){pd=a[r>>0]|0;l=(d[208+(pd&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(pd<<24>>24==0|(l|0)!=0)){i=r;do{i=i+1|0;m=m+1|0;pd=a[i>>0]|0;l=(d[208+(pd&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(pd<<24>>24==0|(l|0)!=0))}if(!l)break}h=h+1|0;if((h|0)>=(k|0))break v}c[nc>>2]=r;cd(j,41735,nc);if(c[q+480>>2]|0){Xd(q,r);break a}j=r;if((c[q+304>>2]|0)>>>0<=j>>>0?(c[q+308>>2]|0)>>>0>j>>>0:0){j=q+300|0;c[r>>2]=c[j>>2];c[j>>2]=r;break a}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break a}else{j=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break a}}while(0);do if(!(k&7)){l=c[o>>2]|0;m=(k<<4)+128|0;w:do if(!l){if(c[p>>2]|0){if(a[q+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){k=q+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];sc=q+284|0;c[sc>>2]=(c[sc>>2]|0)+1;sc=l;rd=488;break w}k=q+296|0;l=c[k>>2]|0;if(!l){k=q+292|0;break}else{c[k>>2]=c[l>>2];sc=q+284|0;c[sc>>2]=(c[sc>>2]|0)+1;sc=l;rd=488;break w}}else k=q+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}sc=_d(q,m,0)|0;rd=488}else{rd=l;if((c[q+304>>2]|0)>>>0<=rd>>>0?(c[q+308>>2]|0)>>>0>rd>>>0:0){if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){rd=498;break}sc=Zd(q,l,m,0)|0;rd=488;break}sc=Zd(q,l,m,0)|0;rd=488}while(0);if((rd|0)==488?sc|0:0){l=sc;k=b[t>>1]|0;rd=498}if((rd|0)==498){c[o>>2]=l;q=k;p=l;break}if(c[q+480>>2]|0){Xd(q,r);break a}j=r;if((c[q+304>>2]|0)>>>0<=j>>>0?(c[q+308>>2]|0)>>>0>j>>>0:0){j=q+300|0;c[r>>2]=c[j>>2];c[j>>2]=r;break a}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break a}else{j=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break a}}else{q=k;p=c[o>>2]|0}while(0);o=p+(q<<4)|0;k=p+(q<<4)+4|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[o>>2]=r;k=c[s>>2]|0;if(!k){a[p+(q<<4)+13>>0]=65;a[p+(q<<4)+14>>0]=1}else{n=r+((Eu(r)|0)&1073741823)+1|0;ew(n|0,c[td+4>>2]|0,k|0)|0;a[n+(c[s>>2]|0)>>0]=0;k=a[n>>0]|0;if((a[880+(k&255)>>0]|0)<0){i=k<<24>>24==91?93:k;m=0;k=1;while(1){l=a[n+k>>0]|0;if(l<<24>>24==i<<24>>24){k=k+1|0;l=n+m|0;if((a[n+k>>0]|0)!=i<<24>>24)break;a[l>>0]=i}else a[n+m>>0]=l;m=m+1|0;k=k+1|0}a[l>>0]=0;k=a[n>>0]|0}x:do if(!(k<<24>>24)){k=0;m=67}else{l=67;h=0;i=n;m=0;while(1){h=h<<8|d[208+(k&255)>>0];i=i+1|0;y:do if((h|0)<1685026146){if((h|0)<1667785074){switch(h|0){case 1651273570:break;default:{rd=521;break y}}switch(l<<24>>24){case 69:case 67:break;default:{rd=520;break y}}k=a[i>>0]|0;m=k<<24>>24==40?i:m;l=65;break}if((h|0)<1668050786)switch(h|0){case 1667785074:{k=i;l=66;rd=522;break y}default:{rd=521;break y}}switch(h|0){case 1668050786:break;default:{rd=521;break y}}k=m;l=66;rd=522}else{if((h|0)>=1919246700)if((h|0)<1952807028){switch(h|0){case 1919246700:break;default:{rd=521;break y}}if(l<<24>>24==67){k=m;l=69;rd=522;break}else{rd=520;break}}else{switch(h|0){case 1952807028:break;default:{rd=521;break y}}k=m;l=66;rd=522;break}if((h|0)<1718382433){switch(h|0){case 1685026146:break;default:{rd=521;break y}}if(l<<24>>24==67){k=m;l=69;rd=522;break}}else{switch(h|0){case 1718382433:break;default:{rd=521;break y}}if(l<<24>>24==67){k=m;l=69;rd=522;break}}k=m;rd=522}while(0);if((rd|0)==520){k=m;rd=522}else if((rd|0)==521){rd=0;if((h&16777215|0)==6909556){k=m;m=68;break x}else{k=m;rd=522}}if((rd|0)==522){rd=0;m=k;k=a[i>>0]|0}if(!(k<<24>>24)){k=m;m=l;break}}}while(0);if(o|0){c[qd>>2]=0;z:do if(m<<24>>24<67){if(!k){c[qd>>2]=16;k=5;rd=533;break}l=a[k>>0]|0;if(l<<24>>24){while(1){if(((l&255)+-48|0)>>>0<10)break;k=k+1|0;l=a[k>>0]|0;if(!(l<<24>>24)){k=1;rd=533;break z}}ii(k,qd)|0;k=c[qd>>2]|0;if((k|0)<1016){k=((k|0)/4|0)+1|0;rd=533}else k=255}else{k=1;rd=533}}else{k=1;rd=533}while(0);a[p+(q<<4)+14>>0]=k}a[p+(q<<4)+13>>0]=m;rd=p+(q<<4)+15|0;a[rd>>0]=a[rd>>0]|4}b[t>>1]=(b[t>>1]|0)+1<<16>>16;c[j+76>>2]=0}}break}case 99:case 60:case 24:{c[td+20>>2]=0;c[td+16>>2]=0;break}case 25:{c[td+-28>>2]=(c[td+4>>2]|0)+(c[td+8>>2]|0)-(c[td+-32>>2]|0);break}case 26:{c[td+-52>>2]=(c[td+4>>2]|0)+(c[td+8>>2]|0)-(c[td+-56>>2]|0);break}case 27:{c[td+-4>>2]=(c[td+4>>2]|0)+(c[td+8>>2]|0)-(c[td+-8>>2]|0);break}case 28:{c[td+16>>2]=h;break}case 62:case 29:{qd=td+4|0;rd=c[qd+4>>2]|0;j=j+72|0;c[j>>2]=c[qd>>2];c[j+4>>2]=rd;break}case 30:{dj(j,c[td+-8>>2]|0,c[td+-20>>2]|0,c[td+4>>2]|0);break}case 31:{dj(j,c[td+-8>>2]|0,(c[td+-20>>2]|0)+1|0,c[td+4>>2]|0);break}case 32:{dj(j,c[td+-8>>2]|0,c[td+-20>>2]|0,c[td+4>>2]|0);break}case 33:{rd=ej(j,165,c[td+-8>>2]|0,0)|0;dj(j,rd,c[td+-20>>2]|0,c[td+4>>2]|0);break}case 34:{o=td+4|0;p=td+8|0;q=fj(j,110,c[o>>2]|0,c[p>>2]|0)|0;do if(q|0?(c[q+4>>2]&67108864|0)==0:0){l=c[q+8>>2]|0;n=a[l>>0]|0;h=d[208+(n&255)>>0]|0;k=h+-116|0;n=n<<24>>24==0;if(!(n|(k|0)!=0)){m=41806;i=l;do{i=i+1|0;m=m+1|0;rd=a[i>>0]|0;k=(d[208+(rd&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(rd<<24>>24==0|(k|0)!=0))}if(k|0){k=h+-102|0;if(!(n|(k|0)!=0)){m=41811;do{l=l+1|0;m=m+1|0;rd=a[l>>0]|0;k=(d[208+(rd&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(rd<<24>>24==0|(k|0)!=0))}if(k|0)break}a[q>>0]=-97}while(0);rd=c[o>>2]|0;dj(j,q,rd,rd+(c[p>>2]|0)|0);break}case 35:{i=c[td+4>>2]|0;m=c[j+228>>2]|0;if(((m|0?(aa=m+42|0,l=b[aa>>1]|0,l<<16>>16>=1):0)?(rd=c[m+4>>2]|0,j=(l<<16>>16)+-1|0,a[rd+(j<<4)+12>>0]=i,qd=m+36|0,c[qd>>2]=c[qd>>2]|512,a[rd+(j<<4)+15>>0]&8):0)?(k=c[m+8>>2]|0,k|0):0)while(1){if(((l<<16>>16)+-1|0)==(b[c[k+4>>2]>>1]|0)){j=k+55|0;rd=d[j>>0]|d[j+1>>0]<<8|8;a[j>>0]=rd;a[j+1>>0]=rd>>8}k=c[k+20>>2]|0;if(!k)break a;l=b[aa>>1]|0}break}case 36:{gj(j,0,c[td+-8>>2]|0,c[td+4>>2]|0,c[td+-20>>2]|0);break}case 37:{hj(j,0,0,0,0,c[td+4>>2]|0,0,0,0,0,1);break}case 38:{k=c[td+-8>>2]|0;l=c[j+228>>2]|0;m=c[j>>2]|0;if((l|0?(Ob=j+200|0,(a[Ob>>0]|0)!=1):0)?(b[(c[(c[(c[m+16>>2]|0)+(d[m+164>>0]<<4)+4>>2]|0)+4>>2]|0)+22>>1]&1)==0:0){o=l+24|0;n=nj(m,c[o>>2]|0,k)|0;c[o>>2]=n;o=c[j+76>>2]|0;if(!o)break a;s=j+72|0;if(!n)break a;p=(c[n>>2]|0)+-1|0;m=c[j>>2]|0;q=c[s>>2]|0;A:do if(q){i=Sv(o|0,0,1,0)|0;h=L()|0;B:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=586;else{rd=588;break A}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break B}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break B}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=586}while(0);if((rd|0)==586)r=_d(m,i,h)|0;if(r){ew(r|0,q|0,o|0)|0;a[r+o>>0]=0;k=n+4+(p*20|0)+4|0;c[k>>2]=r;l=a[r>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[r+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=r+i|0;if((a[r+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[r+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=588}else rd=588;while(0);if((rd|0)==588){k=n+4+(p*20|0)+4|0;c[k>>2]=0}if((d[Ob>>0]|0)<=1)break a;i=c[k>>2]|0;m=c[j>>2]|0;C:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=621;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break a;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break a}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=621;break C}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=621;break C}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=621}while(0);if((rd|0)==621)if(!k)break a;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=s;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k;break a}if(k|0)ni(m,k);break}case 39:{ij(j,0,td+-20|0,c[td+-8>>2]|0,c[td+4>>2]|0);break}case 40:{l=c[td+4>>2]|0;k=c[j+228>>2]|0;if(k|0?(x=c[k+16>>2]|0,x|0):0)a[x+24>>0]=l;break}case 41:{m=c[j+228>>2]|0;if(m|0?(wa=(b[m+42>>1]|0)+-1|0,ba=c[j>>2]|0,ca=qj(ba,td+4|0)|0,ca|0):0){l=c[j>>2]|0;k=a[l+78>>0]|0;qd=a[l+165>>0]|0;l=Zi(l,k,ca,qd&255)|0;do if(!(qd<<24>>24)){if(!l){N=_i(j,k,0,ca)|0;rd=636;break}if(!(c[l+12>>2]|0)){N=_i(j,k,l,ca)|0;rd=636}}else{N=l;rd=636}while(0);if((rd|0)==636?(N|0)==0:0){if(ba|0){if(c[ba+480>>2]|0){Xd(ba,ca);break a}j=ca;if((c[ba+304>>2]|0)>>>0<=j>>>0?(c[ba+308>>2]|0)>>>0>j>>>0:0){j=ba+300|0;c[ca>>2]=c[j>>2];c[j>>2]=ca;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](ca);break a}else{j=Wa[c[29352>>2]&127](ca)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ca);break a}}l=m+4|0;k=c[(c[l>>2]|0)+(wa<<4)+8>>2]|0;do if(k|0){if(ba|0){if(c[ba+480>>2]|0){Xd(ba,k);break}j=k;if((c[ba+304>>2]|0)>>>0<=j>>>0?(c[ba+308>>2]|0)>>>0>j>>>0:0){j=ba+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[(c[l>>2]|0)+(wa<<4)+8>>2]=ca;k=c[m+8>>2]|0;if(k|0)do{if((wa|0)==(b[c[k+4>>2]>>1]|0))c[c[k+32>>2]>>2]=c[(c[l>>2]|0)+(wa<<4)+8>>2];k=c[k+20>>2]|0}while((k|0)!=0)}break}case 44:{c[td+16>>2]=0;break}case 45:{j=td+-8|0;c[j>>2]=c[j>>2]&~c[td+8>>2]|c[td+4>>2];break}case 46:{c[td+-8>>2]=0;c[td+-4>>2]=0;break}case 47:{c[td+-20>>2]=0;c[td+-16>>2]=0;break}case 48:{c[td+-20>>2]=c[td+4>>2];c[td+-16>>2]=255;break}case 49:{c[td+-20>>2]=c[td+4>>2]<<8;c[td+-16>>2]=65280;break}case 50:{c[td+-8>>2]=8;break}case 51:{c[td+-8>>2]=9;break}case 52:{c[td+4>>2]=10;break}case 53:{c[td+4>>2]=7;break}case 54:{c[td+-8>>2]=0;break}case 55:{c[td+-20>>2]=0;break}case 156:case 71:case 56:{c[td+-8>>2]=c[td+4>>2];break}case 227:case 201:case 198:case 75:case 58:{c[td+-8>>2]=1;break}case 59:{c[td+-8>>2]=0;break}case 61:{c[j+76>>2]=0;break}case 63:{gj(j,c[td+-32>>2]|0,c[td+4>>2]|0,c[td+-20>>2]|0,0);break}case 64:{hj(j,0,0,0,c[td+-20>>2]|0,c[td+4>>2]|0,0,0,0,0,1);break}case 65:{k=c[td+-20>>2]|0;l=c[j+228>>2]|0;m=c[j>>2]|0;if((l|0?(Pb=j+200|0,(a[Pb>>0]|0)!=1):0)?(b[(c[(c[(c[m+16>>2]|0)+(d[m+164>>0]<<4)+4>>2]|0)+4>>2]|0)+22>>1]&1)==0:0){o=l+24|0;n=nj(m,c[o>>2]|0,k)|0;c[o>>2]=n;o=c[j+76>>2]|0;if(!o)break a;s=j+72|0;if(!n)break a;p=(c[n>>2]|0)+-1|0;m=c[j>>2]|0;q=c[s>>2]|0;D:do if(q){i=Sv(o|0,0,1,0)|0;h=L()|0;E:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=695;else{rd=697;break D}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break E}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break E}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=695}while(0);if((rd|0)==695)r=_d(m,i,h)|0;if(r){ew(r|0,q|0,o|0)|0;a[r+o>>0]=0;k=n+4+(p*20|0)+4|0;c[k>>2]=r;l=a[r>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[r+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=r+i|0;if((a[r+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[r+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=697}else rd=697;while(0);if((rd|0)==697){k=n+4+(p*20|0)+4|0;c[k>>2]=0}if((d[Pb>>0]|0)<=1)break a;i=c[k>>2]|0;m=c[j>>2]|0;F:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=730;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break a;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break a}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=730;break F}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=730;break F}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=730}while(0);if((rd|0)==730)if(!k)break a;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=s;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k;break a}if(k|0)ni(m,k);break}case 66:{ij(j,c[td+-68>>2]|0,td+-32|0,c[td+-20>>2]|0,c[td+-8>>2]|0);l=c[td+4>>2]|0;k=c[j+228>>2]|0;if(k|0?(y=c[k+16>>2]|0,y|0):0)a[y+24>>0]=l;break}case 70:case 68:{c[td+16>>2]=11;break}case 69:{c[td+-20>>2]=c[td+4>>2];break}case 72:{c[td+4>>2]=4;break}case 157:case 73:{c[td+4>>2]=5;break}case 74:{jj(j,c[td+4>>2]|0,0,c[td+-8>>2]|0);break}case 77:{h=td+-44|0;i=td+-32|0;o=c[td+-20>>2]|0;l=c[td+4>>2]|0;k=c[td+-80>>2]|0;m=c[td+-56>>2]|0;p=c[j>>2]|0;if((b[j+196>>1]|0)<=0){bj(j,h,i,k,1,0,m);n=c[j+228>>2]|0;if((n|0)!=0?(c[j+36>>2]|0)==0:0){k=c[j>>2]|0;do if(c[td+-28>>2]|0){if(a[k+165>>0]|0){cd(j,39404,Ha);h=0;break}if((wk(k,h)|0)<0){c[Ka>>2]=h;cd(j,39421,Ka);h=i}else h=i}while(0);m=c[n+72>>2]|0;if(!m)k=-1e6;else{i=c[p+16>>2]|0;k=0;while(1)if((c[i+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}pd=c[j>>2]|0;c[Qb>>2]=j;pd=c[pd+16>>2]|0;c[Qb+12>>2]=c[pd+(k<<4)>>2];c[Qb+4>>2]=c[pd+(k<<4)+12>>2];c[Qb+16>>2]=39579;c[Qb+20>>2]=h;c[Qb+8>>2]=(k|0)==1&1;if(!(cl(Qb,l)|0)){if((d[j+200>>0]|0)>1)k=0;else{k=l;l=fk(p,l,1)|0}c[n+12>>2]=l;pd=gk(p,o,1)|0;c[n+24>>2]=pd;if(!(a[p+81>>0]|0)){m=j+188|0;l=c[m>>2]|0;m=c[m+4>>2]|0;i=_c;c[i>>2]=l;c[i+4>>2]=m;i=l;if((a[i>>0]|0)!=59){l=i+m|0;c[_c>>2]=l}m=_c+4|0;c[m>>2]=0;i=c[td+-92>>2]|0;l=l-i|0;do l=l+-1|0;while((a[880+(d[i+l>>0]|0)>>0]&1)!=0);c[_c>>2]=i+l;c[m>>2]=1;cj(j,0,_c,0,0)}}else k=l}else k=l}else{cd(j,43004,la);k=l}if(k|0)pi(p,k,1);if((d[j+200>>0]|0)>1){if(o|0){k=qd+8|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[qd>>2]=j;c[qd+4>>2]=124;k=c[o>>2]|0;if((k|0)>0){l=o+4|0;while(1){m=c[l>>2]|0;if(m|0?_j(qd,m)|0:0)break;if((k|0)>1){k=k+-1|0;l=l+20|0}else break}h=c[o>>2]|0;if((h|0)>0){m=j+272|0;l=0;do{i=c[o+4+(l*20|0)+4>>2]|0;k=c[m>>2]|0;G:do if(k|0){while(1){if((c[k>>2]|0)==(i|0))break;k=c[k+12>>2]|0;if(!k)break G}c[k>>2]=0}while(0);l=l+1|0}while((l|0)!=(h|0))}}rd=781}}else rd=781;if((rd|0)==781?o|0:0)ri(p,o);break}case 78:{jj(j,c[td+4>>2]|0,1,c[td+-8>>2]|0);break}case 79:{c[qd>>2]=c[7517];c[qd+4>>2]=c[7518];c[qd+8>>2]=c[7519];c[qd+12>>2]=c[7520];c[qd+16>>2]=c[7521];c[qd+20>>2]=c[7522];k=td+4|0;kj(j,c[k>>2]|0,qd)|0;k=c[k>>2]|0;if(k|0)pi(c[j>>2]|0,k,1);break}case 80:{q=c[td+4>>2]|0;do if(!q){o=c[j>>2]|0;p=c[td+-8>>2]|0;if(p|0){H:do if((c[p>>2]|0)>0){m=o+480|0;i=o+304|0;h=o+308|0;n=o+300|0;if(!o){l=0;while(1){k=c[p+8+(l<<4)+4>>2]|0;if(k|0)ri(0,k);k=c[p+8+(l<<4)+8>>2]|0;if(k|0)pi(0,k,1);k=c[p+8+(l<<4)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);l=l+1|0;if((l|0)>=(c[p>>2]|0))break H}}l=0;do{k=c[p+8+(l<<4)+4>>2]|0;if(k|0)ri(o,k);k=c[p+8+(l<<4)+8>>2]|0;if(k|0)pi(o,k,1);k=c[p+8+(l<<4)>>2]|0;do if(k|0){if(c[m>>2]|0){Xd(o,k);break}j=k;if((c[i>>2]|0)>>>0<=j>>>0?(c[h>>2]|0)>>>0>j>>>0:0){c[k>>2]=c[n>>2];c[n>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);l=l+1|0}while((l|0)<(c[p>>2]|0))}while(0);if(o|0){if(c[o+480>>2]|0){Xd(o,p);break}j=p;if((c[o+304>>2]|0)>>>0<=j>>>0?(c[o+308>>2]|0)>>>0>j>>>0:0){j=o+300|0;c[p>>2]=c[j>>2];c[j>>2]=p;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{j=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}}else{c[q+64>>2]=c[td+-8>>2];k=c[q+52>>2]|0;if(k|0){c[q+56>>2]=0;h=q+8|0;c[h>>2]=c[h>>2]|256;m=q;i=0;while(1){i=i+1|0;l=c[k+52>>2]|0;c[k+56>>2]=m;rd=k+8|0;c[rd>>2]=c[rd>>2]|256;if(!l)break;else{m=k;k=l}}if((c[h>>2]&1024|0)==0?(rd=c[(c[j>>2]|0)+124>>2]|0,(rd|0)>0&(i|0)>=(rd|0)):0)cd(j,44434,ma)}}while(0);c[td+-20>>2]=q;break}case 81:{q=c[td+4>>2]|0;do if(!q){o=c[j>>2]|0;p=c[td+-8>>2]|0;if(p|0){I:do if((c[p>>2]|0)>0){m=o+480|0;i=o+304|0;h=o+308|0;n=o+300|0;if(!o){l=0;while(1){k=c[p+8+(l<<4)+4>>2]|0;if(k|0)ri(0,k);k=c[p+8+(l<<4)+8>>2]|0;if(k|0)pi(0,k,1);k=c[p+8+(l<<4)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);l=l+1|0;if((l|0)>=(c[p>>2]|0))break I}}l=0;do{k=c[p+8+(l<<4)+4>>2]|0;if(k|0)ri(o,k);k=c[p+8+(l<<4)+8>>2]|0;if(k|0)pi(o,k,1);k=c[p+8+(l<<4)>>2]|0;do if(k|0){if(c[m>>2]|0){Xd(o,k);break}j=k;if((c[i>>2]|0)>>>0<=j>>>0?(c[h>>2]|0)>>>0>j>>>0:0){c[k>>2]=c[n>>2];c[n>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);l=l+1|0}while((l|0)<(c[p>>2]|0))}while(0);if(o|0){if(c[o+480>>2]|0){Xd(o,p);break}j=p;if((c[o+304>>2]|0)>>>0<=j>>>0?(c[o+308>>2]|0)>>>0>j>>>0:0){j=o+300|0;c[p>>2]=c[j>>2];c[j>>2]=p;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{j=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}}else{c[q+64>>2]=c[td+-8>>2];k=c[q+52>>2]|0;if(k|0){c[q+56>>2]=0;h=q+8|0;c[h>>2]=c[h>>2]|256;m=q;i=0;while(1){i=i+1|0;l=c[k+52>>2]|0;c[k+56>>2]=m;rd=k+8|0;c[rd>>2]=c[rd>>2]|256;if(!l)break;else{m=k;k=l}}if((c[h>>2]&1024|0)==0?(rd=c[(c[j>>2]|0)+124>>2]|0,(rd|0)>0&(i|0)>=(rd|0)):0)cd(j,44434,oa)}}while(0);c[td+-32>>2]=q;break}case 82:{h=td+4|0;n=c[h>>2]|0;if(n|0?(da=c[n+52>>2]|0,da|0):0){c[n+56>>2]=0;o=n+8|0;c[o>>2]=c[o>>2]|256;m=n;i=0;l=da;while(1){i=i+1|0;k=c[l+52>>2]|0;c[l+56>>2]=m;rd=l+8|0;c[rd>>2]=c[rd>>2]|256;if(!k)break;else{m=l;l=k}}if((c[o>>2]&1024|0)==0?(rd=c[(c[j>>2]|0)+124>>2]|0,(rd|0)>0&(i|0)>=(rd|0)):0)cd(j,44434,pa)}c[h>>2]=n;break}case 83:{k=c[td+4>>2]|0;p=td+-20|0;o=c[p>>2]|0;do if(k){l=k+52|0;m=c[l>>2]|0;if(m){c[qd+4>>2]=0;c[k+56>>2]=0;n=k+8|0;c[n>>2]=c[n>>2]|256;i=k;h=0;while(1){h=h+1|0;l=c[m+52>>2]|0;c[m+56>>2]=i;pd=m+8|0;c[pd>>2]=c[pd>>2]|256;if(!l)break;else{i=m;m=l}}if((c[n>>2]&1024|0)==0?(pd=c[(c[j>>2]|0)+124>>2]|0,(pd|0)>0&(h|0)>=(pd|0)):0)cd(j,44434,Na);l=mj(j,0,lj(j,0,0,0,qd,k,0,0)|0,0,0,0,0,0,0)|0;if(!l){rd=899;break}k=l;l=l+52|0}m=td+-8|0;a[k+4>>0]=c[m>>2];c[l>>2]=o;if(o|0){qd=o+8|0;c[qd>>2]=c[qd>>2]&-1025}qd=k+8|0;c[qd>>2]=c[qd>>2]&-1025;if((c[m>>2]|0)!=128)a[j+22>>0]=1}else rd=899;while(0);if((rd|0)==899)if(!o)k=0;else{pi(c[j>>2]|0,o,1);k=0}c[p>>2]=k;break}case 86:case 84:{c[td+4>>2]=e[td+2>>1];break}case 85:{c[td+-8>>2]=128;break}case 87:{j=mj(j,c[td+-68>>2]|0,c[td+-56>>2]|0,c[td+-44>>2]|0,c[td+-32>>2]|0,c[td+-20>>2]|0,c[td+-8>>2]|0,c[td+-80>>2]|0,c[td+4>>2]|0)|0;c[td+-92>>2]=j;break}case 88:{k=mj(j,c[td+-80>>2]|0,c[td+-68>>2]|0,c[td+-56>>2]|0,c[td+-44>>2]|0,c[td+-32>>2]|0,c[td+-8>>2]|0,c[td+-92>>2]|0,c[td+4>>2]|0)|0;c[td+-104>>2]=k;if(k|0){c[k+72>>2]=c[td+-20>>2];break a}l=c[j>>2]|0;k=c[td+-20>>2]|0;if(k|0)do{j=k;k=c[k+32>>2]|0;oi(l,j)}while((k|0)!=0);break}case 89:{j=mj(j,c[td+-8>>2]|0,0,0,0,0,0,512,0)|0;c[td+-32>>2]=j;break}case 90:{m=td+-44|0;k=c[m>>2]|0;l=mj(j,c[td+-8>>2]|0,0,0,0,0,0,1536,0)|0;if(k|0){j=k+8|0;c[j>>2]=c[j>>2]&-1025}if(l){a[l+4>>0]=-128;c[l+52>>2]=k;k=l}c[m>>2]=k;break}case 91:{c[td+4>>2]=1;break}case 92:{c[td+4>>2]=2;break}case 222:case 217:case 214:case 134:case 127:case 94:{c[td+16>>2]=0;break}case 95:{r=td+-44|0;k=nj(c[j>>2]|0,c[r>>2]|0,c[td+-20>>2]|0)|0;c[r>>2]=k;o=c[td+8>>2]|0;if(o){s=td+4|0;J:do if(k|0){p=(c[k>>2]|0)+-1|0;i=c[j>>2]|0;q=c[s>>2]|0;K:do if(q){h=Sv(o|0,0,1,0)|0;n=L()|0;L:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=932;else{rd=934;break K}else{do if(0<0|(0==0?o>>>0<(e[i+276>>1]|0)>>>0:0)){l=i+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];n=i+284|0;c[n>>2]=(c[n>>2]|0)+1;n=m;break L}l=i+296|0;m=c[l>>2]|0;if(!m){l=i+292|0;break}else{c[l>>2]=c[m>>2];n=i+284|0;c[n>>2]=(c[n>>2]|0)+1;n=m;break L}}else l=i+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;rd=932}while(0);if((rd|0)==932)n=_d(i,h,n)|0;if(n){ew(n|0,q|0,o|0)|0;a[n+o>>0]=0;k=k+4+(p*20|0)+4|0;c[k>>2]=n;l=a[n>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[n+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=n+i|0;if((a[n+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[n+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=934}else rd=934;while(0);if((rd|0)==934){k=k+4+(p*20|0)+4|0;c[k>>2]=0}if((d[j+200>>0]|0)>1){i=c[k>>2]|0;m=c[j>>2]|0;M:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=967;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break J;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break J}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=967;break M}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=967;break M}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=967}while(0);if((rd|0)==967)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;od=s;pd=c[od+4>>2]|0;qd=l;c[qd>>2]=c[od>>2];c[qd+4>>2]=pd;qd=j+272|0;c[k+12>>2]=c[qd>>2];c[qd>>2]=k}}while(0);k=c[r>>2]|0}l=c[td+-32>>2]|0;m=c[td+-8>>2]|0;o=c[j>>2]|0;if(k|0){p=k+4+(((c[k>>2]|0)+-1|0)*20|0)+8|0;k=c[p>>2]|0;do if(k|0){if(o|0){if(c[o+480>>2]|0){Xd(o,k);break}j=k;if((c[o+304>>2]|0)>>>0<=j>>>0?(c[o+308>>2]|0)>>>0>j>>>0:0){j=o+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);n=l;while(1)if(!(a[880+(d[n>>0]|0)>>0]&1))break;else n=n+1|0;k=m-n|0;N:do if((k|0)<=0)if(!n)k=0;else{l=k;rd=988}else while(1){l=k+-1|0;if(!(a[880+(d[n+l>>0]|0)>>0]&1)){l=k;rd=988;break N}if((k|0)>1)k=l;else{rd=988;break}}while(0);O:do if((rd|0)==988){i=Sv(l|0,((l|0)<0)<<31>>31|0,1,0)|0;h=L()|0;P:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))rd=998;else{k=0;break O}else{do if(!(h>>>0>0|((h|0)==0?i>>>0>(e[o+276>>1]|0)>>>0:0))){m=o+300|0;k=c[m>>2]|0;if(k|0){c[m>>2]=c[k>>2];j=o+284|0;c[j>>2]=(c[j>>2]|0)+1;break P}m=o+296|0;k=c[m>>2]|0;if(!k){k=o+292|0;break}else{c[m>>2]=c[k>>2];j=o+284|0;c[j>>2]=(c[j>>2]|0)+1;break P}}else k=o+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=998}while(0);if((rd|0)==998)k=_d(o,i,h)|0;if(!k)k=0;else{ew(k|0,n|0,l|0)|0;a[k+l>>0]=0}}while(0);c[p>>2]=k}break}case 96:{rd=c[j>>2]|0;c[qd>>2]=0;c[qd+4>>2]=0;qd=oj(rd,172,qd,0)|0;rd=td+-20|0;j=nj(c[j>>2]|0,c[rd>>2]|0,qd)|0;c[rd>>2]=j;break}case 97:{qd=ej(j,172,0,0)|0;qd=ej(j,134,oj(c[j>>2]|0,59,td+-20|0,1)|0,qd)|0;rd=td+-44|0;j=nj(c[j>>2]|0,c[rd>>2]|0,qd)|0;c[rd>>2]=j;break}case 239:case 238:case 109:case 98:{qd=td+4|0;rd=c[qd+4>>2]|0;j=td+-8|0;c[j>>2]=c[qd>>2];c[j+4>>2]=rd;break}case 100:{m=c[j>>2]|0;Q:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](80)|0;rd=1028;break}k=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){j=c[14978]|0;qd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;pd=L()|0;c[14768]=((pd|0)<0|(pd|0)==0&qd>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0){c[14987]=l;rd=1029}else rd=1029}else k=0}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){k=0;break}}else{do if((e[m+276>>1]|0)>=80){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1028;break Q}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1028;break Q}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,80,0)|0;rd=1028}while(0);if((rd|0)==1028)if(!k)k=0;else rd=1029;if((rd|0)==1029){I=k;J=I+80|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0))}c[td+16>>2]=k;break}case 101:{l=c[td+4>>2]|0;c[td+-8>>2]=l;if(l|0){k=c[l>>2]|0;if((k|0)>1)do{j=k;k=k+-1|0;a[l+8+(k*72|0)+36>>0]=a[l+8+((j+-2|0)*72|0)+36>>0]|0}while((j|0)>2);a[l+44>>0]=0}break}case 102:{k=c[td+-8>>2]|0;if(k|0?(p=c[k>>2]|0,(p|0)>0):0)a[k+8+((p+-1|0)*72|0)+36>>0]=c[td+4>>2];break}case 103:{c[td+16>>2]=0;break}case 104:{l=td+-68|0;k=lj(j,c[l>>2]|0,td+-56|0,td+-44|0,td+-32|0,0,c[td+-8>>2]|0,c[td+4>>2]|0)|0;c[l>>2]=k;l=td+-20|0;if(k|0?(P=c[td+-16>>2]|0,P|0):0){m=(c[k>>2]|0)+-1|0;if((P|0)==1?(c[l>>2]|0)==0:0){j=k+8+(m*72|0)+37|0;a[j>>0]=a[j>>0]|1;break a}j=qj(c[j>>2]|0,l)|0;c[k+8+(m*72|0)+64>>2]=j;j=k+8+(m*72|0)+37|0;a[j>>0]=a[j>>0]|2}break}case 105:{l=td+-92|0;k=lj(j,c[l>>2]|0,td+-80|0,td+-68|0,td+-20|0,0,c[td+-8>>2]|0,c[td+4>>2]|0)|0;c[l>>2]=k;l=c[td+-44>>2]|0;if(k|0){j=(c[k>>2]|0)+-1|0;c[k+8+(j*72|0)+64>>2]=l;j=k+8+(j*72|0)+37|0;a[j>>0]=a[j>>0]|4;break a}if(l|0)ri(c[j>>2]|0,l);break}case 106:{rd=td+-68|0;j=lj(j,c[rd>>2]|0,0,0,td+-20|0,c[td+-44>>2]|0,c[td+-8>>2]|0,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 107:{i=td+-68|0;l=c[i>>2]|0;if((((l|0)==0?(c[td+-16>>2]|0)==0:0)?(c[td+-8>>2]|0)==0:0)?(c[td+4>>2]|0)==0:0){c[i>>2]=c[td+-44>>2];break a}p=td+-44|0;m=c[p>>2]|0;k=c[m>>2]|0;if((k|0)==1){o=lj(j,l,0,0,td+-20|0,0,c[td+-8>>2]|0,c[td+4>>2]|0)|0;c[i>>2]=o;if(o|0){k=(c[o>>2]|0)+-1|0;l=c[p>>2]|0;m=l+16|0;c[o+8+(k*72|0)+8>>2]=c[m>>2];i=l+12|0;c[o+8+(k*72|0)+4>>2]=c[i>>2];h=l+28|0;c[o+8+(k*72|0)+20>>2]=c[h>>2];n=l+45|0;if(a[n>>0]&4){rd=l+72|0;c[o+8+(k*72|0)+64>>2]=c[rd>>2];c[rd>>2]=0;a[n>>0]=a[n>>0]&-5;rd=o+8+(k*72|0)+37|0;a[rd>>0]=a[rd>>0]|4}c[i>>2]=0;c[m>>2]=0;c[h>>2]=0}qi(c[j>>2]|0,c[p>>2]|0);break a}if(!m)k=0;else{if((k|0)>1)do{rd=k;k=k+-1|0;a[m+8+(k*72|0)+36>>0]=a[m+8+((rd+-2|0)*72|0)+36>>0]|0}while((rd|0)>2);a[m+44>>0]=0;k=c[p>>2]|0}rd=mj(j,0,k,0,0,0,0,2048,0)|0;j=lj(j,c[i>>2]|0,0,0,td+-20|0,rd,c[td+-8>>2]|0,c[td+4>>2]|0)|0;c[i>>2]=j;break}case 122:case 108:{c[td+16>>2]=0;c[td+20>>2]=0;break}case 110:{i=td+4|0;h=pj(j,0,i,0)|0;R:do if(!((h|0)==0|(d[j+200>>0]|0)<2)){n=c[h+16>>2]|0;m=c[j>>2]|0;S:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1093;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break R;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break R}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1093;break S}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1093;break S}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1093}while(0);if((rd|0)==1093)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=n;pd=i;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}while(0);c[i>>2]=h;break}case 111:{i=td+-20|0;h=td+4|0;n=pj(j,0,i,h)|0;T:do if(!((n|0)==0|(d[j+200>>0]|0)<2)){o=c[n+16>>2]|0;m=c[j>>2]|0;U:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1120;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break T;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break T}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1120;break U}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1120;break U}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1120}while(0);if((rd|0)==1120)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=o;pd=h;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}while(0);c[i>>2]=n;break}case 112:{rd=td+4|0;j=pj(j,0,rd,0)|0;c[rd>>2]=j;break}case 113:{rd=td+-20|0;j=pj(j,0,rd,td+4|0)|0;c[rd>>2]=j;break}case 114:{k=td+-44|0;rd=pj(j,0,k,td+-20|0)|0;c[k>>2]=rd;if(rd|0){j=qj(c[j>>2]|0,td+4|0)|0;c[(c[k>>2]|0)+20>>2]=j}break}case 115:{k=td+-20|0;rd=pj(j,0,k,0)|0;c[k>>2]=rd;if(rd|0){j=qj(c[j>>2]|0,td+4|0)|0;c[(c[k>>2]|0)+20>>2]=j}break}case 116:{c[td+4>>2]=1;break}case 117:{rd=td+-8|0;j=rj(j,rd,0,0)|0;c[rd>>2]=j;break}case 118:{rd=td+-20|0;j=rj(j,rd,td+-8|0,0)|0;c[rd>>2]=j;break}case 119:{rd=td+-32|0;j=rj(j,rd,td+-20|0,td+-8|0)|0;c[rd>>2]=j;break}case 231:case 210:case 144:case 137:case 120:{c[td+-8>>2]=c[td+4>>2];break}case 232:case 213:case 211:case 143:case 138:case 136:case 121:{c[td+16>>2]=0;break}case 123:{qd=td+4|0;rd=c[qd+4>>2]|0;j=td+-20|0;c[j>>2]=c[qd>>2];c[j+4>>2]=rd;break}case 124:{c[td+-8>>2]=0;c[td+-4>>2]=1;break}case 125:{c[td+-32>>2]=c[td+-8>>2];break}case 158:case 126:{c[td+16>>2]=0;break}case 135:case 128:{c[td+-20>>2]=c[td+4>>2];break}case 129:{l=td+-32|0;k=nj(c[j>>2]|0,c[l>>2]|0,c[td+-8>>2]|0)|0;c[l>>2]=k;l=c[td+4>>2]|0;if(!((k|0)==0|(l|0)<0))a[k+4+(((c[k>>2]|0)+-1|0)*20|0)+12>>0]=l;break}case 130:{l=td+-8|0;k=nj(c[j>>2]|0,0,c[l>>2]|0)|0;c[l>>2]=k;l=c[td+4>>2]|0;if(!((k|0)==0|(l|0)<0))a[k+4+(((c[k>>2]|0)+-1|0)*20|0)+12>>0]=l;break}case 131:{c[td+4>>2]=0;break}case 132:{c[td+4>>2]=1;break}case 133:{c[td+16>>2]=-1;break}case 139:{j=ej(j,141,c[td+4>>2]|0,0)|0;c[td+-8>>2]=j;break}case 140:{j=ej(j,141,c[td+-20>>2]|0,c[td+4>>2]|0)|0;c[td+-32>>2]=j;break}case 141:{j=ej(j,141,c[td+4>>2]|0,c[td+-20>>2]|0)|0;c[td+-32>>2]=j;break}case 142:{k=td+-20|0;l=c[k>>2]|0;m=td+-8|0;do if(l|0?(Y=c[td+-4>>2]|0,Y|0):0){i=(c[l>>2]|0)+-1|0;if((Y|0)==1?(c[m>>2]|0)==0:0){rd=l+8+(i*72|0)+37|0;a[rd>>0]=a[rd>>0]|1;break}rd=qj(c[j>>2]|0,m)|0;c[l+8+(i*72|0)+64>>2]=rd;rd=l+8+(i*72|0)+37|0;a[rd>>0]=a[rd>>0]|2}while(0);sj(j,c[k>>2]|0,c[td+4>>2]|0);break}case 145:{i=td+-44|0;k=c[i>>2]|0;l=td+-32|0;do if(k|0?(Z=c[td+-28>>2]|0,Z|0):0){m=(c[k>>2]|0)+-1|0;if((Z|0)==1?(c[l>>2]|0)==0:0){rd=k+8+(m*72|0)+37|0;a[rd>>0]=a[rd>>0]|1;break}rd=qj(c[j>>2]|0,l)|0;c[k+8+(m*72|0)+64>>2]=rd;rd=k+8+(m*72|0)+37|0;a[rd>>0]=a[rd>>0]|2}while(0);l=td+-8|0;k=c[l>>2]|0;if(k){if((c[k>>2]|0)>(c[(c[j>>2]|0)+116>>2]|0)){c[ha>>2]=38493;cd(j,44753,ha);k=c[l>>2]|0}}else k=0;tj(j,c[i>>2]|0,k,c[td+4>>2]|0,c[td+-56>>2]|0,0);break}case 146:{s=td+-44|0;n=nj(c[j>>2]|0,c[s>>2]|0,c[td+4>>2]|0)|0;c[s>>2]=n;s=td+-20|0;if(n|0){o=(c[n>>2]|0)+-1|0;m=c[j>>2]|0;p=c[s>>2]|0;q=c[td+-16>>2]|0;V:do if(p){i=Sv(q|0,0,1,0)|0;h=L()|0;W:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=1179;else{rd=1181;break V}else{do if(0<0|(0==0?q>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break W}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=l;break W}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=1179}while(0);if((rd|0)==1179)r=_d(m,i,h)|0;if(r){ew(r|0,p|0,q|0)|0;a[r+q>>0]=0;k=n+4+(o*20|0)+4|0;c[k>>2]=r;l=a[r>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[r+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=r+i|0;if((a[r+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[r+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=1181}else rd=1181;while(0);if((rd|0)==1181){k=n+4+(o*20|0)+4|0;c[k>>2]=0}if((d[j+200>>0]|0)>1){i=c[k>>2]|0;m=c[j>>2]|0;X:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1214;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break a;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break a}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1214;break X}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1214;break X}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1214}while(0);if((rd|0)==1214)if(!k)break a;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=s;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}}break}case 147:{rd=td+-68|0;j=uj(j,c[rd>>2]|0,c[td+-32>>2]|0,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 148:{r=nj(c[j>>2]|0,0,c[td+4>>2]|0)|0;s=td+-20|0;Y:do if(r|0){n=(c[r>>2]|0)+-1|0;m=c[j>>2]|0;o=c[s>>2]|0;p=c[td+-16>>2]|0;Z:do if(o){i=Sv(p|0,0,1,0)|0;h=L()|0;_:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=1229;else{rd=1231;break Z}else{do if(0<0|(0==0?p>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break _}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break _}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=1229}while(0);if((rd|0)==1229)q=_d(m,i,h)|0;if(q){ew(q|0,o|0,p|0)|0;a[q+p>>0]=0;k=r+4+(n*20|0)+4|0;c[k>>2]=q;l=a[q>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[q+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=q+i|0;if((a[q+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[q+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=1231}else rd=1231;while(0);if((rd|0)==1231){k=r+4+(n*20|0)+4|0;c[k>>2]=0}if((d[j+200>>0]|0)>1){i=c[k>>2]|0;m=c[j>>2]|0;$:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1264;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break Y;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break Y}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1264;break $}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1264;break $}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1264}while(0);if((rd|0)==1264)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=s;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}}while(0);c[s>>2]=r;break}case 149:{j=uj(j,0,c[td+-32>>2]|0,c[td+4>>2]|0)|0;c[td+-44>>2]=j;break}case 150:{vj(j,c[td+-32>>2]|0,c[td+-8>>2]|0,c[td+-20>>2]|0,c[td+-56>>2]|0,c[td+4>>2]|0);break}case 151:{vj(j,c[td+-32>>2]|0,0,c[td+-20>>2]|0,c[td+-56>>2]|0,0);break}case 152:{c[td+16>>2]=0;break}case 153:{i=c[j>>2]|0;h=c[td+-80>>2]|0;n=c[td+-56>>2]|0;o=c[td+-8>>2]|0;p=c[td+4>>2]|0;aa:do if(!i){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](36)|0;rd=1294;break}k=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){j=c[14978]|0;rd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;qd=L()|0;c[14768]=((qd|0)<0|(qd|0)==0&rd>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0){c[14987]=l;rd=1303}else rd=1303}else rd=1295}else{if(c[i+272>>2]|0){if(a[i+81>>0]|0){rd=1295;break}}else{do if((e[i+276>>1]|0)>=36){l=i+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1294;break aa}l=i+296|0;k=c[l>>2]|0;if(!k){k=i+292|0;break}else{c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1294;break aa}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(i,36,0)|0;rd=1294}while(0);if((rd|0)==1294)if(!k)rd=1295;else rd=1303;if((rd|0)==1295){if(h|0)ri(i,h);if(n|0)ni(i,n);if(o|0)ri(i,o);if(!p)k=0;else{ni(i,p);k=0}}else if((rd|0)==1303){c[k>>2]=h;c[k+4>>2]=n;c[k+8>>2]=o;c[k+12>>2]=p;c[k+16>>2]=0}c[td+-116>>2]=k;break}case 154:{i=c[j>>2]|0;h=c[td+-44>>2]|0;n=c[td+-20>>2]|0;ba:do if(!i){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](36)|0;rd=1328;break}k=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){j=c[14978]|0;rd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;qd=L()|0;c[14768]=((qd|0)<0|(qd|0)==0&rd>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0){c[14987]=l;rd=1333}else rd=1333}else rd=1329}else{if(c[i+272>>2]|0){if(a[i+81>>0]|0){rd=1329;break}}else{do if((e[i+276>>1]|0)>=36){l=i+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1328;break ba}l=i+296|0;k=c[l>>2]|0;if(!k){k=i+292|0;break}else{c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1328;break ba}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(i,36,0)|0;rd=1328}while(0);if((rd|0)==1328)if(!k)rd=1329;else rd=1333;if((rd|0)==1329){if(h|0)ri(i,h);if(!n)k=0;else{ni(i,n);k=0}}else if((rd|0)==1333){c[k>>2]=h;c[k+4>>2]=n;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0}c[td+-80>>2]=k;break}case 155:{m=c[j>>2]|0;ca:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](36)|0;rd=1358;break}k=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){j=c[14978]|0;qd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;pd=L()|0;c[14768]=((pd|0)<0|(pd|0)==0&qd>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0){c[14987]=l;rd=1359}else rd=1359}else k=0}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){k=0;break}}else{do if((e[m+276>>1]|0)>=36){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1358;break ca}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1358;break ca}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,36,0)|0;rd=1358}while(0);if((rd|0)==1358)if(!k)k=0;else rd=1359;if((rd|0)==1359){c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0}c[td+-32>>2]=k;break}case 159:{c[td+-20>>2]=c[td+-8>>2];break}case 160:{rd=td+-20|0;j=wj(j,c[rd>>2]|0,td+4|0)|0;c[rd>>2]=j;break}case 161:{rd=td+4|0;j=wj(j,0,rd)|0;c[rd>>2]=j;break}case 162:{c[td+-20>>2]=c[td+-8>>2];break}case 164:case 163:{rd=td+4|0;j=fj(j,59,c[rd>>2]|0,c[td+8>>2]|0)|0;c[rd>>2]=j;break}case 165:{h=td+-20|0;n=oj(c[j>>2]|0,59,h,1)|0;i=td+4|0;o=oj(c[j>>2]|0,59,i,1)|0;da:do if((d[j+200>>0]|0)>1){m=c[j>>2]|0;ea:do if(!m){if(!(c[7324]|0)){La=Wa[c[29340>>2]&127](16)|0;rd=1390;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(l|0){k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;k=l;rd=1391}else{k=l;rd=1391}}}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break}else{do if((e[m+276>>1]|0)>=16){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];La=m+284|0;c[La>>2]=(c[La>>2]|0)+1;La=l;rd=1390;break ea}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];La=m+284|0;c[La>>2]=(c[La>>2]|0)+1;La=l;rd=1390;break ea}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}La=_d(m,16,0)|0;rd=1390}while(0);if((rd|0)==1390?La|0:0){k=La;rd=1391}if((rd|0)==1391){l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=o;od=i;pd=c[od+4>>2]|0;qd=l;c[qd>>2]=c[od>>2];c[qd+4>>2]=pd;qd=j+272|0;c[k+12>>2]=c[qd>>2];c[qd>>2]=k}m=c[j>>2]|0;fa:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1415;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break da;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break da}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1415;break fa}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1415;break fa}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1415}while(0);if((rd|0)==1415)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=n;pd=h;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;rd=j+272|0;c[k+12>>2]=c[rd>>2];c[rd>>2]=k}while(0);j=ej(j,134,n,o)|0;c[h>>2]=j;break}case 166:{n=td+-44|0;o=oj(c[j>>2]|0,59,n,1)|0;p=td+-20|0;q=oj(c[j>>2]|0,59,p,1)|0;i=td+4|0;h=oj(c[j>>2]|0,59,i,1)|0;r=ej(j,134,q,h)|0;ga:do if((d[j+200>>0]|0)>1){m=c[j>>2]|0;ha:do if(!m){if(!(c[7324]|0)){Ya=Wa[c[29340>>2]&127](16)|0;rd=1442;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(l|0){k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;k=l;rd=1443}else{k=l;rd=1443}}}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break}else{do if((e[m+276>>1]|0)>=16){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];Ya=m+284|0;c[Ya>>2]=(c[Ya>>2]|0)+1;Ya=l;rd=1442;break ha}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];Ya=m+284|0;c[Ya>>2]=(c[Ya>>2]|0)+1;Ya=l;rd=1442;break ha}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}Ya=_d(m,16,0)|0;rd=1442}while(0);if((rd|0)==1442?Ya|0:0){k=Ya;rd=1443}if((rd|0)==1443){l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=h;od=i;pd=c[od+4>>2]|0;qd=l;c[qd>>2]=c[od>>2];c[qd+4>>2]=pd;qd=j+272|0;c[k+12>>2]=c[qd>>2];c[qd>>2]=k}m=c[j>>2]|0;ia:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1467;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break ga;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break ga}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1467;break ia}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1467;break ia}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1467}while(0);if((rd|0)==1467)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=q;pd=p;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;rd=j+272|0;c[k+12>>2]=c[rd>>2];c[rd>>2]=k}while(0);j=ej(j,134,o,r)|0;c[n>>2]=j;break}case 168:case 167:{rd=td+4|0;j=fj(j,e[td+2>>1]|0,c[rd>>2]|0,c[td+8>>2]|0)|0;c[rd>>2]=j;break}case 169:{rd=td+4|0;j=oj(c[j>>2]|0,147,rd,1)|0;c[rd>>2]=j;break}case 170:{m=td+4|0;k=c[m>>2]|0;if((a[k>>0]|0)==35?((d[k+1>>0]|0)+-48|0)>>>0<10:0){pd=m;l=c[pd>>2]|0;pd=c[pd+4>>2]|0;rd=qd;c[rd>>2]=l;c[rd+4>>2]=pd;if(a[j+18>>0]|0){k=ej(j,168,0,0)|0;c[m>>2]=k;if(k|0)ii(l+1|0,k+28|0)|0}else{c[J>>2]=qd;cd(j,38502,J);c[m>>2]=0}break a}u=c[td+8>>2]|0;w=fj(j,148,k,u)|0;c[m>>2]=w;v=c[j>>2]|0;if(w|0){t=c[w+8>>2]|0;k=t+1|0;l=a[k>>0]|0;ja:do if(!(l<<24>>24)){rd=j+196|0;k=(b[rd>>1]|0)+1<<16>>16;b[rd>>1]=k}else{if((a[t>>0]|0)==63){if((u|0)==2){i=(l<<24>>24)+-48|0;m=((i|0)<0)<<31>>31;k=qd;c[k>>2]=i;c[k+4>>2]=m;k=0}else{k=(Og(k,qd,u+-1|0,1)|0)!=0;i=qd;m=c[i+4>>2]|0;i=c[i>>2]|0}l=c[v+144>>2]|0;qd=((l|0)<0)<<31>>31;if(k|((m|0)<0|(m|0)==0&i>>>0<1)|((m|0)>(qd|0)|(m|0)==(qd|0)&i>>>0>l>>>0)){c[Xa>>2]=l;cd(j,45057,Xa);break a}k=i&65535;l=j+196|0;ka:do if((b[l>>1]|0)>=k<<16>>16){h=k<<16>>16;m=j+216|0;l=c[m>>2]|0;if(!l)l=0;else{n=c[l+4>>2]|0;i=2;while(1){if((c[l+(i<<2)>>2]|0)==(h|0))break;i=(c[l+(i+1<<2)>>2]|0)+i|0;if((i|0)>=(n|0))break ka}break ja}}else{b[l>>1]=k;l=j+216|0;m=l;l=c[l>>2]|0}while(0)}else{m=j+216|0;l=c[m>>2]|0;la:do if(l|0){h=c[l+4>>2]|0;k=2;while(1){i=l+(k+2<<2)|0;if((av(i,t,u)|0)==0?(a[i+u>>0]|0)==0:0)break;k=(c[l+(k+1<<2)>>2]|0)+k|0;if((k|0)>=(h|0))break la}k=c[l+(k<<2)>>2]|0;if(k&65535|0){k=k&65535;break ja}}while(0);qd=j+196|0;k=(b[qd>>1]|0)+1<<16>>16;b[qd>>1]=k}r=k<<16>>16;i=(u|0)/4|0;s=i+3|0;q=(l|0)==0;ma:do if(!q){o=l+4|0;i=c[o>>2]|0;h=i+s|0;n=c[l>>2]|0;if((h|0)>(n|0)){i=cw(n|0,((n|0)<0)<<31>>31|0,1)|0;i=Sv(i|0,L()|0,s|0,((s|0)<0)<<31>>31|0)|0;h=cw(i|0,L()|0,2)|0;n=L()|0;rd=l;if((c[v+304>>2]|0)>>>0<=rd>>>0?(c[v+308>>2]|0)>>>0>rd>>>0:0){if(!(n>>>0>0|((n|0)==0?h>>>0>(e[v+276>>1]|0)>>>0:0))){rd=1518;break}n=Zd(v,l,h,n)|0;rd=1515;break}n=Zd(v,l,h,n)|0;rd=1515}else{n=o;rd=1519}}else{i=i+13|0;o=cw(i|0,((i|0)<0)<<31>>31|0,2)|0;p=L()|0;if(c[v+272>>2]|0){if(a[v+81>>0]|0){l=0;break}}else{do if(!(p>>>0>0|((p|0)==0?o>>>0>(e[v+276>>1]|0)>>>0:0))){h=v+300|0;n=c[h>>2]|0;if(n|0){c[h>>2]=c[n>>2];rd=v+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1515;break ma}h=v+296|0;n=c[h>>2]|0;if(!n){h=v+292|0;break}else{c[h>>2]=c[n>>2];rd=v+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1515;break ma}}else h=v+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}n=_d(v,o,p)|0;rd=1515}while(0);if((rd|0)==1515)if(n)if(q){c[n+4>>2]=2;l=n;rd=1518}else{l=n;rd=1518}if((rd|0)==1518){c[l>>2]=i;n=l+4|0;i=c[n>>2]|0;h=i+s|0;rd=1519}if((rd|0)==1519){c[l+(i<<2)>>2]=r;c[l+(i+1<<2)>>2]=s;rd=l+(i+2<<2)|0;c[n>>2]=h;ew(rd|0,t|0,u|0)|0;a[rd+u>>0]=0}c[m>>2]=l}while(0);b[w+32>>1]=k;if((c[v+144>>2]|0)<(k<<16>>16|0))cd(j,45100,yc)}break}case 171:{l=td+-20|0;k=c[l>>2]|0;if((c[td+8>>2]|0)!=0?(A=oj(c[j>>2]|0,106,td+4|0,1)|0,(A|0)!=0):0){c[A+12>>2]=k;k=A+4|0;c[k>>2]=c[k>>2]|4352;k=A}c[l>>2]=k;break}case 172:{i=oj(c[j>>2]|0,36,td+-8|0,1)|0;c[td+-56>>2]=i;k=c[j>>2]|0;l=c[td+-32>>2]|0;m=(l|0)==0;if(!i){if(m)break a;ni(k,l);break a}if(!m){c[i+12>>2]=l;j=i+4|0;c[j>>2]=c[j>>2]|c[l+4>>2]&2097412}Ym(i);break}case 173:{l=c[td+-8>>2]|0;n=td+-44|0;h=c[td+-20>>2]|0;m=c[j>>2]|0;k=oj(m,161,n,1)|0;i=(l|0)==0;if(!k)if(i)k=0;else{ri(m,l);k=0}else{if(!i?(c[l>>2]|0)>(c[(c[j>>2]|0)+132>>2]|0):0){c[ia>>2]=n;cd(j,45123,ia)}c[k+20>>2]=l;l=k+4|0;c[l>>2]=c[l>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),xa=c[(c[j>>2]|0)+120>>2]|0,(xa|0)<(c[k+24>>2]|0)):0){c[qa>>2]=xa;cd(j,41637,qa)}if((h|0)==1)c[l>>2]=c[l>>2]|2}c[n>>2]=k;break}case 174:{l=td+-32|0;k=oj(c[j>>2]|0,161,l,1)|0;if(k){c[k+20>>2]=0;rd=k+4|0;c[rd>>2]=c[rd>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),B=c[(c[j>>2]|0)+120>>2]|0,(B|0)<(c[k+24>>2]|0)):0){c[u>>2]=B;cd(j,41637,u)}}else k=0;c[l>>2]=k;break}case 175:{l=c[td+-20>>2]|0;n=td+-56|0;h=c[td+-32>>2]|0;m=c[j>>2]|0;k=oj(m,161,n,1)|0;i=(l|0)==0;if(k){if(!i?(c[l>>2]|0)>(c[(c[j>>2]|0)+132>>2]|0):0){c[ja>>2]=n;cd(j,45123,ja)}c[k+20>>2]=l;m=k+4|0;c[m>>2]=c[m>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),ya=c[(c[j>>2]|0)+120>>2]|0,(ya|0)<(c[k+24>>2]|0)):0){c[ra>>2]=ya;cd(j,41637,ra)}if((h|0)==1)c[m>>2]=c[m>>2]|2;l=c[td+4>>2]|0;if((l|0)!=0?(c[k+44>>2]=l,rd=c[m>>2]|0,c[m>>2]=rd|16777216,c[l+68>>2]=k,(rd&2|0)!=0):0)cd(j,45157,Fa)}else{if(!i)ri(m,l);oi(c[j>>2]|0,c[td+4>>2]|0);k=0}c[n>>2]=k;break}case 176:{i=td+-44|0;k=oj(c[j>>2]|0,161,i,1)|0;if(k){c[k+20>>2]=0;m=k+4|0;c[m>>2]=c[m>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),Q=c[(c[j>>2]|0)+120>>2]|0,(Q|0)<(c[k+24>>2]|0)):0){c[K>>2]=Q;cd(j,41637,K)}l=c[td+4>>2]|0;if((l|0)!=0?(c[k+44>>2]=l,rd=c[m>>2]|0,c[m>>2]=rd|16777216,c[l+68>>2]=k,(rd&2|0)!=0):0)cd(j,45157,X)}else{oi(c[j>>2]|0,c[td+4>>2]|0);k=0}c[i>>2]=k;break}case 177:{l=td+4|0;k=oj(c[j>>2]|0,161,l,1)|0;if(k){c[k+20>>2]=0;rd=k+4|0;c[rd>>2]=c[rd>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),C=c[(c[j>>2]|0)+120>>2]|0,(C|0)<(c[k+24>>2]|0)):0){c[v>>2]=C;cd(j,41637,v)}}else k=0;c[l>>2]=k;break}case 178:{k=nj(c[j>>2]|0,c[td+-32>>2]|0,c[td+-8>>2]|0)|0;l=ej(j,169,0,0)|0;c[td+-44>>2]=l;if(l|0){c[l+20>>2]=k;break a}if(k|0)ri(c[j>>2]|0,k);break}case 186:case 185:case 184:case 183:case 182:case 181:case 180:case 179:{rd=td+-20|0;j=ej(j,e[td+-10>>1]|0,c[rd>>2]|0,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 187:{qd=td+4|0;j=c[qd+4>>2]|0;rd=td+-8|0;c[rd>>2]=c[qd>>2];c[rd+4>>2]=j;c[td+-4>>2]=j|-2147483648;break}case 188:{l=td+-8|0;m=td+-4|0;n=c[m>>2]|0;c[m>>2]=n&2147483647;m=nj(c[j>>2]|0,0,c[td+4>>2]|0)|0;o=td+-20|0;m=nj(c[j>>2]|0,m,c[o>>2]|0)|0;i=c[j>>2]|0;k=oj(i,161,l,1)|0;h=(m|0)==0;if(!k)if(h)k=0;else{ri(i,m);k=0}else{if(!h?(c[m>>2]|0)>(c[(c[j>>2]|0)+132>>2]|0):0){c[sa>>2]=l;cd(j,45123,sa)}c[k+20>>2]=m;rd=k+4|0;c[rd>>2]=c[rd>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),za=c[(c[j>>2]|0)+120>>2]|0,(za|0)<(c[k+24>>2]|0)):0){c[ta>>2]=za;cd(j,41637,ta)}}c[o>>2]=k;if((n|0)<0){k=ej(j,19,k,0)|0;c[o>>2]=k}if(k|0){j=k+4|0;c[j>>2]=c[j>>2]|128}break}case 189:{l=td+-32|0;m=td+-28|0;n=c[m>>2]|0;c[m>>2]=n&2147483647;m=nj(c[j>>2]|0,0,c[td+-20>>2]|0)|0;o=td+-44|0;m=nj(c[j>>2]|0,m,c[o>>2]|0)|0;m=nj(c[j>>2]|0,m,c[td+4>>2]|0)|0;i=c[j>>2]|0;k=oj(i,161,l,1)|0;h=(m|0)==0;if(!k)if(h)k=0;else{ri(i,m);k=0}else{if(!h?(c[m>>2]|0)>(c[(c[j>>2]|0)+132>>2]|0):0){c[ua>>2]=l;cd(j,45123,ua)}c[k+20>>2]=m;rd=k+4|0;c[rd>>2]=c[rd>>2]|4;if((c[j+36>>2]|0)==0?(Ym(k),Aa=c[(c[j>>2]|0)+120>>2]|0,(Aa|0)<(c[k+24>>2]|0)):0){c[va>>2]=Aa;cd(j,41637,va)}}c[o>>2]=k;if((n|0)<0){k=ej(j,19,k,0)|0;c[o>>2]=k}if(k|0){j=k+4|0;c[j>>2]=c[j>>2]|128}break}case 190:{rd=td+-8|0;j=ej(j,e[td+2>>1]|0,c[rd>>2]|0,0)|0;c[rd>>2]=j;break}case 191:{rd=td+-20|0;j=ej(j,51,c[rd>>2]|0,0)|0;c[rd>>2]=j;break}case 192:{m=td+-20|0;rd=td+4|0;k=ej(j,45,c[m>>2]|0,c[rd>>2]|0)|0;c[m>>2]=k;rd=c[rd>>2]|0;m=c[j>>2]|0;if(((k|0)!=0&(rd|0)!=0?(a[rd>>0]|0)==114:0)?(d[j+200>>0]|0)<=1:0){a[k>>0]=50;k=k+16|0;l=c[k>>2]|0;if(l|0)ni(m,l);c[k>>2]=0}break}case 193:{m=td+-32|0;rd=td+4|0;k=ej(j,160,c[m>>2]|0,c[rd>>2]|0)|0;c[m>>2]=k;rd=c[rd>>2]|0;m=c[j>>2]|0;if(((k|0)!=0&(rd|0)!=0?(a[rd>>0]|0)==114:0)?(d[j+200>>0]|0)<=1:0){a[k>>0]=51;k=k+16|0;l=c[k>>2]|0;if(l|0)ni(m,l);c[k>>2]=0}break}case 195:case 194:{j=ej(j,e[td+-10>>1]|0,c[td+4>>2]|0,0)|0;c[td+-8>>2]=j;break}case 196:{j=ej(j,(b[td+-10>>1]|0)==100?166:165,c[td+4>>2]|0,0)|0;c[td+-8>>2]=j;break}case 200:case 197:{c[td+4>>2]=0;break}case 199:{k=nj(c[j>>2]|0,0,c[td+-20>>2]|0)|0;k=nj(c[j>>2]|0,k,c[td+4>>2]|0)|0;l=td+-44|0;m=ej(j,48,c[l>>2]|0,0)|0;c[l>>2]=m;if(!m){if(k|0)ri(c[j>>2]|0,k)}else c[m+20>>2]=k;if(c[td+-32>>2]|0){j=ej(j,19,c[l>>2]|0,0)|0;c[l>>2]=j}break}case 202:{m=td+-8|0;k=c[m>>2]|0;if(!k){if((d[j+200>>0]|0)>=2)break a;k=td+-44|0;l=c[k>>2]|0;if(l|0)ni(c[j>>2]|0,l);j=oj(c[j>>2]|0,147,17136+(c[td+-32>>2]<<3)|0,1)|0;c[k>>2]=j;break a}if((c[k>>2]|0)==1){k=k+4|0;l=c[k>>2]|0;c[k>>2]=0;k=c[m>>2]|0;if(k|0)ri(c[j>>2]|0,k);if(l|0){rd=l+4|0;c[rd>>2]=c[rd>>2]&-769|512}rd=td+-44|0;j=ej(j,(c[td+-32>>2]|0)==0?53:52,c[rd>>2]|0,l)|0;c[rd>>2]=j;break a}l=td+-44|0;k=ej(j,49,c[l>>2]|0,0)|0;c[l>>2]=k;if(!k){k=c[m>>2]|0;if(k|0)ri(c[j>>2]|0,k)}else{c[k+20>>2]=c[m>>2];k=c[l>>2]|0;if((c[j+36>>2]|0)==0?(Ym(k),ea=c[(c[j>>2]|0)+120>>2]|0,(ea|0)<(c[k+24>>2]|0)):0){c[$>>2]=ea;cd(j,41637,$)}}if(c[td+-32>>2]|0){j=ej(j,19,c[l>>2]|0,0)|0;c[l>>2]=j}break}case 203:{k=ej(j,131,0,0)|0;c[td+-20>>2]=k;l=c[td+-8>>2]|0;if(!k){if(!l)break a;pi(c[j>>2]|0,l,1);break a}c[k+20>>2]=l;rd=k+4|0;c[rd>>2]=c[rd>>2]|2099200;if((c[j+36>>2]|0)==0?(Ym(k),D=c[(c[j>>2]|0)+120>>2]|0,(D|0)<(c[k+24>>2]|0)):0){c[w>>2]=D;cd(j,41637,w)}break}case 204:{k=td+-44|0;l=ej(j,49,c[k>>2]|0,0)|0;c[k>>2]=l;m=c[td+-8>>2]|0;if(!l){if(m|0)pi(c[j>>2]|0,m,1)}else{c[l+20>>2]=m;rd=l+4|0;c[rd>>2]=c[rd>>2]|2099200;if((c[j+36>>2]|0)==0?(Ym(l),R=c[(c[j>>2]|0)+120>>2]|0,(R|0)<(c[l+24>>2]|0)):0){c[M>>2]=R;cd(j,41637,M)}}if(c[td+-32>>2]|0){j=ej(j,19,c[k>>2]|0,0)|0;c[k>>2]=j}break}case 205:{k=pj(j,0,td+-20|0,td+-8|0)|0;m=mj(j,0,k,0,0,0,0,0,0)|0;l=c[td+4>>2]|0;do if(l|0)if((k|0)==0|(m|0)==0){ri(c[j>>2]|0,l);break}else{rd=(c[k>>2]|0)+-1|0;c[k+8+(rd*72|0)+64>>2]=l;rd=k+8+(rd*72|0)+37|0;a[rd>>0]=a[rd>>0]|4;break}while(0);k=td+-44|0;l=ej(j,49,c[k>>2]|0,0)|0;c[k>>2]=l;if(!l){if(m|0)pi(c[j>>2]|0,m,1)}else{c[l+20>>2]=m;rd=l+4|0;c[rd>>2]=c[rd>>2]|2099200;if((c[j+36>>2]|0)==0?(Ym(l),fa=c[(c[j>>2]|0)+120>>2]|0,(fa|0)<(c[l+24>>2]|0)):0){c[_>>2]=fa;cd(j,41637,_)}}if(c[td+-32>>2]|0){j=ej(j,19,c[k>>2]|0,0)|0;c[k>>2]=j}break}case 206:{k=ej(j,20,0,0)|0;c[td+-32>>2]=k;l=c[td+-8>>2]|0;if(!k){if(!l)break a;pi(c[j>>2]|0,l,1);break a}c[k+20>>2]=l;rd=k+4|0;c[rd>>2]=c[rd>>2]|2099200;if((c[j+36>>2]|0)==0?(Ym(k),E=c[(c[j>>2]|0)+120>>2]|0,(E|0)<(c[k+24>>2]|0)):0){c[s>>2]=E;cd(j,41637,s)}break}case 207:{l=ej(j,149,c[td+-32>>2]|0,0)|0;i=td+-44|0;c[i>>2]=l;if(!l){k=c[td+-20>>2]|0;if(k|0)ri(c[j>>2]|0,k);k=c[td+-8>>2]|0;if(!k)break a;ni(c[j>>2]|0,k);break a}m=c[td+-8>>2]|0;k=c[td+-20>>2]|0;if(m){k=nj(c[j>>2]|0,k,m)|0;l=c[i>>2]|0}c[l+20>>2]=k;k=c[i>>2]|0;if((c[j+36>>2]|0)==0?(Ym(k),Ba=c[(c[j>>2]|0)+120>>2]|0,(Ba|0)<(c[k+24>>2]|0)):0){c[ka>>2]=Ba;cd(j,41637,ka)}break}case 208:{rd=td+-44|0;qd=nj(c[j>>2]|0,c[rd>>2]|0,c[td+-20>>2]|0)|0;c[rd>>2]=qd;j=nj(c[j>>2]|0,qd,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 209:{qd=nj(c[j>>2]|0,0,c[td+-20>>2]|0)|0;rd=td+-32|0;c[rd>>2]=qd;j=nj(c[j>>2]|0,qd,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 316:{c[td+-44>>2]=c[td+-8>>2];break}case 215:{rd=td+-20|0;j=nj(c[j>>2]|0,c[rd>>2]|0,c[td+4>>2]|0)|0;c[rd>>2]=j;break}case 216:{rd=td+4|0;j=nj(c[j>>2]|0,0,c[rd>>2]|0)|0;c[rd>>2]=j;break}case 223:case 218:{c[td+-20>>2]=c[td+-8>>2];break}case 219:{h=td+-44|0;qd=pj(j,0,h,0)|0;hj(j,td+-80|0,td+-68|0,qd,c[td+-20>>2]|0,c[td+-116>>2]|0,td+-128|0,c[td+4>>2]|0,0,c[td+-92>>2]|0,0);if((d[j+200>>0]|0)>1?(q=c[j+232>>2]|0,q|0):0){i=c[q>>2]|0;m=c[j>>2]|0;na:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1732;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break a;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break a}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1732;break na}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1732;break na}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1732}while(0);if((rd|0)==1732)if(!k)break a;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=h;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}break}case 262:case 220:{c[td+4>>2]=2;break}case 221:{c[td+16>>2]=0;break}case 224:{r=td+-44|0;s=td+-20|0;pd=c[td+-8>>2]|0;qd=c[td+4>>2]|0;t=nj(c[j>>2]|0,c[r>>2]|0,0)|0;if((pd|0)!=0|(qd|0)!=-1?(a[(c[j>>2]|0)+165>>0]|0)==0:0){qd=c[s>>2]|0;c[H>>2]=c[td+-16>>2];c[H+4>>2]=qd;cd(j,45206,H)}oa:do if(t|0){n=(c[t>>2]|0)+-1|0;m=c[j>>2]|0;o=c[s>>2]|0;p=c[td+-16>>2]|0;pa:do if(o){i=Sv(p|0,0,1,0)|0;h=L()|0;qa:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=1751;else{rd=1753;break pa}else{do if(0<0|(0==0?p>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break qa}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break qa}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=1751}while(0);if((rd|0)==1751)q=_d(m,i,h)|0;if(q){ew(q|0,o|0,p|0)|0;a[q+p>>0]=0;k=t+4+(n*20|0)+4|0;c[k>>2]=q;l=a[q>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[q+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=q+i|0;if((a[q+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[q+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=1753}else rd=1753;while(0);if((rd|0)==1753){k=t+4+(n*20|0)+4|0;c[k>>2]=0}if((d[j+200>>0]|0)>1){i=c[k>>2]|0;m=c[j>>2]|0;ra:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1786;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break oa;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break oa}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1786;break ra}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1786;break ra}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1786}while(0);if((rd|0)==1786)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=s;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}}while(0);c[r>>2]=t;break}case 225:{r=td+-20|0;pd=c[td+-8>>2]|0;qd=c[td+4>>2]|0;s=nj(c[j>>2]|0,0,0)|0;if((pd|0)!=0|(qd|0)!=-1?(a[(c[j>>2]|0)+165>>0]|0)==0:0){qd=c[r>>2]|0;c[t>>2]=c[td+-16>>2];c[t+4>>2]=qd;cd(j,45206,t)}sa:do if(s|0){n=(c[s>>2]|0)+-1|0;m=c[j>>2]|0;o=c[r>>2]|0;p=c[td+-16>>2]|0;ta:do if(o){i=Sv(p|0,0,1,0)|0;h=L()|0;ua:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=1804;else{rd=1806;break ta}else{do if(0<0|(0==0?p>>>0<(e[m+276>>1]|0)>>>0:0)){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break ua}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];q=m+284|0;c[q>>2]=(c[q>>2]|0)+1;q=l;break ua}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=1804}while(0);if((rd|0)==1804)q=_d(m,i,h)|0;if(q){ew(q|0,o|0,p|0)|0;a[q+p>>0]=0;k=s+4+(n*20|0)+4|0;c[k>>2]=q;l=a[q>>0]|0;if((a[880+(l&255)>>0]|0)<0){h=l<<24>>24==91?93:l;i=0;l=1;while(1){m=a[q+l>>0]|0;if(m<<24>>24==h<<24>>24){l=l+1|0;m=q+i|0;if((a[q+l>>0]|0)!=h<<24>>24)break;a[m>>0]=h}else a[q+i>>0]=m;i=i+1|0;l=l+1|0}a[m>>0]=0}}else rd=1806}else rd=1806;while(0);if((rd|0)==1806){k=s+4+(n*20|0)+4|0;c[k>>2]=0}if((d[j+200>>0]|0)>1){i=c[k>>2]|0;m=c[j>>2]|0;va:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;rd=1839;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break sa;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break sa}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1839;break va}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=1839;break va}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;rd=1839}while(0);if((rd|0)==1839)if(!k)break;l=k+4|0;I=l;J=I+12|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[k>>2]=i;pd=r;qd=c[pd+4>>2]|0;rd=l;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;j=j+272|0;c[k+12>>2]=c[j>>2];c[j>>2]=k}}while(0);c[r>>2]=s;break}case 228:{x=c[td+4>>2]|0;o=c[td+-8>>2]|0;y=c[j>>2]|0;wa:do if(!(a[y+81>>0]|0)){xa:do if(!(a[y+165>>0]|0)){m=j+4|0;i=y+24|0;h=(c[i>>2]&1|0)==0;n=y+16|0;pd=c[(c[n>>2]|0)+12>>2]|0;a[y+78>>0]=a[pd+77>>0]|0;if((b[pd+78>>1]&1)==0?(Ca=eh(y,0,m,0)|0,(Ca|0)!=0):0)k=Ca;else rd=1846;ya:do if((rd|0)==1846){k=c[y+20>>2]|0;if((k|0)>1)do{l=k;k=k+-1|0;if((b[(c[(c[n>>2]|0)+(k<<4)+12>>2]|0)+78>>1]&1)==0?(Oa=eh(y,k,m,0)|0,Oa|0):0){k=Oa;break ya}}while((l|0)>2);if(h)c[i>>2]=c[i>>2]&-2;if(!(a[y+89>>0]|0))break xa;c[i>>2]=c[i>>2]|16;break xa}while(0);c[j+12>>2]=k;j=j+36|0;c[j>>2]=(c[j>>2]|0)+1;break wa}while(0);k=c[x+12>>2]|0;w=hi(y,c[x+16>>2]|0,k)|0;if(!w){if(!o){c[Ta>>2]=x;c[Ta+4>>2]=0;cd(j,45244,Ta)}else hl(j,k);a[j+17>>0]=1;break}pd=w+55|0;if((d[pd>>0]|d[pd+1>>0]<<8)&3){c[Ua>>2]=0;cd(j,45262,Ua);break}l=c[w+24>>2]|0;u=y+16|0;m=c[u>>2]|0;if(!l)v=-1e6;else{k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){v=k;break}else k=k+1|0}n=c[w+12>>2]|0;o=c[m+(v<<4)>>2]|0;t=(v|0)==1;k=t?34855:34585;m=c[j>>2]|0;l=a[m+165>>0]|0;if(!(l<<24>>24))if((a[j+200>>0]|0)==0?(Kb=c[m+312>>2]|0,(Kb|0)!=0):0){k=$a[Kb&127](c[m+316>>2]|0,9,k,0,o,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,Lb);c[j+12>>2]=23;break}if((k|2|0)!=2){cd(j,39231,Mb);c[j+12>>2]=1;break}if(k|0)break;m=c[j>>2]|0;h=a[m+165>>0]|0}else h=0;else h=l;i=(v|0)==0?10:12;l=c[w>>2]|0;k=c[n>>2]|0;do if((h<<24>>24==0?(a[j+200>>0]|0)==0:0)?(Rb=c[m+312>>2]|0,Rb|0):0){k=$a[Rb&127](c[m+316>>2]|0,i,l,k,o,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,Sb);c[j+12>>2]=23;break wa}if((k|2|0)==2)if(!k)break;else break wa;else{cd(j,39231,Tb);c[j+12>>2]=1;break wa}}while(0);s=j+8|0;k=c[s>>2]|0;i=j+116|0;if(!k){m=c[j>>2]|0;if((c[i>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[j+23>>0]=1;za:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=1897;else break wa;else{do if((e[m+276>>1]|0)>=224){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];pd=m+284|0;c[pd>>2]=(c[pd>>2]|0)+1;break za}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];pd=m+284|0;c[pd>>2]=(c[pd>>2]|0)+1;break za}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=1897}while(0);if((rd|0)==1897)l=_d(m,224,0)|0;if(!l)break;I=l+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[l>>2]=m;k=m+4|0;m=c[k>>2]|0;if(m|0)c[m+4>>2]=l;c[l+8>>2]=m;c[l+4>>2]=0;c[k>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=j;c[s>>2]=l;Di(l,61,0,1,0)|0;r=l}else r=k;q=c[i>>2]|0;q=(q|0)==0?j:q;k=q+84|0;l=c[k>>2]|0;p=1<>2]=l|p,t):0)?(Dc=c[q>>2]|0,rc=Dc+16|0,(c[(c[rc>>2]|0)+20>>2]|0)==0):0)?(a[q+199>>0]|0)==0:0){k=Pe(c[Dc>>2]|0,0,Dc,qd,0,542)|0;if(k|0){cd(q,32157,pc);c[q+12>>2]=k;break}qd=c[qd>>2]|0;c[(c[rc>>2]|0)+20>>2]=qd;k=c[Dc+92>>2]|0;i=c[qd+4>>2]|0;c[i+4>>2]=c[qd>>2];do if(!(b[i+22>>1]&2)){h=i+32|0;n=i+36|0;o=(c[h>>2]|0)-(c[n>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[h>>2]=k;m=i+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;qd=(c[14820]|0)+1|0;c[14820]=qd;c[14821]=(qd|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=1917;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=1917}while(0);do if((rd|0)==1917){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);rd=Se(c[i>>2]|0,h,o)|0;c[n>>2]=(c[h>>2]|0)-(o&65535);if((rd|0)!=7)break;k=Dc+81|0;do if(!(a[k>>0]|0)){if(a[Dc+82>>0]|0)break;a[k>>0]=1;if((c[Dc+180>>2]|0)>0)c[Dc+264>>2]=1;k=Dc+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[Dc+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break Aa}while(0)}while(0);l=q+80|0;c[l>>2]=c[l>>2]|p;l=q+20|0;a[l>>0]=a[l>>0]|1;l=c[w>>2]|0;c[Oc>>2]=c[(c[u>>2]|0)+(v<<4)>>2];c[Oc+4>>2]=34585;c[Oc+8>>2]=l;Ak(j,45335,Oc);l=c[w>>2]|0;m=c[(c[(c[j>>2]|0)+16>>2]|0)+(v<<4)>>2]|0;c[Gc>>2]=1;Cb(24,Oc,42737,Gc)|0;if(Sd(c[j>>2]|0,Oc,m)|0){c[Hc>>2]=m;c[Hc+4>>2]=Oc;c[Hc+8>>2]=38091;c[Hc+12>>2]=l;Ak(j,42751,Hc)}c[Ic>>2]=2;Cb(24,Oc,42737,Ic)|0;if(Sd(c[j>>2]|0,Oc,m)|0){c[Kc>>2]=m;c[Kc+4>>2]=Oc;c[Kc+8>>2]=38091;c[Kc+12>>2]=l;Ak(j,42751,Kc)}c[Lc>>2]=3;Cb(24,Oc,42737,Lc)|0;if(Sd(c[j>>2]|0,Oc,m)|0){c[Mc>>2]=m;c[Mc+4>>2]=Oc;c[Mc+8>>2]=38091;c[Mc+12>>2]=l;Ak(j,42751,Mc)}c[Nc>>2]=4;Cb(24,Oc,42737,Nc)|0;k=c[j>>2]|0;if(Sd(k,Oc,m)|0){c[Qc>>2]=m;c[Qc+4>>2]=Oc;c[Qc+8>>2]=38091;c[Qc+12>>2]=l;Ak(j,42751,Qc);k=c[j>>2]|0}i=c[s>>2]|0;k=(c[c[(c[k+16>>2]|0)+(v<<4)+12>>2]>>2]|0)+1|0;m=i+108|0;l=c[m>>2]|0;if((c[i+112>>2]|0)>(l|0)){c[m>>2]=l+1;rd=c[i+104>>2]|0;a[rd+(l*20|0)>>0]=95;b[rd+(l*20|0)+2>>1]=0;c[rd+(l*20|0)+4>>2]=v;c[rd+(l*20|0)+8>>2]=1;c[rd+(l*20|0)+12>>2]=k;c[rd+(l*20|0)+16>>2]=0;a[rd+(l*20|0)+1>>0]=0}else Di(i,95,v,1,k)|0;kl(j,c[w+44>>2]|0,v);m=c[w>>2]|0;l=r+108|0;k=c[l>>2]|0;if((c[r+112>>2]|0)>(k|0)){c[l>>2]=k+1;j=c[r+104>>2]|0;a[j+(k*20|0)>>0]=-112;b[j+(k*20|0)+2>>1]=0;c[j+(k*20|0)+4>>2]=v;c[j+(k*20|0)+8>>2]=0;c[j+(k*20|0)+12>>2]=0;c[j+(k*20|0)+16>>2]=0;a[j+(k*20|0)+1>>0]=0}else k=Di(r,144,v,0,0)|0;if(!(a[(c[r>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[l>>2]|0)+-1|0;Ei(r,(c[r+104>>2]|0)+(k*20|0)|0,m,0)}}while(0);qi(y,x);break}case 229:{xj(j,0,c[td+4>>2]|0);break}case 230:{xj(j,td+-8|0,c[td+4>>2]|0);break}case 233:{yj(j,td+-8|0,td+4|0,0,0);break}case 234:{yj(j,td+-32|0,td+-20|0,td+4|0,0);break}case 235:{yj(j,td+-44|0,td+-32|0,td+-8|0,0);break}case 236:{yj(j,td+-32|0,td+-20|0,td+4|0,1);break}case 237:{yj(j,td+-44|0,td+-32|0,td+-8|0,1);break}case 240:{v=c[td+-32>>2]|0;w=(c[td+4>>2]|0)-v+(c[td+8>>2]|0)|0;k=c[td+-8>>2]|0;p=j+236|0;l=c[p>>2]|0;A=c[j>>2]|0;c[p>>2]=0;Ba:do if((l|0)!=0&(c[j+36>>2]|0)==0){z=c[l>>2]|0;i=c[l+20>>2]|0;if(!i)y=-1e6;else{h=c[A+16>>2]|0;m=0;while(1)if((c[h+(m<<4)+12>>2]|0)==(i|0)){y=m;break}else m=m+1|0}m=l+28|0;c[m>>2]=k;h=(k|0)==0;if(!h){i=k;do{c[i+4>>2]=l;i=c[i+36>>2]|0}while((i|0)!=0)}c[Qb>>2]=z;if(!z)i=0;else i=(Eu(z)|0)&1073741823;c[Qb+4>>2]=i;c[_c>>2]=j;x=A+16|0;q=c[x>>2]|0;c[_c+12>>2]=c[q+(y<<4)>>2];c[_c+4>>2]=c[q+(y<<4)+12>>2];c[_c+16>>2]=31419;c[_c+20>>2]=Qb;q=(y|0)==1;c[_c+8>>2]=q&1;if(!h)do{if(cl(_c,c[k+8>>2]|0)|0){k=0;rd=2083;break Ba}if(dl(_c,c[k+16>>2]|0)|0){k=0;rd=2083;break Ba}n=c[k+20>>2]|0;if(n|0?(c[n>>2]|0)>0:0){i=0;h=n+4|0;while(1){if(dl(_c,c[h>>2]|0)|0){k=0;rd=2083;break Ba}i=i+1|0;if((i|0)>=(c[n>>2]|0))break;else h=h+20|0}}o=c[k+28>>2]|0;if(o|0){n=c[o>>2]|0;if(n|0?(c[n>>2]|0)>0:0){i=0;h=n+4|0;while(1){if(dl(_c,c[h>>2]|0)|0){k=0;rd=2083;break Ba}i=i+1|0;if((i|0)>=(c[n>>2]|0))break;else h=h+20|0}}if(dl(_c,c[o+4>>2]|0)|0){k=0;rd=2083;break Ba}n=c[o+8>>2]|0;if(n|0?(c[n>>2]|0)>0:0){i=0;h=n+4|0;while(1){if(dl(_c,c[h>>2]|0)|0){k=0;rd=2083;break Ba}i=i+1|0;if((i|0)>=(c[n>>2]|0))break;else h=h+20|0}}if(dl(_c,c[o+12>>2]|0)|0){k=0;rd=2083;break Ba}}k=c[k+36>>2]|0}while((k|0)!=0);if(!(dl(_c,c[l+12>>2]|0)|0)){if((d[j+200>>0]|0)<=1){k=A+165|0;if(!(a[k>>0]|0)){u=j+8|0;i=c[u>>2]|0;o=j+116|0;if(!i){n=c[j>>2]|0;if((c[o>>2]|0)==0?(b[n+76>>1]&8)==0:0)a[j+23>>0]=1;Ca:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))rd=2e3;else{k=0;r=l;rd=2085;break Ba}else{do if((e[n+276>>1]|0)>=224){i=n+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];od=n+284|0;c[od>>2]=(c[od>>2]|0)+1;break Ca}i=n+296|0;h=c[i>>2]|0;if(!h){i=n+292|0;break}else{c[i>>2]=c[h>>2];od=n+284|0;c[od>>2]=(c[od>>2]|0)+1;break Ca}}else i=n+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;rd=2e3}while(0);if((rd|0)==2e3)h=_d(n,224,0)|0;if(!h){k=0;r=l;rd=2085;break}I=h+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[h>>2]=n;m=n+4|0;i=c[m>>2]|0;if(i|0)c[i+4>>2]=h;c[h+8>>2]=i;c[h+4>>2]=0;c[m>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=j;c[u>>2]=h;Di(h,61,0,1,0)|0;t=h}else t=i;s=c[o>>2]|0;s=(s|0)==0?j:s;m=s+84|0;i=c[m>>2]|0;r=1<>2]=i|r,q):0)?(Ac=c[s>>2]|0,oc=Ac+16|0,(c[(c[oc>>2]|0)+20>>2]|0)==0):0)?(a[s+199>>0]|0)==0:0){m=Pe(c[Ac>>2]|0,0,Ac,qd,0,542)|0;if(m|0){cd(s,32157,mc);c[s+12>>2]=m;break}qd=c[qd>>2]|0;c[(c[oc>>2]|0)+20>>2]=qd;m=c[Ac+92>>2]|0;n=c[qd+4>>2]|0;c[n+4>>2]=c[qd>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;q=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((m+-512|0)>>>0<65025){if(m+-1&m|0)break;c[o>>2]=m;h=n+80|0;m=c[h>>2]|0;if(!m)break;i=m+-4|0;c[h>>2]=i;m=i;do if((c[14816]|0)>>>0<=m>>>0)if((c[14817]|0)>>>0>m>>>0){c[14979]=(c[14979]|0)+-1;c[i>>2]=c[14819];c[14819]=i;qd=(c[14820]|0)+1|0;c[14820]=qd;c[14821]=(qd|0)<(c[14815]|0)&1;break}else{m=Wa[c[29352>>2]&127](i)|0;rd=2020;break}else{m=Wa[c[29352>>2]&127](i)|0;rd=2020}while(0);do if((rd|0)==2020){c[14980]=(c[14980]|0)-m;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{qd=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-qd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);c[h>>2]=0}while(0);qd=Se(c[n>>2]|0,o,q)|0;c[p>>2]=(c[o>>2]|0)-(q&65535);if((qd|0)!=7)break;m=Ac+81|0;do if(!(a[m>>0]|0)){if(a[Ac+82>>0]|0)break;a[m>>0]=1;if((c[Ac+180>>2]|0)>0)c[Ac+264>>2]=1;m=Ac+272|0;c[m>>2]=(c[m>>2]|0)+1;m=c[Ac+236>>2]|0;if(!m)break;c[m+12>>2]=7}while(0);break Da}while(0)}while(0);o=s+80|0;c[o>>2]=c[o>>2]|r;o=v;Ea:do if(v){h=Sv(w|0,0,1,0)|0;n=L()|0;Fa:do if(c[A+272>>2]|0)if(!(a[A+81>>0]|0))rd=2044;else{i=0;break Ea}else{do if(0<0|(0==0?w>>>0<(e[A+276>>1]|0)>>>0:0)){m=A+300|0;i=c[m>>2]|0;if(i|0){c[m>>2]=c[i>>2];qd=A+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break Fa}m=A+296|0;i=c[m>>2]|0;if(!i){m=A+292|0;break}else{c[m>>2]=c[i>>2];qd=A+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break Fa}}else m=A+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;rd=2044}while(0);if((rd|0)==2044)i=_d(A,h,n)|0;if(i){ew(i|0,o|0,w|0)|0;a[i+w>>0]=0}else i=0}else i=0;while(0);rd=c[l+4>>2]|0;c[Wc>>2]=c[(c[x>>2]|0)+(y<<4)>>2];c[Wc+4>>2]=34585;c[Wc+8>>2]=z;c[Wc+12>>2]=rd;c[Wc+16>>2]=i;Ak(j,46058,Wc);Ga:do if(i|0){if(c[A+480>>2]|0){Xd(A,i);break}m=i;do if((c[A+304>>2]|0)>>>0<=m>>>0){if((c[A+308>>2]|0)>>>0<=m>>>0)break;rd=A+300|0;c[i>>2]=c[rd>>2];c[rd>>2]=i;break Ga}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{rd=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);n=c[u>>2]|0;m=(c[c[(c[(c[j>>2]|0)+16>>2]|0)+(y<<4)+12>>2]>>2]|0)+1|0;i=n+108|0;h=c[i>>2]|0;if((c[n+112>>2]|0)>(h|0)){c[i>>2]=h+1;j=c[n+104>>2]|0;a[j+(h*20|0)>>0]=95;b[j+(h*20|0)+2>>1]=0;c[j+(h*20|0)+4>>2]=y;c[j+(h*20|0)+8>>2]=1;c[j+(h*20|0)+12>>2]=m;c[j+(h*20|0)+16>>2]=0;a[j+(h*20|0)+1>>0]=0}else Di(n,95,y,1,m)|0;c[Xc>>2]=z;Bk(t,y,dd(A,46122,Xc)|0);rd=2060}}else{c[p>>2]=l;l=0;k=A+165|0;rd=2060}if((rd|0)==2060)if(!(a[k>>0]|0)){k=0;rd=2083;break}q=mi((c[(c[x>>2]|0)+(y<<4)+12>>2]|0)+40|0,z,l)|0;if(q|0){k=A+81|0;if(a[k>>0]|0){k=0;l=q;rd=2083;break}if(a[A+82>>0]|0){k=0;l=q;rd=2083;break}a[k>>0]=1;if((c[A+180>>2]|0)>0)c[A+264>>2]=1;k=A+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[A+236>>2]|0;if(!k){k=0;l=q;rd=2083;break}c[k+12>>2]=7;k=0;l=q;rd=2083;break}h=c[l+20>>2]|0;if((h|0)==(c[l+24>>2]|0)){p=c[l+4>>2]|0;n=c[h+20>>2]|0;if(!n){m=h+12|0;k=h+16|0}else{m=a[p>>0]|0;if(!(m<<24>>24))k=0;else{k=0;i=p;do{i=i+1|0;k=G(k+(d[208+(m&255)>>0]|0)|0,-1640531535)|0;m=a[i>>0]|0}while(m<<24>>24!=0)}k=(k>>>0)%((c[h+8>>2]|0)>>>0)|0;m=n+(k<<3)|0;k=n+(k<<3)+4|0}m=c[m>>2]|0;Ha:do if(!m)k=59292;else{o=d[208+(d[p>>0]|0)>>0]|0;while(1){k=c[k>>2]|0;m=m+-1|0;h=c[k+12>>2]|0;j=a[h>>0]|0;i=(d[208+(j&255)>>0]|0)-o|0;if(!(j<<24>>24==0|(i|0)!=0)){n=p;do{h=h+1|0;n=n+1|0;j=a[h>>0]|0;i=(d[208+(j&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(j<<24>>24==0|(i|0)!=0))}if(!i)break Ha;if(!m){k=59292;break}}}while(0);k=(c[k+8>>2]|0)+68|0;c[l+32>>2]=c[k>>2];c[k>>2]=l;k=0;l=q;rd=2083}else{k=0;l=q;rd=2083}}else{k=0;r=l;rd=2085}}else rd=2083;while(0);if((rd|0)==2083)if(l){r=l;m=l+28|0;rd=2085}do if((rd|0)==2085){Xi(A,c[m>>2]|0);l=c[l>>2]|0;do if(l|0){if(A|0){if(c[A+480>>2]|0){Xd(A,l);break}j=l;if((c[A+304>>2]|0)>>>0<=j>>>0?(c[A+308>>2]|0)>>>0>j>>>0:0){j=A+300|0;c[l>>2]=c[j>>2];c[j>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);l=c[r+4>>2]|0;do if(l|0){if(A|0){if(c[A+480>>2]|0){Xd(A,l);break}j=l;if((c[A+304>>2]|0)>>>0<=j>>>0?(c[A+308>>2]|0)>>>0>j>>>0:0){j=A+300|0;c[l>>2]=c[j>>2];c[j>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);l=c[r+12>>2]|0;if(l|0)ni(A,l);l=c[r+16>>2]|0;if(l|0){q=l+4|0;m=c[l>>2]|0;Ia:do if((c[q>>2]|0)>0){h=A+480|0;n=A+304|0;o=A+308|0;p=A+300|0;if(!A){i=0;while(1){m=c[m+(i<<3)>>2]|0;do if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{j=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);i=i+1|0;m=c[l>>2]|0;if((i|0)>=(c[q>>2]|0))break Ia}}i=0;do{m=c[m+(i<<3)>>2]|0;do if(m|0){if(c[h>>2]|0){Xd(A,m);break}j=m;if((c[n>>2]|0)>>>0<=j>>>0?(c[o>>2]|0)>>>0>j>>>0:0){c[m>>2]=c[p>>2];c[p>>2]=m;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{j=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);i=i+1|0;m=c[l>>2]|0}while((i|0)<(c[q>>2]|0))}while(0);Ja:do if(m){do if(A|0){i=A+480|0;if(!(c[i>>2]|0)){h=m;if((c[A+304>>2]|0)>>>0>h>>>0)break;if((c[A+308>>2]|0)>>>0<=h>>>0)break;j=A+300|0;c[m>>2]=c[j>>2];c[j>>2]=m}else Xd(A,m);m=i;rd=2140;break Ja}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);rd=2138;break}else{rd=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);rd=2138;break}}else rd=2138;while(0);if((rd|0)==2138)if(!A){pd=l;rd=2145}else{m=A+480|0;rd=2140}do if((rd|0)==2140){if(c[m>>2]|0){Xd(A,l);break}j=l;if((c[A+304>>2]|0)>>>0<=j>>>0?(c[A+308>>2]|0)>>>0>j>>>0:0){j=A+300|0;c[l>>2]=c[j>>2];c[j>>2]=l}else{pd=l;rd=2145}}while(0);do if((rd|0)==2145?pd|0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](pd);break}else{j=Wa[c[29352>>2]&127](pd)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](pd);break}while(0);if(!r)break}if(A|0){if(c[A+480>>2]|0){Xd(A,r);break}j=r;if((c[A+304>>2]|0)>>>0<=j>>>0?(c[A+308>>2]|0)>>>0>j>>>0:0){j=A+300|0;c[r>>2]=c[j>>2];c[j>>2]=r;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{j=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);Xi(A,k);break}case 241:{H=td+-80|0;K=td+-68|0;y=c[td+-56>>2]|0;D=c[td+-44>>2]|0;k=c[td+-40>>2]|0;E=c[td+-20>>2]|0;F=c[td+4>>2]|0;M=td+-116|0;v=c[td+-92>>2]|0;N=c[j>>2]|0;x=(c[M>>2]|0)!=0;O=td+-64|0;l=(c[O>>2]|0)==0;do if(x)if(l)if(!E){rd=2387;break}else{l=1;m=H;rd=2171;break}else{cd(j,46151,Za);rd=2387;break}else{if(!l){if(a[N+165>>0]|0){cd(j,39404,_a);rd=2387;break}l=wk(N,H)|0;if((l|0)<0){c[bb>>2]=H;cd(j,39421,bb);rd=2387;break}else m=K}else{l=d[N+164>>0]|0;m=H}if((E|0)!=0&(l|0)>-1)rd=2171;else rd=2387}while(0);Ka:do if((rd|0)==2171){B=N+81|0;if(!(a[B>>0]|0)){t=N+165|0;if((l|0)!=1&(a[t>>0]|0)!=0){i=E+12|0;h=c[i>>2]|0;do if(h|0){if(c[N+480>>2]|0){Xd(N,h);break}pd=h;if((c[N+304>>2]|0)>>>0<=pd>>>0?(c[N+308>>2]|0)>>>0>pd>>>0:0){pd=N+300|0;c[h>>2]=c[pd>>2];c[pd>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{pd=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-pd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[i>>2]=0}s=E+8|0;h=c[s>>2]|0;if(!h)i=E+12|0;else{n=c[(c[j>>2]|0)+16>>2]|0;i=0;while(1)if((c[n+(i<<4)+12>>2]|0)==(h|0))break;else i=i+1|0;i=n+(i<<4)|0}C=E+16|0;i=bd(j,0,c[C>>2]|0,c[i>>2]|0)|0;h=c[j>>2]|0;u=E+24|0;n=c[u>>2]|0;do if(n|0){if(h|0?c[h+480>>2]|0:0){Vi(h,n);break}kd=n+32|0;pd=(c[kd>>2]|0)+-1|0;c[kd>>2]=pd;if(!pd)Vi(h,n)}while(0);c[u>>2]=i;La:do if(i){pd=i+32|0;c[pd>>2]=(c[pd>>2]|0)+1;if(a[E+45>>0]&2){q=c[E+72>>2]|0;h=c[i+8>>2]|0;Ma:do if(h|0){r=d[208+(d[q>>0]|0)>>0]|0;while(1){o=c[h>>2]|0;pd=a[o>>0]|0;n=(d[208+(pd&255)>>0]|0)-r|0;if(!(pd<<24>>24==0|(n|0)!=0)){p=q;do{o=o+1|0;p=p+1|0;pd=a[o>>0]|0;n=(d[208+(pd&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(pd<<24>>24==0|(n|0)!=0))}if(!n)break;h=c[h+20>>2]|0;if(!h)break Ma}c[E+76>>2]=h;break La}while(0);c[hc>>2]=q;c[hc+4>>2]=0;cd(j,41107,hc);a[j+17>>0]=1;i=0}}else i=0;while(0);if((a[t>>0]|0)==0?(i|0)!=0&(c[O>>2]|0)==0:0)A=(c[i+72>>2]|0)==(c[(c[N+16>>2]|0)+28>>2]|0)?1:l;else A=l;if((a[B>>0]|0)==0?(Zc=c[j>>2]|0,c[_c>>2]=j,Zc=c[Zc+16>>2]|0,c[_c+12>>2]=c[Zc+(A<<4)>>2],c[_c+4>>2]=c[Zc+(A<<4)+12>>2],c[_c+16>>2]=31419,c[_c+20>>2]=m,Zc=(A|0)==1,c[_c+8>>2]=Zc&1,(al(_c,E)|0)==0):0){i=c[s>>2]|0;if(!i)l=E+12|0;else{h=c[(c[j>>2]|0)+16>>2]|0;l=0;while(1)if((c[h+(l<<4)+12>>2]|0)==(i|0))break;else l=l+1|0;l=h+(l<<4)|0}z=bd(j,0,c[C>>2]|0,c[l>>2]|0)|0;l=c[j>>2]|0;i=c[u>>2]|0;do if(i|0){if(l|0?c[l+480>>2]|0:0){Vi(l,i);break}kd=i+32|0;pd=(c[kd>>2]|0)+-1|0;c[kd>>2]=pd;if(!pd)Vi(l,i)}while(0);c[u>>2]=z;Na:do if(z|0){pd=z+32|0;c[pd>>2]=(c[pd>>2]|0)+1;Oa:do if(a[E+45>>0]&2){o=c[E+72>>2]|0;l=c[z+8>>2]|0;Pa:do if(l|0){p=d[208+(d[o>>0]|0)>>0]|0;while(1){h=c[l>>2]|0;pd=a[h>>0]|0;i=(d[208+(pd&255)>>0]|0)-p|0;if(!(pd<<24>>24==0|(i|0)!=0)){n=o;do{h=h+1|0;n=n+1|0;pd=a[h>>0]|0;i=(d[208+(pd&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(pd<<24>>24==0|(i|0)!=0))}if(!i)break;l=c[l+20>>2]|0;if(!l)break Pa}c[E+76>>2]=l;break Oa}while(0);c[Ec>>2]=o;c[Ec+4>>2]=0;cd(j,41107,Ec);a[j+17>>0]=1;break Na}while(0);if(c[z+56>>2]|0){cd(j,46197,Fc);rd=2387;break Ka}w=qj(N,m)|0;if(!w){rd=2387;break Ka}Qa:do if(!(vk(j,w)|0)){u=j+200|0;t=a[u>>0]|0;s=(t&255)>1;do if(!s){n=c[(c[N+16>>2]|0)+(A<<4)+12>>2]|0;o=c[n+52>>2]|0;if(!o){i=n+44|0;l=n+48|0}else{i=a[w>>0]|0;if(!(i<<24>>24))l=0;else{l=0;h=w;do{h=h+1|0;l=G(l+(d[208+(i&255)>>0]|0)|0,-1640531535)|0;i=a[h>>0]|0}while(i<<24>>24!=0)}l=(l>>>0)%((c[n+40>>2]|0)>>>0)|0;i=o+(l<<3)|0;l=o+(l<<3)+4|0}i=c[i>>2]|0;Ra:do if(!i)l=59292;else{p=d[208+(d[w>>0]|0)>>0]|0;while(1){l=c[l>>2]|0;i=i+-1|0;n=c[l+12>>2]|0;pd=a[n>>0]|0;h=(d[208+(pd&255)>>0]|0)-p|0;if(!(pd<<24>>24==0|(h|0)!=0)){o=w;do{n=n+1|0;o=o+1|0;pd=a[n>>0]|0;h=(d[208+(pd&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(pd<<24>>24==0|(h|0)!=0))}if(!h)break Ra;if(!i){l=59292;break}}}while(0);if(!(c[l+8>>2]|0))break;if(!v){c[Yc>>2]=m;cd(j,46238,Yc);rd=2378;break Qa}h=c[j+116>>2]|0;h=(h|0)==0?j:h;m=h+84|0;i=c[m>>2]|0;l=1<>2]=i|l;if(!Zc){rd=2378;break Qa}q=c[h>>2]|0;l=q+16|0;if(c[(c[l>>2]|0)+20>>2]|0){rd=2378;break Qa}if(a[h+199>>0]|0){rd=2378;break Qa}m=Pe(c[q>>2]|0,0,q,qd,0,542)|0;if(m|0){cd(h,32157,$c);c[h+12>>2]=m;rd=2378;break Qa}qd=c[qd>>2]|0;c[(c[l>>2]|0)+20>>2]=qd;l=c[q+92>>2]|0;h=c[qd+4>>2]|0;c[h+4>>2]=c[qd>>2];do if(!(b[h+22>>1]&2)){n=h+32|0;o=h+36|0;p=(c[n>>2]|0)-(c[o>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[n>>2]=l;i=h+80|0;l=c[i>>2]|0;if(!l)break;m=l+-4|0;c[i>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;qd=(c[14820]|0)+1|0;c[14820]=qd;c[14821]=(qd|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;rd=2270;break}else{l=Wa[c[29352>>2]&127](m)|0;rd=2270}while(0);do if((rd|0)==2270){c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{rd=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[i>>2]=0}while(0);rd=Se(c[h>>2]|0,n,p)|0;c[o>>2]=(c[n>>2]|0)-(p&65535);if((rd|0)!=7)break;l=q+81|0;do if(!(a[l>>0]|0)){if(a[q+82>>0]|0)break;a[l>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;l=q+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[q+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);rd=2378;break Qa}while(0);rd=2378;break Qa}while(0);r=c[z>>2]|0;do if(r|0){l=a[r>>0]|0;Sa:do if(!(l<<24>>24)){l=39441;rd=2285}else{qd=l&255;l=208+qd|0;do if((qd|32|0)==115){l=a[r+1>>0]|0;if(!(l<<24>>24)){l=39442;rd=2285;break Sa}l=l&255;if((l|32|0)!=113){m=113;l=208+l|0;break}l=a[r+2>>0]|0;if(!(l<<24>>24)){l=39443;rd=2285;break Sa}l=l&255;if((l|32|0)!=108){m=108;l=208+l|0;break}l=a[r+3>>0]|0;if(!(l<<24>>24)){l=39444;rd=2285;break Sa}l=l&255;if((l|32|0)!=105){m=105;l=208+l|0;break}l=a[r+4>>0]|0;if(!(l<<24>>24)){l=39445;rd=2285;break Sa}l=l&255;if((l|32|0)!=116){m=116;l=208+l|0;break}l=a[r+5>>0]|0;if(!(l<<24>>24)){l=39446;rd=2285;break Sa}l=l&255;if((l|32|0)!=101){m=101;l=208+l|0;break}l=a[r+6>>0]|0;if(!(l<<24>>24)){l=39447;rd=2285;break Sa}if(l<<24>>24==95)break Sa;else{m=95;l=208+(l&255)|0}}else m=115;while(0);fd=d[l>>0]|0;ad=m;rd=2289}while(0);if((rd|0)==2285){fd=0;ad=a[208+(d[l>>0]|0)>>0]|0;rd=2289}if((rd|0)==2289?(fd|0)!=(ad&255|0):0)break;cd(j,46264,gd);rd=2378;break Qa}while(0);l=c[z+12>>2]|0;if((y|0)!=65&(l|0)!=0){c[id>>2]=(y|0)==33?46339:46346;c[id+4>>2]=E;c[id+8>>2]=0;cd(j,46302,id);rd=2378;break}q=(y|0)==65;if(q&(l|0)==0){c[jd>>2]=E;c[jd+4>>2]=0;cd(j,46352,jd);rd=2378;break}do if(s){h=q?33:y;if(N|0){rd=2319;break}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](36)|0;i=1;l=h;rd=2341;break}l=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;i=59064;m=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&m>>>0>0){qd=c[14978]|0;pd=Tv(m|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}m=Wa[c[29340>>2]&127](l)|0;if(!m)break Qa;l=Wa[c[29352>>2]&127](m)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0){q=m;i=1;break}c[14987]=l;q=m;i=1}else{m=c[z+72>>2]|0;i=c[N+16>>2]|0;if(!m)l=-1e6;else{l=0;while(1)if((c[i+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0}p=c[i+(l<<4)>>2]|0;if(x)n=c[i+16>>2]|0;else n=p;o=(l|0)==1;h=x|o?5:7;i=c[j>>2]|0;l=a[i+165>>0]|0;do if(!((l|t)<<24>>24)){m=c[i+312>>2]|0;if(!m)break;l=$a[m&127](c[i+316>>2]|0,h,w,r,n,c[j+240>>2]|0)|0;if((l|0)==1){cd(j,39216,ld);c[j+12>>2]=23;rd=2378;break Qa}if((l|2|0)!=2){cd(j,39231,md);c[j+12>>2]=1;rd=2378;break Qa}if(l|0){rd=2378;break Qa}i=c[j>>2]|0;l=a[i+165>>0]|0}while(0);m=o?34855:34585;do if(!(l<<24>>24)){if(a[u>>0]|0)break;l=c[i+312>>2]|0;if(!l)break;l=$a[l&127](c[i+316>>2]|0,18,m,0,p,c[j+240>>2]|0)|0;if((l|0)==1){cd(j,39216,nd);c[j+12>>2]=23;rd=2378;break Qa}if((l|2|0)==2)if(!l)break;else{rd=2378;break Qa}else{cd(j,39231,od);c[j+12>>2]=1;rd=2378;break Qa}}while(0);h=q?33:y;rd=2319}while(0);Ta:do if((rd|0)==2319){if(c[N+272>>2]|0){if(a[B>>0]|0){rd=2379;break Qa}}else{do if((e[N+276>>1]|0)>=36){l=N+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];i=N+284|0;c[i>>2]=(c[i>>2]|0)+1;i=0;l=h;rd=2341;break Ta}l=N+296|0;m=c[l>>2]|0;if(!m){l=N+292|0;break}else{c[l>>2]=c[m>>2];i=N+284|0;c[i>>2]=(c[i>>2]|0)+1;i=0;l=h;rd=2341;break Ta}}else l=N+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}m=_d(N,36,0)|0;i=0;l=h;rd=2341}while(0);if((rd|0)==2341)if(!m){rd=2378;break}else{q=m;h=l}p=q+4|0;I=p;J=I+32|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[q>>2]=w;n=c[C>>2]|0;Ua:do if(!n)i=0;else{o=(Eu(n)|0)+1|0;Va:do if(i){qd=Sv(o|0,0,-1,-1)|0;pd=L()|0;if(pd>>>0>0|(pd|0)==0&qd>>>0>2147483390){i=0;break Ua}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](o)|0;rd=2367;break}l=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;i=59064;m=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&m>>>0>0){qd=c[14978]|0;pd=Tv(m|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){i=0;break Ua}m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[N+272>>2]|0){if(a[B>>0]|0){i=0;break Ua}}else{do if(!(0<0|(0==0?(e[N+276>>1]|0)>>>0>>0:0))){m=N+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];rd=N+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=2367;break Va}m=N+296|0;l=c[m>>2]|0;if(!l){l=N+292|0;break}else{c[m>>2]=c[l>>2];rd=N+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=2367;break Va}}else l=N+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(N,o,0)|0;rd=2367}while(0);if((rd|0)==2367)if(!l){i=0;break}ew(l|0,n|0,o|0)|0;i=l}while(0);c[p>>2]=i;c[q+20>>2]=c[(c[N+16>>2]|0)+(A<<4)+12>>2];c[q+24>>2]=c[z+72>>2];a[q+8>>0]=D;a[q+9>>0]=(h|0)==33?1:2;Wa:do if((d[u>>0]|0)>1){m=c[C>>2]|0;l=c[j+272>>2]|0;if(!l){m=0;l=F;break}while(1){if((c[l>>2]|0)==(m|0))break;l=c[l+12>>2]|0;if(!l){m=0;l=F;break Wa}}c[l>>2]=i;m=0;l=F}else{if(!F){m=F;l=0;break}m=F;l=dk(N,F,1,0)|0}while(0);c[q+12>>2]=l;c[q+16>>2]=k;c[j+236>>2]=q;qi(N,E);l=q;k=m;r=q;break Ka}else rd=2378;while(0);if((rd|0)==2378?N|0:0)rd=2379;do if((rd|0)==2379){if(c[N+480>>2]|0){Xd(N,w);rd=2387;break Ka}l=w;if((c[N+304>>2]|0)>>>0>l>>>0)break;if((c[N+308>>2]|0)>>>0<=l>>>0)break;rd=N+300|0;c[w>>2]=c[rd>>2];c[rd>>2]=w;rd=2387;break Ka}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](w);rd=2387;break Ka}else{rd=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w);rd=2387;break Ka}}while(0);if((a[N+164>>0]|0)==1){rd=N+166|0;a[rd>>0]=a[rd>>0]|1;rd=2387}else rd=2387}else rd=2387}else rd=2387}while(0);do if((rd|0)==2387){qi(N,E);if(k){p=k+4|0;l=c[k>>2]|0;Xa:do if((c[p>>2]|0)>0){i=N+480|0;h=N+304|0;n=N+308|0;o=N+300|0;if(!N){m=0;while(1){l=c[l+(m<<3)>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);m=m+1|0;l=c[k>>2]|0;if((m|0)>=(c[p>>2]|0))break Xa}}m=0;do{l=c[l+(m<<3)>>2]|0;do if(l|0){if(c[i>>2]|0){Xd(N,l);break}rd=l;if((c[h>>2]|0)>>>0<=rd>>>0?(c[n>>2]|0)>>>0>rd>>>0:0){c[l>>2]=c[o>>2];c[o>>2]=l;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);m=m+1|0;l=c[k>>2]|0}while((m|0)<(c[p>>2]|0))}while(0);Ya:do if(l){do if(N|0){m=N+480|0;if(!(c[m>>2]|0)){i=l;if((c[N+304>>2]|0)>>>0>i>>>0)break;if((c[N+308>>2]|0)>>>0<=i>>>0)break;rd=N+300|0;c[l>>2]=c[rd>>2];c[rd>>2]=l}else Xd(N,l);l=m;rd=2420;break Ya}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);rd=2418;break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);rd=2418;break}}else rd=2418;while(0);if((rd|0)==2418)if(N){l=N+480|0;rd=2420}if((rd|0)==2420){if(c[l>>2]|0){Xd(N,k);l=0;k=F;r=0;break}rd=k;if((c[N+304>>2]|0)>>>0<=rd>>>0?(c[N+308>>2]|0)>>>0>rd>>>0:0){l=N+300|0;c[k>>2]=c[l>>2];c[l>>2]=k;l=0;k=F;r=0;break}}if(k)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);l=0;k=F;r=0;break}else{l=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);l=0;k=F;r=0;break}else{l=0;k=F;r=0}}else{l=0;k=F;r=0}}while(0);if(k|0)ni(N,k);do if(!((l|0)==0|(c[j+236>>2]|0)!=0)){Xi(N,c[l+28>>2]|0);k=c[l>>2]|0;do if(k|0){if(N|0){if(c[N+480>>2]|0){Xd(N,k);break}j=k;if((c[N+304>>2]|0)>>>0<=j>>>0?(c[N+308>>2]|0)>>>0>j>>>0:0){j=N+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);k=c[l+4>>2]|0;do if(k|0){if(N|0){if(c[N+480>>2]|0){Xd(N,k);break}j=k;if((c[N+304>>2]|0)>>>0<=j>>>0?(c[N+308>>2]|0)>>>0>j>>>0:0){j=N+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);k=c[l+12>>2]|0;if(k|0)ni(N,k);k=c[l+16>>2]|0;do if(k|0){q=k+4|0;l=c[k>>2]|0;Za:do if((c[q>>2]|0)>0){h=N+480|0;n=N+304|0;o=N+308|0;p=N+300|0;if(!N){m=0;while(1){l=c[l+(m<<3)>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);m=m+1|0;l=c[k>>2]|0;if((m|0)>=(c[q>>2]|0))break Za}}i=0;do{l=c[l+(i<<3)>>2]|0;_a:do if(l|0){if(c[h>>2]|0){Xd(N,l);break}m=l;do if((c[n>>2]|0)>>>0<=m>>>0){if((c[o>>2]|0)>>>0<=m>>>0)break;c[l>>2]=c[p>>2];c[p>>2]=l;break _a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);i=i+1|0;l=c[k>>2]|0}while((i|0)<(c[q>>2]|0))}while(0);$a:do if(l){do if(N|0){m=N+480|0;if(!(c[m>>2]|0)){i=l;if((c[N+304>>2]|0)>>>0>i>>>0)break;if((c[N+308>>2]|0)>>>0<=i>>>0)break;j=N+300|0;c[l>>2]=c[j>>2];c[j>>2]=l}else Xd(N,l);l=m;rd=2487;break $a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);rd=2485;break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);rd=2485;break}}else rd=2485;while(0);if((rd|0)==2485)if(N){l=N+480|0;rd=2487}if((rd|0)==2487){if(c[l>>2]|0){Xd(N,k);break}j=k;if((c[N+304>>2]|0)>>>0<=j>>>0?(c[N+308>>2]|0)>>>0>j>>>0:0){j=N+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);if(r|0){if(N|0){if(c[N+480>>2]|0){Xd(N,r);break}j=r;if((c[N+304>>2]|0)>>>0<=j>>>0?(c[N+308>>2]|0)>>>0>j>>>0:0){j=N+300|0;c[r>>2]=c[j>>2];c[j>>2]=r;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{j=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}}while(0);if(!(c[O>>2]|0)){qd=H;rd=c[qd+4>>2]|0;j=M;c[j>>2]=c[qd>>2];c[j+4>>2]=rd;break a}else{qd=K;rd=c[qd+4>>2]|0;j=M;c[j>>2]=c[qd>>2];c[j+4>>2]=rd;break a}}case 242:{c[td+4>>2]=e[td+2>>1];break}case 243:{c[td+-8>>2]=65;break}case 244:{c[td+16>>2]=33;break}case 246:case 245:{c[td+4>>2]=e[td+2>>1];c[td+8>>2]=0;break}case 247:{c[td+-20>>2]=122;c[td+-16>>2]=c[td+4>>2];break}case 315:case 267:case 248:{c[td+16>>2]=0;break}case 268:case 249:{c[td+-8>>2]=c[td+4>>2];break}case 250:{rd=td+-8|0;j=td+-20|0;c[(c[(c[j>>2]|0)+40>>2]|0)+36>>2]=c[rd>>2];c[(c[j>>2]|0)+40>>2]=c[rd>>2];break}case 251:{j=c[td+-8>>2]|0;c[j+40>>2]=j;break}case 252:{pd=td+4|0;qd=c[pd+4>>2]|0;rd=td+-20|0;c[rd>>2]=c[pd>>2];c[rd+4>>2]=qd;cd(j,38526,i);break}case 253:{cd(j,38621,n);break}case 254:{cd(j,38705,o);break}case 255:{l=c[td+-20>>2]|0;m=c[td+-8>>2]|0;i=c[td+-68>>2]&255;h=td+-80|0;n=c[j>>2]|0;o=an(j,122,td+-56|0,c[h>>2]|0,c[td+4>>2]|0)|0;if(!o)k=m;else{if((d[j+200>>0]|0)<=1){j=gk(n,l,1)|0;c[o+20>>2]=j;if(!m){k=m;m=0}else{k=m;m=dk(n,m,1,0)|0}}else{c[o+20>>2]=l;l=0;k=0}c[o+16>>2]=m;a[o+1>>0]=i}if(l|0)ri(n,l);if(k|0)ni(n,k);c[h>>2]=o;break}case 256:{q=c[td+-32>>2]|0;l=c[td+-20>>2]|0;m=c[td+-68>>2]&255;r=c[td+-8>>2]|0;s=td+-80|0;t=c[j>>2]|0;u=an(j,120,td+-44|0,c[s>>2]|0,c[td+4>>2]|0)|0;do if(!u){do if(q|0){p=q+4|0;k=c[q>>2]|0;ab:do if((c[p>>2]|0)>0){i=t+480|0;h=t+304|0;n=t+308|0;o=t+300|0;if(!t){m=0;while(1){k=c[k+(m<<3)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);m=m+1|0;k=c[q>>2]|0;if((m|0)>=(c[p>>2]|0))break ab}}m=0;do{k=c[k+(m<<3)>>2]|0;do if(k|0){if(c[i>>2]|0){Xd(t,k);break}j=k;if((c[h>>2]|0)>>>0<=j>>>0?(c[n>>2]|0)>>>0>j>>>0:0){c[k>>2]=c[o>>2];c[o>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);m=m+1|0;k=c[q>>2]|0}while((m|0)<(c[p>>2]|0))}while(0);bb:do if(k){do if(t|0){m=t+480|0;if(!(c[m>>2]|0)){i=k;if((c[t+304>>2]|0)>>>0>i>>>0)break;if((c[t+308>>2]|0)>>>0<=i>>>0)break;j=t+300|0;c[k>>2]=c[j>>2];c[j>>2]=k}else Xd(t,k);k=q;rd=2569;break bb}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);rd=2567;break}else{rd=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);rd=2567;break}}else rd=2567;while(0);if((rd|0)==2567)if(!t)k=q;else{m=t+480|0;k=q;rd=2569}if((rd|0)==2569){if(c[m>>2]|0){Xd(t,k);break}j=k;if((c[t+304>>2]|0)>>>0<=j>>>0?(c[t+308>>2]|0)>>>0>j>>>0:0){j=t+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}}if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);if(r){k=c[r>>2]|0;if(k|0)ri(t,k);k=c[r+4>>2]|0;if(k|0)ni(t,k);k=c[r+8>>2]|0;if(k|0)ri(t,k);k=c[r+12>>2]|0;if(k|0)ni(t,k);if(t|0){if(c[t+480>>2]|0){Xd(t,r);k=l;break}j=r;if((c[t+304>>2]|0)>>>0<=j>>>0?(c[t+308>>2]|0)>>>0>j>>>0:0){k=t+300|0;c[r>>2]=c[k>>2];c[k>>2]=r;k=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);k=l;break}else{k=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);k=l;break}}else k=l}else{if((d[j+200>>0]|0)>1)k=0;else{k=l;l=fk(t,l,1)|0}c[u+8>>2]=l;c[u+24>>2]=q;c[u+28>>2]=r;a[u+1>>0]=m}while(0);if(k|0)pi(t,k,1);c[s>>2]=u;break}case 257:{l=c[td+-8>>2]|0;m=td+-56|0;i=c[j>>2]|0;h=an(j,121,td+-32|0,c[m>>2]|0,c[td+4>>2]|0)|0;if(!h)k=l;else{if((d[j+200>>0]|0)<=1)if(!l){k=l;l=0}else{k=l;l=dk(i,l,1,0)|0}else k=0;c[h+16>>2]=l;a[h+1>>0]=11}if(k|0)ni(i,k);c[m>>2]=h;break}case 258:{p=c[j>>2]|0;i=c[td+-8>>2]|0;q=td+-20|0;o=c[q>>2]|0;h=c[td+4>>2]|0;cb:do if(!p){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](44)|0;rd=2630;break}k=Wa[c[29356>>2]&127](44)|0;if((c[14985]|0)>>>0<44)c[14985]=44;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){j=c[14978]|0;rd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;qd=L()|0;c[14768]=((qd|0)<0|(qd|0)==0&rd>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0){c[14987]=l;rd=2633}else rd=2633}else rd=2631}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){rd=2631;break}}else{do if((e[p+276>>1]|0)>=44){l=p+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=p+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=2630;break cb}l=p+296|0;k=c[l>>2]|0;if(!k){k=p+292|0;break}else{c[l>>2]=c[k>>2];rd=p+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=2630;break cb}}else k=p+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(p,44,0)|0;rd=2630}while(0);if((rd|0)==2630)if(!k)rd=2631;else rd=2633;if((rd|0)==2631)if(!i)k=0;else{pi(p,i,1);k=0}else if((rd|0)==2633){I=k+2|0;J=I+42|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));a[k>>0]=-125;c[k+8>>2]=i;a[k+1>>0]=11;while(1)if(!(a[880+(d[o>>0]|0)>>0]&1))break;else o=o+1|0;l=h-o|0;db:do if((l|0)<=0)if(!o)l=0;else{m=l;rd=2640}else while(1){m=l+-1|0;if(!(a[880+(d[o+m>>0]|0)>>0]&1)){m=l;rd=2640;break db}if((l|0)>1)l=m;else{rd=2640;break}}while(0);eb:do if((rd|0)==2640){h=Sv(m|0,((m|0)<0)<<31>>31|0,1,0)|0;n=L()|0;fb:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))rd=2650;else{l=0;break eb}else{do if(!(n>>>0>0|((n|0)==0?h>>>0>(e[p+276>>1]|0)>>>0:0))){i=p+300|0;l=c[i>>2]|0;if(l|0){c[i>>2]=c[l>>2];j=p+284|0;c[j>>2]=(c[j>>2]|0)+1;break fb}i=p+296|0;l=c[i>>2]|0;if(!l){l=p+292|0;break}else{c[i>>2]=c[l>>2];j=p+284|0;c[j>>2]=(c[j>>2]|0)+1;break fb}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;rd=2650}while(0);if((rd|0)==2650)l=_d(p,h,n)|0;if(l){ew(l|0,o|0,m|0)|0;a[l+m>>0]=0;m=a[l>>0]|0;if(m<<24>>24){h=0;i=l;do{if(a[880+(m&255)>>0]&1)a[i>>0]=32;h=h+1|0;i=l+h|0;m=a[i>>0]|0}while(m<<24>>24!=0)}}else l=0}while(0);c[k+32>>2]=l}c[q>>2]=k;break}case 259:{k=ej(j,71,0,0)|0;c[td+-32>>2]=k;if(k|0)a[k+1>>0]=4;break}case 260:{k=oj(c[j>>2]|0,71,td+-8|0,1)|0;c[td+-56>>2]=k;if(k|0)a[k+1>>0]=c[td+-32>>2];break}case 261:{c[td+4>>2]=1;break}case 263:{c[td+4>>2]=3;break}case 264:{v=c[td+4>>2]|0;u=c[td+-8>>2]|0;w=c[j>>2]|0;gb:do if(!(a[w+81>>0]|0)){hb:do if(!(a[w+165>>0]|0)){i=j+4|0;h=w+24|0;n=(c[h>>2]&1|0)==0;o=w+16|0;qd=c[(c[o>>2]|0)+12>>2]|0;a[w+78>>0]=a[qd+77>>0]|0;if((b[qd+78>>1]&1)==0?(Da=eh(w,0,i,0)|0,(Da|0)!=0):0)k=Da;else rd=2670;ib:do if((rd|0)==2670){k=w+20|0;l=c[k>>2]|0;if((l|0)>1)do{m=l;l=l+-1|0;if((b[(c[(c[o>>2]|0)+(l<<4)+12>>2]|0)+78>>1]&1)==0?(Sa=eh(w,l,i,0)|0,Sa|0):0){k=Sa;break ib}}while((m|0)>2);if(n)c[h>>2]=c[h>>2]&-2;if(!(a[w+89>>0]|0))break hb;c[h>>2]=c[h>>2]|16;break hb}while(0);c[j+12>>2]=k;j=j+36|0;c[j>>2]=(c[j>>2]|0)+1;break gb}else k=w+20|0;while(0);t=c[v+12>>2]|0;s=c[v+16>>2]|0;q=c[k>>2]|0;if((q|0)>0){r=(t|0)==0;p=c[w+16>>2]|0;k=0;o=0;do{h=o^o>>>0<2;if(!r){m=c[p+(h<<4)>>2]|0;qd=a[m>>0]|0;l=(d[208+(qd&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!(qd<<24>>24==0|(l|0)!=0)){i=t;do{m=m+1|0;i=i+1|0;qd=a[m>>0]|0;l=(d[208+(qd&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(qd<<24>>24==0|(l|0)!=0))}if(!l)rd=2687}else rd=2687;if((rd|0)==2687){rd=0;i=c[p+(h<<4)+12>>2]|0;h=c[i+52>>2]|0;if(!h){l=i+44|0;k=i+48|0}else{l=a[s>>0]|0;if(!(l<<24>>24))k=0;else{k=0;m=s;do{m=m+1|0;k=G(k+(d[208+(l&255)>>0]|0)|0,-1640531535)|0;l=a[m>>0]|0}while(l<<24>>24!=0)}k=(k>>>0)%((c[i+40>>2]|0)>>>0)|0;l=h+(k<<3)|0;k=h+(k<<3)+4|0}l=c[l>>2]|0;jb:do if(!l)k=59292;else{n=d[208+(d[s>>0]|0)>>0]|0;while(1){k=c[k>>2]|0;l=l+-1|0;i=c[k+12>>2]|0;qd=a[i>>0]|0;m=(d[208+(qd&255)>>0]|0)-n|0;if(!(qd<<24>>24==0|(m|0)!=0)){h=s;do{i=i+1|0;h=h+1|0;qd=a[i>>0]|0;m=(d[208+(qd&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(qd<<24>>24==0|(m|0)!=0))}if(!m)break jb;if(!l){k=59292;break}}}while(0);k=c[k+8>>2]|0;if(k){rd=2702;break}}o=o+1|0}while((o|0)<(q|0));if(k|0){jl(j,k);break}}if(!u){c[qc>>2]=v;c[qc+4>>2]=0;cd(j,46398,qc)}else hl(j,t);a[j+17>>0]=1}while(0);qi(w,v);break}case 265:{rd=c[td+-32>>2]|0;cn(j,24,30104,rd,rd,c[td+-8>>2]|0,c[td+4>>2]|0);break}case 266:{rd=c[td+4>>2]|0;cn(j,25,30144,rd,0,0,rd);break}case 269:{m=c[j>>2]|0;kb:do if(!(a[m+165>>0]|0)){i=j+4|0;h=m+24|0;n=(c[h>>2]&1|0)==0;o=m+16|0;pd=c[(c[o>>2]|0)+12>>2]|0;a[m+78>>0]=a[pd+77>>0]|0;if((b[pd+78>>1]&1)==0?(ga=eh(m,0,i,0)|0,(ga|0)!=0):0)k=ga;else rd=2715;lb:do if((rd|0)==2715){k=c[m+20>>2]|0;if((k|0)>1)do{l=k;k=k+-1|0;if((b[(c[(c[o>>2]|0)+(k<<4)+12>>2]|0)+78>>1]&1)==0?(Ga=eh(m,k,i,0)|0,Ga|0):0){k=Ga;break lb}}while((l|0)>2);if(n)c[h>>2]=c[h>>2]&-2;if(!(a[m+89>>0]|0))break kb;c[h>>2]=c[h>>2]|16;break kb}while(0);c[j+12>>2]=k;j=j+36|0;c[j>>2]=(c[j>>2]|0)+1;break a}while(0);k=c[j>>2]|0;w=k+20|0;l=c[w>>2]|0;if((l|0)>0){x=j+116|0;v=0;u=c[k+16>>2]|0;k=l;while(1){l=c[(c[u+12>>2]|0)+16>>2]|0;if(l){do{k=c[l+8>>2]|0;if((c[k+56>>2]|0)==0?(ec=c[k+8>>2]|0,ec|0):0){t=k+72|0;s=ec;do{m=c[t>>2]|0;if(!m)k=-1e6;else{i=c[(c[j>>2]|0)+16>>2]|0;k=0;while(1)if((c[i+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}r=c[x>>2]|0;r=(r|0)==0?j:r;m=r+84|0;i=c[m>>2]|0;q=1<>2]=i|q,(k|0)==1):0)?(fc=c[r>>2]|0,gc=fc+16|0,(c[(c[gc>>2]|0)+20>>2]|0)==0):0)?(a[r+199>>0]|0)==0:0){k=Pe(c[fc>>2]|0,0,fc,qd,0,542)|0;if(k|0){cd(r,32157,cc);c[r+12>>2]=k;break}pd=c[qd>>2]|0;c[(c[gc>>2]|0)+20>>2]=pd;k=c[fc+92>>2]|0;h=c[pd+4>>2]|0;c[h+4>>2]=c[pd>>2];do if(!(b[h+22>>1]&2)){n=h+32|0;o=h+36|0;p=(c[n>>2]|0)-(c[o>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[n>>2]=k;i=h+80|0;k=c[i>>2]|0;if(!k)break;m=k+-4|0;c[i>>2]=m;k=m;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;pd=(c[14820]|0)+1|0;c[14820]=pd;c[14821]=(pd|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](m)|0;rd=2750;break}else{k=Wa[c[29352>>2]&127](m)|0;rd=2750}while(0);do if((rd|0)==2750){rd=0;c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{pd=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-pd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[i>>2]=0}while(0);pd=Se(c[h>>2]|0,n,p)|0;c[o>>2]=(c[n>>2]|0)-(p&65535);if((pd|0)!=7)break;k=fc+81|0;do if(!(a[k>>0]|0)){if(a[fc+82>>0]|0)break;a[k>>0]=1;if((c[fc+180>>2]|0)>0)c[fc+264>>2]=1;k=fc+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[fc+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break mb}while(0)}while(0);pd=r+80|0;c[pd>>2]=c[pd>>2]|q;bl(j,s,-1);s=c[s+20>>2]|0}while((s|0)!=0)}l=c[l>>2]|0}while((l|0)!=0);k=c[w>>2]|0}v=v+1|0;if((v|0)>=(k|0))break;else u=u+16|0}}break}case 270:{l=td+-8|0;s=td+4|0;v=c[j>>2]|0;nb:do if(!(a[v+165>>0]|0)){i=j+4|0;h=v+24|0;n=(c[h>>2]&1|0)==0;o=v+16|0;pd=c[(c[o>>2]|0)+12>>2]|0;a[v+78>>0]=a[pd+77>>0]|0;if((b[pd+78>>1]&1)==0?(Ea=eh(v,0,i,0)|0,(Ea|0)!=0):0)k=Ea;else rd=2770;ob:do if((rd|0)==2770){k=c[v+20>>2]|0;if((k|0)>1)do{m=k;k=k+-1|0;if((b[(c[(c[o>>2]|0)+(k<<4)+12>>2]|0)+78>>1]&1)==0?(Pa=eh(v,k,i,0)|0,Pa|0):0){k=Pa;break ob}}while((m|0)>2);if(n)c[h>>2]=c[h>>2]&-2;if(!(a[v+89>>0]|0))break nb;c[h>>2]=c[h>>2]|16;break nb}while(0);c[j+12>>2]=k;j=j+36|0;c[j>>2]=(c[j>>2]|0)+1;break a}while(0);k=c[j>>2]|0;do if(!(c[s>>2]|0)){q=qj(k,l)|0;if(!q)break a;p=a[v+78>>0]|0;h=c[v+392>>2]|0;if(!h){m=v+384|0;k=v+388|0}else{m=a[q>>0]|0;if(!(m<<24>>24))k=0;else{k=0;i=q;do{i=i+1|0;k=G(k+(d[208+(m&255)>>0]|0)|0,-1640531535)|0;m=a[i>>0]|0}while(m<<24>>24!=0)}k=(k>>>0)%((c[v+380>>2]|0)>>>0)|0;m=h+(k<<3)|0;k=h+(k<<3)+4|0}m=c[m>>2]|0;pb:do if(!m)k=59292;else{o=d[208+(d[q>>0]|0)>>0]|0;while(1){k=c[k>>2]|0;m=m+-1|0;h=c[k+12>>2]|0;pd=a[h>>0]|0;i=(d[208+(pd&255)>>0]|0)-o|0;if(!(pd<<24>>24==0|(i|0)!=0)){n=q;do{h=h+1|0;n=n+1|0;pd=a[h>>0]|0;i=(d[208+(pd&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(pd<<24>>24==0|(i|0)!=0))}if(!i)break pb;if(!m){k=59292;break}}}while(0);pd=c[k+8>>2]|0;if((pd|0)==0|(pd+(((p&255)+-1|0)*20|0)|0)==0){do if(v){if(c[v+480>>2]|0){Xd(v,q);break}pd=q;if((c[v+304>>2]|0)>>>0<=pd>>>0?(c[v+308>>2]|0)>>>0>pd>>>0:0){pd=v+300|0;c[q>>2]=c[pd>>2];c[pd>>2]=q}else rd=2818}else rd=2818;while(0);do if((rd|0)==2818)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{pd=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-pd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);k=c[j>>2]|0;if(!(c[td+8>>2]|0)){m=d[k+164>>0]|0;break}if(a[k+165>>0]|0){cd(j,39404,Vb);break a}k=wk(k,l)|0;if((k|0)>=0){l=s;m=k;break}c[Yb>>2]=l;cd(j,39421,Yb);break a}k=c[j>>2]|0;h=k+20|0;l=c[h>>2]|0;if((l|0)>0){i=0;m=c[k+16>>2]|0;while(1){k=c[(c[m+12>>2]|0)+16>>2]|0;if(!k)k=l;else{do{gn(j,c[k+8>>2]|0,q);k=c[k>>2]|0}while((k|0)!=0);k=c[h>>2]|0}i=i+1|0;if((i|0)>=(k|0))break;else{m=m+16|0;l=k}}}if(v|0){if(c[v+480>>2]|0){Xd(v,q);break a}j=q;if((c[v+304>>2]|0)>>>0<=j>>>0?(c[v+308>>2]|0)>>>0>j>>>0:0){j=v+300|0;c[q>>2]=c[j>>2];c[j>>2]=q;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break a}else{j=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break a}}else{if(!(c[td+8>>2]|0)){m=d[k+164>>0]|0;break}if(a[k+165>>0]|0){cd(j,39404,Qa);break a}k=wk(k,l)|0;if((k|0)<0){c[Va>>2]=l;cd(j,39421,Va);break a}else{l=s;m=k}}while(0);u=qj(v,l)|0;if(u|0){k=c[(c[v+16>>2]|0)+(m<<4)>>2]|0;l=Sd(v,u,k)|0;if(!l){r=hi(v,u,k)|0;do if(!(c[v+480>>2]|0)){pd=u;if((c[v+304>>2]|0)>>>0<=pd>>>0?(c[v+308>>2]|0)>>>0>pd>>>0:0){pd=v+300|0;c[u>>2]=c[pd>>2];c[pd>>2]=u;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{pd=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-pd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}else Xd(v,u);while(0);if(!r){cd(j,46778,dc);break a}q=c[j+116>>2]|0;q=(q|0)==0?j:q;k=q+84|0;l=c[k>>2]|0;p=1<>2]=l|p,(m|0)==1):0)?(xc=c[q>>2]|0,lc=xc+16|0,(c[(c[lc>>2]|0)+20>>2]|0)==0):0)?(a[q+199>>0]|0)==0:0){k=Pe(c[xc>>2]|0,0,xc,qd,0,542)|0;if(k|0){cd(q,32157,jc);c[q+12>>2]=k;break}qd=c[qd>>2]|0;c[(c[lc>>2]|0)+20>>2]=qd;k=c[xc+92>>2]|0;i=c[qd+4>>2]|0;c[i+4>>2]=c[qd>>2];if(!(b[i+22>>1]&2)){h=i+32|0;n=i+36|0;o=(c[h>>2]|0)-(c[n>>2]|0)|0;do if((k+-512|0)>>>0<65025?(k+-1&k|0)==0:0){c[h>>2]=k;m=i+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;qd=(c[14820]|0)+1|0;c[14820]=qd;c[14821]=(qd|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=2903;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=2903}while(0);do if((rd|0)==2903){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{rd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);rd=Se(c[i>>2]|0,h,o)|0;c[n>>2]=(c[h>>2]|0)-(o&65535);if((rd|0)==7){k=xc+81|0;do if(!(a[k>>0]|0)){if(a[xc+82>>0]|0)break;a[k>>0]=1;if((c[xc+180>>2]|0)>0)c[xc+264>>2]=1;k=xc+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[xc+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break}}}while(0);rd=q+80|0;c[rd>>2]=c[rd>>2]|p;bl(j,r,-1);break a}if((c[l+56>>2]|0)==0?(r=c[l+8>>2]|0,(r|0)!=0):0){s=l+72|0;t=j+116|0;do{l=c[s>>2]|0;if(!l)k=-1e6;else{m=c[(c[j>>2]|0)+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0}q=c[t>>2]|0;q=(q|0)==0?j:q;l=q+84|0;m=c[l>>2]|0;p=1<>2]=m|p,(k|0)==1):0)?(Rc=c[q>>2]|0,Sc=Rc+16|0,(c[(c[Sc>>2]|0)+20>>2]|0)==0):0)?(a[q+199>>0]|0)==0:0){k=Pe(c[Rc>>2]|0,0,Rc,qd,0,542)|0;if(k|0){cd(q,32157,Pc);c[q+12>>2]=k;break}pd=c[qd>>2]|0;c[(c[Sc>>2]|0)+20>>2]=pd;k=c[Rc+92>>2]|0;i=c[pd+4>>2]|0;c[i+4>>2]=c[pd>>2];do if(!(b[i+22>>1]&2)){h=i+32|0;n=i+36|0;o=(c[h>>2]|0)-(c[n>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[h>>2]=k;m=i+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;pd=(c[14820]|0)+1|0;c[14820]=pd;c[14821]=(pd|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=2856;break}else{k=Wa[c[29352>>2]&127](l)|0;rd=2856}while(0);do if((rd|0)==2856){rd=0;c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{pd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-pd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);pd=Se(c[i>>2]|0,h,o)|0;c[n>>2]=(c[h>>2]|0)-(o&65535);if((pd|0)!=7)break;k=Rc+81|0;do if(!(a[k>>0]|0)){if(a[Rc+82>>0]|0)break;a[k>>0]=1;if((c[Rc+180>>2]|0)>0)c[Rc+264>>2]=1;k=Rc+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[Rc+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break qb}while(0)}while(0);pd=q+80|0;c[pd>>2]=c[pd>>2]|p;bl(j,r,-1);r=c[r+20>>2]|0}while((r|0)!=0);if(v|0)rd=2871}else rd=2871;if((rd|0)==2871){if(c[v+480>>2]|0){Xd(v,u);break a}j=u;if((c[v+304>>2]|0)>>>0<=j>>>0?(c[v+308>>2]|0)>>>0>j>>>0:0){j=v+300|0;c[u>>2]=c[j>>2];c[j>>2]=u;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break a}else{j=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break a}}break}case 271:{zj(j,0,0);break}case 272:{zj(j,td+-8|0,td+4|0);break}case 273:{w=c[td+-32>>2]|0;i=td+4|0;x=c[j>>2]|0;y=x+24|0;z=c[y>>2]|0;do if(!(a[x+81>>0]|0)){l=c[w+8>>2]|0;if(!l)k=w+12|0;else{m=c[x+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0;k=m+(k<<4)|0}s=bd(j,0,c[w+16>>2]|0,c[k>>2]|0)|0;if(s){l=c[s+72>>2]|0;if(!l)u=-1e6;else{m=c[(c[j>>2]|0)+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){u=k;break}else k=k+1|0}v=c[(c[x+16>>2]|0)+(u<<4)>>2]|0;c[y>>2]=c[y>>2]|2;t=qj(x,i)|0;if(t){rb:do if(!(Sd(x,t,v)|0)){if(hi(x,t,v)|0){c[ib>>2]=t;cd(j,46940,ib);rd=3010;break}if((on(j,s)|0)==0?(vk(j,t)|0)==0:0){l=c[s>>2]|0;if(c[s+12>>2]|0){c[wb>>2]=l;cd(j,46999,wb);rd=3010;break}k=c[j>>2]|0;do if(((a[k+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(Gb=c[k+312>>2]|0,Gb|0):0){k=$a[Gb&127](c[k+316>>2]|0,26,v,l,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,Hb);c[j+12>>2]=23;rd=3010;break rb}if((k|2|0)==2)if(!k)break;else{rd=3010;break rb}else{cd(j,39231,Ib);c[j+12>>2]=1;rd=3010;break rb}}while(0);if(!(Sk(j,s)|0)){if(!(c[s+56>>2]|0))q=0;else{k=c[s+64>>2]|0;sb:do if(!k)k=0;else while(1){if((c[k>>2]|0)==(x|0))break sb;k=c[k+24>>2]|0;if(!k){k=0;break}}while(0);q=(c[(c[c[k+8>>2]>>2]|0)+76>>2]|0)==0?0:k}r=j+8|0;k=c[r>>2]|0;h=j+116|0;tb:do if(!k){i=c[j>>2]|0;do if(!(c[h>>2]|0)){if(b[i+76>>1]&8)break;a[j+23>>0]=1}while(0);ub:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=2968;else break tb;else{do if((e[i+276>>1]|0)>=224){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break ub}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];m=i+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break ub}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=2968}while(0);if((rd|0)==2968)m=_d(i,224,0)|0;if(!m)break;I=m+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[m>>2]=i;k=i+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=j;c[r>>2]=m;Di(m,61,0,1,0)|0;p=m;rd=2973}else{p=k;rd=2973}while(0);vb:do if((rd|0)==2973){h=c[h>>2]|0;a[((h|0)==0?j:h)+21>>0]=1;h=c[s>>2]|0;m=a[h>>0]|0;if((h|0)!=(-1|0)&m<<24>>24!=0){l=h;k=0;do{i=l+1|0;if((m&255)>191){l=i;while(1){m=a[l>>0]|0;if((m&-64)<<24>>24==-128)l=l+1|0;else break}}else{l=i;m=a[i>>0]|0}k=k+1|0}while(m<<24>>24!=0&(l|0)!=(-1|0))}else k=0;n=(u|0)==1;o=n&1;c[tc>>2]=v;c[tc+4>>2]=34585;c[tc+8>>2]=v;c[tc+12>>2]=h;c[tc+16>>2]=t;c[tc+20>>2]=o;c[tc+24>>2]=h;Ak(j,47026,tc);c[uc>>2]=v;c[uc+4>>2]=34585;c[uc+8>>2]=t;c[uc+12>>2]=t;c[uc+16>>2]=t;c[uc+20>>2]=k;c[uc+24>>2]=h;Ak(j,47187,uc);if(Sd(x,39382,v)|0){qd=c[s>>2]|0;c[vc>>2]=v;c[vc+4>>2]=t;c[vc+8>>2]=qd;Ak(j,47464,vc)}if(!n){c[wc>>2]=v;c[wc+4>>2]=h;c[wc+8>>2]=t;c[wc+12>>2]=h;c[wc+16>>2]=v;c[wc+20>>2]=t;Ak(j,47522,wc)}do if(q|0){i=j+44|0;l=(c[i>>2]|0)+1|0;c[i>>2]=l;i=p+108|0;k=c[i>>2]|0;m=p+112|0;if((c[m>>2]|0)>(k|0)){c[i>>2]=k+1;qd=c[p+104>>2]|0;a[qd+(k*20|0)>>0]=110;b[qd+(k*20|0)+2>>1]=0;c[qd+(k*20|0)+4>>2]=0;c[qd+(k*20|0)+8>>2]=l;c[qd+(k*20|0)+12>>2]=0;c[qd+(k*20|0)+16>>2]=0;a[qd+(k*20|0)+1>>0]=0}else k=Di(p,110,0,l,0)|0;if(!(a[(c[p>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[i>>2]|0)+-1|0;Ei(p,(c[p+104>>2]|0)+(k*20|0)|0,t,0)}k=c[i>>2]|0;if((c[m>>2]|0)>(k|0)){c[i>>2]=k+1;qd=c[p+104>>2]|0;a[qd+(k*20|0)>>0]=-91;b[qd+(k*20|0)+2>>1]=0;c[qd+(k*20|0)+4>>2]=l;c[qd+(k*20|0)+8>>2]=0;c[qd+(k*20|0)+12>>2]=0;c[qd+(k*20|0)+16>>2]=0;a[qd+(k*20|0)+1>>0]=0}else k=Di(p,165,l,0,0)|0;if(a[(c[p>>2]|0)+81>>0]|0)break;if((k|0)<0)k=(c[i>>2]|0)+-1|0;l=c[p+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=q;a[m>>0]=-12;qd=q+12|0;c[qd>>2]=(c[qd>>2]|0)+1;break}else{Ei(p,l+(k*20|0)|0,q,-12);break}}while(0);i=c[r>>2]|0;do if(!i){c[Jc>>2]=v;c[Jc+4>>2]=34585;c[Jc+8>>2]=v;c[Jc+12>>2]=o;Ak(j,47804,Jc);if(n)break vb}else{k=(c[c[(c[(c[j>>2]|0)+16>>2]|0)+(u<<4)+12>>2]>>2]|0)+1|0;l=i+108|0;m=c[l>>2]|0;if((c[i+112>>2]|0)>(m|0)){c[l>>2]=m+1;qd=c[i+104>>2]|0;a[qd+(m*20|0)>>0]=95;b[qd+(m*20|0)+2>>1]=0;c[qd+(m*20|0)+4>>2]=u;c[qd+(m*20|0)+8>>2]=1;c[qd+(m*20|0)+12>>2]=k;c[qd+(m*20|0)+16>>2]=0;a[qd+(m*20|0)+1>>0]=0}else Di(i,95,u,1,k)|0;Bk(c[r>>2]|0,u,0);if(n){c[Tc>>2]=v;c[Tc+4>>2]=34585;c[Tc+8>>2]=v;c[Tc+12>>2]=o;Ak(j,47804,Tc);break vb}else{Bk(c[r>>2]|0,1,0);c[Uc>>2]=v;c[Uc+4>>2]=34585;c[Uc+8>>2]=v;c[Uc+12>>2]=o;Ak(j,47804,Uc);break}}while(0);c[Vc>>2]=34585;c[Vc+4>>2]=v;Ak(j,47948,Vc)}while(0);qi(x,w);if(x|0)rd=3013}else rd=3010}else rd=3010}else{c[hb>>2]=t;cd(j,46940,hb);rd=3010}while(0);if((rd|0)==3010){qi(x,w);rd=3013}if((rd|0)==3013){if(c[x+480>>2]|0){Xd(x,t);break}j=t;if((c[x+304>>2]|0)>>>0<=j>>>0?(c[x+308>>2]|0)>>>0>j>>>0:0){j=x+300|0;c[t>>2]=c[j>>2];c[j>>2]=t;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{j=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}else rd=3011}else rd=3011}else rd=3011;while(0);if((rd|0)==3011)qi(x,w);c[y>>2]=z;break}case 274:{h=td+-8|0;o=td+-4|0;c[o>>2]=(c[j+188>>2]|0)-(c[h>>2]|0)+(c[j+192>>2]|0);s=c[j>>2]|0;if((c[j+36>>2]|0)==0?(Nb=s+81|0,(a[Nb>>0]|0)==0):0){r=c[j+228>>2]|0;l=c[r+72>>2]|0;m=c[s+16>>2]|0;if(!l)t=-1e6;else{k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){t=k;break}else k=k+1|0}p=c[m+(t<<4)>>2]|0;q=(c[r>>2]|0)+16|0;m=c[r+4>>2]|0;i=(b[r+42>>1]|0)+-1|0;l=c[m+(i<<4)+4>>2]|0;k=Sd(s,q,p)|0;k=c[k>>2]|0;do if(((a[s+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(db=c[s+312>>2]|0,db|0):0){k=$a[db&127](c[s+316>>2]|0,26,p,k,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,eb);c[j+12>>2]=23;break a}if((k|2|0)==2)if(!k)break;else break a;else{cd(j,39231,fb);c[j+12>>2]=1;break a}}while(0);if(!l)l=0;else l=(a[c[l+12>>2]>>0]|0)==114?0:l;if(a[m+(i<<4)+15>>0]&1){cd(j,48091,jb);break a}if(c[r+8>>2]|0){cd(j,48123,kb);break a}if(!(0==0?(c[s+32>>2]&16384|0)==0:0)?(l|0)!=0&(c[r+16>>2]|0)!=0:0){cd(j,48150,lb);break a}k=(l|0)!=0;if(!(k|(a[m+(i<<4)+12>>0]|0)==0)){cd(j,48209,xb);break a}wb:do if(k){c[qd>>2]=0;do if(!(Wj(s,l,1,65,qd)|0)){m=c[qd>>2]|0;if(!m){cd(j,48262,Ab);break}if(!((b[m+8>>1]&9216)==0?!(c[m+24>>2]|0):0))Cg(m);k=c[m+32>>2]|0;do if(!k)rd=3059;else{if(c[k+480>>2]|0){Xd(k,m);break}l=m;if((c[k+304>>2]|0)>>>0>l>>>0){rd=3059;break}if((c[k+308>>2]|0)>>>0<=l>>>0){rd=3059;break}qd=k+300|0;c[m>>2]=c[qd>>2];c[qd>>2]=m}while(0);do if((rd|0)==3059)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{qd=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-qd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);break wb}while(0);break a}while(0);h=c[h>>2]|0;n=c[o>>2]|0;xb:do if(h|0){m=Sv(n|0,0,1,0)|0;i=L()|0;yb:do if(c[s+272>>2]|0)if(!(a[Nb>>0]|0))rd=3075;else break xb;else{do if(0<0|(0==0?n>>>0<(e[s+276>>1]|0)>>>0:0)){k=s+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];qd=s+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break yb}k=s+296|0;l=c[k>>2]|0;if(!l){k=s+292|0;break}else{c[k>>2]=c[l>>2];qd=s+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break yb}}else k=s+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3075}while(0);if((rd|0)==3075)l=_d(s,m,i)|0;if(l|0){ew(l|0,h|0,n|0)|0;a[l+n>>0]=0;k=(c[o>>2]|0)+-1|0;m=s+24|0;i=c[m>>2]|0;if((k|0)>0){k=l+k|0;do{qd=a[k>>0]|0;if(qd<<24>>24!=59?(a[880+(qd&255)>>0]&1)==0:0)break;a[k>>0]=0;k=k+-1|0}while(k>>>0>l>>>0);k=c[m>>2]|0}else k=i;c[m>>2]=k|2;qd=c[r+52>>2]|0;c[Zb>>2]=p;c[Zb+4>>2]=34585;c[Zb+8>>2]=qd;c[Zb+12>>2]=l;c[Zb+16>>2]=qd+1;c[Zb+20>>2]=q;Ak(j,48308,Zb);zb:do if(!(c[s+480>>2]|0)){k=l;do if((c[s+304>>2]|0)>>>0<=k>>>0){if((c[s+308>>2]|0)>>>0<=k>>>0)break;qd=s+300|0;c[l>>2]=c[qd>>2];c[qd>>2]=l;break zb}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{qd=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-qd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}else Xd(s,l);while(0);c[m>>2]=i}}while(0);p=j+8|0;k=c[p>>2]|0;Ab:do if(!k){m=c[j>>2]|0;if((c[j+116>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[j+23>>0]=1;Bb:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3106;else break Ab;else{do if((e[m+276>>1]|0)>=224){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];qd=m+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break Bb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];qd=m+284|0;c[qd>>2]=(c[qd>>2]|0)+1;break Bb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3106}while(0);if((rd|0)==3106)k=_d(m,224,0)|0;if(k|0){I=k+104|0;J=I+120|0;do{c[I>>2]=0;I=I+4|0}while((I|0)<(J|0));c[k>>2]=m;l=m+4|0;m=c[l>>2]|0;if(m|0)c[m+4>>2]=k;c[k+8>>2]=m;c[k+4>>2]=0;c[l>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=j;c[p>>2]=k;Di(k,61,0,1,0)|0;rd=3111}}else rd=3111;while(0);do if((rd|0)==3111){o=j+19|0;l=a[o>>0]|0;if(!(l<<24>>24)){rd=j+44|0;n=(c[rd>>2]|0)+1|0;c[rd>>2]=n}else{n=l+-1<<24>>24;a[o>>0]=n;n=c[j+148+((n&255)<<2)>>2]|0}i=k+108|0;l=c[i>>2]|0;h=k+112|0;if((c[h>>2]|0)>(l|0)){c[i>>2]=l+1;rd=c[k+104>>2]|0;a[rd+(l*20|0)>>0]=94;b[rd+(l*20|0)+2>>1]=0;c[rd+(l*20|0)+4>>2]=t;c[rd+(l*20|0)+8>>2]=n;c[rd+(l*20|0)+12>>2]=2;c[rd+(l*20|0)+16>>2]=0;a[rd+(l*20|0)+1>>0]=0}else Di(k,94,t,n,2)|0;l=1<>2]=c[rd>>2]|l;if((t|0)!=1?a[(c[(c[(c[k>>2]|0)+16>>2]|0)+(t<<4)+4>>2]|0)+9>>0]|0:0){rd=k+156|0;c[rd>>2]=c[rd>>2]|l}l=c[i>>2]|0;if((c[h>>2]|0)>(l|0)){c[i>>2]=l+1;rd=c[k+104>>2]|0;a[rd+(l*20|0)>>0]=83;b[rd+(l*20|0)+2>>1]=0;c[rd+(l*20|0)+4>>2]=n;c[rd+(l*20|0)+8>>2]=-2;c[rd+(l*20|0)+12>>2]=0;c[rd+(l*20|0)+16>>2]=0;a[rd+(l*20|0)+1>>0]=0}else Di(k,83,n,-2,0)|0;l=c[i>>2]|0;m=l+2|0;if((c[h>>2]|0)>(l|0)){c[i>>2]=l+1;rd=c[k+104>>2]|0;a[rd+(l*20|0)>>0]=47;b[rd+(l*20|0)+2>>1]=0;c[rd+(l*20|0)+4>>2]=n;c[rd+(l*20|0)+8>>2]=m;c[rd+(l*20|0)+12>>2]=0;c[rd+(l*20|0)+16>>2]=0;a[rd+(l*20|0)+1>>0]=0}else Di(k,47,n,m,0)|0;l=c[i>>2]|0;if((c[h>>2]|0)>(l|0)){c[i>>2]=l+1;rd=c[k+104>>2]|0;a[rd+(l*20|0)>>0]=95;b[rd+(l*20|0)+2>>1]=0;c[rd+(l*20|0)+4>>2]=t;c[rd+(l*20|0)+8>>2]=2;c[rd+(l*20|0)+12>>2]=3;c[rd+(l*20|0)+16>>2]=0;a[rd+(l*20|0)+1>>0]=0}else Di(k,95,t,2,3)|0;if(!n)break;k=a[o>>0]|0;if((k&255)>=8)break;a[o>>0]=k+1<<24>>24;c[j+148+((k&255)<<2)>>2]=n}while(0);i=c[p>>2]|0;if(i|0){k=(c[c[(c[(c[j>>2]|0)+16>>2]|0)+(t<<4)+12>>2]>>2]|0)+1|0;l=i+108|0;m=c[l>>2]|0;if((c[i+112>>2]|0)>(m|0)){c[l>>2]=m+1;j=c[i+104>>2]|0;a[j+(m*20|0)>>0]=95;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=t;c[j+(m*20|0)+8>>2]=1;c[j+(m*20|0)+12>>2]=k;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0}else Di(i,95,t,1,k)|0;Bk(c[p>>2]|0,t,0);if((t|0)!=1)Bk(c[p>>2]|0,1,0)}}break}case 275:{D=j+24|0;a[D>>0]=(a[D>>0]|0)+1<<24>>24;D=c[j>>2]|0;E=D+272|0;c[E>>2]=(c[E>>2]|0)+1;F=c[td+4>>2]|0;H=D+81|0;Cb:do if(!(a[H>>0]|0)){l=c[F+8>>2]|0;if(!l)k=F+12|0;else{m=c[D+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0;k=m+(k<<4)|0}C=bd(j,0,c[F+16>>2]|0,c[k>>2]|0)|0;if(C|0){if(c[C+56>>2]|0){cd(j,48417,Ia);break}if(c[C+12>>2]|0){cd(j,48451,Ja);break}if(!(on(j,C)|0)){l=c[C+72>>2]|0;if(!l)A=-1e6;else{m=c[D+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){A=k;break}else k=k+1|0}B=(D|0)==0;Db:do if(B){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](80)|0;rd=3176;break}k=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break Cb;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[E>>2]|0){if(a[H>>0]|0)break Cb}else{do if((e[D+276>>1]|0)>=80){l=D+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=D+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3176;break Db}l=D+296|0;k=c[l>>2]|0;if(!k){k=D+292|0;break}else{c[l>>2]=c[k>>2];rd=D+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3176;break Db}}else k=D+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(D,80,0)|0;rd=3176}while(0);if((rd|0)==3176)if(!k)break;I=k;J=I+80|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));c[j+228>>2]=k;y=k+32|0;c[y>>2]=1;h=b[C+42>>1]|0;z=k+42|0;b[z>>1]=h;h=((((h<<16>>16)+-1|0)/8|0)<<7)+128|0;Eb:do if(B){j=Sv(h|0,0,-1,-1)|0;qd=L()|0;if(!(qd>>>0>0|(qd|0)==0&j>>>0>2147483390)){if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](h)|0;rd=3201;break}l=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;i=59064;m=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&m>>>0>0){j=c[14978]|0;qd=Tv(m|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;pd=L()|0;c[14768]=((pd|0)<0|(pd|0)==0&qd>>>0<=j>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(l){m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0){c[14987]=m;rd=3202}else rd=3202}else l=0}else l=0}else{if(c[E>>2]|0){if(a[H>>0]|0){l=0;break}}else{do if(!(0<0|(0==0?(e[D+276>>1]|0)>>>0>>0:0))){m=D+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];rd=D+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3201;break Eb}m=D+296|0;l=c[m>>2]|0;if(!l){l=D+292|0;break}else{c[m>>2]=c[l>>2];rd=D+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3201;break Eb}}else l=D+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(D,h,0)|0;rd=3201}while(0);if((rd|0)==3201)if(!l)l=0;else rd=3202;if((rd|0)==3202)gw(l|0,0,h|0)|0;x=k+4|0;c[x>>2]=l;c[kc>>2]=c[C>>2];j=dd(D,48481,kc)|0;c[k>>2]=j;l=c[x>>2]|0;if(!((j|0)==0|(l|0)==0)){ew(l|0,c[C+4>>2]|0,b[z>>1]<<4|0)|0;if((b[z>>1]|0)>0){p=D+276|0;q=D+288|0;r=D+300|0;s=D+296|0;t=D+284|0;u=D+292|0;o=0;do{v=c[x>>2]|0;w=v+(o<<4)|0;h=c[w>>2]|0;Fb:do if(!h)l=0;else{n=(Eu(h)|0)+1|0;Gb:do if(B){j=Sv(n|0,0,-1,-1)|0;qd=L()|0;if(qd>>>0>0|(qd|0)==0&j>>>0>2147483390){l=0;break Fb}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](n)|0;rd=3229;break}l=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;i=59064;m=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&m>>>0>0){j=c[14978]|0;qd=Tv(m|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;pd=L()|0;c[14768]=((pd|0)<0|(pd|0)==0&qd>>>0<=j>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break Fb}m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[E>>2]|0){if(a[H>>0]|0){l=0;break Fb}}else{do if(0<0|(0==0?(e[p>>1]|0)>>>0>>0:0))l=q;else{l=c[r>>2]|0;if(l|0){c[r>>2]=c[l>>2];c[t>>2]=(c[t>>2]|0)+1;rd=3229;break Gb}l=c[s>>2]|0;if(!l){l=u;break}c[s>>2]=c[l>>2];c[t>>2]=(c[t>>2]|0)+1;rd=3229;break Gb}while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(D,n,0)|0;rd=3229}while(0);if((rd|0)==3229){rd=0;if(!l){l=0;break}}ew(l|0,h|0,n|0)|0}while(0);c[w>>2]=l;c[v+(o<<4)+8>>2]=0;c[v+(o<<4)+4>>2]=0;o=o+1|0}while((o|0)<(b[z>>1]|0))}c[k+72>>2]=c[(c[D+16>>2]|0)+(A<<4)+12>>2];c[k+52>>2]=c[C+52>>2];c[y>>2]=1}}}}while(0);qi(D,F);break}case 276:{u=c[td+-56>>2]|0;i=td+-20|0;p=td+4|0;v=c[j>>2]|0;l=c[u+8>>2]|0;if(!l)k=u+12|0;else{m=c[v+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0;k=m+(k<<4)|0}r=bd(j,0,c[u+16>>2]|0,c[k>>2]|0)|0;Hb:do if(r|0?(on(j,r)|0)==0:0){k=(c[r+56>>2]|0)==0?((c[r+12>>2]|0)==0?0:39579):48814;if(k|0){rd=c[r>>2]|0;c[Ma>>2]=k;c[Ma+4>>2]=rd;cd(j,48828,Ma);break}l=c[r+72>>2]|0;m=c[v+16>>2]|0;if(!l)t=-1e6;else{k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){t=k;break}else k=k+1|0}s=c[m+(t<<4)>>2]|0;k=c[r>>2]|0;l=c[j>>2]|0;do if(((a[l+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(zb=c[l+312>>2]|0,zb|0):0){k=$a[zb&127](c[l+316>>2]|0,26,s,k,0,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,Bb);c[j+12>>2]=23;break Hb}if((k|2|0)==2)if(!k)break;else break Hb;else{cd(j,39231,Db);c[j+12>>2]=1;break Hb}}while(0);q=qj(v,i)|0;if(q|0){qd=b[r+42>>1]|0;o=qd<<16>>16;Ib:do if(qd<<16>>16>0){h=c[r+4>>2]|0;n=d[208+(d[q>>0]|0)>>0]|0;k=0;do{m=c[h+(k<<4)>>2]|0;qd=a[m>>0]|0;l=(d[208+(qd&255)>>0]|0)-n|0;if(!(qd<<24>>24==0|(l|0)!=0)){i=q;do{m=m+1|0;i=i+1|0;qd=a[m>>0]|0;l=(d[208+(qd&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(qd<<24>>24==0|(l|0)!=0))}if(!l)break Ib;k=k+1|0}while((k|0)<(o|0))}else k=0;while(0);Jb:do if((k|0)!=(o|0)){l=c[j+116>>2]|0;a[((l|0)==0?j:l)+21>>0]=1;l=qj(v,p)|0;if(!l)l=0;else{h=a[880+(d[c[p>>2]>>0]|0)>>0]&-128&255;n=c[r>>2]|0;o=(t|0)==1;p=o&1;c[Wb>>2]=s;c[Wb+4>>2]=34585;c[Wb+8>>2]=s;c[Wb+12>>2]=n;c[Wb+16>>2]=k;c[Wb+20>>2]=l;c[Wb+24>>2]=h;c[Wb+28>>2]=p;c[Wb+32>>2]=n;Ak(j,48500,Wb);n=c[r>>2]|0;c[Xb>>2]=34585;c[Xb+4>>2]=s;c[Xb+8>>2]=n;c[Xb+12>>2]=k;c[Xb+16>>2]=l;c[Xb+20>>2]=h;Ak(j,48694,Xb);h=j+8|0;n=c[h>>2]|0;do if(!n){c[_b>>2]=s;c[_b+4>>2]=34585;c[_b+8>>2]=s;c[_b+12>>2]=p;Ak(j,47804,_b);if(o)break Jb}else{k=(c[c[(c[(c[j>>2]|0)+16>>2]|0)+(t<<4)+12>>2]>>2]|0)+1|0;m=n+108|0;i=c[m>>2]|0;if((c[n+112>>2]|0)>(i|0)){c[m>>2]=i+1;qd=c[n+104>>2]|0;a[qd+(i*20|0)>>0]=95;b[qd+(i*20|0)+2>>1]=0;c[qd+(i*20|0)+4>>2]=t;c[qd+(i*20|0)+8>>2]=1;c[qd+(i*20|0)+12>>2]=k;c[qd+(i*20|0)+16>>2]=0;a[qd+(i*20|0)+1>>0]=0}else Di(n,95,t,1,k)|0;Bk(c[h>>2]|0,t,0);if(o){c[$b>>2]=s;c[$b+4>>2]=34585;c[$b+8>>2]=s;c[$b+12>>2]=p;Ak(j,47804,$b);break Jb}else{Bk(c[h>>2]|0,1,0);c[ac>>2]=s;c[ac+4>>2]=34585;c[ac+8>>2]=s;c[ac+12>>2]=p;Ak(j,47804,ac);break}}while(0);c[bc>>2]=34585;c[bc+4>>2]=s;Ak(j,47948,bc)}}else{c[Ub>>2]=q;cd(j,31333,Ub);l=0}while(0);qi(v,u);k=(v|0)==0;do if(!k){if(c[v+480>>2]|0){Xd(v,q);break}j=q;if((c[v+304>>2]|0)>>>0<=j>>>0?(c[v+308>>2]|0)>>>0>j>>>0:0){j=v+300|0;c[q>>2]=c[j>>2];c[j>>2]=q}else rd=3281}else rd=3281;while(0);do if((rd|0)==3281)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{j=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);if(!l)break a;if(!k){if(c[v+480>>2]|0){Xd(v,l);break a}j=l;if((c[v+304>>2]|0)>>>0<=j>>>0?(c[v+308>>2]|0)>>>0>j>>>0:0){j=v+300|0;c[l>>2]=c[j>>2];c[j>>2]=l;break a}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break a}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break a}}}while(0);qi(v,u);break}case 277:{Aj(j,0);break}case 278:{Aj(j,td+4|0);break}case 279:{o=td+4|0;bj(j,td+-32|0,td+-20|0,0,0,1,c[td+-44>>2]|0);r=c[j+228>>2]|0;if(r|0){q=c[j>>2]|0;h=qj(q,o)|0;p=r+56|0;rd=c[p>>2]|0;m=(rd<<2)+8|0;i=c[j>>2]|0;if((rd+3|0)>=(c[i+116>>2]|0)){c[na>>2]=c[r>>2];cd(j,38221,na)}n=r+60|0;k=c[n>>2]|0;Kb:do if(!k){if(c[i+272>>2]|0){if(a[i+81>>0]|0){rd=3317;break}}else{do if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){l=i+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3316;break Kb}l=i+296|0;k=c[l>>2]|0;if(!k){k=i+292|0;break}else{c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3316;break Kb}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(i,m,0)|0;rd=3316}else{rd=k;if((c[i+304>>2]|0)>>>0<=rd>>>0?(c[i+308>>2]|0)>>>0>rd>>>0:0){if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){rd=3326;break}k=Zd(i,k,m,0)|0;rd=3316;break}k=Zd(i,k,m,0)|0;rd=3316}while(0);if((rd|0)==3316)if(!k)rd=3317;else rd=3326;do if((rd|0)==3317){if(h|0){if(c[i+480>>2]|0){Xd(i,h);break}qd=h;if((c[i+304>>2]|0)>>>0<=qd>>>0?(c[i+308>>2]|0)>>>0>qd>>>0:0){qd=i+300|0;c[h>>2]=c[qd>>2];c[qd>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{qd=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-qd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}}else if((rd|0)==3326){pd=c[p>>2]|0;qd=pd+1|0;c[p>>2]=qd;c[k+(pd<<2)>>2]=h;c[k+(qd<<2)>>2]=0;c[n>>2]=k}while(0);qd=c[p>>2]|0;m=(qd<<2)+8|0;i=c[j>>2]|0;if((qd+3|0)>=(c[i+116>>2]|0)){c[Eb>>2]=c[r>>2];cd(j,38221,Eb)}k=c[n>>2]|0;Lb:do if(!k){if(c[i+272>>2]|0){if(a[i+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){k=i+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];Jb=i+284|0;c[Jb>>2]=(c[Jb>>2]|0)+1;Jb=l;rd=3346;break Lb}k=i+296|0;l=c[k>>2]|0;if(!l){k=i+292|0;break}else{c[k>>2]=c[l>>2];Jb=i+284|0;c[Jb>>2]=(c[Jb>>2]|0)+1;Jb=l;rd=3346;break Lb}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}Jb=_d(i,m,0)|0;rd=3346}else{rd=k;if((c[i+304>>2]|0)>>>0<=rd>>>0?(c[i+308>>2]|0)>>>0>rd>>>0:0){if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){rd=3347;break}Jb=Zd(i,k,m,0)|0;rd=3346;break}Jb=Zd(i,k,m,0)|0;rd=3346}while(0);if((rd|0)==3346?Jb|0:0){k=Jb;rd=3347}if((rd|0)==3347){pd=c[p>>2]|0;qd=pd+1|0;c[p>>2]=qd;c[k+(pd<<2)>>2]=0;c[k+(qd<<2)>>2]=0;c[n>>2]=k}i=c[r>>2]|0;Mb:do if(!i)h=0;else{h=(Eu(i)|0)+1|0;Nb:do if(!q){qd=Sv(h|0,0,-1,-1)|0;pd=L()|0;if(pd>>>0>0|(pd|0)==0&qd>>>0>2147483390){h=0;break Mb}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](h)|0;rd=3373;break}k=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){qd=c[14978]|0;pd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;od=L()|0;c[14768]=((od|0)<0|(od|0)==0&pd>>>0<=qd>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k){h=0;break Mb}l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){h=0;break Mb}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){l=q+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=q+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3373;break Nb}l=q+296|0;k=c[l>>2]|0;if(!k){k=q+292|0;break}else{c[l>>2]=c[k>>2];rd=q+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3373;break Nb}}else k=q+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(q,h,0)|0;rd=3373}while(0);if((rd|0)==3373)if(!k){h=0;break}ew(k|0,i|0,h|0)|0;h=k}while(0);rd=c[p>>2]|0;m=(rd<<2)+8|0;i=c[j>>2]|0;if((rd+3|0)>=(c[i+116>>2]|0)){c[ic>>2]=c[r>>2];cd(j,38221,ic)}k=c[n>>2]|0;Ob:do if(!k){if(c[i+272>>2]|0){if(a[i+81>>0]|0){rd=3395;break}}else{do if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){l=i+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3394;break Ob}l=i+296|0;k=c[l>>2]|0;if(!k){k=i+292|0;break}else{c[l>>2]=c[k>>2];rd=i+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3394;break Ob}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(i,m,0)|0;rd=3394}else{rd=k;if((c[i+304>>2]|0)>>>0<=rd>>>0?(c[i+308>>2]|0)>>>0>rd>>>0:0){if(!(0<0|(0==0?(e[i+276>>1]|0)>>>0>>0:0))){rd=3404;break}k=Zd(i,k,m,0)|0;rd=3394;break}k=Zd(i,k,m,0)|0;rd=3394}while(0);if((rd|0)==3394)if(!k)rd=3395;else rd=3404;do if((rd|0)==3395){if(h|0){if(c[i+480>>2]|0){Xd(i,h);break}rd=h;if((c[i+304>>2]|0)>>>0<=rd>>>0?(c[i+308>>2]|0)>>>0>rd>>>0:0){rd=i+300|0;c[h>>2]=c[rd>>2];c[rd>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{rd=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}}else if((rd|0)==3404){qd=c[p>>2]|0;rd=qd+1|0;c[p>>2]=rd;c[k+(qd<<2)>>2]=h;c[k+(rd<<2)>>2]=0;c[n>>2]=k}while(0);c[j+184>>2]=(c[o>>2]|0)+(c[td+8>>2]|0)-(c[j+180>>2]|0);h=c[n>>2]|0;if(h|0){m=c[r+72>>2]|0;if(!m)k=-1e6;else{l=c[q+16>>2]|0;k=0;while(1)if((c[l+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}i=c[r>>2]|0;l=c[h>>2]|0;m=c[j>>2]|0;k=c[(c[m+16>>2]|0)+(k<<4)>>2]|0;if(((a[m+165>>0]|0)==0?(a[j+200>>0]|0)==0:0)?(zc=c[m+312>>2]|0,zc|0):0){k=$a[zc&127](c[m+316>>2]|0,29,i,l,k,c[j+240>>2]|0)|0;if((k|0)==1){cd(j,39216,Bc);c[j+12>>2]=23;break a}if((k|2|0)!=2){cd(j,39231,Cc);c[j+12>>2]=1}}}}break}case 280:{p=j+244|0;n=c[p>>2]|0;do if(n|0?(ob=c[j+228>>2]|0,ob|0):0){o=c[j+248>>2]|0;m=c[j>>2]|0;i=Sv(o|0,((o|0)<0)<<31>>31|0,1,0)|0;h=L()|0;Pb:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3428;else n=0;else{do if(!(h>>>0>0|((h|0)==0?i>>>0>(e[m+276>>1]|0)>>>0:0))){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3429;break Pb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3429;break Pb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3428}while(0);if((rd|0)==3428){k=_d(m,i,h)|0;rd=3429}if((rd|0)==3429)if(!k)n=0;else{ew(k|0,n|0,o|0)|0;a[k+o>>0]=0;n=k}o=ob+56|0;qd=c[o>>2]|0;i=(qd<<2)+8|0;h=c[j>>2]|0;if((qd+3|0)>=(c[h+116>>2]|0)){c[mb>>2]=c[ob>>2];cd(j,38221,mb)}m=ob+60|0;k=c[m>>2]|0;Qb:do if(!k){if(c[h+272>>2]|0){if(a[h+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[h+276>>1]|0)>>>0>>0:0))){k=h+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];Fb=h+284|0;c[Fb>>2]=(c[Fb>>2]|0)+1;Fb=l;rd=3450;break Qb}k=h+296|0;l=c[k>>2]|0;if(!l){k=h+292|0;break}else{c[k>>2]=c[l>>2];Fb=h+284|0;c[Fb>>2]=(c[Fb>>2]|0)+1;Fb=l;rd=3450;break Qb}}else k=h+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}Fb=_d(h,i,0)|0;rd=3450}else{rd=k;if((c[h+304>>2]|0)>>>0<=rd>>>0?(c[h+308>>2]|0)>>>0>rd>>>0:0){if(!(0<0|(0==0?(e[h+276>>1]|0)>>>0>>0:0))){rd=3460;break}Fb=Zd(h,k,i,0)|0;rd=3450;break}Fb=Zd(h,k,i,0)|0;rd=3450}while(0);if((rd|0)==3450?Fb|0:0){k=Fb;rd=3460}if((rd|0)==3460){qd=c[o>>2]|0;rd=qd+1|0;c[o>>2]=rd;c[k+(qd<<2)>>2]=n;c[k+(rd<<2)>>2]=0;c[m>>2]=k;break}if(n|0){if(c[h+480>>2]|0){Xd(h,n);break}rd=n;if((c[h+304>>2]|0)>>>0<=rd>>>0?(c[h+308>>2]|0)>>>0>rd>>>0:0){rd=h+300|0;c[n>>2]=c[rd>>2];c[rd>>2]=n;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{rd=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-rd;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}}while(0);c[p>>2]=0;c[j+248>>2]=0;break}case 283:case 282:case 281:{k=j+244|0;l=c[k>>2]|0;m=c[td+4>>2]|0;if(!l){c[k>>2]=m;k=c[td+8>>2]|0}else k=m+(c[td+8>>2]|0)-l|0;c[j+248>>2]=k;break}case 285:case 284:{k=c[td+4>>2]|0;if(k|0){rd=j+264|0;c[k+4>>2]=c[rd>>2];c[rd>>2]=k;c[j+268>>2]=k}break}case 286:{rd=td+-56|0;j=Bj(j,0,rd,c[td+-44>>2]|0,c[td+-8>>2]|0)|0;c[rd>>2]=j;break}case 287:{rd=td+-80|0;j=Bj(j,c[rd>>2]|0,td+-56|0,c[td+-44>>2]|0,c[td+-8>>2]|0)|0;c[rd>>2]=j;break}case 314:{m=c[j>>2]|0;Rb:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](92)|0;rd=3591;break}k=Wa[c[29356>>2]&127](92)|0;if((c[14985]|0)>>>0<92)c[14985]=92;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){rd=c[14978]|0;qd=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;pd=L()|0;c[14768]=((pd|0)<0|(pd|0)==0&qd>>>0<=rd>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(l){k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;rd=3592}else rd=3592}else rd=3607}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){rd=3607;break}}else{do if((e[m+276>>1]|0)>=92){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3591;break Rb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];rd=m+284|0;c[rd>>2]=(c[rd>>2]|0)+1;rd=3591;break Rb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,92,0)|0;rd=3591}while(0);if((rd|0)==3591)if(!k)rd=3607;else{l=k;rd=3592}if((rd|0)==3592){I=l;J=I+92|0;do{a[I>>0]=0;I=I+1|0}while((I|0)<(J|0));i=c[j>>2]|0;o=c[td+4>>2]|0;p=c[td+8>>2]|0;Sb:do if(o){h=Sv(p|0,0,1,0)|0;n=L()|0;Tb:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))rd=3603;else{k=0;break Sb}else{do if(0<0|(0==0?p>>>0<(e[i+276>>1]|0)>>>0:0)){m=i+300|0;k=c[m>>2]|0;if(k|0){c[m>>2]=c[k>>2];j=i+284|0;c[j>>2]=(c[j>>2]|0)+1;break Tb}m=i+296|0;k=c[m>>2]|0;if(!k){k=i+292|0;break}else{c[m>>2]=c[k>>2];j=i+284|0;c[j>>2]=(c[j>>2]|0)+1;break Tb}}else k=i+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3603}while(0);if((rd|0)==3603)k=_d(i,h,n)|0;if(k){ew(k|0,o|0,p|0)|0;a[k+p>>0]=0}else k=0}else k=0;while(0);c[l>>2]=k;c[l+36>>2]=c[td+-20>>2];k=l}else if((rd|0)==3607){k=c[td+-20>>2]|0;if(!k)k=0;else{ni(c[j>>2]|0,k);k=0}}c[td+-20>>2]=k;break}case 289:{qd=td+4|0;rd=td+-20|0;Cj(j,c[qd>>2]|0,c[rd>>2]|0);c[(c[qd>>2]|0)+32>>2]=c[rd>>2];c[rd>>2]=c[qd>>2];break}case 290:{p=td+-8|0;if(!(c[p>>2]|0))k=0;else{m=c[j>>2]|0;n=c[td+-44>>2]|0;o=c[td+-40>>2]|0;Ub:do if(n){i=Sv(o|0,0,1,0)|0;h=L()|0;Vb:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3483;else{k=0;break Ub}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Vb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Vb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3483}while(0);if((rd|0)==3483)k=_d(m,i,h)|0;if(k){ew(k|0,n|0,o|0)|0;a[k+o>>0]=0}else k=0}else k=0;while(0);c[c[p>>2]>>2]=k;k=c[p>>2]|0}c[td+-44>>2]=k;break}case 291:{k=c[td+4>>2]|0;l=c[td+-20>>2]|0;m=c[td+-8>>2]|0;if(!k){if(l|0)ri(c[j>>2]|0,l);if(m|0)ri(c[j>>2]|0,m)}else{c[k+8>>2]=l;c[k+12>>2]=m}c[td+-44>>2]=k;break}case 292:{p=c[td+4>>2]|0;k=c[td+-20>>2]|0;l=c[td+-8>>2]|0;q=td+-56|0;if(!p){if(k|0)ri(c[j>>2]|0,k);if(l|0)ri(c[j>>2]|0,l)}else{c[p+8>>2]=k;c[p+12>>2]=l;m=c[j>>2]|0;n=c[q>>2]|0;o=c[td+-52>>2]|0;Wb:do if(n){i=Sv(o|0,0,1,0)|0;h=L()|0;Xb:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3507;else{k=0;break Wb}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Xb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Xb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3507}while(0);if((rd|0)==3507)k=_d(m,i,h)|0;if(k){ew(k|0,n|0,o|0)|0;a[k+o>>0]=0}else k=0}else k=0;while(0);c[p+4>>2]=k}c[q>>2]=p;break}case 293:{k=c[td+4>>2]|0;l=c[td+-8>>2]|0;if(!k){if(l|0)ri(c[j>>2]|0,l)}else{c[k+8>>2]=0;c[k+12>>2]=l}c[td+-32>>2]=k;break}case 294:{p=c[td+4>>2]|0;k=c[td+-8>>2]|0;q=td+-44|0;if(!p){if(k|0)ri(c[j>>2]|0,k)}else{c[p+8>>2]=0;c[p+12>>2]=k;m=c[j>>2]|0;n=c[q>>2]|0;o=c[td+-40>>2]|0;Yb:do if(n){i=Sv(o|0,0,1,0)|0;h=L()|0;Zb:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3533;else{k=0;break Yb}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Zb}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break Zb}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3533}while(0);if((rd|0)==3533)k=_d(m,i,h)|0;if(k){ew(k|0,n|0,o|0)|0;a[k+o>>0]=0}else k=0}else k=0;while(0);c[p+4>>2]=k}c[q>>2]=p;break}case 313:{rd=c[td+-8>>2]|0;j=td+-44|0;c[rd+36>>2]=c[j>>2];c[j>>2]=rd;break}case 296:{p=c[td+4>>2]|0;q=td+-8|0;if(p|0){c[p+8>>2]=0;c[p+12>>2]=0;m=c[j>>2]|0;n=c[q>>2]|0;o=c[td+-4>>2]|0;_b:do if(n){i=Sv(o|0,0,1,0)|0;h=L()|0;$b:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))rd=3552;else{k=0;break _b}else{do if(0<0|(0==0?o>>>0<(e[m+276>>1]|0)>>>0:0)){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break $b}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];j=m+284|0;c[j>>2]=(c[j>>2]|0)+1;break $b}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;rd=3552}while(0);if((rd|0)==3552)k=_d(m,i,h)|0;if(k){ew(k|0,n|0,o|0)|0;a[k+o>>0]=0}else k=0}else k=0;while(0);c[p+4>>2]=k}c[q>>2]=p;break}case 297:{j=Dj(j,0,87,0,82,0,0)|0;c[td+16>>2]=j;break}case 298:{rd=td+-20|0;j=Dj(j,c[rd>>2]|0,c[td+-8>>2]|0,c[td+-4>>2]|0,82,0,a[td+4>>0]|0)|0;c[rd>>2]=j;break}case 299:{rd=td+-56|0;j=Dj(j,c[rd>>2]|0,c[td+-32>>2]|0,c[td+-28>>2]|0,c[td+-8>>2]|0,c[td+-4>>2]|0,a[td+4>>0]|0)|0;c[rd>>2]=j;break}case 312:{c[td+-8>>2]=c[td+4>>2];break}case 311:{a[td+4>>0]=b[td+2>>1];break}case 306:case 304:case 302:{c[td+-8>>2]=e[td+-10>>1];c[td+-4>>2]=0;break}case 305:{rd=td+-8|0;j=c[rd>>2]|0;c[rd>>2]=e[td+2>>1];c[td+-4>>2]=j;break}case 307:{a[td+16>>0]=0;break}case 308:{a[td+-8>>0]=a[td+4>>0]|0;break}case 310:case 309:{a[td+-8>>0]=b[td+-10>>1];break}default:{}}while(0);j=b[17152+(g<<1)>>1]|0;sd=sd<<24>>24;g=b[11376+((b[18656+(e[td+(sd*12|0)>>1]<<1)>>1]|0)+(j&65535)<<1)>>1]|0;sd=sd+1|0;rd=td+(sd*12|0)|0;c[f>>2]=rd;b[rd>>1]=g;b[td+(sd*12|0)+2>>1]=j;f=g;Ra=ud;return f|0} -function zj(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=Ra;Ra=Ra+64|0;B=I+48|0;A=I+40|0;s=I+32|0;r=I+24|0;q=I+16|0;p=I+8|0;u=I;F=I+52|0;G=c[f>>2]|0;a:do if(!(a[G+165>>0]|0)){n=f+4|0;o=G+24|0;k=(c[o>>2]&1|0)==0;l=G+16|0;C=c[(c[l>>2]|0)+12>>2]|0;a[G+78>>0]=a[C+77>>0]|0;if(!((b[C+78>>1]&1)==0?(i=eh(G,0,n,0)|0,(i|0)!=0):0))H=4;b:do if((H|0)==4){i=c[G+20>>2]|0;if((i|0)>1)do{j=i;i=i+-1|0;if((b[(c[(c[l>>2]|0)+(i<<4)+12>>2]|0)+78>>1]&1)==0?(m=eh(G,i,n,0)|0,m|0):0){i=m;break b}}while((j|0)>2);if(k)c[o>>2]=c[o>>2]&-2;if(!(a[G+89>>0]|0))break a;c[o>>2]=c[o>>2]|16;break a}while(0);c[f+12>>2]=i;f=f+36|0;c[f>>2]=(c[f>>2]|0)+1;Ra=I;return}while(0);c:do if(!g){n=G+20|0;if((c[n>>2]|0)>0){o=f+116|0;p=f+40|0;q=f+44|0;r=f+8|0;s=f+23|0;m=0;do{d:do if((m|0)!=1){l=c[(c[(c[f>>2]|0)+16>>2]|0)+(m<<4)+12>>2]|0;k=c[o>>2]|0;k=(k|0)==0?f:k;i=k+84|0;g=c[i>>2]|0;j=1<>2]=g|j;g=k+80|0;c[g>>2]=c[g>>2]|j;g=c[p>>2]|0;c[p>>2]=g+3;hn(f,m,g,0,0);j=(c[q>>2]|0)+1|0;k=c[p>>2]|0;i=c[l+16>>2]|0;if(i|0)do{jn(f,c[i+8>>2]|0,0,g,j,k);i=c[i>>2]|0}while((i|0)!=0);i=c[r>>2]|0;if(!i){j=c[f>>2]|0;if((c[o>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[s>>0]=1;e:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))H=37;else break d;else{do if((e[j+276>>1]|0)>=224){g=j+300|0;i=c[g>>2]|0;if(i|0){c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break e}g=j+296|0;i=c[g>>2]|0;if(!i){i=j+292|0;break}else{c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break e}}else i=j+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;H=37}while(0);if((H|0)==37){H=0;i=_d(j,224,0)|0}if(!i)break;g=i+104|0;l=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));c[i>>2]=j;g=j+4|0;j=c[g>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=f;c[r>>2]=i;Di(i,61,0,1,0)|0}g=i+108|0;j=c[g>>2]|0;if((c[i+112>>2]|0)>(j|0)){c[g>>2]=j+1;F=c[i+104>>2]|0;a[F+(j*20|0)>>0]=-114;b[F+(j*20|0)+2>>1]=0;c[F+(j*20|0)+4>>2]=m;c[F+(j*20|0)+8>>2]=0;c[F+(j*20|0)+12>>2]=0;c[F+(j*20|0)+16>>2]=0;a[F+(j*20|0)+1>>0]=0;break}else{Di(i,142,m,0,0)|0;break}}while(0);m=m+1|0}while((m|0)<(c[n>>2]|0))}}else{j=h+4|0;do if(!(c[j>>2]|0)){C=wk(G,g)|0;i=c[f>>2]|0;if((C|0)<=-1){if(!(c[j>>2]|0)){i=d[i+164>>0]|0;break}if(a[i+165>>0]|0){cd(f,39404,r);break c}i=wk(i,g)|0;if((i|0)>=0){g=h;break}c[s>>2]=g;cd(f,39421,s);break c}p=c[(c[i+16>>2]|0)+(C<<4)+12>>2]|0;q=f+116|0;o=c[q>>2]|0;o=(o|0)==0?f:o;i=o+84|0;g=c[i>>2]|0;n=1<>2]=g|n,(C|0)==1):0)?(x=c[o>>2]|0,t=x+16|0,(c[(c[t>>2]|0)+20>>2]|0)==0):0)?(a[o+199>>0]|0)==0:0){i=Pe(c[x>>2]|0,0,x,F,0,542)|0;if(i|0){cd(o,32157,u);c[o+12>>2]=i;break}F=c[F>>2]|0;c[(c[t>>2]|0)+20>>2]=F;i=c[x+92>>2]|0;j=c[F+4>>2]|0;c[j+4>>2]=c[F>>2];if(!(b[j+22>>1]&2)){k=j+32|0;l=j+36|0;m=(c[k>>2]|0)-(c[l>>2]|0)|0;if(((i+-512|0)>>>0<65025?(i+-1&i|0)==0:0)?(c[k>>2]=i,w=j+80|0,v=c[w>>2]|0,v|0):0){g=v+-4|0;c[w>>2]=g;i=g;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[g>>2]=c[14819];c[14819]=g;F=(c[14820]|0)+1|0;c[14820]=F;c[14821]=(F|0)<(c[14815]|0)&1;break}else{i=Wa[c[29352>>2]&127](g)|0;H=63;break}else{i=Wa[c[29352>>2]&127](g)|0;H=63}while(0);do if((H|0)==63){c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{F=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[w>>2]=0}F=Se(c[j>>2]|0,k,m)|0;c[l>>2]=(c[k>>2]|0)-(m&65535);if((F|0)==7){i=x+81|0;do if((a[i>>0]|0)==0?(a[x+82>>0]|0)==0:0){a[i>>0]=1;if((c[x+180>>2]|0)>0)c[x+264>>2]=1;i=x+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[x+236>>2]|0;if(!i)break;c[i+12>>2]=7}while(0);break}}}while(0);k=o+80|0;c[k>>2]=c[k>>2]|n;k=f+40|0;g=c[k>>2]|0;c[k>>2]=g+3;hn(f,C,g,0,0);j=(c[f+44>>2]|0)+1|0;k=c[k>>2]|0;i=c[p+16>>2]|0;if(i|0)do{jn(f,c[i+8>>2]|0,0,g,j,k);i=c[i>>2]|0}while((i|0)!=0);k=f+8|0;i=c[k>>2]|0;if(!i){j=c[f>>2]|0;if((c[q>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[f+23>>0]=1;f:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))H=93;else break c;else{do if((e[j+276>>1]|0)>=224){g=j+300|0;i=c[g>>2]|0;if(i|0){c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break f}g=j+296|0;i=c[g>>2]|0;if(!i){i=j+292|0;break}else{c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break f}}else i=j+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;H=93}while(0);if((H|0)==93)i=_d(j,224,0)|0;if(!i)break c;g=i+104|0;l=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));c[i>>2]=j;g=j+4|0;j=c[g>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=f;c[k>>2]=i;Di(i,61,0,1,0)|0}g=i+108|0;j=c[g>>2]|0;if((c[i+112>>2]|0)>(j|0)){c[g>>2]=j+1;F=c[i+104>>2]|0;a[F+(j*20|0)>>0]=-114;b[F+(j*20|0)+2>>1]=0;c[F+(j*20|0)+4>>2]=C;c[F+(j*20|0)+8>>2]=0;c[F+(j*20|0)+12>>2]=0;c[F+(j*20|0)+16>>2]=0;a[F+(j*20|0)+1>>0]=0;break c}else{Di(i,142,C,0,0)|0;break c}}else{i=c[f>>2]|0;if(a[i+165>>0]|0){cd(f,39404,p);break c}i=wk(i,g)|0;if((i|0)<0){c[q>>2]=g;cd(f,39421,q);break c}else g=h}while(0);if(!(c[j>>2]|0))i=0;else i=c[(c[G+16>>2]|0)+(i<<4)>>2]|0;t=qj(G,g)|0;if(t|0){s=hi(G,t,i)|0;g:do if(!s){q=bd(f,0,t,i)|0;if(q|0){g=c[q+72>>2]|0;if(!g)s=-1e6;else{j=c[(c[f>>2]|0)+16>>2]|0;i=0;while(1)if((c[j+(i<<4)+12>>2]|0)==(g|0)){s=i;break}else i=i+1|0}r=f+116|0;p=c[r>>2]|0;p=(p|0)==0?f:p;i=p+84|0;g=c[i>>2]|0;o=1<>2]=g|o,(s|0)==1):0)?(E=c[p>>2]|0,z=E+16|0,(c[(c[z>>2]|0)+20>>2]|0)==0):0)?(a[p+199>>0]|0)==0:0){i=Pe(c[E>>2]|0,0,E,F,0,542)|0;if(i|0){cd(p,32157,B);c[p+12>>2]=i;break}F=c[F>>2]|0;c[(c[z>>2]|0)+20>>2]=F;i=c[E+92>>2]|0;k=c[F+4>>2]|0;c[k+4>>2]=c[F>>2];if(!(b[k+22>>1]&2)){l=k+32|0;m=k+36|0;n=(c[l>>2]|0)-(c[m>>2]|0)|0;do if((i+-512|0)>>>0<65025){if(i+-1&i|0)break;c[l>>2]=i;j=k+80|0;i=c[j>>2]|0;if(!i)break;g=i+-4|0;c[j>>2]=g;i=g;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[g>>2]=c[14819];c[14819]=g;F=(c[14820]|0)+1|0;c[14820]=F;c[14821]=(F|0)<(c[14815]|0)&1;break}else{i=Wa[c[29352>>2]&127](g)|0;H=187;break}else{i=Wa[c[29352>>2]&127](g)|0;H=187}while(0);do if((H|0)==187){c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{F=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[j>>2]=0}while(0);F=Se(c[k>>2]|0,l,n)|0;c[m>>2]=(c[l>>2]|0)-(n&65535);if((F|0)==7){i=E+81|0;do if(!(a[i>>0]|0)){if(a[E+82>>0]|0)break;a[i>>0]=1;if((c[E+180>>2]|0)>0)c[E+264>>2]=1;i=E+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[E+236>>2]|0;if(!i)break;c[i+12>>2]=7}while(0);break}}}while(0);k=p+80|0;c[k>>2]=c[k>>2]|o;k=f+40|0;i=c[k>>2]|0;c[k>>2]=i+3;hn(f,s,i,c[q>>2]|0,38087);jn(f,q,0,i,(c[f+44>>2]|0)+1|0,c[k>>2]|0);k=f+8|0;i=c[k>>2]|0;if(!i){j=c[f>>2]|0;if((c[r>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[f+23>>0]=1;h:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))H=214;else break g;else{do if((e[j+276>>1]|0)>=224){g=j+300|0;i=c[g>>2]|0;if(i|0){c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break h}g=j+296|0;i=c[g>>2]|0;if(!i){i=j+292|0;break}else{c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break h}}else i=j+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;H=214}while(0);if((H|0)==214)i=_d(j,224,0)|0;if(!i)break;g=i+104|0;l=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));c[i>>2]=j;g=j+4|0;j=c[g>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=f;c[k>>2]=i;Di(i,61,0,1,0)|0}g=i+108|0;j=c[g>>2]|0;if((c[i+112>>2]|0)>(j|0)){c[g>>2]=j+1;F=c[i+104>>2]|0;a[F+(j*20|0)>>0]=-114;b[F+(j*20|0)+2>>1]=0;c[F+(j*20|0)+4>>2]=s;c[F+(j*20|0)+8>>2]=0;c[F+(j*20|0)+12>>2]=0;c[F+(j*20|0)+16>>2]=0;a[F+(j*20|0)+1>>0]=0;break}else{Di(i,142,s,0,0)|0;break}}}else{q=c[s+12>>2]|0;g=c[q+72>>2]|0;if(!g)h=-1e6;else{j=c[(c[f>>2]|0)+16>>2]|0;i=0;while(1)if((c[j+(i<<4)+12>>2]|0)==(g|0)){h=i;break}else i=i+1|0}r=f+116|0;p=c[r>>2]|0;p=(p|0)==0?f:p;i=p+84|0;g=c[i>>2]|0;o=1<>2]=g|o,(h|0)==1):0)?(D=c[p>>2]|0,y=D+16|0,(c[(c[y>>2]|0)+20>>2]|0)==0):0)?(a[p+199>>0]|0)==0:0){i=Pe(c[D>>2]|0,0,D,F,0,542)|0;if(i|0){cd(p,32157,A);c[p+12>>2]=i;break}F=c[F>>2]|0;c[(c[y>>2]|0)+20>>2]=F;i=c[D+92>>2]|0;k=c[F+4>>2]|0;c[k+4>>2]=c[F>>2];if(!(b[k+22>>1]&2)){l=k+32|0;m=k+36|0;n=(c[l>>2]|0)-(c[m>>2]|0)|0;do if((i+-512|0)>>>0<65025?(i+-1&i|0)==0:0){c[l>>2]=i;j=k+80|0;i=c[j>>2]|0;if(!i)break;g=i+-4|0;c[j>>2]=g;i=g;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[g>>2]=c[14819];c[14819]=g;F=(c[14820]|0)+1|0;c[14820]=F;c[14821]=(F|0)<(c[14815]|0)&1;break}else{i=Wa[c[29352>>2]&127](g)|0;H=133;break}else{i=Wa[c[29352>>2]&127](g)|0;H=133}while(0);do if((H|0)==133){c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{F=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[j>>2]=0}while(0);F=Se(c[k>>2]|0,l,n)|0;c[m>>2]=(c[l>>2]|0)-(n&65535);if((F|0)==7){i=D+81|0;do if(!(a[i>>0]|0)){if(a[D+82>>0]|0)break;a[i>>0]=1;if((c[D+180>>2]|0)>0)c[D+264>>2]=1;i=D+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[D+236>>2]|0;if(!i)break;c[i+12>>2]=7}while(0);break}}}while(0);k=p+80|0;c[k>>2]=c[k>>2]|o;k=f+40|0;i=c[k>>2]|0;c[k>>2]=i+3;hn(f,h,i,c[s>>2]|0,38091);jn(f,q,s,i,(c[f+44>>2]|0)+1|0,c[k>>2]|0);k=f+8|0;i=c[k>>2]|0;if(!i){j=c[f>>2]|0;if((c[r>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[f+23>>0]=1;i:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))H=160;else break g;else{do if((e[j+276>>1]|0)>=224){g=j+300|0;i=c[g>>2]|0;if(i|0){c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break i}g=j+296|0;i=c[g>>2]|0;if(!i){i=j+292|0;break}else{c[g>>2]=c[i>>2];F=j+284|0;c[F>>2]=(c[F>>2]|0)+1;break i}}else i=j+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;H=160}while(0);if((H|0)==160)i=_d(j,224,0)|0;if(!i)break;g=i+104|0;l=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));c[i>>2]=j;g=j+4|0;j=c[g>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=f;c[k>>2]=i;Di(i,61,0,1,0)|0}g=i+108|0;j=c[g>>2]|0;if((c[i+112>>2]|0)>(j|0)){c[g>>2]=j+1;F=c[i+104>>2]|0;a[F+(j*20|0)>>0]=-114;b[F+(j*20|0)+2>>1]=0;c[F+(j*20|0)+4>>2]=h;c[F+(j*20|0)+8>>2]=0;c[F+(j*20|0)+12>>2]=0;c[F+(j*20|0)+16>>2]=0;a[F+(j*20|0)+1>>0]=0;break}else{Di(i,142,h,0,0)|0;break}}while(0);if(G|0){if(c[G+480>>2]|0){Xd(G,t);break}F=t;if((c[G+304>>2]|0)>>>0<=F>>>0?(c[G+308>>2]|0)>>>0>F>>>0:0){F=G+300|0;c[t>>2]=c[F>>2];c[F>>2]=t;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{F=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}}while(0);if(a[G+90>>0]|0){Ra=I;return}k=f+8|0;i=c[k>>2]|0;if(!i){j=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[f+23>>0]=1;j:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))H=246;else{Ra=I;return}else{do if((e[j+276>>1]|0)>=224){g=j+300|0;i=c[g>>2]|0;if(i|0){c[g>>2]=c[i>>2];G=j+284|0;c[G>>2]=(c[G>>2]|0)+1;break j}g=j+296|0;i=c[g>>2]|0;if(!i){i=j+292|0;break}else{c[g>>2]=c[i>>2];G=j+284|0;c[G>>2]=(c[G>>2]|0)+1;break j}}else i=j+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;H=246}while(0);if((H|0)==246)i=_d(j,224,0)|0;if(!i){Ra=I;return}g=i+104|0;l=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(l|0));c[i>>2]=j;g=j+4|0;j=c[g>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=f;c[k>>2]=i;Di(i,61,0,1,0)|0}g=i+108|0;j=c[g>>2]|0;if((c[i+112>>2]|0)>(j|0)){c[g>>2]=j+1;g=c[i+104>>2]|0;a[g+(j*20|0)>>0]=-98;g=g+(j*20|0)+1|0;l=g+19|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(l|0));Ra=I;return}else{Di(i,158,0,0,0)|0;Ra=I;return}}function Aj(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=Ra;Ra=Ra+48|0;t=w+40|0;s=w+16|0;q=w+8|0;n=w;o=d+228|0;u=c[o>>2]|0;v=c[d>>2]|0;if(!u){Ra=w;return}p=d+244|0;m=c[p>>2]|0;do if(m){l=c[d+248>>2]|0;j=Sv(l|0,((l|0)<0)<<31>>31|0,1,0)|0;k=L()|0;a:do if(c[v+272>>2]|0)if(!(a[v+81>>0]|0))r=14;else m=0;else{do if(!(k>>>0>0|((k|0)==0?j>>>0>(e[v+276>>1]|0)>>>0:0))){i=v+300|0;g=c[i>>2]|0;if(g|0){c[i>>2]=c[g>>2];r=v+284|0;c[r>>2]=(c[r>>2]|0)+1;r=15;break a}i=v+296|0;g=c[i>>2]|0;if(!g){g=v+292|0;break}else{c[i>>2]=c[g>>2];r=v+284|0;c[r>>2]=(c[r>>2]|0)+1;r=15;break a}}else g=v+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;r=14}while(0);if((r|0)==14){g=_d(v,j,k)|0;r=15}if((r|0)==15)if(!g)m=0;else{ew(g|0,m|0,l|0)|0;a[g+l>>0]=0;m=g}g=u+56|0;l=c[g>>2]|0;j=(l<<2)+8|0;k=c[d>>2]|0;if((l+3|0)>=(c[k+116>>2]|0)){c[n>>2]=c[u>>2];cd(d,38221,n)}l=u+60|0;i=c[l>>2]|0;b:do if(!i){if(c[k+272>>2]|0){if(a[k+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){i=k+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];r=k+284|0;c[r>>2]=(c[r>>2]|0)+1;r=36;break b}i=k+296|0;h=c[i>>2]|0;if(!h){h=k+292|0;break}else{c[i>>2]=c[h>>2];r=k+284|0;c[r>>2]=(c[r>>2]|0)+1;r=36;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(k,j,0)|0;r=36}else{r=i;if((c[k+304>>2]|0)>>>0<=r>>>0?(c[k+308>>2]|0)>>>0>r>>>0:0){if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){h=i;r=46;break}h=Zd(k,i,j,0)|0;r=36;break}h=Zd(k,i,j,0)|0;r=36}while(0);if((r|0)==36?h|0:0)r=46;if((r|0)==46){k=c[g>>2]|0;n=k+1|0;c[g>>2]=n;c[h+(k<<2)>>2]=m;c[h+(n<<2)>>2]=0;c[l>>2]=h;break}if(m){if(c[k+480>>2]|0){Xd(k,m);break}n=m;if((c[k+304>>2]|0)>>>0<=n>>>0?(c[k+308>>2]|0)>>>0>n>>>0:0){n=k+300|0;c[m>>2]=c[n>>2];c[n>>2]=m;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{n=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}}else g=u+56|0;while(0);c[p>>2]=0;if((c[g>>2]|0)<1){Ra=w;return}if(a[v+165>>0]|0){if(!(mi((c[u+72>>2]|0)+8|0,c[u>>2]|0,u)|0)){c[o>>2]=0;Ra=w;return}g=v+81|0;if(a[g>>0]|0){Ra=w;return}if(a[v+82>>0]|0){Ra=w;return}a[g>>0]=1;if((c[v+180>>2]|0)>0)c[v+264>>2]=1;g=v+272|0;c[g>>2]=(c[g>>2]|0)+1;g=c[v+236>>2]|0;if(!g){Ra=w;return}c[g+12>>2]=7;Ra=w;return}if(!f)g=d+180|0;else{g=d+180|0;c[d+184>>2]=(c[f>>2]|0)-(c[g>>2]|0)+(c[f+4>>2]|0)}c[q>>2]=g;j=dd(v,48861,q)|0;h=c[u+72>>2]|0;i=c[v+16>>2]|0;if(!h)m=-1e6;else{g=0;while(1)if((c[i+(g<<4)+12>>2]|0)==(h|0)){m=g;break}else g=g+1|0}p=c[u>>2]|0;q=c[d+88>>2]|0;c[s>>2]=c[i+(m<<4)>>2];c[s+4>>2]=34585;c[s+8>>2]=p;c[s+12>>2]=p;c[s+16>>2]=j;c[s+20>>2]=q;Ak(d,48885,s);do if(j|0){if(c[v+480>>2]|0){Xd(v,j);break}s=j;if((c[v+304>>2]|0)>>>0<=s>>>0?(c[v+308>>2]|0)>>>0>s>>>0:0){s=v+300|0;c[j>>2]=c[s>>2];c[s>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{s=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);k=d+8|0;g=c[k>>2]|0;c:do if(!g){j=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[j+76>>1]&8)==0:0)a[d+23>>0]=1;d:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))r=78;else{l=0;break c}else{do if((e[j+276>>1]|0)>=224){g=j+300|0;h=c[g>>2]|0;if(h|0){c[g>>2]=c[h>>2];i=j+284|0;c[i>>2]=(c[i>>2]|0)+1;i=h;break d}g=j+296|0;h=c[g>>2]|0;if(!h){g=j+292|0;break}else{c[g>>2]=c[h>>2];i=j+284|0;c[i>>2]=(c[i>>2]|0)+1;i=h;break d}}else g=j+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;r=78}while(0);if((r|0)==78)i=_d(j,224,0)|0;if(!i)l=0;else{g=i+104|0;h=g+120|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[i>>2]=j;g=j+4|0;h=c[g>>2]|0;if(h|0)c[h+4>>2]=i;c[i+8>>2]=h;c[i+4>>2]=0;c[g>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=d;c[k>>2]=i;Di(i,61,0,1,0)|0;l=i}}else l=g;while(0);g=c[k>>2]|0;h=(c[c[(c[(c[d>>2]|0)+16>>2]|0)+(m<<4)+12>>2]>>2]|0)+1|0;i=g+108|0;j=c[i>>2]|0;if((c[g+112>>2]|0)>(j|0)){c[i>>2]=j+1;s=c[g+104>>2]|0;a[s+(j*20|0)>>0]=95;b[s+(j*20|0)+2>>1]=0;c[s+(j*20|0)+4>>2]=m;c[s+(j*20|0)+8>>2]=1;c[s+(j*20|0)+12>>2]=h;c[s+(j*20|0)+16>>2]=0;a[s+(j*20|0)+1>>0]=0}else Di(g,95,m,1,h)|0;j=l+108|0;g=c[j>>2]|0;k=l+112|0;if((c[k>>2]|0)>(g|0)){c[j>>2]=g+1;h=c[l+104>>2]|0;a[h+(g*20|0)>>0]=-98;g=h+(g*20|0)+1|0;h=g+19|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0))}else Di(l,158,0,0,0)|0;c[t>>2]=c[u>>2];Bk(l,m,dd(v,48973,t)|0);h=d+44|0;i=(c[h>>2]|0)+1|0;c[h>>2]=i;h=c[u>>2]|0;g=c[j>>2]|0;if((c[k>>2]|0)>(g|0)){c[j>>2]=g+1;v=c[l+104>>2]|0;a[v+(g*20|0)>>0]=110;b[v+(g*20|0)+2>>1]=0;c[v+(g*20|0)+4>>2]=0;c[v+(g*20|0)+8>>2]=i;c[v+(g*20|0)+12>>2]=0;c[v+(g*20|0)+16>>2]=0;a[v+(g*20|0)+1>>0]=0}else g=Di(l,110,0,i,0)|0;if(!(a[(c[l>>2]|0)+81>>0]|0)){if((g|0)<0)g=(c[j>>2]|0)+-1|0;Ei(l,(c[l+104>>2]|0)+(g*20|0)|0,h,0)}g=c[j>>2]|0;if((c[k>>2]|0)>(g|0)){c[j>>2]=g+1;v=c[l+104>>2]|0;a[v+(g*20|0)>>0]=-95;b[v+(g*20|0)+2>>1]=0;c[v+(g*20|0)+4>>2]=m;c[v+(g*20|0)+8>>2]=i;c[v+(g*20|0)+12>>2]=0;c[v+(g*20|0)+16>>2]=0;a[v+(g*20|0)+1>>0]=0;Ra=w;return}else{Di(l,161,m,i,0)|0;Ra=w;return}}function Bj(b,f,g,h,i){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=Ra;Ra=Ra+16|0;o=s;r=c[b>>2]|0;q=qj(r,g)|0;n=(f|0)!=0;if(n&(q|0)!=0?(j=c[f>>2]|0,(j|0)>0):0){m=0;g=j;do{k=c[f+8+(m<<4)>>2]|0;l=a[q>>0]|0;j=(d[208+(l&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0;if(!(l<<24>>24==0|(j|0)!=0)){l=q;do{l=l+1|0;k=k+1|0;t=a[l>>0]|0;j=(d[208+(t&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(j|0)!=0))}if(!j){c[o>>2]=q;cd(b,49e3,o);g=c[f>>2]|0}m=m+1|0}while((m|0)<(g|0))}a:do if(n){g=(c[f>>2]<<4)+24|0;t=f;if((c[r+304>>2]|0)>>>0<=t>>>0?(c[r+308>>2]|0)>>>0>t>>>0:0){if(!(0<0|(0==0?(e[r+276>>1]|0)>>>0>>0:0))){g=f;break}g=Zd(r,f,g,0)|0;break}g=Zd(r,f,g,0)|0}else{b:do if(!r){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](24)|0;p=39;break}k=Wa[c[29356>>2]&127](24)|0;if((c[14985]|0)>>>0<24)c[14985]=24;j=59064;g=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&g>>>0>0){t=c[14978]|0;o=Tv(g|0,j|0,k|0,((k|0)<0)<<31>>31|0)|0;b=L()|0;c[14768]=((b|0)<0|(b|0)==0&o>>>0<=t>>>0)&1}g=Wa[c[29340>>2]&127](k)|0;if(!g){g=0;break a}j=Wa[c[29352>>2]&127](g)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0)c[14987]=j}else{if(c[r+272>>2]|0){if(a[r+81>>0]|0){g=0;break a}}else{do if((e[r+276>>1]|0)>=24){j=r+300|0;g=c[j>>2]|0;if(g|0){c[j>>2]=c[g>>2];p=r+284|0;c[p>>2]=(c[p>>2]|0)+1;p=39;break b}j=r+296|0;g=c[j>>2]|0;if(!g){g=r+292|0;break}else{c[j>>2]=c[g>>2];p=r+284|0;c[p>>2]=(c[p>>2]|0)+1;p=39;break b}}else g=r+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(r,24,0)|0;p=39}while(0);if((p|0)==39)if(!g){g=0;break}j=g;k=j+24|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0))}while(0);if(!(a[r+81>>0]|0)){r=g+8|0;t=c[g>>2]|0;c[r+(t<<4)+8>>2]=i;c[r+(t<<4)+4>>2]=h;c[r+(t<<4)>>2]=q;c[r+(t<<4)+12>>2]=0;c[g>>2]=t+1;t=g;Ra=s;return t|0}if(h|0)ri(r,h);if(i|0)pi(r,i,1);if(!q){t=f;Ra=s;return t|0}if(c[r+480>>2]|0){Xd(r,q);t=f;Ra=s;return t|0}t=q;if((c[r+304>>2]|0)>>>0<=t>>>0?(c[r+308>>2]|0)>>>0>t>>>0:0){t=r+300|0;c[q>>2]=c[t>>2];c[t>>2]=q;t=f;Ra=s;return t|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);t=f;Ra=s;return t|0}else{t=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);t=f;Ra=s;return t|0}return 0}function Cj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=Ra;Ra=Ra+16|0;m=p+8|0;k=p;n=e+4|0;l=c[n>>2]|0;if(!l){Ra=p;return}o=c[b>>2]|0;a:do if(f|0){j=d[208+(d[l>>0]|0)>>0]|0;while(1){h=c[f>>2]|0;i=a[h>>0]|0;g=(d[208+(i&255)>>0]|0)-j|0;if(!(i<<24>>24==0|(g|0)!=0)){i=l;do{h=h+1|0;i=i+1|0;q=a[h>>0]|0;g=(d[208+(q&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(g|0)!=0))}if(!g)break;f=c[f+32>>2]|0;if(!f)break a}if(!f){Ra=p;return}g=e+8|0;do if(!(c[g>>2]|0)){h=f+12|0;if(c[h>>2]|0?c[e+12>>2]|0:0){f=49047;break}if(!(a[f+19>>0]|0))f=49063;else{f=gk(o,c[f+8>>2]|0,0)|0;c[g>>2]=f;f=c[h>>2]|0;if(f|0){q=gk(o,f,0)|0;c[e+12>>2]=q}f=c[n>>2]|0;do if(f|0){if(o|0){if(c[o+480>>2]|0){Xd(o,f);break}q=f;if((c[o+304>>2]|0)>>>0<=q>>>0?(c[o+308>>2]|0)>>>0>q>>>0:0){q=o+300|0;c[f>>2]=c[q>>2];c[q>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{q=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);c[n>>2]=0;Ra=p;return}}else f=49030;while(0);c[m>>2]=f;c[m+4>>2]=l;cd(b,49083,m);Ra=p;return}while(0);c[k>>2]=l;cd(b,40596,k);Ra=p;return}function Dj(d,f,g,h,i,j,k){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=Ra;Ra=Ra+16|0;l=r;p=(f|0)==0;q=p&1;a:do if((g|0)==82&(i|0)==85)o=4;else{if((g|0)==83)switch(i|0){case 82:case 85:{o=4;break a}default:{}}n=c[d>>2]|0;b:do if(!n){if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](92)|0;o=28;break}l=Wa[c[29356>>2]&127](92)|0;if((c[14985]|0)>>>0<92)c[14985]=92;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){s=c[14978]|0;n=Tv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=s>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l)break a;m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0)c[14987]=m}else{if(c[n+272>>2]|0){if(a[n+81>>0]|0)break a}else{do if((e[n+276>>1]|0)>=92){m=n+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];o=n+284|0;c[o>>2]=(c[o>>2]|0)+1;o=28;break b}m=n+296|0;l=c[m>>2]|0;if(!l){l=n+292|0;break}else{c[m>>2]=c[l>>2];o=n+284|0;c[o>>2]=(c[o>>2]|0)+1;o=28;break b}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(n,92,0)|0;o=28}while(0);if((o|0)==28)if(!l)break;m=l;n=m+92|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));a[l+16>>0]=p?86:f&255;a[l+17>>0]=g;a[l+18>>0]=i;if(!(k<<24>>24))k=(b[(c[d>>2]|0)+76>>1]&2)==0?0:66;a[l+20>>0]=k;a[l+19>>0]=q;s=pn(d,j)|0;c[l+28>>2]=s;s=pn(d,h)|0;c[l+24>>2]=s;s=l;Ra=r;return s|0}while(0);if((o|0)==4)cd(d,49116,l);if(j|0)ni(c[d>>2]|0,j);if(!h){s=0;Ra=r;return s|0}ni(c[d>>2]|0,h);s=0;Ra=r;return s|0}function Ej(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;i=d+8|0;e=c[i>>2]|0;if(e|0){i=e;return i|0}e=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[e+76>>1]&8)==0:0)a[d+23>>0]=1;h=Yd(e,224,0)|0;if(!h){i=0;return i|0}f=h+104|0;g=f+120|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[h>>2]=e;e=e+4|0;f=c[e>>2]|0;if(f|0)c[f+4>>2]=h;c[h+8>>2]=f;c[h+4>>2]=0;c[e>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=d;c[i>>2]=h;Di(h,61,0,1,0)|0;i=h;return i|0}function Fj(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;k=d+108|0;l=c[k>>2]|0;if((c[d+112>>2]|0)>(l|0)){c[k>>2]=l+1;k=c[d+104>>2]|0;a[k+(l*20|0)>>0]=e;b[k+(l*20|0)+2>>1]=0;c[k+(l*20|0)+4>>2]=f;c[k+(l*20|0)+8>>2]=g;c[k+(l*20|0)+12>>2]=h;c[k+(l*20|0)+16>>2]=0;a[k+(l*20|0)+1>>0]=0;gd(d,l,i,j);return l|0}else{l=Di(d,e,f,g,h)|0;gd(d,l,i,j);return l|0}return 0}function Gj(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=f+8|0;k=c[p>>2]|0;a:do if(!k){o=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[o+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))n=15;else{o=0;break a}else{do if((e[o+276>>1]|0)>=224){k=o+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=o+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break b}k=o+296|0;l=c[k>>2]|0;if(!l){k=o+292|0;break}else{c[k>>2]=c[l>>2];m=o+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break b}}else k=o+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;n=15}while(0);if((n|0)==15)m=_d(o,224,0)|0;if(!m)o=0;else{k=m+104|0;l=k+120|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));c[m>>2]=o;k=o+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[p>>2]=m;Di(m,61,0,1,0)|0;o=m}}else o=k;while(0);k=i+28|0;Hj(f,h,c[k>>2]|0,(j|0)==109&1,c[i>>2]|0);if(!(c[i+36>>2]&32)){m=c[k>>2]|0;n=b[i+42>>1]|0;l=o+108|0;k=c[l>>2]|0;if((c[o+112>>2]|0)>(k|0)){c[l>>2]=k+1;f=c[o+104>>2]|0;a[f+(k*20|0)>>0]=j;b[f+(k*20|0)+2>>1]=0;c[f+(k*20|0)+4>>2]=g;c[f+(k*20|0)+8>>2]=m;c[f+(k*20|0)+12>>2]=h;c[f+(k*20|0)+16>>2]=0;a[f+(k*20|0)+1>>0]=0}else k=Di(o,j,g,m,h)|0;if(a[(c[o>>2]|0)+81>>0]|0)return;j=c[o+104>>2]|0;a[j+(k*20|0)+1>>0]=-3;c[j+(k*20|0)+16>>2]=n;return}k=c[i+8>>2]|0;c:do if(!k)k=0;else while(1){i=k+55|0;if(((d[i>>0]|d[i+1>>0]<<8)&3)==2)break c;k=c[k+20>>2]|0;if(!k){k=0;break}}while(0);l=c[k+44>>2]|0;m=o+108|0;n=c[m>>2]|0;if((c[o+112>>2]|0)>(n|0)){c[m>>2]=n+1;i=c[o+104>>2]|0;a[i+(n*20|0)>>0]=j;b[i+(n*20|0)+2>>1]=0;c[i+(n*20|0)+4>>2]=g;c[i+(n*20|0)+8>>2]=l;c[i+(n*20|0)+12>>2]=h;c[i+(n*20|0)+16>>2]=0;a[i+(n*20|0)+1>>0]=0}else Di(o,j,g,l,h)|0;m=c[p>>2]|0;l=Ij(f,k)|0;if(!l)return;k=c[m>>2]|0;if(!(a[k+81>>0]|0)){h=c[m+104>>2]|0;j=(c[m+108>>2]|0)+-1|0;a[h+(j*20|0)+1>>0]=-9;c[h+(j*20|0)+16>>2]=l;return}if(c[k+480>>2]|0)return;j=(c[l>>2]|0)+-1|0;c[l>>2]=j;if(j|0)return;k=c[l+12>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,l);return}j=l;if((c[k+304>>2]|0)>>>0<=j>>>0?(c[k+308>>2]|0)>>>0>j>>>0:0){j=k+300|0;c[l>>2]=c[j>>2];c[j>>2]=l;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);return}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);return}}function Hj(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=c[b+116>>2]|0;l=(l|0)==0?b:l;if((d|0)==1)return;if(!(a[(c[(c[(c[b>>2]|0)+16>>2]|0)+(d<<4)+4>>2]|0)+9>>0]|0))return;r=l+104|0;p=c[r>>2]|0;i=l+108|0;a:do if((p|0)<=0){j=c[i>>2]|0;k=(p<<4)+16|0;n=c[l>>2]|0;m=((k|0)<0)<<31>>31;if(!j){b:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))q=21;else{b=l;q=39;break a}else{do if(!(0>>0|(0==(m|0)?(e[n+276>>1]|0)>>>0>>0:0))){j=n+300|0;b=c[j>>2]|0;if(b|0){c[j>>2]=c[b>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}j=n+296|0;b=c[j>>2]|0;if(!b){b=n+292|0;break}else{c[j>>2]=c[b>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}}else b=n+288|0;while(0);c[b>>2]=(c[b>>2]|0)+1;q=21}while(0);if((q|0)==21)b=_d(n,k,m)|0;c[i>>2]=b;if(!b)b=l;else q=37}else{b=l;o=j;j=k;q=22}}else{j=c[i>>2]|0;b=0;while(1){if((c[j+(b<<4)>>2]|0)==(d|0)?(c[j+(b<<4)+4>>2]|0)==(f|0):0)break;b=b+1|0;if((b|0)>=(p|0)){q=9;break}}if((q|0)==9){k=(p<<4)+16|0;b=l;o=j;n=c[l>>2]|0;m=((k|0)<0)<<31>>31;j=k;q=22;break}r=j+(b<<4)+8|0;a[r>>0]=(a[r>>0]|g)<<24>>24!=0&1;return}while(0);do if((q|0)==22){k=o;l=n+304|0;if(((c[l>>2]|0)>>>0<=k>>>0?(c[n+308>>2]|0)>>>0>k>>>0:0)?!(m>>>0>0|((m|0)==0?j>>>0>(e[n+276>>1]|0)>>>0:0)):0){c[i>>2]=o;b=o;i=p;q=38;break}j=Zd(n,o,j,m)|0;if(j|0){c[i>>2]=j;b=j;q=37;break}if(c[n+480>>2]|0){Xd(n,o);q=39;break}if((c[l>>2]|0)>>>0<=k>>>0?(c[n+308>>2]|0)>>>0>k>>>0:0){q=n+300|0;c[o>>2]=c[q>>2];c[q>>2]=o;q=39;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);q=39;break}else{q=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);q=39;break}}while(0);if((q|0)==37){i=c[r>>2]|0;q=38}else if((q|0)==39)c[i>>2]=0;if((q|0)==38){c[r>>2]=i+1;c[b+(i<<4)>>2]=d;c[b+(i<<4)+4>>2]=f;a[b+(i<<4)+8>>0]=g;c[b+(i<<4)+12>>2]=h;return}c[r>>2]=0;b=c[b>>2]|0;i=b+81|0;if(a[i>>0]|0)return;if(a[b+82>>0]|0)return;a[i>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;r=b+272|0;c[r>>2]=(c[r>>2]|0)+1;b=c[b+236>>2]|0;if(!b)return;c[b+12>>2]=7;return}function Ij(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=b[g+52>>1]|0;r=q&65535;j=b[g+50>>1]|0;s=f+36|0;if(c[s>>2]|0){t=0;return t|0}t=g+55|0;n=c[f>>2]|0;l=r*5|0;k=l+20|0;o=n+272|0;h=(c[o>>2]|0)==0;do if(!((d[t>>0]|d[t+1>>0]<<8)&8)){a:do if(!h)if(!(a[n+81>>0]|0))m=32;else{t=0;return t|0}else{do if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){i=n+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break a}i=n+296|0;h=c[i>>2]|0;if(!h){h=n+292|0;break}else{c[i>>2]=c[h>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break a}}else h=n+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;m=32}while(0);if((m|0)==32)h=_d(n,k,0)|0;if(h|0){c[h+16>>2]=h+20+(r<<2);b[h+6>>1]=q;b[h+8>>1]=q;a[h+4>>0]=a[n+78>>0]|0;c[h+12>>2]=n;c[h>>2]=1;gw(h+24|0,0,l+-4|0)|0;p=h;o=h;break}i=n+81|0;if((a[i>>0]|0)==0?(a[n+82>>0]|0)==0:0){a[i>>0]=1;if((c[n+180>>2]|0)>0)c[n+264>>2]=1;c[o>>2]=(c[o>>2]|0)+1;i=c[n+236>>2]|0;if(i){c[i+12>>2]=7;m=41}else m=41}else m=41}else{b:do if(!h)if(!(a[n+81>>0]|0))m=13;else{t=0;return t|0}else{do if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){i=n+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}i=n+296|0;h=c[i>>2]|0;if(!h){h=n+292|0;break}else{c[i>>2]=c[h>>2];p=n+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}}else h=n+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;m=13}while(0);if((m|0)==13)h=_d(n,k,0)|0;if(h|0){c[h+16>>2]=h+20+(r<<2);b[h+6>>1]=j;b[h+8>>1]=q;a[h+4>>0]=a[n+78>>0]|0;c[h+12>>2]=n;c[h>>2]=1;gw(h+24|0,0,l+-4|0)|0;p=h;o=h;break}i=n+81|0;if((a[i>>0]|0)==0?(a[n+82>>0]|0)==0:0){a[i>>0]=1;if((c[n+180>>2]|0)>0)c[n+264>>2]=1;c[o>>2]=(c[o>>2]|0)+1;i=c[n+236>>2]|0;if(i){c[i+12>>2]=7;m=41}else m=41}else m=41}while(0);if((m|0)==41)if(!h){t=0;return t|0}else{p=h;o=0}if(q<<16>>16){n=g+32|0;l=g+28|0;m=p+16|0;k=0;do{i=c[(c[n>>2]|0)+(k<<2)>>2]|0;do if((i|0)!=34049){h=c[f>>2]|0;j=a[h+78>>0]|0;g=a[h+165>>0]|0;h=Zi(h,j,i,g&255)|0;if(!(g<<24>>24)){if(!h){h=_i(f,j,0,i)|0;break}if(!(c[h+12>>2]|0))h=_i(f,j,h,i)|0}}else h=0;while(0);c[p+20+(k<<2)>>2]=h;a[(c[m>>2]|0)+k>>0]=a[(c[l>>2]|0)+k>>0]|0;k=k+1|0}while((k|0)!=(r|0))}if(!(c[s>>2]|0)){t=p;return t|0}h=d[t>>0]|d[t+1>>0]<<8;if(!(h&256)){s=h|256;a[t>>0]=s;a[t+1>>0]=s>>8;c[f+12>>2]=513}t=(c[p>>2]|0)+-1|0;c[p>>2]=t;if(t|0){t=0;return t|0}h=c[p+12>>2]|0;if(h|0){if(c[h+480>>2]|0){Xd(h,o);t=0;return t|0}t=p;if((c[h+304>>2]|0)>>>0<=t>>>0?(c[h+308>>2]|0)>>>0>t>>>0:0){t=h+300|0;c[p>>2]=c[t>>2];c[t>>2]=o;t=0;return t|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);t=0;return t|0}else{t=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);t=0;return t|0}return 0}function Jj(f,i,j){f=f|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Z=Ra;Ra=Ra+208|0;m=Z+80|0;l=Z+72|0;s=Z+64|0;n=Z+56|0;t=Z+48|0;p=Z+40|0;w=Z+32|0;S=Z;R=Z+144|0;T=Z+140|0;W=Z+136|0;E=Z+84|0;M=f+8|0;Y=c[M>>2]|0;c[T>>2]=0;c[W>>2]=0;if(!Y){j=0;Ra=Z;return j|0}Q=i;a:while(1){if(!Q)v=114;else v=d[Q>>0]|0;u=v&255;switch(u<<24>>24){case -92:{X=6;break a}case -94:{X=12;break a}case -109:{X=36;break a}case -97:{X=37;break a}case -111:{X=40;break a}case 110:{X=80;break a}case 114:{X=87;break a}case -110:{X=90;break a}case -108:{X=127;break a}case -88:{X=138;break a}case 36:{X=139;break a}case -96:case 45:{X=157;break a}case 53:case 52:case 57:case 54:case 55:case 56:{l=0;k=v;X=158;break a}case 105:case 99:case 98:case 103:case 97:case 96:case 104:case 101:case 102:case 100:case 43:case 44:{X=228;break a}case -91:{X=231;break a}case 19:case 107:{X=276;break a}case -89:{X=279;break a}case 51:case 50:{X=284;break a}case -93:{X=296;break a}case -95:{X=299;break a}case -125:case 20:{X=420;break a}case -86:{X=424;break a}case 49:{X=436;break a}case 48:{X=451;break a}case 77:{X=453;break a}case -87:{X=461;break a}case -85:{X=462;break a}case 71:{X=542;break a}case -90:case 106:case -83:break;default:{X=469;break a}}Q=c[Q+12>>2]|0}b:switch(X|0){case 6:{i=c[Q+40>>2]|0;k=c[i+28>>2]|0;l=b[Q+34>>1]|0;if(!(a[i>>0]|0)){j=c[k+(l*24|0)+16>>2]|0;Ra=Z;return j|0}if(a[i+1>>0]|0){m=c[i+8>>2]|0;i=c[k+(l*24|0)+12>>2]|0;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;Y=c[Y+104>>2]|0;a[Y+(l*20|0)>>0]=90;b[Y+(l*20|0)+2>>1]=0;c[Y+(l*20|0)+4>>2]=m;c[Y+(l*20|0)+8>>2]=i;c[Y+(l*20|0)+12>>2]=j;c[Y+(l*20|0)+16>>2]=0;a[Y+(l*20|0)+1>>0]=0;Ra=Z;return j|0}else{Di(Y,90,m,i,j)|0;Ra=Z;return j|0}}else X=12;break}case 36:{Kj(f,Q,0,j);Ra=Z;return j|0}case 37:{i=(a[(c[Q+8>>2]|0)+4>>0]|0)==0&1;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;Y=c[Y+104>>2]|0;a[Y+(l*20|0)>>0]=70;b[Y+(l*20|0)+2>>1]=0;c[Y+(l*20|0)+4>>2]=i;c[Y+(l*20|0)+8>>2]=j;c[Y+(l*20|0)+12>>2]=0;c[Y+(l*20|0)+16>>2]=0;a[Y+(l*20|0)+1>>0]=0;Ra=Z;return j|0}else{Di(Y,70,i,j,0)|0;Ra=Z;return j|0}}case 40:{i=c[Q+8>>2]|0;if(!i){Ra=Z;return j|0}Lg(i,S,(Eu(i)|0)&1073741823,1)|0;l=c[Y>>2]|0;c:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))X=51;else X=71;else{do if((e[l+276>>1]|0)>=8){i=l+300|0;k=c[i>>2]|0;if(k|0){c[i>>2]=c[k>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=52;break c}i=l+296|0;k=c[i>>2]|0;if(!k){i=l+292|0;break}else{c[i>>2]=c[k>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=52;break c}}else i=l+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;X=51}while(0);if((X|0)==51){k=_d(l,8,0)|0;X=52}do if((X|0)==52)if(k){i=S;W=c[i>>2]|0;i=c[i+4>>2]|0;m=k;f=m;a[f>>0]=W;a[f+1>>0]=W>>8;a[f+2>>0]=W>>16;a[f+3>>0]=W>>24;m=m+4|0;a[m>>0]=i;a[m+1>>0]=i>>8;a[m+2>>0]=i>>16;a[m+3>>0]=i>>24;m=Y+108|0;i=c[m>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[m>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=-111;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=0;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,145,0,j,0)|0;l=c[Y>>2]|0;if(!(a[l+81>>0]|0)){if((i|0)<0)i=(c[m>>2]|0)+-1|0;l=c[Y+104>>2]|0;m=l+(i*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(i*20|0)+16>>2]=k;a[m>>0]=-13;break}else{Ei(Y,l+(i*20|0)|0,k,-13);break}}if(l|0){if(c[l+480>>2]|0){Xd(l,k);break}Y=k;if((c[l+304>>2]|0)>>>0<=Y>>>0?(c[l+308>>2]|0)>>>0>Y>>>0:0){Y=l+300|0;c[k>>2]=c[Y>>2];c[Y>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Y=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else X=71;while(0);if((X|0)==71){k=Y+108|0;i=c[k>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[k>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=-111;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=0;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,145,0,j,0)|0;if(!(a[(c[Y>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[k>>2]|0)+-1|0;k=c[Y+104>>2]|0;if(a[k+(i*20|0)+1>>0]|0)Ei(Y,k+(i*20|0)|0,0,-13)}}Ra=Z;return j|0}case 80:{l=c[Q+8>>2]|0;k=Y+108|0;i=c[k>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[k>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=110;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=0;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,110,0,j,0)|0;if(a[(c[Y>>2]|0)+81>>0]|0){Ra=Z;return j|0}if((i|0)<0)i=(c[k>>2]|0)+-1|0;Ei(Y,(c[Y+104>>2]|0)+(i*20|0)|0,l,0);Ra=Z;return j|0}case 87:{i=Y+108|0;k=c[i>>2]|0;if((c[Y+112>>2]|0)>(k|0)){c[i>>2]=k+1;Y=c[Y+104>>2]|0;a[Y+(k*20|0)>>0]=73;b[Y+(k*20|0)+2>>1]=0;c[Y+(k*20|0)+4>>2]=0;c[Y+(k*20|0)+8>>2]=j;c[Y+(k*20|0)+12>>2]=0;c[Y+(k*20|0)+16>>2]=0;a[Y+(k*20|0)+1>>0]=0;Ra=Z;return j|0}else{Di(Y,73,0,j,0)|0;Ra=Z;return j|0}}case 90:{q=(c[Q+8>>2]|0)+2|0;p=(Eu(q)|0)&1073741823;r=p+-1|0;k=c[Y>>2]|0;s=(r|0)/2|0;m=s+1|0;n=((m|0)<0)<<31>>31;d:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))X=100;else{m=0;n=1}else{do if(!(0>>0|(0==(n|0)?(e[k+276>>1]|0)>>>0>>0:0))){i=k+300|0;l=c[i>>2]|0;if(l|0){c[i>>2]=c[l>>2];X=k+284|0;c[X>>2]=(c[X>>2]|0)+1;X=101;break d}i=k+296|0;l=c[i>>2]|0;if(!l){i=k+292|0;break}else{c[i>>2]=c[l>>2];X=k+284|0;c[X>>2]=(c[X>>2]|0)+1;X=101;break d}}else i=k+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;X=100}while(0);if((X|0)==100){l=_d(k,m,n)|0;X=101}if((X|0)==101){k=p+-2|0;if(!l){m=0;n=1}else{if(p>>>0>2){i=0;do{f=a[q+i>>0]|0;X=a[q+(i|1)>>0]|0;a[l+(i>>>1)>>0]=(0-(X>>>6&1)&9)+X&15|(0-(f>>>6&1)&9)+f<<4;i=i+2|0}while((i|0)<(k|0));i=r>>>1}else i=0;a[l+i>>0]=0;m=l;n=0}}l=Y+108|0;i=c[l>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[l>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=75;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=s;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,75,s,j,0)|0;k=c[Y>>2]|0;if(!(a[k+81>>0]|0)){if((i|0)<0)i=(c[l>>2]|0)+-1|0;k=c[Y+104>>2]|0;l=k+(i*20|0)+1|0;if(a[l>>0]|0){Ei(Y,k+(i*20|0)|0,m,-7);Ra=Z;return j|0}if(n){Ra=Z;return j|0}c[k+(i*20|0)+16>>2]=m;a[l>>0]=-7;Ra=Z;return j|0}if(n){Ra=Z;return j|0}if(k|0){if(c[k+480>>2]|0){Xd(k,m);Ra=Z;return j|0}Y=m;if((c[k+304>>2]|0)>>>0<=Y>>>0?(c[k+308>>2]|0)>>>0>Y>>>0:0){Y=k+300|0;c[m>>2]=c[Y>>2];c[Y>>2]=m;Ra=Z;return j|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);Ra=Z;return j|0}else{Y=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);Ra=Z;return j|0}}case 127:{l=Q+32|0;i=b[l>>1]|0;n=Y+108|0;k=c[n>>2]|0;if((c[Y+112>>2]|0)>(k|0)){c[n>>2]=k+1;X=c[Y+104>>2]|0;a[X+(k*20|0)>>0]=76;b[X+(k*20|0)+2>>1]=0;c[X+(k*20|0)+4>>2]=i;c[X+(k*20|0)+8>>2]=j;c[X+(k*20|0)+12>>2]=0;c[X+(k*20|0)+16>>2]=0;a[X+(k*20|0)+1>>0]=0}else Di(Y,76,i,j,0)|0;if(!(a[(c[Q+8>>2]|0)+1>>0]|0)){Ra=Z;return j|0}m=c[f+216>>2]|0;k=b[l>>1]|0;e:do if(!m)i=0;else{l=c[m+4>>2]|0;i=2;while(1){if((c[m+(i<<2)>>2]|0)==(k|0))break;i=(c[m+(i+1<<2)>>2]|0)+i|0;if((i|0)>=(l|0)){i=0;break e}}i=m+(i+2<<2)|0}while(0);c[m>>2]=0;if(a[(c[Y>>2]|0)+81>>0]|0){Ra=Z;return j|0}f=c[Y+104>>2]|0;Y=(c[n>>2]|0)+-1|0;a[f+(Y*20|0)+1>>0]=-1;c[f+(Y*20|0)+16>>2]=i;Ra=Z;return j|0}case 138:{j=c[Q+28>>2]|0;Ra=Z;return j|0}case 139:{i=Jj(f,c[Q+12>>2]|0,j)|0;do if((i|0)!=(j|0)){k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;f=c[Y+104>>2]|0;a[f+(l*20|0)>>0]=79;b[f+(l*20|0)+2>>1]=0;c[f+(l*20|0)+4>>2]=i;c[f+(l*20|0)+8>>2]=j;c[f+(l*20|0)+12>>2]=0;c[f+(l*20|0)+16>>2]=0;a[f+(l*20|0)+1>>0]=0;break}else{Di(Y,79,i,j,0)|0;break}}while(0);k=c[Q+8>>2]|0;l=a[k>>0]|0;f:do if(!(l<<24>>24))i=67;else{i=67;m=0;do{m=m<<8|d[208+(l&255)>>0];k=k+1|0;g:do if((m|0)<1685026146){if((m|0)<1667785074){switch(m|0){case 1651273570:break;default:{X=152;break g}}switch(i<<24>>24){case 69:case 67:{i=65;break g}default:{X=151;break g}}}if((m|0)<1668050786)switch(m|0){case 1667785074:{i=66;break g}default:{X=152;break g}}else switch(m|0){case 1668050786:{i=66;break g}default:{X=152;break g}}}else{if((m|0)>=1919246700){if((m|0)>=1952807028)switch(m|0){case 1952807028:{i=66;break g}default:{X=152;break g}}switch(m|0){case 1919246700:break;default:{X=152;break g}}if(i<<24>>24==67){i=69;break}else{X=151;break}}if((m|0)<1718382433){switch(m|0){case 1685026146:break;default:{X=152;break g}}if(i<<24>>24==67){i=69;break}}else{switch(m|0){case 1718382433:break;default:{X=152;break g}}if(i<<24>>24==67){i=69;break}}}while(0);if((X|0)==151)X=0;else if((X|0)==152){X=0;if((m&16777215|0)==6909556){i=68;break f}}l=a[k>>0]|0}while(l<<24>>24!=0)}while(0);i=i<<24>>24;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;Y=c[Y+104>>2]|0;a[Y+(l*20|0)>>0]=85;b[Y+(l*20|0)+2>>1]=0;c[Y+(l*20|0)+4>>2]=j;c[Y+(l*20|0)+8>>2]=i;c[Y+(l*20|0)+12>>2]=0;c[Y+(l*20|0)+16>>2]=0;a[Y+(l*20|0)+1>>0]=0;Ra=Z;return j|0}else{Di(Y,85,j,i,0)|0;Ra=Z;return j|0}}case 157:{l=128;k=(v|0)==45?53:52;X=158;break}case 228:{m=Lj(f,c[Q+12>>2]|0,T)|0;i=Lj(f,c[Q+16>>2]|0,W)|0;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;Y=c[Y+104>>2]|0;a[Y+(l*20|0)>>0]=u;b[Y+(l*20|0)+2>>1]=0;c[Y+(l*20|0)+4>>2]=i;c[Y+(l*20|0)+8>>2]=m;c[Y+(l*20|0)+12>>2]=j;c[Y+(l*20|0)+16>>2]=0;a[Y+(l*20|0)+1>>0]=0;m=j;break}else{Di(Y,v,i,m,j)|0;m=j;break}}case 231:{k=Q+12|0;i=c[k>>2]|0;switch(a[i>>0]|0){case -109:{Kj(f,i,1,j);Ra=Z;return j|0}case -111:{i=c[i+8>>2]|0;if(!i){Ra=Z;return j|0}Lg(i,S,(Eu(i)|0)&1073741823,1)|0;o=-+g[S>>3];g[S>>3]=o;l=c[Y>>2]|0;h:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))X=244;else X=264;else{do if((e[l+276>>1]|0)>=8){i=l+300|0;k=c[i>>2]|0;if(k|0){c[i>>2]=c[k>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=245;break h}i=l+296|0;k=c[i>>2]|0;if(!k){i=l+292|0;break}else{c[i>>2]=c[k>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=245;break h}}else i=l+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;X=244}while(0);if((X|0)==244){k=_d(l,8,0)|0;X=245}do if((X|0)==245)if(k){g[h>>3]=o;a[k>>0]=a[h>>0];a[k+1>>0]=a[h+1>>0];a[k+2>>0]=a[h+2>>0];a[k+3>>0]=a[h+3>>0];a[k+4>>0]=a[h+4>>0];a[k+5>>0]=a[h+5>>0];a[k+6>>0]=a[h+6>>0];a[k+7>>0]=a[h+7>>0];m=Y+108|0;i=c[m>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[m>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=-111;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=0;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,145,0,j,0)|0;l=c[Y>>2]|0;if(!(a[l+81>>0]|0)){if((i|0)<0)i=(c[m>>2]|0)+-1|0;l=c[Y+104>>2]|0;m=l+(i*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(i*20|0)+16>>2]=k;a[m>>0]=-13;break}else{Ei(Y,l+(i*20|0)|0,k,-13);break}}if(l|0){if(c[l+480>>2]|0){Xd(l,k);break}Y=k;if((c[l+304>>2]|0)>>>0<=Y>>>0?(c[l+308>>2]|0)>>>0>Y>>>0:0){Y=l+300|0;c[k>>2]=c[Y>>2];c[Y>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Y=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else X=264;while(0);if((X|0)==264){k=Y+108|0;i=c[k>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[k>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=-111;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=0;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,145,0,j,0)|0;if(!(a[(c[Y>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[k>>2]|0)+-1|0;k=c[Y+104>>2]|0;if(a[k+(i*20|0)+1>>0]|0)Ei(Y,k+(i*20|0)|0,0,-13)}}Ra=Z;return j|0}default:{a[E>>0]=-109;c[E+4>>2]=17408;c[E+8>>2]=0;m=Lj(f,E,T)|0;i=Lj(f,c[k>>2]|0,W)|0;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;Y=c[Y+104>>2]|0;a[Y+(l*20|0)>>0]=101;b[Y+(l*20|0)+2>>1]=0;c[Y+(l*20|0)+4>>2]=i;c[Y+(l*20|0)+8>>2]=m;c[Y+(l*20|0)+12>>2]=j;c[Y+(l*20|0)+16>>2]=0;a[Y+(l*20|0)+1>>0]=0;m=j;break b}else{Di(Y,101,i,m,j)|0;m=j;break b}}}}case 276:{i=Lj(f,c[Q+12>>2]|0,T)|0;k=Y+108|0;l=c[k>>2]|0;if((c[Y+112>>2]|0)>(l|0)){c[k>>2]=l+1;m=c[Y+104>>2]|0;a[m+(l*20|0)>>0]=u;b[m+(l*20|0)+2>>1]=0;c[m+(l*20|0)+4>>2]=i;c[m+(l*20|0)+8>>2]=j;c[m+(l*20|0)+12>>2]=0;c[m+(l*20|0)+16>>2]=0;a[m+(l*20|0)+1>>0]=0;m=j;break}else{Di(Y,v,i,j,0)|0;m=j;break}}case 279:{l=Lj(f,c[Q+12>>2]|0,T)|0;n=(a[(c[(c[Q+16>>2]|0)+8>>2]|0)+4>>0]|0)==0;m=(n^1)&1;n=(n^(a[Q+38>>0]|0)==45)&1;k=Y+108|0;i=c[k>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[k>>2]=i+1;S=c[Y+104>>2]|0;a[S+(i*20|0)>>0]=88;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=l;c[S+(i*20|0)+8>>2]=j;c[S+(i*20|0)+12>>2]=m;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else i=Di(Y,88,l,j,m)|0;if(!(a[(c[Y>>2]|0)+81>>0]|0)){m=c[Y+104>>2]|0;a[m+(i*20|0)+1>>0]=-3;c[m+(i*20|0)+16>>2]=n;m=j}else m=j;break}case 284:{k=Y+108|0;i=c[k>>2]|0;m=Y+112|0;if((c[m>>2]|0)>(i|0)){c[k>>2]=i+1;S=c[Y+104>>2]|0;a[S+(i*20|0)>>0]=70;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=1;c[S+(i*20|0)+8>>2]=j;c[S+(i*20|0)+12>>2]=0;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else Di(Y,70,1,j,0)|0;i=Lj(f,c[Q+12>>2]|0,T)|0;l=c[k>>2]|0;if((c[m>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[Y+104>>2]|0;a[S+(l*20|0)>>0]=u;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=i;c[S+(l*20|0)+8>>2]=0;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0}else l=Di(Y,v,i,0,0)|0;i=c[k>>2]|0;if((c[m>>2]|0)>(i|0)){c[k>>2]=i+1;S=c[Y+104>>2]|0;a[S+(i*20|0)>>0]=70;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=0;c[S+(i*20|0)+8>>2]=j;c[S+(i*20|0)+12>>2]=0;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else Di(Y,70,0,j,0)|0;k=c[k>>2]|0;if(!(a[(c[Y>>2]|0)+81>>0]|0))i=(c[Y+104>>2]|0)+(((l|0)<0?k+-1|0:l)*20|0)|0;else i=59308;c[i+8>>2]=k;m=j;break}case 296:{i=c[Q+40>>2]|0;if(!i){c[p>>2]=c[Q+8>>2];cd(f,38820,p);m=j;break}j=c[(c[i+40>>2]|0)+(b[Q+34>>1]<<4)+8>>2]|0;Ra=Z;return j|0}case 299:{x=c[f>>2]|0;k=a[x+78>>0]|0;w=Q+4|0;i=c[w>>2]|0;if(i&16777216|0){j=c[(c[Q+44>>2]|0)+52>>2]|0;Ra=Z;return j|0}do if(a[f+23>>0]|0){R=S+20|0;a[R>>0]=2;c[S+4>>2]=127;c[S+8>>2]=128;c[S+24>>2]=0;_j(S,Q)|0;if(!(a[R>>0]|0)){i=c[w>>2]|0;break}j=Nj(f,Q,-1)|0;Ra=Z;return j|0}while(0);if((i&16384|0)==0?(r=c[Q+20>>2]|0,(r|0)!=0):0){A=r;B=c[r>>2]|0;s=1}else{A=0;B=0;s=0}i=c[Q+8>>2]|0;v=Jd(x,i,B,k,0)|0;if(v|0?(c[v+20>>2]|0)==0:0){t=v+4|0;i=c[t>>2]|0;if(i&512|0){i=f+56|0;t=c[i>>2]|0;s=t+-1|0;c[i>>2]=s;i=c[A+4>>2]|0;do if(i){if((a[i>>0]|0)!=-88){z=Jj(f,i,j)|0;X=319;break}m=c[M>>2]|0;i=c[i+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[m+104>>2]|0;a[S+(l*20|0)>>0]=78;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=i;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0;break}else{Di(m,78,i,j,0)|0;break}}else{z=Jj(f,0,j)|0;X=319}while(0);do if(((X|0)==319?(z|0)!=(j|0):0)?(y=c[M>>2]|0,y|0):0){i=y+108|0;k=c[i>>2]|0;if((c[y+112>>2]|0)>(k|0)){c[i>>2]=k+1;S=c[y+104>>2]|0;a[S+(k*20|0)>>0]=79;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=z;c[S+(k*20|0)+8>>2]=j;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0;break}else{Di(y,79,z,j,0)|0;break}}while(0);if((B|0)>1){p=Y+108|0;q=Y+112|0;r=Y+104|0;n=1;do{i=c[p>>2]|0;if((c[q>>2]|0)>(i|0)){c[p>>2]=i+1;S=c[r>>2]|0;a[S+(i*20|0)>>0]=51;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=j;c[S+(i*20|0)+8>>2]=s;c[S+(i*20|0)+12>>2]=0;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else Di(Y,51,j,s,0)|0;i=c[A+4+(n*20|0)>>2]|0;do if(i){if((a[i>>0]|0)!=-88){D=Jj(f,i,j)|0;X=336;break}m=c[M>>2]|0;i=c[i+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[m+104>>2]|0;a[S+(l*20|0)>>0]=78;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=i;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0;break}else{Di(m,78,i,j,0)|0;break}}else{D=Jj(f,0,j)|0;X=336}while(0);do if(((X|0)==336?(X=0,(D|0)!=(j|0)):0)?(C=c[M>>2]|0,C|0):0){i=C+108|0;k=c[i>>2]|0;if((c[C+112>>2]|0)>(k|0)){c[i>>2]=k+1;S=c[C+104>>2]|0;a[S+(k*20|0)>>0]=79;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=D;c[S+(k*20|0)+8>>2]=j;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0;break}else{Di(C,79,D,j,0)|0;break}}while(0);n=n+1|0}while((n|0)!=(B|0))}k=c[Y+12>>2]|0;i=0-t|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,Y,i);m=j;break}else{c[(c[k+64>>2]|0)+(i<<2)>>2]=c[Y+108>>2];m=j;break}}if(i&1024|0){j=Jj(f,c[A+4>>2]|0,j)|0;Ra=Z;return j|0}if((B|0)>0){m=S+20|0;p=S+4|0;q=S+8|0;r=S+24|0;i=0;n=0;l=0;do{if(l>>>0<32){k=c[A+4+(l*20|0)>>2]|0;a[m>>0]=1;c[p>>2]=127;c[q>>2]=128;c[r>>2]=0;if(!k)k=1<>0]|0)==0?0:1<>2]&32|0)==0))n=Yi(f,c[A+4+(l*20|0)>>2]|0)|0;l=l+1|0}while((l|0)!=(B|0));u=i}else{u=0;n=0}if(s){do if(!u)if((B|0)==1){i=f+19|0;k=a[i>>0]|0;if(!(k<<24>>24)){W=f+44|0;l=(c[W>>2]|0)+1|0;c[W>>2]=l;break}else{l=k+-1<<24>>24;a[i>>0]=l;l=c[f+148+((l&255)<<2)>>2]|0;break}}else{i=f+32|0;l=c[i>>2]|0;k=f+28|0;m=c[k>>2]|0;if((m|0)<(B|0)){W=f+44|0;l=c[W>>2]|0;c[W>>2]=l+B;l=l+1|0;break}else{c[i>>2]=l+B;c[k>>2]=m-B;break}}else{W=f+44|0;l=c[W>>2]|0;c[W>>2]=l+B;l=l+1|0}while(0);i=c[t>>2]&192;i:do if(i|0){k=c[A+4>>2]|0;switch(a[k>>0]|0){case -92:case -94:break;default:break i}a[k+38>>0]=i}while(0);Oj(f,A,l,0,3);r=l}else r=0;if((B|0)>1)if(!(c[w>>2]&128))X=375;else{i=A+24|0;X=376}else if((B|0)==1)X=375;else q=v;if((X|0)==375){i=A+4|0;X=376}if((X|0)==376)q=Pj(x,v,B,c[i>>2]|0)|0;do if(c[q+4>>2]&32){if(!n)n=c[x+8>>2]|0;p=Y+108|0;i=c[p>>2]|0;k=Y+112|0;if((c[k>>2]|0)>(i|0)){c[p>>2]=i+1;l=c[Y+104>>2]|0;a[l+(i*20|0)>>0]=82;l=l+(i*20|0)+1|0;m=l+19|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(m|0))}else i=Di(Y,82,0,0,0)|0;if(!(a[(c[Y>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[p>>2]|0)+-1|0;l=c[Y+104>>2]|0;m=l+(i*20|0)+1|0;if(a[m>>0]|0){Ei(Y,l+(i*20|0)|0,n,-2);break}if(!n)break;c[l+(i*20|0)+16>>2]=n;a[m>>0]=-2}}else{p=Y+108|0;k=Y+112|0}while(0);l=(c[f+52>>2]|0)==0?63:62;i=c[p>>2]|0;if((c[k>>2]|0)>(i|0)){c[p>>2]=i+1;X=c[Y+104>>2]|0;a[X+(i*20|0)>>0]=l;b[X+(i*20|0)+2>>1]=0;c[X+(i*20|0)+4>>2]=u;c[X+(i*20|0)+8>>2]=r;c[X+(i*20|0)+12>>2]=j;c[X+(i*20|0)+16>>2]=0;a[X+(i*20|0)+1>>0]=0}else i=Di(Y,l,u,r,j)|0;k=c[Y>>2]|0;j:do if(!(a[k+81>>0]|0)){if((i|0)<0)i=(c[p>>2]|0)+-1|0;k=c[Y+104>>2]|0;l=k+(i*20|0)+1|0;if(a[l>>0]|0){Ei(Y,k+(i*20|0)|0,q,-8);break}if(q|0){c[k+(i*20|0)+16>>2]=q;a[l>>0]=-8}}else if(c[q+4>>2]&16|0){do if(k|0){if(c[k+480>>2]|0){Xd(k,q);break j}i=q;if((c[k+304>>2]|0)>>>0>i>>>0)break;if((c[k+308>>2]|0)>>>0<=i>>>0)break;X=k+300|0;c[q>>2]=c[X>>2];c[X>>2]=q;break j}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{X=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-X;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}while(0);i=c[p>>2]|0;if((i|0)>0)b[(c[Y+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=B&255;if(!((B|0)!=0&(u|0)==0)){Ra=Z;return j|0}if((B|0)!=1){i=f+28|0;if((c[i>>2]|0)>=(B|0)){Ra=Z;return j|0}c[i>>2]=B;c[f+32>>2]=r;Ra=Z;return j|0}if(!r){Ra=Z;return j|0}i=f+19|0;k=a[i>>0]|0;if((k&255)>=8){Ra=Z;return j|0}a[i>>0]=k+1<<24>>24;c[f+148+((k&255)<<2)>>2]=r;Ra=Z;return j|0}c[t>>2]=i;cd(f,38846,t);m=j;break}case 420:{if((v|0)==131?(k=c[c[c[Q+20>>2]>>2]>>2]|0,(k|0)!=1):0){c[n>>2]=k;c[n+4>>2]=1;cd(f,39001,n);m=j;break}j=Qj(f,Q)|0;Ra=Z;return j|0}case 424:{m=Q+12|0;i=c[m>>2]|0;if(!(c[i+28>>2]|0)){j=Qj(f,i)|0;i=c[m>>2]|0;c[i+28>>2]=j}l=c[Q+28>>2]|0;if(l){k=a[i>>0]|0;if(k<<24>>24==-88)k=a[i+38>>0]|0;switch(k<<24>>24){case -87:{k=i+20|0;X=432;break}case -125:{k=c[i+20>>2]|0;X=432;break}default:k=1}if((X|0)==432)k=c[c[k>>2]>>2]|0;if((l|0)!=(k|0)){c[s>>2]=l;c[s+4>>2]=k;cd(f,38869,s);i=c[m>>2]|0}}j=(c[i+28>>2]|0)+(b[Q+32>>1]|0)|0;Ra=Z;return j|0}case 436:{p=f+56|0;n=c[p>>2]|0;i=n+-2|0;c[p>>2]=i;p=Y+108|0;k=c[p>>2]|0;m=Y+112|0;if((c[m>>2]|0)>(k|0)){c[p>>2]=k+1;X=c[Y+104>>2]|0;a[X+(k*20|0)>>0]=73;b[X+(k*20|0)+2>>1]=0;c[X+(k*20|0)+4>>2]=0;c[X+(k*20|0)+8>>2]=j;c[X+(k*20|0)+12>>2]=0;c[X+(k*20|0)+16>>2]=0;a[X+(k*20|0)+1>>0]=0}else Di(Y,73,0,j,0)|0;Rj(f,Q,n+-1|0,i);i=c[p>>2]|0;if((c[m>>2]|0)>(i|0)){c[p>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=70;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=1;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else Di(Y,70,1,j,0)|0;l=Y+12|0;i=c[l>>2]|0;k=0-n|0;if(((c[i+56>>2]|0)+(c[i+60>>2]|0)|0)<0)mk(i,Y,k);else c[(c[i+64>>2]|0)+(k<<2)>>2]=c[p>>2];i=c[p>>2]|0;if((c[m>>2]|0)>(i|0)){c[p>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=83;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=j;c[f+(i*20|0)+8>>2]=0;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else Di(Y,83,j,0,0)|0;k=c[l>>2]|0;i=1-n|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,Y,i);Ra=Z;return j|0}else{c[(c[k+64>>2]|0)+(i<<2)>>2]=c[p>>2];Ra=Z;return j|0}}case 451:{Sj(f,c[Q+12>>2]|0,c[Q+20>>2]|0,j,0,0);Ra=Z;return j|0}case 453:{m=c[Q+44>>2]|0;k=G((b[m+42>>1]|0)+1|0,c[Q+28>>2]|0)|0;i=Q+32|0;k=(b[i>>1]|0)+1+k|0;n=Y+108|0;l=c[n>>2]|0;p=Y+112|0;if((c[p>>2]|0)>(l|0)){c[n>>2]=l+1;S=c[Y+104>>2]|0;a[S+(l*20|0)>>0]=-107;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=k;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0}else Di(Y,149,k,j,0)|0;S=b[i>>1]|0;if(S<<16>>16>-1?(a[(c[m+4>>2]|0)+(S<<16>>16<<4)+13>>0]|0)==69:0){i=c[n>>2]|0;if((c[p>>2]|0)>(i|0)){c[n>>2]=i+1;m=c[Y+104>>2]|0;a[m+(i*20|0)>>0]=84;b[m+(i*20|0)+2>>1]=0;c[m+(i*20|0)+4>>2]=j;c[m+(i*20|0)+8>>2]=0;c[m+(i*20|0)+12>>2]=0;c[m+(i*20|0)+16>>2]=0;a[m+(i*20|0)+1>>0]=0;m=j;break}else{Di(Y,84,j,0,0)|0;m=j;break}}else m=j;break}case 461:{cd(f,38899,l);m=j;break}case 462:{i=c[Q+28>>2]|0;l=Y+108|0;k=c[l>>2]|0;if((c[Y+112>>2]|0)>(k|0)){c[l>>2]=k+1;S=c[Y+104>>2]|0;a[S+(k*20|0)>>0]=21;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=i;c[S+(k*20|0)+8>>2]=0;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else k=Di(Y,21,i,0,0)|0;m=Jj(f,c[Q+12>>2]|0,j)|0;i=c[l>>2]|0;if(!(a[(c[Y>>2]|0)+81>>0]|0)){j=(k|0)<0?i+-1|0:k;Y=c[Y+104>>2]|0;c[Y+(j*20|0)+8>>2]=i;i=Y+(j*20|0)|0}else{c[14829]=i;i=59308}c[i+12>>2]=m;break}case 469:{C=c[Q+20>>2]|0;D=c[C>>2]|0;F=f+56|0;I=c[F>>2]|0;H=I+-1|0;c[F>>2]=H;i=c[Q+12>>2]|0;z=(i|0)!=0;if(z){l=E;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));k=c[i+4>>2]|0;ew(E|0,i|0,((k&16384|0)==0?((k&8192|0)==0?52:28):12)|0)|0;k=a[E>>0]|0;y=E+38|0;switch((k<<24>>24==-88?a[y>>0]|0:k)<<24>>24){case -87:{l=c[E+20>>2]|0;i=l;X=473;break}case -125:{l=c[E+20>>2]|0;i=c[l>>2]|0;X=473;break}default:X=474}k:do if((X|0)==473){x=c[i>>2]|0;if((x|0)!=1){c[T>>2]=0;if(k<<24>>24==-125){i=Qj(f,E)|0;break}Q=f+44|0;P=c[Q>>2]|0;i=P+1|0;c[Q>>2]=P+x;if((x|0)>0){r=E+20|0;s=f+23|0;t=S+20|0;u=S+4|0;v=S+8|0;w=S+24|0;k=0;while(1){l=c[l+4+(k*20|0)>>2]|0;q=k+i|0;do if(!(a[s>>0]|0))if(!l){B=Jj(f,0,q)|0;X=491}else X=485;else{a[t>>0]=2;c[u>>2]=127;c[v>>2]=128;c[w>>2]=0;if(l){_j(S,l)|0;if(!(a[t>>0]|0)){X=485;break}}Nj(f,l,q)|0}while(0);do if((X|0)==485){X=0;if((a[l>>0]|0)!=-88){B=Jj(f,l,q)|0;X=491;break}p=c[M>>2]|0;l=c[l+28>>2]|0;m=p+108|0;n=c[m>>2]|0;if((c[p+112>>2]|0)>(n|0)){c[m>>2]=n+1;Q=c[p+104>>2]|0;a[Q+(n*20|0)>>0]=78;b[Q+(n*20|0)+2>>1]=0;c[Q+(n*20|0)+4>>2]=l;c[Q+(n*20|0)+8>>2]=q;c[Q+(n*20|0)+12>>2]=0;c[Q+(n*20|0)+16>>2]=0;a[Q+(n*20|0)+1>>0]=0;break}else{Di(p,78,l,q,0)|0;break}}while(0);do if(((X|0)==491?(X=0,(B|0)!=(q|0)):0)?(A=c[M>>2]|0,A|0):0){l=A+108|0;m=c[l>>2]|0;if((c[A+112>>2]|0)>(m|0)){c[l>>2]=m+1;Q=c[A+104>>2]|0;a[Q+(m*20|0)>>0]=79;b[Q+(m*20|0)+2>>1]=0;c[Q+(m*20|0)+4>>2]=B;c[Q+(m*20|0)+8>>2]=q;c[Q+(m*20|0)+12>>2]=0;c[Q+(m*20|0)+16>>2]=0;a[Q+(m*20|0)+1>>0]=0;break}else{Di(A,79,B,q,0)|0;break}}while(0);k=k+1|0;if((k|0)==(x|0))break k;l=c[r>>2]|0}}}else X=474}while(0);if((X|0)==474)i=Lj(f,E,T)|0;a[y>>0]=a[E>>0]|0;a[E>>0]=-88;c[E+28>>2]=i;l=E+4|0;c[l>>2]=c[l>>2]&-4097;l=R;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));a[R>>0]=53;c[R+12>>2]=E;c[T>>2]=0;i=R}else i=0;w=D+-1|0;if((D|0)>1){r=R+16|0;s=Y+108|0;t=Y+112|0;u=Y+104|0;v=Y+12|0;q=0;do{k=c[C+4+(q*20|0)>>2]|0;if(z)c[r>>2]=k;else i=k;p=c[F>>2]|0;k=p+-1|0;c[F>>2]=k;Tj(f,i,k,16);k=c[C+4+((q|1)*20|0)>>2]|0;do if(k){if((a[k>>0]|0)!=-88){K=Jj(f,k,j)|0;X=510;break}n=c[M>>2]|0;k=c[k+28>>2]|0;l=n+108|0;m=c[l>>2]|0;if((c[n+112>>2]|0)>(m|0)){c[l>>2]=m+1;S=c[n+104>>2]|0;a[S+(m*20|0)>>0]=78;b[S+(m*20|0)+2>>1]=0;c[S+(m*20|0)+4>>2]=k;c[S+(m*20|0)+8>>2]=j;c[S+(m*20|0)+12>>2]=0;c[S+(m*20|0)+16>>2]=0;a[S+(m*20|0)+1>>0]=0;break}else{Di(n,78,k,j,0)|0;break}}else{K=Jj(f,0,j)|0;X=510}while(0);do if(((X|0)==510?(X=0,(K|0)!=(j|0)):0)?(J=c[M>>2]|0,J|0):0){k=J+108|0;l=c[k>>2]|0;if((c[J+112>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[J+104>>2]|0;a[S+(l*20|0)>>0]=79;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=K;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0;break}else{Di(J,79,K,j,0)|0;break}}while(0);k=c[s>>2]|0;if((c[t>>2]|0)>(k|0)){c[s>>2]=k+1;S=c[u>>2]|0;a[S+(k*20|0)>>0]=11;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=0;c[S+(k*20|0)+8>>2]=H;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(Y,11,0,H,0)|0;l=c[v>>2]|0;k=0-p|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,Y,k);else c[(c[l+64>>2]|0)+(k<<2)>>2]=c[s>>2];q=q+2|0}while((q|0)<(w|0))}l:do if(!(D&1)){i=Y+108|0;k=c[i>>2]|0;if((c[Y+112>>2]|0)>(k|0)){c[i>>2]=k+1;S=c[Y+104>>2]|0;a[S+(k*20|0)>>0]=73;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=0;c[S+(k*20|0)+8>>2]=j;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0;break}else{Di(Y,73,0,j,0)|0;break}}else{i=c[C+4+(w*20|0)>>2]|0;do if(i){if((a[i>>0]|0)!=-88){l=Jj(f,i,j)|0;break}m=c[M>>2]|0;i=c[i+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[m+104>>2]|0;a[S+(l*20|0)>>0]=78;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=i;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0;break l}else{Di(m,78,i,j,0)|0;break l}}else l=Jj(f,0,j)|0;while(0);if((l|0)!=(j|0)?(L=c[M>>2]|0,L|0):0){i=L+108|0;k=c[i>>2]|0;if((c[L+112>>2]|0)>(k|0)){c[i>>2]=k+1;S=c[L+104>>2]|0;a[S+(k*20|0)>>0]=79;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=l;c[S+(k*20|0)+8>>2]=j;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0;break}else{Di(L,79,l,j,0)|0;break}}}while(0);k=c[Y+12>>2]|0;i=0-I|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,Y,i);else c[(c[k+64>>2]|0)+(i<<2)>>2]=c[Y+108>>2];m=j;break}case 542:{if(!(c[f+120>>2]|0)){cd(f,38917,m);j=0;Ra=Z;return j|0}i=a[Q+1>>0]|0;switch(i<<24>>24){case 2:{Y=c[f+116>>2]|0;a[((Y|0)==0?f:Y)+21>>0]=1;break}case 4:{l=c[Q+8>>2]|0;k=Y+108|0;i=c[k>>2]|0;if((c[Y+112>>2]|0)>(i|0)){c[k>>2]=i+1;S=c[Y+104>>2]|0;a[S+(i*20|0)>>0]=69;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=0;c[S+(i*20|0)+8>>2]=4;c[S+(i*20|0)+12>>2]=0;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else i=Di(Y,69,0,4,0)|0;if(a[(c[Y>>2]|0)+81>>0]|0){m=j;break b}if((i|0)<0)i=(c[k>>2]|0)+-1|0;Ei(Y,(c[Y+104>>2]|0)+(i*20|0)|0,l,0);m=j;break b}default:{}}Uj(f,1811,i<<24>>24,c[Q+8>>2]|0,0,0);m=j;break}}if((X|0)==12){i=c[Q+28>>2]|0;if(!(c[Q+4>>2]&8)){do if((i|0)<0){i=c[f+52>>2]|0;if((i|0)>=0){i=i+-1|0;break}j=(b[Q+32>>1]|0)-i|0;Ra=Z;return j|0}while(0);k=a[Q+38>>0]|0;Vj(Y,c[Q+44>>2]|0,i,b[Q+32>>1]|0,j);if(!(k<<24>>24)){Ra=Z;return j|0}i=c[Y+108>>2]|0;if((i|0)<=0){Ra=Z;return j|0}b[(c[Y+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=k&255;Ra=Z;return j|0}m=Jj(f,c[Q+12>>2]|0,j)|0;i=b[Q+32>>1]|0;if(i<<16>>16>-1){i=a[(c[(c[Q+44>>2]|0)+4>>2]|0)+(i<<16>>16<<4)+13>>0]|0;if(i<<24>>24==65){j=m;Ra=Z;return j|0}else l=i<<24>>24}else l=68;n=Y+108|0;do if((m|0)!=(j|0)){i=c[n>>2]|0;k=Y+112|0;if((c[k>>2]|0)>(i|0)){c[n>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=79;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=m;c[f+(i*20|0)+8>>2]=j;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0;break}else{Di(Y,79,m,j,0)|0;break}}else k=Y+112|0;while(0);m=38812+((l<<1)+-132)|0;i=c[n>>2]|0;if((c[k>>2]|0)>(i|0)){c[n>>2]=i+1;f=c[Y+104>>2]|0;a[f+(i*20|0)>>0]=91;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=j;c[f+(i*20|0)+8>>2]=1;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else i=Di(Y,91,j,1,0)|0;if(a[(c[Y>>2]|0)+81>>0]|0){Ra=Z;return j|0}if((i|0)<0)i=(c[n>>2]|0)+-1|0;k=c[Y+104>>2]|0;l=k+(i*20|0)+1|0;if(!(a[l>>0]|0)){c[k+(i*20|0)+16>>2]=m;a[l>>0]=-1;Ra=Z;return j|0}else{Ei(Y,k+(i*20|0)|0,m,-1);Ra=Z;return j|0}}do if((X|0)==158){N=c[Q+12>>2]|0;n=a[N>>0]|0;m=n<<24>>24==-88;if(m)i=a[N+38>>0]|0;else i=n;switch(i<<24>>24){case -87:{q=N+20|0;X=163;break}case -125:{q=c[N+20>>2]|0;X=163;break}default:{}}if((X|0)==163?(c[c[q>>2]>>2]|0)>=2:0){M=k&255;p=l&255;L=c[Q+16>>2]|0;if(m)i=a[N+38>>0]|0;else i=n;switch(i<<24>>24){case -87:{i=N+20|0;X=169;break}case -125:{i=c[N+20>>2]|0;X=169;break}default:l=1}if((X|0)==169)l=c[c[i>>2]>>2]|0;i=f+56|0;K=c[i>>2]|0;J=K+-1|0;c[i>>2]=J;i=a[L>>0]|0;if(i<<24>>24==-88)k=a[L+38>>0]|0;else k=i;switch(k<<24>>24){case -87:{k=L+20|0;X=175;break}case -125:{k=c[L+20>>2]|0;X=175;break}default:k=1}if((X|0)==175)k=c[c[k>>2]>>2]|0;if((l|0)!=(k|0)){cd(f,38899,w);m=j;break}k=M<<24>>24==55?56:M;if(n<<24>>24==-125){H=Qj(f,N)|0;i=a[L>>0]|0}else H=0;if(i<<24>>24==-125)t=Qj(f,L)|0;else t=0;u=N+38|0;v=N+20|0;w=N+28|0;x=N+20|0;y=L+38|0;z=L+20|0;A=L+28|0;B=L+20|0;C=f+19|0;D=l+-1|0;I=Y+108|0;E=Y+112|0;F=Y+104|0;s=l+-2|0;i=p|32;r=0;k=k<<24>>24==57?54:k;while(1){c[S>>2]=0;c[R>>2]=0;switch(a[N>>0]|0){case -88:{m=a[u>>0]|0;switch(m<<24>>24){case -87:{l=x;X=186;break}case -125:{l=c[v>>2]|0;X=186;break}default:l=N}do if((X|0)==186){X=0;if((c[c[l>>2]>>2]|0)>=2)if(m<<24>>24==-125){l=c[(c[c[v>>2]>>2]|0)+4+(r*20|0)>>2]|0;break}else{l=c[(c[x>>2]|0)+4+(r*20|0)>>2]|0;break}else l=N}while(0);p=(c[w>>2]|0)+r|0;break}case -125:{p=r+H|0;l=c[(c[c[v>>2]>>2]|0)+4+(r*20|0)>>2]|0;break}default:{l=c[(c[v>>2]|0)+4+(r*20|0)>>2]|0;p=Lj(f,l,S)|0}}switch(a[L>>0]|0){case -88:{n=a[y>>0]|0;switch(n<<24>>24){case -87:{m=B;X=196;break}case -125:{m=c[z>>2]|0;X=196;break}default:m=L}do if((X|0)==196){X=0;if((c[c[m>>2]>>2]|0)>=2)if(n<<24>>24==-125){m=c[(c[c[z>>2]>>2]|0)+4+(r*20|0)>>2]|0;break}else{m=c[(c[B>>2]|0)+4+(r*20|0)>>2]|0;break}else m=L}while(0);n=(c[A>>2]|0)+r|0;break}case -125:{n=r+t|0;m=c[(c[c[z>>2]>>2]|0)+4+(r*20|0)>>2]|0;break}default:{m=c[(c[z>>2]|0)+4+(r*20|0)>>2]|0;n=Lj(f,m,R)|0}}q=i&255;Mj(f,l,m,k&255,p,n,j,q);l=c[S>>2]|0;if(l|0?(O=a[C>>0]|0,(O&255)<8):0){a[C>>0]=O+1<<24>>24;c[f+148+((O&255)<<2)>>2]=l}l=c[R>>2]|0;if(l|0?(P=a[C>>0]|0,(P&255)<8):0){a[C>>0]=P+1<<24>>24;c[f+148+((P&255)<<2)>>2]=l}if((r|0)==(D|0))break;switch(k<<24>>24){case 53:{i=c[I>>2]|0;if((c[E>>2]|0)>(i|0)){c[I>>2]=i+1;Q=c[F>>2]|0;a[Q+(i*20|0)>>0]=20;b[Q+(i*20|0)+2>>1]=0;c[Q+(i*20|0)+4>>2]=j;c[Q+(i*20|0)+8>>2]=J;c[Q+(i*20|0)+12>>2]=0;c[Q+(i*20|0)+16>>2]=0;a[Q+(i*20|0)+1>>0]=0}else Di(Y,20,j,J,0)|0;i=(q|8)&255;k=53;break}case 52:{i=c[I>>2]|0;if((c[E>>2]|0)>(i|0)){c[I>>2]=i+1;Q=c[F>>2]|0;a[Q+(i*20|0)>>0]=18;b[Q+(i*20|0)+2>>1]=0;c[Q+(i*20|0)+4>>2]=j;c[Q+(i*20|0)+8>>2]=J;c[Q+(i*20|0)+12>>2]=0;c[Q+(i*20|0)+16>>2]=0;a[Q+(i*20|0)+1>>0]=0}else Di(Y,18,j,J,0)|0;i=(q|8)&255;k=52;break}default:{l=c[I>>2]|0;if((c[E>>2]|0)>(l|0)){c[I>>2]=l+1;Q=c[F>>2]|0;a[Q+(l*20|0)>>0]=58;b[Q+(l*20|0)+2>>1]=0;c[Q+(l*20|0)+4>>2]=0;c[Q+(l*20|0)+8>>2]=J;c[Q+(l*20|0)+12>>2]=0;c[Q+(l*20|0)+16>>2]=0;a[Q+(l*20|0)+1>>0]=0}else Di(Y,58,0,J,0)|0;k=(r|0)==(s|0)?M:k}}r=r+1|0}k=c[Y+12>>2]|0;i=0-K|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,Y,i);m=j;break}else{c[(c[k+64>>2]|0)+(i<<2)>>2]=c[I>>2];m=j;break}}Y=Lj(f,N,T)|0;X=Q+16|0;m=Lj(f,c[X>>2]|0,W)|0;Mj(f,N,c[X>>2]|0,k,Y,m,j,l|32);m=j}while(0);i=c[T>>2]|0;if(i|0?(U=f+19|0,V=a[U>>0]|0,(V&255)<8):0){a[U>>0]=V+1<<24>>24;c[f+148+((V&255)<<2)>>2]=i}i=c[W>>2]|0;if(!i){j=m;Ra=Z;return j|0}k=f+19|0;l=a[k>>0]|0;if((l&255)>=8){j=m;Ra=Z;return j|0}a[k>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=i;j=m;Ra=Z;return j|0}function Kj(f,h,i,j){f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=Ra;Ra=Ra+32|0;s=w+16|0;u=w+8|0;n=w;v=c[f+8>>2]|0;if(c[h+4>>2]&1024|0){l=c[h+8>>2]|0;l=(i|0)==0?l:0-l|0;h=v+108|0;k=c[h>>2]|0;if((c[v+112>>2]|0)>(k|0)){c[h>>2]=k+1;v=c[v+104>>2]|0;a[v+(k*20|0)>>0]=70;b[v+(k*20|0)+2>>1]=0;c[v+(k*20|0)+4>>2]=l;c[v+(k*20|0)+8>>2]=j;c[v+(k*20|0)+12>>2]=0;c[v+(k*20|0)+16>>2]=0;a[v+(k*20|0)+1>>0]=0;Ra=w;return}else{Di(v,70,l,j,0)|0;Ra=w;return}}q=c[h+8>>2]|0;h=Vd(q,n)|0;r=(i|0)!=0;do if(!((h|0)==2|(r|(h|0)!=3)^1)?(o=n,m=c[o>>2]|0,o=c[o+4>>2]|0,!(r&((m|0)==0&(o|0)==-2147483648))):0){if(r){h=(h|0)==3;m=Tv(0,0,m|0,o|0)|0;o=L()|0;m=h?0:m;o=h?-2147483648:o;c[n>>2]=m;c[n+4>>2]=o}n=c[v>>2]|0;a:do if(c[n+272>>2]|0){if(!(a[n+81>>0]|0))t=68}else{do if((e[n+276>>1]|0)>=8){h=n+300|0;l=c[h>>2]|0;if(l|0){c[h>>2]=c[l>>2];t=n+284|0;c[t>>2]=(c[t>>2]|0)+1;t=69;break a}h=n+296|0;l=c[h>>2]|0;if(!l){h=n+292|0;break}else{c[h>>2]=c[l>>2];t=n+284|0;c[t>>2]=(c[t>>2]|0)+1;t=69;break a}}else h=n+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;t=68}while(0);if((t|0)==68){l=_d(n,8,0)|0;t=69}if((t|0)==69?l|0:0){n=l;h=n;a[h>>0]=m;a[h+1>>0]=m>>8;a[h+2>>0]=m>>16;a[h+3>>0]=m>>24;n=n+4|0;a[n>>0]=o;a[n+1>>0]=o>>8;a[n+2>>0]=o>>16;a[n+3>>0]=o>>24;n=v+108|0;h=c[n>>2]|0;if((c[v+112>>2]|0)>(h|0)){c[n>>2]=h+1;o=c[v+104>>2]|0;a[o+(h*20|0)>>0]=71;b[o+(h*20|0)+2>>1]=0;c[o+(h*20|0)+4>>2]=0;c[o+(h*20|0)+8>>2]=j;c[o+(h*20|0)+12>>2]=0;c[o+(h*20|0)+16>>2]=0;a[o+(h*20|0)+1>>0]=0}else h=Di(v,71,0,j,0)|0;m=c[v>>2]|0;if(!(a[m+81>>0]|0)){if((h|0)<0)h=(c[n>>2]|0)+-1|0;m=c[v+104>>2]|0;n=m+(h*20|0)+1|0;if(!(a[n>>0]|0)){c[m+(h*20|0)+16>>2]=l;a[n>>0]=-14;break}else{Ei(v,m+(h*20|0)|0,l,-14);break}}if(m|0){if(c[m+480>>2]|0){Xd(m,l);break}o=l;if((c[m+304>>2]|0)>>>0<=o>>>0?(c[m+308>>2]|0)>>>0>o>>>0:0){o=m+300|0;c[l>>2]=c[o>>2];c[o>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{o=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}l=v+108|0;h=c[l>>2]|0;if((c[v+112>>2]|0)>(h|0)){c[l>>2]=h+1;o=c[v+104>>2]|0;a[o+(h*20|0)>>0]=71;b[o+(h*20|0)+2>>1]=0;c[o+(h*20|0)+4>>2]=0;c[o+(h*20|0)+8>>2]=j;c[o+(h*20|0)+12>>2]=0;c[o+(h*20|0)+16>>2]=0;a[o+(h*20|0)+1>>0]=0}else h=Di(v,71,0,j,0)|0;if(!(a[(c[v>>2]|0)+81>>0]|0)){if((h|0)<0)h=(c[l>>2]|0)+-1|0;l=c[v+104>>2]|0;if(a[l+(h*20|0)+1>>0]|0)Ei(v,l+(h*20|0)|0,0,-14)}}else t=7;while(0);do if((t|0)==7?q|0:0){l=a[q>>0]|0;do if(!(l<<24>>24)){h=38972;t=9}else{h=l&255;if(l<<24>>24==48){h=a[q+1>>0]|0;if(!(h<<24>>24)){h=38973;t=9;break}h=h&255;if((h|32|0)==120)break;else k=120}else k=48;p=d[208+h>>0]|0;t=13}while(0);if((t|0)==9){p=0;k=a[208+(d[h>>0]|0)>>0]|0;t=13}if((t|0)==13?(p|0)!=(k&255|0):0){Lg(q,u,(Eu(q)|0)&1073741823,1)|0;if(i|0)g[u>>3]=-+g[u>>3];l=c[v>>2]|0;b:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))t=27;else t=47;else{do if((e[l+276>>1]|0)>=8){h=l+300|0;k=c[h>>2]|0;if(k|0){c[h>>2]=c[k>>2];m=l+284|0;c[m>>2]=(c[m>>2]|0)+1;m=k;t=28;break b}h=l+296|0;k=c[h>>2]|0;if(!k){h=l+292|0;break}else{c[h>>2]=c[k>>2];m=l+284|0;c[m>>2]=(c[m>>2]|0)+1;m=k;t=28;break b}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;t=27}while(0);if((t|0)==27){m=_d(l,8,0)|0;t=28}do if((t|0)==28)if(m){h=u;s=c[h>>2]|0;h=c[h+4>>2]|0;l=m;u=l;a[u>>0]=s;a[u+1>>0]=s>>8;a[u+2>>0]=s>>16;a[u+3>>0]=s>>24;l=l+4|0;a[l>>0]=h;a[l+1>>0]=h>>8;a[l+2>>0]=h>>16;a[l+3>>0]=h>>24;l=v+108|0;h=c[l>>2]|0;if((c[v+112>>2]|0)>(h|0)){c[l>>2]=h+1;u=c[v+104>>2]|0;a[u+(h*20|0)>>0]=-111;b[u+(h*20|0)+2>>1]=0;c[u+(h*20|0)+4>>2]=0;c[u+(h*20|0)+8>>2]=j;c[u+(h*20|0)+12>>2]=0;c[u+(h*20|0)+16>>2]=0;a[u+(h*20|0)+1>>0]=0}else h=Di(v,145,0,j,0)|0;k=c[v>>2]|0;if(!(a[k+81>>0]|0)){if((h|0)<0)h=(c[l>>2]|0)+-1|0;k=c[v+104>>2]|0;l=k+(h*20|0)+1|0;if(!(a[l>>0]|0)){c[k+(h*20|0)+16>>2]=m;a[l>>0]=-13;break}else{Ei(v,k+(h*20|0)|0,m,-13);break}}if(k|0){if(c[k+480>>2]|0){Xd(k,m);break}v=m;if((c[k+304>>2]|0)>>>0<=v>>>0?(c[k+308>>2]|0)>>>0>v>>>0:0){v=k+300|0;c[m>>2]=c[v>>2];c[v>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{v=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}else t=47;while(0);if((t|0)==47){k=v+108|0;h=c[k>>2]|0;if((c[v+112>>2]|0)>(h|0)){c[k>>2]=h+1;u=c[v+104>>2]|0;a[u+(h*20|0)>>0]=-111;b[u+(h*20|0)+2>>1]=0;c[u+(h*20|0)+4>>2]=0;c[u+(h*20|0)+8>>2]=j;c[u+(h*20|0)+12>>2]=0;c[u+(h*20|0)+16>>2]=0;a[u+(h*20|0)+1>>0]=0}else h=Di(v,145,0,j,0)|0;if(!(a[(c[v>>2]|0)+81>>0]|0)){if((h|0)<0)h=(c[k>>2]|0)+-1|0;k=c[v+104>>2]|0;if(a[k+(h*20|0)+1>>0]|0)Ei(v,k+(h*20|0)|0,0,-13)}}break}c[s>>2]=r?34064:59952;c[s+4>>2]=q;cd(f,38975,s)}while(0);Ra=w;return}function Lj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=Ra;Ra=Ra+32|0;g=i;a:do if(!d)f=0;else while(1){f=c[d+4>>2]|0;if(!(f&4096)){f=d;break a}if(!(f&262144))d=d+12|0;else d=(c[d+20>>2]|0)+4|0;d=c[d>>2]|0;if(!d){f=0;break}}while(0);if((a[b+23>>0]|0?(a[f>>0]|0)!=-88:0)?(d=g+20|0,a[d>>0]=2,c[g+4>>2]=127,c[g+8>>2]=128,c[g+24>>2]=0,_j(g,f)|0,a[d>>0]|0):0){c[e>>2]=0;e=Nj(b,f,-1)|0;Ra=i;return e|0}g=b+19|0;d=a[g>>0]|0;if(!(d<<24>>24)){j=b+44|0;d=(c[j>>2]|0)+1|0;c[j>>2]=d}else{d=d+-1<<24>>24;a[g>>0]=d;d=c[b+148+((d&255)<<2)>>2]|0}f=Jj(b,f,d)|0;if((f|0)!=(d|0))if((d|0)!=0?(h=a[g>>0]|0,(h&255)<8):0){a[g>>0]=h+1<<24>>24;c[b+148+((h&255)<<2)>>2]=d;d=0}else d=0;c[e>>2]=d;j=f;Ra=i;return j|0}function Mj(d,e,f,g,h,i,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0;do if(!(c[e+4>>2]&256)){if(f|0?c[f+4>>2]&256|0:0){n=Yi(d,f)|0;break}l=Yi(d,e)|0;if(!l)n=Yi(d,f)|0;else n=l}else n=Yi(d,e)|0;while(0);f=Xj(f)|0;l=Xj(e)|0;if(f<<24>>24==0|l<<24>>24==0)l=(l|f)<<24>>24==0?65:(l&255)+(f&255)|0;else l=f<<24>>24>66|l<<24>>24>66?67:65;m=l|k;k=d+8|0;d=c[k>>2]|0;f=d+108|0;l=c[f>>2]|0;if((c[d+112>>2]|0)>(l|0)){c[f>>2]=l+1;e=c[d+104>>2]|0;a[e+(l*20|0)>>0]=g;b[e+(l*20|0)+2>>1]=0;c[e+(l*20|0)+4>>2]=i;c[e+(l*20|0)+8>>2]=j;c[e+(l*20|0)+12>>2]=h;c[e+(l*20|0)+16>>2]=0;a[e+(l*20|0)+1>>0]=0}else l=Di(d,g,i,j,h)|0;do if(!(a[(c[d>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[f>>2]|0)+-1|0;f=c[d+104>>2]|0;e=f+(l*20|0)+1|0;if(a[e>>0]|0){Ei(d,f+(l*20|0)|0,n,-2);break}if(n|0){c[f+(l*20|0)+16>>2]=n;a[e>>0]=-2}}while(0);l=c[k>>2]|0;f=c[l+108>>2]|0;if((f|0)<=0)return;b[(c[l+104>>2]|0)+((f+-1|0)*20|0)+2>>1]=m&255;return}function Nj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=b+68|0;h=c[j>>2]|0;i=(e|0)<0;a:do if(i&(h|0)!=0?(f=c[h>>2]|0,(f|0)>0):0){g=h+4|0;while(1){if(a[g+13>>0]&4?(bk(0,c[g>>2]|0,d,-1)|0)==0:0)break;if((f|0)>1){f=f+-1|0;g=g+20|0}else break a}j=c[g+16>>2]|0;return j|0}while(0);if(!d)f=0;else f=dk(c[b>>2]|0,d,0,0)|0;g=nj(c[b>>2]|0,h,f)|0;if(g){f=(c[g>>2]|0)+-1|0;h=g+4+(f*20|0)+13|0;a[h>>0]=a[h>>0]&-5|e>>>29&4;if(i){i=b+44|0;e=(c[i>>2]|0)+1|0;c[i>>2]=e}c[g+4+(f*20|0)+16>>2]=e}c[j>>2]=g;j=e;return j|0}function Oj(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=Ra;Ra=Ra+32|0;A=F;i=h&255;D=79-(i&1)|0;y=c[d+8>>2]|0;j=c[e>>2]|0;if((j|0)<=0){Ra=F;return}w=((a[d+23>>0]|0)==0?i&253:h)&255;q=(w&4|0)==0;r=(w&2|0)==0;s=A+20|0;t=A+4|0;u=A+8|0;v=A+24|0;w=(w&8|0)==0;x=(D|0)==78;l=g+-1|0;m=y+108|0;n=y+112|0;o=y+104|0;p=D&255;k=e+4|0;h=0;i=j;while(1){g=c[k>>2]|0;do if(!q?(j=b[k+16>>1]|0,z=j&65535,j<<16>>16!=0):0){if(!w){h=h+-1|0;i=i+-1|0;break}g=l+z|0;e=h+f|0;j=c[m>>2]|0;if((c[n>>2]|0)>(j|0)){c[m>>2]=j+1;G=c[o>>2]|0;a[G+(j*20|0)>>0]=p;b[G+(j*20|0)+2>>1]=0;c[G+(j*20|0)+4>>2]=g;c[G+(j*20|0)+8>>2]=e;c[G+(j*20|0)+12>>2]=0;c[G+(j*20|0)+16>>2]=0;a[G+(j*20|0)+1>>0]=0;break}else{Di(y,D,g,e,0)|0;break}}else E=10;while(0);a:do if((E|0)==10){E=0;do if(!r){a[s>>0]=2;c[t>>2]=127;c[u>>2]=128;c[v>>2]=0;if(g){_j(A,g)|0;if(!(a[s>>0]|0))break}Nj(d,g,h+f|0)|0;break a}while(0);j=h+f|0;e=Jj(d,g,j)|0;if((e|0)!=(j|0)){if(x){if(!(a[(c[y>>2]|0)+81>>0]|0))g=(c[o>>2]|0)+(((c[m>>2]|0)+-1|0)*20|0)|0;else g=59308;if(((a[g>>0]|0)==78?(B=g+12|0,C=(c[B>>2]|0)+1|0,(C+(c[g+4>>2]|0)|0)==(e|0)):0)?(C+(c[g+8>>2]|0)|0)==(j|0):0){c[B>>2]=C;break}}g=c[m>>2]|0;if((c[n>>2]|0)>(g|0)){c[m>>2]=g+1;G=c[o>>2]|0;a[G+(g*20|0)>>0]=p;b[G+(g*20|0)+2>>1]=0;c[G+(g*20|0)+4>>2]=e;c[G+(g*20|0)+8>>2]=j;c[G+(g*20|0)+12>>2]=0;c[G+(g*20|0)+16>>2]=0;a[G+(g*20|0)+1>>0]=0;break}else{Di(y,D,e,j,0)|0;break}}}while(0);h=h+1|0;if((h|0)>=(i|0))break;else k=k+20|0}Ra=F;return}function Pj(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+16|0;l=n+4|0;m=n;c[l>>2]=0;c[m>>2]=0;if(!g){m=d;Ra=n;return m|0}if((a[g>>0]|0)!=-94){m=d;Ra=n;return m|0}g=c[g+44>>2]|0;if(!g){m=d;Ra=n;return m|0}if(!(c[g+56>>2]|0)){m=d;Ra=n;return m|0}g=g+64|0;while(1){g=c[g>>2]|0;if((c[g>>2]|0)==(b|0))break;else g=g+24|0}g=c[g+8>>2]|0;h=c[(c[g>>2]|0)+72>>2]|0;if(!h){m=d;Ra=n;return m|0}k=d+32|0;if(!(_a[h&127](g,f,c[k>>2]|0,l,m)|0)){m=d;Ra=n;return m|0}g=c[k>>2]|0;if(!g)i=41;else i=((Eu(g)|0)&1073741823)+41|0;a:do if(!b){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](i)|0;j=34;break}g=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;f=59064;h=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&h>>>0>0){b=c[14978]|0;f=Tv(h|0,f|0,g|0,((g|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&f>>>0<=b>>>0)&1}h=Wa[c[29340>>2]&127](g)|0;if(!h){m=d;Ra=n;return m|0}g=Wa[c[29352>>2]&127](h)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0){c[14987]=g;b=h}else b=h}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0){m=d;Ra=n;return m|0}}else{do if(!(0<0|(0==0?(e[b+276>>1]|0)>>>0>>0:0))){h=b+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];j=b+284|0;c[j>>2]=(c[j>>2]|0)+1;j=34;break a}h=b+296|0;g=c[h>>2]|0;if(!g){g=b+292|0;break}else{c[h>>2]=c[g>>2];j=b+284|0;c[j>>2]=(c[j>>2]|0)+1;j=34;break a}}else g=b+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(b,i,0)|0;j=34}while(0);if((j|0)==34)if(!g){m=d;Ra=n;return m|0}else b=g;gw(b+40|0,0,i+-40|0)|0;f=b;g=d;h=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));f=b+40|0;c[b+32>>2]=f;h=c[k>>2]|0;if(!h)g=1;else g=((Eu(h)|0)&1073741823)+1|0;ew(f|0,h|0,g|0)|0;c[b+16>>2]=c[l>>2];c[b+8>>2]=c[m>>2];m=b+4|0;c[m>>2]=c[m>>2]|16;m=b;Ra=n;return m|0}function Qj(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=Ra;Ra=Ra+48|0;k=r+8|0;h=r;o=r+16|0;q=c[d+8>>2]|0;p=c[e+20>>2]|0;f=e+4|0;g=c[f>>2]|0;do if(!(g&32)){if(g&33554432|0){c[h>>2]=c[p+20>>2];nk(d,0,39045,h);f=c[e+48>>2]|0;g=c[e+44>>2]|0;h=q+108|0;i=c[h>>2]|0;if((c[q+112>>2]|0)>(i|0)){c[h>>2]=i+1;q=c[q+104>>2]|0;a[q+(i*20|0)>>0]=12;b[q+(i*20|0)+2>>1]=0;c[q+(i*20|0)+4>>2]=f;c[q+(i*20|0)+8>>2]=g;c[q+(i*20|0)+12>>2]=0;c[q+(i*20|0)+16>>2]=0;a[q+(i*20|0)+1>>0]=0}else Di(q,12,f,g,0)|0;q=c[e+28>>2]|0;Ra=r;return q|0}c[f>>2]=g|33554432;i=d+44|0;f=(c[i>>2]|0)+1|0;c[i>>2]=f;c[e+48>>2]=f;i=q+108|0;g=c[i>>2]|0;j=q+112|0;if((c[j>>2]|0)>(g|0)){n=g+1|0;c[i>>2]=n;m=c[q+104>>2]|0;a[m+(g*20|0)>>0]=70;b[m+(g*20|0)+2>>1]=0;c[m+(g*20|0)+4>>2]=0;c[m+(g*20|0)+8>>2]=f;c[m+(g*20|0)+12>>2]=0;c[m+(g*20|0)+16>>2]=0;a[m+(g*20|0)+1>>0]=0;f=n}else f=(Di(q,70,0,f,0)|0)+1|0;c[e+44>>2]=f;h=c[i>>2]|0;if((c[j>>2]|0)>(h|0)){c[i>>2]=h+1;f=c[q+104>>2]|0;a[f+(h*20|0)>>0]=17;f=f+(h*20|0)+1|0;g=f+19|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));n=h;break}else{n=Di(q,17,0,0,0)|0;break}}else n=0;while(0);m=(n|0)!=0;f=c[p+20>>2]|0;c[k>>2]=m?59952:39084;c[k+4>>2]=f;nk(d,1,39063,k);f=(a[e>>0]|0)==-125;if(f)i=c[c[p>>2]>>2]|0;else i=1;s=d+44|0;j=c[s>>2]|0;k=j+1|0;a[o>>0]=0;l=o+4|0;c[l>>2]=k;c[o+16>>2]=0;g=o+8|0;c[g>>2]=0;h=o+12|0;c[h>>2]=0;j=j+i|0;c[s>>2]=j;do if(f){a[o>>0]=10;c[g>>2]=k;c[h>>2]=i;f=q+108|0;g=c[f>>2]|0;if((c[q+112>>2]|0)>(g|0)){c[f>>2]=g+1;s=c[q+104>>2]|0;a[s+(g*20|0)>>0]=73;b[s+(g*20|0)+2>>1]=0;c[s+(g*20|0)+4>>2]=0;c[s+(g*20|0)+8>>2]=k;c[s+(g*20|0)+12>>2]=j;c[s+(g*20|0)+16>>2]=0;a[s+(g*20|0)+1>>0]=0;break}else{Di(q,73,0,k,j)|0;break}}else{a[o>>0]=3;g=q+108|0;f=c[g>>2]|0;if((c[q+112>>2]|0)>(f|0)){c[g>>2]=f+1;s=c[q+104>>2]|0;a[s+(f*20|0)>>0]=70;b[s+(f*20|0)+2>>1]=0;c[s+(f*20|0)+4>>2]=0;c[s+(f*20|0)+8>>2]=k;c[s+(f*20|0)+12>>2]=0;c[s+(f*20|0)+16>>2]=0;a[s+(f*20|0)+1>>0]=0;break}else{Di(q,70,0,k,0)|0;break}}while(0);i=oj(c[d>>2]|0,147,17144,0)|0;h=p+60|0;f=c[h>>2]|0;if(!f){s=ej(d,141,i,0)|0;c[h>>2]=s}else{f=f+12|0;g=c[f>>2]|0;if(g){ni(c[d>>2]|0,g);f=(c[h>>2]|0)+12|0}c[f>>2]=i}c[p+12>>2]=0;if(kj(d,p,o)|0){s=0;Ra=r;return s|0}i=c[l>>2]|0;c[e+28>>2]=i;if(!m){s=i;Ra=r;return s|0}h=q+108|0;g=c[h>>2]|0;if(!(a[(c[q>>2]|0)+81>>0]|0))f=(c[q+104>>2]|0)+(((n|0)<0?g+-1|0:n)*20|0)|0;else f=59308;c[f+8>>2]=g;f=c[e+48>>2]|0;if((c[q+112>>2]|0)>(g|0)){c[h>>2]=g+1;s=c[q+104>>2]|0;a[s+(g*20|0)>>0]=66;b[s+(g*20|0)+2>>1]=0;c[s+(g*20|0)+4>>2]=f;c[s+(g*20|0)+8>>2]=0;c[s+(g*20|0)+12>>2]=0;c[s+(g*20|0)+16>>2]=0;a[s+(g*20|0)+1>>0]=0}else Di(q,66,f,0,0)|0;f=c[e+44>>2]|0;g=c[h>>2]|0;if(!(a[(c[q>>2]|0)+81>>0]|0))f=(c[q+104>>2]|0)+((((f|0)<1?g:f)+-1|0)*20|0)|0;else f=59308;c[f+4>>2]=g+-1;s=i;Ra=r;return s|0}function Rj(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=Ra;Ra=Ra+48|0;G=U+12|0;E=U+8|0;m=U+4|0;D=U;c[E>>2]=0;c[D>>2]=0;B=f+12|0;N=c[B>>2]|0;if(ok(d,f)|0){Ra=U;return}T=pk(d,f)|0;j=c[B>>2]|0;i=a[j>>0]|0;if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=j+20|0;J=7;break}case -125:{i=c[j+20>>2]|0;J=7;break}default:K=1}if((J|0)==7)K=c[c[i>>2]>>2]|0;k=c[d>>2]|0;l=(K*5|0)+1|0;a:do if(!k){Q=Sv(l|0,0,-1,-1)|0;P=L()|0;if(!(P>>>0>0|(P|0)==0&Q>>>0>2147483390)){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](l)|0;J=32;break}i=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){Q=c[14978]|0;P=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;O=L()|0;c[14768]=((O|0)<0|(O|0)==0&P>>>0<=Q>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(i){j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;J=33}else J=33}else Q=0}else Q=0}else{if(c[k+272>>2]|0){if(a[k+81>>0]|0){Q=0;break}}else{do if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){j=k+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];J=k+284|0;c[J>>2]=(c[J>>2]|0)+1;J=32;break a}j=k+296|0;i=c[j>>2]|0;if(!i){i=k+292|0;break}else{c[j>>2]=c[i>>2];J=k+284|0;c[J>>2]=(c[J>>2]|0)+1;J=32;break a}}else i=k+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(k,l,0)|0;J=32}while(0);if((J|0)==32)if(!i)Q=0;else J=33;if((J|0)==33){gw(i|0,0,l|0)|0;Q=i}i=c[d>>2]|0;if(!(a[i+81>>0]|0)){w=d+8|0;P=c[w>>2]|0;C=(g|0)==(h|0);z=qk(d,f,3,C?0:E,Q,D)|0;j=a[N>>0]|0;if(j<<24>>24==-88)i=a[N+38>>0]|0;else i=j;switch(i<<24>>24){case -87:{i=N+20|0;J=40;break}case -125:{i=c[N+20>>2]|0;J=40;break}default:J=41}do if((J|0)==40){v=c[c[i>>2]>>2]|0;if((v|0)!=1){c[m>>2]=0;if(j<<24>>24==-125){O=Qj(d,N)|0;break}O=d+44|0;M=c[O>>2]|0;n=M+1|0;c[O>>2]=M+v;if((v|0)>0){o=N+20|0;p=d+23|0;q=G+20|0;r=G+4|0;s=G+8|0;t=G+24|0;m=0;do{i=c[(c[o>>2]|0)+4+(m*20|0)>>2]|0;u=m+n|0;do if(!(a[p>>0]|0))if(!i){y=Jj(d,0,u)|0;J=58}else J=52;else{a[q>>0]=2;c[r>>2]=127;c[s>>2]=128;c[t>>2]=0;if(i){_j(G,i)|0;if(!(a[q>>0]|0)){J=52;break}}Nj(d,i,u)|0}while(0);do if((J|0)==52){J=0;if((a[i>>0]|0)!=-88){y=Jj(d,i,u)|0;J=58;break}l=c[w>>2]|0;i=c[i+28>>2]|0;j=l+108|0;k=c[j>>2]|0;if((c[l+112>>2]|0)>(k|0)){c[j>>2]=k+1;O=c[l+104>>2]|0;a[O+(k*20|0)>>0]=78;b[O+(k*20|0)+2>>1]=0;c[O+(k*20|0)+4>>2]=i;c[O+(k*20|0)+8>>2]=u;c[O+(k*20|0)+12>>2]=0;c[O+(k*20|0)+16>>2]=0;a[O+(k*20|0)+1>>0]=0;break}else{Di(l,78,i,u,0)|0;break}}while(0);do if(((J|0)==58?(J=0,(y|0)!=(u|0)):0)?(x=c[w>>2]|0,x|0):0){i=x+108|0;j=c[i>>2]|0;if((c[x+112>>2]|0)>(j|0)){c[i>>2]=j+1;O=c[x+104>>2]|0;a[O+(j*20|0)>>0]=79;b[O+(j*20|0)+2>>1]=0;c[O+(j*20|0)+4>>2]=y;c[O+(j*20|0)+8>>2]=u;c[O+(j*20|0)+12>>2]=0;c[O+(j*20|0)+16>>2]=0;a[O+(j*20|0)+1>>0]=0;break}else{Di(x,79,y,u,0)|0;break}}while(0);m=m+1|0}while((m|0)!=(v|0));O=n}else O=n}else J=41}while(0);if((J|0)==41)O=Lj(d,N,m)|0;r=(K|0)>0;b:do if(r){i=0;do{if((c[Q+(i<<2)>>2]|0)!=(i|0))break b;i=i+1|0}while((i|0)<(K|0))}else i=0;while(0);if((i|0)!=(K|0)){do if((K|0)==1){i=d+19|0;j=a[i>>0]|0;if(!(j<<24>>24)){M=d+44|0;j=(c[M>>2]|0)+1|0;c[M>>2]=j;break}else{j=j+-1<<24>>24;a[i>>0]=j;j=c[d+148+((j&255)<<2)>>2]|0;break}}else{i=d+32|0;j=c[i>>2]|0;k=d+28|0;l=c[k>>2]|0;if((l|0)<(K|0)){M=d+44|0;j=c[M>>2]|0;c[M>>2]=j+K;j=j+1|0;break}else{c[i>>2]=j+K;c[k>>2]=l-K;break}}while(0);if(r){k=P+108|0;l=P+112|0;m=P+104|0;i=0;do{n=i+O|0;o=(c[Q+(i<<2)>>2]|0)+j|0;p=c[k>>2]|0;if((c[l>>2]|0)>(p|0)){c[k>>2]=p+1;M=c[m>>2]|0;a[M+(p*20|0)>>0]=78;b[M+(p*20|0)+2>>1]=0;c[M+(p*20|0)+4>>2]=n;c[M+(p*20|0)+8>>2]=o;c[M+(p*20|0)+12>>2]=0;c[M+(p*20|0)+16>>2]=0;a[M+(p*20|0)+1>>0]=0}else Di(P,78,n,o,0)|0;i=i+1|0}while((i|0)!=(K|0));M=j}else M=j}else M=O;c:do if((z|0)==5){v=c[f+20>>2]|0;s=Yi(d,c[B>>2]|0)|0;u=d+56|0;x=c[u>>2]|0;t=x+-1|0;c[u>>2]=t;u=(h|0)!=(g|0);do if(u){i=d+19|0;j=a[i>>0]|0;if(!(j<<24>>24)){N=d+44|0;i=(c[N>>2]|0)+1|0;c[N>>2]=i}else{N=j+-1<<24>>24;a[i>>0]=N;i=c[d+148+((N&255)<<2)>>2]|0}j=P+108|0;k=c[j>>2]|0;if((c[P+112>>2]|0)>(k|0)){c[j>>2]=k+1;w=c[P+104>>2]|0;a[w+(k*20|0)>>0]=96;b[w+(k*20|0)+2>>1]=0;c[w+(k*20|0)+4>>2]=M;c[w+(k*20|0)+8>>2]=M;c[w+(k*20|0)+12>>2]=i;c[w+(k*20|0)+16>>2]=0;a[w+(k*20|0)+1>>0]=0;w=i;break}else{Di(P,96,M,M,i)|0;w=i;break}}else w=0;while(0);if((c[v>>2]|0)>0){m=(w|0)==0;n=P+108|0;o=P+112|0;p=P+104|0;q=d+19|0;r=(s|0)==0;l=0;do{i=v+4+(l*20|0)|0;k=Lj(d,c[i>>2]|0,G)|0;d:do if(!m){i=c[i>>2]|0;j=a[i>>0]|0;if((j+91&255)<2)do{i=c[i+12>>2]|0;j=a[i>>0]|0}while((j+91&255)<2);if(j<<24>>24==-88)j=a[i+38>>0]|0;e:do switch(j<<24>>24){case -110:case -111:case 110:case -109:break d;case -94:{if(!(c[i+4>>2]&1048576)){j=c[i+44>>2]|0;if(!j)break e;i=b[i+32>>1]|0;if(i<<16>>16<=-1)break d;if(a[(c[j+4>>2]|0)+(i<<16>>16<<4)+12>>0]|0)break d}break}default:{}}while(0);i=c[n>>2]|0;if((c[o>>2]|0)>(i|0)){c[n>>2]=i+1;N=c[p>>2]|0;a[N+(i*20|0)>>0]=96;b[N+(i*20|0)+2>>1]=0;c[N+(i*20|0)+4>>2]=w;c[N+(i*20|0)+8>>2]=k;c[N+(i*20|0)+12>>2]=w;c[N+(i*20|0)+16>>2]=0;a[N+(i*20|0)+1>>0]=0;break}else{Di(P,96,w,k,w)|0;break}}while(0);i=c[n>>2]|0;j=(c[o>>2]|0)>(i|0);if(u|(l|0)<((c[v>>2]|0)+-1|0)){if(j){c[n>>2]=i+1;N=c[p>>2]|0;a[N+(i*20|0)>>0]=53;b[N+(i*20|0)+2>>1]=0;c[N+(i*20|0)+4>>2]=M;c[N+(i*20|0)+8>>2]=t;c[N+(i*20|0)+12>>2]=k;c[N+(i*20|0)+16>>2]=0;a[N+(i*20|0)+1>>0]=0}else i=Di(P,53,M,t,k)|0;do if(!(a[(c[P>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[n>>2]|0)+-1|0;j=c[p>>2]|0;k=j+(i*20|0)+1|0;if(a[k>>0]|0){Ei(P,j+(i*20|0)|0,s,-2);break}if(r)break;c[j+(i*20|0)+16>>2]=s;a[k>>0]=-2}while(0);i=c[n>>2]|0;if((i|0)>0)b[(c[p>>2]|0)+((i+-1|0)*20|0)+2>>1]=a[T>>0]|0}else{if(j){c[n>>2]=i+1;N=c[p>>2]|0;a[N+(i*20|0)>>0]=52;b[N+(i*20|0)+2>>1]=0;c[N+(i*20|0)+4>>2]=M;c[N+(i*20|0)+8>>2]=g;c[N+(i*20|0)+12>>2]=k;c[N+(i*20|0)+16>>2]=0;a[N+(i*20|0)+1>>0]=0}else i=Di(P,52,M,g,k)|0;do if(!(a[(c[P>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[n>>2]|0)+-1|0;j=c[p>>2]|0;k=j+(i*20|0)+1|0;if(a[k>>0]|0){Ei(P,j+(i*20|0)|0,s,-2);break}if(r)break;c[j+(i*20|0)+16>>2]=s;a[k>>0]=-2}while(0);i=c[n>>2]|0;if((i|0)>0)b[(c[p>>2]|0)+((i+-1|0)*20|0)+2>>1]=(a[T>>0]|16)<<24>>24}i=c[G>>2]|0;if(i|0?(F=a[q>>0]|0,(F&255)<8):0){a[q>>0]=F+1<<24>>24;c[d+148+((F&255)<<2)>>2]=i}l=l+1|0}while((l|0)<(c[v>>2]|0))}l=(w|0)==0;do if(!l){j=P+108|0;i=c[j>>2]|0;k=P+112|0;if((c[k>>2]|0)>(i|0)){c[j>>2]=i+1;N=c[P+104>>2]|0;a[N+(i*20|0)>>0]=50;b[N+(i*20|0)+2>>1]=0;c[N+(i*20|0)+4>>2]=w;c[N+(i*20|0)+8>>2]=h;c[N+(i*20|0)+12>>2]=0;c[N+(i*20|0)+16>>2]=0;a[N+(i*20|0)+1>>0]=0}else Di(P,50,w,h,0)|0;i=c[j>>2]|0;if((c[k>>2]|0)>(i|0)){c[j>>2]=i+1;h=c[P+104>>2]|0;a[h+(i*20|0)>>0]=11;b[h+(i*20|0)+2>>1]=0;c[h+(i*20|0)+4>>2]=0;c[h+(i*20|0)+8>>2]=g;c[h+(i*20|0)+12>>2]=0;c[h+(i*20|0)+16>>2]=0;a[h+(i*20|0)+1>>0]=0;break}else{Di(P,11,0,g,0)|0;break}}while(0);j=c[P+12>>2]|0;i=0-x|0;if(((c[j+56>>2]|0)+(c[j+60>>2]|0)|0)<0)mk(j,P,i);else c[(c[j+64>>2]|0)+(i<<2)>>2]=c[P+108>>2];if(!l?(H=d+19|0,I=a[H>>0]|0,(I&255)<8):0){a[H>>0]=I+1<<24>>24;c[d+148+((I&255)<<2)>>2]=w}}else{if(C){l=g;q=0}else{l=d+56|0;q=(c[l>>2]|0)+-1|0;c[l>>2]=q;l=q}f:do if(r){n=P+108|0;o=P+112|0;p=P+104|0;m=0;while(1){i=c[B>>2]|0;k=a[i>>0]|0;if(k<<24>>24==-88)j=a[i+38>>0]|0;else j=k;switch(j<<24>>24){case -87:{j=i+20|0;J=158;break}case -125:{j=c[i+20>>2]|0;J=158;break}default:{}}do if((J|0)==158){J=0;if((c[c[j>>2]>>2]|0)>=2){if(k<<24>>24!=-125?(a[i+38>>0]|0)!=-125:0){i=c[(c[i+20>>2]|0)+4+(m*20|0)>>2]|0;break}i=c[(c[c[i+20>>2]>>2]|0)+4+(m*20|0)>>2]|0}}while(0);j=a[i>>0]|0;if((j+91&255)<2)do{i=c[i+12>>2]|0;j=a[i>>0]|0}while((j+91&255)<2);if(j<<24>>24==-88)j=a[i+38>>0]|0;g:do switch(j<<24>>24){case -110:case -111:case 110:case -109:break;case -94:{if((c[i+4>>2]&1048576|0)==0?(A=c[i+44>>2]|0,(A|0)!=0):0){i=b[i+32>>1]|0;if(i<<16>>16<=-1)break g;if(!(a[(c[A+4>>2]|0)+(i<<16>>16<<4)+12>>0]|0))J=173}else J=173;break}default:J=173}while(0);do if((J|0)==173){J=0;i=m+M|0;j=c[n>>2]|0;if((c[o>>2]|0)>(j|0)){c[n>>2]=j+1;I=c[p>>2]|0;a[I+(j*20|0)>>0]=50;b[I+(j*20|0)+2>>1]=0;c[I+(j*20|0)+4>>2]=i;c[I+(j*20|0)+8>>2]=l;c[I+(j*20|0)+12>>2]=0;c[I+(j*20|0)+16>>2]=0;a[I+(j*20|0)+1>>0]=0;break}else{Di(P,50,i,l,0)|0;break}}while(0);m=m+1|0;if((m|0)==(K|0))break f}}while(0);do if((z|0)==1){l=c[D>>2]|0;j=P+108|0;i=c[j>>2]|0;k=P+112|0;if((c[k>>2]|0)>(i|0)){c[j>>2]=i+1;I=c[P+104>>2]|0;a[I+(i*20|0)>>0]=30;b[I+(i*20|0)+2>>1]=0;c[I+(i*20|0)+4>>2]=l;c[I+(i*20|0)+8>>2]=g;c[I+(i*20|0)+12>>2]=M;c[I+(i*20|0)+16>>2]=0;a[I+(i*20|0)+1>>0]=0}else Di(P,30,l,g,M)|0;i=c[j>>2]|0;if((c[k>>2]|0)>(i|0)){c[j>>2]=i+1;j=c[P+104>>2]|0;a[j+(i*20|0)>>0]=11;j=j+(i*20|0)+1|0;k=j+19|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0));z=l;break}else{i=Di(P,11,0,0,0)|0;z=l;break}}else{n=P+108|0;i=c[n>>2]|0;m=P+112|0;if((c[m>>2]|0)>(i|0)){c[n>>2]=i+1;I=c[P+104>>2]|0;a[I+(i*20|0)>>0]=91;b[I+(i*20|0)+2>>1]=0;c[I+(i*20|0)+4>>2]=M;c[I+(i*20|0)+8>>2]=K;c[I+(i*20|0)+12>>2]=0;c[I+(i*20|0)+16>>2]=0;a[I+(i*20|0)+1>>0]=0}else i=Di(P,91,M,K,0)|0;j=c[P>>2]|0;h:do if(a[j+81>>0]|0){if((K|0)!=-12)kg(j,K,T)}else{if((i|0)<0)i=(c[n>>2]|0)+-1|0;j=c[P+104>>2]|0;k=j+(i*20|0)|0;do if((K|0)<=-1){l=j+(i*20|0)+1|0;if(a[l>>0]|0)break;if((K|0)==-3){c[j+(i*20|0)+16>>2]=T;a[l>>0]=-3;break h}if(!T)break h;c[j+(i*20|0)+16>>2]=T;a[l>>0]=K;if((K|0)!=-12)break h;I=T+12|0;c[I>>2]=(c[I>>2]|0)+1;break h}while(0);Ei(P,k,T,K)}while(0);k=c[D>>2]|0;i=c[n>>2]|0;j=(c[m>>2]|0)>(i|0);if(C){if(j){c[n>>2]=i+1;h=c[P+104>>2]|0;a[h+(i*20|0)>>0]=28;b[h+(i*20|0)+2>>1]=0;c[h+(i*20|0)+4>>2]=k;c[h+(i*20|0)+8>>2]=g;c[h+(i*20|0)+12>>2]=M;c[h+(i*20|0)+16>>2]=0;a[h+(i*20|0)+1>>0]=0}else i=Di(P,28,k,g,M)|0;if(a[(c[P>>2]|0)+81>>0]|0)break c;g=c[P+104>>2]|0;a[g+(i*20|0)+1>>0]=-3;c[g+(i*20|0)+16>>2]=K;break c}else{if(j){c[n>>2]=i+1;I=c[P+104>>2]|0;a[I+(i*20|0)>>0]=29;b[I+(i*20|0)+2>>1]=0;c[I+(i*20|0)+4>>2]=k;c[I+(i*20|0)+8>>2]=0;c[I+(i*20|0)+12>>2]=M;c[I+(i*20|0)+16>>2]=0;a[I+(i*20|0)+1>>0]=0}else i=Di(P,29,k,0,M)|0;if(a[(c[P>>2]|0)+81>>0]|0){z=k;break}z=c[P+104>>2]|0;a[z+(i*20|0)+1>>0]=-3;c[z+(i*20|0)+16>>2]=K;z=k;break}}while(0);j=c[E>>2]|0;do if((K|0)==1&(j|0)!=0){k=P+108|0;l=c[k>>2]|0;if((c[P+112>>2]|0)>(l|0)){c[k>>2]=l+1;I=c[P+104>>2]|0;a[I+(l*20|0)>>0]=51;b[I+(l*20|0)+2>>1]=0;c[I+(l*20|0)+4>>2]=j;c[I+(l*20|0)+8>>2]=g;c[I+(l*20|0)+12>>2]=0;c[I+(l*20|0)+16>>2]=0;a[I+(l*20|0)+1>>0]=0;break}else{Di(P,51,j,g,0)|0;break}}while(0);do if(C){j=P+108|0;k=c[j>>2]|0;if((c[P+112>>2]|0)>(k|0)){c[j>>2]=k+1;I=c[P+104>>2]|0;a[I+(k*20|0)>>0]=11;b[I+(k*20|0)+2>>1]=0;c[I+(k*20|0)+4>>2]=0;c[I+(k*20|0)+8>>2]=g;c[I+(k*20|0)+12>>2]=0;c[I+(k*20|0)+16>>2]=0;a[I+(k*20|0)+1>>0]=0;break}else{Di(P,11,0,g,0)|0;break}}while(0);do if(q|0){k=c[P+12>>2]|0;j=~q;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,P,j);break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[P+108>>2];break}}while(0);y=P+108|0;j=c[y>>2]|0;f=P+112|0;if((c[f>>2]|0)>(j|0)){c[y>>2]=j+1;x=c[P+104>>2]|0;a[x+(j*20|0)>>0]=36;b[x+(j*20|0)+2>>1]=0;c[x+(j*20|0)+4>>2]=z;c[x+(j*20|0)+8>>2]=g;c[x+(j*20|0)+12>>2]=0;c[x+(j*20|0)+16>>2]=0;a[x+(j*20|0)+1>>0]=0;x=j}else x=Di(P,36,z,g,0)|0;v=(K|0)>1;if(v){I=d+56|0;w=(c[I>>2]|0)+-1|0;c[I>>2]=w}else w=g;i:do if(r){p=d+19|0;q=d+44|0;r=N+38|0;s=N+20|0;t=N+20|0;u=P+104|0;o=0;while(1){j=a[p>>0]|0;if(!(j<<24>>24)){n=(c[q>>2]|0)+1|0;c[q>>2]=n}else{n=j+-1<<24>>24;a[p>>0]=n;n=c[d+148+((n&255)<<2)>>2]|0}k=a[N>>0]|0;if(k<<24>>24==-88)j=a[r>>0]|0;else j=k;switch(j<<24>>24){case -87:{j=s;J=237;break}case -125:{j=c[t>>2]|0;J=237;break}default:j=N}j:do if((J|0)==237){J=0;if((c[c[j>>2]>>2]|0)<2){j=N;break}do if(k<<24>>24!=-125){if((a[r>>0]|0)==-125)break;j=c[(c[s>>2]|0)+4+(o*20|0)>>2]|0;break j}while(0);j=c[(c[c[t>>2]>>2]|0)+4+(o*20|0)>>2]|0}while(0);m=Yi(d,j)|0;j=c[y>>2]|0;if((c[f>>2]|0)>(j|0)){c[y>>2]=j+1;I=c[u>>2]|0;a[I+(j*20|0)>>0]=90;b[I+(j*20|0)+2>>1]=0;c[I+(j*20|0)+4>>2]=z;c[I+(j*20|0)+8>>2]=o;c[I+(j*20|0)+12>>2]=n;c[I+(j*20|0)+16>>2]=0;a[I+(j*20|0)+1>>0]=0}else Di(P,90,z,o,n)|0;k=o+M|0;j=c[y>>2]|0;if((c[f>>2]|0)>(j|0)){c[y>>2]=j+1;I=c[u>>2]|0;a[I+(j*20|0)>>0]=52;b[I+(j*20|0)+2>>1]=0;c[I+(j*20|0)+4>>2]=k;c[I+(j*20|0)+8>>2]=w;c[I+(j*20|0)+12>>2]=n;c[I+(j*20|0)+16>>2]=0;a[I+(j*20|0)+1>>0]=0}else j=Di(P,52,k,w,n)|0;do if(!(a[(c[P>>2]|0)+81>>0]|0)){if((j|0)<0)j=(c[y>>2]|0)+-1|0;k=c[u>>2]|0;l=k+(j*20|0)+1|0;if(a[l>>0]|0){Ei(P,k+(j*20|0)|0,m,-2);break}if(!m)break;c[k+(j*20|0)+16>>2]=m;a[l>>0]=-2}while(0);do if(n|0){j=a[p>>0]|0;if((j&255)>=8)break;a[p>>0]=j+1<<24>>24;c[d+148+((j&255)<<2)>>2]=n}while(0);o=o+1|0;if((o|0)==(K|0))break i}}while(0);j=c[y>>2]|0;if((c[f>>2]|0)>(j|0)){c[y>>2]=j+1;N=c[P+104>>2]|0;a[N+(j*20|0)>>0]=11;b[N+(j*20|0)+2>>1]=0;c[N+(j*20|0)+4>>2]=0;c[N+(j*20|0)+8>>2]=h;c[N+(j*20|0)+12>>2]=0;c[N+(j*20|0)+16>>2]=0;a[N+(j*20|0)+1>>0]=0}else Di(P,11,0,h,0)|0;do if(v){k=c[P+12>>2]|0;j=~w;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,P,j);else c[(c[k+64>>2]|0)+(j<<2)>>2]=c[y>>2];j=x+1|0;k=c[y>>2]|0;if((c[f>>2]|0)>(k|0)){c[y>>2]=k+1;h=c[P+104>>2]|0;a[h+(k*20|0)>>0]=5;b[h+(k*20|0)+2>>1]=0;c[h+(k*20|0)+4>>2]=z;c[h+(k*20|0)+8>>2]=j;c[h+(k*20|0)+12>>2]=0;c[h+(k*20|0)+16>>2]=0;a[h+(k*20|0)+1>>0]=0}else Di(P,5,z,j,0)|0;j=c[y>>2]|0;if((c[f>>2]|0)>(j|0)){c[y>>2]=j+1;h=c[P+104>>2]|0;a[h+(j*20|0)>>0]=11;b[h+(j*20|0)+2>>1]=0;c[h+(j*20|0)+4>>2]=0;c[h+(j*20|0)+8>>2]=g;c[h+(j*20|0)+12>>2]=0;c[h+(j*20|0)+16>>2]=0;a[h+(j*20|0)+1>>0]=0;break}else{Di(P,11,0,g,0)|0;break}}while(0);j=c[y>>2]|0;if(!(a[(c[P>>2]|0)+81>>0]|0))i=(c[P+104>>2]|0)+(((i|0)<0?j+-1|0:i)*20|0)|0;else i=59308;c[i+8>>2]=j}while(0);if(!((M|0)==(O|0)|(M|0)==0)?(R=d+19|0,S=a[R>>0]|0,(S&255)<8):0){a[R>>0]=S+1<<24>>24;c[d+148+((S&255)<<2)>>2]=M}i=c[d>>2]|0}do if(Q|0){if(i|0){if(c[i+480>>2]|0){Xd(i,Q);break}S=Q;if((c[i+304>>2]|0)>>>0<=S>>>0?(c[i+308>>2]|0)>>>0>S>>>0:0){S=i+300|0;c[Q>>2]=c[S>>2];c[S>>2]=Q;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](Q);break}else{S=Wa[c[29352>>2]&127](Q)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Q);break}}while(0);i=c[d>>2]|0;if(!T){Ra=U;return}if(i|0){if(c[i+480>>2]|0){Xd(i,T);Ra=U;return}d=T;if((c[i+304>>2]|0)>>>0<=d>>>0?(c[i+308>>2]|0)>>>0>d>>>0:0){d=i+300|0;c[T>>2]=c[d>>2];c[d>>2]=T;Ra=U;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](T);Ra=U;return}else{d=Wa[c[29352>>2]&127](T)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](T);Ra=U;return}}function Sj(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=Ra;Ra=Ra+240|0;y=E+212|0;C=E+160|0;j=E+108|0;k=E+56|0;B=E+4|0;D=E;c[D>>2]=0;l=j;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));l=k;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));l=C;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));l=B;m=l+52|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));w=c[e+4>>2]|0;ew(B|0,e|0,((w&16384|0)==0?((w&8192|0)==0?52:28):12)|0)|0;a[C>>0]=44;c[C+12>>2]=j;c[C+16>>2]=k;a[j>>0]=57;c[j+12>>2]=B;c[j+16>>2]=c[f+4>>2];a[k>>0]=55;c[k+12>>2]=B;c[k+16>>2]=c[f+24>>2];f=a[B>>0]|0;w=B+38|0;switch((f<<24>>24==-88?a[w>>0]|0:f)<<24>>24){case -87:{j=c[B+20>>2]|0;e=j;x=4;break}case -125:{j=c[B+20>>2]|0;e=c[j>>2]|0;x=4;break}default:x=5}a:do if((x|0)==4){v=c[e>>2]|0;if((v|0)!=1){c[D>>2]=0;if(f<<24>>24==-125){e=Qj(d,B)|0;break}u=d+44|0;t=c[u>>2]|0;e=t+1|0;c[u>>2]=t+v;if((v|0)>0){o=B+20|0;p=d+23|0;q=y+20|0;r=y+4|0;s=y+8|0;t=y+24|0;u=d+8|0;f=0;while(1){j=c[j+4+(f*20|0)>>2]|0;n=f+e|0;do if(!(a[p>>0]|0))if(!j){A=Jj(d,0,n)|0;x=22}else x=16;else{a[q>>0]=2;c[r>>2]=127;c[s>>2]=128;c[t>>2]=0;if(j){_j(y,j)|0;if(!(a[q>>0]|0)){x=16;break}}Nj(d,j,n)|0}while(0);do if((x|0)==16){x=0;if((a[j>>0]|0)!=-88){A=Jj(d,j,n)|0;x=22;break}m=c[u>>2]|0;j=c[j+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;m=c[m+104>>2]|0;a[m+(l*20|0)>>0]=78;b[m+(l*20|0)+2>>1]=0;c[m+(l*20|0)+4>>2]=j;c[m+(l*20|0)+8>>2]=n;c[m+(l*20|0)+12>>2]=0;c[m+(l*20|0)+16>>2]=0;a[m+(l*20|0)+1>>0]=0;break}else{Di(m,78,j,n,0)|0;break}}while(0);do if(((x|0)==22?(x=0,(A|0)!=(n|0)):0)?(z=c[u>>2]|0,z|0):0){j=z+108|0;k=c[j>>2]|0;if((c[z+112>>2]|0)>(k|0)){c[j>>2]=k+1;m=c[z+104>>2]|0;a[m+(k*20|0)>>0]=79;b[m+(k*20|0)+2>>1]=0;c[m+(k*20|0)+4>>2]=A;c[m+(k*20|0)+8>>2]=n;c[m+(k*20|0)+12>>2]=0;c[m+(k*20|0)+16>>2]=0;a[m+(k*20|0)+1>>0]=0;break}else{Di(z,79,A,n,0)|0;break}}while(0);f=f+1|0;if((f|0)==(v|0))break a;j=c[o>>2]|0}}}else x=5}while(0);if((x|0)==5)e=Lj(d,B,D)|0;a[w>>0]=a[B>>0]|0;a[B>>0]=-88;c[B+28>>2]=e;e=B+4|0;f=c[e>>2]&-4097;c[e>>2]=f;if(!h){c[e>>2]=f|1;Jj(d,C,g)|0}else db[h&127](d,C,g,i);e=c[D>>2]|0;if(!e){Ra=E;return}f=d+19|0;j=a[f>>0]|0;if((j&255)>=8){Ra=E;return}a[f>>0]=j+1<<24>>24;c[d+148+((j&255)<<2)>>2]=e;Ra=E;return}function Tj(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;m=t+8|0;p=t+4|0;s=t;o=c[d+8>>2]|0;c[p>>2]=0;c[s>>2]=0;if((e|0)==0|(o|0)==0){Ra=t;return}h=a[e>>0]|0;j=h^1;k=j&255;a:do switch(h<<24>>24){case 44:{Tj(d,c[e+12>>2]|0,f,g);Tj(d,c[e+16>>2]|0,f,g);break}case 43:{l=d+56|0;m=c[l>>2]|0;h=m+-1|0;c[l>>2]=h;tk(d,c[e+12>>2]|0,h,g^16);Tj(d,c[e+16>>2]|0,f,g);h=c[o+12>>2]|0;g=0-m|0;if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0){mk(h,o,g);break a}else{c[(c[h+64>>2]|0)+(g<<2)>>2]=c[o+108>>2];break a}}case 19:{tk(d,c[e+12>>2]|0,f,g);break}case -89:{o=(a[e+38>>0]|0)==-96;h=c[e+12>>2]|0;g=o?0:16;if(o^(a[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>0]|0)==0){Tj(d,h,f,g);break a}else{tk(d,h,f,g);break a}}case -96:case 45:{g=128;i=h<<24>>24==45?52:53;n=12;break}case 53:case 52:case 57:case 54:case 55:case 56:{i=k;n=12;break}case 51:case 50:{h=Lj(d,c[e+12>>2]|0,p)|0;g=o+108|0;i=c[g>>2]|0;if((c[o+112>>2]|0)>(i|0)){c[g>>2]=i+1;o=c[o+104>>2]|0;a[o+(i*20|0)>>0]=j;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=h;c[o+(i*20|0)+8>>2]=f;c[o+(i*20|0)+12>>2]=0;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0;break a}else{Di(o,k,h,f,0)|0;break a}}case 48:{Sj(d,c[e+12>>2]|0,c[e+20>>2]|0,f,66,g);break}case 49:{if(g|0){Rj(d,e,f,f);break a}m=d+56|0;g=c[m>>2]|0;h=g+-1|0;c[m>>2]=h;Rj(d,e,f,h);h=c[o+12>>2]|0;g=0-g|0;if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0){mk(h,o,g);break a}else{c[(c[h+64>>2]|0)+(g<<2)>>2]=c[o+108>>2];break a}}default:{c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0)h=(c[m>>2]|0)==0&1;else h=0;n=36}}while(0);do if((n|0)==12){j=e+12|0;k=c[j>>2]|0;h=a[k>>0]|0;if(h<<24>>24==-88)h=a[k+38>>0]|0;switch(h<<24>>24){case -87:{l=k+20|0;n=17;break}case -125:{l=c[k+20>>2]|0;n=17;break}default:{}}if((n|0)==17?(c[c[l>>2]>>2]|0)>=2:0){c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0)h=(c[m>>2]|0)==0&1;else h=0;n=36;break}m=Lj(d,k,p)|0;e=e+16|0;o=Lj(d,c[e>>2]|0,s)|0;Mj(d,c[j>>2]|0,c[e>>2]|0,i,m,o,f,g)}while(0);do if((n|0)==36){if(h|0){h=o+108|0;g=c[h>>2]|0;if((c[o+112>>2]|0)>(g|0)){c[h>>2]=g+1;o=c[o+104>>2]|0;a[o+(g*20|0)>>0]=11;b[o+(g*20|0)+2>>1]=0;c[o+(g*20|0)+4>>2]=0;c[o+(g*20|0)+8>>2]=f;c[o+(g*20|0)+12>>2]=0;c[o+(g*20|0)+16>>2]=0;a[o+(g*20|0)+1>>0]=0;break}else{Di(o,11,0,f,0)|0;break}}c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0){if(c[m>>2]|0)break}else n=42;j=Lj(d,e,p)|0;h=(g|0)!=0&1;g=o+108|0;i=c[g>>2]|0;if((c[o+112>>2]|0)>(i|0)){c[g>>2]=i+1;o=c[o+104>>2]|0;a[o+(i*20|0)>>0]=20;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=j;c[o+(i*20|0)+8>>2]=f;c[o+(i*20|0)+12>>2]=h;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0;break}else{Di(o,20,j,f,h)|0;break}}while(0);h=c[p>>2]|0;if(h|0?(q=d+19|0,r=a[q>>0]|0,(r&255)<8):0){a[q>>0]=r+1<<24>>24;c[d+148+((r&255)<<2)>>2]=h}h=c[s>>2]|0;if(!h){Ra=t;return}g=d+19|0;i=a[g>>0]|0;if((i&255)>=8){Ra=t;return}a[g>>0]=i+1<<24>>24;c[d+148+((i&255)<<2)>>2]=h;Ra=t;return}function Uj(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=d+8|0;k=c[p>>2]|0;a:do if(!k){o=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[o+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))n=15;else{p=0;break a}else{do if((e[o+276>>1]|0)>=224){k=o+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=o+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break b}k=o+296|0;l=c[k>>2]|0;if(!l){k=o+292|0;break}else{c[k>>2]=c[l>>2];m=o+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break b}}else k=o+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;n=15}while(0);if((n|0)==15)m=_d(o,224,0)|0;if(!m)p=0;else{k=m+104|0;l=k+120|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));c[m>>2]=o;k=o+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=d;c[p>>2]=m;Di(m,61,0,1,0)|0;p=m}}else p=k;while(0);if((g|0)==2){o=c[d+116>>2]|0;a[((o|0)==0?d:o)+21>>0]=1}n=i<<24>>24;o=p+108|0;k=c[o>>2]|0;if((c[p+112>>2]|0)>(k|0)){c[o>>2]=k+1;d=c[p+104>>2]|0;a[d+(k*20|0)>>0]=69;b[d+(k*20|0)+2>>1]=0;c[d+(k*20|0)+4>>2]=f;c[d+(k*20|0)+8>>2]=g;c[d+(k*20|0)+12>>2]=0;c[d+(k*20|0)+16>>2]=0;a[d+(k*20|0)+1>>0]=0}else k=Di(p,69,f,g,0)|0;l=c[p>>2]|0;do if(a[l+81>>0]|0){if(i<<24>>24!=-12)kg(l,n,h)}else{if((k|0)<0)k=(c[o>>2]|0)+-1|0;l=c[p+104>>2]|0;m=l+(k*20|0)|0;if(i<<24>>24<=-1?(q=l+(k*20|0)+1|0,(a[q>>0]|0)==0):0){if(i<<24>>24==-3){c[l+(k*20|0)+16>>2]=h;a[q>>0]=-3;break}if(!h)break;c[l+(k*20|0)+16>>2]=h;a[q>>0]=i;if(i<<24>>24!=-12)break;q=h+12|0;c[q>>2]=(c[q>>2]|0)+1;break}Ei(p,m,h,n)}while(0);k=c[o>>2]|0;if((k|0)<=0)return;b[(c[p+104>>2]|0)+((k+-1|0)*20|0)+2>>1]=j&255;return}function Vj(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+16|0;p=r;if(!f){j=e+108|0;k=c[j>>2]|0;if((c[e+112>>2]|0)>(k|0)){c[j>>2]=k+1;e=c[e+104>>2]|0;a[e+(k*20|0)>>0]=90;b[e+(k*20|0)+2>>1]=0;c[e+(k*20|0)+4>>2]=g;c[e+(k*20|0)+8>>2]=h;c[e+(k*20|0)+12>>2]=i;c[e+(k*20|0)+16>>2]=0;a[e+(k*20|0)+1>>0]=0;Ra=r;return}else{Di(e,90,g,h,i)|0;Ra=r;return}}do if((h|0)>=0?(b[f+40>>1]|0)!=(h|0):0){m=(c[f+56>>2]|0)!=0;n=m?164:90;if(m|(c[f+36>>2]&32|0)==0)j=h;else{j=c[f+8>>2]|0;a:do if(!j)j=0;else while(1){m=j+55|0;if(((d[m>>0]|d[m+1>>0]<<8)&3)==2)break a;j=c[j+20>>2]|0;if(!j){j=0;break}}while(0);m=h&65535;k=b[j+52>>1]|0;b:do if(!(k<<16>>16))j=-1;else{l=c[j+4>>2]|0;k=k&65535;j=0;while(1){if((b[l+(j<<1)>>1]|0)==m<<16>>16)break b;j=j+1|0;if(j>>>0>=k>>>0){j=-1;break}}}while(0);j=j<<16>>16}k=e+108|0;l=c[k>>2]|0;if((c[e+112>>2]|0)>(l|0)){c[k>>2]=l+1;m=c[e+104>>2]|0;a[m+(l*20|0)>>0]=n;b[m+(l*20|0)+2>>1]=0;c[m+(l*20|0)+4>>2]=g;c[m+(l*20|0)+8>>2]=j;c[m+(l*20|0)+12>>2]=i;c[m+(l*20|0)+16>>2]=0;a[m+(l*20|0)+1>>0]=0;break}else{Di(e,n,g,j,i)|0;break}}else o=7;while(0);do if((o|0)==7){j=e+108|0;k=c[j>>2]|0;if((c[e+112>>2]|0)>(k|0)){c[j>>2]=k+1;o=c[e+104>>2]|0;a[o+(k*20|0)>>0]=-128;b[o+(k*20|0)+2>>1]=0;c[o+(k*20|0)+4>>2]=g;c[o+(k*20|0)+8>>2]=i;c[o+(k*20|0)+12>>2]=0;c[o+(k*20|0)+16>>2]=0;a[o+(k*20|0)+1>>0]=0;break}else{Di(e,128,g,i,0)|0;break}}while(0);if((h|0)<=-1){Ra=r;return}if(!(c[f+12>>2]|0)){c[p>>2]=0;m=c[e>>2]|0;j=f+4|0;k=c[j>>2]|0;l=c[k+(h<<4)+4>>2]|0;do if(l|0?(Wj(m,l,a[m+78>>0]|0,a[k+(h<<4)+13>>0]|0,p)|0,q=c[p>>2]|0,q|0):0){k=c[e>>2]|0;if(!(a[k+81>>0]|0)){g=c[e+104>>2]|0;p=(c[e+108>>2]|0)+-1|0;a[g+(p*20|0)+1>>0]=-11;c[g+(p*20|0)+16>>2]=q;break}else{kg(k,-11,q);break}}while(0)}else j=f+4|0;if((a[(c[j>>2]|0)+(h<<4)+13>>0]|0)!=69){Ra=r;return}j=e+108|0;k=c[j>>2]|0;if((c[e+112>>2]|0)>(k|0)){c[j>>2]=k+1;e=c[e+104>>2]|0;a[e+(k*20|0)>>0]=84;b[e+(k*20|0)+2>>1]=0;c[e+(k*20|0)+4>>2]=i;c[e+(k*20|0)+8>>2]=0;c[e+(k*20|0)+12>>2]=0;c[e+(k*20|0)+16>>2]=0;a[e+(k*20|0)+1>>0]=0;Ra=r;return}else{Di(e,84,i,0,0)|0;Ra=r;return}}function Wj(f,i,j,k,l){f=f|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=Ra;Ra=Ra+32|0;u=H+16|0;D=H+8|0;E=H;F=H+24|0;c[F>>2]=0;p=i;a:while(1){i=a[p>>0]|0;switch(i<<24>>24){case -90:case -83:break;default:break a}p=c[p+12>>2]|0}if(i<<24>>24==-88)i=d[p+38>>0]|0;else i=i&255;b:do switch((i&255)<<24>>24){case 36:{i=c[p+8>>2]|0;n=a[i>>0]|0;c:do if(!(n<<24>>24))m=67;else{m=67;o=0;do{o=o<<8|d[208+(n&255)>>0];i=i+1|0;d:do if((o|0)<1685026146){if((o|0)<1667785074){switch(o|0){case 1651273570:break;default:{G=16;break d}}switch(m<<24>>24){case 69:case 67:{m=65;break d}default:{G=15;break d}}}if((o|0)<1668050786)switch(o|0){case 1667785074:{m=66;break d}default:{G=16;break d}}else switch(o|0){case 1668050786:{m=66;break d}default:{G=16;break d}}}else{if((o|0)>=1919246700){if((o|0)>=1952807028)switch(o|0){case 1952807028:{m=66;break d}default:{G=16;break d}}switch(o|0){case 1919246700:break;default:{G=16;break d}}if(m<<24>>24==67){m=69;break}else{G=15;break}}if((o|0)<1718382433){switch(o|0){case 1685026146:break;default:{G=16;break d}}if(m<<24>>24==67){m=69;break}}else{switch(o|0){case 1718382433:break;default:{G=16;break d}}if(m<<24>>24==67){m=69;break}}}while(0);if((G|0)==15)G=0;else if((G|0)==16){G=0;if((o&16777215|0)==6909556){m=68;break c}}n=a[i>>0]|0}while(n<<24>>24!=0)}while(0);s=Wj(f,c[p+12>>2]|0,j,m,l)|0;i=c[l>>2]|0;if(!i){l=s;Ra=H;return l|0}Sg(i,m,1);r=c[l>>2]|0;if(k<<24>>24<=66){if(k<<24>>24!=66){l=s;Ra=H;return l|0}m=r+8|0;i=b[m>>1]|0;l=i&65535;if(!((l&2|0)!=0|(l&12|0)==0)){Hg(r,1,1)|0;i=b[m>>1]|0}b[m>>1]=i&-13;l=s;Ra=H;return l|0}p=r+8|0;n=b[p>>1]|0;i=n&65535;if(i&4|0){l=s;Ra=H;return l|0}if(i&8|0){q=+g[r>>3];i=Mg(q)|0;m=L()|0;l=Sv(i|0,m|0,1,-2147483648)|0;G=L()|0;if(!((G>>>0>0|(G|0)==0&l>>>0>1)&q==+(i>>>0)+4294967296.0*+(m|0))){l=s;Ra=H;return l|0}l=r;c[l>>2]=i;c[l+4>>2]=m;b[p>>1]=n&15904|4;l=s;Ra=H;return l|0}if(!(i&2)){l=s;Ra=H;return l|0}i=a[r+10>>0]|0;m=r+16|0;n=r+12|0;if(Lg(c[m>>2]|0,D,c[n>>2]|0,i)|0){if(Og(c[m>>2]|0,E,c[n>>2]|0,i)|0){q=+g[D>>3];g[r>>3]=q;m=b[p>>1]|0;i=m|8;b[p>>1]=i;n=Mg(q)|0;o=L()|0;l=Sv(n|0,o|0,1,-2147483648)|0;f=L()|0;if((f>>>0>0|(f|0)==0&l>>>0>1)&q==+(n>>>0)+4294967296.0*+(o|0)){i=r;c[i>>2]=n;c[i+4>>2]=o;i=m&15904;G=28}}else{l=E;G=c[l+4>>2]|0;i=r;c[i>>2]=c[l>>2];c[i+4>>2]=G;i=b[p>>1]|0;G=28}if((G|0)==28){i=i|4;b[p>>1]=i}b[p>>1]=i&-3}l=s;Ra=H;return l|0}case -91:{i=c[p+12>>2]|0;m=a[i>>0]|0;switch(m<<24>>24){case -111:case -109:break;default:{G=107;break b}}t=34064;p=i;s=m&255;o=-1;r=-1;G=39;break}default:{t=59952;s=i;o=1;r=0;G=39}}while(0);e:do if((G|0)==39){f:do switch(s|0){case 110:case 145:case 147:{g:do if(!f){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](40)|0;G=64;break}i=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){C=c[14978]|0;B=Tv(m|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&B>>>0<=C>>>0)&1}m=Wa[c[29340>>2]&127](i)|0;if(m){i=Wa[c[29352>>2]&127](m)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;C=m}else C=m}else G=65}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){G=65;break}}else{do if((e[f+276>>1]|0)>=40){m=f+300|0;i=c[m>>2]|0;if(i|0){c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=64;break g}m=f+296|0;i=c[m>>2]|0;if(!i){i=f+292|0;break}else{c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=64;break g}}else i=f+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(f,40,0)|0;G=64}while(0);if((G|0)==64)if(!i)G=65;else C=i;if((G|0)==65){c[F>>2]=0;n=0;m=0;break f}m=C;n=m+40|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));B=C+8|0;b[B>>1]=1;c[C+32>>2]=f;c[F>>2]=C;i=C;if(!(c[p+4>>2]&1024)){m=c[p+8>>2]|0;c[u>>2]=t;c[u+4>>2]=m;m=dd(f,38967,u)|0;if(!m){n=C;m=C;break f}yc(C,m,-1,1,116)|0}else{u=c[p+8>>2]|0;u=Yv(o|0,r|0,u|0,((u|0)<0)<<31>>31|0)|0;F=L()|0;f=C;c[f>>2]=u;c[f+4>>2]=F;b[B>>1]=4}do if(k<<24>>24==65&(s|2|0)==147){o=b[B>>1]|0;m=o&65535;if(!(m&4)){if(m&8|0){q=+g[C>>3];m=Mg(q)|0;n=L()|0;f=Sv(m|0,n|0,1,-2147483648)|0;F=L()|0;if(!((F>>>0>0|(F|0)==0&f>>>0>1)&q==+(m>>>0)+4294967296.0*+(n|0)))break;f=C;c[f>>2]=m;c[f+4>>2]=n;b[B>>1]=o&15904|4;break}if(m&2|0?(v=a[C+10>>0]|0,w=C+16|0,x=C+12|0,Lg(c[w>>2]|0,D,c[x>>2]|0,v)|0):0){if(Og(c[w>>2]|0,E,c[x>>2]|0,v)|0){q=+g[D>>3];g[C>>3]=q;n=b[B>>1]|0;m=n|8;b[B>>1]=m;o=Mg(q)|0;p=L()|0;f=Sv(o|0,p|0,1,-2147483648)|0;F=L()|0;if((F>>>0>0|(F|0)==0&f>>>0>1)&q==+(o>>>0)+4294967296.0*+(p|0)){m=C;c[m>>2]=o;c[m+4>>2]=p;m=n&15904;G=79}}else{f=E;G=c[f+4>>2]|0;m=C;c[m>>2]=c[f>>2];c[m+4>>2]=G;m=b[B>>1]|0;G=79}if((G|0)==79){m=m|4;b[B>>1]=m}b[B>>1]=m&-3}}}else{if(k<<24>>24<=66){if(k<<24>>24!=66)break;m=b[B>>1]|0;f=m&65535;if(!((f&2|0)!=0|(f&12|0)==0)){Hg(C,1,1)|0;m=b[B>>1]|0}b[B>>1]=m&-13;break}o=b[B>>1]|0;m=o&65535;if(!(m&4)){if(m&8|0){q=+g[C>>3];m=Mg(q)|0;n=L()|0;f=Sv(m|0,n|0,1,-2147483648)|0;F=L()|0;if(!((F>>>0>0|(F|0)==0&f>>>0>1)&q==+(m>>>0)+4294967296.0*+(n|0)))break;f=C;c[f>>2]=m;c[f+4>>2]=n;b[B>>1]=o&15904|4;break}if(m&2|0?(y=a[C+10>>0]|0,z=C+16|0,A=C+12|0,Lg(c[z>>2]|0,D,c[A>>2]|0,y)|0):0){if(Og(c[z>>2]|0,E,c[A>>2]|0,y)|0){q=+g[D>>3];g[C>>3]=q;n=b[B>>1]|0;m=n|8;b[B>>1]=m;o=Mg(q)|0;p=L()|0;f=Sv(o|0,p|0,1,-2147483648)|0;F=L()|0;if((F>>>0>0|(F|0)==0&f>>>0>1)&q==+(o>>>0)+4294967296.0*+(p|0)){m=C;c[m>>2]=o;c[m+4>>2]=p;m=n&15904;G=93}}else{f=E;G=c[f+4>>2]|0;m=C;c[m>>2]=c[f>>2];c[m+4>>2]=G;m=b[B>>1]|0;G=93}if((G|0)==93){m=m|4;b[B>>1]=m}b[B>>1]=m&-3}}}while(0);m=b[B>>1]|0;n=m&65535;if(n&12){m=n&65533;b[B>>1]=m}if(j<<24>>24==1|(m&2)==0){m=0;break e}if((a[C+10>>0]|0)==j<<24>>24){m=0;break e}m=Ig(C,j)|0;break e}case 165:{i=c[p+12>>2]|0;G=107;break e}case 114:{h:do if(!f){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](40)|0;G=154;break}i=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){G=c[14978]|0;j=Tv(m|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&j>>>0<=G>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(i){m=Wa[c[29352>>2]&127](i)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0){c[14987]=m;G=156}else G=156}else G=155}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){G=155;break}}else{do if((e[f+276>>1]|0)>=40){m=f+300|0;i=c[m>>2]|0;if(i|0){c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=154;break h}m=f+296|0;i=c[m>>2]|0;if(!i){i=f+292|0;break}else{c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=154;break h}}else i=f+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(f,40,0)|0;G=154}while(0);if((G|0)==154)if(!i)G=155;else G=156;if((G|0)==155){c[F>>2]=0;n=0;m=0;break f}else if((G|0)==156){m=i;n=m+40|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));b[i+8>>1]=1;c[i+32>>2]=f;c[F>>2]=i;oh(i);m=0;break e}break}case 146:{i:do if(!f){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](40)|0;G=180;break}i=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){j=c[14978]|0;E=Tv(m|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;D=L()|0;c[14768]=((D|0)<0|(D|0)==0&E>>>0<=j>>>0)&1}m=Wa[c[29340>>2]&127](i)|0;if(m){i=Wa[c[29352>>2]&127](m)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;v=m}else v=m}else G=181}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){G=181;break}}else{do if((e[f+276>>1]|0)>=40){m=f+300|0;i=c[m>>2]|0;if(i|0){c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=180;break i}m=f+296|0;i=c[m>>2]|0;if(!i){i=f+292|0;break}else{c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=180;break i}}else i=f+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(f,40,0)|0;G=180}while(0);if((G|0)==180)if(!i)G=181;else v=i;if((G|0)==181){c[F>>2]=0;n=0;m=0;break f}m=v;n=m+40|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));b[v+8>>1]=1;c[v+32>>2]=f;c[F>>2]=v;i=v;s=(c[p+8>>2]|0)+2|0;r=(Eu(s)|0)&1073741823;t=r+-1|0;u=(t|0)/2|0;o=u+1|0;p=((o|0)<0)<<31>>31;j:do if(c[f+272>>2]|0)if(!(a[f+81>>0]|0))G=192;else m=0;else{do if(!(0

        >>0|(0==(p|0)?(e[f+276>>1]|0)>>>0>>0:0))){n=f+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=193;break j}n=f+296|0;m=c[n>>2]|0;if(!m){m=f+292|0;break}else{c[n>>2]=c[m>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=193;break j}}else m=f+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;G=192}while(0);if((G|0)==192){m=_d(f,o,p)|0;G=193}if((G|0)==193){o=r+-2|0;if(!m)m=0;else{if(r>>>0>2){n=0;do{f=a[s+n>>0]|0;j=a[s+(n|1)>>0]|0;a[m+(n>>>1)>>0]=(0-(j>>>6&1)&9)+j&15|(0-(f>>>6&1)&9)+f<<4;n=n+2|0}while((n|0)<(o|0));n=t>>>1}else n=0;a[m+n>>0]=0}}yc(v,m,u,0,116)|0;m=0;break e}case 159:{k:do if(!f){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](40)|0;G=223;break}i=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){G=c[14978]|0;j=Tv(m|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&j>>>0<=G>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(i){m=Wa[c[29352>>2]&127](i)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0){c[14987]=m;G=225}else G=225}else G=224}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){G=224;break}}else{do if((e[f+276>>1]|0)>=40){m=f+300|0;i=c[m>>2]|0;if(i|0){c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=223;break k}m=f+296|0;i=c[m>>2]|0;if(!i){i=f+292|0;break}else{c[m>>2]=c[i>>2];G=f+284|0;c[G>>2]=(c[G>>2]|0)+1;G=223;break k}}else i=f+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(f,40,0)|0;G=223}while(0);if((G|0)==223)if(!i)G=224;else G=225;if((G|0)==224){c[F>>2]=0;m=0;i=0;break e}else if((G|0)==225){m=i;n=m+40|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(n|0));c[i+32>>2]=f;c[F>>2]=i;b[i+8>>1]=4;m=i;c[m>>2]=(a[(c[p+8>>2]|0)+4>>0]|0)==0&1;c[m+4>>2]=0;m=0;break e}break}default:{m=0;i=0;break e}}while(0);i=f+81|0;if((a[i>>0]|0)==0?(a[f+82>>0]|0)==0:0){a[i>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;i=f+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[f+236>>2]|0;if(i|0)c[i+12>>2]=7}if(!n){l=7;Ra=H;return l|0}if(!((b[n+8>>1]&9216)==0?!(c[n+24>>2]|0):0))Cg(n);i=c[n+32>>2]|0;if(i|0){if(c[i+480>>2]|0){Xd(i,m);l=7;Ra=H;return l|0}l=n;if((c[i+304>>2]|0)>>>0<=l>>>0?(c[i+308>>2]|0)>>>0>l>>>0:0){l=i+300|0;c[n>>2]=c[l>>2];c[l>>2]=m;l=7;Ra=H;return l|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);l=7;Ra=H;return l|0}else{l=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);l=7;Ra=H;return l|0}}while(0);do if((G|0)==107){f=(Wj(f,i,j,k,F)|0)==0;p=c[F>>2]|0;s=p;if(f&(p|0)!=0){oh(p);r=p+8|0;i=b[r>>1]|0;do if(!(i&8)){n=p;m=c[n>>2]|0;n=c[n+4>>2]|0;if((m|0)==0&(n|0)==-2147483648){g[p>>3]=9223372036854775808.0;i=i&15904|8;b[r>>1]=i;q=9223372036854775808.0;break}else{F=Tv(0,0,m|0,n|0)|0;f=L()|0;C=p;c[C>>2]=F;c[C+4>>2]=f;c[h>>2]=F;c[h+4>>2]=f;q=+g[h>>3];break}}else{q=-+g[p>>3];g[p>>3]=q}while(0);if(k<<24>>24<=66){if(k<<24>>24!=66){m=0;i=s;break}G=i&65535;if(!((G&2|0)!=0|(G&12|0)==0)){Hg(p,j,1)|0;i=b[r>>1]|0}b[r>>1]=i&-13;m=0;i=s;break}m=i&65535;if(!(m&4)){if(m&8|0){m=Mg(q)|0;n=L()|0;G=Sv(m|0,n|0,1,-2147483648)|0;f=L()|0;if(!((f>>>0>0|(f|0)==0&G>>>0>1)&q==+(m>>>0)+4294967296.0*+(n|0))){m=0;i=s;break}G=p;c[G>>2]=m;c[G+4>>2]=n;b[r>>1]=i&15904|4;m=0;i=s;break}if(m&2){i=a[p+10>>0]|0;m=p+16|0;n=p+12|0;if(Lg(c[m>>2]|0,D,c[n>>2]|0,i)|0){if(Og(c[m>>2]|0,E,c[n>>2]|0,i)|0){q=+g[D>>3];g[p>>3]=q;m=b[r>>1]|0;i=m|8;b[r>>1]=i;n=Mg(q)|0;o=L()|0;f=Sv(n|0,o|0,1,-2147483648)|0;j=L()|0;if((j>>>0>0|(j|0)==0&f>>>0>1)&q==+(n>>>0)+4294967296.0*+(o|0)){i=p;c[i>>2]=n;c[i+4>>2]=o;i=m&15904;G=122}}else{f=E;G=c[f+4>>2]|0;i=p;c[i>>2]=c[f>>2];c[i+4>>2]=G;i=b[r>>1]|0;G=122}if((G|0)==122){i=i|4;b[r>>1]=i}b[r>>1]=i&-3}m=0;i=s}else{m=0;i=s}}else{m=0;i=s}}else{m=0;i=s}}while(0);c[l>>2]=i;l=m;Ra=H;return l|0}function Xj(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a:while(1){f=c[e+4>>2]|0;if(f&4096)do{if(!(f&262144))e=e+12|0;else e=(c[e+20>>2]|0)+4|0;e=c[e>>2]|0;f=c[e+4>>2]|0}while((f&4096|0)!=0);if(f&512|0){g=0;k=31;break}f=a[e>>0]|0;if(f<<24>>24==-125)e=(c[c[e+20>>2]>>2]|0)+4|0;else{if(f<<24>>24==-88)f=d[e+38>>0]|0;else f=f&255;switch((f&255)<<24>>24){case 36:{k=15;break a}case -94:case -92:{k=26;break a}case -86:break;default:break a}e=(c[c[(c[e+12>>2]|0)+20>>2]>>2]|0)+4+((b[e+32>>1]|0)*20|0)|0}e=c[e>>2]|0}if((k|0)==15){f=c[e+8>>2]|0;g=a[f>>0]|0;if(!(g<<24>>24)){k=67;return k|0}h=67;i=0;while(1){i=i<<8|d[208+(g&255)>>0];f=f+1|0;b:do if((i|0)<1685026146){if((i|0)<1667785074){switch(i|0){case 1651273570:break;default:{k=24;break b}}switch(h<<24>>24){case 69:case 67:{j=65;break b}default:{k=23;break b}}}if((i|0)<1668050786)switch(i|0){case 1667785074:{j=66;break b}default:{k=24;break b}}else switch(i|0){case 1668050786:{j=66;break b}default:{k=24;break b}}}else{if((i|0)>=1919246700){if((i|0)>=1952807028)switch(i|0){case 1952807028:{j=66;break b}default:{k=24;break b}}switch(i|0){case 1919246700:break;default:{k=24;break b}}if(h<<24>>24==67){j=69;break}else{k=23;break}}if((i|0)<1718382433){switch(i|0){case 1685026146:break;default:{k=24;break b}}if(h<<24>>24==67){j=69;break}}else{switch(i|0){case 1718382433:break;default:{k=24;break b}}if(h<<24>>24==67){j=69;break}}j=h}while(0);if((k|0)==23){k=0;j=h}else if((k|0)==24){k=0;if((i&16777215|0)==6909556){g=68;k=31;break}else j=h}g=a[f>>0]|0;if(!(g<<24>>24)){g=j;k=31;break}else h=j}if((k|0)==31)return g|0}else if((k|0)==26){f=c[e+44>>2]|0;if(f|0){e=b[e+32>>1]|0;if(e<<16>>16<=-1){k=68;return k|0}k=a[(c[f+4>>2]|0)+(e<<16>>16<<4)+13>>0]|0;return k|0}}else if((k|0)==31)return g|0;k=a[e+1>>0]|0;return k|0}function Yj(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=b+20|0;m=a[l>>0]|0;n=m<<24>>24==2;if(n?c[e+4>>2]&1|0:0){a[l>>0]=0;n=2;return n|0}a:do switch(a[e>>0]|0){case -95:{if((m&255)>3){n=0;return n|0}if(c[e+4>>2]&524288|0){n=0;return n|0}a[l>>0]=0;n=2;return n|0}case 59:{if(!(c[e+4>>2]&67108864)){g=c[e+8>>2]|0;k=a[g>>0]|0;j=d[208+(k&255)>>0]|0;f=j+-116|0;k=k<<24>>24==0;if(!(k|(f|0)!=0)){h=41806;i=g;do{i=i+1|0;h=h+1|0;o=a[i>>0]|0;f=(d[208+(o&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(o<<24>>24==0|(f|0)!=0))}if(f|0){f=j+-102|0;if(!(k|(f|0)!=0)){h=41811;do{g=g+1|0;h=h+1|0;o=a[g>>0]|0;f=(d[208+(o&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(o<<24>>24==0|(f|0)!=0))}if(f|0){f=18;break a}}a[e>>0]=-97;o=1;return o|0}else f=18;break}case -92:case -93:case -94:{f=18;break}case -88:case -85:break;case -108:switch(m<<24>>24){case 5:{a[e>>0]=114;o=0;return o|0}case 4:{a[l>>0]=0;o=2;return o|0}default:{o=0;return o|0}}default:{o=0;return o|0}}while(0);do if((f|0)==18){if(c[e+4>>2]&8|0){if(n)break;else f=0;return f|0}if(m<<24>>24==3?(c[e+28>>2]|0)==(c[b+24>>2]|0):0){o=0;return o|0}}while(0);a[l>>0]=0;o=2;return o|0}function Zj(b,c){b=b|0;c=c|0;a[b+20>>0]=0;return 2}function _j(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=b+4|0;e=Xa[c[f>>2]&255](b,d)|0;a:do if(!e){p=d;while(1){if(c[p+4>>2]&8404992|0){g=0;d=56;break}d=c[p+12>>2]|0;if(d|0?_j(b,d)|0:0){g=2;d=56;break}e=c[p+16>>2]|0;if(!e){d=9;break}d=Xa[c[f>>2]&255](b,e)|0;if(!d)p=e;else{q=d;break a}}if((d|0)==9){k=p+4|0;b:do if(!(c[k>>2]&2048)){d=c[p+20>>2]|0;if(d|0?(i=c[d>>2]|0,(i|0)>0):0){f=d+4|0;d=i;while(1){e=c[f>>2]|0;if(e|0?_j(b,e)|0:0){g=2;break}if((d|0)>1){f=f+20|0;d=d+-1|0}else break b}return g|0}}else{e=c[p+20>>2]|0;if(e|0?(m=b+8|0,h=c[m>>2]|0,h|0):0){j=b+12|0;d=Xa[h&255](b,e)|0;c:do if(!d){d:while(1){if(ak(b,e)|0){g=2;d=56;break}d=c[e+32>>2]|0;f=c[d>>2]|0;if((f|0)>0){i=d+8|0;while(1){d=c[i+20>>2]|0;if(d|0?$j(b,d)|0:0){g=2;d=56;break d}if((a[i+37>>0]&4?(n=c[i+64>>2]|0,n|0):0)?(o=c[n>>2]|0,(o|0)>0):0){d=n+4|0;g=o;while(1){h=c[d>>2]|0;if(h|0?_j(b,h)|0:0){g=2;d=56;break d}if((g|0)>1){d=d+20|0;g=g+-1|0}else break}}if((f|0)>1){i=i+72|0;f=f+-1|0}else break}}d=c[j>>2]|0;if(d|0)bb[d&127](b,e);e=c[e+52>>2]|0;if(!e)break b;d=Xa[c[m>>2]&255](b,e)|0;if(d|0){l=d;break c}}if((d|0)==56)return g|0}else l=d;while(0);if(l&2|0){s=2;return s|0}}}while(0);if(!(c[k>>2]&16777216)){s=0;return s|0}d=c[p+44>>2]|0;if(!d){s=0;return s|0}e:while(1){e=c[d+12>>2]|0;if(e|0?(s=c[e>>2]|0,(s|0)>0):0){e=e+4|0;f=s;while(1){g=c[e>>2]|0;if(g|0?_j(b,g)|0:0){g=2;d=56;break e}if((f|0)>1){e=e+20|0;f=f+-1|0}else break}}e=c[d+8>>2]|0;if(e|0?(r=c[e>>2]|0,(r|0)>0):0){e=e+4|0;f=r;while(1){g=c[e>>2]|0;if(g|0?_j(b,g)|0:0){g=2;d=56;break e}if((f|0)>1){e=e+20|0;f=f+-1|0}else break}}e=c[d+36>>2]|0;if(e|0?_j(b,e)|0:0){g=2;d=56;break}d=c[d+32>>2]|0;if(!d){g=0;d=56;break}}if((d|0)==56)return g|0}else if((d|0)==56)return g|0}else q=e;while(0);s=q&2;return s|0}function $j(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!d){m=0;return m|0}l=b+8|0;e=c[l>>2]|0;if(!e){m=0;return m|0}m=b+12|0;e=Xa[e&255](b,d)|0;a:do if(!e){b:while(1){if(ak(b,d)|0){e=2;d=23;break}e=c[d+32>>2]|0;f=c[e>>2]|0;if((f|0)>0){i=e+8|0;while(1){e=c[i+20>>2]|0;if(e|0?$j(b,e)|0:0){e=2;d=23;break b}if((a[i+37>>0]&4?(j=c[i+64>>2]|0,j|0):0)?(k=c[j>>2]|0,(k|0)>0):0){e=j+4|0;g=k;while(1){h=c[e>>2]|0;if(h|0?_j(b,h)|0:0){e=2;d=23;break b}if((g|0)>1){e=e+20|0;g=g+-1|0}else break}}if((f|0)>1){i=i+72|0;f=f+-1|0}else break}}e=c[m>>2]|0;if(e|0)bb[e&127](b,d);d=c[d+52>>2]|0;if(!d){e=0;d=23;break}e=Xa[c[l>>2]&255](b,d)|0;if(e|0)break a}if((d|0)==23)return e|0}while(0);m=e&2;return m|0}function ak(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[b>>2]|0;a:do if(e|0?(f=c[e>>2]|0,(f|0)>0):0){g=e+4|0;e=f;while(1){f=c[g>>2]|0;if(f|0?_j(a,f)|0:0){e=2;break}if((e|0)>1){g=g+20|0;e=e+-1|0}else break a}return e|0}while(0);e=c[b+36>>2]|0;if(e|0?_j(a,e)|0:0){k=2;return k|0}e=c[b+40>>2]|0;b:do if(e|0?(h=c[e>>2]|0,(h|0)>0):0){g=e+4|0;e=h;while(1){f=c[g>>2]|0;if(f|0?_j(a,f)|0:0){e=2;break}if((e|0)>1){g=g+20|0;e=e+-1|0}else break b}return e|0}while(0);e=c[b+44>>2]|0;if(e|0?_j(a,e)|0:0){k=2;return k|0}e=c[b+48>>2]|0;c:do if(e|0?(i=c[e>>2]|0,(i|0)>0):0){g=e+4|0;e=i;while(1){f=c[g>>2]|0;if(f|0?_j(a,f)|0:0){e=2;break}if((e|0)>1){g=g+20|0;e=e+-1|0}else break c}return e|0}while(0);e=c[b+60>>2]|0;if(e|0?_j(a,e)|0:0){k=2;return k|0}e=c[a>>2]|0;if(!e){k=0;return k|0}if((d[e+200>>0]|0)<=1){k=0;return k|0}e=c[b+72>>2]|0;if(!e){k=0;return k|0}d:while(1){f=c[e+12>>2]|0;if(f|0?(j=c[f>>2]|0,(j|0)>0):0){f=f+4|0;g=j;while(1){h=c[f>>2]|0;if(h|0?_j(a,h)|0:0){e=2;f=44;break d}if((g|0)>1){f=f+20|0;g=g+-1|0}else break}}f=c[e+8>>2]|0;if(f|0?(k=c[f>>2]|0,(k|0)>0):0){f=f+4|0;g=k;while(1){h=c[f>>2]|0;if(h|0?_j(a,h)|0:0){e=2;f=44;break d}if((g|0)>1){f=f+20|0;g=g+-1|0}else break}}f=c[e+36>>2]|0;if(f|0?_j(a,f)|0:0){e=2;f=44;break}e=c[e+32>>2]|0;if(!e){e=0;f=44;break}}if((f|0)==44)return e|0;return 0}function bk(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;j=t;if((g|0)==0|(h|0)==0){i=(h|0)==(g|0)?0:2;Ra=t;return i|0}do if(f|0?(a[g>>0]|0)==-108:0){c[j>>2]=0;Wj(c[f>>2]|0,h,1,65,j)|0;s=c[j>>2]|0;if(!s)break;n=b[g+32>>1]|0;j=n<<16>>16;o=c[f+8>>2]|0;n=n<<16>>16>31;k=o+208|0;o=o+208|0;c[(n?o:k)>>2]=c[(n?o:k)>>2]|(n?-2147483648:1<>2]|0;a:do if((k|0)!=0?(o=c[k+100>>2]|0,q=j+-1|0,p=o+(q*40|0)|0,q=o+(q*40|0)+8|0,(b[q>>1]&1)==0):0){n=c[k>>2]|0;b:do if(!n){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](40)|0;r=32;break}j=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){o=c[14978]|0;m=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=o>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k){n=0;l=0;m=0;k=1;break a}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;o=k}else o=k}else{if(c[n+272>>2]|0){if(a[n+81>>0]|0){n=0;l=0;m=0;k=1;break a}}else{do if((e[n+276>>1]|0)>=40){k=n+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];r=n+284|0;c[r>>2]=(c[r>>2]|0)+1;r=32;break b}k=n+296|0;j=c[k>>2]|0;if(!j){j=n+292|0;break}else{c[k>>2]=c[j>>2];r=n+284|0;c[r>>2]=(c[r>>2]|0)+1;r=32;break b}}else j=n+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(n,40,0)|0;r=32}while(0);if((r|0)==32)if(!j){n=0;l=0;m=0;k=1;break}else o=j;j=o;k=j+40|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0));m=o+8|0;b[m>>1]=1;c[o+32>>2]=n;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];c[o+16>>2]=c[p+16>>2];j=b[m>>1]&-1025;b[m>>1]=j;j=j&65535;c:do if(j&18|0?(b[q>>1]&2048)==0:0){k=(j|4096)&65535;b[m>>1]=k;do if(j&16384){l=o+12|0;j=(c[o>>2]|0)+(c[l>>2]|0)|0;if((j|0)<1)if(!(k&16)){r=41;break}else j=1;if(Eg(o,j,1)|0)break c;q=o+16|0;gw((c[q>>2]|0)+(c[l>>2]|0)|0,0,c[o>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+(c[o>>2]|0);j=b[m>>1]&-16897;b[m>>1]=j;if(!((c[o+24>>2]|0)!=0?(c[q>>2]|0)==(c[o+20>>2]|0):0))r=41}else r=41;while(0);if((r|0)==41){if(Jg(o)|0)break;j=b[m>>1]|0}b[m>>1]=j&-4097}while(0);j=b[m>>1]|0;do if((j&15|16)<<16>>16==18){if((j&514)==514){if(!((j&1)==0&(a[o+10>>0]|0)!=1))break}else if(j&1)break;Gg(o,1)|0}while(0);n=(Tg(o,s,0)|0)==0&1;l=o;m=o;k=0}else{n=0;l=0;m=0;k=1}while(0);if(!((b[s+8>>1]&9216)==0?!(c[s+24>>2]|0):0))Cg(s);j=c[s+32>>2]|0;do if(j){if(c[j+480>>2]|0){Xd(j,s);break}q=s;if((c[j+304>>2]|0)>>>0<=q>>>0?(c[j+308>>2]|0)>>>0>q>>>0:0){q=j+300|0;c[s>>2]=c[q>>2];c[q>>2]=s}else r=59}else r=59;while(0);do if((r|0)==59)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{r=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}while(0);do if(!k){if(!((b[l+8>>1]&9216)==0?!(c[l+24>>2]|0):0))Cg(l);j=c[l+32>>2]|0;if(j|0){if(c[j+480>>2]|0){Xd(j,m);break}s=m;if((c[j+304>>2]|0)>>>0<=s>>>0?(c[j+308>>2]|0)>>>0>s>>>0:0){s=j+300|0;c[m>>2]=c[s>>2];c[s>>2]=m;break}}if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{s=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);if(n|0){i=0;Ra=t;return i|0}}while(0);o=g+4|0;p=c[o>>2]|0;n=h+4|0;k=c[n>>2]|0;q=k|p;if(q&1024|0){if(p&1024&k|0?(c[g+8>>2]|0)==(c[h+8>>2]|0):0){i=0;Ra=t;return i|0}i=2;Ra=t;return i|0}m=a[g>>0]|0;j=a[h>>0]|0;if(m<<24>>24==71?1:m<<24>>24!=j<<24>>24){do if(m<<24>>24==106)if((bk(f,c[g+12>>2]|0,h,i)|0)<2){i=1;Ra=t;return i|0}else{j=a[h>>0]|0;break}while(0);if(j<<24>>24==106?(bk(f,g,c[h+12>>2]|0,i)|0)<2:0){i=1;Ra=t;return i|0}i=2;Ra=t;return i|0}d:do switch(m<<24>>24){case -92:case -94:{j=p;break}default:{l=c[g+8>>2]|0;if(!l)j=p;else switch(m<<24>>24){case -95:{m=c[h+8>>2]|0;s=a[l>>0]|0;j=(d[208+(s&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(s<<24>>24==0|(j|0)!=0))do{l=l+1|0;m=m+1|0;s=a[l>>0]|0;j=(d[208+(s&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(s<<24>>24==0|(j|0)!=0));if(j|0){i=2;Ra=t;return i|0}if(!(p&16777216)){j=p;break d}if(!(ck(f,c[g+44>>2]|0,c[h+44>>2]|0)|0)){k=c[n>>2]|0;j=c[o>>2]|0;break d}else{i=2;Ra=t;return i|0}}case 106:{m=c[h+8>>2]|0;if(!m){i=2;Ra=t;return i|0}s=a[l>>0]|0;j=(d[208+(s&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(s<<24>>24==0|(j|0)!=0))do{l=l+1|0;m=m+1|0;s=a[l>>0]|0;j=(d[208+(s&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(s<<24>>24==0|(j|0)!=0));if(!j){j=p;break d}else j=2;Ra=t;return j|0}case 114:{i=0;Ra=t;return i|0}default:{j=c[h+8>>2]|0;if(!j){j=p;break d}if(!(Bu(l,j)|0)){j=p;break d}else j=2;Ra=t;return j|0}}}}while(0);if((k^j)&2|0){i=2;Ra=t;return i|0}e:do if(!(q&16384)){if(q&2048|0){i=2;Ra=t;return i|0}if((q&8|0)==0?bk(f,c[g+12>>2]|0,c[h+12>>2]|0,i)|0:0){i=2;Ra=t;return i|0}if(bk(f,c[g+16>>2]|0,c[h+16>>2]|0,i)|0){i=2;Ra=t;return i|0}l=c[g+20>>2]|0;m=c[h+20>>2]|0;j=(l|0)==0;k=(m|0)==0;f:do if(!(j&k)){if(j|k){i=2;Ra=t;return i|0}j=c[l>>2]|0;if((j|0)!=(c[m>>2]|0)){i=2;Ra=t;return i|0}if((j|0)>0){j=0;while(1){if((a[l+4+(j*20|0)+12>>0]|0)!=(a[m+4+(j*20|0)+12>>0]|0)){j=2;r=125;break}if(bk(0,c[l+4+(j*20|0)>>2]|0,c[m+4+(j*20|0)>>2]|0,i)|0){j=2;r=125;break}j=j+1|0;if((j|0)>=(c[l>>2]|0))break f}if((r|0)==125){Ra=t;return j|0}}}while(0);switch(a[g>>0]|0){case -97:case 110:break e;default:{}}if(!(q&8192)){if((b[g+32>>1]|0)!=(b[h+32>>1]|0)){i=2;Ra=t;return i|0}g=c[g+28>>2]|0;h=c[h+28>>2]|0;if((g|0)!=(h|0)?(g|0)!=(i|0)|(h|0)>-1:0){i=2;Ra=t;return i|0}}}while(0);i=0;Ra=t;return i|0}function ck(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((a[d+16>>0]|0)!=(a[e+16>>0]|0)){e=1;return e|0}if((a[d+17>>0]|0)!=(a[e+17>>0]|0)){e=1;return e|0}if((a[d+18>>0]|0)!=(a[e+18>>0]|0)){e=1;return e|0}if((a[d+20>>0]|0)!=(a[e+20>>0]|0)){e=1;return e|0}if(bk(b,c[d+24>>2]|0,c[e+24>>2]|0,-1)|0){e=1;return e|0}if(bk(b,c[d+28>>2]|0,c[e+28>>2]|0,-1)|0){e=1;return e|0}g=c[d+8>>2]|0;h=c[e+8>>2]|0;b=(g|0)==0;f=(h|0)==0;a:do if(!(b&f)){if(b|f){e=1;return e|0}b=c[g>>2]|0;if((b|0)!=(c[h>>2]|0)){e=1;return e|0}if((b|0)>0){b=0;while(1){if((a[g+4+(b*20|0)+12>>0]|0)!=(a[h+4+(b*20|0)+12>>0]|0)){b=1;f=23;break}if(bk(0,c[g+4+(b*20|0)>>2]|0,c[h+4+(b*20|0)>>2]|0,-1)|0){b=1;f=23;break}b=b+1|0;if((b|0)>=(c[g>>2]|0))break a}if((f|0)==23)return b|0}}while(0);h=c[d+12>>2]|0;g=c[e+12>>2]|0;b=(h|0)==0;f=(g|0)==0;if(b&f){e=0;return e|0}if(b|f){e=1;return e|0}b=c[h>>2]|0;if((b|0)!=(c[g>>2]|0)){e=1;return e|0}if((b|0)<=0){e=0;return e|0}b=0;while(1){if((a[h+4+(b*20|0)+12>>0]|0)!=(a[g+4+(b*20|0)+12>>0]|0)){b=1;f=23;break}if(bk(0,c[h+4+(b*20|0)>>2]|0,c[g+4+(b*20|0)>>2]|0,-1)|0){b=1;f=23;break}b=b+1|0;if((b|0)>=(c[h>>2]|0)){b=0;f=23;break}}if((f|0)==23)return b|0;return 0}function dk(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;r=t;s=(g|0)!=0;a:do if(s){m=134217728;q=c[g>>2]|0}else{j=ek(d,f)|0;k=((j|0)<0)<<31>>31;if(c[b+272>>2]|0){if(a[b+81>>0]|0){c[r>>2]=0;b=0;Ra=t;return b|0}}else{do if(!(0>>0|(0==(k|0)?(e[b+276>>1]|0)>>>0>>0:0))){h=b+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=0;q=i;break a}h=b+296|0;i=c[h>>2]|0;if(!i){h=b+292|0;break}else{c[h>>2]=c[i>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=0;q=i;break a}}else h=b+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}m=0;q=_d(b,j,k)|0}while(0);c[r>>2]=q;if(!q){b=q;Ra=t;return b|0}n=(f|0)==0;if((!n?(a[d>>0]|0)!=-86:0)?(c[d+4>>2]&16777216|0)==0:0)if(!(c[d+12>>2]|0))j=(c[d+20>>2]|0)==0?16396:8220;else j=8220;else j=52;k=j&60;o=d+4|0;h=c[o>>2]|0;if((h&1024|0)==0?(l=c[d+8>>2]|0,(l|0)!=0):0)i=((Eu(l)|0)&1073741823)+1|0;else i=0;if(n){h=(h&16384|0)==0?((h&8192|0)==0?52:28):12;ew(q|0,d|0,h|0)|0;if(h>>>0<52)gw(q+h|0,0,52-h|0)|0}else ew(q|0,d|0,k|0)|0;l=q+4|0;h=j&24576|m|c[l>>2]&-134307841;c[l>>2]=h;if(i){h=q+k|0;c[q+8>>2]=h;ew(h|0,c[d+8>>2]|0,i|0)|0;h=c[l>>2]|0}i=c[o>>2]|0;do if(!((h|i)&8404992)){h=d+20|0;if(!(i&2048)){f=gk(b,c[h>>2]|0,f)|0;c[q+20>>2]=f;break}else{f=fk(b,c[h>>2]|0,f)|0;c[q+20>>2]=f;break}}while(0);j=c[l>>2]|0;if(!(j&16801792)){if(c[o>>2]&8404992|0){b=q;Ra=t;return b|0}h=d+12|0;if((a[q>>0]|0)==-86)c[q+12>>2]=c[h>>2];else{h=c[h>>2]|0;if(!h)h=0;else h=dk(b,h,0,0)|0;c[q+12>>2]=h}h=c[d+16>>2]|0;if(!h)h=0;else h=dk(b,h,0,0)|0;c[q+16>>2]=h;b=q;Ra=t;return b|0}if((!n?(a[d>>0]|0)!=-86:0)?(c[o>>2]&16777216|0)==0:0)if(!(c[d+12>>2]|0))i=(c[d+20>>2]|0)==0?12:28;else i=28;else i=52;h=c[o>>2]|0;if((h&1024|0)==0?(p=c[d+8>>2]|0,(p|0)!=0):0)i=((Eu(p)|0)&1073741823)+(i|1)|0;c[r>>2]=q+(i+7&-8);if(!(j&8404992)){h=c[d+12>>2]|0;if(!h)h=0;else h=dk(b,h,1,r)|0;c[q+12>>2]=h;h=c[d+16>>2]|0;if(!h)h=0;else h=dk(b,h,1,r)|0;c[q+16>>2]=h;h=c[o>>2]|0}if(h&16777216|0){b=hk(b,q,c[d+44>>2]|0)|0;c[q+44>>2]=b}if(!s){b=q;Ra=t;return b|0}c[g>>2]=c[r>>2];b=q;Ra=t;return b|0}function ek(b,d){b=b|0;d=d|0;var e=0,f=0;if(!b){d=0;return d|0}if(((d|0)!=0?(a[b>>0]|0)!=-86:0)?(c[b+4>>2]&16777216|0)==0:0)if(!(c[b+12>>2]|0))e=(c[b+20>>2]|0)==0?12:28;else e=28;else e=52;if((c[b+4>>2]&1024|0)==0?(f=c[b+8>>2]|0,(f|0)!=0):0)e=((Eu(f)|0)&1073741823)+(e|1)|0;e=e+7&-8;if(!(d&1)){d=e;return d|0}else{f=ek(c[b+12>>2]|0,d)|0;return f+e+(ek(c[b+16>>2]|0,d)|0)|0}return 0}function fk(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=Ra;Ra=Ra+32|0;A=G+4|0;B=G;c[B>>2]=0;C=d+81|0;if(!f){F=0;Ra=G;return F|0}D=d+272|0;E=d+276|0;F=d+288|0;s=d+300|0;t=d+296|0;u=d+284|0;v=d+292|0;w=A+4|0;x=A+8|0;y=A+12|0;z=A+24|0;j=0;r=B;a:while(1){do if(c[D>>2]|0)if(!(a[C>>0]|0))q=11;else break a;else{if((e[E>>1]|0)>=76){h=c[s>>2]|0;if(h|0){c[s>>2]=c[h>>2];c[u>>2]=(c[u>>2]|0)+1;break}h=c[t>>2]|0;if(!h)h=v;else{c[t>>2]=c[h>>2];c[u>>2]=(c[u>>2]|0)+1;break}}else h=F;c[h>>2]=(c[h>>2]|0)+1;q=11}while(0);if((q|0)==11){q=0;h=_d(d,76,0)|0}if(!h)break;i=gk(d,c[f>>2]|0,g)|0;c[h>>2]=i;i=ik(d,c[f+32>>2]|0,g)|0;c[h+32>>2]=i;i=c[f+36>>2]|0;if(!i)i=0;else i=dk(d,i,g,0)|0;c[h+36>>2]=i;i=gk(d,c[f+40>>2]|0,g)|0;c[h+40>>2]=i;i=c[f+44>>2]|0;if(!i)i=0;else i=dk(d,i,g,0)|0;c[h+44>>2]=i;p=gk(d,c[f+48>>2]|0,g)|0;c[h+48>>2]=p;a[h+4>>0]=a[f+4>>0]|0;c[h+56>>2]=j;p=r;r=h+52|0;c[r>>2]=0;i=c[f+60>>2]|0;if(!i)i=0;else i=dk(d,i,g,0)|0;c[h+60>>2]=i;c[h+12>>2]=0;c[h+16>>2]=0;c[h+8>>2]=c[f+8>>2]&-33;c[h+24>>2]=-1;c[h+28>>2]=-1;b[h+6>>1]=b[f+6>>1]|0;o=c[f+64>>2]|0;b:do if(o){j=c[o>>2]<<4|8;do if(c[D>>2]|0)if(!(a[C>>0]|0))q=28;else{i=0;break b}else{if(!(0<0|(0==0?(e[E>>1]|0)>>>0>>0:0))){i=c[s>>2]|0;if(i|0){c[s>>2]=c[i>>2];c[u>>2]=(c[u>>2]|0)+1;break}i=c[t>>2]|0;if(!i)i=v;else{c[t>>2]=c[i>>2];c[u>>2]=(c[u>>2]|0)+1;break}}else i=F;c[i>>2]=(c[i>>2]|0)+1;q=28}while(0);if((q|0)==28){q=0;i=_d(d,j,0)|0}if(i){gw(i|0,0,j|0)|0;c[i>>2]=c[o>>2];if((c[o>>2]|0)>0){n=i+8|0;m=0;do{k=fk(d,c[o+8+(m<<4)+8>>2]|0,0)|0;c[n+(m<<4)+8>>2]=k;k=gk(d,c[o+8+(m<<4)+4>>2]|0,0)|0;c[n+(m<<4)+4>>2]=k;k=c[o+8+(m<<4)>>2]|0;c:do if(k){l=(Eu(k)|0)+1|0;d:do if(c[D>>2]|0)if(!(a[C>>0]|0))q=41;else{j=0;break c}else{do if(0<0|(0==0?(e[E>>1]|0)>>>0>>0:0))j=F;else{j=c[s>>2]|0;if(j|0){c[s>>2]=c[j>>2];c[u>>2]=(c[u>>2]|0)+1;break d}j=c[t>>2]|0;if(!j){j=v;break}c[t>>2]=c[j>>2];c[u>>2]=(c[u>>2]|0)+1;break d}while(0);c[j>>2]=(c[j>>2]|0)+1;q=41}while(0);if((q|0)==41){q=0;j=_d(d,l,0)|0}if(j)ew(j|0,k|0,l|0)|0;else j=0}else j=0;while(0);c[n+(m<<4)>>2]=j;m=m+1|0}while((m|0)<(c[o>>2]|0))}}else i=0}else i=0;while(0);c[h+64>>2]=i;c[h+68>>2]=0;i=c[f+72>>2]|0;c[A>>2]=0;if(!i)i=0;else{k=A;while(1){j=hk(d,0,i)|0;c[k>>2]=j;if(!j)break;i=c[i+32>>2]|0;if(!i)break;else k=j+32|0}i=c[A>>2]|0}c[h+72>>2]=i;if(c[f+68>>2]|0){c[w>>2]=137;c[x>>2]=138;c[y>>2]=0;c[A>>2]=0;c[z>>2]=h;$j(A,h)|0}c[h+20>>2]=c[f+20>>2];c[p>>2]=h;f=c[f+52>>2]|0;if(!f)break;else j=h}F=c[B>>2]|0;Ra=G;return F|0}function gk(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;if(!f){A=0;return A|0}A=(d|0)==0;if((!A?(h=f,(c[d+304>>2]|0)>>>0<=h>>>0):0)?(c[d+308>>2]|0)>>>0>h>>>0:0)j=e[d+276>>1]|0;else j=Wa[c[29352>>2]&127](f)|0;k=((j|0)<0)<<31>>31;z=d+272|0;a:do if(c[z>>2]|0)if(!(a[d+81>>0]|0))y=17;else{A=0;return A|0}else{do if(!(0>>0|(0==(k|0)?(e[d+276>>1]|0)>>>0>>0:0))){i=d+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];x=d+284|0;c[x>>2]=(c[x>>2]|0)+1;break a}i=d+296|0;h=c[i>>2]|0;if(!h){h=d+292|0;break}else{c[i>>2]=c[h>>2];x=d+284|0;c[x>>2]=(c[x>>2]|0)+1;break a}}else h=d+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;y=17}while(0);if((y|0)==17)h=_d(d,j,k)|0;if(!h){A=0;return A|0}c[h>>2]=c[f>>2];if((c[f>>2]|0)<=0){A=h;return A|0}r=d+276|0;s=d+81|0;t=d+288|0;u=d+300|0;v=d+296|0;w=d+284|0;x=d+292|0;o=h+4|0;i=0;p=0;q=f+4|0;while(1){j=c[q>>2]|0;do if(j){k=dk(d,j,g,0)|0;c[o>>2]=k;if(!((k|0)==0|(a[j>>0]|0)!=-86))if(!(b[k+32>>1]|0)){n=c[k+16>>2]|0;c[k+12>>2]=n;break}else{c[k+12>>2]=i;n=i;break}else n=i}else{c[o>>2]=0;n=i}while(0);l=c[q+4>>2]|0;b:do if(!l)i=0;else{m=(Eu(l)|0)+1|0;do if(A){k=Sv(m|0,0,-1,-1)|0;j=L()|0;if(j>>>0>0|(j|0)==0&k>>>0>2147483390){i=0;break b}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](m)|0;y=50;break}i=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){B=c[14978]|0;k=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&k>>>0<=B>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=0;break b}j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0)c[14987]=j}else{if(c[z>>2]|0){if(a[s>>0]|0){i=0;break b}}else{if(!(0<0|(0==0?(e[r>>1]|0)>>>0>>0:0))){i=c[u>>2]|0;if(i|0){c[u>>2]=c[i>>2];c[w>>2]=(c[w>>2]|0)+1;y=50;break}i=c[v>>2]|0;if(!i)i=x;else{c[v>>2]=c[i>>2];c[w>>2]=(c[w>>2]|0)+1;y=50;break}}else i=t;c[i>>2]=(c[i>>2]|0)+1}i=_d(d,m,0)|0;y=50}while(0);if((y|0)==50){y=0;if(!i){i=0;break}}ew(i|0,l|0,m|0)|0}while(0);c[o+4>>2]=i;l=c[q+8>>2]|0;c:do if(!l)i=0;else{m=(Eu(l)|0)+1|0;do if(A){B=Sv(m|0,0,-1,-1)|0;k=L()|0;if(k>>>0>0|(k|0)==0&B>>>0>2147483390){i=0;break c}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](m)|0;y=75;break}i=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){B=c[14978]|0;k=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&k>>>0<=B>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=0;break c}j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0)c[14987]=j}else{if(c[z>>2]|0){if(a[s>>0]|0){i=0;break c}}else{if(!(0<0|(0==0?(e[r>>1]|0)>>>0>>0:0))){i=c[u>>2]|0;if(i|0){c[u>>2]=c[i>>2];c[w>>2]=(c[w>>2]|0)+1;y=75;break}i=c[v>>2]|0;if(!i)i=x;else{c[v>>2]=c[i>>2];c[w>>2]=(c[w>>2]|0)+1;y=75;break}}else i=t;c[i>>2]=(c[i>>2]|0)+1}i=_d(d,m,0)|0;y=75}while(0);if((y|0)==75){y=0;if(!i){i=0;break}}ew(i|0,l|0,m|0)|0}while(0);c[o+8>>2]=i;a[o+12>>0]=a[q+12>>0]|0;B=o+13|0;l=a[B>>0]|0;a[B>>0]=l&-2;m=q+13|0;l=a[m>>0]&2|l&-4;a[B>>0]=l;a[B>>0]=l&-10|a[m>>0]&8;c[o+16>>2]=c[q+16>>2];p=p+1|0;if((p|0)>=(c[f>>2]|0))break;else{o=o+20|0;i=n;q=q+20|0}}return h|0}function hk(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!f){d=0;return d|0}j=(b|0)==0;a:do if(j){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](92)|0;m=25;break}g=Wa[c[29356>>2]&127](92)|0;if((c[14985]|0)>>>0<92)c[14985]=92;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){l=c[14978]|0;k=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&k>>>0<=l>>>0)&1}h=Wa[c[29340>>2]&127](g)|0;if(!h){d=0;return d|0}g=Wa[c[29352>>2]&127](h)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0){d=0;return d|0}}else{do if((e[b+276>>1]|0)>=92){h=b+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=25;break a}h=b+296|0;g=c[h>>2]|0;if(!g){g=b+292|0;break}else{c[h>>2]=c[g>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=25;break a}}else g=b+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(b,92,0)|0;m=25}while(0);if((m|0)==25)if(!g){d=0;return d|0}else h=g;g=h;i=g+92|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(i|0));k=c[f>>2]|0;b:do if(!k)g=0;else{l=(Eu(k)|0)+1|0;c:do if(j){j=Sv(l|0,0,-1,-1)|0;i=L()|0;if(i>>>0>0|(i|0)==0&j>>>0>2147483390){g=0;break b}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](l)|0;m=51;break}g=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){n=c[14978]|0;j=Tv(i|0,j|0,g|0,((g|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&j>>>0<=n>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(!g){g=0;break b}i=Wa[c[29352>>2]&127](g)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0){g=0;break b}}else{do if(!(0<0|(0==0?(e[b+276>>1]|0)>>>0>>0:0))){i=b+300|0;g=c[i>>2]|0;if(g|0){c[i>>2]=c[g>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=51;break c}i=b+296|0;g=c[i>>2]|0;if(!g){g=b+292|0;break}else{c[i>>2]=c[g>>2];m=b+284|0;c[m>>2]=(c[m>>2]|0)+1;m=51;break c}}else g=b+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(b,l,0)|0;m=51}while(0);if((m|0)==51)if(!g){g=0;break}ew(g|0,k|0,l|0)|0}while(0);c[h>>2]=g;g=c[f+36>>2]|0;if(!g)g=0;else g=dk(b,g,0,0)|0;c[h+36>>2]=g;c[h+40>>2]=c[f+40>>2];g=gk(b,c[f+8>>2]|0,0)|0;c[h+8>>2]=g;g=gk(b,c[f+12>>2]|0,0)|0;c[h+12>>2]=g;a[h+16>>0]=a[f+16>>0]|0;a[h+18>>0]=a[f+18>>0]|0;a[h+17>>0]=a[f+17>>0]|0;a[h+20>>0]=a[f+20>>0]|0;g=c[f+24>>2]|0;if(!g)g=0;else g=dk(b,g,0,0)|0;c[h+24>>2]=g;g=c[f+28>>2]|0;if(!g)g=0;else g=dk(b,g,0,0)|0;c[h+28>>2]=g;c[h+68>>2]=d;n=h;return n|0}function ik(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if(!d){f=0;return f|0}i=c[d>>2]|0;v=(i|0)>0;i=(i*72|0)+8|0;j=v?i:80;i=v?((i|0)<0)<<31>>31:0;v=b+272|0;a:do if(c[v>>2]|0)if(!(a[b+81>>0]|0))u=12;else{f=0;return f|0}else{do if(!(i>>>0>0|((i|0)==0?j>>>0>(e[b+276>>1]|0)>>>0:0))){h=b+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];t=b+284|0;c[t>>2]=(c[t>>2]|0)+1;break a}h=b+296|0;g=c[h>>2]|0;if(!g){g=b+292|0;break}else{c[h>>2]=c[g>>2];t=b+284|0;c[t>>2]=(c[t>>2]|0)+1;break a}}else g=b+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;u=12}while(0);if((u|0)==12)g=_d(b,j,i)|0;if(!g){f=0;return f|0}t=c[d>>2]|0;c[g+4>>2]=t;c[g>>2]=t;if((c[d>>2]|0)<=0){f=g;return f|0}m=g+8|0;n=b+276|0;o=b+81|0;p=b+288|0;q=b+300|0;r=b+296|0;s=b+284|0;t=b+292|0;l=0;do{c[m+(l*72|0)>>2]=c[d+8+(l*72|0)>>2];i=c[d+8+(l*72|0)+4>>2]|0;b:do if(i){j=(Eu(i)|0)+1|0;do if(c[v>>2]|0)if(!(a[o>>0]|0))u=25;else{h=0;break b}else{if(!(0<0|(0==0?(e[n>>1]|0)>>>0>>0:0))){h=c[q>>2]|0;if(h|0){c[q>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}h=c[r>>2]|0;if(!h)h=t;else{c[r>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}}else h=p;c[h>>2]=(c[h>>2]|0)+1;u=25}while(0);if((u|0)==25){u=0;h=_d(b,j,0)|0}if(h)ew(h|0,i|0,j|0)|0;else h=0}else h=0;while(0);c[m+(l*72|0)+4>>2]=h;i=c[d+8+(l*72|0)+8>>2]|0;c:do if(i){j=(Eu(i)|0)+1|0;do if(c[v>>2]|0)if(!(a[o>>0]|0))u=37;else{h=0;break c}else{if(!(0<0|(0==0?(e[n>>1]|0)>>>0>>0:0))){h=c[q>>2]|0;if(h|0){c[q>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}h=c[r>>2]|0;if(!h)h=t;else{c[r>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}}else h=p;c[h>>2]=(c[h>>2]|0)+1;u=37}while(0);if((u|0)==37){u=0;h=_d(b,j,0)|0}if(h)ew(h|0,i|0,j|0)|0;else h=0}else h=0;while(0);c[m+(l*72|0)+8>>2]=h;i=c[d+8+(l*72|0)+12>>2]|0;d:do if(i){j=(Eu(i)|0)+1|0;do if(c[v>>2]|0)if(!(a[o>>0]|0))u=49;else{h=0;break d}else{if(!(0<0|(0==0?(e[n>>1]|0)>>>0>>0:0))){h=c[q>>2]|0;if(h|0){c[q>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}h=c[r>>2]|0;if(!h)h=t;else{c[r>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}}else h=p;c[h>>2]=(c[h>>2]|0)+1;u=49}while(0);if((u|0)==49){u=0;h=_d(b,j,0)|0}if(h)ew(h|0,i|0,j|0)|0;else h=0}else h=0;while(0);c[m+(l*72|0)+12>>2]=h;c[m+(l*72|0)+36>>2]=c[d+8+(l*72|0)+36>>2];c[m+(l*72|0)+40>>2]=c[d+8+(l*72|0)+40>>2];c[m+(l*72|0)+24>>2]=c[d+8+(l*72|0)+24>>2];c[m+(l*72|0)+28>>2]=c[d+8+(l*72|0)+28>>2];k=m+(l*72|0)+37|0;h=a[k>>0]|0;if(h&2){i=c[d+8+(l*72|0)+64>>2]|0;e:do if(i){j=(Eu(i)|0)+1|0;do if(c[v>>2]|0)if(!(a[o>>0]|0))u=62;else{h=0;break e}else{if(!(0<0|(0==0?(e[n>>1]|0)>>>0>>0:0))){h=c[q>>2]|0;if(h|0){c[q>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}h=c[r>>2]|0;if(!h)h=t;else{c[r>>2]=c[h>>2];c[s>>2]=(c[s>>2]|0)+1;break}}else h=p;c[h>>2]=(c[h>>2]|0)+1;u=62}while(0);if((u|0)==62){u=0;h=_d(b,j,0)|0}if(h)ew(h|0,i|0,j|0)|0;else h=0}else h=0;while(0);c[m+(l*72|0)+64>>2]=h;h=a[k>>0]|0}c[m+(l*72|0)+68>>2]=c[d+8+(l*72|0)+68>>2];if(h&4){k=gk(b,c[d+8+(l*72|0)+64>>2]|0,f)|0;c[m+(l*72|0)+64>>2]=k}h=c[d+8+(l*72|0)+16>>2]|0;c[m+(l*72|0)+16>>2]=h;if(h|0){k=h+32|0;c[k>>2]=(c[k>>2]|0)+1}h=fk(b,c[d+8+(l*72|0)+20>>2]|0,f)|0;c[m+(l*72|0)+20>>2]=h;h=c[d+8+(l*72|0)+44>>2]|0;if(!h)h=0;else h=dk(b,h,f,0)|0;c[m+(l*72|0)+44>>2]=h;i=jk(b,c[d+8+(l*72|0)+48>>2]|0)|0;c[m+(l*72|0)+48>>2]=i;i=d+8+(l*72|0)+56|0;j=c[i+4>>2]|0;k=m+(l*72|0)+56|0;c[k>>2]=c[i>>2];c[k+4>>2]=j;l=l+1|0}while((l|0)<(c[d>>2]|0));return g|0}function jk(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if(!d){v=0;return v|0}v=b+272|0;a:do if(c[v>>2]|0)if(!(a[b+81>>0]|0))t=12;else{v=0;return v|0}else{do if((e[b+276>>1]|0)>=8){g=b+300|0;f=c[g>>2]|0;if(f|0){c[g>>2]=c[f>>2];u=b+284|0;c[u>>2]=(c[u>>2]|0)+1;break a}g=b+296|0;f=c[g>>2]|0;if(!f){f=b+292|0;break}else{c[g>>2]=c[f>>2];u=b+284|0;c[u>>2]=(c[u>>2]|0)+1;break a}}else f=b+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;t=12}while(0);if((t|0)==12)f=_d(b,8,0)|0;if(!f){v=0;return v|0}u=d+4|0;c[f+4>>2]=c[u>>2];i=c[u>>2]<<3;b:do if(c[v>>2]|0)if(!(a[b+81>>0]|0))t=25;else c[f>>2]=0;else{do if(!(0<0|(0==0?(e[b+276>>1]|0)>>>0>>0:0))){g=b+300|0;h=c[g>>2]|0;if(h|0){c[g>>2]=c[h>>2];t=b+284|0;c[t>>2]=(c[t>>2]|0)+1;t=26;break b}g=b+296|0;h=c[g>>2]|0;if(!h){g=b+292|0;break}else{c[g>>2]=c[h>>2];t=b+284|0;c[t>>2]=(c[t>>2]|0)+1;t=26;break b}}else g=b+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;t=25}while(0);if((t|0)==25){h=_d(b,i,0)|0;t=26}if((t|0)==26?(c[f>>2]=h,h|0):0){if((c[u>>2]|0)<=0){v=f;return v|0}n=b+276|0;o=b+81|0;p=b+288|0;q=b+300|0;r=b+296|0;s=b+284|0;m=b+292|0;g=0;while(1){l=c[d>>2]|0;j=c[l+(g<<3)>>2]|0;c:do if(j){k=(Eu(j)|0)+1|0;do if(c[v>>2]|0)if(!(a[o>>0]|0))t=46;else{i=0;break c}else{if(!(0<0|(0==0?(e[n>>1]|0)>>>0>>0:0))){i=c[q>>2]|0;if(i|0){c[q>>2]=c[i>>2];c[s>>2]=(c[s>>2]|0)+1;break}i=c[r>>2]|0;if(!i)i=m;else{c[r>>2]=c[i>>2];c[s>>2]=(c[s>>2]|0)+1;break}}else i=p;c[i>>2]=(c[i>>2]|0)+1;t=46}while(0);if((t|0)==46){t=0;i=_d(b,k,0)|0}if(i)ew(i|0,j|0,k|0)|0;else i=0}else i=0;while(0);c[h+(g<<3)>>2]=i;c[h+(g<<3)+4>>2]=c[l+(g<<3)+4>>2];g=g+1|0;if((g|0)>=(c[u>>2]|0))break;h=c[f>>2]|0}return f|0}if(c[b+480>>2]|0){Xd(b,f);v=0;return v|0}v=f;if((c[b+304>>2]|0)>>>0<=v>>>0?(c[b+308>>2]|0)>>>0>v>>>0:0){v=b+300|0;c[f>>2]=c[v>>2];c[v>>2]=f;v=0;return v|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);v=0;return v|0}else{v=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);v=0;return v|0}return 0}function kk(b,d){b=b|0;d=d|0;var e=0;if((a[d>>0]|0)!=-95)return 0;d=d+44|0;e=c[d>>2]|0;if(!e)return 0;b=b+24|0;c[e+32>>2]=c[(c[b>>2]|0)+68>>2];c[(c[b>>2]|0)+68>>2]=c[d>>2];return 0}function lk(a,b){a=a|0;b=b|0;return (c[a+24>>2]|0)!=(b|0)|0}function mk(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=10-(c[b+56>>2]|0)|0;l=c[b>>2]|0;m=b+64|0;j=c[m>>2]|0;k=n<<2;a:do if(!j){b:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))i=12;else{i=28;break a}else{do if(!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0))){g=l+300|0;h=c[g>>2]|0;if(h|0){c[g>>2]=c[h>>2];l=l+284|0;c[l>>2]=(c[l>>2]|0)+1;break b}g=l+296|0;h=c[g>>2]|0;if(!h){g=l+292|0;break}else{c[g>>2]=c[h>>2];l=l+284|0;c[l>>2]=(c[l>>2]|0)+1;break b}}else g=l+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;i=12}while(0);if((i|0)==12)h=_d(l,k,0)|0;c[m>>2]=h;g=b+60|0;if(h)i=30}else{g=j;i=l+304|0;if(((c[i>>2]|0)>>>0<=g>>>0?(c[l+308>>2]|0)>>>0>g>>>0:0)?!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0)):0){h=j;g=b+60|0;i=30;break}h=Zd(l,j,k,0)|0;if(h|0){c[m>>2]=h;g=b+60|0;i=30;break}if(c[l+480>>2]|0){Xd(l,j);i=28;break}if((c[i>>2]|0)>>>0<=g>>>0?(c[l+308>>2]|0)>>>0>g>>>0:0){i=l+300|0;c[j>>2]=c[i>>2];c[i>>2]=j;i=28;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);i=28;break}else{i=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);i=28;break}}while(0);if((i|0)==28){c[m>>2]=0;g=b+60|0}else if((i|0)==30){c[g>>2]=n;c[h+(f<<2)>>2]=c[d+108>>2];return}c[g>>2]=0;return}function nk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=Ra;Ra=Ra+16|0;g=h;if((a[b+199>>0]|0)!=2){Ra=h;return}c[g>>2]=f;f=Me(c[b>>2]|0,e,g)|0;i=c[b+8>>2]|0;g=c[i+108>>2]|0;e=b+212|0;Fj(i,171,g,c[e>>2]|0,0,f,-7)|0;if(d<<24>>24)c[e>>2]=g;Ra=h;return}function ok(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+32|0;i=l+16|0;h=l+8|0;k=l;g=c[d+12>>2]|0;e=a[g>>0]|0;if(e<<24>>24==-88)e=a[g+38>>0]|0;switch(e<<24>>24){case -87:{e=g+20|0;j=6;break}case -125:{e=c[g+20>>2]|0;j=6;break}default:f=1}if((j|0)==6)f=c[c[e>>2]>>2]|0;if(c[d+4>>2]&2048|0){e=c[c[c[d+20>>2]>>2]>>2]|0;if((f|0)==(e|0)){k=0;Ra=l;return k|0}c[k>>2]=e;c[k+4>>2]=f;cd(b,39001,k);k=1;Ra=l;return k|0}if((f|0)==1){k=0;Ra=l;return k|0}if(!(c[g+4>>2]&2048)){cd(b,38899,i);k=1;Ra=l;return k|0}else{c[h>>2]=c[c[c[g+20>>2]>>2]>>2];c[h+4>>2]=1;cd(b,39001,h);k=1;Ra=l;return k|0}return 0}function pk(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[d+12>>2]|0;f=a[n>>0]|0;if(f<<24>>24==-88)f=a[n+38>>0]|0;switch(f<<24>>24){case -87:{f=n+20|0;l=6;break}case -125:{f=c[n+20>>2]|0;l=6;break}default:m=1}if((l|0)==6)m=c[c[f>>2]>>2]|0;if(!(c[d+4>>2]&2048))k=0;else k=c[d+20>>2]|0;b=c[b>>2]|0;h=m+1|0;g=((h|0)<0)<<31>>31;a:do if(!b){j=Sv(h|0,g|0,-1,-1)|0;i=L()|0;if(i>>>0>0|(i|0)==0&j>>>0>2147483390){n=0;return n|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](h)|0;l=33;break}b=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;d=59064;f=c[d>>2]|0;d=c[d+4>>2]|0;if((d|0)>0|(d|0)==0&f>>>0>0){j=c[14978]|0;i=Tv(f|0,d|0,b|0,((b|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=j>>>0)&1}f=Wa[c[29340>>2]&127](b)|0;if(!f){n=0;return n|0}d=Wa[c[29352>>2]&127](f)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0){n=0;return n|0}}else{do if(!(0>>0|(0==(g|0)?(e[b+276>>1]|0)>>>0>>0:0))){d=b+300|0;f=c[d>>2]|0;if(f|0){c[d>>2]=c[f>>2];l=b+284|0;c[l>>2]=(c[l>>2]|0)+1;l=33;break a}d=b+296|0;f=c[d>>2]|0;if(!f){f=b+292|0;break}else{c[d>>2]=c[f>>2];l=b+284|0;c[l>>2]=(c[l>>2]|0)+1;l=33;break a}}else f=b+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(b,h,g)|0;l=33}while(0);if((l|0)==33)if(!f){n=0;return n|0}b:do if((m|0)>0){h=n+38|0;i=n+20|0;j=n+20|0;if(!k){g=0;while(1){b=a[n>>0]|0;if(b<<24>>24==-88)d=a[h>>0]|0;else d=b;switch(d<<24>>24){case -87:{d=i;l=42;break}case -125:{d=c[j>>2]|0;l=42;break}default:d=n}do if((l|0)==42){l=0;if((c[c[d>>2]>>2]|0)<2)d=n;else{if(b<<24>>24!=-125?(a[h>>0]|0)!=-125:0){d=c[(c[i>>2]|0)+4+(g*20|0)>>2]|0;break}d=c[(c[c[j>>2]>>2]|0)+4+(g*20|0)>>2]|0}}while(0);k=Xj(d)|0;a[f+g>>0]=k;g=g+1|0;if((g|0)==(m|0))break b}}g=0;while(1){b=a[n>>0]|0;if(b<<24>>24==-88)d=a[h>>0]|0;else d=b;switch(d<<24>>24){case -87:{d=i;l=52;break}case -125:{d=c[j>>2]|0;l=52;break}default:d=n}do if((l|0)==52){l=0;if((c[c[d>>2]>>2]|0)<2)d=n;else{if(b<<24>>24!=-125?(a[h>>0]|0)!=-125:0){d=c[(c[i>>2]|0)+4+(g*20|0)>>2]|0;break}d=c[(c[c[j>>2]>>2]|0)+4+(g*20|0)>>2]|0}}while(0);d=Xj(d)|0;b=Xj(c[(c[k>>2]|0)+4+(g*20|0)>>2]|0)|0;if(d<<24>>24==0|b<<24>>24==0)d=(b|d)<<24>>24==0?65:(b&255)+(d&255)&255;else d=d<<24>>24>66|b<<24>>24>66?67:65;a[f+g>>0]=d;g=g+1|0;if((g|0)==(m|0))break b}}while(0);a[f+m>>0]=0;n=f;return n|0} -function gm(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;m=c[j>>2]|0;l=c[m+12>>2]|0;k=a[l>>0]|0;if(k<<24>>24==-88)k=a[l+38>>0]|0;switch(k<<24>>24){case -87:{k=l+20|0;v=6;break}case -125:{k=c[l+20>>2]|0;v=6;break}default:k=1}if((v|0)==6)k=c[c[k>>2]>>2]|0;r=(e[h+52>>1]|0)-i|0;r=(k|0)<(r|0)?k:r;s=h+28|0;if((r|0)<=1){v=1;return v|0}t=h+4|0;u=h+12|0;q=h+32|0;k=1;while(1){o=c[(c[l+20>>2]|0)+4+(k*20|0)>>2]|0;p=c[m+16>>2]|0;l=p+20|0;if(c[p+4>>2]&2048)l=c[l>>2]|0;n=c[(c[l>>2]|0)+4+(k*20|0)>>2]|0;if((a[o>>0]|0)!=-94){v=36;break}if((c[o+28>>2]|0)!=(g|0)){v=36;break}h=b[o+32>>1]|0;p=k+i|0;if(h<<16>>16!=(b[(c[t>>2]|0)+(p<<1)>>1]|0)){v=36;break}m=c[s>>2]|0;if((a[m+p>>0]|0)!=(a[m+i>>0]|0)){v=36;break}l=Xj(o)|0;m=Xj(n)|0;if(l<<24>>24==0|m<<24>>24==0)m=(m|l)<<24>>24==0?65:(m&255)+(l&255)&255;else m=l<<24>>24>66|m<<24>>24>66?67:65;if(h<<16>>16>-1)l=a[(c[(c[u>>2]|0)+4>>2]|0)+(h<<16>>16<<4)+13>>0]|0;else l=68;if(m<<24>>24!=l<<24>>24){v=36;break}do if(!(c[o+4>>2]&256)){if(n|0?c[n+4>>2]&256|0:0){l=Yi(f,n)|0;v=29;break}l=Yi(f,o)|0;if(!l){l=Yi(f,n)|0;v=29}}else{l=Yi(f,o)|0;v=29}while(0);if((v|0)==29){v=0;if(!l){v=36;break}}m=c[l>>2]|0;h=c[(c[q>>2]|0)+(p<<2)>>2]|0;p=a[m>>0]|0;l=(d[208+(p&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0;if(!(p<<24>>24==0|(l|0)!=0))do{m=m+1|0;h=h+1|0;p=a[m>>0]|0;l=(d[208+(p&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(p<<24>>24==0|(l|0)!=0));if(l|0){v=36;break}k=k+1|0;if((k|0)>=(r|0)){v=36;break}m=c[j>>2]|0;l=c[m+12>>2]|0}if((v|0)==36)return k|0;return 0}function hm(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0;eb=Ra;Ra=Ra+96|0;$a=eb;ab=j&65535;if(j<<16>>16?b[(c[c[f>>2]>>2]|0)+76>>1]&64:0){db=0;Ra=eb;return db|0}Ea=c[g>>2]|0;j=Ea&65535;if(j>>>0>63){db=0;Ra=eb;return db|0}Fa=cw(1,0,j|0)|0;Fa=Sv(Fa|0,L()|0,-1,-1)|0;Ga=L()|0;i=i&65535;Ca=i&2048;Ba=(Ca|0)==0;Ca=Ca>>>11&65535|386;a:do if(!((Fa|0)==0&(Ga|0)==0)){ba=h+24|0;ca=f+4|0;da=(j|0)==0;ea=f+80|0;fa=Ca&65535;ga=$a+4|0;ha=$a+12|0;ia=$a+16|0;ja=$a+8|0;ka=$a+20|0;la=$a+24|0;ma=$a+28|0;na=$a+17|0;oa=$a+18|0;pa=$a+72|0;qa=$a+20|0;ra=$a+4|0;sa=$a+8|0;ta=$a+24|0;ua=f+488|0;xa=(j|0)!=0;ya=(i&192|0)==0;X=(i&64|0)==0;C=1;m=0;W=0;S=0;T=0;i=0;h=0;A=0;B=0;b:while(1){if(!W){U=i;V=h}else{V=m+8|0;U=c[V>>2]|i;V=c[V+4>>2]|h}if(W>>>0>>0){i=c[(c[ba>>2]|0)+(W<<2)>>2]|0;if(Ba){Na=i;za=10}else{r=C;s=i;q=B;p=A;o=S;n=T}}else{Na=k;za=10}if((za|0)==10){za=0;z=Na+36|0;i=c[z>>2]|0;P=Na+24|0;if(i&1024|0){za=11;break}Q=Na+30|0;b[Q>>1]=0;R=c[(c[ca>>2]|0)+8+((d[Na+16>>0]|0)*72|0)+40>>2]|0;if(da){o=A;p=B}else{v=~U;w=~V;x=Na+40|0;y=Na+48|0;u=0;h=A;m=B;do{s=cw(1,0,u|0)|0;t=L()|0;c:do if((s&h|0)==0&(t&m|0)==0){r=g+4+(u*20|0)|0;i=c[r>>2]|0;n=c[i+4>>2]|0;if(n&4096)do{if(!(n&262144))i=i+12|0;else i=(c[i+20>>2]|0)+4|0;i=c[i>>2]|0;n=c[i+4>>2]|0}while((n&4096|0)!=0);if((a[i>>0]|0)==-94?(c[i+28>>2]|0)==(R|0):0){q=i+32|0;i=b[q>>1]|0;c[$a>>2]=ea;c[ga>>2]=ea;c[ha>>2]=0;a[ia>>0]=0;c[ja>>2]=0;c[ka>>2]=fa;c[la>>2]=0;c[ma>>2]=R;a[na>>0]=1;a[oa>>0]=1;if(i<<16>>16!=-2?(b[pa>>1]=i,Qa=Tl($a)|0,Qa|0):0){o=0;p=Qa;while(1){n=p+32|0;i=c[n>>2]|0;n=c[n+4>>2]|0;if((i&v|0)==0&(n&w|0)==0){if((i|0)==0&(n|0)==0?(Sa=b[p+12>>1]|0,Sa&130):0){za=29;break}Ka=(o|0)==0?p:o}else Ka=o;i=Tl($a)|0;if(!i){za=33;break}else{o=Ka;p=i}}if((za|0)==29){za=0;Ha=p;Ta=Sa}else if((za|0)==33){za=0;if(!Ka)break;Ha=Ka;Ta=b[Ka+12>>1]|0}d:do if(Ta<<16>>16==1){i=b[x>>1]|0;if(!(i<<16>>16))break c;o=c[y>>2]|0;n=i&65535;i=0;while(1){if((Ha|0)==(c[o+(i<<2)>>2]|0))break d;i=i+1|0;if(i>>>0>=n>>>0)break c}}while(0);do if(Ta&130){if((b[q>>1]|0)<=-1)break;p=c[f>>2]|0;o=c[Ha>>2]|0;i=Yi(p,c[r>>2]|0)|0;if(!i)n=c[(c[p>>2]|0)+8>>2]|0;else n=i;i=Yi(p,o)|0;if(!i)i=c[(c[p>>2]|0)+8>>2]|0;n=c[n>>2]|0;o=c[i>>2]|0;O=a[n>>0]|0;i=(d[208+(O&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0;if(!(O<<24>>24==0|(i|0)!=0))do{n=n+1|0;o=o+1|0;O=a[n>>0]|0;i=(d[208+(O&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(O<<24>>24==0|(i|0)!=0));if(i|0)break c}while(0);h=s|h;m=t|m;break}}}while(0);u=u+1|0}while((u|0)!=(j|0));i=c[z>>2]|0;o=h;p=m}do if(!(i&4096)){if(!(i&256)){m=c[Na+32>>2]|0;if(!m){bb=0;za=135;break b}O=m+55|0;if((d[O>>0]|d[O+1>>0]<<8)&4){bb=0;za=135;break b}h=b[m+52>>1]|0;i=(a[m+54>>0]|0)!=0&1;if(!(h<<16>>16)){La=i;Va=o;Wa=p;za=117;break}else{n=m;O=b[m+50>>1]|0;N=h&65535}}else{n=0;O=0;i=C;N=1}F=Na+42|0;G=(n|0)==0;H=Na+48|0;I=n+4|0;J=n+28|0;K=n+12|0;M=n+40|0;C=n+32|0;D=cw(1,0,W|0)|0;E=L()|0;h=0;y=0;A=0;B=0;z=o;x=p;e:while(1){o=e[P>>1]|0;q=B>>>0>>0;f:do if(q?B>>>0>=(e[F>>1]|0)>>>0:0){p=c[H>>2]|0;m=c[p+(B<<2)>>2]|0;w=b[m+12>>1]|0;n=w&65535;if((w&Ca)<<16>>16){Aa=h;Y=y;Z=A;$=(n&256|0)==0?i:0;aa=B+1|0;va=z;wa=x;break}if((n&1|0)!=0?(Ua=c[m>>2]|0,Oa=B+1|0,Oa>>>0>>0):0){m=Oa;while(1){if((c[c[p+(m<<2)>>2]>>2]|0)==(Ua|0)){Da=0;za=68;break f}m=m+1|0;if(m>>>0>=o>>>0){Da=1;za=68;break}}}else{Da=1;za=68}}else{Da=1;za=68}while(0);if((za|0)==68){za=0;if(!G){o=b[(c[I>>2]|0)+(B<<1)>>1]|0;m=a[(c[J>>2]|0)+B>>0]|0;n=c[K>>2]|0;o=o<<16>>16==(b[n+40>>1]|0)?-1:o<<16>>16;if(q|(i<<24>>24==0|(o|0)<0)){u=o;_=i}else{u=o;_=(a[(c[n+4>>2]|0)+(o<<4)+12>>0]|0)==0?0:i}}else{m=0;u=-1;_=i}if(!(xa&Da<<24>>24!=0)){za=114;break}s=(u|0)>-2;t=(u|0)==-1;i=0;n=1;g:while(1){v=cw(1,0,i|0)|0;w=L()|0;do if((v&z|0)==0&(w&x|0)==0){r=g+4+(i*20|0)|0;o=c[r>>2]|0;h:do if(!o)o=0;else while(1){p=c[o+4>>2]|0;if(!(p&4096))break h;if(!(p&262144))o=o+12|0;else o=(c[o+20>>2]|0)+4|0;o=c[o>>2]|0;if(!o){o=0;break}}while(0);n=ya?0:n;if(s){if((a[o>>0]|0)!=-94)break;if((c[o+28>>2]|0)!=(R|0))break;if((u|0)!=(b[o+32>>1]|0))break}else{p=c[(c[M>>2]|0)+4+(B*20|0)>>2]|0;i:do if(!o)o=0;else while(1){q=c[o+4>>2]|0;if(!(q&4096))break i;if(!(q&262144))o=o+12|0;else o=(c[o+20>>2]|0)+4|0;o=c[o>>2]|0;if(!o){o=0;break}}while(0);j:do if(!p)p=0;else while(1){q=c[p+4>>2]|0;if(!(q&4096))break j;if(!(q&262144))p=p+12|0;else p=(c[p+20>>2]|0)+4|0;p=c[p>>2]|0;if(!p){p=0;break}}while(0);if(bk(0,o,p,R)|0)break}if(t){n=-1;break g}p=c[f>>2]|0;o=Yi(p,c[r>>2]|0)|0;if(!o)o=c[(c[p>>2]|0)+8>>2]|0;p=c[o>>2]|0;q=c[(c[C>>2]|0)+(B<<2)>>2]|0;r=a[p>>0]|0;o=(d[208+(r&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0;if(!(r<<24>>24==0|(o|0)!=0))do{p=p+1|0;q=q+1|0;r=a[p>>0]|0;o=(d[208+(r&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(o|0)!=0));if(!o){n=u;break g}}while(0);i=i+1|0;if(!(i>>>0>>0&n<<24>>24!=0)){za=114;break e}}o=B+1|0;b[Q>>1]=o;do if(X){if(h<<24>>24)if((m^y)<<24>>24==(a[g+4+(i*20|0)+12>>0]|0)){i=y;break}else{za=114;break e}i=a[g+4+(i*20|0)+12>>0]^m;if(!(i<<24>>24)){h=1;i=0;break}wa=l;Aa=c[wa+4>>2]|E;h=l;c[h>>2]=c[wa>>2]|D;c[h+4>>2]=Aa;h=1}else i=y;while(0);Aa=h;Y=i;Z=(n|0)==-1?1:A;$=_;aa=o;va=v|z;wa=w|x}if(aa>>>0>>0){h=Aa;y=Y;A=Z;B=aa;i=$;z=va;x=wa}else{Ja=Z;Pa=$;Xa=va;Ya=wa;break}}if((za|0)==114){za=0;Ja=A;Pa=(B|0)==0|B>>>0<(O&65535)>>>0?0:_;Xa=z;Ya=x}if(!(Ja<<24>>24)){La=Pa;Va=Xa;Wa=Ya;za=117}else{Ma=1;Za=Xa;_a=Ya}}else{La=C;Va=o;Wa=p;za=117}while(0);if((za|0)==117){za=0;if(!(La<<24>>24)){Ia=0;cb=Va;db=Wa;break a}else{Ma=La;Za=Va;_a=Wa}}v=Na+8|0;u=c[v>>2]|S;v=c[v+4>>2]|T;if(da){r=Ma;s=Na;q=_a;p=Za;o=u;n=v}else{s=~u;t=~v;r=0;q=Za;i=_a;while(1){o=cw(1,0,r|0)|0;p=L()|0;do if((o&q|0)==0&(p&i|0)==0){m=c[g+4+(r*20|0)>>2]|0;if(m){n=Pl(ua,m)|0;h=L()|0;if((n|0)==0&(h|0)==0){a[qa>>0]=1;c[ra>>2]=127;c[sa>>2]=128;c[ta>>2]=0;_j($a,m)|0;if(!(a[qa>>0]|0)){h=q;break}else{n=0;h=0}}}else{n=0;h=0}T=(n&s|0)==0&(h&t|0)==0;h=(T?o:0)|q;i=(T?p:0)|i}else h=q;while(0);r=r+1|0;if((r|0)==(j|0)){r=Ma;s=Na;q=i;p=h;o=u;n=v;break}else q=h}}}if(W>>>0>=ab>>>0|(q>>>0>Ga>>>0|(q|0)==(Ga|0)&p>>>0>=Fa>>>0|r<<24>>24==0)){Ia=r;cb=p;db=q;break a}else{C=r;m=s;W=W+1|0;S=o;T=n;i=U;h=V;A=p;B=q}}if((za|0)==11){db=(a[P+5>>0]|0)==0;Ia=C;cb=db?A:Fa;db=db?B:Ga;break}else if((za|0)==135){Ra=eb;return bb|0}}else{Ia=1;cb=0;db=0}while(0);if((cb|0)==(Fa|0)&(db|0)==(Ga|0)){db=Ea&255;Ra=eb;return db|0}if(Ia<<24>>24){db=-1;Ra=eb;return db|0}if(j>>>0<=1){db=0;Ra=eb;return db|0}while(1){i=j;j=j+-1|0;$a=cw(1,0,j|0)|0;$a=Sv($a|0,L()|0,-1,-1)|0;ab=L()|0;if(($a&cb|0)==($a|0)&(ab&db|0)==(ab|0))break;if((i|0)<=2){bb=0;za=135;break}}if((za|0)==135){Ra=eb;return bb|0}db=j&255;Ra=eb;return db|0}function im(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;do if(h|0){h=d+16|0;j=c[h>>2]|0;k=j+5|0;if(k>>>0<(c[d+8>>2]|0)>>>0){c[h>>2]=k;s=(c[d+4>>2]|0)+j|0;a[s>>0]=a[43977]|0;a[s+1>>0]=a[43978]|0;a[s+2>>0]=a[43979]|0;a[s+3>>0]=a[43980]|0;a[s+4>>0]=a[43981]|0;break}else{wb(d,43977,5);break}}while(0);s=(f|0)>1;do if(s){h=d+16|0;j=c[h>>2]|0;k=j+1|0;if(k>>>0<(c[d+8>>2]|0)>>>0){c[h>>2]=k;a[(c[d+4>>2]|0)+j>>0]=40;break}else{wb(d,44003,1);break}}else if((f|0)!=1){h=d+16|0;j=c[h>>2]|0;k=j+1|0;if(k>>>0<(c[d+8>>2]|0)>>>0){c[h>>2]=k;a[(c[d+4>>2]|0)+j>>0]=a[i>>0]|0;return}else{wb(d,i,1);return}}while(0);o=e+4|0;q=d+16|0;r=d+8|0;m=e+12|0;n=d+4|0;l=0;do{do if(l|0){h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[n>>2]|0)+h>>0]=44;break}else{wb(d,41685,1);break}}while(0);h=b[(c[o>>2]|0)+(l+g<<1)>>1]|0;switch(h<<16>>16){case -2:{h=43996;p=21;break}case -1:{h=38132;p=21;break}default:{h=c[(c[(c[m>>2]|0)+4>>2]|0)+(h<<16>>16<<4)>>2]|0;if(!h){e=0;h=0}else p=21}}if((p|0)==21){p=0;e=(Eu(h)|0)&1073741823}j=c[q>>2]|0;k=j+e|0;if(k>>>0<(c[r>>2]|0)>>>0){if(e|0){c[q>>2]=k;ew((c[n>>2]|0)+j|0,h|0,e|0)|0}}else wb(d,h,e);l=l+1|0}while((l|0)!=(f|0));h=c[q>>2]|0;j=h+1|0;k=j>>>0<(c[r>>2]|0)>>>0;do if(s){if(k){c[q>>2]=j;a[(c[d+4>>2]|0)+h>>0]=41}else wb(d,34066,1);h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[d+4>>2]|0)+h>>0]=a[i>>0]|0}else wb(d,i,1);h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[d+4>>2]|0)+h>>0]=40;break}else{wb(d,44003,1);break}}else if(k){c[q>>2]=j;a[(c[d+4>>2]|0)+h>>0]=a[i>>0]|0;break}else{wb(d,i,1);break}while(0);e=d+4|0;k=0;do{do if(k|0){h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[e>>2]|0)+h>>0]=44;break}else{wb(d,41685,1);break}}while(0);h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[e>>2]|0)+h>>0]=63}else wb(d,35133,1);k=k+1|0}while((k|0)!=(f|0));if(!s)return;h=c[q>>2]|0;j=h+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[q>>2]=j;a[(c[d+4>>2]|0)+h>>0]=41;return}else{wb(d,34066,1);return}}function jm(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0;M=Ra;Ra=Ra+16|0;J=M;y=c[f>>2]|0;K=c[d+8>>2]|0;a:do switch(a[y>>0]|0){case 45:case 53:{j=Jj(d,c[y+16>>2]|0,j)|0;break}case 50:{k=K+108|0;i=c[k>>2]|0;if((c[K+112>>2]|0)>(i|0)){c[k>>2]=i+1;K=c[K+104>>2]|0;a[K+(i*20|0)>>0]=73;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=0;c[K+(i*20|0)+8>>2]=j;c[K+(i*20|0)+12>>2]=0;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0;break a}else{Di(K,73,0,j,0)|0;break a}}default:{D=c[g+64>>2]|0;H=D+36|0;if((c[H>>2]&1024|0)==0?(k=c[D+32>>2]|0,(k|0)!=0):0)i=(a[(c[k+28>>2]|0)+h>>0]|0)==0?i:(i|0)==0&1;G=(h|0)>0;b:do if(G){l=c[D+48>>2]|0;k=0;while(1){F=c[l+(k<<2)>>2]|0;if(F|0?(c[F>>2]|0)==(y|0):0)break;k=k+1|0;if((k|0)>=(h|0))break b}lm(g,f);g=j;Ra=M;return g|0}while(0);F=D+40|0;m=e[F>>1]|0;if((m|0)>(h|0)){n=c[D+48>>2]|0;k=0;l=h;do{k=k+((c[c[n+(l<<2)>>2]>>2]|0)==(y|0)&1)|0;l=l+1|0}while((l|0)<(m|0));C=k}else C=0;c[J>>2]=0;if((c[y+4>>2]&2048|0)!=0?(c[c[c[y+20>>2]>>2]>>2]|0)!=1:0){A=c[d>>2]|0;B=dk(A,y,0,0)|0;u=A+81|0;if(!(a[u>>0]|0)){s=B+20|0;q=c[c[s>>2]>>2]|0;t=B+12|0;r=c[(c[t>>2]|0)+20>>2]|0;m=b[F>>1]|0;if((m&65535|0)>(h|0)){p=D+48|0;k=0;o=h;l=0;do{n=c[(c[p>>2]|0)+(o<<2)>>2]|0;if((c[n>>2]|0)==(y|0)?(v=(c[n+24>>2]|0)+-1|0,w=q+4+(v*20|0)|0,x=c[w>>2]|0,(x|0)!=0):0){l=nj(c[d>>2]|0,l,x)|0;c[w>>2]=0;m=r+4+(v*20|0)|0;k=nj(c[d>>2]|0,k,c[m>>2]|0)|0;c[m>>2]=0;m=b[F>>1]|0}o=o+1|0}while((o|0)<(m&65535|0))}else{l=0;k=0}if(q|0)ri(A,q);if(r|0)ri(A,r);c[(c[t>>2]|0)+20>>2]=k;c[c[s>>2]>>2]=l;if(k|0?(c[k>>2]|0)==1:0){l=k+4|0;k=c[l>>2]|0;c[l>>2]=0;l=c[t>>2]|0;if(l|0)ni(A,l);c[t>>2]=k}l=c[(c[s>>2]|0)+48>>2]|0;if(l|0?(z=c[l>>2]|0,(z|0)>0):0){k=0;do{b[l+4+(k*20|0)+16>>1]=0;k=k+1|0}while((k|0)!=(z|0))}if(!(a[u>>0]|0)){m=c[d>>2]|0;n=C<<2;c:do if(!m){z=Sv(n|0,0,-1,-1)|0;y=L()|0;if(y>>>0>0|(y|0)==0&z>>>0>2147483390)k=0;else{if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](n)|0;E=66;break}k=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){z=c[14978]|0;y=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;x=L()|0;c[14768]=((x|0)<0|(x|0)==0&y>>>0<=z>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k){k=0;break}l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0){E=67;break}c[14987]=l;E=67}}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){k=0;break}}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];E=m+284|0;c[E>>2]=(c[E>>2]|0)+1;E=66;break c}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];E=m+284|0;c[E>>2]=(c[E>>2]|0)+1;E=66;break c}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,n,0)|0;E=66}while(0);if((E|0)==66)if(!k)k=0;else E=67;if((E|0)==67)gw(k|0,0,n|0)|0;m=qk(d,B,4,0,k,J)|0;n=c[J>>2]|0;c[(c[f>>2]|0)+28>>2]=n;l=k}else{l=0;m=5;n=0;k=0}}else{l=0;m=5;n=0;k=0}if(B|0)ni(A,B);y=c[f>>2]|0;B=k}else{m=qk(d,y,4,0,0,J)|0;l=0;n=c[J>>2]|0;B=0}x=(((m|0)==4?(i|0)==0&1:i)|0)!=0;k=x?32:36;z=K+108|0;i=c[z>>2]|0;A=K+112|0;if((c[A>>2]|0)>(i|0)){c[z>>2]=i+1;w=c[K+104>>2]|0;a[w+(i*20|0)>>0]=k;b[w+(i*20|0)+2>>1]=0;c[w+(i*20|0)+4>>2]=n;c[w+(i*20|0)+8>>2]=0;c[w+(i*20|0)+12>>2]=0;c[w+(i*20|0)+16>>2]=0;a[w+(i*20|0)+1>>0]=0}else Di(K,k,n,0,0)|0;c[H>>2]=c[H>>2]|2048;t=g+56|0;k=c[t>>2]|0;if(!k){w=d+56|0;k=(c[w>>2]|0)+-1|0;c[w>>2]=k;c[g+16>>2]=k;k=c[t>>2]|0}q=k+C|0;c[t>>2]=q;r=c[d>>2]|0;s=g+60|0;i=c[s>>2]|0;q=q*20|0;d:do if(!i){e:do if(c[r+272>>2]|0)if(!(a[r+81>>0]|0))E=88;else{E=126;break d}else{do if(!(0<0|(0==0?(e[r+276>>1]|0)>>>0>>0:0))){n=r+300|0;i=c[n>>2]|0;if(i|0){c[n>>2]=c[i>>2];C=r+284|0;c[C>>2]=(c[C>>2]|0)+1;break e}n=r+296|0;i=c[n>>2]|0;if(!i){i=r+292|0;break}else{c[n>>2]=c[i>>2];C=r+284|0;c[C>>2]=(c[C>>2]|0)+1;break e}}else i=r+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;E=88}while(0);if((E|0)==88)i=_d(r,q,0)|0;c[s>>2]=i;if(!i)E=127;else E=103}else{o=i;p=r+304|0;if(((c[p>>2]|0)>>>0<=o>>>0?(c[r+308>>2]|0)>>>0>o>>>0:0)?!(0<0|(0==0?(e[r+276>>1]|0)>>>0>>0:0)):0){E=103;break}n=Zd(r,i,q,0)|0;if(n|0){c[s>>2]=n;i=n;E=103;break}if(c[r+480>>2]|0){Xd(r,i);E=126;break}if((c[p>>2]|0)>>>0<=o>>>0?(c[r+308>>2]|0)>>>0>o>>>0:0){E=r+300|0;c[i>>2]=c[E>>2];c[E>>2]=i;E=126;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);E=126;break}else{E=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);E=126;break}}while(0);if((E|0)==103){n=b[F>>1]|0;if((n&65535|0)>(h|0)){v=D+48|0;w=j-h|0;s=(m|0)==1;t=(l|0)==0;u=K+104|0;r=x?4:5;o=0;m=i+(k*20|0)|0;q=h;i=n;while(1){if((c[c[(c[v>>2]|0)+(q<<2)>>2]>>2]|0)==(y|0)){p=w+q|0;do if(s){n=c[J>>2]|0;k=c[z>>2]|0;if((c[A>>2]|0)>(k|0)){c[z>>2]=k+1;i=c[u>>2]|0;a[i+(k*20|0)>>0]=-128;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=n;c[i+(k*20|0)+8>>2]=p;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0;i=k;k=o;break}else{i=Di(K,128,n,p,0)|0;k=o;break}}else{if(t){k=o;n=0}else{k=o+1|0;n=c[l+(o<<2)>>2]|0}o=c[J>>2]|0;i=c[z>>2]|0;if((c[A>>2]|0)>(i|0)){c[z>>2]=i+1;D=c[u>>2]|0;a[D+(i*20|0)>>0]=90;b[D+(i*20|0)+2>>1]=0;c[D+(i*20|0)+4>>2]=o;c[D+(i*20|0)+8>>2]=n;c[D+(i*20|0)+12>>2]=p;c[D+(i*20|0)+16>>2]=0;a[D+(i*20|0)+1>>0]=0;n=o;break}else{i=Di(K,90,o,n,p)|0;n=o;break}}while(0);c[m+4>>2]=i;i=c[z>>2]|0;if((c[A>>2]|0)>(i|0)){c[z>>2]=i+1;D=c[u>>2]|0;a[D+(i*20|0)>>0]=50;b[D+(i*20|0)+2>>1]=0;c[D+(i*20|0)+4>>2]=p;c[D+(i*20|0)+8>>2]=0;c[D+(i*20|0)+12>>2]=0;c[D+(i*20|0)+16>>2]=0;a[D+(i*20|0)+1>>0]=0}else Di(K,50,p,0,0)|0;do if((q|0)==(h|0)){c[m>>2]=n;a[m+16>>0]=r;if(G?(I=c[H>>2]|0,(I&1024|0)==0):0){c[m+8>>2]=w;c[m+12>>2]=h;c[H>>2]=I|262144;break}c[m+12>>2]=0}else a[m+16>>0]=-86;while(0);m=m+20|0;i=b[F>>1]|0}else k=o;q=q+1|0;if((q|0)>=(i&65535|0))break;else o=k}}}else if((E|0)==126){c[s>>2]=0;E=127}if((E|0)==127)c[t>>2]=0;k=c[d>>2]|0;do if(B|0){if(k|0){if(c[k+480>>2]|0){Xd(k,B);break}K=B;if((c[k+304>>2]|0)>>>0<=K>>>0?(c[k+308>>2]|0)>>>0>K>>>0:0){K=k+300|0;c[B>>2]=c[K>>2];c[K>>2]=B;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](B);break}else{K=Wa[c[29352>>2]&127](B)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](B);break}}while(0)}}while(0);lm(g,f);g=j;Ra=M;return g|0}function km(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!e){k=Jj(d,0,f)|0;if((k|0)==(f|0))return;h=c[d+8>>2]|0;if(!h)return;i=h+108|0;j=c[i>>2]|0;if((c[h+112>>2]|0)>(j|0)){c[i>>2]=j+1;d=c[h+104>>2]|0;a[d+(j*20|0)>>0]=79;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=k;c[d+(j*20|0)+8>>2]=f;c[d+(j*20|0)+12>>2]=0;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0;return}else{Di(h,79,k,f,0)|0;return}}h=a[e>>0]|0;j=h<<24>>24==-88;if(j)h=a[e+38>>0]|0;switch(h<<24>>24){case -87:{i=e+20|0;q=7;break}case -125:{i=c[e+20>>2]|0;q=7;break}default:{}}if((q|0)==7?(c[c[i>>2]>>2]|0)>=2:0){if(c[e+4>>2]&2048|0){l=c[d+8>>2]|0;k=Qj(d,e)|0;h=g+-1|0;i=l+108|0;j=c[i>>2]|0;if((c[l+112>>2]|0)>(j|0)){c[i>>2]=j+1;d=c[l+104>>2]|0;a[d+(j*20|0)>>0]=78;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=k;c[d+(j*20|0)+8>>2]=f;c[d+(j*20|0)+12>>2]=h;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0;return}else{Di(l,78,k,f,h)|0;return}}e=c[e+20>>2]|0;if((g|0)<=0)return;m=d+8|0;l=0;do{h=c[e+4+(l*20|0)>>2]|0;n=l+f|0;do if(h){if((a[h>>0]|0)!=-88){p=Jj(d,h,n)|0;q=21;break}k=c[m>>2]|0;h=c[h+28>>2]|0;i=k+108|0;j=c[i>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[i>>2]=j+1;k=c[k+104>>2]|0;a[k+(j*20|0)>>0]=78;b[k+(j*20|0)+2>>1]=0;c[k+(j*20|0)+4>>2]=h;c[k+(j*20|0)+8>>2]=n;c[k+(j*20|0)+12>>2]=0;c[k+(j*20|0)+16>>2]=0;a[k+(j*20|0)+1>>0]=0;break}else{Di(k,78,h,n,0)|0;break}}else{p=Jj(d,0,n)|0;q=21}while(0);do if(((q|0)==21?(q=0,(p|0)!=(n|0)):0)?(o=c[m>>2]|0,o|0):0){h=o+108|0;i=c[h>>2]|0;if((c[o+112>>2]|0)>(i|0)){c[h>>2]=i+1;k=c[o+104>>2]|0;a[k+(i*20|0)>>0]=79;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=p;c[k+(i*20|0)+8>>2]=n;c[k+(i*20|0)+12>>2]=0;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0;break}else{Di(o,79,p,n,0)|0;break}}while(0);l=l+1|0}while((l|0)!=(g|0));return}if(j){k=c[d+8>>2]|0;h=c[e+28>>2]|0;i=k+108|0;j=c[i>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[i>>2]=j+1;d=c[k+104>>2]|0;a[d+(j*20|0)>>0]=78;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=h;c[d+(j*20|0)+8>>2]=f;c[d+(j*20|0)+12>>2]=0;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0;return}else{Di(k,78,h,f,0)|0;return}}k=Jj(d,e,f)|0;if((k|0)==(f|0))return;h=c[d+8>>2]|0;if(!h)return;i=h+108|0;j=c[i>>2]|0;if((c[h+112>>2]|0)>(j|0)){c[i>>2]=j+1;d=c[h+104>>2]|0;a[d+(j*20|0)>>0]=79;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=k;c[d+(j*20|0)+8>>2]=f;c[d+(j*20|0)+12>>2]=0;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0;return}else{Di(h,79,k,f,0)|0;return}}function lm(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=e+10|0;g=b[h>>1]|0;if(g&4)return;q=d+72|0;if(!(c[d>>2]|0)){m=q;l=c[m>>2]|0;m=c[m+4>>2]|0;f=e;k=0;i=g;n=h;while(1){j=f+40|0;if(!((c[j>>2]&l|0)==0?(c[j+4>>2]&m|0)==0:0)){d=22;break}if((k|0)!=0?(o=i&65535,(o&1024|0)!=0):0)d=(o|512)&65535;else d=i|4;b[n>>1]=d;j=c[f+16>>2]|0;if((j|0)<0){d=22;break}d=c[(c[f+4>>2]|0)+20>>2]|0;i=d+(j*48|0)+14|0;n=(a[i>>0]|0)+-1<<24>>24;a[i>>0]=n;if(n<<24>>24){d=22;break}n=d+(j*48|0)+10|0;i=b[n>>1]|0;if(i&4){d=22;break}else{f=d+(j*48|0)|0;k=k+1|0}}if((d|0)==22)return}i=0;while(1){if(!(c[(c[e>>2]|0)+4>>2]&1)){d=22;break}o=q;n=e+40|0;if(!((c[n>>2]&c[o>>2]|0)==0?(c[n+4>>2]&c[o+4>>2]|0)==0:0)){d=22;break}if((i|0)!=0?(p=g&65535,(p&1024|0)!=0):0)d=(p|512)&65535;else d=g|4;b[h>>1]=d;f=c[e+16>>2]|0;if((f|0)<0){d=22;break}d=c[(c[e+4>>2]|0)+20>>2]|0;n=d+(f*48|0)+14|0;o=(a[n>>0]|0)+-1<<24>>24;a[n>>0]=o;if(o<<24>>24){d=22;break}h=d+(f*48|0)+10|0;g=b[h>>1]|0;if(g&4){d=22;break}else{e=d+(f*48|0)|0;i=i+1|0}}if((d|0)==22)return}function mm(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;if((a[d>>0]|0)==44)do{mm(c[d+12>>2]|0,e,f);d=c[d+16>>2]|0}while((a[d>>0]|0)==44);i=f+12|0;if((c[i>>2]|0)<=0)return;f=c[f+20>>2]|0;g=0;while(1){h=f+10|0;if((b[h>>1]&4)==0?(bk(0,c[f>>2]|0,d,e)|0)==0:0)b[h>>1]=b[h>>1]|4;g=g+1|0;if((g|0)>=(c[i>>2]|0))break;else f=f+48|0}return}function nm(d,e){d=d|0;e=e|0;d=c[d+24>>2]|0;if(bk(0,e,c[d>>2]|0,c[d+4>>2]|0)|0){e=0;return e|0}a[e>>0]=-94;c[e+28>>2]=c[d+8>>2];b[e+32>>1]=c[d+12>>2];c[e+44>>2]=0;e=1;return e|0}function om(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=c[c[c[a>>2]>>2]>>2]|0;d=c[a+12>>2]|0;o=a+20|0;if((d|0)>0){p=(q|0)==0;i=q+480|0;j=q+304|0;k=q+308|0;l=q+300|0;h=c[o>>2]|0;while(1){g=d;d=d+-1|0;f=h+10|0;e=b[f>>1]|0;if((e&1)!=0?(m=c[h>>2]|0,(m|0)!=0):0){ni(q,m);e=b[f>>1]|0}e=e&65535;do if(!(e&16)){if(e&32|0?(n=c[h+28>>2]|0,om(n),n|0):0){if(!p){if(c[i>>2]|0){Xd(q,n);break}f=n;if((c[j>>2]|0)>>>0<=f>>>0?(c[k>>2]|0)>>>0>f>>>0:0){c[n>>2]=c[l>>2];c[l>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{f=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}}else{e=c[h+28>>2]|0;om(e);if(e|0){if(!p){if(c[i>>2]|0){Xd(q,e);break}f=e;if((c[j>>2]|0)>>>0<=f>>>0?(c[k>>2]|0)>>>0>f>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{f=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}}while(0);if((g|0)<=1)break;else h=h+48|0}}d=c[o>>2]|0;if((d|0)==(a+24|0))return;if(!d)return;if(q|0){if(c[q+480>>2]|0){Xd(q,d);return}a=d;if((c[q+304>>2]|0)>>>0<=a>>>0?(c[q+308>>2]|0)>>>0>a>>>0:0){q=q+300|0;c[d>>2]=c[q>>2];c[q>>2]=d;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);return}else{q=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);return}}function pm(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=d+8|0;h=c[l>>2]|0;a:do if(!h){k=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))j=15;else{h=0;break a}else{do if((e[k+276>>1]|0)>=224){i=k+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];p=k+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}i=k+296|0;h=c[i>>2]|0;if(!h){h=k+292|0;break}else{c[i>>2]=c[h>>2];p=k+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;j=15}while(0);if((j|0)==15)h=_d(k,224,0)|0;if(!h)h=0;else{i=h+104|0;j=i+120|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[h>>2]=k;i=k+4|0;j=c[i>>2]|0;if(j|0)c[j+4>>2]=h;c[h+8>>2]=j;c[h+4>>2]=0;c[i>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=d;c[l>>2]=h;Di(h,61,0,1,0)|0}}while(0);p=d+19|0;i=a[p>>0]|0;if(!(i<<24>>24)){n=d+44|0;o=(c[n>>2]|0)+1|0;c[n>>2]=o}else{o=i+-1<<24>>24;a[p>>0]=o;o=c[d+148+((o&255)<<2)>>2]|0}m=h+108|0;i=c[m>>2]|0;n=h+112|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;l=c[h+104>>2]|0;a[l+(i*20|0)>>0]=70;b[l+(i*20|0)+2>>1]=0;c[l+(i*20|0)+4>>2]=0;c[l+(i*20|0)+8>>2]=o;c[l+(i*20|0)+12>>2]=0;c[l+(i*20|0)+16>>2]=0;a[l+(i*20|0)+1>>0]=0}else Di(h,70,0,o,0)|0;do if((g|0)>2){i=a[p>>0]|0;if(!(i<<24>>24)){k=d+44|0;l=(c[k>>2]|0)+1|0;c[k>>2]=l}else{l=i+-1<<24>>24;a[p>>0]=l;l=c[d+148+((l&255)<<2)>>2]|0}i=c[m>>2]|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;k=c[h+104>>2]|0;a[k+(i*20|0)>>0]=110;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=0;c[k+(i*20|0)+8>>2]=l;c[k+(i*20|0)+12>>2]=0;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0}else i=Di(h,110,0,l,0)|0;do if(!(a[(c[h>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[m>>2]|0)+-1|0;j=c[h+104>>2]|0;k=j+(i*20|0)+1|0;if(!(a[k>>0]|0)){c[j+(i*20|0)+16>>2]=59952;a[k>>0]=-1;break}else{Ei(h,j+(i*20|0)|0,59952,-1);break}}while(0);i=c[m>>2]|0;j=i+2|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;k=c[h+104>>2]|0;a[k+(i*20|0)>>0]=57;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=l;c[k+(i*20|0)+8>>2]=j;c[k+(i*20|0)+12>>2]=f;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0}else Di(h,57,l,j,f)|0;i=c[m>>2]|0;if((i|0)>0)b[(c[h+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=83}else{i=c[m>>2]|0;j=i+2|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;l=c[h+104>>2]|0;a[l+(i*20|0)>>0]=15;b[l+(i*20|0)+2>>1]=0;c[l+(i*20|0)+4>>2]=f;c[l+(i*20|0)+8>>2]=j;c[l+(i*20|0)+12>>2]=0;c[l+(i*20|0)+16>>2]=0;a[l+(i*20|0)+1>>0]=0;break}else{Di(h,15,f,j,0)|0;break}}while(0);j=c[18208+(g<<2)>>2]|0;i=c[m>>2]|0;k=i+2|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;l=c[h+104>>2]|0;a[l+(i*20|0)>>0]=j;b[l+(i*20|0)+2>>1]=0;c[l+(i*20|0)+4>>2]=o;c[l+(i*20|0)+8>>2]=k;c[l+(i*20|0)+12>>2]=f;c[l+(i*20|0)+16>>2]=0;a[l+(i*20|0)+1>>0]=0}else Di(h,j,o,k,f)|0;i=c[d+116>>2]|0;a[((i|0)==0?d:i)+21>>0]=1;i=c[m>>2]|0;if((c[n>>2]|0)>(i|0)){c[m>>2]=i+1;f=c[h+104>>2]|0;a[f+(i*20|0)>>0]=69;b[f+(i*20|0)+2>>1]=0;c[f+(i*20|0)+4>>2]=1;c[f+(i*20|0)+8>>2]=2;c[f+(i*20|0)+12>>2]=0;c[f+(i*20|0)+16>>2]=0;a[f+(i*20|0)+1>>0]=0}else Di(h,69,1,2,0)|0;if(!(a[(c[h>>2]|0)+81>>0]|0)){n=c[18176+(g<<2)>>2]|0;f=c[h+104>>2]|0;g=(c[m>>2]|0)+-1|0;a[f+(g*20|0)+1>>0]=-1;c[f+(g*20|0)+16>>2]=n}if(!o)return;h=a[p>>0]|0;if((h&255)>=8)return;a[p>>0]=h+1<<24>>24;c[d+148+((h&255)<<2)>>2]=o;return}function qm(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;l=d+8|0;h=c[l>>2]|0;a:do if(!h){k=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))q=15;else{h=0;break a}else{do if((e[k+276>>1]|0)>=224){i=k+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];p=k+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}i=k+296|0;h=c[i>>2]|0;if(!h){h=k+292|0;break}else{c[i>>2]=c[h>>2];p=k+284|0;c[p>>2]=(c[p>>2]|0)+1;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;q=15}while(0);if((q|0)==15)h=_d(k,224,0)|0;if(!h)h=0;else{i=h+104|0;j=i+120|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[h>>2]=k;i=k+4|0;j=c[i>>2]|0;if(j|0)c[j+4>>2]=h;c[h+8>>2]=j;c[h+4>>2]=0;c[i>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=d;c[l>>2]=h;Di(h,61,0,1,0)|0}}while(0);if(!f)return;n=f+84|0;o=h+108|0;p=h+112|0;g=(g|0)==0;m=h+104|0;do{if(((c[n>>2]|0)==0?(c[(c[f+40>>2]|0)+4>>2]&4096|0)!=0:0)?(a[f+17>>0]|0)!=87:0){d=f+52|0;i=c[d>>2]|0;j=c[o>>2]|0;if((c[p>>2]|0)>(j|0)){c[o>>2]=j+1;l=c[m>>2]|0;a[l+(j*20|0)>>0]=73;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=0;c[l+(j*20|0)+8>>2]=i;c[l+(j*20|0)+12>>2]=0;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0}else Di(h,73,0,i,0)|0;i=f+56|0;j=c[i>>2]|0;k=c[o>>2]|0;if((c[p>>2]|0)>(k|0)){c[o>>2]=k+1;l=c[m>>2]|0;a[l+(k*20|0)>>0]=32;b[l+(k*20|0)+2>>1]=0;c[l+(k*20|0)+4>>2]=j;c[l+(k*20|0)+8>>2]=0;c[l+(k*20|0)+12>>2]=0;c[l+(k*20|0)+16>>2]=0;a[l+(k*20|0)+1>>0]=0}else Di(h,32,j,0,0)|0;k=c[i>>2]|0;i=c[d>>2]|0;j=c[o>>2]|0;if((c[p>>2]|0)>(j|0)){c[o>>2]=j+1;l=c[m>>2]|0;a[l+(j*20|0)>>0]=90;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=k;c[l+(j*20|0)+8>>2]=0;c[l+(j*20|0)+12>>2]=i;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0}else Di(h,90,k,0,i)|0;j=c[o>>2]|0;if(!(a[(c[h>>2]|0)+81>>0]|0))i=(c[m>>2]|0)+((((j|0)<2?-1:-2)+j|0)*20|0)|0;else i=59308;c[i+8>>2]=j}else q=37;do if((q|0)==37?(q=0,(c[f+60>>2]|0)==0):0){i=c[(c[f+68>>2]|0)+20>>2]|0;if(!i)d=0;else d=c[i>>2]|0;l=f+48|0;k=c[l>>2]|0;if(g){i=c[f+52>>2]|0;j=c[o>>2]|0;if((c[p>>2]|0)>(j|0)){c[o>>2]=j+1;l=c[m>>2]|0;a[l+(j*20|0)>>0]=-100;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=k;c[l+(j*20|0)+8>>2]=d;c[l+(j*20|0)+12>>2]=i;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0}else Di(h,156,k,d,i)|0;i=c[f+40>>2]|0;j=c[h>>2]|0;if(!(a[j+81>>0]|0)){d=c[m>>2]|0;l=(c[o>>2]|0)+-1|0;a[d+(l*20|0)+1>>0]=-8;c[d+(l*20|0)+16>>2]=i;break}if(!(c[i+4>>2]&16))break;if(j|0){if(c[j+480>>2]|0){Xd(j,i);break}l=i;if((c[j+304>>2]|0)>>>0<=l>>>0?(c[j+308>>2]|0)>>>0>l>>>0:0){l=j+300|0;c[i>>2]=c[l>>2];c[l>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{l=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}i=c[o>>2]|0;if((c[p>>2]|0)>(i|0)){c[o>>2]=i+1;j=c[m>>2]|0;a[j+(i*20|0)>>0]=-99;b[j+(i*20|0)+2>>1]=0;c[j+(i*20|0)+4>>2]=k;c[j+(i*20|0)+8>>2]=d;c[j+(i*20|0)+12>>2]=0;c[j+(i*20|0)+16>>2]=0;a[j+(i*20|0)+1>>0]=0}else Di(h,157,k,d,0)|0;i=c[f+40>>2]|0;j=c[h>>2]|0;do if(a[j+81>>0]|0){if(c[i+4>>2]&16|0){if(j|0){if(c[j+480>>2]|0){Xd(j,i);break}d=i;if((c[j+304>>2]|0)>>>0<=d>>>0?(c[j+308>>2]|0)>>>0>d>>>0:0){d=j+300|0;c[i>>2]=c[d>>2];c[d>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{d=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}}else{k=c[m>>2]|0;d=(c[o>>2]|0)+-1|0;a[k+(d*20|0)+1>>0]=-8;c[k+(d*20|0)+16>>2]=i}while(0);i=c[l>>2]|0;j=c[f+52>>2]|0;k=c[o>>2]|0;if((c[p>>2]|0)>(k|0)){c[o>>2]=k+1;d=c[m>>2]|0;a[d+(k*20|0)>>0]=78;b[d+(k*20|0)+2>>1]=0;c[d+(k*20|0)+4>>2]=i;c[d+(k*20|0)+8>>2]=j;c[d+(k*20|0)+12>>2]=0;c[d+(k*20|0)+16>>2]=0;a[d+(k*20|0)+1>>0]=0}else Di(h,78,i,j,0)|0;i=c[l>>2]|0;j=c[o>>2]|0;if((c[p>>2]|0)>(j|0)){c[o>>2]=j+1;l=c[m>>2]|0;a[l+(j*20|0)>>0]=73;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=0;c[l+(j*20|0)+8>>2]=i;c[l+(j*20|0)+12>>2]=0;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0;break}else{Di(h,73,0,i,0)|0;break}}while(0);f=c[f+32>>2]|0}while((f|0)!=0);return}function rm(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;J=d+4|0;K=c[J>>2]|0;M=c[d+8>>2]|0;l=K+84|0;L=c[d>>2]|0;do if(!(c[l>>2]|0)){if(!K){j=M+108|0;h=M+112|0;break}s=L+56|0;t=L+19|0;u=L+44|0;j=M+108|0;h=M+112|0;v=M+104|0;w=K+44|0;x=M+12|0;r=K;do{o=(c[r+40>>2]|0)+32|0;f=c[o>>2]|0;if((f|0)==43457|(f|0)==43467){m=c[r+56>>2]|0;p=c[s>>2]|0;k=p+-1|0;c[s>>2]=k;f=a[t>>0]|0;if(!(f<<24>>24)){n=(c[u>>2]|0)+1|0;c[u>>2]=n}else{n=f+-1<<24>>24;a[t>>0]=n;n=c[L+148+((n&255)<<2)>>2]|0}l=r+52|0;f=c[l>>2]|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=73;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=0;c[K+(g*20|0)+8>>2]=f;c[K+(g*20|0)+12>>2]=0;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0}else Di(M,73,0,f,0)|0;do if((c[o>>2]|0)!=43457){f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=70;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=1;c[K+(f*20|0)+8>>2]=n;c[K+(f*20|0)+12>>2]=0;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0;break}else{Di(M,70,1,n,0)|0;break}}else{f=c[w>>2]|0;g=(c[r+76>>2]|0)+1|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;K=c[v>>2]|0;a[K+(i*20|0)>>0]=90;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=f;c[K+(i*20|0)+8>>2]=g;c[K+(i*20|0)+12>>2]=n;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else Di(M,90,f,g,n)|0;pm(L,n,2)}while(0);f=r+60|0;g=c[f>>2]|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;K=c[v>>2]|0;a[K+(i*20|0)>>0]=100;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=n;c[K+(i*20|0)+8>>2]=g;c[K+(i*20|0)+12>>2]=n;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else Di(M,100,n,g,n)|0;f=(c[f>>2]|0)+1|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=54;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=f;c[K+(g*20|0)+8>>2]=k;c[K+(g*20|0)+12>>2]=n;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0}else Di(M,54,f,k,n)|0;f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=30;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=m;c[K+(f*20|0)+8>>2]=0;c[K+(f*20|0)+12>>2]=n;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0}else Di(M,30,m,0,n)|0;i=c[r+76>>2]|0;f=c[l>>2]|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=90;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=m;c[K+(g*20|0)+8>>2]=i;c[K+(g*20|0)+12>>2]=f;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0}else Di(M,90,m,i,f)|0;g=c[x>>2]|0;f=0-p|0;if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0)mk(g,M,f);else c[(c[g+64>>2]|0)+(f<<2)>>2]=c[j>>2];if(n|0?(y=a[t>>0]|0,(y&255)<8):0){a[t>>0]=y+1<<24>>24;c[L+148+((y&255)<<2)>>2]=n}}else if((f|0)==40587|(f|0)==40592){k=c[c[(c[r+68>>2]|0)+20>>2]>>2]|0;n=c[r+56>>2]|0;q=c[s>>2]|0;m=q+-1|0;c[s>>2]=m;f=a[t>>0]|0;if(!(f<<24>>24)){p=(c[u>>2]|0)+1|0;c[u>>2]=p}else{p=f+-1<<24>>24;a[t>>0]=p;p=c[L+148+((p&255)<<2)>>2]|0}l=c[w>>2]|0;do if((k|0)<3){f=c[r+52>>2]|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=73;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=0;c[K+(g*20|0)+8>>2]=f;c[K+(g*20|0)+12>>2]=0;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0;break}else{Di(M,73,0,f,0)|0;break}}else{f=(c[r+76>>2]|0)+2|0;g=c[r+52>>2]|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;K=c[v>>2]|0;a[K+(i*20|0)>>0]=90;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=l;c[K+(i*20|0)+8>>2]=f;c[K+(i*20|0)+12>>2]=g;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0;break}else{Di(M,90,l,f,g)|0;break}}while(0);f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=-128;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=l;c[K+(f*20|0)+8>>2]=p;c[K+(f*20|0)+12>>2]=0;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0}else Di(M,128,l,p,0)|0;f=(c[o>>2]|0)==40587;do if((k|0)<2){f=f?1:-1;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=83;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=p;c[K+(g*20|0)+8>>2]=f;c[K+(g*20|0)+12>>2]=0;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0;break}else{Di(M,83,p,f,0)|0;break}}else{k=f?100:101;f=a[t>>0]|0;if(!(f<<24>>24)){i=(c[u>>2]|0)+1|0;c[u>>2]=i}else{i=f+-1<<24>>24;a[t>>0]=i;i=c[L+148+((i&255)<<2)>>2]|0}f=(c[r+76>>2]|0)+1|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;K=c[v>>2]|0;a[K+(g*20|0)>>0]=90;b[K+(g*20|0)+2>>1]=0;c[K+(g*20|0)+4>>2]=l;c[K+(g*20|0)+8>>2]=f;c[K+(g*20|0)+12>>2]=i;c[K+(g*20|0)+16>>2]=0;a[K+(g*20|0)+1>>0]=0}else Di(M,90,l,f,i)|0;f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=k;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=i;c[K+(f*20|0)+8>>2]=p;c[K+(f*20|0)+12>>2]=p;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0}else Di(M,k,i,p,p)|0;if(i|0?(z=a[t>>0]|0,(z&255)<8):0){a[t>>0]=z+1<<24>>24;c[L+148+((z&255)<<2)>>2]=i}}while(0);f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=30;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=n;c[K+(f*20|0)+8>>2]=m;c[K+(f*20|0)+12>>2]=p;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0}else Di(M,30,n,m,p)|0;f=c[r+76>>2]|0;g=c[r+52>>2]|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;K=c[v>>2]|0;a[K+(i*20|0)>>0]=90;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=n;c[K+(i*20|0)+8>>2]=f;c[K+(i*20|0)+12>>2]=g;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else Di(M,90,n,f,g)|0;g=c[x>>2]|0;f=0-q|0;if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0)mk(g,M,f);else c[(c[g+64>>2]|0)+(f<<2)>>2]=c[j>>2];if(p|0?(A=a[t>>0]|0,(A&255)<8):0){a[t>>0]=A+1<<24>>24;c[L+148+((A&255)<<2)>>2]=p}}r=c[r+32>>2]|0}while((r|0)!=0)}else{C=c[K+56>>2]|0;n=K+12|0;f=c[n>>2]|0;if(!f)E=0;else E=c[f>>2]|0;D=L+56|0;A=c[D>>2]|0;y=A+-1|0;m=A+-2|0;c[D>>2]=m;D=L+19|0;f=a[D>>0]|0;do if(f<<24>>24){B=f+-1<<24>>24;a[D>>0]=B;g=c[L+148+((B&255)<<2)>>2]|0;if(!(B<<24>>24)){h=L+44|0;f=h;h=c[h>>2]|0;t=8;break}else{f=f+-2<<24>>24;a[D>>0]=f;B=c[L+148+((f&255)<<2)>>2]|0;break}}else{f=L+44|0;h=(c[f>>2]|0)+1|0;c[f>>2]=h;g=h;t=8}while(0);if((t|0)==8){B=h+1|0;c[f>>2]=B;f=0}z=(E|0)!=0;a:do if(z)if((E|0)!=1){j=L+32|0;h=c[j>>2]|0;k=L+28|0;f=c[k>>2]|0;if((f|0)<(E|0)){x=L+44|0;i=c[x>>2]|0;c[x>>2]=i+E;i=i+1|0}else{x=h+E|0;c[j>>2]=x;f=f-E|0;c[k>>2]=f;i=h;h=x}if((f|0)<(E|0)){w=L+44|0;x=c[w>>2]|0;c[w>>2]=x+E;w=i;x=x+1|0;break}else{c[j>>2]=h+E;c[k>>2]=f-E;w=i;x=h;break}}else{do if(f<<24>>24){x=f+-1<<24>>24;a[D>>0]=x;h=c[L+148+((x&255)<<2)>>2]|0;if(!(x<<24>>24)){i=L+44|0;f=i;i=c[i>>2]|0;break}else{x=f+-2<<24>>24;a[D>>0]=x;w=h;x=c[L+148+((x&255)<<2)>>2]|0;break a}}else{f=L+44|0;i=(c[f>>2]|0)+1|0;c[f>>2]=i;h=i}while(0);x=i+1|0;c[f>>2]=x;w=h;break}else{w=0;x=0}while(0);k=K+44|0;f=c[k>>2]|0;j=M+108|0;i=c[j>>2]|0;h=M+112|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;v=M+104|0;u=c[v>>2]|0;a[u+(i*20|0)>>0]=-128;b[u+(i*20|0)+2>>1]=0;c[u+(i*20|0)+4>>2]=f;c[u+(i*20|0)+8>>2]=g;c[u+(i*20|0)+12>>2]=0;c[u+(i*20|0)+16>>2]=0;a[u+(i*20|0)+1>>0]=0}else{Di(M,128,f,g,0)|0;v=M+104|0}vm(d,c[k>>2]|0,w);f=K;do{i=c[f+48>>2]|0;k=c[j>>2]|0;if((c[h>>2]|0)>(k|0)){c[j>>2]=k+1;u=c[v>>2]|0;a[u+(k*20|0)>>0]=73;b[u+(k*20|0)+2>>1]=0;c[u+(k*20|0)+4>>2]=0;c[u+(k*20|0)+8>>2]=i;c[u+(k*20|0)+12>>2]=0;c[u+(k*20|0)+16>>2]=0;a[u+(k*20|0)+1>>0]=0}else Di(M,73,0,i,0)|0;f=c[f+32>>2]|0}while((f|0)!=0);f=c[l>>2]|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;u=c[v>>2]|0;a[u+(i*20|0)>>0]=24;b[u+(i*20|0)+2>>1]=0;c[u+(i*20|0)+4>>2]=C;c[u+(i*20|0)+8>>2]=m;c[u+(i*20|0)+12>>2]=f;c[u+(i*20|0)+16>>2]=0;a[u+(i*20|0)+1>>0]=0}else Di(M,24,C,m,f)|0;u=c[j>>2]|0;if((c[h>>2]|0)>(u|0)){c[j>>2]=u+1;s=c[v>>2]|0;a[s+(u*20|0)>>0]=-128;b[s+(u*20|0)+2>>1]=0;c[s+(u*20|0)+4>>2]=C;c[s+(u*20|0)+8>>2]=B;c[s+(u*20|0)+12>>2]=0;c[s+(u*20|0)+16>>2]=0;a[s+(u*20|0)+1>>0]=0}else Di(M,128,C,B,0)|0;f=c[K+88>>2]|0;i=c[j>>2]|0;if((c[h>>2]|0)>(i|0)){c[j>>2]=i+1;s=c[v>>2]|0;a[s+(i*20|0)>>0]=54;b[s+(i*20|0)+2>>1]=0;c[s+(i*20|0)+4>>2]=f;c[s+(i*20|0)+8>>2]=m;c[s+(i*20|0)+12>>2]=B;c[s+(i*20|0)+16>>2]=0;a[s+(i*20|0)+1>>0]=0}else Di(M,54,f,m,B)|0;s=K+20|0;f=a[s>>0]|0;b:do switch(f<<24>>24){case 82:{f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;t=c[v>>2]|0;a[t+(f*20|0)>>0]=53;b[t+(f*20|0)+2>>1]=0;c[t+(f*20|0)+4>>2]=g;c[t+(f*20|0)+8>>2]=y;c[t+(f*20|0)+12>>2]=B;c[t+(f*20|0)+16>>2]=0;a[t+(f*20|0)+1>>0]=0;break b}else{Di(M,53,g,y,B)|0;break b}}case 66:break;default:{p=c[n>>2]|0;if(!p){k=0;l=0}else{q=c[L>>2]|0;r=c[p>>2]|0;m=r+1|0;n=m*5|0;k=n+20|0;l=q+272|0;c:do if(c[l>>2]|0)if(!(a[q+81>>0]|0))t=56;else{f=0;i=0}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){f=q+300|0;i=c[f>>2]|0;if(i|0){c[f>>2]=c[i>>2];o=q+284|0;c[o>>2]=(c[o>>2]|0)+1;o=i;t=57;break c}f=q+296|0;i=c[f>>2]|0;if(!i){f=q+292|0;break}else{c[f>>2]=c[i>>2];o=q+284|0;c[o>>2]=(c[o>>2]|0)+1;o=i;t=57;break c}}else f=q+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;t=56}while(0);if((t|0)==56){o=_d(q,k,0)|0;t=57}d:do if((t|0)==57){if(o|0){l=o+16|0;c[l>>2]=o+20+(m<<2);b[o+6>>1]=r;b[o+8>>1]=m;a[o+4>>0]=a[q+78>>0]|0;c[o+12>>2]=q;c[o>>2]=1;gw(o+24|0,0,n+-4|0)|0;if((r|0)<=0){f=o;i=o;break}i=p+4|0;k=0;while(1){f=Yi(L,c[i>>2]|0)|0;if(!f)f=c[(c[L>>2]|0)+8>>2]|0;c[o+20+(k<<2)>>2]=f;a[(c[l>>2]|0)+k>>0]=a[i+12>>0]|0;k=k+1|0;if((k|0)==(r|0)){f=o;i=o;break d}else i=i+20|0}}f=q+81|0;if((a[f>>0]|0)==0?(a[q+82>>0]|0)==0:0){a[f>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;c[l>>2]=(c[l>>2]|0)+1;f=c[q+236>>2]|0;if(f){c[f+12>>2]=7;f=o;i=0}else{f=o;i=0}}else{f=o;i=0}}while(0);k=f;f=a[s>>0]|0;l=i}do if(f<<24>>24==91){f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;m=c[v>>2]|0;a[m+(f*20|0)>>0]=53;b[m+(f*20|0)+2>>1]=0;c[m+(f*20|0)+4>>2]=g;c[m+(f*20|0)+8>>2]=0;c[m+(f*20|0)+12>>2]=B;c[m+(f*20|0)+16>>2]=0;a[m+(f*20|0)+1>>0]=0;m=f;break}else{m=Di(M,53,g,0,B)|0;break}}else m=0;while(0);do if(!k){f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;t=c[v>>2]|0;a[t+(f*20|0)>>0]=11;b[t+(f*20|0)+2>>1]=0;c[t+(f*20|0)+4>>2]=0;c[t+(f*20|0)+8>>2]=y;c[t+(f*20|0)+12>>2]=0;c[t+(f*20|0)+16>>2]=0;a[t+(f*20|0)+1>>0]=0;break}else{Di(M,11,0,y,0)|0;break}}else{vm(d,C,x);f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;t=c[v>>2]|0;a[t+(f*20|0)>>0]=87;b[t+(f*20|0)+2>>1]=0;c[t+(f*20|0)+4>>2]=x;c[t+(f*20|0)+8>>2]=w;c[t+(f*20|0)+12>>2]=E;c[t+(f*20|0)+16>>2]=0;a[t+(f*20|0)+1>>0]=0}else Di(M,87,x,w,E)|0;f=c[M>>2]|0;e:do if(a[f+81>>0]|0){if(!((l|0)==0|(c[f+480>>2]|0)!=0)?(t=(c[l>>2]|0)+-1|0,c[l>>2]=t,(t|0)==0):0){f=c[l+12>>2]|0;do if(f|0){if(c[f+480>>2]|0){Xd(f,l);break e}i=l;if((c[f+304>>2]|0)>>>0>i>>>0)break;if((c[f+308>>2]|0)>>>0<=i>>>0)break;t=f+300|0;c[l>>2]=c[t>>2];c[t>>2]=l;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{t=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}}else{s=c[v>>2]|0;t=(c[j>>2]|0)+-1|0;a[s+(t*20|0)+1>>0]=-9;c[s+(t*20|0)+16>>2]=l}while(0);f=c[j>>2]|0;i=f+1|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=i;t=c[v>>2]|0;a[t+(f*20|0)>>0]=16;b[t+(f*20|0)+2>>1]=0;c[t+(f*20|0)+4>>2]=i;c[t+(f*20|0)+8>>2]=y;c[t+(f*20|0)+12>>2]=i;c[t+(f*20|0)+16>>2]=0;a[t+(f*20|0)+1>>0]=0;break}else{Di(M,16,i,y,i)|0;break}}while(0);if(m|0){i=c[j>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))f=(c[v>>2]|0)+(((m|0)<0?i+-1|0:m)*20|0)|0;else f=59308;c[f+8>>2]=i}}}while(0);wm(L,K,C,0,c[d+20>>2]|0);i=c[M+12>>2]|0;f=0-A|0;if(((c[i+56>>2]|0)+(c[i+60>>2]|0)|0)<0)mk(i,M,f);else c[(c[i+64>>2]|0)+(f<<2)>>2]=c[j>>2];f=c[j>>2]|0;if((c[h>>2]|0)>(f|0)){c[j>>2]=f+1;K=c[v>>2]|0;a[K+(f*20|0)>>0]=5;b[K+(f*20|0)+2>>1]=0;c[K+(f*20|0)+4>>2]=C;c[K+(f*20|0)+8>>2]=u;c[K+(f*20|0)+12>>2]=0;c[K+(f*20|0)+16>>2]=0;a[K+(f*20|0)+1>>0]=0}else Di(M,5,C,u,0)|0;i=c[j>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0)){f=c[v>>2]|0;c[f+((((u|0)<1?i:u)+-1|0)*20|0)+8>>2]=i;f=f+(((u|0)<-1?i+-1|0:u+1|0)*20|0)|0}else{c[14829]=i;f=59308}c[f+8>>2]=i;if(B|0?(F=a[D>>0]|0,(F&255)<8):0){a[D>>0]=F+1<<24>>24;c[L+148+((F&255)<<2)>>2]=B}if(g|0?(G=a[D>>0]|0,(G&255)<8):0){a[D>>0]=G+1<<24>>24;c[L+148+((G&255)<<2)>>2]=g}do if(z){if((E|0)!=1){f=L+28|0;if((c[f>>2]|0)>=(E|0))break;c[f>>2]=E;c[L+32>>2]=x;break}if(x|0?(H=a[D>>0]|0,(H&255)<8):0){a[D>>0]=H+1<<24>>24;c[L+148+((H&255)<<2)>>2]=x}if(w|0?(I=a[D>>0]|0,(I&255)<8):0){a[D>>0]=I+1<<24>>24;c[L+148+((I&255)<<2)>>2]=w}}while(0);qm(c[d>>2]|0,c[J>>2]|0,1)}while(0);i=c[d+12>>2]|0;f=c[d+16>>2]|0;g=c[j>>2]|0;if((c[h>>2]|0)>(g|0)){c[j>>2]=g+1;M=c[M+104>>2]|0;a[M+(g*20|0)>>0]=12;b[M+(g*20|0)+2>>1]=0;c[M+(g*20|0)+4>>2]=i;c[M+(g*20|0)+8>>2]=f;c[M+(g*20|0)+12>>2]=0;c[M+(g*20|0)+16>>2]=0;a[M+(g*20|0)+1>>0]=0;return}else{Di(M,12,i,f,0)|0;return}}function sm(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=d+8|0;j=c[n>>2]|0;a:do if(!j){m=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))r=15;else{t=0;break a}else{do if((e[m+276>>1]|0)>=224){j=m+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];t=m+284|0;c[t>>2]=(c[t>>2]|0)+1;break b}j=m+296|0;k=c[j>>2]|0;if(!k){j=m+292|0;break}else{c[j>>2]=c[k>>2];t=m+284|0;c[t>>2]=(c[t>>2]|0)+1;break b}}else j=m+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;r=15}while(0);if((r|0)==15)k=_d(m,224,0)|0;if(!k)t=0;else{j=k+104|0;l=j+120|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));c[k>>2]=m;j=m+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=d;c[n>>2]=k;Di(k,61,0,1,0)|0;t=k}}else t=j;while(0);if(!f){j=t+108|0;k=c[j>>2]|0;if((c[t+112>>2]|0)>(k|0)){c[j>>2]=k+1;h=c[t+104>>2]|0;a[h+(k*20|0)>>0]=11;b[h+(k*20|0)+2>>1]=0;c[h+(k*20|0)+4>>2]=0;c[h+(k*20|0)+8>>2]=i;c[h+(k*20|0)+12>>2]=0;c[h+(k*20|0)+16>>2]=0;a[h+(k*20|0)+1>>0]=0;return}else{Di(t,11,0,i,0)|0;return}}s=c[f>>2]|0;o=c[d>>2]|0;m=s+1|0;n=m*5|0;l=n+20|0;p=o+272|0;c:do if(c[p>>2]|0)if(!(a[o+81>>0]|0))r=31;else{l=0;k=1}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){j=o+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];q=o+284|0;c[q>>2]=(c[q>>2]|0)+1;q=k;r=32;break c}j=o+296|0;k=c[j>>2]|0;if(!k){j=o+292|0;break}else{c[j>>2]=c[k>>2];q=o+284|0;c[q>>2]=(c[q>>2]|0)+1;q=k;r=32;break c}}else j=o+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;r=31}while(0);if((r|0)==31){q=_d(o,l,0)|0;r=32}if((r|0)==32){if(!q){j=o+81|0;if((a[j>>0]|0)==0?(a[o+82>>0]|0)==0:0){a[j>>0]=1;if((c[o+180>>2]|0)>0)c[o+264>>2]=1;c[p>>2]=(c[p>>2]|0)+1;j=c[o+236>>2]|0;if(j){c[j+12>>2]=7;l=0;k=1}else{l=0;k=1}}else{l=0;k=1}}else{c[q+16>>2]=q+20+(m<<2);b[q+6>>1]=s;b[q+8>>1]=m;a[q+4>>0]=a[o+78>>0]|0;c[q+12>>2]=o;c[q>>2]=1;gw(q+24|0,0,n+-4|0)|0;l=q;k=0}if((s|0)>0&(q|0)!=0){o=q+16|0;m=f+4|0;n=0;while(1){j=Yi(d,c[m>>2]|0)|0;if(!j)j=c[(c[d>>2]|0)+8>>2]|0;c[q+20+(n<<2)>>2]=j;a[(c[o>>2]|0)+n>>0]=a[m+12>>0]|0;n=n+1|0;if((n|0)==(s|0))break;else m=m+20|0}}}m=t+108|0;j=c[m>>2]|0;n=t+112|0;if((c[n>>2]|0)>(j|0)){c[m>>2]=j+1;d=c[t+104>>2]|0;a[d+(j*20|0)>>0]=87;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=h;c[d+(j*20|0)+8>>2]=g;c[d+(j*20|0)+12>>2]=s;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0}else Di(t,87,h,g,s)|0;j=c[t>>2]|0;do if(a[j+81>>0]|0){if(!(k|(c[j+480>>2]|0)!=0)?(d=(c[l>>2]|0)+-1|0,c[l>>2]=d,(d|0)==0):0){j=c[l+12>>2]|0;if(j|0){if(c[j+480>>2]|0){Xd(j,l);break}d=l;if((c[j+304>>2]|0)>>>0<=d>>>0?(c[j+308>>2]|0)>>>0>d>>>0:0){d=j+300|0;c[l>>2]=c[d>>2];c[d>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{d=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}}else{f=c[t+104>>2]|0;d=(c[m>>2]|0)+-1|0;a[f+(d*20|0)+1>>0]=-9;c[f+(d*20|0)+16>>2]=l}while(0);j=c[m>>2]|0;k=j+1|0;if((c[n>>2]|0)>(j|0)){c[m>>2]=k;d=c[t+104>>2]|0;a[d+(j*20|0)>>0]=16;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=k;c[d+(j*20|0)+8>>2]=i;c[d+(j*20|0)+12>>2]=k;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0}else Di(t,16,k,i,k)|0;j=s+-1|0;k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;i=c[t+104>>2]|0;a[i+(k*20|0)>>0]=78;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=g;c[i+(k*20|0)+8>>2]=h;c[i+(k*20|0)+12>>2]=j;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0;return}else{Di(t,78,g,h,j)|0;return}}function tm(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=c[d>>2]|0;l=d+4|0;u=c[l>>2]|0;A=c[d+8>>2]|0;h=a[u+16>>0]|0;s=h<<24>>24!=76;m=y+56|0;z=c[m>>2]|0;i=z+-1|0;c[m>>2]=i;m=(e|0)==2;if(m?(a[u+17>>0]|0)==87:0){A=0;return A|0}do if((f|0)>0){k=A+108|0;j=c[k>>2]|0;if(h<<24>>24!=86)if((c[A+112>>2]|0)>(j|0)){c[k>>2]=j+1;n=c[A+104>>2]|0;a[n+(j*20|0)>>0]=47;b[n+(j*20|0)+2>>1]=0;c[n+(j*20|0)+4>>2]=f;c[n+(j*20|0)+8>>2]=0;c[n+(j*20|0)+12>>2]=1;c[n+(j*20|0)+16>>2]=0;a[n+(j*20|0)+1>>0]=0;n=0;f=j;r=14;break}else{n=0;f=Di(A,47,f,0,1)|0;r=14;break}if(!m){um(d,54,c[d+44>>2]|0,f,c[d+36>>2]|0,i);n=j;f=0;r=14;break}if((a[u+17>>0]|0)==83)um(d,55,c[d+36>>2]|0,f,c[d+28>>2]|0,i);else um(d,57,c[d+28>>2]|0,f,c[d+36>>2]|0,i);l=0;m=k;k=c[k>>2]|0;r=19}else{n=0;f=0;r=14}while(0);do if((r|0)==14){if((e|0)==1){if(!(c[u+84>>2]|0))qm(c[d>>2]|0,c[l>>2]|0,0);j=A+108|0;p=c[j>>2]|0;t=c[d+36>>2]|0;q=c[d+40>>2]|0;rm(d);v=f;break}o=A+108|0;k=c[o>>2]|0;if(!m){h=c[d+44>>2]|0;j=c[d+48>>2]|0;if(!(c[u+84>>2]|0)){wm(y,u,h,0,c[d+20>>2]|0);t=h;q=j;v=f;p=k;j=o;break}i=c[u+88>>2]|0;if((c[A+112>>2]|0)>(k|0)){c[o>>2]=k+1;t=c[A+104>>2]|0;a[t+(k*20|0)>>0]=83;b[t+(k*20|0)+2>>1]=0;c[t+(k*20|0)+4>>2]=i;c[t+(k*20|0)+8>>2]=1;c[t+(k*20|0)+12>>2]=0;c[t+(k*20|0)+16>>2]=0;a[t+(k*20|0)+1>>0]=0;t=h;q=j;v=f;p=k;j=o;break}else{Di(A,83,i,1,0)|0;t=h;q=j;v=f;p=k;j=o;break}}else{j=n;l=f;m=o;r=19}}while(0);do if((r|0)==19){h=c[d+28>>2]|0;f=c[d+32>>2]|0;i=c[u+84>>2]|0;if(!i){wm(y,u,h,1,c[d+20>>2]|0);t=h;n=j;q=f;v=l;p=k;j=m;break}if((c[A+112>>2]|0)>(k|0)){c[A+108>>2]=k+1;t=c[A+104>>2]|0;a[t+(k*20|0)>>0]=83;b[t+(k*20|0)+2>>1]=0;c[t+(k*20|0)+4>>2]=i;c[t+(k*20|0)+8>>2]=1;c[t+(k*20|0)+12>>2]=0;c[t+(k*20|0)+16>>2]=0;a[t+(k*20|0)+1>>0]=0;t=h;n=j;q=f;v=l;p=k;j=m;break}else{Di(A,83,i,1,0)|0;t=h;n=j;q=f;v=l;p=k;j=m;break}}while(0);if((c[d+24>>2]|0)==(e|0)){h=A+108|0;i=c[h>>2]|0;if((c[A+112>>2]|0)>(i|0)){c[h>>2]=i+1;e=c[A+104>>2]|0;a[e+(i*20|0)>>0]=123;b[e+(i*20|0)+2>>1]=0;c[e+(i*20|0)+4>>2]=t;c[e+(i*20|0)+8>>2]=0;c[e+(i*20|0)+12>>2]=0;c[e+(i*20|0)+16>>2]=0;a[e+(i*20|0)+1>>0]=0}else Di(A,123,t,0,0)|0;h=c[h>>2]|0;if((h|0)>0)b[(c[A+104>>2]|0)+((h+-1|0)*20|0)+2>>1]=2}h=c[j>>2]|0;do if(!g){h=(s?2:1)+h|0;f=A+108|0;i=c[f>>2]|0;k=A+112|0;if((c[k>>2]|0)>(i|0)){c[f>>2]=i+1;g=c[A+104>>2]|0;a[g+(i*20|0)>>0]=5;b[g+(i*20|0)+2>>1]=0;c[g+(i*20|0)+4>>2]=t;c[g+(i*20|0)+8>>2]=h;c[g+(i*20|0)+12>>2]=0;c[g+(i*20|0)+16>>2]=0;a[g+(i*20|0)+1>>0]=0}else Di(A,5,t,h,0)|0;if(s){j=c[f>>2]|0;if((c[k>>2]|0)>(j|0)){c[f>>2]=j+1;i=c[A+104>>2]|0;a[i+(j*20|0)>>0]=11;i=i+(j*20|0)+1|0;f=i+19|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(f|0));f=0;r=50;break}else{f=0;j=Di(A,11,0,0,0)|0;r=50;break}}else{f=0;j=0}}else{h=h+2|0;j=A+108|0;i=c[j>>2]|0;f=A+112|0;if((c[f>>2]|0)>(i|0)){c[j>>2]=i+1;g=c[A+104>>2]|0;a[g+(i*20|0)>>0]=5;b[g+(i*20|0)+2>>1]=0;c[g+(i*20|0)+4>>2]=t;c[g+(i*20|0)+8>>2]=h;c[g+(i*20|0)+12>>2]=0;c[g+(i*20|0)+16>>2]=0;a[g+(i*20|0)+1>>0]=0}else Di(A,5,t,h,0)|0;h=c[j>>2]|0;if((c[f>>2]|0)>(h|0)){c[j>>2]=h+1;i=c[A+104>>2]|0;a[i+(h*20|0)>>0]=11;i=i+(h*20|0)+1|0;f=i+19|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(f|0))}else h=Di(A,11,0,0,0)|0;if(s){f=h;j=0;r=50}else{f=h;j=0}}while(0);do if((r|0)==50){o=u+12|0;h=c[o>>2]|0;a:do if(!h){k=0;i=0}else{i=c[h>>2]|0;switch(i|0){case 0:{k=i;break a}case 1:{h=y+19|0;i=a[h>>0]|0;if(!(i<<24>>24)){i=y+44|0;k=(c[i>>2]|0)+1|0;c[i>>2]=k;i=1;break a}else{k=i+-1<<24>>24;a[h>>0]=k;k=c[y+148+((k&255)<<2)>>2]|0;i=1;break a}}default:{h=y+32|0;k=c[h>>2]|0;l=y+28|0;m=c[l>>2]|0;if((m|0)<(i|0)){u=y+44|0;k=c[u>>2]|0;c[u>>2]=k+i;k=k+1|0;break a}else{c[h>>2]=k+i;c[l>>2]=m-i;break a}}}}while(0);vm(d,t,k);sm(y,c[o>>2]|0,k,q,p);if((i|0)!=1){h=y+28|0;if((c[h>>2]|0)>=(i|0))break;c[h>>2]=i;c[y+32>>2]=k;break}if((k|0)!=0?(w=y+19|0,x=a[w>>0]|0,(x&255)<8):0){a[w>>0]=x+1<<24>>24;c[y+148+((x&255)<<2)>>2]=k}}while(0);do if(n|0){h=A+108|0;i=c[h>>2]|0;if((c[A+112>>2]|0)>(i|0)){c[h>>2]=i+1;y=c[A+104>>2]|0;a[y+(i*20|0)>>0]=11;b[y+(i*20|0)+2>>1]=0;c[y+(i*20|0)+4>>2]=0;c[y+(i*20|0)+8>>2]=n;c[y+(i*20|0)+12>>2]=0;c[y+(i*20|0)+16>>2]=0;a[y+(i*20|0)+1>>0]=0;break}else{Di(A,11,0,n,0)|0;break}}while(0);i=c[A+12>>2]|0;h=0-z|0;if(((c[i+56>>2]|0)+(c[i+60>>2]|0)|0)<0)mk(i,A,h);else c[(c[i+64>>2]|0)+(h<<2)>>2]=c[A+108>>2];if(j|0){i=c[A+108>>2]|0;if(!(a[(c[A>>2]|0)+81>>0]|0))h=(c[A+104>>2]|0)+(((j|0)<0?i+-1|0:j)*20|0)|0;else h=59308;c[h+8>>2]=i}if(!v){A=f;return A|0}i=c[A+108>>2]|0;if(!(a[(c[A>>2]|0)+81>>0]|0))h=(c[A+104>>2]|0)+(((v|0)<0?i+-1|0:v)*20|0)|0;else h=59308;c[h+8>>2]=i;A=f;return A|0}function um(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=c[d>>2]|0;o=w+8|0;k=c[o>>2]|0;a:do if(!k){n=c[w>>2]|0;if((c[w+116>>2]|0)==0?(b[n+76>>1]&8)==0:0)a[w+23>>0]=1;b:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))p=15;else{t=0;break a}else{do if((e[n+276>>1]|0)>=224){k=n+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];u=n+284|0;c[u>>2]=(c[u>>2]|0)+1;break b}k=n+296|0;l=c[k>>2]|0;if(!l){k=n+292|0;break}else{c[k>>2]=c[l>>2];u=n+284|0;c[u>>2]=(c[u>>2]|0)+1;break b}}else k=n+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;p=15}while(0);if((p|0)==15)l=_d(n,224,0)|0;if(!l)t=0;else{k=l+104|0;m=k+120|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(m|0));c[l>>2]=n;k=n+4|0;m=c[k>>2]|0;if(m|0)c[m+4>>2]=l;c[l+8>>2]=m;c[l+4>>2]=0;c[k>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=w;c[o>>2]=l;Di(l,61,0,1,0)|0;t=l}}else t=k;while(0);u=w+19|0;l=a[u>>0]|0;if(l<<24>>24){s=l+-1<<24>>24;a[u>>0]=s;k=c[w+148+((s&255)<<2)>>2]|0;if(!(s<<24>>24))p=23;else{s=l+-2<<24>>24;a[u>>0]=s;q=w+44|0;r=k;s=c[w+148+((s&255)<<2)>>2]|0;l=q;k=c[q>>2]|0}}else{p=w+44|0;k=(c[p>>2]|0)+1|0;c[p>>2]=k;p=23}if((p|0)==23){l=w+44|0;q=(c[l>>2]|0)+1|0;c[l>>2]=q;r=k;s=q;k=q}p=k+1|0;c[l>>2]=p;n=(a[(c[(c[d+4>>2]|0)+12>>2]|0)+16>>0]|0)==0;q=n?100:101;f=n?f:(f|0)==57?55:(f|0)==54?56:57;vm(d,g,r);vm(d,i,s);n=t+108|0;k=c[n>>2]|0;o=t+112|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;i=c[t+104>>2]|0;a[i+(k*20|0)>>0]=110;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=0;c[i+(k*20|0)+8>>2]=p;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else k=Di(t,110,0,p,0)|0;do if(!(a[(c[t>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[n>>2]|0)+-1|0;l=c[t+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=59952;a[m>>0]=-1;break}else{Ei(t,l+(k*20|0)|0,59952,-1);break}}while(0);k=c[n>>2]|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;i=c[t+104>>2]|0;a[i+(k*20|0)>>0]=57;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=p;c[i+(k*20|0)+8>>2]=0;c[i+(k*20|0)+12>>2]=r;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else k=Di(t,57,p,0,r)|0;l=c[n>>2]|0;if((c[o>>2]|0)>(l|0)){c[n>>2]=l+1;i=c[t+104>>2]|0;a[i+(l*20|0)>>0]=q;b[i+(l*20|0)+2>>1]=0;c[i+(l*20|0)+4>>2]=h;c[i+(l*20|0)+8>>2]=r;c[i+(l*20|0)+12>>2]=r;c[i+(l*20|0)+16>>2]=0;a[i+(l*20|0)+1>>0]=0}else Di(t,q,h,r,r)|0;l=c[n>>2]|0;if(!(a[(c[t>>2]|0)+81>>0]|0))k=(c[t+104>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else k=59308;c[k+8>>2]=l;if((c[o>>2]|0)>(l|0)){c[n>>2]=l+1;h=c[t+104>>2]|0;a[h+(l*20|0)>>0]=f;b[h+(l*20|0)+2>>1]=0;c[h+(l*20|0)+4>>2]=s;c[h+(l*20|0)+8>>2]=j;c[h+(l*20|0)+12>>2]=r;c[h+(l*20|0)+16>>2]=0;a[h+(l*20|0)+1>>0]=0}else Di(t,f,s,j,r)|0;k=c[n>>2]|0;if((k|0)>0)b[(c[t+104>>2]|0)+((k+-1|0)*20|0)+2>>1]=128;if(r|0?(v=a[u>>0]|0,(v&255)<8):0){a[u>>0]=v+1<<24>>24;c[w+148+((v&255)<<2)>>2]=r}if(!s)return;k=a[u>>0]|0;if((k&255)>=8)return;a[u>>0]=k+1<<24>>24;c[w+148+((k&255)<<2)>>2]=s;return}function vm(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=c[d+4>>2]|0;o=c[g+12>>2]|0;if(!o)return;n=Ej(c[d>>2]|0)|0;d=c[g+8>>2]|0;if(!d)d=0;else d=c[d>>2]|0;g=d+(c[g+72>>2]|0)|0;if((c[o>>2]|0)<=0)return;h=n+108|0;i=n+112|0;j=n+104|0;d=0;do{k=g+d|0;l=d+f|0;m=c[h>>2]|0;if((c[i>>2]|0)>(m|0)){c[h>>2]=m+1;p=c[j>>2]|0;a[p+(m*20|0)>>0]=90;b[p+(m*20|0)+2>>1]=0;c[p+(m*20|0)+4>>2]=e;c[p+(m*20|0)+8>>2]=k;c[p+(m*20|0)+12>>2]=l;c[p+(m*20|0)+16>>2]=0;a[p+(m*20|0)+1>>0]=0}else Di(n,90,e,k,l)|0;d=d+1|0}while((d|0)<(c[o>>2]|0));return}function wm(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;m=d+8|0;j=c[m>>2]|0;a:do if(!j){l=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[l+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))F=15;else{j=0;break a}else{do if((e[l+276>>1]|0)>=224){k=l+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];E=l+284|0;c[E>>2]=(c[E>>2]|0)+1;break b}k=l+296|0;j=c[k>>2]|0;if(!j){j=l+292|0;break}else{c[k>>2]=c[j>>2];E=l+284|0;c[E>>2]=(c[E>>2]|0)+1;break b}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;F=15}while(0);if((F|0)==15)j=_d(l,224,0)|0;if(!j)j=0;else{n=j+104|0;o=n+120|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(o|0));c[j>>2]=l;k=l+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=j;c[j+8>>2]=l;c[j+4>>2]=0;c[k>>2]=j;c[j+20>>2]=381479589;c[j+12>>2]=d;c[m>>2]=j;Di(j,61,0,1,0)|0}}while(0);if(!f)return;t=f+84|0;u=j+108|0;v=j+112|0;w=f+44|0;x=j+104|0;y=1-h|0;z=(h|0)==0;A=d+19|0;B=z?154:153;C=d+44|0;D=B&255;E=i+1|0;s=f;do{r=c[s+40>>2]|0;q=s+68|0;k=c[(c[q>>2]|0)+20>>2]|0;if(k){o=c[k>>2]|0;if((o|0)>0){f=r+32|0;p=s+76|0;n=0;do{do if((n|0)==1?(c[f>>2]|0)==43457:0){k=c[w>>2]|0;l=(c[p>>2]|0)+1|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=90;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=k;c[H+(m*20|0)+8>>2]=l;c[H+(m*20|0)+12>>2]=E;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0;break}else{Di(j,90,k,l,E)|0;break}}else F=27;while(0);do if((F|0)==27){F=0;k=(c[p>>2]|0)+n|0;l=n+i|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=90;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=g;c[H+(m*20|0)+8>>2]=k;c[H+(m*20|0)+12>>2]=l;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0;break}else{Di(j,90,g,k,l)|0;break}}while(0);n=n+1|0}while((n|0)!=(o|0));p=o}else p=o}else p=0;if(((c[t>>2]|0)==0?(c[r+4>>2]&4096|0)!=0:0)?(a[s+17>>0]|0)!=87:0){k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;H=c[x>>2]|0;a[H+(k*20|0)>>0]=50;b[H+(k*20|0)+2>>1]=0;c[H+(k*20|0)+4>>2]=i;c[H+(k*20|0)+8>>2]=0;c[H+(k*20|0)+12>>2]=0;c[H+(k*20|0)+16>>2]=0;a[H+(k*20|0)+1>>0]=0}else k=Di(j,50,i,0,0)|0;do if(z){o=s+60|0;l=(c[o>>2]|0)+1|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=83;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=l;c[H+(m*20|0)+8>>2]=1;c[H+(m*20|0)+12>>2]=0;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0}else Di(j,83,l,1,0)|0;l=c[o>>2]|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=79;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=i;c[H+(m*20|0)+8>>2]=l;c[H+(m*20|0)+12>>2]=0;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0}else Di(j,79,i,l,0)|0;l=c[o>>2]|0;m=l+2|0;n=c[u>>2]|0;if((c[v>>2]|0)>(n|0)){c[u>>2]=n+1;H=c[x>>2]|0;a[H+(n*20|0)>>0]=92;b[H+(n*20|0)+2>>1]=0;c[H+(n*20|0)+4>>2]=l;c[H+(n*20|0)+8>>2]=2;c[H+(n*20|0)+12>>2]=m;c[H+(n*20|0)+16>>2]=0;a[H+(n*20|0)+1>>0]=0}else Di(j,92,l,2,m)|0;n=c[s+56>>2]|0;l=(c[o>>2]|0)+2|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=-124;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=n;c[H+(m*20|0)+8>>2]=l;c[H+(m*20|0)+12>>2]=0;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0;break}else{Di(j,132,n,l,0)|0;break}}else{n=s+56|0;m=c[n>>2]|0;l=c[u>>2]|0;if((c[v>>2]|0)>(l|0)){c[u>>2]=l+1;H=c[x>>2]|0;a[H+(l*20|0)>>0]=24;b[H+(l*20|0)+2>>1]=0;c[H+(l*20|0)+4>>2]=m;c[H+(l*20|0)+8>>2]=0;c[H+(l*20|0)+12>>2]=i;c[H+(l*20|0)+16>>2]=0;a[H+(l*20|0)+1>>0]=0}else l=Di(j,24,m,0,i)|0;if(!(a[(c[j>>2]|0)+81>>0]|0)){H=c[x>>2]|0;a[H+(l*20|0)+1>>0]=-3;c[H+(l*20|0)+16>>2]=1}l=c[n>>2]|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;H=c[x>>2]|0;a[H+(m*20|0)>>0]=123;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=l;c[H+(m*20|0)+8>>2]=0;c[H+(m*20|0)+12>>2]=0;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0}else Di(j,123,l,0,0)|0;m=c[u>>2]|0;if(!(a[(c[j>>2]|0)+81>>0]|0))l=(c[x>>2]|0)+((((m|0)<2?-1:-2)+m|0)*20|0)|0;else l=59308;c[l+8>>2]=m}while(0);l=c[u>>2]|0;if(!(a[(c[j>>2]|0)+81>>0]|0))k=(c[x>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else k=59308;c[k+8>>2]=l}else F=67;do if((F|0)==67){F=0;k=c[s+60>>2]|0;if(k|0){k=y+k|0;l=c[u>>2]|0;if((c[v>>2]|0)>(l|0)){c[u>>2]=l+1;H=c[x>>2]|0;a[H+(l*20|0)>>0]=83;b[H+(l*20|0)+2>>1]=0;c[H+(l*20|0)+4>>2]=k;c[H+(l*20|0)+8>>2]=1;c[H+(l*20|0)+12>>2]=0;c[H+(l*20|0)+16>>2]=0;a[H+(l*20|0)+1>>0]=0;break}else{Di(j,83,k,1,0)|0;break}}if((c[r+16>>2]|0)!=110){if(c[s+36>>2]|0){k=a[A>>0]|0;if(!(k<<24>>24)){m=(c[C>>2]|0)+1|0;c[C>>2]=m}else{m=k+-1<<24>>24;a[A>>0]=m;m=c[d+148+((m&255)<<2)>>2]|0}k=(c[s+76>>2]|0)+p|0;l=c[u>>2]|0;if((c[v>>2]|0)>(l|0)){c[u>>2]=l+1;H=c[x>>2]|0;a[H+(l*20|0)>>0]=90;b[H+(l*20|0)+2>>1]=0;c[H+(l*20|0)+4>>2]=g;c[H+(l*20|0)+8>>2]=k;c[H+(l*20|0)+12>>2]=m;c[H+(l*20|0)+16>>2]=0;a[H+(l*20|0)+1>>0]=0}else Di(j,90,g,k,m)|0;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;H=c[x>>2]|0;a[H+(k*20|0)>>0]=20;b[H+(k*20|0)+2>>1]=0;c[H+(k*20|0)+4>>2]=m;c[H+(k*20|0)+8>>2]=0;c[H+(k*20|0)+12>>2]=1;c[H+(k*20|0)+16>>2]=0;a[H+(k*20|0)+1>>0]=0}else k=Di(j,20,m,0,1)|0;if((m|0)!=0?(G=a[A>>0]|0,(G&255)<8):0){a[A>>0]=G+1<<24>>24;c[d+148+((G&255)<<2)>>2]=m;f=k}else f=k}else f=0;do if(c[r+4>>2]&32|0){k=Yi(d,c[(c[(c[q>>2]|0)+20>>2]|0)+4>>2]|0)|0;if(!k)k=c[(c[d>>2]|0)+8>>2]|0;l=c[u>>2]|0;if((c[v>>2]|0)>(l|0)){c[u>>2]=l+1;n=c[x>>2]|0;a[n+(l*20|0)>>0]=82;n=n+(l*20|0)+1|0;o=n+19|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0))}else l=Di(j,82,0,0,0)|0;if(!(a[(c[j>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[u>>2]|0)+-1|0;m=c[x>>2]|0;n=m+(l*20|0)+1|0;if(a[n>>0]|0){Ei(j,m+(l*20|0)|0,k,-2);break}if(k|0){c[m+(l*20|0)+16>>2]=k;a[n>>0]=-2}}}while(0);k=c[s+48>>2]|0;l=c[u>>2]|0;if((c[v>>2]|0)>(l|0)){c[u>>2]=l+1;H=c[x>>2]|0;a[H+(l*20|0)>>0]=D;b[H+(l*20|0)+2>>1]=0;c[H+(l*20|0)+4>>2]=h;c[H+(l*20|0)+8>>2]=i;c[H+(l*20|0)+12>>2]=k;c[H+(l*20|0)+16>>2]=0;a[H+(l*20|0)+1>>0]=0}else Di(j,B,h,i,k)|0;k=c[j>>2]|0;do if(a[k+81>>0]|0){if(c[r+4>>2]&16|0){if(k|0){if(c[k+480>>2]|0){Xd(k,r);break}H=r;if((c[k+304>>2]|0)>>>0<=H>>>0?(c[k+308>>2]|0)>>>0>H>>>0:0){H=k+300|0;c[r>>2]=c[H>>2];c[H>>2]=r;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{H=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}}else{q=c[x>>2]|0;H=(c[u>>2]|0)+-1|0;a[q+(H*20|0)+1>>0]=-8;c[q+(H*20|0)+16>>2]=r}while(0);l=c[u>>2]|0;if((l|0)>0)b[(c[x>>2]|0)+((l+-1|0)*20|0)+2>>1]=p&255;if(f|0){if(!(a[(c[j>>2]|0)+81>>0]|0))k=(c[x>>2]|0)+(((f|0)<0?l+-1|0:f)*20|0)|0;else k=59308;c[k+8>>2]=l}}}while(0);s=c[s+32>>2]|0}while((s|0)!=0);return}function xm(a,b,c){a=a|0;b=b|0;c=c|0;return}function ym(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=c[d+8>>2]|0;n=d+19|0;i=a[n>>0]|0;if(!(i<<24>>24)){k=d+44|0;l=(c[k>>2]|0)+1|0;c[k>>2]=l}else{l=i+-1<<24>>24;a[n>>0]=l;l=c[d+148+((l&255)<<2)>>2]|0}k=m+108|0;i=c[k>>2]|0;j=m+112|0;if((c[j>>2]|0)>(i|0)){c[k>>2]=i+1;o=c[m+104>>2]|0;a[o+(i*20|0)>>0]=29;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=e;c[o+(i*20|0)+8>>2]=f;c[o+(i*20|0)+12>>2]=h;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0}else i=Di(m,29,e,f,h)|0;if(!(a[(c[m>>2]|0)+81>>0]|0)){o=c[m+104>>2]|0;a[o+(i*20|0)+1>>0]=-3;c[o+(i*20|0)+16>>2]=g}i=c[k>>2]|0;if((c[j>>2]|0)>(i|0)){c[k>>2]=i+1;o=c[m+104>>2]|0;a[o+(i*20|0)>>0]=92;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=h;c[o+(i*20|0)+8>>2]=g;c[o+(i*20|0)+12>>2]=l;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0}else Di(m,92,h,g,l)|0;i=c[k>>2]|0;if((c[j>>2]|0)>(i|0)){c[k>>2]=i+1;o=c[m+104>>2]|0;a[o+(i*20|0)>>0]=-124;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=e;c[o+(i*20|0)+8>>2]=l;c[o+(i*20|0)+12>>2]=h;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0}else i=Di(m,132,e,l,h)|0;if(!(a[(c[m>>2]|0)+81>>0]|0)){o=c[m+104>>2]|0;a[o+(i*20|0)+1>>0]=-3;c[o+(i*20|0)+16>>2]=g}i=c[k>>2]|0;if((i|0)>0)b[(c[m+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=16;if(!l)return;i=a[n>>0]|0;if((i&255)>=8)return;a[n>>0]=i+1<<24>>24;c[d+148+((i&255)<<2)>>2]=l;return}function zm(d,f,g,h,i,j,k){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;E=d+8|0;J=c[E>>2]|0;F=f+32|0;n=a[F>>0]&1;p=n<<24>>24==0;n=(n^1)&255;l=c[f>>2]|0;C=c[l>>2]|0;H=C+n+j|0;D=f+4|0;I=c[D>>2]|0;o=(k|0)==0;if(o){B=d+44|0;G=c[B>>2]|0;c[B>>2]=G+H;G=G+1|0}else G=h-k|0;k=c[g+16>>2]|0;if(!k)B=c[g+12>>2]|0;else B=k+1|0;z=d+56|0;y=(c[z>>2]|0)+-1|0;c[z>>2]=y;A=f+24|0;c[A>>2]=y;Oj(d,l,G,i,(i|0)==0?1:5);do if(p){k=c[f+8>>2]|0;l=G+C|0;i=J+108|0;m=c[i>>2]|0;if((c[J+112>>2]|0)>(m|0)){c[i>>2]=m+1;y=c[J+104>>2]|0;a[y+(m*20|0)>>0]=120;b[y+(m*20|0)+2>>1]=0;c[y+(m*20|0)+4>>2]=k;c[y+(m*20|0)+8>>2]=l;c[y+(m*20|0)+12>>2]=0;c[y+(m*20|0)+16>>2]=0;a[y+(m*20|0)+1>>0]=0;break}else{Di(J,120,k,l,0)|0;break}}while(0);do if((j|0)>0&o){l=G+C+n|0;k=c[E>>2]|0;i=k+108|0;m=c[i>>2]|0;if((c[k+112>>2]|0)>(m|0)){c[i>>2]=m+1;y=c[k+104>>2]|0;a[y+(m*20|0)>>0]=77;b[y+(m*20|0)+2>>1]=0;c[y+(m*20|0)+4>>2]=h;c[y+(m*20|0)+8>>2]=l;c[y+(m*20|0)+12>>2]=j;c[y+(m*20|0)+16>>2]=0;a[y+(m*20|0)+1>>0]=0;break}else{Di(k,77,h,l,j)|0;break}}while(0);if((I|0)>0){l=c[D>>2]|0;n=c[E>>2]|0;w=d+44|0;o=(c[w>>2]|0)+1|0;c[w>>2]=o;k=c[f+36>>2]|0;if(k|0)Oj(d,c[g>>2]|0,c[k>>2]|0,0,a[k+4>>0]|0);m=l+G|0;k=H-l|0;l=n+108|0;i=c[l>>2]|0;if((c[n+112>>2]|0)>(i|0)){c[l>>2]=i+1;y=c[n+104>>2]|0;a[y+(i*20|0)>>0]=92;b[y+(i*20|0)+2>>1]=0;c[y+(i*20|0)+4>>2]=m;c[y+(i*20|0)+8>>2]=k;c[y+(i*20|0)+12>>2]=o;c[y+(i*20|0)+16>>2]=0;a[y+(i*20|0)+1>>0]=0}else Di(n,92,m,k,o)|0;v=c[w>>2]|0;y=v+1|0;n=c[D>>2]|0;c[w>>2]=n+v;do if(p){k=G+C|0;m=J+108|0;l=c[m>>2]|0;i=J+112|0;if((c[i>>2]|0)>(l|0)){c[m>>2]=l+1;u=c[J+104>>2]|0;a[u+(l*20|0)>>0]=20;b[u+(l*20|0)+2>>1]=0;c[u+(l*20|0)+4>>2]=k;c[u+(l*20|0)+8>>2]=0;c[u+(l*20|0)+12>>2]=0;c[u+(l*20|0)+16>>2]=0;a[u+(l*20|0)+1>>0]=0;u=l;v=m;break}else{u=Di(J,20,k,0,0)|0;v=m;break}}else{k=c[f+8>>2]|0;m=J+108|0;l=c[m>>2]|0;i=J+112|0;if((c[i>>2]|0)>(l|0)){c[m>>2]=l+1;u=c[J+104>>2]|0;a[u+(l*20|0)>>0]=115;b[u+(l*20|0)+2>>1]=0;c[u+(l*20|0)+4>>2]=k;c[u+(l*20|0)+8>>2]=0;c[u+(l*20|0)+12>>2]=0;c[u+(l*20|0)+16>>2]=0;a[u+(l*20|0)+1>>0]=0;u=l;v=m;break}else{u=Di(J,115,k,0,0)|0;v=m;break}}while(0);k=c[D>>2]|0;l=c[v>>2]|0;if((c[i>>2]|0)>(l|0)){c[v>>2]=l+1;t=c[J+104>>2]|0;a[t+(l*20|0)>>0]=87;b[t+(l*20|0)+2>>1]=0;c[t+(l*20|0)+4>>2]=y;c[t+(l*20|0)+8>>2]=G;c[t+(l*20|0)+12>>2]=k;c[t+(l*20|0)+16>>2]=0;a[t+(l*20|0)+1>>0]=0}else Di(J,87,y,G,k)|0;k=c[f+20>>2]|0;if((k|0)<0)k=(c[v>>2]|0)+-1|0;if(!(a[(c[J>>2]|0)+81>>0]|0))k=(c[J+104>>2]|0)+(k*20|0)|0;else k=59308;if(a[(c[d>>2]|0)+81>>0]|0)return;c[k+8>>2]=H-n;t=k+16|0;n=c[t>>2]|0;h=n+6|0;gw(c[n+16>>2]|0,0,e[h>>1]|0)|0;k=c[J>>2]|0;a:do if(!(a[k+81>>0]|0)){k=(c[v>>2]|0)+-1|0;l=c[J+104>>2]|0;m=l+(k*20|0)+1|0;if(a[m>>0]|0){Ei(J,l+(k*20|0)|0,n,-9);break}if(n|0){c[l+(k*20|0)+16>>2]=n;a[m>>0]=-9}}else if(!((n|0)==0|(c[k+480>>2]|0)!=0)?(s=(c[n>>2]|0)+-1|0,c[n>>2]=s,(s|0)==0):0){k=c[n+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,n);break a}l=n;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;s=k+300|0;c[n>>2]=c[s>>2];c[s>>2]=n;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{s=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);r=c[f>>2]|0;q=c[d>>2]|0;s=c[r>>2]|0;p=s-I|0;n=p+((e[n+8>>1]|0)-(e[h>>1]|0))|0;h=n*5|0;m=h+20|0;j=q+272|0;b:do if(c[j>>2]|0)if(!(a[q+81>>0]|0))x=62;else k=0;else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){l=q+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];x=q+284|0;c[x>>2]=(c[x>>2]|0)+1;x=63;break b}l=q+296|0;k=c[l>>2]|0;if(!k){k=q+292|0;break}else{c[l>>2]=c[k>>2];x=q+284|0;c[x>>2]=(c[x>>2]|0)+1;x=63;break b}}else k=q+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;x=62}while(0);if((x|0)==62){k=_d(q,m,0)|0;x=63}if((x|0)==63){do if(!k){l=q+81|0;if((a[l>>0]|0)==0?(a[q+82>>0]|0)==0:0){a[l>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;c[j>>2]=(c[j>>2]|0)+1;l=c[q+236>>2]|0;if(!l)break;c[l+12>>2]=7}}else{c[k+16>>2]=k+20+(n<<2);b[k+6>>1]=p;b[k+8>>1]=n;a[k+4>>0]=a[q+78>>0]|0;c[k+12>>2]=q;c[k>>2]=1;gw(k+24|0,0,h+-4|0)|0}while(0);if((s|0)>(I|0)&(k|0)!=0){h=k+16|0;m=r+4+(I*20|0)|0;n=I;while(1){l=Yi(d,c[m>>2]|0)|0;if(!l)l=c[(c[d>>2]|0)+8>>2]|0;x=n-I|0;c[k+20+(x<<2)>>2]=l;a[(c[h>>2]|0)+x>>0]=a[m+12>>0]|0;n=n+1|0;if((n|0)==(s|0))break;else m=m+20|0}}}c[t>>2]=k;n=c[v>>2]|0;k=n+1|0;if((c[i>>2]|0)>(n|0)){c[v>>2]=k;x=c[J+104>>2]|0;a[x+(n*20|0)>>0]=16;b[x+(n*20|0)+2>>1]=0;c[x+(n*20|0)+4>>2]=k;c[x+(n*20|0)+8>>2]=0;c[x+(n*20|0)+12>>2]=k;c[x+(n*20|0)+16>>2]=0;a[x+(n*20|0)+1>>0]=0}else Di(J,16,k,0,k)|0;m=(c[z>>2]|0)+-1|0;c[z>>2]=m;c[f+16>>2]=m;l=(c[w>>2]|0)+1|0;c[w>>2]=l;c[f+12>>2]=l;k=c[v>>2]|0;if((c[i>>2]|0)>(k|0)){c[v>>2]=k+1;z=c[J+104>>2]|0;a[z+(k*20|0)>>0]=12;b[z+(k*20|0)+2>>1]=0;c[z+(k*20|0)+4>>2]=l;c[z+(k*20|0)+8>>2]=m;c[z+(k*20|0)+12>>2]=0;c[z+(k*20|0)+16>>2]=0;a[z+(k*20|0)+1>>0]=0}else Di(J,12,l,m,0)|0;k=c[f+8>>2]|0;l=c[v>>2]|0;if((c[i>>2]|0)>(l|0)){c[v>>2]=l+1;z=c[J+104>>2]|0;a[z+(l*20|0)>>0]=-118;b[z+(l*20|0)+2>>1]=0;c[z+(l*20|0)+4>>2]=k;c[z+(l*20|0)+8>>2]=0;c[z+(l*20|0)+12>>2]=0;c[z+(l*20|0)+16>>2]=0;a[z+(l*20|0)+1>>0]=0}else Di(J,138,k,0,0)|0;do if(B|0){k=c[A>>2]|0;l=c[v>>2]|0;if((c[i>>2]|0)>(l|0)){c[v>>2]=l+1;A=c[J+104>>2]|0;a[A+(l*20|0)>>0]=20;b[A+(l*20|0)+2>>1]=0;c[A+(l*20|0)+4>>2]=B;c[A+(l*20|0)+8>>2]=k;c[A+(l*20|0)+12>>2]=0;c[A+(l*20|0)+16>>2]=0;a[A+(l*20|0)+1>>0]=0;break}else{Di(J,20,B,k,0)|0;break}}while(0);l=c[v>>2]|0;if(!(a[(c[J>>2]|0)+81>>0]|0))k=(c[J+104>>2]|0)+(((u|0)<0?l+-1|0:u)*20|0)|0;else k=59308;c[k+8>>2]=l;l=c[D>>2]|0;k=c[E>>2]|0;i=k+108|0;m=c[i>>2]|0;if((c[k+112>>2]|0)>(m|0)){c[i>>2]=m+1;A=c[k+104>>2]|0;a[A+(m*20|0)>>0]=77;b[A+(m*20|0)+2>>1]=0;c[A+(m*20|0)+4>>2]=G;c[A+(m*20|0)+8>>2]=y;c[A+(m*20|0)+12>>2]=l;c[A+(m*20|0)+16>>2]=0;a[A+(m*20|0)+1>>0]=0}else Di(k,77,G,y,l)|0;l=c[v>>2]|0;if(!(a[(c[J>>2]|0)+81>>0]|0))k=(c[J+104>>2]|0)+(((n|0)<0?l+-1|0:n)*20|0)|0;else k=59308;c[k+8>>2]=l}else o=0;do if(B){m=c[f+8>>2]|0;i=J+108|0;k=c[i>>2]|0;l=k+4|0;n=J+112|0;if((c[n>>2]|0)>(k|0)){c[i>>2]=k+1;A=c[J+104>>2]|0;a[A+(k*20|0)>>0]=48;b[A+(k*20|0)+2>>1]=0;c[A+(k*20|0)+4>>2]=B;c[A+(k*20|0)+8>>2]=l;c[A+(k*20|0)+12>>2]=0;c[A+(k*20|0)+16>>2]=0;a[A+(k*20|0)+1>>0]=0}else Di(J,48,B,l,0)|0;k=c[i>>2]|0;if((c[n>>2]|0)>(k|0)){c[i>>2]=k+1;B=c[J+104>>2]|0;a[B+(k*20|0)>>0]=32;b[B+(k*20|0)+2>>1]=0;c[B+(k*20|0)+4>>2]=m;c[B+(k*20|0)+8>>2]=0;c[B+(k*20|0)+12>>2]=0;c[B+(k*20|0)+16>>2]=0;a[B+(k*20|0)+1>>0]=0}else Di(J,32,m,0,0)|0;l=G+I|0;k=c[i>>2]|0;if((c[n>>2]|0)>(k|0)){c[i>>2]=k+1;B=c[J+104>>2]|0;a[B+(k*20|0)>>0]=37;b[B+(k*20|0)+2>>1]=0;c[B+(k*20|0)+4>>2]=m;c[B+(k*20|0)+8>>2]=0;c[B+(k*20|0)+12>>2]=l;c[B+(k*20|0)+16>>2]=0;a[B+(k*20|0)+1>>0]=0}else k=Di(J,37,m,0,l)|0;if(!(a[(c[J>>2]|0)+81>>0]|0)){B=c[J+104>>2]|0;a[B+(k*20|0)+1>>0]=-3;c[B+(k*20|0)+16>>2]=C-I}l=c[i>>2]|0;if((c[n>>2]|0)>(l|0)){c[i>>2]=l+1;C=c[J+104>>2]|0;a[C+(l*20|0)>>0]=123;b[C+(l*20|0)+2>>1]=0;c[C+(l*20|0)+4>>2]=m;c[C+(l*20|0)+8>>2]=0;c[C+(l*20|0)+12>>2]=0;c[C+(l*20|0)+16>>2]=0;a[C+(l*20|0)+1>>0]=0;break}else{Di(J,123,m,0,0)|0;break}}else k=0;while(0);do if(!o){i=c[D>>2]|0;h=c[E>>2]|0;l=d+44|0;o=(c[l>>2]|0)+1|0;c[l>>2]=o;l=c[f+36>>2]|0;if(l|0)Oj(d,c[g>>2]|0,c[l>>2]|0,0,a[l+4>>0]|0);n=i+G|0;l=H-i|0;i=h+108|0;m=c[i>>2]|0;if((c[h+112>>2]|0)>(m|0)){c[i>>2]=m+1;g=c[h+104>>2]|0;a[g+(m*20|0)>>0]=92;b[g+(m*20|0)+2>>1]=0;c[g+(m*20|0)+4>>2]=n;c[g+(m*20|0)+8>>2]=l;c[g+(m*20|0)+12>>2]=o;c[g+(m*20|0)+16>>2]=0;a[g+(m*20|0)+1>>0]=0;break}else{Di(h,92,n,l,o)|0;break}}while(0);m=132-(a[F>>0]&1)|0;n=c[f+8>>2]|0;i=G+I|0;h=J+108|0;l=c[h>>2]|0;if((c[J+112>>2]|0)>(l|0)){c[h>>2]=l+1;G=c[J+104>>2]|0;a[G+(l*20|0)>>0]=m;b[G+(l*20|0)+2>>1]=0;c[G+(l*20|0)+4>>2]=n;c[G+(l*20|0)+8>>2]=o;c[G+(l*20|0)+12>>2]=i;c[G+(l*20|0)+16>>2]=0;a[G+(l*20|0)+1>>0]=0}else l=Di(J,m,n,o,i)|0;if(!(a[(c[J>>2]|0)+81>>0]|0)){G=c[J+104>>2]|0;a[G+(l*20|0)+1>>0]=-3;c[G+(l*20|0)+16>>2]=H-I}if(!k)return;l=c[f+28>>2]|0;if(!l){l=c[h>>2]|0;if(!(a[(c[J>>2]|0)+81>>0]|0))k=(c[J+104>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else k=59308;c[k+8>>2]=l;return}if((k|0)<0)k=(c[h>>2]|0)+-1|0;if(!(a[(c[J>>2]|0)+81>>0]|0))k=(c[J+104>>2]|0)+(k*20|0)|0;else k=59308;c[k+8>>2]=l;return}function Am(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=Ra;Ra=Ra+64|0;l=m;if((a[d>>0]|0)==44){l=0;Ra=m;return l|0}e=c[b+24>>2]|0;j=c[b>>2]|0;i=c[e+40>>2]|0;k=l+20|0;a[k>>0]=1;c[l+4>>2]=149;c[l+8>>2]=0;c[l+24>>2]=i;c[l>>2]=j;_j(l,d)|0;if(!(a[k>>0]|0)){l=1;Ra=m;return l|0}j=c[c[b>>2]>>2]|0;k=oj(j,147,17144,0)|0;if(!k){l=1;Ra=m;return l|0}e=e+36|0;f=c[e>>2]|0;g=l;h=k;i=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=k;h=d;i=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=d;h=l;i=g+52|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));l=Xk(j,f,k)|0;c[e>>2]=l;a[b+20>>0]=1;l=1;Ra=m;return l|0}function Bm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=c[b+24>>2]|0;a:do if((c[h>>2]|0)>0){g=0;while(1){e=c[h+4+(g*20|0)>>2]|0;if((bk(0,d,e,-1)|0)<2){f=c[b>>2]|0;e=Yi(f,e)|0;if(!e){e=c[(c[f>>2]|0)+8>>2]|0;if(!e){e=1;f=12;break}}if((c[e+12>>2]|0)==78?(c[e+8>>2]|0)==0:0){e=1;f=12;break}}g=g+1|0;if((g|0)>=(c[h>>2]|0))break a}if((f|0)==12)return e|0}while(0);if(!(c[d+4>>2]&2048)){d=Yj(b,d)|0;return d|0}else{a[b+20>>0]=0;d=2;return d|0}return 0}function Cm(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=c[f+24>>2]|0;s=c[h>>2]|0;j=c[h+4>>2]|0;t=c[h+8>>2]|0;switch(a[g>>0]|0){case -94:case -92:{if(!j){t=1;return t|0}i=c[j>>2]|0;if((i|0)<=0){t=1;return t|0}o=g+28|0;l=c[o>>2]|0;h=0;f=j+8|0;while(1){if((l|0)==(c[f+40>>2]|0))break;h=h+1|0;if((h|0)>=(i|0)){f=1;r=80;break}else f=f+72|0}if((r|0)==80)return f|0;j=t+28|0;n=t+32|0;p=c[n>>2]|0;a:do if((p|0)>0){k=c[j>>2]|0;i=g+32|0;h=k;f=0;while(1){if((c[h+4>>2]|0)==(l|0)?(c[h+8>>2]|0)==(b[i>>1]|0):0)break a;f=f+1|0;if((f|0)>=(p|0))break;else h=h+24|0}m=j;f=k;r=13}else{m=j;f=c[j>>2]|0;r=13}while(0);b:do if((r|0)==13){l=c[s>>2]|0;h=((p|0)<0)<<31>>31;k=Sv(p|0,h|0,-1,-1)|0;c:do if((k&p|0)==0&((L()|0)&h|0)==0){i=(p|0)==0;j=Yv(p|0,h|0,48,0)|0;k=L()|0;j=i?24:j;k=i?0:k;d:do if(!f){if(c[l+272>>2]|0){if(a[l+81>>0]|0){f=0;break}}else{do if(!(k>>>0>0|((k|0)==0?j>>>0>(e[l+276>>1]|0)>>>0:0))){i=l+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];r=l+284|0;c[r>>2]=(c[r>>2]|0)+1;r=31;break d}i=l+296|0;h=c[i>>2]|0;if(!h){h=l+292|0;break}else{c[i>>2]=c[h>>2];r=l+284|0;c[r>>2]=(c[r>>2]|0)+1;r=31;break d}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(l,j,k)|0;r=31}else{r=f;if((c[l+304>>2]|0)>>>0<=r>>>0?(c[l+308>>2]|0)>>>0>r>>>0:0){if(!(k>>>0>0|((k|0)==0?j>>>0>(e[l+276>>1]|0)>>>0:0)))break c;h=Zd(l,f,j,k)|0;r=31;break}h=Zd(l,f,j,k)|0;r=31}while(0);if((r|0)==31)if(h){f=h;break}c[m>>2]=f;f=-1;break b}while(0);h=f+(p*24|0)|0;j=h+24|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));c[n>>2]=(c[n>>2]|0)+1;c[m>>2]=f;if((p|0)>-1){c[f+(p*24|0)>>2]=c[g+44>>2];j=c[o>>2]|0;c[f+(p*24|0)+4>>2]=j;k=b[g+32>>1]|0;c[f+(p*24|0)+8>>2]=k<<16>>16;s=s+44|0;i=(c[s>>2]|0)+1|0;c[s>>2]=i;c[f+(p*24|0)+16>>2]=i;i=f+(p*24|0)+12|0;c[i>>2]=-1;c[f+(p*24|0)+20>>2]=g;f=c[t+24>>2]|0;e:do if(f|0?(q=c[f>>2]|0,(q|0)>0):0){h=f+4|0;f=0;while(1){s=c[h>>2]|0;if(((a[s>>0]|0)==-94?(c[s+28>>2]|0)==(j|0):0)?(b[s+32>>1]|0)==k<<16>>16:0)break;f=f+1|0;if((f|0)<(q|0))h=h+20|0;else break e}c[i>>2]=f;f=p;break b}while(0);s=t+12|0;f=c[s>>2]|0;c[s>>2]=f+1;c[i>>2]=f;f=p}else f=p}while(0);c[g+40>>2]=t;a[g>>0]=-92;b[g+34>>1]=f;t=1;return t|0}case -93:{if(b[h+24>>1]&8){t=0;return t|0}if((c[f+16>>2]|0)!=(d[g+38>>0]|0)){t=0;return t|0}p=t+40|0;o=t+44|0;h=c[o>>2]|0;f:do if((h|0)>0){h=c[p>>2]|0;f=0;while(1){if(!(bk(0,c[h>>2]|0,g,-1)|0))break;f=f+1|0;i=c[o>>2]|0;if((f|0)<(i|0))h=h+16|0;else break f}i=c[o>>2]|0}else{f=0;i=h}while(0);g:do if((f|0)>=(i|0)){m=c[s>>2]|0;n=a[m+78>>0]|0;f=c[p>>2]|0;h=((i|0)<0)<<31>>31;q=Sv(i|0,h|0,-1,-1)|0;h:do if((q&i|0)==0&((L()|0)&h|0)==0){q=(i|0)==0;k=cw(i|0,h|0,5)|0;l=L()|0;k=q?16:k;l=q?0:l;i:do if(!f){if(c[m+272>>2]|0){if(a[m+81>>0]|0){f=0;break}}else{do if(!(l>>>0>0|((l|0)==0?k>>>0>(e[m+276>>1]|0)>>>0:0))){j=m+300|0;h=c[j>>2]|0;if(h|0){c[j>>2]=c[h>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=71;break i}j=m+296|0;h=c[j>>2]|0;if(!h){h=m+292|0;break}else{c[j>>2]=c[h>>2];r=m+284|0;c[r>>2]=(c[r>>2]|0)+1;r=71;break i}}else h=m+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(m,k,l)|0;r=71}else{r=f;if((c[m+304>>2]|0)>>>0<=r>>>0?(c[m+308>>2]|0)>>>0>r>>>0:0){if(!(l>>>0>0|((l|0)==0?k>>>0>(e[m+276>>1]|0)>>>0:0)))break h;h=Zd(m,f,k,l)|0;r=71;break}h=Zd(m,f,k,l)|0;r=71}while(0);if((r|0)==71)if(h){f=h;break}c[p>>2]=f;f=-1;break g}while(0);h=f+(i<<4)|0;j=h+16|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));c[o>>2]=(c[o>>2]|0)+1;c[p>>2]=f;if((i|0)>-1){c[f+(i<<4)>>2]=g;r=s+44|0;h=(c[r>>2]|0)+1|0;c[r>>2]=h;c[f+(i<<4)+8>>2]=h;h=c[g+20>>2]|0;if(!h)h=0;else h=c[h>>2]|0;r=Jd(c[s>>2]|0,c[g+8>>2]|0,h,n,0)|0;c[f+(i<<4)+4>>2]=r;if(!(c[g+4>>2]&2)){c[f+(i<<4)+12>>2]=-1;f=i;break}else{r=s+40|0;s=c[r>>2]|0;c[r>>2]=s+1;c[f+(i<<4)+12>>2]=s;f=i;break}}else f=i}while(0);b[g+34>>1]=f;c[g+40>>2]=t;t=1;return t|0}default:{t=0;return t|0}}return 0}function Dm(a,b){a=a|0;b=b|0;b=a+16|0;c[b>>2]=(c[b>>2]|0)+1;return 0}function Em(a,b){a=a|0;b=b|0;b=a+16|0;c[b>>2]=(c[b>>2]|0)+-1;return}function Fm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+16|0;j=l+8|0;i=l;do if(!(c[d+56>>2]|0)){f=c[d+36>>2]|0;if(f&1025|0){g=c[b>>2]|0;h=c[g+32>>2]|0;if(f&1|0){if((h&268435457|0)==1&0==0)break;if(!(a[b+18>>0]|0)){k=12;break}else break}if((!((h&268435456|0)==0&0==0)?(c[g+352>>2]|0)==0:0)?(c[g+180>>2]|0)==0:0)k=12}}else{g=c[b>>2]|0;f=d+64|0;while(1){f=c[f>>2]|0;if((c[f>>2]|0)==(g|0))break;else f=f+24|0}if(!(c[(c[c[f+4>>2]>>2]|0)+52>>2]|0))k=12}while(0);if((k|0)==12){c[i>>2]=c[d>>2];cd(b,44627,i);k=1;Ra=l;return k|0}if(e|0){k=0;Ra=l;return k|0}if(!(c[d+12>>2]|0)){k=0;Ra=l;return k|0}c[j>>2]=c[d>>2];cd(b,44656,j);k=1;Ra=l;return k|0}function Gm(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=Ra;Ra=Ra+32|0;o=q;p=c[b>>2]|0;j=c[d+72>>2]|0;if(!j)k=-1e6;else{i=c[p+16>>2]|0;h=0;while(1)if((c[i+(h<<4)+12>>2]|0)==(j|0)){k=h;break}else h=h+1|0}if(!f)m=0;else m=dk(p,f,0,0)|0;n=pj(b,0,0,0)|0;if(!n)h=mj(b,0,0,m,0,0,0,131072,0)|0;else{f=c[d>>2]|0;a:do if(!f)h=0;else{d=(Eu(f)|0)+1|0;b:do if(!p){j=Sv(d|0,0,-1,-1)|0;i=L()|0;if(i>>>0>0|(i|0)==0&j>>>0>2147483390){h=0;break a}if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](d)|0;l=32;break}h=Wa[c[29356>>2]&127](d)|0;if((c[14985]|0)>>>0>>0)c[14985]=d;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){r=c[14978]|0;j=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&j>>>0<=r>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){h=0;break a}i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){h=0;break a}}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){i=p+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];l=p+284|0;c[l>>2]=(c[l>>2]|0)+1;l=32;break b}i=p+296|0;h=c[i>>2]|0;if(!h){h=p+292|0;break}else{c[i>>2]=c[h>>2];l=p+284|0;c[l>>2]=(c[l>>2]|0)+1;l=32;break b}}else h=p+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(p,d,0)|0;l=32}while(0);if((l|0)==32)if(!h){h=0;break}ew(h|0,f|0,d|0)|0}while(0);c[n+16>>2]=h;j=c[(c[p+16>>2]|0)+(k<<4)>>2]|0;c:do if(j){f=(Eu(j)|0)+1|0;d:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))l=45;else{h=0;break c}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){i=p+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];r=p+284|0;c[r>>2]=(c[r>>2]|0)+1;break d}i=p+296|0;h=c[i>>2]|0;if(!h){h=p+292|0;break}else{c[i>>2]=c[h>>2];r=p+284|0;c[r>>2]=(c[r>>2]|0)+1;break d}}else h=p+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;l=45}while(0);if((l|0)==45)h=_d(p,f,0)|0;if(h)ew(h|0,j|0,f|0)|0;else h=0}else h=0;while(0);c[n+12>>2]=h;h=mj(b,0,n,m,0,0,0,131072,0)|0}a[o>>0]=12;c[o+4>>2]=g;c[o+16>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;kj(b,h,o)|0;if(!h){Ra=q;return}pi(p,h,1);Ra=q;return}function Hm(f,g,h,i,j,k,l,m){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;if(c[g+56>>2]|0){f=0;return f|0}q=c[f>>2]|0;o=c[g+72>>2]|0;if(!o)y=-1e6;else{p=c[q+16>>2]|0;n=0;while(1)if((c[p+(n<<4)+12>>2]|0)==(o|0)){y=n;break}else n=n+1|0}z=f+8|0;n=c[z>>2]|0;a:do if(!n){if((c[f+116>>2]|0)==0?(b[q+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))r=19;else{n=0;break a}else{do if((e[q+276>>1]|0)>=224){o=q+300|0;n=c[o>>2]|0;if(n|0){c[o>>2]=c[n>>2];x=q+284|0;c[x>>2]=(c[x>>2]|0)+1;break b}o=q+296|0;n=c[o>>2]|0;if(!n){n=q+292|0;break}else{c[o>>2]=c[n>>2];x=q+284|0;c[x>>2]=(c[x>>2]|0)+1;break b}}else n=q+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;r=19}while(0);if((r|0)==19)n=_d(q,224,0)|0;if(!n)n=0;else{o=n+104|0;p=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));c[n>>2]=q;o=q+4|0;p=c[o>>2]|0;if(p|0)c[p+4>>2]=n;c[n+8>>2]=p;c[n+4>>2]=0;c[o>>2]=n;c[n+20>>2]=381479589;c[n+12>>2]=f;c[z>>2]=n;Di(n,61,0,1,0)|0}}while(0);if((j|0)<0)p=c[f+40>>2]|0;else p=j;o=p+1|0;q=(l|0)!=0;if(q)c[l>>2]=p;x=g+36|0;do if(!(c[x>>2]&32)){if(k|0?(a[k>>0]|0)==0:0){r=32;break}Gj(f,p,y,g,h)}else r=32;while(0);if((r|0)==32)Hj(f,y,c[g+28>>2]|0,(h|0)==109&1,c[g>>2]|0);if(m|0)c[m>>2]=o;p=c[g+8>>2]|0;if(!p)p=0;else{m=q^1;s=(k|0)==0;t=n+108|0;u=n+112|0;v=n+104|0;w=h&255;r=p;p=0;while(1){g=o+1|0;j=r+55|0;if(((d[j>>0]|d[j+1>>0]<<8)&3)==2){q=(c[x>>2]&32|0)==0;if(q|m)j=q?i:0;else{c[l>>2]=o;j=0}}else j=i;if(!(!s?!(a[k+(p+1)>>0]|0):0)){q=c[r+44>>2]|0;i=c[t>>2]|0;if((c[u>>2]|0)>(i|0)){c[t>>2]=i+1;A=c[v>>2]|0;a[A+(i*20|0)>>0]=w;b[A+(i*20|0)+2>>1]=0;c[A+(i*20|0)+4>>2]=o;c[A+(i*20|0)+8>>2]=q;c[A+(i*20|0)+12>>2]=y;c[A+(i*20|0)+16>>2]=0;a[A+(i*20|0)+1>>0]=0}else Di(n,h,o,q,y)|0;o=c[z>>2]|0;i=Ij(f,r)|0;c:do if(i|0){q=c[o>>2]|0;if(!(a[q+81>>0]|0)){q=c[o+104>>2]|0;A=(c[o+108>>2]|0)+-1|0;a[q+(A*20|0)+1>>0]=-9;c[q+(A*20|0)+16>>2]=i;break}if((c[q+480>>2]|0)==0?(A=(c[i>>2]|0)+-1|0,c[i>>2]=A,(A|0)==0):0){o=c[i+12>>2]|0;do if(o|0){if(c[o+480>>2]|0){Xd(o,i);break c}q=i;if((c[o+304>>2]|0)>>>0>q>>>0)break;if((c[o+308>>2]|0)>>>0<=q>>>0)break;A=o+300|0;c[i>>2]=c[A>>2];c[A>>2]=i;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{A=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}}while(0);o=c[t>>2]|0;if((o|0)>0)b[(c[v>>2]|0)+((o+-1|0)*20|0)+2>>1]=j&255}p=p+1|0;r=c[r+20>>2]|0;if(!r){o=g;break}else{i=j;o=g}}}n=f+40|0;if((o|0)<=(c[n>>2]|0)){A=p;return A|0}c[n>>2]=o;A=p;return A|0}function Im(f,g,h,i,j,k,l,m,n,o,p){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0;N=f+8|0;Q=c[N>>2]|0;I=f+56|0;P=c[I>>2]|0;O=P+-1|0;c[I>>2]=O;I=(c[g+36>>2]&32|0)==0?31:28;J=o<<24>>24==0;if(J){r=Q+108|0;q=c[r>>2]|0;if((c[Q+112>>2]|0)>(q|0)){c[r>>2]=q+1;M=c[Q+104>>2]|0;a[M+(q*20|0)>>0]=I;b[M+(q*20|0)+2>>1]=0;c[M+(q*20|0)+4>>2]=i;c[M+(q*20|0)+8>>2]=O;c[M+(q*20|0)+12>>2]=k;c[M+(q*20|0)+16>>2]=0;a[M+(q*20|0)+1>>0]=0}else q=Di(Q,I&255,i,O,k)|0;if(!(a[(c[Q>>2]|0)+81>>0]|0)){M=c[Q+104>>2]|0;a[M+(q*20|0)+1>>0]=-3;c[M+(q*20|0)+16>>2]=l<<16>>16}}if(!(0==0?(c[(c[f>>2]|0)+32>>2]&16384|0)==0:0)){w=c[g>>2]|0;t=c[g+72>>2]|0;u=c[t+68>>2]|0;if(!u){r=t+60|0;q=t+64|0}else{r=a[w>>0]|0;if(!(r<<24>>24))q=0;else{q=0;s=w;do{s=s+1|0;q=G(q+(d[208+(r&255)>>0]|0)|0,-1640531535)|0;r=a[s>>0]|0}while(r<<24>>24!=0)}q=(q>>>0)%((c[t+56>>2]|0)>>>0)|0;r=u+(q<<3)|0;q=u+(q<<3)+4|0}r=c[r>>2]|0;a:do if(!r)q=59292;else{v=d[208+(d[w>>0]|0)>>0]|0;while(1){q=c[q>>2]|0;r=r+-1|0;t=c[q+12>>2]|0;M=a[t>>0]|0;s=(d[208+(M&255)>>0]|0)-v|0;if(!(M<<24>>24==0|(s|0)!=0)){u=w;do{t=t+1|0;u=u+1|0;M=a[t>>0]|0;s=(d[208+(M&255)>>0]|0)-(d[208+(d[u>>0]|0)>>0]|0)|0}while(!(M<<24>>24==0|(s|0)!=0))}if(!s)break a;if(!r){q=59292;break}}}while(0);if(!(c[q+8>>2]|0)){q=(c[g+16>>2]|0)!=0&1;M=23}else M=24}else{q=0;M=23}if((M|0)==23)if((h|0)!=0|(q|0)!=0)M=24;else F=0;if((M|0)==24){H=n&255;u=(h|0)==0;if(u)q=0;else{t=f+116|0;q=0;s=h;do{do if((a[s+8>>0]|0)==121?(a[s+9>>0]&3)!=0:0){r=c[t>>2]|0;r=c[((r|0)==0?f:r)+260>>2]|0;b:do if(!r)M=33;else while(1){if((c[r>>2]|0)==(s|0)?(c[r+12>>2]|0)==(H|0):0)break b;r=c[r+4>>2]|0;if(!r){M=33;break}}while(0);if((M|0)==33){M=0;r=Nm(f,s,g,H)|0;if(!r)break}q=c[r+16>>2]|q}while(0);s=c[s+32>>2]|0}while((s|0)!=0)}s=Km(f,g)|0|q;C=f+44|0;F=(c[C>>2]|0)+1|0;t=g+42|0;c[C>>2]=F+(b[t>>1]|0);D=Q+108|0;q=c[D>>2]|0;E=Q+112|0;if((c[E>>2]|0)>(q|0)){c[D>>2]=q+1;B=c[Q+104>>2]|0;a[B+(q*20|0)>>0]=78;b[B+(q*20|0)+2>>1]=0;c[B+(q*20|0)+4>>2]=k;c[B+(q*20|0)+8>>2]=F;c[B+(q*20|0)+12>>2]=0;c[B+(q*20|0)+16>>2]=0;a[B+(q*20|0)+1>>0]=0}else Di(Q,78,k,F,0)|0;q=b[t>>1]|0;c:do if(q<<16>>16>0){if((s|0)==-1){q=0;while(1){B=q;q=q+1|0;Vj(Q,g,i,B,q+F|0);if((q|0)>=(b[t>>1]|0))break c}}r=0;do{if(r>>>0<32?(1<>1]|0}r=r+1|0}while((r|0)<(q<<16>>16|0))}while(0);A=c[D>>2]|0;if(u)q=A;else{y=f+116|0;z=f+23|0;x=h;do{do if((a[x+8>>0]|0)==121?(a[x+9>>0]|0)==1:0){q=c[N>>2]|0;d:do if(!q){s=c[f>>2]|0;if((c[y>>2]|0)==0?(b[s+76>>1]&8)==0:0)a[z>>0]=1;e:do if(c[s+272>>2]|0)if(!(a[s+81>>0]|0))M=66;else{q=0;break d}else{do if((e[s+276>>1]|0)>=224){r=s+300|0;q=c[r>>2]|0;if(q|0){c[r>>2]=c[q>>2];B=s+284|0;c[B>>2]=(c[B>>2]|0)+1;break e}r=s+296|0;q=c[r>>2]|0;if(!q){q=s+292|0;break}else{c[r>>2]=c[q>>2];B=s+284|0;c[B>>2]=(c[B>>2]|0)+1;break e}}else q=s+288|0;while(0);c[q>>2]=(c[q>>2]|0)+1;M=66}while(0);if((M|0)==66){M=0;q=_d(s,224,0)|0}if(!q)q=0;else{v=q+104|0;B=v+120|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(B|0));c[q>>2]=s;r=s+4|0;s=c[r>>2]|0;if(s|0)c[s+4>>2]=q;c[q+8>>2]=s;c[q+4>>2]=0;c[r>>2]=q;c[q+20>>2]=381479589;c[q+12>>2]=f;c[N>>2]=q;Di(q,61,0,1,0)|0}}while(0);r=c[y>>2]|0;r=c[((r|0)==0?f:r)+260>>2]|0;f:do if(!r)M=76;else while(1){if((c[r>>2]|0)==(x|0)?(c[r+12>>2]|0)==(H|0):0)break f;r=c[r+4>>2]|0;if(!r){M=76;break}}while(0);if((M|0)==76){M=0;r=Nm(f,x,g,H)|0;if(!r)break}if(!(c[x>>2]|0))w=0;else{w=(c[f>>2]|0)+32|0;w=bw(c[w>>2]|0,c[w+4>>2]|0,13)|0;L()|0;w=w&1^1}s=(c[C>>2]|0)+1|0;c[C>>2]=s;u=c[r+8>>2]|0;v=q+108|0;r=c[v>>2]|0;if((c[q+112>>2]|0)>(r|0)){c[v>>2]=r+1;B=c[q+104>>2]|0;a[B+(r*20|0)>>0]=45;b[B+(r*20|0)+2>>1]=0;c[B+(r*20|0)+4>>2]=F;c[B+(r*20|0)+8>>2]=O;c[B+(r*20|0)+12>>2]=s;c[B+(r*20|0)+16>>2]=0;a[B+(r*20|0)+1>>0]=0}else r=Di(q,45,F,O,s)|0;do if(!(a[(c[q>>2]|0)+81>>0]|0)){if((r|0)<0)r=(c[v>>2]|0)+-1|0;s=c[q+104>>2]|0;t=s+(r*20|0)+1|0;if(a[t>>0]|0){Ei(q,s+(r*20|0)|0,u,-4);break}if(!u)break;c[s+(r*20|0)+16>>2]=u;a[t>>0]=-4}while(0);r=c[v>>2]|0;if((r|0)>0)b[(c[q+104>>2]|0)+((r+-1|0)*20|0)+2>>1]=w}while(0);x=c[x+32>>2]|0}while((x|0)!=0);q=c[D>>2]|0}if((A|0)<(q|0)){if((c[E>>2]|0)>(q|0)){c[D>>2]=q+1;H=c[Q+104>>2]|0;a[H+(q*20|0)>>0]=I;b[H+(q*20|0)+2>>1]=0;c[H+(q*20|0)+4>>2]=i;c[H+(q*20|0)+8>>2]=O;c[H+(q*20|0)+12>>2]=k;c[H+(q*20|0)+16>>2]=0;a[H+(q*20|0)+1>>0]=0}else q=Di(Q,I&255,i,O,k)|0;if(!(a[(c[Q>>2]|0)+81>>0]|0)){k=c[Q+104>>2]|0;a[k+(q*20|0)+1>>0]=-3;c[k+(q*20|0)+16>>2]=l<<16>>16;q=-1}else q=-1}else q=p;Lm(f,g,F,0,0,0);p=q}if(!(c[g+12>>2]|0)){Mm(f,g,i,j,0,p);q=m<<24>>24!=0&1;t=Q+108|0;r=c[t>>2]|0;u=Q+112|0;if((c[u>>2]|0)>(r|0)){c[t>>2]=r+1;m=c[Q+104>>2]|0;a[m+(r*20|0)>>0]=123;b[m+(r*20|0)+2>>1]=0;c[m+(r*20|0)+4>>2]=i;c[m+(r*20|0)+8>>2]=q;c[m+(r*20|0)+12>>2]=0;c[m+(r*20|0)+16>>2]=0;a[m+(r*20|0)+1>>0]=0}else Di(Q,123,i,q,0)|0;if(a[f+18>>0]|0){r=c[g>>2]|0;if(r|0){m=a[r>>0]|0;q=(d[208+(m&255)>>0]|0)+-115|0;if(!(m<<24>>24==0|(q|0)!=0)){s=35174;do{r=r+1|0;s=s+1|0;m=a[r>>0]|0;q=(d[208+(m&255)>>0]|0)-(d[208+(d[s>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(q|0)!=0))}if(!q)M=110}}else M=110;if((M|0)==110?(a[(c[Q>>2]|0)+81>>0]|0)==0:0){j=c[Q+104>>2]|0;m=(c[t>>2]|0)+-1|0;a[j+(m*20|0)+1>>0]=-6;c[j+(m*20|0)+16>>2]=g}if(!J?(K=c[t>>2]|0,(K|0)>0):0)b[(c[Q+104>>2]|0)+((K+-1|0)*20|0)+2>>1]=4;do if(!((p|0)<0|(p|0)==(i|0))){q=c[t>>2]|0;if((c[u>>2]|0)>(q|0)){c[t>>2]=q+1;K=c[Q+104>>2]|0;a[K+(q*20|0)>>0]=123;b[K+(q*20|0)+2>>1]=0;c[K+(q*20|0)+4>>2]=p;c[K+(q*20|0)+8>>2]=0;c[K+(q*20|0)+12>>2]=0;c[K+(q*20|0)+16>>2]=0;a[K+(q*20|0)+1>>0]=0;break}else{Di(Q,123,p,0,0)|0;break}}while(0);q=c[t>>2]|0;if((q|0)>0)b[(c[Q+104>>2]|0)+((q+-1|0)*20|0)+2>>1]=o<<24>>24==2?2:0}if(!(0==0?(c[(c[f>>2]|0)+32>>2]&16384|0)==0:0)){v=c[g>>2]|0;t=c[g+72>>2]|0;u=c[t+68>>2]|0;if(!u){r=t+60|0;q=t+64|0}else{r=a[v>>0]|0;if(!(r<<24>>24))q=0;else{q=0;s=v;do{s=s+1|0;q=G(q+(d[208+(r&255)>>0]|0)|0,-1640531535)|0;r=a[s>>0]|0}while(r<<24>>24!=0)}q=(q>>>0)%((c[t+56>>2]|0)>>>0)|0;r=u+(q<<3)|0;q=u+(q<<3)+4|0}r=c[r>>2]|0;g:do if(!r)q=59292;else{p=d[208+(d[v>>0]|0)>>0]|0;while(1){q=c[q>>2]|0;r=r+-1|0;t=c[q+12>>2]|0;o=a[t>>0]|0;s=(d[208+(o&255)>>0]|0)-p|0;if(!(o<<24>>24==0|(s|0)!=0)){u=v;do{t=t+1|0;u=u+1|0;o=a[t>>0]|0;s=(d[208+(o&255)>>0]|0)-(d[208+(d[u>>0]|0)>>0]|0)|0}while(!(o<<24>>24==0|(s|0)!=0))}if(!s)break g;if(!r){q=59292;break}}}while(0);q=c[q+8>>2]|0;if(q|0){x=f+116|0;y=f+23|0;z=f+44|0;do{u=Rm(f,g,q,0)|0;do if(u|0){r=c[N>>2]|0;h:do if(!r){t=c[f>>2]|0;if((c[x>>2]|0)==0?(b[t+76>>1]&8)==0:0)a[y>>0]=1;i:do if(c[t+272>>2]|0)if(!(a[t+81>>0]|0))M=152;else{r=0;break h}else{do if((e[t+276>>1]|0)>=224){s=t+300|0;r=c[s>>2]|0;if(r|0){c[s>>2]=c[r>>2];o=t+284|0;c[o>>2]=(c[o>>2]|0)+1;break i}s=t+296|0;r=c[s>>2]|0;if(!r){r=t+292|0;break}else{c[s>>2]=c[r>>2];o=t+284|0;c[o>>2]=(c[o>>2]|0)+1;break i}}else r=t+288|0;while(0);c[r>>2]=(c[r>>2]|0)+1;M=152}while(0);if((M|0)==152){M=0;r=_d(t,224,0)|0}if(!r)r=0;else{v=r+104|0;B=v+120|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(B|0));c[r>>2]=t;s=t+4|0;t=c[s>>2]|0;if(t|0)c[t+4>>2]=r;c[r+8>>2]=t;c[r+4>>2]=0;c[s>>2]=r;c[r+20>>2]=381479589;c[r+12>>2]=f;c[N>>2]=r;Di(r,61,0,1,0)|0}}while(0);s=c[x>>2]|0;s=c[((s|0)==0?f:s)+260>>2]|0;j:do if(!s)M=162;else while(1){if((c[s>>2]|0)==(u|0)?(c[s+12>>2]|0)==2:0)break j;s=c[s+4>>2]|0;if(!s){M=162;break}}while(0);if((M|0)==162){M=0;s=Nm(f,u,g,2)|0;if(!s)break}if(!(c[u>>2]|0))w=0;else{w=(c[f>>2]|0)+32|0;w=bw(c[w>>2]|0,c[w+4>>2]|0,13)|0;L()|0;w=w&1^1}t=(c[z>>2]|0)+1|0;c[z>>2]=t;p=c[s+8>>2]|0;v=r+108|0;s=c[v>>2]|0;if((c[r+112>>2]|0)>(s|0)){c[v>>2]=s+1;o=c[r+104>>2]|0;a[o+(s*20|0)>>0]=45;b[o+(s*20|0)+2>>1]=0;c[o+(s*20|0)+4>>2]=F;c[o+(s*20|0)+8>>2]=0;c[o+(s*20|0)+12>>2]=t;c[o+(s*20|0)+16>>2]=0;a[o+(s*20|0)+1>>0]=0}else s=Di(r,45,F,0,t)|0;do if(!(a[(c[r>>2]|0)+81>>0]|0)){if((s|0)<0)s=(c[v>>2]|0)+-1|0;t=c[r+104>>2]|0;u=t+(s*20|0)+1|0;if(a[u>>0]|0){Ei(r,t+(s*20|0)|0,p,-4);break}if(p|0){c[t+(s*20|0)+16>>2]=p;a[u>>0]=-4}}while(0);s=c[v>>2]|0;if((s|0)>0)b[(c[r+104>>2]|0)+((s+-1|0)*20|0)+2>>1]=w}while(0);q=c[q+12>>2]|0}while((q|0)!=0)}}x=n&255;if(h|0){y=f+116|0;z=f+23|0;A=f+44|0;w=h;do{do if((a[w+8>>0]|0)==121?(a[w+9>>0]|0)==2:0){q=c[N>>2]|0;k:do if(!q){s=c[f>>2]|0;if((c[y>>2]|0)==0?(b[s+76>>1]&8)==0:0)a[z>>0]=1;l:do if(c[s+272>>2]|0)if(!(a[s+81>>0]|0))M=196;else{q=0;break k}else{do if((e[s+276>>1]|0)>=224){r=s+300|0;q=c[r>>2]|0;if(q|0){c[r>>2]=c[q>>2];h=s+284|0;c[h>>2]=(c[h>>2]|0)+1;break l}r=s+296|0;q=c[r>>2]|0;if(!q){q=s+292|0;break}else{c[r>>2]=c[q>>2];h=s+284|0;c[h>>2]=(c[h>>2]|0)+1;break l}}else q=s+288|0;while(0);c[q>>2]=(c[q>>2]|0)+1;M=196}while(0);if((M|0)==196){M=0;q=_d(s,224,0)|0}if(!q)q=0;else{v=q+104|0;B=v+120|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(B|0));c[q>>2]=s;r=s+4|0;s=c[r>>2]|0;if(s|0)c[s+4>>2]=q;c[q+8>>2]=s;c[q+4>>2]=0;c[r>>2]=q;c[q+20>>2]=381479589;c[q+12>>2]=f;c[N>>2]=q;Di(q,61,0,1,0)|0}}while(0);r=c[y>>2]|0;r=c[((r|0)==0?f:r)+260>>2]|0;m:do if(!r)M=206;else while(1){if((c[r>>2]|0)==(w|0)?(c[r+12>>2]|0)==(x|0):0)break m;r=c[r+4>>2]|0;if(!r){M=206;break}}while(0);if((M|0)==206){M=0;r=Nm(f,w,g,x)|0;if(!r)break}if(!(c[w>>2]|0))v=0;else{v=(c[f>>2]|0)+32|0;v=bw(c[v>>2]|0,c[v+4>>2]|0,13)|0;L()|0;v=v&1^1}s=(c[A>>2]|0)+1|0;c[A>>2]=s;u=c[r+8>>2]|0;p=q+108|0;r=c[p>>2]|0;if((c[q+112>>2]|0)>(r|0)){c[p>>2]=r+1;h=c[q+104>>2]|0;a[h+(r*20|0)>>0]=45;b[h+(r*20|0)+2>>1]=0;c[h+(r*20|0)+4>>2]=F;c[h+(r*20|0)+8>>2]=O;c[h+(r*20|0)+12>>2]=s;c[h+(r*20|0)+16>>2]=0;a[h+(r*20|0)+1>>0]=0}else r=Di(q,45,F,O,s)|0;do if(!(a[(c[q>>2]|0)+81>>0]|0)){if((r|0)<0)r=(c[p>>2]|0)+-1|0;s=c[q+104>>2]|0;t=s+(r*20|0)+1|0;if(a[t>>0]|0){Ei(q,s+(r*20|0)|0,u,-4);break}if(u|0){c[s+(r*20|0)+16>>2]=u;a[t>>0]=-4}}while(0);r=c[p>>2]|0;if((r|0)>0)b[(c[q+104>>2]|0)+((r+-1|0)*20|0)+2>>1]=v}while(0);w=c[w+32>>2]|0}while((w|0)!=0)}r=c[Q+12>>2]|0;q=0-P|0;if(((c[r+56>>2]|0)+(c[r+60>>2]|0)|0)<0){mk(r,Q,q);return}else{c[(c[r+64>>2]|0)+(q<<2)>>2]=c[Q+108>>2];return}}function Jm(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=c[f+20>>2]|0;if((t|0)<=0){v=0;return v|0}q=b[e+42>>1]|0;u=q<<16>>16>0;s=e+4|0;r=e+40|0;n=(h|0)==0;o=q<<16>>16;p=q<<16>>16;q=q<<16>>16;m=0;a:while(1){l=c[f+36+(m<<3)+4>>2]|0;b:do if(u){k=(l|0)==0;if(!n){j=0;while(1){if(!((c[g+(j<<2)>>2]|0)<=-1?(j|0)!=(b[r>>1]|0):0))v=8;do if((v|0)==8){v=0;e=c[s>>2]|0;if(k)if(!(a[e+(j<<4)+15>>0]&1))break;else{e=1;v=28;break a}h=c[e+(j<<4)>>2]|0;i=a[h>>0]|0;e=(d[208+(i&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(e|0)!=0)){i=l;do{h=h+1|0;i=i+1|0;w=a[h>>0]|0;e=(d[208+(w&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(w<<24>>24==0|(e|0)!=0))}if(!e){e=1;v=28;break a}}while(0);j=j+1|0;if((j|0)>=(o|0))break b}}if(k){e=0;while(1){if((c[g+(e<<2)>>2]|0)>-1?a[(c[s>>2]|0)+(e<<4)+15>>0]&1:0){e=1;v=28;break a}e=e+1|0;if((e|0)>=(p|0))break b}}j=0;do{if((c[g+(j<<2)>>2]|0)>-1){h=c[(c[s>>2]|0)+(j<<4)>>2]|0;w=a[h>>0]|0;e=(d[208+(w&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!(w<<24>>24==0|(e|0)!=0)){i=l;do{h=h+1|0;i=i+1|0;w=a[h>>0]|0;e=(d[208+(w&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(w<<24>>24==0|(e|0)!=0))}if(!e){e=1;v=28;break a}}j=j+1|0}while((j|0)<(q|0))}while(0);m=m+1|0;if((m|0)>=(t|0)){e=0;v=28;break}}if((v|0)==28)return e|0;return 0}function Km(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=Ra;Ra=Ra+16|0;o=q;if(0==0?(c[(c[e>>2]|0)+32>>2]&16384|0)==0:0){p=0;Ra=q;return p|0}g=c[f+16>>2]|0;if(!g)g=0;else{j=g;g=0;do{i=c[j+20>>2]|0;if((i|0)>0){h=0;do{n=c[j+36+(h<<3)>>2]|0;g=((n|0)>31?-1:1<>2]|0}while((j|0)!=0)}n=c[f>>2]|0;k=c[f+72>>2]|0;l=c[k+68>>2]|0;if(!l){i=k+60|0;h=k+64|0}else{i=a[n>>0]|0;if(!(i<<24>>24))h=0;else{h=0;j=n;do{j=j+1|0;h=G(h+(d[208+(i&255)>>0]|0)|0,-1640531535)|0;i=a[j>>0]|0}while(i<<24>>24!=0)}h=(h>>>0)%((c[k+56>>2]|0)>>>0)|0;i=l+(h<<3)|0;h=l+(h<<3)+4|0}i=c[i>>2]|0;a:do if(!i)h=59292;else{m=d[208+(d[n>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;i=i+-1|0;k=c[h+12>>2]|0;l=a[k>>0]|0;j=(d[208+(l&255)>>0]|0)-m|0;if(!(l<<24>>24==0|(j|0)!=0)){l=n;do{k=k+1|0;l=l+1|0;r=a[k>>0]|0;j=(d[208+(r&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(j|0)!=0))}if(!j)break a;if(!i){h=59292;break}}}while(0);h=c[h+8>>2]|0;if(!h){r=g;Ra=q;return r|0}do{c[o>>2]=0;Om(e,f,h,o,0)|0;i=c[o>>2]|0;if((i|0)!=0?(p=b[i+50>>1]|0,p<<16>>16!=0):0){j=c[i+4>>2]|0;k=p&65535;i=0;do{r=b[j+(i<<1)>>1]|0;g=(r<<16>>16>31?-1:1<<(r<<16>>16))|g;i=i+1|0}while(i>>>0>>0)}h=c[h+12>>2]|0}while((h|0)!=0);Ra=q;return g|0}function Lm(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;_=Ra;Ra=Ra+16|0;X=_+8|0;Y=_+4|0;S=_;Z=c[f>>2]|0;R=f+146|0;V=a[R>>0]|0;W=Z+32|0;if((c[W>>2]&16384|0)==0&0==0){Ra=_;return}T=g+72|0;p=c[T>>2]|0;m=c[Z+16>>2]|0;if(!p)l=-1e6;else{l=0;while(1)if((c[m+(l<<4)+12>>2]|0)==(p|0))break;else l=l+1|0}Q=c[m+(l<<4)>>2]|0;m=c[g+16>>2]|0;do if(!m)l=g;else{x=(j|0)==0;y=V<<24>>24==0;z=g+40|0;A=(k|0)==0;B=Z+81|0;C=f+8|0;D=f+40|0;E=(h|0)==0;F=Z+312|0;H=f+116|0;I=(i|0)==0;J=h+1|0;K=f+23|0;L=(Z|0)==0;M=Z+480|0;N=Z+304|0;O=Z+308|0;P=Z+300|0;a:while(1){c[X>>2]=0;c[Y>>2]=0;b:do if(!x){p=c[g>>2]|0;n=c[m+8>>2]|0;if(p){if(n|0){U=a[p>>0]|0;o=(d[208+(U&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(U<<24>>24==0|(o|0)!=0)U=16;else{q=n;do{p=p+1|0;q=q+1|0;U=a[p>>0]|0;o=(d[208+(U&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(U<<24>>24==0|(o|0)!=0));U=16}}}else{o=((n|0)!=0)<<31>>31;U=16}if((U|0)==16?(U=0,(o|0)==0):0){U=26;break}r=c[m+20>>2]|0;if((r|0)>0){if(A){p=0;while(1){if((c[j+(c[m+36+(p<<3)>>2]<<2)>>2]|0)>-1){U=26;break b}p=p+1|0;if((p|0)>=(r|0))break b}}p=0;do{q=c[m+36+(p<<3)>>2]|0;if((c[j+(q<<2)>>2]|0)>-1){U=26;break b}p=p+1|0;if((q|0)==(b[z>>1]|0)){U=26;break b}}while((p|0)<(r|0))}}else{n=c[m+8>>2]|0;U=26}while(0);c:do if((U|0)==26){U=0;if(!(a[R>>0]|0))w=bd(f,0,n,Q)|0;else w=Sd(Z,n,Q)|0;n=(w|0)==0;if(!n?(Om(f,w,m,X,Y)|0)==0:0){n=c[Y>>2]|0;if(!n){c[S>>2]=c[m+36>>2];n=S}u=m+20|0;if((c[u>>2]|0)>0){v=w+4|0;r=c[X>>2]|0;s=w+40|0;t=r+4|0;if(!r){q=0;r=0;do{p=n+(r<<2)|0;if((c[p>>2]|0)==(b[z>>1]|0))c[p>>2]=-1;if(c[F>>2]|0)q=(Ik(f,c[w>>2]|0,c[(c[v>>2]|0)+(b[s>>1]<<4)>>2]|0,l)|0)==2&1;r=r+1|0}while((r|0)<(c[u>>2]|0));p=w}else{q=0;r=0;do{p=n+(r<<2)|0;if((c[p>>2]|0)==(b[z>>1]|0))c[p>>2]=-1;if(c[F>>2]|0)q=(Ik(f,c[w>>2]|0,c[(c[v>>2]|0)+(b[(c[t>>2]|0)+(r<<1)>>1]<<4)>>2]|0,l)|0)==2&1;r=r+1|0}while((r|0)<(c[u>>2]|0));p=w}}else{q=0;p=w}Hj(f,l,c[w+28>>2]|0,0,c[p>>2]|0);c[D>>2]=(c[D>>2]|0)+1;if(!E)Pm(f,l,w,c[X>>2]|0,m,n,h,-1,q);do if(!I){p=c[H>>2]|0;p=c[((p|0)==0?f:p)+260>>2]|0;if(p|0){p=c[p>>2]|0;if((p|0)==(c[m+28>>2]|0)?(a[m+25>>0]|0)==8:0)break;if((p|0)==(c[m+32>>2]|0)?(a[m+26>>0]|0)==8:0)break}Pm(f,l,w,c[X>>2]|0,m,n,i,1,q)}while(0);n=c[Y>>2]|0;if(!n)break;do if(!L){if(c[M>>2]|0){Xd(Z,n);break c}p=n;if((c[N>>2]|0)>>>0<=p>>>0){if((c[O>>2]|0)>>>0<=p>>>0)break;c[n>>2]=c[P>>2];c[P>>2]=n;break c}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{w=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}if(y)break a;if(a[B>>0]|0)break a;if(n){n=c[C>>2]|0;d:do if(!n){r=c[f>>2]|0;if((c[H>>2]|0)==0?(b[r+76>>1]&8)==0:0)a[K>>0]=1;e:do if(c[r+272>>2]|0)if(!(a[r+81>>0]|0))U=48;else{n=0;break d}else{do if((e[r+276>>1]|0)>=224){p=r+300|0;n=c[p>>2]|0;if(n|0){c[p>>2]=c[n>>2];w=r+284|0;c[w>>2]=(c[w>>2]|0)+1;break e}p=r+296|0;n=c[p>>2]|0;if(!n){n=r+292|0;break}else{c[p>>2]=c[n>>2];w=r+284|0;c[w>>2]=(c[w>>2]|0)+1;break e}}else n=r+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;U=48}while(0);if((U|0)==48){U=0;n=_d(r,224,0)|0}if(!n)n=0;else{p=n+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[n>>2]=r;p=r+4|0;q=c[p>>2]|0;if(q|0)c[q+4>>2]=n;c[n+8>>2]=q;c[n+4>>2]=0;c[p>>2]=n;c[n+20>>2]=381479589;c[n+12>>2]=f;c[C>>2]=n;Di(n,61,0,1,0)|0}}while(0);v=n+108|0;q=c[v>>2]|0;s=m+20|0;u=c[s>>2]|0;t=q+1+u|0;w=n+112|0;if((u|0)>0){u=n+104|0;r=0;do{p=J+(c[m+36+(r<<3)>>2]|0)|0;if((c[w>>2]|0)>(q|0)){c[v>>2]=q+1;$=c[u>>2]|0;a[$+(q*20|0)>>0]=50;b[$+(q*20|0)+2>>1]=0;c[$+(q*20|0)+4>>2]=p;c[$+(q*20|0)+8>>2]=t;c[$+(q*20|0)+12>>2]=0;c[$+(q*20|0)+16>>2]=0;a[$+(q*20|0)+1>>0]=0}else Di(n,50,p,t,0)|0;r=r+1|0;q=c[v>>2]|0}while((r|0)<(c[s>>2]|0))}p=d[m+24>>0]|0;if((c[w>>2]|0)>(q|0)){c[v>>2]=q+1;$=c[n+104>>2]|0;a[$+(q*20|0)>>0]=-106;b[$+(q*20|0)+2>>1]=0;c[$+(q*20|0)+4>>2]=p;c[$+(q*20|0)+8>>2]=-1;c[$+(q*20|0)+12>>2]=0;c[$+(q*20|0)+16>>2]=0;a[$+(q*20|0)+1>>0]=0;break}else{Di(n,150,p,-1,0)|0;break}}}while(0);m=c[m+4>>2]|0;if(!m){U=100;break}}if((U|0)==100){l=g;p=c[T>>2]|0;break}Ra=_;return}while(0);r=c[l>>2]|0;o=c[p+68>>2]|0;if(!o){m=p+60|0;l=p+64|0}else{m=a[r>>0]|0;if(!(m<<24>>24))l=0;else{l=0;n=r;do{n=n+1|0;l=G(l+(d[208+(m&255)>>0]|0)|0,-1640531535)|0;m=a[n>>0]|0}while(m<<24>>24!=0)}l=(l>>>0)%((c[p+56>>2]|0)>>>0)|0;m=o+(l<<3)|0;l=o+(l<<3)+4|0}m=c[m>>2]|0;f:do if(!m)l=59292;else{q=d[208+(d[r>>0]|0)>>0]|0;while(1){l=c[l>>2]|0;m=m+-1|0;o=c[l+12>>2]|0;$=a[o>>0]|0;n=(d[208+($&255)>>0]|0)-q|0;if(!($<<24>>24==0|(n|0)!=0)){p=r;do{o=o+1|0;p=p+1|0;$=a[o>>0]|0;n=(d[208+($&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!($<<24>>24==0|(n|0)!=0))}if(!n)break f;if(!m){l=59292;break}}}while(0);l=c[l+8>>2]|0;if(!l){Ra=_;return}B=(j|0)!=0;C=f+116|0;p=V<<24>>24==0;q=f+20|0;r=f+40|0;s=(i|0)==0;t=Z+81|0;u=(Z|0)==0;v=(h|0)==0;w=Z+480|0;x=B&1;y=Z+304|0;z=Z+308|0;A=Z+300|0;g:while(1){c[X>>2]=0;c[Y>>2]=0;if(B?(Jm(g,l,j,k)|0)==0:0)U=142;else U=118;do if((U|0)==118){U=0;o=l+24|0;if((((a[o>>0]|0)==0?(c[W>>2]&524288|0)==0&0==0:0)?(c[C>>2]|0)==0:0)?(a[q>>0]|0)==0:0){U=142;break}if(Om(f,g,l,X,Y)|0){if(p){U=124;break g}if(!(a[t>>0]|0))break;else{U=145;break g}}m=pj(f,0,0,0)|0;if(m|0){$=c[l>>2]|0;c[m+24>>2]=$;n=m+16|0;c[n>>2]=c[$>>2];$=$+32|0;c[$>>2]=(c[$>>2]|0)+1;$=c[r>>2]|0;c[r>>2]=$+1;c[m+48>>2]=$;if(!s)Qm(f,m,g,c[X>>2]|0,l,c[Y>>2]|0,i,-1);if(!v?($=a[l+25+x>>0]|0,Qm(f,m,g,c[X>>2]|0,l,c[Y>>2]|0,h,1),($|2)<<24>>24!=10&(a[o>>0]|0)==0):0){$=c[C>>2]|0;a[(($|0)==0?f:$)+21>>0]=1}c[n>>2]=0;qi(Z,m)}m=c[Y>>2]|0;if(m){if(!u){if(c[w>>2]|0){Xd(Z,m);U=142;break}$=m;if((c[y>>2]|0)>>>0<=$>>>0?(c[z>>2]|0)>>>0>$>>>0:0){c[m>>2]=c[A>>2];c[A>>2]=m;U=142;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);U=142;break}else{U=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-U;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);U=142;break}}else U=142}while(0);l=c[l+12>>2]|0;if(!l){U=145;break}}if((U|0)==124){Ra=_;return}else if((U|0)==145){Ra=_;return}}function Mm(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=Ra;Ra=Ra+16|0;w=z;x=f+8|0;y=c[x>>2]|0;n=c[g+8>>2]|0;a:do if(!(c[g+36>>2]&32))g=0;else{if(!n){Ra=z;return}g=n;while(1){v=g+55|0;if(((d[v>>0]|d[v+1>>0]<<8)&3)==2)break a;g=c[g+20>>2]|0;if(!g){g=0;break}}}while(0);if(!n){Ra=z;return}t=y+108|0;u=y+112|0;v=y+104|0;if(!j){l=-1;m=0;p=n;q=0;while(1){do if((p|0)!=(g|0)?(r=q+i|0,(r|0)!=(k|0)):0){l=el(f,p,h,0,1,w,m,l)|0;m=p+55|0;m=e[(((d[m>>0]|d[m+1>>0]<<8)&8)==0?p+52|0:p+50|0)>>1]|0;n=c[t>>2]|0;if((c[u>>2]|0)>(n|0)){c[t>>2]=n+1;s=c[v>>2]|0;a[s+(n*20|0)>>0]=-123;b[s+(n*20|0)+2>>1]=0;c[s+(n*20|0)+4>>2]=r;c[s+(n*20|0)+8>>2]=l;c[s+(n*20|0)+12>>2]=m;c[s+(n*20|0)+16>>2]=0;a[s+(n*20|0)+1>>0]=0}else Di(y,133,r,l,m)|0;m=c[w>>2]|0;if(m){n=c[x>>2]|0;o=c[n+12>>2]|0;m=~m;if(((c[o+56>>2]|0)+(c[o+60>>2]|0)|0)<0){mk(o,n,m);m=p;break}else{c[(c[o+64>>2]|0)+(m<<2)>>2]=c[n+108>>2];m=p;break}}else m=p}while(0);p=c[p+20>>2]|0;if(!p)break;else q=q+1|0}Ra=z;return}else{l=-1;m=0;p=n;q=0;while(1){do if(!((p|0)==(g|0)?1:(c[j+(q<<2)>>2]|0)==0)?(s=q+i|0,(s|0)!=(k|0)):0){l=el(f,p,h,0,1,w,m,l)|0;m=p+55|0;m=e[(((d[m>>0]|d[m+1>>0]<<8)&8)==0?p+52|0:p+50|0)>>1]|0;n=c[t>>2]|0;if((c[u>>2]|0)>(n|0)){c[t>>2]=n+1;r=c[v>>2]|0;a[r+(n*20|0)>>0]=-123;b[r+(n*20|0)+2>>1]=0;c[r+(n*20|0)+4>>2]=s;c[r+(n*20|0)+8>>2]=l;c[r+(n*20|0)+12>>2]=m;c[r+(n*20|0)+16>>2]=0;a[r+(n*20|0)+1>>0]=0}else Di(y,133,s,l,m)|0;m=c[w>>2]|0;if(m){n=c[x>>2]|0;o=c[n+12>>2]|0;m=~m;if(((c[o+56>>2]|0)+(c[o+60>>2]|0)|0)<0){mk(o,n,m);m=p;break}else{c[(c[o+64>>2]|0)+(m<<2)>>2]=c[n+108>>2];m=p;break}}else m=p}while(0);p=c[p+20>>2]|0;if(!p)break;else q=q+1|0}Ra=z;return}}function Nm(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;$=Ra;Ra=Ra+96|0;X=$+16|0;q=$+8|0;p=$;W=$+56|0;r=$+24|0;Y=c[f+116>>2]|0;Y=(Y|0)==0?f:Y;_=c[f>>2]|0;m=(_|0)==0;a:do if(m){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](24)|0;P=24;break}j=Wa[c[29356>>2]&127](24)|0;if((c[14985]|0)>>>0<24)c[14985]=24;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){Z=c[14978]|0;U=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;T=L()|0;c[14768]=((T|0)<0|(T|0)==0&U>>>0<=Z>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k){_=0;Ra=$;return _|0}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;Z=k}else Z=k}else{if(c[_+272>>2]|0){if(a[_+81>>0]|0){_=0;Ra=$;return _|0}}else{do if((e[_+276>>1]|0)>=24){k=_+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=24;break a}k=_+296|0;j=c[k>>2]|0;if(!j){j=_+292|0;break}else{c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=24;break a}}else j=_+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(_,24,0)|0;P=24}while(0);if((P|0)==24)if(!j){_=0;Ra=$;return _|0}else Z=j;l=Z;n=l+24|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(n|0));U=Y+260|0;c[Z+4>>2]=c[U>>2];c[U>>2]=Z;b:do if(m){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](28)|0;P=48;break}j=Wa[c[29356>>2]&127](28)|0;if((c[14985]|0)>>>0<28)c[14985]=28;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){U=c[14978]|0;T=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;S=L()|0;c[14768]=((S|0)<0|(S|0)==0&T>>>0<=U>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(k){j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;Q=k}else Q=k}else P=49}else{if(c[_+272>>2]|0){if(a[_+81>>0]|0){P=49;break}}else{do if((e[_+276>>1]|0)>=28){k=_+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=48;break b}k=_+296|0;j=c[k>>2]|0;if(!j){j=_+292|0;break}else{c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=48;break b}}else j=_+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(_,28,0)|0;P=48}while(0);if((P|0)==48)if(!j)P=49;else Q=j;if((P|0)==49){c[Z+8>>2]=0;_=0;Ra=$;return _|0}l=Q;n=l+24|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(n|0));c[Z+8>>2]=Q;R=(c[Y+8>>2]|0)+212|0;c[Q+24>>2]=c[R>>2];c[R>>2]=Q;c[Z>>2]=g;c[Z+12>>2]=i;R=Z+16|0;c[R>>2]=-1;S=Z+20|0;c[S>>2]=-1;c:do if(m){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](276)|0;P=73;break}j=Wa[c[29356>>2]&127](276)|0;if((c[14985]|0)>>>0<276)c[14985]=276;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){U=c[14978]|0;T=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;O=L()|0;c[14768]=((O|0)<0|(O|0)==0&T>>>0<=U>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k){_=0;Ra=$;return _|0}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;U=k}else U=k}else{if(c[_+272>>2]|0){if(a[_+81>>0]|0){_=0;Ra=$;return _|0}}else{do if((e[_+276>>1]|0)>=276){k=_+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=73;break c}k=_+296|0;j=c[k>>2]|0;if(!j){j=_+292|0;break}else{c[k>>2]=c[j>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=73;break c}}else j=_+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(_,276,0)|0;P=73}while(0);if((P|0)==73)if(!j){_=0;Ra=$;return _|0}else U=j;O=U+4|0;gw(O|0,0,272)|0;k=r+4|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[r>>2]=U;c[U>>2]=_;c[U+120>>2]=h;c[U+116>>2]=Y;k=c[g>>2]|0;c[U+240>>2]=k;a[U+144>>0]=a[g+8>>0]|0;c[U+132>>2]=c[f+132>>2];a[U+25>>0]=a[f+25>>0]|0;o=U+8|0;j=c[o>>2]|0;T=U;d:do if(!j){e:do if(c[_+272>>2]|0)if(!(a[_+81>>0]|0))P=86;else k=_;else{do if((e[_+276>>1]|0)>=224){j=_+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=87;break e}j=_+296|0;k=c[j>>2]|0;if(!k){j=_+292|0;break}else{c[j>>2]=c[k>>2];P=_+284|0;c[P>>2]=(c[P>>2]|0)+1;P=87;break e}}else j=_+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;P=86}while(0);if((P|0)==86){k=_d(_,224,0)|0;P=87}do if((P|0)==87){if(k|0){l=k+104|0;n=l+120|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(n|0));c[k>>2]=_;j=_+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=U;c[o>>2]=k;Di(k,61,0,1,0)|0;N=k;j=c[g>>2]|0;P=91;break d}j=c[U>>2]|0;k=c[U+64>>2]|0;if(k){if(j|0){if(c[j+480>>2]|0){Xd(j,k);k=j;break}Y=k;if((c[j+304>>2]|0)>>>0<=Y>>>0?(c[j+308>>2]|0)>>>0>Y>>>0:0){Y=j+300|0;c[k>>2]=c[Y>>2];c[Y>>2]=k;k=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);k=j;break}else{Y=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);k=j;break}}else k=j}while(0);j=c[U+68>>2]|0;if(j|0)ri(k,j);j=U+24|0;if(k){Y=k+272|0;c[Y>>2]=(c[Y>>2]|0)-(d[j>>0]|0)}}else{N=j;j=k;P=91}while(0);if((P|0)==91){do if(j|0){c[p>>2]=j;m=dd(_,44694,p)|0;j=c[N>>2]|0;if(!(a[j+81>>0]|0)){j=(c[N+108>>2]|0)+-1|0;k=c[N+104>>2]|0;l=k+(j*20|0)+1|0;if(a[l>>0]|0){Ei(N,k+(j*20|0)|0,m,-7);break}if(!m)break;c[k+(j*20|0)+16>>2]=m;a[l>>0]=-7;break}if(m|0){if(j|0){if(c[j+480>>2]|0){Xd(j,m);break}M=m;if((c[j+304>>2]|0)>>>0<=M>>>0?(c[j+308>>2]|0)>>>0>M>>>0:0){M=j+300|0;c[m>>2]=c[M>>2];c[M>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{M=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}}while(0);j=c[g+12>>2]|0;do if(!j)j=0;else{h=dk(_,j,0,0)|0;n=(h|0)==0;do if(n)P=115;else{k=r+24|0;l=e[k>>1]|0;b[k>>1]=l&28655;c[W>>2]=T;c[W+4>>2]=125;c[W+8>>2]=126;c[W+12>>2]=0;c[W+24>>2]=r;m=h+24|0;j=U+208|0;M=(c[j>>2]|0)+(c[m>>2]|0)|0;c[j>>2]=M;j=c[(c[U>>2]|0)+120>>2]|0;if((j|0)>=(M|0)){_j(W,h)|0;j=c[W>>2]|0;M=j+208|0;c[M>>2]=(c[M>>2]|0)-(c[m>>2]|0);M=b[k>>1]|0;K=h+4|0;c[K>>2]=c[K>>2]|M&-32752&65535;b[k>>1]=l&36880|M&65535;if((c[r+20>>2]|0)<=0)if((c[j+36>>2]|0)<1){P=115;break}else{j=0;break}}else{c[q>>2]=j;cd(U,41637,q)}j=0}while(0);if((P|0)==115){if(!(a[_+81>>0]|0)){M=U+56|0;j=(c[M>>2]|0)+-1|0;c[M>>2]=j;Tj(U,h,j,16)}else j=0;if(n)break}ni(_,h)}while(0);I=c[o>>2]|0;J=c[U>>2]|0;k=c[g+28>>2]|0;f:do if(k|0){K=(i|0)==11;M=U+145|0;u=i&255;v=I+108|0;w=I+112|0;x=W+4|0;y=I+104|0;z=(J|0)==0;A=J+272|0;B=J+276|0;C=J+81|0;D=J+288|0;E=J+300|0;F=J+296|0;G=J+284|0;H=J+292|0;while(1){if(K)l=d[k+1>>0]|0;else l=u;a[M>>0]=l;l=c[k+32>>2]|0;g:do if(l|0){c[X>>2]=l;h=dd(J,34793,X)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;t=c[y>>2]|0;a[t+(l*20|0)>>0]=-88;b[t+(l*20|0)+2>>1]=0;c[t+(l*20|0)+4>>2]=2147483647;c[t+(l*20|0)+8>>2]=1;c[t+(l*20|0)+12>>2]=0;c[t+(l*20|0)+16>>2]=0;a[t+(l*20|0)+1>>0]=0}else l=Di(I,168,2147483647,1,0)|0;m=c[I>>2]|0;if(!(a[m+81>>0]|0)){if((l|0)<0)l=(c[v>>2]|0)+-1|0;m=c[y>>2]|0;n=m+(l*20|0)+1|0;if(a[n>>0]|0){Ei(I,m+(l*20|0)|0,h,-7);break}if(!h)break;c[m+(l*20|0)+16>>2]=h;a[n>>0]=-7;break}if(h|0){do if(m|0){if(c[m+480>>2]|0){Xd(m,h);break g}l=h;if((c[m+304>>2]|0)>>>0<=l>>>0){if((c[m+308>>2]|0)>>>0<=l>>>0)break;t=m+300|0;c[h>>2]=c[t>>2];c[t>>2]=h;break g}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{t=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}}while(0);switch(a[k>>0]|0){case 122:{p=c[U>>2]|0;q=pj(U,0,0,0)|0;if(q|0){h=c[k+12>>2]|0;h:do if(!h)l=0;else{o=(Eu(h)|0)+1|0;i:do if(!p){t=Sv(o|0,0,-1,-1)|0;s=L()|0;if(s>>>0>0|(s|0)==0&t>>>0>2147483390){l=0;break h}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](o)|0;P=171;break}l=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){t=c[14978]|0;s=Tv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&s>>>0<=t>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break h}m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){l=0;break h}}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=171;break i}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=171;break i}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(p,o,0)|0;P=171}while(0);if((P|0)==171){P=0;if(!l){l=0;break}}ew(l|0,h|0,o|0)|0}while(0);c[q+8+(((c[q>>2]|0)+-1|0)*72|0)+8>>2]=l;m=c[(c[k+4>>2]|0)+20>>2]|0;if(!m)l=-1e6;else{n=c[p+16>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0}if((l|0)==0|(l|0)>1){n=c[(c[p+16>>2]|0)+(l<<4)>>2]|0;j:do if(!n)l=0;else{h=(Eu(n)|0)+1|0;k:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))P=188;else{l=0;break j}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];t=p+284|0;c[t>>2]=(c[t>>2]|0)+1;break k}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];t=p+284|0;c[t>>2]=(c[t>>2]|0)+1;break k}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;P=188}while(0);if((P|0)==188){P=0;l=_d(p,h,0)|0}if(!l){l=0;break}ew(l|0,n|0,h|0)|0}while(0);c[q+8+(((c[q>>2]|0)+-1|0)*72|0)+4>>2]=l}}m=gk(J,c[k+20>>2]|0,0)|0;l=c[k+16>>2]|0;if(!l)l=0;else l=dk(J,l,0,0)|0;tj(U,q,m,l,d[M>>0]|0,0);break}case 120:{p=c[U>>2]|0;t=pj(U,0,0,0)|0;if(t|0){h=c[k+12>>2]|0;l:do if(!h)l=0;else{o=(Eu(h)|0)+1|0;m:do if(!p){s=Sv(o|0,0,-1,-1)|0;i=L()|0;if(i>>>0>0|(i|0)==0&s>>>0>2147483390){l=0;break l}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](o)|0;P=221;break}l=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){s=c[14978]|0;i=Tv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;r=L()|0;c[14768]=((r|0)<0|(r|0)==0&i>>>0<=s>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break l}m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){l=0;break l}}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=221;break m}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=221;break m}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(p,o,0)|0;P=221}while(0);if((P|0)==221){P=0;if(!l){l=0;break}}ew(l|0,h|0,o|0)|0}while(0);c[t+8+(((c[t>>2]|0)+-1|0)*72|0)+8>>2]=l;m=c[(c[k+4>>2]|0)+20>>2]|0;if(!m)l=-1e6;else{n=c[p+16>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0}if((l|0)==0|(l|0)>1){n=c[(c[p+16>>2]|0)+(l<<4)>>2]|0;n:do if(!n)l=0;else{h=(Eu(n)|0)+1|0;o:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))P=238;else{l=0;break n}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];s=p+284|0;c[s>>2]=(c[s>>2]|0)+1;break o}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];s=p+284|0;c[s>>2]=(c[s>>2]|0)+1;break o}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;P=238}while(0);if((P|0)==238){P=0;l=_d(p,h,0)|0}if(!l){l=0;break}ew(l|0,n|0,h|0)|0}while(0);c[t+8+(((c[t>>2]|0)+-1|0)*72|0)+4>>2]=l}}r=fk(J,c[k+8>>2]|0,0)|0;i=jk(J,c[k+24>>2]|0)|0;s=d[M>>0]|0;m=c[k+28>>2]|0;do if(!m)l=0;else{q=gk(J,c[m>>2]|0,0)|0;l=c[m+4>>2]|0;if(!l)p=0;else p=dk(J,l,0,0)|0;o=gk(J,c[m+8>>2]|0,0)|0;l=c[m+12>>2]|0;if(!l)h=0;else h=dk(J,l,0,0)|0;p:do if(z){if(!(c[7324]|0)){V=Wa[c[29340>>2]&127](36)|0;P=268;break}l=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){aa=c[14978]|0;n=Tv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=aa>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l)break;m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0){P=277;break}c[14987]=m;P=277}else{if(c[A>>2]|0){if(a[C>>0]|0)break}else{do if((e[B>>1]|0)<36)l=D;else{l=c[E>>2]|0;if(l|0){c[E>>2]=c[l>>2];c[G>>2]=(c[G>>2]|0)+1;V=l;P=268;break p}l=c[F>>2]|0;if(!l){l=H;break}c[F>>2]=c[l>>2];c[G>>2]=(c[G>>2]|0)+1;V=l;P=268;break p}while(0);c[l>>2]=(c[l>>2]|0)+1}V=_d(J,36,0)|0;P=268}while(0);if((P|0)==268?(P=0,V|0):0){l=V;P=277}if((P|0)==277){P=0;c[l>>2]=q;c[l+4>>2]=p;c[l+8>>2]=o;c[l+12>>2]=h;c[l+16>>2]=0;break}if(q|0)ri(J,q);if(p|0)ni(J,p);if(o|0)ri(J,o);if(!h){l=0;break}ni(J,h);l=0}while(0);vj(U,t,r,i,s,l);break}case 121:{p=c[U>>2]|0;q=pj(U,0,0,0)|0;if(q|0){h=c[k+12>>2]|0;q:do if(!h)l=0;else{o=(Eu(h)|0)+1|0;r:do if(!p){aa=Sv(o|0,0,-1,-1)|0;t=L()|0;if(t>>>0>0|(t|0)==0&aa>>>0>2147483390){l=0;break q}if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](o)|0;P=305;break}l=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){aa=c[14978]|0;t=Tv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;s=L()|0;c[14768]=((s|0)<0|(s|0)==0&t>>>0<=aa>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(!l){l=0;break q}m=Wa[c[29352>>2]&127](l)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){l=0;break q}}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=305;break r}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];P=p+284|0;c[P>>2]=(c[P>>2]|0)+1;P=305;break r}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(p,o,0)|0;P=305}while(0);if((P|0)==305){P=0;if(!l){l=0;break}}ew(l|0,h|0,o|0)|0}while(0);c[q+8+(((c[q>>2]|0)+-1|0)*72|0)+8>>2]=l;m=c[(c[k+4>>2]|0)+20>>2]|0;if(!m)l=-1e6;else{n=c[p+16>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0}if((l|0)==0|(l|0)>1){n=c[(c[p+16>>2]|0)+(l<<4)>>2]|0;s:do if(!n)l=0;else{h=(Eu(n)|0)+1|0;t:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))P=322;else{l=0;break s}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){m=p+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];aa=p+284|0;c[aa>>2]=(c[aa>>2]|0)+1;break t}m=p+296|0;l=c[m>>2]|0;if(!l){l=p+292|0;break}else{c[m>>2]=c[l>>2];aa=p+284|0;c[aa>>2]=(c[aa>>2]|0)+1;break t}}else l=p+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;P=322}while(0);if((P|0)==322){P=0;l=_d(p,h,0)|0}if(!l){l=0;break}ew(l|0,n|0,h|0)|0}while(0);c[q+8+(((c[q>>2]|0)+-1|0)*72|0)+4>>2]=l}}l=c[k+16>>2]|0;if(!l)l=0;else l=dk(J,l,0,0)|0;sj(U,q,l);break}default:{l=fk(J,c[k+8>>2]|0,0)|0;a[W>>0]=4;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;kj(U,l,W)|0;if(l|0)pi(J,l,1)}}do if((a[k>>0]|0)!=-125){l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;n=c[y>>2]|0;a[n+(l*20|0)>>0]=124;l=n+(l*20|0)+1|0;n=l+19|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(n|0));break}else{Di(I,124,0,0,0)|0;break}}while(0);k=c[k+36>>2]|0;if(!k)break f}}while(0);do if(j|0){k=c[N+12>>2]|0;j=~j;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,N,j);break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[N+108>>2];break}}while(0);m=N+108|0;j=c[m>>2]|0;if((c[N+112>>2]|0)>(j|0)){c[m>>2]=j+1;l=c[N+104>>2]|0;a[l+(j*20|0)>>0]=69;l=l+(j*20|0)+1|0;n=l+19|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(n|0))}else Di(N,69,0,0,0)|0;l=f+36|0;do if(c[l>>2]|0){k=c[U>>2]|0;j=c[O>>2]|0;if(j|0){if(k|0){if(c[k+480>>2]|0){Xd(k,j);break}aa=j;if((c[k+304>>2]|0)>>>0<=aa>>>0?(c[k+308>>2]|0)>>>0>aa>>>0:0){aa=k+300|0;c[j>>2]=c[aa>>2];c[aa>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{aa=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}}else{c[f+4>>2]=c[O>>2];c[l>>2]=c[U+36>>2];c[f+12>>2]=c[U+12>>2]}while(0);if((a[_+81>>0]|0)==0?(c[l>>2]|0)==0:0){f=N+104|0;aa=c[f>>2]|0;Fi(N,Y+96|0);c[Q+4>>2]=c[m>>2];c[f>>2]=0;c[Q>>2]=aa}c[Q+8>>2]=c[U+44>>2];c[Q+12>>2]=c[U+40>>2];c[Q+20>>2]=g;c[R>>2]=c[U+136>>2];c[S>>2]=c[U+140>>2];l=c[N>>2]|0;kb(l,N);m=c[N+4>>2]|0;k=N+8|0;j=c[k>>2]|0;if(!m)c[l+4>>2]=j;else{c[m+8>>2]=j;j=c[k>>2]|0}if(j|0)c[j+4>>2]=m;c[N+20>>2]=1443283912;c[N>>2]=0;do if(l){if(c[l+480>>2]|0){Xd(l,N);break}aa=N;if((c[l+304>>2]|0)>>>0<=aa>>>0?(c[l+308>>2]|0)>>>0>aa>>>0:0){aa=l+300|0;c[N>>2]=c[aa>>2];c[aa>>2]=N}else P=370}else P=370;while(0);do if((P|0)==370)if(!(c[7324]|0)){ab[c[29344>>2]&127](N);break}else{aa=Wa[c[29352>>2]&127](N)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](N);break}while(0);l=c[U>>2]|0;j=c[U+64>>2]|0;u:do if(j|0){do if(l|0){if(c[l+480>>2]|0){Xd(l,j);break u}k=j;if((c[l+304>>2]|0)>>>0>k>>>0)break;if((c[l+308>>2]|0)>>>0<=k>>>0)break;aa=l+300|0;c[j>>2]=c[aa>>2];c[aa>>2]=j;break u}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{aa=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);j=c[U+68>>2]|0;if(j|0)ri(l,j);j=U+24|0;if(l){aa=l+272|0;c[aa>>2]=(c[aa>>2]|0)-(d[j>>0]|0)}}a[j>>0]=0;if(c[_+480>>2]|0){Xd(_,U);aa=Z;Ra=$;return aa|0}if((c[_+304>>2]|0)>>>0<=T>>>0?(c[_+308>>2]|0)>>>0>T>>>0:0){aa=_+300|0;c[U>>2]=c[aa>>2];c[aa>>2]=U;aa=Z;Ra=$;return aa|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](U);aa=Z;Ra=$;return aa|0}else{aa=Wa[c[29352>>2]&127](U)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](U);aa=Z;Ra=$;return aa|0}return 0}function Om(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=Ra;Ra=Ra+16|0;z=B;A=c[h+20>>2]|0;o=c[h+40>>2]|0;do if((A|0)==1){x=b[g+40>>1]|0;k=x<<16>>16;if(x<<16>>16>-1){if(!o){A=0;Ra=B;return A|0}l=c[(c[g+4>>2]|0)+(k<<4)>>2]|0;x=a[l>>0]|0;k=(d[208+(x&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0;if(!(x<<24>>24==0|(k|0)!=0)){m=o;do{l=l+1|0;m=m+1|0;x=a[l>>0]|0;k=(d[208+(x&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(x<<24>>24==0|(k|0)!=0))}if(!k){A=0;Ra=B;return A|0}else{x=0;w=0}}else{x=0;w=0}}else if(j){m=c[f>>2]|0;n=A<<2;a:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))y=19;else{A=1;Ra=B;return A|0}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];x=m+284|0;c[x>>2]=(c[x>>2]|0)+1;break a}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];x=m+284|0;c[x>>2]=(c[x>>2]|0)+1;break a}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;y=19}while(0);if((y|0)==19)k=_d(m,n,0)|0;if(!k){A=1;Ra=B;return A|0}else{c[j>>2]=k;x=k;w=k;break}}else{x=0;w=0}while(0);k=c[g+8>>2]|0;b:do if(k|0){u=(o|0)==0;v=(A|0)>0;s=g+4|0;t=(x|0)==0;r=k;c:while(1){do if(((A|0)==(e[r+50>>1]|0)?a[r+54>>0]|0:0)?(c[r+36>>2]|0)==0:0){if(u){q=r+55|0;if(((d[q>>0]|d[q+1>>0]<<8)&3)==2){y=29;break c}else break}d:do if(v){q=r+32|0;p=c[r+4>>2]|0;k=0;do{g=b[p+(k<<1)>>1]|0;j=g<<16>>16;if(g<<16>>16<0)break d;o=c[s>>2]|0;n=c[o+(j<<4)+8>>2]|0;n=(n|0)==0?34049:n;m=c[(c[q>>2]|0)+(k<<2)>>2]|0;g=a[m>>0]|0;l=(d[208+(g&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(!(g<<24>>24==0|(l|0)!=0))do{m=m+1|0;n=n+1|0;g=a[m>>0]|0;l=(d[208+(g&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(g<<24>>24==0|(l|0)!=0));if(l|0)break d;o=c[o+(j<<4)>>2]|0;g=d[208+(d[o>>0]|0)>>0]|0;l=0;do{n=c[h+36+(l<<3)+4>>2]|0;j=a[n>>0]|0;m=(d[208+(j&255)>>0]|0)-g|0;if(!(j<<24>>24==0|(m|0)!=0)){j=o;do{n=n+1|0;j=j+1|0;C=a[n>>0]|0;m=(d[208+(C&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(C<<24>>24==0|(m|0)!=0))}if(!m){y=45;break}l=l+1|0}while((l|0)<(A|0));if((y|0)==45){y=0;if(!t)c[x+(k<<2)>>2]=c[h+36+(l<<3)>>2]}if((l|0)==(A|0))break d;k=k+1|0}while((k|0)<(A|0))}else k=0;while(0);if((k|0)==(A|0))break c}while(0);k=c[r+20>>2]|0;if(!k)break b;else r=k}if((y|0)==29?(x|0)!=0&v:0){k=0;do{c[x+(k<<2)>>2]=c[h+36+(k<<3)>>2];k=k+1|0}while((k|0)!=(A|0))}c[i>>2]=r;C=0;Ra=B;return C|0}while(0);if(!(a[f+146>>0]|0)){C=c[h+8>>2]|0;c[z>>2]=c[c[h>>2]>>2];c[z+4>>2]=C;cd(f,44708,z)}k=c[f>>2]|0;if(!w){C=1;Ra=B;return C|0}if(k|0){if(c[k+480>>2]|0){Xd(k,w);C=1;Ra=B;return C|0}C=w;if((c[k+304>>2]|0)>>>0<=C>>>0?(c[k+308>>2]|0)>>>0>C>>>0:0){C=k+300|0;c[w>>2]=c[C>>2];c[C>>2]=w;C=1;Ra=B;return C|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](w);C=1;Ra=B;return C|0}else{C=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w);C=1;Ra=B;return C|0}return 0}function Pm(f,g,h,i,j,k,l,m,n){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;A=f+8|0;o=c[A>>2]|0;a:do if(!o){r=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[r+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[r+272>>2]|0)if(!(a[r+81>>0]|0))L=15;else{J=0;break a}else{do if((e[r+276>>1]|0)>=224){o=r+300|0;p=c[o>>2]|0;if(p|0){c[o>>2]=c[p>>2];K=r+284|0;c[K>>2]=(c[K>>2]|0)+1;break b}o=r+296|0;p=c[o>>2]|0;if(!p){o=r+292|0;break}else{c[o>>2]=c[p>>2];K=r+284|0;c[K>>2]=(c[K>>2]|0)+1;break b}}else o=r+288|0;while(0);c[o>>2]=(c[o>>2]|0)+1;L=15}while(0);if((L|0)==15)p=_d(r,224,0)|0;if(!p)J=0;else{o=p+104|0;q=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(q|0));c[p>>2]=r;o=r+4|0;q=c[o>>2]|0;if(q|0)c[q+4>>2]=p;c[p+8>>2]=q;c[p+4>>2]=0;c[o>>2]=p;c[p+20>>2]=381479589;c[p+12>>2]=f;c[A>>2]=p;Di(p,61,0,1,0)|0;J=p}}else J=o;while(0);K=(c[f+40>>2]|0)+-1|0;D=f+56|0;I=c[D>>2]|0;H=I+-1|0;c[D>>2]=H;do if((m|0)<0){o=d[j+24>>0]|0;p=J+108|0;q=c[p>>2]|0;if((c[J+112>>2]|0)>(q|0)){c[p>>2]=q+1;D=c[J+104>>2]|0;a[D+(q*20|0)>>0]=46;b[D+(q*20|0)+2>>1]=0;c[D+(q*20|0)+4>>2]=o;c[D+(q*20|0)+8>>2]=H;c[D+(q*20|0)+12>>2]=0;c[D+(q*20|0)+16>>2]=0;a[D+(q*20|0)+1>>0]=0;break}else{Di(J,46,o,H,0)|0;break}}while(0);v=j+20|0;o=c[v>>2]|0;if((o|0)>0){r=l+1|0;s=J+108|0;t=J+112|0;u=J+104|0;q=0;do{o=r+(c[k+(q<<2)>>2]|0)|0;p=c[s>>2]|0;if((c[t>>2]|0)>(p|0)){c[s>>2]=p+1;D=c[u>>2]|0;a[D+(p*20|0)>>0]=50;b[D+(p*20|0)+2>>1]=0;c[D+(p*20|0)+4>>2]=o;c[D+(p*20|0)+8>>2]=H;c[D+(p*20|0)+12>>2]=0;c[D+(p*20|0)+16>>2]=0;a[D+(p*20|0)+1>>0]=0}else Di(J,50,o,H,0)|0;q=q+1|0;o=c[v>>2]|0}while((q|0)<(o|0));D=o}else D=o;do if(!n){if(!i){u=f+19|0;o=a[u>>0]|0;if(!(o<<24>>24)){G=f+44|0;t=(c[G>>2]|0)+1|0;c[G>>2]=t}else{t=o+-1<<24>>24;a[u>>0]=t;t=c[f+148+((t&255)<<2)>>2]|0}o=l+1+(c[k>>2]|0)|0;r=J+108|0;p=c[r>>2]|0;s=J+112|0;if((c[s>>2]|0)>(p|0)){c[r>>2]=p+1;G=c[J+104>>2]|0;a[G+(p*20|0)>>0]=79;b[G+(p*20|0)+2>>1]=0;c[G+(p*20|0)+4>>2]=o;c[G+(p*20|0)+8>>2]=t;c[G+(p*20|0)+12>>2]=0;c[G+(p*20|0)+16>>2]=0;a[G+(p*20|0)+1>>0]=0}else Di(J,79,o,t,0)|0;o=c[r>>2]|0;if((c[s>>2]|0)>(o|0)){c[r>>2]=o+1;q=c[J+104>>2]|0;a[q+(o*20|0)>>0]=15;b[q+(o*20|0)+2>>1]=0;c[q+(o*20|0)+4>>2]=t;c[q+(o*20|0)+8>>2]=0;c[q+(o*20|0)+12>>2]=0;c[q+(o*20|0)+16>>2]=0;a[q+(o*20|0)+1>>0]=0;q=o}else q=Di(J,15,t,0,0)|0;if((m|0)==1?(c[j>>2]|0)==(h|0):0){o=c[r>>2]|0;if((c[s>>2]|0)>(o|0)){c[r>>2]=o+1;G=c[J+104>>2]|0;a[G+(o*20|0)>>0]=53;b[G+(o*20|0)+2>>1]=0;c[G+(o*20|0)+4>>2]=l;c[G+(o*20|0)+8>>2]=H;c[G+(o*20|0)+12>>2]=t;c[G+(o*20|0)+16>>2]=0;a[G+(o*20|0)+1>>0]=0}else Di(J,53,l,H,t)|0;o=c[r>>2]|0;if((o|0)>0)b[(c[J+104>>2]|0)+((o+-1|0)*20|0)+2>>1]=144}Gj(f,K,g,h,108);o=c[r>>2]|0;if((c[s>>2]|0)>(o|0)){c[r>>2]=o+1;l=c[J+104>>2]|0;a[l+(o*20|0)>>0]=31;b[l+(o*20|0)+2>>1]=0;c[l+(o*20|0)+4>>2]=K;c[l+(o*20|0)+8>>2]=0;c[l+(o*20|0)+12>>2]=t;c[l+(o*20|0)+16>>2]=0;a[l+(o*20|0)+1>>0]=0}else Di(J,31,K,0,t)|0;o=c[r>>2]|0;if((c[s>>2]|0)>(o|0)){c[r>>2]=o+1;l=c[J+104>>2]|0;a[l+(o*20|0)>>0]=11;b[l+(o*20|0)+2>>1]=0;c[l+(o*20|0)+4>>2]=0;c[l+(o*20|0)+8>>2]=H;c[l+(o*20|0)+12>>2]=0;c[l+(o*20|0)+16>>2]=0;a[l+(o*20|0)+1>>0]=0}else Di(J,11,0,H,0)|0;p=c[r>>2]|0;if(!(a[(c[J>>2]|0)+81>>0]|0)){o=c[J+104>>2]|0;c[o+((((p|0)<2?-1:-2)+p|0)*20|0)+8>>2]=p;o=o+(((q|0)<0?p+-1|0:q)*20|0)|0}else{c[14829]=p;o=59308}c[o+8>>2]=p;if(!t)break;o=a[u>>0]|0;if((o&255)>=8)break;a[u>>0]=o+1<<24>>24;c[f+148+((o&255)<<2)>>2]=t;break}C=(D|0)==1;do if(C){o=f+19|0;p=a[o>>0]|0;if(!(p<<24>>24)){z=f+44|0;B=(c[z>>2]|0)+1|0;c[z>>2]=B;break}else{B=p+-1<<24>>24;a[o>>0]=B;B=c[f+148+((B&255)<<2)>>2]|0;break}}else{o=f+32|0;p=c[o>>2]|0;q=f+28|0;r=c[q>>2]|0;if((r|0)<(D|0)){z=f+44|0;B=c[z>>2]|0;c[z>>2]=B+D;B=B+1|0;break}else{c[o>>2]=p+D;c[q>>2]=r-D;B=p;break}}while(0);z=f+19|0;o=a[z>>0]|0;if(!(o<<24>>24)){x=f+44|0;y=(c[x>>2]|0)+1|0;c[x>>2]=y}else{y=o+-1<<24>>24;a[z>>0]=y;y=c[f+148+((y&255)<<2)>>2]|0}o=c[i+44>>2]|0;w=J+108|0;p=c[w>>2]|0;x=J+112|0;if((c[x>>2]|0)>(p|0)){c[w>>2]=p+1;n=c[J+104>>2]|0;a[n+(p*20|0)>>0]=108;b[n+(p*20|0)+2>>1]=0;c[n+(p*20|0)+4>>2]=K;c[n+(p*20|0)+8>>2]=o;c[n+(p*20|0)+12>>2]=g;c[n+(p*20|0)+16>>2]=0;a[n+(p*20|0)+1>>0]=0}else Di(J,108,K,o,g)|0;o=c[A>>2]|0;q=Ij(f,i)|0;do if(q|0){p=c[o>>2]|0;if(!(a[p+81>>0]|0)){A=c[o+104>>2]|0;g=(c[o+108>>2]|0)+-1|0;a[A+(g*20|0)+1>>0]=-9;c[A+(g*20|0)+16>>2]=q;break}if((c[p+480>>2]|0)==0?(g=(c[q>>2]|0)+-1|0,c[q>>2]=g,(g|0)==0):0){o=c[q+12>>2]|0;if(o|0){if(c[o+480>>2]|0){Xd(o,q);break}g=q;if((c[o+304>>2]|0)>>>0<=g>>>0?(c[o+308>>2]|0)>>>0>g>>>0:0){g=o+300|0;c[q>>2]=c[g>>2];c[g>>2]=q;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{g=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}}while(0);u=(D|0)>0;if(u){p=l+1|0;q=J+104|0;o=0;do{r=p+(c[k+(o<<2)>>2]|0)|0;s=o+B|0;t=c[w>>2]|0;if((c[x>>2]|0)>(t|0)){c[w>>2]=t+1;g=c[q>>2]|0;a[g+(t*20|0)>>0]=78;b[g+(t*20|0)+2>>1]=0;c[g+(t*20|0)+4>>2]=r;c[g+(t*20|0)+8>>2]=s;c[g+(t*20|0)+12>>2]=0;c[g+(t*20|0)+16>>2]=0;a[g+(t*20|0)+1>>0]=0}else Di(J,78,r,s,0)|0;o=o+1|0}while((o|0)!=(D|0))}do if((m|0)==1?(c[j>>2]|0)==(h|0):0){o=c[w>>2]|0;n=D+1+o|0;if(u){u=l+1|0;v=i+4|0;s=h+40|0;t=J+104|0;r=0;do{p=u+(c[k+(r<<2)>>2]|0)|0;q=b[(c[v>>2]|0)+(r<<1)>>1]|0;q=(q<<16>>16==(b[s>>1]|0)?0:(q<<16>>16)+1|0)+l|0;if((c[x>>2]|0)>(o|0)){c[w>>2]=o+1;h=c[t>>2]|0;a[h+(o*20|0)>>0]=52;b[h+(o*20|0)+2>>1]=0;c[h+(o*20|0)+4>>2]=p;c[h+(o*20|0)+8>>2]=n;c[h+(o*20|0)+12>>2]=q;c[h+(o*20|0)+16>>2]=0;a[h+(o*20|0)+1>>0]=0}else Di(J,52,p,n,q)|0;o=c[w>>2]|0;if((o|0)>0)b[(c[t>>2]|0)+((o+-1|0)*20|0)+2>>1]=16;r=r+1|0}while((r|0)!=(D|0))}if((c[x>>2]|0)>(o|0)){c[w>>2]=o+1;l=c[J+104>>2]|0;a[l+(o*20|0)>>0]=11;b[l+(o*20|0)+2>>1]=0;c[l+(o*20|0)+4>>2]=0;c[l+(o*20|0)+8>>2]=H;c[l+(o*20|0)+12>>2]=0;c[l+(o*20|0)+16>>2]=0;a[l+(o*20|0)+1>>0]=0;break}else{Di(J,11,0,H,0)|0;break}}while(0);r=gl(c[f>>2]|0,i)|0;o=c[w>>2]|0;if((c[x>>2]|0)>(o|0)){c[w>>2]=o+1;l=c[J+104>>2]|0;a[l+(o*20|0)>>0]=92;b[l+(o*20|0)+2>>1]=0;c[l+(o*20|0)+4>>2]=B;c[l+(o*20|0)+8>>2]=D;c[l+(o*20|0)+12>>2]=y;c[l+(o*20|0)+16>>2]=0;a[l+(o*20|0)+1>>0]=0}else o=Di(J,92,B,D,y)|0;p=c[J>>2]|0;do if(a[p+81>>0]|0){if((D|0)!=-12)kg(p,D,r)}else{if((o|0)<0)o=(c[w>>2]|0)+-1|0;p=c[J+104>>2]|0;q=p+(o*20|0)|0;if((D|0)<=-1?(E=p+(o*20|0)+1|0,(a[E>>0]|0)==0):0){if((D|0)==-3){c[p+(o*20|0)+16>>2]=r;a[E>>0]=-3;break}if(!r)break;c[p+(o*20|0)+16>>2]=r;a[E>>0]=D;if((D|0)!=-12)break;l=r+12|0;c[l>>2]=(c[l>>2]|0)+1;break}Ei(J,q,r,D)}while(0);o=c[w>>2]|0;if((c[x>>2]|0)>(o|0)){c[w>>2]=o+1;l=c[J+104>>2]|0;a[l+(o*20|0)>>0]=29;b[l+(o*20|0)+2>>1]=0;c[l+(o*20|0)+4>>2]=K;c[l+(o*20|0)+8>>2]=H;c[l+(o*20|0)+12>>2]=y;c[l+(o*20|0)+16>>2]=0;a[l+(o*20|0)+1>>0]=0}else o=Di(J,29,K,H,y)|0;if(!(a[(c[J>>2]|0)+81>>0]|0)){H=c[J+104>>2]|0;a[H+(o*20|0)+1>>0]=-3;c[H+(o*20|0)+16>>2]=0}if(y|0?(F=a[z>>0]|0,(F&255)<8):0){a[z>>0]=F+1<<24>>24;c[f+148+((F&255)<<2)>>2]=y}if(!C){o=f+28|0;if((c[o>>2]|0)>=(D|0))break;c[o>>2]=D;c[f+32>>2]=B;break}if(B|0?(G=a[z>>0]|0,(G&255)<8):0){a[z>>0]=G+1<<24>>24;c[f+148+((G&255)<<2)>>2]=B}}while(0);o=a[j+24>>0]|0;p=o<<24>>24==0;do if(p){if(((0==0?(c[(c[f>>2]|0)+32>>2]&524288|0)==0:0)?(c[f+116>>2]|0)==0:0)?(a[f+20>>0]|0)==0:0){Uj(f,787,2,0,-1,4);break}if(!((m|0)<1|p^1)){L=c[f+116>>2]|0;a[((L|0)==0?f:L)+21>>0]=1;L=141}else L=141}else L=141;while(0);do if((L|0)==141){o=o&255;p=J+108|0;q=c[p>>2]|0;if((c[J+112>>2]|0)>(q|0)){c[p>>2]=q+1;f=c[J+104>>2]|0;a[f+(q*20|0)>>0]=-106;b[f+(q*20|0)+2>>1]=0;c[f+(q*20|0)+4>>2]=o;c[f+(q*20|0)+8>>2]=m;c[f+(q*20|0)+12>>2]=0;c[f+(q*20|0)+16>>2]=0;a[f+(q*20|0)+1>>0]=0;break}else{Di(J,150,o,m,0)|0;break}}while(0);p=c[J+12>>2]|0;o=0-I|0;if(((c[p+56>>2]|0)+(c[p+60>>2]|0)|0)<0){mk(p,J,o);o=J+108|0}else{m=J+108|0;c[(c[p+64>>2]|0)+(o<<2)>>2]=c[m>>2];o=m}p=c[o>>2]|0;if((c[J+112>>2]|0)>(p|0)){c[o>>2]=p+1;m=c[J+104>>2]|0;a[m+(p*20|0)>>0]=117;b[m+(p*20|0)+2>>1]=0;c[m+(p*20|0)+4>>2]=K;c[m+(p*20|0)+8>>2]=0;c[m+(p*20|0)+12>>2]=0;c[m+(p*20|0)+16>>2]=0;a[m+(p*20|0)+1>>0]=0;return}else{Di(J,117,K,0,0)|0;return}}function Qm(f,g,h,i,j,k,l,m){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=Ra;Ra=Ra+80|0;N=P;M=P+40|0;L=P+8|0;O=c[f>>2]|0;q=f+8|0;n=c[q>>2]|0;a:do if(!n){if((c[f+116>>2]|0)==0?(b[O+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[O+272>>2]|0)if(!(a[O+81>>0]|0))p=15;else{K=0;break a}else{do if((e[O+276>>1]|0)>=224){n=O+300|0;o=c[n>>2]|0;if(o|0){c[n>>2]=c[o>>2];K=O+284|0;c[K>>2]=(c[K>>2]|0)+1;break b}n=O+296|0;o=c[n>>2]|0;if(!o){n=O+292|0;break}else{c[n>>2]=c[o>>2];K=O+284|0;c[K>>2]=(c[K>>2]|0)+1;break b}}else n=O+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;p=15}while(0);if((p|0)==15)o=_d(O,224,0)|0;if(!o)K=0;else{n=o+104|0;p=n+120|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(p|0));c[o>>2]=O;n=O+4|0;p=c[n>>2]|0;if(p|0)c[p+4>>2]=o;c[o+8>>2]=p;c[o+4>>2]=0;c[n>>2]=o;c[o+20>>2]=381479589;c[o+12>>2]=f;c[q>>2]=o;Di(o,61,0,1,0)|0;K=o}}else K=n;while(0);do if((m|0)<0){n=d[j+24>>0]|0;o=K+108|0;p=c[o>>2]|0;if((c[K+112>>2]|0)>(p|0)){c[o>>2]=p+1;H=c[K+104>>2]|0;a[H+(p*20|0)>>0]=46;b[H+(p*20|0)+2>>1]=0;c[H+(p*20|0)+4>>2]=n;c[H+(p*20|0)+8>>2]=0;c[H+(p*20|0)+12>>2]=0;c[H+(p*20|0)+16>>2]=0;a[H+(p*20|0)+1>>0]=0;H=p;break}else{H=Di(K,46,n,0,0)|0;break}}else H=0;while(0);t=j+20|0;if((c[t>>2]|0)>0){u=(i|0)==0;v=M+4|0;w=i+4|0;x=(k|0)==0;y=j+36|0;z=M+4|0;A=h+40|0;B=h+4|0;C=l+1|0;D=M+4|0;E=M+4|0;r=0;s=0;do{if(u)o=-1;else o=b[(c[w>>2]|0)+(s<<1)>>1]|0;p=o&65535;q=c[f>>2]|0;c[M>>2]=0;c[v>>2]=0;n=oj(q,168,M,0)|0;do if(!n)n=0;else{if(p<<16>>16>-1?(b[A>>1]|0)!=p<<16>>16:0){p=c[B>>2]|0;c[n+28>>2]=C+o;a[n+1>>0]=a[p+(o<<4)+13>>0]|0;o=c[p+(o<<4)+8>>2]|0;if(o|0){c[M>>2]=o;q=(Eu(o)|0)&1073741823;c[D>>2]=q;if((q|0)!=0?(F=oj(c[f>>2]|0,106,M,0)|0,(F|0)!=0):0){c[F+12>>2]=n;n=F+4|0;c[n>>2]=c[n>>2]|4352;n=F}break}o=c[c[q+8>>2]>>2]|0;c[M>>2]=o;if(o){q=(Eu(o)|0)&1073741823;c[E>>2]=q;if((q|0)!=0?(G=oj(c[f>>2]|0,106,M,0)|0,(G|0)!=0):0){c[G+12>>2]=n;n=G+4|0;c[n>>2]=c[n>>2]|4352;n=G}}else c[E>>2]=0;break}c[n+28>>2]=l;a[n+1>>0]=68}while(0);o=c[(c[(c[j>>2]|0)+4>>2]|0)+(c[(x?y:k+(s<<2)|0)>>2]<<16>>16<<4)>>2]|0;c[M>>2]=o;if(!o)o=0;else o=(Eu(o)|0)&1073741823;c[z>>2]=o;r=Xk(O,r,ej(f,53,n,oj(O,59,M,0)|0)|0)|0;s=s+1|0}while((s|0)<(c[t>>2]|0));n=j}else{r=0;n=j}if((m|0)>0?(c[n>>2]|0)==(h|0):0){if(!(c[h+36>>2]&32)){n=c[f>>2]|0;c[M>>2]=0;c[M+4>>2]=0;n=oj(n,168,M,0)|0;if(!n)n=0;else{c[n+28>>2]=l;a[n+1>>0]=68}o=c[g+48>>2]|0;c[M>>2]=0;c[M+4>>2]=0;p=oj(O,162,M,0)|0;if(p|0){c[p+44>>2]=h;c[p+28>>2]=o;b[p+32>>1]=-1}n=ej(f,52,n,p)|0}else{C=i+50|0;if(!(b[C>>1]|0))n=0;else{y=i+4|0;z=M+4|0;A=h+4|0;B=M+4|0;u=h+40|0;v=l+1|0;w=M+4|0;x=M+4|0;n=0;t=0;do{p=b[(c[y>>2]|0)+(t<<1)>>1]|0;q=c[f>>2]|0;c[M>>2]=0;c[z>>2]=0;o=oj(q,168,M,0)|0;s=p<<16>>16;do if(!o)p=0;else{if(p<<16>>16>-1?(b[u>>1]|0)!=p<<16>>16:0){p=c[A>>2]|0;c[o+28>>2]=v+s;a[o+1>>0]=a[p+(s<<4)+13>>0]|0;p=c[p+(s<<4)+8>>2]|0;if(p|0){c[M>>2]=p;h=(Eu(p)|0)&1073741823;c[w>>2]=h;if((h|0)!=0?(I=oj(c[f>>2]|0,106,M,0)|0,(I|0)!=0):0){c[I+12>>2]=o;o=I+4|0;c[o>>2]=c[o>>2]|4352;o=I}p=o;break}p=c[c[q+8>>2]>>2]|0;c[M>>2]=p;if(p){h=(Eu(p)|0)&1073741823;c[x>>2]=h;if((h|0)!=0?(J=oj(c[f>>2]|0,106,M,0)|0,(J|0)!=0):0){c[J+12>>2]=o;o=J+4|0;c[o>>2]=c[o>>2]|4352;o=J}}else c[x>>2]=0;p=o;break}c[o+28>>2]=l;a[o+1>>0]=68;p=o}while(0);o=c[(c[A>>2]|0)+(s<<4)>>2]|0;c[M>>2]=o;if(!o)o=0;else o=(Eu(o)|0)&1073741823;c[B>>2]=o;n=Xk(O,n,ej(f,45,p,oj(O,59,M,0)|0)|0)|0;t=t+1|0}while(t>>>0<(e[C>>1]|0)>>>0)}n=ej(f,19,n,0)|0}r=Xk(O,r,n)|0}s=L+8|0;c[s>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=0;c[L+4>>2]=g;c[L>>2]=f;s=(r|0)==0;do if(!s){p=L+24|0;b[p>>1]=0;c[M>>2]=f;c[M+4>>2]=125;c[M+8>>2]=126;c[M+12>>2]=0;c[M+24>>2]=L;n=r+24|0;o=f+208|0;L=(c[o>>2]|0)+(c[n>>2]|0)|0;c[o>>2]=L;o=c[(c[f>>2]|0)+120>>2]|0;if((o|0)<(L|0)){c[N>>2]=o;cd(f,41637,N);break}else{_j(M,r)|0;N=(c[M>>2]|0)+208|0;c[N>>2]=(c[N>>2]|0)-(c[n>>2]|0);N=r+4|0;c[N>>2]=c[N>>2]|b[p>>1]&-32752&65535;break}}while(0);if(!(c[f+36>>2]|0)){q=ql(f,g,r,0,0,0,0)|0;n=d[j+24>>0]|0;o=K+108|0;p=c[o>>2]|0;if((c[K+112>>2]|0)>(p|0)){c[o>>2]=p+1;j=c[K+104>>2]|0;a[j+(p*20|0)>>0]=-106;b[j+(p*20|0)+2>>1]=0;c[j+(p*20|0)+4>>2]=n;c[j+(p*20|0)+8>>2]=m;c[j+(p*20|0)+12>>2]=0;c[j+(p*20|0)+16>>2]=0;a[j+(p*20|0)+1>>0]=0}else Di(K,150,n,m,0)|0;if(q|0)sl(q)}if(!s)ni(O,r);if(!H){Ra=P;return}o=c[K+108>>2]|0;if(!(a[(c[K>>2]|0)+81>>0]|0))n=(c[K+104>>2]|0)+(((H|0)<0?o+-1|0:H)*20|0)|0;else n=59308;c[n+8>>2]=o;Ra=P;return}function Rm(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;aa=Ra;Ra=Ra+48|0;V=aa+16|0;Q=aa+36|0;T=aa+32|0;W=aa+8|0;R=aa;S=aa+24|0;$=c[f>>2]|0;_=(i|0)!=0;i=_&1;Y=a[h+25+i>>0]|0;U=Y<<24>>24==7;if(U?!(0==0?(c[$+32>>2]&524288|0)==0:0):0){$=0;Ra=aa;return $|0}Z=h+28+(i<<2)|0;i=c[Z>>2]|0;if(Y<<24>>24==0|(i|0)!=0){$=i;Ra=aa;return $|0}c[Q>>2]=0;c[T>>2]=0;a:do if(!(Om(f,g,h,Q,T)|0)){u=h+20|0;if((c[u>>2]|0)>0){w=29616;v=c[w>>2]|0;w=c[w+4>>2]|0;y=29624;x=c[y>>2]|0;y=c[y+4>>2]|0;z=h+36|0;A=g+4|0;B=g+40|0;C=S+4|0;D=R+4|0;P=Y<<24>>24!=7&(_|Y<<24>>24!=10);E=$+272|0;F=$+276|0;G=$+81|0;H=$+288|0;I=$+300|0;J=f+200|0;K=$+296|0;M=$+284|0;N=$+292|0;O=f+272|0;s=0;t=0;m=0;j=0;while(1){k=V;c[k>>2]=v;c[k+4>>2]=w;k=W;c[k>>2]=x;c[k+4>>2]=y;k=c[T>>2]|0;k=c[((k|0)==0?z:k+(t<<2)|0)>>2]|0;i=c[Q>>2]|0;if(!i)i=B;else i=(c[i+4>>2]|0)+(t<<1)|0;i=c[(c[A>>2]|0)+(b[i>>1]<<4)>>2]|0;c[S>>2]=i;if(!i)i=0;else i=(Eu(i)|0)&1073741823;c[C>>2]=i;i=c[(c[(c[h>>2]|0)+4>>2]|0)+(k<<4)>>2]|0;c[R>>2]=i;if(!i)i=0;else i=(Eu(i)|0)&1073741823;c[D>>2]=i;r=oj($,59,V,0)|0;r=ej(f,134,r,oj($,59,S,0)|0)|0;j=Xk($,j,ej(f,53,r,oj($,59,R,0)|0)|0)|0;if(_){q=oj($,59,V,0)|0;q=ej(f,134,q,oj($,59,S,0)|0)|0;r=oj($,59,W,0)|0;s=Xk($,s,ej(f,45,q,ej(f,134,r,oj($,59,S,0)|0)|0)|0)|0}b:do if(P){c:do switch(Y<<24>>24){case 10:{i=ej(f,134,oj($,59,W,0)|0,oj($,59,S,0)|0)|0;break}case 9:{i=c[(c[(c[h>>2]|0)+4>>2]|0)+(k<<4)+4>>2]|0;if(i|0){i=dk($,i,0,0)|0;break c}d:do if(c[E>>2]|0)if(!(a[G>>0]|0))X=28;else{i=0;break c}else{do if((e[F>>1]|0)<52)i=H;else{i=c[I>>2]|0;if(i|0){c[I>>2]=c[i>>2];c[M>>2]=(c[M>>2]|0)+1;break d}i=c[K>>2]|0;if(!i){i=N;break}c[K>>2]=c[i>>2];c[M>>2]=(c[M>>2]|0)+1;break d}while(0);c[i>>2]=(c[i>>2]|0)+1;X=28}while(0);if((X|0)==28){X=0;i=_d($,52,0)|0}if(i){k=i;l=k+52|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));a[i>>0]=114;b[i+34>>1]=-1;c[i+24>>2]=1}break}default:{do if(c[E>>2]|0)if(!(a[G>>0]|0))X=39;else{i=0;break c}else{if((e[F>>1]|0)>=52){i=c[I>>2]|0;if(i|0){c[I>>2]=c[i>>2];c[M>>2]=(c[M>>2]|0)+1;break}i=c[K>>2]|0;if(!i)i=N;else{c[K>>2]=c[i>>2];c[M>>2]=(c[M>>2]|0)+1;break}}else i=H;c[i>>2]=(c[i>>2]|0)+1;X=39}while(0);if((X|0)==39){X=0;i=_d($,52,0)|0}if(i){k=i;l=k+52|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));a[i>>0]=114;b[i+34>>1]=-1;c[i+24>>2]=1}}}while(0);r=nj(c[f>>2]|0,m,i)|0;if(r){q=(c[r>>2]|0)+-1|0;l=c[f>>2]|0;o=c[R>>2]|0;p=c[D>>2]|0;e:do if(o){m=Sv(p|0,0,1,0)|0;n=L()|0;f:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))X=54;else{m=0;break e}else{do if(0<0|(0==0?p>>>0<(e[l+276>>1]|0)>>>0:0)){k=l+300|0;i=c[k>>2]|0;if(i|0){c[k>>2]=c[i>>2];n=l+284|0;c[n>>2]=(c[n>>2]|0)+1;break f}k=l+296|0;i=c[k>>2]|0;if(!i){i=l+292|0;break}else{c[k>>2]=c[i>>2];n=l+284|0;c[n>>2]=(c[n>>2]|0)+1;break f}}else i=l+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;X=54}while(0);if((X|0)==54){X=0;i=_d(l,m,n)|0}if(i){ew(i|0,o|0,p|0)|0;a[i+p>>0]=0;m=i}else m=0}else m=0;while(0);c[r+4+(q*20|0)+4>>2]=m;if((d[J>>0]|0)>1){l=c[f>>2]|0;g:do if(!l){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](16)|0;X=81;break}i=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){q=c[14978]|0;p=Tv(k|0,l|0,i|0,((i|0)<0)<<31>>31|0)|0;o=L()|0;c[14768]=((o|0)<0|(o|0)==0&p>>>0<=q>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=r;break b}k=Wa[c[29352>>2]&127](i)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0<=(c[14987]|0)>>>0)break;c[14987]=k}else{if(c[l+272>>2]|0){if(a[l+81>>0]|0){i=r;break b}}else{do if((e[l+276>>1]|0)>=16){k=l+300|0;i=c[k>>2]|0;if(i|0){c[k>>2]=c[i>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=81;break g}k=l+296|0;i=c[k>>2]|0;if(!i){i=l+292|0;break}else{c[k>>2]=c[i>>2];X=l+284|0;c[X>>2]=(c[X>>2]|0)+1;X=81;break g}}else i=l+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(l,16,0)|0;X=81}while(0);if((X|0)==81){X=0;if(!i){i=r;break}}o=i+4|0;p=o;a[p>>0]=0;a[p+1>>0]=0;a[p+2>>0]=0;a[p+3>>0]=0;o=o+4|0;a[o>>0]=0;a[o+1>>0]=0;a[o+2>>0]=0;a[o+3>>0]=0;c[i>>2]=m;o=R;p=c[o+4>>2]|0;q=i+4|0;c[q>>2]=c[o>>2];c[q+4>>2]=p;c[i+12>>2]=c[O>>2];c[O>>2]=i;i=r}else i=r}else i=0}else i=m;while(0);t=t+1|0;if((t|0)>=(c[u>>2]|0)){t=i;break}else m=i}}else{s=0;t=0;j=0}i=c[T>>2]|0;do if(i|0){if($|0){if(c[$+480>>2]|0){Xd($,i);break}T=i;if((c[$+304>>2]|0)>>>0<=T>>>0?(c[$+308>>2]|0)>>>0>T>>>0:0){T=$+300|0;c[i>>2]=c[T>>2];c[T>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{T=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);o=c[c[h>>2]>>2]|0;if(!o)n=0;else n=(Eu(o)|0)&1073741823;if(U){c[W>>2]=o;c[W+4>>2]=n;c[V>>2]=32436;c[V+4>>2]=29;i=oj($,71,V,0)|0;if(!i)i=nj(c[f>>2]|0,0,0)|0;else{a[i+1>>0]=2;i=nj(c[f>>2]|0,0,i)|0}r=mj(f,i,pj(f,0,W,0)|0,j,0,0,0,0,0)|0;p=0}else{r=0;p=j}q=$+272|0;i=(c[q>>2]|0)+1|0;c[q>>2]=i;m=n+81|0;h:do if(!$){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](m)|0;X=124;break}i=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){W=c[14978]|0;V=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;U=L()|0;c[14768]=((U|0)<0|(U|0)==0&V>>>0<=W>>>0)&1}j=Wa[c[29340>>2]&127](i)|0;if(j){i=Wa[c[29352>>2]&127](j)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;l=j;X=125}else{l=j;X=125}}else{m=0;k=0;i=s;l=0}}else{if(i){if(a[$+81>>0]|0){m=0;k=0;i=s;l=0;break}}else{do if(!(0<0|(0==0?(e[$+276>>1]|0)>>>0>>0:0))){j=$+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];X=$+284|0;c[X>>2]=(c[X>>2]|0)+1;X=124;break h}j=$+296|0;i=c[j>>2]|0;if(!i){i=$+292|0;break}else{c[j>>2]=c[i>>2];X=$+284|0;c[X>>2]=(c[X>>2]|0)+1;X=124;break h}}else i=$+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d($,m,0)|0;X=124}while(0);if((X|0)==124)if(!i){m=0;k=0;i=s;l=0}else{l=i;X=125}if((X|0)==125){gw(l|0,0,m|0)|0;k=l+36|0;c[l+28>>2]=k;W=l+80|0;c[l+48>>2]=W;ew(W|0,o|0,n|0)|0;if(!p)i=0;else i=dk($,p,1,0)|0;c[l+52>>2]=i;W=gk($,t,1)|0;c[l+56>>2]=W;W=fk($,r,1)|0;c[l+44>>2]=W;if(!s){m=l;i=0}else{j=ej(f,19,s,0)|0;if(!j)i=0;else i=dk($,j,1,0)|0;c[l+12>>2]=i;m=l;i=j}}c[q>>2]=(c[q>>2]|0)+-1;if(p|0)ni($,p);if(i|0)ni($,i);if(t|0)ri($,t);if(r|0)pi($,r,1);if((a[$+81>>0]|0)!=1){switch(Y<<24>>24){case 7:{i=-125;break}case 10:{if(_)X=159;else i=121;break}default:X=159}if((X|0)==159)i=122;a[k>>0]=i;c[k+4>>2]=m;$=c[g+72>>2]|0;c[m+20>>2]=$;c[m+24>>2]=$;c[Z>>2]=m;a[m+8>>0]=_?122:121;$=l;Ra=aa;return $|0}if(l|0){j=c[l+28>>2]|0;i=c[j+16>>2]|0;if(i|0)ni($,i);i=c[j+20>>2]|0;if(i|0)ri($,i);i=c[j+8>>2]|0;if(i|0)pi($,i,1);i=c[l+12>>2]|0;if(i|0)ni($,i);if(c[$+480>>2]|0){Xd($,m);break}i=l;do if((c[$+304>>2]|0)>>>0<=i>>>0){if((c[$+308>>2]|0)>>>0<=i>>>0)break;$=$+300|0;c[l>>2]=c[$>>2];c[$>>2]=l;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{$=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}}while(0);$=0;Ra=aa;return $|0} -function Sm(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;p=c[d+8>>2]|0;e=c[d+112>>2]|0;if(!e)return;r=(c[d>>2]|0)+16|0;s=d+19|0;t=d+44|0;n=p+108|0;u=p+112|0;o=p+104|0;while(1){j=c[r>>2]|0;k=e+8|0;l=c[k>>2]|0;m=c[e+12>>2]|0;f=a[s>>0]|0;if(!(f<<24>>24)){i=(c[t>>2]|0)+1|0;c[t>>2]=i}else{i=f+-1<<24>>24;a[s>>0]=i;i=c[d+148+((i&255)<<2)>>2]|0}g=m+2|0;f=c[n>>2]|0;h=f+7|0;if((c[u>>2]|0)>(f|0)){c[n>>2]=f+1;v=c[o>>2]|0;a[v+(f*20|0)>>0]=55;b[v+(f*20|0)+2>>1]=0;c[v+(f*20|0)+4>>2]=g;c[v+(f*20|0)+8>>2]=h;c[v+(f*20|0)+12>>2]=m;c[v+(f*20|0)+16>>2]=0;a[v+(f*20|0)+1>>0]=0}else Di(p,55,g,h,m)|0;Gj(d,0,c[k>>2]|0,c[(c[j+(l<<4)+12>>2]|0)+72>>2]|0,109);f=ed(p,5,18320)|0;if(!f){e=14;break}v=m+1|0;c[f+4>>2]=v;c[f+28>>2]=v;c[f+44>>2]=m+-1;c[f+52>>2]=i;c[f+68>>2]=i;c[f+72>>2]=v;b[f+62>>1]=8;if(i|0?(q=a[s>>0]|0,(q&255)<8):0){a[s>>0]=q+1<<24>>24;c[d+148+((q&255)<<2)>>2]=i}e=c[e>>2]|0;if(!e){e=14;break}}if((e|0)==14)return}function Tm(f,g,h,i,j,k,l,m,n,o,p,q,r){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0;Ja=Ra;Ra=Ra+48|0;T=Ja+16|0;S=Ja+8|0;P=Ja;Q=Ja+20|0;Ha=(l|0)!=0;U=c[f>>2]|0;Ia=f+8|0;s=c[Ia>>2]|0;a:do if(!s){if((c[f+116>>2]|0)==0?(b[U+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[U+272>>2]|0)if(!(a[U+81>>0]|0))Ca=15;else{Ga=0;break a}else{do if((e[U+276>>1]|0)>=224){s=U+300|0;t=c[s>>2]|0;if(t|0){c[s>>2]=c[t>>2];Ga=U+284|0;c[Ga>>2]=(c[Ga>>2]|0)+1;break b}s=U+296|0;t=c[s>>2]|0;if(!t){s=U+292|0;break}else{c[s>>2]=c[t>>2];Ga=U+284|0;c[Ga>>2]=(c[Ga>>2]|0)+1;break b}}else s=U+288|0;while(0);c[s>>2]=(c[s>>2]|0)+1;Ca=15}while(0);if((Ca|0)==15)t=_d(U,224,0)|0;if(!t)Ga=0;else{y=t+104|0;z=y+120|0;do{c[y>>2]=0;y=y+4|0}while((y|0)<(z|0));c[t>>2]=U;s=U+4|0;u=c[s>>2]|0;if(u|0)c[u+4>>2]=t;c[t+8>>2]=u;c[t+4>>2]=0;c[s>>2]=t;c[t+20>>2]=381479589;c[t+12>>2]=f;c[Ia>>2]=t;Di(t,61,0,1,0)|0;Ga=t}}else Ga=s;while(0);t=b[g+42>>1]|0;M=t<<16>>16;Fa=g+36|0;if(!(c[Fa>>2]&32)){Ea=0;Da=1}else{s=g+8|0;while(1){s=c[s>>2]|0;Ea=s+55|0;if(((d[Ea>>0]|d[Ea+1>>0]<<8)&3)==2)break;else s=s+20|0}Ea=s;Da=e[s+50>>1]|0}if(t<<16>>16>0){A=g+40|0;B=(q|0)==0;C=g+4|0;D=n<<24>>24==11;E=k+1|0;F=Ga+108|0;H=Ga+112|0;I=f+56|0;J=f+116|0;K=Ga+104|0;L=Ga+12|0;z=0;do{c:do if((z|0)!=(b[A>>1]|0)){if(!B?(c[q+(z<<2)>>2]|0)<0:0)break;u=c[C>>2]|0;s=a[u+(z<<4)+12>>0]|0;if(s<<24>>24){Ba=D?(s<<24>>24==11?2:s):n;s=Ba&255;if(Ba<<24>>24==5)s=(c[u+(z<<4)+4>>2]|0)==0?2:s;switch((s&255)<<24>>24){case 5:{Ca=33;break}case 2:{t=0;Ca=51;break}case 3:case 1:{t=0;break}default:{s=z+E|0;t=c[F>>2]|0;if((c[H>>2]|0)>(t|0)){c[F>>2]=t+1;Ba=c[K>>2]|0;a[Ba+(t*20|0)>>0]=50;b[Ba+(t*20|0)+2>>1]=0;c[Ba+(t*20|0)+4>>2]=s;c[Ba+(t*20|0)+8>>2]=o;c[Ba+(t*20|0)+12>>2]=0;c[Ba+(t*20|0)+16>>2]=0;a[Ba+(t*20|0)+1>>0]=0;break c}else{Di(Ga,50,s,o,0)|0;break c}}}do if((Ca|0)==33){Ca=0;t=(c[I>>2]|0)+-1|0;c[I>>2]=t;y=z+E|0;s=c[F>>2]|0;if((c[H>>2]|0)>(s|0)){c[F>>2]=s+1;Ba=c[K>>2]|0;a[Ba+(s*20|0)>>0]=51;b[Ba+(s*20|0)+2>>1]=0;c[Ba+(s*20|0)+4>>2]=y;c[Ba+(s*20|0)+8>>2]=t;c[Ba+(s*20|0)+12>>2]=0;c[Ba+(s*20|0)+16>>2]=0;a[Ba+(s*20|0)+1>>0]=0}else Di(Ga,51,y,t,0)|0;s=c[(c[C>>2]|0)+(z<<4)+4>>2]|0;do if(s){if((a[s>>0]|0)!=-88){O=Jj(f,s,y)|0;Ca=43;break}w=c[Ia>>2]|0;s=c[s+28>>2]|0;u=w+108|0;v=c[u>>2]|0;if((c[w+112>>2]|0)>(v|0)){c[u>>2]=v+1;Ba=c[w+104>>2]|0;a[Ba+(v*20|0)>>0]=78;b[Ba+(v*20|0)+2>>1]=0;c[Ba+(v*20|0)+4>>2]=s;c[Ba+(v*20|0)+8>>2]=y;c[Ba+(v*20|0)+12>>2]=0;c[Ba+(v*20|0)+16>>2]=0;a[Ba+(v*20|0)+1>>0]=0;break}else{Di(w,78,s,y,0)|0;break}}else{O=Jj(f,0,y)|0;Ca=43}while(0);do if(((Ca|0)==43?(0,(O|0)!=(y|0)):0)?(N=c[Ia>>2]|0,N|0):0){s=N+108|0;u=c[s>>2]|0;if((c[N+112>>2]|0)>(u|0)){c[s>>2]=u+1;Ca=c[N+104>>2]|0;a[Ca+(u*20|0)>>0]=79;b[Ca+(u*20|0)+2>>1]=0;c[Ca+(u*20|0)+4>>2]=O;c[Ca+(u*20|0)+8>>2]=y;c[Ca+(u*20|0)+12>>2]=0;c[Ca+(u*20|0)+16>>2]=0;a[Ca+(u*20|0)+1>>0]=0;break}else{Di(N,79,O,y,0)|0;break}}while(0);s=c[F>>2]|0;if((c[H>>2]|0)>(s|0)){c[F>>2]=s+1;Ca=c[K>>2]|0;a[Ca+(s*20|0)>>0]=51;b[Ca+(s*20|0)+2>>1]=0;c[Ca+(s*20|0)+4>>2]=y;c[Ca+(s*20|0)+8>>2]=t;c[Ca+(s*20|0)+12>>2]=0;c[Ca+(s*20|0)+16>>2]=0;a[Ca+(s*20|0)+1>>0]=0;s=2;Ca=51;break}else{Di(Ga,51,y,t,0)|0;s=2;Ca=51;break}}while(0);if((Ca|0)==51){Ca=0;u=c[J>>2]|0;a[((u|0)==0?f:u)+21>>0]=1;u=c[C>>2]|0}w=c[u+(z<<4)>>2]|0;c[P>>2]=c[g>>2];c[P+4>>2]=w;w=dd(U,40358,P)|0;u=z+E|0;v=c[F>>2]|0;if((c[H>>2]|0)>(v|0)){c[F>>2]=v+1;Ba=c[K>>2]|0;a[Ba+(v*20|0)>>0]=68;b[Ba+(v*20|0)+2>>1]=0;c[Ba+(v*20|0)+4>>2]=1299;c[Ba+(v*20|0)+8>>2]=s;c[Ba+(v*20|0)+12>>2]=u;c[Ba+(v*20|0)+16>>2]=0;a[Ba+(v*20|0)+1>>0]=0}else Di(Ga,68,1299,s,u)|0;s=c[Ga>>2]|0;do if(a[s+81>>0]|0){if(w|0){if(s|0){if(c[s+480>>2]|0){Xd(s,w);break}Ba=w;if((c[s+304>>2]|0)>>>0<=Ba>>>0?(c[s+308>>2]|0)>>>0>Ba>>>0:0){Ba=s+300|0;c[w>>2]=c[Ba>>2];c[Ba>>2]=w;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](w);break}else{Ba=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w);break}}}else{Aa=c[K>>2]|0;Ba=(c[F>>2]|0)+-1|0;a[Aa+(Ba*20|0)+1>>0]=-7;c[Aa+(Ba*20|0)+16>>2]=w}while(0);u=c[F>>2]|0;if((u|0)>0)b[(c[K>>2]|0)+((u+-1|0)*20|0)+2>>1]=1;if(t|0){v=c[L>>2]|0;s=~t;if(((c[v+56>>2]|0)+(c[v+60>>2]|0)|0)<0){mk(v,Ga,s);break}else{c[(c[v+64>>2]|0)+(s<<2)>>2]=u;break}}}}while(0);z=z+1|0}while((z|0)!=(M|0))}B=c[g+24>>2]|0;if(B|0?(0==0?(c[U+32>>2]&512|0)==0:0):0){C=f+52|0;c[C>>2]=~k;t=n<<24>>24==11?2:n&255;d:do if((c[B>>2]|0)>0){D=f+56|0;y=Q+20|0;z=Q+4|0;A=Q+24|0;E=Ga+108|0;F=Ga+112|0;H=Ga+12|0;I=Ga+104|0;if(!q){w=0;while(1){Aa=c[B+4+(w*20|0)>>2]|0;v=c[D>>2]|0;Ba=v+-1|0;c[D>>2]=Ba;tk(f,Aa,Ba,16);do if((t|0)==4){s=c[E>>2]|0;if((c[F>>2]|0)>(s|0)){c[E>>2]=s+1;t=c[I>>2]|0;a[t+(s*20|0)>>0]=11;b[t+(s*20|0)+2>>1]=0;c[t+(s*20|0)+4>>2]=0;c[t+(s*20|0)+8>>2]=o;c[t+(s*20|0)+12>>2]=0;c[t+(s*20|0)+16>>2]=0;a[t+(s*20|0)+1>>0]=0;t=4;break}else{Di(Ga,11,0,o,0)|0;t=4;break}}else{s=c[B+4+(w*20|0)+4>>2]|0;if(!s)s=c[g>>2]|0;t=(t|0)==5?2:t;Uj(f,275,t,s,0,3)}while(0);u=c[H>>2]|0;s=0-v|0;if(((c[u+56>>2]|0)+(c[u+60>>2]|0)|0)<0)mk(u,Ga,s);else c[(c[u+64>>2]|0)+(s<<2)>>2]=c[E>>2];w=w+1|0;if((w|0)>=(c[B>>2]|0))break d}}if(!(m<<24>>24)){w=0;do{s=c[B+4+(w*20|0)>>2]|0;c[Q>>2]=0;c[Q+4>>2]=0;c[Q+8>>2]=0;c[Q+12>>2]=0;c[Q+16>>2]=0;c[Q+20>>2]=0;c[z>>2]=136;c[A>>2]=q;do if((s|0)!=0?(_j(Q,s)|0,(a[y>>0]&-3)<<24>>24!=0):0){v=c[D>>2]|0;Ba=v+-1|0;c[D>>2]=Ba;tk(f,s,Ba,16);do if((t|0)==4){s=c[E>>2]|0;if((c[F>>2]|0)>(s|0)){c[E>>2]=s+1;t=c[I>>2]|0;a[t+(s*20|0)>>0]=11;b[t+(s*20|0)+2>>1]=0;c[t+(s*20|0)+4>>2]=0;c[t+(s*20|0)+8>>2]=o;c[t+(s*20|0)+12>>2]=0;c[t+(s*20|0)+16>>2]=0;a[t+(s*20|0)+1>>0]=0;t=4;break}else{Di(Ga,11,0,o,0)|0;t=4;break}}else{s=c[B+4+(w*20|0)+4>>2]|0;if(!s)s=c[g>>2]|0;t=(t|0)==5?2:t;Uj(f,275,t,s,0,3)}while(0);u=c[H>>2]|0;s=0-v|0;if(((c[u+56>>2]|0)+(c[u+60>>2]|0)|0)<0){mk(u,Ga,s);break}else{c[(c[u+64>>2]|0)+(s<<2)>>2]=c[E>>2];break}}while(0);w=w+1|0}while((w|0)<(c[B>>2]|0))}else{w=0;do{s=c[B+4+(w*20|0)>>2]|0;c[Q>>2]=0;c[Q+4>>2]=0;c[Q+8>>2]=0;c[Q+12>>2]=0;c[Q+16>>2]=0;c[Q+20>>2]=0;c[z>>2]=136;c[A>>2]=q;do if((s|0)!=0?(_j(Q,s)|0,(a[y>>0]|0)!=0):0){v=c[D>>2]|0;Ba=v+-1|0;c[D>>2]=Ba;tk(f,s,Ba,16);do if((t|0)==4){s=c[E>>2]|0;if((c[F>>2]|0)>(s|0)){c[E>>2]=s+1;t=c[I>>2]|0;a[t+(s*20|0)>>0]=11;b[t+(s*20|0)+2>>1]=0;c[t+(s*20|0)+4>>2]=0;c[t+(s*20|0)+8>>2]=o;c[t+(s*20|0)+12>>2]=0;c[t+(s*20|0)+16>>2]=0;a[t+(s*20|0)+1>>0]=0;t=4;break}else{Di(Ga,11,0,o,0)|0;t=4;break}}else{s=c[B+4+(w*20|0)+4>>2]|0;if(!s)s=c[g>>2]|0;t=(t|0)==5?2:t;Uj(f,275,t,s,0,3)}while(0);u=c[H>>2]|0;s=0-v|0;if(((c[u+56>>2]|0)+(c[u+60>>2]|0)|0)<0){mk(u,Ga,s);break}else{c[(c[u+64>>2]|0)+(s<<2)>>2]=c[E>>2];break}}while(0);w=w+1|0}while((w|0)<(c[B>>2]|0))}}while(0);c[C>>2]=0}do if(r)if(c[r>>2]|0){t=c[r+16>>2]|0;if(t){s=Ga+108|0;u=c[s>>2]|0;if((c[Ga+112>>2]|0)>(u|0)){c[s>>2]=u+1;y=c[Ga+104>>2]|0;a[y+(u*20|0)>>0]=11;y=y+(u*20|0)+1|0;z=y+19|0;do{a[y>>0]=0;y=y+1|0}while((y|0)<(z|0));Ba=t;Aa=u;break}else{Ba=t;Aa=Di(Ga,11,0,0,0)|0;break}}else{Ba=0;Aa=0}}else{n=4;r=0;Ba=0;Aa=0}else{r=0;Ba=0;Aa=0}while(0);if(m<<24>>24!=0&(Ea|0)==0){t=f+56|0;D=c[t>>2]|0;v=D+-1|0;c[t>>2]=v;t=a[g+48>>0]|0;s=n&255;t=n<<24>>24==11?(t<<24>>24==11?2:t&255):s;if((r|0)!=0?(c[r+16>>2]|0)==0:0){E=0;t=(c[r+8>>2]|0)==0?4:6}else Ca=135;do if((Ca|0)==135)if(!((t|0)!=5|(t|0)==(s|0)))if(c[g+8>>2]|0){s=Ga+108|0;t=c[s>>2]|0;if((c[Ga+112>>2]|0)>(t|0)){u=t+1|0;c[s>>2]=u;y=c[Ga+104>>2]|0;a[y+(t*20|0)>>0]=11;y=y+(t*20|0)+1|0;z=y+19|0;do{a[y>>0]=0;y=y+1|0}while((y|0)<(z|0));E=u;t=5;break}else{E=(Di(Ga,11,0,0,0)|0)+1|0;t=5;break}}else{E=0;t=5}else E=0;while(0);C=Ga+108|0;s=c[C>>2]|0;B=Ga+112|0;if(Ha){if((c[B>>2]|0)>(s|0)){c[C>>2]=s+1;za=c[Ga+104>>2]|0;a[za+(s*20|0)>>0]=53;b[za+(s*20|0)+2>>1]=0;c[za+(s*20|0)+4>>2]=k;c[za+(s*20|0)+8>>2]=v;c[za+(s*20|0)+12>>2]=l;c[za+(s*20|0)+16>>2]=0;a[za+(s*20|0)+1>>0]=0}else Di(Ga,53,k,v,l)|0;s=c[C>>2]|0;if((s|0)>0)b[(c[Ga+104>>2]|0)+((s+-1|0)*20|0)+2>>1]=144}if((c[B>>2]|0)>(s|0)){c[C>>2]=s+1;za=c[Ga+104>>2]|0;a[za+(s*20|0)>>0]=31;b[za+(s*20|0)+2>>1]=0;c[za+(s*20|0)+4>>2]=i;c[za+(s*20|0)+8>>2]=v;c[za+(s*20|0)+12>>2]=k;c[za+(s*20|0)+16>>2]=0;a[za+(s*20|0)+1>>0]=0}else Di(Ga,31,i,v,k)|0;e:do switch(t|0){case 3:case 2:case 1:{Ca=151;break}case 5:{s=c[f>>2]|0;A=c[s+32>>2]|0;do if(!((0==0?(c[U+32>>2]&8192|0)==0:0)|(A&262144|0)==0&0==0)?(R=c[(c[s+16>>2]|0)+28>>2]|0,(a[f+146>>0]|0)==0):0){z=c[g+72>>2]|0;if((z|0)!=(R|0)?(x=c[R+48>>2]|0,(x|0)!=0):0){y=g+68|0;s=0;do{w=c[x+8>>2]|0;do if((c[w+24>>2]|0)==(z|0)){u=c[w+4>>2]|0;v=c[g>>2]|0;za=a[u>>0]|0;t=(d[208+(za&255)>>0]|0)-(d[208+(d[v>>0]|0)>>0]|0)|0;if(!(za<<24>>24==0|(t|0)!=0))do{u=u+1|0;v=v+1|0;za=a[u>>0]|0;t=(d[208+(za&255)>>0]|0)-(d[208+(d[v>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(t|0)!=0));if(t|0)break;if(!s)s=c[y>>2]|0;c[w+32>>2]=s;s=w}while(0);x=c[x>>2]|0}while((x|0)!=0);if(!s)Ca=170}else Ca=170;if((Ca|0)==170){s=c[g+68>>2]|0;if(!s){Ca=176;break}}t=0;u=s;do{if((a[u+8>>0]|0)==121)t=t|d[u+9>>0];u=c[u+32>>2]|0}while((u|0)!=0);if((s|0)==0|(t|0)==0)Ca=176}else Ca=176;while(0);do if((Ca|0)==176){if(!((A&16384|0)==0&0==0)){y=c[g>>2]|0;v=c[g+72>>2]|0;w=c[v+68>>2]|0;if(!w){t=v+60|0;s=v+64|0}else{t=a[y>>0]|0;if(!(t<<24>>24))s=0;else{s=0;u=y;do{u=u+1|0;s=G(s+(d[208+(t&255)>>0]|0)|0,-1640531535)|0;t=a[u>>0]|0}while(t<<24>>24!=0)}s=(s>>>0)%((c[v+56>>2]|0)>>>0)|0;t=w+(s<<3)|0;s=w+(s<<3)+4|0}t=c[t>>2]|0;f:do if(!t)s=59292;else{x=d[208+(d[y>>0]|0)>>0]|0;while(1){s=c[s>>2]|0;t=t+-1|0;v=c[s+12>>2]|0;za=a[v>>0]|0;u=(d[208+(za&255)>>0]|0)-x|0;if(!(za<<24>>24==0|(u|0)!=0)){w=y;do{v=v+1|0;w=w+1|0;za=a[v>>0]|0;u=(d[208+(za&255)>>0]|0)-(d[208+(d[w>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(u|0)!=0))}if(!u)break f;if(!t){s=59292;break}}}while(0);if(c[s+8>>2]|0){s=0;break}if(c[g+16>>2]|0){s=0;break}}if(!(c[g+8>>2]|0)){u=1;break e}u=c[f+116>>2]|0;a[((u|0)==0?f:u)+20>>0]=1;Mm(f,g,i,j,0,-1);u=1;break e}while(0);u=c[f+116>>2]|0;a[((u|0)==0?f:u)+20>>0]=1;Im(f,g,s,i,j,k,1,0,5,1,-1);u=1;break}case 6:{za=r+8|0;Ca=r+12|0;tj(f,ik(c[f>>2]|0,c[r+20>>2]|0,0)|0,c[za>>2]|0,c[Ca>>2]|0,2,r);c[za>>2]=0;c[Ca>>2]=0;Ca=196;break}case 4:{Ca=196;break}default:{t=2;Ca=151}}while(0);do if((Ca|0)==151){s=b[g+40>>1]|0;v=c[f>>2]|0;u=c[g>>2]|0;if(s<<16>>16>-1){s=c[(c[g+4>>2]|0)+(s<<16>>16<<4)>>2]|0;c[S>>2]=u;c[S+4>>2]=s;u=1555;s=dd(v,40358,S)|0}else{c[T>>2]=u;u=2579;s=dd(v,44808,T)|0}Uj(f,u,t,s,-7,2);u=0}else if((Ca|0)==196){s=c[C>>2]|0;if((c[B>>2]|0)>(s|0)){c[C>>2]=s+1;u=c[Ga+104>>2]|0;a[u+(s*20|0)>>0]=11;b[u+(s*20|0)+2>>1]=0;c[u+(s*20|0)+4>>2]=0;c[u+(s*20|0)+8>>2]=o;c[u+(s*20|0)+12>>2]=0;c[u+(s*20|0)+16>>2]=0;a[u+(s*20|0)+1>>0]=0;u=0;break}else{Di(Ga,11,0,o,0)|0;u=0;break}}while(0);t=c[Ga+12>>2]|0;s=0-D|0;if(((c[t+56>>2]|0)+(c[t+60>>2]|0)|0)<0)mk(t,Ga,s);else c[(c[t+64>>2]|0)+(s<<2)>>2]=c[C>>2];if(!E){v=0;za=0}else{v=c[C>>2]|0;if((c[B>>2]|0)>(v|0)){c[C>>2]=v+1;y=c[Ga+104>>2]|0;a[y+(v*20|0)>>0]=11;y=y+(v*20|0)+1|0;z=y+19|0;do{a[y>>0]=0;y=y+1|0}while((y|0)<(z|0))}else v=Di(Ga,11,0,0,0)|0;t=c[C>>2]|0;if(!(a[(c[Ga>>2]|0)+81>>0]|0))s=(c[Ga+104>>2]|0)+((((E|0)<1?t:E)+-1|0)*20|0)|0;else s=59308;c[s+8>>2]=t;za=E}}else{u=0;v=0;za=0}na=g+8|0;s=c[na>>2]|0;if(s){oa=Aa+1|0;pa=Ga+108|0;qa=Ga+112|0;ra=(Ba|0)==0;sa=f+56|0;ta=Ga+104|0;ua=k+1|0;va=(Aa|0)<0;wa=g+40|0;xa=~k;ya=f+52|0;ja=m<<24>>24==0;ka=Ga+12|0;la=n<<24>>24==11;ma=r+8|0;U=U+32|0;V=g+16|0;T=f+146|0;W=(Da|0)==1;m=g+72|0;X=f+19|0;Y=f+32|0;Z=f+28|0;_=g+68|0;$=r+28|0;aa=f+44|0;ba=Ea+50|0;ca=Da&65535;da=f+116|0;ea=r+20|0;fa=r+12|0;ga=Ea+4|0;ha=Ea+32|0;ia=l+1|0;S=0;w=0;t=0;while(1){H=h+(S<<2)|0;g:do if(c[H>>2]|0){Q=(Ba|0)==(s|0);if(Q){w=c[pa>>2]|0;if((c[qa>>2]|0)>(w|0)){c[pa>>2]=w+1;y=c[ta>>2]|0;a[y+(w*20|0)>>0]=11;y=y+(w*20|0)+1|0;z=y+19|0;do{a[y>>0]=0;y=y+1|0}while((y|0)<(z|0));y=w}else y=Di(Ga,11,0,0,0)|0;x=c[pa>>2]|0;if(!(a[(c[Ga>>2]|0)+81>>0]|0))w=(c[ta>>2]|0)+((va?x+-1|0:Aa)*20|0)|0;else w=59308;c[w+8>>2]=x;q=oa}else{q=(c[sa>>2]|0)+-1|0;c[sa>>2]=q;y=w}if((ra|Q)&t<<24>>24==0){zk(Ga,g,ua);R=1}else R=t;O=S+j|0;t=s+36|0;if(c[t>>2]|0){w=c[H>>2]|0;x=c[pa>>2]|0;if((c[qa>>2]|0)>(x|0)){c[pa>>2]=x+1;P=c[ta>>2]|0;a[P+(x*20|0)>>0]=73;b[P+(x*20|0)+2>>1]=0;c[P+(x*20|0)+4>>2]=0;c[P+(x*20|0)+8>>2]=w;c[P+(x*20|0)+12>>2]=0;c[P+(x*20|0)+16>>2]=0;a[P+(x*20|0)+1>>0]=0}else Di(Ga,73,0,w,0)|0;c[ya>>2]=xa;t=c[t>>2]|0;w=c[f>>2]|0;if(!t)t=0;else t=dk(w,t,0,0)|0;if(!(a[w+81>>0]|0))Tj(f,t,q,16);if(t|0)ni(w,t);c[ya>>2]=0}t=c[H>>2]|0;P=t+1|0;N=s+52|0;if(!(b[N>>1]|0))x=0;else{E=s+4|0;F=s+40|0;D=0;do{t=b[(c[E>>2]|0)+(D<<1)>>1]|0;switch(t<<16>>16){case -2:{c[ya>>2]=xa;t=c[(c[F>>2]|0)+4+(D*20|0)>>2]|0;A=D+P|0;C=c[f>>2]|0;if(!t)B=0;else B=dk(C,t,0,0)|0;h:do if(!(a[C+81>>0]|0)){do if(B){if((a[B>>0]|0)!=-88){z=Jj(f,B,A)|0;break}t=c[Ia>>2]|0;w=c[B+28>>2]|0;x=t+108|0;z=c[x>>2]|0;if((c[t+112>>2]|0)>(z|0)){c[x>>2]=z+1;Ca=c[t+104>>2]|0;a[Ca+(z*20|0)>>0]=78;b[Ca+(z*20|0)+2>>1]=0;c[Ca+(z*20|0)+4>>2]=w;c[Ca+(z*20|0)+8>>2]=A;c[Ca+(z*20|0)+12>>2]=0;c[Ca+(z*20|0)+16>>2]=0;a[Ca+(z*20|0)+1>>0]=0;Ca=252;break h}else{Di(t,78,w,A,0)|0;Ca=252;break h}}else z=Jj(f,0,A)|0;while(0);if((z|0)==(A|0)){Ca=251;break}t=c[Ia>>2]|0;if(!t){Ca=251;break}w=t+108|0;x=c[w>>2]|0;if((c[t+112>>2]|0)>(x|0)){c[w>>2]=x+1;Ca=c[t+104>>2]|0;a[Ca+(x*20|0)>>0]=79;b[Ca+(x*20|0)+2>>1]=0;c[Ca+(x*20|0)+4>>2]=z;c[Ca+(x*20|0)+8>>2]=A;c[Ca+(x*20|0)+12>>2]=0;c[Ca+(x*20|0)+16>>2]=0;a[Ca+(x*20|0)+1>>0]=0;Ca=251;break}else{Di(t,79,z,A,0)|0;Ca=251;break}}else Ca=251;while(0);if((Ca|0)==251?(Ca=0,B|0):0)Ca=252;if((Ca|0)==252){Ca=0;ni(C,B)}c[ya>>2]=0;break}case -1:{z=k;Ca=255;break}default:{z=t<<16>>16==(b[wa>>1]|0)?k:ua+(t<<16>>16)|0;Ca=255}}do if((Ca|0)==255){Ca=0;x=((t&65535)>>>15)+79<<16>>16;t=D+P|0;w=c[pa>>2]|0;if((c[qa>>2]|0)>(w|0)){c[pa>>2]=w+1;M=c[ta>>2]|0;a[M+(w*20|0)>>0]=x;b[M+(w*20|0)+2>>1]=0;c[M+(w*20|0)+4>>2]=z;c[M+(w*20|0)+8>>2]=t;c[M+(w*20|0)+12>>2]=0;c[M+(w*20|0)+16>>2]=0;a[M+(w*20|0)+1>>0]=0;break}else{Di(Ga,x&65535,z,t,0)|0;break}}while(0);D=D+1|0;t=b[N>>1]|0}while(D>>>0<(t&65535)>>>0);x=t&65535;t=c[H>>2]|0}w=c[pa>>2]|0;if((c[qa>>2]|0)>(w|0)){c[pa>>2]=w+1;M=c[ta>>2]|0;a[M+(w*20|0)>>0]=92;b[M+(w*20|0)+2>>1]=0;c[M+(w*20|0)+4>>2]=P;c[M+(w*20|0)+8>>2]=x;c[M+(w*20|0)+12>>2]=t;c[M+(w*20|0)+16>>2]=0;a[M+(w*20|0)+1>>0]=0}else Di(Ga,92,P,x,t)|0;F=(Ea|0)==(s|0);if(ja&(Ha&F)){w=c[ka>>2]|0;t=~q;if(((c[w+56>>2]|0)+(c[w+60>>2]|0)|0)<0){mk(w,Ga,t);w=y;t=R;break}else{c[(c[w+64>>2]|0)+(t<<2)>>2]=c[pa>>2];w=y;t=R;break}}t=a[s+54>>0]|0;if(!(t<<24>>24)){w=c[ka>>2]|0;t=~q;if(((c[w+56>>2]|0)+(c[w+60>>2]|0)|0)<0){mk(w,Ga,t);w=y;t=R;break}else{c[(c[w+64>>2]|0)+(t<<2)>>2]=c[pa>>2];w=y;t=R;break}}if(Q)E=(c[ma>>2]|0)==0?4:6;else E=(la?(t<<24>>24==11?2:t):n)&255;i:do if(!S){if(!(F&(E|0)==5&(c[s+20>>2]|0)==0))break;D=c[U>>2]|0;do if(!((D&8192|0)==0&0==0)){t=c[f>>2]|0;if(0==0?(c[t+32>>2]&262144|0)==0:0)break;t=c[(c[t+16>>2]|0)+28>>2]|0;if(a[T>>0]|0)break;C=c[m>>2]|0;do if((C|0)!=(t|0)){t=c[t+48>>2]|0;if(!t){Ca=291;break}B=t;t=0;do{A=c[B+8>>2]|0;do if((c[A+24>>2]|0)==(C|0)){x=c[A+4>>2]|0;z=c[g>>2]|0;M=a[x>>0]|0;w=(d[208+(M&255)>>0]|0)-(d[208+(d[z>>0]|0)>>0]|0)|0;if(!(M<<24>>24==0|(w|0)!=0))do{x=x+1|0;z=z+1|0;M=a[x>>0]|0;w=(d[208+(M&255)>>0]|0)-(d[208+(d[z>>0]|0)>>0]|0)|0}while(!(M<<24>>24==0|(w|0)!=0));if(w|0)break;if(!t)t=c[_>>2]|0;c[A+32>>2]=t;t=A}while(0);B=c[B>>2]|0}while((B|0)!=0);if(!t)Ca=291}else Ca=291;while(0);if((Ca|0)==291){Ca=0;t=c[_>>2]|0;if(!t)break}w=0;x=t;do{if((a[x+8>>0]|0)==121)w=w|d[x+9>>0];x=c[x+32>>2]|0}while((x|0)!=0);if(!((t|0)==0|(w|0)==0))break i}while(0);if(!((D&16384|0)==0&0==0)){if(c[V>>2]|0)break;C=c[g>>2]|0;z=c[m>>2]|0;A=c[z+68>>2]|0;if(!A){w=z+60|0;t=z+64|0}else{w=a[C>>0]|0;if(!(w<<24>>24))t=0;else{t=0;x=C;do{x=x+1|0;t=G(t+(d[208+(w&255)>>0]|0)|0,-1640531535)|0;w=a[x>>0]|0}while(w<<24>>24!=0)}t=(t>>>0)%((c[z+56>>2]|0)>>>0)|0;w=A+(t<<3)|0;t=A+(t<<3)+4|0}w=c[w>>2]|0;j:do if(!w)t=59292;else{B=d[208+(d[C>>0]|0)>>0]|0;while(1){t=c[t>>2]|0;w=w+-1|0;z=c[t+12>>2]|0;M=a[z>>0]|0;x=(d[208+(M&255)>>0]|0)-B|0;if(!(M<<24>>24==0|(x|0)!=0)){A=C;do{z=z+1|0;A=A+1|0;M=a[z>>0]|0;x=(d[208+(M&255)>>0]|0)-(d[208+(d[A>>0]|0)>>0]|0)|0}while(!(M<<24>>24==0|(x|0)!=0))}if(!x)break j;if(!w){t=59292;break}}}while(0);if(c[t+8>>2]|0)break}w=c[ka>>2]|0;t=~q;if(((c[w+56>>2]|0)+(c[w+60>>2]|0)|0)<0){mk(w,Ga,t);w=y;t=R;break g}else{c[(c[w+64>>2]|0)+(t<<2)>>2]=c[pa>>2];w=y;t=R;break g}}while(0);w=e[s+50>>1]|0;t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;M=c[ta>>2]|0;a[M+(t*20|0)>>0]=27;b[M+(t*20|0)+2>>1]=0;c[M+(t*20|0)+4>>2]=O;c[M+(t*20|0)+8>>2]=q;c[M+(t*20|0)+12>>2]=P;c[M+(t*20|0)+16>>2]=0;a[M+(t*20|0)+1>>0]=0}else t=Di(Ga,27,O,q,P)|0;if(!(a[(c[Ga>>2]|0)+81>>0]|0)){M=c[ta>>2]|0;a[M+(t*20|0)+1>>0]=-3;c[M+(t*20|0)+16>>2]=w}do if(!F)if(W){t=a[X>>0]|0;if(!(t<<24>>24)){M=(c[aa>>2]|0)+1|0;c[aa>>2]=M;break}else{M=t+-1<<24>>24;a[X>>0]=M;M=c[f+148+((M&255)<<2)>>2]|0;break}}else{t=c[Y>>2]|0;w=c[Z>>2]|0;if((w|0)<(Da|0)){M=c[aa>>2]|0;c[aa>>2]=M+Da;M=M+1|0;break}else{c[Y>>2]=t+Da;c[Z>>2]=w-Da;M=t;break}}else M=P;while(0);do if(Ha|(E|0)==5){if(!(c[Fa>>2]&32)){t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;L=c[ta>>2]|0;a[L+(t*20|0)>>0]=-121;b[L+(t*20|0)+2>>1]=0;c[L+(t*20|0)+4>>2]=O;c[L+(t*20|0)+8>>2]=M;c[L+(t*20|0)+12>>2]=0;c[L+(t*20|0)+16>>2]=0;a[L+(t*20|0)+1>>0]=0}else Di(Ga,135,O,M,0)|0;if(!Ha)break;t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;L=c[ta>>2]|0;a[L+(t*20|0)>>0]=53;b[L+(t*20|0)+2>>1]=0;c[L+(t*20|0)+4>>2]=M;c[L+(t*20|0)+8>>2]=q;c[L+(t*20|0)+12>>2]=l;c[L+(t*20|0)+16>>2]=0;a[L+(t*20|0)+1>>0]=0}else Di(Ga,53,M,q,l)|0;t=c[pa>>2]|0;if((t|0)<=0)break;b[(c[ta>>2]|0)+((t+-1|0)*20|0)+2>>1]=144;break}do if(!F){if(!(b[ba>>1]|0))break;B=s+4|0;A=0;do{x=b[(c[ga>>2]|0)+(A<<1)>>1]|0;t=b[N>>1]|0;k:do if(!(t<<16>>16))t=-1;else{z=c[B>>2]|0;w=t&65535;t=0;while(1){if((b[z+(t<<1)>>1]|0)==x<<16>>16)break k;t=t+1|0;if(t>>>0>=w>>>0){t=-1;break}}}while(0);t=t<<16>>16;w=A+M|0;x=c[pa>>2]|0;if((c[qa>>2]|0)>(x|0)){c[pa>>2]=x+1;L=c[ta>>2]|0;a[L+(x*20|0)>>0]=90;b[L+(x*20|0)+2>>1]=0;c[L+(x*20|0)+4>>2]=O;c[L+(x*20|0)+8>>2]=t;c[L+(x*20|0)+12>>2]=w;c[L+(x*20|0)+16>>2]=0;a[L+(x*20|0)+1>>0]=0}else Di(Ga,90,O,t,w)|0;A=A+1|0}while(A>>>0<(e[ba>>1]|0)>>>0)}while(0);if(!Ha)break;D=s+55|0;D=((d[D>>0]|d[D+1>>0]<<8)&3)==2?P:M;t=b[ba>>1]|0;if(!(t<<16>>16))break;C=52;A=(c[pa>>2]|0)+(t&65535)|0;B=0;do{t=c[(c[ha>>2]|0)+(B<<2)>>2]|0;x=c[f>>2]|0;w=a[x+78>>0]|0;L=a[x+165>>0]|0;x=Zi(x,w,t,L&255)|0;do if(!(L<<24>>24)){if(!x){x=_i(f,w,0,t)|0;break}if(c[x+12>>2]|0)break;x=_i(f,w,x,t)|0}while(0);w=(B|0)==((e[ba>>1]|0)+-1|0);A=w?q:A;C=w?53:C;w=ia+(b[(c[ga>>2]|0)+(B<<1)>>1]|0)|0;z=B+D|0;t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;L=c[ta>>2]|0;a[L+(t*20|0)>>0]=C;b[L+(t*20|0)+2>>1]=0;c[L+(t*20|0)+4>>2]=w;c[L+(t*20|0)+8>>2]=A;c[L+(t*20|0)+12>>2]=z;c[L+(t*20|0)+16>>2]=0;a[L+(t*20|0)+1>>0]=0}else t=Di(Ga,C,w,A,z)|0;do if(!(a[(c[Ga>>2]|0)+81>>0]|0)){if((t|0)<0)t=(c[pa>>2]|0)+-1|0;w=c[ta>>2]|0;z=w+(t*20|0)+1|0;if(a[z>>0]|0){Ei(Ga,w+(t*20|0)|0,x,-2);break}if(!x)break;c[w+(t*20|0)+16>>2]=x;a[z>>0]=-2}while(0);t=c[pa>>2]|0;if((t|0)>0)b[(c[ta>>2]|0)+((t+-1|0)*20|0)+2>>1]=144;B=B+1|0}while(B>>>0<(e[ba>>1]|0)>>>0)}while(0);switch((E&255)<<24>>24){case 3:case 2:case 1:{fl(f,E,s);break}case 6:{K=c[Ia>>2]|0;L=c[f>>2]|0;J=c[$>>2]|0;do if((J|0)!=(O|0)){if(!(c[Fa>>2]&32)){t=a[X>>0]|0;if(!(t<<24>>24)){z=(c[aa>>2]|0)+1|0;c[aa>>2]=z}else{z=t+-1<<24>>24;a[X>>0]=z;z=c[f+148+((z&255)<<2)>>2]|0}w=K+108|0;t=c[w>>2]|0;x=K+112|0;if((c[x>>2]|0)>(t|0)){c[w>>2]=t+1;Ca=c[K+104>>2]|0;a[Ca+(t*20|0)>>0]=-121;b[Ca+(t*20|0)+2>>1]=0;c[Ca+(t*20|0)+4>>2]=O;c[Ca+(t*20|0)+8>>2]=z;c[Ca+(t*20|0)+12>>2]=0;c[Ca+(t*20|0)+16>>2]=0;a[Ca+(t*20|0)+1>>0]=0}else Di(K,135,O,z,0)|0;t=c[w>>2]|0;if((c[x>>2]|0)>(t|0)){c[w>>2]=t+1;Ca=c[K+104>>2]|0;a[Ca+(t*20|0)>>0]=30;b[Ca+(t*20|0)+2>>1]=0;c[Ca+(t*20|0)+4>>2]=J;c[Ca+(t*20|0)+8>>2]=0;c[Ca+(t*20|0)+12>>2]=z;c[Ca+(t*20|0)+16>>2]=0;a[Ca+(t*20|0)+1>>0]=0}else Di(K,30,J,0,z)|0;if(!z)break;t=a[X>>0]|0;if((t&255)>=8)break;a[X>>0]=t+1<<24>>24;c[f+148+((t&255)<<2)>>2]=z;break}t=c[na>>2]|0;l:do if(!t)t=0;else while(1){Ca=t+55|0;if(((d[Ca>>0]|d[Ca+1>>0]<<8)&3)==2)break l;t=c[t+20>>2]|0;if(!t){t=0;break}}while(0);Ca=b[t+50>>1]|0;I=Ca&65535;F=c[aa>>2]|0;H=F+1|0;c[aa>>2]=F+I;if(!(Ca<<16>>16)){A=K+108|0;w=K+112|0}else{D=t+4|0;A=K+108|0;w=K+112|0;E=s+4|0;F=K+104|0;C=0;do{z=b[(c[D>>2]|0)+(C<<1)>>1]|0;t=b[N>>1]|0;m:do if(!(t<<16>>16))t=-1;else{B=c[E>>2]|0;x=t&65535;t=0;while(1){if((b[B+(t<<1)>>1]|0)==z<<16>>16)break m;t=t+1|0;if(t>>>0>=x>>>0){t=-1;break}}}while(0);t=t<<16>>16;x=C+H|0;z=c[A>>2]|0;if((c[w>>2]|0)>(z|0)){c[A>>2]=z+1;Ca=c[F>>2]|0;a[Ca+(z*20|0)>>0]=90;b[Ca+(z*20|0)+2>>1]=0;c[Ca+(z*20|0)+4>>2]=O;c[Ca+(z*20|0)+8>>2]=t;c[Ca+(z*20|0)+12>>2]=x;c[Ca+(z*20|0)+16>>2]=0;a[Ca+(z*20|0)+1>>0]=0}else Di(K,90,O,t,x)|0;C=C+1|0}while((C|0)!=(I|0))}t=c[A>>2]|0;if((c[w>>2]|0)>(t|0)){c[A>>2]=t+1;z=c[K+104>>2]|0;a[z+(t*20|0)>>0]=29;b[z+(t*20|0)+2>>1]=0;c[z+(t*20|0)+4>>2]=J;c[z+(t*20|0)+8>>2]=0;c[z+(t*20|0)+12>>2]=H;c[z+(t*20|0)+16>>2]=0;a[z+(t*20|0)+1>>0]=0;z=t}else z=Di(K,29,J,0,H)|0;if(!(a[(c[K>>2]|0)+81>>0]|0)){Ca=c[K+104>>2]|0;a[Ca+(z*20|0)+1>>0]=-3;c[Ca+(z*20|0)+16>>2]=I}t=c[A>>2]|0;if((c[w>>2]|0)>(t|0)){c[A>>2]=t+1;Ca=c[K+104>>2]|0;a[Ca+(t*20|0)>>0]=69;b[Ca+(t*20|0)+2>>1]=0;c[Ca+(t*20|0)+4>>2]=11;c[Ca+(t*20|0)+8>>2]=2;c[Ca+(t*20|0)+12>>2]=0;c[Ca+(t*20|0)+16>>2]=0;a[Ca+(t*20|0)+1>>0]=0}else t=Di(K,69,11,2,0)|0;do if(!(a[(c[K>>2]|0)+81>>0]|0)){if((t|0)<0)t=(c[A>>2]|0)+-1|0;w=c[K+104>>2]|0;x=w+(t*20|0)+1|0;if(!(a[x>>0]|0)){c[w+(t*20|0)+16>>2]=39404;a[x>>0]=-1;break}else{Ei(K,w+(t*20|0)|0,39404,-1);break}}while(0);w=c[A>>2]|0;if(!(a[(c[K>>2]|0)+81>>0]|0))t=(c[K+104>>2]|0)+(((z|0)<0?w+-1|0:z)*20|0)|0;else t=59308;c[t+8>>2]=w}while(0);tj(f,ik(L,c[ea>>2]|0,0)|0,c[ma>>2]|0,c[fa>>2]|0,2,r);c[ma>>2]=0;c[fa>>2]=0;Ca=421;break}case 4:{Ca=421;break}default:{t=c[f>>2]|0;C=c[t+32>>2]|0;do if(!((c[U>>2]&8192|0)==0&0==0|(C&262144|0)==0&0==0)){t=c[(c[t+16>>2]|0)+28>>2]|0;if(a[T>>0]|0){Ca=445;break}B=c[m>>2]|0;do if((B|0)!=(t|0)){t=c[t+48>>2]|0;if(!t){Ca=439;break}A=t;t=0;do{z=c[A+8>>2]|0;do if((c[z+24>>2]|0)==(B|0)){w=c[z+4>>2]|0;x=c[g>>2]|0;N=a[w>>0]|0;u=(d[208+(N&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(N<<24>>24==0|(u|0)!=0))do{w=w+1|0;x=x+1|0;N=a[w>>0]|0;u=(d[208+(N&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(N<<24>>24==0|(u|0)!=0));if(u|0)break;if(!t)t=c[_>>2]|0;c[z+32>>2]=t;t=z}while(0);A=c[A>>2]|0}while((A|0)!=0);if(!t)Ca=439}else Ca=439;while(0);if((Ca|0)==439){t=c[_>>2]|0;if(!t){Ca=445;break}}u=0;w=t;do{if((a[w+8>>0]|0)==121)u=u|d[w+9>>0];w=c[w+32>>2]|0}while((w|0)!=0);if(!((t|0)==0|(u|0)==0))Ca=461;else Ca=445}else Ca=445;while(0);do if((Ca|0)==445){Ca=0;if((C&16384|0)==0&0==0){t=0;break}B=c[g>>2]|0;x=c[m>>2]|0;z=c[x+68>>2]|0;if(!z){u=x+60|0;t=x+64|0}else{u=a[B>>0]|0;if(!(u<<24>>24))t=0;else{t=0;w=B;do{w=w+1|0;t=G(t+(d[208+(u&255)>>0]|0)|0,-1640531535)|0;u=a[w>>0]|0}while(u<<24>>24!=0)}t=(t>>>0)%((c[x+56>>2]|0)>>>0)|0;u=z+(t<<3)|0;t=z+(t<<3)+4|0}u=c[u>>2]|0;n:do if(!u)t=59292;else{A=d[208+(d[B>>0]|0)>>0]|0;while(1){t=c[t>>2]|0;u=u+-1|0;x=c[t+12>>2]|0;N=a[x>>0]|0;w=(d[208+(N&255)>>0]|0)-A|0;if(!(N<<24>>24==0|(w|0)!=0)){z=B;do{x=x+1|0;z=z+1|0;N=a[x>>0]|0;w=(d[208+(N&255)>>0]|0)-(d[208+(d[z>>0]|0)>>0]|0)|0}while(!(N<<24>>24==0|(w|0)!=0))}if(!w)break n;if(!u){t=59292;break}}}while(0);if(c[t+8>>2]|0){t=0;Ca=461;break}if(!(c[V>>2]|0))t=0;else{t=0;Ca=461}}while(0);if((Ca|0)==461){Ca=0;N=c[da>>2]|0;a[((N|0)==0?f:N)+20>>0]=1}Im(f,g,t,i,j,M,ca,0,5,F&1,O);u=1}}do if((Ca|0)==421){Ca=0;t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;O=c[ta>>2]|0;a[O+(t*20|0)>>0]=11;b[O+(t*20|0)+2>>1]=0;c[O+(t*20|0)+4>>2]=0;c[O+(t*20|0)+8>>2]=o;c[O+(t*20|0)+12>>2]=0;c[O+(t*20|0)+16>>2]=0;a[O+(t*20|0)+1>>0]=0;break}else{Di(Ga,11,0,o,0)|0;break}}while(0);do if(!Q){w=c[ka>>2]|0;t=~q;if(((c[w+56>>2]|0)+(c[w+60>>2]|0)|0)<0){mk(w,Ga,t);break}else{c[(c[w+64>>2]|0)+(t<<2)>>2]=c[pa>>2];break}}else{t=c[pa>>2]|0;if((c[qa>>2]|0)>(t|0)){c[pa>>2]=t+1;Q=c[ta>>2]|0;a[Q+(t*20|0)>>0]=11;b[Q+(t*20|0)+2>>1]=0;c[Q+(t*20|0)+4>>2]=0;c[Q+(t*20|0)+8>>2]=oa;c[Q+(t*20|0)+12>>2]=0;c[Q+(t*20|0)+16>>2]=0;a[Q+(t*20|0)+1>>0]=0}else Di(Ga,11,0,oa,0)|0;w=c[pa>>2]|0;if(!(a[(c[Ga>>2]|0)+81>>0]|0))t=(c[ta>>2]|0)+(((y|0)<0?w+-1|0:y)*20|0)|0;else t=59308;c[t+8>>2]=w}while(0);if((M|0)==(P|0)){w=y;t=R;break}if(!W){if((c[Z>>2]|0)>=(Da|0)){w=y;t=R;break}c[Z>>2]=Da;c[Y>>2]=M;w=y;t=R;break}if(!M){w=y;t=R;break}t=a[X>>0]|0;if((t&255)>=8){w=y;t=R;break}a[X>>0]=t+1<<24>>24;c[f+148+((t&255)<<2)>>2]=M;w=y;t=R}while(0);s=c[s+20>>2]|0;if(!s)break;else S=S+1|0}}if(!za){c[p>>2]=u;Ra=Ja;return}s=Ga+108|0;t=c[s>>2]|0;if((c[Ga+112>>2]|0)>(t|0)){c[s>>2]=t+1;o=c[Ga+104>>2]|0;a[o+(t*20|0)>>0]=11;b[o+(t*20|0)+2>>1]=0;c[o+(t*20|0)+4>>2]=0;c[o+(t*20|0)+8>>2]=za;c[o+(t*20|0)+12>>2]=0;c[o+(t*20|0)+16>>2]=0;a[o+(t*20|0)+1>>0]=0}else Di(Ga,11,0,za,0)|0;t=c[s>>2]|0;if(!(a[(c[Ga>>2]|0)+81>>0]|0))s=(c[Ga+104>>2]|0)+(((v|0)<0?t+-1|0:v)*20|0)|0;else s=59308;c[s+8>>2]=t;c[p>>2]=u;Ra=Ja;return}function Um(f,g,h,i,j,k,l,m,n){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;t=f+8|0;o=c[t>>2]|0;a:do if(!o){s=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[s+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[s+272>>2]|0)if(!(a[s+81>>0]|0))r=15;else{C=0;break a}else{do if((e[s+276>>1]|0)>=224){o=s+300|0;p=c[o>>2]|0;if(p|0){c[o>>2]=c[p>>2];q=s+284|0;c[q>>2]=(c[q>>2]|0)+1;q=p;break b}o=s+296|0;p=c[o>>2]|0;if(!p){o=s+292|0;break}else{c[o>>2]=c[p>>2];q=s+284|0;c[q>>2]=(c[q>>2]|0)+1;q=p;break b}}else o=s+288|0;while(0);c[o>>2]=(c[o>>2]|0)+1;r=15}while(0);if((r|0)==15)q=_d(s,224,0)|0;if(!q)C=0;else{o=q+104|0;p=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));c[q>>2]=s;o=s+4|0;p=c[o>>2]|0;if(p|0)c[p+4>>2]=q;c[q+8>>2]=p;c[q+4>>2]=0;c[o>>2]=q;c[q+20>>2]=381479589;c[q+12>>2]=f;c[t>>2]=q;Di(q,61,0,1,0)|0;C=q}}else C=o;while(0);p=c[g+8>>2]|0;if(!p){u=0;o=g+36|0}else{y=(n|0)==0?0:16;x=C+108|0;z=C+112|0;o=g+36|0;A=C+104|0;B=(l&2|(y|1)&255)&255;w=0;u=0;while(1){t=k+(w<<2)|0;s=c[t>>2]|0;if(s){do if(c[p+36>>2]|0){q=c[x>>2]|0;r=q+2|0;if((c[z>>2]|0)>(q|0)){c[x>>2]=q+1;v=c[A>>2]|0;a[v+(q*20|0)>>0]=50;b[v+(q*20|0)+2>>1]=0;c[v+(q*20|0)+4>>2]=s;c[v+(q*20|0)+8>>2]=r;c[v+(q*20|0)+12>>2]=0;c[v+(q*20|0)+16>>2]=0;a[v+(q*20|0)+1>>0]=0;break}else{Di(C,50,s,r,0)|0;break}}while(0);q=p+55|0;q=d[q>>0]|d[q+1>>0]<<8;if((q&3)==2)v=(c[o>>2]&32|0)==0?y:B;else v=y;u=w+i|0;s=c[t>>2]|0;t=s+1|0;r=e[((q&8)==0?p+52|0:p+50|0)>>1]|0;q=c[x>>2]|0;if((c[z>>2]|0)>(q|0)){c[x>>2]=q+1;D=c[A>>2]|0;a[D+(q*20|0)>>0]=-124;b[D+(q*20|0)+2>>1]=0;c[D+(q*20|0)+4>>2]=u;c[D+(q*20|0)+8>>2]=s;c[D+(q*20|0)+12>>2]=t;c[D+(q*20|0)+16>>2]=0;a[D+(q*20|0)+1>>0]=0}else q=Di(C,132,u,s,t)|0;if(!(a[(c[C>>2]|0)+81>>0]|0)){D=c[A>>2]|0;a[D+(q*20|0)+1>>0]=-3;c[D+(q*20|0)+16>>2]=r}q=c[x>>2]|0;if((q|0)>0){b[(c[A>>2]|0)+((q+-1|0)*20|0)+2>>1]=v&255;u=1}else u=1}p=c[p+20>>2]|0;if(!p)break;else w=w+1|0}}if(c[o>>2]&32|0)return;q=j+1|0;o=f+19|0;p=a[o>>0]|0;if(!(p<<24>>24)){D=f+44|0;r=(c[D>>2]|0)+1|0;c[D>>2]=r}else{r=p+-1<<24>>24;a[o>>0]=r;r=c[f+148+((r&255)<<2)>>2]|0}o=b[g+42>>1]|0;s=C+108|0;p=c[s>>2]|0;t=C+112|0;if((c[t>>2]|0)>(p|0)){c[s>>2]=p+1;D=c[C+104>>2]|0;a[D+(p*20|0)>>0]=92;b[D+(p*20|0)+2>>1]=0;c[D+(p*20|0)+4>>2]=q;c[D+(p*20|0)+8>>2]=o;c[D+(p*20|0)+12>>2]=r;c[D+(p*20|0)+16>>2]=0;a[D+(p*20|0)+1>>0]=0}else Di(C,92,q,o,r)|0;if(!(u<<24>>24))zk(C,g,0);q=f+18|0;p=(a[q>>0]|0)==0?((l|0)==0?33:(l|1)&255):0;p=(m|0)==0?p:p|8;p=(n|0)==0?p:p|16;o=c[s>>2]|0;if((c[t>>2]|0)>(o|0)){c[s>>2]=o+1;D=c[C+104>>2]|0;a[D+(o*20|0)>>0]=122;b[D+(o*20|0)+2>>1]=0;c[D+(o*20|0)+4>>2]=h;c[D+(o*20|0)+8>>2]=r;c[D+(o*20|0)+12>>2]=j;c[D+(o*20|0)+16>>2]=0;a[D+(o*20|0)+1>>0]=0}else Di(C,122,h,r,j)|0;if((a[q>>0]|0)==0?(a[(c[C>>2]|0)+81>>0]|0)==0:0){j=c[C+104>>2]|0;D=(c[s>>2]|0)+-1|0;a[j+(D*20|0)+1>>0]=-6;c[j+(D*20|0)+16>>2]=g}o=c[s>>2]|0;if((o|0)<=0)return;b[(c[C+104>>2]|0)+((o+-1|0)*20|0)+2>>1]=p&255;return}function Vm(d,e){d=d|0;e=e|0;if((a[e>>0]|0)!=-94)return 0;e=b[e+32>>1]|0;if(e<<16>>16<=-1){d=d+20|0;a[d>>0]=a[d>>0]|2;return 0}if((c[(c[d+24>>2]|0)+(e<<16>>16<<2)>>2]|0)<=-1)return 0;d=d+20|0;a[d>>0]=a[d>>0]|1;return 0}function Wm(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;if(!(c[g+36>>2]&8)){l=0;return l|0}j=c[d>>2]|0;if(c[j+24>>2]&4|0){l=0;return l|0}k=c[d+116>>2]|0;k=(k|0)==0?d:k;i=c[(c[(c[j+16>>2]|0)+(f<<4)+12>>2]|0)+72>>2]|0;if(((i|0?(c[i+36>>2]&32|0)==0:0)?(c[i+56>>2]|0)==0:0)?(b[i+42>>1]|0)==2:0){i=k+112|0;d=c[i>>2]|0;a:do if(!d)l=12;else while(1){if((c[d+4>>2]|0)==(g|0))break a;d=c[d>>2]|0;if(!d){l=12;break}}while(0);do if((l|0)==12){b:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))l=22;else{l=0;return l|0}else{do if((e[j+276>>1]|0)>=16){h=j+300|0;d=c[h>>2]|0;if(d|0){c[h>>2]=c[d>>2];j=j+284|0;c[j>>2]=(c[j>>2]|0)+1;break b}h=j+296|0;d=c[h>>2]|0;if(!d){d=j+292|0;break}else{c[h>>2]=c[d>>2];j=j+284|0;c[j>>2]=(c[j>>2]|0)+1;break b}}else d=j+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1;l=22}while(0);if((l|0)==22)d=_d(j,16,0)|0;if(!d){l=0;return l|0}else{c[d>>2]=c[i>>2];c[i>>2]=d;c[d+4>>2]=g;c[d+8>>2]=f;l=k+44|0;k=c[l>>2]|0;c[d+12>>2]=k+2;c[l>>2]=k+4;break}}while(0);l=c[d+12>>2]|0;return l|0}l=d+36|0;c[l>>2]=(c[l>>2]|0)+1;c[d+12>>2]=523;l=0;return l|0}function Xm(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=b[f+50>>1]|0;t=g+50|0;if(h<<16>>16!=(b[t>>1]|0)){g=0;return g|0}if((a[f+54>>0]|0)!=(a[g+54>>0]|0)){g=0;return g|0}a:do if(h<<16>>16){l=g+4|0;m=f+4|0;n=g+40|0;o=f+40|0;p=g+28|0;q=f+28|0;r=g+32|0;s=f+32|0;k=0;while(1){h=b[(c[l>>2]|0)+(k<<1)>>1]|0;if(h<<16>>16!=(b[(c[m>>2]|0)+(k<<1)>>1]|0)){h=0;i=18;break}if(h<<16>>16==-2?bk(0,c[(c[n>>2]|0)+4+(k*20|0)>>2]|0,c[(c[o>>2]|0)+4+(k*20|0)>>2]|0,-1)|0:0){h=0;i=18;break}if((a[(c[p>>2]|0)+k>>0]|0)!=(a[(c[q>>2]|0)+k>>0]|0)){h=0;i=18;break}i=c[(c[r>>2]|0)+(k<<2)>>2]|0;j=c[(c[s>>2]|0)+(k<<2)>>2]|0;if(i){if(!j){h=0;i=18;break}u=a[i>>0]|0;h=(d[208+(u&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(u<<24>>24==0|(h|0)!=0))do{i=i+1|0;j=j+1|0;u=a[i>>0]|0;h=(d[208+(u&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(u<<24>>24==0|(h|0)!=0))}else h=((j|0)!=0)<<31>>31;k=k+1|0;if(h|0){h=0;i=18;break}if(k>>>0>=(e[t>>1]|0)>>>0)break a}if((i|0)==18)return h|0}while(0);u=(bk(0,c[g+36>>2]|0,c[f+36>>2]|0,-1)|0)==0&1;return u|0}function Ym(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;b=c[a+12>>2]|0;if(!b)b=0;else{b=c[b+24>>2]|0;b=(b|0)>0?b:0}d=c[a+16>>2]|0;if(d){k=c[d+24>>2]|0;b=(k|0)>(b|0)?k:b}j=a+4|0;k=c[j>>2]|0;d=a+20|0;if(!(k&2048)){h=c[d>>2]|0;if(!h){m=b;m=m+1|0;a=a+24|0;c[a>>2]=m;return}i=c[h>>2]|0;g=(i|0)>0;if(g){f=0;e=i;while(1){d=c[h+4+(f*20|0)>>2]|0;if(!d)d=e;else{m=c[d+24>>2]|0;d=(m|0)>(b|0);b=d?m:b;d=d?i:e}f=f+1|0;if((f|0)>=(d|0))break;else e=d}if(g){d=0;e=0;do{d=c[(c[h+4+(e*20|0)>>2]|0)+4>>2]|d;e=e+1|0}while((e|0)!=(i|0));d=d&2097412}else d=0}else d=0;c[j>>2]=d|k;m=b;m=m+1|0;a=a+24|0;c[a>>2]=m;return}d=c[d>>2]|0;if(!d){m=b;m=m+1|0;a=a+24|0;c[a>>2]=m;return}do{e=c[d+36>>2]|0;if(e){k=c[e+24>>2]|0;b=(k|0)>(b|0)?k:b}e=c[d+44>>2]|0;if(e){k=c[e+24>>2]|0;b=(k|0)>(b|0)?k:b}e=c[d+60>>2]|0;if(e){k=c[e+24>>2]|0;b=(k|0)>(b|0)?k:b}h=c[d>>2]|0;if((h|0)!=0?(i=c[h>>2]|0,(i|0)>0):0){g=0;f=i;while(1){e=c[h+4+(g*20|0)>>2]|0;if(!e)e=f;else{k=c[e+24>>2]|0;e=(k|0)>(b|0);b=e?k:b;e=e?i:f}g=g+1|0;if((g|0)>=(e|0))break;else f=e}}h=c[d+40>>2]|0;if((h|0)!=0?(l=c[h>>2]|0,(l|0)>0):0){g=0;f=l;while(1){e=c[h+4+(g*20|0)>>2]|0;if(!e)e=f;else{k=c[e+24>>2]|0;e=(k|0)>(b|0);b=e?k:b;e=e?l:f}g=g+1|0;if((g|0)>=(e|0))break;else f=e}}h=c[d+48>>2]|0;if((h|0)!=0?(m=c[h>>2]|0,(m|0)>0):0){g=0;f=m;while(1){e=c[h+4+(g*20|0)>>2]|0;if(!e)e=f;else{k=c[e+24>>2]|0;e=(k|0)>(b|0);b=e?k:b;e=e?m:f}g=g+1|0;if((g|0)>=(e|0))break;else f=e}}d=c[d+52>>2]|0}while((d|0)!=0);m=b+1|0;a=a+24|0;c[a>>2]=m;return}function Zm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=Ra;Ra=Ra+16|0;g=i;a:do if(((d[b>>0]|0)+-48|0)>>>0<10){c[g>>2]=0;ii(b,g)|0;f=c[g>>2]&255}else{h=Eu(b)|0;g=(h&1073741823|0)==2;b:do if(!e){if(g){if(!(Ib(18544,b,2)|0)){f=0;break}if(!(Ib(18545,b,2)|0)){f=1;break}else break a}switch(h&1073741823|0){case 3:{if(!(Ib(18546,b,3)|0)){f=2;break b}if(!(Ib(18553,b,3)|0)){f=4;break b}else break a}case 5:{if(!(Ib(18548,b,5)|0)){f=3;break b}if(!(Ib(18559,b,5)|0)){f=6;break b}else break a}case 4:{if(!(Ib(18556,b,4)|0)){f=5;break b}if(!(Ib(18564,b,4)|0)){f=7;break b}else break a}default:break a}}else{if(g){if(!(Ib(18544,b,2)|0)){f=0;break}if(!(Ib(18545,b,2)|0)){f=1;break}else break a}switch(h&1073741823|0){case 3:{if(!(Ib(18546,b,3)|0)){f=2;break b}if(!(Ib(18553,b,3)|0)){f=4;break b}else break a}case 5:if(!(Ib(18548,b,5)|0)){f=3;break b}else break a;case 4:if(!(Ib(18556,b,4)|0)){f=5;break b}else break a;default:break a}}while(0);f=a[45920+f>>0]|0}while(0);Ra=i;return f|0}function _m(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;i=Ra;Ra=Ra+16|0;g=i;c[g>>2]=f;f=0;a:while(1){switch(a[e+f>>0]|0){case 0:break a;case 115:{k=(c[g>>2]|0)+(4-1)&~(4-1);j=c[k>>2]|0;c[g>>2]=k+4;Fj(b,(j|0)==0?73:110,0,f+d|0,0,j,0)|0;break}case 105:{j=(c[g>>2]|0)+(4-1)&~(4-1);k=c[j>>2]|0;c[g>>2]=j+4;Ci(b,70,k,f+d|0)|0;break}default:{h=7;break a}}f=f+1|0}if((h|0)==7){Ra=i;return}Ci(b,81,d,f)|0;Ra=i;return}function $m(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=c[(c[e>>2]|0)+32>>2]|0;o=c[(c[e+4>>2]|0)+8>>2]|0;h=c[g>>2]|0;do if(h){i=b[h+8>>1]|0;if((i&514)==514?(a[h+10>>0]|0)==1:0){n=c[h+16>>2]|0;break}if(!(i&1))n=Gg(h,1)|0;else n=0}else n=0;while(0);h=c[g+4>>2]|0;do if(h){i=b[h+8>>1]|0;if((i&514)==514?(a[h+10>>0]|0)==1:0){m=c[h+16>>2]|0;break}if(!(i&1))m=Gg(h,1)|0;else m=0}else m=0;while(0);j=c[g>>2]|0;h=b[j+8>>1]|0;if((h&2)!=0?(a[j+10>>0]|0)==1:0)h=c[j+12>>2]|0;else l=16;do if((l|0)==16){i=h&65535;if(!(i&16)){if(i&1|0){h=0;break}h=Fg(j,1)|0;break}else{h=c[j+12>>2]|0;if(!(i&16384))break;h=(c[j>>2]|0)+h|0;break}}while(0);if((h|0)>(c[k+140>>2]|0)){c[e+20>>2]=1;yc(c[e>>2]|0,45980,-1,1,-1)|0;return}do if((f|0)==3){h=c[g+8>>2]|0;if(!h)return;i=b[h+8>>1]|0;if((i&514)==514?(a[h+10>>0]|0)==1:0)g=c[h+16>>2]|0;else l=28;do if((l|0)==28)if(!(i&1)){g=Gg(h,1)|0;break}else return;while(0);if(!g)return;k=a[g>>0]|0;if((g|0)!=(-1|0)&k<<24>>24!=0){h=g;f=0;j=k;while(1){i=h+1|0;if((j&255)>191){h=i;while(1){j=a[h>>0]|0;if((j&-64)<<24>>24==-128)h=h+1|0;else break}}else{h=i;j=a[i>>0]|0}if(j<<24>>24!=0&(h|0)!=(-1|0))f=f+1|0;else break}if(!f){j=g+1|0;h=k&255;if((k&255)<=191)break;h=d[2736+(h+-192)>>0]|0;i=a[j>>0]|0;if((i&-64)<<24>>24==-128)do{j=j+1|0;h=h<<6|i&63;i=a[j>>0]|0}while((i&-64)<<24>>24==-128);h=(h&-2|0)==65534|(h>>>0<128|(h&-2048|0)==55296)?65533:h;break}}c[e+20>>2]=1;yc(c[e>>2]|0,46013,-1,1,-1)|0;return}else h=d[o+2>>0]|0;while(0);if(!((n|0)!=0&(m|0)!=0))return;i=(md(n,m,o,h)|0)==0;h=c[e>>2]|0;i=i&1;j=h+8|0;if(!(b[j>>1]&9216)){o=h;c[o>>2]=i;c[o+4>>2]=0;b[j>>1]=4;return}else{Pg(h,i,0);return}}function an(b,f,g,h,i){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=c[b>>2]|0;o=g+4|0;m=(c[o>>2]|0)+45|0;a:do if(!p){r=Sv(m|0,0,-1,-1)|0;n=L()|0;if(n>>>0>0|(n|0)==0&r>>>0>2147483390){g=0;return g|0}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](m)|0;q=25;break}j=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){r=c[14978]|0;n=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&n>>>0<=r>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k){g=0;return g|0}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;r=k}else r=k}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){g=0;return g|0}}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){k=p+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];q=p+284|0;c[q>>2]=(c[q>>2]|0)+1;q=25;break a}k=p+296|0;j=c[k>>2]|0;if(!j){j=p+292|0;break}else{c[k>>2]=c[j>>2];q=p+284|0;c[q>>2]=(c[q>>2]|0)+1;q=25;break a}}else j=p+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(p,m,0)|0;q=25}while(0);if((q|0)==25)if(!j){g=0;return g|0}else r=j;gw(r|0,0,m|0)|0;n=r+44|0;ew(n|0,c[g>>2]|0,c[o>>2]|0)|0;j=a[n>>0]|0;if((a[880+(j&255)>>0]|0)<0){m=j<<24>>24==91?93:j;l=0;j=1;while(1){k=a[n+j>>0]|0;if(k<<24>>24==m<<24>>24){j=j+1|0;k=n+l|0;if((a[n+j>>0]|0)!=m<<24>>24)break;a[k>>0]=m}else a[n+l>>0]=k;l=l+1|0;j=j+1|0}a[k>>0]=0}o=r+12|0;c[o>>2]=n;a[r>>0]=f;while(1)if(!(a[880+(d[h>>0]|0)>>0]&1))break;else h=h+1|0;j=i-h|0;b:do if((j|0)<=0)if(!h)j=0;else{k=j;q=41}else while(1){k=j+-1|0;if(!(a[880+(d[h+k>>0]|0)>>0]&1)){k=j;q=41;break b}if((j|0)>1)j=k;else{q=41;break}}while(0);c:do if((q|0)==41){m=Sv(k|0,((k|0)<0)<<31>>31|0,1,0)|0;n=L()|0;d:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))q=51;else{j=0;break c}else{do if(!(n>>>0>0|((n|0)==0?m>>>0>(e[p+276>>1]|0)>>>0:0))){l=p+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];p=p+284|0;c[p>>2]=(c[p>>2]|0)+1;break d}l=p+296|0;j=c[l>>2]|0;if(!j){j=p+292|0;break}else{c[l>>2]=c[j>>2];p=p+284|0;c[p>>2]=(c[p>>2]|0)+1;break d}}else j=p+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;q=51}while(0);if((q|0)==51)j=_d(p,m,n)|0;if(j){ew(j|0,h|0,k|0)|0;a[j+k>>0]=0;k=a[j>>0]|0;if(k<<24>>24){m=0;l=j;do{if(a[880+(k&255)>>0]&1)a[l>>0]=32;m=m+1|0;l=j+m|0;k=a[l>>0]|0}while(k<<24>>24!=0)}}else j=0}while(0);c[r+32>>2]=j;if((d[b+200>>0]|0)<=1){g=r;return g|0}m=c[o>>2]|0;l=c[b>>2]|0;e:do if(!l){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](16)|0;q=82;break}j=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){p=c[14978]|0;i=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&i>>>0<=p>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){g=r;return g|0}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}else{if(c[l+272>>2]|0){if(a[l+81>>0]|0){g=r;return g|0}}else{do if((e[l+276>>1]|0)>=16){k=l+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];q=l+284|0;c[q>>2]=(c[q>>2]|0)+1;q=82;break e}k=l+296|0;j=c[k>>2]|0;if(!j){j=l+292|0;break}else{c[k>>2]=c[j>>2];q=l+284|0;c[q>>2]=(c[q>>2]|0)+1;q=82;break e}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(l,16,0)|0;q=82}while(0);if((q|0)==82)if(!j){g=r;return g|0}k=j+4|0;l=k+12|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(l|0));c[j>>2]=m;p=g;q=c[p+4>>2]|0;g=j+4|0;c[g>>2]=c[p>>2];c[g+4>>2]=q;g=b+272|0;c[j+12>>2]=c[g>>2];c[g>>2]=j;g=r;return g|0}function bn(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=Ra;Ra=Ra+64|0;D=H+40|0;E=H+32|0;w=H+24|0;v=H+16|0;n=H+8|0;k=H;x=H+60|0;t=H+56|0;r=H+52|0;F=H+48|0;s=H+44|0;G=c[(c[f>>2]|0)+32>>2]|0;c[x>>2]=0;c[t>>2]=0;c[F>>2]=0;g=c[h>>2]|0;do if(g){i=b[g+8>>1]|0;if((i&514)==514?(a[g+10>>0]|0)==1:0){j=c[g+16>>2]|0;break}if(!(i&1))j=Gg(g,1)|0;else j=0}else j=0;while(0);g=c[h+4>>2]|0;do if(g){i=b[g+8>>1]|0;if((i&514)==514?(a[g+10>>0]|0)==1:0){g=c[g+16>>2]|0;break}if(!(i&1))g=Gg(g,1)|0;else g=0}else g=0;while(0);A=(j|0)==0?59952:j;u=(g|0)==0?59952:g;z=G+20|0;m=c[z>>2]|0;g=c[G+136>>2]|0;a:do if((m|0)<(g+2|0)){y=G+16|0;l=c[y>>2]|0;b:do if((m|0)>0){k=d[208+(d[u>>0]|0)>>0]|0;h=0;while(1){i=c[l+(h<<4)>>2]|0;q=a[i>>0]|0;g=(d[208+(q&255)>>0]|0)-k|0;if(!(q<<24>>24==0|(g|0)!=0)){j=u;do{i=i+1|0;j=j+1|0;q=a[i>>0]|0;g=(d[208+(q&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(g|0)!=0))}h=h+1|0;if(!g)break;if((h|0)>=(m|0))break b}c[n>>2]=u;i=dd(G,46469,n)|0;c[F>>2]=i;g=0;C=142;break a}while(0);c:do if((l|0)==(G+412|0)){d:do if(c[G+272>>2]|0)if(!(a[G+81>>0]|0))C=34;else{Ra=H;return}else{do if((e[G+276>>1]|0)>=48){i=G+300|0;g=c[i>>2]|0;if(g|0){c[i>>2]=c[g>>2];q=G+284|0;c[q>>2]=(c[q>>2]|0)+1;break d}i=G+296|0;g=c[i>>2]|0;if(!g){g=G+292|0;break}else{c[i>>2]=c[g>>2];q=G+284|0;c[q>>2]=(c[q>>2]|0)+1;break d}}else g=G+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;C=34}while(0);if((C|0)==34)g=_d(G,48,0)|0;if(!g){Ra=H;return}else{p=c[y>>2]|0;c[g>>2]=c[p>>2];c[g+4>>2]=c[p+4>>2];c[g+8>>2]=c[p+8>>2];c[g+12>>2]=c[p+12>>2];c[g+16>>2]=c[p+16>>2];c[g+20>>2]=c[p+20>>2];c[g+24>>2]=c[p+24>>2];c[g+28>>2]=c[p+28>>2];p=g;break}}else{j=(m<<4)+16|0;e:do if(!l){if(c[G+272>>2]|0){if(a[G+81>>0]|0){Ra=H;return}}else{do if(!(0<0|(0==0?(e[G+276>>1]|0)>>>0>>0:0))){i=G+300|0;g=c[i>>2]|0;if(g|0){c[i>>2]=c[g>>2];q=G+284|0;c[q>>2]=(c[q>>2]|0)+1;break e}i=G+296|0;g=c[i>>2]|0;if(!g){g=G+292|0;break}else{c[i>>2]=c[g>>2];q=G+284|0;c[q>>2]=(c[q>>2]|0)+1;break e}}else g=G+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(G,j,0)|0}else{q=l;if((c[G+304>>2]|0)>>>0<=q>>>0?(c[G+308>>2]|0)>>>0>q>>>0:0){if(!(0<0|(0==0?(e[G+276>>1]|0)>>>0>>0:0))){p=l;break c}g=Zd(G,l,j,0)|0;break}g=Zd(G,l,j,0)|0}while(0);if(!g){Ra=H;return}else p=g}while(0);c[y>>2]=p;q=c[z>>2]|0;o=p+(q<<4)|0;c[o>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[r>>2]=c[G+60>>2];switch(dn(c[(c[G>>2]|0)+16>>2]|0,A,r,s,x,t)|0){case 0:{g=c[r>>2]|256;c[r>>2]=g;k=p+(q<<4)+4|0;g=Pe(c[s>>2]|0,c[x>>2]|0,G,k,0,g)|0;c[z>>2]=(c[z>>2]|0)+1;h=(Eu(u)|0)+1|0;r=G+272|0;f:do if(c[r>>2]|0)if(!(a[G+81>>0]|0))C=76;else i=0;else{do if(!(0<0|(0==0?(e[G+276>>1]|0)>>>0>>0:0))){j=G+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];C=G+284|0;c[C>>2]=(c[C>>2]|0)+1;C=77;break f}j=G+296|0;i=c[j>>2]|0;if(!i){i=G+292|0;break}else{c[j>>2]=c[i>>2];C=G+284|0;c[C>>2]=(c[C>>2]|0)+1;C=77;break f}}else i=G+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;C=76}while(0);if((C|0)==76){i=_d(G,h,0)|0;C=77}if((C|0)==77)if(!i)i=0;else ew(i|0,u|0,h|0)|0;c[o>>2]=i;a[G+89>>0]=0;switch(g|0){case 19:{g=dd(G,46499,v)|0;c[F>>2]=g;g=1;C=98;break}case 0:{g=en(G,c[k>>2]|0)|0;c[p+(q<<4)+12>>2]=g;if(g)if((a[g+76>>0]|0)!=0?(a[g+77>>0]|0)!=(a[G+78>>0]|0):0){g=dd(G,34948,w)|0;c[F>>2]=g;g=1}else g=0;else g=7;j=c[k>>2]|0;k=c[j>>2]|0;h=c[j+4>>2]|0;l=h+4|0;c[l>>2]=k;m=c[h>>2]|0;i=a[G+83>>0]|0;n=(a[m+12>>0]|0)==0;do if(n){w=c[m+216>>2]|0;if(w|0?(a[w+43>>0]|0)==2:0)break;a[m+4>>0]=i}while(0);i=c[(c[y>>2]|0)+4>>2]|0;if(!i)i=0;else{w=c[i+4>>2]|0;c[w+4>>2]=c[i>>2];i=(e[w+22>>1]|0)>>>2&3}if(j|0){c[l>>2]=k;w=h+22|0;b[w>>1]=i<<2|b[w>>1]&-13&65535}h=c[G+32>>2]|0;c[l>>2]=k;j=n^1;a[m+7>>0]=j&1;a[m+8>>0]=n&1;a[m+9>>0]=0;do if(n){i=m+10|0;if(!(h&8)){a[i>>0]=2;i=2;break}else{a[i>>0]=3;i=3;break}}else{a[m+10>>0]=0;i=0}while(0);w=(i<<2|(n?i:0))&255;a[m+11>>0]=(h&16|0)==0|j?w:w|12;w=m+20|0;v=d[w>>0]|0;a[w>>0]=(h&32|0)==0?v|1:v&254;a[p+(q<<4)+8>>0]=3;if(!g)g=(c[o>>2]|0)==0?7:0;break}default:C=98}if((C|0)==98)a[p+(q<<4)+8>>0]=3;i=c[x>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{x=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);g:do if(!g){g=c[z>>2]|0;h=c[y>>2]|0;if((g|0)>0){i=0;do{j=c[h+(i<<4)+4>>2]|0;if(j|0)c[(c[j+4>>2]|0)+4>>2]=c[j>>2];i=i+1|0}while((i|0)!=(g|0))}a[G+164>>0]=0;j=G+24|0;k=c[j>>2]|0;c[j>>2]=k&-17;k=(k&1|0)==0;x=c[h+12>>2]|0;a[G+78>>0]=a[x+77>>0]|0;if(!(b[x+78>>1]&1)){g=eh(G,0,F,0)|0;if(g|0)break;g=c[z>>2]|0}if((g|0)>1)do{i=g;g=g+-1|0;if((b[(c[(c[y>>2]|0)+(g<<4)+12>>2]|0)+78>>1]&1)==0?(B=eh(G,g,F,0)|0,B|0):0){g=B;break g}}while((i|0)>2);if(!k){Ra=H;return}c[j>>2]=c[j>>2]&-2;Ra=H;return}while(0);i=(c[z>>2]|0)+-1|0;j=c[(c[y>>2]|0)+(i<<4)+4>>2]|0;if(j|0){ug(j);B=c[y>>2]|0;c[B+(i<<4)+4>>2]=0;c[B+(i<<4)+12>>2]=0}$b(G);c[z>>2]=i;if((g|0)<3082)switch(g|0){case 7:break;default:C=140}else switch(g|0){case 3082:break;default:C=140}if((C|0)==140){i=c[F>>2]|0;if(i|0){C=143;break a}c[D>>2]=A;i=dd(G,46528,D)|0;c[F>>2]=i;C=142;break a}i=G+81|0;if((a[i>>0]|0)==0?(a[G+82>>0]|0)==0:0){a[i>>0]=1;if((c[G+180>>2]|0)>0)c[G+264>>2]=1;c[r>>2]=(c[r>>2]|0)+1;i=c[G+236>>2]|0;if(i|0)c[i+12>>2]=7}i=c[F>>2]|0;do if(i|0){if(c[G+480>>2]|0){Xd(G,i);break}D=i;if((c[G+304>>2]|0)>>>0<=D>>>0?(c[G+308>>2]|0)>>>0>D>>>0:0){D=G+300|0;c[i>>2]=c[D>>2];c[D>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{D=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=dd(G,34831,E)|0;c[F>>2]=i;C=142;break a}case 7:{g=G+81|0;if((a[g>>0]|0)==0?(a[G+82>>0]|0)==0:0){a[g>>0]=1;if((c[G+180>>2]|0)>0)c[G+264>>2]=1;g=G+272|0;c[g>>2]=(c[g>>2]|0)+1;g=c[G+236>>2]|0;if(g|0)c[g+12>>2]=7}break}default:{}}g=c[t>>2]|0;c[f+20>>2]=1;yc(c[f>>2]|0,g,-1,1,-1)|0;if(!g){Ra=H;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);Ra=H;return}else{f=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);Ra=H;return}}else{c[k>>2]=g;i=dd(G,46432,k)|0;c[F>>2]=i;g=0;C=142}while(0);if((C|0)==142)if(i)C=143;do if((C|0)==143){c[f+20>>2]=1;yc(c[f>>2]|0,i,-1,1,-1)|0;i=c[F>>2]|0;if(i){if(G|0){if(c[G+480>>2]|0){Xd(G,i);break}F=i;if((c[G+304>>2]|0)>>>0<=F>>>0?(c[G+308>>2]|0)>>>0>F>>>0:0){G=G+300|0;c[i>>2]=c[G>>2];c[G>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{G=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}}while(0);if(!g){Ra=H;return}c[f+20>>2]=g;i=c[f>>2]|0;if(!(b[i+8>>1]&1)){Ra=H;return}switch(g|0){case 516:{g=50738;break}case 100:{g=50760;break}case 101:{g=50782;break}default:{g=g&255;if(g>>>0<29?(520028155>>>g&1|0)!=0:0)g=c[22960+(g<<2)>>2]|0;else g=50724}}yc(i,g,-1,1,0)|0;Ra=H;return}function cn(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=Ra;Ra=Ra+112|0;x=J+32|0;w=J+24|0;t=J+16|0;r=J+8|0;n=J;s=J+72|0;u=J+40|0;I=c[f>>2]|0;a:do if(!(c[f+36>>2]|0)){z=u+4|0;c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[z+16>>2]=0;c[z+20>>2]=0;c[z+24>>2]=0;c[u>>2]=f;z=(j|0)==0;m=f;do if(z)m=0;else{if((a[j>>0]|0)==59){a[j>>0]=110;m=0;break}p=u+24|0;b[p>>1]=0;c[s>>2]=m;c[s+4>>2]=125;c[s+8>>2]=126;c[s+12>>2]=0;c[s+24>>2]=u;o=j+24|0;m=f+208|0;A=(c[m>>2]|0)+(c[o>>2]|0)|0;c[m>>2]=A;m=c[I+120>>2]|0;if((m|0)>=(A|0)){_j(s,j)|0;n=c[s>>2]|0;m=n+208|0;c[m>>2]=(c[m>>2]|0)-(c[o>>2]|0);m=b[p>>1]|0;A=j+4|0;c[A>>2]=c[A>>2]|m&-32752&65535;if((c[u+20>>2]|0)<=0)if((c[n+36>>2]|0)<1)break;else{F=121;break a}}else{c[n>>2]=m;cd(f,41637,n)}F=121;break a}while(0);A=(k|0)==0;do if(!A){if((a[k>>0]|0)==59){a[k>>0]=110;break}q=u+24|0;o=m&65535;b[q>>1]=o&28655;m=c[u>>2]|0;c[s>>2]=m;c[s+4>>2]=125;c[s+8>>2]=126;c[s+12>>2]=0;c[s+24>>2]=u;p=k+24|0;n=m+208|0;y=(c[n>>2]|0)+(c[p>>2]|0)|0;c[n>>2]=y;n=c[(c[m>>2]|0)+120>>2]|0;if((n|0)>=(y|0)){_j(s,k)|0;n=c[s>>2]|0;m=n+208|0;c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);m=b[q>>1]|0;y=k+4|0;c[y>>2]=c[y>>2]|m&-32752&65535;m=(o&36880|m&65535)&65535;b[q>>1]=m;if((c[u+20>>2]|0)<=0)if((c[n+36>>2]|0)<1)break;else{F=120;break a}}else{c[r>>2]=n;cd(m,41637,r)}F=120;break a}while(0);y=(l|0)==0;do if(!y){if((a[l>>0]|0)==59){a[l>>0]=110;break}q=u+24|0;p=m&65535;b[q>>1]=p&28655;m=c[u>>2]|0;c[s>>2]=m;c[s+4>>2]=125;c[s+8>>2]=126;c[s+12>>2]=0;c[s+24>>2]=u;o=l+24|0;n=m+208|0;r=(c[n>>2]|0)+(c[o>>2]|0)|0;c[n>>2]=r;n=c[(c[m>>2]|0)+120>>2]|0;if((n|0)>=(r|0)){_j(s,l)|0;m=c[s>>2]|0;t=m+208|0;c[t>>2]=(c[t>>2]|0)-(c[o>>2]|0);t=b[q>>1]|0;s=l+4|0;c[s>>2]=c[s>>2]|t&-32752&65535;b[q>>1]=p&36880|t&65535;if((c[u+20>>2]|0)<=0)if((c[m+36>>2]|0)<1)break;else{F=120;break a}}else{c[t>>2]=n;cd(m,41637,t)}F=120;break a}while(0);do if(i|0){if((a[i>>0]|0)==110)m=c[i+8>>2]|0;else m=0;n=c[f>>2]|0;if(((a[n+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(v=c[n+312>>2]|0,v|0):0){m=$a[v&127](c[n+316>>2]|0,g,m,0,0,c[f+240>>2]|0)|0;if((m|0)==1){cd(f,39216,w);c[f+12>>2]=23;F=120;break a}if((m|2|0)==2)if(!m)break;else{F=120;break a}else{cd(f,39231,x);c[f+12>>2]=1;F=120;break a}}}while(0);s=f+8|0;m=c[s>>2]|0;b:do if(!m){p=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[p+76>>1]&8)==0:0)a[f+23>>0]=1;c:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))F=51;else{t=0;break b}else{do if((e[p+276>>1]|0)>=224){m=p+300|0;n=c[m>>2]|0;if(n|0){c[m>>2]=c[n>>2];x=p+284|0;c[x>>2]=(c[x>>2]|0)+1;break c}m=p+296|0;n=c[m>>2]|0;if(!n){m=p+292|0;break}else{c[m>>2]=c[n>>2];x=p+284|0;c[x>>2]=(c[x>>2]|0)+1;break c}}else m=p+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;F=51}while(0);if((F|0)==51)n=_d(p,224,0)|0;if(!n)t=0;else{m=n+104|0;o=m+120|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(o|0));c[n>>2]=p;m=p+4|0;o=c[m>>2]|0;if(o|0)c[o+4>>2]=n;c[n+8>>2]=o;c[n+4>>2]=0;c[m>>2]=n;c[n+20>>2]=381479589;c[n+12>>2]=f;c[s>>2]=n;Di(n,61,0,1,0)|0;t=n}}else t=m;while(0);n=f+32|0;o=c[n>>2]|0;m=f+28|0;p=c[m>>2]|0;if((p|0)<4){m=f+44|0;n=c[m>>2]|0;r=n+1|0;n=n+4|0}else{c[n>>2]=o+4;r=o;n=p+-4|0}c[m>>2]=n;do if(!z){if((a[j>>0]|0)!=-88){C=Jj(f,j,r)|0;F=66;break}m=c[s>>2]|0;n=c[j+28>>2]|0;o=m+108|0;p=c[o>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[o>>2]=p+1;z=c[m+104>>2]|0;a[z+(p*20|0)>>0]=78;b[z+(p*20|0)+2>>1]=0;c[z+(p*20|0)+4>>2]=n;c[z+(p*20|0)+8>>2]=r;c[z+(p*20|0)+12>>2]=0;c[z+(p*20|0)+16>>2]=0;a[z+(p*20|0)+1>>0]=0;break}else{Di(m,78,n,r,0)|0;break}}else{C=Jj(f,0,r)|0;F=66}while(0);do if(((F|0)==66?(C|0)!=(r|0):0)?(B=c[s>>2]|0,B|0):0){m=B+108|0;n=c[m>>2]|0;if((c[B+112>>2]|0)>(n|0)){c[m>>2]=n+1;B=c[B+104>>2]|0;a[B+(n*20|0)>>0]=79;b[B+(n*20|0)+2>>1]=0;c[B+(n*20|0)+4>>2]=C;c[B+(n*20|0)+8>>2]=r;c[B+(n*20|0)+12>>2]=0;c[B+(n*20|0)+16>>2]=0;a[B+(n*20|0)+1>>0]=0;break}else{Di(B,79,C,r,0)|0;break}}while(0);q=r+1|0;do if(!A){if((a[k>>0]|0)!=-88){E=Jj(f,k,q)|0;F=78;break}m=c[s>>2]|0;n=c[k+28>>2]|0;o=m+108|0;p=c[o>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[o>>2]=p+1;C=c[m+104>>2]|0;a[C+(p*20|0)>>0]=78;b[C+(p*20|0)+2>>1]=0;c[C+(p*20|0)+4>>2]=n;c[C+(p*20|0)+8>>2]=q;c[C+(p*20|0)+12>>2]=0;c[C+(p*20|0)+16>>2]=0;a[C+(p*20|0)+1>>0]=0;break}else{Di(m,78,n,q,0)|0;break}}else{E=Jj(f,0,q)|0;F=78}while(0);do if(((F|0)==78?(E|0)!=(q|0):0)?(D=c[s>>2]|0,D|0):0){m=D+108|0;n=c[m>>2]|0;if((c[D+112>>2]|0)>(n|0)){c[m>>2]=n+1;D=c[D+104>>2]|0;a[D+(n*20|0)>>0]=79;b[D+(n*20|0)+2>>1]=0;c[D+(n*20|0)+4>>2]=E;c[D+(n*20|0)+8>>2]=q;c[D+(n*20|0)+12>>2]=0;c[D+(n*20|0)+16>>2]=0;a[D+(n*20|0)+1>>0]=0;break}else{Di(D,79,E,q,0)|0;break}}while(0);q=r+2|0;do if(!y){if((a[l>>0]|0)!=-88){H=Jj(f,l,q)|0;F=90;break}m=c[s>>2]|0;n=c[l+28>>2]|0;o=m+108|0;p=c[o>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[o>>2]=p+1;f=c[m+104>>2]|0;a[f+(p*20|0)>>0]=78;b[f+(p*20|0)+2>>1]=0;c[f+(p*20|0)+4>>2]=n;c[f+(p*20|0)+8>>2]=q;c[f+(p*20|0)+12>>2]=0;c[f+(p*20|0)+16>>2]=0;a[f+(p*20|0)+1>>0]=0;break}else{Di(m,78,n,q,0)|0;break}}else{H=Jj(f,0,q)|0;F=90}while(0);do if(((F|0)==90?(H|0)!=(q|0):0)?(G=c[s>>2]|0,G|0):0){m=G+108|0;n=c[m>>2]|0;if((c[G+112>>2]|0)>(n|0)){c[m>>2]=n+1;G=c[G+104>>2]|0;a[G+(n*20|0)>>0]=79;b[G+(n*20|0)+2>>1]=0;c[G+(n*20|0)+4>>2]=H;c[G+(n*20|0)+8>>2]=q;c[G+(n*20|0)+12>>2]=0;c[G+(n*20|0)+16>>2]=0;a[G+(n*20|0)+1>>0]=0;break}else{Di(G,79,H,q,0)|0;break}}while(0);if(t){n=r+3|0;o=n-(a[h>>0]|0)|0;p=t+108|0;m=c[p>>2]|0;q=t+112|0;if((c[q>>2]|0)>(m|0)){c[p>>2]=m+1;H=c[t+104>>2]|0;a[H+(m*20|0)>>0]=63;b[H+(m*20|0)+2>>1]=0;c[H+(m*20|0)+4>>2]=0;c[H+(m*20|0)+8>>2]=o;c[H+(m*20|0)+12>>2]=n;c[H+(m*20|0)+16>>2]=0;a[H+(m*20|0)+1>>0]=0}else m=Di(t,63,0,o,n)|0;n=c[t>>2]|0;d:do if(!(a[n+81>>0]|0)){if((m|0)<0)m=(c[p>>2]|0)+-1|0;n=c[t+104>>2]|0;o=n+(m*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(m*20|0)+16>>2]=h;a[o>>0]=-8;break}else{Ei(t,n+(m*20|0)|0,h,-8);break}}else if(c[h+4>>2]&16|0){do if(n|0){if(c[n+480>>2]|0){Xd(n,h);break d}m=h;if((c[n+304>>2]|0)>>>0<=m>>>0){if((c[n+308>>2]|0)>>>0<=m>>>0)break;H=n+300|0;c[h>>2]=c[H>>2];c[H>>2]=h;break d}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{H=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);n=c[p>>2]|0;if((n|0)>0)b[(c[t+104>>2]|0)+((n+-1|0)*20|0)+2>>1]=d[h>>0]|0;m=(g|0)==24&1;if((c[q>>2]|0)>(n|0)){c[p>>2]=n+1;F=c[t+104>>2]|0;a[F+(n*20|0)>>0]=-98;b[F+(n*20|0)+2>>1]=0;c[F+(n*20|0)+4>>2]=m;c[F+(n*20|0)+8>>2]=0;c[F+(n*20|0)+12>>2]=0;c[F+(n*20|0)+16>>2]=0;a[F+(n*20|0)+1>>0]=0;F=120;break}else{Di(t,158,m,0,0)|0;F=120;break}}else F=120}else F=120;while(0);if((F|0)==120?j|0:0)F=121;if((F|0)==121)ni(I,j);if(k|0)ni(I,k);if(!l){Ra=J;return}ni(I,l);Ra=J;return}function dn(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=Ra;Ra=Ra+32|0;v=w+24|0;t=w+16|0;s=w+8|0;n=w;j=c[e>>2]|0;a:do if(d){i=(Eu(d)|0)&1073741823;if(i>>>0>4&(c[7327]|j&64|0)!=0?(Lu(d,46556,5)|0)==0:0){j=j|64;k=0;l=i+2|0;m=0;do{l=Sv(l|0,m|0,(a[d+k>>0]|0)==38|0,0)|0;m=L()|0;k=k+1|0}while((k|0)!=(i|0));k=pb(l,m)|0;if(!k){g=7;Ra=w;return g|0}b:do if((a[d+5>>0]|0)==47?(a[d+6>>0]|0)==47:0){l=7;c:while(1){switch(a[d+l>>0]|0){case 0:case 47:break c;default:{}}l=l+1|0}switch(l&2147483647|0){case 7:{l=7;break b}case 16:{i=d+7|0;if(!(Lu(46562,i,9)|0)){l=16;break b}break}default:i=d+7|0}c[n>>2]=l+-7;c[n+4>>2]=i;l=k;i=1;k=Bb(46572,n)|0;u=86;break a}else l=5;while(0);i=0;n=0;d:while(1){p=k+(i+-1)|0;e:while(1){m=a[d+l>>0]|0;switch(m<<24>>24){case 0:case 35:break d;default:{}}o=l+1|0;f:do if((m<<24>>24==37?(q=a[d+o>>0]|0,(a[880+(q&255)>>0]&8)!=0):0)?(r=a[d+(l+2)>>0]|0,(a[880+(r&255)>>0]&8)!=0):0){m=q<<24>>24;l=l+3|0;o=r<<24>>24;m=(0-(o>>>6&1)&9)+o&15|(0-(m>>>6&1)&9)+m<<4&240;if(m|0){u=37;break e}switch(n|0){case 0:while(1){switch(a[d+l>>0]|0){case 63:case 35:case 0:break f;default:{}}l=l+1|0}case 1:while(1){switch(a[d+l>>0]|0){case 38:case 61:case 35:case 0:break f;default:{}}l=l+1|0}case 2:while(1){switch(a[d+l>>0]|0){case 38:case 35:case 0:break f;default:{}}l=l+1|0}default:while(1){switch(a[d+l>>0]|0){case 35:case 0:break f;default:{}}l=l+1|0}}}else u=38;while(0);g:do if((u|0)==38){u=0;switch(n|0){case 0:{u=47;break e}case 2:{u=48;break e}case 1:break;default:{l=o;break e}}switch(m<<24>>24){case 38:case 61:break;default:{n=1;l=o;break e}}if(a[p>>0]|0){u=45;break e}l=o;while(1){switch(a[d+l>>0]|0){case 35:case 0:break g;default:{}}if((a[d+(l+-1)>>0]|0)==38)break g;l=l+1|0}}while(0)}if((u|0)==37){u=0;m=m&255}else if((u|0)==45){u=0;if(m<<24>>24==38){a[k+i>>0]=0;m=0;i=i+1|0;n=1;l=o}else{m=0;n=2;l=o}}else if((u|0)==47){u=0;if(m<<24>>24==63)u=49;else{n=0;l=o}}else if((u|0)==48){u=0;if(m<<24>>24==38)u=49;else{n=2;l=o}}if((u|0)==49){u=0;m=0;n=1;l=o}a[k+i>>0]=m;i=i+1|0}if((n|0)==1){a[k+i>>0]=0;i=i+1|0}a[k+i>>0]=0;a[k+(i+1)>>0]=0;i=k+(((Eu(k)|0)&1073741823)+1)|0;if(a[i>>0]|0){r=b;b=i;h:while(1){i:do if(!b){i=1;l=(Eu(1)|0)&1073741823;u=71}else{d=Eu(b)|0;i=b+((d&1073741823)+1)|0;l=(Eu(i)|0)&1073741823;switch(d&1073741823|0){case 3:if(!(Lu(46600,b,3)|0)){m=i;break i}else{u=71;break i}case 5:{if(!(Lu(46604,b,5)|0)){o=393216;p=-393217;q=46604;n=18576}else{u=71;break i}break}case 4:{if(!(Lu(58212,b,4)|0)){o=j&135;p=-136;q=31701;n=18608}else{u=71;break i}break}default:{u=71;break i}}b=c[n>>2]|0;if(!b){u=67;break h}m=0;while(1){if((l|0)==((Eu(b)|0)&1073741823|0)?(Lu(i,b,l)|0)==0:0)break;m=m+1|0;b=c[n+(m<<3)>>2]|0;if(!b){u=67;break h}}b=c[n+(m<<3)+4>>2]|0;if(!b){u=67;break h}if((b&-129|0)>(o|0)){u=69;break h}j=b|p&j;u=71}while(0);if((u|0)==71){u=0;m=r}b=i+(l+1)|0;if(!(a[b>>0]|0)){b=m;u=77;break a}else r=m}if((u|0)==67){c[s>>2]=q;c[s+4>>2]=i;l=k;i=1;k=Bb(46635,s)|0;u=86;break}else if((u|0)==69){c[t>>2]=q;c[t+4>>2]=i;l=k;i=3;k=Bb(46655,t)|0;u=86;break}}else u=77}else u=73}else{i=0;u=73}while(0);if((u|0)==73){k=pb(i+2|0,0)|0;if(!k){g=7;Ra=w;return g|0}if(i|0)ew(k|0,d|0,i|0)|0;a[k+i>>0]=0;a[k+(i+1)>>0]=0;j=j&-65;u=77}j:do if((u|0)==77){k:do if(!(mb()|0)){i=c[14770]|0;l=(i|0)==0;if((b|0)==0|l){c[f>>2]=i;if(l)break;else{i=0;break j}}while(1){if(!(Bu(b,c[i+16>>2]|0)|0))break;i=c[i+12>>2]|0;if(!i){u=83;break k}}c[f>>2]=i;i=0;break j}else u=83;while(0);if((u|0)==83)c[f>>2]=0;c[v>>2]=b;l=k;i=1;k=Bb(46679,v)|0;u=86}while(0);do if((u|0)==86){c[h>>2]=k;if(l)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);k=0;break}else{k=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);k=0;break}else k=0}while(0);c[e>>2]=j;c[g>>2]=k;g=i;Ra=w;return g|0}function en(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;do if(d){i=c[d+4>>2]|0;c[i+4>>2]=c[d>>2];h=i+48|0;d=c[h>>2]|0;if(!d){if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](84)|0;if(!d)g=26;else g=27}else{d=Wa[c[29356>>2]&127](84)|0;if((c[14985]|0)>>>0<84)c[14985]=84;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){g=c[14978]|0;f=Tv(e|0,f|0,d|0,((d|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&f>>>0<=g>>>0)&1}d=Wa[c[29340>>2]&127](d)|0;if(d){e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0){c[14987]=e;g=27}else g=27}else g=26}if((g|0)==26){c[h>>2]=0;c[i+52>>2]=95;break}else if((g|0)==27){f=d;g=f+84|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));c[h>>2]=d;c[i+52>>2]=95;g=34;break}}else g=34}else{if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](84)|0;if(!d)break}else{d=Wa[c[29356>>2]&127](84)|0;if((c[14985]|0)>>>0<84)c[14985]=84;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){i=c[14978]|0;h=Tv(e|0,f|0,d|0,((d|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&h>>>0<=i>>>0)&1}e=Wa[c[29340>>2]&127](d)|0;if(!e)break;d=Wa[c[29352>>2]&127](e)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0){c[14987]=d;d=e}else d=e}f=d;g=f+84|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(g|0));g=34}while(0);if((g|0)==34){if(a[d+76>>0]|0){b=d;return b|0}e=d+77|0;f=d+8|0;g=f+64|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));a[e>>0]=1;b=d;return b|0}d=b+81|0;if(a[d>>0]|0){b=0;return b|0}if(a[b+82>>0]|0){b=0;return b|0}a[d>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;d=b+272|0;c[d>>2]=(c[d>>2]|0)+1;d=c[b+236>>2]|0;if(!d){b=0;return b|0}c[d+12>>2]=7;b=0;return b|0}function fn(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=Ra;Ra=Ra+160|0;r=w+144|0;q=w+136|0;p=w+128|0;o=w;f=c[g>>2]|0;do if(f){g=b[f+8>>1]|0;if((g&514)==514?(a[f+10>>0]|0)==1:0){f=c[f+16>>2]|0;break}if(!(g&1))f=Gg(f,1)|0;else f=0}else f=0;while(0);v=c[(c[e>>2]|0)+32>>2]|0;n=(f|0)==0?59952:f;t=v+20|0;l=c[t>>2]|0;a:do if((l|0)>0){u=v+16|0;m=c[u>>2]|0;f=0;while(1){j=m+(f<<4)+4|0;k=c[j>>2]|0;if(k|0){h=c[m+(f<<4)>>2]|0;i=a[h>>0]|0;g=(d[208+(i&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(g|0)!=0)){i=n;do{h=h+1|0;i=i+1|0;x=a[h>>0]|0;g=(d[208+(x&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(x<<24>>24==0|(g|0)!=0))}if(!g)break}f=f+1|0;if((f|0)>=(l|0)){s=15;break a}}if(f>>>0<2){c[q>>2]=n;Cb(128,o,46730,q)|0;break}if((a[k+8>>0]|0)==0?(c[k+16>>2]|0)==0:0){ug(k);c[j>>2]=0;c[m+(f<<4)+12>>2]=0;if((c[t>>2]|0)>2){j=v+480|0;k=v+304|0;l=v+308|0;m=v+300|0;i=2;f=2;do{g=c[u>>2]|0;h=g+(i<<4)|0;if(!(c[g+(i<<4)+4>>2]|0)){g=c[h>>2]|0;do if(g|0){if(c[j>>2]|0){Xd(v,g);break}x=g;if((c[k>>2]|0)>>>0<=x>>>0?(c[l>>2]|0)>>>0>x>>>0:0){c[g>>2]=c[m>>2];c[m>>2]=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{x=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[h>>2]=0}else{if((f|0)<(i|0)){x=g+(f<<4)|0;c[x>>2]=c[h>>2];c[x+4>>2]=c[h+4>>2];c[x+8>>2]=c[h+8>>2];c[x+12>>2]=c[h+12>>2]}f=f+1|0}i=i+1|0}while((i|0)<(c[t>>2]|0));c[t>>2]=f;if((f|0)>=3){Ra=w;return}}else c[t>>2]=2;f=c[u>>2]|0;g=v+412|0;if((f|0)==(g|0)){Ra=w;return};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[g+16>>2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];c[g+28>>2]=c[f+28>>2];do if(f|0){if(c[v+480>>2]|0){Xd(v,f);break}x=f;if((c[v+304>>2]|0)>>>0<=x>>>0?(c[v+308>>2]|0)>>>0>x>>>0:0){x=v+300|0;c[f>>2]=c[x>>2];c[x>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{x=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);c[u>>2]=g;Ra=w;return}c[r>>2]=n;Cb(128,o,46756,r)|0}else s=15;while(0);if((s|0)==15){c[p>>2]=n;Cb(128,o,46709,p)|0}c[e+20>>2]=1;yc(c[e>>2]|0,o,-1,1,-1)|0;Ra=w;return}function gn(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(c[f+56>>2]|0)return;h=c[f+8>>2]|0;if(!h)return;p=f+72|0;o=e+116|0;if(!g){do{i=c[p>>2]|0;if(!i)f=-1e6;else{j=c[(c[e>>2]|0)+16>>2]|0;f=0;while(1)if((c[j+(f<<4)+12>>2]|0)==(i|0))break;else f=f+1|0}l=c[o>>2]|0;l=(l|0)==0?e:l;i=l+84|0;j=c[i>>2]|0;k=1<>2]=j|k,(f|0)==1):0)Oe(l)|0;g=l+80|0;c[g>>2]=c[g>>2]|k;bl(e,h,-1);h=c[h+20>>2]|0}while((h|0)!=0);return}do{f=b[h+52>>1]|0;a:do if(f<<16>>16){m=c[h+4>>2]|0;n=h+32|0;l=f&65535;k=0;while(1){if((b[m+(k<<1)>>1]|0)>-1){i=c[(c[n>>2]|0)+(k<<2)>>2]|0;j=a[i>>0]|0;f=(d[208+(j&255)>>0]|0)-(d[208+(d[g>>0]|0)>>0]|0)|0;if(!(j<<24>>24==0|(f|0)!=0)){j=g;do{i=i+1|0;j=j+1|0;q=a[i>>0]|0;f=(d[208+(q&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(f|0)!=0))}if(!f)break}k=k+1|0;if(k>>>0>=l>>>0)break a}i=c[p>>2]|0;if(!i)f=-1e6;else{j=c[(c[e>>2]|0)+16>>2]|0;f=0;while(1)if((c[j+(f<<4)+12>>2]|0)==(i|0))break;else f=f+1|0}l=c[o>>2]|0;l=(l|0)==0?e:l;i=l+84|0;j=c[i>>2]|0;k=1<>2]=j|k,(f|0)==1):0)Oe(l)|0;q=l+80|0;c[q>>2]=c[q>>2]|k;bl(e,h,-1)}while(0);h=c[h+20>>2]|0}while((h|0)!=0);return}function hn(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=Ra;Ra=Ra+96|0;t=A+64|0;r=A+48|0;q=A+32|0;p=A+16|0;o=A;y=A+80|0;z=A+92|0;x=c[d>>2]|0;m=d+8|0;j=c[m>>2]|0;do if(!j){if((c[d+116>>2]|0)==0?(b[x+76>>1]&8)==0:0)a[d+23>>0]=1;a:do if(c[x+272>>2]|0){if(!(a[x+81>>0]|0))l=15}else{do if((e[x+276>>1]|0)>=224){j=x+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];l=x+284|0;c[l>>2]=(c[l>>2]|0)+1;l=16;break a}j=x+296|0;k=c[j>>2]|0;if(!k){j=x+292|0;break}else{c[j>>2]=c[k>>2];l=x+284|0;c[l>>2]=(c[l>>2]|0)+1;l=16;break a}}else j=x+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;l=15}while(0);if((l|0)==15){k=_d(x,224,0)|0;l=16}if((l|0)==16?k|0:0){j=k+104|0;l=j+120|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));c[k>>2]=x;j=x+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=d;c[m>>2]=k;Di(k,61,0,1,0)|0;u=k;break}Ra=A;return}else u=j;while(0);n=(c[x+16>>2]|0)+(f<<4)|0;j=d+92|0;v=u+108|0;s=u+112|0;w=u+104|0;k=c[n>>2]|0;l=Sd(x,35174,k)|0;m=(l|0)==0;do if(!h){do if(!m){k=c[l+28>>2]|0;c[y>>2]=k;a[z>>0]=0;Hj(d,f,k,1,35174);j=c[v>>2]|0;if((c[s>>2]|0)>(j|0)){c[v>>2]=j+1;l=c[w>>2]|0;a[l+(j*20|0)>>0]=-119;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=k;c[l+(j*20|0)+8>>2]=f;c[l+(j*20|0)+12>>2]=0;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0;l=0;break}else{Di(u,137,k,f,0)|0;l=0;break}}else{c[o>>2]=k;c[o+4>>2]=35174;c[o+8>>2]=46824;Ak(d,46863,o);k=c[j>>2]|0;c[y>>2]=k;a[z>>0]=16;l=16}while(0);j=Sd(x,46837,c[n>>2]|0)|0;do if(j|0){j=c[j+28>>2]|0;c[y+4>>2]=j;a[z+1>>0]=0;Hj(d,f,j,1,46837);m=c[v>>2]|0;if((c[s>>2]|0)>(m|0)){c[v>>2]=m+1;t=c[w>>2]|0;a[t+(m*20|0)>>0]=-119;b[t+(m*20|0)+2>>1]=0;c[t+(m*20|0)+4>>2]=j;c[t+(m*20|0)+8>>2]=f;c[t+(m*20|0)+12>>2]=0;c[t+(m*20|0)+16>>2]=0;a[t+(m*20|0)+1>>0]=0;break}else{Di(u,137,j,f,0)|0;break}}while(0);j=Sd(x,46850,c[n>>2]|0)|0;if(j){m=c[j+28>>2]|0;c[y+8>>2]=m;a[z+2>>0]=0;Hj(d,f,m,1,46850);j=c[v>>2]|0;if((c[s>>2]|0)>(j|0)){c[v>>2]=j+1;z=c[w>>2]|0;a[z+(j*20|0)>>0]=-119;b[z+(j*20|0)+2>>1]=0;c[z+(j*20|0)+4>>2]=m;c[z+(j*20|0)+8>>2]=f;c[z+(j*20|0)+12>>2]=0;c[z+(j*20|0)+16>>2]=0;a[z+(j*20|0)+1>>0]=0;break}else{Di(u,137,m,f,0)|0;break}}}else{if(m){c[p>>2]=k;c[p+4>>2]=35174;c[p+8>>2]=46824;Ak(d,46863,p);k=c[j>>2]|0;c[y>>2]=k;a[z>>0]=16;l=16}else{k=c[l+28>>2]|0;c[y>>2]=k;a[z>>0]=0;Hj(d,f,k,1,35174);c[q>>2]=c[n>>2];c[q+4>>2]=35174;c[q+8>>2]=i;c[q+12>>2]=h;Ak(d,42751,q);l=0}j=c[n>>2]|0;m=Sd(x,46837,j)|0;if(m){j=c[m+28>>2]|0;c[y+4>>2]=j;a[z+1>>0]=0;Hj(d,f,j,1,46837);c[r>>2]=c[n>>2];c[r+4>>2]=46837;c[r+8>>2]=i;c[r+12>>2]=h;Ak(d,42751,r);j=c[n>>2]|0}j=Sd(x,46850,j)|0;if(j){x=c[j+28>>2]|0;c[y+8>>2]=x;a[z+2>>0]=0;Hj(d,f,x,1,46850);c[t>>2]=c[n>>2];c[t+4>>2]=46850;c[t+8>>2]=i;c[t+12>>2]=h;Ak(d,42751,t)}}while(0);j=c[v>>2]|0;if((c[s>>2]|0)>(j|0)){c[v>>2]=j+1;z=c[w>>2]|0;a[z+(j*20|0)>>0]=109;b[z+(j*20|0)+2>>1]=0;c[z+(j*20|0)+4>>2]=g;c[z+(j*20|0)+8>>2]=k;c[z+(j*20|0)+12>>2]=f;c[z+(j*20|0)+16>>2]=0;a[z+(j*20|0)+1>>0]=0}else j=Di(u,109,g,k,f)|0;if(!(a[(c[u>>2]|0)+81>>0]|0)){g=c[w>>2]|0;a[g+(j*20|0)+1>>0]=-3;c[g+(j*20|0)+16>>2]=3}j=c[v>>2]|0;if((j|0)<=0){Ra=A;return}b[(c[w>>2]|0)+((j+-1|0)*20|0)+2>>1]=l&255;Ra=A;return}function jn(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;fa=Ra;Ra=Ra+16|0;t=fa+8|0;s=fa;Z=c[f>>2]|0;_=j+1|0;$=j+2|0;ea=j+3|0;da=j+4|0;ca=j+5|0;ba=j+6|0;W=j+7|0;X=f+44|0;Y=c[X>>2]|0;c[X>>2]=(Y|0)>(W|0)?Y:W;Y=f+8|0;l=c[Y>>2]|0;if(!l){if((c[f+116>>2]|0)==0?(b[Z+76>>1]&8)==0:0)a[f+23>>0]=1;a:do if(c[Z+272>>2]|0)if(!(a[Z+81>>0]|0))V=15;else{Ra=fa;return}else{do if((e[Z+276>>1]|0)>=224){l=Z+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];aa=Z+284|0;c[aa>>2]=(c[aa>>2]|0)+1;break a}l=Z+296|0;m=c[l>>2]|0;if(!m){l=Z+292|0;break}else{c[l>>2]=c[m>>2];aa=Z+284|0;c[aa>>2]=(c[aa>>2]|0)+1;break a}}else l=Z+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;V=15}while(0);if((V|0)==15)m=_d(Z,224,0)|0;if(!m){Ra=fa;return}o=m+104|0;p=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));c[m>>2]=Z;l=Z+4|0;n=c[l>>2]|0;if(n|0)c[n+4>>2]=m;c[m+8>>2]=n;c[m+4>>2]=0;c[l>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[Y>>2]=m;Di(m,61,0,1,0)|0;aa=m}else aa=l;if((g|0)==0|(aa|0)==0){Ra=fa;return}q=g+28|0;m=c[q>>2]|0;if(!m){Ra=fa;return}l=c[g>>2]|0;if(!(md(46886,l,31415,92)|0)){Ra=fa;return}o=c[g+72>>2]|0;p=c[Z+16>>2]|0;if(!o)n=-1e6;else{n=0;while(1)if((c[p+(n<<4)+12>>2]|0)==(o|0))break;else n=n+1|0}o=c[p+(n<<4)>>2]|0;p=c[f>>2]|0;do if(((a[p+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(r=c[p+312>>2]|0,(r|0)!=0):0){l=$a[r&127](c[p+316>>2]|0,28,l,0,o,c[f+240>>2]|0)|0;if((l|0)==1){cd(f,39216,s);c[f+12>>2]=23;Ra=fa;return}if((l|2|0)!=2){cd(f,39231,t);c[f+12>>2]=1;Ra=fa;return}if(!l){m=c[q>>2]|0;l=c[g>>2]|0;break}else{Ra=fa;return}}while(0);Hj(f,n,m,0,l);S=k+1|0;T=k+2|0;m=f+40|0;l=c[m>>2]|0;c[m>>2]=(l|0)>(T|0)?l:T;Gj(f,k,n,g,108);m=c[g>>2]|0;T=aa+108|0;l=c[T>>2]|0;U=aa+112|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;R=c[aa+104>>2]|0;a[R+(l*20|0)>>0]=110;b[R+(l*20|0)+2>>1]=0;c[R+(l*20|0)+4>>2]=0;c[R+(l*20|0)+8>>2]=da;c[R+(l*20|0)+12>>2]=0;c[R+(l*20|0)+16>>2]=0;a[R+(l*20|0)+1>>0]=0}else l=Di(aa,110,0,da,0)|0;if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[T>>2]|0)+-1|0;Ei(aa,(c[aa+104>>2]|0)+(l*20|0)|0,m,0)}m=c[g+8>>2]|0;R=(h|0)==0;if(!m)l=1;else{B=g+36|0;C=aa+104|0;D=f+56|0;E=Z+272|0;F=Z+276|0;G=Z+81|0;H=Z+288|0;I=Z+300|0;J=Z+296|0;K=Z+284|0;L=Z+292|0;M=aa+12|0;N=(Z|0)==0;O=Z+480|0;P=Z+304|0;Q=Z+308|0;l=1;do{b:do if(R|(m|0)==(h|0)){l=(c[m+36>>2]|0)==0?0:l;o=m+55|0;o=d[o>>0]|d[o+1>>0]<<8;if(!((c[B>>2]&32|0)!=0&(o&3)==2)){q=e[m+52>>1]|0;p=c[m>>2]|0;if(!(o&8))t=q;else t=e[m+50>>1]|0}else{q=e[m+50>>1]|0;t=q;p=c[g>>2]|0}A=t+-1|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;z=c[C>>2]|0;a[z+(o*20|0)>>0]=110;b[z+(o*20|0)+2>>1]=0;c[z+(o*20|0)+4>>2]=0;c[z+(o*20|0)+8>>2]=ca;c[z+(o*20|0)+12>>2]=0;c[z+(o*20|0)+16>>2]=0;a[z+(o*20|0)+1>>0]=0}else o=Di(aa,110,0,ca,0)|0;if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;Ei(aa,(c[C>>2]|0)+(o*20|0)|0,p,0)}p=c[X>>2]|0;o=A+W|0;c[X>>2]=(p|0)>(o|0)?p:o;o=c[m+44>>2]|0;p=c[T>>2]|0;if((c[U>>2]|0)>(p|0)){c[T>>2]=p+1;z=c[C>>2]|0;a[z+(p*20|0)>>0]=108;b[z+(p*20|0)+2>>1]=0;c[z+(p*20|0)+4>>2]=S;c[z+(p*20|0)+8>>2]=o;c[z+(p*20|0)+12>>2]=n;c[z+(p*20|0)+16>>2]=0;a[z+(p*20|0)+1>>0]=0}else Di(aa,108,S,o,n)|0;o=c[Y>>2]|0;r=Ij(f,m)|0;c:do if(r|0){p=c[o>>2]|0;if(!(a[p+81>>0]|0)){y=c[o+104>>2]|0;z=(c[o+108>>2]|0)+-1|0;a[y+(z*20|0)+1>>0]=-9;c[y+(z*20|0)+16>>2]=r;break}if(c[p+480>>2]|0)break;z=(c[r>>2]|0)+-1|0;c[r>>2]=z;if(z|0)break;o=c[r+12>>2]|0;do if(o|0){if(c[o+480>>2]|0){Xd(o,r);break c}p=r;if((c[o+304>>2]|0)>>>0>p>>>0)break;if((c[o+308>>2]|0)>>>0<=p>>>0)break;z=o+300|0;c[r>>2]=c[z>>2];c[z>>2]=r;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{z=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;z=c[C>>2]|0;a[z+(o*20|0)>>0]=70;b[z+(o*20|0)+2>>1]=0;c[z+(o*20|0)+4>>2]=q;c[z+(o*20|0)+8>>2]=$;c[z+(o*20|0)+12>>2]=0;c[z+(o*20|0)+16>>2]=0;a[z+(o*20|0)+1>>0]=0}else Di(aa,70,q,$,0)|0;s=m+50|0;o=e[s>>1]|0;p=c[T>>2]|0;if((c[U>>2]|0)>(p|0)){c[T>>2]=p+1;z=c[C>>2]|0;a[z+(p*20|0)>>0]=70;b[z+(p*20|0)+2>>1]=0;c[z+(p*20|0)+4>>2]=o;c[z+(p*20|0)+8>>2]=ea;c[z+(p*20|0)+12>>2]=0;c[z+(p*20|0)+16>>2]=0;a[z+(p*20|0)+1>>0]=0}else Di(aa,70,o,ea,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;z=c[C>>2]|0;a[z+(o*20|0)>>0]=63;b[z+(o*20|0)+2>>1]=0;c[z+(o*20|0)+4>>2]=0;c[z+(o*20|0)+8>>2]=$;c[z+(o*20|0)+12>>2]=_;c[z+(o*20|0)+16>>2]=0;a[z+(o*20|0)+1>>0]=0}else o=Di(aa,63,0,$,_)|0;do if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;p=c[C>>2]|0;q=p+(o*20|0)+1|0;if(!(a[q>>0]|0)){c[p+(o*20|0)+16>>2]=30184;a[q>>0]=-8;break}else{Ei(aa,p+(o*20|0)|0,30184,-8);break}}while(0);o=c[T>>2]|0;if((o|0)>0)b[(c[C>>2]|0)+((o+-1|0)*20|0)+2>>1]=2;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;z=c[C>>2]|0;a[z+(o*20|0)>>0]=36;b[z+(o*20|0)+2>>1]=0;c[z+(o*20|0)+4>>2]=S;c[z+(o*20|0)+8>>2]=0;c[z+(o*20|0)+12>>2]=0;c[z+(o*20|0)+16>>2]=0;a[z+(o*20|0)+1>>0]=0;z=o}else z=Di(aa,36,S,0,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;y=c[C>>2]|0;a[y+(o*20|0)>>0]=70;b[y+(o*20|0)+2>>1]=0;c[y+(o*20|0)+4>>2]=0;c[y+(o*20|0)+8>>2]=$;c[y+(o*20|0)+12>>2]=0;c[y+(o*20|0)+16>>2]=0;a[y+(o*20|0)+1>>0]=0}else Di(aa,70,0,$,0)|0;o=c[T>>2]|0;d:do if(t>>>0>1){y=c[D>>2]|0;w=y+-1|0;c[D>>2]=w;p=A<<2;e:do if(c[E>>2]|0)if(!(a[G>>0]|0))V=105;else break b;else{do if(0<0|(0==0?(e[F>>1]|0)>>>0

        >>0:0))o=H;else{o=c[I>>2]|0;if(o|0){c[I>>2]=c[o>>2];c[K>>2]=(c[K>>2]|0)+1;x=o;break e}o=c[J>>2]|0;if(!o){o=L;break}c[J>>2]=c[o>>2];c[K>>2]=(c[K>>2]|0)+1;x=o;break e}while(0);c[o>>2]=(c[o>>2]|0)+1;V=105}while(0);if((V|0)==105){V=0;x=_d(Z,p,0)|0}if(!x)break b;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;p=c[C>>2]|0;a[p+(o*20|0)>>0]=11;o=p+(o*20|0)+1|0;p=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(p|0))}else Di(aa,11,0,0,0)|0;r=c[T>>2]|0;do if((A|0)==1){if((b[s>>1]|0)!=1)break;if(!(a[m+54>>0]|0))break;if((c[U>>2]|0)>(r|0)){c[T>>2]=r+1;v=c[C>>2]|0;a[v+(r*20|0)>>0]=51;b[v+(r*20|0)+2>>1]=0;c[v+(r*20|0)+4>>2]=W;c[v+(r*20|0)+8>>2]=w;c[v+(r*20|0)+12>>2]=0;c[v+(r*20|0)+16>>2]=0;a[v+(r*20|0)+1>>0]=0;break}else{Di(aa,51,W,w,0)|0;break}}while(0);v=m+32|0;u=0;do{o=c[(c[v>>2]|0)+(u<<2)>>2]|0;q=c[f>>2]|0;p=a[q+78>>0]|0;t=a[q+165>>0]|0;q=Zi(q,p,o,t&255)|0;do if(!(t<<24>>24)){if(!q){q=_i(f,p,0,o)|0;break}if(c[q+12>>2]|0)break;q=_i(f,p,q,o)|0}while(0);o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;t=c[C>>2]|0;a[t+(o*20|0)>>0]=70;b[t+(o*20|0)+2>>1]=0;c[t+(o*20|0)+4>>2]=u;c[t+(o*20|0)+8>>2]=$;c[t+(o*20|0)+12>>2]=0;c[t+(o*20|0)+16>>2]=0;a[t+(o*20|0)+1>>0]=0}else Di(aa,70,u,$,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;t=c[C>>2]|0;a[t+(o*20|0)>>0]=90;b[t+(o*20|0)+2>>1]=0;c[t+(o*20|0)+4>>2]=S;c[t+(o*20|0)+8>>2]=u;c[t+(o*20|0)+12>>2]=ea;c[t+(o*20|0)+16>>2]=0;a[t+(o*20|0)+1>>0]=0}else Di(aa,90,S,u,ea)|0;o=u+W|0;p=c[T>>2]|0;if((c[U>>2]|0)>(p|0)){c[T>>2]=p+1;t=c[C>>2]|0;a[t+(p*20|0)>>0]=52;b[t+(p*20|0)+2>>1]=0;c[t+(p*20|0)+4>>2]=ea;c[t+(p*20|0)+8>>2]=0;c[t+(p*20|0)+12>>2]=o;c[t+(p*20|0)+16>>2]=0;a[t+(p*20|0)+1>>0]=0}else p=Di(aa,52,ea,0,o)|0;do if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((p|0)<0)o=(c[T>>2]|0)+-1|0;else o=p;s=c[C>>2]|0;t=s+(o*20|0)+1|0;if(a[t>>0]|0){Ei(aa,s+(o*20|0)|0,q,-2);break}if(!q)break;c[s+(o*20|0)+16>>2]=q;a[t>>0]=-2}while(0);c[x+(u<<2)>>2]=p;o=c[T>>2]|0;if((o|0)>0)b[(c[C>>2]|0)+((o+-1|0)*20|0)+2>>1]=128;u=u+1|0}while((u|0)<(A|0));if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;v=c[C>>2]|0;a[v+(o*20|0)>>0]=70;b[v+(o*20|0)+2>>1]=0;c[v+(o*20|0)+4>>2]=A;c[v+(o*20|0)+8>>2]=$;c[v+(o*20|0)+12>>2]=0;c[v+(o*20|0)+16>>2]=0;a[v+(o*20|0)+1>>0]=0}else Di(aa,70,A,$,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;v=c[C>>2]|0;a[v+(o*20|0)>>0]=11;b[v+(o*20|0)+2>>1]=0;c[v+(o*20|0)+4>>2]=0;c[v+(o*20|0)+8>>2]=w;c[v+(o*20|0)+12>>2]=0;c[v+(o*20|0)+16>>2]=0;a[v+(o*20|0)+1>>0]=0}else Di(aa,11,0,w,0)|0;q=c[T>>2]|0;p=a[(c[aa>>2]|0)+81>>0]|0;if(!(p<<24>>24))o=(c[C>>2]|0)+((((r|0)<1?q:r)+-1|0)*20|0)|0;else o=59308;c[o+8>>2]=q;o=0;s=q;while(1){q=c[x+(o<<2)>>2]|0;if(!(p<<24>>24))p=(c[C>>2]|0)+(((q|0)<0?s+-1|0:q)*20|0)|0;else p=59308;c[p+8>>2]=s;p=o+W|0;if((c[U>>2]|0)>(s|0)){c[T>>2]=s+1;w=c[C>>2]|0;a[w+(s*20|0)>>0]=90;b[w+(s*20|0)+2>>1]=0;c[w+(s*20|0)+4>>2]=S;c[w+(s*20|0)+8>>2]=o;c[w+(s*20|0)+12>>2]=p;c[w+(s*20|0)+16>>2]=0;a[w+(s*20|0)+1>>0]=0}else Di(aa,90,S,o,p)|0;o=o+1|0;if((o|0)>=(A|0))break;p=a[(c[aa>>2]|0)+81>>0]|0;s=c[T>>2]|0}p=c[M>>2]|0;o=0-y|0;if(((c[p+56>>2]|0)+(c[p+60>>2]|0)|0)<0)mk(p,aa,o);else c[(c[p+64>>2]|0)+(o<<2)>>2]=c[T>>2];do if(!N){if(c[O>>2]|0){Xd(Z,x);break d}o=x;if((c[P>>2]|0)>>>0>o>>>0)break;if((c[Q>>2]|0)>>>0<=o>>>0)break;c[x>>2]=c[I>>2];c[I>>2]=x;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](x);break}else{A=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x);break}}else r=o;while(0);o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=63;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=1;c[A+(o*20|0)+8>>2]=_;c[A+(o*20|0)+12>>2]=ea;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else o=Di(aa,63,1,_,ea)|0;do if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;p=c[C>>2]|0;q=p+(o*20|0)+1|0;if(!(a[q>>0]|0)){c[p+(o*20|0)+16>>2]=30224;a[q>>0]=-8;break}else{Ei(aa,p+(o*20|0)|0,30224,-8);break}}while(0);o=c[T>>2]|0;if((o|0)>0)b[(c[C>>2]|0)+((o+-1|0)*20|0)+2>>1]=2;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=5;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=S;c[A+(o*20|0)+8>>2]=r;c[A+(o*20|0)+12>>2]=0;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else Di(aa,5,S,r,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=63;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=0;c[A+(o*20|0)+8>>2]=_;c[A+(o*20|0)+12>>2]=ba;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else o=Di(aa,63,0,_,ba)|0;do if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;p=c[C>>2]|0;q=p+(o*20|0)+1|0;if(!(a[q>>0]|0)){c[p+(o*20|0)+16>>2]=30264;a[q>>0]=-8;break}else{Ei(aa,p+(o*20|0)|0,30264,-8);break}}while(0);o=c[T>>2]|0;if((o|0)>0)b[(c[C>>2]|0)+((o+-1|0)*20|0)+2>>1]=1;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=92;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=da;c[A+(o*20|0)+8>>2]=3;c[A+(o*20|0)+12>>2]=ea;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else o=Di(aa,92,da,3,ea)|0;if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;Ei(aa,(c[C>>2]|0)+(o*20|0)|0,46896,0)}o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=121;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=i;c[A+(o*20|0)+8>>2]=j;c[A+(o*20|0)+12>>2]=0;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else Di(aa,121,i,j,0)|0;o=c[T>>2]|0;if((c[U>>2]|0)>(o|0)){c[T>>2]=o+1;A=c[C>>2]|0;a[A+(o*20|0)>>0]=122;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=i;c[A+(o*20|0)+8>>2]=ea;c[A+(o*20|0)+12>>2]=j;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0}else Di(aa,122,i,ea,j)|0;p=c[T>>2]|0;if((p|0)>0)b[(c[C>>2]|0)+((p+-1|0)*20|0)+2>>1]=8;if(!(a[(c[aa>>2]|0)+81>>0]|0))o=(c[C>>2]|0)+(((z|0)<0?p+-1|0:z)*20|0)|0;else o=59308;c[o+8>>2]=p}while(0);m=c[m+20>>2]|0}while((m|0)!=0)}if(l<<24>>24==0|R^1){Ra=fa;return}l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;$=c[aa+104>>2]|0;a[$+(l*20|0)>>0]=93;b[$+(l*20|0)+2>>1]=0;c[$+(l*20|0)+4>>2]=k;c[$+(l*20|0)+8>>2]=ba;c[$+(l*20|0)+12>>2]=0;c[$+(l*20|0)+16>>2]=0;a[$+(l*20|0)+1>>0]=0}else Di(aa,93,k,ba,0)|0;l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;n=c[aa+104>>2]|0;a[n+(l*20|0)>>0]=20;b[n+(l*20|0)+2>>1]=0;c[n+(l*20|0)+4>>2]=ba;c[n+(l*20|0)+8>>2]=0;c[n+(l*20|0)+12>>2]=0;c[n+(l*20|0)+16>>2]=0;a[n+(l*20|0)+1>>0]=0;n=l}else n=Di(aa,20,ba,0,0)|0;l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;ba=c[aa+104>>2]|0;a[ba+(l*20|0)>>0]=73;b[ba+(l*20|0)+2>>1]=0;c[ba+(l*20|0)+4>>2]=0;c[ba+(l*20|0)+8>>2]=ca;c[ba+(l*20|0)+12>>2]=0;c[ba+(l*20|0)+16>>2]=0;a[ba+(l*20|0)+1>>0]=0}else Di(aa,73,0,ca,0)|0;l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;ca=c[aa+104>>2]|0;a[ca+(l*20|0)>>0]=92;b[ca+(l*20|0)+2>>1]=0;c[ca+(l*20|0)+4>>2]=da;c[ca+(l*20|0)+8>>2]=3;c[ca+(l*20|0)+12>>2]=ea;c[ca+(l*20|0)+16>>2]=0;a[ca+(l*20|0)+1>>0]=0}else l=Di(aa,92,da,3,ea)|0;if(!(a[(c[aa>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[T>>2]|0)+-1|0;Ei(aa,(c[aa+104>>2]|0)+(l*20|0)|0,46896,0)}l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;da=c[aa+104>>2]|0;a[da+(l*20|0)>>0]=121;b[da+(l*20|0)+2>>1]=0;c[da+(l*20|0)+4>>2]=i;c[da+(l*20|0)+8>>2]=j;c[da+(l*20|0)+12>>2]=0;c[da+(l*20|0)+16>>2]=0;a[da+(l*20|0)+1>>0]=0}else Di(aa,121,i,j,0)|0;l=c[T>>2]|0;if((c[U>>2]|0)>(l|0)){c[T>>2]=l+1;da=c[aa+104>>2]|0;a[da+(l*20|0)>>0]=122;b[da+(l*20|0)+2>>1]=0;c[da+(l*20|0)+4>>2]=i;c[da+(l*20|0)+8>>2]=ea;c[da+(l*20|0)+12>>2]=j;c[da+(l*20|0)+16>>2]=0;a[da+(l*20|0)+1>>0]=0}else Di(aa,122,i,ea,j)|0;m=c[T>>2]|0;if((m|0)>0)b[(c[aa+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=8;if(!(a[(c[aa>>2]|0)+81>>0]|0))l=(c[aa+104>>2]|0)+(((n|0)<0?m+-1|0:n)*20|0)|0;else l=59308;c[l+8>>2]=m;Ra=fa;return}function kn(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=c[h>>2]|0;i=e[f+8>>1]|0;do if(!(i&4)){if(i&8|0){o=Mg(+g[f>>3])|0;L()|0;break}if(!(i&18))o=0;else{o=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;L()|0}}else o=c[f>>2]|0;while(0);p=o+1&-2;f=c[h+4>>2]|0;i=e[f+8>>1]|0;do if(!(i&4)){if(i&8|0){l=Mg(+g[f>>3])|0;L()|0;break}if(!(i&18))l=0;else{l=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;L()|0}}else l=c[f>>2]|0;while(0);m=(p<<3)+60|0;n=c[(c[d>>2]|0)+32>>2]|0;h=((m|0)<0)<<31>>31;a:do if(!n){h=Sv(m|0,h|0,-1,-1)|0;i=L()|0;if(!(i>>>0>0|(i|0)==0&h>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](m)|0;k=37;break}h=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;i=59064;f=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&f>>>0>0){q=c[14978]|0;i=Tv(f|0,i|0,h|0,((h|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&i>>>0<=q>>>0)&1}f=Wa[c[29340>>2]&127](h)|0;if(f|0){i=Wa[c[29352>>2]&127](f)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;k=47}else k=47}}}else{if(c[n+272>>2]|0){if(a[n+81>>0]|0)break}else{do if(!(0>>0|(0==(h|0)?(e[n+276>>1]|0)>>>0>>0:0))){f=n+300|0;i=c[f>>2]|0;if(i|0){c[f>>2]=c[i>>2];j=n+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;k=37;break a}f=n+296|0;i=c[f>>2]|0;if(!i){f=n+292|0;break}else{c[f>>2]=c[i>>2];j=n+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;k=37;break a}}else f=n+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}j=_d(n,m,h)|0;k=37}while(0);if((k|0)==37?j|0:0){f=j;k=47}if((k|0)==47){gw(f|0,0,m|0)|0;c[f+56>>2]=n;c[f>>2]=0;c[f+8>>2]=o;c[f+12>>2]=l;q=f+60|0;c[f+24>>2]=q;c[f+20>>2]=q+(p<<2);if((yc(c[d>>2]|0,f,60,0,96)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}f=c[d>>2]|0;i=f+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else{Dg(f);f=c[d>>2]|0}c[d+20>>2]=7;f=c[f+32>>2]|0;i=f+81|0;if(a[i>>0]|0)return;if(a[f+82>>0]|0)return;a[i>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;q=f+272|0;c[q>>2]=(c[q>>2]|0)+1;f=c[f+236>>2]|0;if(!f)return;c[f+12>>2]=7;return}function ln(a){a=a|0;var b=0,d=0;b=c[a+56>>2]|0;if(!a)return;if(b|0){if(c[b+480>>2]|0){Xd(b,a);return}d=a;if((c[b+304>>2]|0)>>>0<=d>>>0?(c[b+308>>2]|0)>>>0>d>>>0:0){d=b+300|0;c[a>>2]=c[d>>2];c[d>>2]=a;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function mn(b,d,f){b=b|0;d=d|0;f=f|0;var h=0,i=0,j=0;j=mc(c[f>>2]|0)|0;b=c[f+4>>2]|0;d=e[b+8>>1]|0;do if(!(d&4)){if(d&8|0){i=Mg(+g[b>>3])|0;L()|0;break}if(!(d&18))i=0;else{i=Ng(a[b+10>>0]|0,c[b+12>>2]|0,c[b+16>>2]|0)|0;L()|0}}else i=c[b>>2]|0;while(0);if(!(c[j>>2]|0)){d=j+8|0;if((c[d>>2]|0)<=0){i=c[j>>2]|0;i=i+1|0;c[j>>2]=i;return}f=c[j+20>>2]|0;b=0;do{c[f+(b<<2)>>2]=1;b=b+1|0}while((b|0)<(c[d>>2]|0));i=c[j>>2]|0;i=i+1|0;c[j>>2]=i;return}if((i|0)>0){d=c[j+20>>2]|0;b=0;do{h=d+(b<<2)|0;c[h>>2]=(c[h>>2]|0)+1;b=b+1|0}while((b|0)!=(i|0))}d=j+8|0;if((i|0)>=(c[d>>2]|0)){i=c[j>>2]|0;i=i+1|0;c[j>>2]=i;return}f=c[j+24>>2]|0;h=c[j+20>>2]|0;b=i;do{i=f+(b<<2)|0;c[i>>2]=(c[i>>2]|0)+1;c[h+(b<<2)>>2]=1;b=b+1|0}while((b|0)<(c[d>>2]|0));i=c[j>>2]|0;i=i+1|0;c[j>>2]=i;return}function nn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=Ra;Ra=Ra+16|0;l=m+8|0;i=m;j=mc(c[f>>2]|0)|0;k=j+12|0;h=((c[k>>2]|0)*25|0)+25|0;g=Sv(h|0,((h|0)<0)<<31>>31|0,-1,-1)|0;f=L()|0;do if(!(f>>>0>0|(f|0)==0&g>>>0>2147483390)){if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](h)|0;if(!e)break}else{e=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){n=c[14978]|0;g=Tv(f|0,g|0,e|0,((e|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&g>>>0<=n>>>0)&1}e=Wa[c[29340>>2]&127](e)|0;if(!e)break;f=Wa[c[29352>>2]&127](e)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}gw(e|0,0,h|0)|0;n=i;c[n>>2]=c[j>>2];c[n+4>>2]=0;Cb(24,e,46929,i)|0;if((c[k>>2]|0)>0){i=j+24|0;g=0;h=e+((Eu(e)|0)&1073741823)|0;while(1){o=(c[(c[i>>2]|0)+(g<<2)>>2]|0)+1|0;f=c[j>>2]|0;n=Sv(o|0,0,-1,-1)|0;f=Sv(n|0,L()|0,f|0,0)|0;o=_v(f|0,L()|0,o|0,0)|0;f=L()|0;n=l;c[n>>2]=o;c[n+4>>2]=f;Cb(24,h,46934,l)|0;if(!h)f=0;else f=(Eu(h)|0)&1073741823;g=g+1|0;if((g|0)>=(c[k>>2]|0))break;else h=h+f|0}}if((yc(c[d>>2]|0,e,-1,1,90)|0)!=18){Ra=m;return}c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;Ra=m;return}while(0);e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;f=e+81|0;if(a[f>>0]|0){Ra=m;return}if(a[e+82>>0]|0){Ra=m;return}a[f>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;o=e+272|0;c[o>>2]=(c[o>>2]|0)+1;e=c[e+236>>2]|0;if(!e){Ra=m;return}c[e+12>>2]=7;Ra=m;return}function on(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+16|0;k=l;j=c[e>>2]|0;a:do if(j){f=a[j>>0]|0;do if(!(f<<24>>24)){f=39441;i=3}else{h=f&255;f=208+h|0;if((h|32|0)==115){f=a[j+1>>0]|0;if(!(f<<24>>24)){f=39442;i=3;break}h=f&255;f=208+h|0;if((h|32|0)==113){f=a[j+2>>0]|0;if(!(f<<24>>24)){f=39443;i=3;break}h=f&255;f=208+h|0;if((h|32|0)==108){f=a[j+3>>0]|0;if(!(f<<24>>24)){f=39444;i=3;break}h=f&255;f=208+h|0;if((h|32|0)==105){f=a[j+4>>0]|0;if(!(f<<24>>24)){f=39445;i=3;break}h=f&255;f=208+h|0;if((h|32|0)==116){f=a[j+5>>0]|0;if(!(f<<24>>24)){f=39446;i=3;break}h=f&255;f=208+h|0;if((h|32|0)==101){f=a[j+6>>0]|0;if(!(f<<24>>24)){f=39447;i=3;break}if(f<<24>>24==95)break a;else{h=95;f=208+(f&255)|0}}else h=101}else h=116}else h=105}else h=108}else h=113}else h=115;g=d[f>>0]|0;f=h}while(0);if((i|0)==3){g=0;f=a[208+(d[f>>0]|0)>>0]|0}if((g|0)!=(f&255|0))i=8}else i=8;while(0);if((i|0)==8){if(!(c[e+36>>2]&1024)){k=0;Ra=l;return k|0}f=c[b>>2]|0;if(0==0?(c[f+32>>2]&268435456|0)==0:0){k=0;Ra=l;return k|0}if(c[f+180>>2]|0){k=0;Ra=l;return k|0}}c[k>>2]=j;cd(b,47776,k);k=1;Ra=l;return k|0}function pn(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=Ra;Ra=Ra+32|0;h=k;i=h+20|0;a[i>>0]=1;c[h+4>>2]=127;c[h+8>>2]=128;c[h+24>>2]=0;if(!g){j=0;Ra=k;return j|0}_j(h,g)|0;if(a[i>>0]|0){j=g;Ra=k;return j|0}if((d[f+200>>0]|0)>1){i=h+8|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;c[i+16>>2]=0;c[h>>2]=f;c[h+4>>2]=124;_j(h,g)|0}ni(c[f>>2]|0,g);g=c[f>>2]|0;a:do if(c[g+272>>2]|0)if(!(a[g+81>>0]|0))j=15;else{j=0;Ra=k;return j|0}else{do if((e[g+276>>1]|0)>=52){f=g+300|0;h=c[f>>2]|0;if(h|0){c[f>>2]=c[h>>2];i=g+284|0;c[i>>2]=(c[i>>2]|0)+1;break a}f=g+296|0;h=c[f>>2]|0;if(!h){f=g+292|0;break}else{c[f>>2]=c[h>>2];i=g+284|0;c[i>>2]=(c[i>>2]|0)+1;break a}}else f=g+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;j=15}while(0);if((j|0)==15)h=_d(g,52,0)|0;if(!h){j=h;Ra=k;return j|0}f=h;g=f+52|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));a[h>>0]=114;b[h+34>>1]=-1;c[h+24>>2]=1;j=h;Ra=k;return j|0}function qn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0;e=c[f>>2]|0;if(!e)return;f=b[e+8>>1]|0;if((f&514)==514?(a[e+10>>0]|0)==1:0)e=c[e+16>>2]|0;else g=5;do if((g|0)==5)if(!(f&1)){e=Gg(e,1)|0;break}else return;while(0);if(!e)return;h=Wd(e)|0;e=c[d>>2]|0;f=((h|0)<0)<<31>>31;g=e+8|0;if(!(b[g>>1]&9216)){d=e;c[d>>2]=h;c[d+4>>2]=f;b[g>>1]=4;return}else{Pg(e,h,f);return}}function rn(b,d,f){b=b|0;d=d|0;f=f|0;d=c[f>>2]|0;f=e[d+8>>1]|0;do if(!(f&4)){if(f&8|0){d=Mg(+g[d>>3])|0;L()|0;f=7;break}if(!(f&18)){d=26464;f=8}else{d=Ng(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)|0;L()|0;f=7}}else{d=c[d>>2]|0;f=7}while(0);if((f|0)==7)if(d>>>0<7){d=26464+(d<<2)|0;f=8}else d=0;if((f|0)==8)d=c[d>>2]|0;if((yc(c[b>>2]|0,d,-1,1,0)|0)!=18)return;c[b+20>>2]=18;yc(c[b>>2]|0,31223,-1,1,0)|0;return}function sn(a,b,d){a=a|0;b=b|0;d=d|0;if((yc(c[a>>2]|0,31142,-1,1,0)|0)!=18)return;c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0;return}function tn(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=c[g>>2]|0;i=b[h+8>>1]|0;if((h|0)==0|(-1431655766>>>(i&31)&1|0)!=0)return;if((i&514)==514?(a[h+10>>0]|0)==1:0)i=c[h+16>>2]|0;else q=5;do if((q|0)==5)if(!(i&1)){i=Gg(h,1)|0;break}else return;while(0);if(!i)return;k=c[g>>2]|0;h=b[k+8>>1]|0;if((h&2)!=0?(a[k+10>>0]|0)==1:0)h=c[k+12>>2]|0;else q=11;do if((q|0)==11){j=h&65535;if(!(j&16)){if(j&1|0){h=0;break}h=Fg(k,1)|0;break}else{h=c[k+12>>2]|0;if(!(j&16384))break;h=(c[k>>2]|0)+h|0;break}}while(0);a:do if((f|0)!=1){j=c[g+4>>2]|0;if(!j)return;k=b[j+8>>1]|0;if((k&514)==514?(a[j+10>>0]|0)==1:0)p=c[j+16>>2]|0;else q=21;do if((q|0)==21)if(!(k&1)){p=Gg(j,1)|0;break}else return;while(0);if(!p)return;k=a[p>>0]|0;if(k<<24>>24){j=p;l=0;do{f=j+1|0;if((k&255)>191){j=f;while(1){k=a[j>>0]|0;if((k&-64)<<24>>24==-128)j=j+1|0;else break}}else{j=f;k=a[f>>0]|0}l=l+1|0}while(k<<24>>24!=0);f=Yv(l|0,0,5,0)|0;j=L()|0;k=c[e>>2]|0;o=c[(c[k+32>>2]|0)+108>>2]|0;n=((o|0)<0)<<31>>31;if((j|0)>(n|0)|(j|0)==(n|0)&f>>>0>o>>>0){c[e+20>>2]=18;yc(k,31223,-1,1,0)|0;return}o=Sv(f|0,j|0,-1,-1)|0;n=L()|0;do if(!(n>>>0>0|(n|0)==0&o>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](f)|0;if(!j)break}else{g=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){o=c[14978]|0;n=Tv(j|0,k|0,g|0,((g|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=o>>>0)&1}j=Wa[c[29340>>2]&127](g)|0;if(!j)break;k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}m=j+(l<<2)|0;if(!(a[p>>0]|0))break a;g=0;k=p;while(1){c[j+(g<<2)>>2]=k;f=k+1|0;l=k;if((d[k>>0]|0)>191){k=f;while(1)if((a[k>>0]&-64)<<24>>24==-128)k=k+1|0;else break}else k=f;a[m+g>>0]=k-l;f=g+1|0;if(!(a[k>>0]|0)){o=j;n=j;q=60;break a}else g=f}}while(0);h=c[e>>2]|0;i=h+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else{Dg(h);h=c[e>>2]|0}c[e+20>>2]=7;h=c[h+32>>2]|0;i=h+81|0;if(a[i>>0]|0)return;if(a[h+82>>0]|0)return;a[i>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;e=h+272|0;c[e>>2]=(c[e>>2]|0)+1;h=c[h+236>>2]|0;if(!h)return;c[h+12>>2]=7;return}}else{p=0;o=30304;m=49513;f=1;n=30304;q=60}while(0);do if((q|0)==60){l=c[(c[e+4>>2]|0)+8>>2]|0;b:do if((l&1|0)!=0&(h|0)>0)do{j=0;while(1){k=a[m+j>>0]|0;g=k&255;if((h|0)>=(g|0)?(Lu(i,c[o+(j<<2)>>2]|0,g)|0)==0:0)break;j=j+1|0;if(j>>>0>=f>>>0){q=67;break b}}g=k&255;i=i+g|0;h=h-g|0}while((h|0)>0);else q=67;while(0);c:do if((q|0)==67)if((l&2|0)!=0&(h|0)>0)while(1){j=0;while(1){k=d[m+j>>0]|0;if((h|0)>=(k|0)?(r=h-k|0,(Lu(i+r|0,c[o+(j<<2)>>2]|0,k)|0)==0):0)break;j=j+1|0;if(j>>>0>=f>>>0)break c}if((r|0)>0)h=r;else{h=r;break}}while(0);if(!((n|0)==0|(p|0)==0))if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{r=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);if((yc(c[e>>2]|0,i,h,1,-1)|0)!=18)return;c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;return}function un(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=((c[(c[a+4>>2]|0)+8>>2]|0)!=0)<<31>>31;i=c[(c[(c[a+12>>2]|0)+104>>2]|0)+(((c[a+16>>2]|0)+-1|0)*20|0)+16>>2]|0;f=c[e>>2]|0;if(-1431655766>>>(b[f+8>>1]&31)&1|0)return;do if((d|0)>1){h=0;f=1;while(1){g=c[e+(f<<2)>>2]|0;if(-1431655766>>>(b[g+8>>1]&31)&1|0){g=8;break}g=((Tg(c[e+(h<<2)>>2]|0,g,i)|0)^j|0)>-1;h=g?f:h;f=f+1|0;if((f|0)>=(d|0)){g=6;break}}if((g|0)==6){f=c[e+(h<<2)>>2]|0;break}else if((g|0)==8)return}while(0);Dc(a,f);return}function vn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=c[f>>2]|0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))i=Ic(d,40)|0;else i=c[e+16>>2]|0;if(!i)return;h=g+8|0;j=i+8|0;e=(b[j>>1]|0)!=0;if(-1431655766>>>(b[h>>1]&31)&1|0){if(!e)return;c[d+20>>2]=-1;a[d+24>>0]=1;return}if(!e){c[i+32>>2]=c[(c[d>>2]|0)+32>>2];c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];c[i+16>>2]=c[g+16>>2];f=b[j>>1]&-1025;b[j>>1]=f;f=f&65535;if(!(f&18))return;if(b[h>>1]&2048)return;e=(f|4096)&65535;b[j>>1]=e;do if(f&16384){g=i+12|0;f=(c[i>>2]|0)+(c[g>>2]|0)|0;if((f|0)<1)if(!(e&16))break;else e=1;else e=f;if(!(Eg(i,e,1)|0)){gw((c[i+16>>2]|0)+(c[g>>2]|0)|0,0,c[i>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+(c[i>>2]|0);e=b[j>>1]&-16897;b[j>>1]=e;break}else return}while(0);if(!((c[i+24>>2]|0)!=0?(c[i+16>>2]|0)==(c[i+20>>2]|0):0))k=49;do if((k|0)==49)if(!(Jg(i)|0)){e=b[j>>1]|0;break}else return;while(0);b[j>>1]=e&-4097;return}e=(c[(c[d+4>>2]|0)+8>>2]|0)!=0;f=Tg(i,g,c[(c[(c[d+12>>2]|0)+104>>2]|0)+(((c[d+16>>2]|0)+-1|0)*20|0)+16>>2]|0)|0;if(e&(f|0)<0){if(b[j>>1]&9216)Dg(i);c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];c[i+16>>2]=c[g+16>>2];f=b[j>>1]&-1025;b[j>>1]=f;f=f&65535;if(!(f&18))return;if(b[h>>1]&2048)return;e=(f|4096)&65535;b[j>>1]=e;do if(f&16384){g=i+12|0;f=(c[i>>2]|0)+(c[g>>2]|0)|0;if((f|0)<1)if(!(e&16))break;else e=1;else e=f;if(!(Eg(i,e,1)|0)){gw((c[i+16>>2]|0)+(c[g>>2]|0)|0,0,c[i>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+(c[i>>2]|0);e=b[j>>1]&-16897;b[j>>1]=e;break}else return}while(0);if(!((c[i+24>>2]|0)!=0?(c[i+16>>2]|0)==(c[i+20>>2]|0):0))k=22;do if((k|0)==22)if(!(Jg(i)|0)){e=b[j>>1]|0;break}else return;while(0);b[j>>1]=e&-4097;return}if(!((f|0)>0&(e^1))){c[d+20>>2]=-1;a[d+24>>0]=1;return}if(b[j>>1]&9216)Dg(i);c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];c[i+16>>2]=c[g+16>>2];f=b[j>>1]&-1025;b[j>>1]=f;f=f&65535;if(!(f&18))return;if(b[h>>1]&2048)return;e=(f|4096)&65535;b[j>>1]=e;do if(f&16384){g=i+12|0;f=(c[i>>2]|0)+(c[g>>2]|0)|0;if((f|0)<1)if(!(e&16))break;else e=1;else e=f;if(!(Eg(i,e,1)|0)){gw((c[i+16>>2]|0)+(c[g>>2]|0)|0,0,c[i>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+(c[i>>2]|0);e=b[j>>1]&-16897;b[j>>1]=e;break}else return}while(0);if(!((c[i+24>>2]|0)!=0?(c[i+16>>2]|0)==(c[i+20>>2]|0):0))k=36;do if((k|0)==36)if(!(Jg(i)|0)){e=b[j>>1]|0;break}else return;while(0);b[j>>1]=e&-4097;return}function wn(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d)return;e=d+8|0;if(!((b[e>>1]|0)!=0?(Dc(a,d),(b[e>>1]&9216)!=0):0))f=7;if((f|0)==7?(c[d+24>>2]|0)==0:0)return;Cg(d);return}function xn(a){a=a|0;var d=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d)return;if(!(b[d+8>>1]|0))return;Dc(a,d);return}function yn(a,e,f){a=a|0;e=e|0;f=f|0;if((yc(c[a>>2]|0,c[21712+((d[816+(b[(c[f>>2]|0)+8>>1]&31)>>0]|0)+-1<<2)>>2]|0,-1,1,0)|0)!=18)return;c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0;return}function zn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[f>>2]|0;e=b[g+8>>1]|0;switch(a[816+(e&31)>>0]|0){case 2:case 1:case 4:{if((e&2)!=0?(a[g+10>>0]|0)==1:0)f=c[g+12>>2]|0;else i=5;do if((i|0)==5){e=e&65535;if(!(e&16)){if(e&1|0){f=0;break}f=Fg(g,1)|0;break}else{f=c[g+12>>2]|0;if(!(e&16384))break;f=(c[g>>2]|0)+f|0;break}}while(0);e=c[d>>2]|0;g=((f|0)<0)<<31>>31;h=e+8|0;if(!(b[h>>1]&9216)){d=e;c[d>>2]=f;c[d+4>>2]=g;b[h>>1]=4;return}else{Pg(e,f,g);return}}case 3:{if(!g)return;if((e&514)==514?(a[g+10>>0]|0)==1:0)h=c[g+16>>2]|0;else i=17;do if((i|0)==17)if(!(e&1)){h=Gg(g,1)|0;break}else return;while(0);if(!h)return;g=a[h>>0]|0;if(!(g<<24>>24)){f=h;e=h}else{e=h;f=h;do{f=f+1|0;h=a[f>>0]|0;if((g&255)>191&(h&-64)<<24>>24==-128)do{f=f+1|0;e=e+1|0;g=a[f>>0]|0}while((g&-64)<<24>>24==-128);else g=h}while(g<<24>>24!=0)}h=f-e|0;e=c[d>>2]|0;f=((h|0)<0)<<31>>31;g=e+8|0;if(!(b[g>>1]&9216)){d=e;c[d>>2]=h;c[d+4>>2]=f;b[g>>1]=4;return}else{Pg(e,h,f);return}}default:{e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216)){b[f>>1]=1;return}else{Dg(e);return}}}}function An(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=c[f>>2]|0;e=b[g+8>>1]|0;m=e&31;n=f+4|0;i=c[n>>2]|0;j=b[i+8>>1]|0;l=j&31;if((-1431655766>>>l|-1431655766>>>m)&1|0)return;if((e&2)!=0?(a[g+10>>0]|0)==1:0){h=c[g+12>>2]|0;e=j}else k=5;do if((k|0)==5){e=e&65535;if(!(e&16)){if(e&1|0){h=0;e=j;break}h=Fg(g,1)|0;i=c[n>>2]|0;e=b[i+8>>1]|0;break}else{h=c[g+12>>2]|0;if(!(e&16384)){e=j;break}h=(c[g>>2]|0)+h|0;e=j;break}}while(0);if((e&2)!=0?(a[i+10>>0]|0)==1:0){o=c[i+12>>2]|0;k=18}else k=13;do if((k|0)==13){g=e&65535;if(!(g&16)){if(g&1|0){e=1;i=0;break}o=Fg(i,1)|0;k=18;break}else{e=c[i+12>>2]|0;if(!(g&16384)){o=e;k=18;break}o=(c[i>>2]|0)+e|0;k=18;break}}while(0);a:do if((k|0)==18)if((o|0)>0){g=c[f>>2]|0;do if(!((m|16|0)==16&(l|16|0)==16)){do if(g){e=b[g+8>>1]|0;if((e&514)==514?(a[g+10>>0]|0)==1:0){g=c[g+16>>2]|0;break}if(!(e&1))g=Gg(g,1)|0;else g=0}else g=0;while(0);i=c[n>>2]|0;if(!i)return;e=b[i+8>>1]|0;if((e&514)==514?(a[i+10>>0]|0)==1:0){e=1;k=c[i+16>>2]|0;break}if(!(e&1)){e=1;k=Gg(i,1)|0;break}else return}else{g=mc(g)|0;e=0;k=mc(c[n>>2]|0)|0}while(0);if(!k)return;if((h|0)!=0&(g|0)==0)return;l=a[k>>0]|0;if((o|0)>(h|0)){e=0;i=0}else{b:do if(!e){e=1;while(1){if((a[g>>0]|0)==l<<24>>24?(Lu(g,k,o)|0)==0:0)break b;if((o|0)<(h|0)){e=e+1|0;h=h+-1|0;g=g+1|0}else{e=0;i=0;break a}}}else{e=1;j=g;g=a[g>>0]|0;while(1){if(g<<24>>24==l<<24>>24?(Lu(j,k,o)|0)==0:0)break b;while(1){i=h+-1|0;j=j+1|0;g=a[j>>0]|0;if((g&-64)<<24>>24!=-128)break;else h=i}if((o|0)<(h|0)){e=e+1|0;h=i}else{e=0;i=0;break a}}}while(0);i=0}}else{e=1;i=0}while(0);g=c[d>>2]|0;h=g+8|0;if(!(b[h>>1]&9216)){d=g;c[d>>2]=e;c[d+4>>2]=i;b[h>>1]=4;return}else{Pg(g,e,i);return}}function Bn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+48|0;l=n;k=n+32|0;m=n+8|0;j=c[(c[d>>2]|0)+32>>2]|0;if((e|0)<=0){Ra=n;return}h=c[f>>2]|0;if(!h){Ra=n;return}g=b[h+8>>1]|0;if((g&514)==514?(a[h+10>>0]|0)==1:0)g=c[h+16>>2]|0;else i=6;do if((i|0)==6)if(!(g&1)){g=Gg(h,1)|0;break}else{Ra=n;return}while(0);if(!g){Ra=n;return}c[k>>2]=e+-1;c[k+4>>2]=0;c[k+8>>2]=f+4;h=c[j+108>>2]|0;i=m+4|0;c[i>>2]=0;c[m>>2]=j;c[m+8>>2]=0;e=m+12|0;c[e>>2]=h;h=m+16|0;c[h>>2]=0;a[m+20>>0]=0;f=m+21|0;a[f>>0]=2;c[l>>2]=k;Eb(m,g,l);h=c[h>>2]|0;g=c[i>>2]|0;if(((g|0)!=0?(a[g+h>>0]=0,(c[e>>2]|0)!=0):0)?(a[f>>0]&4)==0:0)g=$d(m)|0;else g=c[i>>2]|0;if((yc(c[d>>2]|0,g,h,1,116)|0)!=18){Ra=n;return}c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;Ra=n;return}function Cn(e,f,g){e=e|0;f=f|0;g=g|0;var h=0;f=c[g>>2]|0;if(!f)return;g=b[f+8>>1]|0;if((g&514)==514?(a[f+10>>0]|0)==1:0)f=c[f+16>>2]|0;else h=5;do if((h|0)==5)if(!(g&1)){f=Gg(f,1)|0;break}else return;while(0);if(!f)return;g=a[f>>0]|0;if(!(g<<24>>24))return;h=f+1|0;f=g&255;if((g&255)>191){f=d[2736+(f+-192)>>0]|0;g=a[h>>0]|0;if((g&-64)<<24>>24==-128)do{h=h+1|0;f=f<<6|g&63;g=a[h>>0]|0}while((g&-64)<<24>>24==-128);f=(f&-2|0)==65534|(f>>>0<128|(f&-2048|0)==55296)?65533:f}g=c[e>>2]|0;h=((f|0)<0)<<31>>31;e=g+8|0;if(!(b[e>>1]&9216)){c[g>>2]=f;c[g+4>>2]=h;b[e>>1]=4;return}else{Pg(g,f,h);return}}function Dn(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=f<<2|1;q=pb(q,((q|0)<0)<<31>>31)|0;if(!q){i=c[d>>2]|0;j=i+8|0;if(!(b[j>>1]&9216))b[j>>1]=1;else{Dg(i);i=c[d>>2]|0}c[d+20>>2]=7;i=c[i+32>>2]|0;j=i+81|0;if(a[j>>0]|0)return;if(a[i+82>>0]|0)return;a[j>>0]=1;if((c[i+180>>2]|0)>0)c[i+264>>2]=1;d=i+272|0;c[d>>2]=(c[d>>2]|0)+1;i=c[i+236>>2]|0;if(!i)return;c[i+12>>2]=7;return}if((f|0)>0){o=0;i=q;do{j=c[h+(o<<2)>>2]|0;k=e[j+8>>1]|0;do if(!(k&4)){if(k&8|0){k=Mg(+g[j>>3])|0;j=L()|0;p=19;break}if(!(k&18)){n=i;m=1;j=0}else{k=Ng(a[j+10>>0]|0,c[j+12>>2]|0,c[j+16>>2]|0)|0;j=L()|0;p=19}}else{k=j;j=c[k+4>>2]|0;k=c[k>>2]|0;p=19}while(0);do if((p|0)==19){p=0;l=k&2097151;if(!(j>>>0>0|(j|0)==0&k>>>0>1114111)){if(l>>>0<128){n=i;m=1;j=l;break}if(l>>>0<2048){a[i>>0]=k>>>6&31|192;n=i+1|0;m=2;j=k&63|128;break}if(l>>>0<65536)j=l;else{a[i>>0]=l>>>18|240;a[i+1>>0]=k>>>12&63|128;a[i+2>>0]=k>>>6&63|128;n=i+3|0;m=4;j=k&63|128;break}}else j=65533;a[i>>0]=j>>>12&15|224;a[i+1>>0]=j>>>6&63|128;n=i+2|0;m=3;j=j&63|128}while(0);i=i+m|0;a[n>>0]=j;o=o+1|0}while((o|0)!=(f|0))}else i=q;i=i-q|0;if((i|0)>=0){if((yc(c[d>>2]|0,q,i,1,90)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}do if(90!=-1)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{p=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);if(!d)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}function En(d,e,f){d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+16|0;i=l+8|0;j=l;f=c[f>>2]|0;e=b[f+8>>1]|0;switch(a[816+(e&31)>>0]|0){case 1:{e=e&65535;do if(!(e&4)){if(e&8|0){e=Mg(+g[f>>3])|0;f=L()|0;k=8;break}if(!(e&18)){e=0;j=0}else{e=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;f=L()|0;k=8}}else{e=f;f=c[e+4>>2]|0;e=c[e>>2]|0;k=8}while(0);do if((k|0)==8)if((f|0)<0){if(!((e|0)==0&(f|0)==-2147483648)){e=Tv(0,0,e|0,f|0)|0;j=L()|0;break}c[d+20>>2]=1;yc(c[d>>2]|0,49524,-1,1,-1)|0;Ra=l;return}else j=f;while(0);f=c[d>>2]|0;i=f+8|0;if(!(b[i>>1]&9216)){d=f;c[d>>2]=e;c[d+4>>2]=j;b[i>>1]=4;Ra=l;return}else{Pg(f,e,j);Ra=l;return}}case 5:{e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216)){b[f>>1]=1;Ra=l;return}else{Dg(e);Ra=l;return}}default:{e=e&65535;do if(!(e&8)){if(e&4|0){k=f;h=+((c[k>>2]|0)>>>0)+4294967296.0*+(c[k+4>>2]|0);break}if(!(e&18))h=0.0;else h=+Kg(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)}else h=+g[f>>3];while(0);h=h<0.0?-h:h;e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else Dg(e);g[i>>3]=h;g[j>>3]=+g[i>>3];if(!(+g[i>>3]==+g[j>>3])){Ra=l;return}g[e>>3]=h;b[f>>1]=8;Ra=l;return}}}function Fn(d,e,f){d=d|0;e=e|0;f=f|0;var h=0,i=0.0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+48|0;j=n+24|0;l=n+16|0;m=n+8|0;k=n;a:do if((e|0)==2){h=c[f+4>>2]|0;e=b[h+8>>1]|0;if(-1431655766>>>(e&31)&1|0){Ra=n;return}e=e&65535;do if(!(e&4)){if(e&8|0){e=Mg(+g[h>>3])|0;L()|0;break}if(!(e&18)){e=0;break a}e=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}else e=c[h>>2]|0;while(0);if((e|0)<30){if((e|0)<=0){e=0;break}}else e=30}else e=0;while(0);f=c[f>>2]|0;h=b[f+8>>1]|0;if(-1431655766>>>(h&31)&1|0){Ra=n;return}h=h&65535;do if(!(h&8)){if(h&4|0){i=+((c[f>>2]|0)>>>0)+4294967296.0*+(c[f+4>>2]|0);break}if(!(h&18))i=0.0;else i=+Kg(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)}else i=+g[f>>3];while(0);g[k>>3]=i;h=(e|0)==0;do if(i<9223372036854775808.0&(h&i>=0.0)){i=i+.5;i=+(~~i>>>0>>>0)+4294967296.0*+((+t(i)>=1.0?(i>0.0?~~+H(+s(i/4294967296.0),4294967295.0)>>>0:~~+F((i-+(~~i>>>0))/4294967296.0)>>>0):0)|0);g[k>>3]=i}else{if(i>-9223372036854775808.0&(h&i<0.0)){i=.5-i;i=-(+(~~i>>>0>>>0)+4294967296.0*+((+t(i)>=1.0?(i>0.0?~~+H(+s(i/4294967296.0),4294967295.0)>>>0:~~+F((i-+(~~i>>>0))/4294967296.0)>>>0):0)|0));g[k>>3]=i;break}c[j>>2]=e;g[j+8>>3]=i;e=Bb(49541,j)|0;if(e|0){Lg(e,k,(Eu(e)|0)&1073741823,1)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{j=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}e=c[d>>2]|0;h=e+8|0;if(!(b[h>>1]&9216))b[h>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;h=e+81|0;if(a[h>>0]|0){Ra=n;return}if(a[e+82>>0]|0){Ra=n;return}a[h>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e){Ra=n;return}c[e+12>>2]=7;Ra=n;return}while(0);i=+g[k>>3];e=c[d>>2]|0;h=e+8|0;if(!(b[h>>1]&9216))b[h>>1]=1;else Dg(e);g[l>>3]=i;g[m>>3]=+g[l>>3];if(!(+g[l>>3]==+g[m>>3])){Ra=n;return}g[e>>3]=i;b[h>>1]=8;Ra=n;return}function Gn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=c[f>>2]|0;e=b[g+8>>1]|0;if((e&514)==514?(a[g+10>>0]|0)==1:0){j=c[g+16>>2]|0;f=g}else if(!(e&1)){j=Gg(g,1)|0;f=c[f>>2]|0}else{j=0;f=g}e=b[f+8>>1]|0;if((e&2)!=0?(a[f+10>>0]|0)==1:0)i=c[f+12>>2]|0;else h=9;do if((h|0)==9){e=e&65535;if(!(e&16)){if(e&1|0){i=0;break}i=Fg(f,1)|0;break}else{g=c[f+12>>2]|0;if(!(e&16384)){i=g;break}i=(c[f>>2]|0)+g|0;break}}while(0);if(!j)return;g=Sv(i|0,((i|0)<0)<<31>>31|0,1,0)|0;L()|0;e=c[d>>2]|0;if((i|0)>=(c[(c[e+32>>2]|0)+108>>2]|0)){c[d+20>>2]=18;yc(e,31223,-1,1,0)|0;return}do if(i>>>0<=2147483390){if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](g)|0;if(!e)break}else{f=Wa[c[29356>>2]&127](g)|0;if((c[14985]|0)>>>0>>0)c[14985]=g;g=59064;e=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&e>>>0>0){h=c[14978]|0;g=Tv(e|0,g|0,f|0,((f|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&g>>>0<=h>>>0)&1}e=Wa[c[29340>>2]&127](f)|0;if(!e)break;g=Wa[c[29352>>2]&127](e)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}if((i|0)>0){g=0;do{h=a[j+g>>0]|0;a[e+g>>0]=h&~(a[880+(h&255)>>0]&32);g=g+1|0}while((g|0)!=(i|0))}if((yc(c[d>>2]|0,e,i,1,90)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}while(0);e=c[d>>2]|0;g=e+8|0;if(!(b[g>>1]&9216))b[g>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;g=e+81|0;if(a[g>>0]|0)return;if(a[e+82>>0]|0)return;a[g>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}function Hn(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=c[g>>2]|0;f=b[h+8>>1]|0;if((f&514)==514?(a[h+10>>0]|0)==1:0){k=c[h+16>>2]|0;g=h}else if(!(f&1)){k=Gg(h,1)|0;g=c[g>>2]|0}else{k=0;g=h}f=b[g+8>>1]|0;if((f&2)!=0?(a[g+10>>0]|0)==1:0)j=c[g+12>>2]|0;else i=9;do if((i|0)==9){f=f&65535;if(!(f&16)){if(f&1|0){j=0;break}j=Fg(g,1)|0;break}else{h=c[g+12>>2]|0;if(!(f&16384)){j=h;break}j=(c[g>>2]|0)+h|0;break}}while(0);if(!k)return;h=Sv(j|0,((j|0)<0)<<31>>31|0,1,0)|0;L()|0;f=c[e>>2]|0;if((j|0)>=(c[(c[f+32>>2]|0)+108>>2]|0)){c[e+20>>2]=18;yc(f,31223,-1,1,0)|0;return}do if(j>>>0<=2147483390){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](h)|0;if(!f)break}else{g=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;h=59064;f=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&f>>>0>0){i=c[14978]|0;h=Tv(f|0,h|0,g|0,((g|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&h>>>0<=i>>>0)&1}f=Wa[c[29340>>2]&127](g)|0;if(!f)break;h=Wa[c[29352>>2]&127](f)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}if((j|0)>0){h=0;do{a[f+h>>0]=a[208+(d[k+h>>0]|0)>>0]|0;h=h+1|0}while((h|0)!=(j|0))}if((yc(c[e>>2]|0,f,j,1,90)|0)!=18)return;c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;return}while(0);f=c[e>>2]|0;h=f+8|0;if(!(b[h>>1]&9216))b[h>>1]=1;else{Dg(f);f=c[e>>2]|0}c[e+20>>2]=7;f=c[f+32>>2]|0;h=f+81|0;if(a[h>>0]|0)return;if(a[f+82>>0]|0)return;a[h>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;e=f+272|0;c[e>>2]=(c[e>>2]|0)+1;f=c[f+236>>2]|0;if(!f)return;c[f+12>>2]=7;return}function In(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=mc(c[g>>2]|0)|0;h=c[g>>2]|0;f=b[h+8>>1]|0;if((f&2)!=0?(a[h+10>>0]|0)==1:0)g=c[h+12>>2]|0;else i=4;do if((i|0)==4){f=f&65535;if(!(f&16)){if(f&1|0){g=0;break}g=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(f&16384))break;g=(c[h>>2]|0)+g|0;break}}while(0);i=cw(g|0,((g|0)<0)<<31>>31|0,1)|0;f=L()|0;i=i|1;h=c[e>>2]|0;k=c[(c[h+32>>2]|0)+108>>2]|0;j=((k|0)<0)<<31>>31;if((f|0)>(j|0)|(f|0)==(j|0)&i>>>0>k>>>0){c[e+20>>2]=18;yc(h,31223,-1,1,0)|0;return}k=Sv(i|0,f|0,-1,-1)|0;j=L()|0;do if(!(j>>>0>0|(j|0)==0&k>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](i)|0;if(!f)break;else h=f}else{j=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;h=59064;f=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&f>>>0>0){k=c[14978]|0;i=Tv(f|0,h|0,j|0,((j|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=k>>>0)&1}h=Wa[c[29340>>2]&127](j)|0;if(!h)break;f=Wa[c[29352>>2]&127](h)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}k=g<<1;if((g|0)>0){j=h;f=l;i=0;while(1){l=d[f>>0]|0;a[j>>0]=a[21744+(l>>>4)>>0]|0;a[j+1>>0]=a[21744+(l&15)>>0]|0;i=i+1|0;if((i|0)==(g|0))break;else{j=j+2|0;f=f+1|0}}f=h+k|0}else f=h;a[f>>0]=0;if((yc(c[e>>2]|0,h,k,1,90)|0)!=18)return;c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;return}while(0);f=c[e>>2]|0;g=f+8|0;if(!(b[g>>1]&9216))b[g>>1]=1;else{Dg(f);f=c[e>>2]|0}c[e+20>>2]=7;f=c[f+32>>2]|0;g=f+81|0;if(a[g>>0]|0)return;if(a[f+82>>0]|0)return;a[g>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;e=f+272|0;c[e>>2]=(c[e>>2]|0)+1;f=c[f+236>>2]|0;if(!f)return;c[f+12>>2]=7;return}function Jn(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=Ra;Ra=Ra+16|0;d=h;Fb(8,d);f=d;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)<0){g=Tv(0,0,e|0,f&2147483647|0)|0;f=L()|0;e=d;c[e>>2]=g;c[e+4>>2]=f}else g=e;d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216)){a=d;c[a>>2]=g;c[a+4>>2]=f;b[e>>1]=4;Ra=h;return}else{Pg(d,g,f);Ra=h;return}}function Kn(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0;f=c[h>>2]|0;h=e[f+8>>1]|0;do if(!(h&4)){if(h&8|0){h=Mg(+g[f>>3])|0;f=L()|0;j=7;break}if(!(h&18)){i=0;f=1}else{h=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;f=L()|0;j=7}}else{h=f;f=c[h+4>>2]|0;h=c[h>>2]|0;j=7}while(0);if((j|0)==7){j=(f|0)>0|(f|0)==0&h>>>0>1;i=j?f:0;f=j?h:1}h=c[d>>2]|0;j=c[(c[h+32>>2]|0)+108>>2]|0;k=((j|0)<0)<<31>>31;if((i|0)>(k|0)|(i|0)==(k|0)&f>>>0>j>>>0){c[d+20>>2]=18;yc(h,31223,-1,1,0)|0;return}k=Sv(f|0,i|0,-1,-1)|0;j=L()|0;do if(!(j>>>0>0|(j|0)==0&k>>>0>2147483390)){if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](f)|0;if(!h)break}else{h=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){k=c[14978]|0;j=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&j>>>0<=k>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h)break;i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}Fb(f,h);if((yc(c[d>>2]|0,h,f,0,90)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}while(0);f=c[d>>2]|0;h=f+8|0;if(!(b[h>>1]&9216))b[h>>1]=1;else{Dg(f);f=c[d>>2]|0}c[d+20>>2]=7;f=c[f+32>>2]|0;h=f+81|0;if(a[h>>0]|0)return;if(a[f+82>>0]|0)return;a[h>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;k=f+272|0;c[k>>2]=(c[k>>2]|0)+1;f=c[f+236>>2]|0;if(!f)return;c[f+12>>2]=7;return}function Ln(a,b,d){a=a|0;b=b|0;d=d|0;if(!(Tg(c[d>>2]|0,c[d+4>>2]|0,c[(c[(c[a+12>>2]|0)+104>>2]|0)+(((c[a+16>>2]|0)+-1|0)*20|0)+16>>2]|0)|0))return;Dc(a,c[d>>2]|0);return}function Mn(a,b,d){a=a|0;b=b|0;d=d|0;if((yc(c[a>>2]|0,31497,-1,1,0)|0)!=18)return;c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0;return}function Nn(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0;k=Ra;Ra=Ra+16|0;j=k;d=c[h>>2]|0;f=e[d+8>>1]|0;do if(!(f&4)){if(f&8|0){i=Mg(+g[d>>3])|0;L()|0;break}if(!(f&18))i=0;else{i=Ng(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)|0;L()|0}}else i=c[d>>2]|0;while(0);d=c[h+4>>2]|0;do if(d){f=b[d+8>>1]|0;if((f&514)==514?(a[d+10>>0]|0)==1:0){d=c[d+16>>2]|0;break}if(!(f&1))d=Gg(d,1)|0;else d=0}else d=0;while(0);c[j>>2]=d;Db(i,31408,j);Ra=k;return}function On(e,f,h){e=e|0;f=f|0;h=h|0;var i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+80|0;n=q+72|0;m=q+64|0;k=q+56|0;l=q;i=c[h>>2]|0;f=b[i+8>>1]|0;switch(a[816+(f&31)>>0]|0){case 2:{f=f&65535;do if(!(f&8)){if(f&4|0){p=i;j=+((c[p>>2]|0)>>>0)+4294967296.0*+(c[p+4>>2]|0);break}if(!(f&18))j=0.0;else j=+Kg(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)}else j=+g[i>>3];while(0);g[m>>3]=j;Cb(50,l,32529,m)|0;Lg(l,k,20,1)|0;if(j!=+g[k>>3]){g[n>>3]=j;Cb(50,l,49546,n)|0}if((yc(c[e>>2]|0,l,-1,1,-1)|0)==18){c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0}Ra=q;return}case 1:{Dc(e,i);Ra=q;return}case 4:{m=mc(i)|0;h=c[h>>2]|0;f=b[h+8>>1]|0;if((f&2)!=0?(a[h+10>>0]|0)==1:0)l=c[h+12>>2]|0;else o=17;do if((o|0)==17){f=f&65535;if(!(f&16)){if(f&1|0){l=0;break}l=Fg(h,1)|0;break}else{i=c[h+12>>2]|0;if(!(f&16384)){l=i;break}l=(c[h>>2]|0)+i|0;break}}while(0);f=cw(l|0,((l|0)<0)<<31>>31|0,1)|0;i=L()|0;k=Sv(f|0,i|0,4,0)|0;n=L()|0;h=c[e>>2]|0;p=c[(c[h+32>>2]|0)+108>>2]|0;o=((p|0)<0)<<31>>31;if((n|0)>(o|0)|(n|0)==(o|0)&k>>>0>p>>>0){c[e+20>>2]=18;yc(h,31223,-1,1,0)|0;Ra=q;return}p=Sv(f|0,i|0,3,0)|0;o=L()|0;do if(!(o>>>0>0|(o|0)==0&p>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](k)|0;if(!f)break}else{h=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;i=59064;f=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&f>>>0>0){p=c[14978]|0;o=Tv(f|0,i|0,h|0,((h|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=p>>>0)&1}f=Wa[c[29340>>2]&127](h)|0;if(!f)break;i=Wa[c[29352>>2]&127](f)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}if((l|0)>0){i=0;do{o=m+i|0;p=i<<1;a[f+(p+2)>>0]=a[21744+((d[o>>0]|0)>>>4)>>0]|0;a[f+(p+3)>>0]=a[21744+(a[o>>0]&15)>>0]|0;i=i+1|0}while((i|0)!=(l|0))}p=l<<1;a[f+(p+2)>>0]=39;a[f+(p+3)>>0]=0;a[f>>0]=88;a[f+1>>0]=39;if((yc(c[e>>2]|0,f,-1,1,-1)|0)==18){c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);Ra=q;return}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);Ra=q;return}}while(0);f=c[e>>2]|0;i=f+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else{Dg(f);f=c[e>>2]|0}c[e+20>>2]=7;f=c[f+32>>2]|0;i=f+81|0;if(a[i>>0]|0){Ra=q;return}if(a[f+82>>0]|0){Ra=q;return}a[i>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;e=f+272|0;c[e>>2]=(c[e>>2]|0)+1;f=c[f+236>>2]|0;if(!f){Ra=q;return}c[f+12>>2]=7;Ra=q;return}case 3:{if(!i){Ra=q;return}if((f&514)==514?(a[i+10>>0]|0)==1:0)p=c[i+16>>2]|0;else o=57;do if((o|0)==57)if(!(f&1)){p=Gg(i,1)|0;break}else{Ra=q;return}while(0);if(!p){Ra=q;return}h=0;f=0;i=0;a:while(1){switch(a[p+h>>0]|0){case 0:break a;case 39:{f=Sv(f|0,i|0,1,0)|0;i=L()|0;break}default:{}}h=h+1|0}f=Sv(f|0,i|0,h|0,0)|0;i=L()|0;k=Sv(f|0,i|0,3,0)|0;m=L()|0;h=c[e>>2]|0;o=c[(c[h+32>>2]|0)+108>>2]|0;n=((o|0)<0)<<31>>31;if((m|0)>(n|0)|(m|0)==(n|0)&k>>>0>o>>>0){c[e+20>>2]=18;yc(h,31223,-1,1,0)|0;Ra=q;return}o=Sv(f|0,i|0,2,0)|0;n=L()|0;do if(!(n>>>0>0|(n|0)==0&o>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](k)|0;if(!f)break}else{h=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;i=59064;f=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&f>>>0>0){o=c[14978]|0;n=Tv(f|0,i|0,h|0,((h|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=o>>>0)&1}f=Wa[c[29340>>2]&127](h)|0;if(!f)break;i=Wa[c[29352>>2]&127](f)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}a[f>>0]=39;i=a[p>>0]|0;h=f+1|0;if(!(i<<24>>24))i=2;else{k=1;n=0;m=i;l=p;i=2;do{a[h>>0]=m;if((a[l>>0]|0)==39){a[f+i>>0]=39;k=k+2|0}else k=i;n=n+1|0;l=p+n|0;m=a[l>>0]|0;i=k+1|0;h=f+k|0}while(m<<24>>24!=0)}a[h>>0]=39;a[f+i>>0]=0;if((yc(c[e>>2]|0,f,i,1,90)|0)!=18){Ra=q;return}c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;Ra=q;return}while(0);f=c[e>>2]|0;i=f+8|0;if(!(b[i>>1]&9216))b[i>>1]=1;else{Dg(f);f=c[e>>2]|0}c[e+20>>2]=7;f=c[f+32>>2]|0;i=f+81|0;if(a[i>>0]|0){Ra=q;return}if(a[f+82>>0]|0){Ra=q;return}a[i>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;e=f+272|0;c[e>>2]=(c[e>>2]|0)+1;f=c[f+236>>2]|0;if(!f){Ra=q;return}c[f+12>>2]=7;Ra=q;return}default:{if((yc(c[e>>2]|0,31171,4,1,0)|0)!=18){Ra=q;return}c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;Ra=q;return}}}function Pn(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;e=c[a>>2]|0;a=(c[e+32>>2]|0)+40|0;f=c[a>>2]|0;a=c[a+4>>2]|0;d=e+8|0;if(!(b[d>>1]&9216)){c[e>>2]=f;c[e+4>>2]=a;b[d>>1]=4;return}else{Pg(e,f,a);return}}function Qn(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;d=c[a>>2]|0;e=c[(c[d+32>>2]|0)+100>>2]|0;f=((e|0)<0)<<31>>31;a=d+8|0;if(!(b[a>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[a>>1]=4;return}else{Pg(d,e,f);return}}function Rn(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;d=c[a>>2]|0;e=c[(c[d+32>>2]|0)+104>>2]|0;f=((e|0)<0)<<31>>31;a=d+8|0;if(!(b[a>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[a>>1]=4;return}else{Pg(d,e,f);return}}function Sn(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;i=c[(c[d>>2]|0)+32>>2]|0;e=c[f>>2]|0;if(!e)return;g=b[e+8>>1]|0;if((g&514)==514?(a[e+10>>0]|0)==1:0)A=c[e+16>>2]|0;else B=5;do if((B|0)==5)if(!(g&1)){A=Gg(e,1)|0;break}else return;while(0);if(!A)return;h=c[f>>2]|0;e=b[h+8>>1]|0;if((e&2)!=0?(a[h+10>>0]|0)==1:0)z=c[h+12>>2]|0;else B=11;do if((B|0)==11){e=e&65535;if(!(e&16)){if(e&1|0){z=0;break}z=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(e&16384)){z=g;break}z=(c[h>>2]|0)+g|0;break}}while(0);h=f+4|0;e=c[h>>2]|0;if(!e)return;g=b[e+8>>1]|0;if((g&514)==514?(a[e+10>>0]|0)==1:0)y=c[e+16>>2]|0;else B=20;do if((B|0)==20)if(!(g&1)){y=Gg(e,1)|0;break}else return;while(0);if(!y)return;if(!(a[y>>0]|0)){Dc(d,c[f>>2]|0);return}h=c[h>>2]|0;e=b[h+8>>1]|0;if((e&2)!=0?(a[h+10>>0]|0)==1:0)x=c[h+12>>2]|0;else B=28;do if((B|0)==28){e=e&65535;if(!(e&16)){if(e&1|0){x=0;break}x=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(e&16384)){x=g;break}x=(c[h>>2]|0)+g|0;break}}while(0);h=f+8|0;e=c[h>>2]|0;if(!e)return;g=b[e+8>>1]|0;if((g&514)==514?(a[e+10>>0]|0)==1:0)w=c[e+16>>2]|0;else B=37;do if((B|0)==37)if(!(g&1)){w=Gg(e,1)|0;break}else return;while(0);if(!w)return;h=c[h>>2]|0;e=b[h+8>>1]|0;if((e&2)!=0?(a[h+10>>0]|0)==1:0)v=c[h+12>>2]|0;else B=43;do if((B|0)==43){e=e&65535;if(!(e&16)){if(e&1|0){v=0;break}v=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(e&16384)){v=g;break}v=(c[h>>2]|0)+g|0;break}}while(0);k=z+1|0;j=((k|0)<0)<<31>>31;e=c[d>>2]|0;if((c[(c[e+32>>2]|0)+108>>2]|0)<=(z|0)){c[d+20>>2]=18;yc(e,31223,-1,1,0)|0;return}u=Sv(k|0,j|0,-1,-1)|0;t=L()|0;a:do if(!(t>>>0>0|(t|0)==0&u>>>0>2147483390)){do if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](k)|0;if(!h)break a}else{e=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){u=c[14978]|0;t=Tv(g|0,h|0,e|0,((e|0)<0)<<31>>31|0)|0;s=L()|0;c[14768]=((s|0)<0|(s|0)==0&t>>>0<=u>>>0)&1}h=Wa[c[29340>>2]&127](e)|0;if(!h)break a;e=Wa[c[29352>>2]&127](h)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0<=(c[14987]|0)>>>0)break;c[14987]=e}while(0);u=z-x|0;b:do if((u|0)>=0){r=v-x|0;s=((r|0)<0)<<31>>31;o=i+108|0;t=x+-1|0;p=~z;q=((p|0)<0)<<31>>31;if((v|0)<=(x|0)){g=0;e=0;while(1){f=A+e|0;i=a[f>>0]|0;do if(i<<24>>24==(a[y>>0]|0)){if(Lu(f,y,x)|0){B=86;break}ew(h+g|0,w|0,v|0)|0;g=g+v|0;f=t+e|0}else B=86;while(0);if((B|0)==86){B=0;a[h+g>>0]=i;g=g+1|0;f=e}e=f+1|0;if((f|0)>=(u|0))break b}}n=0;g=0;e=0;c:while(1){f=A+e|0;i=a[f>>0]|0;do if(i<<24>>24==(a[y>>0]|0)){if(Lu(f,y,x)|0){B=77;break}j=Sv(k|0,j|0,r|0,s|0)|0;l=L()|0;k=Sv(j|0,l|0,-1,-1)|0;f=L()|0;m=c[o>>2]|0;i=((m|0)<0)<<31>>31;if((f|0)>(i|0)|(f|0)==(i|0)&k>>>0>m>>>0){B=87;break c}i=n+1|0;if(!(i&n)){if(mb()|0)break c;n=aw(0,j|0,32)|0;f=L()|0;m=Sv(j|0,l|0,p|0,q|0)|0;f=Sv(m|0,L()|0,n|0,f|0)|0;f=sb(h,f,L()|0)|0;if(!f)break c;else h=f}ew(h+g|0,w|0,v|0)|0;g=g+v|0;m=t+e|0;f=i;k=j;i=l}else B=77;while(0);if((B|0)==77){B=0;a[h+g>>0]=i;g=g+1|0;m=e;f=n;i=j}e=m+1|0;if((m|0)<(u|0)){n=f;j=i}else break b}if((B|0)==87){c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;if(!h)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);return}else{d=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);return}}e=c[d>>2]|0;g=e+8|0;if(!(b[g>>1]&9216))b[g>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;g=e+81|0;do if(!(a[g>>0]|0)){if(a[e+82>>0]|0)break;a[g>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)break;c[e+12>>2]=7}while(0);if(!h)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);return}else{d=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);return}}else{g=0;e=0}while(0);B=z-e|0;ew(h+g|0,A+e|0,B|0)|0;B=g+B|0;a[h+B>>0]=0;if((yc(c[d>>2]|0,h,B,1,90)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}while(0);e=c[d>>2]|0;g=e+8|0;if(!(b[g>>1]&9216))b[g>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;g=e+81|0;if(a[g>>0]|0)return;if(a[e+82>>0]|0)return;a[g>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}function Tn(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0;f=c[h>>2]|0;h=e[f+8>>1]|0;do if(!(h&4)){if(h&8|0){h=Mg(+g[f>>3])|0;f=L()|0;j=7;break}if(!(h&18)){f=0;i=0}else{h=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;f=L()|0;j=7}}else{h=f;f=c[h+4>>2]|0;h=c[h>>2]|0;j=7}while(0);if((j|0)==7){i=(f|0)>0|(f|0)==0&h>>>0>0;f=i?f:0;i=i?h:0}h=c[d>>2]|0;j=c[(c[h+32>>2]|0)+108>>2]|0;k=((j|0)<0)<<31>>31;if(f>>>0>k>>>0|(f|0)==(k|0)&i>>>0>j>>>0){c[d+20>>2]=18;if(!(b[h+8>>1]&1))return;yc(h,31223,-1,1,0)|0;return}f=h+8|0;if(!((b[f>>1]&9216)==0?!(c[h+24>>2]|0):0))Cg(h);b[f>>1]=16400;c[h+12>>2]=0;c[h>>2]=(i|0)>0?i:0;a[h+10>>0]=1;c[h+16>>2]=0;return}function Un(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=c[h+4>>2]|0;i=b[k+8>>1]|0;if(-1431655766>>>(i&31)&1|0)return;n=(f|0)==3;if(n?-1431655766>>>(b[(c[h+8>>2]|0)+8>>1]&31)&1|0:0)return;j=c[h>>2]|0;l=b[j+8>>1]&15;f=i&65535;do if(!(f&4)){if(f&8|0){r=Mg(+g[k>>3])|0;L()|0;break}if(!(f&18))r=0;else{r=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;L()|0;j=c[h>>2]|0}}else r=c[k>>2]|0;while(0);q=((r|0)<0)<<31>>31;t=(l|16)<<16>>16==16;if(t){f=b[j+8>>1]|0;if((f&2)!=0?(a[j+10>>0]|0)==1:0){i=c[j+12>>2]|0;f=j}else s=14;do if((s|0)==14){f=f&65535;if(!(f&16)){if(f&1|0){i=0;f=j;break}i=Fg(j,1)|0;f=c[h>>2]|0;break}else{i=c[j+12>>2]|0;if(!(f&16384)){f=j;break}i=(c[j>>2]|0)+i|0;f=j;break}}while(0);f=mc(f)|0;if(!f)return;else{p=f;o=i}}else{if(!j)return;f=b[j+8>>1]|0;if((f&514)==514?(a[j+10>>0]|0)==1:0)l=c[j+16>>2]|0;else s=24;do if((s|0)==24)if(!(f&1)){l=Gg(j,1)|0;break}else return;while(0);if(!l)return;if((r|0)<0?(m=a[l>>0]|0,m<<24>>24!=0):0){k=0;f=l;j=m;while(1){i=f+1|0;if((j&255)>191){f=i;while(1){j=a[f>>0]|0;if((j&-64)<<24>>24==-128)f=f+1|0;else break}}else{f=i;j=a[i>>0]|0}i=k+1|0;if(!(j<<24>>24)){p=l;o=i;break}else k=i}}else{p=l;o=0}}if(n){f=c[h+8>>2]|0;i=e[f+8>>1]|0;do if(!(i&4)){if(i&8|0){f=Mg(+g[f>>3])|0;L()|0;s=42;break}if(!(i&18)){i=0;f=0;j=0}else{f=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;L()|0;s=42}}else{f=c[f>>2]|0;s=42}while(0);if((s|0)==42){j=((f|0)<0)<<31>>31;h=(f|0)<0;n=Tv(0,0,f|0,j|0)|0;s=L()|0;i=f;f=h?n:f;j=h?s:j}l=i>>>31;i=j}else{i=c[(c[(c[d>>2]|0)+32>>2]|0)+108>>2]|0;l=0;f=i;i=((i|0)<0)<<31>>31}do if((r|0)>=0)if(!r){j=((i|0)>0|(i|0)==0&f>>>0>0)<<31>>31;f=Sv(f|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;j=0;k=0;i=L()|0;break}else{j=Sv(r|0,q|0,-1,-1)|0;k=L()|0;break}else{j=Sv(o|0,((o|0)<0)<<31>>31|0,r|0,q|0)|0;k=L()|0;q=(k|0)<0;h=Sv(f|0,i|0,j|0,k|0)|0;s=L()|0;r=(s|0)>0|(s|0)==0&h>>>0>0;j=q?0:j;k=q?0:k;f=q?(r?h:0):f;i=q?(r?s:0):i}while(0);r=(l|0)==0;m=Tv(j|0,k|0,f|0,i|0)|0;l=L()|0;s=(l|0)<0;m=r?j:s?0:m;l=r?k:s?0:l;n=r?f:s?j:f;k=r?i:s?k:i;if(t){r=Sv(m|0,l|0,n|0,k|0)|0;t=L()|0;f=((o|0)<0)<<31>>31;r=(t|0)>(f|0)|(t|0)==(f|0)&r>>>0>o>>>0;f=Tv(o|0,f|0,m|0,l|0)|0;t=L()|0;s=(t|0)>0|(t|0)==0&f>>>0>0;f=r?(s?f:0):n;t=r?(s?t:0):k;if(t>>>0>0|(t|0)==0&f>>>0>2147483647){if(!d)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}else{if((yc(c[d>>2]|0,p+m|0,f,0,-1)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}}i=a[p>>0]|0;if(((m|0)!=0|(l|0)!=0)&i<<24>>24!=0){f=p;do{j=f+1|0;if((i&255)>191){f=j;while(1){i=a[f>>0]|0;if((i&-64)<<24>>24==-128)f=f+1|0;else break}}else{f=j;i=a[j>>0]|0}m=Sv(m|0,l|0,-1,-1)|0;l=L()|0}while(((m|0)!=0|(l|0)!=0)&i<<24>>24!=0);m=f}else m=p;if(i<<24>>24!=0&((n|0)!=0|(k|0)!=0)){f=m;l=n;do{j=f+1|0;if((i&255)>191){f=j;while(1){i=a[f>>0]|0;if((i&-64)<<24>>24==-128)f=f+1|0;else break}}else{f=j;i=a[j>>0]|0}l=Sv(l|0,k|0,-1,-1)|0;k=L()|0}while(i<<24>>24!=0&((l|0)!=0|(k|0)!=0))}else f=m;f=f-m|0;if((f|0)<0){if(!d)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}else{if((yc(c[d>>2]|0,m,f,1,-1)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}}function Vn(f,h,i){f=f|0;h=h|0;i=i|0;var j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=Ra;Ra=Ra+16|0;n=q+8|0;o=q;h=c[f+8>>2]|0;if(!(b[h+8>>1]&8192))p=Ic(f,32)|0;else p=c[h+16>>2]|0;l=c[i>>2]|0;m=l+8|0;f=b[m>>1]&31;k=d[816+f>>0]|0;if((f|16|0)==18){h=a[l+10>>0]|0;f=l+16|0;k=l+12|0;if(!(Lg(c[f>>2]|0,n,c[k>>2]|0,h)|0))h=b[m>>1]|0;else{if(!(Og(c[f>>2]|0,o,c[k>>2]|0,h)|0)){n=o;o=c[n+4>>2]|0;h=l;c[h>>2]=c[n>>2];c[h+4>>2]=o;h=4}else{g[l>>3]=+g[n>>3];h=8}h=b[m>>1]&-3|h;b[m>>1]=h}k=d[816+(h&31)>>0]|0}if(!((p|0)!=0&(k|0)!=5)){Ra=q;return}h=p+16|0;o=h;o=Sv(c[o>>2]|0,c[o+4>>2]|0,1,0)|0;f=L()|0;c[h>>2]=o;c[h+4>>2]=f;h=c[i>>2]|0;f=e[h+8>>1]|0;if((k|0)!=1){do if(!(f&8)){if(f&4|0){i=h;j=+((c[i>>2]|0)>>>0)+4294967296.0*+(c[i+4>>2]|0);break}if(!(f&18))j=0.0;else j=+Kg(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)}else j=+g[h>>3];while(0);g[p>>3]=j+ +g[p>>3];a[p+25>>0]=1;Ra=q;return}do if(!(f&4)){if(f&8|0){m=Mg(+g[h>>3])|0;n=L()|0;break}if(!(f&18)){m=0;n=0}else{m=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;n=L()|0}}else{n=h;m=c[n>>2]|0;n=c[n+4>>2]|0}while(0);g[p>>3]=+g[p>>3]+(+(m>>>0)+4294967296.0*+(n|0));o=p+25|0;i=p+24|0;if((a[i>>0]|a[o>>0])<<24>>24){Ra=q;return}h=p+8|0;k=h;f=c[k>>2]|0;k=c[k+4>>2]|0;if((n|0)>-1|(n|0)==-1&m>>>0>4294967295){p=Tv(-1,2147483647,f|0,k|0)|0;l=L()|0;if(((k|0)>0|(k|0)==0&f>>>0>0)&((l|0)<(n|0)|(l|0)==(n|0)&p>>>0>>0))l=26;else l=25}else if((k|0)<0?(l=Tv(1,-2147483648,f|0,k|0)|0,s=L()|0,p=Sv(m|0,n|0,1,0)|0,r=L()|0,(s|0)>(r|0)|(s|0)==(r|0)&l>>>0>p>>>0):0)l=26;else l=25;if((l|0)==25){p=Sv(f|0,k|0,m|0,n|0)|0;r=L()|0;s=h;c[s>>2]=p;c[s+4>>2]=r;Ra=q;return}else if((l|0)==26){a[i>>0]=1;a[o>>0]=1;Ra=q;return}}function Wn(d){d=d|0;var e=0,f=0,h=0,i=0.0,j=0,k=0,l=0;j=Ra;Ra=Ra+16|0;f=j+8|0;h=j;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=Ic(d,0)|0;else e=c[e+16>>2]|0;if(!e){Ra=j;return}k=e+16|0;l=c[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(c[k>>2]|0)>>>0>0)){Ra=j;return}if(a[e+24>>0]|0){c[d+20>>2]=1;yc(c[d>>2]|0,49524,-1,1,-1)|0;Ra=j;return}if(!(a[e+25>>0]|0)){h=e+8|0;f=c[h>>2]|0;h=c[h+4>>2]|0;e=c[d>>2]|0;d=e+8|0;if(!(b[d>>1]&9216)){l=e;c[l>>2]=f;c[l+4>>2]=h;b[d>>1]=4;Ra=j;return}else{Pg(e,f,h);Ra=j;return}}i=+g[e>>3];e=c[d>>2]|0;d=e+8|0;if(!(b[d>>1]&9216))b[d>>1]=1;else Dg(e);g[f>>3]=i;g[h>>3]=+g[f>>3];if(!(+g[f>>3]==+g[h>>3])){Ra=j;return}g[e>>3]=i;b[d>>1]=8;Ra=j;return}function Xn(f,h,i){f=f|0;h=h|0;i=i|0;var j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+16|0;n=q+8|0;o=q;h=c[f+8>>2]|0;if(!(b[h+8>>1]&8192))p=Ic(f,32)|0;else p=c[h+16>>2]|0;l=c[i>>2]|0;m=l+8|0;k=b[m>>1]&31;h=d[816+k>>0]|0;if((k|16|0)==18){h=a[l+10>>0]|0;f=l+16|0;k=l+12|0;if(!(Lg(c[f>>2]|0,n,c[k>>2]|0,h)|0))h=b[m>>1]|0;else{if(!(Og(c[f>>2]|0,o,c[k>>2]|0,h)|0)){n=o;o=c[n+4>>2]|0;h=l;c[h>>2]=c[n>>2];c[h+4>>2]=o;h=4}else{g[l>>3]=+g[n>>3];h=8}h=b[m>>1]&-3|h;b[m>>1]=h}h=d[816+(h&31)>>0]|0}if(!((p|0)!=0&(h|0)!=5)){Ra=q;return}o=p+16|0;m=o;m=Sv(c[m>>2]|0,c[m+4>>2]|0,-1,-1)|0;n=L()|0;c[o>>2]=m;c[o+4>>2]=n;if((h|0)==1?(a[p+25>>0]|0)==0:0){h=c[i>>2]|0;f=e[h+8>>1]|0;do if(!(f&4)){if(f&8|0){h=Mg(+g[h>>3])|0;f=L()|0;break}if(!(f&18)){h=0;f=0}else{h=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;f=L()|0}}else{f=h;h=c[f>>2]|0;f=c[f+4>>2]|0}while(0);g[p>>3]=+g[p>>3]-(+(h>>>0)+4294967296.0*+(f|0));p=p+8|0;o=p;o=Tv(c[o>>2]|0,c[o+4>>2]|0,h|0,f|0)|0;i=L()|0;c[p>>2]=o;c[p+4>>2]=i;Ra=q;return}h=c[i>>2]|0;f=e[h+8>>1]|0;do if(!(f&8)){if(f&4|0){i=h;j=+((c[i>>2]|0)>>>0)+4294967296.0*+(c[i+4>>2]|0);break}if(!(f&18))j=0.0;else j=+Kg(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)}else j=+g[h>>3];while(0);g[p>>3]=+g[p>>3]-j;Ra=q;return}function Yn(a){a=a|0;var d=0,e=0.0,f=0,h=0,i=0;i=Ra;Ra=Ra+16|0;f=i+8|0;h=i;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d)e=0.0;else e=+g[d>>3];d=c[a>>2]|0;a=d+8|0;if(!(b[a>>1]&9216))b[a>>1]=1;else Dg(d);g[f>>3]=e;g[h>>3]=+g[f>>3];if(!(+g[f>>3]==+g[h>>3])){Ra=i;return}g[d>>3]=e;b[a>>1]=8;Ra=i;return}function Zn(a){a=a|0;var d=0,e=0,f=0,h=0.0,i=0,j=0,k=0;k=Ra;Ra=Ra+16|0;i=k+8|0;j=k;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d){Ra=k;return}f=d+16|0;e=c[f>>2]|0;f=c[f+4>>2]|0;if(!((f|0)>0|(f|0)==0&e>>>0>0)){Ra=k;return}h=+g[d>>3]/(+(e>>>0)+4294967296.0*+(f|0));d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216))b[e>>1]=1;else Dg(d);g[i>>3]=h;g[j>>3]=+g[i>>3];if(!(+g[i>>3]==+g[j>>3])){Ra=k;return}g[d>>3]=h;b[e>>1]=8;Ra=k;return}function _n(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=c[a+8>>2]|0;if(!(b[f+8>>1]&8192))a=Ic(a,8)|0;else a=c[f+16>>2]|0;if(!d){if(!a)return}else if(!(a|0?(1431655765>>>(b[(c[e>>2]|0)+8>>1]&31)&1|0)!=0:0))return;f=a;f=Sv(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;d=L()|0;e=a;c[e>>2]=f;c[e+4>>2]=d;return}function $n(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d){e=0;f=0}else{f=d;e=c[f>>2]|0;f=c[f+4>>2]|0}d=c[a>>2]|0;a=d+8|0;if(!(b[a>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[a>>1]=4;return}else{Pg(d,e,f);return}}function ao(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=c[a+8>>2]|0;if(!(b[f+8>>1]&8192))a=Ic(a,8)|0;else a=c[f+16>>2]|0;if(!d){if(!a)return}else if(!(a|0?(1431655765>>>(b[(c[e>>2]|0)+8>>1]&31)&1|0)!=0:0))return;f=a;f=Sv(c[f>>2]|0,c[f+4>>2]|0,-1,-1)|0;d=L()|0;e=a;c[e>>2]=f;c[e+4>>2]=d;return}function bo(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;if(-1431655766>>>(b[(c[f>>2]|0)+8>>1]&31)&1|0)return;g=c[d+8>>2]|0;if(!(b[g+8>>1]&8192))k=Ic(d,24)|0;else k=c[g+16>>2]|0;if(!k)return;h=k+12|0;i=(c[h>>2]|0)==0;c[h>>2]=c[(c[(c[d>>2]|0)+32>>2]|0)+108>>2];do if(!i){if((e|0)==2){d=f+4|0;e=c[d>>2]|0;g=b[e+8>>1]|0;if((g&514)==514?(a[e+10>>0]|0)==1:0)h=c[e+16>>2]|0;else if(!(g&1)){h=Gg(e,1)|0;e=c[d>>2]|0}else h=0;g=b[e+8>>1]|0;if((g&2)!=0?(a[e+10>>0]|0)==1:0)g=c[e+12>>2]|0;else j=16;do if((j|0)==16){d=g&65535;if(!(d&16)){if(d&1|0){g=0;break}g=Fg(e,1)|0;break}else{g=c[e+12>>2]|0;if(!(d&16384))break;g=(c[e>>2]|0)+g|0;break}}while(0);if(!h)break;else d=h}else{g=1;d=41685}e=k+16|0;h=c[e>>2]|0;i=h+g|0;if(i>>>0>=(c[k+8>>2]|0)>>>0){wb(k,d,g);break}if(g|0){c[e>>2]=i;ew((c[k+4>>2]|0)+h|0,d|0,g|0)|0}}while(0);d=c[f>>2]|0;g=b[d+8>>1]|0;if((g&514)==514?(a[d+10>>0]|0)==1:0){i=c[d+16>>2]|0;e=d}else if(!(g&1)){i=Gg(d,1)|0;e=c[f>>2]|0}else{i=0;e=d}g=b[e+8>>1]|0;if((g&2)!=0?(a[e+10>>0]|0)==1:0)d=c[e+12>>2]|0;else j=34;do if((j|0)==34){g=g&65535;if(!(g&16)){if(g&1|0){d=0;break}d=Fg(e,1)|0;break}else{d=c[e+12>>2]|0;if(!(g&16384))break;d=(c[e>>2]|0)+d|0;break}}while(0);if(!i)return;g=k+16|0;e=c[g>>2]|0;h=e+d|0;if(h>>>0>=(c[k+8>>2]|0)>>>0){wb(k,i,d);return}if(!d)return;c[g>>2]=h;ew((c[k+4>>2]|0)+e|0,i|0,d|0)|0;return}function co(d){d=d|0;var e=0,f=0,g=0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=Ic(d,0)|0;else e=c[e+16>>2]|0;if(!e)return;switch(a[e+20>>0]|0){case 18:{c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}case 7:{e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;f=e+81|0;if(a[f>>0]|0)return;if(a[e+82>>0]|0)return;a[f>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}default:{f=e+4|0;g=c[f>>2]|0;if(((g|0)!=0?(a[g+(c[e+16>>2]|0)>>0]=0,(c[e+12>>2]|0)!=0):0)?(a[e+21>>0]&4)==0:0)e=$d(e)|0;else e=c[f>>2]|0;if((yc(c[d>>2]|0,e,-1,1,90)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}}}function eo(d){d=d|0;var e=0,f=0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=Ic(d,0)|0;else e=c[e+16>>2]|0;if(!e)return;switch(a[e+20>>0]|0){case 18:{c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}case 7:{e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;f=e+81|0;if(a[f>>0]|0)return;if(a[e+82>>0]|0)return;a[f>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}default:{f=c[e+16>>2]|0;if(!f)e=0;else{e=e+4|0;a[(c[e>>2]|0)+f>>0]=0;e=c[e>>2]|0}if((yc(c[d>>2]|0,e,-1,1,-1)|0)!=18)return;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return}}}function fo(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;if(-1431655766>>>(b[(c[f>>2]|0)+8>>1]&31)&1|0)return;g=c[d+8>>2]|0;if(!(b[g+8>>1]&8192))k=Ic(d,24)|0;else k=c[g+16>>2]|0;if(!k)return;h=c[f>>2]|0;d=b[h+8>>1]|0;if((d&2)!=0?(a[h+10>>0]|0)==1:0)j=c[h+12>>2]|0;else i=9;do if((i|0)==9){d=d&65535;if(!(d&16)){if(d&1|0){j=0;break}j=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(d&16384)){j=g;break}j=(c[h>>2]|0)+g|0;break}}while(0);do if((e|0)==2){h=c[f+4>>2]|0;d=b[h+8>>1]|0;if(d&2?(a[h+10>>0]|0)==1:0){d=c[h+12>>2]|0;break}g=d&65535;if(!(g&16)){if(g&1|0){d=0;break}d=Fg(h,1)|0;break}else{d=c[h+12>>2]|0;if(!(g&16384))break;d=(c[h>>2]|0)+d|0;break}}else d=1;while(0);d=d+j|0;g=k+16|0;h=c[g>>2]|0;if((h|0)>(d|0)){f=h-d|0;c[g>>2]=f;e=c[k+4>>2]|0;fw(e|0,e+d|0,f|0)|0;if(c[g>>2]|0)return}else c[g>>2]=0;c[k+12>>2]=0;return}function go(f,h,i){f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;J=Ra;Ra=Ra+368|0;F=J+16|0;r=J;q=J+356|0;G=J+336|0;H=J+60|0;u=J+32|0;I=c[(c[f>>2]|0)+32>>2]|0;h=c[i>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){B=c[h+16>>2]|0;break}if(!(j&1))B=Gg(h,1)|0;else B=0}else B=0;while(0);h=c[i+12>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){t=c[h+16>>2]|0;break}if(!(j&1))t=Gg(h,1)|0;else t=0}else t=0;while(0);h=c[i+16>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){y=c[h+16>>2]|0;break}if(!(j&1))y=Gg(h,1)|0;else y=0}else y=0;while(0);h=c[i+20>>2]|0;j=e[h+8>>1]|0;do if(!(j&4)){if(j&8|0){x=Mg(+g[h>>3])|0;L()|0;break}if(!(j&18))x=0;else{x=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}}else x=c[h>>2]|0;while(0);h=c[i+24>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){A=c[h+16>>2]|0;break}if(!(j&1))A=Gg(h,1)|0;else A=0}else A=0;while(0);h=c[i+28>>2]|0;j=e[h+8>>1]|0;do if(!(j&4)){if(j&8|0){z=Mg(+g[h>>3])|0;L()|0;break}if(!(j&18))z=0;else{z=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}}else z=c[h>>2]|0;while(0);h=c[i+32>>2]|0;j=e[h+8>>1]|0;do if(!(j&4)){if(j&8|0){l=Mg(+g[h>>3])|0;L()|0;break}if(!(j&18))l=0;else{l=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}}else l=c[h>>2]|0;while(0);C=I+312|0;D=c[C>>2]|0;if((x|0)<0|((B|0)==0|(y|0)==0|(A|0)==0)){Ra=J;return}m=c[I+20>>2]|0;n=(m|0)>0;if(n){j=c[I+16>>2]|0;h=0;do{k=c[j+(h<<4)+4>>2]|0;if(k|0)c[(c[k+4>>2]|0)+4>>2]=c[k>>2];h=h+1|0}while((h|0)!=(m|0))}p=Sd(I,y,t)|0;if(!p){Ra=J;return}if((x|0)>=(b[p+42>>1]|0)){Ra=J;return}w=c[(c[p+4>>2]|0)+(x<<4)>>2]|0;c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=0;c[G+16>>2]=0;s=G+8|0;c[s>>2]=(x|0)==(b[p+40>>1]|0)?-1:x;c[C>>2]=0;c[q>>2]=0;o=(l|0)==0;if(o){a:do if(t){j=m+-1|0;if(n){h=j;m=(c[I+16>>2]|0)+(j<<4)|0;while(1){k=c[m>>2]|0;if(k|0){v=a[k>>0]|0;j=(d[208+(v&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!(v<<24>>24==0|(j|0)!=0)){l=t;do{k=k+1|0;l=l+1|0;v=a[k>>0]|0;j=(d[208+(v&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(j|0)!=0))}if(!j)break a}if(!h)break;j=h+-1|0;if((h|0)>0){h=j;m=m+-16|0}else{h=j;break a}}h=109-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!h){j=t;k=50919;do{k=k+1|0;j=j+1|0;v=a[k>>0]|0;h=(d[208+(v&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(h|0)!=0))}h=((h|0)!=0)<<31>>31}else h=j}else h=-1;while(0);h=h&255}else h=1;j=I+164|0;a[j>>0]=h;v=H+4|0;gw(v|0,0,272)|0;a[H+200>>0]=2;c[H>>2]=I;c[H+132>>2]=1;h=ud(H,B,q)|0;c[v>>2]=c[q>>2];k=I+81|0;h=(a[k>>0]|0)==0?h:7;if(!h)if(((c[H+228>>2]|0)==0?(c[H+232>>2]|0)==0:0)?(c[H+236>>2]|0)==0:0){c[r>>2]=32306;c[r+4>>2]=103316;c[r+8>>2]=31517;Db(11,32001,r);h=11}else h=0;a[j>>0]=0;n=u+12|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[u>>2]=H;c[u+4>>2]=150;c[u+8>>2]=151;c[u+24>>2]=G;n=G+12|0;c[n>>2]=p;b:do if(!h){q=H+228|0;l=c[q>>2]|0;m=l;do if(l){j=c[l+12>>2]|0;if(j|0){h=H+12|0;c[h>>2]=0;Kk(H,j,0);h=(a[k>>0]|0)==0?c[h>>2]|0:7;if(h|0){E=171;break b}$j(u,j)|0;break}j=c[l>>2]|0;do if(!j){c[n>>2]=m;u=0}else{t=a[y>>0]|0;h=(d[208+(t&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(t<<24>>24==0|(h|0)!=0)){k=y;do{k=k+1|0;j=j+1|0;t=a[k>>0]|0;h=(d[208+(t&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(h|0)!=0))}c[n>>2]=m;if(h|0){u=0;break}m=c[(c[l+4>>2]|0)+(x<<4)>>2]|0;k=H+272|0;h=c[k>>2]|0;c:do if(h|0){l=k;while(1){j=h+12|0;if((c[h>>2]|0)==(m|0))break;h=c[j>>2]|0;if(!h)break c;else l=j}c[l>>2]=c[j>>2];c[j>>2]=c[G>>2];c[G>>2]=h;t=G+4|0;c[t>>2]=(c[t>>2]|0)+1}while(0);d:do if((c[s>>2]|0)<0){l=(c[q>>2]|0)+40|0;h=c[k>>2]|0;if(!h)break;while(1){j=h+12|0;if((c[h>>2]|0)==(l|0))break;h=c[j>>2]|0;if(!h)break d;else k=j}c[k>>2]=c[j>>2];c[j>>2]=c[G>>2];c[G>>2]=h;t=G+4|0;c[t>>2]=(c[t>>2]|0)+1}while(0);h=c[q>>2]|0;k=c[h+24>>2]|0;do if(k){j=c[k>>2]|0;if((j|0)<=0)break;h=k+4|0;while(1){k=c[h>>2]|0;if(k|0?_j(u,k)|0:0)break;if((j|0)>1){j=j+-1|0;h=h+20|0}else break}h=c[q>>2]|0}while(0);h=c[h+8>>2]|0;if(h|0)do{k=c[h+40>>2]|0;e:do if(k|0){j=c[k>>2]|0;if((j|0)<=0)break;k=k+4|0;while(1){l=c[k>>2]|0;if(l|0?_j(u,l)|0:0)break e;if((j|0)>1){j=j+-1|0;k=k+20|0}else break}}while(0);h=c[h+20>>2]|0}while((h|0)!=0);h=c[H+232>>2]|0;if(!h){u=1;break}while(1){k=c[h+40>>2]|0;f:do if(k|0){j=c[k>>2]|0;if((j|0)<=0)break;k=k+4|0;while(1){l=c[k>>2]|0;if(l|0?_j(u,l)|0:0)break f;if((j|0)>1){j=j+-1|0;k=k+20|0}else break}}while(0);h=c[h+20>>2]|0;if(!h){u=1;break}}}while(0);h=c[(c[q>>2]|0)+16>>2]|0;if(h|0){q=H+272|0;r=((w|0)!=0)<<31>>31;s=(w|0)==0;t=G+4|0;do{o=c[h+20>>2]|0;if((o|0)>0){p=h+8|0;n=0;do{g:do if(u){m=h+36+(n<<3)|0;if((c[m>>2]|0)!=(x|0))break;j=c[q>>2]|0;if(!j)break;l=q;while(1){k=j+12|0;if((c[j>>2]|0)==(m|0))break;j=c[k>>2]|0;if(!j)break g;else l=k}c[l>>2]=c[k>>2];c[k>>2]=c[G>>2];c[G>>2]=j;c[t>>2]=(c[t>>2]|0)+1}while(0);k=c[p>>2]|0;h:do if(k|0){m=a[k>>0]|0;j=(d[208+(m&255)>>0]|0)-(d[208+(d[y>>0]|0)>>0]|0)|0;if(!(m<<24>>24==0|(j|0)!=0)){l=y;do{k=k+1|0;l=l+1|0;m=a[k>>0]|0;j=(d[208+(m&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(j|0)!=0))}if(j|0)break;m=c[h+36+(n<<3)+4>>2]|0;do if(!m)j=r;else{if(s)break h;l=a[m>>0]|0;j=(d[208+(l&255)>>0]|0)-(d[208+(d[w>>0]|0)>>0]|0)|0;if(l<<24>>24==0|(j|0)!=0)break;k=w;l=m;do{l=l+1|0;k=k+1|0;K=a[l>>0]|0;j=(d[208+(K&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(K<<24>>24==0|(j|0)!=0))}while(0);if(j|0)break;j=c[q>>2]|0;if(!j)break;l=q;while(1){k=j+12|0;if((c[j>>2]|0)==(m|0))break;j=c[k>>2]|0;if(!j)break h;else l=k}c[l>>2]=c[k>>2];c[k>>2]=c[G>>2];c[G>>2]=j;c[t>>2]=(c[t>>2]|0)+1}while(0);n=n+1|0}while((n|0)<(o|0))}h=c[h+4>>2]|0}while((h|0)!=0)}}else{l=H+232|0;h=c[l>>2]|0;if(h|0){k=c[h+40>>2]|0;do if(k){j=c[k>>2]|0;if((j|0)<=0)break;h=k+4|0;while(1){k=c[h>>2]|0;if(k|0?_j(u,k)|0:0)break;if((j|0)>1){j=j+-1|0;h=h+20|0}else break}h=c[l>>2]|0}while(0);h=c[h+36>>2]|0;if(!h)break;_j(u,h)|0;break}h=lo(H,o?t:0)|0;if(h|0){E=171;break b}k=H+236|0;h=c[(c[k>>2]|0)+28>>2]|0;if(h|0)do{j=c[h+12>>2]|0;do if(j|0){if((bd(H,0,j,t)|0)!=(p|0))break;j=c[h+28>>2]|0;if(j|0)mo(H,G,c[j+8>>2]|0,w);no(H,G,c[h+24>>2]|0,w);mo(H,G,c[h+20>>2]|0,w)}while(0);h=c[h+36>>2]|0}while((h|0)!=0);if((c[H+120>>2]|0)==(p|0))no(H,G,c[(c[k>>2]|0)+16>>2]|0,w);oo(u,c[k>>2]|0)}while(0);h=po(f,G,B,A,z)|0;if(h|0)E=171}else E=171;while(0);do if((E|0)==171){if(!(c[v>>2]|0)){c[f+20>>2]=h;j=c[f>>2]|0;if(!(b[j+8>>1]&1))break;i:do switch(h|0){case 516:{h=50738;break}case 100:{h=50760;break}case 101:{h=50782;break}default:{h=h&255;if(h>>>0<29){if(!(520028155>>>h&1)){h=50724;break i}h=c[22960+(h<<2)>>2]|0}else h=50724}}while(0);yc(j,h,-1,1,0)|0;break}j=c[i+4>>2]|0;k=c[i+8>>2]|0;j:do if(j){h=b[j+8>>1]|0;do if((h&514)==514){if((a[j+10>>0]|0)!=1)break;j=c[j+16>>2]|0;break j}while(0);if(!(h&1))j=Gg(j,1)|0;else j=0}else j=0;while(0);k:do if(!k)h=0;else{h=b[k+8>>1]|0;do if((h&514)==514){if((a[k+10>>0]|0)!=1)break;h=c[k+16>>2]|0;break k}while(0);if(h&1){h=0;break}h=Gg(k,1)|0}while(0);K=c[v>>2]|0;c[F>>2]=j;c[F+4>>2]=h;c[F+8>>2]=59952;c[F+12>>2]=K;h=Bb(49618,F)|0;c[f+20>>2]=1;yc(c[f>>2]|0,h,-1,1,-1)|0;if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{K=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);qo(H);ro(I,c[G>>2]|0);c[C>>2]=D;Ra=J;return} -function oe(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+48|0;j=r+16|0;n=r+8|0;m=r;p=r+24|0;q=c[a+36>>2]|0;h=c[q>>2]|0;o=(1<>2]|0;if(!i)h=0;else{h=0;do{if((i|0)!=(q|0))h=b[i+10>>1]|h;i=c[i+4>>2]|0}while((i|0)!=0)}i=o&65535;if(((o&(h&65535)|0)==0?(l=c[(c[(c[a+8>>2]|0)+40>>2]|0)+12>>2]|0,(l|0)>-1):0)?(b[p>>1]=2,b[p+2>>1]=0,c[p+4>>2]=d+120,c[p+8>>2]=f,f=c[606]|0,c[m>>2]=p,(Ya[f&127](l,13,m)|0)==-1):0){q=5;Ra=r;return q|0}p=~i;f=q+12|0;b[f>>1]=(e[f>>1]|0)&p;q=q+10|0;b[q>>1]=(e[q>>1]|0)&p;q=0;Ra=r;return q|0}h=c[h+32>>2]|0;i=(h|0)==0;if(!(g&4)){a:do if(!i){while(1){if(o&(e[h+12>>1]|0)|0){h=5;i=33;break}if(o&(e[h+10>>1]|0)|0){h=5;i=33;break}h=c[h+4>>2]|0;if(!h)break a}if((i|0)==33){Ra=r;return h|0}}while(0);h=c[(c[(c[a+8>>2]|0)+40>>2]|0)+12>>2]|0;if((h|0)>-1?(b[p>>1]=1,b[p+2>>1]=0,c[p+4>>2]=d+120,c[p+8>>2]=f,f=c[606]|0,c[j>>2]=p,(Ya[f&127](h,13,j)|0)==-1):0){q=5;Ra=r;return q|0}q=q+12|0;b[q>>1]=o|(e[q>>1]|0);q=0;Ra=r;return q|0}else{b:do if(i)h=0;else{i=0;while(1){if(o&(e[h+12>>1]|0)|0){h=5;break}i=b[h+10>>1]|i;h=c[h+4>>2]|0;if(!h){h=i;break b}}Ra=r;return h|0}while(0);if(((o&(h&65535)|0)==0?(k=c[(c[(c[a+8>>2]|0)+40>>2]|0)+12>>2]|0,(k|0)>-1):0)?(b[p>>1]=0,b[p+2>>1]=0,c[p+4>>2]=d+120,c[p+8>>2]=f,f=c[606]|0,c[n>>2]=p,(Ya[f&127](k,13,n)|0)==-1):0){q=5;Ra=r;return q|0}q=q+10|0;b[q>>1]=o|(e[q>>1]|0);q=0;Ra=r;return q|0}return 0}function pe(a){a=a|0;return}function qe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=a+36|0;f=c[e>>2]|0;if(!f)return 0;g=c[f>>2]|0;d=g+32|0;while(1){h=c[d>>2]|0;if((h|0)==(f|0))break;else d=h+4|0}c[d>>2]=c[f+4>>2];if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}c[e>>2]=0;f=g+28|0;h=(c[f>>2]|0)+-1|0;c[f>>2]=h;if(h|0)return 0;if(b|0?(c[g+12>>2]|0)>-1:0)Wa[c[2532>>2]&127](c[g+8>>2]|0)|0;Ae(a);return 0}function re(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[f>>2]=0;return 0}function se(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function te(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=Ra;Ra=Ra+192|0;i=j+24|0;g=j+16|0;f=j+8|0;e=j;h=j+104|0;d=j+28|0;if(b[a+18>>1]&128){Ra=j;return}if(Xa[c[2400>>2]&255](c[a+12>>2]|0,d)|0){c[e>>2]=c[a+32>>2];Db(28,31582,e);Ra=j;return}switch(c[d+16>>2]|0){case 0:{c[f>>2]=c[a+32>>2];Db(28,31606,f);Ra=j;return}case 1:{e=a+8|0;if(!(c[e>>2]|0)){Ra=j;return}d=a+32|0;if(!(Xa[c[2388>>2]&255](c[d>>2]|0,h)|0)){a=(c[e>>2]|0)+8|0;if((c[a+4>>2]|0)==0?(c[a>>2]|0)==(c[h+72>>2]|0):0){Ra=j;return}}c[i>>2]=c[d>>2];Db(28,31662,i);Ra=j;return}default:{c[g>>2]=c[a+32>>2];Db(28,31635,g);Ra=j;return}}}function ue(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=Ra;Ra=Ra+16|0;f=e;c[f>>2]=d;d=Mu(a,b,f)|0;Ra=e;return d|0}function ve(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=Ra;Ra=Ra+576|0;g=j+552|0;h=j+536|0;e=j+528|0;k=j+520|0;f=j;c[k>>2]=b;Cb(512,f,31408,k)|0;b=Eu(f)|0;a:do if((b|0)>0)while(1){if((a[f+b>>0]|0)==47)break a;if((b|0)>1)b=b+-1|0;else{i=5;break}}else i=5;while(0);if((i|0)==5)if((a[f>>0]|0)==47)b=1;else{a[f>>0]=46;b=1}a[f+b>>0]=0;while(1){b=Ya[c[2340>>2]&127](f,524288,420)|0;if((b|0)<0){k=uu()|0;if((c[k>>2]|0)!=4){i=14;break}}else{if((b|0)>2){i=13;break}Wa[c[2352>>2]&127](b)|0;c[e>>2]=f;c[e+4>>2]=b;Db(28,31900,e);if((Ya[c[2340>>2]&127](31943,0,0)|0)<0){b=-1;i=14;break}}}if((i|0)==13){c[d>>2]=b;k=0;Ra=j;return k|0}else if((i|0)==14){c[d>>2]=b;c[h>>2]=31984;c[h+4>>2]=36187;c[h+8>>2]=31517;Db(14,32001,h);i=uu()|0;i=c[i>>2]|0;k=dv(i)|0;c[g>>2]=36187;c[g+4>>2]=i;c[g+8>>2]=31807;c[g+12>>2]=f;c[g+16>>2]=k;Db(14,31953,g);k=14;Ra=j;return k|0}return 0}function we(){return Ka(30)|0}function xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=Ra;Ra=Ra+96|0;h=k;i=k+8|0;j=(d|0)!=0;f=j?d:420;g=b|524288;while(1){e=Ya[c[2340>>2]&127](a,g,f)|0;if((e|0)<0){l=uu()|0;if((c[l>>2]|0)!=4){a=13;break}}else{if((e|0)>2){a=7;break}Wa[c[2352>>2]&127](e)|0;c[h>>2]=a;c[h+4>>2]=e;Db(28,31900,h);if((Ya[c[2340>>2]&127](31943,b,d)|0)<0){e=-1;a=13;break}}}if((a|0)==7){if(!j){l=e;Ra=k;return l|0}if(((Xa[c[2400>>2]&255](e,i)|0)==0?(c[i+36>>2]|0)==0:0)?(c[i+12>>2]&511|0)!=(d|0):0)Xa[c[2508>>2]&255](e,d)|0;l=e;Ra=k;return l|0}else if((a|0)==13){Ra=k;return e|0}return 0}function ye(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=Ra;Ra=Ra+112|0;j=k+80|0;i=k;a[d>>0]=0;e=c[14771]|0;if(!(c[672]|0)){g=Ca(32077)|0;c[672]=g}if(!(c[673]|0)){g=Ca(32091)|0;c[673]=g}f=i+12|0;g=e;e=0;while(1){if(((g|0?(Xa[c[2388>>2]&255](g,i)|0)==0:0)?(c[f>>2]&61440|0)==16384:0)?(Xa[c[2364>>2]&255](g,3)|0)==0:0)break;if(e>>>0>5){h=11;break}g=c[2688+(e<<2)>>2]|0;e=e+1|0}if((h|0)==11){j=6410;Ra=k;return j|0}f=d+(b+-2)|0;e=0;while(1){Fb(8,i);a[f>>0]=0;l=i;m=c[l>>2]|0;l=c[l+4>>2]|0;c[j>>2]=g;h=j+8|0;c[h>>2]=m;c[h+4>>2]=l;c[j+16>>2]=0;Cb(b,d,32037,j)|0;if(e>>>0>10|(a[f>>0]|0)!=0){e=1;h=16;break}if(!(Xa[c[2364>>2]&255](d,0)|0))e=e+1|0;else{e=0;h=16;break}}if((h|0)==16){Ra=k;return e|0}return 0}function ze(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=Ra;Ra=Ra+80|0;l=m+48|0;i=m+24|0;h=m+16|0;k=m;f=m+56|0;b[f+2>>1]=0;c[f+4>>2]=128;c[f+8>>2]=1;b[f>>1]=1;o=c[606]|0;g=e+12|0;n=c[g>>2]|0;c[k>>2]=f;if(Ya[o&127](n,12,k)|0){o=3850;Ra=m;return o|0}a:do switch(b[f>>1]|0){case 2:{if(a[e+22>>0]|0){a[e+23>>0]=1;o=1288;Ra=m;return o|0}d=d+8|0;f=c[(c[(c[d>>2]|0)+40>>2]|0)+12>>2]|0;if((f|0)>-1?(b[k>>1]=1,b[k+2>>1]=0,c[k+4>>2]=128,c[k+8>>2]=1,o=c[606]|0,c[h>>2]=k,(Ya[o&127](f,13,h)|0)==-1):0){o=5;Ra=m;return o|0}f=c[g>>2]|0;do{g=Xa[c[2412>>2]&255](f,3)|0;if((g|0)>=0){j=12;break}o=uu()|0}while((c[o>>2]|0)==4);if((j|0)==12?(g|0)==0:0)break a;n=c[e+8>>2]|0;l=uu()|0;l=c[l>>2]|0;o=dv(l)|0;c[i>>2]=36954;c[i+4>>2]=l;c[i+8>>2]=31726;c[i+12>>2]=(n|0)==0?59952:n;c[i+16>>2]=o;Db(4618,31953,i);o=4618;Ra=m;return o|0}case 1:{o=5;Ra=m;return o|0}default:d=d+8|0}while(0);d=c[(c[(c[d>>2]|0)+40>>2]|0)+12>>2]|0;if((d|0)>-1){b[k>>1]=0;b[k+2>>1]=0;c[k+4>>2]=128;c[k+8>>2]=1;o=c[606]|0;c[l>>2]=k;d=(Ya[o&127](d,13,l)|0)==-1;d=d?5:0}else d=0;o=d;Ra=m;return o|0}function Ae(a){a=a|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=Ra;Ra=Ra+32|0;m=n;l=c[(c[a+8>>2]|0)+40>>2]|0;if(!l){Ra=n;return}if(c[l+28>>2]|0){Ra=n;return}f=Va[c[2640>>2]&127]()|0;f=(f|0)<32768?1:(f|0)/32768|0;h=l+20|0;if(!(b[h>>1]|0))d=l+24|0;else{i=l+12|0;d=l+24|0;j=l+16|0;g=0;do{do if((c[i>>2]|0)<=-1){k=c[(c[d>>2]|0)+(g<<2)>>2]|0;if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{o=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else Xa[c[2616>>2]&255](c[(c[d>>2]|0)+(g<<2)>>2]|0,c[j>>2]|0)|0;while(0);g=g+f|0}while((g|0)<(e[h>>1]|0))}d=c[d>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{o=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);f=l+12|0;d=c[f>>2]|0;if((d|0)>-1){if(Wa[c[2352>>2]&127](d)|0){if(!a)d=0;else d=c[a+32>>2]|0;a=uu()|0;a=c[a>>2]|0;o=dv(a)|0;c[m>>2]=36897;c[m+4>>2]=a;c[m+8>>2]=31695;c[m+12>>2]=(d|0)==0?59952:d;c[m+16>>2]=o;Db(4106,31953,m)}c[f>>2]=-1}c[(c[l>>2]|0)+40>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);Ra=n;return}else{o=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);Ra=n;return}}function Be(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=Ra;Ra=Ra+32|0;e=f;b=a+12|0;d=c[b>>2]|0;if((d|0)>-1){if(Wa[c[2352>>2]&127](d)|0){g=c[a+32>>2]|0;h=uu()|0;h=c[h>>2]|0;d=dv(h)|0;c[e>>2]=34584;c[e+4>>2]=h;c[e+8>>2]=31695;c[e+12>>2]=(g|0)==0?59952:g;c[e+16>>2]=d;Db(4106,31953,e)}c[b>>2]=-1}b=c[a+28>>2]|0;if(!b){b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=f;return 0}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=f;return 0}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=f;return 0}return 0}function Ce(a,b){a=a|0;b=b|0;return 0}function De(a,b){a=a|0;b=b|0;return 0}function Ee(a,b){a=a|0;b=b|0;c[b>>2]=0;return 0}function Fe(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=Ra;Ra=Ra+32|0;f=g;e=b+24|0;d=b+16|0;do if(a[d>>0]|0){if((Wa[c[2568>>2]&127](c[e>>2]|0)|0)>=0){a[d>>0]=0;break}d=uu()|0;d=c[d>>2]|0;if((d|0)!=2)c[b+20>>2]=d}while(0);d=c[e>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=b+12|0;e=c[d>>2]|0;if((e|0)>-1){if(Wa[c[2352>>2]&127](e)|0){h=c[b+32>>2]|0;i=uu()|0;i=c[i>>2]|0;e=dv(i)|0;c[f>>2]=34584;c[f+4>>2]=i;c[f+8>>2]=31695;c[f+12>>2]=(h|0)==0?59952:h;c[f+16>>2]=e;Db(4106,31953,f)}c[d>>2]=-1}d=c[b+28>>2]|0;if(!d){d=b;e=d+52|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));Ra=g;return 0}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);d=b;e=d+52|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));Ra=g;return 0}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);d=b;e=d+52|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));Ra=g;return 0}return 0}function Ge(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+24>>2]|0;f=b+16|0;if(a[f>>0]|0){a[f>>0]=d;Oa(e|0,0)|0;b=0;return b|0}e=Xa[c[2556>>2]&255](e,511)|0;if((e|0)>=0){a[f>>0]=d;b=e;return b|0}d=uu()|0;d=c[d>>2]|0;switch(d|0){case 1:{e=3;break}case 37:case 4:case 16:case 110:case 11:case 13:case 17:{b=5;return b|0}default:e=3850}c[b+20>>2]=d;b=e;return b|0}function He(b,e){b=b|0;e=e|0;var f=0,g=0;f=c[b+24>>2]|0;g=b+16|0;if((d[g>>0]|0|0)==(e|0)){b=0;return b|0}if((e|0)==1){a[g>>0]=1;b=0;return b|0}if((Wa[c[2568>>2]&127](f)|0)>=0){a[g>>0]=0;b=0;return b|0}e=uu()|0;e=c[e>>2]|0;if((e|0)==2){b=0;return b|0}c[b+20>>2]=e;b=2058;return b|0}function Ie(a,b){a=a|0;b=b|0;a=(Xa[c[2364>>2]&255](c[a+24>>2]|0,0)|0)==0&1;c[b>>2]=a;return 0}function Je(a,b){a=a|0;b=b|0;return 29744}function Ke(a,b){a=a|0;b=b|0;return 29820}function Le(a,b){a=a|0;b=b|0;var d=0;if((b|0)==3082)return;if((b&251|4|0)!=14)return;b=c[a>>2]|0;d=c[b+68>>2]|0;if(!d)b=0;else b=Ya[d&127](b,0,0)|0;c[a+72>>2]=b;return}function Me(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=Ra;Ra=Ra+96|0;h=f+72|0;g=c[b+108>>2]|0;c[h+4>>2]=f;c[h>>2]=b;c[h+8>>2]=70;c[h+12>>2]=g;c[h+16>>2]=0;g=h+20|0;a[g>>0]=0;a[h+21>>0]=1;tb(h,d,e);e=yb(h)|0;if((a[g>>0]|0)!=7){Ra=f;return e|0}d=b+81|0;if(a[d>>0]|0){Ra=f;return e|0}if(a[b+82>>0]|0){Ra=f;return e|0}a[d>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;d=b+272|0;c[d>>2]=(c[d>>2]|0)+1;d=c[b+236>>2]|0;if(!d){Ra=f;return e|0}c[d+12>>2]=7;Ra=f;return e|0}function Ne(a,d){a=a|0;d=d|0;var e=0,f=0;e=c[a+260>>2]|0;do if(e|0){f=e+8|0;if(!(b[f>>1]&9216)){b[f>>1]=1;break}else{Dg(e);break}}while(0);if((d|0)==3082)return;if((d&251|4|0)!=14)return;d=c[a>>2]|0;e=c[d+68>>2]|0;if(!e)d=0;else d=Ya[e&127](d,0,0)|0;c[a+72>>2]=d;return}function Oe(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+16|0;d=h+4|0;f=c[b>>2]|0;g=f+16|0;if(c[(c[g>>2]|0)+20>>2]|0){g=0;Ra=h;return g|0}if(a[b+199>>0]|0){g=0;Ra=h;return g|0}e=Pe(c[f>>2]|0,0,f,d,0,542)|0;if(e|0){cd(b,32157,h);c[b+12>>2]=e;g=1;Ra=h;return g|0}e=c[d>>2]|0;c[(c[g>>2]|0)+20>>2]=e;if((Ud(e,c[f+92>>2]|0,-1,0)|0)==7){Fc(f);g=1;Ra=h;return g|0}else{g=0;Ra=h;return g|0}return 0}function Pe(e,f,g,h,i,j){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=Ra;Ra=Ra+128|0;p=J+104|0;D=J+120|0;A=J+116|0;H=J;G=(f|0)==0;if(!G){k=(a[f>>0]|0)==0;if(Bu(f,32227)|0)if(k)B=4;else{k=0;B=5}else B=6}else B=4;if((B|0)==4)if((a[g+80>>0]|0)==2){k=1;B=6}else{k=1;B=5}if((B|0)==5)if(!(j&128)){F=0;E=i}else B=6;if((B|0)==6){F=1;E=i|2}C=(j&256|0)!=0&(F|k)?j&-769|512:j;if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](48)|0;if(!i){h=7;Ra=J;return h|0}else I=i}else{i=Wa[c[29356>>2]&127](48)|0;if((c[14985]|0)>>>0<48)c[14985]=48;l=59064;j=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&j>>>0>0){I=c[14978]|0;z=Tv(j|0,l|0,i|0,((i|0)<0)<<31>>31|0)|0;y=L()|0;c[14768]=((y|0)<0|(y|0)==0&z>>>0<=I>>>0)&1}j=Wa[c[29340>>2]&127](i)|0;if(!j){h=7;Ra=J;return h|0}i=Wa[c[29352>>2]&127](j)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;I=j}else I=j}l=I+4|0;s=l+44|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(s|0));c[I>>2]=g;c[I+32>>2]=I;c[I+36>>2]=1;a:do if(!k?!((C&131072|0)==0|F&(C&64|0)==0):0){if(G)k=0;else k=(Eu(f)|0)&1073741823;l=k+1|0;m=(c[e+8>>2]|0)+1|0;k=(m|0)>(l|0)?m:l;z=Sv(k|0,0,-1,-1)|0;y=L()|0;do if(!(y>>>0>0|(y|0)==0&z>>>0>2147483390)){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](k)|0;a[I+9>>0]=1;if(!k)break;else n=k}else{j=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;k=59064;i=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&i>>>0>0){z=c[14978]|0;y=Tv(i|0,k|0,j|0,((j|0)<0)<<31>>31|0)|0;x=L()|0;c[14768]=((x|0)<0|(x|0)==0&y>>>0<=z>>>0)&1}i=Wa[c[29340>>2]&127](j)|0;if(!i){B=33;break}k=Wa[c[29352>>2]&127](i)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k;a[I+9>>0]=1;n=i}if(!F){a[n>>0]=0;k=Za[c[e+36>>2]&127](e,f,m,n)|0;if(k|0){if(!(c[7324]|0))ab[c[29344>>2]&127](n);else{h=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n)}if(!(c[7324]|0)){ab[c[29344>>2]&127](I);h=k;Ra=J;return h|0}else{h=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);h=k;Ra=J;return h|0}}}else ew(n|0,f|0,l|0)|0;j=c[14822]|0;b:do if(!j)j=0;else{while(1){k=c[j>>2]|0;if((Bu(n,c[k+168>>2]|0)|0)==0?(c[k>>2]|0)==(e|0):0)break;j=c[j+68>>2]|0;if(!j){j=0;break b}}k=c[g+20>>2]|0;c:do if((k|0)>0){l=c[g+16>>2]|0;while(1){i=k;k=k+-1|0;z=c[l+(k<<4)+4>>2]|0;if(z|0?(c[z+4>>2]|0)==(j|0):0)break;if((i|0)<=1)break c}if(!(c[7324]|0))ab[c[29344>>2]&127](n);else{h=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n)}if(!(c[7324]|0)){ab[c[29344>>2]&127](I);h=19;Ra=J;return h|0}else{h=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);h=19;Ra=J;return h|0}}while(0);c[I+4>>2]=j;z=j+64|0;c[z>>2]=(c[z>>2]|0)+1}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](n);else{z=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n)}if(!j){B=69;break a}if(!(a[I+9>>0]|0))break a;else{B=213;break a}}else B=33;while(0);if((B|0)==33)a[I+9>>0]=1;if(!(c[7324]|0)){ab[c[29344>>2]&127](I);h=7;Ra=J;return h|0}else{h=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);h=7;Ra=J;return h|0}}else B=69;while(0);d:do if((B|0)==69){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](84)|0;if(!j)k=7;else B=80}else{k=Wa[c[29356>>2]&127](84)|0;if((c[14985]|0)>>>0<84)c[14985]=84;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){z=c[14978]|0;y=Tv(i|0,j|0,k|0,((k|0)<0)<<31>>31|0)|0;x=L()|0;c[14768]=((x|0)<0|(x|0)==0&y>>>0<=z>>>0)&1}j=Wa[c[29340>>2]&127](k)|0;if(j){k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;B=80}else B=80}else k=7}do if((B|0)==80){l=j+4|0;s=l+80|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(s|0));y=E&1;z=(y|0)!=0;c[D>>2]=4096;s=e+4|0;u=c[s>>2]|0;u=((u|0)>72?u:72)+7&-8;c[j>>2]=0;do if(!(E&2))if(!G)if(a[f>>0]|0){o=e+8|0;m=(c[o>>2]|0)+1|0;k=m<<1;B=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;x=L()|0;if(!(x>>>0>0|(x|0)==0&B>>>0>2147483390)){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](k)|0;if(!k){k=7;B=229;break}else i=k}else{l=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;i=59064;k=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&k>>>0>0){B=c[14978]|0;x=Tv(k|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;w=L()|0;c[14768]=((w|0)<0|(w|0)==0&x>>>0<=B>>>0)&1}i=Wa[c[29340>>2]&127](l)|0;if(!i){k=7;B=229;break}k=Wa[c[29352>>2]&127](i)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}a[i>>0]=0;k=Za[c[e+36>>2]&127](e,f,m,i)|0;n=(Eu(i)|0)&1073741823;m=f+(((Eu(f)|0)&1073741823)+1)|0;if(!(a[m>>0]|0))l=m;else{l=m;do{l=l+(((Eu(l)|0)&1073741823)+1)|0;l=l+(((Eu(l)|0)&1073741823)+1)|0}while((a[l>>0]|0)!=0)}if(!k){if((n+8|0)<=(c[o>>2]|0)){x=0;r=l+1-m|0;p=m;q=1;B=119;break}c[p>>2]=31984;c[p+4>>2]=55390;c[p+8>>2]=31517;Db(14,32001,p);k=14}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);B=229;break}else{B=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);B=229;break}}else{k=7;B=229}}else{x=0;r=0;p=0;i=0;n=0;q=1;B=119}else{f=0;x=0;r=0;p=0;i=0;n=0;q=0;B=119}else if(!G)if(a[f>>0]|0){m=(Eu(f)|0)+1|0;B=Sv(m|0,0,-1,-1)|0;x=L()|0;if(x>>>0>0|(x|0)==0&B>>>0>2147483390){k=7;B=229}else{if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](m)|0;if(!k){k=7;B=229;break}}else{k=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;l=59064;i=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&i>>>0>0){B=c[14978]|0;x=Tv(i|0,l|0,k|0,((k|0)<0)<<31>>31|0)|0;w=L()|0;c[14768]=((w|0)<0|(w|0)==0&x>>>0<=B>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k){k=7;B=229;break}i=Wa[c[29352>>2]&127](k)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}ew(k|0,f|0,m|0)|0;f=0;x=1;r=0;p=0;i=k;n=(Eu(k)|0)&1073741823;q=0;B=119}}else{x=1;r=0;p=0;i=0;n=0;q=1;B=119}else{f=0;x=1;r=0;p=0;i=0;n=0;q=0;B=119}while(0);e:do if((B|0)==119){o=(u<<1)+17+(n*3|0)+r+((c[s>>2]|0)+279&-8)|0;w=Sv(o|0,0,-1,-1)|0;v=L()|0;do if(!(v>>>0>0|(v|0)==0&w>>>0>2147483390)){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](o)|0;if(!k)break;else w=k}else{k=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){w=c[14978]|0;v=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;t=L()|0;c[14768]=((t|0)<0|(t|0)==0&v>>>0<=w>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(!l)break;k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;w=l}else w=l}gw(w|0,0,o|0)|0;t=w+212|0;c[t>>2]=w+224;k=w+272|0;v=w+60|0;c[v>>2]=k;k=k+((c[s>>2]|0)+7&-8)|0;c[w+68>>2]=k;k=k+u|0;c[w+64>>2]=k;k=k+u|0;m=w+168|0;c[m>>2]=k;do if(i|0){l=n+1|0;o=w+172|0;c[o>>2]=k+(r+l);ew(k|0,i|0,n|0)|0;if(r|0)ew((c[m>>2]|0)+l|0,p|0,r|0)|0;ew(c[o>>2]|0,i|0,n|0)|0;l=(c[o>>2]|0)+n|0;k=32236;s=l+10|0;do{a[l>>0]=a[k>>0]|0;l=l+1|0;k=k+1|0}while((l|0)<(s|0));s=(c[o>>2]|0)+(n+9)|0;u=w+220|0;c[u>>2]=s;ew(s|0,i|0,n|0)|0;u=(c[u>>2]|0)+n|0;a[u>>0]=a[32246]|0;a[u+1>>0]=a[32247]|0;a[u+2>>0]=a[32248]|0;a[u+3>>0]=a[32249]|0;a[u+4>>0]=a[32250]|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{u=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);c[w>>2]=e;c[w+144>>2]=C;f:do if(q?(a[f>>0]|0)!=0:0){c[A>>2]=0;k=_a[c[e+24>>2]&127](e,c[m>>2]|0,c[v>>2]|0,C&556927,A)|0;m=c[A>>2]&1;if(k|0)break;l=c[v>>2]|0;l=Wa[c[(c[l>>2]|0)+48>>2]&127](l)|0;g:do if(!m){do if(!(a[w+12>>0]|0)){B=c[v>>2]|0;if((Wa[c[(c[B>>2]|0)+48>>2]&127](B)|0)&4096|0)break;k=c[v>>2]|0;i=c[(c[k>>2]|0)+44>>2]|0;do if(i){B=Wa[i&127](k)|0;k=(B|0)<65536?B:65536;if((B|0)<32){k=512;break}c[w+148>>2]=k;if(k>>>0<=4096)break g;if(k>>>0>8192){c[D>>2]=8192;break g}else{c[D>>2]=k;break g}}else k=4096;while(0);c[w+148>>2]=k;break g}while(0);c[w+148>>2]=512}while(0);k=f+(((Eu(f)|0)&1073741823)+1)|0;h:do if(!(a[k>>0]|0))k=0;else{while(1){B=Bu(k,32252)|0;k=k+(((Eu(k)|0)&1073741823)+1)|0;if(!B)break;k=k+(((Eu(k)|0)&1073741823)+1)|0;if(!(a[k>>0]|0)){k=0;break h}}k=(Zm(k,1,0)|0)<<24>>24!=0}while(0);a[w+13>>0]=k&1;i:do if(!(l&8192)){k=f+(((Eu(f)|0)&1073741823)+1)|0;j:do if(a[k>>0]|0){while(1){B=Bu(k,32259)|0;k=k+(((Eu(k)|0)&1073741823)+1)|0;if(!B)break;k=k+(((Eu(k)|0)&1073741823)+1)|0;if(!(a[k>>0]|0))break j}if((Zm(k,1,0)|0)<<24>>24)break i}while(0);q=m;f=0;B=170;break f}while(0);k=C|1;B=168}else{k=C;B=168}while(0);if((B|0)==168){a[w+16>>0]=1;a[w+17>>0]=4;a[w+13>>0]=1;q=k&1;f=1;B=170}if((B|0)==170){k=Se(w,D,-1)|0;if(!k){p=c[D>>2]|0;r=(x|0)==0;i=x^1;k=r?119:0;n=c[t>>2]|0;l=n;s=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(s|0));o=n+24|0;c[o>>2]=1;l=n+28|0;c[l>>2]=88;a[n+32>>0]=i;a[n+33>>0]=2;c[n+36>>2]=k;c[n+40>>2]=w;k=n+16|0;c[k>>2]=100;c[n+20>>2]=1;m=Ya[c[29424>>2]&127](p,128,i)|0;if(!m)k=7;else{i=c[7357]|0;k=c[k>>2]|0;if((k|0)<=-1){C=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;D=L()|0;k=(c[l>>2]|0)+(c[o>>2]|0)|0;k=Wv(C|0,D|0,k|0,((k|0)<0)<<31>>31|0)|0;L()|0}bb[i&127](m,k);k=n+44|0;i=c[k>>2]|0;if(i|0)ab[c[29452>>2]&127](i);c[k>>2]=m;c[o>>2]=p;a[w+6>>0]=y^1;c[w+156>>2]=1073741823;a[w+12>>0]=f;a[w+4>>0]=f;a[w+18>>0]=f;a[w+15>>0]=x;a[w+14>>0]=q;a[w+7>>0]=f;do if(!(f<<24>>24)){a[w+8>>0]=1;a[w+9>>0]=0;a[w+10>>0]=2;a[w+11>>0]=10;b[w+140>>1]=88;D=w+160|0;c[D>>2]=-1;c[D+4>>2]=-1;D=c[v>>2]|0;if((Wa[c[(c[D>>2]|0)+48>>2]&127](D)|0)&4096|0){k=512;break}k=c[v>>2]|0;i=c[(c[k>>2]|0)+44>>2]|0;if(!i){k=4096;break}k=Wa[i&127](k)|0;k=(k|0)<32?512:(k|0)<65536?k:65536}else{b[w+140>>1]=88;k=w+160|0;c[k>>2]=-1;c[k+4>>2]=-1;k=512}while(0);c[w+148>>2]=k;if(z|r^1)a[w+5>>0]=((y&255)<<1&255^2)+2<<24>>24;c[w+200>>2]=92;c[w+204>>2]=(c[w+40>>2]|0)==0?74:75;c[j>>2]=w;D=g+48|0;s=c[D+4>>2]|0;l=w+128|0;c[l>>2]=c[D>>2];c[l+4>>2]=s;l=H;s=l+100|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(s|0));k=c[v>>2]|0;i=c[k>>2]|0;if(i|0){k=_a[c[i+8>>2]&127](k,H,100,0,0)|0;switch(k|0){case 0:case 522:break;default:{B=230;break e}}}a[j+16>>0]=E;c[j+4>>2]=g;k=c[j>>2]|0;i=k+176|0;c[i>>2]=117;c[k+180>>2]=j;l=c[k+60>>2]|0;m=c[l>>2]|0;if(!m)l=k;else{Ya[c[m+40>>2]&127](l,15,i)|0;l=c[j>>2]|0}c[I+4>>2]=j;c[j+8>>2]=0;c[j+12>>2]=0;if(a[l+14>>0]|0){E=j+22|0;b[E>>1]=b[E>>1]|1}k=d[H+17>>0]<<16|d[H+16>>0]<<8;m=j+32|0;c[m>>2]=k;do if((k+-512|0)>>>0>65024)B=205;else{if(k+16777215&k|0){B=205;break}k=a[H+20>>0]|0;i=j+22|0;b[i>>1]=b[i>>1]|2;a[j+17>>0]=(d[H+53>>0]<<16|d[H+52>>0]<<24|d[H+54>>0]<<8|d[H+55>>0]|0)!=0&1;i=(d[H+65>>0]<<16|d[H+64>>0]<<24|d[H+66>>0]<<8|d[H+67>>0]|0)!=0&1;B=208}while(0);do if((B|0)==205){c[m>>2]=0;if(G|F){k=0;break}a[j+17>>0]=0;k=0;i=0;B=208}while(0);if((B|0)==208)a[j+18>>0]=i;i=k&255;k=Se(l,m,i)|0;if(k|0){B=230;break e}c[j+36>>2]=(c[m>>2]|0)-i;c[j+64>>2]=1;if(!(a[I+9>>0]|0))break d;c[j+68>>2]=c[14822];c[14822]=j;B=213;break d}}}i=c[v>>2]|0;l=c[i>>2]|0;if(l|0){Wa[c[l+4>>2]&127](i)|0;c[i>>2]=0}l=c[w+208>>2]|0;k:do if(l|0){i=l;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;g=(c[14820]|0)+1|0;c[14820]=g;c[14821]=(g|0)<(c[14815]|0)&1;break k}else{i=Wa[c[29352>>2]&127](l)|0;break}else i=Wa[c[29352>>2]&127](l)|0;while(0);c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{g=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](w);B=229;break e}else{B=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w);B=229;break e}}while(0);if(i)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);k=7;B=229;break}else{k=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);k=7;B=229;break}else{k=7;B=229}}while(0);if((B|0)==229)if(j)B=230;if((B|0)==230){i=c[j>>2]|0;if(i)Te(i,0)}if(j)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{g=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](I);else{g=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I)}c[h>>2]=0;h=k;Ra=J;return h|0}while(0);l:do if((B|0)==213){m=c[g+20>>2]|0;if((m|0)>0){l=c[g+16>>2]|0;k=0;while(1){i=c[l+(k<<4)+4>>2]|0;if(i|0?a[i+9>>0]|0:0)break;k=k+1|0;if((k|0)>=(m|0))break l}while(1){k=c[i+28>>2]|0;if(!k)break;else i=k}m=c[I+4>>2]|0;if(m>>>0<(c[i+4>>2]|0)>>>0){c[I+24>>2]=i;c[I+28>>2]=0;c[i+28>>2]=I;break}k=i+24|0;l=c[k>>2]|0;m:do if(!l)B=224;else{while(1){if((c[l+4>>2]|0)>>>0>=m>>>0)break;k=l+24|0;i=c[k>>2]|0;if(!i){i=l;B=224;break m}else{g=l;l=i;i=g}}c[I+24>>2]=l;c[I+28>>2]=i;c[l+28>>2]=I}while(0);if((B|0)==224){c[I+24>>2]=0;c[I+28>>2]=i}c[k>>2]=I}}while(0);c[h>>2]=I;k=c[I+4>>2]|0;c[k+4>>2]=c[I>>2];if(!(c[k+48>>2]|0)){h=c[(c[k>>2]|0)+212>>2]|0;c[h+16>>2]=-2e3;g=c[7357]|0;I=c[h+44>>2]|0;h=(c[h+28>>2]|0)+(c[h+24>>2]|0)|0;h=Wv(2048e3,0,h|0,((h|0)<0)<<31>>31|0)|0;L()|0;bb[g&127](I,h)}k=c[(c[j>>2]|0)+60>>2]|0;i=c[k>>2]|0;if(!i){h=0;Ra=J;return h|0}Ya[c[i+40>>2]&127](k,30,j+4|0)|0;h=0;Ra=J;return h|0}function Qe(d){d=d|0;var e=0;e=c[d+8>>2]|0;if(!(a[e>>0]|0))return;a[e>>0]=0;if((b[d+30>>1]|0)<=1)return;Gf(e)|0;return}function Re(b){b=b|0;var d=0,e=0,f=0,g=0;f=c[b+4>>2]|0;b=c[(c[b>>2]|0)+60>>2]|0;d=c[f+396>>2]|0;if(!d){g=0;return g|0}g=f+404|0;e=c[g>>2]|0;if((e|0)<0){g=0;return g|0}if(!(a[f+408>>0]|0))b=Xa[d&255](c[f+400>>2]|0,e)|0;else b=Ya[d&127](c[f+400>>2]|0,e,b)|0;if(!b)d=-1;else d=(c[g>>2]|0)+1|0;c[g>>2]=d;g=b;return g|0}function Se(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=Ra;Ra=Ra+16|0;o=r;p=c[f>>2]|0;if(!((a[e+15>>0]|0)!=0?(c[e+24>>2]|0)!=0:0))l=3;a:do if(((l|0)==3?(m=e+212|0,p|0?(c[(c[m>>2]|0)+12>>2]|0)==0:0):0)?(q=e+152|0,(p|0)!=(c[q>>2]|0)):0){n=o;c[n>>2]=0;c[n+4>>2]=0;if(((a[e+16>>0]|0)!=0?(i=c[e+60>>2]|0,j=c[i>>2]|0,(j|0)!=0):0)?(k=Xa[c[j+24>>2]&255](i,o)|0,(k|0)!=0):0)g=k;else l=8;b:do if((l|0)==8){k=p+8|0;if((c[14813]|0)>=(k|0)?(h=c[14819]|0,(h|0)!=0):0){c[14819]=c[h>>2];n=c[14820]|0;c[14820]=n+-1;c[14821]=(n|0)<=(c[14815]|0)&1;if((c[14986]|0)>>>0>>0)c[14986]=k;i=(c[14979]|0)+1|0;c[14979]=i;if(i>>>0>(c[14983]|0)>>>0)c[14983]=i}else{n=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;l=L()|0;if(l>>>0>0|(l|0)==0&n>>>0>2147483390){g=7;break}if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](k)|0;if(!h){g=7;break}}else{h=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){n=c[14978]|0;l=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&l>>>0<=n>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){g=7;break}i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}i=Wa[c[29352>>2]&127](h)|0;if((c[14986]|0)>>>0>>0)c[14986]=k;i=(c[14980]|0)+i|0;c[14980]=i;if(i>>>0>(c[14984]|0)>>>0)c[14984]=i}k=h+p|0;n=k;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;k=k+4|0;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;Ff(e);k=c[m>>2]|0;m=k+24|0;do if(c[m>>2]|0){j=k+28|0;n=Ya[c[29424>>2]&127](p,(c[j>>2]|0)+40|0,d[k+32>>0]|0)|0;if(n|0){l=c[7357]|0;i=c[k+16>>2]|0;if((i|0)<=-1){t=Yv(i|0,((i|0)<0)<<31>>31|0,-1024,-1)|0;s=L()|0;i=(c[j>>2]|0)+(c[m>>2]|0)|0;i=Wv(t|0,s|0,i|0,((i|0)<0)<<31>>31|0)|0;L()|0}bb[l&127](n,i);i=k+44|0;j=c[i>>2]|0;if(j|0)ab[c[29452>>2]&127](j);c[i>>2]=n;c[m>>2]=p;break}g=h;do if((c[14816]|0)>>>0<=g>>>0)if((c[14817]|0)>>>0>g>>>0){c[14979]=(c[14979]|0)+-1;c[h>>2]=c[14819];c[14819]=h;g=(c[14820]|0)+1|0;c[14820]=g;c[14821]=(g|0)<(c[14815]|0)&1;g=7;break b}else{g=Wa[c[29352>>2]&127](h)|0;break}else g=Wa[c[29352>>2]&127](h)|0;while(0);c[14980]=(c[14980]|0)-g;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);g=7;break b}else{g=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);g=7;break b}}while(0);j=e+208|0;k=c[j>>2]|0;c:do if(k|0){i=k;do if((c[14816]|0)>>>0<=i>>>0)if((c[14817]|0)>>>0>i>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;t=(c[14820]|0)+1|0;c[14820]=t;c[14821]=(t|0)<(c[14815]|0)&1;break c}else{i=Wa[c[29352>>2]&127](k)|0;break}else i=Wa[c[29352>>2]&127](k)|0;while(0);c[14980]=(c[14980]|0)-i;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{t=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[j>>2]=h;t=o;s=c[t>>2]|0;t=c[t+4>>2]|0;o=Sv(p|0,0,-1,-1)|0;t=Sv(o|0,L()|0,s|0,t|0)|0;t=Wv(t|0,L()|0,p|0,0)|0;L()|0;c[e+24>>2]=t;c[q>>2]=p;break a}while(0);c[f>>2]=c[q>>2];t=g;Ra=r;return t|0}while(0);c[f>>2]=c[e+152>>2];h=e+142|0;if((g|0)<0)g=b[h>>1]|0;b[h>>1]=g;t=0;Ra=r;return t|0}function Te(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;h=o;n=c[b+208>>2]|0;f=c[b+136>>2]|0;if(f|0)do{g=f;f=c[f+16>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);l=b+4|0;a[l>>0]=0;do if((e|0)!=0?(0==0?(c[e+32>>2]&2048|0)==0:0):0){c[h>>2]=0;if((((a[b+12>>0]|0)==0?(c[b+24>>2]|0)!=0:0)?(i=c[b+60>>2]|0,j=c[i>>2]|0,(j|0)!=0):0)?(k=Ya[c[j+40>>2]&127](i,20,h)|0,(k|0)!=12):0){if(c[h>>2]|k|0){f=0;break}}else m=14;f=n}else f=0;while(0);k=b+216|0;Pf(c[k>>2]|0,e,d[b+11>>0]|0,c[b+152>>2]|0,f)|0;c[k>>2]=0;Ff(b);if(!(a[b+15>>0]|0)){h=b+64|0;f=c[h>>2]|0;g=c[f>>2]|0;a:do if(g|0){if(!(a[b+7>>0]|0)){f=Xa[c[g+20>>2]&255](f,2)|0;if(!f){f=c[h>>2]|0;g=c[f>>2]|0;m=22}}else m=22;if((m|0)==22)f=Xa[c[g+24>>2]&255](f,b+80|0)|0;switch((f&255)<<24>>24){case 10:case 13:break;default:break a}c[b+40>>2]=f;a[b+16>>0]=6;c[b+204>>2]=(f|0)==0?74:75}while(0);switch(a[b+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[l>>0]|0))uf(b,0,0)|0;break}default:tf(b)|0}vf(b)}else vf(b);f=c[b+64>>2]|0;g=c[f>>2]|0;if(g|0){Wa[c[g+4>>2]&127](f)|0;c[f>>2]=0}f=c[b+60>>2]|0;g=c[f>>2]|0;if(g|0){Wa[c[g+4>>2]&127](f)|0;c[f>>2]=0}b:do if(n|0){f=n;do if((c[14816]|0)>>>0<=f>>>0)if((c[14817]|0)>>>0>f>>>0){c[14979]=(c[14979]|0)+-1;c[n>>2]=c[14819];c[14819]=n;n=(c[14820]|0)+1|0;c[14820]=n;c[14821]=(n|0)<(c[14815]|0)&1;break b}else{f=Wa[c[29352>>2]&127](n)|0;break}else f=Wa[c[29352>>2]&127](n)|0;while(0);c[14980]=(c[14980]|0)-f;if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{m=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);ab[c[29452>>2]&127](c[(c[b+212>>2]|0)+44>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](b);Ra=o;return}else{n=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);Ra=o;return}}function Ue(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=d+40|0;if(c[h>>2]|0){e=0;return e|0}g=a[d+20>>0]|0;if(g<<24>>24){if(g&3){e=0;return e|0}if(b[e+28>>1]&8){e=0;return e|0}}j=d+196|0;c[j>>2]=(c[j>>2]|0)+1;c[e+16>>2]=0;do if(c[d+216>>2]|0){f=Ve(e)|0;if(!f){f=We(d,e,0,0)|0;i=12}}else{if(!((b[e+28>>1]&8)==0?(a[d+16>>0]|0)!=3:0))i=10;if((i|0)==10?(f=Xe(d,1)|0,f|0):0)break;f=Ye(d,e)|0;i=12}while(0);if((i|0)==12)if(!f){j=c[e+12>>2]|0;f=j+8|0;g=e+36|0;d=c[g>>2]|0;if((c[f>>2]|0)==(e|0))c[f>>2]=d;h=c[e+32>>2]|0;i=(h|0)==0;if(i){c[j+4>>2]=d;f=d}else{c[h+36>>2]=d;f=c[g>>2]|0}if(!f){c[j>>2]=h;if(i)a[j+33>>0]=2}else c[f+32>>2]=h;i=e+28|0;b[i>>1]=b[i>>1]&-16|1;if(b[e+30>>1]|0){e=0;return e|0}if(!(a[j+32>>0]|0)){e=0;return e|0}cb[c[29440>>2]&255](c[j+44>>2]|0,c[e>>2]|0,0);e=0;return e|0}switch((f&255)<<24>>24){case 10:case 13:break;default:{e=f;return e|0}}c[h>>2]=f;a[d+16>>0]=6;c[d+204>>2]=75;e=f;return e|0}function Ve(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=Ra;Ra=Ra+16|0;r=v;q=c[b+20>>2]|0;s=b+24|0;i=c[s>>2]|0;t=q+96|0;g=c[t>>2]|0;if((g|0)<=0){u=0;Ra=v;return u|0}u=q+92|0;m=c[u>>2]|0;n=i+-1|0;l=0;a:while(1){b:do if((c[m+(l*48|0)+20>>2]|0)>>>0>=i>>>0){h=c[m+(l*48|0)+16>>2]|0;e=c[h>>2]|0;if(n>>>0>=e>>>0)break a;f=c[h+8>>2]|0;if(!f)j=n;else{j=n;k=h;do{e=(j>>>0)/(f>>>0)|0;k=c[k+12+(e<<2)>>2]|0;if(!k)break a;j=j-(G(e,f)|0)|0;f=c[k+8>>2]|0}while((f|0)!=0);h=k;e=c[k>>2]|0}if(e>>>0<4001)if(!(1<<(j&7)&d[h+12+(j>>>3)>>0]))break a;else break;k=j+1|0;e=(j>>>0)%125|0;f=c[h+12+(e<<2)>>2]|0;if(!f)break a;while(1){if((f|0)==(k|0))break b;e=((e+1|0)>>>0)%125|0;f=c[h+12+(e<<2)>>2]|0;if(!f)break a}}while(0);l=l+1|0;if((l|0)>=(g|0)){e=0;p=35;break}}if((p|0)==35){Ra=v;return e|0}e=a[q+5>>0]|0;do if(e<<24>>24!=2){k=q+68|0;h=c[k>>2]|0;c:do if(!(c[h>>2]|0)){do if(e<<24>>24!=4?(o=c[7334]|0,(a[q+21>>0]|0)==0):0){e=c[q>>2]|0;f=h;g=f+72|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));if(o|0){g=o;f=(o|0)>0?o:1020;break}e=_a[c[e+24>>2]&127](e,0,h,8222,0)|0;if(!e)break c;Ra=v;return e|0}else p=22;while(0);if((p|0)==22){e=c[q>>2]|0;f=h;g=f+72|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));g=-1;f=1020}c[h+4>>2]=f;c[h>>2]=29896;c[h+8>>2]=g;c[h+56>>2]=8222;c[h+64>>2]=0;c[h+60>>2]=e}while(0);i=c[b+4>>2]|0;j=q+52|0;f=q+152|0;g=(c[f>>2]|0)+4|0;g=Yv(g|0,((g|0)<0)<<31>>31|0,c[j>>2]|0,0)|0;h=L()|0;e=c[k>>2]|0;q=c[s>>2]|0;a[r>>0]=q>>>24;a[r+1>>0]=q>>>16;a[r+2>>0]=q>>>8;a[r+3>>0]=q;e=_a[c[(c[e>>2]|0)+12>>2]&127](e,r,4,g,h)|0;if(e|0){u=e;Ra=v;return u|0}b=c[k>>2]|0;q=c[f>>2]|0;r=Sv(g|0,h|0,4,0)|0;e=L()|0;e=_a[c[(c[b>>2]|0)+12>>2]&127](b,i,q,r,e)|0;if(!e){e=j;g=c[t>>2]|0;i=c[s>>2]|0;break}else{u=e;Ra=v;return u|0}}else e=q+52|0;while(0);c[e>>2]=(c[e>>2]|0)+1;if((g|0)<=0){u=0;Ra=v;return u|0}e=0;h=0;while(1){f=c[u>>2]|0;if((c[f+(h*48|0)+20>>2]|0)>>>0>>0)f=g;else{e=df(c[f+(h*48|0)+16>>2]|0,i)|0|e;f=c[t>>2]|0}h=h+1|0;if((h|0)>=(f|0))break;else g=f}Ra=v;return e|0}function We(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;za=Ra;Ra=Ra+48|0;sa=za+32|0;qa=za;k=za+36|0;c[k>>2]=f;R=(h|0)==0;if(!R){c[k>>2]=f;if(!f){ya=0;f=0}else{i=f;f=0;j=k;do{xa=(c[i+24>>2]|0)>>>0>g>>>0;ya=i+16|0;f=f+((xa^1)&1)|0;j=xa?j:ya;i=c[ya>>2]|0;c[j>>2]=i}while((i|0)!=0);ya=c[k>>2]|0}}else{ya=f;f=1}xa=e+192|0;c[xa>>2]=(c[xa>>2]|0)+f;if((c[ya+24>>2]|0)==1){va=c[ya+20>>2]|0;va=(d[va+105>>0]<<16|d[va+104>>0]<<24|d[va+106>>0]<<8|d[va+107>>0])+1|0;xa=ya+4|0;wa=c[xa>>2]|0;oa=va>>>24&255;a[wa+24>>0]=oa;ra=va>>>16&255;a[wa+25>>0]=ra;ua=va>>>8&255;a[wa+26>>0]=ua;va=va&255;a[wa+27>>0]=va;wa=c[xa>>2]|0;a[wa+92>>0]=oa;a[wa+93>>0]=ra;a[wa+94>>0]=ua;a[wa+95>>0]=va;xa=c[xa>>2]|0;a[xa+96>>0]=0;a[xa+97>>0]=46;a[xa+98>>0]=52;a[xa+99>>0]=32}wa=c[e+216>>2]|0;ua=c[e+152>>2]|0;U=d[e+11>>0]|0;va=wa+32|0;f=c[c[va>>2]>>2]|0;xa=wa+52|0;if(!(Lu(xa,f,48)|0))B=0;else B=(c[f+16>>2]|0)+1|0;o=wa+40|0;if(!(b[o>>1]|0)){a:do if(!(c[f+96>>2]|0)){l=wa+43|0;$=20}else{Fb(4,qa);k=wa+43|0;b:do if(!(a[k>>0]|0)){f=c[wa+4>>2]|0;f=Za[c[(c[f>>2]|0)+56>>2]&127](f,4,4,10)|0;switch(f|0){case 0:{$=15;break b}case 5:break b;default:{}}p=f;break a}else $=15;while(0);if(($|0)==15){m=c[qa>>2]|0;i=c[va>>2]|0;f=c[i>>2]|0;j=f+96|0;$=wa+84|0;oa=wa+112|0;c[oa>>2]=(c[oa>>2]|0)+1;c[wa+68>>2]=0;oa=$+1|0;ra=$+2|0;n=$+3|0;l=(d[oa>>0]<<16|d[$>>0]<<24|d[ra>>0]<<8|d[n>>0])+1|0;a[$>>0]=l>>>24;a[oa>>0]=l>>>16;a[ra>>0]=l>>>8;a[n>>0]=l;c[wa+88>>2]=m;i=c[i>>2]|0;a[wa+64>>0]=1;c[xa>>2]=3007e3;n=c[xa+4>>2]|0;l=n+6014e3+(c[xa+8>>2]|0)|0;n=n+3007e3+(c[xa+12>>2]|0)+l|0;l=n+l|0;n=n+(c[xa+20>>2]|0)+l|0;l=l+(c[xa+24>>2]|0)+n|0;n=n+(c[xa+28>>2]|0)+l|0;l=l+(c[xa+32>>2]|0)+n|0;c[wa+92>>2]=l;c[wa+96>>2]=n+m+l;l=i+48|0;m=xa;n=l+48|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));if((a[k>>0]|0)!=2){ra=c[wa+4>>2]|0;ab[c[(c[ra>>2]|0)+60>>2]&127](ra)}l=i;m=xa;n=l+48|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));c[j>>2]=0;c[f+128>>2]=0;c[f+104>>2]=0;c[f+108>>2]=-1;c[f+112>>2]=-1;c[f+116>>2]=-1;if(!(a[k>>0]|0)){ra=c[wa+4>>2]|0;Za[c[(c[ra>>2]|0)+56>>2]&127](ra,4,4,9)|0}}l=k;$=20}while(0);if(($|0)==20){if(!(a[l>>0]|0)){ra=c[wa+4>>2]|0;Za[c[(c[ra>>2]|0)+56>>2]&127](ra,3,1,5)|0}b[o>>1]=-1;f=0;do{f=f+1|0;i=gf(wa,qa,1,f)|0}while((i|0)==-1);p=i}if(p|0){g=p;Ra=za;return g|0}}ra=wa+68|0;l=c[ra>>2]|0;c:do if(!l){a[qa>>0]=55;a[qa+1>>0]=127;a[qa+2>>0]=6;a[qa+3>>0]=-126;f=qa+4|0;a[f>>0]=0;a[qa+5>>0]=45;a[qa+6>>0]=-30;a[qa+7>>0]=24;i=qa+8|0;a[i>>0]=ua>>>24;a[qa+9>>0]=ua>>>16;a[qa+10>>0]=ua>>>8;a[qa+11>>0]=ua;j=qa+12|0;oa=c[wa+112>>2]|0;a[j>>0]=oa>>>24;a[qa+13>>0]=oa>>>16;a[qa+14>>0]=oa>>>8;a[qa+15>>0]=oa;k=wa+84|0;if(!oa)Fb(8,k);oa=k;Y=c[oa>>2]|0;oa=c[oa+4>>2]|0;W=qa+16|0;c[W>>2]=Y;c[W+4>>2]=oa;W=c[qa>>2]|0;X=(c[f>>2]|0)+W|0;f=X+W+(c[i>>2]|0)|0;i=(c[j>>2]|0)+X+f|0;f=f+Y+i|0;i=i+oa+f|0;a[qa+24>>0]=f>>>24;a[qa+25>>0]=f>>>16;a[qa+26>>0]=f>>>8;a[qa+27>>0]=f;a[qa+28>>0]=i>>>24;a[qa+29>>0]=i>>>16;a[qa+30>>0]=i>>>8;a[qa+31>>0]=i;c[wa+36>>2]=ua;a[wa+65>>0]=0;c[wa+76>>2]=f;c[wa+80>>2]=i;a[wa+47>>0]=1;i=wa+8|0;f=c[i>>2]|0;f=_a[c[(c[f>>2]|0)+12>>2]&127](f,qa,32,0,0)|0;do if(!f){if((a[wa+48>>0]|0?(q=c[i>>2]|0,r=U>>>2&3,r|0):0)?(s=Xa[c[(c[q>>2]|0)+20>>2]&255](q,r)|0,s|0):0){f=s;break}Y=i;break c}while(0);g=f;Ra=za;return g|0}else Y=wa+8|0;while(0);V=c[Y>>2]|0;W=ua+24|0;X=((W|0)<0)<<31>>31;i=Yv(l|0,0,W|0,X|0)|0;i=Sv(i|0,L()|0,32,0)|0;f=L()|0;oa=(ya|0)==0;d:do if(!oa){q=(B|0)==0;r=V;s=U&3;t=(s|0)==0;u=wa+104|0;v=((ua|0)<0)<<31>>31;p=ya;m=0;o=f;n=i;e:while(1){do if(q)$=47;else{j=p+16|0;if(!(R|(c[j>>2]|0)!=0)){K=0;S=l+1|0;$=49;break}c[qa>>2]=0;ef(wa,c[p+24>>2]|0,qa)|0;k=c[qa>>2]|0;if(k>>>0>>0){$=47;break}f=Yv(k+-1|0,0,W|0,X|0)|0;f=Sv(f|0,L()|0,56,0)|0;i=L()|0;if(((c[u>>2]|0)+-1|0)>>>0>=k>>>0)c[u>>2]=k;C=c[Y>>2]|0;C=_a[c[(c[C>>2]|0)+12>>2]&127](C,c[p+4>>2]|0,ua,f,i)|0;if(C|0){$=45;break e}w=p+28|0;b[w>>1]=b[w>>1]&-65;w=l;x=m;y=j;z=n;A=o}while(0);if(($|0)==47){f=l+1|0;if(R){M=0;T=f;$=50}else{K=c[p+16>>2]|0;S=f;$=49}}if(($|0)==49){M=(K|0)==0?g:0;T=S;$=50}if(($|0)==50){$=0;m=c[p+4>>2]|0;mf(wa,c[p+24>>2]|0,M,m,qa);if(!(o>>>0<4294967295|(o|0)==-1&n>>>0<4294967272)){l=0-n|0;f=_a[c[(c[r>>2]|0)+12>>2]&127](r,qa,l,n,o)|0;if(f|0){E=f;$=63;break}f=Sv(n|0,o|0,l|0,((l|0)<0)<<31>>31|0)|0;i=L()|0;j=n+24|0;if(t)k=0;else k=Xa[c[(c[r>>2]|0)+20>>2]&255](r,s)|0;if((j|0)!=0&(k|0)==0){H=j;J=qa+l|0;N=f;O=i;$=55}else F=k}else{H=24;J=qa;N=n;O=o;$=55}if(($|0)==55){$=0;F=_a[c[(c[r>>2]|0)+12>>2]&127](r,J,H,N,O)|0}if(F|0){E=F;$=63;break}f=Sv(n|0,o|0,24,0)|0;i=L()|0;Sv(f|0,i|0,ua|0,v|0)|0;if(!((o|0)>-1|(o|0)==-1&n>>>0>4294967271|(L()|0)<0)){l=-24-n|0;j=_a[c[(c[r>>2]|0)+12>>2]&127](r,m,l,f,i)|0;if(j|0){E=j;$=63;break}f=Sv(f|0,i|0,l|0,((l|0)<0)<<31>>31|0)|0;i=L()|0;j=ua-l|0;if(t)k=0;else k=Xa[c[(c[r>>2]|0)+20>>2]&255](r,s)|0;if((j|0)!=0&(k|0)==0){G=j;I=m+l|0;P=f;Q=i;$=62}else D=k}else{G=ua;I=m;P=f;Q=i;$=62}if(($|0)==62){$=0;D=_a[c[(c[r>>2]|0)+12>>2]&127](r,I,G,P,Q)|0}f=p+28|0;if(D|0){da=D;$=127;break}z=Sv(n|0,o|0,W|0,X|0)|0;A=L()|0;b[f>>1]=b[f>>1]|64;w=T;x=p;y=p+16|0}p=c[y>>2]|0;if(!p){ma=w;ta=x;Z=z;_=A;break d}else{l=w;m=x;o=A;n=z}}if(($|0)==45){g=C;Ra=za;return g|0}else if(($|0)==63){g=E;Ra=za;return g|0}else if(($|0)==127){Ra=za;return da|0}}else{ma=l;ta=0;Z=i;_=f}while(0);A=(h|0)!=0;if(A){i=wa+104|0;if(c[i>>2]|0){m=(c[wa+36>>2]|0)+24|0;v=nb(m)|0;if(!v){g=7;Ra=za;return g|0}p=c[i>>2]|0;o=(p|0)==1;n=((m|0)<0)<<31>>31;p=Yv(p+-2|0,0,m|0,n|0)|0;p=Sv(p|0,L()|0,48,0)|0;f=L()|0;q=c[Y>>2]|0;f=_a[c[(c[q>>2]|0)+8>>2]&127](q,v,8,o?24:p,o?0:f)|0;o=v+1|0;p=v+2|0;q=v+3|0;c[wa+76>>2]=d[o>>0]<<16|d[v>>0]<<24|d[p>>0]<<8|d[q>>0];r=v+4|0;s=v+5|0;t=v+6|0;u=v+7|0;c[wa+80>>2]=d[s>>0]<<16|d[r>>0]<<24|d[t>>0]<<8|d[u>>0];j=c[i>>2]|0;c[i>>2]=0;f:do if(!((f|0)!=0|j>>>0>ma>>>0)){l=v+24|0;do{i=Yv(j+-1|0,0,m|0,n|0)|0;i=Sv(i|0,L()|0,32,0)|0;k=L()|0;f=c[Y>>2]|0;f=_a[c[(c[f>>2]|0)+8>>2]&127](f,v,m,i,k)|0;if(f|0)break f;mf(wa,d[o>>0]<<16|d[v>>0]<<24|d[p>>0]<<8|d[q>>0],d[s>>0]<<16|d[r>>0]<<24|d[t>>0]<<8|d[u>>0],l,qa);f=c[Y>>2]|0;f=_a[c[(c[f>>2]|0)+12>>2]&127](f,qa,24,i,k)|0;j=j+1|0}while(!(j>>>0>ma>>>0|(f|0)!=0))}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](v);else{T=Wa[c[29352>>2]&127](v)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](v)}if(f|0){g=f;Ra=za;return g|0}}z=U&3;do if(!z){i=0;k=0}else{if(a[wa+49>>0]|0){f=c[Y>>2]|0;i=c[(c[f>>2]|0)+44>>2]|0;if(!i){f=4096;i=0}else{i=Wa[i&127](f)|0;U=(i|0)<32;i=(i|0)<65536?i:65536;f=U?512:i;i=U?0:((i|0)<0)<<31>>31}y=Sv(Z|0,_|0,-1,-1)|0;y=Sv(y|0,L()|0,f|0,i|0)|0;v=L()|0;u=Zv(y|0,v|0,f|0,i|0)|0;u=Tv(y|0,v|0,u|0,L()|0)|0;v=L()|0;y=(u|0)==(Z|0)&(v|0)==(_|0);g:do if((v|0)>(_|0)|(v|0)==(_|0)&u>>>0>Z>>>0){s=ta+4|0;t=ta+24|0;w=V;x=((ua|0)<0)<<31>>31;k=0;r=Z;q=_;while(1){p=c[s>>2]|0;mf(wa,c[t>>2]|0,g,p,qa);n=Sv(r|0,q|0,24,0)|0;o=L()|0;if(!((v|0)>(o|0)|(v|0)==(o|0)&u>>>0>n>>>0)){m=Tv(u|0,v|0,r|0,q|0)|0;L()|0;f=_a[c[(c[w>>2]|0)+12>>2]&127](w,qa,m,r,q)|0;if(f|0){ba=f;break}f=Sv(r|0,q|0,m|0,((m|0)<0)<<31>>31|0)|0;i=L()|0;j=24-m|0;l=Xa[c[(c[w>>2]|0)+20>>2]&255](w,z)|0;if((j|0)!=0&(l|0)==0){fa=j;ha=qa+m|0;ia=f;ja=i;$=89}else ca=l}else{fa=24;ha=qa;ia=r;ja=q;$=89}if(($|0)==89){$=0;ca=_a[c[(c[w>>2]|0)+12>>2]&127](w,ha,fa,ia,ja)|0}if(ca|0){ba=ca;break}_=Sv(n|0,o|0,ua|0,x|0)|0;Z=L()|0;if(!((v|0)<(o|0)|(v|0)==(o|0)&u>>>0<=n>>>0|((Z|0)<(v|0)|(Z|0)==(v|0)&_>>>0>>0))){m=Tv(u|0,v|0,n|0,o|0)|0;L()|0;f=_a[c[(c[w>>2]|0)+12>>2]&127](w,p,m,n,o)|0;if(f|0){ba=f;break}f=Sv(n|0,o|0,m|0,((m|0)<0)<<31>>31|0)|0;i=L()|0;j=ua-m|0;l=Xa[c[(c[w>>2]|0)+20>>2]&255](w,z)|0;if((j|0)!=0&(l|0)==0){ea=j;ga=p+m|0;ka=f;la=i;$=94}else aa=l}else{ea=ua;ga=p;ka=n;la=o;$=94}if(($|0)==94){$=0;aa=_a[c[(c[w>>2]|0)+12>>2]&127](w,ga,ea,ka,la)|0}if(aa|0){da=aa;$=127;break}r=Sv(r|0,q|0,W|0,X|0)|0;q=L()|0;k=k+1|0;if(!((v|0)>(q|0)|(v|0)==(q|0)&u>>>0>r>>>0))break g}if(($|0)==127){Ra=za;return da|0}g=ba;Ra=za;return g|0}else k=0;while(0);if(!y){i=0;break}}else k=0;i=V;i=Xa[c[(c[i>>2]|0)+20>>2]&255](i,z)|0}while(0);m=wa+47|0;if((a[m>>0]|0)!=0?(pa=wa+16|0,na=c[pa>>2]|0,pa=c[pa+4>>2]|0,(pa|0)>-1|(pa|0)==-1&na>>>0>4294967295):0){l=Yv(k+ma|0,0,W|0,X|0)|0;l=Sv(l|0,L()|0,32,0)|0;j=L()|0;f=(j|0)>(pa|0)|(j|0)==(pa|0)&l>>>0>na>>>0;l=f?l:na;j=f?j:pa;f=c[Y>>2]|0;f=Xa[c[(c[f>>2]|0)+24>>2]&255](f,qa)|0;pa=c[qa+4>>2]|0;if((f|0)==0&((pa|0)>(j|0)|((pa|0)==(j|0)?(c[qa>>2]|0)>>>0>l>>>0:0))){f=c[Y>>2]|0;f=Ya[c[(c[f>>2]|0)+16>>2]&127](f,l,j)|0}if(f|0){c[sa>>2]=c[wa+108>>2];Db(f,32326,sa)}a[m>>0]=0}}else{i=0;k=0}f=c[ra>>2]|0;if((ya|0)!=0&(i|0)==0){l=ya;do{j=f+1|0;if(!(b[l+28>>1]&64))i=0;else{i=ff(wa,j,c[l+24>>2]|0)|0;f=j}l=c[l+16>>2]|0}while((i|0)==0&(l|0)!=0)}j=(i|0)==0;if((k|0)>0&j){l=ta+24|0;while(1){f=f+1|0;i=ff(wa,f,c[l>>2]|0)|0;j=(i|0)==0;if((k|0)>1&j)k=k+-1|0;else{k=f;break}}}else k=f;if(j){b[wa+66>>1]=ua&65280|ua>>>16;c[ra>>2]=k;if(A){f=wa+60|0;m=c[f>>2]|0;c[f>>2]=m+1;c[wa+72>>2]=g;f=c[c[va>>2]>>2]|0;a[wa+64>>0]=1;c[xa>>2]=3007e3;l=c[xa+4>>2]|0;m=m+6014001+l|0;l=l+3007e3+(c[xa+12>>2]|0)+m|0;m=m+k+l|0;l=l+g+m|0;m=m+(c[xa+24>>2]|0)+l|0;l=l+(c[xa+28>>2]|0)+m|0;m=m+(c[xa+32>>2]|0)+l|0;l=l+(c[xa+36>>2]|0)+m|0;c[wa+92>>2]=m;c[wa+96>>2]=l;l=f+48|0;m=xa;n=l+48|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));if((a[wa+43>>0]|0)!=2){g=c[wa+4>>2]|0;ab[c[(c[g>>2]|0)+60>>2]&127](g)}l=f;m=xa;n=l+48|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));c[wa+12>>2]=k}}else if(i|0){g=i;Ra=za;return g|0}j=e+88|0;i=c[j>>2]|0;if((i|0)==0|oa){g=0;Ra=za;return g|0}f=ya;while(1){if(i|0)nf(i,c[f+24>>2]|0,c[f+4>>2]|0);f=c[f+16>>2]|0;if(!f){da=0;break}i=c[j>>2]|0}Ra=za;return da|0}function Xe(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+32|0;l=t+16|0;p=t;f=c[d+40>>2]|0;if(f|0){d=f;Ra=t;return d|0}a:do if(!(c[d+216>>2]|0)){k=d+17|0;g=d+13|0;h=d+60|0;i=d+176|0;j=d+180|0;b:while(1){switch(a[k>>0]|0){case 0:case 1:case 2:case 3:case 5:break;default:break a}if(a[g>>0]|0){g=7;break}f=c[h>>2]|0;f=Xa[c[(c[f>>2]|0)+28>>2]&255](f,4)|0;switch(f|0){case 0:{g=7;break b}case 5:break;default:{g=36;break b}}if(!(Wa[c[i>>2]&127](c[j>>2]|0)|0)){f=5;g=36;break}}if((g|0)==7){a[k>>0]=4;break}else if((g|0)==36){Ra=t;return f|0}}while(0);do if(!(a[d+7>>0]|0)){j=d+64|0;if(c[c[j>>2]>>2]|0?(a[d+5>>0]|0)!=4:0){i=c[d+60>>2]|0;i=Wa[c[(c[i>>2]|0)+48>>2]&127](i)|0;k=(i&512|0)==0;c:do if(k){g=p;c[g>>2]=-117058087;c[g+4>>2]=-681336544;g=c[d+44>>2]|0;a[p+8>>0]=g>>>24;a[p+9>>0]=g>>>16;a[p+10>>0]=g>>>8;a[p+11>>0]=g;g=d+72|0;f=c[g>>2]|0;g=c[g+4>>2]|0;if((f|0)==0&(g|0)==0){g=0;h=0}else{f=Sv(f|0,g|0,-1,-1)|0;h=L()|0;g=c[d+148>>2]|0;h=Wv(f|0,h|0,g|0,0)|0;h=Sv(h|0,L()|0,1,0)|0;g=Yv(h|0,L()|0,g|0,0)|0;h=L()|0}f=c[j>>2]|0;f=_a[c[(c[f>>2]|0)+8>>2]&127](f,l,8,g,h)|0;if(!f)if(!(Lu(l,32352,8)|0)){f=c[j>>2]|0;f=_a[c[(c[f>>2]|0)+12>>2]&127](f,59953,1,g,h)|0;g=19}else g=20;else g=19;if((g|0)==19)switch(f|0){case 0:case 522:{g=20;break}default:{}}do if((g|0)==20){g=i&1024;if(((g|0)==0&(a[d+8>>0]|0)!=0?(m=c[j>>2]|0,n=a[d+10>>0]|0,n<<24>>24):0)?(o=Xa[c[(c[m>>2]|0)+20>>2]&255](m,n&255)|0,o|0):0){f=o;break}o=c[j>>2]|0;f=d+80|0;f=_a[c[(c[o>>2]|0)+12>>2]&127](o,p,12,c[f>>2]|0,c[f+4>>2]|0)|0;if(!f){f=g;break c}}while(0);d=f;Ra=t;return d|0}else f=i&1024;while(0);if(((f|0)==0?(q=c[j>>2]|0,r=a[d+10>>0]|0,r=(r<<24>>24==3?16:0)|r&255,r|0):0)?(s=Xa[c[(c[q>>2]|0)+20>>2]&255](q,r)|0,s|0):0){d=s;Ra=t;return d|0}q=d+72|0;r=c[q+4>>2]|0;s=d+80|0;c[s>>2]=c[q>>2];c[s+4>>2]=r;if((e|0)==0|k^1)break;c[d+44>>2]=0;f=of(d)|0;if(!f)break;Ra=t;return f|0}q=d+72|0;r=c[q+4>>2]|0;s=d+80|0;c[s>>2]=c[q>>2];c[s+4>>2]=r}while(0);g=c[d+212>>2]|0;f=c[g>>2]|0;if(f|0)do{s=f+28|0;b[s>>1]=b[s>>1]&-9;f=c[f+32>>2]|0}while((f|0)!=0);c[g+8>>2]=c[g+4>>2];a[d+16>>0]=4;d=0;Ra=t;return d|0}function Ye(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=Ra;Ra=Ra+16|0;l=t;s=e+60|0;h=c[s>>2]|0;if((c[h>>2]|0)==0?(g=c[e>>2]|0,g=_a[c[g+24>>2]&127](g,0,h,c[e+144>>2]&556897|30,0)|0,g|0):0){s=g;Ra=t;return s|0}k=e+36|0;h=c[k>>2]|0;j=e+24|0;g=c[j>>2]|0;do if(h>>>0>>0){if((c[f+16>>2]|0)==0?(c[f+24>>2]|0)>>>0<=h>>>0:0)break;r=c[e+152>>2]|0;r=Yv(r|0,((r|0)<0)<<31>>31|0,g|0,0)|0;i=L()|0;h=l;c[h>>2]=r;c[h+4>>2]=i;h=c[s>>2]|0;i=c[h>>2]|0;if(i){Ya[c[i+40>>2]&127](h,5,l)|0;g=c[j>>2]|0}c[k>>2]=g}while(0);if(!f){s=0;Ra=t;return s|0}n=e+24|0;o=e+152|0;p=e+104|0;q=e+32|0;r=e+192|0;m=e+88|0;do{e=c[f+24>>2]|0;if(e>>>0<=(c[n>>2]|0)>>>0?(b[f+28>>1]&16)==0:0){g=c[o>>2]|0;h=Yv(g|0,((g|0)<0)<<31>>31|0,e+-1|0,0)|0;i=L()|0;j=(e|0)==1;if(j){k=c[f+20>>2]|0;k=((d[k+105>>0]|0)<<16|(d[k+104>>0]|0)<<24|(d[k+106>>0]|0)<<8|(d[k+107>>0]|0))+1|0;l=f+4|0;g=c[l>>2]|0;w=k>>>24&255;a[g+24>>0]=w;v=k>>>16&255;a[g+25>>0]=v;u=k>>>8&255;a[g+26>>0]=u;k=k&255;a[g+27>>0]=k;g=c[l>>2]|0;a[g+92>>0]=w;a[g+93>>0]=v;a[g+94>>0]=u;a[g+95>>0]=k;g=c[l>>2]|0;a[g+96>>0]=0;a[g+97>>0]=46;a[g+98>>0]=52;a[g+99>>0]=32;g=c[o>>2]|0}else l=f+4|0;k=c[l>>2]|0;w=c[s>>2]|0;g=_a[c[(c[w>>2]|0)+12>>2]&127](w,k,g,h,i)|0;if(j){j=p;h=k+24|0;i=j+16|0;do{a[j>>0]=a[h>>0]|0;j=j+1|0;h=h+1|0}while((j|0)<(i|0))}if(e>>>0>(c[q>>2]|0)>>>0)c[q>>2]=e;c[r>>2]=(c[r>>2]|0)+1;h=c[m>>2]|0;if(h)nf(h,e,c[l>>2]|0)}else g=0;f=c[f+16>>2]|0}while((g|0)==0&(f|0)!=0);Ra=t;return g|0}function Ze(a){a=a|0;var b=0,d=0,e=0;d=a+16|0;a=c[d>>2]|0;if(!a){c[d>>2]=0;return 0}do{b=a;a=c[a>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](b);else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b)}}while((a|0)!=0);c[d>>2]=0;return 0}function _e(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=a+40|0;k=l;a:do if((e|0)==0&(f|0)==0|((c[k>>2]|0)!=(e|0)?1:(c[k+4>>2]|0)!=(f|0))){g=c[a+16>>2]|0;if(!g)g=0;else{j=c[a+4>>2]|0;k=((j|0)<0)<<31>>31;h=0;i=0;while(1){h=Sv(h|0,i|0,j|0,k|0)|0;i=L()|0;if((i|0)>(f|0)|(i|0)==(f|0)&h>>>0>e>>>0)break a;g=c[g>>2]|0;if(!g){g=0;break}}}}else g=c[a+48>>2]|0;while(0);k=a+4|0;i=c[k>>2]|0;j=Zv(e|0,f|0,i|0,((i|0)<0)<<31>>31|0)|0;L()|0;i=i-j|0;h=(i|0)>(d|0)?d:i;ew(b|0,g+4+j|0,h|0)|0;i=d-i|0;b:do if((i|0)>-1){j=b;do{g=c[g>>2]|0;if(!((i|0)!=0&(g|0)!=0))break b;j=j+h|0;b=c[k>>2]|0;h=(i|0)<(b|0)?i:b;ew(j|0,g+4|0,h|0)|0;i=i-b|0}while((i|0)>-1)}while(0);b=(g|0)==0;e=Sv(d|0,((d|0)<0)<<31>>31|0,e|0,f|0)|0;f=L()|0;c[l>>2]=b?0:e;c[l+4>>2]=b?0:f;c[a+48>>2]=g;return 0}function $e(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;I=Ra;Ra=Ra+32|0;G=I;H=a+8|0;g=c[H>>2]|0;if((g|0)>0?(F=Sv(d|0,((d|0)<0)<<31>>31|0,e|0,f|0)|0,D=L()|0,E=((g|0)<0)<<31>>31,(D|0)>(E|0)|(D|0)==(E|0)&F>>>0>g>>>0):0){m=c[a>>2]|0;t=a+4|0;u=c[t>>2]|0;D=H;C=c[D>>2]|0;D=c[D+4>>2]|0;v=a+16|0;g=c[v>>2]|0;w=a+20|0;x=c[w>>2]|0;y=a+24|0;F=y;E=c[F>>2]|0;F=c[F+4>>2]|0;z=a+32|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[G+16>>2]=c[z+16>>2];c[G+20>>2]=c[z+20>>2];A=a+56|0;B=c[A>>2]|0;n=a+60|0;o=c[n>>2]|0;p=a+64|0;q=c[p>>2]|0;r=a+68|0;s=c[r>>2]|0;h=a;i=h+72|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));h=_a[c[o+24>>2]&127](o,q,a,B&556927,0)|0;a:do if(!h){if(g|0){i=u;j=g;k=0;l=0;do{J=Sv(k|0,l|0,i|0,((i|0)<0)<<31>>31|0)|0;K=L()|0;h=Tv(E|0,F|0,k|0,l|0)|0;L()|0;i=(K|0)>(F|0)|(K|0)==(F|0)&J>>>0>E>>>0?h:i;h=_a[c[(c[a>>2]|0)+12>>2]&127](a,j+4|0,i,k,l)|0;if(h|0){i=a;break a}k=Sv(k|0,l|0,i|0,((i|0)<0)<<31>>31|0)|0;l=L()|0;j=c[j>>2]|0}while((j|0)!=0);do{h=g;g=c[g>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{K=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}}while((g|0)!=0)}K=_a[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f)|0;Ra=I;return K|0}else i=a;while(0);j=c[i>>2]|0;if(j|0){Wa[c[j+4>>2]&127](a)|0;c[i>>2]=0}c[a>>2]=m;c[t>>2]=u;K=H;c[K>>2]=C;c[K+4>>2]=D;c[v>>2]=g;c[w>>2]=x;K=y;c[K>>2]=E;c[K+4>>2]=F;c[z>>2]=c[G>>2];c[z+4>>2]=c[G+4>>2];c[z+8>>2]=c[G+8>>2];c[z+12>>2]=c[G+12>>2];c[z+16>>2]=c[G+16>>2];c[z+20>>2]=c[G+20>>2];c[A>>2]=B;c[n>>2]=o;c[p>>2]=q;c[r>>2]=s;K=h;Ra=I;return K|0}b:do if((d|0)>0){m=a+24|0;n=a+32|0;o=a+4|0;p=a+16|0;i=m;l=d;h=c[i>>2]|0;i=c[i+4>>2]|0;while(1){g=c[n>>2]|0;j=c[o>>2]|0;i=Zv(h|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;L()|0;k=j-i|0;k=(l|0)<(k|0)?l:k;if(!i){h=nb(j+4|0)|0;if(!h){g=3082;break}c[h>>2]=0;if(!g)c[p>>2]=h;else c[g>>2]=h;c[n>>2]=h;g=h}ew(g+4+i|0,b|0,k|0)|0;l=l-k|0;h=m;h=Sv(c[h>>2]|0,c[h+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;i=L()|0;K=m;c[K>>2]=h;c[K+4>>2]=i;if((l|0)<=0)break b;else b=b+k|0}Ra=I;return g|0}while(0);c[a+12>>2]=e+d;K=0;Ra=I;return K|0}function af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(!((b|0)==0&(d|0)==0))return 0;e=a+16|0;b=c[e>>2]|0;if(b|0)do{d=b;b=c[b>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{f=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}}while((b|0)!=0);c[e>>2]=0;c[a+12>>2]=0;c[a+32>>2]=0;f=a+24|0;c[f>>2]=0;c[f+4>>2]=0;c[a+48>>2]=0;f=a+40|0;c[f>>2]=0;c[f+4>>2]=0;return 0}function bf(a,b){a=a|0;b=b|0;return 0}function cf(a,b){a=a|0;b=b|0;var d=0;d=a+24|0;a=c[d+4>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=a;return 0}function df(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!b){m=0;return m|0}e=e+-1|0;a:do if((c[b>>2]|0)>>>0>4e3){l=b;j=b;while(1){i=c[l+8>>2]|0;if(!i)break;h=(e>>>0)/(i>>>0)|0;e=e-(G(h,i)|0)|0;h=l+12+(h<<2)|0;b=c[h>>2]|0;if(!b){if(!(c[7324]|0)){b=Wa[c[29340>>2]&127](512)|0;if(!b){m=17;break}}else{b=Wa[c[29356>>2]&127](512)|0;if((c[14985]|0)>>>0<512)c[14985]=512;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){l=c[14978]|0;k=Tv(f|0,g|0,b|0,((b|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&k>>>0<=l>>>0)&1}b=Wa[c[29340>>2]&127](b)|0;if(!b){m=17;break}f=Wa[c[29352>>2]&127](b)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}gw(b+4|0,0,508)|0;c[b>>2]=i;c[h>>2]=b}if((c[b>>2]|0)>>>0>4e3){l=b;j=b}else break a}if((m|0)==17){c[h>>2]=0;m=7;return m|0}i=l+8|0;k=e+1|0;b=(e>>>0)%125|0;h=l+12|0;f=l+12+(b<<2)|0;e=c[f>>2]|0;if(!e){b=l+4|0;e=c[b>>2]|0;if(e>>>0<124)m=46}else{f=b;do{if((e|0)==(k|0)){e=0;m=47;break}e=f+1|0;f=e>>>0>124?0:e;e=c[l+12+(f<<2)>>2]|0}while((e|0)!=0);if((m|0)==47)return e|0;b=l+4|0;e=c[b>>2]|0;if(e>>>0<=61){f=l+12+(f<<2)|0;m=46}}if((m|0)==46){c[b>>2]=e+1;c[f>>2]=k;m=0;return m|0}if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](500)|0;if(!e){m=7;return m|0}else g=e}else{b=Wa[c[29356>>2]&127](500)|0;if((c[14985]|0)>>>0<500)c[14985]=500;e=59064;f=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&f>>>0>0){m=c[14978]|0;g=Tv(f|0,e|0,b|0,((b|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&g>>>0<=m>>>0)&1}b=Wa[c[29340>>2]&127](b)|0;if(!b){m=7;return m|0}e=Wa[c[29352>>2]&127](b)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0){c[14987]=e;g=b}else g=b}ew(g|0,h|0,500)|0;gw(h|0,0,500)|0;c[i>>2]=(((c[j>>2]|0)+124|0)>>>0)/125|0;e=df(l,k)|0;f=0;do{b=c[g+(f<<2)>>2]|0;if(b)e=df(l,b)|0|e;f=f+1|0}while((f|0)!=125);if(!(c[7324]|0)){ab[c[29344>>2]&127](g);m=e;return m|0}else{m=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);m=e;return m|0}}while(0);m=b+12+(e>>>3)|0;a[m>>0]=1<<(e&7)|(d[m>>0]|0);m=0;return m|0}function ef(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=Ra;Ra=Ra+32|0;A=C;x=C+12|0;z=c[d+68>>2]|0;do if(z|0){if((b[d+40>>1]|0)==0?(a[d+50>>0]|0)==0:0)break;r=d+100|0;s=((c[r>>2]|0)+33|0)>>>12;h=(z+33|0)>>>12;a:do if(h>>>0>>0)h=0;else{t=x+4|0;u=d+24|0;v=d+32|0;w=x+8|0;q=f*383&8191;p=h;b:while(1){if((c[u>>2]|0)>(p|0)?(y=c[(c[v>>2]|0)+(p<<2)>>2]|0,c[t>>2]=y,(y|0)!=0):0)h=y;else{h=kf(d,p,t)|0;if(h|0)break;h=c[t>>2]|0}n=h+16384|0;c[x>>2]=n;if(!p){h=h+136|0;c[t>>2]=h;o=0}else o=(p<<12)+-34|0;c[w>>2]=o;m=h+-4|0;c[t>>2]=m;i=n+(q<<1)|0;if(b[i>>1]|0){k=8192;l=q;h=0;while(1){j=o+(e[i>>1]|0)|0;if(j>>>0<=z>>>0?j>>>0>=(c[r>>2]|0)>>>0:0)h=(c[m+(e[i>>1]<<2)>>2]|0)==(f|0)?j:h;if(!k){B=22;break b}l=l+1&8191;i=n+(l<<1)|0;if(!(b[i>>1]|0))break;else k=k+-1|0}if(h|0)break a}if((p|0)>(s|0))p=p+-1|0;else{h=0;break a}}if((B|0)==22){c[A>>2]=32306;c[A+4>>2]=61232;c[A+8>>2]=31517;Db(11,32001,A);h=11}B=h;Ra=C;return B|0}while(0);c[g>>2]=h;B=0;Ra=C;return B|0}while(0);c[g>>2]=0;B=0;Ra=C;return B|0}function ff(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=Ra;Ra=Ra+48|0;r=s;p=s+24|0;l=s+12|0;j=d+33|0;k=j>>>12;m=l+4|0;n=a+24|0;if(!((c[n>>2]|0)>(k|0)?(g=c[(c[a+32>>2]|0)+(k<<2)>>2]|0,c[m>>2]=g,(g|0)!=0):0))i=3;do if((i|0)==3){g=kf(a,k,m)|0;if(!g){g=c[m>>2]|0;break}else{f=g;Ra=s;return f|0}}while(0);q=g+16384|0;c[l>>2]=q;if(!k){k=g+136|0;c[m>>2]=k;i=0}else{i=(j&-4096)+-34|0;k=g}c[l+8>>2]=i;j=k+-4|0;c[m>>2]=j;o=d-i|0;if((o|0)==1)gw(k|0,0,g+32768-k|0)|0;m=j+(o<<2)|0;if(c[m>>2]|0){d=a+68|0;g=c[d>>2]|0;do if(g|0){g=g+33|0;i=g>>>12;k=p+4|0;if(!((c[n>>2]|0)>(i|0)?(h=c[(c[a+32>>2]|0)+(i<<2)>>2]|0,c[k>>2]=h,(h|0)!=0):0)){if(kf(a,i,k)|0)break;h=c[k>>2]|0}l=h+16384|0;c[p>>2]=l;if(!i){j=h+136|0;c[k>>2]=j;g=0}else{g=(g&-4096)+-34|0;j=h}c[p+8>>2]=g;c[k>>2]=j+-4;h=(c[d>>2]|0)-g|0;g=0;do{i=l+(g<<1)|0;if((h|0)<(e[i>>1]|0))b[i>>1]=0;g=g+1|0}while((g|0)!=8192);p=j+(h<<2)|0;gw(p|0,0,l-p|0)|0}while(0)}h=f*383&8191;g=q+(h<<1)|0;a:do if(b[g>>1]|0){i=o;while(1){if(!i)break;h=h+1&8191;g=q+(h<<1)|0;if(!(b[g>>1]|0))break a;else i=i+-1|0}c[r>>2]=32306;c[r+4>>2]=59401;c[r+8>>2]=31517;Db(11,32001,r);f=11;Ra=s;return f|0}while(0);c[m>>2]=f;b[g>>1]=o;f=0;Ra=s;return f|0}function gf(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=Ra;Ra=Ra+64|0;u=A+32|0;k=A;j=A+48|0;v=A+44|0;w=A+40|0;do if((h|0)>5)if((h|0)>100){d=15;Ra=A;return d|0}else{z=h+-9|0;z=G(z*39|0,z)|0;y=c[d>>2]|0;Xa[c[y+60>>2]&255](y,(h|0)>9?z:1)|0;break}while(0);a:do if(!g){z=d+50|0;if(!(a[z>>0]|0)){g=hf(d,f)|0;b:do if((g|0)==5){if(!(c[c[d+32>>2]>>2]|0)){d=-1;Ra=A;return d|0}h=d+43|0;if(a[h>>0]|0){d=-1;Ra=A;return d|0}i=d+4|0;g=c[i>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,2,1,6)|0;switch(g|0){case 0:break;case 5:{d=261;Ra=A;return d|0}default:break b}if(a[h>>0]|0){d=-1;Ra=A;return d|0}d=c[i>>2]|0;Za[c[(c[d>>2]|0)+56>>2]&127](d,2,1,5)|0;d=-1;Ra=A;return d|0}while(0);if(g|0){d=g;Ra=A;return d|0}if(!(a[z>>0]|0)){j=d+32|0;m=(c[c[j>>2]>>2]|0)+96|0;l=d+52|0;h=d+68|0;if((c[m>>2]|0)!=(c[h>>2]|0)){g=0;break}k=d+43|0;i=a[k>>0]|0;if(!(i<<24>>24)){g=c[d+4>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,3,1,6)|0;i=a[k>>0]|0}else g=0;if(i<<24>>24!=2){f=c[d+4>>2]|0;ab[c[(c[f>>2]|0)+60>>2]&127](f)}switch(g|0){case 5:break a;case 0:break;default:{d=g;Ra=A;return d|0}}if(!(Lu(c[c[j>>2]>>2]|0,l,48)|0)){b[d+40>>1]=0;d=0;Ra=A;return d|0}if(a[k>>0]|0){d=-1;Ra=A;return d|0}d=c[d+4>>2]|0;Za[c[(c[d>>2]|0)+56>>2]&127](d,3,1,5)|0;d=-1;Ra=A;return d|0}}x=d+43|0;y=d+4|0;if(!(a[x>>0]|0)){g=c[y>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,3,1,6)|0;switch(g|0){case 0:{t=17;break}case 5:{g=-1;t=35;break}default:t=34}}else t=17;c:do if((t|0)==17){b[d+40>>1]=0;g=c[y>>2]|0;g=_a[c[(c[g>>2]|0)+52>>2]&127](g,0,32768,0,j)|0;switch(g|0){case 8:{g=-1;t=35;break c}case 1288:break;default:{t=34;break c}}g=d+52|0;h=c[c[d+32>>2]>>2]|0;i=g+48|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));t=d+8|0;g=c[t>>2]|0;g=Xa[c[(c[g>>2]|0)+24>>2]&255](g,u)|0;if(!g){s=u;r=c[s+4>>2]|0;if((r|0)<0|(r|0)==0&(c[s>>2]|0)>>>0<32){c[f>>2]=1;g=((c[d+68>>2]|0)!=0)<<31>>31;t=34;break}g=c[t>>2]|0;g=_a[c[(c[g>>2]|0)+8>>2]&127](g,k,32,0,0)|0;if(!g)if(!(Lu(d+84|0,k+16|0,8)|0)){g=d+66|0;n=(e[g>>1]|0)+24|0;o=pb(n,0)|0;if(o){m=o+24|0;p=d+76|0;q=c[p>>2]|0;r=d+80|0;s=c[r>>2]|0;i=Yv((e[g>>1]|0)+24|0,0,c[d+68>>2]|0,0)|0;i=Sv(i|0,L()|0,32,0)|0;j=L()|0;g=Sv(i|0,j|0,n|0,0)|0;h=L()|0;l=u;k=c[l+4>>2]|0;d:do if((h|0)>(k|0)|((h|0)==(k|0)?g>>>0>(c[l>>2]|0)>>>0:0))g=0;else{l=g;k=h;h=i;g=j;while(1){j=c[t>>2]|0;g=_a[c[(c[j>>2]|0)+8>>2]&127](j,o,n,h,g)|0;if(g|0)break;if(!(lf(d,v,w,m,o)|0)){g=0;break}if(c[w>>2]|0){g=-1;break d}g=Sv(l|0,k|0,n|0,0)|0;h=L()|0;j=u;i=c[j+4>>2]|0;if((h|0)>(i|0)|((h|0)==(i|0)?g>>>0>(c[j>>2]|0)>>>0:0)){g=0;break d}else{i=k;j=l;l=g;k=h;g=i;h=j}}}while(0);c[p>>2]=q;c[r>>2]=s;if(!(c[7324]|0)){ab[c[29344>>2]&127](o);t=34;break}else{t=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);t=34;break}}else{g=7;t=35}}else{g=-1;t=35}else t=35}else t=35}while(0);if((t|0)==34)if(!g)g=0;else t=35;if((t|0)==35){i=d+24|0;if((c[i>>2]|0)>0){j=d+32|0;h=0;do{k=c[(c[j>>2]|0)+(h<<2)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{w=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[(c[j>>2]|0)+(h<<2)>>2]=0;h=h+1|0}while((h|0)<(c[i>>2]|0))}a[z>>0]=0;h=d+44|0;if(a[h>>0]|0){if(!(a[x>>0]|0)){z=c[y>>2]|0;Za[c[(c[z>>2]|0)+56>>2]&127](z,0,1,9)|0}a[h>>0]=0;c[d+104>>2]=0;a[d+47>>0]=0}h=d+40|0;i=b[h>>1]|0;if(i<<16>>16>-1){if(!(a[x>>0]|0)){d=c[y>>2]|0;Za[c[(c[d>>2]|0)+56>>2]&127](d,(i<<16>>16)+3|0,1,5)|0}b[h>>1]=-1}c[f>>2]=1}d=g;Ra=A;return d|0}else{g=0;l=d+52|0;h=d+68|0;m=(c[c[d+32>>2]>>2]|0)+96|0}while(0);s=c[h>>2]|0;i=m+8|0;o=c[i>>2]|0;k=o>>>0>s>>>0;o=k?0:o;n=m+12|0;p=c[n>>2]|0;y=o>>>0>p>>>0|p>>>0>s>>>0;p=y?o:p;o=m+16|0;f=c[o>>2]|0;x=p>>>0>f>>>0|f>>>0>s>>>0;f=x?p:f;p=m+20|0;j=c[p>>2]|0;z=f>>>0>j>>>0|j>>>0>s>>>0;k=z?(x?(y?(k^1)&1:2):3):4;j=z?f:j;e:do if(!(a[d+46>>0]&2)){if((k|0)==0|j>>>0>>0){q=d+43|0;r=d+4|0;f:do if(!(a[q>>0]|0)){g=c[r>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,4,1,10)|0;switch(g|0){case 0:{k=1;h=4;g=i;break f}case 5:break;default:{d=g;Ra=A;return d|0}}if(!(a[q>>0]|0)){g=c[r>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,5,1,10)|0;switch(g|0){case 0:{k=2;h=5;g=n;break f}case 5:break;default:{d=g;Ra=A;return d|0}}if(!(a[q>>0]|0)){g=c[r>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,6,1,10)|0;switch(g|0){case 0:{k=3;h=6;g=o;break f}case 5:break;default:{d=g;Ra=A;return d|0}}if(!(a[q>>0]|0)){g=c[r>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,7,1,10)|0;switch(g|0){case 5:{t=69;break e}case 0:{k=4;h=7;g=p;break f}default:{}}Ra=A;return g|0}else{k=4;h=7;g=p}}else{k=3;h=6;g=o}}else{k=2;h=5;g=n}}else{k=1;h=4;g=i}while(0);c[g>>2]=s;if(!(a[q>>0]|0)){j=c[r>>2]|0;Za[c[(c[j>>2]|0)+56>>2]&127](j,h,1,9)|0;j=s}else j=s}}else t=69;while(0);if((t|0)==69)if(!k){d=(g|0)==5?-1:1288;Ra=A;return d|0}h=k+3|0;i=d+43|0;g=a[i>>0]|0;do if(!(g<<24>>24)){g=c[d+4>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,h,1,6)|0;if(!g){g=a[i>>0]|0;break}d=(g|0)==5?-1:g;Ra=A;return d|0}while(0);c[d+100>>2]=(c[m>>2]|0)+1;if(g<<24>>24!=2){f=c[d+4>>2]|0;ab[c[(c[f>>2]|0)+60>>2]&127](f)}if((c[m+4+(k<<2)>>2]|0)==(j|0)?(Lu(c[c[d+32>>2]>>2]|0,l,48)|0)==0:0){b[d+40>>1]=k;d=0;Ra=A;return d|0}if(a[i>>0]|0){d=-1;Ra=A;return d|0}d=c[d+4>>2]|0;Za[c[(c[d>>2]|0)+56>>2]&127](d,h,1,5)|0;d=-1;Ra=A;return d|0}function hf(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0;O=Ra;Ra=Ra+96|0;K=O+64|0;G=O+56|0;p=O+40|0;B=O+32|0;m=O;C=O+84|0;D=O+80|0;j=O+76|0;N=e+24|0;if((c[N>>2]|0)>0?(M=c[c[e+32>>2]>>2]|0,c[j>>2]=M,(M|0)!=0):0){g=0;M=6}else{g=kf(e,0,j)|0;switch(g|0){case 0:break;case 1288:{a[e+50>>0]=1;a[e+43>>0]=2;c[f>>2]=1;break}default:{N=g;Ra=O;return N|0}}if(!(c[j>>2]|0)){h=1;M=7}else M=6}if((M|0)==6){h=jf(e,f)|0;if(!h)M=67;else M=7}do if((M|0)==7){if((a[e+50>>0]|0)==0?a[e+46>>0]&2:0){h=e+43|0;if(a[h>>0]|0){g=264;break}i=e+4|0;g=c[i>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,0,1,6)|0;if(g|0)break;if(a[h>>0]|0){g=264;break}g=c[i>>2]|0;Za[c[(c[g>>2]|0)+56>>2]&127](g,0,1,5)|0;g=264;break}I=e+43|0;if((a[I>>0]|0)==0?(i=c[e+4>>2]|0,i=Za[c[(c[i>>2]|0)+56>>2]&127](i,0,1,10)|0,i|0):0){g=i;break}H=e+44|0;a[H>>0]=1;if((c[N>>2]|0)>0?(F=c[c[e+32>>2]>>2]|0,c[j>>2]=F,(F|0)!=0):0)M=18;else{g=kf(e,0,j)|0;if(!g)M=18}if((M|0)==18){h=jf(e,f)|0;if(!h){h=0;g=0}else{F=d[e+45>>0]|0;E=F+1|0;F=2-F|0;if(!(a[I>>0]|0)){i=e+4|0;g=c[i>>2]|0;g=Za[c[(c[g>>2]|0)+56>>2]&127](g,E,F,10)|0;if(!g)if((a[I>>0]|0)==0?(k=c[i>>2]|0,k=Za[c[(c[k>>2]|0)+56>>2]&127](k,4,4,10)|0,(k|0)!=0):0)if(!(a[I>>0]|0)){g=c[i>>2]|0;Za[c[(c[g>>2]|0)+56>>2]&127](g,E,F,9)|0;g=k}else g=k;else M=25}else M=25;if((M|0)==25){A=e+52|0;i=A;l=i+48|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(l|0));z=e+8|0;g=c[z>>2]|0;g=Xa[c[(c[g>>2]|0)+24>>2]&255](g,B)|0;a:do if(!g){y=B;x=c[y+4>>2]|0;b:do if((x|0)>0|(x|0)==0&(c[y>>2]|0)>>>0>32){g=c[z>>2]|0;g=_a[c[(c[g>>2]|0)+8>>2]&127](g,m,32,0,0)|0;c:do if(!g){g=d[m+3>>0]|0;i=m+8|0;n=d[m+9>>0]<<16|d[i>>0]<<24;o=d[m+10>>0]<<8;l=n|o|d[m+11>>0];if((d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|g&254|0)==931071618?!((l+-512|0)>>>0>65024|(l+-1&l|0)!=0):0){x=g&1;a[e+65>>0]=x;c[e+36>>2]=l;g=m+12|0;c[e+112>>2]=d[m+13>>0]<<16|d[g>>0]<<24|d[m+14>>0]<<8|d[m+15>>0];w=m+16|0;j=c[w>>2]|0;w=c[w+4>>2]|0;y=e+84|0;c[y>>2]=j;c[y+4>>2]=w;y=e+76|0;if(!x){x=c[m>>2]|0;k=c[m+4>>2]|0;w=k+x|0;x=w+x+(c[i>>2]|0)|0;i=(c[g>>2]|0)+w+x|0;g=i+(c[m+20>>2]|0)|0;i=x+j+i|0}else{w=dw(c[m>>2]|0)|0;k=c[m+4>>2]|0;x=(dw(k|0)|0)+w|0;i=x+w+(dw(c[i>>2]|0)|0)|0;g=(dw(c[g>>2]|0)|0)+x+i|0;i=i+(dw(j|0)|0)+g|0;g=g+(dw(c[m+20>>2]|0)|0)|0}g=g+i|0;c[y>>2]=i;x=e+80|0;c[x>>2]=g;do if((i|0)==(d[m+25>>0]<<16|d[m+24>>0]<<24|d[m+26>>0]<<8|d[m+27>>0]|0)){if((g|0)!=(d[m+29>>0]<<16|d[m+28>>0]<<24|d[m+30>>0]<<8|d[m+31>>0]|0))break;if((d[m+5>>0]<<16|k<<24|d[m+6>>0]<<8|d[m+7>>0]|0)!=3007e3){c[p>>2]=31984;c[p+4>>2]=59539;c[p+8>>2]=31517;Db(14,32001,p);g=14;break a}r=l+24|0;s=((r|0)<0)<<31>>31;w=pb(r,s)|0;if(!w){g=7;break c}t=w+24|0;g=Sv(r|0,s|0,32,0)|0;m=L()|0;v=B;u=c[v+4>>2]|0;d:do if((m|0)>(u|0)|((m|0)==(u|0)?g>>>0>(c[v>>2]|0)>>>0:0)){g=0;i=0;j=0}else{u=e+68|0;v=e+72|0;p=(n>>>16|o)&65535;q=e+66|0;o=0;i=0;j=0;k=32;l=0;n=g;while(1){o=o+1|0;g=c[z>>2]|0;g=_a[c[(c[g>>2]|0)+8>>2]&127](g,w,r,k,l)|0;if(g|0)break;if(!(lf(e,C,D,t,w)|0)){g=0;break}g=ff(e,o,c[C>>2]|0)|0;if(g|0)break;g=c[D>>2]|0;if(g){c[u>>2]=o;c[v>>2]=g;b[q>>1]=p;i=c[y>>2]|0;j=c[x>>2]|0}g=Sv(n|0,m|0,r|0,s|0)|0;k=L()|0;l=B;P=c[l+4>>2]|0;if((k|0)>(P|0)|((k|0)==(P|0)?g>>>0>(c[l>>2]|0)>>>0:0)){g=0;break d}else{l=m;P=n;n=g;m=k;k=P}}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](w);else{P=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-P;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w)}if(!g){g=j;break b}else break a}while(0);i=0;g=0;break b}i=0;g=0;break b}while(0);break a}else{i=0;g=0}while(0);c[e+76>>2]=i;c[e+80>>2]=g;j=e+32|0;k=c[c[j>>2]>>2]|0;a[e+64>>0]=1;c[A>>2]=3007e3;P=c[A+4>>2]|0;l=P+6014e3+(c[A+8>>2]|0)|0;P=P+3007e3+(c[A+12>>2]|0)+l|0;l=(c[A+16>>2]|0)+l+P|0;P=(c[A+20>>2]|0)+P+l|0;l=l+i+P|0;i=P+g+l|0;g=l+(c[A+32>>2]|0)+i|0;i=i+(c[A+36>>2]|0)+g|0;c[e+92>>2]=g;c[e+96>>2]=i;i=k+48|0;g=A;l=i+48|0;do{a[i>>0]=a[g>>0]|0;i=i+1|0;g=g+1|0}while((i|0)<(l|0));if((a[I>>0]|0)!=2){P=c[e+4>>2]|0;ab[c[(c[P>>2]|0)+60>>2]&127](P)}i=k;g=A;l=i+48|0;do{a[i>>0]=a[g>>0]|0;i=i+1|0;g=g+1|0}while((i|0)<(l|0));j=c[c[j>>2]>>2]|0;c[j+96>>2]=0;g=e+68|0;c[j+128>>2]=c[g>>2];c[j+100>>2]=0;i=j+104|0;c[i>>2]=-1;c[j+108>>2]=-1;c[j+112>>2]=-1;c[j+116>>2]=-1;j=c[g>>2]|0;if(j|0)c[i>>2]=j;if(!(c[e+72>>2]|0))g=0;else{P=c[e+108>>2]|0;c[G>>2]=c[g>>2];c[G+4>>2]=P;Db(283,32269,G);g=0}}while(0);if((a[I>>0]|0)==0?(J=e+4|0,P=c[J>>2]|0,Za[c[(c[P>>2]|0)+56>>2]&127](P,E,F,9)|0,(a[I>>0]|0)==0):0){P=c[J>>2]|0;Za[c[(c[P>>2]|0)+56>>2]&127](P,4,4,9)|0}}c[f>>2]=1}}a[H>>0]=0;if(!(a[I>>0]|0)){P=c[e+4>>2]|0;Za[c[(c[P>>2]|0)+56>>2]&127](P,0,1,9)|0}if(!h)M=67}while(0);if((M|0)==67)if((c[e+52>>2]|0)!=3007e3){c[K>>2]=31984;c[K+4>>2]=60517;c[K+8>>2]=31517;Db(14,32001,K);g=14}i=e+50|0;if(!(a[i>>0]|0)){P=g;Ra=O;return P|0}l=e+43|0;if(!g)g=0;else{if((c[N>>2]|0)>0){j=e+32|0;h=0;do{k=c[(c[j>>2]|0)+(h<<2)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{P=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-P;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[(c[j>>2]|0)+(h<<2)>>2]=0;h=h+1|0}while((h|0)<(c[N>>2]|0))}if((a[l>>0]|0)!=2){P=c[e+4>>2]|0;Xa[c[(c[P>>2]|0)+64>>2]&255](P,0)|0}a[i>>0]=0;g=(g|0)==522?-1:g}a[l>>0]=0;P=g;Ra=O;return P|0}function jf(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+96|0;k=l+48|0;g=l;h=c[c[b+32>>2]>>2]|0;f=k;i=h;j=f+48|0;do{a[f>>0]=a[i>>0]|0;f=f+1|0;i=i+1|0}while((f|0)<(j|0));if((a[b+43>>0]|0)!=2){j=c[b+4>>2]|0;ab[c[(c[j>>2]|0)+60>>2]&127](j)}f=g;i=h+48|0;j=f+48|0;do{a[f>>0]=a[i>>0]|0;f=f+1|0;i=i+1|0}while((f|0)<(j|0));if(Lu(k,g,48)|0){k=1;Ra=l;return k|0}if(!(a[k+12>>0]|0)){k=1;Ra=l;return k|0}g=c[k>>2]|0;f=(c[k+4>>2]|0)+g|0;g=g+f+(c[k+8>>2]|0)|0;f=(c[k+12>>2]|0)+f+g|0;g=g+f+(c[k+16>>2]|0)|0;f=(c[k+20>>2]|0)+f+g|0;g=g+f+(c[k+24>>2]|0)|0;f=(c[k+28>>2]|0)+f+g|0;g=g+f+(c[k+32>>2]|0)|0;if((g|0)!=(c[k+40>>2]|0)){k=1;Ra=l;return k|0}if(((c[k+36>>2]|0)+f+g|0)!=(c[k+44>>2]|0)){k=1;Ra=l;return k|0}f=b+52|0;if(!(Lu(f,k,48)|0)){k=0;Ra=l;return k|0}c[d>>2]=1;i=k;j=f+48|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));k=e[b+66>>1]|0;c[b+36>>2]=k<<16&65536|k&65024;k=0;Ra=l;return k|0}function kf(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;h=b+24|0;do if((c[h>>2]|0)<=(e|0)){i=e+1|0;j=b+32|0;k=c[j>>2]|0;if((mb()|0)==0?(g=sb(k,i<<2,0)|0,g|0):0){k=c[h>>2]|0;gw(g+(k<<2)|0,0,i-k<<2|0)|0;c[j>>2]=g;c[h>>2]=i;break}c[f>>2]=0;f=7;return f|0}while(0);if((a[b+43>>0]|0)!=2){h=c[b+4>>2]|0;g=b+32|0;h=_a[c[(c[h>>2]|0)+52>>2]&127](h,e,32768,d[b+44>>0]|0,(c[g>>2]|0)+(e<<2)|0)|0;i=b+46|0;if((h&255|0)==8){a[i>>0]=a[i>>0]|2;h=(h|0)==8?0:h}}else{if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](32768)|0;if(!g)g=0;else l=18}else{g=Wa[c[29356>>2]&127](32768)|0;if((c[14985]|0)>>>0<32768)c[14985]=32768;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){k=c[14978]|0;j=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&j>>>0<=k>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(g){h=Wa[c[29352>>2]&127](g)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;l=18}else l=18}else g=0}if((l|0)==18)gw(g|0,0,32768)|0;b=b+32|0;c[(c[b>>2]|0)+(e<<2)>>2]=g;h=(c[(c[b>>2]|0)+(e<<2)>>2]|0)==0?7:0;g=b}c[f>>2]=c[(c[g>>2]|0)+(e<<2)>>2];f=h;return f|0}function lf(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=b+76|0;if(Lu(b+84|0,h+8|0,8)|0){n=0;return n|0}l=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];if(!l){n=0;return n|0}i=c[n>>2]|0;m=b+80|0;j=c[m>>2]|0;if(!(a[b+65>>0]|0)){i=i+j+(c[h>>2]|0)|0;o=(c[h+4>>2]|0)+j+i|0;c[n>>2]=i;c[m>>2]=o;k=g+(c[b+36>>2]|0)|0;j=g;b=o;do{i=i+b+(c[j>>2]|0)|0;b=(c[j+4>>2]|0)+b+i|0;j=j+8|0}while(j>>>0>>0)}else{i=i+j+(dw(c[h>>2]|0)|0)|0;o=(dw(c[h+4>>2]|0)|0)+j+i|0;c[n>>2]=i;c[m>>2]=o;k=g+(c[b+36>>2]|0)|0;j=g;b=o;do{i=i+b+(dw(c[j>>2]|0)|0)|0;b=(dw(c[j+4>>2]|0)|0)+b+i|0;j=j+8|0}while(j>>>0>>0)}c[n>>2]=i;c[m>>2]=b;if((i|0)!=(d[h+17>>0]<<16|d[h+16>>0]<<24|d[h+18>>0]<<8|d[h+19>>0]|0)){o=0;return o|0}if((b|0)!=(d[h+21>>0]<<16|d[h+20>>0]<<24|d[h+22>>0]<<8|d[h+23>>0]|0)){o=0;return o|0}c[e>>2]=l;c[f>>2]=d[h+5>>0]<<16|d[h+4>>0]<<24|d[h+6>>0]<<8|d[h+7>>0];o=1;return o|0}function mf(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;j=b+76|0;a[h>>0]=e>>>24;a[h+1>>0]=e>>>16;a[h+2>>0]=e>>>8;a[h+3>>0]=e;a[h+4>>0]=f>>>24;a[h+5>>0]=f>>>16;a[h+6>>0]=f>>>8;a[h+7>>0]=f;e=h+8|0;if(c[b+104>>2]|0){f=e+16|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));return}i=b+84|0;k=i;k=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;i=i+4|0;i=d[i>>0]|d[i+1>>0]<<8|d[i+2>>0]<<16|d[i+3>>0]<<24;f=e;a[f>>0]=k;a[f+1>>0]=k>>8;a[f+2>>0]=k>>16;a[f+3>>0]=k>>24;e=e+4|0;a[e>>0]=i;a[e+1>>0]=i>>8;a[e+2>>0]=i>>16;a[e+3>>0]=i>>24;e=c[j>>2]|0;i=b+80|0;f=c[i>>2]|0;if(!(a[b+65>>0]|0)){k=e+f+(c[h>>2]|0)|0;e=(c[h+4>>2]|0)+f+k|0;c[j>>2]=k;c[i>>2]=e;b=g+(c[b+36>>2]|0)|0;f=k;do{f=f+e+(c[g>>2]|0)|0;e=(c[g+4>>2]|0)+e+f|0;g=g+8|0}while(g>>>0>>0)}else{k=e+f+(dw(c[h>>2]|0)|0)|0;e=(dw(c[h+4>>2]|0)|0)+f+k|0;c[j>>2]=k;c[i>>2]=e;b=g+(c[b+36>>2]|0)|0;f=k;do{f=f+e+(dw(c[g>>2]|0)|0)|0;e=(dw(c[g+4>>2]|0)|0)+e+f|0;g=g+8|0}while(g>>>0>>0)}c[j>>2]=f;c[i>>2]=e;a[h+16>>0]=f>>>24;a[h+17>>0]=f>>>16;a[h+18>>0]=f>>>8;a[h+19>>0]=f;k=c[i>>2]|0;a[h+20>>0]=k>>>24;a[h+21>>0]=k>>>16;a[h+22>>0]=k>>>8;a[h+23>>0]=k;return}function nf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;do{e=a+28|0;switch(c[e>>2]|0){case 6:case 0:case 5:{if((c[a+16>>2]|0)>>>0>b>>>0?(f=_b(a,b,d,1)|0,f|0):0)c[e>>2]=f;break}default:{}}a=c[a+44>>2]|0}while((a|0)!=0);return}function of(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=c[b+208>>2]|0;j=b+152|0;m=c[j>>2]|0;l=b+148|0;i=c[l>>2]|0;m=m>>>0>i>>>0?i:m;h=c[b+96>>2]|0;if((h|0)>0){e=c[b+92>>2]|0;f=b+72|0;d=0;do{g=e+(d*48|0)+8|0;n=g;if((c[n>>2]|0)==0&(c[n+4>>2]|0)==0){p=f;o=c[p+4>>2]|0;n=g;c[n>>2]=c[p>>2];c[n+4>>2]=o}d=d+1|0}while((d|0)<(h|0));g=f}else g=b+72|0;e=g;d=c[e>>2]|0;e=c[e+4>>2]|0;if((d|0)==0&(e|0)==0){d=0;e=0}else{d=Sv(d|0,e|0,-1,-1)|0;d=Wv(d|0,L()|0,i|0,0)|0;d=Sv(d|0,L()|0,1,0)|0;d=Yv(d|0,L()|0,i|0,0)|0;e=L()|0}p=g;c[p>>2]=d;c[p+4>>2]=e;p=b+80|0;c[p>>2]=d;c[p+4>>2]=e;if(((a[b+7>>0]|0)==0?(a[b+5>>0]|0)!=4:0)?(p=c[b+60>>2]|0,((Wa[c[(c[p>>2]|0)+48>>2]&127](p)|0)&512|0)==0):0){d=k;e=d+12|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0))}else{p=k;o=p;a[o>>0]=-117058087;a[o+1>>0]=-117058087>>8;a[o+2>>0]=-117058087>>16;a[o+3>>0]=-117058087>>24;p=p+4|0;a[p>>0]=-681336544;a[p+1>>0]=-681336544>>8;a[p+2>>0]=-681336544>>16;a[p+3>>0]=-681336544>>24;p=k+8|0;a[p>>0]=-1;a[p+1>>0]=-1>>8;a[p+2>>0]=-1>>16;a[p+3>>0]=-1>>24}f=b+48|0;Fb(4,f);f=c[f>>2]|0;a[k+12>>0]=f>>>24;a[k+13>>0]=f>>>16;a[k+14>>0]=f>>>8;a[k+15>>0]=f;f=c[b+28>>2]|0;a[k+16>>0]=f>>>24;a[k+17>>0]=f>>>16;a[k+18>>0]=f>>>8;a[k+19>>0]=f;f=c[l>>2]|0;a[k+20>>0]=f>>>24;a[k+21>>0]=f>>>16;a[k+22>>0]=f>>>8;a[k+23>>0]=f;f=c[j>>2]|0;a[k+24>>0]=f>>>24;a[k+25>>0]=f>>>16;a[k+26>>0]=f>>>8;a[k+27>>0]=f;gw(k+28|0,0,m+-28|0)|0;f=b+64|0;e=0;while(1){if(e>>>0>=(c[l>>2]|0)>>>0){d=0;e=17;break}n=c[f>>2]|0;d=g;d=_a[c[(c[n>>2]|0)+12>>2]&127](n,k,m,c[d>>2]|0,c[d+4>>2]|0)|0;n=g;n=Sv(c[n>>2]|0,c[n+4>>2]|0,m|0,0)|0;o=L()|0;p=g;c[p>>2]=n;c[p+4>>2]=o;if(!d)e=e+m|0;else{e=17;break}}if((e|0)==17)return d|0;return 0}function pf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[d>>2]=0;return c[a+40>>2]|0}function qf(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+32|0;l=q+16|0;h=q;if(!e){c[h>>2]=32306;c[h+4>>2]=56058;c[h+8>>2]=31517;Db(11,32001,h);d=11;Ra=q;return d|0}p=d+212|0;h=c[p>>2]|0;h=Ya[c[29436>>2]&127](c[h+44>>2]|0,e,a[h+33>>0]&3)|0;a:do if(!h){j=c[p>>2]|0;if((a[j+33>>0]|0)!=2){k=j+44|0;n=Wa[c[29432>>2]&127](c[k>>2]|0)|0;b:do if((n|0)>(c[j+20>>2]|0)){i=j+8|0;h=c[i>>2]|0;c:do if(!h)m=12;else{while(1){if((b[h+30>>1]|0)==0?(b[h+28>>1]&8)==0:0)break;h=c[h+36>>2]|0;if(!h){m=12;break c}}c[i>>2]=h}while(0);d:do if((m|0)==12){c[i>>2]=0;h=c[j+4>>2]|0;if(!h)break b;while(1){if(!(b[h+30>>1]|0))break d;h=c[h+36>>2]|0;if(!h)break b}}while(0);h=Xa[c[j+36>>2]&255](c[j+40>>2]|0,h)|0;switch(h|0){case 0:case 5:break;default:break a}}while(0);h=Ya[c[29436>>2]&127](c[k>>2]|0,e,2)|0;if(h)m=18;else h=7}else h=7}else m=18;while(0);do if((m|0)==18){i=c[p>>2]|0;j=c[h+4>>2]|0;if(!(c[j>>2]|0))n=sf(i,e,h)|0;else{n=i+12|0;c[n>>2]=(c[n>>2]|0)+1;n=j+30|0;b[n>>1]=(b[n>>1]|0)+1<<16>>16;n=j}c[f>>2]=n;h=g&1;i=n+20|0;j=(h|0)!=0;if(!(j|(c[i>>2]|0)==0)){d=d+184|0;c[d>>2]=(c[d>>2]|0)+1;d=0;Ra=q;return d|0}do if((e|0)>=0?(o=d+152|0,((1073741824/(c[o>>2]|0)|0)+1|0)!=(e|0)):0){c[i>>2]=d;if(c[c[d+60>>2]>>2]|0?((h|0)==0?(c[d+24>>2]|0)>>>0>=e>>>0:0):0){h=d+188|0;c[h>>2]=(c[h>>2]|0)+1;h=rf(n)|0;if(!h)h=0;else break;Ra=q;return h|0}if((c[d+156>>2]|0)>>>0>>0)h=13;else{if(j){if((c[d+28>>2]|0)>>>0>=e>>>0)df(c[d+56>>2]|0,e)|0;g=d+96|0;h=c[g>>2]|0;if((h|0)>0){k=d+92|0;j=0;do{i=c[k>>2]|0;if((c[i+(j*48|0)+20>>2]|0)>>>0>=e>>>0){df(c[i+(j*48|0)+16>>2]|0,e)|0;h=c[g>>2]|0}j=j+1|0}while((j|0)<(h|0))}}gw(c[n+4>>2]|0,0,c[o>>2]|0)|0;d=0;Ra=q;return d|0}}else m=38;while(0);if((m|0)==38){c[l>>2]=32306;c[l+4>>2]=56090;c[l+8>>2]=31517;Db(11,32001,l);if(!n){h=11;break}else h=11}m=c[n+12>>2]|0;do if(b[n+28>>1]&2){i=m+8|0;j=n+36|0;k=c[j>>2]|0;if((c[i>>2]|0)==(n|0))c[i>>2]=k;g=c[n+32>>2]|0;l=(g|0)==0;if(l){c[m+4>>2]=k;i=k}else{c[g+36>>2]=k;i=c[j>>2]|0}if(i|0){c[i+32>>2]=g;break}c[m>>2]=g;if(l)a[m+33>>0]=2}while(0);o=m+12|0;c[o>>2]=(c[o>>2]|0)+-1;cb[c[29440>>2]&255](c[m+44>>2]|0,c[n>>2]|0,1)}while(0);if(!(c[(c[p>>2]|0)+12>>2]|0)){switch(a[d+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[d+4>>0]|0))uf(d,0,0)|0;break}default:tf(d)|0}vf(d)}c[f>>2]=0;d=h;Ra=q;return d|0}function rf(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=Ra;Ra=Ra+16|0;f=k;i=c[b+20>>2]|0;c[f>>2]=0;g=i+216|0;d=c[g>>2]|0;h=b+24|0;if(d){d=ef(d,c[h>>2]|0,f)|0;if(d|0){b=d;Ra=k;return b|0}d=c[f>>2]|0;if(d){l=c[g>>2]|0;f=c[i+152>>2]|0;m=c[b+4>>2]|0;n=c[l+8>>2]|0;l=e[l+66>>1]|0;l=l<<16&65536|l&65024;g=Yv(l|24|0,0,d+-1|0,0)|0;g=Sv(g|0,L()|0,56,0)|0;d=L()|0;d=_a[c[(c[n>>2]|0)+8>>2]&127](n,m,(l|0)<(f|0)?l:f,g,d)|0}else j=5}else j=5;if((j|0)==5){m=c[i+152>>2]|0;n=Yv((c[h>>2]|0)+-1|0,0,m|0,((m|0)<0)<<31>>31|0)|0;d=L()|0;l=c[i+60>>2]|0;d=_a[c[(c[l>>2]|0)+8>>2]&127](l,c[b+4>>2]|0,m,n,d)|0;d=(d|0)==522?0:d}if((c[h>>2]|0)!=1){n=d;Ra=k;return n|0}if(!d){g=i+104|0;d=(c[b+4>>2]|0)+24|0;f=g+16|0;do{a[g>>0]=a[d>>0]|0;g=g+1|0;d=d+1|0}while((g|0)<(f|0));n=0;Ra=k;return n|0}else{n=i+104|0;c[n>>2]=-1;c[n+4>>2]=-1;c[n+8>>2]=-1;c[n+12>>2]=-1;n=d;Ra=k;return n|0}return 0}function sf(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=f+4|0;h=c[g>>2]|0;do{i=h+16|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;c[i+16>>2]=0;c[i+20>>2]=0;c[h>>2]=f;c[h+4>>2]=c[f>>2];i=h+40|0;c[h+8>>2]=i;j=i;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;i=i+4|0;a[i>>0]=0;a[i+1>>0]=0;a[i+2>>0]=0;a[i+3>>0]=0;c[h+12>>2]=d;c[h+24>>2]=e;b[h+28>>1]=1;h=c[g>>2]|0}while(!(c[h>>2]|0));j=d+12|0;c[j>>2]=(c[j>>2]|0)+1;j=h+30|0;b[j>>1]=(b[j>>1]|0)+1<<16>>16;return h|0}function tf(b){b=b|0;var e=0,f=0,g=0;g=b+16|0;f=a[g>>0]|0;if(f<<24>>24==6){g=c[b+40>>2]|0;return g|0}if((f&255)<2){g=0;return g|0}do if(!(c[b+216>>2]|0)){if(!(f<<24>>24==2?1:(c[c[b+64>>2]>>2]|0)==0)){e=xf(b,0)|0;break}e=uf(b,0,0)|0;if((f&255)>2&(a[b+15>>0]|0)==0){c[b+40>>2]=4;a[g>>0]=6;c[b+204>>2]=75;g=e;return g|0}}else{e=wf(b,2,-1)|0;f=uf(b,d[b+19>>0]|0,0)|0;e=(e|0)==0?f:e}while(0);switch((e&255)<<24>>24){case 10:case 13:break;default:{g=e;return g|0}}c[b+40>>2]=e;a[g>>0]=6;c[b+204>>2]=(e|0)==0?74:75;g=e;return g|0}function uf(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=Ra;Ra=Ra+16|0;w=B;A=e+16|0;if((d[A>>0]|0)<2?(d[e+17>>0]|0)<2:0){A=0;Ra=B;return A|0}l=e+96|0;if((c[l>>2]|0)>0){k=e+92|0;i=0;do{yf(c[(c[k>>2]|0)+(i*48|0)+16>>2]|0);i=i+1|0}while((i|0)<(c[l>>2]|0))}z=e+4|0;k=c[e+68>>2]|0;i=c[k>>2]|0;if(!(a[z>>0]|0)){if(i|0)y=9}else if((i|0)==29896){i=29896;y=9}if((y|0)==9){Wa[c[i+4>>2]&127](k)|0;c[k>>2]=0}i=e+92|0;k=c[i>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{s=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[i>>2]=0;c[l>>2]=0;c[e+52>>2]=0;n=e+64|0;o=c[n>>2]|0;m=c[o>>2]|0;a:do if(!m)i=0;else{if((m|0)==29896){l=o+16|0;i=c[l>>2]|0;if(i|0)do{k=i;i=c[i>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{s=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}}while((i|0)!=0);c[l>>2]=0;c[o>>2]=0;i=0;break}i=a[e+5>>0]|0;switch(i<<24>>24){case 3:{k=e+72|0;s=k;if(!((c[s>>2]|0)==0&(c[s+4>>2]|0)==0)){i=Ya[c[m+16>>2]&127](o,0,0)|0;if(!i)if((a[e+8>>0]|0)!=0?(p=c[n>>2]|0,q=a[e+10>>0]|0,q<<24>>24!=0):0)i=Xa[c[(c[p>>2]|0)+20>>2]&255](p,q&255)|0;else i=0}else i=0;s=k;c[s>>2]=0;c[s+4>>2]=0;break a}case 1:break;default:if(i<<24>>24==5|(a[z>>0]|0)==0){s=(a[e+12>>0]|0)==0;Wa[c[m+4>>2]&127](o)|0;c[o>>2]=0;if(!s){i=0;break a}i=c[e>>2]|0;i=Ya[c[i+28>>2]&127](i,c[e+172>>2]|0,d[e+9>>0]|0)|0;break a}}if(!f)i=(a[e+12>>0]|0)!=0&1;else i=1;f=e+72|0;s=f;if(!((c[s>>2]|0)==0&(c[s+4>>2]|0)==0)){l=e+160|0;k=c[l>>2]|0;l=c[l+4>>2]|0;if((i|0)!=0|(k|0)==0&(l|0)==0)i=Ya[c[m+16>>2]&127](o,0,0)|0;else i=_a[c[m+12>>2]&127](o,59008,28,0,0)|0;if(!i){if(!(a[e+7>>0]|0)){i=c[n>>2]|0;i=Xa[c[(c[i>>2]|0)+20>>2]&255](i,(a[e+10>>0]|16)&255)|0}else i=0;if(((l|0)>0|(l|0)==0&k>>>0>0)&(i|0)==0){i=c[n>>2]|0;i=Xa[c[(c[i>>2]|0)+24>>2]&255](i,w)|0;s=w;r=c[s+4>>2]|0;if((i|0)==0&((r|0)>(l|0)|((r|0)==(l|0)?(c[s>>2]|0)>>>0>k>>>0:0))){i=c[n>>2]|0;i=Ya[c[(c[i>>2]|0)+16>>2]&127](i,k,l)|0}}}}else i=0;s=f;c[s>>2]=0;c[s+4>>2]=0}while(0);s=e+56|0;yf(c[s>>2]|0);c[s>>2]=0;c[e+44>>2]=0;s=(i|0)==0;if(s){do if((a[e+15>>0]|0)==0?(a[e+12>>0]|0)!=0:0){if(g|0?c[c[e+60>>2]>>2]|0:0){l=c[e+212>>2]|0;k=c[l+16>>2]|0;if((k|0)<=-1){q=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;r=L()|0;k=(c[l+28>>2]|0)+(c[l+24>>2]|0)|0;k=Wv(q|0,r|0,k|0,((k|0)<0)<<31>>31|0)|0;L()|0}l=c[l>>2]|0;if(!l){l=0;f=0}else{f=0;do{f=f+1|0;l=c[l+32>>2]|0}while((l|0)!=0);l=Yv(f|0,0,100,0)|0;f=L()|0}if(k|0?(r=Wv(l|0,f|0,k|0,((k|0)<0)<<31>>31|0)|0,L()|0,(r|0)>=25):0){y=60;break}}l=c[e+212>>2]|0;k=c[l>>2]|0;if(k|0)do{r=k+28|0;b[r>>1]=b[r>>1]&-13;k=c[k+32>>2]|0}while((k|0)!=0);c[l+8>>2]=c[l+4>>2]}else y=60;while(0);if((y|0)==60){r=e+212|0;l=c[r>>2]|0;k=c[l>>2]|0;if(k){do{q=c[k+12>>2]|0;f=q+8|0;m=k+36|0;n=c[m>>2]|0;if((c[f>>2]|0)==(k|0))c[f>>2]=n;o=c[k+32>>2]|0;p=(o|0)==0;if(p){c[q+4>>2]=n;f=n}else{c[o+36>>2]=n;f=c[m>>2]|0}if(!f){c[q>>2]=o;if(p)a[q+33>>0]=2}else c[f+32>>2]=o;p=k+28|0;b[p>>1]=b[p>>1]&-16|1;if((b[k+30>>1]|0)==0?a[q+32>>0]|0:0)cb[c[29440>>2]&255](c[q+44>>2]|0,c[k>>2]|0,0);k=c[l>>2]|0}while((k|0)!=0);l=c[r>>2]|0}}k=c[e+24>>2]|0;r=l+44|0;if(c[r>>2]|0){f=c[l>>2]|0;if(f|0)do{p=f;f=c[f+32>>2]|0;if((c[p+24>>2]|0)>>>0>k>>>0){q=c[p+12>>2]|0;n=q+8|0;o=p+36|0;m=c[o>>2]|0;if((c[n>>2]|0)==(p|0))c[n>>2]=m;n=(f|0)==0;if(n)c[q+4>>2]=m;else{c[f+36>>2]=m;m=c[o>>2]|0}if(!m){c[q>>2]=f;if(n)a[q+33>>0]=2}else c[m+32>>2]=f;o=p+28|0;b[o>>1]=b[o>>1]&-16|1;if((b[p+30>>1]|0)==0?a[q+32>>0]|0:0)cb[c[29440>>2]&255](c[q+44>>2]|0,c[p>>2]|0,0)}}while((f|0)!=0);if(!k)if((c[l+12>>2]|0)!=0?(t=Ya[c[29436>>2]&127](c[r>>2]|0,1,0)|0,(t|0)!=0):0){gw(c[t>>2]|0,0,c[l+24>>2]|0)|0;k=1}else k=0;bb[c[29448>>2]&127](c[r>>2]|0,k+1|0)}}q=e+216|0;k=c[q>>2]|0;if(!k)if((g|0)!=0&s){n=e+32|0;o=c[e+24>>2]|0;if(((c[n>>2]|0)>>>0>o>>>0?(x=e+60|0,u=c[x>>2]|0,v=c[u>>2]|0,(v|0)!=0):0)?((a[A>>0]|0)+-1&255)>2:0){p=c[e+152>>2]|0;i=Xa[c[v+24>>2]&255](u,w)|0;l=((p|0)<0)<<31>>31;f=Yv(p|0,l|0,o|0,0)|0;m=L()|0;do if(!i){k=w;i=c[k>>2]|0;k=c[k+4>>2]|0;if((i|0)==(f|0)&(k|0)==(m|0))h=0;else{if(!((k|0)>(m|0)|(k|0)==(m|0)&i>>>0>f>>>0)){w=Sv(i|0,k|0,p|0,l|0)|0;v=L()|0;if(!((v|0)>(m|0)|(v|0)==(m|0)&w>>>0>f>>>0)){w=c[e+208>>2]|0;gw(w|0,0,p|0)|0;x=c[x>>2]|0;y=Tv(f|0,m|0,p|0,l|0)|0;h=L()|0;h=_a[c[(c[x>>2]|0)+12>>2]&127](x,w,p,y,h)|0;y=117}}else{h=c[x>>2]|0;h=Ya[c[(c[h>>2]|0)+16>>2]&127](h,f,m)|0;y=117}if((y|0)==117?h|0:0)break;c[n>>2]=o;h=0}}else h=i;while(0)}else h=0}else h=i;else{h=k+44|0;if(!(a[h>>0]|0))h=i;else{if(!(a[k+43>>0]|0)){y=c[k+4>>2]|0;Za[c[(c[y>>2]|0)+56>>2]&127](y,0,1,9)|0}a[h>>0]=0;c[k+104>>2]=0;a[k+47>>0]=0;h=i}}do if((g|0)!=0&(h|0)==0){h=c[e+60>>2]|0;i=c[h>>2]|0;if(i|0?(j=Ya[c[i+40>>2]&127](h,22,0)|0,(j|0)!=12):0)break;j=0}else j=h;while(0);b:do if(!(a[z>>0]|0)){h=c[q>>2]|0;do if(h|0){i=h+43|0;if(!(a[i>>0]|0)){h=0;break b}a[i>>0]=0;z=c[h+4>>2]|0;if(!(Za[c[(c[z>>2]|0)+56>>2]&127](z,(b[h+40>>1]|0)+3|0,1,6)|0))if(!(a[i>>0]|0))break;else{h=0;break b}else{a[i>>0]=1;h=0;break b}}while(0);h=c[e+60>>2]|0;i=c[h>>2]|0;if(i){if(!(a[e+13>>0]|0))h=Xa[c[i+32>>2]&255](h,1)|0;else h=0;i=e+17|0;if((a[i>>0]|0)!=5)a[i>>0]=1}else h=0;a[e+18>>0]=0}else h=0;while(0);a[A>>0]=1;a[e+19>>0]=0;A=(j|0)==0?h:j;Ra=B;return A|0}function vf(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=d+56|0;yf(c[g>>2]|0);c[g>>2]=0;g=d+96|0;if((c[g>>2]|0)>0){f=d+92|0;e=0;do{yf(c[(c[f>>2]|0)+(e*48|0)+16>>2]|0);e=e+1|0}while((e|0)<(c[g>>2]|0))}h=d+4|0;f=c[d+68>>2]|0;e=c[f>>2]|0;if(!(a[h>>0]|0)){if(e|0)k=7}else if((e|0)==29896){e=29896;k=7}if((k|0)==7){Wa[c[e+4>>2]&127](f)|0;c[f>>2]=0}e=d+92|0;f=c[e>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{l=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[e>>2]=0;c[g>>2]=0;c[d+52>>2]=0;g=c[d+216>>2]|0;if(!g){if(!(a[h>>0]|0)){e=d+60|0;f=c[e>>2]|0;g=c[f>>2]|0;if(!(((g|0)!=0?((Wa[c[g+48>>2]&127](f)|0)&2048|0)!=0:0)?(a[d+5>>0]&5)==1:0))k=25;if((k|0)==25?(i=c[d+64>>2]|0,j=c[i>>2]|0,j|0):0){Wa[c[j+4>>2]&127](i)|0;c[i>>2]=0}e=c[e>>2]|0;f=c[e>>2]|0;if(f|0){if(!(a[d+13>>0]|0))f=Xa[c[f+32>>2]&255](e,0)|0;else f=0;e=d+17|0;if((a[e>>0]|0)!=5)a[e>>0]=0;if(f|0?(a[d+16>>0]|0)==6:0)a[e>>0]=5}a[d+18>>0]=0;k=36}}else{e=g+44|0;if(a[e>>0]|0){if(!(a[g+43>>0]|0)){l=c[g+4>>2]|0;Za[c[(c[l>>2]|0)+56>>2]&127](l,0,1,9)|0}a[e>>0]=0;c[g+104>>2]=0;a[g+47>>0]=0}e=g+40|0;f=b[e>>1]|0;if(f<<16>>16>-1){if(!(a[g+43>>0]|0)){l=c[g+4>>2]|0;Za[c[(c[l>>2]|0)+56>>2]&127](l,(f<<16>>16)+3|0,1,5)|0}b[e>>1]=-1;k=36}else k=36}if((k|0)==36)a[d+16>>0]=0;f=d+40|0;if(!(c[f>>2]|0)){l=d+72|0;d=d+19|0;a[d>>0]=0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;return}if(!(a[d+12>>0]|0)){Ff(d);a[d+18>>0]=0;e=0}else e=(c[c[d+64>>2]>>2]|0)==0&1;a[d+16>>0]=e;c[f>>2]=0;c[d+204>>2]=74;l=d+72|0;d=d+19|0;a[d>>0]=0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;return}function wf(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=Ra;Ra=Ra+32|0;x=y+8|0;w=y;h=c[d+40>>2]|0;if(h|0){d=h;Ra=y;return d|0}k=d+96|0;h=c[k>>2]|0;if((h|0)<=(g|0)){d=0;Ra=y;return d|0}j=(f|0)==1;g=((j^1)&1)+g|0;if((g|0)<(h|0)){f=d+92|0;h=g;do{yf(c[(c[f>>2]|0)+(h*48|0)+16>>2]|0);h=h+1|0}while((h|0)<(c[k>>2]|0))}c[k>>2]=g;if(j){if(g|0){d=0;Ra=y;return d|0}g=c[d+68>>2]|0;h=c[g>>2]|0;if(!h){d=0;Ra=y;return d|0}if((h|0)==29896){i=g+16|0;h=c[i>>2]|0;if(h|0)do{f=h;h=c[h>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{x=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}}while((h|0)!=0);c[i>>2]=0;c[g+12>>2]=0;c[g+32>>2]=0;x=g+24|0;c[x>>2]=0;c[x+4>>2]=0;c[g+48>>2]=0;x=g+40|0;c[x>>2]=0;c[x+4>>2]=0}c[d+52>>2]=0;d=0;Ra=y;return d|0}s=d+216|0;if((c[s>>2]|0)==0?(c[c[d+64>>2]>>2]|0)==0:0){d=0;Ra=y;return d|0}if((g|0)!=0?(l=g+-1|0,u=c[d+92>>2]|0,m=u+(l*48|0)|0,l=u+(l*48|0)+20|0,(m|0)!=0):0){j=c[l>>2]|0;if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](512)|0;if(!h){d=7;Ra=y;return d|0}}else{h=Wa[c[29356>>2]&127](512)|0;if((c[14985]|0)>>>0<512)c[14985]=512;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){u=c[14978]|0;r=Tv(f|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;q=L()|0;c[14768]=((q|0)<0|(q|0)==0&r>>>0<=u>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){d=7;Ra=y;return d|0}f=Wa[c[29352>>2]&127](h)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}gw(h+4|0,0,508)|0;c[h>>2]=j;u=h;h=l;g=d+28|0;r=m;q=1}else{g=d+28|0;u=0;h=g;r=0;q=0}f=d+24|0;c[f>>2]=c[h>>2];a[d+18>>0]=a[d+12>>0]|0;a:do if(q){l=d+72|0;f=l;i=c[f>>2]|0;f=c[f+4>>2]|0;if(!(c[s>>2]|0)){j=r+8|0;g=c[j>>2]|0;j=c[j+4>>2]|0;h=(g|0)==0&(j|0)==0;g=h?i:g;j=h?f:j;h=r;k=c[h>>2]|0;h=c[h+4>>2]|0;p=l;c[p>>2]=k;c[p+4>>2]=h;if((h|0)<(j|0)|(h|0)==(j|0)&k>>>0>>0)while(1){h=zf(d,l,u,1,1)|0;if(h|0){p=i;o=f;break a}h=l;k=c[h>>2]|0;h=c[h+4>>2]|0;if(!((h|0)<(j|0)|(h|0)==(j|0)&k>>>0>>0)){p=i;t=71;break}}else{p=i;t=71}}else{h=l;t=70}}else{o=c[s>>2]|0;if(!o){h=d+72|0;f=h;i=c[f>>2]|0;f=c[f+4>>2]|0;t=70;break}c[f>>2]=c[g>>2];if(a[o+44>>0]|0){n=o+68|0;l=c[n>>2]|0;m=o+32|0;j=c[m>>2]|0;h=o+52|0;f=c[j>>2]|0;g=h+48|0;do{a[h>>0]=a[f>>0]|0;h=h+1|0;f=f+1|0}while((h|0)<(g|0));f=c[n>>2]|0;h=f+1|0;if(h>>>0>l>>>0)h=0;else{k=h;g=j;while(1){h=f+34|0;f=h>>>12;if(!f)h=(c[g>>2]|0)+(h<<2)|0;else h=(c[g+(f<<2)>>2]|0)+((h&4095)<<2)|0;h=Bf(d,c[h>>2]|0)|0;f=k+1|0;if(f>>>0>l>>>0|(h|0)!=0)break;w=k;k=f;g=c[m>>2]|0;f=w}f=c[n>>2]|0}if((l|0)!=(f|0))do if(f|0){f=f+33|0;g=f>>>12;k=x+4|0;if(!((c[o+24>>2]|0)>(g|0)?(i=c[(c[m>>2]|0)+(g<<2)>>2]|0,c[k>>2]=i,(i|0)!=0):0)){if(kf(o,g,k)|0)break;i=c[k>>2]|0}l=i+16384|0;c[x>>2]=l;if(!g){j=i+136|0;c[k>>2]=j;f=0}else{f=(f&-4096)+-34|0;j=i}c[x+8>>2]=f;c[k>>2]=j+-4;i=(c[n>>2]|0)-f|0;f=0;do{g=l+(f<<1)|0;if((i|0)<(e[g>>1]|0))b[g>>1]=0;f=f+1|0}while((f|0)!=8192);x=j+(i<<2)|0;gw(x|0,0,l-x|0)|0}while(0)}else h=0;f=Cf(c[d+212>>2]|0)|0;if(!((h|0)==0&(f|0)!=0)){d=h;Ra=y;return d|0}do{h=f;f=c[f+16>>2]|0;h=Bf(d,c[h+24>>2]|0)|0}while((f|0)!=0&(h|0)==0);Ra=y;return h|0}while(0);if((t|0)==70){l=h;c[l>>2]=0;c[l+4>>2]=0;l=h;h=0;k=0;p=i;t=71}b:do if((t|0)==71){m=d+80|0;n=d+148|0;o=d+152|0;if((h|0)<(f|0)|(h|0)==(f|0)&k>>>0

        >>0)while(1){c[x>>2]=0;h=Af(d,0,p,f,x,w)|0;i=c[x>>2]|0;if(!i){i=m;i=Sv(c[i>>2]|0,c[i+4>>2]|0,c[n>>2]|0,0)|0;g=L()|0;t=l;if((i|0)==(c[t>>2]|0)?(g|0)==(c[t+4>>2]|0):0){k=Tv(p|0,f|0,i|0,g|0)|0;t=L()|0;i=(c[o>>2]|0)+8|0;i=Wv(k|0,t|0,i|0,((i|0)<0)<<31>>31|0)|0;L()|0;c[x>>2]=i;t=76}else t=81}else t=76;c:do if((t|0)==76){t=0;if((h|0)==0&(i|0)!=0){j=0;while(1){g=l;h=c[g>>2]|0;g=c[g+4>>2]|0;if(!((g|0)<(f|0)|(g|0)==(f|0)&h>>>0

        >>0))break;h=zf(d,l,u,1,1)|0;j=j+1|0;if(!(j>>>0>>0&(h|0)==0)){t=81;break c}}i=g}else t=81}while(0);if((t|0)==81){t=0;if(h|0){o=f;break b}h=l;i=c[h+4>>2]|0;h=c[h>>2]|0}if(!((i|0)<(f|0)|(i|0)==(f|0)&h>>>0

        >>0)){h=0;o=f;break}}else{h=0;o=f}}while(0);if(q){n=r+24|0;f=c[n>>2]|0;m=(c[d+152>>2]|0)+4|0;m=Yv(m|0,((m|0)<0)<<31>>31|0,f|0,0)|0;q=L()|0;k=w;c[k>>2]=m;c[k+4>>2]=q;k=c[s>>2]|0;if(!k){if(!h)t=105}else{h=r+28|0;i=r+40|0;g=k+112|0;if((c[i>>2]|0)==(c[g>>2]|0))h=c[h>>2]|0;else{c[h>>2]=0;c[i>>2]=c[g>>2];h=0}m=k+68|0;if(h>>>0<(c[m>>2]|0)>>>0){c[m>>2]=h;c[k+76>>2]=c[r+32>>2];c[k+80>>2]=c[r+36>>2];do if(h|0){h=h+33|0;i=h>>>12;j=x+4|0;if((c[k+24>>2]|0)>(i|0)?(v=c[(c[k+32>>2]|0)+(i<<2)>>2]|0,c[j>>2]=v,(v|0)!=0):0)f=v;else{if(kf(k,i,j)|0)break;f=c[j>>2]|0}k=f+16384|0;c[x>>2]=k;if(!i){g=f+136|0;c[j>>2]=g;h=0}else{h=(h&-4096)+-34|0;g=f}c[x+8>>2]=h;c[j>>2]=g+-4;f=(c[m>>2]|0)-h|0;h=0;do{i=k+(h<<1)|0;if((f|0)<(e[i>>1]|0))b[i>>1]=0;h=h+1|0}while((h|0)!=8192);x=g+(f<<2)|0;gw(x|0,0,k-x|0)|0}while(0);f=c[n>>2]|0;t=105}else t=105}d:do if((t|0)==105){i=d+52|0;while(1){if(f>>>0>=(c[i>>2]|0)>>>0){h=0;break d}h=zf(d,w,u,0,1)|0;if(!h)f=f+1|0;else break}}while(0)}yf(u);if(h|0){d=h;Ra=y;return d|0}d=l;c[d>>2]=p;c[d+4>>2]=o;d=0;Ra=y;return d|0}function xf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0;M=Ra;Ra=Ra+48|0;K=M+16|0;H=M+8|0;I=M+40|0;x=M;y=M+36|0;z=M+32|0;G=M+28|0;A=M+24|0;h=c[b>>2]|0;c[z>>2]=0;c[G>>2]=1;w=b+152|0;c[A>>2]=c[w>>2];C=b+64|0;g=c[C>>2]|0;g=Xa[c[(c[g>>2]|0)+24>>2]&255](g,x)|0;a:do if(!g){B=b+208|0;f=c[B>>2]|0;g=Ef(c[C>>2]|0,f,(c[(c[b>>2]|0)+8>>2]|0)+1|0)|0;if(!g){if(!(a[f>>0]|0))f=0;else f=Za[c[h+32>>2]&127](h,f,0,G)|0;b:do if((f|0)==0&(c[G>>2]|0)!=0){p=b+72|0;q=p;c[q>>2]=0;c[q+4>>2]=0;q=b+148|0;r=b+80|0;s=b+60|0;t=b+24|0;u=b+16|0;v=b+32|0;f=0;h=d;c:while(1){do{g=x;g=Af(b,d,c[g>>2]|0,c[g+4>>2]|0,y,z)|0;switch(g|0){case 101:{h=f;break b}case 0:break;default:{e=g;J=37;break b}}g=c[y>>2]|0;if((g|0)==-1){n=x;n=Tv(c[n>>2]|0,c[n+4>>2]|0,c[q>>2]|0,0)|0;o=L()|0;g=(c[w>>2]|0)+8|0;g=Wv(n|0,o|0,g|0,((g|0)<0)<<31>>31|0)|0;L()|0;c[y>>2]=g}if(!(g|d)){j=r;l=c[q>>2]|0;j=Sv(c[j>>2]|0,c[j+4>>2]|0,l|0,0)|0;i=L()|0;m=p;k=c[m>>2]|0;m=c[m+4>>2]|0;if((j|0)==(k|0)&(i|0)==(m|0)){o=x;o=Tv(c[o>>2]|0,c[o+4>>2]|0,j|0,i|0)|0;k=L()|0;g=(c[w>>2]|0)+8|0;g=Wv(o|0,k|0,g|0,((g|0)<0)<<31>>31|0)|0;L()|0;c[y>>2]=g;k=j;j=0}else{i=m;j=0}}else{i=p;k=c[i>>2]|0;l=c[q>>2]|0;i=c[i+4>>2]|0;j=0}if((k|0)==(l|0)&(i|0)==(j|0)){n=c[z>>2]|0;i=c[s>>2]|0;j=c[i>>2]|0;if(j|0?((a[u>>0]|0)+-1&255)>2:0){o=c[w>>2]|0;i=Xa[c[j+24>>2]&255](i,H)|0;k=((o|0)<0)<<31>>31;l=Yv(o|0,k|0,n|0,0)|0;m=L()|0;if(i|0){e=i;break c}j=H;i=c[j>>2]|0;j=c[j+4>>2]|0;if(!((i|0)==(l|0)&(j|0)==(m|0))){do if((j|0)>(m|0)|(j|0)==(m|0)&i>>>0>l>>>0){e=c[s>>2]|0;e=Ya[c[(c[e>>2]|0)+16>>2]&127](e,l,m)|0;J=24}else{j=Sv(i|0,j|0,o|0,k|0)|0;i=L()|0;if((i|0)>(m|0)|(i|0)==(m|0)&j>>>0>l>>>0)break;j=c[B>>2]|0;gw(j|0,0,o|0)|0;i=c[s>>2]|0;J=Tv(l|0,m|0,o|0,k|0)|0;e=L()|0;e=_a[c[(c[i>>2]|0)+12>>2]&127](i,j,o,J,e)|0;J=24}while(0);if((J|0)==24?(J=0,e|0):0)break c;c[v>>2]=n}}c[t>>2]=n}}while(!(g|0));i=0;d:while(1){if(h|0)Ff(b);h=zf(b,p,0,1,0)|0;switch(h|0){case 522:{h=f;break b}case 101:{J=35;break d}case 0:break;default:{e=h;J=37;break b}}f=f+1|0;i=i+1|0;if(i>>>0>=g>>>0)break;else h=0}if((J|0)==35){J=0;m=x;n=c[m+4>>2]|0;o=p;c[o>>2]=c[m>>2];c[o+4>>2]=n}h=0}J=38;break a}else{e=f;f=0;J=37}while(0);if((J|0)==37)if(!e)h=f;else{J=38;break}g=Se(b,A,-1)|0;e=b+12|0;a[b+18>>0]=a[e>>0]|0;if(!g){s=c[B>>2]|0;g=Ef(c[C>>2]|0,s,(c[(c[b>>2]|0)+8>>2]|0)+1|0)|0;if(!g){if(((a[b+16>>0]|0)+-1&255)>2){i=b+60|0;f=c[i>>2]|0;g=c[f>>2]|0;if(g|0){g=Ya[c[g+40>>2]&127](f,21,0)|0;switch(g|0){case 0:case 12:break;default:break a}}if(((a[b+7>>0]|0)==0?(D=c[i>>2]|0,E=a[b+10>>0]|0,E<<24>>24):0)?(F=Xa[c[(c[D>>2]|0)+20>>2]&255](D,E&255)|0,F|0):0){g=F;break}}g=uf(b,(a[s>>0]|0)!=0&1,0)|0;if(!g)if((a[s>>0]|0)!=0&(c[G>>2]|0)!=0){r=c[b>>2]|0;j=r+4|0;k=c[j>>2]<<1;G=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;F=L()|0;do if(!(F>>>0>0|(F|0)==0&G>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](k)|0;if(!f){f=7;break}else q=f}else{f=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;i=59064;g=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&g>>>0>0){G=c[14978]|0;F=Tv(g|0,i|0,f|0,((f|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&F>>>0<=G>>>0)&1}g=Wa[c[29340>>2]&127](f)|0;if(!g){f=7;break}f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0){c[14987]=f;q=g}else q=g}gw(q|0,0,k|0)|0;o=q+(c[j>>2]|0)|0;p=r+24|0;f=_a[c[p>>2]&127](r,s,q,16385,0)|0;e:do if(!f){f=Xa[c[(c[q>>2]|0)+24>>2]&255](q,H)|0;if(!f){n=(c[r+8>>2]|0)+1|0;G=H;G=Sv(c[G>>2]|0,c[G+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;F=L()|0;f=Sv(G|0,F|0,1,0)|0;L()|0;if(!(F>>>0>0|(F|0)==0&G>>>0>2147483390)){do if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](f)|0;if(!f){f=7;break e}else g=f}else{i=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){G=c[14978]|0;F=Tv(f|0,g|0,i|0,((i|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&F>>>0<=G>>>0)&1}g=Wa[c[29340>>2]&127](i)|0;if(!g){f=7;break e}f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0<=(c[14987]|0)>>>0)break;c[14987]=f}while(0);f=c[H>>2]|0;m=g+(f+1)|0;f=_a[c[(c[q>>2]|0)+8>>2]&127](q,g,f,0,0)|0;if(!f){a[g+(c[H>>2]|0)>>0]=0;k=g;G=H;F=c[G+4>>2]|0;f:do if((F|0)>0|(F|0)==0&(c[G>>2]|0)>>>0>0){l=r+32|0;j=g;g:while(1){f=Za[c[l>>2]&127](r,j,0,I)|0;if(f|0)break;do if(c[I>>2]|0){f=_a[c[p>>2]&127](r,j,o,2049,0)|0;if(f|0)break g;f=Ef(o,m,n)|0;i=c[o>>2]|0;if(i|0){Wa[c[i+4>>2]&127](o)|0;c[o>>2]=0}if(f|0)break g;if(!(a[m>>0]|0))break;if(!(Bu(m,s)|0)){f=0;break g}}while(0);j=j+(((Eu(j)|0)&1073741823)+1)|0;G=j-k|0;E=((G|0)<0)<<31>>31;F=H;D=c[F+4>>2]|0;if(!((D|0)>(E|0)|((D|0)==(E|0)?(c[F>>2]|0)>>>0>G>>>0:0))){J=88;break f}}}else J=88;while(0);if((J|0)==88){f=c[q>>2]|0;if(f|0){Wa[c[f+4>>2]&127](q)|0;c[q>>2]=0}f=Ya[c[r+28>>2]&127](r,s,0)|0}if(!g)break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{I=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}else f=7}}while(0);g=c[q>>2]|0;if(g|0){Wa[c[g+4>>2]&127](q)|0;c[q>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{I=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}else f=7;while(0);g=f}else g=0}}}else{f=0;e=g;J=38}}else{f=0;e=g;J=38}while(0);if((J|0)==38){J=b+12|0;a[b+18>>0]=a[J>>0]|0;h=f;g=e;e=J}if((d|0)!=0&(h|0)!=0){d=c[b+172>>2]|0;c[K>>2]=h;c[K+4>>2]=d;Db(539,32360,K)}if(a[e>>0]|0){K=512;b=b+148|0;c[b>>2]=K;Ra=M;return g|0}e=b+60|0;K=c[e>>2]|0;if((Wa[c[(c[K>>2]|0)+48>>2]&127](K)|0)&4096|0){K=512;b=b+148|0;c[b>>2]=K;Ra=M;return g|0}e=c[e>>2]|0;f=c[(c[e>>2]|0)+44>>2]|0;if(!f){K=4096;b=b+148|0;c[b>>2]=K;Ra=M;return g|0}K=Wa[f&127](e)|0;K=(K|0)<32?512:(K|0)<65536?K:65536;b=b+148|0;c[b>>2]=K;Ra=M;return g|0}function yf(a){a=a|0;var b=0,d=0;if(!a)return;if(c[a+8>>2]|0){d=a+12|0;b=0;do{yf(c[d+(b<<2)>>2]|0);b=b+1|0}while((b|0)!=125)}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function zf(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0;K=Ra;Ra=Ra+16|0;v=K+4|0;J=K;I=c[f+208>>2]|0;C=(i|0)!=0;r=c[(C?f+64|0:f+68|0)>>2]|0;k=g;k=_a[c[(c[r>>2]|0)+8>>2]&127](r,v,4,c[k>>2]|0,c[k+4>>2]|0)|0;if(k|0){J=k;Ra=K;return J|0}s=v+1|0;t=v+2|0;u=v+3|0;D=d[s>>0]<<16|d[v>>0]<<24|d[t>>0]<<8|d[u>>0];H=f+152|0;q=c[H>>2]|0;w=g;w=Sv(c[w>>2]|0,c[w+4>>2]|0,4,0)|0;k=L()|0;k=_a[c[(c[r>>2]|0)+8>>2]&127](r,I,q,w,k)|0;if(k|0){J=k;Ra=K;return J|0}k=c[H>>2]|0;p=(i<<2)+4+k|0;q=g;p=Sv(c[q>>2]|0,c[q+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;q=L()|0;w=g;c[w>>2]=p;c[w+4>>2]=q;if(!D){J=101;Ra=K;return J|0}if((D|0)==((1073741824/(k|0)|0)+1|0)){J=101;Ra=K;return J|0}if(D>>>0>(c[f+24>>2]|0)>>>0){J=0;Ra=K;return J|0}w=(h|0)==0;a:do if(!w?(m=D+-1|0,n=c[h>>2]|0,m>>>0>>0):0){l=c[h+8>>2]|0;if(!l){o=h;k=n}else{n=h;do{k=(m>>>0)/(l>>>0)|0;n=c[n+12+(k<<2)>>2]|0;if(!n)break a;m=m-(G(k,l)|0)|0;l=c[n+8>>2]|0}while((l|0)!=0);o=n;k=c[n>>2]|0}if(k>>>0<4001){if(!(1<<(m&7)&d[o+12+(m>>>3)>>0]))break;else k=0;Ra=K;return k|0}n=m+1|0;k=(m>>>0)%125|0;l=c[o+12+(k<<2)>>2]|0;if(l|0){while(1){if((l|0)==(n|0)){k=0;break}k=((k+1|0)>>>0)%125|0;l=c[o+12+(k<<2)>>2]|0;if(!l)break a}Ra=K;return k|0}}while(0);if(C){q=Sv(p|0,q|0,-4,-1)|0;k=L()|0;k=_a[c[(c[r>>2]|0)+8>>2]&127](r,v,4,q,k)|0;if(k|0){J=k;Ra=K;return J|0}m=d[s>>0]<<16|d[v>>0]<<24|d[t>>0]<<8|d[u>>0];if(!j){k=c[f+48>>2]|0;l=c[H>>2]|0;if((l|0)>200)do{j=l;l=l+-200|0;k=k+(d[I+l>>0]|0)|0}while((j|0)>400);if((k|0)!=(m|0)){J=101;Ra=K;return J|0}}}if(!w?(x=df(h,D)|0,x|0):0){J=x;Ra=K;return J|0}p=(D|0)==1;if(p?(y=f+142|0,z=a[I+20>>0]|0,(b[y>>1]|0)!=(z&255|0)):0)b[y>>1]=z&255;do if((c[f+216>>2]|0)==0?(A=f+212|0,B=Ya[c[29436>>2]&127](c[(c[A>>2]|0)+44>>2]|0,D,0)|0,(B|0)!=0):0){k=c[A>>2]|0;l=c[B+4>>2]|0;if(!(c[l>>2]|0)){l=sf(k,D,B)|0;break}else{B=k+12|0;c[B>>2]=(c[B>>2]|0)+1;B=l+30|0;b[B>>1]=(b[B>>1]|0)+1<<16>>16;break}}else l=0;while(0);c[J>>2]=l;if(C)if(!(a[f+7>>0]|0)){C=g;B=c[C+4>>2]|0;k=f+80|0;g=c[k+4>>2]|0;k=((B|0)<(g|0)|((B|0)==(g|0)?(c[C>>2]|0)>>>0<=(c[k>>2]|0)>>>0:0))&1}else k=1;else if(!l)k=1;else k=((e[l+28>>1]|0)>>>3&1^1)&65535;m=c[f+60>>2]|0;n=c[m>>2]|0;do if(n){o=a[f+16>>0]|0;if((o&255)>3){if(!k){F=51;break}}else if(!((k|0)!=0&o<<24>>24==0)){F=51;break}E=c[H>>2]|0;k=Yv(E|0,((E|0)<0)<<31>>31|0,D+-1|0,0)|0;l=L()|0;l=_a[c[n+12>>2]&127](m,I,E,k,l)|0;k=f+32|0;if(D>>>0>(c[k>>2]|0)>>>0)c[k>>2]=D;k=c[f+88>>2]|0;if(!k)n=l;else{nf(k,D,I);n=l}}else F=51;while(0);if((F|0)==51)if((i|0)==0&(l|0)==0){F=f+20|0;a[F>>0]=a[F>>0]|2;k=Za[c[f+204>>2]&127](f,D,J,1)|0;a[F>>0]=a[F>>0]&-3;if(k|0){J=k;Ra=K;return J|0}n=c[J>>2]|0;l=n+28|0;k=e[l>>1]|0;if((k&17|0)!=0?(E=k&65519,b[l>>1]=E,(k&1|0)!=0):0){m=(E^3)&65535;b[l>>1]=m;k=c[n+12>>2]|0;c[n+36>>2]=0;l=c[k>>2]|0;c[n+32>>2]=l;if(!l){c[k+4>>2]=n;if(a[k+32>>0]|0)a[k+33>>0]=1}else c[l+36>>2]=n;c[k>>2]=n;k=k+8|0;if((m&8)==0&(c[k>>2]|0)==0){c[k>>2]=n;n=0}else n=0}else n=0}else n=0;k=c[J>>2]|0;if(!k){J=n;Ra=K;return J|0}k=c[k+4>>2]|0;ew(k|0,I|0,c[H>>2]|0)|0;ab[c[f+200>>2]&127](c[J>>2]|0);if(p){m=f+104|0;k=k+24|0;l=m+16|0;do{a[m>>0]=a[k>>0]|0;m=m+1|0;k=k+1|0}while((m|0)<(l|0))}Df(c[J>>2]|0);J=n;Ra=K;return J|0}function Af(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+32|0;p=t+16|0;k=t+8|0;q=t;s=a+72|0;j=s;i=c[j>>2]|0;j=c[j+4>>2]|0;if((i|0)==0&(j|0)==0){i=a+148|0;r=i;n=0;o=0;i=c[i>>2]|0;j=0}else{o=Sv(i|0,j|0,-1,-1)|0;n=L()|0;r=a+148|0;i=c[r>>2]|0;n=Wv(o|0,n|0,i|0,0)|0;n=Sv(n|0,L()|0,1,0)|0;n=Yv(n|0,L()|0,i|0,0)|0;o=L()|0;j=0}m=s;c[m>>2]=n;c[m+4>>2]=o;m=Sv(n|0,o|0,i|0,j|0)|0;l=L()|0;if((l|0)>(f|0)|(l|0)==(f|0)&m>>>0>e>>>0){s=101;Ra=t;return s|0}if((b|0)==0?(m=a+80|0,(n|0)==(c[m>>2]|0)?(o|0)==(c[m+4>>2]|0):0):0)e=a+64|0;else{i=a+64|0;j=c[i>>2]|0;j=_a[c[(c[j>>2]|0)+8>>2]&127](j,k,8,n,o)|0;if(j|0){s=j;Ra=t;return s|0}if(!(Lu(k,32352,8)|0))e=i;else{s=101;Ra=t;return s|0}}l=c[e>>2]|0;m=Sv(n|0,o|0,8,0)|0;i=L()|0;i=_a[c[(c[l>>2]|0)+8>>2]&127](l,p,4,m,i)|0;if(i|0){s=i;Ra=t;return s|0}k=p+1|0;l=p+2|0;m=p+3|0;c[g>>2]=(d[k>>0]|0)<<16|(d[p>>0]|0)<<24|(d[l>>0]|0)<<8|(d[m>>0]|0);f=c[e>>2]|0;g=Sv(n|0,o|0,12,0)|0;i=L()|0;i=_a[c[(c[f>>2]|0)+8>>2]&127](f,p,4,g,i)|0;if(i|0){s=i;Ra=t;return s|0}c[a+48>>2]=(d[k>>0]|0)<<16|(d[p>>0]|0)<<24|(d[l>>0]|0)<<8|(d[m>>0]|0);f=c[e>>2]|0;g=Sv(n|0,o|0,16,0)|0;i=L()|0;i=_a[c[(c[f>>2]|0)+8>>2]&127](f,p,4,g,i)|0;if(i|0){s=i;Ra=t;return s|0}c[h>>2]=(d[k>>0]|0)<<16|(d[p>>0]|0)<<24|(d[l>>0]|0)<<8|(d[m>>0]|0);j=s;b=c[j>>2]|0;j=c[j+4>>2]|0;a:do if((b|0)==0&(j|0)==0){g=c[e>>2]|0;h=Sv(n|0,o|0,20,0)|0;i=L()|0;i=_a[c[(c[g>>2]|0)+8>>2]&127](g,p,4,h,i)|0;do if(!i){f=(d[k>>0]|0)<<16|(d[p>>0]|0)<<24|(d[l>>0]|0)<<8|(d[m>>0]|0);h=c[e>>2]|0;o=Sv(n|0,o|0,24,0)|0;i=L()|0;i=_a[c[(c[h>>2]|0)+8>>2]&127](h,p,4,o,i)|0;if(i|0)break;i=(d[k>>0]|0)<<16|(d[p>>0]|0)<<24|(d[l>>0]|0)<<8|(d[m>>0]|0);c[q>>2]=i;if(!i){i=c[a+152>>2]|0;c[q>>2]=i}if((!((f+-32|0)>>>0>65504|(i+-512|0)>>>0>65024)?(i+-1&i|0)==0:0)?(f+-1&f|0)==0:0){e=Se(a,q,-1)|0;c[r>>2]=f;j=s;b=c[j>>2]|0;j=c[j+4>>2]|0;i=f;break a}else i=101}while(0);s=i;Ra=t;return s|0}else{e=0;i=c[r>>2]|0}while(0);q=Sv(b|0,j|0,i|0,0)|0;r=L()|0;c[s>>2]=q;c[s+4>>2]=r;s=e;Ra=t;return s|0}function Bf(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=d+212|0;h=Ya[c[29436>>2]&127](c[(c[f>>2]|0)+44>>2]|0,e,0)|0;do if(!h)g=0;else{f=c[f>>2]|0;g=c[h+4>>2]|0;if(!(c[g>>2]|0)){f=sf(f,e,h)|0;if(!f){g=0;break}g=f;f=b[f+30>>1]|0}else{k=f+12|0;c[k>>2]=(c[k>>2]|0)+1;k=g+30|0;f=(b[k>>1]|0)+1<<16>>16;b[k>>1]=f}if(f<<16>>16!=1){f=rf(g)|0;if(!f){ab[c[d+200>>2]&127](g);if(!(b[g+28>>1]&32)){Df(g);g=0;break}else{k=c[g+20>>2]|0;j=k+120|0;c[j>>2]=(c[j>>2]|0)+-1;k=k+136|0;c[g+16>>2]=c[k>>2];c[k>>2]=g;g=0;break}}else if(!(b[g+28>>1]&32)){Df(g);g=f;break}else{k=c[g+20>>2]|0;j=k+120|0;c[j>>2]=(c[j>>2]|0)+-1;k=k+136|0;c[g+16>>2]=c[k>>2];c[k>>2]=g;g=f;break}}k=c[g+12>>2]|0;do if(b[g+28>>1]&2){f=k+8|0;e=g+36|0;h=c[e>>2]|0;if((c[f>>2]|0)==(g|0))c[f>>2]=h;i=c[g+32>>2]|0;j=(i|0)==0;if(j){c[k+4>>2]=h;f=h}else{c[i+36>>2]=h;f=c[e>>2]|0}if(f|0){c[f+32>>2]=i;break}c[k>>2]=i;if(j)a[k+33>>0]=2}while(0);j=k+12|0;c[j>>2]=(c[j>>2]|0)+-1;cb[c[29440>>2]&255](c[k+44>>2]|0,c[g>>2]|0,1);g=0}while(0);f=c[d+88>>2]|0;if(!f)return g|0;do{c[f+16>>2]=1;f=c[f+44>>2]|0}while((f|0)!=0);return g|0}function Cf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+176|0;m=o+128|0;n=o;e=c[a>>2]|0;d=(e|0)==0;if(!d){a=e;do{l=a;a=c[a+32>>2]|0;c[l+16>>2]=a}while((a|0)!=0);a=n;b=a+128|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));if(d)a=0;else{l=m+16|0;j=m+16|0;k=n+124|0;do{h=e+16|0;a=e;e=c[h>>2]|0;c[h>>2]=0;h=0;while(1){i=n+(h<<2)|0;b=c[i>>2]|0;if(!b){b=9;break}d=m;g=b;a:while(1){f=c[g+24>>2]|0;b=d;while(1){b=b+16|0;if(f>>>0<(c[a+24>>2]|0)>>>0)break;c[b>>2]=a;b=c[a+16>>2]|0;if(!b){b=a;a=g;break a}else{d=a;a=b;b=d}}c[b>>2]=g;b=c[g+16>>2]|0;if(!b){b=g;break}else{d=g;g=b}}c[b+16>>2]=a;a=c[l>>2]|0;c[i>>2]=0;h=h+1|0;if(h>>>0>=31){b=16;break}}if((b|0)==9)c[i>>2]=a;else if((b|0)==16?(0,(h|0)==31):0){b=m;f=c[k>>2]|0;b:while(1){d=c[f+24>>2]|0;while(1){b=b+16|0;if(d>>>0<(c[a+24>>2]|0)>>>0)break;c[b>>2]=a;b=c[a+16>>2]|0;if(!b){b=a;a=f;break b}else{i=a;a=b;b=i}}c[b>>2]=f;b=c[f+16>>2]|0;if(!b){b=f;break}else{i=f;f=b;b=i}}c[b+16>>2]=a;c[k>>2]=c[j>>2]}}while((e|0)!=0);a=c[n>>2]|0}}else{a=n;b=a+128|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));a=0}g=m+16|0;f=1;do{b=c[n+(f<<2)>>2]|0;if(b)if(!a)a=b;else{d=m;c:while(1){e=c[a+24>>2]|0;while(1){d=d+16|0;if(e>>>0<(c[b+24>>2]|0)>>>0)break;c[d>>2]=b;d=c[b+16>>2]|0;if(!d){d=b;break c}else{l=b;b=d;d=l}}c[d>>2]=a;d=c[a+16>>2]|0;if(!d){d=a;a=b;break}else{l=a;a=d;d=l}}c[d+16>>2]=a;a=c[g>>2]|0}f=f+1|0}while((f|0)!=32);Ra=o;return a|0}function Df(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=c[d+12>>2]|0;m=k+12|0;c[m>>2]=(c[m>>2]|0)+-1;m=d+30|0;n=(b[m>>1]|0)+-1<<16>>16;b[m>>1]=n;if(n<<16>>16)return;m=b[d+28>>1]|0;if(m&1){if(!(a[k+32>>0]|0))return;cb[c[29440>>2]&255](c[k+44>>2]|0,c[d>>2]|0,0);return}n=k+8|0;e=c[n>>2]|0;j=d+36|0;g=c[j>>2]|0;if((e|0)==(d|0)){c[n>>2]=g;l=g}else l=e;i=d+32|0;f=c[i>>2]|0;h=(f|0)==0;if(h){c[k+4>>2]=g;e=g}else{c[f+36>>2]=g;e=c[j>>2]|0}do if(!e){c[k>>2]=f;if(h){a[k+33>>0]=2;c[j>>2]=0;c[i>>2]=0;e=k;g=16;break}else{c[j>>2]=0;e=k;g=15;break}}else{c[e+32>>2]=f;f=c[k>>2]|0;c[j>>2]=0;c[i>>2]=f;if(!f){e=k;g=16}else{e=k;g=15}}while(0);if((g|0)==15)c[f+36>>2]=d;else if((g|0)==16){c[k+4>>2]=d;if(a[k+32>>0]|0)a[k+33>>0]=1}c[e>>2]=d;if(!((m&8)==0&(l|0)==0))return;c[n>>2]=d;return}function Ef(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=Ra;Ra=Ra+32|0;l=p+16|0;n=p;o=p+8|0;a[e>>0]=0;i=Xa[c[(c[b>>2]|0)+24>>2]&255](b,n)|0;h=n;g=c[h>>2]|0;h=c[h+4>>2]|0;if((i|0)!=0|((h|0)<0|(h|0)==0&g>>>0<16)){e=i;Ra=p;return e|0}m=Sv(g|0,h|0,-16,-1)|0;g=L()|0;g=_a[c[(c[b>>2]|0)+8>>2]&127](b,l,4,m,g)|0;if(g|0){e=g;Ra=p;return e|0}i=l+1|0;j=l+2|0;k=l+3|0;m=d[i>>0]<<16|d[l>>0]<<24|d[j>>0]<<8|d[k>>0];if(m>>>0>=f>>>0){e=0;Ra=p;return e|0}h=n;g=c[h>>2]|0;h=c[h+4>>2]|0;f=Sv(g|0,h|0,-16,-1)|0;q=L()|0;if((m|0)==0|((q|0)<0|(q|0)==0&f>>>0>>0)){q=0;Ra=p;return q|0}q=Sv(g|0,h|0,-12,-1)|0;g=L()|0;g=_a[c[(c[b>>2]|0)+8>>2]&127](b,l,4,q,g)|0;if(g|0){q=g;Ra=p;return q|0}g=d[i>>0]<<16|d[l>>0]<<24|d[j>>0]<<8|d[k>>0];q=n;q=Sv(c[q>>2]|0,c[q+4>>2]|0,-8,-1)|0;h=L()|0;h=_a[c[(c[b>>2]|0)+8>>2]&127](b,o,8,q,h)|0;if(h|0){q=h;Ra=p;return q|0}if(Lu(o,32352,8)|0){q=0;Ra=p;return q|0}q=n;h=c[q>>2]|0;q=c[q+4>>2]|0;o=Tv(-16,-1,m|0,0)|0;q=Sv(o|0,L()|0,h|0,q|0)|0;h=L()|0;h=_a[c[(c[b>>2]|0)+8>>2]&127](b,e,m,q,h)|0;if(h|0){q=h;Ra=p;return q|0}h=0;do{g=g-(a[e+h>>0]|0)|0;h=h+1|0}while((h|0)!=(m|0));a[e+((g|0)==0?m:0)>>0]=0;q=0;Ra=p;return q|0}function Ff(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=d+100|0;c[e>>2]=(c[e>>2]|0)+1;e=c[d+88>>2]|0;if(e|0)do{c[e+16>>2]=1;e=c[e+44>>2]|0}while((e|0)!=0);j=c[d+212>>2]|0;k=j+44|0;if(!(c[k>>2]|0))return;e=c[j>>2]|0;if(e|0)do{h=e;e=c[e+32>>2]|0;if(c[h+24>>2]|0){i=c[h+12>>2]|0;f=i+8|0;g=h+36|0;d=c[g>>2]|0;if((c[f>>2]|0)==(h|0))c[f>>2]=d;f=(e|0)==0;if(f)c[i+4>>2]=d;else{c[e+36>>2]=d;d=c[g>>2]|0}if(!d){c[i>>2]=e;if(f)a[i+33>>0]=2}else c[d+32>>2]=e;g=h+28|0;b[g>>1]=b[g>>1]&-16|1;if((b[h+30>>1]|0)==0?a[i+32>>0]|0:0)cb[c[29440>>2]&255](c[i+44>>2]|0,c[h>>2]|0,0)}}while((e|0)!=0);if((c[j+12>>2]|0)!=0?(l=Ya[c[29436>>2]&127](c[k>>2]|0,1,0)|0,(l|0)!=0):0){gw(c[l>>2]|0,0,c[j+24>>2]|0)|0;e=2}else e=1;bb[c[29448>>2]&127](c[k>>2]|0,e);return}function Gf(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=Ra;Ra=Ra+48|0;o=p+32|0;g=p+16|0;f=p;k=c[e+52>>2]|0;l=c[e+56>>2]|0;m=d[e+9>>0]|0;n=l+m|0;q=d[n>>0]|0;j=q>>>3;h=j&255;a[e+8>>0]=h;j=4-(j<<2)|0;a[e+10>>0]=j;i=e+76|0;c[i>>2]=120;switch((q&247)<<24>>24){case 5:{a[e+2>>0]=1;f=e+3|0;if(!(h<<24>>24)){a[f>>0]=0;c[i>>2]=121;f=181}else{a[f>>0]=1;f=180}c[e+80>>2]=f;b[e+14>>1]=b[k+28>>1]|0;f=k+30|0;break}case 2:{a[e+2>>0]=0;a[e+3>>0]=0;c[e+80>>2]=179;b[e+14>>1]=b[k+24>>1]|0;f=k+26|0;break}default:{c[f>>2]=32306;c[f+4>>2]=65035;c[f+8>>2]=31517;Db(11,32001,f);c[g>>2]=32306;c[g+4>>2]=65185;c[g+8>>2]=31517;Db(11,32001,g);q=11;Ra=p;return q|0}}b[e+16>>1]=b[f>>1]|0;a[e+11>>0]=a[k+21>>0]|0;q=c[k+32>>2]|0;b[e+26>>1]=q+65535;a[e+12>>0]=0;j=j&252;b[e+18>>1]=m+8+j;c[e+64>>2]=n+j+8;c[e+60>>2]=l+(c[k+36>>2]|0);c[e+68>>2]=l+j;n=n+3|0;n=(d[n>>0]|0)<<8|(d[n+1>>0]|0);b[e+24>>1]=n;if(n>>>0>(((q+-8|0)>>>0)/6|0)>>>0){c[o>>2]=32306;c[o+4>>2]=65199;c[o+8>>2]=31517;Db(11,32001,o);q=11;Ra=p;return q|0}c[e+20>>2]=-1;a[e>>0]=1;if(0==0?(c[(c[k+4>>2]|0)+32>>2]&2097152|0)==0:0){q=0;Ra=p;return q|0}q=Hf(e)|0;Ra=p;return q|0}function Hf(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+32|0;q=r+16|0;p=r;k=e[f+18>>1]|0;m=f+24|0;l=b[m>>1]|0;n=((l&65535)<<1)+k|0;h=c[(c[f+52>>2]|0)+36>>2]|0;i=c[f+56>>2]|0;o=((a[f+8>>0]|0)==0?-5:-4)+h|0;if(!(l<<16>>16)){q=0;Ra=r;return q|0}j=f+76|0;g=0;while(1){l=i+((g<<1)+k)|0;l=d[l>>0]<<8|d[l+1>>0];if(l>>>0>>0|(l|0)>(o|0)){f=5;break}g=g+1|0;if((l+((Xa[c[j>>2]&255](f,i+l|0)|0)&65535)|0)>(h|0)){f=7;break}if(g>>>0>=(e[m>>1]|0)>>>0){g=0;f=8;break}}if((f|0)==5){c[p>>2]=32306;c[p+4>>2]=65148;c[p+8>>2]=31517;Db(11,32001,p);q=11;Ra=r;return q|0}else if((f|0)==7){c[q>>2]=32306;c[q+4>>2]=65153;c[q+8>>2]=31517;Db(11,32001,q);q=11;Ra=r;return q|0}else if((f|0)==8){Ra=r;return g|0}return 0}function If(b,f){b=b|0;f=f|0;var g=0,h=0,i=0,j=0;i=f+(d[b+10>>0]|0)|0;j=a[i>>0]|0;h=j&255;if(j<<24>>24<0){g=0;h=h&127;do{g=g+1|0;j=a[i+g>>0]|0;h=h<<7|j&127}while(j<<24>>24<0&g>>>0<8);i=i+g|0;j=h}else j=h;if(!(a[b+2>>0]|0))g=i+1|0;else{g=1;do{h=g;g=g+1|0}while((a[i+h>>0]|0)<0&g>>>0<10);g=i+g|0}h=e[b+14>>1]|0;if(j>>>0>h>>>0){i=e[b+16>>1]|0;b=(((j-i|0)>>>0)%(((c[(c[b+52>>2]|0)+36>>2]|0)+-4|0)>>>0)|0)+i|0;f=(g-f&65535)+4+(b>>>0>h>>>0?i:b)|0;f=f&65535;return f|0}else{f=g-f+j|0;f=f>>>0>4?f:4;f=f&65535;return f|0}return 0}function Jf(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a[f>>0]|0;i=n&255;if(n<<24>>24<0){h=0;i=i&127;do{h=h+1|0;n=a[f+h>>0]|0;i=i<<7|n&127}while(n<<24>>24<0&h>>>0<8);n=f+h|0}else n=f;h=n+1|0;m=a[h>>0]|0;j=m&255;do if(m<<24>>24<0){j=cw(j|0,0,7)|0;L()|0;h=n+2|0;m=a[h>>0]|0;j=j&16256|m&127;if(m<<24>>24<=-1){k=2;h=1;l=0;while(1){if(h>>>0>6){m=10;break}j=cw(j|0,l|0,7)|0;l=L()|0;h=k+1|0;m=a[n+h>>0]|0;j=j|m&127;if(m<<24>>24>-1){m=11;break}else{m=k;k=h;h=m}}if((m|0)==10){m=cw(j|0,l|0,8)|0;l=L()|0;j=n+k+1|0;h=j;j=m|(d[j>>0]|0);break}else if((m|0)==11){h=n+h|0;break}}else l=0}else l=0;while(0);k=h+1|0;h=g;c[h>>2]=j;c[h+4>>2]=l;c[g+12>>2]=i;c[g+8>>2]=k;h=b[e+14>>1]|0;if(i>>>0>(h&65535)>>>0){Nf(h,b[e+16>>1]|0,c[(c[e+52>>2]|0)+36>>2]|0,f,g);return}else{f=k-f+i|0;b[g+18>>1]=(f&65532|0)==0?4:f&65535;b[g+16>>1]=i;return}}function Kf(b,c){b=b|0;c=c|0;var d=0;b=4;do{d=b;b=b+1|0}while((a[c+d>>0]|0)<0&b>>>0<13);return b&65535|0}function Lf(a,d,e){a=a|0;d=d|0;e=e|0;d=((Of(d+4|0,e)|0)&255)+4&65535;b[e+18>>1]=d;c[e+12>>2]=0;b[e+16>>1]=0;c[e+8>>2]=0;return}function Mf(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=f+(d[e+10>>0]|0)|0;i=a[k>>0]|0;j=i&255;if(i<<24>>24<0){h=0;i=j&127;do{h=h+1|0;j=a[k+h>>0]|0;i=i<<7|j&127}while(j<<24>>24<0&h>>>0<8);h=k+h|0;j=i}else h=k;h=h+1|0;i=g;c[i>>2]=j;c[i+4>>2]=0;c[g+12>>2]=j;c[g+8>>2]=h;i=b[e+14>>1]|0;if(j>>>0>(i&65535)>>>0){Nf(i,b[e+16>>1]|0,c[(c[e+52>>2]|0)+36>>2]|0,f,g);return}else{f=h-f+j|0;b[g+18>>1]=(f&65532|0)==0?4:f&65535;b[g+16>>1]=j;return}}function Nf(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=d&65535;e=((((c[g+12>>2]|0)-h|0)>>>0)%((e+-4|0)>>>0)|0)+h|0;a=(e|0)>(a&65535|0);b[g+16>>1]=a?d:e&65535;b[g+18>>1]=4-f+((c[g+8>>2]|0)+(a?h:e&65535));return}function Of(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=a[b>>0]|0;g=f&255;do if(g&128){f=d[b+1>>0]|0;if(!(f&128)){l=2;j=0;f=g<<7&16256|f;break}l=d[b+2>>0]|0;g=(g<<14|l)&2080895;if(!(l&128)){l=3;j=0;f=g|f<<7&16256;break}l=d[b+3>>0]|0;f=(f<<14|l)&2080895;if(!(l&128)){l=4;j=0;f=f|g<<7;break}k=a[b+4>>0]|0;l=k&255;h=g<<14|l;if(!(l&128)){l=5;j=g>>>18;f=h|f<<7;break}j=f|g<<7;l=d[b+5>>0]|0;i=f<<14|l;if(!(l&128)){l=6;j=j>>>18;f=i|h<<7&266354560;break}l=d[b+6>>0]|0;f=h<<14|l;if(!(l&128)){l=7;j=j>>>11;f=f&-266354561|i<<7&266354560;break}g=f&2080895;l=d[b+7>>0]|0;f=i<<14|l;if(!(l&128)){l=8;j=j>>>4;f=f&-266354561|g<<7;break}else{l=9;j=(k&120)>>>3|j<<4;f=f<<8&532709120|g<<15|(d[b+8>>0]|0);break}}else{l=1;j=0;f=f&255}while(0);c[e>>2]=f;c[e+4>>2]=j;return l|0}function Pf(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+16|0;l=n+8|0;k=n;j=n+12|0;if(!b){b=0;Ra=n;return b|0}if(g){i=b+4|0;h=c[i>>2]|0;h=Xa[c[(c[h>>2]|0)+28>>2]&255](h,4)|0;if(!h){h=b+43|0;if(!(a[h>>0]|0))a[h>>0]=1;h=Qf(b,d,0,0,0,e,f,g,0,0)|0;if(!h){c[j>>2]=-1;h=c[i>>2]|0;d=c[h>>2]|0;if((d|0)!=0?(Ya[c[d+40>>2]&127](h,10,j)|0,(c[j>>2]|0)==1):0){j=b+16|0;i=c[j+4>>2]|0;if((i|0)>-1|(i|0)==-1&(c[j>>2]|0)>>>0>4294967295){d=b+8|0;h=c[d>>2]|0;h=Xa[c[(c[h>>2]|0)+24>>2]&255](h,k)|0;j=c[k+4>>2]|0;if((h|0)==0&((j|0)>0|(j|0)==0&(c[k>>2]|0)>>>0>0)){h=c[d>>2]|0;h=Ya[c[(c[h>>2]|0)+16>>2]&127](h,0,0)|0}if(h|0){c[l>>2]=c[b+108>>2];Db(h,32326,l)}h=0}else h=0}else h=1;j=0}else{j=h;h=0}}else{j=h;h=0}}else{j=0;h=0}g=b+43|0;d=a[g>>0]|0;if(d<<24>>24!=2?(a[b+50>>0]|0)==0:0)m=27;else{i=b+24|0;if((c[i>>2]|0)>0){e=b+32|0;d=0;do{f=c[(c[e>>2]|0)+(d<<2)>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{l=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[(c[e>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)<(c[i>>2]|0));d=a[g>>0]|0}if(d<<24>>24!=2)m=27}if((m|0)==27){m=c[b+4>>2]|0;Xa[c[(c[m>>2]|0)+64>>2]&255](m,h)|0}d=c[b+8>>2]|0;e=c[d>>2]|0;if(e|0){Wa[c[e+4>>2]&127](d)|0;c[d>>2]=0}if(h|0){m=c[b>>2]|0;Ya[c[m+28>>2]&127](m,c[b+108>>2]|0,0)|0}h=c[b+32>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{m=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](b);b=j;Ra=n;return b|0}else{m=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);b=j;Ra=n;return b|0}return 0}function Qf(f,g,h,i,j,k,l,m,n,o){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;la=Ra;Ra=Ra+144|0;r=la+120|0;fa=la;Z=la+104|0;ia=la+132|0;c[ia>>2]=0;if(a[f+46>>0]|0){h=8;Ra=la;return h|0}ka=f+43|0;if((a[ka>>0]|0)==0?(p=c[f+4>>2]|0,p=Za[c[(c[p>>2]|0)+56>>2]&127](p,1,1,10)|0,p|0):0){h=p;Ra=la;return h|0}ja=f+45|0;a[ja>>0]=1;a:do if(!h){p=0;ea=14}else{p=f+4|0;b:do if(!i){if(!(a[ka>>0]|0)){q=c[p>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,0,1,10)|0;ea=12}}else while(1){if(a[ka>>0]|0)break b;q=c[p>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,0,1,10)|0;if((q|0)!=5){ea=12;break b}if(!(Wa[i&127](j)|0)){p=0;i=0;ea=14;break a}}while(0);if((ea|0)==12)switch(q|0){case 5:{p=0;i=0;ea=14;break a}case 0:break;default:{ha=h;break a}}a[f+44>>0]=1;p=h;ea=14}while(0);if((ea|0)==14){ha=p;q=hf(f,ia)|0}c:do if(!q){ga=f+68|0;s=c[ga>>2]|0;aa=e[f+66>>1]|0;aa=aa<<16&65536|aa&65024;if(!((s|0)==0|(aa|0)==(l|0))){c[r>>2]=32306;c[r+4>>2]=61939;c[r+8>>2]=31517;Db(11,32001,r);q=11;break}da=f+32|0;S=c[c[da>>2]>>2]|0;ca=S+96|0;d:do if((c[ca>>2]|0)>>>0>>0){_=f+72|0;$=c[_>>2]|0;ba=f+4|0;p=S+104|0;l=c[p>>2]|0;e:do if(s>>>0>l>>>0){f:do if(!i)if(!(a[ka>>0]|0)){q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,4,1,10)|0;i=0}else{i=0;ea=28}else while(1){if(a[ka>>0]|0){ea=28;break f}q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,4,1,10)|0;if((q|0)!=5)break f;if(!(Wa[i&127](j)|0)){i=0;q=5;break e}}while(0);if((ea|0)==28){c[p>>2]=s;q=0;l=s;break}switch(q|0){case 5:{i=0;break e}case 0:break;default:break d}W=a[ka>>0]|0;c[p>>2]=s;if(!(W<<24>>24)){q=c[ba>>2]|0;Za[c[(c[q>>2]|0)+56>>2]&127](q,4,1,9)|0;q=0;l=s}else{q=0;l=s}}else{q=0;l=s}while(0);p=S+108|0;r=c[p>>2]|0;g:do if(l>>>0>r>>>0){h:do if(!i)if(!(a[ka>>0]|0)){q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,5,1,10)|0}else ea=161;else while(1){if(a[ka>>0]|0){ea=161;break h}q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,5,1,10)|0;if((q|0)!=5)break h;if(!(Wa[i&127](j)|0)){i=0;q=5;l=r;break g}}while(0);if((ea|0)==161){c[p>>2]=-1;q=0;break}switch(q|0){case 5:{i=0;l=r;break g}case 0:break;default:break d}W=a[ka>>0]|0;c[p>>2]=-1;if(!(W<<24>>24)){q=c[ba>>2]|0;Za[c[(c[q>>2]|0)+56>>2]&127](q,5,1,9)|0;q=0}else q=0}while(0);p=S+112|0;r=c[p>>2]|0;i:do if(l>>>0>r>>>0){j:do if(!i)if(!(a[ka>>0]|0)){q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,6,1,10)|0}else ea=173;else while(1){if(a[ka>>0]|0){ea=173;break j}q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,6,1,10)|0;if((q|0)!=5)break j;if(!(Wa[i&127](j)|0)){i=0;q=5;l=r;break i}}while(0);if((ea|0)==173){c[p>>2]=-1;q=0;break}switch(q|0){case 5:{i=0;l=r;break i}case 0:break;default:break d}W=a[ka>>0]|0;c[p>>2]=-1;if(!(W<<24>>24)){q=c[ba>>2]|0;Za[c[(c[q>>2]|0)+56>>2]&127](q,6,1,9)|0;q=0}else q=0}while(0);p=S+116|0;r=c[p>>2]|0;k:do if(l>>>0>r>>>0){l:do if(!i)if(!(a[ka>>0]|0)){q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,7,1,10)|0}else ea=185;else while(1){if(a[ka>>0]|0){ea=185;break l}q=c[ba>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,7,1,10)|0;if((q|0)!=5)break l;if(!(Wa[i&127](j)|0)){i=0;q=5;l=r;break k}}while(0);if((ea|0)==185){c[p>>2]=-1;q=0;break}switch(q|0){case 5:{i=0;l=r;break k}case 0:break;default:break d}W=a[ka>>0]|0;c[p>>2]=-1;if(!(W<<24>>24)){q=c[ba>>2]|0;Za[c[(c[q>>2]|0)+56>>2]&127](q,7,1,9)|0;q=0}else q=0}while(0);m:do if((c[ca>>2]|0)>>>0>>0){q=c[ca>>2]|0;P=c[ga>>2]|0;Q=(P+33|0)>>>12;p=(P<<1)+28+(Q*20|0)|0;W=pb(p,0)|0;if(!W){q=7;break c}gw(W|0,0,p|0)|0;R=W+4|0;c[R>>2]=Q+1;N=pb((P>>>0<4096?P:4096)<<1,0)|0;O=(N|0)==0;p=(q+34|0)>>>12;n:do if(p>>>0>Q>>>0|O)q=O?7:0;else{H=Z+4|0;I=f+24|0;J=Z+8|0;K=W+8|0;M=fa+4|0;while(1){if((c[I>>2]|0)>(p|0)?(T=c[(c[da>>2]|0)+(p<<2)>>2]|0,c[H>>2]=T,(T|0)!=0):0)q=T;else{q=kf(f,p,H)|0;if(q|0)break;q=c[H>>2]|0}r=q+16384|0;c[Z>>2]=r;if(!p){q=q+136|0;c[H>>2]=q;s=0}else s=(p<<12)+-34|0;c[H>>2]=q;G=q;E=(p|0)==(Q|0)?P-s|0:r-G>>2;F=K+((c[R>>2]|0)*20|0)+(s<<1)|0;D=s+1|0;c[J>>2]=D;if((E|0)>0){r=0;do{b[F+(r<<1)>>1]=r;r=r+1|0}while((r|0)!=(E|0));v=fa;w=v+104|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(w|0));C=0;do{t=F+(C<<1)|0;if(!(C&1)){u=0;r=1;s=M}else{r=1;A=0;s=M;while(1){B=c[s>>2]|0;z=c[fa+(A<<3)>>2]|0;u=(r|0)>0;s=(z|0)>0;if(u|s){w=0;y=0;v=0;while(1){do if(s){s=B+(v<<1)|0;if(u?(U=t+(w<<1)|0,(c[q+(e[s>>1]<<2)>>2]|0)>>>0>=(c[q+(e[U>>1]<<2)>>2]|0)>>>0):0){s=U;ea=57;break}u=v+1|0}else{s=t+(w<<1)|0;ea=57}while(0);if((ea|0)==57){ea=0;u=v;w=w+1|0}v=b[s>>1]|0;s=c[q+((v&65535)<<2)>>2]|0;x=y+1|0;b[N+(y<<1)>>1]=v;if((u|0)<(z|0))v=u+((c[q+(e[B+(u<<1)>>1]<<2)>>2]|0)==(s|0)&1)|0;else v=u;u=(w|0)<(r|0);s=(v|0)<(z|0);if(!(u|s)){r=x;break}else y=x}}else r=0;ew(B|0,N|0,r<<1|0)|0;t=A+1|0;s=fa+(t<<3)+4|0;if(!(1<>2]=t;c[fa+(u<<3)>>2]=r;C=C+1|0}while((C|0)!=(E|0));s=u+1|0;if(s>>>0<13)ea=64;else q=r}else{v=fa;w=v+104|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(w|0));r=0;s=1;t=0;ea=64}if((ea|0)==64){ea=0;do{if(1<>2]|0;A=c[fa+(s<<3)>>2]|0;v=(r|0)>0;u=(A|0)>0;if(v|u){x=0;z=0;w=0;while(1){do if(u){u=B+(w<<1)|0;if(v?(V=t+(x<<1)|0,(c[q+(e[u>>1]<<2)>>2]|0)>>>0>=(c[q+(e[V>>1]<<2)>>2]|0)>>>0):0){u=V;ea=73;break}v=w+1|0}else{u=t+(x<<1)|0;ea=73}while(0);if((ea|0)==73){ea=0;v=w;x=x+1|0}C=b[u>>1]|0;u=c[q+((C&65535)<<2)>>2]|0;y=z+1|0;b[N+(z<<1)>>1]=C;if((v|0)<(A|0))w=v+((c[q+(e[B+(v<<1)>>1]<<2)>>2]|0)==(u|0)&1)|0;else w=v;v=(x|0)<(r|0);u=(w|0)<(A|0);if(!(v|u)){r=y;break}else z=y}}else r=0;ew(B|0,N|0,r<<1|0)|0;t=B}s=s+1|0}while((s|0)!=13);q=r}c[K+(p*20|0)+16>>2]=D;c[K+(p*20|0)+12>>2]=q;c[K+(p*20|0)+4>>2]=F;c[K+(p*20|0)+8>>2]=G;if(p>>>0>>0)p=p+1|0;else{q=0;break n}}}while(0);do if(!O)if(!(c[7324]|0)){ab[c[29344>>2]&127](N);break}else{V=Wa[c[29352>>2]&127](N)|0;c[14978]=(c[14978]|0)-V;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](N);break}while(0);if(q|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](W);p=0;l=0;ea=129;break}else{p=Wa[c[29352>>2]&127](W)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](W);p=0;l=0;ea=129;break}o:do if(!i){if(a[ka>>0]|0)break;X=c[ba>>2]|0;X=Za[c[(c[X>>2]|0)+56>>2]&127](X,3,1,10)|0;ea=95}else while(1){if(a[ka>>0]|0)break o;p=c[ba>>2]|0;p=Za[c[(c[p>>2]|0)+56>>2]&127](p,3,1,10)|0;if((p|0)!=5){X=p;ea=95;break o}if(!(Wa[i&127](j)|0)){p=W;l=W;break m}}while(0);if((ea|0)==95?X|0:0){q=X;p=W;l=W;ea=129;break}F=c[ca>>2]|0;c[S+128>>2]=l;E=f+8|0;p=c[E>>2]|0;G=k>>>2&3;H=(G|0)==0;if(!H?(Y=Xa[c[(c[p>>2]|0)+20>>2]&255](p,G)|0,(Y|0)!=0):0)q=Y;else ea=98;p:do if((ea|0)==98){k=Yv($|0,0,aa|0,0)|0;Y=L()|0;q=fa;c[q>>2]=k;c[q+4>>2]=Y;q=c[ba>>2]|0;q=Xa[c[(c[q>>2]|0)+24>>2]&255](q,Z)|0;if(q|0)break;Y=Z;X=c[Y+4>>2]|0;Z=fa;k=c[Z+4>>2]|0;do if((X|0)<(k|0)|((X|0)==(k|0)?(c[Y>>2]|0)>>>0<(c[Z>>2]|0)>>>0:0)){p=c[ba>>2]|0;q=c[p>>2]|0;if(!q)break;Ya[c[q+40>>2]&127](p,5,fa)|0}while(0);C=g+264|0;D=aa|24;p=c[R>>2]|0;q:do if((p|0)>0){q=0;while(1){B=c[W>>2]|0;r=-1;A=p;while(1){z=A;A=A+-1|0;u=W+8+(A*20|0)|0;s=c[u>>2]|0;v=c[W+8+(A*20|0)+12>>2]|0;r:do if((s|0)<(v|0)){w=c[W+8+(A*20|0)+8>>2]|0;x=c[W+8+(A*20|0)+4>>2]|0;while(1){t=b[x+(s<<1)>>1]|0;y=c[w+((t&65535)<<2)>>2]|0;if(y>>>0>B>>>0)break;s=s+1|0;c[u>>2]=s;if((s|0)>=(v|0)){s=q;break r}}if(y>>>0>=r>>>0){s=q;break}s=(c[W+8+(A*20|0)+16>>2]|0)+(t&65535)|0;r=y}else s=q;while(0);if((z|0)<=1)break;else q=s}c[W>>2]=r;if((r|0)==-1)break q;if(c[C>>2]|0)break;if(!(s>>>0<=F>>>0|s>>>0>l>>>0|r>>>0>$>>>0)){Z=Yv(s+-1|0,0,D|0,0)|0;Z=Sv(Z|0,L()|0,56,0)|0;q=L()|0;Y=c[E>>2]|0;q=_a[c[(c[Y>>2]|0)+8>>2]&127](Y,m,aa,Z,q)|0;if(q|0)break p;Z=Yv(r+-1|0,0,aa|0,0)|0;q=L()|0;Y=c[ba>>2]|0;q=_a[c[(c[Y>>2]|0)+12>>2]&127](Y,m,aa,Z,q)|0;if(q|0)break p;p=c[R>>2]|0}if((p|0)>0)q=s;else{ea=105;break q}}q=(a[g+81>>0]|0)==0?9:7;break p}else ea=105;while(0);if((ea|0)==105)c[W>>2]=-1;do if((l|0)==(c[(c[c[da>>2]>>2]|0)+16>>2]|0)){ea=Yv(c[_>>2]|0,0,aa|0,0)|0;q=L()|0;m=c[ba>>2]|0;q=Ya[c[(c[m>>2]|0)+16>>2]&127](m,ea,q)|0;if(q|0)break p;p=c[ba>>2]|0;if(H)break;q=Xa[c[(c[p>>2]|0)+20>>2]&255](p,G)|0;if(q|0)break p}while(0);c[ca>>2]=l;q=0}while(0);if(a[ka>>0]|0){p=W;l=W;ea=129;break}p=c[ba>>2]|0;Za[c[(c[p>>2]|0)+56>>2]&127](p,3,1,9)|0;p=W;l=W;ea=129}else{p=0;l=0;ea=129}while(0);if((ea|0)==129)if((q|0)!=5){u=l;ea=131;break}q=0;u=l;ea=131}else{q=0;p=0;u=0;ea=131}while(0);do if((ea|0)==131){if((ha|0)!=0&(q|0)==0)if((c[ca>>2]|0)>>>0>=(c[ga>>2]|0)>>>0)if((ha|0)>1){Fb(4,fa);t=f+4|0;s:do if(!i)if(!(a[ka>>0]|0)){q=c[t>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,4,4,10)|0;ea=141}else ea=142;else while(1){if(a[ka>>0]|0){ea=142;break s}q=c[t>>2]|0;q=Za[c[(c[q>>2]|0)+56>>2]&127](q,4,4,10)|0;if((q|0)!=5){ea=141;break s}if(!(Wa[i&127](j)|0)){q=5;break}}while(0);if((ea|0)==141)if(!q)ea=142;if((ea|0)==142){if((ha|0)==3){s=c[fa>>2]|0;i=c[da>>2]|0;q=c[i>>2]|0;l=q+96|0;ea=f+84|0;fa=f+112|0;c[fa>>2]=(c[fa>>2]|0)+1;c[ga>>2]=0;fa=ea+1|0;v=ea+2|0;r=ea+3|0;w=(d[fa>>0]<<16|d[ea>>0]<<24|d[v>>0]<<8|d[r>>0])+1|0;a[ea>>0]=w>>>24;a[fa>>0]=w>>>16;a[v>>0]=w>>>8;a[r>>0]=w;c[f+88>>2]=s;i=c[i>>2]|0;r=f+52|0;a[f+64>>0]=1;c[r>>2]=3007e3;w=c[r+4>>2]|0;v=w+6014e3+(c[r+8>>2]|0)|0;w=w+3007e3+(c[r+12>>2]|0)+v|0;v=w+v|0;w=w+(c[r+20>>2]|0)+v|0;v=v+(c[r+24>>2]|0)+w|0;w=w+(c[r+28>>2]|0)+v|0;v=v+(c[r+32>>2]|0)+w|0;c[f+92>>2]=v;c[f+96>>2]=w+s+v;v=i+48|0;s=r;w=v+48|0;do{a[v>>0]=a[s>>0]|0;v=v+1|0;s=s+1|0}while((v|0)<(w|0));if((a[ka>>0]|0)!=2){fa=c[t>>2]|0;ab[c[(c[fa>>2]|0)+60>>2]&127](fa)}v=i;s=r;w=v+48|0;do{a[v>>0]=a[s>>0]|0;v=v+1|0;s=s+1|0}while((v|0)<(w|0));c[l>>2]=0;c[q+128>>2]=0;c[q+104>>2]=0;c[q+108>>2]=-1;c[q+112>>2]=-1;c[q+116>>2]=-1;q=c[f+8>>2]|0;q=Ya[c[(c[q>>2]|0)+16>>2]&127](q,0,0)|0}else q=0;if(!(a[ka>>0]|0)){fa=c[t>>2]|0;Za[c[(c[fa>>2]|0)+56>>2]&127](fa,4,4,9)|0}}}else q=0;else q=5;if(p)if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{fa=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}while(0);switch(q|0){case 0:case 5:break;default:break c}if(n|0)c[n>>2]=c[ga>>2];if(o)c[o>>2]=c[(c[c[da>>2]>>2]|0)+96>>2]}while(0);if(c[ia>>2]|0){v=f+52|0;w=v+48|0;do{c[v>>2]=0;v=v+4|0}while((v|0)<(w|0))}p=f+44|0;if(a[p>>0]|0){if(!(a[ka>>0]|0)){ia=c[f+4>>2]|0;Za[c[(c[ia>>2]|0)+56>>2]&127](ia,0,1,9)|0}a[p>>0]=0;c[f+104>>2]=0;a[f+47>>0]=0}if(!(a[ka>>0]|0)){ka=c[f+4>>2]|0;Za[c[(c[ka>>2]|0)+56>>2]&127](ka,1,1,9)|0}a[ja>>0]=0;h=(ha|0)==(h|0)|(q|0)!=0?q:5;Ra=la;return h|0}function Rf(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=e+44|0;if(c[l>>2]|0){n=0;return n|0}m=c[e+12>>2]|0;j=m+56|0;n=c[j>>2]|0;i=c[m+72>>2]|0;h=c[i+20>>2]|0;if((b[i+28>>1]&4)!=0?(c[h+24>>2]|0)>>>0>=(c[i+24>>2]|0)>>>0:0){if(c[h+96>>2]|0){f=Ve(i)|0;g=10}}else g=6;do if((g|0)==6){f=c[h+40>>2]|0;if(f|0){n=f;return n|0}if((c[h+148>>2]|0)>>>0>(c[h+152>>2]|0)>>>0){f=Wf(i)|0;g=10;break}else{f=Xf(i)|0;g=10;break}}while(0);if((g|0)==10?f|0:0){n=f;return n|0}f=n;g=2720;h=f+16|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));f=e+32|0;a[n+16>>0]=(c[f>>2]|0)>>>8;a[n+17>>0]=(c[f>>2]|0)>>>16;a[n+18>>0]=1;a[n+19>>0]=1;a[n+20>>0]=(c[f>>2]|0)-(c[e+36>>2]|0);a[n+21>>0]=64;a[n+22>>0]=32;a[n+23>>0]=32;f=n+24|0;h=f+76|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(h|0));h=c[j>>2]|0;i=m+52|0;j=c[i>>2]|0;k=d[m+9>>0]|0;if(!(b[j+22>>1]&12)){f=h+k|0;g=j+36|0}else{g=j+36|0;f=h+k|0;gw(f|0,0,(c[g>>2]|0)-k|0)|0}a[f>>0]=13;f=k+8|0;o=h+(k+1)|0;a[o>>0]=0;a[o+1>>0]=0;a[o+2>>0]=0;a[o+3>>0]=0;a[h+(k+7)>>0]=0;k=h+(k+5)|0;a[k>>0]=(c[g>>2]|0)>>>8;a[k+1>>0]=c[g>>2];c[m+20>>2]=(c[g>>2]|0)-f&65535;a[m+8>>0]=1;a[m+10>>0]=0;c[m+76>>2]=120;k=c[i>>2]|0;a[m+2>>0]=1;a[m+3>>0]=1;c[m+80>>2]=180;b[m+14>>1]=b[k+28>>1]|0;b[m+16>>1]=b[k+30>>1]|0;a[m+11>>0]=a[k+21>>0]|0;b[m+18>>1]=f;c[m+60>>2]=h+(c[g>>2]|0);c[m+64>>2]=h+f;c[m+68>>2]=h;a[m+12>>0]=0;b[m+26>>1]=(c[j+32>>2]|0)+65535;b[m+24>>1]=0;a[m>>0]=1;m=e+22|0;b[m>>1]=b[m>>1]|2;m=a[e+17>>0]|0;a[n+52>>0]=0;a[n+53>>0]=0;a[n+54>>0]=0;a[n+55>>0]=m;m=a[e+18>>0]|0;a[n+64>>0]=0;a[n+65>>0]=0;a[n+66>>0]=0;a[n+67>>0]=m;c[l>>2]=1;a[n+31>>0]=1;n=0;return n|0}function Sf(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=Ra;Ra=Ra+48|0;p=F+16|0;D=F;u=F+32|0;h=F+28|0;B=d+216|0;f=c[B>>2]|0;a:do if(!f){A=d+16|0;b:do if(!(a[A>>0]|0)){q=d+17|0;z=d+13|0;y=d+60|0;f=d+176|0;g=d+180|0;c:while(1){e=a[q>>0]|0;switch(e<<24>>24){case 0:case 5:break;default:{t=11;break c}}if(a[z>>0]|0){t=8;break}e=c[y>>2]|0;e=Xa[c[(c[e>>2]|0)+28>>2]&255](e,1)|0;switch(e|0){case 0:{t=7;break c}case 5:break;default:{t=136;break a}}if(!(Wa[c[f>>2]&127](c[g>>2]|0)|0)){e=5;t=138;break a}}if((t|0)==7){e=a[q>>0]|0;t=8}else if((t|0)==11)if((e&255)<2)t=12;else t=48;if((t|0)==8)if(e<<24>>24==5)t=48;else{a[q>>0]=1;t=12}if((t|0)==12){g=c[d>>2]|0;c[u>>2]=1;j=d+64|0;k=(c[c[j>>2]>>2]|0)!=0;if(k){e=0;f=1}else{e=Za[c[g+32>>2]&127](g,c[d+172>>2]|0,0,u)|0;f=c[u>>2]|0}if((f|0)!=0&(e|0)==0){c[h>>2]=0;e=c[y>>2]|0;e=Xa[c[(c[e>>2]|0)+36>>2]&255](e,h)|0;d:do if(!(c[h>>2]|e)){e=c[B>>2]|0;if(((e|0)!=0?(b[e+40>>1]|0)>-1:0)?(i=c[e+72>>2]|0,(i|0)!=0):0){e=i;t=22}else t=19;do if((t|0)==19){e=c[y>>2]|0;f=c[e>>2]|0;if(f){i=D;c[i>>2]=0;c[i+4>>2]=0;e=Xa[c[f+24>>2]&255](e,D)|0;if(!e){i=D;t=c[d+152>>2]|0;e=((t|0)<0)<<31>>31;i=Sv(c[i>>2]|0,c[i+4>>2]|0,-1,-1)|0;i=Sv(i|0,L()|0,t|0,e|0)|0;e=Wv(i|0,L()|0,t|0,e|0)|0;L()|0;t=22;break}else{f=0;break d}}else{l=0;t=25}}while(0);if((t|0)==22){f=d+156|0;if(e>>>0>(c[f>>2]|0)>>>0)c[f>>2]=e;else{l=e;t=25}}if((t|0)==25?!(k|(l|0)!=0):0){e=a[q>>0]|0;switch(e<<24>>24){case 0:case 1:case 5:{if(!(a[z>>0]|0)){n=c[y>>2]|0;if(Xa[c[(c[n>>2]|0)+28>>2]&255](n,2)|0){f=0;e=0;break d}e=a[q>>0]|0}if(e<<24>>24!=5)a[q>>0]=2;break}default:{}}Ya[c[g+28>>2]&127](g,c[d+172>>2]|0,0)|0;if(a[d+4>>0]|0){f=0;e=0;break}e=c[y>>2]|0;f=c[e>>2]|0;if(!f){f=0;e=0;break}if(!(a[z>>0]|0))Xa[c[f+32>>2]&255](e,1)|0;if((a[q>>0]|0)==5){f=0;e=0;break}a[q>>0]=1;f=0;e=0;break}e:do if(!k){c[D>>2]=2049;e=_a[c[g+24>>2]&127](g,c[d+172>>2]|0,c[j>>2]|0,2049,D)|0;switch(e|0){case 0:break e;case 14:break;default:{f=0;break d}}f=1;e=0;break d}while(0);a[D>>0]=0;e=c[j>>2]|0;e=_a[c[(c[e>>2]|0)+8>>2]&127](e,D,1,0,0)|0;e=(e|0)==522?0:e;if(!k?(m=c[j>>2]|0,n=c[m>>2]|0,n|0):0){Wa[c[n+4>>2]&127](m)|0;c[m>>2]=0}f=(a[D>>0]|0)!=0&1}else f=0;while(0)}else f=0;if(e|0){t=138;break a}if(f|0)t=48}do if((t|0)==48){if(a[d+14>>0]|0){e=776;t=138;break a}switch(a[q>>0]|0){case 0:case 1:case 2:case 3:case 5:{if((a[z>>0]|0)==0?(o=c[y>>2]|0,o=Xa[c[(c[o>>2]|0)+28>>2]&255](o,4)|0,o|0):0){e=o;t=138;break a}a[q>>0]=4;break}default:{}}h=d+64|0;e=c[h>>2]|0;f=c[e>>2]|0;if(!f){f=c[d>>2]|0;g=d+172|0;e=Za[c[f+32>>2]&127](f,c[g>>2]|0,0,D)|0;if((e|0)==0&(c[D>>2]|0)!=0){c[u>>2]=0;e=_a[c[f+24>>2]&127](f,c[g>>2]|0,c[h>>2]|0,2050,u)|0;if(!e)if(c[u>>2]&1){c[p>>2]=31984;c[p+4>>2]=55845;c[p+8>>2]=31517;Db(14,32001,p);e=c[h>>2]|0;f=c[e>>2]|0;if(!f)e=14;else{Wa[c[f+4>>2]&127](e)|0;c[e>>2]=0;e=14}}else e=0}g=c[h>>2]|0;f=c[g>>2]|0;if(!f)if((a[d+4>>0]|0)==0?(r=c[y>>2]|0,s=c[r>>2]|0,(s|0)!=0):0){if(!(a[z>>0]|0))Xa[c[s+32>>2]&255](r,1)|0;if((a[q>>0]|0)!=5){a[q>>0]=1;t=72}else t=72}else t=72;else{e=g;t=61}}else t=61;do if((t|0)==61){if(!(a[d+7>>0]|0)){e=Xa[c[f+20>>2]&255](e,2)|0;if(e|0)break;e=c[h>>2]|0;f=c[e>>2]|0}e=Xa[c[f+24>>2]&255](e,d+80|0)|0;if(!e){e=xf(d,(a[d+12>>0]|0)==0&1)|0;a[A>>0]=0;t=72}}while(0);if((t|0)==72)if(!e)break;switch((e&255)<<24>>24){case 10:case 13:break;default:{t=138;break a}}c[d+40>>2]=e;a[A>>0]=6;c[d+204>>2]=75;t=138;break a}while(0);h=d+12|0;if(!(a[h>>0]|0)){if(a[d+23>>0]|0){e=c[y>>2]|0;e=_a[c[(c[e>>2]|0)+8>>2]&127](e,D,16,24,0)|0;switch(e|0){case 0:break;case 522:{c[D>>2]=0;c[D+4>>2]=0;c[D+8>>2]=0;c[D+12>>2]=0;break}default:{t=136;break a}}if(Lu(d+104|0,D,16)|0)Ff(d);if(a[h>>0]|0){e=0;break}}e=c[d>>2]|0;g=d+220|0;e=Za[c[e+32>>2]&127](e,c[g>>2]|0,0,u)|0;f:do if(!e){if(!(c[u>>2]|0)){e=d+5|0;if((a[e>>0]|0)!=5){e=0;break}a[e>>0]=0;e=0;break}e=c[B>>2]|0;if(((e|0)!=0?(b[e+40>>1]|0)>-1:0)?(v=c[e+72>>2]|0,(v|0)!=0):0){f=v;t=91}else t=88;do if((t|0)==88?(w=c[y>>2]|0,x=c[w>>2]|0,x|0):0){e=D;c[e>>2]=0;c[e+4>>2]=0;e=Xa[c[x+24>>2]&255](w,D)|0;if(!e){x=D;t=c[d+152>>2]|0;f=((t|0)<0)<<31>>31;x=Sv(c[x>>2]|0,c[x+4>>2]|0,-1,-1)|0;x=Sv(x|0,L()|0,t|0,f|0)|0;f=Wv(x|0,L()|0,t|0,f|0)|0;L()|0;t=91;break}else break b}while(0);do if((t|0)==91){e=d+156|0;if(f>>>0<=(c[e>>2]|0)>>>0){if(!f)break}else c[e>>2]=f;if(a[h>>0]|0)Ga();if(c[B>>2]|0)Ga();e=c[c[y>>2]>>2]|0;if(a[z>>0]|0){e=14;break f}if(!(a[d+4>>0]|0)){if((c[e>>2]|0)<=1){e=14;break f}if(!(c[e+52>>2]|0)){e=14;break f}}e=c[d+64>>2]|0;f=c[e>>2]|0;if(f|0){Wa[c[f+4>>2]&127](e)|0;c[e>>2]=0}e=Uf(d)|0;if(e|0)break f;a[d+5>>0]=5;a[A>>0]=0;e=0;break f}while(0);e=c[d>>2]|0;e=Ya[c[e+28>>2]&127](e,c[g>>2]|0,0)|0}while(0)}else e=0}else e=0;while(0);f=c[B>>2]|0;if(!f)t=124;else t=111}else t=111;while(0);if((t|0)==111){c[D>>2]=0;e=f+44|0;if(a[e>>0]|0){if(!(a[f+43>>0]|0)){A=c[f+4>>2]|0;Za[c[(c[A>>2]|0)+56>>2]&127](A,0,1,9)|0}a[e>>0]=0;c[f+104>>2]=0;a[f+47>>0]=0}e=f+40|0;g=b[e>>1]|0;if(g<<16>>16>-1){if(!(a[f+43>>0]|0)){A=c[f+4>>2]|0;Za[c[(c[A>>2]|0)+56>>2]&127](A,(g<<16>>16)+3|0,1,5)|0}b[e>>1]=-1}g=c[B>>2]|0;f=0;do{f=f+1|0;e=gf(g,D,0,f)|0}while((e|0)==-1);if(c[D>>2]|e|0)Ff(d);t=124}g:do if((t|0)==124)if((a[d+12>>0]|0)==0?(E=d+16|0,(e|0)==0&(a[E>>0]|0)==0):0){g=d+24|0;e=c[B>>2]|0;if(((e|0)!=0?(b[e+40>>1]|0)>-1:0)?(C=c[e+72>>2]|0,(C|0)!=0):0){e=C;t=133}else t=129;do if((t|0)==129){e=c[d+60>>2]|0;f=c[e>>2]|0;if(f){C=D;c[C>>2]=0;c[C+4>>2]=0;e=Xa[c[f+24>>2]&255](e,D)|0;if(!e){t=c[d+152>>2]|0;e=((t|0)<0)<<31>>31;D=Sv(c[D>>2]|0,c[D+4>>2]|0,-1,-1)|0;D=Sv(D|0,L()|0,t|0,e|0)|0;e=Wv(D|0,L()|0,t|0,e|0)|0;L()|0;t=133;break}else{t=138;break g}}else e=0}while(0);if((t|0)==133){f=d+156|0;if(e>>>0>(c[f>>2]|0)>>>0)c[f>>2]=e}c[g>>2]=e;e=E;t=139}else t=136;while(0);if((t|0)==136)if(!e){e=d+16|0;t=139}else t=138;if((t|0)==138){vf(d);d=e;Ra=F;return d|0}else if((t|0)==139){a[e>>0]=1;a[d+23>>0]=1;d=0;Ra=F;return d|0}return 0}function Tf(a){a=a|0;var b=0,d=0,e=0;d=a+80|0;a=c[d>>2]|0;if(!a)return;b=a+-4|0;c[d>>2]=b;a=b;do if((c[14816]|0)>>>0<=a>>>0)if((c[14817]|0)>>>0>a>>>0){c[14979]=(c[14979]|0)+-1;c[b>>2]=c[14819];c[14819]=b;b=(c[14820]|0)+1|0;c[14820]=b;c[14821]=(b|0)<(c[14815]|0)&1;break}else{a=Wa[c[29352>>2]&127](b)|0;e=7;break}else{a=Wa[c[29352>>2]&127](b)|0;e=7}while(0);do if((e|0)==7){c[14980]=(c[14980]|0)-a;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}}while(0);c[d>>2]=0;return}function Uf(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=Ra;Ra=Ra+16|0;s=u;f=d+4|0;e=a[f>>0]|0;a:do if(!(e<<24>>24))e=0;else{i=d+17|0;switch(a[i>>0]|0){case 0:case 1:case 2:case 3:case 5:break;default:break a}h=d+13|0;do if(!(a[h>>0]|0)){e=d+60|0;g=c[e>>2]|0;g=Xa[c[(c[g>>2]|0)+28>>2]&255](g,4)|0;if(!g){e=a[f>>0]|0;break}e=c[e>>2]|0;f=c[e>>2]|0;if(!f){t=g;Ra=u;return t|0}if(!(a[h>>0]|0))Xa[c[f+32>>2]&255](e,1)|0;if((a[i>>0]|0)==5){t=g;Ra=u;return t|0}a[i>>0]=1;t=g;Ra=u;return t|0}while(0);a[i>>0]=4}while(0);n=c[d>>2]|0;p=c[d+60>>2]|0;o=c[d+220>>2]|0;k=d+160|0;j=c[k>>2]|0;k=c[k+4>>2]|0;q=d+216|0;c[q>>2]=0;i=(c[n+4>>2]|0)+120|0;r=Sv(i|0,0,-1,-1)|0;m=L()|0;do if(!(m>>>0>0|(m|0)==0&r>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](i)|0;if(!f){e=7;break}else r=f}else{f=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){r=c[14978]|0;m=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=r>>>0)&1}g=Wa[c[29340>>2]&127](f)|0;if(!g){e=7;break}f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0){c[14987]=f;r=g}else r=g}gw(r|0,0,i|0)|0;c[r>>2]=n;i=r+120|0;l=r+8|0;c[l>>2]=i;m=r+4|0;c[m>>2]=p;b[r+40>>1]=-1;f=r+16|0;c[f>>2]=j;c[f+4>>2]=k;c[r+108>>2]=o;f=r+48|0;a[f>>0]=1;g=r+49|0;a[g>>0]=1;d=r+43|0;a[d>>0]=e<<24>>24==0?0:2;c[s>>2]=524294;e=_a[c[n+24>>2]&127](n,o,i,524294,s)|0;if(!e){if(c[s>>2]&1|0)a[r+46>>0]=1;e=Wa[c[(c[p>>2]|0)+48>>2]&127](p)|0;if(e&1024|0)a[f>>0]=0;if(e&4096|0)a[g>>0]=0;c[q>>2]=r;e=0;break}f=a[d>>0]|0;if(f<<24>>24!=2?(a[r+50>>0]|0)==0:0)t=38;else{i=r+24|0;if((c[i>>2]|0)>0){g=r+32|0;f=0;do{h=c[(c[g>>2]|0)+(f<<2)>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{s=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[(c[g>>2]|0)+(f<<2)>>2]=0;f=f+1|0}while((f|0)<(c[i>>2]|0));f=a[d>>0]|0}if(f<<24>>24!=2)t=38}if((t|0)==38){t=c[m>>2]|0;Xa[c[(c[t>>2]|0)+64>>2]&255](t,0)|0}f=c[l>>2]|0;g=c[f>>2]|0;if(g|0){Wa[c[g+4>>2]&127](f)|0;c[f>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{t=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}else e=7;while(0);t=e;Ra=u;return t|0}function Vf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=a+96|0;e=c[n>>2]|0;d=a+92|0;q=sb(c[d>>2]|0,b*48|0,0)|0;if(!q){r=7;return r|0}gw(q+(e*48|0)|0,0,(b-e|0)*48|0)|0;c[d>>2]=q;if((e|0)>=(b|0)){r=0;return r|0}i=a+24|0;j=a+64|0;k=a+148|0;l=a+52|0;m=a+72|0;h=a+216|0;d=e;while(1){g=c[i>>2]|0;c[q+(d*48|0)+20>>2]=g;if((c[c[j>>2]>>2]|0)!=0?(p=m,o=c[p>>2]|0,p=c[p+4>>2]|0,(p|0)>0|(p|0)==0&o>>>0>0):0){a=o;e=p}else{a=c[k>>2]|0;e=0}f=q+(d*48|0)|0;c[f>>2]=a;c[f+4>>2]=e;c[q+(d*48|0)+24>>2]=c[l>>2];if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](512)|0;if(!a)break}else{a=Wa[c[29356>>2]&127](512)|0;if((c[14985]|0)>>>0<512)c[14985]=512;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){s=c[14978]|0;f=Tv(e|0,f|0,a|0,((a|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&f>>>0<=s>>>0)&1}a=Wa[c[29340>>2]&127](a)|0;if(!a)break;e=Wa[c[29352>>2]&127](a)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}gw(a+4|0,0,508)|0;c[a>>2]=g;c[q+(d*48|0)+16>>2]=a;a=c[h>>2]|0;if(a|0){c[q+(d*48|0)+28>>2]=c[a+68>>2];c[q+(d*48|0)+32>>2]=c[a+76>>2];c[q+(d*48|0)+36>>2]=c[a+80>>2];c[q+(d*48|0)+40>>2]=c[a+112>>2]}d=d+1|0;c[n>>2]=d;if((d|0)>=(b|0)){d=0;r=22;break}}if((r|0)==22)return d|0;c[q+(d*48|0)+16>>2]=0;s=7;return s|0}function Wf(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=Ra;Ra=Ra+16|0;s=C;x=c[e+20>>2]|0;w=x+152|0;g=((c[x+148>>2]|0)>>>0)/((c[w>>2]|0)>>>0)|0;B=x+20|0;a[B>>0]=a[B>>0]|4;p=e+24|0;i=c[p>>2]|0;f=i+-1|0;e=0-g|0;q=f&e;A=q+1|0;e=~(f&e);f=c[x+24>>2]|0;if(i>>>0>f>>>0)z=i+1+e|0;else z=(q+g|0)>>>0>f>>>0?f+1+e|0:g;r=(z|0)>0;if(!r){A=0;z=a[B>>0]|0;z=z&-5;a[B>>0]=z;Ra=C;return A|0}m=x+56|0;n=x+204|0;o=x+212|0;h=0;g=0;e=i;a:while(1){l=h+A|0;b:do if(((l|0)!=(e|0)?(t=c[m>>2]|0,(t|0)!=0):0)?(u=h+q|0,v=c[t>>2]|0,u>>>0>>0):0){e=c[t+8>>2]|0;if(!e){f=u;k=t;e=v}else{i=u;j=t;do{f=(i>>>0)/(e>>>0)|0;j=c[j+12+(f<<2)>>2]|0;if(!j){y=20;break b}i=i-(G(f,e)|0)|0;e=c[j+8>>2]|0}while((e|0)!=0);f=i;k=j;e=c[j>>2]|0}c:do if(e>>>0<4001){if(!(1<<(f&7)&(d[k+12+(f>>>3)>>0]|0))){y=20;break b}}else{i=f+1|0;e=(f>>>0)%125|0;f=c[k+12+(e<<2)>>2]|0;if(!f){y=20;break b}while(1){if((f|0)==(i|0))break c;e=((e+1|0)>>>0)%125|0;f=c[k+12+(e<<2)>>2]|0;if(!f){y=20;break b}}}while(0);f=Ya[c[29436>>2]&127](c[(c[o>>2]|0)+44>>2]|0,l,0)|0;if(!f){c[s>>2]=0;e=0;break}i=c[o>>2]|0;e=c[f+4>>2]|0;if(!(c[e>>2]|0)){e=sf(i,l,f)|0;c[s>>2]=e;if(!e){e=0;break}}else{l=i+12|0;c[l>>2]=(c[l>>2]|0)+1;l=e+30|0;b[l>>1]=(b[l>>1]|0)+1<<16>>16;c[s>>2]=e}l=b[e+28>>1]|0;g=(l&8)==0?g:1;if(!(l&32)){Df(e);e=0;break}else{l=c[e+20>>2]|0;k=l+120|0;c[k>>2]=(c[k>>2]|0)+-1;l=l+136|0;c[e+16>>2]=c[l>>2];c[l>>2]=e;e=0;break}}else y=20;while(0);do if((y|0)==20){y=0;if((l|0)!=((1073741824/(c[w>>2]|0)|0)+1|0)){e=Za[c[n>>2]&127](x,l,s,0)|0;if(e|0){y=22;break a}e=Xf(c[s>>2]|0)|0;f=c[s>>2]|0;l=b[f+28>>1]|0;g=(l&8)==0?g:1;if(!(l&32)){Df(f);break}else{l=c[f+20>>2]|0;k=l+120|0;c[k>>2]=(c[k>>2]|0)+-1;l=l+136|0;c[f+16>>2]=c[l>>2];c[l>>2]=f;break}}else e=0}while(0);h=h+1|0;f=(e|0)==0;if(!((h|0)<(z|0)&f))break;e=c[p>>2]|0}if((y|0)==22)f=0;if(!((g|0)!=0&f&r)){A=e;z=a[B>>0]|0;z=z&-5;a[B>>0]=z;Ra=C;return A|0}k=x+212|0;j=0;do{g=j+A|0;h=Ya[c[29436>>2]&127](c[(c[k>>2]|0)+44>>2]|0,g,0)|0;do if(h|0){i=c[k>>2]|0;f=c[h+4>>2]|0;if(!(c[f>>2]|0)){f=sf(i,g,h)|0;if(!f)break}else{y=i+12|0;c[y>>2]=(c[y>>2]|0)+1;y=f+30|0;b[y>>1]=(b[y>>1]|0)+1<<16>>16}x=f+28|0;y=b[x>>1]|0;b[x>>1]=y|8;if(!(y&32)){Df(f);break}else{y=c[f+20>>2]|0;x=y+120|0;c[x>>2]=(c[x>>2]|0)+-1;y=y+136|0;c[f+16>>2]=c[y>>2];c[y>>2]=f;break}}while(0);j=j+1|0}while((j|0)!=(z|0));A=a[B>>0]|0;A=A&-5;a[B>>0]=A;Ra=C;return e|0} -function Zc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!d){i=0;return i|0}h=(Eu(d)|0)&1073741823;if(!b){i=0;return i|0}g=c[b+128>>2]|0;if(!g){i=0;return i|0}f=c[g+4>>2]|0;b=2;while(1){e=g+(b+2<<2)|0;if((av(e,d,h)|0)==0?(a[e+h>>0]|0)==0:0)break;b=(c[g+(b+1<<2)>>2]|0)+b|0;if((b|0)>=(f|0)){b=0;i=9;break}}if((i|0)==9)return b|0;i=c[g+(b<<2)>>2]|0;return i|0}function _c(f,h){f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=Ra;Ra=Ra+224|0;D=N+184|0;C=N+176|0;F=N+168|0;E=N+160|0;B=N+152|0;A=N+144|0;w=N+220|0;x=N+216|0;I=N+192|0;y=N+104|0;i=N;c[x>>2]=0;z=c[f>>2]|0;L=c[z+108>>2]|0;K=I+4|0;c[K>>2]=i;c[I>>2]=0;J=I+8|0;c[J>>2]=100;H=I+12|0;c[H>>2]=L;L=I+16|0;c[L>>2]=0;G=I+20|0;a[G>>0]=0;M=I+21|0;a[M>>0]=0;a:do if((c[z+180>>2]|0)>1){f=a[h>>0]|0;if(f<<24>>24)while(1){i=h+1|0;b:do if(f<<24>>24!=10)do{f=a[i>>0]|0;if(!(f<<24>>24))break b;i=i+1|0}while(f<<24>>24!=10);while(0);f=c[L>>2]|0;j=f+3|0;if(j>>>0<(c[J>>2]|0)>>>0){c[L>>2]=j;F=(c[K>>2]|0)+f|0;a[F>>0]=a[36874]|0;a[F+1>>0]=a[36875]|0;a[F+2>>0]=a[36876]|0}else wb(I,36874,3);f=i-h|0;j=c[L>>2]|0;k=j+f|0;if(k>>>0<(c[J>>2]|0)>>>0){if(f|0){c[L>>2]=k;ew((c[K>>2]|0)+j|0,h|0,f|0)|0}}else wb(I,h,f);f=a[i>>0]|0;if(!(f<<24>>24))break;else h=i}}else{if(!(b[f+16>>1]|0)){if(!h)break;f=(Eu(h)|0)&1073741823;if(f>>>0>=100){wb(I,h,f);break}if(!f)break;c[L>>2]=f;ew(i|0,h|0,f|0)|0;break}if(a[h>>0]|0){v=f+100|0;n=f+128|0;o=z+78|0;p=y+32|0;q=y+8|0;r=y+12|0;s=y+16|0;t=y+10|0;u=y+24|0;m=1;do{f=0;i=h;while(1){j=Bi(i,w)|0;if((c[w>>2]|0)==148){l=j;break}f=j+f|0;i=i+j|0;if(!(a[i>>0]|0)){l=0;break}}i=c[L>>2]|0;j=i+f|0;if(j>>>0<(c[J>>2]|0)>>>0){if(f|0){c[L>>2]=j;ew((c[K>>2]|0)+i|0,h|0,f|0)|0}}else wb(I,h,f);h=h+f|0;if(!l)break a;do if((a[h>>0]|0)==63)if((l|0)>1){ii(h+1|0,x)|0;f=c[x>>2]|0;break}else{c[x>>2]=m;f=m;break}else{j=c[n>>2]|0;c:do if(!j)f=0;else{k=c[j+4>>2]|0;f=2;while(1){i=j+(f+2<<2)|0;if((av(i,h,l)|0)==0?(a[i+l>>0]|0)==0:0)break;f=(c[j+(f+1<<2)>>2]|0)+f|0;if((f|0)>=(k|0)){f=0;break c}}f=c[j+(f<<2)>>2]|0}while(0);c[x>>2]=f}while(0);h=h+l|0;m=f+1|0;l=c[v>>2]|0;k=f+-1|0;f=l+(k*40|0)|0;i=e[l+(k*40|0)+8>>1]|0;do if(!(i&1)){if(i&4|0){j=f;k=c[j+4>>2]|0;l=A;c[l>>2]=c[j>>2];c[l+4>>2]=k;Eb(I,32524,A);break}if(i&8|0){g[B>>3]=+g[f>>3];Eb(I,32529,B);break}if(i&2|0){f=a[o>>0]|0;if(f<<24>>24==1){j=c[l+(k*40|0)+16>>2]|0;c[F>>2]=c[l+(k*40|0)+12>>2];c[F+4>>2]=j;Eb(I,36878,F);break}i=y;j=i+40|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[p>>2]=z;yc(y,c[l+(k*40|0)+16>>2]|0,c[l+(k*40|0)+12>>2]|0,f,0)|0;if(!((b[q>>1]&2)==0|(a[t>>0]|0)==1)?(Ig(y,1)|0)==7:0){a[G>>0]=7;c[J>>2]=0}l=c[s>>2]|0;c[E>>2]=c[r>>2];c[E+4>>2]=l;Eb(I,36878,E);if((b[q>>1]&9216)==0&(c[u>>2]|0)==0)break;Cg(y);break}if(i&16384|0){c[C>>2]=c[f>>2];Eb(I,36885,C);break}f=c[L>>2]|0;i=f+2|0;if(i>>>0<(c[J>>2]|0)>>>0){c[L>>2]=i;j=(c[K>>2]|0)+f|0;a[j>>0]=120;a[j+1>>0]=39}else wb(I,36898,2);j=c[l+(k*40|0)+12>>2]|0;if((j|0)>0){i=l+(k*40|0)+16|0;f=0;do{c[D>>2]=d[(c[i>>2]|0)+f>>0];Eb(I,36901,D);f=f+1|0}while((f|0)!=(j|0))}f=c[L>>2]|0;i=f+1|0;if(i>>>0<(c[J>>2]|0)>>>0){c[L>>2]=i;a[(c[K>>2]|0)+f>>0]=39;break}else{wb(I,36906,1);break}}else{f=c[L>>2]|0;i=f+4|0;if(i>>>0<(c[J>>2]|0)>>>0){c[L>>2]=i;l=(c[K>>2]|0)+f|0;a[l>>0]=78;a[l+1>>0]=85;a[l+2>>0]=76;a[l+3>>0]=76;break}else{wb(I,31171,4);break}}while(0)}while((a[h>>0]|0)!=0)}}while(0);if(!(a[G>>0]|0)){f=c[K>>2]|0;if((f|0?(a[f+(c[L>>2]|0)>>0]=0,c[H>>2]|0):0)?(a[M>>0]&4)==0:0){M=$d(I)|0;Ra=N;return M|0}}else{if(a[M>>0]&4){f=c[I>>2]|0;i=c[K>>2]|0;do if(i|0){if(f|0){if(c[f+480>>2]|0){Xd(f,i);break}I=i;if((c[f+304>>2]|0)>>>0<=I>>>0?(c[f+308>>2]|0)>>>0>I>>>0:0){I=f+300|0;c[i>>2]=c[I>>2];c[I>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{I=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);a[M>>0]=a[M>>0]&-5}c[J>>2]=0;c[L>>2]=0;c[K>>2]=0}M=c[K>>2]|0;Ra=N;return M|0}function $c(e){e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0;m=Ra;Ra=Ra+16|0;j=m+8|0;k=m;l=e+8|0;f=b[l>>1]&31;if((f|16|0)!=18){l=d[816+f>>0]|0;Ra=m;return l|0}f=a[e+10>>0]|0;h=e+16|0;i=e+12|0;if(!(Lg(c[h>>2]|0,j,c[i>>2]|0,f)|0))f=b[l>>1]|0;else{if(!(Og(c[h>>2]|0,k,c[i>>2]|0,f)|0)){j=k;k=c[j+4>>2]|0;f=e;c[f>>2]=c[j>>2];c[f+4>>2]=k;f=4}else{g[e>>3]=+g[j>>3];f=8}f=b[l>>1]&-3|f;b[l>>1]=f}l=d[816+(f&31)>>0]|0;Ra=m;return l|0}function ad(f,g,h,i,j,k,l,m){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;ea=Ra;Ra=Ra+336|0;ca=ea+40|0;Y=ea+32|0;_=ea+24|0;Z=ea+16|0;X=ea+8|0;W=ea;ba=ea+320|0;da=ea+44|0;c[ba>>2]=0;c[m>>2]=0;P=(l|0)!=0;Q=P&1;aa=(f|0)==0;a:do if(aa){if(!(c[7324]|0)){l=Wa[c[29340>>2]&127](32)|0;u=24;break}l=Wa[c[29356>>2]&127](32)|0;if((c[14985]|0)>>>0<32)c[14985]=32;o=59064;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&n>>>0>0){$=c[14978]|0;V=Tv(n|0,o|0,l|0,((l|0)<0)<<31>>31|0)|0;U=L()|0;c[14768]=((U|0)<0|(U|0)==0&V>>>0<=$>>>0)&1}l=Wa[c[29340>>2]&127](l)|0;if(l){n=Wa[c[29352>>2]&127](l)|0;n=(c[14978]|0)+n|0;c[14978]=n;if(n>>>0>(c[14982]|0)>>>0)c[14982]=n;n=(c[14981]|0)+1|0;c[14981]=n;if(n>>>0>(c[14987]|0)>>>0){c[14987]=n;u=25}else u=25}else O=0}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){O=0;break}}else{do if((e[f+276>>1]|0)>=32){n=f+300|0;l=c[n>>2]|0;if(l|0){c[n>>2]=c[l>>2];u=f+284|0;c[u>>2]=(c[u>>2]|0)+1;u=24;break a}n=f+296|0;l=c[n>>2]|0;if(!l){l=f+292|0;break}else{c[n>>2]=c[l>>2];u=f+284|0;c[u>>2]=(c[u>>2]|0)+1;u=24;break a}}else l=f+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(f,32,0)|0;u=24}while(0);if((u|0)==24)if(!l)O=0;else u=25;if((u|0)==25){n=l;p=n+32|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(p|0));O=l}M=(O|0)!=0;C=f+20|0;D=f+16|0;S=f+480|0;T=f+304|0;U=f+308|0;V=f+300|0;E=O+28|0;F=O+24|0;G=f+32|0;N=O+16|0;H=O+8|0;I=O+20|0;$=f+81|0;J=da+8|0;K=da+196|0;A=da+44|0;B=da+40|0;z=0;l=0;while(1){gw(da|0,0,276)|0;if(!M){u=117;break}c[da>>2]=f;n=c[ba>>2]|0;do if(n|0){if(!aa){if(c[S>>2]|0){Xd(f,n);break}y=n;if((c[T>>2]|0)>>>0<=y>>>0?(c[U>>2]|0)>>>0>y>>>0:0){c[n>>2]=c[V>>2];c[V>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{y=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[ba>>2]=0;o=c[C>>2]|0;if((o|0)>0){p=c[D>>2]|0;n=0;do{q=c[p+(n<<4)+4>>2]|0;if(q|0)c[(c[q+4>>2]|0)+4>>2]=c[q>>2];n=n+1|0}while((n|0)!=(o|0))}y=bd(da,0,h,g)|0;if(!y){u=50;break}if(c[y+56>>2]|0){u=45;break}if(c[y+36>>2]&32|0){u=47;break}if(c[y+12>>2]|0){u=49;break}c[E>>2]=y;p=c[D>>2]|0;w=y+72|0;o=c[w>>2]|0;if(!o)n=-1e6;else{n=0;while(1)if((c[p+(n<<4)+12>>2]|0)==(o|0))break;else n=n+1|0}c[F>>2]=c[p+(n<<4)>>2];x=y+42|0;v=b[x>>1]|0;t=v<<16>>16;b:do if(v<<16>>16>0){r=c[y+4>>2]|0;s=d[208+(d[i>>0]|0)>>0]|0;n=0;while(1){p=c[r+(n<<4)>>2]|0;v=a[p>>0]|0;o=(d[208+(v&255)>>0]|0)-s|0;if(!(v<<24>>24==0|(o|0)!=0)){q=i;do{p=p+1|0;q=q+1|0;v=a[p>>0]|0;o=(d[208+(v&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(o|0)!=0))}if(!o){v=n;break b}n=n+1|0;if((n|0)>=(t|0)){v=n;break}}}else v=0;while(0);if((v|0)==(t|0)){u=63;break}if(P){if(!((c[G>>2]&16384|0)==0&0==0)?(R=c[y+16>>2]|0,(R|0)!=0):0){q=R;n=0;do{p=c[q+20>>2]|0;if((p|0)>0){o=0;do{n=(c[q+36+(o<<3)>>2]|0)==(v|0)?31354:n;o=o+1|0}while((o|0)<(p|0))}q=c[q+4>>2]|0}while((q|0)!=0);o=n}else o=0;n=c[y+8>>2]|0;if(!n)n=o;else{do{p=b[n+50>>1]|0;if(p<<16>>16){r=c[n+4>>2]|0;q=p&65535;p=0;do{u=b[r+(p<<1)>>1]|0;o=u<<16>>16==-2|(v|0)==(u<<16>>16|0)?31366:o;p=p+1|0}while(p>>>0>>0)}n=c[n+20>>2]|0}while((n|0)!=0);n=o}if(n|0){u=79;break}}q=c[da>>2]|0;c:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))u=90;else u=94;else{do if((e[q+276>>1]|0)>=224){n=q+300|0;o=c[n>>2]|0;if(o|0){c[n>>2]=c[o>>2];u=q+284|0;c[u>>2]=(c[u>>2]|0)+1;u=91;break c}n=q+296|0;o=c[n>>2]|0;if(!o){n=q+292|0;break}else{c[n>>2]=c[o>>2];u=q+284|0;c[u>>2]=(c[u>>2]|0)+1;u=91;break c}}else n=q+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;u=90}while(0);if((u|0)==90){o=_d(q,224,0)|0;u=91}do if((u|0)==91){u=0;if(!o)u=94;else{t=o+104|0;n=t;p=n+120|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(p|0));c[o>>2]=q;n=q+4|0;p=c[n>>2]|0;if(p|0)c[p+4>>2]=o;c[o+8>>2]=p;c[o+4>>2]=0;c[n>>2]=o;c[o+20>>2]=381479589;c[o+12>>2]=da;c[J>>2]=o;Di(o,61,0,1,0)|0;c[N>>2]=o;q=c[w>>2]|0;if(!q)s=-1e6;else{p=c[D>>2]|0;n=0;while(1)if((c[p+(n<<4)+12>>2]|0)==(q|0)){s=n;break}else n=n+1|0}p=c[q>>2]|0;q=c[q+4>>2]|0;r=o+108|0;n=c[r>>2]|0;if((c[o+112>>2]|0)>(n|0)){c[r>>2]=n+1;w=c[t>>2]|0;a[w+(n*20|0)>>0]=2;b[w+(n*20|0)+2>>1]=0;c[w+(n*20|0)+4>>2]=s;c[w+(n*20|0)+8>>2]=Q;c[w+(n*20|0)+12>>2]=p;c[w+(n*20|0)+16>>2]=0;a[w+(n*20|0)+1>>0]=0}else n=Di(o,2,s,Q,p)|0;if(!(a[(c[o>>2]|0)+81>>0]|0)){w=c[t>>2]|0;a[w+(n*20|0)+1>>0]=-3;c[w+(n*20|0)+16>>2]=q}n=c[r>>2]|0;if((n|0)>0)b[(c[t>>2]|0)+((n+-1|0)*20|0)+2>>1]=1;p=ed(o,6,848)|0;n=1<>2]=c[w>>2]|n;do if((s|0)!=1){if(!(a[(c[(c[(c[o>>2]|0)+16>>2]|0)+(s<<4)+4>>2]|0)+9>>0]|0))break;w=o+156|0;c[w>>2]=c[w>>2]|n}while(0);if(a[$>>0]|0)break;c[p+4>>2]=s;n=y+28|0;c[p+8>>2]=c[n>>2];c[p+12>>2]=Q;if((a[(c[o>>2]|0)+81>>0]|0)==0?(Ei(o,(c[t>>2]|0)+40|0,c[y>>2]|0,0),a[$>>0]|0):0)break;if(P)a[p+20>>0]=109;c[p+28>>2]=c[n>>2];c[p+32>>2]=s;a[p+21>>0]=-3;c[p+36>>2]=(b[x>>1]|0)+1;c[p+68>>2]=b[x>>1];b[K>>1]=0;c[A>>2]=1;c[B>>2]=1;hd(o,da)}}while(0);if((u|0)==94)c[N>>2]=0;b[H>>1]=v;c[I>>2]=f;if(a[$>>0]|0){u=116;break}l=id(O,j,k,ba)|0;z=z+1|0;if(!(z>>>0<50&(l|0)==17)){u=116;break}else l=17}if((u|0)==45){c[W>>2]=h;cd(da,31246,W);u=50}else if((u|0)==47){c[X>>2]=h;cd(da,31276,X);u=50}else if((u|0)==49){c[Z>>2]=h;cd(da,31312,Z);u=50}else if((u|0)==63){c[_>>2]=i;l=dd(f,31333,_)|0;c[ba>>2]=l;l=1;u=119}else if((u|0)==79){c[Y>>2]=n;l=dd(f,31374,Y)|0;c[ba>>2]=l;l=1;u=119}else if((u|0)==116)if(!l)u=117;else u=119;if((u|0)==50){l=da+4|0;n=c[l>>2]|0;if(!n){l=1;u=119}else{c[ba>>2]=n;c[l>>2]=0;l=1;u=119}}else if((u|0)==117)if(!(a[$>>0]|0)){c[m>>2]=O;o=0}else{l=0;u=119}do if((u|0)==119)if(M){r=c[N>>2]|0;do if(r|0){s=r+20|0;n=c[s>>2]|0;if((n|0)<832317811)switch(n|0){case 770837923:{u=122;break}default:{}}else switch(n|0){case 832317811:{u=122;break}default:{}}if((u|0)==122)kc(r)|0;p=c[r>>2]|0;kb(p,r);q=c[r+4>>2]|0;o=r+8|0;n=c[o>>2]|0;if(!q)c[p+4>>2]=n;else{c[q+8>>2]=n;n=c[o>>2]|0}if(n|0)c[n+4>>2]=q;c[s>>2]=1443283912;c[r>>2]=0;if(p|0){if(c[p+480>>2]|0){Xd(p,r);break}m=r;if((c[p+304>>2]|0)>>>0<=m>>>0?(c[p+308>>2]|0)>>>0>m>>>0:0){m=p+300|0;c[r>>2]=c[m>>2];c[m>>2]=r;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{m=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);if(!aa){if(c[S>>2]|0){Xd(f,O);o=l;break}m=O;if((c[T>>2]|0)>>>0<=m>>>0?(c[U>>2]|0)>>>0>m>>>0:0){c[O>>2]=c[V>>2];c[V>>2]=O;o=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](O);o=l;break}else{o=Wa[c[29352>>2]&127](O)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](O);o=l;break}}else o=l;while(0);l=c[ba>>2]|0;ba=(l|0)==0;c[ca>>2]=l;Vb(f,o,ba?0:31408,ca);do if(!ba){if(!aa){if(c[S>>2]|0){Xd(f,l);break}ca=l;if((c[T>>2]|0)>>>0<=ca>>>0?(c[U>>2]|0)>>>0>ca>>>0:0){c[l>>2]=c[V>>2];c[V>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ca=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ca;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);n=c[da>>2]|0;l=c[da+64>>2]|0;do if(l|0){if(n|0){if(c[n+480>>2]|0){Xd(n,l);break}ca=l;if((c[n+304>>2]|0)>>>0<=ca>>>0?(c[n+308>>2]|0)>>>0>ca>>>0:0){ca=n+300|0;c[l>>2]=c[ca>>2];c[ca>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ca=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ca;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);l=c[da+68>>2]|0;if(l|0)ri(n,l);l=da+24|0;if(n|0){da=n+272|0;c[da>>2]=(c[da>>2]|0)-(d[l>>0]|0)}a[l>>0]=0;if((o|0)==3082|(a[$>>0]|0)!=0){og(f);f=7;Ra=ea;return f|0}else{f=c[f+68>>2]&o;Ra=ea;return f|0}return 0}function bd(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=Ra;Ra=Ra+64|0;E=F+48|0;D=F+32|0;C=F+24|0;A=F+16|0;y=F+8|0;w=F;B=F+56|0;s=c[f>>2]|0;p=s+24|0;k=c[p>>2]|0;a:do if((k&16|0)==0?(a[s+165>>0]|0)==0:0){n=f+4|0;l=(k&1|0)==0;m=s+16|0;v=c[(c[m>>2]|0)+12>>2]|0;a[s+78>>0]=a[v+77>>0]|0;if(!((b[v+78>>1]&1)==0?(j=eh(s,0,n,0)|0,(j|0)!=0):0))x=5;b:do if((x|0)==5){j=c[s+20>>2]|0;if((j|0)>1)do{k=j;j=j+-1|0;if((b[(c[(c[m>>2]|0)+(j<<4)+12>>2]|0)+78>>1]&1)==0?(o=eh(s,j,n,0)|0,o|0):0){j=o;break b}}while((k|0)>2);if(l)c[p>>2]=c[p>>2]&-2;if(!(a[s+89>>0]|0))break a;c[p>>2]=c[p>>2]|16;break a}while(0);c[f+12>>2]=j;f=f+36|0;c[f>>2]=(c[f>>2]|0)+1;f=0;Ra=F;return f|0}while(0);j=Sd(s,h,i)|0;do if(!j){c:do if(!(a[f+25>>0]|0)){m=c[s+348>>2]|0;if(!m){k=s+340|0;j=s+344|0}else{k=a[h>>0]|0;if(!(k<<24>>24))j=0;else{j=0;l=h;do{l=l+1|0;j=G(j+(d[208+(k&255)>>0]|0)|0,-1640531535)|0;k=a[l>>0]|0}while(k<<24>>24!=0)}j=(j>>>0)%((c[s+336>>2]|0)>>>0)|0;k=m+(j<<3)|0;j=m+(j<<3)+4|0}k=c[k>>2]|0;d:do if(!k)j=59292;else{o=d[208+(d[h>>0]|0)>>0]|0;while(1){j=c[j>>2]|0;k=k+-1|0;m=c[j+12>>2]|0;v=a[m>>0]|0;l=(d[208+(v&255)>>0]|0)-o|0;if(!(v<<24>>24==0|(l|0)!=0)){n=h;do{m=m+1|0;n=n+1|0;v=a[m>>0]|0;l=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(l|0)!=0))}if(!l)break d;if(!k){j=59292;break}}}while(0);l=c[j+8>>2]|0;do if((h|0)==0|(l|0)!=0)r=l;else{j=a[h>>0]|0;e:do if(!(j<<24>>24)){j=36975;x=32}else{v=j&255;j=208+v|0;do if((v|32|0)==112){j=a[h+1>>0]|0;if(!(j<<24>>24)){j=36976;x=32;break e}v=j&255;j=208+v|0;if((v|32|0)==114){j=a[h+2>>0]|0;if(!(j<<24>>24)){j=36977;x=32;break e}v=j&255;j=208+v|0;if((v|32|0)==97){j=a[h+3>>0]|0;if(!(j<<24>>24)){j=36978;x=32;break e}v=j&255;j=208+v|0;if((v|32|0)==103){j=a[h+4>>0]|0;if(!(j<<24>>24)){j=36979;x=32;break e}j=j&255;if((j|32|0)!=109){k=109;j=208+j|0;break}j=a[h+5>>0]|0;if(!(j<<24>>24)){j=36980;x=32;break e}j=j&255;if((j|32|0)!=97){k=97;j=208+j|0;break}j=a[h+6>>0]|0;if(!(j<<24>>24)){j=36981;x=32;break e}if(j<<24>>24==95)break e;else{k=95;j=208+(j&255)|0}}else k=103}else k=97}else k=114}else k=112;while(0);r=d[j>>0]|0;q=k;x=36}while(0);if((x|0)==32){r=0;q=a[208+(d[j>>0]|0)>>0]|0;x=36}if((x|0)==36?(r|0)!=(q&255|0):0){r=l;break}p=h+7|0;v=a[p>>0]|0;q=d[208+(v&255)>>0]|0;f:do if(!(v<<24>>24)){k=0;l=59;while(1){j=(k+l|0)/2|0;m=q-(d[208+(d[c[4544+(j<<4)>>2]>>0]|0)>>0]|0)|0;if(!m)break f;v=(m|0)<0;k=v?k:j+1|0;l=v?j+-1|0:l;if((k|0)>(l|0))break c}}else{n=0;o=59;while(1){j=(n+o|0)/2|0;l=c[4544+(j<<4)>>2]|0;k=q-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!k){m=p;do{m=m+1|0;l=l+1|0;v=a[m>>0]|0;k=(d[208+(v&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(k|0)!=0));if(!k)break f}v=(k|0)<0;n=v?n:j+1|0;o=v?j+-1|0:o;if((n|0)>(o|0))break c}}while(0);if(!(a[4544+(j<<4)+5>>0]&48))break c;r=Hi(s,h,29972,4544+(j<<4)|0,0)|0}while(0);if(r|0){s=c[r>>2]|0;c[B>>2]=0;u=c[f>>2]|0;v=r+16|0;j=c[v>>2]|0;g:do if(!j){t=c[s+4>>2]|0;if(!((t|0)!=0?(t|0)!=(c[s+8>>2]|0):0))x=53;h:do if((x|0)==53){t=(u|0)==0;i:do if(t){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](80)|0;x=76;break}j=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){q=c[14978]|0;p=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;o=L()|0;c[14768]=((o|0)<0|(o|0)==0&p>>>0<=q>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k)break h;j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0)break;c[14987]=j}else{if(c[u+272>>2]|0){if(a[u+81>>0]|0)break h}else{do if((e[u+276>>1]|0)>=80){k=u+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=76;break i}k=u+296|0;j=c[k>>2]|0;if(!j){j=u+292|0;break}else{c[k>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=76;break i}}else j=u+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(u,80,0)|0;x=76}while(0);if((x|0)==76)if(!j)break;else k=j;j=k;l=j+80|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(l|0));n=c[r+4>>2]|0;j:do if(!n)x=105;else{o=(Eu(n)|0)+1|0;k:do if(t){q=Sv(o|0,0,-1,-1)|0;p=L()|0;do if(!(p>>>0>0|(p|0)==0&q>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](o)|0;x=103;break k}j=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){q=c[14978]|0;p=Tv(l|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&p>>>0<=q>>>0)&1}l=Wa[c[29340>>2]&127](j)|0;if(!l)break;j=Wa[c[29352>>2]&127](l)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0){p=l;break k}c[14987]=j;p=l;break k}while(0);c[k>>2]=0;break j}else{do if(!(c[u+272>>2]|0)){do if(!(0<0|(0==0?(e[u+276>>1]|0)>>>0>>0:0))){l=u+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=103;break k}l=u+296|0;j=c[l>>2]|0;if(!j){j=u+292|0;break}else{c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=103;break k}}else j=u+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}else{if(!(a[u+81>>0]|0))break;c[k>>2]=0;x=106;break j}while(0);j=_d(u,o,0)|0;x=103}while(0);if((x|0)==103)if(!j){x=105;break}else p=j;ew(p|0,n|0,o|0)|0;c[k>>2]=p;c[v>>2]=k;c[k+32>>2]=1;c[k+72>>2]=c[(c[u+16>>2]|0)+12>>2];b[k+40>>1]=-1;n=(Eu(p)|0)+1|0;l:do if(t){q=Sv(n|0,0,-1,-1)|0;o=L()|0;if(o>>>0>0|(o|0)==0&q>>>0>2147483390)j=0;else{if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](n)|0;x=138;break}j=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){q=c[14978]|0;o=Tv(l|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&o>>>0<=q>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){j=0;break}l=Wa[c[29352>>2]&127](j)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0){x=139;break}c[14987]=l;x=139}}else{if(c[u+272>>2]|0){if(a[u+81>>0]|0){j=0;break}}else{do if(!(0<0|(0==0?(e[u+276>>1]|0)>>>0>>0:0))){l=u+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=138;break l}l=u+296|0;j=c[l>>2]|0;if(!j){j=u+292|0;break}else{c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=138;break l}}else j=u+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(u,n,0)|0;x=138}while(0);if((x|0)==138)if(!j)j=0;else x=139;if((x|0)==139)ew(j|0,p|0,n|0)|0;q=k+56|0;x=c[q>>2]|0;n=(x<<2)+8|0;o=c[f>>2]|0;if((x+3|0)>=(c[o+116>>2]|0)){c[w>>2]=c[k>>2];cd(f,38221,w)}p=k+60|0;l=c[p>>2]|0;m:do if(!l){if(c[o+272>>2]|0){if(a[o+81>>0]|0){x=160;break}}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){m=o+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];x=o+284|0;c[x>>2]=(c[x>>2]|0)+1;x=159;break m}m=o+296|0;l=c[m>>2]|0;if(!l){l=o+292|0;break}else{c[m>>2]=c[l>>2];x=o+284|0;c[x>>2]=(c[x>>2]|0)+1;x=159;break m}}else l=o+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1}l=_d(o,n,0)|0;x=159}else{m=l;do if((c[o+304>>2]|0)>>>0<=m>>>0){if((c[o+308>>2]|0)>>>0<=m>>>0)break;if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){x=169;break m}l=Zd(o,l,n,0)|0;x=159;break m}while(0);l=Zd(o,l,n,0)|0;x=159}while(0);if((x|0)==159)if(!l)x=160;else x=169;n:do if((x|0)==160){if(!j)break;if(c[o+480>>2]|0){Xd(o,j);break}l=j;do if((c[o+304>>2]|0)>>>0<=l>>>0){if((c[o+308>>2]|0)>>>0<=l>>>0)break;w=o+300|0;c[j>>2]=c[w>>2];c[w>>2]=j;break n}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{w=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}else if((x|0)==169){o=c[q>>2]|0;w=o+1|0;c[q>>2]=w;c[l+(o<<2)>>2]=j;c[l+(w<<2)>>2]=0;c[p>>2]=l}while(0);w=c[q>>2]|0;m=(w<<2)+8|0;n=c[f>>2]|0;if((w+3|0)>=(c[n+116>>2]|0)){c[y>>2]=c[k>>2];cd(f,38221,y)}j=c[p>>2]|0;o:do if(!j){if(c[n+272>>2]|0){if(a[n+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){j=n+300|0;l=c[j>>2]|0;if(l|0){c[j>>2]=c[l>>2];z=n+284|0;c[z>>2]=(c[z>>2]|0)+1;z=l;x=189;break o}j=n+296|0;l=c[j>>2]|0;if(!l){j=n+292|0;break}else{c[j>>2]=c[l>>2];z=n+284|0;c[z>>2]=(c[z>>2]|0)+1;z=l;x=189;break o}}else j=n+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}z=_d(n,m,0)|0;x=189}else{l=j;do if((c[n+304>>2]|0)>>>0<=l>>>0){if((c[n+308>>2]|0)>>>0<=l>>>0)break;if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){x=190;break o}z=Zd(n,j,m,0)|0;x=189;break o}while(0);z=Zd(n,j,m,0)|0;x=189}while(0);if((x|0)==189?z|0:0){j=z;x=190}if((x|0)==190){y=c[q>>2]|0;z=y+1|0;c[q>>2]=z;c[j+(y<<2)>>2]=0;c[j+(z<<2)>>2]=0;c[p>>2]=j}n=c[k>>2]|0;p:do if(!n)o=0;else{o=(Eu(n)|0)+1|0;q:do if(t){z=Sv(o|0,0,-1,-1)|0;y=L()|0;if(y>>>0>0|(y|0)==0&z>>>0>2147483390){o=0;break p}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](o)|0;x=216;break}j=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){z=c[14978]|0;y=Tv(l|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;w=L()|0;c[14768]=((w|0)<0|(w|0)==0&y>>>0<=z>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){o=0;break p}l=Wa[c[29352>>2]&127](j)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0<=(c[14987]|0)>>>0)break;c[14987]=l}else{if(c[u+272>>2]|0){if(a[u+81>>0]|0){o=0;break p}}else{do if(!(0<0|(0==0?(e[u+276>>1]|0)>>>0>>0:0))){l=u+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=216;break q}l=u+296|0;j=c[l>>2]|0;if(!j){j=u+292|0;break}else{c[l>>2]=c[j>>2];x=u+284|0;c[x>>2]=(c[x>>2]|0)+1;x=216;break q}}else j=u+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(u,o,0)|0;x=216}while(0);if((x|0)==216)if(!j){o=0;break}ew(j|0,n|0,o|0)|0;o=j}while(0);z=c[q>>2]|0;m=(z<<2)+8|0;n=c[f>>2]|0;if((z+3|0)>=(c[n+116>>2]|0)){c[A>>2]=c[k>>2];cd(f,38221,A)}j=c[p>>2]|0;r:do if(!j){if(c[n+272>>2]|0){if(a[n+81>>0]|0){x=238;break}}else{do if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){l=n+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];x=n+284|0;c[x>>2]=(c[x>>2]|0)+1;x=237;break r}l=n+296|0;j=c[l>>2]|0;if(!j){j=n+292|0;break}else{c[l>>2]=c[j>>2];x=n+284|0;c[x>>2]=(c[x>>2]|0)+1;x=237;break r}}else j=n+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(n,m,0)|0;x=237}else{l=j;do if((c[n+304>>2]|0)>>>0<=l>>>0){if((c[n+308>>2]|0)>>>0<=l>>>0)break;if(!(0<0|(0==0?(e[n+276>>1]|0)>>>0>>0:0))){x=247;break r}j=Zd(n,j,m,0)|0;x=237;break r}while(0);j=Zd(n,j,m,0)|0;x=237}while(0);if((x|0)==237)if(!j)x=238;else x=247;s:do if((x|0)==238){if(!o)break;if(c[n+480>>2]|0){Xd(n,o);break}j=o;do if((c[n+304>>2]|0)>>>0<=j>>>0){if((c[n+308>>2]|0)>>>0<=j>>>0)break;A=n+300|0;c[o>>2]=c[A>>2];c[A>>2]=o;break s}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{A=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else if((x|0)==247){z=c[q>>2]|0;A=z+1|0;c[q>>2]=A;c[j+(z<<2)>>2]=o;c[j+(A<<2)>>2]=0;c[p>>2]=j}while(0);if(!(Ai(u,k,r,c[s+8>>2]|0,B)|0)){j=c[v>>2]|0;break g}k=c[B>>2]|0;c[C>>2]=k;cd(f,31408,C);t:do if(k|0){do if(!t){if(c[u+480>>2]|0){Xd(u,k);break t}j=k;if((c[u+304>>2]|0)>>>0>j>>>0)break;if((c[u+308>>2]|0)>>>0<=j>>>0)break;C=u+300|0;c[k>>2]=c[C>>2];c[C>>2]=k;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{C=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);j=c[v>>2]|0;if(!j)break h;C=j+36|0;c[C>>2]=c[C>>2]|2;do if(t)x=263;else{if(!(c[u+480>>2]|0)){x=263;break}Vi(u,j)}while(0);do if((x|0)==263){B=j+32|0;C=(c[B>>2]|0)+-1|0;c[B>>2]=C;if(C|0)break;Vi(u,j)}while(0);c[v>>2]=0;break h}while(0);if((x|0)==105?(c[k>>2]=0,!t):0)x=106;if((x|0)==106){if(c[u+480>>2]|0){Xd(u,k);break}C=k;if((c[u+304>>2]|0)>>>0<=C>>>0?(c[u+308>>2]|0)>>>0>C>>>0:0){C=u+300|0;c[k>>2]=c[C>>2];c[C>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{C=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);break c}while(0);f=j;Ra=F;return f|0}}while(0);if(!(g&2)){a[f+17>>0]=1;break}else{f=0;Ra=F;return f|0}}else{if(!(c[j+56>>2]|0)){f=j;Ra=F;return f|0}if(!(a[f+25>>0]|0)){f=j;Ra=F;return f|0}}while(0);j=(g&1|0)==0?36996:36983;if(!i){c[E>>2]=j;c[E+4>>2]=h;cd(f,37020,E);f=0;Ra=F;return f|0}else{c[D>>2]=j;c[D+4>>2]=i;c[D+8>>2]=h;cd(f,37010,D);f=0;Ra=F;return f|0}return 0}function cd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=Ra;Ra=Ra+112|0;k=n+88|0;o=n;m=c[b>>2]|0;c[o>>2]=e;g=c[m+108>>2]|0;i=k+4|0;c[i>>2]=n+16;c[k>>2]=m;c[k+8>>2]=70;f=k+12|0;c[f>>2]=g;g=k+16|0;c[g>>2]=0;j=k+20|0;a[j>>0]=0;h=k+21|0;a[h>>0]=1;tb(k,d,o);e=c[i>>2]|0;if(((e|0)!=0?(a[e+(c[g>>2]|0)>>0]=0,(c[f>>2]|0)!=0):0)?(a[h>>0]&4)==0:0)f=$d(k)|0;else f=c[i>>2]|0;if(((a[j>>0]|0)==7?(l=m+81|0,(a[l>>0]|0)==0):0)?(a[m+82>>0]|0)==0:0){a[l>>0]=1;if((c[m+180>>2]|0)>0)c[m+264>>2]=1;e=m+272|0;c[e>>2]=(c[e>>2]|0)+1;e=c[m+236>>2]|0;if(e|0)c[e+12>>2]=7}if(!(a[m+85>>0]|0)){e=b+36|0;c[e>>2]=(c[e>>2]|0)+1;e=b+4|0;d=c[e>>2]|0;do if(d|0){if(c[m+480>>2]|0){Xd(m,d);break}o=d;if((c[m+304>>2]|0)>>>0<=o>>>0?(c[m+308>>2]|0)>>>0>o>>>0:0){o=m+300|0;c[d>>2]=c[o>>2];c[o>>2]=d;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{o=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);c[e>>2]=f;c[b+12>>2]=1;Ra=n;return}if(!f){Ra=n;return}if(c[m+480>>2]|0){Xd(m,f);Ra=n;return}o=f;if((c[m+304>>2]|0)>>>0<=o>>>0?(c[m+308>>2]|0)>>>0>o>>>0:0){o=m+300|0;c[f>>2]=c[o>>2];c[o>>2]=f;Ra=n;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);Ra=n;return}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);Ra=n;return}}function dd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=Ra;Ra=Ra+112|0;h=f+88|0;i=f;c[i>>2]=e;g=c[b+108>>2]|0;c[h+4>>2]=f+16;c[h>>2]=b;c[h+8>>2]=70;c[h+12>>2]=g;c[h+16>>2]=0;g=h+20|0;a[g>>0]=0;a[h+21>>0]=1;tb(h,d,i);e=yb(h)|0;if((a[g>>0]|0)!=7){Ra=f;return e|0}d=b+81|0;if(a[d>>0]|0){Ra=f;return e|0}if(a[b+82>>0]|0){Ra=f;return e|0}a[d>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;d=b+272|0;c[d>>2]=(c[d>>2]|0)+1;d=c[b+236>>2]|0;if(!d){Ra=f;return e|0}c[d+12>>2]=7;Ra=f;return e|0}function ed(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=d+108|0;h=c[o>>2]|0;n=d+112|0;i=c[n>>2]|0;if((h+f|0)>(i|0)){m=c[d+12>>2]|0;k=(i|0)==0;h=cw(i|0,((i|0)<0)<<31>>31|0,1)|0;j=L()|0;h=k?51:h;j=k?0:j;k=c[m>>2]|0;l=c[k+128>>2]|0;i=((l|0)<0)<<31>>31;if((j|0)>(i|0)|(j|0)==(i|0)&h>>>0>l>>>0){h=k+81|0;if(a[h>>0]|0){o=0;return o|0}if(a[k+82>>0]|0){o=0;return o|0}a[h>>0]=1;if((c[k+180>>2]|0)>0)c[k+264>>2]=1;h=k+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[k+236>>2]|0;if(!h){o=0;return o|0}c[h+12>>2]=7;o=0;return o|0}l=d+104|0;i=c[l>>2]|0;d=Yv(h|0,j|0,20,0)|0;j=L()|0;a:do if(!i){if(c[k+272>>2]|0){if(a[k+81>>0]|0){o=0;return o|0}}else{do if(!(j>>>0>0|((j|0)==0?d>>>0>(e[k+276>>1]|0)>>>0:0))){h=k+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];d=k+284|0;c[d>>2]=(c[d>>2]|0)+1;d=27;break a}h=k+296|0;i=c[h>>2]|0;if(!i){h=k+292|0;break}else{c[h>>2]=c[i>>2];d=k+284|0;c[d>>2]=(c[d>>2]|0)+1;d=27;break a}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}i=_d(k,d,j)|0;d=27}else{h=i;if((c[k+304>>2]|0)>>>0<=h>>>0?(c[k+308>>2]|0)>>>0>h>>>0:0){if(!(j>>>0>0|((j|0)==0?d>>>0>(e[k+276>>1]|0)>>>0:0))){h=k;d=29;break}i=Zd(k,i,d,j)|0;d=27;break}i=Zd(k,i,d,j)|0;d=27}while(0);do if((d|0)==27)if(i){h=c[m>>2]|0;if(!h){h=i;d=31;break}else{d=29;break}}else{o=0;return o|0}while(0);if((d|0)==29){k=i;if((c[h+304>>2]|0)>>>0<=k>>>0?(c[h+308>>2]|0)>>>0>k>>>0:0)h=e[h+276>>1]|0;else{h=i;d=31}}if((d|0)==31){i=h;h=Wa[c[29352>>2]&127](h)|0}c[m+48>>2]=h;c[n>>2]=(h>>>0)/20|0;c[l>>2]=i;h=c[o>>2]|0}else i=c[d+104>>2]|0;l=i+(h*20|0)|0;if((f|0)>0){j=l;k=0;h=g;while(1){g=a[h>>0]|0;a[j>>0]=g;c[j+4>>2]=a[h+1>>0];n=a[h+2>>0]|0;i=n<<24>>24;d=j+8|0;c[d>>2]=i;if(n<<24>>24>0?(a[4368+(g&255)>>0]&1)!=0:0)c[d>>2]=(c[o>>2]|0)+i;c[j+12>>2]=a[h+3>>0];a[j+1>>0]=0;c[j+16>>2]=0;b[j+2>>1]=0;k=k+1|0;if((k|0)==(f|0))break;else{j=j+20|0;h=h+4|0}}h=c[o>>2]|0}c[o>>2]=h+f;o=l;return o|0}function fd(b,d){b=b|0;d=d|0;var e=0,f=0;e=1<>2]=c[f>>2]|e;if((d|0)==1)return;if(!(a[(c[(c[(c[b>>2]|0)+16>>2]|0)+(d<<4)+4>>2]|0)+9>>0]|0))return;f=b+156|0;c[f>>2]=c[f>>2]|e;return}function gd(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=c[b>>2]|0;if(a[g+81>>0]|0){if((f|0)==-12)return;kg(g,f,e);return}if((d|0)<0)d=(c[b+108>>2]|0)+-1|0;g=c[b+104>>2]|0;h=g+(d*20|0)|0;if((f|0)<=-1?(i=g+(d*20|0)+1|0,(a[i>>0]|0)==0):0){if((f|0)==-3){c[g+(d*20|0)+16>>2]=e;a[i>>0]=-3;return}if(!e)return;c[g+(d*20|0)+16>>2]=e;a[i>>0]=f;if((f|0)!=-12)return;f=e+12|0;c[f>>2]=(c[f>>2]|0)+1;return}Ei(b,h,e,f);return}function hd(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=Ra;Ra=Ra+16|0;m=F;E=c[f>>2]|0;D=b[g+196>>1]|0;j=D<<16>>16;i=c[g+44>>2]|0;B=c[g+40>>2]|0;c[m>>2]=c[g+96>>2];i=B+i|0;i=i+((B|0)==0&(i|0)>0&1)|0;k=((c[f+108>>2]|0)*20|0)+7&-8;n=(c[f+104>>2]|0)+k|0;k=(c[g+48>>2]|0)-k&-8;l=((k|0)<0)<<31>>31;Fi(f,m);if(!(a[g+20>>0]|0))h=0;else h=((a[g+21>>0]|0)!=0&1)<<7&65535;C=f+149|0;p=(d[C>>0]|d[C+1>>0]<<8)&-129|h;a[C>>0]=p;a[C+1>>0]=p>>8;y=g+199|0;i=(i|0)<10&(a[y>>0]|0)!=0?10:i;p=p&-4;a[C>>0]=p;a[C+1>>0]=p>>8;p=i*40|0;t=(l|0)<0|(l|0)==0&k>>>0

        >>0;q=Tv(k|0,l|0,p|0,0)|0;z=L()|0;x=t?k:q;l=t?l:z;z=f+88|0;c[z>>2]=t?0:n+q|0;q=j*40|0;s=(l|0)<0|(l|0)==0&x>>>0>>0;r=Tv(x|0,l|0,q|0,0)|0;v=L()|0;x=s?x:r;v=s?l:v;t=Sv((s?q:0)|0,(s?0:0)|0,(t?p:0)|0,(t?0:0)|0)|0;l=L()|0;w=f+100|0;c[w>>2]=s?0:n+r|0;r=Sv(c[m>>2]<<2|0,0,7,0)|0;r=r&-8;s=(L()|0)&1;u=(v|0)<(s|0)|(v|0)==(s|0)&x>>>0>>0;A=Tv(x|0,v|0,r|0,s|0)|0;k=L()|0;x=u?x:A;k=u?v:k;m=Sv(t|0,l|0,(u?r:0)|0,(u?s:0)|0)|0;l=L()|0;t=f+92|0;c[t>>2]=u?0:n+A|0;A=B<<2;u=Sv(A|0,0,7,0)|0;u=u&-8;v=(L()|0)&1;h=(k|0)<(v|0)|(k|0)==(v|0)&x>>>0>>0;k=Tv(x|0,k|0,u|0,v|0)|0;L()|0;l=Sv(m|0,l|0,(h?u:0)|0,(h?v:0)|0)|0;m=L()|0;x=f+96|0;c[x>>2]=h?0:n+k|0;if(!((l|0)==0&(m|0)==0)){a:do if(c[E+272>>2]|0)if(!(a[E+81>>0]|0))o=15;else n=0;else{do if(!(m>>>0>0|((m|0)==0?l>>>0>(e[E+276>>1]|0)>>>0:0))){h=E+300|0;k=c[h>>2]|0;if(k|0){c[h>>2]=c[k>>2];n=E+284|0;c[n>>2]=(c[n>>2]|0)+1;n=k;break a}h=E+296|0;k=c[h>>2]|0;if(!k){h=E+292|0;break}else{c[h>>2]=c[k>>2];n=E+284|0;c[n>>2]=(c[n>>2]|0)+1;n=k;break a}}else h=E+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;o=15}while(0);if((o|0)==15)n=_d(E,l,m)|0;c[f+192>>2]=n;h=E+81|0;if(!(a[h>>0]|0)){k=c[z>>2]|0;if(!k)if(m>>>0<0|(m|0)==0&l>>>0

        >>0)k=0;else{l=Tv(l|0,m|0,p|0,0)|0;k=n+l|0;m=L()|0}c[z>>2]=k;k=c[w>>2]|0;if(!k)if((m|0)<0|(m|0)==0&l>>>0>>0)k=0;else{l=Tv(l|0,m|0,q|0,0)|0;k=n+l|0;m=L()|0}c[w>>2]=k;k=c[t>>2]|0;if(!k)if((m|0)<(s|0)|(m|0)==(s|0)&l>>>0>>0)k=0;else{l=Tv(l|0,m|0,r|0,s|0)|0;k=n+l|0;m=L()|0}c[t>>2]=k;k=c[x>>2]|0;if(!k)if((m|0)<(v|0)|(m|0)==(v|0)&l>>>0>>0)k=0;else{k=Tv(l|0,m|0,u|0,v|0)|0;L()|0;k=n+k|0}c[x>>2]=k}}else h=E+81|0;g=g+216|0;c[f+128>>2]=c[g>>2];c[g>>2]=0;g=(d[C>>0]|d[C+1>>0]<<8)&-13|a[y>>0]<<2&12;a[C>>0]=g;a[C+1>>0]=g>>8;if(a[h>>0]|0){b[f+16>>1]=0;c[f+28>>2]=0;c[f+24>>2]=0;E=f+20|0;c[E>>2]=770837923;E=f+36|0;c[E>>2]=-1;E=f+40|0;c[E>>2]=0;E=f+146|0;a[E>>0]=2;E=f+44|0;c[E>>2]=0;E=f+32|0;c[E>>2]=1;E=f+147|0;a[E>>0]=-1;E=f+48|0;c[E>>2]=0;E=f+64|0;f=E;c[f>>2]=0;E=E+4|0;c[E>>2]=0;Ra=F;return}c[f+28>>2]=B;b[f+16>>1]=D;if(D<<16>>16>0){h=c[w>>2]|0;while(1){c[h+32>>2]=E;b[h+8>>1]=1;c[h+24>>2]=0;if((j|0)>1){j=j+-1|0;h=h+40|0}else break}}c[f+24>>2]=i;if((i|0)>0){h=c[z>>2]|0;while(1){c[h+32>>2]=E;b[h+8>>1]=128;c[h+24>>2]=0;if((i|0)>1){i=i+-1|0;h=h+40|0}else break}}gw(c[x>>2]|0,0,A|0)|0;E=f+20|0;c[E>>2]=770837923;E=f+36|0;c[E>>2]=-1;E=f+40|0;c[E>>2]=0;E=f+146|0;a[E>>0]=2;E=f+44|0;c[E>>2]=0;E=f+32|0;c[E>>2]=1;E=f+147|0;a[E>>0]=-1;E=f+48|0;c[E>>2]=0;E=f+64|0;f=E;c[f>>2]=0;E=E+4|0;c[E>>2]=0;Ra=F;return}function id(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+32|0;n=r+16|0;m=r+8|0;o=r;q=f+16|0;l=c[q>>2]|0;j=c[l+88>>2]|0;b[j+48>>1]=4;j=j+40|0;c[j>>2]=g;c[j+4>>2]=h;j=l+36|0;if((c[j>>2]|0)>4){c[j>>2]=4;k=Rg(l)|0}else k=Gc(c[q>>2]|0)|0;if((k|0)!=100){j=c[q>>2]|0;if(!j){p=0;q=k;c[i>>2]=p;Ra=r;return q|0}k=gc(j)|0;c[q>>2]=0;j=c[f+20>>2]|0;if(!k){p=m;c[p>>2]=g;c[p+4>>2]=h;p=dd(j,36955,m)|0;q=1;c[i>>2]=p;Ra=r;return q|0}else{p=pd(j)|0;c[n>>2]=p;p=dd(j,31408,n)|0;q=k;c[i>>2]=p;Ra=r;return q|0}}l=c[c[l+96>>2]>>2]|0;j=b[f+8>>1]|0;a:do if((e[l+58>>1]|0)>(j&65535)){j=j&65535;k=c[l+88+(j<<2)>>2]|0;if(k>>>0<12){j=c[f+20>>2]|0;switch(k|0){case 7:{k=36942;break a}case 0:{p=9;break a}default:{}}k=36947;break}c[f+4>>2]=c[l+88+((b[l+56>>1]|0)+j<<2)>>2];if(k>>>0>127)j=(k+-12|0)>>>1;else j=d[3520+k>>0]|0;c[f>>2]=j;p=c[l+40>>2]|0;c[f+12>>2]=p;q=p+1|0;a[q>>0]=a[q>>0]|16;a[(c[p+8>>2]|0)+11>>0]=1;p=0;q=0;c[i>>2]=p;Ra=r;return q|0}else{j=c[f+20>>2]|0;p=9}while(0);if((p|0)==9)k=36937;c[o>>2]=k;p=dd(j,36908,o)|0;gc(c[q>>2]|0)|0;c[q>>2]=0;q=1;c[i>>2]=p;Ra=r;return q|0}function jd(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=Ra;Ra=Ra+16|0;h=m;if(!b){c[h>>2]=58063;c[h+4>>2]=91595;c[h+8>>2]=31517;Db(21,32001,h);l=21;Ra=m;return l|0}k=c[b+20>>2]|0;i=b+16|0;j=c[i>>2]|0;do if((f|e|0)>=0?(n=Sv(f|0,((f|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0,p=L()|0,h=c[b>>2]|0,o=((h|0)<0)<<31>>31,!((p|0)>(o|0)|(p|0)==(o|0)&n>>>0>h>>>0)):0)if(!j){h=4;l=24}else{h=c[b+12>>2]|0;p=c[h+8>>2]|0;c[(c[p+4>>2]|0)+4>>2]=c[p>>2];h=Za[g&127](h,(c[b+4>>2]|0)+f|0,e,d)|0;if((h|0)!=4){c[j+40>>2]=h;c[k+64>>2]=h;if(h|0){l=27;break}if(!(c[k+260>>2]|0)){h=0;break}Ne(k,0);h=0;break}f=j+20|0;h=c[f>>2]|0;if((h|0)<832317811)switch(h|0){case 770837923:{l=8;break}default:{}}else switch(h|0){case 832317811:{l=8;break}default:{}}if((l|0)==8)kc(j)|0;d=c[j>>2]|0;kb(d,j);e=c[j+4>>2]|0;b=j+8|0;h=c[b>>2]|0;if(!e)c[d+4>>2]=h;else{c[e+8>>2]=h;h=c[b>>2]|0}if(h|0)c[h+4>>2]=e;c[f>>2]=1443283912;c[j>>2]=0;do if(d){if(c[d+480>>2]|0){Xd(d,j);break}p=j;if((c[d+304>>2]|0)>>>0<=p>>>0?(c[d+308>>2]|0)>>>0>p>>>0:0){p=d+300|0;c[j>>2]=c[p>>2];c[p>>2]=j}else l=20}else l=20;while(0);do if((l|0)==20)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{p=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);c[i>>2]=0;h=4;l=24}else{h=1;l=24}while(0);if((l|0)==24){c[k+64>>2]=h;l=27}if((l|0)==27)Ne(k,h);if((h|0)==3082|(a[k+81>>0]|0)!=0){og(k);p=7;Ra=m;return p|0}else{p=c[k+68>>2]&h;Ra=m;return p|0}return 0}function kd(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;if(!(a[b>>0]|0)){e=cg(b,c,d,e,0)|0;return e|0}else{e=Gi(b,c,d,e)|0;return e|0}return 0}function ld(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=Ra;Ra=Ra+32|0;j=k+16|0;f=k;h=k+20|0;if(!b){c[f>>2]=58063;c[f+4>>2]=91693;c[f+8>>2]=31517;Db(21,32001,f);j=21;Ra=k;return j|0}i=c[b+20>>2]|0;if(!(c[b+16>>2]|0))f=4;else{f=id(b,d,e,h)|0;do if(f|0?(g=c[h>>2]|0,h=(g|0)==0,c[j>>2]=g,Vb(i,f,h?0:31408,j),!h):0){if(i|0){if(c[i+480>>2]|0){Xd(i,g);break}j=g;if((c[i+304>>2]|0)>>>0<=j>>>0?(c[i+308>>2]|0)>>>0>j>>>0:0){j=i+300|0;c[g>>2]=c[j>>2];c[j>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0)}if((f|0)==3082|(a[i+81>>0]|0)!=0){og(i);j=7;Ra=k;return j|0}else{j=c[i+68>>2]&f;Ra=k;return j|0}return 0}function md(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=Ra;Ra=Ra+16|0;I=M;C=d[e+1>>0]|0;D=d[e>>0]|0;B=e+2|0;G=(a[e+3>>0]|0)==0;r=0;a:while(1){x=c;c=b;while(1){j=a[c>>0]|0;c=c+1|0;b=j&255;if(j<<24>>24>-1)if(!(j<<24>>24)){E=124;break a}else{g=c;A=b;E=10}else if((j&255)>191){b=d[2736+(b+-192)>>0]|0;j=a[c>>0]|0;if((j&-64)<<24>>24==-128)do{c=c+1|0;b=b<<6|j&63;j=a[c>>0]|0}while((j&-64)<<24>>24==-128);if((b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)){y=c;z=65533}else{g=c;A=b;E=10}}else{g=c;A=b;E=10}if((E|0)==10){E=0;if((A|0)==(D|0)){E=11;break a}else{y=g;z=A}}if((z|0)!=(f|0)){i=z;w=r;u=y;break}if(!(a[B>>0]|0)){E=66;break}c=x+1|0;b=a[x>>0]|0;j=b&255;if((b&255)<=191)if(!(b<<24>>24)){h=1;E=125;break a}else q=c;else{b=d[2736+(j+-192)>>0]|0;j=a[c>>0]|0;if((j&-64)<<24>>24==-128)do{c=c+1|0;b=b<<6|j&63;j=a[c>>0]|0}while((j&-64)<<24>>24==-128);q=c;j=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b}c=y+1|0;b=a[y>>0]|0;k=b&255;do if((b&255)<=191){if(b<<24>>24==94){l=y+2|0;p=a[c>>0]|0;c=p&255;if((p&255)>191){c=d[2736+(c+-192)>>0]|0;k=a[l>>0]|0;if((k&-64)<<24>>24==-128){b=c;c=l;do{c=c+1|0;b=b<<6|k&63;k=a[c>>0]|0}while((k&-64)<<24>>24==-128)}else{b=c;c=l}n=1;m=0;k=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b;break}else{n=1;k=c;c=l}}else n=0;if((k|0)==93){m=(j|0)==93&1;l=c+1|0;p=a[c>>0]|0;k=p&255;if((p&255)>191){c=d[2736+(k+-192)>>0]|0;k=a[l>>0]|0;if((k&-64)<<24>>24==-128){b=c;c=l;do{c=c+1|0;b=b<<6|k&63;k=a[c>>0]|0}while((k&-64)<<24>>24==-128)}else{b=c;c=l}k=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b}else c=l}else m=0}else{b=d[2736+(k+-192)>>0]|0;k=a[c>>0]|0;if((k&-64)<<24>>24==-128)do{c=c+1|0;b=b<<6|k&63;k=a[c>>0]|0}while((k&-64)<<24>>24==-128);n=0;m=0;k=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b}while(0);p=0;o=m;b:while(1){switch(k|0){case 0:{h=1;E=125;break a}case 93:break b;case 45:{m=a[c>>0]|0;if(m<<24>>24!=93?(p|0)!=0&m<<24>>24!=0:0){b=c+1|0;l=m&255;if((m&255)>191){l=d[2736+(l+-192)>>0]|0;m=a[b>>0]|0;if((m&-64)<<24>>24==-128)do{b=b+1|0;l=l<<6|m&63;m=a[b>>0]|0}while((m&-64)<<24>>24==-128);l=(l&-2|0)==65534|(l>>>0<128|(l&-2048|0)==55296)?65533:l}v=0;t=b;s=j>>>0

        >>0|j>>>0>l>>>0?o:1}else E=105;break}default:E=105}if((E|0)==105){E=0;v=k;t=c;s=(j|0)==(k|0)?1:o}c=t+1|0;p=a[t>>0]|0;k=p&255;if((p&255)>191){b=d[2736+(k+-192)>>0]|0;k=a[c>>0]|0;if((k&-64)<<24>>24==-128)do{c=c+1|0;b=b<<6|k&63;k=a[c>>0]|0}while((k&-64)<<24>>24==-128);k=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b}p=v;o=s}if((o|0)==(n|0)){h=1;E=125;break a}else x=q}do if((E|0)==66){E=0;b=y+1|0;c=a[y>>0]|0;i=c&255;if((c&255)<=191)if(!(c<<24>>24)){h=1;E=125;break a}else{w=b;u=b;break}c=d[2736+(i+-192)>>0]|0;i=a[b>>0]|0;if((i&-64)<<24>>24==-128)do{b=b+1|0;c=c<<6|i&63;i=a[b>>0]|0}while((i&-64)<<24>>24==-128);i=(c&-2|0)==65534|(c>>>0<128|(c&-2048|0)==55296)?65533:c;w=b;u=b}while(0);r=a[x>>0]|0;c=x+1|0;b=r&255;if((r&255)>191){b=d[2736+(b+-192)>>0]|0;j=a[c>>0]|0;if((j&-64)<<24>>24==-128)do{c=c+1|0;b=b<<6|j&63;j=a[c>>0]|0}while((j&-64)<<24>>24==-128);b=(b&-2|0)==65534|(b>>>0<128|(b&-2048|0)==55296)?65533:b}do if((i|0)!=(b|0)){if(!G?((b|i)>>>0<128?(a[208+(i&255)>>0]|0)==(a[208+(b&255)>>0]|0):0):0)break;if((i|0)!=(C|0)){h=1;E=125;break a}if(!((u|0)!=(w|0)&(b|0)!=0)){h=1;E=125;break a}}while(0);r=w;b=u}if((E|0)==11){j=x;c:while(1){while(1){A=a[g>>0]|0;g=g+1|0;c=A&255;if((A&255)>191){c=d[2736+(c+-192)>>0]|0;i=a[g>>0]|0;if((i&-64)<<24>>24==-128)do{g=g+1|0;c=c<<6|i&63;i=a[g>>0]|0}while((i&-64)<<24>>24==-128);b=g;c=(c&-2|0)==65534|(c>>>0<128|(c&-2048|0)==55296)?65533:c}else b=g;g=(c|0)==(C|0);if(!((c|0)==(D|0)|g))break c;if(g)break;else g=b}g=j+1|0;i=a[j>>0]|0;if((i&255)>191){if((a[g>>0]&-64)<<24>>24==-128)do g=g+1|0;while((a[g>>0]&-64)<<24>>24==-128)}else if(!(i<<24>>24)){h=2;E=125;break}j=g;g=b}if((E|0)==125){Ra=M;return h|0}if(!c){f=0;Ra=M;return f|0}do if((c|0)==(f|0)){if(!(a[B>>0]|0)){g=b+1|0;c=a[b>>0]|0;h=c&255;if((c&255)<=191){if(!(c<<24>>24))h=2;else{F=h;H=g;E=43;break}Ra=M;return h|0}c=d[2736+(h+-192)>>0]|0;h=a[g>>0]|0;if((h&-64)<<24>>24==-128)do{g=g+1|0;c=c<<6|h&63;h=a[g>>0]|0}while((h&-64)<<24>>24==-128);if((c&-2|0)==65534|(c>>>0<128|(c&-2048|0)==55296)){J=65533;K=g;break}else{F=c;H=g;E=43;break}}i=b+-1|0;c=a[j>>0]|0;if(!(c<<24>>24)){f=2;Ra=M;return f|0}g=j;while(1){h=md(i,g,e,f)|0;if((h|0)!=1){E=125;break}h=g+1|0;if((c&255)>191){g=h;while(1){c=a[g>>0]|0;if((c&-64)<<24>>24==-128)g=g+1|0;else break}}else{g=h;c=a[h>>0]|0}if(!(c<<24>>24)){h=2;E=125;break}}if((E|0)==125){Ra=M;return h|0}}else{F=c;H=b;E=43}while(0);if((E|0)==43)if(F>>>0<129){if(G){a[I>>0]=F;g=0}else{g=F&255;a[I>>0]=F&(~(a[880+g>>0]&32)&255);g=a[208+g>>0]|0;a[I+2>>0]=0}a[I+1>>0]=g;g=j+(Mv(j,I)|0)|0;d:do if(a[g>>0]|0){while(1){g=g+1|0;c=md(H,g,e,f)|0;if((c|0)!=1)break;g=g+(Mv(g,I)|0)|0;if(!(a[g>>0]|0))break d}f=c;Ra=M;return f|0}while(0);f=2;Ra=M;return f|0}else{J=F;K=H}g=j;while(1){h=a[g>>0]|0;g=g+1|0;c=h&255;if(h<<24>>24>-1){if(!(h<<24>>24)){h=2;E=125;break}}else if((h&255)>191){c=d[2736+(c+-192)>>0]|0;h=a[g>>0]|0;if((h&-64)<<24>>24==-128)do{g=g+1|0;c=c<<6|h&63;h=a[g>>0]|0}while((h&-64)<<24>>24==-128);c=(c&-2|0)==65534|(c>>>0<128|(c&-2048|0)==55296)?65533:c}if((c|0)==(J|0)?(L=md(K,g,e,f)|0,(L|0)!=1):0){h=L;E=125;break}}if((E|0)==125){Ra=M;return h|0}}else if((E|0)==124){f=(a[x>>0]|0)!=0&1;Ra=M;return f|0}else if((E|0)==125){Ra=M;return h|0}return 0}function nd(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=Ra;Ra=Ra+48|0;n=T+24|0;m=T+16|0;l=T+8|0;k=T;J=T+40|0;K=T+36|0;c[K>>2]=0;a:do if(!f){c[k>>2]=31171;Db(21,38253,k)}else{k=c[f+96>>2]|0;b:do if((k|0)<-264537850){switch(k|0){case -1607883113:break;default:break b}R=f+64|0;c[R>>2]=0;if(c[f+260>>2]|0)Ne(f,0);x=(h|0)==0;y=f+32|0;z=f+272|0;A=f+276|0;M=f+81|0;B=f+288|0;N=f+300|0;C=f+296|0;D=f+284|0;E=f+292|0;F=f+82|0;G=f+180|0;H=f+264|0;I=f+236|0;O=f+480|0;P=f+304|0;Q=f+308|0;l=(g|0)==0?59952:g;c:while(1){if(!(a[l>>0]|0)){k=0;w=135;break}c[K>>2]=0;k=qd(f,l,-1,128,0,K,J)|0;do if(!k){p=c[K>>2]|0;if(!p){k=0;l=c[J>>2]|0;break}o=0;m=0;n=0;g=0;l=0;q=0;while(1){k=Gc(p)|0;if(!x){v=(k|0)==100;if(v)if(!n)w=20;else{u=m;t=n;v=g;w=48}else{if((n|0)!=0|(k|0)!=101){w=105;break}if((c[y>>2]&256|0)==0&0==0){w=105;break}else w=20}if((w|0)==20){w=0;n=(p|0)==0;if(n)u=0;else u=e[p+144>>1]|0;m=u<<3|4;d:do if(c[z>>2]|0)if(!(a[M>>0]|0))w=30;else{l=0;w=136;break c}else{do if(0<0|(0==0?(e[A>>1]|0)>>>0>>0:0))l=B;else{l=c[N>>2]|0;if(l|0){c[N>>2]=c[l>>2];c[D>>2]=(c[D>>2]|0)+1;break d}l=c[C>>2]|0;if(!l){l=E;break}c[C>>2]=c[l>>2];c[D>>2]=(c[D>>2]|0)+1;break d}while(0);c[l>>2]=(c[l>>2]|0)+1;w=30}while(0);if((w|0)==30){w=0;l=_d(f,m,0)|0}if(!l){l=0;w=136;break c}do if(u|0){s=p+144|0;t=p+116|0;if(n){gw(l|0,0,u<<2|0)|0;break}r=0;do{q=c[p>>2]|0;do if(r>>>0<(e[s>>1]|0)>>>0){m=c[t>>2]|0;n=m+(r*40|0)|0;e:do if(!n)m=0;else{g=b[m+(r*40|0)+8>>1]|0;do if((g&514)==514){if((a[m+(r*40|0)+10>>0]|0)!=1)break;m=c[m+(r*40|0)+16>>2]|0;break e}while(0);if(g&1){m=0;break}m=Gg(n,1)|0}while(0);n=q+81|0;if(!(a[n>>0]|0))break;if(c[q+180>>2]|0){m=0;break}a[n>>0]=0;c[q+264>>2]=0;m=q+272|0;c[m>>2]=(c[m>>2]|0)+-1;m=0}else m=0;while(0);c[l+(r<<2)>>2]=m;r=r+1|0}while((r|0)!=(u|0))}while(0);if(v){t=1;v=l;q=l;w=48}else{m=u;n=1;g=l;q=l}}if((w|0)==48){w=0;s=v+(u<<2)|0;f:do if((u|0)>0){m=0;while(1){o=(p|0)==0;g:do if(o)n=29576;else{n=c[p+120>>2]|0;do if(n|0){if(m>>>0>=(e[p+144>>1]|0)>>>0)break;n=n+(m*40|0)|0;break g}while(0);n=c[p>>2]|0;c[n+64>>2]=25;Ne(n,25);n=29576}while(0);g=b[n+8>>1]|0;do if((g&514)==514){if((a[n+10>>0]|0)!=1){w=58;break}r=c[n+16>>2]|0}else w=58;while(0);do if((w|0)==58){w=0;if(g&1){r=0;break}r=Gg(n,1)|0}while(0);if(!o){g=c[p>>2]|0;o=p+40|0;n=c[o>>2]|0;if((n|0)==3082|(a[g+81>>0]|0)!=0){og(g);n=7}else n=c[g+68>>2]&n;c[o>>2]=n}c[s+(m<<2)>>2]=r;if(!r){p=c[K>>2]|0;if(!p)n=1;else{n=c[p+120>>2]|0;do if(!n)w=70;else{if(m>>>0>=(e[p+144>>1]|0)>>>0){w=70;break}n=n+(m*40|0)|0;g=p}while(0);if((w|0)==70){w=0;n=c[p>>2]|0;c[n+64>>2]=25;Ne(n,25);n=29576;g=p}n=b[n+8>>1]&31;g=c[g>>2]|0;r=p+40|0;o=c[r>>2]|0;if((o|0)==3082|(a[g+81>>0]|0)!=0){og(g);g=7}else g=c[g+68>>2]&o;c[r>>2]=g}if(!(-1431655766>>>n&1)){w=76;break c}}m=m+1|0;if((m|0)>=(u|0))break f;p=c[K>>2]|0}}else m=0;while(0);c[s+(m<<2)>>2]=0;o=s;m=u;n=t;g=v}if(Za[h&127](i,m,o,g)|0){w=86;break c}}if((k|0)!=100){w=104;break}p=c[K>>2]|0}if((w|0)==104){w=0;p=c[K>>2]|0}else if((w|0)==105)w=0;o=p+20|0;k=c[o>>2]|0;if((k|0)<832317811)switch(k|0){case 770837923:{w=107;break}default:k=0}else switch(k|0){case 832317811:{w=107;break}default:k=0}if((w|0)==107){w=0;k=kc(p)|0}n=c[p>>2]|0;kb(n,p);g=c[p+4>>2]|0;m=p+8|0;l=c[m>>2]|0;if(!g)c[n+4>>2]=l;else{c[g+8>>2]=l;l=c[m>>2]|0}if(l|0)c[l+4>>2]=g;c[o>>2]=1443283912;c[p>>2]=0;do if(n){if(c[n+480>>2]|0){Xd(n,p);break}v=p;if((c[n+304>>2]|0)>>>0<=v>>>0?(c[n+308>>2]|0)>>>0>v>>>0:0){v=n+300|0;c[p>>2]=c[v>>2];c[v>>2]=p}else w=119}else w=119;while(0);do if((w|0)==119)if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{w=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}while(0);c[K>>2]=0;l=c[J>>2]|0;while(1)if(!(a[880+(d[l>>0]|0)>>0]&1))break;else l=l+1|0;if(q){if(c[O>>2]|0){Xd(f,q);break}w=q;if((c[P>>2]|0)>>>0<=w>>>0?(c[Q>>2]|0)>>>0>w>>>0:0){c[q>>2]=c[N>>2];c[N>>2]=q;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{w=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}}while(0);if(k){w=135;break}}if((w|0)==76)if((a[M>>0]|0)==0?(a[F>>0]|0)==0:0){a[M>>0]=1;if((c[G>>2]|0)>0)c[H>>2]=1;c[z>>2]=(c[z>>2]|0)+1;m=c[I>>2]|0;if(m){c[m+12>>2]=7;w=136}else w=136}else w=136;else if((w|0)==86){o=c[K>>2]|0;p=o+20|0;k=c[p>>2]|0;if((k|0)<832317811)switch(k|0){case 770837923:{w=87;break}default:{}}else switch(k|0){case 832317811:{w=87;break}default:{}}if((w|0)==87)kc(o)|0;n=c[o>>2]|0;kb(n,o);g=c[o+4>>2]|0;m=o+8|0;k=c[m>>2]|0;if(!g)c[n+4>>2]=k;else{c[g+8>>2]=k;k=c[m>>2]|0}if(k|0)c[k+4>>2]=g;c[p>>2]=1443283912;c[o>>2]=0;do if(n){if(c[n+480>>2]|0){Xd(n,o);break}J=o;if((c[n+304>>2]|0)>>>0<=J>>>0?(c[n+308>>2]|0)>>>0>J>>>0:0){J=n+300|0;c[o>>2]=c[J>>2];c[J>>2]=o}else w=99}else w=99;while(0);do if((w|0)==99)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{J=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);c[K>>2]=0;c[R>>2]=4;Ne(f,4);k=4}else if((w|0)==135){l=0;p=c[K>>2]|0;w=136}do if((w|0)==136)if(p){q=p+20|0;m=c[q>>2]|0;if((m|0)<832317811)switch(m|0){case 770837923:{w=138;break}default:{}}else switch(m|0){case 832317811:{w=138;break}default:{}}if((w|0)==138)kc(p)|0;g=c[p>>2]|0;kb(g,p);o=c[p+4>>2]|0;n=p+8|0;m=c[n>>2]|0;if(!o)c[g+4>>2]=m;else{c[o+8>>2]=m;m=c[n>>2]|0}if(m|0)c[m+4>>2]=o;c[q>>2]=1443283912;c[p>>2]=0;if(g|0){if(c[g+480>>2]|0){Xd(g,p);break}K=p;if((c[g+304>>2]|0)>>>0<=K>>>0?(c[g+308>>2]|0)>>>0>K>>>0:0){K=g+300|0;c[p>>2]=c[K>>2];c[K>>2]=p;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{K=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if(l|0){if(c[O>>2]|0){Xd(f,l);break}O=l;if((c[P>>2]|0)>>>0<=O>>>0?(c[Q>>2]|0)>>>0>O>>>0:0){c[l>>2]=c[N>>2];c[N>>2]=l;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{Q=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if((k|0)==3082|(a[M>>0]|0)!=0){og(f);g=7}else g=c[f+68>>2]&k;k=(j|0)!=0;if(!(k&(g|0)!=0)){if(!k){j=g;Ra=T;return j|0}c[j>>2]=0;j=g;Ra=T;return j|0}n=pd(f)|0;do if(n|0?(S=(Eu(n)|0)+1|0,Q=Sv(S|0,0,-1,-1)|0,P=L()|0,!(P>>>0>0|(P|0)==0&Q>>>0>2147483390)):0){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](S)|0;if(!k)break}else{k=Wa[c[29356>>2]&127](S)|0;if((c[14985]|0)>>>0>>0)c[14985]=S;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){Q=c[14978]|0;P=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;O=L()|0;c[14768]=((O|0)<0|(O|0)==0&P>>>0<=Q>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}ew(k|0,n|0,S|0)|0;c[j>>2]=k;j=g;Ra=T;return j|0}while(0);c[j>>2]=0;c[R>>2]=7;Ne(f,7);j=7;Ra=T;return j|0}else{if((k|0)<1266094736)switch(k|0){case -264537850:break;default:break b}else switch(k|0){case 1266094736:break;default:break b}c[m>>2]=38244;Db(21,38253,m);break a}while(0);c[l>>2]=50924;Db(21,38253,l)}while(0);c[n>>2]=58063;c[n+4>>2]=118947;c[n+8>>2]=31517;Db(21,32001,n);j=21;Ra=T;return j|0}function od(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return qd(a,b,c,128,0,d,e)|0}function pd(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;i=Ra;Ra=Ra+32|0;g=i+8|0;f=i;a:do if(d){e=c[d+96>>2]|0;b:do if((e|0)>=-264537850)if((e|0)<1266094736)switch(e|0){case -264537850:break b;default:{h=3;break b}}else switch(e|0){case 1266094736:break b;default:{h=3;break b}}else switch(e|0){case -1607883113:break;default:h=3}while(0);if((h|0)==3){c[f>>2]=50924;Db(21,38253,f);c[g>>2]=58063;c[g+4>>2]=157025;c[g+8>>2]=31517;Db(21,32001,g);e=50552;break}if(!(a[d+81>>0]|0)){h=d+64|0;e=c[h>>2]|0;c:do if(!e)e=0;else{g=c[d+260>>2]|0;do if(g){f=b[g+8>>1]|0;if((f&514)==514?(a[g+10>>0]|0)==1:0)e=c[g+16>>2]|0;else{if(f&1)break;e=Gg(g,1)|0}if(e|0)break a;e=c[h>>2]|0}while(0);switch(e|0){case 516:{e=50738;break a}case 100:{e=50760;break a}case 101:{e=50782;break a}default:{e=e&255;if(e>>>0<29)break c;else{e=50724;break a}}}}while(0);if(!(520028155>>>e&1))e=50724;else e=c[22960+(e<<2)>>2]|0}else e=34831}else e=34831;while(0);Ra=i;return e|0}function qd(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;za=Ra;Ra=Ra+352|0;ya=za+56|0;xa=za+48|0;wa=za+40|0;p=za+24|0;o=za+16|0;n=za+8|0;m=za;ta=za+336|0;ua=za+60|0;c[k>>2]=0;a:do if(!f){c[m>>2]=31171;Db(21,38253,m)}else{m=c[f+96>>2]|0;b:do if((m|0)<-264537850){switch(m|0){case -1607883113:break;default:break b}if(!g)break a;ma=f+20|0;n=c[ma>>2]|0;na=f+16|0;if((n|0)>0){o=c[na>>2]|0;m=0;do{p=c[o+(m<<4)+4>>2]|0;if(p|0)c[(c[p+4>>2]|0)+4>>2]=c[p>>2];m=m+1|0}while((m|0)!=(n|0))}D=ua+188|0;E=ua+220|0;F=(i&1|0)==0;G=i>>>2&1;H=ua+25|0;I=ua+24|0;J=f+272|0;K=f+360|0;M=ua+64|0;N=(h|0)>-1;O=f+4|0;P=ua+68|0;Q=(h|0)==0;R=ua+12|0;S=f+112|0;T=g+(h+-1)|0;U=ua+17|0;V=f+81|0;W=f+68|0;X=g+h|0;Y=ua+224|0;Z=Sv(h|0,((h|0)<0)<<31>>31|0,1,0)|0;_=L()|0;$=(l|0)==0;aa=f+276|0;ba=f+288|0;ca=f+300|0;da=f+480|0;ea=ua+8|0;fa=f+165|0;ga=f+296|0;ha=f+284|0;ia=f+304|0;ja=ua+199|0;ka=g;v=i&255;w=f+292|0;x=f+308|0;y=v<<24>>24>-1;z=f+64|0;A=ua+260|0;B=f+260|0;C=f+56|0;u=0;c:while(1){d:while(1){c[ta>>2]=0;gw(ua|0,0,148)|0;m=D;n=m+88|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(n|0));c[E>>2]=j;if(!F){a[I>>0]=1;c[J>>2]=(c[J>>2]|0)+1}a[H>>0]=G;i=c[ma>>2]|0;e:do if((i|0)>0){p=c[na>>2]|0;m=0;f:while(1){o=c[p+(m<<4)+4>>2]|0;if(o|0?(va=c[o+4>>2]|0,c[va+4>>2]=c[o>>2],a[o+9>>0]|0):0){if((c[va+76>>2]|0)!=(o|0)?b[va+22>>1]&64:0)break;n=c[va+72>>2]|0;if(n|0)do{do if((c[n>>2]|0)!=(o|0)){if((c[n+4>>2]|0)!=1)break;if((a[n+8>>0]|0)!=1)break f}while(0);n=c[n+12>>2]|0}while((n|0)!=0)}m=m+1|0;if((m|0)>=(i|0)){la=31;break e}}c[wa>>2]=c[p+(m<<4)>>2];Vb(f,262,38298,wa);n=262}else la=31;while(0);g:do if((la|0)==31){la=0;n=c[K>>2]|0;c[K>>2]=0;if(n|0){m=c[O>>2]|0;if(m|0)do{t=m+149|0;s=(d[t>>0]|d[t+1>>0]<<8)&-4|1;a[t>>0]=s;a[t+1>>0]=s>>8;m=c[m+8>>2]|0}while((m|0)!=0);do{o=n;n=c[n+24>>2]|0;p=c[o>>2]|0;s=o+12|0;t=(c[s>>2]|0)+-1|0;c[s>>2]=t;h:do if(!t){m=c[o+8>>2]|0;if(m|0)Wa[c[(c[m>>2]|0)+16>>2]&127](m)|0;do if(p|0){if(c[p+480>>2]|0){Xd(p,o);break h}m=o;if((c[p+304>>2]|0)>>>0>m>>>0)break;if((c[p+308>>2]|0)>>>0<=m>>>0)break;t=p+300|0;c[o>>2]=c[t>>2];c[t>>2]=o;break h}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{t=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0)}while((n|0)!=0)}c[ua>>2]=f;i:do if(N){if(!Q?(a[T>>0]|0)==0:0){la=75;break}if((c[S>>2]|0)<(h|0)){Vb(f,18,38328,xa);if(!(a[V>>0]|0)){n=c[W>>2]&18;break g}else{og(f);n=7;break g}}j:do if(c[J>>2]|0){if(!(a[V>>0]|0))la=64}else{do if(_>>>0>0|((_|0)==0?Z>>>0>(e[aa>>1]|0)>>>0:0))m=ba;else{m=c[ca>>2]|0;if(m|0){c[ca>>2]=c[m>>2];c[ha>>2]=(c[ha>>2]|0)+1;oa=m;la=65;break j}m=c[ga>>2]|0;if(!m){m=w;break}c[ga>>2]=c[m>>2];c[ha>>2]=(c[ha>>2]|0)+1;oa=m;la=65;break j}while(0);c[m>>2]=(c[m>>2]|0)+1;la=64}while(0);if((la|0)==64){oa=_d(f,Z,_)|0;la=65}if((la|0)==65?(la=0,oa|0):0){ew(oa|0,g|0,h|0)|0;a[oa+h>>0]=0;ud(ua,oa,ta)|0;m=oa;c[Y>>2]=g+((c[Y>>2]|0)-m);if(c[da>>2]|0){Xd(f,oa);break}do if((c[ia>>2]|0)>>>0<=m>>>0){if((c[x>>2]|0)>>>0<=m>>>0)break;c[oa>>2]=c[ca>>2];c[ca>>2]=oa;break i}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](oa);break}else{t=Wa[c[29352>>2]&127](oa)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](oa);break}}c[Y>>2]=X}else la=75;while(0);if((la|0)==75){la=0;ud(ua,g,ta)|0}if((c[R>>2]|0)==101)c[R>>2]=0;k:do if(a[U>>0]|0?(pa=c[ua>>2]|0,qa=pa+20|0,(c[qa>>2]|0)>0):0){q=pa+16|0;r=pa+24|0;s=pa+56|0;i=0;l:while(1){m=c[q>>2]|0;t=c[m+(i<<4)+4>>2]|0;do if(t|0){if(!(a[t+8>>0]|0)){m=Zb(t,0,0)|0;if((m|0)>=7)break l;switch(m|0){case 0:break;default:break k}o=c[t+4>>2]|0;c[o+4>>2]=c[t>>2];o=c[(c[o+12>>2]|0)+56>>2]|0;p=1;o=d[o+41>>0]<<16|d[o+40>>0]<<24|d[o+42>>0]<<8|d[o+43>>0];m=c[q>>2]|0}else{o=c[t+4>>2]|0;c[o+4>>2]=c[t>>2];o=c[(c[o+12>>2]|0)+56>>2]|0;p=0;o=d[o+41>>0]<<16|d[o+40>>0]<<24|d[o+42>>0]<<8|d[o+43>>0]}n=c[m+(i<<4)+12>>2]|0;if((o|0)!=(c[n>>2]|0)){o=n+78|0;b[o>>1]=b[o>>1]|8;o=(c[m+28>>2]|0)+78|0;b[o>>1]=b[o>>1]|8;c[r>>2]=c[r>>2]&-17;m:do if(!(c[s>>2]|0)){n=c[qa>>2]|0;if((n|0)<=0)break;o=0;while(1){m=c[m+(o<<4)+12>>2]|0;if(b[m+78>>1]&8){dh(m);n=c[qa>>2]|0}m=o+1|0;if((m|0)>=(n|0))break m;o=m;m=c[q>>2]|0}}while(0);c[R>>2]=17}if(!p)break;c[(c[t+4>>2]|0)+4>>2]=c[t>>2];if(cc(t,0)|0)break;bc(t,0)|0}while(0);i=i+1|0;if((i|0)>=(c[qa>>2]|0))break k}if((m|0)<3082)switch(m|0){case 7:break;default:break k}else switch(m|0){case 3082:break;default:break k}m=pa+81|0;if((a[m>>0]|0)==0?(a[pa+82>>0]|0)==0:0){a[m>>0]=1;if((c[pa+180>>2]|0)>0)c[pa+264>>2]=1;m=pa+272|0;c[m>>2]=(c[m>>2]|0)+1;m=c[pa+236>>2]|0;if(!m)break;c[m+12>>2]=7}}while(0);if(a[V>>0]|0)c[R>>2]=7;if(!$)c[l>>2]=c[Y>>2];t=c[R>>2]|0;s=(t|0)==0;n:do if(s?(ra=c[ea>>2]|0,ra|0):0){switch(a[ja>>0]|0){case 0:break n;case 2:{Wi(ra,4);m=12;n=8;break}default:{Wi(ra,8);m=8;n=0}}o=n;do{p=c[ea>>2]|0;if(!(a[(c[p>>2]|0)+81>>0]|0))yc((c[p+116>>2]|0)+((o-n|0)*40|0)|0,c[5696+(o<<2)>>2]|0,-1,1,0)|0;o=o+1|0}while(o>>>0>>0)}while(0);do if(!(a[fa>>0]|0)){r=c[ea>>2]|0;q=(c[Y>>2]|0)-ka|0;if(!r){m=0;la=155;break}a[r+148>>0]=v;if(y)c[r+208>>2]=0;o=c[r>>2]|0;p=Sv(q|0,((q|0)<0)<<31>>31|0,1,0)|0;i=L()|0;o:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))la=132;else m=0;else{do if(!(i>>>0>0|((i|0)==0?p>>>0>(e[o+276>>1]|0)>>>0:0))){n=o+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];la=o+284|0;c[la>>2]=(c[la>>2]|0)+1;la=133;break o}n=o+296|0;m=c[n>>2]|0;if(!m){m=o+292|0;break}else{c[n>>2]=c[m>>2];la=o+284|0;c[la>>2]=(c[la>>2]|0)+1;la=133;break o}}else m=o+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;la=132}while(0);if((la|0)==132){m=_d(o,p,i)|0;la=133}do if((la|0)==133){if(!m){m=0;break}ew(m|0,g|0,q|0)|0;a[m+q>>0]=0}while(0);c[r+188>>2]=m;la=136}else la=136;while(0);p:do if((la|0)==136){la=0;q=c[ea>>2]|0;m=q;if(!q){la=155;break}if(s?(a[V>>0]|0)==0:0){la=155;break}r=q+20|0;n=c[r>>2]|0;if((n|0)<832317811)switch(n|0){case 770837923:{la=140;break}default:{}}else switch(n|0){case 832317811:{la=140;break}default:{}}if((la|0)==140){la=0;kc(q)|0}p=c[q>>2]|0;kb(p,q);i=c[q+4>>2]|0;o=q+8|0;n=c[o>>2]|0;if(!i)c[p+4>>2]=n;else{c[i+8>>2]=n;n=c[o>>2]|0}if(n|0)c[n+4>>2]=i;c[r>>2]=1443283912;c[q>>2]=0;do if(p|0){if(c[p+480>>2]|0){Xd(p,q);break p}if((c[p+304>>2]|0)>>>0>m>>>0)break;if((c[p+308>>2]|0)>>>0<=m>>>0)break;r=p+300|0;c[q>>2]=c[r>>2];c[r>>2]=q;break p}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{r=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}while(0);if((la|0)==155){la=0;c[k>>2]=m}n=c[ta>>2]|0;q:do if(n){c[ya>>2]=n;Vb(f,t,31408,ya);if(c[da>>2]|0){Xd(f,n);break}m=n;do if((c[ia>>2]|0)>>>0<=m>>>0){if((c[x>>2]|0)>>>0<=m>>>0)break;c[n>>2]=c[ca>>2];c[ca>>2]=n;break q}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{s=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}else{c[z>>2]=t;if(!s){Ne(f,t);break}if(!(c[B>>2]|0))break;Ne(f,0)}while(0);m=c[A>>2]|0;if(!m){n=t;break}while(1){c[A>>2]=c[m+4>>2];r:do if(!(c[da>>2]|0)){n=m;do if((c[ia>>2]|0)>>>0<=n>>>0){if((c[x>>2]|0)>>>0<=n>>>0)break;c[m>>2]=c[ca>>2];c[ca>>2]=m;break r}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{s=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}else Xd(f,m);while(0);m=c[A>>2]|0;if(!m){n=t;break}}}while(0);o=c[ua>>2]|0;m=c[M>>2]|0;do if(m|0){if(o|0){if(c[o+480>>2]|0){Xd(o,m);break}t=m;if((c[o+304>>2]|0)>>>0<=t>>>0?(c[o+308>>2]|0)>>>0>t>>>0:0){t=o+300|0;c[m>>2]=c[t>>2];c[t>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{t=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);m=c[P>>2]|0;if(m|0)ri(o,m);if(o|0){t=o+272|0;c[t>>2]=(c[t>>2]|0)-(d[I>>0]|0)}switch(n|0){case 513:break;case 17:break d;default:{la=205;break c}}}if((c[C>>2]|0)==0?(sa=c[ma>>2]|0,(sa|0)>0):0){o=0;m=sa;do{n=c[(c[na>>2]|0)+(o<<4)+12>>2]|0;if(b[n+78>>1]&8){dh(n);m=c[ma>>2]|0}o=o+1|0}while((o|0)<(m|0))}if(!u)u=1;else{la=202;break}}if((la|0)==202)if(!(a[V>>0]|0)){ya=c[W>>2]&17;Ra=za;return ya|0}else{og(f);ya=7;Ra=za;return ya|0}else if((la|0)==205)if((n|0)==3082|(a[V>>0]|0)!=0){og(f);ya=7;Ra=za;return ya|0}else{ya=c[W>>2]&n;Ra=za;return ya|0}}else{if((m|0)<1266094736)switch(m|0){case -264537850:break;default:break b}else switch(m|0){case 1266094736:break;default:break b}c[o>>2]=38244;Db(21,38253,o);break a}while(0);c[n>>2]=50924;Db(21,38253,n)}while(0);c[p>>2]=58063;c[p+4>>2]=124395;c[p+8>>2]=31517;Db(21,32001,p);ya=21;Ra=za;return ya|0}function rd(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=Ra;Ra=Ra+16|0;n=o;k=c[b+348>>2]|0;if(!k){i=b+340|0;h=b+344|0}else{i=a[e>>0]|0;if(!(i<<24>>24))h=0;else{h=0;j=e;do{j=j+1|0;h=G(h+(d[208+(i&255)>>0]|0)|0,-1640531535)|0;i=a[j>>0]|0}while(i<<24>>24!=0)}h=(h>>>0)%((c[b+336>>2]|0)>>>0)|0;i=k+(h<<3)|0;h=k+(h<<3)+4|0}i=c[i>>2]|0;a:do if(!i)h=59292;else{m=d[208+(d[e>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;i=i+-1|0;k=c[h+12>>2]|0;l=a[k>>0]|0;j=(d[208+(l&255)>>0]|0)-m|0;if(!(l<<24>>24==0|(j|0)!=0)){l=e;do{k=k+1|0;l=l+1|0;p=a[k>>0]|0;j=(d[208+(p&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(p<<24>>24==0|(j|0)!=0))}if(!j)break a;if(!i){h=59292;break}}}while(0);if(!(c[h+8>>2]|0)){Hi(b,e,f,g,0)|0;h=0}else{c[n>>2]=58063;c[n+4>>2]=134381;c[n+8>>2]=31517;Db(21,32001,n);h=21}if(!(a[b+81>>0]|0)){p=c[b+68>>2]&h;Ra=o;return p|0}else{og(b);p=7;Ra=o;return p|0}return 0}function sd(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=Ra;Ra=Ra+16|0;o=p;l=c[b+348>>2]|0;if(!l){j=b+340|0;i=b+344|0}else{j=a[e>>0]|0;if(!(j<<24>>24))i=0;else{i=0;k=e;do{k=k+1|0;i=G(i+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}i=(i>>>0)%((c[b+336>>2]|0)>>>0)|0;j=l+(i<<3)|0;i=l+(i<<3)+4|0}j=c[j>>2]|0;a:do if(!j)i=59292;else{n=d[208+(d[e>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;j=j+-1|0;l=c[i+12>>2]|0;m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)-n|0;if(!(m<<24>>24==0|(k|0)!=0)){m=e;do{l=l+1|0;m=m+1|0;q=a[l>>0]|0;k=(d[208+(q&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(k|0)!=0))}if(!k)break a;if(!j){i=59292;break}}}while(0);if(!(c[i+8>>2]|0)){Hi(b,e,f,g,h)|0;i=0}else{c[o>>2]=58063;c[o+4>>2]=134381;c[o+8>>2]=31517;Db(21,32001,o);i=21}if(!(a[b+81>>0]|0))i=c[b+68>>2]&i;else{og(b);i=7}if(!((h|0)!=0&(i|0)!=0)){Ra=p;return i|0}ab[h&127](g);Ra=p;return i|0}function td(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+304|0;j=q+16|0;g=q;h=q+296|0;p=q+20|0;c[h>>2]=0;i=c[e+352>>2]|0;if(i|0?(m=i+12|0,(c[m>>2]|0)==0):0){l=c[i+4>>2]|0;gw(p+4|0,0,272)|0;n=p+200|0;a[n>>0]=1;c[p>>2]=e;c[p+132>>2]=1;if(((((ud(p,f,h)|0)==0?(k=c[p+228>>2]|0,(k|0)!=0):0)?(a[e+81>>0]|0)==0:0)?(c[k+12>>2]|0)==0:0)?(c[k+56>>2]|0)==0:0){g=l+4|0;if(!(c[g>>2]|0)){h=k+4|0;c[g>>2]=c[h>>2];f=k+42|0;b[l+42>>1]=b[f>>1]|0;j=k+36|0;g=l+36|0;c[g>>2]=c[g>>2]|c[j>>2]&96;b[f>>1]=0;c[h>>2]=0;if((c[j>>2]&32|0)!=0?(c[(c[c[(c[i>>2]|0)+4>>2]>>2]|0)+52>>2]|0)!=0:0){g=k+8|0;while(1){g=c[g>>2]|0;j=g+55|0;if(((d[j>>0]|d[j+1>>0]<<8)&3)==2)break;else g=g+20|0}g=(b[g+50>>1]|0)!=1&1}else g=0;f=k+8|0;h=c[f>>2]|0;if(h){c[l+8>>2]=h;c[f>>2]=0;c[h+12>>2]=l}}else g=0;c[m>>2]=1;l=g}else o=18;do if((o|0)==18){g=c[h>>2]|0;m=(g|0)==0;c[j>>2]=g;Vb(e,1,m?0:31408,j);if(!m){if(c[e+480>>2]|0){Xd(e,g);l=1;break}m=g;if((c[e+304>>2]|0)>>>0<=m>>>0?(c[e+308>>2]|0)>>>0>m>>>0:0){l=e+300|0;c[g>>2]=c[l>>2];c[l>>2]=g;l=1;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);l=1;break}else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);l=1;break}}else l=1}while(0);a[n>>0]=0;j=c[p+8>>2]|0;do if(j|0){k=j+20|0;g=c[k>>2]|0;if((g|0)<832317811)switch(g|0){case 770837923:{o=29;break}default:{}}else switch(g|0){case 832317811:{o=29;break}default:{}}if((o|0)==29)kc(j)|0;i=c[j>>2]|0;kb(i,j);h=c[j+4>>2]|0;f=j+8|0;g=c[f>>2]|0;if(!h)c[i+4>>2]=g;else{c[h+8>>2]=g;g=c[f>>2]|0}if(g|0)c[g+4>>2]=h;c[k>>2]=1443283912;c[j>>2]=0;if(i|0){if(c[i+480>>2]|0){Xd(i,j);break}o=j;if((c[i+304>>2]|0)>>>0<=o>>>0?(c[i+308>>2]|0)>>>0>o>>>0:0){o=i+300|0;c[j>>2]=c[o>>2];c[o>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{o=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);g=c[p+228>>2]|0;do if(g|0){if(e|0?c[e+480>>2]|0:0){Vi(e,g);break}n=g+32|0;o=(c[n>>2]|0)+-1|0;c[n>>2]=o;if(!o)Vi(e,g)}while(0);f=c[p>>2]|0;g=c[p+64>>2]|0;do if(g|0){if(f|0){if(c[f+480>>2]|0){Xd(f,g);break}o=g;if((c[f+304>>2]|0)>>>0<=o>>>0?(c[f+308>>2]|0)>>>0>o>>>0:0){o=f+300|0;c[g>>2]=c[o>>2];c[o>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{o=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=c[p+68>>2]|0;if(g|0)ri(f,g);g=p+24|0;if(f|0){p=f+272|0;c[p>>2]=(c[p>>2]|0)-(d[g>>0]|0)}a[g>>0]=0;if(!(a[e+81>>0]|0)){e=c[e+68>>2]&l;Ra=q;return e|0}else{og(e);e=7;Ra=q;return e|0}}c[e+64>>2]=21;Ne(e,21);c[g>>2]=58063;c[g+4>>2]=135056;c[g+8>>2]=31517;Db(21,32001,g);e=21;Ra=q;return e|0}function ud(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=Ra;Ra=Ra+1280|0;O=V+48|0;M=V+40|0;I=V+32|0;H=V+24|0;G=V+16|0;F=V+8|0;C=V+1272|0;D=V;E=V+1268|0;i=V+56|0;S=c[d>>2]|0;j=c[S+112>>2]|0;if(!(c[S+168>>2]|0))c[S+264>>2]=0;N=d+12|0;c[N>>2]=0;P=d+224|0;c[P>>2]=f;J=i+4|0;c[J>>2]=d;h=i+8|0;c[i>>2]=h;b[h>>1]=0;b[i+10>>1]=0;B=i+1208|0;c[B>>2]=i+1196;T=S+236|0;U=d+124|0;c[U>>2]=c[T>>2];c[T>>2]=d;k=Bi(f,E)|0;j=j-k|0;a:do if((j|0)>=0){w=S+264|0;x=d+188|0;y=d+192|0;z=i+8|0;v=D+4|0;u=C+4|0;l=-1;b:while(1){m=k;t=j;while(1){j=c[E>>2]|0;if((j|0)<=155){s=m;break}if(c[w>>2]|0){Q=10;break b}if((j|0)!=174){Q=13;break}f=f+m|0;j=Bi(f,E)|0;k=t-j|0;if((k|0)<0){Q=7;break a}else{m=j;t=k}}c:do if((Q|0)==13){Q=0;if(!(a[f>>0]|0)){switch(l|0){case 0:{j=f;break a}case 1:{j=0;break}default:j=1}c[E>>2]=j;s=0;break}switch(j|0){case 156:{j=f+6|0;d:while(1){j=j+(Bi(j,C)|0)|0;k=c[C>>2]|0;switch(k|0){case 174:break;case 59:case 110:case 111:case 156:case 157:{Q=23;break d}default:{Q=20;break d}}}do if((Q|0)==20){Q=0;if((k|0)>=95){j=59;break}if((b[5744+(k<<1)>>1]|0)!=59)if((k|0)==59)Q=25;else j=59;else Q=23}while(0);if((Q|0)==23)Q=25;do if((Q|0)==25){e:while(1){j=j+(Bi(j,C)|0)|0;k=c[C>>2]|0;switch(k|0){case 174:break;case 59:case 110:case 111:case 156:case 157:{Q=29;break e}default:{Q=27;break e}}}if((Q|0)==27?(Q=0,(k|0)<95):0)if((b[5744+(k<<1)>>1]|0)==59)Q=29;else{j=(k|0)==24?156:59;break}if((Q|0)==29){Q=0;c[C>>2]=59}j=59}while(0);c[E>>2]=j;s=m;break c}case 157:{f:do if((l|0)==23){j=f+4|0;g:while(1){j=j+(Bi(j,C)|0)|0;k=c[C>>2]|0;switch(k|0){case 174:break;case 59:case 110:case 111:case 156:case 157:break g;default:{Q=36;break g}}}do if((Q|0)==36){Q=0;if((k|0)<95?(b[5744+(k<<1)>>1]|0)==59:0)break;switch(k|0){case 22:case 59:{j=157;break f}default:{}}j=59;break f}while(0);j=157}else j=59;while(0);c[E>>2]=j;s=m;break c}case 158:{do if((l|0)==23){j=f+6|0;h:while(1){j=j+(Bi(j,C)|0)|0;k=c[C>>2]|0;switch(k|0){case 174:break;case 59:case 110:case 111:case 156:case 157:{Q=47;break h}default:{Q=45;break h}}}if((Q|0)==45?(Q=0,(k|0)<95):0)if((b[5744+(k<<1)>>1]|0)!=59)if((k|0)==22){j=158;break}else{Q=50;break}else Q=47;if((Q|0)==47)c[C>>2]=59;Q=50}else Q=50;while(0);if((Q|0)==50){Q=0;j=59}c[E>>2]=j;s=m;break c}default:{Q=52;break b}}}while(0);c[x>>2]=f;c[y>>2]=s;q=f;p=c[J>>2]|0;o=c[i>>2]|0;r=j&65535;k=b[o>>1]|0;while(1){n=k&65535;if((k&65535)<=540){l=e[5936+(n<<1)>>1]|0;m=r;while(1){j=m&65535;k=j+l|0;if(k>>>0<=2168?(b[7024+(k<<1)>>1]|0)==m<<16>>16:0){Q=64;break}if((m&65535)>=95){Q=60;break}j=b[5744+(j<<1)>>1]|0;if(!(j<<16>>16)){Q=60;break}else m=j}do if((Q|0)==60){Q=0;j=l+95|0;if(j>>>0<2169?!(m<<16>>16==0?1:(b[7024+(j<<1)>>1]|0)!=95):0){j=11376+(j<<1)|0;break}j=15664+(n<<1)|0}else if((Q|0)==64){Q=0;j=11376+(k<<1)|0}while(0);k=b[j>>1]|0}if((k&65535)<=1161){Q=68;break}k=$i(i,(k&65535)+-1162|0,f,s,p)|0;j=c[i>>2]|0;if(j>>>0<=h>>>0)break;else o=j}do if((Q|0)==68){Q=0;if((k&65535)>=1159){if(k<<16>>16==1160){c[i>>2]=o+-12;break}c[D>>2]=q;c[v>>2]=s;c[C>>2]=f;c[u>>2]=s;j=c[J>>2]|0;if(!(a[f>>0]|0))cd(j,49148,I);else{c[H>>2]=C;cd(j,38502,H)}c[J>>2]=j;aj(j,r,D);break}j=o+12|0;c[i>>2]=j;if(j>>>0<=(c[B>>2]|0)>>>0){b[j>>1]=(k&65535)>540?(k&65535)+378&65535:k;b[o+14>>1]=r;c[o+16>>2]=q;c[o+20>>2]=s;break}c[i>>2]=o;k=c[J>>2]|0;if(o>>>0>z>>>0?(c[i>>2]=o+-12,aj(k,b[o+2>>1]|0,o+4|0),A=c[i>>2]|0,A>>>0>z>>>0):0){j=A;do{r=c[J>>2]|0;c[i>>2]=j+-12;aj(r,b[j+2>>1]|0,j+4|0);j=c[i>>2]|0}while(j>>>0>z>>>0)}cd(k,38790,G);c[J>>2]=k}while(0);f=f+s|0;if(c[N>>2]|0){j=f;break a}l=c[E>>2]|0;k=Bi(f,E)|0;j=t-k|0;if((j|0)<0){Q=7;break a}}if((Q|0)==10){c[N>>2]=9;j=f;break}else if((Q|0)==52){c[F>>2]=m;c[F+4>>2]=f;cd(d,38428,F);j=f;break}}else Q=7;while(0);if((Q|0)==7){c[N>>2]=18;j=f}f=c[i>>2]|0;if(f>>>0>h>>>0)do{c[i>>2]=f+-12;aj(c[J>>2]|0,b[f+2>>1]|0,f+4|0);f=c[i>>2]|0}while(f>>>0>h>>>0);if(!(a[S+81>>0]|0)){h=c[N>>2]|0;switch(h|0){case 101:case 0:break;default:{K=h;Q=90}}}else{c[N>>2]=7;K=7;Q=90}if((Q|0)==90?(L=d+4|0,(c[L>>2]|0)==0):0){switch(K|0){case 516:{h=50738;break}case 100:{h=50760;break}default:{h=K&255;if(h>>>0<29?(520028155>>>h&1|0)!=0:0)h=c[22960+(h<<2)>>2]|0;else h=50724}}c[M>>2]=h;M=dd(S,31408,M)|0;c[L>>2]=M}h=d+4|0;f=c[h>>2]|0;if(!f)p=0;else{c[g>>2]=f;p=c[N>>2]|0;g=c[P>>2]|0;c[O>>2]=f;c[O+4>>2]=g;Db(p,38455,O);c[h>>2]=0;p=1}c[P>>2]=j;i=d+8|0;j=c[i>>2]|0;if((j|0?(c[d+36>>2]|0)>0:0)?(a[d+18>>0]|0)==0:0){k=c[j>>2]|0;kb(k,j);l=c[j+4>>2]|0;f=j+8|0;h=c[f>>2]|0;if(!l)c[k+4>>2]=h;else{c[l+8>>2]=h;h=c[f>>2]|0}if(h|0)c[h+4>>2]=l;c[j+20>>2]=1443283912;c[j>>2]=0;do if(k){if(c[k+480>>2]|0){Xd(k,j);break}P=j;if((c[k+304>>2]|0)>>>0<=P>>>0?(c[k+308>>2]|0)>>>0>P>>>0:0){P=k+300|0;c[j>>2]=c[P>>2];c[P>>2]=j}else Q=113}else Q=113;while(0);do if((Q|0)==113)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{Q=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);c[i>>2]=0}if(!(a[d+18>>0]|0)){h=d+108|0;f=c[h>>2]|0;do if(f|0){if(c[S+480>>2]|0){Xd(S,f);break}Q=f;if((c[S+304>>2]|0)>>>0<=Q>>>0?(c[S+308>>2]|0)>>>0>Q>>>0:0){Q=S+300|0;c[f>>2]=c[Q>>2];c[Q>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{Q=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);c[h>>2]=0;c[d+104>>2]=0}h=c[d+252>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{Q=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);f=d+200|0;h=a[f>>0]|0;if(!(h<<24>>24)){h=c[d+228>>2]|0;do if(h|0){if(c[S+480>>2]|0){Vi(S,h);break}P=h+32|0;Q=(c[P>>2]|0)+-1|0;c[P>>2]=Q;if(!Q)Vi(S,h)}while(0);h=a[f>>0]|0}do if((h&255)<=1?(R=c[d+236>>2]|0,R|0):0){Xi(S,c[R+28>>2]|0);h=c[R>>2]|0;do if(h|0){if(c[S+480>>2]|0){Xd(S,h);break}Q=h;if((c[S+304>>2]|0)>>>0<=Q>>>0?(c[S+308>>2]|0)>>>0>Q>>>0:0){Q=S+300|0;c[h>>2]=c[Q>>2];c[Q>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{Q=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);h=c[R+4>>2]|0;do if(h|0){if(c[S+480>>2]|0){Xd(S,h);break}Q=h;if((c[S+304>>2]|0)>>>0<=Q>>>0?(c[S+308>>2]|0)>>>0>Q>>>0:0){Q=S+300|0;c[h>>2]=c[Q>>2];c[Q>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{Q=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);h=c[R+12>>2]|0;if(h|0)ni(S,h);h=c[R+16>>2]|0;i:do if(h){k=h+4|0;f=c[h>>2]|0;if((c[k>>2]|0)>0){l=S+480|0;m=S+304|0;n=S+308|0;o=S+300|0;j=0;do{f=c[f+(j<<3)>>2]|0;j:do if(f|0){if(c[l>>2]|0){Xd(S,f);break}i=f;do if((c[m>>2]|0)>>>0<=i>>>0){if((c[n>>2]|0)>>>0<=i>>>0)break;c[f>>2]=c[o>>2];c[o>>2]=f;break j}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{Q=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);j=j+1|0;f=c[h>>2]|0}while((j|0)<(c[k>>2]|0))}k:do if(f){do if(S|0){i=S+480|0;if(!(c[i>>2]|0)){j=f;if((c[S+304>>2]|0)>>>0>j>>>0)break;if((c[S+308>>2]|0)>>>0<=j>>>0)break;Q=S+300|0;c[f>>2]=c[Q>>2];c[Q>>2]=f}else Xd(S,f);f=i;Q=187;break k}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);Q=185;break}else{Q=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);Q=185;break}}else Q=185;while(0);do if((Q|0)==185){if(!S)break;f=S+480|0;Q=187}while(0);do if((Q|0)==187){if(c[f>>2]|0){Xd(S,h);Q=196;break i}f=h;if((c[S+304>>2]|0)>>>0>f>>>0)break;if((c[S+308>>2]|0)>>>0<=f>>>0)break;Q=S+300|0;c[h>>2]=c[Q>>2];c[Q>>2]=h;Q=196;break i}while(0);do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{P=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-P;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);if(!S)h=R;else{h=R;Q=198}}else Q=196;while(0);if((Q|0)==196){h=R;Q=198}if((Q|0)==198){if(c[S+480>>2]|0){Xd(S,h);break}Q=R;if((c[S+304>>2]|0)>>>0<=Q>>>0?(c[S+308>>2]|0)>>>0>Q>>>0:0){Q=S+300|0;c[R>>2]=c[Q>>2];c[Q>>2]=R;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);n=c[d+268>>2]|0;do if(n|0){l:do if((c[n>>2]|0)>0){j=S+480|0;k=S+304|0;l=S+308|0;m=S+300|0;if(!S){f=0;while(1){h=c[n+8+(f<<4)+4>>2]|0;if(h|0)ri(0,h);h=c[n+8+(f<<4)+8>>2]|0;if(h|0)pi(0,h,1);h=c[n+8+(f<<4)>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);f=f+1|0;if((f|0)>=(c[n>>2]|0))break l}}i=0;do{h=c[n+8+(i<<4)+4>>2]|0;if(h|0)ri(S,h);h=c[n+8+(i<<4)+8>>2]|0;if(h|0)pi(S,h,1);h=c[n+8+(i<<4)>>2]|0;m:do if(h|0){if(c[j>>2]|0){Xd(S,h);break}f=h;do if((c[k>>2]|0)>>>0<=f>>>0){if((c[l>>2]|0)>>>0<=f>>>0)break;c[h>>2]=c[m>>2];c[m>>2]=h;break m}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);i=i+1|0}while((i|0)<(c[n>>2]|0))}while(0);if(S|0){if(c[S+480>>2]|0){Xd(S,n);break}R=n;if((c[S+304>>2]|0)>>>0<=R>>>0?(c[S+308>>2]|0)>>>0>R>>>0:0){R=S+300|0;c[n>>2]=c[R>>2];c[R>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{R=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);h=c[d+216>>2]|0;do if(h|0){if(S|0){if(c[S+480>>2]|0){Xd(S,h);break}R=h;if((c[S+304>>2]|0)>>>0<=R>>>0?(c[S+308>>2]|0)>>>0>R>>>0:0){R=S+300|0;c[h>>2]=c[R>>2];c[R>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);m=d+112|0;h=c[m>>2]|0;n:do if(h|0){i=S+480|0;j=S+304|0;k=S+308|0;l=S+300|0;if(!S)while(1){c[m>>2]=c[h>>2];if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}h=c[m>>2]|0;if(!h)break n}do{c[m>>2]=c[h>>2];o:do if(!(c[i>>2]|0)){f=h;do if((c[j>>2]|0)>>>0<=f>>>0){if((c[k>>2]|0)>>>0<=f>>>0)break;c[h>>2]=c[l>>2];c[l>>2]=h;break o}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{R=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(S,h);while(0);h=c[m>>2]|0}while((h|0)!=0)}while(0);i=d+256|0;h=c[i>>2]|0;if(!h){S=c[U>>2]|0;c[T>>2]=S;c[U>>2]=0;Ra=V;return p|0}f=S+480|0;if(!S){do{f=c[h+76>>2]|0;c[i>>2]=f;d=h+32|0;S=(c[d>>2]|0)+-1|0;c[d>>2]=S;if(!S){Vi(0,h);h=c[i>>2]|0}else h=f}while((h|0)!=0);S=c[U>>2]|0;c[T>>2]=S;c[U>>2]=0;Ra=V;return p|0}do{c[i>>2]=c[h+76>>2];if(!((c[f>>2]|0)==0?(R=h+32|0,d=(c[R>>2]|0)+-1|0,c[R>>2]=d,(d|0)!=0):0))Vi(S,h);h=c[i>>2]|0}while((h|0)!=0);S=c[U>>2]|0;c[T>>2]=S;c[U>>2]=0;Ra=V;return p|0}function vd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=Ra;Ra=Ra+48|0;f=i+32|0;h=i+16|0;g=i;c[g>>2]=e;do if((d|0)==1){d=c[b+352>>2]|0;if(!d){c[h>>2]=58063;c[h+4>>2]=135531;c[h+8>>2]=31517;Db(21,32001,h);break}b=(c[g>>2]|0)+(4-1)&~(4-1);h=c[b>>2]|0;c[g>>2]=b+4;a[(c[d>>2]|0)+16>>0]=h;h=0;Ra=i;return h|0}else{c[f>>2]=58063;c[f+4>>2]=135539;c[f+8>>2]=31517;Db(21,32001,f)}while(0);c[b+64>>2]=21;Ne(b,21);h=21;Ra=i;return h|0}function wd(d){d=d|0;var f=0,g=0,h=0;a:do if(!d)f=ob(40,0)|0;else{if(c[d+272>>2]|0){if(a[d+81>>0]|0){d=0;return d|0}}else{do if((e[d+276>>1]|0)>=40){g=d+300|0;f=c[g>>2]|0;if(f|0){c[g>>2]=c[f>>2];h=d+284|0;c[h>>2]=(c[h>>2]|0)+1;break a}g=d+296|0;f=c[g>>2]|0;if(!f){f=d+292|0;break}else{c[g>>2]=c[f>>2];h=d+284|0;c[h>>2]=(c[h>>2]|0)+1;break a}}else f=d+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(d,40,0)|0}while(0);if(!f){d=0;return d|0}g=f;h=g+40|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));b[f+8>>1]=1;c[f+32>>2]=d;d=f;return d|0}function xd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+48|0;g=h+40|0;f=h+32|0;e=h+16|0;d=h;if(c[7380]|0){c[e>>2]=58063;c[e+4>>2]=154986;c[e+8>>2]=31517;Db(21,32001,e);b=21;Ra=h;return b|0}c[d>>2]=b;do switch(a|0){case 4:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7335]=c[a>>2];c[7336]=c[a+4>>2];c[7337]=c[a+8>>2];c[7338]=c[a+12>>2];c[7339]=c[a+16>>2];c[7340]=c[a+20>>2];c[7341]=c[a+24>>2];c[7342]=c[a+28>>2];a=0;break}case 5:{if(!(c[7335]|0)){c[f>>2]=30308;xd(4,f)|0}b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[a>>2]=c[7335];c[a+4>>2]=c[7336];c[a+8>>2]=c[7337];c[a+12>>2]=c[7338];c[a+16>>2]=c[7339];c[a+20>>2]=c[7340];c[a+24>>2]=c[7341];c[a+28>>2]=c[7342];a=0;break}case 9:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7324]=a;a=0;break}case 27:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7329]=a;a=0;break}case 7:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7374]=a;a=(c[d>>2]|0)+(4-1)&~(4-1);b=c[a>>2]|0;c[d>>2]=a+4;c[7375]=b;b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7376]=a;a=0;break}case 24:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[a>>2]=160;a=0;break}case 14:{a=0;break}case 15:{a=1;break}case 18:{a=(c[d>>2]|0)+(4-1)&~(4-1);e=c[a>>2]|0;c[d>>2]=a+4;a=29408;d=e;e=a+52|0;do{c[a>>2]=c[d>>2];a=a+4|0;d=d+4|0}while((a|0)<(e|0));a=0;break}case 19:{if(!(c[7354]|0)){c[g>>2]=30340;xd(18,g)|0}e=(c[d>>2]|0)+(4-1)&~(4-1);a=c[e>>2]|0;c[d>>2]=e+4;d=29408;e=a+52|0;do{c[a>>2]=c[d>>2];a=a+4|0;d=d+4|0}while((a|0)<(e|0));a=0;break}case 13:{a=(c[d>>2]|0)+(4-1)&~(4-1);b=c[a>>2]|0;c[d>>2]=a+4;c[7332]=b;b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7333]=a;a=0;break}case 16:{a=(c[d>>2]|0)+(4-1)&~(4-1);b=c[a>>2]|0;c[d>>2]=a+4;c[7387]=b;b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7388]=a;a=0;break}case 17:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7327]=a;a=0;break}case 20:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7328]=a;a=0;break}case 22:{c[d>>2]=((c[d>>2]|0)+(8-1)&~(8-1))+8;c[d>>2]=((c[d>>2]|0)+(8-1)&~(8-1))+8;c[7370]=0;c[7371]=0;c[7372]=0;c[7373]=0;a=0;break}case 25:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7379]=a;a=0;break}case 26:{b=(c[d>>2]|0)+(4-1)&~(4-1);a=c[b>>2]|0;c[d>>2]=b+4;c[7334]=a;a=0;break}default:a=1}while(0);b=a;Ra=h;return b|0}function yd(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+16|0;h=n;c[h>>2]=f;do switch(e|0){case 1e3:{l=(c[h>>2]|0)+(4-1)&~(4-1);m=c[l>>2]|0;c[h>>2]=l+4;c[c[b+16>>2]>>2]=m;m=0;Ra=n;return m|0}case 1001:{j=(c[h>>2]|0)+(4-1)&~(4-1);k=c[j>>2]|0;c[h>>2]=j+4;j=(c[h>>2]|0)+(4-1)&~(4-1);l=c[j>>2]|0;c[h>>2]=j+4;j=(c[h>>2]|0)+(4-1)&~(4-1);m=c[j>>2]|0;c[h>>2]=j+4;m=zd(b,k,l,m)|0;Ra=n;return m|0}case 1002:{k=0;break}case 1003:{k=1;break}case 1004:{k=2;break}case 1005:{k=3;break}case 1006:{k=4;break}case 1007:{k=5;break}case 1008:{k=6;break}case 1009:{k=7;break}case 1010:{k=8;break}case 1011:{k=9;break}default:{m=1;Ra=n;return m|0}}while(0);j=(c[h>>2]|0)+(4-1)&~(4-1);e=c[j>>2]|0;c[h>>2]=j+4;j=(c[h>>2]|0)+(4-1)&~(4-1);l=c[j>>2]|0;c[h>>2]=j+4;j=b+32|0;i=j;h=c[i>>2]|0;i=c[i+4>>2]|0;if((e|0)<=0)if(!e){e=h&~c[2208+(k<<3)+4>>2];f=i;m=17}else{e=h;f=i}else{e=h|c[2208+(k<<3)+4>>2];f=i;m=17}if((m|0)==17){m=j;c[m>>2]=e;c[m+4>>2]=f}if(!((h|0)==(e|0)&(i|0)==(f|0))?(g=c[b+4>>2]|0,g|0):0)do{m=g+149|0;b=(d[m>>0]|d[m+1>>0]<<8)&-4|1;a[m>>0]=b;a[m+1>>0]=b>>8;g=c[g+8>>2]|0}while((g|0)!=0);if(!l){m=0;Ra=n;return m|0}c[l>>2]=(0?1:(c[j>>2]&c[2208+(k<<3)+4>>2]|0)!=0)&1;m=0;Ra=n;return m|0}function zd(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=d+296|0;h=c[q>>2]|0;if(!h)i=0;else{i=0;do{h=c[h>>2]|0;i=i+1|0}while((h|0)!=0)}p=d+300|0;h=c[p>>2]|0;if(!h)h=0;else{j=0;do{h=c[h>>2]|0;j=j+1|0}while((h|0)!=0);h=j}m=d+280|0;if(((c[m>>2]|0)-(h+i)|0)>0){e=5;return e|0}n=d+272|0;o=d+278|0;do if(a[o>>0]|0?(k=c[d+304>>2]|0,k|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{l=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);l=f&-8;k=(l|0)<5?0:l;i=(g|0)>0?g:0;if(!((g|0)<1|(k|0)==0))if(!e){h=Yv(k|0,((k|0)<0)<<31>>31|0,i|0,0)|0;g=Sv(h|0,L()|0,-1,-1)|0;f=L()|0;do if(!(f>>>0>0|(f|0)==0&g>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](h)|0;break}f=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;j=59064;h=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&h>>>0>0){g=c[14978]|0;j=Tv(h|0,j|0,f|0,((f|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&j>>>0<=g>>>0)&1}j=Wa[c[29340>>2]&127](f)|0;if(j){h=Wa[c[29352>>2]&127](j)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}else j=0}else j=0;while(0);if(!j)h=0;else{h=j;i=(Wa[c[29352>>2]&127](j)|0)/(l|0)|0}}else h=e;else{h=0;k=0}j=d+304|0;c[j>>2]=h;c[q>>2]=0;c[p>>2]=0;b[d+276>>1]=k;if(!h){c[j>>2]=d;c[d+308>>2]=d;c[n>>2]=1;a[o>>0]=0;c[m>>2]=0;e=0;return e|0}c[m>>2]=i;if((i|0)>0){j=0;while(1){c[h>>2]=j;f=h+k|0;j=h;if((i|0)<=1)break;else{h=f;i=i+-1|0}}c[q>>2]=h;h=f}c[d+308>>2]=h;c[n>>2]=0;a[o>>0]=(e|0)==0&1;e=0;return e|0}function Ad(a){a=a|0;return c[a+100>>2]|0}function Bd(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+32|0;o=p+24|0;g=p+8|0;f=p;if(!b){o=0;Ra=p;return o|0}n=b+96|0;e=c[n>>2]|0;a:do if((e|0)>=-264537850)if((e|0)<1266094736)switch(e|0){case -264537850:break a;default:{h=3;break a}}else switch(e|0){case 1266094736:break a;default:{h=3;break a}}else switch(e|0){case -1607883113:break;default:h=3}while(0);if((h|0)==3){c[f>>2]=50924;Db(21,38253,f);c[g>>2]=58063;c[g+4>>2]=155713;c[g+8>>2]=31517;Db(21,32001,g);o=21;Ra=p;return o|0}if(!(a[b+88>>0]&8)){Bp(b);e=b+356|0;k=c[e>>2]|0;if(k|0){c[e>>2]=0;i=b+332|0;if((c[i>>2]|0)>0){h=0;do{j=c[k+(h<<2)>>2]|0;g=j+8|0;e=c[g>>2]|0;if(e|0?(m=c[(c[e>>2]|0)+68>>2]|0,m|0):0)Wa[m&127](e)|0;c[j+20>>2]=0;f=c[j>>2]|0;e=j+12|0;l=(c[e>>2]|0)+-1|0;c[e>>2]=l;do if(!l){e=c[g>>2]|0;if(e|0)Wa[c[(c[e>>2]|0)+16>>2]&127](e)|0;if(f|0){if(c[f+480>>2]|0){Xd(f,j);break}l=j;if((c[f+304>>2]|0)>>>0<=l>>>0?(c[f+308>>2]|0)>>>0>l>>>0:0){l=f+300|0;c[j>>2]=c[l>>2];c[l>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{l=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);h=h+1|0}while((h|0)<(c[i>>2]|0))}do if(!(c[b+480>>2]|0)){m=k;if((c[b+304>>2]|0)>>>0<=m>>>0?(c[b+308>>2]|0)>>>0>m>>>0:0){m=b+300|0;c[k>>2]=c[m>>2];c[m>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{m=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else Xd(b,k);while(0);c[i>>2]=0}}else{Za[c[b+196>>2]&127](8,c[b+200>>2]|0,b,0)|0;Bp(b);e=b+356|0;k=c[e>>2]|0;if(k|0){c[e>>2]=0;i=b+332|0;if((c[i>>2]|0)>0){h=0;do{j=c[k+(h<<2)>>2]|0;f=j+8|0;e=c[f>>2]|0;if(e|0?(l=c[(c[e>>2]|0)+68>>2]|0,l|0):0)Wa[l&127](e)|0;c[j+20>>2]=0;g=c[j>>2]|0;e=j+12|0;m=(c[e>>2]|0)+-1|0;c[e>>2]=m;do if(!m){e=c[f>>2]|0;if(e|0)Wa[c[(c[e>>2]|0)+16>>2]&127](e)|0;if(g|0){if(c[g+480>>2]|0){Xd(g,j);break}m=j;if((c[g+304>>2]|0)>>>0<=m>>>0?(c[g+308>>2]|0)>>>0>m>>>0:0){m=g+300|0;c[j>>2]=c[m>>2];c[m>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{m=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);h=h+1|0}while((h|0)<(c[i>>2]|0))}do if(!(c[b+480>>2]|0)){m=k;if((c[b+304>>2]|0)>>>0<=m>>>0?(c[b+308>>2]|0)>>>0>m>>>0:0){m=b+300|0;c[k>>2]=c[m>>2];c[m>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{m=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else Xd(b,k);while(0);c[i>>2]=0}}b:do if(!d){c:do if(!(c[b+4>>2]|0)){f=c[b+20>>2]|0;if((f|0)<=0)break b;g=c[b+16>>2]|0;e=0;while(1){d=c[g+(e<<4)+4>>2]|0;if(d|0?c[d+16>>2]|0:0)break c;e=e+1|0;if((e|0)>=(f|0))break b}}while(0);Vb(b,5,50150,o);o=5;Ra=p;return o|0}while(0);c[n>>2]=1691352191;fc(b);o=0;Ra=p;return o|0}function Cd(a){a=a|0;return Bd(a,1)|0}function Dd(a,b,d){a=a|0;b=b|0;d=d|0;if(((b*1e3|0)+1e3|0)>(c[a+448>>2]|0)){d=0;return d|0}d=c[a>>2]|0;Xa[c[d+60>>2]&255](d,1e6)|0;d=1;return d|0}function Ed(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;d=Hd(b,d,e,f,g,h,i,j,0,0,0)|0;if((d|0)==3082|(a[b+81>>0]|0)!=0){og(b);b=7;return b|0}else{b=c[b+68>>2]&d;return b|0}return 0}function Fd(a,b,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0;do if(l){m=ob(12,0)|0;if(!m){Fc(a);ab[l&127](f);b=1;break}c[m>>2]=0;c[m+4>>2]=l;c[m+8>>2]=f;b=Hd(a,b,d,e,f,g,h,i,j,k,m)|0;if(!(c[m>>2]|0)){ab[l&127](f);qb(m)}}else b=Hd(a,b,d,e,f,g,h,i,j,k,0)|0;while(0);return ic(a,b)|0}function Gd(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return Fd(a,b,c,d,e,f,g,h,0,0,i)|0}function Hd(b,e,f,g,h,i,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0;s=Ra;Ra=Ra+32|0;p=s+16|0;o=s;if((((e|0?(r=(i|0)!=0,!(r&(k|0)!=0)):0)?!((j|0)==0^(k|0)==0):0)?!((f+1|0)>>>0>128|(l|0)==0^(m|0)==0):0)?((Eu(e)|0)&1073741568|0)==0:0){q=g&2048;switch(g&7){case 4:{o=2;break}case 5:{o=Hd(b,e,f,q|1,h,i,j,k,l,m,n)|0;if(o|0){m=o;Ra=s;return m|0}o=Hd(b,e,f,q|2,h,i,j,k,l,m,n)|0;if(!o)o=3;else{m=o;Ra=s;return m|0}break}default:o=g&7}g=o&255;t=Jd(b,e,f,g,0)|0;if((t|0?(c[t+4>>2]&3|0)==(o|0):0)?(a[t>>0]|0)==(f|0):0){if(c[b+168>>2]|0){Vb(b,5,50805,p);t=5;Ra=s;return t|0}o=c[b+4>>2]|0;if(o|0)do{t=o+149|0;p=(d[t>>0]|d[t+1>>0]<<8)&-4|1;a[t>>0]=p;a[t+1>>0]=p>>8;o=c[o+8>>2]|0}while((o|0)!=0)}o=Jd(b,e,f,g,1)|0;if(!o){t=7;Ra=s;return t|0}g=o+36|0;p=c[g>>2]|0;do if(p|0?(t=(c[p>>2]|0)+-1|0,c[p>>2]=t,(t|0)==0):0){ab[c[p+4>>2]&127](c[p+8>>2]|0);if(b|0){if(c[b+480>>2]|0){Xd(b,p);break}t=p;if((c[b+304>>2]|0)>>>0<=t>>>0?(c[b+308>>2]|0)>>>0>t>>>0:0){t=b+300|0;c[p>>2]=c[t>>2];c[t>>2]=p;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{t=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);if(n|0)c[n>>2]=(c[n>>2]|0)+1;c[g>>2]=n;t=o+4|0;c[t>>2]=c[t>>2]&3|q;c[o+16>>2]=r?i:j;c[o+20>>2]=k;c[o+24>>2]=l;c[o+28>>2]=m;c[o+8>>2]=h;a[o>>0]=f;t=0;Ra=s;return t|0}c[o>>2]=58063;c[o+4>>2]=156338;c[o+8>>2]=31517;Db(21,32001,o);t=21;Ra=s;return t|0}function Id(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=Ra;Ra=Ra+16|0;if(Jd(b,d,e,1,0)|0){b=0;Ra=j;return b|0}i=Bb(d,j)|0;if(!i){b=7;Ra=j;return b|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](12)|0;if(!f)h=14;else{g=f;h=23}}else{f=Wa[c[29356>>2]&127](12)|0;if((c[14985]|0)>>>0<12)c[14985]=12;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){k=c[14978]|0;h=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=k>>>0)&1}g=Wa[c[29340>>2]&127](f)|0;if(g){f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0){c[14987]=f;h=23}else h=23}else h=14}do if((h|0)==14){f=b+81|0;if((a[f>>0]|0)==0?(a[b+82>>0]|0)==0:0){a[f>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;f=b+272|0;c[f>>2]=(c[f>>2]|0)+1;f=c[b+236>>2]|0;if(f|0)c[f+12>>2]=7}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);f=1;break}else{f=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);f=1;break}}else if((h|0)==23){c[g>>2]=0;c[g+4>>2]=90;c[g+8>>2]=i;f=Hd(b,d,e,1,i,174,0,0,0,0,g)|0;if(!(c[g>>2]|0)){if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{k=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{k=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}}while(0);if((f|0)==3082|(a[b+81>>0]|0)!=0){og(b);k=7;Ra=j;return k|0}else{k=c[b+68>>2]&f;Ra=j;return k|0}return 0}function Jd(b,f,g,h,i){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if(!f)t=0;else t=(Eu(f)|0)&1073741823;u=b+364|0;m=c[b+376>>2]|0;if(!m){k=b+368|0;j=b+372|0}else{k=a[f>>0]|0;if(!(k<<24>>24))j=0;else{j=0;l=f;do{l=l+1|0;j=G(j+(d[208+(k&255)>>0]|0)|0,-1640531535)|0;k=a[l>>0]|0}while(k<<24>>24!=0)}j=(j>>>0)%((c[u>>2]|0)>>>0)|0;k=m+(j<<3)|0;j=m+(j<<3)+4|0}k=c[k>>2]|0;a:do if(!k)j=59292;else{o=d[208+(d[f>>0]|0)>>0]|0;while(1){j=c[j>>2]|0;k=k+-1|0;m=c[j+12>>2]|0;n=a[m>>0]|0;l=(d[208+(n&255)>>0]|0)-o|0;if(!(n<<24>>24==0|(l|0)!=0)){n=f;do{m=m+1|0;n=n+1|0;v=a[m>>0]|0;l=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(l|0)!=0))}if(!l)break a;if(!k){j=59292;break}}}while(0);j=c[j+8>>2]|0;b:do if(!j){l=0;j=0}else{o=h&255;if((g|0)==-2){l=0;k=0;while(1){o=(c[j+16>>2]|0)==0?0:6;v=(o|0)>(k|0);k=v?o:k;l=v?j:l;j=c[j+12>>2]|0;if(!j){j=k;break b}}}l=0;n=0;while(1){v=a[j>>0]|0;k=v<<24>>24;do if(!(v<<24>>24>-1&(k|0)!=(g|0))){k=(k|0)==(g|0)?4:1;m=c[j+4>>2]|0;if((m&3|0)==(o|0)){k=k|2;break}else{k=((m&o)>>>1&1)+k|0;break}}else k=0;while(0);v=(k|0)>(n|0);k=v?k:n;l=v?j:l;j=c[j+12>>2]|0;if(!j){j=k;break}else n=k}}while(0);c:do if(!(i<<24>>24)){if(l|0?(c[b+24>>2]&2|0)==0:0){q=l;r=0;o=94;break}o=d[208+(d[f>>0]|0)>>0]|0;j=c[59088+((((t+o|0)>>>0)%23|0)<<2)>>2]|0;if(j){while(1){m=c[j+32>>2]|0;v=a[m>>0]|0;k=(d[208+(v&255)>>0]|0)-o|0;if(!(v<<24>>24==0|(k|0)!=0)){n=f;do{m=m+1|0;n=n+1|0;v=a[m>>0]|0;k=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(k|0)!=0))}if(!k)break;j=c[j+36>>2]|0;if(!j){j=0;o=46;break c}}if(!j){j=0;o=46}else{o=h&255;if((g|0)==-2){k=0;while(1){o=(c[j+16>>2]|0)==0?0:6;v=(o|0)>(k|0);k=v?o:k;l=v?j:l;j=c[j+12>>2]|0;if(!j){j=k;o=46;break c}}}n=0;while(1){v=a[j>>0]|0;k=v<<24>>24;do if(!(v<<24>>24>-1&(k|0)!=(g|0))){k=(k|0)==(g|0)?4:1;m=c[j+4>>2]|0;if((m&3|0)==(o|0)){k=k|2;break}else{k=((m&o)>>>1&1)+k|0;break}}else k=0;while(0);v=(k|0)>(n|0);k=v?k:n;l=v?j:l;j=c[j+12>>2]|0;if(!j){j=k;o=46;break}else n=k}}}else{p=l;s=0;o=93}}else o=46;while(0);d:do if((o|0)==46){k=i<<24>>24!=0;if(k&(j|0)<6){n=t+41|0;i=(b|0)==0;e:do if(i){v=Sv(n|0,0,-1,-1)|0;m=L()|0;if(m>>>0>0|(m|0)==0&v>>>0>2147483390)break d;if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](n)|0;o=71;break}j=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){v=c[14978]|0;m=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=v>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k)break d;j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;m=k}else m=k}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0)break d}else{do if(!(0<0|(0==0?(e[b+276>>1]|0)>>>0>>0:0))){k=b+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];o=b+284|0;c[o>>2]=(c[o>>2]|0)+1;o=71;break e}k=b+296|0;j=c[k>>2]|0;if(!j){j=b+292|0;break}else{c[k>>2]=c[j>>2];o=b+284|0;c[o>>2]=(c[o>>2]|0)+1;o=71;break e}}else j=b+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(b,n,0)|0;o=71}while(0);if((o|0)==71)if(!j)break;else m=j;gw(m|0,0,n|0)|0;j=m+40|0;l=m+32|0;c[l>>2]=j;a[m>>0]=g;c[m+4>>2]=h&255;ew(j|0,f|0,t+1|0)|0;k=a[j>>0]|0;if(k<<24>>24){do{a[j>>0]=a[208+(k&255)>>0]|0;j=j+1|0;k=a[j>>0]|0}while(k<<24>>24!=0);j=c[l>>2]|0}j=mi(u,j,m)|0;if((j|0)!=(m|0)){c[m+12>>2]=j;v=m;return v|0}do if(!i){if(c[b+480>>2]|0){Xd(b,m);break}v=m;if((c[b+304>>2]|0)>>>0<=v>>>0?(c[b+308>>2]|0)>>>0>v>>>0:0){v=b+300|0;c[m>>2]=c[v>>2];c[v>>2]=m}else o=83}else o=83;while(0);do if((o|0)==83)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{v=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);j=b+81|0;if(a[j>>0]|0){v=0;return v|0}if(a[b+82>>0]|0){v=0;return v|0}a[j>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;j=b+272|0;c[j>>2]=(c[j>>2]|0)+1;j=c[b+236>>2]|0;if(!j){v=0;return v|0}c[j+12>>2]=7;v=0;return v|0}else{p=l;s=k;o=93}}while(0);if((o|0)==93?p|0:0){q=p;r=s;o=94}if((o|0)==94?r|(c[q+16>>2]|0)!=0:0){v=q;return v|0}v=0;return v|0}function Kd(a,b,d){a=a|0;b=b|0;d=d|0;d=Ra;Ra=Ra+16|0;b=d;c[b>>2]=c[(c[a+4>>2]|0)+8>>2];b=Bb(50868,b)|0;c[a+20>>2]=1;yc(c[a>>2]|0,b,-1,1,-1)|0;if(!b){Ra=d;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);Ra=d;return}else{a=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);Ra=d;return}}function Ld(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)>(d|0))return 0;Md(b,c,0,0,0)|0;return 0}function Md(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=Ra;Ra=Ra+16|0;o=q;if(g|0)c[g>>2]=-1;if(h|0)c[h>>2]=-1;if(f>>>0>3){b=21;Ra=q;return b|0}if((e|0)!=0?(i=a[e>>0]|0,i<<24>>24!=0):0){n=c[b+20>>2]|0;j=n+-1|0;a:do if((n|0)>0){n=208+(i&255)|0;i=j;m=(c[b+16>>2]|0)+(j<<4)|0;while(1){k=c[m>>2]|0;if(k|0){l=a[k>>0]|0;j=(d[208+(l&255)>>0]|0)-(d[n>>0]|0)|0;if(!(l<<24>>24==0|(j|0)!=0)){l=e;do{k=k+1|0;l=l+1|0;r=a[k>>0]|0;j=(d[208+(r&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(j|0)!=0))}if(!j)break a}if(!i)break;j=i+-1|0;if((i|0)>0){i=j;m=m+-16|0}else{i=j;break a}}i=109-(d[n>>0]|0)|0;if(!i){j=e;k=50919;do{k=k+1|0;j=j+1|0;r=a[k>>0]|0;i=(d[208+(r&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(i|0)!=0))}i=((i|0)!=0)<<31>>31}else i=j;while(0);if((i|0)<0){c[o>>2]=e;Vb(b,1,31432,o);i=1}else p=23}else{i=10;p=23}do if((p|0)==23){c[b+404>>2]=0;i=Nd(b,i,f,g,h)|0;c[b+64>>2]=i;if(i|0){Ne(b,i);break}if(!(c[b+260>>2]|0))i=0;else{Ne(b,0);i=0}}while(0);if((i|0)==3082|(a[b+81>>0]|0)!=0){og(b);i=7}else i=c[b+68>>2]&i;if(c[b+168>>2]|0){r=i;Ra=q;return r|0}c[b+264>>2]=0;r=i;Ra=q;return r|0}function Nd(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=b+20|0;k=c[o>>2]|0;if((k|0)<=0){n=0;o=0;f=1;n=(n|0)!=0;n=f&n;o=n?5:o;return o|0}n=b+16|0;m=(f|0)==0;if((e|0)==10){b=c[(c[n>>2]|0)+4>>2]|0;if(b){i=c[b+4>>2]|0;l=c[b>>2]|0;c[i+4>>2]=l;if(!(a[i+20>>0]|0)){i=c[i>>2]|0;j=c[i+216>>2]|0;if(!j)b=0;else{if(m)b=0;else b=c[i+176>>2]|0;b=Qf(j,l,f,b,c[i+180>>2]|0,d[i+11>>0]|0,c[i+152>>2]|0,c[i+208>>2]|0,g,h)|0;k=c[o>>2]|0}}else b=6}else b=0;j=(b|0)==5;i=j?0:b;j=j&1;b=(i|0)==0;if(!(b&(k|0)>1)){n=j;o=i;f=b;n=(n|0)!=0;n=f&n;o=n?5:o;return o|0}h=1;do{b=c[(c[n>>2]|0)+(h<<4)+4>>2]|0;if(b){i=c[b+4>>2]|0;g=c[b>>2]|0;c[i+4>>2]=g;if(!(a[i+20>>0]|0)){i=c[i>>2]|0;l=c[i+216>>2]|0;if(!l)b=0;else{if(m)b=0;else b=c[i+176>>2]|0;b=Qf(l,g,f,b,c[i+180>>2]|0,d[i+11>>0]|0,c[i+152>>2]|0,c[i+208>>2]|0,0,0)|0;k=c[o>>2]|0}}else b=6}else b=0;e=(b|0)==5;i=e?0:b;j=e?1:j;h=h+1|0;b=(i|0)==0}while(b&(h|0)<(k|0));o=(j|0)!=0;o=b&o;o=o?5:i;return o|0}if(m){m=0;j=0;while(1){if((m|0)==(e|0)){b=c[(c[n>>2]|0)+(e<<4)+4>>2]|0;if(b){i=c[b+4>>2]|0;l=c[b>>2]|0;c[i+4>>2]=l;if(!(a[i+20>>0]|0)){b=c[i>>2]|0;i=c[b+216>>2]|0;if(!i)b=0;else{b=Qf(i,l,0,0,c[b+180>>2]|0,d[b+11>>0]|0,c[b+152>>2]|0,c[b+208>>2]|0,g,h)|0;k=c[o>>2]|0}}else b=6}else b=0;i=(b|0)==5;j=i?1:j;i=i?0:b;l=0;g=0}else{i=0;l=h}m=m+1|0;b=(i|0)==0;if(!(b&(m|0)<(k|0)))break;else h=l}o=(j|0)!=0;o=b&o;o=o?5:i;return o|0}else{m=0;j=0;while(1){if((m|0)==(e|0)){b=c[(c[n>>2]|0)+(e<<4)+4>>2]|0;if(b){i=c[b+4>>2]|0;l=c[b>>2]|0;c[i+4>>2]=l;if(!(a[i+20>>0]|0)){b=c[i>>2]|0;i=c[b+216>>2]|0;if(!i)b=0;else{b=Qf(i,l,f,c[b+176>>2]|0,c[b+180>>2]|0,d[b+11>>0]|0,c[b+152>>2]|0,c[b+208>>2]|0,g,h)|0;k=c[o>>2]|0}}else b=6}else b=0;i=(b|0)==5;j=i?1:j;i=i?0:b;l=0;g=0}else{i=0;l=h}m=m+1|0;b=(i|0)==0;if(!(b&(m|0)<(k|0)))break;else h=l}o=(j|0)!=0;o=b&o;o=o?5:i;return o|0}return 0}function Od(a,b){a=a|0;b=b|0;return Pd(a,b,6,0)|0}function Pd(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;H=Ra;Ra=Ra+128|0;F=H+88|0;E=H+80|0;z=H+64|0;y=H+56|0;x=H+48|0;v=H+32|0;u=H+24|0;t=H+16|0;q=H;w=H+112|0;r=H+104|0;G=H+108|0;s=H+100|0;c[r>>2]=f;c[G>>2]=0;c[s>>2]=0;c[e>>2]=0;h=mb()|0;if(h|0){G=h;Ra=H;return G|0}if((f&32768|0)==0&(c[7325]|0)!=0)k=(f&65536|0)==0?c[7326]|0:1;else k=0;if(!(f&262144)){if(c[7378]|0){f=f|131072;c[r>>2]=f}}else{f=f&-131073;c[r>>2]=f}p=f&-655129;c[r>>2]=p;if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](488)|0;if(!h){h=0;B=148}else B=19}else{h=Wa[c[29356>>2]&127](488)|0;if((c[14985]|0)>>>0<488)c[14985]=488;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){D=c[14978]|0;C=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;B=L()|0;c[14768]=((B|0)<0|(B|0)==0&C>>>0<=D>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(h){i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;B=19}else B=19}else{h=0;B=148}}a:do if((B|0)==19){gw(h|0,0,488)|0;if(k|0)c[h+12>>2]=8;C=h+68|0;c[C>>2]=255;c[h+20>>2]=2;D=h+96|0;c[D>>2]=-264537850;n=h+16|0;c[n>>2]=h+412;o=h+272|0;c[o>>2]=1;i=h+108|0;j=2288;k=i+44|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[h+152>>2]=0;a[h+79>>0]=1;a[h+84>>0]=-1;m=29480;A=c[m+4>>2]|0;i=h+48|0;c[i>>2]=c[m>>2];c[i+4>>2]=A;c[h+92>>2]=0;c[h+156>>2]=2147483647;i=h+32|0;c[i>>2]=295008;c[i+4>>2]=0;i=h+380|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;A=h+336|0;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[A+12>>2]=0;Qd(h,34049,1,0,78,0)|0;Qd(h,34049,3,0,78,0)|0;Qd(h,34049,2,0,78,0)|0;Qd(h,43602,1,0,79,0)|0;Qd(h,50932,1,1,78,0)|0;A=h+81|0;b:do if(!(a[A>>0]|0)){k=c[h+392>>2]|0;if(!k){j=h+384|0;i=h+388|0}else{i=783505461%((c[i>>2]|0)>>>0)|0;j=k+(i<<3)|0;i=k+(i<<3)+4|0}j=c[j>>2]|0;c:do if(!j)i=59292;else while(1){i=c[i>>2]|0;j=j+-1|0;l=c[i+12>>2]|0;m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)+-98|0;if(!(m<<24>>24==0|(k|0)!=0)){m=34049;do{l=l+1|0;m=m+1|0;I=a[l>>0]|0;k=(d[208+(I&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(I<<24>>24==0|(k|0)!=0))}if(!k)break c;if(!j){i=59292;break}}while(0);c[h+8>>2]=c[i+8>>2];c[h+60>>2]=p;d:do if(!(1<<(f&7)&70)){c[q>>2]=58063;c[q+4>>2]=157776;c[q+8>>2]=31517;Db(21,32001,q);i=21}else{i=dn(g,b,r,h,G,s)|0;switch(i|0){case 0:break;case 7:{if(a[A>>0]|0){i=7;break d}if(a[h+82>>0]|0){i=7;break d}a[A>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;c[o>>2]=(c[o>>2]|0)+1;f=c[h+236>>2]|0;if(!f){i=7;break d}c[f+12>>2]=7;i=7;break d}default:break d}f=Pe(c[h>>2]|0,c[G>>2]|0,h,(c[n>>2]|0)+4|0,0,c[r>>2]|256)|0;e:do if((f|0)<3082){switch(f|0){case 0:break;default:{B=46;break e}}f=c[(c[n>>2]|0)+4>>2]|0;c[(c[f+4>>2]|0)+4>>2]=c[f>>2];f=en(h,f)|0;c[(c[n>>2]|0)+12>>2]=f;if(!(a[A>>0]|0))a[h+78>>0]=a[f+77>>0]|0;B=en(h,0)|0;I=c[n>>2]|0;c[I+28>>2]=B;c[I>>2]=50919;a[I+8>>0]=3;c[I+16>>2]=31427;a[I+24>>0]=1;c[D>>2]=-1607883113;if(a[A>>0]|0){B=148;break a}p=h+64|0;c[p>>2]=0;if(c[h+260>>2]|0)Ne(h,0);do if((Id(h,50938,2)|0)==7?(a[A>>0]|0)==0:0){if(a[h+82>>0]|0)break;a[A>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;c[o>>2]=(c[o>>2]|0)+1;f=c[h+236>>2]|0;if(!f)break;c[f+12>>2]=7}while(0);f=c[D>>2]|0;f:do if((f|0)>=-264537850)if((f|0)<1266094736)switch(f|0){case -264537850:{B=62;break f}default:{B=61;break f}}else switch(f|0){case 1266094736:{B=62;break f}default:{B=61;break f}}else switch(f|0){case -1607883113:{B=62;break}default:B=61}while(0);g:do if((B|0)==61){c[u>>2]=50924;Db(21,38253,u);c[v>>2]=58063;c[v+4>>2]=157091;c[v+8>>2]=31517;Db(21,32001,v);f=21;B=142}else if((B|0)==62){if(a[A>>0]|0){f=7;B=142;break}f=c[C>>2]&c[p>>2];if(f|0){B=142;break}h:do if(0){f=1;k=0;i=0;do{j=c[0+(k<<2)>>2]|0;c[w>>2]=0;if(j){i=Ya[j&127](h,w,0)|0;if(i){c[x>>2]=c[w>>2];Vb(h,i,50944,x);f=0}i=c[w>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{I=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);if(!f)break h;else i=0}k=k+1|0}while(k>>>0>>0)}while(0);f=c[D>>2]|0;i:do if((f|0)>=-264537850)if((f|0)<1266094736)switch(f|0){case -264537850:break i;default:{B=78;break i}}else switch(f|0){case 1266094736:break i;default:{B=78;break i}}else switch(f|0){case -1607883113:break;default:B=78}while(0);if((B|0)==78){c[y>>2]=50924;Db(21,38253,y);c[z>>2]=58063;c[z+4>>2]=157091;c[z+8>>2]=31517;Db(21,32001,z);break b}if(a[A>>0]|0)break b;if(c[C>>2]&c[p>>2]|0)break b;f=rd(h,51142,30516,0)|0;if(f|0){B=142;break}if(mb()|0){f=7;B=142;break}do if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](20)|0;if(!f){f=7;B=142;break g}else i=f}else{f=Wa[c[29356>>2]&127](20)|0;if((c[14985]|0)>>>0<20)c[14985]=20;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){I=c[14978]|0;z=Tv(i|0,j|0,f|0,((f|0)<0)<<31>>31|0)|0;y=L()|0;c[14768]=((y|0)<0|(y|0)==0&z>>>0<=I>>>0)&1}i=Wa[c[29340>>2]&127](f)|0;if(!i){f=7;B=142;break g}f=Wa[c[29352>>2]&127](i)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0<=(c[14987]|0)>>>0)break;c[14987]=f}while(0);a[i>>0]=1;m=i+1|0;a[m>>0]=1;n=i+4|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;do if(!(Ep(i,50983,7,30612)|0)){if(Ep(i,50990,7,30640)|0){f=7;B=111;break}if(Ep(i,50997,10,30488)|0){f=7;B=111;break}f=Hd(h,51007,1,5,i,175,0,0,0,0,0)|0;if((f|0)==3082|(a[A>>0]|0)!=0){og(h);f=7;B=111;break}f=c[C>>2]&f;if(f|0){B=111;break}f=Hd(h,51007,2,5,i,175,0,0,0,0,0)|0;if((f|0)==3082|(a[A>>0]|0)!=0){og(h);f=7;B=111;break}f=c[C>>2]&f;if(f|0){B=111;break}f=Id(h,51022,-1)|0;if(f|0){B=111;break}f=Id(h,51030,1)|0;if(f|0){B=111;break}f=Id(h,51038,1)|0;if(f|0){B=111;break}f=Id(h,51038,2)|0;if(f|0){B=111;break}f=Id(h,37598,1)|0;if(f|0){B=111;break}f=sd(h,51048,30392,i,91)|0;if(f|0){B=142;break g}f=sd(h,51053,30392,i,0)|0;if(f|0){B=142;break g}f=rd(h,55534,30668,i)|0}else{f=7;B=111}while(0);do if((B|0)==111){k=i+8|0;j=c[k>>2]|0;c[k>>2]=0;k=i+16|0;l=c[k>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[k>>2]=0;c[i+12>>2]=0;if(j|0)do{k=j;j=c[j>>2]|0;do if(a[m>>0]|0){l=c[k+12>>2]|0;if(!l)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{I=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}}while((j|0)!=0);c[n>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{I=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if((f|0)==0&(a[A>>0]|0)==0){f=Hd(h,55598,2,1,0,176,0,0,0,0,0)|0;if((f|0)==3082|(a[A>>0]|0)!=0){og(h);f=7;B=142;break}f=c[C>>2]&f;if(f|0){B=142;break}f=Hd(h,55608,1,1,0,177,0,0,0,0,0)|0;if((f|0)==3082|(a[A>>0]|0)!=0){og(h);f=7;B=142;break}f=c[C>>2]&f;if(f|0){B=142;break}f=Hd(h,55619,-1,1,0,178,0,0,0,0,0)|0;if((f|0)==3082|(a[A>>0]|0)!=0){og(h);f=7;B=142;break}f=c[C>>2]&f;if(f|0){B=142;break}f=sd(h,55630,30764,0,0)|0;if(f|0){B=142;break}f=sd(h,55636,30764,1,0)|0}if(f|0)B=142}while(0);if((B|0)==142){c[p>>2]=f;Ne(h,f)}zd(h,0,c[7332]|0,c[7333]|0)|0;c[h+240>>2]=76;c[h+244>>2]=1e3;break b}else switch(f|0){case 3082:{f=7;break}default:B=46}while(0);c[h+64>>2]=f;Ne(h,f);break b}while(0);f=c[s>>2]|0;I=(f|0)==0;c[t>>2]=f;Vb(h,i,I?0:31408,t);if(!I)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{I=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[D>>2]|0;j:do if((f|0)>=-264537850)if((f|0)<1266094736)switch(f|0){case -264537850:{B=146;break j}default:{B=145;break j}}else switch(f|0){case 1266094736:{B=146;break j}default:{B=145;break j}}else switch(f|0){case -1607883113:{B=146;break}default:B=145}while(0);if((B|0)==145){c[E>>2]=50924;Db(21,38253,E);c[F>>2]=58063;c[F+4>>2]=157091;c[F+8>>2]=31517;Db(21,32001,F);f=21}else if((B|0)==146){if(a[A>>0]|0){B=148;break}f=c[C>>2]&c[h+64>>2];switch(f|0){case 7:{B=148;break a}case 0:break a;default:{}}}c[D>>2]=1266094736}while(0);if((B|0)==148){Bd(h,0)|0;f=7;h=0}c[e>>2]=h;h=c[G>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{I=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);I=f&255;Ra=H;return I|0}function Qd(b,e,f,g,h,i){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=Ra;Ra=Ra+32|0;k=t+16|0;j=t;s=f&255;switch(f<<24>>24){case 4:case 8:{r=2;break}default:if((s+-1|0)>>>0>2){c[j>>2]=58063;c[j+4>>2]=157148;c[j+8>>2]=31517;Db(21,32001,j);s=21;Ra=t;return s|0}else r=s}q=r&255;j=Zi(b,q,e,0)|0;if(j|0?c[j+12>>2]|0:0){if(c[b+168>>2]|0){Vb(b,5,57995,k);s=5;Ra=t;return s|0}f=c[b+4>>2]|0;if(f|0)do{p=f+149|0;o=(d[p>>0]|d[p+1>>0]<<8)&-4|1;a[p>>0]=o;a[p+1>>0]=o>>8;f=c[f+8>>2]|0}while((f|0)!=0);p=j+4|0;f=a[p>>0]|0;if((r|0)==(f&-9&255|0)){m=c[b+392>>2]|0;if(!m){k=b+384|0;j=b+388|0}else{k=a[e>>0]|0;if(!(k<<24>>24))j=0;else{j=0;l=e;do{l=l+1|0;j=G(j+(d[208+(k&255)>>0]|0)|0,-1640531535)|0;k=a[l>>0]|0}while(k<<24>>24!=0)}j=(j>>>0)%((c[b+380>>2]|0)>>>0)|0;k=m+(j<<3)|0;j=m+(j<<3)+4|0}k=c[k>>2]|0;a:do if(!k)j=59292;else{o=d[208+(d[e>>0]|0)>>0]|0;while(1){j=c[j>>2]|0;k=k+-1|0;m=c[j+12>>2]|0;n=a[m>>0]|0;l=(d[208+(n&255)>>0]|0)-o|0;if(!(n<<24>>24==0|(l|0)!=0)){n=e;do{m=m+1|0;n=n+1|0;u=a[m>>0]|0;l=(d[208+(u&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(u<<24>>24==0|(l|0)!=0))}if(!l)break a;if(!k){j=59292;break}}}while(0);k=c[j+8>>2]|0;if((a[k+4>>0]|0)==f<<24>>24){j=c[k+16>>2]|0;if(j){ab[j&127](c[k+8>>2]|0);f=a[p>>0]|0}c[k+12>>2]=0}if((a[k+24>>0]|0)==f<<24>>24){j=c[k+36>>2]|0;if(j){ab[j&127](c[k+28>>2]|0);f=a[p>>0]|0}c[k+32>>2]=0}if((a[k+44>>0]|0)==f<<24>>24){f=c[k+56>>2]|0;if(f|0)ab[f&127](c[k+48>>2]|0);c[k+52>>2]=0}}}f=Zi(b,q,e,1)|0;if(!f){u=7;Ra=t;return u|0}c[f+12>>2]=h;c[f+8>>2]=g;c[f+16>>2]=i;a[f+4>>0]=r|s&8;c[b+64>>2]=0;if(!(c[b+260>>2]|0)){u=0;Ra=t;return u|0}Ne(b,0);u=0;Ra=t;return u|0}function Rd(e,f,g,h,i,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=Ra;Ra=Ra+16|0;y=z+8|0;w=z;x=z+12|0;c[x>>2]=0;r=e+20|0;n=c[r>>2]|0;t=e+16|0;q=c[t>>2]|0;if((n|0)>0){o=0;do{p=c[q+(o<<4)+4>>2]|0;if(p|0)c[(c[p+4>>2]|0)+4>>2]=c[p>>2];o=o+1|0}while((o|0)!=(n|0))}p=e+24|0;s=(c[p>>2]&1|0)==0;v=c[q+12>>2]|0;a[e+78>>0]=a[v+77>>0]|0;if(!(b[v+78>>1]&1)){n=eh(e,0,x,0)|0;if(!n){n=c[r>>2]|0;v=9}else v=16}else v=9;a:do if((v|0)==9){if((n|0)>1)do{o=n;n=n+-1|0;if((b[(c[(c[t>>2]|0)+(n<<4)+12>>2]|0)+78>>1]&1)==0?(u=eh(e,n,x,0)|0,u|0):0){n=u;v=16;break a}}while((o|0)>2);if(s)c[p>>2]=c[p>>2]&-2;u=Sd(e,g,f)|0;if((u|0)!=0?(c[u+12>>2]|0)==0:0){do if(h){f=b[u+42>>1]|0;t=f<<16>>16;b:do if(f<<16>>16>0){s=c[u+4>>2]|0;f=d[208+(d[h>>0]|0)>>0]|0;n=0;do{o=s+(n<<4)|0;q=c[o>>2]|0;r=a[q>>0]|0;p=(d[208+(r&255)>>0]|0)-f|0;if(!(r<<24>>24==0|(p|0)!=0)){r=h;do{q=q+1|0;r=r+1|0;A=a[q>>0]|0;p=(d[208+(A&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(A<<24>>24==0|(p|0)!=0))}if(!p)break b;n=n+1|0}while((n|0)<(t|0))}else{n=0;o=0}while(0);if((n|0)==(t|0)){if(c[u+36>>2]&32|0){o=0;u=0;t=0;f=0;s=0;r=0;p=0;q=0;break a}r=a[h>>0]|0;q=d[208+(r&255)>>0]|0;n=q+-95|0;r=r<<24>>24==0;if(!(r|(n|0)!=0)){o=58070;p=h;do{p=p+1|0;o=o+1|0;A=a[p>>0]|0;n=(d[208+(A&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(A<<24>>24==0|(n|0)!=0))}if(n|0){n=q+-114|0;if(!(r|(n|0)!=0)){o=40352;p=h;do{p=p+1|0;o=o+1|0;A=a[p>>0]|0;n=(d[208+(A&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(A<<24>>24==0|(n|0)!=0))}if(n|0){n=q+-111|0;if(!(r|(n|0)!=0)){o=58078;p=h;do{p=p+1|0;o=o+1|0;A=a[p>>0]|0;n=(d[208+(A&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(A<<24>>24==0|(n|0)!=0))}if(n|0){o=0;u=0;t=0;f=0;s=0;r=0;p=0;q=0;break a}}}A=b[u+40>>1]|0;n=A<<16>>16;if(A<<16>>16<=-1){q=0;n=1;s=0;r=0;p=31453;break}q=n;o=(c[u+4>>2]|0)+(n<<4)|0}else q=n;if(o){n=a[o+15>>0]|0;if(!(n&4))p=0;else{p=c[o>>2]|0;p=p+(Eu(p)|0)+1|0}r=c[o+8>>2]|0;o=(a[o+12>>0]|0)!=0&1;n=n&1;if((q|0)==(b[u+40>>1]|0)){q=(c[u+36>>2]|0)>>>3&1;s=o}else{q=0;s=o}}else{q=0;n=1;s=0;r=0;p=31453}}else{q=0;n=1;s=0;r=0;p=31453}while(0);o=0;t=q;f=n;r=(r|0)==0?34049:r;q=0}else{o=0;u=0;t=0;f=0;s=0;r=0;p=0;q=0}}while(0);if((v|0)==16){o=n;u=0;t=0;f=0;s=0;r=0;p=0;q=(n|0)!=0}if(i|0)c[i>>2]=p;if(j|0)c[j>>2]=r;if(k|0)c[k>>2]=s;if(l|0)c[l>>2]=f;if(m|0)c[m>>2]=t;n=c[x>>2]|0;if(!(q|(u|0)!=0)){do if(n|0){if(e|0){if(c[e+480>>2]|0){Xd(e,n);break}A=n;if((c[e+304>>2]|0)>>>0<=A>>>0?(c[e+308>>2]|0)>>>0>A>>>0:0){A=e+300|0;c[n>>2]=c[A>>2];c[A>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{A=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[w>>2]=g;c[w+4>>2]=h;n=dd(e,31461,w)|0;c[x>>2]=n;o=1}c[y>>2]=n;Vb(e,o,(n|0)==0?0:31408,y);n=c[x>>2]|0;do if(n|0){if(e|0){if(c[e+480>>2]|0){Xd(e,n);break}A=n;if((c[e+304>>2]|0)>>>0<=A>>>0?(c[e+308>>2]|0)>>>0>A>>>0:0){A=e+300|0;c[n>>2]=c[A>>2];c[A>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{A=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);if((o|0)==3082|(a[e+81>>0]|0)!=0){og(e);A=7;Ra=z;return A|0}else{A=c[e+68>>2]&o;Ra=z;return A|0}return 0}function Sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=c[a+20>>2]|0;l=(d|0)==0;e=a+16|0;if((k|0)<=0){a=b;while(1){if(Hb(a,34585)|0){h=0;a=18;break}if(!(Gb(d,c[(c[e>>2]|0)+16>>2]|0)|0))a=34855;else{h=0;a=18;break}}if((a|0)==18)return h|0}f=c[e>>2]|0;g=f+16|0;a:while(1){if(l){a=0;do{j=ji((c[f+((a^a>>>0<2)<<4)+12>>2]|0)+8|0,b)|0;if(j|0){a=16;break a}a=a+1|0}while((a|0)<(k|0))}else{a=0;do{e=a^a>>>0<2;if((Hb(d,c[f+(e<<4)>>2]|0)|0)==0?(i=ji((c[f+(e<<4)+12>>2]|0)+8|0,b)|0,i|0):0){a=17;break a}a=a+1|0}while((a|0)<(k|0))}if(Hb(b,34585)|0){h=0;a=18;break}if(!(Gb(d,c[g>>2]|0)|0))b=34855;else{h=0;a=18;break}}if((a|0)==16){l=j;return l|0}else if((a|0)==17){l=i;return l|0}else if((a|0)==18)return h|0;return 0}function Td(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if(e){j=c[b+20>>2]|0;g=j+-1|0;a:do if((j|0)>0){f=g;j=(c[b+16>>2]|0)+(g<<4)|0;while(1){h=c[j>>2]|0;if(h|0){i=a[h>>0]|0;g=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(g|0)!=0)){i=e;do{h=h+1|0;i=i+1|0;k=a[h>>0]|0;g=(d[208+(k&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(g|0)!=0))}if(!g)break a}if(!f)break;g=f+-1|0;if((f|0)>0){f=g;j=j+-16|0}else{f=g;break a}}f=109-(d[208+(d[e>>0]|0)>>0]|0)|0;if(!f){g=50919;do{g=g+1|0;e=e+1|0;k=a[g>>0]|0;f=(d[208+(k&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(f|0)!=0))}f=((f|0)!=0)<<31>>31}else f=g;while(0);if((f|0)<0){k=0;return k|0}}else f=0;k=c[(c[b+16>>2]|0)+(f<<4)+4>>2]|0;return k|0}function Ud(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=c[a+4>>2]|0;c[h+4>>2]=c[a>>2];g=h+22|0;if(b[g>>1]&2){h=8;return h|0}if((e|0)<0)e=(c[h+32>>2]|0)-(c[h+36>>2]|0)|0;if((d+-512|0)>>>0<65025?(d+-1&d|0)==0:0){c[h+32>>2]=d;Tf(h)}d=h+32|0;a=Se(c[h>>2]|0,d,e)|0;c[h+36>>2]=(c[d>>2]|0)-(e&65535);if(!f){h=a;return h|0}b[g>>1]=b[g>>1]|2;h=a;return h|0}function Vd(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if((a[b>>0]|0)!=48){i=xb(b)|0;d=Og(b,d,i,1)|0;return d|0}switch(a[b+1>>0]|0){case 88:case 120:break;default:{i=xb(b)|0;d=Og(b,d,i,1)|0;return d|0}}i=2;while(1){h=a[b+i>>0]|0;if(h<<24>>24==48)i=i+1|0;else break}if(!(a[880+(h&255)>>0]&8)){f=i;g=0;e=0}else{f=i;g=0;e=0;do{j=cw(g|0,e|0,4)|0;e=L()|0;g=h<<24>>24;g=j|(0-(g>>>6&1)&9)+g&15;f=f+1|0;h=a[b+f>>0]|0}while((a[880+(h&255)>>0]&8)!=0)}j=d;c[j>>2]=g;c[j+4>>2]=e;return ((a[b+f>>0]|0)==0?((f-i|0)>16?2:0):2)|0}function Wd(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;if(!b){w=0;return w|0}c=a[b>>0]|0;do if(!(c<<24>>24)){c=31489;f=3}else{o=c&255;c=208+o|0;if((o|32|0)==115){c=a[b+1>>0]|0;if(!(c<<24>>24)){c=31490;f=3;break}o=c&255;c=208+o|0;if((o|32|0)==113){c=a[b+2>>0]|0;if(!(c<<24>>24)){c=31491;f=3;break}o=c&255;c=208+o|0;if((o|32|0)==108){c=a[b+3>>0]|0;if(!(c<<24>>24)){c=31492;f=3;break}o=c&255;c=208+o|0;if((o|32|0)==105){c=a[b+4>>0]|0;if(!(c<<24>>24)){c=31493;f=3;break}o=c&255;c=208+o|0;if((o|32|0)==116){c=a[b+5>>0]|0;if(!(c<<24>>24)){c=31494;f=3;break}o=c&255;c=208+o|0;if((o|32|0)==101){c=a[b+6>>0]|0;if(!(c<<24>>24)){c=31495;f=3;break}if(c<<24>>24==95){e=b+7|0;break}else{f=95;c=208+(c&255)|0}}else f=101}else f=116}else f=105}else f=108}else f=113}else f=115;e=d[c>>0]|0;c=f;f=7}while(0);if((f|0)==3){e=0;c=a[208+(d[c>>0]|0)>>0]|0;f=7}if((f|0)==7)e=(e|0)==(c&255|0)?b+7|0:b;o=(Eu(e)|0)&1073741823;if(!o){w=0;return w|0}f=e;h=58082;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=11;break}c=a[208+(c&255)>>0]|0;g=a[208+(d[h>>0]|0)>>0]|0;if(c<<24>>24!=g<<24>>24){f=13;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=16;break}}if((f|0)==11){i=0;j=a[208+(d[h>>0]|0)>>0]|0;f=15}else if((f|0)==13){i=c&255;j=g;f=15}if((f|0)==15?(i|0)==(j&255|0):0)f=16;if((f|0)==16?(a[880+(d[58082+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}f=e;h=58103;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=23;break}c=a[208+(c&255)>>0]|0;g=a[208+(d[h>>0]|0)>>0]|0;if(c<<24>>24!=g<<24>>24){f=21;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=25;break}}if((f|0)==21){k=c&255;l=g;f=24}else if((f|0)==23){k=0;l=a[208+(d[h>>0]|0)>>0]|0;f=24}if((f|0)==24?(k|0)==(l&255|0):0)f=25;if((f|0)==25?(a[880+(d[58103+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}f=e;h=58115;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=31;break}c=a[208+(c&255)>>0]|0;g=a[208+(d[h>>0]|0)>>0]|0;if(c<<24>>24!=g<<24>>24){f=29;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=33;break}}if((f|0)==29){m=c&255;n=g;f=32}else if((f|0)==31){m=0;n=a[208+(d[h>>0]|0)>>0]|0;f=32}if((f|0)==32?(m|0)==(n&255|0):0)f=33;if((f|0)==33?(a[880+(d[58115+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}f=e;h=58127;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=39;break}g=a[208+(c&255)>>0]|0;c=a[208+(d[h>>0]|0)>>0]|0;if(g<<24>>24!=c<<24>>24){f=37;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=41;break}}if((f|0)==37){p=g&255;q=c;f=40}else if((f|0)==39){p=0;q=a[208+(d[h>>0]|0)>>0]|0;f=40}if((f|0)==40?(p|0)==(q&255|0):0)f=41;if((f|0)==41?(a[880+(d[58127+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}f=e;h=58151;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=47;break}c=a[208+(c&255)>>0]|0;g=a[208+(d[h>>0]|0)>>0]|0;if(c<<24>>24!=g<<24>>24){f=45;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=49;break}}if((f|0)==45){r=c&255;s=g;f=48}else if((f|0)==47){r=0;s=a[208+(d[h>>0]|0)>>0]|0;f=48}if((f|0)==48?(r|0)==(s&255|0):0)f=49;if((f|0)==49?(a[880+(d[58151+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}f=e;h=58164;b=o;while(1){c=a[f>>0]|0;if(!(c<<24>>24)){f=55;break}c=a[208+(c&255)>>0]|0;g=a[208+(d[h>>0]|0)>>0]|0;if(c<<24>>24!=g<<24>>24){f=53;break}if((b|0)>1){f=f+1|0;h=h+1|0;b=b+-1|0}else{f=57;break}}if((f|0)==53){t=c&255;u=g;f=56}else if((f|0)==55){t=0;u=a[208+(d[h>>0]|0)>>0]|0;f=56}if((f|0)==56?(t|0)==(u&255|0):0)f=57;if((f|0)==57?(a[880+(d[58164+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}g=58184;f=o;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){f=63;break}c=a[208+(c&255)>>0]|0;b=a[208+(d[g>>0]|0)>>0]|0;if(c<<24>>24!=b<<24>>24){f=61;break}if((f|0)>1){e=e+1|0;g=g+1|0;f=f+-1|0}else{f=65;break}}if((f|0)==61){v=c&255;w=b;f=64}else if((f|0)==63){v=0;w=a[208+(d[g>>0]|0)>>0]|0;f=64}if((f|0)==64?(v|0)==(w&255|0):0)f=65;if((f|0)==65?(a[880+(d[58184+o>>0]|0)>>0]&70)==0:0){w=1;return w|0}w=0;return w|0}function Xd(a,b){a=a|0;b=b|0;var d=0;if(((a|0)!=0?(d=b,(c[a+304>>2]|0)>>>0<=d>>>0):0)?(c[a+308>>2]|0)>>>0>d>>>0:0)b=e[a+276>>1]|0;else b=Wa[c[29352>>2]&127](b)|0;a=c[a+480>>2]|0;c[a>>2]=(c[a>>2]|0)+b;return}function Yd(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0;if(c[b+272>>2]|0){if(a[b+81>>0]|0){f=0;return f|0}}else{do if(0>>0|(0==(f|0)?(e[b+276>>1]|0)>>>0>>0:0))g=b+288|0;else{g=b+300|0;h=c[g>>2]|0;if(h|0){c[g>>2]=c[h>>2];f=b+284|0;c[f>>2]=(c[f>>2]|0)+1;f=h;return f|0}g=b+296|0;h=c[g>>2]|0;if(!h){g=b+292|0;break}c[g>>2]=c[h>>2];f=b+284|0;c[f>>2]=(c[f>>2]|0)+1;f=h;return f|0}while(0);c[g>>2]=(c[g>>2]|0)+1}f=_d(b,d,f)|0;return f|0}function Zd(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;h=b+81|0;if(a[h>>0]|0){m=0;return m|0}l=d;m=b+304|0;if((c[m>>2]|0)>>>0<=l>>>0?(k=b+308|0,(c[k>>2]|0)>>>0>l>>>0):0){a:do if(!(c[b+272>>2]|0)){do if(!(0>>0|(0==(g|0)?(e[b+276>>1]|0)>>>0>>0:0))){i=b+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];g=b+284|0;c[g>>2]=(c[g>>2]|0)+1;break a}i=b+296|0;h=c[i>>2]|0;if(!h){h=b+292|0;break}else{c[i>>2]=c[h>>2];g=b+284|0;c[g>>2]=(c[g>>2]|0)+1;break a}}else h=b+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;j=13}else j=13;while(0);if((j|0)==13)h=_d(b,f,g)|0;if(!h){m=0;return m|0}ew(h|0,d|0,e[b+276>>1]|0)|0;if(!d){m=h;return m|0}if(c[b+480>>2]|0){Xd(b,d);m=h;return m|0}if((c[m>>2]|0)>>>0<=l>>>0?(c[k>>2]|0)>>>0>l>>>0:0){m=b+300|0;c[d>>2]=c[m>>2];c[m>>2]=d;m=h;return m|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);m=h;return m|0}else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);m=h;return m|0}}if((mb()|0)==0?(i=sb(d,f,g)|0,i|0):0){m=i;return m|0}if(a[h>>0]|0){m=0;return m|0}if(a[b+82>>0]|0){m=0;return m|0}a[h>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;h=b+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[b+236>>2]|0;if(!h){m=0;return m|0}c[h+12>>2]=7;m=0;return m|0}function _d(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Sv(d|0,e|0,-1,-1)|0;e=L()|0;do if(!(e>>>0>0|(e|0)==0&f>>>0>2147483390)){if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](d)|0;if(!e)break;return e|0}f=Wa[c[29356>>2]&127](d)|0;if((c[14985]|0)>>>0>>0)c[14985]=d;d=59064;e=c[d>>2]|0;d=c[d+4>>2]|0;if((d|0)>0|(d|0)==0&e>>>0>0){g=c[14978]|0;d=Tv(e|0,d|0,f|0,((f|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&d>>>0<=g>>>0)&1}d=Wa[c[29340>>2]&127](f)|0;if(d|0){e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0<=(c[14987]|0)>>>0){g=d;return g|0}c[14987]=e;g=d;return g|0}}while(0);e=b+81|0;if(a[e>>0]|0){g=0;return g|0}if(a[b+82>>0]|0){g=0;return g|0}a[e>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;e=b+272|0;c[e>>2]=(c[e>>2]|0)+1;e=c[b+236>>2]|0;if(!e){g=0;return g|0}c[e+12>>2]=7;g=0;return g|0}function $d(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0;g=c[b>>2]|0;k=b+16|0;j=(c[k>>2]|0)+1|0;a:do if(!g){h=Sv(j|0,0,-1,-1)|0;g=L()|0;if(!(g>>>0>0|(g|0)==0&h>>>0>2147483390)){if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](j)|0;i=25;break}h=Wa[c[29356>>2]&127](j)|0;if((c[14985]|0)>>>0>>0)c[14985]=j;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){j=c[14978]|0;g=Tv(f|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&g>>>0<=j>>>0)&1}f=Wa[c[29340>>2]&127](h)|0;if(f|0){d=Wa[c[29352>>2]&127](f)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0){c[14987]=d;d=f;i=26}else{d=f;i=26}}}}else{if(c[g+272>>2]|0){if(a[g+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[g+276>>1]|0)>>>0>>0:0))){f=g+300|0;d=c[f>>2]|0;if(d|0){c[f>>2]=c[d>>2];i=g+284|0;c[i>>2]=(c[i>>2]|0)+1;i=25;break a}f=g+296|0;d=c[f>>2]|0;if(!d){d=g+292|0;break}else{c[f>>2]=c[d>>2];i=g+284|0;c[i>>2]=(c[i>>2]|0)+1;i=25;break a}}else d=g+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1}d=_d(g,j,0)|0;i=25}while(0);if((i|0)==25?d|0:0)i=26;if((i|0)==26){ew(d|0,c[b+4>>2]|0,(c[k>>2]|0)+1|0)|0;k=b+21|0;a[k>>0]=a[k>>0]|4;k=d;b=b+4|0;c[b>>2]=k;return k|0}a[b+20>>0]=7;if(!(c[b+12>>2]|0)){k=0;b=b+4|0;c[b>>2]=k;return k|0}f=b+21|0;if(!(a[f>>0]&4))d=b+4|0;else{g=c[b>>2]|0;d=b+4|0;h=c[d>>2]|0;do if(h|0){if(g|0){if(c[g+480>>2]|0){Xd(g,h);break}j=h;if((c[g+304>>2]|0)>>>0<=j>>>0?(c[g+308>>2]|0)>>>0>j>>>0:0){j=g+300|0;c[h>>2]=c[j>>2];c[j>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{j=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);a[f>>0]=a[f>>0]&-5}c[b+8>>2]=0;c[k>>2]=0;c[d>>2]=0;k=0;b=b+4|0;c[b>>2]=k;return k|0}function ae(a,b){a=a|0;b=b|0;return 29668}function be(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=Ra;Ra=Ra+48|0;i=j+24|0;g=j;h=a+8|0;f=c[h>>2]|0;te(a);ie(a,0)|0;h=c[h>>2]|0;if(c[f+24>>2]|0){f=a+28|0;d=c[f>>2]|0;e=h+32|0;c[d+8>>2]=c[e>>2];c[e>>2]=d;c[a+12>>2]=-1;c[f>>2]=0}do if(h|0?(e=h+36|0,f=(c[e>>2]|0)+-1|0,c[e>>2]=f,(f|0)==0):0){e=h+32|0;b=c[e>>2]|0;if(b|0){f=a+32|0;do{d=b;b=c[b+8>>2]|0;if(Wa[c[2352>>2]&127](c[d>>2]|0)|0){l=c[f>>2]|0;m=uu()|0;m=c[m>>2]|0;k=dv(m)|0;c[g>>2]=33804;c[g+4>>2]=m;c[g+8>>2]=31695;c[g+12>>2]=(l|0)==0?59952:l;c[g+16>>2]=k;Db(4106,31953,g)}if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}}while((b|0)!=0)}c[e>>2]=0;e=c[h+48>>2]|0;d=h+44|0;b=c[d>>2]|0;if(!e)c[14795]=b;else{c[e+44>>2]=b;b=c[d>>2]|0}if(b|0)c[b+48>>2]=e;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{m=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);b=a+12|0;d=c[b>>2]|0;if((d|0)>-1){if(Wa[c[2352>>2]&127](d)|0){l=c[a+32>>2]|0;k=uu()|0;k=c[k>>2]|0;m=dv(k)|0;c[i>>2]=34584;c[i+4>>2]=k;c[i+8>>2]=31695;c[i+12>>2]=(l|0)==0?59952:l;c[i+16>>2]=m;Db(4106,31953,i)}c[b>>2]=-1}b=c[a+28>>2]|0;if(!b){b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=j;return 0}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=j;return 0}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);b=a;d=b+52|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Ra=j;return 0}return 0}function ce(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=a+12|0;g=0;h=d;i=b;while(1){if((xv(c[l>>2]|0,e,0)|0)<0){f=3;break}j=Ya[c[2436>>2]&127](c[l>>2]|0,i,h)|0;if((h|0)==(j|0)){f=10;break}if((j|0)<0){k=uu()|0;if((c[k>>2]|0)==4)k=1;else{f=7;break}}else{e=Sv(e|0,f|0,j|0,((j|0)<0)<<31>>31|0)|0;f=L()|0;k=j;g=j+g|0;h=h-j|0;i=(j|0)==0?i:i+j|0}if((k|0)<=0){h=0;f=10;break}}if((f|0)==3){g=uu()|0;c[a+20>>2]=c[g>>2];g=-1}else if((f|0)==7){h=uu()|0;c[a+20>>2]=c[h>>2];h=j;g=0;f=10}if((f|0)==10)g=g+h|0;if((g|0)==(d|0)){d=0;return d|0}if((g|0)<0){d=266;return d|0}c[a+20>>2]=0;gw(b+g|0,0,d-g|0)|0;d=522;return d|0}function de(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;i=a+12|0;j=d;h=f;a:while(1){d=c[i>>2]|0;g=j&131071;while(1){if((xv(d,e,0)|0)<0){f=-1;b=6;break a}f=Ya[c[2472>>2]&127](d,b,g)|0;if((f|0)>=0)break;k=uu()|0;if((c[k>>2]|0)!=4){b=6;break a}}d=(j|0)>(f|0);if(!(d&(f|0)!=0)){b=9;break}k=Sv(e|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;j=j-f|0;b=b+f|0;h=L()|0;e=k}if((b|0)==6){d=a+20|0;b=uu()|0;b=c[b>>2]|0;c[d>>2]=b;if((j|0)<=(f|0)){k=0;return k|0}if((b|0)!=28){k=778;return k|0}}else if((b|0)==9)if(d)d=a+20|0;else{k=0;return k|0}c[d>>2]=0;k=13;return k|0}function ee(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=Ra;Ra=Ra+32|0;h=j;f=c[a+40>>2]|0;g=((f|0)<0)<<31>>31;d=Sv(b|0,d|0,-1,-1)|0;d=Sv(d|0,L()|0,f|0,g|0)|0;e=L()|0;if((f|0)>0){b=Zv(d|0,e|0,f|0,g|0)|0;b=Tv(d|0,e|0,b|0,L()|0)|0;L()|0}d=c[a+12>>2]|0;do{e=Xa[c[2412>>2]&255](d,b)|0;if((e|0)>=0){i=6;break}g=uu()|0}while((c[g>>2]|0)==4);if((i|0)==6?(e|0)==0:0){i=0;Ra=j;return i|0}g=uu()|0;c[a+20>>2]=c[g>>2];a=c[a+32>>2]|0;g=uu()|0;g=c[g>>2]|0;i=dv(g)|0;c[h>>2]=36273;c[h+4>>2]=g;c[h+8>>2]=31726;c[h+12>>2]=(a|0)==0?59952:a;c[h+16>>2]=i;Db(1546,31953,h);i=1546;Ra=j;return i|0}function fe(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+48|0;g=h+24|0;d=h;f=h+44|0;if(zv(c[a+12>>2]|0)|0){f=uu()|0;c[a+20>>2]=c[f>>2];f=c[a+32>>2]|0;a=uu()|0;a=c[a>>2]|0;g=dv(a)|0;c[d>>2]=36228;c[d+4>>2]=a;c[d+8>>2]=32026;c[d+12>>2]=(f|0)==0?59952:f;c[d+16>>2]=g;Db(1034,31953,d);g=1034;Ra=h;return g|0}e=a+18|0;if(!(b[e>>1]&8)){g=0;Ra=h;return g|0}d=a+32|0;if((Xa[c[2544>>2]&255](c[d>>2]|0,f)|0)==0?(zv(c[f>>2]|0)|0,Wa[c[2352>>2]&127](c[f>>2]|0)|0):0){a=c[d>>2]|0;d=uu()|0;d=c[d>>2]|0;f=dv(d)|0;c[g>>2]=36242;c[g+4>>2]=d;c[g+8>>2]=31695;c[g+12>>2]=(a|0)==0?59952:a;c[g+16>>2]=f;Db(4106,31953,g)}b[e>>1]=b[e>>1]&-9;g=0;Ra=h;return g|0}function ge(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=Ra;Ra=Ra+80|0;d=e;if(!(Xa[c[2400>>2]&255](c[a+12>>2]|0,d)|0)){a=c[d+36>>2]|0;f=(a|0)==1;d=b;c[d>>2]=f?0:a;c[d+4>>2]=f?0:((a|0)<0)<<31>>31;d=0;Ra=e;return d|0}else{f=uu()|0;c[a+20>>2]=c[f>>2];f=1802;Ra=e;return f|0}return 0}function he(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=Ra;Ra=Ra+96|0;r=C+56|0;t=C+48|0;q=C+40|0;s=C+32|0;l=C+24|0;m=C+16|0;h=C+8|0;j=C;y=C+80|0;x=C+64|0;B=d+16|0;g=a[B>>0]|0;if((g&255|0)>=(e|0)){d=0;Ra=C;return d|0}w=d+8|0;v=c[w>>2]|0;A=v+28|0;f=a[A>>0]|0;if(g<<24>>24!=f<<24>>24?(e|0)>1|(f&255)>2:0){d=5;Ra=C;return d|0}k=(e|0)==1;do if(!k){f=x+8|0;c[f>>2]=1;b[x+2>>1]=0;if((e|0)==4)if((g&255)<3){o=f;z=10}else z=43;else z=42}else{if((f+-1&255)>=2){o=x+8|0;c[o>>2]=1;b[x+2>>1]=0;z=10;break}a[B>>0]=1;d=v+20|0;c[d>>2]=(c[d>>2]|0)+1;d=v+24|0;c[d>>2]=(c[d>>2]|0)+1;d=0;Ra=C;return d|0}while(0);a:do if((z|0)==10){b[x>>1]=(k^1)&1;n=x+4|0;c[n>>2]=1073741824;p=d+18|0;do if((b[p>>1]&3)==1){g=v+29|0;if(!(a[g>>0]|0)){b[y+2>>1]=0;c[y+4>>2]=1073741826;c[y+8>>2]=510;b[y>>1]=1;z=c[606]|0;f=c[d+12>>2]|0;c[j>>2]=y;f=Ya[z&127](f,13,j)|0;if((f|0)<0){z=17;break}else{a[g>>0]=1;i=v+24|0;c[i>>2]=(c[i>>2]|0)+1;i=f;z=16;break}}}else{z=c[606]|0;i=c[d+12>>2]|0;c[h>>2]=x;i=Ya[z&127](i,13,h)|0;z=16}while(0);if((z|0)==16?i|0:0)z=17;if((z|0)==17){g=uu()|0;g=c[g>>2]|0;switch(g|0){case 1:{f=3;break}case 37:case 4:case 16:case 110:case 11:case 13:{d=5;Ra=C;return d|0}default:f=3850}c[d+20>>2]=g;d=f;Ra=C;return d|0}if(k){f=1073741826;c[n>>2]=f;c[o>>2]=510;h=c[w>>2]|0;do if((b[p>>1]&3)==1){g=h+29|0;if(!(a[g>>0]|0)){b[y+2>>1]=0;c[y+4>>2]=f;c[y+8>>2]=510;b[y>>1]=1;z=c[606]|0;f=c[d+12>>2]|0;c[m>>2]=y;f=Ya[z&127](f,13,m)|0;if((f|0)<0){z=28;break}else{a[g>>0]=1;z=h+24|0;c[z>>2]=(c[z>>2]|0)+1;z=27;break}}else{f=0;g=0}}else{z=c[606]|0;f=c[d+12>>2]|0;c[l>>2]=x;f=Ya[z&127](f,13,l)|0;z=27}while(0);if((z|0)==27)if(!f){f=0;g=0}else z=28;b:do if((z|0)==28){f=uu()|0;f=c[f>>2]|0;switch(f|0){case 37:case 4:case 16:case 110:case 11:case 13:{g=5;break b}case 1:{f=1;g=3;break b}default:{g=3850;break b}}}while(0);c[n>>2]=1073741824;c[o>>2]=1;b[x>>1]=2;j=c[w>>2]|0;do if((b[p>>1]&3)==1){i=j+29|0;if(!(a[i>>0]|0)){b[y+2>>1]=0;c[y+4>>2]=1073741826;c[y+8>>2]=510;b[y>>1]=1;z=c[606]|0;h=c[d+12>>2]|0;c[s>>2]=y;h=Ya[z&127](h,13,s)|0;if((h|0)<0){z=37;break}else{a[i>>0]=1;z=j+24|0;c[z>>2]=(c[z>>2]|0)+1;z=37;break}}else z=39}else{z=c[606]|0;h=c[d+12>>2]|0;c[q>>2]=x;h=Ya[z&127](h,13,q)|0;z=37}while(0);if((z|0)==37)if((g|0)==0&(h|0)!=0){f=uu()|0;g=2058;f=c[f>>2]|0}else z=39;c:do if((z|0)==39)switch(g&4095){case 0:{a[B>>0]=1;z=v+24|0;c[z>>2]=(c[z>>2]|0)+1;c[v+20>>2]=1;z=58;break a}case 5:{d=5;Ra=C;return d|0}default:break c}while(0);c[d+20>>2]=f;d=g;Ra=C;return d|0}else{f=o;z=42}}while(0);if((z|0)==42)if((e|0)!=4){b[x>>1]=1;if((e|0)==2){h=1073741825;i=1073741824;g=1;z=48}else{g=1073741824;z=47}}else z=43;if((z|0)==43)if((c[v+20>>2]|0)>1){f=5;z=60}else{b[x>>1]=1;g=1073741824;z=47}if((z|0)==47){h=g+2|0;i=g;g=510;z=48}d:do if((z|0)==48){c[x+4>>2]=h;c[f>>2]=g;h=c[w>>2]|0;do if((b[d+18>>1]&3)==1){g=h+29|0;if(a[g>>0]|0){z=58;break d}b[y+2>>1]=0;c[y+4>>2]=i+2;c[y+8>>2]=510;b[y>>1]=1;x=c[606]|0;f=c[d+12>>2]|0;c[t>>2]=y;f=Ya[x&127](f,13,t)|0;if((f|0)<0)break;else{a[g>>0]=1;u=h+24|0;c[u>>2]=(c[u>>2]|0)+1;u=f;z=54;break}}else{z=c[606]|0;u=c[d+12>>2]|0;c[r>>2]=x;u=Ya[z&127](u,13,r)|0;z=54}while(0);if((z|0)==54?(u|0)==0:0){z=58;break}g=uu()|0;g=c[g>>2]|0;switch(g|0){case 37:case 4:case 16:case 110:case 11:case 13:{f=5;break}case 1:{f=3;z=57;break}default:{f=3850;z=57}}if((z|0)==57)c[d+20>>2]=g;if((e|0)==4)z=60;else{d=f;Ra=C;return d|0}}while(0);if((z|0)==58){d=e&255;a[B>>0]=d;a[A>>0]=d;d=0;Ra=C;return d|0}else if((z|0)==60){a[B>>0]=3;a[A>>0]=3;d=f;Ra=C;return d|0}return 0}function ie(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=Ra;Ra=Ra+112|0;y=z+48|0;r=z+40|0;t=z+32|0;n=z+24|0;o=z+16|0;k=z+8|0;l=z;s=z+88|0;q=z+72|0;x=d+16|0;f=a[x>>0]|0;if((f&255|0)<=(e|0)){y=0;Ra=z;return y|0}v=d+8|0;w=c[v>>2]|0;do if((f&255)>1){a:do if((e|0)==1){b[q>>1]=0;j=q+2|0;b[j>>1]=0;i=1073741826;h=q+4|0;c[h>>2]=i;g=q+8|0;c[g>>2]=510;f=d+18|0;do if((b[f>>1]&3)==1){k=w+29|0;if(a[k>>0]|0){i=w;break a}b[s+2>>1]=0;c[s+4>>2]=i;c[s+8>>2]=510;b[s>>1]=1;A=c[606]|0;i=c[d+12>>2]|0;c[l>>2]=s;i=Ya[A&127](i,13,l)|0;if((i|0)<0)break;else{a[k>>0]=1;m=w+24|0;c[m>>2]=(c[m>>2]|0)+1;m=i;u=11;break}}else{u=c[606]|0;m=c[d+12>>2]|0;c[k>>2]=q;m=Ya[u&127](m,13,k)|0;u=11}while(0);if((u|0)==11?(m|0)==0:0){i=c[v>>2]|0;break}A=uu()|0;c[d+20>>2]=c[A>>2];A=2314;Ra=z;return A|0}else{j=q+2|0;h=q+4|0;g=q+8|0;f=d+18|0;i=w}while(0);b[q>>1]=2;b[j>>1]=0;c[h>>2]=1073741824;c[g>>2]=2;do if((b[f>>1]&3)==1){g=i+29|0;if(!(a[g>>0]|0)){b[s+2>>1]=0;c[s+4>>2]=1073741826;c[s+8>>2]=510;b[s>>1]=1;A=c[606]|0;f=c[d+12>>2]|0;c[o>>2]=s;f=Ya[A&127](f,13,o)|0;if((f|0)<0)break;else{a[g>>0]=1;p=i+24|0;c[p>>2]=(c[p>>2]|0)+1;p=f;u=20;break}}else u=21}else{u=c[606]|0;p=c[d+12>>2]|0;c[n>>2]=q;p=Ya[u&127](p,13,n)|0;u=20}while(0);if((u|0)==20?(p|0)==0:0)u=21;if((u|0)==21){a[w+28>>0]=1;break}A=uu()|0;c[d+20>>2]=c[A>>2];A=2058;Ra=z;return A|0}while(0);if(!e){u=w+20|0;A=(c[u>>2]|0)+-1|0;c[u>>2]=A;if(!A){b[q>>1]=2;b[q+2>>1]=0;c[q+8>>2]=0;c[q+4>>2]=0;h=c[v>>2]|0;do if((b[d+18>>1]&3)==1){g=h+29|0;if(!(a[g>>0]|0)){b[s+2>>1]=0;c[s+4>>2]=1073741826;c[s+8>>2]=510;b[s>>1]=1;A=c[606]|0;f=c[d+12>>2]|0;c[t>>2]=s;f=Ya[A&127](f,13,t)|0;if((f|0)<0){u=33;break}else{a[g>>0]=1;u=h+24|0;c[u>>2]=(c[u>>2]|0)+1;u=31;break}}else u=32}else{u=c[606]|0;f=c[d+12>>2]|0;c[r>>2]=q;f=Ya[u&127](f,13,r)|0;u=31}while(0);if((u|0)==31)if(!f)u=32;else u=33;if((u|0)==32){f=0;g=w+28|0}else if((u|0)==33){f=uu()|0;c[d+20>>2]=c[f>>2];a[w+28>>0]=0;f=2058;g=x}a[g>>0]=0;j=f}else j=0;w=w+24|0;A=(c[w>>2]|0)+-1|0;c[w>>2]=A;if(!A){i=(c[v>>2]|0)+32|0;f=c[i>>2]|0;if(f|0){h=d+32|0;do{g=f;f=c[f+8>>2]|0;if(Wa[c[2352>>2]&127](c[g>>2]|0)|0){d=c[h>>2]|0;w=uu()|0;w=c[w>>2]|0;A=dv(w)|0;c[y>>2]=33804;c[y+4>>2]=w;c[y+8>>2]=31695;c[y+12>>2]=(d|0)==0?59952:d;c[y+16>>2]=A;Db(4106,31953,y)}if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{A=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0)}c[i>>2]=0}if(j|0){A=j;Ra=z;return A|0}}a[x>>0]=e;A=0;Ra=z;return A|0}function je(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=Ra;Ra=Ra+32|0;h=j;i=j+8|0;g=c[e+8>>2]|0;if((d[g+28>>0]|0)>1){i=0;h=1;c[f>>2]=h;Ra=j;return i|0}if(a[g+29>>0]|0){i=0;h=0;c[f>>2]=h;Ra=j;return i|0}b[i+2>>1]=0;c[i+4>>2]=1073741825;c[i+8>>2]=1;b[i>>1]=1;k=c[606]|0;g=c[e+12>>2]|0;c[h>>2]=i;if(!(Ya[k&127](g,12,h)|0)){g=0;e=(b[i>>1]|0)!=2&1}else{g=uu()|0;c[e+20>>2]=c[g>>2];g=3594;e=0}k=g;i=e;c[f>>2]=i;Ra=j;return k|0}function ke(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=Ra;Ra=Ra+80|0;h=v;m=v+4|0;do switch(f|0){case 1:{c[g>>2]=d[a+16>>0];a=0;Ra=v;return a|0}case 4:{c[g>>2]=c[a+20>>2];a=0;Ra=v;return a|0}case 6:{c[a+40>>2]=c[g>>2];a=0;Ra=v;return a|0}case 5:{h=g;f=c[h>>2]|0;h=c[h+4>>2]|0;i=a+40|0;if((c[i>>2]|0)<=0){a=0;Ra=v;return a|0}o=a+12|0;a:do if(!(Xa[c[2400>>2]&255](c[o>>2]|0,m)|0)){g=c[i>>2]|0;j=((g|0)<0)<<31>>31;f=Sv(f|0,h|0,-1,-1)|0;f=Sv(f|0,L()|0,g|0,j|0)|0;k=L()|0;j=Zv(f|0,k|0,g|0,j|0)|0;j=Tv(f|0,k|0,j|0,L()|0)|0;k=L()|0;f=c[m+36>>2]|0;g=((f|0)<0)<<31>>31;b:do if((k|0)>(g|0)|(k|0)==(g|0)&j>>>0>f>>>0?(p=c[m+40>>2]|0,n=f+-1+p-((f|0)%(p|0)|0)|0,l=((n|0)<0)<<31>>31,q=((p|0)<0)<<31>>31,r=Sv(j|0,k|0,-1,-1)|0,s=L()|0,t=Sv(r|0,s|0,p|0,q|0)|0,u=L()|0,(u|0)>(l|0)|(u|0)==(l|0)&t>>>0>n>>>0):0){h=l;f=n;c:while(1){n=(h|0)<(k|0)|(h|0)==(k|0)&f>>>0>>0;i=n?f:r;f=n?h:s;h=c[o>>2]|0;while(1){if((xv(h,i,0)|0)<0)break c;g=Ya[c[2472>>2]&127](h,59952,1)|0;if((g|0)>=0)break;n=uu()|0;if((c[n>>2]|0)!=4)break c}f=Sv(i|0,f|0,p|0,q|0)|0;h=L()|0;if((g|0)!=1){f=778;break a}if(!((h|0)<(u|0)|(h|0)==(u|0)&f>>>0>>0))break b}f=uu()|0;c[a+20>>2]=c[f>>2];f=778;break a}while(0);a=0;Ra=v;return a|0}else f=1802;while(0);a=f;Ra=v;return a|0}case 10:{i=c[g>>2]|0;if((i|0)<0){c[g>>2]=(e[a+18>>1]|0)>>>2&1;a=0;Ra=v;return a|0}f=a+18|0;h=e[f>>1]|0;if(!i){b[f>>1]=h&65531;a=0;Ra=v;return a|0}else{b[f>>1]=h|4;a=0;Ra=v;return a|0}}case 13:{i=c[g>>2]|0;if((i|0)<0){c[g>>2]=(e[a+18>>1]|0)>>>4&1;a=0;Ra=v;return a|0}f=a+18|0;h=e[f>>1]|0;if(!i){b[f>>1]=h&65519;a=0;Ra=v;return a|0}else{b[f>>1]=h|16;a=0;Ra=v;return a|0}}case 12:{c[h>>2]=c[(c[a+4>>2]|0)+16>>2];a=Bb(31408,h)|0;c[g>>2]=a;a=0;Ra=v;return a|0}case 16:{f=a+4|0;h=c[(c[f>>2]|0)+8>>2]|0;h=pb(h,((h|0)<0)<<31>>31)|0;if(!h){a=0;Ra=v;return a|0}ye(c[(c[f>>2]|0)+8>>2]|0,h)|0;c[g>>2]=h;a=0;Ra=v;return a|0}case 20:{f=a+8|0;if(c[f>>2]|0)if(!(Xa[c[2388>>2]&255](c[a+32>>2]|0,m)|0)){f=(c[f>>2]|0)+8|0;f=(c[f+4>>2]|0?1:(c[f>>2]|0)!=(c[m+72>>2]|0))&1}else f=1;else f=0;c[g>>2]=f;a=0;Ra=v;return a|0}default:{a=12;Ra=v;return a|0}}while(0);return 0}function le(a){a=a|0;var d=0,e=0;d=a+44|0;e=c[d>>2]|0;if(e|0)return e|0;if(b[a+18>>1]&16){e=a+48|0;c[e>>2]=c[e>>2]|4096}c[d>>2]=4096;e=4096;return e|0}function me(a){a=a|0;var d=0,e=0;d=a+44|0;if(!(c[d>>2]|0)){if(b[a+18>>1]&16){e=a+48|0;c[e>>2]=c[e>>2]|4096}c[d>>2]=4096}return c[a+48>>2]|0}function ne(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=Ra;Ra=Ra+176|0;C=D+72|0;y=D+48|0;v=D+24|0;u=D+8|0;r=D;x=D+92|0;B=Va[c[2640>>2]&127]()|0;B=(B|0)<32768?1:(B|0)/32768|0;w=d+36|0;j=c[w>>2]|0;if(!j){if(mb()|0){i=7;Ra=D;return i|0}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](16)|0;if(!j){i=7;Ra=D;return i|0}else t=j}else{j=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){t=c[14978]|0;q=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;p=L()|0;c[14768]=((p|0)<0|(p|0)==0&q>>>0<=t>>>0)&1}k=Wa[c[29340>>2]&127](j)|0;if(!k){i=7;Ra=D;return i|0}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;t=k}else t=k};c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;o=d+8|0;p=c[o>>2]|0;k=c[p+40>>2]|0;a:do if(!k){n=d+32|0;l=c[n>>2]|0;b:do if(!(Xa[c[2400>>2]&255](c[d+12>>2]|0,x)|0)){m=Eu(l)|0;j=m+42|0;k=pb(j,0)|0;if(!k)j=7;else{gw(k|0,0,j|0)|0;q=k+36|0;c[k+8>>2]=q;c[r>>2]=l;Cb(m+6|0,q,32098,r)|0;l=k+12|0;c[l>>2]=-1;r=c[o>>2]|0;c[r+40>>2]=k;c[k>>2]=r;if(c[7325]|0)c[k+4>>2]=8;if(!(a[p+29>>0]|0)){j=c[n>>2]|0;c:do if((j|0)!=0?(s=j+(((Eu(j)|0)&1073741823)+1)|0,(a[s>>0]|0)!=0):0){j=s;while(1){s=Bu(j,32105)|0;j=j+(((Eu(j)|0)&1073741823)+1)|0;if(!s)break;j=j+(((Eu(j)|0)&1073741823)+1)|0;if(!(a[j>>0]|0)){A=26;break c}}if((Zm(j,1,0)|0)<<24>>24)m=c[l>>2]|0;else A=26}else A=26;while(0);if((A|0)==26){m=xe(q,66,c[x+12>>2]&511)|0;c[l>>2]=m}do if((m|0)<0){m=xe(q,0,c[x+12>>2]&511)|0;c[l>>2]=m;if((m|0)<0){c[u>>2]=31984;c[u+4>>2]=37077;c[u+8>>2]=31517;Db(14,32001,u);i=uu()|0;i=c[i>>2]|0;j=dv(i)|0;c[v>>2]=37077;c[v+4>>2]=i;c[v+8>>2]=31690;c[v+12>>2]=q;c[v+16>>2]=j;Db(14,31953,v);j=14;break b}else{a[k+22>>0]=1;break}}while(0);j=c[x+20>>2]|0;l=c[x+24>>2]|0;if(!(Va[c[2592>>2]&127]()|0))Ya[c[2580>>2]&127](m,j,l)|0;j=ze(d,k)|0;switch(j|0){case 0:case 1288:break;default:break b}}else j=0;break a}}else j=1802;while(0);Ae(d);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);i=j;Ra=D;return i|0}else{i=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);i=j;Ra=D;return i|0}}else j=0;while(0);c[t>>2]=k;v=k+28|0;c[v>>2]=(c[v>>2]|0)+1;c[w>>2]=t;w=k+32|0;c[t+4>>2]=c[w>>2];c[w>>2]=t;if(!j)j=t;else{i=j;Ra=D;return i|0}}t=c[j>>2]|0;j=t+23|0;do if(a[j>>0]|0){k=ze(d,t)|0;if(!k){a[j>>0]=0;A=44;break}else{j=t+20|0;break}}else A=44;while(0);if((A|0)==44){q=B+f|0;q=q-((q|0)%(B|0)|0)|0;s=t+20|0;if((q|0)>(e[s>>1]|0)){k=G(q,g)|0;c[t+16>>2]=g;r=t+12|0;j=c[r>>2]|0;d:do if((j|0)>-1)if(!(Xa[c[2400>>2]&255](j,x)|0)){j=c[x+36>>2]|0;if((j|0)<(k|0))if(h){j=(j|0)/4096|0;n=(k|0)/4096|0;if((j|0)<(n|0)){e:while(1){k=c[r>>2]|0;l=j<<12|4095;while(1){if((xv(k,l,0)|0)<0){A=56;break e}m=Ya[c[2472>>2]&127](k,59952,1)|0;if((m|0)>=0)break;h=uu()|0;if((c[h>>2]|0)!=4){A=56;break e}}j=j+1|0;if((m|0)!=1)break;if((j|0)>=(n|0)){A=59;break d}}C=c[t+8>>2]|0;g=uu()|0;g=c[g>>2]|0;j=dv(g)|0;c[y>>2]=37221;c[y+4>>2]=g;c[y+8>>2]=31761;c[y+12>>2]=(C|0)==0?59952:C;c[y+16>>2]=j;Db(4874,31953,y);j=4874}else A=59}else j=0;else A=59}else j=4874;else A=59;while(0);f:do if((A|0)==59){m=t+24|0;j=c[m>>2]|0;k=q<<2;if((mb()|0)==0?(z=sb(j,(k|0)>0?k:0,0)|0,(z|0)!=0):0){c[m>>2]=z;j=e[s>>1]|0;if((q|0)>(j|0)){n=G(B,g)|0;o=t+22|0;p=((n|0)<0)<<31>>31;g:do if((B|0)>0)while(1){k=c[r>>2]|0;if((k|0)>-1){j=G(j,g)|0;j=$a[c[2604>>2]&127](0,n,(a[o>>0]|0)==0?3:1,1,k,j)|0;if((j|0)==(-1|0))break g}else{j=pb(n,p)|0;if(!j){j=7;break f}gw(j|0,0,n|0)|0}l=e[s>>1]|0;k=0;do{A=j+(G(k,g)|0)|0;c[(c[m>>2]|0)+(k+l<<2)>>2]=A;k=k+1|0}while((k|0)!=(B|0));j=B+l|0;b[s>>1]=j;j=j&65535;if((q|0)<=(j|0)){j=0;break f}}else while(1){k=c[r>>2]|0;if((k|0)>-1){A=G(j,g)|0;if(($a[c[2604>>2]&127](0,n,(a[o>>0]|0)==0?3:1,1,k,A)|0)==(-1|0))break g}else{j=pb(n,p)|0;if(!j){j=7;break f}gw(j|0,0,n|0)|0}j=B+(e[s>>1]|0)|0;b[s>>1]=j;j=j&65535;if((q|0)<=(j|0)){j=0;break f}}while(0);g=c[t+8>>2]|0;B=uu()|0;B=c[B>>2]|0;j=dv(B)|0;c[C>>2]=37248;c[C+4>>2]=B;c[C+8>>2]=31848;c[C+12>>2]=(g|0)==0?59952:g;c[C+16>>2]=j;Db(5386,31953,C);j=5386}else j=0}else j=3082}while(0);k=j;j=s}else{k=0;j=s}}if((e[j>>1]|0)>(f|0))j=c[(c[t+24>>2]|0)+(f<<2)>>2]|0;else j=0;c[i>>2]=j;i=(k|0)==0&(a[t+22>>0]|0)!=0?8:k;Ra=D;return i|0} -function fb(a){a=a|0;var b=0;b=Ra;Ra=Ra+a|0;Ra=Ra+15&-16;return b|0}function gb(){return Ra|0}function hb(a){a=a|0;Ra=a}function ib(a,b){a=a|0;b=b|0;Ra=a;Sa=b}function jb(a){a=a|0;var b=0,d=0,e=0;e=c[a+20>>2]|0;if((e|0)<=0)return;b=c[a+16>>2]|0;a=0;do{d=c[b+(a<<4)+4>>2]|0;if(d|0)c[(c[d+4>>2]|0)+4>>2]=c[d>>2];a=a+1|0}while((a|0)<(e|0));return}function kb(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=e+116|0;f=c[s>>2]|0;g=b[e+144>>1]|0;a:do if((f|0)!=0&g<<16>>16!=0){o=f+(((g&65535)<<1)*40|0)|0;j=c[f+32>>2]|0;k=j+480|0;g=(j|0)==0;l=j+304|0;m=j+308|0;n=j+300|0;if(c[k>>2]|0){if(g)while(1){do if(c[f+24>>2]|0?(h=c[f+20>>2]|0,h|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{n=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);f=f+40|0;if(f>>>0>=o>>>0)break a}while(1){do if(c[f+24>>2]|0?(i=c[f+20>>2]|0,i|0):0){if(c[k>>2]|0){Xd(j,i);break}h=i;if((c[l>>2]|0)>>>0<=h>>>0?(c[m>>2]|0)>>>0>h>>>0:0){c[i>>2]=c[n>>2];c[n>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{h=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);f=f+40|0;if(f>>>0>=o>>>0)break a}}if(g)while(1){g=f+8|0;if(!(b[g>>1]&9216)){h=f+24|0;if(c[h>>2]|0){i=c[f+20>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{n=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[h>>2]=0}}else Cg(f);b[g>>1]=128;f=f+40|0;if(f>>>0>=o>>>0)break a}do{g=f+8|0;if(!(b[g>>1]&9216)){h=f+24|0;if(c[h>>2]|0){i=c[f+20>>2]|0;do if(!(c[k>>2]|0)){t=i;if((c[l>>2]|0)>>>0<=t>>>0?(c[m>>2]|0)>>>0>t>>>0:0){c[i>>2]=c[n>>2];c[n>>2]=i;break}if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}else Xd(j,i);while(0);c[h>>2]=0}}else Cg(f);b[g>>1]=128;f=f+40|0}while(f>>>0>>0)}while(0);f=c[e+212>>2]|0;if(f|0){k=(d|0)==0;l=d+480|0;m=d+304|0;n=d+308|0;o=d+300|0;do{i=f;f=c[f+24>>2]|0;j=c[i>>2]|0;g=c[i+4>>2]|0;if(j){if((g|0)>=1){g=j+((g+-1|0)*20|0)|0;do{h=a[g+1>>0]|0;if(h<<24>>24<-6)kg(d,h<<24>>24,c[g+16>>2]|0);g=g+-20|0}while(g>>>0>=j>>>0)}do if(!k){if(c[l>>2]|0){Xd(d,j);break}t=j;if((c[m>>2]|0)>>>0<=t>>>0?(c[n>>2]|0)>>>0>t>>>0:0){c[j>>2]=c[o>>2];c[o>>2]=j}else p=63}else p=63;while(0);do if((p|0)==63){p=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{t=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);if(i|0)p=67}else p=67;do if((p|0)==67){p=0;if(!k){if(c[l>>2]|0){Xd(d,i);break}t=i;if((c[m>>2]|0)>>>0<=t>>>0?(c[n>>2]|0)>>>0>t>>>0:0){c[i>>2]=c[o>>2];c[o>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0)}while((f|0)!=0)}do if((c[e+20>>2]|0)!=381479589){f=c[e+100>>2]|0;g=b[e+16>>1]|0;b:do if((f|0)!=0&g<<16>>16!=0){o=f+((g<<16>>16)*40|0)|0;j=c[f+32>>2]|0;k=j+480|0;g=(j|0)==0;l=j+304|0;m=j+308|0;n=j+300|0;if(c[k>>2]|0){if(g)while(1){do if(c[f+24>>2]|0?(q=c[f+20>>2]|0,q|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{t=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);f=f+40|0;if(f>>>0>=o>>>0)break b}while(1){do if(c[f+24>>2]|0?(r=c[f+20>>2]|0,r|0):0){if(c[k>>2]|0){Xd(j,r);break}t=r;if((c[l>>2]|0)>>>0<=t>>>0?(c[m>>2]|0)>>>0>t>>>0:0){c[r>>2]=c[n>>2];c[n>>2]=r;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{t=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);f=f+40|0;if(f>>>0>=o>>>0)break b}}if(g)while(1){g=f+8|0;if(!(b[g>>1]&9216)){h=f+24|0;if(c[h>>2]|0){i=c[f+20>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[h>>2]=0}}else Cg(f);b[g>>1]=128;f=f+40|0;if(f>>>0>=o>>>0)break b}do{g=f+8|0;if(!(b[g>>1]&9216)){h=f+24|0;if(c[h>>2]|0){i=c[f+20>>2]|0;do if(!(c[k>>2]|0)){t=i;if((c[l>>2]|0)>>>0<=t>>>0?(c[m>>2]|0)>>>0>t>>>0:0){c[i>>2]=c[n>>2];c[n>>2]=i;break}if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}else Xd(j,i);while(0);c[h>>2]=0}}else Cg(f);b[g>>1]=128;f=f+40|0}while(f>>>0>>0)}while(0);f=c[e+128>>2]|0;do if(f|0){if(d|0){if(c[d+480>>2]|0){Xd(d,f);break}t=f;if((c[d+304>>2]|0)>>>0<=t>>>0?(c[d+308>>2]|0)>>>0>t>>>0:0){t=d+300|0;c[f>>2]=c[t>>2];c[t>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[e+192>>2]|0;if(f|0){if(d|0){if(c[d+480>>2]|0){Xd(d,f);break}t=f;if((c[d+304>>2]|0)>>>0<=t>>>0?(c[d+308>>2]|0)>>>0>t>>>0:0){t=d+300|0;c[f>>2]=c[t>>2];c[t>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}}while(0);h=c[e+104>>2]|0;f=c[e+108>>2]|0;do if(h|0){if((f|0)>=1){f=h+((f+-1|0)*20|0)|0;do{g=a[f+1>>0]|0;if(g<<24>>24<-6)kg(d,g<<24>>24,c[f+16>>2]|0);f=f+-20|0}while(f>>>0>=h>>>0)}if(d|0){if(c[d+480>>2]|0){Xd(d,h);break}t=h;if((c[d+304>>2]|0)>>>0<=t>>>0?(c[d+308>>2]|0)>>>0>t>>>0:0){t=d+300|0;c[h>>2]=c[t>>2];c[t>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{t=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);f=c[s>>2]|0;do if(f|0){if(d|0){if(c[d+480>>2]|0){Xd(d,f);break}t=f;if((c[d+304>>2]|0)>>>0<=t>>>0?(c[d+308>>2]|0)>>>0>t>>>0:0){t=d+300|0;c[f>>2]=c[t>>2];c[t>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[e+188>>2]|0;if(!f)return;if(d|0){if(c[d+480>>2]|0){Xd(d,f);return}t=f;if((c[d+304>>2]|0)>>>0<=t>>>0?(c[d+308>>2]|0)>>>0>t>>>0:0){t=d+300|0;c[f>>2]=c[t>>2];c[t>>2]=f;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);return}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);return}}function lb(a,b){a=a|0;b=b|0;var d=0;if(!b)return;if(a|0){if(c[a+480>>2]|0){Xd(a,b);return}d=b;if((c[a+304>>2]|0)>>>0<=d>>>0?(c[a+308>>2]|0)>>>0>d>>>0:0){d=a+300|0;c[b>>2]=c[d>>2];c[d>>2]=b;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function mb(){var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=Ra;Ra=Ra+16|0;n=p+8|0;b=p;if(c[7380]|0){o=0;Ra=p;return o|0}c[7382]=1;if(!(c[7383]|0)){if(!(c[7335]|0)){c[b>>2]=30308;xd(4,b)|0};c[14764]=0;c[14765]=0;c[14766]=0;c[14767]=0;c[14768]=0;c[14769]=0;c[14764]=8;if((c[7374]|0)==0|(c[7375]|0)<512|(c[7376]|0)<1){c[7374]=0;c[7375]=0}b=Wa[c[29360>>2]&127](c[7342]|0)|0;if(b|0){c[14764]=0;c[14765]=0;c[14766]=0;c[14767]=0;c[14768]=0;c[14769]=0;o=b;Ra=p;return o|0}}c[7383]=1;if(!(c[7386]|0))c[7386]=8;e=(c[7385]|0)+1|0;c[7385]=e;if(!(c[7381]|c[7380])){c[7381]=1;b=59088;e=b+92|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));k=c[5448]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;a:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-i|0;if(!(m<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=23;break a}}if(e){b=e+12|0;c[5443]=c[b>>2]}else o=23}else o=23;while(0);if((o|0)==23){c[5443]=0;c[5449]=j}c[b>>2]=21760;k=c[5458]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;b:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-i|0;if(!(m<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=35;break b}}if(e){b=e+12|0;c[5453]=c[b>>2]}else o=35}else o=35;while(0);if((o|0)==35){c[5453]=0;c[5459]=j}c[b>>2]=21800;k=c[5468]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;c:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-i|0;if(!(m<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;m=a[g>>0]|0;f=(d[208+(m&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=47;break c}}if(e){b=e+12|0;c[5463]=c[b>>2]}else o=47}else o=47;while(0);if((o|0)==47){c[5463]=0;c[5469]=j}c[b>>2]=21840;l=0;do{m=21888+(l*40|0)|0;k=c[21888+(l*40|0)+32>>2]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;d:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;h=a[g>>0]|0;f=(d[208+(h&255)>>0]|0)-i|0;if(!(h<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;q=a[g>>0]|0;f=(d[208+(q&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=60;break d}}if(e){b=e+12|0;c[21888+(l*40|0)+12>>2]=c[b>>2]}else o=60}else o=60;while(0);if((o|0)==60){o=0;c[21888+(l*40|0)+12>>2]=0;c[21888+(l*40|0)+36>>2]=j}c[b>>2]=m;l=l+1|0}while((l|0)!=15);l=0;do{m=22496+(l*40|0)|0;k=c[22496+(l*40|0)+32>>2]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;e:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;q=a[g>>0]|0;f=(d[208+(q&255)>>0]|0)-i|0;if(!(q<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;q=a[g>>0]|0;f=(d[208+(q&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=74;break e}}if(e){b=e+12|0;c[22496+(l*40|0)+12>>2]=c[b>>2]}else o=74}else o=74;while(0);if((o|0)==74){o=0;c[22496+(l*40|0)+12>>2]=0;c[22496+(l*40|0)+36>>2]=j}c[b>>2]=m;l=l+1|0}while((l|0)!=8);l=0;do{m=19424+(l*40|0)|0;k=c[19424+(l*40|0)+32>>2]|0;if(!k)b=0;else b=(Eu(k)|0)&1073741823;f=a[k>>0]|0;b=59088+(((b+(f<<24>>24)|0)%23|0)<<2)|0;e=c[b>>2]|0;j=e;f:do if(e){i=d[208+(f&255)>>0]|0;while(1){g=c[e+32>>2]|0;q=a[g>>0]|0;f=(d[208+(q&255)>>0]|0)-i|0;if(!(q<<24>>24==0|(f|0)!=0)){h=k;do{g=g+1|0;h=h+1|0;q=a[g>>0]|0;f=(d[208+(q&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(f|0)!=0))}if(!f)break;e=c[e+36>>2]|0;if(!e){o=88;break f}}if(e){b=e+12|0;c[19424+(l*40|0)+12>>2]=c[b>>2]}else o=88}else o=88;while(0);if((o|0)==88){o=0;c[19424+(l*40|0)+12>>2]=0;c[19424+(l*40|0)+36>>2]=j}c[b>>2]=m;l=l+1|0}while((l|0)!=57);if(!(c[7384]|0)){b=c[7354]|0;if(!b){c[n>>2]=30340;xd(18,n)|0;b=c[7354]|0}b=Wa[b&127](c[7353]|0)|0;if(!b)o=94}else o=94;g:do if((o|0)==94){c[7384]=1;if(!(mb()|0)){do if(!(c[7324]|0)){b=Wa[c[29340>>2]&127](10)|0;if(!b){b=7;break g}}else{b=Wa[c[29356>>2]&127](10)|0;if((c[14985]|0)>>>0<10)c[14985]=10;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){q=c[14978]|0;o=Tv(e|0,f|0,b|0,((b|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=q>>>0)&1}b=Wa[c[29340>>2]&127](b)|0;if(!b){b=7;break g}e=Wa[c[29352>>2]&127](b)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0<=(c[14987]|0)>>>0)break;c[14987]=e}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](b);else{q=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b)}if(!(mb()|0)){b=c[14770]|0;do if((b|0)==464){b=c[119]|0;c[14770]=b}else{if(!b){b=0;break}e=b;while(1){f=c[e+12>>2]|0;if((f|0)!=464&(f|0)!=0)e=f;else break}if((f|0)!=464)break;c[e+12>>2]=c[119]}while(0);c[119]=b;c[14770]=464}if(!(mb()|0)){b=c[14770]|0;do if((b|0)==552){b=c[141]|0;c[14770]=b;o=138}else{if(!b){o=140;break}e=b;while(1){f=c[e+12>>2]|0;if((f|0)!=552&(f|0)!=0)e=f;else break}if((f|0)!=552){o=138;break}c[e+12>>2]=c[141];o=138}while(0);do if((o|0)==138){if(!b){o=140;break}b=b+12|0;c[141]=c[b>>2]}while(0);if((o|0)==140){c[141]=0;b=59080}c[b>>2]=552}if(!(mb()|0)){b=c[14770]|0;do if((b|0)==640){b=c[163]|0;c[14770]=b;o=150}else{if(!b){o=152;break}e=b;while(1){f=c[e+12>>2]|0;if((f|0)!=640&(f|0)!=0)e=f;else break}if((f|0)!=640){o=150;break}c[e+12>>2]=c[163];o=150}while(0);do if((o|0)==150){if(!b){o=152;break}b=b+12|0;c[163]=c[b>>2]}while(0);if((o|0)==152){c[163]=0;b=59080}c[b>>2]=640}if(!(mb()|0)){b=c[14770]|0;do if((b|0)==728){b=c[185]|0;c[14770]=b;o=162}else{if(!b){o=164;break}e=b;while(1){f=c[e+12>>2]|0;if((f|0)!=728&(f|0)!=0)e=f;else break}if((f|0)!=728){o=162;break}c[e+12>>2]=c[185];o=162}while(0);do if((o|0)==162){if(!b){o=164;break}b=b+12|0;c[185]=c[b>>2]}while(0);if((o|0)==164){c[185]=0;b=59080}c[b>>2]=728}b=c[7374]|0;if(c[14810]|0){i=(b|0)==0;j=i?0:c[7376]|0;e=(j|0)==0;i=i|e?0:c[7375]&-8;c[14813]=i;c[14820]=j;c[14814]=j;if((j|0)>90)f=10;else f=((j|0)/10|0)+1|0;c[14815]=f;c[14816]=b;c[14819]=0;c[14821]=0;if(!e){g=G(i,j+-1|0)|0;e=b;f=j;h=0;while(1){f=f+-1|0;c[e>>2]=h;h=e;if(!f)break;else e=e+i|0}q=G(i,j)|0;c[14819]=b+g;b=b+q|0}c[14817]=b}c[7380]=1;b=0}else b=7}while(0);c[7381]=0;e=c[7385]|0}else b=0;c[7385]=e+-1;if((e|0)>=2){q=b;Ra=p;return q|0}c[7386]=0;q=b;Ra=p;return q|0}function nb(a){a=a|0;var b=0,d=0,e=0;if((a|0)<1|(mb()|0)!=0){d=0;return d|0}d=Sv(a|0,((a|0)<0)<<31>>31|0,-1,-1)|0;b=L()|0;if(b>>>0>0|(b|0)==0&d>>>0>2147483390){d=0;return d|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](a)|0;return d|0}d=Wa[c[29356>>2]&127](a)|0;if((c[14985]|0)>>>0>>0)c[14985]=a;b=59064;a=c[b>>2]|0;b=c[b+4>>2]|0;if((b|0)>0|(b|0)==0&a>>>0>0){e=c[14978]|0;b=Tv(a|0,b|0,d|0,((d|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&b>>>0<=e>>>0)&1}b=Wa[c[29340>>2]&127](d)|0;if(!b){e=0;return e|0}a=Wa[c[29352>>2]&127](b)|0;a=(c[14978]|0)+a|0;c[14978]=a;if(a>>>0>(c[14982]|0)>>>0)c[14982]=a;a=(c[14981]|0)+1|0;c[14981]=a;if(a>>>0<=(c[14987]|0)>>>0){e=b;return e|0}c[14987]=a;e=b;return e|0}function ob(a,b){a=a|0;b=b|0;var d=0,e=0;d=Sv(a|0,b|0,-1,-1)|0;b=L()|0;if(b>>>0>0|(b|0)==0&d>>>0>2147483390){d=0;return d|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](a)|0;return d|0}d=Wa[c[29356>>2]&127](a)|0;if((c[14985]|0)>>>0>>0)c[14985]=a;a=59064;b=c[a>>2]|0;a=c[a+4>>2]|0;if((a|0)>0|(a|0)==0&b>>>0>0){e=c[14978]|0;a=Tv(b|0,a|0,d|0,((d|0)<0)<<31>>31|0)|0;b=L()|0;c[14768]=((b|0)<0|(b|0)==0&a>>>0<=e>>>0)&1}a=Wa[c[29340>>2]&127](d)|0;if(!a){e=0;return e|0}b=Wa[c[29352>>2]&127](a)|0;b=(c[14978]|0)+b|0;c[14978]=b;if(b>>>0>(c[14982]|0)>>>0)c[14982]=b;b=(c[14981]|0)+1|0;c[14981]=b;if(b>>>0<=(c[14987]|0)>>>0){e=a;return e|0}c[14987]=b;e=a;return e|0}function pb(a,b){a=a|0;b=b|0;var d=0,e=0;d=(mb()|0)!=0;b=Sv(a|0,b|0,-1,-1)|0;e=L()|0;if(e>>>0>0|(e|0)==0&b>>>0>2147483390|d){e=0;return e|0}if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](a)|0;return e|0}d=Wa[c[29356>>2]&127](a)|0;if((c[14985]|0)>>>0>>0)c[14985]=a;a=59064;b=c[a>>2]|0;a=c[a+4>>2]|0;if((a|0)>0|(a|0)==0&b>>>0>0){e=c[14978]|0;a=Tv(b|0,a|0,d|0,((d|0)<0)<<31>>31|0)|0;b=L()|0;c[14768]=((b|0)<0|(b|0)==0&a>>>0<=e>>>0)&1}a=Wa[c[29340>>2]&127](d)|0;if(!a){e=0;return e|0}b=Wa[c[29352>>2]&127](a)|0;b=(c[14978]|0)+b|0;c[14978]=b;if(b>>>0>(c[14982]|0)>>>0)c[14982]=b;b=(c[14981]|0)+1|0;c[14981]=b;if(b>>>0<=(c[14987]|0)>>>0){e=a;return e|0}c[14987]=b;e=a;return e|0}function qb(a){a=a|0;var b=0;if(!a)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function rb(a){a=a|0;return Wa[c[29352>>2]&127](a)|0}function sb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if(!a){e=Sv(b|0,d|0,-1,-1)|0;a=L()|0;if(a>>>0>0|(a|0)==0&e>>>0>2147483390){e=0;return e|0}if(!(c[7324]|0)){e=Wa[c[29340>>2]&127](b)|0;return e|0}a=Wa[c[29356>>2]&127](b)|0;if((c[14985]|0)>>>0>>0)c[14985]=b;b=59064;d=c[b>>2]|0;b=c[b+4>>2]|0;if((b|0)>0|(b|0)==0&d>>>0>0){e=c[14978]|0;b=Tv(d|0,b|0,a|0,((a|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&b>>>0<=e>>>0)&1}b=Wa[c[29340>>2]&127](a)|0;if(!b){e=0;return e|0}d=Wa[c[29352>>2]&127](b)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0<=(c[14987]|0)>>>0){e=b;return e|0}c[14987]=d;e=b;return e|0}if((b|0)==0&(d|0)==0)if(!(c[7324]|0)){ab[c[29344>>2]&127](a);e=0;return e|0}else{e=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);e=0;return e|0}if(d>>>0>0|(d|0)==0&b>>>0>2147483391){e=0;return e|0}e=Wa[c[29352>>2]&127](a)|0;d=Wa[c[29356>>2]&127](b)|0;if((d|0)==(e|0)){e=a;return e|0}if(!(c[7324]|0)){e=Xa[c[29348>>2]&255](a,d)|0;return e|0}if((c[14985]|0)>>>0>>0)c[14985]=b;b=Xa[c[29348>>2]&255](a,d)|0;f=59064;g=c[f+4>>2]|0;if((b|0)==0&((g|0)>0|(g|0)==0&(c[f>>2]|0)>>>0>0))b=Xa[c[29348>>2]&255](a,d)|0;if(!b){g=0;return g|0}d=(Wa[c[29352>>2]&127](b)|0)-e|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0<=(c[14982]|0)>>>0){g=b;return g|0}c[14982]=d;g=b;return g|0}function tb(f,h,i){f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;fa=Ra;Ra=Ra+96|0;X=fa+80|0;Z=fa+72|0;_=fa;ba=f+21|0;if(!(a[ba>>0]&2)){I=1;J=0}else{I=(c[i>>2]|0)+(4-1)&~(4-1);J=c[I>>2]|0;c[i>>2]=I+4;I=0}Q=J+4|0;R=J+8|0;ca=f+16|0;da=f+8|0;ea=f+4|0;S=f+20|0;T=_+1|0;U=_+2|0;V=_+3|0;W=f+12|0;j=0;H=0;a:while(1){switch(a[h>>0]|0){case 0:{F=543;break a}case 37:{z=j;break}default:{j=h;b:while(1){j=j+1|0;switch(a[j>>0]|0){case 37:case 0:break b;default:{}}}k=j-h|0;l=c[ca>>2]|0;m=l+k|0;if(m>>>0<(c[da>>2]|0)>>>0){if(k|0){c[ca>>2]=m;ew((c[ea>>2]|0)+l|0,h|0,k|0)|0}}else wb(f,h,k);if(!(a[j>>0]|0)){F=543;break a}else{z=h;h=j}}}l=h+1|0;h=a[l>>0]|0;if(!(h<<24>>24)){F=13;break}k=h<<24>>24;m=-1;h=0;y=0;j=0;x=0;E=0;D=0;v=0;w=l;c:while(1){switch(k|0){case 108:{F=24;break c}case 45:{p=x;q=E;u=D;n=1;k=w;break}case 43:{j=43;p=x;q=E;u=D;n=y;k=w;break}case 32:{j=32;p=x;q=E;u=D;n=y;k=w;break}case 35:{p=1;q=E;u=D;n=y;k=w;break}case 33:{p=x;q=1;u=D;n=y;k=w;break}case 48:{p=x;q=E;u=1;n=y;k=w;break}case 44:{p=x;q=E;u=D;v=44;n=y;k=w;break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{h=k+-48|0;n=w+1|0;p=a[n>>0]|0;l=p<<24>>24;if((p+-48&255)<10){k=n;while(1){h=l+(h*10|0)+-48|0;n=k+1|0;p=a[n>>0]|0;l=p<<24>>24;if((p+-48&255)<10)k=n;else break}}else k=w;h=h&2147483647;switch(p<<24>>24){case 46:case 108:{p=x;q=E;u=D;n=y;break}default:{G=n;n=0;k=l;break c}}break}case 42:{do if(!I){h=c[Q>>2]|0;if((c[J>>2]|0)>(h|0)){k=c[R>>2]|0;c[Q>>2]=h+1;h=c[k+(h<<2)>>2]|0;k=e[h+8>>1]|0;if(k&4|0){h=c[h>>2]|0;F=39;break}if(k&8|0){h=Mg(+g[h>>3])|0;L()|0;F=39;break}if(k&18){h=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0;F=39}else{h=0;F=40}}else{h=0;F=40}}else{F=(c[i>>2]|0)+(4-1)&~(4-1);h=c[F>>2]|0;c[i>>2]=F+4;F=39}while(0);if((F|0)==39){F=0;if((h|0)<0){l=1;h=(h|0)==-2147483648?0:0-h|0}else F=40}if((F|0)==40){F=0;l=y}k=a[w+1>>0]|0;switch(k<<24>>24){case 46:case 108:{p=x;q=E;u=D;n=l;k=w;break}default:{F=61;break c}}break}case 46:{l=w+1|0;k=a[l>>0]|0;if(k<<24>>24==42){do if(!I){k=c[Q>>2]|0;if((c[J>>2]|0)>(k|0)){l=c[R>>2]|0;c[Q>>2]=k+1;k=c[l+(k<<2)>>2]|0;l=e[k+8>>1]|0;if(l&4|0){k=c[k>>2]|0;F=52;break}if(l&8|0){k=Mg(+g[k>>3])|0;L()|0;F=52;break}if(l&18){k=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;L()|0;F=52}else k=0}else k=0}else{F=(c[i>>2]|0)+(4-1)&~(4-1);k=c[F>>2]|0;c[i>>2]=F+4;F=52}while(0);if((F|0)==52){F=0;k=(k|0)<0?((k|0)==-2147483648?-1:0-k|0):k}l=w+2|0;p=a[l>>0]|0}else{k=k<<24>>24;if((k+-48|0)>>>0<10){n=0;do{n=k+-48+(n*10|0)|0;l=l+1|0;m=a[l>>0]|0;k=m<<24>>24}while((k+-48|0)>>>0<10);k=m<<24>>24}else n=0;p=k;k=n&2147483647}if((p|0)==108){p=x;q=E;u=D;n=y;m=k;k=l+-1|0}else{G=l;n=0;m=k;k=p;break c}break}default:{G=w;n=0;break c}}l=k+1|0;k=a[l>>0]|0;if(!(k<<24>>24)){F=543;break a}else{k=k<<24>>24;y=n;x=p;E=q;D=u;w=l}}if((F|0)==24){F=0;k=w+1|0;l=a[k>>0]|0;if(l<<24>>24==108){k=w+2|0;G=k;n=2;k=a[k>>0]|0}else{G=k;n=1;k=l<<24>>24}}else if((F|0)==61){F=0;G=w+1|0;y=l;n=0;k=k<<24>>24}d:do switch(k|0){case 100:{C=0;break}case 115:{C=1;break}case 103:{C=2;break}case 122:{C=3;break}case 113:{C=4;break}case 81:{C=5;break}case 119:{C=6;break}case 99:{C=7;break}case 111:{C=8;break}case 117:{C=9;break}case 120:{C=10;break}case 88:{C=11;break}case 102:{C=12;break}case 101:{C=13;break}case 69:{C=14;break}case 71:{C=15;break}case 105:{C=16;break}case 110:{C=17;break}case 37:{C=18;break}case 112:{C=19;break}case 84:{C=20;break}default:{switch(k|0){case 83:{C=21;break d}case 114:break;default:{F=543;break a}}C=22}}while(0);k=a[16+(C*6|0)+3>>0]|0;e:do switch(k<<24>>24){case 13:{k=1;F=86;break}case 0:case 15:{k=n;F=86;break}case 16:{k=n;F=87;break}case 3:case 2:case 1:{do if(I){F=(c[i>>2]|0)+(8-1)&~(8-1);o=+g[F>>3];c[i>>2]=F+8;F=208}else{l=c[Q>>2]|0;if((c[J>>2]|0)>(l|0)){n=c[R>>2]|0;c[Q>>2]=l+1;l=c[n+(l<<2)>>2]|0;n=e[l+8>>1]|0;if(n&8|0){o=+g[l>>3];F=208;break}if(n&4|0){F=l;o=+((c[F>>2]|0)>>>0)+4294967296.0*+(c[F+4>>2]|0);F=208;break}if(n&18|0){o=+Kg(a[l+10>>0]|0,c[l+12>>2]|0,c[l+16>>2]|0);F=208;break}}o=0.0;B=j;l=(m|0)<0?6:m}while(0);if((F|0)==208){F=0;l=(m|0)<0?6:m;if(o<0.0){o=-o;B=45}else B=j}q=(C|0)==2|(C|0)==15;p=l+((q&(l|0)>0)<<31>>31)|0;j=p&4095;if(!j)r=.5;else{r=.5;while(1){r=r*.1;if((j|0)>1)j=j+-1|0;else break}}n=(C|0)==12;o=n?o+r:o;g[X>>3]=o;g[Z>>3]=+g[X>>3];if(+g[X>>3]==+g[Z>>3]){if(o>0.0){s=1.0;m=0;while(1){t=s*1.e+100;if(m>>>0<351&o>=t){s=t;m=m+100|0}else break}while(1){t=s*1.0e10;if(m>>>0<351&o>=t){s=t;m=m+10|0}else break}while(1){t=s*10.0;if(m>>>0<351&o>=t){s=t;m=m+1|0}else break}o=o/s;if(o<1.0e-08)do{o=o*1.0e8;m=m+-8|0}while(o<1.0e-08);if(o<1.0)do{o=o*10.0;m=m+-1|0}while(o<1.0);j=B<<24>>24!=0;if((m|0)>350){n=_+(j&1)|0;a[_>>0]=B;a[n>>0]=73;a[n+1>>0]=110;a[n+2>>0]=102;a[n+3>>0]=0;n=j?4:3;j=_;m=H;q=0;break e}}else m=0;if(!n){o=r+o;if(o>=10.0){o=o*.1;m=m+1|0}}z=(m|0)<-4|(p|0)<(m|0);A=q?x<<24>>24==0&1:E;l=q?p-(z?0:m)|0:l;z=(q?(z?2:1):k)<<24>>24==2;p=z?0:m;j=Sv(l|0,((l|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;j=Sv(j|0,L()|0,((p|0)>0?p:0)|0,0)|0;k=L()|0;f:do if((k|0)>0|(k|0)==0&j>>>0>55){u=Sv(j|0,k|0,15,0)|0;n=L()|0;if(a[S>>0]|0){F=543;break a}if((n|0)>0|((n|0)==0?u>>>0>(c[da>>2]|0)>>>0:0)?($=c[W>>2]|0,(n|0)>0|(n|0)==0&u>>>0>$>>>0):0){F=236;break a}q=c[f>>2]|0;g:do if(!q){w=Sv(j|0,k|0,14,0)|0;v=L()|0;if(v>>>0>0|(v|0)==0&w>>>0>2147483390){F=278;break a}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](u)|0;break}n=Wa[c[29356>>2]&127](u)|0;if((c[14985]|0)>>>0>>0)c[14985]=u;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){w=c[14978]|0;v=Tv(j|0,k|0,n|0,((n|0)<0)<<31>>31|0)|0;u=L()|0;c[14768]=((u|0)<0|(u|0)==0&v>>>0<=w>>>0)&1}k=Wa[c[29340>>2]&127](n)|0;if(!k){F=278;break a}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0){j=k;q=k;break f}c[14987]=j;j=k;q=k;break f}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){F=278;break a}}else{do if(!(n>>>0>0|((n|0)==0?u>>>0>(e[q+276>>1]|0)>>>0:0))){j=q+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];w=q+284|0;c[w>>2]=(c[w>>2]|0)+1;break g}j=q+296|0;k=c[j>>2]|0;if(!k){j=q+292|0;break}else{c[j>>2]=c[k>>2];w=q+284|0;c[w>>2]=(c[w>>2]|0)+1;break g}}else j=q+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}k=_d(q,u,n)|0}while(0);if(!k){F=278;break a}else{j=k;q=k}}else{j=_;q=0}while(0);n=((E&255)*10|0)+16|0;v=(E|x)&255|(l|0)>0;if(!(B<<24>>24))k=j;else{a[j>>0]=B;k=j+1|0}if((p|0)<0){a[k>>0]=48;k=k+1|0}else{u=k;while(1){w=(n|0)<1;x=~~o;o=w?o:(o-+(x|0))*10.0;n=n+((w^1)<<31>>31)|0;k=u+1|0;a[u>>0]=w?48:x+48&255;if((p|0)>0){u=k;p=p+-1|0}else{p=-1;break}}}w=(v|0)==0;if(!w){a[k>>0]=46;k=k+1|0}if((p|0)<-1){gw(k|0,48,~p|0)|0;while(1){k=k+1|0;l=l+-1|0;if((p|0)<-2)p=p+1|0;else break}}if((l|0)>0){v=n;while(1){n=(v|0)<1;p=~~o;u=k+1|0;a[k>>0]=n?48:p+48&255;if((l|0)>1){l=l+-1|0;k=u;v=v+((n^1)<<31>>31)|0;o=n?o:(o-+(p|0))*10.0}else{k=u;break}}}h:do if(!(A<<24>>24==0|w)){i:while(1){l=k+-1|0;switch(a[l>>0]|0){case 46:break i;case 48:break;default:break h}a[l>>0]=0;k=l}if(!(E<<24>>24)){a[l>>0]=0;k=l;break}else{a[k>>0]=48;k=k+1|0;break}}while(0);if(z){n=k+1|0;a[k>>0]=a[160+(d[16+(C*6|0)+4>>0]|0)>>0]|0;l=k+2|0;if((m|0)<0){a[n>>0]=45;m=0-m|0}else a[n>>0]=43;if((m|0)>99){E=(m>>>0)/100|0;a[l>>0]=E+48;l=k+3|0;k=m-(E*100|0)|0}else k=m;E=(k|0)/10|0;a[l>>0]=E+48;a[l+1>>0]=k-(E*10|0)+48;k=l+2|0}a[k>>0]=0;k=k-j|0;if(y<<24>>24==0&D<<24>>24!=0&(h|0)>(k|0)){l=h-k|0;if((k|0)>=0){k=h;while(1){a[j+k>>0]=a[j+(k-l)>>0]|0;if((k|0)>(l|0))k=k+-1|0;else break}}if(!l){n=h;m=H}else{gw(j+(B<<24>>24!=0&1)|0,48,l|0)|0;n=h;m=H}}else{n=k;m=H}}else{n=3;j=31167;m=H;q=0}break}case 4:{if(I){h=c[ca>>2]|0;j=(c[i>>2]|0)+(4-1)&~(4-1);n=c[j>>2]|0;c[i>>2]=j+4;c[n>>2]=h;n=0;h=0;j=z;m=H;q=0}else{n=0;h=0;j=z;m=H;q=0}break}case 7:{a[_>>0]=37;n=1;j=_;m=H;q=0;break}case 8:{j:do if(I){F=(c[i>>2]|0)+(4-1)&~(4-1);j=c[F>>2]|0;c[i>>2]=F+4;if(j>>>0<128){a[_>>0]=j;n=1;break}if(j>>>0<2048){a[_>>0]=j>>>6&31|192;a[T>>0]=j&63|128;n=2;break}if(j>>>0<65536){a[_>>0]=j>>>12&15|224;a[T>>0]=j>>>6&63|128;a[U>>0]=j&63|128;n=3;break}else{a[_>>0]=j>>>18&7|240;a[T>>0]=j>>>12&63|128;a[U>>0]=j>>>6&63|128;a[V>>0]=j&63|128;n=4;break}}else{j=c[Q>>2]|0;do if((c[J>>2]|0)>(j|0)?(aa=c[R>>2]|0,c[Q>>2]=j+1,aa=c[aa+(j<<2)>>2]|0,aa|0):0){j=b[aa+8>>1]|0;if((j&514)==514?(a[aa+10>>0]|0)==1:0)k=c[aa+16>>2]|0;else{if(j&1)break;k=Gg(aa,1)|0}if(k|0){F=a[k>>0]|0;a[_>>0]=F;if((F&255)<=191){n=1;break j}j=a[k+1>>0]|0;if((j&-64)<<24>>24!=-128){n=1;break j}a[T>>0]=j;j=a[k+2>>0]|0;if((j&-64)<<24>>24!=-128){n=2;break j}a[U>>0]=j;j=a[k+3>>0]|0;if((j&-64)<<24>>24!=-128){n=3;break j}a[V>>0]=j;n=4;break j}}while(0);a[_>>0]=0;n=1}while(0);if((m|0)>1){h=1-m+h|0;do if(!((h|0)<2|y<<24>>24!=0)){h=h+-1|0;F=Sv(c[ca>>2]|0,0,h|0,((h|0)<0)<<31>>31|0)|0;E=L()|0;if(!((E|0)<0|((E|0)==0?F>>>0<(c[da>>2]|0)>>>0:0))){h=vb(f,h)|0;if((h|0)<1){h=0;break}}while(1){E=c[ea>>2]|0;F=c[ca>>2]|0;c[ca>>2]=F+1;a[E+F>>0]=32;if((h|0)>1)h=h+-1|0;else{h=0;break}}}while(0);j=m;while(1){k=c[ca>>2]|0;l=k+n|0;if(l>>>0<(c[da>>2]|0)>>>0){c[ca>>2]=l;ew((c[ea>>2]|0)+k|0,_|0,n|0)|0}else wb(f,_,n);if((j|0)>2)j=j+-1|0;else{j=_;m=1;q=0;k=n;F=395;break}}}else{j=_;m=1;q=0;k=n;F=395}break}case 6:case 5:{do if(!I){j=c[Q>>2]|0;if((c[J>>2]|0)>(j|0)?(K=c[R>>2]|0,c[Q>>2]=j+1,K=c[K+(j<<2)>>2]|0,(K|0)!=0):0){j=b[K+8>>1]|0;if((j&514)==514?(a[K+10>>0]|0)==1:0){j=c[K+16>>2]|0;k=5;F=369;break}if(!(j&1)){j=Gg(K,1)|0;k=5;F=369}else{p=59952;k=0;F=380}}else{p=59952;k=0;F=380}}else{F=(c[i>>2]|0)+(4-1)&~(4-1);j=c[F>>2]|0;c[i>>2]=F+4;F=369}while(0);if((F|0)==369){F=0;if(j)if(k<<24>>24==6)if((c[ca>>2]|0)==0?(m|0)<0&((h|0)==0&(c[W>>2]|0)!=0):0)if(!(a[S>>0]|0)){c[ea>>2]=j;h=c[f>>2]|0;if(((h|0)!=0?(M=j,(c[h+304>>2]|0)>>>0<=M>>>0):0)?(c[h+308>>2]|0)>>>0>M>>>0:0)h=e[h+276>>1]|0;else h=Wa[c[29352>>2]&127](j)|0;c[da>>2]=h;n=(Eu(j)|0)&2147483647;c[ca>>2]=n;a[ba>>0]=a[ba>>0]|4;n=0;h=0;m=H;q=0;break e}else{l=j;h=0;k=j}else{p=j;k=j;F=380}else{p=j;k=0;F=380}else{p=59952;k=0;F=380}}if((F|0)==380){F=0;if((m|0)>-1){j=(m|0)!=0;if(!(E<<24>>24)){if(!j){n=0;j=p;m=H;q=k;break e}j=0;while(1){if(!(a[p+j>>0]|0)){n=j;j=p;m=H;q=k;break e}j=j+1|0;if((j|0)>=(m|0)){n=j;j=p;m=H;q=k;break e}}}k:do if(j){j=p;while(1){n=m;m=m+-1|0;l=a[j>>0]|0;if(!(l<<24>>24)){l=j;break k}j=j+1|0;if((l&255)>191)while(1)if((a[j>>0]&-64)<<24>>24==-128)j=j+1|0;else break;if((n|0)<=1){l=j;break}}}else l=p;while(0);j=p;m=E;q=k;k=l-p|0;F=395;break e}else l=p}j=l;m=E;q=k;k=(Eu(l)|0)&2147483647;F=395;break}case 14:case 10:case 9:{x=(C|0)==6?34:39;do if(!I){j=c[Q>>2]|0;if((c[J>>2]|0)>(j|0)?(N=c[R>>2]|0,c[Q>>2]=j+1,N=c[N+(j<<2)>>2]|0,(N|0)!=0):0){j=b[N+8>>1]|0;if((j&514)==514?(a[N+10>>0]|0)==1:0){j=c[N+16>>2]|0;break}if(!(j&1))j=Gg(N,1)|0;else j=0}else j=0}else{F=(c[i>>2]|0)+(4-1)&~(4-1);j=c[F>>2]|0;c[i>>2]=F+4}while(0);q=(j|0)==0;p=(C|0)==5;w=q?(p?31171:31176):j;l:do if(!m){l=0;v=0}else{n=x&255;if(!(E<<24>>24)){l=0;k=0;while(1){j=a[w+k>>0]|0;if(!(j<<24>>24)){v=k;break l}j=l+((j<<24>>24|0)==(n|0)&1)|0;k=k+1|0;m=m+-1|0;if(!m){l=j;v=k;break l}else l=j}}l=0;j=0;while(1){F=a[w+j>>0]|0;k=F<<24>>24;if(!(F<<24>>24)){v=j;break l}l=l+((k|0)==(n|0)&1)|0;if((k&192|0)==192)do j=j+1|0;while((a[w+j>>0]&-64)<<24>>24==-128);else j=j+1|0;m=m+-1|0;if(!m){v=j;break}}}while(0);u=p&(q^1);n=v+3+l|0;m:do if((n|0)>70){l=((n|0)<0)<<31>>31;if(a[S>>0]|0){F=543;break a}if(0<(l|0)|(0==(l|0)?(c[da>>2]|0)>>>0>>0:0)?(O=c[W>>2]|0,0<(l|0)|0==(l|0)&O>>>0>>0):0){F=423;break a}m=c[f>>2]|0;n:do if(!m){F=Sv(n|0,l|0,-1,-1)|0;D=L()|0;if(D>>>0>0|(D|0)==0&F>>>0>2147483390){F=465;break a}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](n)|0;break}l=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){F=c[14978]|0;D=Tv(j|0,k|0,l|0,((l|0)<0)<<31>>31|0)|0;C=L()|0;c[14768]=((C|0)<0|(C|0)==0&D>>>0<=F>>>0)&1}k=Wa[c[29340>>2]&127](l)|0;if(!k){F=465;break a}j=Wa[c[29352>>2]&127](k)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0){j=k;q=k;break m}c[14987]=j;j=k;q=k;break m}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){F=465;break a}}else{do if(!(0>>0|(0==(l|0)?(e[m+276>>1]|0)>>>0>>0:0))){j=m+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];F=m+284|0;c[F>>2]=(c[F>>2]|0)+1;break n}j=m+296|0;k=c[j>>2]|0;if(!k){j=m+292|0;break}else{c[j>>2]=c[k>>2];F=m+284|0;c[F>>2]=(c[F>>2]|0)+1;break n}}else j=m+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}k=_d(m,n,l)|0}while(0);if(!k){F=465;break a}else{j=k;q=k}}else{j=_;q=0}while(0);if(u){a[j>>0]=x;k=1}else k=0;if((v|0)>0){p=x&255;n=0;do{l=a[w+n>>0]|0;m=k+1|0;a[j+k>>0]=l;if((l<<24>>24|0)==(p|0)){a[j+m>>0]=l;k=k+2|0}else k=m;n=n+1|0}while((n|0)!=(v|0))}if(u){a[j+k>>0]=x;k=k+1|0}a[j+k>>0]=0;m=E;F=395;break}case 11:{if(!(a[ba>>0]&1)){F=543;break a}E=(c[i>>2]|0)+(4-1)&~(4-1);h=c[E>>2]|0;c[i>>2]=E+4;if((h|0)!=0?(P=c[h+4>>2]|0,(P|0)!=0):0){h=c[h>>2]|0;j=c[ca>>2]|0;k=j+P|0;if(k>>>0<(c[da>>2]|0)>>>0){c[ca>>2]=k;ew((c[ea>>2]|0)+j|0,h|0,P|0)|0;n=0;h=0;j=z;m=H;q=0;break e}else{wb(f,h,P);n=0;h=0;j=z;m=H;q=0;break e}}else{n=0;h=0;j=z;m=H;q=0}break}case 12:{if(!(a[ba>>0]&1)){F=543;break a}h=(c[i>>2]|0)+(4-1)&~(4-1);m=c[h>>2]|0;c[i>>2]=h+4;h=(c[i>>2]|0)+(4-1)&~(4-1);n=c[h>>2]|0;c[i>>2]=h+4;h=c[m+8+(n*72|0)+4>>2]|0;do if(h|0){j=(Eu(h)|0)&1073741823;k=c[ca>>2]|0;l=k+j|0;if(l>>>0<(c[da>>2]|0)>>>0){if(j|0){c[ca>>2]=l;ew((c[ea>>2]|0)+k|0,h|0,j|0)|0}}else wb(f,h,j);h=c[ca>>2]|0;j=h+1|0;if(j>>>0<(c[da>>2]|0)>>>0){c[ca>>2]=j;a[(c[ea>>2]|0)+h>>0]=46;break}else{wb(f,31183,1);break}}while(0);j=c[m+8+(n*72|0)+8>>2]|0;if(!j)h=0;else h=(Eu(j)|0)&1073741823;k=c[ca>>2]|0;l=k+h|0;if(l>>>0>=(c[da>>2]|0)>>>0){wb(f,j,h);n=0;h=0;j=z;m=H;q=0;break e}if(!h){n=0;h=0;j=z;m=H;q=0}else{c[ca>>2]=l;ew((c[ea>>2]|0)+k|0,j|0,h|0)|0;n=0;h=0;j=z;m=H;q=0}break}default:{F=543;break a}}while(0);if((F|0)==86){v=0;F=87}else if((F|0)==395){F=0;if(m<<24>>24!=0&(h|0)>0&(k|0)>0){l=k;do{E=l;l=l+-1|0;h=h+((a[j+l>>0]&-64)<<24>>24==-128&1)|0}while((E|0)>1);n=k;m=H}else{n=k;m=H}}if((F|0)==87){F=0;o:do if(4067322>>>C&1){if(I)switch(k<<24>>24){case 0:{j=(c[i>>2]|0)+(4-1)&~(4-1);l=c[j>>2]|0;c[i>>2]=j+4;j=0;k=0;F=113;break o}case 2:{j=(c[i>>2]|0)+(8-1)&~(8-1);k=j;l=c[k>>2]|0;k=c[k+4>>2]|0;c[i>>2]=j+8;j=0;F=113;break o}default:{j=(c[i>>2]|0)+(4-1)&~(4-1);l=c[j>>2]|0;c[i>>2]=j+4;j=0;k=0;F=113;break o}}j=c[Q>>2]|0;if((c[J>>2]|0)>(j|0)){k=c[R>>2]|0;c[Q>>2]=j+1;j=c[k+(j<<2)>>2]|0;k=e[j+8>>1]|0;if(k&4|0){k=j;j=0;l=c[k>>2]|0;k=c[k+4>>2]|0;F=113;break}if(k&8|0){l=Mg(+g[j>>3])|0;j=0;k=L()|0;F=113;break}if(k&18){l=Ng(a[j+10>>0]|0,c[j+12>>2]|0,c[j+16>>2]|0)|0;j=0;k=L()|0;F=113}else{j=0;F=114}}else{j=0;F=114}}else{do if(I)if(k<<24>>24!=2){p=(c[i>>2]|0)+(4-1)&~(4-1);n=c[p>>2]|0;c[i>>2]=p+4;p=((n|0)<0)<<31>>31;l=Tv(0,0,n|0,p|0)|0;k=L()|0;if((n|0)<0)break;else{l=n;k=p;F=113;break o}}else{F=(c[i>>2]|0)+(8-1)&~(8-1);k=F;l=c[k>>2]|0;k=c[k+4>>2]|0;c[i>>2]=F+8;F=99;break}else{k=c[Q>>2]|0;if((c[J>>2]|0)<=(k|0)){F=114;break o}l=c[R>>2]|0;c[Q>>2]=k+1;k=c[l+(k<<2)>>2]|0;l=e[k+8>>1]|0;if(l&4|0){l=k;k=c[l+4>>2]|0;l=c[l>>2]|0;F=99;break}if(l&8|0){l=Mg(+g[k>>3])|0;k=L()|0;F=99;break}if(!(l&18)){F=114;break o}l=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;k=L()|0;F=99}while(0);if((F|0)==99){p=(l|0)==0&(k|0)==-2147483648;n=Tv(0,0,l|0,k|0)|0;q=L()|0;if((k|0)<0){l=p?0:n;k=p?-2147483648:q}else{F=113;break}}j=45;F=113}while(0);if((F|0)==113){F=0;if((l|0)==0&(k|0)==0)F=114;else z=j}if((F|0)==114){F=0;z=j;l=0;k=0;x=0}u=h-(z<<24>>24!=0&1)|0;u=D<<24>>24==0?m:(m|0)<(u|0)?u:m;if((u|0)<37){n=_;q=0;w=70}else{m=Sv(u|0,((u|0)<0)<<31>>31|0,10,0)|0;j=L()|0;if(!(v<<24>>24))q=j;else{m=Sv(m|0,j|0,(u>>>0)/3|0|0,0)|0;q=L()|0}if(a[S>>0]|0){F=543;break}if((q|0)>0|((q|0)==0?m>>>0>(c[da>>2]|0)>>>0:0)?(Y=c[W>>2]|0,(q|0)>0|(q|0)==0&m>>>0>Y>>>0):0){F=121;break}p=c[f>>2]|0;p:do if(!p){E=Sv(m|0,q|0,-1,-1)|0;D=L()|0;if(D>>>0>0|(D|0)==0&E>>>0>2147483390){F=164;break a}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](m)|0;F=162;break}j=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;p=59064;n=c[p>>2]|0;p=c[p+4>>2]|0;if((p|0)>0|(p|0)==0&n>>>0>0){E=c[14978]|0;D=Tv(n|0,p|0,j|0,((j|0)<0)<<31>>31|0)|0;B=L()|0;c[14768]=((B|0)<0|(B|0)==0&D>>>0<=E>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){F=164;break a}n=Wa[c[29352>>2]&127](j)|0;n=(c[14978]|0)+n|0;c[14978]=n;if(n>>>0>(c[14982]|0)>>>0)c[14982]=n;n=(c[14981]|0)+1|0;c[14981]=n;if(n>>>0>(c[14987]|0)>>>0)c[14987]=n}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){F=164;break a}}else{do if(!(q>>>0>0|((q|0)==0?m>>>0>(e[p+276>>1]|0)>>>0:0))){n=p+300|0;j=c[n>>2]|0;if(j|0){c[n>>2]=c[j>>2];F=p+284|0;c[F>>2]=(c[F>>2]|0)+1;F=162;break p}n=p+296|0;j=c[n>>2]|0;if(!j){j=p+292|0;break}else{c[n>>2]=c[j>>2];F=p+284|0;c[F>>2]=(c[F>>2]|0)+1;F=162;break p}}else j=p+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(p,m,q)|0;F=162}while(0);if((F|0)==162){F=0;if(!j){F=164;break}}n=j;q=j;w=(j|0)==0?H:m}m=n+(w+-1)|0;if((C|0)==22){E=_v(l|0,k|0,10,0)|0;j=L()|0;H=Yv(E|0,j|0,10,0)|0;H=Tv(l|0,k|0,H|0,L()|0)|0;L()|0;j=$v(E|0,j|0,10,0)|0;j=(H|0)>3|(j|0)==1&(L()|0)==0;H=(j?0:H)<<1;j=m+-1|0;a[j>>0]=a[31151+(H|1)>>0]|0;j=j+-1|0;a[j>>0]=a[31151+H>>0]|0}else j=m;n=160+(d[16+(C*6|0)+4>>0]|0)|0;p=d[16+(C*6|0)+1>>0]|0;do{H=l;l=_v(l|0,k|0,p|0,0)|0;E=k;k=L()|0;D=Yv(l|0,k|0,p|0,0)|0;D=Tv(H|0,E|0,D|0,L()|0)|0;L()|0;j=j+-1|0;a[j>>0]=a[n+D>>0]|0}while(!(E>>>0<0|(E|0)==0&H>>>0

        >>0));p=m;k=j;l=p-k|0;if((u|0)>(l|0)){j=j+(p-u-k)|0;gw(j|0,48,u+k-p|0)|0;l=u}if(v<<24>>24){k=l+-1|0;m=(k|0)/3|0;j=j+(0-m)|0;if((l|0)>3){k=k-(m*3|0)+1|0;l=0;do{a[j+l>>0]=a[j+(l+m)>>0]|0;k=k+-1|0;n=l+1|0;if(!k){a[j+n>>0]=v;k=3;m=m+-1|0;l=l+2|0}else l=n}while((m|0)>0)}}if(z<<24>>24){j=j+-1|0;a[j>>0]=z}if(x<<24>>24!=0?(7860991>>>C&1|0)==0:0){k=31160+(d[16+(C*6|0)+5>>0]|0)|0;l=k;k=a[k>>0]|0;do{j=j+-1|0;a[j>>0]=k;l=l+1|0;k=a[l>>0]|0}while(k<<24>>24!=0)}n=p-j|0;m=w}h=h-n|0;do if((h|0)>0){l=c[ca>>2]|0;if(!(y<<24>>24)){H=Sv(l|0,0,h|0,((h|0)<0)<<31>>31|0)|0;E=L()|0;if(!((E|0)<0|((E|0)==0?H>>>0<(c[da>>2]|0)>>>0:0))){h=vb(f,h)|0;if((h|0)>=1)F=514}else F=514;if((F|0)==514){F=0;while(1){E=c[ea>>2]|0;H=c[ca>>2]|0;c[ca>>2]=H+1;a[E+H>>0]=32;if((h|0)>1)h=h+-1|0;else break}}h=c[ca>>2]|0;k=h+n|0;if(k>>>0>=(c[da>>2]|0)>>>0){wb(f,j,n);break}if(!n)break;c[ca>>2]=k;ew((c[ea>>2]|0)+h|0,j|0,n|0)|0;break}else{k=l+n|0;if(k>>>0<(c[da>>2]|0)>>>0){if(n|0){c[ca>>2]=k;ew((c[ea>>2]|0)+l|0,j|0,n|0)|0}}else wb(f,j,n);H=Sv(c[ca>>2]|0,0,h|0,((h|0)<0)<<31>>31|0)|0;E=L()|0;if(!((E|0)<0|((E|0)==0?H>>>0<(c[da>>2]|0)>>>0:0))){h=vb(f,h)|0;if((h|0)<1)break}while(1){E=c[ea>>2]|0;H=c[ca>>2]|0;c[ca>>2]=H+1;a[E+H>>0]=32;if((h|0)>1)h=h+-1|0;else break}}}else{h=c[ca>>2]|0;k=h+n|0;if(k>>>0>=(c[da>>2]|0)>>>0){wb(f,j,n);break}if(n|0){c[ca>>2]=k;ew((c[ea>>2]|0)+h|0,j|0,n|0)|0}}while(0);do if(q|0){h=c[f>>2]|0;if(h|0){if(c[h+480>>2]|0){Xd(h,q);break}H=q;if((c[h+304>>2]|0)>>>0<=H>>>0?(c[h+308>>2]|0)>>>0>H>>>0:0){H=h+300|0;c[q>>2]=c[H>>2];c[H>>2]=q;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{H=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}while(0);h=G+1|0;H=m}if((F|0)==13){h=c[ca>>2]|0;j=h+1|0;if(j>>>0<(c[da>>2]|0)>>>0){c[ca>>2]=j;a[(c[ea>>2]|0)+h>>0]=37;Ra=fa;return}else{wb(f,31149,1);Ra=fa;return}}else if((F|0)==121){a[S>>0]=18;if(Y|0){if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}aa=j;if((c[h+304>>2]|0)>>>0<=aa>>>0?(c[h+308>>2]|0)>>>0>aa>>>0:0){aa=h+300|0;c[j>>2]=c[aa>>2];c[aa>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{aa=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0}h=c[f>>2]|0;if(!h){Ra=fa;return}h=c[h+236>>2]|0;if(!h){Ra=fa;return}c[h+12>>2]=18;ea=h+36|0;c[ea>>2]=(c[ea>>2]|0)+1;Ra=fa;return}else if((F|0)==164){a[S>>0]=7;if(!(c[W>>2]|0)){Ra=fa;return}if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}f=j;if((c[h+304>>2]|0)>>>0<=f>>>0?(c[h+308>>2]|0)>>>0>f>>>0:0){f=h+300|0;c[j>>2]=c[f>>2];c[f>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{f=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0;Ra=fa;return}else if((F|0)==236){a[S>>0]=18;if($|0){if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}aa=j;if((c[h+304>>2]|0)>>>0<=aa>>>0?(c[h+308>>2]|0)>>>0>aa>>>0:0){aa=h+300|0;c[j>>2]=c[aa>>2];c[aa>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{aa=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0}h=c[f>>2]|0;if(!h){Ra=fa;return}h=c[h+236>>2]|0;if(!h){Ra=fa;return}c[h+12>>2]=18;ea=h+36|0;c[ea>>2]=(c[ea>>2]|0)+1;Ra=fa;return}else if((F|0)==278){a[S>>0]=7;if(!(c[W>>2]|0)){Ra=fa;return}if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}f=j;if((c[h+304>>2]|0)>>>0<=f>>>0?(c[h+308>>2]|0)>>>0>f>>>0:0){f=h+300|0;c[j>>2]=c[f>>2];c[f>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{f=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0;Ra=fa;return}else if((F|0)==423){a[S>>0]=18;if(O|0){if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}aa=j;if((c[h+304>>2]|0)>>>0<=aa>>>0?(c[h+308>>2]|0)>>>0>aa>>>0:0){aa=h+300|0;c[j>>2]=c[aa>>2];c[aa>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{aa=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0}h=c[f>>2]|0;if(!h){Ra=fa;return}h=c[h+236>>2]|0;if(!h){Ra=fa;return}c[h+12>>2]=18;ea=h+36|0;c[ea>>2]=(c[ea>>2]|0)+1;Ra=fa;return}else if((F|0)==465){a[S>>0]=7;if(!(c[W>>2]|0)){Ra=fa;return}if(a[ba>>0]&4){h=c[f>>2]|0;j=c[ea>>2]|0;do if(j|0){if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}f=j;if((c[h+304>>2]|0)>>>0<=f>>>0?(c[h+308>>2]|0)>>>0>f>>>0:0){f=h+300|0;c[j>>2]=c[f>>2];c[f>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{f=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a[ba>>0]=a[ba>>0]&-5}c[da>>2]=0;c[ca>>2]=0;c[ea>>2]=0;Ra=fa;return}else if((F|0)==543){Ra=fa;return}}function ub(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a+16|0;f=c[e>>2]|0;g=f+d|0;if(g>>>0>=(c[a+8>>2]|0)>>>0){wb(a,b,d);return}if(!d)return;c[e>>2]=g;ew((c[a+4>>2]|0)+f|0,b|0,d|0)|0;return}function vb(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;q=b+20|0;if(a[q>>0]|0){s=0;return s|0}p=b+12|0;i=c[p>>2]|0;if(!i){a[q>>0]=18;f=c[b>>2]|0;if(f|0?(g=c[f+236>>2]|0,g|0):0){c[g+12>>2]=18;s=g+36|0;c[s>>2]=(c[s>>2]|0)+1}s=(c[b+8>>2]|0)+-1-(c[b+16>>2]|0)|0;return s|0}s=b+21|0;g=a[s>>0]|0;f=(g&4)==0;if(f)j=0;else j=c[b+4>>2]|0;r=b+16|0;k=c[r>>2]|0;v=d+1|0;v=Sv(k|0,0,v|0,((v|0)<0)<<31>>31|0)|0;t=L()|0;k=Sv(v|0,t|0,k|0,0)|0;o=L()|0;u=(o|0)>0|(o|0)==0&k>>>0>i>>>0;k=u?v:k;o=u?t:o;if((o|0)>0|(o|0)==0&k>>>0>i>>>0){if(!f){f=c[b>>2]|0;h=b+4|0;g=c[h>>2]|0;do if(g|0){if(f|0){if(c[f+480>>2]|0){Xd(f,g);break}v=g;if((c[f+304>>2]|0)>>>0<=v>>>0?(c[f+308>>2]|0)>>>0>v>>>0:0){v=f+300|0;c[g>>2]=c[v>>2];c[v>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{v=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=a[s>>0]&-5;a[s>>0]=g;v=c[p>>2]|0;f=b+8|0;c[f>>2]=0;c[r>>2]=0;c[h>>2]=0;a[q>>0]=18;if(v|0)n=23}else{f=b+8|0;c[f>>2]=0;c[r>>2]=0;c[b+4>>2]=0;a[q>>0]=18;n=23}if((n|0)==23){if(g&4)a[s>>0]=g&-5;c[f>>2]=0;c[r>>2]=0;c[b+4>>2]=0}f=c[b>>2]|0;if(!f){v=0;return v|0}f=c[f+236>>2]|0;if(!f){v=0;return v|0}c[f+12>>2]=18;v=f+36|0;c[v>>2]=(c[v>>2]|0)+1;v=0;return v|0}o=b+8|0;c[o>>2]=k;i=c[b>>2]|0;a:do if(!i){if(!(mb()|0)){h=sb(j,k,0)|0;n=49}}else{if(j|0){v=j;if((c[i+304>>2]|0)>>>0<=v>>>0?(c[i+308>>2]|0)>>>0>v>>>0:0){if(!(0>0|(0==0?k>>>0>(e[i+276>>1]|0)>>>0:0))){h=j;n=51;break}h=Zd(i,j,k,0)|0;n=49;break}h=Zd(i,j,k,0)|0;n=49;break}if(c[i+272>>2]|0){if(a[i+81>>0]|0)break}else{do if(!(0>0|(0==0?k>>>0>(e[i+276>>1]|0)>>>0:0))){f=i+300|0;h=c[f>>2]|0;if(h|0){c[f>>2]=c[h>>2];n=i+284|0;c[n>>2]=(c[n>>2]|0)+1;n=49;break a}f=i+296|0;h=c[f>>2]|0;if(!h){f=i+292|0;break}else{c[f>>2]=c[h>>2];n=i+284|0;c[n>>2]=(c[n>>2]|0)+1;n=49;break a}}else f=i+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}h=_d(i,k,0)|0;n=49}while(0);if((n|0)==49?h|0:0){g=a[s>>0]|0;n=51}if((n|0)==51){if((g&4)==0?(l=c[r>>2]|0,l|0):0)ew(h|0,c[b+4>>2]|0,l|0)|0;c[b+4>>2]=h;f=c[b>>2]|0;if(((f|0)!=0?(m=h,(c[f+304>>2]|0)>>>0<=m>>>0):0)?(c[f+308>>2]|0)>>>0>m>>>0:0)f=e[f+276>>1]|0;else f=Wa[c[29352>>2]&127](h)|0;c[o>>2]=f;a[s>>0]=a[s>>0]|4;v=d;return v|0}f=a[s>>0]|0;if(!(f&4))g=b+4|0;else{f=c[b>>2]|0;g=b+4|0;h=c[g>>2]|0;do if(h|0){if(f|0){if(c[f+480>>2]|0){Xd(f,h);break}v=h;if((c[f+304>>2]|0)>>>0<=v>>>0?(c[f+308>>2]|0)>>>0>v>>>0:0){v=f+300|0;c[h>>2]=c[v>>2];c[v>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{v=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);f=a[s>>0]&-5;a[s>>0]=f}c[o>>2]=0;c[r>>2]=0;c[g>>2]=0;a[q>>0]=7;if(!(c[p>>2]|0)){v=0;return v|0}if(f&4)a[s>>0]=f&-5;c[o>>2]=0;c[r>>2]=0;c[b+4>>2]=0;v=0;return v|0}function wb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;d=vb(a,d)|0;if((d|0)<=0)return;e=a+16|0;ew((c[a+4>>2]|0)+(c[e>>2]|0)|0,b|0,d|0)|0;c[e>>2]=(c[e>>2]|0)+d;return}function xb(a){a=a|0;if(!a){a=0;return a|0}a=(Eu(a)|0)&1073741823;return a|0}function yb(b){b=b|0;var d=0,e=0;d=b+4|0;e=c[d>>2]|0;if((e|0?(a[e+(c[b+16>>2]|0)>>0]=0,c[b+12>>2]|0):0)?(a[b+21>>0]&4)==0:0){e=$d(b)|0;return e|0}e=c[d>>2]|0;return e|0}function zb(b){b=b|0;var d=0,e=0,f=0,g=0;if(mb()|0){b=29632;return b|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](24)|0;if(!d){b=29632;return b|0}}else{f=Wa[c[29356>>2]&127](24)|0;if((c[14985]|0)>>>0<24)c[14985]=24;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){g=c[14978]|0;e=Tv(d|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=g>>>0)&1}d=Wa[c[29340>>2]&127](f)|0;if(!d){g=29632;return g|0}e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}if(!b){c[d+4>>2]=0;c[d>>2]=0;c[d+8>>2]=0;c[d+12>>2]=1e9;c[d+16>>2]=0;a[d+20>>0]=0;a[d+21>>0]=0;g=d;return g|0}else{g=c[b+108>>2]|0;c[d+4>>2]=0;c[d>>2]=0;c[d+8>>2]=0;c[d+12>>2]=g;c[d+16>>2]=0;a[d+20>>0]=0;a[d+21>>0]=0;g=d;return g|0}return 0}function Ab(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=Ra;Ra=Ra+96|0;f=j+72|0;if(mb()|0){i=0;Ra=j;return i|0}g=f+4|0;c[g>>2]=j;c[f>>2]=0;c[f+8>>2]=70;h=f+12|0;c[h>>2]=1e9;i=f+16|0;c[i>>2]=0;a[f+20>>0]=0;e=f+21|0;a[e>>0]=0;tb(f,b,d);b=c[g>>2]|0;if((b|0?(a[b+(c[i>>2]|0)>>0]=0,c[h>>2]|0):0)?(a[e>>0]&4)==0:0){i=$d(f)|0;Ra=j;return i|0}i=c[g>>2]|0;Ra=j;return i|0}function Bb(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=Ra;Ra=Ra+112|0;j=k+88|0;h=k;if(mb()|0){j=0;Ra=k;return j|0}c[h>>2]=d;do if(!(mb()|0)){i=j+4|0;c[i>>2]=k+16;c[j>>2]=0;c[j+8>>2]=70;e=j+12|0;c[e>>2]=1e9;f=j+16|0;c[f>>2]=0;a[j+20>>0]=0;g=j+21|0;a[g>>0]=0;tb(j,b,h);d=c[i>>2]|0;if((d|0?(a[d+(c[f>>2]|0)>>0]=0,c[e>>2]|0):0)?(a[g>>0]&4)==0:0){d=$d(j)|0;break}d=c[i>>2]|0}else d=0;while(0);j=d;Ra=k;return j|0}function Cb(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=Ra;Ra=Ra+48|0;h=j+16|0;i=j;c[i>>2]=g;if((d|0)<1){Ra=j;return e|0}c[h+4>>2]=e;c[h>>2]=0;c[h+8>>2]=d;g=h+12|0;c[g>>2]=0;c[g+4>>2]=0;b[g+8>>1]=0;tb(h,f,i);a[e+(c[h+16>>2]|0)>>0]=0;Ra=j;return e|0}function Db(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+256|0;k=l+232|0;g=l;if(!(c[7387]|0)){Ra=l;return}c[g>>2]=f;i=k+4|0;c[i>>2]=l+16;c[k>>2]=0;c[k+8>>2]=210;j=k+12|0;h=k+21|0;c[j>>2]=0;c[j+4>>2]=0;b[j+8>>1]=0;tb(k,e,g);e=c[7387]|0;g=c[7388]|0;f=c[i>>2]|0;if(((f|0)!=0?(a[f+(c[k+16>>2]|0)>>0]=0,(c[j>>2]|0)!=0):0)?(a[h>>0]&4)==0:0)f=$d(k)|0;else f=c[i>>2]|0;cb[e&255](g,d,f);Ra=l;return}function Eb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=Ra;Ra=Ra+16|0;f=e;c[f>>2]=d;tb(a,b,f);Ra=e;return}function Fb(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=Ra;Ra=Ra+256|0;h=i;if(mb()|0){Ra=i;return}if((b|0)<1|(e|0)==0){a[59955]=0;Ra=i;return}if(!(a[59955]|0)){a[59957]=0;a[59956]=0;f=(mb()|0)==0;f=f?c[14770]|0:0;Ya[c[f+56>>2]&127](f,256,h)|0;f=0;do{a[59958+f>>0]=f;f=f+1|0}while((f|0)!=256);f=0;g=a[59957]|0;do{j=59958+f|0;m=a[j>>0]|0;l=(d[h+f>>0]|0)+(m&255)+(g&255)|0;g=l&255;l=59958+(l&255)|0;k=a[l>>0]|0;a[l>>0]=m;a[j>>0]=k;f=f+1|0}while((f|0)!=256);a[59957]=g;a[59955]=1}while(1){l=(a[59956]|0)+1<<24>>24;a[59956]=l;l=59958+(l&255)|0;j=a[l>>0]|0;m=j&255;k=(d[59957]|0)+m|0;a[59957]=k;k=59958+(k&255)|0;a[l>>0]=a[k>>0]|0;a[k>>0]=j;a[e>>0]=a[59958+((d[l>>0]|0)+m&255)>>0]|0;b=b+-1|0;if(!b)break;else e=e+1|0}Ra=i;return}function Gb(b,c){b=b|0;c=c|0;var e=0,f=0;if(!b){e=((c|0)!=0)<<31>>31;return e|0}if(!c){e=1;return e|0}f=a[b>>0]|0;e=(d[208+(f&255)>>0]|0)-(d[208+(d[c>>0]|0)>>0]|0)|0;if(f<<24>>24==0|(e|0)!=0){f=e;return f|0}e=c;do{b=b+1|0;e=e+1|0;f=a[b>>0]|0;c=(d[208+(f&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(f<<24>>24==0|(c|0)!=0));return c|0}function Hb(b,c){b=b|0;c=c|0;var e=0,f=0;f=a[b>>0]|0;e=(d[208+(f&255)>>0]|0)-(d[208+(d[c>>0]|0)>>0]|0)|0;if(f<<24>>24==0|(e|0)!=0){f=e;return f|0}e=c;do{b=b+1|0;e=e+1|0;f=a[b>>0]|0;c=(d[208+(f&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(f<<24>>24==0|(c|0)!=0));return c|0}function Ib(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!b){g=((c|0)!=0)<<31>>31;return g|0}if(!c){g=1;return g|0}if((e|0)<=0){g=0;return g|0}f=e;while(1){e=a[b>>0]|0;if(!(e<<24>>24)){f=7;break}e=a[208+(e&255)>>0]|0;g=a[208+(d[c>>0]|0)>>0]|0;if(e<<24>>24!=g<<24>>24){f=9;break}if((f|0)>1){b=b+1|0;c=c+1|0;f=f+-1|0}else{b=0;f=12;break}}if((f|0)==7){e=0;b=a[208+(d[c>>0]|0)>>0]|0}else if((f|0)==9){e=e&255;b=g}else if((f|0)==12)return b|0;g=e-(b&255)|0;return g|0}function Jb(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=Ra;Ra=Ra+1232|0;E=H+1200|0;D=H+1192|0;F=H+1168|0;w=H+1144|0;v=H+1128|0;G=H+1048|0;C=H+528|0;n=H;m=g&-256;s=g&16;z=g&8;q=g&4;k=g&1;r=g&2;a:do if(!q)A=0;else{b:do if((m|0)>=16384)if((m|0)<524288)switch(m|0){case 16384:{A=1;break a}default:break b}else switch(m|0){case 524288:{A=1;break a}default:break b}else switch(m|0){case 2048:{A=1;break a}default:{}}while(0);A=0}while(0);y=c[14796]|0;if((y|0)!=(Ju()|0)?(y=Ju()|0,c[14796]=y,(mb()|0)==0):0)a[59955]=0;o=f;p=o+52|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));y=(m|0)==256;if(!y)if(!e){i=ye(c[d+8>>2]|0,n)|0;if(!i){u=n;i=-1}else{f=i;Ra=H;return f|0}}else{u=e;i=-1}else{c:do if(((c[14795]|0)!=0?(Xa[c[2388>>2]&255](e,G)|0)==0:0)?(i=c[14795]|0,(i|0)!=0):0){m=c[G>>2]|0;n=c[G+72>>2]|0;while(1){if((c[i>>2]|0)==(m|0)?(u=i+8|0,(c[u+4>>2]|0)==0?(c[u>>2]|0)==(n|0):0):0)break;i=c[i+44>>2]|0;if(!i){B=20;break c}}i=i+32|0;m=c[i>>2]|0;if(m){while(1){n=m+8|0;if((c[m+4>>2]|0)==(g|0))break;m=c[n>>2]|0;if(!m){B=20;break c}else i=n}c[i>>2]=c[n>>2];i=m;m=c[m>>2]|0}else B=20}else B=20;while(0);do if((B|0)==20){if(mb()|0){f=7;Ra=H;return f|0}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](12)|0;if(!i)i=7;else{m=-1;break}Ra=H;return i|0}i=Wa[c[29356>>2]&127](12)|0;if((c[14985]|0)>>>0<12)c[14985]=12;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){u=c[14978]|0;t=Tv(m|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;p=L()|0;c[14768]=((p|0)<0|(p|0)==0&t>>>0<=u>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){f=7;Ra=H;return f|0}m=Wa[c[29352>>2]&127](i)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0)c[14987]=m;m=-1}while(0);c[f+28>>2]=i;u=e;i=m}t=(r|0)!=0;q=q<<4|r;q=(s|0)==0?q:q|131200;d:do if((i|0)<0){i=g&526336;e:do if(!i)if(!z)if(!((g&64|0)==0|(u|0)==0)?(l=u+(((Eu(u)|0)&1073741823)+1)|0,(a[l>>0]|0)!=0):0){while(1){s=Bu(l,32118)|0;l=l+(((Eu(l)|0)&1073741823)+1)|0;if(!s)break;l=l+(((Eu(l)|0)&1073741823)+1)|0;if(!(a[l>>0]|0)){p=0;n=0;m=0;break e}}if(!(Xa[c[2388>>2]&255](l,G)|0)){l=0;m=c[G+24>>2]|0;n=c[G+20>>2]|0;o=c[G+12>>2]&511}else{l=1802;m=0;n=0;o=0}B=57}else{p=0;n=0;m=0}else{p=0;n=0;m=384}else{if(!u)l=-1;else l=((Eu(u)|0)&1073741823)+-1|0;m=a[u+l>>0]|0;f:do if(m<<24>>24!=45){while(1){if(m<<24>>24==46|(l|0)==0)break;l=l+-1|0;m=a[u+l>>0]|0;if(m<<24>>24==45)break f}p=0;n=0;m=0;break e}while(0);ew(C|0,u|0,l|0)|0;a[C+l>>0]=0;if(!(Xa[c[2388>>2]&255](C,G)|0)){m=c[G+24>>2]|0;l=0;n=c[G+20>>2]|0;o=c[G+12>>2]&511}else{m=0;l=1802;n=0;o=0}B=57}while(0);if((B|0)==57)if(!l){p=m;m=o}else{f=l;Ra=H;return f|0}l=xe(u,q,m)|0;do if((l|0)<0){if((A?(s=uu()|0,(c[s>>2]|0)==13):0)?(Xa[c[2364>>2]&255](u,0)|0)!=0:0)i=1544;else{s=uu()|0;if(t&(c[s>>2]|0)!=21?(x=xe(u,q&131200,m)|0,(x|0)>=0):0){m=g&-8|1;k=1;l=x;i=g&526336;break}else i=0}c[v>>2]=31984;c[v+4>>2]=38565;c[v+8>>2]=31517;Db(14,32001,v);G=uu()|0;G=c[G>>2]|0;j=dv(G)|0;c[w>>2]=38565;c[w+4>>2]=G;c[w+8>>2]=31690;c[w+12>>2]=(u|0)==0?59952:u;c[w+16>>2]=j;Db(14,31953,w);j=(i|0)==0?14:i;i=f+28|0;break d}else m=g;while(0);if((i|0)!=0?(Va[c[2592>>2]&127]()|0)==0:0){Ya[c[2580>>2]&127](l,n,p)|0;o=l;B=69}else{o=l;B=69}}else{m=g;o=i;B=69}while(0);g:do if((B|0)==69){if(h|0)c[h>>2]=m;p=f+28|0;i=c[p>>2]|0;if(i|0){c[i>>2]=o;c[i+4>>2]=m}if(z|0)Wa[c[2532>>2]&127](u)|0;l=z<<2;l=(k|0)==0?l:l|2;l=y?l:l|128;l=A?l|8:l;A=l|m&64;m=f+12|0;c[m>>2]=o;c[f+4>>2]=d;n=f+32|0;c[n>>2]=e;i=A&255;k=f+18|0;b[k>>1]=i;h:do if(!((e|0)==0|(A&64|0)==0)?(j=e+(((Eu(e)|0)&1073741823)+1)|0,(a[j>>0]|0)!=0):0){while(1){A=Bu(j,32125)|0;j=j+(((Eu(j)|0)&1073741823)+1)|0;if(!A)break;j=j+(((Eu(j)|0)&1073741823)+1)|0;if(!(a[j>>0]|0)){B=82;break h}}if((Zm(j,1,1)|0)<<24>>24){i=b[k>>1]|0;B=82}}else B=82;while(0);if((B|0)==82)b[k>>1]=i|16;if(!(Bu(c[d+16>>2]|0,31213)|0))b[k>>1]=b[k>>1]|1;i:do if(!(l&128)){i=Xa[c[c[d+20>>2]>>2]&255](e,f)|0;if((i|0)!=29668){if((i|0)!=29820)break;i=(Eu(e)|0)+6|0;j=pb(i,((i|0)<0)<<31>>31)|0;if(j|0){c[D>>2]=e;Cb(i,j,32130,D)|0;c[f+24>>2]=j;i=29820;break}c[f+24>>2]=0;c[f+20>>2]=0;if((o|0)<=-1){j=7;i=p;break g}if(!(Wa[c[2352>>2]&127](o)|0)){j=7;i=p;break g}i=c[n>>2]|0;f=uu()|0;f=c[f>>2]|0;j=dv(f)|0;c[E>>2]=38152;c[E+4>>2]=f;c[E+8>>2]=31695;c[E+12>>2]=(i|0)==0?59952:i;c[E+16>>2]=j;Db(4106,31953,E);j=7;i=p;break g}l=f+8|0;j:do if(!(Xa[c[2400>>2]&255](c[m>>2]|0,C)|0)){i=G;c[i>>2]=0;c[i+4>>2]=0;c[G>>2]=c[C>>2];i=G+8|0;c[i>>2]=c[C+72>>2];c[i+4>>2]=0;i=c[14795]|0;k:do if(!i)B=93;else{while(1){if(!(Lu(G,i,16)|0))break;i=c[i+44>>2]|0;if(!i){B=93;break k}}G=i+36|0;c[G>>2]=(c[G>>2]|0)+1}while(0);if((B|0)==93){if(mb()|0){j=7;break}do if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](56)|0;if(!i){j=7;break j}}else{i=Wa[c[29356>>2]&127](56)|0;if((c[14985]|0)>>>0<56)c[14985]=56;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){E=c[14978]|0;D=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&D>>>0<=E>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){j=7;break j}j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0)break;c[14987]=j}while(0);j=i+16|0;o=j;p=o+40|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));c[i>>2]=c[G>>2];c[i+4>>2]=c[G+4>>2];c[i+8>>2]=c[G+8>>2];c[i+12>>2]=c[G+12>>2];if(c[7325]|0)c[j>>2]=8;c[i+36>>2]=1;j=c[14795]|0;c[i+44>>2]=j;c[i+48>>2]=0;if(j|0)c[j+48>>2]=i;c[14795]=i}c[l>>2]=i;i=29668;break i}else{j=uu()|0;j=c[j>>2]|0;c[f+20>>2]=j;j=(j|0)==75?22:10}while(0);if(Wa[c[2352>>2]&127](o)|0){if(!f)i=0;else i=c[n>>2]|0;E=uu()|0;E=c[E>>2]|0;G=dv(E)|0;c[F>>2]=38067;c[F+4>>2]=E;c[F+8>>2]=31695;c[F+12>>2]=(i|0)==0?59952:i;c[F+16>>2]=G;Db(4106,31953,F)}c[f+20>>2]=0;i=p;break g}else i=29744;while(0);c[f+20>>2]=0;c[f>>2]=i;te(f);f=0;Ra=H;return f|0}while(0);i=c[i>>2]|0;if(!i){f=j;Ra=H;return f|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);f=j;Ra=H;return f|0}else{f=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);f=j;Ra=H;return f|0}return 0}function Kb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+80|0;g=h+48|0;e=h+24|0;a=h;f=h+68|0;if((Wa[c[2532>>2]&127](b)|0)==-1){g=uu()|0;if((c[g>>2]|0)==2){g=5898;Ra=h;return g|0}f=uu()|0;f=c[f>>2]|0;g=dv(f)|0;c[a>>2]=38695;c[a+4>>2]=f;c[a+8>>2]=31800;c[a+12>>2]=(b|0)==0?59952:b;c[a+16>>2]=g;Db(2570,31953,a);g=2570;Ra=h;return g|0}if(!(d&1)){g=0;Ra=h;return g|0}if(!(Xa[c[2544>>2]&255](b,f)|0)){if(!(zv(c[f>>2]|0)|0))a=0;else{d=uu()|0;d=c[d>>2]|0;a=dv(d)|0;c[e>>2]=38705;c[e+4>>2]=d;c[e+8>>2]=32138;c[e+12>>2]=(b|0)==0?59952:b;c[e+16>>2]=a;Db(1290,31953,e);a=1290}if(Wa[c[2352>>2]&127](c[f>>2]|0)|0){d=uu()|0;d=c[d>>2]|0;f=dv(d)|0;c[g>>2]=38707;c[g+4>>2]=d;c[g+8>>2]=31695;c[g+12>>2]=59952;c[g+16>>2]=f;Db(4106,31953,g)}}else a=0;g=a;Ra=h;return g|0}function Lb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Ra;Ra=Ra+80|0;a=f;if(!d){d=(Xa[c[2388>>2]&255](b,a)|0)==0;c[e>>2]=d&(c[a+36>>2]|0)>0&1;Ra=f;return 0}else{d=(Xa[c[2364>>2]&255](b,6)|0)==0&1;c[e>>2]=d;Ra=f;return 0}return 0}function Mb(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=Ra;Ra=Ra+256|0;z=B+168|0;y=B+152|0;x=B+128|0;w=B+112|0;u=B+96|0;t=B+72|0;s=B+56|0;r=B+40|0;v=B+16|0;q=B;l=B+172|0;m=l+12|0;n=e+-1|0;o=e+-2|0;p=(f|0)==0;b=0;g=1;while(1){if(!(Xa[c[2664>>2]&255](d,l)|0))if((c[m>>2]&61440|0)==40960){if(!b){b=nb(e)|0;if(!b){b=0;d=7;C=34;break}else j=g}else if((g|0)>99){C=9;break}else j=g+1|0;g=Ya[c[2652>>2]&127](d,b,n)|0;if((g|0)<0){C=11;break}do if((a[b>>0]|0)!=47){a:do if((d|0)!=0?(A=(Eu(d)|0)&1073741823,(A|0)!=0):0){h=A;while(1){i=h+-1|0;if((a[d+i>>0]|0)==47)break a;if((h|0)>1)h=i;else{h=i;break}}}else h=0;while(0);i=h+g|0;if((i|0)<(e|0)){fw(b+h|0,b|0,g+1|0)|0;ew(b|0,d|0,h|0)|0;g=i;d=0;break}else{c[u>>2]=31984;c[u+4>>2]=38842;c[u+8>>2]=31517;Db(14,32001,u);d=14;break}}else d=0;while(0);a[b+g>>0]=0;k=b;g=j;i=0}else{k=d;d=0;i=1}else{k=uu()|0;if((c[k>>2]|0)==2){k=d;d=0;i=1}else{C=4;break}}if((d|0)!=0|(k|0)==(f|0)){if(i){C=36;break}}else{d=(k|0)==0;if(d)h=0;else h=(Eu(k)|0)&1073741823;if((a[k>>0]|0)==47)d=0;else{if(!(Xa[c[2376>>2]&255](f,o)|0)){C=27;break}if(p)d=0;else d=(Eu(f)|0)&1073741823;a[f+d>>0]=47;d=d+1|0}if((d+h|0)>=(e|0)){C=32;break}c[z>>2]=k;Cb(e-d|0,f+d|0,31408,z)|0;if(i){d=0;C=36;break}else d=0}if(!d)d=f;else break}if((C|0)==4){c[q>>2]=31984;c[q+4>>2]=38819;c[q+8>>2]=31517;Db(14,32001,q);f=uu()|0;f=c[f>>2]|0;A=dv(f)|0;c[v>>2]=38819;c[v+4>>2]=f;c[v+8>>2]=31888;c[v+12>>2]=(d|0)==0?59952:d;c[v+16>>2]=A;Db(14,31953,v);d=14;C=36}else if((C|0)==9){c[r>>2]=31984;c[r+4>>2]=38830;c[r+8>>2]=31517;Db(14,32001,r);d=14;C=34}else if((C|0)==11){c[s>>2]=31984;c[s+4>>2]=38836;c[s+8>>2]=31517;Db(14,32001,s);f=uu()|0;f=c[f>>2]|0;A=dv(f)|0;c[t>>2]=38836;c[t+4>>2]=f;c[t+8>>2]=31879;c[t+12>>2]=(d|0)==0?59952:d;c[t+16>>2]=A;Db(14,31953,t);d=14;C=34}else if((C|0)==27){c[w>>2]=31984;c[w+4>>2]=38762;c[w+8>>2]=31517;Db(14,32001,w);f=uu()|0;f=c[f>>2]|0;A=dv(f)|0;c[x>>2]=38762;c[x+4>>2]=f;c[x+8>>2]=31708;c[x+12>>2]=d?59952:k;c[x+16>>2]=A;Db(14,31953,x);d=14;C=34}else if((C|0)==32){a[f+d>>0]=0;c[y>>2]=31984;c[y+4>>2]=38771;c[y+8>>2]=31517;Db(14,32001,y);d=14;C=34}if(!b){Ra=B;return d|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);Ra=B;return d|0}else{C=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);Ra=B;return d|0}return 0}function Nb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=Ra;Ra=Ra+32|0;h=i+8|0;g=i;b=i+28|0;gw(e|0,0,d|0)|0;f=Ju()|0;c[14796]=f;while(1){f=Ya[c[2340>>2]&127](32144,524288,420)|0;if((f|0)<0){f=uu()|0;if((c[f>>2]|0)!=4){j=8;break}}else{if((f|0)>2)break;Wa[c[2352>>2]&127](f)|0;c[g>>2]=32144;c[g+4>>2]=f;Db(28,31900,g);if((Ya[c[2340>>2]&127](31943,0,0)|0)<0){j=8;break}}}if((j|0)==8){La(b|0)|0;j=c[b>>2]|0;a[e>>0]=j;a[e+1>>0]=j>>8;a[e+2>>0]=j>>16;a[e+3>>0]=j>>24;j=e+4|0;e=c[14796]|0;a[j>>0]=e;a[j+1>>0]=e>>8;a[j+2>>0]=e>>16;a[j+3>>0]=e>>24;j=8;Ra=i;return j|0}do{if((Ya[c[2436>>2]&127](f,e,d)|0)>=0)break;j=uu()|0}while((c[j>>2]|0)==4);if(!(Wa[c[2352>>2]&127](f)|0)){j=d;Ra=i;return j|0}e=uu()|0;e=c[e>>2]|0;j=dv(e)|0;c[h>>2]=38966;c[h+4>>2]=e;c[h+8>>2]=31695;c[h+12>>2]=59952;c[h+16>>2]=j;Db(4106,31953,h);j=d;Ra=i;return j|0}function Ob(a,b){a=a|0;b=b|0;b=(b+999999|0)/1e6|0;Av(b)|0;return b*1e6|0}function Pb(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0;a=Ra;Ra=Ra+16|0;e=a;Da(e|0,0)|0;h=c[e>>2]|0;h=Yv(h|0,((h|0)<0)<<31>>31|0,1e3,0)|0;h=Sv(h|0,L()|0,1045635584,49096)|0;f=L()|0;e=(c[e+4>>2]|0)/1e3|0;e=Sv(h|0,f|0,e|0,((e|0)<0)<<31>>31|0)|0;d=(+(e>>>0)+4294967296.0*+(L()|0))/864.0e5;g[b>>3]=d;Ra=a;return 0}function Qb(a,b,d){a=a|0;b=b|0;d=d|0;d=uu()|0;return c[d>>2]|0}function Rb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a=Ra;Ra=Ra+16|0;e=a;Da(e|0,0)|0;f=c[e>>2]|0;f=Yv(f|0,((f|0)<0)<<31>>31|0,1e3,0)|0;f=Sv(f|0,L()|0,1045635584,49096)|0;d=L()|0;e=(c[e+4>>2]|0)/1e3|0;e=Sv(f|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;d=L()|0;c[b>>2]=e;c[b+4>>2]=d;Ra=a;return 0}function Sb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b|0){do if(Bu(b,c[584]|0)|0)if(Bu(b,c[587]|0)|0)if(Bu(b,c[590]|0)|0)if(Bu(b,c[593]|0)|0)if(Bu(b,c[596]|0)|0)if(Bu(b,c[599]|0)|0)if(Bu(b,c[602]|0)|0)if(Bu(b,c[605]|0)|0)if(Bu(b,c[608]|0)|0)if(Bu(b,c[611]|0)|0)if(Bu(b,c[614]|0)|0)if(Bu(b,c[617]|0)|0)if(Bu(b,c[620]|0)|0)if(Bu(b,c[623]|0)|0)if(Bu(b,c[626]|0)|0)if(Bu(b,c[629]|0)|0)if(!(Bu(b,c[632]|0)|0))e=16;else{if(!(Bu(b,c[635]|0)|0)){e=17;break}if(!(Bu(b,c[638]|0)|0)){e=18;break}if(!(Bu(b,c[641]|0)|0)){e=19;break}if(!(Bu(b,c[644]|0)|0)){e=20;break}if(!(Bu(b,c[647]|0)|0)){e=21;break}if(!(Bu(b,c[650]|0)|0)){e=22;break}if(!(Bu(b,c[653]|0)|0)){e=23;break}if(!(Bu(b,c[656]|0)|0)){e=24;break}if(!(Bu(b,c[659]|0)|0)){e=25;break}if(!(Bu(b,c[662]|0)|0)){e=26;break}if(!(Bu(b,c[665]|0)|0)){e=27;break}if(!(Bu(b,c[668]|0)|0)){e=28;break}else a=12;return a|0}else e=15;else e=14;else e=13;else e=12;else e=11;else e=10;else e=9;else e=8;else e=7;else e=6;else e=5;else e=4;else e=3;else e=2;else e=1;else e=0;while(0);b=2336+(e*12|0)+8|0;a=c[b>>2]|0;if(!a){a=c[2336+(e*12|0)+4>>2]|0;c[b>>2]=a}c[2336+(e*12|0)+4>>2]=(d|0)==0?a:d;d=0;return d|0}a=c[586]|0;if(a|0)c[585]=a;a=c[589]|0;if(a|0)c[588]=a;a=c[592]|0;if(a|0)c[591]=a;a=c[595]|0;if(a|0)c[594]=a;a=c[598]|0;if(a|0)c[597]=a;a=c[601]|0;if(a|0)c[600]=a;a=c[604]|0;if(a|0)c[603]=a;a=c[607]|0;if(a|0)c[606]=a;a=c[610]|0;if(a|0)c[609]=a;a=c[613]|0;if(a|0)c[612]=a;a=c[616]|0;if(a|0)c[615]=a;a=c[619]|0;if(a|0)c[618]=a;a=c[622]|0;if(a|0)c[621]=a;a=c[625]|0;if(a|0)c[624]=a;a=c[628]|0;if(a|0)c[627]=a;a=c[631]|0;if(a|0)c[630]=a;a=c[634]|0;if(a|0)c[633]=a;a=c[637]|0;if(a|0)c[636]=a;a=c[640]|0;if(a|0)c[639]=a;a=c[643]|0;if(a|0)c[642]=a;a=c[646]|0;if(a|0)c[645]=a;a=c[649]|0;if(a|0)c[648]=a;a=c[652]|0;if(a|0)c[651]=a;a=c[655]|0;if(a|0)c[654]=a;a=c[658]|0;if(a|0)c[657]=a;a=c[661]|0;if(a|0)c[660]=a;a=c[664]|0;if(a|0)c[663]=a;a=c[667]|0;if(a|0)c[666]=a;a=c[670]|0;if(!a){d=0;return d|0}c[669]=a;d=0;return d|0}function Tb(a,b){a=a|0;b=b|0;do if(Bu(b,c[584]|0)|0)if(Bu(b,c[587]|0)|0)if(Bu(b,c[590]|0)|0)if(Bu(b,c[593]|0)|0)if(Bu(b,c[596]|0)|0)if(Bu(b,c[599]|0)|0)if(Bu(b,c[602]|0)|0)if(Bu(b,c[605]|0)|0)if(Bu(b,c[608]|0)|0)if(Bu(b,c[611]|0)|0)if(Bu(b,c[614]|0)|0)if(Bu(b,c[617]|0)|0)if(Bu(b,c[620]|0)|0)if(Bu(b,c[623]|0)|0)if(Bu(b,c[626]|0)|0)if(Bu(b,c[629]|0)|0)if(Bu(b,c[632]|0)|0)if(Bu(b,c[635]|0)|0)if(!(Bu(b,c[638]|0)|0))a=18;else{if(!(Bu(b,c[641]|0)|0)){a=19;break}if(!(Bu(b,c[644]|0)|0)){a=20;break}if(!(Bu(b,c[647]|0)|0)){a=21;break}if(!(Bu(b,c[650]|0)|0)){a=22;break}if(!(Bu(b,c[653]|0)|0)){a=23;break}if(!(Bu(b,c[656]|0)|0)){a=24;break}if(!(Bu(b,c[659]|0)|0)){a=25;break}if(!(Bu(b,c[662]|0)|0)){a=26;break}if(!(Bu(b,c[665]|0)|0)){a=27;break}if(!(Bu(b,c[668]|0)|0)){a=28;break}else a=0;return a|0}else a=17;else a=16;else a=15;else a=14;else a=13;else a=12;else a=11;else a=10;else a=9;else a=8;else a=7;else a=6;else a=5;else a=4;else a=3;else a=2;else a=1;else a=0;while(0);b=c[2336+(a*12|0)+4>>2]|0;return b|0}function Ub(a,b){a=a|0;b=b|0;var d=0;do if(b)if(Bu(b,c[584]|0)|0)if(Bu(b,c[587]|0)|0)if(Bu(b,c[590]|0)|0)if(Bu(b,c[593]|0)|0)if(Bu(b,c[596]|0)|0)if(Bu(b,c[599]|0)|0)if(Bu(b,c[602]|0)|0)if(Bu(b,c[605]|0)|0)if(Bu(b,c[608]|0)|0)if(Bu(b,c[611]|0)|0)if(Bu(b,c[614]|0)|0)if(Bu(b,c[617]|0)|0)if(Bu(b,c[620]|0)|0)if(Bu(b,c[623]|0)|0)if(Bu(b,c[626]|0)|0)if(Bu(b,c[629]|0)|0)if(Bu(b,c[632]|0)|0)if(!(Bu(b,c[635]|0)|0))a=17;else{if(!(Bu(b,c[638]|0)|0)){a=18;break}if(!(Bu(b,c[641]|0)|0)){a=19;break}if(!(Bu(b,c[644]|0)|0)){a=20;break}if(!(Bu(b,c[647]|0)|0)){a=21;break}if(!(Bu(b,c[650]|0)|0)){a=22;break}if(!(Bu(b,c[653]|0)|0)){a=23;break}if(!(Bu(b,c[656]|0)|0)){a=24;break}if(!(Bu(b,c[659]|0)|0)){a=25;break}if(!(Bu(b,c[662]|0)|0)){a=26;break}if(!(Bu(b,c[665]|0)|0)){a=27;break}else a=0;return a|0}else a=16;else a=15;else a=14;else a=13;else a=12;else a=11;else a=10;else a=9;else a=8;else a=7;else a=6;else a=5;else a=4;else a=3;else a=2;else a=1;else a=0;else a=-1;while(0);while(1){b=a;a=a+1|0;if(c[2336+(a*12|0)+4>>2]|0)break;if((b|0)>=27){a=0;d=8;break}}if((d|0)==8)return a|0;d=c[2336+(a*12|0)>>2]|0;return d|0}function Vb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=Ra;Ra=Ra+16|0;f=g;c[a+64>>2]=b;Le(a,b);if(!d){Xb(a,b);Ra=g;return}b=a+260|0;if((c[b>>2]|0)==0?(h=wd(a)|0,c[b>>2]=h,(h|0)==0):0){Ra=g;return}c[f>>2]=e;a=Me(a,d,f)|0;b=c[b>>2]|0;if(b|0)yc(b,a,-1,1,116)|0;Ra=g;return}function Wb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=Sv(a|0,b|0,-1,-1)|0;d=L()|0;if(d>>>0>0|(d|0)==0&e>>>0>2147483390){e=0;return e|0}if(!(c[7324]|0)){b=Wa[c[29340>>2]&127](a)|0;if(!b){e=0;return e|0}}else{b=Wa[c[29356>>2]&127](a)|0;if((c[14985]|0)>>>0>>0)c[14985]=a;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){f=c[14978]|0;e=Tv(d|0,e|0,b|0,((b|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=f>>>0)&1}b=Wa[c[29340>>2]&127](b)|0;if(!b){f=0;return f|0}d=Wa[c[29352>>2]&127](b)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}gw(b|0,0,a|0)|0;f=b;return f|0}function Xb(a,b){a=a|0;b=b|0;c[a+64>>2]=b;if(b|0){Ne(a,b);return}if(!(c[a+260>>2]|0))return;Ne(a,0);return}function Yb(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=Ra;Ra=Ra+16|0;v=F;D=d+24|0;i=c[D>>2]|0;h=c[i+4>>2]|0;c[h+4>>2]=c[i>>2];E=d+28|0;g=c[E>>2]|0;switch(g|0){case 6:case 0:case 5:break;default:{E=g;Ra=F;return E|0}}u=c[h>>2]|0;x=d+4|0;w=c[c[(c[x>>2]|0)+4>>2]>>2]|0;if((c[d>>2]|0)!=0?(a[h+20>>0]|0)==2:0){C=0;g=5}else if(!(a[i+8>>0]|0)){C=1;g=Zb(i,0,0)|0}else{C=0;g=0}o=d+12|0;if((c[o>>2]|g|0)==0?(t=c[x>>2]|0,j=c[(c[(c[D>>2]|0)+4>>2]|0)+32>>2]|0,p=c[t+4>>2]|0,c[p+4>>2]=c[t>>2],(b[p+22>>1]&2)==0):0){k=p+32|0;l=p+36|0;m=(c[k>>2]|0)-(c[l>>2]|0)|0;if(((j+-512|0)>>>0<65025?(j+-1&j|0)==0:0)?(c[k>>2]=j,q=p+80|0,n=c[q>>2]|0,n|0):0){i=n+-4|0;c[q>>2]=i;h=i;do if((c[14816]|0)>>>0<=h>>>0)if((c[14817]|0)>>>0>h>>>0){c[14979]=(c[14979]|0)+-1;c[i>>2]=c[14819];c[14819]=i;t=(c[14820]|0)+1|0;c[14820]=t;c[14821]=(t|0)<(c[14815]|0)&1;break}else{h=Wa[c[29352>>2]&127](i)|0;B=16;break}else{h=Wa[c[29352>>2]&127](i)|0;B=16}while(0);do if((B|0)==16){c[14980]=(c[14980]|0)-h;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);c[q>>2]=0}t=Se(c[p>>2]|0,k,m)|0;c[l>>2]=(c[k>>2]|0)-(m&65535);if((t|0)==7)g=7;else B=21}else B=21;if((B|0)==21)if(!g)if(!(c[o>>2]|0)){g=Zb(c[x>>2]|0,2,d+8|0)|0;if(!g){c[o>>2]=1;g=0}}else g=0;l=c[(c[D>>2]|0)+4>>2]|0;t=c[l+32>>2]|0;n=c[(c[x>>2]|0)+4>>2]|0;s=c[n+32>>2]|0;n=(a[(c[n>>2]|0)+5>>0]|0)==5;g=(t|0)==(s|0)|(g|0)==0&n^1?g:8;l=c[l+44>>2]|0;a:do if(e){j=d+16|0;k=u+204|0;i=0;h=c[j>>2]|0;do{if(!((g|0)==0&h>>>0<=l>>>0))break a;if((h|0)==((1073741824/((c[(c[(c[D>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0))g=0;else{g=Za[c[k>>2]&127](u,h,v,2)|0;do if(!g){g=_b(d,h,c[(c[v>>2]|0)+4>>2]|0,0)|0;h=c[v>>2]|0;if(h)if(!(b[h+28>>1]&32)){Df(h);break}else{q=c[h+20>>2]|0;p=q+120|0;c[p>>2]=(c[p>>2]|0)+-1;q=q+136|0;c[h+16>>2]=c[q>>2];c[q>>2]=h;break}}while(0);h=c[j>>2]|0}h=h+1|0;c[j>>2]=h;i=i+1|0}while(i>>>0>>0)}while(0);switch(g|0){case 0:{c[d+36>>2]=l;e=c[d+16>>2]|0;c[d+32>>2]=l+1-e;if(e>>>0<=l>>>0){f=d+40|0;if(!(c[f>>2]|0)){A=(c[c[(c[D>>2]|0)+4>>2]>>2]|0)+88|0;c[d+44>>2]=c[A>>2];c[A>>2]=d;c[f>>2]=1;f=0}else f=0}else B=40;break}case 101:{B=40;break}default:f=g}b:do if((B|0)==40){if(!l){e=c[x>>2]|0;g=c[e+4>>2]|0;c[g+4>>2]=c[e>>2];c[g+44>>2]=0;g=Rf(g)|0;switch(g|0){case 0:case 101:{m=1;break}default:{f=g;break b}}}else m=l;i=c[x>>2]|0;h=(c[d+8>>2]|0)+1|0;j=c[i+4>>2]|0;c[j+4>>2]=c[i>>2];j=c[j+12>>2]|0;i=c[j+56>>2]|0;j=c[j+72>>2]|0;k=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0){if(c[k+96>>2]|0){r=Ve(j)|0;B=50}}else B=46;do if((B|0)==46){g=c[k+40>>2]|0;if(g|0){f=g;break b}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){r=Wf(j)|0;B=50;break}else{r=Xf(j)|0;B=50;break}}while(0);if((B|0)==50?r|0:0){f=r;break}a[i+40>>0]=h>>>24;a[i+41>>0]=h>>>16;a[i+42>>0]=h>>>8;a[i+43>>0]=h;g=c[d>>2]|0;if(g|0)$b(g);c:do if(n){i=c[x>>2]|0;g=c[i+4>>2]|0;l=g+22|0;b[l>>1]=b[l>>1]&-33;h=Zb(i,0,0)|0;d:do if(!h){h=g+12|0;j=c[(c[h>>2]|0)+56>>2]|0;k=j+18|0;if(!((a[k>>0]|0)==2?(a[j+19>>0]|0)==2:0)){g=Zb(i,2,0)|0;if(g|0){f=g;break}g=c[(c[h>>2]|0)+72>>2]|0;h=c[g+20>>2]|0;if((b[g+28>>1]&4)!=0?(c[h+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0){if(c[h+96>>2]|0){f=Ve(g)|0;B=66}}else B=62;do if((B|0)==62){f=c[h+40>>2]|0;if(f|0)break d;if((c[h+148>>2]|0)>>>0>(c[h+152>>2]|0)>>>0){f=Wf(g)|0;B=66;break}else{f=Xf(g)|0;B=66;break}}while(0);if((B|0)==66?f|0:0)break;a[k>>0]=2;a[j+19>>0]=2}b[l>>1]=b[l>>1]&-33;break c}else f=h;while(0);b[l>>1]=b[l>>1]&-33;break b}while(0);if((t|0)<(s|0)){f=(s|0)/(t|0)|0;f=(m+-1+f|0)/(f|0)|0;g=c[(c[(c[x>>2]|0)+4>>2]|0)+32>>2]|0;f=f+(((f|0)==((1073741824/(g>>>0)|0)+1|0))<<31>>31)|0;n=((t|0)<0)<<31>>31;o=Yv(m|0,((m|0)<0)<<31>>31|0,t|0,n|0)|0;p=L()|0;q=w+60|0;m=c[q>>2]|0;j=c[w+24>>2]|0;if(f>>>0<=j>>>0){k=w+204|0;i=f;f=0;h=1073741824;while(1){if((i|0)!=(((h>>>0)/(g>>>0)|0)+1|0)){f=Za[c[k>>2]&127](w,i,v,0)|0;do if(!f){g=c[v>>2]|0;h=c[g+20>>2]|0;do if((b[g+28>>1]&4)!=0?(c[h+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0){if(!(c[h+96>>2]|0)){f=0;break}f=Ve(g)|0}else B=79;while(0);do if((B|0)==79){B=0;f=c[h+40>>2]|0;if(!f)if((c[h+148>>2]|0)>>>0>(c[h+152>>2]|0)>>>0){f=Wf(g)|0;break}else{f=Xf(g)|0;break}}while(0);g=c[v>>2]|0;if(g)if(!(b[g+28>>1]&32)){Df(g);break}else{d=c[g+20>>2]|0;r=d+120|0;c[r>>2]=(c[r>>2]|0)+-1;d=d+136|0;c[g+16>>2]=c[d>>2];c[d>>2]=g;break}}while(0)}g=i+1|0;h=(f|0)==0;if(g>>>0>j>>>0|h^1)break;i=g;h=1073741824;g=c[(c[(c[x>>2]|0)+4>>2]|0)+32>>2]|0}if(h)B=91}else B=91;if((B|0)==91)f=ac(w,0,1)|0;k=1073741824+s|0;l=((k|0)<0)<<31>>31;h=(p|0)>(l|0)|(p|0)==(l|0)&o>>>0>k>>>0;k=h?k:o;l=h?l:p;h=1073741824+t|0;i=((h|0)<0)<<31>>31;g=(f|0)==0;if(((l|0)>(i|0)|(l|0)==(i|0)&k>>>0>h>>>0)&g){j=u+204|0;do{c[v>>2]=0;f=Wv(h|0,i|0,t|0,n|0)|0;L()|0;f=Za[c[j>>2]&127](u,f+1|0,v,0)|0;if(!f)f=_a[c[(c[m>>2]|0)+12>>2]&127](m,c[(c[v>>2]|0)+4>>2]|0,t,h,i)|0;g=c[v>>2]|0;do if(g|0)if(!(b[g+28>>1]&32)){Df(g);break}else{s=c[g+20>>2]|0;d=s+120|0;c[d>>2]=(c[d>>2]|0)+-1;s=s+136|0;c[g+16>>2]=c[s>>2];c[s>>2]=g;break}while(0);h=Sv(h|0,i|0,t|0,n|0)|0;i=L()|0;g=(f|0)==0}while(((i|0)<(l|0)|(i|0)==(l|0)&h>>>0>>0)&g)}if(!g)break;f=Xa[c[(c[m>>2]|0)+24>>2]&255](m,v)|0;u=c[v+4>>2]|0;if((f|0)==0&((u|0)>(p|0)|((u|0)==(p|0)?(c[v>>2]|0)>>>0>o>>>0:0)))f=Ya[c[(c[m>>2]|0)+16>>2]&127](m,o,p)|0;if(f|0)break;f=c[q>>2]|0;g=c[f>>2]|0;if(g|0){f=Ya[c[g+40>>2]&127](f,21,0)|0;switch(f|0){case 0:case 12:break;default:break b}}if((a[w+7>>0]|0)==0?(z=c[q>>2]|0,A=a[w+10>>0]|0,A<<24>>24):0){y=Xa[c[(c[z>>2]|0)+20>>2]&255](z,A&255)|0;B=111}}else{y=G((t|0)/(s|0)|0,m)|0;c[w+24>>2]=y;y=ac(w,0,0)|0;B=111}if((B|0)==111?y|0:0){f=y;break}f=bc(c[x>>2]|0,0)|0;f=(f|0)==0?101:f}while(0);if(C|0){cc(c[D>>2]|0,0)|0;bc(c[D>>2]|0,0)|0}D=(f|0)==3082?7:f;c[E>>2]=D;E=D;Ra=F;return E|0}function Zb(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=Ra;Ra=Ra+16|0;Q=X;K=X+12|0;W=c[e+4>>2]|0;m=c[e>>2]|0;P=W+4|0;c[P>>2]=m;U=e+8|0;n=a[U>>0]|0;do if(n<<24>>24!=2?(R=(f|0)!=0,R|n<<24>>24!=1):0){if(!(0==0?(c[m+32>>2]&33554432|0)==0:0)?(a[(c[W>>2]|0)+14>>0]|0)==0:0){T=W+22|0;b[T>>1]=b[T>>1]&-2}L=W+22|0;q=b[L>>1]|0;if(R&(q&1)!=0){e=8;Ra=X;return e|0}a:do if(R)if((q&128)==0&(a[W+20>>0]|0)!=2){if((f|0)>1?(o=c[W+72>>2]|0,o|0):0){m=o;do{n=c[m>>2]|0;if((n|0)!=(e|0)){p=n;J=16;break a}m=c[m+12>>2]|0}while((m|0)!=0)}}else J=10;else if(q&128)J=10;while(0);if((J|0)==10){p=c[W+76>>2]|0;J=16}if((J|0)==16?c[p>>2]|0:0){e=262;Ra=X;return e|0}I=e+9|0;b:do if(a[I>>0]|0){if(!((q&64)==0?1:(c[W+76>>2]|0)==(e|0))){e=262;Ra=X;return e|0}m=c[W+72>>2]|0;if(m|0){while(1){if(((c[m>>2]|0)!=(e|0)?(c[m+4>>2]|0)==1:0)?(a[m+8>>0]|0)!=1:0){h=262;break}m=c[m+12>>2]|0;if(!m)break b}Ra=X;return h|0}}while(0);b[L>>1]=q&-17;T=W+44|0;if(!(c[T>>2]|0))b[L>>1]=q|16;G=W+12|0;H=W+20|0;v=W+36|0;w=W+24|0;x=W+26|0;y=W+28|0;z=W+30|0;A=W+21|0;B=W+32|0;C=W+80|0;D=W+17|0;E=W+18|0;F=(f|0)<2;n=0;c:while(1){d:do if(!(c[G>>2]|0)){e:while(1){m=Sf(c[W>>2]|0)|0;if(m|0){J=135;break d}m=c[W>>2]|0;m=Za[c[m+204>>2]&127](m,1,K,0)|0;if(m|0){J=35;break}n=c[K>>2]|0;m=c[n+8>>2]|0;o=m+4|0;if((c[o>>2]|0)==1)s=c[m+56>>2]|0;else{s=c[n+4>>2]|0;c[m+56>>2]=s;c[m+72>>2]=n;c[m+52>>2]=W;c[o>>2]=1;a[m+9>>0]=100}t=m;n=d[s+29>>0]<<16|d[s+28>>0]<<24|d[s+30>>0]<<8|d[s+31>>0];u=c[W>>2]|0;r=c[u+24>>2]|0;if(!((n|0)!=0?(Lu(s+24|0,s+92|0,4)|0)==0:0))n=r;p=c[(c[P>>2]|0)+32>>2]|0;q=(p&33554432|0)==0&0==0?n:0;do if(!q){n=c[v>>2]|0;J=85}else{if(Lu(s,2720,16)|0){n=26;break e}if((d[s+18>>0]|0)>2)b[L>>1]=b[L>>1]|1;n=a[s+19>>0]|0;if((n&255)>2){n=26;break e}do if(n<<24>>24==2){if(b[L>>1]&32){J=62;break}if(a[u+12>>0]|0){J=62;break}if(c[u+216>>2]|0){J=62;break}n=c[c[u+60>>2]>>2]|0;if(a[u+13>>0]|0){n=14;break e}if(!(a[u+4>>0]|0)){if((c[n>>2]|0)<=1){n=14;break e}if(!(c[n+52>>2]|0)){n=14;break e}}n=c[u+64>>2]|0;o=c[n>>2]|0;if(o|0){Wa[c[o+4>>2]&127](n)|0;c[n>>2]=0}n=Uf(u)|0;if(n|0)break e;a[u+5>>0]=5;a[u+16>>0]=0;u=c[m+72>>2]|0;m=c[u+20>>2]|0;Df(u);if(c[(c[m+212>>2]|0)+12>>2]|0)break;f:do switch(a[m+16>>0]|0){case 0:case 6:break;case 1:{if(a[m+4>>0]|0)break f;uf(m,0,0)|0;break}default:tf(m)|0}while(0);vf(m)}else J=62;while(0);if((J|0)==62){J=0;if(Lu(s+21|0,32387,3)|0){n=26;break e}o=d[s+17>>0]<<16|d[s+16>>0]<<8;if((o+-257|0)>>>0>65279|(o+16777215&o|0)!=0){n=26;break e}b[L>>1]=b[L>>1]|2;u=d[s+20>>0]|0;n=o-u|0;if((o|0)==(c[B>>2]|0)){if(((p&268435457|0)!=1|0!=0)&q>>>0>r>>>0){J=82;break e}if(n>>>0<480){n=26;break e}c[B>>2]=o;c[v>>2]=n;a[D>>0]=(d[s+53>>0]<<16|d[s+52>>0]<<24|d[s+54>>0]<<8|d[s+55>>0]|0)!=0&1;a[E>>0]=(d[s+65>>0]<<16|d[s+64>>0]<<24|d[s+66>>0]<<8|d[s+67>>0]|0)!=0&1;J=85;break}t=c[m+72>>2]|0;m=c[t+20>>2]|0;Df(t);if(!(c[(c[m+212>>2]|0)+12>>2]|0)){g:do switch(a[m+16>>0]|0){case 0:case 6:break;case 1:{if(a[m+4>>0]|0)break g;uf(m,0,0)|0;break}default:tf(m)|0}while(0);vf(m)}c[v>>2]=n;c[B>>2]=o;m=c[C>>2]|0;if(m|0){n=m+-4|0;c[C>>2]=n;m=n;do if((c[14816]|0)>>>0<=m>>>0)if((c[14817]|0)>>>0>m>>>0){c[14979]=(c[14979]|0)+-1;c[n>>2]=c[14819];c[14819]=n;t=(c[14820]|0)+1|0;c[14820]=t;c[14821]=(t|0)<(c[14815]|0)&1;break}else{m=Wa[c[29352>>2]&127](n)|0;J=77;break}else{m=Wa[c[29352>>2]&127](n)|0;J=77}while(0);do if((J|0)==77){J=0;c[14980]=(c[14980]|0)-m;if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{t=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[C>>2]=0}m=Se(c[W>>2]|0,B,u)|0;if(m|0){J=135;break d}}m=c[G>>2]|0}while(0);if((J|0)==85){J=0;u=((((n<<6)+-768|0)>>>0)/255|0)+65513|0;s=u&65535;b[w>>1]=s;r=((((n<<5)+-384|0)>>>0)/255|0)+65513&65535;b[x>>1]=r;b[y>>1]=n+65501;b[z>>1]=r;a[A>>0]=(s&65535)>127?127:u&255;c[G>>2]=t;c[T>>2]=q}if(m|0){n=0;J=96;break d}}if((J|0)==35){J=135;break}else if((J|0)==82){c[Q>>2]=32306;c[Q+4>>2]=66365;c[Q+8>>2]=31517;Db(11,32001,Q);n=11}J=c[m+72>>2]|0;m=c[J+20>>2]|0;Df(J);if(!(c[(c[m+212>>2]|0)+12>>2]|0)){switch(a[m+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[m+4>>0]|0))uf(m,0,0)|0;break}default:tf(m)|0}vf(m)}c[G>>2]=0;m=n;J=135}else J=96;while(0);h:do if((J|0)==96){J=0;i:do if(R&(n|0)==0){if(b[L>>1]&1){m=8;J=135;break h}u=c[W>>2]|0;n=c[u+40>>2]|0;j:do if(!n){a[u+21>>0]=(a[(c[e>>2]|0)+80>>0]|0)==2&1;t=u+16|0;if((a[t>>0]|0)==1){p=u+216|0;m=c[p>>2]|0;k:do if(!m){s=u+17|0;m=a[s>>0]|0;l:do switch(m<<24>>24){case 0:case 1:case 5:{if(!(a[u+13>>0]|0)){n=c[u+60>>2]|0;n=Xa[c[(c[n>>2]|0)+28>>2]&255](n,2)|0;if(n|0){J=132;break j}m=a[s>>0]|0}if(m<<24>>24==5){m=5;break l}a[s>>0]=2;m=2;break}default:{}}while(0);if(!F){o=u+13|0;p=u+60|0;q=u+176|0;r=u+180|0;m:while(1){switch(m<<24>>24){case 0:case 1:case 2:case 3:case 5:break;default:break k}if(a[o>>0]|0)break;n=c[p>>2]|0;n=Xa[c[(c[n>>2]|0)+28>>2]&255](n,4)|0;switch(n|0){case 0:break m;case 5:break;default:{J=132;break j}}if(!(Wa[c[q>>2]&127](c[r>>2]|0)|0)){m=5;J=135;break h}m=a[s>>0]|0}a[s>>0]=4}}else{do if(a[u+4>>0]|0){n=m+43|0;if(a[n>>0]|0)break;o=u+17|0;n:do switch(a[o>>0]|0){case 0:case 1:case 2:case 3:case 5:{if(a[u+13>>0]|0){a[o>>0]=4;J=108;break n}n=c[u+60>>2]|0;n=Xa[c[(c[n>>2]|0)+28>>2]&255](n,4)|0;if(n|0){J=132;break j}m=c[p>>2]|0;n=m+43|0;s=a[n>>0]|0;a[o>>0]=4;if(!(s<<24>>24))J=108;break}default:J=108}while(0);if((J|0)==108){J=c[m+4>>2]|0;Za[c[(c[J>>2]|0)+56>>2]&127](J,(b[m+40>>1]|0)+3|0,1,5)|0;m=c[p>>2]|0}a[n>>0]=1}while(0);if(a[m+46>>0]|0){m=8;J=135;break h}n=m+43|0;if((a[n>>0]|0)==0?(M=c[m+4>>2]|0,M=Za[c[(c[M>>2]|0)+56>>2]&127](M,0,1,10)|0,M|0):0){n=M;J=132;break j}o=m+44|0;a[o>>0]=1;if(!(Lu(m+52|0,c[c[m+32>>2]>>2]|0,48)|0))break;if(!(a[n>>0]|0)){J=c[m+4>>2]|0;Za[c[(c[J>>2]|0)+56>>2]&127](J,0,1,9)|0}a[o>>0]=0;J=134;break j}while(0);a[t>>0]=2;J=c[u+24>>2]|0;c[u+36>>2]=J;c[u+32>>2]=J;c[u+28>>2]=J;J=u+72|0;c[J>>2]=0;c[J+4>>2]=0;J=133}else J=133}else J=132;while(0);if((J|0)==132){J=0;switch(n|0){case 0:{J=133;break}case 517:{J=134;break}default:break i}}if((J|0)==133){J=0;n=Rf(W)|0;break}else if((J|0)==134){m=(a[H>>0]|0)==0?5:517;J=135;break h}}while(0);if(!n){n=0;break c}else s=0}while(0);if((J|0)==135){J=0;n=m;s=(m|0)==0}if(((a[H>>0]|0)==0?(N=c[G>>2]|0,N|0):0)?(c[G>>2]=0,u=c[N+72>>2]|0,O=c[u+20>>2]|0,Df(u),(c[(c[O+212>>2]|0)+12>>2]|0)==0):0){switch(a[O+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[O+4>>0]|0))uf(O,0,0)|0;break}default:tf(O)|0}vf(O)}if((n&255|0)!=5){J=156;break}if(a[H>>0]|0){J=156;break}o=c[P>>2]|0;m=c[(c[W>>2]|0)+60>>2]|0;p=c[o+396>>2]|0;if(!p){J=154;break}r=o+404|0;q=c[r>>2]|0;if((q|0)<0){J=154;break}if(!(a[o+408>>0]|0))m=Xa[p&255](c[o+400>>2]|0,q)|0;else m=Ya[p&127](c[o+400>>2]|0,q,m)|0;if(!m){J=153;break}c[r>>2]=(c[r>>2]|0)+1}if((J|0)==153){c[r>>2]=-1;if(!s){e=n;Ra=X;return e|0}}else if((J|0)==154){if(!s){e=n;Ra=X;return e|0}}else if((J|0)==156)if(!s){e=n;Ra=X;return e|0}if((a[U>>0]|0)==0?(Q=W+40|0,c[Q>>2]=(c[Q>>2]|0)+1,a[I>>0]|0):0){a[e+40>>0]=1;Q=W+72|0;c[e+44>>2]=c[Q>>2];c[Q>>2]=e+32}m=R?2:1;a[U>>0]=m;if((m&255)>(d[H>>0]|0))a[H>>0]=m;if(R?(S=c[G>>2]|0,c[W+76>>2]=e,h=b[L>>1]|0,b[L>>1]=(f|0)>1?h|64:h&-65,h=c[T>>2]|0,V=S+56|0,j=c[V>>2]|0,i=j+28|0,l=j+29|0,k=j+30|0,j=j+31|0,(h|0)!=(d[l>>0]<<16|d[i>>0]<<24|d[k>>0]<<8|d[j>>0]|0)):0){m=c[S+72>>2]|0;n=c[m+20>>2]|0;if((b[m+28>>1]&4)!=0?(c[n+24>>2]|0)>>>0>=(c[m+24>>2]|0)>>>0:0){if(c[n+96>>2]|0){h=Ve(m)|0;J=172}}else J=168;do if((J|0)==168){h=c[n+40>>2]|0;if(h|0){e=h;Ra=X;return e|0}if((c[n+148>>2]|0)>>>0>(c[n+152>>2]|0)>>>0){h=Wf(m)|0;J=172;break}else{h=Xf(m)|0;J=172;break}}while(0);do if((J|0)==172)if(!h){i=c[V>>2]|0;l=i+29|0;k=i+30|0;j=i+31|0;i=i+28|0;h=c[T>>2]|0;break}else{e=h;Ra=X;return e|0}while(0);a[i>>0]=h>>>24;a[l>>0]=h>>>16;a[k>>0]=h>>>8;a[j>>0]=h;break}if(n|0){e=n;Ra=X;return e|0}}while(0);if(g|0){V=c[(c[W+12>>2]|0)+56>>2]|0;c[g>>2]=d[V+41>>0]<<16|d[V+40>>0]<<24|d[V+42>>0]<<8|d[V+43>>0]}if(!f){e=0;Ra=X;return e|0}i=c[W>>2]|0;h=c[(c[e>>2]|0)+452>>2]|0;if((c[i+96>>2]|0)>=(h|0)){e=0;Ra=X;return e|0}if(!(a[i+6>>0]|0)){e=0;Ra=X;return e|0}e=Vf(i,h)|0;Ra=X;return e|0}function _b(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=Ra;Ra=Ra+16|0;w=z;x=d+4|0;q=c[(c[x>>2]|0)+4>>2]|0;v=c[q>>2]|0;u=d+24|0;r=c[(c[(c[u>>2]|0)+4>>2]|0)+32>>2]|0;q=c[q+32>>2]|0;s=(r|0)<(q|0)?r:q;t=((r|0)<0)<<31>>31;o=Yv(r|0,t|0,e|0,0)|0;p=L()|0;if((r|0)==(q|0))d=0;else d=(a[v+12>>0]|0)==0?0:8;if(!((r|0)>0&(d|0)==0)){y=d;Ra=z;return y|0}e=Tv(o|0,p|0,r|0,t|0)|0;m=((q|0)<0)<<31>>31;n=v+204|0;l=(g|0)==0;g=L()|0;d=q;while(1){c[w>>2]=0;j=Wv(e|0,g|0,q|0,m|0)|0;k=L()|0;do if((1073741824/(d>>>0)|0|0)!=(j|0)){d=Za[c[n>>2]&127](v,j+1|0,w,0)|0;a:do if(!d){h=c[w>>2]|0;i=c[h+20>>2]|0;if((b[h+28>>1]&4)!=0?(c[i+24>>2]|0)>>>0>=(c[h+24>>2]|0)>>>0:0)if(!(c[i+96>>2]|0))d=h;else{d=Ve(h)|0;y=15}else y=11;do if((y|0)==11){y=0;d=c[i+40>>2]|0;if(d|0)break a;if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){d=Wf(h)|0;y=15;break}else{d=Xf(h)|0;y=15;break}}while(0);if((y|0)==15){y=0;if(d|0)break;d=c[w>>2]|0}i=Zv(e|0,g|0,r|0,t|0)|0;L()|0;h=c[d+4>>2]|0;d=Yv(j|0,k|0,q|0,m|0)|0;d=Tv(e|0,g|0,d|0,L()|0)|0;L()|0;d=h+d|0;ew(d|0,f+i|0,s|0)|0;a[c[(c[w>>2]|0)+8>>2]>>0]=0;if(l&((e|0)==0&(g|0)==0)){d=d+28|0;k=c[(c[(c[u>>2]|0)+4>>2]|0)+44>>2]|0;a[d>>0]=k>>>24;a[d+1>>0]=k>>>16;a[d+2>>0]=k>>>8;a[d+3>>0]=k;d=0}else d=0}while(0);h=c[w>>2]|0;if(h)if(!(b[h+28>>1]&32)){Df(h);break}else{k=c[h+20>>2]|0;j=k+120|0;c[j>>2]=(c[j>>2]|0)+-1;k=k+136|0;c[h+16>>2]=c[k>>2];c[k>>2]=h;break}}else d=0;while(0);e=Sv(e|0,g|0,q|0,m|0)|0;g=L()|0;if(!(((g|0)<(p|0)|(g|0)==(p|0)&e>>>0>>0)&(d|0)==0))break;d=c[(c[(c[x>>2]|0)+4>>2]|0)+32>>2]|0}Ra=z;return d|0}function $b(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=a+20|0;e=c[i>>2]|0;f=(e|0)>0;if(f){g=c[a+16>>2]|0;d=0;do{h=c[g+(d<<4)+4>>2]|0;if(h|0)c[(c[h+4>>2]|0)+4>>2]=c[h>>2];d=d+1|0}while((d|0)!=(e|0));if(f){h=a+16|0;d=a+56|0;g=0;do{f=c[(c[h>>2]|0)+(g<<4)+12>>2]|0;do if(f)if(!(c[d>>2]|0)){dh(f);e=c[i>>2]|0;break}else{f=f+78|0;b[f>>1]=b[f>>1]|8;break}while(0);g=g+1|0}while((g|0)<(e|0))}else j=7}else j=7;if((j|0)==7)d=a+56|0;j=a+24|0;c[j>>2]=c[j>>2]&-18;Ti(a);if(c[d>>2]|0)return;Ui(a);return}function ac(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=Ra;Ra=Ra+16|0;z=C+8|0;r=C;h=c[e+40>>2]|0;if(h|0){e=h;Ra=C;return e|0}h=c[7389]|0;if(h|0?Wa[h&127](400)|0:0){e=10;Ra=C;return e|0}B=e+16|0;if((d[B>>0]|0)<3){e=0;Ra=C;return e|0}do if(a[e+12>>0]|0){if(c[c[e+60>>2]>>2]|0){i=c[e+212>>2]|0;h=c[i+16>>2]|0;if((h|0)<=-1){n=Yv(h|0,((h|0)<0)<<31>>31|0,-1024,-1)|0;p=L()|0;h=(c[i+28>>2]|0)+(c[i+24>>2]|0)|0;h=Wv(n|0,p|0,h|0,((h|0)<0)<<31>>31|0)|0;L()|0}i=c[i>>2]|0;if(!i){i=0;j=0}else{j=0;do{j=j+1|0;i=c[i+32>>2]|0}while((i|0)!=0);i=Yv(j|0,0,100,0)|0;j=L()|0}if(h|0?(p=Wv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0,L()|0,(p|0)>=25):0){A=18;break}}h=c[e+88>>2]|0;if(h|0)do{c[h+16>>2]=1;h=c[h+44>>2]|0}while((h|0)!=0)}else A=18;while(0);do if((A|0)==18){if(!(c[e+216>>2]|0)){k=e+18|0;if((a[k>>0]|0)==0?c[e+24>>2]|0:0){h=Za[c[e+204>>2]&127](e,1,z,0)|0;a:do if(!h){j=c[z>>2]|0;i=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[i+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0)if(!(c[i+96>>2]|0))h=j;else{h=Ve(j)|0;A=53}else A=49;do if((A|0)==49){h=c[i+40>>2]|0;if(h|0)break a;if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){h=Wf(j)|0;A=53;break}else{h=Xf(j)|0;A=53;break}}while(0);if((A|0)==53){if(h|0)break;h=c[z>>2]|0;i=c[h+20>>2]|0}o=(d[i+105>>0]<<16|d[i+104>>0]<<24|d[i+106>>0]<<8|d[i+107>>0])+1|0;h=h+4|0;p=c[h>>2]|0;l=o>>>24&255;a[p+24>>0]=l;m=o>>>16&255;a[p+25>>0]=m;n=o>>>8&255;a[p+26>>0]=n;o=o&255;a[p+27>>0]=o;p=c[h>>2]|0;a[p+92>>0]=l;a[p+93>>0]=m;a[p+94>>0]=n;a[p+95>>0]=o;h=c[h>>2]|0;a[h+96>>0]=0;a[h+97>>0]=46;a[h+98>>0]=52;a[h+99>>0]=32;a[k>>0]=1;h=0}while(0);i=c[z>>2]|0;do if(i|0)if(!(b[i+28>>1]&32)){Df(i);break}else{p=c[i+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[i+16>>2]=c[p>>2];c[p>>2]=i;break}while(0);if(h|0){e=h;Ra=C;return e|0}}b:do if(((f|0)!=0?(a[e+5>>0]|0)!=4:0)?(s=e+64|0,q=c[s>>2]|0,(c[q>>2]|0)!=0):0){a[e+19>>0]=1;h=a[f>>0]|0;if(!(h<<24>>24)){i=0;j=0}else{j=0;i=0;do{i=i+(h<<24>>24)|0;j=j+1|0;h=a[f+j>>0]|0}while(h<<24>>24!=0)}p=e+72|0;k=p;h=c[k>>2]|0;k=c[k+4>>2]|0;if(!(a[e+8>>0]|0))l=h;else{if((h|0)==0&(k|0)==0){h=0;k=0}else{o=Sv(h|0,k|0,-1,-1)|0;k=L()|0;h=c[e+148>>2]|0;k=Wv(o|0,k|0,h|0,0)|0;k=Sv(k|0,L()|0,1,0)|0;h=Yv(k|0,L()|0,h|0,0)|0;k=L()|0}l=p;c[l>>2]=h;c[l+4>>2]=k;l=h}h=(1073741824/(c[e+152>>2]|0)|0)+1|0;a[z>>0]=h>>>24;m=z+1|0;a[m>>0]=h>>>16;n=z+2|0;a[n>>0]=h>>>8;o=z+3|0;a[o>>0]=h;h=_a[c[(c[q>>2]|0)+12>>2]&127](q,z,4,l,k)|0;do if(!h){h=c[s>>2]|0;k=Sv(l|0,k|0,4,0)|0;l=L()|0;h=_a[c[(c[h>>2]|0)+12>>2]&127](h,f,j,k,l)|0;if(!h){h=c[s>>2]|0;k=Sv(k|0,l|0,j|0,0)|0;l=L()|0;a[z>>0]=j>>>24;a[m>>0]=j>>>16;a[n>>0]=j>>>8;a[o>>0]=j;h=_a[c[(c[h>>2]|0)+12>>2]&127](h,z,4,k,l)|0;if(!h){D=c[s>>2]|0;q=Sv(k|0,l|0,4,0)|0;h=L()|0;a[z>>0]=i>>>24;a[m>>0]=i>>>16;a[n>>0]=i>>>8;a[o>>0]=i;h=_a[c[(c[D>>2]|0)+12>>2]&127](D,z,4,q,h)|0;if(!h){q=c[s>>2]|0;D=Sv(k|0,l|0,8,0)|0;h=L()|0;h=_a[c[(c[q>>2]|0)+12>>2]&127](q,32352,8,D,h)|0;if(!h){q=p;q=Sv(c[q>>2]|0,c[q+4>>2]|0,j+20|0,0)|0;D=L()|0;h=p;c[h>>2]=q;c[h+4>>2]=D;h=c[s>>2]|0;h=Xa[c[(c[h>>2]|0)+24>>2]&255](h,r)|0;if(h|0)break;D=r;r=c[D+4>>2]|0;i=p;h=c[i>>2]|0;i=c[i+4>>2]|0;if(!((r|0)>(i|0)|((r|0)==(i|0)?(c[D>>2]|0)>>>0>h>>>0:0))){A=79;break b}D=c[s>>2]|0;h=Ya[c[(c[D>>2]|0)+16>>2]&127](D,h,i)|0;if(!h)break b;Ra=C;return h|0}}}}}while(0);D=h;Ra=C;return D|0}else A=79;while(0);h=Xe(e,0)|0;if(h|0){D=h;Ra=C;return D|0}h=e+212|0;i=Ye(e,Cf(c[h>>2]|0)|0)|0;if(i|0){D=i;Ra=C;return D|0}o=c[h>>2]|0;h=c[o>>2]|0;if(h|0)do{n=c[h+12>>2]|0;i=n+8|0;j=h+36|0;k=c[j>>2]|0;if((c[i>>2]|0)==(h|0))c[i>>2]=k;l=c[h+32>>2]|0;m=(l|0)==0;if(m){c[n+4>>2]=k;i=k}else{c[l+36>>2]=k;i=c[j>>2]|0}if(!i){c[n>>2]=l;if(m)a[n+33>>0]=2}else c[i+32>>2]=l;D=h+28|0;b[D>>1]=b[D>>1]&-16|1;if((b[h+30>>1]|0)==0?a[n+32>>0]|0:0)cb[c[29440>>2]&255](c[n+44>>2]|0,c[h>>2]|0,0);h=c[o>>2]|0}while((h|0)!=0);h=c[e+24>>2]|0;m=e+32|0;c:do if((h>>>0>(c[m>>2]|0)>>>0?(w=c[e+152>>2]|0,x=h-((h|0)==((1073741824/(w|0)|0)+1|0)&1)|0,y=e+60|0,t=c[y>>2]|0,u=c[t>>2]|0,u|0):0)?((a[B>>0]|0)+-1&255)>2:0){h=Xa[c[u+24>>2]&255](t,z)|0;j=((w|0)<0)<<31>>31;k=Yv(x|0,0,w|0,j|0)|0;l=L()|0;do if(!h){i=z;h=c[i>>2]|0;i=c[i+4>>2]|0;if(!((h|0)==(k|0)&(i|0)==(l|0))){do if((i|0)>(l|0)|(i|0)==(l|0)&h>>>0>k>>>0){v=c[y>>2]|0;v=Ya[c[(c[v>>2]|0)+16>>2]&127](v,k,l)|0;A=107}else{D=Sv(h|0,i|0,w|0,j|0)|0;z=L()|0;if((z|0)>(l|0)|(z|0)==(l|0)&D>>>0>k>>>0)break;D=c[e+208>>2]|0;gw(D|0,0,w|0)|0;z=c[y>>2]|0;A=Tv(k|0,l|0,w|0,j|0)|0;v=L()|0;v=_a[c[(c[z>>2]|0)+12>>2]&127](z,D,w,A,v)|0;A=107}while(0);if((A|0)==107?v|0:0){h=v;break}c[m>>2]=x}break c}while(0);D=h;Ra=C;return D|0}while(0);if(g|0)break;j=e+60|0;h=c[j>>2]|0;i=c[h>>2]|0;d:do if(i|0){h=Ya[c[i+40>>2]&127](h,21,f)|0;switch(h|0){case 0:case 12:break d;default:{}}Ra=C;return h|0}while(0);if(a[e+7>>0]|0)break;h=c[j>>2]|0;i=a[e+10>>0]|0;if(!(i<<24>>24))break;h=Xa[c[(c[h>>2]|0)+20>>2]&255](h,i&255)|0}else{c[z>>2]=0;j=e+212|0;h=Cf(c[j>>2]|0)|0;if(!h){h=Za[c[e+204>>2]&127](e,1,z,0)|0;i=c[z>>2]|0;c[i+16>>2]=0;if(i){h=i;A=21}}else A=21;do if((A|0)==21){h=We(e,h,c[e+24>>2]|0,1)|0;i=c[z>>2]|0;if(i)if(!(b[i+28>>1]&32)){Df(i);break}else{D=c[i+20>>2]|0;A=D+120|0;c[A>>2]=(c[A>>2]|0)+-1;D=D+136|0;c[i+16>>2]=c[D>>2];c[D>>2]=i;break}}while(0);if((h|0)==0?(o=c[j>>2]|0,m=c[o>>2]|0,m|0):0)do{n=c[m+12>>2]|0;j=n+8|0;l=m+36|0;i=c[l>>2]|0;if((c[j>>2]|0)==(m|0))c[j>>2]=i;j=c[m+32>>2]|0;k=(j|0)==0;if(k)c[n+4>>2]=i;else{c[j+36>>2]=i;i=c[l>>2]|0}if(!i){c[n>>2]=j;if(k)a[n+33>>0]=2}else c[i+32>>2]=j;D=m+28|0;b[D>>1]=b[D>>1]&-16|1;if((b[m+30>>1]|0)==0?a[n+32>>0]|0:0)cb[c[29440>>2]&255](c[n+44>>2]|0,c[m>>2]|0,0);m=c[o>>2]|0}while((m|0)!=0)}if(h|0){D=h;Ra=C;return D|0}}while(0);if(c[e+216>>2]|0){D=0;Ra=C;return D|0}a[B>>0]=5;D=0;Ra=C;return D|0}function bc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=a[b+8>>0]|0;if(!(f<<24>>24)){l=0;return l|0}l=c[b+4>>2]|0;c[l+4>>2]=c[b>>2];if(f<<24>>24==2){i=c[l>>2]|0;j=i+40|0;f=c[j>>2]|0;a:do if(!f){g=i+16|0;if(((a[g>>0]|0)==2?a[i+4>>0]|0:0)?(a[i+5>>0]|0)==1:0){a[g>>0]=1;break}f=i+100|0;c[f>>2]=(c[f>>2]|0)+1;f=uf(i,d[i+19>>0]|0,1)|0;switch((f&255)<<24>>24){case 10:case 13:break;default:{h=f;k=10;break a}}c[j>>2]=f;a[g>>0]=6;c[i+204>>2]=(f|0)==0?74:75;h=f;k=10}else{h=f;k=10}while(0);if((k|0)==10?(e|0)==0&(h|0)!=0:0){l=h;return l|0}e=b+20|0;c[e>>2]=(c[e>>2]|0)+-1;a[l+20>>0]=1;l=l+60|0;yf(c[l>>2]|0);c[l>>2]=0}Zf(b);l=0;return l|0}function cc(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=Ra;Ra=Ra+32|0;o=v+16|0;g=v;if((a[e+8>>0]|0)!=2){u=0;Ra=v;return u|0}u=c[e+4>>2]|0;c[u+4>>2]=c[e>>2];do if(a[u+17>>0]|0){t=c[u>>2]|0;k=c[u+8>>2]|0;l=(k|0)==0;if(!l){e=k;do{r=e+1|0;a[r>>0]=a[r>>0]&-5;e=c[e+24>>2]|0}while((e|0)!=0)}if(!(a[u+18>>0]|0)){r=u+44|0;h=c[r>>2]|0;i=h>>>0<2;if(i)e=0;else{e=h+-2|0;e=e-((e>>>0)%(((((c[u+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;e=((e+1|0)==(1073741824/((c[u+32>>2]|0)>>>0)|0|0)?3:2)+e|0}if((e|0)!=(h|0)?(m=1073741824/((c[u+32>>2]|0)>>>0)|0,n=m+1|0,(h|0)!=(n|0)):0){q=u+12|0;p=c[(c[q>>2]|0)+56>>2]|0;p=d[p+37>>0]<<16|d[p+36>>0]<<24|d[p+38>>0]<<8|d[p+39>>0];g=((c[u+36>>2]|0)>>>0)/5|0;j=g+1|0;if(i)e=0;else{e=h+-2|0;e=e-((e>>>0)%(j>>>0)|0)|0;e=((e+1|0)==(m|0)?3:2)+e|0}i=h-p-(((g-h+p+e|0)>>>0)/(g>>>0)|0)|0;i=i+((n>>>0>>0&i>>>0>>0)<<31>>31)|0;while(1){if(i>>>0<2)e=0;else{e=i+-2|0;e=e-((e>>>0)%(j>>>0)|0)|0;e=((e+1|0)==(m|0)?3:2)+e|0}if((i|0)==(n|0)|(e|0)==(i|0))i=i+-1|0;else break}if(i>>>0>h>>>0){c[o>>2]=32306;c[o+4>>2]=67104;c[o+8>>2]=31517;Db(11,32001,o);u=11;Ra=v;return u|0}if(l|i>>>0>=h>>>0)e=0;else e=$f(k,0,0)|0;g=(e|0)==0;if(h>>>0>i>>>0&g)do{e=_f(u,i,h,1)|0;h=h+-1|0;g=(e|0)==0}while(g&h>>>0>i>>>0);if((p|0)!=0&((e|0)==101|g)){g=c[(c[q>>2]|0)+72>>2]|0;h=c[g+20>>2]|0;if((b[g+28>>1]&4)!=0?(c[h+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0)if(!(c[h+96>>2]|0))e=0;else e=Ve(g)|0;else s=30;do if((s|0)==30){e=c[h+40>>2]|0;if(!e)if((c[h+148>>2]|0)>>>0>(c[h+152>>2]|0)>>>0){e=Wf(g)|0;break}else{e=Xf(g)|0;break}}while(0);s=(c[(c[q>>2]|0)+56>>2]|0)+32|0;a[s>>0]=0;a[s+1>>0]=0;a[s+2>>0]=0;a[s+3>>0]=0;s=(c[(c[q>>2]|0)+56>>2]|0)+36|0;a[s>>0]=0;a[s+1>>0]=0;a[s+2>>0]=0;a[s+3>>0]=0;s=c[(c[q>>2]|0)+56>>2]|0;a[s+28>>0]=i>>>24;a[s+29>>0]=i>>>16;a[s+30>>0]=i>>>8;a[s+31>>0]=i;a[u+19>>0]=1;c[r>>2]=i}if(!e)break;tf(t)|0;u=e;Ra=v;return u|0}c[g>>2]=32306;c[g+4>>2]=67099;c[g+8>>2]=31517;Db(11,32001,g);u=11;Ra=v;return u|0}}while(0);e=c[u>>2]|0;if(a[u+19>>0]|0)c[e+24>>2]=c[u+44>>2];u=ac(e,f,0)|0;Ra=v;return u|0}function dc(a){a=a|0;var b=0,d=0,e=0;if(!a){e=0;return e|0}e=c[a+20>>2]|0;b=c[a+24>>2]|0;d=c[b+4>>2]|0;c[d+4>>2]=c[b>>2];if(c[a>>2]|0){b=b+16|0;c[b>>2]=(c[b>>2]|0)+-1}if(c[a+40>>2]|0){b=(c[d>>2]|0)+88|0;while(1){d=c[b>>2]|0;if((d|0)==(a|0))break;else b=d+44|0}c[b>>2]=c[a+44>>2]}ec(c[a+4>>2]|0,0,0);d=c[a+28>>2]|0;d=(d|0)==101?0:d;b=c[a>>2]|0;do if(b|0){c[b+64>>2]=d;if(!d){if(c[b+260>>2]|0)Ne(b,0)}else Ne(b,d);fc(c[a>>2]|0);if(c[a>>2]|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](a);break}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);break}}while(0);fc(e);e=d;return e|0}function ec(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=Ra;Ra=Ra+16|0;h=k;j=c[b+4>>2]|0;c[j+4>>2]=c[b>>2];if(!e){f=c[j+8>>2]|0;if(f|0?(g=$f(f,0,0)|0,g|0):0){e=g;f=0;i=4}}else i=4;if((i|0)==4)jg(b,e,f)|0;if((a[b+8>>0]|0)!=2){Zf(b);Ra=k;return}tf(c[j>>2]|0)|0;i=c[j>>2]|0;if(!(Za[c[i+204>>2]&127](i,1,h,0)|0)){f=c[h>>2]|0;g=c[f+8>>2]|0;e=g+4|0;if((c[e>>2]|0)==1)f=c[g+56>>2]|0;else{i=c[f+4>>2]|0;c[g+56>>2]=i;c[g+72>>2]=f;c[g+52>>2]=j;c[e>>2]=1;a[g+9>>0]=100;f=i}f=d[f+29>>0]<<16|d[f+28>>0]<<24|d[f+30>>0]<<8|d[f+31>>0];if(!f)f=c[(c[j>>2]|0)+24>>2]|0;c[j+44>>2]=f;i=c[g+72>>2]|0;f=c[i+20>>2]|0;Df(i);if(!(c[(c[f+212>>2]|0)+12>>2]|0)){switch(a[f+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[f+4>>0]|0))uf(f,0,0)|0;break}default:tf(f)|0}vf(f)}}a[j+20>>0]=1;j=j+60|0;yf(c[j>>2]|0);c[j>>2]=0;Zf(b);Ra=k;return}function fc(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=e+96|0;if((c[t>>2]|0)!=1691352191)return;l=e+4|0;if(c[l>>2]|0)return;p=e+20|0;h=c[p>>2]|0;a:do if((h|0)>0){g=c[e+16>>2]|0;f=0;while(1){r=c[g+(f<<4)+4>>2]|0;if(r|0?c[r+16>>2]|0:0)break;f=f+1|0;if((f|0)>=(h|0))break a}return}while(0);rg(e,0);g=e+444|0;f=c[g>>2]|0;if(f|0){h=e+480|0;i=e+304|0;j=e+308|0;k=e+300|0;do{c[g>>2]=c[f+24>>2];do if(!(c[h>>2]|0)){r=f;if((c[i>>2]|0)>>>0<=r>>>0?(c[j>>2]|0)>>>0>r>>>0:0){c[f>>2]=c[k>>2];c[k>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{r=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}else Xd(e,f);while(0);f=c[g>>2]|0}while((f|0)!=0)}c[e+452>>2]=0;c[e+456>>2]=0;a[e+87>>0]=0;r=e+16|0;f=c[r>>2]|0;if((c[p>>2]|0)>0){i=0;do{g=f+(i<<4)+4|0;h=c[g>>2]|0;if(h|0?(ug(h),c[g>>2]=0,(i|0)!=1):0)c[f+(i<<4)+12>>2]=0;i=i+1|0;f=c[r>>2]|0}while((i|0)<(c[p>>2]|0))}f=c[f+28>>2]|0;if(f|0)dh(f);m=e+360|0;g=c[m>>2]|0;c[m>>2]=0;if(g|0){f=c[l>>2]|0;if(f|0)do{m=f+149|0;l=(d[m>>0]|d[m+1>>0]<<8)&-4|1;a[m>>0]=l;a[m+1>>0]=l>>8;f=c[f+8>>2]|0}while((f|0)!=0);f=g;do{g=f;f=c[f+24>>2]|0;h=c[g>>2]|0;l=g+12|0;m=(c[l>>2]|0)+-1|0;c[l>>2]=m;do if(!m){i=c[g+8>>2]|0;if(i|0)Wa[c[(c[i>>2]|0)+16>>2]&127](i)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);break}m=g;if((c[h+304>>2]|0)>>>0<=m>>>0?(c[h+308>>2]|0)>>>0>m>>>0:0){m=h+300|0;c[g>>2]=c[m>>2];c[m>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{m=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0)}while((f|0)!=0)}if((c[p>>2]|0)>2){j=e+480|0;k=e+304|0;l=e+308|0;m=e+300|0;i=2;f=2;do{g=c[r>>2]|0;h=g+(i<<4)|0;if(!(c[g+(i<<4)+4>>2]|0)){g=c[h>>2]|0;do if(g|0){if(c[j>>2]|0){Xd(e,g);break}u=g;if((c[k>>2]|0)>>>0<=u>>>0?(c[l>>2]|0)>>>0>u>>>0:0){c[g>>2]=c[m>>2];c[m>>2]=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[h>>2]=0}else{if((f|0)<(i|0)){u=g+(f<<4)|0;c[u>>2]=c[h>>2];c[u+4>>2]=c[h+4>>2];c[u+8>>2]=c[h+8>>2];c[u+12>>2]=c[h+12>>2]}f=f+1|0}i=i+1|0}while((i|0)<(c[p>>2]|0));c[p>>2]=f;if((f|0)<3)q=64}else{c[p>>2]=2;q=64}if((q|0)==64?(n=c[r>>2]|0,o=e+412|0,(n|0)!=(o|0)):0){c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];c[o+16>>2]=c[n+16>>2];c[o+20>>2]=c[n+20>>2];c[o+24>>2]=c[n+24>>2];c[o+28>>2]=c[n+28>>2];do if(n|0){if(c[e+480>>2]|0){Xd(e,n);break}u=n;if((c[e+304>>2]|0)>>>0<=u>>>0?(c[e+308>>2]|0)>>>0>u>>>0:0){u=e+300|0;c[n>>2]=c[u>>2];c[u>>2]=n;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{u=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[r>>2]=o}m=e+372|0;f=c[m>>2]|0;if(!f)f=0;else{i=e+480|0;j=e+304|0;k=e+308|0;l=e+300|0;do{h=c[f+8>>2]|0;do{g=c[h+36>>2]|0;do if(g|0?(u=(c[g>>2]|0)+-1|0,c[g>>2]=u,(u|0)==0):0){ab[c[g+4>>2]&127](c[g+8>>2]|0);if(c[i>>2]|0){Xd(e,g);break}u=g;if((c[j>>2]|0)>>>0<=u>>>0?(c[k>>2]|0)>>>0>u>>>0:0){c[g>>2]=c[l>>2];c[l>>2]=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=h;h=c[h+12>>2]|0;do if(g|0){if(c[i>>2]|0){Xd(e,g);break}u=g;if((c[j>>2]|0)>>>0<=u>>>0?(c[k>>2]|0)>>>0>u>>>0:0){c[g>>2]=c[l>>2];c[l>>2]=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0)}while((h|0)!=0);f=c[f>>2]|0}while((f|0)!=0);f=c[m>>2]|0}c[m>>2]=0;g=e+376|0;h=c[g>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{u=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[g>>2]=0;c[e+364>>2]=0;if(f|0)do{g=f;f=c[f>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);c[e+368>>2]=0;m=e+388|0;f=c[m>>2]|0;if(!f)f=0;else{i=e+480|0;j=e+304|0;k=e+308|0;l=e+300|0;do{h=c[f+8>>2]|0;g=c[h+16>>2]|0;if(g|0)ab[g&127](c[h+8>>2]|0);g=c[h+36>>2]|0;if(g|0)ab[g&127](c[h+28>>2]|0);g=c[h+56>>2]|0;if(g|0)ab[g&127](c[h+48>>2]|0);b:do if(!(c[i>>2]|0)){g=h;do if((c[j>>2]|0)>>>0<=g>>>0){if((c[k>>2]|0)>>>0<=g>>>0)break;c[h>>2]=c[l>>2];c[l>>2]=h;break b}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{u=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(e,h);while(0);f=c[f>>2]|0}while((f|0)!=0);f=c[m>>2]|0}c[m>>2]=0;g=e+392|0;h=c[g>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{u=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[g>>2]=0;c[e+380>>2]=0;if(f|0)do{g=f;f=c[f>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);c[e+384>>2]=0;n=e+344|0;f=c[n>>2]|0;if(!f)f=0;else{j=e+480|0;k=e+304|0;l=e+308|0;m=e+300|0;do{i=c[f+8>>2]|0;g=c[i+12>>2]|0;if(g|0)ab[g&127](c[i+8>>2]|0);g=i+16|0;h=c[g>>2]|0;if(h|0){u=h+36|0;c[u>>2]=c[u>>2]|2;do if(!(c[j>>2]|0)){q=h+32|0;u=(c[q>>2]|0)+-1|0;c[q>>2]=u;if(u|0)break;Vi(e,h)}else Vi(e,h);while(0);c[g>>2]=0}c:do if(!(c[j>>2]|0)){g=i;do if((c[k>>2]|0)>>>0<=g>>>0){if((c[l>>2]|0)>>>0<=g>>>0)break;c[i>>2]=c[m>>2];c[m>>2]=i;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{u=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}else Xd(e,i);while(0);f=c[f>>2]|0}while((f|0)!=0);f=c[n>>2]|0}c[n>>2]=0;g=e+348|0;h=c[g>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{u=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[g>>2]=0;c[e+336>>2]=0;if(f|0)do{g=f;f=c[f>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);c[e+340>>2]=0;c[e+64>>2]=0;f=e+260|0;d:do if(c[f>>2]|0?(Ne(e,0),s=c[f>>2]|0,s|0):0){if(!((b[s+8>>1]&9216)==0?!(c[s+24>>2]|0):0))Cg(s);f=c[s+32>>2]|0;do if(f|0){if(c[f+480>>2]|0){Xd(f,s);break d}g=s;if((c[f+304>>2]|0)>>>0>g>>>0)break;if((c[f+308>>2]|0)>>>0<=g>>>0)break;u=f+300|0;c[s>>2]=c[u>>2];c[u>>2]=s;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{u=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);c[t>>2]=-1254786768;f=c[(c[r>>2]|0)+28>>2]|0;e:do if(f|0){if(c[e+480>>2]|0){Xd(e,f);break}g=f;do if((c[e+304>>2]|0)>>>0<=g>>>0){if((c[e+308>>2]|0)>>>0<=g>>>0)break;u=e+300|0;c[f>>2]=c[u>>2];c[u>>2]=f;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{u=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);c[t>>2]=-1623446221;do if(a[e+278>>0]|0){f=c[e+304>>2]|0;if(!f)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{u=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{u=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}function gc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+32|0;d=l+8|0;if(!b){k=0;Ra=l;return k|0}k=c[b>>2]|0;if(!k){Db(21,32391,l);c[d>>2]=58063;c[d+4>>2]=81403;c[d+8>>2]=31517;Db(21,32001,d);k=21;Ra=l;return k|0}i=b+136|0;h=c[i+4>>2]|0;if((h|0)>0|(h|0)==0&(c[i>>2]|0)>>>0>0)hc(k,b);i=b+20|0;d=c[i>>2]|0;if((d|0)<832317811)switch(d|0){case 770837923:{j=6;break}default:f=0}else switch(d|0){case 832317811:{j=6;break}default:f=0}if((j|0)==6)f=kc(b)|0;g=c[b>>2]|0;kb(g,b);h=c[b+4>>2]|0;e=b+8|0;d=c[e>>2]|0;if(!h)c[g+4>>2]=d;else{c[h+8>>2]=d;d=c[e>>2]|0}if(d|0)c[d+4>>2]=h;c[i>>2]=1443283912;c[b>>2]=0;do if(g){if(c[g+480>>2]|0){Xd(g,b);break}i=b;if((c[g+304>>2]|0)>>>0<=i>>>0?(c[g+308>>2]|0)>>>0>i>>>0:0){i=g+300|0;c[b>>2]=c[i>>2];c[i>>2]=b}else j=18}else j=18;while(0);do if((j|0)==18)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{j=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if((f|0)==3082|(a[k+81>>0]|0)!=0){og(k);d=7}else d=c[k+68>>2]&f;fc(k);k=d;Ra=l;return k|0}function hc(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0.0;k=Ra;Ra=Ra+32|0;e=k+16|0;f=k+8|0;j=k;h=c[b>>2]|0;if((c[h>>2]|0)>1?(i=c[h+72>>2]|0,(i|0)!=0):0){Xa[i&255](h,f)|0;e=c[f>>2]|0;f=c[f+4>>2]|0}else{Xa[c[h+64>>2]&255](h,e)|0;l=+g[e>>3]*864.0e5;e=~~l>>>0;i=+t(l)>=1.0?(l>0.0?~~+H(+s(l/4294967296.0),4294967295.0)>>>0:~~+F((l-+(~~l>>>0))/4294967296.0)>>>0):0;c[f>>2]=e;c[f+4>>2]=i;f=i}i=d+136|0;h=i;e=Tv(e|0,f|0,c[h>>2]|0,c[h+4>>2]|0)|0;e=Yv(e|0,L()|0,1e6,0)|0;f=L()|0;h=j;c[h>>2]=e;c[h+4>>2]=f;h=c[b+204>>2]|0;if(h|0)db[h&127](c[b+208>>2]|0,c[d+188>>2]|0,e,f);if(!(a[b+88>>0]&2)){j=i;d=j;c[d>>2]=0;j=j+4|0;c[j>>2]=0;Ra=k;return}Za[c[b+196>>2]&127](2,c[b+200>>2]|0,d,j)|0;j=i;d=j;c[d>>2]=0;j=j+4|0;c[j>>2]=0;Ra=k;return}function ic(b,d){b=b|0;d=d|0;if((d|0)==3082|(a[b+81>>0]|0)!=0){og(b);d=7;return d|0}else{d=c[b+68>>2]&d;return d|0}return 0}function jc(b){b=b|0;var d=0,e=0,f=0;if(!b){e=0;return e|0}e=c[b>>2]|0;d=b+136|0;f=c[d+4>>2]|0;if((f|0)>0|(f|0)==0&(c[d>>2]|0)>>>0>0)hc(e,b);d=kc(b)|0;c[b+20>>2]=770837923;c[b+36>>2]=-1;c[b+40>>2]=0;a[b+146>>0]=2;c[b+44>>2]=0;c[b+32>>2]=1;a[b+147>>0]=-1;c[b+48>>2]=0;f=b+64|0;c[f>>2]=0;c[f+4>>2]=0;if((d|0)==3082|(a[e+81>>0]|0)!=0){og(e);f=7;return f|0}else{f=c[e+68>>2]&d;return f|0}return 0}function kc(b){b=b|0;var e=0,f=0,g=0,h=0,i=0;h=Ra;Ra=Ra+16|0;f=h;g=c[b>>2]|0;pg(b)|0;if((c[b+36>>2]|0)>-1){qg(b)|0;e=b+149|0;f=d[e>>0]|d[e+1>>0]<<8;if(f&64){f=f&-4|1;a[e>>0]=f;a[e+1>>0]=f>>8}}else{e=c[b+40>>2]|0;if(e|0?(i=b+149|0,(d[i>>0]|d[i+1>>0]<<8)&3):0){i=c[b+124>>2]|0;c[f>>2]=i;Vb(g,e,(i|0)==0?0:31408,f)}}e=b+124|0;f=c[e>>2]|0;do if(f|0){if(g|0){if(c[g+480>>2]|0){Xd(g,f);break}i=f;if((c[g+304>>2]|0)>>>0<=i>>>0?(c[g+308>>2]|0)>>>0>i>>>0:0){i=g+300|0;c[f>>2]=c[i>>2];c[i>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);c[e>>2]=0;c[b+120>>2]=0;c[b+20>>2]=1224384374;Ra=h;return c[g+68>>2]&c[b+40>>2]|0}function lc(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=e+16|0;f=b[k>>1]|0;if(f<<16>>16>0){l=e+100|0;j=0;g=c[l>>2]|0;do{h=g+(j*40|0)|0;i=g+(j*40|0)+8|0;if(!((b[i>>1]&9216)==0?(c[g+(j*40|0)+24>>2]|0)==0:0)){Cg(h);g=c[l>>2]|0;i=g+(j*40|0)+8|0;f=b[k>>1]|0}b[i>>1]=1;j=j+1|0}while((j|0)<(f<<16>>16|0))}if(!(c[e+208>>2]|0))return 0;l=e+149|0;k=(d[l>>0]|d[l+1>>0]<<8)&-4|1;a[l>>0]=k;a[l+1>>0]=k>>8;return 0}function mc(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;i=d+8|0;f=b[i>>1]|0;e=f&65535;if(!(e&18)){if((f&514)==514?(a[d+10>>0]|0)==1:0){i=c[d+16>>2]|0;return i|0}if(f&1){i=0;return i|0}i=Gg(d,1)|0;return i|0}g=d+12|0;h=c[g>>2]|0;do if(e&16384){e=(c[d>>2]|0)+h|0;if((e|0)<1)if(!(f&16)){e=h;break}else e=1;if(!(Eg(d,e,1)|0)){gw((c[d+16>>2]|0)+(c[g>>2]|0)|0,0,c[d>>2]|0)|0;e=(c[g>>2]|0)+(c[d>>2]|0)|0;c[g>>2]=e;f=b[i>>1]&-16897;b[i>>1]=f;break}else{i=0;return i|0}}else e=h;while(0);b[i>>1]=f|16;if(!e){i=0;return i|0}i=c[d+16>>2]|0;return i|0}function nc(d){d=d|0;var e=0;if(!d){e=0;return e|0}e=b[d+8>>1]|0;if((e&514)==514?(a[d+10>>0]|0)==1:0){e=c[d+16>>2]|0;return e|0}if(e&1){e=0;return e|0}e=Gg(d,1)|0;return e|0}function oc(d){d=d|0;var e=0,f=0;e=b[d+8>>1]|0;if(e&2?(a[d+10>>0]|0)==1:0){d=c[d+12>>2]|0;return d|0}e=e&65535;if(!(e&16)){if(e&1|0){d=0;return d|0}d=Fg(d,1)|0;return d|0}else{f=c[d+12>>2]|0;if(!(e&16384)){d=f;return d|0}d=(c[d>>2]|0)+f|0;return d|0}return 0}function pc(b){b=b|0;var d=0,f=0.0;d=e[b+8>>1]|0;if(d&8|0){f=+g[b>>3];return +f}if(d&4|0){d=b;f=+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0);return +f}if(!(d&18)){f=0.0;return +f}f=+Kg(a[b+10>>0]|0,c[b+12>>2]|0,c[b+16>>2]|0);return +f}function qc(b){b=b|0;var d=0;d=e[b+8>>1]|0;if(d&4|0){d=c[b>>2]|0;return d|0}if(d&8|0){d=Mg(+g[b>>3])|0;L()|0;return d|0}if(!(d&18)){d=0;return d|0}d=Ng(a[b+10>>0]|0,c[b+12>>2]|0,c[b+16>>2]|0)|0;L()|0;return d|0}function rc(b){b=b|0;var d=0;d=e[b+8>>1]|0;if(d&4|0){d=b;b=c[d+4>>2]|0;d=c[d>>2]|0;K(b|0);return d|0}if(d&8|0){d=Mg(+g[b>>3])|0;b=L()|0;K(b|0);return d|0}if(!(d&18)){b=0;d=0;K(b|0);return d|0}d=Ng(a[b+10>>0]|0,c[b+12>>2]|0,c[b+16>>2]|0)|0;b=L()|0;K(b|0);return d|0}function sc(a){a=a|0;return d[816+(b[a+8>>1]&31)>>0]|0|0}function tc(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;if(!a){i=0;return i|0}if(mb()|0){i=0;return i|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](40)|0;if(!d){i=0;return i|0}else e=d}else{f=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){h=c[14978]|0;g=Tv(d|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;e=L()|0;c[14768]=((e|0)<0|(e|0)==0&g>>>0<=h>>>0)&1}e=Wa[c[29340>>2]&127](f)|0;if(!e){i=0;return i|0}d=Wa[c[29352>>2]&127](e)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}h=e+20|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];c[e+16>>2]=c[a+16>>2];h=e+8|0;d=b[h>>1]&-1025;b[h>>1]=d;g=e+32|0;c[g>>2]=0;d=d&65535;if(!(d&18)){i=e;return i|0}f=(d&58367|4096)&65535;b[h>>1]=f;do if(d&16384){a=e+12|0;d=(c[e>>2]|0)+(c[a>>2]|0)|0;if((d|0)<1)if(!(f&16)){i=21;break}else d=1;if(!(Eg(e,d,1)|0)){gw((c[e+16>>2]|0)+(c[a>>2]|0)|0,0,c[e>>2]|0)|0;c[a>>2]=(c[a>>2]|0)+(c[e>>2]|0);d=b[h>>1]&-16897;b[h>>1]=d;if((c[e+24>>2]|0)!=0?(c[e+16>>2]|0)==(c[e+20>>2]|0):0)i=23;else i=21}}else i=21;while(0);if((i|0)==21?(Jg(e)|0)==0:0){d=b[h>>1]|0;i=23}if((i|0)==23){b[h>>1]=d&-4097;i=e;return i|0}if(!((b[h>>1]&9216)==0?!(c[e+24>>2]|0):0))Cg(e);d=c[g>>2]|0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);i=0;return i|0}i=e;if((c[d+304>>2]|0)>>>0<=i>>>0?(c[d+308>>2]|0)>>>0>i>>>0:0){i=d+300|0;c[e>>2]=c[i>>2];c[i>>2]=e;i=0;return i|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);i=0;return i|0}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);i=0;return i|0}return 0}function uc(a){a=a|0;var d=0,e=0;if(!a)return;if(!((b[a+8>>1]&9216)==0?!(c[a+24>>2]|0):0))Cg(a);d=c[a+32>>2]|0;if(d|0){if(c[d+480>>2]|0){Xd(d,a);return}e=a;if((c[d+304>>2]|0)>>>0<=e>>>0?(c[d+308>>2]|0)>>>0>e>>>0:0){e=d+300|0;c[a>>2]=c[e>>2];c[e>>2]=a;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{e=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function vc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((yc(c[a>>2]|0,b,d,0,e)|0)!=18)return;c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0;return}function wc(a,d){a=a|0;d=+d;var e=0,f=0,h=0,i=0;i=Ra;Ra=Ra+16|0;f=i+8|0;h=i;a=c[a>>2]|0;e=a+8|0;if(!(b[e>>1]&9216))b[e>>1]=1;else Dg(a);g[f>>3]=d;g[h>>3]=+g[f>>3];if(!(+g[f>>3]==+g[h>>3])){Ra=i;return}g[a>>3]=d;b[e>>1]=8;Ra=i;return}function xc(a,b,d){a=a|0;b=b|0;d=d|0;c[a+20>>2]=1;yc(c[a>>2]|0,b,d,1,-1)|0;return}function yc(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;if(!f){g=d+8|0;if(!(b[g>>1]&9216)){b[g>>1]=1;s=0;return s|0}else{Dg(d);s=0;return s|0}}k=d+32|0;l=c[k>>2]|0;m=(l|0)==0;if(m)s=1e9;else s=c[l+108>>2]|0;p=h<<24>>24==0;j=p?16:2;if((g|0)<0){a:do if(h<<24>>24!=1)if((s|0)<0)g=0;else{g=0;do{if(!((a[f+(g|1)>>0]|a[f+g>>0])<<24>>24))break a;g=g+2|0}while((g|0)<=(s|0))}else g=(Eu(f)|0)&2147483647;while(0);o=j|512;q=g}else{o=j;q=g}do if((i|0)==(-1|0)){k=((o&512)==0?0:h<<24>>24==1?1:2)+q|0;if((q|0)>(s|0)){if(m){s=18;return s|0}g=c[l+236>>2]|0;if(!g){s=18;return s|0}c[g+12>>2]=18;s=g+36|0;c[s>>2]=(c[s>>2]|0)+1;s=18;return s|0}else{g=k>>>0>32?k:32;do if((c[d+24>>2]|0)<(g|0))if(!(Eg(d,g,0)|0)){j=d+8|0;g=c[d+16>>2]|0;break}else{s=7;return s|0}else{g=c[d+20>>2]|0;c[d+16>>2]=g;j=d+8|0;b[j>>1]=b[j>>1]&13}while(0);ew(g|0,f|0,k|0)|0;i=o;break}}else{j=d+8|0;if(!((b[j>>1]&9216)==0?!(c[d+24>>2]|0):0))Cg(d);c[d+16>>2]=f;if((i|0)!=116){c[d+36>>2]=i;i=(((i|0)==0?2048:1024)|o&65535)&65535;break}c[d+20>>2]=f;g=c[k>>2]|0;if(((g|0)!=0?(n=f,(c[g+304>>2]|0)>>>0<=n>>>0):0)?(c[g+308>>2]|0)>>>0>n>>>0:0)g=e[g+276>>1]|0;else g=Wa[c[29352>>2]&127](f)|0;c[d+24>>2]=g;i=o}while(0);f=d+12|0;c[f>>2]=q;b[j>>1]=i;h=p?1:h;n=d+10|0;a[n>>0]=h;do if(h<<24>>24!=1&(q|0)>1){o=d+16|0;g=c[o>>2]|0;l=a[g>>0]|0;k=a[g+1>>0]|0;if(!(l<<24>>24==-1&k<<24>>24==-2))if(l<<24>>24==-2&k<<24>>24==-1)m=3;else break;else m=2;k=i&65535;do if(k&18){do if(k&16384){g=(c[d>>2]|0)+q|0;if((g|0)<1)if(!(i&16)){k=q;g=i;break}else g=1;if(!(Eg(d,g,1)|0)){gw((c[o>>2]|0)+(c[f>>2]|0)|0,0,c[d>>2]|0)|0;k=(c[f>>2]|0)+(c[d>>2]|0)|0;c[f>>2]=k;g=b[j>>1]&-16897;b[j>>1]=g;break}else{s=7;return s|0}}else{k=q;g=i}while(0);if(c[d+24>>2]|0?(r=c[o>>2]|0,(r|0)==(c[d+20>>2]|0)):0){l=g;g=r;break}if(!(Jg(d)|0)){l=b[j>>1]|0;k=c[f>>2]|0;g=c[o>>2]|0;break}else{s=7;return s|0}}else{l=i;k=q}while(0);b[j>>1]=l&-4097;r=k+-2|0;c[f>>2]=r;fw(g|0,g+2|0,r|0)|0;a[(c[o>>2]|0)+(c[f>>2]|0)>>0]=0;a[(c[o>>2]|0)+((c[f>>2]|0)+1)>>0]=0;b[j>>1]=b[j>>1]|512;a[n>>0]=m}while(0);s=(q|0)>(s|0)?18:0;return s|0}function zc(a,d){a=a|0;d=d|0;var e=0,f=0;a=c[a>>2]|0;e=((d|0)<0)<<31>>31;f=a+8|0;if(!(b[f>>1]&9216)){c[a>>2]=d;c[a+4>>2]=e;b[f>>1]=4;return}else{Pg(a,d,e);return}}function Ac(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;a=c[a>>2]|0;f=a+8|0;if(!(b[f>>1]&9216)){c[a>>2]=d;c[a+4>>2]=e;b[f>>1]=4;return}else{Pg(a,d,e);return}}function Bc(a){a=a|0;var d=0;a=c[a>>2]|0;d=a+8|0;if(!(b[d>>1]&9216)){b[d>>1]=1;return}else{Dg(a);return}}function Cc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((yc(c[a>>2]|0,b,d,1,e)|0)!=18)return;c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0;return}function Dc(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;f=c[a>>2]|0;g=f+8|0;if(b[g>>1]&9216)Dg(f);c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[f+16>>2]=c[d+16>>2];e=b[g>>1]&-1025;b[g>>1]=e;e=e&65535;if(!(e&18))return;if(b[d+8>>1]&2048)return;a=(e|4096)&65535;b[g>>1]=a;do if(e&16384){e=f+12|0;d=(c[f>>2]|0)+(c[e>>2]|0)|0;if((d|0)<1)if(!(a&16))break;else a=1;else a=d;if(!(Eg(f,a,1)|0)){gw((c[f+16>>2]|0)+(c[e>>2]|0)|0,0,c[f>>2]|0)|0;c[e>>2]=(c[e>>2]|0)+(c[f>>2]|0);a=b[g>>1]&-16897;b[g>>1]=a;break}else return}while(0);if(!((c[f+24>>2]|0)!=0?(c[f+16>>2]|0)==(c[f+20>>2]|0):0))h=12;do if((h|0)==12)if(!(Jg(f)|0)){a=b[g>>1]|0;break}else return;while(0);b[g>>1]=a&-4097;return}function Ec(d){d=d|0;var e=0,f=0;e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;f=c[e+32>>2]|0;e=f+81|0;if(a[e>>0]|0)return;if(a[f+82>>0]|0)return;a[e>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;e=f+272|0;c[e>>2]=(c[e>>2]|0)+1;e=c[f+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}function Fc(b){b=b|0;var d=0;d=b+81|0;if(a[d>>0]|0)return;if(a[b+82>>0]|0)return;a[d>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;d=b+272|0;c[d>>2]=(c[d>>2]|0)+1;b=c[b+236>>2]|0;if(!b)return;c[b+12>>2]=7;return}function Gc(f){f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0.0;Ga=Ra;Ra=Ra+384|0;Aa=Ga+368|0;za=Ga+360|0;ya=Ga+352|0;xa=Ga+344|0;wa=Ga+336|0;va=Ga+328|0;ua=Ga+320|0;ta=Ga+312|0;sa=Ga+304|0;ra=Ga+296|0;qa=Ga+288|0;pa=Ga+280|0;oa=Ga+272|0;Ca=Ga+264|0;Ba=Ga+256|0;i=Ga+240|0;h=Ga+232|0;fa=Ga;ia=Ga+372|0;do if(!f)Db(21,32555,Ga+224|0);else{Fa=c[f>>2]|0;if(!Fa){Db(21,32391,h);break}ba=f+149|0;ca=(d[ba>>0]|d[ba+1>>0]<<8)&-17;a[ba>>0]=ca;a[ba+1>>0]=ca>>8;ca=f+20|0;da=f+136|0;C=f+36|0;Ea=f+40|0;D=f+146|0;E=f+44|0;G=f+32|0;I=f+147|0;J=f+48|0;K=f+64|0;L=f+148|0;M=f+88|0;N=f+188|0;O=f+120|0;P=f+8|0;Q=f+4|0;R=f+208|0;S=f+160|0;T=f+180|0;U=f+108|0;V=f+100|0;W=f+104|0;X=fa+4|0;Y=fa+8|0;Z=fa+12|0;_=fa+16|0;$=fa+21|0;aa=f+144|0;B=0;a:while(1){if((c[ca>>2]|0)!=770837923){h=c[f>>2]|0;Da=da;A=c[Da+4>>2]|0;if((A|0)>0|(A|0)==0&(c[Da>>2]|0)>>>0>0)hc(h,f);Da=kc(f)|0;c[ca>>2]=770837923;c[C>>2]=-1;c[Ea>>2]=0;a[D>>0]=2;c[E>>2]=0;c[G>>2]=1;a[I>>0]=-1;c[J>>2]=0;A=K;c[A>>2]=0;c[A+4>>2]=0;if((Da|0)==3082|(a[h+81>>0]|0)!=0)og(h)}A=c[f>>2]|0;if(a[A+81>>0]|0){Da=13;break}do if((c[C>>2]|0)<0){if((d[ba>>0]|d[ba+1>>0]<<8)&3){c[Ea>>2]=17;h=1;Da=246;break}h=A+168|0;if(!(c[h>>2]|0))c[A+264>>2]=0;do if(((a[A+88>>0]&-126)<<24>>24?(a[A+165>>0]|0)==0:0)?c[N>>2]|0:0){i=c[A>>2]|0;if((c[i>>2]|0)>1?(na=c[i+72>>2]|0,na|0):0){Xa[na&255](i,da)|0;break}Xa[c[i+64>>2]&255](i,fa)|0;Ha=+g[fa>>3]*864.0e5;z=+t(Ha)>=1.0?(Ha>0.0?~~+H(+s(Ha/4294967296.0),4294967295.0)>>>0:~~+F((Ha-+(~~Ha>>>0))/4294967296.0)>>>0):0;Da=da;c[Da>>2]=~~Ha>>>0;c[Da+4>>2]=z}while(0);c[h>>2]=(c[h>>2]|0)+1;h=d[ba>>0]|d[ba+1>>0]<<8;if(!(h&256)){h=A+176|0;c[h>>2]=(c[h>>2]|0)+1;h=d[ba>>0]|d[ba+1>>0]<<8}if(h&512){Da=A+172|0;c[Da>>2]=(c[Da>>2]|0)+1}c[C>>2]=0;Da=31}else Da=31;while(0);if((Da|0)==31){Da=0;h=(d[ba>>0]|d[ba+1>>0]<<8)&12;b:do if(!(h<<16>>16)){z=A+180|0;c[z>>2]=(c[z>>2]|0)+1;h=Rg(f)|0;c[z>>2]=(c[z>>2]|0)+-1;if((h|0)==100)h=100;else Da=226}else{z=c[f>>2]|0;y=c[M>>2]|0;x=y+40|0;if(h<<16>>16==4)r=1;else r=0?1:(c[z+32>>2]&16777216|0)!=0;m=c[y+72>>2]|0;n=m+480|0;h=(m|0)==0;o=m+304|0;p=m+308|0;q=m+300|0;c:do if(c[n>>2]|0){if(!h){h=1;while(1){d:do if(c[y+(h*40|0)+24>>2]|0?(ha=c[y+(h*40|0)+20>>2]|0,ha|0):0){if(c[n>>2]|0){Xd(m,ha);break}i=ha;do if((c[o>>2]|0)>>>0<=i>>>0){if((c[p>>2]|0)>>>0<=i>>>0)break;c[ha>>2]=c[q>>2];c[q>>2]=ha;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](ha);break}else{w=Wa[c[29352>>2]&127](ha)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ha);break}}while(0);h=h+1|0;if((h|0)==9)break c}}do if(c[y+64>>2]|0?(ga=c[y+60>>2]|0,ga|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](ga);break}else{w=Wa[c[29352>>2]&127](ga)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ga);break}while(0);do if(c[y+104>>2]|0?(ja=c[y+100>>2]|0,ja|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](ja);break}else{w=Wa[c[29352>>2]&127](ja)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ja);break}while(0);do if(c[y+144>>2]|0?(ka=c[y+140>>2]|0,ka|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](ka);break}else{w=Wa[c[29352>>2]&127](ka)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](ka);break}while(0);do if(c[y+184>>2]|0?(la=c[y+180>>2]|0,la|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](la);break}else{w=Wa[c[29352>>2]&127](la)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](la);break}while(0);do if(c[y+224>>2]|0){h=c[y+220>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);do if(c[y+264>>2]|0){h=c[y+260>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);do if(c[y+304>>2]|0){h=c[y+300>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);if(!(c[y+344>>2]|0))break;h=c[y+340>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else{if(h){h=1;while(1){i=y+(h*40|0)+8|0;if(!(b[i>>1]&9216)){j=y+(h*40|0)+24|0;if(c[j>>2]|0){k=c[y+(h*40|0)+20>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{w=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[j>>2]=0}}else Cg(y+(h*40|0)|0);b[i>>1]=128;h=h+1|0;if((h|0)==9)break c}}h=1;do{i=y+(h*40|0)+8|0;if(!(b[i>>1]&9216)){j=y+(h*40|0)+24|0;if(c[j>>2]|0){k=c[y+(h*40|0)+20>>2]|0;e:do if(!(c[n>>2]|0)){l=k;do if((c[o>>2]|0)>>>0<=l>>>0){if((c[p>>2]|0)>>>0<=l>>>0)break;c[k>>2]=c[q>>2];c[q>>2]=k;break e}while(0);if(!k)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{w=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else Xd(m,k);while(0);c[j>>2]=0}}else Cg(y+(h*40|0)|0);b[i>>1]=128;h=h+1|0}while((h|0)!=9)}while(0);c[O>>2]=0;if((c[Ea>>2]|0)==7){h=z+81|0;if(a[h>>0]|0){h=1;Da=226;break}if(a[z+82>>0]|0){h=1;Da=226;break}a[h>>0]=1;if((c[z+180>>2]|0)>0)c[z+264>>2]=1;h=z+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[z+236>>2]|0;if(!h){h=1;Da=226;break}c[h+12>>2]=7;h=1;Da=226;break}o=c[U>>2]|0;if(r){h=c[M>>2]|0;j=h+360|0;if(b[h+368>>1]&16){k=(c[h+372>>2]|0)>>>2;l=c[h+376>>2]|0;if(!k){q=o;k=0}else{h=o;i=0;do{h=(c[(c[l+(i<<2)>>2]|0)+4>>2]|0)+h|0;i=i+1|0}while((i|0)!=(k|0));q=h}}else{q=o;k=0;l=0}}else{j=0;q=o;k=0;l=0}i=c[C>>2]|0;h=i+1|0;c[C>>2]=h;f:do if((i|0)<(q|0)){u=j+16|0;v=j+8|0;w=j+12|0;g:do if(r){h=o;while(1){if((i|0)<(h|0))p=(c[W>>2]|0)+(i*20|0)|0;else{i=i-h|0;h=c[l>>2]|0;m=c[h+4>>2]|0;if((i|0)>=(m|0)){n=0;do{i=i-m|0;n=n+1|0;h=c[l+(n<<2)>>2]|0;m=c[h+4>>2]|0}while((i|0)>=(m|0))}p=(c[h>>2]|0)+(i*20|0)|0}do if((a[p+1>>0]|0)==-4){o=k+1|0;n=o<<2;h:do if((k|0)>0){m=c[p+16>>2]|0;h=0;do{if((c[l+(h<<2)>>2]|0)==(m|0))break h;h=h+1|0}while((h|0)<(k|0))}else h=0;while(0);if((h|0)!=(k|0)){n=q;break}r=Eg(j,n,(k|0)!=0&1)|0;c[Ea>>2]=r;if(r|0){h=1;Da=226;break b}l=c[u>>2]|0;r=p+16|0;c[l+(k<<2)>>2]=c[r>>2];b[v>>1]=b[v>>1]|16;c[w>>2]=n;n=(c[(c[r>>2]|0)+4>>2]|0)+q|0;k=o}else n=q;while(0);h=d[ba>>0]|d[ba+1>>0]<<8;if(!(h&8))break g;switch(a[p>>0]|0){case -85:break g;case 61:{m=c[C>>2]|0;if((m|0)>1)break g;else i=m;break}default:i=c[C>>2]|0}c[C>>2]=i+1;if((i|0)>=(n|0))break f;q=n;h=c[U>>2]|0}}else{n=d[ba>>0]|d[ba+1>>0]<<8;if(!(n&8)){if((i|0)<(o|0)){p=(c[W>>2]|0)+(i*20|0)|0;h=n;break}i=i-o|0;h=c[l>>2]|0;j=c[h+4>>2]|0;if((i|0)>=(j|0)){k=0;do{i=i-j|0;k=k+1|0;h=c[l+(k<<2)>>2]|0;j=c[h+4>>2]|0}while((i|0)>=(j|0))}p=(c[h>>2]|0)+(i*20|0)|0;h=n;break}m=h;while(1){if((i|0)<(o|0))h=(c[W>>2]|0)+(i*20|0)|0;else{i=i-o|0;h=c[l>>2]|0;j=c[h+4>>2]|0;if((i|0)>=(j|0)){k=0;do{i=i-j|0;k=k+1|0;h=c[l+(k<<2)>>2]|0;j=c[h+4>>2]|0}while((i|0)>=(j|0))}h=(c[h>>2]|0)+(i*20|0)|0}switch(a[h>>0]|0){case -85:{p=h;h=n;break g}case 61:{if((m|0)>1){p=h;h=n;break g}break}default:{}}h=m+1|0;c[C>>2]=h;if((m|0)<(q|0)){i=m;m=h}else break f}}while(0);if(c[z+264>>2]|0){c[Ea>>2]=9;Ag(f,50367,Ba);h=1;Da=226;break b}if((h&12)==4){b[y+48>>1]=4;q=x;c[q>>2]=i;c[q+4>>2]=((i|0)<0)<<31>>31;b[y+88>>1]=2562;q=c[2800+(d[p>>0]<<2)>>2]|0;c[y+96>>2]=q;q=(Eu(q)|0)&1073741823;c[y+92>>2]=q;a[y+90>>0]=1;q=y+120|0}else q=x;b[q+8>>1]=4;i=c[p+4>>2]|0;o=q;c[o>>2]=i;c[o+4>>2]=((i|0)<0)<<31>>31;b[q+48>>1]=4;o=c[p+8>>2]|0;i=q+40|0;c[i>>2]=o;c[i+4>>2]=((o|0)<0)<<31>>31;b[q+88>>1]=4;i=c[p+12>>2]|0;o=q+80|0;c[o>>2]=i;c[o+4>>2]=((i|0)<0)<<31>>31;o=q+120|0;i=q+144|0;j=c[i>>2]|0;if((j|0)<100){if(Eg(o,100,0)|0){h=1;Da=226;break b}h=q+136|0;k=q+128|0;n=h;h=c[h>>2]|0;j=c[i>>2]|0}else{h=c[q+140>>2]|0;n=q+136|0;c[n>>2]=h;k=q+128|0;b[k>>1]=b[k>>1]&13}b[k>>1]=514;c[X>>2]=h;c[fa>>2]=0;c[Y>>2]=j;c[Z>>2]=0;c[Z+4>>2]=0;b[Z+8>>1]=0;i:do switch(a[p+1>>0]|0){case -9:{k=c[p+16>>2]|0;l=k+6|0;c[Ca>>2]=e[l>>1];Eb(fa,34044,Ca);if(b[l>>1]|0){m=k+16|0;j=0;do{i=c[k+20+(j<<2)>>2]|0;if(!i)i=59952;else i=c[i>>2]|0;z=(Bu(i,34049)|0)==0;c[oa>>2]=(a[(c[m>>2]|0)+j>>0]|0)==0?59952:34064;c[oa+4>>2]=z?34056:i;Eb(fa,34058,oa);j=j+1|0}while(j>>>0<(e[l>>1]|0)>>>0)}i=c[_>>2]|0;j=i+1|0;if(j>>>0<(c[Y>>2]|0)>>>0){c[_>>2]=j;a[(c[X>>2]|0)+i>>0]=41;break i}else{wb(fa,34066,1);break i}}case -2:{c[pa>>2]=c[c[p+16>>2]>>2];Eb(fa,34068,pa);break}case -8:{y=c[p+16>>2]|0;z=a[y>>0]|0;c[qa>>2]=c[y+32>>2];c[qa+4>>2]=z;Eb(fa,34076,qa);break}case -14:{x=c[p+16>>2]|0;y=c[x+4>>2]|0;z=ra;c[z>>2]=c[x>>2];c[z+4>>2]=y;Eb(fa,32524,ra);break}case -3:{c[sa>>2]=c[p+16>>2];Eb(fa,34083,sa);break}case -13:{g[ta>>3]=+g[c[p+16>>2]>>3];Eb(fa,34086,ta);break}case -11:{i=c[p+16>>2]|0;j=e[i+8>>1]|0;if(j&2|0){h=c[i+16>>2]|0;break i}if(j&4|0){x=i;y=c[x+4>>2]|0;z=ua;c[z>>2]=c[x>>2];c[z+4>>2]=y;Eb(fa,32524,ua);break i}if(!(j&8)){h=(j&1|0)==0?34092:31171;break i}else{g[va>>3]=+g[i>>3];Eb(fa,34086,va);break i}}case -12:{c[wa>>2]=c[(c[p+16>>2]|0)+8>>2];Eb(fa,34099,wa);break}case -15:{k=c[p+16>>2]|0;l=c[k>>2]|0;if((l|0)<1)k=0;else{i=1;while(1){c[xa>>2]=c[k+(i<<2)>>2];Eb(fa,34107,xa);if((i|0)==(l|0))break;else i=i+1|0}k=c[_>>2]|0;j=c[Y>>2]|0}a[h>>0]=91;i=k+1|0;if(i>>>0>>0){c[_>>2]=i;a[(c[X>>2]|0)+k>>0]=93;break i}else{wb(fa,34111,1);break i}}case -4:{Eb(fa,34113,ya);break}case -5:case -17:{a[h>>0]=0;break}case -6:{c[za>>2]=c[c[p+16>>2]>>2];Eb(fa,31408,za);break}default:{i=c[p+16>>2]|0;if(i|0){h=i;break i}a[h>>0]=0}}while(0);i=c[X>>2]|0;do if(i|0){a[i+(c[_>>2]|0)>>0]=0;if(!(c[Z>>2]|0))break;if(a[$>>0]&4)break;$d(fa)|0}while(0);if((h|0)==(c[n>>2]|0)){if(!h)h=0;else h=(Eu(h)|0)&1073741823;c[q+132>>2]=h;a[q+130>>0]=1}else{c[q+132>>2]=0;yc(o,h,-1,1,0)|0}h=(d[ba>>0]|d[ba+1>>0]<<8)&12;if(h<<16>>16==4){if((c[q+184>>2]|0)<4){if(Eg(q+160|0,4,0)|0){h=1;Da=226;break b}h=q+168|0;i=c[q+176>>2]|0}else{i=c[q+180>>2]|0;c[q+176>>2]=i;h=q+168|0;b[h>>1]=b[h>>1]&13}b[h>>1]=514;c[q+172>>2]=2;c[Aa>>2]=e[p+2>>1];Cb(3,i,32595,Aa)|0;a[q+170>>0]=1;b[q+208>>1]=1;h=(d[ba>>0]|d[ba+1>>0]<<8)&12}b[aa>>1]=12-(h&65535);c[O>>2]=(c[M>>2]|0)+40;c[Ea>>2]=0;h=100;break b}while(0);c[Ea>>2]=0;h=101;Da=226}while(0);do if((Da|0)==226){Da=0;z=da;y=c[z+4>>2]|0;if((y|0)>0|(y|0)==0&(c[z>>2]|0)>>>0>0)hc(A,f);if((h|0)==101)if(!(a[A+79>>0]|0))h=101;else{m=A+20|0;h=c[m>>2]|0;if((h|0)>0){n=A+16|0;o=A+240|0;p=A+244|0;l=0;i=0;do{k=c[n>>2]|0;j=c[k+(l<<4)+4>>2]|0;do if(((j|0)!=0?(ea=c[j+4>>2]|0,c[ea+4>>2]=c[j>>2],ea=c[(c[ea>>2]|0)+216>>2]|0,(ea|0)!=0):0)?(z=ea+12|0,ma=c[z>>2]|0,c[z>>2]=0,(ma|0)>0):0){j=c[o>>2]|0;if(!((i|0)==0&(j|0)!=0))break;i=Za[j&127](c[p>>2]|0,A,c[k+(l<<4)>>2]|0,ma)|0;h=c[m>>2]|0}while(0);l=l+1|0}while((l|0)<(h|0));c[Ea>>2]=i;if(i|0){h=1;break}}else c[Ea>>2]=0;h=101}}while(0);c[A+64>>2]=h;i=c[f>>2]|0;j=c[Ea>>2]|0;if(!((j|0)==3082|(a[i+81>>0]|0)!=0)){if((c[i+68>>2]&j|0)==7)Da=244}else{og(i);Da=244}if((Da|0)==244){Da=0;c[Ea>>2]=7}if((h|1|0)!=101)Da=246}if((Da|0)==246){Da=0;if((a[L>>0]|0)<0)h=qg(f)|0}h=c[A+68>>2]&h;if((h|0)!=17){Da=322;break}u=B+1|0;if(B>>>0>=50){h=17;Da=322;break}r=c[C>>2]|0;i=c[f>>2]|0;n=qd(i,c[N>>2]|0,-1,d[L>>0]|0,f,ia,0)|0;switch(n|0){case 7:{Da=251;break a}case 0:break;default:{Da=281;break a}}q=c[ia>>2]|0;ew(fa|0,q|0,224)|0;ew(q|0,f|0,224)|0;ew(f|0,fa|0,224)|0;p=q+8|0;o=c[p>>2]|0;c[p>>2]=c[P>>2];c[P>>2]=o;o=q+4|0;B=c[o>>2]|0;c[o>>2]=c[Q>>2];c[Q>>2]=B;B=q+188|0;l=c[B>>2]|0;c[B>>2]=c[N>>2];c[N>>2]=l;c[R>>2]=c[q+208>>2];a[L>>0]=a[q+148>>0]|0;l=q+160|0;c[S>>2]=c[l>>2];c[S+4>>2]=c[l+4>>2];c[S+8>>2]=c[l+8>>2];c[S+12>>2]=c[l+12>>2];c[S+16>>2]=c[l+16>>2];c[S+20>>2]=c[l+20>>2];c[S+24>>2]=c[l+24>>2];c[T>>2]=(c[T>>2]|0)+1;l=q+16|0;if((b[l>>1]|0)>0){m=q+100|0;k=0;do{B=c[V>>2]|0;h=B+(k*40|0)|0;n=c[m>>2]|0;i=n+(k*40|0)|0;if(!((b[B+(k*40|0)+8>>1]&9216)==0?!(c[B+(k*40|0)+24>>2]|0):0))Cg(h);j=h+40|0;do{c[h>>2]=c[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));b[n+(k*40|0)+8>>1]=1;c[n+(k*40|0)+24>>2]=0;k=k+1|0}while((k|0)<(b[l>>1]|0))}c[q+40>>2]=0;k=q+20|0;h=c[k>>2]|0;if((h|0)<832317811)switch(h|0){case 770837923:{Da=264;break}default:{}}else switch(h|0){case 832317811:{Da=264;break}default:{}}if((Da|0)==264){Da=0;kc(q)|0}j=c[q>>2]|0;kb(j,q);i=c[o>>2]|0;h=c[p>>2]|0;if(!i)c[j+4>>2]=h;else{c[i+8>>2]=h;h=c[p>>2]|0}if(h|0)c[h+4>>2]=i;c[k>>2]=1443283912;c[q>>2]=0;do if(j){if(c[j+480>>2]|0){Xd(j,q);break}B=q;if((c[j+304>>2]|0)>>>0<=B>>>0?(c[j+308>>2]|0)>>>0>B>>>0:0){B=j+300|0;c[q>>2]=c[B>>2];c[B>>2]=q}else Da=276}else Da=276;while(0);do if((Da|0)==276)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{Da=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-Da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);h=c[f>>2]|0;Da=da;B=c[Da+4>>2]|0;if((B|0)>0|(B|0)==0&(c[Da>>2]|0)>>>0>0)hc(h,f);Da=kc(f)|0;c[ca>>2]=770837923;c[C>>2]=-1;c[Ea>>2]=0;a[D>>0]=2;c[E>>2]=0;c[G>>2]=1;a[I>>0]=-1;c[J>>2]=0;B=K;c[B>>2]=0;c[B+4>>2]=0;if((Da|0)==3082|(a[h+81>>0]|0)!=0)og(h);if((r|0)>-1){Da=d[ba>>0]|d[ba+1>>0]<<8|16;a[ba>>0]=Da;a[ba+1>>0]=Da>>8}B=u}if((Da|0)==13){c[Ea>>2]=7;Fa=7;Ra=Ga;return Fa|0}else if((Da|0)==251){h=i+81|0;if((a[h>>0]|0)==0?(a[i+82>>0]|0)==0:0){a[h>>0]=1;if((c[i+180>>2]|0)>0)c[i+264>>2]=1;h=i+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[i+236>>2]|0;if(h|0)c[h+12>>2]=7}n=7}else if((Da|0)!=281)if((Da|0)==322){Ra=Ga;return h|0}h=c[Fa+260>>2]|0;do if(h){i=b[h+8>>1]|0;if((i&514)==514?(a[h+10>>0]|0)==1:0){l=c[h+16>>2]|0;break}if(!(i&1))l=Gg(h,1)|0;else l=0}else l=0;while(0);m=f+124|0;h=c[m>>2]|0;do if(h|0){if(c[Fa+480>>2]|0){Xd(Fa,h);break}f=h;if((c[Fa+304>>2]|0)>>>0<=f>>>0?(c[Fa+308>>2]|0)>>>0>f>>>0:0){f=Fa+300|0;c[h>>2]=c[f>>2];c[f>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{f=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);k=Fa+81|0;if(a[k>>0]|0){c[m>>2]=0;c[Ea>>2]=7;Fa=7;Ra=Ga;return Fa|0}if(l){j=(Eu(l)|0)+1|0;j:do if(!(c[Fa+272>>2]|0)){do if(!(0<0|(0==0?(e[Fa+276>>1]|0)>>>0>>0:0))){i=Fa+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];f=Fa+284|0;c[f>>2]=(c[f>>2]|0)+1;break j}i=Fa+296|0;h=c[i>>2]|0;if(!h){h=Fa+292|0;break}else{c[i>>2]=c[h>>2];f=Fa+284|0;c[f>>2]=(c[f>>2]|0)+1;break j}}else h=Fa+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;Da=308}else Da=308;while(0);if((Da|0)==308)h=_d(Fa,j,0)|0;if(h)ew(h|0,l|0,j|0)|0;else h=0}else h=0;c[m>>2]=h;if((n|0)==3082|(a[k>>0]|0)!=0){og(Fa);h=7}else h=c[Fa+68>>2]&n;c[Ea>>2]=h;Fa=h;Ra=Ga;return Fa|0}while(0);c[i>>2]=58063;c[i+4>>2]=81990;c[i+8>>2]=31517;Db(21,32001,i);Fa=21;Ra=Ga;return Fa|0}function Hc(a,d){a=a|0;d=d|0;var e=0;e=c[a+8>>2]|0;if(!(b[e+8>>1]&8192)){e=Ic(a,d)|0;return e|0}else{e=c[e+16>>2]|0;return e|0}return 0}function Ic(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=c[a+8>>2]|0;if((d|0)<1){e=h+8|0;if(!(b[e>>1]&9216))b[e>>1]=1;else Dg(h);c[h+16>>2]=0;h=0;return h|0}if((c[h+24>>2]|0)<(d|0)){Eg(h,d,0)|0;g=h+16|0;e=h+8|0;f=g;g=c[g>>2]|0}else{g=c[h+20>>2]|0;f=h+16|0;c[f>>2]=g;e=h+8|0;b[e>>1]=b[e>>1]&13}b[e>>1]=8192;c[h>>2]=c[a+4>>2];if(!g){h=g;return h|0}gw(g|0,0,d|0)|0;h=c[f>>2]|0;return h|0}function Jc(a){a=a|0;if(!a){a=0;return a|0}if(!(c[a+120>>2]|0)){a=0;return a|0}a=e[a+144>>1]|0;return a|0}function Kc(b,d){b=b|0;d=d|0;var f=0,g=0;if(!b){g=mc(29576)|0;return g|0}f=c[b+120>>2]|0;if((f|0)!=0?(e[b+144>>1]|0)>>>0>d>>>0:0){d=f+(d*40|0)|0;f=b}else{d=c[b>>2]|0;c[d+64>>2]=25;Ne(d,25);d=29576;f=b}g=mc(d)|0;f=c[f>>2]|0;b=b+40|0;d=c[b>>2]|0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);d=7}else d=c[f+68>>2]&d;c[b>>2]=d;return g|0}function Lc(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=(d|0)==0;do if(j)h=29576;else{g=c[d+120>>2]|0;if(g|0?(e[d+144>>1]|0)>>>0>f>>>0:0){h=g+(f*40|0)|0;break}h=c[d>>2]|0;c[h+64>>2]=25;Ne(h,25);h=29576}while(0);f=b[h+8>>1]|0;if((f&2)!=0?(a[h+10>>0]|0)==1:0)g=c[h+12>>2]|0;else i=9;do if((i|0)==9){f=f&65535;if(!(f&16)){if(f&1|0){g=0;break}g=Fg(h,1)|0;break}else{g=c[h+12>>2]|0;if(!(f&16384))break;g=(c[h>>2]|0)+g|0;break}}while(0);if(j)return g|0;h=c[d>>2]|0;i=d+40|0;f=c[i>>2]|0;if((f|0)==3082|(a[h+81>>0]|0)!=0){og(h);f=7}else f=c[h+68>>2]&f;c[i>>2]=f;return g|0}function Mc(b,d){b=b|0;d=d|0;var f=0,h=0,i=0.0;h=(b|0)==0;do if(h)d=29576;else{f=c[b+120>>2]|0;if(f|0?(e[b+144>>1]|0)>>>0>d>>>0:0){d=f+(d*40|0)|0;break}d=c[b>>2]|0;c[d+64>>2]=25;Ne(d,25);d=29576}while(0);f=e[d+8>>1]|0;do if(!(f&8)){if(f&4|0){f=d;i=+((c[f>>2]|0)>>>0)+4294967296.0*+(c[f+4>>2]|0);break}if(!(f&18))i=0.0;else i=+Kg(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)}else i=+g[d>>3];while(0);if(h)return +i;f=c[b>>2]|0;h=b+40|0;d=c[h>>2]|0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);d=7}else d=c[f+68>>2]&d;c[h>>2]=d;return +i}function Nc(b,d){b=b|0;d=d|0;var f=0,h=0,i=0;h=(b|0)==0;do if(h)d=29576;else{f=c[b+120>>2]|0;if(f|0?(e[b+144>>1]|0)>>>0>d>>>0:0){d=f+(d*40|0)|0;break}d=c[b>>2]|0;c[d+64>>2]=25;Ne(d,25);d=29576}while(0);f=e[d+8>>1]|0;do if(!(f&4)){if(f&8|0){i=Mg(+g[d>>3])|0;L()|0;break}if(!(f&18))i=0;else{i=Ng(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)|0;L()|0}}else i=c[d>>2]|0;while(0);if(h)return i|0;f=c[b>>2]|0;h=b+40|0;d=c[h>>2]|0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);d=7}else d=c[f+68>>2]&d;c[h>>2]=d;return i|0}function Oc(b,d){b=b|0;d=d|0;var f=0,h=0,i=0,j=0;h=(b|0)==0;do if(h)d=29576;else{f=c[b+120>>2]|0;if(f|0?(e[b+144>>1]|0)>>>0>d>>>0:0){d=f+(d*40|0)|0;break}d=c[b>>2]|0;c[d+64>>2]=25;Ne(d,25);d=29576}while(0);f=e[d+8>>1]|0;do if(!(f&4)){if(f&8|0){j=Mg(+g[d>>3])|0;i=L()|0;break}if(!(f&18)){i=0;j=0}else{j=Ng(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)|0;i=L()|0}}else{j=d;i=c[j+4>>2]|0;j=c[j>>2]|0}while(0);if(h){K(i|0);return j|0}f=c[b>>2]|0;h=b+40|0;d=c[h>>2]|0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);d=7}else d=c[f+68>>2]&d;c[h>>2]=d;K(i|0);return j|0}function Pc(d,f){d=d|0;f=f|0;var g=0,h=0,i=0;h=(d|0)==0;do if(h)f=29576;else{g=c[d+120>>2]|0;if(g|0?(e[d+144>>1]|0)>>>0>f>>>0:0){f=g+(f*40|0)|0;break}f=c[d>>2]|0;c[f+64>>2]=25;Ne(f,25);f=29576}while(0);g=b[f+8>>1]|0;if((g&514)==514?(a[f+10>>0]|0)==1:0)i=c[f+16>>2]|0;else if(!(g&1))i=Gg(f,1)|0;else i=0;if(h)return i|0;g=c[d>>2]|0;h=d+40|0;f=c[h>>2]|0;if((f|0)==3082|(a[g+81>>0]|0)!=0){og(g);f=7}else f=c[g+68>>2]&f;c[h>>2]=f;return i|0}function Qc(f,g){f=f|0;g=g|0;var h=0,i=0,j=0;i=(f|0)==0;do if(i)g=29576;else{h=c[f+120>>2]|0;if(h|0?(e[f+144>>1]|0)>>>0>g>>>0:0){g=h+(g*40|0)|0;break}g=c[f>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576}while(0);j=d[816+(b[g+8>>1]&31)>>0]|0;if(i)return j|0;h=c[f>>2]|0;i=f+40|0;g=c[i>>2]|0;if((g|0)==3082|(a[h+81>>0]|0)!=0){og(h);g=7}else g=c[h+68>>2]&g;c[i>>2]=g;return j|0}function Rc(d,f){d=d|0;f=f|0;var g=0,h=0,i=0;i=c[d>>2]|0;if(!d){i=0;return i|0}if((e[d+144>>1]|0)>>>0<=f>>>0){i=0;return i|0}h=c[d+116>>2]|0;d=h+(f*40|0)|0;do if(d){g=b[h+(f*40|0)+8>>1]|0;if((g&514)==514?(a[h+(f*40|0)+10>>0]|0)==1:0){d=c[h+(f*40|0)+16>>2]|0;break}if(!(g&1))d=Gg(d,1)|0;else d=0}else d=0;while(0);g=i+81|0;if(!(a[g>>0]|0)){i=d;return i|0}if(c[i+180>>2]|0){i=0;return i|0}a[g>>0]=0;c[i+264>>2]=0;i=i+272|0;c[i>>2]=(c[i>>2]|0)+-1;i=0;return i|0}function Sc(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Vc(b,d)|0;if(h|0){switch(g|0){case 0:case -1:{b=h;return b|0}default:{}}ab[g&127](e);b=h;return b|0}if(!e){b=0;return b|0}e=yc((c[b+100>>2]|0)+((d+-1|0)*40|0)|0,e,f,0,g)|0;if(!e){b=0;return b|0}d=c[b>>2]|0;c[d+64>>2]=e;Ne(d,e);d=c[b>>2]|0;if((e|0)==3082|(a[d+81>>0]|0)!=0){og(d);b=7;return b|0}else{b=c[d+68>>2]&e;return b|0}return 0}function Tc(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;j=Vc(d,e)|0;if(j|0){switch(h|0){case 0:case -1:{d=j;return d|0}default:{}}ab[h&127](f);d=j;return d|0}if(!f){d=0;return d|0}m=c[d+100>>2]|0;k=e+-1|0;l=m+(k*40|0)|0;e=yc(l,f,g,i,h)|0;do if(!(i<<24>>24==0|(e|0)!=0)){j=a[(c[d>>2]|0)+78>>0]|0;if(!(b[m+(k*40|0)+8>>1]&2)){d=0;return d|0}if((a[m+(k*40|0)+10>>0]|0)==j<<24>>24){d=0;return d|0}else{e=Ig(l,j)|0;break}}while(0);if(!e){d=0;return d|0}j=c[d>>2]|0;c[j+64>>2]=e;Ne(j,e);j=c[d>>2]|0;if((e|0)==3082|(a[j+81>>0]|0)!=0){og(j);d=7;return d|0}else{d=c[j+68>>2]&e;return d|0}return 0}function Uc(a,d,e){a=a|0;d=d|0;e=+e;var f=0,h=0,i=0,j=0,k=0;j=Ra;Ra=Ra+16|0;f=j+8|0;h=j;i=Vc(a,d)|0;if(i|0){Ra=j;return i|0}k=c[a+100>>2]|0;d=d+-1|0;a=k+(d*40|0)|0;d=k+(d*40|0)+8|0;if(!(b[d>>1]&9216))b[d>>1]=1;else Dg(a);g[f>>3]=e;g[h>>3]=+g[f>>3];if(!(+g[f>>3]==+g[h>>3])){Ra=j;return i|0}g[a>>3]=e;b[d>>1]=8;Ra=j;return i|0}function Vc(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+64|0;i=l+40|0;k=l+32|0;j=l+16|0;h=l+8|0;do if(!e)Db(21,32555,l);else{g=c[e>>2]|0;if(!g){Db(21,32391,h);break}if((c[e+20>>2]|0)==770837923?(c[e+36>>2]|0)<=-1:0){if((f|0)>=1?(b[e+16>>1]|0)>=(f|0):0){j=f+-1|0;k=c[e+100>>2]|0;h=k+(j*40|0)|0;i=k+(j*40|0)+8|0;if(!((b[i>>1]&9216)==0?(c[k+(j*40|0)+24>>2]|0)==0:0)){Cg(h);g=c[e>>2]|0}b[i>>1]=1;c[g+64>>2]=0;g=c[e+208>>2]|0;if(!g){f=0;Ra=l;return f|0}if(!(g&((f|0)>31?-2147483648:1<>0]|d[f+1>>0]<<8)&-4|1;a[f>>0]=e;a[f+1>>0]=e>>8;f=0;Ra=l;return f|0}c[g+64>>2]=25;Ne(g,25);f=25;Ra=l;return f|0}c[g+64>>2]=21;Ne(g,21);c[k>>2]=c[e+188>>2];Db(21,36834,k);c[i>>2]=58063;c[i+4>>2]=82575;c[i+8>>2]=31517;Db(21,32001,i);f=21;Ra=l;return f|0}while(0);c[j>>2]=58063;c[j+4>>2]=82567;c[j+8>>2]=31517;Db(21,32001,j);f=21;Ra=l;return f|0}function Wc(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=((e|0)<0)<<31>>31;g=Vc(a,d)|0;if(g|0)return g|0;h=c[a+100>>2]|0;d=d+-1|0;a=h+(d*40|0)|0;d=h+(d*40|0)+8|0;if(!(b[d>>1]&9216)){h=a;c[h>>2]=e;c[h+4>>2]=f;b[d>>1]=4;return g|0}else{Pg(a,e,f);return g|0}return 0}function Xc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Tc(a,b,c,d,e,1)|0}function Yc(d,e,f){d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;i=t+8|0;j=t;h=b[f+8>>1]|0;switch(a[816+(h&31)>>0]|0){case 1:{j=f;i=c[j>>2]|0;j=c[j+4>>2]|0;h=Vc(d,e)|0;if(h|0){d=h;Ra=t;return d|0}d=c[d+100>>2]|0;f=e+-1|0;h=d+(f*40|0)|0;f=d+(f*40|0)+8|0;if(!(b[f>>1]&9216)){d=h;c[d>>2]=i;c[d+4>>2]=j;b[f>>1]=4;d=0;Ra=t;return d|0}else{Pg(h,i,j);d=0;Ra=t;return d|0}}case 2:{k=+g[f>>3];h=Vc(d,e)|0;if(h|0){d=h;Ra=t;return d|0}d=c[d+100>>2]|0;f=e+-1|0;h=d+(f*40|0)|0;f=d+(f*40|0)+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else Dg(h);g[i>>3]=k;g[j>>3]=+g[i>>3];if(!(+g[i>>3]==+g[j>>3])){d=0;Ra=t;return d|0}g[h>>3]=k;b[f>>1]=8;d=0;Ra=t;return d|0}case 4:{if(h&16384){l=c[f>>2]|0;h=Vc(d,e)|0;if(h|0){d=h;Ra=t;return d|0}j=c[d+100>>2]|0;h=e+-1|0;f=j+(h*40|0)|0;i=j+(h*40|0)+8|0;if(!((b[i>>1]&9216)==0?!(c[j+(h*40|0)+24>>2]|0):0))Cg(f);b[i>>1]=16400;c[j+(h*40|0)+12>>2]=0;c[f>>2]=(l|0)>0?l:0;a[j+(h*40|0)+10>>0]=1;c[j+(h*40|0)+16>>2]=0;d=0;Ra=t;return d|0}r=c[f+16>>2]|0;f=c[f+12>>2]|0;h=Vc(d,e)|0;if(h|0){d=h;Ra=t;return d|0}if(!r){d=0;Ra=t;return d|0}q=c[d+100>>2]|0;p=e+-1|0;n=q+(p*40|0)|0;l=c[q+(p*40|0)+32>>2]|0;e=(l|0)==0;if(e)i=1e9;else i=c[l+108>>2]|0;a:do if((f|0)<0)if((i|0)<0){o=528;j=0}else{h=0;while(1){if(!((a[r+(h|1)>>0]|a[r+h>>0])<<24>>24)){o=528;j=h;break a}h=h+2|0;if((h|0)>(i|0)){o=528;j=h;break}}}else{o=16;j=f}while(0);m=j+((o&65535)>>>8&65535)|0;do if((j|0)>(i|0))if(!e?(s=c[l+236>>2]|0,(s|0)!=0):0){c[s+12>>2]=18;f=s+36|0;c[f>>2]=(c[f>>2]|0)+1;f=18}else f=18;else{h=m>>>0>32?m:32;if((c[q+(p*40|0)+24>>2]|0)<(h|0)){if(Eg(n,h,0)|0){f=7;break}h=q+(p*40|0)+8|0;f=c[q+(p*40|0)+16>>2]|0}else{f=c[q+(p*40|0)+20>>2]|0;c[q+(p*40|0)+16>>2]=f;h=q+(p*40|0)+8|0;b[h>>1]=b[h>>1]&13}ew(f|0,r|0,m|0)|0;c[q+(p*40|0)+12>>2]=j;b[h>>1]=o;a[q+(p*40|0)+10>>0]=1;d=0;Ra=t;return d|0}while(0);h=c[d>>2]|0;c[h+64>>2]=f;Ne(h,f);h=c[d>>2]|0;if(!(a[h+81>>0]|0)){d=c[h+68>>2]&f;Ra=t;return d|0}else{og(h);d=7;Ra=t;return d|0}}case 3:{d=Tc(d,e,c[f+16>>2]|0,c[f+12>>2]|0,-1,a[f+10>>0]|0)|0;Ra=t;return d|0}default:{d=Vc(d,e)|0;Ra=t;return d|0}}return 0} -function ho(f,h,i){f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=Ra;Ra=Ra+400|0;F=J+16|0;p=J;r=J+360|0;G=J+80|0;H=J+60|0;z=J+32|0;I=c[(c[f>>2]|0)+32>>2]|0;h=c[i>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){u=c[h+16>>2]|0;break}if(!(j&1))u=Gg(h,1)|0;else u=0}else u=0;while(0);h=c[i+12>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){B=c[h+16>>2]|0;break}if(!(j&1))B=Gg(h,1)|0;else B=0}else B=0;while(0);h=c[i+16>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){x=c[h+16>>2]|0;break}if(!(j&1))x=Gg(h,1)|0;else x=0}else x=0;while(0);h=c[i+20>>2]|0;do if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){A=c[h+16>>2]|0;break}if(!(j&1))A=Gg(h,1)|0;else A=0}else A=0;while(0);h=c[i+24>>2]|0;j=e[h+8>>1]|0;do if(!(j&4)){if(j&8|0){m=Mg(+g[h>>3])|0;L()|0;break}if(!(j&18))m=0;else{m=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}}else m=c[h>>2]|0;while(0);if(!((B|0)!=0&(x|0)!=0&(A|0)!=0)){Ra=J;return}C=I+312|0;D=c[C>>2]|0;c[C>>2]=0;n=I+20|0;l=c[n>>2]|0;if((l|0)>0){j=c[I+16>>2]|0;h=0;do{k=c[j+(h<<4)+4>>2]|0;if(k|0)c[(c[k+4>>2]|0)+4>>2]=c[k>>2];h=h+1|0}while((h|0)!=(l|0))};c[H>>2]=0;c[H+4>>2]=0;c[H+8>>2]=0;c[H+12>>2]=0;c[H+16>>2]=0;o=Sd(I,x,u)|0;w=H+12|0;c[w>>2]=o;o=z+12|0;c[o>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[z>>2]=G;c[z+4>>2]=152;c[z+8>>2]=153;c[z+24>>2]=H;c[r>>2]=0;o=(m|0)==0;if(o){a:do if(u){y=c[n>>2]|0;j=y+-1|0;if((y|0)>0){h=j;m=(c[I+16>>2]|0)+(j<<4)|0;while(1){k=c[m>>2]|0;if(k|0){y=a[k>>0]|0;j=(d[208+(y&255)>>0]|0)-(d[208+(d[u>>0]|0)>>0]|0)|0;if(!(y<<24>>24==0|(j|0)!=0)){l=u;do{k=k+1|0;l=l+1|0;y=a[k>>0]|0;j=(d[208+(y&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(y<<24>>24==0|(j|0)!=0))}if(!j)break a}if(!h)break;j=h+-1|0;if((h|0)>0){h=j;m=m+-16|0}else{h=j;break a}}h=109-(d[208+(d[u>>0]|0)>>0]|0)|0;if(!h){j=u;k=50919;do{k=k+1|0;j=j+1|0;y=a[k>>0]|0;h=(d[208+(y&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(y<<24>>24==0|(h|0)!=0))}h=((h|0)!=0)<<31>>31}else h=j}else h=-1;while(0);h=h&255}else h=1;j=I+164|0;a[j>>0]=h;y=G+4|0;gw(y|0,0,272)|0;a[G+200>>0]=3;c[G>>2]=I;c[G+132>>2]=1;h=ud(G,B,r)|0;c[y>>2]=c[r>>2];h=(a[I+81>>0]|0)==0?h:7;b:do if(!h){q=c[G+228>>2]|0;h=(q|0)==0;if((h?(c[G+232>>2]|0)==0:0)?(c[G+236>>2]|0)==0:0){c[p>>2]=32306;c[p+4>>2]=103316;c[p+8>>2]=31517;Db(11,32001,p);h=11;E=58;break}a[j>>0]=0;k=c[I+32>>2]|0;n=k&67108864;c:do if(h){m=G+232|0;h=c[m>>2]|0;if(h|0){l=c[h>>2]|0;h=G+272|0;j=c[h>>2]|0;d:do if(j|0){while(1){k=j+12|0;if((c[j>>2]|0)==(l|0))break;j=c[k>>2]|0;if(!j)break d;else h=k}c[h>>2]=c[k>>2];c[k>>2]=c[H>>2];c[H>>2]=j;x=H+4|0;c[x>>2]=(c[x>>2]|0)+1}while(0);if(n|0)break;h=c[(c[m>>2]|0)+36>>2]|0;if(!h)break;_j(z,h)|0;break}m=c[G+236>>2]|0;l=c[m+4>>2]|0;e:do if(l|0){s=a[l>>0]|0;h=(d[208+(s&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(s<<24>>24==0|(h|0)!=0)){j=x;k=l;do{k=k+1|0;j=j+1|0;s=a[k>>0]|0;h=(d[208+(s&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(s<<24>>24==0|(h|0)!=0))}if(((h|0)==0?(c[(c[w>>2]|0)+72>>2]|0)==(c[m+24>>2]|0):0)?(t=G+272|0,v=c[t>>2]|0,v|0):0){k=t;h=v;while(1){j=h+12|0;if((c[h>>2]|0)==(l|0))break;h=c[j>>2]|0;if(!h)break e;else k=j}c[k>>2]=c[j>>2];c[j>>2]=c[H>>2];c[H>>2]=h;w=H+4|0;c[w>>2]=(c[w>>2]|0)+1}}while(0);if(!n){h=lo(G,o?u:0)|0;if(h|0){E=131;break b}oo(z,m);h=c[m+28>>2]|0;if(h|0){n=G+272|0;o=H+4|0;do{m=c[h+12>>2]|0;f:do if(m|0){z=a[m>>0]|0;j=(d[208+(z&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(z<<24>>24==0|(j|0)!=0)){k=x;l=m;do{l=l+1|0;k=k+1|0;z=a[l>>0]|0;j=(d[208+(z&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(z<<24>>24==0|(j|0)!=0))}if(j|0)break;j=c[n>>2]|0;if(!j)break;l=n;while(1){k=j+12|0;if((c[j>>2]|0)==(m|0))break;j=c[k>>2]|0;if(!j)break f;else l=k}c[l>>2]=c[k>>2];c[k>>2]=c[H>>2];c[H>>2]=j;c[o>>2]=(c[o>>2]|0)+1}while(0);h=c[h+36>>2]|0}while((h|0)!=0)}}}else{j=q+12|0;p=(n|0)==0;if(c[j>>2]|0){if(!p)break;x=r+4|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[x+20>>2]=0;c[x+24>>2]=0;c[r>>2]=G;Kk(G,c[j>>2]|0,r);x=(c[G+36>>2]|0)==0;h=c[G+12>>2]|0;$j(z,c[j>>2]|0)|0;if(x|(h|0)==0)break;else{E=131;break b}}if(!((k&16384|0)==0&0==0&(p^1))?(s=c[q+16>>2]|0,s|0):0){n=G+272|0;o=H+4|0;l=s;do{m=c[l+8>>2]|0;g:do if(m|0){v=a[m>>0]|0;h=(d[208+(v&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(v<<24>>24==0|(h|0)!=0)){j=x;k=m;do{k=k+1|0;j=j+1|0;v=a[k>>0]|0;h=(d[208+(v&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(h|0)!=0))}if(h|0)break;h=c[n>>2]|0;if(!h)break;k=n;while(1){j=h+12|0;if((c[h>>2]|0)==(m|0))break;h=c[j>>2]|0;if(!h)break g;else k=j}c[k>>2]=c[j>>2];c[j>>2]=c[H>>2];c[H>>2]=h;c[o>>2]=(c[o>>2]|0)+1}while(0);l=c[l+4>>2]|0}while((l|0)!=0)}l=c[q>>2]|0;if(l|0){v=a[x>>0]|0;h=(d[208+(v&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!(v<<24>>24==0|(h|0)!=0)){k=l;j=x;do{j=j+1|0;k=k+1|0;x=a[j>>0]|0;h=(d[208+(x&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(x<<24>>24==0|(h|0)!=0))}if(!h){c[w>>2]=q;do if(p){j=c[q+24>>2]|0;if(!j)break;h=c[j>>2]|0;if((h|0)<=0)break;k=h;h=j+4|0;while(1){j=c[h>>2]|0;if(j|0?_j(z,j)|0:0)break;if((k|0)>1){k=k+-1|0;h=h+20|0}else break}l=c[q>>2]|0}while(0);h=G+272|0;j=c[h>>2]|0;if(j|0){while(1){k=j+12|0;if((c[j>>2]|0)==(l|0))break;j=c[k>>2]|0;if(!j)break c;else h=k}c[h>>2]=c[k>>2];c[k>>2]=c[H>>2];c[H>>2]=j;z=H+4|0;c[z>>2]=(c[z>>2]|0)+1}}}}while(0);h=po(f,H,B,A,1)|0;if(h|0)E=131}else E=58;while(0);if((E|0)==58){a[j>>0]=0;E=131}do if((E|0)==131){if(!(c[y>>2]|0)){c[f+20>>2]=h;j=c[f>>2]|0;if(!(b[j+8>>1]&1))break;switch(h|0){case 516:{h=50738;break}case 100:{h=50760;break}case 101:{h=50782;break}default:{h=h&255;if(h>>>0<29?(520028155>>>h&1|0)!=0:0)h=c[22960+(h<<2)>>2]|0;else h=50724}}yc(j,h,-1,1,0)|0;break}j=c[i+4>>2]|0;k=c[i+8>>2]|0;do if(j){h=b[j+8>>1]|0;if((h&514)==514?(a[j+10>>0]|0)==1:0){j=c[j+16>>2]|0;break}if(!(h&1))j=Gg(j,1)|0;else j=0}else j=0;while(0);do if(k){h=b[k+8>>1]|0;if((h&514)==514?(a[k+10>>0]|0)==1:0){h=c[k+16>>2]|0;break}if(!(h&1))h=Gg(k,1)|0;else h=0}else h=0;while(0);i=c[y>>2]|0;c[F>>2]=j;c[F+4>>2]=h;c[F+8>>2]=59952;c[F+12>>2]=i;h=Bb(49618,F)|0;c[f+20>>2]=1;yc(c[f>>2]|0,h,-1,1,-1)|0;if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{f=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);qo(G);ro(I,c[H>>2]|0);c[C>>2]=D;Ra=J;return}function io(f,h,i){f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=Ra;Ra=Ra+352|0;u=A+16|0;r=A;s=A+312|0;z=A+32|0;v=c[(c[f>>2]|0)+32>>2]|0;j=c[i>>2]|0;do if(j){h=b[j+8>>1]|0;if((h&514)==514?(a[j+10>>0]|0)==1:0){j=c[j+16>>2]|0;break}if(!(h&1))j=Gg(j,1)|0;else j=0}else j=0;while(0);h=c[i+4>>2]|0;do if(h){k=b[h+8>>1]|0;if((k&514)==514?(a[h+10>>0]|0)==1:0){o=c[h+16>>2]|0;break}if(!(k&1))o=Gg(h,1)|0;else o=0}else o=0;while(0);h=c[i+16>>2]|0;k=e[h+8>>1]|0;do if(!(k&4)){if(k&8|0){h=Mg(+g[h>>3])|0;L()|0;break}if(!(k&18))h=0;else{h=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}}else h=c[h>>2]|0;while(0);p=c[v+32>>2]|0;w=v+312|0;x=c[w>>2]|0;c[w>>2]=0;if(!((j|0)!=0&(o|0)!=0)){c[w>>2]=x;Ra=A;return}c[s>>2]=0;q=(h|0)==0;if(q){n=c[v+20>>2]|0;k=n+-1|0;a:do if((n|0)>0){h=k;n=(c[v+16>>2]|0)+(k<<4)|0;while(1){l=c[n>>2]|0;if(l|0){m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(m<<24>>24==0|(k|0)!=0)){m=j;do{l=l+1|0;m=m+1|0;B=a[l>>0]|0;k=(d[208+(B&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(k|0)!=0))}if(!k)break a}if(!h)break;k=h+-1|0;if((h|0)>0){h=k;n=n+-16|0}else{h=k;break a}}h=109-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!h){k=j;l=50919;do{l=l+1|0;k=k+1|0;B=a[l>>0]|0;h=(d[208+(B&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(h|0)!=0))}h=((h|0)!=0)<<31>>31}else h=k;while(0);h=h&255}else h=1;l=v+164|0;a[l>>0]=h;m=z+4|0;gw(m|0,0,272)|0;a[z+200>>0]=3;c[z>>2]=v;c[z+132>>2]=1;B=ud(z,o,s)|0;c[m>>2]=c[s>>2];do if((B|0)==0&(a[v+81>>0]|0)==0){h=c[z+228>>2]|0;k=(h|0)==0;if((k?(c[z+232>>2]|0)==0:0)?(c[z+236>>2]|0)==0:0){c[r>>2]=32306;c[r+4>>2]=103316;c[r+8>>2]=31517;Db(11,32001,r);y=40;break}a[l>>0]=0;l=(p&67108864|0)==0&0==0;if(!(k|l^1)?(t=h+12|0,c[t>>2]|0):0){B=s+4|0;c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[B+12>>2]=0;c[B+16>>2]=0;c[B+20>>2]=0;c[B+24>>2]=0;c[s>>2]=z;Kk(z,c[t>>2]|0,s);if((c[z+36>>2]|0)==0|(c[z+12>>2]|0)==0)break;else{y=68;break}}k=z+236|0;h=c[k>>2]|0;if(h|0){if(l){if(lo(z,q?j:0)|0){y=68;break}h=c[k>>2]|0}k=c[h+24>>2]|0;if(!k)o=-1e6;else{l=c[v+16>>2]|0;h=0;while(1)if((c[l+(h<<4)+12>>2]|0)==(k|0)){o=h;break}else h=h+1|0}B=c[v+20>>2]|0;k=B+-1|0;b:do if((B|0)>0){h=k;n=(c[v+16>>2]|0)+(k<<4)|0;while(1){l=c[n>>2]|0;if(l|0){B=a[l>>0]|0;k=(d[208+(B&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(B<<24>>24==0|(k|0)!=0)){m=j;do{l=l+1|0;m=m+1|0;B=a[l>>0]|0;k=(d[208+(B&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(k|0)!=0))}if(!k)break b}if(!h)break;k=h+-1|0;if((h|0)>0){h=k;n=n+-16|0}else{h=k;break b}}h=109-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!h){k=50919;do{k=k+1|0;j=j+1|0;B=a[k>>0]|0;h=(d[208+(B&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(h|0)!=0))}h=((h|0)!=0)<<31>>31}else h=k;while(0);if((o|0)==(h|0)){h=c[f>>2]|0;j=h+8|0;if(!(b[j>>1]&9216)){B=h;c[B>>2]=1;c[B+4>>2]=0;b[j>>1]=4;break}else{Pg(h,1,0);break}}}}else y=40;while(0);if((y|0)==40){a[l>>0]=0;y=68}do if((y|0)==68){j=c[i+8>>2]|0;k=c[i+12>>2]|0;do if(j){h=b[j+8>>1]|0;if((h&514)==514?(a[j+10>>0]|0)==1:0){j=c[j+16>>2]|0;break}if(!(h&1))j=Gg(j,1)|0;else j=0}else j=0;while(0);do if(k){h=b[k+8>>1]|0;if((h&514)==514?(a[k+10>>0]|0)==1:0){h=c[k+16>>2]|0;break}if(!(h&1))h=Gg(k,1)|0;else h=0}else h=0;while(0);B=c[m>>2]|0;c[u>>2]=j;c[u+4>>2]=h;c[u+8>>2]=49639;c[u+12>>2]=B;h=Bb(49618,u)|0;c[f+20>>2]=1;yc(c[f>>2]|0,h,-1,1,-1)|0;if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{B=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);qo(z);c[w>>2]=x;Ra=A;return}function jo(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=c[d+24>>2]|0;switch(a[e>>0]|0){case 77:{if((c[i+8>>2]|0)!=(b[e+32>>1]|0))return 0;d=c[d>>2]|0;if((c[d+120>>2]|0)!=(c[i+12>>2]|0))return 0;d=d+272|0;f=c[d>>2]|0;if(!f)return 0;while(1){h=f+12|0;if((c[f>>2]|0)==(e|0))break;g=c[h>>2]|0;if(!g){j=16;break}else{d=h;f=g}}if((j|0)==16)return 0;c[d>>2]=c[h>>2];c[h>>2]=c[i>>2];c[i>>2]=f;j=i+4|0;c[j>>2]=(c[j>>2]|0)+1;return 0}case -94:{if((c[i+8>>2]|0)!=(b[e+32>>1]|0))return 0;if((c[i+12>>2]|0)!=(c[e+44>>2]|0))return 0;d=(c[d>>2]|0)+272|0;f=c[d>>2]|0;if(!f)return 0;while(1){h=f+12|0;if((c[f>>2]|0)==(e|0))break;g=c[h>>2]|0;if(!g){j=16;break}else{d=h;f=g}}if((j|0)==16)return 0;c[d>>2]=c[h>>2];c[h>>2]=c[i>>2];c[i>>2]=f;j=i+4|0;c[j>>2]=(c[j>>2]|0)+1;return 0}default:return 0}return 0}function ko(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=Ra;Ra=Ra+32|0;g=h;e=b+64|0;b=c[e>>2]|0;if(!b){Ra=h;return 0}if((c[b>>2]|0)<=0){Ra=h;return 0}f=g+4|0;d=0;do{i=c[b+8+(d<<4)+8>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;j=c[a>>2]|0;c[g>>2]=j;Kk(j,i,g);$j(a,i)|0;d=d+1|0;b=c[e>>2]|0}while((d|0)<(c[b>>2]|0));Ra=h;return 0}function lo(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;ea=Ra;Ra=Ra+208|0;aa=ea+128|0;$=ea+120|0;_=ea+112|0;ca=ea+104|0;ba=ea+96|0;Z=ea+88|0;n=ea+80|0;W=ea+168|0;X=ea+136|0;Y=ea;k=c[d>>2]|0;o=c[d+236>>2]|0;i=X+4|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;c[i+16>>2]=0;c[i+20>>2]=0;c[i+24>>2]=0;c[X>>2]=d;i=c[o+4>>2]|0;j=c[k+16>>2]|0;h=c[o+24>>2]|0;m=d;if(!h)g=-1e6;else{g=0;while(1)if((c[j+(g<<4)+12>>2]|0)==(h|0))break;else g=g+1|0}g=Sd(k,i,c[j+(g<<4)>>2]|0)|0;c[d+120>>2]=g;a[d+144>>0]=a[o+8>>0]|0;if(g|0?(l=Sk(d,g)|0,l|0):0){da=l;Ra=ea;return da|0}i=c[o+12>>2]|0;if(!i)g=0;else{j=X+24|0;b[j>>1]=0;c[W>>2]=m;c[W+4>>2]=125;c[W+8>>2]=126;c[W+12>>2]=0;c[W+24>>2]=X;h=i+24|0;g=d+208|0;U=(c[g>>2]|0)+(c[h>>2]|0)|0;c[g>>2]=U;g=c[(c[d>>2]|0)+120>>2]|0;if((g|0)>=(U|0)){_j(W,i)|0;g=c[W>>2]|0;U=g+208|0;c[U>>2]=(c[U>>2]|0)-(c[h>>2]|0);U=i+4|0;c[U>>2]=c[U>>2]|b[j>>1]&-32752&65535;if((c[X+20>>2]|0)>0)g=1;else g=(c[g+36>>2]|0)>0&1}else{c[n>>2]=g;cd(d,41637,n);g=1}}h=c[o+28>>2]|0;if(!((g|0)==0&(h|0)!=0)){da=g;Ra=ea;return da|0}q=d+36|0;r=d+12|0;s=Y+16|0;t=Y+24|0;u=X+4|0;v=X+24|0;w=W+4|0;x=W+8|0;y=W+12|0;z=W+24|0;A=X+8|0;B=X+20|0;C=W+4|0;D=W+8|0;E=W+12|0;F=W+24|0;G=W+4|0;H=W+8|0;I=W+12|0;J=W+24|0;K=W+4|0;L=W+8|0;M=W+12|0;N=W+24|0;O=W+4|0;P=W+8|0;Q=W+12|0;R=W+24|0;S=W+4|0;T=W+8|0;U=W+12|0;p=W+24|0;while(1){g=c[h+8>>2]|0;if((g|0?(Kk(d,g,X),c[q>>2]|0):0)?(V=c[r>>2]|0,V|0):0){g=V;da=76;break}k=h+12|0;g=c[k>>2]|0;if(!g)g=0;else{j=bd(d,0,g,f)|0;if(!j){g=1;da=76;break}g=Sk(d,j)|0;if(g|0){da=76;break}g=Y;i=g+80|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(i|0));c[Y>>2]=1;c[s>>2]=c[k>>2];c[t>>2]=j;c[u>>2]=Y;j=c[h+16>>2]|0;do if(!j)da=26;else{k=e[v>>1]|0;b[v>>1]=k&28655;g=c[X>>2]|0;c[W>>2]=g;c[w>>2]=125;c[x>>2]=126;c[y>>2]=0;c[z>>2]=X;l=j+24|0;i=g+208|0;o=(c[i>>2]|0)+(c[l>>2]|0)|0;c[i>>2]=o;i=c[(c[g>>2]|0)+120>>2]|0;if((i|0)>=(o|0)){_j(W,j)|0;g=c[W>>2]|0;o=g+208|0;c[o>>2]=(c[o>>2]|0)-(c[l>>2]|0);o=b[v>>1]|0;n=j+4|0;c[n>>2]=c[n>>2]|o&-32752&65535;b[v>>1]=k&36880|o&65535;if((c[B>>2]|0)<=0)if((c[g+36>>2]|0)<1){da=26;break}else{g=1;break}}else{c[Z>>2]=i;cd(g,41637,Z)}g=1}while(0);a:do if((da|0)==26){da=0;k=c[h+20>>2]|0;if((k|0)!=0?(c[k>>2]|0)>0:0){j=0;while(1){l=c[k+4+(j*20|0)>>2]|0;if(l){m=e[v>>1]|0;b[v>>1]=m&28655;g=c[X>>2]|0;c[W>>2]=g;c[C>>2]=125;c[D>>2]=126;c[E>>2]=0;c[F>>2]=X;n=l+24|0;i=g;fa=i+208|0;o=(c[fa>>2]|0)+(c[n>>2]|0)|0;c[fa>>2]=o;i=c[(c[i>>2]|0)+120>>2]|0;if((i|0)<(o|0)){da=33;break}_j(W,l)|0;g=c[W>>2]|0;fa=g+208|0;c[fa>>2]=(c[fa>>2]|0)-(c[n>>2]|0);fa=b[v>>1]|0;o=l+4|0;c[o>>2]=c[o>>2]|fa&-32752&65535;b[v>>1]=m&36880|fa&65535;if((c[B>>2]|0)>0)break;if((c[g+36>>2]|0)>=1){g=2;break a}}j=j+1|0;if((j|0)>=(c[k>>2]|0)){g=0;break a}}if((da|0)==33){da=0;c[ba>>2]=i;cd(g,41637,ba)}g=2}else g=0}while(0);o=c[h+28>>2]|0;if(o){c[o+20>>2]=Y;c[A>>2]=o;b[v>>1]=512;n=c[o>>2]|0;b:do if((n|0)!=0?(c[n>>2]|0)>0:0){m=0;g=512;while(1){l=c[n+4+(m*20|0)>>2]|0;if(l){j=g&65535;b[v>>1]=j&28655;g=c[X>>2]|0;c[W>>2]=g;c[G>>2]=125;c[H>>2]=126;c[I>>2]=0;c[J>>2]=X;k=l+24|0;i=g;ga=i+208|0;fa=(c[ga>>2]|0)+(c[k>>2]|0)|0;c[ga>>2]=fa;i=c[(c[i>>2]|0)+120>>2]|0;if((i|0)<(fa|0)){da=45;break}_j(W,l)|0;i=c[W>>2]|0;g=i+208|0;c[g>>2]=(c[g>>2]|0)-(c[k>>2]|0);g=b[v>>1]|0;ga=l+4|0;c[ga>>2]=c[ga>>2]|g&-32752&65535;g=(j&36880|g&65535)&65535;b[v>>1]=g;if((c[B>>2]|0)>0)break;if((c[i+36>>2]|0)>=1){g=2;break b}}m=m+1|0;if((m|0)>=(c[n>>2]|0)){da=49;break b}}if((da|0)==45){da=0;c[ca>>2]=i;cd(g,41637,ca)}g=2}else{g=512;da=49}while(0);c:do if((da|0)==49){da=0;n=c[o+8>>2]|0;d:do if((n|0)!=0?(c[n>>2]|0)>0:0){m=0;while(1){l=c[n+4+(m*20|0)>>2]|0;if(l){j=g&65535;b[v>>1]=j&28655;g=c[X>>2]|0;c[W>>2]=g;c[O>>2]=125;c[P>>2]=126;c[Q>>2]=0;c[R>>2]=X;k=l+24|0;i=g;fa=i+208|0;ga=(c[fa>>2]|0)+(c[k>>2]|0)|0;c[fa>>2]=ga;i=c[(c[i>>2]|0)+120>>2]|0;if((i|0)<(ga|0)){da=56;break}_j(W,l)|0;i=c[W>>2]|0;g=i+208|0;c[g>>2]=(c[g>>2]|0)-(c[k>>2]|0);g=b[v>>1]|0;ga=l+4|0;c[ga>>2]=c[ga>>2]|g&-32752&65535;g=(j&36880|g&65535)&65535;b[v>>1]=g;if((c[B>>2]|0)>0)break;if((c[i+36>>2]|0)>=1){g=2;break c}}m=m+1|0;if((m|0)>=(c[n>>2]|0))break d}if((da|0)==56){da=0;c[_>>2]=i;cd(g,41637,_)}g=2;break c}while(0);l=c[o+12>>2]|0;e:do if(l){j=g&65535;b[v>>1]=j&28655;g=c[X>>2]|0;c[W>>2]=g;c[K>>2]=125;c[L>>2]=126;c[M>>2]=0;c[N>>2]=X;k=l+24|0;i=g+208|0;ga=(c[i>>2]|0)+(c[k>>2]|0)|0;c[i>>2]=ga;i=c[(c[g>>2]|0)+120>>2]|0;do if((i|0)>=(ga|0)){_j(W,l)|0;i=c[W>>2]|0;g=i+208|0;c[g>>2]=(c[g>>2]|0)-(c[k>>2]|0);g=b[v>>1]|0;ga=l+4|0;c[ga>>2]=c[ga>>2]|g&-32752&65535;g=(j&36880|g&65535)&65535;b[v>>1]=g;if((c[B>>2]|0)>0)break;if((c[i+36>>2]|0)<1)break e;else{g=1;break c}}else{c[$>>2]=i;cd(g,41637,$)}while(0);g=1;break c}while(0);l=c[o+4>>2]|0;do if(!l)g=0;else{j=g&65535;b[v>>1]=j&28655;g=c[X>>2]|0;c[W>>2]=g;c[S>>2]=125;c[T>>2]=126;c[U>>2]=0;c[p>>2]=X;k=l+24|0;i=g+208|0;ga=(c[i>>2]|0)+(c[k>>2]|0)|0;c[i>>2]=ga;i=c[(c[g>>2]|0)+120>>2]|0;if((i|0)<(ga|0)){c[aa>>2]=i;cd(g,41637,aa);g=1;break}_j(W,l)|0;g=c[W>>2]|0;ga=g+208|0;c[ga>>2]=(c[ga>>2]|0)-(c[k>>2]|0);ga=b[v>>1]|0;fa=l+4|0;c[fa>>2]=c[fa>>2]|ga&-32752&65535;b[v>>1]=j&36880|ga&65535;if((c[B>>2]|0)>0){g=1;break}g=(c[g+36>>2]|0)>0&1}while(0)}while(0);b[v>>1]=0}c[u>>2]=0}h=c[h+36>>2]|0;if(!((g|0)==0&(h|0)!=0)){da=76;break}}if((da|0)==76){Ra=ea;return g|0}return 0}function mo(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!f)return;p=c[f>>2]|0;if((p|0)<=0)return;m=((g|0)!=0)<<31>>31;n=b+272|0;o=e+4|0;if(!g){h=0;do{a:do if((c[f+4+(h*20|0)+4>>2]|0)==0?(k=c[n>>2]|0,k|0):0){i=n;b=k;while(1){j=b+12|0;if(!(c[b>>2]|0))break;b=c[j>>2]|0;if(!b)break a;else i=j}c[i>>2]=c[j>>2];c[j>>2]=c[e>>2];c[e>>2]=b;c[o>>2]=(c[o>>2]|0)+1}while(0);h=h+1|0}while((h|0)<(p|0));return}j=0;do{k=c[f+4+(j*20|0)+4>>2]|0;if(k){i=a[k>>0]|0;b=(d[208+(i&255)>>0]|0)-(d[208+(d[g>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(b|0)!=0)){h=g;i=k;do{i=i+1|0;h=h+1|0;q=a[i>>0]|0;b=(d[208+(q&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(b|0)!=0))}}else b=m;b:do if((b|0)==0?(l=c[n>>2]|0,l|0):0){h=n;b=l;while(1){i=b+12|0;if((c[b>>2]|0)==(k|0))break;b=c[i>>2]|0;if(!b)break b;else h=i}c[h>>2]=c[i>>2];c[i>>2]=c[e>>2];c[e>>2]=b;c[o>>2]=(c[o>>2]|0)+1}while(0);j=j+1|0}while((j|0)<(p|0));return}function no(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!f)return;p=c[f+4>>2]|0;if((p|0)<=0)return;m=((g|0)!=0)<<31>>31;n=b+272|0;o=e+4|0;if(!g){h=0;do{a:do if((c[(c[f>>2]|0)+(h<<3)>>2]|0)==0?(k=c[n>>2]|0,k|0):0){i=n;b=k;while(1){j=b+12|0;if(!(c[b>>2]|0))break;b=c[j>>2]|0;if(!b)break a;else i=j}c[i>>2]=c[j>>2];c[j>>2]=c[e>>2];c[e>>2]=b;c[o>>2]=(c[o>>2]|0)+1}while(0);h=h+1|0}while((h|0)<(p|0));return}j=0;do{k=c[(c[f>>2]|0)+(j<<3)>>2]|0;if(k){i=a[k>>0]|0;b=(d[208+(i&255)>>0]|0)-(d[208+(d[g>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(b|0)!=0)){h=g;i=k;do{i=i+1|0;h=h+1|0;q=a[i>>0]|0;b=(d[208+(q&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(b|0)!=0))}}else b=m;b:do if((b|0)==0?(l=c[n>>2]|0,l|0):0){h=n;b=l;while(1){i=b+12|0;if((c[b>>2]|0)==(k|0))break;b=c[i>>2]|0;if(!b)break b;else h=i}c[h>>2]=c[i>>2];c[i>>2]=c[e>>2];c[e>>2]=b;c[o>>2]=(c[o>>2]|0)+1}while(0);j=j+1|0}while((j|0)<(p|0));return}function oo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[b+12>>2]|0;if(d|0)_j(a,d)|0;b=c[b+28>>2]|0;if(!b)return;do{$j(a,c[b+8>>2]|0)|0;d=c[b+16>>2]|0;if(d|0)_j(a,d)|0;d=c[b+20>>2]|0;a:do if(d|0?(h=c[d>>2]|0,(h|0)>0):0){f=h;d=d+4|0;while(1){e=c[d>>2]|0;if(e|0?_j(a,e)|0:0)break a;if((f|0)>1){f=f+-1|0;d=d+20|0}else break}}while(0);g=c[b+28>>2]|0;if(g|0){d=c[g>>2]|0;b:do if(d|0?(i=c[d>>2]|0,(i|0)>0):0){f=i;d=d+4|0;while(1){e=c[d>>2]|0;if(e|0?_j(a,e)|0:0)break b;if((f|0)>1){f=f+-1|0;d=d+20|0}else break}}while(0);d=c[g+8>>2]|0;c:do if(d|0?(j=c[d>>2]|0,(j|0)>0):0){f=j;d=d+4|0;while(1){e=c[d>>2]|0;if(e|0?_j(a,e)|0:0)break c;if((f|0)>1){f=f+-1|0;d=d+20|0}else break}}while(0);d=c[g+12>>2]|0;if(d|0)_j(a,d)|0;d=c[g+4>>2]|0;if(d|0)_j(a,d)|0}b=c[b+36>>2]|0}while((b|0)!=0);return}function po(b,f,g,h,i){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=Ra;Ra=Ra+16|0;j=z;if(!h)k=0;else k=(Eu(h)|0)&1073741823;if(!g)n=0;else n=(Eu(g)|0)&1073741823;x=c[(c[b>>2]|0)+32>>2]|0;c[j>>2]=h;y=dd(x,49613,j)|0;if(!y){y=7;Ra=z;return y|0}w=(Eu(y)|0)&1073741823;u=(i|0)==0;v=u?k:w;u=u?h:y;h=n+1+(G(c[f+4>>2]|0,w)|0)|0;i=((h|0)<0)<<31>>31;t=(x|0)==0;a:do if(t){s=Sv(h|0,i|0,-1,-1)|0;r=L()|0;if(!(r>>>0>0|(r|0)==0&s>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](h)|0;l=30;break}j=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;i=59064;k=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&k>>>0>0){s=c[14978]|0;r=Tv(k|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;q=L()|0;c[14768]=((q|0)<0|(q|0)==0&r>>>0<=s>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(j){k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;l=31}else l=31}else j=7}else j=7}else{if(c[x+272>>2]|0){if(a[x+81>>0]|0){j=7;break}}else{do if(!(0>>0|(0==(i|0)?(e[x+276>>1]|0)>>>0>>0:0))){k=x+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];l=x+284|0;c[l>>2]=(c[l>>2]|0)+1;l=30;break a}k=x+296|0;j=c[k>>2]|0;if(!j){j=x+292|0;break}else{c[k>>2]=c[j>>2];l=x+284|0;c[l>>2]=(c[l>>2]|0)+1;l=30;break a}}else j=x+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(x,h,i)|0;l=30}while(0);if((l|0)==30)if(!j)j=7;else l=31;do if((l|0)==31){gw(j+n|0,0,(h>>>0>n>>>0?h-n|0:0)|0)|0;ew(j|0,g|0,n|0)|0;l=c[f>>2]|0;b:do if(l|0){s=g;o=x+480|0;p=x+304|0;q=x+308|0;r=x+300|0;if(t)while(1){k=c[l+12>>2]|0;if(!k)m=l;else{h=k;i=l;do{i=(c[h+4>>2]|0)>>>0>(c[i+4>>2]|0)>>>0?h:i;h=c[h+12>>2]|0}while((h|0)!=0);m=i}if((l|0)==(m|0))k=f;else{if((k|0)==(m|0))k=l;else while(1){i=c[k+12>>2]|0;if((i|0)==(m|0))break;else k=i}k=k+12|0}c[k>>2]=c[m+12>>2];g=c[m+4>>2]|0;l=(a[880+(d[g>>0]|0)>>0]&70)==0;h=l?w:v;g=g-s|0;k=m+8|0;i=c[k>>2]|0;if((i|0)==(h|0))k=n;else{r=g+i|0;fw(j+(h+g)|0,j+r|0,n-r|0)|0;k=h-(c[k>>2]|0)+n|0;a[j+k>>0]=0}ew(j+g|0,(l?y:u)|0,h|0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{r=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}l=c[f>>2]|0;if(!l)break b;else n=k}while(1){k=c[l+12>>2]|0;if(!k)m=l;else{h=k;i=l;do{i=(c[h+4>>2]|0)>>>0>(c[i+4>>2]|0)>>>0?h:i;h=c[h+12>>2]|0}while((h|0)!=0);m=i}if((l|0)==(m|0))k=f;else{if((k|0)==(m|0))k=l;else while(1){i=c[k+12>>2]|0;if((i|0)==(m|0))break;else k=i}k=k+12|0}c[k>>2]=c[m+12>>2];g=c[m+4>>2]|0;l=(a[880+(d[g>>0]|0)>>0]&70)==0;h=l?w:v;g=g-s|0;k=m+8|0;i=c[k>>2]|0;if((i|0)==(h|0))k=n;else{i=g+i|0;fw(j+(h+g)|0,j+i|0,n-i|0)|0;k=h-(c[k>>2]|0)+n|0;a[j+k>>0]=0}ew(j+g|0,(l?y:u)|0,h|0)|0;do if(!(c[o>>2]|0)){n=m;if((c[p>>2]|0)>>>0<=n>>>0?(c[q>>2]|0)>>>0>n>>>0:0){c[m>>2]=c[r>>2];c[r>>2]=m;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{n=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}else Xd(x,m);while(0);l=c[f>>2]|0;if(!l)break;else n=k}}while(0);if((yc(c[b>>2]|0,j,-1,1,-1)|0)==18){c[b+20>>2]=18;yc(c[b>>2]|0,31223,-1,1,0)|0}if(!t){if(c[x+480>>2]|0){Xd(x,j);j=0;break}f=j;if((c[x+304>>2]|0)>>>0<=f>>>0?(c[x+308>>2]|0)>>>0>f>>>0:0){x=x+300|0;c[j>>2]=c[x>>2];c[x>>2]=j;j=0;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);j=0;break}else{x=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);j=0;break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);y=j;Ra=z;return y|0}else{x=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);y=j;Ra=z;return y|0}return 0}function qo(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=c[b>>2]|0;i=c[b+8>>2]|0;do if(i|0){j=i+20|0;e=c[j>>2]|0;if((e|0)<832317811)switch(e|0){case 770837923:{m=3;break}default:{}}else switch(e|0){case 832317811:{m=3;break}default:{}}if((m|0)==3)kc(i)|0;g=c[i>>2]|0;kb(g,i);h=c[i+4>>2]|0;f=i+8|0;e=c[f>>2]|0;if(!h)c[g+4>>2]=e;else{c[h+8>>2]=e;e=c[f>>2]|0}if(e|0)c[e+4>>2]=h;c[j>>2]=1443283912;c[i>>2]=0;if(g|0){if(c[g+480>>2]|0){Xd(g,i);break}m=i;if((c[g+304>>2]|0)>>>0<=m>>>0?(c[g+308>>2]|0)>>>0>m>>>0:0){m=g+300|0;c[i>>2]=c[m>>2];c[m>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{m=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);e=c[b+228>>2]|0;do if(e|0){if(o|0?c[o+480>>2]|0:0){Vi(o,e);break}l=e+32|0;m=(c[l>>2]|0)+-1|0;c[l>>2]=m;if(!m)Vi(o,e)}while(0);g=b+232|0;e=c[g>>2]|0;if(e|0){h=(o|0)==0;i=o+480|0;j=o+304|0;k=o+308|0;l=o+300|0;do{c[g>>2]=c[e+20>>2];f=c[e+36>>2]|0;if(f|0)ni(o,f);f=c[e+40>>2]|0;if(f|0)ri(o,f);f=c[e+16>>2]|0;do if(f|0){if(!h){if(c[i>>2]|0){Xd(o,f);break}m=f;if((c[j>>2]|0)>>>0<=m>>>0?(c[k>>2]|0)>>>0>m>>>0:0){c[f>>2]=c[l>>2];c[l>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{m=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);m=e+55|0;a:do if(((d[m>>0]|d[m+1>>0]<<8)&16)!=0?(n=c[e+32>>2]|0,(n|0)!=0):0){do if(!h){if(!(c[i>>2]|0)){f=n;if((c[j>>2]|0)>>>0>f>>>0)break;if((c[k>>2]|0)>>>0<=f>>>0)break;c[n>>2]=c[l>>2];c[l>>2]=n}else Xd(o,n);f=e;m=53;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);m=52;break}else{m=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);m=52;break}}else m=52;while(0);if((m|0)==52)if(h)m=58;else{f=e;m=53}do if((m|0)==53){m=0;if(c[i>>2]|0){Xd(o,f);break}p=e;if((c[j>>2]|0)>>>0<=p>>>0?(c[k>>2]|0)>>>0>p>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e}else{e=f;m=58}}while(0);do if((m|0)==58)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);e=c[g>>2]|0}while((e|0)!=0)}n=c[b+236>>2]|0;do if(n|0){Xi(o,c[n+28>>2]|0);e=c[n>>2]|0;do if(e|0){if(o|0){if(c[o+480>>2]|0){Xd(o,e);break}p=e;if((c[o+304>>2]|0)>>>0<=p>>>0?(c[o+308>>2]|0)>>>0>p>>>0:0){p=o+300|0;c[e>>2]=c[p>>2];c[p>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[n+4>>2]|0;do if(e|0){if(o|0){if(c[o+480>>2]|0){Xd(o,e);break}p=e;if((c[o+304>>2]|0)>>>0<=p>>>0?(c[o+308>>2]|0)>>>0>p>>>0:0){p=o+300|0;c[e>>2]=c[p>>2];c[p>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[n+12>>2]|0;if(e|0)ni(o,e);e=c[n+16>>2]|0;b:do if(e){l=e+4|0;f=c[e>>2]|0;c:do if((c[l>>2]|0)>0){h=o+480|0;i=o+304|0;j=o+308|0;k=o+300|0;if(!o){g=0;while(1){f=c[f+(g<<3)>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);g=g+1|0;f=c[e>>2]|0;if((g|0)>=(c[l>>2]|0))break c}}g=0;do{f=c[f+(g<<3)>>2]|0;do if(f|0){if(c[h>>2]|0){Xd(o,f);break}p=f;if((c[i>>2]|0)>>>0<=p>>>0?(c[j>>2]|0)>>>0>p>>>0:0){c[f>>2]=c[k>>2];c[k>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);g=g+1|0;f=c[e>>2]|0}while((g|0)<(c[l>>2]|0))}while(0);d:do if(f){do if(o|0){g=o+480|0;if(!(c[g>>2]|0)){h=f;if((c[o+304>>2]|0)>>>0>h>>>0)break;if((c[o+308>>2]|0)>>>0<=h>>>0)break;p=o+300|0;c[f>>2]=c[p>>2];c[p>>2]=f}else Xd(o,f);f=g;g=e;m=118;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);m=116;break}else{m=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);m=116;break}}else m=116;while(0);if((m|0)==116)if(o){f=o+480|0;g=e;m=118}do if((m|0)==118){if(!(c[f>>2]|0)){e=g;if((c[o+304>>2]|0)>>>0>e>>>0){e=g;break}if((c[o+308>>2]|0)>>>0<=e>>>0){e=g;break}p=o+300|0;c[g>>2]=c[p>>2];c[p>>2]=g}else Xd(o,g);e=n;m=129;break b}while(0);if(e)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);m=128;break}else{m=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);m=128;break}else m=128}else m=128;while(0);if((m|0)==128)if(!o)e=n;else{e=n;m=129}if((m|0)==129){if(c[o+480>>2]|0){Xd(o,e);break}p=n;if((c[o+304>>2]|0)>>>0<=p>>>0?(c[o+308>>2]|0)>>>0>p>>>0:0){p=o+300|0;c[n>>2]=c[p>>2];c[p>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[b+4>>2]|0;do if(e|0){if(o|0){if(c[o+480>>2]|0){Xd(o,e);break}p=e;if((c[o+304>>2]|0)>>>0<=p>>>0?(c[o+308>>2]|0)>>>0>p>>>0:0){p=o+300|0;c[e>>2]=c[p>>2];c[p>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);ro(o,c[b+272>>2]|0);f=c[b>>2]|0;e=c[b+64>>2]|0;do if(e|0){if(f|0){if(c[f+480>>2]|0){Xd(f,e);break}p=e;if((c[f+304>>2]|0)>>>0<=p>>>0?(c[f+308>>2]|0)>>>0>p>>>0:0){p=f+300|0;c[e>>2]=c[p>>2];c[p>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[b+68>>2]|0;if(e|0)ri(f,e);e=b+24|0;if(!f){a[e>>0]=0;return}p=f+272|0;c[p>>2]=(c[p>>2]|0)-(d[e>>0]|0);a[e>>0]=0;return}function ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;if(!b)return;e=a+480|0;f=a+304|0;g=a+308|0;h=a+300|0;if(!a){do{d=b;b=c[b+12>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{h=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}}while((b|0)!=0);return}do{d=b;b=c[b+12>>2]|0;do if(!(c[e>>2]|0)){i=d;if((c[f>>2]|0)>>>0<=i>>>0?(c[g>>2]|0)>>>0>i>>>0:0){c[d>>2]=c[h>>2];c[h>>2]=d;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{i=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}else Xd(a,d);while(0)}while((b|0)!=0);return}function so(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=c[b+24>>2]|0;if((a[d>>0]|0)!=-94)return 0;f=d+44|0;if((c[g+12>>2]|0)!=(c[f>>2]|0))return 0;d=(c[b>>2]|0)+272|0;b=c[d>>2]|0;if(!b)return 0;while(1){e=b+12|0;if((c[b>>2]|0)==(f|0))break;b=c[e>>2]|0;if(!b){h=8;break}else d=e}if((h|0)==8)return 0;c[d>>2]=c[e>>2];c[e>>2]=c[g>>2];c[g>>2]=b;h=g+4|0;c[h>>2]=(c[h>>2]|0)+1;return 0}function to(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+32|0;p=q;m=c[a+24>>2]|0;n=c[b+32>>2]|0;if(!n){p=2;Ra=q;return p|0}o=c[n>>2]|0;if((o|0)>0){g=m+12|0;h=m+4|0;f=0;do{a:do if((c[n+8+(f*72|0)+16>>2]|0)==(c[g>>2]|0)?(i=c[n+8+(f*72|0)+8>>2]|0,j=(c[a>>2]|0)+272|0,k=c[j>>2]|0,k|0):0){e=j;d=k;while(1){l=d+12|0;if((c[d>>2]|0)==(i|0))break;d=c[l>>2]|0;if(!d)break a;else e=l}c[e>>2]=c[l>>2];c[l>>2]=c[m>>2];c[m>>2]=d;c[h>>2]=(c[h>>2]|0)+1}while(0);f=f+1|0}while((f|0)<(o|0))}f=b+64|0;d=c[f>>2]|0;if(!d){p=0;Ra=q;return p|0}if((c[d>>2]|0)<=0){p=0;Ra=q;return p|0}b=p+4|0;e=0;do{o=c[d+8+(e<<4)+8>>2]|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;n=c[a>>2]|0;c[p>>2]=n;Kk(n,o,p);$j(a,o)|0;e=e+1|0;d=c[f>>2]|0}while((e|0)<(c[d>>2]|0));d=0;Ra=q;return d|0}function uo(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,8)|0;else d=c[d+16>>2]|0;if(!d)return;f=d;f=Sv(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;e=L()|0;a=d;c[a>>2]=f;c[a+4>>2]=e;return}function vo(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,8)|0;else d=c[d+16>>2]|0;if(!d){e=0;f=0}else{f=d;e=c[f>>2]|0;f=c[f+4>>2]|0}d=c[a>>2]|0;a=d+8|0;if(!(b[a>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[a>>1]=4;return}else{Pg(d,e,f);return}}function wo(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d)return;a=d+8|0;c[a>>2]=1;c[a+4>>2]=0;return}function xo(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d)return;e=d+8|0;h=e;g=d;f=c[g>>2]|0;g=c[g+4>>2]|0;if(!((c[h>>2]|0)==0&(c[h+4>>2]|0)==0)){f=Sv(f|0,g|0,1,0)|0;g=L()|0;h=d;c[h>>2]=f;c[h+4>>2]=g;h=e;c[h>>2]=0;c[h+4>>2]=0}d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216)){h=d;c[h>>2]=f;c[h+4>>2]=g;b[e>>1]=4;return}else{Pg(d,f,g);return}}function yo(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d)return;f=d+8|0;e=f;e=Sv(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;a=L()|0;c[f>>2]=e;c[f+4>>2]=a;f=d;if(!((c[f>>2]|0)==0&(c[f+4>>2]|0)==0))return;f=d;c[f>>2]=e;c[f+4>>2]=a;return}function zo(a){a=a|0;var d=0,e=0,f=0,g=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))e=Ic(a,24)|0;else e=c[d+16>>2]|0;if(!e)return;g=e;f=c[g>>2]|0;g=c[g+4>>2]|0;d=c[a>>2]|0;a=d+8|0;if(!(b[a>>1]&9216)){c[d>>2]=f;c[d+4>>2]=g;b[a>>1]=4}else Pg(d,f,g);g=e;c[g>>2]=0;c[g+4>>2]=0;return}function Ao(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d)return;a=d+16|0;d=a;d=Sv(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;e=L()|0;c[a>>2]=d;c[a+4>>2]=e;return}function Bo(a){a=a|0;var d=0,e=0,f=0.0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+16|0;j=l+8|0;k=l;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d){Ra=l;return}i=d+8|0;h=c[i>>2]|0;i=c[i+4>>2]|0;e=d;c[e>>2]=h;c[e+4>>2]=i;e=d+16|0;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>1){d=Sv(d|0,e|0,-1,-1)|0;f=(+(h>>>0)+4294967296.0*+(i|0))/(+(d>>>0)+4294967296.0*+(L()|0));d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216))b[e>>1]=1;else Dg(d);g[j>>3]=f;g[k>>3]=+g[j>>3];if(!(+g[j>>3]==+g[k>>3])){Ra=l;return}g[d>>3]=f;b[e>>1]=8;Ra=l;return}else{d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216))b[e>>1]=1;else Dg(d);g[j>>3]=0.0;g[k>>3]=+g[j>>3];if(!(+g[j>>3]==+g[k>>3])){Ra=l;return}g[d>>3]=0.0;b[e>>1]=8;Ra=l;return}}function Co(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;a=d+8|0;d=a;d=Sv(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;e=L()|0;c[a>>2]=d;c[a+4>>2]=e;return}function Do(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;if(!d)return;a=d+16|0;d=a;d=Sv(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;e=L()|0;c[a>>2]=d;c[a+4>>2]=e;return}function Eo(a){a=a|0;var d=0,e=0.0,f=0,h=0,i=0,j=0;i=Ra;Ra=Ra+16|0;f=i+8|0;h=i;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d){Ra=i;return}j=d+8|0;d=d+16|0;e=(+((c[j>>2]|0)>>>0)+4294967296.0*+(c[j+4>>2]|0))/(+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0));d=c[a>>2]|0;a=d+8|0;if(!(b[a>>1]&9216))b[a>>1]=1;else Dg(d);g[f>>3]=e;g[h>>3]=+g[f>>3];if(!(+g[f>>3]==+g[h>>3])){Ra=i;return}g[d>>3]=e;b[a>>1]=8;Ra=i;return}function Fo(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;a=d+8|0;d=a;d=Sv(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;e=L()|0;c[a>>2]=d;c[a+4>>2]=e;return}function Go(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0;f=c[d+8>>2]|0;if(!(b[f+8>>1]&8192))i=Ic(d,24)|0;else i=c[f+16>>2]|0;if(!i)return;f=i;do if((c[f>>2]|0)==0&(c[f+4>>2]|0)==0){f=c[h>>2]|0;h=e[f+8>>1]|0;do if(!(h&4)){if(h&8|0){j=Mg(+g[f>>3])|0;k=L()|0;l=13;break}if(!(h&18)){h=i+8|0;c[h>>2]=0;c[h+4>>2]=0;break}else{j=Ng(a[f+10>>0]|0,c[f+12>>2]|0,c[f+16>>2]|0)|0;k=L()|0;l=13;break}}else{k=f;j=c[k>>2]|0;k=c[k+4>>2]|0;l=13}while(0);if((l|0)==13?(l=i+8|0,c[l>>2]=j,c[l+4>>2]=k,!((k|0)<0|(k|0)==0&j>>>0<1)):0)break;c[d+20>>2]=1;yc(c[d>>2]|0,49664,-1,1,-1)|0}while(0);j=i;j=Sv(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;k=L()|0;l=i;c[l>>2]=j;c[l+4>>2]=k;return}function Ho(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))l=Ic(a,24)|0;else l=c[d+16>>2]|0;if(!l)return;e=l+8|0;d=c[e>>2]|0;e=c[e+4>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0))return;g=l;f=c[g>>2]|0;g=c[g+4>>2]|0;m=Wv(f|0,g|0,d|0,e|0)|0;L()|0;if(!m){f=l+16|0;f=Sv(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;g=L()|0;d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216)){a=d;c[a>>2]=f;c[a+4>>2]=g;b[e>>1]=4;return}else{Pg(d,f,g);return}}n=((m|0)<0)<<31>>31;h=Yv(d|0,e|0,m|0,n|0)|0;f=Tv(f|0,g|0,h|0,L()|0)|0;g=L()|0;h=m+1|0;i=((h|0)<0)<<31>>31;j=Yv(f|0,g|0,h|0,i|0)|0;k=L()|0;e=l+16|0;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)<(k|0)|(e|0)==(k|0)&d>>>0>>0){f=Wv(d|0,e|0,h|0,i|0)|0;f=Sv(f|0,L()|0,1,0)|0;g=L()|0;d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216)){a=d;c[a>>2]=f;c[a+4>>2]=g;b[e>>1]=4;return}else{Pg(d,f,g);return}}else{l=Sv(f|0,g|0,1,0)|0;g=L()|0;f=Tv(d|0,e|0,j|0,k|0)|0;f=Wv(f|0,L()|0,m|0,n|0)|0;f=Sv(l|0,g|0,f|0,L()|0)|0;g=L()|0;d=c[a>>2]|0;e=d+8|0;if(!(b[e>>1]&9216)){a=d;c[a>>2]=f;c[a+4>>2]=g;b[e>>1]=4;return}else{Pg(d,f,g);return}}}function Io(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,24)|0;else d=c[d+16>>2]|0;a=d+16|0;d=a;d=Sv(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;e=L()|0;c[a>>2]=d;c[a+4>>2]=e;return}function Jo(d,e,f){d=d|0;e=e|0;f=f|0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=Ic(d,8)|0;else e=c[e+16>>2]|0;if(!e)return;uc(c[e>>2]|0);f=tc(c[f>>2]|0)|0;c[e>>2]=f;if(f|0){d=e+4|0;c[d>>2]=(c[d>>2]|0)+1;return}e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;f=e+81|0;if(a[f>>0]|0)return;if(a[e+82>>0]|0)return;a[f>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}function Ko(a){a=a|0;var d=0,e=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,8)|0;else d=c[d+16>>2]|0;if(!d)return;e=c[d>>2]|0;if(!e)return;Dc(a,e);uc(c[d>>2]|0);c[d>>2]=0;return}function Lo(a){a=a|0;var d=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d)return;d=c[d>>2]|0;if(!d)return;Dc(a,d);return}function Mo(a,d,e){a=a|0;d=d|0;e=e|0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,8)|0;else d=c[d+16>>2]|0;if(!d)return;e=d+4|0;a=(c[e>>2]|0)+-1|0;c[e>>2]=a;if(a|0)return;uc(c[d>>2]|0);c[d>>2]=0;return}function No(f,h,i){f=f|0;h=h|0;i=i|0;var j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,u=0,v=0,w=0,x=0;x=Ra;Ra=Ra+16|0;o=x+8|0;p=x;h=c[f+8>>2]|0;if(!(b[h+8>>1]&8192))r=Ic(f,16)|0;else r=c[h+16>>2]|0;if(!r){Ra=x;return}q=i+4|0;m=c[q>>2]|0;n=m+8|0;l=b[n>>1]&31;h=d[816+l>>0]|0;if((l|16|0)==18){h=a[m+10>>0]|0;j=m+16|0;l=m+12|0;if(!(Lg(c[j>>2]|0,o,c[l>>2]|0,h)|0))h=b[n>>1]|0;else{if(!(Og(c[j>>2]|0,p,c[l>>2]|0,h)|0)){o=p;p=c[o+4>>2]|0;h=m;c[h>>2]=c[o>>2];c[h+4>>2]=p;h=4}else{g[m>>3]=+g[o>>3];h=8}h=b[n>>1]&-3|h;b[n>>1]=h}h=d[816+(h&31)>>0]|0}a:do switch((h&255)<<24>>24){case 1:{h=c[q>>2]|0;j=e[h+8>>1]|0;if(j&4|0){v=h;u=c[v+4>>2]|0;v=c[v>>2]|0;w=27;break a}if(j&8|0){v=Mg(+g[h>>3])|0;u=L()|0;w=27;break a}if(j&18|0){v=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;u=L()|0;w=27}break}case 2:{h=c[q>>2]|0;j=e[h+8>>1]|0;do if(!(j&8)){if(j&4|0){q=h;k=+((c[q>>2]|0)>>>0)+4294967296.0*+(c[q+4>>2]|0);break}if(!(j&18))k=0.0;else k=+Kg(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)}else k=+g[h>>3];while(0);h=~~k>>>0;j=+t(k)>=1.0?(k>0.0?~~+H(+s(k/4294967296.0),4294967295.0)>>>0:~~+F((k-+(~~k>>>0))/4294967296.0)>>>0):0;if(k==+(h>>>0)+4294967296.0*+(j|0)){u=j;v=h;w=27}break}default:{}}while(0);if((w|0)==27?!((u|0)<0|(u|0)==0&v>>>0<1):0){q=r;q=Sv(c[q>>2]|0,c[q+4>>2]|0,1,0)|0;w=L()|0;p=r;c[p>>2]=q;c[p+4>>2]=w;if(!((v|0)==(q|0)&(u|0)==(w|0))){Ra=x;return}w=tc(c[i>>2]|0)|0;c[r+8>>2]=w;if(w|0){Ra=x;return}h=c[f>>2]|0;j=h+8|0;if(!(b[j>>1]&9216))b[j>>1]=1;else{Dg(h);h=c[f>>2]|0}c[f+20>>2]=7;h=c[h+32>>2]|0;j=h+81|0;if(a[j>>0]|0){Ra=x;return}if(a[h+82>>0]|0){Ra=x;return}a[j>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;f=h+272|0;c[f>>2]=(c[f>>2]|0)+1;h=c[h+236>>2]|0;if(!h){Ra=x;return}c[h+12>>2]=7;Ra=x;return}c[f+20>>2]=1;yc(c[f>>2]|0,44153,-1,1,-1)|0;Ra=x;return}function Oo(a){a=a|0;var d=0,e=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,0)|0;else d=c[d+16>>2]|0;if(!d)return;d=d+8|0;e=c[d>>2]|0;if(!e)return;Dc(a,e);uc(c[d>>2]|0);c[d>>2]=0;return}function Po(a){a=a|0;return}function Qo(d,e,f){d=d|0;e=e|0;f=f|0;e=c[d+8>>2]|0;if(!(b[e+8>>1]&8192))e=Ic(d,16)|0;else e=c[e+16>>2]|0;if(!e)return;e=e+8|0;if(c[e>>2]|0)return;f=tc(c[f>>2]|0)|0;c[e>>2]=f;if(f|0)return;e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else{Dg(e);e=c[d>>2]|0}c[d+20>>2]=7;e=c[e+32>>2]|0;f=e+81|0;if(a[f>>0]|0)return;if(a[e+82>>0]|0)return;a[f>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;d=e+272|0;c[d>>2]=(c[d>>2]|0)+1;e=c[e+236>>2]|0;if(!e)return;c[e+12>>2]=7;return}function Ro(a){a=a|0;var d=0,e=0;d=c[a+8>>2]|0;if(!(b[d+8>>1]&8192))d=Ic(a,16)|0;else d=c[d+16>>2]|0;if(!d)return;d=d+8|0;e=c[d>>2]|0;if(!e)return;Dc(a,e);uc(c[d>>2]|0);c[d>>2]=0;return}function So(d,e,f){d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+64|0;p=r+56|0;q=r+48|0;o=r;if(_o(d,e,f,o)|0){Ra=r;return}l=o+40|0;do if(!(a[l>>0]|0)){n=o+42|0;if(a[n>>0]|0){e=c[o+8>>2]|0;if((e+4713|0)>>>0<=14712){i=c[o+12>>2]|0;j=c[o+16>>2]|0;k=e;m=6}}else{i=1;j=1;k=2e3;m=6}if((m|0)==6?(a[o+41>>0]|0)==0:0){e=(i|0)<3;f=k+(e<<31>>31)|0;h=(+(j+2+((f|0)/-100|0)+((f|0)/400|0)+((((e?i+12|0:i)*306001|0)+306001|0)/1e4|0)+(((f*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;f=~~h>>>0;e=+t(h)>=1.0?(h>0.0?~~+H(+s(h/4294967296.0),4294967295.0)>>>0:~~+F((h-+(~~h>>>0))/4294967296.0)>>>0):0;j=o;c[j>>2]=f;c[j+4>>2]=e;a[l>>0]=1;j=o+43|0;if(!(a[j>>0]|0))break;i=G(c[o+20>>2]|0,36e5)|0;i=((c[o+24>>2]|0)*6e4|0)+i|0;h=+g[o+32>>3]*1.0e3;f=Sv(~~h>>>0|0,(+t(h)>=1.0?(h>0.0?~~+H(+s(h/4294967296.0),4294967295.0)>>>0:~~+F((h-+(~~h>>>0))/4294967296.0)>>>0):0)|0,f|0,e|0)|0;f=Sv(f|0,L()|0,i|0,((i|0)<0)<<31>>31|0)|0;e=L()|0;i=o;c[i>>2]=f;c[i+4>>2]=e;i=o+44|0;if(!(a[i>>0]|0))break;m=(c[o+28>>2]|0)*6e4|0;f=Tv(f|0,e|0,m|0,((m|0)<0)<<31>>31|0)|0;e=L()|0;c[o>>2]=f;c[o+4>>2]=e;a[n>>0]=0;a[j>>0]=0;a[i>>0]=0;break}e=o;f=e+48|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));a[o+46>>0]=1;f=0;e=0}else{e=o;f=c[e>>2]|0;e=c[e+4>>2]|0}while(0);h=(+(f>>>0)+4294967296.0*+(e|0))/864.0e5;e=c[d>>2]|0;f=e+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else Dg(e);g[p>>3]=h;g[q>>3]=+g[p>>3];if(!(+g[p>>3]==+g[q>>3])){Ra=r;return}g[e>>3]=h;b[f>>1]=8;Ra=r;return}function To(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=Ra;Ra=Ra+176|0;j=k+152|0;h=k+104|0;i=k;if(_o(b,d,e,h)|0){Ra=k;return}g=h+42|0;a:do if(!(a[g>>0]|0)){do if(a[h+40>>0]|0){e=h;d=c[e>>2]|0;e=c[e+4>>2]|0;if(e>>>0>108096|(e|0)==108096&d>>>0>275971583){d=h;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a[h+46>>0]=1;e=0;f=0;d=0;break a}else{e=Sv(d|0,e|0,432e5,0)|0;e=Wv(e|0,L()|0,864e5,0)|0;L()|0;d=~~((+(e|0)+-1867216.25)/36524.25);d=e+1525+d+((d|0)/-4|0)|0;e=~~((+(d|0)+-122.1)/365.25);d=d-((((e&32767)*36525|0)>>>0)/100|0)|0;f=~~(+(d|0)/30.6001);d=d-~~(+(f|0)*30.6001)|0;c[h+16>>2]=d;f=((f|0)<14?-1:-13)+f|0;c[h+12>>2]=f;e=((f|0)>2?-4716:-4715)+e|0;c[h+8>>2]=e;break}}else{c[h+8>>2]=2e3;c[h+12>>2]=1;c[h+16>>2]=1;d=1;f=1;e=2e3}while(0);a[g>>0]=1}else{e=c[h+8>>2]|0;f=c[h+12>>2]|0;d=c[h+16>>2]|0}while(0);c[j>>2]=e;c[j+4>>2]=f;c[j+8>>2]=d;Cb(100,i,49994,j)|0;if((yc(c[b>>2]|0,i,-1,1,-1)|0)==18){c[b+20>>2]=18;yc(c[b>>2]|0,31223,-1,1,0)|0}Ra=k;return}function Uo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+176|0;o=p+152|0;m=p+104|0;n=p;if(_o(b,d,e,m)|0){Ra=p;return}l=m+43|0;if(!(a[l>>0]|0)){d=m+40|0;do if(!(a[d>>0]|0)){if(a[m+42>>0]|0){e=c[m+8>>2]|0;if((e+4713|0)>>>0<=14712){h=c[m+12>>2]|0;i=c[m+16>>2]|0;j=e;k=8}}else{h=1;i=1;j=2e3;k=8}if((k|0)==8?(a[m+41>>0]|0)==0:0){e=(h|0)<3;k=j+(e<<31>>31)|0;f=(+(i+2+((k|0)/-100|0)+((k|0)/400|0)+((((e?h+12|0:h)*306001|0)+306001|0)/1e4|0)+(((k*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;k=~~f>>>0;e=+t(f)>=1.0?(f>0.0?~~+H(+s(f/4294967296.0),4294967295.0)>>>0:~~+F((f-+(~~f>>>0))/4294967296.0)>>>0):0;j=m;c[j>>2]=k;c[j+4>>2]=e;a[d>>0]=1;d=k;break}d=m;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a[m+46>>0]=1;d=0;e=0}else{e=m;d=c[e>>2]|0;e=c[e+4>>2]|0}while(0);j=Sv(d|0,e|0,432e5,0)|0;j=Zv(j|0,L()|0,864e5,0)|0;L()|0;f=+(j|0)/1.0e3;j=~~f;e=(j|0)/3600|0;c[m+20>>2]=e;k=(G(e,-3600)|0)+j|0;d=(k|0)/60|0;c[m+24>>2]=d;f=f-+(j|0)+ +((G(d,-60)|0)+k|0);g[m+32>>3]=f;a[m+41>>0]=0;a[l>>0]=1}else{f=+g[m+32>>3];e=c[m+20>>2]|0;d=c[m+24>>2]|0}c[o>>2]=e;c[o+4>>2]=d;c[o+8>>2]=~~f;Cb(100,n,50009,o)|0;if((yc(c[b>>2]|0,n,-1,1,-1)|0)==18){c[b+20>>2]=18;yc(c[b>>2]|0,31223,-1,1,0)|0}Ra=p;return}function Vo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0;i=Ra;Ra=Ra+176|0;h=i+152|0;e=i+104|0;f=i;if(_o(a,b,d,e)|0){Ra=i;return}dp(e);l=c[e+12>>2]|0;k=c[e+16>>2]|0;j=c[e+20>>2]|0;b=c[e+24>>2]|0;d=~~+g[e+32>>3];c[h>>2]=c[e+8>>2];c[h+4>>2]=l;c[h+8>>2]=k;c[h+12>>2]=j;c[h+16>>2]=b;c[h+20>>2]=d;Cb(100,f,50024,h)|0;if((yc(c[a>>2]|0,f,-1,1,-1)|0)==18){c[a+20>>2]=18;yc(c[a>>2]|0,31223,-1,1,0)|0}Ra=i;return}function Wo(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0.0;$=Ra;Ra=Ra+240|0;Y=$+232|0;X=$+224|0;W=$+216|0;V=$+208|0;U=$+200|0;T=$+192|0;S=$+184|0;_=$+176|0;Z=$+168|0;R=$+160|0;Q=$+152|0;O=$+104|0;P=$;if(!f){Ra=$;return}i=c[h>>2]|0;if(!i){Ra=$;return}j=b[i+8>>1]|0;if((j&514)==514?(a[i+10>>0]|0)==1:0)N=c[i+16>>2]|0;else M=6;do if((M|0)==6)if(!(j&1)){N=Gg(i,1)|0;break}else{Ra=$;return}while(0);if(!N){Ra=$;return}if(_o(d,f+-1|0,h+4|0,O)|0){Ra=$;return}i=c[d>>2]|0;k=c[i+32>>2]|0;j=0;h=1;f=0;a:while(1){b:do switch(a[N+j>>0]|0){case 0:break a;case 37:{j=j+1|0;switch(a[N+j>>0]|0){case 37:case 119:break b;case 87:case 83:case 77:case 109:case 72:case 100:{h=Sv(h|0,f|0,1,0)|0;f=L()|0;break b}case 102:{h=Sv(h|0,f|0,8,0)|0;f=L()|0;break b}case 106:{h=Sv(h|0,f|0,3,0)|0;f=L()|0;break b}case 89:{h=Sv(h|0,f|0,8,0)|0;f=L()|0;break b}case 74:case 115:{h=Sv(h|0,f|0,50,0)|0;f=L()|0;break b}default:{M=86;break a}}}default:{}}while(0);h=Sv(h|0,f|0,1,0)|0;j=j+1|0;f=L()|0}if((M|0)==86){Ra=$;return}do if(f>>>0<0|(f|0)==0&h>>>0<100)i=P;else{K=c[k+108>>2]|0;J=((K|0)<0)<<31>>31;if(f>>>0>J>>>0|(f|0)==(J|0)&h>>>0>K>>>0){c[d+20>>2]=18;yc(i,31223,-1,1,0)|0;Ra=$;return}f=aw(0,h|0,32)|0;h=L()|0;c:do if(c[k+272>>2]|0){if(!(a[k+81>>0]|0))M=32}else{do if(!(h>>>0>0|((h|0)==0?f>>>0>(e[k+276>>1]|0)>>>0:0))){j=k+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];M=k+284|0;c[M>>2]=(c[M>>2]|0)+1;M=33;break c}j=k+296|0;i=c[j>>2]|0;if(!i){i=k+292|0;break}else{c[j>>2]=c[i>>2];M=k+284|0;c[M>>2]=(c[M>>2]|0)+1;M=33;break c}}else i=k+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;M=32}while(0);if((M|0)==32){i=_d(k,f,h)|0;M=33}if((M|0)==33){if(i|0)break;i=c[d>>2]|0}j=i+8|0;if(!(b[j>>1]&9216))b[j>>1]=1;else{Dg(i);i=c[d>>2]|0}c[d+20>>2]=7;i=c[i+32>>2]|0;j=i+81|0;if(a[j>>0]|0){Ra=$;return}if(a[i+82>>0]|0){Ra=$;return}a[j>>0]=1;if((c[i+180>>2]|0)>0)c[i+264>>2]=1;d=i+272|0;c[d>>2]=(c[d>>2]|0)+1;i=c[i+236>>2]|0;if(!i){Ra=$;return}c[i+12>>2]=7;Ra=$;return}while(0);h=O+40|0;K=O+42|0;do if(!(a[h>>0]|0)){if(a[K>>0]|0){j=c[O+8>>2]|0;if((j+4713|0)>>>0<=14712){l=c[O+12>>2]|0;m=c[O+16>>2]|0;n=j;M=47}}else{l=1;m=1;n=2e3;M=47}if((M|0)==47?(a[O+41>>0]|0)==0:0){f=(l|0)<3;j=n+(f<<31>>31)|0;o=(+(m+2+((j|0)/-100|0)+((j|0)/400|0)+((((f?l+12|0:l)*306001|0)+306001|0)/1e4|0)+(((j*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;j=~~o>>>0;f=+t(o)>=1.0?(o>0.0?~~+H(+s(o/4294967296.0),4294967295.0)>>>0:~~+F((o-+(~~o>>>0))/4294967296.0)>>>0):0;k=O;c[k>>2]=j;c[k+4>>2]=f;a[h>>0]=1;k=O+43|0;if(!(a[k>>0]|0))break;h=G(c[O+20>>2]|0,36e5)|0;h=((c[O+24>>2]|0)*6e4|0)+h|0;o=+g[O+32>>3]*1.0e3;j=Sv(~~o>>>0|0,(+t(o)>=1.0?(o>0.0?~~+H(+s(o/4294967296.0),4294967295.0)>>>0:~~+F((o-+(~~o>>>0))/4294967296.0)>>>0):0)|0,j|0,f|0)|0;j=Sv(j|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;f=L()|0;h=O;c[h>>2]=j;c[h+4>>2]=f;h=O+44|0;if(!(a[h>>0]|0))break;E=(c[O+28>>2]|0)*6e4|0;E=Tv(j|0,f|0,E|0,((E|0)<0)<<31>>31|0)|0;I=L()|0;J=O;c[J>>2]=E;c[J+4>>2]=I;a[K>>0]=0;a[k>>0]=0;a[h>>0]=0;break}j=O;f=j+48|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(f|0));a[O+46>>0]=1}while(0);dp(O);D=O+16|0;E=O+32|0;I=O+20|0;C=O+8|0;x=O+24|0;y=O+28|0;z=O+41|0;A=O+43|0;B=O+44|0;J=O+12|0;w=0;j=0;d:while(1){f=a[N+j>>0]|0;e:do switch(f<<24>>24){case 0:break d;case 37:{v=j+1|0;u=a[N+v>>0]|0;do switch(u<<24>>24|0){case 100:{c[Q>>2]=c[D>>2];Cb(3,i+w|0,50054,Q)|0;f=w+2|0;j=v;break e}case 102:{o=+g[E>>3];j=i+w|0;g[R>>3]=o>59.999?59.999:o;Cb(7,j,50059,R)|0;if(!j)j=0;else j=(Eu(j)|0)&1073741823;f=j+w|0;j=v;break e}case 72:{c[Z>>2]=c[I>>2];Cb(3,i+w|0,50054,Z)|0;f=w+2|0;j=v;break e}case 106:case 87:{r=O;q=c[r>>2]|0;r=c[r+4>>2]|0;j=c[C>>2]|0;h=c[I>>2]|0;l=c[x>>2]|0;m=c[y>>2]|0;o=+g[E>>3];f=a[z>>0]|0;n=a[A>>0]|0;p=a[B>>0]|0;if(a[K>>0]|0)if((j+4713|0)>>>0>14712){k=0;j=0}else M=63;else{j=2e3;M=63}if((M|0)==63){M=0;if(!(f<<24>>24)){k=j+-1|0;aa=(+(((k|0)/-100|0)+431+((k|0)/400|0)+(((k*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;k=~~aa>>>0;j=+t(aa)>=1.0?(aa>0.0?~~+H(+s(aa/4294967296.0),4294967295.0)>>>0:~~+F((aa-+(~~aa>>>0))/4294967296.0)>>>0):0;if(n<<24>>24){l=(l*6e4|0)+(G(h,36e5)|0)|0;aa=o*1.0e3;h=+t(aa)>=1.0?(aa>0.0?~~+H(+s(aa/4294967296.0),4294967295.0)>>>0:~~+F((aa-+(~~aa>>>0))/4294967296.0)>>>0):0;n=p<<24>>24==0;m=m*6e4|0;m=Tv(0,0,m|0,((m|0)<0)<<31>>31|0)|0;p=L()|0;l=Sv(~~aa>>>0|0,h|0,l|0,((l|0)<0)<<31>>31|0)|0;p=Sv(l|0,L()|0,(n?0:m)|0,(n?0:p)|0)|0;k=Sv(p|0,L()|0,k|0,j|0)|0;j=L()|0}}else{k=0;j=0}}f=Sv(q|0,r|0,432e5,0)|0;h=L()|0;j=Wv(Tv(f|0,h|0,k|0,j|0)|0,L()|0,864e5,0)|0;L()|0;if(u<<24>>24==87){f=Wv(f|0,h|0,864e5,0)|0;f=Zv(f|0,L()|0,7,0)|0;L()|0;c[_>>2]=(7-f+j|0)/7|0;Cb(3,i+w|0,50054,_)|0;f=w+2|0;j=v;break e}else{c[S>>2]=j+1;Cb(4,i+w|0,50066,S)|0;f=w+3|0;j=v;break e}}case 74:{j=i+w|0;u=O;g[T>>3]=(+((c[u>>2]|0)>>>0)+4294967296.0*+(c[u+4>>2]|0))/864.0e5;Cb(20,j,34086,T)|0;if(!j)j=0;else j=(Eu(j)|0)&1073741823;f=j+w|0;j=v;break e}case 109:{c[U>>2]=c[J>>2];Cb(3,i+w|0,50054,U)|0;f=w+2|0;j=v;break e}case 77:{c[V>>2]=c[x>>2];Cb(3,i+w|0,50054,V)|0;f=w+2|0;j=v;break e}case 115:{j=i+w|0;q=O;q=Sv(Wv(c[q>>2]|0,c[q+4>>2]|0,1e3,0)|0,L()|0,-413362496,-50)|0;r=L()|0;u=W;c[u>>2]=q;c[u+4>>2]=r;Cb(30,j,32524,W)|0;if(!j)j=0;else j=(Eu(j)|0)&1073741823;f=j+w|0;j=v;break e}case 83:{c[X>>2]=~~+g[E>>3];Cb(3,i+w|0,50054,X)|0;f=w+2|0;j=v;break e}case 119:{f=O;f=Zv(Wv(Sv(c[f>>2]|0,c[f+4>>2]|0,1296e5,0)|0,L()|0,864e5,0)|0,L()|0,7,0)|0;L()|0;a[i+w>>0]=f+48;f=w+1|0;j=v;break e}case 89:{j=i+w|0;c[Y>>2]=c[C>>2];Cb(5,j,50071,Y)|0;if(!j)j=0;else j=(Eu(j)|0)&1073741823;f=j+w|0;j=v;break e}default:{a[i+w>>0]=37;f=w+1|0;j=v;break e}}while(0)}default:{a[i+w>>0]=f;f=w+1|0}}while(0);w=f;j=j+1|0}a[i+w>>0]=0;if((yc(c[d>>2]|0,i,-1,1,(i|0)==(P|0)?-1:116)|0)!=18){Ra=$;return}c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;Ra=$;return}function Xo(a,b,c){a=a|0;b=b|0;c=c|0;Uo(a,0,0);return}function Yo(a,b,c){a=a|0;b=b|0;c=c|0;Vo(a,0,0);return}function Zo(a,b,c){a=a|0;b=b|0;c=c|0;To(a,0,0);return}function _o(e,f,h,i){e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;ya=Ra;Ra=Ra+96|0;p=ya+72|0;xa=ya+64|0;va=ya+56|0;wa=ya+8|0;q=ya;l=i;r=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(r|0));if(!f){l=(c[e+12>>2]|0)+56|0;j=l;k=c[j>>2]|0;j=c[j+4>>2]|0;do if((k|0)==0&(j|0)==0){j=c[c[(c[e>>2]|0)+32>>2]>>2]|0;if((c[j>>2]|0)>1?(n=c[j+72>>2]|0,(n|0)!=0):0)j=Xa[n&255](j,l)|0;else{j=Xa[c[j+64>>2]&255](j,xa)|0;u=+g[xa>>3]*864.0e5;e=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;xa=l;c[xa>>2]=~~u>>>0;c[xa+4>>2]=e}if(!j){j=l;k=c[j>>2]|0;j=c[j+4>>2]|0;break}xa=l;c[xa>>2]=0;c[xa+4>>2]=0;c[i>>2]=0;c[i+4>>2]=0;i=1;Ra=ya;return i|0}while(0);xa=i;c[xa>>2]=k;c[xa+4>>2]=j;if(!((j|0)>0|(j|0)==0&k>>>0>0)){i=1;Ra=ya;return i|0}a[i+40>>0]=1;i=0;Ra=ya;return i|0}k=c[h>>2]|0;j=b[k+8>>1]|0;if(((d[816+(j&31)>>0]|0)+-1|0)>>>0<2){j=j&65535;do if(!(j&8)){if(j&4|0){aa=k;m=+((c[aa>>2]|0)>>>0)+4294967296.0*+(c[aa+4>>2]|0);break}if(!(j&18))m=0.0;else m=+Kg(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)}else m=+g[k>>3];while(0);g[i+32>>3]=m;a[i+41>>0]=1;if(m>=0.0&m<5373484.5){u=m*864.0e5+.5;$=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;aa=i;c[aa>>2]=~~u>>>0;c[aa+4>>2]=$;a[i+40>>0]=1}}else{if(!k){i=1;Ra=ya;return i|0}if((j&514)==514?(a[k+10>>0]|0)==1:0)n=c[k+16>>2]|0;else v=25;do if((v|0)==25)if(!(j&1)){n=Gg(k,1)|0;break}else{i=1;Ra=ya;return i|0}while(0);if(!n){i=1;Ra=ya;return i|0}k=(a[n>>0]|0)==45;j=k?n+1|0:n;c[p>>2]=xa;c[p+4>>2]=va;c[p+8>>2]=wa;a:do if((bp(j,49795,p)|0)==3){j=j+10|0;while(1){aa=a[j>>0]|0;if(aa<<24>>24==84?1:(a[880+(aa&255)>>0]&1)!=0)j=j+1|0;else break}do if(ap(j,i)|0)if(!(a[j>>0]|0)){a[i+43>>0]=0;break}else{v=39;break a}while(0);a[i+40>>0]=0;a[i+42>>0]=1;aa=c[xa>>2]|0;c[i+8>>2]=k?0-aa|0:aa;c[i+12>>2]=c[va>>2];c[i+16>>2]=c[wa>>2];if(a[i+44>>0]|0)$o(i)}else v=39;while(0);b:do if((v|0)==39?ap(n,i)|0:0){aa=a[n>>0]|0;j=(d[208+(aa&255)>>0]|0)+-110|0;if(!(aa<<24>>24==0|(j|0)!=0)){k=49791;l=n;do{l=l+1|0;k=k+1|0;aa=a[l>>0]|0;j=(d[208+(aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(aa<<24>>24==0|(j|0)!=0))}c:do if(!j){j=c[e+12>>2]|0;if((a[(c[j+104>>2]|0)+((c[e+16>>2]|0)*20|0)>>0]|0)==64){c[e+20>>2]=1;yc(c[e>>2]|0,49827,-1,1,-1)|0;v=56;break}l=j+56|0;j=l;k=c[j>>2]|0;j=c[j+4>>2]|0;do if((k|0)==0&(j|0)==0){j=c[c[(c[e>>2]|0)+32>>2]>>2]|0;if((c[j>>2]|0)>1?(o=c[j+72>>2]|0,(o|0)!=0):0)j=Xa[o&255](j,l)|0;else{j=Xa[c[j+64>>2]&255](j,p)|0;u=+g[p>>3]*864.0e5;$=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;aa=l;c[aa>>2]=~~u>>>0;c[aa+4>>2]=$}if(!j){j=l;k=c[j>>2]|0;j=c[j+4>>2]|0;break}else{aa=l;c[aa>>2]=0;c[aa+4>>2]=0;aa=i;c[aa>>2]=0;c[aa+4>>2]=0;break c}}while(0);aa=i;c[aa>>2]=k;c[aa+4>>2]=j;if((j|0)>0|(j|0)==0&k>>>0>0){a[i+40>>0]=1;break b}}else v=56;while(0);if((v|0)==56?Lg(n,q,(Eu(n)|0)&1073741823,1)|0:0){m=+g[q>>3];g[i+32>>3]=m;a[i+41>>0]=1;if(!(m>=0.0&m<5373484.5))break;u=m*864.0e5+.5;$=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;aa=i;c[aa>>2]=~~u>>>0;c[aa+4>>2]=$;a[i+40>>0]=1;break}i=1;Ra=ya;return i|0}while(0)}d:do if((f|0)>1){x=e+12|0;y=e+16|0;z=i+41|0;A=i+40|0;B=i+42|0;C=e+20|0;D=i+43|0;E=i+44|0;I=i+32|0;J=i+24|0;K=i+20|0;M=i+45|0;N=i+8|0;O=i+12|0;P=i+16|0;j=i+46|0;Q=wa+40|0;R=wa+42|0;S=wa+41|0;T=wa+46|0;U=wa+8|0;V=wa+12|0;W=wa+16|0;X=wa+43|0;Y=wa+20|0;Z=wa+24|0;_=wa+32|0;$=wa+44|0;aa=wa+28|0;w=1;e:while(1){l=h+(w<<2)|0;n=c[l>>2]|0;k=b[n+8>>1]|0;if((k&514)==514?(a[n+10>>0]|0)==1:0){q=c[n+16>>2]|0;k=n}else if(!(k&1)){q=Gg(n,1)|0;k=c[l>>2]|0}else{q=0;k=n}l=b[k+8>>1]|0;if(!(l&2)){if(!(l&17))v=72}else if((a[k+10>>0]|0)!=1&(l&17)==0)v=72;if((v|0)==72){v=0;Fg(k,1)|0}if(!q){j=1;v=197;break}c[xa>>2]=1;k=a[q>>0]|0;l=k&255;f:do switch(a[208+l>>0]|0){case 108:{if(!(k<<24>>24==0|(l|32|0)!=108)){n=49894;k=q;do{k=k+1|0;n=n+1|0;v=a[k>>0]|0;l=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(l|0)!=0));if(l|0){v=193;break f}}if((a[(c[(c[x>>2]|0)+104>>2]|0)+((c[y>>2]|0)*20|0)>>0]|0)==64){c[C>>2]=1;yc(c[e>>2]|0,49827,-1,1,-1)|0;v=193;break f}else{$o(i);r=cp(i,e,xa)|0;q=L()|0;v=i;q=Sv(c[v>>2]|0,c[v+4>>2]|0,r|0,q|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r;a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;v=193;break f}}case 117:{o=k<<24>>24==0;if(!(o|(l|32|0)!=117)){k=49904;l=q;do{l=l+1|0;k=k+1|0;r=a[l>>0]|0;n=(d[208+(r&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(n|0)!=0));if(!n)v=87}else v=87;if((v|0)==87?(0,a[z>>0]|0):0){m=+g[I>>3]*1.0e3+21086676.0e7;g[va>>3]=m;if(!(m>=0.0&m<4642690608.0e5)){v=193;break f}a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;r=+t(m)>=1.0?(m>0.0?~~+H(+s(m/4294967296.0),4294967295.0)>>>0:~~+F((m-+(~~m>>>0))/4294967296.0)>>>0):0;v=i;c[v>>2]=~~m>>>0;c[v+4>>2]=r;a[A>>0]=1;a[z>>0]=0;c[xa>>2]=0;v=192;break f}if(!o){n=49914;k=q;do{k=k+1|0;n=n+1|0;v=a[k>>0]|0;l=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(l|0)!=0));if(l|0){v=193;break f}}if((a[(c[(c[x>>2]|0)+104>>2]|0)+((c[y>>2]|0)*20|0)>>0]|0)==64){c[C>>2]=1;yc(c[e>>2]|0,49827,-1,1,-1)|0;v=193;break f}if(a[M>>0]|0){c[xa>>2]=0;v=192;break f}$o(i);k=cp(i,e,xa)|0;l=L()|0;if(!(c[xa>>2]|0)){q=i;q=Tv(c[q>>2]|0,c[q+4>>2]|0,k|0,l|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r;a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;v=cp(i,e,xa)|0;v=Tv(k|0,l|0,v|0,L()|0)|0;r=L()|0;q=i;q=Sv(v|0,r|0,c[q>>2]|0,c[q+4>>2]|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r}a[M>>0]=1;v=193;break}case 119:{g:do if(!(k<<24>>24)){k=49918;v=105}else{o=q;k=49918;l=8;p=7;while(1){o=o+1|0;if(l>>>0<=1)break g;k=k+1|0;l=a[o>>0]|0;if(!(l<<24>>24)){v=105;break g}l=a[208+(l&255)>>0]|0;n=a[208+(d[k>>0]|0)>>0]|0;if(l<<24>>24!=n<<24>>24)break;else{l=p;p=p+-1|0}}sa=l&255;ba=n;v=108}while(0);if((v|0)==105){sa=0;ba=a[208+(d[k>>0]|0)>>0]|0;v=108}if((v|0)==108?(0,(sa|0)!=(ba&255|0)):0){v=193;break f}v=q+8|0;if((Lg(v,va,(Eu(v)|0)&1073741823,1)|0)!=0?(u=+g[va>>3],ua=~~u,u<7.0&((ua|0)>-1&u==+(ua|0))):0){dp(i);a[E>>0]=0;a[A>>0]=0;$o(i);q=i;r=c[q>>2]|0;q=c[q+4>>2]|0;n=Sv(r|0,q|0,1296e5,0)|0;n=Wv(n|0,L()|0,864e5,0)|0;n=Zv(n|0,L()|0,7,0)|0;v=L()|0;k=((ua|0)<0)<<31>>31;o=(v|0)>(k|0)|(v|0)==(k|0)&n>>>0>ua>>>0;l=Sv(n|0,v|0,-7,-1)|0;p=L()|0;v=Tv(ua|0,k|0,(o?l:n)|0,(o?p:v)|0)|0;v=Yv(v|0,L()|0,864e5,0)|0;q=Sv(v|0,L()|0,r|0,q|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r;a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;c[xa>>2]=0;v=192}else v=193;break}case 115:{h:do if(!(k<<24>>24)){k=49927;v=116}else{o=q;k=49927;l=9;p=8;while(1){o=o+1|0;if(l>>>0<=1)break h;k=k+1|0;l=a[o>>0]|0;if(!(l<<24>>24)){v=116;break h}l=a[208+(l&255)>>0]|0;n=a[208+(d[k>>0]|0)>>0]|0;if(l<<24>>24!=n<<24>>24)break;else{l=p;p=p+-1|0}}ta=l&255;ca=n;v=119}while(0);if((v|0)==116){ta=0;ca=a[208+(d[k>>0]|0)>>0]|0;v=119}if((v|0)==119?(v=0,(ta|0)!=(ca&255|0)):0){v=193;break f}l=a[B>>0]|0;do if(a[A>>0]|0){k=q+9|0;if(!(l<<24>>24)){n=i;l=c[n>>2]|0;n=c[n+4>>2]|0;if(n>>>0>108096|(n|0)==108096&l>>>0>275971583){l=i;r=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(r|0));a[j>>0]=1;l=k;break}else{v=Sv(l|0,n|0,432e5,0)|0;v=Wv(v|0,L()|0,864e5,0)|0;L()|0;q=~~((+(v|0)+-1867216.25)/36524.25);q=v+1525+q+((q|0)/-4|0)|0;v=~~((+(q|0)+-122.1)/365.25);q=q-((((v&32767)*36525|0)>>>0)/100|0)|0;r=~~(+(q|0)/30.6001);c[P>>2]=q-~~(+(r|0)*30.6001);r=((r|0)<14?-1:-13)+r|0;c[O>>2]=r;c[N>>2]=((r|0)>2?-4716:-4715)+v;v=129;break}}else l=k}else{if(l<<24>>24){l=q+9|0;break}if(!(a[D>>0]|0)){v=193;break f}c[N>>2]=2e3;c[O>>2]=1;c[P>>2]=1;k=q+9|0;v=129}while(0);if((v|0)==129){a[B>>0]=1;l=k}a[D>>0]=1;c[J>>2]=0;c[K>>2]=0;g[I>>3]=0.0;a[z>>0]=0;a[E>>0]=0;a[A>>0]=0;q=a[l>>0]|0;p=d[208+(q&255)>>0]|0;k=p+-109|0;q=q<<24>>24==0;if(!(q|(k|0)!=0)){n=49937;o=l;do{o=o+1|0;n=n+1|0;v=a[o>>0]|0;k=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(k|0)!=0))}if(!k){c[P>>2]=1;c[xa>>2]=0;v=192;break f}k=p+-121|0;if(!(q|(k|0)!=0)){n=49943;o=l;do{o=o+1|0;n=n+1|0;v=a[o>>0]|0;k=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(k|0)!=0))}if(!k){c[O>>2]=1;c[P>>2]=1;c[xa>>2]=0;v=192;break f}k=p+-100|0;if(!(q|(k|0)!=0)){n=49948;do{l=l+1|0;n=n+1|0;v=a[l>>0]|0;k=(d[208+(v&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(v<<24>>24==0|(k|0)!=0))}if(!k){c[xa>>2]=0;v=192}else v=193;break}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:case 45:case 43:{l=1;i:while(1){k=a[q+l>>0]|0;switch(k<<24>>24){case 58:case 0:break i;default:{}}if(a[880+(k&255)>>0]&1)break;l=l+1|0}k=q+l|0;if(!(Lg(q,va,l,1)|0)){v=149;break e}l=a[k>>0]|0;if(l<<24>>24==58){k=((d[q>>0]|0)+-48|0)>>>0<10?q:q+1|0;l=wa;r=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(r|0));if(!(ap(k,wa)|0)){do if(!(a[Q>>0]|0)){if(a[R>>0]|0){k=c[U>>2]|0;if((k+4713|0)>>>0<=14712){da=c[V>>2]|0;ea=c[W>>2]|0;fa=k;v=156}}else{da=1;ea=1;fa=2e3;v=156}if((v|0)==156?(0,(a[S>>0]|0)==0):0){l=(da|0)<3;k=fa+(l<<31>>31)|0;u=(+(ea+2+((k|0)/-100|0)+((k|0)/400|0)+((((l?da+12|0:da)*306001|0)+306001|0)/1e4|0)+(((k*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;k=~~u>>>0;l=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;v=wa;c[v>>2]=k;c[v+4>>2]=l;a[Q>>0]=1;if(!(a[X>>0]|0))break;v=G(c[Y>>2]|0,36e5)|0;v=((c[Z>>2]|0)*6e4|0)+v|0;u=+g[_>>3]*1.0e3;k=Sv(~~u>>>0|0,(+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0)|0,k|0,l|0)|0;k=Sv(k|0,L()|0,v|0,((v|0)<0)<<31>>31|0)|0;l=L()|0;v=wa;c[v>>2]=k;c[v+4>>2]=l;if(!(a[$>>0]|0))break;v=(c[aa>>2]|0)*6e4|0;k=Tv(k|0,l|0,v|0,((v|0)<0)<<31>>31|0)|0;l=L()|0;v=wa;c[v>>2]=k;c[v+4>>2]=l;a[R>>0]=0;a[X>>0]=0;a[$>>0]=0;break}l=wa;r=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(r|0));a[T>>0]=1;k=0;l=0}else{l=wa;k=c[l>>2]|0;l=c[l+4>>2]|0}while(0);r=Sv(k|0,l|0,-432e5,-1)|0;r=Zv(r|0,L()|0,864e5,0)|0;v=L()|0;p=(a[q>>0]|0)==45;o=Tv(0,0,r|0,v|0)|0;q=L()|0;r=p?o:r;q=p?q:v;v=wa;c[v>>2]=r;c[v+4>>2]=q;$o(i);a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;v=i;q=Sv(c[v>>2]|0,c[v+4>>2]|0,r|0,q|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r;c[xa>>2]=0}v=193;break f}if(a[880+(l&255)>>0]&1)do k=k+1|0;while((a[880+(d[k>>0]|0)>>0]&1)!=0);l=(Eu(k)|0)&1073741823;if((l+-3|0)>>>0>7)v=193;else{r=l+-1|0;l=(a[k+r>>0]|32)<<24>>24==115?r:l;$o(i);c[xa>>2]=1;m=+g[va>>3];u=m<0.0?-.5:.5;j:do if((l|0)>0){k:do switch(l|0){case 6:{v=d[k>>0]|0;l=208+v|0;do if((v|32|0)==115){v=d[k+1>>0]|0;l=208+v|0;if((v|32|0)==101){v=d[k+2>>0]|0;l=208+v|0;if((v|32|0)==99){l=d[k+3>>0]|0;if((l|32|0)!=111){ga=208+l|0;ha=111;v=170;break}l=d[k+4>>0]|0;if((l|32|0)!=110){ga=208+l|0;ha=110;v=170;break}l=d[k+5>>0]|0;if((l|32|0)==100)v=171;else{ga=208+l|0;ha=100;v=170}}else{ga=l;ha=99;v=170}}else{ga=l;ha=101;v=170}}else{ga=l;ha=115;v=170}while(0);if((v|0)==170?(v=0,(ha|0)==(d[ga>>0]|0)):0)v=171;if((v|0)==171?(v=0,m>-464269060800.0&m<464269060800.0):0){k=0;break k}r=d[k>>0]|0;l=208+r|0;do if((r|32|0)==109){r=d[k+1>>0]|0;l=208+r|0;if((r|32|0)==105){l=d[k+2>>0]|0;if((l|32|0)!=110){ia=208+l|0;ja=110;v=178;break}l=d[k+3>>0]|0;if((l|32|0)!=117){ia=208+l|0;ja=117;v=178;break}l=d[k+4>>0]|0;if((l|32|0)!=116){ia=208+l|0;ja=116;v=178;break}k=d[k+5>>0]|0;if((k|32|0)!=101){ia=208+k|0;ja=101;v=178}}else{ia=l;ja=105;v=178}}else{ia=l;ja=109;v=178}while(0);if((v|0)==178?(0,(ja|0)!=(d[ia>>0]|0)):0)break j;if(m>-7737817680.0&m<7737817680.0)k=1;else break j;break}case 4:{v=d[k>>0]|0;l=208+v|0;if((v|32|0)==104){v=d[k+1>>0]|0;l=208+v|0;if((v|32|0)==111){v=d[k+2>>0]|0;l=208+v|0;if((v|32|0)==117){l=d[k+3>>0]|0;if((l|32|0)==114)v=182;else{ka=208+l|0;la=114;v=181}}else{ka=l;la=117;v=181}}else{ka=l;la=111;v=181}}else{ka=l;la=104;v=181}if((v|0)==181?(v=0,(la|0)==(d[ka>>0]|0)):0)v=182;if((v|0)==182?(v=0,m>-128963628.0&m<128963628.0):0){k=2;break k}r=d[k>>0]|0;l=208+r|0;do if((r|32|0)==121){r=d[k+1>>0]|0;l=208+r|0;if((r|32|0)==101){l=d[k+2>>0]|0;if((l|32|0)!=97){qa=208+l|0;ra=97;v=190;break}k=d[k+3>>0]|0;if((k|32|0)!=114){qa=208+k|0;ra=114;v=190}}else{qa=l;ra=101;v=190}}else{qa=l;ra=121;v=190}while(0);if((v|0)==190?(0,(ra|0)!=(d[qa>>0]|0)):0)break j;if(m>-14713.0&m<14713.0)k=5;else break j;break}case 3:{r=d[k>>0]|0;l=208+r|0;if((r|32|0)==100){r=d[k+1>>0]|0;l=208+r|0;if((r|32|0)==97){k=d[k+2>>0]|0;if((k|32|0)!=121){ma=208+k|0;na=121;v=184}}else{ma=l;na=97;v=184}}else{ma=l;na=100;v=184}if((v|0)==184?(0,(na|0)!=(d[ma>>0]|0)):0)break j;if(m>-5373485.0&m<5373485.0)k=3;else break j;break}case 5:{r=d[k>>0]|0;l=208+r|0;do if((r|32|0)==109){r=d[k+1>>0]|0;l=208+r|0;if((r|32|0)==111){r=d[k+2>>0]|0;l=208+r|0;if((r|32|0)==110){l=d[k+3>>0]|0;if((l|32|0)!=116){oa=208+l|0;pa=116;v=187;break}k=d[k+4>>0]|0;if((k|32|0)!=104){oa=208+k|0;pa=104;v=187}}else{oa=l;pa=110;v=187}}else{oa=l;pa=111;v=187}}else{oa=l;pa=109;v=187}while(0);if((v|0)==187?(0,(pa|0)!=(d[oa>>0]|0)):0)break j;if(m>-176546.0&m<176546.0)k=4;else break j;break}default:break j}while(0);switch(a[22816+(k*24|0)>>0]|0){case 1:{dp(i);v=~~m;r=(c[O>>2]|0)+v|0;q=(((r|0)>0?-1:-12)+r|0)/12|0;c[N>>2]=q+(c[N>>2]|0);r=(G(q,-12)|0)+r|0;c[O>>2]=r;a[A>>0]=0;m=m-+(v|0);g[va>>3]=m;break}case 2:{v=~~m;dp(i);c[N>>2]=(c[N>>2]|0)+v;a[A>>0]=0;m=m-+(v|0);g[va>>3]=m;break}default:{}}$o(i);u=u+m*+g[22816+(k*24|0)+16>>3];q=+t(u)>=1.0?(u>0.0?~~+H(+s(u/4294967296.0),4294967295.0)>>>0:~~+F((u-+(~~u>>>0))/4294967296.0)>>>0):0;r=i;q=Sv(c[r>>2]|0,c[r+4>>2]|0,~~u>>>0|0,q|0)|0;r=L()|0;v=i;c[v>>2]=q;c[v+4>>2]=r;c[xa>>2]=0}while(0);a[B>>0]=0;a[D>>0]=0;a[E>>0]=0;v=193}break}default:v=193}while(0);if((v|0)==192)v=0;else if((v|0)==193?(v=0,c[xa>>2]|0):0){j=1;v=197;break}w=w+1|0;if((w|0)>=(f|0))break d}if((v|0)==149){i=1;Ra=ya;return i|0}else if((v|0)==197){Ra=ya;return j|0}}else j=i+46|0;while(0);$o(i);if(!(a[j>>0]|0)){xa=c[i+4>>2]|0;Ra=ya;return (xa>>>0>108096|(xa|0)==108096&(c[i>>2]|0)>>>0>275971583)&1|0}else{i=1;Ra=ya;return i|0}return 0}function $o(b){b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0;j=b+40|0;if(a[j>>0]|0)return;k=b+42|0;if(a[k>>0]|0){h=c[b+8>>2]|0;if((h+4713|0)>>>0<=14712){d=c[b+12>>2]|0;e=c[b+16>>2]|0;f=h;i=4}}else{d=1;e=1;f=2e3;i=4}if((i|0)==4?(a[b+41>>0]|0)==0:0){i=(d|0)<3;h=f+(i<<31>>31)|0;l=(+(e+2+((h|0)/-100|0)+((h|0)/400|0)+((((i?d+12|0:d)*306001|0)+306001|0)/1e4|0)+(((h*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;d=~~l>>>0;e=+t(l)>=1.0?(l>0.0?~~+H(+s(l/4294967296.0),4294967295.0)>>>0:~~+F((l-+(~~l>>>0))/4294967296.0)>>>0):0;h=b;c[h>>2]=d;c[h+4>>2]=e;a[j>>0]=1;h=b+43|0;if(!(a[h>>0]|0))return;f=G(c[b+20>>2]|0,36e5)|0;f=((c[b+24>>2]|0)*6e4|0)+f|0;l=+g[b+32>>3]*1.0e3;d=Sv(~~l>>>0|0,(+t(l)>=1.0?(l>0.0?~~+H(+s(l/4294967296.0),4294967295.0)>>>0:~~+F((l-+(~~l>>>0))/4294967296.0)>>>0):0)|0,d|0,e|0)|0;d=Sv(d|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;e=L()|0;f=b;c[f>>2]=d;c[f+4>>2]=e;f=b+44|0;if(!(a[f>>0]|0))return;i=(c[b+28>>2]|0)*6e4|0;i=Tv(d|0,e|0,i|0,((i|0)<0)<<31>>31|0)|0;j=L()|0;c[b>>2]=i;c[b+4>>2]=j;a[k>>0]=0;a[h>>0]=0;a[f>>0]=0;return}d=b;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a[b+46>>0]=1;return}function ap(b,e){b=b|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+48|0;r=t+16|0;h=t+8|0;q=t;p=t+36|0;m=t+32|0;n=t+28|0;o=t+24|0;c[q>>2]=m;c[q+4>>2]=n;if((bp(b,49807,q)|0)!=2){e=1;Ra=t;return e|0}l=b+5|0;if((a[l>>0]|0)==58){c[h>>2]=o;if((bp(b+6|0,49815,h)|0)!=1){e=1;Ra=t;return e|0}h=b+8|0;if((a[h>>0]|0)==46?(i=b+9|0,f=a[i>>0]|0,((f&255)+-48|0)>>>0<10):0){k=0.0;j=1.0;do{k=k*10.0+ +(f<<24>>24)+-48.0;j=j*10.0;i=i+1|0;f=a[i>>0]|0}while(((f&255)+-48|0)>>>0<10);j=k/j}else{j=0.0;i=h}}else{c[o>>2]=0;j=0.0;i=l}a[e+40>>0]=0;a[e+41>>0]=0;a[e+43>>0]=1;c[e+20>>2]=c[m>>2];c[e+24>>2]=c[n>>2];g[e+32>>3]=j+ +(c[o>>2]|0);while(1){f=i+1|0;if(!(a[880+(d[i>>0]|0)>>0]&1))break;else i=f}b=e+28|0;c[b>>2]=0;h=a[i>>0]|0;switch(h<<24>>24){case 45:{h=-1;s=15;break}case 43:{h=1;s=15;break}default:if((h|32)<<24>>24==122){i=0;s=18}else f=0}do if((s|0)==15){c[r>>2]=q;c[r+4>>2]=p;if((bp(f,49819,r)|0)==2){s=G(((c[q>>2]|0)*60|0)+(c[p>>2]|0)|0,h)|0;c[b>>2]=s;f=i+6|0;i=s;s=18;break}e=1;Ra=t;return e|0}while(0);if((s|0)==18){while(1)if(!(a[880+(d[f>>0]|0)>>0]&1))break;else f=f+1|0;a[e+45>>0]=1;h=a[f>>0]|0;f=i}if(h<<24>>24){e=1;Ra=t;return e|0}a[e+44>>0]=(f|0)!=0&1;e=0;Ra=t;return e|0}function bp(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;n=o;c[n>>2]=g;g=e;e=0;a:while(1){h=(d[f>>0]|0)+208&255;m=d[f+1>>0]|0;k=b[31130+((a[f+2>>0]|0)+-97<<1)>>1]|0;l=a[f+3>>0]|0;if(!(h<<24>>24))h=0;else{j=0;i=h;while(1){i=i+-1<<24>>24;h=a[g>>0]|0;if(((h&255)+-48|0)>>>0>=10){g=11;break a}h=(j*10|0)+-48+(h<<24>>24)|0;g=g+1|0;if(!(i<<24>>24))break;else j=h}}if((h|0)<((m<<24)+-805306368>>24|0)|(h|0)>(k&65535|0)){g=11;break}if(!(l<<24>>24)){g=8;break}if(l<<24>>24!=(a[g>>0]|0)){g=11;break}l=(c[n>>2]|0)+(4-1)&~(4-1);m=c[l>>2]|0;c[n>>2]=l+4;c[m>>2]=h;g=g+1|0;f=f+4|0;e=e+1|0}if((g|0)==8){l=(c[n>>2]|0)+(4-1)&~(4-1);m=c[l>>2]|0;c[n>>2]=l+4;c[m>>2]=h;n=e+1|0;Ra=o;return n|0}else if((g|0)==11){Ra=o;return e|0}return 0}function cp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;o=Ra;Ra=Ra+64|0;m=o;n=o+48|0;h=m;f=h+48|0;do{c[h>>2]=c[b>>2];h=h+4|0;b=b+4|0}while((h|0)<(f|0));dp(m);b=m+8|0;f=c[b>>2]|0;if((f+-1971|0)>>>0>66){c[b>>2]=2e3;c[m+12>>2]=1;c[m+16>>2]=1;c[m+20>>2]=0;c[m+24>>2]=0;g[m+32>>3]=0.0;f=2e3;j=0;k=0}else{j=m+32|0;p=+(~~(+g[j>>3]+.5)|0);g[j>>3]=p;p=p*1.0e3;j=~~p>>>0;k=+t(p)>=1.0?(p>0.0?~~+H(+s(p/4294967296.0),4294967295.0)>>>0:~~+F((p-+(~~p>>>0))/4294967296.0)>>>0):0}c[m+28>>2]=0;i=m+40|0;a[i>>0]=0;l=m+42|0;h=(a[l>>0]|0)==0;b=h?1:c[m+12>>2]|0;if(!(a[m+41>>0]|0)){q=(b|0)<3;f=(h?2e3:f)+(q<<31>>31)|0;p=(+((h?3:(c[m+16>>2]|0)+2|0)+((f|0)/-100|0)+((f|0)/400|0)+((((q?b+12|0:b)*306001|0)+306001|0)/1e4|0)+(((f*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;f=~~p>>>0;b=+t(p)>=1.0?(p>0.0?~~+H(+s(p/4294967296.0),4294967295.0)>>>0:~~+F((p-+(~~p>>>0))/4294967296.0)>>>0):0;h=m;c[h>>2]=f;c[h+4>>2]=b;a[i>>0]=1;i=m+43|0;if(a[i>>0]|0){h=G(c[m+20>>2]|0,36e5)|0;h=((c[m+24>>2]|0)*6e4|0)+h|0;f=Sv(j|0,k|0,f|0,b|0)|0;f=Sv(f|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;b=L()|0;h=m;c[h>>2]=f;c[h+4>>2]=b;h=m+44|0;if(!(a[h>>0]|0))j=m;else{j=m;c[j>>2]=f;c[j+4>>2]=b;a[l>>0]=0;a[i>>0]=0;a[h>>0]=0;j=m}}else j=m}else{h=m;f=h+48|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(f|0));a[m+46>>0]=1;j=m;f=0;b=0}i=Wv(f|0,b|0,1e3,0)|0;L()|0;c[n>>2]=i+-413362496;i=Ha(n|0)|0;if((i|0)==0|(c[7390]|0)!=0){c[d+20>>2]=1;yc(c[d>>2]|0,49952,-1,1,-1)|0;c[e>>2]=1;e=0;q=0;K(e|0);Ra=o;return q|0}b=c[i+16>>2]|0;f=c[i+20>>2]|0;h=b+1|0;if((f+6613|0)>>>0>14712){b=0;f=0}else{d=c[i>>2]|0;d=Yv(d|0,((d|0)<0)<<31>>31|0,1e3,0)|0;q=L()|0;n=G(c[i+8>>2]|0,36e5)|0;m=(h|0)<3;f=f+1900+(m<<31>>31)|0;p=(+(((f|0)/-100|0)+((c[i+12>>2]|0)+2)+((f|0)/400|0)+((((m?b+13|0:h)*306001|0)+306001|0)/1e4|0)+(((f*36525|0)+172251900|0)/100|0)|0)+-1524.5)*864.0e5;b=+t(p)>=1.0?(p>0.0?~~+H(+s(p/4294967296.0),4294967295.0)>>>0:~~+F((p-+(~~p>>>0))/4294967296.0)>>>0):0;f=((c[i+4>>2]|0)*6e4|0)+n|0;f=Sv(d|0,q|0,f|0,((f|0)<0)<<31>>31|0)|0;b=Sv(f|0,L()|0,~~p>>>0|0,b|0)|0;f=L()|0}c[e>>2]=0;q=j;q=Tv(b|0,f|0,c[q>>2]|0,c[q+4>>2]|0)|0;e=L()|0;K(e|0);Ra=o;return q|0}function dp(b){b=b|0;var d=0,e=0,f=0,h=0,i=0.0;d=b+42|0;if(!(a[d>>0]|0)){do if(a[b+40>>0]|0){f=b;e=c[f>>2]|0;f=c[f+4>>2]|0;if(f>>>0>108096|(f|0)==108096&e>>>0>275971583){d=b;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=b+46|0;break}else{f=Sv(e|0,f|0,432e5,0)|0;f=Wv(f|0,L()|0,864e5,0)|0;L()|0;h=~~((+(f|0)+-1867216.25)/36524.25);h=f+1525+h+((h|0)/-4|0)|0;f=~~((+(h|0)+-122.1)/365.25);h=h-((((f&32767)*36525|0)>>>0)/100|0)|0;e=~~(+(h|0)/30.6001);c[b+16>>2]=h-~~(+(e|0)*30.6001);e=((e|0)<14?-1:-13)+e|0;c[b+12>>2]=e;c[b+8>>2]=((e|0)>2?-4716:-4715)+f;break}}else{c[b+8>>2]=2e3;c[b+12>>2]=1;c[b+16>>2]=1}while(0);a[d>>0]=1}d=b+43|0;if(a[d>>0]|0)return;$o(b);e=b;e=Sv(c[e>>2]|0,c[e+4>>2]|0,432e5,0)|0;e=Zv(e|0,L()|0,864e5,0)|0;L()|0;i=+(e|0)/1.0e3;e=~~i;h=(e|0)/3600|0;c[b+20>>2]=h;h=(G(h,-3600)|0)+e|0;f=(h|0)/60|0;c[b+24>>2]=f;i=i-+(e|0)+ +((G(f,-60)|0)+h|0);g[b+32>>3]=i;a[b+41>>0]=0;a[d>>0]=1;return}function ep(a){a=a|0;var b=0,d=0,e=0;e=Ra;Ra=Ra+16|0;d=e;b=lu(a+8|0)|0;if(!b){c[d>>2]=a;Db(7,50076,d);d=0;Ra=e;return d|0}else{d=b;c[d>>2]=a;c[d+4>>2]=((a|0)<0)<<31>>31;d=b+8|0;Ra=e;return d|0}return 0}function fp(a){a=a|0;mu(a+-8|0);return}function gp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=Ra;Ra=Ra+16|0;e=f;a=a+-8|0;d=ou(a,b+8|0)|0;if(!d){c[e>>2]=c[a>>2];c[e+4>>2]=b;Db(7,50114,e);e=0;Ra=f;return e|0}else{e=d;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;e=d+8|0;Ra=f;return e|0}return 0}function hp(a){a=a|0;return c[a+-8>>2]|0}function ip(a){a=a|0;return a+7&-8|0}function jp(a){a=a|0;return 0}function kp(a){a=a|0;return}function lp(a){a=a|0;var b=0;a=59188;b=a+100|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));a=(c[7374]|0)==0;c[14811]=a&1;b=c[7376]|0;c[14812]=a&(b|0)!=0?b:0;c[14800]=10;c[14810]=1;return 0}function mp(a){a=a|0;var b=0;a=59188;b=a+100|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function np(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=((c[14811]|0)*52|0)+68|0;h=Sv(i|0,((i|0)<0)<<31>>31|0,-1,-1)|0;g=L()|0;if(g>>>0>0|(g|0)==0&h>>>0>2147483390){e=0;return e|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](i)|0;if(!f){e=0;return e|0}}else{f=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){j=c[14978]|0;h=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=j>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f){j=0;return j|0}g=Wa[c[29352>>2]&127](f)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}gw(f|0,0,i|0)|0;if(!(c[14811]|0))g=59188;else{c[f+80>>2]=10;g=f+68|0}h=g+20|0;i=g+34|0;if(!(b[i>>1]|0)){b[i>>1]=1;c[g+44>>2]=h;c[g+48>>2]=h}c[f>>2]=g;c[f+8>>2]=a;c[f+12>>2]=d;c[f+16>>2]=a+32+d;j=(e|0)!=0;c[f+20>>2]=j&1;wp(f);if(j){c[f+24>>2]=10;e=g+8|0;j=c[e>>2]|0;c[e>>2]=j+10;c[g+12>>2]=-10-j+10+(c[g+4>>2]|0);c[f+4>>2]=g+16}else c[f+4>>2]=f+40;if(c[f+52>>2]|0){j=f;return j|0}up(f);j=0;return j|0}function op(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!(c[a+20>>2]|0))return;e=c[a>>2]|0;d=a+28|0;g=e+4|0;f=(c[g>>2]|0)+(b-(c[d>>2]|0))|0;c[g>>2]=f;c[e+12>>2]=f+10-(c[e+8>>2]|0);c[d>>2]=b;c[a+32>>2]=((b*9|0)>>>0)/10|0;xp(a);return}function pp(a){a=a|0;return c[a+48>>2]|0}function qp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[(c[a+56>>2]|0)+(((b>>>0)%((c[a+52>>2]|0)>>>0)|0)<<2)>>2]|0;a:do if(e|0){f=e;while(1){if((c[f+8>>2]|0)==(b|0))break;e=c[f+16>>2]|0;if(!e)break a;else f=e}e=f+24|0;a=c[e>>2]|0;if(!a){d=f;return d|0}d=c[f+28>>2]|0;c[d+24>>2]=a;c[(c[e>>2]|0)+28>>2]=d;c[e>>2]=0;d=(c[f+20>>2]|0)+44|0;c[d>>2]=(c[d>>2]|0)+-1;d=f;return d|0}while(0);if(!d){d=0;return d|0}d=Ap(a,b,d)|0;return d|0}function rp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a>>2]|0;if((d|0)==0?(c[e+16>>2]|0)>>>0<=(c[e+4>>2]|0)>>>0:0){d=e+44|0;c[b+28>>2]=e+20;e=c[d>>2]|0;c[b+24>>2]=e;c[e+28>>2]=b;c[d>>2]=b;b=a+44|0;c[b>>2]=(c[b>>2]|0)+1;return}d=c[b+20>>2]|0;a=(c[d+56>>2]|0)+((((c[b+8>>2]|0)>>>0)%((c[d+52>>2]|0)>>>0)|0)<<2)|0;while(1){f=c[a>>2]|0;e=f+16|0;if((f|0)==(b|0))break;else a=e}c[a>>2]=c[e>>2];f=d+48|0;c[f>>2]=(c[f>>2]|0)+-1;zp(b);return}function sp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=c[a+52>>2]|0;h=a+56|0;d=(c[h>>2]|0)+(((d>>>0)%(g>>>0)|0)<<2)|0;while(1){f=c[d>>2]|0;if((f|0)==(b|0))break;else d=f+16|0}f=b+16|0;c[d>>2]=c[f>>2];c[b+8>>2]=e;d=(c[h>>2]|0)+(((e>>>0)%(g>>>0)|0)<<2)|0;c[f>>2]=c[d>>2];c[d>>2]=b;d=a+36|0;if((c[d>>2]|0)>>>0>=e>>>0)return;c[d>>2]=e;return}function tp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=a+36|0;d=c[k>>2]|0;if(d>>>0>>0)return;l=a+52|0;e=c[l>>2]|0;if((d-b|0)>>>0>>0){f=(b>>>0)%(e>>>0)|0;i=(d>>>0)%(e>>>0)|0}else{i=e>>>1;f=i;i=i+-1|0}j=a+56|0;h=a+48|0;while(1){d=(c[j>>2]|0)+(f<<2)|0;e=c[d>>2]|0;if(e|0)do{do if((c[e+8>>2]|0)>>>0>=b>>>0){c[h>>2]=(c[h>>2]|0)+-1;c[d>>2]=c[e+16>>2];a=e+24|0;g=c[a>>2]|0;if(!g){zp(e);break}else{m=c[e+28>>2]|0;c[m+24>>2]=g;c[(c[a>>2]|0)+28>>2]=m;c[a>>2]=0;g=(c[e+20>>2]|0)+44|0;c[g>>2]=(c[g>>2]|0)+-1;zp(e);break}}else d=e+16|0;while(0);e=c[d>>2]|0}while((e|0)!=0);if((f|0)==(i|0))break;f=((f+1|0)>>>0)%((c[l>>2]|0)>>>0)|0}c[k>>2]=b+-1;return}function up(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[a>>2]|0;k=a+48|0;a:do if(c[k>>2]|0){b=c[a+36>>2]|0;l=a+52|0;d=c[l>>2]|0;if(b>>>0>>0){e=0;h=(b>>>0)%(d>>>0)|0}else{h=d>>>1;e=h;h=h+-1|0}i=a+56|0;while(1){g=(c[i>>2]|0)+(e<<2)|0;b=c[g>>2]|0;if(b|0)do{c[k>>2]=(c[k>>2]|0)+-1;c[g>>2]=c[b+16>>2];d=b+24|0;f=c[d>>2]|0;if(!f)zp(b);else{m=c[b+28>>2]|0;c[m+24>>2]=f;c[(c[d>>2]|0)+28>>2]=m;c[d>>2]=0;f=(c[b+20>>2]|0)+44|0;c[f>>2]=(c[f>>2]|0)+-1;zp(b)}b=c[g>>2]|0}while((b|0)!=0);if((e|0)==(h|0))break a;e=((e+1|0)>>>0)%((c[l>>2]|0)>>>0)|0}}while(0);l=j+4|0;m=(c[l>>2]|0)-(c[a+28>>2]|0)|0;c[l>>2]=m;l=j+8|0;b=(c[l>>2]|0)-(c[a+24>>2]|0)|0;c[l>>2]=b;c[j+12>>2]=m+10-b;xp(a);b=c[a+64>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{m=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+56>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{m=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{m=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function vp(a){a=a|0;var b=0,d=0;if(!(c[a+20>>2]|0))return;b=(c[a>>2]|0)+4|0;d=c[b>>2]|0;c[b>>2]=0;xp(a);c[b>>2]=d;return}function wp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=a+52|0;h=c[e>>2]<<1;h=h>>>0>256?h:256;f=Wb(h<<2,0)|0;if(!f)return;g=c[e>>2]|0;d=a+56|0;if(g|0){b=0;do{a=c[(c[d>>2]|0)+(b<<2)>>2]|0;if(a|0)do{k=a+16|0;j=a;a=c[k>>2]|0;i=f+((((c[j+8>>2]|0)>>>0)%(h>>>0)|0)<<2)|0;c[k>>2]=c[i>>2];c[i>>2]=j}while((a|0)!=0);b=b+1|0}while(b>>>0>>0)}qb(c[d>>2]|0);c[d>>2]=f;c[e>>2]=h;return}function xp(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=c[a>>2]|0;d=f+48|0;e=f+16|0;f=f+4|0;a:do if((c[e>>2]|0)>>>0>(c[f>>2]|0)>>>0)do{g=c[d>>2]|0;if(b[g+14>>1]|0)break a;h=g+24|0;i=c[g+28>>2]|0;c[i+24>>2]=c[h>>2];c[(c[h>>2]|0)+28>>2]=i;c[h>>2]=0;h=(c[g+20>>2]|0)+44|0;c[h>>2]=(c[h>>2]|0)+-1;yp(g,1)}while((c[e>>2]|0)>>>0>(c[f>>2]|0)>>>0);while(0);if(c[a+48>>2]|0)return;d=a+64|0;e=c[d>>2]|0;if(!e)return;if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}c[a+60>>2]=0;c[d>>2]=0;return}function yp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=c[a+20>>2]|0;d=(c[f+56>>2]|0)+((((c[a+8>>2]|0)>>>0)%((c[f+52>>2]|0)>>>0)|0)<<2)|0;while(1){g=c[d>>2]|0;e=g+16|0;if((g|0)==(a|0))break;else d=e}c[d>>2]=c[e>>2];g=f+48|0;c[g>>2]=(c[g>>2]|0)+-1;if(!b)return;zp(a);return}function zp(a){a=a|0;var d=0,e=0;e=c[a+20>>2]|0;a:do if(!(b[a+12>>1]|0)){d=c[a>>2]|0;if(d|0){a=d;do if((c[14816]|0)>>>0<=a>>>0)if((c[14817]|0)>>>0>a>>>0){c[14979]=(c[14979]|0)+-1;c[d>>2]=c[14819];c[14819]=d;d=(c[14820]|0)+1|0;c[14820]=d;c[14821]=(d|0)<(c[14815]|0)&1;break a}else{a=Wa[c[29352>>2]&127](d)|0;break}else a=Wa[c[29352>>2]&127](d)|0;while(0);c[14980]=(c[14980]|0)-a;if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{a=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}}else{d=e+60|0;c[a+16>>2]=c[d>>2];c[d>>2]=a}while(0);e=c[e+4>>2]|0;c[e>>2]=(c[e>>2]|0)+-1;return}function Ap(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=c[a>>2]|0;q=a+48|0;j=c[q>>2]|0;g=c[a+44>>2]|0;i=j-g|0;if((e|0)==1){if(i>>>0>=(c[m+12>>2]|0)>>>0){d=0;return d|0}if(i>>>0>=(c[a+32>>2]|0)>>>0){d=0;return d|0}if((c[14814]|0)!=0?((c[a+12>>2]|0)+(c[a+8>>2]|0)|0)<=(c[14813]|0):0)e=59284;else e=59072;if(g>>>0>>0&(c[e>>2]|0)!=0){d=0;return d|0}}p=a+52|0;if(j>>>0>=(c[p>>2]|0)>>>0)wp(a);k=c[a+20>>2]|0;do if((k|0)!=0?(h=c[m+48>>2]|0,(b[h+14>>1]|0)==0):0){if(((c[q>>2]|0)+1|0)>>>0<(c[a+28>>2]|0)>>>0){if((c[14814]|0)!=0?((c[a+12>>2]|0)+(c[a+8>>2]|0)|0)<=(c[14813]|0):0)e=59284;else e=59072;if(!(c[e>>2]|0)){r=22;break}}g=h+20|0;i=c[g>>2]|0;l=h+8|0;e=(c[i+56>>2]|0)+((((c[l>>2]|0)>>>0)%((c[i+52>>2]|0)>>>0)|0)<<2)|0;while(1){s=c[e>>2]|0;j=s+16|0;if((s|0)==(h|0))break;else e=j}c[e>>2]=c[j>>2];e=i+48|0;c[e>>2]=(c[e>>2]|0)+-1;e=h+24|0;i=c[h+28>>2]|0;c[i+24>>2]=c[e>>2];c[(c[e>>2]|0)+28>>2]=i;c[e>>2]=0;i=c[g>>2]|0;s=i+44|0;c[s>>2]=(c[s>>2]|0)+-1;if((c[i+16>>2]|0)==(c[a+16>>2]|0)){f=m+16|0;c[f>>2]=k-(c[i+20>>2]|0)+(c[f>>2]|0);f=l;break}else{zp(h);r=22;break}}else r=22;while(0);if((r|0)==22){m=a+60|0;e=c[m>>2]|0;do if(!e){if(((c[q>>2]|0)==0?(n=c[14812]|0,n|0):0)?(o=a+28|0,(c[o>>2]|0)>>>0>=3):0){if((n|0)>0){j=a+16|0;e=c[j>>2]|0;g=((e|0)<0)<<31>>31;h=Yv(e|0,g|0,n|0,((n|0)<0)<<31>>31|0)|0;i=L()|0}else{h=Yv(n|0,((n|0)<0)<<31>>31|0,-1024,-1)|0;i=L()|0;j=a+16|0;g=c[j>>2]|0;e=g;g=((g|0)<0)<<31>>31}e=Yv(e|0,g|0,c[o>>2]|0,0)|0;s=L()|0;o=(i|0)>(s|0)|(i|0)==(s|0)&h>>>0>e>>>0;e=o?e:h;s=Sv(e|0,(o?s:i)|0,-1,-1)|0;o=L()|0;do if(!(o>>>0>0|(o|0)==0&s>>>0>2147483390)){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](e)|0;break}h=Wa[c[29356>>2]&127](e)|0;if((c[14985]|0)>>>0>>0)c[14985]=e;g=59064;e=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&e>>>0>0){s=c[14978]|0;o=Tv(e|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=s>>>0)&1}g=Wa[c[29340>>2]&127](h)|0;if(g){e=Wa[c[29352>>2]&127](g)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}else g=0}else g=0;while(0);c[a+64>>2]=g;if(!g)e=c[m>>2]|0;else{e=Wa[c[29352>>2]&127](g)|0;i=c[j>>2]|0;e=(e|0)/(i|0)|0;j=c[a+8>>2]|0;k=G(e+-1|0,i)|0;h=g;l=c[m>>2]|0;while(1){s=l;l=h+j|0;c[l>>2]=h;c[l+4>>2]=l+32;b[l+12>>1]=1;b[l+14>>1]=0;c[l+16>>2]=s;c[l+28>>2]=0;e=e+-1|0;if(!e)break;else h=h+i|0}e=g+(k+j)|0;c[m>>2]=e}if(e|0){f=e;r=47;break}}h=c[a+16>>2]|0;if((c[14813]|0)>=(h|0)?(f=c[14819]|0,(f|0)!=0):0){c[14819]=c[f>>2];s=c[14820]|0;c[14820]=s+-1;c[14821]=(s|0)<=(c[14815]|0)&1;if((c[14986]|0)>>>0>>0)c[14986]=h;e=(c[14979]|0)+1|0;c[14979]=e;if(e>>>0>(c[14983]|0)>>>0)c[14983]=e}else r=54;do if((r|0)==54){s=Sv(h|0,((h|0)<0)<<31>>31|0,-1,-1)|0;o=L()|0;if(!(o>>>0>0|(o|0)==0&s>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](h)|0;if(!f){f=0;break}}else{f=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;g=59064;e=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&e>>>0>0){s=c[14978]|0;o=Tv(e|0,g|0,f|0,((f|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=s>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f){f=0;break}e=Wa[c[29352>>2]&127](f)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}e=Wa[c[29352>>2]&127](f)|0;if((c[14986]|0)>>>0>>0)c[14986]=h;e=(c[14980]|0)+e|0;c[14980]=e;if(e>>>0>(c[14984]|0)>>>0)c[14984]=e}else f=0}while(0);e=f+(c[a+8>>2]|0)|0;if(!f){s=0;return s|0}else{c[e>>2]=f;c[e+4>>2]=e+32;b[e+12>>1]=0;b[e+14>>1]=0;f=e;break}}else{f=e;r=47}while(0);if((r|0)==47){s=f+16|0;c[m>>2]=c[s>>2];c[s>>2]=0}h=c[a+4>>2]|0;c[h>>2]=(c[h>>2]|0)+1;h=f;g=f+20|0;e=f+24|0;f=f+8|0}s=(d>>>0)%((c[p>>2]|0)>>>0)|0;c[q>>2]=(c[q>>2]|0)+1;c[f>>2]=d;f=a+56|0;c[h+16>>2]=c[(c[f>>2]|0)+(s<<2)>>2];c[g>>2]=a;c[e>>2]=0;c[c[h+4>>2]>>2]=0;c[(c[f>>2]|0)+(s<<2)>>2]=h;f=a+36|0;if((c[f>>2]|0)>>>0>=d>>>0){s=h;return s|0}c[f>>2]=d;s=h;return s|0}function Bp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;jb(a);g=a+20|0;if((c[g>>2]|0)>0){h=a+16|0;f=0;do{b=c[(c[h>>2]|0)+(f<<4)+12>>2]|0;if(b|0?(e=c[b+16>>2]|0,e|0):0){b=e;do{d=c[b+8>>2]|0;if(c[d+56>>2]|0)Cp(a,d);b=c[b>>2]|0}while((b|0)!=0)}f=f+1|0}while((f|0)<(c[g>>2]|0))}b=c[a+344>>2]|0;if(!b){Ti(a);return}do{d=c[(c[b+8>>2]|0)+16>>2]|0;if(d|0)Cp(a,d);b=c[b>>2]|0}while((b|0)!=0);Ti(a);return}function Cp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;b=b+64|0;d=c[b>>2]|0;if(!d)return;while(1){e=d+24|0;if((c[d>>2]|0)==(a|0))break;d=c[e>>2]|0;if(!d){f=6;break}else b=e}if((f|0)==6)return;c[b>>2]=c[e>>2];ng(d);return}function Dp(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;b=(c|0)<(f|0)?c:f;a:do if(e){if(!g){k=1;return k|0}if((b|0)>0){i=g;h=b;while(1){b=a[e>>0]|0;if(!(b<<24>>24)){k=7;break}g=a[208+(b&255)>>0]|0;b=a[208+(d[i>>0]|0)>>0]|0;if(g<<24>>24!=b<<24>>24){k=9;break}if((h|0)>1){e=e+1|0;i=i+1|0;h=h+-1|0}else break a}if((k|0)==7){e=0;b=a[208+(d[i>>0]|0)>>0]|0}else if((k|0)==9)e=g&255;j=e-(b&255)|0;k=12}}else{j=((g|0)!=0)<<31>>31;k=12}while(0);if((k|0)==12?j|0:0){k=j;return k|0}k=c-f|0;return k|0}function Ep(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=Xa[(a[b>>0]<<24>>24==1?154:155)&255](d,e)|0;r=b+12|0;m=(c[r>>2]|0)+-1&q;s=b+16|0;i=c[s>>2]|0;a:do if(i|0?(h=c[i+(m<<3)>>2]|0,j=(a[b>>0]|0)==1?79:80,g=c[i+(m<<3)+4>>2]|0,(h|0)!=0&(g|0)!=0):0){l=g;while(1){h=h+-1|0;if(!(Za[j&127](c[l+12>>2]|0,c[l+16>>2]|0,d,e)|0))break;g=c[l>>2]|0;if(!((h|0)!=0&(g|0)!=0))break a;else l=g}g=l+8|0;k=c[g>>2]|0;if(f|0){c[g>>2]=f;b=k;return b|0}h=c[l+4>>2]|0;g=c[l>>2]|0;if(!h){c[b+8>>2]=g;i=g;j=g}else{c[h>>2]=g;j=c[l>>2]|0;i=j}if(i|0)c[i+4>>2]=h;g=c[s>>2]|0;h=g+(m<<3)+4|0;if((c[h>>2]|0)==(l|0))c[h>>2]=j;q=g+(m<<3)|0;f=c[q>>2]|0;c[q>>2]=f+-1;if((f|0)<2)c[h>>2]=0;j=b+1|0;do if(a[j>>0]|0?(n=c[l+12>>2]|0,n|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{f=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{f=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}i=b+4|0;f=c[i>>2]|0;c[i>>2]=f+-1;if((f|0)>=2){b=k;return b|0}h=b+8|0;g=c[h>>2]|0;c[h>>2]=0;h=c[s>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{b=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[s>>2]=0;c[r>>2]=0;if(g|0)do{h=g;g=c[g>>2]|0;do if(a[j>>0]|0?(o=c[h+12>>2]|0,o|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{b=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{b=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}}while((g|0)!=0);c[i>>2]=0;b=k;return b|0}while(0);if(!f){b=0;return b|0}g=c[r>>2]|0;do if(!g){if(!(mb()|0)){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](64)|0;if(!g)break}else{g=Wa[c[29356>>2]&127](64)|0;if((c[14985]|0)>>>0<64)c[14985]=64;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){p=c[14978]|0;o=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=p>>>0)&1}h=Wa[c[29340>>2]&127](g)|0;if(!h)break;g=Wa[c[29352>>2]&127](h)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0){c[14987]=g;g=h}else g=h}i=g;j=i+64|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));h=c[s>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{p=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[s>>2]=g;c[r>>2]=8;n=(a[b>>0]|0)==1?154:155;m=b+8|0;h=c[m>>2]|0;c[m>>2]=0;if(!h){g=8;k=69}else{do{k=(Xa[n&255](c[h+12>>2]|0,c[h+16>>2]|0)|0)&7;j=h;h=c[h>>2]|0;l=g+(k<<3)+4|0;i=c[l>>2]|0;if(!i){i=c[m>>2]|0;c[j>>2]=i;if(i|0)c[i+4>>2]=j;c[j+4>>2]=0;i=m}else{c[j>>2]=i;i=i+4|0;c[j+4>>2]=c[i>>2];p=c[i>>2]|0;c[((p|0)==0?m:p)>>2]=j}c[i>>2]=j;p=g+(k<<3)|0;c[p>>2]=(c[p>>2]|0)+1;c[l>>2]=j}while((h|0)!=0);g=c[r>>2]|0;k=69}}}else k=69;while(0);do if((k|0)==69){p=b+4|0;if((c[p>>2]|0)>=(g|0)){h=g<<1;g=g<<4;o=pb(g,0)|0;if(!o)break;gw(o|0,0,g|0)|0;g=c[s>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{n=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[s>>2]=o;c[r>>2]=h;n=(a[b>>0]|0)==1?154:155;m=b+8|0;g=c[m>>2]|0;c[m>>2]=0;if(g|0){l=h+-1|0;do{j=(Xa[n&255](c[g+12>>2]|0,c[g+16>>2]|0)|0)&l;i=g;g=c[g>>2]|0;k=o+(j<<3)+4|0;h=c[k>>2]|0;if(!h){h=c[m>>2]|0;c[i>>2]=h;if(h|0)c[h+4>>2]=i;c[i+4>>2]=0;h=m}else{c[i>>2]=h;h=h+4|0;c[i+4>>2]=c[h>>2];t=c[h>>2]|0;c[((t|0)==0?m:t)>>2]=i}c[h>>2]=i;t=o+(j<<3)|0;c[t>>2]=(c[t>>2]|0)+1;c[k>>2]=i}while((g|0)!=0)}}if(mb()|0){t=f;return t|0}do if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](20)|0;if(!g){t=f;return t|0}else{i=g;j=i+20|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));l=g;break}}else{g=Wa[c[29356>>2]&127](20)|0;if((c[14985]|0)>>>0<20)c[14985]=20;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){t=c[14978]|0;o=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=t>>>0)&1}h=Wa[c[29340>>2]&127](g)|0;if(!h){t=f;return t|0}g=Wa[c[29352>>2]&127](h)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g;i=h;j=i+20|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));l=h}while(0);do if((d|0)!=0&(a[b+1>>0]|0)!=0){g=pb(e,((e|0)<0)<<31>>31)|0;if(g|0){gw(g|0,0,e|0)|0;c[l+12>>2]=g;ew(g|0,d|0,e|0)|0;break}c[l+12>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);t=f;return t|0}else{t=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);t=f;return t|0}}else c[l+12>>2]=d;while(0);c[l+16>>2]=e;c[p>>2]=(c[p>>2]|0)+1;k=(c[r>>2]|0)+-1&q;i=c[s>>2]|0;j=i+(k<<3)+4|0;g=c[j>>2]|0;if(!g){g=b+8|0;h=c[g>>2]|0;c[l>>2]=h;if(h|0)c[h+4>>2]=l;c[l+4>>2]=0}else{c[l>>2]=g;g=g+4|0;c[l+4>>2]=c[g>>2];t=c[g>>2]|0;c[((t|0)==0?b+8|0:t)>>2]=l}c[g>>2]=l;t=i+(k<<3)|0;c[t>>2]=(c[t>>2]|0)+1;c[j>>2]=l;c[l+8>>2]=f;t=0;return t|0}while(0);c[b+4>>2]=0;t=f;return t|0}function Fp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;e=b+8|0;d=c[e>>2]|0;c[e>>2]=0;e=b+16|0;f=c[e>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[e>>2]=0;c[b+12>>2]=0;if(d|0){f=b+1|0;do{e=d;d=c[d>>2]|0;do if(a[f>>0]|0?(g=c[e+12>>2]|0,g|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{h=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}}while((d|0)!=0)}c[b+4>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{h=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function Gp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if(mb()|0){d=7;return d|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](16)|0;if(!f){d=7;return d|0}}else{g=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){i=c[14978]|0;h=Tv(e|0,f|0,g|0,((g|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&h>>>0<=i>>>0)&1}f=Wa[c[29340>>2]&127](g)|0;if(!f){d=7;return d|0}e=Wa[c[29352>>2]&127](f)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e};c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;i=f+4|0;c[i>>2]=1;do if((a|0)>0){h=0;a:while(1){e=c[b+(h<<2)>>2]|0;g=Eu(e)|0;do if((g|0)==19){if(!(Lu(51058,e,19)|0)){c[i>>2]=1;e=0;break}if(!(Lu(51078,e,19)|0)){c[i>>2]=0;e=0;break}if(!(Lu(51098,e,19)|0)){c[i>>2]=2;e=0}else j=23}else if((g|0)>10)j=23;else{e=1;break a}while(0);do if((j|0)==23){j=0;if(!(Lu(51118,e,11)|0)){e=Lp(f,1,e+11|0,g+-11|0)|0;break}if(Lu(51130,e,11)|0){e=1;break a}e=Lp(f,0,e+11|0,g+-11|0)|0}while(0);h=h+1|0;g=(e|0)==0;if(!((h|0)<(a|0)&g)){j=28;break}}if((j|0)==28)if(g){e=0;break}if(f){g=c[f+12>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);f=0;break}else{j=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);f=0;break}}else f=0}else e=0;while(0);c[d>>2]=f;d=e;return d|0}function Hp(a){a=a|0;var b=0,d=0;if(!a)return 0;b=c[a+12>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Ip(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(mb()|0){e=7;return e|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](28)|0;if(!a){e=7;return e|0}}else{g=Wa[c[29356>>2]&127](28)|0;if((c[14985]|0)>>>0<28)c[14985]=28;f=59064;a=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&a>>>0>0){h=c[14978]|0;f=Tv(a|0,f|0,g|0,((g|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&f>>>0<=h>>>0)&1}a=Wa[c[29340>>2]&127](g)|0;if(!a){h=7;return h|0}f=Wa[c[29352>>2]&127](a)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f};c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=0;c[a+24>>2]=0;c[a+4>>2]=b;if(b){if((d|0)<0)d=Eu(b)|0}else d=0;c[a+8>>2]=d;c[e>>2]=a;h=0;return h|0}function Jp(a){a=a|0;var b=0,d=0;b=c[a+20>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Kp(b,f,g,h,i,j){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;u=c[b>>2]|0;D=b+4|0;z=c[D>>2]|0;E=b+12|0;A=c[E>>2]|0;k=z+A|0;C=c[b+8>>2]|0;z=z+C|0;if((A|0)>=(C|0)){E=101;return E|0}A=u+8|0;x=c[A>>2]|0;C=u+12|0;s=x+-1|0;a:do if((x|0)>0){t=c[C>>2]|0;while(1){m=k+1|0;n=a[k>>0]|0;l=n&255;if((n&255)>191){l=d[2736+(l+-192)>>0]|0;b:do if((m|0)==(z|0))m=z;else while(1){n=a[m>>0]|0;if((n&-64)<<24>>24!=-128)break b;m=m+1|0;l=l<<6|n&63;if((m|0)==(z|0)){m=z;break}}while(0);if(!((l&-2|0)==65534|(l>>>0<128|(l&-2048|0)==55296)))if(l>>>0<4194304)y=15;else n=1;else{l=65533;y=15}}else if(n<<24>>24>-1)n=(c[24720+(l>>>5<<2)>>2]&1<<(l&31)|0)==0;else y=15;if((y|0)==15){y=0;q=l<<10|1023;n=0;o=405;p=0;do{x=(o+n|0)/2|0;w=q>>>0<(c[23088+(x<<2)>>2]|0)>>>0;p=w?p:x;o=w?x+-1|0:o;n=w?n:x+1|0}while((o|0)>=(n|0));n=c[23088+(p<<2)>>2]|0;n=((n>>>10)+(n&1023)|0)>>>0<=l>>>0}r=n&1;n=s;o=0;while(1){p=(o+n|0)/2|0;x=c[t+(p<<2)>>2]|0;q=(x|0)<(l|0);if((x|0)==(l|0)){n=1;break}n=q?n:p+-1|0;o=q?p+1|0:o;if((n|0)<(o|0)){n=0;break}}if((n|0)!=(r|0)){x=k;break a}if(m>>>0>>0)k=m;else{k=101;break}}return k|0}else{while(1){n=k+1|0;m=a[k>>0]|0;l=m&255;if((m&255)>191){l=d[2736+(l+-192)>>0]|0;c:do if((n|0)==(z|0))m=z;else while(1){m=a[n>>0]|0;if((m&-64)<<24>>24!=-128){m=n;break c}n=n+1|0;l=l<<6|m&63;if((n|0)==(z|0)){m=z;break}}while(0);if(!((l&-2|0)==65534|(l>>>0<128|(l&-2048|0)==55296)))if(l>>>0<4194304)y=32;else{x=k;break a}else{l=65533;y=32}}else if(m<<24>>24>-1)if(!(c[24720+(l>>>5<<2)>>2]&1<<(l&31))){x=k;m=n;break a}else k=n;else{m=n;y=32}if((y|0)==32){y=0;q=l<<10|1023;n=0;o=405;p=0;do{x=(o+n|0)/2|0;w=q>>>0<(c[23088+(x<<2)>>2]|0)>>>0;p=w?p:x;o=w?x+-1|0:o;n=w?n:x+1|0}while((o|0)>=(n|0));x=c[23088+(p<<2)>>2]|0;if(((x>>>10)+(x&1023)|0)>>>0>l>>>0)k=m;else{x=k;break a}}if(k>>>0>=z>>>0){k=101;break}}return k|0}while(0);w=b+20|0;k=c[w>>2]|0;v=b+24|0;u=u+4|0;p=k;while(1){o=p;n=c[v>>2]|0;if((o-k|0)<(n+-4|0))t=p;else{if(mb()|0){k=7;y=86;break}y=n+64|0;k=sb(k,y,((y|0)<0)<<31>>31)|0;if(!k){k=7;y=86;break}t=k+(o-(c[w>>2]|0))|0;c[w>>2]=k;c[v>>2]=(c[v>>2]|0)+64}q=c[u>>2]|0;do if((l|0)>=128){if((l|0)>=65536)if((l+-66560|0)>>>0<40){l=l+40|0;y=58;break}else{y=61;break}k=162;o=-1;n=0;do{y=(n+k|0)/2|0;s=(l|0)<(e[24736+(y<<2)>>1]|0);n=s?n:y+1|0;o=s?o:y;k=s?y+-1|0:k}while((k|0)>=(n|0));k=e[24736+(o<<2)>>1]|0;if(((d[24736+(o<<2)+3>>0]|0)+k|0)>(l|0)?(B=d[24736+(o<<2)+2>>0]|0,((l^k)&1&B|0)==0):0)l=l+(e[25392+(B>>>1<<1)>>1]|0)&65535;if(q){p=l<<3|7;k=0;n=125;o=0;do{y=(n+k|0)/2|0;s=p>>>0<(e[25552+(y<<1)>>1]|0)>>>0;o=s?o:y;n=s?y+-1|0:n;k=s?k:y+1|0}while((n|0)>=(k|0));if((q|0)!=2?(a[25808+o>>0]|0)<0:0){y=57;break}y=e[25552+(o<<1)>>1]|0;if(((y>>>3)+(y&7)|0)>=(l|0)){l=a[25808+o>>0]&127;y=57}else y=57}else y=57}else{l=(l+-65|0)>>>0<26?l+32|0:l;y=57}while(0);if((y|0)==57){y=0;if(l)y=58}if((y|0)==58)if((l|0)>=128)if((l|0)>=2048)if((l|0)<65536){o=t;k=3;n=2;p=1;q=224;r=15;y=62}else y=61;else{q=t;k=2;n=1;o=192;p=31;y=63}else{n=t;k=1;y=64}if((y|0)==61){a[t>>0]=l>>>18&7|240;o=t+1|0;k=4;n=3;p=2;q=128;r=63;y=62}if((y|0)==62){a[o>>0]=l>>>12&r|q;q=t+p|0;o=128;p=63;y=63}if((y|0)==63){a[q>>0]=l>>>6&p|o;n=t+n|0;l=l&63|128;y=64}if((y|0)==64){y=0;a[n>>0]=l;t=t+k|0}if(m>>>0>=z>>>0){k=m;y=85;break}k=m+1|0;n=a[m>>0]|0;l=n&255;if((n&255)>191){l=d[2736+(l+-192)>>0]|0;d:do if((k|0)==(z|0))k=z;else while(1){n=a[k>>0]|0;if((n&-64)<<24>>24!=-128)break d;k=k+1|0;l=l<<6|n&63;if((k|0)==(z|0)){k=z;break}}while(0);if(!((l&-2|0)==65534|(l>>>0<128|(l&-2048|0)==55296)))if(l>>>0<4194304)y=75;else n=1;else{l=65533;y=75}}else if(n<<24>>24>-1)n=(c[24720+(l>>>5<<2)>>2]&1<<(l&31)|0)==0;else y=75;if((y|0)==75){q=l<<10|1023;n=0;o=405;p=0;do{y=(o+n|0)/2|0;s=q>>>0<(c[23088+(y<<2)>>2]|0)>>>0;p=s?p:y;o=s?y+-1|0:o;n=s?n:y+1|0}while((o|0)>=(n|0));n=c[23088+(p<<2)>>2]|0;n=((n>>>10)+(n&1023)|0)>>>0<=l>>>0}s=n&1;n=c[A>>2]|0;e:do if((n|0)>0){r=c[C>>2]|0;n=n+-1|0;o=0;while(1){p=(o+n|0)/2|0;y=c[r+(p<<2)>>2]|0;q=(y|0)<(l|0);if((y|0)==(l|0)){n=1;break e}n=q?n:p+-1|0;o=q?p+1|0:o;if((n|0)<(o|0)){n=0;break}}}else n=0;while(0);if((n|0)==(s|0)){n=l+-768|0;if(n>>>0>49){y=85;break}y=(l|0)<800;if(!(1<<(y?n:l+-800|0)&(y?134389727:221688))){y=85;break}}p=t;m=k;k=c[w>>2]|0}if((y|0)==85){c[E>>2]=k-(c[D>>2]|0);c[f>>2]=c[w>>2];c[g>>2]=t-(c[w>>2]|0);D=c[D>>2]|0;c[h>>2]=x-D;c[i>>2]=m-D;D=b+16|0;E=c[D>>2]|0;c[D>>2]=E+1;c[j>>2]=E;E=0;return E|0}else if((y|0)==86)return k|0;return 0}function Lp(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=f+g|0;n=(g|0)>0;if(!n){q=0;return q|0}m=0;g=f;while(1){j=g+1|0;g=a[g>>0]|0;h=g&255;if((g&255)>191){g=d[2736+(h+-192)>>0]|0;a:do if((j|0)==(p|0)){h=g;g=p}else{h=g;g=j;while(1){i=a[g>>0]|0;if((i&-64)<<24>>24!=-128)break a;g=g+1|0;h=h<<6|i&63;if((g|0)==(p|0)){g=p;break}}}while(0);if(!((h&-2|0)==65534|(h>>>0<128|(h&-2048|0)==55296)))if(h>>>0<4194304)q=12;else i=1;else{h=65533;q=12}}else if(g<<24>>24>-1){i=(c[24720+(h>>>5<<2)>>2]&1<<(h&31)|0)==0;g=j}else{g=j;q=12}if((q|0)==12){q=0;l=h<<10|1023;i=0;j=405;k=0;do{o=(j+i|0)/2|0;r=l>>>0<(c[23088+(o<<2)>>2]|0)>>>0;k=r?k:o;j=r?o+-1|0:j;i=r?i:o+1|0}while((j|0)>=(i|0));i=c[23088+(k<<2)>>2]|0;i=((i>>>10)+(i&1023)|0)>>>0<=h>>>0}do if((i&1|0)==(e|0))i=m;else{i=h+-768|0;if(i>>>0<=49?(r=(h|0)<800,1<<(r?i:h+-800|0)&(r?134389727:221688)|0):0){i=m;break}i=m+1|0}while(0);if(g>>>0

        >>0)m=i;else break}if(!i){r=0;return r|0}o=b+12|0;h=c[o>>2]|0;b=b+8|0;g=c[b>>2]|0;if(mb()|0){r=7;return r|0}m=sb(h,g+i<<2,0)|0;if(!m){r=7;return r|0}g=c[b>>2]|0;if(n)do{j=f+1|0;f=a[f>>0]|0;h=f&255;if((f&255)>191){f=d[2736+(h+-192)>>0]|0;b:do if((j|0)==(p|0)){h=f;f=p}else{h=f;f=j;while(1){i=a[f>>0]|0;if((i&-64)<<24>>24!=-128)break b;f=f+1|0;h=h<<6|i&63;if((f|0)==(p|0)){f=p;break}}}while(0);if(!((h&-2|0)==65534|(h>>>0<128|(h&-2048|0)==55296)))if(h>>>0<4194304)q=34;else i=1;else{h=65533;q=34}}else if(f<<24>>24>-1){i=(c[24720+(h>>>5<<2)>>2]&1<<(h&31)|0)==0;f=j}else{f=j;q=34}if((q|0)==34){q=0;l=h<<10|1023;i=0;j=405;k=0;do{r=(j+i|0)/2|0;n=l>>>0<(c[23088+(r<<2)>>2]|0)>>>0;k=n?k:r;j=n?r+-1|0:j;i=n?i:r+1|0}while((j|0)>=(i|0));i=c[23088+(k<<2)>>2]|0;i=((i>>>10)+(i&1023)|0)>>>0<=h>>>0}do if((i&1|0)!=(e|0)){i=h+-768|0;if(i>>>0<=49?(r=(h|0)<800,1<<(r?i:h+-800|0)&(r?134389727:221688)|0):0)break;c:do if((g|0)>0){i=0;do{if((c[m+(i<<2)>>2]|0)>=(h|0))break c;i=i+1|0}while((i|0)<(g|0))}else i=0;while(0);if((g|0)>(i|0)){j=g;do{r=j;j=j+-1|0;c[m+(r<<2)>>2]=c[m+(j<<2)>>2]}while((j|0)>(i|0))}c[m+(i<<2)>>2]=h;g=g+1|0}while(0)}while(f>>>0

        >>0);c[o>>2]=m;c[b>>2]=g;r=0;return r|0}function Mp(b,e,f,g,h,i){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+16|0;j=p;do if((f|1|0)==5){l=c[g+4>>2]|0;k=Eu(l)|0;if((f|0)==5){if((l|0)==0|(k|0)!=4)break;k=d[l>>0]|0;e=208+k|0;if((k|32|0)==116){k=d[l+1>>0]|0;e=208+k|0;if((k|32|0)==101){k=d[l+2>>0]|0;e=208+k|0;if((k|32|0)==109){e=d[l+3>>0]|0;if((e|32|0)!=112){m=208+e|0;n=112;o=5}}else{m=e;n=109;o=5}}else{m=e;n=101;o=5}}else{m=e;n=116;o=5}if((o|0)==5?(n|0)!=(d[m>>0]|0):0)break;k=c[g+12>>2]|0;l=k;k=Eu(k)|0;e=4}else e=3;f=c[g+(e<<2)>>2]|0;j=Eu(f)|0;e=td(b,51150)|0;if(e|0){h=e;Ra=p;return h|0}e=k+306+j|0;n=pb(e,0)|0;if(!n){h=7;Ra=p;return h|0}gw(n|0,0,e|0)|0;m=n+12|0;c[m>>2]=n+16;g=n+304|0;c[n+32>>2]=g;e=g+(k+1)|0;c[n+36>>2]=e;c[n+28>>2]=b;c[n+268>>2]=1;ew(g|0,l|0,k|0)|0;ew(e|0,f|0,j|0)|0;m=c[(c[m>>2]|0)+20>>2]|0;e=a[m>>0]|0;switch(e<<24>>24){case 34:case 39:case 91:case 96:{l=e<<24>>24==91?93:e;f=a[m+1>>0]|0;a:do if(!(f<<24>>24))e=0;else{j=1;e=0;do{k=j+1|0;if(f<<24>>24==l<<24>>24){if((a[m+k>>0]|0)!=l<<24>>24)break a;a[m+e>>0]=l;j=j+2|0}else{a[m+e>>0]=f;j=k}e=e+1|0;f=a[m+j>>0]|0}while(f<<24>>24!=0)}while(0);a[m+e>>0]=0;break}default:{}}c[h>>2]=n;h=0;Ra=p;return h|0}while(0);Wp(i,51219,j);h=1;Ra=p;return h|0}function Np(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(((c[d+8>>2]|0)==1?(e=c[d+12>>2]|0,(c[e>>2]|0)==0):0)?(a[e+4>>0]|0)==0:0)c[d+32>>2]=1;m=c[d>>2]|0;if((m|0)<=0){c[d+20>>2]=0;g[d+40>>3]=2.0e4;return 0}n=c[d+4>>2]|0;b=-1;k=-1;h=-1;e=-1;l=0;while(1){if(!(a[n+(l*12|0)+5>>0]|0))j=h;else{i=a[n+(l*12|0)+4>>0]|0;j=c[n+(l*12|0)>>2]|0;if(!j){b=i<<24>>24==2?l:b;e=i<<24>>24==32|i<<24>>24==4?l:e;h=i<<24>>24==8|i<<24>>24==16?l:h}k=i<<24>>24==2&(j|0)==4?l:k;j=h}l=l+1|0;if((l|0)>=(m|0))break;else h=j}i=d+20|0;if((b|0)<=-1){c[i>>2]=0;h=d+40|0;g[h>>3]=2.0e4;if((e|0)>-1){c[i>>2]=2;c[(c[d+16>>2]|0)+(e<<3)>>2]=1;g[h>>3]=1.0e4;b=2;e=6;f=1.0e4}else{b=1;e=4;f=2.0e4}if((j|0)>-1){c[i>>2]=e;c[(c[d+16>>2]|0)+(j<<3)>>2]=b;f=f*.5;g[h>>3]=f;b=b+1|0}}else{c[i>>2]=1;c[(c[d+16>>2]|0)+(b<<3)>>2]=1;g[d+40>>3]=5.0;b=2;f=5.0}if((k|0)<=-1)return 0;c[(c[d+16>>2]|0)+(k<<3)>>2]=b;g[d+40>>3]=f+-1.0;return 0}function Op(a){a=a|0;var b=0,d=0;b=c[a+12>>2]|0;gc(c[b+56>>2]|0)|0;gc(c[b+60>>2]|0)|0;gc(c[b+64>>2]|0)|0;gc(c[b+68>>2]|0)|0;gc(c[b+72>>2]|0)|0;gc(c[b+76>>2]|0)|0;gc(c[b+80>>2]|0)|0;gc(c[b+84>>2]|0)|0;gc(c[b+88>>2]|0)|0;gc(c[b+92>>2]|0)|0;gc(c[b+96>>2]|0)|0;gc(c[b+100>>2]|0)|0;gc(c[b+104>>2]|0)|0;gc(c[b+108>>2]|0)|0;gc(c[b+112>>2]|0)|0;gc(c[b+116>>2]|0)|0;gc(c[b+120>>2]|0)|0;gc(c[b+124>>2]|0)|0;gc(c[b+128>>2]|0)|0;gc(c[b+132>>2]|0)|0;gc(c[b+136>>2]|0)|0;gc(c[b+140>>2]|0)|0;gc(c[b+144>>2]|0)|0;gc(c[b+148>>2]|0)|0;gc(c[b+152>>2]|0)|0;gc(c[b+156>>2]|0)|0;gc(c[b+160>>2]|0)|0;gc(c[b+164>>2]|0)|0;gc(c[b+168>>2]|0)|0;gc(c[b+172>>2]|0)|0;gc(c[b+176>>2]|0)|0;gc(c[b+180>>2]|0)|0;gc(c[b+184>>2]|0)|0;gc(c[b+188>>2]|0)|0;gc(c[b+192>>2]|0)|0;gc(c[b+196>>2]|0)|0;gc(c[b+200>>2]|0)|0;gc(c[b+204>>2]|0)|0;gc(c[b+208>>2]|0)|0;gc(c[b+212>>2]|0)|0;b=c[b+244>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Pp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(mb()|0){b=7;return b|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](120)|0;if(!a){b=7;return b|0}}else{e=Wa[c[29356>>2]&127](120)|0;if((c[14985]|0)>>>0<120)c[14985]=120;d=59064;a=c[d>>2]|0;d=c[d+4>>2]|0;if((d|0)>0|(d|0)==0&a>>>0>0){f=c[14978]|0;d=Tv(a|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&d>>>0<=f>>>0)&1}a=Wa[c[29340>>2]&127](e)|0;if(!a){f=7;return f|0}d=Wa[c[29352>>2]&127](a)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}d=a;e=d+120|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[b>>2]=a;f=0;return f|0}function Qp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=(c[(c[b>>2]|0)+12>>2]|0)+248|0;e=c[d>>2]|0;do if(e|0){f=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(f|0){if(c[f+480>>2]|0){Xd(f,e);break}i=e;if((c[f+304>>2]|0)>>>0<=i>>>0?(c[f+308>>2]|0)>>>0>i>>>0:0){i=f+300|0;c[e>>2]=c[i>>2];c[i>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);c[d>>2]=0;h=b+4|0;i=b+8|0;d=c[h>>2]|0;if((c[i>>2]|0)>0){g=0;do{d=c[d+(g<<2)>>2]|0;do if(d|0){do if((c[d+56>>2]|0)==0?(j=c[d+64>>2]|0,j|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{f=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);do if((a[d+5>>0]|0)==0?(k=c[d+40>>2]|0,k|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{f=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);e=c[d+52>>2]|0;do if(e|0){f=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(f|0){if(c[f+480>>2]|0){Xd(f,e);break}l=e;if((c[f+304>>2]|0)>>>0<=l>>>0?(c[f+308>>2]|0)>>>0>l>>>0:0){l=f+300|0;c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{l=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);g=g+1|0;d=c[h>>2]|0}while((g|0)<(c[i>>2]|0))}do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{l=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=b+20|0;e=c[d>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);c[i>>2]=0;c[h>>2]=0;c[d>>2]=0;d=c[b+60>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{l=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=c[b+76>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{l=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=c[b+112>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{l=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return 0}else{l=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return 0}return 0}function Rp(d,f,h,i,j){d=d|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=Ra;Ra=Ra+16|0;u=y+8|0;s=y;x=c[(c[d>>2]|0)+12>>2]|0;if((f|0)==1){q=-1;o=0;w=0;h=1;p=-1}else{h=f&2;p=(h|0)==0;v=(p^1)&1;t=(f&4|0)==0;q=t?-1:v;o=-1;w=1;h=t?v:(h>>>1)+1|0;p=p<<31>>31}t=(h|0)<(i|0)?h:-1;v=d+4|0;l=d+8|0;h=c[v>>2]|0;if((c[l>>2]|0)>0){k=0;do{h=c[h+(k<<2)>>2]|0;do if(h|0){do if((c[h+56>>2]|0)==0?(m=c[h+64>>2]|0,m|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{i=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);do if((a[h+5>>0]|0)==0?(n=c[h+40>>2]|0,n|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{i=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);f=c[h+52>>2]|0;do if(f|0){i=c[f+20>>2]|0;gc(c[f+16>>2]|0)|0;if(i|0){if(c[i+480>>2]|0){Xd(i,f);break}z=f;if((c[i+304>>2]|0)>>>0<=z>>>0?(c[i+308>>2]|0)>>>0>z>>>0:0){z=i+300|0;c[f>>2]=c[z>>2];c[z>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{z=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{z=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);k=k+1|0;h=c[v>>2]|0}while((k|0)<(c[l>>2]|0))}do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{z=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);h=d+20|0;f=c[h>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{z=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[l>>2]=0;c[v>>2]=0;c[h>>2]=0;n=d+60|0;h=c[n>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{z=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);h=c[d+112>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{z=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);l=v;m=l+116|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));c[d+72>>2]=(w|0)==0?3:19;do if((p&o|0)>-1?(r=c[j>>2]|0,r|0):0){h=b[r+8>>1]|0;if((h&514)==514?(a[r+10>>0]|0)==1:0)h=c[r+16>>2]|0;else{if(h&1)break;h=Gg(r,1)|0}if(h|0){c[s>>2]=h;h=Bb(31408,s)|0;c[n>>2]=h;if(!h){z=7;Ra=y;return z|0}else{z=Eu(h)|0;c[d+64>>2]=z;break}}}while(0);do if((q|0)>-1){h=c[j+(q<<2)>>2]|0;do if(h){f=b[h+8>>1]|0;if((f&514)==514?(a[h+10>>0]|0)==1:0){h=c[h+16>>2]|0;break}if(!(f&1))h=Gg(h,1)|0;else h=0}else h=0;while(0);c[u>>2]=h;h=Bb(31408,u)|0;c[d+76>>2]=h;if(!h){z=7;Ra=y;return z|0}else{z=Eu(h)|0;c[d+80>>2]=z;break}}while(0);a:do if((t|0)>-1){h=c[j+(t<<2)>>2]|0;f=e[h+8>>1]|0;do if(!(f&4)){if(f&8|0){h=Mg(+g[h>>3])|0;L()|0;break}if(!(f&18)){h=0;break a}h=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0}else h=c[h>>2]|0;while(0);h=(h|0)>0?h:0}else h=0;while(0);c[d+84>>2]=h;f=c[n>>2]|0;k=d+64|0;i=c[k>>2]|0;l=v;m=l+56|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));h=Xp(x,h,0,-2,f,i,0,w,v)|0;if(h|0){z=h;Ra=y;return z|0}c[d+16>>2]=n;h=eq(x,v,c[n>>2]|0,c[k>>2]|0)|0;if(h|0){z=h;Ra=y;return z|0}z=Sp(d)|0;Ra=y;return z|0}function Sp(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=c[(c[b>>2]|0)+12>>2]|0;o=b+96|0;p=o;p=Sv(c[p>>2]|0,c[p+4>>2]|0,1,0)|0;e=L()|0;c[o>>2]=p;c[o+4>>2]=e;o=b+104|0;e=(c[o>>2]|0)+1|0;c[o>>2]=e;p=b+108|0;f=c[p>>2]|0;a:do if((e|0)<(f|0)){g=c[b+112>>2]|0;while(1){n=g+(e<<4)|0;m=c[n+4>>2]|0;if((m|0)>0|(m|0)==0&(c[n>>2]|0)>>>0>0){e=0;break}e=e+1|0;c[o>>2]=e;if((e|0)>=(f|0))break a}return e|0}while(0);e=gq(h,b+4|0)|0;if((e|0)!=100){c[b+88>>2]=1;q=e;return q|0}m=c[b+56>>2]|0;n=c[b+52>>2]|0;e=c[b+76>>2]|0;do if(e|0){j=c[b+80>>2]|0;k=c[b+48>>2]|0;l=(j|0)<(k|0);k=Lu(e,c[b+44>>2]|0,l?j:k)|0;if((k|0)>=0?(k|0)!=0|l^1:0)break;c[b+88>>2]=1;q=0;return q|0}while(0);f=c[p>>2]|0;l=b+112|0;e=c[l>>2]|0;do if((f|0)<2){if(mb()|0){q=7;return q|0}e=sb(e,32,0)|0;if(!e){q=7;return q|0}else{f=c[p>>2]|0;gw(e+(f<<4)|0,0,32-(f<<4)|0)|0;c[l>>2]=e;c[p>>2]=2;f=32;break}}else f=f<<4;while(0);gw(e|0,0,f|0)|0;b:do if((m|0)>0){e=0;f=0;k=0;c:while(1){j=n+k|0;h=a[j>>0]|0;g=h&255;do if(!(g&128)){b=1;i=0;g=h&255}else{i=d[j+1>>0]|0;g=i<<7|g&127;if(!(i&128)){b=2;i=0;break}i=d[j+2>>0]|0;g=i<<14|g&16383;if(!(i&128)){b=3;i=0;break}i=d[j+3>>0]|0;g=i<<21|g&2097151;if(!(i&128)){b=4;i=0;break}h=28;b=j+4|0;g=g&268435455;i=0;do{r=b;b=b+1|0;r=d[r>>0]|0;s=cw(r&127|0,0,h|0)|0;g=Sv(s|0,L()|0,g|0,i|0)|0;i=L()|0;h=h+7|0}while(h>>>0<64&((r&128|0)!=0|0!=0));b=b-j|0}while(0);k=b+k|0;switch(e|0){case 0:{f=c[l>>2]|0;s=f;s=Sv(c[s>>2]|0,c[s+4>>2]|0,1,0)|0;e=L()|0;c[f>>2]=s;c[f+4>>2]=e;f=0;e=1;break}case 1:{if((i|0)>0|(i|0)==0&g>>>0>1){q=(c[l>>2]|0)+16|0;r=q;r=Sv(c[r>>2]|0,c[r+4>>2]|0,1,0)|0;s=L()|0;c[q>>2]=r;c[q+4>>2]=s;q=32}else q=32;break}case 2:{q=32;break}default:{f=g+2|0;if((c[p>>2]|0)<(f|0)){e=c[l>>2]|0;if(mb()|0){e=7;q=46;break c}e=sb(e,f<<4,0)|0;if(!e){e=7;q=46;break c}s=c[p>>2]|0;gw(e+(s<<4)|0,0,f-s<<4|0)|0;c[l>>2]=e;c[p>>2]=f}else e=c[l>>2]|0;f=e+(g+1<<4)|0;s=f;s=Sv(c[s>>2]|0,c[s+4>>2]|0,1,0)|0;e=L()|0;c[f>>2]=s;c[f+4>>2]=e;f=g;e=2}}d:do if((q|0)==32){q=0;switch(g|0){case 0:{if(!i){e=0;break d}break}case 1:{if(!i){e=3;break d}break}default:{}}e=c[l>>2]|0;r=e+(f+1<<4)+8|0;j=r;j=Sv(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;s=L()|0;c[r>>2]=j;c[r+4>>2]=s;e=e+8|0;r=e;r=Sv(c[r>>2]|0,c[r+4>>2]|0,1,0)|0;s=L()|0;c[e>>2]=r;c[e+4>>2]=s;e=2}while(0);if((k|0)>=(m|0))break b}if((q|0)==46)return e|0}while(0);c[o>>2]=0;s=0;return s|0}function Tp(a){a=a|0;return c[a+88>>2]|0}function Up(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;switch(e|0){case 0:{if((yc(c[d>>2]|0,c[a+44>>2]|0,c[a+48>>2]|0,1,-1)|0)!=18)return 0;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return 0}case 1:{a=c[a+104>>2]|0;if(!a){if((yc(c[d>>2]|0,40769,-1,1,0)|0)!=18)return 0;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return 0}g=a+-1|0;a=c[d>>2]|0;e=((g|0)<0)<<31>>31;f=a+8|0;if(!(b[f>>1]&9216)){d=a;c[d>>2]=g;c[d+4>>2]=e;b[f>>1]=4;return 0}else{Pg(a,g,e);return 0}}case 2:{g=(c[a+112>>2]|0)+(c[a+104>>2]<<4)|0;f=c[g>>2]|0;g=c[g+4>>2]|0;a=c[d>>2]|0;e=a+8|0;if(!(b[e>>1]&9216)){d=a;c[d>>2]=f;c[d+4>>2]=g;b[e>>1]=4;return 0}else{Pg(a,f,g);return 0}}case 3:{g=(c[a+112>>2]|0)+(c[a+104>>2]<<4)+8|0;f=c[g>>2]|0;g=c[g+4>>2]|0;a=c[d>>2]|0;e=a+8|0;if(!(b[e>>1]&9216)){d=a;c[d>>2]=f;c[d+4>>2]=g;b[e>>1]=4;return 0}else{Pg(a,f,g);return 0}}default:{g=c[a+84>>2]|0;a=c[d>>2]|0;e=((g|0)<0)<<31>>31;f=a+8|0;if(!(b[f>>1]&9216)){d=a;c[d>>2]=g;c[d+4>>2]=e;b[f>>1]=4;return 0}else{Pg(a,g,e);return 0}}}return 0}function Vp(a,b){a=a|0;b=b|0;var d=0;d=a+96|0;a=c[d+4>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=a;return 0}function Wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=Ra;Ra=Ra+16|0;e=g;f=c[a>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[e>>2]=d;h=Ab(b,e)|0;c[a>>2]=h;Ra=g;return}function Xp(d,f,g,h,i,j,k,l,m){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0;M=Ra;Ra=Ra+32|0;p=M+24|0;z=M+16|0;K=M+8|0;H=M;do if((h|0)<0){p=c[d+256>>2]|0;a:do if(p){v=(l|k|0)!=0;b:do if(v){o=c[p+(g*24|0)+12>>2]|0;c[K>>2]=o;if(!o){n=0;break a}if(!j){p=0;t=0;n=0;q=0;s=o;o=0;while(1){if((t|0)==(n|0)){o=t+16|0;n=o<<2;if(mb()|0){r=0;o=p;n=7;q=0;break b}n=sb(q,(n|0)>0?n:0,0)|0;if(!n){r=0;o=p;n=7;q=0;break b}else{r=o;p=n;o=n;q=n}}else r=n;n=t+1|0;c[p+(t<<2)>>2]=s;s=c[c[K>>2]>>2]|0;c[K>>2]=s;if(!s)break;else{t=n;n=r}}}else{p=0;n=0;s=0;u=o;t=0;o=0;while(1){q=u;r=u;if((c[r+16>>2]|0)>=(j|0)?(Lu(c[r+12>>2]|0,i,j)|0)==0:0){if((n|0)==(s|0)){q=n+16|0;o=q<<2;if(mb()|0){r=0;o=p;n=7;q=0;break b}r=sb(t,(o|0)>0?o:0,0)|0;if(!r){r=0;o=p;n=7;q=0;break b}else{p=r;o=r}}else{q=s;r=t}c[p+(n<<2)>>2]=u;s=q;n=n+1|0;q=c[K>>2]|0}else r=t;u=c[q>>2]|0;c[K>>2]=u;if(!u)break;else t=r}}if((n|0)<=1)if((n|0)==1){n=1;G=31;break}else{r=0;o=p;n=0;q=0;break}else{pv(o,n,4,156);G=31;break}}else{q=p+(g*24|0)+20|0;c:do if((c[q>>2]|0?(r=p+(g*24|0)+4|0,s=Xa[(a[r>>0]<<24>>24==1?154:155)&255](i,j)|0,s=(c[p+(g*24|0)+16>>2]|0)+-1&s,t=c[q>>2]|0,t|0):0)?(o=c[t+(s<<3)>>2]|0,u=(a[r>>0]|0)==1?79:80,n=c[t+(s<<3)+4>>2]|0,(o|0)!=0&(n|0)!=0):0){while(1){o=o+-1|0;if(!(Za[u&127](c[n+12>>2]|0,c[n+16>>2]|0,i,j)|0))break;n=c[n>>2]|0;if(!((o|0)!=0&(n|0)!=0))break c}c[K>>2]=n;n=1;p=K;G=31;break b}while(0);c[K>>2]=0;r=0;o=0;n=0;q=0}while(0);if((G|0)==31){n=n<<2;o=n+100|0;q=pb(o,0)|0;if(!q){r=q;o=p;n=7;q=0}else{gw(q|0,0,o|0)|0;c[q>>2]=2147483647;r=q+96|0;c[q+56>>2]=r;ew(r|0,p|0,n|0)|0;r=q;o=p;n=0}}do if(v?o|0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{F=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);if((n|0)==0&(r|0)!=0){p=m+4|0;o=c[p>>2]|0;do if(!(o&15)){n=c[m>>2]|0;if((mb()|0)==0?(y=sb(n,(o<<2)+64|0,0)|0,y|0):0){c[m>>2]=y;o=c[p>>2]|0;n=y;break}do if((c[r+56>>2]|0)==0?(w=c[r+64>>2]|0,w|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](w);break}else{F=Wa[c[29352>>2]&127](w)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](w);break}while(0);do if((a[r+5>>0]|0)==0?(x=c[r+40>>2]|0,x|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](x);break}else{F=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x);break}while(0);n=c[r+52>>2]|0;do if(n|0){o=c[n+20>>2]|0;gc(c[n+16>>2]|0)|0;if(o|0){if(c[o+480>>2]|0){Xd(o,n);break}F=n;if((c[o+304>>2]|0)>>>0<=F>>>0?(c[o+308>>2]|0)>>>0>F>>>0:0){F=o+300|0;c[n>>2]=c[F>>2];c[F>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{F=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);if(!q){n=7;break a}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);n=7;break a}else{n=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);n=7;break a}}else n=c[m>>2]|0;while(0);c[p>>2]=o+1;c[n+(o<<2)>>2]=q;n=0}}else n=0;while(0);if(!((h|0)!=-1&(n|0)==0)){m=0;K=n;j=(K|0)==101;K=j?m:K;Ra=M;return K|0}q=d+108|0;F=c[q>>2]|0;c[K>>2]=F;o=F;if(!F){p=c[d+20>>2]|0;c[z>>2]=c[d+16>>2];c[z+4>>2]=p;p=Bb(51885,z)|0;if(!p){n=7;break}n=qd(c[d+12>>2]|0,p,-1,133,0,K,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](p);else{F=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p)}o=c[K>>2]|0;c[q>>2]=o;if(n)break}v=o;n=d+252|0;r=c[n>>2]|0;p=((f|0)<0)<<31>>31;r=Yv(r|0,((r|0)<0)<<31>>31|0,f|0,p|0)|0;q=((g|0)<0)<<31>>31;r=Sv(r|0,L()|0,g|0,q|0)|0;r=cw(r|0,L()|0,10)|0;s=L()|0;do if(!(Vc(v,1)|0)){t=c[v+100>>2]|0;u=t+8|0;if(!(b[u>>1]&9216)){G=t;c[G>>2]=r;c[G+4>>2]=s;b[u>>1]=4;break}else{Pg(t,r,s);break}}while(0);r=c[n>>2]|0;r=Yv(r|0,((r|0)<0)<<31>>31|0,f|0,p|0)|0;r=Sv(r|0,L()|0,g|0,q|0)|0;r=cw(r|0,L()|0,10)|0;q=L()|0;r=r|1023;if(!(Vc(v,2)|0)){p=c[v+100>>2]|0;n=p+40|0;p=p+48|0;if(!(b[p>>1]&9216)){G=n;c[G>>2]=r;c[G+4>>2]=q;b[p>>1]=4;G=98;break}else{Pg(n,r,q);G=98;break}}else G=98}else{q=d+104|0;F=c[q>>2]|0;c[K>>2]=F;o=F;if(!F){F=c[d+20>>2]|0;c[p>>2]=c[d+16>>2];c[p+4>>2]=F;p=Bb(51773,p)|0;if(!p){n=7;break}n=qd(c[d+12>>2]|0,p,-1,133,0,K,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](p);else{F=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p)}o=c[K>>2]|0;c[q>>2]=o;if(n)break}n=o;q=c[d+252>>2]|0;q=Yv(q|0,((q|0)<0)<<31>>31|0,f|0,((f|0)<0)<<31>>31|0)|0;q=Sv(q|0,L()|0,g|0,((g|0)<0)<<31>>31|0)|0;q=cw(q|0,L()|0,10)|0;q=Sv(q|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;r=L()|0;if(!(Vc(n,1)|0)){n=c[n+100>>2]|0;p=n+8|0;if(!(b[p>>1]&9216)){G=n;c[G>>2]=q;c[G+4>>2]=r;b[p>>1]=4;G=98;break}else{Pg(n,q,r);G=98;break}}else G=98}while(0);d:do if((G|0)==98){B=o;C=(o|0)==0;D=(i|0)!=0;E=B+120|0;A=(k|0)==0?0:H;F=m+4|0;f=(l|k|0)==0;g=B+40|0;k=B+144|0;l=f&1;n=Gc(B)|0;if((n|0)==100){while(1){y=Oc(B,1)|0;z=L()|0;h=K;c[h>>2]=y;c[h+4>>2]=z;h=Oc(B,2)|0;z=L()|0;y=H;c[y>>2]=h;c[y+4>>2]=z;y=Oc(B,3)|0;z=L()|0;h=Lc(B,4)|0;if(C)q=mc(29576)|0;else{n=c[E>>2]|0;if((n|0)!=0?(e[k>>1]|0)>4:0)n=n+160|0;else{n=c[B>>2]|0;c[n+64>>2]=25;Ne(n,25);n=29576}q=mc(n)|0;n=c[B>>2]|0;p=c[g>>2]|0;if((p|0)==3082|(a[n+81>>0]|0)!=0){og(n);n=7}else n=c[n+68>>2]&p;c[g>>2]=n}p=K;n=c[p>>2]|0;p=c[p+4>>2]|0;if((q|0)!=0&(D&((n|0)!=0|(p|0)!=0))){n=Yp(d,i,j,q,h,K,A)|0;if(n|0){G=152;break}p=K;n=c[p>>2]|0;p=c[p+4>>2]|0;if(f){w=H;c[w>>2]=n;c[w+4>>2]=p;w=n;v=p;u=n;r=p}else G=114}else G=114;if((G|0)==114){G=0;r=H;w=n;v=p;u=c[r>>2]|0;r=c[r+4>>2]|0}p=(c[F>>2]|0)+1|0;if((w|0)==0&(v|0)==0){if(!((u|0)==0&(r|0)==0)){n=267;G=152;break}n=h+20|0}else n=0;x=nb(n+96|0)|0;if(!x){n=7;G=152;break}s=x;t=s+96|0;do{c[s>>2]=0;s=s+4|0}while((s|0)<(t|0));c[x>>2]=p;a[x+4>>0]=l;t=x+8|0;c[t>>2]=w;c[t+4>>2]=v;t=x+16|0;c[t>>2]=u;c[t+4>>2]=r;u=x+24|0;c[u>>2]=y;c[u+4>>2]=z;if(!n){y=Sv(w|0,v|0,-1,-1)|0;z=L()|0;h=x+32|0;c[h>>2]=y;c[h+4>>2]=z}else{n=x+96|0;c[x+40>>2]=n;a[x+5>>0]=1;c[x+44>>2]=h;if(h|0)ew(n|0,q|0,h|0)|0;s=n+h|0;t=s+20|0;do{a[s>>0]=0;s=s+1|0}while((s|0)<(t|0))}n=c[F>>2]|0;if(!(n&15)){p=c[m>>2]|0;if(mb()|0)break;p=sb(p,(n<<2)+64|0,0)|0;if(!p)break;c[m>>2]=p;n=c[F>>2]|0}else p=c[m>>2]|0;c[F>>2]=n+1;c[p+(n<<2)>>2]=x;n=Gc(B)|0;if((n|0)!=100)break d}if((G|0)==152)break;do if((c[x+56>>2]|0)==0?(I=c[x+64>>2]|0,I|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](I);break}else{K=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);break}while(0);do if((a[x+5>>0]|0)==0?(J=c[x+40>>2]|0,J|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](J);break}else{K=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J);break}while(0);n=c[x+52>>2]|0;do if(n|0){p=c[n+20>>2]|0;gc(c[n+16>>2]|0)|0;if(p|0){if(c[p+480>>2]|0){Xd(p,n);break}K=n;if((c[p+304>>2]|0)>>>0<=K>>>0?(c[p+308>>2]|0)>>>0>K>>>0:0){K=p+300|0;c[n>>2]=c[K>>2];c[K>>2]=n;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{K=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](x);else{K=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x)}n=7}}while(0);q=o;if(!o){m=0;K=n;j=(K|0)==101;K=j?m:K;Ra=M;return K|0}o=c[q>>2]|0;K=q+136|0;m=c[K+4>>2]|0;if((m|0)>0|(m|0)==0&(c[K>>2]|0)>>>0>0)hc(o,q);p=kc(q)|0;c[q+20>>2]=770837923;c[q+36>>2]=-1;c[q+40>>2]=0;a[q+146>>0]=2;c[q+44>>2]=0;c[q+32>>2]=1;a[q+147>>0]=-1;c[q+48>>2]=0;K=q+64|0;c[K>>2]=0;c[K+4>>2]=0;if((p|0)==3082|(a[o+81>>0]|0)!=0){og(o);m=7;K=n;j=(K|0)==101;K=j?m:K;Ra=M;return K|0}else{m=c[o+68>>2]&p;K=n;j=(K|0)==101;K=j?m:K;Ra=M;return K|0}return 0}function Yp(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=Ra;Ra=Ra+16|0;E=F+4|0;C=F;l=a[g>>0]|0;k=l&255;if(k&128){z=d[g+1>>0]|0;k=z<<7|l&127;if(z&128){z=d[g+2>>0]|0;k=z<<14|k&16383;if(z&128){z=d[g+3>>0]|0;k=z<<21|k&2097151;if(!(z&128))z=k;else z=(a[g+4>>0]&7)<<28|k&268435455}else z=k}else z=k}else z=k;y=g+h|0;if(l<<24>>24<=-1)if((a[g+1>>0]|0)<=-1)if((a[g+2>>0]|0)<=-1)if((a[g+3>>0]|0)>-1)k=4;else{k=28;h=g+4|0;do{x=h;h=h+1|0;k=k+7|0}while(k>>>0<64&(a[x>>0]|0)<0);k=h-g|0}else k=3;else k=2;else k=1;n=g+k|0;h=a[n>>0]|0;k=h&255;do if(!(k&128)){m=1;l=h&255;h=0}else{x=d[n+1>>0]|0;k=x<<7|k&127;if(!(x&128)){m=2;l=k;h=0;break}x=d[n+2>>0]|0;k=x<<14|k&16383;if(!(x&128)){m=3;l=k;h=0;break}x=d[n+3>>0]|0;l=x<<21|k&2097151;if(!(x&128)){m=4;h=0;break}k=28;m=n+4|0;l=l&268435455;h=0;do{x=m;m=m+1|0;x=d[x>>0]|0;w=cw(x&127|0,0,k|0)|0;l=Sv(w|0,L()|0,l|0,h|0)|0;h=L()|0;k=k+7|0}while(k>>>0<64&((x&128|0)!=0|0!=0));m=m-n|0}while(0);o=n+m|0;if(o>>>0>y>>>0){E=267;Ra=F;return E|0}a:do if(o>>>0>>0){w=g;x=y;n=i;m=j;g=1;k=0;r=0;t=0;while(1){u=(n|0)!=0;v=(m|0)!=0;if(!(u|v)){h=0;break a}if(!g){p=a[o>>0]|0;g=p&255;if(g&128){s=d[o+1>>0]|0;g=s<<7|p&127;if(s&128){s=d[o+2>>0]|0;g=s<<14|g&16383;if(s&128){s=d[o+3>>0]|0;g=s<<21|g&2097151;if(!(s&128))p=4;else{g=(a[o+4>>0]&7)<<28|g&268435455;p=5}}else p=3}else p=2}else p=1;o=o+p|0}else g=0;q=a[o>>0]|0;p=q&255;if(p&128){s=d[o+1>>0]|0;p=s<<7|q&127;if(s&128){s=d[o+2>>0]|0;p=s<<14|p&16383;if(s&128){s=d[o+3>>0]|0;p=s<<21|p&2097151;if(!(s&128))q=4;else{p=(a[o+4>>0]&7)<<28|p&268435455;q=5}}else q=3}else q=2}else q=1;s=o+q|0;o=s;if((g|0)>(o-w|0)){h=267;break a}if((p|0)==0|(p|0)>(x-o|0)){h=267;break a}o=Sv(p|0,((p|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;q=L()|0;if((q|0)>(r|0)|(q|0)==(r|0)&o>>>0>t>>>0){q=cw(o|0,q|0,1)|0;r=L()|0;if(mb()|0){h=7;break a}o=sb(k,q,r)|0;if(!o){h=7;break a}else k=o}else q=t;ew(k+g|0,s|0,p|0)|0;t=p+g|0;o=s+p|0;g=(t|0)>(f|0);p=Lu(e,k,g?f:t)|0;do if(u){if((p|0)>=0?(p|0)!=0|g^1:0)break;D=n;c[D>>2]=l;c[D+4>>2]=h;D=49}else D=49;while(0);if((D|0)==49){D=0;if(v&(p|0)<0){n=m;c[n>>2]=l;c[n+4>>2]=h;n=0;m=0}else n=0}l=Sv(l|0,h|0,1,0)|0;h=L()|0;if(o>>>0>=y>>>0){D=52;break}else{g=0;t=q}}}else{n=i;m=j;k=0;D=52}while(0);if((D|0)==52){if(n|0){y=n;c[y>>2]=l;c[y+4>>2]=h}if(!m)h=0;else{y=m;c[y>>2]=l;c[y+4>>2]=h;h=0}}do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{y=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);if(!((z|0)>1&(h|0)==0)){E=h;Ra=F;return E|0}c[E>>2]=0;c[C>>2]=0;if((i|0)!=0&(j|0)!=0?(B=i,A=c[B>>2]|0,B=c[B+4>>2]|0,z=j,!((A|0)==(c[z>>2]|0)?(B|0)==(c[z+4>>2]|0):0)):0){k=dq(b,A,B,E,C)|0;if(!k)k=Yp(b,e,f,c[E>>2]|0,c[C>>2]|0,i,0)|0;i=c[E>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{B=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[E>>2]=0;if(!k){k=j;i=0;D=71}}else{k=(i|0)==0?j:i;D=71}do if((D|0)==71){k=dq(b,c[k>>2]|0,c[k+4>>2]|0,E,C)|0;if(!k)k=Yp(b,e,f,c[E>>2]|0,c[C>>2]|0,i,j)|0;i=c[E>>2]|0;if(i)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{E=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);E=k;Ra=F;return E|0}function Zp(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a>>2]|0;b=c[b>>2]|0;d=c[e+16>>2]|0;a=c[b+16>>2]|0;b=Lu(c[e+12>>2]|0,c[b+12>>2]|0,(d|0)<(a|0)?d:a)|0;return ((b|0)==0?d-a|0:b)|0}function _p(b,c){b=b|0;c=c|0;var d=0;if((c|0)<1){c=Eu(b)|0;if((c|0)<=0){d=0;return d|0}}d=0;while(1){d=d<<3^d^a[b>>0];if((c|0)<=1)break;else{b=b+1|0;c=c+-1|0}}d=d&2147483647;return d|0}function $p(b,c){b=b|0;c=c|0;var d=0;if((c|0)<=0){d=0;return d|0}d=0;while(1){d=d<<3^d^a[b>>0];if((c|0)<=1)break;else{b=b+1|0;c=c+-1|0}}d=d&2147483647;return d|0}function aq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((b|0)==(d|0))a=av(a,c,b)|0;else a=1;return a|0}function bq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((b|0)==(d|0))a=Lu(a,c,b)|0;else a=1;return a|0}function cq(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+48|0;k=n+24|0;h=n+16|0;g=n;l=n+32|0;m=a+56+(d<<2)|0;i=c[m>>2]|0;c[l>>2]=i;j=i;if(!i){switch(d|0){case 18:{k=c[a+20>>2]|0;d=c[a+224>>2]|0;c[g>>2]=c[a+16>>2];c[g+4>>2]=k;c[g+8>>2]=d;g=Bb(52240,g)|0;d=133;break}case 7:{c[h>>2]=c[a+220>>2];g=Bb(51509,h)|0;d=129;break}default:{g=c[25936+(d<<2)>>2]|0;d=c[a+20>>2]|0;c[k>>2]=c[a+16>>2];c[k+4>>2]=d;g=Bb(g,k)|0;d=133}}if(!g){d=7;i=0}else{d=qd(c[a+12>>2]|0,g,-1,d,0,l,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{a=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}j=c[l>>2]|0;c[m>>2]=j;i=j}}else d=0;if((f|0)==0|(i|0)==0){f=d;c[e>>2]=j;Ra=n;return f|0}m=b[i+16>>1]|0;h=m<<16>>16;if(!(m<<16>>16>0&(d|0)==0)){f=d;c[e>>2]=j;Ra=n;return f|0}g=0;do{d=g;g=g+1|0;d=Yc(i,g,c[f+(d<<2)>>2]|0)|0}while((g|0)<(h|0)&(d|0)==0);c[e>>2]=j;Ra=n;return d|0}function dq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+16|0;j=l;k=b+248|0;h=c[k>>2]|0;if(!h){i=b+244|0;h=c[i>>2]|0;if(!h){c[j>>2]=c[b+20>>2];h=Bb(53537,j)|0;c[i>>2]=h;if(!h){f=7;Ra=l;return f|0}}h=ad(c[b+12>>2]|0,c[b+16>>2]|0,h,53549,d,e,0,k)|0}else h=ld(h,d,e)|0;if(h|0){f=h;Ra=l;return f|0}h=c[k>>2]|0;if((h|0)!=0?(c[h+16>>2]|0)!=0:0)j=c[h>>2]|0;else j=0;c[g>>2]=j;if(!f){f=0;Ra=l;return f|0}i=nb(j+20|0)|0;do if(i){h=jd(c[k>>2]|0,i,j,0,81)|0;j=i+j|0;b=j+20|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(b|0));if(h)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);i=0;break}else{k=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);i=0;break}else h=0}else{i=0;h=7}while(0);c[f>>2]=i;f=h;Ra=l;return f|0}function eq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;m=d+4|0;p=c[m>>2]|0;n=d+28|0;a:do if((c[n>>2]|0)==0?(o=(e|0)==0,(p|0)>0):0){l=0;b:while(1){j=c[(c[d>>2]|0)+(l<<2)>>2]|0;k=j+40|0;h=j+60|0;i=j+64|0;c:do if(o){g=fq(b,j)|0;if(g|0){q=43;break b}}else{do{g=fq(b,j)|0;if(g|0){q=43;break b}if(!(c[k>>2]|0))break c;r=c[h>>2]|0;g=Lu(c[i>>2]|0,e,(r|0)>(f|0)?f:r)|0;g=(g|0)==0?r-f|0:g}while((g|0)<0);if((g|0)!=0&(a[j+4>>0]|0)!=0){if(!(a[j+5>>0]|0)){g=c[k>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{r=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);g=j+52|0;h=c[g>>2]|0;do if(h|0){i=c[h+20>>2]|0;gc(c[h+16>>2]|0)|0;if(i|0){if(c[i+480>>2]|0){Xd(i,h);break}r=h;if((c[i+304>>2]|0)>>>0<=r>>>0?(c[i+308>>2]|0)>>>0>r>>>0:0){r=i+300|0;c[h>>2]=c[r>>2];c[r>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{r=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[g>>2]=0}c[k>>2]=0}}while(0);if(c[n>>2]|0)break a;l=l+1|0;if((l|0)>=(c[m>>2]|0))break a}if((q|0)==43)return g|0}while(0);e=c[d>>2]|0;n=p+-1|0;if((p|0)<=1){r=0;return r|0}b=n;while(1){d=b;b=b+-1|0;d:do if((d|0)<(p|0)){k=b;j=c[e+(b<<2)>>2]|0;do{l=k;k=k+1|0;f=e+(k<<2)|0;i=c[f>>2]|0;h=(c[j+40>>2]|0)==0;m=i;g=c[i+40>>2]|0;if(!h)if(!g){g=0;q=37}else{o=c[j+60>>2]|0;g=c[i+60>>2]|0;r=o-g|0;g=Lu(c[j+64>>2]|0,c[i+64>>2]|0,(r|0)<0?o:g)|0;g=(g|0)==0?r:g}else q=37;if((q|0)==37){q=0;g=(h&1)-((g|0)==0&1)|0}if(!g)g=(c[i>>2]|0)-(c[j>>2]|0)|0;if((g|0)<0)break d;r=e+(l<<2)|0;j=c[r>>2]|0;c[f>>2]=j;c[r>>2]=m}while((k|0)<(n|0))}while(0);if((d|0)<=1){g=0;break}}return g|0}function fq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=e+72|0;f=c[s>>2]|0;if(!f)f=c[e+40>>2]|0;else f=f+(c[e+76>>2]|0)|0;if((f|0)!=0?(g=e+40|0,h=c[g>>2]|0,f>>>0<(h+(c[e+44>>2]|0)|0)>>>0):0){l=f;i=h;q=g}else r=6;do if((r|0)==6){k=e+56|0;f=c[k>>2]|0;if(f|0){g=c[f>>2]|0;j=e+40|0;f=c[j>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{r=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[j>>2]=0;if(!g){s=0;return s|0}h=c[g+8>>2]|0;i=(c[h>>2]|0)+1|0;c[e+64>>2]=c[g+12>>2];c[e+60>>2]=c[g+16>>2];f=nb(i)|0;if(!f){s=7;return s|0}ew(f|0,c[h+4>>2]|0,i|0)|0;c[e+76>>2]=i;c[e+44>>2]=i;c[s>>2]=f;c[j>>2]=f;c[k>>2]=(c[k>>2]|0)+4;s=0;return s|0}j=e+40|0;if(!(a[e+5>>0]|0)){f=c[j>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{q=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);f=e+52|0;g=c[f>>2]|0;do if(g|0){h=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);break}q=g;if((c[h+304>>2]|0)>>>0<=q>>>0?(c[h+308>>2]|0)>>>0>q>>>0:0){q=h+300|0;c[g>>2]=c[q>>2];c[q>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[f>>2]=0}c[j>>2]=0;h=e+32|0;g=h;f=c[g>>2]|0;g=c[g+4>>2]|0;q=e+16|0;o=c[q+4>>2]|0;if(!((g|0)<(o|0)|((g|0)==(o|0)?f>>>0<(c[q>>2]|0)>>>0:0))){s=0;return s|0}q=Sv(f|0,g|0,1,0)|0;f=L()|0;o=h;c[o>>2]=q;c[o+4>>2]=f;f=dq(b,q,f,j,e+44|0)|0;if(!f){i=c[j>>2]|0;l=i;q=j;break}else{s=f;return s|0}}while(0);o=e+52|0;h=c[o>>2]|0;a:do if(h){f=i;j=l+20|0;b=e+48|0;k=e+44|0;g=c[b>>2]|0;if((j-f|0)>(g|0)){while(1){i=(c[k>>2]|0)-g|0;i=(i|0)<4096?i:4096;f=jd(h,f+g|0,i,g,81)|0;if(f|0){p=f;r=94;break}h=(c[b>>2]|0)+i|0;c[b>>2]=h;h=(c[q>>2]|0)+h|0;i=h+20|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(i|0));g=c[b>>2]|0;m=c[o>>2]|0;if((g|0)==(c[k>>2]|0))break;if(!m){k=0;break a}f=c[q>>2]|0;if((j-f|0)<=(g|0)){k=m;break a}else h=m}if((r|0)==94)return p|0;do if(m|0){f=c[m+20>>2]|0;gc(c[m+16>>2]|0)|0;if(f|0){if(c[f+480>>2]|0){Xd(f,m);break}n=m;if((c[f+304>>2]|0)>>>0<=n>>>0?(c[f+308>>2]|0)>>>0>n>>>0:0){n=f+300|0;c[m>>2]=c[n>>2];c[n>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{n=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[o>>2]=0;c[b>>2]=0;k=0}else k=h}else k=0;while(0);g=a[l>>0]|0;f=g&255;if(f&128){n=d[l+1>>0]|0;f=n<<7|g&127;if(n&128){n=d[l+2>>0]|0;f=n<<14|f&16383;if(n&128){n=d[l+3>>0]|0;f=n<<21|f&2097151;if(!(n&128))g=4;else{f=(a[l+4>>0]&7)<<28|f&268435455;g=5}}else g=3}else g=2}else g=1;i=l+g|0;h=a[i>>0]|0;g=h&255;if(g&128){n=d[i+1>>0]|0;g=n<<7|h&127;if(n&128){n=d[i+2>>0]|0;g=n<<14|g&16383;if(n&128){n=d[i+3>>0]|0;g=n<<21|g&2097151;if(!(n&128))h=4;else{g=(a[i+4>>0]&7)<<28|g&268435455;h=5}}else h=3}else h=2}else h=1;m=i+h|0;if((g|0)<1){s=267;return s|0}n=e+44|0;l=m;if(((c[q>>2]|0)+(c[n>>2]|0)-l|0)<(g|0)){s=267;return s|0}b=e+68|0;h=c[b>>2]|0;if((f|0)>(h|0)){s=267;return s|0}i=Sv(g|0,((g|0)<0)<<31>>31|0,f|0,((f|0)<0)<<31>>31|0)|0;j=L()|0;t=((h|0)<0)<<31>>31;do if((j|0)>(t|0)|(j|0)==(t|0)&i>>>0>h>>>0){j=cw(i|0,j|0,1)|0;h=L()|0;k=e+64|0;i=c[k>>2]|0;if(mb()|0){t=7;return t|0}h=sb(i,j,h)|0;if(!h){t=7;return t|0}else{c[k>>2]=h;c[b>>2]=j;h=c[o>>2]|0;break}}else h=k;while(0);b:do if(h|0){b=g+10+l|0;l=e+48|0;i=c[l>>2]|0;k=h;while(1){h=c[q>>2]|0;if((b-h|0)<=(i|0))break b;j=(c[n>>2]|0)-i|0;j=(j|0)<4096?j:4096;h=jd(k,h+i|0,j,i,81)|0;if(h|0){p=h;r=94;break}h=(c[l>>2]|0)+j|0;c[l>>2]=h;h=(c[q>>2]|0)+h|0;i=h+20|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(i|0));i=c[l>>2]|0;k=c[o>>2]|0;if((i|0)==(c[n>>2]|0))break;if(!k)break b}if((r|0)==94)return p|0;do if(k|0){h=c[k+20>>2]|0;gc(c[k+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,k);break}t=k;if((c[h+304>>2]|0)>>>0<=t>>>0?(c[h+308>>2]|0)>>>0>t>>>0:0){t=h+300|0;c[k>>2]=c[t>>2];c[t>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{t=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[o>>2]=0;c[l>>2]=0}while(0);ew((c[e+64>>2]|0)+f|0,m|0,g|0)|0;c[e+60>>2]=g+f;h=m+g|0;f=a[h>>0]|0;g=f&255;i=e+76|0;if(g&128){t=d[h+1>>0]|0;f=t<<7|f&127;if(t&128){t=d[h+2>>0]|0;f=t<<14|f&16383;if(t&128){t=d[h+3>>0]|0;f=t<<21|f&2097151;if(!(t&128)){g=f;f=4}else{g=(a[h+4>>0]&7)<<28|f&268435455;f=5}}else{g=f;f=3}}else{g=f;f=2}}else f=1;c[i>>2]=g;f=h+f|0;c[s>>2]=f;c[e+80>>2]=0;if((g|0)>((c[n>>2]|0)-f+(c[q>>2]|0)|0)){t=267;return t|0}if((c[e+48>>2]|0)==0?a[f+(g+-1)>>0]|0:0){t=267;return t|0}t=0;return t|0} -function qk(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Y=Ra;Ra=Ra+96|0;R=Y+32|0;Q=Y+24|0;O=Y+16|0;w=Y+8|0;u=Y;S=Y+56|0;T=Y+84|0;P=f+40|0;X=c[P>>2]|0;c[P>>2]=X+1;P=f+8|0;l=c[P>>2]|0;a:do if(!l){n=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[n+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))W=15;else{V=0;break a}else{do if((e[n+276>>1]|0)>=224){l=n+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];V=n+284|0;c[V>>2]=(c[V>>2]|0)+1;break b}l=n+296|0;m=c[l>>2]|0;if(!m){l=n+292|0;break}else{c[l>>2]=c[m>>2];V=n+284|0;c[V>>2]=(c[V>>2]|0)+1;break b}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;W=15}while(0);if((W|0)==15)m=_d(n,224,0)|0;if(!m)V=0;else{o=m+104|0;q=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(q|0));c[m>>2]=n;l=n+4|0;n=c[l>>2]|0;if(n|0)c[n+4>>2]=m;c[m+8>>2]=n;c[m+4>>2]=0;c[l>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[P>>2]=m;Di(m,61,0,1,0)|0;V=m}}else V=l;while(0);N=(h&4|0)!=0;if(i)if(!(c[g+4>>2]&2048))M=i;else{o=c[c[g+20>>2]>>2]|0;p=c[o>>2]|0;c:do if((p|0)>0){l=0;while(1){m=c[o+4+(l*20|0)>>2]|0;n=a[m>>0]|0;if((n+91&255)<2)do{m=c[m+12>>2]|0;n=a[m>>0]|0}while((n+91&255)<2);if(n<<24>>24==-88)n=a[m+38>>0]|0;switch(n<<24>>24){case -110:case -111:case 110:case -109:break;case -94:{if(c[m+4>>2]&1048576|0)break c;n=c[m+44>>2]|0;if(!n)break c;M=b[m+32>>1]|0;if(M<<16>>16>-1?(a[(c[n+4>>2]|0)+(M<<16>>16<<4)+12>>0]|0)==0:0)break c;break}default:break c}l=l+1|0;if((l|0)>=(p|0))break c}}else l=0;while(0);M=(l|0)==(p|0)?0:i}else M=0;d:do if(((((((((c[f+36>>2]|0)==0?(c[g+4>>2]&2080|0)==2048:0)?(s=c[g+20>>2]|0,(c[s+52>>2]|0)==0):0)?(c[s+8>>2]&9|0)==0:0)?(c[s+60>>2]|0)==0:0)?(c[s+36>>2]|0)==0:0)?(r=c[s+32>>2]|0,(c[r>>2]|0)==1):0)?(c[r+28>>2]|0)==0:0)?(x=c[r+24>>2]|0,(c[x+56>>2]|0)==0):0){H=c[s>>2]|0;I=c[H>>2]|0;J=(I|0)>0;if(J){l=0;do{if((a[c[H+4+(l*20|0)>>2]>>0]|0)!=-94){W=191;break d}l=l+1|0}while((l|0)<(I|0));if(!s){W=191;break}}m=c[x+72>>2]|0;if(!m)l=-1e6;else{n=c[(c[f>>2]|0)+16>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0}o=l<<16;K=o>>16;p=c[f+116>>2]|0;p=(p|0)==0?f:p;l=p+84|0;m=c[l>>2]|0;n=1<>2]=n|m,(o|0)==65536):0)?(v=c[p>>2]|0,t=v+16|0,(c[(c[t>>2]|0)+20>>2]|0)==0):0)?(a[p+199>>0]|0)==0:0){l=Pe(c[v>>2]|0,0,v,S,0,542)|0;if(l|0){cd(p,32157,u);c[p+12>>2]=l;break}G=c[S>>2]|0;c[(c[t>>2]|0)+20>>2]=G;l=c[v+92>>2]|0;o=c[G+4>>2]|0;c[o+4>>2]=c[G>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;i=o+36|0;q=(c[p>>2]|0)-(c[i>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[p>>2]=l;n=o+80|0;l=c[n>>2]|0;if(!l)break;m=l+-4|0;c[n>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;G=(c[14820]|0)+1|0;c[14820]=G;c[14821]=(G|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;W=68;break}else{l=Wa[c[29352>>2]&127](m)|0;W=68}while(0);do if((W|0)==68){c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{G=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);G=Se(c[o>>2]|0,p,q)|0;c[i>>2]=(c[p>>2]|0)-(q&65535);if((G|0)!=7)break;l=v+81|0;do if(!(a[l>>0]|0)){if(a[v+82>>0]|0)break;a[l>>0]=1;if((c[v+180>>2]|0)>0)c[v+264>>2]=1;l=v+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[v+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);break e}while(0)}while(0);Hj(f,K,c[x+28>>2]|0,0,c[x>>2]|0);G=(I|0)==1;if(G?(b[(c[H+4>>2]|0)+32>>1]|0)<0:0){m=V+108|0;l=c[m>>2]|0;if((c[V+112>>2]|0)>(l|0)){c[m>>2]=l+1;o=c[V+104>>2]|0;a[o+(l*20|0)>>0]=17;o=o+(l*20|0)+1|0;q=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(q|0))}else l=Di(V,17,0,0,0)|0;Gj(f,X,K,x,108);c[w>>2]=c[x>>2];nk(f,0,39096,w);m=c[m>>2]|0;if(!(a[(c[V>>2]|0)+81>>0]|0))l=(c[V+104>>2]|0)+(((l|0)<0?m+-1|0:l)*20|0)|0;else l=59308;c[l+8>>2]=m;n=1;break}if(J){r=c[g+12>>2]|0;i=a[r>>0]|0;q=r+38|0;s=r+20|0;t=r+20|0;u=x+4|0;v=i<<24>>24==-125;f:do if(i<<24>>24==-88){p=1;i=0;m=a[q>>0]|0;while(1){switch(m<<24>>24){case -87:{l=s;W=95;break}case -125:{l=c[t>>2]|0;W=95;break}default:o=r}g:do if((W|0)==95){W=0;if((c[c[l>>2]>>2]|0)<2){o=r;break}do if(v)l=m;else{if(m<<24>>24==-125){l=-125;break}o=c[(c[s>>2]|0)+4+(i*20|0)>>2]|0;break g}while(0);o=c[(c[c[t>>2]>>2]|0)+4+(i*20|0)>>2]|0;m=l}while(0);l=b[(c[H+4+(i*20|0)>>2]|0)+32>>1]|0;if(l<<16>>16>-1)n=a[(c[u>>2]|0)+(l<<16>>16<<4)+13>>0]|0;else n=68;l=Xj(o)|0;if(n<<24>>24==0|l<<24>>24==0)l=(l|n)<<24>>24==0?65:(l&255)+(n&255)|0;else l=n<<24>>24>66|l<<24>>24>66?67:65;p=((l<<24>>24)+-65|0)>>>0<2?p:n<<24>>24>66&1;i=i+1|0;l=(p|0)!=0;if(!((i|0)<(I|0)&l))break f}}else{o=1;p=0;while(1){switch(i<<24>>24){case -87:{l=s;W=108;break}case -125:{l=c[t>>2]|0;W=108;break}default:m=r}h:do if((W|0)==108){W=0;if((c[c[l>>2]>>2]|0)<2){m=r;break}do if(!v){if((a[q>>0]|0)==-125)break;m=c[(c[s>>2]|0)+4+(p*20|0)>>2]|0;break h}while(0);m=c[(c[c[t>>2]>>2]|0)+4+(p*20|0)>>2]|0}while(0);l=b[(c[H+4+(p*20|0)>>2]|0)+32>>1]|0;if(l<<16>>16>-1)n=a[(c[u>>2]|0)+(l<<16>>16<<4)+13>>0]|0;else n=68;l=Xj(m)|0;if(n<<24>>24==0|l<<24>>24==0)l=(l|n)<<24>>24==0?65:(l&255)+(n&255)|0;else l=n<<24>>24>66|l<<24>>24>66?67:65;o=((l<<24>>24)+-65|0)>>>0<2?o:n<<24>>24>66&1;p=p+1|0;l=(o|0)!=0;if(!((p|0)<(I|0)&l))break f}}while(0);if(!l){W=191;break}}l=c[x+8>>2]|0;if(l){w=cw(1,0,I|0)|0;w=Sv(w|0,L()|0,-1,-1)|0;x=L()|0;y=g+12|0;z=(j|0)==0;D=V+108|0;A=V+112|0;F=V+104|0;C=(M|0)==0;E=f+44|0;B=l;i:while(1){l=b[B+52>>1]|0;m=l&65535;j:do if((I|0)<=(m|0)){if((l&65535)>62|(c[B+36>>2]|0)!=0)break;do if(N){if((I|0)<(e[B+50>>1]|0))break j;if((I|0)>=(m|0))break;if(!(a[B+54>>0]|0))break j}while(0);k:do if(J){u=B+4|0;v=B+32|0;t=0;m=0;l=0;while(1){n=c[y>>2]|0;p=a[n>>0]|0;if(p<<24>>24==-88)o=a[n+38>>0]|0;else o=p;switch(o<<24>>24){case -87:{o=n+20|0;W=135;break}case -125:{o=c[n+20>>2]|0;W=135;break}default:{}}l:do if((W|0)==135){if((c[c[o>>2]>>2]|0)<2)break;do if(p<<24>>24!=-125){if((a[n+38>>0]|0)==-125)break;n=c[(c[n+20>>2]|0)+4+(t*20|0)>>2]|0;break l}while(0);n=c[(c[c[n+20>>2]>>2]|0)+4+(t*20|0)>>2]|0}while(0);o=c[H+4+(t*20|0)>>2]|0;m:do if(!(c[n+4>>2]&256)){do if(o|0){if(!(c[o+4>>2]&256))break;n=Yi(f,o)|0;W=148;break m}while(0);n=Yi(f,n)|0;if(!n){n=Yi(f,o)|0;W=148;break}else{s=c[u>>2]|0;r=b[o+32>>1]|0;W=152;break}}else{n=Yi(f,n)|0;W=148}while(0);n:do if((W|0)==148){W=0;p=c[u>>2]|0;o=b[o+32>>1]|0;if(n|0){s=p;r=o;W=152;break}n=0;do{if((b[p+(n<<1)>>1]|0)==o<<16>>16)break n;n=n+1|0}while((n|0)<(I|0))}while(0);o:do if((W|0)==152){W=0;o=0;while(1){if((b[s+(o<<1)>>1]|0)==r<<16>>16){i=c[n>>2]|0;q=c[(c[v>>2]|0)+(o<<2)>>2]|0;Z=a[i>>0]|0;p=(d[208+(Z&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0;if(!(Z<<24>>24==0|(p|0)!=0))do{i=i+1|0;q=q+1|0;Z=a[i>>0]|0;p=(d[208+(Z&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(Z<<24>>24==0|(p|0)!=0));if(!p){n=o;break o}}o=o+1|0;if((o|0)>=(I|0)){n=o;break}}}while(0);if((n|0)==(I|0))break k;o=cw(1,0,n|0)|0;p=L()|0;if(!((o&m|0)==0&(p&l|0)==0))break k;m=o|m;l=p|l;if(!z)c[j+(t<<2)>>2]=n;t=t+1|0;if((t|0)>=(I|0))break k}}else{m=0;l=0}while(0);if((m|0)==(w|0)&(l|0)==(x|0))break i}while(0);l=c[B+20>>2]|0;if(!l){W=191;break d}else B=l}l=c[D>>2]|0;if((c[A>>2]|0)>(l|0)){c[D>>2]=l+1;o=c[F>>2]|0;a[o+(l*20|0)>>0]=17;o=o+(l*20|0)+1|0;q=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(q|0));o=l}else o=Di(V,17,0,0,0)|0;c[O>>2]=c[B>>2];nk(f,0,39143,O);l=c[B+44>>2]|0;m=c[D>>2]|0;if((c[A>>2]|0)>(m|0)){c[D>>2]=m+1;Z=c[F>>2]|0;a[Z+(m*20|0)>>0]=108;b[Z+(m*20|0)+2>>1]=0;c[Z+(m*20|0)+4>>2]=X;c[Z+(m*20|0)+8>>2]=l;c[Z+(m*20|0)+12>>2]=K;c[Z+(m*20|0)+16>>2]=0;a[Z+(m*20|0)+1>>0]=0}else Di(V,108,X,l,K)|0;m=c[P>>2]|0;n=Ij(f,B)|0;p:do if(n|0){l=c[m>>2]|0;if(!(a[l+81>>0]|0)){f=c[m+104>>2]|0;Z=(c[m+108>>2]|0)+-1|0;a[f+(Z*20|0)+1>>0]=-9;c[f+(Z*20|0)+16>>2]=n;break}if(c[l+480>>2]|0)break;Z=(c[n>>2]|0)+-1|0;c[n>>2]=Z;if(Z|0)break;l=c[n+12>>2]|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,n);break p}m=n;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;Z=l+300|0;c[n>>2]=c[Z>>2];c[Z>>2]=n;break p}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Z=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);n=(d[c[B+28>>2]>>0]|0)+3|0;do if(!C){l=(c[E>>2]|0)+1|0;c[E>>2]=l;c[M>>2]=l;if(!G)break;sk(V,X,l)}while(0);m=c[D>>2]|0;if(!(a[(c[V>>2]|0)+81>>0]|0))l=(c[F>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else l=59308;c[l+8>>2]=m}else W=191}else W=191;while(0);do if((W|0)==191){if(h&1|0?(c[g+4>>2]&2048|0)==0:0){O=g+12|0;h=c[O>>2]|0;c[O>>2]=0;Z=S+20|0;a[Z>>0]=1;c[S+4>>2]=127;c[S+8>>2]=128;c[S+24>>2]=0;_j(S,g)|0;Z=a[Z>>0]|0;c[O>>2]=h;if(!(Z<<24>>24)){n=5;break}if((c[c[g+20>>2]>>2]|0)<3){n=5;break}}F=f+132|0;G=c[F>>2]|0;if(!N)if(!M)E=0;else{Z=f+44|0;E=(c[Z>>2]|0)+1|0;c[Z>>2]=E;c[M>>2]=E}else{c[F>>2]=0;E=0}D=c[P>>2]|0;u=g+4|0;l=c[u>>2]|0;do if((l&32|0)==0?(c[f+52>>2]|0)==0:0){if(!(l&33554432)){c[u>>2]=l|33554432;n=f+44|0;l=(c[n>>2]|0)+1|0;c[n>>2]=l;c[g+48>>2]=l;n=D+108|0;m=c[n>>2]|0;o=D+112|0;if((c[o>>2]|0)>(m|0)){Z=m+1|0;c[n>>2]=Z;W=c[D+104>>2]|0;a[W+(m*20|0)>>0]=70;b[W+(m*20|0)+2>>1]=0;c[W+(m*20|0)+4>>2]=0;c[W+(m*20|0)+8>>2]=l;c[W+(m*20|0)+12>>2]=0;c[W+(m*20|0)+16>>2]=0;a[W+(m*20|0)+1>>0]=0;l=Z}else l=(Di(D,70,0,l,0)|0)+1|0;c[g+44>>2]=l;l=c[n>>2]|0;if((c[o>>2]|0)>(l|0)){c[n>>2]=l+1;o=c[D+104>>2]|0;a[o+(l*20|0)>>0]=17;o=o+(l*20|0)+1|0;q=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(q|0));m=l;W=223;break}else{m=Di(D,17,0,0,0)|0;W=223;break}}p=D+108|0;l=c[p>>2]|0;i=D+112|0;if((c[i>>2]|0)>(l|0)){c[p>>2]=l+1;o=c[D+104>>2]|0;a[o+(l*20|0)>>0]=17;o=o+(l*20|0)+1|0;q=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(q|0));o=l}else o=Di(D,17,0,0,0)|0;if(c[u>>2]&2048|0){c[Q>>2]=c[(c[g+20>>2]|0)+20>>2];nk(f,0,39174,Q)}l=c[g+48>>2]|0;m=c[g+44>>2]|0;n=c[p>>2]|0;if((c[i>>2]|0)>(n|0)){c[p>>2]=n+1;Z=c[D+104>>2]|0;a[Z+(n*20|0)>>0]=12;b[Z+(n*20|0)+2>>1]=0;c[Z+(n*20|0)+4>>2]=l;c[Z+(n*20|0)+8>>2]=m;c[Z+(n*20|0)+12>>2]=0;c[Z+(n*20|0)+16>>2]=0;a[Z+(n*20|0)+1>>0]=0}else Di(D,12,l,m,0)|0;l=c[g+28>>2]|0;m=c[p>>2]|0;if((c[i>>2]|0)>(m|0)){c[p>>2]=m+1;Z=c[D+104>>2]|0;a[Z+(m*20|0)>>0]=111;b[Z+(m*20|0)+2>>1]=0;c[Z+(m*20|0)+4>>2]=X;c[Z+(m*20|0)+8>>2]=l;c[Z+(m*20|0)+12>>2]=0;c[Z+(m*20|0)+16>>2]=0;a[Z+(m*20|0)+1>>0]=0}else Di(D,111,X,l,0)|0;m=c[p>>2]|0;if(!(a[(c[D>>2]|0)+81>>0]|0))l=(c[D+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else l=59308;c[l+8>>2]=m}else{m=0;W=223}while(0);do if((W|0)==223){s=g+12|0;v=c[s>>2]|0;l=a[v>>0]|0;if(l<<24>>24==-88)l=a[v+38>>0]|0;switch(l<<24>>24){case -87:{l=v+20|0;W=228;break}case -125:{l=c[v+20>>2]|0;W=228;break}default:t=1}if((W|0)==228)t=c[c[l>>2]>>2]|0;c[g+28>>2]=X;C=D+108|0;l=c[C>>2]|0;B=D+112|0;if((c[B>>2]|0)>(l|0)){c[C>>2]=l+1;A=c[D+104>>2]|0;a[A+(l*20|0)>>0]=113;b[A+(l*20|0)+2>>1]=0;c[A+(l*20|0)+4>>2]=X;c[A+(l*20|0)+8>>2]=t;c[A+(l*20|0)+12>>2]=0;c[A+(l*20|0)+16>>2]=0;a[A+(l*20|0)+1>>0]=0;A=l}else A=Di(D,113,X,t,0)|0;q=c[f>>2]|0;p=t+1|0;i=p*5|0;o=i+20|0;r=q+272|0;q:do if(c[r>>2]|0)if(!(a[q+81>>0]|0))W=242;else{z=0;y=1;x=0}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){l=q+300|0;n=c[l>>2]|0;if(n|0){c[l>>2]=c[n>>2];W=q+284|0;c[W>>2]=(c[W>>2]|0)+1;W=243;break q}l=q+296|0;n=c[l>>2]|0;if(!n){l=q+292|0;break}else{c[l>>2]=c[n>>2];W=q+284|0;c[W>>2]=(c[W>>2]|0)+1;W=243;break q}}else l=q+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;W=242}while(0);if((W|0)==242){n=_d(q,o,0)|0;W=243}do if((W|0)==243){if(n|0){c[n+16>>2]=n+20+(p<<2);b[n+6>>1]=t;b[n+8>>1]=p;a[n+4>>0]=a[q+78>>0]|0;c[n+12>>2]=q;c[n>>2]=1;gw(n+24|0,0,i+-4|0)|0;z=n;y=0;x=n;break}l=q+81|0;if((a[l>>0]|0)==0?(a[q+82>>0]|0)==0:0){a[l>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;c[r>>2]=(c[r>>2]|0)+1;l=c[q+236>>2]|0;if(l){c[l+12>>2]=7;z=0;y=1;x=n}else{z=0;y=1;x=n}}else{z=0;y=1;x=n}}while(0);if(!(c[u>>2]&2048)){o=c[g+20>>2]|0;if(!o)o=m;else{Z=Xj(v)|0;a[T>>0]=Z<<24>>24==0?65:Z;if(x|0){Z=Yi(f,c[s>>2]|0)|0;c[x+20>>2]=Z}w=f+19|0;n=a[w>>0]|0;if(n<<24>>24){Z=n+-1<<24>>24;a[w>>0]=Z;l=c[f+148+((Z&255)<<2)>>2]|0;if(!(Z<<24>>24))W=302;else{v=n+-2<<24>>24;a[w>>0]=v;v=c[f+148+((v&255)<<2)>>2]|0}}else{W=f+44|0;l=(c[W>>2]|0)+1|0;c[W>>2]=l;W=302}if((W|0)==302){Z=f+44|0;v=(c[Z>>2]|0)+1|0;c[Z>>2]=v}n=c[o>>2]|0;if((n|0)>0){q=S+20|0;r=S+4|0;s=S+8|0;t=S+24|0;u=D+104|0;i=o+4|0;p=n;while(1){o=c[i>>2]|0;do if(!m)m=0;else{a[q>>0]=1;c[r>>2]=127;c[s>>2]=128;c[t>>2]=0;if(!o)break;_j(S,o)|0;if(a[q>>0]|0)break;n=c[D>>2]|0;if(a[n+81>>0]|0){m=0;break}Z=c[u>>2]|0;Q=Z+(m*20|0)+1|0;R=Z+(m*20|0)+16|0;kg(n,a[Q>>0]|0,c[R>>2]|0);a[Q>>0]=0;c[R>>2]=0;a[Z+(m*20|0)>>0]=-86;m=0}while(0);o=Jj(f,o,l)|0;n=c[C>>2]|0;if((c[B>>2]|0)>(n|0)){c[C>>2]=n+1;Z=c[u>>2]|0;a[Z+(n*20|0)>>0]=92;b[Z+(n*20|0)+2>>1]=0;c[Z+(n*20|0)+4>>2]=o;c[Z+(n*20|0)+8>>2]=1;c[Z+(n*20|0)+12>>2]=v;c[Z+(n*20|0)+16>>2]=0;a[Z+(n*20|0)+1>>0]=0}else n=Di(D,92,o,1,v)|0;if(!(a[(c[D>>2]|0)+81>>0]|0)){if((n|0)<0)n=(c[C>>2]|0)+-1|0;Ei(D,(c[u>>2]|0)+(n*20|0)|0,T,1)}n=c[C>>2]|0;if((c[B>>2]|0)>(n|0)){c[C>>2]=n+1;Z=c[u>>2]|0;a[Z+(n*20|0)>>0]=-124;b[Z+(n*20|0)+2>>1]=0;c[Z+(n*20|0)+4>>2]=X;c[Z+(n*20|0)+8>>2]=v;c[Z+(n*20|0)+12>>2]=o;c[Z+(n*20|0)+16>>2]=0;a[Z+(n*20|0)+1>>0]=0}else n=Di(D,132,X,v,o)|0;if(!(a[(c[D>>2]|0)+81>>0]|0)){Z=c[u>>2]|0;a[Z+(n*20|0)+1>>0]=-3;c[Z+(n*20|0)+16>>2]=1}if((p|0)>1){i=i+20|0;p=p+-1|0}else break}}if(l|0?(U=a[w>>0]|0,(U&255)<8):0){a[w>>0]=U+1<<24>>24;c[f+148+((U&255)<<2)>>2]=l}do if(v|0){l=a[w>>0]|0;if((l&255)>=8)break;a[w>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=v}while(0);o=m}}else{l=c[g+20>>2]|0;r=c[l>>2]|0;Z=c[l+20>>2]|0;c[R>>2]=(m|0)==0?39084:59952;c[R+4>>2]=Z;nk(f,1,39197,R);if((c[r>>2]|0)==(t|0)){a[R>>0]=11;c[R+4>>2]=X;o=R+16|0;c[R+8>>2]=0;c[R+12>>2]=0;n=pk(f,g)|0;c[o>>2]=n;c[l+12>>2]=0;l=(kj(f,l,R)|0)==0;n=c[f>>2]|0;o=c[o>>2]|0;r:do if(o|0){do if(n|0){if(c[n+480>>2]|0){Xd(n,o);break r}p=o;if((c[n+304>>2]|0)>>>0<=p>>>0){if((c[n+308>>2]|0)>>>0<=p>>>0)break;Z=n+300|0;c[o>>2]=c[Z>>2];c[Z>>2]=o;break r}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{Z=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);if(!l){s:do if(x|0?(Z=(c[x>>2]|0)+-1|0,c[x>>2]=Z,(Z|0)==0):0){l=c[x+12>>2]|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,z);break s}m=x;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;Z=l+300|0;c[x>>2]=c[Z>>2];c[Z>>2]=x;break s}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{Z=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}while(0);break}t:do if((t|0)>0){p=v+38|0;i=v+20|0;q=v+20|0;o=0;while(1){n=a[v>>0]|0;if(n<<24>>24==-88)l=a[p>>0]|0;else l=n;switch(l<<24>>24){case -87:{l=i;W=281;break}case -125:{l=c[q>>2]|0;W=281;break}default:l=v}u:do if((W|0)==281){W=0;if((c[c[l>>2]>>2]|0)<2){l=v;break}do if(n<<24>>24!=-125){if((a[p>>0]|0)==-125)break;l=c[(c[i>>2]|0)+4+(o*20|0)>>2]|0;break u}while(0);l=c[(c[c[q>>2]>>2]|0)+4+(o*20|0)>>2]|0}while(0);n=c[r+4+(o*20|0)>>2]|0;v:do if(!(c[l+4>>2]&256)){do if(n|0){if(!(c[n+4>>2]&256))break;l=Yi(f,n)|0;break v}while(0);l=Yi(f,l)|0;if(l|0)break;l=Yi(f,n)|0}else l=Yi(f,l)|0;while(0);c[x+20+(o<<2)>>2]=l;o=o+1|0;if((o|0)==(t|0))break t}}while(0);o=m}else o=m}w:do if(x|0){l=c[D>>2]|0;if(!(a[l+81>>0]|0)){if((A|0)<0)l=(c[C>>2]|0)+-1|0;else l=A;m=c[D+104>>2]|0;n=m+(l*20|0)+1|0;if(a[n>>0]|0){Ei(D,m+(l*20|0)|0,z,-9);break}if(y)break;c[m+(l*20|0)+16>>2]=z;a[n>>0]=-9;break}if(!(y|(c[l+480>>2]|0)!=0)?(Z=(c[z>>2]|0)+-1|0,c[z>>2]=Z,(Z|0)==0):0){l=c[z+12>>2]|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,z);break w}m=z;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;Z=l+300|0;c[z>>2]=c[Z>>2];c[Z>>2]=z;break w}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{Z=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}}}while(0);if(o|0){m=c[C>>2]|0;if(!(a[(c[D>>2]|0)+81>>0]|0))l=(c[D+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else l=59308;c[l+8>>2]=m;l=c[g+48>>2]|0;if((c[B>>2]|0)>(m|0)){c[C>>2]=m+1;Z=c[D+104>>2]|0;a[Z+(m*20|0)>>0]=66;b[Z+(m*20|0)+2>>1]=0;c[Z+(m*20|0)+4>>2]=l;c[Z+(m*20|0)+8>>2]=0;c[Z+(m*20|0)+12>>2]=0;c[Z+(m*20|0)+16>>2]=0;a[Z+(m*20|0)+1>>0]=0}else Di(D,66,l,0,0)|0;l=c[g+44>>2]|0;m=c[C>>2]|0;if(!(a[(c[D>>2]|0)+81>>0]|0))l=(c[D+104>>2]|0)+((((l|0)<1?m:l)+-1|0)*20|0)|0;else l=59308;c[l+4>>2]=m+-1}}while(0);if(E|0)sk(V,X,E);c[F>>2]=G;n=2}while(0);if(!((j|0)!=0&(n+-3|0)>>>0>1)){c[k>>2]=X;Ra=Y;return n|0}m=c[g+12>>2]|0;l=a[m>>0]|0;if(l<<24>>24==-88)l=a[m+38>>0]|0;switch(l<<24>>24){case -87:{l=m+20|0;W=369;break}case -125:{l=c[m+20>>2]|0;W=369;break}default:l=1}if((W|0)==369){l=c[c[l>>2]>>2]|0;if((l|0)<=0){c[k>>2]=X;Ra=Y;return n|0}}m=0;do{c[j+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0));c[k>>2]=X;Ra=Y;return n|0}function rk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[a+116>>2]|0;f=(f|0)==0?a:f;a=f+84|0;d=c[a>>2]|0;e=1<>2]=d|e;if((b|0)!=1)return;Oe(f)|0;return}function sk(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=d+108|0;g=c[i>>2]|0;j=d+112|0;if((c[j>>2]|0)>(g|0)){c[i>>2]=g+1;h=c[d+104>>2]|0;a[h+(g*20|0)>>0]=70;b[h+(g*20|0)+2>>1]=0;c[h+(g*20|0)+4>>2]=0;c[h+(g*20|0)+8>>2]=f;c[h+(g*20|0)+12>>2]=0;c[h+(g*20|0)+16>>2]=0;a[h+(g*20|0)+1>>0]=0}else Di(d,70,0,f,0)|0;g=c[i>>2]|0;if((c[j>>2]|0)>(g|0)){c[i>>2]=g+1;h=c[d+104>>2]|0;a[h+(g*20|0)>>0]=36;b[h+(g*20|0)+2>>1]=0;c[h+(g*20|0)+4>>2]=e;c[h+(g*20|0)+8>>2]=0;c[h+(g*20|0)+12>>2]=0;c[h+(g*20|0)+16>>2]=0;a[h+(g*20|0)+1>>0]=0;h=g}else h=Di(d,36,e,0,0)|0;g=c[i>>2]|0;if((c[j>>2]|0)>(g|0)){c[i>>2]=g+1;j=c[d+104>>2]|0;a[j+(g*20|0)>>0]=90;b[j+(g*20|0)+2>>1]=0;c[j+(g*20|0)+4>>2]=e;c[j+(g*20|0)+8>>2]=0;c[j+(g*20|0)+12>>2]=f;c[j+(g*20|0)+16>>2]=0;a[j+(g*20|0)+1>>0]=0}else Di(d,90,e,0,f)|0;g=c[i>>2]|0;if((g|0)>0)b[(c[d+104>>2]|0)+((g+-1|0)*20|0)+2>>1]=128;if(a[(c[d>>2]|0)+81>>0]|0){d=59308;d=d+8|0;c[d>>2]=g;return}d=(c[d+104>>2]|0)+(((h|0)<0?g+-1|0:h)*20|0)|0;d=d+8|0;c[d>>2]=g;return}function tk(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;m=t+8|0;p=t+4|0;s=t;o=c[d+8>>2]|0;c[p>>2]=0;c[s>>2]=0;if((e|0)==0|(o|0)==0){Ra=t;return}j=a[e>>0]|0;k=j&255;a:do switch(j<<24>>24){case 44:{l=d+56|0;m=c[l>>2]|0;h=m+-1|0;c[l>>2]=h;Tj(d,c[e+12>>2]|0,h,g^16);tk(d,c[e+16>>2]|0,f,g);h=c[o+12>>2]|0;g=0-m|0;if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0){mk(h,o,g);break a}else{c[(c[h+64>>2]|0)+(g<<2)>>2]=c[o+108>>2];break a}}case 43:{tk(d,c[e+12>>2]|0,f,g);tk(d,c[e+16>>2]|0,f,g);break}case 19:{Tj(d,c[e+12>>2]|0,f,g);break}case -89:{o=(a[e+38>>0]|0)==-96;h=c[e+12>>2]|0;g=o?16:0;if(o^(a[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>0]|0)==0){tk(d,h,f,g);break a}else{Tj(d,h,f,g);break a}}case -96:case 45:{g=128;i=j<<24>>24==45?53:52;n=12;break}case 53:case 52:case 57:case 54:case 55:case 56:{i=k;n=12;break}case 51:case 50:{h=Lj(d,c[e+12>>2]|0,p)|0;g=o+108|0;i=c[g>>2]|0;if((c[o+112>>2]|0)>(i|0)){c[g>>2]=i+1;o=c[o+104>>2]|0;a[o+(i*20|0)>>0]=j;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=h;c[o+(i*20|0)+8>>2]=f;c[o+(i*20|0)+12>>2]=0;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0;break a}else{Di(o,k,h,f,0)|0;break a}}case 48:{Sj(d,c[e+12>>2]|0,c[e+20>>2]|0,f,67,g);break}case 49:{h=d+56|0;j=c[h>>2]|0;i=j+-1|0;c[h>>2]=i;Rj(d,e,i,(g|0)==0?i:f);i=o+108|0;h=c[i>>2]|0;if((c[o+112>>2]|0)>(h|0)){c[i>>2]=h+1;e=c[o+104>>2]|0;a[e+(h*20|0)>>0]=11;b[e+(h*20|0)+2>>1]=0;c[e+(h*20|0)+4>>2]=0;c[e+(h*20|0)+8>>2]=f;c[e+(h*20|0)+12>>2]=0;c[e+(h*20|0)+16>>2]=0;a[e+(h*20|0)+1>>0]=0}else Di(o,11,0,f,0)|0;g=c[o+12>>2]|0;h=0-j|0;if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0){mk(g,o,h);break a}else{c[(c[g+64>>2]|0)+(h<<2)>>2]=c[i>>2];break a}}default:{c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0)h=(c[m>>2]|0)!=0&1;else h=0;n=37}}while(0);do if((n|0)==12){j=e+12|0;k=c[j>>2]|0;h=a[k>>0]|0;if(h<<24>>24==-88)h=a[k+38>>0]|0;switch(h<<24>>24){case -87:{l=k+20|0;n=17;break}case -125:{l=c[k+20>>2]|0;n=17;break}default:{}}if((n|0)==17?(c[c[l>>2]>>2]|0)>=2:0){c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0)h=(c[m>>2]|0)!=0&1;else h=0;n=37;break}m=Lj(d,k,p)|0;e=e+16|0;o=Lj(d,c[e>>2]|0,s)|0;Mj(d,c[j>>2]|0,c[e>>2]|0,i,m,o,f,g)}while(0);do if((n|0)==37){if(h|0){h=o+108|0;g=c[h>>2]|0;if((c[o+112>>2]|0)>(g|0)){c[h>>2]=g+1;o=c[o+104>>2]|0;a[o+(g*20|0)>>0]=11;b[o+(g*20|0)+2>>1]=0;c[o+(g*20|0)+4>>2]=0;c[o+(g*20|0)+8>>2]=f;c[o+(g*20|0)+12>>2]=0;c[o+(g*20|0)+16>>2]=0;a[o+(g*20|0)+1>>0]=0;break}else{Di(o,11,0,f,0)|0;break}}c[m>>2]=0;if((c[e+4>>2]&1|0)==0?(uk(e,m)|0)!=0:0){if(!(c[m>>2]|0))break}else n=43;j=Lj(d,e,p)|0;h=(g|0)!=0&1;g=o+108|0;i=c[g>>2]|0;if((c[o+112>>2]|0)>(i|0)){c[g>>2]=i+1;o=c[o+104>>2]|0;a[o+(i*20|0)>>0]=18;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=j;c[o+(i*20|0)+8>>2]=f;c[o+(i*20|0)+12>>2]=h;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0;break}else{Di(o,18,j,f,h)|0;break}}while(0);h=c[p>>2]|0;if(h|0?(q=d+19|0,r=a[q>>0]|0,(r&255)<8):0){a[q>>0]=r+1<<24>>24;c[d+148+((r&255)<<2)>>2]=h}h=c[s>>2]|0;if(!h){Ra=t;return}g=d+19|0;i=a[g>>0]|0;if((i&255)>=8){Ra=t;return}a[g>>0]=i+1<<24>>24;c[d+148+((i&255)<<2)>>2]=h;Ra=t;return}function uk(b,d){b=b|0;d=d|0;var e=0,f=0;f=Ra;Ra=Ra+16|0;e=f;a:do if(!b)b=0;else{if(c[b+4>>2]&1024|0){c[d>>2]=c[b+8>>2];b=1;break}switch(a[b>>0]|0){case -90:{b=uk(c[b+12>>2]|0,d)|0;break a}case -91:break;default:{b=0;break a}}if(!(uk(c[b+12>>2]|0,e)|0))b=0;else{c[d>>2]=0-(c[e>>2]|0);b=1}}while(0);Ra=f;return b|0}function vk(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=Ra;Ra=Ra+16|0;j=k;f=c[b>>2]|0;if(a[f+165>>0]|0){j=0;Ra=k;return j|0}if(a[b+18>>0]|0){j=0;Ra=k;return j|0}if((e|0)==0|(0==0?(c[f+32>>2]&268435457|0)==1:0)){j=0;Ra=k;return j|0}f=a[e>>0]|0;do if(!(f<<24>>24)){f=39441;h=5}else{l=f&255;f=208+l|0;if((l|32|0)==115){f=a[e+1>>0]|0;if(!(f<<24>>24)){f=39442;h=5;break}l=f&255;f=208+l|0;if((l|32|0)==113){f=a[e+2>>0]|0;if(!(f<<24>>24)){f=39443;h=5;break}l=f&255;f=208+l|0;if((l|32|0)==108){f=a[e+3>>0]|0;if(!(f<<24>>24)){f=39444;h=5;break}l=f&255;f=208+l|0;if((l|32|0)==105){f=a[e+4>>0]|0;if(!(f<<24>>24)){f=39445;h=5;break}l=f&255;f=208+l|0;if((l|32|0)==116){f=a[e+5>>0]|0;if(!(f<<24>>24)){f=39446;h=5;break}l=f&255;f=208+l|0;if((l|32|0)==101){f=a[e+6>>0]|0;if(!(f<<24>>24)){f=39447;h=5;break}if(f<<24>>24==95)break;else{g=95;f=208+(f&255)|0}}else g=101}else g=116}else g=105}else g=108}else g=113}else g=115;i=d[f>>0]|0;h=9}while(0);if((h|0)==5){i=0;g=a[208+(d[f>>0]|0)>>0]|0;h=9}if((h|0)==9?(i|0)!=(g&255|0):0){l=0;Ra=k;return l|0}c[j>>2]=e;cd(b,39449,j);l=1;Ra=k;return l|0}function wk(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=qj(b,e)|0;if(!j){k=-1;return k|0}i=c[b+20>>2]|0;e=i+-1|0;if((i|0)>0){i=e;h=(c[b+16>>2]|0)+(e<<4)|0;while(1){f=c[h>>2]|0;if(f|0){g=a[f>>0]|0;e=(d[208+(g&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(g<<24>>24==0|(e|0)!=0)){g=j;do{f=f+1|0;g=g+1|0;l=a[f>>0]|0;e=(d[208+(l&255)>>0]|0)-(d[208+(d[g>>0]|0)>>0]|0)|0}while(!(l<<24>>24==0|(e|0)!=0))}if(!e){e=i;break}}if(!i){k=10;break}e=i+-1|0;if((i|0)>0){i=e;h=h+-16|0}else break}if((k|0)==10){e=109-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!e){f=j;g=50919;do{g=g+1|0;f=f+1|0;l=a[g>>0]|0;e=(d[208+(l&255)>>0]|0)-(d[208+(d[f>>0]|0)>>0]|0)|0}while(!(l<<24>>24==0|(e|0)!=0))}e=((e|0)!=0)<<31>>31}if(b)k=16}else k=16;if((k|0)==16){if(c[b+480>>2]|0){Xd(b,j);l=e;return l|0}l=j;if((c[b+304>>2]|0)>>>0<=l>>>0?(c[b+308>>2]|0)>>>0>l>>>0:0){l=b+300|0;c[j>>2]=c[l>>2];c[l>>2]=j;l=e;return l|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);l=e;return l|0}else{l=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);l=e;return l|0}return 0}function xk(a){a=a|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[(c[a+12>>2]|0)+4>>2]|0;f=b[a+52>>1]|0;if(!(f<<16>>16)){k=0;a=a+48|0;b[a>>1]=k;return}k=c[a+4>>2]|0;i=f&65535;g=0;h=0;do{f=b[k+(g<<1)>>1]|0;if(f<<16>>16<0)f=1;else f=d[j+(f<<16>>16<<4)+14>>0]|0;h=f+h|0;g=g+1|0}while(g>>>0>>0);f=h<<2;if(f>>>0>=8){if(f>>>0>255){h=40;g=0;do{h=(h&65535)+40|0;k=f;f=bw(f|0,g|0,4)|0;j=g;g=L()|0}while(j>>>0>0|(j|0)==0&k>>>0>4095);h=h&65535}else{h=40;g=0}if(g>>>0>0|(g|0)==0&f>>>0>15)do{h=(h&65535)+10&65535;k=f;f=bw(f|0,g|0,1)|0;j=g;g=L()|0}while(j>>>0>0|(j|0)==0&k>>>0>31)}else{if(!f){k=0;a=a+48|0;b[a>>1]=k;return}h=40;g=0;do{h=(h&65535)+65526|0;f=cw(f|0,g|0,1)|0;g=L()|0}while(g>>>0<0|(g|0)==0&f>>>0<8);h=h&65535}k=(h&65535)+65526+(e[3648+((f&7)<<1)>>1]|0)&65535;a=a+48|0;b[a>>1]=k;return}function yk(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=c[d>>2]|0;j=k+32|0;h=j;g=c[h>>2]|0;h=c[h+4>>2]|0;l=j;c[l>>2]=g&-69|64;c[l+4>>2]=h;Kk(d,f,0);c[j>>2]=g;c[j+4>>2]=h;if(c[d+36>>2]|0){l=0;return l|0}j=f;while(1){f=c[j+52>>2]|0;if(!f)break;else j=f}a:do if(!k){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](80)|0;i=27;break}f=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){l=c[14978]|0;h=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=l>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f){l=0;return l|0}g=Wa[c[29352>>2]&127](f)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}else{if(c[k+272>>2]|0){if(a[k+81>>0]|0){l=0;return l|0}}else{do if((e[k+276>>1]|0)>=80){g=k+300|0;f=c[g>>2]|0;if(f|0){c[g>>2]=c[f>>2];i=k+284|0;c[i>>2]=(c[i>>2]|0)+1;i=27;break a}g=k+296|0;f=c[g>>2]|0;if(!f){f=k+292|0;break}else{c[g>>2]=c[f>>2];i=k+284|0;c[i>>2]=(c[i>>2]|0)+1;i=27;break a}}else f=k+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(k,80,0)|0;i=27}while(0);if((i|0)==27)if(!f){l=0;return l|0}g=f+4|0;h=g+76|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));g=f+32|0;c[g>>2]=1;c[f>>2]=0;b[f+44>>1]=200;Tk(c[d>>2]|0,c[j>>2]|0,f+42|0,f+4|0);Uk(d,f,j);b[f+40>>1]=-1;if(!(a[k+81>>0]|0)){l=f;return l|0}if(c[k+480>>2]|0){Vi(k,f);l=0;return l|0}l=(c[g>>2]|0)+-1|0;c[g>>2]=l;if(l|0){l=0;return l|0}Vi(k,f);l=0;return l|0}function zk(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=e+20|0;g=c[l>>2]|0;a:do if(!g){j=c[d>>2]|0;k=e+42|0;i=b[k>>1]|0;g=(i<<16>>16)+1|0;do if(i<<16>>16>=0){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](g)|0;if(!g)break;else j=g}else{i=Wa[c[29356>>2]&127](g)|0;if((c[14985]|0)>>>0>>0)c[14985]=g;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){m=c[14978]|0;h=Tv(g|0,h|0,i|0,((i|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=m>>>0)&1}h=Wa[c[29340>>2]&127](i)|0;if(!h)break;g=Wa[c[29352>>2]&127](h)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0){c[14987]=g;j=h}else j=h}if((b[k>>1]|0)>0){h=e+4|0;g=0;do{a[j+g>>0]=a[(c[h>>2]|0)+(g<<4)+13>>0]|0;g=g+1|0}while((g|0)<(b[k>>1]|0))}else g=0;do{a[j+g>>0]=0;if((g|0)<=0)break;g=g+-1|0}while((a[j+g>>0]|0)==65);c[l>>2]=j;break a}while(0);g=j+81|0;if(a[g>>0]|0)return;if(a[j+82>>0]|0)return;a[g>>0]=1;if((c[j+180>>2]|0)>0)c[j+264>>2]=1;g=j+272|0;c[g>>2]=(c[g>>2]|0)+1;g=c[j+236>>2]|0;if(!g)return;c[g+12>>2]=7;return}else j=g;while(0);e=(Eu(j)|0)&1073741823;if(!e)return;if(!f){g=c[d>>2]|0;if(!(a[g+81>>0]|0)){Ei(d,(c[d+104>>2]|0)+(((c[d+108>>2]|0)+-1|0)*20|0)|0,j,e);return}else{kg(g,e,j);return}}i=d+108|0;g=c[i>>2]|0;if((c[d+112>>2]|0)>(g|0)){c[i>>2]=g+1;m=c[d+104>>2]|0;a[m+(g*20|0)>>0]=91;b[m+(g*20|0)+2>>1]=0;c[m+(g*20|0)+4>>2]=f;c[m+(g*20|0)+8>>2]=e;c[m+(g*20|0)+12>>2]=0;c[m+(g*20|0)+16>>2]=0;a[m+(g*20|0)+1>>0]=0}else g=Di(d,91,f,e,0)|0;h=c[d>>2]|0;if(a[h+81>>0]|0){kg(h,e,j);return}if((g|0)<0)g=(c[i>>2]|0)+-1|0;Ei(d,(c[d+104>>2]|0)+(g*20|0)|0,j,e);return}function Ak(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+224|0;l=r+192|0;j=r+96|0;o=r+184|0;p=r;c[o>>2]=0;q=c[b>>2]|0;n=b+36|0;if(c[n>>2]|0){Ra=r;return}c[j>>2]=e;h=c[q+108>>2]|0;f=l+4|0;c[f>>2]=r+112;c[l>>2]=q;c[l+8>>2]=70;g=l+12|0;c[g>>2]=h;h=l+16|0;c[h>>2]=0;k=l+20|0;a[k>>0]=0;i=l+21|0;a[i>>0]=1;tb(l,d,j);e=c[f>>2]|0;if(((e|0)!=0?(a[e+(c[h>>2]|0)>>0]=0,(c[g>>2]|0)!=0):0)?(a[i>>0]&4)==0:0)i=$d(l)|0;else i=c[f>>2]|0;if(((a[k>>0]|0)==7?(m=q+81|0,(a[m>>0]|0)==0):0)?(a[q+82>>0]|0)==0:0){a[m>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;e=q+272|0;c[e>>2]=(c[e>>2]|0)+1;e=c[q+236>>2]|0;if(e|0)c[e+12>>2]=7}if(!i){if(!(a[q+81>>0]|0))c[b+12>>2]=18;c[n>>2]=(c[n>>2]|0)+1;Ra=r;return}g=b+18|0;a[g>>0]=(a[g>>0]|0)+1<<24>>24;h=b+188|0;e=p;d=h;f=e+88|0;do{a[e>>0]=a[d>>0]|0;e=e+1|0;d=d+1|0}while((e|0)<(f|0));e=h;f=e+88|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));ud(b,i,o)|0;d=c[o>>2]|0;e=q+480|0;do if(d|0){if(c[e>>2]|0){Xd(q,d);break}o=d;if((c[q+304>>2]|0)>>>0<=o>>>0?(c[q+308>>2]|0)>>>0>o>>>0:0){o=q+300|0;c[d>>2]=c[o>>2];c[o>>2]=d;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{o=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);do if(!(c[e>>2]|0)){o=i;if((c[q+304>>2]|0)>>>0<=o>>>0?(c[q+308>>2]|0)>>>0>o>>>0:0){q=q+300|0;c[i>>2]=c[q>>2];c[q>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{q=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}else Xd(q,i);while(0);e=h;d=p;f=e+88|0;do{a[e>>0]=a[d>>0]|0;e=e+1|0;d=d+1|0}while((e|0)<(f|0));a[g>>0]=(a[g>>0]|0)+-1<<24>>24;Ra=r;return}function Bk(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0;h=d+108|0;g=c[h>>2]|0;if((c[d+112>>2]|0)>(g|0)){c[h>>2]=g+1;h=c[d+104>>2]|0;a[h+(g*20|0)>>0]=-115;b[h+(g*20|0)+2>>1]=0;c[h+(g*20|0)+4>>2]=e;c[h+(g*20|0)+8>>2]=0;c[h+(g*20|0)+12>>2]=0;c[h+(g*20|0)+16>>2]=0;a[h+(g*20|0)+1>>0]=0}else g=Di(d,141,e,0,0)|0;gd(d,g,f,-7);if((c[(c[d>>2]|0)+20>>2]|0)<=0)return;g=0;do{fd(d,g);g=g+1|0}while((g|0)<(c[(c[d>>2]|0)+20>>2]|0));return}function Ck(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=Ra;Ra=Ra+32|0;i=m;g=m+4|0;if(!d){l=0;Ra=m;return l|0}k=a+24|0;l=e[k>>1]|0;b[k>>1]=l&28655;f=c[a>>2]|0;c[g>>2]=f;c[g+4>>2]=125;c[g+8>>2]=126;c[g+12>>2]=0;c[g+24>>2]=a;j=d+24|0;h=f+208|0;n=(c[h>>2]|0)+(c[j>>2]|0)|0;c[h>>2]=n;h=c[(c[f>>2]|0)+120>>2]|0;if((h|0)<(n|0)){c[i>>2]=h;cd(f,41637,i);n=1;Ra=m;return n|0}_j(g,d)|0;f=c[g>>2]|0;n=f+208|0;c[n>>2]=(c[n>>2]|0)-(c[j>>2]|0);n=b[k>>1]|0;j=d+4|0;c[j>>2]=c[j>>2]|n&-32752&65535;b[k>>1]=l&36880|n&65535;if((c[a+20>>2]|0)>0){n=1;Ra=m;return n|0}n=(c[f+36>>2]|0)>0&1;Ra=m;return n|0}function Dk(f,h){f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0.0,qa=0;oa=Ra;Ra=Ra+272|0;r=oa+248|0;m=oa+240|0;p=oa+232|0;O=oa+224|0;N=oa+216|0;M=oa+208|0;J=oa+200|0;I=oa+192|0;H=oa+176|0;G=oa+160|0;D=oa+152|0;C=oa+144|0;B=oa+136|0;z=oa+128|0;y=oa+120|0;w=oa+112|0;ja=oa+104|0;ia=oa+88|0;ha=oa+72|0;ba=oa+64|0;ga=oa+56|0;da=oa+48|0;ca=oa+40|0;o=oa+32|0;R=oa;K=oa+252|0;i=c[f+24>>2]|0;na=c[i>>2]|0;a:do switch(a[h>>0]|0){case 55:case 56:case 52:case 53:case 48:case 54:case 57:{ma=385;break}case -95:{F=h+20|0;v=c[F>>2]|0;u=(v|0)==0;if(u)p=0;else p=c[v>>2]|0;j=c[na>>2]|0;m=a[j+78>>0]|0;P=i+24|0;Q=b[P>>1]&16385;t=c[h+8>>2]|0;if(!t)s=0;else s=(Eu(t)|0)&1073741823;r=Jd(j,t,p,m,0)|0;if(r){o=(c[r+20>>2]|0)!=0&1;q=r+4|0;do if(c[q>>2]&1024|0){la=h+4|0;c[la>>2]=c[la>>2]|266240;if((p|0)!=2){c[h+28>>2]=(a[c[r+32>>2]>>0]|0)==117?8388608:125829120;break}j=c[v+24>>2]|0;g[R>>3]=-1.0;if((a[j>>0]|0)==-111){m=c[j+8>>2]|0;if(!m)j=0;else j=(Eu(m)|0)&1073741823;Lg(m,R,j,1)|0;pa=+g[R>>3];j=~~(pa*134217728.0);if(!(pa>1.0)){c[h+28>>2]=j;if((j|0)>=0)break}else ma=247}else ma=247;if((ma|0)==247)c[h+28>>2]=-1;cd(na,39784,w);la=i+20|0;c[la>>2]=(c[la>>2]|0)+1}while(0);p=r+32|0;j=c[p>>2]|0;m=c[na>>2]|0;b:do if(((a[m+165>>0]|0)==0?(a[na+200>>0]|0)==0:0)?(x=c[m+312>>2]|0,x|0):0){j=$a[x&127](c[m+316>>2]|0,31,0,j,0,c[na+240>>2]|0)|0;do if((j|0)!=1)if((j|2|0)==2)if(!j)break b;else break;else{cd(na,39231,z);j=1;ma=259;break}else{cd(na,39216,y);j=23;ma=259}while(0);if((ma|0)==259){c[na+12>>2]=j;c[B>>2]=c[p>>2];cd(na,39855,B);na=i+20|0;c[na>>2]=(c[na>>2]|0)+1}a[h>>0]=114;na=1;Ra=oa;return na|0}while(0);j=c[q>>2]|0;if(j&10240|0){la=h+4|0;c[la>>2]=c[la>>2]|524288}if((j&2048|0)==0?(A=e[P>>1]|0,(A&34|0)!=0):0){c[C>>2]=39890;c[C+4>>2]=(A&32|0)==0?((A&4|0)==0?40098:40144):40126;cd(na,40162,C);j=c[q>>2]|0}if(!(j&262144)){q=0;w=r;p=0}else{w=(a[na+18>>0]|0)==0&(c[7391]|0)==0;q=w;w=w?0:r;p=0}}else{w=Jd(c[na>>2]|0,t,-2,m,0)|0;p=(w|0)==0;q=p;p=(p^1)&1;o=0}c:do if((d[na+200>>0]|0)<2){if(((w|0)!=0?(c[w+24>>2]|0)==0:0)?(c[h+4>>2]&16777216|0)!=0:0){c[D>>2]=s;c[D+4>>2]=t;cd(na,39918,D);ma=287}else ma=273;do if((ma|0)==273){do if(o|0){m=b[P>>1]|0;j=c[w+4>>2]|0;if((m&1?(E=c[h+44>>2]|0,!((j&65536|0)!=0&(E|0)==0)):0)?!((m&16384)==0&(E|0)!=0):0)break;if((j&65536|0)==0?(c[h+44>>2]|0)==0:0){c[G>>2]=39969;c[G+4>>2]=s;c[G+8>>2]=t;cd(na,39979,G)}else{c[H>>2]=39962;c[H+4>>2]=s;c[H+8>>2]=t;cd(na,39979,H)}o=i+20|0;c[o>>2]=(c[o>>2]|0)+1;o=0;break c}while(0);if(q?(a[(c[na>>2]|0)+165>>0]|0)==0:0){c[I>>2]=s;c[I+4>>2]=t;cd(na,40008,I);ma=287;break}if(p|0){c[J>>2]=s;c[J+4>>2]=t;cd(na,40031,J);ma=287}}while(0);if((ma|0)==287){la=i+20|0;c[la>>2]=(c[la>>2]|0)+1}if(!o)o=0;else{b[P>>1]=((c[h+44>>2]|0)==0^49151)&e[P>>1];o=1}}while(0);d:do if(!u?(n=c[v>>2]|0,(n|0)>0):0){j=v+4|0;while(1){m=c[j>>2]|0;if(m|0?_j(f,m)|0:0)break d;if((n|0)>1){n=n+-1|0;j=j+20|0}else break}}while(0);if(!o){na=1;Ra=oa;return na|0}t=h+44|0;r=c[t>>2]|0;e:do if(!r){a[h>>0]=-93;m=h+38|0;a[m>>0]=0;if(i|0){n=R+4|0;o=R+8|0;p=R+24|0;q=K+4|0;r=K+8|0;while(1){na=c[i+4>>2]|0;k=c[F>>2]|0;c[n>>2]=139;c[o>>2]=0;c[p>>2]=K;c[K>>2]=na;c[q>>2]=0;c[r>>2]=0;if(!k){ma=369;break}j=c[k>>2]|0;if((j|0)<=0){ma=369;break}k=k+4|0;while(1){l=c[k>>2]|0;if(l|0?_j(R,l)|0:0)break;if((j|0)>1){j=j+-1|0;k=k+20|0}else break}if((c[r>>2]|0)==0|(c[q>>2]|0)>0)break;a[m>>0]=(a[m>>0]|0)+1<<24>>24;i=c[i+12>>2]|0;if(!i)break e}na=i+24|0;b[na>>1]=c[w+4>>2]&4096|e[na>>1]|16}}else{s=c[i+28>>2]|0;i=c[s+72>>2]|0;o=c[r>>2]|0;q=r+16|0;f:do if((o|0)!=0?(a[q>>0]|0)==0:0){g:do if(i|0){n=d[208+(d[o>>0]|0)>>0]|0;p=i;while(1){j=c[p>>2]|0;h=a[j>>0]|0;i=(d[208+(h&255)>>0]|0)-n|0;if(!(h<<24>>24==0|(i|0)!=0)){m=o;do{j=j+1|0;m=m+1|0;h=a[j>>0]|0;i=(d[208+(h&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(h<<24>>24==0|(i|0)!=0))}if(!i)break;i=c[p+32>>2]|0;if(!i)break g;else p=i}if(!p)break f;i=gk(c[na>>2]|0,c[p+8>>2]|0,0)|0;c[r+8>>2]=i;i=gk(c[na>>2]|0,c[p+12>>2]|0,0)|0;c[r+12>>2]=i;i=c[p+24>>2]|0;if(!i)i=0;else i=dk(c[na>>2]|0,i,0,0)|0;c[r+24>>2]=i;i=c[p+28>>2]|0;if(!i)i=0;else i=dk(c[na>>2]|0,i,0,0)|0;c[r+28>>2]=i;a[r+17>>0]=a[p+17>>0]|0;a[r+18>>0]=a[p+18>>0]|0;i=a[p+16>>0]|0;a[q>>0]=i;a[r+20>>0]=a[p+20>>0]|0;ma=315;break f}while(0);c[M>>2]=o;cd(na,40596,M)}else ma=314;while(0);if((ma|0)==314){Cj(na,r,i);i=a[q>>0]|0;ma=315}if((ma|0)==315){do if(i<<24>>24==86){if((c[r+24>>2]|0)==0?(c[r+28>>2]|0)==0:0){ma=321;break}h=c[r+12>>2]|0;if(h|0?(c[h>>2]|0)==1:0){ma=321;break}cd(na,40397,N)}else ma=321;while(0);h:do if((ma|0)==321?c[w+4>>2]&65536|0:0){o=c[na>>2]|0;if(c[r+36>>2]|0){cd(na,40468,O);break}i=c[w+32>>2]|0;do if((i|0)!=40531)if((i|0)!=40542)if((i|0)!=40553)if((i|0)!=40558){if((i|0)==40571){m=4;break}if((i|0)==40581){m=5;break}if((i|0)==40587){m=6;break}if((i|0)==40592)m=7;else break h}else m=3;else m=2;else m=1;else m=0;while(0);n=r+24|0;i=c[n>>2]|0;if(i|0)ni(o,i);i=r+28|0;j=c[i>>2]|0;if(j|0)ni(o,j);c[n>>2]=0;c[i>>2]=0;a[q>>0]=c[17952+(m<<4)+4>>2];h=c[17952+(m<<4)+8>>2]&255;a[r+17>>0]=h;a[r+18>>0]=c[17952+(m<<4)+12>>2];a[r+20>>0]=0;if(h<<24>>24==83){c[R>>2]=34874;c[R+4>>2]=1;h=oj(o,147,R,0)|0;c[n>>2]=h}}while(0);c[r+40>>2]=w}i=c[t>>2]|0;j=c[i+8>>2]|0;if((j|0)!=0?(l=c[j>>2]|0,(l|0)>0):0){i=j+4|0;while(1){j=c[i>>2]|0;if(j|0?_j(f,j)|0:0)break;if((l|0)>1){l=l+-1|0;i=i+20|0}else break}i=c[t>>2]|0}j=c[i+12>>2]|0;if((j|0)!=0?(k=c[j>>2]|0,(k|0)>0):0){i=j+4|0;while(1){j=c[i>>2]|0;if(j|0?_j(f,j)|0:0)break;if((k|0)>1){k=k+-1|0;i=i+20|0}else break}i=c[t>>2]|0}i=c[i+36>>2]|0;if(i|0)_j(f,i)|0;k=s+68|0;i=c[k>>2]|0;if(i){if(!(ck(na,i,c[t>>2]|0)|0)){j=k;i=c[k>>2]|0;ma=359}}else{j=k;ma=359}if((ma|0)==359){c[(c[t>>2]|0)+32>>2]=i;c[j>>2]=c[t>>2]}b[P>>1]=b[P>>1]|-32768}while(0);b[P>>1]=b[P>>1]|Q;na=1;Ra=oa;return na|0}case 49:case 20:case -125:{k=h+4|0;if(c[k>>2]&2048|0){l=i+16|0;m=c[l>>2]|0;i=i+24|0;j=e[i>>1]|0;if(j&38|0){c[p>>2]=40076;c[p+4>>2]=(j&32|0)==0?((j&4|0)==0?40098:40144):40126;cd(na,40162,p)}$j(f,c[h+20>>2]|0)|0;if((m|0)!=(c[l>>2]|0)){c[k>>2]=c[k>>2]|32;b[i>>1]=b[i>>1]|64}}break}case -108:{i=e[i+24>>1]|0;if(i&38|0){c[m>>2]=40087;c[m+4>>2]=(i&32|0)==0?((i&4|0)==0?40098:40144):40126;cd(na,40162,m)}break}case -96:case 45:{i=c[h+16>>2]|0;if((a[i>>0]|0)==59){if((Dk(f,i)|0)==2){na=2;Ra=oa;return na|0}if((a[i>>0]|0)==-97){a[h+38>>0]=a[h>>0]|0;a[h>>0]=-89;na=0;Ra=oa;return na|0}else ma=385}else ma=385;break}case 59:{s=c[h+8>>2]|0;W=c[na>>2]|0;Z=h+28|0;c[Z>>2]=-1;t=0;u=0;l=0;v=na+200|0;X=na;ma=28;break}case -122:{l=c[h+12>>2]|0;n=i+24|0;if(b[n>>1]&32){c[o>>2]=39767;c[o+4>>2]=40126;cd(na,40162,o)}k=c[h+16>>2]|0;if((a[k>>0]|0)==59){u=0;m=k}else{u=c[l+8>>2]|0;m=c[k+16>>2]|0;l=c[k+12>>2]|0}t=c[l+8>>2]|0;s=c[m+8>>2]|0;v=na+200|0;i:do if((d[v>>0]|0)>1?(q=na+272|0,j=c[q>>2]|0,j|0):0){k=j;do{if((c[k>>2]|0)==(m|0)){ma=12;break}k=c[k+12>>2]|0}while((k|0)!=0);if((ma|0)==12){c[k>>2]=h;j=c[q>>2]|0}k=h+44|0;if(j|0){while(1){if((c[j>>2]|0)==(l|0))break;j=c[j+12>>2]|0;if(!j)break i}c[j>>2]=k}}while(0);r=c[na>>2]|0;q=h+28|0;c[q>>2]=-1;if((u|0)!=0?(b[n>>1]&6)==0:0){n=c[r+20>>2]|0;if((n|0)>0){p=c[r+16>>2]|0;o=d[208+(d[u>>0]|0)>>0]|0;j=0;while(1){l=c[p+(j<<4)>>2]|0;ma=a[l>>0]|0;k=(d[208+(ma&255)>>0]|0)-o|0;if(!(ma<<24>>24==0|(k|0)!=0)){m=u;do{l=l+1|0;m=m+1|0;ma=a[l>>0]|0;k=(d[208+(ma&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(ma<<24>>24==0|(k|0)!=0))}if(!k)break;j=j+1|0;if((j|0)>=(n|0)){l=0;Z=q;W=r;X=na;ma=28;break a}}l=c[p+(j<<4)+12>>2]|0;Z=q;W=r;X=na;ma=28}else{l=0;Z=q;W=r;X=na;ma=28}}else{u=0;l=0;Z=q;W=r;X=na;ma=28}break}default:{}}while(0);if((ma|0)==28){U=(u|0)==0;V=(t|0)!=0;R=V&U;j=na+120|0;P=(t|0)==0;_=h+32|0;f=h+44|0;T=na+272|0;Q=na+144|0;Y=h+4|0;M=h+1|0;N=na+136|0;O=na+140|0;m=i;q=0;S=0;o=162;p=0;r=-1;j:while(1){k=c[m+4>>2]|0;if(k){K=c[k>>2]|0;if((K|0)>0){I=k+8|0;J=0;w=0;while(1){H=c[I+16>>2]|0;k=c[I+20>>2]|0;if((k|0)!=0?(c[k+8>>2]&2048|0)!=0:0){x=c[k>>2]|0;y=c[x>>2]|0;if((y|0)>0){n=0;k=0;do{if(Fk(c[x+4+(n*20|0)+8>>2]|0,s,t,u)|0){b[_>>1]=n;k=1;w=w+1|0;q=2;p=I}n=n+1|0}while((n|0)!=(y|0))}else k=0;if(V&(k|0)==0)ma=40}else ma=40;k:do if((ma|0)==40){ma=0;if(!U?(c[H+72>>2]|0)!=(l|0):0)break;l:do if(!P){n=c[I+12>>2]|0;y=(n|0)==0;if(y){n=c[H>>2]|0;G=a[n>>0]|0;k=(d[208+(G&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!(G<<24>>24==0|(k|0)!=0)){x=t;do{n=n+1|0;x=x+1|0;G=a[n>>0]|0;k=(d[208+(G&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(G<<24>>24==0|(k|0)!=0))}}else{G=a[n>>0]|0;k=(d[208+(G&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!(G<<24>>24==0|(k|0)!=0)){x=t;do{n=n+1|0;x=x+1|0;G=a[n>>0]|0;k=(d[208+(G&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(G<<24>>24==0|(k|0)!=0))}}if(k|0)break k;if(!(y|(d[v>>0]|0)<2)?($=c[T>>2]|0,$|0):0){k=$;while(1){if((c[k>>2]|0)==(f|0))break;k=c[k+12>>2]|0;if(!k)break l}c[k>>2]=0}}while(0);G=q+1|0;p=(q|0)==0?I:p;n=c[H+4>>2]|0;k=b[H+42>>1]|0;if(k<<16>>16>0){F=d[208+(d[s>>0]|0)>>0]|0;C=I+36|0;D=I+48|0;E=k<<16>>16;m:do if((w|0)==1){k=0;while(1){x=c[n>>2]|0;B=a[x>>0]|0;q=(d[208+(B&255)>>0]|0)-F|0;if(!(B<<24>>24==0|(q|0)!=0)){y=s;do{x=x+1|0;y=y+1|0;B=a[x>>0]|0;q=(d[208+(B&255)>>0]|0)-(d[208+(d[y>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(q|0)!=0))}n:do if((q|0)==0?(a[C>>0]&4)==0:0){q=c[D>>2]|0;if(!q)break m;B=c[q+4>>2]|0;if((B|0)<=0)break m;A=c[q>>2]|0;z=0;while(1){x=c[A+(z<<3)>>2]|0;y=a[x>>0]|0;q=(d[208+(y&255)>>0]|0)-F|0;if(!(y<<24>>24==0|(q|0)!=0)){y=s;do{x=x+1|0;y=y+1|0;qa=a[x>>0]|0;q=(d[208+(qa&255)>>0]|0)-(d[208+(d[y>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(q|0)!=0))}z=z+1|0;if(!q)break n;if((z|0)>=(B|0))break m}}while(0);k=k+1|0;if((k|0)>=(E|0)){w=1;q=G;break k}else n=n+16|0}}else{y=n;k=0;while(1){q=c[y>>2]|0;qa=a[q>>0]|0;n=(d[208+(qa&255)>>0]|0)-F|0;if(!(qa<<24>>24==0|(n|0)!=0)){x=s;do{q=q+1|0;x=x+1|0;qa=a[q>>0]|0;n=(d[208+(qa&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(n|0)!=0))}if(!n)break m;k=k+1|0;if((k|0)>=(E|0)){q=G;break k}else y=y+16|0}}while(0);b[_>>1]=(k|0)==(b[H+40>>1]|0)?-1:k&65535;w=w+1|0;q=G;p=I}else q=G}while(0);J=J+1|0;if((J|0)==(K|0))break;else I=I+72|0}}else w=0;if(!p){A=w;C=0}else{n=c[p+40>>2]|0;c[Z>>2]=n;k=c[p+16>>2]|0;c[f>>2]=k;if(a[p+36>>0]&8)c[Y>>2]=c[Y>>2]|1048576;l=c[k+72>>2]|0;A=w;C=p;r=n}}else{A=0;C=p}do if(R&(q|0)==0){q=c[j>>2]|0;do if(q){x=a[Q>>0]|0;w=a[t>>0]|0;k=w|32;if(x<<24>>24==121){if(k<<24>>24!=111){q=0;break}}else{if(k<<24>>24==110){k=t;n=40182;do{n=n+1|0;k=k+1|0;qa=a[n>>0]|0;p=(d[208+(qa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(p|0)!=0));if(!p){c[Z>>2]=1;r=1;break}}if(!(x<<24>>24!=120&(w|32)<<24>>24==111)){q=0;break}}k=t;n=40186;do{n=n+1|0;k=k+1|0;qa=a[n>>0]|0;p=(d[208+(qa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(p|0)!=0));if(!p){c[Z>>2]=0;r=0}else q=0}else q=0;while(0);w=b[m+24>>1]|0;if(((w&512)!=0?(aa=c[m+8>>2]|0,(aa|0)!=0):0)?(a[t>>0]|32)<<24>>24==101:0){k=t;n=40190;do{n=n+1|0;k=k+1|0;qa=a[n>>0]|0;p=(d[208+(qa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(p|0)!=0));if(!p){z=c[(c[aa+20>>2]|0)+24>>2]|0;c[Z>>2]=2;r=2}else z=q}else z=q;if(!z){B=o;q=0;o=A;n=(C|0)!=0;z=w;break}l=c[z+72>>2]|0;qa=b[z+42>>1]|0;y=qa<<16>>16;o:do if(qa<<16>>16>0){x=d[208+(d[s>>0]|0)>>0]|0;n=0;w=c[z+4>>2]|0;while(1){p=c[w>>2]|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-x|0;if(!(qa<<24>>24==0|(k|0)!=0)){q=s;do{p=p+1|0;q=q+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(!k)break;n=n+1|0;if((n|0)<(y|0))w=w+16|0;else break o}n=(n|0)==(b[z+40>>1]|0)?-1:n}else n=0;while(0);do if((n|0)>=(y|0)){x=a[s>>0]|0;w=d[208+(x&255)>>0]|0;k=w+-95|0;x=x<<24>>24==0;if(!(x|(k|0)!=0)){p=58070;q=s;do{q=q+1|0;p=p+1|0;qa=a[q>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){k=w+-114|0;if(!(x|(k|0)!=0)){p=40352;q=s;do{q=q+1|0;p=p+1|0;qa=a[q>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){k=w+-111|0;if(!(x|(k|0)!=0)){p=58078;q=s;do{q=q+1|0;p=p+1|0;qa=a[q>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0)break}}n=(c[z+36>>2]&64|0)==0?-1:n}while(0);if((n|0)<(y|0)){p=A+1|0;if((r|0)==2)if((d[v>>0]|0)>1){b[_>>1]=n;c[f>>2]=z;o=162;q=1;r=2;ma=142;break}else{r=(c[(c[m+8>>2]|0)+24>>2]|0)+n|0;c[Z>>2]=r;c[Y>>2]=c[Y>>2]|4194304;o=168;q=1;ma=142;break}do if((n|0)>=0){k=(n|0)>31?-1:1<>2]=c[N>>2]|k;break}else{c[O>>2]=c[O>>2]|k;break}}else a[M>>0]=68;while(0);c[f>>2]=z;b[_>>1]=n;o=77;q=1;ma=142}else{q=1;p=A;ma=142}}else{p=A;ma=142}while(0);do if((ma|0)==142){ma=0;n=(C|0)!=0;z=b[m+24>>1]|0;if(n&((q|0)==1&(p|0)==0))if(!(z&32)){w=a[s>>0]|0;q=d[208+(w&255)>>0]|0;k=q+-95|0;w=w<<24>>24==0;if(!(w|(k|0)!=0)){n=58070;p=s;do{p=p+1|0;n=n+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){k=q+-114|0;if(!(w|(k|0)!=0)){n=40352;p=s;do{p=p+1|0;n=n+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){k=q+-111|0;if(!(w|(k|0)!=0)){n=58078;p=s;do{p=p+1|0;n=n+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){B=o;q=1;o=0;n=1;break}}}if(!(c[(c[C+16>>2]|0)+36>>2]&64)){ma=157;break j}else{B=o;q=1;o=0;n=1}}else{B=o;q=1;o=0;n=1}else{B=o;o=p}}while(0);k=(o|0)==0;if(P&(k&(z&128)!=0)){A=c[m+8>>2]|0;w=c[A>>2]|0;if((w|0)>0){y=0;while(1){x=c[A+4+(y*20|0)+4>>2]|0;if(x|0){qa=a[x>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[s>>0]|0)>>0]|0)|0;if(!(qa<<24>>24==0|(k|0)!=0)){o=s;p=x;do{p=p+1|0;o=o+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(!k){ma=166;break j}}k=y+1|0;if((k|0)<(w|0))y=k;else break}}}else if(!k){ma=201;break}m=c[m+12>>2]|0;if(!m){ma=188;break}else{S=S+1|0;o=B;p=C}}p:do if((ma|0)==157){b[_>>1]=-1;a[M>>0]=68;q=m;p=1;n=1;ma=208}else if((ma|0)==166){n=c[A+4+(y*20|0)>>2]|0;if((z&1)==0?c[n+4>>2]&16|0:0){c[ca>>2]=x;cd(na,40199,ca);qa=2;Ra=oa;return qa|0}if((z&16384)==0?c[n+4>>2]&32768|0:0){c[da>>2]=x;cd(na,40230,da);qa=2;Ra=oa;return qa|0}k=a[n>>0]|0;if(k<<24>>24==-88)k=a[n+38>>0]|0;switch(k<<24>>24){case -87:{fa=n+20|0;ma=177;break}case -125:{fa=c[n+20>>2]|0;ma=177;break}default:{}}if((ma|0)==177?(c[c[fa>>2]>>2]|0)!=1:0){cd(na,38899,ga);qa=2;Ra=oa;return qa|0}Gk(na,A,y,h,59952,S);if((d[v>>0]|0)>1?(ea=c[T>>2]|0,(ea|0)!=0):0){k=ea;while(1){if((c[k>>2]|0)==(h|0))break;k=c[k+12>>2]|0;if(!k){n=m;break p}}c[k>>2]=0;n=m}else n=m}else if((ma|0)==188)if(P){k=c[Y>>2]|0;if(k&64|0){c[ba>>2]=s;Db(28,40267,ba);a[h>>0]=110;c[f>>2]=0;qa=1;Ra=oa;return qa|0}if(!(k&67108864)){m=c[h+8>>2]|0;r=a[m>>0]|0;q=d[208+(r&255)>>0]|0;k=q+-116|0;r=r<<24>>24==0;if(!(r|(k|0)!=0)){o=41806;p=m;do{p=p+1|0;o=o+1|0;qa=a[p>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){k=q+-102|0;if(!(r|(k|0)!=0)){o=41811;do{m=m+1|0;o=o+1|0;qa=a[m>>0]|0;k=(d[208+(qa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(k|0)!=0))}if(k|0){m=0;o=0;k=40302;ma=202;break}}a[h>>0]=-97;qa=1;Ra=oa;return qa|0}else{m=0;o=0;k=40302;ma=202}}else{m=0;o=0;k=40302;ma=202}else if((ma|0)==201)if((o|0)==1){q=m;p=1;o=B;ma=208}else{k=40317;ma=202}while(0);if((ma|0)==202){do if(U)if(V){c[ia>>2]=k;c[ia+4>>2]=t;c[ia+8>>2]=s;cd(na,37010,ia);break}else{c[ja>>2]=k;c[ja+4>>2]=s;cd(na,37020,ja);break}else{c[ha>>2]=k;c[ha+4>>2]=u;c[ha+8>>2]=t;c[ha+12>>2]=s;cd(na,40339,ha)}while(0);a[na+17>>0]=1;q=i+20|0;c[q>>2]=(c[q>>2]|0)+1;q=m;p=o;o=B;ma=208}if((ma|0)==208){qa=b[_>>1]|0;m=qa<<16>>16;k=C+56|0;if(n&qa<<16>>16>-1){ia=cw(1,0,((m|0)<63?m:63)|0)|0;ja=L()|0;ha=k;ja=c[ha+4>>2]|ja;qa=k;c[qa>>2]=c[ha>>2]|ia;c[qa+4>>2]=ja}k=h+12|0;m=c[k>>2]|0;if(m|0)ni(W,m);c[k>>2]=0;k=h+16|0;m=c[k>>2]|0;if(m|0)ni(W,m);c[k>>2]=0;a[h>>0]=o;c[Y>>2]=c[Y>>2]|8388608;if((p|0)==1)n=q;else{qa=2;Ra=oa;return qa|0}}q:do if((c[Y>>2]&4194304|0)==0?(la=c[n+4>>2]|0,ka=c[X>>2]|0,!((l|0)==0|(c[ka+312>>2]|0)==0)):0){k=c[ka+16>>2]|0;m=0;while(1)if((c[k+(m<<4)+12>>2]|0)==(l|0))break;else m=m+1|0;if((a[h>>0]|0)!=77){l=c[la>>2]|0;if((l|0)<=0)break;k=c[Z>>2]|0;j=0;while(1){if((k|0)==(c[la+8+(j*72|0)+40>>2]|0))break;j=j+1|0;if((j|0)>=(l|0))break q}j=la+8+(j*72|0)+16|0}l=c[j>>2]|0;k=b[_>>1]|0;j=k<<16>>16;if(l|0){if(k<<16>>16<=-1){j=b[l+40>>1]|0;if(j<<16>>16>-1){j=j<<16>>16;ma=229}else j=40352}else ma=229;if((ma|0)==229)j=c[(c[l+4>>2]|0)+(j<<4)>>2]|0;if((Ik(na,c[l>>2]|0,j,m)|0)==2)a[h>>0]=114}}while(0);qa=i+16|0;c[qa>>2]=(c[qa>>2]|0)+1;if((n|0)==(i|0)){qa=1;Ra=oa;return qa|0}do{i=c[i+12>>2]|0;qa=i+16|0;c[qa>>2]=(c[qa>>2]|0)+1}while((i|0)!=(n|0));i=1;Ra=oa;return i|0}else if((ma|0)==385?(a[(c[na>>2]|0)+81>>0]|0)==0:0){j=c[h+12>>2]|0;i=a[j>>0]|0;if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=j+20|0;ma=391;break}case -125:{i=c[j+20>>2]|0;ma=391;break}default:l=1}if((ma|0)==391)l=c[c[i>>2]>>2]|0;r:do if((a[h>>0]|0)==48){k=c[h+20>>2]|0;j=c[k+4>>2]|0;i=a[j>>0]|0;if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=j+20|0;ma=398;break}case -125:{i=c[j+20>>2]|0;ma=398;break}default:i=1}if((ma|0)==398)i=c[c[i>>2]>>2]|0;if((i|0)==(l|0)){j=c[k+24>>2]|0;i=a[j>>0]|0;if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=c[c[j+20>>2]>>2]|0;break r}case -125:{i=c[c[c[j+20>>2]>>2]>>2]|0;break r}default:{i=1;break r}}}}else{j=c[h+16>>2]|0;i=a[j>>0]|0;if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=c[c[j+20>>2]>>2]|0;break r}case -125:{i=c[c[c[j+20>>2]>>2]>>2]|0;break r}default:{i=1;break r}}}while(0);if((l|0)!=(i|0))cd(na,38899,r)}if(c[na+36>>2]|0){qa=2;Ra=oa;return qa|0}qa=(a[(c[na>>2]|0)+81>>0]|0)==0?0:2;Ra=oa;return qa|0}function Ek(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0;fb=Ra;Ra=Ra+240|0;eb=fb+120|0;bb=fb+112|0;ab=fb+96|0;Sa=fb+88|0;Pa=fb+80|0;La=fb+72|0;Ka=fb+64|0;Ja=fb+56|0;Ia=fb+48|0;Ha=fb+40|0;Oa=fb+32|0;Na=fb+24|0;Ma=fb+16|0;Ga=fb+8|0;Fa=fb;Xa=fb+200|0;Ya=fb+168|0;Za=fb+160|0;qa=fb+128|0;h=c[g+8>>2]|0;if(h&4|0){eb=1;Ra=fb;return eb|0}ma=c[f+24>>2]|0;db=c[f>>2]|0;f=c[db>>2]|0;if(!(h&64)){Kk(db,g,ma);if(c[db+36>>2]|0){eb=2;Ra=fb;return eb|0}eb=(a[f+81>>0]|0)==0?1:2;Ra=fb;return eb|0}Qa=g+52|0;oa=(c[Qa>>2]|0)!=0;W=oa&1;X=qa+28|0;Y=qa+24|0;Z=Xa+4|0;_=Xa+8|0;$=Xa+12|0;aa=Xa+24|0;ba=qa+20|0;ca=qa+4|0;da=qa+12|0;ea=db+240|0;fa=(ma|0)==0;ga=Xa+4|0;ha=Xa+8|0;ia=Xa+12|0;ja=Xa+24|0;ka=db+36|0;s=f+81|0;t=Xa+4|0;u=Xa+8|0;v=Xa+12|0;w=Xa+24|0;x=qa+8|0;y=Xa+4|0;z=Xa+8|0;A=Xa+12|0;B=Xa+24|0;C=Xa+4|0;D=Xa+8|0;E=Xa+12|0;F=Xa+24|0;G=Xa+4|0;H=Xa+8|0;I=Xa+12|0;J=Xa+24|0;K=db+200|0;L=Xa+4|0;M=Xa+8|0;N=Xa+12|0;O=Xa+24|0;P=Xa+4|0;Q=Xa+8|0;R=Xa+12|0;S=Xa+24|0;T=qa+4|0;U=db;V=db+208|0;q=g;r=0;f=h;a:while(1){p=q+8|0;c[p>>2]=f|4;c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;c[T+12>>2]=0;c[T+16>>2]=0;c[T+20>>2]=0;c[qa>>2]=db;c[X>>2]=q;f=c[q+60>>2]|0;if(f){b[Y>>1]=0;c[Xa>>2]=U;c[Z>>2]=125;c[_>>2]=126;c[$>>2]=0;c[aa>>2]=qa;h=f+24|0;o=(c[V>>2]|0)+(c[h>>2]|0)|0;c[V>>2]=o;Ea=c[(c[db>>2]|0)+120>>2]|0;if((Ea|0)<(o|0)){K=9;break}_j(Xa,f)|0;i=c[Xa>>2]|0;o=i+208|0;c[o>>2]=(c[o>>2]|0)-(c[h>>2]|0);o=f+4|0;c[o>>2]=c[o>>2]|b[Y>>1]&-32752&65535;if((c[ba>>2]|0)>0){K=11;break}if((c[i+36>>2]|0)>=1){cb=2;K=206;break}}o=q+32|0;h=c[o>>2]|0;if(c[p>>2]&65536|0){n=q+48|0;c[(c[h+28>>2]|0)+48>>2]=c[n>>2];c[n>>2]=0}f=h;b:do if((c[h>>2]|0)>0){if(fa){k=0;while(1){j=c[h+8+(k*72|0)+20>>2]|0;if((j|0)!=0?(c[j+8>>2]&4|0)==0:0){f=c[ea>>2]|0;i=c[h+8+(k*72|0)+8>>2]|0;if(i|0)c[ea>>2]=i;c[ga>>2]=125;c[ha>>2]=126;c[ia>>2]=0;c[Xa>>2]=db;c[ja>>2]=0;$j(Xa,j)|0;c[ea>>2]=f;if(c[ka>>2]|0){cb=2;K=206;break a}if(a[s>>0]|0){cb=2;K=206;break a}f=h+8+(k*72|0)+37|0;a[f>>0]=a[f>>0]&-9;f=c[o>>2]|0;h=f}k=k+1|0;if((k|0)>=(c[h>>2]|0))break b}}l=0;k=h;while(1){j=c[k+8+(l*72|0)+20>>2]|0;if((j|0)!=0?(c[j+8>>2]&4|0)==0:0){i=c[ea>>2]|0;f=0;h=ma;do{f=(c[h+16>>2]|0)+f|0;h=c[h+12>>2]|0}while((h|0)!=0);h=c[k+8+(l*72|0)+8>>2]|0;if(h|0)c[ea>>2]=h;c[ga>>2]=125;c[ha>>2]=126;c[ia>>2]=0;c[Xa>>2]=db;c[ja>>2]=ma;$j(Xa,j)|0;c[ea>>2]=i;if(c[ka>>2]|0){cb=2;K=206;break a}if(a[s>>0]|0){cb=2;K=206;break a}h=ma;do{f=f-(c[h+16>>2]|0)|0;h=c[h+12>>2]|0}while((h|0)!=0);h=k+8+(l*72|0)+37|0;a[h>>0]=a[h>>0]&-9|((f|0)!=0&1)<<3&255;f=c[o>>2]|0;h=f}else h=k;l=l+1|0;if((l|0)>=(c[h>>2]|0))break;else k=h}}while(0);b[Y>>1]=16385;c[ca>>2]=f;c[da>>2]=ma;l=c[q>>2]|0;if((l|0)!=0?(c[l>>2]|0)>0:0){k=0;f=16385;do{i=c[l+4+(k*20|0)>>2]|0;if(i){f=f&65535;b[Y>>1]=f&28655;ra=c[qa>>2]|0;c[Xa>>2]=ra;c[t>>2]=125;c[u>>2]=126;c[v>>2]=0;c[w>>2]=qa;h=i+24|0;sa=ra;m=sa+208|0;n=(c[m>>2]|0)+(c[h>>2]|0)|0;c[m>>2]=n;sa=c[(c[sa>>2]|0)+120>>2]|0;if((sa|0)<(n|0)){K=46;break a}_j(Xa,i)|0;j=c[Xa>>2]|0;n=j+208|0;c[n>>2]=(c[n>>2]|0)-(c[h>>2]|0);n=b[Y>>1]|0;m=i+4|0;c[m>>2]=c[m>>2]|n&-32752&65535;f=(f&36880|n&65535)&65535;b[Y>>1]=f;if((c[ba>>2]|0)>0){K=48;break a}if((c[j+36>>2]|0)>=1){cb=2;K=206;break a}}k=k+1|0}while((k|0)<(c[l>>2]|0))}else f=16385;h=f&-16385;b[Y>>1]=h;n=c[q+40>>2]|0;m=(n|0)!=0;if(!m?(na=h&65535,(na&16|0)==0):0){h=na&49150;b[Y>>1]=h}else c[p>>2]=c[p>>2]|(f&4096|8)&65535;j=c[q+44>>2]|0;i=(j|0)==0;if(!(m|i)){K=55;break}c[x>>2]=c[q>>2];f=h|128;b[Y>>1]=f;if(!i){f=f&65535;b[Y>>1]=f&28655;ta=c[qa>>2]|0;c[Xa>>2]=ta;c[y>>2]=125;c[z>>2]=126;c[A>>2]=0;c[B>>2]=qa;h=j+24|0;ua=ta;k=ua+208|0;l=(c[k>>2]|0)+(c[h>>2]|0)|0;c[k>>2]=l;ua=c[(c[ua>>2]|0)+120>>2]|0;if((ua|0)<(l|0)){K=59;break}_j(Xa,j)|0;i=c[Xa>>2]|0;l=i+208|0;c[l>>2]=(c[l>>2]|0)-(c[h>>2]|0);l=b[Y>>1]|0;k=j+4|0;c[k>>2]=c[k>>2]|l&-32752&65535;f=(f&36880|l&65535)&65535;b[Y>>1]=f;if((c[ba>>2]|0)>0){K=61;break}if((c[i+36>>2]|0)>=1){cb=2;K=206;break}}i=c[q+36>>2]|0;if(i){f=f&65535;b[Y>>1]=f&28655;va=c[qa>>2]|0;c[Xa>>2]=va;c[C>>2]=125;c[D>>2]=126;c[E>>2]=0;c[F>>2]=qa;h=i+24|0;wa=va;k=wa+208|0;l=(c[k>>2]|0)+(c[h>>2]|0)|0;c[k>>2]=l;wa=c[(c[wa>>2]|0)+120>>2]|0;if((wa|0)<(l|0)){K=66;break}_j(Xa,i)|0;j=c[Xa>>2]|0;l=j+208|0;c[l>>2]=(c[l>>2]|0)-(c[h>>2]|0);l=b[Y>>1]|0;k=i+4|0;c[k>>2]=c[k>>2]|l&-32752&65535;f=(f&36880|l&65535)&65535;b[Y>>1]=f;if((c[ba>>2]|0)>0){K=68;break}if((c[j+36>>2]|0)>=1){cb=2;K=206;break}}h=c[o>>2]|0;if((c[h>>2]|0)>0){l=0;do{if(((a[h+8+(l*72|0)+37>>0]&4)!=0?(pa=c[h+8+(l*72|0)+64>>2]|0,(pa|0)!=0):0)?(c[pa>>2]|0)>0:0){k=0;do{i=c[pa+4+(k*20|0)>>2]|0;if(i){f=f&65535;b[Y>>1]=f&28655;xa=c[qa>>2]|0;c[Xa>>2]=xa;c[G>>2]=125;c[H>>2]=126;c[I>>2]=0;c[J>>2]=qa;h=i+24|0;ya=xa;gb=ya+208|0;j=(c[gb>>2]|0)+(c[h>>2]|0)|0;c[gb>>2]=j;ya=c[(c[ya>>2]|0)+120>>2]|0;if((ya|0)<(j|0)){K=80;break a}_j(Xa,i)|0;j=c[Xa>>2]|0;gb=j+208|0;c[gb>>2]=(c[gb>>2]|0)-(c[h>>2]|0);gb=b[Y>>1]|0;i=i+4|0;c[i>>2]=c[i>>2]|gb&-32752&65535;f=(f&36880|gb&65535)&65535;b[Y>>1]=f;if((c[ba>>2]|0)>0){K=82;break a}if((c[j+36>>2]|0)>=1){cb=2;K=206;break a}}k=k+1|0}while((k|0)<(c[pa>>2]|0))}l=l+1|0;h=c[o>>2]|0}while((l|0)<(c[h>>2]|0))}c[da>>2]=0;b[Y>>1]=f|16385;if(c[p>>2]&65536|0){gb=(c[h+28>>2]|0)+48|0;c[q+48>>2]=c[gb>>2];c[gb>>2]=0}if(r>>>0>=W>>>0?Lk(qa,q,c[q+48>>2]|0,40659)|0:0){cb=2;K=206;break}if(a[s>>0]|0){cb=2;K=206;break}b[Y>>1]=b[Y>>1]&-16385;if(m){if(Lk(qa,q,n,40665)|0){cb=2;K=206;break}if(a[s>>0]|0){cb=2;K=206;break}i=c[n>>2]|0;if((i|0)>0){f=n+4|0;h=0;while(1){if(c[(c[f>>2]|0)+4>>2]&16|0){K=96;break a}h=h+1|0;if((h|0)>=(i|0))break;else f=f+20|0}}}if((d[K>>0]|0)>1?(la=c[q+72>>2]|0,la|0):0){m=la;do{h=c[m+12>>2]|0;do if(h|0){if((c[h>>2]|0)<=0)break;f=0;do{i=c[h+4+(f*20|0)>>2]|0;if(i){j=e[Y>>1]|0;b[Y>>1]=j&28655;za=c[qa>>2]|0;c[Xa>>2]=za;c[L>>2]=125;c[M>>2]=126;c[N>>2]=0;c[O>>2]=qa;k=i+24|0;Aa=za;p=Aa+208|0;gb=(c[p>>2]|0)+(c[k>>2]|0)|0;c[p>>2]=gb;Aa=c[(c[Aa>>2]|0)+120>>2]|0;if((Aa|0)<(gb|0)){K=108;break a}_j(Xa,i)|0;l=c[Xa>>2]|0;gb=l+208|0;c[gb>>2]=(c[gb>>2]|0)-(c[k>>2]|0);gb=b[Y>>1]|0;p=i+4|0;c[p>>2]=c[p>>2]|gb&-32752&65535;b[Y>>1]=j&36880|gb&65535;if((c[ba>>2]|0)>0){K=110;break a}if((c[l+36>>2]|0)>=1){cb=2;K=206;break a}}f=f+1|0}while((f|0)<(c[h>>2]|0))}while(0);h=c[m+8>>2]|0;do if(h|0){if((c[h>>2]|0)<=0)break;f=0;do{i=c[h+4+(f*20|0)>>2]|0;if(i){j=e[Y>>1]|0;b[Y>>1]=j&28655;Ba=c[qa>>2]|0;c[Xa>>2]=Ba;c[P>>2]=125;c[Q>>2]=126;c[R>>2]=0;c[S>>2]=qa;k=i+24|0;Ca=Ba;p=Ca+208|0;gb=(c[p>>2]|0)+(c[k>>2]|0)|0;c[p>>2]=gb;Ca=c[(c[Ca>>2]|0)+120>>2]|0;if((Ca|0)<(gb|0)){K=119;break a}_j(Xa,i)|0;l=c[Xa>>2]|0;gb=l+208|0;c[gb>>2]=(c[gb>>2]|0)-(c[k>>2]|0);gb=b[Y>>1]|0;p=i+4|0;c[p>>2]=c[p>>2]|gb&-32752&65535;b[Y>>1]=j&36880|gb&65535;if((c[ba>>2]|0)>0){K=121;break a}if((c[l+36>>2]|0)>=1){cb=2;K=206;break a}}f=f+1|0}while((f|0)<(c[h>>2]|0))}while(0);m=c[m+32>>2]|0}while((m|0)!=0)}Da=c[q+56>>2]|0;if(Da|0?(c[c[q>>2]>>2]|0)!=(c[c[Da>>2]>>2]|0):0){K=126;break}f=c[q+52>>2]|0;if(!f){K=135;break}q=f;r=r+1|0;f=c[f+8>>2]|0}switch(K|0){case 9:{c[Fa>>2]=Ea;cd(db,41637,Fa);K=11;break}case 46:{c[Ga>>2]=sa;cd(ra,41637,Ga);K=48;break}case 55:{cd(db,40615,Ma);gb=2;Ra=fb;return gb|0}case 59:{c[Na>>2]=ua;cd(ta,41637,Na);K=61;break}case 66:{c[Oa>>2]=wa;cd(va,41637,Oa);K=68;break}case 80:{c[Ha>>2]=ya;cd(xa,41637,Ha);K=82;break}case 96:{cd(db,40671,Ia);gb=2;Ra=fb;return gb|0}case 108:{c[Ja>>2]=Aa;cd(za,41637,Ja);K=110;break}case 119:{c[Ka>>2]=Ca;cd(Ba,41637,Ka);K=121;break}case 126:{if(c[Da+8>>2]&512|0){cd(db,41381,La);gb=2;Ra=fb;return gb|0}switch(a[Da+4>>0]|0){case -128:{f=41509;break}case -126:{f=41519;break}case -127:{f=41529;break}default:f=41536}c[Pa>>2]=f;cd(db,41427,Pa);gb=2;Ra=fb;return gb|0}case 135:{if(!oa){gb=1;Ra=fb;return gb|0}J=c[g+48>>2]|0;if(!J){gb=1;Ra=fb;return gb|0}I=c[db>>2]|0;i=c[J>>2]|0;if((i|0)>(c[I+116>>2]|0)){cd(db,41542,Sa);gb=2;Ra=fb;return gb|0}if((i|0)>0){f=0;do{gb=J+4+(f*20|0)+13|0;a[gb>>0]=a[gb>>0]&-2;f=f+1|0}while((f|0)!=(i|0))}c[g+56>>2]=0;h=c[Qa>>2]|0;if(!h)h=g;else{f=g;while(1){c[h+56>>2]=f;f=c[h+52>>2]|0;if(!f)break;else{gb=h;h=f;f=gb}}}t=J+4|0;u=db+200|0;v=Xa+4|0;w=I+81|0;x=Ya+12|0;y=Ya+4|0;z=Ya+8|0;A=Ya+24|0;B=Ya+20|0;C=db;D=Xa+4|0;E=Xa+8|0;F=Xa+12|0;G=Xa+24|0;H=db+208|0;f=i;c:while(1){s=c[h>>2]|0;if((f|0)<=0){cb=1;K=206;break}r=h+32|0;q=t;p=0;Va=0;while(1){c[Za>>2]=-1;o=q+13|0;d:do if(!(a[o>>0]&1)){f=c[q>>2]|0;e:do if(!f)f=0;else while(1){i=c[f+4>>2]|0;if(!(i&4096))break e;if(!(i&262144))f=f+12|0;else f=(c[f+20>>2]|0)+4|0;f=c[f>>2]|0;if(!f){f=0;break}}while(0);f:do if(!(uk(f,Za)|0)){g:do if((a[f>>0]|0)==59?(_a=c[f+8>>2]|0,$a=c[s>>2]|0,($a|0)>0):0){i=0;while(1){k=c[s+4+(i*20|0)+4>>2]|0;if(k|0){gb=a[k>>0]|0;j=(d[208+(gb&255)>>0]|0)-(d[208+(d[_a>>0]|0)>>0]|0)|0;if(!(gb<<24>>24==0|(j|0)!=0)){l=_a;do{k=k+1|0;l=l+1|0;gb=a[k>>0]|0;j=(d[208+(gb&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(gb<<24>>24==0|(j|0)!=0))}if(!j)break}i=i+1|0;if((i|0)>=($a|0))break g}i=i+1|0;c[Za>>2]=i;break f}while(0);c[Za>>2]=0;if((d[u>>0]|0)<=1)if(!f)n=0;else n=dk(I,f,0,0)|0;else n=f;if(!(a[w>>0]|0)){m=c[h>>2]|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[Ya>>2]=db;c[y>>2]=c[r>>2];c[z>>2]=m;b[A>>1]=129;c[B>>2]=0;i=c[db>>2]|0;j=i+85|0;k=a[j>>0]|0;a[j>>0]=1;h:do if(!n){a[j>>0]=k;K=180}else{b[A>>1]=129;c[Xa>>2]=C;c[D>>2]=125;c[E>>2]=126;c[F>>2]=0;c[G>>2]=Ya;l=n+24|0;gb=(c[H>>2]|0)+(c[l>>2]|0)|0;c[H>>2]=gb;i=c[i+120>>2]|0;do if((i|0)>=(gb|0)){_j(Xa,n)|0;i=c[Xa>>2]|0;gb=i+208|0;c[gb>>2]=(c[gb>>2]|0)-(c[l>>2]|0);gb=n+4|0;c[gb>>2]=c[gb>>2]|b[A>>1]&-32752&65535;if((c[B>>2]|0)>0)break;gb=(c[i+36>>2]|0)<1;a[j>>0]=k;if(gb){K=180;break h}else{Ua=0;break h}}else{c[bb>>2]=i;cd(db,41637,bb)}while(0);a[j>>0]=k;Ua=0}while(0);i:do if((K|0)==180){K=0;if((c[m>>2]|0)<=0){Ua=0;break}i=0;while(1){gb=i;i=i+1|0;if((bk(0,c[m+4+(gb*20|0)>>2]|0,n,-1)|0)<2){Ua=i;break i}if((i|0)>=(c[m>>2]|0)){Ua=0;break}}}while(0);c[Za>>2]=Ua;i=Ua}else i=0;if(!((n|0)==0|(d[u>>0]|0)>1))ni(I,n);if((i|0)<=0){f=1;break d}}else{i=c[Za>>2]|0;Wa=c[s>>2]|0;if((i|0)<1|(i|0)>(Wa|0)){K=158;break c}}while(0);if((d[u>>0]|0)<=1){c[Xa>>2]=0;c[v>>2]=0;l=oj(I,147,Xa,0)|0;if(!l)break c;j=l+4|0;c[j>>2]=c[j>>2]|1024;c[l+8>>2]=i;j=c[q>>2]|0;if((j|0)==(f|0))j=q;else{while(1){k=c[j+12>>2]|0;if((a[k>>0]|0)==106)j=k;else break}j=j+12|0}c[j>>2]=l;if(f|0)ni(I,f);b[q+16>>1]=i}a[o>>0]=a[o>>0]|1;f=p}else f=p;while(0);i=Va+1|0;Ta=c[J>>2]|0;if((i|0)<(Ta|0)){q=q+20|0;p=f;Va=i}else break}h=c[h+56>>2]|0;if((f|0)!=0&(h|0)!=0)f=Ta;else{K=201;break}}if((K|0)==158){c[ab>>2]=Va+1;c[ab+4>>2]=40659;c[ab+8>>2]=Wa;cd(db,41294,ab)}else if((K|0)==201){if((Ta|0)<=0){gb=1;Ra=fb;return gb|0}f=0;while(1){gb=f;f=f+1|0;if(!(a[J+4+(gb*20|0)+13>>0]&1))break;if((f|0)>=(Ta|0)){cb=1;K=206;break}}if((K|0)==206){Ra=fb;return cb|0}c[eb>>2]=f;cd(db,41576,eb);gb=2;Ra=fb;return gb|0}else if((K|0)==206){Ra=fb;return cb|0}gb=2;Ra=fb;return gb|0}case 206:{Ra=fb;return cb|0}}if((K|0)==11){gb=2;Ra=fb;return gb|0}else if((K|0)==48){gb=2;Ra=fb;return gb|0}else if((K|0)==61){gb=2;Ra=fb;return gb|0}else if((K|0)==68){gb=2;Ra=fb;return gb|0}else if((K|0)==82){gb=2;Ra=fb;return gb|0}else if((K|0)==110){gb=2;Ra=fb;return gb|0}else if((K|0)==121){gb=2;Ra=fb;return gb|0}return 0}function Fk(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=0;a:while(1){switch(a[b+l>>0]|0){case 46:case 0:break a;default:{}}l=l+1|0}if(f|0){b:do if(l|0){h=b;k=f;i=l;while(1){g=a[h>>0]|0;if(!(g<<24>>24)){i=8;break}j=a[208+(g&255)>>0]|0;g=a[208+(d[k>>0]|0)>>0]|0;if(j<<24>>24!=g<<24>>24){i=10;break}if((i|0)>1){h=h+1|0;k=k+1|0;i=i+-1|0}else break b}if((i|0)==8){h=0;g=a[208+(d[k>>0]|0)>>0]|0}else if((i|0)==10)h=j&255;if((h|0)!=(g&255|0)){e=0;return e|0}}while(0);if(a[f+l>>0]|0){e=0;return e|0}}b=b+(l+1)|0;l=0;c:while(1){switch(a[b+l>>0]|0){case 46:case 0:break c;default:{}}l=l+1|0}if(e|0){d:do if(l|0){h=b;k=e;i=l;while(1){g=a[h>>0]|0;if(!(g<<24>>24)){i=21;break}j=a[208+(g&255)>>0]|0;g=a[208+(d[k>>0]|0)>>0]|0;if(j<<24>>24!=g<<24>>24){i=23;break}if((i|0)>1){h=h+1|0;k=k+1|0;i=i+-1|0}else break d}if((i|0)==21){h=0;g=a[208+(d[k>>0]|0)>>0]|0}else if((i|0)==23)h=j&255;if((h|0)!=(g&255|0)){e=0;return e|0}}while(0);if(a[e+l>>0]|0){e=0;return e|0}}if(c|0){h=b+(l+1)|0;e=a[h>>0]|0;g=(d[208+(e&255)>>0]|0)-(d[208+(d[c>>0]|0)>>0]|0)|0;if(!(e<<24>>24==0|(g|0)!=0))do{h=h+1|0;c=c+1|0;e=a[h>>0]|0;g=(d[208+(e&255)>>0]|0)-(d[208+(d[c>>0]|0)>>0]|0)|0}while(!(e<<24>>24==0|(g|0)!=0));if(g|0){e=0;return e|0}}e=1;return e|0}function Gk(b,d,f,g,h,i){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+32|0;k=p;d=c[d+4+(f*20|0)>>2]|0;m=c[b>>2]|0;if(!d){o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}d=dk(m,d,0,0)|0;if(!d){o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}if((i|0)>0&(a[h>>0]|0)!=71){c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+4>>2]=140;c[k+24>>2]=i;_j(k,d)|0}if((a[g>>0]|0)==106){f=c[g+8>>2]|0;c[k>>2]=f;if(f){i=(Eu(f)|0)&1073741823;c[k+4>>2]=i;if((i|0)!=0?(j=oj(c[b>>2]|0,106,k,0)|0,(j|0)!=0):0){c[j+12>>2]=d;d=j+4|0;c[d>>2]=c[d>>2]|4352;d=j}}else c[k+4>>2]=0}j=g+4|0;c[j>>2]=c[j>>2]|134217728;ni(m,g);f=g;h=d;i=f+52|0;do{c[f>>2]=c[h>>2];f=f+4|0;h=h+4|0}while((f|0)<(i|0));if((c[j>>2]&1024|0)==0?(o=g+8|0,n=c[o>>2]|0,n|0):0){b=(Eu(n)|0)+1|0;a:do if(!m){k=Sv(b|0,0,-1,-1)|0;i=L()|0;if(!(i>>>0>0|(i|0)==0&k>>>0>2147483390)){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](b)|0;l=38;break}f=Wa[c[29356>>2]&127](b)|0;if((c[14985]|0)>>>0>>0)c[14985]=b;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){k=c[14978]|0;i=Tv(h|0,i|0,f|0,((f|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=k>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(f){h=Wa[c[29352>>2]&127](f)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;l=39}else l=39}else f=0}else f=0}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){f=0;break}}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){h=m+300|0;f=c[h>>2]|0;if(f|0){c[h>>2]=c[f>>2];l=m+284|0;c[l>>2]=(c[l>>2]|0)+1;l=38;break a}h=m+296|0;f=c[h>>2]|0;if(!f){f=m+292|0;break}else{c[h>>2]=c[f>>2];l=m+284|0;c[l>>2]=(c[l>>2]|0)+1;l=38;break a}}else f=m+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(m,b,0)|0;l=38}while(0);if((l|0)==38)if(!f)f=0;else l=39;if((l|0)==39)ew(f|0,n|0,b|0)|0;c[o>>2]=f;c[j>>2]=c[j>>2]|65536}if(m|0){if(c[m+480>>2]|0){Xd(m,d);o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}o=d;if((c[m+304>>2]|0)>>>0<=o>>>0?(c[m+308>>2]|0)>>>0>o>>>0:0){o=m+300|0;c[d>>2]=c[o>>2];c[o>>2]=d;o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}else{o=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);o=g+4|0;g=c[o>>2]|0;g=g|4194304;c[o>>2]=g;Ra=p;return}}function Hk(b,e){b=b|0;e=e|0;if((a[e>>0]|0)!=-93)return 0;e=e+38|0;a[e>>0]=(c[b+24>>2]|0)+(d[e>>0]|0);return 0}function Ik(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+32|0;i=n+24|0;m=n+16|0;l=n+8|0;h=n;j=c[b>>2]|0;k=c[(c[j+16>>2]|0)+(f<<4)>>2]|0;if(a[j+165>>0]|0){m=0;Ra=n;return m|0}g=$a[c[j+312>>2]&127](c[j+316>>2]|0,20,d,e,k,c[b+240>>2]|0)|0;if((g|0)==1){c[h>>2]=d;c[h+4>>2]=e;d=Bb(40358,h)|0;if(f|0?1:(c[j+20>>2]|0)>2){c[l>>2]=k;c[l+4>>2]=d;d=Bb(40364,l)|0}c[m>>2]=d;cd(b,40370,m);c[b+12>>2]=23;m=1;Ra=n;return m|0}else{if((g|2|0)==2){m=g;Ra=n;return m|0}cd(b,39231,i);c[b+12>>2]=1;m=g;Ra=n;return m|0}return 0}function Jk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;switch(a[d>>0]|0){case -92:case -94:break;default:return 0}e=c[b+24>>2]|0;f=c[e>>2]|0;a:do if((f|0)!=0?(g=c[f>>2]|0,(g|0)>0):0){d=c[d+28>>2]|0;b=0;while(1){if((d|0)==(c[f+8+(b*72|0)+40>>2]|0))break;b=b+1|0;if((b|0)>=(g|0)){h=8;break a}}b=e+4|0}else h=8;while(0);if((h|0)==8)b=e+8|0;c[b>>2]=(c[b>>2]|0)+1;return 0}function Kk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=Ra;Ra=Ra+32|0;h=i;if(a[(c[b>>2]|0)+81>>0]|0){Ra=i;return}if(c[d+8>>2]&128|0){Ra=i;return}c[h+4>>2]=141;c[h>>2]=b;f=h+8|0;if(!(a[b+22>>0]|0))g=h+12|0;else{c[f>>2]=142;g=h+12|0;c[g>>2]=0;$j(h,d)|0}c[f>>2]=143;c[g>>2]=68;$j(h,d)|0;f=b+36|0;if(c[f>>2]|0){Ra=i;return}if(a[(c[b>>2]|0)+81>>0]|0){Ra=i;return}c[h+4>>2]=125;c[h+8>>2]=126;c[h+12>>2]=0;c[h>>2]=b;c[h+24>>2]=e;$j(h,d)|0;if(c[f>>2]|0){Ra=i;return}if(a[(c[b>>2]|0)+81>>0]|0){Ra=i;return}c[h+8>>2]=132;c[h+12>>2]=69;c[h+4>>2]=141;c[h>>2]=b;$j(h,d)|0;Ra=i;return}function Lk(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;H=Ra;Ra=Ra+80|0;F=H+24|0;B=H+16|0;A=H;x=H+40|0;y=H+36|0;if(!g){G=0;Ra=H;return G|0}z=c[c[f>>2]>>2]|0;E=c[e>>2]|0;k=g+4|0;j=c[g>>2]|0;a:do if((j|0)>0){t=x+4|0;u=x+24|0;i=0;s=k;b:while(1){r=c[s>>2]|0;q=(r|0)==0;c:do if(q)j=0;else{j=r;while(1){l=c[j+4>>2]|0;if(!(l&4096))break c;if(!(l&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=0;break}}}while(0);d:do if((a[h>>0]|0)==71)G=23;else{p=c[f>>2]|0;e:do if((a[j>>0]|0)==59?(v=c[j+8>>2]|0,w=c[p>>2]|0,(w|0)>0):0){l=0;while(1){n=c[p+4+(l*20|0)+4>>2]|0;if(n|0){o=a[n>>0]|0;m=(d[208+(o&255)>>0]|0)-(d[208+(d[v>>0]|0)>>0]|0)|0;if(!(o<<24>>24==0|(m|0)!=0)){o=v;do{n=n+1|0;o=o+1|0;I=a[n>>0]|0;m=(d[208+(I&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(I<<24>>24==0|(m|0)!=0))}if(!m)break}l=l+1|0;if((l|0)>=(w|0))break e}I=l+1|0;c[y>>2]=I;b[s+16>>1]=I;break d}while(0);c[y>>2]=0;G=23}while(0);f:do if((G|0)==23){G=0;if(uk(j,y)|0){j=c[y>>2]|0;if((j+-1|0)>>>0>65534)break b;b[s+16>>1]=j;break}m=s+16|0;b[m>>1]=0;if(Ck(e,r)|0){C=1;G=50;break b}j=c[f>>2]|0;if((c[j>>2]|0)>0){if(q){l=0;while(1){I=l;l=l+1|0;if(!(bk(0,0,c[j+4+(I*20|0)>>2]|0,-1)|0))b[m>>1]=l;j=c[f>>2]|0;if((l|0)>=(c[j>>2]|0))break f}}l=0;do{if(!(bk(0,r,c[j+4+(l*20|0)>>2]|0,-1)|0)){c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[x+20>>2]=0;c[t>>2]=144;c[u>>2]=f;_j(x,r)|0;l=l+1|0;b[m>>1]=l}else l=l+1|0;j=c[f>>2]|0}while((l|0)<(c[j>>2]|0))}}while(0);i=i+1|0;j=c[g>>2]|0;if((i|0)<(j|0))s=s+20|0;else break a}if((G|0)==50){Ra=H;return C|0}c[A>>2]=i+1;c[A+4>>2]=h;c[A+8>>2]=z;cd(E,41294,A);I=1;Ra=H;return I|0}while(0);i=c[E>>2]|0;if(a[i+81>>0]|0){I=0;Ra=H;return I|0}if((j|0)>(c[i+116>>2]|0)){c[B>>2]=h;cd(E,41350,B);I=1;Ra=H;return I|0}m=c[f>>2]|0;if((j|0)<=0){I=0;Ra=H;return I|0}l=0;while(1){i=b[k+16>>1]|0;if(i<<16>>16){i=i&65535;D=c[m>>2]|0;if((D|0)<(i|0))break;Gk(E,m,i+-1|0,c[k>>2]|0,h,0);j=c[g>>2]|0}i=l+1|0;if((i|0)<(j|0)){l=i;k=k+20|0}else{C=0;G=50;break}}if((G|0)==50){Ra=H;return C|0}c[F>>2]=l+1;c[F+4>>2]=h;c[F+8>>2]=D;cd(E,41294,F);I=1;Ra=H;return I|0}function Mk(a,b){a=a|0;b=b|0;return 0}function Nk(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+16|0;n=p+8|0;m=p;o=d+52|0;if(!(c[o>>2]|0)){o=0;Ra=p;return o|0}k=c[d+48>>2]|0;if(!k){o=0;Ra=p;return o|0}f=d;a:while(1){switch(a[f+4>>0]|0){case -125:case -128:break;default:break a}f=c[f+52>>2]|0;if(!f){j=0;l=36;break}}if((l|0)==36){Ra=p;return j|0}f=c[k>>2]|0;if((f|0)<=0){o=0;Ra=p;return o|0}while(1){i=f;f=f+-1|0;if(c[(c[k+4+(f*20|0)>>2]|0)+4>>2]&256|0)break;if((i|0)<=1){j=0;l=36;break}}if((l|0)==36){Ra=p;return j|0}b=c[b>>2]|0;k=c[b>>2]|0;b:do if(!k){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](76)|0;l=33;break}f=Wa[c[29356>>2]&127](76)|0;if((c[14985]|0)>>>0<76)c[14985]=76;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){j=c[14978]|0;i=Tv(h|0,i|0,f|0,((f|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=j>>>0)&1}h=Wa[c[29340>>2]&127](f)|0;if(!h){o=2;Ra=p;return o|0}f=Wa[c[29352>>2]&127](h)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}else{if(c[k+272>>2]|0){if(a[k+81>>0]|0){o=2;Ra=p;return o|0}}else{do if((e[k+276>>1]|0)>=76){f=k+300|0;g=c[f>>2]|0;if(g|0){c[f>>2]=c[g>>2];l=k+284|0;c[l>>2]=(c[l>>2]|0)+1;l=33;break b}f=k+296|0;g=c[f>>2]|0;if(!g){f=k+292|0;break}else{c[f>>2]=c[g>>2];l=k+284|0;c[l>>2]=(c[l>>2]|0)+1;l=33;break b}}else f=k+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}g=_d(k,76,0)|0;l=33}while(0);if((l|0)==33)if(!g){o=2;Ra=p;return o|0}else h=g;i=h;j=i+76|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));f=m;c[f>>2]=0;c[f+4>>2]=0;f=lj(b,0,0,0,m,h,0,0)|0;if(!f){o=2;Ra=p;return o|0}i=h;g=d;j=i+76|0;do{c[i>>2]=c[g>>2];i=i+4|0;g=g+4|0}while((i|0)<(j|0));c[d+32>>2]=f;c[n>>2]=0;c[n+4>>2]=0;n=oj(k,172,n,0)|0;n=nj(c[b>>2]|0,0,n)|0;c[d>>2]=n;a[d+4>>0]=-125;c[d+36>>2]=0;c[h+40>>2]=0;c[h+44>>2]=0;c[h+48>>2]=0;c[o>>2]=0;c[d+56>>2]=0;c[d+64>>2]=0;o=d+8|0;c[o>>2]=c[o>>2]&-65793|65536;c[(c[h+52>>2]|0)+56>>2]=h;c[h+60>>2]=0;o=0;Ra=p;return o|0}function Ok(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0;qa=Ra;Ra=Ra+144|0;pa=qa+128|0;la=qa+120|0;ka=qa+112|0;ja=qa+96|0;ia=qa+88|0;P=qa+80|0;O=qa+72|0;N=qa+64|0;I=qa+56|0;H=qa+48|0;G=qa+40|0;K=qa+24|0;J=qa+16|0;F=qa+8|0;E=qa;ga=qa+136|0;ma=c[f>>2]|0;na=c[ma>>2]|0;oa=g+8|0;h=c[oa>>2]|0;c[oa>>2]=h|64;ha=na+81|0;if(a[ha>>0]|0){pa=2;Ra=qa;return pa|0}if(h&64|0){pa=1;Ra=qa;return pa|0}A=g+32|0;ea=c[A>>2]|0;fa=c[g>>2]|0;h=c[g+64>>2]|0;if(h|0){da=ma+264|0;c[h+4>>2]=c[da>>2];c[da>>2]=h}Qk(ma,ea);da=ea+8|0;a:do if((c[ea>>2]|0)>0){y=0;z=da;b:while(1){x=z+37|0;q=a[x>>0]|0;do if(!(q&32)){u=c[f>>2]|0;s=c[u>>2]|0;v=u+264|0;h=c[v>>2]|0;w=z+4|0;c:do if((c[w>>2]|0)==0?(D=c[z+8>>2]|0,!((h|0)==0|(D|0)==0)):0){d:while(1){o=c[h>>2]|0;e:do if((o|0)>0){ba=a[D>>0]|0;p=a[208+(ba&255)>>0]|0;if(!(ba<<24>>24)){i=0;while(1){j=h+8+(i<<4)|0;k=c[j>>2]|0;i=i+1|0;if(p<<24>>24==(a[208+(d[k>>0]|0)>>0]|0)){m=j;j=k;break d}if((i|0)>=(o|0))break e}}l=0;do{m=h+8+(l<<4)|0;j=c[m>>2]|0;if(p<<24>>24==(a[208+(d[j>>0]|0)>>0]|0)){i=j;k=D;do{k=k+1|0;i=i+1|0;ba=a[k>>0]|0;n=(d[208+(ba&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(n|0)!=0));if(!n)break d}l=l+1|0}while((l|0)<(o|0))}while(0);h=c[h+4>>2]|0;if(!h)break c}t=m+12|0;i=c[t>>2]|0;if(i|0){ca=24;break b}if(q&4){ca=26;break b}l=(s|0)==0;f:do if(l){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](80)|0;ca=50;break}i=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){ba=c[14978]|0;aa=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;$=L()|0;c[14768]=(($|0)<0|($|0)==0&aa>>>0<=ba>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){ca=51;break b}j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0)break;c[14987]=j}else{if(c[s+272>>2]|0){if(a[s+81>>0]|0){ca=51;break b}}else{do if((e[s+276>>1]|0)>=80){j=s+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];ca=s+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=50;break f}j=s+296|0;i=c[j>>2]|0;if(!i){i=s+292|0;break}else{c[j>>2]=c[i>>2];ca=s+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=50;break f}}else i=s+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(s,80,0)|0;ca=50}while(0);if((ca|0)==50){ca=0;if(!i){ca=51;break b}}o=i;p=o+80|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(p|0));c[z+16>>2]=i;r=i+32|0;c[r>>2]=1;n=c[m>>2]|0;g:do if(!n)j=0;else{o=(Eu(n)|0)+1|0;h:do if(l){ba=Sv(o|0,0,-1,-1)|0;aa=L()|0;if(aa>>>0>0|(aa|0)==0&ba>>>0>2147483390){j=0;break g}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](o)|0;ca=77;break}j=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){ba=c[14978]|0;aa=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;$=L()|0;c[14768]=(($|0)<0|($|0)==0&aa>>>0<=ba>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){j=0;break g}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0<=(c[14987]|0)>>>0)break;c[14987]=k}else{if(c[s+272>>2]|0){if(a[s+81>>0]|0){j=0;break g}}else{do if(!(0<0|(0==0?(e[s+276>>1]|0)>>>0>>0:0))){k=s+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];ca=s+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=77;break h}k=s+296|0;j=c[k>>2]|0;if(!j){j=s+292|0;break}else{c[k>>2]=c[j>>2];ca=s+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=77;break h}}else j=s+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(s,o,0)|0;ca=77}while(0);if((ca|0)==77){ca=0;if(!j){j=0;break}}ew(j|0,n|0,o|0)|0}while(0);c[i>>2]=j;b[i+40>>1]=-1;b[i+44>>1]=200;q=i+36|0;c[q>>2]=c[q>>2]|66;q=fk(s,c[m+8>>2]|0,0)|0;c[z+20>>2]=q;if(a[s+81>>0]|0){h=2;ca=421;break b}p=((a[q+4>>0]|0)+-127&255)<2;if(p?(B=c[q+32>>2]|0,C=c[B>>2]|0,(C|0)>0):0){o=q+8|0;n=0;do{do if(!(c[B+8+(n*72|0)+4>>2]|0)){k=c[B+8+(n*72|0)+8>>2]|0;if(!k)break;l=c[m>>2]|0;ba=a[k>>0]|0;j=(d[208+(ba&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!(ba<<24>>24==0|(j|0)!=0))do{k=k+1|0;l=l+1|0;ba=a[k>>0]|0;j=(d[208+(ba&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(j|0)!=0));if(j|0)break;c[B+8+(n*72|0)+16>>2]=i;ba=B+8+(n*72|0)+37|0;a[ba>>0]=a[ba>>0]|32;c[r>>2]=(c[r>>2]|0)+1;c[o>>2]=c[o>>2]|8192}while(0);n=n+1|0}while((n|0)!=(C|0))}if((c[r>>2]|0)>>>0>2){ca=92;break b}c[t>>2]=40892;l=c[v>>2]|0;c[v>>2]=h;if(p){aa=c[q+52>>2]|0;ba=aa+64|0;c[ba>>2]=c[q+64>>2];$j(f,aa)|0;c[ba>>2]=0}else $j(f,q)|0;c[v>>2]=h;h=q;while(1){j=c[h+52>>2]|0;if(!j)break;else h=j}h=c[h>>2]|0;k=c[m+4>>2]|0;do if(k){if(!h){h=k;break}h=c[h>>2]|0;j=c[k>>2]|0;if((h|0)==(j|0))h=k;else{ca=101;break b}}while(0);Tk(c[u>>2]|0,h,i+42|0,i+4|0);if(p){c[t>>2]=(c[q+8>>2]&8192|0)==0?40987:40953;$j(f,q)|0}c[t>>2]=0;c[v>>2]=l}while(0);l=z+16|0;h=c[l>>2]|0;if(!h){k=c[z+8>>2]|0;do if(!k){if($j(f,c[z+20>>2]|0)|0){h=2;ca=421;break b}if(Rk(ma,z)|0){h=2;ca=421;break b}}else{j=c[z>>2]|0;if(!j)h=w;else{i=c[(c[ma>>2]|0)+16>>2]|0;h=0;while(1)if((c[i+(h<<4)+12>>2]|0)==(j|0))break;else h=h+1|0;h=i+(h<<4)|0}h=bd(ma,0,k,c[h>>2]|0)|0;c[l>>2]=h;if(!h){h=2;ca=421;break b}i=h+32|0;j=c[i>>2]|0;if(j>>>0>65534){ca=115;break b}c[i>>2]=j+1;if(!(c[h+56>>2]|0)){if(a[x>>0]&4){ca=118;break b}if(!(c[h+12>>2]|0))break}if(Sk(ma,h)|0){h=2;ca=421;break b}$=fk(na,c[h+12>>2]|0,0)|0;c[z+20>>2]=$;ba=h+42|0;aa=b[ba>>1]|0;b[ba>>1]=-1;$j(f,$)|0;b[ba>>1]=aa}while(0);h=c[l>>2]|0;if(!h)break}if(a[x>>0]&2){m=c[z+64>>2]|0;h=c[h+8>>2]|0;if(!h){ca=132;break b}l=d[208+(d[m>>0]|0)>>0]|0;while(1){j=c[h>>2]|0;ba=a[j>>0]|0;i=(d[208+(ba&255)>>0]|0)-l|0;if(!(ba<<24>>24==0|(i|0)!=0)){k=m;do{j=j+1|0;k=k+1|0;ba=a[j>>0]|0;i=(d[208+(ba&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(i|0)!=0))}if(!i)break;h=c[h+20>>2]|0;if(!h){ca=132;break b}}c[z+68>>2]=h}}while(0);y=y+1|0;if((y|0)>=(c[ea>>2]|0))break a;else z=z+72|0}if((ca|0)==24){c[E>>2]=j;cd(u,i,E);pa=2;Ra=qa;return pa|0}else if((ca|0)==26){c[F>>2]=D;cd(u,41054,F);pa=2;Ra=qa;return pa|0}else if((ca|0)==51){c[z+16>>2]=0;pa=2;Ra=qa;return pa|0}else if((ca|0)==92){c[J>>2]=c[m>>2];cd(u,40849,J);pa=2;Ra=qa;return pa|0}else if((ca|0)==101){c[K>>2]=c[m>>2];c[K+4>>2]=h;c[K+8>>2]=j;cd(u,40915,K);c[v>>2]=l;pa=2;Ra=qa;return pa|0}else if((ca|0)==115){c[G>>2]=c[h>>2];cd(ma,40730,G);c[l>>2]=0;pa=2;Ra=qa;return pa|0}else if((ca|0)==118){c[H>>2]=c[z+8>>2];cd(ma,41054,H);pa=2;Ra=qa;return pa|0}else if((ca|0)==132){c[I>>2]=m;c[I+4>>2]=0;cd(ma,41107,I);a[ma+17>>0]=1;pa=2;Ra=qa;return pa|0}else if((ca|0)==421){Ra=qa;return h|0}}while(0);if(a[ha>>0]|0){pa=2;Ra=qa;return pa|0}G=c[A>>2]|0;i:do if((c[G>>2]|0)>1){H=g+36|0;D=0;E=G+8|0;F=G+80|0;j:while(1){B=c[F+16>>2]|0;if(!((B|0)==0|(c[E+16>>2]|0)==0)){ba=d[F+36>>0]|0;C=ba&32;A=(C|0)==0;f=F+44|0;if(ba&4){if(c[f>>2]|0){ca=142;break}i=F+48|0;if(c[i>>2]|0){ca=142;break}u=B+42|0;h=b[u>>1]|0;if(h<<16>>16>0){v=B+4|0;z=D+1|0;w=(C|0)!=0;x=G+8+(z*72|0)+16|0;y=G+8+(z*72|0)+40|0;z=G+8+(z*72|0)+56|0;t=0;do{p=c[(c[v>>2]|0)+(t<<4)>>2]|0;r=0;k:while(1){s=G+8+(r*72|0)+16|0;j=c[s>>2]|0;k=b[j+42>>1]|0;if(k<<16>>16>0){n=c[j+4>>2]|0;o=d[208+(d[p>>0]|0)>>0]|0;m=k<<16>>16;q=0;while(1){k=c[n+(q<<4)>>2]|0;ba=a[k>>0]|0;j=(d[208+(ba&255)>>0]|0)-o|0;if(!(ba<<24>>24==0|(j|0)!=0)){l=p;do{k=k+1|0;l=l+1|0;ba=a[k>>0]|0;j=(d[208+(ba&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(j|0)!=0))}if(!j){ca=154;break k}j=q+1|0;if((j|0)<(m|0))q=j;else break}}if(r>>>0>>0)r=r+1|0;else break}if((ca|0)==154){ca=0;m=c[ma>>2]|0;l=m+272|0;l:do if(c[l>>2]|0)if(!(a[m+81>>0]|0))ca=164;else k=0;else{do if((e[m+276>>1]|0)>=52){h=m+300|0;j=c[h>>2]|0;if(j|0){c[h>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=165;break l}h=m+296|0;j=c[h>>2]|0;if(!j){h=m+292|0;break}else{c[h>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=165;break l}}else h=m+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;ca=164}while(0);if((ca|0)==164){j=_d(m,52,0)|0;ca=165}do if((ca|0)==165){ca=0;if(j){o=j;p=o+52|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));a[j>>0]=-94;b[j+34>>1]=-1;c[j+24>>2]=1;ba=c[s>>2]|0;c[j+44>>2]=ba;c[j+28>>2]=c[G+8+(r*72|0)+40>>2];if((q|0)==(b[ba+40>>1]|0)){b[j+32>>1]=-1;k=j;break}else{b[j+32>>1]=q;aa=cw(1,0,(q>>>0<63?q:63)|0)|0;ba=L()|0;k=G+8+(r*72|0)+56|0;$=k;ba=c[$+4>>2]|ba;c[k>>2]=c[$>>2]|aa;c[k+4>>2]=ba;k=j;break}}else k=0}while(0);m:do if(c[l>>2]|0)if(!(a[m+81>>0]|0))ca=179;else j=0;else{do if((e[m+276>>1]|0)>=52){h=m+300|0;j=c[h>>2]|0;if(j|0){c[h>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=180;break m}h=m+296|0;j=c[h>>2]|0;if(!j){h=m+292|0;break}else{c[h>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=180;break m}}else h=m+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;ca=179}while(0);if((ca|0)==179){j=_d(m,52,0)|0;ca=180}do if((ca|0)==180){ca=0;if(!j){j=0;break}o=j;p=o+52|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));a[j>>0]=-94;b[j+34>>1]=-1;c[j+24>>2]=1;ba=c[x>>2]|0;c[j+44>>2]=ba;c[j+28>>2]=c[y>>2];if((t|0)==(b[ba+40>>1]|0)){b[j+32>>1]=-1;break}else{b[j+32>>1]=t;$=cw(1,0,(t>>>0<63?t:63)|0)|0;aa=L()|0;_=z;aa=c[_+4>>2]|aa;ba=z;c[ba>>2]=c[_>>2]|$;c[ba+4>>2]=aa;break}}while(0);h=ej(ma,53,k,j)|0;if(w&(h|0)!=0){ba=h+4|0;c[ba>>2]=c[ba>>2]|1;b[h+36>>1]=c[j+28>>2]}h=Xk(m,c[H>>2]|0,h)|0;c[H>>2]=h;h=b[u>>1]|0}t=t+1|0}while((t|0)<(h<<16>>16|0))}}else i=F+48|0;h=c[f>>2]|0;if(h|0){if(c[i>>2]|0){ca=190;break}if(!A){Wk(h,c[F+40>>2]|0);h=c[f>>2]|0}ba=Xk(c[ma>>2]|0,c[H>>2]|0,h)|0;c[H>>2]=ba;c[f>>2]=0}y=c[i>>2]|0;if(y|0?(M=y+4|0,(c[M>>2]|0)>0):0){z=B+42|0;x=B+4|0;w=D+1|0;t=(C|0)!=0;u=G+8+(w*72|0)+16|0;v=G+8+(w*72|0)+40|0;w=G+8+(w*72|0)+56|0;s=0;do{o=c[(c[y>>2]|0)+(s<<3)>>2]|0;h=b[z>>1]|0;if(h<<16>>16<=0){ca=246;break j}l=c[x>>2]|0;p=d[208+(d[o>>0]|0)>>0]|0;k=h<<16>>16;r=0;while(1){i=c[l+(r<<4)>>2]|0;ba=a[i>>0]|0;h=(d[208+(ba&255)>>0]|0)-p|0;if(!(ba<<24>>24==0|(h|0)!=0)){j=o;do{i=i+1|0;j=j+1|0;ba=a[i>>0]|0;h=(d[208+(ba&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(h|0)!=0))}if(!h)break;h=r+1|0;if((h|0)<(k|0))r=h;else{ca=246;break j}}n=0;n:while(1){q=G+8+(n*72|0)+16|0;h=c[q>>2]|0;i=b[h+42>>1]|0;if(i<<16>>16>0){l=c[h+4>>2]|0;k=i<<16>>16;m=0;while(1){i=c[l+(m<<4)>>2]|0;ba=a[i>>0]|0;h=(d[208+(ba&255)>>0]|0)-p|0;if(!(ba<<24>>24==0|(h|0)!=0)){j=o;do{i=i+1|0;j=j+1|0;ba=a[i>>0]|0;h=(d[208+(ba&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(ba<<24>>24==0|(h|0)!=0))}if(!h)break n;h=m+1|0;if((h|0)<(k|0))m=h;else break}}if(n>>>0>>0)n=n+1|0;else{ca=246;break j}}l=c[ma>>2]|0;k=l+272|0;o:do if(c[k>>2]|0)if(!(a[l+81>>0]|0))ca=223;else j=0;else{do if((e[l+276>>1]|0)>=52){h=l+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];ca=l+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=224;break o}h=l+296|0;i=c[h>>2]|0;if(!i){h=l+292|0;break}else{c[h>>2]=c[i>>2];ca=l+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=224;break o}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;ca=223}while(0);if((ca|0)==223){i=_d(l,52,0)|0;ca=224}do if((ca|0)==224){ca=0;if(i){o=i;p=o+52|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));a[i>>0]=-94;b[i+34>>1]=-1;c[i+24>>2]=1;ba=c[q>>2]|0;c[i+44>>2]=ba;c[i+28>>2]=c[G+8+(n*72|0)+40>>2];if((m|0)==(b[ba+40>>1]|0)){b[i+32>>1]=-1;j=i;break}else{b[i+32>>1]=m;aa=cw(1,0,(m>>>0<63?m:63)|0)|0;ba=L()|0;j=G+8+(n*72|0)+56|0;$=j;ba=c[$+4>>2]|ba;c[j>>2]=c[$>>2]|aa;c[j+4>>2]=ba;j=i;break}}else j=0}while(0);p:do if(c[k>>2]|0)if(!(a[l+81>>0]|0))ca=238;else i=0;else{do if((e[l+276>>1]|0)>=52){h=l+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];ca=l+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=239;break p}h=l+296|0;i=c[h>>2]|0;if(!i){h=l+292|0;break}else{c[h>>2]=c[i>>2];ca=l+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=239;break p}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;ca=238}while(0);if((ca|0)==238){i=_d(l,52,0)|0;ca=239}do if((ca|0)==239){ca=0;if(i){o=i;p=o+52|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(p|0));a[i>>0]=-94;b[i+34>>1]=-1;c[i+24>>2]=1;ba=c[u>>2]|0;c[i+44>>2]=ba;c[i+28>>2]=c[v>>2];if((r|0)==(b[ba+40>>1]|0)){b[i+32>>1]=-1;break}else{b[i+32>>1]=r;$=cw(1,0,(r>>>0<63?r:63)|0)|0;aa=L()|0;_=w;aa=c[_+4>>2]|aa;ba=w;c[ba>>2]=c[_>>2]|$;c[ba+4>>2]=aa;break}}else i=0}while(0);h=ej(ma,53,j,i)|0;if(t&(h|0)!=0){ba=h+4|0;c[ba>>2]=c[ba>>2]|1;b[h+36>>1]=c[i+28>>2]}ba=Xk(l,c[H>>2]|0,h)|0;c[H>>2]=ba;s=s+1|0}while((s|0)<(c[M>>2]|0))}}D=D+1|0;if((D|0)>=((c[G>>2]|0)+-1|0))break i;else{E=E+72|0;F=F+72|0}}if((ca|0)==142){c[N>>2]=0;cd(ma,41125,N);pa=2;Ra=qa;return pa|0}else if((ca|0)==190){cd(ma,41175,O);pa=2;Ra=qa;return pa|0}else if((ca|0)==246){c[P>>2]=o;cd(ma,41230,P);pa=2;Ra=qa;return pa|0}}while(0);k=c[fa>>2]|0;q:do if((k|0)>0){j=0;h=0;r:while(1){i=c[fa+4+(j*20|0)>>2]|0;switch(a[i>>0]|0){case -84:break r;case -122:{if((a[c[i+16>>2]>>0]|0)==-84)break r;break}default:{}}h=c[i+4>>2]|h;j=j+1|0;if((j|0)>=(k|0)){ca=415;break q}}M=0==0?(c[(c[ma>>2]|0)+32>>2]&68|0)==4:0;N=ga+4|0;O=ga+4|0;P=ga+4|0;Q=(na|0)==0;R=ma+200|0;S=na+480|0;T=na+304|0;U=ma+272|0;V=na+308|0;W=na+300|0;X=na+272|0;Y=na+276|0;Z=na+288|0;_=na+296|0;$=na+284|0;aa=na+292|0;ba=na+16|0;i=0;K=0;do{k=fa+4+(K*20|0)|0;j=c[k>>2]|0;h=c[j+4>>2]|h;switch(a[j>>0]|0){case -84:{J=0;ca=260;break}case -122:{if((a[c[j+16>>2]>>0]|0)==-84){J=c[(c[j+12>>2]|0)+8>>2]|0;ca=260}else ca=256;break}default:ca=256}do if((ca|0)==256){ca=0;i=nj(c[ma>>2]|0,i,j)|0;if(i|0){I=fa+4+(K*20|0)+4|0;H=(c[i>>2]|0)+-1|0;c[i+4+(H*20|0)+4>>2]=c[I>>2];J=fa+4+(K*20|0)+8|0;c[i+4+(H*20|0)+8>>2]=c[J>>2];c[I>>2]=0;c[J>>2]=0}c[k>>2]=0}else if((ca|0)==260){ca=0;if((c[ea>>2]|0)>0){H=(J|0)==0;I=(J|0)!=0;j=0;F=0;G=da;while(1){n=c[G+16>>2]|0;l=c[G+20>>2]|0;k=c[G+12>>2]|0;if(!k)E=c[n>>2]|0;else E=k;if(a[ha>>0]|0)break;if((l|0)!=0?(c[l+8>>2]&2048|0)!=0:0){D=0;ca=276}else ca=267;do if((ca|0)==267){ca=0;if(!H){D=a[J>>0]|0;k=(d[208+(D&255)>>0]|0)-(d[208+(d[E>>0]|0)>>0]|0)|0;if(!(D<<24>>24==0|(k|0)!=0)){l=E;m=J;do{m=m+1|0;l=l+1|0;D=a[m>>0]|0;k=(d[208+(D&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(D<<24>>24==0|(k|0)!=0))}if(k|0)break}l=c[n+72>>2]|0;if(!l){D=40769;l=0;ca=276}else{m=c[ba>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0;D=c[m+(k<<4)>>2]|0;l=0;ca=276}}while(0);if((ca|0)==276){ca=0;C=n+42|0;if((b[C>>1]|0)>0){v=n+4|0;w=(l|0)!=0;f=I&w;B=H&(F|0)!=0;x=G+36|0;y=G+48|0;z=(E|0)==0;A=(D|0)==0;u=0;do{r=c[v>>2]|0;s=c[r+(u<<4)>>2]|0;s:do if(f){m=c[(c[l>>2]|0)+4+(u*20|0)+8>>2]|0;k=0;t:while(1){switch(a[m+k>>0]|0){case 46:case 0:break t;default:{}}k=k+1|0}k=m+(k+1)|0;q=0;u:while(1){switch(a[k+q>>0]|0){case 46:case 0:break u;default:{}}q=q+1|0}v:do if(q|0){p=J;n=q;while(1){m=a[k>>0]|0;if(!(m<<24>>24)){ca=288;break}m=a[208+(m&255)>>0]|0;o=a[208+(d[p>>0]|0)>>0]|0;if(m<<24>>24!=o<<24>>24){ca=290;break}if((n|0)>1){k=k+1|0;p=p+1|0;n=n+-1|0}else break v}if((ca|0)==288){ca=0;m=0;k=a[208+(d[p>>0]|0)>>0]|0}else if((ca|0)==290){ca=0;m=m&255;k=o}if((m|0)!=(k&255|0))break s}while(0);if(!(a[J+q>>0]|0))ca=294}else ca=294;while(0);w:do if((ca|0)==294){ca=0;if((c[oa>>2]&131072|0)==0?a[r+(u<<4)+15>>0]&2:0)break;do if(B){if(a[x>>0]&4){r=0;do{j=c[ea+8+(r*72|0)+16>>2]|0;k=b[j+42>>1]|0;if(k<<16>>16>0){p=c[j+4>>2]|0;q=d[208+(d[s>>0]|0)>>0]|0;o=k<<16>>16;n=0;do{k=c[p+(n<<4)>>2]|0;t=a[k>>0]|0;j=(d[208+(t&255)>>0]|0)-q|0;if(!(t<<24>>24==0|(j|0)!=0)){m=s;do{k=k+1|0;m=m+1|0;t=a[k>>0]|0;j=(d[208+(t&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(j|0)!=0))}if(!j){j=1;break w}n=n+1|0}while((n|0)<(o|0))}r=r+1|0}while(r>>>0>>0)}j=c[y>>2]|0;if(!j)break;q=c[j+4>>2]|0;if((q|0)<=0)break;o=c[j>>2]|0;p=d[208+(d[s>>0]|0)>>0]|0;n=0;do{k=c[o+(n<<3)>>2]|0;t=a[k>>0]|0;j=(d[208+(t&255)>>0]|0)-p|0;if(!(t<<24>>24==0|(j|0)!=0)){m=s;do{k=k+1|0;m=m+1|0;t=a[k>>0]|0;j=(d[208+(t&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(j|0)!=0))}if(!j){j=1;break w}n=n+1|0}while((n|0)<(q|0))}while(0);c[ga>>2]=s;if(!s)j=0;else j=(Eu(s)|0)&1073741823;c[N>>2]=j;j=oj(na,59,ga,0)|0;if(!M?(c[ea>>2]|0)<=1:0){t=0;r=s}else ca=319;do if((ca|0)==319){ca=0;c[ga>>2]=E;if(z)k=0;else k=(Eu(E)|0)&1073741823;c[O>>2]=k;j=ej(ma,134,oj(na,59,ga,0)|0,j)|0;if(!A){c[ga>>2]=D;t=(Eu(D)|0)&1073741823;c[P>>2]=t;j=ej(ma,134,oj(na,59,ga,0)|0,j)|0}if(!M){t=0;r=s;break}c[ia>>2]=E;c[ia+4>>2]=s;r=dd(na,40358,ia)|0;t=r}while(0);i=nj(c[ma>>2]|0,i,j)|0;q=r;j=(r|0)==0;if(j)p=0;else p=(Eu(r)|0)&1073741823;do if(i|0){o=(c[i>>2]|0)+-1|0;n=c[ma>>2]|0;x:do if(j)n=0;else{m=p+1|0;y:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))ca=339;else{n=0;break x}else{do if(!(0>0|(0==0?m>>>0>(e[n+276>>1]|0)>>>0:0))){k=n+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];s=n+284|0;c[s>>2]=(c[s>>2]|0)+1;break y}k=n+296|0;j=c[k>>2]|0;if(!j){j=n+292|0;break}else{c[k>>2]=c[j>>2];s=n+284|0;c[s>>2]=(c[s>>2]|0)+1;break y}}else j=n+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;ca=339}while(0);if((ca|0)==339){ca=0;j=_d(n,m,0)|0}if(!j){n=0;break}ew(j|0,r|0,p|0)|0;a[j+p>>0]=0;n=j}while(0);c[i+4+(o*20|0)+4>>2]=n;z:do if((d[R>>0]|0)>1){m=c[ma>>2]|0;A:do if(!m){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](16)|0;ca=366;break}j=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;k=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&k>>>0>0){s=c[14978]|0;o=Tv(k|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&o>>>0<=s>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j)break z;k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0<=(c[14987]|0)>>>0)break;c[14987]=k}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break z}else{do if((e[m+276>>1]|0)>=16){k=m+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=366;break A}k=m+296|0;j=c[k>>2]|0;if(!j){j=m+292|0;break}else{c[k>>2]=c[j>>2];ca=m+284|0;c[ca>>2]=(c[ca>>2]|0)+1;ca=366;break A}}else j=m+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(m,16,0)|0;ca=366}while(0);if((ca|0)==366){ca=0;if(!j)break}c[j>>2]=n;c[j+4>>2]=q;c[j+8>>2]=p;c[j+12>>2]=c[U>>2];c[U>>2]=j}while(0);if(!(c[oa>>2]&2048))break;p=(c[i>>2]|0)+-1|0;B:do if(w){n=c[(c[l>>2]|0)+4+(u*20|0)+8>>2]|0;if(!n){j=0;break}o=(Eu(n)|0)+1|0;C:do if(Q){s=Sv(o|0,0,-1,-1)|0;r=L()|0;if(r>>>0>0|(r|0)==0&s>>>0>2147483390){j=0;break B}if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](o)|0;ca=393;break}j=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;m=59064;k=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&k>>>0>0){s=c[14978]|0;r=Tv(k|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;q=L()|0;c[14768]=((q|0)<0|(q|0)==0&r>>>0<=s>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){j=0;break B}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0<=(c[14987]|0)>>>0)break;c[14987]=k}else{if(c[X>>2]|0){if(a[ha>>0]|0){j=0;break B}}else{do if(0<0|(0==0?(e[Y>>1]|0)>>>0>>0:0))j=Z;else{j=c[W>>2]|0;if(j|0){c[W>>2]=c[j>>2];c[$>>2]=(c[$>>2]|0)+1;ca=393;break C}j=c[_>>2]|0;if(!j){j=aa;break}c[_>>2]=c[j>>2];c[$>>2]=(c[$>>2]|0)+1;ca=393;break C}while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(na,o,0)|0;ca=393}while(0);if((ca|0)==393){ca=0;if(!j){j=0;break}}ew(j|0,n|0,o|0)|0}else{c[ja>>2]=D;c[ja+4>>2]=E;c[ja+8>>2]=r;j=dd(na,40771,ja)|0}while(0);c[i+4+(p*20|0)+8>>2]=j;s=i+4+(p*20|0)+13|0;a[s>>0]=a[s>>0]|2}while(0);if(!t){j=1;break}do if(!Q){if(c[S>>2]|0){Xd(na,t);j=1;break w}j=t;if((c[T>>2]|0)>>>0>j>>>0)break;if((c[V>>2]|0)>>>0<=j>>>0)break;c[t>>2]=c[W>>2];c[W>>2]=t;j=1;break w}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);j=1;break}else{j=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);j=1;break}}while(0);u=u+1|0}while((u|0)<(b[C>>1]|0))}}F=F+1|0;if((F|0)>=(c[ea>>2]|0))break;else G=G+72|0}if(j)break}if(!J){cd(ma,40798,la);break}else{c[ka>>2]=J;cd(ma,40780,ka);break}}while(0);K=K+1|0}while((K|0)<(c[fa>>2]|0));ri(na,fa);c[g>>2]=i}else{h=0;ca=415}while(0);if((ca|0)==415)i=c[g>>2]|0;if(!i){pa=0;Ra=qa;return pa|0}if((c[i>>2]|0)>(c[na+116>>2]|0)){cd(ma,40818,pa);pa=2;Ra=qa;return pa|0}if(!(h&2097156)){pa=0;Ra=qa;return pa|0}c[oa>>2]=c[oa>>2]|262144;pa=0;Ra=qa;return pa|0}function Pk(a,b){a=a|0;b=b|0;var d=0;d=(c[a>>2]|0)+264|0;if(!(c[d>>2]|0))return;if(c[b+52>>2]|0)return;a=b;while(1){b=c[a+56>>2]|0;if(!b)break;else a=b}a=c[a+64>>2]|0;if(!a)return;c[d>>2]=c[a+4>>2];return}function Qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;if(!b)return;d=c[b>>2]|0;if((d|0)<=0)return;h=a+40|0;f=0;g=b+8|0;while(1){e=g+40|0;if((c[e>>2]|0)>-1){d=8;break}i=c[h>>2]|0;c[h>>2]=i+1;c[e>>2]=i;e=c[g+20>>2]|0;if(e){Qk(a,c[e+32>>2]|0);d=c[b>>2]|0}f=f+1|0;if((f|0)>=(d|0)){d=8;break}else g=g+72|0}if((d|0)==8)return}function Rk(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;l=o;g=c[f+20>>2]|0;j=c[d>>2]|0;a:do if(!j){if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](80)|0;n=24;break}h=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){m=c[14978]|0;k=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&k>>>0<=m>>>0)&1}i=Wa[c[29340>>2]&127](h)|0;if(i){h=Wa[c[29352>>2]&127](i)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;m=i}else m=i}else n=25}else{if(c[j+272>>2]|0){if(a[j+81>>0]|0){n=25;break}}else{do if((e[j+276>>1]|0)>=80){i=j+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];n=j+284|0;c[n>>2]=(c[n>>2]|0)+1;n=24;break a}i=j+296|0;h=c[i>>2]|0;if(!h){h=j+292|0;break}else{c[i>>2]=c[h>>2];n=j+284|0;c[n>>2]=(c[n>>2]|0)+1;n=24;break a}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(j,80,0)|0;n=24}while(0);if((n|0)==24)if(!h)n=25;else m=h;if((n|0)==25){c[f+16>>2]=0;d=7;Ra=o;return d|0}h=m;i=h+80|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(i|0));c[f+16>>2]=m;c[m+32>>2]=1;k=c[f+12>>2]|0;j=c[d>>2]|0;b:do if(!k){c[l>>2]=c[g+20>>2];h=dd(j,41042,l)|0}else{f=(Eu(k)|0)+1|0;c:do if(!j){l=Sv(f|0,0,-1,-1)|0;j=L()|0;if(j>>>0>0|(j|0)==0&l>>>0>2147483390){h=0;break b}if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](f)|0;n=51;break}h=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){l=c[14978]|0;j=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&j>>>0<=l>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){h=0;break b}i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}else{if(c[j+272>>2]|0){if(a[j+81>>0]|0){h=0;break b}}else{do if(!(0<0|(0==0?(e[j+276>>1]|0)>>>0>>0:0))){i=j+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];n=j+284|0;c[n>>2]=(c[n>>2]|0)+1;n=51;break c}i=j+296|0;h=c[i>>2]|0;if(!h){h=j+292|0;break}else{c[i>>2]=c[h>>2];n=j+284|0;c[n>>2]=(c[n>>2]|0)+1;n=51;break c}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(j,f,0)|0;n=51}while(0);if((n|0)==51)if(!h){h=0;break}ew(h|0,k|0,f|0)|0}while(0);c[m>>2]=h;while(1){h=c[g+52>>2]|0;if(!h)break;else g=h}Tk(c[d>>2]|0,c[g>>2]|0,m+42|0,m+4|0);b[m+40>>1]=-1;b[m+44>>1]=200;d=m+36|0;c[d>>2]=c[d>>2]|2;d=0;Ra=o;return d|0}function Sk(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=Ra;Ra=Ra+32|0;s=v+16|0;r=v+8|0;n=v;o=v+20|0;u=c[e>>2]|0;p=u+56|0;i=c[p>>2]|0;c[p>>2]=i+1;q=f+56|0;g=c[q>>2]|0;a:do if(g){h=c[f+64>>2]|0;if(h|0)do{if((c[h>>2]|0)==(u|0)){t=33;break a}h=c[h+24>>2]|0}while((h|0)!=0);m=c[c[f+60>>2]>>2]|0;j=c[u+348>>2]|0;if(!j){h=u+340|0;g=u+344|0}else{h=a[m>>0]|0;if(!(h<<24>>24))g=0;else{g=0;i=m;do{i=i+1|0;g=G(g+(d[208+(h&255)>>0]|0)|0,-1640531535)|0;h=a[i>>0]|0}while(h<<24>>24!=0)}g=(g>>>0)%((c[u+336>>2]|0)>>>0)|0;h=j+(g<<3)|0;g=j+(g<<3)+4|0}h=c[h>>2]|0;b:do if(!h)g=59292;else{l=d[208+(d[m>>0]|0)>>0]|0;while(1){g=c[g>>2]|0;h=h+-1|0;j=c[g+12>>2]|0;k=a[j>>0]|0;i=(d[208+(k&255)>>0]|0)-l|0;if(!(k<<24>>24==0|(i|0)!=0)){k=m;do{j=j+1|0;k=k+1|0;w=a[j>>0]|0;i=(d[208+(w&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(w<<24>>24==0|(i|0)!=0))}if(!i)break b;if(!h){g=59292;break}}}while(0);g=c[g+8>>2]|0;if(!g){c[n>>2]=m;cd(e,36690,n);c[p>>2]=(c[p>>2]|0)+-1;w=1;Ra=v;return w|0}c[o>>2]=0;h=Ai(u,f,g,c[(c[g>>2]|0)+8>>2]|0,o)|0;i=(h|0)==0;g=c[o>>2]|0;if(!i){c[r>>2]=g;cd(e,31408,r);c[e+12>>2]=h}do if(g|0){if(u|0){if(c[u+480>>2]|0){Xd(u,g);break}w=g;if((c[u+304>>2]|0)>>>0<=w>>>0?(c[u+308>>2]|0)>>>0>w>>>0:0){w=u+300|0;c[g>>2]=c[w>>2];c[w>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{w=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[p>>2]=(c[p>>2]|0)+-1;if(i){g=c[q>>2]|0;break}else{w=1;Ra=v;return w|0}}else t=33;while(0);if((t|0)==33)c[p>>2]=i;if(g|0){w=0;Ra=v;return w|0}p=f+42|0;g=b[p>>1]|0;if(g<<16>>16>0){w=0;Ra=v;return w|0}if(g<<16>>16<0){c[s>>2]=c[f>>2];cd(e,41077,s);w=1;Ra=v;return w|0}i=fk(u,c[f+12>>2]|0,0)|0;if(!i)o=1;else{j=e+200|0;k=a[j>>0]|0;a[j>>0]=0;h=e+40|0;w=c[h>>2]|0;Qk(e,c[i+32>>2]|0);b[p>>1]=-1;l=u+272|0;c[l>>2]=(c[l>>2]|0)+1;s=u+312|0;r=c[s>>2]|0;c[s>>2]=0;g=yk(e,i)|0;c[s>>2]=r;c[h>>2]=w;h=c[f+24>>2]|0;do if(!h)if(!g){b[p>>1]=0;g=1;break}else{w=g+42|0;b[p>>1]=b[w>>1]|0;t=g+4|0;c[f+4>>2]=c[t>>2];b[w>>1]=0;c[t>>2]=0;t=50;break}else{Tk(c[e>>2]|0,h,p,f+4|0);if(((a[u+81>>0]|0)==0?(c[e+36>>2]|0)==0:0)?(c[c[i>>2]>>2]|0)==(b[p>>1]|0):0)Uk(e,f,i);if(!g)g=0;else t=50}while(0);do if((t|0)==50){if(c[u+480>>2]|0){Vi(u,g);g=0;break}t=g+32|0;w=(c[t>>2]|0)+-1|0;c[t>>2]=w;if(!w){Vi(u,g);g=0}else g=0}while(0);pi(u,i,1);c[l>>2]=(c[l>>2]|0)+-1;a[j>>0]=k;o=g}w=(c[f+72>>2]|0)+78|0;b[w>>1]=b[w>>1]|2;if(!(a[u+81>>0]|0)){w=o;Ra=v;return w|0}n=f+4|0;g=c[n>>2]|0;do if(g|0){if((b[p>>1]|0)>0){j=u+480|0;k=u+304|0;l=u+308|0;m=u+300|0;i=0;while(1){h=c[g>>2]|0;do if(h|0){if(c[j>>2]|0){Xd(u,h);break}w=h;if((c[k>>2]|0)>>>0<=w>>>0?(c[l>>2]|0)>>>0>w>>>0:0){c[h>>2]=c[m>>2];c[m>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);h=c[g+4>>2]|0;if(h|0)ni(u,h);h=c[g+8>>2]|0;do if(h|0){if(c[j>>2]|0){Xd(u,h);break}w=h;if((c[k>>2]|0)>>>0<=w>>>0?(c[l>>2]|0)>>>0>w>>>0:0){c[h>>2]=c[m>>2];c[m>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{w=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);i=i+1|0;if((i|0)>=(b[p>>1]|0))break;else g=g+16|0}g=c[n>>2]|0}if(g|0){if(u|0){if(c[u+480>>2]|0){Xd(u,g);break}w=g;if((c[u+304>>2]|0)>>>0<=w>>>0?(c[u+308>>2]|0)>>>0>w>>>0:0){w=u+300|0;c[g>>2]=c[w>>2];c[w>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{w=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}}while(0);c[n>>2]=0;b[p>>1]=0;w=o;Ra=v;return w|0}function Tk(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=Ra;Ra=Ra+48|0;P=R+8|0;O=R;N=R+40|0;Q=R+24|0;c[Q>>2]=0;c[Q+4>>2]=0;c[Q+8>>2]=0;c[Q+12>>2]=0;do if(g){n=c[g>>2]|0;m=n<<4;a:do if(!f){M=Sv(m|0,0,-1,-1)|0;K=L()|0;if(!(K>>>0>0|(K|0)==0&M>>>0>2147483390)){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](m)|0;s=27;break}j=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){M=c[14978]|0;K=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;J=L()|0;c[14768]=((J|0)<0|(J|0)==0&K>>>0<=M>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(j){k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;s=28}else s=28}else M=0}else M=0}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){M=0;break}}else{do if(!(0<0|(0==0?(e[f+276>>1]|0)>>>0>>0:0))){k=f+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];s=f+284|0;c[s>>2]=(c[s>>2]|0)+1;s=27;break a}k=f+296|0;j=c[k>>2]|0;if(!j){j=f+292|0;break}else{c[k>>2]=c[j>>2];s=f+284|0;c[s>>2]=(c[s>>2]|0)+1;s=27;break a}}else j=f+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(f,m,0)|0;s=27}while(0);if((s|0)==27)if(!j)M=0;else s=28;if((s|0)==28){gw(j|0,0,m|0)|0;M=j}if((n|0)<32767){b[h>>1]=n;c[i>>2]=M;k=f+81|0;if((n|0)>0)K=k;else{j=M;l=M;s=32;break}}else{b[h>>1]=32767;c[i>>2]=M;n=32767;K=f+81|0}H=(f|0)==0;J=Q+12|0;I=Q+8|0;u=Q+4|0;v=f+272|0;w=f+276|0;x=f+288|0;y=f+300|0;z=f+296|0;A=f+284|0;B=f+292|0;C=f+82|0;D=f+180|0;E=f+264|0;F=f+236|0;t=M;l=0;while(1){if(a[K>>0]|0)break;j=c[g+4+(l*20|0)+4>>2]|0;do if(!j){j=c[g+4+(l*20|0)>>2]|0;b:do if(!j)j=0;else while(1){k=c[j+4>>2]|0;if(!(k&4096))break b;if(!(k&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=0;break}}while(0);c:while(1){switch(a[j>>0]|0){case -94:{s=46;break c}case 59:{s=50;break c}case -122:break;default:{s=51;break c}}j=c[j+16>>2]|0}if((s|0)==46){k=b[j+32>>1]|0;m=c[j+44>>2]|0;if(k<<16>>16<0)j=b[m+40>>1]|0;else j=k<<16>>16;if((j|0)<=-1){j=38132;s=53;break}j=(c[m+4>>2]|0)+(j<<4)|0}else if((s|0)==50)j=j+8|0;else if((s|0)==51)j=g+4+(l*20|0)+8|0;j=c[j>>2]|0;if(!j){c[O>>2]=l+1;j=dd(f,41025,O)|0;c[N>>2]=0;if(!j)s=107;else s=78}else s=53}else s=53;while(0);do if((s|0)==53){p=(Eu(j)|0)+1|0;do if(H){s=Sv(p|0,0,-1,-1)|0;r=L()|0;if(!(r>>>0>0|(r|0)==0&s>>>0>2147483390)){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](p)|0;s=74;break}k=Wa[c[29356>>2]&127](p)|0;if((c[14985]|0)>>>0

        >>0)c[14985]=p;o=59064;m=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&m>>>0>0){s=c[14978]|0;r=Tv(m|0,o|0,k|0,((k|0)<0)<<31>>31|0)|0;q=L()|0;c[14768]=((q|0)<0|(q|0)==0&r>>>0<=s>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(k){m=Wa[c[29352>>2]&127](k)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0){c[14987]=m;s=75}else s=75}else s=76}else s=76}else{if(!(c[v>>2]|0)){if(!(0<0|(0==0?(e[w>>1]|0)>>>0

        >>0:0))){k=c[y>>2]|0;if(k|0){c[y>>2]=c[k>>2];c[A>>2]=(c[A>>2]|0)+1;s=74;break}k=c[z>>2]|0;if(!k)k=B;else{c[z>>2]=c[k>>2];c[A>>2]=(c[A>>2]|0)+1;s=74;break}}else k=x;c[k>>2]=(c[k>>2]|0)+1}k=_d(f,p,0)|0;s=74}while(0);if((s|0)==74)if(!k)s=76;else s=75;if((s|0)==75){ew(k|0,j|0,p|0)|0;c[N>>2]=0;j=k;s=78;break}else if((s|0)==76){c[N>>2]=0;s=107;break}}while(0);d:do if((s|0)==78){s=0;while(1){p=c[J>>2]|0;if(!p){m=u;k=I}else{m=a[j>>0]|0;if(!(m<<24>>24))k=0;else{k=0;o=j;do{o=o+1|0;k=G(k+(d[208+(m&255)>>0]|0)|0,-1640531535)|0;m=a[o>>0]|0}while(m<<24>>24!=0)}k=(k>>>0)%((c[Q>>2]|0)>>>0)|0;m=p+(k<<3)|0;k=p+(k<<3)+4|0}m=c[m>>2]|0;e:do if(!m)k=59292;else{r=d[208+(d[j>>0]|0)>>0]|0;while(1){k=c[k>>2]|0;m=m+-1|0;p=c[k+12>>2]|0;q=a[p>>0]|0;o=(d[208+(q&255)>>0]|0)-r|0;if(!(q<<24>>24==0|(o|0)!=0)){q=j;do{p=p+1|0;q=q+1|0;S=a[p>>0]|0;o=(d[208+(S&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(S<<24>>24==0|(o|0)!=0))}if(!o)break e;if(!m){k=59292;break}}}while(0);if(!(c[k+8>>2]|0))break;S=Eu(j)|0;k=S&1073741823;f:do switch(S&1073741823|0){case 0:break;case 1:{m=0;s=96;break}default:{o=k+-1|0;while(1){if(((d[j+o>>0]|0)+-48|0)>>>0>=10){m=o;s=96;break f}m=o+-1|0;if((o|0)>1)o=m;else{s=96;break}}}}while(0);if((s|0)==96){s=0;k=(a[j+m>>0]|0)==58?m:k}S=(c[N>>2]|0)+1|0;c[N>>2]=S;c[P>>2]=k;c[P+4>>2]=j;c[P+8>>2]=S;j=dd(f,41034,P)|0;if((c[N>>2]|0)>>>0>3)Fb(4,N);if(!j){s=107;break d}}c[t>>2]=j;if(((mi(Q,j,t)|0)==(t|0)?(a[K>>0]|0)==0:0)?(a[C>>0]|0)==0:0){a[K>>0]=1;if((c[D>>2]|0)>0)c[E>>2]=1;c[v>>2]=(c[v>>2]|0)+1;j=c[F>>2]|0;if(j|0)c[j+12>>2]=7}}while(0);if((s|0)==107){s=0;c[t>>2]=0}l=l+1|0;if((l|0)<(n|0))t=t+16|0;else break}j=c[I>>2]|0;k=c[J>>2]|0;c[I>>2]=0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{S=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[J>>2]=0;c[Q>>2]=0;if(!j){r=M;q=l;j=K;l=M}else{do{k=j;j=c[j>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{S=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}}while((j|0)!=0);r=M;q=l;j=K;l=M}}else{b[h>>1]=0;c[i>>2]=0;j=0;k=f+81|0;l=0;s=32}while(0);if((s|0)==32){c[Q+8>>2]=0;c[Q+12>>2]=0;c[Q>>2]=0;r=j;q=0;j=k}c[Q+4>>2]=0;if(!(a[j>>0]|0)){Ra=R;return}g:do if(q|0){k=f+480|0;m=f+304|0;n=f+308|0;o=f+300|0;if(!f){j=0;while(1){k=c[r+(j<<4)>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{S=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);j=j+1|0;if((j|0)==(q|0))break g}}j=0;do{p=c[r+(j<<4)>>2]|0;do if(p|0){if(c[k>>2]|0){Xd(f,p);break}S=p;if((c[m>>2]|0)>>>0<=S>>>0?(c[n>>2]|0)>>>0>S>>>0:0){c[p>>2]=c[o>>2];c[o>>2]=p;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{S=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);j=j+1|0}while((j|0)!=(q|0))}while(0);do if(l|0){if(f|0){if(c[f+480>>2]|0){Xd(f,l);break}S=l;if((c[f+304>>2]|0)>>>0<=S>>>0?(c[f+308>>2]|0)>>>0>S>>>0:0){S=f+300|0;c[l>>2]=c[S>>2];c[S>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{S=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[i>>2]=0;b[h>>1]=0;Ra=R;return}function Uk(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=Ra;Ra=Ra+32|0;F=I;G=c[d>>2]|0;H=G+81|0;if(a[H>>0]|0){Ra=I;return};c[F>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;c[F+16>>2]=0;c[F+20>>2]=0;c[F+24>>2]=0;c[F+28>>2]=0;c[F+4>>2]=c[g+32>>2];r=c[g>>2]|0;s=f+42|0;if((b[s>>1]|0)>0){t=G+272|0;u=G+304|0;v=G+276|0;w=G+308|0;x=G+288|0;y=G+300|0;z=G+480|0;A=(G|0)==0;B=G+296|0;C=G+284|0;D=G+292|0;p=0;q=c[f+4>>2]|0;while(1){m=c[r+4+(p*20|0)>>2]|0;l=Vk(F,m)|0;g=Xj(m)|0;n=q+13|0;a[n>>0]=g;if(l){k=(Eu(l)|0)&1073741823;h=c[q>>2]|0;a:do if(!h){h=k+2|0;do if(c[t>>2]|0)if(!(a[H>>0]|0))o=15;else{c[q>>2]=0;break a}else{if(!(0<0|(0==0?(e[v>>1]|0)>>>0>>0:0))){g=c[y>>2]|0;if(g|0){c[y>>2]=c[g>>2];c[C>>2]=(c[C>>2]|0)+1;break}g=c[B>>2]|0;if(!g)g=D;else{c[B>>2]=c[g>>2];c[C>>2]=(c[C>>2]|0)+1;break}}else g=x;c[g>>2]=(c[g>>2]|0)+1;o=15}while(0);if((o|0)==15){o=0;g=_d(G,h,0)|0}c[q>>2]=g;if(g|0){g=g+1|0;o=32}}else{i=(Eu(h)|0)&1073741823;g=k+2+i|0;j=h;if(((c[u>>2]|0)>>>0<=j>>>0?(c[w>>2]|0)>>>0>j>>>0:0)?!(0<0|(0==0?(e[v>>1]|0)>>>0>>0:0)):0){g=h+(i+1)|0;o=32;break}g=Zd(G,h,g,0)|0;if(g|0){c[q>>2]=g;g=g+(i+1)|0;o=32;break}do if(!(c[z>>2]|0)){if((c[u>>2]|0)>>>0<=j>>>0?(c[w>>2]|0)>>>0>j>>>0:0){c[h>>2]=c[y>>2];c[y>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{l=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(G,h);while(0);c[q>>2]=0}while(0);if((o|0)==32){o=0;j=q+15|0;ew(g|0,l|0,k+1|0)|0;a[j>>0]=a[j>>0]|4}g=a[n>>0]|0}if(!(g<<24>>24))a[n>>0]=65;g=Yi(d,m)|0;if(g|0?(E=q+8|0,(c[E>>2]|0)==0):0){j=c[g>>2]|0;b:do if(!j)g=0;else{k=(Eu(j)|0)+1|0;do if(A){n=Sv(k|0,0,-1,-1)|0;m=L()|0;if(m>>>0>0|(m|0)==0&n>>>0>2147483390){g=0;break b}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](k)|0;o=61;break}g=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){n=c[14978]|0;m=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=n>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(!g){g=0;break b}h=Wa[c[29352>>2]&127](g)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}else{if(c[t>>2]|0){if(a[H>>0]|0){g=0;break b}}else{if(!(0<0|(0==0?(e[v>>1]|0)>>>0>>0:0))){g=c[y>>2]|0;if(g|0){c[y>>2]=c[g>>2];c[C>>2]=(c[C>>2]|0)+1;o=61;break}g=c[B>>2]|0;if(!g)g=D;else{c[B>>2]=c[g>>2];c[C>>2]=(c[C>>2]|0)+1;o=61;break}}else g=x;c[g>>2]=(c[g>>2]|0)+1}g=_d(G,k,0)|0;o=61}while(0);if((o|0)==61){o=0;if(!g){g=0;break}}ew(g|0,j|0,k|0)|0}while(0);c[E>>2]=g}p=p+1|0;if((p|0)>=(b[s>>1]|0))break;else q=q+16|0}}b[f+46>>1]=1;Ra=I;return}function Vk(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+32|0;m=o;switch(a[e>>0]|0){case -94:{k=b[e+32>>1]|0;n=k<<16>>16;if(!d){n=0;Ra=o;return n|0}j=e+28|0;f=0;do{i=c[d+4>>2]|0;g=c[i>>2]|0;a:do if((g|0)>0){h=c[j>>2]|0;e=0;while(1){if((c[i+8+(e*72|0)+40>>2]|0)==(h|0))break;e=e+1|0;if((e|0)>=(g|0)){l=9;break a}}g=c[i+8+(e*72|0)+16>>2]|0;f=c[i+8+(e*72|0)+20>>2]|0}else l=9;while(0);if((l|0)==9){l=0;d=c[d+12>>2]|0;g=0}e=(g|0)==0}while(e&(d|0)!=0);if(e){n=0;Ra=o;return n|0}if(!f){if(k<<16>>16<0){n=31453;Ra=o;return n|0}e=c[g+4>>2]|0;if(!(a[e+(n<<4)+15>>0]&4)){n=0;Ra=o;return n|0}n=c[e+(n<<4)>>2]|0;n=n+(Eu(n)|0)+1|0;Ra=o;return n|0}else{if(k<<16>>16<=-1){n=0;Ra=o;return n|0}e=c[f>>2]|0;if((c[e>>2]|0)<=(n|0)){n=0;Ra=o;return n|0}n=c[e+4+(n*20|0)>>2]|0;c[m+4>>2]=c[f+32>>2];c[m+12>>2]=d;c[m>>2]=c[d>>2];n=Vk(m,n)|0;Ra=o;return n|0}}case -125:{l=c[e+20>>2]|0;n=c[(c[l>>2]|0)+4>>2]|0;c[m+4>>2]=c[l+32>>2];c[m+12>>2]=d;c[m>>2]=c[d>>2];n=Vk(m,n)|0;Ra=o;return n|0}default:{n=0;Ra=o;return n|0}}return 0}function Wk(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if(!d)return;j=e&65535;do{g=d+4|0;c[g>>2]=c[g>>2]|1;b[d+36>>1]=j;if(((a[d>>0]|0)==-95?(h=d+20|0,i=c[h>>2]|0,i|0):0)?(c[i>>2]|0)>0:0){f=0;g=i;do{Wk(c[g+4+(f*20|0)>>2]|0,e);f=f+1|0;g=c[h>>2]|0}while((f|0)<(c[g>>2]|0))}Wk(c[d+12>>2]|0,e);d=c[d+16>>2]|0}while((d|0)!=0);return}function Xk(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;m=Ra;Ra=Ra+16|0;h=m;if(!f){l=g;Ra=m;return l|0}if(!g){l=f;Ra=m;return l|0}c[h>>2]=0;l=f+4|0;if((c[l>>2]&1|0)==0?(uk(f,h)|0)!=0:0)if(!(c[h>>2]|0)){ni(d,f);ni(d,g)}else j=7;else j=7;do if((j|0)==7){c[h>>2]=0;k=g+4|0;if((c[k>>2]&1|0)==0?(uk(g,h)|0)!=0:0){if(!(c[h>>2]|0)){ni(d,f);ni(d,g);break}}else j=9;a:do if(c[d+272>>2]|0){if(!(a[d+81>>0]|0))j=24}else{do if((e[d+276>>1]|0)>=52){h=d+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];j=d+284|0;c[j>>2]=(c[j>>2]|0)+1;j=25;break a}h=d+296|0;i=c[h>>2]|0;if(!i){h=d+292|0;break}else{c[h>>2]=c[i>>2];j=d+284|0;c[j>>2]=(c[j>>2]|0)+1;j=25;break a}}else h=d+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;j=24}while(0);if((j|0)==24){i=_d(d,52,0)|0;j=25}if((j|0)==25?i|0:0){h=i;j=h+52|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));a[i>>0]=44;b[i+34>>1]=-1;c[i+24>>2]=1;c[i+16>>2]=g;k=c[k>>2]&2097412;g=i+4|0;c[g>>2]=k;c[i+12>>2]=f;c[g>>2]=k|c[l>>2]&2097412;Ym(i);l=i;Ra=m;return l|0}ni(d,f);ni(d,g);l=0;Ra=m;return l|0}while(0);l=oj(d,147,17136,0)|0;Ra=m;return l|0}function Yk(a,b){a=a|0;b=b|0;return 0}function Zk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=b+8|0;e=c[d>>2]|0;if(e&128|0)return;c[d>>2]=e|128;h=c[a>>2]|0;g=c[b+32>>2]|0;a=c[g>>2]|0;if((a|0)<=0)return;b=0;f=g+8|0;while(1){e=c[f+16>>2]|0;if((c[e+36>>2]&2|0)!=0?(i=c[f+20>>2]|0,(i|0)!=0):0){a=i;while(1){d=c[a+52>>2]|0;if(!d)break;else a=d}Uk(h,e,a);a=c[g>>2]|0}b=b+1|0;if((b|0)>=(a|0))break;else f=f+72|0}return}function _k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!(c[b+4>>2]&16777216))return 0;a=(c[a+24>>2]|0)+68|0;e=c[a>>2]|0;if(!e)return 0;f=c[b+44>>2]|0;d=a;b=e;while(1){a=b+32|0;if((b|0)==(f|0))break;b=c[a>>2]|0;if(!b){g=7;break}else d=a}if((g|0)==7)return 0;c[d>>2]=c[a>>2];return 0}function $k(a,b){a=a|0;b=b|0;var d=0;a=c[(c[a>>2]|0)+272>>2]|0;if(!a)return 0;while(1){if((c[a>>2]|0)==(b|0))break;a=c[a+12>>2]|0;if(!a){d=6;break}}if((d|0)==6)return 0;c[a>>2]=0;return 0}function al(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=Ra;Ra=Ra+16|0;q=r;if(!e){q=0;Ra=r;return q|0}m=c[b+12>>2]|0;if((c[e>>2]|0)<=0){q=0;Ra=r;return q|0}n=b+8|0;p=b+4|0;k=0;l=e+8|0;a:while(1){if(!(c[n>>2]|0)){i=l+4|0;j=c[i>>2]|0;do if(j|0){h=a[j>>0]|0;f=(d[208+(h&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(h<<24>>24==0|(f|0)!=0)){g=m;h=j;do{h=h+1|0;g=g+1|0;s=a[h>>0]|0;f=(d[208+(s&255)>>0]|0)-(d[208+(d[g>>0]|0)>>0]|0)|0}while(!(s<<24>>24==0|(f|0)!=0))}h=c[b>>2]|0;if(f|0){g=10;break a}f=c[h>>2]|0;if(f|0){if(c[f+480>>2]|0){Xd(f,j);break}s=j;if((c[f+304>>2]|0)>>>0<=s>>>0?(c[f+308>>2]|0)>>>0>s>>>0:0){s=f+300|0;c[j>>2]=c[s>>2];c[s>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{s=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c[i>>2]=0;c[l>>2]=c[p>>2]}if(cl(b,c[l+20>>2]|0)|0){f=1;g=30;break}if(dl(b,c[l+44>>2]|0)|0){f=1;g=30;break}if((a[l+37>>0]&4?(o=c[l+64>>2]|0,o|0):0)?(c[o>>2]|0)>0:0){f=o+4|0;g=0;while(1){if(dl(b,c[f>>2]|0)|0){f=1;g=30;break a}g=g+1|0;if((g|0)>=(c[o>>2]|0))break;else f=f+20|0}}k=k+1|0;if((k|0)>=(c[e>>2]|0)){f=0;g=30;break}else l=l+72|0}if((g|0)==10){s=c[b+20>>2]|0;c[q>>2]=c[b+16>>2];c[q+4>>2]=s;c[q+8>>2]=j;cd(h,42344,q);s=1;Ra=r;return s|0}else if((g|0)==30){Ra=r;return f|0}return 0}function bl(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=Ra;Ra=Ra+16|0;n=A+8|0;m=A;s=A+12|0;q=c[f+12>>2]|0;p=d+40|0;y=c[p>>2]|0;z=y+1|0;c[p>>2]=y+2;k=c[d>>2]|0;i=c[f+24>>2]|0;j=c[k+16>>2]|0;if(!i)t=-1e6;else{h=0;while(1)if((c[j+(h<<4)+12>>2]|0)==(i|0)){t=h;break}else h=h+1|0}i=c[f>>2]|0;h=c[j+(t<<4)>>2]|0;do if(((a[k+165>>0]|0)==0?(a[d+200>>0]|0)==0:0)?(l=c[k+312>>2]|0,l|0):0){h=$a[l&127](c[k+316>>2]|0,27,i,0,h,c[d+240>>2]|0)|0;if((h|0)==1){cd(d,39216,m);c[d+12>>2]=23;Ra=A;return}if((h|2|0)==2){if(!h)break;Ra=A;return}else{cd(d,39231,n);c[d+12>>2]=1;Ra=A;return}}while(0);Hj(d,t,c[q+28>>2]|0,1,c[q>>2]|0);n=d+8|0;h=c[n>>2]|0;if(!h){k=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[d+23>>0]=1;a:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))o=26;else{Ra=A;return}else{do if((e[k+276>>1]|0)>=224){h=k+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];j=k+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;break a}h=k+296|0;i=c[h>>2]|0;if(!i){h=k+292|0;break}else{c[h>>2]=c[i>>2];j=k+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;break a}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;o=26}while(0);if((o|0)==26)j=_d(k,224,0)|0;if(!j){Ra=A;return}h=j+104|0;i=h+120|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c[j>>2]=k;h=k+4|0;i=c[h>>2]|0;if(i|0)c[i+4>>2]=j;c[j+8>>2]=i;c[j+4>>2]=0;c[h>>2]=j;c[j+20>>2]=381479589;c[j+12>>2]=d;c[n>>2]=j;Di(j,61,0,1,0)|0;w=j}else w=h;if((g|0)>-1)l=g;else l=c[f+44>>2]|0;o=Ij(d,f)|0;x=c[p>>2]|0;c[p>>2]=x+1;r=f+50|0;i=e[r>>1]|0;m=(o|0)==0;if(!m)c[o>>2]=(c[o>>2]|0)+1;u=w+108|0;h=c[u>>2]|0;v=w+112|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;p=c[w+104>>2]|0;a[p+(h*20|0)>>0]=114;b[p+(h*20|0)+2>>1]=0;c[p+(h*20|0)+4>>2]=x;c[p+(h*20|0)+8>>2]=0;c[p+(h*20|0)+12>>2]=i;c[p+(h*20|0)+16>>2]=0;a[p+(h*20|0)+1>>0]=0}else h=Di(w,114,x,0,i)|0;i=c[w>>2]|0;do if(!(a[i+81>>0]|0)){if((h|0)<0)h=(c[u>>2]|0)+-1|0;i=c[w+104>>2]|0;j=i+(h*20|0)+1|0;if(a[j>>0]|0){Ei(w,i+(h*20|0)|0,o,-9);break}if(!m){c[i+(h*20|0)+16>>2]=o;a[j>>0]=-9}}else if(!(m|(c[i+480>>2]|0)!=0)?(p=(c[o>>2]|0)+-1|0,c[o>>2]=p,(p|0)==0):0){h=c[o+12>>2]|0;if(h|0){if(c[h+480>>2]|0){Xd(h,o);break}p=o;if((c[h+304>>2]|0)>>>0<=p>>>0?(c[h+308>>2]|0)>>>0>p>>>0:0){p=h+300|0;c[o>>2]=c[p>>2];c[p>>2]=o;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{p=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);Gj(d,y,t,q,108);h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;q=c[w+104>>2]|0;a[q+(h*20|0)>>0]=36;b[q+(h*20|0)+2>>1]=0;c[q+(h*20|0)+4>>2]=y;c[q+(h*20|0)+8>>2]=0;c[q+(h*20|0)+12>>2]=0;c[q+(h*20|0)+16>>2]=0;a[q+(h*20|0)+1>>0]=0}else h=Di(w,36,y,0,0)|0;q=d+19|0;i=a[q>>0]|0;if(!(i<<24>>24)){k=d+44|0;p=(c[k>>2]|0)+1|0;c[k>>2]=p}else{p=i+-1<<24>>24;a[q>>0]=p;p=c[d+148+((p&255)<<2)>>2]|0}i=c[d+116>>2]|0;a[((i|0)==0?d:i)+20>>0]=1;el(d,f,y,p,0,s,0,0)|0;i=c[u>>2]|0;if((c[v>>2]|0)>(i|0)){c[u>>2]=i+1;k=c[w+104>>2]|0;a[k+(i*20|0)>>0]=-125;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=x;c[k+(i*20|0)+8>>2]=p;c[k+(i*20|0)+12>>2]=0;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0}else Di(w,131,x,p,0)|0;i=c[s>>2]|0;do if(i|0){j=c[n>>2]|0;k=c[j+12>>2]|0;i=~i;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,j,i);break}else{c[(c[k+64>>2]|0)+(i<<2)>>2]=c[j+108>>2];break}}while(0);i=h+1|0;j=c[u>>2]|0;if((c[v>>2]|0)>(j|0)){c[u>>2]=j+1;s=c[w+104>>2]|0;a[s+(j*20|0)>>0]=5;b[s+(j*20|0)+2>>1]=0;c[s+(j*20|0)+4>>2]=y;c[s+(j*20|0)+8>>2]=i;c[s+(j*20|0)+12>>2]=0;c[s+(j*20|0)+16>>2]=0;a[s+(j*20|0)+1>>0]=0}else Di(w,5,y,i,0)|0;i=c[u>>2]|0;if(!(a[(c[w>>2]|0)+81>>0]|0))h=(c[w+104>>2]|0)+(((h|0)<0?i+-1|0:h)*20|0)|0;else h=59308;c[h+8>>2]=i;do if((g|0)<0)if((c[v>>2]|0)>(i|0)){c[u>>2]=i+1;s=c[w+104>>2]|0;a[s+(i*20|0)>>0]=-119;b[s+(i*20|0)+2>>1]=0;c[s+(i*20|0)+4>>2]=l;c[s+(i*20|0)+8>>2]=t;c[s+(i*20|0)+12>>2]=0;c[s+(i*20|0)+16>>2]=0;a[s+(i*20|0)+1>>0]=0;break}else{Di(w,137,l,t,0)|0;break}while(0);h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;s=c[w+104>>2]|0;a[s+(h*20|0)>>0]=109;b[s+(h*20|0)+2>>1]=0;c[s+(h*20|0)+4>>2]=z;c[s+(h*20|0)+8>>2]=l;c[s+(h*20|0)+12>>2]=t;c[s+(h*20|0)+16>>2]=0;a[s+(h*20|0)+1>>0]=0}else h=Di(w,109,z,l,t)|0;i=c[w>>2]|0;b:do if(!(a[i+81>>0]|0)){if((h|0)<0)h=(c[u>>2]|0)+-1|0;i=c[w+104>>2]|0;j=i+(h*20|0)+1|0;if(a[j>>0]|0){Ei(w,i+(h*20|0)|0,o,-9);break}if(!m){c[i+(h*20|0)+16>>2]=o;a[j>>0]=-9}}else if(!(m|(c[i+480>>2]|0)!=0)?(t=(c[o>>2]|0)+-1|0,c[o>>2]=t,(t|0)==0):0){h=c[o+12>>2]|0;do if(h|0){if(c[h+480>>2]|0){Xd(h,o);break b}i=o;if((c[h+304>>2]|0)>>>0>i>>>0)break;if((c[h+308>>2]|0)>>>0<=i>>>0)break;t=h+300|0;c[o>>2]=c[t>>2];c[t>>2]=o;break b}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{t=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);h=c[u>>2]|0;if((h|0)>0)b[(c[w+104>>2]|0)+((h+-1|0)*20|0)+2>>1]=(g>>31)+16&65520|1;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;l=c[w+104>>2]|0;a[l+(h*20|0)>>0]=34;b[l+(h*20|0)+2>>1]=0;c[l+(h*20|0)+4>>2]=x;c[l+(h*20|0)+8>>2]=0;c[l+(h*20|0)+12>>2]=0;c[l+(h*20|0)+16>>2]=0;a[l+(h*20|0)+1>>0]=0;l=h}else l=Di(w,34,x,0,0)|0;h=c[u>>2]|0;if(!(a[f+54>>0]|0))k=h;else{if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;j=c[w+104>>2]|0;a[j+(h*20|0)>>0]=11;b[j+(h*20|0)+2>>1]=0;c[j+(h*20|0)+4>>2]=0;c[j+(h*20|0)+8>>2]=1;c[j+(h*20|0)+12>>2]=0;c[j+(h*20|0)+16>>2]=0;a[j+(h*20|0)+1>>0]=0;j=h}else j=Di(w,11,0,1,0)|0;k=c[u>>2]|0;i=e[r>>1]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;h=c[w+104>>2]|0;a[h+(k*20|0)>>0]=125;b[h+(k*20|0)+2>>1]=0;c[h+(k*20|0)+4>>2]=x;c[h+(k*20|0)+8>>2]=j;c[h+(k*20|0)+12>>2]=p;c[h+(k*20|0)+16>>2]=0;a[h+(k*20|0)+1>>0]=0;h=k}else h=Di(w,125,x,j,p)|0;if(!(a[(c[w>>2]|0)+81>>0]|0)){g=c[w+104>>2]|0;a[g+(h*20|0)+1>>0]=-3;c[g+(h*20|0)+16>>2]=i}fl(d,2,f);h=c[u>>2]|0;if(!(a[(c[w>>2]|0)+81>>0]|0))i=(c[w+104>>2]|0)+(((j|0)<0?h+-1|0:j)*20|0)|0;else i=59308;c[i+8>>2]=h}if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;f=c[w+104>>2]|0;a[f+(h*20|0)>>0]=126;b[f+(h*20|0)+2>>1]=0;c[f+(h*20|0)+4>>2]=x;c[f+(h*20|0)+8>>2]=p;c[f+(h*20|0)+12>>2]=z;c[f+(h*20|0)+16>>2]=0;a[f+(h*20|0)+1>>0]=0}else Di(w,126,x,p,z)|0;h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;f=c[w+104>>2]|0;a[f+(h*20|0)>>0]=-126;b[f+(h*20|0)+2>>1]=0;c[f+(h*20|0)+4>>2]=z;c[f+(h*20|0)+8>>2]=0;c[f+(h*20|0)+12>>2]=0;c[f+(h*20|0)+16>>2]=0;a[f+(h*20|0)+1>>0]=0}else Di(w,130,z,0,0)|0;h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;f=c[w+104>>2]|0;a[f+(h*20|0)>>0]=-124;b[f+(h*20|0)+2>>1]=0;c[f+(h*20|0)+4>>2]=z;c[f+(h*20|0)+8>>2]=p;c[f+(h*20|0)+12>>2]=0;c[f+(h*20|0)+16>>2]=0;a[f+(h*20|0)+1>>0]=0}else Di(w,132,z,p,0)|0;h=c[u>>2]|0;if((h|0)>0)b[(c[w+104>>2]|0)+((h+-1|0)*20|0)+2>>1]=16;do if(p){i=a[q>>0]|0;if((i&255)>=8)break;a[q>>0]=i+1<<24>>24;c[d+148+((i&255)<<2)>>2]=p;h=c[u>>2]|0}while(0);if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;d=c[w+104>>2]|0;a[d+(h*20|0)>>0]=3;b[d+(h*20|0)+2>>1]=0;c[d+(h*20|0)+4>>2]=x;c[d+(h*20|0)+8>>2]=k;c[d+(h*20|0)+12>>2]=0;c[d+(h*20|0)+16>>2]=0;a[d+(h*20|0)+1>>0]=0}else Di(w,3,x,k,0)|0;i=c[u>>2]|0;if(!(a[(c[w>>2]|0)+81>>0]|0))h=(c[w+104>>2]|0)+(((l|0)<0?i+-1|0:l)*20|0)|0;else h=59308;c[h+8>>2]=i;if((c[v>>2]|0)>(i|0)){c[u>>2]=i+1;d=c[w+104>>2]|0;a[d+(i*20|0)>>0]=117;b[d+(i*20|0)+2>>1]=0;c[d+(i*20|0)+4>>2]=y;c[d+(i*20|0)+8>>2]=0;c[d+(i*20|0)+12>>2]=0;c[d+(i*20|0)+16>>2]=0;a[d+(i*20|0)+1>>0]=0}else Di(w,117,y,0,0)|0;h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;y=c[w+104>>2]|0;a[y+(h*20|0)>>0]=117;b[y+(h*20|0)+2>>1]=0;c[y+(h*20|0)+4>>2]=z;c[y+(h*20|0)+8>>2]=0;c[y+(h*20|0)+12>>2]=0;c[y+(h*20|0)+16>>2]=0;a[y+(h*20|0)+1>>0]=0}else Di(w,117,z,0,0)|0;h=c[u>>2]|0;if((c[v>>2]|0)>(h|0)){c[u>>2]=h+1;z=c[w+104>>2]|0;a[z+(h*20|0)>>0]=117;b[z+(h*20|0)+2>>1]=0;c[z+(h*20|0)+4>>2]=x;c[z+(h*20|0)+8>>2]=0;c[z+(h*20|0)+12>>2]=0;c[z+(h*20|0)+16>>2]=0;a[z+(h*20|0)+1>>0]=0;Ra=A;return}else{Di(w,117,x,0,0)|0;Ra=A;return}}function cl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(!b){a=0;return a|0}a:while(1){f=c[b>>2]|0;if(f|0?(c[f>>2]|0)>0:0){d=f+4|0;e=0;while(1){if(dl(a,c[d>>2]|0)|0){b=1;d=28;break a}e=e+1|0;if((e|0)>=(c[f>>2]|0))break;else d=d+20|0}}if(al(a,c[b+32>>2]|0)|0){b=1;d=28;break}if(dl(a,c[b+36>>2]|0)|0){b=1;d=28;break}f=c[b+40>>2]|0;if(f|0?(c[f>>2]|0)>0:0){d=f+4|0;e=0;while(1){if(dl(a,c[d>>2]|0)|0){b=1;d=28;break a}e=e+1|0;if((e|0)>=(c[f>>2]|0))break;else d=d+20|0}}if(dl(a,c[b+44>>2]|0)|0){b=1;d=28;break}f=c[b+48>>2]|0;if(f|0?(c[f>>2]|0)>0:0){d=f+4|0;e=0;while(1){if(dl(a,c[d>>2]|0)|0){b=1;d=28;break a}e=e+1|0;if((e|0)>=(c[f>>2]|0))break;else d=d+20|0}}if(dl(a,c[b+60>>2]|0)|0){b=1;d=28;break}f=b+64|0;d=c[f>>2]|0;if(d|0?(c[d>>2]|0)>0:0){e=0;do{if(cl(a,c[d+8+(e<<4)+8>>2]|0)|0){b=1;d=28;break a}e=e+1|0;d=c[f>>2]|0}while((e|0)<(c[d>>2]|0))}b=c[b+52>>2]|0;if(!b){b=0;d=28;break}}if((d|0)==28)return b|0;return 0}function dl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=Ra;Ra=Ra+16|0;h=i;if(!d){h=0;Ra=i;return h|0}a:while(1){if((a[d>>0]|0)==-108){e=c[b>>2]|0;if(!(a[(c[e>>2]|0)+165>>0]|0)){f=6;break}a[d>>0]=114}e=c[d+4>>2]|0;if(e&8404992|0){d=0;f=17;break}f=d+20|0;if(!(e&2048)){g=c[f>>2]|0;if(g|0?(c[g>>2]|0)>0:0){e=g+4|0;f=0;while(1){if(dl(b,c[e>>2]|0)|0){d=1;f=17;break a}f=f+1|0;if((f|0)>=(c[g>>2]|0))break;else e=e+20|0}}}else if(cl(b,c[f>>2]|0)|0){d=1;f=17;break}if(dl(b,c[d+16>>2]|0)|0){d=1;f=17;break}d=c[d+12>>2]|0;if(!d){d=0;f=17;break}}if((f|0)==6){c[h>>2]=c[b+16>>2];cd(e,42390,h);h=1;Ra=i;return h|0}else if((f|0)==17){Ra=i;return d|0}return 0}function el(e,f,g,h,i,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;I=e+8|0;K=c[I>>2]|0;if(j|0){n=c[f+36>>2]|0;if(n){o=e+56|0;m=(c[o>>2]|0)+-1|0;c[o>>2]=m;c[j>>2]=m;m=e+52|0;c[m>>2]=g+1;o=c[j>>2]|0;p=c[e>>2]|0;j=dk(p,n,0,0)|0;if(!(a[p+81>>0]|0))Tj(e,j,o,16);if(j)ni(p,j)}else m=j;c[m>>2]=0}if((i|0)!=0?(C=f+55|0,((d[C>>0]|d[C+1>>0]<<8)&8)!=0):0)m=f+50|0;else m=f+52|0;p=b[m>>1]|0;C=p&65535;B=p<<16>>16==1;do if(B){m=e+19|0;j=a[m>>0]|0;if(!(j<<24>>24)){y=e+44|0;z=(c[y>>2]|0)+1|0;c[y>>2]=z;break}else{z=j+-1<<24>>24;a[m>>0]=z;z=c[e+148+((z&255)<<2)>>2]|0;break}}else{m=e+32|0;j=c[m>>2]|0;n=e+28|0;o=c[n>>2]|0;if((o|0)<(C|0)){y=e+44|0;z=c[y>>2]|0;c[y>>2]=z+C;z=z+1|0;break}else{c[m>>2]=j+C;c[n>>2]=o-C;z=j;break}}while(0);do if(!k)m=0;else{if((z|0)==(l|0)?(c[k+36>>2]|0)==0:0){m=k;break}m=0}while(0);if(p<<16>>16){x=(m|0)==0;y=f+4|0;q=m+4|0;r=g+1|0;s=e+52|0;t=f+40|0;u=K+108|0;v=f+12|0;w=K+104|0;l=0;do{if(!x){k=b[(c[q>>2]|0)+(l<<1)>>1]|0;m=b[(c[y>>2]|0)+(l<<1)>>1]|0;if(k<<16>>16==-2?1:k<<16>>16!=m<<16>>16)A=28}else{m=b[(c[y>>2]|0)+(l<<1)>>1]|0;A=28}if((A|0)==28){A=0;k=l+z|0;if(m<<16>>16==-2){c[s>>2]=r;m=c[(c[t>>2]|0)+4+(l*20|0)>>2]|0;i=c[e>>2]|0;if(!m)p=0;else p=dk(i,m,0,0)|0;a:do if(!(a[i+81>>0]|0)){do if(p){if((a[p>>0]|0)!=-88){n=Jj(e,p,k)|0;break}m=c[I>>2]|0;j=c[p+28>>2]|0;n=m+108|0;o=c[n>>2]|0;if((c[m+112>>2]|0)>(o|0)){c[n>>2]=o+1;A=c[m+104>>2]|0;a[A+(o*20|0)>>0]=78;b[A+(o*20|0)+2>>1]=0;c[A+(o*20|0)+4>>2]=j;c[A+(o*20|0)+8>>2]=k;c[A+(o*20|0)+12>>2]=0;c[A+(o*20|0)+16>>2]=0;a[A+(o*20|0)+1>>0]=0;A=45;break a}else{Di(m,78,j,k,0)|0;A=45;break a}}else n=Jj(e,0,k)|0;while(0);if((n|0)!=(k|0)?(D=c[I>>2]|0,(D|0)!=0):0){m=D+108|0;j=c[m>>2]|0;if((c[D+112>>2]|0)>(j|0)){c[m>>2]=j+1;A=c[D+104>>2]|0;a[A+(j*20|0)>>0]=79;b[A+(j*20|0)+2>>1]=0;c[A+(j*20|0)+4>>2]=n;c[A+(j*20|0)+8>>2]=k;c[A+(j*20|0)+12>>2]=0;c[A+(j*20|0)+16>>2]=0;a[A+(j*20|0)+1>>0]=0;A=44;break}else{Di(D,79,n,k,0)|0;A=44;break}}else A=44}else A=44;while(0);if((A|0)==44?(A=0,p|0):0)A=45;if((A|0)==45){A=0;ni(i,p)}c[s>>2]=0}else Vj(c[I>>2]|0,c[v>>2]|0,g,m<<16>>16,k);m=c[u>>2]|0;if(((m|0)>0?(E=c[w>>2]|0,F=m+-1|0,G=E+(F*20|0)|0,(a[G>>0]|0)==84):0)?(H=c[K>>2]|0,(a[H+81>>0]|0)==0):0){i=E+(F*20|0)+1|0;k=E+(F*20|0)+16|0;kg(H,a[i>>0]|0,c[k>>2]|0);a[i>>0]=0;c[k>>2]=0;a[G>>0]=-86}}l=l+1|0}while((l|0)!=(C|0))}if(h|0){m=K+108|0;j=c[m>>2]|0;if((c[K+112>>2]|0)>(j|0)){c[m>>2]=j+1;I=c[K+104>>2]|0;a[I+(j*20|0)>>0]=92;b[I+(j*20|0)+2>>1]=0;c[I+(j*20|0)+4>>2]=z;c[I+(j*20|0)+8>>2]=C;c[I+(j*20|0)+12>>2]=h;c[I+(j*20|0)+16>>2]=0;a[I+(j*20|0)+1>>0]=0}else Di(K,92,z,C,h)|0;if(c[(c[f+12>>2]|0)+12>>2]|0?(J=gl(c[e>>2]|0,f)|0,(a[(c[K>>2]|0)+81>>0]|0)==0):0)Ei(K,(c[K+104>>2]|0)+(((c[m>>2]|0)+-1|0)*20|0)|0,J,0)}if(!B){m=e+28|0;if((c[m>>2]|0)>=(C|0))return z|0;c[m>>2]=C;c[e+32>>2]=z;return z|0}if(!z)return z|0;m=e+19|0;j=a[m>>0]|0;if((j&255)>=8)return z|0;a[m>>0]=j+1<<24>>24;c[e+148+((j&255)<<2)>>2]=z;return z|0}function fl(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=Ra;Ra=Ra+32|0;i=y;w=y+8|0;s=c[h+12>>2]|0;r=c[f>>2]|0;u=c[r+108>>2]|0;x=w+4|0;c[x>>2]=0;c[w>>2]=r;r=w+8|0;c[r>>2]=0;t=w+12|0;c[t>>2]=u;u=w+16|0;c[u>>2]=0;a[w+20>>0]=0;v=w+21|0;a[v>>0]=0;if(!(c[h+40>>2]|0)){n=h+50|0;if(b[n>>1]|0){o=s+4|0;p=h+4|0;m=0;do{q=c[(c[o>>2]|0)+(b[(c[p>>2]|0)+(m<<1)>>1]<<4)>>2]|0;do if(m|0){i=c[u>>2]|0;j=i+2|0;if(j>>>0<(c[r>>2]|0)>>>0){c[u>>2]=j;l=(c[x>>2]|0)+i|0;a[l>>0]=44;a[l+1>>0]=32;break}else{wb(w,42425,2);break}}while(0);j=c[s>>2]|0;if(!j)i=0;else i=(Eu(j)|0)&1073741823;k=c[u>>2]|0;l=k+i|0;if(l>>>0<(c[r>>2]|0)>>>0){if(i|0){c[u>>2]=l;ew((c[x>>2]|0)+k|0,j|0,i|0)|0}}else wb(w,j,i);i=c[u>>2]|0;j=i+1|0;if(j>>>0<(c[r>>2]|0)>>>0){c[u>>2]=j;a[(c[x>>2]|0)+i>>0]=46}else wb(w,31183,1);if(!q)i=0;else i=(Eu(q)|0)&1073741823;j=c[u>>2]|0;k=j+i|0;if(k>>>0<(c[r>>2]|0)>>>0){if(i|0){c[u>>2]=k;ew((c[x>>2]|0)+j|0,q|0,i|0)|0}}else wb(w,q,i);m=m+1|0}while(m>>>0<(e[n>>1]|0)>>>0)}}else{c[i>>2]=c[h>>2];Eb(w,42414,i)}i=c[x>>2]|0;if((i|0?(a[i+(c[u>>2]|0)>>0]=0,c[t>>2]|0):0)?(a[v>>0]&4)==0:0){x=$d(w)|0;w=h+55|0;w=d[w>>0]|d[w+1>>0]<<8;w=w&3;w=w<<16>>16==2;w=w?1555:2067;Uj(f,w,g,x,-7,2);Ra=y;return}x=c[x>>2]|0;w=h+55|0;w=d[w>>0]|d[w+1>>0]<<8;w=w&3;w=w<<16>>16==2;w=w?1555:2067;Uj(f,w,g,x,-7,2);Ra=y;return}function gl(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=f+16|0;g=c[m>>2]|0;if(g|0){m=g;return m|0}k=c[f+12>>2]|0;l=f+52|0;h=e[l>>1]|0;g=h+1|0;do if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](g)|0;c[m>>2]=g;if(!g)h=15;else h=21}else{i=Wa[c[29356>>2]&127](g)|0;if((c[14985]|0)>>>0<=h>>>0)c[14985]=g;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){j=c[14978]|0;h=Tv(g|0,h|0,i|0,((i|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=j>>>0)&1}g=Wa[c[29340>>2]&127](i)|0;if(!g){c[m>>2]=0;h=15;break}h=Wa[c[29352>>2]&127](g)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h;c[m>>2]=g;h=21}while(0);if((h|0)==15){g=d+81|0;if(a[g>>0]|0){m=0;return m|0}if(a[d+82>>0]|0){m=0;return m|0}a[g>>0]=1;if((c[d+180>>2]|0)>0)c[d+264>>2]=1;g=d+272|0;c[g>>2]=(c[g>>2]|0)+1;g=c[d+236>>2]|0;if(!g){m=0;return m|0}c[g+12>>2]=7;m=0;return m|0}else if((h|0)==21){if(!(b[l>>1]|0))h=0;else{j=f+4|0;d=k+4|0;i=f+40|0;h=0;do{g=b[(c[j>>2]|0)+(h<<1)>>1]|0;if(g<<16>>16<=-1)if(g<<16>>16==-1)g=68;else{g=Xj(c[(c[i>>2]|0)+4+(h*20|0)>>2]|0)|0;g=g<<24>>24==0?65:g}else g=a[(c[d>>2]|0)+(g<<16>>16<<4)+13>>0]|0;a[(c[m>>2]|0)+h>>0]=g;h=h+1|0}while(h>>>0<(e[l>>1]|0)>>>0);g=c[m>>2]|0}a[g+h>>0]=0;m=c[m>>2]|0;return m|0}return 0}function hl(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=c[b>>2]|0;l=g+20|0;f=c[l>>2]|0;if((f|0)<=0)return;k=g+16|0;if(!e){g=0;do{if(c[(c[k>>2]|0)+(g<<4)+4>>2]|0){rk(b,g);f=c[l>>2]|0}g=g+1|0}while((g|0)<(f|0));return}j=0;do{g=c[k>>2]|0;if(c[g+(j<<4)+4>>2]|0){h=c[g+(j<<4)>>2]|0;i=a[e>>0]|0;g=(d[208+(i&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0;if(!(i<<24>>24==0|(g|0)!=0)){i=e;do{i=i+1|0;h=h+1|0;m=a[i>>0]|0;g=(d[208+(m&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(g|0)!=0))}if(!g){rk(b,j);f=c[l>>2]|0}}j=j+1|0}while((j|0)<(f|0));return}function il(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=Ra;Ra=Ra+32|0;y=E+16|0;x=E+8|0;o=E;m=E+28|0;C=c[f>>2]|0;D=C+16|0;v=c[D>>2]|0;B=f+8|0;j=c[B>>2]|0;A=f+116|0;a:do if(!j){if((c[A>>2]|0)==0?(b[C+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[C+272>>2]|0)if(!(a[C+81>>0]|0))w=15;else{z=0;break a}else{do if((e[C+276>>1]|0)>=224){j=C+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];z=C+284|0;c[z>>2]=(c[z>>2]|0)+1;break b}j=C+296|0;k=c[j>>2]|0;if(!k){j=C+292|0;break}else{c[j>>2]=c[k>>2];z=C+284|0;c[z>>2]=(c[z>>2]|0)+1;break b}}else j=C+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;w=15}while(0);if((w|0)==15)k=_d(C,224,0)|0;if(!k)z=0;else{j=k+104|0;l=j+120|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));c[k>>2]=C;j=C+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[B>>2]=k;Di(k,61,0,1,0)|0;z=k}}else z=j;while(0);q=c[A>>2]|0;q=(q|0)==0?f:q;j=q+84|0;k=c[j>>2]|0;p=1<>2]=k|p,(h|0)==1):0)?(t=c[q>>2]|0,n=t+16|0,(c[(c[n>>2]|0)+20>>2]|0)==0):0)?(a[q+199>>0]|0)==0:0){j=Pe(c[t>>2]|0,0,t,m,0,542)|0;if(j|0){cd(q,32157,o);c[q+12>>2]=j;break}o=c[m>>2]|0;c[(c[n>>2]|0)+20>>2]=o;j=c[t+92>>2]|0;l=c[o+4>>2]|0;c[l+4>>2]=c[o>>2];if(!(b[l+22>>1]&2)){m=l+32|0;n=l+36|0;o=(c[m>>2]|0)-(c[n>>2]|0)|0;if(((j+-512|0)>>>0<65025?(j+-1&j|0)==0:0)?(c[m>>2]=j,s=l+80|0,r=c[s>>2]|0,r|0):0){k=r+-4|0;c[s>>2]=k;j=k;do if((c[14816]|0)>>>0<=j>>>0)if((c[14817]|0)>>>0>j>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;r=(c[14820]|0)+1|0;c[14820]=r;c[14821]=(r|0)<(c[14815]|0)&1;break}else{j=Wa[c[29352>>2]&127](k)|0;w=35;break}else{j=Wa[c[29352>>2]&127](k)|0;w=35}while(0);do if((w|0)==35){c[14980]=(c[14980]|0)-j;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{r=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[s>>2]=0}s=Se(c[l>>2]|0,m,o)|0;c[n>>2]=(c[m>>2]|0)-(o&65535);if((s|0)==7){j=t+81|0;if((a[j>>0]|0)==0?(a[t+82>>0]|0)==0:0){a[j>>0]=1;if((c[t+180>>2]|0)>0)c[t+264>>2]=1;j=t+272|0;c[j>>2]=(c[j>>2]|0)+1;j=c[t+236>>2]|0;if(j|0)c[j+12>>2]=7}break}}}while(0);r=q+80|0;c[r>>2]=c[r>>2]|p;r=q+20|0;a[r>>0]=a[r>>0]|1;r=g+56|0;do if(c[r>>2]|0){j=z+108|0;k=c[j>>2]|0;if((c[z+112>>2]|0)>(k|0)){c[j>>2]=k+1;j=c[z+104>>2]|0;a[j+(k*20|0)>>0]=-96;j=j+(k*20|0)+1|0;l=j+19|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(l|0));break}else{Di(z,160,0,0,0)|0;break}}while(0);j=c[(c[(c[f>>2]|0)+16>>2]|0)+28>>2]|0;do if(!(a[f+146>>0]|0)){q=c[g+72>>2]|0;if((q|0)!=(j|0)?(u=c[j+48>>2]|0,(u|0)!=0):0){p=g+68|0;o=u;j=0;do{n=c[o+8>>2]|0;if((c[n+24>>2]|0)==(q|0)){l=c[n+4>>2]|0;m=c[g>>2]|0;u=a[l>>0]|0;k=(d[208+(u&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(u<<24>>24==0|(k|0)!=0))do{l=l+1|0;m=m+1|0;u=a[l>>0]|0;k=(d[208+(u&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(u<<24>>24==0|(k|0)!=0));if(!k){if(!j)j=c[p>>2]|0;c[n+32>>2]=j;j=n}}o=c[o>>2]|0}while((o|0)!=0);if(!j)w=66}else w=66;if((w|0)==66){j=c[g+68>>2]|0;if(!j)break}do{jl(f,j);j=c[j+32>>2]|0}while((j|0)!=0)}while(0);j=v+(h<<4)|0;if(!(c[g+36>>2]&8))q=g;else{q=c[g>>2]|0;c[x>>2]=c[j>>2];c[x+4>>2]=q;Ak(f,42781,x);q=g}x=c[q>>2]|0;c[y>>2]=c[j>>2];c[y+4>>2]=34585;c[y+8>>2]=x;Ak(f,42826,y);c:do if(!i)if(!(c[r>>2]|0)){o=c[g+28>>2]|0;p=g+8|0;n=g+72|0;l=0;while(1){m=(l|0)==0;k=m|(o|0)<(l|0)?o:0;j=c[p>>2]|0;if(j)do{g=c[j+44>>2]|0;k=(g|0)>(k|0)&(m|(g|0)<(l|0))?g:k;j=c[j+20>>2]|0}while((j|0)!=0);if(!k){w=83;break c}l=c[n>>2]|0;if(!l)j=-1e6;else{m=c[(c[f>>2]|0)+16>>2]|0;j=0;while(1)if((c[m+(j<<4)+12>>2]|0)==(l|0))break;else j=j+1|0}kl(f,k,j);l=k}}else w=85;else w=83;while(0);if((w|0)==83)if(!(c[r>>2]|0)){m=z+108|0;k=z+112|0}else w=85;if((w|0)==85){l=c[q>>2]|0;m=z+108|0;j=c[m>>2]|0;k=z+112|0;if((c[k>>2]|0)>(j|0)){c[m>>2]=j+1;g=c[z+104>>2]|0;a[g+(j*20|0)>>0]=-94;b[g+(j*20|0)+2>>1]=0;c[g+(j*20|0)+4>>2]=h;c[g+(j*20|0)+8>>2]=0;c[g+(j*20|0)+12>>2]=0;c[g+(j*20|0)+16>>2]=0;a[g+(j*20|0)+1>>0]=0}else j=Di(z,162,h,0,0)|0;if(!(a[(c[z>>2]|0)+81>>0]|0)){if((j|0)<0)j=(c[m>>2]|0)+-1|0;Ei(z,(c[z+104>>2]|0)+(j*20|0)|0,l,0)}A=c[A>>2]|0;a[((A|0)==0?f:A)+21>>0]=1}l=c[q>>2]|0;j=c[m>>2]|0;if((c[k>>2]|0)>(j|0)){c[m>>2]=j+1;A=c[z+104>>2]|0;a[A+(j*20|0)>>0]=-113;b[A+(j*20|0)+2>>1]=0;c[A+(j*20|0)+4>>2]=h;c[A+(j*20|0)+8>>2]=0;c[A+(j*20|0)+12>>2]=0;c[A+(j*20|0)+16>>2]=0;a[A+(j*20|0)+1>>0]=0}else j=Di(z,143,h,0,0)|0;if(!(a[(c[z>>2]|0)+81>>0]|0)){if((j|0)<0)j=(c[m>>2]|0)+-1|0;Ei(z,(c[z+104>>2]|0)+(j*20|0)|0,l,0)}m=c[B>>2]|0;j=(c[c[(c[(c[f>>2]|0)+16>>2]|0)+(h<<4)+12>>2]>>2]|0)+1|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;f=c[m+104>>2]|0;a[f+(l*20|0)>>0]=95;b[f+(l*20|0)+2>>1]=0;c[f+(l*20|0)+4>>2]=h;c[f+(l*20|0)+8>>2]=1;c[f+(l*20|0)+12>>2]=j;c[f+(l*20|0)+16>>2]=0;a[f+(l*20|0)+1>>0]=0}else Di(m,95,h,1,j)|0;l=c[(c[D>>2]|0)+(h<<4)+12>>2]|0;k=l+78|0;j=b[k>>1]|0;if(!(j&2)){Ra=E;return}l=c[l+16>>2]|0;if(l){q=C+480|0;r=C+304|0;s=C+308|0;t=C+300|0;do{j=c[l+8>>2]|0;if(c[j+12>>2]|0){p=j+4|0;k=c[p>>2]|0;d:do if(k){j=j+42|0;if((b[j>>1]|0)>0){o=0;while(1){m=c[k>>2]|0;e:do if(m|0){if(c[q>>2]|0){Xd(C,m);break}n=m;do if((c[r>>2]|0)>>>0<=n>>>0){if((c[s>>2]|0)>>>0<=n>>>0)break;c[m>>2]=c[t>>2];c[t>>2]=m;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{f=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);m=c[k+4>>2]|0;if(m|0)ni(C,m);m=c[k+8>>2]|0;f:do if(m|0){if(c[q>>2]|0){Xd(C,m);break}n=m;do if((c[r>>2]|0)>>>0<=n>>>0){if((c[s>>2]|0)>>>0<=n>>>0)break;c[m>>2]=c[t>>2];c[t>>2]=m;break f}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{f=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);o=o+1|0;if((o|0)>=(b[j>>1]|0))break;else k=k+16|0}k=c[p>>2]|0}if(k){if(c[q>>2]|0){Xd(C,k);break}m=k;do if((c[r>>2]|0)>>>0<=m>>>0){if((c[s>>2]|0)>>>0<=m>>>0)break;c[k>>2]=c[t>>2];c[t>>2]=k;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{f=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}}else j=j+42|0;while(0);c[p>>2]=0;b[j>>1]=0}l=c[l>>2]|0}while((l|0)!=0);j=(c[(c[D>>2]|0)+(h<<4)+12>>2]|0)+78|0;k=j;j=b[j>>1]|0}b[k>>1]=j&-3;Ra=E;return} -function ls(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if(mb()|0){b=7;return b|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](36)|0;if(!a){b=7;return b|0}}else{e=Wa[c[29356>>2]&127](36)|0;if((c[14985]|0)>>>0<36)c[14985]=36;d=59064;a=c[d>>2]|0;d=c[d+4>>2]|0;if((d|0)>0|(d|0)==0&a>>>0>0){f=c[14978]|0;d=Tv(a|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&d>>>0<=f>>>0)&1}a=Wa[c[29340>>2]&127](e)|0;if(!a){f=7;return f|0}d=Wa[c[29352>>2]&127](a)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}d=a;e=d+36|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[b>>2]=a;f=0;return f|0}function ms(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=c[b>>2]|0;if(d|0){Wa[c[(c[(c[a>>2]|0)+12>>2]|0)+16>>2]&127](d)|0;c[b>>2]=0}d=a+4|0;b=c[d>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);c[d>>2]=0;e=a+12|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{e=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function ns(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;k=c[d>>2]|0;n=d+8|0;f=c[n>>2]|0;if(f|0){Wa[c[(c[k+12>>2]|0)+16>>2]&127](f)|0;c[n>>2]=0}m=d+4|0;f=c[m>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{l=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[m>>2]=0;l=d+12|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[l+20>>2]=0;if((e|0)!=1){d=1;return d|0}g=c[h>>2]|0;f=b[g+8>>1]|0;if((f&514)==514?(a[g+10>>0]|0)==1:0){i=c[g+16>>2]|0;e=g}else if(!(f&1)){i=Gg(g,1)|0;e=c[h>>2]|0}else{i=0;e=g}f=b[e+8>>1]|0;if((f&2)!=0?(a[e+10>>0]|0)==1:0)e=c[e+12>>2]|0;else j=16;do if((j|0)==16){f=f&65535;if(!(f&16)){if(f&1|0){e=0;break}e=Fg(e,1)|0;break}else{g=c[e+12>>2]|0;if(!(f&16384)){e=g;break}e=(c[e>>2]|0)+g|0;break}}while(0);f=e+1|0;f=pb(f,((f|0)<0)<<31>>31)|0;c[m>>2]=f;if(!f){d=7;return d|0}ew(f|0,i|0,e|0)|0;a[(c[m>>2]|0)+e>>0]=0;g=k+16|0;f=Za[c[(c[k+12>>2]|0)+12>>2]&127](c[g>>2]|0,c[m>>2]|0,e,n)|0;if(f|0){d=f;return d|0}k=c[n>>2]|0;c[k>>2]=c[g>>2];g=c[d>>2]|0;c[l>>2]=(c[l>>2]|0)+1;g=$a[c[(c[g+12>>2]|0)+20>>2]&127](k,d+16|0,d+20|0,d+24|0,d+28|0,d+32|0)|0;if(!g){d=0;return d|0}f=c[n>>2]|0;if(f|0){Wa[c[(c[(c[d>>2]|0)+12>>2]|0)+16>>2]&127](f)|0;c[n>>2]=0}f=c[m>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{d=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[m>>2]=0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[l+20>>2]=0;d=(g|0)==101?0:g;return d|0}function os(a){a=a|0;var b=0,d=0,e=0,f=0;e=c[a>>2]|0;f=a+12|0;c[f>>2]=(c[f>>2]|0)+1;d=a+8|0;e=$a[c[(c[e+12>>2]|0)+20>>2]&127](c[d>>2]|0,a+16|0,a+20|0,a+24|0,a+28|0,a+32|0)|0;if(!e)return 0;b=c[d>>2]|0;if(b|0){Wa[c[(c[(c[a>>2]|0)+12>>2]|0)+16>>2]&127](b)|0;c[d>>2]=0}a=a+4|0;b=c[a>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);c[a>>2]=0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;return ((e|0)==101?0:e)|0}function ps(a){a=a|0;return (c[a+16>>2]|0)==0|0}function qs(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;switch(e|0){case 0:{if((yc(c[d>>2]|0,c[a+4>>2]|0,-1,1,-1)|0)!=18)return 0;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return 0}case 1:{if((yc(c[d>>2]|0,c[a+16>>2]|0,c[a+20>>2]|0,1,-1)|0)!=18)return 0;c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;return 0}case 2:{f=c[a+24>>2]|0;a=c[d>>2]|0;e=((f|0)<0)<<31>>31;d=a+8|0;if(!(b[d>>1]&9216)){c[a>>2]=f;c[a+4>>2]=e;b[d>>1]=4;return 0}else{Pg(a,f,e);return 0}}case 3:{f=c[a+28>>2]|0;a=c[d>>2]|0;e=((f|0)<0)<<31>>31;d=a+8|0;if(!(b[d>>1]&9216)){c[a>>2]=f;c[a+4>>2]=e;b[d>>1]=4;return 0}else{Pg(a,f,e);return 0}}default:{f=c[a+32>>2]|0;a=c[d>>2]|0;e=((f|0)<0)<<31>>31;d=a+8|0;if(!(b[d>>1]&9216)){c[a>>2]=f;c[a+4>>2]=e;b[d>>1]=4;return 0}else{Pg(a,f,e);return 0}}}return 0}function rs(a,b){a=a|0;b=b|0;a=c[a+12>>2]|0;c[b>>2]=a;c[b+4>>2]=((a|0)<0)<<31>>31;return 0}function ss(h,i,j){h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;A=Ra;Ra=Ra+64|0;z=A+56|0;y=A+48|0;x=A;i=c[j>>2]|0;k=e[i+8>>1]|0;do if(!(k&4)){if(k&8|0){k=Mg(+g[i>>3])|0;L()|0;break}if(!(k&18)){Ra=A;return}else{k=Ng(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)|0;L()|0;break}}else k=c[i>>2]|0;while(0);i=k&255;if((i+-1|0)>>>0>4){Ra=A;return}m=i<<1;l=(k<<3)+8|0;j=j+4|0;w=mc(c[j>>2]|0)|0;j=c[j>>2]|0;i=b[j+8>>1]|0;if((i&2)!=0?(a[j+10>>0]|0)==1:0)k=c[j+12>>2]|0;else n=11;do if((n|0)==11){i=i&65535;if(i&16|0){k=c[j+12>>2]|0;if(!(i&16384))break;k=(c[j>>2]|0)+k|0;break}if(!(i&1)){k=Fg(j,1)|0;break}else{Ra=A;return}}while(0);if((k|0)<4){Ra=A;return}u=w+2|0;t=w+3|0;s=l&248;if((k|0)<(G(d[u>>0]<<8|d[t>>0],s)|0)){Ra=A;return}v=zb(0)|0;if(!(d[u>>0]<<8|d[t>>0]))if(!v){i=0;j=7}else n=34;else{n=m&254;o=v+16|0;p=v+8|0;q=v+4|0;r=(n|0)==0;m=0;do{k=G(m,s)|0;j=w+(k|4)|0;E=cw(d[j>>0]|0,0,56)|0;l=L()|0;F=cw(d[j+1>>0]|0,0,48)|0;l=L()|0|l;D=cw(d[j+2>>0]|0,0,40)|0;l=l|(L()|0);l=l|d[j+3>>0];C=cw(d[j+4>>0]|0,0,24)|0;l=l|(L()|0);B=cw(d[j+5>>0]|0,0,16)|0;l=l|(L()|0);i=cw(d[j+6>>0]|0,0,8)|0;l=l|(L()|0);j=Sv(F|E|D|C|B|i|0,l|0,d[j+7>>0]|0,0)|0;l=L()|0;i=x;c[i>>2]=j;c[i+4>>2]=l;i=0;k=w+(k+12)|0;while(1){c[x+8+(i<<2)>>2]=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8|d[k+3>>0];c[x+8+((i|1)<<2)>>2]=d[k+5>>0]<<16|d[k+4>>0]<<24|d[k+6>>0]<<8|d[k+7>>0];i=i+2|0;if(i>>>0>=n>>>0)break;else k=k+8|0}do if(m|0){i=c[o>>2]|0;k=i+1|0;if(k>>>0<(c[p>>2]|0)>>>0){c[o>>2]=k;a[(c[q>>2]|0)+i>>0]=32;break}else{wb(v,44513,1);break}}while(0);F=y;c[F>>2]=j;c[F+4>>2]=l;Eb(v,55646,y);if(!r){i=0;do{g[z>>3]=+f[x+8+(i<<2)>>2];Eb(v,55652,z);i=i+1|0}while((i|0)!=(n|0))}i=c[o>>2]|0;k=i+1|0;if(k>>>0<(c[p>>2]|0)>>>0){c[o>>2]=k;a[(c[q>>2]|0)+i>>0]=125}else wb(v,55656,1);m=m+1|0}while(m>>>0<(d[u>>0]<<8|d[t>>0])>>>0);n=34}do if((n|0)==34){j=d[v+20>>0]|0;if((v|0)!=29632){i=v+4|0;k=c[i>>2]|0;if(((k|0)!=0?(a[k+(c[v+16>>2]|0)>>0]=0,(c[v+12>>2]|0)!=0):0)?(a[v+21>>0]&4)==0:0)i=$d(v)|0;else i=c[i>>2]|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](v);break}else{F=Wa[c[29352>>2]&127](v)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](v);break}}else i=0}while(0);k=h+20|0;if((yc(c[h>>2]|0,i,-1,1,90)|0)==18){c[k>>2]=18;yc(c[h>>2]|0,31223,-1,1,0)|0}c[k>>2]=(j|0)==0?-1:j;k=c[h>>2]|0;if(!(b[k+8>>1]&1)){Ra=A;return}switch((j&255)<<24>>24){case 101:{i=50782;break}case 100:{i=50760;break}default:if(j>>>0<29?(520028155>>>j&1|0)!=0:0)i=c[22960+(j<<2)>>2]|0;else i=50724}yc(k,i,-1,1,0)|0;Ra=A;return}function ts(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0;i=c[g>>2]|0;f=b[i+8>>1]|0;a:do if((f&15|16)<<16>>16==16){if((f&2)!=0?(a[i+10>>0]|0)==1:0)f=c[i+12>>2]|0;else h=5;do if((h|0)==5){h=f&65535;if(!(h&16)){if(h&1|0)break a;f=Fg(i,1)|0;break}else{f=c[i+12>>2]|0;if(!(h&16384))break;f=(c[i>>2]|0)+f|0;break}}while(0);if((f|0)>=2){i=mc(c[g>>2]|0)|0;i=d[i>>0]<<8|d[i+1>>0];f=c[e>>2]|0;h=f+8|0;if(!(b[h>>1]&9216)){e=f;c[e>>2]=i;c[e+4>>2]=0;b[h>>1]=4;return}else{Pg(f,i,0);return}}}while(0);c[e+20>>2]=1;yc(c[e>>2]|0,55658,-1,1,-1)|0;return}function us(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+80|0;o=t+16|0;m=t+8|0;k=t;s=t+20|0;if((f+-1|0)>>>0>1){c[d+20>>2]=1;yc(c[d>>2]|0,55691,-1,1,-1)|0;Ra=t;return}i=c[g>>2]|0;do if(i){h=b[i+8>>1]|0;if((h&514)==514?(a[i+10>>0]|0)==1:0){j=c[i+16>>2]|0;break}if(!(h&1))j=Gg(i,1)|0;else j=0}else j=0;while(0);do if((f|0)!=1){h=c[g+4>>2]|0;if(h){i=b[h+8>>1]|0;if((i&514)==514?(a[h+10>>0]|0)==1:0){g=c[h+16>>2]|0;break}if(!(i&1))g=Gg(h,1)|0;else g=0}else g=0}else{g=j;j=50919}while(0);r=c[(c[d>>2]|0)+32>>2]|0;q=s+12|0;h=q;i=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c[s>>2]=r;c[s+4>>2]=j;c[s+8>>2]=g;if(a[r+79>>0]|0){n=nd(r,36223,0,0,0)|0;i=s+40|0;c[i>>2]=n;if(!n){f=1;p=19}else{n=1;h=0;l=i}}else{f=0;i=s+40|0;p=19}if((p|0)==19){c[k>>2]=j;c[k+4>>2]=g;h=vs(s,55742,k)|0;if(!h)h=0;else{p=(e[h+144>>1]|0)+-2|0;gc(h)|0;h=p}c[i>>2]=0;n=f;l=i}c[m>>2]=j;c[m+4>>2]=g;k=vs(s,53869,m)|0;if(k){f=k+144|0;p=(e[f>>1]|0)+~h|0;h=s+16|0;c[h>>2]=(p|0)/2|0;if((p|0)>=2){if((Gc(k)|0)==100){i=c[k+120>>2]|0;if((i|0)!=0?(e[f>>1]|0)>1:0){i=i+40|0;f=k}else{i=c[k>>2]|0;c[i+64>>2]=25;Ne(i,25);i=29576;f=k}j=b[i+8>>1]&31;i=c[f>>2]|0;g=k+40|0;f=c[g>>2]|0;if((f|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7}else i=c[i+68>>2]&f;c[g>>2]=i;c[q>>2]=1347440720>>>j&1}}else ws(s,55770,o);i=gc(k)|0;if((i|0)!=11)c[l>>2]=i}else h=s+16|0;if((c[h>>2]|0)>0){if(!(c[l>>2]|0))xs(s,0,0,1,0);q=c[s+32>>2]|0;ys(s,55801,q,((q|0)<0)<<31>>31);q=c[s+36>>2]|0;ys(s,55808,q,((q|0)<0)<<31>>31)}gc(c[s+20>>2]|0)|0;gc(c[s+24>>2]|0)|0;gc(c[s+28>>2]|0)|0;do if(n){h=nd(r,55816,0,0,0)|0;i=c[l>>2]|0;if(!i){c[l>>2]=h;p=46;break}else{h=i;i=c[s+44>>2]|0;p=49;break}}else{h=c[l>>2]|0;p=46}while(0);if((p|0)==46){i=c[s+44>>2]|0;if(!h){if((yc(c[d>>2]|0,(i|0)==0?45704:i,-1,1,-1)|0)==18){c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0}}else p=49}if((p|0)==49){c[d+20>>2]=h;f=c[d>>2]|0;if(b[f+8>>1]&1){switch(h|0){case 516:{h=50738;break}case 100:{h=50760;break}case 101:{h=50782;break}default:{h=h&255;if(h>>>0<29?(520028155>>>h&1|0)!=0:0)h=c[22960+(h<<2)>>2]|0;else h=50724}}yc(f,h,-1,1,0)|0}}h=i;if(!i){Ra=t;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);Ra=t;return}else{d=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);Ra=t;return}}function vs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+32|0;e=h;f=h+16|0;c[f>>2]=0;c[e>>2]=d;b=Ab(b,e)|0;d=a+40|0;e=(b|0)==0;do if(!(c[d>>2]|0))if(e){c[d>>2]=7;break}else{g=qd(c[a>>2]|0,b,-1,128,0,f,0)|0;c[d>>2]=g;g=6;break}else if(!e)g=6;while(0);do if((g|0)==6)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{g=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);Ra=h;return c[f>>2]|0}function ws(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=Ra;Ra=Ra+32|0;h=i+16|0;e=i;c[e>>2]=d;f=a+40|0;if(c[f>>2]|0){Ra=i;return}g=a+48|0;if((c[g>>2]|0)>=100){Ra=i;return}d=Ab(b,e)|0;if(!((d|0)!=0?(a=a+44|0,e=c[a>>2]|0,c[h>>2]=e,c[h+4>>2]=(e|0)==0?59952:35594,c[h+8>>2]=d,h=Bb(55820,h)|0,c[a>>2]=h,(h|0)!=0):0))c[f>>2]=7;c[g>>2]=(c[g>>2]|0)+1;Ra=i;return}function xs(e,g,i,j,k){e=e|0;g=g|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0.0;J=Ra;Ra=Ra+112|0;H=J+88|0;F=J+72|0;E=J+56|0;v=J+40|0;u=J+32|0;t=J+16|0;s=J+8|0;m=J;r=e+40|0;if(c[r>>2]|0){Ra=J;return}q=e+20|0;l=c[q>>2]|0;if(!l){l=c[e+8>>2]|0;c[m>>2]=c[e+4>>2];c[m+4>>2]=l;l=vs(e,55946,m)|0;c[q>>2]=l;if(c[r>>2]|0){Ra=J;return}}do if(!(Vc(l,1)|0)){l=c[l+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){D=l;c[D>>2]=j;c[D+4>>2]=k;b[m>>1]=4;break}else{Pg(l,j,k);break}}while(0);do if((Gc(c[q>>2]|0)|0)==100){p=Lc(c[q>>2]|0,0)|0;o=c[q>>2]|0;if(!o)m=mc(29576)|0;else{l=c[o+120>>2]|0;if((l|0)!=0?(b[o+144>>1]|0)!=0:0)n=o;else{l=c[o>>2]|0;c[l+64>>2]=25;Ne(l,25);l=29576;n=o}m=mc(l)|0;n=c[n>>2]|0;o=o+40|0;l=c[o>>2]|0;if((l|0)==3082|(a[n+81>>0]|0)!=0){og(n);l=7}else l=c[n+68>>2]&l;c[o>>2]=l}l=pb(p,((p|0)<0)<<31>>31)|0;if(!l){c[r>>2]=7;D=0;o=0;break}else{ew(l|0,m|0,p|0)|0;D=l;o=p;break}}else{D=0;o=0}while(0);l=c[q>>2]|0;do if(l){m=c[l>>2]|0;C=l+136|0;B=c[C+4>>2]|0;if((B|0)>0|(B|0)==0&(c[C>>2]|0)>>>0>0)hc(m,l);n=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;C=l+64|0;c[C>>2]=0;c[C+4>>2]=0;if((n|0)==3082|(a[m+81>>0]|0)!=0){og(m);l=7;break}else{l=c[m+68>>2]&n;break}}else l=0;while(0);if((c[r>>2]|0)==0?(c[r>>2]=l,(D|0)==0&(l|0)==0):0){I=s;c[I>>2]=j;c[I+4>>2]=k;ws(e,55991,s);Ra=J;return}if(!D){Ra=J;return}if((o|0)<4){I=t;c[I>>2]=j;c[I+4>>2]=k;c[t+8>>2]=o;ws(e,55827,t);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);Ra=J;return}else{I=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);Ra=J;return}}C=(i|0)==0;if(C){g=d[D>>0]<<8|d[D+1>>0];if(g>>>0>40){c[u>>2]=g;ws(e,55861,u);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);Ra=J;return}else{I=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);Ra=J;return}}}A=d[D+2>>0]<<8|d[D+3>>0];B=e+16|0;l=c[B>>2]|0;a:do if((G((l<<3)+8|0,A)|0|4|0)<=(o|0)){if(A|0){y=e+12|0;z=(g|0)>0;v=g+-1|0;w=e+36|0;x=e+32|0;g=0;while(1){u=D+(G((l<<3)+8|0,g)|0|4)|0;o=cw(d[u>>0]|0,0,56)|0;s=L()|0;n=cw(d[u+1>>0]|0,0,48)|0;s=L()|0|s;p=cw(d[u+2>>0]|0,0,40)|0;s=s|(L()|0);s=s|d[u+3>>0];q=cw(d[u+4>>0]|0,0,24)|0;s=s|(L()|0);r=cw(d[u+5>>0]|0,0,16)|0;s=s|(L()|0);t=cw(d[u+6>>0]|0,0,8)|0;s=s|(L()|0);s=Sv(n|o|p|q|r|t|0,s|0,d[u+7>>0]|0,0)|0;t=L()|0;u=u+8|0;b:do if((l|0)>0){if(C){o=0;while(1){n=o<<3;m=u+n|0;m=d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0];n=u+(n|4)|0;n=d[n+1>>0]<<16|d[n>>0]<<24|d[n+2>>0]<<8|d[n+3>>0];if(!(c[y>>2]|0)){K=(c[h>>2]=m,+f[h>>2]);if(K>(c[h>>2]=n,+f[h>>2]))I=52}else if((m|0)>(n|0))I=52;if((I|0)==52){I=0;c[E>>2]=o;c[E+4>>2]=g;l=E+8|0;c[l>>2]=j;c[l+4>>2]=k;ws(e,56023,E);l=c[B>>2]|0}o=o+1|0;if((o|0)>=(l|0))break b}}p=0;do{m=p<<3;q=u+m|0;q=d[q+1>>0]<<16|d[q>>0]<<24|d[q+2>>0]<<8|d[q+3>>0];o=m|4;r=u+o|0;r=d[r+1>>0]<<16|d[r>>0]<<24|d[r+2>>0]<<8|d[r+3>>0];l=c[y>>2]|0;if(!l){K=(c[h>>2]=q,+f[h>>2]);if(K>(c[h>>2]=r,+f[h>>2]))I=57;else l=0}else if((q|0)>(r|0))I=57;if((I|0)==57){I=0;c[F>>2]=p;c[F+4>>2]=g;l=F+8|0;c[l>>2]=j;c[l+4>>2]=k;ws(e,56023,F);l=c[y>>2]|0}n=i+m|0;n=d[n+1>>0]<<16|d[n>>0]<<24|d[n+2>>0]<<8|d[n+3>>0];m=i+o|0;m=d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0];do if(!l){K=(c[h>>2]=q,+f[h>>2]);if(K<(c[h>>2]=n,+f[h>>2])){I=62;break}K=(c[h>>2]=r,+f[h>>2]);if(K>(c[h>>2]=m,+f[h>>2]))I=62}else if((q|0)<(n|0)|(r|0)>(m|0))I=62;while(0);if((I|0)==62){I=0;c[H>>2]=p;c[H+4>>2]=g;r=H+8|0;c[r>>2]=j;c[r+4>>2]=k;ws(e,56071,H)}p=p+1|0}while((p|0)<(c[B>>2]|0))}while(0);if(z){zs(e,0,s,t,j,k);xs(e,v,u,s,t);l=w}else{zs(e,1,s,t,j,k);l=x}c[l>>2]=(c[l>>2]|0)+1;g=g+1|0;if((g|0)==(A|0))break a;l=c[B>>2]|0}}}else{I=v;c[I>>2]=j;c[I+4>>2]=k;c[v+8>>2]=A;c[v+12>>2]=o;ws(e,55891,v)}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);Ra=J;return}else{I=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);Ra=J;return}}function ys(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=Ra;Ra=Ra+48|0;j=k+16|0;f=k;i=a+40|0;if(c[i>>2]|0){Ra=k;return}l=c[a+8>>2]|0;c[f>>2]=c[a+4>>2];c[f+4>>2]=l;c[f+8>>2]=b;f=vs(a,56360,f)|0;if(!f){Ra=k;return}if((Gc(f)|0)==100?(g=Oc(f,0)|0,h=L()|0,!((g|0)==(d|0)&(h|0)==(e|0))):0){c[j>>2]=b;l=j+8|0;c[l>>2]=d;c[l+4>>2]=e;l=j+16|0;c[l>>2]=g;c[l+4>>2]=h;ws(a,56391,j)}l=gc(f)|0;c[i>>2]=l;Ra=k;return}function zs(d,e,f,g,h,i){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+80|0;o=p+32|0;m=p+8|0;l=p;j=d+24+(e<<2)|0;k=c[j>>2]|0;if(!k){n=c[30860+(e<<2)>>2]|0;k=c[d+8>>2]|0;c[l>>2]=c[d+4>>2];c[l+4>>2]=k;l=vs(d,n,l)|0;c[j>>2]=l}else l=k;n=d+40|0;if(c[n>>2]|0){Ra=p;return}do if(!(Vc(l,1)|0)){j=c[l+100>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){c[j>>2]=f;c[j+4>>2]=g;b[k>>1]=4;break}else{Pg(j,f,g);break}}while(0);switch(Gc(l)|0){case 101:{o=m;c[o>>2]=f;c[o+4>>2]=g;o=m+8|0;c[o>>2]=h;c[o+4>>2]=i;c[m+16>>2]=(e|0)==0?56293:56285;ws(d,56240,m);break}case 100:{j=Oc(l,0)|0;k=L()|0;if(!((j|0)==(h|0)&(k|0)==(i|0))){m=o;c[m>>2]=f;c[m+4>>2]=g;m=o+8|0;c[m>>2]=j;c[m+4>>2]=k;c[o+16>>2]=(e|0)==0?56293:56285;e=o+24|0;c[e>>2]=f;c[e+4>>2]=g;g=o+32|0;c[g>>2]=h;c[g+4>>2]=i;ws(d,56302,o)}break}default:{}}do if(l){j=c[l>>2]|0;o=l+136|0;i=c[o+4>>2]|0;if((i|0)>0|(i|0)==0&(c[o>>2]|0)>>>0>0)hc(j,l);k=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;o=l+64|0;c[o>>2]=0;c[o+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&k;break}}else j=0;while(0);if(c[n>>2]|0){Ra=p;return}c[n>>2]=j;Ra=p;return}function As(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Ss(a,b,c,d,e,f,1)|0}function Bs(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Ss(a,b,c,d,e,f,0)|0}function Cs(b,e){b=b|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+64|0;p=r+48|0;o=r;f=o;h=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));a[o+40>>0]=0;n=c[e>>2]|0;h=(n|0)>0;if(h){i=c[e+4>>2]|0;f=0;j=0;do{j=(a[i+(f*12|0)+4>>0]|0)==64?1:j;f=f+1|0}while((f|0)<(n|0));if(h){k=c[e+4>>2]|0;l=b+21|0;m=e+16|0;a:do if(!j){h=0;f=0;b:while(1){j=k+(f*12|0)|0;c:do if(a[k+(f*12|0)+5>>0]|0){if((c[j>>2]|0)==0?(a[k+(f*12|0)+4>>0]|0)==2:0)break b;i=c[j>>2]|0;d:do if((i|0)>0?(i|0)<=(d[l>>0]|0):0)switch(a[k+(f*12|0)+4>>0]|0){case 2:{i=65;break d}case 64:{q=15;break d}case 4:{i=69;break d}case 8:{i=66;break d}case 16:{i=67;break d}case 32:{i=68;break d}default:break c}else q=13;while(0);if((q|0)==13){q=0;if((a[k+(f*12|0)+4>>0]|0)==64)q=15;else break}if((q|0)==15){q=0;i=70}a[o+h>>0]=i;i=h+2|0;a[o+(h+1)>>0]=(c[j>>2]|0)+47;h=c[m>>2]|0;c[h+(f<<3)>>2]=(i|0)/2|0;a[h+(f<<3)+4>>0]=1;h=i}while(0);f=f+1|0;if(!((f|0)<(n|0)&(h|0)<40)){f=h;break a}}i=c[m>>2]|0;if(!f)f=0;else{h=0;do{c[i+(h<<3)>>2]=0;a[i+(h<<3)+4>>0]=0;h=h+1|0}while((h|0)!=(f|0))}c[e+20>>2]=1;c[i+(f<<3)>>2]=1;a[i+(f<<3)+4>>0]=1;g[e+40>>3]=30.0;q=e+48|0;c[q>>2]=1;c[q+4>>2]=0;c[e+56>>2]=1;e=0;Ra=r;return e|0}else{f=0;j=0;do{e:do if(a[k+(j*12|0)+5>>0]|0){i=k+(j*12|0)|0;h=c[i>>2]|0;f:do if((h|0)>0?(h|0)<=(d[l>>0]|0):0)switch(a[k+(j*12|0)+4>>0]|0){case 2:{h=65;break f}case 64:{q=34;break f}case 4:{h=69;break f}case 8:{h=66;break f}case 16:{h=67;break f}case 32:{h=68;break f}default:break e}else q=28;while(0);if((q|0)==28){q=0;if((a[k+(j*12|0)+4>>0]|0)==64)q=34;else break}if((q|0)==34){q=0;h=70}a[o+f>>0]=h;h=f+2|0;a[o+(f+1)>>0]=(c[i>>2]|0)+47;f=c[m>>2]|0;c[f+(j<<3)>>2]=(h|0)/2|0;a[f+(j<<3)+4>>0]=1;f=h}while(0);j=j+1|0}while((j|0)<(n|0)&(f|0)<40)}while(0);c[e+20>>2]=2;c[e+28>>2]=1;if((f|0)>0?(c[p>>2]=o,p=Bb(31408,p)|0,c[e+24>>2]=p,(p|0)==0):0){e=7;Ra=r;return e|0}}else q=38}else q=38;if((q|0)==38){c[e+20>>2]=2;c[e+28>>2]=1;f=0}b=b+48|0;b=aw(c[b>>2]|0,c[b+4>>2]|0,(f|0)/2|0|0)|0;q=L()|0;g[e+40>>3]=(+(b>>>0)+4294967296.0*+(q|0))*6.0;e=e+48|0;c[e>>2]=b;c[e+4>>2]=q;e=0;Ra=r;return e|0}function Ds(a){a=a|0;Ts(a);return 0}function Es(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=Ra;Ra=Ra+32|0;f=g;d=c[b+32>>2]|0;e=c[b+36>>2]|0;c[f>>2]=d;c[f+4>>2]=e;c[f+8>>2]=d;c[f+12>>2]=e;c[f+16>>2]=d;c[f+20>>2]=e;f=Bb(57667,f)|0;if(!f){f=7;Ra=g;return f|0}d=b+76|0;e=c[d>>2]|0;do if((e|0?(a[b+24>>0]|0)==0:0)?(c[b+56>>2]|0)==0:0){c[d>>2]=0;d=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);break}h=e;if((c[d+304>>2]|0)>>>0<=h>>>0?(c[d+308>>2]|0)>>>0>h>>>0:0){h=d+300|0;c[e>>2]=c[h>>2];c[h>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);d=nd(c[b+12>>2]|0,f,0,0,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}if(d|0){h=d;Ra=g;return h|0}Ts(b);h=0;Ra=g;return h|0}function Fs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(mb()|0){a=7;f=0;c[b>>2]=f;return a|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](248)|0;if(!d){a=7;f=0;c[b>>2]=f;return a|0}}else{f=Wa[c[29356>>2]&127](248)|0;if((c[14985]|0)>>>0<248)c[14985]=248;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){g=c[14978]|0;e=Tv(d|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=g>>>0)&1}d=Wa[c[29340>>2]&127](f)|0;if(!d){g=7;a=0;c[b>>2]=a;return g|0}e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}gw(d|0,0,248)|0;c[d>>2]=a;g=a+56|0;c[g>>2]=(c[g>>2]|0)+1;g=0;a=d;c[b>>2]=a;return g|0}function Gs(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=c[b>>2]|0;h=b+16|0;d=c[h>>2]|0;if(d|0){g=b+12|0;if((c[g>>2]|0)>0){f=0;while(1){d=c[d+(f*24|0)+16>>2]|0;do if(d|0){e=c[d+16>>2]|0;if(e|0)ab[e&127](c[d+12>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);d=f+1|0;if((d|0)>=(c[g>>2]|0))break;f=d;d=c[h>>2]|0}d=c[h>>2]|0}do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{g=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[h>>2]=0}gc(c[b+36>>2]|0)|0;d=c[b+32>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{h=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);Us(i,c[b+64>>2]|0)|0;Us(i,c[b+68>>2]|0)|0;Us(i,c[b+72>>2]|0)|0;Us(i,c[b+76>>2]|0)|0;Us(i,c[b+80>>2]|0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](b);else{h=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b)}e=i+56|0;d=(c[e>>2]|0)+-1|0;c[e>>2]=d;e=i+76|0;f=c[e>>2]|0;if(!f)return 0;if(!((d|0)==0&(a[i+24>>0]|0)==0))return 0;c[e>>2]=0;d=c[f+20>>2]|0;gc(c[f+16>>2]|0)|0;if(d|0){if(c[d+480>>2]|0){Xd(d,f);return 0}i=f;if((c[d+304>>2]|0)>>>0<=i>>>0?(c[d+308>>2]|0)>>>0>i>>>0:0){i=d+300|0;c[f>>2]=c[i>>2];c[i>>2]=f;return 0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);return 0}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);return 0}return 0}function Hs(f,h,i,j,k){f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=Ra;Ra=Ra+16|0;w=y+4|0;t=y;x=c[f>>2]|0;c[w>>2]=0;v=x+40|0;c[v>>2]=(c[v>>2]|0)+1;v=f+16|0;l=c[v>>2]|0;if(l|0){o=f+12|0;if((c[o>>2]|0)>0){n=0;while(1){l=c[l+(n*24|0)+16>>2]|0;do if(l|0){m=c[l+16>>2]|0;if(m|0)ab[m&127](c[l+12>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{u=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);l=n+1|0;if((l|0)>=(c[o>>2]|0))break;n=l;l=c[v>>2]|0}l=c[v>>2]|0}do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{u=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[v>>2]=0}l=c[f+32>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{u=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);u=f+36|0;s=c[u>>2]|0;gw(f|0,0,248)|0;c[f>>2]=x;c[u>>2]=s;c[f+8>>2]=h;a:do if((h|0)!=1){l=Xs(x,1,0,0,w)|0;if(!((j|0)>0&(l|0)==0)){if(l|0)break}else{l=j*24|0;m=pb(l,0)|0;c[v>>2]=m;c[f+12>>2]=j;if(!m){l=7;break}gw(m|0,0,l|0)|0;r=f+84|0;s=x+28|0;gw(r|0,0,(c[s>>2]<<2)+4|0)|0;t=x+21|0;q=0;do{u=c[v>>2]|0;m=q<<1;o=a[i+m>>0]|0;h=u+(q*24|0)+4|0;c[h>>2]=o<<24>>24;c[u+(q*24|0)>>2]=(a[i+(m|1)>>0]|0)+-48;m=c[k+(q<<2)>>2]|0;l=b[m+8>>1]|0;if(o<<24>>24>69){if((l&-15393)<<16>>16!=-32255){l=1;break a}if((a[m+11>>0]|0)!=112){l=1;break a}if(Bu(c[m>>2]|0,57762)|0){l=1;break a}l=c[m+16>>2]|0;if(!l){l=1;break a}o=pb((c[l>>2]|0)+80|0,0)|0;if(!o){l=7;break a}m=o;n=m+80|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(n|0));ew(o+80|0,l|0,c[l>>2]|0)|0;c[o>>2]=c[o+96>>2];c[o+4>>2]=c[o+100>>2];c[o+8>>2]=o+112;c[o+72>>2]=c[o+104>>2];l=c[o+84>>2]|0;if(!l){c[h>>2]=71;c[u+(q*24|0)+8>>2]=c[o+88>>2]}else c[u+(q*24|0)+8>>2]=l;c[u+(q*24|0)+16>>2]=o;c[o+28>>2]=d[t>>0];c[o+24>>2]=r;c[o+36>>2]=(c[s>>2]|0)+1}else{l=l&65535;do if(!(l&8)){if(l&4|0){h=m;p=+((c[h>>2]|0)>>>0)+4294967296.0*+(c[h+4>>2]|0);break}if(!(l&18))p=0.0;else p=+Kg(a[m+10>>0]|0,c[m+12>>2]|0,c[m+16>>2]|0)}else p=+g[m>>3];while(0);g[u+(q*24|0)+8>>3]=p}q=q+1|0}while((q|0)<(j|0))}l=Ws(f,0.0,(c[x+28>>2]|0)+1&255)|0;if(!l){x=7;Ra=y;return x|0}else{k=l+8|0;c[k>>2]=1;c[k+4>>2]=0;a[l+18>>0]=0;a[l+17>>0]=1;c[f+64>>2]=c[w>>2];c[w>>2]=0;l=Ys(f)|0;break}}else{l=c[k>>2]|0;m=e[l+8>>1]|0;do if(!(m&4)){if(m&8|0){s=Mg(+g[l>>3])|0;r=L()|0;break}if(!(m&18)){r=0;s=0}else{s=Ng(a[l+10>>0]|0,c[l+12>>2]|0,c[l+16>>2]|0)|0;r=L()|0}}else{s=l;r=c[s+4>>2]|0;s=c[s>>2]|0}while(0);c[t>>2]=0;q=x+88|0;l=c[q>>2]|0;do if(!(Vc(l,1)|0)){l=c[l+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){k=l;c[k>>2]=s;c[k+4>>2]=r;b[m>>1]=4;break}else{Pg(l,s,r);break}}while(0);k=(Gc(c[q>>2]|0)|0)==100;n=c[q>>2]|0;do if(k){o=Oc(n,0)|0;h=L()|0;l=Xs(x,o,h,0,t)|0;m=c[q>>2]|0;if(m){n=c[m>>2]|0;k=m+136|0;j=c[k+4>>2]|0;if((j|0)>0|(j|0)==0&(c[k>>2]|0)>>>0>0)hc(n,m);k=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;j=m+64|0;c[j>>2]=0;c[j+4>>2]=0;if((k|0)==3082|(a[n+81>>0]|0)!=0){og(n);n=h;q=45}else{n=h;q=45}}else{n=h;q=45}}else if(n){l=c[n>>2]|0;k=n+136|0;j=c[k+4>>2]|0;if((j|0)>0|(j|0)==0&(c[k>>2]|0)>>>0>0)hc(l,n);m=kc(n)|0;c[n+20>>2]=770837923;c[n+36>>2]=-1;c[n+40>>2]=0;a[n+146>>0]=2;c[n+44>>2]=0;c[n+32>>2]=1;a[n+147>>0]=-1;c[n+48>>2]=0;k=n+64|0;c[k>>2]=0;c[k+4>>2]=0;if((m|0)==3082|(a[l+81>>0]|0)!=0){og(l);l=7;q=51;break}else{l=c[l+68>>2]&m;o=0;n=0;q=45;break}}else{l=0;o=0;n=0;q=45}while(0);if((q|0)==45){m=c[t>>2]|0;if((l|0)==0&(m|0)!=0){h=Ws(f,0.0,0)|0;c[f+64>>2]=m;l=h+8|0;c[l>>2]=o;c[l+4>>2]=n;a[h+17>>0]=1;l=c[m+24>>2]|0;n=d[l+2>>0]<<8|d[l+3>>0];b:do if(!n){l=267;m=0}else{o=d[x+23>>0]|0;m=0;while(1){f=l+((G(m,o)|0)+4)|0;t=cw(d[f>>0]|0,0,56)|0;k=L()|0;z=cw(d[f+1>>0]|0,0,48)|0;k=L()|0|k;u=cw(d[f+2>>0]|0,0,40)|0;k=k|(L()|0);k=k|d[f+3>>0];v=cw(d[f+4>>0]|0,0,24)|0;k=k|(L()|0);i=cw(d[f+5>>0]|0,0,16)|0;k=k|(L()|0);j=cw(d[f+6>>0]|0,0,8)|0;k=k|(L()|0);f=Sv(z|t|u|v|i|j|0,k|0,d[f+7>>0]|0,0)|0;if((f|0)==(s|0)&(L()|0)==(r|0)){l=0;break b}m=m+1|0;if(m>>>0>=n>>>0){l=267;m=0;break}}}while(0);a[h+18>>0]=m}else q=51}if((q|0)==51)a[f+4>>0]=1}while(0);Us(x,c[w>>2]|0)|0;Ts(x);z=l;Ra=y;return z|0}function Is(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+6|0;if(!(a[d>>0]|0)){Zs(b);b=Ys(b)|0;return b|0}a[d>>0]=0;d=c[b+36>>2]|0;if(!d){Zs(b);b=Ys(b)|0;return b|0}e=c[d>>2]|0;f=d+136|0;g=c[f+4>>2]|0;if((g|0)>0|(g|0)==0&(c[f>>2]|0)>>>0>0)hc(e,d);g=kc(d)|0;c[d+20>>2]=770837923;c[d+36>>2]=-1;c[d+40>>2]=0;a[d+146>>0]=2;c[d+44>>2]=0;c[d+32>>2]=1;a[d+147>>0]=-1;c[d+48>>2]=0;f=d+64|0;c[f>>2]=0;c[f+4>>2]=0;if(!((g|0)==3082|(a[e+81>>0]|0)!=0)){Zs(b);g=Ys(b)|0;return g|0}og(e);Zs(b);g=Ys(b)|0;return g|0}function Js(a){a=a|0;return d[a+4>>0]|0|0}function Ks(i,j,k){i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;u=Ra;Ra=Ra+16|0;p=u+8|0;q=u;t=c[i>>2]|0;l=a[i+5>>0]|0;if(!(l<<24>>24))if(!(c[i+24>>2]|0))s=0;else s=c[i+32>>2]|0;else s=i+40|0;l=1-(l&255)|0;n=i+64+(l<<2)|0;m=c[n>>2]|0;if(!m){if(!l)l=i+48|0;else l=(c[i+32>>2]|0)+8|0;l=Xs(t,c[l>>2]|0,c[l+4>>2]|0,0,n)|0;if(!l)m=c[n>>2]|0;else{j=l;Ra=u;return j|0}}if(!s){j=0;Ra=u;return j|0}if(!k){n=(c[m+24>>2]|0)+((G(d[t+23>>0]|0,d[s+18>>0]|0)|0)+4)|0;s=cw(d[n>>0]|0,0,56)|0;i=L()|0;r=cw(d[n+1>>0]|0,0,48)|0;i=L()|0|i;t=cw(d[n+2>>0]|0,0,40)|0;i=i|(L()|0);i=i|d[n+3>>0];k=cw(d[n+4>>0]|0,0,24)|0;i=i|(L()|0);m=cw(d[n+5>>0]|0,0,16)|0;i=i|(L()|0);l=cw(d[n+6>>0]|0,0,8)|0;i=i|(L()|0);n=Sv(r|s|t|k|m|l|0,i|0,d[n+7>>0]|0,0)|0;i=L()|0;l=c[j>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){j=l;c[j>>2]=n;c[j+4>>2]=i;b[m>>1]=4;j=0;Ra=u;return j|0}else{Pg(l,n,i);j=0;Ra=u;return j|0}}r=t+21|0;l=d[r>>0]|0;if((l|0)>=(k|0)){i=(c[m+24>>2]|0)+((k<<2)+8+(G(d[t+23>>0]|0,d[s+18>>0]|0)|0))|0;i=d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0];if(a[t+22>>0]|0){l=c[j>>2]|0;m=((i|0)<0)<<31>>31;n=l+8|0;if(!(b[n>>1]&9216)){j=l;c[j>>2]=i;c[j+4>>2]=m;b[n>>1]=4;j=0;Ra=u;return j|0}else{Pg(l,i,m);j=0;Ra=u;return j|0}}o=(c[h>>2]=i,+f[h>>2]);l=c[j>>2]|0;m=l+8|0;if(!(b[m>>1]&9216))b[m>>1]=1;else Dg(l);g[p>>3]=o;g[q>>3]=+g[p>>3];if(!(+g[p>>3]==+g[q>>3])){j=0;Ra=u;return j|0}g[l>>3]=o;b[m>>1]=8;j=0;Ra=u;return j|0}p=i+6|0;q=i+36|0;do if(!(a[p>>0]|0)){l=c[q>>2]|0;do if(!l){l=qd(c[t+12>>2]|0,c[t+64>>2]|0,-1,128,0,q,0)|0;if(!l){l=c[q>>2]|0;break}else{j=l;Ra=u;return j|0}}while(0);n=(c[m+24>>2]|0)+((G(d[t+23>>0]|0,d[s+18>>0]|0)|0)+4)|0;w=cw(d[n>>0]|0,0,56)|0;i=L()|0;x=cw(d[n+1>>0]|0,0,48)|0;i=L()|0|i;v=cw(d[n+2>>0]|0,0,40)|0;i=i|(L()|0);i=i|d[n+3>>0];m=cw(d[n+4>>0]|0,0,24)|0;i=i|(L()|0);s=cw(d[n+5>>0]|0,0,16)|0;i=i|(L()|0);t=cw(d[n+6>>0]|0,0,8)|0;i=i|(L()|0);n=Sv(x|w|v|m|s|t|0,i|0,d[n+7>>0]|0,0)|0;i=L()|0;do if(!(Vc(l,1)|0)){l=c[l+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){x=l;c[x>>2]=n;c[x+4>>2]=i;b[m>>1]=4;break}else{Pg(l,n,i);break}}while(0);n=Gc(c[q>>2]|0)|0;if((n|0)==100){a[p>>0]=1;l=d[r>>0]|0;break}l=c[q>>2]|0;if(!l){x=(n|0)==101;x=x?0:n;Ra=u;return x|0}m=c[l>>2]|0;x=l+136|0;w=c[x+4>>2]|0;if((w|0)>0|(w|0)==0&(c[x>>2]|0)>>>0>0)hc(m,l);x=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;w=l+64|0;c[w>>2]=0;c[w+4>>2]=0;if(!((x|0)==3082|(a[m+81>>0]|0)!=0)){x=(n|0)==101;x=x?0:n;Ra=u;return x|0}og(m);x=(n|0)==101;x=x?0:n;Ra=u;return x|0}while(0);p=c[q>>2]|0;l=k-l+1|0;n=(p|0)==0;do if(n)i=29576;else{m=c[p+120>>2]|0;if(m|0?l>>>0<(e[p+144>>1]|0)>>>0:0){i=m+(l*40|0)|0;break}i=c[p>>2]|0;c[i+64>>2]=25;Ne(i,25);i=29576}while(0);l=i+8|0;m=e[l>>1]|0;if(m&2048|0)b[l>>1]=m&59391|4096;if(!n){m=c[p>>2]|0;n=p+40|0;l=c[n>>2]|0;if((l|0)==3082|(a[m+81>>0]|0)!=0){og(m);l=7}else l=c[m+68>>2]&l;c[n>>2]=l}Dc(j,i);x=0;Ra=u;return x|0}function Ls(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=a[b+5>>0]|0;if(!(f<<24>>24))if(!(c[b+24>>2]|0))i=0;else i=c[b+32>>2]|0;else i=b+40|0;g=1-(f&255)|0;h=b+64+(g<<2)|0;f=c[h>>2]|0;if(!f){if(!g)f=b+48|0;else f=(c[b+32>>2]|0)+8|0;g=f;g=Xs(c[b>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,h)|0;f=c[h>>2]|0}else g=0;if(!((i|0)!=0&(g|0)==0))return g|0;h=(c[f+24>>2]|0)+((G(d[(c[b>>2]|0)+23>>0]|0,d[i+18>>0]|0)|0)+4)|0;l=cw(d[h>>0]|0|0,0,56)|0;b=L()|0;m=cw(d[h+1>>0]|0|0,0,48)|0;b=L()|0|b;k=cw(d[h+2>>0]|0|0,0,40)|0;b=b|(L()|0);b=b|(d[h+3>>0]|0);j=cw(d[h+4>>0]|0|0,0,24)|0;b=b|(L()|0);f=cw(d[h+5>>0]|0|0,0,16)|0;b=b|(L()|0);i=cw(d[h+6>>0]|0|0,0,8)|0;b=b|(L()|0);h=Sv(m|l|k|j|f|i|0,b|0,d[h+7>>0]|0|0,0)|0;b=L()|0;i=e;c[i>>2]=h;c[i+4>>2]=b;return g|0}function Ms(h,i,j,k){h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=Ra;Ra=Ra+64|0;u=x;v=x+48|0;if(c[h+60>>2]|0){h=518;Ra=x;return h|0}t=h+40|0;c[t>>2]=(c[t>>2]|0)+1;t=u;c[t>>2]=0;c[t+4>>2]=0;t=(i|0)>1;a:do if(t){p=i+-4|0;i=d[h+21>>0]|0;p=(p|0)>(i|0)?i:p;i=(p|0)>0;b:do if(!(a[h+22>>0]|0)){if(i){m=0;while(1){i=c[j+(m+3<<2)>>2]|0;l=e[i+8>>1]|0;do if(!(l&8)){if(l&4|0){s=i;o=+((c[s>>2]|0)>>>0)+4294967296.0*+(c[s+4>>2]|0);break}if(!(l&18))o=0.0;else o=+Kg(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)}else o=+g[i>>3];while(0);r=o;r=o>2]=r;i=c[j+(m+4<<2)>>2]|0;l=e[i+8>>1]|0;do if(!(l&8)){if(l&4|0){s=i;o=+((c[s>>2]|0)>>>0)+4294967296.0*+(c[s+4>>2]|0);break}if(!(l&18))o=0.0;else o=+Kg(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)}else o=+g[i>>3];while(0);y=o;o=o>y?o*(o<0.0?.9999998807907104:1.0000001192092896):y;i=m|1;f[u+8+(i<<2)>>2]=o;m=m+2|0;if(r>o)break;if((m|0)>=(p|0))break b}i=_s(h,i)|0;break a}}else if(i){n=0;while(1){i=c[j+(n+3<<2)>>2]|0;l=e[i+8>>1]|0;do if(!(l&4)){if(l&8|0){m=Mg(+g[i>>3])|0;L()|0;break}if(!(l&18))m=0;else{m=Ng(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)|0;L()|0}}else m=c[i>>2]|0;while(0);c[u+8+(n<<2)>>2]=m;i=c[j+(n+4<<2)>>2]|0;l=e[i+8>>1]|0;do if(!(l&4)){if(l&8|0){i=Mg(+g[i>>3])|0;L()|0;break}if(!(l&18))i=0;else{i=Ng(a[i+10>>0]|0,c[i+12>>2]|0,c[i+16>>2]|0)|0;L()|0}}else i=c[i>>2]|0;while(0);l=n|1;c[u+8+(l<<2)>>2]=i;n=n+2|0;if((m|0)>(i|0))break;if((n|0)>=(p|0))break b}i=_s(h,l)|0;break a}while(0);l=c[j+8>>2]|0;i=b[l+8>>1]|0;if(!(-1431655766>>>(i&31)&1)){i=i&65535;do if(!(i&4)){if(i&8|0){p=Mg(+g[l>>3])|0;s=L()|0;break}if(!(i&18)){p=0;s=0}else{p=Ng(a[l+10>>0]|0,c[l+12>>2]|0,c[l+16>>2]|0)|0;s=L()|0}}else{s=l;p=c[s>>2]|0;s=c[s+4>>2]|0}while(0);l=u;c[l>>2]=p;c[l+4>>2]=s;l=c[j>>2]|0;i=b[l+8>>1]|0;if(!(-1431655766>>>(i&31)&1)){i=i&65535;do if(!(i&4)){if(i&8|0){i=Mg(+g[l>>3])|0;l=L()|0;break}if(!(i&18)){i=0;l=0}else{i=Ng(a[l+10>>0]|0,c[l+12>>2]|0,c[l+16>>2]|0)|0;l=L()|0}}else{i=c[l>>2]|0;l=c[l+4>>2]|0}while(0);if((i|0)==(p|0)&(l|0)==(s|0)){q=1;i=0;n=s;w=67;break}}m=h+88|0;i=c[m>>2]|0;do if(!(Vc(i,1)|0)){i=c[i+100>>2]|0;l=i+8|0;if(!(b[l>>1]&9216)){q=i;c[q>>2]=p;c[q+4>>2]=s;b[l>>1]=4;break}else{Pg(i,p,s);break}}while(0);n=Gc(c[m>>2]|0)|0;i=c[m>>2]|0;do if(i){l=c[i>>2]|0;q=i+136|0;m=c[q+4>>2]|0;if((m|0)>0|(m|0)==0&(c[q>>2]|0)>>>0>0)hc(l,i);m=kc(i)|0;c[i+20>>2]=770837923;c[i+36>>2]=-1;c[i+40>>2]=0;a[i+146>>0]=2;c[i+44>>2]=0;c[i+32>>2]=1;a[i+147>>0]=-1;c[i+48>>2]=0;q=i+64|0;c[q>>2]=0;c[q+4>>2]=0;if((m|0)==3082|(a[l+81>>0]|0)!=0){og(l);i=7;break}else{i=c[l+68>>2]&m;break}}else i=0;while(0);if((n|0)==100)if((a[(c[h+12>>2]|0)+86>>0]|0)==5){q=1;i=$s(h,p,s)|0;n=s;w=67;break}else{i=_s(h,0)|0;break}else{q=1;n=s;w=67}}else{q=0;i=0;p=0;n=0;w=67}}else{q=0;i=0;p=0;n=0;w=67}while(0);if((w|0)==67){m=c[j>>2]|0;l=b[m+8>>1]|0;if(!(-1431655766>>>(l&31)&1)){i=l&65535;do if(!(i&4)){if(i&8|0){i=Mg(+g[m>>3])|0;l=L()|0;break}if(!(i&18)){i=0;l=0}else{i=Ng(a[m+10>>0]|0,c[m+12>>2]|0,c[m+16>>2]|0)|0;l=L()|0}}else{l=m;i=c[l>>2]|0;l=c[l+4>>2]|0}while(0);i=$s(h,i,l)|0}if(t&(i|0)==0){c[v>>2]=0;if(!q){i=h+92|0;Vc(c[i>>2]|0,1)|0;Vc(c[i>>2]|0,2)|0;Gc(c[i>>2]|0)|0;i=c[i>>2]|0;do if(i){l=c[i>>2]|0;t=i+136|0;s=c[t+4>>2]|0;if((s|0)>0|(s|0)==0&(c[t>>2]|0)>>>0>0)hc(l,i);m=kc(i)|0;c[i+20>>2]=770837923;c[i+36>>2]=-1;c[i+40>>2]=0;a[i+146>>0]=2;c[i+44>>2]=0;c[i+32>>2]=1;a[i+147>>0]=-1;c[i+48>>2]=0;t=i+64|0;c[t>>2]=0;c[t+4>>2]=0;if((m|0)==3082|(a[l+81>>0]|0)!=0){og(l);i=7;break}else{i=c[l+68>>2]&m;break}}else i=0;while(0);s=(c[h+12>>2]|0)+40|0;q=c[s>>2]|0;s=c[s+4>>2]|0;t=u;c[t>>2]=q;c[t+4>>2]=s;t=k;c[t>>2]=q;c[t+4>>2]=s;if(!i)w=85}else{w=k;c[w>>2]=p;c[w+4>>2]=n;w=85}do if((w|0)==85){i=at(h,u,0,v)|0;if(!i){c[h+72>>2]=-1;w=c[v>>2]|0;i=bt(h,w,u,0)|0;w=Us(h,w)|0;i=(i|0)==0?w:i;if(!i){p=h+25|0;if(a[p>>0]|0){q=c[h+112>>2]|0;l=k;i=c[l>>2]|0;l=c[l+4>>2]|0;do if(!(Vc(q,1)|0)){m=c[q+100>>2]|0;n=m+8|0;if(!(b[n>>1]&9216)){k=m;c[k>>2]=i;c[k+4>>2]=l;b[n>>1]=4;break}else{Pg(m,i,l);break}}while(0);if(a[p>>0]|0){l=h+21|0;i=0;do{Yc(q,i+2|0,c[j+(i+3+(d[l>>0]|0)<<2)>>2]|0)|0;i=i+1|0}while(i>>>0<(d[p>>0]|0)>>>0)}Gc(q)|0;if(q){i=c[q>>2]|0;j=q+136|0;k=c[j+4>>2]|0;if((k|0)>0|(k|0)==0&(c[j>>2]|0)>>>0>0)hc(i,q);l=kc(q)|0;c[q+20>>2]=770837923;c[q+36>>2]=-1;c[q+40>>2]=0;a[q+146>>0]=2;c[q+44>>2]=0;c[q+32>>2]=1;a[q+147>>0]=-1;c[q+48>>2]=0;j=q+64|0;c[j>>2]=0;c[j+4>>2]=0;if((l|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7;break}else{i=c[i+68>>2]&l;break}}else i=0}else i=0}}}while(0)}}Ts(h);h=i;Ra=x;return h|0}function Ns(b){b=b|0;b=b+24|0;a[b>>0]=(a[b>>0]|0)+1<<24>>24;return 0}function Os(b){b=b|0;var d=0,e=0;a[b+24>>0]=0;d=b+76|0;e=c[d>>2]|0;if(!e)return 0;if(c[b+56>>2]|0)return 0;c[d>>2]=0;b=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(b|0){if(c[b+480>>2]|0){Xd(b,e);return 0}d=e;if((c[b+304>>2]|0)>>>0<=d>>>0?(c[b+308>>2]|0)>>>0>d>>>0:0){d=b+300|0;c[e>>2]=c[d>>2];c[d>>2]=e;return 0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return 0}else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return 0}return 0}function Ps(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=Ra;Ra=Ra+48|0;f=g;h=c[b+32>>2]|0;e=c[b+36>>2]|0;c[f>>2]=h;c[f+4>>2]=e;c[f+8>>2]=d;c[f+12>>2]=h;c[f+16>>2]=e;c[f+20>>2]=d;c[f+24>>2]=h;c[f+28>>2]=e;c[f+32>>2]=d;f=Bb(57845,f)|0;if(!f){h=7;Ra=g;return h|0}d=b+76|0;e=c[d>>2]|0;do if((e|0?(a[b+24>>0]|0)==0:0)?(c[b+56>>2]|0)==0:0){c[d>>2]=0;d=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);break}h=e;if((c[d+304>>2]|0)>>>0<=h>>>0?(c[d+308>>2]|0)>>>0>h>>>0:0){h=d+300|0;c[e>>2]=c[h>>2];c[h>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);d=nd(c[b+12>>2]|0,f,0,0,0)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](f);h=d;Ra=g;return h|0}else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);h=d;Ra=g;return h|0}return 0}function Qs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+24|0;f=a[e>>0]|0;a[e>>0]=0;d=b+76|0;g=c[d>>2]|0;if(!g){a[e>>0]=f;return 0}if(c[b+56>>2]|0){a[e>>0]=f;return 0}c[d>>2]=0;d=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(d|0){if(c[d+480>>2]|0){Xd(d,g);a[e>>0]=f;return 0}b=g;if((c[d+304>>2]|0)>>>0<=b>>>0?(c[d+308>>2]|0)>>>0>b>>>0:0){b=d+300|0;c[g>>2]=c[b>>2];c[b>>2]=g;a[e>>0]=f;return 0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);a[e>>0]=f;return 0}else{b=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);a[e>>0]=f;return 0}return 0}function Rs(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0;if(!b){h=0;return h|0}h=a[b>>0]|0;g=d[208+(h&255)>>0]|0;c=g+-110|0;h=h<<24>>24==0;if(!(h|(c|0)!=0)){e=57990;f=b;do{f=f+1|0;e=e+1|0;i=a[f>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}c=g+-112|0;if(!(h|(c|0)!=0)){e=38138;f=b;do{f=f+1|0;e=e+1|0;i=a[f>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}c=g+-114|0;if(h|(c|0)!=0){i=c;i=(i|0)==0;i=i&1;return i|0}e=38132;do{b=b+1|0;e=e+1|0;i=a[b>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0));i=(c|0)==0;i=i&1;return i|0}function Ss(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=Ra;Ra=Ra+240|0;s=T+232|0;S=T+224|0;P=T+216|0;O=T+208|0;N=T+192|0;M=T+184|0;K=T+176|0;J=T+168|0;G=T+160|0;D=T+144|0;C=T+136|0;B=T+128|0;A=T+120|0;z=T+112|0;x=T+104|0;v=T+96|0;u=T+88|0;t=T+80|0;r=T+72|0;H=T+64|0;p=T+56|0;q=T+48|0;I=T;l=T+40|0;k=T+32|0;if((f|0)>103){c[k>>2]=56536;S=Bb(31408,k)|0;c[i>>2]=S;i=1;Ra=T;return i|0}c[l>>2]=1;vd(b,1,l)|0;w=g+4|0;l=Eu(c[w>>2]|0)|0;y=g+8|0;m=Eu(c[y>>2]|0)|0;k=l+506+m|0;R=pb(k,0)|0;if(!R){i=7;Ra=T;return i|0}gw(R|0,0,k|0)|0;c[R+40>>2]=1;c[R>>2]=30764;n=R+504|0;E=R+32|0;c[E>>2]=n;o=n+(l+1)|0;F=R+36|0;c[F>>2]=o;a[R+22>>0]=(e|0)!=0&1;ew(n|0,c[w>>2]|0,l|0)|0;ew(o|0,c[y>>2]|0,m|0)|0;o=zb(b)|0;c[I>>2]=c[g+12>>2];Eb(o,56609,I);a:do if((f|0)>4){l=R+25|0;m=R+21|0;k=4;while(1){e=c[g+(k<<2)>>2]|0;n=a[l>>0]|0;if((a[e>>0]|0)==43){a[l>>0]=n+1<<24>>24;c[q>>2]=e+1;Eb(o,56627,q)}else{if(n<<24>>24){m=1;break a}a[m>>0]=(a[m>>0]|0)+1<<24>>24;c[p>>2]=e;Eb(o,56627,p)}k=k+1|0;if((k|0)>=(f|0)){m=0;break}}}else m=0;while(0);Eb(o,56631,H);do if((o|0)!=0&(o|0)!=29632){k=o+4|0;l=c[k>>2]|0;if(((l|0)!=0?(a[l+(c[o+16>>2]|0)>>0]=0,(c[o+12>>2]|0)!=0):0)?(a[o+21>>0]&4)==0:0)e=$d(o)|0;else e=c[k>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](o);else{q=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o)}if(e){if(!m){k=td(b,e)|0;if(!k)k=0;else{l=pd(b)|0;Q=24}}else{k=1;l=56572;Q=24}if((Q|0)==24){c[r>>2]=l;r=Bb(31408,r)|0;c[i>>2]=r}if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{r=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}if(!k){k=a[R+21>>0]|0;r=(k&255)>>>1;a[R+20>>0]=r;if(r<<24>>24)if((k&255)<=10)if(!(k&1)){e=R+23|0;a[e>>0]=((k&255)<<2)+8;n=(j|0)==0;k=c[E>>2]|0;do if(n){l=c[F>>2]|0;c[u>>2]=k;c[u+4>>2]=l;l=Bb(56634,u)|0;m=R+16|0;if(!l){k=7;Q=48}else{c[u>>2]=0;k=qd(b,l,-1,128,0,u,0)|0;if(k|0){Q=48;break}k=c[u>>2]|0;if((Gc(k)|0)==100){u=Nc(k,0)|0;c[m>>2]=u}k=gc(k)|0;if(k|0){Q=48;break}if((c[m>>2]|0)>=448){k=0;break}c[v>>2]=c[F>>2];k=Bb(56691,v)|0;c[i>>2]=k;k=267}}else{c[t>>2]=k;l=Bb(54428,t)|0;if(!l){k=7;Q=48}else{c[t>>2]=0;k=qd(b,l,-1,128,0,t,0)|0;if(k|0){Q=48;break}k=c[t>>2]|0;if((Gc(k)|0)==100)m=(Nc(k,0)|0)+-64|0;else m=-64;k=gc(k)|0;if(k|0){Q=48;break}k=((d[e>>0]|0)*51|0)+4|0;c[R+16>>2]=(k|0)<(m|0)?k:m;k=0}}while(0);if((Q|0)==48){v=pd(b)|0;c[x>>2]=v;x=Bb(31408,x)|0;c[i>>2]=x;if(!l)break}if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{x=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}if(k|0)break;f=c[w>>2]|0;o=c[y>>2]|0;c[R+12>>2]=b;do if(!n){m=zb(b)|0;c[z>>2]=f;c[z+4>>2]=o;Eb(m,57135,z);l=R+25|0;if(a[l>>0]|0){k=0;do{c[A>>2]=k;Eb(m,57197,A);k=k+1|0}while(k>>>0<(d[l>>0]|0)>>>0)}c[B>>2]=f;c[B+4>>2]=o;Eb(m,57202,B);c[C>>2]=f;c[C+4>>2]=o;Eb(m,57266,C);C=c[R+16>>2]|0;c[D>>2]=f;c[D+4>>2]=o;c[D+8>>2]=C;Eb(m,57336,D);if(!((m|0)!=0&(m|0)!=29632)){k=7;Q=122;break}k=m+4|0;l=c[k>>2]|0;do if(!l)Q=62;else{a[l+(c[m+16>>2]|0)>>0]=0;if(!(c[m+12>>2]|0)){Q=62;break}if(a[m+21>>0]&4){Q=62;break}l=$d(m)|0}while(0);if((Q|0)==62)l=c[k>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{Q=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}if(!l){k=7;Q=122;break}k=nd(b,l,0,0,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{Q=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}if(k)Q=122;else Q=71}else Q=71;while(0);b:do if((Q|0)==71){c[I>>2]=R+80;c[I+4>>2]=R+84;c[I+8>>2]=R+88;c[I+12>>2]=R+92;c[I+16>>2]=R+96;c[I+20>>2]=R+100;c[I+24>>2]=R+104;c[I+28>>2]=R+108;k=Rd(b,c[E>>2]|0,35174,0,0,0,0,0,0)|0;do if(!k){e=c[F>>2]|0;c[G>>2]=c[E>>2];c[G+4>>2]=e;e=Bb(57611,G)|0;if(!e){k=7;Q=85;break}k=qd(b,e,-1,128,0,H,0)|0;c:do switch(k|0){case 0:{k=c[H>>2]|0;if((Gc(k)|0)==100){l=Oc(k,0)|0;m=L()|0}else{l=0;m=0}k=gc(k)|0;if(k|0)break c;if((l|0)==0&(m|0)==0){Q=79;break c}H=(m|0)>0|(m|0)==0&l>>>0>100;k=R+48|0;c[k>>2]=H?l:100;c[k+4>>2]=H?m:0;k=0;break}case 7:break;default:Q=79}while(0);if((Q|0)==79){k=R+48|0;c[k>>2]=1048576;c[k+4>>2]=0;k=0}if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{Q=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}if(!k)Q=88;else Q=87}else{Q=R+48|0;c[Q>>2]=1048576;c[Q+4>>2]=0;if((k|0)!=1){Q=85;break}Q=88}while(0);d:do if((Q|0)==85)Q=87;else if((Q|0)==88){e=R+25|0;m=0;while(1){if((m|0)==3?(a[e>>0]|0)!=0:0)k=57385;else k=c[26432+(m<<2)>>2]|0;c[J>>2]=f;c[J+4>>2]=o;l=Bb(k,J)|0;if(!l){k=7;g=e;break d}k=qd(b,l,-1,133,0,c[I+(m<<2)>>2]|0,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{H=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}m=m+1|0;if(!(m>>>0<8&(k|0)==0)){g=e;break}}}while(0);if((Q|0)==87)g=R+25|0;do if(a[g>>0]|0){c[K>>2]=f;c[K+4>>2]=o;K=Bb(57493,K)|0;c[R+64>>2]=K;if(!K){k=7;Q=122;break b}p=zb(b)|0;c[M>>2]=f;c[M+4>>2]=o;Eb(p,57538,M);if(a[g>>0]|0){e=R+26|0;n=p+16|0;o=p+8|0;f=p+4|0;m=0;do{do if(m|0){k=c[n>>2]|0;l=k+1|0;if(l>>>0<(c[o>>2]|0)>>>0){c[n>>2]=l;a[(c[f>>2]|0)+k>>0]=44;break}else{wb(p,41685,1);break}}while(0);k=m+2|0;if(m>>>0<(d[e>>0]|0)>>>0){c[N>>2]=m;c[N+4>>2]=k;c[N+8>>2]=m;Eb(p,57565,N)}else{c[O>>2]=m;c[O+4>>2]=k;Eb(p,57587,O)}m=m+1|0}while(m>>>0<(d[g>>0]|0)>>>0)}Eb(p,57595,P);if(!((p|0)!=0&(p|0)!=29632)){k=7;Q=122;break b}k=p+4|0;l=c[k>>2]|0;do if(!l)Q=114;else{a[l+(c[p+16>>2]|0)>>0]=0;if(!(c[p+12>>2]|0)){Q=114;break}if(a[p+21>>0]&4){Q=114;break}l=$d(p)|0}while(0);if((Q|0)==114)l=c[k>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](p);else{P=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-P;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p)}if(!l){k=7;Q=122;break b}k=qd(b,l,-1,133,0,R+112|0,0)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{P=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-P;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(k|0)break;c[h>>2]=R;i=0;Ra=T;return i|0}while(0);b=pd(b)|0;c[S>>2]=b;S=Bb(31408,S)|0;c[i>>2]=S;break}else k=1;else k=3;else k=2;c[s>>2]=c[26400+(k<<2)>>2];k=Bb(31408,s)|0;c[i>>2]=k;k=1}}else k=7}else k=7;while(0);Ts(R);i=k;Ra=T;return i|0}function Ts(b){b=b|0;var d=0,e=0,f=0;d=b+40|0;e=(c[d>>2]|0)+-1|0;c[d>>2]=e;if(e|0)return;a[b+24>>0]=0;d=b+76|0;e=c[d>>2]|0;do if(e|0?(c[b+56>>2]|0)==0:0){c[d>>2]=0;d=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);break}f=e;if((c[d+304>>2]|0)>>>0<=f>>>0?(c[d+308>>2]|0)>>>0>f>>>0:0){f=d+300|0;c[e>>2]=c[f>>2];c[f>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{f=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);gc(c[b+80>>2]|0)|0;gc(c[b+84>>2]|0)|0;gc(c[b+88>>2]|0)|0;gc(c[b+92>>2]|0)|0;gc(c[b+96>>2]|0)|0;gc(c[b+100>>2]|0)|0;gc(c[b+104>>2]|0)|0;gc(c[b+108>>2]|0)|0;gc(c[b+112>>2]|0)|0;d=c[b+64>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{f=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{f=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function Us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!b){b=0;return b|0}f=b+16|0;g=(c[f>>2]|0)+-1|0;c[f>>2]=g;if(g|0){b=0;return b|0}f=a+60|0;c[f>>2]=(c[f>>2]|0)+-1;f=b+8|0;g=f;if((c[g>>2]|0)==1&(c[g+4>>2]|0)==0)c[a+28>>2]=-1;d=c[b>>2]|0;if((d|0)!=0?(e=Us(a,d)|0,(e|0)!=0):0)g=e;else g=Vs(a,b)|0;d=c[f>>2]|0;if(!((d|0)==0&(c[f+4>>2]|0)==0)){d=a+116+(((d>>>0)%97|0)<<2)|0;while(1){e=c[d>>2]|0;if((e|0)==(b|0))break;else d=e+28|0}a=b+28|0;c[d>>2]=c[a>>2];c[a>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);b=g;return b|0}else{a=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);b=g;return b|0}return 0}function Vs(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;j=e+20|0;if(!(c[j>>2]|0)){n=0;return n|0}m=c[d+80>>2]|0;n=e+8|0;g=n;f=c[g>>2]|0;g=c[g+4>>2]|0;do if(((f|0)!=0|(g|0)!=0)&(Vc(m,1)|0)==0){h=c[m+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){c[h>>2]=f;c[h+4>>2]=g;b[i>>1]=4;break}else{Pg(h,f,g);break}}while(0);f=c[e+24>>2]|0;g=c[d+16>>2]|0;if((f|0)==0|(Vc(m,2)|0)!=0){Gc(m)|0;c[j>>2]=0;if(!m)f=0;else l=12}else{f=yc((c[m+100>>2]|0)+40|0,f,g,0,0)|0;if(f|0?(k=c[m>>2]|0,c[k+64>>2]=f,Ne(k,f),k=c[m>>2]|0,(f|0)==3082|(a[k+81>>0]|0)!=0):0)og(k);Gc(m)|0;c[j>>2]=0;l=12}do if((l|0)==12){f=c[m>>2]|0;l=m+136|0;k=c[l+4>>2]|0;if((k|0)>0|(k|0)==0&(c[l>>2]|0)>>>0>0)hc(f,m);g=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;l=m+64|0;c[l>>2]=0;c[l+4>>2]=0;if((g|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=7;break}else{f=c[f+68>>2]&g;break}}while(0);Vc(m,2)|0;m=n;if(!((f|0)==0&((c[m>>2]|0)==0&(c[m+4>>2]|0)==0))){n=f;return n|0}l=(c[d+12>>2]|0)+40|0;m=c[l>>2]|0;l=c[l+4>>2]|0;c[n>>2]=m;c[n+4>>2]=l;n=d+116+(((m>>>0)%97|0)<<2)|0;c[e+28>>2]=c[n>>2];c[n>>2]=e;n=0;return n|0}function Ws(b,e,f){b=b|0;e=+e;f=f|0;var h=0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=Ra;Ra=Ra+32|0;t=u;s=b+5|0;i=(a[s>>0]|0)==0;do if(i)if(c[b+24>>2]|0){h=c[b+32>>2]|0;q=b+84+((f&255)<<2)|0;c[q>>2]=(c[q>>2]|0)+1;if(!h)break;else{r=6;break}}else{t=b+84+((f&255)<<2)|0;c[t>>2]=(c[t>>2]|0)+1;break}else{h=b+84+((f&255)<<2)|0;c[h>>2]=(c[h>>2]|0)+1;h=b+40|0;r=6}while(0);if((r|0)==6){k=+g[h>>3];do if(!(k>e)){if(k==e?(d[h+16>>0]|0)>(f&255):0)break;m=b+24|0;i=c[m>>2]|0;l=b+20|0;h=c[l>>2]|0;do if((i|0)>=(h|0)){i=(h<<1)+8|0;j=b+32|0;h=c[j>>2]|0;if(mb()|0){b=0;Ra=u;return b|0}h=sb(h,i*24|0,0)|0;if(!h){b=0;Ra=u;return b|0}else{c[j>>2]=h;c[l>>2]=i;p=j;i=c[m>>2]|0;j=h;break}}else{j=b+32|0;p=j;j=c[j>>2]|0}while(0);c[m>>2]=i+1;h=j+(i*24|0)|0;g[h>>3]=e;a[j+(i*24|0)+16>>0]=f;if((i|0)<=0){b=h;Ra=u;return b|0}o=b+32|0;a:while(1){l=(i+-1|0)/2|0;m=j+(l*24|0)|0;k=+g[m>>3];if(!(ek){r=49;break}if((d[h+16>>0]|0)>=(d[j+(l*24|0)+16>>0]|0)){r=49;break}}h=j+(l*24|0)|0;c[t>>2]=c[h>>2];c[t+4>>2]=c[h+4>>2];c[t+8>>2]=c[h+8>>2];c[t+12>>2]=c[h+12>>2];c[t+16>>2]=c[h+16>>2];c[t+20>>2]=c[h+20>>2];j=j+(i*24|0)|0;c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[h+16>>2]=c[j+16>>2];c[h+20>>2]=c[j+20>>2];h=(c[o>>2]|0)+(i*24|0)|0;c[h>>2]=c[t>>2];c[h+4>>2]=c[t+4>>2];c[h+8>>2]=c[t+8>>2];c[h+12>>2]=c[t+12>>2];c[h+16>>2]=c[t+16>>2];c[h+20>>2]=c[t+20>>2];h=l+1|0;j=i+1|0;do if((i|0)<9)if((i|0)<=3){r=b+64+(h<<2)|0;s=c[r>>2]|0;f=b+64+(j<<2)|0;c[r>>2]=c[f>>2];c[f>>2]=s;if((i|0)==3)break;else{h=m;r=49;break a}}else{f=b+64+(h<<2)|0;Us(c[b>>2]|0,c[f>>2]|0)|0;c[f>>2]=0;break}while(0);i=l;h=m;j=c[p>>2]|0;e=+g[m>>3]}if((r|0)==49){Ra=u;return h|0}}while(0);if(!i){m=b+24|0;j=c[m>>2]|0;l=b+20|0;h=c[l>>2]|0;do if((j|0)>=(h|0)){i=(h<<1)+8|0;j=b+32|0;h=c[j>>2]|0;if(mb()|0){b=0;Ra=u;return b|0}h=sb(h,i*24|0,0)|0;if(!h){b=0;Ra=u;return b|0}else{c[j>>2]=h;c[l>>2]=i;q=j;i=h;j=c[m>>2]|0;l=h;break}}else{q=b+32|0;l=c[q>>2]|0;i=l}while(0);c[m>>2]=j+1;h=l+(j*24|0)|0;g[h>>3]=e;a[l+(j*24|0)+16>>0]=f;b:do if((j|0)>0){p=b+32|0;n=e;while(1){m=(j+-1|0)/2|0;o=l+(m*24|0)|0;k=+g[o>>3];if(!(nk){r=26;break b}if((d[h+16>>0]|0)>=(d[l+(m*24|0)+16>>0]|0))break b}h=l+(m*24|0)|0;c[t>>2]=c[h>>2];c[t+4>>2]=c[h+4>>2];c[t+8>>2]=c[h+8>>2];c[t+12>>2]=c[h+12>>2];c[t+16>>2]=c[h+16>>2];c[t+20>>2]=c[h+20>>2];i=l+(j*24|0)|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];c[h+16>>2]=c[i+16>>2];c[h+20>>2]=c[i+20>>2];h=(c[p>>2]|0)+(j*24|0)|0;c[h>>2]=c[t>>2];c[h+4>>2]=c[t+4>>2];c[h+8>>2]=c[t+8>>2];c[h+12>>2]=c[t+12>>2];c[h+16>>2]=c[t+16>>2];c[h+20>>2]=c[t+20>>2];h=m+1|0;i=j+1|0;do if((j|0)<9)if((j|0)<=3){v=b+64+(h<<2)|0;h=c[v>>2]|0;l=b+64+(i<<2)|0;c[v>>2]=c[l>>2];c[l>>2]=h;if((j|0)==3)break;else{h=o;r=26;break b}}else{v=b+64+(h<<2)|0;Us(c[b>>2]|0,c[v>>2]|0)|0;c[v>>2]=0;break}while(0);l=c[q>>2]|0;j=m;h=o;i=l;n=+g[o>>3]}}else r=26;while(0);do if((r|0)==26)if(!h){v=0;Ra=u;return v|0}else{i=c[b+32>>2]|0;break}while(0);i=h-i|0;if((i|0)<96){c[b+64+(((i|0)/24|0)+1<<2)>>2]=c[b+64>>2];i=b+64|0}else{i=b+64|0;Us(c[b>>2]|0,c[i>>2]|0)|0}c[i>>2]=0;v=b+40|0;c[h>>2]=c[v>>2];c[h+4>>2]=c[v+4>>2];c[h+8>>2]=c[v+8>>2];c[h+12>>2]=c[v+12>>2];c[h+16>>2]=c[v+16>>2];c[h+20>>2]=c[v+20>>2]}}v=b+40|0;g[v>>3]=e;a[b+56>>0]=f;a[s>>0]=1;Ra=u;return v|0}function Xs(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+16|0;m=p;i=c[b+116+(((e>>>0)%97|0)<<2)>>2]|0;a:do if(i|0){j=i;while(1){o=j+8|0;if((c[o>>2]|0)==(e|0)?(c[o+4>>2]|0)==(f|0):0)break;i=c[j+28>>2]|0;if(!i)break a;else j=i}do if(g|0?(c[j>>2]|0)==0:0){i=g;while(1){if((i|0)==(j|0)){i=267;n=63;break}i=c[i>>2]|0;if(!i){n=10;break}}if((n|0)==10){b=g+16|0;c[b>>2]=(c[b>>2]|0)+1;c[j>>2]=g;break}else if((n|0)==63){Ra=p;return i|0}}while(0);b=j+16|0;c[b>>2]=(c[b>>2]|0)+1;c[h>>2]=j;h=0;Ra=p;return h|0}while(0);o=b+76|0;k=c[o>>2]|0;do if(k){c[o>>2]=0;i=ld(k,e,f)|0;c[o>>2]=k;if(!i){l=b+16|0;i=c[l>>2]|0;n=48;break}j=b+24|0;do if((a[j>>0]|0)==0?(c[b+56>>2]|0)==0:0){c[o>>2]=0;l=c[k+20>>2]|0;gc(c[k+16>>2]|0)|0;if(l|0){if(c[l+480>>2]|0){Xd(l,k);break}n=k;if((c[l+304>>2]|0)>>>0<=n>>>0?(c[l+308>>2]|0)>>>0>n>>>0:0){n=l+300|0;c[k>>2]=c[n>>2];c[n>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{n=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);if((i|0)!=7){k=c[o>>2]|0;if(!k){n=28;break}else{n=35;break}}else{h=7;Ra=p;return h|0}}else n=28;while(0);do if((n|0)==28){c[m>>2]=c[b+36>>2];j=Bb(57749,m)|0;if(!j){h=7;Ra=p;return h|0}i=ad(c[b+12>>2]|0,c[b+32>>2]|0,j,57757,e,f,0,o)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{n=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}k=c[o>>2]|0;if(!i){l=b+16|0;i=c[l>>2]|0;if(!k){j=0;k=l;n=50;break}else{n=48;break}}if(!k)n=46;else{j=b+24|0;n=35}}while(0);do if((n|0)==35)if((a[j>>0]|0)==0?(c[b+56>>2]|0)==0:0){c[o>>2]=0;j=c[k+20>>2]|0;gc(c[k+16>>2]|0)|0;if(j|0){if(c[j+480>>2]|0){Xd(j,k);n=46;break}b=k;if((c[j+304>>2]|0)>>>0<=b>>>0?(c[j+308>>2]|0)>>>0>b>>>0:0){n=j+300|0;c[k>>2]=c[n>>2];c[n>>2]=k;n=46;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);n=46;break}else{n=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);n=46;break}}else n=46;else if((n|0)==48)if(!(c[k+16>>2]|0)){j=0;k=l;n=50}else{j=c[k>>2]|0;k=l;n=50}while(0);do if((n|0)==46){c[h>>2]=0;i=(i|0)==1?267:i;j=0}else if((n|0)==50)if((i|0)==(j|0)){j=pb(i+32|0,0)|0;if(j){c[j>>2]=g;i=j+32|0;c[j+24>>2]=i;c[j+16>>2]=1;n=b+60|0;c[n>>2]=(c[n>>2]|0)+1;n=j+8|0;c[n>>2]=e;c[n+4>>2]=f;c[j+20>>2]=0;c[j+28>>2]=0;i=jd(c[o>>2]|0,i,c[k>>2]|0,0,81)|0;if((e|0)==1&(f|0)==0){f=c[j+24>>2]|0;f=d[f>>0]<<8|d[f+1>>0];c[b+28>>2]=f;i=f>>>0>40?267:i}if(!i){f=c[j+24>>2]|0;if((d[f+2>>0]<<8|d[f+3>>0]|0)>(((c[b+16>>2]|0)+-4|0)/(d[b+23>>0]|0)|0|0))i=267;else{if(g|0){g=g+16|0;c[g>>2]=(c[g>>2]|0)+1}i=b+116+((((c[j+8>>2]|0)>>>0)%97|0)<<2)|0;c[j+28>>2]=c[i>>2];c[i>>2]=j;i=0;break}}b=b+60|0;c[b>>2]=(c[b>>2]|0)+-1;if(!(c[7324]|0)){ab[c[29344>>2]&127](j);j=0;break}else{b=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);j=0;break}}else{i=7;j=0}}else{i=267;j=0}while(0);c[h>>2]=j;h=i;Ra=p;return h|0}function Ys(b){b=b|0;var e=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Sa=0,Ta=0,Ua=0,Va=0,Xa=0;Pa=Ra;Ra=Ra+96|0;ua=Pa;Fa=Pa+80|0;za=c[b>>2]|0;Ma=c[b+12>>2]|0;Na=(a[za+22>>0]|0)==1;Oa=b+5|0;va=b+24|0;wa=b+40|0;xa=b+32|0;ya=b+48|0;za=za+23|0;Aa=(Ma|0)>0;Ba=b+16|0;Ca=ua+8|0;Da=ua+72|0;Ea=ua+64|0;Ga=ua+56|0;Ha=ua+48|0;Ia=ua+40|0;Ja=ua+32|0;Ka=ua+24|0;La=ua+16|0;m=0;e=0;a:while(1){j=a[Oa>>0]|0;if(!(j<<24>>24)){if(!(c[va>>2]|0)){e=1;ta=66;break}i=c[xa>>2]|0;if(!i){e=1;ta=66;break}}else i=wa;if(!(a[i+16>>0]|0)){e=0;ta=66;break}k=1-(j&255)|0;l=b+64+(k<<2)|0;j=c[l>>2]|0;if(!j){if(!k)e=ya;else e=(c[xa>>2]|0)+8|0;e=Xs(c[b>>2]|0,c[e>>2]|0,c[e+4>>2]|0,0,l)|0;j=c[l>>2]|0}if(e|0){ta=67;break}ra=j+24|0;sa=c[ra>>2]|0;sa=d[sa+2>>0]<<8|d[sa+3>>0];qa=i;j=m;e=0;b:while(1){oa=qa+18|0;k=a[oa>>0]|0;i=k&255;if(sa>>>0<=i>>>0)break;pa=(c[ra>>2]|0)+((G(d[za>>0]|0,i)|0)+4)|0;c:do if(Aa){O=qa+16|0;P=pa+8|0;Q=pa+1|0;R=pa+2|0;S=pa+3|0;T=pa+4|0;U=pa+5|0;V=pa+6|0;W=pa+7|0;X=pa+12|0;Y=pa+13|0;Z=pa+14|0;_=pa+15|0;$=pa+9|0;aa=pa+10|0;ba=pa+11|0;ca=pa+44|0;da=pa+45|0;ea=pa+46|0;fa=pa+47|0;ga=pa+40|0;ha=pa+41|0;ia=pa+42|0;ja=pa+43|0;ka=pa+36|0;la=pa+37|0;ma=pa+38|0;na=pa+39|0;r=pa+32|0;s=pa+33|0;t=pa+34|0;u=pa+35|0;v=pa+28|0;w=pa+29|0;x=pa+30|0;y=pa+31|0;z=pa+24|0;A=pa+25|0;B=pa+26|0;C=pa+27|0;D=pa+20|0;E=pa+21|0;F=pa+22|0;H=pa+23|0;I=pa+16|0;J=pa+17|0;K=pa+18|0;M=pa+19|0;N=qa+17|0;o=2;n=0;p=-1.0;d:do{l=c[Ba>>2]|0;m=c[l+(n*24|0)+4>>2]|0;e:do if((m|0)>69){e=c[l+(n*24|0)+16>>2]|0;i=c[e+28>>2]|0;if((m|0)==71?(a[O>>0]|0)==1:0){Va=cw(d[pa>>0]|0,0,56)|0;Sa=L()|0;Xa=cw(d[Q>>0]|0,0,48)|0;Sa=L()|0|Sa;Ua=cw(d[R>>0]|0,0,40)|0;Sa=Sa|(L()|0);Sa=Sa|d[S>>0];Ta=cw(d[T>>0]|0,0,24)|0;Sa=Sa|(L()|0);k=cw(d[U>>0]|0,0,16)|0;Sa=Sa|(L()|0);Qa=cw(d[V>>0]|0,0,8)|0;Sa=Sa|(L()|0);Sa=Sv(Xa|Va|Ua|Ta|k|Qa|0,Sa|0,d[W>>0]|0,0)|0;Qa=L()|0;k=e+40|0;c[k>>2]=Sa;c[k+4>>2]=Qa}if(Na){switch(i|0){case 10:{g[Da>>3]=+(d[da>>0]<<16|d[ca>>0]<<24|d[ea>>0]<<8|d[fa>>0]|0);g[Ea>>3]=+(d[ha>>0]<<16|d[ga>>0]<<24|d[ia>>0]<<8|d[ja>>0]|0);ta=29;break}case 8:{ta=29;break}case 6:{ta=30;break}case 4:{ta=31;break}default:{}}if((ta|0)==29){g[Ga>>3]=+(d[la>>0]<<16|d[ka>>0]<<24|d[ma>>0]<<8|d[na>>0]|0);g[Ha>>3]=+(d[s>>0]<<16|d[r>>0]<<24|d[t>>0]<<8|d[u>>0]|0);ta=30}if((ta|0)==30){g[Ia>>3]=+(d[w>>0]<<16|d[v>>0]<<24|d[x>>0]<<8|d[y>>0]|0);g[Ja>>3]=+(d[A>>0]<<16|d[z>>0]<<24|d[B>>0]<<8|d[C>>0]|0);ta=31}if((ta|0)==31){ta=0;g[Ka>>3]=+(d[E>>0]<<16|d[D>>0]<<24|d[F>>0]<<8|d[H>>0]|0);g[La>>3]=+(d[J>>0]<<16|d[I>>0]<<24|d[K>>0]<<8|d[M>>0]|0)}g[Ca>>3]=+(d[Y>>0]<<16|d[X>>0]<<24|d[Z>>0]<<8|d[_>>0]|0);q=+(d[$>>0]<<16|d[P>>0]<<24|d[aa>>0]<<8|d[ba>>0]|0)}else{switch(i|0){case 10:{g[Da>>3]=(c[h>>2]=d[da>>0]<<16|d[ca>>0]<<24|d[ea>>0]<<8|d[fa>>0],+f[h>>2]);g[Ea>>3]=(c[h>>2]=d[ha>>0]<<16|d[ga>>0]<<24|d[ia>>0]<<8|d[ja>>0],+f[h>>2]);ta=23;break}case 8:{ta=23;break}case 6:{ta=24;break}case 4:{ta=25;break}default:{}}if((ta|0)==23){g[Ga>>3]=(c[h>>2]=d[la>>0]<<16|d[ka>>0]<<24|d[ma>>0]<<8|d[na>>0],+f[h>>2]);g[Ha>>3]=(c[h>>2]=d[s>>0]<<16|d[r>>0]<<24|d[t>>0]<<8|d[u>>0],+f[h>>2]);ta=24}if((ta|0)==24){g[Ia>>3]=(c[h>>2]=d[w>>0]<<16|d[v>>0]<<24|d[x>>0]<<8|d[y>>0],+f[h>>2]);g[Ja>>3]=(c[h>>2]=d[A>>0]<<16|d[z>>0]<<24|d[B>>0]<<8|d[C>>0],+f[h>>2]);ta=25}if((ta|0)==25){ta=0;g[Ka>>3]=(c[h>>2]=d[E>>0]<<16|d[D>>0]<<24|d[F>>0]<<8|d[H>>0],+f[h>>2]);g[La>>3]=(c[h>>2]=d[J>>0]<<16|d[I>>0]<<24|d[K>>0]<<8|d[M>>0],+f[h>>2])}g[Ca>>3]=(c[h>>2]=d[Y>>0]<<16|d[X>>0]<<24|d[Z>>0]<<8|d[_>>0],+f[h>>2]);q=(c[h>>2]=d[$>>0]<<16|d[P>>0]<<24|d[aa>>0]<<8|d[ba>>0],+f[h>>2])}g[ua>>3]=q;if((m|0)==70){c[Fa>>2]=0;e=Za[c[l+(n*24|0)+8>>2]&127](e,i,ua,Fa)|0;p=0.0;o=(c[Fa>>2]|0)==0?0:o}else{c[e+20>>2]=ua;c[e+32>>2]=(d[O>>0]|0)+-1;q=+g[qa>>3];g[e+48>>3]=q;Va=e+64|0;g[Va>>3]=q;Ua=d[N>>0]|0;c[e+56>>2]=Ua;Xa=e+60|0;c[Xa>>2]=Ua;e=Wa[c[l+(n*24|0)+8>>2]&127](e)|0;Xa=c[Xa>>2]|0;q=+g[Va>>3];p=p<0.0|q>2]<<2;if((a[O>>0]|0)!=1){k=pa+((i&1016)+8)|0;if((m+-65|0)>>>0<3){i=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8|d[k+3>>0];q=+g[l+(n*24|0)+8>>3];if(q>=(Na?+(i|0):(c[h>>2]=i,+f[h>>2]))){ta=49;break}if((m|0)!=65){ta=50;break}}else q=+g[l+(n*24|0)+8>>3];i=k+4|0;i=d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0];if(!(q<=(Na?+(i|0):(c[h>>2]=i,+f[h>>2])))){ta=50;break}else{ta=49;break}}i=pa+(i+8)|0;i=d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0];q=Na?+(i|0):(c[h>>2]=i,+f[h>>2]);switch(m|0){case 66:if(!(q<=+g[l+(n*24|0)+8>>3])){ta=50;break e}else{ta=49;break e}case 67:if(q<+g[l+(n*24|0)+8>>3]){ta=49;break e}else{ta=50;break e}case 68:if(!(q>=+g[l+(n*24|0)+8>>3])){ta=50;break e}else{ta=49;break e}case 69:if(q>+g[l+(n*24|0)+8>>3]){ta=49;break e}else{ta=50;break e}default:if(q==+g[l+(n*24|0)+8>>3]){ta=49;break e}else{ta=50;break e}}}while(0);if((ta|0)==49){ta=0;if(!o)ta=50;else k=0}if((ta|0)==50){ta=0;k=6;o=0}switch(k&7){case 6:break d;case 0:break;default:{i=qa;break c}}n=n+1|0}while((n|0)<(Ma|0));i=(a[oa>>0]|0)+1<<24>>24;a[oa>>0]=i;if(!o){i=qa;k=4}else ta=54}else{i=k+1<<24>>24;a[oa>>0]=i;p=-1.0;o=2;ta=54}while(0);if((ta|0)==54){ta=0;n=(d[qa+16>>0]|0)+255&255;if(!(n<<24>>24)){m=qa+8|0;k=i&255;i=k;k=k+255&255;l=c[m>>2]|0;m=c[m+4>>2]|0}else{Ua=cw(d[pa>>0]|0,0,56)|0;l=L()|0;Ta=cw(d[pa+1>>0]|0,0,48)|0;l=L()|0|l;Va=cw(d[pa+2>>0]|0,0,40)|0;l=l|(L()|0);l=l|d[pa+3>>0];Xa=cw(d[pa+4>>0]|0,0,24)|0;l=l|(L()|0);m=cw(d[pa+5>>0]|0,0,16)|0;l=l|(L()|0);k=cw(d[pa+6>>0]|0,0,8)|0;l=l|(L()|0);l=Sv(Ta|Ua|Va|Xa|m|k|0,l|0,d[pa+7>>0]|0,0)|0;i=i&255;k=0;m=L()|0}if(sa>>>0<=i>>>0)Zs(b);i=Ws(b,p<0.0?0.0:p,n)|0;if(!i){e=7;ta=67;break a}a[i+17>>0]=o;Xa=i+8|0;c[Xa>>2]=l;c[Xa+4>>2]=m;a[i+18>>0]=k;k=5}switch(k|0){case 4:{qa=i;break}case 5:{ta=62;break b}default:{e=j;ta=67;break a}}}if((ta|0)==62){ta=0;i=d[i+18>>0]|0}if(sa>>>0<=i>>>0)Zs(b);m=j}if((ta|0)==66){a[b+4>>0]=e;Xa=0;Ra=Pa;return Xa|0}else if((ta|0)==67){Ra=Pa;return e|0}return 0}function Zs(b){b=b|0;var e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+32|0;p=r;i=b+5|0;e=a[i>>0]|0;f=b+64+(1-(e&255)<<2)|0;h=c[f>>2]|0;if(h){Us(c[b>>2]|0,h)|0;c[f>>2]=0;e=a[i>>0]|0}if(e<<24>>24){q=b+84+((d[b+56>>0]|0)<<2)|0;c[q>>2]=(c[q>>2]|0)+-1;a[i>>0]=0;Ra=r;return}e=b+24|0;f=c[e>>2]|0;if(!f){Ra=r;return}n=b+32|0;m=c[n>>2]|0;o=b+84+((d[m+16>>0]|0)<<2)|0;c[o>>2]=(c[o>>2]|0)+-1;o=f+-1|0;c[e>>2]=o;e=m+(o*24|0)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[m+16>>2]=c[e+16>>2];c[m+20>>2]=c[e+20>>2];e=b+64+(f<<2)|0;if((f|0)<5?(c[b+68>>2]=c[e>>2],c[e>>2]=0,(f|0)<=2):0){Ra=r;return}e=0;m=1;a:while(1){l=m+1|0;i=c[n>>2]|0;do if((l|0)<(o|0)){h=i+(l*24|0)|0;k=+g[h>>3];j=+g[i+(m*24|0)>>3];if(!(kj){q=21;break}if((d[i+(l*24|0)+16>>0]|0)>=(d[i+(m*24|0)+16>>0]|0)){q=21;break}}f=i+(e*24|0)|0;j=+g[f>>3];if(!(kj){q=30;break a}if((d[i+(l*24|0)+16>>0]|0)>=(d[i+(e*24|0)+16>>0]|0)){q=30;break a}};c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];c[p+16>>2]=c[f+16>>2];c[p+20>>2]=c[f+20>>2];c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];c[f+16>>2]=c[h+16>>2];c[f+20>>2]=c[h+20>>2];f=(c[n>>2]|0)+(l*24|0)|0;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[f+16>>2]=c[p+16>>2];c[f+20>>2]=c[p+20>>2];f=e+1|0;h=m+2|0;do if((e|0)<4)if((m|0)>2){m=b+64+(f<<2)|0;Us(c[b>>2]|0,c[m>>2]|0)|0;c[m>>2]=0;break}else{f=b+64+(f<<2)|0;i=c[f>>2]|0;m=b+64+(h<<2)|0;c[f>>2]=c[m>>2];c[m>>2]=i;break}while(0);e=l}else q=21;while(0);if((q|0)==21){q=0;f=i+(m*24|0)|0;h=i+(e*24|0)|0;j=+g[f>>3];k=+g[h>>3];if(!(jk){q=30;break}if((d[i+(m*24|0)+16>>0]|0)>=(d[i+(e*24|0)+16>>0]|0)){q=30;break}};c[p>>2]=c[h>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];c[p+12>>2]=c[h+12>>2];c[p+16>>2]=c[h+16>>2];c[p+20>>2]=c[h+20>>2];c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];f=(c[n>>2]|0)+(m*24|0)|0;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[f+16>>2]=c[p+16>>2];c[f+20>>2]=c[p+20>>2];f=e+1|0;do if((e|0)<4)if((m|0)>3){l=b+64+(f<<2)|0;Us(c[b>>2]|0,c[l>>2]|0)|0;c[l>>2]=0;break}else{h=b+64+(f<<2)|0;i=c[h>>2]|0;l=b+64+(l<<2)|0;c[h>>2]=c[l>>2];c[l>>2]=i;break}while(0);e=m}m=e<<1|1;if((m|0)>=(o|0)){q=30;break}}if((q|0)==30){Ra=r;return}}function _s(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+32|0;l=o+16|0;j=o+8|0;g=o;i=o+28|0;c[i>>2]=0;n=d+36|0;m=c[n>>2]|0;c[g>>2]=c[d+32>>2];c[g+4>>2]=m;g=Bb(53869,g)|0;do if(!g){h=7;g=0}else{h=qd(c[d+12>>2]|0,g,-1,128,0,i,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{m=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}if(h|0){g=c[i>>2]|0;break}m=c[i>>2]|0;k=c[m>>2]|0;g=(m|0)==0;if(!f){if(!g?(b[m+144>>1]|0)!=0:0){g=c[m+116>>2]|0;do if(g){h=b[g+8>>1]|0;if((h&514)==514?(a[g+10>>0]|0)==1:0){g=c[g+16>>2]|0;break}if(!(h&1))g=Gg(g,1)|0;else g=0}else g=0;while(0);h=k+81|0;if(a[h>>0]|0)if(!(c[k+180>>2]|0)){a[h>>0]=0;c[k+264>>2]=0;g=k+272|0;c[g>>2]=(c[g>>2]|0)+-1;g=0}else g=0}else g=0;c[j>>2]=c[n>>2];c[j+4>>2]=g;g=Bb(57776,j)|0}else{if(!g){j=m+144|0;if((e[j>>1]|0)>>>0>f>>>0){g=c[m+116>>2]|0;h=g+(f*40|0)|0;do if(h){i=b[g+(f*40|0)+8>>1]|0;if((i&514)==514?(a[g+(f*40|0)+10>>0]|0)==1:0){h=c[g+(f*40|0)+16>>2]|0;break}if(!(i&1))h=Gg(h,1)|0;else h=0}else h=0;while(0);g=k+81|0;if(a[g>>0]|0)if(!(c[k+180>>2]|0)){a[g>>0]=0;c[k+264>>2]=0;h=k+272|0;c[h>>2]=(c[h>>2]|0)+-1;h=0}else h=0}else h=0;f=f+1|0;k=c[m>>2]|0;if(f>>>0<(e[j>>1]|0)>>>0){g=c[m+116>>2]|0;i=g+(f*40|0)|0;do if(i){j=b[g+(f*40|0)+8>>1]|0;if((j&514)==514?(a[g+(f*40|0)+10>>0]|0)==1:0){g=c[g+(f*40|0)+16>>2]|0;break}if(!(j&1))g=Gg(i,1)|0;else g=0}else g=0;while(0);i=k+81|0;if(a[i>>0]|0)if(!(c[k+180>>2]|0)){a[i>>0]=0;c[k+264>>2]=0;g=k+272|0;c[g>>2]=(c[g>>2]|0)+-1;g=0}else g=0}else g=0}else{h=0;g=0}c[l>>2]=c[n>>2];c[l+4>>2]=h;c[l+8>>2]=g;g=Bb(57808,l)|0}c[d+8>>2]=g;gc(m)|0;d=19;Ra=o;return d|0}while(0);gc(g)|0;d=h;Ra=o;return d|0}function $s(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;x=Ra;Ra=Ra+64|0;t=x+56|0;u=x;v=x+52|0;w=x+48|0;c[v>>2]=0;c[w>>2]=0;i=Xs(e,1,0,0,w)|0;a:do if(!i){c[v>>2]=0;k=e+88|0;h=c[k>>2]|0;do if(!(Vc(h,1)|0)){h=c[h+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){s=h;c[s>>2]=f;c[s+4>>2]=g;b[i>>1]=4;break}else{Pg(h,f,g);break}}while(0);s=(Gc(c[k>>2]|0)|0)==100;j=c[k>>2]|0;do if(s){i=Oc(j,0)|0;i=Xs(e,i,L()|0,0,v)|0;h=c[k>>2]|0;if(h){j=c[h>>2]|0;s=h+136|0;r=c[s+4>>2]|0;if((r|0)>0|(r|0)==0&(c[s>>2]|0)>>>0>0)hc(j,h);s=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;r=h+64|0;c[r>>2]=0;c[r+4>>2]=0;if((s|0)==3082|(a[j+81>>0]|0)!=0)og(j)}}else if(j){h=c[j>>2]|0;s=j+136|0;r=c[s+4>>2]|0;if((r|0)>0|(r|0)==0&(c[s>>2]|0)>>>0>0)hc(h,j);i=kc(j)|0;c[j+20>>2]=770837923;c[j+36>>2]=-1;c[j+40>>2]=0;a[j+146>>0]=2;c[j+44>>2]=0;c[j+32>>2]=1;a[j+147>>0]=-1;c[j+48>>2]=0;s=j+64|0;c[s>>2]=0;c[s+4>>2]=0;if((i|0)==3082|(a[h+81>>0]|0)!=0){og(h);i=7;break a}else{i=c[h+68>>2]&i;break}}else i=0;while(0);l=c[v>>2]|0;b:do if((i|0)==0&(l|0)!=0){i=c[l+24>>2]|0;j=d[i+2>>0]<<8|d[i+3>>0];c:do if(j|0){k=d[e+23>>0]|0;h=0;while(1){s=i+((G(h,k)|0)+4)|0;A=cw(d[s>>0]|0,0,56)|0;r=L()|0;B=cw(d[s+1>>0]|0,0,48)|0;r=L()|0|r;z=cw(d[s+2>>0]|0,0,40)|0;r=r|(L()|0);r=r|d[s+3>>0];y=cw(d[s+4>>0]|0,0,24)|0;r=r|(L()|0);p=cw(d[s+5>>0]|0,0,16)|0;r=r|(L()|0);q=cw(d[s+6>>0]|0,0,8)|0;r=r|(L()|0);s=Sv(B|A|z|y|p|q|0,r|0,d[s+7>>0]|0,0)|0;if((s|0)==(f|0)&(L()|0)==(g|0))break;h=h+1|0;if(h>>>0>=j>>>0)break c}h=ct(e,l,h,0)|0;i=Us(e,l)|0;if(!h)break b;else{i=h;break a}}while(0);Us(e,l)|0;i=267;break a}while(0);if(!i){j=e+96|0;h=c[j>>2]|0;do if(!(Vc(h,1)|0)){h=c[h+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){B=h;c[B>>2]=f;c[B+4>>2]=g;b[i>>1]=4;break}else{Pg(h,f,g);break}}while(0);Gc(c[j>>2]|0)|0;h=c[j>>2]|0;do if(h|0){i=c[h>>2]|0;B=h+136|0;A=c[B+4>>2]|0;if((A|0)>0|(A|0)==0&(c[B>>2]|0)>>>0>0)hc(i,h);j=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;B=h+64|0;c[B>>2]=0;c[B+4>>2]=0;if(!((j|0)==3082|(a[i+81>>0]|0)!=0)){i=c[i+68>>2]&j;if(!i)break;else break a}else{og(i);i=7;break a}}while(0);j=e+28|0;if((c[j>>2]|0)>0?(n=c[w>>2]|0,o=n+24|0,m=c[o>>2]|0,(d[m+2>>0]<<8|d[m+3>>0]|0)==1):0){c[t>>2]=0;y=cw(d[m+4>>0]|0,0,56)|0;h=L()|0;s=cw(d[m+5>>0]|0,0,48)|0;h=L()|0|h;z=cw(d[m+6>>0]|0,0,40)|0;h=h|(L()|0);h=h|d[m+7>>0];A=cw(d[m+8>>0]|0,0,24)|0;h=h|(L()|0);B=cw(d[m+9>>0]|0,0,16)|0;h=h|(L()|0);i=cw(d[m+10>>0]|0,0,8)|0;h=h|(L()|0);h=Sv(s|y|z|A|B|i|0,h|0,d[m+11>>0]|0,0)|0;h=Xs(e,h,L()|0,n,t)|0;i=c[t>>2]|0;if(!h)h=dt(e,i,(c[j>>2]|0)+-1|0)|0;i=Us(e,i)|0;i=(h|0)==0?i:h;if(!i){A=(c[j>>2]|0)+-1|0;c[j>>2]=A;B=c[o>>2]|0;a[B>>0]=A>>>8;a[B+1>>0]=A;c[n+20>>2]=1}}else i=0}}while(0);q=e+68|0;j=c[q>>2]|0;c[v>>2]=j;h=(i|0)==0;if(!j){B=i;z=h;A=c[w>>2]|0;A=Us(e,A)|0;B=z?A:B;Ra=x;return B|0}r=e+60|0;p=e+23|0;s=e+21|0;do{o=j;n=j;d:do if(h){f=n+24|0;h=c[f>>2]|0;g=d[h+2>>0]<<8|d[h+3>>0];if(!g)i=0;else{m=n+8|0;l=0;while(1){B=G(l,d[p>>0]|0)|0;A=h+(B+4)|0;D=cw(d[A>>0]|0,0,56)|0;i=L()|0;E=cw(d[A+1>>0]|0,0,48)|0;i=L()|0|i;C=cw(d[A+2>>0]|0,0,40)|0;i=i|(L()|0);i=i|d[A+3>>0];y=cw(d[A+4>>0]|0,0,24)|0;i=i|(L()|0);z=cw(d[A+5>>0]|0,0,16)|0;i=i|(L()|0);k=cw(d[A+6>>0]|0,0,8)|0;i=i|(L()|0);A=Sv(E|D|C|y|z|k|0,i|0,d[A+7>>0]|0,0)|0;i=L()|0;k=u;c[k>>2]=A;c[k+4>>2]=i;k=d[s>>0]|0;i=0;h=h+(B+12)|0;while(1){c[u+8+(i<<2)>>2]=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];c[u+8+((i|1)<<2)>>2]=d[h+5>>0]<<16|d[h+4>>0]<<24|d[h+6>>0]<<8|d[h+7>>0];i=i+2|0;if(i>>>0>=k>>>0)break;else h=h+8|0}i=at(e,u,c[m>>2]|0,t)|0;if(!i){E=c[t>>2]|0;i=bt(e,E,u,c[m>>2]|0)|0;E=Us(e,E)|0;i=(i|0)==0?E:i}h=l+1|0;if(!(h>>>0>>0&(i|0)==0))break d;l=h;h=c[f>>2]|0}}}while(0);h=c[n+28>>2]|0;c[q>>2]=h;c[r>>2]=(c[r>>2]|0)+-1;if(!j)j=h;else{if(!(c[7324]|0))ab[c[29344>>2]&127](o);else{E=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o)}j=c[q>>2]|0}c[v>>2]=j;h=(i|0)==0}while((j|0)!=0);E=c[w>>2]|0;E=Us(e,E)|0;E=h?E:i;Ra=x;return E|0}function at(b,e,g,h){b=b|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0;Ba=Ra;Ra=Ra+112|0;wa=Ba+48|0;za=Ba+96|0;xa=Ba;c[za>>2]=0;i=Xs(b,1,0,0,za)|0;ya=b+28|0;if(i|0){Aa=i;za=c[za>>2]|0;c[h>>2]=za;Ra=Ba;return Aa|0}D=b+23|0;H=b+21|0;E=b+20|0;F=b+22|0;I=wa+12|0;J=wa+8|0;K=wa+44|0;M=wa+40|0;N=wa+36|0;O=wa+32|0;P=wa+28|0;Q=wa+24|0;R=wa+20|0;S=wa+16|0;T=wa+12|0;U=wa+8|0;V=wa+44|0;W=wa+40|0;X=wa+36|0;Y=wa+32|0;Z=wa+28|0;_=wa+24|0;$=wa+20|0;aa=wa+16|0;ba=xa+12|0;ca=xa+8|0;da=xa+44|0;ea=xa+40|0;fa=xa+36|0;ga=xa+32|0;ha=xa+28|0;ia=xa+24|0;ja=xa+20|0;ka=xa+16|0;la=xa+12|0;ma=xa+8|0;na=xa+44|0;oa=xa+40|0;pa=xa+36|0;qa=xa+32|0;ra=xa+28|0;sa=xa+24|0;ta=xa+20|0;ua=xa+16|0;C=0;while(1){if((C|0)>=((c[ya>>2]|0)-g|0)){i=0;Aa=56;break}va=c[za>>2]|0;x=va+24|0;i=c[x>>2]|0;y=d[i+2>>0]<<8|d[i+3>>0];a:do if(!y){j=0;i=0}else{B=a[H>>0]|0;z=d[D>>0]|0;A=B&255;B=B&255;k=0;p=0.0;w=0.0;l=i;u=0;v=0;while(1){t=G(k,z)|0;j=l+(t+4)|0;Ea=cw(d[j>>0]|0,0,56)|0;i=L()|0;Fa=cw(d[j+1>>0]|0,0,48)|0;i=L()|0|i;Da=cw(d[j+2>>0]|0,0,40)|0;i=i|(L()|0);i=i|d[j+3>>0];Ca=cw(d[j+4>>0]|0,0,24)|0;i=i|(L()|0);o=cw(d[j+5>>0]|0,0,16)|0;i=i|(L()|0);m=cw(d[j+6>>0]|0,0,8)|0;i=i|(L()|0);j=Sv(Fa|Ea|Da|Ca|o|m|0,i|0,d[j+7>>0]|0,0)|0;i=L()|0;m=xa;c[m>>2]=j;c[m+4>>2]=i;m=0;l=l+(t+12)|0;while(1){c[xa+8+(m<<2)>>2]=d[l+1>>0]<<16|d[l>>0]<<24|d[l+2>>0]<<8|d[l+3>>0];c[xa+8+((m|1)<<2)>>2]=d[l+5>>0]<<16|d[l+4>>0]<<24|d[l+6>>0]<<8|d[l+7>>0];m=m+2|0;if(m>>>0>=A>>>0)break;else l=l+8|0}l=wa;m=xa;o=l+48|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(o|0));t=a[E>>0]|0;o=(a[F>>0]|0)==0;if(o){switch(t<<24>>24){case 5:{n=+f[K>>2]-+f[M>>2];Aa=11;break}case 4:{n=1.0;Aa=11;break}case 3:{n=1.0;Aa=12;break}case 2:{n=1.0;Aa=13;break}default:q=1.0}if((Aa|0)==11){n=n*(+f[N>>2]-+f[O>>2]);Aa=12}if((Aa|0)==12){n=n*(+f[P>>2]-+f[Q>>2]);Aa=13}if((Aa|0)==13){Aa=0;q=n*(+f[R>>2]-+f[S>>2])}n=+f[J>>2];r=+f[I>>2]-n;m=0;while(1){s=+f[e+8+(m<<2)>>2];f[wa+8+(m<<2)>>2]=n>2];s=+f[e+8+(Fa<<2)>>2];f[l>>2]=n>s?n:s;l=m+2|0;if(l>>>0>=B>>>0)break;m=l;n=+f[wa+8+(l<<2)>>2]}s=q*r}else{switch(t<<24>>24){case 5:{Fa=c[V>>2]|0;Aa=c[W>>2]|0;n=+((Tv(Fa|0,((Fa|0)<0)<<31>>31|0,Aa|0,((Aa|0)<0)<<31>>31|0)|0)>>>0)+4294967296.0*+(L()|0);Aa=16;break}case 4:{n=1.0;Aa=16;break}case 3:{n=1.0;Aa=17;break}case 2:{n=1.0;Aa=18;break}default:n=1.0}if((Aa|0)==16){Ea=c[X>>2]|0;Fa=c[Y>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=17}if((Aa|0)==17){Ea=c[Z>>2]|0;Fa=c[_>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=18}if((Aa|0)==18){Aa=0;Ea=c[$>>2]|0;Fa=c[aa>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0))}m=c[T>>2]|0;l=c[U>>2]|0;m=Tv(m|0,((m|0)<0)<<31>>31|0,l|0,((l|0)<0)<<31>>31|0)|0;q=+(m>>>0)+4294967296.0*+(L()|0);m=0;while(1){Fa=c[e+8+(m<<2)>>2]|0;c[wa+8+(m<<2)>>2]=(l|0)<(Fa|0)?l:Fa;Fa=m|1;l=wa+8+(Fa<<2)|0;Ea=c[l>>2]|0;Fa=c[e+8+(Fa<<2)>>2]|0;c[l>>2]=(Ea|0)>(Fa|0)?Ea:Fa;l=m+2|0;if(l>>>0>=B>>>0)break;m=l;l=c[wa+8+(l<<2)>>2]|0}s=n*q}if(o){switch(t<<24>>24){case 5:{n=+f[K>>2]-+f[M>>2];Aa=30;break}case 4:{n=1.0;Aa=30;break}case 3:{n=1.0;Aa=31;break}case 2:{n=1.0;Aa=32;break}default:n=1.0}if((Aa|0)==30){n=n*(+f[N>>2]-+f[O>>2]);Aa=31}if((Aa|0)==31){n=n*(+f[P>>2]-+f[Q>>2]);Aa=32}if((Aa|0)==32){Aa=0;n=n*(+f[R>>2]-+f[S>>2])}r=n*(+f[I>>2]-+f[J>>2]);switch(t<<24>>24){case 5:{n=+f[da>>2]-+f[ea>>2];Aa=40;break}case 4:{n=1.0;Aa=40;break}case 3:{n=1.0;Aa=41;break}case 2:{n=1.0;Aa=42;break}default:n=1.0}if((Aa|0)==40){n=n*(+f[fa>>2]-+f[ga>>2]);Aa=41}if((Aa|0)==41){n=n*(+f[ha>>2]-+f[ia>>2]);Aa=42}if((Aa|0)==42){Aa=0;n=n*(+f[ja>>2]-+f[ka>>2])}q=n*(+f[ba>>2]-+f[ca>>2]);n=r}else{switch(t<<24>>24){case 5:{Fa=c[V>>2]|0;Aa=c[W>>2]|0;n=+((Tv(Fa|0,((Fa|0)<0)<<31>>31|0,Aa|0,((Aa|0)<0)<<31>>31|0)|0)>>>0)+4294967296.0*+(L()|0);Aa=35;break}case 4:{n=1.0;Aa=35;break}case 3:{n=1.0;Aa=36;break}case 2:{n=1.0;Aa=37;break}default:n=1.0}if((Aa|0)==35){Ea=c[X>>2]|0;Fa=c[Y>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=36}if((Aa|0)==36){Ea=c[Z>>2]|0;Fa=c[_>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=37}if((Aa|0)==37){Aa=0;Ea=c[$>>2]|0;Fa=c[aa>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0))}Ea=c[T>>2]|0;Fa=c[U>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;r=n*(+(Fa>>>0)+4294967296.0*+(L()|0));switch(t<<24>>24){case 5:{Fa=c[na>>2]|0;Aa=c[oa>>2]|0;n=+((Tv(Fa|0,((Fa|0)<0)<<31>>31|0,Aa|0,((Aa|0)<0)<<31>>31|0)|0)>>>0)+4294967296.0*+(L()|0);Aa=46;break}case 4:{n=1.0;Aa=46;break}case 3:{n=1.0;Aa=47;break}case 2:{n=1.0;Aa=48;break}default:n=1.0}if((Aa|0)==46){Ea=c[pa>>2]|0;Fa=c[qa>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=47}if((Aa|0)==47){Ea=c[ra>>2]|0;Fa=c[sa>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0));Aa=48}if((Aa|0)==48){Aa=0;Ea=c[ta>>2]|0;Fa=c[ua>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;n=n*(+(Fa>>>0)+4294967296.0*+(L()|0))}Ea=c[la>>2]|0;Fa=c[ma>>2]|0;Fa=Tv(Ea|0,((Ea|0)<0)<<31>>31|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;q=n*(+(Fa>>>0)+4294967296.0*+(L()|0));n=r}n=n-s;if(!((k|0)==0|n>2]|0;u=j;v=i}}while(0);i=Xs(b,j,i,va,za)|0;Us(b,va)|0;if(!i)C=C+1|0;else{Aa=56;break}}if((Aa|0)==56){Fa=c[za>>2]|0;c[h>>2]=Fa;Ra=Ba;return i|0}return 0}function bt(b,e,h,i){b=b|0;e=e|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0,E=0,F=0.0,H=0,I=0,J=0.0,K=0.0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Sa=0,Ta=0.0;Sa=Ra;Ra=Ra+192|0;Ea=Sa;Ia=Sa+144|0;Fa=Sa+96|0;Ga=Sa+48|0;Ma=(i|0)>0;a:do if(Ma?(l=h,k=c[l>>2]|0,l=c[l+4>>2]|0,j=c[b+116+(((k>>>0)%97|0)<<2)>>2]|0,j|0):0){while(1){Qa=j+8|0;if((c[Qa>>2]|0)==(k|0)?(c[Qa+4>>2]|0)==(l|0):0)break;j=c[j+28>>2]|0;if(!j)break a}Us(b,c[j>>2]|0)|0;if(e|0){Qa=e+16|0;c[Qa>>2]=(c[Qa>>2]|0)+1}c[j>>2]=e}while(0);La=b+16|0;Qa=b+23|0;j=d[Qa>>0]|0;m=((c[La>>2]|0)+-4|0)/(j|0)|0;E=e+24|0;k=c[E>>2]|0;n=d[k+2>>0]<<8|d[k+3>>0];if((n|0)<(m|0)){j=k+((G(n,j)|0)+4)|0;Oa=h;l=c[Oa>>2]|0;Oa=c[Oa+4>>2]|0;Na=bw(l|0,Oa|0,56)|0;L()|0;a[j>>0]=Na;Na=bw(l|0,Oa|0,48)|0;L()|0;a[j+1>>0]=Na;Na=bw(l|0,Oa|0,40)|0;L()|0;a[j+2>>0]=Na;a[j+3>>0]=Oa;Na=bw(l|0,Oa|0,24)|0;L()|0;a[j+4>>0]=Na;Na=bw(l|0,Oa|0,16)|0;L()|0;a[j+5>>0]=Na;Oa=bw(l|0,Oa|0,8)|0;L()|0;a[j+6>>0]=Oa;a[j+7>>0]=l;l=b+21|0;if(a[l>>0]|0){k=0;j=j+8|0;while(1){Oa=c[h+8+(k<<2)>>2]|0;a[j>>0]=Oa>>>24;a[j+1>>0]=Oa>>>16;a[j+2>>0]=Oa>>>8;a[j+3>>0]=Oa;k=k+1|0;if(k>>>0>=(d[l>>0]|0)>>>0)break;else j=j+4|0}}Oa=c[E>>2]|0;Na=n+1|0;a[Oa+2>>0]=Na>>>8;a[Oa+3>>0]=Na;c[e+20>>2]=1}if((n|0)!=(m|0)){j=ft(b,e,h)|0;if(j|0){b=j;Ra=Sa;return b|0}m=h;l=c[m>>2]|0;m=c[m+4>>2]|0;k=e+8|0;j=c[k>>2]|0;k=c[k+4>>2]|0;if(!i){b=gt(b,l,m,j,k)|0;Ra=Sa;return b|0}else{b=ht(b,l,m,j,k)|0;Ra=Sa;return b|0}}j=b+72|0;if((c[j>>2]|0)<(i|0)?(D=e+8|0,Oa=D,!((c[Oa>>2]|0)==1&(c[Oa+4>>2]|0)==0)):0){c[j>>2]=i;m=Ea;I=m+40|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(I|0));z=c[E>>2]|0;z=d[z+2>>0]<<8|d[z+3>>0];w=z+1|0;u=z+2|0;j=u&131070;B=pb(j<<6,0)|0;do if(B){A=B+(j*48|0)|0;x=A+(j<<2)|0;v=x+(j<<2)|0;o=b+20|0;y=b+21|0;t=b+22|0;n=0;do{j=B+(n*48|0)|0;if((n|0)==(z|0)){m=j;H=h;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0))}else{Pa=c[E>>2]|0;k=G(n,d[Qa>>0]|0)|0;Na=Pa+(k+4)|0;Ga=cw(d[Na>>0]|0,0,56)|0;Oa=L()|0;Fa=cw(d[Na+1>>0]|0,0,48)|0;Oa=L()|0|Oa;Ha=cw(d[Na+2>>0]|0,0,40)|0;Oa=Oa|(L()|0);Oa=Oa|d[Na+3>>0];Ja=cw(d[Na+4>>0]|0,0,24)|0;Oa=Oa|(L()|0);Ka=cw(d[Na+5>>0]|0,0,16)|0;Oa=Oa|(L()|0);Ma=cw(d[Na+6>>0]|0,0,8)|0;Oa=Oa|(L()|0);Na=Sv(Fa|Ga|Ha|Ja|Ka|Ma|0,Oa|0,d[Na+7>>0]|0,0)|0;Oa=L()|0;c[j>>2]=Na;c[j+4>>2]=Oa;j=0;k=Pa+(k+12)|0;while(1){c[B+(n*48|0)+8+(j<<2)>>2]=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8|d[k+3>>0];c[B+(n*48|0)+8+((j|1)<<2)>>2]=d[k+5>>0]<<16|d[k+4>>0]<<24|d[k+6>>0]<<8|d[k+7>>0];j=j+2|0;if(j>>>0>=(d[y>>0]|0)>>>0)break;else k=k+8|0}}c[A+(n<<2)>>2]=n;m=a[o>>0]|0;l=m<<24>>24==0;if(!l){k=m&255;if(!(a[t>>0]|0)){j=0;do{Oa=j<<1;Pa=Ea+(j<<3)|0;g[Pa>>3]=+g[Pa>>3]+ +f[B+(n*48|0)+8+(Oa<<2)>>2]+ +f[B+(n*48|0)+8+((Oa|1)<<2)>>2];j=j+1|0}while(j>>>0>>0)}else{j=0;do{Oa=j<<1;Pa=Ea+(j<<3)|0;g[Pa>>3]=+g[Pa>>3]+ +(c[B+(n*48|0)+8+(Oa<<2)>>2]|0)+ +(c[B+(n*48|0)+8+((Oa|1)<<2)>>2]|0);j=j+1|0}while(j>>>0>>0)}}n=n+1|0}while((n|0)!=(w|0));q=m&255;if(!l){p=+(w|0)*2.0;j=0;do{Pa=Ea+(j<<3)|0;g[Pa>>3]=+g[Pa>>3]/p;j=j+1|0}while(j>>>0>>0);if(m<<24>>24){n=(a[t>>0]|0)==0;l=0;do{o=v+(l<<3)|0;g[o>>3]=0.0;m=0;s=0.0;do{k=m<<1;j=B+(l*48|0)+8+((k|1)<<2)|0;if(n){r=+f[j>>2];p=+f[B+(l*48|0)+8+(k<<2)>>2]}else{r=+(c[j>>2]|0);p=+(c[B+(l*48|0)+8+(k<<2)>>2]|0)}K=r-p-+g[Ea+(m<<3)>>3];s=s+K*K;g[o>>3]=s;m=m+1|0}while((m|0)!=(q|0));l=l+1|0}while((l|0)!=(w|0))}else Ba=210}else Ba=210;if((Ba|0)==210)gw(B+((u>>>1)*112|0)|0,0,(z<<3)+8|0)|0;jt(A,w,v,x);gw((c[E>>2]|0)+2|0,0,(c[La>>2]|0)+-2|0)|0;t=e+20|0;c[t>>2]=1;u=(i|0)==0;l=0;while(1){k=d[Qa>>0]|0;m=((c[La>>2]|0)+-4|0)/(k|0)|0;if((l|0)>=(z+((m|0)/-3|0)|0)){Ba=224;break}o=c[A+(l<<2)>>2]|0;j=B+(o*48|0)|0;n=c[E>>2]|0;q=d[n+2>>0]<<8|d[n+3>>0];if((q|0)<(m|0)){k=n+((G(q,k)|0)+4)|0;Oa=j;Pa=c[Oa>>2]|0;Oa=c[Oa+4>>2]|0;Na=bw(Pa|0,Oa|0,56)|0;L()|0;a[k>>0]=Na;Na=bw(Pa|0,Oa|0,48)|0;L()|0;a[k+1>>0]=Na;Na=bw(Pa|0,Oa|0,40)|0;L()|0;a[k+2>>0]=Na;a[k+3>>0]=Oa;Na=bw(Pa|0,Oa|0,24)|0;L()|0;a[k+4>>0]=Na;Na=bw(Pa|0,Oa|0,16)|0;L()|0;a[k+5>>0]=Na;Oa=bw(Pa|0,Oa|0,8)|0;L()|0;a[k+6>>0]=Oa;a[k+7>>0]=Pa;if(a[y>>0]|0){m=0;k=k+8|0;while(1){Pa=c[B+(o*48|0)+8+(m<<2)>>2]|0;a[k>>0]=Pa>>>24;a[k+1>>0]=Pa>>>16;a[k+2>>0]=Pa>>>8;a[k+3>>0]=Pa;m=m+1|0;if(m>>>0>=(d[y>>0]|0)>>>0)break;else k=k+4|0}}Pa=c[E>>2]|0;Oa=q+1|0;a[Pa+2>>0]=Oa>>>8;a[Pa+3>>0]=Oa;c[t>>2]=1}k=j;j=c[k>>2]|0;k=c[k+4>>2]|0;Pa=h;do if((j|0)==(c[Pa>>2]|0)?(k|0)==(c[Pa+4>>2]|0):0){n=D;m=c[n>>2]|0;n=c[n+4>>2]|0;if(u){j=gt(b,j,k,m,n)|0;break}else{j=ht(b,j,k,m,n)|0;break}}else j=0;while(0);if(!j)l=l+1|0;else break}b:do if((Ba|0)==224){j=et(b,e)|0;if(!((j|0)!=0|l>>>0>z>>>0))while(1){k=B+((c[A+(l<<2)>>2]|0)*48|0)|0;j=at(b,k,i,Ia)|0;if(j|0)break;Qa=c[Ia>>2]|0;j=bt(b,Qa,k,i)|0;Qa=Us(b,Qa)|0;j=(j|0)==0?Qa:j;if((j|0)!=0|l>>>0>=z>>>0)break b;else l=l+1|0}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](B);break}else{b=Wa[c[29352>>2]&127](B)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](B);break}}else j=7;while(0);b=j;Ra=Sa;return b|0}Aa=c[E>>2]|0;Aa=d[Aa+2>>0]<<8|d[Aa+3>>0];Ca=Aa+1|0;Na=pb(Ca*52|0,0)|0;Oa=(Na|0)==0;c:do if(!Oa){n=Ca<<2;gw(Na+(Ca*48|0)|0,0,n|0)|0;o=(Aa|0)==0;if(!o){m=b+21|0;k=0;do{Ja=c[E>>2]|0;l=G(k,d[Qa>>0]|0)|0;Ba=Ja+(l+4)|0;wa=cw(d[Ba>>0]|0,0,56)|0;Ha=L()|0;va=cw(d[Ba+1>>0]|0,0,48)|0;Ha=L()|0|Ha;xa=cw(d[Ba+2>>0]|0,0,40)|0;Ha=Ha|(L()|0);Ha=Ha|d[Ba+3>>0];ya=cw(d[Ba+4>>0]|0,0,24)|0;Ha=Ha|(L()|0);za=cw(d[Ba+5>>0]|0,0,16)|0;Ha=Ha|(L()|0);j=cw(d[Ba+6>>0]|0,0,8)|0;Ha=Ha|(L()|0);Ba=Sv(va|wa|xa|ya|za|j|0,Ha|0,d[Ba+7>>0]|0,0)|0;Ha=L()|0;j=Na+(k*48|0)|0;c[j>>2]=Ba;c[j+4>>2]=Ha;j=0;l=Ja+(l+12)|0;while(1){c[Na+(k*48|0)+8+(j<<2)>>2]=d[l+1>>0]<<16|d[l>>0]<<24|d[l+2>>0]<<8|d[l+3>>0];c[Na+(k*48|0)+8+((j|1)<<2)>>2]=d[l+5>>0]<<16|d[l+4>>0]<<24|d[l+6>>0]<<8|d[l+7>>0];j=j+2|0;if(j>>>0>=(d[m>>0]|0)>>>0)break;else l=l+8|0}k=k+1|0}while((k|0)!=(Aa|0))}gw((c[E>>2]|0)+2|0,0,(c[La>>2]|0)+-2|0)|0;l=e+20|0;c[l>>2]=1;m=Na+(Aa*48|0)|0;H=h;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0));Ha=e+8|0;Ja=Ha;if((c[Ja>>2]|0)==1&(c[Ja+4>>2]|0)==0){j=pb((c[La>>2]|0)+32|0,0)|0;if(j|0){gw(j|0,0,(c[La>>2]|0)+32|0)|0;c[j+24>>2]=j+32;c[j+16>>2]=1;Ja=b+60|0;c[Ja>>2]=(c[Ja>>2]|0)+1;c[j>>2]=e;c[j+20>>2]=1;Ja=e+16|0;c[Ja>>2]=(c[Ja>>2]|0)+1}k=pb((c[La>>2]|0)+32|0,0)|0;if(k|0){gw(k|0,0,(c[La>>2]|0)+32|0)|0;c[k+24>>2]=k+32;c[k+16>>2]=1;Ja=b+60|0;c[Ja>>2]=(c[Ja>>2]|0)+1;c[k>>2]=e;c[k+20>>2]=1;Ja=e+16|0;c[Ja>>2]=(c[Ja>>2]|0)+1}Ja=b+28|0;e=(c[Ja>>2]|0)+1|0;c[Ja>>2]=e;c[l>>2]=1;Ja=c[E>>2]|0;a[Ja>>0]=e>>>8;a[Ja+1>>0]=e;Ja=j;e=k}else{j=c[e>>2]|0;k=pb((c[La>>2]|0)+32|0,0)|0;if(k|0?(gw(k|0,0,(c[La>>2]|0)+32|0)|0,c[k+24>>2]=k+32,c[k+16>>2]=1,Ja=b+60|0,c[Ja>>2]=(c[Ja>>2]|0)+1,c[k>>2]=j,c[k+20>>2]=1,j|0):0){Ja=j+16|0;c[Ja>>2]=(c[Ja>>2]|0)+1}Ja=e+16|0;c[Ja>>2]=(c[Ja>>2]|0)+1;Ja=k}if((e|0)!=0&(Ja|0)!=0?(Pa=e+24|0,gw(c[Pa>>2]|0,0,c[La>>2]|0)|0,Ka=Ja+24|0,gw(c[Ka>>2]|0,0,c[La>>2]|0)|0,t=b+20|0,q=G((d[t>>0]|0)+1|0,n+4|0)|0,Da=pb(q,0)|0,(Da|0)!=0):0){m=d[t>>0]|0;m=Da+(m<<2)+((G(Ca,m)|0)<<2)|0;gw(Da|0,0,q|0)|0;j=a[t>>0]|0;if(j<<24>>24){j=j&255;if(o){l=0;do{k=Da+(j<<2)+((G(l,Ca)|0)<<2)|0;c[Da+(l<<2)>>2]=k;c[k>>2]=0;it(b,k,Ca,l,Na,m);l=l+1|0;k=a[t>>0]|0;j=k&255}while(l>>>0>>0);za=j}else{l=0;do{k=Da+(j<<2)+((G(l,Ca)|0)<<2)|0;c[Da+(l<<2)>>2]=k;c[k>>2]=0;j=1;do{c[k+(j<<2)>>2]=j;j=j+1|0}while((j|0)!=(Ca|0));it(b,k,Ca,l,Na,m);l=l+1|0;k=a[t>>0]|0;j=k&255}while(l>>>0>>0);za=j}if(k<<24>>24){z=Aa>>>0>1;A=b+21|0;B=b+22|0;D=Ea+12|0;E=Ea+8|0;M=Ea+44|0;N=Ea+40|0;O=Ea+36|0;P=Ea+32|0;Q=Ea+28|0;R=Ea+24|0;S=Ea+20|0;T=Ea+16|0;U=Ea+12|0;V=Ea+8|0;W=Ea+44|0;X=Ea+40|0;Y=Ea+36|0;Z=Ea+32|0;_=Ea+28|0;$=Ea+24|0;aa=Ea+20|0;ba=Ea+16|0;ca=Ia+12|0;da=Ia+8|0;ea=Ia+44|0;fa=Ia+40|0;ga=Ia+36|0;ha=Ia+32|0;ia=Ia+28|0;ja=Ia+24|0;ka=Ia+20|0;la=Ia+16|0;ma=Ia+12|0;na=Ia+8|0;oa=Ia+44|0;pa=Ia+40|0;qa=Ia+36|0;ra=Ia+32|0;sa=Ia+28|0;ta=Ia+24|0;ua=Ia+20|0;va=Ia+16|0;wa=(((c[La>>2]|0)+-4|0)/(d[Qa>>0]|0)|0|0)/3|0;xa=Ca-wa|0;ya=(wa|0)>(xa|0);j=0;w=0;K=0.0;y=0;while(1){if(ya){l=0;p=0.0}else{x=Da+(y<<2)|0;v=wa;l=0;J=0.0;r=0.0;p=0.0;while(1){m=Ea;H=Na+((c[c[x>>2]>>2]|0)*48|0)|0;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0));m=Ia;H=Na+((c[(c[x>>2]|0)+(Aa<<2)>>2]|0)*48|0)|0;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0));if(z){o=a[B>>0]|0;u=a[A>>0]|0;t=u&255;if(!(o<<24>>24)){n=1;do{o=c[(c[x>>2]|0)+(n<<2)>>2]|0;if((n|0)<(v|0)){m=0;do{I=Ea+8+(m<<2)|0;F=+f[I>>2];C=+f[Na+(o*48|0)+8+(m<<2)>>2];f[I>>2]=F>2];F=+f[Na+(o*48|0)+8+(I<<2)>>2];f[Ba>>2]=C>F?C:F;m=m+2|0}while(m>>>0>>0)}else{m=0;do{I=Ia+8+(m<<2)|0;F=+f[I>>2];C=+f[Na+(o*48|0)+8+(m<<2)>>2];f[I>>2]=F>2];F=+f[Na+(o*48|0)+8+(I<<2)>>2];f[Ba>>2]=C>F?C:F;m=m+2|0}while(m>>>0>>0)}n=n+1|0}while((n|0)!=(Aa|0));n=t;o=u;Ba=66}else{n=1;do{q=c[(c[x>>2]|0)+(n<<2)>>2]|0;if((n|0)<(v|0)){m=0;do{I=Ea+8+(m<<2)|0;H=c[I>>2]|0;Ba=c[Na+(q*48|0)+8+(m<<2)>>2]|0;c[I>>2]=(H|0)<(Ba|0)?H:Ba;I=m|1;Ba=Ea+8+(I<<2)|0;H=c[Ba>>2]|0;I=c[Na+(q*48|0)+8+(I<<2)>>2]|0;c[Ba>>2]=(H|0)>(I|0)?H:I;m=m+2|0}while(m>>>0>>0)}else{m=0;do{I=Ia+8+(m<<2)|0;H=c[I>>2]|0;Ba=c[Na+(q*48|0)+8+(m<<2)>>2]|0;c[I>>2]=(H|0)<(Ba|0)?H:Ba;I=m|1;Ba=Ia+8+(I<<2)|0;H=c[Ba>>2]|0;I=c[Na+(q*48|0)+8+(I<<2)>>2]|0;c[Ba>>2]=(H|0)>(I|0)?H:I;m=m+2|0}while(m>>>0>>0)}n=n+1|0}while((n|0)!=(Aa|0));m=o;n=t;o=u;Ba=64}}else{o=a[A>>0]|0;m=a[B>>0]|0;n=o&255;Ba=64}do if((Ba|0)==64){Ba=0;q=m<<24>>24==0;if(q){Ba=66;break}m=n;s=0.0;do{I=m;m=m+-2|0;s=s+(+(c[Ea+8+(I+-1<<2)>>2]|0)-+(c[Ea+8+(m<<2)>>2]|0))}while((I|0)>3)}while(0);if((Ba|0)==66){Ba=0;m=n;s=0.0;do{I=m;m=m+-2|0;s=s+(+f[Ea+8+(I+-1<<2)>>2]-+f[Ea+8+(m<<2)>>2])}while((I|0)>3);q=1}s=p+s;if(q){m=n;p=0.0;do{I=m;m=m+-2|0;p=p+(+f[Ia+8+(I+-1<<2)>>2]-+f[Ia+8+(m<<2)>>2])}while((I|0)>3)}else{m=n;p=0.0;do{I=m;m=m+-2|0;p=p+(+(c[Ia+8+(I+-1<<2)>>2]|0)-+(c[Ia+8+(m<<2)>>2]|0))}while((I|0)>3)}p=s+p;d:do if(o<<24>>24)if(q){s=1.0;m=0;do{Ta=+f[Ea+8+(m<<2)>>2];F=+f[Ia+8+(m<<2)>>2];F=Ta>F?Ta:F;I=m|1;Ta=+f[Ea+8+(I<<2)>>2];C=+f[Ia+8+(I<<2)>>2];C=Ta>>0>>0)}else{s=1.0;m=0;do{H=Ea+8+(m<<2)|0;I=Ia+8+(m<<2)|0;Ta=+(c[((c[H>>2]|0)>(c[I>>2]|0)?H:I)>>2]|0);I=m|1;C=+(c[Ea+8+(I<<2)>>2]|0);F=+(c[Ia+8+(I<<2)>>2]|0);F=C>>0>>0)}else s=1.0;while(0);F=s+0.0;if(q){switch(k<<24>>24){case 5:{s=+f[M>>2]-+f[N>>2];Ba=85;break}case 4:{s=1.0;Ba=85;break}case 3:{s=1.0;Ba=86;break}case 2:{s=1.0;Ba=87;break}default:s=1.0}if((Ba|0)==85){s=s*(+f[O>>2]-+f[P>>2]);Ba=86}if((Ba|0)==86){s=s*(+f[Q>>2]-+f[R>>2]);Ba=87}if((Ba|0)==87){Ba=0;s=s*(+f[S>>2]-+f[T>>2])}s=s*(+f[D>>2]-+f[E>>2]);switch(k<<24>>24){case 5:{C=+f[ea>>2]-+f[fa>>2];Ba=95;break}case 4:{C=1.0;Ba=95;break}case 3:{C=1.0;Ba=96;break}case 2:{C=1.0;Ba=97;break}default:C=1.0}if((Ba|0)==95){C=C*(+f[ga>>2]-+f[ha>>2]);Ba=96}if((Ba|0)==96){C=C*(+f[ia>>2]-+f[ja>>2]);Ba=97}if((Ba|0)==97)C=C*(+f[ka>>2]-+f[la>>2]);C=C*(+f[ca>>2]-+f[da>>2])}else{switch(k<<24>>24){case 5:{I=c[W>>2]|0;Ba=c[X>>2]|0;s=+((Tv(I|0,((I|0)<0)<<31>>31|0,Ba|0,((Ba|0)<0)<<31>>31|0)|0)>>>0)+4294967296.0*+(L()|0);Ba=90;break}case 4:{s=1.0;Ba=90;break}case 3:{s=1.0;Ba=91;break}case 2:{s=1.0;Ba=92;break}default:s=1.0}if((Ba|0)==90){H=c[Y>>2]|0;I=c[Z>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;s=s*(+(I>>>0)+4294967296.0*+(L()|0));Ba=91}if((Ba|0)==91){H=c[_>>2]|0;I=c[$>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;s=s*(+(I>>>0)+4294967296.0*+(L()|0));Ba=92}if((Ba|0)==92){Ba=0;H=c[aa>>2]|0;I=c[ba>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;s=s*(+(I>>>0)+4294967296.0*+(L()|0))}H=c[U>>2]|0;I=c[V>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;s=s*(+(I>>>0)+4294967296.0*+(L()|0));switch(k<<24>>24){case 5:{I=c[oa>>2]|0;Ba=c[pa>>2]|0;C=+((Tv(I|0,((I|0)<0)<<31>>31|0,Ba|0,((Ba|0)<0)<<31>>31|0)|0)>>>0)+4294967296.0*+(L()|0);Ba=101;break}case 4:{C=1.0;Ba=101;break}case 3:{C=1.0;Ba=102;break}case 2:{C=1.0;Ba=103;break}default:C=1.0}if((Ba|0)==101){H=c[qa>>2]|0;I=c[ra>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;C=C*(+(I>>>0)+4294967296.0*+(L()|0));Ba=102}if((Ba|0)==102){H=c[sa>>2]|0;I=c[ta>>2]|0;I=Tv(H|0,((H|0)<0)<<31>>31|0,I|0,((I|0)<0)<<31>>31|0)|0;C=C*(+(I>>>0)+4294967296.0*+(L()|0));Ba=103}if((Ba|0)==103){I=c[ua>>2]|0;Ba=c[va>>2]|0;Ba=Tv(I|0,((I|0)<0)<<31>>31|0,Ba|0,((Ba|0)<0)<<31>>31|0)|0;C=C*(+(Ba>>>0)+4294967296.0*+(L()|0))}I=c[ma>>2]|0;Ba=c[na>>2]|0;Ba=Tv(I|0,((I|0)<0)<<31>>31|0,Ba|0,((Ba|0)<0)<<31>>31|0)|0;C=C*(+(Ba>>>0)+4294967296.0*+(L()|0))}s=s+C;if(!((v|0)==(wa|0)|F>2]|0;k=c[j>>2]|0;m=Fa;H=Na+(k*48|0)|0;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0));m=Ga;H=Na+((c[j+(w<<2)>>2]|0)*48|0)|0;I=m+48|0;do{c[m>>2]=c[H>>2];m=m+4|0;H=H+4|0}while((m|0)<(I|0));x=b+21|0;u=b+22|0;t=0;while(1){q=(t|0)<(w|0);m=q?e:Ja;q=q?Fa:Ga;j=d[Qa>>0]|0;n=m+24|0;l=c[n>>2]|0;o=d[l+2>>0]<<8|d[l+3>>0];if((o|0)<(((c[La>>2]|0)+-4|0)/(j|0)|0|0)){j=l+((G(o,j)|0)+4)|0;Ea=Na+(k*48|0)|0;Ia=c[Ea>>2]|0;Ea=c[Ea+4>>2]|0;Ba=bw(Ia|0,Ea|0,56)|0;L()|0;a[j>>0]=Ba;Ba=bw(Ia|0,Ea|0,48)|0;L()|0;a[j+1>>0]=Ba;Ba=bw(Ia|0,Ea|0,40)|0;L()|0;a[j+2>>0]=Ba;a[j+3>>0]=Ea;Ba=bw(Ia|0,Ea|0,24)|0;L()|0;a[j+4>>0]=Ba;Ba=bw(Ia|0,Ea|0,16)|0;L()|0;a[j+5>>0]=Ba;Ea=bw(Ia|0,Ea|0,8)|0;L()|0;a[j+6>>0]=Ea;a[j+7>>0]=Ia;if(a[x>>0]|0){l=0;j=j+8|0;while(1){Ia=c[Na+(k*48|0)+8+(l<<2)>>2]|0;a[j>>0]=Ia>>>24;a[j+1>>0]=Ia>>>16;a[j+2>>0]=Ia>>>8;a[j+3>>0]=Ia;l=l+1|0;if(l>>>0>=(d[x>>0]|0)>>>0)break;else j=j+4|0}}Ia=c[n>>2]|0;Ea=o+1|0;a[Ia+2>>0]=Ea>>>8;a[Ia+3>>0]=Ea;c[m+20>>2]=1}l=d[x>>0]|0;if(!(a[u>>0]|0)){j=0;do{Ea=q+8+(j<<2)|0;Ta=+f[Ea>>2];K=+f[Na+(k*48|0)+8+(j<<2)>>2];f[Ea>>2]=Ta>2];Ta=+f[Na+(k*48|0)+8+(Ea<<2)>>2];f[Ia>>2]=K>Ta?K:Ta;j=j+2|0}while(j>>>0>>0)}else{j=0;do{Ea=q+8+(j<<2)|0;Ba=c[Ea>>2]|0;Ia=c[Na+(k*48|0)+8+(j<<2)>>2]|0;c[Ea>>2]=(Ba|0)<(Ia|0)?Ba:Ia;Ea=j|1;Ia=q+8+(Ea<<2)|0;Ba=c[Ia>>2]|0;Ea=c[Na+(k*48|0)+8+(Ea<<2)>>2]|0;c[Ia>>2]=(Ba|0)>(Ea|0)?Ba:Ea;j=j+2|0}while(j>>>0>>0)}j=t+1|0;if((j|0)==(Ca|0))break;t=j;k=c[(c[v>>2]|0)+(j<<2)>>2]|0}if(!(c[7324]|0))ab[c[29344>>2]&127](Da);else{La=Wa[c[29352>>2]&127](Da)|0;c[14978]=(c[14978]|0)-La;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Da)}j=Vs(b,Ja)|0;if(!j){u=e+8|0;k=u;j=c[k>>2]|0;k=c[k+4>>2]|0;if((j|0)==0&(k|0)==0){j=Vs(b,e)|0;if(j|0){l=e;k=Ja;break}k=u;j=c[k>>2]|0;k=c[k+4>>2]|0}t=Ja+8|0;Ia=t;q=c[Ia+4>>2]|0;La=Ga;c[La>>2]=c[Ia>>2];c[La+4>>2]=q;La=Fa;c[La>>2]=j;c[La+4>>2]=k;La=Ha;q=c[e>>2]|0;if((c[La>>2]|0)==1&(c[La+4>>2]|0)==0){k=i+1|0;j=bt(b,q,Fa,k)|0;if(!j)j=k;else{l=e;k=Ja;break}}else{e:do if(!q){m=-1;n=d[Qa>>0]|0;l=c[6]|0}else{l=c[q+24>>2]|0;o=d[l+2>>0]<<8|d[l+3>>0];if(!o){l=e;k=Ja;j=267;break c}n=d[Qa>>0]|0;m=0;while(1){La=l+((G(m,n)|0)+4)|0;Aa=cw(d[La>>0]|0,0,56)|0;Ia=L()|0;za=cw(d[La+1>>0]|0,0,48)|0;Ia=L()|0|Ia;Ba=cw(d[La+2>>0]|0,0,40)|0;Ia=Ia|(L()|0);Ia=Ia|d[La+3>>0];Ca=cw(d[La+4>>0]|0,0,24)|0;Ia=Ia|(L()|0);Da=cw(d[La+5>>0]|0,0,16)|0;Ia=Ia|(L()|0);Ea=cw(d[La+6>>0]|0,0,8)|0;Ia=Ia|(L()|0);La=Sv(za|Aa|Ba|Ca|Da|Ea|0,Ia|0,d[La+7>>0]|0,0)|0;if((La|0)==(j|0)&(L()|0)==(k|0))break e;m=m+1|0;if(m>>>0>=o>>>0){l=e;k=Ja;j=267;break c}}}while(0);l=l+((G(m,n)|0)+4)|0;La=bw(j|0,k|0,56)|0;L()|0;a[l>>0]=La;La=bw(j|0,k|0,48)|0;L()|0;a[l+1>>0]=La;La=bw(j|0,k|0,40)|0;L()|0;a[l+2>>0]=La;a[l+3>>0]=k;La=bw(j|0,k|0,24)|0;L()|0;a[l+4>>0]=La;La=bw(j|0,k|0,16)|0;L()|0;a[l+5>>0]=La;La=bw(j|0,k|0,8)|0;L()|0;a[l+6>>0]=La;a[l+7>>0]=j;if(a[x>>0]|0){k=0;j=l+8|0;while(1){La=c[Fa+8+(k<<2)>>2]|0;a[j>>0]=La>>>24;a[j+1>>0]=La>>>16;a[j+2>>0]=La>>>8;a[j+3>>0]=La;k=k+1|0;if(k>>>0>=(d[x>>0]|0)>>>0)break;else j=j+4|0}}c[q+20>>2]=1;j=ft(b,q,Fa)|0;if(j|0){l=e;k=Ja;break}j=i+1|0}j=bt(b,c[Ja>>2]|0,Ga,j)|0;if(!j){k=c[Ka>>2]|0;f:do if(!(d[k+2>>0]<<8|d[k+3>>0]))j=0;else{q=(i|0)==0?80:81;o=Ja+16|0;if(!Ma){m=0;n=0;while(1){k=k+((G(n,d[Qa>>0]|0)|0)+4)|0;Fa=cw(d[k>>0]|0,0,56)|0;l=L()|0;Ea=cw(d[k+1>>0]|0,0,48)|0;l=L()|0|l;Ga=cw(d[k+2>>0]|0,0,40)|0;l=l|(L()|0);l=l|d[k+3>>0];Ia=cw(d[k+4>>0]|0,0,24)|0;l=l|(L()|0);La=cw(d[k+5>>0]|0,0,16)|0;l=l|(L()|0);j=cw(d[k+6>>0]|0,0,8)|0;l=l|(L()|0);k=Sv(Ea|Fa|Ga|Ia|La|j|0,l|0,d[k+7>>0]|0,0)|0;l=L()|0;j=t;j=_a[q&127](b,k,l,c[j>>2]|0,c[j+4>>2]|0)|0;if(j|0){l=e;k=Ja;break c}j=h;j=((k|0)==(c[j>>2]|0)?(l|0)==(c[j+4>>2]|0):0)?1:m;n=n+1|0;k=c[Ka>>2]|0;if(n>>>0>=(d[k+2>>0]<<8|d[k+3>>0])>>>0)break f;else m=j}}m=0;n=0;while(1){k=k+((G(n,d[Qa>>0]|0)|0)+4)|0;Fa=cw(d[k>>0]|0,0,56)|0;l=L()|0;Ea=cw(d[k+1>>0]|0,0,48)|0;l=L()|0|l;Ga=cw(d[k+2>>0]|0,0,40)|0;l=l|(L()|0);l=l|d[k+3>>0];Ia=cw(d[k+4>>0]|0,0,24)|0;l=l|(L()|0);La=cw(d[k+5>>0]|0,0,16)|0;l=l|(L()|0);j=cw(d[k+6>>0]|0,0,8)|0;l=l|(L()|0);k=Sv(Ea|Fa|Ga|Ia|La|j|0,l|0,d[k+7>>0]|0,0)|0;l=L()|0;j=c[b+116+(((k>>>0)%97|0)<<2)>>2]|0;g:do if(j|0){while(1){La=j+8|0;if((c[La>>2]|0)==(k|0)?(c[La+4>>2]|0)==(l|0):0)break;j=c[j+28>>2]|0;if(!j)break g}Us(b,c[j>>2]|0)|0;c[o>>2]=(c[o>>2]|0)+1;c[j>>2]=Ja}while(0);j=t;j=_a[q&127](b,k,l,c[j>>2]|0,c[j+4>>2]|0)|0;if(j|0){l=e;k=Ja;break c}j=h;j=((k|0)==(c[j>>2]|0)?(l|0)==(c[j+4>>2]|0):0)?1:m;n=n+1|0;k=c[Ka>>2]|0;if(n>>>0>=(d[k+2>>0]<<8|d[k+3>>0])>>>0)break;else m=j}}while(0);La=Ha;h:do if((c[La>>2]|0)==1&(c[La+4>>2]|0)==0){j=c[Pa>>2]|0;if(d[j+2>>0]<<8|d[j+3>>0]|0){o=(i|0)==0?80:81;n=e+16|0;if(!Ma){k=0;while(1){h=j+((G(k,d[Qa>>0]|0)|0)+4)|0;Ia=cw(d[h>>0]|0,0,56)|0;i=L()|0;Ha=cw(d[h+1>>0]|0,0,48)|0;i=L()|0|i;Ka=cw(d[h+2>>0]|0,0,40)|0;i=i|(L()|0);i=i|d[h+3>>0];La=cw(d[h+4>>0]|0,0,24)|0;i=i|(L()|0);Ma=cw(d[h+5>>0]|0,0,16)|0;i=i|(L()|0);j=cw(d[h+6>>0]|0,0,8)|0;i=i|(L()|0);h=Sv(Ha|Ia|Ka|La|Ma|j|0,i|0,d[h+7>>0]|0,0)|0;i=L()|0;j=u;j=_a[o&127](b,h,i,c[j>>2]|0,c[j+4>>2]|0)|0;k=k+1|0;if(j|0){l=e;k=Ja;break c}j=c[Pa>>2]|0;if(k>>>0>=(d[j+2>>0]<<8|d[j+3>>0])>>>0)break h}}m=0;do{k=j+((G(m,d[Qa>>0]|0)|0)+4)|0;La=cw(d[k>>0]|0,0,56)|0;l=L()|0;Ka=cw(d[k+1>>0]|0,0,48)|0;l=L()|0|l;Ma=cw(d[k+2>>0]|0,0,40)|0;l=l|(L()|0);l=l|d[k+3>>0];h=cw(d[k+4>>0]|0,0,24)|0;l=l|(L()|0);i=cw(d[k+5>>0]|0,0,16)|0;l=l|(L()|0);j=cw(d[k+6>>0]|0,0,8)|0;l=l|(L()|0);k=Sv(Ka|La|Ma|h|i|j|0,l|0,d[k+7>>0]|0,0)|0;l=L()|0;j=c[b+116+(((k>>>0)%97|0)<<2)>>2]|0;i:do if(j|0){while(1){i=j+8|0;if((c[i>>2]|0)==(k|0)?(c[i+4>>2]|0)==(l|0):0)break;j=c[j+28>>2]|0;if(!j)break i}Us(b,c[j>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+1;c[j>>2]=e}while(0);j=u;j=_a[o&127](b,k,l,c[j>>2]|0,c[j+4>>2]|0)|0;m=m+1|0;if(j|0){l=e;k=Ja;break c}j=c[Pa>>2]|0}while(m>>>0<(d[j+2>>0]<<8|d[j+3>>0])>>>0)}}else if(!j){m=h;l=c[m>>2]|0;m=c[m+4>>2]|0;k=(i|0)==0?80:81;j:do if(Ma){j=c[b+116+(((l>>>0)%97|0)<<2)>>2]|0;if(!j)break;while(1){i=j+8|0;if((c[i>>2]|0)==(l|0)?(c[i+4>>2]|0)==(m|0):0)break;j=c[j+28>>2]|0;if(!j)break j}Us(b,c[j>>2]|0)|0;i=e+16|0;c[i>>2]=(c[i>>2]|0)+1;c[j>>2]=e}while(0);j=u;j=_a[k&127](b,l,m,c[j>>2]|0,c[j+4>>2]|0)|0;if(j|0){l=e;k=Ja;break c}}while(0);j=Us(b,Ja)|0;if(!j){l=0;k=0;j=Us(b,e)|0}else{l=e;k=0}}else{l=e;k=Ja}}else{l=e;k=Ja}}else{l=e;k=Ja;j=7}}else{l=0;k=0;j=7}while(0);Us(b,k)|0;Us(b,l)|0;do if(!Oa)if(!(c[7324]|0)){ab[c[29344>>2]&127](Na);break}else{b=Wa[c[29352>>2]&127](Na)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Na);break}while(0);b=j;Ra=Sa;return b|0}function ct(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=e+100|0;a:do if(f|0?(j=f+8|0,i=c[j>>2]|0,j=c[j+4>>2]|0,!((i|0)==1&(j|0)==0)):0){m=f;while(1){if(c[m>>2]|0)break a;k=c[n>>2]|0;do if(!(Vc(k,1)|0)){k=c[k+100>>2]|0;l=k+8|0;if(!(b[l>>1]&9216)){c[k>>2]=i;c[k+4>>2]=j;b[l>>1]=4;break}else{Pg(k,i,j);break}}while(0);b:do if((Gc(c[n>>2]|0)|0)==100){j=Oc(c[n>>2]|0,0)|0;k=L()|0;i=f;do{l=i+8|0;if((c[l>>2]|0)==(j|0)?(c[l+4>>2]|0)==(k|0):0){i=0;break b}i=c[i>>2]|0}while((i|0)!=0);i=Xs(e,j,k,0,m)|0}else i=0;while(0);j=c[n>>2]|0;if(j|0){l=c[j>>2]|0;k=j+136|0;o=c[k+4>>2]|0;if((o|0)>0|(o|0)==0&(c[k>>2]|0)>>>0>0)hc(l,j);k=kc(j)|0;c[j+20>>2]=770837923;c[j+36>>2]=-1;c[j+40>>2]=0;a[j+146>>0]=2;c[j+44>>2]=0;c[j+32>>2]=1;a[j+147>>0]=-1;c[j+48>>2]=0;o=j+64|0;c[o>>2]=0;c[o+4>>2]=0;if((k|0)==3082|(a[l+81>>0]|0)!=0){j=19;break}j=c[l+68>>2]&k;if(j|0){i=j;j=27;break}}if(i|0){j=27;break}m=c[m>>2]|0;if(!m){i=267;j=27;break}j=m+8|0;i=c[j>>2]|0;j=c[j+4>>2]|0;if((i|0)==1&(j|0)==0)break a}if((j|0)==19){og(l);o=7;return o|0}else if((j|0)==27)return i|0}while(0);i=e+23|0;j=f+24|0;n=c[j>>2]|0;o=d[i>>0]|0;m=n+((G(o,g)|0)+4)|0;fw(m|0,m+o|0,G((d[n+2>>0]<<8|d[n+3>>0])+~g|0,o)|0)|0;o=c[j>>2]|0;n=o+2|0;o=o+3|0;g=(d[n>>0]<<8|d[o>>0])+-1|0;a[n>>0]=g>>>8;a[o>>0]=g;c[f+20>>2]=1;if(!(c[f>>2]|0)){o=0;return o|0}o=c[j>>2]|0;if((d[o+2>>0]<<8|d[o+3>>0]|0)<((((c[e+16>>2]|0)+-4|0)/(d[i>>0]|0)|0|0)/3|0|0)){o=dt(e,f,h)|0;return o|0}else{o=et(e,f)|0;return o|0}return 0}function dt(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;n=c[f>>2]|0;a:do if(!n)h=-1;else{j=f+8|0;m=c[j>>2]|0;j=c[j+4>>2]|0;i=c[n+24>>2]|0;k=d[i+2>>0]<<8|d[i+3>>0];if(k|0){l=d[e+23>>0]|0;h=0;do{o=i+((G(h,l)|0)+4)|0;u=cw(d[o>>0]|0,0,56)|0;p=L()|0;v=cw(d[o+1>>0]|0,0,48)|0;p=L()|0|p;t=cw(d[o+2>>0]|0,0,40)|0;p=p|(L()|0);p=p|d[o+3>>0];s=cw(d[o+4>>0]|0,0,24)|0;p=p|(L()|0);r=cw(d[o+5>>0]|0,0,16)|0;p=p|(L()|0);q=cw(d[o+6>>0]|0,0,8)|0;p=p|(L()|0);o=Sv(v|u|t|s|r|q|0,p|0,d[o+7>>0]|0,0)|0;if((o|0)==(m|0)&(L()|0)==(j|0))break a;h=h+1|0}while(h>>>0>>0)}Us(e,0)|0;v=267;return v|0}while(0);c[f>>2]=0;i=ct(e,n,h,g+1|0)|0;h=Us(e,n)|0;if(i|0){v=i;return v|0}if(h|0){v=h;return v|0}j=e+84|0;h=c[j>>2]|0;m=f+8|0;l=m;k=c[l>>2]|0;l=c[l+4>>2]|0;do if(!(Vc(h,1)|0)){h=c[h+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){v=h;c[v>>2]=k;c[v+4>>2]=l;b[i>>1]=4;break}else{Pg(h,k,l);break}}while(0);Gc(c[j>>2]|0)|0;h=c[j>>2]|0;do if(h|0){i=c[h>>2]|0;v=h+136|0;u=c[v+4>>2]|0;if((u|0)>0|(u|0)==0&(c[v>>2]|0)>>>0>0)hc(i,h);j=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;v=h+64|0;c[v>>2]=0;c[v+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);v=7;return v|0}else{h=c[i+68>>2]&j;if(!h)break;return h|0}}while(0);j=e+108|0;h=c[j>>2]|0;l=m;k=c[l>>2]|0;l=c[l+4>>2]|0;do if(!(Vc(h,1)|0)){h=c[h+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){v=h;c[v>>2]=k;c[v+4>>2]=l;b[i>>1]=4;break}else{Pg(h,k,l);break}}while(0);Gc(c[j>>2]|0)|0;h=c[j>>2]|0;do if(h|0){i=c[h>>2]|0;v=h+136|0;u=c[v+4>>2]|0;if((u|0)>0|(u|0)==0&(c[v>>2]|0)>>>0>0)hc(i,h);j=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;v=h+64|0;c[v>>2]=0;c[v+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);v=7;return v|0}else{h=c[i+68>>2]&j;if(!h)break;return h|0}}while(0);v=m;h=c[v>>2]|0;if((h|0)==0&(c[v+4>>2]|0)==0)h=f+28|0;else{h=e+116+(((h>>>0)%97|0)<<2)|0;while(1){i=c[h>>2]|0;if((i|0)==(f|0))break;else h=i+28|0}v=f+28|0;c[h>>2]=c[v>>2];c[v>>2]=0;h=v}v=m;c[v>>2]=g;c[v+4>>2]=((g|0)<0)<<31>>31;v=e+68|0;c[h>>2]=c[v>>2];u=f+16|0;c[u>>2]=(c[u>>2]|0)+1;c[v>>2]=f;v=0;return v|0}function et(b,e){b=b|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0;t=Ra;Ra=Ra+96|0;q=t+48|0;n=t;r=c[e>>2]|0;if(!r){s=0;Ra=t;return s|0}o=c[e+24>>2]|0;l=d[o+2>>0]|0;k=d[o+3>>0]|0;p=a[b+23>>0]|0;m=cw(d[o+4>>0]|0,0,56)|0;j=L()|0;u=cw(d[o+5>>0]|0,0,48)|0;j=L()|0|j;h=cw(d[o+6>>0]|0,0,40)|0;j=j|(L()|0);j=j|d[o+7>>0];g=cw(d[o+8>>0]|0,0,24)|0;j=j|(L()|0);s=cw(d[o+9>>0]|0,0,16)|0;j=j|(L()|0);i=cw(d[o+10>>0]|0,0,8)|0;j=j|(L()|0);j=Sv(u|m|h|g|s|i|0,j|0,d[o+11>>0]|0,0)|0;i=L()|0;s=q;c[s>>2]=j;c[s+4>>2]=i;s=b+21|0;i=a[s>>0]|0;j=i&255;g=0;h=o+12|0;while(1){c[q+8+(g<<2)>>2]=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];c[q+8+((g|1)<<2)>>2]=d[h+5>>0]<<16|d[h+4>>0]<<24|d[h+6>>0]<<8|d[h+7>>0];g=g+2|0;if(g>>>0>=j>>>0)break;else h=h+8|0}m=i&255;i=l<<8|k;if(i>>>0>1){j=p&255;k=b+22|0;l=1;do{h=G(l,j)|0;v=o+(h+4)|0;z=cw(d[v>>0]|0,0,56)|0;u=L()|0;A=cw(d[v+1>>0]|0,0,48)|0;u=L()|0|u;y=cw(d[v+2>>0]|0,0,40)|0;u=u|(L()|0);u=u|d[v+3>>0];x=cw(d[v+4>>0]|0,0,24)|0;u=u|(L()|0);w=cw(d[v+5>>0]|0,0,16)|0;u=u|(L()|0);g=cw(d[v+6>>0]|0,0,8)|0;u=u|(L()|0);v=Sv(A|z|y|x|w|g|0,u|0,d[v+7>>0]|0,0)|0;u=L()|0;g=n;c[g>>2]=v;c[g+4>>2]=u;g=0;h=o+(h+12)|0;while(1){c[n+8+(g<<2)>>2]=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];c[n+8+((g|1)<<2)>>2]=d[h+5>>0]<<16|d[h+4>>0]<<24|d[h+6>>0]<<8|d[h+7>>0];g=g+2|0;if(g>>>0>=m>>>0)break;else h=h+8|0}if(!(a[k>>0]|0)){g=0;do{z=q+8+(g<<2)|0;B=+f[z>>2];C=+f[n+8+(g<<2)>>2];f[z>>2]=B>2];B=+f[n+8+(z<<2)>>2];f[A>>2]=C>B?C:B;g=g+2|0}while(g>>>0>>0)}else{g=0;do{z=q+8+(g<<2)|0;y=c[z>>2]|0;A=c[n+8+(g<<2)>>2]|0;c[z>>2]=(y|0)<(A|0)?y:A;z=g|1;A=q+8+(z<<2)|0;y=c[A>>2]|0;z=c[n+8+(z<<2)>>2]|0;c[A>>2]=(y|0)>(z|0)?y:z;g=g+2|0}while(g>>>0>>0)}l=l+1|0}while((l|0)!=(i|0))}k=e+8|0;j=c[k>>2]|0;k=c[k+4>>2]|0;i=q;c[i>>2]=j;c[i+4>>2]=k;i=c[r+24>>2]|0;l=d[i+2>>0]<<8|d[i+3>>0];a:do if(!l)g=267;else{h=p&255;g=0;while(1){m=i+((G(g,h)|0)+4)|0;v=cw(d[m>>0]|0,0,56)|0;A=L()|0;u=cw(d[m+1>>0]|0,0,48)|0;A=L()|0|A;w=cw(d[m+2>>0]|0,0,40)|0;A=A|(L()|0);A=A|d[m+3>>0];x=cw(d[m+4>>0]|0,0,24)|0;A=A|(L()|0);y=cw(d[m+5>>0]|0,0,16)|0;A=A|(L()|0);z=cw(d[m+6>>0]|0,0,8)|0;A=A|(L()|0);A=Sv(u|v|w|x|y|z|0,A|0,d[m+7>>0]|0,0)|0;if((A|0)==(j|0)&(L()|0)==(k|0))break;g=g+1|0;if(g>>>0>=l>>>0){g=267;break a}}A=bw(j|0,k|0,56)|0;L()|0;a[m>>0]=A;A=bw(j|0,k|0,48)|0;L()|0;a[m+1>>0]=A;A=bw(j|0,k|0,40)|0;L()|0;a[m+2>>0]=A;a[m+3>>0]=k;A=bw(j|0,k|0,24)|0;L()|0;a[m+4>>0]=A;A=bw(j|0,k|0,16)|0;L()|0;a[m+5>>0]=A;A=bw(j|0,k|0,8)|0;L()|0;a[m+6>>0]=A;a[m+7>>0]=j;if(a[s>>0]|0){h=0;g=m+8|0;while(1){A=c[q+8+(h<<2)>>2]|0;a[g>>0]=A>>>24;a[g+1>>0]=A>>>16;a[g+2>>0]=A>>>8;a[g+3>>0]=A;h=h+1|0;if(h>>>0>=(d[s>>0]|0)>>>0)break;else g=g+4|0}}c[r+20>>2]=1;g=et(b,r)|0}while(0);A=g;Ra=t;return A|0}function ft(b,e,g){b=b|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;C=Ra;Ra=Ra+48|0;z=C;h=c[e>>2]|0;if(!h){B=0;Ra=C;return B|0}y=b+23|0;A=b+21|0;x=b+22|0;w=0;b=e;a:while(1){if(w>>>0>999)break;w=w+1|0;u=b+8|0;t=c[u>>2]|0;u=c[u+4>>2]|0;j=c[h+24>>2]|0;e=d[j+2>>0]<<8|d[j+3>>0];if(!e)break;i=d[y>>0]|0;b=0;while(1){k=G(b,i)|0;v=j+(k+4)|0;n=cw(d[v>>0]|0,0,56)|0;s=L()|0;m=cw(d[v+1>>0]|0,0,48)|0;s=L()|0|s;o=cw(d[v+2>>0]|0,0,40)|0;s=s|(L()|0);s=s|d[v+3>>0];p=cw(d[v+4>>0]|0,0,24)|0;s=s|(L()|0);q=cw(d[v+5>>0]|0,0,16)|0;s=s|(L()|0);r=cw(d[v+6>>0]|0,0,8)|0;s=s|(L()|0);s=Sv(m|n|o|p|q|r|0,s|0,d[v+7>>0]|0,0)|0;if((s|0)==(t|0)&(L()|0)==(u|0))break;b=b+1|0;if(b>>>0>=e>>>0)break a}l=v+1|0;m=v+2|0;n=v+3|0;o=v+4|0;p=v+5|0;q=v+6|0;r=v+7|0;i=z;c[i>>2]=t;c[i+4>>2]=u;i=a[A>>0]|0;s=i&255;e=0;b=j+(k+12)|0;while(1){c[z+8+(e<<2)>>2]=d[b+1>>0]<<16|d[b>>0]<<24|d[b+2>>0]<<8|d[b+3>>0];c[z+8+((e|1)<<2)>>2]=d[b+5>>0]<<16|d[b+4>>0]<<24|d[b+6>>0]<<8|d[b+7>>0];e=e+2|0;if(e>>>0>=s>>>0)break;else b=b+8|0}b:do if(i<<24>>24){j=a[x>>0]|0;c:do if(j<<24>>24==1){b=0;while(1){e=z+8+(b<<2)|0;i=g+8+(b<<2)|0;if((c[i>>2]|0)<(c[e>>2]|0))break c;if((c[i+4>>2]|0)>(c[e+4>>2]|0))break c;b=b+2|0;if(b>>>0>=s>>>0)break b}}else{b=0;while(1){e=z+8+(b<<2)|0;i=g+8+(b<<2)|0;if(+f[i>>2]<+f[e>>2])break c;if(+f[i+4>>2]>+f[e+4>>2])break c;b=b+2|0;if(b>>>0>=s>>>0)break b}}while(0);if(!(j<<24>>24)){b=0;do{j=z+8+(b<<2)|0;D=+f[j>>2];E=+f[g+8+(b<<2)>>2];f[j>>2]=D>2];D=+f[g+8+(j<<2)>>2];f[k>>2]=E>D?E:D;b=b+2|0}while(b>>>0>>0)}else{b=0;do{j=z+8+(b<<2)|0;i=c[j>>2]|0;k=c[g+8+(b<<2)>>2]|0;c[j>>2]=(i|0)<(k|0)?i:k;j=b|1;k=z+8+(j<<2)|0;i=c[k>>2]|0;j=c[g+8+(j<<2)>>2]|0;c[k>>2]=(i|0)>(j|0)?i:j;b=b+2|0}while(b>>>0>>0)}s=bw(t|0,u|0,56)|0;L()|0;a[v>>0]=s;s=bw(t|0,u|0,48)|0;L()|0;a[l>>0]=s;s=bw(t|0,u|0,40)|0;L()|0;a[m>>0]=s;a[n>>0]=u;s=bw(t|0,u|0,24)|0;L()|0;a[o>>0]=s;s=bw(t|0,u|0,16)|0;L()|0;a[p>>0]=s;u=bw(t|0,u|0,8)|0;L()|0;a[q>>0]=u;a[r>>0]=t;if(a[A>>0]|0){e=0;b=v+8|0;while(1){v=c[z+8+(e<<2)>>2]|0;a[b>>0]=v>>>24;a[b+1>>0]=v>>>16;a[b+2>>0]=v>>>8;a[b+3>>0]=v;e=e+1|0;if(e>>>0>=(d[A>>0]|0)>>>0)break;else b=b+4|0}}c[h+20>>2]=1}while(0);b=c[h>>2]|0;if(!b){b=0;B=31;break}else{v=h;h=b;b=v}}if((B|0)==31){Ra=C;return b|0}B=267;Ra=C;return B|0}function gt(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;j=d+92|0;d=c[j>>2]|0;do if(!(Vc(d,1)|0)){d=c[d+100>>2]|0;i=d+8|0;if(!(b[i>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[i>>1]=4;break}else{Pg(d,e,f);break}}while(0);d=c[j>>2]|0;do if(!(Vc(d,2)|0)){i=c[d+100>>2]|0;d=i+40|0;i=i+48|0;if(!(b[i>>1]&9216)){f=d;c[f>>2]=g;c[f+4>>2]=h;b[i>>1]=4;break}else{Pg(d,g,h);break}}while(0);Gc(c[j>>2]|0)|0;d=c[j>>2]|0;if(!d){h=0;return h|0}i=c[d>>2]|0;h=d+136|0;g=c[h+4>>2]|0;if((g|0)>0|(g|0)==0&(c[h>>2]|0)>>>0>0)hc(i,d);e=kc(d)|0;c[d+20>>2]=770837923;c[d+36>>2]=-1;c[d+40>>2]=0;a[d+146>>0]=2;c[d+44>>2]=0;c[d+32>>2]=1;a[d+147>>0]=-1;c[d+48>>2]=0;h=d+64|0;c[h>>2]=0;c[h+4>>2]=0;if((e|0)==3082|(a[i+81>>0]|0)!=0){og(i);h=7;return h|0}else{h=c[i+68>>2]&e;return h|0}return 0}function ht(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;j=d+104|0;d=c[j>>2]|0;do if(!(Vc(d,1)|0)){d=c[d+100>>2]|0;i=d+8|0;if(!(b[i>>1]&9216)){c[d>>2]=e;c[d+4>>2]=f;b[i>>1]=4;break}else{Pg(d,e,f);break}}while(0);d=c[j>>2]|0;do if(!(Vc(d,2)|0)){i=c[d+100>>2]|0;d=i+40|0;i=i+48|0;if(!(b[i>>1]&9216)){f=d;c[f>>2]=g;c[f+4>>2]=h;b[i>>1]=4;break}else{Pg(d,g,h);break}}while(0);Gc(c[j>>2]|0)|0;d=c[j>>2]|0;if(!d){h=0;return h|0}i=c[d>>2]|0;h=d+136|0;g=c[h+4>>2]|0;if((g|0)>0|(g|0)==0&(c[h>>2]|0)>>>0>0)hc(i,d);e=kc(d)|0;c[d+20>>2]=770837923;c[d+36>>2]=-1;c[d+40>>2]=0;a[d+146>>0]=2;c[d+44>>2]=0;c[d+32>>2]=1;a[d+147>>0]=-1;c[d+48>>2]=0;h=d+64|0;c[h>>2]=0;c[h+4>>2]=0;if((e|0)==3082|(a[i+81>>0]|0)!=0){og(i);h=7;return h|0}else{h=c[i+68>>2]&e;return h|0}return 0}function it(b,d,e,g,h,i){b=b|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if((e|0)<=1)return;t=e>>>1;r=e-t|0;s=d+(t<<2)|0;it(b,d,t,g,h,i);it(b,s,r,g,h,i);ew(i|0,d|0,t<<2|0)|0;if(!((r|0)>0|(t|0)!=0))return;p=g<<1;q=p|1;o=(a[b+22>>0]|0)==0;e=0;g=0;do{n=c[i+(g<<2)>>2]|0;b=h+(n*48|0)+8+(p<<2)|0;if(o){v=c[s+(e<<2)>>2]|0;j=+f[b>>2];k=+f[h+(v*48|0)+8+(p<<2)>>2];l=+f[h+(n*48|0)+8+(q<<2)>>2];m=+f[h+(v*48|0)+8+(q<<2)>>2];b=v}else{v=c[s+(e<<2)>>2]|0;j=+(c[b>>2]|0);k=+(c[h+(v*48|0)+8+(p<<2)>>2]|0);l=+(c[h+(n*48|0)+8+(q<<2)>>2]|0);m=+(c[h+(v*48|0)+8+(q<<2)>>2]|0);b=v}do if((g|0)==(t|0))u=11;else{if(!((e|0)==(r|0)|j>2]=n;g=g+1|0}while(0);if((u|0)==11){u=0;c[d+(g+e<<2)>>2]=b;e=e+1|0}}while((e|0)<(r|0)|(g|0)<(t|0));return}function jt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0;if((b|0)<=1)return;m=b>>>1;k=b-m|0;l=a+(m<<2)|0;jt(a,m,d,e);jt(l,k,d,e);ew(e|0,a|0,m<<2|0)|0;if(!((k|0)>0|(m|0)!=0))return;b=0;f=0;do do if((f|0)!=(m|0)){h=c[e+(f<<2)>>2]|0;if((b|0)==(k|0)){c[a+(f+k<<2)>>2]=h;f=f+1|0;b=k;break}i=c[l+(b<<2)>>2]|0;j=a+(f+b<<2)|0;if(+g[d+(h<<3)>>3]<+g[d+(i<<3)>>3]){c[j>>2]=h;f=f+1|0;break}else{c[j>>2]=i;b=b+1|0;break}}else{c[a+(m+b<<2)>>2]=c[l+(b<<2)>>2];f=m;b=b+1|0}while(0);while((b|0)<(k|0)|(f|0)<(m|0));return}function kt(b){b=b|0;var e=0,f=0;f=0;do{switch(a[26496+(f*12|0)+5>>0]|0){case 1:{e=b;break}case 2:{e=-1;break}default:e=0}Ed(b,c[26496+(f*12|0)>>2]|0,a[26496+(f*12|0)+4>>0]|0,d[26496+(f*12|0)+6>>0]|0,e,c[26496+(f*12|0)+8>>2]|0,0,0)|0;f=f+1|0}while((f|0)!=40);Ed(b,58197,1,1,0,0,182,99)|0;Ed(b,58203,1,1,0,0,182,100)|0;Ed(b,58212,1,1,0,0,183,101)|0;Ed(b,58217,1,1,0,0,183,102)|0;Ed(b,58224,1,1,0,0,183,103)|0;Ed(b,58239,1,1,0,0,183,104)|0;return 0}function lt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0;if((b|0)!=1)Y(58254,58262,1395,58332);a=Hc(a,24)|0;if(($c(c[d>>2]|0)|0)==5)return;b=a+16|0;k=b;k=Sv(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;j=L()|0;i=b;c[i>>2]=k;c[i+4>>2]=j;f=+pc(c[d>>2]|0);e=+g[a>>3];h=f-e;d=b;e=e+h/(+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0));g[a>>3]=e;d=a+8|0;g[d>>3]=+g[d>>3]+h*(f-e);return}function mt(a){a=a|0;var b=0,d=0,e=0,f=0.0;b=Hc(a,0)|0;if(b|0?(e=b+16|0,d=c[e>>2]|0,e=c[e+4>>2]|0,(e|0)>0|(e|0)==0&d>>>0>1):0){f=+g[b+8>>3];e=Sv(d|0,e|0,-1,-1)|0;wc(a,+u(+(f/(+(e>>>0)+4294967296.0*+(L()|0)))));return}wc(a,0.0);return}function nt(a){a=a|0;var b=0,d=0,e=0,f=0.0;b=Hc(a,0)|0;if(b|0?(e=b+16|0,d=c[e>>2]|0,e=c[e+4>>2]|0,(e|0)>0|(e|0)==0&d>>>0>1):0){f=+g[b+8>>3];e=Sv(d|0,e|0,-1,-1)|0;wc(a,f/(+(e>>>0)+4294967296.0*+(L()|0)));return}wc(a,0.0);return}function ot(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0;if((b|0)!=1)Y(58254,58262,1418,58323);e=$c(c[d>>2]|0)|0;if((e|0)==5)return;a=Hc(a,64)|0;h=a+56|0;do if(!(c[h>>2]|0)){b=nu(1,12)|0;c[h>>2]=b;if((e|0)==1){c[b>>2]=0;c[b+4>>2]=159;b=a+48|0;c[b>>2]=0;c[b+4>>2]=0;b=a+16|0;a=b;a=Sv(c[a>>2]|0,c[a+4>>2]|0,1,0)|0;e=L()|0;c[b>>2]=a;c[b+4>>2]=e;b=c[d>>2]|0;break}else{f=a+48|0;e=f;c[e>>2]=1;c[e+4>>2]=0;c[b>>2]=0;c[b+4>>2]=160;b=f;f=9;break}}else{b=a+48|0;f=9}while(0);if((f|0)==9){f=b;e=c[f>>2]|0;f=c[f+4>>2]|0;b=a+16|0;i=b;i=Sv(c[i>>2]|0,c[i+4>>2]|0,1,0)|0;a=L()|0;c[b>>2]=i;c[b+4>>2]=a;b=c[d>>2]|0;if(!((e|0)==0&(f|0)==0)){j=+pc(b);d=nu(1,8)|0;g[d>>3]=j;b=c[h>>2]|0;e=c[b+4>>2]|0;a=c[b>>2]|0;a:do if(a){while(1){a=Xa[e&255](c[a+8>>2]|0,d)|0;if(!a)break;b=c[b>>2]|0;b=(a|0)>0?b:b+4|0;a=c[b>>2]|0;if(!a)break a}i=(c[b>>2]|0)+16|0;f=i;f=Sv(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;h=L()|0;c[i>>2]=f;c[i+4>>2]=h;mu(d);return}while(0);i=nu(1,24)|0;c[i+8>>2]=d;h=i+16|0;c[h>>2]=1;c[h+4>>2]=0;c[b>>2]=i;return}}a=rc(b)|0;e=L()|0;d=nu(1,8)|0;b=d;c[b>>2]=a;c[b+4>>2]=e;b=c[h>>2]|0;e=c[b+4>>2]|0;a=c[b>>2]|0;b:do if(a){while(1){a=Xa[e&255](c[a+8>>2]|0,d)|0;if(!a)break;b=c[b>>2]|0;b=(a|0)>0?b:b+4|0;a=c[b>>2]|0;if(!a)break b}i=(c[b>>2]|0)+16|0;f=i;f=Sv(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;h=L()|0;c[i>>2]=f;c[i+4>>2]=h;mu(d);return}while(0);i=nu(1,24)|0;c[i+8>>2]=d;h=i+16|0;c[h>>2]=1;c[h+4>>2]=0;c[b>>2]=i;return}function pt(a){a=a|0;var b=0,d=0,e=0;b=Hc(a,0)|0;if(!b)return;d=b+56|0;e=c[d>>2]|0;if(!e)return;vt(c[e>>2]|0,68,b);wt(c[c[d>>2]>>2]|0);mu(c[d>>2]|0);e=b+40|0;if(!((c[e>>2]|0)==1&(c[e+4>>2]|0)==0))return;e=b+48|0;if((c[e>>2]|0)==0&(c[e+4>>2]|0)==0){e=b;Ac(a,c[e>>2]|0,c[e+4>>2]|0);return}else{wc(a,+g[b+8>>3]);return}}function qt(a){a=a|0;var b=0,d=0;b=Hc(a,0)|0;if(!b)return;d=b+16|0;g[b+24>>3]=(+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0))*.5;tt(a);return}function rt(a){a=a|0;var b=0,d=0;b=Hc(a,0)|0;if(!b)return;d=b+16|0;g[b+24>>3]=(+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0))*.25;tt(a);return}function st(a){a=a|0;var b=0,d=0.0,e=0;b=Hc(a,0)|0;if(!b)return;e=b+16|0;e=Yv(c[e>>2]|0,c[e+4>>2]|0,3,0)|0;d=(+(e>>>0)+4294967296.0*+(L()|0))*.25;g[b+24>>3]=d;tt(a);return}function tt(a){a=a|0;var b=0,d=0,e=0,f=0,h=0;e=Hc(a,0)|0;if(!e)return;b=e+56|0;d=c[b>>2]|0;if(!d)return;c[e+60>>2]=0;vt(c[d>>2]|0,69,e);wt(c[c[b>>2]>>2]|0);mu(c[b>>2]|0);h=e+48|0;if(!((c[h>>2]|0)==0&(c[h+4>>2]|0)==0)){h=e+40|0;wc(a,+g[e+8>>3]/(+((c[h>>2]|0)>>>0)+4294967296.0*+(c[h+4>>2]|0)));return}h=e+40|0;f=c[h>>2]|0;h=c[h+4>>2]|0;d=e;b=c[d>>2]|0;d=c[d+4>>2]|0;if((f|0)==1&(h|0)==0){Ac(a,b,d);return}else{wc(a,(+(b>>>0)+4294967296.0*+(d|0))/(+(f>>>0)+4294967296.0*+(h|0)));return}}function ut(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0.0;l=e+60|0;if((c[l>>2]|0)>0)return;m=+g[e+24>>3];h=e+16|0;f=c[h>>2]|0;h=c[h+4>>2]|0;i=e+32|0;k=i;j=c[k>>2]|0;k=c[k+4>>2]|0;b=Sv(j|0,k|0,b|0,d|0)|0;d=L()|0;do if(m<=+(b|0)){k=Tv(f|0,h|0,j|0,k|0)|0;L()|0;if(!(+(f>>>0)+4294967296.0*+(h|0)-m<=+(k|0))){c[l>>2]=1;break}l=e+40|0;j=l;j=Sv(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;k=L()|0;c[l>>2]=j;c[l+4>>2]=k;l=e+48|0;if((c[l>>2]|0)==0&(c[l+4>>2]|0)==0){j=c[a>>2]|0;k=e;j=Sv(c[k>>2]|0,c[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0;k=L()|0;l=e;c[l>>2]=j;c[l+4>>2]=k;break}else{l=e+8|0;g[l>>3]=+g[a>>3]+ +g[l>>3];break}}while(0);l=i;c[l>>2]=b;c[l+4>>2]=d;return}function vt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(!a)return;do{e=c[a>>2]|0;if(e|0)vt(e,b,d);e=a+16|0;db[b&127](c[a+8>>2]|0,c[e>>2]|0,c[e+4>>2]|0,d);a=c[a+4>>2]|0}while((a|0)!=0);return}function wt(a){a=a|0;var b=0;if(!a)return;mu(c[a+8>>2]|0);b=c[a>>2]|0;if(b|0)wt(b);b=c[a+4>>2]|0;if(b|0)wt(b);mu(a);return}function xt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0;i=e+48|0;if((c[i>>2]|0)==0&(c[i+4>>2]|0)==0){a=c[a>>2]|0;f=e+32|0;i=f;h=c[i>>2]|0;i=c[i+4>>2]|0;if((h|0)==(b|0)&(i|0)==(d|0)){e=e+40|0;b=e;b=Sv(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;d=L()|0;c[e>>2]=b;c[e+4>>2]=d;return}if(!((i|0)<(d|0)|(i|0)==(d|0)&h>>>0>>0))return;i=e;c[i>>2]=a;c[i+4>>2]=((a|0)<0)<<31>>31;i=f;c[i>>2]=b;c[i+4>>2]=d;e=e+40|0;c[e>>2]=1;c[e+4>>2]=0;return}else{j=+g[a>>3];a=e+32|0;h=a;f=c[h>>2]|0;h=c[h+4>>2]|0;if((f|0)==(b|0)&(h|0)==(d|0)){e=e+40|0;b=e;b=Sv(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;d=L()|0;c[e>>2]=b;c[e+4>>2]=d;return}if(!((h|0)<(d|0)|(h|0)==(d|0)&f>>>0>>0))return;g[e+8>>3]=j;i=a;c[i>>2]=b;c[i+4>>2]=d;e=e+40|0;c[e>>2]=1;c[e+4>>2]=0;return}}function yt(a,b){a=a|0;b=b|0;var d=0,e=0;e=a;a=c[e>>2]|0;e=c[e+4>>2]|0;d=b;b=c[d>>2]|0;d=c[d+4>>2]|0;return ((a|0)==(b|0)&(e|0)==(d|0)?0:(e|0)<(d|0)|(e|0)==(d|0)&a>>>0>>0?-1:1)|0}function zt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+g[a>>3];c=+g[b>>3];return (d==c?0:d>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+z(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Bt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,379,58968);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+A(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Ct(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,380,58959);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+B(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Dt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0;if((b|0)!=2)Y(58580,58262,570,58950);if((sc(c[d>>2]|0)|0)!=5?(e=d+4|0,(sc(c[e>>2]|0)|0)!=5):0){f=+pc(c[d>>2]|0);wc(a,+C(+f,+(+pc(c[e>>2]|0))));return}Bc(a);return}function Et(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,394,58940);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+Hv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Ft(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,402,58930);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+Jv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Gt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,410,58920);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+Fv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Ht(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;k=o+8|0;j=o;if((e|0)!=2)Y(58580,58262,1680,58900);if((sc(c[f>>2]|0)|0)!=5?(g=f+4|0,(sc(c[g>>2]|0)|0)!=5):0){h=nc(c[f>>2]|0)|0;i=nc(c[g>>2]|0)|0;e=a[h>>0]|0;a:do if(!(e<<24>>24))n=17;else{f=0;while(1){e=e&255;if(yu(e)|0)break;f=f+1|0;e=a[h+f>>0]|0;if(!(e<<24>>24)){n=17;break a}}e=(zu(e)|0)&255;a[k>>0]=e;e=1;while(1){g=a[h+f>>0]|0;if(!(g<<24>>24)){n=15;break}g=a[27264+(g&127)>>0]|0;if(g<<24>>24){a[k+e>>0]=(g&255)+48;e=e+1|0}if((e|0)<4)f=f+1|0;else break}if((n|0)==15)gw(k+e|0,48,4-e|0)|0;a[k+4>>0]=0}while(0);if((n|0)==17){a[k>>0]=a[58915]|0;a[k+1>>0]=a[58916]|0;a[k+2>>0]=a[58917]|0;a[k+3>>0]=a[58918]|0;a[k+4>>0]=a[58919]|0}e=a[i>>0]|0;b:do if(!(e<<24>>24))n=29;else{f=0;while(1){e=e&255;if(yu(e)|0)break;f=f+1|0;e=a[i+f>>0]|0;if(!(e<<24>>24)){n=29;break b}}e=(zu(e)|0)&255;a[j>>0]=e;e=1;while(1){g=a[i+f>>0]|0;if(!(g<<24>>24)){n=27;break}g=a[27264+(g&127)>>0]|0;if(g<<24>>24){a[j+e>>0]=(g&255)+48;e=e+1|0}if((e|0)<4)f=f+1|0;else break}if((n|0)==27)gw(j+e|0,48,4-e|0)|0;a[j+4>>0]=0}while(0);if((n|0)==29){a[j>>0]=a[58915]|0;a[j+1>>0]=a[58916]|0;a[j+2>>0]=a[58917]|0;a[j+3>>0]=a[58918]|0;a[j+4>>0]=a[58919]|0}g=j;m=0;f=0;h=k;e=a[k>>0]|0;while(1){i=h+1|0;e=e&255;l=a[26976+e>>0]|0;k=l&255;switch(l<<24>>24){case 4:{l=65533;break}case 3:{j=h+2|0;e=(e<<6)+(d[i>>0]|0)|0;n=34;break}case 2:{j=i;n=34;break}case 1:{n=35;break}default:l=e}if((n|0)==34){i=j+1|0;e=(e<<6)+(d[j>>0]|0)|0;n=35}if((n|0)==35){n=0;l=(e<<6)+(d[i>>0]|0)-(c[27232+(k<<2)>>2]|0)|0;l=(l&-2|0)==65534|((l&-2048|0)==55296?1:(l&c[27248+(k<<2)>>2]|0)==0)?65533:l}i=g+1|0;e=d[g>>0]|0;j=a[26976+e>>0]|0;k=j&255;switch(j<<24>>24){case 4:{e=65533;break}case 3:{j=g+2|0;e=(e<<6)+(d[i>>0]|0)|0;n=39;break}case 2:{j=i;n=39;break}case 1:{n=40;break}default:{}}if((n|0)==39){i=j+1|0;e=(e<<6)+(d[j>>0]|0)|0;n=40}if((n|0)==40){n=0;e=(e<<6)+(d[i>>0]|0)-(c[27232+(k<<2)>>2]|0)|0;e=(e&-2|0)==65534|((e&-2048|0)==55296?1:(e&c[27248+(k<<2)>>2]|0)==0)?65533:e}e=(l|0)==(e|0)&1;do{h=h+1|0;i=a[h>>0]|0}while((i&-64)<<24>>24==-128);do g=g+1|0;while((a[g>>0]&-64)<<24>>24==-128);f=f+e|0;e=m+1|0;if((e|0)==4)break;else{m=e;e=i}}zc(b,f);Ra=o;return}Bc(b);Ra=o;return}function It(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,498,58888);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,e*180.0/3.141592653589793);return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Jt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,499,58876);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,e*3.141592653589793/180.0);return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Kt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,420,58868);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+w(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Lt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,419,58860);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+x(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Mt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,421,58852);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+y(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Nt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,422,58844);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,1.0/+y(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Ot(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,446,58835);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+iv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Pt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,438,58826);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+jv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Qt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,454,58817);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+Iv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Rt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,456,58808);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,1.0/+Iv(e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function St(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,474,58800);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+D(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Tt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,472,58792);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+E(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Ut(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,473,58782);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+Fa(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Vt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0;if((b|0)!=2)Y(58580,58262,546,58772);if((sc(c[d>>2]|0)|0)!=5?(g=d+4|0,(sc(c[g>>2]|0)|0)!=5):0){f=+pc(c[d>>2]|0);e=+pc(c[g>>2]|0);g=uu()|0;c[g>>2]=0;g=uu()|0;if(!(c[g>>2]|0)){wc(a,+v(+f,+e));return}else{d=uu()|0;d=dv(c[d>>2]|0)|0;g=uu()|0;xc(a,d,c[g>>2]|0);return}}Bc(a);return}function Wt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0;if((b|0)!=1)Y(58254,58262,590,58763);switch(sc(c[d>>2]|0)|0){case 1:{e=rc(c[d>>2]|0)|0;d=L()|0;b=(d|0)>0|(d|0)==0&e>>>0>0;d=((e|0)!=0|(d|0)!=0)<<31>>31;Ac(a,b?1:d,b?0:((d|0)<0)<<31>>31);return}case 5:{Bc(a);return}default:{f=+pc(c[d>>2]|0);wc(a,f>0.0?1.0:+((f<0.0)<<31>>31));return}}}function Xt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,375,58754);if((sc(c[d>>2]|0)|0)==5){Bc(a);return}e=+pc(c[d>>2]|0);d=uu()|0;c[d>>2]=0;d=uu()|0;if(!(c[d>>2]|0)){wc(a,+u(+e));return}else{b=uu()|0;b=dv(c[b>>2]|0)|0;d=uu()|0;xc(a,b,c[d>>2]|0);return}}function Yt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,514,58743);switch(sc(c[d>>2]|0)|0){case 1:{b=rc(c[d>>2]|0)|0;d=L()|0;Ac(a,Yv(b|0,d|0,b|0,d|0)|0,L()|0);return}case 5:{Bc(a);return}default:{e=+pc(c[d>>2]|0);wc(a,e*e);return}}}function Zt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,620,58734);switch(sc(c[d>>2]|0)|0){case 1:{Ac(a,rc(c[d>>2]|0)|0,L()|0);return}case 5:{Bc(a);return}default:{e=+F(+(+pc(c[d>>2]|0)));Ac(a,~~e>>>0,+t(e)>=1.0?(e>0.0?~~+H(+s(e/4294967296.0),4294967295.0)>>>0:~~+F((e-+(~~e>>>0))/4294967296.0)>>>0):0);return}}}function _t(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;if((b|0)!=1)Y(58254,58262,645,58724);switch(sc(c[d>>2]|0)|0){case 1:{Ac(a,rc(c[d>>2]|0)|0,L()|0);return}case 5:{Bc(a);return}default:{e=+s(+(+pc(c[d>>2]|0)));Ac(a,~~e>>>0,+t(e)>=1.0?(e>0.0?~~+H(+s(e/4294967296.0),4294967295.0)>>>0:~~+F((e-+(~~e>>>0))/4294967296.0)>>>0):0);return}}}function $t(a,b,c){a=a|0;b=b|0;c=c|0;wc(a,3.141592653589793);return}function au(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if((b|0)!=2)return;if((sc(c[d>>2]|0)|0)==5)return;j=rc(c[d+4>>2]|0)|0;f=L()|0;if((f|0)<0){xc(a,58611,-1);return}g=oc(c[d>>2]|0)|0;h=nb((G(g,j)|0)+1|0)|0;i=nb(g+1|0)|0;b=(h|0)!=0;e=(i|0)!=0;if(b&e){Su(i,nc(c[d>>2]|0)|0)|0;if((f|0)>0|(f|0)==0&j>>>0>0){b=0;e=0;do{Su(h+(G(g,b)|0)|0,i)|0;b=Sv(b|0,e|0,1,0)|0;e=L()|0}while((e|0)<(f|0)|(e|0)==(f|0)&b>>>0>>0)}Cc(a,h,-1,-1);qb(h);qb(i);return}Ec(a);if(b)qb(h);if(!e)return;qb(i);return}function bu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(b|0)==3;if((b|1|0)!=3)Y(58692,58262,1038,58710);if((sc(c[d>>2]|0)|0)!=5?(e=d+4|0,(sc(c[e>>2]|0)|0)!=5):0){f=nc(c[d>>2]|0)|0;if(!f)return;e=nc(c[e>>2]|0)|0;if(g){b=(qc(c[d+8>>2]|0)|0)+-1|0;b=(b|0)>0?b:0}else b=0;zc(a,(ku(f,e,b)|0)+1|0);return}Bc(a);return}function cu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if((e|0)!=2)Y(58580,58262,1073,58683);if((sc(c[f>>2]|0)|0)!=5?(g=f+4|0,(sc(c[g>>2]|0)|0)!=5):0){n=nc(c[f>>2]|0)|0;k=qc(c[g>>2]|0)|0;j=0;i=n;e=a[n>>0]|0;while(1){g=i+1|0;e=e&255;f=a[26976+e>>0]|0;h=f&255;switch(f<<24>>24){case 4:break;case 3:{f=i+2|0;e=(e<<6)+(d[g>>0]|0)|0;q=10;break}case 2:{f=g;q=10;break}case 1:{m=g;l=e;q=11;break}default:{p=e;q=12}}if((q|0)==10){m=f+1|0;l=(e<<6)+(d[f>>0]|0)|0;q=11}if((q|0)==11?(q=0,o=(l<<6)+(d[m>>0]|0)-(c[27232+(h<<2)>>2]|0)|0,!((o&-2|0)==65534|((o&-2048|0)==55296?1:(o&c[27248+(h<<2)>>2]|0)==0))):0){p=o;q=12}if((q|0)==12?(q=0,(p|0)==0):0)break;f=j+1|0;if((j|0)>=(k|0))break;e=i;do{e=e+1|0;g=a[e>>0]|0}while((g&-64)<<24>>24==-128);j=f;i=e;e=g}e=i-n|0;f=nb(e+1|0)|0;if(!f){Ec(b);return}else{nv(f,n,e)|0;a[f+e>>0]=0;Cc(b,f,-1,-1);qb(f);return}}Bc(b);return}function du(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if((e|0)!=2)Y(58580,58262,1113,58673);if((sc(c[f>>2]|0)|0)!=5?(g=f+4|0,(sc(c[g>>2]|0)|0)!=5):0){f=nc(c[f>>2]|0)|0;k=qc(c[g>>2]|0)|0;j=0;q=f;e=a[f>>0]|0;while(1){h=q+1|0;e=e&255;g=a[26976+e>>0]|0;i=g&255;switch(g<<24>>24){case 4:break;case 3:{g=q+2|0;e=(e<<6)+(d[h>>0]|0)|0;p=9;break}case 2:{g=h;p=9;break}case 1:{m=h;l=e;p=10;break}default:{o=e;p=11}}if((p|0)==9){m=g+1|0;l=(e<<6)+(d[g>>0]|0)|0;p=10}if((p|0)==10?(p=0,n=(l<<6)+(d[m>>0]|0)-(c[27232+(i<<2)>>2]|0)|0,!((n&-2|0)==65534|((n&-2048|0)==55296?1:(n&c[27248+(i<<2)>>2]|0)==0))):0){o=n;p=11}if((p|0)==11?(p=0,(o|0)==0):0)break;e=q;do{e=e+1|0;g=a[e>>0]|0}while((g&-64)<<24>>24==-128);j=j+1|0;q=e;e=g}e=j-k|0;if((e|0)>0)while(1){do f=f+1|0;while((a[f>>0]&-64)<<24>>24==-128);if((e|0)>1)e=e+-1|0;else break}e=nb(q+1-f|0)|0;if(!e){Ec(b);return}else{Su(e,f)|0;Cc(b,e,-1,-1);qb(e);return}}Bc(b);return}function eu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((e|0)!=1)Y(58653,58262,1323,58661);if((sc(c[f>>2]|0)|0)==5){Bc(b);return}e=nc(c[f>>2]|0)|0;f=Eu(e)|0;l=nb(f+1|0)|0;if(!l){Ec(b);return}j=l+f|0;a[j>>0]=0;j=j+-1|0;a:while(1){while(1){h=e+1|0;f=d[e>>0]|0;g=a[26976+f>>0]|0;i=g&255;switch(g<<24>>24){case 4:break;case 3:{g=e+2|0;f=(f<<6)+(d[h>>0]|0)|0;p=12;break}case 2:{g=h;p=12;break}case 1:{m=h;k=f;p=13;break}default:{o=f;p=14}}if((p|0)==12){m=g+1|0;k=(f<<6)+(d[g>>0]|0)|0;p=13}if((p|0)==13?(p=0,n=(k<<6)+(d[m>>0]|0)-(c[27232+(i<<2)>>2]|0)|0,!((n&-2|0)==65534|((n&-2048|0)==55296?1:(n&c[27248+(i<<2)>>2]|0)==0))):0){o=n;p=14}if((p|0)==14?(p=0,(o|0)==0):0)break a;f=e;while(1){i=f+1|0;if((a[i>>0]&-64)<<24>>24==-128)f=i;else break}if(f>>>0>>0)e=i;else break}h=1;g=j;while(1){j=g;g=g+-1|0;a[j>>0]=a[f>>0]|0;f=i+~h|0;if(f>>>0>>0)break;else h=h+1|0}j=g;e=i}Cc(b,l,-1,-1);qb(l);return}function fu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((d|0)!=1)Y(58254,58262,724,58642);if((sc(c[e>>2]|0)|0)==5){Bc(b);return}f=nc(c[e>>2]|0)|0;d=nb((Eu(f)|0)+1|0)|0;i=Su(d,f)|0;if(!i){Ec(b);return}e=a[f>>0]|0;if(e<<24>>24){h=1;g=e<<24>>24;while(1){f=f+1|0;if(!(wu(g)|0)){if((h|0)==1)e=zu(g)|0;else e=Du(g)|0;h=0;e=e&255}else h=1;g=d+1|0;a[d>>0]=e;e=a[f>>0]|0;if(!(e<<24>>24)){d=g;break}else{d=g;g=e<<24>>24}}}a[d>>0]=0;Cc(b,i,-1,-1);qb(i);return}function gu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if((e|0)!=2)Y(58580,58262,771,58633);if((sc(c[f>>2]|0)|0)==5){Bc(b);return}l=nc(c[f>>2]|0)|0;j=rc(c[f+4>>2]|0)|0;k=L()|0;if((k|0)<0){xc(b,58611,-1);return}e=a[l>>0]|0;if((l|0)==(-1|0)|e<<24>>24==0)f=0;else{f=0;g=l;do{g=g+((d[26976+(e&255)>>0]|0)+1)|0;f=f+1|0;e=a[g>>0]|0}while(!(e<<24>>24==0|(g|0)==(-1|0)))}i=((f|0)<0)<<31>>31;do if((k|0)>(i|0)|(k|0)==(i|0)&j>>>0>f>>>0){e=nb(j+1-f+(Eu(l)|0)|0)|0;if(!e){Ec(b);return}g=1;h=e;do{m=h;h=h+1|0;a[m>>0]=32;g=g+1|0;m=Sv(g|0,0,f|0,i|0)|0;n=L()|0}while(!((n|0)>(k|0)|(n|0)==(k|0)&m>>>0>j>>>0));Su(h,l)|0}else{e=nb((Eu(l)|0)+1|0)|0;f=Su(e,l)|0;if(f|0){Cc(b,f,-1,-1);break}Ec(b);return}while(0);Cc(b,e,-1,-1);qb(e);return}function hu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;if((e|0)!=2)Y(58580,58262,825,58624);if((sc(c[f>>2]|0)|0)==5){Bc(b);return}h=nc(c[f>>2]|0)|0;j=rc(c[f+4>>2]|0)|0;k=L()|0;if((k|0)<0){xc(b,58611,-1);return}e=a[h>>0]|0;if((h|0)==(-1|0)|e<<24>>24==0)f=0;else{f=0;g=h;do{g=g+((d[26976+(e&255)>>0]|0)+1)|0;f=f+1|0;e=a[g>>0]|0}while(!(e<<24>>24==0|(g|0)==(-1|0)))}i=((f|0)<0)<<31>>31;do if((k|0)>(i|0)|(k|0)==(i|0)&j>>>0>f>>>0){g=Eu(h)|0;e=nb(j+1-f+g|0)|0;if(!e){Ec(b);return}Su(e,h)|0;h=1;g=e+g|0;do{l=g;g=g+1|0;a[l>>0]=32;h=h+1|0;l=Sv(h|0,0,f|0,i|0)|0;m=L()|0}while(!((m|0)>(k|0)|(m|0)==(k|0)&l>>>0>j>>>0));a[g>>0]=0}else{e=nb((Eu(h)|0)+1|0)|0;f=Su(e,h)|0;if(f|0){Cc(b,f,-1,-1);break}Ec(b);return}while(0);Cc(b,e,-1,-1);qb(e);return}function iu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((e|0)!=2)Y(58580,58262,880,58602);if((sc(c[f>>2]|0)|0)==5){Bc(b);return}l=nc(c[f>>2]|0)|0;m=rc(c[f+4>>2]|0)|0;n=L()|0;if((n|0)<0){xc(b,58611,-1);return}e=a[l>>0]|0;if((l|0)==(-1|0)|e<<24>>24==0)j=0;else{f=0;g=l;do{g=g+((d[26976+(e&255)>>0]|0)+1)|0;f=f+1|0;e=a[g>>0]|0}while(!(e<<24>>24==0|(g|0)==(-1|0)));j=f}k=((j|0)<0)<<31>>31;do if((n|0)>(k|0)|(n|0)==(k|0)&m>>>0>j>>>0){i=Eu(l)|0;e=nb(m+1-j+i|0)|0;if(!e){Ec(b);return}h=Sv(j|0,k|0,2,0)|0;g=L()|0;if((g|0)>(n|0)|(g|0)==(n|0)&h>>>0>m>>>0){f=e;h=1}else{h=1;g=e;while(1){f=g+1|0;a[g>>0]=32;h=h+1|0;g=Sv(h<<1|0,0,j|0,k|0)|0;o=L()|0;if((o|0)>(n|0)|(o|0)==(n|0)&g>>>0>m>>>0)break;else g=f}}Su(f,l)|0;f=f+i|0;o=Sv(h|0,0,j|0,k|0)|0;l=L()|0;if(!((l|0)>(n|0)|(l|0)==(n|0)&o>>>0>m>>>0))while(1){g=f+1|0;a[f>>0]=32;h=h+1|0;o=Sv(h|0,0,j|0,k|0)|0;l=L()|0;if((l|0)>(n|0)|(l|0)==(n|0)&o>>>0>m>>>0){f=g;break}else f=g}a[f>>0]=0}else{e=nb((Eu(l)|0)+1|0)|0;f=Su(e,l)|0;if(f|0){Cc(b,f,-1,-1);break}Ec(b);return}while(0);Cc(b,e,-1,-1);qb(e);return}function ju(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((e|0)!=2)Y(58580,58262,939,58588);if((sc(c[f>>2]|0)|0)!=5?(g=f+4|0,(sc(c[g>>2]|0)|0)!=5):0){e=nc(c[f>>2]|0)|0;m=nc(c[g>>2]|0)|0;n=nb((Eu(e)|0)+1|0)|0;if(!n){Ec(b);return}l=n;f=e;e=a[e>>0]|0;while(1){g=f+1|0;e=e&255;k=a[26976+e>>0]|0;i=k&255;switch(k<<24>>24){case 4:{e=65533;break}case 3:{h=f+2|0;e=(e<<6)+(d[g>>0]|0)|0;o=12;break}case 2:{h=g;o=12;break}case 1:{o=13;break}default:o=14}if((o|0)==12){g=h+1|0;e=(e<<6)+(d[h>>0]|0)|0;o=13}if((o|0)==13){o=0;e=(e<<6)+(d[g>>0]|0)-(c[27232+(i<<2)>>2]|0)|0;if((e&-2|0)==65534|((e&-2048|0)==55296?1:(e&c[27248+(i<<2)>>2]|0)==0))e=65533;else o=14}if((o|0)==14){o=0;if(!e)break}g=m;h=a[m>>0]|0;while(1){j=g+1|0;i=h&255;h=a[26976+i>>0]|0;k=h&255;switch(h<<24>>24){case 4:{i=65533;break}case 3:{h=g+2|0;i=(i<<6)+(d[j>>0]|0)|0;o=20;break}case 2:{h=j;o=20;break}case 1:{o=21;break}default:{}}if((o|0)==20){j=h+1|0;i=(i<<6)+(d[h>>0]|0)|0;o=21}if((o|0)==21){o=0;i=(i<<6)+(d[j>>0]|0)-(c[27232+(k<<2)>>2]|0)|0;i=(i&-2|0)==65534|((i&-2048|0)==55296?1:(i&c[27248+(k<<2)>>2]|0)==0)?65533:i}h=(i|0)!=0;if((i|0)==(e|0)|h^1)break;do{g=g+1|0;h=a[g>>0]|0}while((h&-64)<<24>>24==-128)}if(h){e=g;do e=e+1|0;while((a[e>>0]&-64)<<24>>24==-128);e=e-g|0;nv(l,g,e)|0;e=l+e|0}else e=l;do{f=f+1|0;g=a[f>>0]|0}while((g&-64)<<24>>24==-128);l=e;e=g}a[l>>0]=0;Cc(b,n,-1,-1);qb(n);return}Bc(b);return}function ku(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=a[b>>0]|0;if(!(t<<24>>24)){w=-1;return w|0}g=e;n=0;l=a[e>>0]|0;while(1){j=g+1|0;e=l&255;i=a[26976+e>>0]|0;k=i&255;switch(i<<24>>24){case 4:break;case 3:{h=g+2|0;e=(e<<6)+(d[j>>0]|0)|0;w=6;break}case 2:{h=j;w=6;break}case 1:{o=j;m=e;w=7;break}default:{q=e;w=8}}if((w|0)==6){o=h+1|0;m=(e<<6)+(d[h>>0]|0)|0;w=7}if((w|0)==7?(w=0,p=(m<<6)+(d[o>>0]|0)-(c[27232+(k<<2)>>2]|0)|0,!((p&-2|0)==65534|((p&-2048|0)==55296?1:(p&c[27248+(k<<2)>>2]|0)==0))):0){q=p;w=8}if((w|0)==8?(w=0,(q|0)==0):0)break;h=n+1|0;if((n|0)>=(f|0))break;do{g=g+1|0;e=a[g>>0]|0}while((e&-64)<<24>>24==-128);n=h;l=e}e=0;while(1){j=g+1|0;h=l&255;k=i&255;switch(i<<24>>24){case 4:break;case 3:{i=g+2|0;h=(h<<6)+(d[j>>0]|0)|0;w=15;break}case 2:{i=j;w=15;break}case 1:{s=j;r=h;w=16;break}default:{v=h;w=17}}if((w|0)==15){s=i+1|0;r=(h<<6)+(d[i>>0]|0)|0;w=16}if((w|0)==16?(w=0,u=(r<<6)+(d[s>>0]|0)-(c[27232+(k<<2)>>2]|0)|0,!((u&-2|0)==65534|((u&-2048|0)==55296?1:(u&c[27248+(k<<2)>>2]|0)==0))):0){v=u;w=17}if((w|0)==17?(w=0,(v|0)==0):0){e=-1;f=0;break}i=g;j=b;n=l;h=t;while(1){k=j+1|0;h=h&255;q=a[26976+h>>0]|0;m=q&255;switch(q<<24>>24){case 4:{o=65533;break}case 3:{l=j+2|0;h=(h<<6)+(d[k>>0]|0)|0;w=22;break}case 2:{l=k;w=22;break}case 1:{w=23;break}default:o=h}if((w|0)==22){k=l+1|0;h=(h<<6)+(d[l>>0]|0)|0;w=23}if((w|0)==23){w=0;o=(h<<6)+(d[k>>0]|0)-(c[27232+(m<<2)>>2]|0)|0;o=(o&-2|0)==65534|((o&-2048|0)==55296?1:(o&c[27248+(m<<2)>>2]|0)==0)?65533:o}k=i+1|0;h=n&255;q=a[26976+h>>0]|0;m=q&255;switch(q<<24>>24){case 4:{l=65533;break}case 3:{l=i+2|0;h=(h<<6)+(d[k>>0]|0)|0;w=27;break}case 2:{l=k;w=27;break}case 1:{w=28;break}default:l=h}if((w|0)==27){k=l+1|0;h=(h<<6)+(d[l>>0]|0)|0;w=28}if((w|0)==28){w=0;l=(h<<6)+(d[k>>0]|0)-(c[27232+(m<<2)>>2]|0)|0;l=(l&-2|0)==65534|((l&-2048|0)==55296?1:(l&c[27248+(m<<2)>>2]|0)==0)?65533:l}do{j=j+1|0;h=a[j>>0]|0}while((h&-64)<<24>>24==-128);do{i=i+1|0;k=a[i>>0]|0}while((k&-64)<<24>>24==-128);if((l|0)!=0&((o|0)!=0&(o|0)==(l|0)))n=k;else break}if(!o)break;do{g=g+1|0;h=a[g>>0]|0}while((h&-64)<<24>>24==-128);e=e+1|0;l=h;i=a[26976+(h&255)>>0]|0}w=f+e|0;return w|0} -function Mh(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Sa=0,Ta=0,Ua=0,Va=0,Ya=0,Za=0,_a=0,$a=0,bb=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0;nb=Ra;Ra=Ra+560|0;lb=nb+416|0;kb=nb+400|0;jb=nb+384|0;ib=nb+368|0;hb=nb+352|0;fb=nb+336|0;eb=nb+320|0;bb=nb+304|0;$a=nb+288|0;mb=nb+272|0;gb=nb+256|0;_a=nb+240|0;da=nb+216|0;la=nb+524|0;va=nb+512|0;La=nb+192|0;Sa=nb+504|0;Ua=nb+160|0;Va=nb+96|0;Ya=nb+64|0;Za=nb+496|0;ea=nb+551|0;fa=nb+32|0;ga=nb;ha=nb+528|0;ia=nb+432|0;ja=nb+538|0;ka=f+20|0;ma=(c[(c[ka>>2]|0)+36>>2]<<1>>>0)/3|0;na=f+68|0;oa=f+116|0;pa=f+124|0;qa=f+70|0;ra=f+72|0;sa=f+120|0;ta=f+3|0;ua=ia+8|0;wa=ja+4|0;ya=Va+4|0;Ca=Va+8|0;Ea=Va+12|0;Fa=Va+16|0;Ga=Va+40|0;Ha=ia+12|0;Ia=ia+4|0;Ja=da+16|0;Ka=da+12|0;Ma=da+18|0;Na=ja;Oa=da+16|0;Pa=da+12|0;Qa=da+18|0;i=0;j=a[na>>0]|0;ca=c[oa>>2]|0;do{g=j<<24>>24;u=ca+20|0;if((c[u>>2]|0)<0?Jh(ca)|0:0){h=0;break}ba=ca+12|0;h=(a[ba>>0]|0)==0;if(!(j<<24>>24)){if(h){h=0;break}c[la>>2]=0;c[va>>2]=0;v=ca+52|0;l=c[v>>2]|0;g=c[ca+72>>2]|0;j=c[g+20>>2]|0;do if((b[g+28>>1]&4)!=0?(c[j+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0)if(!(c[j+96>>2]|0)){c[da>>2]=0;aa=17;break}else{h=Ve(g)|0;aa=16;break}else aa=11;while(0);do if((aa|0)==11){h=c[j+40>>2]|0;if(h|0){c[da>>2]=h;aa=26;break}if((c[j+148>>2]|0)>>>0>(c[j+152>>2]|0)>>>0){h=Wf(g)|0;aa=16;break}else{h=Xf(g)|0;aa=16;break}}while(0);if((aa|0)==16){c[da>>2]=h;if(!h)aa=17;else aa=26}do if((aa|0)==17){aa=0;j=ca+4|0;h=fg(l,la,va,c[j>>2]|0,0)|0;c[da>>2]=h;k=c[la>>2]|0;w=k;do if(!h){g=c[v>>2]|0;$=c[ca+56>>2]|0;Z=c[k+56>>2]|0;h=d[ca+9>>0]|0;_=(c[k+4>>2]|0)==1?100:0;Y=$+(h+5)|0;Y=d[Y>>0]<<8|d[Y+1>>0];ew(Z+Y|0,$+Y|0,(c[g+36>>2]|0)-Y|0)|0;ew(Z+_|0,$+h|0,(e[ca+24>>1]<<1)+(e[ca+18>>1]|0)|0)|0;a[k>>0]=0;h=Gf(k)|0;if(!h){h=Jh(k)|0;if(!h){if(!(a[g+17>>0]|0)){h=0;break}h=hg(k)|0;c[da>>2]=h;break}}c[da>>2]=h}while(0);if(a[l+17>>0]|0){ig(l,c[va>>2]|0,5,c[j>>2]|0,da);h=c[da>>2]|0}if(h|0){c[pa>>2]=0;if(!k)break;g=c[k+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);break}else{ba=c[g+20>>2]|0;aa=ba+120|0;c[aa>>2]=(c[aa>>2]|0)+-1;ba=ba+136|0;c[g+16>>2]=c[ba>>2];c[ba>>2]=g;break}}ew(k+28|0,ca+28|0,d[ba>>0]<<1|0)|0;ew(k+36|0,ca+36|0,d[ba>>0]<<2|0)|0;a[k+12>>0]=a[ba>>0]|0;m=a[c[k+56>>2]>>0]&-9;q=ca+56|0;r=c[q>>2]|0;s=c[v>>2]|0;t=ca+9|0;h=d[t>>0]|0;if(!(b[s+22>>1]&12)){g=r+h|0;p=s+36|0}else{p=s+36|0;g=r+h|0;gw(g|0,0,(c[p>>2]|0)-h|0)|0}a[g>>0]=m;n=h+12|0;o=n&65535;g=r+(h+1)|0;a[g>>0]=0;a[g+1>>0]=0;a[g+2>>0]=0;a[g+3>>0]=0;a[r+(h+7)>>0]=0;g=r+(h+5)|0;a[g>>0]=(c[p>>2]|0)>>>8;a[g+1>>0]=c[p>>2];c[u>>2]=(c[p>>2]|0)-n&65535;g=(m&255)>>>3;j=g&255;a[ca+8>>0]=j;g=4-(g<<2)&255;h=ca+10|0;a[h>>0]=g;k=ca+76|0;c[k>>2]=120;l=c[v>>2]|0;switch(m<<24>>24){case 5:{a[ca+2>>0]=1;h=ca+3|0;if(!(j<<24>>24)){a[h>>0]=0;c[k>>2]=121;h=181}else{a[h>>0]=1;h=180}c[ca+80>>2]=h;b[ca+14>>1]=b[l+28>>1]|0;h=l+30|0;aa=41;break}case 2:{a[ca+2>>0]=0;a[ca+3>>0]=0;c[ca+80>>2]=179;b[ca+14>>1]=b[l+24>>1]|0;h=l+26|0;aa=41;break}default:{c[_a>>2]=32306;c[_a+4>>2]=65035;c[_a+8>>2]=31517;Db(11,32001,_a);g=a[h>>0]|0}}if((aa|0)==41){b[ca+16>>1]=b[h>>1]|0;a[ca+11>>0]=a[l+21>>0]|0}b[ca+18>>1]=o;c[ca+60>>2]=r+(c[p>>2]|0);c[ca+64>>2]=r+n;c[ca+68>>2]=r+(g&255);a[ba>>0]=0;b[ca+26>>1]=(c[s+32>>2]|0)+65535;b[ca+24>>1]=0;a[ca>>0]=1;h=(c[q>>2]|0)+((d[t>>0]|0)+8)|0;ba=c[va>>2]|0;a[h>>0]=ba>>>24;a[h+1>>0]=ba>>>16;a[h+2>>0]=ba>>>8;a[h+3>>0]=ba;c[pa>>2]=w;h=0}else if((aa|0)==26)c[pa>>2]=0;while(0);if(h|0)break;a[na>>0]=1;b[qa>>1]=0;b[ra>>1]=0;c[sa>>2]=ca;h=0;j=1;g=pa}else{if(h?(c[u>>2]|0)<=(ma|0):0){h=0;break}m=g+-1|0;$=c[f+120+(m<<2)>>2]|0;m=b[f+72+(m<<1)>>1]|0;n=m&65535;g=c[$+72>>2]|0;k=c[g+20>>2]|0;if((b[g+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0)if(!(c[k+96>>2]|0))aa=56;else{h=Ve(g)|0;aa=55}else aa=51;do if((aa|0)==51){h=c[k+40>>2]|0;if(!h)if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){h=Wf(g)|0;aa=55;break}else{h=Xf(g)|0;aa=55;break}else aa=523}while(0);if((aa|0)==55)if(!h)aa=56;else aa=523;do if((aa|0)==56){aa=0;if((c[$+20>>2]|0)<0?(xa=Jh($)|0,xa|0):0){h=xa;aa=523;break}if(((((a[ca+3>>0]|0)!=0?(a[ba>>0]|0)==1:0)?(za=b[ca+28>>1]|0,Aa=ca+24|0,za<<16>>16==(b[Aa>>1]|0)):0)?(Ba=$+4|0,(c[Ba>>2]|0)!=1):0)?(Da=$+24|0,(b[Da>>1]|0)==m<<16>>16):0){q=c[ca+52>>2]|0;do if(za<<16>>16){h=fg(q,la,La,0,0)|0;c[va>>2]=h;if(!h){r=c[ca+36>>2]|0;c[Sa>>2]=r;r=Xa[c[ca+76>>2]&255](ca,r)|0;b[Ua>>1]=r;r=c[la>>2]|0;m=c[r+56>>2]|0;s=r+52|0;n=c[s>>2]|0;h=d[r+9>>0]|0;if(!(b[n+22>>1]&12)){g=m+h|0;l=n+36|0}else{l=n+36|0;g=m+h|0;gw(g|0,0,(c[l>>2]|0)-h|0)|0}a[g>>0]=13;_=h+8|0;g=m+(h+1)|0;a[g>>0]=0;a[g+1>>0]=0;a[g+2>>0]=0;a[g+3>>0]=0;a[m+(h+7)>>0]=0;g=m+(h+5)|0;a[g>>0]=(c[l>>2]|0)>>>8;a[g+1>>0]=c[l>>2];g=r+20|0;c[g>>2]=(c[l>>2]|0)-_&65535;a[r+8>>0]=1;a[r+10>>0]=0;c[r+76>>2]=120;k=c[s>>2]|0;a[r+2>>0]=1;a[r+3>>0]=1;o=r+80|0;c[o>>2]=180;b[r+14>>1]=b[k+28>>1]|0;j=r+16|0;b[j>>1]=b[k+30>>1]|0;a[r+11>>0]=a[k+21>>0]|0;k=r+18|0;b[k>>1]=_;p=r+60|0;c[p>>2]=m+(c[l>>2]|0);c[r+64>>2]=m+_;c[r+68>>2]=m;a[r+12>>0]=0;b[r+26>>1]=(c[n+32>>2]|0)+65535;b[r+24>>1]=0;a[r>>0]=1;c[Va>>2]=1;c[ya>>2]=ca;c[Ca>>2]=Sa;c[Ea>>2]=Ua;c[Fa>>2]=c[ca+60>>2];c[Ga>>2]=2;h=Rh(Va,0,1,r)|0;c[va>>2]=h;if(h|0){g=c[r+72>>2]|0;if(!(b[g+28>>1]&32))Df(g);else{$=c[g+20>>2]|0;_=$+120|0;c[_>>2]=(c[_>>2]|0)+-1;$=$+136|0;c[g+16>>2]=c[$>>2];c[$>>2]=g}break}c[g>>2]=(c[q+36>>2]|0)+-2-(e[k>>1]|0)-(e[Ua>>1]|0);do if(a[q+17>>0]|0){ig(q,c[La>>2]|0,5,c[Ba>>2]|0,va);if((e[Ua>>1]|0)<=(e[j>>1]|0))break;j=c[Sa>>2]|0;a:do if(!(c[va>>2]|0)){cb[c[o>>2]&255](r,j,da);h=e[Ja>>1]|0;if((c[Ka>>2]|0)>>>0<=h>>>0)break;g=c[p>>2]|0;do if(g>>>0>=j>>>0){if(g>>>0>=(j+h|0)>>>0)break;c[mb>>2]=32306;c[mb+4>>2]=64569;c[mb+8>>2]=31517;Db(11,32001,mb);c[va>>2]=11;break a}while(0);_=j+((e[Ma>>1]|0)+-4)|0;ig(c[s>>2]|0,d[_+1>>0]<<16|d[_>>0]<<24|d[_+2>>0]<<8|d[_+3>>0],3,c[r+4>>2]|0,va)}while(0)}while(0);k=(c[ca+64>>2]|0)+((e[Aa>>1]<<1)+-2)|0;k=(c[ca+56>>2]|0)+((d[k>>0]<<8|d[k+1>>0])&e[ca+26>>1])|0;c[Sa>>2]=k;g=0;while(1){j=g+1|0;c[Sa>>2]=k+j;if(j>>>0<9&(a[k+g>>0]|0)<0)g=j;else break}l=k+g+10|0;h=wa;g=k+j|0;do{c[Sa>>2]=g+1;_=a[g>>0]|0;Z=h;h=h+1|0;a[Z>>0]=_;g=c[Sa>>2]|0}while(_<<24>>24<0&g>>>0>>0);if(!(c[va>>2]|0))Lh($,e[Da>>1]|0,ja,h-Na|0,0,c[ca+4>>2]|0,va);g=(c[$+56>>2]|0)+((d[$+9>>0]|0)+8)|0;$=c[La>>2]|0;a[g>>0]=$>>>24;a[g+1>>0]=$>>>16;a[g+2>>0]=$>>>8;a[g+3>>0]=$;g=c[la>>2]|0;do if(g|0){g=c[g+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);break}else{$=c[g+20>>2]|0;_=$+120|0;c[_>>2]=(c[_>>2]|0)+-1;$=$+136|0;c[g+16>>2]=c[$>>2];c[$>>2]=g;break}}while(0);h=c[va>>2]|0}}else{c[gb>>2]=32306;c[gb+4>>2]=70410;c[gb+8>>2]=31517;Db(11,32001,gb);h=11}while(0)}else aa=95;b:do if((aa|0)==95){aa=0;l=c[(c[ka>>2]|0)+32>>2]|0;if((c[14813]|0)>=(l|0)?(Ta=c[14819]|0,(Ta|0)!=0):0){c[14819]=c[Ta>>2];_=c[14820]|0;c[14820]=_+-1;c[14821]=(_|0)<=(c[14815]|0)&1;if((c[14986]|0)>>>0>>0)c[14986]=l;g=(c[14979]|0)+1|0;c[14979]=g;if(g>>>0>(c[14983]|0)>>>0){c[14983]=g;_=Ta}else _=Ta}else aa=101;do if((aa|0)==101){aa=0;_=Sv(l|0,((l|0)<0)<<31>>31|0,-1,-1)|0;Z=L()|0;if(!(Z>>>0>0|(Z|0)==0&_>>>0>2147483390)){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](l)|0;if(!g){_=0;break}}else{g=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;k=59064;h=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&h>>>0>0){_=c[14978]|0;Z=Tv(h|0,k|0,g|0,((g|0)<0)<<31>>31|0)|0;Y=L()|0;c[14768]=((Y|0)<0|(Y|0)==0&Z>>>0<=_>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(!g){_=0;break}h=Wa[c[29352>>2]&127](g)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}h=Wa[c[29352>>2]&127](g)|0;if((c[14986]|0)>>>0>>0)c[14986]=l;h=(c[14980]|0)+h|0;c[14980]=h;if(h>>>0>(c[14984]|0)>>>0){c[14984]=h;_=g}else _=g}else _=0}while(0);W=j<<24>>24==1;I=a[ta>>0]&1;j=I&255;c[la>>2]=0;a[ea>>0]=0;a[ea+1>>0]=0;a[ea+2>>0]=0;a[ea+3>>0]=0;a[ea+4>>0]=0;c[ia>>2]=0;c[ua>>2]=0;Y=c[$+52>>2]|0;if(!_)h=7;else{x=$+12|0;k=d[x>>0]|0;X=$+24|0;l=e[X>>1]|0;g=l+k|0;if(g>>>0<2)h=0;else{do if(m<<16>>16)if((g|0)==(n|0)){h=(j|-2)+n|0;break}else{h=n+-1|0;break}else h=0;while(0);g=2-j|0}Z=g+1|0;j=h-k+g|0;V=$+56|0;if((j|0)==(l|0))j=(d[$+9>>0]|0)+8|0;else{j=(c[$+64>>2]|0)+(j<<1)|0;j=(d[j>>0]<<8|d[j+1>>0])&e[$+26>>1]}K=(c[V>>2]|0)+j|0;M=K+1|0;N=K+2|0;O=K+3|0;k=d[M>>0]<<16|d[K>>0]<<24|d[N>>0]<<8|d[O>>0];c[Za>>2]=k;j=va+(g<<2)|0;U=yh(Y,k,j,0,0)|0;c[la>>2]=U;c:do if(!U){s=$+26|0;t=$+64|0;S=$+76|0;u=Y+22|0;v=$+28|0;D=Y+36|0;w=$+36|0;r=g;while(1){j=c[j>>2]|0;if((c[j+20>>2]|0)<0?(U=Jh(j)|0,c[la>>2]=U,U|0):0){aa=133;break}q=r+-1|0;if(!r){aa=144;break}j=a[x>>0]|0;p=q+h|0;do if(!(j<<24>>24))aa=138;else{if((p|0)!=(e[v>>1]|0)){aa=138;break}U=c[w>>2]|0;c[Sa+(q<<2)>>2]=U;k=d[U+1>>0]<<16|d[U>>0]<<24|d[U+2>>0]<<8|d[U+3>>0];U=(Xa[c[S>>2]&255]($,U)|0)&65535;c[Ya+(q<<2)>>2]=U;a[x>>0]=0}while(0);if((aa|0)==138){aa=0;j=(c[t>>2]|0)+(p-(j&255)<<1)|0;j=(c[V>>2]|0)+((d[j>>0]<<8|d[j+1>>0])&e[s>>1])|0;l=Sa+(q<<2)|0;c[l>>2]=j;k=d[j+1>>0]<<16|d[j>>0]<<24|d[j+2>>0]<<8|d[j+3>>0];m=(Xa[c[S>>2]&255]($,j)|0)&65535;c[Ya+(q<<2)>>2]=m;n=j;if(b[u>>1]&12){o=n-(c[V>>2]|0)|0;if((o+m|0)>(c[D>>2]|0)){aa=141;break}ew(_+o|0,j|0,m|0)|0;c[l>>2]=_+(n-(c[V>>2]|0))}Kh($,p-(d[x>>0]|0)|0,m,la)}j=va+(q<<2)|0;U=yh(Y,k,j,0,0)|0;c[la>>2]=U;if(U|0){aa=129;break}else r=q}if((aa|0)==129){c[Za>>2]=k;g=q;aa=130;break}else if((aa|0)==133){aa=0;c[Za>>2]=k;gw(va|0,0,r<<2|0)|0;g=0;break}else if((aa|0)==141){aa=0;c[Za>>2]=k;c[$a>>2]=32306;c[$a+4>>2]=70767;c[$a+8>>2]=31517;Db(11,32001,$a);c[la>>2]=11;gw(va|0,0,r<<2|0)|0;g=0;break}else if((aa|0)==144){aa=0;c[Za>>2]=k;j=c[Y+32>>2]|0;m=(G((((j+-8|0)>>>0)/6|0)+4|0,Z)|0)+3&-4;j=(m*6|0)+j|0;U=Sv(j|0,((j|0)<0)<<31>>31|0,-1,-1)|0;T=L()|0;do if(T>>>0>0|(T|0)==0&U>>>0>2147483390)aa=155;else{if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](j)|0;c[ua>>2]=j;if(!j)break}else{l=Wa[c[29356>>2]&127](j)|0;if((c[14985]|0)>>>0>>0)c[14985]=j;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){U=c[14978]|0;T=Tv(j|0,k|0,l|0,((l|0)<0)<<31>>31|0)|0;R=L()|0;c[14768]=((R|0)<0|(R|0)==0&T>>>0<=U>>>0)&1}j=Wa[c[29340>>2]&127](l)|0;if(!j){aa=155;break}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k;c[ua>>2]=j}r=j+(m<<2)|0;c[Ha>>2]=r;A=r+(m<<1)|0;p=c[va>>2]|0;c[Ia>>2]=p;R=d[p+8>>0]<<2;U=R&65535;C=a[p+3>>0]|0;E=C&255;F=p+56|0;B=C<<24>>24!=0;w=c[F>>2]|0;u=p+18|0;m=e[u>>1]|0;j=0;z=0;y=p;l=w+m|0;x=F;while(1){t=y+24|0;v=b[y+26>>1]|0;k=c[ia>>2]|0;s=y+12|0;gw(r+(k<<1)|0,0,(d[s>>0]|0)+(e[t>>1]|0)<<1|0)|0;s=a[s>>0]|0;if(s<<24>>24){T=b[y+28>>1]|0;r=T&65535;if(T<<16>>16){q=v&65535;o=(r<<1)+m|0;n=0;m=k;while(1){c[(c[ua>>2]|0)+(m<<2)>>2]=w+((d[l>>0]<<8|d[l+1>>0])&q);m=m+1|0;c[ia>>2]=m;n=n+1|0;if((n|0)==(r|0))break;else l=l+2|0}l=w+o|0;k=k+r|0}n=s&255;m=0;o=k;while(1){c[(c[ua>>2]|0)+(o<<2)>>2]=c[y+36+(m<<2)>>2];m=m+1|0;if((m|0)==(n|0))break;else o=o+1|0}k=k+n|0;c[ia>>2]=k}n=e[u>>1]|0;m=e[t>>1]<<1;q=w+n+m|0;if(l>>>0>>0){o=v&65535;n=(w+-1+(m+n-l)|0)>>>1;m=k;do{c[(c[ua>>2]|0)+(m<<2)>>2]=w+((d[l>>0]<<8|d[l+1>>0])&o);l=l+2|0;m=m+1|0;c[ia>>2]=m}while(l>>>0>>0);k=k+1+n|0}c[Va+(z<<2)>>2]=k;if(!(B|(z|0)>=(g|0))){l=c[Ya+(z<<2)>>2]|0;b[(c[Ha>>2]|0)+(k<<1)>>1]=l;T=A+j|0;l=l&65535;j=l+j|0;ew(T|0,c[Sa+(z<<2)>>2]|0,l|0)|0;c[(c[ua>>2]|0)+(k<<2)>>2]=T+R;T=(c[Ha>>2]|0)+(k<<1)|0;l=(e[T>>1]|0)-R&65535;b[T>>1]=l;do if(!(a[y+8>>0]|0)){k=c[(c[ua>>2]|0)+(k<<2)>>2]|0;T=(c[x>>2]|0)+8|0;T=d[T>>0]|d[T+1>>0]<<8|d[T+2>>0]<<16|d[T+3>>0]<<24;a[k>>0]=T;a[k+1>>0]=T>>8;a[k+2>>0]=T>>16;a[k+3>>0]=T>>24;k=c[ia>>2]|0}else{if((l&65535)>=4)break;while(1){l=j+1|0;a[A+j>>0]=0;k=c[ia>>2]|0;Q=(c[Ha>>2]|0)+(k<<1)|0;T=(b[Q>>1]|0)+1<<16>>16;b[Q>>1]=T;if((T&65535)<4)j=l;else{j=l;break}}}while(0);c[ia>>2]=k+1}l=z+1|0;if((z|0)>=(g|0))break;k=c[va+(l<<2)>>2]|0;q=k+56|0;n=c[q>>2]|0;o=k+18|0;m=e[o>>1]|0;if((a[n>>0]|0)!=(a[c[F>>2]>>0]|0)){aa=179;break}z=l;y=k;l=n+m|0;r=c[Ha>>2]|0;w=n;u=o;x=q}if((aa|0)==179){aa=0;c[bb>>2]=32306;c[bb+4>>2]=70833;c[bb+8>>2]=31517;Db(11,32001,bb);c[la>>2]=11;g=0;break c}T=R+-12+(c[D>>2]|0)|0;J=C<<24>>24==0;s=$+60|0;d:do if(J){k=0;r=0;while(1){c[ia+16+(k<<2)>>2]=c[p+60>>2];q=c[Va+(r<<2)>>2]|0;c[ia+40+(k<<2)>>2]=q;j=k+-1|0;if(!k)o=0;else o=(q|0)==(c[ia+40+(j<<2)>>2]|0)?j:k;j=o+1|0;c[ia+16+(j<<2)>>2]=c[s>>2];c[ia+40+(j<<2)>>2]=q+1;j=T-(c[p+20>>2]|0)|0;l=Ya+(r<<2)|0;c[l>>2]=j;m=p+12|0;if(a[m>>0]|0){n=p+76|0;k=0;do{j=j+2+((Xa[c[n>>2]&255](p,c[p+36+(k<<2)>>2]|0)|0)&65535)|0;c[l>>2]=j;k=k+1|0}while(k>>>0<(d[m>>0]|0)>>>0)}c[Ua+(r<<2)>>2]=q;j=r+1|0;if((j|0)==(Z|0))break d;k=o+2|0;r=j;p=c[va+(j<<2)>>2]|0}}else{k=0;r=0;while(1){c[ia+16+(k<<2)>>2]=c[p+60>>2];q=c[Va+(r<<2)>>2]|0;c[ia+40+(k<<2)>>2]=q;j=k+-1|0;if(!k)o=0;else o=(q|0)==(c[ia+40+(j<<2)>>2]|0)?j:k;j=T-(c[p+20>>2]|0)|0;l=Ya+(r<<2)|0;c[l>>2]=j;m=p+12|0;if(a[m>>0]|0){n=p+76|0;k=0;do{j=j+2+((Xa[c[n>>2]&255](p,c[p+36+(k<<2)>>2]|0)|0)&65535)|0;c[l>>2]=j;k=k+1|0}while(k>>>0<(d[m>>0]|0)>>>0)}c[Ua+(r<<2)>>2]=q;j=r+1|0;if((j|0)==(Z|0))break d;k=o+1|0;r=j;p=c[va+(j<<2)>>2]|0}}while(0);e:do if((g|0)>-1){o=Z;j=0;f:while(1){u=Ya+(j<<2)|0;l=c[u>>2]|0;g:do if((l|0)>(T|0)){p=j+1|0;t=Ua+(j<<2)|0;q=j+2|0;s=Ya+(p<<2)|0;r=Ua+(p<<2)|0;if(q>>>0>5){if((p|0)>=(o|0)){aa=232;break f}k=c[t>>2]|0;if(!J){m=l;while(1){k=k+-1|0;l=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(l<<16>>16))l=Sh(ia,k)|0;Q=(l&65535)+2|0;l=m-Q|0;c[u>>2]=l;c[s>>2]=(c[s>>2]|0)+Q;c[t>>2]=k;if((l|0)>(T|0))m=l;else{r=o;q=t;break g}}}n=k;m=l;while(1){k=n+-1|0;l=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(l<<16>>16))l=Sh(ia,k)|0;m=m-((l&65535)+2)|0;c[u>>2]=m;if((n|0)<(c[ia>>2]|0)){l=b[(c[Ha>>2]|0)+(n<<1)>>1]|0;if(!(l<<16>>16))l=Sh(ia,n)|0;l=(l&65535)+2|0}else l=0;c[s>>2]=(c[s>>2]|0)+l;c[t>>2]=k;if((m|0)>(T|0))n=k;else{r=o;q=t;l=m;break g}}}if(!J){k=o;while(1){if((p|0)<(k|0))n=k;else{c[s>>2]=0;c[r>>2]=c[ia>>2];n=q}k=(c[t>>2]|0)+-1|0;m=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(m<<16>>16))m=Sh(ia,k)|0;Q=(m&65535)+2|0;l=l-Q|0;c[u>>2]=l;c[s>>2]=(c[s>>2]|0)+Q;c[t>>2]=k;if((l|0)>(T|0))k=n;else{r=n;q=t;break g}}}k=o;while(1){if((p|0)<(k|0))o=k;else{c[s>>2]=0;c[r>>2]=c[ia>>2];o=q}n=c[t>>2]|0;k=n+-1|0;m=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(m<<16>>16))m=Sh(ia,k)|0;l=l+-2-(m&65535)|0;c[u>>2]=l;if((n|0)<(c[ia>>2]|0)){m=b[(c[Ha>>2]|0)+(n<<1)>>1]|0;if(!(m<<16>>16))m=Sh(ia,n)|0;m=(m&65535)+2|0}else m=0;c[s>>2]=(c[s>>2]|0)+m;c[t>>2]=k;if((l|0)>(T|0))k=o;else{r=o;q=t;break}}}else{k=Ua+(j<<2)|0;r=o;q=k;k=c[k>>2]|0}while(0);h:do if((k|0)<(c[ia>>2]|0)){p=Ya+(j+1<<2)|0;if(!J){m=l;while(1){l=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(l<<16>>16))l=Sh(ia,k)|0;l=(l&65535)+2|0;m=l+m|0;if((m|0)>(T|0))break h;c[u>>2]=m;k=k+1|0;c[q>>2]=k;c[p>>2]=(c[p>>2]|0)-l;if((k|0)>=(c[ia>>2]|0))break h}}o=l;do{l=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(l<<16>>16))l=Sh(ia,k)|0;o=o+2+(l&65535)|0;if((o|0)>(T|0))break h;c[u>>2]=o;k=k+1|0;c[q>>2]=k;m=c[ia>>2]|0;if((k|0)<(m|0)){l=b[(c[Ha>>2]|0)+(k<<1)>>1]|0;if(!(l<<16>>16)){l=Sh(ia,k)|0;m=c[ia>>2]|0}n=(l&65535)+2|0;l=m}else{n=0;l=m}c[p>>2]=(c[p>>2]|0)-n}while((k|0)<(l|0))}while(0);if((k|0)>=(c[ia>>2]|0)){aa=254;break}if(!j)l=0;else l=c[Ua+(j+-1<<2)>>2]|0;if((k|0)<=(l|0)){aa=258;break}j=j+1|0;if((j|0)<(r|0))o=r;else{H=r;break e}}if((aa|0)==232){aa=0;c[eb>>2]=32306;c[eb+4>>2]=70953;c[eb+8>>2]=31517;Db(11,32001,eb);c[la>>2]=11;g=0;break c}else if((aa|0)==254){aa=0;H=j+1|0;break}else if((aa|0)==258){aa=0;c[fb>>2]=32306;c[fb+4>>2]=70986;c[fb+8>>2]=31517;Db(11,32001,fb);c[la>>2]=11;g=0;break c}}else H=Z;while(0);t=H+-1|0;i:do if((H|0)>1){j=c[Ya+(t<<2)>>2]|0;j:do if(!(I<<24>>24)){x=t;m=c[Ha>>2]|0;while(1){u=Ya+(x<<2)|0;w=x;x=x+-1|0;v=Ya+(x<<2)|0;n=c[v>>2]|0;s=Ua+(x<<2)|0;l=c[s>>2]|0;k=l-E|0;if(!(b[m+(k<<1)>>1]|0)){Sh(ia,k)|0;m=c[Ha>>2]|0}r=(w|0)==(t|0)?0:-2;while(1){q=l+-1|0;if(!(b[m+(q<<1)>>1]|0)){Sh(ia,q)|0;m=c[Ha>>2]|0}o=b[m+(k<<1)>>1]|0;if(j){p=j+2+(o&65535)|0;o=e[m+(q<<1)>>1]|0;if((p|0)>(n+r-o|0))break;else j=p}else{j=(o&65535)+2|0;o=e[m+(q<<1)>>1]|0}n=n+-2-o|0;c[s>>2]=q;if((l|0)>1){k=k+-1|0;l=q}else{l=q;break}}c[u>>2]=j;c[v>>2]=n;k=(w|0)>1;if(k)j=c[Ua+(w+-2<<2)>>2]|0;else j=0;if((l|0)<=(j|0))break j;if(!k)break i;else j=n}}else while(1){q=Ya+(t<<2)|0;s=t;t=t+-1|0;r=Ya+(t<<2)|0;m=c[r>>2]|0;p=Ua+(t<<2)|0;n=c[p>>2]|0;l=n-E|0;k=c[Ha>>2]|0;if(!(b[k+(l<<1)>>1]|0)){Sh(ia,l)|0;k=c[Ha>>2]|0}o=l;while(1){l=n+-1|0;if(!(b[k+(l<<1)>>1]|0))Sh(ia,l)|0;if(j|0){l=n;break}k=c[Ha>>2]|0;j=(e[k+(o<<1)>>1]|0)+2|0;m=m+-2-(e[k+(l<<1)>>1]|0)|0;c[p>>2]=l;if((n|0)<=1)break;else{o=o+-1|0;n=l}}c[q>>2]=j;c[r>>2]=m;k=(s|0)>1;if(k)j=c[Ua+(s+-2<<2)>>2]|0;else j=0;if((l|0)<=(j|0))break j;if(!k)break i;else j=m}while(0);c[hb>>2]=32306;c[hb+4>>2]=71028;c[hb+8>>2]=31517;Db(11,32001,hb);c[la>>2]=11;g=0;break c}while(0);D=a[c[F>>2]>>0]|0;F=D&255;do if((H|0)>0){v=I<<24>>24==0;w=F>>>1&4^12;y=F>>>3;x=y&255;y=4-(y<<2)&255;C=F&247;z=Y+17|0;A=x<<24>>24==0;B=$+4|0;t=0;u=0;k:while(1){l:do if((u|0)>(g|0)){Q=fg(Y,da,Za,v?c[Za>>2]|0:1,0)|0;c[la>>2]=Q;if(Q|0){g=t;break k}s=c[da>>2]|0;p=c[s+56>>2]|0;l=s+52|0;q=c[l>>2]|0;k=d[s+9>>0]|0;r=s;if(!(b[q+22>>1]&12)){j=p+k|0;o=q+36|0}else{o=q+36|0;j=p+k|0;gw(j|0,0,(c[o>>2]|0)-k|0)|0}a[j>>0]=D;m=w+k|0;n=m&65535;j=p+(k+1)|0;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;a[p+(k+7)>>0]=0;j=p+(k+5)|0;a[j>>0]=(c[o>>2]|0)>>>8;a[j+1>>0]=c[o>>2];c[s+20>>2]=(c[o>>2]|0)-m&65535;a[s+8>>0]=x;j=s+10|0;a[j>>0]=y;k=s+76|0;c[k>>2]=120;l=c[l>>2]|0;switch(C<<24>>24){case 5:{a[s+2>>0]=1;j=s+3|0;if(A){a[j>>0]=0;c[k>>2]=121;j=181}else{a[j>>0]=1;j=180}c[s+80>>2]=j;b[s+14>>1]=b[l+28>>1]|0;j=l+30|0;aa=314;break}case 2:{a[s+2>>0]=0;a[s+3>>0]=0;c[s+80>>2]=179;b[s+14>>1]=b[l+24>>1]|0;j=l+26|0;aa=314;break}default:{c[ib>>2]=32306;c[ib+4>>2]=65035;c[ib+8>>2]=31517;Db(11,32001,ib);j=a[j>>0]|0}}if((aa|0)==314){aa=0;b[s+16>>1]=b[j>>1]|0;a[s+11>>0]=a[l+21>>0]|0;j=y}b[s+18>>1]=n;c[s+60>>2]=p+(c[o>>2]|0);c[s+64>>2]=p+m;c[s+68>>2]=p+(j&255);a[s+12>>0]=0;b[s+26>>1]=(c[q+32>>2]|0)+65535;b[s+24>>1]=0;a[s>>0]=1;c[La+(u<<2)>>2]=r;j=t+1|0;c[Va+(u<<2)>>2]=c[ia>>2];if(!(a[z>>0]|0)){E=j;break}ig(Y,c[s+4>>2]|0,5,c[B>>2]|0,la);if(!(c[la>>2]|0))E=j;else{g=j;break k}}else{k=va+(u<<2)|0;j=c[k>>2]|0;c[La+(u<<2)>>2]=j;c[da>>2]=j;c[k>>2]=0;j=c[j+72>>2]|0;k=c[j+20>>2]|0;do if(b[j+28>>1]&4){if((c[k+24>>2]|0)>>>0<(c[j+24>>2]|0)>>>0){aa=297;break}if(!(c[k+96>>2]|0)){c[la>>2]=0;E=t+1|0;break l}else{k=Ve(j)|0;break}}else aa=297;while(0);do if((aa|0)==297){aa=0;l=c[k+40>>2]|0;if(l|0){aa=298;break k}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){k=Wf(j)|0;break}else{k=Xf(j)|0;break}}while(0);c[la>>2]=k;j=t+1|0;if(!k)E=j;else{g=j;break k}}while(0);u=u+1|0;if((u|0)>=(H|0)){aa=319;break}else t=E}if((aa|0)==298){aa=0;c[la>>2]=l;g=t+1|0}else if((aa|0)==319){aa=0;if((E|0)<=0){Q=0;break}k=0;m:do{Q=c[La+(k<<2)>>2]|0;l=c[Q+4>>2]|0;c[fa+(k<<2)>>2]=l;c[ga+(k<<2)>>2]=l;b[ha+(k<<1)>>1]=b[(c[Q+72>>2]|0)+28>>1]|0;if(k|0){j=0;do{if((c[fa+(j<<2)>>2]|0)==(l|0)){aa=325;break m}j=j+1|0}while(j>>>0>>0)}k=k+1|0}while((k|0)<(E|0));if((aa|0)==325){aa=0;c[jb>>2]=32306;c[jb+4>>2]=71102;c[jb+8>>2]=31517;Db(11,32001,jb);c[la>>2]=11;g=E;break c}x=(E|0)==1;y=Y+44|0;w=0;do{if(x)j=0;else{j=0;k=1;do{j=(c[ga+(k<<2)>>2]|0)>>>0<(c[ga+(j<<2)>>2]|0)>>>0?k:j;k=k+1|0}while((k|0)<(E|0))}Q=ga+(j<<2)|0;v=c[Q>>2]|0;c[Q>>2]=-1;if((j|0)!=(w|0)){do if((j|0)>(w|0)){t=c[(c[La+(j<<2)>>2]|0)+72>>2]|0;P=j+1+(c[y>>2]|0)|0;u=t+28|0;b[u>>1]=0;k=t+12|0;Q=t+24|0;db[c[29444>>2]&127](c[(c[k>>2]|0)+44>>2]|0,c[t>>2]|0,c[Q>>2]|0,P);c[Q>>2]=P;u=b[u>>1]|0;if((u&10)!=10)break;q=c[k>>2]|0;s=q+8|0;k=c[s>>2]|0;p=t+36|0;m=c[p>>2]|0;if((k|0)==(t|0)){c[s>>2]=m;r=m}else r=k;o=t+32|0;l=c[o>>2]|0;n=(l|0)==0;if(n){c[q+4>>2]=m;k=m}else{c[l+36>>2]=m;k=c[p>>2]|0}do if(!k){c[q>>2]=l;if(n){a[q+33>>0]=2;c[p>>2]=0;c[o>>2]=0;k=q;aa=345;break}else{c[p>>2]=0;k=q;aa=344;break}}else{c[k+32>>2]=l;l=c[q>>2]|0;c[p>>2]=0;c[o>>2]=l;if(!l){k=q;aa=345}else{k=q;aa=344}}while(0);do if((aa|0)==344){aa=0;c[l+36>>2]=t}else if((aa|0)==345){aa=0;c[q+4>>2]=t;if(!(a[q+32>>0]|0))break;a[q+33>>0]=1}while(0);c[k>>2]=t;if(!((u&8)==0&(r|0)==0))break;c[s>>2]=t}while(0);t=La+(w<<2)|0;u=c[(c[t>>2]|0)+72>>2]|0;s=u+28|0;b[s>>1]=b[ha+(j<<1)>>1]|0;j=u+12|0;Q=u+24|0;db[c[29444>>2]&127](c[(c[j>>2]|0)+44>>2]|0,c[u>>2]|0,c[Q>>2]|0,v);c[Q>>2]=v;s=b[s>>1]|0;do if((s&10)==10){p=c[j>>2]|0;r=p+8|0;j=c[r>>2]|0;o=u+36|0;l=c[o>>2]|0;if((j|0)==(u|0)){c[r>>2]=l;q=l}else q=j;n=u+32|0;k=c[n>>2]|0;m=(k|0)==0;if(m){c[p+4>>2]=l;j=l}else{c[k+36>>2]=l;j=c[o>>2]|0}do if(!j){c[p>>2]=k;if(m){a[p+33>>0]=2;c[o>>2]=0;c[n>>2]=0;j=p;aa=361;break}else{c[o>>2]=0;j=p;aa=360;break}}else{c[j+32>>2]=k;k=c[p>>2]|0;c[o>>2]=0;c[n>>2]=k;if(!k){j=p;aa=361}else{j=p;aa=360}}while(0);do if((aa|0)==360){aa=0;c[k+36>>2]=u}else if((aa|0)==361){aa=0;c[p+4>>2]=u;if(!(a[p+32>>0]|0))break;a[p+33>>0]=1}while(0);c[j>>2]=u;if(!((s&8)==0&(q|0)==0))break;c[r>>2]=u}while(0);c[(c[t>>2]|0)+4>>2]=v}w=w+1|0}while((w|0)!=(E|0));c[Za>>2]=v;Q=1;break}break c}else{E=0;Q=0}while(0);v=E+-1|0;j=c[La+(v<<2)>>2]|0;P=c[j+4>>2]|0;a[K>>0]=P>>>24;a[M>>0]=P>>>16;a[N>>0]=P>>>8;a[O>>0]=P;if(!((F&8|0)!=0|(Z|0)==(E|0))){P=(c[j+56>>2]|0)+8|0;O=(c[(c[((E|0)>(Z|0)?La:va)+(g<<2)>>2]|0)+56>>2]|0)+8|0;O=d[O>>0]|d[O+1>>0]<<8|d[O+2>>0]<<16|d[O+3>>0]<<24;a[P>>0]=O;a[P+1>>0]=O>>8;a[P+2>>0]=O>>16;a[P+3>>0]=O>>24}P=Y+17|0;do if(a[P>>0]|0){j=c[La>>2]|0;k=c[ia>>2]|0;if((k|0)<=0)break;t=J&1;u=U<<16>>16==0;q=0;l=0;n=(e[j+24>>1]|0)+(d[j+12>>0]|0)|0;p=j;o=j;s=0;while(1){r=c[(c[ua>>2]|0)+(s<<2)>>2]|0;if((s|0)==(n|0)){n=s+t|0;j=q;do{j=j+1|0;o=c[((j|0)<(E|0)?La+(j<<2)|0:va+(j<<2)|0)>>2]|0;m=n+(e[o+24>>1]|0)+(d[o+12>>0]|0)|0}while((s|0)==(m|0));n=m}else j=q;if((s|0)==(c[Ua+(l<<2)>>2]|0)){l=l+1|0;m=c[La+(l<<2)>>2]|0;if(!J){p=m;aa=378}}else aa=378;n:do if((aa|0)==378){aa=0;do if((j|0)<(E|0)){if((c[p+4>>2]|0)!=(c[fa+(j<<2)>>2]|0))break;m=r;if((c[o+56>>2]|0)>>>0>m>>>0)break;if((c[o+60>>2]|0)>>>0>m>>>0){m=p;break n}}while(0);if(u)ig(Y,d[r+1>>0]<<16|d[r>>0]<<24|d[r+2>>0]<<8|d[r+3>>0],5,c[p+4>>2]|0,la);k=b[(c[Ha>>2]|0)+(s<<1)>>1]|0;if(!(k<<16>>16))k=Sh(ia,s)|0;if((k&65535)>(e[p+16>>1]|0))o:do if(!(c[la>>2]|0)){cb[c[p+80>>2]&255](p,r,da);k=e[Oa>>1]|0;if((c[Pa>>2]|0)>>>0<=k>>>0)break;m=c[o+60>>2]|0;do if(m>>>0>=r>>>0){if(m>>>0>=(r+k|0)>>>0)break;c[kb>>2]=32306;c[kb+4>>2]=64569;c[kb+8>>2]=31517;Db(11,32001,kb);c[la>>2]=11;break o}while(0);O=r+((e[Qa>>1]|0)+-4)|0;ig(c[p+52>>2]|0,d[O+1>>0]<<16|d[O>>0]<<24|d[O+2>>0]<<8|d[O+3>>0],3,c[p+4>>2]|0,la)}while(0);if(c[la>>2]|0){g=E;break c}m=p;k=c[ia>>2]|0}while(0);s=s+1|0;if((s|0)>=(k|0))break;else{q=j;p=m}}}while(0);p:do if((E|0)>1){if(J){m=0;n=0;while(1){o=c[La+(n<<2)>>2]|0;l=c[Ua+(n<<2)>>2]|0;j=c[(c[ua>>2]|0)+(l<<2)>>2]|0;l=b[(c[Ha>>2]|0)+(l<<1)>>1]|0;k=R+(l&65535)|0;p=_+m|0;do if(!(a[o+8>>0]|0)){O=(c[o+56>>2]|0)+8|0;N=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;a[O>>0]=N;a[O+1>>0]=N>>8;a[O+2>>0]=N>>16;a[O+3>>0]=N>>24}else{j=j+-4|0;if(l<<16>>16!=4)break;k=(Xa[c[S>>2]&255]($,j)|0)&65535}while(0);Lh($,n+h|0,j,k,p,c[o+4>>2]|0,la);if(c[la>>2]|0){g=E;break c}n=n+1|0;if((n|0)>=(v|0))break p;else m=k+m|0}}n=0;o=0;while(1){p=c[La+(o<<2)>>2]|0;k=c[Ua+(o<<2)>>2]|0;l=c[ua>>2]|0;j=c[l+(k<<2)>>2]|0;m=_+n|0;if(!(a[p+8>>0]|0)){k=R+(e[(c[Ha>>2]|0)+(k<<1)>>1]|0)|0;l=(c[p+56>>2]|0)+8|0;S=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;a[l>>0]=S;a[l+1>>0]=S>>8;a[l+2>>0]=S>>16;a[l+3>>0]=S>>24;l=m}else{cb[c[p+80>>2]&255](p,c[l+(k+-1<<2)>>2]|0,da);j=m+4|0;l=da;k=c[l>>2]|0;l=c[l+4>>2]|0;do if(!(l>>>0<0|(l|0)==0&k>>>0<128))if(l>>>0<0|(l|0)==0&k>>>0<16384){S=bw(k|0,l|0,7)|0;L()|0;a[j>>0]=S&255|-128;a[j+1>>0]=k&127;j=2;break}else{j=wh(j,k,l)|0;break}else{a[j>>0]=k&127;j=1}while(0);k=j+4|0;l=0;j=m}Lh($,o+h|0,j,k,l,c[p+4>>2]|0,la);if(c[la>>2]|0){g=E;break c}o=o+1|0;if((o|0)>=(v|0))break;else n=k+n|0}}while(0);h=1-E|0;q:do if((h|0)<(E|0)){O=c[Ua>>2]|0;N=J&1;r:while(1){K=(h|0)<0?0-h|0:h;M=ea+K|0;do if(!(a[M>>0]|0)){if((h|0)<=-1?(S=K+-1|0,(c[Va+(S<<2)>>2]|0)<(c[Ua+(S<<2)>>2]|0)):0)break;if(!K){J=O;k=0;H=0}else{if((K|0)>(g|0)){j=K+-1|0;k=c[ia>>2]|0}else{k=K+-1|0;j=k;k=(c[Va+(k<<2)>>2]|0)+N|0}H=(c[Ua+(j<<2)>>2]|0)+N|0;J=(c[Ua+(K<<2)>>2]|0)-H|0}I=c[La+(K<<2)>>2]|0;w=I+56|0;z=c[w>>2]|0;x=I+9|0;A=d[x>>0]|0;B=I+64|0;C=(c[B>>2]|0)+(J<<1)|0;D=I+24|0;v=e[D>>1]|0;F=I+12|0;y=k+v+(d[F>>0]|0)|0;q=J+H|0;if((k|0)<(H|0)){s=z+(c[(c[I+52>>2]|0)+36>>2]|0)|0;t=z+(A+8+(d[I+10>>0]|0))|0;u=z;j=0;l=0;m=0;r=k;while(1){p=c[(c[ua>>2]|0)+(r<<2)>>2]|0;if(p>>>0>=t>>>0&p>>>0>>0){n=e[(c[Ha>>2]|0)+(r<<1)>>1]|0;o=p+n|0;if((m|0)!=(o|0)){if(m|0)Oh(I,m-u&65535,l&65535)|0;if(o>>>0>s>>>0){j=0;break}else l=n}else l=l+n|0;j=j+1|0;m=p}r=r+1|0;if((r|0)>=(H|0)){aa=437;break}}if((aa|0)==437){aa=0;if(m|0)Oh(I,m-u&65535,l&65535)|0;if((j|0)>(v|0))break r}u=c[B>>2]|0;fw(u|0,u+(j<<1)|0,v<<1|0)|0;u=v-j|0}else u=v;if((y|0)>(q|0)){s=c[w>>2]|0;t=s+(c[(c[I+52>>2]|0)+36>>2]|0)|0;r=s+((d[x>>0]|0)+8+(d[I+10>>0]|0))|0;j=0;l=0;m=0;while(1){p=c[(c[ua>>2]|0)+(q<<2)>>2]|0;if(p>>>0>=r>>>0&p>>>0>>0){n=e[(c[Ha>>2]|0)+(q<<1)>>1]|0;o=p+n|0;if((m|0)!=(o|0)){if(m|0)Oh(I,m-s&65535,l&65535)|0;if(o>>>0>t>>>0){j=0;break}else l=n}else l=l+n|0;j=j+1|0;m=p}q=q+1|0;if((q|0)>=(y|0)){aa=452;break}}do if((aa|0)==452){aa=0;if(!m)break;Oh(I,m-s&65535,l&65535)|0}while(0);j=u-j|0}else j=u;p=z+(A+5)|0;q=p+1|0;S=z+(((d[p>>0]<<8|d[q>>0])+65535&65535)+1)|0;c[da>>2]=S;s:do if(S>>>0>>0)aa=468;else{if((k|0)>(H|0)){l=k-H|0;l=(l|0)>(J|0)?J:l;S=c[B>>2]|0;fw(S+(l<<1)|0,S|0,j<<1|0)|0;if(!(Th(I,C,da,S,H,l,ia)|0))j=j+l|0;else{aa=468;break}}l=a[F>>0]|0;if(l<<24>>24){o=0;do{m=k+(e[I+28+(o<<1)>>1]|0)|0;n=m-H|0;if((n|0)>-1&(n|0)<(J|0)){l=(c[B>>2]|0)+(n<<1)|0;if((j|0)>(n|0))fw(l+2|0,l|0,j-n<<1|0)|0;if(Th(I,C,da,l,m,1,ia)|0){aa=468;break s}j=j+1|0;l=a[F>>0]|0}o=o+1|0}while(o>>>0<(l&255)>>>0)}if(Th(I,C,da,(c[B>>2]|0)+(j<<1)|0,j+H|0,J-j|0,ia)|0){aa=468;break}b[D>>1]=J;a[F>>0]=0;S=z+(A+3)|0;a[S>>0]=J>>>8;a[S+1>>0]=b[D>>1];S=(c[da>>2]|0)-z|0;a[p>>0]=S>>>8;a[q>>0]=S;c[la>>2]=0}while(0);if((aa|0)==468){aa=0;if((J|0)>0){k=H;l=J;j=c[Ha>>2]|0;while(1){if(!(b[j+(k<<1)>>1]|0)){S=c[Ia>>2]|0;S=Xa[c[S+76>>2]&255](S,c[(c[ua>>2]|0)+(k<<2)>>2]|0)|0;j=c[Ha>>2]|0;b[j+(k<<1)>>1]=S}if((l|0)>1){k=k+1|0;l=l+-1|0}else break}}S=Rh(ia,H,J,I)|0;c[la>>2]=S;if(S|0){g=E;break c}}a[M>>0]=1;c[I+20>>2]=T-(c[Ya+(K<<2)>>2]|0)}while(0);h=h+1|0;if((h|0)>=(E|0))break q}c[lb>>2]=32306;c[lb+4>>2]=70299;c[lb+8>>2]=31517;Db(11,32001,lb);c[la>>2]=11;g=E;break c}while(0);t:do if(W){if(b[X>>1]|0){aa=488;break}l=c[La>>2]|0;if((c[l+20>>2]|0)<(d[$+9>>0]|0)){aa=488;break}Y=Qh(l,-1)|0;c[la>>2]=Y;if(Y|0)break;k=l+52|0;j=c[k>>2]|0;Y=c[l+56>>2]|0;W=c[V>>2]|0;h=d[l+9>>0]|0;X=(c[$+4>>2]|0)==1?100:0;V=Y+(h+5)|0;V=d[V>>0]<<8|d[V+1>>0];ew(W+V|0,Y+V|0,(c[j+36>>2]|0)-V|0)|0;ew(W+X|0,Y+h|0,(e[l+24>>1]<<1)+(e[l+18>>1]|0)|0)|0;a[$>>0]=0;h=Gf($)|0;do if(!h){h=Jh($)|0;if(h|0)break;if(!(a[j+17>>0]|0))h=c[la>>2]|0;else{h=hg($)|0;c[la>>2]=h}if(h|0)break t;$=Bh(c[k>>2]|0,l,c[l+4>>2]|0)|0;c[la>>2]=$;break t}while(0);c[la>>2]=h}else aa=488;while(0);do if((aa|0)==488){aa=0;if(!(Q&(U<<16>>16==0&(a[P>>0]|0)!=0)))break;h=0;do{$=c[La+(h<<2)>>2]|0;X=c[$+56>>2]|0;ig(Y,d[X+9>>0]<<16|d[X+8>>0]<<24|d[X+10>>0]<<8|d[X+11>>0],5,c[$+4>>2]|0,la);h=h+1|0}while((h|0)!=(E|0))}while(0);if((E|0)>(g|0)){g=E;break c}k=E;h=c[la>>2]|0;while(1){j=c[va+(k<<2)>>2]|0;if(!h){h=Bh(c[j+52>>2]|0,j,c[j+4>>2]|0)|0;c[la>>2]=h}if((k|0)<(g|0))k=k+1|0;else{g=E;break c}}}while(0);if((aa|0)==155){aa=0;c[ua>>2]=0}c[la>>2]=7;g=0;break}}else aa=130;while(0);if((aa|0)==130){aa=0;gw(va|0,0,(g<<2)+4|0)|0;g=0}h=c[ua>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{$=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);j=0;do{h=c[va+(j<<2)>>2]|0;do if(h|0){h=c[h+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);break}else{$=c[h+20>>2]|0;Y=$+120|0;c[Y>>2]=(c[Y>>2]|0)+-1;$=$+136|0;c[h+16>>2]=c[$>>2];c[$>>2]=h;break}}while(0);j=j+1|0}while((j|0)!=(Z|0));if((g|0)>0){j=0;do{h=c[La+(j<<2)>>2]|0;do if(h|0){h=c[h+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);break}else{$=c[h+20>>2]|0;Z=$+120|0;c[Z>>2]=(c[Z>>2]|0)+-1;$=$+136|0;c[h+16>>2]=c[$>>2];c[$>>2]=h;break}}while(0);j=j+1|0}while((j|0)!=(g|0))}h=c[la>>2]|0}if(i){g=i;do if((c[14816]|0)>>>0<=g>>>0)if((c[14817]|0)>>>0>g>>>0){c[14979]=(c[14979]|0)+-1;c[i>>2]=c[14819];c[14819]=i;i=(c[14820]|0)+1|0;c[14820]=i;c[14821]=(i|0)<(c[14815]|0)&1;i=_;break b}else{g=Wa[c[29352>>2]&127](i)|0;break}else g=Wa[c[29352>>2]&127](i)|0;while(0);c[14980]=(c[14980]|0)-g;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);i=_;break}else{$=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);i=_;break}}else i=_}while(0);a[ba>>0]=0;if(ca)aa=525}while(0);if((aa|0)==523){a[ba>>0]=0;aa=525}do if((aa|0)==525){g=c[ca+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);break}else{ca=c[g+20>>2]|0;ba=ca+120|0;c[ba>>2]=(c[ba>>2]|0)+-1;ca=ca+136|0;c[g+16>>2]=c[ca>>2];c[ca>>2]=g;break}}while(0);g=(a[na>>0]|0)+-1<<24>>24;a[na>>0]=g;j=g;g=f+120+(g<<24>>24<<2)|0}ca=c[g>>2]|0;c[oa>>2]=ca}while(!(h|0));if(!i){Ra=nb;return h|0}g=i;do if((c[14816]|0)>>>0>g>>>0)g=Wa[c[29352>>2]&127](i)|0;else{if((c[14817]|0)>>>0<=g>>>0){g=Wa[c[29352>>2]&127](i)|0;break}c[14979]=(c[14979]|0)+-1;c[i>>2]=c[14819];c[14819]=i;mb=(c[14820]|0)+1|0;c[14820]=mb;c[14821]=(mb|0)<(c[14815]|0)&1;Ra=nb;return h|0}while(0);c[14980]=(c[14980]|0)-g;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);Ra=nb;return h|0}else{mb=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-mb;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);Ra=nb;return h|0}return 0}function Nh(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;i=c[f+28>>2]|0;j=i-g|0;if((j|0)<1){if((h|0)<=0){n=0;return n|0}i=0;while(1){if(a[e+i>>0]|0)break;i=i+1|0;if((i|0)>=(h|0)){i=0;n=30;break}}if((n|0)==30)return i|0;l=e+i|0;f=c[d+72>>2]|0;k=c[f+20>>2]|0;if((b[f+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[f+24>>2]|0)>>>0:0){if(c[k+96>>2]|0){m=Ve(f)|0;n=14}}else n=10;do if((n|0)==10){j=c[k+40>>2]|0;if(j|0){n=j;return n|0}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){m=Wf(f)|0;n=14;break}else{m=Xf(f)|0;n=14;break}}while(0);if((n|0)==14?m|0:0){n=m;return n|0}gw(l|0,0,h-i|0)|0;n=0;return n|0}else{if((j|0)<(h|0)){i=Nh(d,e+j|0,f,i,h-j|0)|0;if(!i)l=j;else{n=i;return n|0}}else l=h;k=f+16|0;i=(c[k>>2]|0)+g|0;if(!(Lu(e,i,l)|0)){n=0;return n|0}j=c[d+72>>2]|0;f=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[f+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0){if(c[f+96>>2]|0){i=Ve(j)|0;n=27}}else n=23;do if((n|0)==23){i=c[f+40>>2]|0;if(i|0){n=i;return n|0}if((c[f+148>>2]|0)>>>0>(c[f+152>>2]|0)>>>0){i=Wf(j)|0;n=27;break}else{i=Xf(j)|0;n=27;break}}while(0);do if((n|0)==27)if(!i){i=(c[k>>2]|0)+g|0;break}else{n=i;return n|0}while(0);fw(e|0,i|0,l|0)|0;n=0;return n|0}return 0}function Oh(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=Ra;Ra=Ra+112|0;B=E+96|0;y=E+80|0;v=E+64|0;t=E+48|0;s=E+32|0;r=E+16|0;q=E;k=f&65535;C=g&65535;u=C+k|0;D=c[e+56>>2]|0;z=d[e+9>>0]|0;A=z+1|0;o=A&65535;p=a[D+(z+2)>>0]|0;h=a[D+A>>0]|0;if(p<<24>>24==0?h<<24>>24==0:0){q=u;p=0;n=0;m=f&255;l=(f&65535)>>>8&255}else w=3;do if((w|0)==3){m=p&255;h=(h&255)<<8|m;i=h&65535;n=(i&65535)>>>8&255;do if(h>>>0>>0){l=A;while(1){if(h>>>0<(l+4|0)>>>0)break;l=i&65535;h=D+l|0;p=a[h+1>>0]|0;m=p&255;h=(d[h>>0]|0)<<8|m;j=h&65535;if(h>>>0>>0){o=i;i=j}else{w=10;break}}if((w|0)==10){o=i;n=(j&65535)>>>8&255;w=11;break}if(!h){n=(i&65535)>>>8&255;j=0;i=c[(c[e+52>>2]|0)+36>>2]|0;break}c[q>>2]=32306;c[q+4>>2]=64915;c[q+8>>2]=31517;Db(11,32001,q);D=11;Ra=E;return D|0}else{l=A;w=11}while(0);if((w|0)==11){i=c[(c[e+52>>2]|0)+36>>2]|0;if(h>>>0>(i+-4|0)>>>0){c[r>>2]=32306;c[r+4>>2]=64920;c[r+8>>2]=31517;Db(11,32001,r);D=11;Ra=E;return D|0}else j=h}do if((j+-1|0)>>>0<(u+3|0)>>>0){if(u>>>0>j>>>0){c[s>>2]=32306;c[s+4>>2]=64932;c[s+8>>2]=31517;Db(11,32001,s);D=11;Ra=E;return D|0}h=D+(j+2)|0;h=((d[h>>0]|0)<<8|(d[h+1>>0]|0))+j|0;if(h>>>0<=i>>>0){n=D+j|0;q=h;g=h-k&65535;h=m-u&255;p=a[n+1>>0]|0;n=a[n>>0]|0;break}c[t>>2]=32306;c[t+4>>2]=64935;c[t+8>>2]=31517;Db(11,32001,t);D=11;Ra=E;return D|0}else{q=u;h=0}while(0);do if(A>>>0>>0?(x=D+(l+2)|0,x=((d[x>>0]|0)<<8|(d[x+1>>0]|0))+l|0,(x+3|0)>>>0>=k>>>0):0){if(x>>>0<=k>>>0){f=o;g=q-l&65535;h=(h&255)+k-x&255;break}c[v>>2]=32306;c[v+4>>2]=64948;c[v+8>>2]=31517;Db(11,32001,v);D=11;Ra=E;return D|0}while(0);i=D+(z+7)|0;j=a[i>>0]|0;if((j&255)>=(h&255)){a[i>>0]=(j&255)-(h&255);m=f&255;l=(f&65535)>>>8&255;k=f&65535;break}c[y>>2]=32306;c[y+4>>2]=64954;c[y+8>>2]=31517;Db(11,32001,y);D=11;Ra=E;return D|0}while(0);h=D+(z+5)|0;i=h+1|0;j=(d[h>>0]|0)<<8|(d[i>>0]|0);do if(j>>>0>>0){B=D+(o&65535)|0;a[B>>0]=l;a[B+1>>0]=m}else{if((A|0)==(o&65535|0)&j>>>0<=k>>>0){B=D+A|0;a[B>>0]=n;a[B+1>>0]=p;a[h>>0]=q>>>8;a[i>>0]=q;break}c[B>>2]=32306;c[B+4>>2]=64962;c[B+8>>2]=31517;Db(11,32001,B);D=11;Ra=E;return D|0}while(0);if(!(b[(c[e+52>>2]|0)+22>>1]&12))h=D+k|0;else{h=D+k|0;gw(h|0,0,g&65535|0)|0}a[h>>0]=n;a[D+k+1>>0]=p;D=D+(k+2)|0;a[D>>0]=(g&65535)>>>8;a[D+1>>0]=g;D=e+20|0;c[D>>2]=(c[D>>2]|0)+C;D=0;Ra=E;return D|0}function Ph(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+48|0;r=t+32|0;o=t+16|0;s=t;n=b&255;i=n+1|0;b=f+i|0;b=(d[b>>0]|0)<<8|(d[b+1>>0]|0);q=e-g|0;a:do if((b|0)<=(q|0)){l=i;while(1){k=f+(b+2)|0;j=(d[k>>0]|0)<<8|(d[k+1>>0]|0);m=j-g|0;if((m|0)>-1)break;i=f+b|0;i=(d[i>>0]|0)<<8|(d[i+1>>0]|0);if((i|0)<=(j+b|0)){p=13;break}if((i|0)>(q|0)){b=i;break a}else{l=b;b=i}}if((p|0)==13){if(!i){f=0;Ra=t;return f|0}c[o>>2]=32306;c[o+4>>2]=64770;c[o+8>>2]=31517;Db(11,32001,o);c[h>>2]=11;f=0;Ra=t;return f|0}i=k+1|0;do if((m|0)<4){i=f+(n+7)|0;if((d[i>>0]|0)>57){f=0;Ra=t;return f|0}else{h=f+l|0;s=f+b|0;s=d[s>>0]|d[s+1>>0]<<8;a[h>>0]=s;a[h+1>>0]=s>>8;a[i>>0]=m+(d[i>>0]|0);b=m+b|0;break}}else{b=m+b|0;if((b|0)<=(q|0)){a[k>>0]=m>>>8;a[i>>0]=m;break}c[s>>2]=32306;c[s+4>>2]=64756;c[s+8>>2]=31517;Db(11,32001,s);c[h>>2]=11;f=0;Ra=t;return f|0}while(0);f=f+b|0;Ra=t;return f|0}while(0);if((b|0)<=(e+-4|0)){f=0;Ra=t;return f|0}c[r>>2]=32306;c[r+4>>2]=64777;c[r+8>>2]=31517;Db(11,32001,r);c[h>>2]=11;f=0;Ra=t;return f|0}function Qh(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=Ra;Ra=Ra+144|0;F=G+128|0;x=G+112|0;w=G+96|0;o=G+80|0;p=G+64|0;l=G+48|0;k=G+32|0;i=G+16|0;h=G;D=c[f+56>>2]|0;E=d[f+9>>0]|0;z=e[f+18>>1]|0;q=b[f+24>>1]|0;u=q&65535;B=(u<<1)+z|0;v=f+52|0;y=c[(c[v>>2]|0)+36>>2]|0;C=D+(E+7)|0;do if((d[C>>0]|0)<=(g|0)){s=D+(E+1)|0;s=d[s>>0]<<8|d[s+1>>0];g=y+-4|0;if((s|0)>(g|0)){c[h>>2]=32306;c[h+4>>2]=64627;c[h+8>>2]=31517;Db(11,32001,h);F=11;Ra=G;return F|0}if(s){r=D+s|0;r=d[r>>0]<<8|d[r+1>>0];if((r|0)>(g|0)){c[i>>2]=32306;c[i+4>>2]=64630;c[i+8>>2]=31517;Db(11,32001,i);F=11;Ra=G;return F|0}j=(r|0)==0;if(!j){if(a[D+r>>0]|0){t=g;A=27;break}if(a[D+(r+1)>>0]|0){t=g;A=27;break}}n=D+B|0;m=D+(s+2)|0;m=d[m>>0]<<8|d[m+1>>0];i=D+(E+5)|0;i=d[i>>0]<<8|d[i+1>>0];if(s>>>0<=i>>>0){c[k>>2]=32306;c[k+4>>2]=64638;c[k+8>>2]=31517;Db(11,32001,k);F=11;Ra=G;return F|0}h=m+s|0;do if(j)if((h|0)>(y|0)){c[o>>2]=32306;c[o+4>>2]=64647;c[o+8>>2]=31517;Db(11,32001,o);F=11;Ra=G;return F|0}else l=0;else{if(r>>>0>>0){c[l>>2]=32306;c[l+4>>2]=64641;c[l+8>>2]=31517;Db(11,32001,l);F=11;Ra=G;return F|0}g=D+(r+2)|0;g=d[g>>0]<<8|d[g+1>>0];if((g+r|0)<=(y|0)){fw(D+(g+h)|0,D+h|0,r-h|0)|0;m=g+m|0;l=g;break}c[p>>2]=32306;c[p+4>>2]=64643;c[p+8>>2]=31517;Db(11,32001,p);F=11;Ra=G;return F|0}while(0);g=m+i|0;fw(D+g|0,D+i|0,s-i|0)|0;if(q<<16>>16){i=D+z|0;do{j=i+1|0;k=d[i>>0]<<8|d[j>>0];if(k>>>0>=s>>>0){if(k>>>0>>0){h=l;A=25}}else{h=m;A=25}if((A|0)==25){A=0;z=k+h|0;a[i>>0]=z>>>8;a[j>>0]=z}i=i+2|0}while(i>>>0>>0)}}else{t=g;A=27}}else{t=y+-4|0;A=27}while(0);if((A|0)==27){a:do if(q<<16>>16){q=f+76|0;r=D+(E+5)|0;s=r+1|0;p=0;i=0;h=D;k=y;while(1){l=D+((p<<1)+z)|0;m=l+1|0;n=d[l>>0]<<8|d[m>>0];if(n>>>0>>0|(n|0)>(t|0)){A=30;break}j=h+n|0;o=(Xa[c[q>>2]&255](f,j)|0)&65535;g=k-o|0;if((g|0)<(B|0)|(n+o|0)>(y|0)){A=32;break}a[l>>0]=g>>>8;a[m>>0]=g;if(!i)if((g|0)==(n|0))i=0;else{j=c[(c[c[v>>2]>>2]|0)+208>>2]|0;i=d[r>>0]<<8|d[s>>0];ew(j+i|0,D+i|0,k-i|0)|0;i=j;h=j;j=j+n|0;A=36}else A=36;if((A|0)==36){A=0;ew(D+g|0,j|0,o|0)|0}p=p+1|0;if(p>>>0>=u>>>0)break a;else k=g}if((A|0)==30){c[w>>2]=32306;c[w+4>>2]=64675;c[w+8>>2]=31517;Db(11,32001,w);F=11;Ra=G;return F|0}else if((A|0)==32){c[x>>2]=32306;c[x+4>>2]=64681;c[x+8>>2]=31517;Db(11,32001,x);F=11;Ra=G;return F|0}}else g=y;while(0);a[C>>0]=0}h=g-B|0;if((h+(d[C>>0]|0)|0)==(c[f+20>>2]|0)){F=D+(E+5)|0;a[F>>0]=g>>>8;a[F+1>>0]=g;a[D+(E+1)>>0]=0;a[D+(E+2)>>0]=0;gw(D+B|0,0,h|0)|0;F=0;Ra=G;return F|0}else{c[F>>2]=32306;c[F+4>>2]=64702;c[F+8>>2]=31517;Db(11,32001,F);F=11;Ra=G;return F|0}return 0}function Rh(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=Ra;Ra=Ra+48|0;E=F+32|0;D=F+16|0;C=F;A=d[i+9>>0]|0;B=c[i+56>>2]|0;s=c[i+52>>2]|0;x=c[s+36>>2]|0;t=B+x|0;j=c[i+64>>2]|0;s=c[(c[s>>2]|0)+208>>2]|0;y=B+(A+5)|0;z=y+1|0;k=(d[y>>0]|0)<<8|(d[z>>0]|0);k=k>>>0>x>>>0?0:k;ew(s+k|0,B+k|0,x-k|0)|0;k=0;while(1)if(k>>>0<6?(c[f+40+(k<<2)>>2]|0)<=(g|0):0)k=k+1|0;else break;u=h+g|0;v=f+8|0;w=f+12|0;x=B;l=t;a:while(1){q=c[f+16+(k<<2)>>2]|0;r=f+40+(k<<2)|0;p=l;do{l=c[(c[v>>2]|0)+(g<<2)>>2]|0;m=l;o=e[(c[w>>2]|0)+(g<<1)>>1]|0;n=l+o|0;if(!(l>>>0>=B>>>0&l>>>0>>0)){if(l>>>0>>0&n>>>0>q>>>0){g=10;break a}}else{if(n>>>0>t>>>0){g=7;break a}l=s+(m-x)|0}p=p+(0-o)|0;n=p-x|0;m=n>>>8&255;a[j>>0]=m;n=n&255;a[j+1>>0]=n;j=j+2|0;if(p>>>0>>0){g=12;break a}ew(p|0,l|0,o|0)|0;g=g+1|0;if((g|0)>=(u|0)){g=16;break a}}while((c[r>>2]|0)>(g|0));l=p;k=k+1|0}if((g|0)==7){c[C>>2]=32306;c[C+4>>2]=70094;c[C+8>>2]=31517;Db(11,32001,C);E=11;Ra=F;return E|0}else if((g|0)==10){c[D>>2]=32306;c[D+4>>2]=70099;c[D+8>>2]=31517;Db(11,32001,D);E=11;Ra=F;return E|0}else if((g|0)==12){c[E>>2]=32306;c[E+4>>2]=70105;c[E+8>>2]=31517;Db(11,32001,E);E=11;Ra=F;return E|0}else if((g|0)==16){D=i+24|0;b[D>>1]=h;a[i+12>>0]=0;E=B+(A+1)|0;a[E>>0]=0;a[E+1>>0]=0;E=B+(A+3)|0;a[E>>0]=(e[D>>1]|0)>>>8;a[E+1>>0]=b[D>>1];a[y>>0]=m;a[z>>0]=n;a[B+(A+7)>>0]=0;E=0;Ra=F;return E|0}return 0}function Sh(a,d){a=a|0;d=d|0;var e=0;e=c[a+4>>2]|0;e=Xa[c[e+76>>2]&255](e,c[(c[a+8>>2]|0)+(d<<2)>>2]|0)|0;b[(c[a+12>>2]|0)+(d<<1)>>1]=e;return e|0}function Th(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=Ra;Ra=Ra+16|0;y=A;w=A+12|0;x=d+56|0;k=c[x>>2]|0;l=c[f>>2]|0;v=i+h|0;if((i|0)<1){z=0;Ra=A;return z|0}i=0;while(1)if(i>>>0<6?(c[j+40+(i<<2)>>2]|0)<=(h|0):0)i=i+1|0;else break;s=j+12|0;t=k+1|0;u=k+2|0;r=j+8|0;q=d+9|0;p=d+52|0;o=c[j+16+(i<<2)>>2]|0;n=i;while(1){i=b[(c[s>>2]|0)+(h<<1)>>1]|0;if(!(i<<16>>16))i=Sh(j,h)|0;m=i&65535;if((a[t>>0]|0)==0?(a[u>>0]|0)==0:0)z=10;else{i=Ph(a[q>>0]|0,c[(c[p>>2]|0)+36>>2]|0,c[x>>2]|0,m,w)|0;if(!i)z=10}if((z|0)==10){z=0;if((l-e|0)<(m|0))break;l=l+(0-m)|0;i=l}d=c[(c[r>>2]|0)+(h<<2)>>2]|0;if(d>>>0>>0&(d+m|0)>>>0>o>>>0){z=13;break}fw(i|0,d|0,m|0)|0;m=i-k|0;a[g>>0]=m>>>8;a[g+1>>0]=m;h=h+1|0;if((h|0)>=(v|0)){z=19;break}d=n+1|0;if((c[j+40+(n<<2)>>2]|0)>(h|0)){i=o;d=n}else i=c[j+16+(d<<2)>>2]|0;o=i;g=g+2|0;n=d}if((z|0)==13){c[y>>2]=32306;c[y+4>>2]=70190;c[y+8>>2]=31517;Db(11,32001,y)}else if((z|0)==19){c[f>>2]=l;z=0;Ra=A;return z|0}z=1;Ra=A;return z|0}function Uh(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=Ra;Ra=Ra+16|0;t=w+4|0;u=w;v=f+12|0;n=f+8|0;h=c[n>>2]|0;do if(!(c[v>>2]|0)){m=c[h+28>>2]|0;l=((e[m+6>>1]|0)*40|0)+56|0;j=c[m+12>>2]|0;a:do if(!j){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](l)|0;r=25;break}k=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;j=59064;h=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&h>>>0>0){s=c[14978]|0;q=Tv(h|0,j|0,k|0,((k|0)<0)<<31>>31|0)|0;p=L()|0;c[14768]=((p|0)<0|(p|0)==0&q>>>0<=s>>>0)&1}h=Wa[c[29340>>2]&127](k)|0;if(h|0){i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;r=26}else r=26}}else{if(c[j+272>>2]|0){if(a[j+81>>0]|0)break}else{do if(!(0<0|(0==0?(e[j+276>>1]|0)>>>0>>0:0))){h=j+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];r=j+284|0;c[r>>2]=(c[r>>2]|0)+1;r=25;break a}h=j+296|0;i=c[h>>2]|0;if(!i){h=j+292|0;break}else{c[h>>2]=c[i>>2];r=j+284|0;c[r>>2]=(c[r>>2]|0)+1;r=25;break a}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}i=_d(j,l,0)|0;r=25}while(0);if((r|0)==25?i|0:0){h=i;r=26}if((r|0)==26){c[h+4>>2]=h+16;c[h>>2]=m;c[v>>2]=h;s=c[n>>2]|0;b[h+8>>1]=b[(c[s+28>>2]|0)+6>>1]|0;a[h+11>>0]=0;h=s;break}c[v>>2]=0;v=7;Ra=w;return v|0}while(0);l=c[g>>2]|0;r=a[h+60>>0]|0;s=f+32|0;c[s>>2]=r<<24>>24==1?78:r<<24>>24==2?76:77;if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](256)|0;if(!h){v=7;Ra=w;return v|0}}else{h=Wa[c[29356>>2]&127](256)|0;if((c[14985]|0)>>>0<256)c[14985]=256;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){r=c[14978]|0;q=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;p=L()|0;c[14768]=((p|0)<0|(p|0)==0&q>>>0<=r>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){v=7;Ra=w;return v|0}i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}gw(h|0,0,256)|0;if(l|0){q=g+4|0;k=l;j=l;while(1){i=c[q>>2]|0;if(i)if((j|0)==(i|0)){p=0;j=0}else{j=i+(c[k+4>>2]|0)|0;p=j}else{j=c[k+4>>2]|0;p=j}c[k+4>>2]=0;l=c[h>>2]|0;if(!l)i=h;else{o=0;i=h;do{c[t>>2]=0;c[u>>2]=0;m=t;b:while(1){n=l+8|0;while(1){if(($a[c[s>>2]&127](f,u,k+8|0,c[k>>2]|0,n,c[l>>2]|0)|0)>=1)break;c[m>>2]=k;m=k+4|0;k=c[m>>2]|0;if(!k){r=51;break b}}c[m>>2]=l;m=l+4|0;l=c[m>>2]|0;c[u>>2]=0;if(!l){r=53;break}}if((r|0)==51)c[m>>2]=l;else if((r|0)==53)c[m>>2]=k;k=c[t>>2]|0;c[i>>2]=0;o=o+1|0;i=h+(o<<2)|0;l=c[i>>2]|0}while((l|0)!=0)}c[i>>2]=k;if(!p)break;else k=p}}m=0;i=0;do{k=c[h+(m<<2)>>2]|0;if(k)if(!i)i=k;else{c[t>>2]=0;c[u>>2]=0;j=t;c:while(1){l=k+8|0;while(1){if(($a[c[s>>2]&127](f,u,i+8|0,c[i>>2]|0,l,c[k>>2]|0)|0)>=1)break;c[j>>2]=i;j=i+4|0;i=c[j>>2]|0;if(!i){r=63;break c}}c[j>>2]=k;j=k+4|0;k=c[j>>2]|0;c[u>>2]=0;if(!k){r=65;break}}if((r|0)==63)c[j>>2]=k;else if((r|0)==65)c[j>>2]=i;i=c[t>>2]|0}m=m+1|0}while((m|0)!=64);c[g>>2]=i;if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{u=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}v=d[(c[v>>2]|0)+11>>0]|0;Ra=w;return v|0}function Vh(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=Ra;Ra=Ra+16|0;t=x;a[b+56>>0]=1;e=b+64|0;w=b+36|0;g=b+72|0;f=b+104|0;if((c[f>>2]|0)==0?(d=Zh(c[(c[g>>2]|0)+24>>2]|0,f)|0,d|0):0){w=d;Ra=x;return w|0}d=Uh(e,w)|0;if(d|0){w=d;Ra=x;return w|0}k=c[f>>2]|0;j=c[(c[g>>2]|0)+12>>2]|0;v=b+112|0;h=v;g=c[h>>2]|0;h=c[h+4>>2]|0;i=((j|0)<0)<<31>>31;s=Sv(j|0,i|0,-1,-1)|0;r=L()|0;do if(r>>>0>0|(r|0)==0&s>>>0>2147483390){d=7;s=0;q=0;i=0;r=0;f=0;e=0}else{if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](j)|0;if(!d){d=7;s=0;q=0;i=0;r=0;f=0;e=0;break}else e=d}else{d=Wa[c[29356>>2]&127](j)|0;if((c[14985]|0)>>>0>>0)c[14985]=j;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){s=c[14978]|0;r=Tv(e|0,f|0,d|0,((d|0)<0)<<31>>31|0)|0;q=L()|0;c[14768]=((q|0)<0|(q|0)==0&r>>>0<=s>>>0)&1}e=Wa[c[29340>>2]&127](d)|0;if(!e){d=7;s=0;q=0;i=0;r=0;f=0;e=0;break}d=Wa[c[29352>>2]&127](e)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}i=Zv(g|0,h|0,j|0,i|0)|0;L()|0;f=Tv(g|0,h|0,i|0,((i|0)<0)<<31>>31|0)|0;d=0;s=e;q=j;r=k;e=L()|0}while(0);g=b+92|0;c[g>>2]=(c[g>>2]|0)+1;g=c[b+44>>2]|0;h=((g|0)<0)<<31>>31;do if(g>>>0>=128)if(g>>>0>=16384){g=wh(t,g,h)|0;if((g|0)>0){u=22;break}else{h=i;g=i;break}}else{u=bw(g|0,h|0,7)|0;L()|0;a[t>>0]=u&255|-128;a[t+1>>0]=g&127;g=2;u=22;break}else{a[t>>0]=g&127;g=1;u=22}while(0);a:do if((u|0)==22){l=((q|0)<0)<<31>>31;k=g;h=i;while(1){if(d|0){g=i;break a}j=q-i|0;j=(k|0)>(j|0)?j:k;ew(s+i|0,t+(g-k)|0,j|0)|0;i=j+i|0;if((i|0)==(q|0)){i=Sv(f|0,e|0,h|0,((h|0)<0)<<31>>31|0)|0;d=L()|0;f=Sv(f|0,e|0,q|0,l|0)|0;e=L()|0;d=_a[c[(c[r>>2]|0)+12>>2]&127](r,s+h|0,q-h|0,i,d)|0;h=0;i=0}else d=0;k=k-j|0;if((k|0)<=0){g=i;break}}}while(0);i=c[w>>2]|0;if(i){p=((q|0)<0)<<31>>31;n=b+40|0;o=t+1|0;do{m=i;i=c[i+4>>2]|0;l=c[m>>2]|0;j=((l|0)<0)<<31>>31;do if(l>>>0>=128)if(l>>>0>=16384){j=wh(t,l,j)|0;if((j|0)>0){u=34;break}else break}else{j=bw(l|0,j|0,7)|0;L()|0;a[t>>0]=j&255|-128;j=2;k=o;u=33;break}else{j=1;k=t;u=33}while(0);if((u|0)==33){a[k>>0]=l&127;u=34}b:do if((u|0)==34){u=0;l=j;do{if(d|0)break b;k=q-g|0;k=(l|0)>(k|0)?k:l;ew(s+g|0,t+(j-l)|0,k|0)|0;g=k+g|0;if((g|0)==(q|0)){g=Sv(f|0,e|0,h|0,((h|0)<0)<<31>>31|0)|0;d=L()|0;f=Sv(f|0,e|0,q|0,p|0)|0;e=L()|0;d=_a[c[(c[r>>2]|0)+12>>2]&127](r,s+h|0,q-h|0,g,d)|0;h=0;g=0}else d=0;l=l-k|0}while((l|0)>0)}while(0);l=m+8|0;b=c[m>>2]|0;c:do if((b|0)>0){k=b;do{if(d|0)break c;j=q-g|0;j=(k|0)>(j|0)?j:k;ew(s+g|0,l+(b-k)|0,j|0)|0;g=j+g|0;if((g|0)==(q|0)){g=Sv(f|0,e|0,h|0,((h|0)<0)<<31>>31|0)|0;d=L()|0;f=Sv(f|0,e|0,q|0,p|0)|0;e=L()|0;d=_a[c[(c[r>>2]|0)+12>>2]&127](r,s+h|0,q-h|0,g,d)|0;h=0;g=0}else d=0;k=k-j|0}while((k|0)>0)}while(0);do if(!((m|0)==0|(c[n>>2]|0)!=0))if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{b=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0)}while((i|0)!=0)}c[w>>2]=0;if(d){t=Sv(f|0,e|0,g|0,((g|0)<0)<<31>>31|0)|0;u=L()|0;w=v;c[w>>2]=t;c[w+4>>2]=u;if(!s){w=d;Ra=x;return w|0}}else{if(!s){t=Sv(f|0,e|0,g|0,((g|0)<0)<<31>>31|0)|0;u=L()|0;w=v;c[w>>2]=t;c[w+4>>2]=u;w=0;Ra=x;return w|0}if((g|0)>(h|0)){w=Sv(f|0,e|0,h|0,((h|0)<0)<<31>>31|0)|0;d=L()|0;d=_a[c[(c[r>>2]|0)+12>>2]&127](r,s+h|0,g-h|0,w,d)|0}else d=0;t=Sv(f|0,e|0,g|0,((g|0)<0)<<31>>31|0)|0;u=L()|0;w=v;c[w>>2]=t;c[w+4>>2]=u}if(!(c[7324]|0)){ab[c[29344>>2]&127](s);w=d;Ra=x;return w|0}else{w=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);w=d;Ra=x;return w|0}return 0}function Wh(b,f,g,h,i,j){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=a[g+1>>0]|0;o=k&255;l=a[i+1>>0]|0;p=g+(d[g>>0]|0)|0;q=i+(d[i>>0]|0)|0;a:do if(k<<24>>24!=l<<24>>24){m=(k&255)>7;n=(l&255)>7;k=o-(l&255)|0;do if(!(m&n)){k=n?1:m?-1:k;if((k|0)<=0)if((a[q>>0]|0)<0){k=1;r=12;break a}else break;else{k=(a[p>>0]|0)<0?-1:k;break}}while(0);l=c[(c[b+8>>2]|0)+28>>2]|0;if(k){j=k;i=l;i=i+16|0;i=c[i>>2]|0;i=a[i>>0]|0;i=i<<24>>24==0;r=0-j|0;r=i?j:r;return r|0}}else{m=d[34845+o>>0]|0;b:do if((o+-1|0)>>>0<6){k=0;while(1){l=(d[p+k>>0]|0)-(d[q+k>>0]|0)|0;k=k+1|0;if(l|0)break;if(k>>>0>=m>>>0)break b}k=a[p>>0]|0;k=(a[q>>0]^k)<<24>>24<0?(((k&255)>>>6&2^2)&255)+-1|0:l;r=12;break a}while(0);l=c[(c[b+8>>2]|0)+28>>2]|0}while(0);if((r|0)==12){j=k;i=c[(c[b+8>>2]|0)+28>>2]|0;i=i+16|0;i=c[i>>2]|0;i=a[i>>0]|0;i=i<<24>>24==0;r=0-j|0;r=i?j:r;return r|0}if((e[l+6>>1]|0)<=1){r=0;return r|0}k=c[b+12>>2]|0;if(!(c[f>>2]|0)){_g(l,j,i,k);c[f>>2]=1}r=Fh(h,g,k,1)|0;return r|0}function Xh(b,f,g,h,i,j){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=Ra;Ra=Ra+16|0;p=s;r=g+(d[g>>0]|0)|0;q=i+(d[i>>0]|0)|0;k=g+1|0;o=a[k>>0]|0;l=o&255;do if(o<<24>>24<=-1){m=d[g+2>>0]|0;if(!(m&128)){o=l<<7&16256|m;break}n=d[g+3>>0]|0;if(!(n&128)){o=(l<<14|n)&2080895|m<<7&16256;break}else{Of(k,p)|0;n=p;o=c[n>>2]|0;o=((o|0)==(o|0)?0==(c[n+4>>2]|0):0)?o:-1;break}}else o=l;while(0);l=i+1|0;n=a[l>>0]|0;k=n&255;do if(n<<24>>24<=-1){m=d[i+2>>0]|0;if(!(m&128)){k=k<<7&16256|m;break}n=d[i+3>>0]|0;if(!(n&128)){k=(k<<14|n)&2080895|m<<7&16256;break}else{Of(l,p)|0;k=c[p>>2]|0;k=((k|0)==(k|0)?0==(c[p+4>>2]|0):0)?k:-1;break}}while(0);l=Lu(r,q,(((o|0)<(k|0)?o:k)+-13|0)/2|0)|0;m=o-k|0;if(!l){k=c[(c[b+8>>2]|0)+28>>2]|0;if(!m){if((e[k+6>>1]|0)<=1){j=0;Ra=s;return j|0}l=c[b+12>>2]|0;if(!(c[f>>2]|0)){_g(k,j,i,l);c[f>>2]=1}j=Fh(h,g,l,1)|0;Ra=s;return j|0}else l=m}else k=c[(c[b+8>>2]|0)+28>>2]|0;j=(a[c[k+16>>2]>>0]|0)==0?l:0-l|0;Ra=s;return j|0}function Yh(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=c[a+12>>2]|0;if(!(c[b>>2]|0)){_g(c[(c[a+8>>2]|0)+28>>2]|0,g,f,h);c[b>>2]=1}return Fh(e,d,h,0)|0}function Zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=Ra;Ra=Ra+16|0;i=j+8|0;h=j;d=c[7389]|0;if(d|0?Wa[d&127](202)|0:0){i=3338;Ra=j;return i|0}g=c[a>>2]|0;f=c[g+4>>2]|0;e=Sv(f|0,((f|0)<0)<<31>>31|0,-1,-1)|0;d=L()|0;do if(d>>>0>0|(d|0)==0&e>>>0>2147483390)a=7;else{if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](f)|0;if(!a){a=7;break}else d=a}else{a=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){k=c[14978]|0;e=Tv(d|0,e|0,a|0,((a|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=k>>>0)&1}d=Wa[c[29340>>2]&127](a)|0;if(!d){a=7;break}a=Wa[c[29352>>2]&127](d)|0;a=(c[14978]|0)+a|0;c[14978]=a;if(a>>>0>(c[14982]|0)>>>0)c[14982]=a;a=(c[14981]|0)+1|0;c[14981]=a;if(a>>>0>(c[14987]|0)>>>0)c[14987]=a}gw(d|0,0,f|0)|0;a=_a[c[g+24>>2]&127](g,0,d,4126,i)|0;if(a|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{k=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}c[b>>2]=d;c[i>>2]=0;a=h;c[a>>2]=0;c[a+4>>2]=0;a=c[d>>2]|0;if(!a)a=0;else{Ya[c[a+40>>2]&127](d,18,h)|0;a=c[i>>2]|0}k=a;Ra=j;return k|0}while(0);c[i>>2]=a;k=a;Ra=j;return k|0}function _h(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+16|0;o=q;p=b+4|0;c[p>>2]=a;m=c[b>>2]|0;a:do if((m|0)>0){n=b+12|0;l=0;while(1){j=c[n>>2]|0;k=j+(l*56|0)|0;j=c[j+(l*56|0)+48>>2]|0;if(j|0){f=c[j>>2]|0;g=c[(c[f+8>>2]|0)+24>>2]|0;e=_h(f,c[j+4>>2]|0)|0;if(e|0){f=22;break}i=c[j+16>>2]|0;h=f+56|0;e=c[h>>2]|0;if(!e){f=f+64|0;e=Zh(g,h)|0;g=f;c[g>>2]=0;c[g+4>>2]=0;if(e|0){f=22;break}e=c[h>>2]|0;g=0;h=0}else{f=f+64|0;h=f;g=c[h>>2]|0;h=c[h+4>>2]|0}c[j+48>>2]=e;j=j+8|0;c[j>>2]=g;c[j+4>>2]=h;i=Sv(g|0,h|0,i|0,((i|0)<0)<<31>>31|0)|0;j=L()|0;e=f;c[e>>2]=i;c[e+4>>2]=j;e=ci(k)|0;if(e|0){f=22;break}}l=l+1|0;if((l|0)>=(m|0)){f=11;break}}if((f|0)==11){e=c[b>>2]|0;if((e|0)<=1)break;j=b+12|0;k=b+8|0;i=e;while(1){h=i+-1|0;e=(e|0)/2|0;if((i|0)>(e|0)){f=h-e<<1;e=f;f=f|1}else{n=c[k>>2]|0;f=h<<1;e=c[n+(f<<2)>>2]|0;f=c[n+((f|1)<<2)>>2]|0}g=c[j>>2]|0;if(c[g+(e*56|0)+24>>2]|0){if(c[g+(f*56|0)+24>>2]|0){n=c[p>>2]|0;c[o>>2]=0;n=($a[c[n+32>>2]&127](n,o,c[g+(e*56|0)+32>>2]|0,c[g+(e*56|0)+20>>2]|0,c[g+(f*56|0)+32>>2]|0,c[g+(f*56|0)+20>>2]|0)|0)<1;e=n?e:f}}else e=f;c[(c[k>>2]|0)+(h<<2)>>2]=e;if((i|0)<=2)break a;i=h;e=c[b>>2]|0}}else if((f|0)==22){Ra=q;return e|0}}while(0);p=d[(c[a+12>>2]|0)+11>>0]|0;Ra=q;return p|0}function $h(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=Ra;Ra=Ra+16|0;o=r;f=d;h=c[f>>2]|0;f=c[f+4>>2]|0;l=2;while(1)if((l|0)<(b|0))l=l<<1;else break;g=c[7389]|0;if((g|0)!=0?(Wa[g&127](100)|0)!=0:0)q=17;else q=5;a:do if((q|0)==5){k=(l*60|0)+16|0;p=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;n=L()|0;if(!(n>>>0>0|(n|0)==0&p>>>0>2147483390)){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](k)|0;if(!g){q=17;break}else p=g}else{g=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){p=c[14978]|0;n=Tv(i|0,j|0,g|0,((g|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=p>>>0)&1}i=Wa[c[29340>>2]&127](g)|0;if(!i){q=17;break}g=Wa[c[29352>>2]&127](i)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0){c[14987]=g;p=i}else p=i}gw(p|0,0,k|0)|0;n=p+16|0;c[p>>2]=l;c[p+4>>2]=0;c[p+12>>2]=n;c[p+8>>2]=n+(l*56|0);c[e>>2]=p;n=(p|0)==0;g=n?7:0;i=n^1;b:do if((b|0)>0&i){l=p+12|0;m=a+40|0;j=0;while(1){i=c[l>>2]|0;k=i+(j*56|0)|0;g=ai(a,k,m,h,f)|0;if(g|0){q=21;break}g=o;c[g>>2]=0;c[g+4>>2]=0;g=bi(k,o)|0;s=k;h=o;s=Sv(c[h>>2]|0,c[h+4>>2]|0,c[s>>2]|0,c[s+4>>2]|0)|0;h=L()|0;f=i+(j*56|0)+8|0;i=f;c[i>>2]=s;c[i+4>>2]=h;if(g|0)break;g=ci(k)|0;h=c[f>>2]|0;f=c[f+4>>2]|0;j=j+1|0;i=(g|0)==0;if(!((j|0)<(b|0)&i)){q=25;break b}}if((q|0)==21)f=i+(j*56|0)+8|0;h=c[f>>2]|0;f=c[f+4>>2]|0}else q=25;while(0);do if((q|0)==25)if(!i)if(n)break a;else break;else{s=g;p=h;q=f;e=d;d=e;c[d>>2]=p;e=e+4|0;c[e>>2]=q;Ra=r;return s|0}while(0);if((c[p>>2]|0)>0){m=p+12|0;l=0;do{j=c[m>>2]|0;k=j+(l*56|0)|0;i=c[j+(l*56|0)+28>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{s=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[j+(l*56|0)+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{s=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[j+(l*56|0)+48>>2]|0;do if(i|0){xg(c[i+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{s=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=k;j=i+56|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));l=l+1|0}while((l|0)<(c[p>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{s=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else q=17}while(0);if((q|0)==17){c[e>>2]=0;g=7}c[e>>2]=0;s=g;p=h;q=f;e=d;d=e;c[d>>2]=p;e=e+4|0;c[e>>2]=q;Ra=r;return s|0}function ai(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[7389]|0;if(g|0?Wa[g&127](201)|0:0){b=266;return b|0}h=b+44|0;if(c[h>>2]|0)c[h>>2]=0;n=b;c[n>>2]=e;c[n+4>>2]=f;n=d+8|0;l=c[n>>2]|0;n=c[n+4>>2]|0;k=b+8|0;i=k;c[i>>2]=l;c[i+4>>2]=n;i=c[d>>2]|0;j=b+24|0;c[j>>2]=i;d=a+8|0;g=c[d>>2]|0;a=c[(c[g+24>>2]|0)+156>>2]|0;m=((a|0)<0)<<31>>31;if(!((n|0)>(m|0)|(n|0)==(m|0)&l>>>0>a>>>0)?(c[c[i>>2]>>2]|0)>2:0){c[h>>2]=0;g=c[d>>2]|0}i=c[g+12>>2]|0;d=((i|0)<0)<<31>>31;e=Zv(e|0,f|0,i|0,d|0)|0;L()|0;h=b+36|0;g=c[h>>2]|0;if(!g){n=Sv(i|0,d|0,-1,-1)|0;m=L()|0;do if(!(m>>>0>0|(m|0)==0&n>>>0>2147483390)){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](i)|0;break}g=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;a=59064;d=c[a>>2]|0;a=c[a+4>>2]|0;if((a|0)>0|(a|0)==0&d>>>0>0){n=c[14978]|0;m=Tv(d|0,a|0,g|0,((g|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=n>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(g){d=Wa[c[29352>>2]&127](g)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}else g=0}else g=0;while(0);c[h>>2]=g;c[b+40>>2]=i;d=(g|0)==0?7:0}else d=0;if(!((e|0)!=0&(d|0)==0)){n=d;return n|0}l=i-e|0;n=b;m=c[n>>2]|0;n=c[n+4>>2]|0;i=Sv(m|0,n|0,l|0,((l|0)<0)<<31>>31|0)|0;h=L()|0;f=k;k=c[f>>2]|0;f=c[f+4>>2]|0;b=Tv(k|0,f|0,m|0,n|0)|0;L()|0;j=c[j>>2]|0;n=_a[c[(c[j>>2]|0)+8>>2]&127](j,g+e|0,(h|0)>(f|0)|(h|0)==(f|0)&i>>>0>k>>>0?b:l,m,n)|0;return n|0}function bi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=Ra;Ra=Ra+32|0;i=j;h=j+16|0;f=c[b+44>>2]|0;e=b;g=c[e>>2]|0;e=c[e+4>>2]|0;if(f|0){h=(Of(f+g|0,d)|0)&255;d=b;h=Sv(c[d>>2]|0,c[d+4>>2]|0,h|0,0)|0;d=L()|0;i=b;c[i>>2]=h;c[i+4>>2]=d;i=0;Ra=j;return i|0}f=c[b+40>>2]|0;e=Zv(g|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;L()|0;if((e|0)!=0&(f-e|0)>8){h=(Of((c[b+36>>2]|0)+e|0,d)|0)&255;d=b;h=Sv(c[d>>2]|0,c[d+4>>2]|0,h|0,0)|0;d=L()|0;i=b;c[i>>2]=h;c[i+4>>2]=d;i=0;Ra=j;return i|0}e=0;while(1){f=di(b,1,h)|0;if(f|0){e=9;break}g=a[c[h>>2]>>0]|0;a[i+(e&15)>>0]=g;if(g<<24>>24<0)e=e+1|0;else{e=8;break}}if((e|0)==8){Of(i,d)|0;i=0;Ra=j;return i|0}else if((e|0)==9){i=f;Ra=j;return i|0}return 0}function ci(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=Ra;Ra=Ra+16|0;g=i;f=g;c[f>>2]=0;c[f+4>>2]=0;f=a;d=c[f+4>>2]|0;h=a+8|0;e=c[h+4>>2]|0;do if(!((d|0)<(e|0)|((d|0)==(e|0)?(c[f>>2]|0)>>>0<(c[h>>2]|0)>>>0:0))){h=a+48|0;b=c[h>>2]|0;if(b){d=ei(b)|0;j=b+32|0;f=b+48|0;c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];j=b+40|0;f=b+8|0;e=c[f>>2]|0;f=c[f+4>>2]|0;if((c[j>>2]|0)==(e|0)?(c[j+4>>2]|0)==(f|0):0)c[b+20>>2]=1;if(!d)if(!(c[b+20>>2]|0)){b=ai(c[b>>2]|0,a,b+32|0,e,f)|0;if(!b)break;Ra=i;return b|0}else g=0;else g=d}else g=0;b=c[a+28>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{j=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+36>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{j=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);d=c[h>>2]|0;do if(d|0){e=c[d+4>>2]|0;do if(e|0){if((c[e>>2]|0)>0){f=e+12|0;b=0;do{yg((c[f>>2]|0)+(b*56|0)|0);b=b+1|0}while((b|0)<(c[e>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{j=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{j=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);b=a;d=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));j=g;Ra=i;return j|0}while(0);b=bi(a,g)|0;if(b|0){j=b;Ra=i;return j|0}j=c[g>>2]|0;c[a+20>>2]=j;j=di(a,j,a+32|0)|0;Ra=i;return j|0}function di(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;n=o;e=c[a+44>>2]|0;g=a;h=c[g>>2]|0;g=c[g+4>>2]|0;if(e|0){c[d>>2]=e+h;b=Sv(h|0,g|0,b|0,((b|0)<0)<<31>>31|0)|0;d=L()|0;n=a;c[n>>2]=b;c[n+4>>2]=d;n=0;Ra=o;return n|0}m=a+40|0;e=c[m>>2]|0;f=((e|0)<0)<<31>>31;l=Zv(h|0,g|0,e|0,f|0)|0;L()|0;do if(!l){k=a+8|0;k=Tv(c[k>>2]|0,c[k+4>>2]|0,h|0,g|0)|0;j=L()|0;i=c[a+24>>2]|0;e=_a[c[(c[i>>2]|0)+8>>2]&127](i,c[a+36>>2]|0,(j|0)>(f|0)|(j|0)==(f|0)&k>>>0>e>>>0?e:k,h,g)|0;if(!e){e=c[m>>2]|0;break}else{n=e;Ra=o;return n|0}}while(0);k=e-l|0;if((k|0)>=(b|0)){c[d>>2]=(c[a+36>>2]|0)+l;d=a;b=Sv(c[d>>2]|0,c[d+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;d=L()|0;n=a;c[n>>2]=b;c[n+4>>2]=d;n=0;Ra=o;return n|0}j=a+16|0;e=c[j>>2]|0;do if((e|0)<(b|0)){g=(e|0)<64;i=cw(e|0,((e|0)<0)<<31>>31|0,1)|0;h=L()|0;e=((b|0)<0)<<31>>31;h=g?0:h;i=g?128:i;while(1){f=cw(i|0,h|0,1)|0;g=L()|0;if((h|0)<(e|0)|(h|0)==(e|0)&i>>>0>>0){h=g;i=f}else break}f=a+28|0;e=sb(c[f>>2]|0,i,h)|0;if(!e){n=7;Ra=o;return n|0}else{c[j>>2]=i;c[f>>2]=e;h=f;break}}else{e=a+28|0;h=e;e=c[e>>2]|0}while(0);ew(e|0,(c[a+36>>2]|0)+l|0,k|0)|0;j=a;j=Sv(c[j>>2]|0,c[j+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;l=L()|0;e=a;c[e>>2]=j;c[e+4>>2]=l;e=b-k|0;a:do if((e|0)>0){while(1){g=c[m>>2]|0;g=(e|0)>(g|0)?g:e;f=di(a,g,n)|0;if(f|0)break;ew((c[h>>2]|0)+(b-e)|0,c[n>>2]|0,g|0)|0;e=e-g|0;if((e|0)<=0)break a}n=f;Ra=o;return n|0}while(0);c[d>>2]=c[h>>2];n=0;Ra=o;return n|0}function ei(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=Ra;Ra=Ra+16|0;y=E+4|0;A=E;C=b+8|0;B=c[C>>2]|0;C=c[C+4>>2]|0;z=b+4|0;j=c[z>>2]|0;i=c[b+48>>2]|0;h=c[(c[(c[b>>2]|0)+8>>2]|0)+12>>2]|0;g=((h|0)<0)<<31>>31;x=Sv(h|0,g|0,-1,-1)|0;w=L()|0;do if(w>>>0>0|(w|0)==0&x>>>0>2147483390){d=7;x=0;v=0;e=0;w=0;g=0;f=0}else{if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](h)|0;if(!d){d=7;x=0;v=0;e=0;w=0;g=0;f=0;break}else e=d}else{d=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;f=59064;e=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&e>>>0>0){x=c[14978]|0;w=Tv(e|0,f|0,d|0,((d|0)<0)<<31>>31|0)|0;v=L()|0;c[14768]=((v|0)<0|(v|0)==0&w>>>0<=x>>>0)&1}e=Wa[c[29340>>2]&127](d)|0;if(!e){d=7;x=0;v=0;e=0;w=0;g=0;f=0;break}d=Wa[c[29352>>2]&127](e)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d}w=Zv(B|0,C|0,h|0,g|0)|0;L()|0;g=Tv(B|0,C|0,w|0,((w|0)<0)<<31>>31|0)|0;d=0;x=e;v=h;e=w;w=i;f=L()|0}while(0);u=j+12|0;q=j+8|0;r=b+16|0;s=((v|0)<0)<<31>>31;t=y+1|0;i=e;h=e;while(1){n=c[u>>2]|0;o=c[(c[q>>2]|0)+4>>2]|0;p=c[n+(o*56|0)+20>>2]|0;if(!(c[n+(o*56|0)+24>>2]|0)){D=35;break}j=((h|0)<0)<<31>>31;k=((p|0)<0)<<31>>31;e=1;l=p;m=k;while(1){l=bw(l|0,m|0,7)|0;m=L()|0;if((l|0)==0&(m|0)==0)break;else e=e+1|0}l=Sv(g|0,f|0,h|0,j|0)|0;l=Sv(l|0,L()|0,p|0,k|0)|0;l=Sv(l|0,L()|0,e|0,0)|0;e=L()|0;m=c[r>>2]|0;m=Sv(B|0,C|0,m|0,((m|0)<0)<<31>>31|0)|0;j=L()|0;if((e|0)>(j|0)|(e|0)==(j|0)&l>>>0>m>>>0){D=35;break}do if(p>>>0>=128)if(p>>>0>=16384){e=wh(y,p,k)|0;if((e|0)>0){D=24;break}else break}else{e=bw(p|0,k|0,7)|0;L()|0;a[y>>0]=e&255|-128;e=2;j=t;D=23;break}else{e=1;j=y;D=23}while(0);if((D|0)==23){a[j>>0]=p&127;D=24}a:do if((D|0)==24){D=0;k=e;do{if(d|0)break a;j=v-h|0;j=(k|0)>(j|0)?j:k;ew(x+h|0,y+(e-k)|0,j|0)|0;h=j+h|0;if((h|0)==(v|0)){l=Sv(g|0,f|0,v|0,s|0)|0;m=L()|0;h=Sv(g|0,f|0,i|0,((i|0)<0)<<31>>31|0)|0;d=L()|0;d=_a[c[(c[w>>2]|0)+12>>2]&127](w,x+i|0,v-i|0,h,d)|0;i=0;h=0;g=l;f=m}else d=0;k=k-j|0}while((k|0)>0)}while(0);k=c[n+(o*56|0)+32>>2]|0;b:do if((p|0)>0){j=p;do{if(d|0)break b;e=v-h|0;e=(j|0)>(e|0)?e:j;ew(x+h|0,k+(p-j)|0,e|0)|0;h=e+h|0;if((h|0)==(v|0)){n=Sv(g|0,f|0,v|0,s|0)|0;o=L()|0;h=Sv(g|0,f|0,i|0,((i|0)<0)<<31>>31|0)|0;d=L()|0;d=_a[c[(c[w>>2]|0)+12>>2]&127](w,x+i|0,v-i|0,h,d)|0;i=0;h=0;g=n;f=o}else d=0;j=j-e|0}while((j|0)>0)}while(0);e=fi(c[z>>2]|0,A)|0;if(e){j=e;break}}if((D|0)==35)j=0;e=b+56|0;if(d){C=Sv(g|0,f|0,h|0,((h|0)<0)<<31>>31|0)|0;b=L()|0;D=e;c[D>>2]=C;c[D+4>>2]=b;if(!x){D=d;b=(j|0)==0;D=b?D:j;Ra=E;return D|0}}else{if(!x){C=Sv(g|0,f|0,h|0,((h|0)<0)<<31>>31|0)|0;b=L()|0;D=e;c[D>>2]=C;c[D+4>>2]=b;D=0;b=(j|0)==0;D=b?D:j;Ra=E;return D|0}if((h|0)>(i|0)){D=Sv(g|0,f|0,i|0,((i|0)<0)<<31>>31|0)|0;d=L()|0;d=_a[c[(c[w>>2]|0)+12>>2]&127](w,x+i|0,h-i|0,D,d)|0}else d=0;C=Sv(g|0,f|0,h|0,((h|0)<0)<<31>>31|0)|0;b=L()|0;D=e;c[D>>2]=C;c[D+4>>2]=b}if(!(c[7324]|0)){ab[c[29344>>2]&127](x);D=d;b=(j|0)==0;D=b?D:j;Ra=E;return D|0}else{D=Wa[c[29352>>2]&127](x)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](x);D=d;b=(j|0)==0;D=b?D:j;Ra=E;return D|0}return 0}function fi(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+16|0;k=q;l=a+8|0;f=c[(c[l>>2]|0)+4>>2]|0;p=c[a+4>>2]|0;n=a+12|0;e=ci((c[n>>2]|0)+(f*56|0)|0)|0;if(e|0){p=e;Ra=q;return p|0}c[k>>2]=0;e=c[n>>2]|0;a=(c[a>>2]|0)+f|0;if((a|0)>1){j=p+32|0;g=e+((f|1)*56|0)|0;f=e+((f&65534)*56|0)|0;h=a;do{i=h;h=(h|0)/2|0;e=f+24|0;do if(!(c[e>>2]|0))o=12;else{if((c[g+24>>2]|0?(m=$a[c[j>>2]&127](p,k,c[f+32>>2]|0,c[f+20>>2]|0,c[g+32>>2]|0,c[g+20>>2]|0)|0,(m|0)>=0):0)?!(f>>>0>>0&(m|0)==0):0){if(!(c[e>>2]|0)){o=12;break}c[k>>2]=0;o=12;break}e=c[n>>2]|0;a=c[l>>2]|0;c[a+(h<<2)>>2]=(f-e|0)/56|0;g=e+((c[a+((h^1)<<2)>>2]|0)*56|0)|0;c[k>>2]=0}while(0);if((o|0)==12){o=0;e=c[n>>2]|0;a=c[l>>2]|0;c[a+(h<<2)>>2]=(g-e|0)/56|0;f=e+((c[a+((h^1)<<2)>>2]|0)*56|0)|0}}while((i|0)>3)}else a=c[l>>2]|0;c[b>>2]=(c[e+((c[a+4>>2]|0)*56|0)+24>>2]|0)==0&1;p=d[(c[p+12>>2]|0)+11>>0]|0;Ra=q;return p|0}function gi(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+48|0;j=n+32|0;i=n+24|0;h=n+16|0;g=n;k=c[b>>2]|0;do if(!(a[k+81>>0]|0)){m=b+4|0;if(c[c[m>>2]>>2]|0){Ra=n;return}if(!(c[b+16>>2]&1)){if(!(0==0?(c[k+32>>2]&1|0)==0:0)){c[g>>2]=32306;c[g+4>>2]=123725;c[g+8>>2]=31517;Db(11,32001,g);d=11;break}c[h>>2]=(d|0)==0?35133:d;d=dd(k,35135,h)|0;if((f|0)!=0?(a[f>>0]|0)!=0:0){c[i>>2]=d;c[i+4>>2]=f;d=dd(k,35166,i)|0}c[c[m>>2]>>2]=d;c[j>>2]=32306;c[j+4>>2]=123732;c[j+8>>2]=31517;Db(11,32001,j);d=11;break}a:do if(!f)d=0;else{i=(Eu(f)|0)+1|0;b:do if(!k){k=Sv(i|0,0,-1,-1)|0;j=L()|0;if(j>>>0>0|(j|0)==0&k>>>0>2147483390){d=0;break a}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](i)|0;l=28;break}d=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){k=c[14978]|0;j=Tv(g|0,h|0,d|0,((d|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&j>>>0<=k>>>0)&1}d=Wa[c[29340>>2]&127](d)|0;if(!d){d=0;break a}g=Wa[c[29352>>2]&127](d)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}else{if(!(c[k+272>>2]|0)){do if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){g=k+300|0;d=c[g>>2]|0;if(d|0){c[g>>2]=c[d>>2];l=k+284|0;c[l>>2]=(c[l>>2]|0)+1;l=28;break b}g=k+296|0;d=c[g>>2]|0;if(!d){d=k+292|0;break}else{c[g>>2]=c[d>>2];l=k+284|0;c[l>>2]=(c[l>>2]|0)+1;l=28;break b}}else d=k+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1}d=_d(k,i,0)|0;l=28}while(0);if((l|0)==28)if(!d){d=0;break}ew(d|0,f|0,i|0)|0}while(0);c[c[m>>2]>>2]=d;d=1}else d=7;while(0);c[b+12>>2]=d;Ra=n;return}function hi(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=c[b+20>>2]|0;if((q|0)<=0){r=0;return r|0}o=c[b+16>>2]|0;if(!f){b=0;while(1){g=ji((c[o+((b^b>>>0<2)<<4)+12>>2]|0)+24|0,e)|0;if(g|0)break;b=b+1|0;if((b|0)>=(q|0)){p=0;r=15;break}}if((r|0)==15)return p|0;r=g;return r|0}m=a[f>>0]|0;l=d[208+(m&255)>>0]|0;m=m<<24>>24==0;b=0;k=0;while(1){h=k^k>>>0<2;j=c[o+(h<<4)+12>>2]|0;h=c[o+(h<<4)>>2]|0;g=l-(d[208+(d[h>>0]|0)>>0]|0)|0;if(!(m|(g|0)!=0)){i=f;do{i=i+1|0;h=h+1|0;s=a[i>>0]|0;g=(d[208+(s&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(s<<24>>24==0|(g|0)!=0))}if(!g){n=ji(j+24|0,e)|0;if(!n)b=n;else break}k=k+1|0;if((k|0)>=(q|0)){p=b;r=15;break}}if((r|0)==15)return p|0;s=n;return s|0}function ii(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a[b>>0]|0;a:do switch(e<<24>>24){case 45:{e=1;f=b+1|0;g=15;break}case 43:{e=0;f=b+1|0;g=15;break}case 48:{switch(a[b+1>>0]|0){case 88:case 120:break;default:{h=0;e=48;break a}}e=b+2|0;f=a[e>>0]|0;if(!(a[880+(f&255)>>0]&8)){e=0;f=b;g=15}else{if(f<<24>>24==48){b=b+3|0;while(1){e=a[b>>0]|0;if(e<<24>>24==48)b=b+1|0;else{f=e;break}}}else b=e;if(!(a[880+(f&255)>>0]&8)){e=0;b=1}else{g=0;e=0;do{h=f<<24>>24;e=(0-(h>>>6&1)&9)+h&15|e<<4;g=g+1|0;f=a[b+g>>0]|0;h=a[880+(f&255)>>0]&8}while(g>>>0<8&h<<24>>24!=0);b=h<<24>>24==0}if(!((e|0)>-1&b)){d=0;return d|0}c[d>>2]=e;d=1;return d|0}break}default:h=0}while(0);if((g|0)==15){h=e;b=f;e=a[f>>0]|0}if(((e&255)+-48|0)>>>0>=10){d=0;return d|0}if(e<<24>>24==48)do{b=b+1|0;e=a[b>>0]|0}while(e<<24>>24==48);if((e+-48&255)<10){e=(e<<24>>24)+-48|0;g=((e|0)<0)<<31>>31;f=a[b+1>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+2>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+3>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+4>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+5>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+6>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+7>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+8>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;g=L()|0;f=a[b+9>>0]|0;if((f+-48&255)<10){f=(f<<24>>24)+-48|0;e=Yv(e|0,g|0,10,0)|0;e=Sv(e|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;f=L()|0;if(((a[b+10>>0]|0)+-48&255)<10){d=0;return d|0}else b=f}else b=g}else b=g}else b=g}else b=g}else b=g}else b=g}else b=g}else b=g}else b=g}else{e=0;b=0}g=Tv(e|0,b|0,h|0,0)|0;f=L()|0;if((f|0)>0|(f|0)==0&g>>>0>2147483647){d=0;return d|0}c[d>>2]=(h|0)==0?e:0-e|0;d=1;return d|0}function ji(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;i=c[b+12>>2]|0;if(!i){g=b+4|0;f=b+8|0}else{g=a[e>>0]|0;if(!(g<<24>>24))f=0;else{f=0;h=e;do{h=h+1|0;f=G(f+(d[208+(g&255)>>0]|0)|0,-1640531535)|0;g=a[h>>0]|0}while(g<<24>>24!=0)}f=(f>>>0)%((c[b>>2]|0)>>>0)|0;g=i+(f<<3)|0;f=i+(f<<3)+4|0}g=c[g>>2]|0;if(!g){e=59292;e=e+8|0;e=c[e>>2]|0;return e|0}j=d[208+(d[e>>0]|0)>>0]|0;while(1){f=c[f>>2]|0;g=g+-1|0;b=c[f+12>>2]|0;i=a[b>>0]|0;h=(d[208+(i&255)>>0]|0)-j|0;if(!(i<<24>>24==0|(h|0)!=0)){i=e;do{b=b+1|0;i=i+1|0;k=a[b>>0]|0;h=(d[208+(k&255)>>0]|0)-(d[208+(d[i>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(h|0)!=0))}if(!h){g=14;break}if(!g){f=59292;g=14;break}}if((g|0)==14){k=f+8|0;k=c[k>>2]|0;return k|0}return 0}function ki(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=Ra;Ra=Ra+80|0;l=o;if(!h){Ra=o;return 0}i=c[h>>2]|0;if(!i){Ra=o;return 0}n=c[h+8>>2]|0;if(!n){Ra=o;return 0}k=c[f>>2]|0;j=c[f+4>>2]|0;m=Sd(k,i,j)|0;if(!m){Ra=o;return 0}h=c[h+4>>2]|0;a:do if(h|0){f=a[i>>0]|0;g=(d[208+(f&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0;if(!(f<<24>>24==0|(g|0)!=0)){f=h;do{i=i+1|0;f=f+1|0;p=a[i>>0]|0;g=(d[208+(p&255)>>0]|0)-(d[208+(d[f>>0]|0)>>0]|0)|0}while(!(p<<24>>24==0|(g|0)!=0))}if(!g){g=c[m+8>>2]|0;if(!g)break;while(1){f=g+55|0;f=d[f>>0]|d[f+1>>0]<<8;if((f&3)==2)break;g=c[g+20>>2]|0;if(!g)break a}h=g;i=g+55|0;g=f}else{g=hi(k,h,j)|0;if(!g)break;p=g+55|0;h=g;i=p;g=d[p>>0]|d[p+1>>0]<<8}p=(e[h+50>>1]|0)+1|0;g=g&-5;a[i>>0]=g;a[i+1>>0]=g>>8;g=h+8|0;li(n,p,c[g>>2]|0,h);p=d[i>>0]|d[i+1>>0]<<8|128;a[i>>0]=p;a[i+1>>0]=p>>8;if(c[h+36>>2]|0){Ra=o;return 0}b[m+44>>1]=b[c[g>>2]>>1]|0;p=m+36|0;c[p>>2]=c[p>>2]|16;Ra=o;return 0}while(0);p=m+46|0;k=l+48|0;b[k>>1]=b[p>>1]|0;li(n,1,m+44|0,l);b[p>>1]=b[k>>1]|0;p=m+36|0;c[p>>2]=c[p>>2]|16;Ra=o;return 0}function li(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=Ra;Ra=Ra+16|0;o=p;k=a[f>>0]|0;if((g|0)>0&k<<24>>24!=0){m=0;do{do if((k+-48&255)<10){j=0;do{j=(j*10|0)+-48+(k<<24>>24)|0;f=f+1|0;k=a[f>>0]|0}while((k+-48&255)<10);if(j>>>0>=8){if(j>>>0>255){l=40;k=0;do{l=(l&65535)+40|0;q=j;j=bw(j|0,k|0,4)|0;r=k;k=L()|0}while(r>>>0>0|(r|0)==0&q>>>0>4095);l=l&65535}else{l=40;k=0}if(k>>>0>0|(k|0)==0&j>>>0>15)do{l=(l&65535)+10&65535;r=j;j=bw(j|0,k|0,1)|0;q=k;k=L()|0}while(q>>>0>0|(q|0)==0&r>>>0>31)}else{if(j>>>0<2){j=0;break}l=40;k=0;do{l=(l&65535)+65526|0;j=cw(j|0,k|0,1)|0;k=L()|0}while(k>>>0<0|(k|0)==0&j>>>0<8);l=l&65535}j=(l&65535)+65526+(e[3648+((j&7)<<1)>>1]|0)&65535}else j=0;while(0);b[h+(m<<1)>>1]=j;f=(a[f>>0]|0)==32?f+1|0:f;m=m+1|0;k=a[f>>0]|0}while((m|0)<(g|0)&k<<24>>24!=0)}g=i+55|0;r=(d[g>>0]|d[g+1>>0]<<8)&-69;a[g>>0]=r;a[g+1>>0]=r>>8;if(!(a[f>>0]|0)){Ra=p;return}m=i+48|0;do{do if(!(md(35228,f,31411,91)|0)){r=d[g>>0]|d[g+1>>0]<<8|4;a[g>>0]=r;a[g+1>>0]=r>>8}else{if(md(35239,f,31411,91)|0){if(md(35249,f,31411,91)|0)break;r=d[g>>0]|d[g+1>>0]<<8|64;a[g>>0]=r;a[g+1>>0]=r>>8;break}c[o>>2]=0;ii(f+3|0,o)|0;j=c[o>>2]|0;k=((j|0)<0)<<31>>31;if(j>>>0<8)if(j>>>0<2)j=0;else{l=40;do{l=(l&65535)+65526|0;j=cw(j|0,k|0,1)|0;k=L()|0}while(k>>>0<0|(k|0)==0&j>>>0<8);l=l&65535;n=39}else{if(j>>>0>255){l=40;do{l=(l&65535)+40|0;r=j;j=bw(j|0,k|0,4)|0;q=k;k=L()|0}while(q>>>0>0|(q|0)==0&r>>>0>4095);l=l&65535}else l=40;if(k>>>0>0|(k|0)==0&j>>>0>15){do{l=(l&65535)+10&65535;r=j;j=bw(j|0,k|0,1)|0;q=k;k=L()|0}while(q>>>0>0|(q|0)==0&r>>>0>31);n=39}else n=39}if((n|0)==39){n=0;j=(l&65535)+65526+(e[3648+((j&7)<<1)>>1]|0)&65535}b[m>>1]=j}while(0);a:while(1){j=a[f>>0]|0;switch(j<<24>>24){case 32:{n=45;break a}case 0:break a;default:{}}f=f+1|0}if((n|0)==45){n=0;do{f=f+1|0;j=a[f>>0]|0}while(j<<24>>24==32)}}while(j<<24>>24!=0);Ra=p;return}function mi(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=b+12|0;o=c[t>>2]|0;n=(o|0)==0;if(n){h=0;g=b+4|0;i=b+8|0}else{h=a[e>>0]|0;if(!(h<<24>>24))g=0;else{g=0;i=e;do{i=i+1|0;g=G(g+(d[208+(h&255)>>0]|0)|0,-1640531535)|0;h=a[i>>0]|0}while(h<<24>>24!=0)}i=(g>>>0)%((c[b>>2]|0)>>>0)|0;h=i;g=o+(i<<3)|0;i=o+(i<<3)+4|0}g=c[g>>2]|0;a:do if(!g)k=59292;else{m=d[208+(d[e>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;g=g+-1|0;k=c[i+12>>2]|0;r=a[k>>0]|0;j=(d[208+(r&255)>>0]|0)-m|0;if(!(r<<24>>24==0|(j|0)!=0)){l=e;do{k=k+1|0;l=l+1|0;r=a[k>>0]|0;j=(d[208+(r&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(r<<24>>24==0|(j|0)!=0))}if(!j){k=i;break a}if(!g){k=59292;break}}}while(0);g=k+8|0;l=c[g>>2]|0;i=(f|0)==0;if(l|0){if(!i){c[g>>2]=f;c[k+12>>2]=e;b=l;return b|0}e=c[k+4>>2]|0;g=c[k>>2]|0;if(!e){c[b+8>>2]=g;i=g;j=g}else{c[e>>2]=g;j=c[k>>2]|0;i=j}if(i|0)c[i+4>>2]=e;if(!n){g=o+(h<<3)+4|0;if((c[g>>2]|0)==(k|0))c[g>>2]=j;s=o+(h<<3)|0;c[s>>2]=(c[s>>2]|0)+-1}if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{s=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}e=b+4|0;s=(c[e>>2]|0)+-1|0;c[e>>2]=s;if(s|0){b=l;return b|0}h=b+8|0;g=c[h>>2]|0;c[h>>2]=0;h=c[t>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{s=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[t>>2]=0;c[b>>2]=0;if(g|0)do{h=g;g=c[g>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{b=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}}while((g|0)!=0);c[e>>2]=0;b=l;return b|0}if(i){b=0;return b|0}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](16)|0;if(!g){b=f;return b|0}else r=g}else{g=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){r=c[14978]|0;o=Tv(i|0,j|0,g|0,((g|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&o>>>0<=r>>>0)&1}i=Wa[c[29340>>2]&127](g)|0;if(!i){b=f;return b|0}g=Wa[c[29352>>2]&127](i)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0){c[14987]=g;r=i}else r=i}c[r+12>>2]=e;c[r+8>>2]=f;f=b+4|0;g=(c[f>>2]|0)+1|0;c[f>>2]=g;if((g>>>0>9?(p=c[b>>2]|0,g>>>0>p<<1>>>0):0)?(q=g<<4>>>0>1024?128:g<<1,(q|0)!=(p|0)):0){g=q<<3;q=Sv(g|0,0,-1,-1)|0;p=L()|0;do if(!(p>>>0>0|(p|0)==0&q>>>0>2147483390)){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](g)|0;break}j=Wa[c[29356>>2]&127](g)|0;if((c[14985]|0)>>>0>>0)c[14985]=g;i=59064;g=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&g>>>0>0){q=c[14978]|0;p=Tv(g|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&p>>>0<=q>>>0)&1}i=Wa[c[29340>>2]&127](j)|0;if(i){g=Wa[c[29352>>2]&127](i)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}else i=0}else i=0;while(0);if(i){g=c[t>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[t>>2]=i;o=Wa[c[29352>>2]&127](i)|0;n=o>>>3;c[b>>2]=n;gw(i|0,0,o&-8|0)|0;o=b+8|0;g=c[o>>2]|0;c[o>>2]=0;if(g|0){j=0;while(1){k=c[g+12>>2]|0;l=a[k>>0]|0;if(!(l<<24>>24))h=0;else{h=0;do{k=k+1|0;h=G(h+(d[208+(l&255)>>0]|0)|0,-1640531535)|0;l=a[k>>0]|0}while(l<<24>>24!=0)}k=(h>>>0)%(n>>>0)|0;h=g;g=c[g>>2]|0;l=i+(k<<3)|0;do if(l){m=c[l>>2]|0;if(!m){c[l>>2]=1;c[i+(k<<3)+4>>2]=h;s=86;break}q=i+(k<<3)+4|0;k=c[q>>2]|0;c[l>>2]=m+1;c[q>>2]=h;if(k){c[h>>2]=k;l=k+4|0;c[h+4>>2]=c[l>>2];k=c[l>>2]|0;if(!k){c[o>>2]=h;j=h}else c[k>>2]=h;c[l>>2]=h;h=j}else s=86}else s=86;while(0);if((s|0)==86){s=0;c[h>>2]=j;if(j|0)c[j+4>>2]=h;c[h+4>>2]=0;c[o>>2]=h}if(!g)break;else j=h}}h=a[e>>0]|0;if(!(h<<24>>24))g=0;else{g=0;do{e=e+1|0;g=G(g+(d[208+(h&255)>>0]|0)|0,-1640531535)|0;h=a[e>>0]|0}while(h<<24>>24!=0)}h=(g>>>0)%((c[b>>2]|0)>>>0)|0}}g=c[t>>2]|0;e=g+(h<<3)|0;do if(!((g|0)==0|(e|0)==0)){i=c[e>>2]|0;if(!i){c[e>>2]=1;c[g+(h<<3)+4>>2]=r;break}t=g+(h<<3)+4|0;g=c[t>>2]|0;c[e>>2]=i+1;c[t>>2]=r;if(g|0){c[r>>2]=g;t=g+4|0;c[r+4>>2]=c[t>>2];s=c[t>>2]|0;c[((s|0)==0?b+8|0:s)>>2]=r;c[t>>2]=r;b=0;return b|0}}while(0);g=b+8|0;h=c[g>>2]|0;c[r>>2]=h;if(h|0)c[h+4>>2]=r;c[r+4>>2]=0;c[g>>2]=r;b=0;return b|0}function ni(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d+4|0;e=c[f>>2]|0;if(!(e&8404992)){e=c[d+12>>2]|0;if(e|0?(a[d>>0]|0)!=-86:0)ni(b,e);e=c[d+16>>2]|0;do if(!e){e=d+20|0;if(!(c[f>>2]&2048)){e=c[e>>2]|0;if(!e)break;ri(b,e);break}else{e=c[e>>2]|0;if(!e)break;pi(b,e,1);break}}else ni(b,e);while(0);e=c[f>>2]|0;if(e&16777216){oi(b,c[d+44>>2]|0);e=c[f>>2]|0}}do if(e&65536|0?(g=c[d+8>>2]|0,g|0):0){if(b|0){if(c[b+480>>2]|0){Xd(b,g);break}e=g;if((c[b+304>>2]|0)>>>0<=e>>>0?(c[b+308>>2]|0)>>>0>e>>>0:0){e=b+300|0;c[g>>2]=c[e>>2];c[e>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{e=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);if(c[f>>2]&134217728|0)return;if(b|0){if(c[b+480>>2]|0){Xd(b,d);return}g=d;if((c[b+304>>2]|0)>>>0<=g>>>0?(c[b+308>>2]|0)>>>0>g>>>0:0){g=b+300|0;c[d>>2]=c[g>>2];c[g>>2]=d;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);return}else{g=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);return}}function oi(a,b){a=a|0;b=b|0;var d=0,e=0;if(!b)return;d=c[b+36>>2]|0;if(d|0)ni(a,d);d=c[b+8>>2]|0;if(d|0)ri(a,d);d=c[b+12>>2]|0;if(d|0)ri(a,d);d=c[b+28>>2]|0;if(d|0)ni(a,d);d=c[b+24>>2]|0;if(d|0)ni(a,d);d=c[b>>2]|0;do if(d|0){if(a|0){if(c[a+480>>2]|0){Xd(a,d);break}e=d;if((c[a+304>>2]|0)>>>0<=e>>>0?(c[a+308>>2]|0)>>>0>e>>>0:0){e=a+300|0;c[d>>2]=c[e>>2];c[e>>2]=d;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);d=c[b+4>>2]|0;a:do if(d){do if(a|0){if(!(c[a+480>>2]|0)){e=d;if((c[a+304>>2]|0)>>>0>e>>>0)break;if((c[a+308>>2]|0)>>>0<=e>>>0)break;e=a+300|0;c[d>>2]=c[e>>2];c[e>>2]=d}else Xd(a,d);d=b;e=34;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](d);e=33;break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);e=33;break}}else e=33;while(0);if((e|0)==33)if(a){d=b;e=34}if((e|0)==34){if(c[a+480>>2]|0){Xd(a,d);return}e=b;if((c[a+304>>2]|0)>>>0<=e>>>0?(c[a+308>>2]|0)>>>0>e>>>0:0){a=a+300|0;c[b>>2]=c[a>>2];c[a>>2]=b;return}else b=d}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{a=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!b)return;j=(a|0)==0;k=a+480|0;l=a+304|0;m=a+308|0;n=a+300|0;while(1){i=b;b=c[b+52>>2]|0;e=c[i>>2]|0;if(e|0)ri(a,e);qi(a,c[i+32>>2]|0);e=c[i+36>>2]|0;if(e|0)ni(a,e);e=c[i+40>>2]|0;if(e|0)ri(a,e);e=c[i+44>>2]|0;if(e|0)ni(a,e);e=c[i+48>>2]|0;if(e|0)ri(a,e);e=c[i+60>>2]|0;if(e|0)ni(a,e);e=c[i+72>>2]|0;if(e|0)do{h=e;e=c[e+32>>2]|0;oi(a,h)}while((e|0)!=0);h=c[i+64>>2]|0;do if(h|0){a:do if((c[h>>2]|0)>0){if(j){f=0;while(1){e=c[h+8+(f<<4)+4>>2]|0;if(e|0)ri(0,e);e=c[h+8+(f<<4)+8>>2]|0;if(e|0)pi(0,e,1);e=c[h+8+(f<<4)>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{g=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);f=f+1|0;if((f|0)>=(c[h>>2]|0))break a}}g=0;do{e=c[h+8+(g<<4)+4>>2]|0;if(e|0)ri(a,e);e=c[h+8+(g<<4)+8>>2]|0;if(e|0)pi(a,e,1);e=c[h+8+(g<<4)>>2]|0;b:do if(e|0){if(c[k>>2]|0){Xd(a,e);break}f=e;do if((c[l>>2]|0)>>>0<=f>>>0){if((c[m>>2]|0)>>>0<=f>>>0)break;c[e>>2]=c[n>>2];c[n>>2]=e;break b}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{f=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);g=g+1|0}while((g|0)<(c[h>>2]|0))}while(0);if(!j){if(c[k>>2]|0){Xd(a,h);break}g=h;if((c[l>>2]|0)>>>0<=g>>>0?(c[m>>2]|0)>>>0>g>>>0:0){c[h>>2]=c[n>>2];c[n>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{g=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);do if(d|0){if(!j){if(c[k>>2]|0){Xd(a,i);break}h=i;if((c[l>>2]|0)>>>0<=h>>>0?(c[m>>2]|0)>>>0>h>>>0:0){c[i>>2]=c[n>>2];c[n>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{h=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(!b)break;else d=1}return}function qi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!d)return;if((c[d>>2]|0)>0){n=(b|0)==0;o=b+480|0;q=b+304|0;r=b+308|0;l=b+300|0;j=0;k=d+8|0;while(1){e=c[k+4>>2]|0;do if(e|0){if(!n){if(c[o>>2]|0){Xd(b,e);break}i=e;if((c[q>>2]|0)>>>0<=i>>>0?(c[r>>2]|0)>>>0>i>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[k+8>>2]|0;do if(e|0){if(!n){if(c[o>>2]|0){Xd(b,e);break}i=e;if((c[q>>2]|0)>>>0<=i>>>0?(c[r>>2]|0)>>>0>i>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[k+12>>2]|0;do if(e|0){if(!n){if(c[o>>2]|0){Xd(b,e);break}i=e;if((c[q>>2]|0)>>>0<=i>>>0?(c[r>>2]|0)>>>0>i>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=k+37|0;do if(a[e>>0]&2?(p=c[k+64>>2]|0,p|0):0){if(!n){if(c[o>>2]|0){Xd(b,p);break}i=p;if((c[q>>2]|0)>>>0<=i>>>0?(c[r>>2]|0)>>>0>i>>>0:0){c[p>>2]=c[l>>2];c[l>>2]=p;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{i=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);if(a[e>>0]&4?(m=c[k+64>>2]|0,m|0):0)ri(b,m);e=c[k+16>>2]|0;do if(e|0){if(!n?c[o>>2]|0:0){Vi(b,e);break}h=e+32|0;i=(c[h>>2]|0)+-1|0;c[h>>2]=i;if(!i)Vi(b,e)}while(0);e=c[k+20>>2]|0;if(e|0)pi(b,e,1);e=c[k+44>>2]|0;if(e|0)ni(b,e);e=c[k+48>>2]|0;do if(e|0){i=e+4|0;f=c[e>>2]|0;a:do if((c[i>>2]|0)>0){if(n){g=0;while(1){f=c[f+(g<<3)>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);g=g+1|0;f=c[e>>2]|0;if((g|0)>=(c[i>>2]|0))break a}}h=0;do{f=c[f+(h<<3)>>2]|0;b:do if(f|0){if(c[o>>2]|0){Xd(b,f);break}g=f;do if((c[q>>2]|0)>>>0<=g>>>0){if((c[r>>2]|0)>>>0<=g>>>0)break;c[f>>2]=c[l>>2];c[l>>2]=f;break b}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{g=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);h=h+1|0;f=c[e>>2]|0}while((h|0)<(c[i>>2]|0))}while(0);c:do if(f){do if(!n){if(!(c[o>>2]|0)){g=f;if((c[q>>2]|0)>>>0>g>>>0)break;if((c[r>>2]|0)>>>0<=g>>>0)break;c[f>>2]=c[l>>2];c[l>>2]=f}else Xd(b,f);f=90;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);f=89;break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);f=89;break}}else f=89;while(0);if((f|0)==89){f=0;if(!n)f=90}if((f|0)==90){if(c[o>>2]|0){Xd(b,e);break}i=e;if((c[q>>2]|0)>>>0<=i>>>0?(c[r>>2]|0)>>>0>i>>>0:0){c[e>>2]=c[l>>2];c[l>>2]=e;break}}if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);j=j+1|0;if((j|0)>=(c[d>>2]|0))break;else k=k+72|0}}if(b|0){if(c[b+480>>2]|0){Xd(b,d);return}r=d;if((c[b+304>>2]|0)>>>0<=r>>>0?(c[b+308>>2]|0)>>>0>r>>>0:0){r=b+300|0;c[d>>2]=c[r>>2];c[r>>2]=d;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);return}else{r=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);return}}function ri(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=c[b>>2]|0;d=b+4|0;g=(a|0)==0;h=a+480|0;i=a+304|0;j=a+308|0;k=a+300|0;if(g){f=e;while(1){e=c[d>>2]|0;if(e|0)ni(0,e);e=c[d+4>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);e=c[d+8>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);if((f|0)>1){d=d+20|0;f=f+-1|0}else break}}else{f=e;while(1){e=c[d>>2]|0;if(e|0)ni(a,e);e=c[d+4>>2]|0;do if(e|0){if(c[h>>2]|0){Xd(a,e);break}l=e;if((c[i>>2]|0)>>>0<=l>>>0?(c[j>>2]|0)>>>0>l>>>0:0){c[e>>2]=c[k>>2];c[k>>2]=e;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);e=c[d+8>>2]|0;do if(e|0){if(c[h>>2]|0){Xd(a,e);break}l=e;if((c[i>>2]|0)>>>0<=l>>>0?(c[j>>2]|0)>>>0>l>>>0:0){c[e>>2]=c[k>>2];c[k>>2]=e;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);if((f|0)>1){d=d+20|0;f=f+-1|0}else break}}if(!g){if(c[h>>2]|0){Xd(a,b);return}l=b;if((c[i>>2]|0)>>>0<=l>>>0?(c[j>>2]|0)>>>0>l>>>0:0){c[b>>2]=c[k>>2];c[k>>2]=b;return}}if(!b)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{l=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function si(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=Ra;Ra=Ra+176|0;O=P+144|0;I=P+120|0;H=P+112|0;G=P+104|0;F=P+96|0;E=P+72|0;D=P+64|0;C=P+56|0;B=P+32|0;K=P+24|0;J=P+16|0;A=P+8|0;z=P;w=P+164|0;x=P+160|0;y=P+156|0;M=e+20|0;N=c[M>>2]|0;a:do if(!g)i=h;else{r=e+16|0;s=e+12|0;q=e+8|0;t=e+4|0;u=(f|0)==0;v=e+24|0;i=h;while(1){if(!(c[r>>2]|0))break a;if((g+-1|0)>>>0>=(c[s>>2]|0)>>>0){L=5;break}j=(c[q>>2]|0)+(g>>>3)|0;k=d[j>>0]|0;l=1<<(g&7);if(l&k|0){L=7;break}a[j>>0]=l|k;o=i+-1|0;p=c[t>>2]|0;if(Za[c[p+204>>2]&127](p,g,y,0)|0){L=9;break}p=c[(c[y>>2]|0)+4>>2]|0;do if(u){i=c[e>>2]|0;if((o|0)!=0&(a[i+17>>0]|0)!=0){k=d[p+1>>0]<<16|d[p>>0]<<24|d[p+2>>0]<<8|d[p+3>>0];i=eg(i,k,w,x)|0;b:do if((i|0)<7){switch(i|0){case 0:break;default:{L=40;break b}}i=a[w>>0]|0;j=c[x>>2]|0;if(!(i<<24>>24==4&(j|0)==(g|0))){c[I>>2]=k;c[I+4>>2]=4;c[I+8>>2]=g;c[I+12>>2]=i&255;c[I+16>>2]=j;ti(e,35625,I)}}else{if((i|0)<3082)switch(i|0){case 7:break;default:{L=40;break b}}else switch(i|0){case 3082:break;default:{L=40;break b}}c[v>>2]=1;L=40}while(0);if((L|0)==40){L=0;c[H>>2]=k;ti(e,35596,H)}i=o}else i=o}else{n=d[p+5>>0]<<16|d[p+4>>0]<<24|d[p+6>>0]<<8|d[p+7>>0];j=c[e>>2]|0;if(a[j+17>>0]|0){j=eg(j,g,w,x)|0;c:do if((j|0)<7){switch(j|0){case 0:break;default:{L=14;break c}}j=a[w>>0]|0;k=c[x>>2]|0;if(!(j<<24>>24==2&(k|0)==0)){c[B>>2]=g;c[B+4>>2]=2;c[B+8>>2]=0;c[B+12>>2]=j&255;c[B+16>>2]=k;ti(e,35625,B)}}else{if((j|0)<3082)switch(j|0){case 7:break;default:{L=14;break c}}else switch(j|0){case 3082:break;default:{L=14;break c}}c[v>>2]=1;L=14}while(0);if((L|0)==14){L=0;c[K>>2]=g;ti(e,35596,K)}j=c[e>>2]|0}if(n>>>0>(((c[j+36>>2]|0)>>>2)+-2|0)>>>0){c[C>>2]=g;ti(e,35455,C);i=i+-2|0;break}d:do if((n|0)>0){i=0;while(1){m=p+((i<<2)+8)|0;l=d[m+3>>0]|0;m=d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|l;if(a[j+17>>0]|0){g=eg(j,m,w,x)|0;e:do if((g|0)<7){switch(g|0){case 0:break;default:{L=25;break e}}j=a[w>>0]|0;g=c[x>>2]|0;if(!(j<<24>>24==2&(g|0)==0)){c[E>>2]=m;c[E+4>>2]=2;c[E+8>>2]=0;c[E+12>>2]=j&255;c[E+16>>2]=g;ti(e,35625,E)}}else{if((g|0)<3082)switch(g|0){case 7:break;default:{L=25;break e}}else switch(g|0){case 3082:break;default:{L=25;break e}}c[v>>2]=1;L=25}while(0);if((L|0)==25){L=0;c[D>>2]=m;ti(e,35596,D)}}do if((m+-1|0)>>>0<(c[s>>2]|0)>>>0){j=(c[q>>2]|0)+(m>>>3)|0;k=d[j>>0]|0;g=1<<(l&7);if(!(g&k)){a[j>>0]=g|k;break}else{c[G>>2]=m;ti(e,35569,G);break}}else{c[F>>2]=m;ti(e,35546,F)}while(0);i=i+1|0;if((i|0)==(n|0))break d;j=c[e>>2]|0}}while(0);i=o-n|0}while(0);g=d[p+1>>0]<<16|d[p>>0]<<24|d[p+2>>0]<<8|d[p+3>>0];j=c[y>>2]|0;do if(j|0)if(!(b[j+28>>1]&32)){Df(j);break}else{p=c[j+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[j+16>>2]=c[p>>2];c[p>>2]=j;break}while(0);if(!g)break a}if((L|0)==5){c[z>>2]=g;ti(e,35546,z)}else if((L|0)==7){c[A>>2]=g;ti(e,35569,A)}else if((L|0)==9){c[J>>2]=g;ti(e,35433,J);i=o}}while(0);if(!i){Ra=P;return}if((N|0)!=(c[M>>2]|0)){Ra=P;return}c[O>>2]=(f|0)==0?35525:35520;c[O+4>>2]=h-i;c[O+8>>2]=h;ti(e,35494,O);Ra=P;return}function ti(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=Ra;Ra=Ra+32|0;i=j+16|0;h=j;f=b+16|0;g=c[f>>2]|0;if(!g){Ra=j;return}c[f>>2]=g+-1;f=b+20|0;c[f>>2]=(c[f>>2]|0)+1;c[h>>2]=e;f=b+40|0;if(c[b+56>>2]|0)ub(f,35594,1);g=c[b+28>>2]|0;if(g|0){e=c[b+36>>2]|0;c[i>>2]=c[b+32>>2];c[i+4>>2]=e;Eb(f,g,i)}tb(f,d,h);if((a[b+60>>0]|0)!=7){Ra=j;return}c[b+24>>2]=1;Ra=j;return}function ui(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;ma=Ra;Ra=Ra+240|0;fa=ma+216|0;da=ma+208|0;U=ma+200|0;T=ma+176|0;S=ma+168|0;R=ma+144|0;Q=ma+136|0;P=ma+128|0;O=ma+120|0;N=ma+104|0;t=ma+80|0;s=ma+72|0;q=ma+64|0;p=ma+56|0;o=ma+48|0;n=ma+40|0;k=ma+32|0;K=ma+232|0;L=ma+228|0;W=ma+24|0;M=ma;ga=W;c[ga>>2]=i;c[ga+4>>2]=j;ga=f+28|0;ha=c[ga>>2]|0;ia=f+32|0;ja=c[ia>>2]|0;ka=f+36|0;la=c[ka>>2]|0;u=c[f>>2]|0;ea=c[u+36>>2]|0;if(!g){la=0;Ra=ma;return la|0}if((g+-1|0)>>>0>=(c[f+12>>2]|0)>>>0){c[k>>2]=g;ti(f,35546,k);la=0;Ra=ma;return la|0}k=(c[f+8>>2]|0)+(g>>>3)|0;l=d[k>>0]|0;m=1<<(g&7);if(m&l|0){c[n>>2]=g;ti(f,35569,n);la=0;Ra=ma;return la|0}a[k>>0]=m|l;c[ga>>2]=35679;c[ia>>2]=g;k=c[u>>2]|0;k=Za[c[k+204>>2]&127](k,g,K,0)|0;a:do if(!k){k=c[K>>2]|0;ca=c[k+8>>2]|0;l=ca+4|0;if((c[l>>2]|0)!=(g|0)){c[ca+56>>2]=c[k+4>>2];c[ca+72>>2]=k;c[ca+52>>2]=u;c[l>>2]=g;a[ca+9>>0]=(g|0)==1?100:0}J=a[ca>>0]|0;a[ca>>0]=0;k=Gf(ca)|0;do if(!k){k=Jh(ca)|0;if(k|0){c[q>>2]=k;ti(f,35765,q);k=-1;break}aa=c[ca+56>>2]|0;ba=d[ca+9>>0]|0;c[ga>>2]=35787;l=aa+(ba+5)|0;l=(d[l>>0]<<8|d[l+1>>0])+65535&65535;H=l+1|0;o=aa+(ba+3)|0;o=d[o>>0]<<8|d[o+1>>0];I=ca+8|0;G=a[I>>0]|0;X=ba+12-((G&255)<<2)|0;r=o+-1|0;p=aa+(X+(r<<1))|0;if(!(G<<24>>24)){n=aa+(ba+8)|0;n=d[n+1>>0]<<16|d[n>>0]<<24|d[n+2>>0]<<8|d[n+3>>0];if(a[u+17>>0]|0){c[ga>>2]=35813;k=eg(c[f>>2]|0,n,K,L)|0;b:do if((k|0)<7){switch(k|0){case 0:break;default:{V=18;break b}}k=a[K>>0]|0;m=c[L>>2]|0;if(!(k<<24>>24==5&(m|0)==(g|0))){c[t>>2]=n;c[t+4>>2]=5;c[t+8>>2]=g;c[t+12>>2]=k&255;c[t+16>>2]=m;ti(f,35625,t)}}else{if((k|0)<3082)switch(k|0){case 7:break;default:{V=18;break b}}else switch(k|0){case 3082:break;default:{V=18;break b}}c[f+24>>2]=1;V=18}while(0);if((V|0)==18){c[s>>2]=n;ti(f,35596,s)}}k=ui(f,n,W,i,j)|0;n=0;i=0}else{i=c[f+64>>2]|0;c[i>>2]=0;k=-1;n=1}F=f+16|0;G=(o|0)==0;if(!G){y=ea+-4|0;z=ca+80|0;A=M+18|0;B=ca+2|0;C=M+12|0;D=M+16|0;E=ea+-5|0;w=u+17|0;x=f+24|0;v=r;m=1;u=p;while(1){if(!(c[F>>2]|0))break;c[ka>>2]=v;j=d[u>>0]<<8|d[u+1>>0];u=u+-2|0;c:do if(j>>>0<=l>>>0|j>>>0>y>>>0){c[N>>2]=j;c[N+4>>2]=H;c[N+8>>2]=y;ti(f,35841,N);m=0}else{t=aa+j|0;cb[c[z>>2]&255](ca,t,M);if((j+(e[A>>1]|0)|0)>>>0>ea>>>0){ti(f,35871,O);m=0;break}if(a[B>>0]|0){s=M;o=c[s>>2]|0;s=c[s+4>>2]|0;q=W;p=c[q>>2]|0;q=c[q+4>>2]|0;if(!n)if((s|0)<(q|0)|(s|0)==(q|0)&o>>>0

        >>0)n=s;else V=36;else if((s|0)>(q|0)|(s|0)==(q|0)&o>>>0>p>>>0)V=36;else n=s;if((V|0)==36){V=0;n=P;c[n>>2]=o;c[n+4>>2]=s;ti(f,35895,P);n=M;o=c[n>>2]|0;n=c[n+4>>2]|0}s=W;c[s>>2]=o;c[s+4>>2]=n;n=0}o=c[C>>2]|0;p=e[D>>1]|0;if(o>>>0>p>>>0){q=((E+o-p|0)>>>0)/(y>>>0)|0;s=t+((e[A>>1]|0)+-4)|0;s=d[s+1>>0]<<16|d[s>>0]<<24|d[s+2>>0]<<8|d[s+3>>0];if(a[w>>0]|0){o=eg(c[f>>2]|0,s,K,L)|0;d:do if((o|0)<7){switch(o|0){case 0:break;default:{V=42;break d}}o=a[K>>0]|0;p=c[L>>2]|0;if(o<<24>>24==3&(p|0)==(g|0))break;c[R>>2]=s;c[R+4>>2]=3;c[R+8>>2]=g;c[R+12>>2]=o&255;c[R+16>>2]=p;ti(f,35625,R)}else{if((o|0)<3082)switch(o|0){case 7:break;default:{V=42;break d}}else switch(o|0){case 3082:break;default:{V=42;break d}}c[x>>2]=1;V=42}while(0);if((V|0)==42){V=0;c[Q>>2]=s;ti(f,35596,Q)}}si(f,0,s,q)}if(a[I>>0]|0){p=j+-1+(e[A>>1]|0)|j<<16;o=(c[i>>2]|0)+1|0;c[i>>2]=o;c[i+(o<<2)>>2]=p;q=o>>>1;if(!q)break;s=i+(q<<2)|0;j=c[s>>2]|0;if(j>>>0<=p>>>0)break;while(1){c[s>>2]=p;c[i+(o<<2)>>2]=j;o=q>>>1;if(!o)break c;p=c[s>>2]|0;s=i+(o<<2)|0;j=c[s>>2]|0;if(j>>>0<=p>>>0)break c;else{t=q;q=o;o=t}}}p=d[t+1>>0]<<16|d[t>>0]<<24|d[t+2>>0]<<8|d[t+3>>0];if(a[w>>0]|0){n=eg(c[f>>2]|0,p,K,L)|0;e:do if((n|0)<7){switch(n|0){case 0:break;default:{V=51;break e}}n=a[K>>0]|0;o=c[L>>2]|0;if(n<<24>>24==5&(o|0)==(g|0))break;c[T>>2]=p;c[T+4>>2]=5;c[T+8>>2]=g;c[T+12>>2]=n&255;c[T+16>>2]=o;ti(f,35625,T)}else{if((n|0)<3082)switch(n|0){case 7:break;default:{V=51;break e}}else switch(n|0){case 3082:break;default:{V=51;break e}}c[x>>2]=1;V=51}while(0);if((V|0)==51){V=0;c[S>>2]=p;ti(f,35596,S)}}n=W;n=ui(f,p,W,c[n>>2]|0,c[n+4>>2]|0)|0;if((n|0)==(k|0)){n=0;break}ti(f,35919,U);k=n;n=0}while(0);if((v|0)<=0)break;else v=v+-1|0}U=W;V=c[U+4>>2]|0;W=h;c[W>>2]=c[U>>2];c[W+4>>2]=V;c[ga>>2]=0;if(!m){a[ca>>0]=J;break}}else{U=W;V=c[U+4>>2]|0;W=h;c[W>>2]=c[U>>2];c[W+4>>2]=V;c[ga>>2]=0}f:do if((c[F>>2]|0)>0){if(!(a[I>>0]|0)){i=c[f+64>>2]|0;c[i>>2]=0;if(!G){s=ca+76|0;while(1){n=aa+((r<<1)+X)|0;n=d[n>>0]<<8|d[n+1>>0];n=n+-1+((Xa[c[s>>2]&255](ca,aa+n|0)|0)&65535)|n<<16;m=(c[i>>2]|0)+1|0;c[i>>2]=m;c[i+(m<<2)>>2]=n;o=m>>>1;g:do if(o|0?(Y=i+(o<<2)|0,Z=c[Y>>2]|0,Z>>>0>n>>>0):0){p=Y;q=Z;while(1){c[p>>2]=n;c[i+(m<<2)>>2]=q;m=o>>>1;if(!m)break g;n=c[p>>2]|0;p=i+(m<<2)|0;q=c[p>>2]|0;if(q>>>0<=n>>>0)break;else{W=o;o=m;m=W}}}while(0);if((r|0)>0)r=r+-1|0;else break}}}m=aa+(ba+1)|0;m=d[m>>0]<<8|d[m+1>>0];if(m|0)do{o=aa+(m+2)|0;o=m+-1+(d[o>>0]<<8|d[o+1>>0])|m<<16;n=(c[i>>2]|0)+1|0;c[i>>2]=n;c[i+(n<<2)>>2]=o;p=n>>>1;h:do if(p|0?(_=i+(p<<2)|0,$=c[_>>2]|0,$>>>0>o>>>0):0){q=_;r=$;while(1){c[q>>2]=o;c[i+(n<<2)>>2]=r;n=p>>>1;if(!n)break h;o=c[q>>2]|0;q=i+(n<<2)|0;r=c[q>>2]|0;if(r>>>0<=o>>>0)break;else{Z=p;p=n;n=Z}}}while(0);Z=aa+m|0;m=d[Z>>0]<<8|d[Z+1>>0]}while((m|0)!=0);n=c[i>>2]|0;i:do if(n){t=i+4|0;m=0;while(1){j=c[t>>2]|0;n=i+(n<<2)|0;c[t>>2]=c[n>>2];c[n>>2]=-1;n=(c[i>>2]|0)+-1|0;c[i>>2]=n;j:do if(n>>>0>=2){s=c[t>>2]|0;r=1;o=2;do{p=o|1;q=r;r=(c[i+(o<<2)>>2]|0)>>>0>(c[i+(p<<2)>>2]|0)>>>0?p:o;o=i+(r<<2)|0;p=c[o>>2]|0;if(s>>>0

        >>0)break j;c[i+(q<<2)>>2]=p;c[o>>2]=s;o=r<<1;n=c[i>>2]|0}while(o>>>0<=n>>>0)}while(0);o=l&65535;p=j>>>16;if(p>>>0<=o>>>0)break;m=m+-1-o+p|0;if(!n){l=j;break i}else l=j}c[da>>2]=p;c[da+4>>2]=g;ti(f,35944,da);if(c[i>>2]|0)break f}else m=0;while(0);m=m+-1+ea-(l&65535)|0;l=d[aa+(ba+7)>>0]|0;if((m|0)!=(l|0)){c[fa>>2]=m;c[fa+4>>2]=l;c[fa+8>>2]=g;ti(f,35981,fa)}}while(0);if(!ca)break a}else{c[p>>2]=k;ti(f,35727,p);k=-1}while(0);l=c[ca+72>>2]|0;if(!(b[l+28>>1]&32)){Df(l);break}else{fa=c[l+20>>2]|0;g=fa+120|0;c[g>>2]=(c[g>>2]|0)+-1;fa=fa+136|0;c[l+16>>2]=c[fa>>2];c[fa>>2]=l;break}}else{c[o>>2]=k;ti(f,35689,o);k=-1}while(0);c[ga>>2]=ha;c[ia>>2]=ja;c[ka>>2]=la;la=k+1|0;Ra=ma;return la|0}function vi(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[a>>2]|0;g=a+4|0;if(d|0)do{e=d;d=c[d>>2]|0;f=c[g>>2]|0;do if(f){if(c[f+480>>2]|0){Xd(f,e);break}i=e;if((c[f+304>>2]|0)>>>0<=i>>>0?(c[f+308>>2]|0)>>>0>i>>>0:0){i=f+300|0;c[e>>2]=c[i>>2];c[i>>2]=e}else h=9}else h=9;while(0);do if((h|0)==9){h=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0)}while((d|0)!=0);c[a>>2]=0;b[a+24>>1]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+20>>2]=0;b[a+26>>1]=1;d=c[g>>2]|0;if(d|0){if(c[d+480>>2]|0){Xd(d,a);return}i=a;if((c[d+304>>2]|0)>>>0<=i>>>0?(c[d+308>>2]|0)>>>0>i>>>0:0){i=d+300|0;c[a>>2]=c[i>>2];c[i>>2]=a;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{i=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function wi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=Ra;Ra=Ra+16|0;e=g;f=c[a+12>>2]|0;if(!f)c[b>>2]=a;else{wi(f,b,e);c[(c[e>>2]|0)+8>>2]=a}e=a+8|0;b=c[e>>2]|0;if(!b){c[d>>2]=a;Ra=g;return}else{wi(b,e,d);Ra=g;return}}function xi(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a>>2]|0;if(!d){a=0;return a|0}if((b|0)<=1){e=d+8|0;c[a>>2]=c[e>>2];c[e>>2]=0;c[d+12>>2]=0;a=d;return a|0}b=b+-1|0;d=xi(a,b)|0;e=c[a>>2]|0;if(!e){a=d;return a|0}else{c[e+12>>2]=d;d=e+8|0;c[a>>2]=c[d>>2];a=xi(a,b)|0;c[d>>2]=a;return e|0}return 0}function yi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Ra;Ra=Ra+16|0;g=f;c[g>>2]=e;d=Me(a,d,g)|0;if(!d){g=7;Ra=f;return g|0}g=zi(a,b,d)|0;lb(a,d);Ra=f;return g|0}function zi(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;h=o;g=qd(d,g,-1,128,0,h,0)|0;if(g|0){f=g;Ra=o;return f|0}n=c[h>>2]|0;g=Gc(n)|0;a:do if((g|0)==100){j=n+120|0;k=n+144|0;l=n+40|0;if(!n)while(1){g=Gc(0)|0;if((g|0)!=100)break a}do{g=c[j>>2]|0;if(!((g|0)!=0?(b[k>>1]|0)!=0:0)){g=c[n>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576}h=b[g+8>>1]|0;if((h&514)==514?(a[g+10>>0]|0)==1:0)i=c[g+16>>2]|0;else if(!(h&1))i=Gg(g,1)|0;else i=0;g=c[n>>2]|0;h=c[l>>2]|0;if((h|0)==3082|(a[g+81>>0]|0)!=0){og(g);g=7}else g=c[g+68>>2]&h;c[l>>2]=g;do if(i|0){if(av(i,36682,3)|0?av(i,36686,3)|0:0)break;g=zi(d,f,i)|0;if(g|0)break a}while(0);g=Gc(n)|0}while((g|0)==100)}while(0);l=(g|0)==101?0:g;if(l|0){k=pd(d)|0;g=c[f>>2]|0;do if(g|0){if(d|0){if(c[d+480>>2]|0){Xd(d,g);break}j=g;if((c[d+304>>2]|0)>>>0<=j>>>0?(c[d+308>>2]|0)>>>0>j>>>0:0){j=d+300|0;c[g>>2]=c[j>>2];c[j>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);b:do if(!k)g=0;else{j=(Eu(k)|0)+1|0;c:do if(!d){d=Sv(j|0,0,-1,-1)|0;i=L()|0;if(i>>>0>0|(i|0)==0&d>>>0>2147483390){g=0;break b}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](j)|0;m=59;break}g=Wa[c[29356>>2]&127](j)|0;if((c[14985]|0)>>>0>>0)c[14985]=j;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){d=c[14978]|0;i=Tv(h|0,i|0,g|0,((g|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=d>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(!g){g=0;break b}h=Wa[c[29352>>2]&127](g)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}else{if(c[d+272>>2]|0){if(a[d+81>>0]|0){g=0;break b}}else{do if(!(0<0|(0==0?(e[d+276>>1]|0)>>>0>>0:0))){h=d+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];m=d+284|0;c[m>>2]=(c[m>>2]|0)+1;m=59;break c}h=d+296|0;g=c[h>>2]|0;if(!g){g=d+292|0;break}else{c[h>>2]=c[g>>2];m=d+284|0;c[m>>2]=(c[m>>2]|0)+1;m=59;break c}}else g=d+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(d,j,0)|0;m=59}while(0);if((m|0)==59)if(!g){g=0;break}ew(g|0,k|0,j|0)|0}while(0);c[f>>2]=g}gc(n)|0;f=l;Ra=o;return f|0}function Ai(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=Ra;Ra=Ra+48|0;u=D+24|0;x=D+16|0;w=D+8|0;l=D;q=D+32|0;v=D+28|0;p=g+60|0;s=c[p>>2]|0;r=c[g+56>>2]|0;c[v>>2]=0;t=f+352|0;k=c[t>>2]|0;a:do if(k|0){while(1){if((c[k+4>>2]|0)==(g|0))break;k=c[k+8>>2]|0;if(!k)break a}c[l>>2]=c[g>>2];f=dd(f,36709,l)|0;c[j>>2]=f;f=6;Ra=D;return f|0}while(0);n=c[g>>2]|0;if(!n){f=7;Ra=D;return f|0}o=(Eu(n)|0)+1|0;z=(f|0)==0;b:do if(z){y=Sv(o|0,0,-1,-1)|0;m=L()|0;if(m>>>0>0|(m|0)==0&y>>>0>2147483390){f=7;Ra=D;return f|0}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](o)|0;A=31;break}k=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){y=c[14978]|0;m=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=y>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(!l){f=7;Ra=D;return f|0}k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;y=l}else y=l}else{if(c[f+272>>2]|0){if(a[f+81>>0]|0){f=7;Ra=D;return f|0}}else{do if(!(0<0|(0==0?(e[f+276>>1]|0)>>>0>>0:0))){l=f+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];A=f+284|0;c[A>>2]=(c[A>>2]|0)+1;A=31;break b}l=f+296|0;k=c[l>>2]|0;if(!k){k=f+292|0;break}else{c[l>>2]=c[k>>2];A=f+284|0;c[A>>2]=(c[A>>2]|0)+1;A=31;break b}}else k=f+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(f,o,0)|0;A=31}while(0);if((A|0)==31)if(!k){f=7;Ra=D;return f|0}else y=k;ew(y|0,n|0,o|0)|0;if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](28)|0;if(!k)A=43;else n=k}else{k=Wa[c[29356>>2]&127](28)|0;if((c[14985]|0)>>>0<28)c[14985]=28;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){o=c[14978]|0;n=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=o>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(l){k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;n=l}else n=l}else A=43}if((A|0)==43){k=f+81|0;if((a[k>>0]|0)==0?(a[f+82>>0]|0)==0:0){a[k>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;k=f+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[f+236>>2]|0;if(k|0)c[k+12>>2]=7}if(c[f+480>>2]|0){Xd(f,y);f=7;Ra=D;return f|0}C=y;if((c[f+304>>2]|0)>>>0<=C>>>0?(c[f+308>>2]|0)>>>0>C>>>0:0){f=f+300|0;c[y>>2]=c[f>>2];c[f>>2]=y;f=7;Ra=D;return f|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](y);f=7;Ra=D;return f|0}else{f=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);f=7;Ra=D;return f|0}}k=n+8|0;l=k+20|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(l|0));c[n>>2]=f;c[n+4>>2]=h;l=c[g+72>>2]|0;m=c[f+16>>2]|0;if(!l)k=-1e6;else{k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0))break;else k=k+1|0}c[(c[p>>2]|0)+4>>2]=c[m+(k<<4)>>2];c[q+4>>2]=g;c[q>>2]=n;p=q+8|0;c[p>>2]=c[t>>2];l=q+12|0;c[l>>2]=0;c[t>>2]=q;m=n+8|0;k=$a[i&127](f,c[h+8>>2]|0,r,s,m,v)|0;c[t>>2]=c[p>>2];c:do switch(k|0){case 7:{l=f+81|0;if((a[l>>0]|0)==0?(a[f+82>>0]|0)==0:0){a[l>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;l=f+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[f+236>>2]|0;if(l){c[l+12>>2]=7;A=67}else A=67}else A=67;break}case 0:{k=c[m>>2]|0;if(k){c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[c[m>>2]>>2]=c[h>>2];k=n+12|0;c[k>>2]=1;if(!(c[l>>2]|0)){c[u>>2]=c[g>>2];l=dd(f,36781,u)|0;c[j>>2]=l;l=c[n>>2]|0;C=(c[k>>2]|0)+-1|0;c[k>>2]=C;if(C|0){k=1;A=117;break c}k=c[m>>2]|0;if(k|0)Wa[c[(c[k>>2]|0)+16>>2]&127](k)|0;if(l|0){if(c[l+480>>2]|0){Xd(l,n);k=1;A=117;break c}C=n;if((c[l+304>>2]|0)>>>0<=C>>>0?(c[l+308>>2]|0)>>>0>C>>>0:0){k=l+300|0;c[n>>2]=c[k>>2];c[k>>2]=n;k=1;A=117;break c}}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);k=1;A=117;break c}else{k=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);k=1;A=117;break c}}h=g+64|0;c[n+24>>2]=c[h>>2];c[h>>2]=n;h=g+42|0;k=b[h>>1]|0;if(k<<16>>16>0){u=g+4|0;t=g+36|0;m=0;s=0;l=c[u>>2]|0;do{if(!(a[l+(s<<4)+15>>0]&4))i=59952;else{i=c[l+(s<<4)>>2]|0;i=i+(Eu(i)|0)+1|0}q=(Eu(i)|0)&1073741823;d:do if(!q)A=114;else{n=0;e:while(1){r=i+n|0;do if(r|0){j=d[r>>0]|0;o=208+j|0;do if((j|32|0)==104){o=r+1|0;j=d[o>>0]|0;p=208+j|0;if((j|32|0)==105){o=o+1|0;p=d[o>>0]|0;if((p|32|0)!=100){B=208+p|0;C=100;A=103;break}o=o+1|0;p=d[o>>0]|0;if((p|32|0)!=100){B=208+p|0;C=100;A=103;break}o=o+1|0;p=d[o>>0]|0;if((p|32|0)!=101){B=208+p|0;C=101;A=103;break}o=d[o+1>>0]|0;if((o|32|0)!=110){B=208+o|0;C=110;A=103}}else{B=p;C=105;A=103}}else{B=o;C=104;A=103}while(0);if((A|0)==103?(A=0,(C|0)!=(d[B>>0]|0)):0)break;if(n|0?(a[i+(n+-1)>>0]|0)!=32:0)break;o=a[i+(n+6)>>0]|0;switch(o<<24>>24){case 32:case 0:break e;default:{}}}while(0);n=n+1|0;if(n>>>0>=q>>>0){A=114;break d}}o=o<<24>>24==0?6:7;k=n+o|0;if(k>>>0<=q>>>0){m=q+1-o|0;l=n;while(1){a[i+l>>0]=a[i+k>>0]|0;k=l+1|0;if((k|0)==(m|0))break;else{l=k;k=k+o|0}}}if((n|0)!=0&(a[r>>0]|0)==0)a[i+(n+-1)>>0]=0;l=c[u>>2]|0;m=l+(s<<4)+15|0;a[m>>0]=a[m>>0]|2;m=-128;k=b[h>>1]|0}while(0);if((A|0)==114){A=0;c[t>>2]=c[t>>2]|m&255}s=s+1|0}while((s|0)<(k<<16>>16|0))}if(z)k=0;else{k=0;A=117}}else{k=0;A=117}break}default:A=67}while(0);do if((A|0)==67){l=c[v>>2]|0;do if(l){c[x>>2]=l;l=dd(f,31408,x)|0;c[j>>2]=l;l=c[v>>2]|0;if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{C=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}else{c[w>>2]=y;C=dd(f,36751,w)|0;c[j>>2]=C}while(0);if(c[f+480>>2]|0){Xd(f,n);A=117;break}C=n;if((c[f+304>>2]|0)>>>0<=C>>>0?(c[f+308>>2]|0)>>>0>C>>>0:0){A=f+300|0;c[n>>2]=c[A>>2];c[A>>2]=n;A=117;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](n);A=117;break}else{A=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);A=117;break}}while(0);if((A|0)==117){if(c[f+480>>2]|0){Xd(f,y);f=k;Ra=D;return f|0}C=y;if((c[f+304>>2]|0)>>>0<=C>>>0?(c[f+308>>2]|0)>>>0>C>>>0:0){f=f+300|0;c[y>>2]=c[f>>2];c[f>>2]=y;f=k;Ra=D;return f|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](y);f=k;Ra=D;return f|0}else{f=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);f=k;Ra=D;return f|0}return 0}function Bi(b,f){b=b|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;i=a[b>>0]|0;do switch(a[3696+(i&255)>>0]|0){case 7:{g=1;while(1)if(!(a[880+(d[b+g>>0]|0)>>0]&1))break;else g=g+1|0;c[f>>2]=174;f=g;return f|0}case 11:{if((a[b+1>>0]|0)!=45){c[f>>2]=101;f=1;return f|0}g=2;a:while(1){switch(a[b+g>>0]|0){case 0:case 10:break a;default:{}}g=g+1|0}c[f>>2]=174;f=g;return f|0}case 17:{c[f>>2]=22;f=1;return f|0}case 18:{c[f>>2]=23;f=1;return f|0}case 19:{c[f>>2]=1;f=1;return f|0}case 20:{c[f>>2]=100;f=1;return f|0}case 21:{c[f>>2]=102;f=1;return f|0}case 16:{if((a[b+1>>0]|0)==42?(g=a[b+2>>0]|0,g<<24>>24):0){h=a[b+3>>0]|0;b:do if(g<<24>>24==42&h<<24>>24==47){h=1;g=3}else{g=3;while(1){if(!(h<<24>>24)){h=0;break b}g=g+1|0;k=h;h=a[b+g>>0]|0;if(k<<24>>24==42&h<<24>>24==47){h=1;break}}}while(0);c[f>>2]=174;f=h+g|0;return f|0}c[f>>2]=103;f=1;return f|0}case 22:{c[f>>2]=104;f=1;return f|0}case 14:{c[f>>2]=53;f=(a[b+1>>0]|0)==61?2:1;return f|0}case 12:switch(a[b+1>>0]|0){case 61:{c[f>>2]=55;f=2;return f|0}case 62:{c[f>>2]=52;f=2;return f|0}case 60:{c[f>>2]=98;f=2;return f|0}default:{c[f>>2]=56;f=1;return f|0}}case 13:switch(a[b+1>>0]|0){case 61:{c[f>>2]=57;f=2;return f|0}case 62:{c[f>>2]=99;f=2;return f|0}default:{c[f>>2]=54;f=1;return f|0}}case 15:if((a[b+1>>0]|0)==61){c[f>>2]=52;f=2;return f|0}else{c[f>>2]=175;f=1;return f|0}case 10:if((a[b+1>>0]|0)==124){c[f>>2]=105;f=2;return f|0}else{c[f>>2]=97;f=1;return f|0}case 23:{c[f>>2]=26;f=1;return f|0}case 24:{c[f>>2]=96;f=1;return f|0}case 25:{c[f>>2]=107;f=1;return f|0}case 8:{h=a[b+1>>0]|0;c:do if(h<<24>>24){g=1;while(1){if(h<<24>>24==i<<24>>24){g=g+1|0;if((a[b+g>>0]|0)!=i<<24>>24)break}g=g+1|0;h=a[b+g>>0]|0;if(!(h<<24>>24))break c}if(i<<24>>24==39){c[f>>2]=110;f=g;return f|0}else{c[f>>2]=59;f=g;return f|0}}else g=1;while(0);c[f>>2]=175;f=g;return f|0}case 26:{if(((d[b+1>>0]|0)+-48|0)>>>0>=10){c[f>>2]=134;f=1;return f|0}break}case 3:break;case 9:{d:do if(i<<24>>24==93){g=1;h=59}else{g=1;while(1){h=a[b+g>>0]|0;if(!(h<<24>>24)){h=175;break d}g=g+1|0;if(h<<24>>24==93){h=59;break}}}while(0);c[f>>2]=h;f=g;return f|0}case 6:{c[f>>2]=148;g=1;while(1)if(((d[b+g>>0]|0)+-48|0)>>>0<10)g=g+1|0;else break;return g|0}case 5:case 4:{c[f>>2]=148;h=a[b+1>>0]|0;if(h<<24>>24){j=0;g=1;while(1){if(!(a[880+(h&255)>>0]&70)){if((j|0)>0&h<<24>>24==40){k=91;break}if(h<<24>>24!=58){h=j;break}h=g+1|0;if((a[b+h>>0]|0)==58){i=j;g=h}else{h=j;break}}else i=j+1|0;g=g+1|0;h=a[b+g>>0]|0;if(!(h<<24>>24)){h=i;break}else j=i}do if((k|0)==91){while(1){i=g+1|0;h=a[b+i>>0]|0;if(!(h<<24>>24))break;if(h<<24>>24!=41?(a[880+(h&255)>>0]&1)==0:0)g=i;else{k=94;break}}if((k|0)==94?h<<24>>24==41:0){h=j;g=g+2|0;break}c[f>>2]=175;h=j;g=i}while(0);if(h){f=g;return f|0}}else g=1;c[f>>2]=175;f=g;return f|0}case 1:{g=1;while(1){h=a[b+g>>0]|0;i=g+1|0;if((d[3696+(h&255)>>0]|0)<2)g=i;else break}if(!(a[880+(h&255)>>0]&70)){c[f>>2]=59;if(g>>>0<=1){f=g;return f|0}h=a[3952+(((d[208+(d[b>>0]|0)>>0]<<2^g^(d[208+(d[b+(g+-1)>>0]|0)>>0]|0)*3)>>>0)%127|0)>>0]|0;if(!(h<<24>>24)){f=g;return f|0}h=h&255;e:while(1){i=h+-1|0;f:do if((g|0)==(d[2064+i>>0]|0)){j=1136+(e[1776+(i<<1)>>1]|0)|0;h=0;while(1){if((a[b+h>>0]&-33)<<24>>24!=(a[j+h>>0]|0))break f;h=h+1|0;if(h>>>0>=g>>>0)break e}}while(0);h=a[4224+i>>0]|0;if(!(h<<24>>24)){k=127;break}else h=h&255}if((k|0)==127)return g|0;c[f>>2]=d[4080+i>>0];f=g;return f|0}else{g=i;k=114}break}case 0:{if((a[b+1>>0]|0)==39){c[f>>2]=146;g=2;while(1){h=a[b+g>>0]|0;if(!(a[880+(h&255)>>0]&8))break;else g=g+1|0}if(h<<24>>24==39&(g&1|0)==0){h=g;g=1}else{c[f>>2]=175;g:while(1){i=a[b+g>>0]|0;switch(i<<24>>24){case 39:case 0:break g;default:{}}g=g+1|0}h=g;g=i<<24>>24!=0&1}f=h+g|0;return f|0}else{g=1;k=114}break}case 2:{g=1;k=114;break}case 28:{c[f>>2]=175;f=0;return f|0}default:{c[f>>2]=175;f=1;return f|0}}while(0);if((k|0)==114){while(1)if(!(a[880+(d[b+g>>0]|0)>>0]&70))break;else g=g+1|0;c[f>>2]=59;f=g;return f|0}c[f>>2]=147;h=a[b>>0]|0;h:do if(h<<24>>24==48){switch(a[b+1>>0]|0){case 88:case 120:break;default:break h}if(a[880+(d[b+2>>0]|0)>>0]&8){g=3;while(1)if(!(a[880+(d[b+g>>0]|0)>>0]&8))break;else g=g+1|0;return g|0}}while(0);if(((h&255)+-48|0)>>>0<10){g=1;while(1){h=a[b+g>>0]|0;if(((h&255)+-48|0)>>>0<10)g=g+1|0;else break}}else g=0;if(h<<24>>24==46){h=g;do h=h+1|0;while(((d[b+h>>0]|0)+-48|0)>>>0<10);c[f>>2]=145;g=h;h=a[b+h>>0]|0}i:do switch(h<<24>>24){case 69:case 101:{i=a[b+(g+1)>>0]|0;if(((i&255)+-48|0)>>>0>=10){switch(i<<24>>24){case 45:case 43:break;default:break i}i=g+2|0;if(((d[b+i>>0]|0)+-48|0)>>>0<10)g=i;else break i}else g=g+2|0;h=g;while(1)if(((d[b+h>>0]|0)+-48|0)>>>0<10)h=h+1|0;else break;c[f>>2]=145;g=h;h=a[b+h>>0]|0;break}default:{}}while(0);if(!(a[880+(h&255)>>0]&70)){f=g;return f|0}do{c[f>>2]=175;g=g+1|0}while((a[880+(d[b+g>>0]|0)>>0]&70)!=0);return g|0}function Ci(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=d+108|0;i=c[h>>2]|0;if((c[d+112>>2]|0)>(i|0)){c[h>>2]=i+1;h=c[d+104>>2]|0;a[h+(i*20|0)>>0]=e;b[h+(i*20|0)+2>>1]=0;c[h+(i*20|0)+4>>2]=f;c[h+(i*20|0)+8>>2]=g;c[h+(i*20|0)+12>>2]=0;c[h+(i*20|0)+16>>2]=0;a[h+(i*20|0)+1>>0]=0;return i|0}else{i=Di(d,e,f,g,0)|0;return i|0}return 0}function Di(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=d+12|0;k=c[r>>2]|0;s=d+112|0;l=c[s>>2]|0;j=(l|0)==0;l=cw(l|0,((l|0)<0)<<31>>31|0,1)|0;m=L()|0;l=j?51:l;m=j?0:m;j=c[k>>2]|0;q=c[j+128>>2]|0;p=((q|0)<0)<<31>>31;a:do if(!((m|0)>(p|0)|(m|0)==(p|0)&l>>>0>q>>>0)){q=d+104|0;p=d+108|0;o=k;n=k;d=c[q>>2]|0;b:while(1){l=Yv(l|0,m|0,20,0)|0;m=L()|0;c:do if(!d){if(c[j+272>>2]|0){if(a[j+81>>0]|0){d=1;k=35;break b}}else{do if(!(m>>>0>0|((m|0)==0?l>>>0>(e[j+276>>1]|0)>>>0:0))){k=j+300|0;d=c[k>>2]|0;if(d|0){c[k>>2]=c[d>>2];k=j+284|0;c[k>>2]=(c[k>>2]|0)+1;k=27;break c}k=j+296|0;d=c[k>>2]|0;if(!d){d=j+292|0;break}else{c[k>>2]=c[d>>2];k=j+284|0;c[k>>2]=(c[k>>2]|0)+1;k=27;break c}}else d=j+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1}d=_d(j,l,m)|0;k=27}else{k=d;if((c[j+304>>2]|0)>>>0<=k>>>0?(c[j+308>>2]|0)>>>0>k>>>0:0){if(!(m>>>0>0|((m|0)==0?l>>>0>(e[j+276>>1]|0)>>>0:0))){k=29;break}d=Zd(j,d,l,m)|0;k=27;break}d=Zd(j,d,l,m)|0;k=27}while(0);if((k|0)==27){if(!d){d=1;k=35;break}j=c[o>>2]|0;if(!j)k=31;else k=29}if((k|0)==29){k=0;o=d;if((c[j+304>>2]|0)>>>0<=o>>>0?(c[j+308>>2]|0)>>>0>o>>>0:0)l=e[j+276>>1]|0;else k=31}if((k|0)==31)l=Wa[c[29352>>2]&127](d)|0;c[n+48>>2]=l;k=(l>>>0)/20|0;c[s>>2]=k;c[q>>2]=d;j=c[p>>2]|0;if((k|0)>(j|0)){k=34;break}n=c[r>>2]|0;m=l>>>0<20;l=m?51:k<<1;m=m?0:0;j=c[n>>2]|0;o=c[j+128>>2]|0;k=((o|0)<0)<<31>>31;if((m|0)>(k|0)|(m|0)==(k|0)&l>>>0>o>>>0)break a;else o=n}if((k|0)==34){c[p>>2]=j+1;a[d+(j*20|0)>>0]=f;b[d+(j*20|0)+2>>1]=0;c[d+(j*20|0)+4>>2]=g;c[d+(j*20|0)+8>>2]=h;c[d+(j*20|0)+12>>2]=i;c[d+(j*20|0)+16>>2]=0;a[d+(j*20|0)+1>>0]=0;s=j;return s|0}else if((k|0)==35)return d|0}while(0);d=j+81|0;if(a[d>>0]|0){s=1;return s|0}if(a[j+82>>0]|0){s=1;return s|0}a[d>>0]=1;if((c[j+180>>2]|0)>0)c[j+264>>2]=1;d=j+272|0;c[d>>2]=(c[d>>2]|0)+1;d=c[j+236>>2]|0;if(!d){s=1;return s|0}c[d+12>>2]=7;s=1;return s|0}function Ei(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=b+104|0;l=b+108|0;if((g|0)<0){while(1){h=d+1|0;i=a[h>>0]|0;if(i<<24>>24){m=d+16|0;kg(c[b>>2]|0,i<<24>>24,c[m>>2]|0);a[h>>0]=0;c[m>>2]=0}h=c[k>>2]|0;i=d-h|0;d=c[b>>2]|0;j=h;if(a[d+81>>0]|0){n=12;break}if((i|0)<0)i=(c[l>>2]|0)+-1|0;else i=(i|0)/20|0;d=j+(i*20|0)+1|0;if(!(a[d>>0]|0))break;d=j+(i*20|0)|0}if((n|0)==12){if((g|0)==-12)return;kg(d,g,f);return}if((g|0)==-3){c[h+(i*20|0)+16>>2]=f;a[d>>0]=-3;return}if(!f)return;c[h+(i*20|0)+16>>2]=f;a[d>>0]=g;if((g|0)!=-12)return;f=f+12|0;c[f>>2]=(c[f>>2]|0)+1;return}else{m=d+1|0;h=a[m>>0]|0;if(h<<24>>24){l=d+16|0;kg(c[b>>2]|0,h<<24>>24,c[l>>2]|0);a[m>>0]=0;c[l>>2]=0}h=(f|0)==0;if(!g)if(h)h=0;else{g=(Eu(f)|0)&1073741823;n=23}else if(h)h=0;else n=23;a:do if((n|0)==23){j=c[b>>2]|0;k=Sv(g|0,((g|0)<0)<<31>>31|0,1,0)|0;l=L()|0;b:do if(c[j+272>>2]|0)if(!(a[j+81>>0]|0))n=33;else{h=0;break a}else{do if(!(l>>>0>0|((l|0)==0?k>>>0>(e[j+276>>1]|0)>>>0:0))){i=j+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];b=j+284|0;c[b>>2]=(c[b>>2]|0)+1;break b}i=j+296|0;h=c[i>>2]|0;if(!h){h=j+292|0;break}else{c[i>>2]=c[h>>2];b=j+284|0;c[b>>2]=(c[b>>2]|0)+1;break b}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;n=33}while(0);if((n|0)==33)h=_d(j,k,l)|0;if(!h)h=0;else{ew(h|0,f|0,g|0)|0;a[h+g>>0]=0}}while(0);c[d+16>>2]=h;a[m>>0]=-7;return}}function Fi(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=c[e>>2]|0;n=c[b+12>>2]|0;o=n+64|0;k=c[o>>2]|0;l=b+149|0;j=(d[l>>0]|d[l+1>>0]<<8)&-769|256;a[l>>0]=j;a[l+1>>0]=j>>8;j=b+104|0;i=(c[j>>2]|0)+(((c[b+108>>2]|0)+-1|0)*20|0)|0;while(1){g=a[i>>0]|0;a:do if((g&255)<62){switch(g<<24>>24){case 2:{if(!(c[i+8>>2]|0))m=6;else{m=(d[l>>0]|d[l+1>>0]<<8)&-257;a[l>>0]=m;a[l+1>>0]=m>>8;m=6}break}case 0:case 1:{m=6;break}case 7:case 8:case 6:{h=(d[l>>0]|d[l+1>>0]<<8)&-769|512;a[l>>0]=h;a[l+1>>0]=h>>8;h=f;break a}case 3:case 5:{c[i+16>>2]=122;a[i+1>>0]=-5;h=f;break a}case 4:{c[i+16>>2]=123;a[i+1>>0]=-5;h=f;break a}case 10:{h=c[i+8>>2]|0;h=(h|0)>(f|0)?h:f;break a}case 9:{h=c[i+-16>>2]|0;f=(h|0)>(f|0)?h:f;break}default:{}}if((m|0)==6){m=0;h=d[l>>0]|d[l+1>>0]<<8|512;a[l>>0]=h;a[l+1>>0]=h>>8;h=f;break}g=i+8|0;h=c[g>>2]|0;if((h|0)<0){c[g>>2]=c[k+(~h<<2)>>2];h=f}else h=f}else h=f;while(0);if((i|0)==(c[j>>2]|0))break;else{f=h;i=i+-20|0}}f=c[b>>2]|0;g=c[o>>2]|0;if(!g){c[o>>2]=0;o=n+56|0;c[o>>2]=0;c[e>>2]=h;return}if(f|0){if(c[f+480>>2]|0){Xd(f,g);c[o>>2]=0;o=n+56|0;c[o>>2]=0;c[e>>2]=h;return}m=g;if((c[f+304>>2]|0)>>>0<=m>>>0?(c[f+308>>2]|0)>>>0>m>>>0:0){m=f+300|0;c[g>>2]=c[m>>2];c[m>>2]=g;c[o>>2]=0;o=n+56|0;c[o>>2]=0;c[e>>2]=h;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);c[o>>2]=0;o=n+56|0;c[o>>2]=0;c[e>>2]=h;return}else{m=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);c[o>>2]=0;o=n+56|0;c[o>>2]=0;c[e>>2]=h;return}}function Gi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=Ra;Ra=Ra+16|0;i=k;g=a[b>>0]|0;if(g<<24>>24==1){f=4;Ra=k;return f|0}c[i>>2]=0;do if(g<<24>>24==4){g=c[b+4>>2]|0;if(g|0){f=g;Ra=k;return f|0}}else{a[b>>0]=1;g=c[7389]|0;if((g|0)!=0?(Wa[g&127](410)|0)!=0:0)g=10;else{h=b+16|0;g=b+56|0;g=th(b,c[h>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,i)|0;if(!g){g=c[h>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[h>>2]=0;h=c[i>>2]|0;g=b+4|0;if(!h){if(c[g>>2]|0)j=13}else{c[g>>2]=h;j=13}if((j|0)==13?(a[b>>0]|0)==0:0)a[b>>0]=2;break}}l=g;Ra=k;return l|0}while(0);l=cg(b,d,e,f,0)|0;Ra=k;return l|0}function Hi(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;if(d){h=(Eu(d)|0)&1073741823;if((h+20|0)>>>0>2147483390)i=0;else{k=h;h=h+21|0;j=3}}else{k=0;h=21;j=3}do if((j|0)==3){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](h)|0;if(!i)break;else{j=i;h=i}}else{j=Wa[c[29356>>2]&127](h)|0;if((c[14985]|0)>>>0>>0)c[14985]=h;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){l=c[14978]|0;i=Tv(h|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&i>>>0<=l>>>0)&1}i=Wa[c[29340>>2]&127](j)|0;if(!i){i=0;break}h=Wa[c[29352>>2]&127](i)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h;j=i;h=i}i=j+20|0;ew(i|0,d|0,k+1|0)|0;c[j+4>>2]=i;c[j>>2]=e;c[j+8>>2]=f;c[j+12>>2]=g;c[j+16>>2]=0;i=mi(b+336|0,i,j)|0;if(!i){l=h;return l|0}h=b+81|0;if((a[h>>0]|0)==0?(a[b+82>>0]|0)==0:0){a[h>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;h=b+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[b+236>>2]|0;if(h|0)c[h+12>>2]=7}if(c[b+480>>2]|0){Xd(b,i);l=0;return l|0}l=i;if((c[b+304>>2]|0)>>>0<=l>>>0?(c[b+308>>2]|0)>>>0>l>>>0:0){l=b+300|0;c[i>>2]=c[l>>2];c[l>>2]=i;l=0;return l|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);l=0;return l|0}else{l=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);l=0;return l|0}}while(0);h=b+81|0;if(a[h>>0]|0){l=i;return l|0}if(a[b+82>>0]|0){l=i;return l|0}a[h>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;h=b+272|0;c[h>>2]=(c[h>>2]|0)+1;h=c[b+236>>2]|0;if(!h){l=i;return l|0}c[h+12>>2]=7;l=i;return l|0}function Ii(e,f,g,h,i,j){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=Ra;Ra=Ra+256|0;w=y+224|0;g=y+216|0;o=y+208|0;h=y+200|0;u=y+232|0;v=y;p=u+4|0;c[p>>2]=v;c[u>>2]=0;q=u+8|0;c[q>>2]=200;r=u+12|0;s=u+16|0;t=u+21|0;c[r>>2]=0;c[r+4>>2]=0;b[r+8>>1]=0;c[s>>2]=14;l=v;m=37929;n=l+14|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));k=f+7|0;if(a[k>>0]|0){g=d[f+6>>0]|0;x=c[5504+(g<<2)>>2]|0;c[h>>2]=40;c[h+4>>2]=x;Eb(u,37944,h);if((d[k>>0]|0)>1){h=1;do{g=g+1|0;x=c[5504+(g<<2)>>2]|0;c[o>>2]=44;c[o+4>>2]=x;Eb(u,37944,o);h=h+1|0}while(h>>>0<(d[k>>0]|0)>>>0);x=h&255}else x=1}else{c[g>>2]=c[f>>2];Eb(u,37951,g);x=1}k=f+5|0;g=a[k>>0]|0;if(!(g&32))o=0;else{g=c[s>>2]|0;h=g+11|0;if(h>>>0<(c[q>>2]|0)>>>0){c[s>>2]=h;l=(c[p>>2]|0)+g|0;m=37957;n=l+11|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0))}else wb(u,37957,11);o=1;g=a[k>>0]|0}if((g&255)>63){g=c[s>>2]|0;h=g+14|0;if(h>>>0<(c[q>>2]|0)>>>0){c[s>>2]=h;l=(c[p>>2]|0)+g|0;m=37969;n=l+14|0;do{a[l>>0]=a[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0))}else wb(u,37969,14);o=o+1|0}g=c[s>>2]|0;h=g+1|0;if(h>>>0<(c[q>>2]|0)>>>0){c[s>>2]=h;a[(c[p>>2]|0)+g>>0]=41}else wb(u,34066,1);g=c[p>>2]|0;if((g|0?(a[g+(c[s>>2]|0)>>0]=0,c[r>>2]|0):0)?(a[t>>0]&4)==0:0)$d(u)|0;g=td(e,v)|0;if(g|0){f=pd(e)|0;c[w>>2]=f;f=Bb(31408,w)|0;c[j>>2]=f;f=g;e=0;c[i>>2]=e;Ra=y;return f|0}if(mb()|0){f=7;e=0;c[i>>2]=e;Ra=y;return f|0}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](24)|0;if(!g){f=7;e=g;c[i>>2]=e;Ra=y;return f|0}else h=g}else{g=Wa[c[29356>>2]&127](24)|0;if((c[14985]|0)>>>0<24)c[14985]=24;k=59064;h=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&h>>>0>0){j=c[14978]|0;w=Tv(h|0,k|0,g|0,((g|0)<0)<<31>>31|0)|0;v=L()|0;c[14768]=((v|0)<0|(v|0)==0&w>>>0<=j>>>0)&1}k=Wa[c[29340>>2]&127](g)|0;if(!k){f=7;e=0;c[i>>2]=e;Ra=y;return f|0}g=Wa[c[29352>>2]&127](k)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g;h=k;g=k};c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+16>>2]=f;c[h+12>>2]=e;a[h+21>>0]=x;a[h+20>>0]=o;f=0;e=g;c[i>>2]=e;Ra=y;return f|0}function Ji(b,e){b=b|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;k=o;n=e+40|0;g[n>>3]=1.0;if(!(a[b+20>>0]|0)){Ra=o;return 0}f=c[e+4>>2]|0;c[k>>2]=0;m=k+4|0;c[m>>2]=0;i=c[e>>2]|0;if((i|0)>0){h=b+21|0;b=f;f=0;while(1){if((a[b+5>>0]|0?(a[b+4>>0]|0)==2:0)?(j=c[b>>2]|0,l=d[h>>0]|0,(j|0)>=(l|0)):0)c[k+(j-l<<2)>>2]=f+1;f=f+1|0;if((f|0)>=(i|0))break;else b=b+12|0}b=c[k>>2]|0;if(b|0){b=b+-1|0;f=c[e+16>>2]|0;c[f+(b<<3)>>2]=1;a[f+(b<<3)+4>>0]=1;m=c[m>>2]|0;b=m+-1|0;if(!m){Ra=o;return 0}g[n>>3]=20.0;n=e+48|0;c[n>>2]=20;c[n+4>>2]=0;c[f+(b<<3)>>2]=2;a[f+(b<<3)+4>>0]=1;Ra=o;return 0}}g[n>>3]=2147483647.0;n=e+48|0;c[n>>2]=2147483647;c[n+4>>2]=0;Ra=o;return 0}function Ki(a){a=a|0;var b=0;if(!a)return 0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Li(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(mb()|0){b=7;return b|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](24)|0;if(!d){b=7;return b|0}}else{f=Wa[c[29356>>2]&127](24)|0;if((c[14985]|0)>>>0<24)c[14985]=24;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){g=c[14978]|0;e=Tv(d|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=g>>>0)&1}d=Wa[c[29340>>2]&127](f)|0;if(!d){g=7;return g|0}e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e};c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d>>2]=a;c[b>>2]=d;g=0;return g|0}function Mi(a){a=a|0;var b=0,d=0,e=0;b=a+4|0;gc(c[b>>2]|0)|0;c[b>>2]=0;b=a+16|0;d=c[b>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[b>>2]=0;b=a+20|0;d=c[b>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[b>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{e=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Ni(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=Ra;Ra=Ra+64|0;u=y+24|0;r=y+16|0;q=y+8|0;l=y;s=y+32|0;t=c[e>>2]|0;v=e+4|0;gc(c[v>>2]|0)|0;c[v>>2]=0;x=e+16|0;f=c[x>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{w=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[x>>2]=0;w=e+20|0;f=c[w>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[w>>2]=0;o=t+16|0;a:do if((h|0)>0){j=0;k=((d[(c[o>>2]|0)+5>>0]|0)>>>5&1^1)&255;b:while(1){f=c[i+(j<<2)>>2]|0;do if(f|0){g=b[f+8>>1]|0;if((g&514)==514?(a[f+10>>0]|0)==1:0)f=c[f+16>>2]|0;else{if(g&1)break;f=Gg(f,1)|0}if(f|0?(c[l>>2]=f,p=Bb(31408,l)|0,c[x+(k<<2)>>2]=p,(p|0)==0):0){f=7;break b}}while(0);j=j+1|0;if((j|0)>=(h|0))break a;else k=k+1|0}Ra=y;return f|0}while(0);p=t+12|0;m=c[(c[p>>2]|0)+112>>2]|0;h=s+4|0;c[h>>2]=0;c[s>>2]=0;l=s+8|0;c[l>>2]=0;i=s+12|0;c[i>>2]=m;m=s+16|0;c[m>>2]=0;a[s+20>>0]=0;n=s+21|0;a[n>>0]=0;wb(s,38205,7);f=c[w>>2]|0;if(f|0){c[q>>2]=f;Eb(s,38213,q)}g=c[c[o>>2]>>2]|0;if(!g)f=0;else f=(Eu(g)|0)&1073741823;j=c[m>>2]|0;k=j+f|0;if(k>>>0<(c[l>>2]|0)>>>0){if(f|0){c[m>>2]=k;ew((c[h>>2]|0)+j|0,g|0,f|0)|0}}else wb(s,g,f);f=c[x>>2]|0;if(f|0){c[r>>2]=f;Eb(s,38217,r)}f=c[h>>2]|0;if(((f|0)!=0?(a[f+(c[m>>2]|0)>>0]=0,(c[i>>2]|0)!=0):0)?(a[n>>0]&4)==0:0)f=$d(s)|0;else f=c[h>>2]|0;if(!f){x=7;Ra=y;return x|0}g=qd(c[p>>2]|0,f,-1,128,0,v,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{s=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}if(g|0){x=pd(c[p>>2]|0)|0;c[u>>2]=x;x=Bb(31408,u)|0;c[t+8>>2]=x;x=g;Ra=y;return x|0}e=e+8|0;t=e;t=Sv(c[t>>2]|0,c[t+4>>2]|0,1,0)|0;u=L()|0;c[e>>2]=t;c[e+4>>2]=u;if((Gc(c[v>>2]|0)|0)==100){x=0;Ra=y;return x|0}g=gc(c[v>>2]|0)|0;c[v>>2]=0;gc(0)|0;c[v>>2]=0;f=c[x>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[x>>2]=0;f=c[w>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{x=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[w>>2]=0;x=g;Ra=y;return x|0}function Oi(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;e=b;e=Sv(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;d=L()|0;c[b>>2]=e;c[b+4>>2]=d;b=a+4|0;if((Gc(c[b>>2]|0)|0)==100){e=0;return e|0}e=gc(c[b>>2]|0)|0;c[b>>2]=0;Si(a);return e|0}function Pi(a){a=a|0;return (c[a+4>>2]|0)==0|0}function Qi(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;i=d[(c[f>>2]|0)+21>>0]|0;if((i|0)<=(h|0)){if((yc(c[g>>2]|0,c[f+16+(h-i<<2)>>2]|0,-1,1,-1)|0)!=18)return 0;c[g+20>>2]=18;yc(c[g>>2]|0,31223,-1,1,0)|0;return 0}k=c[f+4>>2]|0;j=(k|0)==0;do if(j)l=29576;else{f=c[k+120>>2]|0;if(f|0?(e[k+144>>1]|0)>>>0>h>>>0:0){l=f+(h*40|0)|0;break}l=c[k>>2]|0;c[l+64>>2]=25;Ne(l,25);l=29576}while(0);f=l+8|0;i=e[f>>1]|0;if(i&2048|0)b[f>>1]=i&59391|4096;if(!j){i=c[k>>2]|0;h=k+40|0;f=c[h>>2]|0;if((f|0)==3082|(a[i+81>>0]|0)!=0){og(i);f=7}else f=c[i+68>>2]&f;c[h>>2]=f}Dc(g,l);return 0}function Ri(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=c[d+4>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=a;return 0}function Si(a){a=a|0;var b=0,d=0,e=0;b=a+4|0;gc(c[b>>2]|0)|0;c[b>>2]=0;b=a+16|0;d=c[b>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[b>>2]=0;a=a+20|0;b=c[a>>2]|0;if(!b){c[a>>2]=0;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);c[a>>2]=0;return}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);c[a>>2]=0;return}}function Ti(b){b=b|0;var e=0,f=0,g=0;f=b+360|0;e=c[f>>2]|0;c[f>>2]=0;if(!e)return;b=c[b+4>>2]|0;if(b|0)do{f=b+149|0;g=(d[f>>0]|d[f+1>>0]<<8)&-4|1;a[f>>0]=g;a[f+1>>0]=g>>8;b=c[b+8>>2]|0}while((b|0)!=0);do{g=e;e=c[e+24>>2]|0;ng(g)}while((e|0)!=0);return}function Ui(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=a+20|0;if((c[g>>2]|0)>2){h=a+16|0;f=2;b=2;do{d=c[h>>2]|0;e=d+(f<<4)|0;if(!(c[d+(f<<4)+4>>2]|0)){lb(a,c[e>>2]|0);c[e>>2]=0}else{if((b|0)<(f|0)){d=d+(b<<4)|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2]}b=b+1|0}f=f+1|0}while((f|0)<(c[g>>2]|0));c[g>>2]=b;if((b|0)>=3)return}else c[g>>2]=2;b=a+16|0;d=c[b>>2]|0;e=a+412|0;if((d|0)==(e|0))return;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];c[e+16>>2]=c[d+16>>2];c[e+20>>2]=c[d+20>>2];c[e+24>>2]=c[d+24>>2];c[e+28>>2]=c[d+28>>2];lb(a,d);c[b>>2]=e;return} -function jl(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=Ra;Ra=Ra+48|0;v=x+32|0;t=x+24|0;s=x+16|0;q=x+8|0;p=x;h=c[f>>2]|0;j=c[g+20>>2]|0;if(!j)w=-1e6;else{k=c[h+16>>2]|0;i=0;while(1)if((c[k+(i<<4)+12>>2]|0)==(j|0)){w=i;break}else i=i+1|0}o=c[g+4>>2]|0;l=c[g+24>>2]|0;m=c[l+20>>2]|0;if(!m){i=l+12|0;j=l+16|0}else{j=a[o>>0]|0;if(!(j<<24>>24))i=0;else{i=0;k=o;do{k=k+1|0;i=G(i+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}j=(i>>>0)%((c[l+8>>2]|0)>>>0)|0;i=m+(j<<3)|0;j=m+(j<<3)+4|0}i=c[i>>2]|0;a:do if(!i)j=59292;else{n=d[208+(d[o>>0]|0)>>0]|0;while(1){j=c[j>>2]|0;i=i+-1|0;l=c[j+12>>2]|0;m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)-n|0;if(!(m<<24>>24==0|(k|0)!=0)){m=o;do{l=l+1|0;m=m+1|0;y=a[l>>0]|0;k=(d[208+(y&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(y<<24>>24==0|(k|0)!=0))}if(!k)break a;if(!i){j=59292;break}}}while(0);o=h+16|0;m=c[(c[o>>2]|0)+(w<<4)>>2]|0;l=(w|0)==1;n=l?34855:34585;l=l?14:16;k=c[g>>2]|0;i=c[c[j+8>>2]>>2]|0;do if((a[h+165>>0]|0)==0?(r=f+200|0,(a[r>>0]|0)==0):0){j=c[h+312>>2]|0;if(j){h=$a[j&127](c[h+316>>2]|0,l,k,i,m,c[f+240>>2]|0)|0;if((h|0)==1){cd(f,39216,p);c[f+12>>2]=23;Ra=x;return}if((h|2|0)!=2){cd(f,39231,q);c[f+12>>2]=1;Ra=x;return}if(h|0){Ra=x;return}h=c[f>>2]|0;if(a[h+165>>0]|0)break;if(a[r>>0]|0)break}i=c[h+312>>2]|0;if(i|0){h=$a[i&127](c[h+316>>2]|0,9,n,0,m,c[f+240>>2]|0)|0;if((h|0)==1){cd(f,39216,s);c[f+12>>2]=23;Ra=x;return}if((h|2|0)==2){if(!h)break;Ra=x;return}else{cd(f,39231,t);c[f+12>>2]=1;Ra=x;return}}}while(0);m=f+8|0;h=c[m>>2]|0;if(!h){k=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))u=47;else{Ra=x;return}else{do if((e[k+276>>1]|0)>=224){h=k+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];j=k+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;break b}h=k+296|0;i=c[h>>2]|0;if(!i){h=k+292|0;break}else{c[h>>2]=c[i>>2];j=k+284|0;c[j>>2]=(c[j>>2]|0)+1;j=i;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;u=47}while(0);if((u|0)==47)j=_d(k,224,0)|0;if(!j){Ra=x;return}h=j+104|0;i=h+120|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c[j>>2]=k;h=k+4|0;i=c[h>>2]|0;if(i|0)c[i+4>>2]=j;c[j+8>>2]=i;c[j+4>>2]=0;c[h>>2]=j;c[j+20>>2]=381479589;c[j+12>>2]=f;c[m>>2]=j;Di(j,61,0,1,0)|0;l=j}else l=h;k=c[g>>2]|0;c[v>>2]=c[(c[o>>2]|0)+(w<<4)>>2];c[v+4>>2]=34585;c[v+8>>2]=k;Ak(f,42882,v);k=c[m>>2]|0;h=(c[c[(c[(c[f>>2]|0)+16>>2]|0)+(w<<4)+12>>2]>>2]|0)+1|0;i=k+108|0;j=c[i>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[i>>2]=j+1;y=c[k+104>>2]|0;a[y+(j*20|0)>>0]=95;b[y+(j*20|0)+2>>1]=0;c[y+(j*20|0)+4>>2]=w;c[y+(j*20|0)+8>>2]=1;c[y+(j*20|0)+12>>2]=h;c[y+(j*20|0)+16>>2]=0;a[y+(j*20|0)+1>>0]=0}else Di(k,95,w,1,h)|0;j=c[g>>2]|0;i=l+108|0;h=c[i>>2]|0;if((c[l+112>>2]|0)>(h|0)){c[i>>2]=h+1;y=c[l+104>>2]|0;a[y+(h*20|0)>>0]=-110;b[y+(h*20|0)+2>>1]=0;c[y+(h*20|0)+4>>2]=w;c[y+(h*20|0)+8>>2]=0;c[y+(h*20|0)+12>>2]=0;c[y+(h*20|0)+16>>2]=0;a[y+(h*20|0)+1>>0]=0}else h=Di(l,146,w,0,0)|0;if(a[(c[l>>2]|0)+81>>0]|0){Ra=x;return}if((h|0)<0)h=(c[i>>2]|0)+-1|0;Ei(l,(c[l+104>>2]|0)+(h*20|0)|0,j,0);Ra=x;return}function kl(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+32|0;n=o+8|0;m=o;l=d+8|0;h=c[l>>2]|0;a:do if(!h){k=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))j=15;else{h=0;break a}else{do if((e[k+276>>1]|0)>=224){i=k+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];i=k+284|0;c[i>>2]=(c[i>>2]|0)+1;break b}i=k+296|0;h=c[i>>2]|0;if(!h){h=k+292|0;break}else{c[i>>2]=c[h>>2];i=k+284|0;c[i>>2]=(c[i>>2]|0)+1;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;j=15}while(0);if((j|0)==15)h=_d(k,224,0)|0;if(!h)h=0;else{i=h+104|0;j=i+120|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[h>>2]=k;i=k+4|0;j=c[i>>2]|0;if(j|0)c[j+4>>2]=h;c[h+8>>2]=j;c[h+4>>2]=0;c[i>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=d;c[l>>2]=h;Di(h,61,0,1,0)|0}}while(0);l=d+19|0;i=a[l>>0]|0;if(!(i<<24>>24)){j=d+44|0;k=(c[j>>2]|0)+1|0;c[j>>2]=k}else{k=i+-1<<24>>24;a[l>>0]=k;k=c[d+148+((k&255)<<2)>>2]|0}if((f|0)<2)cd(d,42933,m);i=h+108|0;j=c[i>>2]|0;if((c[h+112>>2]|0)>(j|0)){c[i>>2]=j+1;m=c[h+104>>2]|0;a[m+(j*20|0)>>0]=-120;b[m+(j*20|0)+2>>1]=0;c[m+(j*20|0)+4>>2]=f;c[m+(j*20|0)+8>>2]=k;c[m+(j*20|0)+12>>2]=g;c[m+(j*20|0)+16>>2]=0;a[m+(j*20|0)+1>>0]=0}else Di(h,136,f,k,g)|0;m=c[d+116>>2]|0;a[((m|0)==0?d:m)+21>>0]=1;c[n>>2]=c[(c[(c[d>>2]|0)+16>>2]|0)+(g<<4)>>2];c[n+4>>2]=34585;c[n+8>>2]=f;c[n+12>>2]=k;c[n+16>>2]=k;Ak(d,42948,n);if(!k){Ra=o;return}h=a[l>>0]|0;if((h&255)>=8){Ra=o;return}a[l>>0]=h+1<<24>>24;c[d+148+((h&255)<<2)>>2]=k;Ra=o;return}function ll(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+32|0;g=h;a:do if(!b){b=0;e=1}else{while(1){e=c[b+4>>2]|0;if(!(e&4096))break;if(!(e&262144))b=b+12|0;else b=(c[b+20>>2]|0)+4|0;b=c[b>>2]|0;if(!b){b=0;e=1;break a}}b:while(1){switch(a[b>>0]|0){case 51:{b=b+12|0;break}case 44:{if(ll(c[b+12>>2]|0,d)|0){b=1;break b}b=b+16|0;break}default:{e=0;break a}}b=c[b>>2]|0;if(!b){b=0;e=1;break a}}Ra=h;return b|0}while(0);c[g+4>>2]=145;c[g+8>>2]=0;c[g+12>>2]=0;f=g+20|0;a[f>>0]=0;c[g+24>>2]=d;if(e)b=0;else{_j(g,b)|0;b=a[f>>0]|0}g=b&255;Ra=h;return g|0}function ml(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if(!d)return;if((e|0)<0){g=d;do{d=g+4|0;f=c[d>>2]|0;if(f&1|0)c[d>>2]=f&-2;if(((a[g>>0]|0)==-95?(h=g+20|0,i=c[h>>2]|0,i|0):0)?(c[i>>2]|0)>0:0){d=0;f=i;do{ml(c[f+4+(d*20|0)>>2]|0,e);d=d+1|0;f=c[h>>2]|0}while((d|0)<(c[f>>2]|0))}ml(c[g+12>>2]|0,e);g=c[g+16>>2]|0}while((g|0)!=0);return}g=d;do{d=g+4|0;f=c[d>>2]|0;if(f&1|0?(b[g+36>>1]|0)==(e|0):0)c[d>>2]=f&-2;if(((a[g>>0]|0)==-95?(j=g+20|0,k=c[j>>2]|0,k|0):0)?(c[k>>2]|0)>0:0){d=0;f=k;do{ml(c[f+4+(d*20|0)>>2]|0,e);d=d+1|0;f=c[j>>2]|0}while((d|0)<(c[f>>2]|0))}ml(c[g+12>>2]|0,e);g=c[g+16>>2]|0}while((g|0)!=0);return}function nl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!a){j=0;return j|0}b=0;do{d=c[a+36>>2]|0;if(d){g=c[d+24>>2]|0;b=(g|0)>(b|0)?g:b}d=c[a+44>>2]|0;if(d){g=c[d+24>>2]|0;b=(g|0)>(b|0)?g:b}d=c[a+60>>2]|0;if(d){g=c[d+24>>2]|0;b=(g|0)>(b|0)?g:b}g=c[a>>2]|0;if((g|0)!=0?(h=c[g>>2]|0,(h|0)>0):0){f=0;e=h;while(1){d=c[g+4+(f*20|0)>>2]|0;if(!d)d=e;else{k=c[d+24>>2]|0;d=(k|0)>(b|0);b=d?k:b;d=d?h:e}f=f+1|0;if((f|0)>=(d|0))break;else e=d}}g=c[a+40>>2]|0;if((g|0)!=0?(i=c[g>>2]|0,(i|0)>0):0){f=0;e=i;while(1){d=c[g+4+(f*20|0)>>2]|0;if(!d)d=e;else{k=c[d+24>>2]|0;d=(k|0)>(b|0);b=d?k:b;d=d?i:e}f=f+1|0;if((f|0)>=(d|0))break;else e=d}}g=c[a+48>>2]|0;if((g|0)!=0?(j=c[g>>2]|0,(j|0)>0):0){f=0;e=j;while(1){d=c[g+4+(f*20|0)>>2]|0;if(!d)d=e;else{k=c[d+24>>2]|0;d=(k|0)>(b|0);b=d?k:b;d=d?j:e}f=f+1|0;if((f|0)>=(d|0))break;else e=d}}a=c[a+52>>2]|0}while((a|0)!=0);return b|0}function ol(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=Ra;Ra=Ra+32|0;n=o;if(!f){n=0;Ra=o;return n|0}if(c[e+8>>2]&8192|0){n=0;Ra=o;return n|0}if(c[e+68>>2]|0){n=0;Ra=o;return n|0}if(c[e+60>>2]|0){n=0;Ra=o;return n|0}if((a[f>>0]|0)==44){i=0;do{i=(ol(d,e,c[f+16>>2]|0,g,h)|0)+i|0;f=c[f+12>>2]|0}while((a[f>>0]|0)==44)}else i=0;j=(c[f+4>>2]&1|0)==0;if(!h){if(!j)k=12}else{if(j){n=0;Ra=o;return n|0}if((b[f+36>>1]|0)==(g|0))k=12;else{n=0;Ra=o;return n|0}}if((k|0)==12?(b[f+36>>1]|0)!=(g|0):0){n=0;Ra=o;return n|0}m=n+20|0;a[m>>0]=3;c[n+4>>2]=127;c[n+8>>2]=128;c[n+24>>2]=g;_j(n,f)|0;if(!(a[m>>0]|0)){n=i;Ra=o;return n|0}i=i+1|0;if(!e){n=i;Ra=o;return n|0}h=n+4|0;k=n+8|0;l=n+12|0;m=n+16|0;j=e;do{r=dk(c[d>>2]|0,f,0,0)|0;ml(r,-1);c[n>>2]=d;c[h>>2]=g;c[k>>2]=g;c[l>>2]=0;c[m>>2]=c[j>>2];r=zl(n,r)|0;q=(c[j+8>>2]&8|0)==0;p=j+36|0;e=j+44|0;r=Xk(c[d>>2]|0,c[(q?p:e)>>2]|0,r)|0;c[(q?p:e)>>2]=r;j=c[j+52>>2]|0}while((j|0)!=0);Ra=o;return i|0}function pl(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=Ra;Ra=Ra+16|0;l=w;q=c[f+60>>2]|0;h=f+12|0;if((q|0)==0|(c[h>>2]|0)!=0){Ra=w;return}s=d+44|0;v=(c[s>>2]|0)+1|0;c[s>>2]=v;c[h>>2]=v;t=d+8|0;h=c[t>>2]|0;a:do if(!h){k=c[d>>2]|0;if((c[d+116>>2]|0)==0?(b[k+76>>1]&8)==0:0)a[d+23>>0]=1;b:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))p=16;else{r=0;break a}else{do if((e[k+276>>1]|0)>=224){h=k+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];r=k+284|0;c[r>>2]=(c[r>>2]|0)+1;break b}h=k+296|0;i=c[h>>2]|0;if(!i){h=k+292|0;break}else{c[h>>2]=c[i>>2];r=k+284|0;c[r>>2]=(c[r>>2]|0)+1;break b}}else h=k+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;p=16}while(0);if((p|0)==16)i=_d(k,224,0)|0;if(!i)r=0;else{h=i+104|0;j=h+120|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));c[i>>2]=k;h=k+4|0;j=c[h>>2]|0;if(j|0)c[j+4>>2]=i;c[i+8>>2]=j;c[i+4>>2]=0;c[h>>2]=i;c[i+20>>2]=381479589;c[i+12>>2]=d;c[t>>2]=i;Di(i,61,0,1,0)|0;r=i}}else r=h;while(0);h=q+12|0;do if(!(uk(c[h>>2]|0,l)|0)){h=c[h>>2]|0;do if(h){if((a[h>>0]|0)!=-88){n=Jj(d,h,v)|0;p=67;break}k=c[t>>2]|0;h=c[h+28>>2]|0;i=k+108|0;j=c[i>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[i>>2]=j+1;o=c[k+104>>2]|0;a[o+(j*20|0)>>0]=78;b[o+(j*20|0)+2>>1]=0;c[o+(j*20|0)+4>>2]=h;c[o+(j*20|0)+8>>2]=v;c[o+(j*20|0)+12>>2]=0;c[o+(j*20|0)+16>>2]=0;a[o+(j*20|0)+1>>0]=0;break}else{Di(k,78,h,v,0)|0;break}}else{n=Jj(d,0,v)|0;p=67}while(0);do if(((p|0)==67?(n|0)!=(v|0):0)?(m=c[t>>2]|0,m|0):0){h=m+108|0;i=c[h>>2]|0;if((c[m+112>>2]|0)>(i|0)){c[h>>2]=i+1;p=c[m+104>>2]|0;a[p+(i*20|0)>>0]=79;b[p+(i*20|0)+2>>1]=0;c[p+(i*20|0)+4>>2]=n;c[p+(i*20|0)+8>>2]=v;c[p+(i*20|0)+12>>2]=0;c[p+(i*20|0)+16>>2]=0;a[p+(i*20|0)+1>>0]=0;break}else{Di(m,79,n,v,0)|0;break}}while(0);i=r+108|0;h=c[i>>2]|0;j=r+112|0;if((c[j>>2]|0)>(h|0)){c[i>>2]=h+1;p=c[r+104>>2]|0;a[p+(h*20|0)>>0]=15;b[p+(h*20|0)+2>>1]=0;c[p+(h*20|0)+4>>2]=v;c[p+(h*20|0)+8>>2]=0;c[p+(h*20|0)+12>>2]=0;c[p+(h*20|0)+16>>2]=0;a[p+(h*20|0)+1>>0]=0}else Di(r,15,v,0,0)|0;h=c[i>>2]|0;if((c[j>>2]|0)>(h|0)){c[i>>2]=h+1;p=c[r+104>>2]|0;a[p+(h*20|0)>>0]=20;b[p+(h*20|0)+2>>1]=0;c[p+(h*20|0)+4>>2]=v;c[p+(h*20|0)+8>>2]=g;c[p+(h*20|0)+12>>2]=0;c[p+(h*20|0)+16>>2]=0;a[p+(h*20|0)+1>>0]=0;break}else{Di(r,20,v,g,0)|0;break}}else{h=c[l>>2]|0;j=r+108|0;i=c[j>>2]|0;k=r+112|0;if((c[k>>2]|0)>(i|0)){c[j>>2]=i+1;o=c[r+104>>2]|0;a[o+(i*20|0)>>0]=70;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=h;c[o+(i*20|0)+8>>2]=v;c[o+(i*20|0)+12>>2]=0;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0}else Di(r,70,h,v,0)|0;if(!h){h=c[j>>2]|0;if((c[k>>2]|0)>(h|0)){c[j>>2]=h+1;p=c[r+104>>2]|0;a[p+(h*20|0)>>0]=11;b[p+(h*20|0)+2>>1]=0;c[p+(h*20|0)+4>>2]=0;c[p+(h*20|0)+8>>2]=g;c[p+(h*20|0)+12>>2]=0;c[p+(h*20|0)+16>>2]=0;a[p+(h*20|0)+1>>0]=0;break}else{Di(r,11,0,g,0)|0;break}}if((h|0)>-1){o=f+6|0;n=b[o>>1]|0;i=((h|0)<0)<<31>>31;g=h>>>0<8;if(g)if(h>>>0<2)j=0;else{j=40;l=h;k=i;do{j=(j&65535)+65526|0;l=cw(l|0,k|0,1)|0;k=L()|0}while(k>>>0<0|(k|0)==0&l>>>0<8);k=j&65535;j=l;p=43}else{if(h>>>0>255){j=40;m=h;k=i;do{j=(j&65535)+40|0;p=m;m=bw(m|0,k|0,4)|0;l=k;k=L()|0}while(l>>>0>0|(l|0)==0&p>>>0>4095);l=j&65535;j=m}else{l=40;k=i;j=h}if(k>>>0>0|(k|0)==0&j>>>0>15){do{l=(l&65535)+10&65535;p=j;j=bw(j|0,k|0,1)|0;m=k;k=L()|0}while(m>>>0>0|(m|0)==0&p>>>0>31);k=l;p=43}else{k=l;p=43}}if((p|0)==43)j=(k&65535)+65526+(e[3648+((j&7)<<1)>>1]|0)&65535;if(n<<16>>16>j<<16>>16){if(g)if(h>>>0<2)h=0;else{j=40;do{j=(j&65535)+65526|0;h=cw(h|0,i|0,1)|0;i=L()|0}while(i>>>0<0|(i|0)==0&h>>>0<8);j=j&65535;p=58}else{if(h>>>0>255){j=40;do{j=(j&65535)+40|0;p=h;h=bw(h|0,i|0,4)|0;g=i;i=L()|0}while(g>>>0>0|(g|0)==0&p>>>0>4095);j=j&65535}else j=40;if(i>>>0>0|(i|0)==0&h>>>0>15){do{j=(j&65535)+10&65535;p=h;h=bw(h|0,i|0,1)|0;g=i;i=L()|0}while(g>>>0>0|(g|0)==0&p>>>0>31);p=58}else p=58}if((p|0)==58)h=(j&65535)+65526+(e[3648+((h&7)<<1)>>1]|0)&65535;b[o>>1]=h;p=f+8|0;c[p>>2]=c[p>>2]|16384}}}while(0);h=c[q+16>>2]|0;if(!h){Ra=w;return}l=c[s>>2]|0;m=l+1|0;c[f+16>>2]=m;l=l+2|0;c[s>>2]=l;do if((a[h>>0]|0)==-88){k=c[t>>2]|0;h=c[h+28>>2]|0;i=k+108|0;j=c[i>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[i>>2]=j+1;u=c[k+104>>2]|0;a[u+(j*20|0)>>0]=78;b[u+(j*20|0)+2>>1]=0;c[u+(j*20|0)+4>>2]=h;c[u+(j*20|0)+8>>2]=m;c[u+(j*20|0)+12>>2]=0;c[u+(j*20|0)+16>>2]=0;a[u+(j*20|0)+1>>0]=0;break}else{Di(k,78,h,m,0)|0;break}}else{j=Jj(d,h,m)|0;if((j|0)!=(m|0)?(u=c[t>>2]|0,u|0):0){h=u+108|0;i=c[h>>2]|0;if((c[u+112>>2]|0)>(i|0)){c[h>>2]=i+1;u=c[u+104>>2]|0;a[u+(i*20|0)>>0]=79;b[u+(i*20|0)+2>>1]=0;c[u+(i*20|0)+4>>2]=j;c[u+(i*20|0)+8>>2]=m;c[u+(i*20|0)+12>>2]=0;c[u+(i*20|0)+16>>2]=0;a[u+(i*20|0)+1>>0]=0;break}else{Di(u,79,j,m,0)|0;break}}}while(0);i=r+108|0;h=c[i>>2]|0;j=r+112|0;if((c[j>>2]|0)>(h|0)){c[i>>2]=h+1;u=c[r+104>>2]|0;a[u+(h*20|0)>>0]=15;b[u+(h*20|0)+2>>1]=0;c[u+(h*20|0)+4>>2]=m;c[u+(h*20|0)+8>>2]=0;c[u+(h*20|0)+12>>2]=0;c[u+(h*20|0)+16>>2]=0;a[u+(h*20|0)+1>>0]=0}else Di(r,15,m,0,0)|0;h=c[i>>2]|0;if((c[j>>2]|0)>(h|0)){c[i>>2]=h+1;u=c[r+104>>2]|0;a[u+(h*20|0)>>0]=-104;b[u+(h*20|0)+2>>1]=0;c[u+(h*20|0)+4>>2]=v;c[u+(h*20|0)+8>>2]=l;c[u+(h*20|0)+12>>2]=m;c[u+(h*20|0)+16>>2]=0;a[u+(h*20|0)+1>>0]=0;Ra=w;return}else{Di(r,152,v,l,m)|0;Ra=w;return}}function ql(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0;Ba=Ra;Ra=Ra+176|0;xa=Ba+40|0;ja=Ba+32|0;V=Ba+24|0;y=Ba+16|0;q=Ba+8|0;m=Ba;va=Ba+80|0;U=Ba+48|0;wa=f+8|0;ua=c[wa>>2]|0;Aa=c[f>>2]|0;c[U>>2]=0;c[U+4>>2]=0;c[U+8>>2]=0;c[U+12>>2]=0;c[U+16>>2]=0;c[U+20>>2]=0;c[U+24>>2]=0;if(!i)I=0;else I=(c[i>>2]|0)>63?0:i;$=U+8|0;c[$>>2]=I;_=Aa+76|0;ta=(b[_>>1]&16)==0?k:k&-257;i=c[g>>2]|0;if((i|0)>64){c[m>>2]=64;cd(f,43479,m);Aa=0;Ra=Ba;return Aa|0}da=ta&65535;ia=da&32;ea=(ia|0)!=0;o=ea?1:i;n=o*80|0;p=n+759&-16;m=p+72|0;a:do if(c[Aa+272>>2]|0)if(!(a[Aa+81>>0]|0))ka=15;else i=0;else{do if(!(0<0|(0==0?(e[Aa+276>>1]|0)>>>0>>0:0))){k=Aa+300|0;i=c[k>>2]|0;if(i|0){c[k>>2]=c[i>>2];za=Aa+284|0;c[za>>2]=(c[za>>2]|0)+1;break a}k=Aa+296|0;i=c[k>>2]|0;if(!i){i=Aa+292|0;break}else{c[k>>2]=c[i>>2];za=Aa+284|0;c[za>>2]=(c[za>>2]|0)+1;break a}}else i=Aa+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;ka=15}while(0);if((ka|0)==15)i=_d(Aa,m,0)|0;ra=Aa+81|0;if(a[ra>>0]|0){if(!i){Aa=0;Ra=Ba;return Aa|0}if(c[Aa+480>>2]|0){Xd(Aa,i);Aa=0;Ra=Ba;return Aa|0}za=i;if((c[Aa+304>>2]|0)>>>0<=za>>>0?(c[Aa+308>>2]|0)>>>0>za>>>0:0){Aa=Aa+300|0;c[i>>2]=c[Aa>>2];c[Aa>>2]=i;Aa=0;Ra=Ba;return Aa|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);Aa=0;Ra=Ba;return Aa|0}else{Aa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);Aa=0;Ra=Ba;return Aa|0}}c[i>>2]=f;ca=i+4|0;c[ca>>2]=g;X=i+8|0;c[X>>2]=I;c[i+16>>2]=h;c[i+12>>2]=j;ga=i+24|0;ha=i+28|0;c[ha>>2]=-1;c[ga>>2]=-1;za=i+46|0;a[za>>0]=o;sa=f+56|0;fa=(c[sa>>2]|0)+-1|0;c[sa>>2]=fa;na=i+32|0;c[na>>2]=fa;z=i+36|0;c[z>>2]=fa;fa=i+44|0;b[fa>>1]=ta;b[i+20>>1]=l;oa=f+132|0;pa=i+40|0;c[pa>>2]=c[oa>>2];k=i+47|0;A=k;B=A+33|0;do{a[A>>0]=0;A=A+1|0}while((A|0)<(B|0));qa=i+752|0;gw(qa|0,0,n+72|0)|0;aa=i+488|0;c[U>>2]=i;ya=i+80|0;ba=U+4|0;c[ba>>2]=ya;u=i+p|0;O=U+12|0;c[O>>2]=u;c[u+48>>2]=u+56;b[u+40>>1]=0;b[u+44>>1]=3;c[u+36>>2]=0;u=i+492|0;c[u>>2]=0;c[ya>>2]=i;a[i+89>>0]=0;c[i+84>>2]=0;la=i+92|0;c[la>>2]=0;c[i+96>>2]=8;ma=i+100|0;c[ma>>2]=i+104;Il(ya,h,44);v=(o|0)==0;if(v){if(I|0)a[k>>0]=c[I>>2];if(da&256|0)a[i+51>>0]=1;nk(f,0,43507,q)}else{q=0;do{r=g+8+(q*72|0)+40|0;K=c[r>>2]|0;T=c[u>>2]|0;c[u>>2]=T+1;c[aa+8+(T<<2)>>2]=K;b:do if((a[g+8+(q*72|0)+37>>0]&4?(w=c[g+8+(q*72|0)+16>>2]|0,x=c[g+8+(q*72|0)+64>>2]|0,x|0):0)?(c[x>>2]|0)>0:0){s=w+42|0;t=w+4|0;m=0;h=0;c:while(1){n=b[s>>1]|0;if((m|0)>=(n|0))break;p=c[t>>2]|0;while(1){if(a[p+(m<<4)+15>>0]&2)break;k=m+1|0;if((k|0)<(n|0))m=k;else break c}p=c[f>>2]|0;d:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))ka=52;else break b;else{do if((e[p+276>>1]|0)>=52){k=p+300|0;n=c[k>>2]|0;if(n|0){c[k>>2]=c[n>>2];T=p+284|0;c[T>>2]=(c[T>>2]|0)+1;break d}k=p+296|0;n=c[k>>2]|0;if(!n){k=p+292|0;break}else{c[k>>2]=c[n>>2];T=p+284|0;c[T>>2]=(c[T>>2]|0)+1;break d}}else k=p+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;ka=52}while(0);if((ka|0)==52){ka=0;n=_d(p,52,0)|0}if(!n)break b;A=n;B=A+52|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));a[n>>0]=-94;b[n+34>>1]=-1;c[n+24>>2]=1;c[n+28>>2]=c[r>>2];b[n+32>>1]=m;c[n+44>>2]=w;k=c[x+4+(h*20|0)>>2]|0;if(!k)k=0;else k=dk(c[f>>2]|0,k,0,0)|0;Ml(ya,ej(f,53,n,ej(f,166,k,0)|0)|0,1)|0;k=h+1|0;if((k|0)<(c[x>>2]|0)){m=m+1|0;h=k}else break b}c[y>>2]=c[w>>2];c[y+4>>2]=h;cd(f,43525,y)}while(0);q=q+1|0}while((q|0)<(c[g>>2]|0))}k=c[la>>2]|0;if((k|0)>0)do{T=k;k=k+-1|0;Nl(g,ya,k)}while((T|0)>1);e:do if(!(a[ra>>0]|0)){f:do if((c[i+92>>2]|0)>0){h=va+20|0;q=va+4|0;r=va+8|0;if(v){p=0;k=ya;while(1){m=c[k+20>>2]|0;n=m+(p*48|0)+10|0;if((b[n>>1]&2)==0?(T=m+(p*48|0)+40|0,(c[T>>2]|0)==0&(c[T+4>>2]|0)==0):0){Tj(f,c[m+(p*48|0)>>2]|0,c[z>>2]|0,16);b[n>>1]=b[n>>1]|4;k=c[ba>>2]|0}p=p+1|0;if((p|0)>=(c[k+12>>2]|0))break f}}p=0;k=ya;do{k=c[k+20>>2]|0;n=k+(p*48|0)+10|0;do if((b[n>>1]&2)==0?(T=k+(p*48|0)+40|0,(c[T>>2]|0)==0&(c[T+4>>2]|0)==0):0){k=k+(p*48|0)|0;m=c[k>>2]|0;c[va>>2]=0;c[va+4>>2]=0;c[va+8>>2]=0;c[va+12>>2]=0;c[va+16>>2]=0;c[va+20>>2]=0;c[va+24>>2]=0;a[h>>0]=1;c[q>>2]=146;c[r>>2]=128;if(m){_j(va,m)|0;if(!(a[h>>0]|0))break}Tj(f,c[k>>2]|0,c[z>>2]|0,16);b[n>>1]=b[n>>1]|4}while(0);p=p+1|0;k=c[ba>>2]|0}while((p|0)<(c[k+12>>2]|0))}while(0);T=(da&256|0)==0;g:do if(!T){h:do if((c[g>>2]|0)==1){H=c[g+48>>2]|0;p=c[g+24>>2]|0;h=c[j>>2]|0;i:do if((h|0)>0){n=0;while(1){k=c[j+4+(n*20|0)>>2]|0;j:do if(!k)k=0;else while(1){m=c[k+4>>2]|0;if(!(m&4096))break j;if(!(m&262144))k=k+12|0;else k=(c[k+20>>2]|0)+4|0;k=c[k>>2]|0;if(!k){k=0;break}}while(0);if(((a[k>>0]|0)==-94?(c[k+28>>2]|0)==(H|0):0)?(b[k+32>>1]|0)<0:0)break i;n=n+1|0;if((n|0)>=(h|0)){ka=92;break}}}else ka=92;while(0);k:do if((ka|0)==92){k=c[p+8>>2]|0;if(!k)break h;x=va+4|0;y=va+12|0;z=va+16|0;A=va+8|0;B=va+20|0;C=va+24|0;D=va+28|0;E=va+17|0;F=va+18|0;G=va+72|0;while(1){if(a[k+54>>0]|0){w=k+50|0;l:do if(!(b[w>>1]|0))m=0;else{s=k+4|0;t=k+40|0;u=k+32|0;v=k+12|0;m=0;do{c[va>>2]=ya;c[x>>2]=ya;c[y>>2]=0;a[z>>0]=0;c[A>>2]=0;c[B>>2]=2;c[C>>2]=0;c[D>>2]=H;a[E>>0]=1;a[F>>0]=1;p=b[(c[s>>2]|0)+(m<<1)>>1]|0;n=p<<16>>16;if(p<<16>>16==-2){c[y>>2]=c[(c[t>>2]|0)+4+(m*20|0)>>2];c[A>>2]=c[(c[u>>2]|0)+(m<<2)>>2];b[G>>1]=-2;n=Ul(va)|0}else{h=c[v>>2]|0;do if(p<<16>>16==(b[h+40>>1]|0))n=-1;else{if(p<<16>>16<=-1)break;a[z>>0]=a[(c[h+4>>2]|0)+(n<<4)+13>>0]|0;c[A>>2]=c[(c[u>>2]|0)+(m<<2)>>2]}while(0);b[G>>1]=n;n=Tl(va)|0}do if(n){p=0;while(1){ka=n+32|0;if((c[ka>>2]|0)==0&(c[ka+4>>2]|0)==0){if(b[n+12>>1]&2){ka=108;break}p=(p|0)==0?n:p}n=Tl(va)|0;if(!n){ka=111;break}}if((ka|0)==108){ka=0;break}else if((ka|0)==111){ka=0;if(!p){ka=112;break}else break}}else ka=112;while(0);if((ka|0)==112){r=c[(c[u>>2]|0)+(m<<2)>>2]|0;if((c[j>>2]|0)<=0)break l;q=0;m:while(1){h=c[j+4+(q*20|0)>>2]|0;n:do if(!h)n=0;else{n=h;while(1){p=c[n+4>>2]|0;if(!(p&4096))break n;if(!(p&262144))n=n+12|0;else n=(c[n+20>>2]|0)+4|0;n=c[n>>2]|0;if(!n){n=0;break}}}while(0);do if((a[n>>0]|0)==-94){if((b[n+32>>1]|0)!=(b[(c[s>>2]|0)+(m<<1)>>1]|0))break;if((c[n+28>>2]|0)!=(H|0))break;n=Yi(f,h)|0;if(!n)n=c[(c[f>>2]|0)+8>>2]|0;p=c[n>>2]|0;ka=a[p>>0]|0;n=(d[208+(ka&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0;if(!(ka<<24>>24==0|(n|0)!=0)){h=r;do{p=p+1|0;h=h+1|0;ka=a[p>>0]|0;n=(d[208+(ka&255)>>0]|0)-(d[208+(d[h>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(n|0)!=0))}if(!n)break m}while(0);q=q+1|0;if((q|0)>=(c[j>>2]|0))break l}n=b[(c[s>>2]|0)+(m<<1)>>1]|0;if(n<<16>>16>-1)n=d[(c[(c[v>>2]|0)+4>>2]|0)+(n<<16>>16<<4)+12>>0]|0;else n=n<<16>>16==-1&1;if(!n)break l}m=m+1|0}while(m>>>0<(e[w>>1]|0)>>>0)}while(0);if((m|0)==(e[w>>1]|0))break k}k=c[k+20>>2]|0;if(!k)break h}}while(0);a[i+51>>0]=1;break g}while(0);if(!I){b[fa>>1]=b[fa>>1]|128;c[X>>2]=j}}while(0);if((((o|0)==1?(R=c[U>>2]|0,P=c[O>>2]|0,S=R+44|0,(b[S>>1]&32)==0):0)?(Q=c[R+4>>2]|0,M=c[Q+24>>2]|0,(c[M+56>>2]|0)==0):0)?(a[Q+45>>0]&2)==0:0){I=c[Q+48>>2]|0;J=R+80|0;K=P+36|0;c[K>>2]=0;b[P+42>>1]=0;c[va>>2]=J;c[va+4>>2]=J;c[va+12>>2]=0;a[va+16>>0]=0;c[va+8>>2]=0;c[va+20>>2]=130;c[va+24>>2]=0;c[va+28>>2]=I;a[va+17>>0]=1;a[va+18>>0]=1;b[va+72>>1]=-1;m=Tl(va)|0;do if(!m)ka=154;else{k=0;while(1){ka=m+32|0;if((c[ka>>2]|0)==0&(c[ka+4>>2]|0)==0?b[m+12>>1]&130:0){ka=150;break}k=(k|0)==0?m:k;m=Tl(va)|0;if(!m){ka=152;break}}if((ka|0)==150)k=m;else if((ka|0)==152)if(!k){ka=154;break}c[K>>2]=4353;c[c[P+48>>2]>>2]=k;b[P+40>>1]=1;b[P+24>>1]=1;b[P+20>>1]=33}while(0);o:do if((ka|0)==154?(N=c[M+8>>2]|0,N|0):0){x=va+4|0;y=va+12|0;z=va+16|0;A=va+8|0;B=va+20|0;C=va+24|0;D=va+28|0;E=va+17|0;F=va+18|0;G=va+72|0;H=P+48|0;k=N;p:while(1){do if(a[k+54>>0]|0){if(c[k+36>>2]|0)break;w=k+50|0;m=b[w>>1]|0;if((m&65535)>3)break;u=k+55|0;u=(d[u>>0]|d[u+1>>0]<<8)<<4&128|2;v=u&65535;q:do if(!(m<<16>>16))m=0;else{q=k+4|0;r=k+40|0;s=k+32|0;t=k+12|0;m=0;while(1){c[va>>2]=J;c[x>>2]=J;c[y>>2]=0;a[z>>0]=0;c[A>>2]=0;c[B>>2]=v;c[C>>2]=0;c[D>>2]=I;a[E>>0]=1;a[F>>0]=1;p=b[(c[q>>2]|0)+(m<<1)>>1]|0;n=p<<16>>16;if(p<<16>>16==-2){c[y>>2]=c[(c[r>>2]|0)+4+(m*20|0)>>2];c[A>>2]=c[(c[s>>2]|0)+(m<<2)>>2];b[G>>1]=-2;p=Ul(va)|0}else{h=c[t>>2]|0;do if(p<<16>>16==(b[h+40>>1]|0))n=-1;else{if(p<<16>>16<=-1)break;a[z>>0]=a[(c[h+4>>2]|0)+(n<<4)+13>>0]|0;c[A>>2]=c[(c[s>>2]|0)+(m<<2)>>2]}while(0);b[G>>1]=n;p=Tl(va)|0}if(!p)break;n=0;while(1){ka=p+32|0;if((c[ka>>2]|0)==0&(c[ka+4>>2]|0)==0?(b[p+12>>1]&u)<<16>>16:0){ka=172;break}n=(n|0)==0?p:n;p=Tl(va)|0;if(!p){ka=174;break}}if((ka|0)==172)n=p;else if((ka|0)==174)if(!n)break q;c[(c[H>>2]|0)+(m<<2)>>2]=n;m=m+1|0;if(m>>>0>=(e[w>>1]|0)>>>0)break q}}while(0);if((m|0)==(e[w>>1]|0))break p}while(0);k=c[k+20>>2]|0;if(!k)break o}ka=k+55|0;c[K>>2]=4609;if(!(((d[ka>>0]|d[ka+1>>0]<<8)&32)==0?(ka=Q+64|0,Q=k+64|0,!((c[Q>>2]&c[ka>>2]|0)==0?(c[Q+4>>2]&c[ka+4>>2]|0)==0:0)):0))c[K>>2]=4673;ka=m&65535;b[P+40>>1]=ka;b[P+24>>1]=ka;c[P+32>>2]=k;b[P+20>>1]=39}while(0);if(c[K>>2]|0){b[P+22>>1]=1;c[R+816>>2]=P;k=P+8|0;c[k>>2]=1;c[k+4>>2]=0;c[R+756>>2]=I;b[R+72>>1]=1;k=c[R+8>>2]|0;if(k|0)a[R+47>>0]=c[k>>2];if(!(b[S>>1]&256))ka=264;else{a[R+51>>0]=1;ka=264}}else ka=187}else ka=187;if((ka|0)==187){E=c[U>>2]|0;k=c[E+4>>2]|0;S=a[E+46>>0]|0;F=k+8+((S&255)*72|0)|0;H=c[c[E>>2]>>2]|0;G=c[O>>2]|0;I=G+56|0;J=G+48|0;c[J>>2]=I;K=G+40|0;b[K>>1]=0;M=G+44|0;b[M>>1]=3;N=G+36|0;c[N>>2]=0;z=U+24|0;c[z>>2]=2e4;do if(S<<24>>24){A=G+16|0;B=E+492|0;C=G+8|0;D=H+81|0;s=0;y=0;m=k+8|0;p=2e4;r=0;n=0;q=0;x=0;r:while(1){a[A>>0]=y;c[z>>2]=p+1e3;p=c[m+40>>2]|0;t=c[B>>2]|0;h=(t|0)>0;s:do if(h){k=0;while(1){if((c[E+496+(k<<2)>>2]|0)==(p|0))break;k=k+1|0;if((k|0)>=(t|0)){k=0;p=0;break s}}k=cw(1,0,k|0)|0;p=L()|0}else{k=0;p=0}while(0);u=C;c[u>>2]=k;c[u+4>>2]=p;u=a[m+36>>0]|0;w=((u|s)&10)==0;v=w?r:n;w=w?q:x;if(!(c[(c[m+16>>2]|0)+56>>2]|0)){k=Xl(U,v,w)|0;h=0;p=0}else{k=m+72|0;if(k>>>0>=F>>>0|h^1){h=0;p=0}else{q=m;h=0;p=0;while(1){if((h|0)==0&(p|0)==0?(a[q+108>>0]&10)==0:0){h=0;p=0}else{r=c[q+112>>2]|0;q=0;while(1){if((c[E+496+(q<<2)>>2]|0)==(r|0)){ka=202;break}q=q+1|0;if((q|0)>=(t|0)){q=0;r=0;break}}if((ka|0)==202){ka=0;q=cw(1,0,q|0)|0;r=L()|0}h=q|h;p=r|p}q=k+72|0;if(q>>>0>>0){S=k;k=q;q=S}else break}}k=Wl(U,v,w,h,p)|0}do if(!k)if(!(a[(c[ba>>2]|0)+9>>0]|0)){k=C;n=c[k>>2]|n;k=c[k+4>>2]|x;ka=212;break}else{k=Yl(U,v,w,h,p)|0;ka=211;break}else ka=211;while(0);t:do if((ka|0)==211){ka=0;p=C;n=c[p>>2]|n;p=c[p+4>>2]|x;switch(k|0){case 0:{k=p;ka=212;break t}case 101:break;default:break r}Db(28,43626,V);k=p}while(0);if((ka|0)==212){ka=0;if(a[D>>0]|0){k=0;break}}m=m+72|0;if(m>>>0>=F>>>0){k=0;break}s=u;y=y+1|0;p=c[z>>2]|0;r=v;q=w;x=k}m=c[J>>2]|0;if((m|0)!=(I|0)){if(H|0){if(c[H+480>>2]|0){Xd(H,m);p=k;break}V=m;if((c[H+304>>2]|0)>>>0<=V>>>0?(c[H+308>>2]|0)>>>0>V>>>0:0){p=H+300|0;c[m>>2]=c[p>>2];c[p>>2]=m;p=k;break}}if(m)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);p=k;break}else{p=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);p=k;break}else p=k}else p=k}else p=0;while(0);k=c[N>>2]|0;do if(k&17408|0){if(k&1024|0?(Y=G+28|0,a[Y>>0]|0):0){k=G+32|0;m=c[k>>2]|0;do if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{Z=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);a[Y>>0]=0;c[k>>2]=0;break}if(k&16384|0?(Z=G+32|0,W=c[Z>>2]|0,W|0):0){k=c[W+16>>2]|0;u:do if(k){do if(H|0){m=H+480|0;if(!(c[m>>2]|0)){n=k;if((c[H+304>>2]|0)>>>0>n>>>0)break;if((c[H+308>>2]|0)>>>0<=n>>>0)break;ka=H+300|0;c[k>>2]=c[ka>>2];c[ka>>2]=k}else Xd(H,k);k=c[Z>>2]|0;ka=250;break u}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);ka=248;break}else{ka=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-ka;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);ka=248;break}}else ka=248;while(0);do if((ka|0)==248){k=c[Z>>2]|0;if(!H){ka=255;break}m=H+480|0;ka=250}while(0);do if((ka|0)==250){if(c[m>>2]|0){Xd(H,k);break}m=k;if((c[H+304>>2]|0)>>>0>m>>>0){ka=255;break}if((c[H+308>>2]|0)>>>0<=m>>>0){ka=255;break}Y=H+300|0;c[k>>2]=c[Y>>2];c[Y>>2]=k}while(0);do if((ka|0)==255){if(!k)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Y=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[Z>>2]=0}}while(0);c[J>>2]=I;b[K>>1]=0;b[M>>1]=3;c[N>>2]=0;if(p|0){ka=625;break}Jl(i,0);if(a[ra>>0]|0){ka=625;break}if(c[X>>2]|0){Jl(i,(e[i+72>>1]|0)+1&65535);if(!(a[ra>>0]|0))ka=264;else break}else ka=265}if((ka|0)==264?(c[X>>2]|0)==0:0)ka=265;if((ka|0)==265?!(0==0?(c[Aa+32>>2]&4096|0)==0:0):0){Z=i+64|0;c[Z>>2]=-1;c[Z+4>>2]=-1}if((c[f+36>>2]|0)==0?(a[ra>>0]|0)==0:0){v:do if((j|0)!=0&(d[za>>0]|0)>1?(b[_>>1]&256)==0:0){k=c[j>>2]|0;if((k|0)>0){q=0;h=0;n=0;while(1){m=c[j+4+(q*20|0)>>2]|0;if(!m){m=0;p=0}else{m=Pl(aa,m)|0;p=L()|0;k=c[j>>2]|0}m=m|h;n=p|n;q=q+1|0;if((q|0)>=(k|0)){t=m;s=n;break}else h=m}}else{t=0;s=0}r=c[$>>2]|0;if(!r)A=t;else{k=c[r>>2]|0;if((k|0)>0){q=0;h=k;m=0;k=0;do{n=c[r+4+(q*20|0)>>2]|0;if(!n){n=0;p=0}else{n=Pl(aa,n)|0;p=L()|0;h=c[r>>2]|0}m=n|m;k=p|k;q=q+1|0}while((q|0)<(h|0))}else{m=0;k=0}s=k|s;A=m|t}k=a[za>>0]|0;m=k&255;n=m+-1|0;if((k&255)>1){if(!T){z=n;x=-1;n=-1;while(1){y=qa+(z*80|0)|0;p=c[qa+(z*80|0)+64>>2]|0;h=c[ca>>2]|0;q=d[p+16>>0]|0;w:do if(!(a[h+8+(q*72|0)+36>>0]&8))m=x;else{w=p+8|0;u=c[w>>2]|0;w=c[w+4>>2]|0;if(!((u&A|0)==0&(w&s|0)==0)){m=x;break}t=c[ba>>2]|0;r=c[t+20>>2]|0;t=c[t+12>>2]|0;v=r+(t*48|0)|0;t=(t|0)>0;do if(t){h=h+8+(q*72|0)+40|0;p=r;do{aa=p+40|0;if(!((c[aa>>2]&u|0)==0?(c[aa+4>>2]&w|0)==0:0)){q=c[p>>2]|0;if(!(c[q+4>>2]&1)){m=x;break w}if((c[h>>2]|0)!=(b[q+36>>1]|0)){m=x;break w}}p=p+48|0}while(p>>>0>>0);h=x&~u;p=n&~w;if(!t)break;n=r;do{aa=n+40|0;if(!((c[aa>>2]&u|0)==0?(c[aa+4>>2]&w|0)==0:0)){aa=n+10|0;b[aa>>1]=b[aa>>1]|4}n=n+48|0}while(n>>>0>>0)}else{h=x&~u;p=n&~w}while(0);n=(k&255)+-1|0;if((n|0)!=(z|0)){fw(y|0,qa+(m*80|0)|0,(n-z|0)*80|0)|0;k=a[za>>0]|0}k=k+-1<<24>>24;a[za>>0]=k;o=o+-1|0;m=h;n=p}while(0);if((z|0)>1){aa=z;z=z+-1|0;x=m;m=aa}else{ba=o;J=m;I=n;break v}}}z=n;x=-1;n=-1;while(1){y=qa+(z*80|0)|0;p=c[qa+(z*80|0)+64>>2]|0;h=c[ca>>2]|0;q=d[p+16>>0]|0;x:do if(!(a[h+8+(q*72|0)+36>>0]&8))m=x;else{if(!(c[p+36>>2]&4096)){m=x;break}w=p+8|0;v=c[w>>2]|0;w=c[w+4>>2]|0;if(!((v&A|0)==0&(w&s|0)==0)){m=x;break}t=c[ba>>2]|0;r=c[t+20>>2]|0;t=c[t+12>>2]|0;u=r+(t*48|0)|0;t=(t|0)>0;do if(t){q=h+8+(q*72|0)+40|0;p=r;do{aa=p+40|0;if(!((c[aa>>2]&v|0)==0?(c[aa+4>>2]&w|0)==0:0)){h=c[p>>2]|0;if(!(c[h+4>>2]&1)){m=x;break x}if((c[q>>2]|0)!=(b[h+36>>1]|0)){m=x;break x}}p=p+48|0}while(p>>>0>>0);h=x&~v;p=n&~w;if(!t)break;n=r;do{aa=n+40|0;if(!((c[aa>>2]&v|0)==0?(c[aa+4>>2]&w|0)==0:0)){aa=n+10|0;b[aa>>1]=b[aa>>1]|4}n=n+48|0}while(n>>>0>>0)}else{h=x&~v;p=n&~w}while(0);n=(k&255)+-1|0;if((n|0)!=(z|0)){fw(y|0,qa+(m*80|0)|0,(n-z|0)*80|0)|0;k=a[za>>0]|0}k=k+-1<<24>>24;a[za>>0]=k;o=o+-1|0;m=h;n=p}while(0);if((z|0)>1){aa=z;z=z+-1|0;x=m;m=aa}else{ba=o;J=m;I=n;break}}}else{ba=o;J=-1;I=-1}}else{ba=o;J=-1;I=-1}while(0);ca=(c[i>>2]|0)+132|0;c[ca>>2]=(c[ca>>2]|0)+(b[i+72>>1]|0);do if(da&4){m=(c[i+816>>2]|0)+36|0;n=c[m>>2]|0;o=n&4096;if(!o){if(!(da&8)){D=0;break}k=c[g+24>>2]|0;if(c[k+56>>2]|0){D=0;break}if((da&16|0)==0&(n&8192|0)!=0){D=0;break}}else k=c[g+24>>2]|0;a[i+49>>0]=2-(o>>>12);if(!((n&64|0)==0?1:(c[k+36>>2]&32|0)!=0)){c[m>>2]=n&-65;D=ta&8}else D=0}else D=0;while(0);H=(ba|0)>0;if(H){E=Aa+16|0;F=f+116|0;G=i+49|0;w=ea^1;x=ua+108|0;y=ua+112|0;C=(l|0)==0|w;z=ua+104|0;A=f+40|0;B=i+51|0;u=qa;v=0;while(1){p=d[u+44>>0]|0;s=g+8+(p*72|0)+16|0;o=c[s>>2]|0;m=c[o+72>>2]|0;if(!m)t=-1e6;else{n=c[E>>2]|0;k=0;while(1)if((c[n+(k<<4)+12>>2]|0)==(m|0)){t=k;break}else k=k+1|0}q=c[u+64>>2]|0;r=o+36|0;do if(!(c[r>>2]&2)){if(c[o+12>>2]|0)break;k=c[q+36>>2]|0;if(k&1024|0){k=c[o+64>>2]|0;y:do if(!k)o=0;else while(1){if((c[k>>2]|0)==(Aa|0)){o=k;break y}k=c[k+24>>2]|0;if(!k){o=0;break}}while(0);m=c[g+8+(p*72|0)+40>>2]|0;k=c[x>>2]|0;if((c[y>>2]|0)>(k|0)){c[x>>2]=k+1;ea=c[z>>2]|0;a[ea+(k*20|0)>>0]=-93;b[ea+(k*20|0)+2>>1]=0;c[ea+(k*20|0)+4>>2]=m;c[ea+(k*20|0)+8>>2]=0;c[ea+(k*20|0)+12>>2]=0;c[ea+(k*20|0)+16>>2]=0;a[ea+(k*20|0)+1>>0]=0}else k=Di(ua,163,m,0,0)|0;if(a[(c[ua>>2]|0)+81>>0]|0)break;if((k|0)<0)k=(c[x>>2]|0)+-1|0;m=c[z>>2]|0;n=m+(k*20|0)+1|0;if(a[n>>0]|0){Ei(ua,m+(k*20|0)|0,o,-12);break}if(!o)break;c[m+(k*20|0)+16>>2]=o;a[n>>0]=-12;ea=o+12|0;c[ea>>2]=(c[ea>>2]|0)+1;break}if(c[o+56>>2]|0)break;if(k&64|ia|0){Hj(f,t,c[o+28>>2]|0,0,c[o>>2]|0);break}m=g+8+(p*72|0)+40|0;if(!(a[G>>0]|0))k=108;else{c[ga>>2]=c[m>>2];k=109}Gj(f,c[m>>2]|0,t,o,k);do if(!(a[G>>0]|0)){if((b[o+42>>1]|0)>=64)break;if(c[r>>2]&32|0)break;n=g+8+(p*72|0)+56|0;k=c[n>>2]|0;n=c[n+4>>2]|0;if((k|0)==0&(n|0)==0)m=0;else{m=0;do{k=bw(k|0,n|0,1)|0;n=L()|0;m=m+1|0}while(!((k|0)==0&(n|0)==0))}if(a[(c[ua>>2]|0)+81>>0]|0)break;k=(c[x>>2]|0)+-1|0;n=c[z>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=m;a[o>>0]=-3;break}else{Ei(ua,n+(k*20|0)|0,m,-3);break}}while(0);k=c[x>>2]|0;if((k|0)<=0)break;b[(c[z>>2]|0)+((k+-1|0)*20|0)+2>>1]=D}while(0);h=q+36|0;z:do if(c[h>>2]&512|0){p=c[q+32>>2]|0;do if(c[r>>2]&32|0){ea=p+55|0;if(((d[ea>>0]|d[ea+1>>0]<<8)&3)!=2|w)break;c[u+8>>2]=c[u+4>>2];break z}while(0);do if(!(a[G>>0]|0)){if(!C){o=106;k=l;break}k=c[A>>2]|0;c[A>>2]=k+1;o=108}else{k=c[(c[s>>2]|0)+8>>2]|0;if((k|0)==0|(k|0)==(p|0))k=l;else{m=l;do{m=m+1|0;k=c[k+20>>2]|0}while(!((k|0)==0|(k|0)==(p|0)));k=m}c[ha>>2]=k;o=109}while(0);c[u+8>>2]=k;m=c[p+44>>2]|0;n=c[x>>2]|0;if((c[y>>2]|0)>(n|0)){c[x>>2]=n+1;ea=c[z>>2]|0;a[ea+(n*20|0)>>0]=o;b[ea+(n*20|0)+2>>1]=0;c[ea+(n*20|0)+4>>2]=k;c[ea+(n*20|0)+8>>2]=m;c[ea+(n*20|0)+12>>2]=t;c[ea+(n*20|0)+16>>2]=0;a[ea+(n*20|0)+1>>0]=0}else Di(ua,o,k,m,t)|0;m=c[wa>>2]|0;n=Ij(f,p)|0;A:do if(n|0){k=c[m>>2]|0;if(!(a[k+81>>0]|0)){da=c[m+104>>2]|0;ea=(c[m+108>>2]|0)+-1|0;a[da+(ea*20|0)+1>>0]=-9;c[da+(ea*20|0)+16>>2]=n;break}if(c[k+480>>2]|0)break;ea=(c[n>>2]|0)+-1|0;c[n>>2]=ea;if(ea|0)break;k=c[n+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,n);break A}m=n;if((c[k+304>>2]|0)>>>0>m>>>0)break;if((c[k+308>>2]|0)>>>0<=m>>>0)break;ea=k+300|0;c[n>>2]=c[ea>>2];c[ea>>2]=n;break A}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{ea=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-ea;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);ea=c[h>>2]|0;if(!((ea&15|0)!=0&(ea&32770|0)==0))break;if(b[fa>>1]&1)break;if((a[B>>0]|0)==2)break;k=c[x>>2]|0;if((k|0)<=0)break;b[(c[z>>2]|0)+((k+-1|0)*20|0)+2>>1]=2}while(0);B:do if((t|0)>-1){o=c[F>>2]|0;o=(o|0)==0?f:o;k=o+84|0;m=c[k>>2]|0;n=1<>2]=m|n;if((t|0)!=1)break;r=c[o>>2]|0;k=r+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;m=Pe(c[r>>2]|0,0,r,va,0,542)|0;if(m|0){cd(o,32157,ja);c[o+12>>2]=m;break}ea=c[va>>2]|0;c[(c[k>>2]|0)+20>>2]=ea;k=c[r+92>>2]|0;o=c[ea+4>>2]|0;c[o+4>>2]=c[ea>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;h=o+36|0;q=(c[p>>2]|0)-(c[h>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[p>>2]=k;n=o+80|0;k=c[n>>2]|0;if(!k)break;m=k+-4|0;c[n>>2]=m;k=m;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;ea=(c[14820]|0)+1|0;c[14820]=ea;c[14821]=(ea|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](m)|0;ka=421;break}else{k=Wa[c[29352>>2]&127](m)|0;ka=421}while(0);do if((ka|0)==421){ka=0;c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{ea=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-ea;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);ea=Se(c[o>>2]|0,p,q)|0;c[h>>2]=(c[p>>2]|0)-(q&65535);if((ea|0)!=7)break;k=r+81|0;do if(!(a[k>>0]|0)){if(a[r+82>>0]|0)break;a[k>>0]=1;if((c[r+180>>2]|0)>0)c[r+264>>2]=1;k=r+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[r+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break B}while(0)}while(0);v=v+1|0;if((v|0)==(ba|0)){aa=x;break}else u=u+80|0}}else aa=ua+108|0;c[i+56>>2]=c[aa>>2];if(!(a[ra>>0]|0)){if(!H){Aa=i;Ra=Ba;return Aa|0}W=va+20|0;X=va+4|0;Y=va+8|0;Z=va+24|0;_=f+40|0;j=f+19|0;$=f+44|0;V=0;U=I;do{T=qa+(V*80|0)|0;m=qa+(V*80|0)+64|0;if(c[(c[m>>2]|0)+36>>2]&16384|0){O=qa+(V*80|0)+44|0;I=d[O>>0]|0;S=c[wa>>2]|0;R=S+108|0;k=c[R>>2]|0;P=S+112|0;if((c[P>>2]|0)>(k|0)){c[R>>2]=k+1;A=c[S+104>>2]|0;a[A+(k*20|0)>>0]=17;A=A+(k*20|0)+1|0;B=A+19|0;do{a[A>>0]=0;A=A+1|0}while((A|0)<(B|0));Q=k}else Q=Di(S,17,0,0,0)|0;M=g+8+(I*72|0)+16|0;H=c[M>>2]|0;k=c[ma>>2]|0;ja=c[la>>2]|0;N=k+(ja*48|0)|0;G=c[m>>2]|0;C:do if((ja|0)>0){y=g+8+(I*72|0)+40|0;z=g+8+(I*72|0)+36|0;A=H+4|0;B=G+44|0;C=G+48|0;D=G+56|0;w=0;x=k;p=0;k=0;m=0;n=0;while(1){o=c[x>>2]|0;ja=G;do if((c[ja>>2]|0)==0&(c[ja+4>>2]|0)==0){if(b[x+10>>1]&2)break;if(c[o+4>>2]&1|0)break;ja=c[y>>2]|0;a[W>>0]=3;c[X>>2]=127;c[Y>>2]=128;c[Z>>2]=ja;_j(va,o)|0;if(!(a[W>>0]|0))break;ja=c[f>>2]|0;k=Xk(ja,k,dk(ja,o,0,0)|0)|0}while(0);do if((c[x+20>>2]|0)==(c[y>>2]|0)){o=e[x+12>>1]|0;if(!(o&130)){o=w;break}if(a[z>>0]&8?!((o&128|0)==0?1:(c[(c[x>>2]|0)+4>>2]&1|0)!=0):0){o=w;break}ja=x+32|0;if(!((c[ja>>2]&J|0)==0?(c[ja+4>>2]&U|0)==0:0)){o=w;break}o=c[x+28>>2]|0;if((o|0)<0){o=w;break}if(!(Vl(c[x>>2]|0,a[(c[(c[M>>2]|0)+4>>2]|0)+(o<<4)+13>>0]|0)|0)){o=w;break}ja=(o|0)>63;u=cw(1,0,o|0)|0;v=L()|0;u=ja?0:u;v=ja?-2147483648:v;if(!(p<<24>>24)){t=c[(c[A>>2]|0)+(o<<4)>>2]|0;c[xa>>2]=c[H>>2];c[xa+4>>2]=t;Db(284,43705,xa);t=1}else t=p;if(!((u&m|0)==0&(v&n|0)==0)){p=t;o=w;break}r=c[f>>2]|0;o=w+1|0;if((w|0)<(e[B>>1]|0))p=c[C>>2]|0;else{s=w+8&-8;q=s<<2;D:do if(c[r+272>>2]|0)if(!(a[r+81>>0]|0))ka=471;else break C;else{do if(!(0<0|(0==0?(e[r+276>>1]|0)>>>0>>0:0))){h=r+300|0;p=c[h>>2]|0;if(p|0){c[h>>2]=c[p>>2];ja=r+284|0;c[ja>>2]=(c[ja>>2]|0)+1;break D}h=r+296|0;p=c[h>>2]|0;if(!p){p=r+292|0;break}else{c[h>>2]=c[p>>2];ja=r+284|0;c[ja>>2]=(c[ja>>2]|0)+1;break D}}else p=r+288|0;while(0);c[p>>2]=(c[p>>2]|0)+1;ka=471}while(0);if((ka|0)==471){ka=0;p=_d(r,q,0)|0}if(!p)break C;ew(p|0,c[C>>2]|0,e[B>>1]<<2|0)|0;h=c[C>>2]|0;E:do if((h|0)!=(D|0)){if(c[r+480>>2]|0){Xd(r,h);break}q=h;do if((c[r+304>>2]|0)>>>0<=q>>>0){if((c[r+308>>2]|0)>>>0<=q>>>0)break;ja=r+300|0;c[h>>2]=c[ja>>2];c[ja>>2]=h;break E}while(0);if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{ja=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[C>>2]=p;b[B>>1]=s}c[p+(w<<2)>>2]=x;p=t;m=u|m;n=v|n}else o=w;while(0);x=x+48|0;if(x>>>0>=N>>>0){ka=486;break}else w=o}}else{o=0;k=0;n=0;m=0;ka=486}while(0);F:do if((ka|0)==486){ka=0;K=o&65535;b[G+40>>1]=K;b[G+24>>1]=K;K=G+36|0;c[K>>2]=16961;D=g+8+(I*72|0)+56|0;B=D;h=c[B+4>>2]|0;B=c[B>>2]&~m;z=h&((n|-2147483648)^2147483647);E=H+42|0;y=b[E>>1]|0;p=y<<16>>16;A=(y<<16>>16<63?y:63)<<16>>16;y=y<<16>>16>0;if(y){n=0;m=o;do{ja=cw(1,0,n|0)|0;m=m+(((ja&B|0)!=0|((L()|0)&z|0)!=0)&1)|0;n=n+1|0}while((n|0)<(A|0))}else m=o;q=c[f>>2]|0;C=((h|0)<0?p+-62|0:1)+m|0;s=C&65535;u=C<<16;t=u>>16;h=(u>>14)+7&-8;u=u>>15;r=u+2|0;p=h+72+(t+7+u+r&-8)|0;o=((p|0)<0)<<31>>31;G:do if(!q){ja=Sv(p|0,o|0,-1,-1)|0;l=L()|0;if(l>>>0>0|(l|0)==0&ja>>>0>2147483390)break F;if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](p)|0;ka=513;break}m=Wa[c[29356>>2]&127](p)|0;if((c[14985]|0)>>>0

        >>0)c[14985]=p;o=59064;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&n>>>0>0){ja=c[14978]|0;l=Tv(n|0,o|0,m|0,((m|0)<0)<<31>>31|0)|0;ia=L()|0;c[14768]=((ia|0)<0|(ia|0)==0&l>>>0<=ja>>>0)&1}n=Wa[c[29340>>2]&127](m)|0;if(!n)break F;m=Wa[c[29352>>2]&127](n)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0){F=n;break}c[14987]=m;F=n}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0)break F}else{do if(!(0>>0|(0==(o|0)?(e[q+276>>1]|0)>>>0

        >>0:0))){n=q+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];ka=q+284|0;c[ka>>2]=(c[ka>>2]|0)+1;ka=513;break G}n=q+296|0;m=c[n>>2]|0;if(!m){m=q+292|0;break}else{c[n>>2]=c[m>>2];ka=q+284|0;c[ka>>2]=(c[ka>>2]|0)+1;ka=513;break G}}else m=q+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(q,p,o)|0;ka=513}while(0);if((ka|0)==513){ka=0;if(!m)break;else F=m}gw(F|0,0,p|0)|0;n=F+72|0;x=F+32|0;c[x>>2]=n;n=n+h|0;c[F+8>>2]=n;n=n+r|0;w=F+4|0;c[w>>2]=n;c[F+28>>2]=n+u;b[F+52>>1]=s;b[F+50>>1]=t+65535;c[G+32>>2]=F;c[F>>2]=43731;c[F+12>>2]=H;n=c[ma>>2]|0;if(n>>>0>>0){v=g+8+(I*72|0)+40|0;u=g+8+(I*72|0)+36|0;m=0;p=0;s=0;while(1){do if((c[n+20>>2]|0)==(c[v>>2]|0)){o=e[n+12>>1]|0;if(!(o&130)){o=s;break}if(a[u>>0]&8?!((o&128|0)==0?1:(c[(c[n>>2]|0)+4>>2]&1|0)!=0):0){o=s;break}ja=n+32|0;if(!((c[ja>>2]&J|0)==0?(c[ja+4>>2]&U|0)==0:0)){o=s;break}q=c[n+28>>2]|0;if((q|0)<0){o=s;break}r=c[n>>2]|0;if(!(Vl(r,a[(c[(c[M>>2]|0)+4>>2]|0)+(q<<4)+13>>0]|0)|0)){o=s;break}ja=(q|0)>63;o=cw(1,0,q|0)|0;h=L()|0;o=ja?0:o;h=ja?-2147483648:h;if(!((o&p|0)==0&(h&s|0)==0)){o=s;break}t=o|p;h=h|s;b[(c[w>>2]|0)+(m<<1)>>1]=q;o=c[r+12>>2]|0;p=c[r+16>>2]|0;H:do if(!(c[o+4>>2]&256)){do if(p|0){if(!(c[p+4>>2]&256))break;o=Yi(f,p)|0;ka=531;break H}while(0);o=Yi(f,o)|0;if(o|0){ka=532;break}o=Yi(f,p)|0;ka=531}else{o=Yi(f,o)|0;ka=531}while(0);if((ka|0)==531){ka=0;if(!o)o=34049;else ka=532}if((ka|0)==532){ka=0;o=c[o>>2]|0}c[(c[x>>2]|0)+(m<<2)>>2]=o;m=m+1|0;p=t;o=h}else o=s;while(0);n=n+48|0;if(n>>>0>=N>>>0)break;else s=o}}else m=0;if(y){n=0;do{ja=cw(1,0,n|0)|0;if(!((ja&B|0)==0&((L()|0)&z|0)==0)){b[(c[w>>2]|0)+(m<<1)>>1]=n;c[(c[x>>2]|0)+(m<<2)>>2]=34049;m=m+1|0}n=n+1|0}while((n|0)<(A|0))}do if((c[D+4>>2]|0)<0){if((b[E>>1]|0)<=63){z=m;break}n=63;do{b[(c[w>>2]|0)+(m<<1)>>1]=n;c[(c[x>>2]|0)+(m<<2)>>2]=34049;m=m+1|0;n=n+1|0}while((n|0)<(b[E>>1]|0));z=m}else z=m;while(0);b[(c[w>>2]|0)+(z<<1)>>1]=-1;c[(c[x>>2]|0)+(z<<2)>>2]=34049;m=c[_>>2]|0;c[_>>2]=m+1;u=qa+(V*80|0)+8|0;c[u>>2]=m;n=c[R>>2]|0;if((c[P>>2]|0)>(n|0)){c[R>>2]=n+1;ja=c[S+104>>2]|0;a[ja+(n*20|0)>>0]=112;b[ja+(n*20|0)+2>>1]=0;c[ja+(n*20|0)+4>>2]=m;c[ja+(n*20|0)+8>>2]=C;c[ja+(n*20|0)+12>>2]=0;c[ja+(n*20|0)+16>>2]=0;a[ja+(n*20|0)+1>>0]=0}else Di(S,112,m,C,0)|0;m=c[wa>>2]|0;o=Ij(f,F)|0;I:do if(o|0){n=c[m>>2]|0;if(!(a[n+81>>0]|0)){l=c[m+104>>2]|0;ja=(c[m+108>>2]|0)+-1|0;a[l+(ja*20|0)+1>>0]=-9;c[l+(ja*20|0)+16>>2]=o;break}if(c[n+480>>2]|0)break;ja=(c[o>>2]|0)+-1|0;c[o>>2]=ja;if(ja|0)break;m=c[o+12>>2]|0;do if(m|0){if(c[m+480>>2]|0){Xd(m,o);break I}n=o;if((c[m+304>>2]|0)>>>0>n>>>0)break;if((c[m+308>>2]|0)>>>0<=n>>>0)break;ja=m+300|0;c[o>>2]=c[ja>>2];c[ja>>2]=o;break I}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{ja=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-ja;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);v=c[(c[ya>>2]|0)+4>>2]|0;t=d[O>>0]|0;y=v+8+(t*72|0)+37|0;do if(!(a[y>>0]&16)){m=c[qa+(V*80|0)+4>>2]|0;n=c[R>>2]|0;if((c[P>>2]|0)>(n|0)){c[R>>2]=n+1;x=c[S+104>>2]|0;a[x+(n*20|0)>>0]=36;b[x+(n*20|0)+2>>1]=0;c[x+(n*20|0)+4>>2]=m;c[x+(n*20|0)+8>>2]=0;c[x+(n*20|0)+12>>2]=0;c[x+(n*20|0)+16>>2]=0;a[x+(n*20|0)+1>>0]=0;x=n;m=0;break}else{x=Di(S,36,m,0,0)|0;m=0;break}}else{p=c[v+8+(t*72|0)+28>>2]|0;m=c[R>>2]|0;if((c[P>>2]|0)>(m|0)){c[R>>2]=m+1;A=c[S+104>>2]|0;a[A+(m*20|0)>>0]=70;A=A+(m*20|0)+1|0;B=A+19|0;do{a[A>>0]=0;A=A+1|0}while((A|0)<(B|0))}else m=Di(S,70,0,0,0)|0;n=c[v+8+(t*72|0)+24>>2]|0;o=c[R>>2]|0;if((c[P>>2]|0)>(o|0)){c[R>>2]=o+1;ja=c[S+104>>2]|0;a[ja+(o*20|0)>>0]=13;b[ja+(o*20|0)+2>>1]=0;c[ja+(o*20|0)+4>>2]=p;c[ja+(o*20|0)+8>>2]=0;c[ja+(o*20|0)+12>>2]=n;c[ja+(o*20|0)+16>>2]=0;a[ja+(o*20|0)+1>>0]=0}else Di(S,13,p,0,n)|0;n=c[R>>2]|0;if((c[P>>2]|0)>(n|0)){c[R>>2]=n+1;x=c[S+104>>2]|0;a[x+(n*20|0)>>0]=14;b[x+(n*20|0)+2>>1]=0;c[x+(n*20|0)+4>>2]=p;c[x+(n*20|0)+8>>2]=0;c[x+(n*20|0)+12>>2]=0;c[x+(n*20|0)+16>>2]=0;a[x+(n*20|0)+1>>0]=0;x=n;break}else{x=Di(S,14,p,0,0)|0;break}}while(0);q=(k|0)!=0;if(q){h=(c[sa>>2]|0)+-1|0;c[sa>>2]=h;Tj(f,k,h,16);c[K>>2]=c[K>>2]|131072}else h=0;n=a[j>>0]|0;if(!(n<<24>>24)){w=(c[$>>2]|0)+1|0;c[$>>2]=w}else{w=n+-1<<24>>24;a[j>>0]=w;w=c[f+148+((w&255)<<2)>>2]|0}s=qa+(V*80|0)+4|0;r=el(f,F,c[s>>2]|0,w,0,0,0,0)|0;n=c[u>>2]|0;o=c[R>>2]|0;if((c[P>>2]|0)>(o|0)){c[R>>2]=o+1;ja=c[S+104>>2]|0;a[ja+(o*20|0)>>0]=-124;b[ja+(o*20|0)+2>>1]=0;c[ja+(o*20|0)+4>>2]=n;c[ja+(o*20|0)+8>>2]=w;c[ja+(o*20|0)+12>>2]=0;c[ja+(o*20|0)+16>>2]=0;a[ja+(o*20|0)+1>>0]=0}else Di(S,132,n,w,0)|0;p=c[R>>2]|0;if((p|0)>0)b[(c[S+104>>2]|0)+((p+-1|0)*20|0)+2>>1]=16;do if(q){o=c[S+12>>2]|0;n=~h;if(((c[o+56>>2]|0)+(c[o+60>>2]|0)|0)<0){mk(o,S,n);break}else{c[(c[o+64>>2]|0)+(n<<2)>>2]=p;break}}while(0);do if(!(a[y>>0]&16)){m=c[s>>2]|0;n=x+1|0;o=c[R>>2]|0;if((c[P>>2]|0)>(o|0)){c[R>>2]=o+1;ja=c[S+104>>2]|0;a[ja+(o*20|0)>>0]=5;b[ja+(o*20|0)+2>>1]=0;c[ja+(o*20|0)+4>>2]=m;c[ja+(o*20|0)+8>>2]=n;c[ja+(o*20|0)+12>>2]=0;c[ja+(o*20|0)+16>>2]=0;a[ja+(o*20|0)+1>>0]=0;break}else{Di(S,5,m,n,0)|0;break}}else{if((m|0)<0)m=(c[R>>2]|0)+-1|0;if(!(a[(c[S>>2]|0)+81>>0]|0))m=(c[S+104>>2]|0)+(m*20|0)|0;else m=59308;c[m+8>>2]=r+z;q=c[s>>2]|0;h=c[v+8+(t*72|0)+32>>2]|0;n=c[wa>>2]|0;if((x|0)<0)m=(c[n+108>>2]|0)+-1|0;else m=x;if(!(a[(c[n>>2]|0)+81>>0]|0))m=(c[n+104>>2]|0)+(m*20|0)|0;else m=59308;p=c[n+108>>2]|0;if((p|0)>(x|0)?(a[(c[f>>2]|0)+81>>0]|0)==0:0){n=x;while(1){o=m+4|0;J:do if((c[o>>2]|0)==(q|0))switch(a[m>>0]|0){case 90:{a[m>>0]=78;l=m+8|0;c[o>>2]=(c[l>>2]|0)+h;ja=m+12|0;c[l>>2]=c[ja>>2];c[ja>>2]=0;break J}case -128:{a[m>>0]=83;ja=m+8|0;c[o>>2]=c[ja>>2];c[ja>>2]=1;break J}default:break J}while(0);n=n+1|0;if((n|0)==(p|0))break;else m=m+20|0}}m=c[R>>2]|0;if((c[P>>2]|0)>(m|0)){c[R>>2]=m+1;ja=c[S+104>>2]|0;a[ja+(m*20|0)>>0]=11;b[ja+(m*20|0)+2>>1]=0;c[ja+(m*20|0)+4>>2]=0;c[ja+(m*20|0)+8>>2]=x;c[ja+(m*20|0)+12>>2]=0;c[ja+(m*20|0)+16>>2]=0;a[ja+(m*20|0)+1>>0]=0}else Di(S,11,0,x,0)|0;a[y>>0]=a[y>>0]&-17}while(0);n=c[R>>2]|0;if((n|0)>0)b[(c[S+104>>2]|0)+((n+-1|0)*20|0)+2>>1]=3;o=(a[(c[S>>2]|0)+81>>0]|0)==0;if(o)m=(c[S+104>>2]|0)+(((x|0)<0?n+-1|0:x)*20|0)|0;else m=59308;c[m+8>>2]=n;do if(w){m=a[j>>0]|0;if((m&255)>=8)break;a[j>>0]=m+1<<24>>24;c[f+148+((m&255)<<2)>>2]=w;n=c[R>>2]|0}while(0);if(o)m=(c[S+104>>2]|0)+(((Q|0)<0?n+-1|0:Q)*20|0)|0;else m=59308;c[m+8>>2]=n}while(0);if(k|0)ni(c[f>>2]|0,k);if(a[ra>>0]|0){ka=625;break e}}Kl(f,g,T,ta);c[qa+(V*80|0)+32>>2]=c[aa>>2];J=Ll(f,ua,i,V,T,J,U)|0;U=L()|0;c[na>>2]=c[qa+(V*80|0)+24>>2];V=V+1|0}while((V|0)<(ba|0));Ra=Ba;return i|0}}}else ka=625;while(0);if((ka|0)==625?(i|0)==0:0){Aa=0;Ra=Ba;return Aa|0}c[oa>>2]=c[pa>>2];k=a[za>>0]|0;K:do if(k<<24>>24){n=Aa+480|0;o=Aa+304|0;p=Aa+308|0;h=Aa+300|0;if(!Aa){m=0;while(1){xa=c[i+752+(m*80|0)+64>>2]|0;if((xa|0)!=0?(c[xa+36>>2]&2048|0)!=0:0){k=c[i+752+(m*80|0)+60>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{xa=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-xa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);k=a[za>>0]|0}m=m+1|0;if(m>>>0>=(k&255)>>>0)break K}}m=0;do{xa=c[i+752+(m*80|0)+64>>2]|0;if((xa|0)!=0?(c[xa+36>>2]&2048|0)!=0:0){k=c[i+752+(m*80|0)+60>>2]|0;do if(k|0){if(c[n>>2]|0){Xd(Aa,k);break}xa=k;if((c[o>>2]|0)>>>0<=xa>>>0?(c[p>>2]|0)>>>0>xa>>>0:0){c[k>>2]=c[h>>2];c[h>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{xa=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-xa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);k=a[za>>0]|0}m=m+1|0}while(m>>>0<(k&255)>>>0)}while(0);om(ya);m=i+60|0;k=c[m>>2]|0;if(k|0)do{c[m>>2]=c[k+52>>2];$l(Aa,k);k=c[m>>2]|0}while((k|0)!=0);if(Aa|0){if(c[Aa+480>>2]|0){Xd(Aa,i);Aa=0;Ra=Ba;return Aa|0}za=i;if((c[Aa+304>>2]|0)>>>0<=za>>>0?(c[Aa+308>>2]|0)>>>0>za>>>0:0){Aa=Aa+300|0;c[i>>2]=c[Aa>>2];c[Aa>>2]=i;Aa=0;Ra=Ba;return Aa|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);Aa=0;Ra=Ba;return Aa|0}else{Aa=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);Aa=0;Ra=Ba;return Aa|0}return 0}function rl(f,g,h,i,j,k,l,m){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=Ra;Ra=Ra+16|0;u=P;O=c[f+8>>2]|0;K=a[k>>0]|0;y=k+4|0;M=c[y>>2]|0;if(!j)s=0;else s=d[j+1>>0]|0;if(!i)N=0;else N=(c[i>>2]|0)==0?0:i;F=(N|0)!=0;v=(s|0)!=0;do if(!(v|F)?(o=c[g+16>>2]|0,(o|0)>0):0){i=O+108|0;n=c[i>>2]|0;if((c[O+112>>2]|0)>(n|0)){c[i>>2]=n+1;L=c[O+104>>2]|0;a[L+(n*20|0)>>0]=47;b[L+(n*20|0)+2>>1]=0;c[L+(n*20|0)+4>>2]=o;c[L+(n*20|0)+8>>2]=l;c[L+(n*20|0)+12>>2]=1;c[L+(n*20|0)+16>>2]=0;a[L+(n*20|0)+1>>0]=0;break}else{Di(O,47,o,l,1)|0;break}}while(0);n=c[g>>2]|0;t=c[n>>2]|0;q=k+8|0;r=c[q>>2]|0;if(r){p=f+44|0;o=c[p>>2]|0;if((r+t|0)>(o|0)){i=0;E=16}else{C=0;L=r}}else{if(F){i=(c[c[N>>2]>>2]|0)+((a[N+32>>0]&1^1)&255)|0;p=f+44|0;o=i+(c[p>>2]|0)|0;c[p>>2]=o}else{o=f+44|0;i=0;p=o;o=c[o>>2]|0}r=o+1|0;c[q>>2]=r;E=16}if((E|0)==16){c[p>>2]=o+t;C=i;L=r}c[k+12>>2]=t;a:do if((h|0)>-1)if((t|0)>0){n=O+108|0;o=O+112|0;p=O+104|0;i=0;do{q=i+L|0;r=c[n>>2]|0;if((c[o>>2]|0)>(r|0)){c[n>>2]=r+1;G=c[p>>2]|0;a[G+(r*20|0)>>0]=90;b[G+(r*20|0)+2>>1]=0;c[G+(r*20|0)+4>>2]=h;c[G+(r*20|0)+8>>2]=i;c[G+(r*20|0)+12>>2]=q;c[G+(r*20|0)+16>>2]=0;a[G+(r*20|0)+1>>0]=0}else Di(O,90,h,i,q)|0;i=i+1|0}while((i|0)!=(t|0));G=t;x=L}else{G=t;x=L}else{switch(K<<24>>24){case 3:{G=t;x=L;break a}case 9:case 10:case 13:{i=1;break}default:i=0}if((K|2)<<24>>24!=14&((s|0)==0&F)){i=i|12;q=N+4|0;p=c[q>>2]|0;o=c[N>>2]|0;if((p|0)<(c[o>>2]|0)){n=p;do{p=b[o+4+(n*20|0)+16>>1]|0;if(!(p<<16>>16))n=n+1|0;else{n=n+1|0;b[(c[g>>2]|0)+4+(((p&65535)+-1|0)*20|0)+16>>1]=n-(c[q>>2]|0);o=c[N>>2]|0}}while((n|0)<(c[o>>2]|0));n=c[g>>2]|0;r=c[n>>2]|0}else r=t;if((r|0)>0){p=t;o=L;q=0;do{G=(b[n+4+(q*20|0)+16>>1]|0)==0;o=G?o:0;p=p+((G^1)<<31>>31)|0;q=q+1|0}while((q|0)<(r|0))}else{p=t;o=L}}else{p=t;o=L}c[u>>2]=L;a[u+4>>0]=i;if(c[g+12>>2]|0?(C|0)>0&(i&8)!=0:0){c[N+36>>2]=u;G=p;x=0;break}Oj(f,n,L,0,i);G=p;x=o}while(0);do if(v){b:do switch(a[j+1>>0]|0){case 2:{n=f+44|0;i=c[n>>2]|0;w=i+1|0;c[n>>2]=i+G;n=j+8|0;i=c[n>>2]|0;o=c[O>>2]|0;if(!(a[o+81>>0]|0)){j=c[O+104>>2]|0;u=j+(i*20|0)+1|0;v=j+(i*20|0)+16|0;kg(o,a[u>>0]|0,c[v>>2]|0);a[u>>0]=0;c[v>>2]=0;a[j+(i*20|0)>>0]=-86;i=c[n>>2]|0}if((i|0)<0)i=(c[O+108>>2]|0)+-1|0;if(!(a[(c[O>>2]|0)+81>>0]|0))i=(c[O+104>>2]|0)+(i*20|0)|0;else i=59308;a[i>>0]=73;c[i+4>>2]=1;c[i+8>>2]=w;t=O+108|0;i=c[t>>2]|0;h=i+G|0;u=G+-1|0;v=O+112|0;if((G|0)>0){s=O+104|0;r=0;do{q=Yi(f,c[(c[g>>2]|0)+4+(r*20|0)>>2]|0)|0;i=r+L|0;n=r+w|0;o=c[t>>2]|0;p=(c[v>>2]|0)>(o|0);do if((r|0)<(u|0))if(p){c[t>>2]=o+1;j=c[s>>2]|0;a[j+(o*20|0)>>0]=52;b[j+(o*20|0)+2>>1]=0;c[j+(o*20|0)+4>>2]=i;c[j+(o*20|0)+8>>2]=h;c[j+(o*20|0)+12>>2]=n;c[j+(o*20|0)+16>>2]=0;a[j+(o*20|0)+1>>0]=0;break}else{Di(O,52,i,h,n)|0;break}else if(p){c[t>>2]=o+1;j=c[s>>2]|0;a[j+(o*20|0)>>0]=53;b[j+(o*20|0)+2>>1]=0;c[j+(o*20|0)+4>>2]=i;c[j+(o*20|0)+8>>2]=l;c[j+(o*20|0)+12>>2]=n;c[j+(o*20|0)+16>>2]=0;a[j+(o*20|0)+1>>0]=0;break}else{Di(O,53,i,l,n)|0;break}while(0);do if(!(a[(c[O>>2]|0)+81>>0]|0)){i=(c[t>>2]|0)+-1|0;n=c[s>>2]|0;o=n+(i*20|0)+1|0;if(a[o>>0]|0){Ei(O,n+(i*20|0)|0,q,-2);break}if(q|0){c[n+(i*20|0)+16>>2]=q;a[o>>0]=-2}}while(0);i=c[t>>2]|0;if((i|0)>0)b[(c[s>>2]|0)+((i+-1|0)*20|0)+2>>1]=128;r=r+1|0}while((r|0)!=(G|0))}if((c[v>>2]|0)>(i|0)){c[t>>2]=i+1;j=c[O+104>>2]|0;a[j+(i*20|0)>>0]=78;b[j+(i*20|0)+2>>1]=0;c[j+(i*20|0)+4>>2]=L;c[j+(i*20|0)+8>>2]=w;c[j+(i*20|0)+12>>2]=u;c[j+(i*20|0)+16>>2]=0;a[j+(i*20|0)+1>>0]=0;break b}else{Di(O,78,L,w,u)|0;break b}}case 1:{i=c[j+8>>2]|0;n=c[O>>2]|0;if(!(a[n+81>>0]|0)){j=c[O+104>>2]|0;v=j+(i*20|0)+1|0;w=j+(i*20|0)+16|0;kg(n,a[v>>0]|0,c[w>>2]|0);a[v>>0]=0;c[w>>2]=0;a[j+(i*20|0)>>0]=-86}break}default:ym(f,c[j+4>>2]|0,l,G,L)}while(0);if((N|0)==0?(z=c[g+16>>2]|0,(z|0)>0):0){i=O+108|0;n=c[i>>2]|0;if((c[O+112>>2]|0)>(n|0)){c[i>>2]=n+1;j=c[O+104>>2]|0;a[j+(n*20|0)>>0]=47;b[j+(n*20|0)+2>>1]=0;c[j+(n*20|0)+4>>2]=z;c[j+(n*20|0)+8>>2]=l;c[j+(n*20|0)+12>>2]=1;c[j+(n*20|0)+16>>2]=0;a[j+(n*20|0)+1>>0]=0;break}else{Di(O,47,z,l,1)|0;break}}}while(0);c:do switch(K<<24>>24){case 1:{q=f+19|0;i=a[q>>0]|0;if(!(i<<24>>24)){K=f+44|0;p=(c[K>>2]|0)+1|0;c[K>>2]=p}else{p=i+-1<<24>>24;a[q>>0]=p;p=c[f+148+((p&255)<<2)>>2]|0}n=O+108|0;i=c[n>>2]|0;o=O+112|0;if((c[o>>2]|0)>(i|0)){c[n>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=92;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=L;c[K+(i*20|0)+8>>2]=G;c[K+(i*20|0)+12>>2]=p;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else Di(O,92,L,G,p)|0;i=c[n>>2]|0;if((c[o>>2]|0)>(i|0)){c[n>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=-124;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=M;c[K+(i*20|0)+8>>2]=p;c[K+(i*20|0)+12>>2]=L;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,132,M,p,L)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){M=c[O+104>>2]|0;a[M+(i*20|0)+1>>0]=-3;c[M+(i*20|0)+16>>2]=G}if((p|0)!=0?(A=a[q>>0]|0,(A&255)<8):0){a[q>>0]=A+1<<24>>24;c[f+148+((A&255)<<2)>>2]=p;E=237}else E=237;break}case 2:{i=O+108|0;n=c[i>>2]|0;if((c[O+112>>2]|0)>(n|0)){c[i>>2]=n+1;E=c[O+104>>2]|0;a[E+(n*20|0)>>0]=-123;b[E+(n*20|0)+2>>1]=0;c[E+(n*20|0)+4>>2]=M;c[E+(n*20|0)+8>>2]=L;c[E+(n*20|0)+12>>2]=G;c[E+(n*20|0)+16>>2]=0;a[E+(n*20|0)+1>>0]=0;E=237;break c}else{Di(O,133,M,L,G)|0;E=237;break c}}case 12:case 14:case 6:case 5:{t=C+1|0;h=(C|0)==0;do if(h){i=f+19|0;n=a[i>>0]|0;if(!(n<<24>>24)){E=f+44|0;s=(c[E>>2]|0)+1|0;c[E>>2]=s;break}else{s=n+-1<<24>>24;a[i>>0]=s;s=c[f+148+((s&255)<<2)>>2]|0;break}}else{i=f+32|0;n=c[i>>2]|0;o=f+28|0;p=c[o>>2]|0;if((p|0)>(C|0)){c[i>>2]=n+t;c[o>>2]=p-t;s=n;break}else{E=f+44|0;s=c[E>>2]|0;c[E>>2]=s+t;s=s+1|0;break}}while(0);p=s+C|0;q=O+108|0;i=c[q>>2]|0;r=O+112|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;E=c[O+104>>2]|0;a[E+(i*20|0)>>0]=92;b[E+(i*20|0)+2>>1]=0;c[E+(i*20|0)+4>>2]=L;c[E+(i*20|0)+8>>2]=G;c[E+(i*20|0)+12>>2]=p;c[E+(i*20|0)+16>>2]=0;a[E+(i*20|0)+1>>0]=0}else Di(O,92,L,G,p)|0;if(K<<24>>24==6){i=c[q>>2]|0;n=i+4|0;o=M+1|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=29;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=o;c[K+(i*20|0)+8>>2]=n;c[K+(i*20|0)+12>>2]=s;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,29,o,n,s)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){K=c[O+104>>2]|0;a[K+(i*20|0)+1>>0]=-3;c[K+(i*20|0)+16>>2]=0}i=c[q>>2]|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=-124;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=o;c[K+(i*20|0)+8>>2]=s;c[K+(i*20|0)+12>>2]=L;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,132,o,s,L)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){L=c[O+104>>2]|0;a[L+(i*20|0)+1>>0]=-3;c[L+(i*20|0)+16>>2]=G}}if(!F){o=f+19|0;i=a[o>>0]|0;if(!(i<<24>>24)){L=f+44|0;n=(c[L>>2]|0)+1|0;c[L>>2]=n}else{n=i+-1<<24>>24;a[o>>0]=n;n=c[f+148+((n&255)<<2)>>2]|0}i=c[q>>2]|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;L=c[O+104>>2]|0;a[L+(i*20|0)>>0]=121;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=M;c[L+(i*20|0)+8>>2]=n;c[L+(i*20|0)+12>>2]=0;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(O,121,M,n,0)|0;i=c[q>>2]|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;L=c[O+104>>2]|0;a[L+(i*20|0)>>0]=122;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=M;c[L+(i*20|0)+8>>2]=s;c[L+(i*20|0)+12>>2]=n;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(O,122,M,s,n)|0;i=c[q>>2]|0;if((i|0)>0)b[(c[O+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=8;if(n|0?(H=a[o>>0]|0,(H&255)<8):0){a[o>>0]=H+1<<24>>24;c[f+148+((H&255)<<2)>>2]=n}}else zm(f,N,g,p,x,1,C);if(!h){i=f+28|0;if((c[i>>2]|0)>(C|0)){E=237;break c}c[i>>2]=t;c[f+32>>2]=s;E=237;break c}if((s|0)!=0?(I=f+19|0,J=a[I>>0]|0,(J&255)<8):0){a[I>>0]=J+1<<24>>24;c[f+148+((J&255)<<2)>>2]=s;E=237}else E=237;break}case 11:{if(F){zm(f,N,g,L,x,G,C);Ra=P;return}h=f+19|0;i=a[h>>0]|0;if(!(i<<24>>24)){K=f+44|0;s=(c[K>>2]|0)+1|0;c[K>>2]=s}else{s=i+-1<<24>>24;a[h>>0]=s;s=c[f+148+((s&255)<<2)>>2]|0}p=c[k+16>>2]|0;q=O+108|0;i=c[q>>2]|0;r=O+112|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=92;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=L;c[K+(i*20|0)+8>>2]=G;c[K+(i*20|0)+12>>2]=s;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,92,L,G,s)|0;n=c[O>>2]|0;do if(a[n+81>>0]|0){if((G|0)!=-12)kg(n,G,p)}else{if((i|0)<0)i=(c[q>>2]|0)+-1|0;n=c[O+104>>2]|0;o=n+(i*20|0)|0;if((G|0)<=-1?(B=n+(i*20|0)+1|0,(a[B>>0]|0)==0):0){if((G|0)==-3){c[n+(i*20|0)+16>>2]=p;a[B>>0]=-3;break}if(!p)break;c[n+(i*20|0)+16>>2]=p;a[B>>0]=G;if((G|0)!=-12)break;K=p+12|0;c[K>>2]=(c[K>>2]|0)+1;break}Ei(O,o,p,G)}while(0);i=c[q>>2]|0;if((c[r>>2]|0)>(i|0)){c[q>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=-124;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=M;c[K+(i*20|0)+8>>2]=s;c[K+(i*20|0)+12>>2]=L;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,132,M,s,L)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){M=c[O+104>>2]|0;a[M+(i*20|0)+1>>0]=-3;c[M+(i*20|0)+16>>2]=G}if(s|0?(D=a[h>>0]|0,(D&255)<8):0){a[h>>0]=D+1<<24>>24;c[f+148+((D&255)<<2)>>2]=s}break}case 3:{i=O+108|0;n=c[i>>2]|0;if((c[O+112>>2]|0)>(n|0)){c[i>>2]=n+1;E=c[O+104>>2]|0;a[E+(n*20|0)>>0]=70;b[E+(n*20|0)+2>>1]=0;c[E+(n*20|0)+4>>2]=1;c[E+(n*20|0)+8>>2]=M;c[E+(n*20|0)+12>>2]=0;c[E+(n*20|0)+16>>2]=0;a[E+(n*20|0)+1>>0]=0;E=237;break c}else{Di(O,70,1,M,0)|0;E=237;break c}}case 10:{if(F){zm(f,N,g,L,x,G,C);Ra=P;return}break}case 9:case 13:{if(F){zm(f,N,g,L,x,G,C);Ra=P;return}if(K<<24>>24==13){i=c[y>>2]|0;n=O+108|0;o=c[n>>2]|0;if((c[O+112>>2]|0)>(o|0)){c[n>>2]=o+1;f=c[O+104>>2]|0;a[f+(o*20|0)>>0]=14;b[f+(o*20|0)+2>>1]=0;c[f+(o*20|0)+4>>2]=i;c[f+(o*20|0)+8>>2]=0;c[f+(o*20|0)+12>>2]=0;c[f+(o*20|0)+16>>2]=0;a[f+(o*20|0)+1>>0]=0;break c}else{Di(O,14,i,0,0)|0;break c}}else{i=O+108|0;n=c[i>>2]|0;if((c[O+112>>2]|0)>(n|0)){c[i>>2]=n+1;f=c[O+104>>2]|0;a[f+(n*20|0)>>0]=81;b[f+(n*20|0)+2>>1]=0;c[f+(n*20|0)+4>>2]=L;c[f+(n*20|0)+8>>2]=G;c[f+(n*20|0)+12>>2]=0;c[f+(n*20|0)+16>>2]=0;a[f+(n*20|0)+1>>0]=0;break c}else{Di(O,81,L,G,0)|0;break c}}}case 7:case 8:{v=c[k+20>>2]|0;w=c[v>>2]|0;l=f+19|0;i=a[l>>0]|0;if(!(i<<24>>24)){i=f+44|0;j=(c[i>>2]|0)+1|0;c[i>>2]=j;i=0}else{i=i+-1<<24>>24;a[l>>0]=i;j=c[f+148+((i&255)<<2)>>2]|0}z=w+2|0;y=(z|0)==1;do if(y)if(!(i<<24>>24)){J=f+44|0;x=(c[J>>2]|0)+1|0;c[J>>2]=x;break}else{x=i+-1<<24>>24;a[l>>0]=x;x=c[f+148+((x&255)<<2)>>2]|0;break}else{i=f+32|0;n=c[i>>2]|0;o=f+28|0;p=c[o>>2]|0;if((p|0)<(z|0)){J=f+44|0;x=c[J>>2]|0;c[J>>2]=x+z;x=x+1|0;break}else{c[i>>2]=n+z;c[o>>2]=p-z;x=n;break}}while(0);u=x+w|0;r=u+1|0;q=K<<24>>24==8;if(q){n=M+1|0;o=O+108|0;i=c[o>>2]|0;p=O+112|0;if((c[p>>2]|0)>(i|0)){c[o>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=29;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=n;c[K+(i*20|0)+8>>2]=0;c[K+(i*20|0)+12>>2]=L;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(O,29,n,0,L)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){t=c[O+104>>2]|0;a[t+(i*20|0)+1>>0]=-3;c[t+(i*20|0)+16>>2]=G;t=i;h=o;s=p}else{t=i;h=o;s=p}}else{t=0;h=O+108|0;s=O+112|0}i=c[h>>2]|0;if((c[s>>2]|0)>(i|0)){c[h>>2]=i+1;K=c[O+104>>2]|0;a[K+(i*20|0)>>0]=92;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=L;c[K+(i*20|0)+8>>2]=G;c[K+(i*20|0)+12>>2]=r;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else Di(O,92,L,G,r)|0;if(q){i=M+1|0;n=c[h>>2]|0;if((c[s>>2]|0)>(n|0)){c[h>>2]=n+1;K=c[O+104>>2]|0;a[K+(n*20|0)>>0]=-124;b[K+(n*20|0)+2>>1]=0;c[K+(n*20|0)+4>>2]=i;c[K+(n*20|0)+8>>2]=r;c[K+(n*20|0)+12>>2]=0;c[K+(n*20|0)+16>>2]=0;a[K+(n*20|0)+1>>0]=0}else Di(O,132,i,r,0)|0;i=c[h>>2]|0;if((i|0)>0)b[(c[O+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=16}if((w|0)>0){n=L+-1|0;o=O+104|0;i=0;do{p=n+(e[v+4+(i*20|0)+16>>1]|0)|0;q=i+x|0;r=c[h>>2]|0;if((c[s>>2]|0)>(r|0)){c[h>>2]=r+1;L=c[o>>2]|0;a[L+(r*20|0)>>0]=79;b[L+(r*20|0)+2>>1]=0;c[L+(r*20|0)+4>>2]=p;c[L+(r*20|0)+8>>2]=q;c[L+(r*20|0)+12>>2]=0;c[L+(r*20|0)+16>>2]=0;a[L+(r*20|0)+1>>0]=0}else Di(O,79,p,q,0)|0;i=i+1|0}while((i|0)!=(w|0))}i=c[h>>2]|0;if((c[s>>2]|0)>(i|0)){c[h>>2]=i+1;L=c[O+104>>2]|0;a[L+(i*20|0)>>0]=120;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=M;c[L+(i*20|0)+8>>2]=u;c[L+(i*20|0)+12>>2]=0;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(O,120,M,u,0)|0;i=c[h>>2]|0;if((c[s>>2]|0)>(i|0)){c[h>>2]=i+1;L=c[O+104>>2]|0;a[L+(i*20|0)>>0]=92;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=x;c[L+(i*20|0)+8>>2]=z;c[L+(i*20|0)+12>>2]=j;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(O,92,x,z,j)|0;i=c[h>>2]|0;if((c[s>>2]|0)>(i|0)){c[h>>2]=i+1;L=c[O+104>>2]|0;a[L+(i*20|0)>>0]=-124;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=M;c[L+(i*20|0)+8>>2]=j;c[L+(i*20|0)+12>>2]=x;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else i=Di(O,132,M,j,x)|0;if(!(a[(c[O>>2]|0)+81>>0]|0)){M=c[O+104>>2]|0;a[M+(i*20|0)+1>>0]=-3;c[M+(i*20|0)+16>>2]=z}if(t|0){n=c[h>>2]|0;if(!(a[(c[O>>2]|0)+81>>0]|0))i=(c[O+104>>2]|0)+(((t|0)<0?n+-1|0:t)*20|0)|0;else i=59308;c[i+8>>2]=n}do if(j|0){i=a[l>>0]|0;if((i&255)>=8)break;a[l>>0]=i+1<<24>>24;c[f+148+((i&255)<<2)>>2]=j}while(0);if(!y){i=f+28|0;if((c[i>>2]|0)>=(z|0)){E=237;break c}c[i>>2]=z;c[f+32>>2]=x;E=237;break c}if(!x){E=237;break c}i=a[l>>0]|0;if((i&255)>=8){E=237;break c}a[l>>0]=i+1<<24>>24;c[f+148+((i&255)<<2)>>2]=x;E=237;break}default:E=237}while(0);if((E|0)==237?N|0:0){Ra=P;return}i=c[g+12>>2]|0;if(!i){Ra=P;return}n=O+108|0;o=c[n>>2]|0;if((c[O+112>>2]|0)>(o|0)){c[n>>2]=o+1;O=c[O+104>>2]|0;a[O+(o*20|0)>>0]=49;b[O+(o*20|0)+2>>1]=0;c[O+(o*20|0)+4>>2]=i;c[O+(o*20|0)+8>>2]=m;c[O+(o*20|0)+12>>2]=0;c[O+(o*20|0)+16>>2]=0;a[O+(o*20|0)+1>>0]=0;Ra=P;return}else{Di(O,49,i,m,0)|0;Ra=P;return}}function sl(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;D=c[e>>2]|0;E=D+8|0;F=c[E>>2]|0;G=c[e+4>>2]|0;I=c[D>>2]|0;H=e+46|0;g=a[H>>0]|0;if(!(g<<24>>24))f=F+12|0;else{f=F+12|0;u=e+51|0;v=F+108|0;w=F+112|0;x=F+104|0;y=D+44|0;s=g&255;do{t=s;s=s+-1|0;m=c[e+752+(s*80|0)+64>>2]|0;r=e+752+(s*80|0)+45|0;do if((a[r>>0]|0)==-86){g=c[f>>2]|0;h=~c[e+752+(s*80|0)+24>>2];if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0){mk(g,F,h);break}else{c[(c[g+64>>2]|0)+(h<<2)>>2]=c[v>>2];break}}else{do if((((((a[u>>0]|0)==2?(t|0)==(d[H>>0]|0):0)?(c[m+36>>2]&512|0)!=0:0)?(A=c[m+32>>2]|0,q=A+55|0,((d[q>>0]|d[q+1>>0]<<8)&128)!=0):0)?(q=b[m+30>>1]|0,B=q&65535,q<<16>>16!=0):0)?(b[(c[A+8>>2]|0)+(B<<1)>>1]|0)>35:0){l=(c[y>>2]|0)+1|0;k=e+752+(s*80|0)+8|0;g=0;do{h=c[k>>2]|0;i=g+l|0;j=c[v>>2]|0;if((c[w>>2]|0)>(j|0)){c[v>>2]=j+1;q=c[x>>2]|0;a[q+(j*20|0)>>0]=90;b[q+(j*20|0)+2>>1]=0;c[q+(j*20|0)+4>>2]=h;c[q+(j*20|0)+8>>2]=g;c[q+(j*20|0)+12>>2]=i;c[q+(j*20|0)+16>>2]=0;a[q+(j*20|0)+1>>0]=0}else Di(F,90,h,g,i)|0;g=g+1|0}while((g|0)!=(B|0));i=a[r>>0]|0;c[y>>2]=B+1+(c[y>>2]|0);i=i<<24>>24==4?22:25;h=c[k>>2]|0;g=c[v>>2]|0;if((c[w>>2]|0)>(g|0)){c[v>>2]=g+1;q=c[x>>2]|0;a[q+(g*20|0)>>0]=i;b[q+(g*20|0)+2>>1]=0;c[q+(g*20|0)+4>>2]=h;c[q+(g*20|0)+8>>2]=0;c[q+(g*20|0)+12>>2]=l;c[q+(g*20|0)+16>>2]=0;a[q+(g*20|0)+1>>0]=0}else g=Di(F,i,h,0,l)|0;if(!(a[(c[F>>2]|0)+81>>0]|0)){q=c[x>>2]|0;a[q+(g*20|0)+1>>0]=-3;c[q+(g*20|0)+16>>2]=B}h=c[e+752+(s*80|0)+52>>2]|0;i=c[v>>2]|0;if((c[w>>2]|0)>(i|0)){c[v>>2]=i+1;q=c[x>>2]|0;a[q+(i*20|0)>>0]=11;b[q+(i*20|0)+2>>1]=0;c[q+(i*20|0)+4>>2]=1;c[q+(i*20|0)+8>>2]=h;c[q+(i*20|0)+12>>2]=0;c[q+(i*20|0)+16>>2]=0;a[q+(i*20|0)+1>>0]=0;break}else{Di(F,11,1,h,0)|0;break}}else g=0;while(0);h=c[f>>2]|0;i=~c[e+752+(s*80|0)+24>>2];if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0)mk(h,F,i);else c[(c[h+64>>2]|0)+(i<<2)>>2]=c[v>>2];h=a[r>>0]|0;i=c[e+752+(s*80|0)+48>>2]|0;j=c[e+752+(s*80|0)+52>>2]|0;k=d[e+752+(s*80|0)+46>>0]|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;q=c[x>>2]|0;a[q+(l*20|0)>>0]=h;b[q+(l*20|0)+2>>1]=0;c[q+(l*20|0)+4>>2]=i;c[q+(l*20|0)+8>>2]=j;c[q+(l*20|0)+12>>2]=k;c[q+(l*20|0)+16>>2]=0;a[q+(l*20|0)+1>>0]=0}else Di(F,h&255,i,j,k)|0;h=c[v>>2]|0;if((h|0)>0)b[(c[x>>2]|0)+((h+-1|0)*20|0)+2>>1]=d[e+752+(s*80|0)+47>>0]|0;if(g|0){if(!(a[(c[F>>2]|0)+81>>0]|0))g=(c[x>>2]|0)+(((g|0)<0?h+-1|0:g)*20|0)|0;else g=59308;c[g+8>>2]=h}}while(0);q=m+36|0;if(c[q>>2]&2048|0?(z=e+752+(s*80|0)+56|0,(c[z>>2]|0)>0):0){g=c[f>>2]|0;h=~c[e+752+(s*80|0)+16>>2];if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0)mk(g,F,h);else c[(c[g+64>>2]|0)+(h<<2)>>2]=c[v>>2];g=c[z>>2]|0;if((g|0)>0){p=e+752+(s*80|0)+8|0;o=g;n=(c[e+752+(s*80|0)+60>>2]|0)+((g+-1|0)*20|0)|0;l=c[v>>2]|0;h=a[(c[F>>2]|0)+81>>0]|0;while(1){m=n+4|0;g=c[m>>2]|0;if(!(h<<24>>24))g=(c[x>>2]|0)+(((g|0)<-1?l+-1|0:g+1|0)*20|0)|0;else g=59308;c[g+8>>2]=l;j=n+16|0;do if((a[j>>0]|0)!=-86){k=c[n+12>>2]|0;if(k|0){g=c[p>>2]|0;h=l+2|0;i=c[n+8>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;J=c[x>>2]|0;a[J+(l*20|0)>>0]=26;b[J+(l*20|0)+2>>1]=0;c[J+(l*20|0)+4>>2]=g;c[J+(l*20|0)+8>>2]=h;c[J+(l*20|0)+12>>2]=i;c[J+(l*20|0)+16>>2]=0;a[J+(l*20|0)+1>>0]=0;g=l}else g=Di(F,26,g,h,i)|0;if(!(a[(c[F>>2]|0)+81>>0]|0)){J=c[x>>2]|0;a[J+(g*20|0)+1>>0]=-3;c[J+(g*20|0)+16>>2]=k}}g=a[j>>0]|0;h=c[n>>2]|0;i=c[m>>2]|0;j=c[v>>2]|0;if((c[w>>2]|0)>(j|0)){c[v>>2]=j+1;J=c[x>>2]|0;a[J+(j*20|0)>>0]=g;b[J+(j*20|0)+2>>1]=0;c[J+(j*20|0)+4>>2]=h;c[J+(j*20|0)+8>>2]=i;c[J+(j*20|0)+12>>2]=0;c[J+(j*20|0)+16>>2]=0;a[J+(j*20|0)+1>>0]=0;break}else{Di(F,g&255,h,i,0)|0;break}}while(0);g=c[m>>2]|0;l=c[v>>2]|0;h=a[(c[F>>2]|0)+81>>0]|0;if(!(h<<24>>24))g=(c[x>>2]|0)+((((g|0)<1?l:g)+-1|0)*20|0)|0;else g=59308;c[g+8>>2]=l;if((o|0)<=1)break;else{o=o+-1|0;n=n+-20|0}}}}g=c[f>>2]|0;h=~c[e+752+(s*80|0)+12>>2];if(((c[g+56>>2]|0)+(c[g+60>>2]|0)|0)<0)mk(g,F,h);else c[(c[g+64>>2]|0)+(h<<2)>>2]=c[v>>2];g=e+752+(s*80|0)+20|0;h=c[g>>2]|0;if(h|0){i=c[v>>2]|0;if((c[w>>2]|0)>(i|0)){c[v>>2]=i+1;J=c[x>>2]|0;a[J+(i*20|0)>>0]=11;b[J+(i*20|0)+2>>1]=0;c[J+(i*20|0)+4>>2]=0;c[J+(i*20|0)+8>>2]=h;c[J+(i*20|0)+12>>2]=0;c[J+(i*20|0)+16>>2]=0;a[J+(i*20|0)+1>>0]=0}else Di(F,11,0,h,0)|0;g=c[g>>2]|0;h=c[v>>2]|0;if(!(a[(c[F>>2]|0)+81>>0]|0)){J=h+-1|0;p=c[x>>2]|0;c[p+(((g|0)<0?J:g)*20|0)+8>>2]=h;g=p+(((g|0)<2?J:g+-2|0)*20|0)|0}else{c[14829]=h;g=59308}c[g+8>>2]=h}g=c[e+752+(s*80|0)+40>>2]|0;do if(g|0){h=(c[e+752+(s*80|0)+36>>2]|0)>>>1;i=c[v>>2]|0;if((c[w>>2]|0)>(i|0)){c[v>>2]=i+1;J=c[x>>2]|0;a[J+(i*20|0)>>0]=49;b[J+(i*20|0)+2>>1]=0;c[J+(i*20|0)+4>>2]=h;c[J+(i*20|0)+8>>2]=g;c[J+(i*20|0)+12>>2]=0;c[J+(i*20|0)+16>>2]=0;a[J+(i*20|0)+1>>0]=0;break}else{Di(F,49,h,g,0)|0;break}}while(0);h=c[e+752+(s*80|0)>>2]|0;if(h|0){i=c[q>>2]|0;g=c[v>>2]|0;if((c[w>>2]|0)>(g|0)){c[v>>2]=g+1;j=c[x>>2]|0;a[j+(g*20|0)>>0]=47;b[j+(g*20|0)+2>>1]=0;c[j+(g*20|0)+4>>2]=h;c[j+(g*20|0)+8>>2]=0;c[j+(g*20|0)+12>>2]=0;c[j+(g*20|0)+16>>2]=0;a[j+(g*20|0)+1>>0]=0;j=g}else j=Di(F,47,h,0,0)|0;do if(!(i&64)){g=c[e+752+(s*80|0)+4>>2]|0;h=c[v>>2]|0;if((c[w>>2]|0)>(h|0)){c[v>>2]=h+1;J=c[x>>2]|0;a[J+(h*20|0)>>0]=-127;b[J+(h*20|0)+2>>1]=0;c[J+(h*20|0)+4>>2]=g;c[J+(h*20|0)+8>>2]=0;c[J+(h*20|0)+12>>2]=0;c[J+(h*20|0)+16>>2]=0;a[J+(h*20|0)+1>>0]=0;break}else{Di(F,129,g,0,0)|0;break}}while(0);if(!(i&512)){if(i&8192|0?c[e+752+(s*80|0)+56>>2]|0:0)C=87}else C=87;do if((C|0)==87){C=0;g=c[e+752+(s*80|0)+8>>2]|0;h=c[v>>2]|0;if((c[w>>2]|0)>(h|0)){c[v>>2]=h+1;J=c[x>>2]|0;a[J+(h*20|0)>>0]=-127;b[J+(h*20|0)+2>>1]=0;c[J+(h*20|0)+4>>2]=g;c[J+(h*20|0)+8>>2]=0;c[J+(h*20|0)+12>>2]=0;c[J+(h*20|0)+16>>2]=0;a[J+(h*20|0)+1>>0]=0;break}else{Di(F,129,g,0,0)|0;break}}while(0);do if((a[r>>0]|0)==66){g=c[e+752+(s*80|0)+48>>2]|0;h=c[e+752+(s*80|0)+28>>2]|0;i=c[v>>2]|0;if((c[w>>2]|0)>(i|0)){c[v>>2]=i+1;J=c[x>>2]|0;a[J+(i*20|0)>>0]=12;b[J+(i*20|0)+2>>1]=0;c[J+(i*20|0)+4>>2]=g;c[J+(i*20|0)+8>>2]=h;c[J+(i*20|0)+12>>2]=0;c[J+(i*20|0)+16>>2]=0;a[J+(i*20|0)+1>>0]=0;break}else{Di(F,12,g,h,0)|0;break}}else{g=c[e+752+(s*80|0)+28>>2]|0;h=c[v>>2]|0;if((c[w>>2]|0)>(h|0)){c[v>>2]=h+1;J=c[x>>2]|0;a[J+(h*20|0)>>0]=11;b[J+(h*20|0)+2>>1]=0;c[J+(h*20|0)+4>>2]=0;c[J+(h*20|0)+8>>2]=g;c[J+(h*20|0)+12>>2]=0;c[J+(h*20|0)+16>>2]=0;a[J+(h*20|0)+1>>0]=0;break}else{Di(F,11,0,g,0)|0;break}}while(0);h=c[v>>2]|0;if(!(a[(c[F>>2]|0)+81>>0]|0))g=(c[x>>2]|0)+(((j|0)<0?h+-1|0:j)*20|0)|0;else g=59308;c[g+8>>2]=h}}while((t|0)>1)}f=c[f>>2]|0;g=~c[e+36>>2];if(((c[f+56>>2]|0)+(c[f+60>>2]|0)|0)<0)mk(f,F,g);else c[(c[f+64>>2]|0)+(g<<2)>>2]=c[F+108>>2];f=a[H>>0]|0;a:do if(f<<24>>24){y=e+49|0;z=I+81|0;x=F+108|0;A=F+104|0;B=f&255;v=e+752|0;w=0;while(1){g=d[v+44>>0]|0;i=c[G+8+(g*72|0)+16>>2]|0;h=c[v+64>>2]|0;do if(!(a[G+8+(g*72|0)+37>>0]&16)){g=c[h+36>>2]|0;if(!(g&576)){if(!(g&8192))break;g=v+56|0}else g=h+32|0;g=c[g>>2]|0;if(g|0){if(a[y>>0]|0?(c[(c[g+12>>2]|0)+36>>2]&32|0)==0:0)break;if(!(a[z>>0]|0)){r=c[x>>2]|0;j=c[v+32>>2]|0;if(!(a[(c[F>>2]|0)+81>>0]|0))h=(c[A>>2]|0)+(((j|0)<0?r+-1|0:j)*20|0)|0;else h=59308;if((j|0)<(r|0)){s=i+36|0;t=v+8|0;u=g+52|0;q=i+8|0;p=g+4|0;o=c[v+4>>2]|0;while(1){m=h+4|0;b:do if((c[m>>2]|0)==(o|0))switch(a[h>>0]|0){case 90:{n=h+8|0;g=c[n>>2]|0;if(c[s>>2]&32){i=q;while(1){i=c[i>>2]|0;J=i+55|0;if(((d[J>>0]|d[J+1>>0]<<8)&3)==2)break;else i=i+20|0}g=b[(c[i+4>>2]|0)+(g<<1)>>1]|0}k=g&65535;g=b[u>>1]|0;if(!(g<<16>>16))break b;l=c[p>>2]|0;i=g&65535;g=0;while(1){if((b[l+(g<<1)>>1]|0)==k<<16>>16)break;g=g+1|0;if(g>>>0>=i>>>0)break b}if((g&65535)<<16>>16<=-1)break b;c[n>>2]=g<<16>>16;c[m>>2]=c[t>>2];break b}case -128:{c[m>>2]=c[t>>2];a[h>>0]=-121;break b}case 21:{c[m>>2]=c[t>>2];break b}default:break b}while(0);j=j+1|0;if((j|0)==(r|0))break;else h=h+20|0}}}}}else{k=c[v+32>>2]|0;m=c[v+4>>2]|0;l=c[G+8+(g*72|0)+32>>2]|0;h=c[E>>2]|0;if((k|0)<0)g=(c[h+108>>2]|0)+-1|0;else g=k;if(!(a[(c[h>>2]|0)+81>>0]|0))g=(c[h+104>>2]|0)+(g*20|0)|0;else g=59308;j=c[h+108>>2]|0;if((j|0)>(k|0)?(a[(c[D>>2]|0)+81>>0]|0)==0:0){i=g;g=k;while(1){h=i+4|0;c:do if((c[h>>2]|0)==(m|0))switch(a[i>>0]|0){case 90:{a[i>>0]=78;C=i+8|0;c[h>>2]=(c[C>>2]|0)+l;J=i+12|0;c[C>>2]=c[J>>2];c[J>>2]=0;break c}case -128:{a[i>>0]=73;c[h>>2]=0;c[i+12>>2]=0;break c}default:break c}while(0);g=g+1|0;if((g|0)==(j|0))break;else i=i+20|0}}}while(0);w=w+1|0;if(w>>>0>=B>>>0)break;else v=v+80|0}c[D+132>>2]=c[e+40>>2];if(f<<24>>24){h=I+480|0;i=I+304|0;j=I+308|0;k=I+300|0;if(!I){g=0;while(1){J=c[e+752+(g*80|0)+64>>2]|0;if((J|0)!=0?(c[J+36>>2]&2048|0)!=0:0){f=c[e+752+(g*80|0)+60>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{J=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);f=a[H>>0]|0}g=g+1|0;if(g>>>0>=(f&255)>>>0)break a}}g=0;do{J=c[e+752+(g*80|0)+64>>2]|0;if((J|0)!=0?(c[J+36>>2]&2048|0)!=0:0){f=c[e+752+(g*80|0)+60>>2]|0;do if(f|0){if(c[h>>2]|0){Xd(I,f);break}J=f;if((c[i>>2]|0)>>>0<=J>>>0?(c[j>>2]|0)>>>0>J>>>0:0){c[f>>2]=c[k>>2];c[k>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{J=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=a[H>>0]|0}g=g+1|0}while(g>>>0<(f&255)>>>0)}}else c[D+132>>2]=c[e+40>>2];while(0);om(e+80|0);g=e+60|0;f=c[g>>2]|0;if(f|0)do{c[g>>2]=c[f+52>>2];$l(I,f);f=c[g>>2]|0}while((f|0)!=0);if(I|0){if(c[I+480>>2]|0){Xd(I,e);return}J=e;if((c[I+304>>2]|0)>>>0<=J>>>0?(c[I+308>>2]|0)>>>0>J>>>0:0){J=I+300|0;c[e>>2]=c[J>>2];c[J>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{J=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}function tl(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;E=d+8|0;H=c[E>>2]|0;a[f>>0]=1;C=f+44|0;if((c[C>>2]|0)>0){r=d+56|0;s=d+19|0;t=d+32|0;u=d+28|0;v=H+108|0;w=H+112|0;y=d+44|0;z=H+104|0;A=f+36|0;B=H+12|0;p=c[f+40>>2]|0;g=0;q=0;while(1){k=c[(c[p>>2]|0)+20>>2]|0;if(!k){h=0;o=0}else{j=c[k>>2]|0;do if((j|0)==1){h=a[s>>0]|0;if(!(h<<24>>24)){h=(c[y>>2]|0)+1|0;c[y>>2]=h;break}else{h=h+-1<<24>>24;a[s>>0]=h;h=c[d+148+((h&255)<<2)>>2]|0;break}}else{h=c[t>>2]|0;i=c[u>>2]|0;if((i|0)<(j|0)){h=c[y>>2]|0;c[y>>2]=h+j;h=h+1|0;break}else{c[t>>2]=h+j;c[u>>2]=i-j;break}}while(0);Oj(d,k,h,0,1);o=j}i=c[p+12>>2]|0;if((i|0)>-1){n=(c[r>>2]|0)+-1|0;c[r>>2]=n;ym(d,i,n,1,h)}else n=0;m=p+4|0;do if(c[(c[m>>2]|0)+4>>2]&32){if((o|0)>0){l=0;i=k+4|0;while(1){j=Yi(d,c[i>>2]|0)|0;l=l+1|0;k=(j|0)!=0;if(!((l|0)<(o|0)&(k^1)))break;else i=i+20|0}if(!k)G=19}else G=19;if((G|0)==19){G=0;j=c[(c[d>>2]|0)+8>>2]|0}if(!g)if(!(c[A>>2]|0))g=0;else{g=(c[y>>2]|0)+1|0;c[y>>2]=g}i=c[v>>2]|0;if((c[w>>2]|0)>(i|0)){c[v>>2]=i+1;l=c[z>>2]|0;a[l+(i*20|0)>>0]=82;b[l+(i*20|0)+2>>1]=0;c[l+(i*20|0)+4>>2]=g;c[l+(i*20|0)+8>>2]=0;c[l+(i*20|0)+12>>2]=0;c[l+(i*20|0)+16>>2]=0;a[l+(i*20|0)+1>>0]=0}else i=Di(H,82,g,0,0)|0;if(!(a[(c[H>>2]|0)+81>>0]|0)){if((i|0)<0)i=(c[v>>2]|0)+-1|0;k=c[z>>2]|0;l=k+(i*20|0)+1|0;if(a[l>>0]|0){Ei(H,k+(i*20|0)|0,j,-2);break}if(j){c[k+(i*20|0)+16>>2]=j;a[l>>0]=-2}}}while(0);i=c[p+8>>2]|0;j=c[v>>2]|0;if((c[w>>2]|0)>(j|0)){c[v>>2]=j+1;l=c[z>>2]|0;a[l+(j*20|0)>>0]=-102;b[l+(j*20|0)+2>>1]=0;c[l+(j*20|0)+4>>2]=0;c[l+(j*20|0)+8>>2]=h;c[l+(j*20|0)+12>>2]=i;c[l+(j*20|0)+16>>2]=0;a[l+(j*20|0)+1>>0]=0}else Di(H,154,0,h,i)|0;i=c[m>>2]|0;j=c[H>>2]|0;do if(a[j+81>>0]|0){if(c[i+4>>2]&16|0){if(j|0){if(c[j+480>>2]|0){Xd(j,i);break}m=i;if((c[j+304>>2]|0)>>>0<=m>>>0?(c[j+308>>2]|0)>>>0>m>>>0:0){m=j+300|0;c[i>>2]=c[m>>2];c[m>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{m=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}}else{l=c[z>>2]|0;m=(c[v>>2]|0)+-1|0;a[l+(m*20|0)+1>>0]=-8;c[l+(m*20|0)+16>>2]=i}while(0);i=c[v>>2]|0;if((i|0)>0)b[(c[z>>2]|0)+((i+-1|0)*20|0)+2>>1]=o&255;if((o|0)==1){if(h|0?(x=a[s>>0]|0,(x&255)<8):0){a[s>>0]=x+1<<24>>24;c[d+148+((x&255)<<2)>>2]=h}}else if((c[u>>2]|0)<(o|0)){c[u>>2]=o;c[t>>2]=h}do if(n|0){i=c[B>>2]|0;h=~n;if(((c[i+56>>2]|0)+(c[i+60>>2]|0)|0)<0){mk(i,H,h);break}else{c[(c[i+64>>2]|0)+(h<<2)>>2]=c[v>>2];break}}while(0);q=q+1|0;if((q|0)>=(c[C>>2]|0))break;else p=p+16|0}if(g)G=63;else G=62}else G=62;if((G|0)==62)if((e|0)==0|(c[f+36>>2]|0)==0)i=0;else{g=e;G=63}do if((G|0)==63){h=H+108|0;i=c[h>>2]|0;if((c[H+112>>2]|0)>(i|0)){c[h>>2]=i+1;C=c[H+104>>2]|0;a[C+(i*20|0)>>0]=18;b[C+(i*20|0)+2>>1]=0;c[C+(i*20|0)+4>>2]=g;c[C+(i*20|0)+8>>2]=0;c[C+(i*20|0)+12>>2]=0;c[C+(i*20|0)+16>>2]=0;a[C+(i*20|0)+1>>0]=0;break}else{i=Di(H,18,g,0,0)|0;break}}while(0);n=f+36|0;if((c[n>>2]|0)>0){l=c[f+28>>2]|0;m=0;while(1){g=c[l+20>>2]|0;o=c[l+16>>2]|0;do if(g){if((a[g>>0]|0)!=-88){F=Jj(d,g,o)|0;G=75;break}k=c[E>>2]|0;g=c[g+28>>2]|0;h=k+108|0;j=c[h>>2]|0;if((c[k+112>>2]|0)>(j|0)){c[h>>2]=j+1;C=c[k+104>>2]|0;a[C+(j*20|0)>>0]=78;b[C+(j*20|0)+2>>1]=0;c[C+(j*20|0)+4>>2]=g;c[C+(j*20|0)+8>>2]=o;c[C+(j*20|0)+12>>2]=0;c[C+(j*20|0)+16>>2]=0;a[C+(j*20|0)+1>>0]=0;break}else{Di(k,78,g,o,0)|0;break}}else{F=Jj(d,0,o)|0;G=75}while(0);do if(((G|0)==75?(G=0,(F|0)!=(o|0)):0)?(D=c[E>>2]|0,D|0):0){g=D+108|0;h=c[g>>2]|0;if((c[D+112>>2]|0)>(h|0)){c[g>>2]=h+1;C=c[D+104>>2]|0;a[C+(h*20|0)>>0]=79;b[C+(h*20|0)+2>>1]=0;c[C+(h*20|0)+4>>2]=F;c[C+(h*20|0)+8>>2]=o;c[C+(h*20|0)+12>>2]=0;c[C+(h*20|0)+16>>2]=0;a[C+(h*20|0)+1>>0]=0;break}else{Di(D,79,F,o,0)|0;break}}while(0);m=m+1|0;if((m|0)>=(c[n>>2]|0))break;else l=l+24|0}}a[f>>0]=0;if(!i)return;h=c[H+108>>2]|0;if(!(a[(c[H>>2]|0)+81>>0]|0))g=(c[H+104>>2]|0)+(((i|0)<0?h+-1|0:i)*20|0)|0;else g=59308;c[g+8>>2]=h;return}function ul(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=Ra;Ra=Ra+16|0;t=u;r=c[d+8>>2]|0;s=f+44|0;if((c[s>>2]|0)==(0-(c[f+32>>2]|0)|0)){Ra=u;return}g=c[f+16>>2]|0;h=c[f+20>>2]|0;p=r+108|0;i=c[p>>2]|0;q=r+112|0;if((c[q>>2]|0)>(i|0)){c[p>>2]=i+1;o=c[r+104>>2]|0;a[o+(i*20|0)>>0]=73;b[o+(i*20|0)+2>>1]=0;c[o+(i*20|0)+4>>2]=0;c[o+(i*20|0)+8>>2]=g;c[o+(i*20|0)+12>>2]=h;c[o+(i*20|0)+16>>2]=0;a[o+(i*20|0)+1>>0]=0}else Di(r,73,0,g,h)|0;if((c[s>>2]|0)<=0){Ra=u;return}o=r+104|0;m=c[f+40>>2]|0;n=0;while(1){k=m+12|0;do if((c[k>>2]|0)>-1){j=c[(c[m>>2]|0)+20>>2]|0;if(j|0?(c[j>>2]|0)==1:0){i=c[d>>2]|0;f=i+272|0;a:do if(c[f>>2]|0)if(!(a[i+81>>0]|0))l=21;else{j=0;f=1}else{do if((e[i+276>>1]|0)>=30){g=i+300|0;h=c[g>>2]|0;if(h|0){c[g>>2]=c[h>>2];l=i+284|0;c[l>>2]=(c[l>>2]|0)+1;l=22;break a}g=i+296|0;h=c[g>>2]|0;if(!h){g=i+292|0;break}else{c[g>>2]=c[h>>2];l=i+284|0;c[l>>2]=(c[l>>2]|0)+1;l=22;break a}}else g=i+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;l=21}while(0);if((l|0)==21){h=_d(i,30,0)|0;l=22}do if((l|0)==22){l=0;if(!h){g=i+81|0;if((a[g>>0]|0)==0?(a[i+82>>0]|0)==0:0){a[g>>0]=1;if((c[i+180>>2]|0)>0)c[i+264>>2]=1;c[f>>2]=(c[f>>2]|0)+1;g=c[i+236>>2]|0;if(g|0)c[g+12>>2]=7}if(!h){j=0;f=1;break}else{i=0;f=1}}else{c[h+16>>2]=h+28;b[h+6>>1]=1;b[h+8>>1]=2;a[h+4>>0]=a[i+78>>0]|0;c[h+12>>2]=i;c[h>>2]=1;i=h+24|0;c[i>>2]=0;b[i+4>>1]=0;i=h;f=0}g=Yi(d,c[j+4>>2]|0)|0;if(!g)g=c[(c[d>>2]|0)+8>>2]|0;c[h+20>>2]=g;a[c[h+16>>2]>>0]=a[j+16>>0]|0;j=i}while(0);h=c[k>>2]|0;g=c[p>>2]|0;if((c[q>>2]|0)>(g|0)){c[p>>2]=g+1;k=c[o>>2]|0;a[k+(g*20|0)>>0]=113;b[k+(g*20|0)+2>>1]=0;c[k+(g*20|0)+4>>2]=h;c[k+(g*20|0)+8>>2]=0;c[k+(g*20|0)+12>>2]=0;c[k+(g*20|0)+16>>2]=0;a[k+(g*20|0)+1>>0]=0}else g=Di(r,113,h,0,0)|0;h=c[r>>2]|0;if(!(a[h+81>>0]|0)){if((g|0)<0)g=(c[p>>2]|0)+-1|0;h=c[o>>2]|0;i=h+(g*20|0)+1|0;if(a[i>>0]|0){Ei(r,h+(g*20|0)|0,j,-9);break}if(f)break;c[h+(g*20|0)+16>>2]=j;a[i>>0]=-9;break}if(f|(c[h+480>>2]|0)!=0)break;k=(c[j>>2]|0)+-1|0;c[j>>2]=k;if(k|0)break;g=c[j+12>>2]|0;if(g|0){if(c[g+480>>2]|0){Xd(g,j);break}k=j;if((c[g+304>>2]|0)>>>0<=k>>>0?(c[g+308>>2]|0)>>>0>k>>>0:0){k=g+300|0;c[j>>2]=c[k>>2];c[k>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{k=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}cd(d,44342,t);c[k>>2]=-1}while(0);n=n+1|0;if((n|0)>=(c[s>>2]|0))break;else m=m+16|0}Ra=u;return}function vl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[d+24>>2]|0;i=c[d>>2]|0;d=a[e>>0]|0;a:do if(!(c[j+12>>2]|0)){switch(d<<24>>24){case -94:case -93:break a;case -95:break;default:{j=0;return j|0}}if(!(c[e+4>>2]&16777216)){j=0;return j|0}d=c[j>>2]|0;if(d|0){f=c[e+44>>2]|0;while(1){if((f|0)==(d|0)){d=1;break}d=c[d+32>>2]|0;if(!d)break a}return d|0}}else{if(d<<24>>24!=-94){j=0;return j|0}f=c[j+4>>2]|0;h=c[f>>2]|0;b:do if((h|0)>0){g=c[e+28>>2]|0;d=0;do{if((g|0)==(c[f+8+(d*72|0)+40>>2]|0))break b;d=d+1|0}while((d|0)<(h|0))}else d=0;while(0);if((d|0)==(h|0)){j=0;return j|0}}while(0);h=dk(c[i>>2]|0,e,0,0)|0;g=j+8|0;h=nj(c[i>>2]|0,c[g>>2]|0,h)|0;c[g>>2]=h;if(!h){j=0;return j|0}d=e+4|0;c[d>>2]=c[d>>2]|134217728;ni(c[i>>2]|0,e);c[d>>2]=c[d>>2]&-134217729;d=e;f=d+52|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(f|0));a[e>>0]=-94;b[e+32>>1]=(c[c[g>>2]>>2]|0)+65535;c[e+28>>2]=c[(c[j>>2]|0)+44>>2];j=0;return j|0}function wl(a,b){a=a|0;b=b|0;var d=0,e=0;d=(c[a+24>>2]|0)+12|0;e=c[d>>2]|0;if((e|0)==(b|0)){e=0;return e|0}c[d>>2]=b;$j(a,b)|0;c[d>>2]=e;e=1;return e|0}function xl(b,d){b=b|0;d=d|0;if(c[d+4>>2]&1|0){d=1;return d|0}switch(a[d>>0]|0){case -94:{if((c[b+24>>2]|0)!=(c[d+28>>2]|0)){d=1;return d|0}a[b+20>>0]=1;d=2;return d|0}case 57:case 54:case 55:case 56:case 52:case 53:{b=c[d+12>>2]|0;if((a[b>>0]|0)==-94?c[(c[b+44>>2]|0)+56>>2]|0:0){d=1;return d|0}d=c[d+16>>2]|0;if((a[d>>0]|0)==-94?c[(c[d+44>>2]|0)+56>>2]|0:0){d=1;return d|0}break}case -95:case 49:case -107:case 43:case 45:case 51:case 50:case 19:case -96:{d=1;return d|0}default:{}}d=0;return d|0}function yl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if(!d)return;h=(e|0)==0;while(1){f=c[d>>2]|0;if(f|0?(c[f>>2]|0)>0:0){e=0;do{g=f+4+(e*20|0)|0;j=zl(b,c[g>>2]|0)|0;c[g>>2]=j;e=e+1|0}while((e|0)<(c[f>>2]|0))}f=c[d+40>>2]|0;if(f|0?(c[f>>2]|0)>0:0){e=0;do{j=f+4+(e*20|0)|0;g=zl(b,c[j>>2]|0)|0;c[j>>2]=g;e=e+1|0}while((e|0)<(c[f>>2]|0))}f=c[d+48>>2]|0;if(f|0?(c[f>>2]|0)>0:0){e=0;do{j=f+4+(e*20|0)|0;g=zl(b,c[j>>2]|0)|0;c[j>>2]=g;e=e+1|0}while((e|0)<(c[f>>2]|0))}e=d+44|0;f=zl(b,c[e>>2]|0)|0;c[e>>2]=f;e=d+36|0;f=zl(b,c[e>>2]|0)|0;c[e>>2]=f;e=c[d+32>>2]|0;f=c[e>>2]|0;if((f|0)>0){g=e+8|0;while(1){yl(b,c[g+20>>2]|0,1);if((a[g+37>>0]&4?(i=c[g+64>>2]|0,i|0):0)?(c[i>>2]|0)>0:0){e=0;do{j=i+4+(e*20|0)|0;k=zl(b,c[j>>2]|0)|0;c[j>>2]=k;e=e+1|0}while((e|0)<(c[i>>2]|0))}if((f|0)>1){g=g+72|0;f=f+-1|0}else break}}if(h){e=25;break}d=c[d+52>>2]|0;if(!d){e=25;break}}if((e|0)==25)return}function zl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+64|0;j=o+8|0;i=o;f=o+12|0;if(!e){n=0;Ra=o;return n|0}n=e+4|0;if(c[n>>2]&1|0?(g=e+36|0,(c[d+4>>2]|0)==(b[g>>1]|0)):0)b[g>>1]=c[d+8>>2];switch(a[e>>0]|0){case -94:{if((c[e+28>>2]|0)==(c[d+4>>2]|0)){g=b[e+32>>1]|0;if(g<<16>>16<0){a[e>>0]=114;n=e;Ra=o;return n|0}l=c[(c[d+16>>2]|0)+4+((g<<16>>16)*20|0)>>2]|0;k=a[l>>0]|0;if(k<<24>>24==-88)g=a[l+38>>0]|0;else g=k;switch(g<<24>>24){case -87:{h=l+20|0;m=15;break}case -125:{h=c[l+20>>2]|0;m=15;break}default:{g=c[d>>2]|0;m=19}}do if((m|0)==15){g=c[d>>2]|0;if((c[c[h>>2]>>2]|0)>=2)if(!(c[l+4>>2]&2048)){cd(g,38899,j);break}else{c[i>>2]=c[c[c[l+20>>2]>>2]>>2];c[i+4>>2]=1;cd(g,39001,i);break}else m=19}while(0);if((m|0)==19){j=c[g>>2]|0;i=d+12|0;if(k<<24>>24==-94|(c[i>>2]|0)==0)if(!l)f=0;else{f=l;m=22}else{g=f;h=g+52|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));a[f>>0]=-85;c[f+12>>2]=l;c[f+28>>2]=c[d+8>>2];m=22}if((m|0)==22){f=dk(j,f,0,0)|0;if(f){if(c[i>>2]|0){d=f+4|0;c[d>>2]=c[d>>2]|1048576}if(c[n>>2]&1){b[f+36>>1]=b[e+36>>1]|0;n=f+4|0;c[n>>2]=c[n>>2]|1}}else f=0}ni(j,e);e=f}n=e;Ra=o;return n|0}break}case -85:{f=e+28|0;if((c[f>>2]|0)==(c[d+4>>2]|0))c[f>>2]=c[d+8>>2];break}default:{}}f=e+12|0;m=zl(d,c[f>>2]|0)|0;c[f>>2]=m;f=e+16|0;m=zl(d,c[f>>2]|0)|0;c[f>>2]=m;f=e+20|0;if(c[n>>2]&2048|0){yl(d,c[f>>2]|0,1);n=e;Ra=o;return n|0}g=c[f>>2]|0;if(!g){n=e;Ra=o;return n|0}if((c[g>>2]|0)<=0){n=e;Ra=o;return n|0}f=0;do{n=g+4+(f*20|0)|0;m=zl(d,c[n>>2]|0)|0;c[n>>2]=m;f=f+1|0}while((f|0)<(c[g>>2]|0));Ra=o;return e|0}function Al(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=Ra;Ra=Ra+80|0;G=I+40|0;F=I+32|0;p=I+24|0;j=I+16|0;i=I+8|0;E=I+48|0;k=c[e+32>>2]|0;l=c[c[e>>2]>>2]|0;H=c[d+8>>2]|0;C=e+52|0;D=c[C>>2]|0;if(c[e+68>>2]|0){cd(d,43323,I);Ra=I;return}g=c[d>>2]|0;do if(((a[g+165>>0]|0)==0?(a[d+200>>0]|0)==0:0)?(h=c[g+312>>2]|0,h|0):0){g=$a[h&127](c[g+316>>2]|0,33,0,0,0,c[d+240>>2]|0)|0;if((g|0)==1){cd(d,39216,i);c[d+12>>2]=23;Ra=I;return}if((g|2|0)==2){if(!g)break;Ra=I;return}else{cd(d,39231,j);c[d+12>>2]=1;Ra=I;return}}while(0);s=d+56|0;x=c[s>>2]|0;v=x+-1|0;c[s>>2]=v;b[e+6>>1]=320;pl(d,e,v);y=e+60|0;z=c[y>>2]|0;A=e+12|0;w=c[A>>2]|0;B=e+16|0;t=c[B>>2]|0;c[y>>2]=0;c[B>>2]=0;c[A>>2]=0;A=e+48|0;B=c[A>>2]|0;h=c[k>>2]|0;a:do if((h|0)>0){g=0;while(1){if(a[k+8+(g*72|0)+37>>0]&32)break;g=g+1|0;if((g|0)>=(h|0)){q=0;break a}}q=c[k+8+(g*72|0)+40>>2]|0}else q=0;while(0);g=d+40|0;o=c[g>>2]|0;h=o+1|0;c[g>>2]=h;m=(B|0)!=0;if((a[e+4>>0]|0)==127){c[g>>2]=o+2;g=m?8:6}else{h=0;g=m?7:5}a[E>>0]=g;c[E+4>>2]=o;c[E+16>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;u=d+44|0;n=(c[u>>2]|0)+1|0;c[u>>2]=n;u=H+108|0;g=c[u>>2]|0;r=H+112|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;k=c[H+104>>2]|0;a[k+(g*20|0)>>0]=116;b[k+(g*20|0)+2>>1]=0;c[k+(g*20|0)+4>>2]=q;c[k+(g*20|0)+8>>2]=n;c[k+(g*20|0)+12>>2]=l;c[k+(g*20|0)+16>>2]=0;a[k+(g*20|0)+1>>0]=0}else Di(H,116,q,n,l)|0;do if(!m){g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;k=c[H+104>>2]|0;a[k+(g*20|0)>>0]=113;b[k+(g*20|0)+2>>1]=0;c[k+(g*20|0)+4>>2]=o;c[k+(g*20|0)+8>>2]=l;c[k+(g*20|0)+12>>2]=0;c[k+(g*20|0)+16>>2]=0;a[k+(g*20|0)+1>>0]=0;break}else{Di(H,113,o,l,0)|0;break}}else{k=Dl(d,e)|0;i=(c[B>>2]|0)+2|0;g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;l=c[H+104>>2]|0;a[l+(g*20|0)>>0]=113;b[l+(g*20|0)+2>>1]=0;c[l+(g*20|0)+4>>2]=o;c[l+(g*20|0)+8>>2]=i;c[l+(g*20|0)+12>>2]=0;c[l+(g*20|0)+16>>2]=0;a[l+(g*20|0)+1>>0]=0}else g=Di(H,113,o,i,0)|0;i=c[H>>2]|0;do if(!(a[i+81>>0]|0)){if((g|0)<0)g=(c[u>>2]|0)+-1|0;i=c[H+104>>2]|0;j=i+(g*20|0)+1|0;if(a[j>>0]|0){Ei(H,i+(g*20|0)|0,k,-9);break}if(k|0){c[i+(g*20|0)+16>>2]=k;a[j>>0]=-9}}else if(!((k|0)==0|(c[i+480>>2]|0)!=0)?(l=(c[k>>2]|0)+-1|0,c[k>>2]=l,(l|0)==0):0){g=c[k+12>>2]|0;if(g|0){if(c[g+480>>2]|0){Xd(g,k);break}l=k;if((c[g+304>>2]|0)>>>0<=l>>>0?(c[g+308>>2]|0)>>>0>l>>>0:0){l=g+300|0;c[k>>2]=c[l>>2];c[l>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{l=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[E+20>>2]=B}while(0);if(h|0){g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;l=c[H+104>>2]|0;a[l+(g*20|0)>>0]=113;b[l+(g*20|0)+2>>1]=0;c[l+(g*20|0)+4>>2]=h;c[l+(g*20|0)+8>>2]=0;c[l+(g*20|0)+12>>2]=0;c[l+(g*20|0)+16>>2]=0;a[l+(g*20|0)+1>>0]=0}else g=Di(H,113,h,0,0)|0;c[e+24>>2]=g;l=e+8|0;c[l>>2]=c[l>>2]|32}c[A>>2]=0;l=D+56|0;c[l>>2]=0;nk(d,1,43372,p);p=kj(d,D,E)|0;c[l>>2]=e;do if(!p){g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;k=c[H+104>>2]|0;a[k+(g*20|0)>>0]=36;b[k+(g*20|0)+2>>1]=0;c[k+(g*20|0)+4>>2]=o;c[k+(g*20|0)+8>>2]=v;c[k+(g*20|0)+12>>2]=0;c[k+(g*20|0)+16>>2]=0;a[k+(g*20|0)+1>>0]=0;k=g}else k=Di(H,36,o,v,0)|0;g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;p=c[H+104>>2]|0;a[p+(g*20|0)>>0]=-127;b[p+(g*20|0)+2>>1]=0;c[p+(g*20|0)+4>>2]=q;c[p+(g*20|0)+8>>2]=0;c[p+(g*20|0)+12>>2]=0;c[p+(g*20|0)+16>>2]=0;a[p+(g*20|0)+1>>0]=0}else Di(H,129,q,0,0)|0;do if(m){g=(c[B>>2]|0)+1|0;h=c[u>>2]|0;if((c[r>>2]|0)>(h|0)){c[u>>2]=h+1;p=c[H+104>>2]|0;a[p+(h*20|0)>>0]=90;b[p+(h*20|0)+2>>1]=0;c[p+(h*20|0)+4>>2]=o;c[p+(h*20|0)+8>>2]=g;c[p+(h*20|0)+12>>2]=n;c[p+(h*20|0)+16>>2]=0;a[p+(h*20|0)+1>>0]=0;break}else{Di(H,90,o,g,n)|0;break}}else{g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;p=c[H+104>>2]|0;a[p+(g*20|0)>>0]=127;b[p+(g*20|0)+2>>1]=0;c[p+(g*20|0)+4>>2]=o;c[p+(g*20|0)+8>>2]=n;c[p+(g*20|0)+12>>2]=0;c[p+(g*20|0)+16>>2]=0;a[p+(g*20|0)+1>>0]=0;break}else{Di(H,127,o,n,0)|0;break}}while(0);g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;p=c[H+104>>2]|0;a[p+(g*20|0)>>0]=123;b[p+(g*20|0)+2>>1]=0;c[p+(g*20|0)+4>>2]=o;c[p+(g*20|0)+8>>2]=0;c[p+(g*20|0)+12>>2]=0;c[p+(g*20|0)+16>>2]=0;a[p+(g*20|0)+1>>0]=0}else Di(H,123,o,0,0)|0;j=c[s>>2]|0;h=j+-1|0;c[s>>2]=h;do if((t|0)>0){g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;s=c[H+104>>2]|0;a[s+(g*20|0)>>0]=47;b[s+(g*20|0)+2>>1]=0;c[s+(g*20|0)+4>>2]=t;c[s+(g*20|0)+8>>2]=h;c[s+(g*20|0)+12>>2]=1;c[s+(g*20|0)+16>>2]=0;a[s+(g*20|0)+1>>0]=0;break}else{Di(H,47,t,h,1)|0;break}}while(0);rl(d,e,q,0,0,f,h,v);do if(w|0){g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;f=c[H+104>>2]|0;a[f+(g*20|0)>>0]=49;b[f+(g*20|0)+2>>1]=0;c[f+(g*20|0)+4>>2]=w;c[f+(g*20|0)+8>>2]=v;c[f+(g*20|0)+12>>2]=0;c[f+(g*20|0)+16>>2]=0;a[f+(g*20|0)+1>>0]=0;break}else{Di(H,49,w,v,0)|0;break}}while(0);i=H+12|0;h=c[i>>2]|0;g=0-j|0;if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0)mk(h,H,g);else c[(c[h+64>>2]|0)+(g<<2)>>2]=c[u>>2];if(!(c[e+8>>2]&8)){c[C>>2]=0;nk(d,1,43420,G);kj(d,e,E)|0;c[C>>2]=D}else cd(d,43378,F);g=c[u>>2]|0;if((c[r>>2]|0)>(g|0)){c[u>>2]=g+1;G=c[H+104>>2]|0;a[G+(g*20|0)>>0]=11;b[G+(g*20|0)+2>>1]=0;c[G+(g*20|0)+4>>2]=0;c[G+(g*20|0)+8>>2]=k;c[G+(g*20|0)+12>>2]=0;c[G+(g*20|0)+16>>2]=0;a[G+(g*20|0)+1>>0]=0}else Di(H,11,0,k,0)|0;h=c[i>>2]|0;g=0-x|0;if(((c[h+56>>2]|0)+(c[h+60>>2]|0)|0)<0){mk(h,H,g);break}else{c[(c[h+64>>2]|0)+(g<<2)>>2]=c[u>>2];break}}while(0);g=c[A>>2]|0;if(g|0)ri(c[d>>2]|0,g);c[A>>2]=B;c[y>>2]=z;Ra=I;return}function Bl(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Z=Ra;Ra=Ra+128|0;G=Z+64|0;F=Z+56|0;D=Z+48|0;B=Z+32|0;x=Z+24|0;v=Z+8|0;u=Z;p=Z+120|0;H=Z+96|0;I=Z+72|0;X=c[f>>2]|0;Y=f+8|0;U=c[Y>>2]|0;C=f+56|0;T=c[C>>2]|0;L=T+-1|0;R=T+-2|0;c[C>>2]=R;C=g+4|0;J=a[C>>0]|0;V=g+52|0;W=c[V>>2]|0;t=g+48|0;i=c[t>>2]|0;j=c[i>>2]|0;P=J<<24>>24==-128;a:do if(!P?(n=X+81|0,(a[n>>0]|0)==0):0){o=p+4|0;m=1;l=j;while(1){if((m|0)>(c[c[g>>2]>>2]|0)){m=i;S=l;break a}b:do if((l|0)>0){k=i+4|0;j=0;while(1){if((m|0)==(e[k+16>>1]|0))break b;j=j+1|0;if((j|0)<(l|0))k=k+20|0;else break}}else j=0;while(0);if((j|0)==(l|0)){c[p>>2]=0;c[o>>2]=0;j=oj(X,147,p,0)|0;if(!j){i=7;break}S=j+4|0;c[S>>2]=c[S>>2]|1024;c[j+8>>2]=m;i=nj(c[f>>2]|0,i,j)|0;c[t>>2]=i;if(!i){i=0;j=l}else{b[i+4+(l*20|0)+16>>1]=m;j=l+1|0}}else j=l;if(!(a[n>>0]|0)){m=m+1|0;l=j}else{m=i;S=j;break a}}Ra=Z;return i|0}else{m=i;S=j}while(0);k=(S<<2)+4|0;q=X+272|0;c:do if(c[q>>2]|0)if(!(a[X+81>>0]|0))r=24;else{O=0;Q=0;M=0;N=1}else{do if(!(0<0|(0==0?(e[X+276>>1]|0)>>>0>>0:0))){i=X+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];r=X+284|0;c[r>>2]=(c[r>>2]|0)+1;r=25;break c}i=X+296|0;j=c[i>>2]|0;if(!j){i=X+292|0;break}else{c[i>>2]=c[j>>2];r=X+284|0;c[r>>2]=(c[r>>2]|0)+1;r=25;break c}}else i=X+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;r=24}while(0);if((r|0)==24){j=_d(X,k,0)|0;r=25}if((r|0)==25)if(!j){O=0;Q=0;M=j;N=1}else{c[j>>2]=S;if((S|0)>=1){i=m+4|0;k=1;while(1){c[j+(k<<2)>>2]=(e[i+16>>1]|0)+-1;if((k|0)==(S|0))break;else{i=i+20|0;k=k+1|0}}}O=j;Q=Dl(f,g)|0;M=j;N=0}c[t>>2]=m;K=gk(c[f>>2]|0,m,0)|0;s=W+48|0;c[s>>2]=K;d:do if(!P){o=c[c[g>>2]>>2]|0;i=f+44|0;j=c[i>>2]|0;p=j+1|0;n=o+1|0;c[i>>2]=j+n;i=U+108|0;j=c[i>>2]|0;if((c[U+112>>2]|0)>(j|0)){c[i>>2]=j+1;K=c[U+104>>2]|0;a[K+(j*20|0)>>0]=70;b[K+(j*20|0)+2>>1]=0;c[K+(j*20|0)+4>>2]=0;c[K+(j*20|0)+8>>2]=p;c[K+(j*20|0)+12>>2]=0;c[K+(j*20|0)+16>>2]=0;a[K+(j*20|0)+1>>0]=0}else Di(U,70,0,p,0)|0;m=n*5|0;k=m+20|0;e:do if(c[q>>2]|0)if(!(a[X+81>>0]|0))r=44;else{z=0;y=0;break d}else{do if(!(0<0|(0==0?(e[X+276>>1]|0)>>>0>>0:0))){i=X+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];l=X+284|0;c[l>>2]=(c[l>>2]|0)+1;l=j;break e}i=X+296|0;j=c[i>>2]|0;if(!j){i=X+292|0;break}else{c[i>>2]=c[j>>2];l=X+284|0;c[l>>2]=(c[l>>2]|0)+1;l=j;break e}}else i=X+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;r=44}while(0);if((r|0)==44)l=_d(X,k,0)|0;if(!l){i=X+81|0;if((a[i>>0]|0)==0?(a[X+82>>0]|0)==0:0){a[i>>0]=1;if((c[X+180>>2]|0)>0)c[X+264>>2]=1;c[q>>2]=(c[q>>2]|0)+1;i=c[X+236>>2]|0;if(i|0)c[i+12>>2]=7}if(!l){z=0;y=0;break}else k=0}else{c[l+16>>2]=l+20+(n<<2);b[l+6>>1]=o;b[l+8>>1]=n;a[l+4>>0]=a[X+78>>0]|0;c[l+12>>2]=X;c[l>>2]=1;gw(l+24|0,0,m+-4|0)|0;k=l}if((o|0)>0){j=l+16|0;i=0;do{K=Cl(f,g,i)|0;c[l+20+(i<<2)>>2]=K;a[(c[j>>2]|0)+i>>0]=0;i=i+1|0}while((i|0)!=(o|0));z=l;y=k}else{z=l;y=k}}else{z=0;p=0;y=0}while(0);c[V>>2]=0;K=W+56|0;c[K>>2]=0;n=c[t>>2]|0;i=c[f>>2]|0;f:do if(n|0?(a[i+81>>0]|0)==0:0){k=c[n>>2]|0;if((k|0)>(c[i+116>>2]|0)){c[u>>2]=40659;cd(f,41350,u);break}m=c[g>>2]|0;if((k|0)>0){i=0;l=n+4|0;while(1){j=b[l+16>>1]|0;if(!(j<<16>>16))j=k;else{j=j&65535;k=c[m>>2]|0;if((k|0)<(j|0))break;Gk(f,m,j+-1|0,c[l>>2]|0,40659,0);j=c[n>>2]|0}i=i+1|0;if((i|0)<(j|0)){l=l+20|0;k=j}else break f}c[v>>2]=i+1;c[v+4>>2]=40659;c[v+8>>2]=k;cd(f,41294,v)}}while(0);g:do if(((c[W+52>>2]|0)==0?(A=c[s>>2]|0,w=c[f>>2]|0,A|0):0)?(a[w+81>>0]|0)==0:0){k=c[A>>2]|0;if((k|0)>(c[w+116>>2]|0)){c[x>>2]=40659;cd(f,41350,x);break}m=c[W>>2]|0;if((k|0)>0){i=0;l=A+4|0;while(1){j=b[l+16>>1]|0;if(!(j<<16>>16))j=k;else{j=j&65535;k=c[m>>2]|0;if((k|0)<(j|0))break;Gk(f,m,j+-1|0,c[l>>2]|0,40659,0);j=c[A>>2]|0}i=i+1|0;if((i|0)<(j|0)){l=l+20|0;k=j}else break g}c[B>>2]=i+1;c[B+4>>2]=40659;c[B+8>>2]=k;cd(f,41294,B)}}while(0);pl(f,g,L);o=g+12|0;i=c[o>>2]|0;do if(P&(i|0)!=0){j=f+44|0;m=c[j>>2]|0;n=m+1|0;m=m+2|0;c[j>>2]=m;j=c[g+16>>2]|0;j=(j|0)==0?i:j+1|0;k=U+108|0;i=c[k>>2]|0;l=U+112|0;if((c[l>>2]|0)>(i|0)){c[k>>2]=i+1;E=c[U+104>>2]|0;a[E+(i*20|0)>>0]=78;b[E+(i*20|0)+2>>1]=0;c[E+(i*20|0)+4>>2]=j;c[E+(i*20|0)+8>>2]=n;c[E+(i*20|0)+12>>2]=0;c[E+(i*20|0)+16>>2]=0;a[E+(i*20|0)+1>>0]=0}else Di(U,78,j,n,0)|0;i=c[k>>2]|0;if((c[l>>2]|0)>(i|0)){c[k>>2]=i+1;E=c[U+104>>2]|0;a[E+(i*20|0)>>0]=78;b[E+(i*20|0)+2>>1]=0;c[E+(i*20|0)+4>>2]=n;c[E+(i*20|0)+8>>2]=m;c[E+(i*20|0)+12>>2]=0;c[E+(i*20|0)+16>>2]=0;a[E+(i*20|0)+1>>0]=0;break}else{Di(U,78,n,m,0)|0;break}}else{m=0;n=0}while(0);i=g+60|0;j=c[i>>2]|0;if(j|0)ni(X,j);c[i>>2]=0;A=f+44|0;v=c[A>>2]|0;w=v+1|0;x=v+2|0;u=v+3|0;v=v+4|0;c[A>>2]=v;a[H>>0]=13;c[H+4>>2]=w;c[H+16>>2]=0;A=H+8|0;c[A>>2]=0;c[H+12>>2]=0;a[I>>0]=13;c[I+4>>2]=x;c[I+16>>2]=0;B=I+8|0;c[B>>2]=0;c[I+12>>2]=0;switch(a[C>>0]|0){case -128:{i=41509;break}case -126:{i=41519;break}case -127:{i=41529;break}default:i=41536}c[D>>2]=i;nk(f,1,43435,D);E=U+108|0;i=c[E>>2]|0;j=i+1|0;D=U+112|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=j;k=c[U+104>>2]|0;a[k+(i*20|0)>>0]=13;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=w;c[k+(i*20|0)+8>>2]=0;c[k+(i*20|0)+12>>2]=j;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0;k=i}else k=Di(U,13,w,0,j)|0;c[W+12>>2]=n;nk(f,1,43446,F);kj(f,W,H)|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;F=c[U+104>>2]|0;a[F+(i*20|0)>>0]=67;b[F+(i*20|0)+2>>1]=0;c[F+(i*20|0)+4>>2]=w;c[F+(i*20|0)+8>>2]=0;c[F+(i*20|0)+12>>2]=0;c[F+(i*20|0)+16>>2]=0;a[F+(i*20|0)+1>>0]=0}else Di(U,67,w,0,0)|0;C=U+12|0;j=c[C>>2]|0;a[j+19>>0]=0;c[j+28>>2]=0;j=c[E>>2]|0;if(!(a[(c[U>>2]|0)+81>>0]|0))i=(c[U+104>>2]|0)+(((k|0)<0?j+-1|0:k)*20|0)|0;else i=59308;c[i+8>>2]=j;i=j+1|0;if((c[D>>2]|0)>(j|0)){c[E>>2]=i;t=c[U+104>>2]|0;a[t+(j*20|0)>>0]=13;b[t+(j*20|0)+2>>1]=0;c[t+(j*20|0)+4>>2]=x;c[t+(j*20|0)+8>>2]=0;c[t+(j*20|0)+12>>2]=i;c[t+(j*20|0)+16>>2]=0;a[t+(j*20|0)+1>>0]=0;t=j}else t=Di(U,13,x,0,i)|0;s=c[o>>2]|0;i=g+16|0;F=c[i>>2]|0;c[o>>2]=m;c[i>>2]=0;nk(f,1,43451,G);kj(f,g,I)|0;c[o>>2]=s;c[i>>2]=F;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;G=c[U+104>>2]|0;a[G+(i*20|0)>>0]=67;b[G+(i*20|0)+2>>1]=0;c[G+(i*20|0)+4>>2]=x;c[G+(i*20|0)+8>>2]=0;c[G+(i*20|0)+12>>2]=0;c[G+(i*20|0)+16>>2]=0;a[G+(i*20|0)+1>>0]=0}else Di(U,67,x,0,0)|0;q=c[C>>2]|0;a[q+19>>0]=0;c[q+28>>2]=0;q=El(f,g,H,h,u,p,z,L)|0;s=(J+-127&255)<2;if(s)r=El(f,g,I,h,v,p,z,L)|0;else r=0;h:do if(z|0?(I=(c[z>>2]|0)+-1|0,c[z>>2]=I,(I|0)==0):0){i=c[z+12>>2]|0;do if(i|0){if(c[i+480>>2]|0){Xd(i,y);break h}j=z;if((c[i+304>>2]|0)>>>0<=j>>>0){if((c[i+308>>2]|0)>>>0<=j>>>0)break;I=i+300|0;c[z>>2]=c[I>>2];c[I>>2]=y;break h}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](y);break}else{I=Wa[c[29352>>2]&127](y)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](y);break}}while(0);p=J<<24>>24==-126;if((J+127&255)<2){l=L;n=L}else{i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;J=c[U+104>>2]|0;a[J+(i*20|0)>>0]=12;b[J+(i*20|0)+2>>1]=0;c[J+(i*20|0)+4>>2]=v;c[J+(i*20|0)+8>>2]=r;c[J+(i*20|0)+12>>2]=0;c[J+(i*20|0)+16>>2]=0;a[J+(i*20|0)+1>>0]=0}else i=Di(U,12,v,r,0)|0;j=c[E>>2]|0;if((c[D>>2]|0)>(j|0)){c[E>>2]=j+1;J=c[U+104>>2]|0;a[J+(j*20|0)>>0]=14;b[J+(j*20|0)+2>>1]=0;c[J+(j*20|0)+4>>2]=x;c[J+(j*20|0)+8>>2]=L;c[J+(j*20|0)+12>>2]=0;c[J+(j*20|0)+16>>2]=0;a[J+(j*20|0)+1>>0]=0}else j=Di(U,14,x,L,0)|0;k=c[E>>2]|0;if((c[D>>2]|0)>(k|0)){c[E>>2]=k+1;J=c[U+104>>2]|0;a[J+(k*20|0)>>0]=11;b[J+(k*20|0)+2>>1]=0;c[J+(k*20|0)+4>>2]=0;c[J+(k*20|0)+8>>2]=i;c[J+(k*20|0)+12>>2]=0;c[J+(k*20|0)+16>>2]=0;a[J+(k*20|0)+1>>0]=0}else Di(U,11,0,i,0)|0;o=g+6|0;k=b[o>>1]|0;l=b[W+6>>1]|0;m=k<<16>>16;n=l<<16>>16;do if(k<<16>>16>16){if((m+49|0)<(n|0)){k=l;break}if((m+31|0)<(n|0)){k=n+1&65535;break}else{k=(d[18112+(n-m)>>0]|0)+n&65535;break}}else{if((n+49|0)<(m|0))break;if((n+31|0)<(m|0)){k=m+1&65535;break}else{k=(d[18112+(m-n)>>0]|0)+m&65535;break}}while(0);b[o>>1]=k;l=i;n=j}do if(p){i=g+6|0;j=b[W+6>>1]|0;if((b[i>>1]|0)>j<<16>>16){b[i>>1]=j;m=l}else m=l}else{i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;J=c[U+104>>2]|0;a[J+(i*20|0)>>0]=12;b[J+(i*20|0)+2>>1]=0;c[J+(i*20|0)+4>>2]=u;c[J+(i*20|0)+8>>2]=q;c[J+(i*20|0)+12>>2]=0;c[J+(i*20|0)+16>>2]=0;a[J+(i*20|0)+1>>0]=0}else i=Di(U,12,u,q,0)|0;j=c[E>>2]|0;if((c[D>>2]|0)>(j|0)){c[E>>2]=j+1;J=c[U+104>>2]|0;a[J+(j*20|0)>>0]=14;b[J+(j*20|0)+2>>1]=0;c[J+(j*20|0)+4>>2]=w;c[J+(j*20|0)+8>>2]=L;c[J+(j*20|0)+12>>2]=0;c[J+(j*20|0)+16>>2]=0;a[J+(j*20|0)+1>>0]=0}else Di(U,14,w,L,0)|0;j=c[E>>2]|0;if((c[D>>2]|0)>(j|0)){c[E>>2]=j+1;m=c[U+104>>2]|0;a[m+(j*20|0)>>0]=11;b[m+(j*20|0)+2>>1]=0;c[m+(j*20|0)+4>>2]=0;c[m+(j*20|0)+8>>2]=i;c[m+(j*20|0)+12>>2]=0;c[m+(j*20|0)+16>>2]=0;a[m+(j*20|0)+1>>0]=0;m=i;break}else{Di(U,11,0,i,0)|0;m=i;break}}while(0);i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;k=c[U+104>>2]|0;a[k+(i*20|0)>>0]=12;b[k+(i*20|0)+2>>1]=0;c[k+(i*20|0)+4>>2]=u;c[k+(i*20|0)+8>>2]=q;c[k+(i*20|0)+12>>2]=0;c[k+(i*20|0)+16>>2]=0;a[k+(i*20|0)+1>>0]=0;k=i}else k=Di(U,12,u,q,0)|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;L=c[U+104>>2]|0;a[L+(i*20|0)>>0]=14;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=w;c[L+(i*20|0)+8>>2]=l;c[L+(i*20|0)+12>>2]=0;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(U,14,w,l,0)|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;L=c[U+104>>2]|0;a[L+(i*20|0)>>0]=11;b[L+(i*20|0)+2>>1]=0;c[L+(i*20|0)+4>>2]=0;c[L+(i*20|0)+8>>2]=R;c[L+(i*20|0)+12>>2]=0;c[L+(i*20|0)+16>>2]=0;a[L+(i*20|0)+1>>0]=0}else Di(U,11,0,R,0)|0;do if(!P){if(p){p=k+1|0;l=k;break}i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;P=c[U+104>>2]|0;a[P+(i*20|0)>>0]=14;b[P+(i*20|0)+2>>1]=0;c[P+(i*20|0)+4>>2]=w;c[P+(i*20|0)+8>>2]=l;c[P+(i*20|0)+12>>2]=0;c[P+(i*20|0)+16>>2]=0;a[P+(i*20|0)+1>>0]=0}else i=Di(U,14,w,l,0)|0;j=c[E>>2]|0;if((c[D>>2]|0)>(j|0)){c[E>>2]=j+1;p=c[U+104>>2]|0;a[p+(j*20|0)>>0]=11;b[p+(j*20|0)+2>>1]=0;c[p+(j*20|0)+4>>2]=0;c[p+(j*20|0)+8>>2]=R;c[p+(j*20|0)+12>>2]=0;c[p+(j*20|0)+16>>2]=0;a[p+(j*20|0)+1>>0]=0;p=k;l=i;break}else{Di(U,11,0,R,0)|0;p=k;l=i;break}}else{p=k;l=k}while(0);o=c[E>>2]|0;do if(s)if((c[D>>2]|0)>(o|0)){c[E>>2]=o+1;P=c[U+104>>2]|0;a[P+(o*20|0)>>0]=12;b[P+(o*20|0)+2>>1]=0;c[P+(o*20|0)+4>>2]=v;c[P+(o*20|0)+8>>2]=r;c[P+(o*20|0)+12>>2]=0;c[P+(o*20|0)+16>>2]=0;a[P+(o*20|0)+1>>0]=0;break}else{Di(U,12,v,r,0)|0;break}while(0);i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;P=c[U+104>>2]|0;a[P+(i*20|0)>>0]=14;b[P+(i*20|0)+2>>1]=0;c[P+(i*20|0)+4>>2]=x;c[P+(i*20|0)+8>>2]=m;c[P+(i*20|0)+12>>2]=0;c[P+(i*20|0)+16>>2]=0;a[P+(i*20|0)+1>>0]=0}else Di(U,14,x,m,0)|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;P=c[U+104>>2]|0;a[P+(i*20|0)>>0]=11;b[P+(i*20|0)+2>>1]=0;c[P+(i*20|0)+4>>2]=0;c[P+(i*20|0)+8>>2]=R;c[P+(i*20|0)+12>>2]=0;c[P+(i*20|0)+16>>2]=0;a[P+(i*20|0)+1>>0]=0}else Di(U,11,0,R,0)|0;j=c[E>>2]|0;if(!(a[(c[U>>2]|0)+81>>0]|0))i=(c[U+104>>2]|0)+(((t|0)<0?j+-1|0:t)*20|0)|0;else i=59308;c[i+8>>2]=j;if((c[D>>2]|0)>(j|0)){c[E>>2]=j+1;R=c[U+104>>2]|0;a[R+(j*20|0)>>0]=14;b[R+(j*20|0)+2>>1]=0;c[R+(j*20|0)+4>>2]=w;c[R+(j*20|0)+8>>2]=n;c[R+(j*20|0)+12>>2]=0;c[R+(j*20|0)+16>>2]=0;a[R+(j*20|0)+1>>0]=0}else Di(U,14,w,n,0)|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;R=c[U+104>>2]|0;a[R+(i*20|0)>>0]=14;b[R+(i*20|0)+2>>1]=0;c[R+(i*20|0)+4>>2]=x;c[R+(i*20|0)+8>>2]=m;c[R+(i*20|0)+12>>2]=0;c[R+(i*20|0)+16>>2]=0;a[R+(i*20|0)+1>>0]=0}else Di(U,14,x,m,0)|0;i=c[C>>2]|0;j=1-T|0;if(((c[i+56>>2]|0)+(c[i+60>>2]|0)|0)<0)mk(i,U,j);else c[(c[i+64>>2]|0)+(j<<2)>>2]=c[E>>2];i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;j=c[U+104>>2]|0;a[j+(i*20|0)>>0]=86;j=j+(i*20|0)+1|0;k=j+19|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0))}else i=Di(U,86,0,0,0)|0;j=c[U>>2]|0;i:do if(a[j+81>>0]|0){if(N)break;do if(j|0){if(c[j+480>>2]|0){Xd(j,O);break i}i=O;if((c[j+304>>2]|0)>>>0>i>>>0)break;if((c[j+308>>2]|0)>>>0<=i>>>0)break;R=j+300|0;c[M>>2]=c[R>>2];c[R>>2]=O;break i}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](O);break}else{R=Wa[c[29352>>2]&127](O)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](O);break}}else{if((i|0)<0)i=(c[E>>2]|0)+-1|0;j=c[U+104>>2]|0;k=j+(i*20|0)+1|0;if(a[k>>0]|0){Ei(U,j+(i*20|0)|0,O,-15);break}if(N)break;c[j+(i*20|0)+16>>2]=O;a[k>>0]=-15}while(0);k=c[A>>2]|0;j=c[B>>2]|0;i=c[E>>2]|0;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;R=c[U+104>>2]|0;a[R+(i*20|0)>>0]=87;b[R+(i*20|0)+2>>1]=0;c[R+(i*20|0)+4>>2]=k;c[R+(i*20|0)+8>>2]=j;c[R+(i*20|0)+12>>2]=S;c[R+(i*20|0)+16>>2]=0;a[R+(i*20|0)+1>>0]=0}else i=Di(U,87,k,j,S)|0;j=c[U>>2]|0;j:do if(a[j+81>>0]|0){if((Q|0)==0|(c[j+480>>2]|0)!=0)break;S=(c[Q>>2]|0)+-1|0;c[Q>>2]=S;if(S|0)break;i=c[Q+12>>2]|0;do if(i|0){if(c[i+480>>2]|0){Xd(i,Q);break j}j=Q;if((c[i+304>>2]|0)>>>0>j>>>0)break;if((c[i+308>>2]|0)>>>0<=j>>>0)break;S=i+300|0;c[Q>>2]=c[S>>2];c[S>>2]=Q;break j}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](Q);break}else{S=Wa[c[29352>>2]&127](Q)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Q);break}}else{if((i|0)<0)i=(c[E>>2]|0)+-1|0;j=c[U+104>>2]|0;k=j+(i*20|0)+1|0;if(a[k>>0]|0){Ei(U,j+(i*20|0)|0,Q,-9);break}if(!Q)break;c[j+(i*20|0)+16>>2]=Q;a[k>>0]=-9}while(0);i=c[E>>2]|0;if((i|0)>0)b[(c[U+104>>2]|0)+((i+-1|0)*20|0)+2>>1]=1;if((c[D>>2]|0)>(i|0)){c[E>>2]=i+1;S=c[U+104>>2]|0;a[S+(i*20|0)>>0]=16;b[S+(i*20|0)+2>>1]=0;c[S+(i*20|0)+4>>2]=p;c[S+(i*20|0)+8>>2]=l;c[S+(i*20|0)+12>>2]=o;c[S+(i*20|0)+16>>2]=0;a[S+(i*20|0)+1>>0]=0}else Di(U,16,p,l,o)|0;j=c[C>>2]|0;i=0-T|0;if(((c[j+56>>2]|0)+(c[j+60>>2]|0)|0)<0)mk(j,U,i);else c[(c[j+64>>2]|0)+(i<<2)>>2]=c[E>>2];i=c[V>>2]|0;if(i|0)pi(X,i,1);c[V>>2]=W;c[K>>2]=g;k=f+212|0;i=c[k>>2]|0;if(!i)i=0;else{j=c[Y>>2]|0;if((i|0)<0)i=(c[j+108>>2]|0)+-1|0;if(!(a[(c[j>>2]|0)+81>>0]|0))i=(c[j+104>>2]|0)+(i*20|0)|0;else i=59308;i=c[i+8>>2]|0}c[k>>2]=i;f=(c[f+36>>2]|0)!=0&1;Ra=Z;return f|0}function Cl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[b+52>>2]|0;if(e|0?(f=Cl(a,e,d)|0,f|0):0){d=f;return d|0}b=c[b>>2]|0;if((c[b>>2]|0)<=(d|0)){d=0;return d|0}d=Yi(a,c[b+4+(d*20|0)>>2]|0)|0;return d|0}function Dl(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=Ra;Ra=Ra+16|0;q=u;r=c[f+48>>2]|0;s=c[r>>2]|0;p=c[d>>2]|0;k=s+1|0;l=s+2|0;m=l*5|0;i=m+20|0;n=p+272|0;a:do if(c[n>>2]|0)if(!(a[p+81>>0]|0))j=11;else{t=0;Ra=u;return t|0}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){h=p+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;break a}h=p+296|0;g=c[h>>2]|0;if(!g){g=p+292|0;break}else{c[h>>2]=c[g>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;break a}}else g=p+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;j=11}while(0);if((j|0)==11)g=_d(p,i,0)|0;if(!g){h=p+81|0;if((a[h>>0]|0)==0?(a[p+82>>0]|0)==0:0){a[h>>0]=1;if((c[p+180>>2]|0)>0)c[p+264>>2]=1;c[n>>2]=(c[n>>2]|0)+1;h=c[p+236>>2]|0;if(h|0)c[h+12>>2]=7}if(!g){t=0;Ra=u;return t|0}}else{c[g+16>>2]=g+20+(l<<2);b[g+6>>1]=k;b[g+8>>1]=l;a[g+4>>0]=a[p+78>>0]|0;c[g+12>>2]=p;c[g>>2]=1;gw(g+24|0,0,m+-4|0)|0}if((s|0)<=0){t=g;Ra=u;return t|0}o=g+16|0;m=p+8|0;n=q+4|0;l=0;do{k=r+4+(l*20|0)|0;i=c[k>>2]|0;if(!(c[i+4>>2]&256)){h=Cl(d,f,(e[r+4+(l*20|0)+16>>1]|0)+-1|0)|0;if(!h)h=c[m>>2]|0;j=c[h>>2]|0;c[q>>2]=j;if(j){p=(Eu(j)|0)&1073741823;c[n>>2]=p;if((p|0)!=0?(t=oj(c[d>>2]|0,106,q,0)|0,(t|0)!=0):0){c[t+12>>2]=i;i=t+4|0;c[i>>2]=c[i>>2]|4352;i=t}}else c[n>>2]=0;c[k>>2]=i}else h=Yi(d,i)|0;c[g+20+(l<<2)>>2]=h;a[(c[o>>2]|0)+l>>0]=a[r+4+(l*20|0)+12>>0]|0;l=l+1|0}while((l|0)!=(s|0));Ra=u;return g|0}function El(d,e,f,g,h,i,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;A=d+8|0;F=c[A>>2]|0;D=F+108|0;E=c[D>>2]|0;u=d+56|0;C=c[u>>2]|0;v=C+-1|0;c[u>>2]=v;do if(i|0){u=F+112|0;if((c[u>>2]|0)>(E|0)){c[D>>2]=E+1;q=c[F+104>>2]|0;a[q+(E*20|0)>>0]=20;b[q+(E*20|0)+2>>1]=0;c[q+(E*20|0)+4>>2]=i;c[q+(E*20|0)+8>>2]=0;c[q+(E*20|0)+12>>2]=0;c[q+(E*20|0)+16>>2]=0;a[q+(E*20|0)+1>>0]=0;q=E}else q=Di(F,20,i,0,0)|0;r=f+8|0;l=c[r>>2]|0;t=i+1|0;s=f+12|0;m=c[s>>2]|0;p=(j|0)==0;if(!p)c[j>>2]=(c[j>>2]|0)+1;n=c[D>>2]|0;if((c[u>>2]|0)>(n|0)){c[D>>2]=n+1;o=c[F+104>>2]|0;a[o+(n*20|0)>>0]=87;b[o+(n*20|0)+2>>1]=0;c[o+(n*20|0)+4>>2]=l;c[o+(n*20|0)+8>>2]=t;c[o+(n*20|0)+12>>2]=m;c[o+(n*20|0)+16>>2]=0;a[o+(n*20|0)+1>>0]=0}else n=Di(F,87,l,t,m)|0;l=c[F>>2]|0;do if(!(a[l+81>>0]|0)){if((n|0)<0)l=(c[D>>2]|0)+-1|0;else l=n;m=c[F+104>>2]|0;o=m+(l*20|0)+1|0;if(a[o>>0]|0){Ei(F,m+(l*20|0)|0,j,-9);break}if(!p){c[m+(l*20|0)+16>>2]=j;a[o>>0]=-9}}else if(!(p|(c[l+480>>2]|0)!=0)?(p=(c[j>>2]|0)+-1|0,c[j>>2]=p,(p|0)==0):0){l=c[j+12>>2]|0;if(l|0){if(c[l+480>>2]|0){Xd(l,j);break}p=j;if((c[l+304>>2]|0)>>>0<=p>>>0?(c[l+308>>2]|0)>>>0>p>>>0:0){p=l+300|0;c[j>>2]=c[p>>2];c[p>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{p=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);l=n+2|0;m=c[D>>2]|0;if((c[u>>2]|0)>(m|0)){c[D>>2]=m+1;j=c[F+104>>2]|0;a[j+(m*20|0)>>0]=16;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=l;c[j+(m*20|0)+8>>2]=v;c[j+(m*20|0)+12>>2]=l;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0}else Di(F,16,l,v,l)|0;n=c[D>>2]|0;if(!(a[(c[F>>2]|0)+81>>0]|0))l=(c[F+104>>2]|0)+(((q|0)<0?n+-1|0:q)*20|0)|0;else l=59308;c[l+8>>2]=n;m=c[r>>2]|0;l=(c[s>>2]|0)+-1|0;if((c[u>>2]|0)>(n|0)){c[D>>2]=n+1;s=c[F+104>>2]|0;a[s+(n*20|0)>>0]=78;b[s+(n*20|0)+2>>1]=0;c[s+(n*20|0)+4>>2]=m;c[s+(n*20|0)+8>>2]=t;c[s+(n*20|0)+12>>2]=l;c[s+(n*20|0)+16>>2]=0;a[s+(n*20|0)+1>>0]=0}else Di(F,78,m,t,l)|0;l=c[D>>2]|0;if((c[u>>2]|0)>(l|0)){c[D>>2]=l+1;u=c[F+104>>2]|0;a[u+(l*20|0)>>0]=70;b[u+(l*20|0)+2>>1]=0;c[u+(l*20|0)+4>>2]=1;c[u+(l*20|0)+8>>2]=i;c[u+(l*20|0)+12>>2]=0;c[u+(l*20|0)+16>>2]=0;a[u+(l*20|0)+1>>0]=0;break}else{Di(F,70,1,i,0)|0;break}}while(0);if(a[(c[d>>2]|0)+81>>0]|0){F=0;return F|0}l=c[e+16>>2]|0;do if((l|0)>0){m=c[D>>2]|0;if((c[F+112>>2]|0)>(m|0)){c[D>>2]=m+1;i=c[F+104>>2]|0;a[i+(m*20|0)>>0]=47;b[i+(m*20|0)+2>>1]=0;c[i+(m*20|0)+4>>2]=l;c[i+(m*20|0)+8>>2]=v;c[i+(m*20|0)+12>>2]=1;c[i+(m*20|0)+16>>2]=0;a[i+(m*20|0)+1>>0]=0;break}else{Di(F,47,l,v,1)|0;break}}while(0);a:do switch(a[g>>0]|0){case 12:{q=d+19|0;m=a[q>>0]|0;if(m<<24>>24){B=m+-1<<24>>24;a[q>>0]=B;l=c[d+148+((B&255)<<2)>>2]|0;if(!(B<<24>>24))w=48;else{j=m+-2<<24>>24;a[q>>0]=j;p=l;j=c[d+148+((j&255)<<2)>>2]|0}}else{w=d+44|0;l=(c[w>>2]|0)+1|0;c[w>>2]=l;w=48}if((w|0)==48){p=d+44|0;j=(c[p>>2]|0)+1|0;c[p>>2]=j;p=l}n=c[f+8>>2]|0;l=c[f+12>>2]|0;m=c[D>>2]|0;o=F+112|0;if((c[o>>2]|0)>(m|0)){c[D>>2]=m+1;f=c[F+104>>2]|0;a[f+(m*20|0)>>0]=92;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=n;c[f+(m*20|0)+8>>2]=l;c[f+(m*20|0)+12>>2]=p;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(F,92,n,l,p)|0;l=g+4|0;m=c[l>>2]|0;n=c[D>>2]|0;if((c[o>>2]|0)>(n|0)){c[D>>2]=n+1;g=c[F+104>>2]|0;a[g+(n*20|0)>>0]=121;b[g+(n*20|0)+2>>1]=0;c[g+(n*20|0)+4>>2]=m;c[g+(n*20|0)+8>>2]=j;c[g+(n*20|0)+12>>2]=0;c[g+(n*20|0)+16>>2]=0;a[g+(n*20|0)+1>>0]=0}else Di(F,121,m,j,0)|0;l=c[l>>2]|0;m=c[D>>2]|0;if((c[o>>2]|0)>(m|0)){c[D>>2]=m+1;g=c[F+104>>2]|0;a[g+(m*20|0)>>0]=122;b[g+(m*20|0)+2>>1]=0;c[g+(m*20|0)+4>>2]=l;c[g+(m*20|0)+8>>2]=p;c[g+(m*20|0)+12>>2]=j;c[g+(m*20|0)+16>>2]=0;a[g+(m*20|0)+1>>0]=0}else Di(F,122,l,p,j)|0;l=c[D>>2]|0;if((l|0)>0)b[(c[F+104>>2]|0)+((l+-1|0)*20|0)+2>>1]=8;if(j|0?(y=a[q>>0]|0,(y&255)<8):0){a[q>>0]=y+1<<24>>24;c[d+148+((y&255)<<2)>>2]=j}if(p|0?(z=a[q>>0]|0,(z&255)<8):0){a[q>>0]=z+1<<24>>24;c[d+148+((z&255)<<2)>>2]=p}break}case 11:{t=d+19|0;l=a[t>>0]|0;if(!(l<<24>>24)){A=d+44|0;s=(c[A>>2]|0)+1|0;c[A>>2]=s}else{s=l+-1<<24>>24;a[t>>0]=s;s=c[d+148+((s&255)<<2)>>2]|0}j=f+8|0;m=c[j>>2]|0;q=f+12|0;o=c[q>>2]|0;p=c[g+16>>2]|0;l=c[D>>2]|0;r=F+112|0;if((c[r>>2]|0)>(l|0)){c[D>>2]=l+1;f=c[F+104>>2]|0;a[f+(l*20|0)>>0]=92;b[f+(l*20|0)+2>>1]=0;c[f+(l*20|0)+4>>2]=m;c[f+(l*20|0)+8>>2]=o;c[f+(l*20|0)+12>>2]=s;c[f+(l*20|0)+16>>2]=0;a[f+(l*20|0)+1>>0]=0}else l=Di(F,92,m,o,s)|0;m=c[F>>2]|0;do if(a[m+81>>0]|0){if((o|0)!=-12)kg(m,o,p)}else{if((l|0)<0)l=(c[D>>2]|0)+-1|0;m=c[F+104>>2]|0;n=m+(l*20|0)|0;if((o|0)<=-1?(x=m+(l*20|0)+1|0,(a[x>>0]|0)==0):0){if((o|0)==-3){c[m+(l*20|0)+16>>2]=p;a[x>>0]=-3;break}if(!p)break;c[m+(l*20|0)+16>>2]=p;a[x>>0]=o;if((o|0)!=-12)break;f=p+12|0;c[f>>2]=(c[f>>2]|0)+1;break}Ei(F,n,p,o)}while(0);o=c[g+4>>2]|0;m=c[j>>2]|0;n=c[q>>2]|0;l=c[D>>2]|0;if((c[r>>2]|0)>(l|0)){c[D>>2]=l+1;g=c[F+104>>2]|0;a[g+(l*20|0)>>0]=-124;b[g+(l*20|0)+2>>1]=0;c[g+(l*20|0)+4>>2]=o;c[g+(l*20|0)+8>>2]=s;c[g+(l*20|0)+12>>2]=m;c[g+(l*20|0)+16>>2]=0;a[g+(l*20|0)+1>>0]=0}else l=Di(F,132,o,s,m)|0;if(!(a[(c[F>>2]|0)+81>>0]|0)){g=c[F+104>>2]|0;a[g+(l*20|0)+1>>0]=-3;c[g+(l*20|0)+16>>2]=n}if(s|0?(B=a[t>>0]|0,(B&255)<8):0){a[t>>0]=B+1<<24>>24;c[d+148+((B&255)<<2)>>2]=s}break}case 10:{p=c[f+8>>2]|0;o=c[g+4>>2]|0;l=c[A>>2]|0;m=l+108|0;n=c[m>>2]|0;if((c[l+112>>2]|0)>(n|0)){c[m>>2]=n+1;d=c[l+104>>2]|0;a[d+(n*20|0)>>0]=77;b[d+(n*20|0)+2>>1]=0;c[d+(n*20|0)+4>>2]=p;c[d+(n*20|0)+8>>2]=o;c[d+(n*20|0)+12>>2]=1;c[d+(n*20|0)+16>>2]=0;a[d+(n*20|0)+1>>0]=0;break a}else{Di(l,77,p,o,1)|0;break a}}case 13:{j=g+8|0;l=c[j>>2]|0;q=f+12|0;if(!l){p=c[q>>2]|0;do if((p|0)==1){l=d+19|0;m=a[l>>0]|0;if(!(m<<24>>24)){d=d+44|0;l=(c[d>>2]|0)+1|0;c[d>>2]=l;break}else{B=m+-1<<24>>24;a[l>>0]=B;l=c[d+148+((B&255)<<2)>>2]|0;break}}else{m=d+32|0;l=c[m>>2]|0;n=d+28|0;o=c[n>>2]|0;if((o|0)<(p|0)){d=d+44|0;l=c[d>>2]|0;c[d>>2]=l+p;l=l+1|0;break}else{c[m>>2]=l+p;c[n>>2]=o-p;break}}while(0);c[j>>2]=l;c[g+12>>2]=p}j=c[f+8>>2]|0;p=c[q>>2]|0;m=c[A>>2]|0;n=m+108|0;o=c[n>>2]|0;if((c[m+112>>2]|0)>(o|0)){c[n>>2]=o+1;d=c[m+104>>2]|0;a[d+(o*20|0)>>0]=77;b[d+(o*20|0)+2>>1]=0;c[d+(o*20|0)+4>>2]=j;c[d+(o*20|0)+8>>2]=l;c[d+(o*20|0)+12>>2]=p;c[d+(o*20|0)+16>>2]=0;a[d+(o*20|0)+1>>0]=0}else Di(m,77,j,l,p)|0;l=c[g+4>>2]|0;m=c[D>>2]|0;if((c[F+112>>2]|0)>(m|0)){c[D>>2]=m+1;d=c[F+104>>2]|0;a[d+(m*20|0)>>0]=14;b[d+(m*20|0)+2>>1]=0;c[d+(m*20|0)+4>>2]=l;c[d+(m*20|0)+8>>2]=0;c[d+(m*20|0)+12>>2]=0;c[d+(m*20|0)+16>>2]=0;a[d+(m*20|0)+1>>0]=0;break a}else{Di(F,14,l,0,0)|0;break a}}default:{n=c[f+8>>2]|0;l=c[f+12>>2]|0;m=c[D>>2]|0;if((c[F+112>>2]|0)>(m|0)){c[D>>2]=m+1;d=c[F+104>>2]|0;a[d+(m*20|0)>>0]=81;b[d+(m*20|0)+2>>1]=0;c[d+(m*20|0)+4>>2]=n;c[d+(m*20|0)+8>>2]=l;c[d+(m*20|0)+12>>2]=0;c[d+(m*20|0)+16>>2]=0;a[d+(m*20|0)+1>>0]=0;break a}else{Di(F,81,n,l,0)|0;break a}}}while(0);l=c[e+12>>2]|0;do if(l|0){m=c[D>>2]|0;if((c[F+112>>2]|0)>(m|0)){c[D>>2]=m+1;e=c[F+104>>2]|0;a[e+(m*20|0)>>0]=49;b[e+(m*20|0)+2>>1]=0;c[e+(m*20|0)+4>>2]=l;c[e+(m*20|0)+8>>2]=k;c[e+(m*20|0)+12>>2]=0;c[e+(m*20|0)+16>>2]=0;a[e+(m*20|0)+1>>0]=0;break}else{Di(F,49,l,k,0)|0;break}}while(0);m=c[F+12>>2]|0;l=0-C|0;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,F,l);else c[(c[m+64>>2]|0)+(l<<2)>>2]=c[D>>2];l=c[D>>2]|0;if((c[F+112>>2]|0)>(l|0)){c[D>>2]=l+1;F=c[F+104>>2]|0;a[F+(l*20|0)>>0]=66;b[F+(l*20|0)+2>>1]=0;c[F+(l*20|0)+4>>2]=h;c[F+(l*20|0)+8>>2]=0;c[F+(l*20|0)+12>>2]=0;c[F+(l*20|0)+16>>2]=0;a[F+(l*20|0)+1>>0]=0;F=E;return F|0}else{Di(F,66,h,0,0)|0;F=E;return F|0}return 0}function Fl(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=Ra;Ra=Ra+32|0;o=A;if(!f){Ra=A;return}if(c[f+4>>2]&1|0){Ra=A;return}switch(a[f>>0]|0){case 44:{Fl(d,c[f+16>>2]|0);Fl(d,c[f+12>>2]|0);Ra=A;return}case 53:{g=c[f+16>>2]|0;f=c[f+12>>2]|0;do if((a[g>>0]|0)==-94?(j=g+4|0,(c[j>>2]&8|0)==0):0){i=o+20|0;a[i>>0]=1;c[o+4>>2]=127;c[o+8>>2]=128;c[o+24>>2]=0;if(f){_j(o,f)|0;if(!(a[i>>0]|0))break}i=c[d>>2]|0;t=f+4|0;if(!(c[t>>2]&256))if((c[j>>2]&256|0)==0?(k=Yi(i,f)|0,(k|0)!=0):0){l=k;u=14}else{m=g;u=13}else{m=f;u=13}if((u|0)==13?(n=Yi(i,m)|0,n|0):0){l=n;u=14}if((u|0)==14){if((c[l+12>>2]|0)!=78)break;if(c[l+8>>2]|0)break}m=d+4|0;k=c[m>>2]|0;n=d+12|0;do if((k|0)>0){l=c[n>>2]|0;i=c[g+28>>2]|0;j=g+32|0;h=0;while(1){z=c[l+(h<<1<<2)>>2]|0;if((c[z+28>>2]|0)==(i|0)?(b[z+32>>1]|0)==(b[j>>1]|0):0){u=107;break}h=h+1|0;if((h|0)>=(k|0)){u=22;break}}if((u|0)==22){x=n;r=l;break}else if((u|0)==107){Ra=A;return}}else{x=n;r=c[n>>2]|0}while(0);k=k+1|0;c[m>>2]=k;l=c[c[d>>2]>>2]|0;k=k<<3;a:do if(!r){b:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))u=34;else{u=48;break a}else{do if(!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0))){h=l+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];s=l+284|0;c[s>>2]=(c[s>>2]|0)+1;s=i;break b}h=l+296|0;i=c[h>>2]|0;if(!i){h=l+292|0;break}else{c[h>>2]=c[i>>2];s=l+284|0;c[s>>2]=(c[s>>2]|0)+1;s=i;break b}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;u=34}while(0);if((u|0)==34)s=_d(l,k,0)|0;c[x>>2]=s;if(s|0){w=s;u=51}}else{i=r;j=l+304|0;if(((c[j>>2]|0)>>>0<=i>>>0?(c[l+308>>2]|0)>>>0>i>>>0:0)?!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0)):0)h=r;else{h=Zd(l,r,k,0)|0;if(!h){if(c[l+480>>2]|0){Xd(l,r);u=48;break}if((c[j>>2]|0)>>>0<=i>>>0?(c[l+308>>2]|0)>>>0>i>>>0:0){u=l+300|0;c[r>>2]=c[u>>2];c[u>>2]=r;u=48;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);u=48;break}else{u=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);u=48;break}}}c[x>>2]=h;w=h;u=51}while(0);if((u|0)==48)c[x>>2]=0;else if((u|0)==51){if(c[t>>2]&8)f=c[f+12>>2]|0;z=c[m>>2]<<1;c[w+(z+-2<<2)>>2]=g;c[(c[n>>2]|0)+(z+-1<<2)>>2]=f;Ra=A;return}c[m>>2]=0;Ra=A;return}while(0);if((a[f>>0]|0)!=-94){Ra=A;return}k=f+4|0;if(c[k>>2]&8|0){Ra=A;return}i=o+20|0;a[i>>0]=1;c[o+4>>2]=127;c[o+8>>2]=128;c[o+24>>2]=0;l=(g|0)==0;if(!l){_j(o,g)|0;if(!(a[i>>0]|0)){Ra=A;return}}j=c[d>>2]|0;do if(!(c[k>>2]&256)){if(!l?c[g+4>>2]&256|0:0){p=Yi(j,g)|0;u=66;break}i=Yi(j,f)|0;if(!i){p=Yi(j,g)|0;u=66}else{q=i;u=67}}else{p=Yi(j,f)|0;u=66}while(0);if((u|0)==66?p|0:0){q=p;u=67}if((u|0)==67){if((c[q+12>>2]|0)!=78){Ra=A;return}if(c[q+8>>2]|0){Ra=A;return}}n=d+4|0;l=c[n>>2]|0;o=d+12|0;do if((l|0)>0){m=c[o>>2]|0;j=c[f+28>>2]|0;k=f+32|0;i=0;while(1){x=c[m+(i<<1<<2)>>2]|0;if((c[x+28>>2]|0)==(j|0)?(b[x+32>>1]|0)==(b[k>>1]|0):0){u=107;break}i=i+1|0;if((i|0)>=(l|0)){u=75;break}}if((u|0)==75){z=o;v=m;break}else if((u|0)==107){Ra=A;return}}else{z=o;v=c[o>>2]|0}while(0);l=l+1|0;c[n>>2]=l;m=c[c[d>>2]>>2]|0;l=l<<3;c:do if(!v){d:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))u=87;else{u=101;break c}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){i=m+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];y=m+284|0;c[y>>2]=(c[y>>2]|0)+1;y=j;break d}i=m+296|0;j=c[i>>2]|0;if(!j){i=m+292|0;break}else{c[i>>2]=c[j>>2];y=m+284|0;c[y>>2]=(c[y>>2]|0)+1;y=j;break d}}else i=m+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;u=87}while(0);if((u|0)==87)y=_d(m,l,0)|0;c[z>>2]=y;if(y|0){h=y;u=104}}else{j=v;k=m+304|0;if(((c[k>>2]|0)>>>0<=j>>>0?(c[m+308>>2]|0)>>>0>j>>>0:0)?!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0)):0)h=v;else{i=Zd(m,v,l,0)|0;if(!i){if(c[m+480>>2]|0){Xd(m,v);u=101;break}if((c[k>>2]|0)>>>0<=j>>>0?(c[m+308>>2]|0)>>>0>j>>>0:0){u=m+300|0;c[v>>2]=c[u>>2];c[u>>2]=v;u=101;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](v);u=101;break}else{u=Wa[c[29352>>2]&127](v)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](v);u=101;break}}else h=i}c[z>>2]=h;u=104}while(0);if((u|0)==101)c[z>>2]=0;else if((u|0)==104){if(c[g+4>>2]&8)g=c[g+12>>2]|0;z=c[n>>2]<<1;c[h+(z+-2<<2)>>2]=f;c[(c[o>>2]|0)+(z+-1<<2)>>2]=g;Ra=A;return}c[n>>2]=0;Ra=A;return}default:{Ra=A;return}}}function Gl(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((a[e>>0]|0)!=-94){e=0;return e|0}k=e+4|0;l=c[k>>2]|0;if(l&8|0){e=0;return e|0}m=c[d+24>>2]|0;f=c[m+4>>2]|0;if((f|0)<=0){e=1;return e|0}g=c[m+12>>2]|0;h=e+28|0;i=e+32|0;d=0;while(1){j=d<<1;o=c[g+(j<<2)>>2]|0;if(((o|0)!=(e|0)?(c[o+28>>2]|0)==(c[h>>2]|0):0)?(b[o+32>>1]|0)==(b[i>>1]|0):0)break;d=d+1|0;if((d|0)>=(f|0)){d=1;n=12;break}}if((n|0)==12)return d|0;d=m+8|0;c[d>>2]=(c[d>>2]|0)+1;c[k>>2]=l&-8388617|8;d=c[g+((j|1)<<2)>>2]|0;if(!d)d=0;else d=dk(c[c[m>>2]>>2]|0,d,0,0)|0;c[e+12>>2]=d;o=1;return o|0}function Hl(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=(c|0)<(e|0)?c:e;g=Lu(d,f,h)|0;if(g|0){e=g;return e|0}if(b|0){g=d+h|0;b=c-h|0;a:do if((b|0)>0)while(1){d=b+-1|0;if((a[g+d>>0]|0)!=32)break a;if((b|0)>1)b=d;else{b=d;break}}while(0);if(!b){g=f+h|0;b=e-h|0;b:do if((b|0)>0)while(1){d=b+-1|0;if((a[g+d>>0]|0)!=32)break b;if((b|0)>1)b=d;else{b=d;break}}while(0);if(!b){e=0;return e|0}}}e=c-e|0;return e|0}function Il(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=b+8|0;a:do if(d|0){while(1){f=d;while(1){g=c[f+4>>2]|0;if(!(g&4096))break;if(!(g&262144))f=f+12|0;else f=(c[f+20>>2]|0)+4|0;f=c[f>>2]|0;if(!f)break a}a[h>>0]=e;if((a[f>>0]|0)!=e<<24>>24)break;Il(b,c[f+12>>2]|0,e);d=c[f+16>>2]|0;if(!d)break a}Ml(b,d,0)|0;return}while(0);a[h>>0]=e;return}function Jl(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;na=Ra;Ra=Ra+16|0;ba=na+8|0;ja=na;aa=c[f>>2]|0;ka=c[aa>>2]|0;la=a[f+46>>0]|0;ma=la&255;Y=(la&255)<2?1:la<<24>>24==2?5:10;ia=f+8|0;h=c[ia>>2]|0;da=g<<16>>16==0;if(da|(h|0)==0)W=0;else W=c[h>>2]|0;l=Y<<1;m=W<<1;j=m+(G(l,(ma<<2)+32|0)|0)|0;k=((j|0)<0)<<31>>31;a:do if(c[ka+272>>2]|0)if(!(a[ka+81>>0]|0))V=13;else{Ra=na;return}else{do if(!(0>>0|(0==(k|0)?(e[ka+276>>1]|0)>>>0>>0:0))){h=ka+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];fa=ka+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=i;break a}h=ka+296|0;i=c[h>>2]|0;if(!i){h=ka+292|0;break}else{c[h>>2]=c[i>>2];fa=ka+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=i;break a}}else h=ka+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;V=13}while(0);if((V|0)==13)fa=_d(ka,j,k)|0;if(!fa){Ra=na;return}o=fa+(Y<<5)|0;c[o>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[o+16>>2]=0;c[o+20>>2]=0;c[o+24>>2]=0;c[o+28>>2]=0;h=l;j=o+(Y<<5)|0;i=fa;while(1){c[i+24>>2]=j;j=j+(ma<<2)|0;if((h|0)<=1)break;else{h=h+-1|0;i=i+32|0}}h=(W|0)!=0;if(h)gw(j|0,0,m|0)|0;else j=0;ca=c[aa+132>>2]|0;b[fa+(Y<<5)+16>>1]=ca>>>0<48?ca:48;if(h)a[fa+(Y<<5)+22>>0]=la<<24>>24==0?W&255:-1;ca=la<<24>>24==0;b:do if(!ca){Q=f+60|0;R=f+44|0;S=Y>>>0>1;T=f+20|0;U=((g&65535)<<16)+1048576|0;P=0;l=0;k=0;h=0;i=fa;m=1;while(1){if((m|0)>0){K=P&65535;M=P<<2;N=i+18|0;O=i+16|0;p=0;J=0;I=o;while(1){n=c[Q>>2]|0;if(!n)n=p;else{C=I+22|0;D=I+16|0;E=I+20|0;F=I+8|0;H=I+24|0;x=p;while(1){w=a[C>>0]|0;B=ja;c[B>>2]=0;c[B+4>>2]=0;B=n;v=I;u=c[v>>2]|0;v=c[v+4>>2]|0;c:do if((((c[B>>2]&~u|0)==0?(c[B+4>>2]&~v|0)==0:0)?(Z=n+8|0,$=Z,_=c[$>>2]|0,$=c[$+4>>2]|0,(_&u|0)==0&($&v|0)==0):0)?(X=b[D>>1]|0,!(X<<16>>16<3?(c[n+36>>2]&16384|0)!=0:0)):0){p=b[n+18>>1]|0;t=X&65535;s=t+(e[n+20>>1]|0)|0;q=s&65535;r=p<<16>>16;s=s<<16>>16;do if(p<<16>>16>16){if((r+49|0)<(s|0)){p=q;break}if((r+31|0)<(s|0)){p=s+1&65535;break}else{p=s+(d[18112+(s-r)>>0]|0)&65535;break}}else{if((s+49|0)<(r|0))break;if((s+31|0)<(r|0)){p=r+1&65535;break}else{p=(d[18112+(r-s)>>0]|0)+r&65535;break}}while(0);q=b[E>>1]|0;r=p<<16>>16;s=q<<16>>16;do if(p<<16>>16>16){if((r+49|0)<(s|0)){p=q;break}if((r+31|0)<(s|0)){p=s+1&65535;break}else{p=(d[18112+(s-r)>>0]|0)+s&65535;break}}else{if((s+49|0)<(r|0))break;if((s+31|0)<(r|0)){p=r+1&65535;break}else{p=(d[18112+(r-s)>>0]|0)+r&65535;break}}while(0);A=(e[n+22>>1]|0)+t|0;B=A&65535;z=_|u;y=$|v;if(w<<24>>24<0)w=hm(f,c[ia>>2]|0,I,b[R>>1]|0,K,n,ja)|0;else{t=F;u=c[t+4>>2]|0;v=ja;c[v>>2]=c[t>>2];c[v+4>>2]=u}r=w<<24>>24;if(w<<24>>24>-1&(W|0)>(r|0)){v=j+(r<<1)|0;q=b[v>>1]|0;if(!(q<<16>>16)){q=((W-r|0)*100|0)/(W|0)|0;r=((q|0)<0)<<31>>31;do if(q>>>0<8){if(q>>>0<2){u=-4325376;break}s=40;do{s=(s&65535)+65526|0;q=cw(q|0,r|0,1)|0;r=L()|0}while(r>>>0<0|(r|0)==0&q>>>0<8);s=s&65535;V=66}else{if(q>>>0>255){s=40;do{s=(s&65535)+40|0;V=q;q=bw(q|0,r|0,4)|0;u=r;r=L()|0}while(u>>>0>0|(u|0)==0&V>>>0>4095);s=s&65535}else s=40;if(!(r>>>0>0|(r|0)==0&q>>>0>15)){V=66;break}do{s=(s&65535)+10&65535;V=q;q=bw(q|0,r|0,1)|0;u=r;r=L()|0}while(u>>>0>0|(u|0)==0&V>>>0>31);V=66}while(0);if((V|0)==66){V=0;u=((s&65535)+65526+(e[3648+((q&7)<<1)>>1]|0)<<16)+-4325376|0}if(!(b[R>>1]&16384))r=g;else{r=b[T>>1]|0;r=r<<16>>16>16?r:g}if(r<<16>>16<11)q=0;else{q=r<<16>>16;t=((q|0)<0)<<31>>31;if((r&65535)>255){s=40;r=t;do{s=(s&65535)+40|0;t=q;q=bw(q|0,r|0,4)|0;oa=r;r=L()|0}while(oa>>>0>0|(oa|0)==0&t>>>0>4095);s=s&65535}else{s=40;r=t}if(r>>>0>0|(r|0)==0&q>>>0>15){do{s=(s&65535)+10&65535;oa=q;q=bw(q|0,r|0,1)|0;t=r;r=L()|0}while(t>>>0>0|(t|0)==0&oa>>>0>31);r=s}else r=s;q=(r&65535)+65493+(e[3648+((q&7)<<1)>>1]|0)&65535}q=q+((U+u|0)>>>16)&65535;b[v>>1]=q}r=p<<16>>16;s=q<<16>>16;do if(p<<16>>16>16){if((r+49|0)<(s|0))break;if((r+31|0)<(s|0)){q=s+1&65535;break}else{q=(d[18112+(s-r)>>0]|0)+s&65535;break}}else{if((s+49|0)<(r|0)){q=p;break}if((s+31|0)<(r|0)){q=r+1&65535;break}else{q=(d[18112+(r-s)>>0]|0)+r&65535;break}}while(0);v=p;u=(q&65535)+5&65535}else{v=(p&65535)+65534&65535;u=p}d:do if((x|0)>0){p=0;t=i;while(1){oa=t;if(((c[oa>>2]|0)==(z|0)?(c[oa+4>>2]|0)==(y|0):0)?(a[t+22>>0]^w)<<24>>24>-1:0)break;p=p+1|0;if((p|0)>=(x|0)){V=96;break d}else t=t+32|0}q=t+22|0;r=t+18|0;p=b[r>>1]|0;if(p<<16>>16>16){p=x;break c}if(p<<16>>16!=u<<16>>16){s=t;p=t;break}s=b[t+16>>1]|0;p=A<<16>>16;if((p|0)>(s|0)){p=x;break c}if((p|0)!=(s|0)){s=t;p=t;break}if((b[t+20>>1]|0)>v<<16>>16){s=t;p=t}else{p=x;break c}}else V=96;while(0);if((V|0)==96){V=0;p=(x|0)<(Y|0);if(!p){if(u<<16>>16>k<<16>>16){p=x;break}if(!(u<<16>>16!=k<<16>>16?1:v<<16>>16>16)){p=x;break}}q=p?x:l;oa=i+(q<<5)|0;s=oa;x=x+(p&1)|0;r=i+(q<<5)+18|0;q=i+(q<<5)+22|0;p=oa}oa=I;y=Z;A=c[y+4>>2]|c[oa+4>>2];z=p;c[z>>2]=c[y>>2]|c[oa>>2];c[z+4>>2]=A;z=ja;A=c[z+4>>2]|0;oa=s+8|0;c[oa>>2]=c[z>>2];c[oa+4>>2]=A;b[s+16>>1]=B;b[r>>1]=u;b[s+20>>1]=v;a[q>>0]=w;oa=s+24|0;ew(c[oa>>2]|0,c[H>>2]|0,M|0)|0;c[(c[oa>>2]|0)+(P<<2)>>2]=n;if((x|0)<(Y|0)){p=x;break}k=b[N>>1]|0;h=b[O>>1]|0;if(!S){p=x;l=0;break}r=i;s=1;l=0;do{q=b[r+50>>1]|0;do if(q<<16>>16<=k<<16>>16){if(q<<16>>16!=k<<16>>16)break;p=b[r+52>>1]|0;if(p<<16>>16>h<<16>>16){h=p;V=112}}else{h=b[r+52>>1]|0;V=112}while(0);r=r+32|0;if((V|0)==112){V=0;l=s;k=q}s=s+1|0}while((s|0)!=(Y|0));p=x}else p=x;while(0);n=c[n+52>>2]|0;if(!n){n=p;break}else x=p}}J=J+1|0;if((J|0)==(m|0)){m=n;break}else{p=n;I=I+32|0}}}else m=0;P=P+1|0;if((P|0)==(ma|0))break;else{oa=o;o=i;i=oa}}if(m|0){if((m|0)>1){j=1;h=i;do{h=(b[h+18>>1]|0)>(b[i+(j<<5)+18>>1]|0)?i+(j<<5)|0:h;j=j+1|0}while((j|0)!=(m|0));i=h}if(ca){o=i;break}j=c[i+24>>2]|0;k=c[f+4>>2]|0;h=0;while(1){oa=c[j+(h<<2)>>2]|0;c[f+752+(h*80|0)+64>>2]=oa;oa=a[oa+16>>0]|0;a[f+752+(h*80|0)+44>>0]=oa;c[f+752+(h*80|0)+4>>2]=c[k+8+((oa&255)*72|0)+40>>2];h=h+1|0;if((h|0)==(ma|0)){o=i;break b}}}cd(aa,43687,ba);if(ka|0){if(c[ka+480>>2]|0){Xd(ka,fa);Ra=na;return}oa=fa;if((c[ka+304>>2]|0)>>>0<=oa>>>0?(c[ka+308>>2]|0)>>>0>oa>>>0:0){oa=ka+300|0;c[fa>>2]=c[oa>>2];c[oa>>2]=fa;Ra=na;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](fa);Ra=na;return}else{oa=Wa[c[29352>>2]&127](fa)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](fa);Ra=na;return}}while(0);n=f+44|0;if(((b[n>>1]&384)==256?(ea=f+51|0,!(da|(a[ea>>0]|0)!=0)):0)?(da=f+12|0,oa=ma+-1|0,oa=(hm(f,c[da>>2]|0,o,128,oa&65535,c[(c[o+24>>2]|0)+(oa<<2)>>2]|0,ja)|0)<<24>>24,(c[c[da>>2]>>2]|0)==(oa|0)):0)a[ea>>0]=2;l=f+52|0;a[l>>0]=0;h=c[ia>>2]|0;if(h|0){i=b[n>>1]|0;j=a[o+22>>0]|0;if(!(i&128)){k=f+47|0;a[k>>0]=j;da=o+8|0;ea=c[da+4>>2]|0;m=f+64|0;oa=m;c[oa>>2]=c[da>>2];c[oa+4>>2]=ea;if((j<<24>>24<1?(a[k>>0]=0,!ca):0)?(ga=ma+-1|0,ha=c[(c[o+24>>2]|0)+(ga<<2)>>2]|0,oa=c[ha+36>>2]|0,!((oa&4096|0)!=0|(oa&260|0)==260)):0){oa=ja;c[oa>>2]=0;c[oa+4>>2]=0;oa=(hm(f,h,o,2048,ga&65535,ha,ja)|0)<<24>>24;h=c[ia>>2]|0;if((c[h>>2]|0)==(oa|0)){a[l>>0]=1;ga=ja;ha=c[ga+4>>2]|0;oa=m;c[oa>>2]=c[ga>>2];c[oa+4>>2]=ha}i=b[n>>1]|0}}else if((c[h>>2]|0)==(j<<24>>24|0))a[f+51>>0]=2;if((i&512?(la<<24>>24?(c[h>>2]|0)==(a[f+47>>0]|0):0):0)?(oa=ja,c[oa>>2]=0,c[oa+4>>2]=0,oa=ma+-1|0,oa=(hm(f,h,o,0,oa&65535,c[(c[o+24>>2]|0)+(oa<<2)>>2]|0,ja)|0)<<24>>24,(c[c[ia>>2]>>2]|0)==(oa|0)):0){a[f+48>>0]=1;la=ja;ma=c[la+4>>2]|0;oa=f+64|0;c[oa>>2]=c[la>>2];c[oa+4>>2]=ma}}b[f+72>>1]=b[o+16>>1]|0;if(ka|0){if(c[ka+480>>2]|0){Xd(ka,fa);Ra=na;return}oa=fa;if((c[ka+304>>2]|0)>>>0<=oa>>>0?(c[ka+308>>2]|0)>>>0>oa>>>0:0){oa=ka+300|0;c[fa>>2]=c[oa>>2];c[oa>>2]=fa;Ra=na;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](fa);Ra=na;return}else{oa=Wa[c[29352>>2]&127](fa)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](fa);Ra=na;return}}function Kl(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=Ra;Ra=Ra+192|0;o=E+152|0;r=E+144|0;u=E+136|0;t=E+128|0;p=E+120|0;n=E+112|0;m=E+104|0;C=E+160|0;l=E;D=c[f+116>>2]|0;if((a[((D|0)==0?f:D)+199>>0]|0)!=2){Ra=E;return}s=d[h+44>>0]|0;D=c[f+8>>2]|0;k=c[f>>2]|0;x=c[h+64>>2]|0;v=x+36|0;q=c[v>>2]|0;if((q&8192|0)==0?(j=i&65535,(j&32|0)==0):0){i=q&48;do if(!i){if((q&1024|0)==0?b[x+24>>1]|0:0){j=1;break}j=(j&3|0)!=0}else j=1;while(0);B=C+4|0;c[B>>2]=l;c[C>>2]=k;w=C+8|0;c[w>>2]=100;y=C+12|0;c[y>>2]=1e9;z=C+16|0;c[z>>2]=0;a[C+20>>0]=0;A=C+21|0;a[A>>0]=0;h=j?6:4;c[z>>2]=h;ew(l|0,(j?43742:43749)|0,h|0)|0;h=c[g+8+(s*72|0)+20>>2]|0;if(!h){c[n>>2]=c[g+8+(s*72|0)+8>>2];Eb(C,43767,n)}else{c[m>>2]=c[h+20>>2];Eb(C,43754,m)}h=c[g+8+(s*72|0)+12>>2]|0;if(h|0){c[p>>2]=h;Eb(C,43777,p)}do if(!(q&1280)){k=x+32|0;l=c[k>>2]|0;if((c[(c[g+8+(s*72|0)+16>>2]|0)+36>>2]&32|0)!=0?(s=l+55|0,((d[s>>0]|d[s+1>>0]<<8)&3)==2):0)if(j)h=43784;else break;else if(!(q&131072))h=(q&16384|0)==0?((q&64|0)==0?43872:43854):43829;else h=43796;i=c[z>>2]|0;j=i+7|0;if(j>>>0<(c[w>>2]|0)>>>0){c[z>>2]=j;s=(c[B>>2]|0)+i|0;a[s>>0]=a[43881]|0;a[s+1>>0]=a[43882]|0;a[s+2>>0]=a[43883]|0;a[s+3>>0]=a[43884]|0;a[s+4>>0]=a[43885]|0;a[s+5>>0]=a[43886]|0;a[s+6>>0]=a[43887]|0}else wb(C,43881,7);c[t>>2]=c[l>>2];Eb(C,h,t);p=c[k>>2]|0;h=b[x+24>>1]|0;l=b[x+42>>1]|0;i=h&65535;h=h<<16>>16==0;if(h?(c[v>>2]&48|0)==0:0)break;j=c[z>>2]|0;k=j+2|0;if(k>>>0<(c[w>>2]|0)>>>0){c[z>>2]=k;t=(c[B>>2]|0)+j|0;a[t>>0]=32;a[t+1>>0]=40}else wb(C,43974,2);a:do if(h)i=0;else{n=p+4|0;o=p+12|0;m=l&65535;l=0;while(1){h=b[(c[n>>2]|0)+(l<<1)>>1]|0;switch(h<<16>>16){case -2:{h=43996;break}case -1:{h=38132;break}default:h=c[(c[(c[o>>2]|0)+4>>2]|0)+(h<<16>>16<<4)>>2]|0}do if(l|0){j=c[z>>2]|0;k=j+5|0;if(k>>>0<(c[w>>2]|0)>>>0){c[z>>2]=k;t=(c[B>>2]|0)+j|0;a[t>>0]=a[43977]|0;a[t+1>>0]=a[43978]|0;a[t+2>>0]=a[43979]|0;a[t+3>>0]=a[43980]|0;a[t+4>>0]=a[43981]|0;break}else{wb(C,43977,5);break}}while(0);c[u>>2]=h;Eb(C,l>>>0>>0?43988:43983,u);l=l+1|0;if((l|0)==(i|0))break a}}while(0);h=c[v>>2]|0;if(!(h&32))j=i;else{im(C,p,e[x+26>>1]|0,i,i,43905);j=1;h=c[v>>2]|0}if(h&16|0)im(C,p,e[x+28>>1]|0,i,j,43907);h=c[z>>2]|0;i=h+1|0;if(i>>>0<(c[w>>2]|0)>>>0){c[z>>2]=i;a[(c[B>>2]|0)+h>>0]=41;break}else{wb(C,34066,1);break}}else{if((q&256|0)==0|(q&15|0)==0){if(!(q&1024))break;w=c[x+32>>2]|0;c[o>>2]=c[x+24>>2];c[o+4>>2]=w;Eb(C,43947,o);break}if(!(q&5))h=(i|0)==48?43891:(q&32|0)==0?43907:43905;else h=43889;c[r>>2]=h;Eb(C,43909,r)}while(0);h=c[B>>2]|0;if(((h|0)!=0?(a[h+(c[z>>2]|0)>>0]=0,(c[y>>2]|0)!=0):0)?(a[A>>0]&4)==0:0)k=$d(C)|0;else k=c[B>>2]|0;j=D+108|0;h=c[j>>2]|0;i=c[f+212>>2]|0;if((c[D+112>>2]|0)>(h|0)){c[j>>2]=h+1;f=c[D+104>>2]|0;a[f+(h*20|0)>>0]=-85;b[f+(h*20|0)+2>>1]=0;c[f+(h*20|0)+4>>2]=h;c[f+(h*20|0)+8>>2]=i;c[f+(h*20|0)+12>>2]=0;c[f+(h*20|0)+16>>2]=0;a[f+(h*20|0)+1>>0]=0}else h=Di(D,171,h,i,0)|0;i=c[D>>2]|0;do if(!(a[i+81>>0]|0)){if((h|0)<0)h=(c[j>>2]|0)+-1|0;i=c[D+104>>2]|0;j=i+(h*20|0)+1|0;if(a[j>>0]|0){Ei(D,i+(h*20|0)|0,k,-7);break}if(k|0){c[i+(h*20|0)+16>>2]=k;a[j>>0]=-7}}else if(k|0){if(i|0){if(c[i+480>>2]|0){Xd(i,k);break}D=k;if((c[i+304>>2]|0)>>>0<=D>>>0?(c[i+308>>2]|0)>>>0>D>>>0:0){D=i+300|0;c[k>>2]=c[D>>2];c[D>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{D=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);Ra=E;return}Ra=E;return} -function cr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+16|0;p=r+4|0;j=r;d=c[a>>2]|0;n=c[d>>2]|0;do if(b){if((n+-3|0)>>>0<2){e=b<<2;q=pb(e,0)|0;if(!q){e=7;break}gw(q|0,0,e|0)|0;c[p>>2]=d;if((c[d>>2]|0)==(n|0)){e=d;do e=c[e+12>>2]|0;while((c[e>>2]|0)==(n|0));c[p>>2]=e}else e=d;m=b+-1|0;o=(b|0)>0;a:do if(o){f=0;b:while(1){k=e+8|0;l=c[k>>2]|0;c[k>>2]=0;k=(l|0)==0;if(k)d=0;else c[l+12>>2]=0;e=cr(p,m)|0;if(e|0){k=46;break a}g=c[p>>2]|0;if(g){j=0;e=f;h=c[p>>2]|0;while(1){i=q+(j<<2)|0;f=c[i>>2]|0;if(!f)break;c[e+12>>2]=f;c[e+16>>2]=g;c[f+8>>2]=e;c[g+8>>2]=e;h=e+8|0;f=c[h>>2]|0;c[h>>2]=0;c[i>>2]=0;j=j+1|0;if(!((j|0)<(b|0)&(e|0)!=0))break b;else{g=e;h=e;e=f}}c[p>>2]=h;c[i>>2]=g;c[p>>2]=0;f=e}if(k){k=37;break a}h=l+16|0;e=h;while(1){e=c[e>>2]|0;g=e;if((c[g>>2]|0)==(n|0))e=g+12|0;else break}c[p>>2]=e;i=l+8|0;g=c[h>>2]|0;c[g+8>>2]=c[i>>2];h=c[i>>2]|0;if(!h)d=g;else c[h+12>>2]=g;c[i>>2]=f;f=l}c[p>>2]=e;k=30}else{f=0;while(1){g=e+8|0;j=c[g>>2]|0;c[g>>2]=0;g=(j|0)==0;if(g)d=0;else c[j+12>>2]=0;e=cr(p,m)|0;if(e|0){k=46;break a}e=c[p>>2]|0;if(e|0){k=30;break a}if(g){k=37;break a}h=j+16|0;e=h;while(1){e=c[e>>2]|0;g=e;if((c[g>>2]|0)==(n|0))e=g+12|0;else break}c[p>>2]=e;i=j+8|0;g=c[h>>2]|0;c[g+8>>2]=c[i>>2];h=c[i>>2]|0;if(!h)d=g;else c[h+12>>2]=g;c[i>>2]=f;f=j}}while(0);if((k|0)==30){ar(e);e=18;k=46}else if((k|0)==37){c[p>>2]=0;if(o){h=0;d=0;do{e=q+(h<<2)|0;g=c[e>>2]|0;if(g){if(!d){d=g;e=g+8|0}else{c[f+16>>2]=d;e=c[e>>2]|0;c[f+12>>2]=e;c[e+8>>2]=f;c[d+8>>2]=f;e=f+8|0;d=f;f=c[e>>2]|0}c[e>>2]=0}h=h+1|0}while((h|0)!=(b|0));c[p>>2]=d;e=0}else{e=0;d=0}}if((k|0)==46){if(o){g=0;do{ar(c[q+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(b|0))}if(f)do{g=f;f=c[f+8>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{b=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0)}if(!(c[7324]|0))ab[c[29344>>2]&127](q);else{b=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q)}}else{if((n|0)!=2){q=0;b=d;c[a>>2]=b;Ra=r;return q|0}h=d+12|0;g=c[h>>2]|0;c[p>>2]=g;i=d+16|0;f=c[i>>2]|0;c[j>>2]=f;c[h>>2]=0;c[i>>2]=0;c[g+8>>2]=0;c[f+8>>2]=0;g=b+-1|0;e=cr(p,g)|0;do if(!e){e=cr(j,g)|0;if(!e){e=c[p>>2]|0;c[h>>2]=e;c[e+8>>2]=d;e=c[j>>2]|0;c[i>>2]=e;c[e+8>>2]=d;e=0;break}else{f=c[j>>2]|0;k=63;break}}else k=63;while(0);if((k|0)==63){ar(f);ar(c[p>>2]|0)}}if(!e){q=0;b=d;c[a>>2]=b;Ra=r;return q|0}}else e=1;while(0);ar(d);q=e;b=0;c[a>>2]=b;Ra=r;return q|0}function dr(a,b){a=a|0;b=b|0;var d=0;if(!a){d=0;return d|0}d=b;while(1){if((d|0)<0){b=18;a=6;break}d=d+-1|0;b=dr(c[a+12>>2]|0,d)|0;if(b|0){a=6;break}a=c[a+16>>2]|0;if(!a){b=0;a=6;break}}if((a|0)==6)return b|0;return 0}function er(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=Ra;Ra=Ra+32|0;R=W+20|0;S=W+16|0;T=W+12|0;U=W+8|0;V=W+4|0;E=W;F=b+24|0;H=b+20|0;I=b+16|0;J=b+32|0;K=b+8|0;M=b+4|0;N=b+12|0;m=0;j=f;l=1;D=e;e=0;a:while(1){c[E>>2]=0;c[F>>2]=0;b:do if((j|0)>0){n=j;k=D;while(1){switch(a[k>>0]|0){case 12:case 11:case 13:case 10:case 9:case 32:break;default:{C=k;break b}}i=n+-1|0;k=k+1|0;if((n|0)>1)n=i;else{w=6;break b}}}else{i=j;k=D;w=6}while(0);if((w|0)==6){w=0;if(!i){k=101;i=0;w=171;break}else{n=i;C=k}}i=C+4|0;k=C+5|0;c:do if((n|0)<2)w=187;else{if(!(Lu(C,54896,2)|0))switch(a[C+2>>0]|0){case 0:case 34:case 40:case 41:case 12:case 11:case 13:case 10:case 9:case 32:{i=0;q=2;o=10;break}default:w=25}else w=25;d:do if((w|0)==25){w=0;if((n|0)<3){w=187;break c}if(!(Lu(C,54899,3)|0))switch(a[C+3>>0]|0){case 0:case 34:case 40:case 41:case 12:case 11:case 13:case 10:case 9:case 32:{i=1;q=3;o=10;break d}default:{}}if(!(Lu(C,54903,3)|0))switch(a[C+3>>0]|0){case 0:case 34:case 40:case 41:case 12:case 11:case 13:case 10:case 9:case 32:{i=2;q=3;o=10;break d}default:{}}if((n|0)<4){w=187;break c}if(Lu(C,54907,4)|0){w=187;break c}i=a[i>>0]|0;if(i<<24>>24==47){i=a[k>>0]|0;if((i+-48&255)>=10){w=187;break c}k=5;o=0;do{o=(o*10|0)+-48+(i<<24>>24)|0;k=k+1|0;i=a[C+k>>0]|0}while((i+-48&255)<10)}else{k=4;o=10}switch(i<<24>>24){case 0:case 34:case 40:case 41:case 12:case 11:case 13:case 10:case 9:case 32:{i=3;q=k;break}default:{w=187;break c}}}while(0);p=26336+(i<<3)+6|0;if(mb()|0){k=7;i=0;w=171;break a}if(!(c[7324]|0)){n=Wa[c[29340>>2]&127](48)|0;if(!n){k=7;i=0;w=171;break a}t=n;u=t+48|0;do{a[t>>0]=0;t=t+1|0}while((t|0)<(u|0))}else{i=Wa[c[29356>>2]&127](48)|0;if((c[14985]|0)>>>0<48)c[14985]=48;n=59064;k=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&k>>>0>0){B=c[14978]|0;A=Tv(k|0,n|0,i|0,((i|0)<0)<<31>>31|0)|0;z=L()|0;c[14768]=((z|0)<0|(z|0)==0&A>>>0<=B>>>0)&1}n=Wa[c[29340>>2]&127](i)|0;if(!n){k=7;i=0;w=171;break a}i=Wa[c[29352>>2]&127](n)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i;t=n;u=t+48|0;do{a[t>>0]=0;t=t+1|0}while((t|0)<(u|0))}c[n>>2]=d[p>>0];c[n+4>>2]=o;c[E>>2]=n;k=0;i=C-D+q|0}while(0);e:do if((w|0)==187){w=0;switch(a[C>>0]|0){case 41:{w=87;break a}case 34:{f:do if((n|0)>1){i=1;while(1){if((a[C+i>>0]|0)==34){k=i;break f}i=i+1|0;if((i|0)>=(n|0)){k=i;break}}}else k=1;while(0);i=k+1-D+C|0;if((k|0)==(n|0)){k=1;w=171;break a}A=C+1|0;z=k+-1|0;o=c[b>>2]|0;B=c[o>>2]|0;n=c[M>>2]|0;c[R>>2]=0;k=Za[c[B+12>>2]&127](o,A,z,R)|0;g:do if(!k){c[c[R>>2]>>2]=o;if((c[B>>2]|0)>0?(G=Xa[c[B+24>>2]&255](c[R>>2]|0,n)|0,G|0):0){Wa[c[B+16>>2]&127](c[R>>2]|0)|0;c[R>>2]=0;k=G;o=0;w=36;break}o=c[R>>2]|0;w=B+20|0;y=o;t=0;r=0;s=0;q=0;n=0;u=0;p=0;while(1){c[S>>2]=0;c[T>>2]=0;c[U>>2]=0;c[V>>2]=0;k=$a[c[w>>2]&127](y,R,S,T,U,V)|0;x=(k|0)==0;if(x){if(mb()|0){w=42;break}v=sb(u,(t*24|0)+144|0,0)|0;if(!v){w=42;break}n=c[S>>2]|0;if(mb()|0){w=48;break}u=n+s|0;u=sb(q,u,((u|0)<0)<<31>>31)|0;if(!u){w=48;break}p=v+120|0;q=p+(t*24|0)|0;c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;ew(u+s|0,c[R>>2]|0,c[S>>2]|0)|0;q=c[S>>2]|0;c[p+(t*24|0)+4>>2]=q;n=c[U>>2]|0;if((n|0)<(z|0))n=(a[A+n>>0]|0)==42;else n=0;c[p+(t*24|0)+8>>2]=n&1;n=c[T>>2]|0;if((n|0)>0)n=(a[C+n>>0]|0)==94;else n=0;c[p+(t*24|0)+12>>2]=n&1;t=t+1|0;n=v;r=t;s=q+s|0;q=u;p=v;u=v}else t=t+1|0;if(!x){w=58;break}}do if((w|0)==42)if(u)if(!(c[7324]|0)){ab[c[29344>>2]&127](u);n=q;k=0;break}else{n=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);n=q;k=0;break}else{n=q;k=0}else if((w|0)==48)if(q)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);n=0;k=v;break}else{n=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);n=0;k=v;break}else{n=0;k=v}else if((w|0)==58){Wa[c[B+16>>2]&127](y)|0;o=0;w=59;break g}while(0);w=75}else{o=c[R>>2]|0;w=36}while(0);if((w|0)==36){n=0;r=0;s=0;q=0;p=0;w=59}h:do if((w|0)==59){w=0;if((k|0)==101){if((mb()|0)==0?(O=sb(p,s+144+(r*24|0)|0,0)|0,O|0):0){n=O+48|0;t=O;u=t+112|0;do{c[t>>2]=0;t=t+4|0}while((t|0)<(u|0));c[O>>2]=5;k=O+20|0;c[k>>2]=n;c[O+116>>2]=c[H>>2];c[O+112>>2]=r;n=n+72+(r*24|0)|0;do if(q|0){ew(n|0,q|0,s|0)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{C=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}while(0);p=c[k>>2]|0;q=c[p+64>>2]|0;if((q|0)<=0){k=0;n=O;break}c[p+72>>2]=n;if((q|0)==1){k=0;n=O;break}k=n+(c[p+76>>2]|0)|0;n=1;while(1){c[p+72+(n*24|0)>>2]=k;o=n+1|0;if((o|0)<(q|0)){k=k+(c[p+72+(n*24|0)+4>>2]|0)|0;n=o}else{k=0;n=O;break h}}}if(p)if(!(c[7324]|0)){ab[c[29344>>2]&127](p);n=q;k=0;w=75;break}else{n=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);n=q;k=0;w=75;break}else{n=q;k=0;w=75}}}while(0);do if((w|0)==75){w=0;if(o|0)Wa[c[B+16>>2]&127](o)|0;do if(n|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{C=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);if(k)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);k=7;n=0;break}else{n=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);k=7;n=0;break}else{k=7;n=0}}while(0);c[E>>2]=n;break e}case 40:{c[R>>2]=0;c[J>>2]=(c[J>>2]|0)+1;k=er(b,C+1|0,n+-1|0,E,R)|0;i=1-D+C+(c[R>>2]|0)|0;n=c[E>>2]|0;break e}default:{s=c[H>>2]|0;t=c[I>>2]|0;i:do if((t|0)>0){u=c[K>>2]|0;i=0;j:while(1){k=c[u+(i<<2)>>2]|0;v=Eu(k)|0;if((n|0)>(v|0)?!((k|0)==0?1:(a[C+v>>0]|0)!=58):0){if((v|0)<=0){w=99;break}r=C;p=v;while(1){o=a[k>>0]|0;if(!(o<<24>>24)){w=95;break}o=a[208+(o&255)>>0]|0;q=a[208+(d[r>>0]|0)>>0]|0;if(o<<24>>24!=q<<24>>24){w=97;break}if((p|0)>1){k=k+1|0;r=r+1|0;p=p+-1|0}else{w=99;break j}}if((w|0)==95){w=0;o=0;k=a[208+(d[r>>0]|0)>>0]|0}else if((w|0)==97){w=0;o=o&255;k=q}if((o|0)==(k&255|0)){w=102;break}}i=i+1|0;if((i|0)>=(t|0)){q=s;u=0;break i}}if((w|0)==99){w=0;q=i;u=v+1-D+C|0;break}else if((w|0)==102){w=0;q=i;u=v+1-D+C|0;break}}else{q=s;u=0}while(0);s=D+u|0;p=j-u|0;o=c[b>>2]|0;t=c[o>>2]|0;k:do if((p|0)>0){i=0;while(1){switch(a[s+i>>0]|0){case 34:case 41:case 40:break k;default:{}}i=i+1|0;if((i|0)>=(p|0))break k}}else i=0;while(0);n=c[M>>2]|0;c[R>>2]=0;k=Za[c[t+12>>2]&127](o,s,i,R)|0;do if(!k){c[c[R>>2]>>2]=o;if((c[t>>2]|0)>0?(P=Xa[c[t+24>>2]&255](c[R>>2]|0,n)|0,P|0):0){Wa[c[t+16>>2]&127](c[R>>2]|0)|0;c[R>>2]=0;k=P;w=111;break}r=c[R>>2]|0;c[S>>2]=0;c[T>>2]=0;c[U>>2]=0;c[V>>2]=0;k=$a[c[t+20>>2]&127](r,R,S,T,U,V)|0;l:do if(!k){i=(c[S>>2]|0)+144|0;n=pb(i,0)|0;if(!n){n=0;k=7;i=c[U>>2]|0;break}gw(n|0,0,i|0)|0;c[n>>2]=5;c[n+20>>2]=n+48;c[n+112>>2]=1;c[n+116>>2]=q;i=c[S>>2]|0;c[n+124>>2]=i;C=n+144|0;c[n+120>>2]=C;ew(C|0,c[R>>2]|0,i|0)|0;i=c[U>>2]|0;if((i|0)<(p|0)?(Q=i+1|0,(a[s+i>>0]|0)==42):0){c[n+128>>2]=1;c[U>>2]=Q;i=Q}k=c[T>>2]|0;if((c[N>>2]|0)!=0&(k|0)>0){p=n+132|0;while(1){o=k;k=k+-1|0;if((a[s+k>>0]|0)!=94){k=0;break l}c[p>>2]=1;c[T>>2]=k;if((o|0)<=1){k=0;break}}}else k=0}else{n=0;k=(i|0)!=0&(k|0)==101?0:k}while(0);Wa[c[t+16>>2]&127](r)|0}else w=111;while(0);if((w|0)==111){w=0;n=0}c[E>>2]=n;i=i+u|0;break e}}}while(0);if((k|0)==0&(n|0)!=0){r=c[n>>2]|0;if((r|0)!=5){p=(c[n+12>>2]|0)!=0;o=p^1;k=(l|0)!=0;if(k&o){w=129;break}else q=p}else{k=(l|0)!=0;o=0;q=1}if(k|o)if(!m)m=0;else w=154;else{if(mb()|0){w=152;break}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](48)|0;if(!k){w=152;break}t=k;u=t+48|0;do{a[t>>0]=0;t=t+1|0}while((t|0)<(u|0));p=k}else{k=Wa[c[29356>>2]&127](48)|0;if((c[14985]|0)>>>0<48)c[14985]=48;p=59064;l=c[p>>2]|0;p=c[p+4>>2]|0;if((p|0)>0|(p|0)==0&l>>>0>0){C=c[14978]|0;B=Tv(l|0,p|0,k|0,((k|0)<0)<<31>>31|0)|0;A=L()|0;c[14768]=((A|0)<0|(A|0)==0&B>>>0<=C>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(!l){w=152;break}k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k;t=l;u=t+48|0;do{a[t>>0]=0;t=t+1|0}while((t|0)<(u|0));p=l}c[p>>2]=3;k=m+8|0;l=c[k>>2]|0;m:do if(!l)w=150;else{n=l;while(1){if((c[n>>2]|0)>3)break;k=n+8|0;l=c[k>>2]|0;if(!l){m=n;w=150;break m}else{m=n;n=l}}c[n+16>>2]=p;c[p+8>>2]=c[k>>2]}while(0);if((w|0)==150)e=p;c[p+12>>2]=m;c[k>>2]=p;m=p;w=154}if((w|0)==154){w=0;if(!((r|0)!=1|q)?(c[m>>2]|0)!=5:0){w=158;break}if((r|0)!=5&q?(c[m>>2]|0)==1:0){w=158;break}}if(q){k=c[E>>2]|0;l=k;if(!e){e=k;m=l}else{c[m+16>>2]=k;c[l+8>>2]=m;m=l}}else{q=c[E>>2]|0;k=m+8|0;l=c[k>>2]|0;n:do if(!l)w=167;else{p=c[q>>2]|0;n=l;while(1){if((c[n>>2]|0)>(p|0))break;k=n+8|0;l=c[k>>2]|0;if(!l){m=n;w=167;break n}else{m=n;n=l}}c[n+16>>2]=q;c[q+8>>2]=c[k>>2]}while(0);if((w|0)==167){w=0;e=q}c[q+12>>2]=m;c[k>>2]=q;m=c[E>>2]|0}l=o&1;k=0}j=j-i|0;if(!k)D=D+i|0;else{w=173;break}}if((w|0)==87){c[J>>2]=(c[J>>2]|0)+-1;c[E>>2]=0;k=101;i=1-D+C|0;w=171}else if((w|0)==129){ar(n);i=1;w=170}else if((w|0)==152){ar(n);i=7;w=170}else if((w|0)==158){ar(c[E>>2]|0);i=1;w=170}if((w|0)!=170)if((w|0)==171){j=j-i|0;w=173}if((w|0)==173){i=(e|0)!=0&(k|0)==101&(l|0)!=0?1:k;c[h>>2]=f-j;if((i|0)==101){h=0;f=e;c[g>>2]=f;Ra=W;return h|0}}ar(e);h=i;f=0;c[g>>2]=f;Ra=W;return h|0}function fr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if(!b)return;while(1){if(c[f>>2]|0){v=38;break}g=c[b>>2]|0;if((g|0)==5){v=5;break}c[e>>2]=(c[e>>2]|0)+((g|0)==4&1);fr(a,c[b+12>>2]|0,d,e,f);b=c[b+16>>2]|0;if(!b){v=38;break}}if((v|0)==5){t=b+20|0;b=c[t>>2]|0;u=c[b+64>>2]|0;c[d>>2]=(c[d>>2]|0)+u;a:do if((u|0)>0){s=a+20|0;r=0;b:while(1){o=c[b+72+(r*24|0)>>2]|0;p=c[b+72+(r*24|0)+4>>2]|0;n=c[b+72+(r*24|0)+8>>2]|0;q=b+72+(r*24|0)+20|0;if(mb()|0){g=0;b=7;v=34;break}if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](56)|0;if(!g){g=0;b=7;v=34;break}}else{b=Wa[c[29356>>2]&127](56)|0;if((c[14985]|0)>>>0<56)c[14985]=56;e=59064;g=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&g>>>0>0){m=c[14978]|0;l=Tv(g|0,e|0,b|0,((b|0)<0)<<31>>31|0)|0;k=L()|0;c[14768]=((k|0)<0|(k|0)==0&l>>>0<=m>>>0)&1}g=Wa[c[29340>>2]&127](b)|0;if(!g){g=0;b=7;v=34;break}b=Wa[c[29352>>2]&127](g)|0;b=(c[14978]|0)+b|0;c[14978]=b;if(b>>>0>(c[14982]|0)>>>0)c[14982]=b;b=(c[14981]|0)+1|0;c[14981]=b;if(b>>>0>(c[14987]|0)>>>0)c[14987]=b}m=c[a>>2]|0;l=(n|0)!=0;c:do if(l){h=m+256|0;d=g+36|0;k=c[m+252>>2]|0;i=(k|0)>1;if(i){e=c[h>>2]|0;j=1;while(1){if((c[e+(j*24|0)>>2]|0)==(p|0)){v=25;break}b=j+1|0;if((b|0)<(k|0))j=b;else break}if((v|0)==25){v=0;b=c[s>>2]|0;i=g;k=i+56|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(k|0));b=Xp(m,b,j,-2,o,p,0,0,g)|0;c[d>>2]=1;break}j=p+1|0;if(i){e=c[h>>2]|0;h=1;while(1){if((c[e+(h*24|0)>>2]|0)==(j|0))break;b=h+1|0;if((b|0)<(k|0))h=b;else{v=33;break c}}b=c[s>>2]|0;i=g;k=i+56|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(k|0));b=Xp(m,b,h,-2,o,p,1,0,g)|0;if(b|0){v=34;break b}b=Xp(m,c[s>>2]|0,0,-2,o,p,0,0,g)|0}else v=33}else v=33}else{d=g+36|0;v=33}while(0);if((v|0)==33){v=0;b=(l^1)&1;e=c[s>>2]|0;i=g;k=i+56|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(k|0));p=Xp(m,e,0,-2,o,p,n,0,g)|0;c[d>>2]=b;b=p}c[q>>2]=g;r=r+1|0;if(b|0)break;b=c[t>>2]|0;if((r|0)>=(u|0))break a}if((v|0)==34)c[q>>2]=g;c[f>>2]=b;return}while(0);c[b+44>>2]=-1;return}else if((v|0)==38)return}function gr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;D=Ra;Ra=Ra+16|0;C=D;if(c[h>>2]|0){Ra=D;return}j=e;a:while(1){switch(c[j>>2]|0){case 5:{e=5;break a}case 2:{e=31;break a}case 4:{i=j+12|0;e=c[i>>2]|0;c[c[g>>2]>>2]=e;c[g>>2]=(c[g>>2]|0)+4;break}default:{e=d;i=j+12|0}}gr(b,e,c[i>>2]|0,f,g,h);i=j+16|0;if((c[j>>2]|0)==4){e=c[i>>2]|0;c[c[g>>2]>>2]=e;c[g>>2]=(c[g>>2]|0)+4}if(!(c[h>>2]|0)){d=e;j=c[i>>2]|0}else{e=31;break}}if((e|0)==5){v=c[j+20>>2]|0;w=v+64|0;x=v+68|0;u=0;while(1){if((u|0)>=(c[w>>2]|0)){e=31;break}y=c[f>>2]|0;c[f>>2]=y+24;c[y>>2]=v;c[y+4>>2]=u;c[y+12>>2]=d;c[y+8>>2]=v+72+(u*24|0);c[y+20>>2]=c[x>>2];m=c[v+72+(u*24|0)+20>>2]|0;y=y+16|0;t=c[b>>2]|0;n=c[t+240>>2]|0;o=m+4|0;p=t+20|0;q=t+248|0;r=t+244|0;s=t+12|0;t=t+16|0;i=0;l=0;while(1){if((l|0)>=(c[o>>2]|0)){e=0;break}e=c[(c[m>>2]|0)+(l<<2)>>2]|0;b:do if(((c[e+56>>2]|0)==0?(a[e+5>>0]|0)==0:0)?(A=e+8|0,z=c[A>>2]|0,A=c[A+4>>2]|0,B=e+16|0,k=B,g=c[k+4>>2]|0,!((A|0)>(g|0)|((A|0)==(g|0)?z>>>0>(c[k>>2]|0)>>>0:0))):0){j=c[q>>2]|0;g=z;k=A;while(1){if(!j){e=c[r>>2]|0;if(!e){c[C>>2]=c[p>>2];e=Bb(53537,C)|0;c[r>>2]=e;if(!e){e=7;break b}}e=ad(c[s>>2]|0,c[t>>2]|0,e,53549,g,k,0,q)|0}else e=ld(j,g,k)|0;if(e|0)break b;j=c[q>>2]|0;if((j|0)!=0?(c[j+16>>2]|0)!=0:0)e=c[j>>2]|0;else e=0;if((e+35|0)>(n|0))i=((e+34|0)/(n|0)|0)+i|0;E=g;g=Sv(g|0,k|0,1,0)|0;G=k;k=L()|0;e=B;F=c[e+4>>2]|0;if(!((G|0)<(F|0)|((G|0)==(F|0)?E>>>0<(c[e>>2]|0)>>>0:0))){e=0;break}}}else e=0;while(0);if(!e)l=l+1|0;else break}c[y>>2]=i;c[h>>2]=e;if(!e)u=u+1|0;else{e=31;break}}if((e|0)==31){Ra=D;return}}else if((e|0)==31){Ra=D;return}}function hr(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=Ra;Ra=Ra+16|0;x=B+4|0;y=B;z=c[e>>2]|0;if(c[z+40>>2]|0){A=0;Ra=B;return A|0}v=(h|0)>0;if(!v){A=0;Ra=B;return A|0}i=0;j=0;k=0;while(1){if((c[g+(k*24|0)+12>>2]|0)==(f|0)){u=i+1|0;j=(c[g+(k*24|0)+16>>2]|0)+j|0}else u=i;k=k+1|0;if((k|0)==(h|0))break;else i=u}if((j|0)==0|(u|0)<2){A=0;Ra=B;return A|0}s=e+60|0;i=c[s>>2]|0;do if(!i){i=lr(z,x)|0;if(!i){r=c[x>>2]|0;q=(r|0)==0;if(q)l=mc(29576)|0;else{i=c[r+120>>2]|0;if((i|0)!=0?(b[r+144>>1]|0)!=0:0)j=r;else{i=c[r>>2]|0;c[i+64>>2]=25;Ne(i,25);i=29576;j=r}l=mc(i)|0;i=c[j>>2]|0;k=r+40|0;j=c[k>>2]|0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7}else i=c[i+68>>2]&j;c[k>>2]=i}n=Lc(r,0)|0;p=l+n|0;j=a[l>>0]|0;i=j&255;do if(!(i&128)){k=1;i=j&255;o=0}else{t=d[l+1>>0]|0;i=t<<7|i&127;if(!(t&128)){k=2;o=0;break}t=d[l+2>>0]|0;i=t<<14|i&16383;if(!(t&128)){k=3;o=0;break}t=d[l+3>>0]|0;i=t<<21|i&2097151;if(!(t&128)){k=4;o=0;break}j=28;k=l+4|0;i=i&268435455;m=0;do{t=k;k=k+1|0;t=d[t>>0]|0;o=cw(t&127|0,0,j|0)|0;i=Sv(o|0,L()|0,i|0,m|0)|0;m=L()|0;j=j+7|0}while(j>>>0<64&((t&128|0)!=0|0!=0));k=k-l|0;o=m}while(0);if((k|0)<(n|0)){n=l+k|0;do{k=a[n>>0]|0;j=k&255;do if(!(j&128)){l=1;j=k&255;k=0}else{t=d[n+1>>0]|0;j=t<<7|j&127;if(!(t&128)){l=2;k=0;break}t=d[n+2>>0]|0;j=t<<14|j&16383;if(!(t&128)){l=3;k=0;break}t=d[n+3>>0]|0;j=t<<21|j&2097151;if(!(t&128)){l=4;k=0;break}l=28;m=n+4|0;j=j&268435455;k=0;do{t=m;m=m+1|0;t=d[t>>0]|0;C=cw(t&127|0,0,l|0)|0;j=Sv(C|0,L()|0,j|0,k|0)|0;k=L()|0;l=l+7|0}while(l>>>0<64&((t&128|0)!=0|0!=0));l=m-n|0}while(0);n=n+l|0}while(n>>>0

        >>0);if(!((i|0)==0&(o|0)==0|(j|0)==0&(k|0)==0)){p=e+64|0;c[p>>2]=i;c[p+4>>2]=o;o=Wv(j|0,k|0,i|0,o|0)|0;p=L()|0;t=c[z+240>>2]|0;C=((t|0)<0)<<31>>31;p=Sv(o|0,p|0,t|0,C|0)|0;C=Wv(p|0,L()|0,t|0,C|0)|0;L()|0;c[s>>2]=C;do if(!q){i=c[r>>2]|0;C=r+136|0;t=c[C+4>>2]|0;if((t|0)>0|(t|0)==0&(c[C>>2]|0)>>>0>0)hc(i,r);j=kc(r)|0;c[r+20>>2]=770837923;c[r+36>>2]=-1;c[r+40>>2]=0;a[r+146>>0]=2;c[r+44>>2]=0;c[r+32>>2]=1;a[r+147>>0]=-1;c[r+48>>2]=0;C=r+64|0;c[C>>2]=0;c[C+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7;break}else{i=c[i+68>>2]&j;break}}else i=0;while(0);t=c[s>>2]|0;break}}if(!q){i=c[r>>2]|0;C=r+136|0;A=c[C+4>>2]|0;if((A|0)>0|(A|0)==0&(c[C>>2]|0)>>>0>0)hc(i,r);C=kc(r)|0;c[r+20>>2]=770837923;c[r+36>>2]=-1;c[r+40>>2]=0;a[r+146>>0]=2;c[r+44>>2]=0;c[r+32>>2]=1;a[r+147>>0]=-1;c[r+48>>2]=0;A=r+64|0;c[A>>2]=0;c[A+4>>2]=0;if((C|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=267}else i=267}else i=267}C=i;Ra=B;return C|0}else{t=i;i=0}while(0);if(!((u|0)>0&(i|0)==0)){C=i;Ra=B;return C|0}s=u+-1|0;r=e+28|0;p=0;o=1;q=0;while(1){if(v){i=0;k=0;do{j=g+(k*24|0)|0;do if((c[g+(k*24|0)+8>>2]|0)!=0?(c[g+(k*24|0)+12>>2]|0)==(f|0):0){if(i|0?(c[g+(k*24|0)+16>>2]|0)>=(c[i+16>>2]|0):0)break;i=j}while(0);k=k+1|0}while((k|0)!=(h|0));m=i}else m=0;n=(q|0)==0;do if(n){o=o<<2;A=88}else{C=(o|0)/4|0;if((c[m+16>>2]|0)<(G((p+-1+C|0)/(C|0)|0,t)|0)){j=q>>>0<12?o<<2:o;if(!((q|0)==(s|0)?1:(c[(c[m>>2]|0)+64>>2]|0)<2)){o=j;A=88;break}i=0;l=j;k=p;j=m+8|0;break}j=m+8|0;n=c[j>>2]|0;m=c[m+20>>2]|0;do if(!(mb()|0)){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](16)|0;if(!i){i=7;break}}else{i=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){C=c[14978]|0;e=Tv(k|0,l|0,i|0,((i|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&e>>>0<=C>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=7;break}k=Wa[c[29352>>2]&127](i)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}c[i+12>>2]=0;c[i>>2]=n;c[i+8>>2]=c[r>>2];c[i+4>>2]=m;c[r>>2]=i;c[n+16>>2]=i;i=0}else i=7;while(0);l=n+20|0;br(c[l>>2]|0);c[l>>2]=0;l=o;k=p}while(0);if((A|0)==88){A=0;j=m+8|0;i=c[j>>2]|0;c[x>>2]=0;c[y>>2]=0;i=jr(z,i,c[m+20>>2]|0,x,y)|0;if(!i){i=kr(z,c[m>>2]|0,c[m+4>>2]|0,c[y>>2]|0,c[x>>2]|0)|0;if(!i){k=c[m>>2]|0;i=c[k>>2]|0;k=c[k+4>>2]|0;if((i|0)!=0?(w=i+k|0,(k|0)>0):0){k=0;do{do{C=i;i=i+1|0}while((a[C>>0]|0)<0);l=0;while(1){m=a[i>>0]|0;i=i+1|0;if(!(l<<24>>24|m))break;else l=m&128}k=k+1|0}while(i>>>0>>0)}else k=0;i=0;k=n|(k|0)<(p|0)?k:p}else k=p}else k=p;l=o}c[j>>2]=0;q=q+1|0;if(!((q|0)<(u|0)&(i|0)==0))break;else{p=k;o=l}}Ra=B;return i|0}function ir(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!d)return;if(c[e>>2]|0)return;if((c[d>>2]|0)!=5){h=d+12|0;ir(b,c[h>>2]|0,e);f=d+16|0;ir(b,c[f>>2]|0,e);if(!(a[(c[h>>2]|0)+34>>0]|0))f=0;else f=(a[(c[f>>2]|0)+34>>0]|0)!=0&1;a[d+34>>0]=f;return}h=c[d+20>>2]|0;g=c[h+64>>2]|0;if(g|0){a:do if((g|0)>0){f=0;do{if(!(c[h+72+(f*24|0)+16>>2]|0))break a;f=f+1|0}while((f|0)<(g|0))}else f=0;while(0);a[d+34>>0]=(f|0)==(g|0)&1}d=pr(b,1,h)|0;c[e>>2]=d;return}function jr(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=Ra;Ra=Ra+160|0;r=x+148|0;s=x+144|0;u=x+16|0;i=x;w=e+20|0;v=c[w>>2]|0;j=u;k=j+128|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));c[i+12>>2]=((c[e+12>>2]|0)==0?0:32)|((c[e+8>>2]|0)==0?3:11)|((c[b+24>>2]|0)>(f|0)?4:0);c[i+8>>2]=f;q=c[e>>2]|0;c[i>>2]=q;e=c[e+4>>2]|0;c[i+4>>2]=e;c[v+12>>2]=i;e=eq(b,v,q,e)|0;a:do if(!e){n=v+48|0;o=v+52|0;p=u+64|0;q=b+235|0;b:while(1){e=gq(b,v)|0;switch(e|0){case 0:break b;case 100:break;default:break a}m=c[n>>2]|0;f=c[o>>2]|0;e=c[u>>2]|0;c:do if(!e){e=nb(f+11|0)|0;c[u>>2]=e;c[p>>2]=f;if(!e)e=7;else{ew(e|0,m|0,f|0)|0;j=e+f|0;k=j+10|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(k|0));e=0}}else{l=0;j=m;i=u;while(1){k=u+64+(l<<2)|0;e=mr(d[q>>0]|0,j,f,e,c[k>>2]|0,r,s)|0;f=(j|0)==(m|0)|(j|0)==0;if(e|0){t=10;break}do if(!f)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{f=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);e=c[i>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{j=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);c[i>>2]=0;j=c[r>>2]|0;f=c[s>>2]|0;if((l|0)==15){t=23;break}l=l+1|0;if(l>>>0>=16){e=0;break c}i=u+(l<<2)|0;e=c[i>>2]|0;if(!e){t=8;break}}if((t|0)==8){t=0;c[i>>2]=j;c[u+64+(l<<2)>>2]=f;e=0;break}else if((t|0)==10){t=0;do if(!f)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{m=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);break}else if((t|0)==23){t=0;c[i>>2]=j;c[k>>2]=f;e=0;break}}while(0);if(e|0)break a}l=0;f=0;j=0;d:while(1){i=u+(l<<2)|0;k=c[i>>2]|0;do if(!k)e=j;else{if(!j){f=c[u+64+(l<<2)>>2]|0;c[i>>2]=0;e=k;break}e=mr(d[q>>0]|0,k,c[u+64+(l<<2)>>2]|0,j,f,s,r)|0;f=(c[7324]|0)==0;if(e|0)break d;if(f)ab[c[29344>>2]&127](k);else{b=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{b=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}c[i>>2]=0;f=c[r>>2]|0;e=c[s>>2]|0}while(0);l=l+1|0;if(l>>>0>=16){t=45;break}else j=e}if((t|0)==45){c[u>>2]=e;c[p>>2]=f;c[h>>2]=e;c[g>>2]=f;u=0;br(v);c[w>>2]=0;Ra=x;return u|0}if(f)ab[c[29344>>2]&127](j);else{t=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}}while(0);f=0;do{i=c[u+(f<<2)>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{t=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);f=f+1|0}while((f|0)!=16);br(v);c[w>>2]=0;Ra=x;return e|0}function kr(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0;M=Ra;Ra=Ra+16|0;F=M+8|0;G=M+4|0;H=M;do if(!g){i=c[e>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{K=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[e>>2]=0;c[e+4>>2]=0;j=0;i=e+44|0}else{i=e+44|0;j=c[i>>2]|0;if((j|0)<0){c[e>>2]=g;c[e+4>>2]=h;j=0;break}l=c[e>>2]|0;if(!l)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);j=0;break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);j=0;break}K=e+4|0;k=c[K>>2]|0;if((j|0)<(f|0)){D=f-j|0;m=k;J=l;l=g}else{D=j-f|0;m=h;J=g;h=k}E=l;p=a[b+235>>0]|0;A=J+m|0;B=l+h|0;c[F>>2]=J;c[G>>2]=l;C=p<<24>>24!=0;if(C){j=Sv(h|0,((h|0)<0)<<31>>31|0,10,0)|0;j=pb(j,L()|0)|0;if(!j){j=7;k=E}else{g=j;k=j;I=19}}else{g=l;k=E;I=19}do if((I|0)==19){c[H>>2]=g;if((m|0)>0){g=a[J>>0]|0;j=g&255;do if(!(j&128)){b=1;j=g&255;g=0}else{z=d[J+1>>0]|0;j=z<<7|j&127;if(!(z&128)){b=2;g=0;break}z=d[J+2>>0]|0;j=z<<14|j&16383;if(!(z&128)){b=3;g=0;break}z=d[J+3>>0]|0;j=z<<21|j&2097151;if(!(z&128)){b=4;g=0;break}g=28;b=J+4|0;j=j&268435455;m=0;do{z=b;b=b+1|0;z=d[z>>0]|0;y=cw(z&127|0,0,g|0)|0;j=Sv(y|0,L()|0,j|0,m|0)|0;m=L()|0;g=g+7|0}while(g>>>0<64&((z&128|0)!=0|0!=0));b=b-J|0;g=m}while(0);o=J+b|0;n=g}else{o=0;j=0;n=0}c[F>>2]=o;if((h|0)>0){g=a[l>>0]|0;h=g&255;do if(!(h&128)){b=1;h=g&255;m=0}else{z=d[l+1>>0]|0;h=z<<7|h&127;if(!(z&128)){b=2;m=0;break}z=d[l+2>>0]|0;h=z<<14|h&16383;if(!(z&128)){b=3;m=0;break}z=d[l+3>>0]|0;h=z<<21|h&2097151;if(!(z&128)){b=4;m=0;break}g=28;b=l+4|0;h=h&268435455;m=0;do{z=b;b=b+1|0;z=d[z>>0]|0;y=cw(z&127|0,0,g|0)|0;h=Sv(y|0,L()|0,h|0,m|0)|0;m=L()|0;g=g+7|0}while(g>>>0<64&((z&128|0)!=0|0!=0));b=b-E|0}while(0);g=l+b|0;c[G>>2]=g;if((o|0)!=0&(g|0)!=0){y=C?-1:1;z=C?-1:0;x=p<<24>>24==0;w=0;s=n;v=0;u=0;t=g;r=o;a:while(1){q=Tv(j|0,s|0,h|0,m|0)|0;q=Yv(q|0,L()|0,y|0,z|0)|0;g=L()|0;do if(!((q|0)==0&(g|0)==0))if((g|0)<0){n=r;g=0;while(1){b=a[n>>0]|0;q=n+1|0;if(!(g<<24>>24|b))break;else{n=q;g=b&128}}p=q;c[F>>2]=q;if(q>>>0>=A>>>0){I=85;break a}b=a[q>>0]|0;g=b&255;do if(!(g&128)){n=1;b=b&255;g=0}else{r=d[n+2>>0]|0;g=r<<7|g&127;if(!(r&128)){n=2;b=g;g=0;break}r=d[n+3>>0]|0;g=r<<14|g&16383;if(!(r&128)){n=3;b=g;g=0;break}r=d[n+4>>0]|0;b=r<<21|g&2097151;if(!(r&128)){n=4;g=0;break}o=28;n=n+5|0;b=b&268435455;g=0;do{r=n;n=n+1|0;r=d[r>>0]|0;N=cw(r&127|0,0,o|0)|0;b=Sv(N|0,L()|0,b|0,g|0)|0;g=L()|0;o=o+7|0}while(o>>>0<64&((r&128|0)!=0|0!=0));n=n-p|0}while(0);p=q+n|0;c[F>>2]=p;o=Tv(0,0,b|0,g|0)|0;q=L()|0;j=Sv((x?b:o)|0,(x?g:q)|0,j|0,s|0)|0;q=w;o=t;n=L()|0;b=v;g=u;break}else{n=t;g=0;while(1){b=a[n>>0]|0;q=n+1|0;if(!(g<<24>>24|b))break;else{n=q;g=b&128}}p=q;c[G>>2]=q;if(q>>>0>=B>>>0){I=100;break a}b=a[q>>0]|0;g=b&255;do if(!(g&128)){n=1;b=b&255;g=0}else{N=d[n+2>>0]|0;g=N<<7|g&127;if(!(N&128)){n=2;b=g;g=0;break}N=d[n+3>>0]|0;g=N<<14|g&16383;if(!(N&128)){n=3;b=g;g=0;break}N=d[n+4>>0]|0;b=N<<21|g&2097151;if(!(N&128)){n=4;g=0;break}o=28;n=n+5|0;b=b&268435455;g=0;do{N=n;n=n+1|0;N=d[N>>0]|0;t=cw(N&127|0,0,o|0)|0;b=Sv(t|0,L()|0,b|0,g|0)|0;g=L()|0;o=o+7|0}while(o>>>0<64&((N&128|0)!=0|0!=0));n=n-p|0}while(0);o=q+n|0;c[G>>2]=o;p=Tv(0,0,b|0,g|0)|0;q=L()|0;h=Sv((x?b:p)|0,(x?g:q)|0,h|0,m|0)|0;q=w;p=r;n=s;m=L()|0;b=v;g=u;break}else{b=c[H>>2]|0;t=x|(w|0)==0;r=Tv(j|0,s|0,v|0,u|0)|0;N=L()|0;o=Tv(v|0,u|0,j|0,s|0)|0;q=L()|0;g=b;o=t?r:o;q=t?N:q;while(1){n=o&255;p=g+1|0;a[g>>0]=n|-128;o=bw(o|0,q|0,7)|0;q=L()|0;if((o|0)==0&(q|0)==0)break;else g=p}a[g>>0]=n&127;c[H>>2]=(c[H>>2]|0)+(p-b);if(!(or(H,D,0,1,F,G)|0)){c[H>>2]=b;q=w;t=v}else{q=1;t=j;u=s}p=c[F>>2]|0;if(p>>>0>>0){b=a[p>>0]|0;g=b&255;do if(!(g&128)){n=1;g=b&255;b=0}else{N=d[p+1>>0]|0;g=N<<7|g&127;if(!(N&128)){n=2;b=0;break}N=d[p+2>>0]|0;g=N<<14|g&16383;if(!(N&128)){n=3;b=0;break}N=d[p+3>>0]|0;g=N<<21|g&2097151;if(!(N&128)){n=4;b=0;break}n=28;o=p+4|0;g=g&268435455;b=0;do{N=o;o=o+1|0;N=d[N>>0]|0;w=cw(N&127|0,0,n|0)|0;g=Sv(w|0,L()|0,g|0,b|0)|0;b=L()|0;n=n+7|0}while(n>>>0<64&((N&128|0)!=0|0!=0));n=o-p|0}while(0);r=p+n|0;c[F>>2]=r;w=Tv(0,0,g|0,b|0)|0;N=L()|0;j=Sv((x?g:w)|0,(x?b:N)|0,j|0,s|0)|0;s=L()|0}else{c[F>>2]=0;r=0}p=c[G>>2]|0;if(p>>>0>=B>>>0){I=67;break a}b=a[p>>0]|0;g=b&255;do if(!(g&128)){n=1;g=b&255;b=0}else{N=d[p+1>>0]|0;g=N<<7|g&127;if(!(N&128)){n=2;b=0;break}N=d[p+2>>0]|0;g=N<<14|g&16383;if(!(N&128)){n=3;b=0;break}N=d[p+3>>0]|0;g=N<<21|g&2097151;if(!(N&128)){n=4;b=0;break}n=28;o=p+4|0;g=g&268435455;b=0;do{N=o;o=o+1|0;N=d[N>>0]|0;w=cw(N&127|0,0,n|0)|0;g=Sv(w|0,L()|0,g|0,b|0)|0;b=L()|0;n=n+7|0}while(n>>>0<64&((N&128|0)!=0|0!=0));n=o-p|0}while(0);o=p+n|0;c[G>>2]=o;n=Tv(0,0,g|0,b|0)|0;p=L()|0;h=Sv((x?g:n)|0,(x?b:p)|0,h|0,m|0)|0;p=r;n=s;m=L()|0;b=t;g=u}while(0);if((o|0)!=0&(p|0)!=0){w=q;s=n;v=b;u=g;t=o;r=p}else break}if((I|0)==67)c[G>>2]=0;else if((I|0)==85)c[F>>2]=0;else if((I|0)==100)c[G>>2]=0;j=c[H>>2]|0}else j=k}else{c[G>>2]=0;j=k}h=j-k|0;if(C)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);j=0;break}else{j=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);j=0;break}else{j=0;k=E}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](J);else{N=Wa[c[29352>>2]&127](J)|0;c[14978]=(c[14978]|0)-N;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](J)}c[e>>2]=k;c[K>>2]=h}while(0);if((c[i>>2]|0)>=(f|0)){Ra=M;return j|0}c[i>>2]=f;Ra=M;return j|0}function lr(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+16|0;f=l;h=l+8|0;i=d+144|0;k=c[i>>2]|0;c[h>>2]=k;g=k;if(!k){k=c[d+20>>2]|0;c[f>>2]=c[d+16>>2];c[f+4>>2]=k;f=Bb(52411,f)|0;if(!f){k=7;j=g;c[e>>2]=j;Ra=l;return k|0}d=qd(c[d+12>>2]|0,f,-1,133,0,h,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{k=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}f=c[h>>2]|0;c[i>>2]=f;if(!d)i=f;else{k=d;j=f;c[e>>2]=j;Ra=l;return k|0}}else i=g;k=i;do if(!(Vc(k,1)|0)){f=c[k+100>>2]|0;d=f+8|0;if(!(b[d>>1]&9216)){h=f;c[h>>2]=0;c[h+4>>2]=0;b[d>>1]=4;break}else{Pg(f,0,0);break}}while(0);if((Gc(k)|0)==100){if(i|0){f=c[k+120>>2]|0;if(!((f|0)!=0?(b[k+144>>1]|0)!=0:0)){f=c[k>>2]|0;c[f+64>>2]=25;Ne(f,25);f=29576}g=b[f+8>>1]&15;f=c[k>>2]|0;h=k+40|0;d=c[h>>2]|0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=7}else f=c[f+68>>2]&d;c[h>>2]=f;if((g|16)<<16>>16==16){k=0;j=i;c[e>>2]=j;Ra=l;return k|0}else j=22}}else j=22;do if((j|0)==22?i|0:0){f=c[k>>2]|0;j=k+136|0;i=c[j+4>>2]|0;if((i|0)>0|(i|0)==0&(c[j>>2]|0)>>>0>0)hc(f,k);d=kc(k)|0;c[k+20>>2]=770837923;c[k+36>>2]=-1;c[k+40>>2]=0;a[k+146>>0]=2;c[k+44>>2]=0;c[k+32>>2]=1;a[k+147>>0]=-1;c[k+48>>2]=0;k=k+64|0;c[k>>2]=0;c[k+4>>2]=0;if((d|0)==3082|(a[f+81>>0]|0)!=0){og(f);k=7;j=0;c[e>>2]=j;Ra=l;return k|0}else{f=c[f+68>>2]&d;if(!f)break;else d=0;c[e>>2]=d;Ra=l;return f|0}}while(0);k=267;j=0;c[e>>2]=j;Ra=l;return k|0}function mr(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=Ra;Ra=Ra+16|0;y=C+8|0;z=C+4|0;A=C;w=e+f|0;x=g+h|0;c[y>>2]=e;c[z>>2]=g;c[i>>2]=0;c[j>>2]=0;l=Sv(f|0,((f|0)<0)<<31>>31|0,17,0)|0;l=Sv(l|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;l=pb(l,L()|0)|0;if(!l){B=7;Ra=C;return B|0}c[A>>2]=l;if((f|0)>0){k=a[e>>0]|0;f=k&255;do if(!(f&128)){m=1;f=k&255;k=0}else{v=d[e+1>>0]|0;f=v<<7|f&127;if(!(v&128)){m=2;k=0;break}v=d[e+2>>0]|0;f=v<<14|f&16383;if(!(v&128)){m=3;k=0;break}v=d[e+3>>0]|0;f=v<<21|f&2097151;if(!(v&128)){m=4;k=0;break}m=28;n=e+4|0;f=f&268435455;k=0;do{v=n;n=n+1|0;v=d[v>>0]|0;u=cw(v&127|0,0,m|0)|0;f=Sv(u|0,L()|0,f|0,k|0)|0;k=L()|0;m=m+7|0}while(m>>>0<64&((v&128|0)!=0|0!=0));m=n-e|0}while(0);p=k;o=e+m|0}else{f=0;p=0;o=0}c[y>>2]=o;if((h|0)>0){m=a[g>>0]|0;k=m&255;do if(!(k&128)){n=1;k=m&255;m=0}else{v=d[g+1>>0]|0;k=v<<7|k&127;if(!(v&128)){n=2;m=0;break}v=d[g+2>>0]|0;k=v<<14|k&16383;if(!(v&128)){n=3;m=0;break}v=d[g+3>>0]|0;k=v<<21|k&2097151;if(!(v&128)){n=4;m=0;break}n=28;e=g+4|0;k=k&268435455;m=0;do{v=e;e=e+1|0;v=d[v>>0]|0;u=cw(v&127|0,0,n|0)|0;k=Sv(u|0,L()|0,k|0,m|0)|0;m=L()|0;n=n+7|0}while(n>>>0<64&((v&128|0)!=0|0!=0));n=e-g|0}while(0);e=m;m=g+n|0}else{k=0;e=0;m=0}c[z>>2]=m;n=(o|0)!=0;m=(m|0)!=0;a:do if(n|m){t=(b|0)==0;u=t?1:-1;v=t?0:-1;g=0;s=f;r=p;q=e;b=n;p=m;n=0;m=0;b:while(1){o=Tv(s|0,r|0,k|0,q|0)|0;o=Yv(o|0,L()|0,u|0,v|0)|0;f=L()|0;do if(!((o|0)==0&(f|0)==0&(b&p))){g=t|(g|0)==0;if((f|0)<0&b|p^1){p=Tv(s|0,r|0,n|0,m|0)|0;b=L()|0;o=Tv(n|0,m|0,s|0,r|0)|0;n=L()|0;h=c[A>>2]|0;e=h;o=g?p:o;n=g?b:n;while(1){f=o&255;m=e+1|0;a[e>>0]=f|-128;o=bw(o|0,n|0,7)|0;n=L()|0;if((o|0)==0&(n|0)==0)break;else e=m}a[e>>0]=f&127;n=(c[A>>2]|0)+(m-h)|0;c[A>>2]=n;e=c[y>>2]|0;h=e;f=0;while(1){m=a[h>>0]|0;g=h+1|0;if(!(f<<24>>24|m))break;else{h=g;f=m&128}}o=g;b=o-e|0;ew(n|0,e|0,b|0)|0;c[A>>2]=n+b;c[y>>2]=g;if(g>>>0>=w>>>0){c[y>>2]=0;o=s;f=r;e=k;h=q;n=s;m=r;break}m=a[g>>0]|0;f=m&255;do if(!(f&128)){n=1;m=m&255;f=0}else{b=d[h+2>>0]|0;f=b<<7|f&127;if(!(b&128)){n=2;m=f;f=0;break}b=d[h+3>>0]|0;f=b<<14|f&16383;if(!(b&128)){n=3;m=f;f=0;break}b=d[h+4>>0]|0;m=b<<21|f&2097151;if(!(b&128)){n=4;f=0;break}e=28;n=h+5|0;m=m&268435455;f=0;do{b=n;n=n+1|0;b=d[b>>0]|0;p=cw(b&127|0,0,e|0)|0;m=Sv(p|0,L()|0,m|0,f|0)|0;f=L()|0;e=e+7|0}while(e>>>0<64&((b&128|0)!=0|0!=0));n=n-o|0}while(0);c[y>>2]=g+n;e=Tv(0,0,m|0,f|0)|0;o=L()|0;o=Sv((t?m:e)|0,(t?f:o)|0,s|0,r|0)|0;f=L()|0;e=k;h=q;n=s;m=r;break}else{p=Tv(k|0,q|0,n|0,m|0)|0;b=L()|0;o=Tv(n|0,m|0,k|0,q|0)|0;n=L()|0;h=c[A>>2]|0;e=h;o=g?p:o;n=g?b:n;while(1){f=o&255;m=e+1|0;a[e>>0]=f|-128;o=bw(o|0,n|0,7)|0;n=L()|0;if((o|0)==0&(n|0)==0)break;else e=m}a[e>>0]=f&127;n=(c[A>>2]|0)+(m-h)|0;c[A>>2]=n;e=c[z>>2]|0;h=e;f=0;while(1){m=a[h>>0]|0;g=h+1|0;if(!(f<<24>>24|m))break;else{h=g;f=m&128}}o=g;b=o-e|0;ew(n|0,e|0,b|0)|0;c[A>>2]=n+b;c[z>>2]=g;if(g>>>0>=x>>>0){c[z>>2]=0;o=s;f=r;e=k;h=q;n=k;m=q;break}m=a[g>>0]|0;f=m&255;do if(!(f&128)){n=1;m=m&255;f=0}else{b=d[h+2>>0]|0;f=b<<7|f&127;if(!(b&128)){n=2;m=f;f=0;break}b=d[h+3>>0]|0;f=b<<14|f&16383;if(!(b&128)){n=3;m=f;f=0;break}b=d[h+4>>0]|0;m=b<<21|f&2097151;if(!(b&128)){n=4;f=0;break}e=28;n=h+5|0;m=m&268435455;f=0;do{b=n;n=n+1|0;b=d[b>>0]|0;p=cw(b&127|0,0,e|0)|0;m=Sv(p|0,L()|0,m|0,f|0)|0;f=L()|0;e=e+7|0}while(e>>>0<64&((b&128|0)!=0|0!=0));n=n-o|0}while(0);c[z>>2]=g+n;o=Tv(0,0,m|0,f|0)|0;e=L()|0;e=Sv((t?m:o)|0,(t?f:e)|0,k|0,q|0)|0;o=s;f=r;h=L()|0;n=k;m=q;break}}else{p=t|(g|0)==0;g=Tv(s|0,r|0,n|0,m|0)|0;b=L()|0;e=Tv(n|0,m|0,s|0,r|0)|0;o=L()|0;m=c[A>>2]|0;f=m;e=p?g:e;o=p?b:o;while(1){n=e&255;h=f+1|0;a[f>>0]=n|-128;e=bw(e|0,o|0,7)|0;o=L()|0;if((e|0)==0&(o|0)==0)break;else f=h}a[f>>0]=n&127;c[A>>2]=(c[A>>2]|0)+(h-m);f=nr(A,y,z)|0;if(f|0)break b;h=c[y>>2]|0;if(h>>>0>>0){m=a[h>>0]|0;f=m&255;do if(!(f&128)){n=1;f=m&255;m=0}else{b=d[h+1>>0]|0;f=b<<7|f&127;if(!(b&128)){n=2;m=0;break}b=d[h+2>>0]|0;f=b<<14|f&16383;if(!(b&128)){n=3;m=0;break}b=d[h+3>>0]|0;f=b<<21|f&2097151;if(!(b&128)){n=4;m=0;break}n=28;e=h+4|0;f=f&268435455;m=0;do{b=e;e=e+1|0;b=d[b>>0]|0;p=cw(b&127|0,0,n|0)|0;f=Sv(p|0,L()|0,f|0,m|0)|0;m=L()|0;n=n+7|0}while(n>>>0<64&((b&128|0)!=0|0!=0));n=e-h|0}while(0);c[y>>2]=h+n;g=Tv(0,0,f|0,m|0)|0;o=L()|0;o=Sv((t?f:g)|0,(t?m:o)|0,s|0,r|0)|0;g=L()|0}else{c[y>>2]=0;o=s;g=r}h=c[z>>2]|0;if(h>>>0>=x>>>0){c[z>>2]=0;f=g;e=k;h=q;n=s;m=r;break}m=a[h>>0]|0;f=m&255;do if(!(f&128)){n=1;f=m&255;m=0}else{b=d[h+1>>0]|0;f=b<<7|f&127;if(!(b&128)){n=2;m=0;break}b=d[h+2>>0]|0;f=b<<14|f&16383;if(!(b&128)){n=3;m=0;break}b=d[h+3>>0]|0;f=b<<21|f&2097151;if(!(b&128)){n=4;m=0;break}n=28;e=h+4|0;f=f&268435455;m=0;do{b=e;e=e+1|0;b=d[b>>0]|0;p=cw(b&127|0,0,n|0)|0;f=Sv(p|0,L()|0,f|0,m|0)|0;m=L()|0;n=n+7|0}while(n>>>0<64&((b&128|0)!=0|0!=0));n=e-h|0}while(0);c[z>>2]=h+n;h=Tv(0,0,f|0,m|0)|0;e=L()|0;e=Sv((t?f:h)|0,(t?m:e)|0,k|0,q|0)|0;f=g;h=L()|0;n=s;m=r}while(0);b=(c[y>>2]|0)!=0;p=(c[z>>2]|0)!=0;if(!(b|p)){B=104;break a}else{g=1;s=o;r=f;k=e;q=h}}if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{z=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}c[A>>2]=0;l=0;k=0}else B=104;while(0);if((B|0)==104){k=c[A>>2]|0;f=k;B=f;a[B>>0]=0;a[B+1>>0]=0;a[B+2>>0]=0;a[B+3>>0]=0;f=f+4|0;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=0;f=0}c[i>>2]=l;c[j>>2]=k-l;B=f;Ra=C;return B|0}function nr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=c[f>>2]|0;p=c[e>>2]|0;h=c[b>>2]|0;a:while(1){r=h;q=p;n=a[q>>0]|0;switch(n<<24>>24){case 0:{if(!(a[g>>0]|0)){i=123;break a}else i=2147483647;break}case 1:{j=a[q+1>>0]|0;i=j&255;if(i&128){y=d[q+2>>0]|0;i=y<<7|j&127;if(y&128){y=d[q+3>>0]|0;i=y<<14|i&16383;if(y&128){y=d[q+4>>0]|0;i=y<<21|i&2097151;if(y&128)i=(a[q+5>>0]&7)<<28|i&268435455}}}if(!i){g=267;i=124;break a}break}default:i=0}o=g;l=a[o>>0]|0;switch(l<<24>>24){case 1:{k=a[o+1>>0]|0;j=k&255;if(j&128){y=d[o+2>>0]|0;j=y<<7|k&127;if(y&128){y=d[o+3>>0]|0;j=y<<14|j&16383;if(y&128){y=d[o+4>>0]|0;j=y<<21|j&2097151;if(y&128)j=(a[o+5>>0]&7)<<28|j&268435455}}}if(!j){g=267;i=124;break a}else m=j;break}case 0:{m=2147483647;break}default:m=0}do if((i|0)!=(m|0))if((i|0)<(m|0)){if(!i){h=0;l=r;i=n}else{l=r+1|0;k=l;m=i;j=((i|0)<0)<<31>>31;while(1){h=m&255;i=k+1|0;a[k>>0]=h|-128;m=bw(m|0,j|0,7)|0;j=L()|0;if((m|0)==0&(j|0)==0)break;else k=i}a[k>>0]=h&127;i=i-l+1|0;a[r>>0]=1;h=i;l=r+i|0;i=a[q+i>>0]|0}j=q+h|0;k=j;i=i<<24>>24;if(!(i&254))h=k;else{h=j;do{h=h+1|0;y=i;i=a[h>>0]|0}while((i&254|y&128|0)!=0)}y=h-k|0;ew(l|0,j|0,y|0)|0;i=h;h=l+y|0;break}else{if(!m){g=0;k=r;h=l}else{k=r+1|0;j=k;l=m;i=((m|0)<0)<<31>>31;while(1){g=l&255;h=j+1|0;a[j>>0]=g|-128;l=bw(l|0,i|0,7)|0;i=L()|0;if((l|0)==0&(i|0)==0)break;else j=h}a[j>>0]=g&127;h=h-k+1|0;a[r>>0]=1;g=h;k=r+h|0;h=a[o+h>>0]|0}i=o+g|0;j=i;h=h<<24>>24;if(!(h&254))g=j;else{g=i;do{g=g+1|0;y=h;h=a[g>>0]|0}while((h&254|y&128|0)!=0)}h=g-j|0;ew(k|0,i|0,h|0)|0;i=p;h=k+h|0;break}else{if(!i){g=0;i=n}else{k=r+1|0;j=k;l=i;i=((i|0)<0)<<31>>31;while(1){g=l&255;h=j+1|0;a[j>>0]=g|-128;l=bw(l|0,i|0,7)|0;i=L()|0;if((l|0)==0&(i|0)==0)break;else j=h}a[j>>0]=g&127;i=h-k+1|0;a[r>>0]=1;g=i;h=r+i|0;i=a[q+i>>0]|0}m=q+g|0;l=m;q=o+g|0;p=q;g=i&255;do if(!(g&128)){j=1;o=i&255;n=0}else{y=d[m+1>>0]|0;g=y<<7|g&127;if(!(y&128)){j=2;o=g;n=0;break}y=d[m+2>>0]|0;g=y<<14|g&16383;if(!(y&128)){j=3;o=g;n=0;break}y=d[m+3>>0]|0;g=y<<21|g&2097151;if(!(y&128)){j=4;o=g;n=0;break}i=28;j=m+4|0;g=g&268435455;k=0;do{y=j;j=j+1|0;y=d[y>>0]|0;x=cw(y&127|0,0,i|0)|0;g=Sv(x|0,L()|0,g|0,k|0)|0;k=L()|0;i=i+7|0}while(i>>>0<64&((y&128|0)!=0|0!=0));j=j-l|0;o=g;n=k}while(0);i=m+j|0;j=a[q>>0]|0;g=j&255;do if(!(g&128)){k=1;j=j&255;l=0}else{y=d[q+1>>0]|0;g=y<<7|g&127;if(!(y&128)){k=2;j=g;l=0;break}y=d[q+2>>0]|0;g=y<<14|g&16383;if(!(y&128)){k=3;j=g;l=0;break}y=d[q+3>>0]|0;g=y<<21|g&2097151;if(!(y&128)){k=4;j=g;l=0;break}j=28;k=q+4|0;g=g&268435455;l=0;do{y=k;k=k+1|0;y=d[y>>0]|0;x=cw(y&127|0,0,j|0)|0;g=Sv(x|0,L()|0,g|0,l|0)|0;l=L()|0;j=j+7|0}while(j>>>0<64&((y&128|0)!=0|0!=0));k=k-p|0;j=g}while(0);g=q+k|0;y=n;x=o;t=j;u=0;v=0;while(1){q=(y|0)<(l|0)|(y|0)==(l|0)&x>>>0>>0;r=q?x:t;s=q?y:l;p=h;m=Tv(r|0,s|0,u|0,v|0)|0;j=p;o=L()|0;while(1){k=m&255;n=j+1|0;a[j>>0]=k|-128;m=bw(m|0,o|0,7)|0;o=L()|0;if((m|0)==0&(o|0)==0)break;else j=n}a[j>>0]=k&127;w=p+(n-h)|0;h=w;u=Sv(r|0,s|0,-2,-1)|0;v=L()|0;do if((x|0)==(t|0)&(y|0)==(l|0)){n=i;k=a[n>>0]|0;if((k&255)>1){j=k&255;do if(!(j&128)){l=1;j=k&255;i=0}else{t=d[n+1>>0]|0;j=t<<7|j&127;if(!(t&128)){l=2;i=0;break}t=d[n+2>>0]|0;j=t<<14|j&16383;if(!(t&128)){l=3;i=0;break}t=d[n+3>>0]|0;j=t<<21|j&2097151;if(!(t&128)){l=4;i=0;break}k=28;l=n+4|0;j=j&268435455;m=0;do{t=l;l=l+1|0;t=d[t>>0]|0;s=cw(t&127|0,0,k|0)|0;j=Sv(s|0,L()|0,j|0,m|0)|0;m=L()|0;k=k+7|0}while(k>>>0<64&((t&128|0)!=0|0!=0));l=l-i|0;i=m}while(0);m=Sv(x|0,y|0,-2,-1)|0;m=Sv(m|0,L()|0,j|0,i|0)|0;i=n+l|0;p=L()|0}else{m=2147483647;p=0}o=g;k=a[o>>0]|0;if((k&255)>1){j=k&255;do if(!(j&128)){l=1;j=k&255;g=0}else{t=d[o+1>>0]|0;j=t<<7|j&127;if(!(t&128)){l=2;g=0;break}t=d[o+2>>0]|0;j=t<<14|j&16383;if(!(t&128)){l=3;g=0;break}t=d[o+3>>0]|0;j=t<<21|j&2097151;if(!(t&128)){l=4;g=0;break}k=28;l=o+4|0;j=j&268435455;n=0;do{t=l;l=l+1|0;t=d[t>>0]|0;s=cw(t&127|0,0,k|0)|0;j=Sv(s|0,L()|0,j|0,n|0)|0;n=L()|0;k=k+7|0}while(k>>>0<64&((t&128|0)!=0|0!=0));l=l-g|0;g=n}while(0);k=Sv(x|0,y|0,-2,-1)|0;k=Sv(k|0,L()|0,j|0,g|0)|0;g=o+l|0;j=p;l=L()|0}else{j=p;k=2147483647;l=0}}else if(q){o=i;k=a[o>>0]|0;if((k&255)<=1){m=2147483647;j=0;k=t;break}j=k&255;do if(!(j&128)){m=1;j=k&255;i=0}else{s=d[o+1>>0]|0;j=s<<7|j&127;if(!(s&128)){m=2;i=0;break}s=d[o+2>>0]|0;j=s<<14|j&16383;if(!(s&128)){m=3;i=0;break}s=d[o+3>>0]|0;j=s<<21|j&2097151;if(!(s&128)){m=4;i=0;break}k=28;m=o+4|0;j=j&268435455;n=0;do{s=m;m=m+1|0;s=d[s>>0]|0;r=cw(s&127|0,0,k|0)|0;j=Sv(r|0,L()|0,j|0,n|0)|0;n=L()|0;k=k+7|0}while(k>>>0<64&((s&128|0)!=0|0!=0));m=m-i|0;i=n}while(0);k=Sv(x|0,y|0,-2,-1)|0;j=Sv(k|0,L()|0,j|0,i|0)|0;i=o+m|0;m=j;j=L()|0;k=t;break}else{o=g;k=a[o>>0]|0;if((k&255)<=1){m=x;j=y;k=2147483647;l=0;break}j=k&255;do if(!(j&128)){m=1;j=k&255;g=0}else{s=d[o+1>>0]|0;j=s<<7|j&127;if(!(s&128)){m=2;g=0;break}s=d[o+2>>0]|0;j=s<<14|j&16383;if(!(s&128)){m=3;g=0;break}s=d[o+3>>0]|0;j=s<<21|j&2097151;if(!(s&128)){m=4;g=0;break}k=28;m=o+4|0;j=j&268435455;n=0;do{s=m;m=m+1|0;s=d[s>>0]|0;r=cw(s&127|0,0,k|0)|0;j=Sv(r|0,L()|0,j|0,n|0)|0;n=L()|0;k=k+7|0}while(k>>>0<64&((s&128|0)!=0|0!=0));m=m-g|0;g=n}while(0);k=Sv(t|0,l|0,-2,-1)|0;k=Sv(k|0,L()|0,j|0,g|0)|0;g=o+m|0;m=x;j=y;l=L()|0;break}while(0);if(!((m|0)!=2147483647|(j|0)!=0|((k|0)!=2147483647|(l|0)!=0))){h=w;break}else{y=j;x=m;t=k}}}while(0);p=i}if((i|0)==123){y=h;a[y>>0]=0;c[b>>2]=y+1;c[e>>2]=p+1;c[f>>2]=g+1;f=0;return f|0}else if((i|0)==124)return g|0;return 0}function or(b,e,f,g,h,i){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;j=c[b>>2]|0;k=c[h>>2]|0;n=c[i>>2]|0;m=k;if((a[m>>0]|0)==1){o=m+1|0;l=a[o>>0]|0;k=l&255;if(k&128){D=d[m+2>>0]|0;k=D<<7|l&127;if(D&128){D=d[m+3>>0]|0;k=D<<14|k&16383;if(D&128){D=d[m+4>>0]|0;k=D<<21|k&2097151;if(!(D&128))l=4;else{k=(a[m+5>>0]&7)<<28|k&268435455;l=5}}else l=3}else l=2}else l=1;p=k;k=o+l|0}else p=0;o=n;if((a[o>>0]|0)==1){n=o+1|0;m=a[n>>0]|0;l=m&255;if(l&128){D=d[o+2>>0]|0;l=D<<7|m&127;if(D&128){D=d[o+3>>0]|0;l=D<<14|l&16383;if(D&128){D=d[o+4>>0]|0;l=D<<21|l&2097151;if(!(D&128))m=4;else{l=(a[o+5>>0]&7)<<28|l&268435455;m=5}}else m=3}else m=2}else m=1;n=n+m|0}else l=0;C=((e|0)<0)<<31>>31;D=(f|0)==0;B=(f|0)!=0;A=(g|0)!=0;m=p;a:while(1){b:while(1){while(1){if((m|0)==(l|0))break b;if((m|0)<(l|0))break;l=a[n>>0]|0;o=l<<24>>24;if(o&254)do{n=n+1|0;l=a[n>>0]|0;z=o;o=l<<24>>24}while((o&254|z&128|0)!=0);if(!(l<<24>>24)){l=123;break a}p=n+1|0;o=a[p>>0]|0;l=o&255;if(l&128){z=d[n+2>>0]|0;l=z<<7|o&127;if(z&128){z=d[n+3>>0]|0;l=z<<14|l&16383;if(z&128){z=d[n+4>>0]|0;l=z<<21|l&2097151;if(!(z&128))n=4;else{l=(a[n+5>>0]&7)<<28|l&268435455;n=5}}else n=3}else n=2}else n=1;n=p+n|0}m=a[k>>0]|0;o=m<<24>>24;if(o&254)do{k=k+1|0;m=a[k>>0]|0;z=o;o=m<<24>>24}while((o&254|z&128|0)!=0);if(!(m<<24>>24)){l=124;break a}p=k+1|0;o=a[p>>0]|0;m=o&255;if(m&128){z=d[k+2>>0]|0;m=z<<7|o&127;if(z&128){z=d[k+3>>0]|0;m=z<<14|m&16383;if(z&128){z=d[k+4>>0]|0;m=z<<21|m&2097151;if(!(z&128))k=4;else{m=(a[k+5>>0]&7)<<28|m&268435455;k=5}}else k=3}else k=2}else k=1;k=p+k|0}t=j;if(m){a[t>>0]=1;o=t+1|0;p=m;m=((m|0)<0)<<31>>31;while(1){l=p&255;j=o+1|0;a[o>>0]=l|-128;p=bw(p|0,m|0,7)|0;m=L()|0;if((p|0)==0&(m|0)==0)break;else o=j}a[o>>0]=l&127}f=k;m=a[f>>0]|0;l=m&255;do if(!(l&128)){k=1;l=m&255;p=0}else{z=d[f+1>>0]|0;l=z<<7|l&127;if(!(z&128)){k=2;p=0;break}z=d[f+2>>0]|0;l=z<<14|l&16383;if(!(z&128)){k=3;p=0;break}z=d[f+3>>0]|0;l=z<<21|l&2097151;if(!(z&128)){k=4;p=0;break}m=28;o=f+4|0;l=l&268435455;p=0;do{z=o;o=o+1|0;z=d[z>>0]|0;y=cw(z&127|0,0,m|0)|0;l=Sv(y|0,L()|0,l|0,p|0)|0;p=L()|0;m=m+7|0}while(m>>>0<64&((z&128|0)!=0|0!=0));k=o-k|0}while(0);k=f+k|0;r=Sv(l|0,p|0,-2,-1)|0;s=L()|0;q=n;o=a[q>>0]|0;m=o&255;do if(!(m&128)){n=1;g=0;m=o&255}else{z=d[q+1>>0]|0;m=z<<7|m&127;if(!(z&128)){n=2;g=0;break}z=d[q+2>>0]|0;m=z<<14|m&16383;if(!(z&128)){n=3;g=0;break}z=d[q+3>>0]|0;m=z<<21|m&2097151;if(!(z&128)){n=4;g=0;break}o=28;f=q+4|0;m=m&268435455;g=0;do{z=f;f=f+1|0;z=d[z>>0]|0;y=cw(z&127|0,0,o|0)|0;m=Sv(y|0,L()|0,m|0,g|0)|0;g=L()|0;o=o+7|0}while(o>>>0<64&((z&128|0)!=0|0!=0));n=f-n|0}while(0);n=q+n|0;if((p|0)<0|(p|0)==0&l>>>0<2|((g|0)<0|(g|0)==0&m>>>0<2)){l=120;break}l=Sv(m|0,g|0,-2,-1)|0;f=t;z=r;o=0;p=0;m=L()|0;c:while(1){w=k;u=Sv(z|0,s|0,e|0,C|0)|0;v=L()|0;x=l;y=m;l=p;while(1){if(!((x|0)==(u|0)&(y|0)==(v|0))?(y|0)>(v|0)|(y|0)==(v|0)&x>>>0>u>>>0|(A|((y|0)<(s|0)|(y|0)==(s|0)&x>>>0<=z>>>0)):0){t=f;q=o;r=l}else{q=D?x:z;r=D?y:s;g=j;o=Tv(2,0,o|0,l|0)|0;o=Sv(o|0,L()|0,q|0,r|0)|0;l=g;p=L()|0;while(1){m=o&255;f=l+1|0;a[l>>0]=m|-128;o=bw(o|0,p|0,7)|0;p=L()|0;if((o|0)==0&(p|0)==0)break;else l=f}a[l>>0]=m&127;t=0;j=g+(f-j)|0}if(((y|0)>(s|0)|(y|0)==(s|0)&x>>>0>z>>>0)&(B|((y|0)>(v|0)|(y|0)==(v|0)&x>>>0>u>>>0)))break;g=n;m=a[g>>0]|0;if((m&255)<2)break c;l=m&255;do if(!(l&128)){n=1;l=m&255;m=0}else{f=d[g+1>>0]|0;l=f<<7|l&127;if(!(f&128)){n=2;m=0;break}f=d[g+2>>0]|0;l=f<<14|l&16383;if(!(f&128)){n=3;m=0;break}f=d[g+3>>0]|0;l=f<<21|l&2097151;if(!(f&128)){n=4;m=0;break}o=28;p=g+4|0;l=l&268435455;m=0;do{f=p;p=p+1|0;f=d[f>>0]|0;E=cw(f&127|0,0,o|0)|0;l=Sv(E|0,L()|0,l|0,m|0)|0;m=L()|0;o=o+7|0}while(o>>>0<64&((f&128|0)!=0|0!=0));n=p-n|0}while(0);o=Sv(x|0,y|0,-2,-1)|0;o=Sv(o|0,L()|0,l|0,m|0)|0;f=t;n=g+n|0;x=o;y=L()|0;o=q;l=r}m=a[k>>0]|0;if((m&255)<2)break;l=m&255;do if(!(l&128)){o=1;l=m&255;m=0}else{E=d[k+1>>0]|0;l=E<<7|l&127;if(!(E&128)){o=2;m=0;break}E=d[k+2>>0]|0;l=E<<14|l&16383;if(!(E&128)){o=3;m=0;break}E=d[k+3>>0]|0;l=E<<21|l&2097151;if(!(E&128)){o=4;m=0;break}o=28;p=k+4|0;l=l&268435455;m=0;do{E=p;p=p+1|0;E=d[E>>0]|0;v=cw(E&127|0,0,o|0)|0;l=Sv(v|0,L()|0,l|0,m|0)|0;m=L()|0;o=o+7|0}while(o>>>0<64&((E&128|0)!=0|0!=0));o=p-w|0}while(0);p=Sv(z|0,s|0,-2,-1)|0;p=Sv(p|0,L()|0,l|0,m|0)|0;f=t;k=k+o|0;z=p;s=L()|0;o=q;p=r;l=x;m=y}j=(t|0)==0?j:t;l=a[k>>0]|0;m=l<<24>>24;if(!(m&254))o=l;else{do{k=k+1|0;l=a[k>>0]|0;E=m;m=l<<24>>24}while((m&254|E&128|0)!=0);o=l}l=a[n>>0]|0;m=l<<24>>24;if(m&254)do{n=n+1|0;l=a[n>>0]|0;E=m;m=l<<24>>24}while((m&254|E&128|0)!=0);if(!(o<<24>>24)){l=122;break}if(!(l<<24>>24)){l=121;break}o=k+1|0;l=a[o>>0]|0;m=l&255;if(m&128){E=d[k+2>>0]|0;l=E<<7|l&127;if(E&128){E=d[k+3>>0]|0;l=E<<14|l&16383;if(E&128){E=d[k+4>>0]|0;l=E<<21|l&2097151;if(!(E&128)){m=l;k=4}else{m=(a[k+5>>0]&7)<<28|l&268435455;k=5}}else{m=l;k=3}}else{m=l;k=2}}else k=1;k=o+k|0;p=n+1|0;o=a[p>>0]|0;l=o&255;if(l&128){E=d[n+2>>0]|0;l=E<<7|o&127;if(E&128){E=d[n+3>>0]|0;l=E<<14|l&16383;if(E&128){E=d[n+4>>0]|0;l=E<<21|l&2097151;if(!(E&128))n=4;else{l=(a[n+5>>0]&7)<<28|l&268435455;n=5}}else n=3}else n=2}else n=1;n=p+n|0}l=0;while(1){m=a[n>>0]|0;n=n+1|0;if(!(l<<24>>24|m))break;else l=m&128}l=0;while(1){m=a[k>>0]|0;k=k+1|0;if(!(l<<24>>24|m))break;else l=m&128}c[h>>2]=k;c[i>>2]=n;if((c[b>>2]|0)==(j|0)){E=0;return E|0}a[j>>0]=0;c[b>>2]=j+1;E=1;return E|0}function pr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=Ra;Ra=Ra+16|0;z=C+4|0;A=C;B=c[b>>2]|0;a:do if(((e|0)!=0?(a[b+52>>0]|0)==(a[B+235>>0]|0):0)?((c[f+64>>2]|0)+-1|0)>>>0<4:0){v=f+64|0;h=c[v>>2]|0;if((h|0)>0){e=0;g=0;do{if(c[f+72+(e*24|0)+12>>2]|0){y=v;break a}b=c[f+72+(e*24|0)+20>>2]|0;if(b){if(!(c[b+36>>2]|0)){y=v;break a}}else b=0;g=(b|0)==0?g:1;e=e+1|0}while((e|0)<(h|0));if(g){u=c[f+68>>2]|0;u=(u|0)<(c[B+24>>2]|0)?u:-1;t=B+235|0;if((h|0)<=0){B=0;z=1;A=f+40|0;c[A>>2]=z;Ra=C;return B|0}q=0;b:while(1){r=c[f+72+(q*24|0)+20>>2]|0;if(r|0){e=c[f+72+(q*24|0)>>2]|0;g=c[f+72+(q*24|0)+4>>2]|0;h=c[r+4>>2]|0;s=(a[t>>0]|0)==0?157:158;b=eq(B,r,e,g)|0;if(b|0){e=1;k=74;break}do if((h|0)>0){j=c[r>>2]|0;i=0;while(1){b=c[j+(i<<2)>>2]|0;if(!(c[b+40>>2]|0)){k=23;break}o=c[b+60>>2]|0;p=Lu(c[b+64>>2]|0,e,(o|0)>(g|0)?g:o)|0;if(((p|0)==0?o-g|0:p)|0){k=23;break}x=i+1|0;if((x|0)<(h|0))i=x;else{k=22;break}}if((k|0)==22){w=r+8|0;c[w>>2]=x}else if((k|0)==23){b=r+8|0;c[b>>2]=i;if(!i)break;else w=b}p=0;k=j;while(1){o=c[k+(p<<2)>>2]|0;if((a[t>>0]|0)!=0?(c[o+56>>2]|0)!=0:0){a[z>>0]=0;m=o+88|0;n=m;c[n>>2]=0;c[n+4>>2]=0;n=o+84|0;c[n>>2]=0;kq(0,c[o+72>>2]|0,c[o+76>>2]|0,o+80|0,m,n,z)}else{l=o+72|0;j=o+40|0;m=o+52|0;b=c[m>>2]|0;c:do if(b|0){k=(c[l>>2]|0)+10|0;n=o+48|0;i=o+44|0;e=c[n>>2]|0;h=b;while(1){b=c[j>>2]|0;if((k-b|0)<=(e|0))break c;g=(c[i>>2]|0)-e|0;g=(g|0)<4096?g:4096;b=jd(h,b+e|0,g,e,81)|0;if(b|0){e=1;k=74;break b}b=(c[n>>2]|0)+g|0;c[n>>2]=b;b=(c[j>>2]|0)+b|0;e=b+20|0;do{a[b>>0]=0;b=b+1|0}while((b|0)<(e|0));e=c[n>>2]|0;h=c[m>>2]|0;if((e|0)==(c[i>>2]|0))break;if(!h)break c}d:do if(h|0){b=c[h+20>>2]|0;gc(c[h+16>>2]|0)|0;do if(b|0){if(c[b+480>>2]|0){Xd(b,h);break d}e=h;if((c[b+304>>2]|0)>>>0>e>>>0)break;if((c[b+308>>2]|0)>>>0<=e>>>0)break;k=b+300|0;c[h>>2]=c[k>>2];c[k>>2]=h;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{k=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[m>>2]=0;c[n>>2]=0}while(0);j=c[l>>2]|0;i=o+88|0;b=a[j>>0]|0;e=b&255;do if(!(e&128)){n=i;c[n>>2]=b&255;c[n+4>>2]=0;b=1}else{n=d[j+1>>0]|0;b=n<<7|e&127;if(!(n&128)){n=i;c[n>>2]=b;c[n+4>>2]=0;b=2;break}n=d[j+2>>0]|0;b=n<<14|b&16383;if(!(n&128)){n=i;c[n>>2]=b;c[n+4>>2]=0;b=3;break}n=d[j+3>>0]|0;b=n<<21|b&2097151;if(!(n&128)){n=i;c[n>>2]=b;c[n+4>>2]=0;b=4;break}g=28;h=j+4|0;b=b&268435455;e=0;do{n=h;h=h+1|0;n=d[n>>0]|0;m=cw(n&127|0,0,g|0)|0;b=Sv(m|0,L()|0,b|0,e|0)|0;e=L()|0;g=g+7|0}while(g>>>0<64&((n&128|0)!=0|0!=0));n=i;c[n>>2]=b;c[n+4>>2]=e;b=h-j|0}while(0);c[o+80>>2]=j+b}b=p+1|0;k=c[r>>2]|0;if((b|0)>=(c[w>>2]|0))break;else p=b}if(p|0){g=p;do{h=g;g=g+-1|0;e:do if((h|0)<=(p|0)){b=g;j=c[k+(g<<2)>>2]|0;do{e=b;b=b+1|0;i=k+(b<<2)|0;if((Xa[s&255](j,c[i>>2]|0)|0)<0)break e;o=k+(e<<2)|0;n=c[i>>2]|0;j=c[o>>2]|0;c[i>>2]=j;c[o>>2]=n}while((b|0)<(p|0))}while(0)}while((h|0)>1)}}else c[r+8>>2]=0;while(0);c[r+24>>2]=u}q=q+1|0;if((q|0)>=(c[v>>2]|0)){b=0;e=1;k=74;break}}if((k|0)==74){B=f+40|0;c[B>>2]=e;Ra=C;return b|0}}else y=v}else y=v}else k=4;while(0);if((k|0)==4)y=f+64|0;g=f+68|0;e=0;while(1){if((e|0)>=(c[y>>2]|0)){b=0;e=0;k=74;break}if(!(c[f+72+(e*24|0)+20>>2]|0))b=0;else{c[z>>2]=0;c[A>>2]=0;b=jr(B,f+72+(e*24|0)|0,c[g>>2]|0,z,A)|0;if(!b)b=kr(B,f,e,c[A>>2]|0,c[z>>2]|0)|0}if(!b)e=e+1|0;else{e=0;k=74;break}}if((k|0)==74){B=f+40|0;c[B>>2]=e;Ra=C;return b|0}return 0}function qr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=Ra;Ra=Ra+112|0;B=F+108|0;x=F;y=F+104|0;z=F+100|0;A=F+96|0;if(c[e>>2]|0){Ra=F;return}h=b+52|0;q=a[h>>0]|0;a[d+33>>0]=1;switch(c[d>>2]|0){case 3:case 1:{n=c[d+12>>2]|0;m=c[d+16>>2]|0;if(a[n+34>>0]|0){qr(b,m,e);D=m+24|0;E=c[D+4>>2]|0;e=d+24|0;c[e>>2]=c[D>>2];c[e+4>>2]=E;a[d+32>>0]=a[m+32>>0]|0;Ra=F;return}D=(a[m+34>>0]|0)==0;qr(b,n,e);if(!D){D=n+24|0;E=c[D+4>>2]|0;e=d+24|0;c[e>>2]=c[D>>2];c[e+4>>2]=E;a[d+32>>0]=a[n+32>>0]|0;Ra=F;return}qr(b,m,e);o=n+32|0;a:do if(!(a[o>>0]|0)){l=m+32|0;h=q<<24>>24==0;g=h?1:-1;h=h?0:-1;f=n+24|0;i=m+24|0;while(1){j=a[l>>0]|0;if(j<<24>>24)break;if(c[e>>2]|0)break;k=f;D=i;D=Tv(c[k>>2]|0,c[k+4>>2]|0,c[D>>2]|0,c[D+4>>2]|0)|0;D=Yv(D|0,L()|0,g|0,h|0)|0;k=L()|0;if((D|0)==0&(k|0)==0)break;if((k|0)<0)qr(b,n,e);else qr(b,m,e);if(a[o>>0]|0){E=17;break a}}C=f;D=c[C+4>>2]|0;f=d+24|0;c[f>>2]=c[C>>2];c[f+4>>2]=D;f=j<<24>>24!=0&1}else{f=n+24|0;E=17}while(0);if((E|0)==17){D=f;E=c[D+4>>2]|0;f=d+24|0;c[f>>2]=c[D>>2];c[f+4>>2]=E;f=1}a[d+32>>0]=f;if(f<<24>>24==0|(c[d>>2]|0)!=1){Ra=F;return}f=c[m+20>>2]|0;b:do if(c[f>>2]|0?(r=m+32|0,(c[e>>2]|0)==0):0){g=f+28|0;f=f+32|0;do{if(a[r>>0]|0)break b;gw(c[g>>2]|0,0,c[f>>2]|0)|0;qr(b,m,e)}while(!(c[e>>2]|0))}while(0);f=c[n+20>>2]|0;if(!f){Ra=F;return}if(!(c[f>>2]|0)){Ra=F;return}if(c[e>>2]|0){Ra=F;return}g=f+28|0;f=f+32|0;while(1){if(a[o>>0]|0){E=120;break}gw(c[g>>2]|0,0,c[f>>2]|0)|0;qr(b,n,e);if(c[e>>2]|0){E=120;break}}if((E|0)==120){Ra=F;return}break}case 4:{h=c[d+12>>2]|0;i=c[d+16>>2]|0;m=q<<24>>24==0;l=m?1:-1;m=m?0:-1;k=h+24|0;g=k;j=i+24|0;f=j;f=Tv(c[g>>2]|0,c[g+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;f=Yv(f|0,L()|0,l|0,m|0)|0;g=L()|0;n=i+32|0;o=h+32|0;do if((a[n>>0]|0)==0?(p=a[o>>0]|0,!((g|0)<0&p<<24>>24==0)):0)if((g|0)>0|(g|0)==0&f>>>0>0|p<<24>>24!=0){qr(b,i,e);break}else{qr(b,h,e);qr(b,i,e);break}else E=33;while(0);if((E|0)==33)qr(b,h,e);if(!(a[o>>0]|0))f=0;else f=(a[n>>0]|0)!=0&1;a[d+32>>0]=f;i=j;h=c[i>>2]|0;i=c[i+4>>2]|0;g=k;f=c[g>>2]|0;g=c[g+4>>2]|0;if((a[n>>0]|0)==0?(e=Tv(f|0,g|0,h|0,i|0)|0,Yv(e|0,L()|0,l|0,m|0)|0,e=L()|0,!((a[o>>0]|0)==0&(e|0)<0)):0){d=d+24|0;c[d>>2]=h;c[d+4>>2]=i;Ra=F;return}d=d+24|0;c[d>>2]=f;c[d+4>>2]=g;Ra=F;return}case 2:{g=c[d+12>>2]|0;k=c[d+16>>2]|0;if(!(a[k+33>>0]|0))qr(b,k,e);qr(b,g,e);l=g+32|0;f=a[l>>0]|0;if(!(f<<24>>24)){j=k+32|0;i=q<<24>>24==0;h=i?1:-1;i=i?0:-1;g=g+24|0;if(!(c[e>>2]|0)){f=k+24|0;do{if(a[j>>0]|0)break;D=g;E=f;E=Tv(c[D>>2]|0,c[D+4>>2]|0,c[E>>2]|0,c[E+4>>2]|0)|0;E=Yv(E|0,L()|0,h|0,i|0)|0;D=L()|0;if(!((D|0)>0|(D|0)==0&E>>>0>0))break;qr(b,k,e)}while(!(c[e>>2]|0));f=a[l>>0]|0}else f=0}else g=g+24|0;D=g;E=c[D+4>>2]|0;e=d+24|0;c[e>>2]=c[D>>2];c[e+4>>2]=E;a[d+32>>0]=f;Ra=F;return}default:{D=c[d+20>>2]|0;u=D+24|0;w=D+28|0;do if(c[u>>2]|0?(f=c[w>>2]|0,f|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{C=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[w>>2]=0;v=D+32|0;c[v>>2]=0;c[u>>2]=0;C=d+32|0;t=c[b>>2]|0;do if(!(c[D+40>>2]|0)){E=a[t+235>>0]|0;f=E&255;if((a[h>>0]|0)!=E<<24>>24?(g=c[D+4>>2]|0,g|0):0){E=D+8|0;kq(f,c[D>>2]|0,g,E,D+16|0,v,C);c[w>>2]=c[E>>2];f=0;break}sr(t,D,C);f=0}else{a[B>>0]=0;s=D+64|0;do if((c[s>>2]|0)==1){f=tr(t,c[D+92>>2]|0,D+16|0,w,v)|0;if(!(c[w>>2]|0)){a[B>>0]=1;g=1;E=113}else{g=0;E=113}}else{h=a[h>>0]|0;f=x;g=f+96|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));r=D+44|0;b=D+16|0;q=h<<24>>24==0;p=q?1:-1;q=q?0:-1;f=0;while(1){c:do if(!f){g=c[s>>2]|0;if((g|0)>0){k=0;l=0;i=0;j=0;while(1){g=x+(l*24|0)|0;do if((c[r>>2]|0)!=(l|0)){f=c[D+72+(l*24|0)+20>>2]|0;if(!f){c[g>>2]=1;f=0;break}E=x+(l*24|0)+16|0;f=tr(t,f,x+(l*24|0)+8|0,E,x+(l*24|0)+20|0)|0;if(!(c[E>>2]|0))a[B>>0]=1}else{sr(t,D,B);c[x+(l*24|0)+16>>2]=c[w>>2];c[x+(l*24|0)+20>>2]=c[v>>2];o=b;E=c[o+4>>2]|0;f=x+(l*24|0)+8|0;c[f>>2]=c[o>>2];c[f+4>>2]=E;f=0}while(0);do if(!(c[g>>2]|0)){h=x+(l*24|0)+8|0;g=c[h>>2]|0;h=c[h+4>>2]|0;if(k|0?(E=Tv(i|0,j|0,g|0,h|0)|0,Yv(E|0,L()|0,p|0,q|0)|0,(L()|0)>=0):0)break;k=1;i=g;j=h}while(0);if(f|0)break;l=l+1|0;g=a[B>>0]|0;h=c[s>>2]|0;if(!(g<<24>>24==0&(l|0)<(h|0))){f=0;E=81;break c}}g=a[B>>0]|0;E=80}else{f=0;i=0;j=0}}else{g=0;i=0;j=0;E=80}while(0);if((E|0)==80){h=c[s>>2]|0;E=81}if((E|0)==81){E=0;if((h|0)>0){m=0;k=g;o=g;l=g;while(1){if(k<<24>>24==0&(f|0)==0){g=o;while(1){f=x+(m*24|0)|0;if(c[f>>2]|0){h=m;f=0;m=l;k=0;break}k=x+(m*24|0)+8|0;o=k;o=Tv(c[o>>2]|0,c[o+4>>2]|0,i|0,j|0)|0;Yv(o|0,L()|0,p|0,q|0)|0;if((L()|0)>=0){h=m;f=0;m=l;k=0;break}do if((c[r>>2]|0)==(m|0)){sr(t,D,B);c[x+(m*24|0)+16>>2]=c[w>>2];c[x+(m*24|0)+20>>2]=c[v>>2];l=b;f=c[l+4>>2]|0;g=k;c[g>>2]=c[l>>2];c[g+4>>2]=f;g=a[B>>0]|0;f=0;l=g}else{h=c[D+72+(m*24|0)+20>>2]|0;if(!h){c[f>>2]=1;f=0;break}o=x+(m*24|0)+16|0;f=tr(t,h,k,o,x+(m*24|0)+20|0)|0;if(c[o>>2]|0)break;a[B>>0]=1;l=1;g=1}while(0);o=k;k=c[o>>2]|0;o=c[o+4>>2]|0;n=Tv(k|0,o|0,i|0,j|0)|0;n=Yv(n|0,L()|0,p|0,q|0)|0;h=L()|0;n=(h|0)>0|(h|0)==0&n>>>0>0;h=n?0:m;i=n?k:i;j=n?o:j;if(l<<24>>24==0&(f|0)==0){m=h;l=0}else{m=l;k=l;break}}n=h;h=c[s>>2]|0;l=m}else{n=m;g=o}m=n+1|0;if((m|0)>=(h|0))break;else o=g}}if(!(g<<24>>24))g=h;else break}g=c[x+((g+-1|0)*24|0)+20>>2]|0;n=nb(g+8|0)|0;if(!n){E=112;break}ew(n|0,c[x+(((c[s>>2]|0)+-1|0)*24|0)+16>>2]|0,g+1|0)|0;g=n+g|0;o=g;a[o>>0]=0;a[o+1>>0]=0;a[o+2>>0]=0;a[o+3>>0]=0;g=g+4|0;a[g>>0]=0;a[g+1>>0]=0;a[g+2>>0]=0;a[g+3>>0]=0;g=c[s>>2]|0;d:do if((g|0)>1){l=n;k=0;h=0;m=g+-1|0;while(1){if(!(c[x+(h*24|0)>>2]|0)){c[y>>2]=c[x+(h*24|0)+16>>2];c[z>>2]=n;c[A>>2]=n;o=(or(A,m-h|0,0,1,y,z)|0)==0;if(o)break;k=(c[A>>2]|0)-l|0;g=c[s>>2]|0}h=h+1|0;m=g+-1|0;if((m|0)<=(h|0))break d}g=c[s>>2]|0}else{k=0;h=0}while(0);if((h|0)==(g+-1|0)){E=110;break}if(!(c[7324]|0))ab[c[29344>>2]&127](n);else{o=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n)}}if((E|0)==110){g=b;c[g>>2]=i;c[g+4>>2]=j;c[w>>2]=n;c[v>>2]=k;c[u>>2]=1;g=0}else if((E|0)==112){f=7;break}E=113}while(0);if((E|0)==113)a[C>>0]=g}while(0);c[e>>2]=f;E=D+16|0;e=c[E+4>>2]|0;d=d+24|0;c[d>>2]=c[E>>2];c[d+4>>2]=e;Ra=F;return}}}function rr(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;I=Ra;Ra=Ra+32|0;y=I+24|0;F=I+20|0;z=I+16|0;A=I+12|0;B=I+8|0;C=I+4|0;H=I;g=c[f>>2]|0;c[H>>2]=g;if(g|0){f=0;H=g;H=(H|0)==0;H=f&H;H=H&1;Ra=I;return H|0}G=d+28|0;if(c[G>>2]|0?(x=ur(0,d)|0,c[H>>2]=x,(x|0)==0):0){c[F>>2]=0;a:do if(c[G>>2]|0){g=c[d>>2]|0;t=c[g+36>>2]|0;h=c[t>>2]|0;u=d+12|0;v=Oc(c[u>>2]|0,0)|0;w=L()|0;x=g+24|0;i=c[x>>2]|0;if((i|0)>0){q=g+32|0;r=d+20|0;s=h+20|0;p=h+16|0;n=0;h=i;while(1){if(!(a[(c[q>>2]|0)+n>>0]|0)){j=c[u>>2]|0;o=n+1|0;i=(j|0)==0;do if(i)g=29576;else{g=c[j+120>>2]|0;if(g|0?o>>>0<(e[j+144>>1]|0)>>>0:0){g=g+(o*40|0)|0;break}g=c[j>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576}while(0);h=b[g+8>>1]|0;if((h&514)==514?(a[g+10>>0]|0)==1:0)k=c[g+16>>2]|0;else if(!(h&1))k=Gg(g,1)|0;else k=0;if(!i){h=c[j>>2]|0;i=j+40|0;g=c[i>>2]|0;if((g|0)==3082|(a[h+81>>0]|0)!=0){og(h);g=7}else g=c[h+68>>2]&g;c[i>>2]=g}h=c[r>>2]|0;i=c[t>>2]|0;c[y>>2]=0;g=Za[c[i+12>>2]&127](t,k,-1,y)|0;do if(!g){c[c[y>>2]>>2]=t;if((c[i>>2]|0)>0?(D=Xa[c[i+24>>2]&255](c[y>>2]|0,h)|0,D|0):0){Wa[c[i+16>>2]&127](c[y>>2]|0)|0;c[y>>2]=0;g=D;h=0;E=29;break}h=c[y>>2]|0;c[F>>2]=0;m=h;do{c[z>>2]=0;c[A>>2]=0;c[B>>2]=0;c[C>>2]=0;g=$a[c[s>>2]&127](m,y,z,A,B,C)|0;c[F>>2]=g;i=c[G>>2]|0;if((g|0)==0&(i|0)!=0){g=0;do{l=c[i>>2]|0;k=c[i+4>>2]|0;do if((k|0)==(n|0)?1:(k|0)>=(c[x>>2]|0)){j=c[C>>2]|0;if(!((c[l+12>>2]|0)==0|(j|0)==0)){j=0;break}k=c[l+4>>2]|0;J=c[z>>2]|0;if((k|0)!=(J|0)?!((k|0)<(J|0)&(c[l+8>>2]|0)!=0):0){j=0;break}if(Lu(c[y>>2]|0,c[l>>2]|0,k)|0){j=0;break}wr(i+12|0,v,w,n,0,j,((j|0)<0)<<31>>31,F)|0;j=c[F>>2]|0;g=j}else j=0;while(0);i=c[i+8>>2]|0}while((j|0)==0&(i|0)!=0)}}while(!(g|0))}else{h=c[y>>2]|0;E=29}while(0);if((E|0)==29){E=0;c[F>>2]=g}if(h|0)Wa[c[p>>2]&127](h)|0;if((g|0)!=101)break a;c[F>>2]=0;g=o;h=c[x>>2]|0}else g=n+1|0;if((g|0)<(h|0))n=g;else break}}g=c[G>>2]|0;if(g){i=g;g=0;do{h=i+12|0;if(!(c[h>>2]|0))h=0;else{g=xr(h,0,0)|0;c[F>>2]=g;h=g}i=c[i+8>>2]|0}while((h|0)==0&(i|0)!=0)}else g=0}else g=0;while(0);c[H>>2]=g}j=(vr(d,c[d+16>>2]|0,H)|0)==0;g=c[G>>2]|0;if(g|0)do{h=g+12|0;i=c[h>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{J=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[h>>2]=0;g=c[g+8>>2]|0}while((g|0)!=0);J=c[H>>2]|0;c[f>>2]=J;H=j;J=(J|0)==0;J=H&J;J=J&1;Ra=I;return J|0}function sr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=c[e>>2]|0;n=k+(c[e+4>>2]|0)|0;o=e+8|0;l=c[o>>2]|0;m=(l|0)==0;l=m?k:l;k=l;if(l>>>0>=n>>>0){o=1;a[f>>0]=o;return}h=a[l>>0]|0;g=h&255;do if(!(g&128)){i=1;g=h&255;h=0}else{j=d[l+1>>0]|0;g=j<<7|g&127;if(!(j&128)){i=2;h=0;break}j=d[l+2>>0]|0;g=j<<14|g&16383;if(!(j&128)){i=3;h=0;break}j=d[l+3>>0]|0;g=j<<21|g&2097151;if(!(j&128)){i=4;h=0;break}i=28;j=l+4|0;g=g&268435455;h=0;do{p=j;j=j+1|0;p=d[p>>0]|0;q=cw(p&127|0,0,i|0)|0;g=Sv(q|0,L()|0,g|0,h|0)|0;h=L()|0;i=i+7|0}while(i>>>0<64&((p&128|0)!=0|0!=0));i=j-k|0}while(0);q=l+i|0;j=q;b=m|(a[b+235>>0]|0)==0;m=e+16|0;k=m;i=c[k>>2]|0;k=c[k+4>>2]|0;l=Tv(0,0,g|0,h|0)|0;p=L()|0;p=Sv(i|0,k|0,(b?g:l)|0,(b?h:p)|0)|0;h=L()|0;g=m;c[g>>2]=p;c[g+4>>2]=h;c[e+28>>2]=j;g=q;h=0;while(1){i=a[g>>0]|0;g=g+1|0;if(!(h<<24>>24|i))break;else h=i&128}c[e+32>>2]=g-j;a:do if(g>>>0>>0)do{if(a[g>>0]|0)break a;g=g+1|0}while(g>>>0>>0);while(0);c[o>>2]=g;q=0;a[f>>0]=q;return}function tr(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=Ra;Ra=Ra+16|0;y=D+4|0;z=D;A=c[e+8>>2]|0;B=c[e>>2]|0;t=(a[b+235>>0]|0)==0?157:158;if(!A){c[g>>2]=0;C=0;Ra=D;return C|0}i=c[B>>2]|0;a:do if(c[i+80>>2]|0){u=(A|0)>1;v=A+-1|0;w=e+24|0;x=e+20|0;s=e+16|0;while(1){r=i+88|0;q=c[r>>2]|0;r=c[r+4>>2]|0;i=jq(b,i,y,z)|0;k=(i|0)==0;b:do if(k&u){j=1;while(1){i=c[B+(j<<2)>>2]|0;if(!(c[i+80>>2]|0)){i=j;break b}p=i+88|0;if(!((c[p>>2]|0)==(q|0)?(c[p+4>>2]|0)==(r|0):0)){i=j;break b}i=jq(b,i,0,0)|0;j=j+1|0;k=(i|0)==0;if(!(k&(j|0)<(A|0))){C=11;break}}}else{j=1;C=11}while(0);if((C|0)==11){C=0;if(k)i=j;else{C=45;break}}o=c[e>>2]|0;i=i+(((i|0)==(A|0))<<31>>31)|0;if((i|0)>0)do{l=i;i=i+-1|0;c:do if((l|0)<(A|0)){j=i;n=c[o+(i<<2)>>2]|0;do{k=j;j=j+1|0;m=o+(j<<2)|0;if((Xa[t&255](n,c[m>>2]|0)|0)<0)break c;p=o+(k<<2)|0;k=c[m>>2]|0;n=c[p>>2]|0;c[m>>2]=n;c[p>>2]=k}while((j|0)<(v|0))}while(0)}while((l|0)>1);i=c[z>>2]|0;if((i|0)>0?c[(c[B>>2]|0)+56>>2]|0:0){l=c[y>>2]|0;m=i+1|0;if((c[x>>2]|0)>(i|0))j=c[s>>2]|0;else{j=m<<1;c[x>>2]=j;k=c[s>>2]|0;if(mb()|0){i=7;C=45;break}j=sb(k,(j|0)>0?j:0,0)|0;if(!j){i=7;C=45;break}c[s>>2]=j}ew(j|0,l|0,m|0)|0;c[y>>2]=c[s>>2]}o=c[w>>2]|0;if((o|0)>-1){k=c[y>>2]|0;p=k+i|0;j=k;n=i;m=0;while(1){d:do if(j>>>0

        >>0){l=0;i=j;while(1){j=a[i>>0]|0;if(!(j&254|l)){l=i;break d}i=i+1|0;if(i>>>0

        >>0)l=j&128;else{l=i;break}}}else l=j;while(0);i=l-k|0;if((m|0)==(o|0))break;n=n-i|0;if(!n){k=l;i=0;break}k=l+1|0;j=a[k>>0]|0;i=j&255;if(i&128){m=d[l+2>>0]|0;i=m<<7|j&127;if(m&128){m=d[l+3>>0]|0;i=m<<14|i&16383;if(m&128){m=d[l+4>>0]|0;i=m<<21|i&2097151;if(!(m&128))j=4;else{i=(a[l+5>>0]&7)<<28|i&268435455;j=5}}else j=3}else j=2}else j=1;j=k+j|0;k=l;m=i}j=k+i|0;if((j|0)!=(p|0))gw(j|0,0,p-j|0)|0;c[y>>2]=k;c[z>>2]=i}if((i|0)>0){C=46;break}if(!(c[(c[c[e>>2]>>2]|0)+80>>2]|0))break a;i=c[B>>2]|0}if((C|0)==45){C=i;Ra=D;return C|0}else if((C|0)==46){c[g>>2]=c[y>>2];C=f;c[C>>2]=q;c[C+4>>2]=r;c[h>>2]=i;C=0;Ra=D;return C|0}}while(0);c[g>>2]=0;C=0;Ra=D;return C|0}function ur(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=Ra;Ra=Ra+16|0;i=m;k=e+7|0;if(!(a[k>>0]|0)){d=0;Ra=m;return d|0}l=e+12|0;f=c[l>>2]|0;do if(!f){h=c[e>>2]|0;g=h+216|0;f=c[g>>2]|0;if(!f){c[i>>2]=c[h+220>>2];f=Bb(54912,i)|0;if(!f){h=7;break}h=qd(c[h+12>>2]|0,f,-1,129,0,l,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}if(h|0)break;f=c[l>>2]|0}else{c[l>>2]=f;c[g>>2]=0}a[e+8>>0]=1;j=13}else j=13;while(0);a:do if((j|0)==13){i=e+32|0;h=c[i>>2]|0;i=c[i+4>>2]|0;do if(!(Vc(f,1)|0)){f=c[f+100>>2]|0;g=f+8|0;if(!(b[g>>1]&9216)){j=f;c[j>>2]=h;c[j+4>>2]=i;b[g>>1]=4;break}else{Pg(f,h,i);break}}while(0);a[k>>0]=0;if((Gc(c[l>>2]|0)|0)==100){d=0;Ra=m;return d|0}f=c[l>>2]|0;do if(f|0){g=c[f>>2]|0;l=f+136|0;k=c[l+4>>2]|0;if((k|0)>0|(k|0)==0&(c[l>>2]|0)>>>0>0)hc(g,f);h=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;l=f+64|0;c[l>>2]=0;c[l+4>>2]=0;if(!((h|0)==3082|(a[g+81>>0]|0)!=0)){f=c[g+68>>2]&h;if(!f)break;else{h=f;break a}}else{og(g);h=7;break a}}while(0);if(!(c[(c[e>>2]|0)+40>>2]|0)){a[e+6>>0]=1;h=267;break}else{d=0;Ra=m;return d|0}}while(0);if(!((d|0)!=0&(h|0)!=0)){d=h;Ra=m;return d|0}c[d+20>>2]=h;g=c[d>>2]|0;if(!(b[g+8>>1]&1)){d=h;Ra=m;return d|0}switch(h|0){case 516:{f=50738;break}case 100:{f=50760;break}case 101:{f=50782;break}default:{f=h&255;if(f>>>0<29?(520028155>>>f&1|0)!=0:0)f=c[22960+(f<<2)>>2]|0;else f=50724}}yc(g,f,-1,1,0)|0;d=h;Ra=m;return d|0}function vr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=Ra;Ra=Ra+16|0;s=u+8|0;t=u+4|0;p=u;if(c[e>>2]|0){t=1;t=t&1;Ra=u;return t|0}switch(c[d>>2]|0){case 3:case 1:{k=d+12|0;do if(vr(b,c[k>>2]|0,e)|0?(l=d+16|0,vr(b,c[l>>2]|0,e)|0):0){if(c[e>>2]|0){t=1;t=t&1;Ra=u;return t|0}if((c[d>>2]|0)!=1){t=1;t=t&1;Ra=u;return t|0}r=c[d+8>>2]|0;if(r|0?(c[r>>2]|0)==1:0){t=1;t=t&1;Ra=u;return t|0}f=c[k>>2]|0;if(!f){f=d;h=0;g=0}else{h=d;j=0;g=0;while(1){h=c[(c[(c[h+16>>2]|0)+20>>2]|0)+32>>2]|0;h=Sv(j|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;g=L()|0;i=c[f+12>>2]|0;if(!i)break;else{r=f;j=h;f=i;h=r}}}i=f+20|0;r=c[(c[i>>2]|0)+32>>2]|0;h=Sv(h|0,g|0,r|0,((r|0)<0)<<31>>31|0)|0;h=cw(h|0,L()|0,1)|0;h=pb(h,L()|0)|0;if(!h){c[e>>2]=7;break}g=c[i>>2]|0;c[s>>2]=c[g+28>>2];c[t>>2]=c[g+64>>2];g=c[f+8>>2]|0;a:do if(!g)f=1;else{f=1;do{if((c[g>>2]|0)!=1)break a;f=yr(c[g+4>>2]|0,h,s,t,c[(c[g+16>>2]|0)+20>>2]|0)|0;g=c[g+8>>2]|0}while((f|0)!=0&(g|0)!=0)}while(0);g=c[(c[l>>2]|0)+20>>2]|0;c[s>>2]=c[g+28>>2];c[t>>2]=c[g+64>>2];g=c[k>>2]|0;if((f|0)!=0&(g|0)!=0)do{if((c[g>>2]|0)==1)f=c[g+16>>2]|0;else f=g;f=yr(c[(c[g+8>>2]|0)+4>>2]|0,h,s,t,c[f+20>>2]|0)|0;g=c[g+12>>2]|0}while((f|0)!=0&(g|0)!=0);if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{t=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}if(f|0){t=1;t=t&1;Ra=u;return t|0}}while(0);if((c[d>>2]|0)!=1){t=0;t=t&1;Ra=u;return t|0}t=c[d+8>>2]|0;if(t|0?(c[t>>2]|0)==1:0){t=0;t=t&1;Ra=u;return t|0}g=c[d+20>>2]|0;i=b+32|0;if(!g){h=d;while(1){d=c[h+16>>2]|0;s=d+24|0;t=i;if((c[s>>2]|0)==(c[t>>2]|0)?(c[s+4>>2]|0)==(c[t+4>>2]|0):0){f=c[d+20>>2]|0;g=f+24|0;d=f+28|0;do if(c[g>>2]|0?(n=c[d>>2]|0,n|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{t=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);c[d>>2]=0;c[f+32>>2]=0;c[g>>2]=0}d=c[h+12>>2]|0;g=c[d+20>>2]|0;if(!g)h=d;else break}}s=d+24|0;t=i;if(!((c[s>>2]|0)==(c[t>>2]|0)?(c[s+4>>2]|0)==(c[t+4>>2]|0):0)){t=0;t=t&1;Ra=u;return t|0}f=g+24|0;d=g+28|0;do if(c[f>>2]|0?(o=c[d>>2]|0,o|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{t=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);c[d>>2]=0;c[g+32>>2]=0;c[f>>2]=0;t=0;t=t&1;Ra=u;return t|0}case 4:{t=vr(b,c[d+12>>2]|0,e)|0;t=(vr(b,c[d+16>>2]|0,e)|0|t|0)!=0;t=t&1;Ra=u;return t|0}case 2:{if(!(vr(b,c[d+12>>2]|0,e)|0)){t=0;t=t&1;Ra=u;return t|0}t=(vr(b,c[d+16>>2]|0,e)|0)==0;t=t&1;Ra=u;return t|0}default:{do if(c[b+28>>2]|0){q=d+24|0;n=q;r=b+32|0;o=r;f=a[d+34>>0]|0;if((c[n>>2]|0)==(c[o>>2]|0)?(c[n+4>>2]|0)==(c[o+4>>2]|0):0){d=c[d+20>>2]|0;if(!(f<<24>>24))g=d;else{g=d;m=55}}else{if(!(f<<24>>24))break;g=c[d+20>>2]|0;m=55}if((m|0)==55){f=g+24|0;d=g+28|0;do if(c[f>>2]|0?(h=c[d>>2]|0,h|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{o=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[d>>2]=0;c[g+32>>2]=0;c[f>>2]=0}n=g+64|0;b:do if((c[n>>2]|0)>0){d=g+28|0;o=g+32|0;m=0;b=0;h=0;j=-1;while(1){f=c[g+72+(m*24|0)+16>>2]|0;if(f){h=f+12|0;f=c[h>>2]|0;if(!f){m=66;break}l=nb(c[f>>2]|0)|0;if(!l){f=7;break b}i=c[h>>2]|0;k=c[i+4>>2]|0;if((a[k>>0]|0)<=-1)if((a[k+1>>0]|0)<=-1)if((a[k+2>>0]|0)<=-1)if((a[k+3>>0]|0)>-1)h=4;else{f=28;h=k+4|0;do{v=h;h=h+1|0;f=f+7|0}while(f>>>0<64&(a[v>>0]|0)<0);h=h-k|0}else h=3;else h=2;else h=1;i=(c[i>>2]|0)-h|0;f=l;ew(l|0,k+h|0,i|0)|0;if(!b){j=m;k=l}else{c[s>>2]=f;c[t>>2]=b;c[p>>2]=f;or(s,m-j|0,0,1,t,p)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](b);else{v=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b)}f=(c[s>>2]|0)-f|0;if(!f){m=85;break}j=m;k=l;i=f}}else{k=b;i=h}m=m+1|0;if((m|0)>=(c[n>>2]|0)){m=90;break}else{b=k;h=i}}if((m|0)==66){do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{v=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);c[d>>2]=0;c[o>>2]=0;f=0;break}else if((m|0)==85){if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{v=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}c[d>>2]=0;c[o>>2]=0;f=0;break}else if((m|0)==90){if((j|0)<=-1){f=0;break}f=c[g+44>>2]|0;if((f|0)<0){c[d>>2]=k;c[o>>2]=i;t=r;v=c[t+4>>2]|0;f=g+16|0;c[f>>2]=c[t>>2];c[f+4>>2]=v;c[g+24>>2]=1;f=0;break}if((f|0)>(j|0)){c[s>>2]=k;c[t>>2]=c[d>>2];h=f-j|0}else{c[s>>2]=c[d>>2];c[t>>2]=k;h=j-f|0}f=nb(i+8|0)|0;c[p>>2]=f;if(!f){do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{v=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);f=7;break}c[d>>2]=f;if(!(or(p,h,0,1,s,t)|0)){f=c[p>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{v=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[d>>2]=0;f=0}else{c[g+24>>2]=1;f=(c[p>>2]|0)-(c[d>>2]|0)|0}c[o>>2]=f;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{v=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);f=0;break}}else{f=0;d=g+28|0}while(0);c[e>>2]=f;v=(c[d>>2]|0)!=0;e=r;s=c[e+4>>2]|0;t=q;c[t>>2]=c[e>>2];c[t+4>>2]=s;v=v&1;Ra=u;return v|0}while(0);if(a[d+32>>0]|0){v=0;v=v&1;Ra=u;return v|0}t=d+24|0;v=b+32|0;v=(c[t>>2]|0)==(c[v>>2]|0)?(c[t+4>>2]|0)==(c[v+4>>2]|0):0;v=v&1;Ra=u;return v|0}}return 0}function wr(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+16|0;m=n;j=c[a>>2]|0;c[m>>2]=j;if(j){l=j+16|0;k=c[l>>2]|0;l=c[l+4>>2]|0;if((k|0)==(b|0)&(l|0)==(d|0))l=6;else{l=Tv(b|0,d|0,k|0,l|0)|0;k=L()|0;c[j>>2]=(c[j>>2]|0)+1;j=l;l=4}}else{j=b;k=d;l=4}if((l|0)==4){j=xr(m,j,k)|0;if(!j){j=c[m>>2]|0;l=j+24|0;c[l>>2]=-1;c[l+4>>2]=-1;l=j+32|0;c[l>>2]=0;c[l+4>>2]=0;l=j+16|0;c[l>>2]=b;c[l+4>>2]=d;l=6}}do if((l|0)==6){if((f|0)>0|(f|0)==0&e>>>0>0){d=j+24|0;if(!((c[d>>2]|0)==(e|0)?(c[d+4>>2]|0)==(f|0):0)){j=xr(m,1,0)|0;if(j|0)break;j=xr(m,e,f)|0;if(j|0)break;j=c[m>>2]|0;d=j+24|0;c[d>>2]=e;c[d+4>>2]=f;f=j+32|0;c[f>>2]=0;c[f+4>>2]=0}}else if(!((f|0)>-1|(f|0)==-1&e>>>0>4294967295)){j=0;break}e=Sv(g|0,h|0,2,0)|0;f=L()|0;j=j+32|0;j=Tv(e|0,f|0,c[j>>2]|0,c[j+4>>2]|0)|0;j=xr(m,j,L()|0)|0;if(!j){j=(c[m>>2]|0)+32|0;c[j>>2]=g;c[j+4>>2]=h;j=0}}while(0);c[i>>2]=j;j=c[m>>2]|0;if((j|0)==(c[a>>2]|0)){a=0;Ra=n;return a|0}c[a>>2]=j;a=1;Ra=n;return a|0}function xr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[b>>2]|0;do if(f){g=c[f+8>>2]|0;if(((c[f>>2]|0)+11|0)>(g|0)){g=g<<1;h=g+40|0;if((mb()|0)==0?(i=sb(f,(h|0)>0?h:0,0)|0,i|0):0){c[i+8>>2]=g;c[i+4>>2]=i+40;f=i;break}f=c[b>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[b>>2]=0;b=7;return b|0}}else{if(mb()|0){b=7;return b|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](140)|0;if(!f){b=7;return b|0}}else{f=Wa[c[29356>>2]&127](140)|0;if((c[14985]|0)>>>0<140)c[14985]=140;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){l=c[14978]|0;k=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;j=L()|0;c[14768]=((j|0)<0|(j|0)==0&k>>>0<=l>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f){b=7;return b|0}g=Wa[c[29352>>2]&127](f)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}c[f+8>>2]=100;c[f+4>>2]=f+40;c[f>>2]=0}while(0);k=f+4|0;l=(c[k>>2]|0)+(c[f>>2]|0)|0;j=l;i=e;while(1){g=d&255;h=j+1|0;a[j>>0]=g|-128;d=bw(d|0,i|0,7)|0;i=L()|0;if((d|0)==0&(i|0)==0)break;else j=h}a[j>>0]=g&127;e=(c[f>>2]|0)+(h-l)|0;c[f>>2]=e;a[(c[k>>2]|0)+e>>0]=0;c[b>>2]=f;b=0;return b|0}function yr(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=Ra;Ra=Ra+32|0;l=r+20|0;k=r+16|0;h=r+12|0;m=r+8|0;i=r+4|0;p=r;q=g+64|0;t=(c[q>>2]|0)+b|0;b=(c[f>>2]|0)+b|0;o=g+28|0;n=c[o>>2]|0;c[p>>2]=n;c[i>>2]=n;c[l>>2]=d;s=c[e>>2]|0;j=d;c[k>>2]=j;or(k,t,0,0,e,i)|0;k=c[k>>2]|0;c[h>>2]=k;c[m>>2]=k;c[e>>2]=s;c[i>>2]=n;or(h,b,1,0,i,e)|0;i=k;b=(c[h>>2]|0)==(i|0);do if((i|0)==(d|0))if(b)b=0;else{b=d;h=0;while(1){i=a[b>>0]|0;b=b+1|0;if(!(h<<24>>24|i))break;else h=i&128}t=b-k|0;ew(n|0,d|0,t|0)|0;c[p>>2]=n+t;c[m>>2]=b;b=1}else{if(!b){nr(p,l,m)|0;b=1;break}b=d;h=0;while(1){i=a[b>>0]|0;b=b+1|0;if(!(h<<24>>24|i))break;else h=i&128}t=b-j|0;ew(n|0,d|0,t|0)|0;c[p>>2]=n+t;c[l>>2]=b;b=1}while(0);if(!b){Ra=r;return b|0}d=c[o>>2]|0;s=(c[p>>2]|0)-d+-1|0;t=g+32|0;gw(d+s|0,0,(c[t>>2]|0)-s|0)|0;c[t>>2]=s;c[e>>2]=c[o>>2];c[f>>2]=c[q>>2];Ra=r;return b|0}function zr(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=Ra;Ra=Ra+16|0;w=x+8|0;t=x;v=x+4|0;c[v>>2]=f;c[w>>2]=f;i=cq(d,7,t,w)|0;s=c[t>>2]|0;a:do if(!i){b:do if((Gc(s)|0)==100){if(!(c[d+44>>2]|0))r=0;else r=Nc(s,(c[d+24>>2]|0)+1|0)|0;j=Oc(s,0)|0;k=L()|0;l=d+272|0;i=l;f=c[i>>2]|0;i=c[i+4>>2]|0;do if(!((i|0)>(k|0)|(i|0)==(k|0)&f>>>0>j>>>0)){if((f|0)==(j|0)&(i|0)==(k|0)?(c[d+284>>2]|0)==0:0){u=10;break}f=d+280|0;if((c[f>>2]|0)==(r|0)?(c[d+264>>2]|0)<=(c[d+260>>2]|0):0)u=12;else u=10}else u=10;while(0);if((u|0)==10){f=Sr(d)|0;if(!f){f=d+280|0;u=12}}if((u|0)==12){q=l;c[q>>2]=j;c[q+4>>2]=k;c[f>>2]=r;c[d+284>>2]=1;q=d+24|0;p=d+32|0;m=s+120|0;n=s+144|0;o=s+40|0;if(!s){f=c[q>>2]|0;if((f|0)<1){i=0;f=1;break a}k=c[p>>2]|0;j=1;while(1){i=j+-1|0;if(!(a[k+i>>0]|0)){c[h+(i<<2)>>2]=0;f=c[q>>2]|0}if((j|0)<(f|0))j=j+1|0;else{f=1;break b}}}l=1;while(1){if((l|0)>(c[q>>2]|0)){f=1;break b}k=l+-1|0;if(!(a[(c[p>>2]|0)+k>>0]|0)){f=c[m>>2]|0;if((f|0)!=0?l>>>0<(e[n>>1]|0)>>>0:0)f=f+(l*40|0)|0;else{f=c[s>>2]|0;c[f+64>>2]=25;Ne(f,25);f=29576}i=b[f+8>>1]|0;if((i&514)==514?(a[f+10>>0]|0)==1:0)j=c[f+16>>2]|0;else if(!(i&1))j=Gg(f,1)|0;else j=0;f=c[s>>2]|0;i=c[o>>2]|0;if((i|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=7}else f=c[f+68>>2]&i;c[o>>2]=f;f=Mr(d,r,j,-1,h+(k<<2)|0)|0;j=Lc(s,l)|0;k=h+(c[q>>2]<<2)|0;c[k>>2]=(c[k>>2]|0)+j}else f=0;if(!f)l=l+1|0;else break}}if(!s){i=f;f=0;break a}i=c[s>>2]|0;r=s+136|0;q=c[r+4>>2]|0;if((q|0)>0|(q|0)==0&(c[r>>2]|0)>>>0>0)hc(i,s);r=kc(s)|0;c[s+20>>2]=770837923;c[s+36>>2]=-1;c[s+40>>2]=0;a[s+146>>0]=2;c[s+44>>2]=0;c[s+32>>2]=1;a[s+147>>0]=-1;c[s+48>>2]=0;s=s+64|0;c[s>>2]=0;c[s+4>>2]=0;if(!((r|0)==3082|(a[i+81>>0]|0)!=0)){i=f;f=0;break a}og(i);i=f;f=0;break a}else f=0;while(0);if(s){i=c[s>>2]|0;r=s+136|0;q=c[r+4>>2]|0;if((q|0)>0|(q|0)==0&(c[r>>2]|0)>>>0>0)hc(i,s);j=kc(s)|0;c[s+20>>2]=770837923;c[s+36>>2]=-1;c[s+40>>2]=0;a[s+146>>0]=2;c[s+44>>2]=0;c[s+32>>2]=1;a[s+147>>0]=-1;c[s+48>>2]=0;s=s+64|0;c[s>>2]=0;c[s+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7;break}else{i=c[i+68>>2]&j;break}}else i=0}else if(s){f=c[s>>2]|0;r=s+136|0;q=c[r+4>>2]|0;if((q|0)>0|(q|0)==0&(c[r>>2]|0)>>>0>0)hc(f,s);r=kc(s)|0;c[s+20>>2]=770837923;c[s+36>>2]=-1;c[s+40>>2]=0;a[s+146>>0]=2;c[s+44>>2]=0;c[s+32>>2]=1;a[s+147>>0]=-1;c[s+48>>2]=0;s=s+64|0;c[s>>2]=0;c[s+4>>2]=0;if((r|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=0}else f=0}else f=0;while(0);if(!((i|0)==0&(f|0)!=0)){w=i;Ra=x;return w|0}c[w>>2]=c[v>>2];l=d+40|0;c:do if(!(c[l>>2]|0)){f=cq(d,1,t,w)|0;do if(!f){f=c[t>>2]|0;if((Gc(f)|0)==100)k=Nc(f,0)|0;else k=0;if(!f){f=k;u=61;break c}i=c[f>>2]|0;t=f+136|0;s=c[t+4>>2]|0;if((s|0)>0|(s|0)==0&(c[t>>2]|0)>>>0>0)hc(i,f);j=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;t=f+64|0;c[t>>2]=0;c[t+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);f=7;break}f=c[i+68>>2]&j;if(!f){f=k;break c}Ra=x;return f|0}while(0);w=f;Ra=x;return w|0}else{f=0;u=61}while(0);if(f|0){w=Lr(d,1)|0;c[g>>2]=0;gw(h|0,0,(c[d+24>>2]<<3)+8|0)|0;Ra=x;return w|0}c[g>>2]=(c[g>>2]|0)+-1;if(!(c[l>>2]|0)){f=cq(d,0,w,v)|0;do if(!f){f=c[w>>2]|0;Gc(f)|0;if(f){i=c[f>>2]|0;h=f+136|0;g=c[h+4>>2]|0;if((g|0)>0|(g|0)==0&(c[h>>2]|0)>>>0>0)hc(i,f);j=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;h=f+64|0;c[h>>2]=0;c[h+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);f=7;break}else{f=c[i+68>>2]&j;break}}else f=0}while(0)}else f=0;if(!(a[d+234>>0]|0)){w=f;Ra=x;return w|0}do if(!f){f=cq(d,19,w,v)|0;if(!f){f=c[w>>2]|0;Gc(f)|0;if(f){i=c[f>>2]|0;w=f+136|0;v=c[w+4>>2]|0;if((v|0)>0|(v|0)==0&(c[w>>2]|0)>>>0>0)hc(i,f);j=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;w=f+64|0;c[w>>2]=0;c[w+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);f=7;break}else{f=c[i+68>>2]&j;break}}else f=0}}while(0);w=f;Ra=x;return w|0}function Ar(d,f,h){d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=Ra;Ra=Ra+16|0;q=s;if(c[d+40>>2]|0){k=c[f+((c[d+24>>2]|0)+3<<2)>>2]|0;i=b[k+8>>1]|0;j=i&31;if(-1431655766>>>j&1){k=c[f+4>>2]|0;i=b[k+8>>1]|0;j=i&31}if(!(1347440720>>>j&1)){h=19;Ra=s;return h|0}i=i&65535;do if(!(i&4)){if(i&8|0){i=Mg(+g[k>>3])|0;j=L()|0;break}if(!(i&18)){i=0;j=0}else{i=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;j=L()|0}}else{j=k;i=c[j>>2]|0;j=c[j+4>>2]|0}while(0);c[h>>2]=i;c[h+4>>2]=j;h=0;Ra=s;return h|0}r=f+4|0;i=cq(d,18,q,r)|0;if(i|0){h=i;Ra=s;return h|0}do if(c[d+44>>2]|0){n=c[q>>2]|0;i=d+24|0;o=c[i>>2]|0;l=o+2|0;j=c[f+(o+4<<2)>>2]|0;k=e[j+8>>1]|0;do if(!(k&4)){if(k&8|0){m=Mg(+g[j>>3])|0;L()|0;break}if(!(k&18))m=0;else{m=Ng(a[j+10>>0]|0,c[j+12>>2]|0,c[j+16>>2]|0)|0;L()|0}}else m=c[j>>2]|0;while(0);p=((m|0)<0)<<31>>31;j=Vc(n,l)|0;if(j|0){h=j;Ra=s;return h|0}n=c[n+100>>2]|0;k=o+1|0;j=n+(k*40|0)|0;k=n+(k*40|0)+8|0;if(!(b[k>>1]&9216)){o=j;c[o>>2]=m;c[o+4>>2]=p;b[k>>1]=4;break}else{Pg(j,m,p);break}}else i=d+24|0;while(0);i=c[f+((c[i>>2]|0)+3<<2)>>2]|0;if(!(-1431655766>>>(b[i+8>>1]&31)&1)){if(-1431655766>>>(b[(c[f>>2]|0)+8>>1]&31)&1|0?(-1431655766>>>(b[(c[r>>2]|0)+8>>1]&31)&1|0)==0:0){h=1;Ra=s;return h|0}j=c[q>>2]|0;i=Yc(j,1,i)|0;if(i){h=i;Ra=s;return h|0}}else j=c[q>>2]|0;Gc(j)|0;do if(j){i=c[j>>2]|0;f=j+136|0;r=c[f+4>>2]|0;if((r|0)>0|(r|0)==0&(c[f>>2]|0)>>>0>0)hc(i,j);k=kc(j)|0;c[j+20>>2]=770837923;c[j+36>>2]=-1;c[j+40>>2]=0;a[j+146>>0]=2;c[j+44>>2]=0;c[j+32>>2]=1;a[j+147>>0]=-1;c[j+48>>2]=0;f=j+64|0;c[f>>2]=0;c[f+4>>2]=0;if((k|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7;break}else{i=c[i+68>>2]&k;break}}else i=0;while(0);f=(c[d+12>>2]|0)+40|0;d=c[f+4>>2]|0;c[h>>2]=c[f>>2];c[h+4>>2]=d;h=i;Ra=s;return h|0}function Br(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;p=t;q=t+8|0;if(c[d>>2]|0){Ra=t;return}g=e+24|0;s=c[g>>2]|0;s=Yv(s|0,((s|0)<0)<<31>>31|0,10,0)|0;s=pb(s,L()|0)|0;a:do if(s){o=c[g>>2]|0;if((o|0)>0){n=0;g=0;do{i=s+g|0;h=i;k=c[f+(n<<2)>>2]|0;m=0;while(1){j=k&255;l=h+1|0;a[h>>0]=j|-128;k=bw(k|0,m|0,7)|0;m=L()|0;if((k|0)==0&(m|0)==0)break;else h=l}a[h>>0]=j&127;g=g-i+l|0;n=n+1|0}while((n|0)!=(o|0));m=g}else m=0;i=e+136|0;h=c[i>>2]|0;c[q>>2]=h;do if(!h){h=c[e+20>>2]|0;c[p>>2]=c[e+16>>2];c[p+4>>2]=h;h=Bb(52323,p)|0;if(h){g=qd(c[e+12>>2]|0,h,-1,133,0,q,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{p=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}h=c[q>>2]|0;c[i>>2]=h;if(!g)break}else g=7;if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break a}else{r=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break a}}while(0);l=h;i=e+272|0;g=c[i>>2]|0;i=c[i+4>>2]|0;do if(!(Vc(l,1)|0)){j=c[l+100>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){e=j;c[e>>2]=g;c[e+4>>2]=i;b[k>>1]=4;break}else{Pg(j,g,i);break}}while(0);if(Vc(l,2)|0){do if(90!=-1)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{r=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}while(0);Gc(l)|0;if(!h){g=0;break}}else{g=yc((c[l+100>>2]|0)+40|0,s,m,0,90)|0;if(g|0?(r=c[l>>2]|0,c[r+64>>2]=g,Ne(r,g),r=c[l>>2]|0,(g|0)==3082|(a[r+81>>0]|0)!=0):0)og(r);Gc(l)|0}g=c[l>>2]|0;s=l+136|0;r=c[s+4>>2]|0;if((r|0)>0|(r|0)==0&(c[s>>2]|0)>>>0>0)hc(g,l);h=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;s=l+64|0;c[s>>2]=0;c[s+4>>2]=0;if((h|0)==3082|(a[g+81>>0]|0)!=0){og(g);g=7;break}else{g=c[g+68>>2]&h;break}}else g=7;while(0);c[d>>2]=g;Ra=t;return}function Cr(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;D=Ra;Ra=Ra+32|0;x=D+8|0;k=D;y=D+16|0;u=f+24|0;v=c[u>>2]|0;w=v+2|0;if(c[e>>2]|0){Ra=D;return}C=Yv(w|0,((w|0)<0)<<31>>31|0,14,0)|0;C=pb(C,L()|0)|0;if(!C){c[e>>2]=7;Ra=D;return}z=C+(w<<2)|0;l=f+144|0;j=c[l>>2]|0;c[y>>2]=j;do if(!j){t=c[f+20>>2]|0;c[k>>2]=c[f+16>>2];c[k+4>>2]=t;k=Bb(52411,k)|0;if(k){j=qd(c[f+12>>2]|0,k,-1,133,0,y,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{t=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[y>>2]|0;c[l>>2]=k;if(!j)break}else j=7;if(!(c[7324]|0))ab[c[29344>>2]&127](C);else{B=Wa[c[29352>>2]&127](C)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](C)}c[e>>2]=j;Ra=D;return}else k=j;while(0);t=k;do if(!(Vc(t,1)|0)){j=c[t+100>>2]|0;l=j+8|0;if(!(b[l>>1]&9216)){s=j;c[s>>2]=0;c[s+4>>2]=0;b[l>>1]=4;break}else{Pg(j,0,0);break}}while(0);if((Gc(t)|0)==100){if(!k)n=mc(29576)|0;else{j=c[t+120>>2]|0;if((j|0)!=0?(b[t+144>>1]|0)!=0:0)l=t;else{j=c[t>>2]|0;c[j+64>>2]=25;Ne(j,25);j=29576;l=t}n=mc(j)|0;j=c[l>>2]|0;m=t+40|0;l=c[m>>2]|0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7}else j=c[j+68>>2]&l;c[m>>2]=j}s=Lc(t,0)|0;if(((s|0)!=0?(a[n+(s+-1)>>0]|0)>-1:0)?(v|0)>-2&(s|0)>0:0){j=0;r=0;do{q=n+r|0;l=d[q>>0]|0;if(l&128){p=d[q+1>>0]|0;l=p<<7|l&127;if(p&128){p=d[q+2>>0]|0;l=p<<14|l&16383;if(p&128){p=d[q+3>>0]|0;l=p<<21|l&2097151;if(!(p&128))m=4;else{o=28;p=q+4|0;l=l&268435455;m=0;do{E=p;p=p+1|0;E=d[E>>0]|0;F=cw(E&127|0,0,o|0)|0;l=Sv(F|0,L()|0,l|0,m|0)|0;m=L()|0;o=o+7|0}while(o>>>0<64&((E&128|0)!=0|0!=0));m=p-q|0}}else m=3}else m=2}else m=1;r=m+r|0;c[C+(j<<2)>>2]=l;j=j+1|0}while((j|0)<(w|0)&(r|0)<(s|0))}else j=0;if((w|0)>(j|0))gw(C+(j<<2)|0,0,w-j<<2|0)|0}else gw(C|0,0,w<<2|0)|0;do if(k|0){j=c[t>>2]|0;F=t+136|0;E=c[F+4>>2]|0;if((E|0)>0|(E|0)==0&(c[F>>2]|0)>>>0>0)hc(j,t);k=kc(t)|0;c[t+20>>2]=770837923;c[t+36>>2]=-1;c[t+40>>2]=0;a[t+146>>0]=2;c[t+44>>2]=0;c[t+32>>2]=1;a[t+147>>0]=-1;c[t+48>>2]=0;F=t+64|0;c[F>>2]=0;c[F+4>>2]=0;if(!((k|0)==3082|(a[j+81>>0]|0)!=0)){j=c[j+68>>2]&k;if(!j)break}else{og(j);j=7}if(!(c[7324]|0))ab[c[29344>>2]&127](C);else{F=Wa[c[29352>>2]&127](C)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](C)}c[e>>2]=j;Ra=D;return}while(0);k=c[C>>2]|0;k=(i|0)<0&k>>>0<(0-i|0)>>>0?0:k+i|0;c[C>>2]=k;if((c[u>>2]|0)>=0){j=0;do{F=j;j=j+1|0;E=C+(j<<2)|0;t=(c[g+(F<<2)>>2]|0)+(c[E>>2]|0)|0;i=c[h+(F<<2)>>2]|0;c[E>>2]=t>>>0>>0?0:t-i|0}while((F|0)<(c[u>>2]|0))}a:do if((v|0)>-2){q=0;j=0;while(1){p=z+j|0;o=p;n=0;while(1){l=k&255;m=o+1|0;a[o>>0]=l|-128;k=bw(k|0,n|0,7)|0;n=L()|0;if((k|0)==0&(n|0)==0)break;else o=m}a[o>>0]=l&127;j=j-p+m|0;k=q+1|0;if((k|0)==(w|0)){n=j;break a}q=k;k=c[C+(k<<2)>>2]|0}}else n=0;while(0);l=f+148|0;k=c[l>>2]|0;c[y>>2]=k;do if(!k){k=c[f+20>>2]|0;c[x>>2]=c[f+16>>2];c[x+4>>2]=k;k=Bb(52453,x)|0;if(k){j=qd(c[f+12>>2]|0,k,-1,133,0,y,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{F=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[y>>2]|0;c[l>>2]=k;if(!j)break}else j=7;if(!(c[7324]|0))ab[c[29344>>2]&127](C);else{F=Wa[c[29352>>2]&127](C)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](C)}c[e>>2]=j;Ra=D;return}while(0);m=k;do if(!(Vc(m,1)|0)){j=c[m+100>>2]|0;l=j+8|0;if(!(b[l>>1]&9216)){F=j;c[F>>2]=0;c[F+4>>2]=0;b[l>>1]=4;break}else{Pg(j,0,0);break}}while(0);if((z|0)==0|(Vc(m,2)|0)!=0){Gc(m)|0;if(!k)j=0;else B=87}else{j=yc((c[m+100>>2]|0)+40|0,z,n,0,0)|0;if(j|0?(A=c[m>>2]|0,c[A+64>>2]=j,Ne(A,j),A=c[m>>2]|0,(j|0)==3082|(a[A+81>>0]|0)!=0):0)og(A);Gc(m)|0;B=87}do if((B|0)==87){j=c[m>>2]|0;F=m+136|0;E=c[F+4>>2]|0;if((E|0)>0|(E|0)==0&(c[F>>2]|0)>>>0>0)hc(j,m);k=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;F=m+64|0;c[F>>2]=0;c[F+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&k;break}}while(0);c[e>>2]=j;Vc(m,2)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](C);Ra=D;return}else{F=Wa[c[29352>>2]&127](C)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](C);Ra=D;return}}function Dr(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=Ra;Ra=Ra+16|0;g=m;h=m+8|0;j=d+164|0;f=c[j>>2]|0;c[h>>2]=f;do if(!f){f=c[d+20>>2]|0;c[g>>2]=c[d+16>>2];c[g+4>>2]=f;f=Bb(52546,g)|0;if(!f){j=0;i=7;break}i=qd(c[d+12>>2]|0,f,-1,133,0,h,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{l=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}f=c[h>>2]|0;c[j>>2]=f;if(!i)k=9;else j=0}else k=9;while(0);if((k|0)==9){l=f;g=c[d+280>>2]|0;h=((g|0)<0)<<31>>31;do if(!(Vc(l,1)|0)){i=c[l+100>>2]|0;j=i+8|0;if(!(b[j>>1]&9216)){k=i;c[k>>2]=g;c[k+4>>2]=h;b[j>>1]=4;break}else{Pg(i,g,h);break}}while(0);k=d+252|0;g=c[k>>2]|0;h=((g|0)<0)<<31>>31;do if(!(Vc(l,2)|0)){j=c[l+100>>2]|0;i=j+40|0;j=j+48|0;if(!(b[j>>1]&9216)){c[i>>2]=g;c[i+4>>2]=h;b[j>>1]=4;break}else{Pg(i,g,h);break}}while(0);if((Gc(l)|0)==100){g=0;h=0;while(1){j=Nc(l,0)|0;a:do if(!g){i=0;while(1){if((i|0)>=(c[k>>2]|0)){g=0;break a}g=Er(d,j,i,-2)|0;n=(g|0)==101;g=n?0:g;h=n?1:h;if(!g)i=i+1|0;else break}}while(0);if((Gc(l)|0)!=100){i=g;break}}}else{h=0;i=0}do if(f){f=c[l>>2]|0;n=l+136|0;k=c[n+4>>2]|0;if((k|0)>0|(k|0)==0&(c[n>>2]|0)>>>0>0)hc(f,l);g=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;n=l+64|0;c[n>>2]=0;c[n+4>>2]=0;if((g|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=7;break}else{f=c[f+68>>2]&g;break}}else f=0;while(0);j=h;i=(i|0)==0?f:i}f=d+248|0;g=c[f>>2]|0;if(!g){c[f>>2]=0;Fr(d);n=(i|0)==0;e=(e|0)!=0;e=e&n;n=(j|0)!=0;n=e&n;n=n?101:i;Ra=m;return n|0}h=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);c[f>>2]=0;Fr(d);n=(i|0)==0;e=(e|0)!=0;e=e&n;n=(j|0)!=0;n=e&n;n=n?101:i;Ra=m;return n|0}n=g;if((c[h+304>>2]|0)>>>0<=n>>>0?(c[h+308>>2]|0)>>>0>n>>>0:0){n=h+300|0;c[g>>2]=c[n>>2];c[n>>2]=g;c[f>>2]=0;Fr(d);n=(i|0)==0;e=(e|0)!=0;e=e&n;n=(j|0)!=0;n=e&n;n=n?101:i;Ra=m;return n|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);c[f>>2]=0;Fr(d);n=(i|0)==0;e=(e|0)!=0;e=e&n;n=(j|0)!=0;n=e&n;n=n?101:i;Ra=m;return n|0}else{n=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);c[f>>2]=0;Fr(d);n=(i|0)==0;e=(e|0)!=0;e=e&n;n=(j|0)!=0;n=e&n;n=n?101:i;Ra=m;return n|0}return 0}function Er(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ca=Ra;Ra=Ra+128|0;R=ca+40|0;Q=ca+32|0;P=ca+24|0;O=ca+16|0;w=ca+8|0;i=ca;S=ca+120|0;x=ca+104|0;aa=ca+48|0;h=aa;j=h+56|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));h=Xp(d,e,f,g,0,0,1,0,aa)|0;ba=aa+4|0;a:do if(!h){q=c[ba>>2]|0;if(!q){h=0;j=c[aa>>2]|0;i=aa;Z=264;break}N=(g|0)!=-1;if(N){j=d+116|0;h=c[j>>2]|0;c[S>>2]=h;if(!h){Y=c[d+20>>2]|0;c[i>>2]=c[d+16>>2];c[i+4>>2]=Y;i=Bb(52072,i)|0;if(!i){h=7;Z=237;break}h=qd(c[d+12>>2]|0,i,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{Y=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}i=c[S>>2]|0;c[j>>2]=i;if(!h)h=i;else{Z=237;break}}n=h;o=d+252|0;i=c[o>>2]|0;p=((e|0)<0)<<31>>31;i=Yv(i|0,((i|0)<0)<<31>>31|0,e|0,p|0)|0;m=((f|0)<0)<<31>>31;i=Sv(i|0,L()|0,f|0,m|0)|0;i=cw(i|0,L()|0,10)|0;j=L()|0;do if(!(Vc(n,1)|0)){k=c[n+100>>2]|0;l=k+8|0;if(!(b[l>>1]&9216)){Y=k;c[Y>>2]=i;c[Y+4>>2]=j;b[l>>1]=4;break}else{Pg(k,i,j);break}}while(0);j=c[o>>2]|0;j=Yv(j|0,((j|0)<0)<<31>>31|0,e|0,p|0)|0;j=Sv(j|0,L()|0,f|0,m|0)|0;j=cw(j|0,L()|0,10)|0;i=L()|0;j=j|1023;do if(!(Vc(n,2)|0)){l=c[n+100>>2]|0;k=l+40|0;l=l+48|0;if(!(b[l>>1]&9216)){Y=k;c[Y>>2]=j;c[Y+4>>2]=i;b[l>>1]=4;break}else{Pg(k,j,i);break}}while(0);if((Gc(n)|0)==100){k=Oc(n,0)|0;j=L()|0}else{k=0;j=0}do if(h|0){i=c[n>>2]|0;Y=n+136|0;X=c[Y+4>>2]|0;if((X|0)>0|(X|0)==0&(c[Y>>2]|0)>>>0>0)hc(i,n);h=kc(n)|0;c[n+20>>2]=770837923;c[n+36>>2]=-1;c[n+40>>2]=0;a[n+146>>0]=2;c[n+44>>2]=0;c[n+32>>2]=1;a[n+147>>0]=-1;c[n+48>>2]=0;Y=n+64|0;c[Y>>2]=0;c[Y+4>>2]=0;if(!((h|0)==3082|(a[i+81>>0]|0)!=0)){h=c[i+68>>2]&h;if(!h)break;else{Z=237;break a}}else{og(i);h=7;Z=237;break a}}while(0);if((g|0)==-2){if((q|0)==1?(c[(c[c[aa>>2]>>2]|0)+56>>2]|0)==0:0){h=101;Z=237;break};c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;W=0;Y=k;X=j;V=j;U=k;K=1;i=3;h=x+12|0}else{q=e;n=p;p=f;u=j;v=k;Z=33}}else{o=d+252|0;q=e;n=((e|0)<0)<<31>>31;p=f;m=((f|0)<0)<<31>>31;u=0;v=0;Z=33}do if((Z|0)==33){r=g+1|0;s=c[o>>2]|0;s=Yv(q|0,n|0,s|0,((s|0)<0)<<31>>31|0)|0;s=Sv(s|0,L()|0,p|0,m|0)|0;s=cw(s|0,L()|0,10)|0;j=((r|0)<0)<<31>>31;s=Sv(s|0,L()|0,r|0,j|0)|0;t=L()|0;k=d+88|0;l=c[k>>2]|0;c[S>>2]=l;if(!l){i=c[d+20>>2]|0;c[w>>2]=c[d+16>>2];c[w+4>>2]=i;i=Bb(51533,w)|0;if(!i){h=7;Z=237;break a}h=qd(c[d+12>>2]|0,i,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{Y=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}l=c[S>>2]|0;c[k>>2]=l;if(h|0){Z=237;break a}k=c[o>>2]|0;k=Yv(q|0,n|0,k|0,((k|0)<0)<<31>>31|0)|0;k=Sv(k|0,L()|0,p|0,m|0)|0;k=cw(k|0,L()|0,10)|0;j=Sv(k|0,L()|0,r|0,j|0)|0;k=L()|0}else{j=s;k=t}m=l;do if(!(Vc(m,1)|0)){h=c[m+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){Y=h;c[Y>>2]=j;c[Y+4>>2]=k;b[i>>1]=4;break}else{Pg(h,j,k);break}}while(0);if((Gc(m)|0)==100)j=Nc(m,0)|0;else j=0;do if(l|0){h=c[m>>2]|0;Y=m+136|0;X=c[Y+4>>2]|0;if((X|0)>0|(X|0)==0&(c[Y>>2]|0)>>>0>0)hc(h,m);i=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;Y=m+64|0;c[Y>>2]=0;c[Y+4>>2]=0;if(!((i|0)==3082|(a[h+81>>0]|0)!=0)){h=c[h+68>>2]&i;if(!h)break;else{Z=237;break a}}else{og(h);h=7;Z=237;break a}}while(0);if((j|0)>15){h=Er(d,e,f,r)|0;if(!h){i=N&((t|0)>(u|0)|(t|0)==(u|0)&s>>>0>v>>>0);h=0;Z=59}else{Z=237;break a}}else if(N){i=(t|0)>(u|0)|(t|0)==(u|0)&s>>>0>v>>>0;h=j;Z=59}else{c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;h=j;j=x+12|0}if((Z|0)==59){c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;j=x+12|0;if(i){W=h;Y=s;X=t;V=u;U=v;K=0;i=3;h=j;break}}W=h;Y=s;X=t;V=u;U=v;K=0;i=1;h=j}while(0);c[h>>2]=i;c[aa+12>>2]=x;h=eq(d,aa,0,0)|0;if(!h){C=aa+40|0;D=aa+44|0;E=aa+48|0;F=aa+52|0;G=d+228|0;H=d+96|0;I=d+16|0;J=d+20|0;M=d+12|0;T=d+52|0;i=0;j=0;b:while(1){h=gq(d,aa)|0;switch(h|0){case 0:{Z=130;break b}case 100:break;default:{Z=223;break b}}A=c[C>>2]|0;B=c[D>>2]|0;y=c[E>>2]|0;z=c[F>>2]|0;if(!i){if(mb()|0){h=7;Z=237;break a}if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](64)|0;if(!h){h=7;Z=237;break a}else l=h}else{h=Wa[c[29356>>2]&127](64)|0;if((c[14985]|0)>>>0<64)c[14985]=64;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){x=c[14978]|0;w=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;v=L()|0;c[14768]=((v|0)<0|(v|0)==0&w>>>0<=x>>>0)&1}i=Wa[c[29340>>2]&127](h)|0;if(!i){h=7;Z=237;break a}h=Wa[c[29352>>2]&127](i)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;l=i}else l=i}h=l;j=h+64|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(j|0));x=nb(c[G>>2]|0)|0;c[l+48>>2]=x;if(!x){Z=222;break}c[l+40>>2]=c[G>>2];h=c[H>>2]|0;c[S>>2]=h;if(!h){i=c[J>>2]|0;c[O>>2]=c[I>>2];c[O+4>>2]=i;i=Bb(51657,O)|0;if(!i){Z=81;break}h=qd(c[M>>2]|0,i,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{x=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}i=c[S>>2]|0;c[H>>2]=i;if(!h)h=i;else{Z=224;break}}j=h;if((Gc(j)|0)==100){v=Oc(j,0)|0;w=L()|0;x=l+16|0;c[x>>2]=v;c[x+4>>2]=w;x=l+8|0;c[x>>2]=v;c[x+4>>2]=w}if(h){h=c[j>>2]|0;x=j+136|0;w=c[x+4>>2]|0;if((w|0)>0|(w|0)==0&(c[x>>2]|0)>>>0>0)hc(h,j);i=kc(j)|0;c[j+20>>2]=770837923;c[j+36>>2]=-1;c[j+40>>2]=0;a[j+146>>0]=2;c[j+44>>2]=0;c[j+32>>2]=1;a[j+147>>0]=-1;c[j+48>>2]=0;x=j+64|0;c[x>>2]=0;c[x+4>>2]=0;if((i|0)==3082|(a[h+81>>0]|0)!=0){Z=92;break}h=c[h+68>>2]&i;if(h){Z=225;break}else{i=l;j=l}}else{i=l;j=l}}v=i+44|0;q=c[v>>2]|0;w=i+24|0;k=c[w>>2]|0;x=i+28|0;l=c[x>>2]|0;c:do if((l|0)>0){h=0;while(1){if((a[k+h>>0]|0)!=(a[A+h>>0]|0)){o=h;break c}h=h+1|0;if((h|0)>=(l|0)){o=h;break}}}else o=0;while(0);p=B-o|0;if((p|0)<1){h=267;Z=223;break}n=0;h=o;k=((o|0)<0)<<31>>31;do{n=n+1|0;h=bw(h|0,k|0,7)|0;k=L()|0}while(!((h|0)==0&(k|0)==0));m=0;h=p;k=((p|0)<0)<<31>>31;do{m=m+1|0;h=bw(h|0,k|0,7)|0;k=L()|0}while(!((h|0)==0&(k|0)==0));u=((z|0)<0)<<31>>31;h=0;k=z;l=u;do{h=h+1|0;k=bw(k|0,l|0,7)|0;l=L()|0}while(!((k|0)==0&(l|0)==0));h=p+z+n+m+h|0;if((q|0)>0?(h+q|0)>(c[G>>2]|0):0){s=i+16|0;h=s;t=c[h>>2]|0;h=c[h+4>>2]|0;p=Sv(t|0,h|0,1,0)|0;r=L()|0;c[s>>2]=p;c[s+4>>2]=r;h=Hr(d,t,h,c[i+48>>2]|0,q)|0;if(h|0){k=i;break}c[T>>2]=(c[T>>2]|0)+1;h=Ir(d,i,A,o+1|0)|0;if(h|0){k=i;break}c[x>>2]=0;m=0;h=B;k=((B|0)<0)<<31>>31;while(1){h=bw(h|0,k|0,7)|0;k=L()|0;if((h|0)==0&(k|0)==0)break;else m=m+1|0}l=0;h=z;k=u;do{l=l+1|0;h=bw(h|0,k|0,7)|0;k=L()|0}while(!((h|0)==0&(k|0)==0));s=0;q=0;l=B+2+z+m+l|0;r=B}else{s=o;l=h;r=p}k=i+56|0;h=k;h=Sv(c[h>>2]|0,c[h+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;t=L()|0;c[k>>2]=h;c[k+4>>2]=t;k=i+40|0;t=i+48|0;h=c[t>>2]|0;if((l|0)>(c[k>>2]|0)){if(mb()|0){k=i;h=7;break}h=sb(h,(l|0)>0?l:0,0)|0;if(!h){k=i;h=7;break}c[t>>2]=h;c[k>>2]=l}k=h+q|0;h=k;m=s;o=((s|0)<0)<<31>>31;while(1){l=m&255;n=h+1|0;a[h>>0]=l|-128;m=bw(m|0,o|0,7)|0;o=L()|0;if((m|0)==0&(o|0)==0)break;else h=n}a[h>>0]=l&127;k=n-k+q|0;l=(c[t>>2]|0)+k|0;h=l;n=r;p=((r|0)<0)<<31>>31;while(1){m=n&255;o=h+1|0;a[h>>0]=m|-128;n=bw(n|0,p|0,7)|0;p=L()|0;if((n|0)==0&(p|0)==0)break;else h=o}a[h>>0]=m&127;n=o-l+k|0;ew((c[t>>2]|0)+n|0,A+s|0,r|0)|0;n=n+r|0;o=(c[t>>2]|0)+n|0;m=o;p=z;l=u;while(1){h=p&255;k=m+1|0;a[m>>0]=h|-128;p=bw(p|0,l|0,7)|0;l=L()|0;if((p|0)==0&(l|0)==0)break;else m=k}a[m>>0]=h&127;k=k-o+n|0;ew((c[t>>2]|0)+k|0,y|0,z|0)|0;c[v>>2]=k+z;k=i+32|0;if((c[k>>2]|0)<(B|0)){l=i+36|0;h=c[l>>2]|0;m=B<<1;if(mb()|0){k=i;h=7;break}h=sb(h,(m|0)>0?m:0,0)|0;if(!h){k=i;h=7;break}c[k>>2]=m;c[l>>2]=h;c[w>>2]=h}else h=c[w>>2]|0;ew(h|0,A|0,B|0)|0;c[x>>2]=B}d:do if((Z|0)==81){k=l;h=7;j=l}else if((Z|0)==92){og(h);k=l;h=7;j=l}else if((Z|0)==130){if(N){s=c[aa>>2]|0;t=c[ba>>2]|0;do if((t|0)>0){r=d+124|0;q=0;e:while(1){p=c[s+(q<<2)>>2]|0;m=p+8|0;l=m;h=c[l>>2]|0;l=c[l+4>>2]|0;do if((h|0)==0&(l|0)==0)h=0;else{k=c[r>>2]|0;c[S>>2]=k;if(!k){k=c[J>>2]|0;c[P>>2]=c[I>>2];c[P+4>>2]=k;k=Bb(52181,P)|0;if(!k){Z=137;break e}h=qd(c[M>>2]|0,k,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{Z=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[S>>2]|0;c[r>>2]=k;if(h|0){Z=223;break d}l=m;h=c[l>>2]|0;l=c[l+4>>2]|0}o=k;do if(!(Vc(o,1)|0)){m=c[o+100>>2]|0;n=m+8|0;if(!(b[n>>1]&9216)){Z=m;c[Z>>2]=h;c[Z+4>>2]=l;b[n>>1]=4;break}else{Pg(m,h,l);break}}while(0);m=p+24|0;l=c[m>>2]|0;m=c[m+4>>2]|0;if(Vc(o,2)|0){Gc(o)|0;if(!k){h=0;break}}else{k=c[o+100>>2]|0;h=k+40|0;k=k+48|0;if(!(b[k>>1]&9216)){Z=h;c[Z>>2]=l;c[Z+4>>2]=m;b[k>>1]=4}else Pg(h,l,m);Gc(o)|0}k=c[o>>2]|0;Z=o+136|0;O=c[Z+4>>2]|0;if((O|0)>0|(O|0)==0&(c[Z>>2]|0)>>>0>0)hc(k,o);h=kc(o)|0;c[o+20>>2]=770837923;c[o+36>>2]=-1;c[o+40>>2]=0;a[o+146>>0]=2;c[o+44>>2]=0;c[o+32>>2]=1;a[o+147>>0]=-1;c[o+48>>2]=0;Z=o+64|0;c[Z>>2]=0;c[Z+4>>2]=0;if((h|0)==3082|(a[k+81>>0]|0)!=0){Z=156;break e}h=c[k+68>>2]&h}while(0);q=q+1|0;k=(h|0)==0;if(!((q|0)<(t|0)&k)){Z=159;break}}if((Z|0)==137){h=7;Z=223;break d}else if((Z|0)==156){og(k);h=7;Z=223;break d}else if((Z|0)==159)if(k)break;else{Z=223;break d}}while(0);do if(K){l=d+160|0;h=c[l>>2]|0;c[S>>2]=h;if(!h){k=c[J>>2]|0;c[Q>>2]=c[I>>2];c[Q+4>>2]=k;k=Bb(52491,Q)|0;if(!k){h=7;Z=223;break d}h=qd(c[M>>2]|0,k,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{R=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[S>>2]|0;c[l>>2]=k;if(!h)h=k;else{Z=223;break d}}l=h;k=d+252|0;o=c[k>>2]|0;m=((e|0)<0)<<31>>31;o=Yv(o|0,((o|0)<0)<<31>>31|0,e|0,m|0)|0;n=((f|0)<0)<<31>>31;o=Sv(o|0,L()|0,f|0,n|0)|0;o=cw(o|0,L()|0,10)|0;p=L()|0;do if(!(Vc(l,1)|0)){q=c[l+100>>2]|0;r=q+8|0;if(!(b[r>>1]&9216)){S=q;c[S>>2]=o;c[S+4>>2]=p;b[r>>1]=4;break}else{Pg(q,o,p);break}}while(0);k=c[k>>2]|0;m=Yv(k|0,((k|0)<0)<<31>>31|0,e|0,m|0)|0;m=Sv(m|0,L()|0,f|0,n|0)|0;m=cw(m|0,L()|0,10)|0;k=L()|0;m=m|1023;if(!(Vc(l,2)|0)){o=c[l+100>>2]|0;n=o+40|0;o=o+48|0;if(!(b[o>>1]&9216)){f=n;c[f>>2]=m;c[f+4>>2]=k;b[o>>1]=4;break}else{Pg(n,m,k);break}}}else{l=d+120|0;h=c[l>>2]|0;c[S>>2]=h;if(!h){k=c[J>>2]|0;c[R>>2]=c[I>>2];c[R+4>>2]=k;k=Bb(52138,R)|0;if(!k){h=7;Z=223;break d}h=qd(c[M>>2]|0,k,-1,133,0,S,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{R=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[S>>2]|0;c[l>>2]=k;if(!h)h=k;else{Z=223;break d}}l=h;k=c[d+252>>2]|0;k=Yv(k|0,((k|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0;k=Sv(k|0,L()|0,f|0,((f|0)<0)<<31>>31|0)|0;k=cw(k|0,L()|0,10)|0;k=Sv(k|0,L()|0,g|0,((g|0)<0)<<31>>31|0)|0;m=L()|0;if(!(Vc(l,1)|0)){n=c[l+100>>2]|0;o=n+8|0;if(!(b[o>>1]&9216)){f=n;c[f>>2]=k;c[f+4>>2]=m;b[o>>1]=4;break}else{Pg(n,k,m);break}}}while(0);Gc(l)|0;do if(h){h=c[l>>2]|0;f=l+136|0;e=c[f+4>>2]|0;if((e|0)>0|(e|0)==0&(c[f>>2]|0)>>>0>0)hc(h,l);k=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;f=l+64|0;c[f>>2]=0;c[f+4>>2]=0;if((k|0)==3082|(a[h+81>>0]|0)!=0){og(h);h=7;Z=223;break d}else{h=c[h+68>>2]&k;break}}else h=0;while(0);if(!((i|0)!=0&(h|0)==0)){Z=223;break}}else if(!i){h=0;Z=237;break a}f:do if(!(c[i>>2]|0)){h=i+56|0;h=Jr(d,Y,X,W,0,0,0,0,0,0,c[h>>2]|0,c[h+4>>2]|0,c[i+48>>2]|0,c[i+44>>2]|0)|0}else{k=i+16|0;B=k;A=c[B>>2]|0;B=c[B+4>>2]|0;e=Sv(A|0,B|0,1,0)|0;f=L()|0;h=k;c[h>>2]=e;c[h+4>>2]=f;h=Hr(d,A,B,c[i+48>>2]|0,c[i+44>>2]|0)|0;g:do if(!h){m=c[i>>2]|0;z=i+8|0;o=z;r=c[o>>2]|0;o=c[o+4>>2]|0;q=k;l=c[q>>2]|0;q=c[q+4>>2]|0;h=c[m>>2]|0;if(!h){k=m;s=1;u=l;t=q;q=o}else{p=m;y=1;x=m;while(1){k=c[p+8>>2]|0;if(!k){m=l;n=q;k=h}else{w=y&255;m=l;n=q;v=o;do{h=0;o=r;p=v;while(1){o=bw(o|0,p|0,7)|0;p=L()|0;if((o|0)==0&(p|0)==0)break;else h=h+1|0}o=9-h|0;p=k+36|0;a[(c[p>>2]|0)+o>>0]=w;h=(c[p>>2]|0)+(o+1)|0;t=r;u=v;while(1){s=t&255;a[h>>0]=s|-128;t=bw(t|0,u|0,7)|0;u=L()|0;if((t|0)==0&(u|0)==0)break;else h=h+1|0}a[h>>0]=s&127;h=Hr(d,m,n,(c[p>>2]|0)+o|0,(c[k+32>>2]|0)-o|0)|0;m=Sv(m|0,n|0,1,0)|0;n=L()|0;o=(c[k+12>>2]|0)+1|0;r=Sv(r|0,v|0,o|0,((o|0)<0)<<31>>31|0)|0;v=L()|0;k=c[k+4>>2]|0;o=(h|0)==0}while(o&(k|0)!=0);if(!o)break g;k=c[x>>2]|0}y=y+1|0;h=c[k>>2]|0;if(!h)break;else{o=q;r=l;p=k;l=m;q=n;x=k}}s=y&255;u=m;t=n;r=l}h=0;l=r;m=q;while(1){l=bw(l|0,m|0,7)|0;m=L()|0;if((l|0)==0&(m|0)==0)break;else h=h+1|0}o=9-h|0;p=k+36|0;a[(c[p>>2]|0)+o>>0]=s;n=(c[p>>2]|0)+(o+1)|0;m=r;l=q;while(1){h=m&255;a[n>>0]=h|-128;m=bw(m|0,l|0,7)|0;l=L()|0;if((m|0)==0&(l|0)==0)break;else n=n+1|0}a[n>>0]=h&127;e=Sv(u|0,t|0,-1,-1)|0;f=L()|0;S=z;h=i+56|0;h=Jr(d,Y,X,W,c[S>>2]|0,c[S+4>>2]|0,A,B,e,f,c[h>>2]|0,c[h+4>>2]|0,(c[p>>2]|0)+o|0,(c[k+32>>2]|0)-o|0)|0;break f}while(0);c[T>>2]=(c[T>>2]|0)+1;Z=223;break d}while(0);c[T>>2]=(c[T>>2]|0)+1;if(!h)if((g|0)==-1|((X|0)<(V|0)|(X|0)==(V|0)&Y>>>0>>0)){h=i+56|0;k=i;h=Gr(d,Y,X,c[h>>2]|0,c[h+4>>2]|0)|0}else{k=i;h=0}else k=i}else if((Z|0)==222){i=l;h=7;j=l;Z=223}else if((Z|0)==224){k=l;j=l}else if((Z|0)==225){k=l;j=l}while(0);if((Z|0)==223)if(!i){Z=237;break}else k=i;i=c[k+48>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{d=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);i=c[k+36>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{d=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);Kr(c[k>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](j);Z=237;break}else{Z=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);Z=237;break}}else Z=237}else Z=237;while(0);if((Z|0)==237){k=c[ba>>2]|0;j=c[aa>>2]|0;if((k|0)>0){i=0;do{l=c[j+(i<<2)>>2]|0;do if(l|0){do if((c[l+56>>2]|0)==0?(_=c[l+64>>2]|0,_|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](_);break}else{d=Wa[c[29352>>2]&127](_)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](_);break}while(0);do if((a[l+5>>0]|0)==0?($=c[l+40>>2]|0,$|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127]($);break}else{d=Wa[c[29352>>2]&127]($)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127]($);break}while(0);m=c[l+52>>2]|0;do if(m|0){n=c[m+20>>2]|0;gc(c[m+16>>2]|0)|0;if(n|0){if(c[n+480>>2]|0){Xd(n,m);break}d=m;if((c[n+304>>2]|0)>>>0<=d>>>0?(c[n+308>>2]|0)>>>0>d>>>0:0){d=n+300|0;c[m>>2]=c[d>>2];c[d>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{d=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{d=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);i=i+1|0}while((i|0)!=(k|0));i=aa;Z=265}else{i=aa;Z=264}}if((Z|0)==264)if(!j)j=h;else Z=265;do if((Z|0)==265)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);j=h;break}else{$=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);j=h;break}while(0);h=c[aa+16>>2]|0;if(!h){c[ba>>2]=0;c[i>>2]=0;Ra=ca;return j|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);c[ba>>2]=0;c[i>>2]=0;Ra=ca;return j|0}else{aa=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);c[ba>>2]=0;c[i>>2]=0;Ra=ca;return j|0}return 0}function Fr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=b+252|0;if((c[h>>2]|0)<=0){k=b+264|0;c[k>>2]=0;return}i=b+256|0;g=0;do{k=c[i>>2]|0;f=k+(g*24|0)+12|0;d=c[f>>2]|0;if(!d)d=0;else{do{e=c[d+8>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);d=c[d>>2]|0}while((d|0)!=0);d=c[f>>2]|0}c[f>>2]=0;e=k+(g*24|0)+20|0;f=c[e>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{l=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);c[e>>2]=0;c[k+(g*24|0)+16>>2]=0;if(d|0){f=k+(g*24|0)+5|0;do{e=d;d=c[d>>2]|0;do if(a[f>>0]|0?(j=c[e+12>>2]|0,j|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{l=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{l=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}}while((d|0)!=0)}c[k+(g*24|0)+8>>2]=0;g=g+1|0}while((g|0)<(c[h>>2]|0));l=b+264|0;c[l>>2]=0;return}function Gr(d,f,g,h,i){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=Ra;Ra=Ra+32|0;w=A+16|0;v=A+8|0;k=A;x=A+24|0;l=d+204|0;j=c[l>>2]|0;c[x>>2]=j;if(!j){j=c[d+20>>2]|0;c[k>>2]=c[d+16>>2];c[k+4>>2]=j;j=Bb(53301,k)|0;if(!j){g=7;Ra=A;return g|0}k=qd(c[d+12>>2]|0,j,-1,133,0,x,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{z=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}j=c[x>>2]|0;c[l>>2]=j;if(k){g=k;Ra=A;return g|0}}n=Wv(f|0,g|0,1024,0)|0;n=cw(n|0,L()|0,10)|0;m=L()|0;n=n|1023;s=Yv(h|0,i|0,3,0)|0;s=Wv(s|0,L()|0,2,0)|0;t=L()|0;z=j;k=Sv(f|0,g|0,1,0)|0;l=L()|0;do if(!(Vc(z,1)|0)){h=c[z+100>>2]|0;i=h+8|0;if(!(b[i>>1]&9216)){y=h;c[y>>2]=k;c[y+4>>2]=l;b[i>>1]=4;break}else{Pg(h,k,l);break}}while(0);do if(!(Vc(z,2)|0)){l=c[z+100>>2]|0;k=l+40|0;l=l+48|0;if(!(b[l>>1]&9216)){y=k;c[y>>2]=n;c[y+4>>2]=m;b[l>>1]=4;break}else{Pg(k,n,m);break}}while(0);a:do if((Gc(z)|0)==100){p=z+120|0;q=z+144|0;r=z+40|0;if(!j){g=0;Ra=A;return g|0}while(1){k=c[p>>2]|0;if((k|0)!=0?(e[q>>1]|0)>2:0)k=k+80|0;else{k=c[z>>2]|0;c[k+64>>2]=25;Ne(k,25);k=29576}l=b[k+8>>1]|0;if((l&514)==514?(a[k+10>>0]|0)==1:0)o=c[k+16>>2]|0;else if(!(l&1))o=Gg(k,1)|0;else o=0;k=c[z>>2]|0;l=c[r>>2]|0;if((l|0)==3082|(a[k+81>>0]|0)!=0){og(k);k=7}else k=c[k+68>>2]&l;c[r>>2]=k;if(!o){l=0;break a}if(((a[o>>0]|0)+-48&255)<10){k=0;do k=k+1|0;while(((a[o+k>>0]|0)+-48&255)<10)}else k=0;b:while(1){l=a[o+k>>0]|0;switch(l<<24>>24){case 45:{u=40;break b}case 32:break;default:{m=1;n=0;break b}}k=k+1|0}if((u|0)==40){u=0;l=k+1|0;k=l;l=a[o+l>>0]|0;m=-1;n=-1}if((l+-48&255)<10){h=0;i=0;do{i=Yv(h|0,i|0,10,0)|0;h=(l&255)+-48|0;h=Sv(i|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;i=L()|0;k=k+1|0;l=a[o+k>>0]|0}while((l+-48&255)<10);l=h;k=i}else{l=0;k=0}l=Yv(l|0,k|0,m|0,n|0)|0;y=L()|0;k=(y|0)<0|(y|0)==0&l>>>0<1;l=(y|0)>(t|0)|(y|0)==(t|0)&l>>>0>s>>>0;if(k|l){u=45;break}if((Gc(z)|0)!=100){u=46;break}}if((u|0)==45){l=(k|l)^1;break}else if((u|0)==46){l=(k|l)^1;break}}else l=0;while(0);do if(!j){j=0;y=1}else{j=c[z>>2]|0;y=z+136|0;u=c[y+4>>2]|0;if((u|0)>0|(u|0)==0&(c[y>>2]|0)>>>0>0)hc(j,z);k=kc(z)|0;c[z+20>>2]=770837923;c[z+36>>2]=-1;c[z+40>>2]=0;a[z+146>>0]=2;c[z+44>>2]=0;c[z+32>>2]=1;a[z+147>>0]=-1;c[z+48>>2]=0;y=z+64|0;c[y>>2]=0;c[y+4>>2]=0;if(!((k|0)==3082|(a[j+81>>0]|0)!=0)){j=c[j+68>>2]&k;y=0;break}og(j);g=7;Ra=A;return g|0}while(0);if(!(l&(j|0)==0)){g=j;Ra=A;return g|0}l=d+208|0;j=c[l>>2]|0;c[x>>2]=j;if(!j){j=c[d+20>>2]|0;c[v>>2]=c[d+16>>2];c[v+4>>2]=j;j=Bb(53407,v)|0;if(!j){g=7;Ra=A;return g|0}k=qd(c[d+12>>2]|0,j,-1,133,0,x,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{v=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}j=c[x>>2]|0;c[l>>2]=j;if(!k)h=j;else{g=k;Ra=A;return g|0}}else h=j;l=d+212|0;j=c[l>>2]|0;c[x>>2]=j;if(!j){j=c[d+20>>2]|0;c[w>>2]=c[d+16>>2];c[w+4>>2]=j;j=Bb(53480,w)|0;if(!j){g=7;Ra=A;return g|0}k=qd(c[d+12>>2]|0,j,-1,133,0,x,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{d=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}j=c[x>>2]|0;c[l>>2]=j;if(!k)x=j;else{g=k;Ra=A;return g|0}}else x=j;do if(!(Vc(z,1)|0)){j=c[z+100>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){d=j;c[d>>2]=f;c[d+4>>2]=g;b[k>>1]=4;break}else{Pg(j,f,g);break}}while(0);c:do if((Gc(z)|0)==100){m=h;n=m+100|0;o=m+136|0;p=m+20|0;q=m+36|0;r=m+40|0;s=m+146|0;t=m+44|0;u=m+32|0;v=m+147|0;w=m+48|0;d=m+64|0;d:do if(!h){i=0;while(1){do if(!(Vc(m,1)|0)){j=c[n>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){h=j;c[h>>2]=i;c[h+4>>2]=0;b[k>>1]=4;break}else{Pg(j,i,0);break}}while(0);j=Nc(z,0)|0;k=((j|0)<0)<<31>>31;do if(!(Vc(m,2)|0)){h=c[n>>2]|0;l=h+40|0;h=h+48|0;if(!(b[h>>1]&9216)){c[l>>2]=j;c[l+4>>2]=k;b[h>>1]=4;break}else{Pg(l,j,k);break}}while(0);j=Nc(z,1)|0;k=((j|0)<0)<<31>>31;if(!(Vc(m,3)|0)){h=c[n>>2]|0;l=h+80|0;h=h+88|0;if(!(b[h>>1]&9216)){c[l>>2]=j;c[l+4>>2]=k;b[h>>1]=4}else Pg(l,j,k);Gc(m)|0;j=c[m>>2]|0;h=o;l=c[h+4>>2]|0;if((l|0)>0|(l|0)==0&(c[h>>2]|0)>>>0>0)hc(j,m);k=kc(m)|0;c[p>>2]=770837923;c[q>>2]=-1;c[r>>2]=0;a[s>>0]=2;c[t>>2]=0;c[u>>2]=1;a[v>>0]=-1;c[w>>2]=0;h=d;c[h>>2]=0;c[h+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){u=113;break d}j=c[j+68>>2]&k;if(j|0){u=115;break d}}else Gc(m)|0;if((Gc(z)|0)==100)i=i+1|0;else break c}}else{i=0;while(1){do if(!(Vc(m,1)|0)){j=c[n>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){h=j;c[h>>2]=i;c[h+4>>2]=0;b[k>>1]=4;break}else{Pg(j,i,0);break}}while(0);j=Nc(z,0)|0;k=((j|0)<0)<<31>>31;do if(!(Vc(m,2)|0)){h=c[n>>2]|0;l=h+40|0;h=h+48|0;if(!(b[h>>1]&9216)){c[l>>2]=j;c[l+4>>2]=k;b[h>>1]=4;break}else{Pg(l,j,k);break}}while(0);j=Nc(z,1)|0;k=((j|0)<0)<<31>>31;if(!(Vc(m,3)|0)){h=c[n>>2]|0;l=h+80|0;h=h+88|0;if(!(b[h>>1]&9216)){c[l>>2]=j;c[l+4>>2]=k;b[h>>1]=4}else Pg(l,j,k);Gc(m)|0}else Gc(m)|0;j=c[m>>2]|0;h=o;l=c[h+4>>2]|0;if((l|0)>0|(l|0)==0&(c[h>>2]|0)>>>0>0)hc(j,m);k=kc(m)|0;c[p>>2]=770837923;c[q>>2]=-1;c[r>>2]=0;a[s>>0]=2;c[t>>2]=0;c[u>>2]=1;a[v>>0]=-1;c[w>>2]=0;h=d;c[h>>2]=0;c[h+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){u=113;break d}j=c[j+68>>2]&k;if(j|0){u=115;break d}if((Gc(z)|0)==100)i=i+1|0;else break c}}while(0);if((u|0)==113){og(j);if(y){g=7;Ra=A;return g|0}else k=7}else if((u|0)==115)if(y){g=j;Ra=A;return g|0}else k=j;j=c[z>>2]|0;g=z+136|0;f=c[g+4>>2]|0;if((f|0)>0|(f|0)==0&(c[g>>2]|0)>>>0>0)hc(j,z);g=kc(z)|0;c[z+20>>2]=770837923;c[z+36>>2]=-1;c[z+40>>2]=0;a[z+146>>0]=2;c[z+44>>2]=0;c[z+32>>2]=1;a[z+147>>0]=-1;c[z+48>>2]=0;f=z+64|0;c[f>>2]=0;c[f+4>>2]=0;if(!((g|0)==3082|(a[j+81>>0]|0)!=0)){g=k;Ra=A;return g|0}og(j);g=k;Ra=A;return g|0}while(0);do if(!y){j=c[z>>2]|0;y=z+136|0;d=c[y+4>>2]|0;if((d|0)>0|(d|0)==0&(c[y>>2]|0)>>>0>0)hc(j,z);k=kc(z)|0;c[z+20>>2]=770837923;c[z+36>>2]=-1;c[z+40>>2]=0;a[z+146>>0]=2;c[z+44>>2]=0;c[z+32>>2]=1;a[z+147>>0]=-1;c[z+48>>2]=0;z=z+64|0;c[z>>2]=0;c[z+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);g=7;Ra=A;return g|0}else{j=c[j+68>>2]&k;if(!j)break;Ra=A;return j|0}}while(0);l=x;if(Vc(l,1)|0){Gc(l)|0;if(!x){g=0;Ra=A;return g|0}}else{j=c[l+100>>2]|0;k=j+8|0;if(!(b[k>>1]&9216)){z=j;c[z>>2]=f;c[z+4>>2]=g;b[k>>1]=4}else Pg(j,f,g);Gc(l)|0}j=c[l>>2]|0;g=l+136|0;f=c[g+4>>2]|0;if((f|0)>0|(f|0)==0&(c[g>>2]|0)>>>0>0)hc(j,l);k=kc(l)|0;c[l+20>>2]=770837923;c[l+36>>2]=-1;c[l+40>>2]=0;a[l+146>>0]=2;c[l+44>>2]=0;c[l+32>>2]=1;a[l+147>>0]=-1;c[l+48>>2]=0;g=l+64|0;c[g>>2]=0;c[g+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);g=7;Ra=A;return g|0}else{g=c[j+68>>2]&k;Ra=A;return g|0}return 0}function Hr(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;j=o;k=o+8|0;l=d+92|0;i=c[l>>2]|0;c[k>>2]=i;if(!i){i=c[d+20>>2]|0;c[j>>2]=c[d+16>>2];c[j+4>>2]=i;i=Bb(51598,j)|0;if(!i){n=7;Ra=o;return n|0}j=qd(c[d+12>>2]|0,i,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{d=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}i=c[k>>2]|0;c[l>>2]=i;if(j){n=j;Ra=o;return n|0}}k=i;do if(!(Vc(k,1)|0)){j=c[k+100>>2]|0;d=j+8|0;if(!(b[d>>1]&9216)){l=j;c[l>>2]=e;c[l+4>>2]=f;b[d>>1]=4;break}else{Pg(j,e,f);break}}while(0);if((g|0)==0|(Vc(k,2)|0)!=0){Gc(k)|0;if(!i)i=0;else n=19}else{i=yc((c[k+100>>2]|0)+40|0,g,h,0,0)|0;if(i|0?(m=c[k>>2]|0,c[m+64>>2]=i,Ne(m,i),m=c[k>>2]|0,(i|0)==3082|(a[m+81>>0]|0)!=0):0)og(m);Gc(k)|0;n=19}do if((n|0)==19){i=c[k>>2]|0;n=k+136|0;m=c[n+4>>2]|0;if((m|0)>0|(m|0)==0&(c[n>>2]|0)>>>0>0)hc(i,k);j=kc(k)|0;c[k+20>>2]=770837923;c[k+36>>2]=-1;c[k+40>>2]=0;a[k+146>>0]=2;c[k+44>>2]=0;c[k+32>>2]=1;a[k+147>>0]=-1;c[k+48>>2]=0;n=k+64|0;c[n>>2]=0;c[n+4>>2]=0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7;break}else{i=c[i+68>>2]&j;break}}while(0);Vc(k,2)|0;n=i;Ra=o;return n|0}function Ir(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=Ra;Ra=Ra+16|0;p=x+4|0;q=x;w=c[d>>2]|0;o=(w|0)!=0;a:do if(o){t=w+32|0;j=c[t>>2]|0;u=w+16|0;n=c[u>>2]|0;v=w+20|0;h=c[v>>2]|0;b:do if((h|0)>0){g=0;while(1){if((a[n+g>>0]|0)!=(a[e+g>>0]|0)){s=g;break b}g=g+1|0;if((g|0)>=(h|0)){s=g;break}}}else s=0;while(0);k=((s|0)<0)<<31>>31;m=0;g=s;h=k;do{m=m+1|0;g=bw(g|0,h|0,7)|0;h=L()|0}while(!((g|0)==0&(h|0)==0));r=f-s|0;i=((r|0)<0)<<31>>31;g=0;h=r;l=i;do{g=g+1|0;h=bw(h|0,l|0,7)|0;l=L()|0}while(!((h|0)==0&(l|0)==0));h=r+j+m+g|0;g=c[b+228>>2]|0;do if((h|0)>(g|0)){if(n|0)break a;d=nb(h)|0;c[w+36>>2]=d;if(!d){f=7;Ra=x;return f|0}else{g=c[u>>2]|0;break}}else g=n;while(0);b=w+36|0;if(g){m=(c[b>>2]|0)+j|0;l=m;n=s;while(1){g=n&255;h=l+1|0;a[l>>0]=g|-128;n=bw(n|0,k|0,7)|0;k=L()|0;if((n|0)==0&(k|0)==0)break;else l=h}a[l>>0]=g&127;j=j-m+h|0}l=(c[b>>2]|0)+j|0;k=l;m=r;while(1){g=m&255;h=k+1|0;a[k>>0]=g|-128;m=bw(m|0,i|0,7)|0;i=L()|0;if((m|0)==0&(i|0)==0)break;else k=h}a[k>>0]=g&127;j=h-l+j|0;ew((c[b>>2]|0)+j|0,e+s|0,r|0)|0;c[t>>2]=j+r;j=w+12|0;c[j>>2]=(c[j>>2]|0)+1;j=w+24|0;i=w+28|0;g=c[i>>2]|0;do if((c[j>>2]|0)<(f|0)){h=f<<1;if(mb()|0){f=7;Ra=x;return f|0}g=sb(g,(h|0)>0?h:0,0)|0;if(!g){f=7;Ra=x;return f|0}else{c[j>>2]=h;c[i>>2]=g;break}}while(0);c[u>>2]=g;ew(g|0,e|0,f|0)|0;c[v>>2]=f;f=0;Ra=x;return f|0}else g=c[b+228>>2]|0;while(0);j=nb(g+40|0)|0;c[p>>2]=j;g=j;if(!j){f=7;Ra=x;return f|0};c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[j+20>>2]=0;c[j+24>>2]=0;c[j+28>>2]=0;c[j+32>>2]=11;c[j+36>>2]=j+40;if(o){c[q>>2]=c[w>>2];h=Ir(b,q,e,f)|0;i=c[q>>2]|0;if(!(c[w>>2]|0))c[w>>2]=i;c[w+4>>2]=g;c[j+8>>2]=c[w+8>>2];c[j>>2]=i;f=w+28|0;c[j+28>>2]=c[f>>2];c[j+24>>2]=c[w+24>>2];c[f>>2]=0}else{c[j+8>>2]=j;h=Ir(b,p,e,f)|0;g=c[p>>2]|0}c[d>>2]=g;f=h;Ra=x;return f|0}function Jr(d,e,f,g,h,i,j,k,l,m,n,o,p,q){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=Ra;Ra=Ra+32|0;v=y+8|0;s=y;t=y+24|0;u=d+100|0;r=c[u>>2]|0;c[t>>2]=r;if(!r){r=c[d+20>>2]|0;c[s>>2]=c[d+16>>2];c[s+4>>2]=r;r=Bb(51725,s)|0;if(!r){x=7;Ra=y;return x|0}s=qd(c[d+12>>2]|0,r,-1,133,0,t,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](r);else{d=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r)}r=c[t>>2]|0;c[u>>2]=r;if(!s)t=r;else{x=s;Ra=y;return x|0}}else t=r;u=t;do if(!(Vc(u,1)|0)){r=c[u+100>>2]|0;s=r+8|0;if(!(b[s>>1]&9216)){d=r;c[d>>2]=e;c[d+4>>2]=f;b[s>>1]=4;break}else{Pg(r,e,f);break}}while(0);r=((g|0)<0)<<31>>31;do if(!(Vc(u,2)|0)){d=c[u+100>>2]|0;s=d+40|0;d=d+48|0;if(!(b[d>>1]&9216)){f=s;c[f>>2]=g;c[f+4>>2]=r;b[d>>1]=4;break}else{Pg(s,g,r);break}}while(0);do if(!(Vc(u,3)|0)){s=c[u+100>>2]|0;r=s+80|0;s=s+88|0;if(!(b[s>>1]&9216)){g=r;c[g>>2]=h;c[g+4>>2]=i;b[s>>1]=4;break}else{Pg(r,h,i);break}}while(0);do if(!(Vc(u,4)|0)){s=c[u+100>>2]|0;r=s+120|0;s=s+128|0;if(!(b[s>>1]&9216)){i=r;c[i>>2]=j;c[i+4>>2]=k;b[s>>1]=4;break}else{Pg(r,j,k);break}}while(0);do if((n|0)==0&(o|0)==0){if(!(Vc(u,5)|0)){s=c[u+100>>2]|0;r=s+160|0;s=s+168|0;if(!(b[s>>1]&9216)){v=r;c[v>>2]=l;c[v+4>>2]=m;b[s>>1]=4;break}else{Pg(r,l,m);break}}}else{r=v;c[r>>2]=l;c[r+4>>2]=m;r=v+8|0;c[r>>2]=n;c[r+4>>2]=o;r=Bb(54991,v)|0;if(!r){x=7;Ra=y;return x|0}else{Tc(u,5,r,-1,90,1)|0;break}}while(0);if((p|0)==0|(Vc(u,6)|0)!=0){Gc(u)|0;if(!t)r=0;else x=38}else{r=yc((c[u+100>>2]|0)+200|0,p,q,0,0)|0;if(r|0?(w=c[u>>2]|0,c[w+64>>2]=r,Ne(w,r),w=c[u>>2]|0,(r|0)==3082|(a[w+81>>0]|0)!=0):0)og(w);Gc(u)|0;x=38}do if((x|0)==38){r=c[u>>2]|0;x=u+136|0;w=c[x+4>>2]|0;if((w|0)>0|(w|0)==0&(c[x>>2]|0)>>>0>0)hc(r,u);s=kc(u)|0;c[u+20>>2]=770837923;c[u+36>>2]=-1;c[u+40>>2]=0;a[u+146>>0]=2;c[u+44>>2]=0;c[u+32>>2]=1;a[u+147>>0]=-1;c[u+48>>2]=0;x=u+64|0;c[x>>2]=0;c[x+4>>2]=0;if((s|0)==3082|(a[r+81>>0]|0)!=0){og(r);r=7;break}else{r=c[r+68>>2]&s;break}}while(0);Vc(u,6)|0;x=r;Ra=y;return x|0}function Kr(a){a=a|0;var b=0,d=0,e=0;if(!a)return;a=c[a+8>>2]|0;Kr(c[a>>2]|0);if(!a)return;do{d=a;a=c[a+4>>2]|0;b=c[d+36>>2]|0;do if(!((b|0)==(d+40|0)|(b|0)==0))if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[d+28>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}}while((a|0)!=0);return}function Lr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=Ra;Ra=Ra+48|0;j=l+32|0;i=l+24|0;h=l+16|0;g=l+8|0;e=l;k=l+40|0;Fr(b);do if(d|0){f=b+64|0;d=c[f>>2]|0;c[k>>2]=d;if(!d){d=c[b+20>>2]|0;c[e>>2]=c[b+16>>2];c[e+4>>2]=d;d=Bb(51372,e)|0;if(!d){k=7;Ra=l;return k|0}e=qd(c[b+12>>2]|0,d,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[k>>2]|0;c[f>>2]=d;if(e){m=e;Ra=l;return m|0}}f=d;Gc(f)|0;if(d|0){d=c[f>>2]|0;m=f+136|0;e=c[m+4>>2]|0;if((e|0)>0|(e|0)==0&(c[m>>2]|0)>>>0>0)hc(d,f);e=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;m=f+64|0;c[m>>2]=0;c[m+4>>2]=0;if((e|0)==3082|(a[d+81>>0]|0)!=0){og(d);m=7;Ra=l;return m|0}else{d=c[d+68>>2]&e;if(!d)break;Ra=l;return d|0}}}while(0);f=b+68|0;d=c[f>>2]|0;c[k>>2]=d;if(!d){d=c[b+20>>2]|0;c[g>>2]=c[b+16>>2];c[g+4>>2]=d;d=Bb(51400,g)|0;if(!d){m=7;Ra=l;return m|0}e=qd(c[b+12>>2]|0,d,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[k>>2]|0;c[f>>2]=d;if(e){m=e;Ra=l;return m|0}}f=d;Gc(f)|0;do if(d|0){e=c[f>>2]|0;m=f+136|0;g=c[m+4>>2]|0;if((g|0)>0|(g|0)==0&(c[m>>2]|0)>>>0>0)hc(e,f);d=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;m=f+64|0;c[m>>2]=0;c[m+4>>2]=0;if((d|0)==3082|(a[e+81>>0]|0)!=0){og(e);m=7;Ra=l;return m|0}else{d=c[e+68>>2]&d;if(!d)break;Ra=l;return d|0}}while(0);f=b+72|0;d=c[f>>2]|0;c[k>>2]=d;if(!d){d=c[b+20>>2]|0;c[h>>2]=c[b+16>>2];c[h+4>>2]=d;d=Bb(51429,h)|0;if(!d){m=7;Ra=l;return m|0}e=qd(c[b+12>>2]|0,d,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[k>>2]|0;c[f>>2]=d;if(e){m=e;Ra=l;return m|0}}f=d;Gc(f)|0;do if(!d)d=0;else{d=c[f>>2]|0;m=f+136|0;h=c[m+4>>2]|0;if((h|0)>0|(h|0)==0&(c[m>>2]|0)>>>0>0)hc(d,f);e=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;m=f+64|0;c[m>>2]=0;c[m+4>>2]=0;if(!((e|0)==3082|(a[d+81>>0]|0)!=0)){d=c[d+68>>2]&e;break}og(d);m=7;Ra=l;return m|0}while(0);do if((d|0)==0&(a[b+234>>0]|0)!=0){f=b+76|0;d=c[f>>2]|0;c[k>>2]=d;if(!d){d=c[b+20>>2]|0;c[i>>2]=c[b+16>>2];c[i+4>>2]=d;d=Bb(51456,i)|0;if(!d){m=7;Ra=l;return m|0}e=qd(c[b+12>>2]|0,d,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[k>>2]|0;c[f>>2]=d;if(e){m=e;Ra=l;return m|0}}f=d;Gc(f)|0;if(!d)d=0;else{d=c[f>>2]|0;m=f+136|0;i=c[m+4>>2]|0;if((i|0)>0|(i|0)==0&(c[m>>2]|0)>>>0>0)hc(d,f);e=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;m=f+64|0;c[m>>2]=0;c[m+4>>2]=0;if(!((e|0)==3082|(a[d+81>>0]|0)!=0)){d=c[d+68>>2]&e;break}og(d);m=7;Ra=l;return m|0}}while(0);if(!((d|0)==0&(a[b+233>>0]|0)!=0)){m=d;Ra=l;return m|0}f=b+80|0;d=c[f>>2]|0;c[k>>2]=d;if(!d){d=c[b+20>>2]|0;c[j>>2]=c[b+16>>2];c[j+4>>2]=d;d=Bb(51484,j)|0;if(!d){m=7;Ra=l;return m|0}e=qd(c[b+12>>2]|0,d,-1,133,0,k,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{m=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[k>>2]|0;c[f>>2]=d;if(e){m=e;Ra=l;return m|0}}f=d;Gc(f)|0;if(!d){m=0;Ra=l;return m|0}d=c[f>>2]|0;m=f+136|0;k=c[m+4>>2]|0;if((k|0)>0|(k|0)==0&(c[m>>2]|0)>>>0>0)hc(d,f);e=kc(f)|0;c[f+20>>2]=770837923;c[f+36>>2]=-1;c[f+40>>2]=0;a[f+146>>0]=2;c[f+44>>2]=0;c[f+32>>2]=1;a[f+147>>0]=-1;c[f+48>>2]=0;m=f+64|0;c[m>>2]=0;c[m+4>>2]=0;if((e|0)==3082|(a[d+81>>0]|0)!=0){og(d);m=7;Ra=l;return m|0}else{m=c[d+68>>2]&e;Ra=l;return m|0}return 0}function Mr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=Ra;Ra=Ra+32|0;i=s+20|0;n=s+16|0;o=s+12|0;p=s+8|0;q=s+4|0;m=s;c[n>>2]=0;c[o>>2]=0;c[p>>2]=0;c[m>>2]=0;g=c[a+36>>2]|0;r=c[g>>2]|0;if(!d){c[f>>2]=0;f=0;Ra=s;return f|0}c[i>>2]=0;d=Za[c[r+12>>2]&127](g,d,-1,i)|0;do if(!d){c[c[i>>2]>>2]=g;if((c[r>>2]|0)>0?(h=Xa[c[r+24>>2]&255](c[i>>2]|0,b)|0,h|0):0){Wa[c[r+16>>2]&127](c[i>>2]|0)|0;c[i>>2]=0;d=h;break}l=c[i>>2]|0;i=c[r+20>>2]|0;j=a+256|0;k=a+252|0;d=$a[i&127](l,q,m,n,o,p)|0;a:do if(!d){b=0;do{h=c[p>>2]|0;b=(h|0)<(b|0)?b:h+1|0;d=c[q>>2]|0;g=c[m>>2]|0;if((h|0)<0|(d|0)==0|(g|0)<1){d=1;break a}d=Nr(a,e,h,(c[j>>2]|0)+4|0,d,g)|0;if(d|0)break a;h=1;while(1){if((h|0)>=(c[k>>2]|0))break;d=c[j>>2]|0;g=c[d+(h*24|0)>>2]|0;if((c[m>>2]|0)<(g|0))d=0;else d=Nr(a,e,c[p>>2]|0,d+(h*24|0)+4|0,c[q>>2]|0,g)|0;if(!d)h=h+1|0;else break a}d=$a[i&127](l,q,m,n,o,p)|0}while((d|0)==0)}else b=0;while(0);Wa[c[r+16>>2]&127](l)|0;c[f>>2]=(c[f>>2]|0)+b;f=(d|0)==101?0:d;Ra=s;return f|0}while(0);f=d;Ra=s;return f|0}function Nr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+16|0;p=r+4|0;q=r;c[q>>2]=0;a:do if((((f|0)!=0?(m=f+16|0,(c[m>>2]|0)!=0):0)?(k=Xa[(a[f>>0]<<24>>24==1?154:155)&255](g,h)|0,k=(c[f+12>>2]|0)+-1&k,l=c[m>>2]|0,(l|0)!=0):0)?(j=c[l+(k<<3)>>2]|0,n=(a[f>>0]|0)==1?79:80,i=c[l+(k<<3)+4>>2]|0,(j|0)!=0&(i|0)!=0):0){while(1){j=j+-1|0;if(!(Za[n&127](c[i+12>>2]|0,c[i+16>>2]|0,g,h)|0))break;i=c[i>>2]|0;if(!((j|0)!=0&(i|0)!=0)){o=8;break a}}i=c[i+8>>2]|0;c[p>>2]=i;if(!i)i=p;else{n=b+264|0;c[n>>2]=-20-h-(c[i>>2]|0)+(c[n>>2]|0);i=p}}else o=8;while(0);if((o|0)==8){c[p>>2]=0;i=p}o=b+272|0;if(wr(p,c[o>>2]|0,c[o+4>>2]|0,d,((d|0)<0)<<31>>31,e,((e|0)<0)<<31>>31,q)|0?(o=c[p>>2]|0,(o|0)==(Ep(f,g,h,o)|0)):0){i=c[i>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{p=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[q>>2]=7;q=7;Ra=r;return q|0}i=c[q>>2]|0;if(i|0){q=i;Ra=r;return q|0}q=b+264|0;c[q>>2]=h+20+(c[c[p>>2]>>2]|0)+(c[q>>2]|0);q=0;Ra=r;return q|0} -function Ll(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0;ra=Ra;Ra=Ra+160|0;ba=ra+8|0;A=ra;ma=ra+64|0;na=ra+12|0;oa=h+80|0;da=c[f>>2]|0;y=j+64|0;_=c[y>>2]|0;v=h+4|0;ea=c[v>>2]|0;p=a[j+44>>0]|0;fa=p&255;n=ea+8+(fa*72|0)|0;ia=c[ea+8+(fa*72|0)+40>>2]|0;o=c[h+492>>2]|0;a:do if((o|0)>0){m=0;while(1){if((c[h+496+(m<<2)>>2]|0)==(ia|0))break;m=m+1|0;if((m|0)>=(o|0)){m=0;o=0;break a}}m=cw(1,0,m|0)|0;o=L()|0}else{m=0;o=0}while(0);qa=j+72|0;w=qa;c[w>>2]=~m&k;c[w+4>>2]=~o&l;w=h+64|0;w=bw(c[w>>2]|0,c[w+4>>2]|0,i|0)|0;L()|0;aa=w&1;q=f+56|0;pa=c[q>>2]|0;z=pa+-1|0;Q=j+16|0;c[Q>>2]=z;ca=j+12|0;c[ca>>2]=z;pa=pa+-2|0;c[q>>2]=pa;D=j+24|0;c[D>>2]=pa;do if(p<<24>>24?a[ea+8+(fa*72|0)+36>>0]&8:0){o=f+44|0;m=(c[o>>2]|0)+1|0;c[o>>2]=m;c[j>>2]=m;o=g+108|0;p=c[o>>2]|0;if((c[g+112>>2]|0)>(p|0)){c[o>>2]=p+1;$=c[g+104>>2]|0;a[$+(p*20|0)>>0]=70;b[$+(p*20|0)+2>>1]=0;c[$+(p*20|0)+4>>2]=0;c[$+(p*20|0)+8>>2]=m;c[$+(p*20|0)+12>>2]=0;c[$+(p*20|0)+16>>2]=0;a[$+(p*20|0)+1>>0]=0;break}else{Di(g,70,0,m,0)|0;break}}while(0);b:do if((i|0)>0){m=i;while(1){if(c[h+752+(m*80|0)>>2]|0)break b;o=m+-1|0;if((m|0)>1)m=o;else{m=o;break}}}else m=i;while(0);p=c[h+752+(m*80|0)+12>>2]|0;m=a[ea+8+(fa*72|0)+37>>0]|0;c:do if(!(m&16)){$=_+36|0;o=c[$>>2]|0;if(o&1024|0){r=b[_+40>>1]|0;t=r&65535;m=t+2|0;n=f+32|0;o=c[n>>2]|0;p=f+28|0;q=c[p>>2]|0;if((q|0)<(m|0)){ba=f+44|0;u=c[ba>>2]|0;c[ba>>2]=u+m;u=u+1|0}else{c[n>>2]=m+o;c[p>>2]=q-m;u=o}m=c[ca>>2]|0;i=r<<16>>16==0;if(i)p=m;else{q=u+2|0;r=_+48|0;p=0;do{n=q+p|0;o=c[(c[r>>2]|0)+(p<<2)>>2]|0;do if(o)if(!(b[o+12>>1]&1)){km(f,c[(c[o>>2]|0)+16>>2]|0,n,1);break}else{jm(f,o,j,p,aa,n)|0;m=c[Q>>2]|0;break}while(0);p=p+1|0}while((p|0)!=(t|0));p=m}m=c[_+24>>2]|0;o=g+108|0;n=c[o>>2]|0;C=g+112|0;if((c[C>>2]|0)>(n|0)){c[o>>2]=n+1;ca=c[g+104>>2]|0;a[ca+(n*20|0)>>0]=70;b[ca+(n*20|0)+2>>1]=0;c[ca+(n*20|0)+4>>2]=m;c[ca+(n*20|0)+8>>2]=u;c[ca+(n*20|0)+12>>2]=0;c[ca+(n*20|0)+16>>2]=0;a[ca+(n*20|0)+1>>0]=0}else Di(g,70,m,u,0)|0;m=u+1|0;n=c[o>>2]|0;if((c[C>>2]|0)>(n|0)){c[o>>2]=n+1;ca=c[g+104>>2]|0;a[ca+(n*20|0)>>0]=70;b[ca+(n*20|0)+2>>1]=0;c[ca+(n*20|0)+4>>2]=t;c[ca+(n*20|0)+8>>2]=m;c[ca+(n*20|0)+12>>2]=0;c[ca+(n*20|0)+16>>2]=0;a[ca+(n*20|0)+1>>0]=0}else Di(g,70,t,m,0)|0;q=c[_+32>>2]|0;r=_+28|0;s=(a[r>>0]|0)==0?-1:-7;m=c[o>>2]|0;if((c[C>>2]|0)>(m|0)){c[o>>2]=m+1;ca=c[g+104>>2]|0;a[ca+(m*20|0)>>0]=9;b[ca+(m*20|0)+2>>1]=0;c[ca+(m*20|0)+4>>2]=ia;c[ca+(m*20|0)+8>>2]=p;c[ca+(m*20|0)+12>>2]=u;c[ca+(m*20|0)+16>>2]=0;a[ca+(m*20|0)+1>>0]=0}else m=Di(g,9,ia,p,u)|0;n=c[g>>2]|0;do if(!(a[n+81>>0]|0)){if((m|0)<0)m=(c[o>>2]|0)+-1|0;n=c[g+104>>2]|0;p=n+(m*20|0)+1|0;if(a[p>>0]|0){Ei(g,n+(m*20|0)|0,q,s);break}if(q|0){c[n+(m*20|0)+16>>2]=q;a[p>>0]=s}}else kg(n,s,q);while(0);a[r>>0]=0;c[j+48>>2]=ia;a[j+45>>0]=(a[h+49>>0]|0)==0?60:-86;c[j+52>>2]=c[o>>2];if(i){E=0;break}B=_+48|0;w=_+30|0;x=da+81|0;y=j+60|0;z=ma+4|0;A=g+104|0;v=u+2|0;m=c[j+56>>2]|0;while(1){u=t;t=t+-1|0;i=c[(c[B>>2]|0)+(t<<2)>>2]|0;if((u|0)<17?(1<>1]|0)!=0:0)lm(j,i);else if(b[i+12>>1]&1){do if(!(a[x>>0]|0)){m=m+-1|0;n=c[(c[y>>2]|0)+(m*20|0)+4>>2]|0;if((n|0)<0)n=(c[o>>2]|0)+-1|0;if(!(a[(c[g>>2]|0)+81>>0]|0))n=(c[A>>2]|0)+(n*20|0)|0;else n=59308;q=a[n>>0]|0;r=c[n+4>>2]|0;s=c[n+8>>2]|0;n=c[n+12>>2]|0;p=c[o>>2]|0;if((c[C>>2]|0)>(p|0)){c[o>>2]=p+1;ca=c[A>>2]|0;a[ca+(p*20|0)>>0]=q;b[ca+(p*20|0)+2>>1]=0;c[ca+(p*20|0)+4>>2]=r;c[ca+(p*20|0)+8>>2]=s;c[ca+(p*20|0)+12>>2]=n;c[ca+(p*20|0)+16>>2]=0;a[ca+(p*20|0)+1>>0]=0;break}else{Di(g,q&255,r,s,n)|0;break}}while(0);p=ej(f,53,0,0)|0;if(p){q=p+12|0;c[q>>2]=c[(c[i>>2]|0)+12>>2];c[ma>>2]=0;c[z>>2]=0;n=oj(da,168,ma,0)|0;c[p+16>>2]=n;if(n|0){c[n+28>>2]=v+t;Tj(f,p,c[D>>2]|0,0)}c[q>>2]=0;ni(da,p)}}if((u|0)<=1){E=0;break c}}}if(!((o&256|0)==0|(o&5|0)==0)){q=c[c[_+48>>2]>>2]|0;p=f+44|0;m=(c[p>>2]|0)+1|0;c[p>>2]=m;p=jm(f,q,j,0,aa,m)|0;if(!((m|0)==0|(p|0)==(m|0))?(r=f+19|0,s=a[r>>0]|0,(s&255)<8):0){a[r>>0]=s+1<<24>>24;c[f+148+((s&255)<<2)>>2]=m}m=c[Q>>2]|0;o=g+108|0;n=c[o>>2]|0;if((c[g+112>>2]|0)>(n|0)){c[o>>2]=n+1;da=c[g+104>>2]|0;a[da+(n*20|0)>>0]=30;b[da+(n*20|0)+2>>1]=0;c[da+(n*20|0)+4>>2]=ia;c[da+(n*20|0)+8>>2]=m;c[da+(n*20|0)+12>>2]=p;c[da+(n*20|0)+16>>2]=0;a[da+(n*20|0)+1>>0]=0}else Di(g,30,ia,m,p)|0;a[j+45>>0]=-86;da=q+40|0;ca=qa;if(!((c[ca>>2]&c[da>>2]|0)==0?(c[ca+4>>2]&c[da+4>>2]|0)==0:0)){E=0;break}E=q+10|0;b[E>>1]=b[E>>1]|4;E=0;break}if((o&258|0)==258){if(!(o&32)){n=0;m=0}else{n=c[c[_+48>>2]>>2]|0;m=1}if(!(o&16))m=0;else m=c[(c[_+48>>2]|0)+(m<<2)>>2]|0;da=(aa|0)==0;i=da?m:n;n=da?n:m;do if(!n){m=aa<<2^36;n=g+108|0;o=c[n>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[n>>2]=o+1;da=c[g+104>>2]|0;a[da+(o*20|0)>>0]=m;b[da+(o*20|0)+2>>1]=0;c[da+(o*20|0)+4>>2]=ia;c[da+(o*20|0)+8>>2]=p;c[da+(o*20|0)+12>>2]=0;c[da+(o*20|0)+16>>2]=0;a[da+(o*20|0)+1>>0]=0;break}else{Di(g,m,ia,p,0)|0;break}}else{q=c[n>>2]|0;o=c[q+16>>2]|0;m=a[o>>0]|0;if(m<<24>>24==-88)m=a[o+38>>0]|0;switch(m<<24>>24){case -87:{m=o+20|0;ga=90;break}case -125:{m=c[o+20>>2]|0;ga=90;break}default:ga=95}if((ga|0)==90)if((c[c[m>>2]>>2]|0)<2)ga=95;else{m=f+19|0;n=a[m>>0]|0;if(!(n<<24>>24)){da=f+44|0;m=(c[da>>2]|0)+1|0;c[da>>2]=m}else{da=n+-1<<24>>24;a[m>>0]=da;m=c[f+148+((da&255)<<2)>>2]|0}c[ma>>2]=m;km(f,o,m,1);p=m;m=((a[q>>0]|0)+1&2|1)&255}if((ga|0)==95){p=Lj(f,o,ma)|0;lm(j,n);m=(d[q>>0]|0)+-54|0}m=a[44005+m>>0]|0;n=g+108|0;o=c[n>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[n>>2]=o+1;da=c[g+104>>2]|0;a[da+(o*20|0)>>0]=m;b[da+(o*20|0)+2>>1]=0;c[da+(o*20|0)+4>>2]=ia;c[da+(o*20|0)+8>>2]=z;c[da+(o*20|0)+12>>2]=p;c[da+(o*20|0)+16>>2]=0;a[da+(o*20|0)+1>>0]=0}else Di(g,m&255,ia,z,p)|0;m=c[ma>>2]|0;if(m|0?(t=f+19|0,u=a[t>>0]|0,(u&255)<8):0){a[t>>0]=u+1<<24>>24;c[f+148+((u&255)<<2)>>2]=m}}while(0);do if(!i){r=0;q=170}else{o=c[i>>2]|0;s=f+44|0;r=(c[s>>2]|0)+1|0;c[s>>2]=r;s=o+16|0;km(f,c[s>>2]|0,r,1);s=c[s>>2]|0;m=a[s>>0]|0;p=m<<24>>24==-88;if(p)n=a[s+38>>0]|0;else n=m;switch(n<<24>>24){case -87:{n=s+20|0;ga=112;break}case -125:{n=c[s+20>>2]|0;ga=112;break}default:ga=113}if((ga|0)==112)if((c[c[n>>2]>>2]|0)<2)ga=113;else ga=115;d:do if((ga|0)==113){switch(a[o>>0]|0){case 54:case 56:break;default:{ga=115;break d}}q=(aa<<1^2)+55|0}while(0);if((ga|0)==115)q=(aa<<1)+54|0;if(p)m=a[s+38>>0]|0;switch(m<<24>>24){case -87:{x=s+20|0;ga=121;break}case -125:{x=c[s+20>>2]|0;ga=121;break}default:{}}if((ga|0)==121?(c[c[x>>2]>>2]|0)>=2:0)break;lm(j,i)}while(0);o=g+108|0;m=c[o>>2]|0;a[j+45>>0]=5-aa;c[j+48>>2]=ia;c[j+52>>2]=m;if((q|0)==170){E=0;break}p=f+44|0;n=(c[p>>2]|0)+1|0;c[p>>2]=n;p=g+112|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=-128;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=ia;c[da+(m*20|0)+8>>2]=n;c[da+(m*20|0)+12>>2]=0;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else Di(g,128,ia,n,0)|0;m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=q;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=r;c[da+(m*20|0)+8>>2]=z;c[da+(m*20|0)+12>>2]=n;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else Di(g,q,r,z,n)|0;m=c[o>>2]|0;if((m|0)<=0){E=0;break}b[(c[g+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=83;E=0;break}if(!(o&512)){if(!(o&8192)){if(m&32){a[j+45>>0]=-86;E=0;o=g+108|0;break}a[j+45>>0]=a[44045+aa>>0]|0;c[j+48>>2]=ia;m=a[44047+aa>>0]|0;o=g+108|0;n=c[o>>2]|0;if((c[g+112>>2]|0)>(n|0)){da=n+1|0;c[o>>2]=da;ca=c[g+104>>2]|0;a[ca+(n*20|0)>>0]=m;b[ca+(n*20|0)+2>>1]=0;c[ca+(n*20|0)+4>>2]=ia;c[ca+(n*20|0)+8>>2]=p;c[ca+(n*20|0)+12>>2]=0;c[ca+(n*20|0)+16>>2]=0;a[ca+(n*20|0)+1>>0]=0;m=da}else m=(Di(g,m&255,ia,p,0)|0)+1|0;c[j+52>>2]=m;a[j+47>>0]=1;E=0;break}s=f+40|0;Z=c[s>>2]|0;c[s>>2]=Z+1;W=f+44|0;X=(c[W>>2]|0)+1|0;c[W>>2]=X;$=c[q>>2]|0;Y=$+-1|0;c[q>>2]=Y;V=c[ea+8+(fa*72|0)+16>>2]|0;aa=c[c[_+48>>2]>>2]|0;u=c[aa+28>>2]|0;a[j+45>>0]=66;c[j+48>>2]=X;_=h+46|0;m=a[_>>0]|0;if((m&255)>1){r=(m&255)-i|0;q=(r*72|0)+8|0;e:do if(!da){U=Sv(q|0,0,-1,-1)|0;T=L()|0;if(T>>>0>0|(T|0)==0&U>>>0>2147483390){qa=l;f=k;K(qa|0);Ra=ra;return f|0}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](q)|0;ga=627;break}p=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0>>0)c[14985]=q;o=59064;m=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&m>>>0>0){U=c[14978]|0;T=Tv(m|0,o|0,p|0,((p|0)<0)<<31>>31|0)|0;S=L()|0;c[14768]=((S|0)<0|(S|0)==0&T>>>0<=U>>>0)&1}m=Wa[c[29340>>2]&127](p)|0;if(!m){qa=l;f=k;K(qa|0);Ra=ra;return f|0}o=Wa[c[29352>>2]&127](m)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0<=(c[14987]|0)>>>0)break;c[14987]=o}else{if(c[da+272>>2]|0){if(a[da+81>>0]|0){qa=l;f=k;K(qa|0);Ra=ra;return f|0}}else{do if(!(0<0|(0==0?(e[da+276>>1]|0)>>>0>>0:0))){o=da+300|0;m=c[o>>2]|0;if(m|0){c[o>>2]=c[m>>2];ga=da+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=627;break e}o=da+296|0;m=c[o>>2]|0;if(!m){m=da+292|0;break}else{c[o>>2]=c[m>>2];ga=da+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=627;break e}}else m=da+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(da,q,0)|0;ga=627}while(0);if((ga|0)==627)if(!m){qa=l;f=k;K(qa|0);Ra=ra;return f|0}q=r&255;c[m+4>>2]=q;c[m>>2]=q;q=m+8|0;E=q;D=E+72|0;do{c[E>>2]=c[n>>2];E=E+4|0;n=n+4|0}while((E|0)<(D|0));p=c[v>>2]|0;if((r|0)>1){o=1;do{E=q+(o*72|0)|0;n=p+8+((d[j+(o*80|0)+44>>0]|0)*72|0)|0;D=E+72|0;do{c[E>>2]=c[n>>2];E=E+4|0;n=n+4|0}while((E|0)<(D|0));o=o+1|0}while((o|0)!=(r|0));T=m;U=m}else{T=m;U=m}}else{U=c[v>>2]|0;T=U}S=h+44|0;if(!(b[S>>1]&16)){f:do if(!(c[V+36>>2]&32)){m=(c[W>>2]|0)+1|0;c[W>>2]=m;n=g+108|0;o=c[n>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[n>>2]=o+1;R=c[g+104>>2]|0;a[R+(o*20|0)>>0]=73;b[R+(o*20|0)+2>>1]=0;c[R+(o*20|0)+4>>2]=0;c[R+(o*20|0)+8>>2]=m;c[R+(o*20|0)+12>>2]=0;c[R+(o*20|0)+16>>2]=0;a[R+(o*20|0)+1>>0]=0;break}else{Di(g,73,0,m,0)|0;break}}else{m=c[V+8>>2]|0;g:do if(!m)m=0;else while(1){R=m+55|0;if(((d[R>>0]|d[R+1>>0]<<8)&3)==2)break g;m=c[m+20>>2]|0;if(!m){m=0;break}}while(0);q=c[s>>2]|0;c[s>>2]=q+1;n=e[m+50>>1]|0;o=g+108|0;p=c[o>>2]|0;if((c[g+112>>2]|0)>(p|0)){c[o>>2]=p+1;R=c[g+104>>2]|0;a[R+(p*20|0)>>0]=113;b[R+(p*20|0)+2>>1]=0;c[R+(p*20|0)+4>>2]=q;c[R+(p*20|0)+8>>2]=n;c[R+(p*20|0)+12>>2]=0;c[R+(p*20|0)+16>>2]=0;a[R+(p*20|0)+1>>0]=0}else Di(g,113,q,n,0)|0;n=c[f+8>>2]|0;o=Ij(f,m)|0;if(o){m=c[n>>2]|0;if(!(a[m+81>>0]|0)){R=c[n+104>>2]|0;m=(c[n+108>>2]|0)+-1|0;a[R+(m*20|0)+1>>0]=-9;c[R+(m*20|0)+16>>2]=o;m=q;break}if(c[m+480>>2]|0){m=q;break}R=(c[o>>2]|0)+-1|0;c[o>>2]=R;if(R|0){m=q;break}m=c[o+12>>2]|0;do if(m|0){if(c[m+480>>2]|0){Xd(m,o);m=q;break f}n=o;if((c[m+304>>2]|0)>>>0>n>>>0)break;if((c[m+308>>2]|0)>>>0<=n>>>0)break;m=m+300|0;c[o>>2]=c[m>>2];c[m>>2]=o;m=q;break f}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);m=q;break}else{m=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);m=q;break}}else m=q}while(0);P=(c[W>>2]|0)+1|0;c[W>>2]=P}else{P=0;m=0}o=g+108|0;n=c[o>>2]|0;R=g+112|0;if((c[R>>2]|0)>(n|0)){c[o>>2]=n+1;Q=c[g+104>>2]|0;a[Q+(n*20|0)>>0]=70;b[Q+(n*20|0)+2>>1]=0;c[Q+(n*20|0)+4>>2]=0;c[Q+(n*20|0)+8>>2]=X;c[Q+(n*20|0)+12>>2]=0;c[Q+(n*20|0)+16>>2]=0;a[Q+(n*20|0)+1>>0]=0;Q=n}else Q=Di(g,70,0,X,0)|0;i=h+92|0;n=c[i>>2]|0;if((n|0)>1){t=h+100|0;s=0;p=0;do{q=c[t>>2]|0;O=q+(s*48|0)|0;r=c[O>>2]|0;do if((O|0)!=(aa|0)?(b[q+(s*48|0)+10>>1]&6)==0:0){if(!(b[q+(s*48|0)+12>>1]&8191))break;if(!r)n=0;else n=dk(da,r,0,0)|0;p=Xk(da,p,n)|0;n=c[i>>2]|0}while(0);s=s+1|0}while((s|0)<(n|0));if(p)O=ej(f,65580,0,p)|0;else O=0}else O=0;N=b[S>>1]&1024|32;nk(f,1,44021,A);M=u+12|0;if((c[M>>2]|0)>0){A=u+20|0;B=(O|0)==0;C=O+12|0;D=V+36|0;E=V+8|0;F=g+104|0;G=f+19|0;H=f+32|0;I=f+28|0;p=f+212|0;J=f+8|0;n=0;r=0;q=0;do{s=c[A>>2]|0;do if((c[s+(n*48|0)+20>>2]|0)==(ia|0))ga=679;else{if(b[s+(n*48|0)+12>>1]&1024){ga=679;break}n=n+1|0}while(0);do if((ga|0)==679){ga=0;s=c[s+(n*48|0)>>2]|0;if(!B){c[C>>2]=s;s=O}z=n+1|0;c[ba>>2]=z;nk(f,1,44036,ba);y=ql(f,T,s,0,0,N,Z)|0;if(!y){n=z;break}Kl(f,T,y+752|0,0);do if(!(b[S>>1]&16)){v=(n|0)==((c[M>>2]|0)+-1|0)?-1:n;if(!(c[D>>2]&32)){Vj(g,V,ia,-1,P);s=c[o>>2]|0;if((c[R>>2]|0)>(s|0)){c[o>>2]=s+1;x=c[F>>2]|0;a[x+(s*20|0)>>0]=42;b[x+(s*20|0)+2>>1]=0;c[x+(s*20|0)+4>>2]=m;c[x+(s*20|0)+8>>2]=0;c[x+(s*20|0)+12>>2]=P;c[x+(s*20|0)+16>>2]=0;a[x+(s*20|0)+1>>0]=0}else s=Di(g,42,m,0,P)|0;if(a[(c[g>>2]|0)+81>>0]|0)break;x=c[F>>2]|0;a[x+(s*20|0)+1>>0]=-3;c[x+(s*20|0)+16>>2]=v;break}s=c[E>>2]|0;h:do if(!s)s=0;else while(1){x=s+55|0;if(((d[x>>0]|d[x+1>>0]<<8)&3)==2)break h;s=c[s+20>>2]|0;if(!s){s=0;break}}while(0);u=b[s+50>>1]|0;w=u&65535;x=u<<16>>16==1;do if(x){i=a[G>>0]|0;if(!(i<<24>>24)){i=(c[W>>2]|0)+1|0;c[W>>2]=i;ga=701;break}else{i=i+-1<<24>>24;a[G>>0]=i;i=c[f+148+((i&255)<<2)>>2]|0;ga=701;break}}else{i=c[H>>2]|0;t=c[I>>2]|0;if((t|0)<(w|0)){i=c[W>>2]|0;c[W>>2]=i+w;i=i+1|0}else{c[H>>2]=i+w;c[I>>2]=t-w}if(!(u<<16>>16))u=i;else ga=701}while(0);if((ga|0)==701){ga=0;t=s+4|0;s=0;do{Vj(g,V,ia,b[(c[t>>2]|0)+(s<<1)>>1]|0,s+i|0);s=s+1|0}while((s|0)!=(w|0));u=i}t=(v|0)!=0;if(t){s=c[o>>2]|0;if((c[R>>2]|0)>(s|0)){c[o>>2]=s+1;i=c[F>>2]|0;a[i+(s*20|0)>>0]=29;b[i+(s*20|0)+2>>1]=0;c[i+(s*20|0)+4>>2]=m;c[i+(s*20|0)+8>>2]=0;c[i+(s*20|0)+12>>2]=u;c[i+(s*20|0)+16>>2]=0;a[i+(s*20|0)+1>>0]=0}else s=Di(g,29,m,0,u)|0;if(!(a[(c[g>>2]|0)+81>>0]|0)){i=c[F>>2]|0;a[i+(s*20|0)+1>>0]=-3;c[i+(s*20|0)+16>>2]=w}if((v|0)>-1)ga=710}else{s=0;ga=710}do if((ga|0)==710){ga=0;i=c[o>>2]|0;if((c[R>>2]|0)>(i|0)){c[o>>2]=i+1;v=c[F>>2]|0;a[v+(i*20|0)>>0]=92;b[v+(i*20|0)+2>>1]=0;c[v+(i*20|0)+4>>2]=u;c[v+(i*20|0)+8>>2]=w;c[v+(i*20|0)+12>>2]=P;c[v+(i*20|0)+16>>2]=0;a[v+(i*20|0)+1>>0]=0}else Di(g,92,u,w,P)|0;i=c[o>>2]|0;if((c[R>>2]|0)>(i|0)){c[o>>2]=i+1;v=c[F>>2]|0;a[v+(i*20|0)>>0]=-124;b[v+(i*20|0)+2>>1]=0;c[v+(i*20|0)+4>>2]=m;c[v+(i*20|0)+8>>2]=P;c[v+(i*20|0)+12>>2]=u;c[v+(i*20|0)+16>>2]=0;a[v+(i*20|0)+1>>0]=0}else i=Di(g,132,m,P,u)|0;if(!(a[(c[g>>2]|0)+81>>0]|0)){v=c[F>>2]|0;a[v+(i*20|0)+1>>0]=-3;c[v+(i*20|0)+16>>2]=w}if(!t)break;i=c[o>>2]|0;if((i|0)<=0)break;b[(c[F>>2]|0)+((i+-1|0)*20|0)+2>>1]=16}while(0);if(!x){if((c[I>>2]|0)>=(w|0))break;c[I>>2]=w;c[H>>2]=u;break}if(!u)break;i=a[G>>0]|0;if((i&255)>=8)break;a[G>>0]=i+1<<24>>24;c[f+148+((i&255)<<2)>>2]=u}else s=0;while(0);i=c[o>>2]|0;if((c[R>>2]|0)>(i|0)){c[o>>2]=i+1;x=c[F>>2]|0;a[x+(i*20|0)>>0]=12;b[x+(i*20|0)+2>>1]=0;c[x+(i*20|0)+4>>2]=X;c[x+(i*20|0)+8>>2]=Y;c[x+(i*20|0)+12>>2]=0;c[x+(i*20|0)+16>>2]=0;a[x+(i*20|0)+1>>0]=0}else Di(g,12,X,Y,0)|0;if(s|0){i=c[o>>2]|0;if(!(a[(c[g>>2]|0)+81>>0]|0))s=(c[F>>2]|0)+(((s|0)<0?i+-1|0:s)*20|0)|0;else s=59308;c[s+8>>2]=i}r=(a[y+50>>0]|0)==0?r:1;s=c[y+816>>2]|0;do if(!(c[s+36>>2]&512))q=0;else{if(n|0?(c[s+32>>2]|0)!=(q|0):0){q=0;break}q=c[s+32>>2]|0;if(c[D>>2]&32|0?(x=q+55|0,((d[x>>0]|d[x+1>>0]<<8)&3)==2):0){q=0;break}}while(0);sl(y);n=c[p>>2]|0;if(!n)n=0;else{s=c[J>>2]|0;if((n|0)<0)n=(c[s+108>>2]|0)+-1|0;if(!(a[(c[s>>2]|0)+81>>0]|0))n=(c[s+104>>2]|0)+(n*20|0)|0;else n=59308;n=c[n+8>>2]|0}c[p>>2]=n;n=z}while(0)}while((n|0)<(c[M>>2]|0))}else{r=0;q=0;p=f+212|0}m=c[p>>2]|0;if(!m)m=0;else{n=c[f+8>>2]|0;if((m|0)<0)m=(c[n+108>>2]|0)+-1|0;if(!(a[(c[n>>2]|0)+81>>0]|0))m=(c[n+104>>2]|0)+(m*20|0)|0;else m=59308;m=c[m+8>>2]|0}c[p>>2]=m;c[j+56>>2]=q;if(q|0)c[j+8>>2]=Z;if(O|0){c[O+12>>2]=0;ni(da,O)}n=c[o>>2]|0;if(!(a[(c[g>>2]|0)+81>>0]|0))m=(c[g+104>>2]|0)+(((Q|0)<0?n+-1|0:Q)*20|0)|0;else m=59308;c[m+4>>2]=n;m=c[ca>>2]|0;if((c[R>>2]|0)>(n|0)){c[o>>2]=n+1;ca=c[g+104>>2]|0;a[ca+(n*20|0)>>0]=11;b[ca+(n*20|0)+2>>1]=0;c[ca+(n*20|0)+4>>2]=0;c[ca+(n*20|0)+8>>2]=m;c[ca+(n*20|0)+12>>2]=0;c[ca+(n*20|0)+16>>2]=0;a[ca+(n*20|0)+1>>0]=0}else Di(g,11,0,m,0)|0;n=c[g+12>>2]|0;m=0-$|0;if(((c[n+56>>2]|0)+(c[n+60>>2]|0)|0)<0)mk(n,g,m);else c[(c[n+64>>2]|0)+(m<<2)>>2]=c[o>>2];i:do if(!((U|0)==0|(d[_>>0]|0)<2)){do if(da|0){if(c[da+480>>2]|0){Xd(da,U);break i}m=U;if((c[da+304>>2]|0)>>>0>m>>>0)break;if((c[da+308>>2]|0)>>>0<=m>>>0)break;da=da+300|0;c[U>>2]=c[da>>2];c[da>>2]=U;break i}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](U);break}else{da=Wa[c[29352>>2]&127](U)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](U);break}}while(0);if(r|0){E=0;break}lm(j,aa);E=0;break}M=b[_+24>>1]|0;t=b[_+26>>1]|0;u=b[_+28>>1]|0;Y=c[_+32>>2]|0;x=j+8|0;Z=c[x>>2]|0;X=h+44|0;if((b[X>>1]&1)!=0?(a[h+47>>0]|0)>0:0){i=(e[Y+50>>1]|0)>(M&65535);m=i&1;i=i&1}else{m=0;i=0}p=M&65535;n=t&65535;if(!(o&32)){v=0;n=p}else{v=c[(c[_+48>>2]|0)+(p<<2)>>2]|0;m=m>>>0>n>>>0?m:n;n=p+1|0}do if(o&16){s=c[(c[_+48>>2]|0)+(n<<2)>>2]|0;ba=u&65535;m=(m|0)>(ba|0)?m:ba;if(b[s+10>>1]&256){o=f+44|0;n=(c[o>>2]|0)+1|0;c[o>>2]=n;o=j+36|0;c[o>>2]=n;q=g+108|0;r=c[q>>2]|0;if((c[g+112>>2]|0)>(r|0)){c[q>>2]=r+1;ba=c[g+104>>2]|0;a[ba+(r*20|0)>>0]=70;b[ba+(r*20|0)+2>>1]=0;c[ba+(r*20|0)+4>>2]=1;c[ba+(r*20|0)+8>>2]=n;c[ba+(r*20|0)+12>>2]=0;c[ba+(r*20|0)+16>>2]=0;a[ba+(r*20|0)+1>>0]=0}else Di(g,70,1,n,0)|0;c[j+40>>2]=c[q>>2];ba=c[o>>2]<<1;c[o>>2]=ba;c[o>>2]=aa^(a[(c[Y+28>>2]|0)+p>>0]|0)==1|ba}if(!v){n=b[(c[Y+4>>2]|0)+(p<<1)>>1]|0;if(n<<16>>16>-1){if(a[(c[(c[Y+12>>2]|0)+4>>2]|0)+(n<<16>>16<<4)+12>>0]|0){o=i;break}}else if(n<<16>>16!=-2){o=i;break}o=1}else o=i}else{s=0;o=i}while(0);n=b[Y+50>>1]|0;if((M&65535)<(n&65535)?!(((w&1|0)!=0|0!=0)^(a[(c[Y+28>>2]|0)+p>>0]|0)==0):0)ga=152;else if(aa|0?n<<16>>16==M<<16>>16:0)ga=152;else{N=t;R=0;P=v;v=s;J=o}if((ga|0)==152){N=u;u=t&255;R=o;P=s;J=0}T=f+8|0;I=c[T>>2]|0;w=c[y>>2]|0;y=b[w+24>>1]|0;G=b[w+42>>1]|0;q=c[w+32>>2]|0;V=f+44|0;o=c[V>>2]|0;F=o+1|0;H=y&65535;z=m+H|0;c[V>>2]=o+z;o=c[f>>2]|0;q=gl(o,q)|0;j:do if(!q)U=0;else{r=(Eu(q)|0)+1|0;k:do if(!o){ba=Sv(r|0,0,-1,-1)|0;U=L()|0;if(U>>>0>0|(U|0)==0&ba>>>0>2147483390){U=0;break j}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](r)|0;ga=178;break}m=Wa[c[29356>>2]&127](r)|0;if((c[14985]|0)>>>0>>0)c[14985]=r;o=59064;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&n>>>0>0){ba=c[14978]|0;U=Tv(n|0,o|0,m|0,((m|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&U>>>0<=ba>>>0)&1}m=Wa[c[29340>>2]&127](m)|0;if(!m){U=0;break j}n=Wa[c[29352>>2]&127](m)|0;n=(c[14978]|0)+n|0;c[14978]=n;if(n>>>0>(c[14982]|0)>>>0)c[14982]=n;n=(c[14981]|0)+1|0;c[14981]=n;if(n>>>0<=(c[14987]|0)>>>0)break;c[14987]=n}else{if(c[o+272>>2]|0){if(a[o+81>>0]|0){U=0;break j}}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){n=o+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];ga=o+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=178;break k}n=o+296|0;m=c[n>>2]|0;if(!m){m=o+292|0;break}else{c[n>>2]=c[m>>2];ga=o+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=178;break k}}else m=o+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(o,r,0)|0;ga=178}while(0);if((ga|0)==178)if(!m){U=0;break}ew(m|0,q|0,r|0)|0;U=m}while(0);l:do if(G<<16>>16){s=c[x>>2]|0;q=(aa|0)==0;m=aa<<2^36;i=I+108|0;n=c[i>>2]|0;t=I+112|0;if((c[t>>2]|0)>(n|0)){c[i>>2]=n+1;ba=c[I+104>>2]|0;a[ba+(n*20|0)>>0]=m;b[ba+(n*20|0)+2>>1]=0;c[ba+(n*20|0)+4>>2]=s;c[ba+(n*20|0)+8>>2]=0;c[ba+(n*20|0)+12>>2]=0;c[ba+(n*20|0)+16>>2]=0;a[ba+(n*20|0)+1>>0]=0}else Di(I,m,s,0,0)|0;m=c[i>>2]|0;if((c[t>>2]|0)>(m|0)){c[i>>2]=m+1;E=c[I+104>>2]|0;a[E+(m*20|0)>>0]=11;E=E+(m*20|0)+1|0;D=E+19|0;do{a[E>>0]=0;E=E+1|0}while((E|0)<(D|0));o=m}else o=Di(I,11,0,0,0)|0;n=q?25:22;r=G&65535;m=c[i>>2]|0;if((c[t>>2]|0)>(m|0)){c[i>>2]=m+1;ba=c[I+104>>2]|0;a[ba+(m*20|0)>>0]=n;b[ba+(m*20|0)+2>>1]=0;c[ba+(m*20|0)+4>>2]=s;c[ba+(m*20|0)+8>>2]=0;c[ba+(m*20|0)+12>>2]=F;c[ba+(m*20|0)+16>>2]=0;a[ba+(m*20|0)+1>>0]=0}else m=Di(I,n,s,0,F)|0;do if(!(a[(c[I>>2]|0)+81>>0]|0)){ba=c[I+104>>2]|0;a[ba+(m*20|0)+1>>0]=-3;c[ba+(m*20|0)+16>>2]=r;ba=a[(c[I>>2]|0)+81>>0]|0;c[j+20>>2]=m;n=c[i>>2]|0;if(ba<<24>>24){m=59308;break}m=(c[I+104>>2]|0)+(((o|0)<0?n+-1|0:o)*20|0)|0}else{c[j+20>>2]=m;m=59308;n=c[i>>2]|0}while(0);c[m+8>>2]=n;q=I+104|0;m=0;while(1){o=m+F|0;if((c[t>>2]|0)>(n|0)){c[i>>2]=n+1;ba=c[q>>2]|0;a[ba+(n*20|0)>>0]=90;b[ba+(n*20|0)+2>>1]=0;c[ba+(n*20|0)+4>>2]=s;c[ba+(n*20|0)+8>>2]=m;c[ba+(n*20|0)+12>>2]=o;c[ba+(n*20|0)+16>>2]=0;a[ba+(n*20|0)+1>>0]=0}else Di(I,90,s,m,o)|0;m=m+1|0;if((m|0)==(r|0))break l;n=c[i>>2]|0}}while(0);if((G&65535)<(y&65535)){C=w+48|0;t=(z|0)==1;w=(U|0)!=0;x=I+108|0;y=I+112|0;z=f+19|0;A=I+104|0;B=(U|0)==0;q=F;i=G&65535;while(1){r=c[(c[C>>2]|0)+(i<<2)>>2]|0;m=i+q|0;o=jm(f,r,j,i,aa,m)|0;do if((o|0)!=(m|0))if(!t){n=c[x>>2]|0;if((c[y>>2]|0)>(n|0)){c[x>>2]=n+1;ba=c[A>>2]|0;a[ba+(n*20|0)>>0]=79;b[ba+(n*20|0)+2>>1]=0;c[ba+(n*20|0)+4>>2]=o;c[ba+(n*20|0)+8>>2]=m;c[ba+(n*20|0)+12>>2]=0;c[ba+(n*20|0)+16>>2]=0;a[ba+(n*20|0)+1>>0]=0;break}else{Di(I,79,o,m,0)|0;break}}else{if(!q){q=o;break}m=a[z>>0]|0;if((m&255)>=8){q=o;break}a[z>>0]=m+1<<24>>24;c[f+148+((m&255)<<2)>>2]=q;q=o;break}while(0);m=e[r+12>>1]|0;m:do if(!(m&1)){if(m&256|0)break;s=c[(c[r>>2]|0)+16>>2]|0;n:do if(!(b[r+10>>1]&2048)){n=a[s>>0]|0;if((n+91&255)<2){m=s;do{m=c[m+12>>2]|0;n=a[m>>0]|0}while((n+91&255)<2)}else m=s;if(n<<24>>24==-88)n=a[m+38>>0]|0;o:do switch(n<<24>>24){case -110:case -111:case 110:case -109:break n;case -94:{if(c[m+4>>2]&1048576|0)break o;n=c[m+44>>2]|0;if(!n)break o;m=b[m+32>>1]|0;if(m<<16>>16<=-1)break n;if(a[(c[n+4>>2]|0)+(m<<16>>16<<4)+12>>0]|0)break n;break}default:{}}while(0);m=q+i|0;n=c[ca>>2]|0;o=c[x>>2]|0;if((c[y>>2]|0)>(o|0)){c[x>>2]=o+1;ba=c[A>>2]|0;a[ba+(o*20|0)>>0]=50;b[ba+(o*20|0)+2>>1]=0;c[ba+(o*20|0)+4>>2]=m;c[ba+(o*20|0)+8>>2]=n;c[ba+(o*20|0)+12>>2]=0;c[ba+(o*20|0)+16>>2]=0;a[ba+(o*20|0)+1>>0]=0;break}else{Di(I,50,m,n,0)|0;break}}while(0);if(B)break;o=U+i|0;r=a[o>>0]|0;m=Xj(s)|0;if(r<<24>>24==0|m<<24>>24==0)if((m|r)<<24>>24==0?1:((m&255)+(r&255)&255)<<24>>24==65)ga=232;else ga=233;else if(r<<24>>24>66|m<<24>>24>66)ga=233;else ga=232;p:do if((ga|0)==232){ga=0;a[o>>0]=65}else if((ga|0)==233){ga=0;if(r<<24>>24==65)break;n=a[s>>0]|0;if((n+91&255)<2){m=s;do{m=c[m+12>>2]|0;n=a[m>>0]|0}while((n+91&255)<2)}else m=s;if(n<<24>>24==-88)n=a[m+38>>0]|0;switch(n<<24>>24){case -110:break p;case -109:if((r+-67&255)<2)break p;else break m;case -111:switch(r<<24>>24){case 67:case 69:break p;default:break m}case 110:if(r<<24>>24==66)break p;else break m;case -94:if((r+-67&255)<2&(b[m+32>>1]|0)<0)break p;else break m;default:break m}}while(0);a[o>>0]=65}else{if(!(w&(c[(c[r>>2]|0)+4>>2]&2048|0)!=0))break;a[U+i>>0]=65}while(0);i=i+1|0;if((i|0)==(H|0)){F=q;break}}}G=(U|0)==0;q:do if(!(u<<16>>16==0|G)?(O=U+p|0,(O|0)!=0):0){q=(Eu(O)|0)+1|0;r:do if(!da){ca=Sv(q|0,0,-1,-1)|0;ba=L()|0;if(ba>>>0>0|(ba|0)==0&ca>>>0>2147483390){D=0;break q}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](q)|0;ga=272;break}o=Wa[c[29356>>2]&127](q)|0;if((c[14985]|0)>>>0>>0)c[14985]=q;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){ca=c[14978]|0;ba=Tv(m|0,n|0,o|0,((o|0)<0)<<31>>31|0)|0;I=L()|0;c[14768]=((I|0)<0|(I|0)==0&ba>>>0<=ca>>>0)&1}m=Wa[c[29340>>2]&127](o)|0;if(!m){D=0;break q}n=Wa[c[29352>>2]&127](m)|0;n=(c[14978]|0)+n|0;c[14978]=n;if(n>>>0>(c[14982]|0)>>>0)c[14982]=n;n=(c[14981]|0)+1|0;c[14981]=n;if(n>>>0<=(c[14987]|0)>>>0)break;c[14987]=n}else{if(c[da+272>>2]|0){if(a[da+81>>0]|0){D=0;break q}}else{do if(!(0<0|(0==0?(e[da+276>>1]|0)>>>0>>0:0))){n=da+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];ga=da+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=272;break r}n=da+296|0;m=c[n>>2]|0;if(!m){m=da+292|0;break}else{c[n>>2]=c[m>>2];ga=da+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=272;break r}}else m=da+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(da,q,0)|0;ga=272}while(0);if((ga|0)==272)if(!m){D=0;break}ew(m|0,O|0,q|0)|0;D=m}else D=0;while(0);E=c[Q>>2]|0;o=(P|0)!=0;if(o)m=(b[P+12>>1]&40)!=0;else m=1;B=m&1;C=(v|0)!=0;if(C)m=(b[v+12>>1]&40)!=0;else m=1;n=m&1;A=(M<<16>>16!=0|o)&1;do if(o){z=c[(c[P>>2]|0)+16>>2]|0;q=F+p|0;y=N&65535;km(f,z,q,y);if(b[P+10>>1]&256){if(!(a[(c[g>>2]|0)+81>>0]|0))m=(c[g+104>>2]|0)+(((c[g+108>>2]|0)+-1|0)*20|0)|0;else m=59308;ca=c[j+36>>2]|0;c[m+12>>2]=ca>>>1;b[m+2>>1]=ca&1}o=a[z>>0]|0;if((o+91&255)<2){m=z;do{m=c[m+12>>2]|0;o=a[m>>0]|0}while((o+91&255)<2)}else m=z;if(o<<24>>24==-88)o=a[m+38>>0]|0;s:do switch(o<<24>>24){case -110:case -111:case 110:case -109:break;case -94:{if(c[m+4>>2]&1048576|0){ga=293;break s}o=c[m+44>>2]|0;if(!o){ga=293;break s}m=b[m+32>>1]|0;if(m<<16>>16<=-1)break s;if(!(a[(c[o+4>>2]|0)+(m<<16>>16<<4)+12>>0]|0))ga=293;break}default:ga=293}while(0);do if((ga|0)==293){m=g+108|0;o=c[m>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[m>>2]=o+1;ca=c[g+104>>2]|0;a[ca+(o*20|0)>>0]=50;b[ca+(o*20|0)+2>>1]=0;c[ca+(o*20|0)+4>>2]=q;c[ca+(o*20|0)+8>>2]=E;c[ca+(o*20|0)+12>>2]=0;c[ca+(o*20|0)+16>>2]=0;a[ca+(o*20|0)+1>>0]=0;break}else{Di(g,50,q,E,0)|0;break}}while(0);t:do if(!G){x=U+p|0;if(!(N<<16>>16))break;i=z+38|0;t=z+20|0;w=z+20|0;s=0;while(1){o=a[z>>0]|0;if(o<<24>>24==-88)m=a[i>>0]|0;else m=o;switch(m<<24>>24){case -87:{m=t;ga=303;break}case -125:{m=c[w>>2]|0;ga=303;break}default:m=z}u:do if((ga|0)==303){if((c[c[m>>2]>>2]|0)<2){m=z;break}do if(o<<24>>24!=-125){if((a[i>>0]|0)==-125)break;m=c[(c[t>>2]|0)+4+(s*20|0)>>2]|0;break u}while(0);m=c[(c[c[w>>2]>>2]|0)+4+(s*20|0)>>2]|0}while(0);q=x+s|0;r=a[q>>0]|0;o=Xj(m)|0;if(r<<24>>24==0|o<<24>>24==0)if(r<<24>>24==65|((o|r)<<24>>24==0?1:((o&255)+(r&255)&255)<<24>>24==65))ga=321;else ga=311;else if(r<<24>>24==65|r<<24>>24<67&o<<24>>24<67)ga=321;else ga=311;v:do if((ga|0)==311){ga=0;o=a[m>>0]|0;if((o+91&255)<2)do{m=c[m+12>>2]|0;o=a[m>>0]|0}while((o+91&255)<2);if(o<<24>>24==-88)o=a[m+38>>0]|0;switch(o<<24>>24){case -110:{ga=321;break v}case -109:if((r+-67&255)<2){ga=321;break v}else break v;case -111:switch(r<<24>>24){case 67:case 69:{ga=321;break v}default:break v}case 110:if(r<<24>>24==66){ga=321;break v}else break v;case -94:if((r+-67&255)<2&(b[m+32>>1]|0)<0){ga=321;break v}else break v;default:break v}}while(0);if((ga|0)==321){ga=0;a[q>>0]=65}s=s+1|0;if((s|0)==(y|0))break t}}while(0);o=y+p|0;m=a[z>>0]|0;if(m<<24>>24==-88)m=a[z+38>>0]|0;switch(m<<24>>24){case -87:{S=z+20|0;ga=328;break}case -125:{S=c[z+20>>2]|0;ga=328;break}default:{}}if((ga|0)==328?(c[c[S>>2]>>2]|0)>=2:0){x=A;y=o;w=1;m=0;break}lm(j,P);x=A;y=o;w=B;m=0}else{if(!(J<<24>>24)){x=A;y=p;w=B;m=0;break}m=F+p|0;o=g+108|0;q=c[o>>2]|0;if((c[g+112>>2]|0)>(q|0)){c[o>>2]=q+1;ca=c[g+104>>2]|0;a[ca+(q*20|0)>>0]=73;b[ca+(q*20|0)+2>>1]=0;c[ca+(q*20|0)+4>>2]=0;c[ca+(q*20|0)+8>>2]=m;c[ca+(q*20|0)+12>>2]=0;c[ca+(q*20|0)+16>>2]=0;a[ca+(q*20|0)+1>>0]=0}else Di(g,73,0,m,0)|0;x=1;y=p+1|0;w=0;m=J}while(0);m=y-(m&255)|0;t=c[T>>2]|0;w:do if((U|0)!=0&(m|0)>0){q=U;o=F;while(1){if((a[q>>0]|0)!=65){i=q;break}r=m+-1|0;o=o+1|0;q=q+1|0;if((m|0)>1)m=r;else{i=q;m=r;break}}x:do if((m|0)>1){q=m;while(1){m=q+-1|0;if((a[i+m>>0]|0)!=65)break x;if((q|0)>2)q=m;else{ga=343;break}}}else ga=343;while(0);if((ga|0)==343)if((m|0)==1)q=1;else break;r=t+108|0;m=c[r>>2]|0;if((c[t+112>>2]|0)>(m|0)){c[r>>2]=m+1;ca=c[t+104>>2]|0;a[ca+(m*20|0)>>0]=91;b[ca+(m*20|0)+2>>1]=0;c[ca+(m*20|0)+4>>2]=o;c[ca+(m*20|0)+8>>2]=q;c[ca+(m*20|0)+12>>2]=0;c[ca+(m*20|0)+16>>2]=0;a[ca+(m*20|0)+1>>0]=0}else m=Di(t,91,o,q,0)|0;o=c[t>>2]|0;if(a[o+81>>0]|0){if((q|0)==-12)break;kg(o,q,i);break}if((m|0)<0)m=(c[r>>2]|0)+-1|0;o=c[t+104>>2]|0;r=o+(m*20|0)|0;do if((q|0)<=-1){s=o+(m*20|0)+1|0;if(a[s>>0]|0)break;if((q|0)==-3){c[o+(m*20|0)+16>>2]=i;a[s>>0]=-3;break w}c[o+(m*20|0)+16>>2]=i;a[s>>0]=q;if((q|0)!=-12)break w;ca=i+12|0;c[ca>>2]=(c[ca>>2]|0)+1;break w}while(0);Ei(t,r,i,q)}while(0);ca=b[_+42>>1]|0;do if(!(ca<<16>>16!=0&(y|0)==(ca&65535|0))){r=g+108|0;do if(c[$>>2]&262144){m=c[r>>2]|0;o=g+112|0;if((c[o>>2]|0)>(m|0)){c[r>>2]=m+1;q=c[g+104>>2]|0;a[q+(m*20|0)>>0]=119;b[q+(m*20|0)+2>>1]=0;c[q+(m*20|0)+4>>2]=Z;c[q+(m*20|0)+8>>2]=0;c[q+(m*20|0)+12>>2]=0;c[q+(m*20|0)+16>>2]=0;a[q+(m*20|0)+1>>0]=0;q=o;break}else{Di(g,119,Z,0,0)|0;q=o;break}}else q=g+112|0;while(0);o=a[44009+(x<<2|aa|w<<1)>>0]|0;m=c[r>>2]|0;if((c[q>>2]|0)>(m|0)){c[r>>2]=m+1;ca=c[g+104>>2]|0;a[ca+(m*20|0)>>0]=o;b[ca+(m*20|0)+2>>1]=0;c[ca+(m*20|0)+4>>2]=Z;c[ca+(m*20|0)+8>>2]=E;c[ca+(m*20|0)+12>>2]=F;c[ca+(m*20|0)+16>>2]=0;a[ca+(m*20|0)+1>>0]=0}else m=Di(g,o&255,Z,E,F)|0;if(a[(c[g>>2]|0)+81>>0]|0)break;ca=c[g+104>>2]|0;a[ca+(m*20|0)+1>>0]=-3;c[ca+(m*20|0)+16>>2]=y}while(0);do if(C){y=c[(c[v>>2]|0)+16>>2]|0;w=F+p|0;x=u&65535;km(f,y,w,x);if(b[v+10>>1]&256){if(!(a[(c[g>>2]|0)+81>>0]|0))m=(c[g+104>>2]|0)+(((c[g+108>>2]|0)+-1|0)*20|0)|0;else m=59308;ca=c[j+36>>2]|0;c[m+12>>2]=ca>>>1;b[m+2>>1]=ca&1}o=a[y>>0]|0;if((o+91&255)<2){m=y;do{m=c[m+12>>2]|0;o=a[m>>0]|0}while((o+91&255)<2)}else m=y;if(o<<24>>24==-88)o=a[m+38>>0]|0;y:do switch(o<<24>>24){case -110:case -111:case 110:case -109:break;case -94:{if(c[m+4>>2]&1048576|0){ga=385;break y}o=c[m+44>>2]|0;if(!o){ga=385;break y}m=b[m+32>>1]|0;if(m<<16>>16<=-1)break y;if(!(a[(c[o+4>>2]|0)+(m<<16>>16<<4)+12>>0]|0))ga=385;break}default:ga=385}while(0);do if((ga|0)==385){m=g+108|0;o=c[m>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[m>>2]=o+1;ca=c[g+104>>2]|0;a[ca+(o*20|0)>>0]=50;b[ca+(o*20|0)+2>>1]=0;c[ca+(o*20|0)+4>>2]=w;c[ca+(o*20|0)+8>>2]=E;c[ca+(o*20|0)+12>>2]=0;c[ca+(o*20|0)+16>>2]=0;a[ca+(o*20|0)+1>>0]=0;break}else{Di(g,50,w,E,0)|0;break}}while(0);z:do if(!((D|0)==0|u<<16>>16==0)){i=y+38|0;t=y+20|0;u=y+20|0;s=0;do{o=a[y>>0]|0;if(o<<24>>24==-88)m=a[i>>0]|0;else m=o;switch(m<<24>>24){case -87:{m=t;ga=394;break}case -125:{m=c[u>>2]|0;ga=394;break}default:m=y}A:do if((ga|0)==394){if((c[c[m>>2]>>2]|0)<2){m=y;break}do if(o<<24>>24!=-125){if((a[i>>0]|0)==-125)break;m=c[(c[t>>2]|0)+4+(s*20|0)>>2]|0;break A}while(0);m=c[(c[c[u>>2]>>2]|0)+4+(s*20|0)>>2]|0}while(0);q=D+s|0;r=a[q>>0]|0;o=Xj(m)|0;if(r<<24>>24==0|o<<24>>24==0)if(r<<24>>24==65|((o|r)<<24>>24==0?1:((o&255)+(r&255)&255)<<24>>24==65))ga=412;else ga=402;else if(r<<24>>24==65|r<<24>>24<67&o<<24>>24<67)ga=412;else ga=402;B:do if((ga|0)==402){ga=0;o=a[m>>0]|0;if((o+91&255)<2)do{m=c[m+12>>2]|0;o=a[m>>0]|0}while((o+91&255)<2);if(o<<24>>24==-88)o=a[m+38>>0]|0;switch(o<<24>>24){case -110:{ga=412;break B}case -109:if((r+-67&255)<2){ga=412;break B}else break B;case -111:switch(r<<24>>24){case 67:case 69:{ga=412;break B}default:break B}case 110:if(r<<24>>24==66){ga=412;break B}else break B;case -94:if((r+-67&255)<2&(b[m+32>>1]|0)<0){ga=412;break B}else break B;default:break B}}while(0);if((ga|0)==412){ga=0;a[q>>0]=65}s=s+1|0}while((s|0)!=(x|0));t=c[T>>2]|0;q=D;m=x;o=w;while(1){if((a[q>>0]|0)!=65){i=q;break}r=m+-1|0;o=o+1|0;q=q+1|0;if((m|0)>1)m=r;else{i=q;m=r;break}}C:do if((m|0)>1){q=m;while(1){m=q+-1|0;if((a[i+m>>0]|0)!=65)break C;if((q|0)>2)q=m;else{ga=421;break}}}else ga=421;while(0);if((ga|0)==421)if((m|0)==1)q=1;else break;r=t+108|0;m=c[r>>2]|0;if((c[t+112>>2]|0)>(m|0)){c[r>>2]=m+1;ca=c[t+104>>2]|0;a[ca+(m*20|0)>>0]=91;b[ca+(m*20|0)+2>>1]=0;c[ca+(m*20|0)+4>>2]=o;c[ca+(m*20|0)+8>>2]=q;c[ca+(m*20|0)+12>>2]=0;c[ca+(m*20|0)+16>>2]=0;a[ca+(m*20|0)+1>>0]=0}else m=Di(t,91,o,q,0)|0;o=c[t>>2]|0;if(a[o+81>>0]|0){if((q|0)==-12)break;kg(o,q,i);break}if((m|0)<0)m=(c[r>>2]|0)+-1|0;o=c[t+104>>2]|0;r=o+(m*20|0)|0;do if((q|0)<=-1){s=o+(m*20|0)+1|0;if(a[s>>0]|0)break;if((q|0)==-3){c[o+(m*20|0)+16>>2]=i;a[s>>0]=-3;break z}c[o+(m*20|0)+16>>2]=i;a[s>>0]=q;if((q|0)!=-12)break z;ca=i+12|0;c[ca>>2]=(c[ca>>2]|0)+1;break z}while(0);Ei(t,r,i,q)}while(0);p=x+p|0;m=a[y>>0]|0;if(m<<24>>24==-88)m=a[y+38>>0]|0;switch(m<<24>>24){case -87:{W=y+20|0;ga=442;break}case -125:{W=c[y+20>>2]|0;ga=442;break}default:{}}if((ga|0)==442?(c[c[W>>2]>>2]|0)>=2:0){n=1;break}lm(j,v)}else{if(!(R<<24>>24))break;m=F+p|0;n=g+108|0;o=c[n>>2]|0;if((c[g+112>>2]|0)>(o|0)){c[n>>2]=o+1;ca=c[g+104>>2]|0;a[ca+(o*20|0)>>0]=73;b[ca+(o*20|0)+2>>1]=0;c[ca+(o*20|0)+4>>2]=0;c[ca+(o*20|0)+8>>2]=m;c[ca+(o*20|0)+12>>2]=0;c[ca+(o*20|0)+16>>2]=0;a[ca+(o*20|0)+1>>0]=0}else Di(g,73,0,m,0)|0;n=0;p=p+1|0}while(0);D:do if(!G){do if(da|0){if(c[da+480>>2]|0){Xd(da,U);break D}m=U;if((c[da+304>>2]|0)>>>0>m>>>0)break;if((c[da+308>>2]|0)>>>0<=m>>>0)break;ca=da+300|0;c[U>>2]=c[ca>>2];c[ca>>2]=U;break D}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](U);break}else{ca=Wa[c[29352>>2]&127](U)|0;c[14978]=(c[14978]|0)-ca;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](U);break}}while(0);E:do if(D|0){do if(da|0){if(c[da+480>>2]|0){Xd(da,D);break E}m=D;if((c[da+304>>2]|0)>>>0>m>>>0)break;if((c[da+308>>2]|0)>>>0<=m>>>0)break;da=da+300|0;c[D>>2]=c[da>>2];c[da>>2]=D;break E}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](D);break}else{da=Wa[c[29352>>2]&127](D)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](D);break}}while(0);o=g+108|0;m=c[o>>2]|0;c[j+52>>2]=m;do if(p|0){n=a[44017+(n|aa<<1)>>0]|0;if((c[g+112>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=n;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=Z;c[da+(m*20|0)+8>>2]=E;c[da+(m*20|0)+12>>2]=F;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else m=Di(g,n&255,Z,E,F)|0;if(a[(c[g>>2]|0)+81>>0]|0)break;da=c[g+104>>2]|0;a[da+(m*20|0)+1>>0]=-3;c[da+(m*20|0)+16>>2]=p}while(0);do if(c[$>>2]&262144|0){m=c[o>>2]|0;if((c[g+112>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=119;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=Z;c[da+(m*20|0)+8>>2]=1;c[da+(m*20|0)+12>>2]=0;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0;break}else{Di(g,119,Z,1,0)|0;break}}while(0);if((c[$>>2]&64|0)!=0?(b[X>>1]&32)==0:0)w=1;else ga=481;F:do if((ga|0)==481){p=Y+12|0;m=c[p>>2]|0;if(c[m+36>>2]&32|0){if((ia|0)==(Z|0)){w=0;break}m=c[m+8>>2]|0;G:do if(!m)m=0;else while(1){da=m+55|0;if(((d[da>>0]|d[da+1>>0]<<8)&3)==2)break G;m=c[m+20>>2]|0;if(!m){m=0;break}}while(0);x=m+50|0;i=b[x>>1]|0;p=i&65535;do if(i<<16>>16==1){n=f+19|0;p=a[n>>0]|0;if(!(p<<24>>24)){n=(c[V>>2]|0)+1|0;c[V>>2]=n;ga=554;break}else{ga=p+-1<<24>>24;a[n>>0]=ga;n=c[f+148+((ga&255)<<2)>>2]|0;ga=554;break}}else{q=f+32|0;n=c[q>>2]|0;r=f+28|0;s=c[r>>2]|0;if((s|0)<(p|0)){n=c[V>>2]|0;c[V>>2]=n+p;n=n+1|0}else{c[q>>2]=n+p;c[r>>2]=s-p}if(i<<16>>16){ga=554;break}q=0;p=g+112|0}while(0);if((ga|0)==554){t=m+4|0;u=Y+52|0;p=g+112|0;v=Y+4|0;w=g+104|0;i=0;do{r=b[(c[t>>2]|0)+(i<<1)>>1]|0;m=b[u>>1]|0;H:do if(!(m<<16>>16))m=-1;else{s=c[v>>2]|0;q=m&65535;m=0;while(1){if((b[s+(m<<1)>>1]|0)==r<<16>>16)break H;m=m+1|0;if(m>>>0>=q>>>0){m=-1;break}}}while(0);m=m<<16>>16;q=i+n|0;r=c[o>>2]|0;if((c[p>>2]|0)>(r|0)){c[o>>2]=r+1;da=c[w>>2]|0;a[da+(r*20|0)>>0]=90;b[da+(r*20|0)+2>>1]=0;c[da+(r*20|0)+4>>2]=Z;c[da+(r*20|0)+8>>2]=m;c[da+(r*20|0)+12>>2]=q;c[da+(r*20|0)+16>>2]=0;a[da+(r*20|0)+1>>0]=0}else Di(g,90,Z,m,q)|0;i=i+1|0;m=b[x>>1]|0}while(i>>>0<(m&65535)>>>0);q=m&65535}m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=28;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=ia;c[da+(m*20|0)+8>>2]=pa;c[da+(m*20|0)+12>>2]=n;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else m=Di(g,28,ia,pa,n)|0;if(a[(c[g>>2]|0)+81>>0]|0){w=0;break}w=c[g+104>>2]|0;a[w+(m*20|0)+1>>0]=-3;c[w+(m*20|0)+16>>2]=q;w=0;break}m=e[X>>1]|0;do if(!(m&1024)){if(m&4096|0?(a[h+49>>0]|0)==1:0)break;m=c[h>>2]|0;u=c[m+8>>2]|0;t=u+108|0;n=c[t>>2]|0;if((c[u+112>>2]|0)>(n|0)){c[t>>2]=n+1;da=c[u+104>>2]|0;a[da+(n*20|0)>>0]=-122;b[da+(n*20|0)+2>>1]=0;c[da+(n*20|0)+4>>2]=Z;c[da+(n*20|0)+8>>2]=0;c[da+(n*20|0)+12>>2]=ia;c[da+(n*20|0)+16>>2]=0;a[da+(n*20|0)+1>>0]=0}else Di(u,134,Z,0,ia)|0;if(!(b[X>>1]&32)){w=0;break F}da=c[m+116>>2]|0;if(c[((da|0)==0?m:da)+80>>2]|0){w=0;break F}q=c[m>>2]|0;s=(c[p>>2]|0)+42|0;i=(b[s>>1]<<2)+4|0;I:do if(!q){da=Sv(i|0,0,-1,-1)|0;ca=L()|0;if(ca>>>0>0|(ca|0)==0&da>>>0>2147483390){w=0;break F}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](i)|0;ga=520;break}m=Wa[c[29356>>2]&127](i)|0;if((c[14985]|0)>>>0>>0)c[14985]=i;p=59064;n=c[p>>2]|0;p=c[p+4>>2]|0;if((p|0)>0|(p|0)==0&n>>>0>0){da=c[14978]|0;ca=Tv(n|0,p|0,m|0,((m|0)<0)<<31>>31|0)|0;ba=L()|0;c[14768]=((ba|0)<0|(ba|0)==0&ca>>>0<=da>>>0)&1}n=Wa[c[29340>>2]&127](m)|0;if(!n){w=0;break F}m=Wa[c[29352>>2]&127](n)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0){r=n;break}c[14987]=m;r=n}else{if(c[q+272>>2]|0){if(a[q+81>>0]|0){w=0;break F}}else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){n=q+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];ga=q+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=520;break I}n=q+296|0;m=c[n>>2]|0;if(!m){m=q+292|0;break}else{c[n>>2]=c[m>>2];ga=q+284|0;c[ga>>2]=(c[ga>>2]|0)+1;ga=520;break I}}else m=q+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(q,i,0)|0;ga=520}while(0);if((ga|0)==520)if(!m){w=0;break F}else r=m;gw(r|0,0,i|0)|0;c[r>>2]=b[s>>1];m=b[Y+52>>1]|0;if((m&65535)>1){q=c[Y+4>>2]|0;p=(m&65535)+-1|0;m=0;do{n=b[q+(m<<1)>>1]|0;if(n<<16>>16>-1){m=m+1|0;c[r+((n<<16>>16)+1<<2)>>2]=m}else m=m+1|0}while((m|0)<(p|0))}n=c[u>>2]|0;if(!(a[n+81>>0]|0)){m=(c[t>>2]|0)+-1|0;n=c[u+104>>2]|0;p=n+(m*20|0)+1|0;if(!(a[p>>0]|0)){c[n+(m*20|0)+16>>2]=r;a[p>>0]=-15;w=0;break F}else{Ei(u,n+(m*20|0)|0,r,-15);w=0;break F}}do if(n|0){if(c[n+480>>2]|0){Xd(n,r);w=0;break F}m=r;if((c[n+304>>2]|0)>>>0>m>>>0)break;if((c[n+308>>2]|0)>>>0<=m>>>0)break;w=n+300|0;c[r>>2]=c[w>>2];c[w>>2]=r;w=0;break F}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);w=0;break F}else{w=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);w=0;break F}}while(0);p=(c[V>>2]|0)+1|0;c[V>>2]=p;m=c[o>>2]|0;n=g+112|0;if((c[n>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=-121;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=Z;c[da+(m*20|0)+8>>2]=p;c[da+(m*20|0)+12>>2]=0;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else Di(g,135,Z,p,0)|0;m=c[o>>2]|0;if((c[n>>2]|0)>(m|0)){c[o>>2]=m+1;w=c[g+104>>2]|0;a[w+(m*20|0)>>0]=31;b[w+(m*20|0)+2>>1]=0;c[w+(m*20|0)+4>>2]=ia;c[w+(m*20|0)+8>>2]=0;c[w+(m*20|0)+12>>2]=p;c[w+(m*20|0)+16>>2]=0;a[w+(m*20|0)+1>>0]=0;w=0;break}else{Di(g,31,ia,0,p)|0;w=0;break}}while(0);do if(!(c[j>>2]|0)){if(b[X>>1]&32)break;r=c[Y+40>>2]|0;do if(r|0){c[ma>>2]=0;c[ma+4>>2]=0;c[ma+8>>2]=0;c[ma+12>>2]=0;c[ma+16>>2]=0;c[ma+20>>2]=0;c[ma+4>>2]=147;c[ma+24>>2]=na;c[na+4>>2]=ia;c[na+8>>2]=Z;if((c[r>>2]|0)<=0)break;s=Y+4|0;i=na+12|0;t=h+16|0;u=h+8|0;v=h+12|0;q=0;do{J:do if((b[(c[s>>2]|0)+(q<<1)>>1]|0)==-2){c[i>>2]=q;c[na>>2]=c[r+4+(q*20|0)>>2];m=c[t>>2]|0;if(m|0)_j(ma,m)|0;n=c[u>>2]|0;K:do if(n|0){m=c[n>>2]|0;if((m|0)<=0)break;n=n+4|0;while(1){p=c[n>>2]|0;if(p|0?_j(ma,p)|0:0)break K;if((m|0)>1){m=m+-1|0;n=n+20|0}else break}}while(0);n=c[v>>2]|0;if(!n)break;m=c[n>>2]|0;if((m|0)<=0)break;n=n+4|0;while(1){p=c[n>>2]|0;if(p|0?_j(ma,p)|0:0)break J;if((m|0)>1){m=m+-1|0;n=n+20|0}else break}}while(0);q=q+1|0}while((q|0)<(c[r>>2]|0))}while(0)}while(0);m=c[Y+36>>2]|0;if(m|0)mm(m,ia,oa);m=c[$>>2]|0;do if(!(m&4096)){n=j+45|0;if(!aa){a[n>>0]=5;break}else{a[n>>0]=4;break}}else a[j+45>>0]=-86;while(0);c[j+48>>2]=Z;a[j+46>>0]=m>>>16&1;if(!(m&15))a[j+47>>0]=1;E=w?0:Y}else{q=c[ea+8+(fa*72|0)+28>>2]|0;m=c[ea+8+(fa*72|0)+24>>2]|0;o=g+108|0;n=c[o>>2]|0;p=g+112|0;if((c[p>>2]|0)>(n|0)){c[o>>2]=n+1;da=c[g+104>>2]|0;a[da+(n*20|0)>>0]=13;b[da+(n*20|0)+2>>1]=0;c[da+(n*20|0)+4>>2]=q;c[da+(n*20|0)+8>>2]=0;c[da+(n*20|0)+12>>2]=m;c[da+(n*20|0)+16>>2]=0;a[da+(n*20|0)+1>>0]=0}else Di(g,13,q,0,m)|0;m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;da=c[g+104>>2]|0;a[da+(m*20|0)>>0]=14;b[da+(m*20|0)+2>>1]=0;c[da+(m*20|0)+4>>2]=q;c[da+(m*20|0)+8>>2]=z;c[da+(m*20|0)+12>>2]=0;c[da+(m*20|0)+16>>2]=0;a[da+(m*20|0)+1>>0]=0}else m=Di(g,14,q,z,0)|0;c[j+52>>2]=m;a[j+45>>0]=11;E=0}while(0);H=h+100|0;I=h+92|0;D=ea+8+(fa*72|0)+36|0;w=h+50|0;x=j+4|0;y=na+4|0;z=ma+4|0;A=ma+24|0;v=ma+20|0;B=j+36|0;F=g+112|0;G=g+104|0;m=(E|0)==0?2:1;while(1){n=c[I>>2]|0;if((n|0)<=0){ga=813;break}C=(m|0)==1;u=(m|0)<3;m=0;t=c[H>>2]|0;while(1){i=t+10|0;p=b[i>>1]|0;L:do if(!(p&6)){h=t+40|0;fa=qa;if(!((c[fa>>2]&c[h>>2]|0)==0?(c[fa+4>>2]&c[h+4>>2]|0)==0:0)){a[w>>0]=1;break}s=c[t>>2]|0;if(a[D>>0]&8?(c[s+4>>2]&1|0)==0:0)break;do if(C){h=c[x>>2]|0;c[ma>>2]=0;c[ma+4>>2]=0;c[ma+8>>2]=0;c[ma+12>>2]=0;c[ma+16>>2]=0;c[ma+20>>2]=0;c[y>>2]=h;c[na>>2]=E;c[z>>2]=148;c[A>>2]=na;if((s|0)!=0?(_j(ma,s)|0,(a[v>>0]|0)!=0):0){m=2;break L}else{ga=797;break}}else if(u)ga=797;while(0);if((ga|0)==797){ga=0;p=b[i>>1]|0;if(p&4096){m=(m|0)==0?3:m;break}}if((p&512)!=0?(ha=c[B>>2]|0,(ha|0)!=0):0){q=(ha<<1&2)+18|0;r=ha>>>1;p=c[o>>2]|0;if((c[F>>2]|0)>(p|0)){c[o>>2]=p+1;h=c[G>>2]|0;a[h+(p*20|0)>>0]=q;b[h+(p*20|0)+2>>1]=0;c[h+(p*20|0)+4>>2]=r;c[h+(p*20|0)+8>>2]=0;c[h+(p*20|0)+12>>2]=0;c[h+(p*20|0)+16>>2]=0;a[h+(p*20|0)+1>>0]=0}else p=Di(g,q,r,0,0)|0;Tj(f,s,pa,16);if(p|0){q=c[o>>2]|0;if(!(a[(c[g>>2]|0)+81>>0]|0))p=(c[G>>2]|0)+(((p|0)<0?q+-1|0:p)*20|0)|0;else p=59308;c[p+8>>2]=q}}else Tj(f,s,pa,16);b[i>>1]=b[i>>1]|4}while(0);if((n|0)>1){t=t+48|0;n=n+-1|0}else break}if((m|0)<=0){ga=812;break}}if((ga|0)==812){m=c[I>>2]|0;if((m|0)>0){i=ma+4|0;t=ma+12|0;u=ma+16|0;v=ma+8|0;w=ma+20|0;x=ma+24|0;y=ma+28|0;z=ma+17|0;A=ma+18|0;B=ma+72|0;C=na+12|0;s=c[H>>2]|0;while(1){do if((((((b[s+10>>1]&6)==0?(ha=e[s+12>>1]|0,!((ha&130|0)==0|(ha&2048|0)==0)):0)?(c[s+20>>2]|0)==(ia|0):0)?(c[j>>2]|0)==0:0)?(ja=c[s>>2]|0,ka=c[s+28>>2]|0,c[ma>>2]=oa,c[i>>2]=oa,c[t>>2]=0,a[u>>0]=0,c[v>>2]=0,c[w>>2]=131,c[x>>2]=0,c[y>>2]=ia,a[z>>0]=1,a[A>>0]=1,(ka|0)!=-2):0)?(b[B>>1]=ka,la=Tl(ma)|0,la|0):0){p=0;n=la;while(1){r=n+32|0;q=c[r>>2]|0;r=c[r+4>>2]|0;if((q&k|0)==0&(r&l|0)==0){if((q|0)==0&(r|0)==0?b[n+12>>1]&130:0){ga=825;break}p=(p|0)==0?n:p}n=Tl(ma)|0;if(!n){ga=829;break}}if((ga|0)==825)ga=0;else if((ga|0)==829){ga=0;if(!p)break;else n=p}if(b[n+10>>1]&4)break;if(b[n+12>>1]&1){n=c[n>>2]|0;if((c[n+4>>2]&2048|0)!=0?(c[c[c[n+20>>2]>>2]>>2]|0)>1:0)break}else n=c[n>>2]|0;E=na;D=E+52|0;do{c[E>>2]=c[n>>2];E=E+4|0;n=n+4|0}while((E|0)<(D|0));c[C>>2]=c[ja+12>>2];Tj(f,na,pa,16);break}while(0);if((m|0)>1){s=s+48|0;m=m+-1|0}else{m=j;break}}}else ga=813}if((ga|0)==813)m=j;n=c[m>>2]|0;if(n|0){m=c[o>>2]|0;c[j+28>>2]=m;if((c[F>>2]|0)>(m|0)){c[o>>2]=m+1;j=c[G>>2]|0;a[j+(m*20|0)>>0]=70;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=1;c[j+(m*20|0)+8>>2]=n;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0}else Di(g,70,1,n,0)|0;m=c[I>>2]|0;if((m|0)>0){o=c[H>>2]|0;p=0;while(1){n=o+10|0;if((b[n>>1]&6)==0?(j=o+40|0,g=qa,(c[g>>2]&c[j>>2]|0)==0?(c[g+4>>2]&c[j+4>>2]|0)==0:0):0){Tj(f,c[o>>2]|0,pa,16);b[n>>1]=b[n>>1]|4;m=c[I>>2]|0}p=p+1|0;if((p|0)>=(m|0))break;else o=o+48|0}}}f=qa;qa=c[f+4>>2]|0;f=c[f>>2]|0;K(qa|0);Ra=ra;return f|0}function Ml(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=d+12|0;h=c[o>>2]|0;m=d+16|0;j=c[m>>2]|0;n=d+20|0;do if((h|0)<(j|0))m=h;else{k=c[n>>2]|0;l=c[c[c[d>>2]>>2]>>2]|0;j=j*96|0;a:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))p=13;else c[n>>2]=0;else{do if(!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0))){h=l+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];p=l+284|0;c[p>>2]=(c[p>>2]|0)+1;p=14;break a}h=l+296|0;i=c[h>>2]|0;if(!i){h=l+292|0;break}else{c[h>>2]=c[i>>2];p=l+284|0;c[p>>2]=(c[p>>2]|0)+1;p=14;break a}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;p=13}while(0);if((p|0)==13){i=_d(l,j,0)|0;p=14}if((p|0)==14?(c[n>>2]=i,i|0):0){ew(i|0,k|0,(c[o>>2]|0)*48|0)|0;do if(!((k|0)==(d+24|0)|(k|0)==0)){if(c[l+480>>2]|0){Xd(l,k);break}j=k;if((c[l+304>>2]|0)>>>0<=j>>>0?(c[l+308>>2]|0)>>>0>j>>>0:0){j=l+300|0;c[k>>2]=c[j>>2];c[j>>2]=k;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{j=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);h=c[n>>2]|0;k=h;if((c[l+304>>2]|0)>>>0<=k>>>0?(c[l+308>>2]|0)>>>0>k>>>0:0)h=e[l+276>>1]|0;else h=Wa[c[29352>>2]&127](h)|0;c[m>>2]=(h>>>0)/48|0;m=c[o>>2]|0;break}if(!((f|0)==0|(g&1)==0))ni(l,f);c[n>>2]=k;g=0;return g|0}while(0);l=c[n>>2]|0;c[o>>2]=m+1;b:do if(f){h=c[f+4>>2]|0;if(!(h&262144)){b[l+(m*48|0)+8>>1]=1;if(!(h&4096))break;while(1){if(!(h&262144))f=f+12|0;else f=(c[f+20>>2]|0)+4|0;f=c[f>>2]|0;if(!f){f=0;break b}h=c[f+4>>2]|0;if(!(h&4096))break b}}i=c[f+28>>2]|0;j=((i|0)<0)<<31>>31;if(i>>>0<8)if(i>>>0<2)i=-270;else{k=40;do{k=(k&65535)+65526|0;i=cw(i|0,j|0,1)|0;j=L()|0}while(j>>>0<0|(j|0)==0&i>>>0<8);k=k&65535;p=48}else{if(i>>>0>255){k=40;do{k=(k&65535)+40|0;p=i;i=bw(i|0,j|0,4)|0;o=j;j=L()|0}while(o>>>0>0|(o|0)==0&p>>>0>4095);k=k&65535}else k=40;if(j>>>0>0|(j|0)==0&i>>>0>15){do{k=(k&65535)+10&65535;p=i;i=bw(i|0,j|0,1)|0;o=j;j=L()|0}while(o>>>0>0|(o|0)==0&p>>>0>31);p=48}else p=48}if((p|0)==48)i=(k&65535)+65256+(e[3648+((i&7)<<1)>>1]|0)&65535;b[l+(m*48|0)+8>>1]=i;if(h&4096)do{if(!(h&262144))f=f+12|0;else f=(c[f+20>>2]|0)+4|0;f=c[f>>2]|0;if(!f){f=0;break b}h=c[f+4>>2]|0}while((h&4096|0)!=0)}else{b[l+(m*48|0)+8>>1]=1;f=0}while(0);c[l+(m*48|0)>>2]=f;b[l+(m*48|0)+10>>1]=g;c[l+(m*48|0)+4>>2]=d;c[l+(m*48|0)+16>>2]=-1;f=l+(m*48|0)+12|0;h=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));g=m;return g|0}function Nl(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0;qa=Ra;Ra=Ra+16|0;q=qa;da=qa+8|0;ea=qa+4|0;p=c[g>>2]|0;la=c[p>>2]|0;ha=c[la>>2]|0;_=ha+81|0;if(a[_>>0]|0){Ra=qa;return}na=g+20|0;t=c[na>>2]|0;w=t+(h*48|0)|0;ga=p+488|0;oa=c[w>>2]|0;pa=oa+12|0;i=c[pa>>2]|0;if(!i){z=0;A=0}else{z=Pl(ga,i)|0;A=L()|0}u=a[oa>>0]|0;s=u&255;a:do switch(u<<24>>24){case 49:{if(ok(la,oa)|0){Ra=qa;return}i=oa+20|0;if(c[oa+4>>2]&2048|0){j=Ol(ga,c[i>>2]|0)|0;i=L()|0;break a}o=c[i>>2]|0;if((o|0)!=0?(j=c[o>>2]|0,(j|0)>0):0){n=0;m=j;j=0;i=0;do{k=c[o+4+(n*20|0)>>2]|0;if(!k){k=0;l=0}else{k=Pl(ga,k)|0;l=L()|0;m=c[o>>2]|0}j=k|j;i=l|i;n=n+1|0}while((n|0)<(m|0))}else{j=0;i=0}break}case 50:{j=0;i=0;break}default:{i=c[oa+16>>2]|0;if(!i){j=0;i=0}else{j=Pl(ga,i)|0;i=L()|0}}}while(0);m=t+(h*48|0)+32|0;c[m>>2]=j;c[m+4>>2]=i;c[ga>>2]=0;m=Pl(ga,oa)|0;n=L()|0;r=t+(h*48|0)+10|0;if(c[ga>>2]|0)b[r>>1]=b[r>>1]|4096;ka=oa+4|0;if(c[ka>>2]&1){j=b[oa+36>>1]|0;k=c[p+492>>2]|0;b:do if((k|0)>0){i=0;while(1){if((c[p+496+(i<<2)>>2]|0)==(j|0))break;i=i+1|0;if((i|0)>=(k|0)){k=0;l=0;break b}}k=cw(1,0,i|0)|0;l=L()|0}else{k=0;l=0}while(0);i=k|m;j=l|n;m=Sv(k|0,l|0,-1,-1)|0;n=L()|0;ja=bw(i|0,j|0,1)|0;ia=L()|0;if(ia>>>0>>0|(ia|0)==(l|0)&ja>>>0>>0){y=i;x=j;ja=m;ia=n}else{cd(la,43561,q);Ra=qa;return}}else{y=m;x=n;ja=0;ia=0}o=t+(h*48|0)+40|0;c[o>>2]=y;c[o+4>>2]=x;o=t+(h*48|0)+20|0;c[o>>2]=-1;c[t+(h*48|0)+16>>2]=-1;m=t+(h*48|0)+12|0;b[m>>1]=0;c:do switch(u<<24>>24){case 45:case 50:case 53:case 54:case 55:case 56:case 57:case 49:{i=c[pa>>2]|0;d:do if(!i)i=0;else while(1){j=c[i+4>>2]|0;if(!(j&4096))break d;if(!(j&262144))i=i+12|0;else i=(c[i+20>>2]|0)+4|0;i=c[i>>2]|0;if(!i){i=0;break}}while(0);j=c[oa+16>>2]|0;e:do if(!j)j=0;else while(1){k=c[j+4>>2]|0;if(!(k&4096))break e;if(!(k&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=0;break}}while(0);l=t+(h*48|0)+32|0;v=l;v=((c[v>>2]&z|0)==0?(c[v+4>>2]&A|0)==0:0)?8191:2048;k=c[t+(h*48|0)+24>>2]|0;if((k|0)>0)i=c[(c[i+20>>2]|0)+4+((k+-1|0)*20|0)>>2]|0;k=a[i>>0]|0;n=(s+-54|0)>>>0<4;if(n&k<<24>>24==-87){k=c[(c[i+20>>2]|0)+4>>2]|0;i=k;k=a[k>>0]|0}if(k<<24>>24!=-94){if((!((z|0)==0&(A|0)==0)?(R=Sv(z|0,A|0,-1,-1)|0,(R&z|0)==0&((L()|0)&A|0)==0):0)?Ql(f,z,A,da,i)|0:0){i=c[da>>2]|0;k=c[da+4>>2]|0;fa=51}}else{fa=c[i+28>>2]|0;c[da>>2]=fa;k=b[i+32>>1]|0;c[da+4>>2]=k;i=fa;fa=51}if((fa|0)==51){c[o>>2]=i;c[t+(h*48|0)+28>>2]=k;switch(u<<24>>24){case 49:{i=1;break}case 50:{i=256;break}case 45:{i=128;break}default:i=2<>1]=i&v}m=u<<24>>24==45;if(m)b[r>>1]=b[r>>1]|2048;do if(!j)i=w;else{k=c[l>>2]|0;l=c[l+4>>2]|0;i=a[j>>0]|0;if(n&i<<24>>24==-87){i=c[(c[j+20>>2]|0)+4>>2]|0;j=i;i=a[i>>0]|0}if(i<<24>>24!=-94){if((k|0)==0&(l|0)==0){i=w;break}R=Sv(k|0,l|0,-1,-1)|0;if(!((R&k|0)==0&((L()|0)&l|0)==0)){i=w;break}if(!(Ql(f,k,l,da,j)|0)){i=w;break}}else{c[da>>2]=c[j+28>>2];c[da+4>>2]=b[j+32>>1]}f:do if((c[o>>2]|0)>-1){if(!oa)s=0;else s=dk(ha,oa,0,0)|0;do if(!(a[_>>0]|0)){i=Ml(g,s,3)|0;if(!i)break;n=c[na>>2]|0;q=n+(i*48|0)|0;c[n+(i*48|0)+16>>2]=h;b[n+(i*48|0)+8>>1]=b[n+(h*48|0)+8>>1]|0;R=n+(h*48|0)+14|0;a[R>>0]=(a[R>>0]|0)+1<<24>>24;i=n+(i*48|0)+10|0;if(m)b[i>>1]=b[i>>1]|2048;i=n+(h*48|0)|0;R=n+(h*48|0)+10|0;b[R>>1]=b[R>>1]|8;if(b[(c[la>>2]|0)+76>>1]&128){r=0;break f}switch(a[s>>0]|0){case 45:case 53:break;default:{r=0;break f}}if(c[s+4>>2]&1|0){r=0;break f}m=s+12|0;j=c[m>>2]|0;Q=Xj(j)|0;l=s+16|0;k=c[l>>2]|0;R=Xj(k)|0;if(Q<<24>>24!=R<<24>>24?!(Q<<24>>24>66&R<<24>>24>66):0){r=0;break f}g:do if(!(c[j+4>>2]&256)){do if(k|0){if(!(c[k+4>>2]&256))break;j=Yi(la,k)|0;fa=87;break g}while(0);j=Yi(la,j)|0;if(j|0){fa=88;break}j=Yi(la,k)|0;fa=87}else{j=Yi(la,j)|0;fa=87}while(0);if((fa|0)==87?j|0:0)fa=88;do if((fa|0)==88){if((c[j+12>>2]|0)==78?(c[j+8>>2]|0)==0:0)break;k=c[l>>2]|0;j=Yi(la,c[m>>2]|0)|0;if(!j)j=c[(c[la>>2]|0)+8>>2]|0;k=Yi(la,k)|0;if(!k)k=c[(c[la>>2]|0)+8>>2]|0;m=c[j>>2]|0;k=c[k>>2]|0;R=a[m>>0]|0;j=(d[208+(R&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0;if(!(R<<24>>24==0|(j|0)!=0)){l=k;k=m;do{k=k+1|0;l=l+1|0;R=a[k>>0]|0;j=(d[208+(R&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(R<<24>>24==0|(j|0)!=0))}if(j|0){r=0;break f}}while(0);r=n+(h*48|0)+12|0;b[r>>1]=b[r>>1]|2048;r=2048;break f}else{if(!s)break;ni(ha,s)}while(0);Ra=qa;return}else{s=oa;i=w;q=w;r=0}while(0);o=s+16|0;k=(c[o>>2]|0)+4|0;l=c[k>>2]|0;m=l&256;p=s+12|0;n=c[p>>2]|0;j=n;do if((m|0)==(c[n+4>>2]&256|0)){if(m|0){c[k>>2]=l&-257;break}if(!(Yi(la,n)|0)){j=c[p>>2]|0;break}else{j=c[p>>2]|0;R=j+4|0;c[R>>2]=c[R>>2]|256;break}}while(0);R=c[o>>2]|0;c[o>>2]=j;c[p>>2]=R;j=a[s>>0]|0;if((j&255)>53)a[s>>0]=((j&255)+202^2)+54;c[q+20>>2]=c[da>>2];c[q+28>>2]=c[da+4>>2];j=q+32|0;c[j>>2]=ja|z;c[j+4>>2]=ia|A;j=q+40|0;c[j>>2]=y;c[j+4>>2]=x;j=a[s>>0]|0;switch(j<<24>>24){case 49:{j=1;break}case 50:{j=256;break}case 45:{j=128;break}default:j=2<<(j&255)+-53}b[q+12>>1]=j+r&(v&65535)}while(0);break}default:{switch(a[oa>>0]|0){case 48:{if((a[g+8>>0]|0)!=44){i=w;break c}k=c[oa+20>>2]|0;l=oa+36|0;i=c[pa>>2]|0;if(!i)j=0;else j=dk(ha,i,0,0)|0;i=c[k+4>>2]|0;if(!i)i=0;else i=dk(ha,i,0,0)|0;i=ej(la,57,j,i)|0;if(i|0){R=i+4|0;c[R>>2]=c[R>>2]|c[ka>>2]&1;b[i+36>>1]=b[l>>1]|0}R=Ml(g,i,3)|0;Nl(f,g,R);i=c[na>>2]|0;c[i+(R*48|0)+16>>2]=h;b[i+(R*48|0)+8>>1]=b[i+(h*48|0)+8>>1]|0;i=i+(h*48|0)+14|0;a[i>>0]=(a[i>>0]|0)+1<<24>>24;i=c[pa>>2]|0;if(!i)j=0;else j=dk(ha,i,0,0)|0;i=c[k+24>>2]|0;if(!i)i=0;else i=dk(ha,i,0,0)|0;i=ej(la,55,j,i)|0;if(i|0){R=i+4|0;c[R>>2]=c[R>>2]|c[ka>>2]&1;b[i+36>>1]=b[l>>1]|0}R=Ml(g,i,3)|0;Nl(f,g,R);i=c[na>>2]|0;c[i+(R*48|0)+16>>2]=h;b[i+(R*48|0)+8>>1]=b[i+(h*48|0)+8>>1]|0;R=i+(h*48|0)+14|0;a[R>>0]=(a[R>>0]|0)+1<<24>>24;i=i+(h*48|0)|0;break c}case 43:break;default:{i=w;break c}}N=c[g>>2]|0;O=c[N>>2]|0;P=c[O>>2]|0;H=c[na>>2]|0;Q=c[H+(h*48|0)>>2]|0;h:do if(!P){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](416)|0;fa=146;break}i=Wa[c[29356>>2]&127](416)|0;if((c[14985]|0)>>>0<416)c[14985]=416;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){fa=c[14978]|0;J=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;I=L()|0;c[14768]=((I|0)<0|(I|0)==0&J>>>0<=fa>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(i){j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0){c[14987]=j;fa=148}else fa=148}else fa=147}else{if(c[P+272>>2]|0){if(a[P+81>>0]|0){fa=147;break}}else{do if((e[P+276>>1]|0)>=416){j=P+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];fa=P+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=146;break h}j=P+296|0;i=c[j>>2]|0;if(!i){i=P+292|0;break}else{c[j>>2]=c[i>>2];fa=P+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=146;break h}}else i=P+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(P,416,0)|0;fa=146}while(0);if((fa|0)==146)if(!i)fa=147;else fa=148;i:do if((fa|0)==147)c[H+(h*48|0)+28>>2]=0;else if((fa|0)==148){gw(i+8|0,0,408)|0;c[H+(h*48|0)+28>>2]=i;j=H+(h*48|0)+10|0;b[j>>1]=b[j>>1]|16;j=i+24|0;gw(j|0,0,384)|0;c[i>>2]=N;a[i+9>>0]=0;c[i+4>>2]=0;I=i+12|0;c[I>>2]=0;c[i+16>>2]=8;J=i+20|0;c[J>>2]=j;Il(i,Q,43);j=c[I>>2]|0;if((j|0)>0)do{G=j;j=j+-1|0;Nl(f,i,j)}while((G|0)>1);y=P+81|0;if(!(a[y>>0]|0)){j=c[I>>2]|0;if((j|0)>0){z=P+272|0;A=P+276|0;B=N+492|0;C=P+288|0;D=P+300|0;E=P+296|0;F=P+284|0;G=P+292|0;x=c[J>>2]|0;v=-1;l=-1;n=-1;o=-1;while(1){w=j;j=j+-1|0;m=x+12|0;u=b[m>>1]|0;j:do if(!(u&511)){do if(c[z>>2]|0)if(!(a[y>>0]|0))fa=164;else{n=0;o=0;p=v;break j}else{if((e[A>>1]|0)>=408){k=c[D>>2]|0;if(k|0){c[D>>2]=c[k>>2];c[F>>2]=(c[F>>2]|0)+1;break}k=c[E>>2]|0;if(!k)k=G;else{c[E>>2]=c[k>>2];c[F>>2]=(c[F>>2]|0)+1;break}}else k=C;c[k>>2]=(c[k>>2]|0)+1;fa=164}while(0);if((fa|0)==164){fa=0;k=_d(P,408,0)|0}if(!k){n=0;o=0;p=v}else{c[x+28>>2]=k;n=x+10|0;b[n>>1]=b[n>>1]|32;b[m>>1]=1024;m=k+24|0;gw(m|0,0,384)|0;c[k>>2]=c[g>>2];a[k+9>>0]=0;n=k+4|0;c[n>>2]=0;o=k+12|0;c[o>>2]=0;c[k+16>>2]=8;p=k+20|0;c[p>>2]=m;Il(k,c[x>>2]|0,44);m=c[o>>2]|0;if((m|0)>0)do{u=m;m=m+-1|0;Nl(f,k,m)}while((u|0)>1);c[n>>2]=g;k:do if((a[y>>0]|0)==0?(K=c[o>>2]|0,(K|0)>0):0){q=c[p>>2]|0;r=0;k=0;m=0;while(1){switch(a[c[q>>2]>>0]|0){case 45:case 50:case 53:case 54:case 55:case 56:case 57:case 49:{fa=174;break}default:if((b[q+12>>1]|0)==64)fa=174}if((fa|0)==174){fa=0;o=c[q+20>>2]|0;p=c[B>>2]|0;l:do if((p|0)>0){n=0;while(1){if((c[N+496+(n<<2)>>2]|0)==(o|0))break;n=n+1|0;if((n|0)>=(p|0)){n=0;o=0;break l}}n=cw(1,0,n|0)|0;o=L()|0}else{n=0;o=0}while(0);k=n|k;m=o|m}r=r+1|0;if((r|0)>=(K|0))break k;else q=q+48|0}}else{k=0;m=0}while(0);n=0;o=0;p=k&v;l=m&l}}else{q=b[x+10>>1]|0;if(!(q&8)){m=c[x+20>>2]|0;s=c[B>>2]|0;r=(s|0)>0;m:do if(r){k=0;while(1){if((c[N+496+(k<<2)>>2]|0)==(m|0))break;k=k+1|0;if((k|0)>=(s|0)){p=0;t=0;break m}}p=cw(1,0,k|0)|0;t=L()|0}else{p=0;t=0}while(0);if(!(q&2))k=t;else{m=c[(c[J>>2]|0)+((c[x+16>>2]|0)*48|0)+20>>2]|0;n:do if(r){k=0;while(1){if((c[N+496+(k<<2)>>2]|0)==(m|0))break;k=k+1|0;if((k|0)>=(s|0)){k=0;m=0;break n}}k=cw(1,0,k|0)|0;m=L()|0}else{k=0;m=0}while(0);p=k|p;k=m|t}u=(u&2)==0;n=u?0:p&n;o=u?0:k&o;p=p&v;l=k&l}else p=v}while(0);k=(p|0)!=0|(l|0)!=0;if(!(k&(w|0)>1))break;else{x=x+48|0;v=p}}K=i+408|0;c[K>>2]=p;c[K+4>>2]=l;b[H+(h*48|0)+12>>1]=512;if(k)fa=198;else r=n}else{n=i+408|0;c[n>>2]=-1;c[n+4>>2]=-1;b[H+(h*48|0)+12>>1]=512;n=-1;o=-1;fa=198}o:do if((fa|0)==198){a[g+9>>0]=1;if((c[I>>2]|0)==2){j=0;k=c[J>>2]|0;while(1){m=j+1|0;if((b[k+12>>1]|0)!=1024)if(!j)j=k;else{r=n;break o}else{i=c[k+28>>2]|0;if((c[i+12>>2]|0)<=(j|0)){r=n;break o}j=(c[i+20>>2]|0)+(j*48|0)|0}if(!j){r=n;break o}l=0;while(1){if((b[k+60>>1]|0)==1024){i=c[k+76>>2]|0;if((c[i+12>>2]|0)<=(l|0))break;i=(c[i+20>>2]|0)+(l*48|0)|0;if(!i)break}else if(!l)i=k+48|0;else break;Rl(f,g,j,i);l=l+1|0;k=c[J>>2]|0}j=m}}else r=n}while(0);if(!((r|0)==0&(o|0)==0)?(R=N+492|0,M=c[I>>2]|0,(M|0)>0):0){n=M;i=c[J>>2]|0;while(1){k=n+-1|0;q=i+10|0;b[q>>1]=b[q>>1]&-65;q=c[i+20>>2]|0;if((q|0)!=-1){l=c[R>>2]|0;p:do if((l|0)>0){j=0;while(1){if((c[N+496+(j<<2)>>2]|0)==(q|0))break;j=j+1|0;if((j|0)>=(l|0)){j=0;l=0;break p}}j=cw(1,0,j|0)|0;l=L()|0}else{j=0;l=0}while(0);if(!((j&r|0)==0&(l&o|0)==0))break}if((n|0)>1){n=k;i=i+48|0}else break i}l=c[i+28>>2]|0;m=c[(c[i>>2]|0)+12>>2]|0;if((n|0)>=1){q:do if((l|0)==-2){j=q;while(1){if((j|0)==(q|0)){if((c[i+28>>2]|0)!=-2){fa=242;break q}if(bk(O,c[(c[i>>2]|0)+12>>2]|0,m,-1)|0){fa=242;break q}M=c[i>>2]|0;K=Xj(c[M+16>>2]|0)|0;if(!(K<<24>>24==0|K<<24>>24==(Xj(c[M+12>>2]|0)|0)<<24>>24)){fa=242;break q}M=i+10|0;b[M>>1]=b[M>>1]|64}else{M=i+10|0;b[M>>1]=b[M>>1]&-65}if((k|0)<=0)break q;j=c[i+68>>2]|0;k=k+-1|0;i=i+48|0}}else{j=q;while(1){if((j|0)==(q|0)){if((c[i+28>>2]|0)!=(l|0)){fa=242;break q}M=c[i>>2]|0;K=Xj(c[M+16>>2]|0)|0;if(!(K<<24>>24==0|K<<24>>24==(Xj(c[M+12>>2]|0)|0)<<24>>24)){fa=242;break q}M=i+10|0;b[M>>1]=b[M>>1]|64}else{M=i+10|0;b[M>>1]=b[M>>1]&-65}if((k|0)<=0)break q;j=c[i+68>>2]|0;k=k+-1|0;i=i+48|0}}while(0);r:do if((fa|0)==242){i=c[I>>2]|0;if((i|0)<=0)break i;n=i;i=c[J>>2]|0;while(1){k=n+-1|0;p=i+10|0;b[p>>1]=b[p>>1]&-65;p=c[i+20>>2]|0;if((p|0)!=(q|0)){l=c[R>>2]|0;s:do if((l|0)>0){j=0;while(1){if((c[N+496+(j<<2)>>2]|0)==(p|0))break;j=j+1|0;if((j|0)>=(l|0)){j=0;l=0;break s}}j=cw(1,0,j|0)|0;l=L()|0}else{j=0;l=0}while(0);if(!((j&r|0)==0&(l&o|0)==0))break}if((n|0)>1){n=k;i=i+48|0}else break i}l=c[i+28>>2]|0;m=c[(c[i>>2]|0)+12>>2]|0;if((n|0)<1)break i;if((l|0)!=-2){j=p;while(1){if((j|0)==(p|0)){if((c[i+28>>2]|0)!=(l|0))break i;R=c[i>>2]|0;M=Xj(c[R+16>>2]|0)|0;if(!(M<<24>>24==0|M<<24>>24==(Xj(c[R+12>>2]|0)|0)<<24>>24))break i;R=i+10|0;b[R>>1]=b[R>>1]|64}else{R=i+10|0;b[R>>1]=b[R>>1]&-65}if((k|0)<=0)break r;j=c[i+68>>2]|0;k=k+-1|0;i=i+48|0}}j=p;while(1){if((j|0)==(p|0)){if((c[i+28>>2]|0)!=-2)break i;if(bk(O,c[(c[i>>2]|0)+12>>2]|0,m,-1)|0)break i;R=c[i>>2]|0;M=Xj(c[R+16>>2]|0)|0;if(!(M<<24>>24==0|M<<24>>24==(Xj(c[R+12>>2]|0)|0)<<24>>24))break i;R=i+10|0;b[R>>1]=b[R>>1]|64}else{R=i+10|0;b[R>>1]=b[R>>1]&-65}if((k|0)<=0)break r;j=c[i+68>>2]|0;k=k+-1|0;i=i+48|0}}while(0);i=c[I>>2]|0;if((i|0)>0){k=0;j=0;m=c[J>>2]|0;while(1){l=i;i=i+-1|0;if(b[m+10>>1]&64){k=c[(c[m>>2]|0)+16>>2]|0;if(!k)k=0;else k=dk(P,k,0,0)|0;j=nj(c[c[N>>2]>>2]|0,j,k)|0;k=c[(c[m>>2]|0)+12>>2]|0}if((l|0)<=1)break;else m=m+48|0}if(!k)i=0;else i=dk(P,k,0,0)|0}else{j=0;i=0}i=ej(O,49,i,0)|0;if(i|0){R=i+4|0;c[R>>2]=c[R>>2]|c[Q+4>>2]&1;b[i+36>>1]=b[Q+36>>1]|0;c[i+20>>2]=j;Q=Ml(g,i,3)|0;Nl(f,g,Q);R=c[na>>2]|0;c[R+(Q*48|0)+16>>2]=h;b[R+(Q*48|0)+8>>1]=b[R+(h*48|0)+8>>1]|0;R=R+(h*48|0)+14|0;a[R>>0]=(a[R>>0]|0)+1<<24>>24;break}if(j|0)ri(P,j)}}}}while(0);i=(c[na>>2]|0)+(h*48|0)|0}}while(0);C=g+8|0;t:do if((a[C>>0]|0)==44){A=c[la>>2]|0;u:do if((((a[oa>>0]|0)==-95?(Z=oa+20|0,S=c[Z>>2]|0,(S|0)!=0):0)?(T=c[S>>2]|0,U=Jd(A,c[oa+8>>2]|0,T,1,0)|0,(U|0)!=0):0)?(V=c[U+4>>2]|0,(V&4|0)!=0):0){l=c[Z>>2]|0;if((T|0)>=3){j=c[l+44>>2]|0;if((a[j>>0]|0)!=110)break;j=c[j+8>>2]|0;k=a[j>>0]|0;if(!(k<<24>>24))break;if(a[j+1>>0]|0)break}else k=0;w=c[U+8>>2]|0;u=a[w>>0]|0;v=a[w+1>>0]|0;w=a[w+2>>0]|0;B=V&8;y=c[l+24>>2]|0;j=c[l+4>>2]|0;v:do if(!j)z=0;else while(1){l=c[j+4>>2]|0;if(!(l&4096)){z=j;break v}if(!(l&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){z=0;break}}while(0);j=a[z>>0]|0;x=j<<24>>24==-108;do if(x){if(!(0==0?(c[A+32>>2]&8388608|0)==0:0))break u;j=c[la+220>>2]|0;q=b[z+32>>1]|0;r=q<<16>>16;w:do if((j|0)!=0?(V=c[j+100>>2]|0,X=r+-1|0,W=V+(X*40|0)|0,X=V+(X*40|0)+8|0,(b[X>>1]&1)==0):0){p=c[j>>2]|0;x:do if(!p){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](40)|0;fa=300;break}j=Wa[c[29356>>2]&127](40)|0;if((c[14985]|0)>>>0<40)c[14985]=40;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){V=c[14978]|0;U=Tv(l|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0;T=L()|0;c[14768]=((T|0)<0|(T|0)==0&U>>>0<=V>>>0)&1}l=Wa[c[29340>>2]&127](j)|0;if(!l){j=0;m=0;n=0;break w}j=Wa[c[29352>>2]&127](l)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0){o=l;break}c[14987]=j;o=l}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){j=0;m=0;n=0;break w}}else{do if((e[p+276>>1]|0)>=40){l=p+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];fa=p+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=300;break x}l=p+296|0;j=c[l>>2]|0;if(!j){j=p+292|0;break}else{c[l>>2]=c[j>>2];fa=p+284|0;c[fa>>2]=(c[fa>>2]|0)+1;fa=300;break x}}else j=p+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(p,40,0)|0;fa=300}while(0);if((fa|0)==300)if(!j){j=0;m=0;n=0;break}else o=j;j=o;l=j+40|0;do{a[j>>0]=0;j=j+1|0}while((j|0)<(l|0));n=o+8|0;b[n>>1]=1;c[o+32>>2]=p;c[o>>2]=c[W>>2];c[o+4>>2]=c[W+4>>2];c[o+8>>2]=c[W+8>>2];c[o+12>>2]=c[W+12>>2];c[o+16>>2]=c[W+16>>2];j=b[n>>1]&-1025;b[n>>1]=j;j=j&65535;y:do if(j&18|0){if(b[X>>1]&2048)break;l=(j|4096)&65535;b[n>>1]=l;do if(j&16384){m=o+12|0;j=(c[o>>2]|0)+(c[m>>2]|0)|0;if((j|0)<1)if(!(l&16)){fa=309;break}else j=1;if(Eg(o,j,1)|0)break y;gw((c[o+16>>2]|0)+(c[m>>2]|0)|0,0,c[o>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+(c[o>>2]|0);j=b[n>>1]&-16897;b[n>>1]=j;if(!(c[o+24>>2]|0)){fa=309;break}if((c[o+16>>2]|0)!=(c[o+20>>2]|0))fa=309}else fa=309;while(0);if((fa|0)==309){if(Jg(o)|0)break;j=b[n>>1]|0}b[n>>1]=j&-4097}while(0);j=b[n>>1]|0;if((j&15|16)<<16>>16!=18){j=0;m=o;n=o;break}do if((j&514)==514){if((a[o+10>>0]|0)!=1)break;j=c[o+16>>2]|0;m=o;n=o;break w}while(0);if(j&1){j=0;m=o;n=o;break}j=Gg(o,1)|0;m=o;n=o}else{j=0;m=0;n=0}while(0);l=c[la+8>>2]|0;if(q<<16>>16>31){s=l+208|0;c[s>>2]=c[s>>2]|-2147483648;s=m;t=n;break}else{s=l+208|0;c[s>>2]=c[s>>2]|1<>24!=110)break u;s=0;j=c[z+8>>2]|0;t=0}while(0);do if((j|0)!=0?(Y=a[j>>0]|0,Y<<24>>24!=w<<24>>24&((Y<<24>>24==v<<24>>24|(Y<<24>>24==0?1:Y<<24>>24==u<<24>>24))^1)):0){l=0;n=Y;do{m=l+1|0;if(n<<24>>24==k<<24>>24)l=(a[j+m>>0]|0)==0?m:l+2|0;else l=m;n=a[j+l>>0]|0;m=n<<24>>24==u<<24>>24}while(n<<24>>24!=w<<24>>24&((n<<24>>24==v<<24>>24|(n<<24>>24==0|m))^1));if(((l|0)!=0?(a[j+(l+-1)>>0]|0)!=-1:0)?!((l|0)<2?Y<<24>>24==k<<24>>24:0):0){if(m)q=(a[j+(l+1)>>0]|0)==0&1;else q=0;c[da>>2]=j;r=(Eu(j)|0)&1073741823;c[da+4>>2]=r;r=oj(A,110,da,0)|0;z:do if(r|0){p=c[r+8>>2]|0;a[p+l>>0]=0;if((l|0)>0){o=k&255;m=0;n=0;while(1){Y=n+((a[p+n>>0]|0)==(o|0)&1)|0;k=m+1|0;a[p+m>>0]=a[p+Y>>0]|0;n=Y+1|0;if((n|0)>=(l|0))break;else m=k}}else k=0;a[p+k>>0]=0;Y=a[p>>0]|0;if(!(Y<<24>>24==45|((Y&255)+-48|0)>>>0<10)?!((k|0)==1&Y<<24>>24==47):0)break;do if((a[y>>0]|0)==-94){if((Xj(y)|0)<<24>>24!=66)break;if(!(c[(c[y+44>>2]|0)+56>>2]|0))break z}while(0);ni(A,r);if(!s)break u;if(!((b[s+8>>1]&9216)==0?!(c[s+24>>2]|0):0))Cg(s);j=c[s+32>>2]|0;do if(j|0){if(c[j+480>>2]|0){Xd(j,t);break u}k=t;if((c[j+304>>2]|0)>>>0>k>>>0)break;if((c[j+308>>2]|0)>>>0<=k>>>0)break;_=j+300|0;c[t>>2]=c[_>>2];c[_>>2]=t;break u}while(0);if(!t)break u;if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break u}else{_=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-_;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break u}}while(0);if(!x){n=q;break}m=c[la+8>>2]|0;k=b[z+32>>1]|0;if(k<<16>>16>31)k=-2147483648;else k=1<<(k<<16>>16)+-1;Y=m+208|0;c[Y>>2]=c[Y>>2]|k;if(!q){n=0;break}if(!(a[(c[z+8>>2]|0)+1>>0]|0)){n=q;break}n=la+19|0;k=a[n>>0]|0;if(!(k<<24>>24)){Y=la+44|0;l=(c[Y>>2]|0)+1|0;c[Y>>2]=l}else{l=k+-1<<24>>24;a[n>>0]=l;l=c[la+148+((l&255)<<2)>>2]|0}Jj(la,z,l)|0;if(!(a[(c[m>>2]|0)+81>>0]|0))k=(c[m+104>>2]|0)+(((c[m+108>>2]|0)+-1|0)*20|0)|0;else k=59308;c[k+12>>2]=0;if(!l){n=q;break}k=a[n>>0]|0;if((k&255)>=8){n=q;break}a[n>>0]=k+1<<24>>24;c[la+148+((k&255)<<2)>>2]=l;n=q}else{n=0;r=0;j=0}}else{n=0;r=0;j=0}while(0);l=(j|0)==0;A:do if(s|0){if(!((b[s+8>>1]&9216)==0?!(c[s+24>>2]|0):0))Cg(s);j=c[s+32>>2]|0;do if(j|0){if(c[j+480>>2]|0){Xd(j,t);break A}k=t;if((c[j+304>>2]|0)>>>0>k>>>0)break;if((c[j+308>>2]|0)>>>0<=k>>>0)break;Y=j+300|0;c[t>>2]=c[Y>>2];c[Y>>2]=t;break A}while(0);if(t|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{Y=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);if(!l){p=c[(c[Z>>2]|0)+24>>2]|0;if(!r)q=0;else q=dk(ha,r,0,0)|0;o=(B|0)!=0;do if(!o){if(a[(c[la>>2]|0)+81>>0]|0)break;l=i+10|0;b[l>>1]=b[l>>1]|1024;l=r+8|0;j=c[l>>2]|0;i=a[j>>0]|0;if(!(i<<24>>24))break;m=q+8|0;k=0;do{Z=i&255;a[j>>0]=i&~(a[880+Z>>0]&32);a[(c[m>>2]|0)+k>>0]=a[208+Z>>0]|0;k=k+1|0;j=(c[l>>2]|0)+k|0;i=a[j>>0]|0}while(i<<24>>24!=0)}while(0);if(!(a[_>>0]|0)){j=c[q+8>>2]|0;if(!j)i=0;else i=(Eu(j)|0)&1073741823;k=j+(i+-1)|0;i=a[k>>0]|0;if(o){j=i;i=n}else{j=a[208+(i&255)>>0]|0;i=i<<24>>24==64?0:n}a[k>>0]=(j&255)+1;n=i}l=o?34049:43602;k=(p|0)==0;if(k)j=0;else j=dk(ha,p,0,0)|0;c[da>>2]=l;c[da+4>>2]=6;i=oj(c[la>>2]|0,106,da,0)|0;if(!i)i=j;else{c[i+12>>2]=j;_=i+4|0;c[_>>2]=c[_>>2]|4352}i=ej(la,57,i,r)|0;if(i|0){_=i+4|0;c[_>>2]=c[_>>2]|c[ka>>2]&1;b[i+36>>1]=b[oa+36>>1]|0}m=Ml(g,i,259)|0;Nl(f,g,m);if(k)j=0;else j=dk(ha,p,0,0)|0;c[da>>2]=l;c[da+4>>2]=6;i=oj(c[la>>2]|0,106,da,0)|0;if(!i)i=j;else{c[i+12>>2]=j;_=i+4|0;c[_>>2]=c[_>>2]|4352}i=ej(la,56,i,q)|0;if(i|0){_=i+4|0;c[_>>2]=c[_>>2]|c[ka>>2]&1;b[i+36>>1]=b[oa+36>>1]|0}j=Ml(g,i,259)|0;Nl(f,g,j);k=c[na>>2]|0;i=k+(h*48|0)|0;if(!n)break;c[k+(m*48|0)+16>>2]=h;Y=k+(h*48|0)+8|0;b[k+(m*48|0)+8>>1]=b[Y>>1]|0;_=k+(h*48|0)+14|0;Z=a[_>>0]|0;c[k+(j*48|0)+16>>2]=h;b[k+(j*48|0)+8>>1]=b[Y>>1]|0;a[_>>0]=Z+2<<24>>24}}while(0);if((a[C>>0]|0)==44){j=a[oa>>0]|0;B:do switch(j<<24>>24){case -95:{j=c[oa+20>>2]|0;if((j|0)!=0?(c[j>>2]|0)==2:0){o=j+4|0;p=j+24|0;k=c[p>>2]|0;C:do if(((a[k>>0]|0)==-94?c[(c[k+44>>2]|0)+56>>2]|0:0)?(aa=c[oa+8>>2]|0,_=a[aa>>0]|0,$=_&255,_<<24>>24):0){j=(d[208+$>>0]|0)+-109|0;if(!j){l=38025;m=aa;do{m=m+1|0;l=l+1|0;_=a[m>>0]|0;j=(d[208+(_&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(_<<24>>24==0|(j|0)!=0))}D:do if(j){n=$|32;switch((n&255)<<24>>24){case 103:{m=43609;j=aa;do{j=j+1|0;m=m+1|0;fa=a[j>>0]|0;l=(d[208+(fa&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(fa<<24>>24==0|(l|0)!=0));if(!l){j=1;break D}else break C}case 108:{fa=425;break}case 114:break;default:break C}if((fa|0)==425){j=43614;l=aa;do{l=l+1|0;j=j+1|0;fa=a[l>>0]|0;m=(d[208+(fa&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(fa<<24>>24==0|(m|0)!=0));if(!m){j=2;break}if((n|0)!=114)break C}m=43619;j=aa;do{j=j+1|0;m=m+1|0;fa=a[j>>0]|0;l=(d[208+(fa&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(fa<<24>>24==0|(l|0)!=0));if(!l)j=3;else break C}else j=0;while(0);j=a[18144+(j<<3)+4>>0]|0;m=1;n=c[o>>2]|0;fa=453;break B}while(0);k=c[o>>2]|0;if((a[k>>0]|0)==-94?(ba=c[k+44>>2]|0,(c[ba+56>>2]|0)!=0):0){j=ba+64|0;while(1){j=c[j>>2]|0;if((c[j>>2]|0)==(ha|0))break;else j=j+24|0}j=c[j+8>>2]|0;l=c[(c[j>>2]|0)+72>>2]|0;if(l|0?(ca=_a[l&127](j,2,c[oa+8>>2]|0,da,ea)|0,(ca|0)>149):0){j=ca&255;m=1;n=c[p>>2]|0;fa=453;break B}fa=465}else fa=465}else fa=465;break}case 51:case -96:case 52:{k=c[pa>>2]|0;l=c[oa+16>>2]|0;if((a[k>>0]|0)==-94)m=(c[(c[k+44>>2]|0)+56>>2]|0)!=0&1;else m=0;if(l)if((a[l>>0]|0)==-94){fa=(c[(c[l+44>>2]|0)+56>>2]|0)==0;n=fa?l:k;k=fa?k:l;m=m+((fa^1)&1)|0}else n=l;else n=0;switch(j<<24>>24){case 52:{j=68;break}case -96:{j=69;break}case 51:{j=70;break}default:j=0}if((m|0)>0)fa=453;else fa=465;break}default:{}}while(0);if((fa|0)==453)while(1){u=m;m=m+-1|0;l=n;o=(n|0)==0;if(o){s=0;t=0}else{s=Pl(ga,l)|0;t=L()|0}r=k;if(!k){p=0;q=0}else{p=Pl(ga,r)|0;q=L()|0}if((p&s|0)==0&(q&t|0)==0){if(o)i=0;else i=dk(ha,l,0,0)|0;i=ej(la,46,0,i)|0;if((i|0)!=0&(c[ka>>2]&1|0)!=0){fa=i+4|0;c[fa>>2]=c[fa>>2]|1}fa=Ml(g,i,3)|0;ca=c[na>>2]|0;i=ca+(fa*48|0)+32|0;c[i>>2]=s;c[i+4>>2]=t;c[ca+(fa*48|0)+20>>2]=c[r+28>>2];c[ca+(fa*48|0)+28>>2]=b[r+32>>1];b[ca+(fa*48|0)+12>>1]=64;a[ca+(fa*48|0)+15>>0]=j;i=c[na>>2]|0;c[i+(fa*48|0)+16>>2]=h;b[i+(fa*48|0)+8>>1]=b[i+(h*48|0)+8>>1]|0;da=i+(h*48|0)+14|0;a[da>>0]=(a[da>>0]|0)+1<<24>>24;da=i+(h*48|0)+10|0;b[da>>1]=b[da>>1]|8;da=i+(h*48|0)+40|0;ea=c[da+4>>2]|0;fa=ca+(fa*48|0)+40|0;c[fa>>2]=c[da>>2];c[fa+4>>2]=ea;i=i+(h*48|0)|0}if((u|0)<=1){fa=465;break}else{fa=n;n=k;k=fa}}if((fa|0)==465){if((a[C>>0]|0)!=44)break;j=a[oa>>0]|0}switch(j<<24>>24){case 45:case 53:{m=c[pa>>2]|0;l=a[m>>0]|0;if(l<<24>>24==-88)j=a[m+38>>0]|0;else j=l;switch(j<<24>>24){case -87:{j=m+20|0;fa=473;break}case -125:{j=c[m+20>>2]|0;fa=473;break}default:{}}do if((fa|0)==473){q=c[c[j>>2]>>2]|0;if((q|0)>1){r=oa+16|0;k=c[r>>2]|0;j=a[k>>0]|0;if(j<<24>>24==-88)j=a[k+38>>0]|0;switch(j<<24>>24){case -87:{j=k+20|0;fa=479;break}case -125:{j=c[k+20>>2]|0;fa=479;break}default:j=1}if((fa|0)==479)j=c[c[j>>2]>>2]|0;if((j|0)==(q|0)){if(c[m+4>>2]&2048|0?c[k+4>>2]&2048|0:0)break;o=la+272|0;p=oa+36|0;n=0;j=l;i=m;while(1){switch(j<<24>>24){case -125:{j=ej(la,170,0,0)|0;if(!j)j=0;else{b[j+32>>1]=n;c[j+12>>2]=i}break}case -87:{i=c[(c[i+20>>2]|0)+4+(n*20|0)>>2]|0;if(!i){k=0;j=0;fa=489}else fa=488;break}default:fa=488}if((fa|0)==488){k=i;j=dk(c[la>>2]|0,i,0,0)|0;fa=489}E:do if((fa|0)==489){fa=0;i=c[o>>2]|0;if(i){while(1){if((c[i>>2]|0)==(k|0))break;i=c[i+12>>2]|0;if(!i)break E}c[i>>2]=j}}while(0);i=c[r>>2]|0;switch(a[i>>0]|0){case -125:{k=ej(la,170,0,0)|0;if(!k)i=0;else{b[k+32>>1]=n;c[k+12>>2]=i;i=k}break}case -87:{i=c[(c[i+20>>2]|0)+4+(n*20|0)>>2]|0;if(!i){l=0;i=0;fa=499}else fa=498;break}default:fa=498}if((fa|0)==498){l=i;i=dk(c[la>>2]|0,i,0,0)|0;fa=499}F:do if((fa|0)==499){fa=0;k=c[o>>2]|0;if(k){while(1){if((c[k>>2]|0)==(l|0))break;k=c[k+12>>2]|0;if(!k)break F}c[k>>2]=i}}while(0);i=ej(la,d[oa>>0]|0,j,i)|0;if(i|0){ha=i+4|0;c[ha>>2]=c[ha>>2]|c[ka>>2]&1;b[i+36>>1]=b[p>>1]|0}Nl(f,g,Ml(g,i,1)|0);i=n+1|0;if((i|0)==(q|0))break;ha=c[pa>>2]|0;n=i;j=a[ha>>0]|0;i=ha}la=a[C>>0]|0;i=c[na>>2]|0;ka=i+(h*48|0)+10|0;b[ka>>1]=b[ka>>1]|6;b[i+(h*48|0)+12>>1]=0;if(la<<24>>24==44)i=i+(h*48|0)|0;else break t}}}while(0);j=a[oa>>0]|0;break}default:{}}if(((j<<24>>24==49?(c[i+24>>2]|0)==0:0)?(ma=c[pa>>2]|0,(a[ma>>0]|0)==-87):0)?(c[(c[oa+20>>2]|0)+52>>2]|0)==0:0){k=0;i=-87;j=ma;while(1){if(i<<24>>24==-88)i=a[j+38>>0]|0;switch(i<<24>>24){case -87:{i=j+20|0;fa=520;break}case -125:{i=c[j+20>>2]|0;fa=520;break}default:i=1}if((fa|0)==520){fa=0;i=c[c[i>>2]>>2]|0}if((k|0)>=(i|0))break t;ma=Ml(g,oa,2)|0;i=k+1|0;c[(c[na>>2]|0)+(ma*48|0)+24>>2]=i;Nl(f,g,ma);j=c[na>>2]|0;c[j+(ma*48|0)+16>>2]=h;b[j+(ma*48|0)+8>>1]=b[j+(h*48|0)+8>>1]|0;j=j+(h*48|0)+14|0;a[j>>0]=(a[j>>0]|0)+1<<24>>24;j=c[pa>>2]|0;k=i;i=a[j>>0]|0}}}}while(0);h=(c[na>>2]|0)+(h*48|0)+32|0;oa=h;pa=c[oa+4>>2]|ia;c[h>>2]=c[oa>>2]|ja;c[h+4>>2]=pa;Ra=qa;return}function Ol(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;if(!d){r=0;s=0;K(r|0);return s|0}o=d;d=0;e=0;do{n=c[o+32>>2]|0;l=c[o>>2]|0;if((l|0)!=0?(s=c[l>>2]|0,(s|0)>0):0){k=0;j=s;f=0;g=0;do{h=c[l+4+(k*20|0)>>2]|0;if(!h){h=0;i=0}else{h=Pl(b,h)|0;i=L()|0;j=c[l>>2]|0}f=h|f;g=i|g;k=k+1|0}while((k|0)<(j|0))}else{f=0;g=0}l=f|d;k=g|e;j=c[o+40>>2]|0;if((j|0)!=0?(q=c[j>>2]|0,(q|0)>0):0){i=0;h=q;d=0;e=0;do{f=c[j+4+(i*20|0)>>2]|0;if(!f){f=0;g=0}else{f=Pl(b,f)|0;g=L()|0;h=c[j>>2]|0}d=f|d;e=g|e;i=i+1|0}while((i|0)<(h|0))}else{d=0;e=0}l=l|d;k=k|e;j=c[o+48>>2]|0;if((j|0)!=0?(r=c[j>>2]|0,(r|0)>0):0){i=0;g=r;h=0;e=0;while(1){d=c[j+4+(i*20|0)>>2]|0;if(!d){d=0;f=0}else{d=Pl(b,d)|0;f=L()|0;g=c[j>>2]|0}d=d|h;e=f|e;i=i+1|0;if((i|0)>=(g|0)){h=d;i=e;break}else h=d}}else{h=0;i=0}d=c[o+36>>2]|0;if(!d){e=0;g=0}else{e=Pl(b,d)|0;g=L()|0}d=c[o+44>>2]|0;if(!d){d=0;f=0}else{d=Pl(b,d)|0;f=L()|0}d=l|h|e|d;e=k|i|g|f;if((n|0)!=0?(c[n>>2]|0)>0:0){m=0;do{h=Ol(b,c[n+8+(m*72|0)+20>>2]|0)|0;g=L()|0|e;e=c[n+8+(m*72|0)+44>>2]|0;if(!e){e=0;f=0}else{e=Pl(b,e)|0;f=L()|0}d=h|d|e;e=g|f;if(a[n+8+(m*72|0)+37>>0]&4){l=c[n+8+(m*72|0)+64>>2]|0;if((l|0)!=0?(p=c[l>>2]|0,(p|0)>0):0){k=0;f=0;g=0;i=p;do{h=c[l+4+(k*20|0)>>2]|0;if(!h){h=0;j=0}else{h=Pl(b,h)|0;j=L()|0;i=c[l>>2]|0}f=h|f;g=j|g;k=k+1|0}while((k|0)<(i|0))}else{f=0;g=0}d=f|d;e=g|e}m=m+1|0}while((m|0)<(c[n>>2]|0))}o=c[o+52>>2]|0}while((o|0)!=0);K(e|0);return d|0}function Pl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=a[d>>0]|0;j=d+4|0;f=c[j>>2]|0;if(e<<24>>24==-94&(f&8|0)==0){g=c[d+28>>2]|0;f=c[b+4>>2]|0;if((f|0)<=0){o=0;b=0;K(o|0);return b|0}e=0;while(1){if((c[b+8+(e<<2)>>2]|0)==(g|0))break;e=e+1|0;if((e|0)>=(f|0)){e=0;f=0;i=45;break}}if((i|0)==45){K(e|0);return f|0}b=cw(1,0,e|0)|0;o=L()|0;K(o|0);return b|0}if(f&8404992|0){o=0;b=0;K(o|0);return b|0}a:do if(e<<24>>24==-85?(g=c[d+28>>2]|0,h=c[b+4>>2]|0,(h|0)>0):0){e=0;while(1){if((c[b+8+(e<<2)>>2]|0)==(g|0))break;e=e+1|0;if((e|0)>=(h|0)){f=0;g=0;break a}}f=cw(1,0,e|0)|0;g=L()|0}else{f=0;g=0}while(0);e=c[d+12>>2]|0;if(e){n=Pl(b,e)|0;f=n|f;g=L()|0|g}e=c[d+16>>2]|0;do if(!e){e=c[j>>2]|0;if(e&2048|0){if(e&32|0)c[b>>2]=1;n=Ol(b,c[d+20>>2]|0)|0;f=n|f;g=L()|0|g;break}n=c[d+20>>2]|0;if(n){e=c[n>>2]|0;if((e|0)>0){m=0;k=0;h=0;while(1){i=c[n+4+(m*20|0)>>2]|0;if(!i){i=0;j=0}else{i=Pl(b,i)|0;j=L()|0;e=c[n>>2]|0}i=i|k;h=j|h;m=m+1|0;if((m|0)>=(e|0)){e=i;break}else k=i}}else{e=0;h=0}f=e|f;g=h|g}}else{n=Pl(b,e)|0;f=n|f;g=L()|0|g}while(0);if((a[d>>0]|0)!=-95){o=g;b=f;K(o|0);return b|0}d=d+44|0;e=c[d>>2]|0;if(!e){o=g;b=f;K(o|0);return b|0}n=c[e+8>>2]|0;if((n|0)!=0?(l=c[n>>2]|0,(l|0)>0):0){m=0;h=0;i=0;while(1){e=c[n+4+(m*20|0)>>2]|0;if(!e){j=0;k=0;e=l}else{j=Pl(b,e)|0;k=L()|0;e=c[n>>2]|0}h=j|h;i=k|i;m=m+1|0;if((m|0)>=(e|0))break;else l=e}e=c[d>>2]|0}else{h=0;i=0}m=h|f;l=i|g;k=c[e+12>>2]|0;if((k|0)!=0?(o=c[k>>2]|0,(o|0)>0):0){j=0;f=0;e=0;h=o;do{g=c[k+4+(j*20|0)>>2]|0;if(!g){g=0;i=0}else{g=Pl(b,g)|0;i=L()|0;h=c[k>>2]|0}f=g|f;e=i|e;j=j+1|0}while((j|0)<(h|0))}else{f=0;e=0}o=l|e;b=m|f;K(o|0);return b|0}function Ql(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if(e>>>0>0|(e|0)==0&d>>>0>1){h=0;do{h=h+1|0;m=d;d=bw(d|0,e|0,1)|0;l=e;e=L()|0}while(l>>>0>0|(l|0)==0&m>>>0>3)}else h=0;m=c[a+8+(h*72|0)+40>>2]|0;h=c[(c[a+8+(h*72|0)+16>>2]|0)+8>>2]|0;if(!h){p=0;return p|0}l=(g|0)==0;a:while(1){j=h+40|0;b:do if(c[j>>2]|0?(n=h+50|0,o=b[n>>1]|0,o<<16>>16):0){k=h+4|0;if(l){a=0;d=o;while(1){if((b[(c[k>>2]|0)+(a<<1)>>1]|0)==-2){d=c[(c[j>>2]|0)+4+(a*20|0)>>2]|0;c:do if(!d)d=0;else while(1){e=c[d+4>>2]|0;if(!(e&4096))break c;if(!(e&262144))d=d+12|0;else d=(c[d+20>>2]|0)+4|0;d=c[d>>2]|0;if(!d){d=0;break}}while(0);if(!(bk(0,0,d,m)|0))break a;d=b[n>>1]|0}a=a+1|0;if(a>>>0>=(d&65535)>>>0)break b}}i=0;d=o;do{if((b[(c[k>>2]|0)+(i<<1)>>1]|0)==-2){d=c[(c[j>>2]|0)+4+(i*20|0)>>2]|0;e=g;while(1){a=c[e+4>>2]|0;if(!(a&4096))break;if(!(a&262144))e=e+12|0;else e=(c[e+20>>2]|0)+4|0;e=c[e>>2]|0;if(!e){e=0;break}}d:do if(!d)d=0;else while(1){a=c[d+4>>2]|0;if(!(a&4096))break d;if(!(a&262144))d=d+12|0;else d=(c[d+20>>2]|0)+4|0;d=c[d>>2]|0;if(!d){d=0;break}}while(0);if(!(bk(0,e,d,m)|0))break a;d=b[n>>1]|0}i=i+1|0}while(i>>>0<(d&65535)>>>0)}while(0);h=c[h+20>>2]|0;if(!h){h=0;p=41;break}}if((p|0)==41)return h|0;c[f>>2]=m;c[f+4>>2]=-2;p=1;return p|0}function Rl(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=b[f+12>>1]|0;i=b[g+12>>1]|0;j=i|h;if((h&62)==0|(i&62)==0)return;i=j&65535;if(!((i&26|0)==(i|0)|(i&38|0)==(i|0)))return;if(bk(0,c[(c[f>>2]|0)+12>>2]|0,c[(c[g>>2]|0)+12>>2]|0,-1)|0)return;if(bk(0,c[(c[f>>2]|0)+16>>2]|0,c[(c[g>>2]|0)+16>>2]|0,-1)|0)return;f=c[f>>2]|0;if(!f)return;h=dk(c[c[c[e>>2]>>2]>>2]|0,f,0,0)|0;if(!h)return;g=((i+65535&i|0)==0?j:(i&24|0)==0?32:8)&65535;f=53;while(1)if((2<>0]=f;Nl(d,e,Ml(e,h,3)|0);return}function Sl(b,d){b=b|0;d=d|0;if((a[d>>0]|0)!=-95){d=0;return d|0}if(c[d+4>>2]&524288|0){d=0;return d|0}a[b+20>>0]=0;d=2;return d|0}function Tl(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;t=e+24|0;x=e+4|0;y=e+18|0;z=e+12|0;A=e+20|0;C=e+17|0;D=e+8|0;u=e+16|0;v=e+28|0;w=e+72|0;g=c[t>>2]|0;h=c[x>>2]|0;f=a[y>>0]|0;a:while(1){q=(f&255)+-1|0;s=b[e+72+(q<<1)>>1]|0;q=c[e+28+(q<<2)>>2]|0;r=s<<16>>16;s=s<<16>>16==-2;f=h;while(1){p=f+12|0;if((g|0)<(c[p>>2]|0)){o=(c[f+20>>2]|0)+(g*48|0)|0;while(1){do if((c[o+20>>2]|0)==(q|0)?(c[o+28>>2]|0)==(r|0):0){if(s){i=c[(c[o>>2]|0)+12>>2]|0;h=c[z>>2]|0;b:do if(!i)i=0;else while(1){j=c[i+4>>2]|0;if(!(j&4096))break b;if(!(j&262144))i=i+12|0;else i=(c[i+20>>2]|0)+4|0;i=c[i>>2]|0;if(!i){i=0;break}}while(0);c:do if(!h)h=0;else while(1){j=c[h+4>>2]|0;if(!(j&4096))break c;if(!(j&262144))h=h+12|0;else h=(c[h+20>>2]|0)+4|0;h=c[h>>2]|0;if(!h){h=0;break}}while(0);if(bk(0,i,h,q)|0)break}if((d[y>>0]|0)>=2?c[(c[o>>2]|0)+4>>2]&1|0:0)break;n=o+12|0;h=b[n>>1]|0;if((h&2048)!=0?(B=a[C>>0]|0,(B&255)<11):0){i=c[(c[o>>2]|0)+16>>2]|0;j=c[i+4>>2]|0;if(j&4096)do{if(!(j&262144))i=i+12|0;else i=(c[i+20>>2]|0)+4|0;i=c[i>>2]|0;j=c[i+4>>2]|0}while((j&4096|0)!=0);if((a[i>>0]|0)==-94){m=B&255;d:do if(!(B<<24>>24))j=0;else{l=c[i+28>>2]|0;k=i+32|0;j=0;do{if((c[e+28+(j<<2)>>2]|0)==(l|0)?(b[e+72+(j<<1)>>1]|0)==(b[k>>1]|0):0)break d;j=j+1|0}while(j>>>0>>0)}while(0);if((j|0)==(m|0)){c[e+28+(m<<2)>>2]=c[i+28>>2];b[e+72+(m<<1)>>1]=b[i+32>>1]|0;a[C>>0]=B+1<<24>>24;h=b[n>>1]|0}}}i=h&65535;if(c[A>>2]&i|0){if((i&256|0)==0&(c[D>>2]|0)!=0){k=c[c[f>>2]>>2]|0;h=c[o>>2]|0;if(!(Vl(h,a[u>>0]|0)|0))break;i=c[h+12>>2]|0;j=c[h+16>>2]|0;do if(!(c[i+4>>2]&256)){if(j|0?c[j+4>>2]&256|0:0){h=Yi(k,j)|0;E=51;break}h=Yi(k,i)|0;if(!h){h=Yi(k,j)|0;E=51}}else{h=Yi(k,i)|0;E=51}while(0);if((E|0)==51){E=0;if(!h)h=c[(c[k>>2]|0)+8>>2]|0}i=c[h>>2]|0;j=c[D>>2]|0;m=a[i>>0]|0;h=(d[208+(m&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0;if(!(m<<24>>24==0|(h|0)!=0))do{i=i+1|0;j=j+1|0;m=a[i>>0]|0;h=(d[208+(m&255)>>0]|0)-(d[208+(d[j>>0]|0)>>0]|0)|0}while(!(m<<24>>24==0|(h|0)!=0));if(h|0)break;h=b[n>>1]|0}if(!(h&130))break a;h=c[(c[o>>2]|0)+16>>2]|0;if((a[h>>0]|0)!=-94)break a;if((c[h+28>>2]|0)!=(c[v>>2]|0))break a;if((b[h+32>>1]|0)!=(b[w>>1]|0))break a}}while(0);g=g+1|0;if((g|0)<(c[p>>2]|0))o=o+48|0;else break}}f=c[f+4>>2]|0;if(!f)break;else g=0}f=a[y>>0]|0;if((f&255)>=(d[C>>0]|0)){f=0;E=67;break}h=c[e>>2]|0;f=f+1<<24>>24;a[y>>0]=f;g=0}if((E|0)==67)return f|0;c[x>>2]=f;c[t>>2]=g+1;E=o;return E|0}function Ul(b){b=b|0;var d=0;d=Xj(c[b+12>>2]|0)|0;a[b+16>>0]=d;return Tl(b)|0}function Vl(a,b){a=a|0;b=b|0;var d=0,e=0;e=Xj(c[a+12>>2]|0)|0;d=c[a+16>>2]|0;do if(!d){if(!(c[a+4>>2]&2048)){a=e<<24>>24==0?65:e;break}a=Xj(c[(c[c[a+20>>2]>>2]|0)+4>>2]|0)|0;if(e<<24>>24==0|a<<24>>24==0){a=(a|e)<<24>>24==0?65:(a&255)+(e&255)&255;break}else{a=e<<24>>24>66|a<<24>>24>66?67:65;break}}else{a=Xj(d)|0;if(e<<24>>24==0|a<<24>>24==0){a=(a|e)<<24>>24==0?65:(a&255)+(e&255)&255;break}else{a=e<<24>>24>66|a<<24>>24>66?67:65;break}}while(0);switch(a<<24>>24|0){case 66:{b=b<<24>>24==66;b=b&1;return b|0}case 65:{b=1;b=b&1;return b|0}default:{b=b<<24>>24>66;b=b&1;return b|0}}return 0}function Wl(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=Ra;Ra=Ra+16|0;p=K;H=K+4|0;s=c[f>>2]|0;J=c[s>>2]|0;r=c[f+4>>2]|0;F=c[f+12>>2]|0;s=c[s+4>>2]|0;x=d[F+16>>0]|0;B=c[f+8>>2]|0;G=r+20|0;q=r+12|0;n=c[q>>2]|0;if((n|0)>0){o=c[s+8+(x*72|0)+40>>2]|0;l=0;k=0;m=c[G>>2]|0;while(1){if((c[m+20>>2]|0)==(o|0)?(E=m+32|0,(c[E>>2]&i|0)==0?(c[E+4>>2]&j|0)==0:0):0)k=k+((b[m+12>>1]&-2049)<<16>>16!=0&1)|0;l=l+1|0;if((l|0)==(n|0)){o=k;break}else m=m+48|0}}else o=0;if(!B)y=0;else{n=c[B>>2]|0;a:do if((n|0)>0){m=s+8+(x*72|0)+40|0;k=0;do{l=c[B+4+(k*20|0)>>2]|0;if((a[l>>0]|0)!=-94)break a;if((c[l+28>>2]|0)!=(c[m>>2]|0))break a;k=k+1|0}while((k|0)<(n|0))}else k=0;while(0);y=(k|0)==(n|0)?n:0}m=c[J>>2]|0;n=(o*20|0)+80+(y<<3)|0;b:do if(!m){E=Sv(n|0,0,-1,-1)|0;C=L()|0;if(!(C>>>0>0|(C|0)==0&E>>>0>2147483390)){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](n)|0;D=38;break}k=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){E=c[14978]|0;C=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;w=L()|0;c[14768]=((w|0)<0|(w|0)==0&C>>>0<=E>>>0)&1}l=Wa[c[29340>>2]&127](k)|0;if(l){k=Wa[c[29352>>2]&127](l)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;E=l}else E=l}else D=39}else D=39}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){D=39;break}}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];D=m+284|0;c[D>>2]=(c[D>>2]|0)+1;D=38;break b}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];D=m+284|0;c[D>>2]=(c[D>>2]|0)+1;D=38;break b}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,n,0)|0;D=38}while(0);if((D|0)==38)if(!k)D=39;else E=k;if((D|0)==39){cd(J,34831,p);J=7;Ra=K;return J|0}gw(E|0,0,n|0)|0;v=E+80|0;w=v+(o*12|0)|0;c[E>>2]=o;c[E+8>>2]=y;C=E+4|0;c[C>>2]=v;c[E+12>>2]=w;c[E+16>>2]=w+(y<<3);c[E+72>>2]=r;c[E+76>>2]=J;t=c[q>>2]|0;if((t|0)>0){u=s+8+(x*72|0)+36|0;s=c[s+8+(x*72|0)+40>>2]|0;l=0;k=0;q=c[G>>2]|0;r=0;while(1){do if(((c[q+20>>2]|0)==(s|0)?(x=q+32|0,(c[x>>2]&i|0)==0?(c[x+4>>2]&j|0)==0:0):0)?(z=b[q+12>>1]|0,A=z&65535,(A&63487|0)!=0):0){if(a[u>>0]&8?!((A&384|0)==0?1:(c[(c[q>>2]|0)+4>>2]&1|0)!=0):0)break;c[v+(l*12|0)>>2]=c[q+28>>2];c[v+(l*12|0)+8>>2]=r;p=z&8191;p=p<<16>>16==1?2:p;m=p&65535;c:do if(p<<16>>16!=64){if(m&384|0){m=v+(l*12|0)+4|0;if(p<<16>>16==256){a[m>>0]=71;break}else{a[m>>0]=72;break}}o=v+(l*12|0)+4|0;a[o>>0]=p;if(m&60){n=c[(c[q>>2]|0)+16>>2]|0;m=a[n>>0]|0;if(m<<24>>24==-88)m=a[n+38>>0]|0;switch(m<<24>>24){case -87:{m=n+20|0;break}case -125:{m=c[n+20>>2]|0;break}default:break c}if((c[c[m>>2]>>2]|0)>=2){k=r>>>0<16?(1<>0]=8;break c}case 4:{a[o>>0]=32;break c}default:break c}}}}else a[v+(l*12|0)+4>>0]=a[q+15>>0]|0;while(0);l=l+1|0}while(0);r=r+1|0;if((r|0)==(t|0)){i=k;break}else q=q+48|0}}else i=0;if((y|0)<=0){if(!E){J=7;Ra=K;return J|0}}else{k=0;do{c[w+(k<<3)>>2]=b[(c[B+4+(k*20|0)>>2]|0)+32>>1];a[w+(k<<3)+4>>0]=a[B+4+(k*20|0)+12>>0]|0;k=k+1|0}while((k|0)!=(y|0))}b[F+18>>1]=0;c[F+36>>2]=1024;b[F+40>>1]=0;a[F+28>>0]=0;A=c[E>>2]|0;k=c[J>>2]|0;o=F+44|0;d:do if((A|0)>(e[o>>1]|0)){p=A+7&-8;n=p<<2;e:do if(c[k+272>>2]|0)if(!(a[k+81>>0]|0))D=80;else D=94;else{do if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){l=k+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];D=k+284|0;c[D>>2]=(c[D>>2]|0)+1;D=81;break e}l=k+296|0;m=c[l>>2]|0;if(!m){l=k+292|0;break}else{c[l>>2]=c[m>>2];D=k+284|0;c[D>>2]=(c[D>>2]|0)+1;D=81;break e}}else l=k+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;D=80}while(0);if((D|0)==80){m=_d(k,n,0)|0;D=81}do if((D|0)==81){if(!m){k=c[J>>2]|0;if(!k)break;else{D=94;break}}l=F+48|0;ew(m|0,c[l>>2]|0,e[o>>1]<<2|0)|0;n=c[l>>2]|0;do if((n|0)!=(F+56|0)){if(c[k+480>>2]|0){Xd(k,n);break}B=n;if((c[k+304>>2]|0)>>>0<=B>>>0?(c[k+308>>2]|0)>>>0>B>>>0:0){B=k+300|0;c[n>>2]=c[B>>2];c[B>>2]=n;break}if(n|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{B=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[l>>2]=m;b[o>>1]=p;break d}while(0);if((D|0)==94){if(c[k+480>>2]|0){Xd(k,E);J=7;Ra=K;return J|0}J=E;if((c[k+304>>2]|0)>>>0<=J>>>0?(c[k+308>>2]|0)>>>0>J>>>0:0){J=k+300|0;c[E>>2]=c[J>>2];c[J>>2]=E;J=7;Ra=K;return J|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);J=7;Ra=K;return J|0}else{J=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);J=7;Ra=K;return J|0}}while(0);l=Zl(f,g,h,-1,-1,0,E,i,H)|0;if(!l){z=F;w=~g;x=~h;y=c[z>>2]&w;z=c[z+4>>2]&x;k=(c[H>>2]|0)!=0;if((y|0)!=0|(z|0)!=0|k){if(k){l=Zl(f,g,h,-1,-1,1,E,i,H)|0;n=F;k=c[n>>2]&w;n=c[n+4>>2]&x;m=(k|0)==0&(n|0)==0&1;if(!l){v=k;D=106}else k=m}else{m=0;v=0;n=0;D=106}f:do if((D|0)==106){u=(A|0)>0;k=m;o=0;l=0;while(1){if(!u){l=0;break f}q=c[G>>2]|0;r=c[C>>2]|0;while(1){p=0;t=-1;s=-1;do{D=q+((c[r+(p*12|0)+8>>2]|0)*48|0)+32|0;j=c[D>>2]&w;D=c[D+4>>2]&x;B=(D>>>0>l>>>0|(D|0)==(l|0)&j>>>0>o>>>0)&(D>>>0>>0|(D|0)==(t|0)&j>>>0>>0);s=B?j:s;t=B?D:t;p=p+1|0}while((p|0)!=(A|0));if((s|0)==-1&(t|0)==-1){l=0;break f}if((s|0)==(y|0)&(t|0)==(z|0)|(s|0)==(v|0)&(t|0)==(n|0)){l=t;o=s}else break}l=Zl(f,g,h,s|g,t|h,0,E,i,H)|0;D=F;if((c[D>>2]|0)==(g|0)?(c[D+4>>2]|0)==(h|0):0){k=(c[H>>2]|0)==0?1:k;m=1}if(!l){o=s;l=t}else break}}while(0);if(!(m|l)){l=Zl(f,g,h,g,h,0,E,i,H)|0;k=(c[H>>2]|0)==0?1:k}if(!(k|l))l=Zl(f,g,h,g,h,1,E,i,H)|0}else l=0}do if(c[E+28>>2]|0?(I=c[E+24>>2]|0,I|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](I);break}else{H=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);break}while(0);k=c[J>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,E);J=l;Ra=K;return J|0}J=E;if((c[k+304>>2]|0)>>>0<=J>>>0?(c[k+308>>2]|0)>>>0>J>>>0:0){J=k+300|0;c[E>>2]=c[J>>2];c[J>>2]=E;J=l;Ra=K;return J|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);J=l;Ra=K;return J|0}else{J=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-J;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);J=l;Ra=K;return J|0}return 0}function Xl(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;ja=Ra;Ra=Ra+128|0;ca=ja+80|0;fa=ja+72|0;k=ja;l=ja+112|0;m=ja+108|0;b[m>>1]=-1;ha=c[f+12>>2]|0;_=c[f>>2]|0;P=c[_+4>>2]|0;Q=d[ha+16>>0]|0;$=P+8+(Q*72|0)|0;O=P+8+(Q*72|0)+16|0;R=c[O>>2]|0;aa=c[f+4>>2]|0;ba=P+8+(Q*72|0)+68|0;i=c[ba>>2]|0;o=(i|0)==0;do if(o){if(c[R+36>>2]&32|0){k=c[R+8>>2]|0;break}i=k;j=i+72|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));b[k+50>>1]=1;b[k+52>>1]=1;c[k+4>>2]=m;c[k+8>>2]=l;a[k+54>>0]=5;c[k+12>>2]=R;b[k+48>>1]=b[R+46>>1]|0;Z=k+55|0;a[Z>>0]=3;a[Z+1>>0]=0;b[l>>1]=b[R+44>>1]|0;b[l+2>>1]=0;if(!(a[P+8+(Q*72|0)+37>>0]&1))c[k+20>>2]=c[(c[O>>2]|0)+8>>2]}else k=i;while(0);m=b[R+44>>1]|0;if(m<<16>>16<11)i=0;else{i=m<<16>>16;j=((i|0)<0)<<31>>31;if((m&65535)>255){l=40;do{l=(l&65535)+40|0;Z=i;i=bw(i|0,j|0,4)|0;Y=j;j=L()|0}while(Y>>>0>0|(Y|0)==0&Z>>>0>4095);l=l&65535}else l=40;if(j>>>0>0|(j|0)==0&i>>>0>15){do{l=(l&65535)+10&65535;Z=i;i=bw(i|0,j|0,1)|0;Y=j;j=L()|0}while(Y>>>0>0|(Y|0)==0&Z>>>0>31);j=l}else j=l;i=(j&65535)+65493+(e[3648+((i&7)<<1)>>1]|0)&65535}a:do if((((((c[f+16>>2]|0)==0?(b[_+44>>1]&32)==0:0)?!((0==0?(c[(c[c[_>>2]>>2]|0)+32>>2]&32768|0)==0:0)|o^1):0)?(n=a[P+8+(Q*72|0)+37>>0]|0,(n&1)==0):0)?(M=R+36|0,(n&40)==0&(c[M>>2]&32|0)==0):0)?(I=c[aa+20>>2]|0,Z=c[aa+12>>2]|0,N=I+(Z*48|0)|0,(Z|0)>0):0){A=ha+8|0;B=P+8+(Q*72|0)+40|0;C=P+8+(Q*72|0)+36|0;D=ha+24|0;E=ha+42|0;F=ha+32|0;G=ha+40|0;H=ha+48|0;x=(i&65535)+(m&65535)|0;s=x&65535;t=ha+18|0;u=R+12|0;v=ha+22|0;n=i<<16>>16;w=(x&65535)+65526|0;x=(x<<16>>16)+28|0;y=ha+20|0;z=ha+36|0;o=i<<16>>16<12;p=i<<16>>16>74;q=18112+(43-n)|0;r=18112+(n+-43)|0;if(i<<16>>16<43){m=i<<16>>16<-6?43:44;l=I;while(1){j=l+32|0;Z=j;Y=A;do if((((c[Y>>2]&c[Z>>2]|0)==0?(c[Y+4>>2]&c[Z+4>>2]|0)==0:0)?(c[l+20>>2]|0)==(c[B>>2]|0):0)?(J=e[l+12>>1]|0,(J&130|0)!=0):0){if(a[C>>0]&8?!((J&128|0)==0?1:(c[(c[l>>2]|0)+4>>2]&1|0)!=0):0){i=0;break}i=c[l+28>>2]|0;if((i|0)>=0?(Vl(c[l>>2]|0,a[(c[(c[O>>2]|0)+4>>2]|0)+(i<<4)+13>>0]|0)|0)!=0:0){b[D>>1]=1;b[E>>1]=0;c[F>>2]=0;b[G>>1]=1;c[c[H>>2]>>2]=l;b[t>>1]=s;if(!(c[u>>2]|0))i=(c[M>>2]&2|0)==0?x:w;else i=w;b[t>>1]=(i&32768|0)==0?i&65535:0;b[v>>1]=43;if(o)i=m;else i=(d[q>>0]|0)+43&65535;b[y>>1]=i;c[z>>2]=16384;Y=j;Z=c[Y+4>>2]|h;i=ha;c[i>>2]=c[Y>>2]|g;c[i+4>>2]=Z;i=_l(f,ha)|0}else i=0}else i=0;while(0);l=l+48|0;if(!(l>>>0>>0&(i|0)==0))break a}}m=i<<16>>16>92?i:n+1&65535;l=I;do{j=l+32|0;Z=j;Y=A;do if((((c[Y>>2]&c[Z>>2]|0)==0?(c[Y+4>>2]&c[Z+4>>2]|0)==0:0)?(c[l+20>>2]|0)==(c[B>>2]|0):0)?(K=e[l+12>>1]|0,(K&130|0)!=0):0){if(a[C>>0]&8?!((K&128|0)==0?1:(c[(c[l>>2]|0)+4>>2]&1|0)!=0):0){i=0;break}i=c[l+28>>2]|0;if((i|0)>=0?(Vl(c[l>>2]|0,a[(c[(c[O>>2]|0)+4>>2]|0)+(i<<4)+13>>0]|0)|0)!=0:0){b[D>>1]=1;b[E>>1]=0;c[F>>2]=0;b[G>>1]=1;c[c[H>>2]>>2]=l;b[t>>1]=s;if((c[u>>2]|0)==0?(c[M>>2]&2|0)==0:0)i=x;else i=w;b[t>>1]=(i&32768|0)==0?i&65535:0;b[v>>1]=43;if(p)i=m;else i=(d[r>>0]|0)+n&65535;b[y>>1]=i;c[z>>2]=16384;Y=j;Z=c[Y+4>>2]|h;i=ha;c[i>>2]=c[Y>>2]|g;c[i+4>>2]=Z;i=_l(f,ha)|0}else i=0}else i=0;while(0);l=l+48|0}while(l>>>0>>0&(i|0)==0)}else i=0;while(0);Z=ha+36|0;if(!((i|0)==0&(k|0)!=0)){ia=i;Ra=ja;return ia|0}I=P+8+(Q*72|0)+40|0;J=ha+24|0;K=ha+26|0;M=ha+28|0;N=ha+42|0;O=ha+40|0;S=ha+17|0;T=ha+18|0;U=ha+22|0;V=ha+32|0;W=ha+20|0;X=f+20|0;Y=R+36|0;H=P+8+(Q*72|0)+56|0;A=R+46|0;B=_+92|0;C=_+100|0;D=fa+4|0;E=ca+4|0;F=ca+24|0;z=ca+20|0;G=_+44|0;y=1;b:while(1){w=k+36|0;i=c[w>>2]|0;if((i|0)!=0?(bm(c[I>>2]|0,aa,i)|0)==0:0)i=0;else{v=k+55|0;if(!((d[v>>0]|d[v+1>>0]<<8)&256)){x=b[c[k+8>>2]>>1]|0;b[J>>1]=0;b[K>>1]=0;b[M>>1]=0;b[N>>1]=0;b[O>>1]=0;a[S>>0]=0;b[T>>1]=0;r=ha;c[r>>2]=g;c[r+4>>2]=h;b[U>>1]=x;c[V>>2]=k;r=c[I>>2]|0;c:do if((((d[v>>0]|d[v+1>>0]<<8)&4)==0?(da=c[(c[f>>2]|0)+8>>2]|0,(da|0)!=0):0)?(ea=c[da>>2]|0,(ea|0)>0):0){s=k+40|0;t=k+50|0;u=k+4|0;q=0;i=ea;while(1){j=c[da+4+(q*20|0)>>2]|0;d:do if(!j)j=0;else while(1){l=c[j+4>>2]|0;if(!(l&4096))break d;if(!(l&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=0;break}}while(0);if((a[j>>0]|0)==-94?(c[j+28>>2]|0)==(r|0):0){m=b[j+32>>1]|0;if(m<<16>>16<0){j=1;break c}j=b[t>>1]|0;if(j<<16>>16){n=c[u>>2]|0;l=j&65535;j=0;do{if(m<<16>>16==(b[n+(j<<1)>>1]|0)){j=1;break c}j=j+1|0}while(j>>>0>>0)}}else ia=75;e:do if((ia|0)==75){ia=0;p=c[s>>2]|0;if((p|0)!=0?(ga=b[t>>1]|0,ga<<16>>16!=0):0){if(!j){n=c[u>>2]|0;o=ga&65535;m=0;while(1){f:do if((b[n+(m<<1)>>1]|0)==-2){j=c[p+4+(m*20|0)>>2]|0;if(!j){j=1;break c}while(1){l=c[j+4>>2]|0;if(!(l&4096))break f;if(!(l&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=1;break c}}}while(0);m=m+1|0;if(m>>>0>=o>>>0)break e}}n=0;i=ga;do{if((b[(c[u>>2]|0)+(n<<1)>>1]|0)==-2){i=c[p+4+(n*20|0)>>2]|0;l=j;while(1){m=c[l+4>>2]|0;if(!(m&4096))break;if(!(m&262144))l=l+12|0;else l=(c[l+20>>2]|0)+4|0;l=c[l>>2]|0;if(!l){l=0;break}}g:do if(!i)i=0;else while(1){m=c[i+4>>2]|0;if(!(m&4096))break g;if(!(m&262144))i=i+12|0;else i=(c[i+20>>2]|0)+4|0;i=c[i>>2]|0;if(!i){i=0;break}}while(0);if(!(bk(0,l,i,r)|0)){j=1;break c}i=b[t>>1]|0}n=n+1|0}while(n>>>0<(i&65535)>>>0);i=c[da>>2]|0}}while(0);q=q+1|0;if((q|0)>=(i|0)){j=0;break}}}else j=0;while(0);i=d[v>>0]|d[v+1>>0]<<8;do if((i&3)==3){c[Z>>2]=256;a[S>>0]=(j|0)==0?0:y&255;b[W>>1]=(x&65535)+16;cm(aa,ha,x);i=_l(f,ha)|0;b[U>>1]=x;if(i|0){ia=147;break b}}else{if(!(i&32)){i=H;m=k+64|0;R=c[m>>2]&c[i>>2];i=c[m+4>>2]&c[i+4>>2];m=R;n=i;i=(R|0)==0&(i|0)==0?576:512}else{m=0;n=0;i=576}c[Z>>2]=i;i=(j|0)!=0;if((!i?(c[Y>>2]&32|0)==0:0)?(c[w>>2]|0)==0:0){if(!((m|0)==0&(n|0)==0))break;if((d[v>>0]|d[v+1>>0]<<8)&4)break;if((b[k+48>>1]|0)>=(b[A>>1]|0))break;if(!((b[G>>1]&4)==0&(c[7328]|0)!=0))break;if(b[(c[c[_>>2]>>2]|0)+76>>1]&32)break}a[S>>0]=i?y&255:0;i=x<<16>>16;l=i+1+(((b[k+48>>1]|0)*15|0)/(b[A>>1]|0)|0)&65535;b[W>>1]=l;if(!((m|0)==0&(n|0)==0)){i=i+16&65535;n=c[I>>2]|0;if((c[B>>2]|0)>0){m=0;do{l=c[C>>2]|0;j=c[l+(m*48|0)>>2]|0;c[ca>>2]=0;c[ca+4>>2]=0;c[ca+8>>2]=0;c[ca+12>>2]=0;c[ca+16>>2]=0;c[ca+20>>2]=0;c[D>>2]=n;c[fa>>2]=k;c[E>>2]=148;c[F>>2]=fa;if(j){_j(ca,j)|0;if(a[z>>0]|0)break}j=b[l+(m*48|0)+8>>1]|0;do if(j<<16>>16<1)i=(j&65535)+(i&65535)&65535;else{i=i+-1<<16>>16;if(!(b[l+(m*48|0)+12>>1]&130))break;i=(i&65535)+65517&65535}while(0);m=m+1|0}while((m|0)<(c[B>>2]|0));l=b[W>>1]|0}j=l<<16>>16;m=i<<16>>16;do if(l<<16>>16>16){if((j+49|0)>=(m|0))if((j+31|0)<(m|0)){i=m+1&65535;break}else{i=(d[18112+(m-j)>>0]|0)+m&65535;break}}else if((m+49|0)>=(j|0))if((m+31|0)<(j|0)){i=j+1&65535;break}else{i=(d[18112+(j-m)>>0]|0)+j&65535;break}else i=l;while(0);b[W>>1]=i}cm(aa,ha,x);i=_l(f,ha)|0;b[U>>1]=x;if(i|0){ia=147;break b}}while(0);c[X>>2]=0;i=dm(f,$,k,0)|0;if((c[X>>2]|0)==1)c[Y>>2]=c[Y>>2]|256}else i=0}if(c[ba>>2]|0){ia=147;break}k=c[k+20>>2]|0;if(!((i|0)==0&(k|0)!=0)){ia=147;break}else y=y+1|0}if((ia|0)==147){Ra=ja;return i|0}return 0}function Yl(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;ia=Ra;Ra=Ra+608|0;ba=ia+168|0;da=ia+576|0;ha=ia+112|0;ea=ia+56|0;fa=ia;k=c[f>>2]|0;_=c[f+4>>2]|0;o=c[_+20>>2]|0;n=c[_+12>>2]|0;$=o+(n*48|0)|0;aa=c[f+12>>2]|0;l=ha;m=l+56|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));k=c[k+4>>2]|0;l=d[aa+16>>0]|0;Z=c[k+8+(l*72|0)+40>>2]|0;if((n|0)<=0){ha=0;Ra=ia;return ha|0}W=aa+8|0;X=da+8|0;Y=da+16|0;E=k+8+(l*72|0)+16|0;F=da+4|0;G=ba+4|0;H=ba+8|0;I=ba+12|0;J=ba+20|0;K=fa+8|0;L=ha+8|0;M=ea+8|0;N=ha+16|0;O=aa+40|0;P=aa+48|0;Q=aa+36|0;R=aa+18|0;S=aa+17|0;T=aa+24|0;U=aa+20|0;V=aa+22|0;k=0;a:while(1){b:do if((b[o+12>>1]&512)!=0?(ca=c[o+28>>2]|0,D=ca+408|0,C=W,!((c[C>>2]&c[D>>2]|0)==0?(c[C+4>>2]&c[D+4>>2]|0)==0:0)):0){l=ca+20|0;D=(c[l>>2]|0)+((c[ca+12>>2]|0)*48|0)|0;c[da>>2]=c[f>>2];c[da+4>>2]=c[f+4>>2];c[da+8>>2]=c[f+8>>2];c[da+12>>2]=c[f+12>>2];c[da+16>>2]=c[f+16>>2];c[da+20>>2]=c[f+20>>2];c[da+24>>2]=c[f+24>>2];c[X>>2]=0;c[Y>>2]=ea;l=c[l>>2]|0;c:do if(l>>>0>>0){n=1;C=l;l=0;do{if(!(b[C+12>>1]&1024)){if((c[C+20>>2]|0)==(Z|0)){c[ba>>2]=c[_>>2];c[G>>2]=_;a[H>>0]=44;c[I>>2]=1;c[J>>2]=C;l=ba;ga=11}}else{l=c[C+28>>2]|0;ga=11}do if((ga|0)==11){ga=0;c[F>>2]=l;b[ea>>1]=0;if(!(c[(c[E>>2]|0)+56>>2]|0))l=Xl(da,g,h)|0;else l=Wl(da,g,h,i,j)|0;if(!l)l=Yl(da,g,h,i,j)|0;m=b[ea>>1]|0;if(!(m<<16>>16)){k=0;break c}if(n|0){ew(L|0,M|0,(m&65535)<<4|0)|0;n=0;k=m;break}b[fa>>1]=k;B=k&65535;ew(K|0,L|0,B<<4|0)|0;if(!(k<<16>>16))k=0;else{x=m&65535;w=0;k=0;do{y=fa+8+(w<<4)|0;z=fa+8+(w<<4)+8|0;A=fa+8+(w<<4)+10|0;v=0;do{u=y;m=ea+8+(v<<4)|0;t=c[m>>2]|c[u>>2];u=c[m+4>>2]|c[u+4>>2];m=b[z>>1]|0;n=b[ea+8+(v<<4)+8>>1]|0;p=m<<16>>16;q=n<<16>>16;do if(m<<16>>16>16){if((p+49|0)<(q|0)){m=n;break}if((p+31|0)<(q|0)){m=q+1&65535;break}else{m=(d[18112+(q-p)>>0]|0)+q&65535;break}}else{if((q+49|0)<(p|0))break;if((q+31|0)<(p|0)){m=p+1&65535;break}else{m=(d[18112+(p-q)>>0]|0)+p&65535;break}}while(0);n=b[A>>1]|0;p=b[ea+8+(v<<4)+10>>1]|0;q=n<<16>>16;r=p<<16>>16;do if(n<<16>>16>16){if((q+49|0)<(r|0))break;if((q+31|0)<(r|0)){p=r+1&65535;break}else{p=(d[18112+(r-q)>>0]|0)+r&65535;break}}else{if((r+49|0)<(q|0)){p=n;break}if((r+31|0)<(q|0)){p=q+1&65535;break}else{p=(d[18112+(q-r)>>0]|0)+q&65535;break}}while(0);d:do if(k<<16>>16){n=k;r=L;while(1){q=b[r+8>>1]|0;if(q<<16>>16>=m<<16>>16?(s=r,(c[s>>2]&t|0)==(t|0)?(c[s+4>>2]&u|0)==(u|0):0):0){ga=52;break}if(q<<16>>16<=m<<16>>16?(s=r,q=c[s>>2]|0,s=c[s+4>>2]|0,(q&t|0)==(q|0)&(s&u|0)==(s|0)):0)break d;n=n+-1<<16>>16;if(!(n<<16>>16))break;else r=r+16|0}if((ga|0)==52){q=r;n=r+8|0;ga=53;break}if((k&65535)<3){ga=48;break}r=k&65535;s=L;n=b[N>>1]|0;q=1;do{s=n<<16>>16>(b[ha+8+(q<<4)+8>>1]|0)?ha+8+(q<<4)|0:s;q=q+1|0;n=b[s+8>>1]|0}while((q|0)!=(r|0));if(n<<16>>16>m<<16>>16){q=s;n=s+8|0;ga=53}}else ga=48;while(0);if((ga|0)==48){n=k&65535;b[ha+8+(n<<4)+10>>1]=p;q=ha+8+(n<<4)|0;n=ha+8+(n<<4)+8|0;k=k+1<<16>>16;ga=53}do if((ga|0)==53){ga=0;s=q;c[s>>2]=t;c[s+4>>2]=u;b[n>>1]=m;m=q+10|0;if((b[m>>1]|0)<=p<<16>>16)break;b[m>>1]=p}while(0);v=v+1|0}while((v|0)!=(x|0));w=w+1|0}while((w|0)!=(B|0))}n=0}while(0);C=C+48|0}while(C>>>0>>0)}else l=0;while(0);b[O>>1]=1;c[c[P>>2]>>2]=o;c[Q>>2]=8192;b[R>>1]=0;a[S>>0]=0;c[T>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;if(l|0)break a;n=k&65535;m=0;while(1){if(m>>>0>=n>>>0)break b;b[U>>1]=(e[ha+8+(m<<4)+8>>1]|0)+1;b[V>>1]=b[ha+8+(m<<4)+10>>1]|0;C=ha+8+(m<<4)|0;D=c[C+4>>2]|0;l=aa;c[l>>2]=c[C>>2];c[l+4>>2]=D;l=_l(f,aa)|0;if(!l)m=m+1|0;else break a}}while(0);o=o+48|0;if(o>>>0>=$>>>0){l=0;break}}b[ha>>1]=k;ha=l;Ra=ia;return ha|0}function Zl(f,i,j,k,l,m,n,o,p){f=f|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;U=Ra;Ra=Ra+32|0;P=U+24|0;M=U+16|0;x=U+8|0;y=U;B=c[f+4>>2]|0;G=c[n+16>>2]|0;T=c[f+12>>2]|0;v=c[f>>2]|0;O=c[v>>2]|0;v=c[v+4>>2]|0;w=d[T+16>>0]|0;I=c[n>>2]|0;c[p>>2]=0;C=T;c[C>>2]=i;c[C+4>>2]=j;C=n+4|0;z=(I|0)>0;if(z){q=c[B+20>>2]|0;i=c[C>>2]|0;j=0;while(1){S=c[i+8>>2]|0;u=i+5|0;a[u>>0]=0;Q=q+(S*48|0)+32|0;N=c[Q>>2]|0;Q=c[Q+4>>2]|0;if((N&k|0)==(N|0)&(Q&l|0)==(Q|0)?(b[q+(S*48|0)+12>>1]&m)<<16>>16==0:0)a[u>>0]=1;j=j+1|0;if((j|0)==(I|0))break;else i=i+12|0}}gw(G|0,0,I<<3|0)|0;J=n+24|0;c[J>>2]=0;E=n+20|0;c[E>>2]=0;K=n+32|0;c[K>>2]=0;N=n+40|0;g[N>>3]=5.e+98;Q=n+48|0;S=Q;c[S>>2]=25;c[S+4>>2]=0;S=n+56|0;c[S>>2]=0;j=v+8+(w*72|0)+56|0;i=c[j+4>>2]|0;D=n+64|0;c[D>>2]=c[j>>2];c[D+4>>2]=i;D=v+8+(w*72|0)+16|0;i=c[(c[D>>2]|0)+64>>2]|0;j=c[O>>2]|0;if((c[i>>2]|0)!=(j|0))do i=c[i+24>>2]|0;while((c[i>>2]|0)!=(j|0));q=c[i+8>>2]|0;u=Xa[c[(c[q>>2]|0)+12>>2]&255](q,n)|0;a:do switch(u|0){case 0:case 19:break;case 7:{i=c[O>>2]|0;j=i+81|0;if((a[j>>0]|0)==0?(a[i+82>>0]|0)==0:0){a[j>>0]=1;if((c[i+180>>2]|0)>0)c[i+264>>2]=1;A=i+272|0;c[A>>2]=(c[A>>2]|0)+1;i=c[i+236>>2]|0;if(i|0)c[i+12>>2]=7}break}default:{i=c[q+8>>2]|0;if(i|0){c[x>>2]=i;cd(O,31408,x);break a}switch(u|0){case 516:{i=50738;break}case 100:{i=50760;break}case 101:{i=50782;break}default:{i=u&255;if(i>>>0<29?(520028155>>>i&1|0)!=0:0)i=c[22960+(i<<2)>>2]|0;else i=50724}}c[y>>2]=i;cd(O,31408,y)}}while(0);i=q+8|0;j=c[i>>2]|0;do if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{A=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);c[i>>2]=0;switch(u|0){case 0:{do if(z){j=T+48|0;i=0;do{c[(c[j>>2]|0)+(i<<2)>>2]=0;i=i+1|0}while((i|0)!=(I|0));A=T+24|0;i=T+30|0;b[i>>1]=0;if(z){y=B+12|0;z=T+48|0;x=B+20|0;u=-1;v=c[C>>2]|0;w=0;while(1){q=c[G+(w<<3)>>2]|0;k=q+-1|0;if((q|0)>0){l=c[v+8>>2]|0;if((q|0)>(I|0)|(l|0)<0)break;if((l|0)>=(c[y>>2]|0))break;j=(c[z>>2]|0)+(k<<2)|0;if(c[j>>2]|0)break;if(!(a[v+5>>0]|0))break;m=c[x>>2]|0;V=m+(l*48|0)+32|0;W=T;B=c[W+4>>2]|c[V+4>>2];C=T;c[C>>2]=c[W>>2]|c[V>>2];c[C+4>>2]=B;c[j>>2]=m+(l*48|0);u=(k|0)>(u|0)?k:u;if((q|0)<17?a[G+(w<<3)+4>>0]|0:0)b[i>>1]=1<>1];if(b[m+(l*48|0)+12>>1]&1){c[K>>2]=0;c[S>>2]=c[S>>2]&-2;c[p>>2]=1}}w=w+1|0;if((w|0)>=(I|0)){R=50;break}else v=v+12|0}if((R|0)==50){j=b[i>>1]|0;q=A;k=A;break}c[M>>2]=c[c[D>>2]>>2];cd(O,43661,M);W=1;Ra=U;return W|0}else{u=-1;j=0;q=A;k=A}}else{k=T+24|0;i=T+30|0;b[i>>1]=0;u=-1;j=0;q=k}while(0);b[i>>1]=j&~o;b[T+40>>1]=u+1;b:do if((u|0)>=0){j=c[T+48>>2]|0;i=0;while(1){if(!(c[j+(i<<2)>>2]|0))break;if((i|0)<(u|0))i=i+1|0;else break b}c[P>>2]=c[c[D>>2]>>2];cd(O,43661,P);W=1;Ra=U;return W|0}while(0);c[q>>2]=c[E>>2];u=n+28|0;l=T+28|0;a[l>>0]=c[u>>2];c[u>>2]=0;u=T+32|0;c[u>>2]=c[J>>2];if(!(c[K>>2]|0))i=0;else i=c[n+8>>2]&255;a[k+5>>0]=i;b[T+18>>1]=0;r=+g[N>>3];g[h>>3]=r;i=c[h>>2]|0;j=c[h+4>>2]|0;do if(!(r<=1.0)){if(!(r<=2.0e9)){i=bw(i|0,j|0,52)|0;L()|0;i=(i*10|0)+55316&65535;break}i=~~r>>>0;j=+t(r)>=1.0?(r>0.0?~~+H(+s(r/4294967296.0),4294967295.0)>>>0:~~+F((r-+(~~r>>>0))/4294967296.0)>>>0):0;if(!(j>>>0<0|(j|0)==0&i>>>0<8)){if(j>>>0>0|(j|0)==0&i>>>0>255){q=40;do{q=(q&65535)+40|0;W=i;i=bw(i|0,j|0,4)|0;V=j;j=L()|0}while(V>>>0>0|(V|0)==0&W>>>0>4095);q=q&65535}else q=40;if(j>>>0>0|(j|0)==0&i>>>0>15)do{q=(q&65535)+10&65535;W=i;i=bw(i|0,j|0,1)|0;V=j;j=L()|0}while(V>>>0>0|(V|0)==0&W>>>0>31)}else{if(j>>>0<0|(j|0)==0&i>>>0<2){i=0;break}q=40;do{q=(q&65535)+65526|0;i=cw(i|0,j|0,1)|0;j=L()|0}while(j>>>0<0|(j|0)==0&i>>>0<8);q=q&65535}i=(q&65535)+65526+(e[3648+((i&7)<<1)>>1]|0)&65535}else i=0;while(0);b[T+20>>1]=i;j=Q;i=c[j>>2]|0;j=c[j+4>>2]|0;if(j>>>0<0|(j|0)==0&i>>>0<8)if(j>>>0<0|(j|0)==0&i>>>0<2)i=0;else{q=40;do{q=(q&65535)+65526|0;i=cw(i|0,j|0,1)|0;j=L()|0}while(j>>>0<0|(j|0)==0&i>>>0<8);q=q&65535;R=88}else{if(j>>>0>0|(j|0)==0&i>>>0>255){q=40;do{q=(q&65535)+40|0;W=i;i=bw(i|0,j|0,4)|0;V=j;j=L()|0}while(V>>>0>0|(V|0)==0&W>>>0>4095);q=q&65535}else q=40;if(j>>>0>0|(j|0)==0&i>>>0>15){do{q=(q&65535)+10&65535;W=i;i=bw(i|0,j|0,1)|0;V=j;j=L()|0}while(V>>>0>0|(V|0)==0&W>>>0>31);R=88}else R=88}if((R|0)==88)i=(q&65535)+65526+(e[3648+((i&7)<<1)>>1]|0)&65535;b[T+22>>1]=i;j=T+36|0;W=c[j>>2]|0;c[j>>2]=(c[S>>2]&1|0)==0?W&-4097:W|4096;j=_l(f,T)|0;if(!(a[l>>0]|0)){W=j;Ra=U;return W|0}i=c[u>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{W=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-W;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);a[l>>0]=0;W=j;Ra=U;return W|0}case 19:{W=0;Ra=U;return W|0}default:{W=u;Ra=U;return W|0}}return 0}function _l(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;k=c[f>>2]|0;B=c[c[k>>2]>>2]|0;h=f+24|0;i=c[h>>2]|0;if(!i){f=c[f+16>>2]|0;if(!f){g=101;return g|0}b[f>>1]=0;g=101;return g|0}c[h>>2]=i+-1;p=c[f+16>>2]|0;if(p|0){if(!(b[g+40>>1]|0)){g=0;return g|0}m=g;l=c[m>>2]|0;m=c[m+4>>2]|0;n=b[g+20>>1]|0;o=b[g+22>>1]|0;j=b[p>>1]|0;i=p+8|0;do if(j<<16>>16){f=j;k=i;while(1){h=b[k+8>>1]|0;if(h<<16>>16>=n<<16>>16?(g=k,(c[g>>2]&l|0)==(l|0)?(c[g+4>>2]&m|0)==(m|0):0):0){v=18;break}if(h<<16>>16<=n<<16>>16?(g=k,B=c[g>>2]|0,g=c[g+4>>2]|0,(B&l|0)==(B|0)&(g&m|0)==(g|0)):0){f=0;v=157;break}f=f+-1<<16>>16;if(!(f<<16>>16)){v=13;break}else k=k+16|0}if((v|0)==13){if((j&65535)<3){v=14;break}j=j&65535;f=b[p+16>>1]|0;h=1;do{i=f<<16>>16>(b[p+8+(h<<4)+8>>1]|0)?p+8+(h<<4)|0:i;h=h+1|0;f=b[i+8>>1]|0}while((h|0)!=(j|0));if(f<<16>>16>n<<16>>16){h=i;f=i+8|0;break}else f=0;return f|0}else if((v|0)==18){h=k;f=k+8|0;break}else if((v|0)==157)return f|0}else v=14;while(0);if((v|0)==14){f=j&65535;b[p>>1]=j+1<<16>>16;b[p+8+(f<<4)+10>>1]=o;h=p+8+(f<<4)|0;f=p+8+(f<<4)+8|0}g=h;c[g>>2]=l;c[g+4>>2]=m;b[f>>1]=n;f=h+10|0;if((b[f>>1]|0)<=o<<16>>16){g=0;return g|0}b[f>>1]=o;g=0;return g|0}f=k+60|0;p=c[f>>2]|0;A=g+36|0;n=c[A>>2]|0;k=(p|0)==0;if(!(k|(n&512|0)==0)){l=g+20|0;m=g+22|0;i=a[g+16>>0]|0;h=p;do{do if((a[h+16>>0]|0)==i<<24>>24?c[h+36>>2]&512|0:0){if(am(h,g)|0){b[l>>1]=b[h+20>>1]|0;b[m>>1]=(e[h+22>>1]|0)+65535;break}if(am(g,h)|0){b[l>>1]=b[h+20>>1]|0;b[m>>1]=(e[h+22>>1]|0)+1}}while(0);h=c[h+52>>2]|0}while((h|0)!=0)}a:do if(k)v=57;else{q=a[g+16>>0]|0;r=g+17|0;o=g+42|0;s=g+18|0;t=g+20|0;u=g+22|0;if((n&513|0)!=513){m=p;while(1){if((a[m+16>>0]|0)==q<<24>>24?(a[m+17>>0]|0)==(a[r>>0]|0):0){v=m;p=c[v>>2]|0;v=c[v+4>>2]|0;i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;k=h&p;l=i&v;if((((k|0)==(p|0)&(l|0)==(v|0)?(b[m+18>>1]|0)<=(b[s>>1]|0):0)?(b[m+20>>1]|0)<=(b[t>>1]|0):0)?(b[m+22>>1]|0)<=(b[u>>1]|0):0){f=0;break}if(((k|0)==(h|0)&(l|0)==(i|0)?(b[m+20>>1]|0)>=(b[t>>1]|0):0)?(b[m+22>>1]|0)>=(b[u>>1]|0):0){v=57;break a}}f=m+52|0;m=c[f>>2]|0;if(!m){i=f;v=58;break a}}return f|0}m=p;while(1){if((a[m+16>>0]|0)==q<<24>>24?(a[m+17>>0]|0)==(a[r>>0]|0):0){if((c[m+36>>2]&16384|0?(b[o>>1]|0)==0:0)?(p=m,v=g,n=c[v>>2]|0,v=c[v+4>>2]|0,(n&c[p>>2]|0)==(n|0)?(v&c[p+4>>2]|0)==(v|0):0):0){v=57;break a}v=m;p=c[v>>2]|0;v=c[v+4>>2]|0;i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;k=h&p;l=i&v;if((((k|0)==(p|0)&(l|0)==(v|0)?(b[m+18>>1]|0)<=(b[s>>1]|0):0)?(b[m+20>>1]|0)<=(b[t>>1]|0):0)?(b[m+22>>1]|0)<=(b[u>>1]|0):0){f=0;break}if(((k|0)==(h|0)&(l|0)==(i|0)?(b[m+20>>1]|0)>=(b[t>>1]|0):0)?(b[m+22>>1]|0)>=(b[u>>1]|0):0){v=57;break a}}f=m+52|0;m=c[f>>2]|0;if(!m){i=f;v=58;break a}}return f|0}while(0);b:do if((v|0)==57){u=c[f>>2]|0;if(u){f=u+52|0;h=c[f>>2]|0;if(h){o=g+16|0;p=g+17|0;q=g+42|0;r=g+18|0;s=g+20|0;t=g+22|0;do{n=a[o>>0]|0;while(1){if((a[h+16>>0]|0)==n<<24>>24?(a[h+17>>0]|0)==(a[p>>0]|0):0){if(((c[h+36>>2]&16384|0?(b[q>>1]|0)==0:0)?(c[A>>2]&513|0)==513:0)?(l=h,m=g,k=c[m>>2]|0,m=c[m+4>>2]|0,(k&c[l>>2]|0)==(k|0)?(m&c[l+4>>2]|0)==(m|0):0):0)break;C=h;D=c[C>>2]|0;C=c[C+4>>2]|0;k=g;i=c[k>>2]|0;k=c[k+4>>2]|0;l=i&D;m=k&C;if((((l|0)==(D|0)&(m|0)==(C|0)?(b[h+18>>1]|0)<=(b[r>>1]|0):0)?(b[h+20>>1]|0)<=(b[s>>1]|0):0)?(b[h+22>>1]|0)<=(b[t>>1]|0):0)break b;if(((l|0)==(i|0)&(m|0)==(k|0)?(b[h+20>>1]|0)>=(b[s>>1]|0):0)?(b[h+22>>1]|0)>=(b[t>>1]|0):0)break}f=h+52|0;h=c[f>>2]|0;if(!h)break b}c[f>>2]=c[h+52>>2];$l(B,h);h=c[f>>2]|0}while((h|0)!=0)}}else{i=f;v=58}}while(0);do if((v|0)==58){c:do if(c[B+272>>2]|0)if(!(a[B+81>>0]|0))v=69;else{c[i>>2]=0;D=7;return D|0}else{do if((e[B+276>>1]|0)>=72){h=B+300|0;f=c[h>>2]|0;if(f|0){c[h>>2]=c[f>>2];D=B+284|0;c[D>>2]=(c[D>>2]|0)+1;break c}h=B+296|0;f=c[h>>2]|0;if(!f){f=B+292|0;break}else{c[h>>2]=c[f>>2];D=B+284|0;c[D>>2]=(c[D>>2]|0)+1;break c}}else f=B+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;v=69}while(0);if((v|0)==69)f=_d(B,72,0)|0;c[i>>2]=f;if(!f){D=7;return D|0}else{c[f+48>>2]=f+56;b[f+40>>1]=0;b[f+44>>1]=3;c[f+36>>2]=0;c[f+52>>2]=0;u=f;break}}while(0);l=u+36|0;f=c[l>>2]|0;do if(f&17408|0){if(f&1024|0?(x=u+28|0,a[x>>0]|0):0){f=u+32|0;h=c[f>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{D=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);a[x>>0]=0;c[f>>2]=0;break}if(f&16384|0?(y=u+32|0,w=c[y>>2]|0,w|0):0){f=c[w+16>>2]|0;d:do if(f){do if(B|0){h=B+480|0;if(!(c[h>>2]|0)){i=f;if((c[B+304>>2]|0)>>>0>i>>>0)break;if((c[B+308>>2]|0)>>>0<=i>>>0)break;D=B+300|0;c[f>>2]=c[D>>2];c[D>>2]=f}else Xd(B,f);f=c[y>>2]|0;v=113;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);v=111;break}else{v=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-v;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);v=111;break}}else v=111;while(0);if((v|0)==111){f=c[y>>2]|0;if(!B){z=f;v=118}else{h=B+480|0;v=113}}do if((v|0)==113){if(c[h>>2]|0){Xd(B,f);break}D=f;if((c[B+304>>2]|0)>>>0<=D>>>0?(c[B+308>>2]|0)>>>0>D>>>0:0){D=B+300|0;c[f>>2]=c[D>>2];c[D>>2]=f}else{z=f;v=118}}while(0);do if((v|0)==118?z|0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](z);break}else{D=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);break}while(0);c[y>>2]=0}}while(0);f=b[g+40>>1]|0;k=u+44|0;do if((e[k>>1]|0)<(f&65535)){i=(f&65535)+7&131064;h=i<<2;e:do if(c[B+272>>2]|0){if(!(a[B+81>>0]|0))v=135}else{do if(!(0<0|(0==0?(e[B+276>>1]|0)>>>0>>0:0))){f=B+300|0;j=c[f>>2]|0;if(j|0){c[f>>2]=c[j>>2];v=B+284|0;c[v>>2]=(c[v>>2]|0)+1;v=136;break e}f=B+296|0;j=c[f>>2]|0;if(!j){f=B+292|0;break}else{c[f>>2]=c[j>>2];v=B+284|0;c[v>>2]=(c[v>>2]|0)+1;v=136;break e}}else f=B+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;v=135}while(0);if((v|0)==135){j=_d(B,h,0)|0;v=136}if((v|0)==136?j|0:0){f=u+48|0;ew(j|0,c[f>>2]|0,e[k>>1]<<2|0)|0;h=c[f>>2]|0;do if((h|0)!=(u+56|0)){if(c[B+480>>2]|0){Xd(B,h);break}D=h;if((c[B+304>>2]|0)>>>0<=D>>>0?(c[B+308>>2]|0)>>>0>D>>>0:0){D=B+300|0;c[h>>2]=c[D>>2];c[D>>2]=h;break}if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{D=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[f>>2]=j;b[k>>1]=i;v=149;break}i=u+24|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;i=7}else{j=c[u+48>>2]|0;v=149}while(0);do if((v|0)==149){f=u;h=g;i=f+44|0;do{c[f>>2]=c[h>>2];f=f+4|0;h=h+4|0}while((f|0)<(i|0));ew(j|0,c[g+48>>2]|0,e[u+40>>1]<<2|0)|0;f=c[A>>2]|0;if(f&1024|0){a[g+28>>0]=0;i=0;break}if(!(f&16384))i=0;else{c[g+32>>2]=0;i=0}}while(0);if(c[l>>2]&1024|0){D=i;return D|0}f=u+32|0;h=c[f>>2]|0;if(!h){D=i;return D|0}D=h+55|0;if(((d[D>>0]|d[D+1>>0]<<8)&3)!=3){D=i;return D|0}c[f>>2]=0;D=i;return D|0}function $l(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=e+48|0;f=c[l>>2]|0;m=e+56|0;do if((f|0)!=(m|0)){if(d|0){if(c[d+480>>2]|0){Xd(d,f);break}k=f;if((c[d+304>>2]|0)>>>0<=k>>>0?(c[d+308>>2]|0)>>>0>k>>>0:0){k=d+300|0;c[f>>2]=c[k>>2];c[k>>2]=f;break}}if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{k=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);k=e+36|0;f=c[k>>2]|0;do if(f&17408|0){if(f&1024|0?(h=e+28|0,a[h>>0]|0):0){f=e+32|0;g=c[f>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);a[h>>0]=0;c[f>>2]=0;break}if(f&16384|0?(i=e+32|0,g=c[i>>2]|0,g|0):0){f=c[g+16>>2]|0;a:do if(f){do if(d|0){g=d+480|0;if(!(c[g>>2]|0)){h=f;if((c[d+304>>2]|0)>>>0>h>>>0)break;if((c[d+308>>2]|0)>>>0<=h>>>0)break;h=d+300|0;c[f>>2]=c[h>>2];c[h>>2]=f}else Xd(d,f);f=c[i>>2]|0;h=35;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);h=33;break}else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);h=33;break}}else h=33;while(0);if((h|0)==33){f=c[i>>2]|0;if(!d){j=f;h=40}else{g=d+480|0;h=35}}do if((h|0)==35){if(c[g>>2]|0){Xd(d,f);break}g=f;if((c[d+304>>2]|0)>>>0<=g>>>0?(c[d+308>>2]|0)>>>0>g>>>0:0){g=d+300|0;c[f>>2]=c[g>>2];c[g>>2]=f}else{j=f;h=40}}while(0);do if((h|0)==40?j|0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{h=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);c[i>>2]=0}}while(0);c[l>>2]=m;b[e+40>>1]=0;b[e+44>>1]=3;c[k>>2]=0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);return}m=e;if((c[d+304>>2]|0)>>>0<=m>>>0?(c[d+308>>2]|0)>>>0>m>>>0:0){m=d+300|0;c[e>>2]=c[m>>2];c[m>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{m=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}function am(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=b[a+40>>1]|0;g=h&65535;j=b[a+42>>1]|0;i=b[d+40>>1]|0;l=i&65535;k=b[d+42>>1]|0;if((k&65535)>(j&65535)?1:(g-(j&65535)|0)>=(l-(k&65535)|0)){d=0;return d|0}e=b[a+20>>1]|0;f=b[d+20>>1]|0;if(e<<16>>16>=f<<16>>16){if(e<<16>>16>f<<16>>16){d=0;return d|0}if((b[a+22>>1]|0)>(b[d+22>>1]|0)){d=0;return d|0}}e=g+-1|0;a:do if(h<<16>>16){k=c[a+48>>2]|0;j=d+48|0;if(!(i<<16>>16)){while(1){if(c[k+(e<<2)>>2]|0){e=0;break}if((e|0)>0)e=e+-1|0;else break a}return e|0}b:while(1){h=c[k+(e<<2)>>2]|0;c:do if(h|0){i=c[j>>2]|0;f=l;while(1){g=f;f=f+-1|0;if((c[i+(f<<2)>>2]|0)==(h|0))break c;if((g|0)<=1){e=0;break b}}}while(0);if((e|0)>0)e=e+-1|0;else break a}return e|0}while(0);if(c[a+36>>2]&64|0?(c[d+36>>2]&64|0)==0:0){d=0;return d|0}d=1;return d|0}function bm(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;g=c[c[e>>2]>>2]|0;a:do if((a[f>>0]|0)==44){while(1){if(!(bm(d,e,c[f+12>>2]|0)|0)){f=0;break}f=c[f+16>>2]|0;if((a[f>>0]|0)!=44)break a}return f|0}while(0);k=(0==0?(c[(c[g>>2]|0)+32>>2]&8388608|0)==0:0)?g:0;j=e+12|0;g=c[j>>2]|0;if((g|0)<=0){d=0;return d|0}h=c[e+20>>2]|0;i=0;while(1){e=c[h>>2]|0;if(!((c[e+4>>2]&1|0)!=0?(b[e+36>>1]|0)!=(d|0):0)){if(em(k,e,f,d)|0){f=1;g=12;break}g=c[j>>2]|0}i=i+1|0;if((i|0)>=(g|0)){f=0;g=12;break}else h=h+48|0}if((g|0)==12)return f|0;return 0}function cm(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;s=t;r=d;p=d+8|0;g=p;q=~(c[g>>2]|c[r>>2]);r=~(c[g+4>>2]|c[r+4>>2]);g=c[a+12>>2]|0;m=a+20|0;a:do if((g|0)>0){n=d+40|0;o=d+48|0;d=d+22|0;a=0;l=c[m>>2]|0;while(1){if(b[l+10>>1]&2)break a;k=l+40|0;i=c[k>>2]|0;k=c[k+4>>2]|0;j=p;b:do if((i&q|0)==0&(k&r|0)==0&(c[j>>2]&i|0?1:(c[j+4>>2]&k|0)!=0)){h=b[n>>1]|0;if(h<<16>>16){k=c[o>>2]|0;h=h&65535;do{i=h;h=h+-1|0;j=c[k+(h<<2)>>2]|0;if(j|0){if((j|0)==(l|0))break b;j=c[j+16>>2]|0;if((j|0)>-1?((c[m>>2]|0)+(j*48|0)|0)==(l|0):0)break b}}while((i|0)>1)}h=b[l+8>>1]|0;if(h<<16>>16<1){b[d>>1]=(e[d>>1]|0)+(h&65535);break}b[d>>1]=(b[d>>1]|0)+-1<<16>>16;if(b[l+12>>1]&130){k=(uk(c[(c[l>>2]|0)+16>>2]|0,s)|0)!=0;k=k&((c[s>>2]|0)+1|0)>>>0<3?10:20;c[s>>2]=k;a=(k|0)>(a<<16>>16|0)?k&65535:a}}while(0);if((g|0)>1){g=g+-1|0;l=l+48|0}else break}}else{a=0;d=d+22|0}while(0);a=(f<<16>>16)-(a<<16>>16)|0;if((a|0)>=(b[d>>1]|0)){Ra=t;return}b[d>>1]=a;Ra=t;return}function dm(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0;Fa=Ra;Ra=Ra+96|0;ga=Fa;ja=c[c[f>>2]>>2]|0;ua=c[ja>>2]|0;va=c[f+12>>2]|0;sa=ua+81|0;if(a[sa>>0]|0){Ea=7;Ra=Fa;return Ea|0}wa=va+36|0;xa=c[wa>>2]|0;da=(xa&32|0)==0?447:24;ra=h+55|0;da=((d[ra>>0]|d[ra+1>>0]<<8)&4)==0?da:da&387;ya=va+24|0;za=b[ya>>1]|0;ka=va+26|0;la=b[ka>>1]|0;ma=va+28|0;na=b[ma>>1]|0;Aa=va+42|0;oa=b[Aa>>1]|0;Ba=va+40|0;m=b[Ba>>1]|0;qa=va;pa=c[qa>>2]|0;qa=c[qa+4>>2]|0;Ca=va+22|0;Da=b[Ca>>1]|0;ha=f+4|0;k=c[ha>>2]|0;ia=g+40|0;ta=c[ia>>2]|0;Ea=za&65535;c[ga>>2]=k;c[ga+4>>2]=k;k=ga+12|0;c[k>>2]=0;l=ga+16|0;a[l>>0]=0;n=ga+8|0;c[n>>2]=0;c[ga+20>>2]=da;c[ga+24>>2]=0;c[ga+28>>2]=ta;a[ga+17>>0]=1;a[ga+18>>0]=1;do if(h){o=b[(c[h+4>>2]|0)+(Ea<<1)>>1]|0;j=o<<16>>16;if(o<<16>>16==-2){c[k>>2]=c[(c[h+40>>2]|0)+4+(Ea*20|0)>>2];c[n>>2]=c[(c[h+32>>2]|0)+(Ea<<2)>>2];b[ga+72>>1]=-2;n=Ul(ga)|0;break}k=c[h+12>>2]|0;if(o<<16>>16!=(b[k+40>>1]|0))if(o<<16>>16>-1){a[l>>0]=a[(c[k+4>>2]|0)+(j<<4)+13>>0]|0;c[n>>2]=c[(c[h+32>>2]|0)+(Ea<<2)>>2];ca=8}else ca=8;else{j=-1;ca=8}}else{j=Ea;ca=8}while(0);if((ca|0)==8){b[ga+72>>1]=j;n=Tl(ga)|0}b[va+18>>1]=0;ta=h+8|0;da=b[c[ta>>2]>>1]|0;if(da<<16>>16<11)M=0;else{j=da<<16>>16;k=((j|0)<0)<<31>>31;if((da&65535)>255){l=40;do{l=(l&65535)+40|0;ba=j;j=bw(j|0,k|0,4)|0;aa=k;k=L()|0}while(aa>>>0>0|(aa|0)==0&ba>>>0>4095);l=l&65535}else l=40;if(k>>>0>0|(k|0)==0&j>>>0>15){do{l=(l&65535)+10&65535;ba=j;j=bw(j|0,k|0,1)|0;aa=k;k=L()|0}while(aa>>>0>0|(aa|0)==0&ba>>>0>31);k=l}else k=l;M=(k&65535)+65493+(e[3648+((j&7)<<1)>>1]|0)&65535}a:do if(!n)j=0;else{v=h+4|0;w=va+8|0;x=h+12|0;y=g+36|0;z=h+54|0;A=f+20|0;B=va+44|0;C=h+50|0;D=va+48|0;E=m&65535;V=E+8&131064;F=V<<2;G=ua+272|0;H=ua+276|0;I=h+48|0;J=g+16|0;K=M<<16>>16;N=ua+288|0;O=ua+300|0;P=va+56|0;Q=i<<16>>16==0;R=K+49|0;S=va+20|0;T=ua+296|0;U=ua+284|0;V=V&65535;W=ua+480|0;X=K+31|0;Y=i<<16>>16;Z=ua+292|0;_=ua+304|0;$=h+52|0;aa=K+1&65535;ba=ua+308|0;t=n;l=0;k=0;do{s=b[t+12>>1]|0;u=s&65535;if(s<<16>>16==256){j=b[(c[v>>2]|0)+(Ea<<1)>>1]|0;if(j<<16>>16>-1)j=d[(c[(c[x>>2]|0)+4>>2]|0)+(j<<16>>16<<4)+12>>0]|0;else j=j<<16>>16==-1&1;if(j)j=0;else ca=26}else ca=26;b:do if((ca|0)==26){ca=0;r=t+32|0;q=r;o=w;n=c[o>>2]|0;o=c[o+4>>2]|0;if(((n&c[q>>2]|0)==0?(o&c[q+4>>2]|0)==0:0)?(ea=t+10|0,!(s<<16>>16==16&(b[ea>>1]&256)!=0)):0){if(a[y>>0]&8?(c[(c[t>>2]|0)+4>>2]&1|0)==0:0){j=0;break}if((a[z>>0]|0)!=0?((e[C>>1]|0)+-1|0)==(Ea|0):0)j=2;else j=1;c[A>>2]=c[A>>2]|j;c[wa>>2]=xa;b[ya>>1]=za;b[ka>>1]=la;b[ma>>1]=na;b[Ba>>1]=m;if((m&65535)<(e[B>>1]|0)){q=E;p=m;j=c[D>>2]|0}else{do if(c[G>>2]|0)if(!(a[sa>>0]|0))ca=43;else{j=0;break a}else{if(!(0<0|(0==0?(e[H>>1]|0)>>>0>>0:0))){j=c[O>>2]|0;if(j|0){c[O>>2]=c[j>>2];c[U>>2]=(c[U>>2]|0)+1;break}j=c[T>>2]|0;if(!j)j=Z;else{c[T>>2]=c[j>>2];c[U>>2]=(c[U>>2]|0)+1;break}}else j=N;c[j>>2]=(c[j>>2]|0)+1;ca=43}while(0);if((ca|0)==43){ca=0;j=_d(ua,F,0)|0}if(!j){j=0;break a}ew(j|0,c[D>>2]|0,e[B>>1]<<2|0)|0;n=c[D>>2]|0;c:do if((n|0)!=(P|0)){if(c[W>>2]|0){Xd(ua,n);break}o=n;do if((c[_>>2]|0)>>>0<=o>>>0){if((c[ba>>2]|0)>>>0<=o>>>0)break;c[n>>2]=c[O>>2];c[O>>2]=n;break c}while(0);if(!n)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{q=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[D>>2]=j;b[B>>1]=V;p=b[Ba>>1]|0;o=w;q=p&65535;n=c[o>>2]|0;o=c[o+4>>2]|0}p=p+1<<16>>16;b[Ba>>1]=p;c[j+(q<<2)>>2]=t;j=r;q=(c[j+4>>2]|qa)&~o;r=va;c[r>>2]=(c[j>>2]|pa)&~n;c[r+4>>2]=q;d:do if(!(u&1)){if(u&130|0){j=b[(c[v>>2]|0)+(Ea<<1)>>1]|0;n=c[wa>>2]|0;o=n|1;c[wa>>2]=o;do if(j<<16>>16!=-1){if(!(Q&j<<16>>16>-1)){s=0;p=o;break d}j=b[C>>1]|0;if(((j&65535)+-1|0)!=(Ea|0)){s=0;p=o;break d}if((d[ra>>0]|d[ra+1>>0]<<8)&8)break;if(j<<16>>16==1?s<<16>>16==2&(a[z>>0]|0)!=0:0)break;p=n|65537;c[wa>>2]=p;s=0;break d}while(0);p=n|4097;c[wa>>2]=p;s=0;break}if(u&256|0){p=c[wa>>2]|8;c[wa>>2]=p;s=0;break}j=c[wa>>2]|0;if(!(u&36)){c[wa>>2]=j|18;j=(gm(ja,c[ia>>2]|0,h,Ea,t)|0)&65535;b[ma>>1]=j;j=c[wa>>2]|0;if(!(j&32)){l=t;k=0;s=0;p=j;break}l=t;k=c[(c[D>>2]|0)+((e[Ba>>1]|0)+-2<<2)>>2]|0;s=0;p=j;break}c[wa>>2]=j|34;s=(gm(ja,c[ia>>2]|0,h,Ea,t)|0)&65535;b[ka>>1]=s;if(!(b[ea>>1]&256)){l=0;k=t;s=0;p=c[wa>>2]|0;break}l=t+48|0;j=b[Ba>>1]|0;if((j&65535)<(e[B>>1]|0))k=c[D>>2]|0;else{o=(j&65535)+8&131064;n=o<<2;e:do if(c[G>>2]|0)if(!(a[sa>>0]|0))ca=117;else{j=0;break a}else{do if(0<0|(0==0?(e[H>>1]|0)>>>0>>0:0))j=N;else{k=c[O>>2]|0;if(k|0){c[O>>2]=c[k>>2];c[U>>2]=(c[U>>2]|0)+1;break e}k=c[T>>2]|0;if(!k){j=Z;break}c[T>>2]=c[k>>2];c[U>>2]=(c[U>>2]|0)+1;break e}while(0);c[j>>2]=(c[j>>2]|0)+1;ca=117}while(0);if((ca|0)==117){ca=0;k=_d(ua,n,0)|0}if(!k){j=0;break a}ew(k|0,c[D>>2]|0,e[B>>1]<<2|0)|0;j=c[D>>2]|0;f:do if((j|0)!=(P|0)){if(c[W>>2]|0){Xd(ua,j);break}n=j;do if((c[_>>2]|0)>>>0<=n>>>0){if((c[ba>>2]|0)>>>0<=n>>>0)break;c[j>>2]=c[O>>2];c[O>>2]=j;break f}while(0);if(!j)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{s=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c[D>>2]=k;b[B>>1]=o;j=b[Ba>>1]|0}b[Ba>>1]=j+1<<16>>16;c[k+((j&65535)<<2)>>2]=l;p=c[wa>>2]|16;c[wa>>2]=p;b[ma>>1]=1;k=t;s=0}else{q=c[t>>2]|0;if(!(c[q+4>>2]&2048)){j=c[q+20>>2]|0;if((j|0)!=0?(fa=c[j>>2]|0,(fa|0)!=0):0){n=((fa|0)<0)<<31>>31;do if(fa>>>0<8){if(fa>>>0<2){j=0;break}o=40;j=fa;do{o=(o&65535)+65526|0;j=cw(j|0,n|0,1)|0;n=L()|0}while(n>>>0<0|(n|0)==0&j>>>0<8);o=o&65535;ca=78}else{if(fa>>>0>255){o=40;j=fa;do{o=(o&65535)+40|0;ca=j;j=bw(j|0,n|0,4)|0;s=n;n=L()|0}while(s>>>0>0|(s|0)==0&ca>>>0>4095);o=o&65535}else{o=40;j=fa}if(!(n>>>0>0|(n|0)==0&j>>>0>15)){ca=78;break}do{o=(o&65535)+10&65535;ca=j;j=bw(j|0,n|0,1)|0;s=n;n=L()|0}while(s>>>0>0|(s|0)==0&ca>>>0>31);ca=78}while(0);if((ca|0)==78){ca=0;j=(o&65535)+65526+(e[3648+((j&7)<<1)>>1]|0)|0}r=j<<16>>16}else r=0}else{r=(p&65535)+-1|0;if((p&65535)>1){p=c[D>>2]|0;o=0;j=46;do{n=c[p+(o<<2)>>2]|0;if(n)j=(c[n>>2]|0)==(q|0)?0:j;o=o+1|0}while((o|0)!=(r|0));r=j}else r=46}if((d[ra>>0]|d[ra+1>>0]<<8)&128){q=b[(c[ta>>2]|0)+(Ea<<1)>>1]|0;n=r&65535;if(n<<16>>16<11)j=0;else{j=n<<16>>16;p=((j|0)<0)<<31>>31;if((n&65535)>255){o=40;n=p;do{o=(o&65535)+40|0;s=j;j=bw(j|0,n|0,4)|0;p=n;n=L()|0}while(p>>>0>0|(p|0)==0&s>>>0>4095);o=o&65535}else{o=40;n=p}if(n>>>0>0|(n|0)==0&j>>>0>15){do{o=(o&65535)+10&65535;s=j;j=bw(j|0,n|0,1)|0;p=n;n=L()|0}while(p>>>0>0|(p|0)==0&s>>>0>31);n=o}else n=o;j=(n&65535)+65493+(e[3648+((j&7)<<1)>>1]|0)|0}if(((q<<16>>16)+10+(j<<16>>16)|0)<(r+K|0)){j=0;break b}}p=c[wa>>2]|4;c[wa>>2]=p;s=r}while(0);do if(!(p&2)){n=(b[ya>>1]|0)+1<<16>>16;b[ya>>1]=n;n=n&65535;t=b[t+8>>1]|0;j=t&65535;if(t<<16>>16<1?(b[(c[v>>2]|0)+(Ea<<1)>>1]|0)>-1:0){j=j-s+(e[Ca>>1]|0)&65535;ca=152;break}j=c[ta>>2]|0;j=(e[j+(n<<1)>>1]|0)-(e[j+(n+-1<<1)>>1]|0)+(e[Ca>>1]|0)|0;n=j&65535;b[Ca>>1]=n;if(u&256){j=j+10&65535;ca=152}}else{j=b[Ca>>1]|0;o=j<<16>>16;do if(k){n=b[k+8>>1]|0;if(n<<16>>16<1){j=(n&65535)+(j&65535)&65535;break}else{j=(j&65535)+65516&65535;break}}while(0);do if(l){n=b[l+8>>1]|0;if(n<<16>>16<1){j=(n&65535)+(j&65535)&65535;break}else{j=(j&65535)+65516&65535;break}}while(0);n=(k|0)!=0;do if(n){if(!((l|0)!=0&(b[k+8>>1]|0)>0))break;if((b[l+8>>1]|0)<=0)break;j=(j&65535)+65516&65535}while(0);ca=(((l|0)!=0)<<31>>31)+(n<<31>>31)+o|0;j=(j<<16>>16>10?j:10)&65535;j=((ca|0)>(j|0)?j:ca)&65535;ca=152}while(0);if((ca|0)==152){ca=0;b[Ca>>1]=j;n=j}r=n&65535;o=r+1+(((b[I>>1]|0)*15|0)/(b[(c[J>>2]|0)+46>>1]|0)|0)|0;j=o&65535;o=o<<16>>16;do if(M<<16>>16>16){if((R|0)>=(o|0))if((X|0)<(o|0)){j=o+1&65535;break}else{j=o+(d[18112+(o-K)>>0]|0)&65535;break}}else if((o+49|0)>=(K|0))if((o+31|0)<(K|0))j=aa;else j=(d[18112+(K-o)>>0]|0)+K&65535;else j=M;while(0);b[S>>1]=j;if(!(p&320)){q=r+16|0;o=q&65535;p=j<<16>>16;q=q<<16>>16;do if(j<<16>>16>16){if((p+49|0)<(q|0)){j=o;break}if((p+31|0)<(q|0)){j=q+1&65535;break}else{j=q+(d[18112+(q-p)>>0]|0)&65535;break}}else{if((q+49|0)<(p|0))break;if((q+31|0)<(p|0)){j=p+1&65535;break}else{j=(d[18112+(p-q)>>0]|0)+p&65535;break}}while(0);b[S>>1]=j}o=s+Y|0;b[S>>1]=o+(j&65535);b[Ca>>1]=o+r;cm(c[ha>>2]|0,va,da);j=_l(f,va)|0;u=c[wa>>2]|0;b[Ca>>1]=(u&2|0)==0?n:Da;if((u&16|0)==0?(e[ya>>1]|0)<(e[$>>1]|0):0)dm(f,g,h,o&65535)|0;b[Ca>>1]=Da}else j=0}while(0);t=Tl(ga)|0}while((j|0)==0&(t|0)!=0)}while(0);ja=va;c[ja>>2]=pa;c[ja+4>>2]=qa;b[ya>>1]=za;b[ka>>1]=la;b[ma>>1]=na;b[Aa>>1]=oa;c[wa>>2]=xa;b[Ca>>1]=Da;b[Ba>>1]=m;if(za<<16>>16!=oa<<16>>16){Ea=j;Ra=Fa;return Ea|0}p=Ea+1|0;if(p>>>0>=(e[h+50>>1]|0)>>>0){Ea=j;Ra=Fa;return Ea|0}if((d[ra>>0]|d[ra+1>>0]<<8)&64){Ea=j;Ra=Fa;return Ea|0}if(b[ua+76>>1]&16384){Ea=j;Ra=Fa;return Ea|0}if((b[(c[ta>>2]|0)+(p<<1)>>1]|0)<=41){Ea=j;Ra=Fa;return Ea|0}n=va+44|0;if((m&65535)<(e[n>>1]|0)){n=za;o=za;j=c[va+48>>2]|0;k=xa;l=Da}else{m=(m&65535)+8&131064;l=m<<2;g:do if(c[ua+272>>2]|0)if(!(a[sa>>0]|0))ca=194;else{Ea=7;Ra=Fa;return Ea|0}else{do if(!(0<0|(0==0?(e[ua+276>>1]|0)>>>0>>0:0))){k=ua+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];sa=ua+284|0;c[sa>>2]=(c[sa>>2]|0)+1;break g}k=ua+296|0;j=c[k>>2]|0;if(!j){j=ua+292|0;break}else{c[k>>2]=c[j>>2];sa=ua+284|0;c[sa>>2]=(c[sa>>2]|0)+1;break g}}else j=ua+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;ca=194}while(0);if((ca|0)==194)j=_d(ua,l,0)|0;if(!j){Ea=7;Ra=Fa;return Ea|0}k=va+48|0;ew(j|0,c[k>>2]|0,e[n>>1]<<2|0)|0;l=c[k>>2]|0;do if((l|0)!=(va+56|0)){if(c[ua+480>>2]|0){Xd(ua,l);break}va=l;if((c[ua+304>>2]|0)>>>0<=va>>>0?(c[ua+308>>2]|0)>>>0>va>>>0:0){va=ua+300|0;c[l>>2]=c[va>>2];c[va>>2]=l;break}if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{va=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-va;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[k>>2]=j;b[n>>1]=m;n=b[ya>>1]|0;o=b[Aa>>1]|0;m=b[Ba>>1]|0;k=c[wa>>2]|0;l=b[Ca>>1]|0}b[ya>>1]=n+1<<16>>16;b[Aa>>1]=o+1<<16>>16;b[Ba>>1]=m+1<<16>>16;c[j+((m&65535)<<2)>>2]=0;c[wa>>2]=k|32768;Ba=c[ta>>2]|0;Ea=(e[Ba+(Ea<<1)>>1]|0)-(e[Ba+(p<<1)>>1]|0)|0;b[Ca>>1]=(l&65535)-Ea;dm(f,g,h,(((Ea<<16)+327680|0)>>>16)+(i&65535)&65535)|0;b[Ca>>1]=Da;b[ya>>1]=za;b[Aa>>1]=za;c[wa>>2]=xa;Ea=0;Ra=Fa;return Ea|0}function em(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;if(!(bk(b,d,e,f)|0)){f=1;return f|0}g=a[e>>0]|0;do if(g<<24>>24==43){if(em(b,d,c[e+12>>2]|0,f)|0){f=1;return f|0}if(!(em(b,d,c[e+16>>2]|0,f)|0)){g=a[e>>0]|0;break}else{f=1;return f|0}}while(0);a:do if(g<<24>>24==51){switch(a[d>>0]|0){case 45:case 50:break a;default:{}}g=c[d+12>>2]|0;b:do if(!g)g=0;else while(1){d=c[g+4>>2]|0;if(!(d&4096))break b;if(!(d&262144))g=g+12|0;else g=(c[g+20>>2]|0)+4|0;g=c[g>>2]|0;if(!g){g=0;break}}while(0);if(!(bk(b,g,c[e+12>>2]|0,f)|0)){f=1;return f|0}}while(0);f=0;return f|0}function fm(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;if((a[e>>0]|0)!=-94){d=0;return d|0}f=c[d+24>>2]|0;if((c[e+28>>2]|0)!=(c[f+4>>2]|0)){d=0;return d|0}f=c[f>>2]|0;h=b[e+32>>1]|0;e=b[f+52>>1]|0;a:do if(e<<16>>16){g=c[f+4>>2]|0;e=e&65535;f=0;while(1){if((b[g+(f<<1)>>1]|0)==h<<16>>16)break;f=f+1|0;if(f>>>0>=e>>>0)break a}if((f&65535)<<16>>16>=0){d=0;return d|0}}while(0);a[d+20>>0]=1;d=2;return d|0} -function gq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;$=Ra;Ra=Ra+16|0;H=$+4|0;Q=$;W=c[e+12>>2]|0;f=c[W+12>>2]|0;X=c[e>>2]|0;E=c[e+4>>2]|0;F=b+235|0;G=(a[F>>0]|0)==0?157:158;if(!E){_=0;Ra=$;return _|0}_=e+8|0;I=E+-1|0;J=e+44|0;K=e+40|0;M=(f&16|0)!=0;N=(E|0)>1;O=W+4|0;P=(f&32|0)==0;R=(f&34|0)!=0;S=(f&8|0)==0;T=(f&4|0)==0;U=(f&2|0)==0;V=W+8|0;C=(f&1|0)!=0;Y=e+20|0;Z=e+16|0;f=c[_>>2]|0;a:while(1){if((f|0)>0){j=0;do{f=c[X+(j<<2)>>2]|0;if(!(a[f+4>>0]|0)){f=fq(b,f)|0;if(f|0){D=186;break a}}else{i=f+40|0;if(!(a[f+5>>0]|0)){g=c[i>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{B=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);f=f+52|0;g=c[f>>2]|0;do if(g|0){h=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);break}B=g;if((c[h+304>>2]|0)>>>0<=B>>>0?(c[h+308>>2]|0)>>>0>B>>>0:0){B=h+300|0;c[g>>2]=c[B>>2];c[B>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{B=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[f>>2]=0}c[i>>2]=0}j=j+1|0;f=c[_>>2]|0}while((j|0)<(f|0))}f=f+(((f|0)==(E|0))<<31>>31)|0;if((f|0)>0)do{m=f;f=f+-1|0;b:do if((m|0)<(E|0)){k=f;j=c[X+(f<<2)>>2]|0;do{l=k;k=k+1|0;n=X+(k<<2)|0;i=c[n>>2]|0;h=(c[j+40>>2]|0)==0;o=i;g=c[i+40>>2]|0;if(!h)if(!g){g=0;D=32}else{A=c[j+60>>2]|0;g=c[i+60>>2]|0;B=A-g|0;g=Lu(c[j+64>>2]|0,c[i+64>>2]|0,(B|0)<0?A:g)|0;g=(g|0)==0?B:g}else D=32;if((D|0)==32){D=0;g=(h&1)-((g|0)==0&1)|0}if(!g)g=(c[i>>2]|0)-(c[j>>2]|0)|0;if((g|0)<0)break b;B=X+(l<<2)|0;j=c[B>>2]|0;c[n>>2]=j;c[B>>2]=o}while((k|0)<(I|0))}while(0)}while((m|0)>1);c[_>>2]=0;f=c[X>>2]|0;if(!(c[f+40>>2]|0)){f=0;D=186;break}i=c[f+60>>2]|0;c[J>>2]=i;h=c[f+64>>2]|0;c[K>>2]=h;f=c[W>>2]|0;if(!(M|(f|0)==0)){g=c[O>>2]|0;if((i|0)<(g|0)|S&(i|0)>(g|0)){f=0;D=186;break}if(Lu(h,f,g)|0){f=0;D=186;break}}c:do if(N){f=1;do{g=c[X+(f<<2)>>2]|0;if(!(c[g+40>>2]|0)){D=48;break c}if((c[g+60>>2]|0)!=(i|0)){D=48;break c}if(Lu(h,c[g+64>>2]|0,i)|0){D=48;break c}f=f+1|0}while((f|0)<(E|0))}else{f=1;D=48}while(0);if((D|0)==48){D=0;if(!(R|(f|0)!=1)){f=c[X>>2]|0;g=(c[f+56>>2]|0)==0;if(!(a[F>>0]|0)){D=52;break}if(g){D=51;break}else f=1}}q=0;do{r=c[X+(q<<2)>>2]|0;if((a[F>>0]|0)!=0?(c[r+56>>2]|0)!=0:0){a[H>>0]=0;A=r+88|0;B=A;c[B>>2]=0;c[B+4>>2]=0;B=r+84|0;c[B>>2]=0;kq(0,c[r+72>>2]|0,c[r+76>>2]|0,r+80|0,A,B,H)}else D=64;d:do if((D|0)==64){D=0;n=r+72|0;k=r+40|0;o=r+52|0;g=c[o>>2]|0;e:do if(g|0){l=(c[n>>2]|0)+10|0;p=r+48|0;m=r+44|0;i=c[p>>2]|0;j=g;while(1){g=c[k>>2]|0;if((l-g|0)<=(i|0))break e;h=(c[m>>2]|0)-i|0;h=(h|0)<4096?h:4096;if(jd(j,g+i|0,h,i,81)|0)break d;g=(c[p>>2]|0)+h|0;c[p>>2]=g;g=(c[k>>2]|0)+g|0;h=g+20|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));i=c[p>>2]|0;j=c[o>>2]|0;if((i|0)==(c[m>>2]|0))break;if(!j)break e}do if(j|0){g=c[j+20>>2]|0;gc(c[j+16>>2]|0)|0;if(g|0){if(c[g+480>>2]|0){Xd(g,j);break}B=j;if((c[g+304>>2]|0)>>>0<=B>>>0?(c[g+308>>2]|0)>>>0>B>>>0:0){B=g+300|0;c[j>>2]=c[B>>2];c[B>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{B=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c[o>>2]=0;c[p>>2]=0}while(0);l=c[n>>2]|0;k=r+88|0;g=a[l>>0]|0;h=g&255;do if(!(h&128)){B=k;c[B>>2]=g&255;c[B+4>>2]=0;g=1}else{B=d[l+1>>0]|0;g=B<<7|h&127;if(!(B&128)){B=k;c[B>>2]=g;c[B+4>>2]=0;g=2;break}B=d[l+2>>0]|0;g=B<<14|g&16383;if(!(B&128)){B=k;c[B>>2]=g;c[B+4>>2]=0;g=3;break}B=d[l+3>>0]|0;g=B<<21|g&2097151;if(!(B&128)){B=k;c[B>>2]=g;c[B+4>>2]=0;g=4;break}i=28;j=l+4|0;g=g&268435455;h=0;do{B=j;j=j+1|0;B=d[B>>0]|0;A=cw(B&127|0,0,i|0)|0;g=Sv(A|0,L()|0,g|0,h|0)|0;h=L()|0;i=i+7|0}while(i>>>0<64&((B&128|0)!=0|0!=0));B=k;c[B>>2]=g;c[B+4>>2]=h;g=j-l|0}while(0);c[r+80>>2]=l+g}while(0);q=q+1|0}while(q>>>0>>0);B=f+-1|0;A=f>>>0>1;if(A){i=B;do{j=i;i=i+-1|0;f:do if((j|0)<(f|0)){g=i;l=c[X+(i<<2)>>2]|0;do{h=g;g=g+1|0;k=X+(g<<2)|0;if((Xa[G&255](l,c[k>>2]|0)|0)<0)break f;z=X+(h<<2)|0;y=c[k>>2]|0;l=c[z>>2]|0;c[k>>2]=l;c[z>>2]=y}while((g|0)<(B|0))}while(0)}while((j|0)>1)}if(c[(c[X>>2]|0)+80>>2]|0){g=0;y=0;z=0;while(1){c[H>>2]=0;c[Q>>2]=0;x=c[X>>2]|0;n=x+88|0;o=c[n>>2]|0;n=c[n+4>>2]|0;jq(b,x,H,Q)|0;g:do if(A){h=1;do{i=c[X+(h<<2)>>2]|0;if(!(c[i+80>>2]|0))break g;x=i+88|0;if(!((c[x>>2]|0)==(o|0)?(c[x+4>>2]|0)==(n|0):0))break g;jq(b,i,0,0)|0;h=h+1|0}while(h>>>0>>0)}else h=1;while(0);if(T)i=c[Q>>2]|0;else{q=c[V>>2]|0;j=c[H>>2]|0;p=c[Q>>2]|0;r=j+p|0;k=j;m=0;while(1){h:do if(k>>>0>>0){l=0;i=k;while(1){k=a[i>>0]|0;if(!(k&254|l)){l=i;break h}i=i+1|0;if(i>>>0>>0)l=k&128;else{l=i;break}}}else l=k;while(0);i=l-j|0;if((m|0)==(q|0))break;p=p-i|0;if(!p){j=l;i=0;break}k=l+1|0;j=a[k>>0]|0;i=j&255;do if(!(i&128))j=1;else{x=d[l+2>>0]|0;i=x<<7|j&127;if(!(x&128)){j=2;break}x=d[l+3>>0]|0;i=x<<14|i&16383;if(!(x&128)){j=3;break}x=d[l+4>>0]|0;i=x<<21|i&2097151;if(!(x&128)){j=4;break}i=(a[l+5>>0]&7)<<28|i&268435455;j=5}while(0);k=k+j|0;j=l;m=i}c[H>>2]=j;c[Q>>2]=i}do if(U|(i|0)>0){w=(g|0)>0;u=w&(a[F>>0]|0)!=0;t=Tv(y|0,z|0,o|0,n|0)|0;v=L()|0;x=Tv(o|0,n|0,y|0,z|0)|0;k=L()|0;x=u?t:x;k=u?v:k;if((k|0)<0|(k|0)==0&x>>>0<1?!((x|0)==(o|0)&(k|0)==(n|0)&(w^1)):0){f=267;D=184;break a}j=0;l=x;m=k;do{j=j+1|0;l=bw(l|0,m|0,7)|0;m=L()|0}while(!((l|0)==0&(m|0)==0));j=(C?i+1|0:0)+g+j|0;if((j|0)>(c[Y>>2]|0)){j=j<<1;c[Y>>2]=j;l=c[Z>>2]|0;if(mb()|0){f=7;D=184;break a}j=sb(l,(j|0)>0?j:0,0)|0;if(!j){f=7;D=184;break a}c[Z>>2]=j}else j=c[Z>>2]|0;w=j+g|0;if(P){m=w;l=x;while(1){i=l&255;j=m+1|0;a[m>>0]=i|-128;l=bw(l|0,k|0,7)|0;k=L()|0;if((l|0)==0&(k|0)==0)break;else m=j}a[m>>0]=i&127;g=j-w+g|0;if(!C)break;z=c[Q>>2]|0;ew((c[Z>>2]|0)+g|0,c[H>>2]|0,z|0)|0;g=z+g|0;a[(c[Z>>2]|0)+g>>0]=0;g=g+1|0;break}l=c[H>>2]|0;v=l+i|0;m=a[l>>0]|0;switch(m<<24>>24){case 1:{i=0;j=0;break}case 2:{i=w;m=x;q=k;while(1){j=m&255;p=i+1|0;a[i>>0]=j|-128;m=bw(m|0,q|0,7)|0;q=L()|0;if((m|0)==0&(q|0)==0)break;else i=p}a[i>>0]=j&127;a[p>>0]=2;i=1-w+p|0;j=1;m=a[l>>0]|0;D=140;break}default:{i=0;j=0;D=140}}if((D|0)==140){D=0;m=m<<24>>24;if(m&254)do{l=l+1|0;u=m;m=a[l>>0]|0}while((m&254|u&128|0)!=0)}if(l>>>0>>0)do{r=l+1|0;p=a[r>>0]|0;m=p&255;do if(!(m&128)){l=1;u=p&255;q=0}else{u=d[l+2>>0]|0;m=u<<7|m&127;if(!(u&128)){l=2;u=m;q=0;break}u=d[l+3>>0]|0;m=u<<14|m&16383;if(!(u&128)){l=3;u=m;q=0;break}u=d[l+4>>0]|0;m=u<<21|m&2097151;if(!(u&128)){l=4;u=m;q=0;break}p=28;l=l+5|0;m=m&268435455;q=0;do{u=l;l=l+1|0;u=d[u>>0]|0;t=cw(u&127|0,0,p|0)|0;m=Sv(t|0,L()|0,m|0,q|0)|0;q=L()|0;p=p+7|0}while(p>>>0<64&((u&128|0)!=0|0!=0));l=l-r|0;u=m}while(0);l=r+l|0;m=a[l>>0]|0;if(m<<24>>24==2){if(!j){m=w+i|0;j=m;r=x;t=k;while(1){p=r&255;s=j+1|0;a[j>>0]=p|-128;r=bw(r|0,t|0,7)|0;t=L()|0;if((r|0)==0&(t|0)==0)break;else j=s}a[j>>0]=p&127;i=i-m+s|0;j=1}t=i+1|0;a[w+i>>0]=1;s=w+t|0;r=s;p=u;while(1){i=p&255;m=r+1|0;a[r>>0]=i|-128;p=bw(p|0,q|0,7)|0;q=L()|0;if((p|0)==0&(q|0)==0)break;else r=m}a[r>>0]=i&127;i=m-s+t|0;a[w+i>>0]=2;i=i+1|0;m=a[l>>0]|0}m=m<<24>>24;if(m&254)do{l=l+1|0;u=m;m=a[l>>0]|0}while((m&254|u&128|0)!=0)}while(l>>>0>>0);if(j){a[w+i>>0]=0;i=i+1|0}x=(i|0)==0;g=i+g|0;o=x?y:o;n=x?z:n}else{o=y;n=z}while(0);h=h+(((h|0)==(f|0))<<31>>31)|0;if((h|0)>0)do{k=h;h=h+-1|0;i:do if((k|0)<(f|0)){i=h;m=c[X+(h<<2)>>2]|0;do{j=i;i=i+1|0;l=X+(i<<2)|0;if((Xa[G&255](m,c[l>>2]|0)|0)<0)break i;z=X+(j<<2)|0;y=c[l>>2]|0;m=c[z>>2]|0;c[l>>2]=m;c[z>>2]=y}while((i|0)<(B|0))}while(0)}while((k|0)>1);if(!(c[(c[X>>2]|0)+80>>2]|0))break;else{y=o;z=n}}if((g|0)>0){D=183;break}}c[_>>2]=f}do if((D|0)==51){c[e+52>>2]=c[f+76>>2];f=f+72|0;g=100}else if((D|0)==52){i=c[f+76>>2]|0;c[e+52>>2]=i;f=f+72|0;if(g)g=100;else{h=c[f>>2]|0;if((c[Y>>2]|0)<(i|0)){g=i<<1;c[Y>>2]=g;f=c[Z>>2]|0;if(mb()|0){f=Z;g=7;break}f=sb(f,(g|0)>0?g:0,0)|0;if(!f){f=Z;g=7;break}c[Z>>2]=f}else f=c[Z>>2]|0;ew(f|0,h|0,i|0)|0;f=Z;g=100}}else if((D|0)==183){c[e+48>>2]=c[Z>>2];c[e+52>>2]=g;c[_>>2]=f;_=100;Ra=$;return _|0}else if((D|0)==184){_=f;Ra=$;return _|0}else if((D|0)==186){Ra=$;return f|0}while(0);c[e+48>>2]=c[f>>2];c[_>>2]=1;_=g;Ra=$;return _|0}function hq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=((c[a+80>>2]|0)==0&1)-((c[b+80>>2]|0)==0&1)|0;if(d|0){b=d;return b|0}e=a+88|0;d=c[e>>2]|0;e=c[e+4>>2]|0;g=b+88|0;f=c[g>>2]|0;g=c[g+4>>2]|0;if((d|0)==(f|0)&(e|0)==(g|0)){b=(c[b>>2]|0)-(c[a>>2]|0)|0;return b|0}else{b=(e|0)<(g|0)|(e|0)==(g|0)&d>>>0>>0?1:-1;return b|0}return 0}function iq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=((c[a+80>>2]|0)==0&1)-((c[b+80>>2]|0)==0&1)|0;if(d|0){b=d;return b|0}e=a+88|0;d=c[e>>2]|0;e=c[e+4>>2]|0;g=b+88|0;f=c[g>>2]|0;g=c[g+4>>2]|0;if((d|0)==(f|0)&(e|0)==(g|0)){b=(c[b>>2]|0)-(c[a>>2]|0)|0;return b|0}else{b=(e|0)>(g|0)|(e|0)==(g|0)&d>>>0>f>>>0?1:-1;return b|0}return 0}function jq(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=Ra;Ra=Ra+16|0;n=v;i=v+4|0;u=e+80|0;h=c[u>>2]|0;c[n>>2]=h;t=b+235|0;b=h;if(a[t>>0]|0?c[e+56>>2]|0:0){a[i>>0]=0;if(!f)b=e+84|0;else{c[f>>2]=h;b=e+84|0;c[g>>2]=(c[b>>2]|0)+-1}kq(0,c[e+72>>2]|0,c[e+76>>2]|0,n,e+88|0,b,i);if(!(a[i>>0]|0))c[u>>2]=c[n>>2];else c[u>>2]=0;u=0;Ra=v;return u|0}m=(c[e+72>>2]|0)+(c[e+76>>2]|0)|0;q=e+52|0;o=e+40|0;r=e+48|0;p=e+44|0;h=0;while(1){i=a[b>>0]|0;if((i|h)<<24>>24)do{b=b+1|0;h=i&-128;i=a[b>>0]|0}while((i|h)<<24>>24!=0);i=c[q>>2]|0;if(!i)break;j=c[r>>2]|0;k=(c[o>>2]|0)+j|0;if(b>>>0>>0)break;l=(c[p>>2]|0)-j|0;l=(l|0)<4096?l:4096;i=jd(i,k,l,j,81)|0;if(i|0){s=67;break}i=(c[r>>2]|0)+l|0;c[r>>2]=i;i=(c[o>>2]|0)+i|0;j=i+20|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));if((c[r>>2]|0)==(c[p>>2]|0)){i=c[q>>2]|0;do if(i|0){j=c[i+20>>2]|0;gc(c[i+16>>2]|0)|0;if(j|0){if(c[j+480>>2]|0){Xd(j,i);break}l=i;if((c[j+304>>2]|0)>>>0<=l>>>0?(c[j+308>>2]|0)>>>0>l>>>0:0){l=j+300|0;c[i>>2]=c[l>>2];c[l>>2]=i;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{l=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);c[q>>2]=0;c[r>>2]=0}}if((s|0)==67){c[n>>2]=b;u=i;Ra=v;return u|0}b=b+1|0;c[n>>2]=b;if(f|0){c[f>>2]=c[u>>2];c[g>>2]=b+-1-(c[u>>2]|0)}do if(b>>>0>>0){l=b;while(1){if(a[l>>0]|0)break;b=l+1|0;if(b>>>0>>0)l=b;else{s=36;break}}if((s|0)==36){c[n>>2]=b;break}c[n>>2]=l;b=c[q>>2]|0;a:do if(b|0){k=l+10|0;i=c[r>>2]|0;j=b;while(1){b=c[o>>2]|0;if((k-b|0)<=(i|0))break a;h=(c[p>>2]|0)-i|0;h=(h|0)<4096?h:4096;if(jd(j,b+i|0,h,i,81)|0){b=0;s=68;break}i=(c[r>>2]|0)+h|0;c[r>>2]=i;i=(c[o>>2]|0)+i|0;j=i+20|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));i=c[r>>2]|0;j=c[q>>2]|0;if((i|0)==(c[p>>2]|0))break;if(!j)break a}if((s|0)==68){Ra=v;return b|0}do if(j|0){b=c[j+20>>2]|0;gc(c[j+16>>2]|0)|0;if(b|0){if(c[b+480>>2]|0){Xd(b,j);break}s=j;if((c[b+304>>2]|0)>>>0<=s>>>0?(c[b+308>>2]|0)>>>0>s>>>0:0){s=b+300|0;c[j>>2]=c[s>>2];c[s>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{s=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c[q>>2]=0;c[r>>2]=0}while(0);h=a[l>>0]|0;b=h&255;do if(!(b&128)){i=1;b=h&255;h=0}else{s=d[l+1>>0]|0;b=s<<7|b&127;if(!(s&128)){i=2;h=0;break}s=d[l+2>>0]|0;b=s<<14|b&16383;if(!(s&128)){i=3;h=0;break}s=d[l+3>>0]|0;b=s<<21|b&2097151;if(!(s&128)){i=4;h=0;break}i=28;j=l+4|0;b=b&268435455;h=0;do{s=j;j=j+1|0;s=d[s>>0]|0;r=cw(s&127|0,0,i|0)|0;b=Sv(r|0,L()|0,b|0,h|0)|0;h=L()|0;i=i+7|0}while(i>>>0<64&((s&128|0)!=0|0!=0));i=j-l|0}while(0);c[u>>2]=l+i;r=(a[t>>0]|0)==0;u=e+88|0;t=u;e=c[t>>2]|0;t=c[t+4>>2]|0;q=Tv(0,0,b|0,h|0)|0;s=L()|0;t=Sv((r?b:q)|0,(r?h:s)|0,e|0,t|0)|0;e=L()|0;c[u>>2]=t;c[u+4>>2]=e;u=0;Ra=v;return u|0}while(0);c[u>>2]=0;u=0;Ra=v;return u|0}function kq(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=c[g>>2]|0;if(!k){p=e+f|0;if((f|0)>0){o=(b|0)==0?1:-1;j=1;f=0;b=0;while(1){l=a[e>>0]|0;k=l&255;do if(!(k&128)){n=1;m=l&255;l=0}else{n=d[e+1>>0]|0;k=n<<7|k&127;if(!(n&128)){n=2;m=k;l=0;break}n=d[e+2>>0]|0;k=n<<14|k&16383;if(!(n&128)){n=3;m=k;l=0;break}n=d[e+3>>0]|0;k=n<<21|k&2097151;if(!(n&128)){n=4;m=k;l=0;break}m=28;n=e+4|0;k=k&268435455;l=0;do{q=n;n=n+1|0;q=d[q>>0]|0;r=cw(q&127|0,0,m|0)|0;k=Sv(r|0,L()|0,k|0,l|0)|0;l=L()|0;m=m+7|0}while(m>>>0<64&((q&128|0)!=0|0!=0));n=n-e|0;m=k}while(0);k=e+n|0;m=Yv(m|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;n=L()|0;e=k;l=0;while(1){j=a[e>>0]|0;e=e+1|0;if(!(l<<24>>24|j))break;else l=j&128}f=Sv(m|0,n|0,f|0,b|0)|0;b=L()|0;a:do if(e>>>0

        >>0)do{if(a[e>>0]|0)break a;e=e+1|0}while(e>>>0

        >>0);while(0);if(e>>>0

        >>0)j=o;else break}}else{k=0;f=0;b=0}c[i>>2]=p-k;c[g>>2]=k;r=h;c[r>>2]=f;c[r+4>>2]=b;return}n=(b|0)==0;b=k+-2|0;b:do if(b>>>0>>0)o=b;else while(1){if((a[b>>0]|0)>=0){o=b;break b}b=b+-1|0;if(b>>>0>>0){o=b;break}}while(0);m=o+1|0;p=m;b=a[m>>0]|0;f=b&255;do if(!(f&128)){b=b&255;f=0}else{r=d[o+2>>0]|0;b=r<<7|f&127;if(!(r&128)){f=0;break}r=d[o+3>>0]|0;b=r<<14|b&16383;if(!(r&128)){f=0;break}r=d[o+4>>0]|0;b=r<<21|b&2097151;if(!(r&128)){f=0;break}k=28;l=o+5|0;b=b&268435455;f=0;while(1){r=d[l>>0]|0;q=cw(r&127|0,0,k|0)|0;b=Sv(q|0,L()|0,b|0,f|0)|0;f=L()|0;k=k+7|0;if(!(k>>>0<64&((r&128|0)!=0|0!=0)))break;else l=l+1|0}}while(0);q=Yv(b|0,f|0,(n?1:-1)|0,(n?0:-1)|0)|0;n=L()|0;r=h;n=Tv(c[r>>2]|0,c[r+4>>2]|0,q|0,n|0)|0;q=L()|0;r=h;c[r>>2]=n;c[r+4>>2]=q;if((m|0)==(e|0)){a[j>>0]=1;b=p}else{b=o+-1|0;c:do if(b>>>0>e>>>0){b=-1;while(1){k=b+-1|0;f=a[o+b>>0]|0;b=o+k|0;if(f<<24>>24)break c;if(b>>>0>e>>>0)b=k;else{f=0;break}}}else{f=0;k=-1}while(0);d:do if(b>>>0>e>>>0){b=f;while(1){f=a[o+k>>0]|0;if(!(f&-128&255|b<<24>>24))break;k=k+-1|0;b=o+k|0;if(b>>>0>e>>>0)b=f;else{e=47;break d}}b=o+k+2|0;e=49}else e=47;while(0);if((e|0)==47)if((k|0)<-1&f<<24>>24==0){b=o+(k+2)|0;e=49}do{r=b;b=b+1|0}while((a[r>>0]|0)<0);c[i>>2]=p-b}c[g>>2]=b;return}function lq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if(mb()|0){e=7;return e|0}if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](132)|0;if(!f){e=7;return e|0}else i=f}else{h=Wa[c[29356>>2]&127](132)|0;if((c[14985]|0)>>>0<132)c[14985]=132;g=59064;f=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&f>>>0>0){i=c[14978]|0;g=Tv(f|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;f=L()|0;c[14768]=((f|0)<0|(f|0)==0&g>>>0<=i>>>0)&1}g=Wa[c[29340>>2]&127](h)|0;if(!g){e=7;return e|0}f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0){c[14987]=f;i=g}else i=g}gw(i|0,0,132)|0;a:do if((b|0)>1){h=d+4|0;f=c[h>>2]|0;b=Eu(f)|0;if((b|0)>0){d=i+4|0;f=a[f>>0]|0;if(f<<24>>24>=0){g=0;do{a[d+(f&255)>>0]=1;g=g+1|0;if((g|0)>=(b|0))break a;f=a[(c[h>>2]|0)+g>>0]|0}while(f<<24>>24>=0)}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);e=1;return e|0}else{e=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);e=1;return e|0}}}else{g=i+4|0;f=1;do{a[g+f>>0]=((f+-48|0)>>>0>9&((f&2147483615)+-65|0)>>>0>25)<<31>>31;f=f+1|0}while((f|0)!=128)}while(0);c[e>>2]=i;e=0;return e|0}function mq(a){a=a|0;var b=0;if(!a)return 0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function nq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(mb()|0){e=7;return e|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](28)|0;if(!a){e=7;return e|0}}else{g=Wa[c[29356>>2]&127](28)|0;if((c[14985]|0)>>>0<28)c[14985]=28;f=59064;a=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&a>>>0>0){h=c[14978]|0;f=Tv(a|0,f|0,g|0,((g|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&f>>>0<=h>>>0)&1}a=Wa[c[29340>>2]&127](g)|0;if(!a){h=7;return h|0}f=Wa[c[29352>>2]&127](a)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}c[a+4>>2]=b;if(b){if((d|0)<0)d=Eu(b)|0}else d=0;c[a+8>>2]=d;h=a+12|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[e>>2]=a;h=0;return h|0}function oq(a){a=a|0;var b=0,d=0;b=c[a+20>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function pq(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=c[b>>2]|0;o=c[b+4>>2]|0;p=b+12|0;i=c[p>>2]|0;k=c[b+8>>2]|0;if((i|0)>=(k|0)){p=101;return p|0}while(1){a:do if((i|0)<(k|0))while(1){j=a[o+i>>0]|0;if(j<<24>>24<=-1){n=i;break a}if(!(a[(j&255)+(l+4)>>0]|0)){n=i;break a}i=i+1|0;c[p>>2]=i;if((i|0)>=(k|0)){n=i;break}}else n=i;while(0);if((n|0)<(k|0)){i=n;do{j=a[o+i>>0]|0;if(j<<24>>24>-1?a[(j&255)+(l+4)>>0]|0:0)break;i=i+1|0;c[p>>2]=i}while((i|0)<(k|0));if((i|0)>(n|0))break}else i=n;if((i|0)>=(k|0)){i=101;m=23;break}}if((m|0)==23)return i|0;l=i-n|0;i=b+24|0;do if((l|0)>(c[i>>2]|0)){j=l+20|0;c[i>>2]=j;k=b+20|0;i=c[k>>2]|0;if(mb()|0){p=7;return p|0}i=sb(i,(j|0)>0?j:0,0)|0;if(!i){p=7;return p|0}else{c[k>>2]=i;break}}while(0);j=b+20|0;if((l|0)>0){i=0;do{k=a[o+(i+n)>>0]|0;m=k&255;a[(c[j>>2]|0)+i>>0]=(k+-65&255)<26?m+32|0:m;i=i+1|0}while((i|0)!=(l|0))}c[d>>2]=c[j>>2];c[e>>2]=l;c[f>>2]=n;c[g>>2]=c[p>>2];o=b+16|0;p=c[o>>2]|0;c[o>>2]=p+1;c[h>>2]=p;p=0;return p|0}function qq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(mb()|0){d=7;return d|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](4)|0;if(!a){d=7;return d|0}}else{e=Wa[c[29356>>2]&127](4)|0;if((c[14985]|0)>>>0<4)c[14985]=4;b=59064;a=c[b>>2]|0;b=c[b+4>>2]|0;if((b|0)>0|(b|0)==0&a>>>0>0){f=c[14978]|0;b=Tv(a|0,b|0,e|0,((e|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&b>>>0<=f>>>0)&1}a=Wa[c[29340>>2]&127](e)|0;if(!a){f=7;return f|0}b=Wa[c[29352>>2]&127](a)|0;b=(c[14978]|0)+b|0;c[14978]=b;if(b>>>0>(c[14982]|0)>>>0)c[14982]=b;b=(c[14981]|0)+1|0;c[14981]=b;if(b>>>0>(c[14987]|0)>>>0)c[14987]=b}c[a>>2]=0;c[d>>2]=a;f=0;return f|0}function rq(a){a=a|0;var b=0;if(!a)return 0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function sq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(mb()|0){e=7;return e|0}if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](28)|0;if(!a){e=7;return e|0}}else{g=Wa[c[29356>>2]&127](28)|0;if((c[14985]|0)>>>0<28)c[14985]=28;f=59064;a=c[f>>2]|0;f=c[f+4>>2]|0;if((f|0)>0|(f|0)==0&a>>>0>0){h=c[14978]|0;f=Tv(a|0,f|0,g|0,((g|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&f>>>0<=h>>>0)&1}a=Wa[c[29340>>2]&127](g)|0;if(!a){h=7;return h|0}f=Wa[c[29352>>2]&127](a)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f}c[a+4>>2]=b;if(b){if((d|0)<0)d=Eu(b)|0}else d=0;c[a+8>>2]=d;h=a+12|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[e>>2]=a;h=0;return h|0}function tq(a){a=a|0;var b=0,d=0;b=c[a+20>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function uq(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;ka=Ra;Ra=Ra+32|0;q=ka;p=c[b+4>>2]|0;ja=b+12|0;i=c[ja>>2]|0;o=c[b+8>>2]|0;if((i|0)>=(o|0)){ja=101;Ra=ka;return ja|0}while(1){a:do if((i|0)<(o|0))while(1){l=a[p+i>>0]|0;n=l<<24>>24;if(n&128|0){ia=i;break a}if(l<<24>>24>=48?a[26096+(n+-48)>>0]|0:0){ia=i;break a}i=i+1|0;c[ja>>2]=i;if((i|0)>=(o|0)){ia=i;break}}else ia=i;while(0);if((ia|0)<(o|0)){i=ia;do{l=a[p+i>>0]|0;n=l<<24>>24;if(!(n&128)){if(l<<24>>24<48)break;if(!(a[26096+(n+-48)>>0]|0))break}i=i+1|0;c[ja>>2]=i}while((i|0)<(o|0));if((i|0)>(ia|0))break}else i=ia;if((i|0)>=(o|0)){i=101;fa=564;break}}if((fa|0)==564){Ra=ka;return i|0}r=i-ia|0;i=b+24|0;do if((r|0)>(c[i>>2]|0)){l=r+20|0;c[i>>2]=l;n=b+20|0;i=c[n>>2]|0;if(mb()|0){ja=7;Ra=ka;return ja|0}i=sb(i,(l|0)>0?l:0,0)|0;if(!i){ja=7;Ra=ka;return ja|0}else{c[n>>2]=i;ha=n;ga=i;break}}else{ga=b+20|0;ha=ga;ga=c[ga>>2]|0}while(0);o=p+ia|0;do if((r+-3|0)>>>0<=17){l=22;n=0;while(1){i=a[o+n>>0]|0;if((i+-65&255)>=26){if((i+-97&255)>=26){fa=39;break}}else i=(i&255)+32&255;a[q+l>>0]=i;n=n+1|0;if((n|0)>=(r|0))break;else l=l+-1|0}if((fa|0)==39){i=0;k=0;do{j=a[o+k>>0]|0;if((j+-65&255)<26)j=(j&255)+32&255;else i=(j+-48&255)<10?1:i;a[ga+k>>0]=j;k=k+1|0}while((k|0)!=(r|0));j=(i|0)==0?10:3;if((j<<1|0)<(r|0)){i=j;j=r-j|0;do{a[ga+i>>0]=a[ga+j>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(r|0))}else i=r;a[ga+i>>0]=0;c[e>>2]=i;break}i=q+23|0;a[i>>0]=0;a[i+1>>0]=0;a[i+2>>0]=0;a[i+3>>0]=0;a[i+4>>0]=0;i=q+l|0;l=a[i>>0]|0;b:do if(l<<24>>24==115){l=i+1|0;n=a[l>>0]|0;switch(n<<24>>24){case 101:break;case 115:{a[l>>0]=115;a[i>>0]=115;l=115;break b}default:{i=l;l=n;fa=51;break b}}n=i+2|0;switch(a[n>>0]|0){case 115:break;case 105:{a[n>>0]=105;i=n;l=105;break b}default:{fa=82;break b}}i=i+3|0;if((a[i>>0]|0)==115){a[i>>0]=115;a[n>>0]=115;i=n;l=115}else fa=82}else fa=51;while(0);c:do if((fa|0)==51){d:do switch(l<<24>>24){case 100:{p=i+1|0;if((a[p>>0]|0)!=101){l=i;fa=82;break c}o=i+2|0;l=a[o>>0]|0;if(l<<24>>24!=101){n=o;while(1)if(!(yq(n)|0))break;else n=n+1|0;if(!(a[n>>0]|0)){l=i;fa=82;break c}else break d}l=i+3|0;n=a[l>>0]|0;if(!(n<<24>>24)){l=i;fa=82;break c}while(1){n=(n<<24>>24)+-97|0;if((n|0)==24)n=yq(l+1|0)|0;else n=1-(a[26176+n>>0]|0)|0;if(!n)break;l=l+1|0;n=a[l>>0]|0;if(!(n<<24>>24)){l=i;fa=82;break c}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=i;fa=82;break c}a[o>>0]=101;a[p>>0]=101;i=p;l=101;break c}case 103:{if((a[i+1>>0]|0)!=110){l=i;fa=82;break c}if((a[i+2>>0]|0)!=105){l=i;fa=82;break c}n=i+3|0;l=n;while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=i;fa=82;break c}o=n;l=a[n>>0]|0;break}default:{l=i;fa=82;break c}}while(0);switch(l<<24>>24){case 116:{i=o+1|0;if((a[i>>0]|0)==97){a[i>>0]=97;a[o>>0]=116;i=o+-1|0;a[i>>0]=101;l=101;break c}break}case 108:{i=o+1|0;if((a[i>>0]|0)==98){a[i>>0]=98;a[o>>0]=108;i=o+-1|0;a[i>>0]=101;l=101;break c}break}case 122:{i=o+1|0;if((a[i>>0]|0)==105){a[i>>0]=105;a[o>>0]=122;i=o+-1|0;a[i>>0]=101;l=101;break c}break}default:{}}if(yq(o)|0){i=o+1|0;n=a[i>>0]|0;if(l<<24>>24==n<<24>>24)switch(l<<24>>24){case 122:case 115:case 108:break;default:{fa=83;break c}}if(!(n<<24>>24==0|((l+-119&255)<3|(vq(o)|0)==0))){i=(n<<24>>24)+-97|0;if((i|0)==24)i=yq(o+2|0)|0;else i=1-(a[26176+i>>0]|0)|0;if((i|0)!=0?(yq(o+2|0)|0)!=0:0){i=o+-1|0;a[i>>0]=101;l=101}else{l=o;fa=82}}else{l=o;fa=82}}else{l=o;fa=82}}while(0);if((fa|0)==82){i=l;l=a[l>>0]|0;fa=83}if((fa|0)==83)if(l<<24>>24==121){l=i;do l=l+1|0;while((yq(l)|0)!=0);if(!(a[l>>0]|0))l=121;else{a[i>>0]=105;l=105}}q=i+1|0;n=a[q>>0]|0;e:do switch(n<<24>>24|0){case 97:{if(l<<24>>24==108)if((n<<24>>24==97?(J=i+2|0,(a[J>>0]|0)==110):0)?(I=i+3|0,(a[I>>0]|0)==111):0){n=i+4|0;if(((a[n>>0]|0)==105?(N=i+5|0,(a[N>>0]|0)==116):0)?(M=i+6|0,(a[M>>0]|0)==97):0){l=i+7|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=108;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=108;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=108;break e}a[M>>0]=97;a[N>>0]=116;a[n>>0]=101;i=n;l=101;break e}n=i+4|0;if(((a[n>>0]|0)==105?(H=i+5|0,(a[H>>0]|0)==116):0)?(v=i+6|0,x=a[v>>0]|0,x<<24>>24!=0):0){l=v;m=x;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=108;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[H>>0]=116;a[n>>0]=105;a[I>>0]=111;a[J>>0]=110;i=J;l=110}else l=108}else l=108}else l=108;break}case 99:{if(l<<24>>24==105)if(n<<24>>24==99?(Y=i+2|0,(a[Y>>0]|0)==110):0){n=i+3|0;switch(a[n>>0]|0){case 101:{l=i+4|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=101;a[Y>>0]=110;a[q>>0]=99;a[i>>0]=101;l=101;break e}case 97:{l=i+4|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=97;a[Y>>0]=110;a[q>>0]=99;a[i>>0]=101;l=101;break e}default:{l=105;break e}}}else l=105;break}case 101:{if(l<<24>>24==114)if(((n<<24>>24==101?(E=i+2|0,(a[E>>0]|0)==122):0)?(D=i+3|0,(a[D>>0]|0)==105):0)?(s=i+4|0,m=a[s>>0]|0,m<<24>>24!=0):0){l=s;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=114;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[D>>0]=105;a[E>>0]=122;a[q>>0]=101;i=q;l=101}else l=114}else l=114;break}case 103:{if(l<<24>>24==105)if(((n<<24>>24==103?(G=i+2|0,(a[G>>0]|0)==111):0)?(F=i+3|0,(a[F>>0]|0)==108):0)?(t=i+4|0,u=a[t>>0]|0,u<<24>>24!=0):0){l=t;m=u;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[F>>0]=108;a[G>>0]=111;a[q>>0]=103;i=q;l=103}else l=105}else l=105;break}case 108:{if(l<<24>>24==105)if(n<<24>>24==108){p=i+2|0;switch(a[p>>0]|0){case 98:{l=i+3|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[p>>0]=98;a[q>>0]=108;a[i>>0]=101;l=101;break e}case 108:{n=i+3|0;if((a[n>>0]|0)!=97){l=105;break e}l=i+4|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=97;a[p>>0]=108;i=p;l=108;break e}case 116:{o=i+3|0;if((a[o>>0]|0)!=110){l=105;break e}n=i+4|0;if((a[n>>0]|0)!=101){l=105;break e}l=i+5|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=101;a[o>>0]=110;a[p>>0]=116;i=p;l=116;break e}case 101:{l=i+3|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[p>>0]=101;i=p;l=101;break e}case 115:{o=i+3|0;if((a[o>>0]|0)!=117){l=105;break e}n=i+4|0;if((a[n>>0]|0)!=111){l=105;break e}l=i+5|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=111;a[o>>0]=117;a[p>>0]=115;i=p;l=115;break e}default:{l=105;break e}}}else l=105;break}case 111:{switch(l<<24>>24){case 110:break;case 114:{if(n<<24>>24!=111){l=114;break e}o=i+2|0;if((a[o>>0]|0)!=116){l=114;break e}n=i+3|0;if((a[n>>0]|0)!=97){l=114;break e}l=i+4|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=114;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=114;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=114;break e}a[n>>0]=97;a[o>>0]=116;a[q>>0]=101;i=q;l=101;break e}default:break e}if((n<<24>>24==111?(L=i+2|0,(a[L>>0]|0)==105):0)?(K=i+3|0,(a[K>>0]|0)==116):0){n=i+4|0;if(((a[n>>0]|0)==97?(P=i+5|0,(a[P>>0]|0)==122):0)?(O=i+6|0,(a[O>>0]|0)==105):0){l=i+7|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=110;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=110;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=110;break e}a[O>>0]=105;a[P>>0]=122;a[n>>0]=101;i=n;l=101;break e}n=i+4|0;if((a[n>>0]|0)==97?(w=i+5|0,y=a[w>>0]|0,y<<24>>24!=0):0){l=w;m=y;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=110;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[n>>0]=97;a[K>>0]=116;a[L>>0]=101;i=L;l=101}else l=110}else l=110}else l=110;break}case 115:{switch(l<<24>>24){case 109:{if(n<<24>>24!=115){l=109;break e}if((a[i+2>>0]|0)!=105){l=109;break e}o=i+3|0;if((a[o>>0]|0)!=108){l=109;break e}n=i+4|0;if((a[n>>0]|0)!=97){l=109;break e}l=i+5|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=109;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=109;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=109;break e}a[n>>0]=97;a[o>>0]=108;i=o;l=108;break e}case 115:break;default:break e}if((n<<24>>24==115?(a[i+2>>0]|0)==101:0)?(a[i+3>>0]|0)==110:0){n=i+4|0;if(((a[n>>0]|0)==101?(R=i+5|0,(a[R>>0]|0)==118):0)?(Q=i+6|0,(a[Q>>0]|0)==105):0){l=i+7|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=115;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=115;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=115;break e}a[Q>>0]=105;a[R>>0]=118;a[n>>0]=101;i=n;l=101;break e}n=i+4|0;if(((a[n>>0]|0)==108?(W=i+5|0,(a[W>>0]|0)==117):0)?(V=i+6|0,(a[V>>0]|0)==102):0){l=i+7|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=115;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=115;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=115;break e}a[V>>0]=102;a[W>>0]=117;a[n>>0]=108;i=n;l=108;break e}n=i+4|0;if((((a[n>>0]|0)==115?(T=i+5|0,(a[T>>0]|0)==117):0)?(S=i+6|0,(a[S>>0]|0)==111):0)?(z=i+7|0,B=a[z>>0]|0,B<<24>>24!=0):0){l=z;m=B;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=115;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[S>>0]=111;a[T>>0]=117;a[n>>0]=115;i=n;l=115}else l=115}else l=115}else l=115;break}case 116:{if(l<<24>>24==105)if(n<<24>>24==116?(X=i+2|0,(a[X>>0]|0)==105):0){o=i+3|0;switch(a[o>>0]|0){case 108:break;case 118:{n=i+4|0;if((a[n>>0]|0)!=105){l=105;break e}l=i+5|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=105;a[o>>0]=118;a[X>>0]=101;i=X;l=101;break e}default:{l=105;break e}}n=i+4|0;if((a[n>>0]|0)==97){l=i+5|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(!(a[l>>0]|0)){l=105;break e}a[n>>0]=97;a[o>>0]=108;i=o;l=108;break e}n=i+4|0;if(((a[n>>0]|0)==105?(U=i+5|0,(a[U>>0]|0)==98):0)?(A=i+6|0,C=a[A>>0]|0,C<<24>>24!=0):0){l=A;m=C;while(1){m=(m<<24>>24)+-97|0;if((m|0)==24)m=yq(l+1|0)|0;else m=1-(a[26176+m>>0]|0)|0;if(!m)break;l=l+1|0;m=a[l>>0]|0;if(!(m<<24>>24)){l=105;break e}}while(1)if(!(yq(l)|0))break;else l=l+1|0;if(a[l>>0]|0){a[U>>0]=98;a[n>>0]=108;a[o>>0]=101;i=o;l=101}else l=105}else l=105}else l=105;break}default:{}}while(0);f:do switch(l<<24>>24|0){case 101:{if(l<<24>>24==101)switch(a[i+1>>0]|0){case 116:{if((a[i+2>>0]|0)!=97)break f;m=i+3|0;if((a[m>>0]|0)!=99)break f;l=i+4|0;if((a[l>>0]|0)!=105)break f;j=i+5|0;k=a[j>>0]|0;if(!(k<<24>>24))break f;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;if(!(a[j>>0]|0))break f;a[l>>0]=105;a[m>>0]=99;i=m;break f}case 118:{if((a[i+2>>0]|0)!=105)break f;if((a[i+3>>0]|0)!=116)break f;if((a[i+4>>0]|0)!=97)break f;l=i+5|0;k=a[l>>0]|0;if(!(k<<24>>24))break f;j=l;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;i=(a[j>>0]|0)==0?i:l;break f}case 122:{if((a[i+2>>0]|0)!=105)break f;m=i+3|0;if((a[m>>0]|0)!=108)break f;l=i+4|0;if((a[l>>0]|0)!=97)break f;j=i+5|0;k=a[j>>0]|0;if(!(k<<24>>24))break f;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;if(!(a[j>>0]|0))break f;a[l>>0]=97;a[m>>0]=108;i=m;break f}default:break f}break}case 105:{if(((((l<<24>>24==105?(a[i+1>>0]|0)==116:0)?(a[i+2>>0]|0)==105:0)?(ba=i+3|0,(a[ba>>0]|0)==99):0)?(aa=i+4|0,(a[aa>>0]|0)==105):0)?(j=i+5|0,Z=a[j>>0]|0,Z<<24>>24!=0):0){k=Z;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;if(a[j>>0]|0){a[aa>>0]=105;a[ba>>0]=99;i=ba}}break}case 108:{if(l<<24>>24==108){switch(a[i+1>>0]|0){case 97:break;case 117:{if((a[i+2>>0]|0)!=102)break f;l=i+3|0;k=a[l>>0]|0;if(!(k<<24>>24))break f;j=l;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;i=(a[j>>0]|0)==0?i:l;break f}default:break f}l=i+2|0;if(((a[l>>0]|0)==99?(da=i+3|0,(a[da>>0]|0)==105):0)?(_=i+4|0,$=a[_>>0]|0,$<<24>>24!=0):0){j=_;k=$;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;if(a[j>>0]|0){a[da>>0]=105;a[l>>0]=99;i=l}}}break}case 115:{if((((l<<24>>24==115?(a[i+1>>0]|0)==115:0)?(a[i+2>>0]|0)==101:0)?(a[i+3>>0]|0)==110:0)?(ca=i+4|0,k=a[ca>>0]|0,k<<24>>24!=0):0){j=ca;while(1){k=(k<<24>>24)+-97|0;if((k|0)==24)k=yq(j+1|0)|0;else k=1-(a[26176+k>>0]|0)|0;if(!k)break;j=j+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break f}while(1)if(!(yq(j)|0))break;else j=j+1|0;i=(a[j>>0]|0)==0?i:ca}break}default:{}}while(0);l=a[i+1>>0]|0;g:do switch(l<<24>>24|0){case 97:{j=a[i>>0]|0;if(j<<24>>24==108){j=i+2|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else fa=400;break}case 99:{if((a[i>>0]|0)==101)if((a[i+2>>0]|0)==110){switch(a[i+3>>0]|0){case 101:case 97:break;default:{j=i;fa=399;break g}}j=i+4|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else{j=i;fa=399}break}case 101:{j=a[i>>0]|0;if(j<<24>>24==114){j=i+2|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else fa=400;break}case 105:{j=a[i>>0]|0;if(j<<24>>24==99){j=i+2|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else fa=400;break}case 108:{if((a[i>>0]|0)==101)if((a[i+2>>0]|0)==98){switch(a[i+3>>0]|0){case 105:case 97:break;default:{j=i;fa=399;break g}}j=i+4|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else{j=i;fa=399}break}case 110:{j=a[i>>0]|0;if(j<<24>>24==116){switch(a[i+2>>0]|0){case 97:{j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}case 101:break;default:break g}if(l<<24>>24==110){j=i+3|0;if((a[j>>0]|0)!=109){fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}j=i+4|0;if((a[j>>0]|0)==101){j=i+5|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}else{fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}}else{j=i;fa=399}}else fa=400;break}case 111:{j=a[i>>0]|0;if(j<<24>>24==117){j=i+2|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}k=i+3|0;if(l<<24>>24==111&(j<<24>>24==110?((a[k>>0]|0)+-115&255)<2:0)?(a[i+2>>0]|0)==105:0){j=(wq(k)|0)==0;j=j?i:k;fa=399}else{j=i;fa=399}break}case 115:{j=a[i>>0]|0;if(j<<24>>24==109)if((a[i+2>>0]|0)==105){j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else{j=i;fa=399}else fa=400;break}case 116:switch(a[i>>0]|0){case 101:{if(l<<24>>24!=116){j=i;fa=399;break g}if((a[i+2>>0]|0)!=97){j=i;fa=399;break g}j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}case 105:{if(l<<24>>24!=116){j=i;fa=399;break g}if((a[i+2>>0]|0)!=105){j=i;fa=399;break g}j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399;break g}default:{j=i;fa=399;break g}}case 117:{j=a[i>>0]|0;if(j<<24>>24==115)if((a[i+2>>0]|0)==111){j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else{j=i;fa=399}else fa=400;break}case 122:case 118:{if((a[i>>0]|0)==101)if((a[i+2>>0]|0)==105){j=i+3|0;fa=(wq(j)|0)==0;j=fa?i:j;fa=399}else{j=i;fa=399}break}default:{j=i;fa=399}}while(0);if((fa|0)==399){i=j;j=a[j>>0]|0;fa=400}do if((fa|0)==400)if(j<<24>>24==101){k=i+1|0;if(!(wq(k)|0)){if(vq(k)|0){if((yq(k)|0?((a[k>>0]|0)+-119&255)>=3:0)?(ea=a[i+2>>0]|0,ea<<24>>24):0){j=(ea<<24>>24)+-97|0;if((j|0)==24)j=yq(i+3|0)|0;else j=1-(a[26176+j>>0]|0)|0;if(j|0?yq(i+3|0)|0:0)break}i=k}}else i=k}while(0);if((wq(i)|0)!=0?(a[i>>0]|0)==108:0){fa=i+1|0;i=(a[fa>>0]|0)==108?fa:i}k=Eu(i)|0;c[e>>2]=k;a[ga+k>>0]=0;j=a[i>>0]|0;if(j<<24>>24)do{i=i+1|0;k=k+-1|0;a[ga+k>>0]=j;j=a[i>>0]|0}while(j<<24>>24!=0)}else{if((r|0)>0){i=0;k=0;do{j=a[o+k>>0]|0;if((j+-65&255)<26)j=(j&255)+32&255;else i=(j+-48&255)<10?1:i;a[ga+k>>0]=j;k=k+1|0}while((k|0)!=(r|0));if(!i){i=r;fa=31}else{i=r;j=3}}else{i=0;fa=31}if((fa|0)==31)j=10;if((j<<1|0)<(r|0)){i=j;j=r-j|0;do{a[ga+i>>0]=a[ga+j>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(r|0))}a[ga+i>>0]=0;c[e>>2]=i}while(0);c[d>>2]=c[ha>>2];c[f>>2]=ia;c[g>>2]=c[ja>>2];g=b+16|0;ja=c[g>>2]|0;c[g>>2]=ja+1;c[h>>2]=ja;ja=0;Ra=ka;return ja|0}function vq(b){b=b|0;var c=0,d=0;c=a[b>>0]|0;if(!(c<<24>>24)){d=0;return d|0}while(1){c=(c<<24>>24)+-97|0;if((c|0)==24)c=yq(b+1|0)|0;else c=1-(a[26176+c>>0]|0)|0;if(!c)break;b=b+1|0;c=a[b>>0]|0;if(!(c<<24>>24)){b=0;d=17;break}}if((d|0)==17)return b|0;while(1)if(!(yq(b)|0))break;else b=b+1|0;if(!(a[b>>0]|0)){d=0;return d|0}while(1)if(!(xq(b)|0))break;else b=b+1|0;if(!(a[b>>0]|0)){d=1;return d|0}while(1)if(!(yq(b)|0))break;else b=b+1|0;d=(a[b>>0]|0)==0&1;return d|0}function wq(b){b=b|0;var c=0,d=0,e=0,f=0;c=a[b>>0]|0;if(!(c<<24>>24)){f=0;return f|0}while(1){c=(c<<24>>24)+-97|0;if((c|0)==24)c=yq(b+1|0)|0;else c=1-(a[26176+c>>0]|0)|0;if(!c)break;d=b+1|0;c=a[d>>0]|0;if(!(c<<24>>24)){e=0;f=20;break}else b=d}if((f|0)==20)return e|0;while(1)if(!(yq(b)|0))break;else b=b+1|0;c=a[b>>0]|0;if(!(c<<24>>24)){f=0;return f|0}while(1){c=(c<<24>>24)+-97|0;if((c|0)==24)c=yq(b+1|0)|0;else c=1-(a[26176+c>>0]|0)|0;if(!c)break;d=b+1|0;c=a[d>>0]|0;if(!(c<<24>>24)){e=0;f=20;break}else b=d}if((f|0)==20)return e|0;while(1)if(!(yq(b)|0))break;else b=b+1|0;f=(a[b>>0]|0)!=0&1;return f|0}function xq(b){b=b|0;var c=0;c=a[b>>0]|0;if(!(c<<24>>24)){b=0;return b|0}c=(c<<24>>24)+-97|0;if((c|0)==24){b=yq(b+1|0)|0;return b|0}else{b=1-(a[26176+c>>0]|0)|0;return b|0}return 0}function yq(b){b=b|0;var c=0;c=a[b>>0]|0;if(!(c<<24>>24)){b=0;return b|0}c=(c<<24>>24)+-97|0;if((c|0)!=24){b=a[26176+c>>0]|0;return b|0}c=a[b+1>>0]|0;if(!(c<<24>>24)){b=1;return b|0}c=(c<<24>>24)+-97|0;if((c|0)==24)c=yq(b+2|0)|0;else c=1-(a[26176+c>>0]|0)|0;b=(c|0)!=0&1;return b|0}function zq(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=Ra;Ra=Ra+32|0;w=x+16|0;s=x+8|0;o=x;v=x+24|0;t=c[(c[d+4>>2]|0)+8>>2]|0;j=c[f>>2]|0;i=b[j+8>>1]|0;if((i&514)==514?(a[j+10>>0]|0)==1:0){u=c[j+16>>2]|0;k=j}else if(!(i&1)){u=Gg(j,1)|0;k=c[f>>2]|0}else{u=0;k=j}i=b[k+8>>1]|0;if((i&2)!=0?(a[k+10>>0]|0)==1:0)i=c[k+12>>2]|0;else p=9;do if((p|0)==9){j=i&65535;if(!(j&16)){if(j&1|0){i=0;break}i=Fg(k,1)|0;break}else{i=c[k+12>>2]|0;if(!(j&16384))break;i=(c[k>>2]|0)+i|0;break}}while(0);k=i+1|0;a:do if((e|0)!=2){b:do if(((!((u|0)==0|(t|0)==0)?(l=t+16|0,c[l>>2]|0):0)?(m=Xa[(a[t>>0]<<24>>24==1?154:155)&255](u,k)|0,m=(c[t+12>>2]|0)+-1&m,n=c[l>>2]|0,n|0):0)?(h=c[n+(m<<3)>>2]|0,q=(a[t>>0]|0)==1?79:80,g=c[n+(m<<3)+4>>2]|0,(h|0)!=0&(g|0)!=0):0){while(1){h=h+-1|0;if(!(Za[q&127](c[g+12>>2]|0,c[g+16>>2]|0,u,k)|0))break;g=c[g>>2]|0;if(!((h|0)!=0&(g|0)!=0))break b}h=c[g+8>>2]|0;if(h|0){g=d;j=h;break a}}while(0);c[s>>2]=u;g=Bb(53600,s)|0;c[d+20>>2]=1;yc(c[d>>2]|0,g,-1,1,-1)|0;if(!g){Ra=x;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);Ra=x;return}else{d=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);Ra=x;return}}else{i=c[(c[d>>2]|0)+32>>2]|0;c[v>>2]=0;c[o>>2]=-1;c[o+4>>2]=v;yd(i,1004,o)|0;i=f+4|0;j=c[i>>2]|0;g=b[j+8>>1]|0;if((c[v>>2]|0)==0&(g&32)==0){c[d+20>>2]=1;yc(c[d>>2]|0,53578,-1,1,-1)|0;Ra=x;return}if((g&2)!=0?(a[j+10>>0]|0)==1:0){r=c[j+12>>2]|0;p=24}else p=19;do if((p|0)==19){h=g&65535;if(!(h&16)){if(h&1|0)break;r=Fg(j,1)|0;p=24;break}else{g=c[j+12>>2]|0;if(!(h&16384)){r=g;p=24;break}r=(c[j>>2]|0)+g|0;p=24;break}}while(0);if((p|0)==24?!((u|0)==0|(r|0)!=4):0){s=mc(c[i>>2]|0)|0;s=c[s>>2]|0;h=s;if((Ep(t,u,k,s)|0)!=(s|0)){g=d;j=h;break}c[d+20>>2]=1;yc(c[d>>2]|0,34831,-1,1,-1)|0;g=d;j=h;break}c[d+20>>2]=1;yc(c[d>>2]|0,53555,-1,1,-1)|0;Ra=x;return}while(0);u=c[(c[g>>2]|0)+32>>2]|0;c[v>>2]=0;c[w>>2]=-1;c[w+4>>2]=v;yd(u,1004,w)|0;if((c[v>>2]|0)==0?(b[(c[f>>2]|0)+8>>1]&32)==0:0){Ra=x;return}i=c[g>>2]|0;g=c[i+32>>2]|0;if(g|0?(c[g+108>>2]|0)<4:0){g=c[g+236>>2]|0;if(g|0){c[g+12>>2]=18;w=g+36|0;c[w>>2]=(c[w>>2]|0)+1}c[d+20>>2]=18;yc(i,31223,-1,1,0)|0;Ra=x;return}do if((c[i+24>>2]|0)<32)if(!(Eg(i,32,0)|0)){g=i+8|0;h=c[i+16>>2]|0;break}else{Ra=x;return}else{h=c[i+20>>2]|0;c[i+16>>2]=h;g=i+8|0;b[g>>1]=b[g>>1]&13}while(0);a[h>>0]=j;a[h+1>>0]=j>>8;a[h+2>>0]=j>>16;a[h+3>>0]=j>>24;c[i+12>>2]=4;b[g>>1]=16;a[i+10>>0]=1;Ra=x;return}function Aq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Xq(1,a,b,c,d,e,f)|0}function Bq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Xq(0,a,b,c,d,e,f)|0}function Cq(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=d+20|0;c[t>>2]=0;o=d+40|0;g[o>>3]=5.0e6;p=c[d>>2]|0;if((p|0)>0){q=c[d+4>>2]|0;r=b+24|0;m=-1;j=-1;n=0;f=-1;l=-1;e=0;a:while(1){b:do if(!(a[q+(n*12|0)+5>>0]|0))if((a[q+(n*12|0)+4>>0]|0)==64){s=18;break a}else{h=m;i=j}else{i=c[q+(n*12|0)>>2]|0;if((i|0)<0)k=1;else k=(i|0)==((c[r>>2]|0)+1|0);h=a[q+(n*12|0)+4>>0]|0;c:do if(!((f|0)<0&(k&h<<24>>24==2))){switch(h<<24>>24){case 2:{s=13;break c}case 64:break;default:{i=j;break c}}if((i|0)>-1?(i|0)<=(c[r>>2]|0):0){e=i+2|0;c[t>>2]=e;g[o>>3]=2.0;i=j;f=n;h=64}else{i=j;h=64}}else{c[t>>2]=1;g[o>>3]=1.0;f=n;e=1;s=13}while(0);if((s|0)==13){s=0;i=(i|0)==((c[r>>2]|0)+2|0)?n:j;h=2}if(k){k=(h&255)+-4|0;switch(k>>>2|k<<30|0){case 0:case 7:{h=n;break b}case 3:case 1:{h=m;l=n;break b}default:{h=m;break b}}}else h=m}while(0);n=n+1|0;if((n|0)>=(p|0))break;else{m=h;j=i}}if((s|0)==18){c[t>>2]=0;g[o>>3]=1.e+50;d=d+48|0;c[d>>2]=0;c[d+4>>2]=262144;return 0}if((e|0)==1){e=d+56|0;c[e>>2]=c[e>>2]|1;e=1}if((f|0)>-1){s=c[d+16>>2]|0;c[s+(f<<3)>>2]=1;a[s+(f<<3)+4>>0]=1;f=2}else f=1;if((i|0)>-1){e=e|65536;c[t>>2]=e;c[(c[d+16>>2]|0)+(i<<3)>>2]=f;f=f+1|0}if((h|0)>-1){e=e|131072;c[t>>2]=e;c[(c[d+16>>2]|0)+(h<<3)>>2]=f;f=f+1|0}if((l|0)>-1){c[t>>2]=e|262144;c[(c[d+16>>2]|0)+(l<<3)>>2]=f}}if((c[d+8>>2]|0)!=1)return 0;e=c[d+12>>2]|0;t=c[e>>2]|0;if((t|0)>=0?(t|0)!=((c[b+24>>2]|0)+1|0):0)return 0;c[d+24>>2]=(a[e+4>>0]|0)==0?54528:54523;c[d+32>>2]=1;return 0}function Dq(a){a=a|0;var b=0,d=0;gc(c[a+216>>2]|0)|0;b=a+56|0;gc(c[b>>2]|0)|0;gc(c[b+4>>2]|0)|0;gc(c[b+8>>2]|0)|0;gc(c[b+12>>2]|0)|0;gc(c[b+16>>2]|0)|0;gc(c[b+20>>2]|0)|0;gc(c[b+24>>2]|0)|0;gc(c[b+28>>2]|0)|0;gc(c[b+32>>2]|0)|0;gc(c[b+36>>2]|0)|0;gc(c[b+40>>2]|0)|0;gc(c[b+44>>2]|0)|0;gc(c[b+48>>2]|0)|0;gc(c[b+52>>2]|0)|0;gc(c[b+56>>2]|0)|0;gc(c[b+60>>2]|0)|0;gc(c[b+64>>2]|0)|0;gc(c[b+68>>2]|0)|0;gc(c[b+72>>2]|0)|0;gc(c[b+76>>2]|0)|0;gc(c[b+80>>2]|0)|0;gc(c[b+84>>2]|0)|0;gc(c[b+88>>2]|0)|0;gc(c[b+92>>2]|0)|0;gc(c[b+96>>2]|0)|0;gc(c[b+100>>2]|0)|0;gc(c[b+104>>2]|0)|0;gc(c[b+108>>2]|0)|0;gc(c[b+112>>2]|0)|0;gc(c[b+116>>2]|0)|0;gc(c[b+120>>2]|0)|0;gc(c[b+124>>2]|0)|0;gc(c[b+128>>2]|0)|0;gc(c[b+132>>2]|0)|0;gc(c[b+136>>2]|0)|0;gc(c[b+140>>2]|0)|0;gc(c[b+144>>2]|0)|0;gc(c[b+148>>2]|0)|0;gc(c[b+152>>2]|0)|0;gc(c[b+156>>2]|0)|0;b=c[a+244>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+220>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+224>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+40>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+44>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);d=c[a+36>>2]|0;Wa[c[(c[d>>2]|0)+8>>2]&127](d)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Eq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;d=Ra;Ra=Ra+48|0;e=d;b=d+44|0;c[b>>2]=0;h=c[a+16>>2]|0;f=c[a+12>>2]|0;g=c[a+20>>2]|0;i=(c[a+40>>2]|0)==0?59952:54718;c[e>>2]=h;c[e+4>>2]=g;c[e+8>>2]=h;c[e+12>>2]=g;c[e+16>>2]=h;c[e+20>>2]=g;c[e+24>>2]=h;c[e+28>>2]=g;c[e+32>>2]=i;c[e+36>>2]=h;c[e+40>>2]=g;_q(b,f,54532,e);b=c[b>>2]|0;if(b|0){i=b;Ra=d;return i|0}Dq(a)|0;i=0;Ra=d;return i|0}function Fq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;do if(!(mb()|0)){if(!(c[7324]|0)){a=Wa[c[29340>>2]&127](96)|0;c[b>>2]=a;if(!a){b=7;return b|0}}else{e=Wa[c[29356>>2]&127](96)|0;if((c[14985]|0)>>>0<96)c[14985]=96;d=59064;a=c[d>>2]|0;d=c[d+4>>2]|0;if((d|0)>0|(d|0)==0&a>>>0>0){f=c[14978]|0;d=Tv(a|0,d|0,e|0,((e|0)<0)<<31>>31|0)|0;a=L()|0;c[14768]=((a|0)<0|(a|0)==0&d>>>0<=f>>>0)&1}a=Wa[c[29340>>2]&127](e)|0;if(!a)break;d=Wa[c[29352>>2]&127](a)|0;d=(c[14978]|0)+d|0;c[14978]=d;if(d>>>0>(c[14982]|0)>>>0)c[14982]=d;d=(c[14981]|0)+1|0;c[14981]=d;if(d>>>0>(c[14987]|0)>>>0)c[14987]=d;c[b>>2]=a}d=a+96|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));f=0;return f|0}while(0);c[b>>2]=0;f=7;return f|0}function Gq(a){a=a|0;var b=0;$q(a);if(!a)return 0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0}function Hq(f,h,i,j,k){f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0;K=Ra;Ra=Ra+128|0;I=K+104|0;E=K+96|0;F=K+64|0;w=K+56|0;v=K+48|0;z=K+40|0;A=K;B=K+116|0;x=K+112|0;y=K+108|0;G=c[f>>2]|0;r=h&65535;if(!r){j=0;J=0}else{j=1;J=c[k>>2]|0}if(!(h&65536)){t=0;s=0}else{s=c[k+(j<<2)>>2]|0;t=s;j=j+1|0}if(!(h&131072)){D=0;o=0}else{o=c[k+(j<<2)>>2]|0;D=o;j=j+1|0}if(!(h&262144)){C=0;p=0}else{p=c[k+(j<<2)>>2]|0;C=p}$q(f);do if(D){n=D+8|0;j=b[n>>1]|0;u=j&31;k=d[816+u>>0]|0;if((u|16|0)==18){j=a[D+10>>0]|0;k=D+16|0;m=D+12|0;if(!(Lg(c[k>>2]|0,z,c[m>>2]|0,j)|0))j=b[n>>1]|0;else{if(!(Og(c[k>>2]|0,A,c[m>>2]|0,j)|0)){q=A;u=c[q+4>>2]|0;j=D;c[j>>2]=c[q>>2];c[j+4>>2]=u;j=4}else{g[D>>3]=+g[z>>3];j=8}j=b[n>>1]&-3|j;b[n>>1]=j}k=d[816+(j&31)>>0]|0}if((k|0)==1){j=j&65535;if(j&4|0){k=o;j=c[k>>2]|0;k=c[k+4>>2]|0;break}if(j&8|0){j=Mg(+g[D>>3])|0;k=L()|0;break}if(!(j&18)){j=0;k=0}else{j=Ng(a[D+10>>0]|0,c[D+12>>2]|0,c[D+16>>2]|0)|0;k=L()|0}}else{j=0;k=-2147483648}}else{j=0;k=-2147483648}while(0);u=f+72|0;q=u;c[q>>2]=j;c[q+4>>2]=k;do if(C){n=C+8|0;j=b[n>>1]|0;q=j&31;k=d[816+q>>0]|0;if((q|16|0)==18){j=a[C+10>>0]|0;k=C+16|0;m=C+12|0;if(!(Lg(c[k>>2]|0,z,c[m>>2]|0,j)|0))j=b[n>>1]|0;else{if(!(Og(c[k>>2]|0,A,c[m>>2]|0,j)|0)){o=A;q=c[o+4>>2]|0;j=C;c[j>>2]=c[o>>2];c[j+4>>2]=q;j=4}else{g[C>>3]=+g[z>>3];j=8}j=b[n>>1]&-3|j;b[n>>1]=j}k=d[816+(j&31)>>0]|0}if((k|0)==1){j=j&65535;if(j&4|0){k=p;j=c[k>>2]|0;k=c[k+4>>2]|0;break}if(j&8|0){j=Mg(+g[C>>3])|0;k=L()|0;break}if(!(j&18)){j=0;k=0}else{j=Ng(a[C+10>>0]|0,c[C+12>>2]|0,c[C+16>>2]|0)|0;k=L()|0}}else{j=-1;k=2147483647}}else{j=-1;k=2147483647}while(0);q=f+80|0;p=q;c[p>>2]=j;c[p+4>>2]=k;if(!i)j=a[G+235>>0]|0;else j=(a[i>>0]|0)==68&1;a[f+52>>0]=j;h=h&65535;b[f+4>>1]=h;do if(r>>>0>1){o=r+-2|0;k=J+8|0;do if(J){j=b[k>>1]|0;if((j&514)==514?(a[J+10>>0]|0)==1:0)j=c[J+16>>2]|0;else{if(j&1){H=52;break}j=Gg(J,1)|0}if(j){p=j;m=0}else H=52}else H=52;while(0);if((H|0)==52)if(!(-1431655766>>>(b[k>>1]&31)&1)){f=7;Ra=K;return f|0}else{p=0;m=1}k=f+20|0;c[k>>2]=0;if(!t)j=0;else{j=e[t+8>>1]|0;do if(!(j&4)){if(j&8|0){j=Mg(+g[t>>3])|0;L()|0;break}if(!(j&18))j=0;else{j=Ng(a[t+10>>0]|0,c[t+12>>2]|0,c[t+16>>2]|0)|0;L()|0}}else j=c[s>>2]|0;while(0);c[k>>2]=j}k=c[G+36>>2]|0;r=c[G+28>>2]|0;t=d[G+232>>0]|0;s=c[G+24>>2]|0;i=f+16|0;n=G+8|0;M=A+24|0;c[M>>2]=0;c[M+4>>2]=0;c[M+8>>2]=0;c[A>>2]=k;c[A+4>>2]=j;c[A+8>>2]=r;c[A+16>>2]=s;c[A+20>>2]=o;c[A+12>>2]=t;a:do if(m){c[i>>2]=0;j=0}else{j=er(A,p,Eu(p)|0,i,z)|0;do if(!j){j=c[i>>2]|0;if(c[A+32>>2]|0){ar(j);c[i>>2]=0;break}if(!j){j=0;break a}j=cr(i,12)|0;if(!j){j=c[i>>2]|0;k=dr(j,12)|0;if(!k)break a;else{l=k;H=70}}else{l=j;H=70}}else{l=j;H=70}while(0);b:do if((H|0)==70){ar(c[i>>2]|0);c[i>>2]=0;switch(l|0){case 1:break b;case 18:break;default:{M=l;Ra=K;return M|0}}c[v>>2]=12;Wp(n,54811,v);M=1;Ra=K;return M|0}while(0);c[w>>2]=p;Wp(n,54863,w);M=1;Ra=K;return M|0}while(0);M=c[f>>2]|0;c[z>>2]=0;c[A>>2]=0;c[B>>2]=0;fr(f,j,A,B,z);j=c[A>>2]|0;do if((c[z>>2]|0)==0&(j|0)>1?a[M+232>>0]|0:0){k=pb((c[B>>2]<<3)+(j*24|0)|0,0)|0;m=k+((c[A>>2]|0)*24|0)|0;if(!k){c[z>>2]=7;break}c[x>>2]=k;c[y>>2]=m;gr(f,0,c[i>>2]|0,x,y,z);j=((c[x>>2]|0)-k|0)/24|0;c[A>>2]=j;c[B>>2]=(c[y>>2]|0)-m>>2;if((c[z>>2]|0)==0?(M=hr(f,0,k,j)|0,c[z>>2]=M,(M|0)==0&(c[B>>2]|0)>0):0){j=0;do{M=hr(f,c[m+(j<<2)>>2]|0,k,c[A>>2]|0)|0;c[z>>2]=M;j=j+1|0}while((M|0)==0?(j|0)<(c[B>>2]|0):0)}if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{M=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}}while(0);ir(f,c[i>>2]|0,z);j=c[z>>2]|0;k=G+248|0;m=c[k>>2]|0;do if(m|0){n=c[m+20>>2]|0;gc(c[m+16>>2]|0)|0;if(n|0){if(c[n+480>>2]|0){Xd(n,m);break}M=m;if((c[n+304>>2]|0)>>>0<=M>>>0?(c[n+308>>2]|0)>>>0>M>>>0:0){M=n+300|0;c[m>>2]=c[M>>2];c[M>>2]=m;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{M=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[k>>2]=0;if(!j){c[f+40>>2]=c[f+44>>2];M=f+32|0;c[M>>2]=0;c[M+4>>2]=0;break}else{M=j;Ra=K;return M|0}}while(0);c:do switch(h<<16>>16){case 0:{l=c[G+220>>2]|0;if((D|0)!=0|(C|0)!=0){H=u;E=c[H>>2]|0;H=c[H+4>>2]|0;J=q;I=c[J>>2]|0;J=c[J+4>>2]|0;j=(a[f+52>>0]|0)==0?54528:54523;c[F>>2]=l;M=F+8|0;c[M>>2]=E;c[M+4>>2]=H;M=F+16|0;c[M>>2]=I;c[M+4>>2]=J;c[F+24>>2]=j;j=Bb(54721,F)|0}else{j=(a[f+52>>0]|0)==0?54528:54523;c[E>>2]=l;c[E+4>>2]=j;j=Bb(54783,E)|0}if(!j){M=7;Ra=K;return M|0}l=qd(c[G+12>>2]|0,j,-1,129,0,f+12|0,0)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](j);H=116;break c}else{H=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);H=116;break c}}case 1:{m=f+12|0;l=c[m>>2]|0;if(!l){k=c[f>>2]|0;j=k+216|0;l=c[j>>2]|0;do if(!l){c[I>>2]=c[k+220>>2];j=Bb(54912,I)|0;if(!j){M=7;Ra=K;return M|0}l=qd(c[k+12>>2]|0,j,-1,129,0,m,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{M=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}if(!l){l=c[m>>2]|0;break}else{M=l;Ra=K;return M|0}}else{c[m>>2]=l;c[j>>2]=0}while(0);a[f+8>>0]=1}l=Yc(l,1,J)|0;H=116;break}default:{}}while(0);if((H|0)==116?l|0:0){M=l;Ra=K;return M|0}M=Iq(f)|0;Ra=K;return M|0}function Iq(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=Ra;Ra=Ra+16|0;d=q;if((e[b+4>>1]|0)<2){d=b+12|0;if((Gc(c[d>>2]|0)|0)==100){o=Oc(c[d>>2]|0,0)|0;p=L()|0;b=b+32|0;c[b>>2]=o;c[b+4>>2]=p;b=0;Ra=q;return b|0}a[b+6>>0]=1;g=c[d>>2]|0;if(!g){b=0;Ra=q;return b|0}d=c[g>>2]|0;b=g+136|0;p=c[b+4>>2]|0;if((p|0)>0|(p|0)==0&(c[b>>2]|0)>>>0>0)hc(d,g);f=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;b=g+64|0;c[b>>2]=0;c[b+4>>2]=0;if((f|0)==3082|(a[d+81>>0]|0)!=0){og(d);b=7;Ra=q;return b|0}else{b=c[d+68>>2]&f;Ra=q;return b|0}}c[d>>2]=0;f=c[b+16>>2]|0;if(f){g=b+7|0;h=b+12|0;i=f+32|0;j=b+6|0;k=b+88|0;l=f+24|0;o=b+32|0;do{if((a[g>>0]|0)==0?(m=c[h>>2]|0,m|0):0){n=c[m>>2]|0;r=m+136|0;s=c[r+4>>2]|0;if((s|0)>0|(s|0)==0&(c[r>>2]|0)>>>0>0)hc(n,m);s=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;r=m+64|0;c[r>>2]=0;c[r+4>>2]=0;if((s|0)==3082|(a[n+81>>0]|0)!=0)og(n)}qr(b,f,d);s=a[i>>0]|0;a[j>>0]=s;a[g>>0]=1;c[k>>2]=1;t=l;n=c[t+4>>2]|0;r=o;c[r>>2]=c[t>>2];c[r+4>>2]=n;if(s<<24>>24)break}while((rr(b,d)|0)!=0);d=c[d>>2]|0;if(!d){d=o;p=22}}else{a[b+6>>0]=1;d=b+32|0;p=22}do if((p|0)==22){f=d;d=c[f>>2]|0;f=c[f+4>>2]|0;if(!(a[b+52>>0]|0)){t=b+80|0;s=c[t+4>>2]|0;if(!((f|0)>(s|0)|((f|0)==(s|0)?d>>>0>(c[t>>2]|0)>>>0:0))){d=0;break}}else{t=b+72|0;s=c[t+4>>2]|0;if(!((f|0)<(s|0)|((f|0)==(s|0)?d>>>0<(c[t>>2]|0)>>>0:0))){d=0;break}}a[b+6>>0]=1;d=0}while(0);t=d;Ra=q;return t|0}function Jq(b){b=b|0;var c=0;c=b+6|0;if(!(a[c>>0]|0)){c=0;return c|0}$q(b);a[c>>0]=1;c=1;return c|0}function Kq(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=c[d>>2]|0;i=c[h+24>>2]|0;switch(g-i|0){case 0:{g=c[f>>2]|0;h=g+8|0;if(!((b[h>>1]&9216)==0?!(c[g+24>>2]|0):0))Cg(g);c[g>>2]=54938;c[g+16>>2]=d;b[h>>1]=-31231;a[g+11>>0]=112;c[g+36>>2]=97;f=0;return f|0}case 1:{d=d+32|0;i=c[d>>2]|0;d=c[d+4>>2]|0;g=c[f>>2]|0;h=g+8|0;if(!(b[h>>1]&9216)){f=g;c[f>>2]=i;c[f+4>>2]=d;b[h>>1]=4;f=0;return f|0}else{Pg(g,i,d);f=0;return f|0}}case 2:{if(c[d+16>>2]|0){i=c[d+20>>2]|0;d=((i|0)<0)<<31>>31;g=c[f>>2]|0;h=g+8|0;if(!(b[h>>1]&9216)){f=g;c[f>>2]=i;c[f+4>>2]=d;b[h>>1]=4;f=0;return f|0}else{Pg(g,i,d);f=0;return f|0}}if(!(c[h+44>>2]|0)){g=c[f>>2]|0;h=g+8|0;if(!(b[h>>1]&9216)){f=g;c[f>>2]=0;c[f+4>>2]=0;b[h>>1]=4;f=0;return f|0}else{Pg(g,0,0);f=0;return f|0}}break}default:i=g}g=ur(0,d)|0;if(g|0){f=g;return f|0}k=c[d+12>>2]|0;j=(k|0)==0;if(!j?(c[k+120>>2]|0)!=0:0)g=(e[k+144>>1]|0)+-1|0;else g=-1;if((g|0)<=(i|0)){f=0;return f|0}g=i+1|0;do if(j)d=29576;else{h=c[k+120>>2]|0;if(h|0?g>>>0<(e[k+144>>1]|0)>>>0:0){d=h+(g*40|0)|0;break}d=c[k>>2]|0;c[d+64>>2]=25;Ne(d,25);d=29576}while(0);g=d+8|0;h=e[g>>1]|0;if(h&2048|0)b[g>>1]=h&59391|4096;if(!j){h=c[k>>2]|0;i=k+40|0;g=c[i>>2]|0;if((g|0)==3082|(a[h+81>>0]|0)!=0){og(h);g=7}else g=c[h+68>>2]&g;c[i>>2]=g}Dc(f,d);f=0;return f|0}function Lq(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=c[d+4>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=a;return 0}function Mq(f,h,i,j){f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;ca=Ra;Ra=Ra+160|0;q=ca+48|0;E=ca+40|0;D=ca+32|0;C=ca+24|0;Z=ca+16|0;y=ca+8|0;u=ca;O=ca+136|0;$=ca+80|0;W=ca+72|0;X=ca+68|0;Y=ca+64|0;ba=ca+60|0;z=ca+56|0;c[ba>>2]=0;c[z>>2]=0;x=(h|0)>1;a:do if(x){_=f+24|0;h=c[_>>2]|0;if(-1431655766>>>(b[(c[i>>2]|0)+8>>1]&31)&1|0?(p=c[i+(h+2<<2)>>2]|0,o=p+8|0,k=b[o>>1]|0,(-1431655766>>>(k&31)&1|0)==0):0){do if(p){if((k&514)==514?(a[p+10>>0]|0)==1:0){q=c[p+16>>2]|0;break}if(!(k&1)){q=Gg(p,1)|0;k=b[o>>1]|0}else q=0}else q=0;while(0);if((k&2)!=0?(a[p+10>>0]|0)==1:0)h=c[p+12>>2]|0;else aa=14;do if((aa|0)==14){k=k&65535;if(!(k&16)){if(k&1|0){h=0;break}h=Fg(p,1)|0;break}else{h=c[p+12>>2]|0;if(!(k&16384))break;h=(c[p>>2]|0)+h|0;break}}while(0);b:do if(!q)k=7;else{c:do switch(h|0){case 8:{o=a[q>>0]|0;d:do if(!(o<<24>>24)){k=37598;aa=22}else{_=o&255;k=208+_|0;do if((_|32|0)==111){k=a[q+1>>0]|0;if(!(k<<24>>24)){k=37599;aa=22;break d}_=k&255;k=208+_|0;if((_|32|0)==112){k=a[q+2>>0]|0;if(!(k<<24>>24)){k=37600;aa=22;break d}_=k&255;k=208+_|0;if((_|32|0)==116){k=a[q+3>>0]|0;if(!(k<<24>>24)){k=37601;aa=22;break d}_=k&255;k=208+_|0;if((_|32|0)==105){k=a[q+4>>0]|0;if(!(k<<24>>24)){k=37602;aa=22;break d}k=k&255;if((k|32|0)!=109){n=109;k=208+k|0;break}k=a[q+5>>0]|0;if(!(k<<24>>24)){k=37603;aa=22;break d}k=k&255;if((k|32|0)!=105){n=105;k=208+k|0;break}k=a[q+6>>0]|0;if(!(k<<24>>24)){k=37604;aa=22;break d}k=k&255;if((k|32|0)!=122){n=122;k=208+k|0;break}k=a[q+7>>0]|0;if(!(k<<24>>24)){k=37605;aa=22;break d}k=k&255;if((k|32|0)==101)break d;else{n=101;k=208+k|0}}else n=105}else n=116}else n=112}else n=111;while(0);t=d[k>>0]|0;aa=26}while(0);if((aa|0)==22){t=0;n=a[208+(d[k>>0]|0)>>0]|0;aa=26}if((aa|0)==26?(t|0)!=(n&255|0):0)break c;k=Dr(f,0)|0;break b}case 7:{o=a[q>>0]|0;e:do if(!(o<<24>>24)){k=54949;aa=29}else{Z=o&255;k=208+Z|0;do if((Z|32|0)==114){k=a[q+1>>0]|0;if(!(k<<24>>24)){k=54950;aa=29;break e}Z=k&255;k=208+Z|0;if((Z|32|0)==101){k=a[q+2>>0]|0;if(!(k<<24>>24)){k=54951;aa=29;break e}Z=k&255;k=208+Z|0;if((Z|32|0)==98){k=a[q+3>>0]|0;if(!(k<<24>>24)){k=54952;aa=29;break e}Z=k&255;k=208+Z|0;if((Z|32|0)==117){k=a[q+4>>0]|0;if(!(k<<24>>24)){k=54953;aa=29;break e}k=k&255;if((k|32|0)!=105){n=105;k=208+k|0;break}k=a[q+5>>0]|0;if(!(k<<24>>24)){k=54954;aa=29;break e}k=k&255;if((k|32|0)!=108){n=108;k=208+k|0;break}k=a[q+6>>0]|0;if(!(k<<24>>24)){k=54955;aa=29;break e}k=k&255;if((k|32|0)==100)break e;else{n=100;k=208+k|0}}else n=117}else n=98}else n=101}else n=114;while(0);s=d[k>>0]|0;r=n;aa=33}while(0);if((aa|0)==29){s=0;r=a[208+(d[k>>0]|0)>>0]|0;aa=33}if((aa|0)==33?(s|0)!=(r&255|0):0)break c;k=Lr(f,0)|0;c[O>>2]=k;if(!k){c[$>>2]=0;c[u>>2]=c[f+220>>2];k=Bb(55001,u)|0;do if(k){l=qd(c[f+12>>2]|0,k,-1,128,0,$,0)|0;c[O>>2]=l;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{Z=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}if(!l){k=c[_>>2]|0;k=Yv(k|0,((k|0)<0)<<31>>31|0,12,0)|0;k=Sv(k|0,L()|0,12,0)|0;C=pb(k,L()|0)|0;if(!C){c[O>>2]=7;n=0;m=0;l=0;k=0;break}gw(C|0,0,k|0)|0;l=(c[_>>2]|0)+1|0;m=C+(l<<2)|0;l=m+(l<<2)|0;w=f+44|0;x=f+272|0;y=f+284|0;j=f+280|0;i=f+234|0;z=f+32|0;A=f+264|0;B=f+260|0;n=0;v=c[$>>2]|0;while(1){if((Gc(v)|0)!=100){aa=89;break}if(!(c[w>>2]|0))u=0;else u=Nc(v,(c[_>>2]|0)+1|0)|0;o=Oc(v,0)|0;p=L()|0;h=x;k=c[h>>2]|0;h=c[h+4>>2]|0;do if(!((h|0)>(p|0)|(h|0)==(p|0)&k>>>0>o>>>0)){if((k|0)==(o|0)&(h|0)==(p|0)?(c[y>>2]|0)==0:0){aa=52;break}if((c[j>>2]|0)!=(u|0)){aa=52;break}if((c[A>>2]|0)<=(c[B>>2]|0))aa=53;else aa=52}else aa=52;while(0);if((aa|0)==52){aa=0;k=Sr(f)|0;if(!k)aa=53}if((aa|0)==53){aa=0;k=x;c[k>>2]=o;c[k+4>>2]=p;c[j>>2]=u;c[y>>2]=0;k=0}c[O>>2]=k;gw(C|0,0,(c[_>>2]<<2)+4|0)|0;f:do if(!k){r=v+120|0;s=v+144|0;t=v+40|0;g:do if(!v){k=c[_>>2]|0;if((k|0)<=0)break;o=c[z>>2]|0;h=0;do{if(!(a[o+h>>0]|0)){c[C+(h<<2)>>2]=0;k=c[_>>2]|0}h=h+1|0}while((h|0)<(k|0))}else{q=0;do{if((q|0)>=(c[_>>2]|0))break g;p=q;q=q+1|0;if(!(a[(c[z>>2]|0)+p>>0]|0)){k=c[r>>2]|0;do if(!k)aa=66;else{if(q>>>0>=(e[s>>1]|0)>>>0){aa=66;break}k=k+(q*40|0)|0}while(0);if((aa|0)==66){aa=0;k=c[v>>2]|0;c[k+64>>2]=25;Ne(k,25);k=29576}h=b[k+8>>1]|0;do if((h&514)==514){if((a[k+10>>0]|0)!=1){aa=71;break}o=c[k+16>>2]|0}else aa=71;while(0);do if((aa|0)==71){aa=0;if(h&1){o=0;break}o=Gg(k,1)|0}while(0);k=c[v>>2]|0;h=c[t>>2]|0;if((h|0)==3082|(a[k+81>>0]|0)!=0){og(k);k=7}else k=c[k+68>>2]&h;c[t>>2]=k;k=Mr(f,u,o,p,C+(p<<2)|0)|0;Y=Lc(v,q)|0;Z=C+(c[_>>2]<<2)|0;c[Z>>2]=(c[Z>>2]|0)+Y}else k=0}while(!(k|0));c[O>>2]=k;break f}while(0);c[O>>2]=0;k=0}while(0);if(a[i>>0]|0){Br(O,f,C);k=c[O>>2]|0}h=(k|0)==0;do if(h){n=n+1|0;if((c[_>>2]|0)<0){k=v;break}k=0;while(1){aa=m+(k<<2)|0;c[aa>>2]=(c[aa>>2]|0)+(c[C+(k<<2)>>2]|0);if((k|0)<(c[_>>2]|0))k=k+1|0;else{k=v;break}}}else{gc(v)|0;k=0}while(0);if(h)v=k;else{aa=88;break}}if((aa|0)==88){c[$>>2]=k;k=C;break}else if((aa|0)==89){c[$>>2]=v;k=C;break}}else{n=0;m=0;l=0;k=0}}else{c[O>>2]=7;n=0;m=0;l=0;k=0}while(0);if(a[f+232>>0]|0)Cr(O,f,m,l,n);do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{_=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-_;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);k=c[$>>2]|0;if(k){k=gc(k)|0;l=c[O>>2]|0;if(!l)c[O>>2]=k;else k=l}else k=c[O>>2]|0}break b}case 15:{o=a[q>>0]|0;h:do if(!(o<<24>>24)){k=54957;aa=103}else{V=o&255;k=208+V|0;do if((V|32|0)==105){k=a[q+1>>0]|0;if(!(k<<24>>24)){k=54958;aa=103;break h}V=k&255;k=208+V|0;if((V|32|0)==110){k=a[q+2>>0]|0;if(!(k<<24>>24)){k=54959;aa=103;break h}V=k&255;k=208+V|0;if((V|32|0)==116){k=a[q+3>>0]|0;if(!(k<<24>>24)){k=54960;aa=103;break h}V=k&255;k=208+V|0;if((V|32|0)==101){k=a[q+4>>0]|0;if(!(k<<24>>24)){k=54961;aa=103;break h}k=k&255;if((k|32|0)!=103){n=103;k=208+k|0;break}k=a[q+5>>0]|0;if(!(k<<24>>24)){k=54962;aa=103;break h}k=k&255;if((k|32|0)!=114){n=114;k=208+k|0;break}k=a[q+6>>0]|0;if(!(k<<24>>24)){k=54963;aa=103;break h}k=k&255;if((k|32|0)!=105){n=105;k=208+k|0;break}k=a[q+7>>0]|0;if(!(k<<24>>24)){k=54964;aa=103;break h}k=k&255;if((k|32|0)!=116){n=116;k=208+k|0;break}k=a[q+8>>0]|0;if(!(k<<24>>24)){k=54965;aa=103;break h}k=k&255;if((k|32|0)!=121){n=121;k=208+k|0;break}k=a[q+9>>0]|0;if(!(k<<24>>24)){k=54966;aa=103;break h}if(k<<24>>24!=45){n=45;k=208+(k&255)|0;break}k=a[q+10>>0]|0;if(!(k<<24>>24)){k=54967;aa=103;break h}k=k&255;if((k|32|0)!=99){n=99;k=208+k|0;break}k=a[q+11>>0]|0;if(!(k<<24>>24)){k=54968;aa=103;break h}k=k&255;if((k|32|0)!=104){n=104;k=208+k|0;break}k=a[q+12>>0]|0;if(!(k<<24>>24)){k=54969;aa=103;break h}k=k&255;if((k|32|0)!=101){n=101;k=208+k|0;break}k=a[q+13>>0]|0;if(!(k<<24>>24)){k=54970;aa=103;break h}k=k&255;if((k|32|0)!=99){n=99;k=208+k|0;break}k=a[q+14>>0]|0;if(!(k<<24>>24)){k=54971;aa=103;break h}k=k&255;if((k|32|0)==107)break h;else{n=107;k=208+k|0}}else n=101}else n=116}else n=110}else n=105;while(0);w=d[k>>0]|0;v=n;aa=107}while(0);if((aa|0)==103){w=0;v=a[208+(d[k>>0]|0)>>0]|0;aa=107}if((aa|0)==107?(w|0)!=(v&255|0):0)break c;l=f+164|0;k=c[l>>2]|0;c[O>>2]=k;do if(!k){k=c[f+20>>2]|0;c[y>>2]=c[f+16>>2];c[y+4>>2]=k;k=Bb(52546,y)|0;if(!k){h=7;n=0;m=0;l=0;k=0;break}h=qd(c[f+12>>2]|0,k,-1,133,0,O,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{V=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-V;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[O>>2]|0;c[l>>2]=k;if(!h)aa=116;else{n=0;m=0;l=0;k=0}}else aa=116;while(0);if((aa|0)==116){N=k;l=c[f+280>>2]|0;m=((l|0)<0)<<31>>31;do if(!(Vc(N,1)|0)){n=c[N+100>>2]|0;h=n+8|0;if(!(b[h>>1]&9216)){V=n;c[V>>2]=l;c[V+4>>2]=m;b[h>>1]=4;break}else{Pg(n,l,m);break}}while(0);V=f+252|0;l=c[V>>2]|0;m=((l|0)<0)<<31>>31;do if(!(Vc(N,2)|0)){h=c[N+100>>2]|0;n=h+40|0;h=h+48|0;if(!(b[h>>1]&9216)){U=n;c[U>>2]=l;c[U+4>>2]=m;b[h>>1]=4;break}else{Pg(n,l,m);break}}while(0);E=O+12|0;F=$+12|0;G=$+4|0;H=$+16|0;I=$+48|0;J=$+52|0;K=$+40|0;M=$+44|0;n=0;l=0;while(1){if((Gc(N)|0)!=100){m=0;o=1;U=l;break}C=Nc(N,0)|0;if((c[V>>2]|0)>0){D=((C|0)<0)<<31>>31;B=0;do{c[O>>2]=0;c[O+4>>2]=0;c[O+8>>2]=0;c[E>>2]=19;m=$;h=m+56|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(h|0));m=Xp(f,C,B,-2,0,0,0,1,$)|0;do if(!m){c[F>>2]=O;m=eq(f,$,0,0)|0;if(m|0){v=0;o=0;break}m=gq(f,$)|0;if((m|0)!=100){v=0;o=0;break}h=0;o=0;do{t=c[I>>2]|0;s=c[J>>2]|0;A=t+s|0;p=a[t>>0]|0;m=p&255;do if(!(m&128)){q=1;m=p&255;r=0}else{U=d[t+1>>0]|0;m=U<<7|m&127;if(!(U&128)){q=2;r=0;break}U=d[t+2>>0]|0;m=U<<14|m&16383;if(!(U&128)){q=3;r=0;break}U=d[t+3>>0]|0;m=U<<21|m&2097151;if(!(U&128)){q=4;r=0;break}p=28;q=t+4|0;m=m&268435455;r=0;do{U=q;q=q+1|0;U=d[U>>0]|0;T=cw(U&127|0,0,p|0)|0;m=Sv(T|0,L()|0,m|0,r|0)|0;r=L()|0;p=p+7|0}while(p>>>0<64&((U&128|0)!=0|0!=0));q=q-t|0}while(0);if((q|0)<(s|0)){j=c[K>>2]|0;i=c[M>>2]|0;z=(i|0)>0;y=t+q|0;p=0;w=0;x=0;while(1){s=a[y>>0]|0;q=s&255;do if(!(q&128)){v=1;u=0;t=s&255}else{U=d[y+1>>0]|0;q=U<<7|q&127;if(!(U&128)){v=2;u=0;t=q;break}U=d[y+2>>0]|0;q=U<<14|q&16383;if(!(U&128)){v=3;u=0;t=q;break}U=d[y+3>>0]|0;t=U<<21|q&2097151;if(!(U&128)){v=4;u=0;break}q=28;s=y+4|0;t=t&268435455;u=0;do{U=s;s=s+1|0;U=d[U>>0]|0;T=cw(U&127|0,0,q|0)|0;t=Sv(T|0,L()|0,t|0,u|0)|0;u=L()|0;q=q+7|0}while(q>>>0<64&((U&128|0)!=0|0!=0));v=s-y|0}while(0);y=y+v|0;do if(y>>>0>>0){if(!(u>>>0<0|(u|0)==0&t>>>0<2)){v=Sv(w|0,x|0,-2,-1)|0;u=Sv(v|0,L()|0,t|0,u|0)|0;v=L()|0;q=cw(m|0,r|0,3)|0;T=L()|0;U=Sv(m|0,r|0,C|0,D|0)|0;T=Sv(U|0,L()|0,q|0,T|0)|0;q=L()|0;U=cw(T|0,q|0,3)|0;s=L()|0;q=Sv(T|0,q|0,B|0,0)|0;s=Sv(q|0,L()|0,U|0,s|0)|0;U=L()|0;q=cw(s|0,U|0,3)|0;T=L()|0;U=Sv(s|0,U|0,p|0,((p|0)<0)<<31>>31|0)|0;T=Sv(U|0,L()|0,q|0,T|0)|0;q=L()|0;U=aw(0,u|0,32)|0;s=L()|0;q=Yv(T|0,q|0,9,0)|0;q=Sv(U|0,s|0,q|0,L()|0)|0;s=L()|0;if(z){t=0;do{U=a[j+t>>0]|0;q=Yv(q|0,s|0,9,0)|0;q=Sv(q|0,L()|0,U|0,((U|0)<0)<<31>>31|0)|0;s=L()|0;t=t+1|0}while((t|0)!=(i|0))}t=y;h=q^h;o=s^o;s=u;q=v;break}s=a[y>>0]|0;p=s&255;q=(p&128|0)==0;if(!((t|0)==0&(u|0)==0)){do if(q)q=1;else{U=d[y+1>>0]|0;p=U<<7|p&127;if(!(U&128)){q=2;break}U=d[y+2>>0]|0;p=U<<14|p&16383;if(!(U&128)){q=3;break}U=d[y+3>>0]|0;p=U<<21|p&2097151;if(!(U&128)){q=4;break}s=28;t=y+4|0;p=p&268435455;q=0;do{U=t;t=t+1|0;U=d[U>>0]|0;T=cw(U&127|0,0,s|0)|0;p=Sv(T|0,L()|0,p|0,q|0)|0;q=L()|0;s=s+7|0}while(s>>>0<64&((U&128|0)!=0|0!=0));q=t-y|0}while(0);t=y+q|0;s=0;q=0;break}do if(q){t=1;p=s&255;q=0}else{U=d[y+1>>0]|0;p=U<<7|p&127;if(!(U&128)){t=2;q=0;break}U=d[y+2>>0]|0;p=U<<14|p&16383;if(!(U&128)){t=3;q=0;break}U=d[y+3>>0]|0;p=U<<21|p&2097151;if(!(U&128)){t=4;q=0;break}s=28;t=y+4|0;p=p&268435455;q=0;do{U=t;t=t+1|0;U=d[U>>0]|0;T=cw(U&127|0,0,s|0)|0;p=Sv(T|0,L()|0,p|0,q|0)|0;q=L()|0;s=s+7|0}while(s>>>0<64&((U&128|0)!=0|0!=0));t=t-y|0}while(0);m=Sv(p|0,q|0,m|0,r|0)|0;t=y+t|0;p=0;r=L()|0;s=0;q=0}else{t=y;s=w;q=x}while(0);if(t>>>0>>0){y=t;w=s;x=q}else break}}m=gq(f,$)|0}while((m|0)==100);v=h}else{v=0;o=0}while(0);t=c[G>>2]|0;u=c[$>>2]|0;if((t|0)<=0){if(u|0)aa=213}else{r=0;while(1){s=c[u+(r<<2)>>2]|0;do if(s|0){do if(!(c[s+56>>2]|0)){h=c[s+64>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{aa=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);do if(!(a[s+5>>0]|0)){h=c[s+40>>2]|0;if(!h)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{aa=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);h=c[s+52>>2]|0;i:do if(h|0){p=c[h+20>>2]|0;gc(c[h+16>>2]|0)|0;do if(p|0){if(c[p+480>>2]|0){Xd(p,h);break i}q=h;if((c[p+304>>2]|0)>>>0>q>>>0)break;if((c[p+308>>2]|0)>>>0<=q>>>0)break;aa=p+300|0;c[h>>2]=c[aa>>2];c[aa>>2]=h;break i}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{aa=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{aa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);r=r+1|0;if((r|0)==(t|0)){aa=213;break}}}do if((aa|0)==213){aa=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{U=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-U;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}while(0);h=c[H>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{U=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-U;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);n=v^n;l=o^l;B=B+1|0}while((B|0)<(c[V>>2]|0))}else m=0;if(m){o=0;U=l;break}}do if(k){k=c[N>>2]|0;T=N+136|0;S=c[T+4>>2]|0;if((S|0)>0|(S|0)==0&(c[T>>2]|0)>>>0>0)hc(k,N);l=kc(N)|0;c[N+20>>2]=770837923;c[N+36>>2]=-1;c[N+40>>2]=0;a[N+146>>0]=2;c[N+44>>2]=0;c[N+32>>2]=1;a[N+147>>0]=-1;c[N+48>>2]=0;T=N+64|0;c[T>>2]=0;c[T+4>>2]=0;if((l|0)==3082|(a[k+81>>0]|0)!=0){og(k);h=7;break}else{h=c[k+68>>2]&l;break}}else h=0;while(0);if(o)if(!h){T=f+36|0;m=c[c[T>>2]>>2]|0;c[O>>2]=0;c[Z>>2]=c[f+220>>2];k=Bb(55001,Z)|0;j:do if(!k){h=7;m=0;k=0;l=0}else{h=qd(c[f+12>>2]|0,k,-1,128,0,O,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{S=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}l=c[O>>2]|0;if(h|0){m=0;k=0;break}K=f+44|0;M=f+32|0;N=(l|0)==0;O=l+120|0;P=l+144|0;Q=l+40|0;R=m+20|0;S=f+256|0;J=m+16|0;m=0;k=0;do{if((Gc(l)|0)!=100){h=0;break j}h=Oc(l,0)|0;o=L()|0;if(!(c[K>>2]|0))I=0;else I=Nc(l,(c[_>>2]|0)+1|0)|0;H=Yv(h|0,o|0,9,0)|0;H=Sv(H|0,L()|0,I|0,((I|0)<0)<<31>>31|0)|0;G=L()|0;E=Yv(H|0,G|0,81,0)|0;F=L()|0;G=Yv(H|0,G|0,9,0)|0;H=L()|0;D=0;do{if((D|0)>=(c[_>>2]|0)){h=0;break}C=D;D=D+1|0;if(!(a[(c[M>>2]|0)+C>>0]|0)){k:do if(N)h=29576;else{h=c[O>>2]|0;do if(h|0){if(D>>>0>=(e[P>>1]|0)>>>0)break;h=h+(D*40|0)|0;break k}while(0);h=c[l>>2]|0;c[h+64>>2]=25;Ne(h,25);h=29576}while(0);o=b[h+8>>1]|0;do if((o&514)==514){if((a[h+10>>0]|0)!=1){aa=250;break}q=c[h+16>>2]|0}else aa=250;while(0);do if((aa|0)==250){aa=0;if(o&1){q=0;break}q=Gg(h,1)|0}while(0);if(!N){h=c[l>>2]|0;o=c[Q>>2]|0;if((o|0)==3082|(a[h+81>>0]|0)!=0){og(h);h=7}else h=c[h+68>>2]&o;c[Q>>2]=h}h=Lc(l,D)|0;o=c[T>>2]|0;p=c[o>>2]|0;c[Z>>2]=0;h=Za[c[p+12>>2]&127](o,q,h,Z)|0;l:do if(!h){c[c[Z>>2]>>2]=o;do if((c[p>>2]|0)>0){h=Xa[c[p+24>>2]&255](c[Z>>2]|0,I)|0;if(!h)break;Wa[c[p+16>>2]&127](c[Z>>2]|0)|0;c[Z>>2]=0;o=0;aa=262;break l}while(0);o=c[Z>>2]|0;z=o;A=Sv(E|0,F|0,C|0,0)|0;A=Yv(A|0,L()|0,9,0)|0;B=L()|0;do{c[$>>2]=0;c[W>>2]=0;c[X>>2]=0;c[Y>>2]=0;h=$a[c[R>>2]&127](z,Z,$,W,X,Y)|0;i=(h|0)==0;do if(i){w=c[Z>>2]|0;x=c[$>>2]|0;y=c[Y>>2]|0;j=((y|0)<0)<<31>>31;p=Sv(A|0,B|0,y|0,j|0)|0;q=L()|0;if((x|0)>0){r=0;do{v=a[w+r>>0]|0;p=Yv(p|0,q|0,9,0)|0;p=Sv(p|0,L()|0,v|0,((v|0)<0)<<31>>31|0)|0;q=L()|0;r=r+1|0}while((r|0)!=(x|0))}m=p^m;k=q^k;u=c[V>>2]|0;if((u|0)<=1)break;v=c[S>>2]|0;t=1;do{s=c[v+(t*24|0)>>2]|0;if((s|0)<=(x|0)){q=Sv(G|0,H|0,t|0,0)|0;p=L()|0;r=cw(q|0,p|0,3)|0;da=L()|0;p=Sv(q|0,p|0,C|0,0)|0;da=Sv(p|0,L()|0,r|0,da|0)|0;r=L()|0;p=cw(da|0,r|0,3)|0;q=L()|0;r=Sv(da|0,r|0,y|0,j|0)|0;q=Sv(r|0,L()|0,p|0,q|0)|0;p=L()|0;if((s|0)>0){r=0;do{da=a[w+r>>0]|0;q=Yv(q|0,p|0,9,0)|0;q=Sv(q|0,L()|0,da|0,((da|0)<0)<<31>>31|0)|0;p=L()|0;r=r+1|0}while((r|0)!=(s|0))}m=q^m;k=p^k}t=t+1|0}while((t|0)!=(u|0))}while(0)}while(i)}else{o=c[Z>>2]|0;aa=262}while(0);if((aa|0)==262)aa=0;if(o|0)Wa[c[J>>2]&127](o)|0;h=(h|0)==101?0:h}else h=0}while(!(h|0))}while((h|0)==0)}while(0);gc(l)|0;l=U}else{m=0;l=U;k=0}else{h=m;m=0;l=U;k=0}}k=(h|(n|0)==(m|0)&(l|0)==(k|0)&1|0)==0?267:h;break b}default:{if((h|0)<=6){k=1;break b}o=a[q>>0]|0}}while(0);n=o<<24>>24==0;m:do if(n){k=54973;aa=287}else{da=o&255;k=208+da|0;do if((da|32|0)==109){k=a[q+1>>0]|0;if(!(k<<24>>24)){k=54974;aa=287;break m}da=k&255;k=208+da|0;if((da|32|0)==101){k=a[q+2>>0]|0;if(!(k<<24>>24)){k=54975;aa=287;break m}da=k&255;k=208+da|0;if((da|32|0)==114){k=a[q+3>>0]|0;if(!(k<<24>>24)){k=54976;aa=287;break m}da=k&255;k=208+da|0;if((da|32|0)==103){k=a[q+4>>0]|0;if(!(k<<24>>24)){k=54977;aa=287;break m}k=k&255;if((k|32|0)!=101){m=101;k=208+k|0;break}k=a[q+5>>0]|0;if(!(k<<24>>24)){k=54978;aa=287;break m}if(k<<24>>24==61)break m;else{m=61;k=208+(k&255)|0}}else m=103}else m=114}else m=101}else m=109;while(0);A=d[k>>0]|0;aa=291}while(0);if((aa|0)==287){A=0;m=a[208+(d[k>>0]|0)>>0]|0;aa=291}if((aa|0)==291?(A|0)!=(m&255|0):0){if((h|0)<=10){k=1;break}n:do if(n){k=54980;aa=321}else{da=o&255;k=208+da|0;do if((da|32|0)==97){k=a[q+1>>0]|0;if(!(k<<24>>24)){k=54981;aa=321;break n}da=k&255;k=208+da|0;if((da|32|0)==117){k=a[q+2>>0]|0;if(!(k<<24>>24)){k=54982;aa=321;break n}k=k&255;if((k|32|0)!=116){l=116;k=208+k|0;break}k=a[q+3>>0]|0;if(!(k<<24>>24)){k=54983;aa=321;break n}k=k&255;if((k|32|0)!=111){l=111;k=208+k|0;break}k=a[q+4>>0]|0;if(!(k<<24>>24)){k=54984;aa=321;break n}k=k&255;if((k|32|0)!=109){l=109;k=208+k|0;break}k=a[q+5>>0]|0;if(!(k<<24>>24)){k=54985;aa=321;break n}k=k&255;if((k|32|0)!=101){l=101;k=208+k|0;break}k=a[q+6>>0]|0;if(!(k<<24>>24)){k=54986;aa=321;break n}k=k&255;if((k|32|0)!=114){l=114;k=208+k|0;break}k=a[q+7>>0]|0;if(!(k<<24>>24)){k=54987;aa=321;break n}k=k&255;if((k|32|0)!=103){l=103;k=208+k|0;break}k=a[q+8>>0]|0;if(!(k<<24>>24)){k=54988;aa=321;break n}k=k&255;if((k|32|0)!=101){l=101;k=208+k|0;break}k=a[q+9>>0]|0;if(!(k<<24>>24)){k=54989;aa=321;break n}if(k<<24>>24==61)break n;else{l=61;k=208+(k&255)|0}}else l=117}else l=97;while(0);B=d[k>>0]|0;aa=325}while(0);if((aa|0)==321){B=0;l=a[208+(d[k>>0]|0)>>0]|0;aa=325}if((aa|0)==325?(B|0)!=(l&255|0):0){k=1;break}k=q+10|0;c[$>>2]=0;l=a[k>>0]|0;o:do if(l<<24>>24>47){n=k;k=0;m=l;l=l<<24>>24;while(1){if(!(m<<24>>24<58&(k|0)<214748363))break o;n=n+1|0;k=l+-48+(k*10|0)|0;l=a[n>>0]|0;if(l<<24>>24<=47)break;else{m=l;l=l<<24>>24}}}else k=0;while(0);n=f+48|0;c[n>>2]=(k|0)==1|(k|0)>16?8:k;l=f+233|0;if(!(a[l>>0]|0)){k=c[f+12>>2]|0;da=c[f+20>>2]|0;c[D>>2]=c[f+16>>2];c[D+4>>2]=da;_q($,k,54351,D);k=c[$>>2]|0;if(!k){a[l>>0]=1;aa=333}}else aa=333;do if((aa|0)==333){m=f+148|0;l=c[m>>2]|0;c[O>>2]=l;if(!l){l=c[f+20>>2]|0;c[E>>2]=c[f+16>>2];c[E+4>>2]=l;l=Bb(52453,E)|0;if(!l){c[$>>2]=7;k=7;break}k=qd(c[f+12>>2]|0,l,-1,133,0,O,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{da=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[O>>2]|0;c[m>>2]=l;c[$>>2]=k;if(k)break}else c[$>>2]=0;h=l;do if(!(Vc(h,1)|0)){k=c[h+100>>2]|0;m=k+8|0;if(!(b[m>>1]&9216)){da=k;c[da>>2]=2;c[da+4>>2]=0;b[m>>1]=4;break}else{Pg(k,2,0);break}}while(0);m=c[n>>2]|0;n=((m|0)<0)<<31>>31;if(Vc(h,2)|0){Gc(h)|0;if(!l)k=0;else aa=351}else{l=c[h+100>>2]|0;k=l+40|0;l=l+48|0;if(!(b[l>>1]&9216)){da=k;c[da>>2]=m;c[da+4>>2]=n;b[l>>1]=4}else Pg(k,m,n);Gc(h)|0;aa=351}do if((aa|0)==351){k=c[h>>2]|0;da=h+136|0;_=c[da+4>>2]|0;if((_|0)>0|(_|0)==0&(c[da>>2]|0)>>>0>0)hc(k,h);l=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;da=h+64|0;c[da>>2]=0;c[da+4>>2]=0;if((l|0)==3082|(a[k+81>>0]|0)!=0){og(k);k=7;break}else{k=c[k+68>>2]&l;break}}while(0);c[$>>2]=k}while(0);break}k=q+6|0;m=a[k>>0]|0;p:do if(m<<24>>24>47){l=0;n=m;m=m<<24>>24;while(1){if(!(n<<24>>24<58&(l|0)<214748363)){aa=302;break p}k=k+1|0;l=m+-48+(l*10|0)|0;m=a[k>>0]|0;if(m<<24>>24>47){n=m;m=m<<24>>24}else{aa=296;break}}}else{l=0;aa=296}while(0);q:do if((aa|0)==296){if(m<<24>>24==44){k=k+1|0;n=a[k>>0]|0;if(n<<24>>24<=47){aa=302;break}m=0;h=n;n=n<<24>>24;while(1){if(!(h<<24>>24<58&(m|0)<214748363)){aa=302;break q}k=k+1|0;m=n+-48+(m*10|0)|0;o=a[k>>0]|0;if(o<<24>>24<=47){n=m;k=o;break}else{h=o;n=o<<24>>24}}}else{n=8;k=m}if(k<<24>>24!=0|(n|0)<2)aa=302;else{c[O>>2]=0;m=f+233|0;if(!(a[m>>0]|0)){k=c[f+12>>2]|0;da=c[f+20>>2]|0;c[C>>2]=c[f+16>>2];c[C+4>>2]=da;_q(O,k,54351,C);k=c[O>>2]|0;if(!k){a[m>>0]=1;aa=306}}else aa=306;if((aa|0)==306){k=Or(f,l,n)|0;c[O>>2]=k}l=f+248|0;m=c[l>>2]|0;r:do if(m|0){n=c[m+20>>2]|0;gc(c[m+16>>2]|0)|0;do if(n|0){if(c[n+480>>2]|0){Xd(n,m);break r}h=m;if((c[n+304>>2]|0)>>>0>h>>>0)break;if((c[n+308>>2]|0)>>>0<=h>>>0)break;da=n+300|0;c[m>>2]=c[da>>2];c[da>>2]=m;break r}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{da=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[l>>2]=0}}while(0);if((aa|0)==302){c[O>>2]=1;k=1}}while(0);c[ba>>2]=k;break}k=c[i+(h+4<<2)>>2]|0;l=e[k+8>>1]|0;do if(!(l&4)){if(l&8|0){k=Mg(+g[k>>3])|0;L()|0;break}if(!(l&18)){r=_;aa=444;break a}k=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;L()|0}else k=c[k>>2]|0;while(0);if((k|0)<0)c[ba>>2]=19;else{r=_;aa=444}}else{r=f+24|0;aa=444}while(0);do if((aa|0)==444){t=c[r>>2]|0;t=cw(t|0,((t|0)<0)<<31>>31|0,3)|0;t=Sv(t|0,L()|0,8,0)|0;t=pb(t,L()|0)|0;if(!t){c[ba>>2]=7;break}o=(c[r>>2]|0)+1|0;s=t+(o<<2)|0;gw(t|0,0,o<<3|0)|0;o=f+264|0;s:do if(!(c[o>>2]|0)){m=f+120|0;k=c[m>>2]|0;c[O>>2]=k;do if(!k){l=c[f+20>>2]|0;c[q>>2]=c[f+16>>2];c[q+4>>2]=l;l=Bb(52138,q)|0;if(!l){k=7;break}k=qd(c[f+12>>2]|0,l,-1,133,0,O,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{da=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[O>>2]|0;c[m>>2]=l;if(!k){k=l;aa=455}}else aa=455;while(0);do if((aa|0)==455){m=k;Vc(m,1)|0;Gc(m)|0;if(!k){aa=461;break s}k=c[m>>2]|0;da=m+136|0;$=c[da+4>>2]|0;if(($|0)>0|($|0)==0&(c[da>>2]|0)>>>0>0)hc(k,m);l=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;da=m+64|0;c[da>>2]=0;c[da+4>>2]=0;if(!((l|0)==3082|(a[k+81>>0]|0)!=0)){da=c[k+68>>2]&l;c[ba>>2]=da;if(!da){aa=463;break s}else break s}else{og(k);k=7;break}}while(0);c[ba>>2]=k}else aa=461;while(0);if((aa|0)==461){c[ba>>2]=0;aa=463}t:do if((aa|0)==463){do if(x?(c[f+40>>2]|0)==0:0){k=c[i+((c[r>>2]|0)+3<<2)>>2]|0;n=k+8|0;l=b[n>>1]|0;m=-1431655766>>>(l&31);if(m&1){k=c[i+4>>2]|0;n=k+8|0;l=b[n>>1]|0;m=-1431655766>>>(l&31)}if(!(m&1)){h=c[i>>2]|0;m=b[h+8>>1]|0;if(!(-1431655766>>>(m&31)&1)){m=m&65535;do if(!(m&4)){if(m&8|0){n=Mg(+g[h>>3])|0;h=L()|0;break}if(!(m&18)){n=0;h=0}else{da=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;h=L()|0;l=b[n>>1]|0;n=da}}else{n=c[h>>2]|0;h=c[h+4>>2]|0}while(0);l=l&65535;do if(!(l&4)){if(l&8|0){l=Mg(+g[k>>3])|0;m=L()|0;break}if(!(l&18)){l=0;m=0}else{l=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;m=L()|0}}else{m=k;l=c[m>>2]|0;m=c[m+4>>2]|0}while(0);if((n|0)==(l|0)&(h|0)==(m|0)){m=0;break}}if((a[(c[f+12>>2]|0)+86>>0]|0)==5){l=0;k=zr(f,k,z,t)|0}else{l=1;k=Ar(f,i,j)|0}c[ba>>2]=k;if(!k)m=l;else break t}else m=0}else m=0;while(0);k=c[i>>2]|0;if(!(-1431655766>>>(b[k+8>>1]&31)&1)){k=zr(f,k,z,t)|0;c[ba>>2]=k}else k=0;if(x&(k|0)==0){k=c[i+((c[r>>2]|0)+4<<2)>>2]|0;l=e[k+8>>1]|0;do if(!(l&4)){if(l&8|0){p=Mg(+g[k>>3])|0;L()|0;break}if(!(l&18))p=0;else{p=Ng(a[k+10>>0]|0,c[k+12>>2]|0,c[k+16>>2]|0)|0;L()|0}}else p=c[k>>2]|0;while(0);u:do if(!m){da=Ar(f,i,j)|0;c[ba>>2]=da;switch(da|0){case 0:{aa=499;break u}case 19:break;default:break u}if(!(c[f+40>>2]|0))c[ba>>2]=267}else aa=499;while(0);v:do if((aa|0)==499){n=j;m=c[n>>2]|0;n=c[n+4>>2]|0;h=f+272|0;l=h;k=c[l>>2]|0;l=c[l+4>>2]|0;do if(!((l|0)>(n|0)|(l|0)==(n|0)&k>>>0>m>>>0)){if((k|0)==(m|0)&(l|0)==(n|0)?(c[f+284>>2]|0)==0:0){aa=504;break}k=f+280|0;if(!((c[k>>2]|0)==(p|0)?(c[o>>2]|0)<=(c[f+260>>2]|0):0))aa=504}else aa=504;while(0);do if((aa|0)==504){k=Sr(f)|0;if(!k){k=f+280|0;break}else{c[ba>>2]=k;break v}}while(0);da=h;c[da>>2]=m;c[da+4>>2]=n;c[k>>2]=p;c[f+284>>2]=0;c[ba>>2]=0;k=c[r>>2]|0;w:do if((k|0)>0){o=f+32|0;h=2;while(1){m=h+-2|0;if(!(a[(c[o>>2]|0)+m>>0]|0)){n=i+(h<<2)|0;k=c[n>>2]|0;x:do if(!k)k=0;else{l=b[k+8>>1]|0;do if((l&514)==514){if((a[k+10>>0]|0)!=1)break;k=c[k+16>>2]|0;break x}while(0);if(l&1){k=0;break}k=Gg(k,1)|0}while(0);k=Mr(f,p,k,m,s+(m<<2)|0)|0;if(k|0)break w;m=c[n>>2]|0;k=b[m+8>>1]|0;do if(!(k&2))aa=520;else{if((a[m+10>>0]|0)!=1){aa=520;break}k=c[m+12>>2]|0}while(0);do if((aa|0)==520){aa=0;l=k&65535;if(!(l&16)){if(l&1|0){k=0;break}k=Fg(m,1)|0;break}else{k=c[m+12>>2]|0;if(!(l&16384))break;k=(c[m>>2]|0)+k|0;break}}while(0);da=s+(c[r>>2]<<2)|0;c[da>>2]=(c[da>>2]|0)+k;k=c[r>>2]|0}if((h|0)>(k|0)){k=0;break}else h=h+1|0}}else k=0;while(0);c[ba>>2]=k}while(0);if(a[f+234>>0]|0)Br(ba,f,s);c[z>>2]=(c[z>>2]|0)+1}if(a[f+232>>0]|0)Cr(ba,f,s,t,c[z>>2]|0)}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{da=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);k=f+248|0;l=c[k>>2]|0;if(!l){c[k>>2]=0;da=c[ba>>2]|0;Ra=ca;return da|0}m=c[l+20>>2]|0;gc(c[l+16>>2]|0)|0;if(m|0){if(c[m+480>>2]|0){Xd(m,l);c[k>>2]=0;da=c[ba>>2]|0;Ra=ca;return da|0}da=l;if((c[m+304>>2]|0)>>>0<=da>>>0?(c[m+308>>2]|0)>>>0>da>>>0:0){da=m+300|0;c[l>>2]=c[da>>2];c[da>>2]=l;c[k>>2]=0;da=c[ba>>2]|0;Ra=ca;return da|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);c[k>>2]=0;da=c[ba>>2]|0;Ra=ca;return da|0}else{da=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);c[k>>2]=0;da=c[ba>>2]|0;Ra=ca;return da|0}return 0}function Nq(b){b=b|0;var d=0,e=0,f=0,g=0;g=Ra;Ra=Ra+16|0;d=g;c[b+52>>2]=0;f=b+233|0;if((a[f>>0]|0)!=2){f=0;Ra=g;return f|0}c[d>>2]=c[b+20>>2];e=Bb(55011,d)|0;if(!e){f=7;Ra=g;return f|0}d=Rd(c[b+12>>2]|0,c[b+16>>2]|0,e,0,0,0,0,0,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{b=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}a[f>>0]=(d|0)==0&1;f=0;Ra=g;return f|0}function Oq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;d=o;f=o+8|0;m=b+12|0;l=(c[m>>2]|0)+40|0;n=c[l>>2]|0;l=c[l+4>>2]|0;g=Sr(b)|0;a:do if(!g){j=b+52|0;if((c[j>>2]|0)>>>0>4){k=b+48|0;switch(c[k>>2]|0){case 255:case 0:{g=0;break a}default:{}}h=b+200|0;e=c[h>>2]|0;c[f>>2]=e;do if(!e){g=c[b+20>>2]|0;c[d>>2]=c[b+16>>2];c[d+4>>2]=g;d=Bb(53253,d)|0;if(!d){g=7;d=0;break}g=qd(c[m>>2]|0,d,-1,133,0,f,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](d);else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d)}d=c[f>>2]|0;c[h>>2]=d;if(!g){e=d;i=12}else d=0}else i=12;while(0);do if((i|0)==12){g=e;if((Gc(g)|0)==100)d=Nc(g,0)|0;else d=0;if(e){e=c[g>>2]|0;i=g+136|0;h=c[i+4>>2]|0;if((h|0)>0|(h|0)==0&(c[i>>2]|0)>>>0>0)hc(e,g);f=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;i=g+64|0;c[i>>2]=0;c[i+4>>2]=0;if((f|0)==3082|(a[e+81>>0]|0)!=0){og(e);g=7;break}else{g=c[e+68>>2]&f;break}}else g=0}while(0);d=G(c[j>>2]|0,d)|0;d=((d|0)/2|0)+d|0;if((d|0)>64)g=Or(b,d,c[k>>2]|0)|0}else g=0}while(0);d=b+248|0;e=c[d>>2]|0;do if(e|0){f=c[e+20>>2]|0;gc(c[e+16>>2]|0)|0;if(f|0){if(c[f+480>>2]|0){Xd(f,e);break}b=e;if((c[f+304>>2]|0)>>>0<=b>>>0?(c[f+308>>2]|0)>>>0>b>>>0:0){b=f+300|0;c[e>>2]=c[b>>2];c[b>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{b=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);c[d>>2]=0;m=(c[m>>2]|0)+40|0;c[m>>2]=n;c[m+4>>2]=l;Ra=o;return g|0}function Pq(a){a=a|0;return 0}function Qq(a){a=a|0;Fr(a);return 0}function Rq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(Bu(d,51022)|0)if(Bu(d,51030)|0)if(Bu(d,37598)|0)if(!(Bu(d,51038)|0))a=3;else{e=0;return e|0}else a=2;else a=1;else a=0;c[e>>2]=c[26368+(a<<3)+4>>2];e=1;return e|0}function Sq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+96|0;p=q+72|0;o=q+56|0;l=q+40|0;j=q+24|0;i=q+8|0;e=q;m=q+84|0;g=b+12|0;n=c[g>>2]|0;k=b+233|0;if((a[k>>0]|0)==2){c[e>>2]=c[b+20>>2];f=Bb(55011,e)|0;if(!f)e=7;else{e=Rd(c[g>>2]|0,c[b+16>>2]|0,f,0,0,0,0,0,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{h=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}a[k>>0]=(e|0)==0&1;h=7}}else h=7;if((h|0)==7){c[m>>2]=0;e=Sr(b)|0}c[m>>2]=e;if(!(c[b+40>>2]|0)){h=c[b+20>>2]|0;c[i>>2]=c[b+16>>2];c[i+4>>2]=h;c[i+8>>2]=d;_q(m,n,55251,i)}if(a[b+234>>0]|0){i=c[b+20>>2]|0;c[j>>2]=c[b+16>>2];c[j+4>>2]=i;c[j+8>>2]=d;_q(m,n,55304,j)}f=b+16|0;if(!(a[k>>0]|0))e=b+20|0;else{e=b+20|0;k=c[e>>2]|0;c[l>>2]=c[f>>2];c[l+4>>2]=k;c[l+8>>2]=d;_q(m,n,55357,l)}l=c[e>>2]|0;c[o>>2]=c[f>>2];c[o+4>>2]=l;c[o+8>>2]=d;_q(m,n,55404,o);o=c[e>>2]|0;c[p>>2]=c[f>>2];c[p+4>>2]=o;c[p+8>>2]=d;_q(m,n,55458,p);Ra=q;return c[m>>2]|0}function Tq(b,c){b=b|0;c=c|0;if(a[b+236>>0]|0){c=0;return c|0}c=Oq(b)|0;return c|0}function Uq(a,b){a=a|0;b=b|0;return 0}function Vq(a,b){a=a|0;b=b|0;Fr(a);return 0}function Wq(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0;if(!b){i=0;return i|0}i=a[b>>0]|0;g=d[208+(i&255)>>0]|0;c=g+-99|0;i=i<<24>>24==0;if(!(i|(c|0)!=0)){e=53664;f=b;do{f=f+1|0;e=e+1|0;h=a[f>>0]|0;c=(d[208+(h&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(h<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}c=g+-100|0;if(!(i|(c|0)!=0)){e=55510;f=b;do{f=f+1|0;e=e+1|0;h=a[f>>0]|0;c=(d[208+(h&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(h<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}h=g+-115|0;g=i|(h|0)!=0;if(g)c=h;else{e=55518;f=b;do{f=f+1|0;e=e+1|0;i=a[f>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}if(g)c=h;else{e=55525;f=b;do{f=f+1|0;e=e+1|0;i=a[f>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0))}if(!c){i=1;return i|0}if(g){i=h;i=(i|0)==0;i=i&1;return i|0}e=31715;do{b=b+1|0;e=e+1|0;i=a[b>>0]|0;c=(d[208+(i&255)>>0]|0)-(d[208+(d[e>>0]|0)>>0]|0)|0}while(!(i<<24>>24==0|(c|0)!=0));i=(c|0)==0;i=i&1;return i|0}function Xq(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0;Ia=Ra;Ra=Ra+320|0;Fa=Ia+296|0;Da=Ia+288|0;Ca=Ia+280|0;Ba=Ia+272|0;za=Ia+264|0;xa=Ia+256|0;wa=Ia+248|0;va=Ia+240|0;ua=Ia+232|0;ta=Ia+216|0;sa=Ia+200|0;ra=Ia+192|0;qa=Ia+176|0;pa=Ia+168|0;oa=Ia+160|0;na=Ia+152|0;Aa=Ia+144|0;ma=Ia+128|0;ha=Ia+120|0;ga=Ia+112|0;fa=Ia+104|0;ka=Ia+96|0;ja=Ia+80|0;ia=Ia+72|0;ea=Ia+64|0;da=Ia+56|0;W=Ia+48|0;R=Ia+40|0;O=Ia+32|0;Q=Ia+24|0;P=Ia+16|0;N=Ia+8|0;M=Ia;la=Ia+316|0;Ha=Ia+312|0;Ga=Ia+308|0;c[Ha>>2]=0;ya=(a[(c[j>>2]|0)+3>>0]|0)==52;c[Ga>>2]=0;_=j+4|0;X=Eu(c[_>>2]|0)|0;$=X+1|0;Y=j+8|0;Z=(Eu(c[Y>>2]|0)|0)+1|0;o=(i<<2)+-8|0;n=pb(o,0)|0;if((n|0)!=0?(gw(n|0,0,o|0)|0,m=pb(o,0)|0,(m|0)!=0):0){gw(m|0,0,o|0)|0;a:do if((i|0)>3){w=3;y=0;v=0;t=0;s=0;r=0;q=0;u=0;F=0;x=0;p=0;o=0;while(1){H=c[j+(w<<2)>>2]|0;do if((o|0)==0?!((H|0)==0|(Eu(H)|0)>>>0<9):0){o=a[H>>0]|0;b:do if(!(o<<24>>24)){o=53622;Ea=9}else{I=o&255;o=208+I|0;do if((I|32|0)==116){o=a[H+1>>0]|0;if(!(o<<24>>24)){o=53623;Ea=9;break b}I=o&255;o=208+I|0;if((I|32|0)==111){o=a[H+2>>0]|0;if(!(o<<24>>24)){o=53624;Ea=9;break b}I=o&255;o=208+I|0;if((I|32|0)==107){o=a[H+3>>0]|0;if(!(o<<24>>24)){o=53625;Ea=9;break b}I=o&255;o=208+I|0;if((I|32|0)==101){o=a[H+4>>0]|0;if(!(o<<24>>24)){o=53626;Ea=9;break b}o=o&255;if((o|32|0)!=110){z=110;o=208+o|0;break}o=a[H+5>>0]|0;if(!(o<<24>>24)){o=53627;Ea=9;break b}o=o&255;if((o|32|0)!=105){z=105;o=208+o|0;break}o=a[H+6>>0]|0;if(!(o<<24>>24)){o=53628;Ea=9;break b}o=o&255;if((o|32|0)!=122){z=122;o=208+o|0;break}o=a[H+7>>0]|0;if(!(o<<24>>24)){o=53629;Ea=9;break b}o=o&255;if((o|32|0)==101)break b;else{z=101;o=208+o|0}}else z=101}else z=107}else z=111}else z=116;while(0);K=d[o>>0]|0;J=z;Ea=13}while(0);if((Ea|0)==9){K=0;J=a[208+(d[o>>0]|0)>>0]|0;Ea=13}if((Ea|0)==13?(Ea=0,(K|0)!=(J&255|0)):0){Ea=17;break}I=a[H+8>>0]|0;if((I&128|0)==0?(a[26208+I>>0]|0)==0:0){E=Yq(h,H+9|0,Ga,l)|0;c[Ha>>2]=E;E=y}else Ea=17}else Ea=17;while(0);c:do if((Ea|0)==17){Ea=0;d:do if(ya){o=H;e:while(1){switch(a[o>>0]|0){case 0:break d;case 61:break e;default:{}}o=o+1|0}E=o-H|0;c[M>>2]=o+1;I=Bb(31408,M)|0;if(!I){c[Ha>>2]=7;E=y;break c}o=a[I>>0]|0;switch(o<<24>>24){case 34:case 39:case 91:case 96:{C=o<<24>>24==91?93:o;z=a[I+1>>0]|0;f:do if(!(z<<24>>24))o=0;else{A=1;o=0;do{B=A+1|0;if(z<<24>>24==C<<24>>24){if((a[I+B>>0]|0)!=C<<24>>24)break f;a[I+o>>0]=C;A=A+2|0}else{a[I+o>>0]=z;A=B}o=o+1|0;z=a[I+A>>0]|0}while(z<<24>>24!=0)}while(0);a[I+o>>0]=0;break}default:{}}G=I;g:do if(!H)o=8;else{switch(E|0){case 9:{A=H;C=51038;B=E;while(1){o=a[A>>0]|0;if(!(o<<24>>24)){Ea=36;break}z=a[208+(o&255)>>0]|0;o=a[208+(d[C>>0]|0)>>0]|0;if(z<<24>>24!=o<<24>>24){Ea=38;break}if((B|0)>1){A=A+1|0;C=C+1|0;B=B+-1|0}else{o=0;break g}}if((Ea|0)==36){Ea=0;z=0;o=a[208+(d[C>>0]|0)>>0]|0}else if((Ea|0)==38){Ea=0;z=z&255}if((z|0)==(o&255|0)){o=0;break g}switch(E|0){case 6:{Ea=42;break}case 8:{o=E;Ea=415;break}default:{}}break}case 6:{Ea=42;break}case 8:{o=E;Ea=415;break}default:{}}if((Ea|0)==42){Ea=0;A=H;C=53631;B=E;while(1){o=a[A>>0]|0;if(!(o<<24>>24)){Ea=412;break}z=a[208+(o&255)>>0]|0;o=a[208+(d[C>>0]|0)>>0]|0;if(z<<24>>24!=o<<24>>24){Ea=410;break}if((B|0)>1){A=A+1|0;C=C+1|0;B=B+-1|0}else{o=1;break g}}if((Ea|0)==410){Ea=0;z=z&255}else if((Ea|0)==412){Ea=0;z=0;o=a[208+(d[C>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=1;break}if((E|0)==8){o=8;Ea=415}}if((Ea|0)==415){Ea=0;B=H;C=53638;A=o;while(1){o=a[B>>0]|0;if(!(o<<24>>24)){Ea=420;break}z=a[208+(o&255)>>0]|0;o=a[208+(d[C>>0]|0)>>0]|0;if(z<<24>>24!=o<<24>>24){Ea=418;break}if((A|0)>1){B=B+1|0;C=C+1|0;A=A+-1|0}else{o=2;break g}}if((Ea|0)==418){Ea=0;z=z&255}else if((Ea|0)==420){Ea=0;z=0;o=a[208+(d[C>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=2;break}}D=(E|0)==10;if(D){o=a[H>>0]|0;h:do if(!(o<<24>>24)){o=53647;Ea=427}else{C=o&255;o=208+C|0;do if((C|32|0)==117){o=a[H+1>>0]|0;if(!(o<<24>>24)){o=53648;Ea=427;break h}o=o&255;if((o|32|0)!=110){A=110;o=208+o|0;break}o=a[H+2>>0]|0;if(!(o<<24>>24)){o=53649;Ea=427;break h}o=o&255;if((o|32|0)!=99){A=99;o=208+o|0;break}o=a[H+3>>0]|0;if(!(o<<24>>24)){o=53650;Ea=427;break h}o=o&255;if((o|32|0)!=111){A=111;o=208+o|0;break}o=a[H+4>>0]|0;if(!(o<<24>>24)){o=53651;Ea=427;break h}o=o&255;if((o|32|0)!=109){A=109;o=208+o|0;break}o=a[H+5>>0]|0;if(!(o<<24>>24)){o=53652;Ea=427;break h}o=o&255;if((o|32|0)!=112){A=112;o=208+o|0;break}o=a[H+6>>0]|0;if(!(o<<24>>24)){o=53653;Ea=427;break h}o=o&255;if((o|32|0)!=114){A=114;o=208+o|0;break}o=a[H+7>>0]|0;if(!(o<<24>>24)){o=53654;Ea=427;break h}o=o&255;if((o|32|0)!=101){A=101;o=208+o|0;break}o=a[H+8>>0]|0;if(!(o<<24>>24)){o=53655;Ea=427;break h}o=o&255;if((o|32|0)!=115){A=115;o=208+o|0;break}o=a[H+9>>0]|0;if(!(o<<24>>24)){o=53656;Ea=427;break h}o=o&255;if((o|32|0)==115){o=3;break g}else{A=115;o=208+o|0}}else A=117;while(0);z=d[o>>0]|0;o=A}while(0);if((Ea|0)==427){Ea=0;z=0;o=a[208+(d[o>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=3;break}}switch(E|0){case 5:{A=H;C=53658;B=E;while(1){o=a[A>>0]|0;if(!(o<<24>>24)){Ea=435;break}z=a[208+(o&255)>>0]|0;o=a[208+(d[C>>0]|0)>>0]|0;if(z<<24>>24!=o<<24>>24){Ea=433;break}if((B|0)>1){A=A+1|0;C=C+1|0;B=B+-1|0}else{o=4;break g}}if((Ea|0)==433){Ea=0;z=z&255}else if((Ea|0)==435){Ea=0;z=0;o=a[208+(d[C>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=4;break g}if((E|0)==7){o=7;Ea=438}break}case 7:{o=E;Ea=438;break}default:{}}if((Ea|0)==438){Ea=0;B=H;C=53664;A=o;while(1){o=a[B>>0]|0;if(!(o<<24>>24)){Ea=443;break}z=a[208+(o&255)>>0]|0;o=a[208+(d[C>>0]|0)>>0]|0;if(z<<24>>24!=o<<24>>24){Ea=441;break}if((A|0)>1){B=B+1|0;C=C+1|0;A=A+-1|0}else{o=5;break g}}if((Ea|0)==441){Ea=0;z=z&255}else if((Ea|0)==443){Ea=0;z=0;o=a[208+(d[C>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=5;break}}if(D){o=a[H>>0]|0;i:do if(!(o<<24>>24)){o=53672;Ea=450}else{E=o&255;o=208+E|0;do if((E|32|0)==108){o=a[H+1>>0]|0;if(!(o<<24>>24)){o=53673;Ea=450;break i}o=o&255;if((o|32|0)!=97){A=97;o=208+o|0;break}o=a[H+2>>0]|0;if(!(o<<24>>24)){o=53674;Ea=450;break i}o=o&255;if((o|32|0)!=110){A=110;o=208+o|0;break}o=a[H+3>>0]|0;if(!(o<<24>>24)){o=53675;Ea=450;break i}o=o&255;if((o|32|0)!=103){A=103;o=208+o|0;break}o=a[H+4>>0]|0;if(!(o<<24>>24)){o=53676;Ea=450;break i}o=o&255;if((o|32|0)!=117){A=117;o=208+o|0;break}o=a[H+5>>0]|0;if(!(o<<24>>24)){o=53677;Ea=450;break i}o=o&255;if((o|32|0)!=97){A=97;o=208+o|0;break}o=a[H+6>>0]|0;if(!(o<<24>>24)){o=53678;Ea=450;break i}o=o&255;if((o|32|0)!=103){A=103;o=208+o|0;break}o=a[H+7>>0]|0;if(!(o<<24>>24)){o=53679;Ea=450;break i}o=o&255;if((o|32|0)!=101){A=101;o=208+o|0;break}o=a[H+8>>0]|0;if(!(o<<24>>24)){o=53680;Ea=450;break i}o=o&255;if((o|32|0)!=105){A=105;o=208+o|0;break}o=a[H+9>>0]|0;if(!(o<<24>>24)){o=53681;Ea=450;break i}o=o&255;if((o|32|0)==100){o=6;break g}else{A=100;o=208+o|0}}else A=108;while(0);z=d[o>>0]|0;o=A}while(0);if((Ea|0)==450){Ea=0;z=0;o=a[208+(d[o>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=6;break}if(D){o=a[H>>0]|0;j:do if(!(o<<24>>24)){o=53683;Ea=457}else{E=o&255;o=208+E|0;do if((E|32|0)==110){o=a[H+1>>0]|0;if(!(o<<24>>24)){o=53684;Ea=457;break j}o=o&255;if((o|32|0)!=111){A=111;o=208+o|0;break}o=a[H+2>>0]|0;if(!(o<<24>>24)){o=53685;Ea=457;break j}o=o&255;if((o|32|0)!=116){A=116;o=208+o|0;break}o=a[H+3>>0]|0;if(!(o<<24>>24)){o=53686;Ea=457;break j}o=o&255;if((o|32|0)!=105){A=105;o=208+o|0;break}o=a[H+4>>0]|0;if(!(o<<24>>24)){o=53687;Ea=457;break j}o=o&255;if((o|32|0)!=110){A=110;o=208+o|0;break}o=a[H+5>>0]|0;if(!(o<<24>>24)){o=53688;Ea=457;break j}o=o&255;if((o|32|0)!=100){A=100;o=208+o|0;break}o=a[H+6>>0]|0;if(!(o<<24>>24)){o=53689;Ea=457;break j}o=o&255;if((o|32|0)!=101){A=101;o=208+o|0;break}o=a[H+7>>0]|0;if(!(o<<24>>24)){o=53690;Ea=457;break j}o=o&255;if((o|32|0)!=120){A=120;o=208+o|0;break}o=a[H+8>>0]|0;if(!(o<<24>>24)){o=53691;Ea=457;break j}o=o&255;if((o|32|0)!=101){A=101;o=208+o|0;break}o=a[H+9>>0]|0;if(!(o<<24>>24)){o=53692;Ea=457;break j}o=o&255;if((o|32|0)==100){o=7;break g}else{A=100;o=208+o|0}}else A=110;while(0);z=d[o>>0]|0;o=A}while(0);if((Ea|0)==457){Ea=0;z=0;o=a[208+(d[o>>0]|0)>>0]|0}if((z|0)==(o&255|0)){o=7;break}}}o=8}while(0);k:do switch(o&15){case 0:{if((Eu(I)|0)==4){o=a[I>>0]|0;l:do if(!(o<<24>>24)){o=51048;Ea=46}else{H=o&255;o=208+H|0;do if((H|32|0)==102){o=a[I+1>>0]|0;if(!(o<<24>>24)){o=51049;Ea=46;break l}o=o&255;if((o|32|0)!=116){z=116;o=208+o|0;break}o=a[I+2>>0]|0;if(!(o<<24>>24)){o=51050;Ea=46;break l}o=o&255;if((o|32|0)!=115){z=115;o=208+o|0;break}o=a[I+3>>0]|0;if(!(o<<24>>24)){o=51051;Ea=46;break l}if(o<<24>>24==51){y=1;o=F;break k}else{z=51;o=208+(o&255)|0}}else z=102;while(0);y=d[o>>0]|0;o=z}while(0);if((Ea|0)==46){Ea=0;y=0;o=a[208+(d[o>>0]|0)>>0]|0}if((y|0)==(o&255|0)){y=1;o=F;break k}}c[N>>2]=I;Wp(l,53694,N);c[Ha>>2]=1;y=1;o=F;break}case 1:{if(!u){E=y;u=I;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](u);E=y;u=I;break c}else{E=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);E=y;u=I;break c}}case 2:{if(!q){E=y;q=I;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);E=y;q=I;break c}else{E=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);E=y;q=I;break c}}case 3:{if(!r){E=y;r=I;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);E=y;r=I;break c}else{E=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);E=y;r=I;break c}}case 4:{m:do switch(Eu(I)|0){case 3:{B=a[I>>0]|0;do if(!(B<<24>>24)){o=53721;Ea=66}else{H=B&255;o=208+H|0;if((H|32|0)==97){o=a[I+1>>0]|0;if(!(o<<24>>24)){o=53722;Ea=66;break}H=o&255;o=208+H|0;if((H|32|0)==115){o=a[I+2>>0]|0;if(!(o<<24>>24)){o=53723;Ea=66;break}o=o&255;if((o|32|0)==99){o=B;break m}else{A=99;o=208+o|0}}else A=115}else A=97;z=d[o>>0]|0;o=A}while(0);if((Ea|0)==66){Ea=0;z=0;o=a[208+(d[o>>0]|0)>>0]|0}if((z|0)==(o&255|0))o=B;else Ea=77;break}case 4:{B=a[I>>0]|0;n:do if(!(B<<24>>24)){o=38073;Ea=72}else{H=B&255;o=208+H|0;do if((H|32|0)==100){o=a[I+1>>0]|0;if(!(o<<24>>24)){o=38074;Ea=72;break n}H=o&255;o=208+H|0;if((H|32|0)==101){o=a[I+2>>0]|0;if(!(o<<24>>24)){o=38075;Ea=72;break n}o=o&255;if((o|32|0)!=115){A=115;o=208+o|0;break}o=a[I+3>>0]|0;if(!(o<<24>>24)){o=38076;Ea=72;break n}o=o&255;if((o|32|0)==99){o=B;break m}else{A=99;o=208+o|0}}else A=101}else A=100;while(0);z=d[o>>0]|0;o=A}while(0);if((Ea|0)==72){Ea=0;z=0;o=a[208+(d[o>>0]|0)>>0]|0}if((z|0)==(o&255|0))o=B;else Ea=77;break}default:Ea=77}while(0);if((Ea|0)==77){Ea=0;c[P>>2]=I;Wp(l,53725,P);c[Ha>>2]=1;o=a[I>>0]|0}o=(o|32)<<24>>24==100&1;break}case 5:{if(!s){E=y;s=I;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](s);E=y;s=I;break c}else{E=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);E=y;s=I;break c}}case 6:{if(!t){E=y;t=I;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](t);E=y;t=I;break c}else{E=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);E=y;t=I;break c}}case 7:{c[m+(v<<2)>>2]=G;E=y;v=v+1|0;break c}default:{c[Q>>2]=H;Wp(l,53748,Q);c[Ha>>2]=1;o=F}}while(0);if(!I){E=y;F=o;break c}if(!(c[7324]|0)){ab[c[29344>>2]&127](I);E=y;F=o;break c}else{E=Wa[c[29352>>2]&127](I)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](I);E=y;F=o;break c}}while(0);p=p+1+(Eu(H)|0)|0;c[n+(x<<2)>>2]=H;x=x+1|0;E=y}while(0);w=w+1|0;o=c[Ha>>2]|0;y=(o|0)==0;if(!((w|0)<(i|0)&y))break;y=E;o=c[Ga>>2]|0}o:do if((s|0)!=0&y){do if(q|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{Q=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);do if(r|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{Q=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}while(0);if(x|0){w=n;r=0;q=0;o=c[Ha>>2]|0;Ea=162;break}if(!(c[7324]|0))ab[c[29344>>2]&127](n);else{Q=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n)}o=c[_>>2]|0;c[la>>2]=0;c[O>>2]=o;c[O+4>>2]=s;o=Bb(53869,O)|0;if(o){n=qd(g,o,-1,0,0,la,0)|0;p=(n|0)==0;if(!p){Q=pd(g)|0;c[R>>2]=Q;Wp(l,31408,R)}if(!(c[7324]|0))ab[c[29344>>2]&127](o);else{R=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o)}if(p){C=c[la>>2]|0;A=(C|0)==0;p:do if(!A?(T=C+144|0,S=b[T>>1]|0,U=S&65535,S<<16>>16!=0):0){y=C+116|0;o=0;q=S;x=0;n=0;while(1){w=c[C>>2]|0;do if(o>>>0<(q&65535)>>>0){p=c[y>>2]|0;q=p+(o*40|0)|0;q:do if(!q)p=0;else{r=b[p+(o*40|0)+8>>1]|0;do if((r&514)==514){if((a[p+(o*40|0)+10>>0]|0)!=1)break;p=c[p+(o*40|0)+16>>2]|0;break q}while(0);if(r&1){p=0;break}p=Gg(q,1)|0}while(0);q=w+81|0;if(!(a[q>>0]|0))break;if(c[w+180>>2]|0){p=0;break}a[q>>0]=0;c[w+264>>2]=0;p=w+272|0;c[p>>2]=(c[p>>2]|0)+-1;p=0}else p=0;while(0);p=Sv(x|0,n|0,(Eu(p)|0)+1|0,0)|0;n=L()|0;o=o+1|0;if((o|0)==(U|0)){x=U;B=p;o=0;break p}q=b[T>>1]|0;x=p}}else{x=0;B=0;n=0;o=1}while(0);D=Sv(B|0,n|0,x<<2|0,0)|0;D=pb(D,L()|0)|0;n=(D|0)==0;r:do if(o|n)o=n?7:0;else{n=D+(x<<2)|0;y=C+144|0;z=C+116|0;if(A){p=(Eu(0)|0)+1|0;o=0;while(1){ew(n|0,0,p|0)|0;c[D+(o<<2)>>2]=n;o=o+1|0;if((o|0)==(x|0)){o=0;break r}else n=n+p|0}}w=0;while(1){r=c[C>>2]|0;do if(w>>>0<(e[y>>1]|0)>>>0){o=c[z>>2]|0;p=o+(w*40|0)|0;s:do if(!p)o=0;else{q=b[o+(w*40|0)+8>>1]|0;do if((q&514)==514){if((a[o+(w*40|0)+10>>0]|0)!=1)break;o=c[o+(w*40|0)+16>>2]|0;break s}while(0);if(q&1){o=0;break}o=Gg(p,1)|0}while(0);p=r+81|0;if(!(a[p>>0]|0))break;if(c[r+180>>2]|0){o=0;break}a[p>>0]=0;c[r+264>>2]=0;o=r+272|0;c[o>>2]=(c[o>>2]|0)+-1;o=0}else o=0;while(0);p=(Eu(o)|0)+1|0;ew(n|0,o|0,p|0)|0;c[D+(w<<2)>>2]=n;w=w+1|0;if((w|0)==(x|0)){o=0;break}else n=n+p|0}}while(0);gc(C)|0;c[Ha>>2]=o;if(!((t|0)!=0&(o|0)==0)){w=D;p=B;r=0;q=0;n=D;Ea=162;break}if(!x){o=E;p=F;w=D;r=0;q=0;n=D;Ea=164;break a}n=0;while(1){p=c[D+(n<<2)>>2]|0;if(p|0){U=a[t>>0]|0;o=(d[208+(U&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0;if(!(U<<24>>24==0|(o|0)!=0)){q=t;do{q=q+1|0;p=p+1|0;U=a[q>>0]|0;o=(d[208+(U&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(U<<24>>24==0|(o|0)!=0))}if(!o)break}n=n+1|0;if(n>>>0>=x>>>0){w=D;p=B;r=0;q=0;n=D;break o}}if(n>>>0>>0)do{U=n;n=n+1|0;c[D+(U<<2)>>2]=c[D+(n<<2)>>2]}while((n|0)!=(x|0));w=D;x=x+-1|0;p=B;r=0;q=0;n=D;break}}else n=7;c[Ha>>2]=n;o=0;r=0;q=0;n=0;p=0;break a}else{w=n;Ea=162}while(0);if((Ea|0)==162)if(o){o=0;p=0;break}if(!x){o=E;p=F;Ea=164}else{C=E;B=F;D=w;H=x;A=p;Ea=165}}else{o=0;v=0;t=0;s=0;u=0;p=0;w=n;r=0;q=0;Ea=164}while(0);if((Ea|0)==164){c[w>>2]=53664;C=o;B=p;D=w;H=1;A=8;Ea=165}do if((Ea|0)==165){if((c[Ga>>2]|0)==0?(h=Yq(h,50983,Ga,l)|0,c[Ha>>2]=h,h|0):0){o=0;p=0;break}x=(u|0)!=0;t:do if(x?(V=a[u>>0]|0,V<<24>>24!=0):0){w=u;o=2;p=V;while(1){switch(p<<24>>24){case 0:break t;case 44:{o=o+1|0;break}default:{}}p=w+1|0;w=p;p=a[p>>0]|0}}else o=1;while(0);p=o*24|0;O=pb(p,0)|0;u:do if(O){gw(O|0,0,p|0)|0;if(x&(o|0)>1){z=u;p=1;while(1){x=a[z>>0]|0;if((x+-48&255)>=10)break;y=z;w=0;do{w=(x<<24>>24)+-48+(w*10|0)|0;if((w|0)>1e7){w=0;break}y=y+1|0;x=a[y>>0]|0}while((x+-48&255)<10);if((y|0)==(z|0))break;if(!w){p=p+-1|0;o=o+-1|0}else c[O+(p*24|0)>>2]=w;p=p+1|0;if((p|0)>=(o|0)){p=0;Ea=185;break u}else z=y+1|0}c[Ha>>2]=1;c[W>>2]=u;Wp(l,53775,W);x=0;o=c[Ha>>2]|0}else{p=0;Ea=185}}else{o=0;p=7;Ea=185}while(0);if((Ea|0)==185){c[Ha>>2]=p;x=o;o=p}if(!o){w=x*24|0;p=X+289+Z+A+H+(H<<2)+w|0;o=pb(p,0)|0;if(!o){c[Ha>>2]=7;p=O;break}gw(o|0,0,p|0)|0;N=o+12|0;c[N>>2]=g;j=o+24|0;c[j>>2]=H;c[o+264>>2]=0;p=o+288|0;M=o+28|0;c[M>>2]=p;c[o+36>>2]=c[Ga>>2];c[o+260>>2]=1048576;I=o+234|0;a[I>>0]=ya&(C|0)==0&1;G=ya&1;K=o+233|0;a[K>>0]=G;a[o+232>>0]=G;a[o+235>>0]=B;c[o+48>>2]=255;G=o+40|0;c[G>>2]=s;i=o+44|0;c[i>>2]=t;p=p+(H<<2)|0;t=o+256|0;c[t>>2]=p;ew(p|0,O|0,w|0)|0;c[o+252>>2]=x;p=c[t>>2]|0;if((x|0)>0){s=0;do{a[p+(s*24|0)+4>>0]=1;a[p+(s*24|0)+5>>0]=1;p=p+(s*24|0)+8|0;c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;s=s+1|0;p=c[t>>2]|0}while((s|0)!=(x|0))}p=p+(x*24|0)|0;E=o+32|0;c[E>>2]=p;p=p+H|0;J=o+20|0;c[J>>2]=p;ew(p|0,c[Y>>2]|0,Z|0)|0;p=p+Z|0;F=o+16|0;c[F>>2]=p;ew(p|0,c[_>>2]|0,$|0)|0;B=(H|0)>0;if(B){A=0;z=p+$|0;while(1){y=c[D+(A<<2)>>2]|0;v:while(1){x=a[y>>0]|0;s=x<<24>>24;switch(s|0){case 0:break v;case 96:case 34:case 39:{Ea=198;break v}case 91:{Ea=197;break v}default:{}}if(s&128|0){Ea=206;break}p=y+1|0;if(!(a[26208+s>>0]|0))y=p;else{Ea=208;break}}w:do if((Ea|0)==197){p=y;while(1){s=p+1|0;Ea=a[s>>0]|0;t=Ea<<24>>24==0;if(t^Ea<<24>>24!=93)p=s;else break}p=t?s:p+2|0;Ea=212}else if((Ea|0)==198){p=y+1|0;s=a[p>>0]|0;if(!(s<<24>>24))Ea=212;else{w=y;while(1){if(s<<24>>24==x<<24>>24){p=w+2|0;if((a[p>>0]|0)!=x<<24>>24){Ea=212;break w}}t=p+1|0;s=a[t>>0]|0;if(!(s<<24>>24)){p=t;Ea=212;break}else{w=p;p=t}}}}else if((Ea|0)==206){p=y+1|0;Ea=208}while(0);x:do if((Ea|0)==208)while(1){Ea=a[p>>0]|0;if((Ea&128|0)==0?(a[26208+Ea>>0]|0)==0:0){Ea=212;break x}p=p+1|0}while(0);if((Ea|0)==212){Ea=0;p=p-y|0;if((p|0)>0){ew(z|0,y|0,p|0)|0;s=p}else s=p}a[z+s>>0]=0;p=a[z>>0]|0;switch(p<<24>>24){case 34:case 39:case 91:case 96:{y=p<<24>>24==91?93:p;t=a[z+1>>0]|0;y:do if(!(t<<24>>24))p=0;else{w=1;p=0;do{x=w+1|0;if(t<<24>>24==y<<24>>24){if((a[z+x>>0]|0)!=y<<24>>24)break y;a[z+p>>0]=y;w=w+2|0}else{a[z+p>>0]=t;w=x}p=p+1|0;t=a[z+w>>0]|0}while(t<<24>>24!=0)}while(0);a[z+p>>0]=0;break}default:{}}c[(c[M>>2]|0)+(A<<2)>>2]=z;A=A+1|0;if((A|0)>=(H|0))break;else z=z+(s+1)|0}if(B){C=(v|0)>0;B=0;do{D=Eu(c[(c[M>>2]|0)+(B<<2)>>2]|0)|0;z:do if(C){if((D|0)<=0){p=0;while(1){s=m+(p<<2)|0;t=c[s>>2]|0;do if(t|0){if((D|0)!=(Eu(t)|0))break;if(!(c[(c[M>>2]|0)+(B<<2)>>2]|0))break;a[(c[E>>2]|0)+B>>0]=1;if(!(c[7324]|0))ab[c[29344>>2]&127](t);else{$=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t)}c[s>>2]=0}while(0);p=p+1|0;if((p|0)==(v|0))break z}}y=0;do{z=m+(y<<2)|0;A=c[z>>2]|0;do if(A|0){if((D|0)!=(Eu(A)|0))break;p=c[(c[M>>2]|0)+(B<<2)>>2]|0;if(!p)break;w=A;x=D;while(1){s=a[p>>0]|0;if(!(s<<24>>24)){Ea=238;break}s=a[208+(s&255)>>0]|0;t=a[208+(d[w>>0]|0)>>0]|0;if(s<<24>>24!=t<<24>>24){Ea=236;break}if((x|0)>1){p=p+1|0;w=w+1|0;x=x+-1|0}else break}if((Ea|0)==236){aa=s&255;ba=t;Ea=239}else if((Ea|0)==238){aa=0;ba=a[208+(d[w>>0]|0)>>0]|0;Ea=239}if((Ea|0)==239?(Ea=0,(aa|0)!=(ba&255|0)):0)break;a[(c[E>>2]|0)+B>>0]=1;if(!(c[7324]|0))ab[c[29344>>2]&127](A);else{$=Wa[c[29352>>2]&127](A)|0;c[14978]=(c[14978]|0)-$;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](A)}c[z>>2]=0}while(0);y=y+1|0}while((y|0)!=(v|0))}while(0);B=B+1|0}while((B|0)<(H|0))}}if((v|0)>0){p=0;do{s=c[m+(p<<2)>>2]|0;if(s|0){c[da>>2]=s;Wp(l,44776,da);c[Ha>>2]=1}p=p+1|0}while((p|0)!=(v|0))}if((c[Ha>>2]|0)==0?(ca=(q|0)==0,ca^(r|0)==0):0){c[Ha>>2]=1;c[ea>>2]=ca?53638:53647;Wp(l,53810,ea)}c[la>>2]=0;do if(!(c[G>>2]|0)){if(r){y=((Eu(r)|0)<<1)+3|0;y=pb(y,((y|0)<0)<<31>>31)|0;if(!y){t=0;s=0}else{a[y>>0]=34;x=0;t=y;A:while(1){s=t+1|0;w=r+x|0;p=a[w>>0]|0;switch(p<<24>>24){case 0:break A;case 34:{a[s>>0]=34;s=t+2|0;p=a[w>>0]|0;break}default:{}}a[s>>0]=p;x=x+1|0;t=s}a[s>>0]=34;a[t+2>>0]=0;t=y;s=y}}else{t=59952;s=0;r=0}Zq(Ha,la,53889,ia);if((c[j>>2]|0)>0){p=0;do{ia=c[(c[M>>2]|0)+(p<<2)>>2]|0;c[ja>>2]=t;c[ja+4>>2]=p;c[ja+8>>2]=ia;Zq(Ha,la,53895,ja);p=p+1|0}while((p|0)<(c[j>>2]|0))}if(c[i>>2]|0){c[ka>>2]=53917;Zq(Ha,la,53910,ka)}if(s)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);y=r;break}else{y=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);y=r;break}else y=r}else{Zq(Ha,la,38132,fa);if((c[j>>2]|0)>0){p=0;do{c[ga>>2]=c[(c[M>>2]|0)+(p<<2)>>2];Zq(Ha,la,53924,ga);p=p+1|0}while((p|0)<(c[j>>2]|0))}p=c[i>>2]|0;if(!p)y=r;else{c[ha>>2]=p;Zq(Ha,la,53910,ha);y=r}}while(0);p=c[G>>2]|0;r=(p|0)==0;if(r)p=c[J>>2]|0;c[ma>>2]=c[F>>2];c[ma+4>>2]=p;c[ma+8>>2]=r?53956:59952;Zq(Ha,la,53933,ma);c[o+220>>2]=c[la>>2];c[ma>>2]=0;if(q){x=((Eu(q)|0)<<1)+3|0;x=pb(x,((x|0)<0)<<31>>31)|0;if(!x){s=0;r=0}else{a[x>>0]=34;w=0;s=x;B:while(1){r=s+1|0;t=q+w|0;p=a[t>>0]|0;switch(p<<24>>24){case 0:break B;case 34:{a[r>>0]=34;r=s+2|0;p=a[t>>0]|0;break}default:{}}a[r>>0]=p;w=w+1|0;s=r}a[r>>0]=34;a[s+2>>0]=0;s=x;r=x}}else{s=59952;r=0;q=0}Zq(Ha,ma,35133,Aa);if((c[j>>2]|0)>0){p=0;do{c[na>>2]=s;Zq(Ha,ma,53965,na);p=p+1|0}while((p|0)<(c[j>>2]|0))}if(c[i>>2]|0)Zq(Ha,ma,53972,oa);do if(r|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{oa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}while(0);c[o+224>>2]=c[ma>>2];if(c[Ha>>2]|0){t=0;s=0;r=y;p=O;break}w=(f|0)!=0;if(w){c[Aa>>2]=0;t=c[N>>2]|0;C:do if(!(c[G>>2]|0)){s=c[i>>2]|0;p=Bb(53976,pa)|0;D:do if(p|0){r=0;while(1){if((r|0)>=(c[j>>2]|0))break;pa=c[(c[M>>2]|0)+(r<<2)>>2]|0;c[qa>>2]=p;c[qa+4>>2]=r;c[qa+8>>2]=pa;p=Bb(54002,qa)|0;if(!p)break D;else r=r+1|0}if(s){c[ra>>2]=p;c[ra+4>>2]=s;p=Bb(54014,ra)|0;if(!p)break}sa=c[J>>2]|0;c[ta>>2]=c[F>>2];c[ta+4>>2]=sa;c[ta+8>>2]=p;_q(Aa,t,54025,ta);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break C}else{ta=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break C}}while(0);c[Aa>>2]=7;ta=c[J>>2]|0;c[sa>>2]=c[F>>2];c[sa+4>>2]=ta;c[sa+8>>2]=0;_q(Aa,t,54025,sa)}while(0);ta=c[J>>2]|0;c[ua>>2]=c[F>>2];c[ua+4>>2]=ta;_q(Aa,t,54058,ua);ua=c[J>>2]|0;c[va>>2]=c[F>>2];c[va+4>>2]=ua;_q(Aa,t,54130,va);if(a[I>>0]|0){va=c[J>>2]|0;c[wa>>2]=c[F>>2];c[wa+4>>2]=va;_q(Aa,t,54283,wa)}do if(!(a[K>>0]|0))p=c[Aa>>2]|0;else{p=c[N>>2]|0;wa=c[J>>2]|0;c[xa>>2]=c[F>>2];c[xa+4>>2]=wa;_q(Aa,p,54351,xa);p=c[Aa>>2]|0;if(p|0)break;a[K>>0]=1;p=0}while(0);c[Ha>>2]=p}else p=0;if(!(w|ya))a[K>>0]=2;if(p|0){c[o+228>>2]=(c[o+240>>2]|0)+-35;t=0;s=0;r=y;p=O;break}c[za>>2]=c[F>>2];r=Bb(54428,za)|0;do if(r){p=qd(c[N>>2]|0,r,-1,0,0,Aa,0)|0;switch(p|0){case 0:{p=c[Aa>>2]|0;Gc(p)|0;Aa=Nc(p,0)|0;c[o+240>>2]=Aa;p=gc(p)|0;break}case 23:{c[o+240>>2]=1024;p=0;break}default:{}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{Aa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}else p=7;while(0);c[Ha>>2]=p;c[o+228>>2]=(c[o+240>>2]|0)+-35;if(p|0){t=0;s=0;r=y;p=O;break}t=c[i>>2]|0;t=(t|0)==0?54448:t;p=c[N>>2]|0;c[Ba>>2]=1;vd(p,1,Ba)|0;c[Ca>>2]=c[c[M>>2]>>2];p=Bb(54457,Ca)|0;E:do if(!p){s=0;p=0}else{r=1;while(1){if((r|0)>=(c[j>>2]|0)){s=p;p=1;break E}Ca=c[(c[M>>2]|0)+(r<<2)>>2]|0;c[Da>>2]=p;c[Da+4>>2]=Ca;p=Bb(54462,Da)|0;if(!p){s=0;p=0;break}else r=r+1|0}}while(0);r=c[J>>2]|0;c[Fa>>2]=s;c[Fa+4>>2]=r;c[Fa+8>>2]=t;r=Bb(54469,Fa)|0;if(!(p&(r|0)!=0))if(!r)p=7;else{p=7;Ea=341}else{p=td(c[N>>2]|0,r)|0;Ea=341}do if((Ea|0)==341)if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{Fa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}while(0);do if(s|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{Fa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}while(0);c[Ha>>2]=p;t=0;s=0;r=y;p=O}else{o=0;p=O}}while(0);do if(u|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{Fa=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}while(0);do if(p|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{Fa=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}while(0);do if(q|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{Fa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);do if(r|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{Fa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}while(0);do if(s|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{Fa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}while(0);do if(t|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{Fa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}while(0);if((v|0)>0){p=0;do{q=c[m+(p<<2)>>2]|0;do if(q|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{Fa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);p=p+1|0}while((p|0)!=(v|0))}}else{c[Ha>>2]=7;o=0;m=0}do if(n|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Fa=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);do if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{Fa=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);if(!(c[Ha>>2]|0)){c[k>>2]=o;Ha=c[Ha>>2]|0;Ra=Ia;return Ha|0}if(o|0){Dq(o)|0;Ha=c[Ha>>2]|0;Ra=Ia;return Ha|0}m=c[Ga>>2]|0;if(!m){Ha=c[Ha>>2]|0;Ra=Ia;return Ha|0}Wa[c[(c[m>>2]|0)+8>>2]&127](m)|0;Ha=c[Ha>>2]|0;Ra=Ia;return Ha|0}function Yq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=Ra;Ra=Ra+32|0;w=x+16|0;s=x+8|0;v=x;c[v>>2]=d;v=Bb(31408,v)|0;if(!v){w=7;Ra=x;return w|0}u=v+(Eu(v)|0)|0;l=v;a:while(1){k=a[l>>0]|0;h=k<<24>>24;switch(h|0){case 0:{d=0;break a}case 96:case 34:case 39:{t=5;break a}case 91:{t=4;break a}default:{}}if(h&128|0){t=13;break}d=l+1|0;if(!(a[26208+h>>0]|0))l=d;else{t=15;break}}b:do if((t|0)==4){d=l;while(1){h=d+1|0;t=a[h>>0]|0;i=t<<24>>24==0;if(i^t<<24>>24!=93)d=h;else break}d=i?h:d+2|0;t=19}else if((t|0)==5){d=l+1|0;h=a[d>>0]|0;if(!(h<<24>>24))t=19;else{j=l;while(1){if(h<<24>>24==k<<24>>24){d=j+2|0;if((a[d>>0]|0)!=k<<24>>24){t=19;break b}}i=d+1|0;h=a[i>>0]|0;if(!(h<<24>>24)){d=i;t=19;break}else{j=d;d=i}}}}else if((t|0)==13){d=l+1|0;t=15}while(0);c:do if((t|0)==15)while(1){t=a[d>>0]|0;if((t&128|0)==0?(a[26208+t>>0]|0)==0:0){t=19;break c}d=d+1|0}while(0);if((t|0)==19){h=d-l|0;d=l}m=(d|0)==0?v:d;a[m+h>>0]=0;d=a[m>>0]|0;switch(d<<24>>24){case 34:case 39:case 91:case 96:{l=d<<24>>24==91?93:d;i=a[m+1>>0]|0;d:do if(!(i<<24>>24))d=0;else{j=1;d=0;do{k=j+1|0;if(i<<24>>24==l<<24>>24){if((a[m+k>>0]|0)!=l<<24>>24)break d;a[m+d>>0]=l;j=j+2|0}else{a[m+d>>0]=i;j=k}d=d+1|0;i=a[m+j>>0]|0}while(i<<24>>24!=0)}while(0);a[m+d>>0]=0;break}default:{}}i=(Eu(m)|0)+1|0;e:do if((((b|0)!=0?(n=b+16|0,(c[n>>2]|0)!=0):0)?(o=Xa[(a[b>>0]<<24>>24==1?154:155)&255](m,i)|0,o=(c[b+12>>2]|0)+-1&o,p=c[n>>2]|0,(p|0)!=0):0)?(q=c[p+(o<<3)>>2]|0,r=(a[b>>0]|0)==1?79:80,g=c[p+(o<<3)+4>>2]|0,(q|0)!=0&(g|0)!=0):0){d=q;while(1){d=d+-1|0;if(!(Za[r&127](c[g+12>>2]|0,c[g+16>>2]|0,m,i)|0))break;g=c[g>>2]|0;if(!((d|0)!=0&(g|0)!=0)){t=37;break e}}n=c[g+8>>2]|0;if(n){g=m+(h+1)|0;f:do if(g>>>0>>0){b=0;l=0;d=0;while(1){g:while(1){k=a[g>>0]|0;i=k<<24>>24;switch(i|0){case 0:{h=b;g=l;break f}case 96:case 34:case 39:{t=43;break g}case 91:{t=42;break g}default:{}}if(i&128|0){t=51;break}h=g+1|0;if(!(a[26208+i>>0]|0))g=h;else{t=53;break}}h:do if((t|0)==42){h=g;while(1){i=h+1|0;t=a[i>>0]|0;j=t<<24>>24==0;if(j^t<<24>>24!=93)h=i;else break}h=j?i:h+2|0;t=57}else if((t|0)==43){t=0;i=g+1|0;j=a[i>>0]|0;if(!(j<<24>>24))l=1;else{h=g;while(1){if(j<<24>>24==k<<24>>24){h=h+2|0;if((a[h>>0]|0)!=k<<24>>24){t=57;break h}}else h=i;i=h+1|0;j=a[i>>0]|0;if(!(j<<24>>24)){h=i;t=57;break}}}}else if((t|0)==51){h=g+1|0;t=53}while(0);i:do if((t|0)==53)while(1){t=a[h>>0]|0;if((t&128|0)==0?(a[26208+t>>0]|0)==0:0){t=57;break i}h=h+1|0}while(0);if((t|0)==57){t=0;if(!g){h=b;g=l;break f}else l=h-g|0}h=b;b=b+1|0;if(mb()|0)break;m=sb(d,b<<2,0)|0;if(!m)break;c[m+(h<<2)>>2]=g;a[g+l>>0]=0;d=a[g>>0]|0;switch(d<<24>>24){case 34:case 39:case 91:case 96:{k=d<<24>>24==91?93:d;h=a[g+1>>0]|0;j:do if(!(h<<24>>24))d=0;else{i=1;d=0;do{j=i+1|0;if(h<<24>>24==k<<24>>24){if((a[g+j>>0]|0)!=k<<24>>24)break j;a[g+d>>0]=k;i=i+2|0}else{a[g+d>>0]=h;i=j}d=d+1|0;h=a[g+i>>0]|0}while(h<<24>>24!=0)}while(0);a[g+d>>0]=0;break}default:{}}g=g+(l+1)|0;if(g>>>0>=u>>>0){t=77;break}else{l=m;d=m}}if((t|0)==77){h=b;g=m;d=m;break}if(!(c[7324]|0))ab[c[29344>>2]&127](v);else{w=Wa[c[29352>>2]&127](v)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](v)}if(!d){w=7;Ra=x;return w|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);w=7;Ra=x;return w|0}else{w=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);w=7;Ra=x;return w|0}}else{h=0;g=0;d=0}while(0);g=Ya[c[n+4>>2]&127](h,g,e)|0;if(!g)c[c[e>>2]>>2]=n;else Wp(f,53851,w);if(d)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{w=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}else t=37}else t=37;while(0);if((t|0)==37){c[s>>2]=m;Wp(f,53600,s);g=1}if(!(c[7324]|0)){ab[c[29344>>2]&127](v);w=g;Ra=x;return w|0}else{w=Wa[c[29352>>2]&127](v)|0;c[14978]=(c[14978]|0)-w;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](v);w=g;Ra=x;return w|0}return 0}function Zq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=Ra;Ra=Ra+32|0;g=i+16|0;f=i;if(c[a>>2]|0){Ra=i;return}c[f>>2]=e;f=Ab(d,f)|0;if(f){d=c[b>>2]|0;if(d){c[g>>2]=d;c[g+4>>2]=f;d=Bb(38967,g)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{g=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}if(!d)h=8}else d=f}else h=8;if((h|0)==8){c[a>>2]=7;d=0}qb(c[b>>2]|0);c[b>>2]=d;Ra=i;return}function _q(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=Ra;Ra=Ra+16|0;f=g;if(c[a>>2]|0){Ra=g;return}c[f>>2]=e;d=Ab(d,f)|0;if(!d){c[a>>2]=7;Ra=g;return}b=nd(b,d,0,0,0)|0;c[a>>2]=b;if(!(c[7324]|0)){ab[c[29344>>2]&127](d);Ra=g;return}else{b=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);Ra=g;return}}function $q(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=b+8|0;if(a[f>>0]|0){d=(c[b>>2]|0)+216|0;if(!(c[d>>2]|0)){g=b+12|0;e=c[g>>2]|0;c[d>>2]=e;d=e;if(e|0){e=c[d>>2]|0;h=d+136|0;i=c[h+4>>2]|0;if((i|0)>0|(i|0)==0&(c[h>>2]|0)>>>0>0)hc(e,d);i=kc(d)|0;c[d+20>>2]=770837923;c[d+36>>2]=-1;c[d+40>>2]=0;a[d+146>>0]=2;c[d+44>>2]=0;c[d+32>>2]=1;a[d+147>>0]=-1;c[d+48>>2]=0;h=d+64|0;c[h>>2]=0;c[h+4>>2]=0;if((i|0)==3082|(a[e+81>>0]|0)!=0)og(e)}c[g>>2]=0}a[f>>0]=0}gc(c[b+12>>2]|0)|0;g=b+28|0;d=c[g>>2]|0;if(d|0)do{e=d;d=c[d+8>>2]|0;f=c[e+12>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{i=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}}while((d|0)!=0);c[g>>2]=0;d=c[b+44>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{i=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=c[b+92>>2]|0;do if((d|0?(a[d>>0]=0,(a[d+1>>0]|0)==0):0)?(a[d+2>>0]|0)==0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{i=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);ar(c[b+16>>2]|0);d=b+4|0;e=d+92|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));return}function ar(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!a)return;while(1){b=c[a+12>>2]|0;if(!b){b=c[a+16>>2]|0;if(!b)break;else a=b}else a=b}do{g=c[a+8>>2]|0;f=c[a+20>>2]|0;if(f|0){b=c[f>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{e=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);do if(c[f+24>>2]|0?(h=c[f+28>>2]|0,h|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{e=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);e=f+64|0;b=f;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));if((c[e>>2]|0)>0){b=0;do{d=f+72+(b*24|0)+20|0;br(c[d>>2]|0);c[d>>2]=0;b=b+1|0}while((b|0)<(c[e>>2]|0))}}b=c[a+40>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{f=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](a);else{f=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a)}a:do if(g)if((a|0)==(c[g+12>>2]|0)?(i=c[g+16>>2]|0,(i|0)!=0):0){a=i;while(1){b=c[a+12>>2]|0;if(!b){b=c[a+16>>2]|0;if(!b)break a;else a=b}else a=b}}else a=g;else a=0;while(0)}while((a|0)!=0);return}function br(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!b)return;j=b+4|0;d=c[b>>2]|0;if((c[j>>2]|0)>0){g=0;do{f=c[d+(g<<2)>>2]|0;do if(f|0){do if((c[f+56>>2]|0)==0?(h=c[f+64>>2]|0,h|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{e=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);do if((a[f+5>>0]|0)==0?(i=c[f+40>>2]|0,i|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{e=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);d=c[f+52>>2]|0;do if(d|0){e=c[d+20>>2]|0;gc(c[d+16>>2]|0)|0;if(e|0){if(c[e+480>>2]|0){Xd(e,d);break}k=d;if((c[e+304>>2]|0)>>>0<=k>>>0?(c[e+308>>2]|0)>>>0>k>>>0:0){k=e+300|0;c[d>>2]=c[k>>2];c[k>>2]=d;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{k=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{k=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);g=g+1|0;d=c[b>>2]|0}while((g|0)<(c[j>>2]|0))}do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{k=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);d=b+16|0;e=c[d>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{k=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);c[j>>2]=0;c[b>>2]=0;c[d>>2]=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{k=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}} -function kj(f,h,i){f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0;Pa=Ra;Ra=Ra+400|0;Ia=Pa+200|0;Ha=Pa+192|0;Ca=Pa+176|0;ya=Pa+168|0;Aa=Pa+160|0;ra=Pa+152|0;qa=Pa+144|0;pa=Pa+136|0;oa=Pa+128|0;ja=Pa+120|0;ha=Pa+112|0;ia=Pa+104|0;fa=Pa+96|0;ea=Pa+88|0;ga=Pa+80|0;ba=Pa+72|0;$=Pa+64|0;_=Pa+56|0;Z=Pa+48|0;aa=Pa+32|0;D=Pa+24|0;C=Pa+16|0;o=Pa+8|0;n=Pa;Da=Pa+360|0;Ea=Pa+308|0;Ga=Pa+296|0;La=Pa+256|0;Ma=Pa+208|0;Na=c[f>>2]|0;Oa=f+8|0;j=c[Oa>>2]|0;a:do if(!j){if((c[f+116>>2]|0)==0?(b[Na+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[Na+272>>2]|0)if(!(a[Na+81>>0]|0))Fa=15;else{Ja=0;break a}else{do if((e[Na+276>>1]|0)>=224){j=Na+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Ka=Na+284|0;c[Ka>>2]=(c[Ka>>2]|0)+1;break b}j=Na+296|0;k=c[j>>2]|0;if(!k){j=Na+292|0;break}else{c[j>>2]=c[k>>2];Ka=Na+284|0;c[Ka>>2]=(c[Ka>>2]|0)+1;break b}}else j=Na+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=15}while(0);if((Fa|0)==15)k=_d(Na,224,0)|0;if(!k)Ja=0;else{T=k+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[k>>2]=Na;j=Na+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[Oa>>2]=k;Di(k,61,0,1,0)|0;Ja=k}}else Ja=j;while(0);if(!h){Oa=1;Ra=Pa;return Oa|0}xa=Na+81|0;if(a[xa>>0]|0){Oa=1;Ra=Pa;return Oa|0}Ka=f+36|0;if(c[Ka>>2]|0){Oa=1;Ra=Pa;return Oa|0}j=c[f>>2]|0;do if(((a[j+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(m=c[j+312>>2]|0,m|0):0){j=$a[m&127](c[j+316>>2]|0,21,0,0,0,c[f+240>>2]|0)|0;if((j|0)==1){cd(f,39216,n);c[f+12>>2]=23;Oa=1;Ra=Pa;return Oa|0}if((j|2|0)==2){if(!j)break;else j=1;Ra=Pa;return j|0}else{cd(f,39231,o);c[f+12>>2]=1;Oa=1;Ra=Pa;return Oa|0}}while(0);T=Ma;U=T+48|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));if((d[i>>0]|0)<9){j=h+48|0;k=c[j>>2]|0;if(k|0)ri(Na,k);c[j>>2]=0;Ba=h+8|0;c[Ba>>2]=c[Ba>>2]&-2;Kk(f,h,0)}else Kk(f,h,0);c:do if((c[Ka>>2]|0)==0?(a[xa>>0]|0)==0:0){if(((a[i>>0]|0)==9?(A=c[Oa>>2]|0,B=c[f>>2]|0,(a[f+199>>0]|0)==0):0)?(p=f+16|0,(a[p>>0]|0)==0):0){k=h;while(1){j=c[k+52>>2]|0;if(!j)break;else k=j}y=c[k+32>>2]|0;z=c[k>>2]|0;a[p>>0]=1;x=c[B+32>>2]|0;w=(x&4|0)==0&0==0;x=(x&68|0)==0&0==0;Wi(A,c[z>>2]|0);j=c[z>>2]|0;if((j|0)>0){n=A+116|0;o=B+272|0;p=B+276|0;q=B+81|0;r=B+288|0;s=B+300|0;t=B+296|0;u=B+284|0;v=B+292|0;m=0;do{k=c[z+4+(m*20|0)>>2]|0;j=c[z+4+(m*20|0)+4>>2]|0;d:do if(j){if(!(a[(c[A>>2]|0)+81>>0]|0))yc((c[n>>2]|0)+(m*40|0)|0,j,-1,1,-1)|0}else{do if(!x){if((a[k>>0]|0)!=-94)break;j=b[k+32>>1]|0;k=c[k+44>>2]|0;if(j<<16>>16<0)j=b[k+40>>1]|0;else j=j<<16>>16;if((j|0)<0)j=38132;else j=c[(c[k+4>>2]|0)+(j<<4)>>2]|0;if(w){if(a[(c[A>>2]|0)+81>>0]|0)break d;yc((c[n>>2]|0)+(m*40|0)|0,j,-1,1,-1)|0;break d}else{c[C>>2]=c[k>>2];c[C+4>>2]=j;j=dd(B,40358,C)|0;if(a[(c[A>>2]|0)+81>>0]|0)break d;yc((c[n>>2]|0)+(m*40|0)|0,j,-1,1,116)|0;break d}}while(0);k=c[z+4+(m*20|0)+8>>2]|0;e:do if(!k){c[D>>2]=m+1;j=dd(B,41025,D)|0}else{l=(Eu(k)|0)+1|0;f:do if(c[o>>2]|0)if(!(a[q>>0]|0))Fa=69;else{j=0;break e}else{do if(0<0|(0==0?(e[p>>1]|0)>>>0>>0:0))j=r;else{j=c[s>>2]|0;if(j|0){c[s>>2]=c[j>>2];c[u>>2]=(c[u>>2]|0)+1;break f}j=c[t>>2]|0;if(!j){j=v;break}c[t>>2]=c[j>>2];c[u>>2]=(c[u>>2]|0)+1;break f}while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=69}while(0);if((Fa|0)==69){Fa=0;j=_d(B,l,0)|0}if(!j){j=0;break}ew(j|0,k|0,l|0)|0}while(0);if(a[(c[A>>2]|0)+81>>0]|0)break;yc((c[n>>2]|0)+(m*40|0)|0,j,-1,1,116)|0}while(0);m=m+1|0;j=c[z>>2]|0}while((m|0)<(j|0))}n=c[Oa>>2]|0;c[Da+4>>2]=y;c[Da>>2]=f;c[Da+12>>2]=0;if((j|0)>0){l=n+116|0;m=n+144|0;k=0;do{if(!(a[(c[n>>2]|0)+81>>0]|0)){j=Vk(Da,c[z+4+(k*20|0)>>2]|0)|0;yc((c[l>>2]|0)+((k+(e[m>>1]|0)|0)*40|0)|0,j,-1,1,-1)|0;j=c[z>>2]|0}k=k+1|0}while((k|0)<(j|0))}}wa=h+68|0;ca=h+52|0;if(c[wa>>2]|0?(c[ca>>2]|0)==0:0){j=c[Oa>>2]|0;g:do if(!j){l=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[l+76>>1]&8)==0:0)a[f+23>>0]=1;h:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))Fa=97;else{A=0;break g}else{do if((e[l+276>>1]|0)>=224){j=l+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Ba=l+284|0;c[Ba>>2]=(c[Ba>>2]|0)+1;break h}j=l+296|0;k=c[j>>2]|0;if(!k){j=l+292|0;break}else{c[j>>2]=c[k>>2];Ba=l+284|0;c[Ba>>2]=(c[Ba>>2]|0)+1;break h}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=97}while(0);if((Fa|0)==97)k=_d(l,224,0)|0;if(!k)A=0;else{T=k+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[k>>2]=l;j=l+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[Oa>>2]=k;Di(k,61,0,1,0)|0;A=k}}else A=j;while(0);B=c[f>>2]|0;z=h+32|0;u=c[z>>2]|0;v=c[h+36>>2]|0;w=c[h+40>>2]|0;x=c[h+44>>2]|0;o=c[wa>>2]|0;p=o+8|0;c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;j=gk(B,c[p>>2]|0,0)|0;q=o+12|0;m=c[q>>2]|0;if(m){if(!j)n=0;else n=c[j>>2]|0;if((c[m>>2]|0)>0){l=0;do{k=c[m+4+(l*20|0)>>2]|0;if(!k)k=0;else k=dk(c[f>>2]|0,k,0,0)|0;j=nj(c[f>>2]|0,j,k)|0;if(j|0)a[j+4+((l+n|0)*20|0)+12>>0]=a[m+4+(l*20|0)+12>>0]|0;l=l+1|0}while((l|0)<(c[m>>2]|0));t=j}else t=j}else t=j;i:do if((t|0?(G=h+48|0,F=c[G>>2]|0,F|0):0)?(E=c[t>>2]|0,(E|0)==(c[F>>2]|0)):0){if((E|0)>0){j=0;do{if((a[t+4+(j*20|0)+12>>0]|0)!=(a[F+4+(j*20|0)+12>>0]|0))break i;if(bk(0,c[t+4+(j*20|0)>>2]|0,c[F+4+(j*20|0)>>2]|0,-1)|0)break i;j=j+1|0}while((j|0)<(c[t>>2]|0));j=c[G>>2]|0;if(j|0)Fa=121}else{j=F;Fa=121}if((Fa|0)==121)ri(B,j);c[G>>2]=0}while(0);j=f+40|0;m=c[j>>2]|0;y=o+44|0;c[y>>2]=m;c[j>>2]=m+4;j=c[h>>2]|0;m=Da+12|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[Ea+12>>2]=0;m=Ea+8|0;c[m>>2]=0;c[Ea>>2]=o;c[Ea+4>>2]=u;c[Da>>2]=f;c[Da+4>>2]=129;c[Da+8>>2]=130;c[Da+24>>2]=Ea;if((j|0)!=0?(H=c[j>>2]|0,(H|0)>0):0){l=H;j=j+4|0;while(1){k=c[j>>2]|0;if(k|0?_j(Da,k)|0:0)break;if((l|0)>1){l=l+-1|0;j=j+20|0}else break}k=c[m>>2]|0}else k=0;j=c[h+48>>2]|0;m=Da+12|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[Ea+12>>2]=0;m=Ea+8|0;c[m>>2]=k;c[Ea>>2]=o;c[Ea+4>>2]=u;c[Da>>2]=f;c[Da+4>>2]=129;c[Da+8>>2]=130;c[Da+24>>2]=Ea;if((j|0)!=0?(I=c[j>>2]|0,(I|0)>0):0){l=I;j=j+4|0;while(1){k=c[j>>2]|0;if(k|0?_j(Da,k)|0:0)break;if((l|0)>1){l=l+-1|0;j=j+20|0}else break}k=c[m>>2]|0}j=k;l=(k|0)==0;if(l)k=0;else k=c[j>>2]|0;c[o+72>>2]=k;n=c[p>>2]|0;do if(n){if(l)m=0;else m=c[j>>2]|0;if((c[n>>2]|0)<=0)break;l=0;do{k=c[n+4+(l*20|0)>>2]|0;if(!k)k=0;else k=dk(c[f>>2]|0,k,0,0)|0;j=nj(c[f>>2]|0,j,k)|0;if(j|0)a[j+4+((l+m|0)*20|0)+12>>0]=a[n+4+(l*20|0)+12>>0]|0;l=l+1|0}while((l|0)<(c[n>>2]|0))}while(0);m=c[q>>2]|0;do if(m){if(!j)n=0;else n=c[j>>2]|0;if((c[m>>2]|0)<=0){Fa=159;break}l=0;do{k=c[m+4+(l*20|0)>>2]|0;if(!k)k=0;else k=dk(c[f>>2]|0,k,0,0)|0;j=nj(c[f>>2]|0,j,k)|0;k=(j|0)==0;if(!k)a[j+4+((l+n|0)*20|0)+12>>0]=a[m+4+(l*20|0)+12>>0]|0;l=l+1|0}while((l|0)<(c[m>>2]|0));if(o){l=j;Fa=161}}else Fa=159;while(0);if((Fa|0)==159){l=j;k=(j|0)==0;Fa=161}if((Fa|0)==161){p=f+44|0;q=A+108|0;r=A+112|0;s=A+104|0;j=l;do{if(k)l=0;else l=c[j>>2]|0;c[o+76>>2]=l;n=c[(c[o+68>>2]|0)+20>>2]|0;do if(n){if(k)m=0;else m=c[j>>2]|0;if((c[n>>2]|0)<=0)break;l=0;do{k=c[n+4+(l*20|0)>>2]|0;if(!k)k=0;else k=dk(c[f>>2]|0,k,0,0)|0;j=nj(c[f>>2]|0,j,k)|0;if(j|0)a[j+4+((l+m|0)*20|0)+12>>0]=a[n+4+(l*20|0)+12>>0]|0;l=l+1|0}while((l|0)<(c[n>>2]|0))}while(0);k=c[o+36>>2]|0;if(k){Ba=dk(B,k,0,0)|0;j=nj(c[f>>2]|0,j,Ba)|0}l=c[p>>2]|0;k=l+1|0;c[o+48>>2]=k;l=l+2|0;c[p>>2]=l;c[o+52>>2]=l;l=c[q>>2]|0;if((c[r>>2]|0)>(l|0)){c[q>>2]=l+1;Ba=c[s>>2]|0;a[Ba+(l*20|0)>>0]=73;b[Ba+(l*20|0)+2>>1]=0;c[Ba+(l*20|0)+4>>2]=0;c[Ba+(l*20|0)+8>>2]=k;c[Ba+(l*20|0)+12>>2]=0;c[Ba+(l*20|0)+16>>2]=0;a[Ba+(l*20|0)+1>>0]=0}else Di(A,73,0,k,0)|0;o=c[o+32>>2]|0;k=(j|0)==0}while((o|0)!=0)}if(k){l=oj(B,147,17136,0)|0;l=nj(c[f>>2]|0,0,l)|0}else l=j;j=mj(f,l,u,v,w,x,t,0,0)|0;k=pj(f,0,0,0)|0;c[z>>2]=k;do if(k){c[k+28>>2]=j;Qk(f,k);if(!(Rk(f,(c[z>>2]|0)+8|0)|0)){Ba=j+8|0;c[Ba>>2]=c[Ba>>2]|64;Ba=h+8|0;c[Ba>>2]=c[Ba>>2]&-9;Kk(f,j,0);j=0}else j=7;m=c[y>>2]|0;k=c[l>>2]|0;n=A+108|0;l=c[n>>2]|0;o=A+112|0;if((c[o>>2]|0)>(l|0)){c[n>>2]=l+1;Ba=c[A+104>>2]|0;a[Ba+(l*20|0)>>0]=113;b[Ba+(l*20|0)+2>>1]=0;c[Ba+(l*20|0)+4>>2]=m;c[Ba+(l*20|0)+8>>2]=k;c[Ba+(l*20|0)+12>>2]=0;c[Ba+(l*20|0)+16>>2]=0;a[Ba+(l*20|0)+1>>0]=0}else Di(A,113,m,k,0)|0;k=c[y>>2]|0;l=k+1|0;m=c[n>>2]|0;if((c[o>>2]|0)>(m|0)){c[n>>2]=m+1;Ba=c[A+104>>2]|0;a[Ba+(m*20|0)>>0]=111;b[Ba+(m*20|0)+2>>1]=0;c[Ba+(m*20|0)+4>>2]=l;c[Ba+(m*20|0)+8>>2]=k;c[Ba+(m*20|0)+12>>2]=0;c[Ba+(m*20|0)+16>>2]=0;a[Ba+(m*20|0)+1>>0]=0}else Di(A,111,l,k,0)|0;k=c[y>>2]|0;l=k+2|0;m=c[n>>2]|0;if((c[o>>2]|0)>(m|0)){c[n>>2]=m+1;Ba=c[A+104>>2]|0;a[Ba+(m*20|0)>>0]=111;b[Ba+(m*20|0)+2>>1]=0;c[Ba+(m*20|0)+4>>2]=l;c[Ba+(m*20|0)+8>>2]=k;c[Ba+(m*20|0)+12>>2]=0;c[Ba+(m*20|0)+16>>2]=0;a[Ba+(m*20|0)+1>>0]=0}else Di(A,111,l,k,0)|0;k=c[y>>2]|0;l=k+3|0;m=c[n>>2]|0;if((c[o>>2]|0)>(m|0)){c[n>>2]=m+1;Ba=c[A+104>>2]|0;a[Ba+(m*20|0)>>0]=111;b[Ba+(m*20|0)+2>>1]=0;c[Ba+(m*20|0)+4>>2]=l;c[Ba+(m*20|0)+8>>2]=k;c[Ba+(m*20|0)+12>>2]=0;c[Ba+(m*20|0)+16>>2]=0;a[Ba+(m*20|0)+1>>0]=0;break}else{Di(A,111,l,k,0)|0;break}}else{if(!j){j=0;break}pi(B,j,1);j=0}while(0);if(!((j|0)==0&(a[B+81>>0]|0)==0)){m=1;break}}va=h+32|0;l=c[va>>2]|0;za=h+8|0;da=(c[za>>2]|0)>>>3&1;T=La+4|0;U=T+36|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));S=h+48|0;c[La>>2]=c[S>>2];j=c[ca>>2]|0;j:do if(!j){sa=h+36|0;ua=Na+76|0;V=f+240|0;K=h+60|0;M=(da|0)!=0;W=f+200|0;N=h+4|0;X=f+12|0;O=Da+4|0;P=Da+8|0;Q=Da+12|0;R=Da+16|0;Ba=f+116|0;k=0;ta=l;k:while(1){j=c[ta>>2]|0;if((k|0)>=(j|0))break;m=c[ta+8+(k*72|0)+20>>2]|0;n=c[ta+8+(k*72|0)+16>>2]|0;j=ta+8+(k*72|0)+36|0;if((a[j>>0]&8?(Y=ta+8+(k*72|0)+40|0,ll(c[sa>>2]|0,c[Y>>2]|0)|0):0)?(b[ua>>1]&8192)==0:0){a[j>>0]=a[j>>0]&-41;ml(c[sa>>2]|0,c[Y>>2]|0)}l:do if(m){j=b[n+42>>1]|0;l=c[c[m>>2]>>2]|0;if((l|0)!=(j<<16>>16|0)){Fa=209;break k}if(!(c[m+8>>2]&8)){do if((k|0)==0&(c[m+48>>2]|0)!=0){if(!(c[za>>2]&262144))break;if((c[ta>>2]|0)==1){j=ta;k=0;break l}if(a[ta+116>>0]&10){j=ta;k=0;break l}}while(0);s=c[V>>2]|0;I=c[f>>2]|0;m:do if(!(b[I+76>>1]&1)){t=c[va>>2]|0;J=c[t+8+(k*72|0)+40>>2]|0;u=t+8+(k*72|0)+20|0;m=c[u>>2]|0;if(c[wa>>2]|0)break;if(c[m+68>>2]|0)break;o=c[m+32>>2]|0;j=c[m+60>>2]|0;n=(j|0)==0;if(!n){if(c[K>>2]|0)break;if(c[j+16>>2]|0)break;j=c[za>>2]|0;if(j&256)break}else j=c[za>>2]|0;l=c[o>>2]|0;if(!l)break;p=c[m+8>>2]|0;if(p&1|0)break;if(!n?M|(c[t>>2]|0)>1:0)break;r=c[S>>2]|0;q=(r|0)==0;if(!q?c[m+48>>2]|0:0)break;if(M?c[m+48>>2]|0:0)break;if(n){if(p&8192|0)break}else if(!((p&8192|j&1|0)==0&(c[sa>>2]|0)==0))break;H=t+8+(k*72|0)+36|0;if(a[H>>0]&32){if(M|(l|0)>1)break;if(!(c[(c[o+24>>2]|0)+56>>2]|0))G=1;else break}else G=0;n=m+52|0;l=c[n>>2]|0;do if(l|0){if(!((j&1|0)==0&((M|(c[m+48>>2]|0)!=0)^1)))break m;if(!((c[t>>2]|0)==1&(p&9|0)==0))break m;j=l;while(1){l=(j|0)==0;if(!l?(a[m+4>>0]|0)!=-128:0)break m;if((c[c[m+32>>2]>>2]|0)<1)break m;if(l)break;if(c[j+8>>2]&9|0)break m;m=j;j=c[j+52>>2]|0}if(q)break;l=c[r>>2]|0;if((l|0)<=0)break;j=0;do{if(!(b[r+4+(j*20|0)+16>>1]|0))break m;j=j+1|0}while((j|0)<(l|0))}while(0);q=t+8+(k*72|0)+8|0;j=c[q>>2]|0;c[V>>2]=j;do if(!(a[I+165>>0]|0)){if(a[W>>0]|0)break;l=c[I+312>>2]|0;if(!l)break;j=$a[l&127](c[I+316>>2]|0,21,0,0,0,j)|0;if((j|0)==1){cd(f,39216,Z);c[X>>2]=23;break}if((j|2|0)==2)break;cd(f,39231,_);c[X>>2]=1}while(0);c[V>>2]=s;j=c[n>>2]|0;n:do if(!j)Fa=267;else{p=I+81|0;o=c[S>>2]|0;n=c[K>>2]|0;m=c[ca>>2]|0;while(1){c[S>>2]=0;c[va>>2]=0;c[ca>>2]=0;c[K>>2]=0;l=fk(I,h,0)|0;c[K>>2]=n;c[S>>2]=o;c[va>>2]=t;a[N>>0]=-128;if(!l)l=m;else{c[l+52>>2]=m;if(m|0)c[m+56>>2]=l;c[l+56>>2]=h}c[ca>>2]=l;if(a[p>>0]|0)break n;j=c[j+52>>2]|0;if(!j){Fa=267;break}else m=l}}while(0);do if((Fa|0)==267){Fa=0;F=c[u>>2]|0;n=t+8+(k*72|0)+4|0;j=c[n>>2]|0;o:do if(j|0){if(c[I+480>>2]|0){Xd(I,j);break}l=j;do if((c[I+304>>2]|0)>>>0<=l>>>0){if((c[I+308>>2]|0)>>>0<=l>>>0)break;ta=I+300|0;c[j>>2]=c[ta>>2];c[ta>>2]=j;break o}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{ta=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);j=c[q>>2]|0;p:do if(j|0){if(c[I+480>>2]|0){Xd(I,j);break}l=j;do if((c[I+304>>2]|0)>>>0<=l>>>0){if((c[I+308>>2]|0)>>>0<=l>>>0)break;ta=I+300|0;c[j>>2]=c[ta>>2];c[ta>>2]=j;break p}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{ta=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);j=t+8+(k*72|0)+12|0;l=c[j>>2]|0;q:do if(l|0){if(c[I+480>>2]|0){Xd(I,l);break}m=l;do if((c[I+304>>2]|0)>>>0<=m>>>0){if((c[I+308>>2]|0)>>>0<=m>>>0)break;ta=I+300|0;c[l>>2]=c[ta>>2];c[ta>>2]=l;break q}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ta=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[n>>2]=0;c[q>>2]=0;c[j>>2]=0;c[u>>2]=0;j=t+8+(k*72|0)+16|0;l=c[j>>2]|0;if(l|0){m=l+32|0;n=c[m>>2]|0;if((n|0)==1){ta=c[Ba>>2]|0;ta=((ta|0)==0?f:ta)+256|0;c[l+76>>2]=c[ta>>2];c[ta>>2]=l}else c[m>>2]=n+-1;c[j>>2]=0}y=k+1|0;z=I+480|0;A=I+304|0;B=I+308|0;C=I+300|0;D=(G|0)==0;E=I+81|0;w=h;o=-1;x=F;while(1){t=c[x+32>>2]|0;u=c[t>>2]|0;s=w+32|0;j=c[s>>2]|0;if(!j){j=pj(f,0,0,0)|0;if(!j)break;c[s>>2]=j;v=0}else v=a[H>>0]|0;if((u|0)>1){r=u+-1|0;l=c[j>>2]|0;m=l+r|0;if(m>>>0>(c[j+4>>2]|0)>>>0){l=cw(l|0,((l|0)<0)<<31>>31|0,1)|0;l=Sv(l|0,L()|0,r|0,((r|0)<0)<<31>>31|0)|0;n=L()|0;if((m|0)>199){Fa=307;break}p=c[f>>2]|0;m=(n|0)<0|(n|0)==0&l>>>0<200;q=m?l:200;l=Yv(q|0,(m?n:0)|0,72,0)|0;l=Sv(l|0,L()|0,8,0)|0;m=L()|0;n=j;do if((c[p+304>>2]|0)>>>0<=n>>>0){if((c[p+308>>2]|0)>>>0<=n>>>0){Fa=311;break}if(m>>>0>0|((m|0)==0?l>>>0>(e[p+276>>1]|0)>>>0:0))Fa=311}else Fa=311;while(0);if((Fa|0)==311){Fa=0;j=Zd(p,j,l,m)|0;if(!j)break}c[j+4>>2]=q;n=j;m=j;j=c[j>>2]|0}else{n=j;m=j;j=l}if((j|0)>(y|0)){do{j=j+-1|0;T=n+8+((j+r|0)*72|0)|0;l=n+8+(j*72|0)|0;U=T+72|0;do{c[T>>2]=c[l>>2];T=T+4|0;l=l+4|0}while((T|0)<(U|0))}while((j|0)>(y|0));j=c[m>>2]|0}c[m>>2]=j+r;gw(n+8+(y*72|0)|0,0,r*72|0)|0;l=u+k|0;j=y;do{c[n+8+(j*72|0)+40>>2]=-1;j=j+1|0}while((j|0)<(l|0));c[s>>2]=n;j=n}if((u|0)>0){r=0;while(1){p=r+k|0;q=j+8+(p*72|0)|0;p=c[j+8+(p*72|0)+48>>2]|0;r:do if(p|0){o=p+4|0;l=c[p>>2]|0;if((c[o>>2]|0)>0){n=0;do{l=c[l+(n<<3)>>2]|0;s:do if(l|0){if(c[z>>2]|0){Xd(I,l);break}m=l;do if((c[A>>2]|0)>>>0<=m>>>0){if((c[B>>2]|0)>>>0<=m>>>0)break;c[l>>2]=c[C>>2];c[C>>2]=l;break s}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ta=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);n=n+1|0;l=c[p>>2]|0}while((n|0)<(c[o>>2]|0))}t:do if(l|0){if(c[z>>2]|0){Xd(I,l);break}m=l;do if((c[A>>2]|0)>>>0<=m>>>0){if((c[B>>2]|0)>>>0<=m>>>0)break;c[l>>2]=c[C>>2];c[C>>2]=l;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ta=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(c[z>>2]|0){Xd(I,p);break}l=p;do if((c[A>>2]|0)>>>0<=l>>>0){if((c[B>>2]|0)>>>0<=l>>>0)break;c[p>>2]=c[C>>2];c[C>>2]=p;break r}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ta=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);m=t+8+(r*72|0)|0;T=q;l=m;U=T+72|0;do{c[T>>2]=c[l>>2];T=T+4|0;l=l+4|0}while((T|0)<(U|0));l=c[t+8+(r*72|0)+40>>2]|0;T=m;U=T+72|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));r=r+1|0;if((r|0)==(u|0)){o=l;break}}}a[j+8+(k*72|0)+36>>0]=v;l=x+48|0;m=c[l>>2]|0;if(m|0){n=c[m>>2]|0;if((n|0)>0){j=0;do{b[m+4+(j*20|0)+16>>1]=0;j=j+1|0}while((j|0)!=(n|0))}c[w+48>>2]=m;c[l>>2]=0}ta=x+36|0;j=c[ta>>2]|0;c[ta>>2]=0;if(!D)Wk(j,o);ta=w+36|0;U=Xk(I,j,c[ta>>2]|0)|0;c[ta>>2]=U;if(!(a[E>>0]|0)){c[Da>>2]=f;c[O>>2]=J;c[P>>2]=o;c[Q>>2]=G;c[R>>2]=c[x>>2];yl(Da,w,0)}j=w+8|0;c[j>>2]=c[j>>2]|c[x+8>>2]&1;j=x+60|0;l=c[j>>2]|0;if(l|0){c[w+60>>2]=l;c[j>>2]=0}w=c[w+52>>2]|0;if(!w)break;else x=c[x+52>>2]|0}if((Fa|0)==307){Fa=0;c[$>>2]=200;cd(f,43159,$)}if(!F)break;pi(I,F,1)}while(0);if(!(c[Ka>>2]|0))k=-1;else{m=1;break c}}while(0);j=c[va>>2]|0;if(a[xa>>0]|0){m=1;break c}if((d[i>>0]|0)<9)break;c[La>>2]=c[S>>2]}else j=ta}else j=ta;while(0);l=c[ca>>2]|0;if(!l){k=k+1|0;ta=j}else{w=l;break j}}if((Fa|0)==209){m=c[n>>2]|0;c[aa>>2]=j<<16>>16;c[aa+4>>2]=m;c[aa+8>>2]=l;cd(f,43040,aa);m=1;break c}if((j|0)>1)if((b[ua>>1]|0)>-1){c[Da>>2]=f;m=Da+4|0;n=Da+8|0;o=Da+12|0;p=Ea+4|0;q=Ea+8|0;r=Ea+12|0;s=Ea+16|0;t=Ea+24|0;u=Ea+20|0;do{c[m>>2]=0;c[n>>2]=0;c[o>>2]=0;Fl(Da,c[sa>>2]|0);u:do if(c[m>>2]|0){c[u>>2]=0;c[Ea>>2]=f;c[p>>2]=131;c[q>>2]=132;c[r>>2]=0;c[s>>2]=0;c[t>>2]=Da;j=c[sa>>2]|0;if(j|0)_j(Ea,j)|0;j=c[c[Da>>2]>>2]|0;k=c[o>>2]|0;if(!k)break;do if(j|0){if(c[j+480>>2]|0){Xd(j,k);break u}l=k;if((c[j+304>>2]|0)>>>0>l>>>0)break;if((c[j+308>>2]|0)>>>0<=l>>>0)break;Fa=j+300|0;c[k>>2]=c[Fa>>2];c[Fa>>2]=k;break u}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Fa=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0)}while((c[n>>2]|0)!=0);j=c[ta>>2]|0;Fa=668}else Fa=669;else Fa=668;if((Fa|0)==668?(j|0)>0:0)Fa=669;v:do if((Fa|0)==669){z=f+208|0;A=f+44|0;B=Ja+108|0;C=Ja+112|0;D=ta+116|0;E=Ja+104|0;F=Da+4|0;G=Da+16|0;H=Da+8|0;I=Da+12|0;J=Ja+12|0;K=ta+8|0;M=f+19|0;N=f+28|0;O=ta+36|0;P=ta+32|0;Q=ta+24|0;R=ta+45|0;S=ta+40|0;y=0;while(1){u=ta+8+(y*72|0)|0;ka=ta+8+(y*72|0)+56|0;do if(((c[ka>>2]|0)==0&(c[ka+4>>2]|0)==0?(la=c[ta+8+(y*72|0)+8>>2]|0,ma=c[ta+8+(y*72|0)+4>>2]|0,na=c[f>>2]|0,(a[na+165>>0]|0)==0):0)?(a[W>>0]|0)==0:0){j=c[na+312>>2]|0;if(!j)break;j=$a[j&127](c[na+316>>2]|0,20,la,59952,ma,c[V>>2]|0)|0;if((j|0)==1){cd(f,39216,oa);c[X>>2]=23;break}if((j|2|0)==2)break;cd(f,39231,pa);c[X>>2]=1}while(0);s=ta+8+(y*72|0)+20|0;v=c[s>>2]|0;if(v|0){ka=nl(h)|0;c[z>>2]=(c[z>>2]|0)+ka;if(!(b[ua>>1]&4096))ol(f,v,c[sa>>2]|0,c[ta+8+(y*72|0)+40>>2]|0,(d[ta+8+(y*72|0)+36>>0]|0)>>>5&1)|0;x=c[V>>2]|0;t=ta+8+(y*72|0)+8|0;c[V>>2]=c[t>>2];l=(y|0)==0;do if(l){if((c[ta>>2]|0)!=1?(a[D>>0]&10)==0:0){Fa=693;break}l=c[B>>2]|0;j=l+1|0;k=(c[A>>2]|0)+1|0;c[A>>2]=k;c[O>>2]=k;if((c[C>>2]|0)>(l|0)){c[B>>2]=j;ka=c[E>>2]|0;a[ka+(l*20|0)>>0]=13;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=k;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=j;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else Di(Ja,13,k,0,j)|0;c[P>>2]=j;j=c[O>>2]|0;a[Da>>0]=13;c[F>>2]=j;c[G>>2]=0;c[H>>2]=0;c[I>>2]=0;c[qa>>2]=c[v+20>>2];nk(f,1,43080,qa);kj(f,v,Da)|0;b[(c[Q>>2]|0)+44>>1]=b[v+6>>1]|0;a[R>>0]=a[R>>0]|16;c[S>>2]=c[H>>2];j=c[O>>2]|0;k=c[B>>2]|0;if((c[C>>2]|0)>(k|0)){c[B>>2]=k+1;ka=c[E>>2]|0;a[ka+(k*20|0)>>0]=67;b[ka+(k*20|0)+2>>1]=0;c[ka+(k*20|0)+4>>2]=j;c[ka+(k*20|0)+8>>2]=0;c[ka+(k*20|0)+12>>2]=0;c[ka+(k*20|0)+16>>2]=0;a[ka+(k*20|0)+1>>0]=0}else Di(Ja,67,j,0,0)|0;k=c[J>>2]|0;a[k+19>>0]=0;c[k+28>>2]=0;k=c[B>>2]|0;if(!(a[(c[Ja>>2]|0)+81>>0]|0))j=(c[E>>2]|0)+(((l|0)<0?k+-1|0:l)*20|0)|0;else j=59308;c[j+8>>2]=k}else Fa=693;while(0);if((Fa|0)==693){Fa=0;k=(c[A>>2]|0)+1|0;c[A>>2]=k;w=ta+8+(y*72|0)+28|0;c[w>>2]=k;j=c[B>>2]|0;if((c[C>>2]|0)>(j|0)){ka=j+1|0;c[B>>2]=ka;ja=c[E>>2]|0;a[ja+(j*20|0)>>0]=70;b[ja+(j*20|0)+2>>1]=0;c[ja+(j*20|0)+4>>2]=0;c[ja+(j*20|0)+8>>2]=k;c[ja+(j*20|0)+12>>2]=0;c[ja+(j*20|0)+16>>2]=0;a[ja+(j*20|0)+1>>0]=0;k=ka}else{k=Di(Ja,70,0,k,0)|0;j=k;k=k+1|0}c[ta+8+(y*72|0)+24>>2]=k;do if(!(a[ta+8+(y*72|0)+37>>0]&8)){k=c[B>>2]|0;if((c[C>>2]|0)>(k|0)){c[B>>2]=k+1;T=c[E>>2]|0;a[T+(k*20|0)>>0]=17;T=T+(k*20|0)+1|0;U=T+19|0;do{a[T>>0]=0;T=T+1|0}while((T|0)<(U|0));r=k;break}else{r=Di(Ja,17,0,0,0)|0;break}}else r=0;while(0);w:do if(l)Fa=724;else{p=ta+8+(y*72|0)+4|0;q=K;x:while(1){o=c[q+20>>2]|0;y:do if(o|0){if(a[q+37>>0]&16)break;l=c[q+8>>2]|0;if(!l)break;m=c[q+4>>2]|0;n=c[p>>2]|0;do if(!m)k=((n|0)!=0)<<31>>31;else{if(!n)break y;ka=a[m>>0]|0;k=(d[208+(ka&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(ka<<24>>24==0|(k|0)!=0)break;do{m=m+1|0;n=n+1|0;ka=a[m>>0]|0;k=(d[208+(ka&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(k|0)!=0))}while(0);if(k|0)break;m=c[t>>2]|0;if(!m)break;ka=a[l>>0]|0;k=(d[208+(ka&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0;if(!(ka<<24>>24==0|(k|0)!=0))do{l=l+1|0;m=m+1|0;ka=a[l>>0]|0;k=(d[208+(ka&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(k|0)!=0));if(k|0)break;k=c[s>>2]|0;if((c[k+20>>2]|0)!=(c[o+20>>2]|0))break;if(!(bk(0,c[k+36>>2]|0,c[o+36>>2]|0,-1)|0))break x}while(0);k=q+72|0;if(k>>>0>>0)q=k;else{Fa=724;break w}}k=c[ta+8+(y*72|0)+40>>2]|0;l=c[q+40>>2]|0;m=c[B>>2]|0;if((c[C>>2]|0)>(m|0)){c[B>>2]=m+1;ka=c[E>>2]|0;a[ka+(m*20|0)>>0]=111;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=k;c[ka+(m*20|0)+8>>2]=l;c[ka+(m*20|0)+12>>2]=0;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(Ja,111,k,l,0)|0;k=b[(c[q+20>>2]|0)+6>>1]|0;b[v+6>>1]=k}while(0);if((Fa|0)==724){Fa=0;k=c[ta+8+(y*72|0)+40>>2]|0;a[Da>>0]=12;c[F>>2]=k;c[G>>2]=0;c[H>>2]=0;c[I>>2]=0;c[ra>>2]=c[v+20>>2];nk(f,1,43094,ra);kj(f,v,Da)|0;k=b[v+6>>1]|0}b[(c[ta+8+(y*72|0)+16>>2]|0)+44>>1]=k;l=c[B>>2]|0;if(r|0){if(!(a[(c[Ja>>2]|0)+81>>0]|0))k=(c[E>>2]|0)+(((r|0)<0?l+-1|0:r)*20|0)|0;else k=59308;c[k+8>>2]=l}k=c[w>>2]|0;if((c[C>>2]|0)>(l|0)){c[B>>2]=l+1;ka=c[E>>2]|0;a[ka+(l*20|0)>>0]=66;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=k;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0;k=l}else k=Di(Ja,66,k,0,0)|0;if((j|0)<0)j=(c[B>>2]|0)+-1|0;if(!(a[(c[Ja>>2]|0)+81>>0]|0))j=(c[E>>2]|0)+(j*20|0)|0;else j=59308;c[j+4>>2]=k}a[M>>0]=0;c[N>>2]=0;if(a[xa>>0]|0)break;ka=nl(h)|0;c[z>>2]=(c[z>>2]|0)-ka;c[V>>2]=x}y=y+1|0;if((y|0)>=(c[ta>>2]|0))break v}m=1;break c}while(0);$=c[h>>2]|0;D=c[sa>>2]|0;t=h+40|0;m=c[t>>2]|0;u=h+44|0;X=c[u>>2]|0;j=c[za>>2]|0;a[Ga>>0]=j&1;z:do if((j&9|0)==1){n=c[La>>2]|0;k=(n|0)==0;l=($|0)==0;do if(!(l&k)){if(l|k){U=m;break z}k=c[n>>2]|0;if((k|0)!=(c[$>>2]|0)){U=m;break z}if((k|0)<=0)break;j=0;do{if((a[n+4+(j*20|0)+12>>0]|0)!=(a[$+4+(j*20|0)+12>>0]|0)){U=m;break z}if(bk(0,c[n+4+(j*20|0)>>2]|0,c[$+4+(j*20|0)>>2]|0,-1)|0){U=m;break z}j=j+1|0}while((j|0)<(c[n>>2]|0));j=c[za>>2]|0}while(0);c[za>>2]=j&-2;U=gk(Na,$,0)|0;c[t>>2]=U}else U=m;while(0);q=c[La>>2]|0;A:do if(q){o=c[f>>2]|0;r=c[q>>2]|0;m=(c[$>>2]|0)+1+r|0;n=m*5|0;l=n+20|0;p=o+272|0;B:do if(c[p>>2]|0)if(!(a[o+81>>0]|0))Fa=763;else{n=0;o=1}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){j=o+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=764;break B}j=o+296|0;k=c[j>>2]|0;if(!k){j=o+292|0;break}else{c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=764;break B}}else j=o+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=763}while(0);if((Fa|0)==763){k=_d(o,l,0)|0;Fa=764}do if((Fa|0)==764){do if(!k){j=o+81|0;if(a[j>>0]|0){n=0;p=1;break}if(a[o+82>>0]|0){n=0;p=1;break}a[j>>0]=1;if((c[o+180>>2]|0)>0)c[o+264>>2]=1;c[p>>2]=(c[p>>2]|0)+1;j=c[o+236>>2]|0;if(!j){n=0;p=1;break}c[j+12>>2]=7;n=0;p=1}else{c[k+16>>2]=k+20+(m<<2);b[k+6>>1]=r;b[k+8>>1]=m;a[k+4>>0]=a[o+78>>0]|0;c[k+12>>2]=o;c[k>>2]=1;gw(k+24|0,0,n+-4|0)|0;n=k;p=0}while(0);if(!((r|0)>0&(k|0)!=0)){o=p;break}o=k+16|0;l=q+4|0;m=0;while(1){j=Yi(f,c[l>>2]|0)|0;if(!j)j=c[(c[f>>2]|0)+8>>2]|0;c[k+20+(m<<2)>>2]=j;a[(c[o>>2]|0)+m>>0]=a[l+12>>0]|0;m=m+1|0;if((m|0)==(r|0)){o=p;break}else l=l+20|0}}while(0);l=f+40|0;k=c[l>>2]|0;c[l>>2]=k+1;c[La+8>>2]=k;l=(c[c[La>>2]>>2]|0)+1+(c[$>>2]|0)|0;m=Ja+108|0;j=c[m>>2]|0;if((c[Ja+112>>2]|0)>(j|0)){c[m>>2]=j+1;ra=c[Ja+104>>2]|0;a[ra+(j*20|0)>>0]=113;b[ra+(j*20|0)+2>>1]=0;c[ra+(j*20|0)+4>>2]=k;c[ra+(j*20|0)+8>>2]=l;c[ra+(j*20|0)+12>>2]=0;c[ra+(j*20|0)+16>>2]=0;a[ra+(j*20|0)+1>>0]=0}else j=Di(Ja,113,k,l,0)|0;k=c[Ja>>2]|0;if(!(a[k+81>>0]|0)){if((j|0)<0)k=(c[m>>2]|0)+-1|0;else k=j;l=c[Ja+104>>2]|0;m=l+(k*20|0)+1|0;if(a[m>>0]|0){Ei(Ja,l+(k*20|0)|0,n,-9);break}if(o)break;c[l+(k*20|0)+16>>2]=n;a[m>>0]=-9;break}if(o|(c[k+480>>2]|0)!=0)break;ra=(c[n>>2]|0)+-1|0;c[n>>2]=ra;if(ra|0)break;k=c[n+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,n);break A}l=n;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;ra=k+300|0;c[n>>2]=c[ra>>2];c[ra>>2]=n;break A}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{ra=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-ra;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}else j=-1;while(0);c[La+20>>2]=j;do if((a[i>>0]|0)==12){j=c[i+4>>2]|0;k=c[$>>2]|0;l=Ja+108|0;m=c[l>>2]|0;if((c[Ja+112>>2]|0)>(m|0)){c[l>>2]=m+1;ra=c[Ja+104>>2]|0;a[ra+(m*20|0)>>0]=113;b[ra+(m*20|0)+2>>1]=0;c[ra+(m*20|0)+4>>2]=j;c[ra+(m*20|0)+8>>2]=k;c[ra+(m*20|0)+12>>2]=0;c[ra+(m*20|0)+16>>2]=0;a[ra+(m*20|0)+1>>0]=0;break}else{Di(Ja,113,j,k,0)|0;break}}while(0);_=f+56|0;aa=c[_>>2]|0;j=aa+-1|0;c[_>>2]=j;if(!(c[za>>2]&16384))b[h+6>>1]=320;pl(f,h,j);do if(!(c[h+12>>2]|0)){j=c[La+20>>2]|0;if((j|0)<=-1)break;if(!(a[(c[Ja>>2]|0)+81>>0]|0))j=(c[Ja+104>>2]|0)+(j*20|0)|0;else j=59308;a[j>>0]=114;ra=La+32|0;a[ra>>0]=a[ra>>0]|1}while(0);do if(!(c[za>>2]&1))j=0;else{q=f+40|0;s=c[q>>2]|0;c[q>>2]=s+1;c[Ga+4>>2]=s;q=c[h>>2]|0;o=c[f>>2]|0;r=c[q>>2]|0;m=r+1|0;n=m*5|0;l=n+20|0;p=o+272|0;C:do if(c[p>>2]|0)if(!(a[o+81>>0]|0))Fa=820;else{o=0;n=1}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){j=o+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=821;break C}j=o+296|0;k=c[j>>2]|0;if(!k){j=o+292|0;break}else{c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=821;break C}}else j=o+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=820}while(0);if((Fa|0)==820){k=_d(o,l,0)|0;Fa=821}do if((Fa|0)==821){do if(!k){j=o+81|0;if(a[j>>0]|0){o=0;n=1;break}if(a[o+82>>0]|0){o=0;n=1;break}a[j>>0]=1;if((c[o+180>>2]|0)>0)c[o+264>>2]=1;c[p>>2]=(c[p>>2]|0)+1;j=c[o+236>>2]|0;if(!j){o=0;n=1;break}c[j+12>>2]=7;o=0;n=1}else{c[k+16>>2]=k+20+(m<<2);b[k+6>>1]=r;b[k+8>>1]=m;a[k+4>>0]=a[o+78>>0]|0;c[k+12>>2]=o;c[k>>2]=1;gw(k+24|0,0,n+-4|0)|0;o=k;n=0}while(0);if(!((r|0)>0&(k|0)!=0))break;p=k+16|0;l=q+4|0;m=0;while(1){j=Yi(f,c[l>>2]|0)|0;if(!j)j=c[(c[f>>2]|0)+8>>2]|0;c[k+20+(m<<2)>>2]=j;a[(c[p>>2]|0)+m>>0]=a[l+12>>0]|0;m=m+1|0;if((m|0)==(r|0))break;else l=l+20|0}}while(0);p=Ja+108|0;j=c[p>>2]|0;if((c[Ja+112>>2]|0)>(j|0)){c[p>>2]=j+1;ra=c[Ja+104>>2]|0;a[ra+(j*20|0)>>0]=113;b[ra+(j*20|0)+2>>1]=0;c[ra+(j*20|0)+4>>2]=s;c[ra+(j*20|0)+8>>2]=0;c[ra+(j*20|0)+12>>2]=0;c[ra+(j*20|0)+16>>2]=0;a[ra+(j*20|0)+1>>0]=0}else j=Di(Ja,113,s,0,0)|0;k=c[Ja>>2]|0;D:do if(a[k+81>>0]|0){if(n|(c[k+480>>2]|0)!=0)break;ra=(c[o>>2]|0)+-1|0;c[o>>2]=ra;if(ra|0)break;k=c[o+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,o);break D}l=o;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;ra=k+300|0;c[o>>2]=c[ra>>2];c[ra>>2]=o;break D}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{ra=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-ra;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else{if((j|0)<0)k=(c[p>>2]|0)+-1|0;else k=j;l=c[Ja+104>>2]|0;m=l+(k*20|0)+1|0;if(a[m>>0]|0){Ei(Ja,l+(k*20|0)|0,o,-9);break}if(n)break;c[l+(k*20|0)+16>>2]=o;a[m>>0]=-9}while(0);c[Ga+8>>2]=j;j=c[p>>2]|0;if((j|0)<=0){j=3;break}b[(c[Ja+104>>2]|0)+((j+-1|0)*20|0)+2>>1]=8;j=3}while(0);a[Ga+1>>0]=j;l=(U|0)==0;E:do if((da|0)==0&l){B=(((a[Ga>>0]|0)==0?0:256)|c[za>>2]&16384)&65535;q=c[wa>>2]|0;C=(q|0)!=0;do if(C){j=c[Oa>>2]|0;F:do if(!j){l=c[f>>2]|0;do if(!(c[Ba>>2]|0)){if(b[l+76>>1]&8)break;a[f+23>>0]=1}while(0);G:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))Fa=873;else{j=0;break F}else{do if((e[l+276>>1]|0)>=224){k=l+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];Ca=l+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break G}k=l+296|0;j=c[k>>2]|0;if(!j){j=l+292|0;break}else{c[k>>2]=c[j>>2];Ca=l+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break G}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=873}while(0);if((Fa|0)==873)j=_d(l,224,0)|0;if(!j){j=0;break}T=j+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[j>>2]=l;k=l+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=j;c[j+8>>2]=l;c[j+4>>2]=0;c[k>>2]=j;c[j+20>>2]=381479589;c[j+12>>2]=f;c[Oa>>2]=j;Di(j,61,0,1,0)|0}while(0);k=c[q+8>>2]|0;do if(k){m=c[k>>2]|0;k=f+44|0;o=c[k>>2]|0;l=o+1|0;c[q+64>>2]=l;m=o+m|0;c[k>>2]=m;o=j+108|0;n=c[o>>2]|0;p=j+112|0;if((c[p>>2]|0)>(n|0)){c[o>>2]=n+1;A=c[j+104>>2]|0;a[A+(n*20|0)>>0]=73;b[A+(n*20|0)+2>>1]=0;c[A+(n*20|0)+4>>2]=0;c[A+(n*20|0)+8>>2]=l;c[A+(n*20|0)+12>>2]=m;c[A+(n*20|0)+16>>2]=0;a[A+(n*20|0)+1>>0]=0;A=k;break}else{Di(j,73,0,l,m)|0;A=k;break}}else{A=f+44|0;o=j+108|0;p=j+112|0}while(0);k=(c[A>>2]|0)+1|0;c[A>>2]=k;c[q+80>>2]=k;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ca=c[j+104>>2]|0;a[Ca+(l*20|0)>>0]=70;b[Ca+(l*20|0)+2>>1]=0;c[Ca+(l*20|0)+4>>2]=1;c[Ca+(l*20|0)+8>>2]=k;c[Ca+(l*20|0)+12>>2]=0;c[Ca+(l*20|0)+16>>2]=0;a[Ca+(l*20|0)+1>>0]=0}else Di(j,70,1,k,0)|0;if(a[q+20>>0]|0){n=c[A>>2]|0;m=n+1|0;c[q+84>>2]=m;n=n+2|0;c[A>>2]=n;k=q+88|0;c[k>>2]=n;n=f+40|0;l=c[n>>2]|0;c[n>>2]=l+1;n=q+56|0;c[n>>2]=l;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ca=c[j+104>>2]|0;a[Ca+(l*20|0)>>0]=70;b[Ca+(l*20|0)+2>>1]=0;c[Ca+(l*20|0)+4>>2]=1;c[Ca+(l*20|0)+8>>2]=m;c[Ca+(l*20|0)+12>>2]=0;c[Ca+(l*20|0)+16>>2]=0;a[Ca+(l*20|0)+1>>0]=0}else Di(j,70,1,m,0)|0;k=c[k>>2]|0;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ca=c[j+104>>2]|0;a[Ca+(l*20|0)>>0]=70;b[Ca+(l*20|0)+2>>1]=0;c[Ca+(l*20|0)+4>>2]=0;c[Ca+(l*20|0)+8>>2]=k;c[Ca+(l*20|0)+12>>2]=0;c[Ca+(l*20|0)+16>>2]=0;a[Ca+(l*20|0)+1>>0]=0}else Di(j,70,0,k,0)|0;m=c[n>>2]|0;k=c[q+44>>2]|0;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ca=c[j+104>>2]|0;a[Ca+(l*20|0)>>0]=111;b[Ca+(l*20|0)+2>>1]=0;c[Ca+(l*20|0)+4>>2]=m;c[Ca+(l*20|0)+8>>2]=k;c[Ca+(l*20|0)+12>>2]=0;c[Ca+(l*20|0)+16>>2]=0;a[Ca+(l*20|0)+1>>0]=0;break}else{Di(j,111,m,k,0)|0;break}}x=f+40|0;y=q+44|0;z=j+104|0;w=q;do{v=w+40|0;k=c[v>>2]|0;do if(c[k+4>>2]&4096){if((a[w+17>>0]|0)==87){Fa=944;break}n=c[(c[w+68>>2]|0)+20>>2]|0;t=c[f>>2]|0;u=c[n>>2]|0;r=u+1|0;s=r*5|0;l=s+20|0;q=t+272|0;H:do if(c[q>>2]|0)if(!(a[t+81>>0]|0))Fa=909;else{r=0;m=0;n=1}else{do if(!(0<0|(0==0?(e[t+276>>1]|0)>>>0>>0:0))){k=t+300|0;m=c[k>>2]|0;if(m|0){c[k>>2]=c[m>>2];Fa=t+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=910;break H}k=t+296|0;m=c[k>>2]|0;if(!m){k=t+292|0;break}else{c[k>>2]=c[m>>2];Fa=t+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=910;break H}}else k=t+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;Fa=909}while(0);if((Fa|0)==909){m=_d(t,l,0)|0;Fa=910}I:do if((Fa|0)==910){Fa=0;if(m|0){q=m+16|0;c[q>>2]=m+20+(r<<2);b[m+6>>1]=u;b[m+8>>1]=r;a[m+4>>0]=a[t+78>>0]|0;c[m+12>>2]=t;c[m>>2]=1;gw(m+24|0,0,s+-4|0)|0;if((u|0)<=0){r=m;n=0;break}l=n+4|0;n=0;while(1){k=Yi(f,c[l>>2]|0)|0;if(!k)k=c[(c[f>>2]|0)+8>>2]|0;c[m+20+(n<<2)>>2]=k;a[(c[q>>2]|0)+n>>0]=a[l+12>>0]|0;n=n+1|0;if((n|0)==(u|0)){r=m;n=0;break I}else l=l+20|0}}k=t+81|0;if(a[k>>0]|0){r=0;n=1;break}if(a[t+82>>0]|0){r=0;n=1;break}a[k>>0]=1;if((c[t+180>>2]|0)>0)c[t+264>>2]=1;c[q>>2]=(c[q>>2]|0)+1;k=c[t+236>>2]|0;if(!k){r=0;n=1;break}c[k+12>>2]=7;r=0;n=1}while(0);l=c[x>>2]|0;c[x>>2]=l+1;k=w+56|0;c[k>>2]=l;Ca=c[A>>2]|0;q=w+60|0;c[q>>2]=Ca+1;c[A>>2]=Ca+3;do if(m){if((a[(c[(c[v>>2]|0)+32>>2]|0)+1>>0]|0)!=105)break;a[c[m+16>>2]>>0]=1;l=c[k>>2]|0}while(0);k=c[o>>2]|0;if((c[p>>2]|0)>(k|0)){c[o>>2]=k+1;Ca=c[z>>2]|0;a[Ca+(k*20|0)>>0]=113;b[Ca+(k*20|0)+2>>1]=0;c[Ca+(k*20|0)+4>>2]=l;c[Ca+(k*20|0)+8>>2]=2;c[Ca+(k*20|0)+12>>2]=0;c[Ca+(k*20|0)+16>>2]=0;a[Ca+(k*20|0)+1>>0]=0}else Di(j,113,l,2,0)|0;k=c[j>>2]|0;J:do if(a[k+81>>0]|0){if(n|(c[k+480>>2]|0)!=0)break;Ca=(c[r>>2]|0)+-1|0;c[r>>2]=Ca;if(Ca|0)break;k=c[r+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,r);break J}l=r;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;Ca=k+300|0;c[r>>2]=c[Ca>>2];c[Ca>>2]=r;break J}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{Ca=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Ca;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}else{Aa=c[z>>2]|0;Ca=(c[o>>2]|0)+-1|0;a[Aa+(Ca*20|0)+1>>0]=-9;c[Aa+(Ca*20|0)+16>>2]=r}while(0);k=(c[q>>2]|0)+1|0;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ca=c[z>>2]|0;a[Ca+(l*20|0)>>0]=70;b[Ca+(l*20|0)+2>>1]=0;c[Ca+(l*20|0)+4>>2]=0;c[Ca+(l*20|0)+8>>2]=k;c[Ca+(l*20|0)+12>>2]=0;c[Ca+(l*20|0)+16>>2]=0;a[Ca+(l*20|0)+1>>0]=0;break}else{Di(j,70,0,k,0)|0;break}}else Fa=944;while(0);do if((Fa|0)==944){Fa=0;k=c[k+32>>2]|0;if((k|0)==43457|(k|0)==43467){l=c[A>>2]|0;c[w+60>>2]=l+1;k=c[x>>2]|0;c[x>>2]=k+1;c[w+56>>2]=k;c[A>>2]=l+2;l=c[y>>2]|0;m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;Ca=c[z>>2]|0;a[Ca+(m*20|0)>>0]=111;b[Ca+(m*20|0)+2>>1]=0;c[Ca+(m*20|0)+4>>2]=k;c[Ca+(m*20|0)+8>>2]=l;c[Ca+(m*20|0)+12>>2]=0;c[Ca+(m*20|0)+16>>2]=0;a[Ca+(m*20|0)+1>>0]=0;break}else{Di(j,111,k,l,0)|0;break}}if(!((k|0)==40587|(k|0)==40592))break;k=c[x>>2]|0;c[x>>2]=k+1;c[w+56>>2]=k;l=c[y>>2]|0;m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;Ca=c[z>>2]|0;a[Ca+(m*20|0)>>0]=111;b[Ca+(m*20|0)+2>>1]=0;c[Ca+(m*20|0)+4>>2]=k;c[Ca+(m*20|0)+8>>2]=l;c[Ca+(m*20|0)+12>>2]=0;c[Ca+(m*20|0)+16>>2]=0;a[Ca+(m*20|0)+1>>0]=0;break}else{Di(j,111,k,l,0)|0;break}}while(0);w=c[w+32>>2]|0}while((w|0)!=0)}while(0);k=h+6|0;Q=ql(f,ta,D,c[La>>2]|0,c[h>>2]|0,B,b[k>>1]|0)|0;if(!Q){m=1;break c}j=b[Q+72>>1]|0;if(j<<16>>16<(b[k>>1]|0))b[k>>1]=j;do if(a[Ga>>0]|0){j=a[Q+51>>0]|0;if(!(j<<24>>24))break;a[Ga+1>>0]=j}while(0);k=c[La>>2]|0;do if(!k)Fa=965;else{l=a[Q+47>>0]|0;c[La+4>>2]=l;if(!(a[Q+52>>0]|0))j=Q+32|0;else j=Q+752+(((d[Q+46>>0]|0)+-1|0)*80|0)+16|0;c[La+28>>2]=c[j>>2];if((c[k>>2]|0)!=(l|0))break;c[La>>2]=0;Fa=965}while(0);do if((Fa|0)==965){j=c[La+20>>2]|0;if((j|0)<=-1)break;k=c[Ja>>2]|0;if(a[k+81>>0]|0)break;Ca=c[Ja+104>>2]|0;za=Ca+(j*20|0)+1|0;Aa=Ca+(j*20|0)+16|0;kg(k,a[za>>0]|0,c[Aa>>2]|0);a[za>>0]=0;c[Aa>>2]=0;a[Ca+(j*20|0)>>0]=-86}while(0);if(!C){rl(f,h,-1,La,Ga,i,c[Q+32>>2]|0,c[Q+36>>2]|0);sl(Q);j=0;Fa=1796;break}Z=c[_>>2]|0;m=Z+-1|0;W=Z+-2|0;X=Z+-3|0;c[_>>2]=X;w=f+44|0;Y=(c[w>>2]|0)+1|0;c[w>>2]=Y;V=c[wa>>2]|0;J=c[V+12>>2]|0;j=c[Oa>>2]|0;K:do if(!j){l=c[f>>2]|0;do if(!(c[Ba>>2]|0)){if(b[l+76>>1]&8)break;a[f+23>>0]=1}while(0);L:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))Fa=983;else{S=0;break K}else{do if((e[l+276>>1]|0)>=224){j=l+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Ca=l+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break L}j=l+296|0;k=c[j>>2]|0;if(!k){j=l+292|0;break}else{c[j>>2]=c[k>>2];Ca=l+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break L}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=983}while(0);if((Fa|0)==983)k=_d(l,224,0)|0;if(!k){S=0;break}T=k+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[k>>2]=l;j=l+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[Oa>>2]=k;Di(k,61,0,1,0)|0;S=k}else S=j;while(0);o=c[va>>2]|0;p=c[o+48>>2]|0;o=b[(c[o+24>>2]|0)+42>>1]|0;q=o<<16>>16;K=c[_>>2]|0;E=K+-1|0;c[_>>2]=E;z=Ea+20|0;c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[z+16>>2]=0;c[z+20>>2]=0;c[z+24>>2]=0;c[z+28>>2]=0;c[Ea>>2]=f;z=Ea+4|0;c[z>>2]=V;c[Ea+8>>2]=S;c[Ea+12>>2]=Y;c[Ea+16>>2]=m;P=c[V+44>>2]|0;R=Ea+36|0;c[R>>2]=P;O=P+1|0;B=Ea+28|0;c[B>>2]=P+2;H=Ea+44|0;c[H>>2]=P+3;P=V+17|0;M:do switch(a[P>>0]|0){case 83:{if((a[V+16>>0]|0)==86)break M;k=c[V+24>>2]|0;j=c[f>>2]|0;c[Da>>2]=0;do if(k|0){Wj(j,k,a[j+78>>0]|0,67,Da)|0;n=c[Da>>2]|0;if(!n)break;l=n+8|0;m=b[l>>1]|0;j=m&65535;do if(!(j&4)){if(j&8|0){k=Mg(+g[n>>3])|0;L()|0;j=m;break}if(!(j&18)){k=0;j=m;break}k=Ng(a[n+10>>0]|0,c[n+12>>2]|0,c[n+16>>2]|0)|0;L()|0;j=b[l>>1]|0}else{k=c[n>>2]|0;j=m}while(0);l=(k|0)<1;if(!((j&9216)==0?!(c[n+24>>2]|0):0))Cg(n);j=c[n+32>>2]|0;do if(!j)Fa=1007;else{if(c[j+480>>2]|0){Xd(j,n);break}k=n;if((c[j+304>>2]|0)>>>0>k>>>0){Fa=1007;break}if((c[j+308>>2]|0)>>>0<=k>>>0){Fa=1007;break}Da=j+300|0;c[n>>2]=c[Da>>2];c[Da>>2]=n}while(0);do if((Fa|0)==1007)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Da=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);if(l)break M;c[Ea+24>>2]=1;break M}while(0);break}case 87:{if(c[V+84>>2]|0)break M;j=V;do{Ca=c[(c[j+40>>2]|0)+32>>2]|0;if((Ca|0)==40592|((Ca|0)==40587|((Ca|0)==43457|(Ca|0)==43467)))break M;j=c[j+32>>2]|0}while((j|0)!=0);if((a[V+18>>0]|0)!=85){c[Ea+24>>2]=1;break M}if((a[V+16>>0]|0)==86)break M;k=c[V+28>>2]|0;j=c[f>>2]|0;c[Da>>2]=0;do if(k|0){Wj(j,k,a[j+78>>0]|0,67,Da)|0;n=c[Da>>2]|0;if(!n)break;l=n+8|0;m=b[l>>1]|0;j=m&65535;do if(!(j&4)){if(j&8|0){k=Mg(+g[n>>3])|0;L()|0;j=m;break}if(!(j&18)){k=0;j=m;break}k=Ng(a[n+10>>0]|0,c[n+12>>2]|0,c[n+16>>2]|0)|0;L()|0;j=b[l>>1]|0}else{k=c[n>>2]|0;j=m}while(0);l=(k|0)<1;if(!((j&9216)==0?!(c[n+24>>2]|0):0))Cg(n);j=c[n+32>>2]|0;do if(!j)Fa=1036;else{if(c[j+480>>2]|0){Xd(j,n);break}k=n;if((c[j+304>>2]|0)>>>0>k>>>0){Fa=1036;break}if((c[j+308>>2]|0)>>>0<=k>>>0){Fa=1036;break}Da=j+300|0;c[n>>2]=c[Da>>2];c[Da>>2]=n}while(0);do if((Fa|0)==1036)if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Da=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}while(0);if(l)break M;c[Ea+24>>2]=3;break M}while(0);break}default:c[Ea+24>>2]=2}while(0);j=c[w>>2]|0;n=j+1|0;j=j+q|0;t=j+1|0;u=j+2|0;c[w>>2]=u;switch(a[P>>0]|0){case 83:case 85:{j=j+3|0;c[w>>2]=j;G=j;break}default:{G=0;j=u}}F=V+18|0;switch(a[F>>0]|0){case 83:case 85:{j=j+1|0;c[w>>2]=j;D=j;break}default:D=0}C=V+16|0;if((a[C>>0]|0)==76){y=0;x=0}else{if(!J)m=0;else m=c[J>>2]|0;k=(c[V+72>>2]|0)+n|0;l=c[V+8>>2]|0;if(l)k=(c[l>>2]|0)+k|0;y=j+m|0;c[Ea+32>>2]=y+1;y=y+m|0;c[Ea+40>>2]=y+1;y=y+m|0;c[Ea+48>>2]=y+1;c[w>>2]=y+m;y=j+1|0;x=k}M=S+108|0;N=S+112|0;if(o<<16>>16>0){k=S+104|0;j=0;do{l=j+n|0;m=c[M>>2]|0;if((c[N>>2]|0)>(m|0)){c[M>>2]=m+1;Da=c[k>>2]|0;a[Da+(m*20|0)>>0]=90;b[Da+(m*20|0)+2>>1]=0;c[Da+(m*20|0)+4>>2]=p;c[Da+(m*20|0)+8>>2]=j;c[Da+(m*20|0)+12>>2]=l;c[Da+(m*20|0)+16>>2]=0;a[Da+(m*20|0)+1>>0]=0}else Di(S,90,p,j,l)|0;j=j+1|0}while((j|0)!=(q|0))}j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Da=c[S+104>>2]|0;a[Da+(j*20|0)>>0]=92;b[Da+(j*20|0)+2>>1]=0;c[Da+(j*20|0)+4>>2]=n;c[Da+(j*20|0)+8>>2]=q;c[Da+(j*20|0)+12>>2]=t;c[Da+(j*20|0)+16>>2]=0;a[Da+(j*20|0)+1>>0]=0}else Di(S,92,n,q,t)|0;I=V+8|0;q=c[I>>2]|0;do if(q){r=c[q>>2]|0;s=(c[V+72>>2]|0)+n|0;o=c[f>>2]|0;m=r+1|0;n=m*5|0;l=n+20|0;p=o+272|0;N:do if(c[p>>2]|0)if(!(a[o+81>>0]|0))Fa=1074;else{n=0;l=1}else{do if(!(0<0|(0==0?(e[o+276>>1]|0)>>>0>>0:0))){j=o+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=1075;break N}j=o+296|0;k=c[j>>2]|0;if(!k){j=o+292|0;break}else{c[j>>2]=c[k>>2];Fa=o+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=1075;break N}}else j=o+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=1074}while(0);if((Fa|0)==1074){k=_d(o,l,0)|0;Fa=1075}do if((Fa|0)==1075){do if(!k){j=o+81|0;if(a[j>>0]|0){n=0;p=1;break}if(a[o+82>>0]|0){n=0;p=1;break}a[j>>0]=1;if((c[o+180>>2]|0)>0)c[o+264>>2]=1;c[p>>2]=(c[p>>2]|0)+1;j=c[o+236>>2]|0;if(!j){n=0;p=1;break}c[j+12>>2]=7;n=0;p=1}else{c[k+16>>2]=k+20+(m<<2);b[k+6>>1]=r;b[k+8>>1]=m;a[k+4>>0]=a[o+78>>0]|0;c[k+12>>2]=o;c[k>>2]=1;gw(k+24|0,0,n+-4|0)|0;n=k;p=0}while(0);if(!((r|0)>0&(k|0)!=0)){l=p;break}o=k+16|0;l=q+4|0;m=0;while(1){j=Yi(f,c[l>>2]|0)|0;if(!j)j=c[(c[f>>2]|0)+8>>2]|0;c[k+20+(m<<2)>>2]=j;a[(c[o>>2]|0)+m>>0]=a[l+12>>0]|0;m=m+1|0;if((m|0)==(r|0)){l=p;break}else l=l+20|0}}while(0);o=(c[w>>2]|0)+1|0;c[w>>2]=o;m=V+64|0;j=c[m>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Da=c[S+104>>2]|0;a[Da+(k*20|0)>>0]=87;b[Da+(k*20|0)+2>>1]=0;c[Da+(k*20|0)+4>>2]=s;c[Da+(k*20|0)+8>>2]=j;c[Da+(k*20|0)+12>>2]=r;c[Da+(k*20|0)+16>>2]=0;a[Da+(k*20|0)+1>>0]=0}else k=Di(S,87,s,j,r)|0;j=c[S>>2]|0;O:do if(a[j+81>>0]|0){if(l|(c[j+480>>2]|0)!=0)break;Da=(c[n>>2]|0)+-1|0;c[n>>2]=Da;if(Da|0)break;j=c[n+12>>2]|0;do if(j|0){if(c[j+480>>2]|0){Xd(j,n);break O}l=n;if((c[j+304>>2]|0)>>>0>l>>>0)break;if((c[j+308>>2]|0)>>>0<=l>>>0)break;Da=j+300|0;c[n>>2]=c[Da>>2];c[Da>>2]=n;break O}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Da=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}else{Ca=c[S+104>>2]|0;Da=(c[M>>2]|0)+-1|0;a[Ca+(Da*20|0)+1>>0]=-9;c[Ca+(Da*20|0)+16>>2]=n}while(0);l=k+2|0;j=k+4|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Da=c[S+104>>2]|0;a[Da+(k*20|0)>>0]=16;b[Da+(k*20|0)+2>>1]=0;c[Da+(k*20|0)+4>>2]=l;c[Da+(k*20|0)+8>>2]=j;c[Da+(k*20|0)+12>>2]=l;c[Da+(k*20|0)+16>>2]=0;a[Da+(k*20|0)+1>>0]=0}else Di(S,16,l,j,l)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Da=c[S+104>>2]|0;a[Da+(j*20|0)>>0]=12;b[Da+(j*20|0)+2>>1]=0;c[Da+(j*20|0)+4>>2]=o;c[Da+(j*20|0)+8>>2]=0;c[Da+(j*20|0)+12>>2]=0;c[Da+(j*20|0)+16>>2]=0;a[Da+(j*20|0)+1>>0]=0}else j=Di(S,12,o,0,0)|0;m=c[m>>2]|0;k=r+-1|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;v=c[S+104>>2]|0;a[v+(l*20|0)>>0]=78;b[v+(l*20|0)+2>>1]=0;c[v+(l*20|0)+4>>2]=s;c[v+(l*20|0)+8>>2]=m;c[v+(l*20|0)+12>>2]=k;c[v+(l*20|0)+16>>2]=0;a[v+(l*20|0)+1>>0]=0;v=j;A=o;break}else{Di(S,78,s,m,k)|0;v=j;A=o;break}}else{v=0;A=0}while(0);j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Da=c[S+104>>2]|0;a[Da+(j*20|0)>>0]=121;b[Da+(j*20|0)+2>>1]=0;c[Da+(j*20|0)+4>>2]=O;c[Da+(j*20|0)+8>>2]=u;c[Da+(j*20|0)+12>>2]=0;c[Da+(j*20|0)+16>>2]=0;a[Da+(j*20|0)+1>>0]=0}else Di(S,121,O,u,0)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Da=c[S+104>>2]|0;a[Da+(j*20|0)>>0]=122;b[Da+(j*20|0)+2>>1]=0;c[Da+(j*20|0)+4>>2]=O;c[Da+(j*20|0)+8>>2]=t;c[Da+(j*20|0)+12>>2]=u;c[Da+(j*20|0)+16>>2]=0;a[Da+(j*20|0)+1>>0]=0}else Di(S,122,O,t,u)|0;j=c[V+80>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;t=c[S+104>>2]|0;a[t+(k*20|0)>>0]=52;b[t+(k*20|0)+2>>1]=0;c[t+(k*20|0)+4>>2]=j;c[t+(k*20|0)+8>>2]=0;c[t+(k*20|0)+12>>2]=u;c[t+(k*20|0)+16>>2]=0;a[t+(k*20|0)+1>>0]=0;t=k}else t=Di(S,52,j,0,u)|0;j=c[Oa>>2]|0;P:do if(!j){l=c[f>>2]|0;do if(!(c[Ba>>2]|0)){if(b[l+76>>1]&8)break;a[f+23>>0]=1}while(0);Q:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))Fa=1136;else{j=0;break P}else{do if((e[l+276>>1]|0)>=224){k=l+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];Da=l+284|0;c[Da>>2]=(c[Da>>2]|0)+1;break Q}k=l+296|0;j=c[k>>2]|0;if(!j){j=l+292|0;break}else{c[k>>2]=c[j>>2];Da=l+284|0;c[Da>>2]=(c[Da>>2]|0)+1;break Q}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=1136}while(0);if((Fa|0)==1136)j=_d(l,224,0)|0;if(!j){j=0;break}T=j+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[j>>2]=l;k=l+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=j;c[j+8>>2]=l;c[j+4>>2]=0;c[k>>2]=j;c[j+20>>2]=381479589;c[j+12>>2]=f;c[Oa>>2]=j;Di(j,61,0,1,0)|0}while(0);q=j+108|0;r=j+112|0;s=j+104|0;u=V+84|0;o=V;p=0;do{n=c[o+40>>2]|0;k=c[o+48>>2]|0;l=c[q>>2]|0;if((c[r>>2]|0)>(l|0)){c[q>>2]=l+1;Da=c[s>>2]|0;a[Da+(l*20|0)>>0]=73;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=0;c[Da+(l*20|0)+8>>2]=k;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0}else Di(j,73,0,k,0)|0;k=c[(c[o+68>>2]|0)+20>>2]|0;if(!k)k=0;else k=c[k>>2]|0;p=(p|0)>(k|0)?p:k;do if(!(c[u>>2]|0)){Da=c[n+32>>2]|0;do if((Da|0)==43457|(Da|0)==43467){k=o+60|0;l=c[k>>2]|0;m=c[q>>2]|0;if((c[r>>2]|0)>(m|0)){c[q>>2]=m+1;Da=c[s>>2]|0;a[Da+(m*20|0)>>0]=70;b[Da+(m*20|0)+2>>1]=0;c[Da+(m*20|0)+4>>2]=0;c[Da+(m*20|0)+8>>2]=l;c[Da+(m*20|0)+12>>2]=0;c[Da+(m*20|0)+16>>2]=0;a[Da+(m*20|0)+1>>0]=0}else Di(j,70,0,l,0)|0;k=(c[k>>2]|0)+1|0;l=c[q>>2]|0;if((c[r>>2]|0)>(l|0)){c[q>>2]=l+1;Da=c[s>>2]|0;a[Da+(l*20|0)>>0]=70;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=0;c[Da+(l*20|0)+8>>2]=k;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0;break}else{Di(j,70,0,k,0)|0;break}}while(0);if(!(c[n+4>>2]&4096))break;k=c[o+56>>2]|0;if(!k)break;l=c[q>>2]|0;if((c[r>>2]|0)>(l|0)){c[q>>2]=l+1;Da=c[s>>2]|0;a[Da+(l*20|0)>>0]=-118;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=k;c[Da+(l*20|0)+8>>2]=0;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0}else Di(j,138,k,0,0)|0;k=(c[o+60>>2]|0)+1|0;l=c[q>>2]|0;if((c[r>>2]|0)>(l|0)){c[q>>2]=l+1;Da=c[s>>2]|0;a[Da+(l*20|0)>>0]=70;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=0;c[Da+(l*20|0)+8>>2]=k;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0;break}else{Di(j,70,0,k,0)|0;break}}while(0);o=c[o+32>>2]|0}while((o|0)!=0);n=c[w>>2]|0;c[w>>2]=n+p;c[Ea+20>>2]=n+1;n=(G|0)!=0;if(n){j=c[V+24>>2]|0;do if(j){if((a[j>>0]|0)!=-88){m=Jj(f,j,G)|0;Fa=1172;break}m=c[Oa>>2]|0;j=c[j+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;Da=c[m+104>>2]|0;a[Da+(l*20|0)>>0]=78;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=j;c[Da+(l*20|0)+8>>2]=G;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0;break}else{Di(m,78,j,G,0)|0;break}}else{m=Jj(f,0,G)|0;Fa=1172}while(0);do if((Fa|0)==1172){if((m|0)==(G|0))break;j=c[Oa>>2]|0;if(!j)break;k=j+108|0;l=c[k>>2]|0;if((c[j+112>>2]|0)>(l|0)){c[k>>2]=l+1;Da=c[j+104>>2]|0;a[Da+(l*20|0)>>0]=79;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=m;c[Da+(l*20|0)+8>>2]=G;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0;break}else{Di(j,79,m,G,0)|0;break}}while(0);pm(f,G,(a[C>>0]|0)==86?3:0)}o=(D|0)!=0;if(o){j=c[V+28>>2]|0;do if(j){if((a[j>>0]|0)!=-88){m=Jj(f,j,D)|0;Fa=1186;break}m=c[Oa>>2]|0;j=c[j+28>>2]|0;k=m+108|0;l=c[k>>2]|0;if((c[m+112>>2]|0)>(l|0)){c[k>>2]=l+1;Da=c[m+104>>2]|0;a[Da+(l*20|0)>>0]=78;b[Da+(l*20|0)+2>>1]=0;c[Da+(l*20|0)+4>>2]=j;c[Da+(l*20|0)+8>>2]=D;c[Da+(l*20|0)+12>>2]=0;c[Da+(l*20|0)+16>>2]=0;a[Da+(l*20|0)+1>>0]=0;break}else{Di(m,78,j,D,0)|0;break}}else{m=Jj(f,0,D)|0;Fa=1186}while(0);do if((Fa|0)==1186){if((m|0)==(D|0))break;j=c[Oa>>2]|0;if(!j)break;k=j+108|0;l=c[k>>2]|0;if((c[j+112>>2]|0)>(l|0)){c[k>>2]=l+1;Fa=c[j+104>>2]|0;a[Fa+(l*20|0)>>0]=79;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=m;c[Fa+(l*20|0)+8>>2]=D;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(j,79,m,D,0)|0;break}}while(0);pm(f,D,(a[C>>0]|0)==86?4:1)}j=a[P>>0]|0;if(n&j<<24>>24==(a[F>>0]|0)){j=j<<24>>24==83?57:55;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=j;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=G;c[Fa+(k*20|0)+8>>2]=0;c[Fa+(k*20|0)+12>>2]=D;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else k=Di(S,j,G,0,D)|0;qm(c[Ea>>2]|0,c[z>>2]|0,0);j=c[R>>2]|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=36;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=j;c[Fa+(l*20|0)+8>>2]=1;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(S,36,j,1,0)|0;rm(Ea);j=c[R>>2]|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=-118;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=j;c[Fa+(l*20|0)+8>>2]=0;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(S,138,j,0,0)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=E;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,E,0)|0;l=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))j=(c[S+104>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else j=59308;c[j+8>>2]=l;j=a[P>>0]|0}do if(j<<24>>24==83){if(!(o&(a[C>>0]|0)!=86))break;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=101;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=G;c[Fa+(j*20|0)+8>>2]=D;c[Fa+(j*20|0)+12>>2]=G;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0;break}else{Di(S,101,G,D,G)|0;break}}while(0);do if((a[P>>0]|0)!=87){j=c[B>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=36;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=j;c[Fa+(k*20|0)+8>>2]=1;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0;break}else{Di(S,36,j,1,0)|0;break}}while(0);j=c[R>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=36;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=j;c[Fa+(k*20|0)+8>>2]=1;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(S,36,j,1,0)|0;j=c[H>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=36;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=j;c[Fa+(k*20|0)+8>>2]=1;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(S,36,j,1,0)|0;m=(y|0)!=0;do if((J|0)!=0&m){j=(c[J>>2]|0)+-1|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=78;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=x;c[Fa+(k*20|0)+8>>2]=y;c[Fa+(k*20|0)+12>>2]=j;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(S,78,x,y,j)|0;j=c[Ea+32>>2]|0;k=(c[J>>2]|0)+-1|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=78;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=y;c[Fa+(l*20|0)+8>>2]=j;c[Fa+(l*20|0)+12>>2]=k;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(S,78,y,j,k)|0;j=c[Ea+40>>2]|0;k=(c[J>>2]|0)+-1|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=78;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=y;c[Fa+(l*20|0)+8>>2]=j;c[Fa+(l*20|0)+12>>2]=k;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(S,78,y,j,k)|0;j=c[Ea+48>>2]|0;k=(c[J>>2]|0)+-1|0;l=c[M>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=78;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=y;c[Fa+(l*20|0)+8>>2]=j;c[Fa+(l*20|0)+12>>2]=k;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(S,78,y,j,k)|0;break}}while(0);j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=E;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,E,0)|0;k=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))j=(c[S+104>>2]|0)+(((t|0)<0?k+-1|0:t)*20|0)|0;else j=59308;c[j+8>>2]=k;if(m)sm(f,J,x,y,E);j=a[P>>0]|0;R:do if(j<<24>>24==83){tm(Ea,3,0,0)|0;if((a[F>>0]|0)==87)break;if((a[C>>0]|0)!=86){tm(Ea,1,D,0)|0;tm(Ea,2,G,0)|0;break}l=c[_>>2]|0;j=l+-1|0;c[_>>2]=j;k=c[M>>2]|0;um(Ea,57,c[R>>2]|0,D,c[H>>2]|0,j);tm(Ea,2,G,0)|0;tm(Ea,1,0,0)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=k;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,k,0)|0;k=c[S+12>>2]|0;j=0-l|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,S,j);break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[M>>2];break}}else{if((a[F>>0]|0)==85){do if(j<<24>>24==85){Fa=(a[C>>0]|0)==86;tm(Ea,3,D,0)|0;if(!Fa)break;tm(Ea,2,G,0)|0;tm(Ea,1,0,0)|0;break R}else tm(Ea,3,D,0)|0;while(0);tm(Ea,1,0,0)|0;tm(Ea,2,G,0)|0;break}tm(Ea,3,0,0)|0;if((a[F>>0]|0)==87)break;if((a[C>>0]|0)!=86){do if(o){j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=47;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=D;c[Fa+(j*20|0)+8>>2]=0;c[Fa+(j*20|0)+12>>2]=1;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0;break}else{j=Di(S,47,D,0,1)|0;break}}else j=0;while(0);tm(Ea,1,0,0)|0;tm(Ea,2,G,0)|0;if(!o)break;k=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))j=(c[S+104>>2]|0)+(((j|0)<0?k+-1|0:j)*20|0)|0;else j=59308;c[j+8>>2]=k;break}k=c[M>>2]|0;if(o){l=(c[_>>2]|0)+-1|0;c[_>>2]=l;um(Ea,57,c[R>>2]|0,D,c[H>>2]|0,l)}else l=0;tm(Ea,1,0,0)|0;tm(Ea,2,G,0)|0;if(!o)break;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=k;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,k,0)|0;k=c[S+12>>2]|0;j=~l;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,S,j);break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[M>>2];break}}while(0);k=c[S+12>>2]|0;j=0-K|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,S,j);else c[(c[k+64>>2]|0)+(j<<2)>>2]=c[M>>2];sl(Q);j=c[M>>2]|0;if(!(c[I>>2]|0))p=0;else{if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=70;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=A;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else j=Di(S,70,0,A,0)|0;l=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))k=(c[S+104>>2]|0)+(((v|0)<0?l+-1|0:v)*20|0)|0;else k=59308;c[k+8>>2]=l;p=j;j=l}if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;o=c[S+104>>2]|0;a[o+(j*20|0)>>0]=36;b[o+(j*20|0)+2>>1]=0;c[o+(j*20|0)+4>>2]=O;c[o+(j*20|0)+8>>2]=0;c[o+(j*20|0)+12>>2]=0;c[o+(j*20|0)+16>>2]=0;a[o+(j*20|0)+1>>0]=0;o=j}else o=Di(S,36,O,0,0)|0;j=a[P>>0]|0;do if((a[F>>0]|0)==85){do if(j<<24>>24==85){Fa=(a[C>>0]|0)==86;tm(Ea,3,D,0)|0;if(!Fa)break;tm(Ea,2,G,0)|0}else tm(Ea,3,D,0)|0;while(0);tm(Ea,1,0,0)|0;k=a[(c[S>>2]|0)+81>>0]|0;l=c[M>>2]|0}else{tm(Ea,3,0,0)|0;if(j<<24>>24!=83){k=c[M>>2]|0;m=tm(Ea,1,0,1)|0;tm(Ea,2,G,0)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=k;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,k,0)|0;l=c[M>>2]|0;k=a[(c[S>>2]|0)+81>>0]|0;if(!(k<<24>>24))j=(c[S+104>>2]|0)+(((m|0)<0?l+-1|0:m)*20|0)|0;else j=59308;c[j+8>>2]=l;break}do if((a[C>>0]|0)!=86){j=c[M>>2]|0;if((a[F>>0]|0)==87){n=tm(Ea,1,G,1)|0;l=tm(Ea,2,0,1)|0;break}else{n=tm(Ea,1,D,1)|0;l=tm(Ea,2,G,1)|0;break}}else{j=c[M>>2]|0;l=tm(Ea,2,G,1)|0;n=tm(Ea,1,0,1)|0}while(0);k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=11;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=0;c[Fa+(k*20|0)+8>>2]=j;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(S,11,0,j,0)|0;k=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))j=(c[S+104>>2]|0)+(((l|0)<0?k+-1|0:l)*20|0)|0;else j=59308;c[j+8>>2]=k;m=tm(Ea,1,0,1)|0;j=c[M>>2]|0;if((c[N>>2]|0)>(j|0)){c[M>>2]=j+1;Fa=c[S+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=k;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(S,11,0,k,0)|0;l=c[M>>2]|0;k=a[(c[S>>2]|0)+81>>0]|0;if(!(k<<24>>24)){j=l+-1|0;Fa=c[S+104>>2]|0;c[Fa+(((n|0)<0?j:n)*20|0)+8>>2]=l;j=Fa+(((m|0)<0?j:m)*20|0)|0}else{c[14829]=l;j=59308}c[j+8>>2]=l}while(0);if(!(k<<24>>24))j=(c[S+104>>2]|0)+(((o|0)<0?l+-1|0:o)*20|0)|0;else j=59308;c[j+8>>2]=l;j=c[R>>2]|0;if((c[N>>2]|0)>(l|0)){c[M>>2]=l+1;Fa=c[S+104>>2]|0;a[Fa+(l*20|0)>>0]=-118;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=j;c[Fa+(l*20|0)+8>>2]=0;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(S,138,j,0,0)|0;do if(c[I>>2]|0){j=c[u>>2]|0;do if(j|0){k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=70;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=1;c[Fa+(k*20|0)+8>>2]=j;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(S,70,1,j,0)|0;j=c[V+88>>2]|0;k=c[M>>2]|0;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=70;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=0;c[Fa+(k*20|0)+8>>2]=j;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0;break}else{Di(S,70,0,j,0)|0;break}}while(0);k=c[M>>2]|0;if(!(a[(c[S>>2]|0)+81>>0]|0))j=(c[S+104>>2]|0)+(((p|0)<0?k+-1|0:p)*20|0)|0;else j=59308;c[j+4>>2]=k;if((c[N>>2]|0)>(k|0)){c[M>>2]=k+1;Fa=c[S+104>>2]|0;a[Fa+(k*20|0)>>0]=66;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=A;c[Fa+(k*20|0)+8>>2]=0;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0;break}else{Di(S,66,A,0,0)|0;break}}while(0);n=Ja+108|0;j=c[n>>2]|0;m=Ja+112|0;if((c[m>>2]|0)>(j|0)){c[n>>2]=j+1;Fa=c[Ja+104>>2]|0;a[Fa+(j*20|0)>>0]=11;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=0;c[Fa+(j*20|0)+8>>2]=X;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(Ja,11,0,X,0)|0;l=Ja+12|0;j=c[l>>2]|0;k=0-Z|0;if(((c[j+56>>2]|0)+(c[j+60>>2]|0)|0)<0)mk(j,Ja,k);else c[(c[j+64>>2]|0)+(k<<2)>>2]=c[n>>2];c[La+28>>2]=0;rl(f,h,-1,La,Ga,i,W,X);j=c[l>>2]|0;k=1-Z|0;if(((c[j+56>>2]|0)+(c[j+60>>2]|0)|0)<0)mk(j,Ja,k);else c[(c[j+64>>2]|0)+(k<<2)>>2]=c[n>>2];j=c[n>>2]|0;if((c[m>>2]|0)>(j|0)){c[n>>2]=j+1;Fa=c[Ja+104>>2]|0;a[Fa+(j*20|0)>>0]=66;b[Fa+(j*20|0)+2>>1]=0;c[Fa+(j*20|0)+4>>2]=Y;c[Fa+(j*20|0)+8>>2]=0;c[Fa+(j*20|0)+12>>2]=0;c[Fa+(j*20|0)+16>>2]=0;a[Fa+(j*20|0)+1>>0]=0}else Di(Ja,66,Y,0,0)|0;k=c[l>>2]|0;j=2-Z|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,Ja,j);j=0;Fa=1796;break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[n>>2];j=0;Fa=1796;break}}else{z=(U|0)!=0;do if(z){k=c[h>>2]|0;j=c[k>>2]|0;if((j|0)>0){k=k+4|0;while(1){b[k+16+2>>1]=0;if((j|0)>1){k=k+20|0;j=j+-1|0}else break}}j=c[U>>2]|0;if((j|0)>0){k=U+4|0;while(1){b[k+16+2>>1]=0;if((j|0)>1){k=k+20|0;j=j+-1|0}else break}}j=h+6|0;if((b[j>>1]|0)<=66)break;b[j>>1]=66}else b[h+6>>1]=0;while(0);k=c[La>>2]|0;j=(k|0)==0;S:do if(l&j)R=1;else{if(l|j){R=0;break}j=c[U>>2]|0;if((j|0)!=(c[k>>2]|0)){R=0;break}if((j|0)<=0){R=1;break}j=0;while(1){if((a[U+4+(j*20|0)+12>>0]|0)!=(a[k+4+(j*20|0)+12>>0]|0)){R=0;break S}if(bk(0,c[U+4+(j*20|0)>>2]|0,c[k+4+(j*20|0)>>2]|0,-1)|0){R=0;break S}j=j+1|0;if((j|0)>=(c[U>>2]|0)){R=1;break}}}while(0);W=c[_>>2]|0;V=W+-1|0;c[_>>2]=V;S=Ea+12|0;c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;c[S+12>>2]=0;c[S+16>>2]=0;c[Ea>>2]=f;c[Ea+4>>2]=ta;c[Ea+8>>2]=Ma;S=f+44|0;c[Ma+16>>2]=(c[S>>2]|0)+1;if(z)j=c[U>>2]|0;else j=0;A=Ma+12|0;c[A>>2]=j;c[Ma+24>>2]=U;do if($|0){j=c[$>>2]|0;if((j|0)<=0)break;n=Da+4|0;o=Da+8|0;p=Da+12|0;q=Da+16|0;r=Da+24|0;l=$+4|0;m=0;while(1){k=c[l>>2]|0;c[n>>2]=133;c[o>>2]=134;c[p>>2]=67;c[q>>2]=0;c[r>>2]=Ea;c[Da>>2]=0;if(k){_j(Da,k)|0;j=c[$>>2]|0}m=m+1|0;if((m|0)>=(j|0))break;else l=l+20|0}}while(0);n=c[La>>2]|0;do if(n|0){j=c[n>>2]|0;if((j|0)<=0)break;o=Da+4|0;p=Da+8|0;q=Da+12|0;r=Da+16|0;s=Da+24|0;l=n+4|0;m=0;while(1){k=c[l>>2]|0;c[o>>2]=133;c[p>>2]=134;c[q>>2]=67;c[r>>2]=0;c[s>>2]=Ea;c[Da>>2]=0;if(k){_j(Da,k)|0;j=c[n>>2]|0}m=m+1|0;if((m|0)>=(j|0))break;else l=l+20|0}}while(0);do if(!X)C=D;else{if(!z){c[Da+4>>2]=133;c[Da+8>>2]=134;c[Da+12>>2]=67;c[Da+16>>2]=0;c[Da+24>>2]=Ea;c[Da>>2]=0;_j(Da,X)|0;C=D;break}j=Da+8|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[Da>>2]=f;c[Da+4>>2]=135;c[Da+24>>2]=h;j=c[u>>2]|0;if(j|0)_j(Da,j)|0;C=c[sa>>2]|0;c[Da+4>>2]=133;c[Da+8>>2]=134;c[Da+12>>2]=67;c[Da+16>>2]=0;c[Da+24>>2]=Ea;c[Da>>2]=0;_j(Da,X)|0}while(0);I=Ma+32|0;y=Ma+36|0;c[y>>2]=c[I>>2];do if(!(c[t>>2]|0)){if(c[u>>2]|0){x=0;j=0;break}if((c[Ma+44>>2]|0)!=1){x=0;j=0;break}j=c[c[Ma+40>>2]>>2]|0;p=c[j+20>>2]|0;do if(!p){j=0;k=0}else{if((c[p>>2]|0)!=1){j=0;k=0;break}k=c[j+8>>2]|0;o=a[k>>0]|0;j=(d[208+(o&255)>>0]|0)+-109|0;o=o<<24>>24==0|(j|0)!=0;if(o)l=j;else{m=44311;n=k;do{n=n+1|0;m=m+1|0;wa=a[n>>0]|0;l=(d[208+(wa&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(wa<<24>>24==0|(l|0)!=0))}if(l){if(!o){l=44315;do{k=k+1|0;l=l+1|0;wa=a[k>>0]|0;j=(d[208+(wa&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(wa<<24>>24==0|(j|0)!=0))}if(!j){l=1;k=2}else{j=0;k=0;break}}else{l=0;k=1}j=gk(Na,p,0)|0;if(!j){j=0;break}a[j+16>>0]=l}while(0);x=k&255}else{x=0;j=0}while(0);T=Ma+44|0;n=c[T>>2]|0;if((n|0)>0){q=Ea+24|0;r=Ma+40|0;s=Da+4|0;t=Da+8|0;u=Da+12|0;v=Da+16|0;w=Da+24|0;p=0;k=b[q>>1]|0;do{k=k|8;b[q>>1]=k;o=c[(c[(c[r>>2]|0)+(p<<4)>>2]|0)+20>>2]|0;do if(o){l=c[o>>2]|0;if((l|0)<=0)break;m=o+4|0;n=0;k=l;while(1){l=c[m>>2]|0;c[s>>2]=133;c[t>>2]=134;c[u>>2]=67;c[v>>2]=0;c[w>>2]=Ea;c[Da>>2]=0;if(l){_j(Da,l)|0;k=c[o>>2]|0}n=n+1|0;if((n|0)>=(k|0))break;else m=m+20|0}k=b[q>>1]|0;n=c[T>>2]|0}while(0);k=k&-9;b[q>>1]=k;p=p+1|0}while((p|0)<(n|0))}o=c[S>>2]|0;c[Ma+20>>2]=o;T:do if(!(a[xa>>0]|0)){do if(z){y=f+40|0;p=c[y>>2]|0;c[y>>2]=p+1;O=Ma+4|0;c[O>>2]=p;p=c[f>>2]|0;r=c[U>>2]|0;n=(c[I>>2]|0)+1+r|0;o=n*5|0;m=o+20|0;q=p+272|0;U:do if(c[q>>2]|0)if(!(a[p+81>>0]|0))Fa=1431;else{E=0;q=1;z=0}else{do if(!(0<0|(0==0?(e[p+276>>1]|0)>>>0>>0:0))){k=p+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];Fa=p+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=1432;break U}k=p+296|0;l=c[k>>2]|0;if(!l){k=p+292|0;break}else{c[k>>2]=c[l>>2];Fa=p+284|0;c[Fa>>2]=(c[Fa>>2]|0)+1;Fa=1432;break U}}else k=p+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;Fa=1431}while(0);if((Fa|0)==1431){l=_d(p,m,0)|0;Fa=1432}do if((Fa|0)==1432){do if(!l){k=p+81|0;if(a[k>>0]|0){m=0;q=1;break}if(a[p+82>>0]|0){m=0;q=1;break}a[k>>0]=1;if((c[p+180>>2]|0)>0)c[p+264>>2]=1;c[q>>2]=(c[q>>2]|0)+1;k=c[p+236>>2]|0;if(!k){m=0;q=1;break}c[k+12>>2]=7;m=0;q=1}else{c[l+16>>2]=l+20+(n<<2);b[l+6>>1]=r;b[l+8>>1]=n;a[l+4>>0]=a[p+78>>0]|0;c[l+12>>2]=p;c[l>>2]=1;gw(l+24|0,0,o+-4|0)|0;m=l;q=0}while(0);if(!((r|0)>0&(l|0)!=0)){E=m;z=l;break}p=l+16|0;n=U+4|0;o=0;while(1){k=Yi(f,c[n>>2]|0)|0;if(!k)k=c[(c[f>>2]|0)+8>>2]|0;c[l+20+(o<<2)>>2]=k;a[(c[p>>2]|0)+o>>0]=a[n+12>>0]|0;o=o+1|0;if((o|0)==(r|0)){E=m;z=l;break}else n=n+20|0}}while(0);m=c[O>>2]|0;k=c[A>>2]|0;P=Ja+108|0;l=c[P>>2]|0;Q=Ja+112|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;H=c[Ja+104>>2]|0;a[H+(l*20|0)>>0]=114;b[H+(l*20|0)+2>>1]=0;c[H+(l*20|0)+4>>2]=m;c[H+(l*20|0)+8>>2]=k;c[H+(l*20|0)+12>>2]=0;c[H+(l*20|0)+16>>2]=0;a[H+(l*20|0)+1>>0]=0;H=l}else H=Di(Ja,114,m,k,0)|0;k=c[Ja>>2]|0;V:do if(a[k+81>>0]|0){if(q|(c[k+480>>2]|0)!=0)break;Ea=(c[E>>2]|0)+-1|0;c[E>>2]=Ea;if(Ea|0){q=0;break}k=c[E+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,E);q=0;break V}l=E;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;q=k+300|0;c[E>>2]=c[q>>2];c[q>>2]=E;q=0;break V}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](E);q=0;break}else{q=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);q=0;break}}else{if((H|0)<0)k=(c[P>>2]|0)+-1|0;else k=H;l=c[Ja+104>>2]|0;m=l+(k*20|0)+1|0;if(a[m>>0]|0){Ei(Ja,l+(k*20|0)|0,E,-9);break}if(q){q=1;break}c[l+(k*20|0)+16>>2]=E;a[m>>0]=-9;q=0}while(0);A=c[S>>2]|0;M=A+1|0;G=A+2|0;J=A+3|0;K=c[_>>2]|0;F=K+-1|0;N=A+4|0;D=K+-2|0;c[_>>2]=D;A=A+5|0;k=c[U>>2]|0;Ea=k+N|0;B=Ea+1|0;c[S>>2]=Ea+k;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=70;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=0;c[Ea+(k*20|0)+8>>2]=G;c[Ea+(k*20|0)+12>>2]=0;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else Di(Ja,70,0,G,0)|0;k=(c[U>>2]|0)+N|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Ea=c[Ja+104>>2]|0;a[Ea+(l*20|0)>>0]=73;b[Ea+(l*20|0)+2>>1]=0;c[Ea+(l*20|0)+4>>2]=0;c[Ea+(l*20|0)+8>>2]=A;c[Ea+(l*20|0)+12>>2]=k;c[Ea+(l*20|0)+16>>2]=0;a[Ea+(l*20|0)+1>>0]=0}else Di(Ja,73,0,A,k)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=12;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=N;c[Ea+(k*20|0)+8>>2]=D;c[Ea+(k*20|0)+12>>2]=0;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else Di(Ja,12,N,D,0)|0;C=ql(f,ta,C,U,0,R?576:64,0)|0;if(!C)break T;if((c[U>>2]|0)==(a[C+47>>0]|0)){n=0;o=0;m=0}else{if(!(a[Ga>>0]|0))k=43118;else k=(c[za>>2]&1|0)==0?43109:43118;c[Aa>>2]=k;nk(f,0,44319,Aa);u=c[U>>2]|0;p=c[I>>2]|0;if((p|0)>0){n=c[Ma+28>>2]|0;l=u;k=u;m=0;while(1){o=(c[n+(m*24|0)+12>>2]|0)>=(l|0)&1;k=k+o|0;m=m+1|0;if((m|0)>=(p|0)){x=k;break}else l=l+o|0}}else x=u;w=(x|0)==1;do if(w){k=f+19|0;l=a[k>>0]|0;if(!(l<<24>>24)){v=(c[S>>2]|0)+1|0;c[S>>2]=v;break}else{v=l+-1<<24>>24;a[k>>0]=v;v=c[f+148+((v&255)<<2)>>2]|0;break}}else{k=f+32|0;l=c[k>>2]|0;m=f+28|0;n=c[m>>2]|0;if((n|0)<(x|0)){v=c[S>>2]|0;c[S>>2]=v+x;v=v+1|0;break}else{c[k>>2]=l+x;c[m>>2]=n-x;v=l;break}}while(0);t=c[Oa>>2]|0;if((u|0)>0){m=t+108|0;n=t+112|0;o=t+104|0;k=U+4|0;l=0;while(1){p=l+v|0;r=Jj(f,c[k>>2]|0,p)|0;do if((r|0)!=(p|0)){s=c[m>>2]|0;if((c[n>>2]|0)>(s|0)){c[m>>2]=s+1;Ea=c[o>>2]|0;a[Ea+(s*20|0)>>0]=79;b[Ea+(s*20|0)+2>>1]=0;c[Ea+(s*20|0)+4>>2]=r;c[Ea+(s*20|0)+8>>2]=p;c[Ea+(s*20|0)+12>>2]=0;c[Ea+(s*20|0)+16>>2]=0;a[Ea+(s*20|0)+1>>0]=0;break}else{Di(t,79,r,p,0)|0;break}}while(0);l=l+1|0;if((l|0)==(u|0))break;else k=k+20|0}l=c[I>>2]|0}else l=p;if((l|0)>0){o=Ma+28|0;k=u;n=0;do{m=c[o>>2]|0;if((c[m+(n*24|0)+12>>2]|0)>=(k|0)){Vj(Ja,c[m+(n*24|0)>>2]|0,c[m+(n*24|0)+4>>2]|0,c[m+(n*24|0)+8>>2]|0,k+v|0);k=k+1|0;l=c[I>>2]|0}n=n+1|0}while((n|0)<(l|0))}n=f+19|0;k=a[n>>0]|0;if(!(k<<24>>24)){m=(c[S>>2]|0)+1|0;c[S>>2]=m}else{m=k+-1<<24>>24;a[n>>0]=m;m=c[f+148+((m&255)<<2)>>2]|0}k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=92;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=v;c[Ea+(k*20|0)+8>>2]=x;c[Ea+(k*20|0)+12>>2]=m;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else Di(Ja,92,v,x,m)|0;k=c[O>>2]|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Ea=c[Ja+104>>2]|0;a[Ea+(l*20|0)>>0]=-125;b[Ea+(l*20|0)+2>>1]=0;c[Ea+(l*20|0)+4>>2]=k;c[Ea+(l*20|0)+8>>2]=m;c[Ea+(l*20|0)+12>>2]=0;c[Ea+(l*20|0)+16>>2]=0;a[Ea+(l*20|0)+1>>0]=0}else Di(Ja,131,k,m,0)|0;do if(m|0){k=a[n>>0]|0;if((k&255)>=8)break;a[n>>0]=k+1<<24>>24;c[f+148+((k&255)<<2)>>2]=m}while(0);do if(w){if(!v)break;k=a[n>>0]|0;if((k&255)>=8)break;a[n>>0]=k+1<<24>>24;c[f+148+((k&255)<<2)>>2]=v}else{k=f+28|0;if((c[k>>2]|0)>=(x|0))break;c[k>>2]=x;c[f+32>>2]=v}while(0);sl(C);o=c[y>>2]|0;c[y>>2]=o+1;c[Ma+8>>2]=o;k=a[n>>0]|0;if(!(k<<24>>24)){m=(c[S>>2]|0)+1|0;c[S>>2]=m}else{m=k+-1<<24>>24;a[n>>0]=m;m=c[f+148+((m&255)<<2)>>2]|0}k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=116;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=o;c[Ea+(k*20|0)+8>>2]=m;c[Ea+(k*20|0)+12>>2]=x;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else Di(Ja,116,o,m,x)|0;k=c[O>>2]|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Ea=c[Ja+104>>2]|0;a[Ea+(l*20|0)>>0]=34;b[Ea+(l*20|0)+2>>1]=0;c[Ea+(l*20|0)+4>>2]=k;c[Ea+(l*20|0)+8>>2]=V;c[Ea+(l*20|0)+12>>2]=0;c[Ea+(l*20|0)+16>>2]=0;a[Ea+(l*20|0)+1>>0]=0}else Di(Ja,34,k,V,0)|0;a[Ma+1>>0]=1;n=1}W:do if(R){if(b[ua>>1]&4){Fa=1537;break}do if(!n){if(a[C+48>>0]|0)break;u=c[P>>2]|0;t=0;break W}while(0);c[La>>2]=0;k=c[La+20>>2]|0;l=c[Ja>>2]|0;if(a[l+81>>0]|0){Fa=1537;break}Fa=c[Ja+104>>2]|0;Da=Fa+(k*20|0)+1|0;Ea=Fa+(k*20|0)+16|0;kg(l,a[Da>>0]|0,c[Ea>>2]|0);a[Da>>0]=0;c[Ea>>2]=0;a[Fa+(k*20|0)>>0]=-86;Fa=1537}else Fa=1537;while(0);do if((Fa|0)==1537){l=c[P>>2]|0;if(!n){u=l;t=0;break}k=c[O>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;u=c[Ja+104>>2]|0;a[u+(l*20|0)>>0]=126;b[u+(l*20|0)+2>>1]=0;c[u+(l*20|0)+4>>2]=k;c[u+(l*20|0)+8>>2]=m;c[u+(l*20|0)+12>>2]=o;c[u+(l*20|0)+16>>2]=0;a[u+(l*20|0)+1>>0]=0;u=l;t=1;break}else{Di(Ja,126,k,m,o)|0;u=l;t=1;break}}while(0);l=c[U>>2]|0;if((l|0)>0){s=Ja+104|0;r=0;do{X:do if(t){k=r+B|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[s>>2]|0;a[Fa+(l*20|0)>>0]=90;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=o;c[Fa+(l*20|0)+8>>2]=r;c[Fa+(l*20|0)+12>>2]=k;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(Ja,90,o,r,k)|0;break}}else{a[Ma>>0]=1;k=c[U+4+(r*20|0)>>2]|0;p=r+B|0;do if(k){if((a[k>>0]|0)!=-88){n=Jj(f,k,p)|0;break}n=c[Oa>>2]|0;k=c[k+28>>2]|0;l=n+108|0;m=c[l>>2]|0;if((c[n+112>>2]|0)>(m|0)){c[l>>2]=m+1;Fa=c[n+104>>2]|0;a[Fa+(m*20|0)>>0]=78;b[Fa+(m*20|0)+2>>1]=0;c[Fa+(m*20|0)+4>>2]=k;c[Fa+(m*20|0)+8>>2]=p;c[Fa+(m*20|0)+12>>2]=0;c[Fa+(m*20|0)+16>>2]=0;a[Fa+(m*20|0)+1>>0]=0;break X}else{Di(n,78,k,p,0)|0;break X}}else n=Jj(f,0,p)|0;while(0);if((n|0)==(p|0))break;k=c[Oa>>2]|0;if(!k)break;l=k+108|0;m=c[l>>2]|0;if((c[k+112>>2]|0)>(m|0)){c[l>>2]=m+1;Fa=c[k+104>>2]|0;a[Fa+(m*20|0)>>0]=79;b[Fa+(m*20|0)+2>>1]=0;c[Fa+(m*20|0)+4>>2]=n;c[Fa+(m*20|0)+8>>2]=p;c[Fa+(m*20|0)+12>>2]=0;c[Fa+(m*20|0)+16>>2]=0;a[Fa+(m*20|0)+1>>0]=0;break}else{Di(k,79,n,p,0)|0;break}}while(0);r=r+1|0;l=c[U>>2]|0}while((r|0)<(l|0))}if(z|0)c[z>>2]=(c[z>>2]|0)+1;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=87;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=A;c[Fa+(k*20|0)+8>>2]=B;c[Fa+(k*20|0)+12>>2]=l;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else k=Di(Ja,87,A,B,l)|0;l=c[Ja>>2]|0;Y:do if(a[l+81>>0]|0){if(q|(c[l+480>>2]|0)!=0)break;Fa=(c[E>>2]|0)+-1|0;c[E>>2]=Fa;if(Fa|0)break;k=c[E+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,E);break Y}l=E;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;Fa=k+300|0;c[E>>2]=c[Fa>>2];c[Fa>>2]=E;break Y}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](E);break}else{Fa=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);break}}else{if((k|0)<0)k=(c[P>>2]|0)+-1|0;l=c[Ja+104>>2]|0;m=l+(k*20|0)+1|0;if(a[m>>0]|0){Ei(Ja,l+(k*20|0)|0,E,-9);break}if(q)break;c[l+(k*20|0)+16>>2]=E;a[m>>0]=-9}while(0);o=c[P>>2]|0;k=o+1|0;if((c[Q>>2]|0)>(o|0)){c[P>>2]=k;Fa=c[Ja+104>>2]|0;a[Fa+(o*20|0)>>0]=16;b[Fa+(o*20|0)+2>>1]=0;c[Fa+(o*20|0)+4>>2]=k;c[Fa+(o*20|0)+8>>2]=0;c[Fa+(o*20|0)+12>>2]=k;c[Fa+(o*20|0)+16>>2]=0;a[Fa+(o*20|0)+1>>0]=0}else Di(Ja,16,k,0,k)|0;l=c[U>>2]|0;k=c[Oa>>2]|0;m=k+108|0;n=c[m>>2]|0;if((c[k+112>>2]|0)>(n|0)){c[m>>2]=n+1;Fa=c[k+104>>2]|0;a[Fa+(n*20|0)>>0]=77;b[Fa+(n*20|0)+2>>1]=0;c[Fa+(n*20|0)+4>>2]=B;c[Fa+(n*20|0)+8>>2]=A;c[Fa+(n*20|0)+12>>2]=l;c[Fa+(n*20|0)+16>>2]=0;a[Fa+(n*20|0)+1>>0]=0}else Di(k,77,B,A,l)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=12;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=J;c[Fa+(k*20|0)+8>>2]=F;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,12,J,F,0)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=47;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=G;c[Fa+(k*20|0)+8>>2]=V;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,47,G,V,0)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=12;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=N;c[Fa+(k*20|0)+8>>2]=D;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,12,N,D,0)|0;l=c[P>>2]|0;if(!(a[(c[Ja>>2]|0)+81>>0]|0))k=(c[Ja+104>>2]|0)+(((o|0)<0?l+-1|0:o)*20|0)|0;else k=59308;c[k+8>>2]=l;tl(f,M,Ma);k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=70;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=1;c[Fa+(k*20|0)+8>>2]=M;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,70,1,M,0)|0;do if(t){k=c[O>>2]|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=3;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=k;c[Fa+(l*20|0)+8>>2]=u;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(Ja,3,k,u,0)|0;break}}else{sl(C);k=c[Ja>>2]|0;if(a[k+81>>0]|0)break;Fa=c[Ja+104>>2]|0;Da=Fa+(H*20|0)+1|0;Ea=Fa+(H*20|0)+16|0;kg(k,a[Da>>0]|0,c[Ea>>2]|0);a[Da>>0]=0;c[Ea>>2]=0;a[Fa+(H*20|0)>>0]=-86}while(0);k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=12;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=J;c[Fa+(k*20|0)+8>>2]=F;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,12,J,F,0)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=11;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=0;c[Fa+(k*20|0)+8>>2]=V;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,11,0,V,0)|0;v=c[P>>2]|0;if((c[Q>>2]|0)>(v|0)){c[P>>2]=v+1;Fa=c[Ja+104>>2]|0;a[Fa+(v*20|0)>>0]=70;b[Fa+(v*20|0)+2>>1]=0;c[Fa+(v*20|0)+4>>2]=1;c[Fa+(v*20|0)+8>>2]=G;c[Fa+(v*20|0)+12>>2]=0;c[Fa+(v*20|0)+16>>2]=0;a[Fa+(v*20|0)+1>>0]=0}else Di(Ja,70,1,G,0)|0;k=c[P>>2]|0;if((c[Q>>2]|0)>(k|0)){c[P>>2]=k+1;Fa=c[Ja+104>>2]|0;a[Fa+(k*20|0)>>0]=66;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=J;c[Fa+(k*20|0)+8>>2]=0;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(Ja,66,J,0,0)|0;k=Ja+12|0;l=c[k>>2]|0;m=0-K|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,Ja,m);else c[(c[l+64>>2]|0)+(m<<2)>>2]=c[P>>2];u=c[P>>2]|0;l=u+2|0;if((c[Q>>2]|0)>(u|0)){c[P>>2]=u+1;Fa=c[Ja+104>>2]|0;a[Fa+(u*20|0)>>0]=47;b[Fa+(u*20|0)+2>>1]=0;c[Fa+(u*20|0)+4>>2]=M;c[Fa+(u*20|0)+8>>2]=l;c[Fa+(u*20|0)+12>>2]=0;c[Fa+(u*20|0)+16>>2]=0;a[Fa+(u*20|0)+1>>0]=0}else Di(Ja,47,M,l,0)|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=66;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=J;c[Fa+(l*20|0)+8>>2]=0;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(Ja,66,J,0,0)|0;q=c[Oa>>2]|0;if((c[T>>2]|0)>0){r=q+108|0;s=q+112|0;t=q+104|0;o=c[Ma+40>>2]|0;p=0;while(1){l=c[(c[o>>2]|0)+20>>2]|0;n=c[o+8>>2]|0;if(!l)m=0;else m=c[l>>2]|0;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;Fa=c[t>>2]|0;a[Fa+(l*20|0)>>0]=-99;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=n;c[Fa+(l*20|0)+8>>2]=m;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(q,157,n,m,0)|0;l=c[o+4>>2]|0;m=c[q>>2]|0;Z:do if(a[m+81>>0]|0){if(!(c[l+4>>2]&16))break;do if(m|0){if(c[m+480>>2]|0){Xd(m,l);break Z}n=l;if((c[m+304>>2]|0)>>>0>n>>>0)break;if((c[m+308>>2]|0)>>>0<=n>>>0)break;Fa=m+300|0;c[l>>2]=c[Fa>>2];c[Fa>>2]=l;break Z}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{Fa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}else{Ea=c[t>>2]|0;Fa=(c[r>>2]|0)+-1|0;a[Ea+(Fa*20|0)+1>>0]=-8;c[Ea+(Fa*20|0)+16>>2]=l}while(0);p=p+1|0;if((p|0)>=(c[T>>2]|0))break;else o=o+16|0}}l=u+1|0;Tj(f,X,l,16);rl(f,h,-1,La,Ga,i,l,v);l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=66;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=J;c[Fa+(l*20|0)+8>>2]=0;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(Ja,66,J,0,0)|0;m=c[k>>2]|0;l=1-K|0;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,Ja,l);else c[(c[m+64>>2]|0)+(l<<2)>>2]=c[P>>2];ul(f,Ma);l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=70;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=0;c[Fa+(l*20|0)+8>>2]=M;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0}else Di(Ja,70,0,M,0)|0;l=c[P>>2]|0;if((c[Q>>2]|0)>(l|0)){c[P>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=66;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=N;c[Fa+(l*20|0)+8>>2]=0;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(Ja,66,N,0,0)|0;break}}else{z=Ma+40|0;m=c[z>>2]|0;do if(!(c[sa>>2]|0)){l=c[h>>2]|0;if((c[l>>2]|0)!=1){Fa=1752;break}k=c[va>>2]|0;if((c[k>>2]|0)!=1){Fa=1752;break}if(c[k+28>>2]|0){Fa=1752;break}w=c[k+24>>2]|0;k=c[l+4>>2]|0;if(c[w+56>>2]|0){Fa=1752;break}if((n|0)==0|(a[k>>0]|0)!=-93){Fa=1752;break}if(!(c[(c[m+4>>2]|0)+4>>2]&256)){Fa=1752;break}if((w|0)==0?1:(c[k+4>>2]&2|0)!=0){Fa=1752;break}l=c[w+72>>2]|0;if(!l)u=-1e6;else{m=c[(c[f>>2]|0)+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){u=k;break}else k=k+1|0}s=f+40|0;v=c[s>>2]|0;c[s>>2]=v+1;s=w+28|0;t=c[s>>2]|0;n=c[Ba>>2]|0;n=(n|0)==0?f:n;k=n+84|0;l=c[k>>2]|0;m=1<>2]=l|m;if((u|0)!=1)break;r=c[n>>2]|0;k=r+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[n+199>>0]|0)break;l=Pe(c[r>>2]|0,0,r,Da,0,542)|0;if(l|0){cd(n,32157,ya);c[n+12>>2]=l;break}Ea=c[Da>>2]|0;c[(c[k>>2]|0)+20>>2]=Ea;k=c[r+92>>2]|0;n=c[Ea+4>>2]|0;c[n+4>>2]=c[Ea>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;q=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;Ea=(c[14820]|0)+1|0;c[14820]=Ea;c[14821]=(Ea|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;Fa=1688;break}else{k=Wa[c[29352>>2]&127](l)|0;Fa=1688}while(0);do if((Fa|0)==1688){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{Ea=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Ea;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);Ea=Se(c[n>>2]|0,o,q)|0;c[p>>2]=(c[o>>2]|0)-(q&65535);if((Ea|0)!=7)break;k=r+81|0;do if(!(a[k>>0]|0)){if(a[r+82>>0]|0)break;a[k>>0]=1;if((c[r+180>>2]|0)>0)c[r+264>>2]=1;k=r+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[r+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break _}while(0)}while(0);Hj(f,u,c[s>>2]|0,0,c[w>>2]|0);s=w+36|0;l=c[w+8>>2]|0;$:do if(!(c[s>>2]&32)){k=0;Fa=1706}else{if(!l){l=t;n=0;r=0;q=1;break}k=l;while(1){Fa=k+55|0;if(((d[Fa>>0]|d[Fa+1>>0]<<8)&3)==2){Fa=1706;break $}k=c[k+20>>2]|0;if(!k){k=0;Fa=1706;break}}}while(0);do if((Fa|0)==1706){if(l){n=w+46|0;do{Ea=l+55|0;do if(!((d[Ea>>0]|d[Ea+1>>0]<<8)&4)){m=b[l+48>>1]|0;if(m<<16>>16>=(b[n>>1]|0))break;if(c[l+36>>2]|0)break;if(k|0?m<<16>>16>=(b[k+48>>1]|0):0)break;k=l}while(0);l=c[l+20>>2]|0}while((l|0)!=0)}if(!k){l=t;n=0;r=0;q=1;break}l=c[k+44>>2]|0;n=Ij(f,k)|0;r=k;q=0}while(0);o=Ja+108|0;k=c[o>>2]|0;p=Ja+112|0;if((c[p>>2]|0)>(k|0)){c[o>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=108;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=v;c[Ea+(k*20|0)+8>>2]=l;c[Ea+(k*20|0)+12>>2]=u;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else k=Di(Ja,108,v,l,u)|0;if(!(a[(c[Ja>>2]|0)+81>>0]|0)){Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)+1>>0]=-3;c[Ea+(k*20|0)+16>>2]=1}aa:do if(n|0){k=c[Ja>>2]|0;if(!(a[k+81>>0]|0)){k=(c[o>>2]|0)+-1|0;l=c[Ja+104>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=n;a[m>>0]=-9;break}else{Ei(Ja,l+(k*20|0)|0,n,-9);break}}if(c[k+480>>2]|0)break;Ea=(c[n>>2]|0)+-1|0;c[n>>2]=Ea;if(Ea|0)break;k=c[n+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,n);break aa}l=n;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;Ea=k+300|0;c[n>>2]=c[Ea>>2];c[Ea>>2]=n;break aa}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{Ea=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-Ea;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);k=c[(c[z>>2]|0)+8>>2]|0;l=c[o>>2]|0;if((c[p>>2]|0)>(l|0)){c[o>>2]=l+1;Ea=c[Ja+104>>2]|0;a[Ea+(l*20|0)>>0]=93;b[Ea+(l*20|0)+2>>1]=0;c[Ea+(l*20|0)+4>>2]=v;c[Ea+(l*20|0)+8>>2]=k;c[Ea+(l*20|0)+12>>2]=0;c[Ea+(l*20|0)+16>>2]=0;a[Ea+(l*20|0)+1>>0]=0}else Di(Ja,93,v,k,0)|0;k=c[o>>2]|0;if((c[p>>2]|0)>(k|0)){c[o>>2]=k+1;Ea=c[Ja+104>>2]|0;a[Ea+(k*20|0)>>0]=117;b[Ea+(k*20|0)+2>>1]=0;c[Ea+(k*20|0)+4>>2]=v;c[Ea+(k*20|0)+8>>2]=0;c[Ea+(k*20|0)+12>>2]=0;c[Ea+(k*20|0)+16>>2]=0;a[Ea+(k*20|0)+1>>0]=0}else Di(Ja,117,v,0,0)|0;if((a[f+199>>0]|0)!=2)break;do if(q){k=c[w>>2]|0;m=59952;l=59952}else{if(c[s>>2]&32){Ea=r+55|0;k=c[w>>2]|0;if(((d[Ea>>0]|d[Ea+1>>0]<<8)&3)==2){m=59952;l=59952;break}}else k=c[w>>2]|0;m=44411;l=c[r>>2]|0}while(0);c[Ca>>2]=k;c[Ca+4>>2]=m;c[Ca+8>>2]=l;nk(f,0,44393,Ca)}else Fa=1752;while(0);do if((Fa|0)==1752){do if(c[y>>2]|0){ba:do if((n|0)>0){k=0;do{if(c[(c[m+(k<<4)+4>>2]|0)+4>>2]&32|0)break ba;k=k+1|0}while((k|0)<(n|0))}else k=0;while(0);if((k|0)!=(n|0)){m=0;break}m=o+1|0;c[S>>2]=m;k=Ja+108|0;l=c[k>>2]|0;if((c[Ja+112>>2]|0)>(l|0)){c[k>>2]=l+1;Ea=c[Ja+104>>2]|0;a[Ea+(l*20|0)>>0]=70;b[Ea+(l*20|0)+2>>1]=0;c[Ea+(l*20|0)+4>>2]=0;c[Ea+(l*20|0)+8>>2]=m;c[Ea+(l*20|0)+12>>2]=0;c[Ea+(l*20|0)+16>>2]=0;a[Ea+(l*20|0)+1>>0]=0;break}else{Di(Ja,70,0,m,0)|0;break}}else m=0;while(0);ul(f,Ma);n=ql(f,ta,C,j,0,x,0)|0;if(!n)break T;tl(f,m,Ma);do if(m|0){k=Ja+108|0;l=c[k>>2]|0;if((c[Ja+112>>2]|0)>(l|0)){c[k>>2]=l+1;Fa=c[Ja+104>>2]|0;a[Fa+(l*20|0)>>0]=70;b[Fa+(l*20|0)+2>>1]=0;c[Fa+(l*20|0)+4>>2]=1;c[Fa+(l*20|0)+8>>2]=m;c[Fa+(l*20|0)+12>>2]=0;c[Fa+(l*20|0)+16>>2]=0;a[Fa+(l*20|0)+1>>0]=0;break}else{Di(Ja,70,1,m,0)|0;break}}while(0);do if((a[n+47>>0]|0)>0){k=c[n+36>>2]|0;l=Ja+108|0;m=c[l>>2]|0;if((c[Ja+112>>2]|0)>(m|0)){c[l>>2]=m+1;Fa=c[Ja+104>>2]|0;a[Fa+(m*20|0)>>0]=11;b[Fa+(m*20|0)+2>>1]=0;c[Fa+(m*20|0)+4>>2]=0;c[Fa+(m*20|0)+8>>2]=k;c[Fa+(m*20|0)+12>>2]=0;c[Fa+(m*20|0)+16>>2]=0;a[Fa+(m*20|0)+1>>0]=0;break}else{Di(Ja,11,0,k,0)|0;break}}while(0);sl(n);p=c[Oa>>2]|0;if((c[T>>2]|0)<=0)break;q=p+108|0;r=p+112|0;s=p+104|0;n=c[z>>2]|0;o=0;while(1){k=c[(c[n>>2]|0)+20>>2]|0;m=c[n+8>>2]|0;if(!k)l=0;else l=c[k>>2]|0;k=c[q>>2]|0;if((c[r>>2]|0)>(k|0)){c[q>>2]=k+1;Fa=c[s>>2]|0;a[Fa+(k*20|0)>>0]=-99;b[Fa+(k*20|0)+2>>1]=0;c[Fa+(k*20|0)+4>>2]=m;c[Fa+(k*20|0)+8>>2]=l;c[Fa+(k*20|0)+12>>2]=0;c[Fa+(k*20|0)+16>>2]=0;a[Fa+(k*20|0)+1>>0]=0}else Di(p,157,m,l,0)|0;k=c[n+4>>2]|0;l=c[p>>2]|0;ca:do if(a[l+81>>0]|0){if(!(c[k+4>>2]&16))break;do if(l|0){if(c[l+480>>2]|0){Xd(l,k);break ca}m=k;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;Fa=l+300|0;c[k>>2]=c[Fa>>2];c[Fa>>2]=k;break ca}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Fa=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else{Ea=c[s>>2]|0;Fa=(c[q>>2]|0)+-1|0;a[Ea+(Fa*20|0)+1>>0]=-8;c[Ea+(Fa*20|0)+16>>2]=k}while(0);o=o+1|0;if((o|0)>=(c[T>>2]|0))break;else n=n+16|0}}while(0);c[La>>2]=0;Tj(f,X,V,16);rl(f,h,-1,0,0,i,V,V);k=Ja+12|0}while(0);l=c[k>>2]|0;k=0-W|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,Ja,k);else c[(c[l+64>>2]|0)+(k<<2)>>2]=c[Ja+108>>2];Fa=1796;break E}while(0);k=1}while(0);if((Fa|0)==1796){if((a[Ga+1>>0]|0)==3){c[Ha>>2]=43109;nk(f,0,44319,Ha)}do if(c[La>>2]|0){r=La+4|0;c[Ia>>2]=(c[r>>2]|0)>0?43127:43150;nk(f,0,44319,Ia);p=c[$>>2]|0;I=c[Oa>>2]|0;H=c[La+24>>2]|0;G=c[_>>2]|0;t=G+-1|0;c[_>>2]=t;q=c[La>>2]|0;E=a[i>>0]|0;x=i+4|0;C=c[x>>2]|0;y=c[h>>2]|0;s=La+16|0;k=c[s>>2]|0;do if(k|0){l=c[La+12>>2]|0;o=I+108|0;m=c[o>>2]|0;n=I+112|0;if((c[n>>2]|0)>(m|0)){c[o>>2]=m+1;Ia=c[I+104>>2]|0;a[Ia+(m*20|0)>>0]=12;b[Ia+(m*20|0)+2>>1]=0;c[Ia+(m*20|0)+4>>2]=l;c[Ia+(m*20|0)+8>>2]=k;c[Ia+(m*20|0)+12>>2]=0;c[Ia+(m*20|0)+16>>2]=0;a[Ia+(m*20|0)+1>>0]=0}else Di(I,12,l,k,0)|0;k=c[o>>2]|0;if((c[n>>2]|0)>(k|0)){c[o>>2]=k+1;Ia=c[I+104>>2]|0;a[Ia+(k*20|0)>>0]=11;b[Ia+(k*20|0)+2>>1]=0;c[Ia+(k*20|0)+4>>2]=0;c[Ia+(k*20|0)+8>>2]=H;c[Ia+(k*20|0)+12>>2]=0;c[Ia+(k*20|0)+16>>2]=0;a[Ia+(k*20|0)+1>>0]=0}else Di(I,11,0,H,0)|0;k=c[I+12>>2]|0;l=~c[s>>2];if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,I,l);break}else{c[(c[k+64>>2]|0)+(l<<2)>>2]=c[o>>2];break}}while(0);F=c[La+8>>2]|0;da:do switch(E<<24>>24){case 9:case 10:case 13:{z=p;A=c[i+8>>2]|0;B=0;break}default:{l=f+19|0;k=a[l>>0]|0;if(!(k<<24>>24)){k=f+44|0;o=(c[k>>2]|0)+1|0;c[k>>2]=o;k=0}else{k=k+-1<<24>>24;a[l>>0]=k;o=c[f+148+((k&255)<<2)>>2]|0}if((E|2)<<24>>24==14)if(!(k<<24>>24)){z=f+44|0;A=(c[z>>2]|0)+1|0;c[z>>2]=A;z=0;B=o;break da}else{A=k+-1<<24>>24;a[l>>0]=A;z=0;A=c[f+148+((A&255)<<2)>>2]|0;B=o;break da}if((p|0)==1)if(!(k<<24>>24)){z=f+44|0;A=(c[z>>2]|0)+1|0;c[z>>2]=A;z=1;B=o;break da}else{A=k+-1<<24>>24;a[l>>0]=A;z=1;A=c[f+148+((A&255)<<2)>>2]|0;B=o;break da}else{k=f+32|0;n=c[k>>2]|0;l=f+28|0;m=c[l>>2]|0;if((m|0)<(p|0)){z=f+44|0;A=c[z>>2]|0;c[z>>2]=A+p;z=p;A=A+1|0;B=o;break da}else{c[k>>2]=n+p;c[l>>2]=m-p;z=p;A=n;B=o;break da}}}}while(0);q=(c[q>>2]|0)-(c[r>>2]|0)|0;D=La+32|0;do if(!(a[D>>0]&1)){n=I+108|0;k=c[n>>2]|0;o=I+112|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;Ia=c[I+104>>2]|0;a[Ia+(k*20|0)>>0]=35;b[Ia+(k*20|0)+2>>1]=0;c[Ia+(k*20|0)+4>>2]=F;c[Ia+(k*20|0)+8>>2]=H;c[Ia+(k*20|0)+12>>2]=0;c[Ia+(k*20|0)+16>>2]=0;a[Ia+(k*20|0)+1>>0]=0}else k=Di(I,35,F,H,0)|0;l=c[h+16>>2]|0;if((l|0)<=0){l=1;v=F;break}m=c[n>>2]|0;if((c[o>>2]|0)>(m|0)){c[n>>2]=m+1;v=c[I+104>>2]|0;a[v+(m*20|0)>>0]=47;b[v+(m*20|0)+2>>1]=0;c[v+(m*20|0)+4>>2]=l;c[v+(m*20|0)+8>>2]=t;c[v+(m*20|0)+12>>2]=1;c[v+(m*20|0)+16>>2]=0;a[v+(m*20|0)+1>>0]=0;l=1;v=F;break}else{Di(I,47,l,t,1)|0;l=1;v=F;break}}else{o=f+44|0;p=(c[o>>2]|0)+1|0;c[o>>2]=p;o=f+40|0;v=c[o>>2]|0;c[o>>2]=v+1;o=I+108|0;do if(c[s>>2]|0){k=c[o>>2]|0;l=I+112|0;if((c[l>>2]|0)>(k|0)){c[o>>2]=k+1;T=c[I+104>>2]|0;a[T+(k*20|0)>>0]=17;T=T+(k*20|0)+1|0;U=T+19|0;do{a[T>>0]=0;T=T+1|0}while((T|0)<(U|0));m=k;n=l;break}else{m=Di(I,17,0,0,0)|0;n=l;break}}else{m=0;n=I+112|0}while(0);k=z+1+q|0;l=c[o>>2]|0;if((c[n>>2]|0)>(l|0)){c[o>>2]=l+1;Ia=c[I+104>>2]|0;a[Ia+(l*20|0)>>0]=116;b[Ia+(l*20|0)+2>>1]=0;c[Ia+(l*20|0)+4>>2]=v;c[Ia+(l*20|0)+8>>2]=p;c[Ia+(l*20|0)+12>>2]=k;c[Ia+(l*20|0)+16>>2]=0;a[Ia+(l*20|0)+1>>0]=0}else Di(I,116,v,p,k)|0;k=c[o>>2]|0;if(m|0){if(!(a[(c[I>>2]|0)+81>>0]|0))l=(c[I+104>>2]|0)+(((m|0)<0?k+-1|0:m)*20|0)|0;else l=59308;c[l+8>>2]=k}if((c[n>>2]|0)>(k|0)){c[o>>2]=k+1;Ia=c[I+104>>2]|0;a[Ia+(k*20|0)>>0]=34;b[Ia+(k*20|0)+2>>1]=0;c[Ia+(k*20|0)+4>>2]=F;c[Ia+(k*20|0)+8>>2]=H;c[Ia+(k*20|0)+12>>2]=0;c[Ia+(k*20|0)+16>>2]=0;a[Ia+(k*20|0)+1>>0]=0}else k=Di(I,34,F,H,0)|0;l=c[h+16>>2]|0;do if((l|0)>0){m=c[o>>2]|0;if((c[n>>2]|0)>(m|0)){c[o>>2]=m+1;h=c[I+104>>2]|0;a[h+(m*20|0)>>0]=47;b[h+(m*20|0)+2>>1]=0;c[h+(m*20|0)+4>>2]=l;c[h+(m*20|0)+8>>2]=t;c[h+(m*20|0)+12>>2]=1;c[h+(m*20|0)+16>>2]=0;a[h+(m*20|0)+1>>0]=0;break}else{Di(I,47,l,t,1)|0;break}}while(0);l=c[o>>2]|0;if((c[n>>2]|0)>(l|0)){c[o>>2]=l+1;h=c[I+104>>2]|0;a[h+(l*20|0)>>0]=126;b[h+(l*20|0)+2>>1]=0;c[h+(l*20|0)+4>>2]=F;c[h+(l*20|0)+8>>2]=p;c[h+(l*20|0)+12>>2]=v;c[h+(l*20|0)+16>>2]=0;a[h+(l*20|0)+1>>0]=0;l=0;break}else{Di(I,126,F,p,v)|0;l=0;break}}while(0);w=k+1|0;u=l+q|0;if((z|0)>0){k=0;l=u+-1|0;do{l=l+((b[y+4+(k*20|0)+16>>1]|0)==0&1)|0;k=k+1|0}while((k|0)!=(z|0));r=I+108|0;s=I+112|0;t=I+104|0;q=z;while(1){m=q;q=q+-1|0;k=b[y+4+(q*20|0)+16>>1]|0;n=k<<16>>16==0;k=n?l:(k&65535)+-1|0;o=q+A|0;p=c[r>>2]|0;if((c[s>>2]|0)>(p|0)){c[r>>2]=p+1;h=c[t>>2]|0;a[h+(p*20|0)>>0]=90;b[h+(p*20|0)+2>>1]=0;c[h+(p*20|0)+4>>2]=v;c[h+(p*20|0)+8>>2]=k;c[h+(p*20|0)+12>>2]=o;c[h+(p*20|0)+16>>2]=0;a[h+(p*20|0)+1>>0]=0}else Di(I,90,v,k,o)|0;if((m|0)<=1)break;else l=l+(n<<31>>31)|0}}ea:do switch(E<<24>>24){case 12:case 14:{l=I+108|0;k=c[l>>2]|0;m=I+112|0;if((c[m>>2]|0)>(k|0)){c[l>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=90;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=v;c[i+(k*20|0)+8>>2]=u;c[i+(k*20|0)+12>>2]=A;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else Di(I,90,v,u,A)|0;k=c[l>>2]|0;if((c[m>>2]|0)>(k|0)){c[l>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=121;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=C;c[i+(k*20|0)+8>>2]=B;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else Di(I,121,C,B,0)|0;k=c[l>>2]|0;if((c[m>>2]|0)>(k|0)){c[l>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=122;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=C;c[i+(k*20|0)+8>>2]=A;c[i+(k*20|0)+12>>2]=B;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else Di(I,122,C,A,B)|0;k=c[l>>2]|0;if((k|0)<=0)break ea;b[(c[I+104>>2]|0)+((k+-1|0)*20|0)+2>>1]=8;break}case 11:{o=c[i+16>>2]|0;p=I+108|0;k=c[p>>2]|0;q=I+112|0;if((c[q>>2]|0)>(k|0)){c[p>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=92;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=A;c[i+(k*20|0)+8>>2]=z;c[i+(k*20|0)+12>>2]=B;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else k=Di(I,92,A,z,B)|0;l=c[I>>2]|0;fa:do if(!(a[l+81>>0]|0)){if((k|0)<0)k=(c[p>>2]|0)+-1|0;l=c[I+104>>2]|0;m=l+(k*20|0)|0;do if((z|0)<=-1){n=l+(k*20|0)+1|0;if(a[n>>0]|0)break;if((z|0)==-3){c[l+(k*20|0)+16>>2]=o;a[n>>0]=-3;break fa}if(!o)break fa;c[l+(k*20|0)+16>>2]=o;a[n>>0]=z;if((z|0)!=-12)break fa;i=o+12|0;c[i>>2]=(c[i>>2]|0)+1;break fa}while(0);Ei(I,m,o,z)}else{if((z|0)==-12)break;kg(l,z,o)}while(0);k=c[p>>2]|0;if((c[q>>2]|0)>(k|0)){c[p>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=-124;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=C;c[i+(k*20|0)+8>>2]=B;c[i+(k*20|0)+12>>2]=A;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0}else k=Di(I,132,C,B,A)|0;if(a[(c[I>>2]|0)+81>>0]|0)break ea;i=c[I+104>>2]|0;a[i+(k*20|0)+1>>0]=-3;c[i+(k*20|0)+16>>2]=z;break}case 10:break;case 9:{k=c[i+8>>2]|0;l=I+108|0;m=c[l>>2]|0;if((c[I+112>>2]|0)>(m|0)){c[l>>2]=m+1;i=c[I+104>>2]|0;a[i+(m*20|0)>>0]=81;b[i+(m*20|0)+2>>1]=0;c[i+(m*20|0)+4>>2]=k;c[i+(m*20|0)+8>>2]=z;c[i+(m*20|0)+12>>2]=0;c[i+(m*20|0)+16>>2]=0;a[i+(m*20|0)+1>>0]=0;break ea}else{Di(I,81,k,z,0)|0;break ea}}default:{k=c[x>>2]|0;l=I+108|0;m=c[l>>2]|0;if((c[I+112>>2]|0)>(m|0)){c[l>>2]=m+1;i=c[I+104>>2]|0;a[i+(m*20|0)>>0]=14;b[i+(m*20|0)+2>>1]=0;c[i+(m*20|0)+4>>2]=k;c[i+(m*20|0)+8>>2]=0;c[i+(m*20|0)+12>>2]=0;c[i+(m*20|0)+16>>2]=0;a[i+(m*20|0)+1>>0]=0;break ea}else{Di(I,14,k,0,0)|0;break ea}}}while(0);do if(B|0){if(E<<24>>24!=11){l=f+19|0;k=a[l>>0]|0;if(A){if((k&255)>=8)break;i=k+1<<24>>24;a[l>>0]=i;c[f+148+((k&255)<<2)>>2]=A;k=i}if((k&255)>=8)break;a[l>>0]=k+1<<24>>24;c[f+148+((k&255)<<2)>>2]=B;break}do if((z|0)==1){if(!A)break;k=f+19|0;l=a[k>>0]|0;if((l&255)>=8)break;a[k>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=A}else{k=f+28|0;if((c[k>>2]|0)>=(z|0))break;c[k>>2]=z;c[f+32>>2]=A}while(0);k=f+19|0;l=a[k>>0]|0;if((l&255)>=8)break;a[k>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=B}while(0);o=I+12|0;l=c[o>>2]|0;k=0-G|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0){mk(l,I,k);n=I+108|0}else{n=I+108|0;c[(c[l+64>>2]|0)+(k<<2)>>2]=c[n>>2]}k=c[n>>2]|0;m=I+112|0;l=(c[m>>2]|0)>(k|0);do if(!(a[D>>0]&1))if(l){c[n>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=5;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=F;c[i+(k*20|0)+8>>2]=w;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0;break}else{Di(I,5,F,w,0)|0;break}else if(l){c[n>>2]=k+1;i=c[I+104>>2]|0;a[i+(k*20|0)>>0]=3;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=F;c[i+(k*20|0)+8>>2]=w;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0;break}else{Di(I,3,F,w,0)|0;break}while(0);k=c[La+12>>2]|0;do if(k|0){l=c[n>>2]|0;if((c[m>>2]|0)>(l|0)){c[n>>2]=l+1;i=c[I+104>>2]|0;a[i+(l*20|0)>>0]=66;b[i+(l*20|0)+2>>1]=0;c[i+(l*20|0)+4>>2]=k;c[i+(l*20|0)+8>>2]=0;c[i+(l*20|0)+12>>2]=0;c[i+(l*20|0)+16>>2]=0;a[i+(l*20|0)+1>>0]=0;break}else{Di(I,66,k,0,0)|0;break}}while(0);l=c[o>>2]|0;k=~H;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0){mk(l,I,k);break}else{c[(c[l+64>>2]|0)+(k<<2)>>2]=c[n>>2];break}}while(0);l=c[Ja+12>>2]|0;k=0-aa|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,Ja,k);else c[(c[l+64>>2]|0)+(k<<2)>>2]=c[Ja+108>>2];k=(c[Ka>>2]|0)>0&1}if(!j){m=k;break c}ri(Na,j);m=k;break c}else w=j;while(0);y=c[f>>2]|0;c[Da>>2]=c[i>>2];c[Da+4>>2]=c[i+4>>2];c[Da+8>>2]=c[i+8>>2];c[Da+12>>2]=c[i+12>>2];c[Da+16>>2]=c[i+16>>2];c[Da+20>>2]=c[i+20>>2];j=(c[w+48>>2]|0)==0;ga:do if(j?(ka=w+60|0,(c[ka>>2]|0)==0):0){j=c[Oa>>2]|0;ha:do if(!j){if((c[f+116>>2]|0)==0?(b[y+76>>1]&8)==0:0)a[f+23>>0]=1;ia:do if(c[y+272>>2]|0)if(!(a[y+81>>0]|0))Fa=393;else{x=0;break ha}else{do if((e[y+276>>1]|0)>=224){j=y+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Na=y+284|0;c[Na>>2]=(c[Na>>2]|0)+1;break ia}j=y+296|0;k=c[j>>2]|0;if(!k){j=y+292|0;break}else{c[j>>2]=c[k>>2];Na=y+284|0;c[Na>>2]=(c[Na>>2]|0)+1;break ia}}else j=y+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;Fa=393}while(0);if((Fa|0)==393)k=_d(y,224,0)|0;if(!k)x=0;else{T=k+104|0;U=T+120|0;do{c[T>>2]=0;T=T+4|0}while((T|0)<(U|0));c[k>>2]=y;j=y+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[Oa>>2]=k;Di(k,61,0,1,0)|0;x=k}}else x=j;while(0);if((a[Da>>0]|0)==12){j=c[Da+4>>2]|0;k=c[c[h>>2]>>2]|0;l=x+108|0;m=c[l>>2]|0;if((c[x+112>>2]|0)>(m|0)){c[l>>2]=m+1;Na=c[x+104>>2]|0;a[Na+(m*20|0)>>0]=113;b[Na+(m*20|0)+2>>1]=0;c[Na+(m*20|0)+4>>2]=j;c[Na+(m*20|0)+8>>2]=k;c[Na+(m*20|0)+12>>2]=0;c[Na+(m*20|0)+16>>2]=0;a[Na+(m*20|0)+1>>0]=0}else Di(x,113,j,k,0)|0;a[Da>>0]=14}j=c[za>>2]|0;if(j&1024|0){n=(c[h+60>>2]|0)==0;l=n&1;j=h;k=1;while(1){m=c[j+52>>2]|0;if(!m)break;else{j=m;k=k+l|0}}c[ga>>2]=k;c[ga+4>>2]=(k|0)==1?59952:43321;nk(f,0,43298,ga);k=k&65535;if(!n){rl(f,j,-1,0,0,Da,1,1);k=0;j=0;Fa=640;break}while(1){rl(f,j,-1,0,0,Da,1,1);b[j+6>>1]=k;j=c[j+56>>2]|0;if(!j){k=0;j=0;Fa=640;break ga}}}do if(!(j&8192)){if(c[S>>2]|0){m=Bl(f,h,i)|0;break ga}if(!(c[w+52>>2]|0)){nk(f,1,43243,ea);nk(f,1,43258,fa)}p=h+4|0;switch(a[p>>0]|0){case -128:{o=h+12|0;k=w+12|0;c[k>>2]=c[o>>2];m=h+16|0;l=w+16|0;c[l>>2]=c[m>>2];Na=h+60|0;c[ka>>2]=c[Na>>2];j=kj(f,w,Da)|0;c[Na>>2]=0;if(j|0){k=0;Fa=640;break ga}c[ca>>2]=0;k=c[k>>2]|0;c[o>>2]=k;c[m>>2]=c[l>>2];do if(k){p=x+108|0;j=c[p>>2]|0;q=x+112|0;if((c[q>>2]|0)>(j|0)){c[p>>2]=j+1;Na=c[x+104>>2]|0;a[Na+(j*20|0)>>0]=20;b[Na+(j*20|0)+2>>1]=0;c[Na+(j*20|0)+4>>2]=k;c[Na+(j*20|0)+8>>2]=0;c[Na+(j*20|0)+12>>2]=0;c[Na+(j*20|0)+16>>2]=0;a[Na+(j*20|0)+1>>0]=0}else j=Di(x,20,k,0,0)|0;n=c[m>>2]|0;if(!n){u=j;break}k=c[o>>2]|0;l=n+1|0;m=c[p>>2]|0;if((c[q>>2]|0)>(m|0)){c[p>>2]=m+1;u=c[x+104>>2]|0;a[u+(m*20|0)>>0]=-104;b[u+(m*20|0)+2>>1]=0;c[u+(m*20|0)+4>>2]=k;c[u+(m*20|0)+8>>2]=l;c[u+(m*20|0)+12>>2]=n;c[u+(m*20|0)+16>>2]=0;a[u+(m*20|0)+1>>0]=0;u=j;break}else{Di(x,152,k,l,n)|0;u=j;break}}else u=0;while(0);nk(f,1,41509,ia);j=kj(f,h,Da)|0;n=c[ca>>2]|0;c[ca>>2]=w;t=h+6|0;k=b[t>>1]|0;l=b[w+6>>1]|0;m=k<<16>>16;o=l<<16>>16;do if(k<<16>>16>16){if((m+49|0)<(o|0)){k=l;break}if((m+31|0)<(o|0)){k=o+1&65535;break}else{k=(d[18112+(o-m)>>0]|0)+o&65535;break}}else{if((o+49|0)<(m|0))break;if((o+31|0)<(m|0)){k=m+1&65535;break}else{k=(d[18112+(m-o)>>0]|0)+m&65535;break}}while(0);b[t>>1]=k;k=c[ka>>2]|0;do if(k|0){Na=(uk(c[k+12>>2]|0,Ea)|0)!=0;k=c[Ea>>2]|0;if(!(Na&(k|0)>0))break;r=b[t>>1]|0;l=((k|0)<0)<<31>>31;s=k>>>0<8;do if(s){if(k>>>0<2){m=0;break}m=40;p=k;o=l;do{m=(m&65535)+65526|0;p=cw(p|0,o|0,1)|0;o=L()|0}while(o>>>0<0|(o|0)==0&p>>>0<8);o=m&65535;m=p;Fa=450}else{if(k>>>0>255){m=40;q=k;o=l;do{m=(m&65535)+40|0;Na=q;q=bw(q|0,o|0,4)|0;Ma=o;o=L()|0}while(Ma>>>0>0|(Ma|0)==0&Na>>>0>4095);p=m&65535;m=q}else{p=40;o=l;m=k}if(!(o>>>0>0|(o|0)==0&m>>>0>15)){o=p;Fa=450;break}do{p=(p&65535)+10&65535;Na=m;m=bw(m|0,o|0,1)|0;Ma=o;o=L()|0}while(Ma>>>0>0|(Ma|0)==0&Na>>>0>31);o=p;Fa=450}while(0);if((Fa|0)==450)m=(o&65535)+65526+(e[3648+((m&7)<<1)>>1]|0)&65535;if(r<<16>>16<=m<<16>>16)break;do if(s){if(k>>>0<2){k=0;break}m=40;do{m=(m&65535)+65526|0;k=cw(k|0,l|0,1)|0;l=L()|0}while(l>>>0<0|(l|0)==0&k>>>0<8);m=m&65535;Fa=465}else{if(k>>>0>255){m=40;do{m=(m&65535)+40|0;Na=k;k=bw(k|0,l|0,4)|0;Ma=l;l=L()|0}while(Ma>>>0>0|(Ma|0)==0&Na>>>0>4095);m=m&65535}else m=40;if(!(l>>>0>0|(l|0)==0&k>>>0>15)){Fa=465;break}do{m=(m&65535)+10&65535;Na=k;k=bw(k|0,l|0,1)|0;Ma=l;l=L()|0}while(Ma>>>0>0|(Ma|0)==0&Na>>>0>31);Fa=465}while(0);if((Fa|0)==465)k=(m&65535)+65526+(e[3648+((k&7)<<1)>>1]|0)&65535;b[t>>1]=k}while(0);if(u|0){l=c[x+108>>2]|0;if(!(a[(c[x>>2]|0)+81>>0]|0))k=(c[x+104>>2]|0)+(((u|0)<0?l+-1|0:u)*20|0)|0;else k=59308;c[k+8>>2]=l}break}case 127:case -127:{if((a[Da>>0]|0)==1)s=c[Da+4>>2]|0;else{k=f+40|0;l=c[k>>2]|0;c[k>>2]=l+1;k=x+108|0;j=c[k>>2]|0;if((c[x+112>>2]|0)>(j|0)){c[k>>2]=j+1;Na=c[x+104>>2]|0;a[Na+(j*20|0)>>0]=113;b[Na+(j*20|0)+2>>1]=0;c[Na+(j*20|0)+4>>2]=l;c[Na+(j*20|0)+8>>2]=0;c[Na+(j*20|0)+12>>2]=0;c[Na+(j*20|0)+16>>2]=0;a[Na+(j*20|0)+1>>0]=0}else j=Di(x,113,l,0,0)|0;c[h+24>>2]=j;j=h;while(1){k=c[j+56>>2]|0;if(!k)break;else j=k}s=j+8|0;c[s>>2]=c[s>>2]|32;s=l}a[Ea>>0]=1;c[Ea+4>>2]=s;c[Ea+16>>2]=0;c[Ea+8>>2]=0;c[Ea+12>>2]=0;j=kj(f,w,Ea)|0;if(j|0){k=0;Fa=640;break ga}Na=a[p>>0]|0;c[ca>>2]=0;q=h+60|0;r=c[q>>2]|0;c[q>>2]=0;a[Ea>>0]=Na<<24>>24==-127?2:1;switch(Na<<24>>24){case -128:{j=41509;break}case -126:{j=41519;break}case -127:{j=41529;break}default:j=41536}c[ha>>2]=j;nk(f,1,43277,ha);j=kj(f,h,Ea)|0;k=c[S>>2]|0;if(k|0)ri(y,k);n=c[ca>>2]|0;c[ca>>2]=w;c[S>>2]=0;if((a[p>>0]|0)==127){p=h+6|0;k=b[p>>1]|0;l=b[w+6>>1]|0;m=k<<16>>16;o=l<<16>>16;do if(k<<16>>16>16){if((m+49|0)<(o|0)){k=l;break}if((m+31|0)<(o|0)){k=o+1&65535;break}else{k=(d[18112+(o-m)>>0]|0)+o&65535;break}}else{if((o+49|0)<(m|0))break;if((o+31|0)<(m|0)){k=m+1&65535;break}else{k=(d[18112+(m-o)>>0]|0)+m&65535;break}}while(0);b[p>>1]=k}k=c[q>>2]|0;if(k|0)ni(y,k);c[q>>2]=r;c[h+12>>2]=0;c[h+16>>2]=0;do if((a[Da>>0]|0)!=1){q=f+56|0;p=c[q>>2]|0;l=p+-1|0;m=p+-2|0;c[q>>2]=m;pl(f,h,l);q=x+108|0;k=c[q>>2]|0;r=x+112|0;if((c[r>>2]|0)>(k|0)){c[q>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=36;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=s;c[Na+(k*20|0)+8>>2]=l;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,36,s,l,0)|0;o=c[q>>2]|0;rl(f,h,s,0,0,Da,m,l);m=x+12|0;k=c[m>>2]|0;l=1-p|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,x,l);else c[(c[k+64>>2]|0)+(l<<2)>>2]=c[q>>2];k=c[q>>2]|0;if((c[r>>2]|0)>(k|0)){c[q>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=5;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=s;c[Na+(k*20|0)+8>>2]=o;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,5,s,o,0)|0;l=c[m>>2]|0;k=0-p|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,x,k);else c[(c[l+64>>2]|0)+(k<<2)>>2]=c[q>>2];k=c[q>>2]|0;if((c[r>>2]|0)>(k|0)){c[q>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=117;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=s;c[Na+(k*20|0)+8>>2]=0;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0;break}else{Di(x,117,s,0,0)|0;break}}while(0);break}default:{u=f+40|0;t=c[u>>2]|0;s=t+1|0;c[u>>2]=t+2;u=x+108|0;j=c[u>>2]|0;v=x+112|0;if((c[v>>2]|0)>(j|0)){c[u>>2]=j+1;Na=c[x+104>>2]|0;a[Na+(j*20|0)>>0]=113;b[Na+(j*20|0)+2>>1]=0;c[Na+(j*20|0)+4>>2]=t;c[Na+(j*20|0)+8>>2]=0;c[Na+(j*20|0)+12>>2]=0;c[Na+(j*20|0)+16>>2]=0;a[Na+(j*20|0)+1>>0]=0}else j=Di(x,113,t,0,0)|0;c[h+24>>2]=j;j=h;while(1){k=c[j+56>>2]|0;if(!k)break;else j=k}k=j+8|0;c[k>>2]=c[k>>2]|32;a[Ea>>0]=1;k=Ea+4|0;c[k>>2]=t;c[Ea+16>>2]=0;c[Ea+8>>2]=0;c[Ea+12>>2]=0;j=kj(f,w,Ea)|0;if(j|0){k=0;Fa=640;break ga}j=c[u>>2]|0;if((c[v>>2]|0)>(j|0)){c[u>>2]=j+1;Na=c[x+104>>2]|0;a[Na+(j*20|0)>>0]=113;b[Na+(j*20|0)+2>>1]=0;c[Na+(j*20|0)+4>>2]=s;c[Na+(j*20|0)+8>>2]=0;c[Na+(j*20|0)+12>>2]=0;c[Na+(j*20|0)+16>>2]=0;a[Na+(j*20|0)+1>>0]=0}else j=Di(x,113,s,0,0)|0;c[h+28>>2]=j;c[ca>>2]=0;m=h+60|0;o=c[m>>2]|0;c[m>>2]=0;c[k>>2]=s;switch(a[p>>0]|0){case -128:{j=41509;break}case -126:{j=41519;break}case -127:{j=41529;break}default:j=41536}c[ja>>2]=j;nk(f,1,43277,ja);j=kj(f,h,Ea)|0;n=c[ca>>2]|0;c[ca>>2]=w;l=h+6|0;k=b[w+6>>1]|0;if((b[l>>1]|0)>k<<16>>16)b[l>>1]=k;k=c[m>>2]|0;if(k|0)ni(y,k);c[m>>2]=o;k=f+56|0;r=c[k>>2]|0;o=r+-1|0;p=r+-2|0;c[k>>2]=p;pl(f,h,o);k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=36;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=t;c[Na+(k*20|0)+8>>2]=o;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,36,t,o,0)|0;m=f+19|0;k=a[m>>0]|0;if(!(k<<24>>24)){Na=f+44|0;l=(c[Na>>2]|0)+1|0;c[Na>>2]=l}else{l=k+-1<<24>>24;a[m>>0]=l;l=c[f+148+((l&255)<<2)>>2]|0}k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;q=c[x+104>>2]|0;a[q+(k*20|0)>>0]=127;b[q+(k*20|0)+2>>1]=0;c[q+(k*20|0)+4>>2]=t;c[q+(k*20|0)+8>>2]=l;c[q+(k*20|0)+12>>2]=0;c[q+(k*20|0)+16>>2]=0;a[q+(k*20|0)+1>>0]=0;q=k}else q=Di(x,127,t,l,0)|0;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=28;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=s;c[Na+(k*20|0)+8>>2]=p;c[Na+(k*20|0)+12>>2]=l;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else k=Di(x,28,s,p,l)|0;if(!(a[(c[x>>2]|0)+81>>0]|0)){Na=c[x+104>>2]|0;a[Na+(k*20|0)+1>>0]=-3;c[Na+(k*20|0)+16>>2]=0}do if(l|0){k=a[m>>0]|0;if((k&255)>=8)break;a[m>>0]=k+1<<24>>24;c[f+148+((k&255)<<2)>>2]=l}while(0);rl(f,h,t,0,0,Da,p,o);m=x+12|0;k=c[m>>2]|0;l=1-r|0;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,x,l);else c[(c[k+64>>2]|0)+(l<<2)>>2]=c[u>>2];k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=5;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=t;c[Na+(k*20|0)+8>>2]=q;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,5,t,q,0)|0;l=c[m>>2]|0;k=0-r|0;if(((c[l+56>>2]|0)+(c[l+60>>2]|0)|0)<0)mk(l,x,k);else c[(c[l+64>>2]|0)+(k<<2)>>2]=c[u>>2];k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=117;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=s;c[Na+(k*20|0)+8>>2]=0;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,117,s,0,0)|0;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;Na=c[x+104>>2]|0;a[Na+(k*20|0)>>0]=117;b[Na+(k*20|0)+2>>1]=0;c[Na+(k*20|0)+4>>2]=t;c[Na+(k*20|0)+8>>2]=0;c[Na+(k*20|0)+12>>2]=0;c[Na+(k*20|0)+16>>2]=0;a[Na+(k*20|0)+1>>0]=0}else Di(x,117,t,0,0)|0}}if(c[h+56>>2]|0)break;m=f+212|0;k=c[m>>2]|0;if(!k)k=0;else{l=c[Oa>>2]|0;if((k|0)<0)k=(c[l+108>>2]|0)+-1|0;if(!(a[(c[l>>2]|0)+81>>0]|0))k=(c[l+104>>2]|0)+(k*20|0)|0;else k=59308;k=c[k+8>>2]|0}c[m>>2]=k}else{Al(f,h,Da);j=0;n=0}while(0);if(c[za>>2]&32){w=c[c[h>>2]>>2]|0;o=w+1|0;p=o*5|0;m=p+20|0;q=y+272|0;ja:do if(c[q>>2]|0)if(!(a[y+81>>0]|0))Fa=589;else{k=n;j=7;Fa=640;break ga}else{do if(!(0<0|(0==0?(e[y+276>>1]|0)>>>0>>0:0))){k=y+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];v=y+284|0;c[v>>2]=(c[v>>2]|0)+1;v=l;break ja}k=y+296|0;l=c[k>>2]|0;if(!l){k=y+292|0;break}else{c[k>>2]=c[l>>2];v=y+284|0;c[v>>2]=(c[v>>2]|0)+1;v=l;break ja}}else k=y+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;Fa=589}while(0);if((Fa|0)==589)v=_d(y,m,0)|0;if(!v){k=y+81|0;do if(!(a[k>>0]|0)){if(a[y+82>>0]|0)break;a[k>>0]=1;if((c[y+180>>2]|0)>0)c[y+264>>2]=1;c[q>>2]=(c[q>>2]|0)+1;k=c[y+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);if(!v){k=n;j=7;Fa=640;break}else{u=0;t=1}}else{c[v+16>>2]=v+20+(o<<2);b[v+6>>1]=w;b[v+8>>1]=o;a[v+4>>0]=a[y+78>>0]|0;c[v+12>>2]=y;c[v>>2]=1;gw(v+24|0,0,p+-4|0)|0;u=v;t=0}if((w|0)>0){m=y+8|0;k=v+20|0;l=0;while(1){Na=Cl(f,h,l)|0;c[k>>2]=Na;if(!Na)c[k>>2]=c[m>>2];l=l+1|0;if((l|0)==(w|0))break;else k=k+4|0}}q=x+104|0;r=u+12|0;s=u;p=h;do{o=p+24|0;m=c[o>>2]|0;k=(m|0)<0;do if(t){if(k)break;do if(!(a[(c[x>>2]|0)+81>>0]|0)){k=c[q>>2]|0;c[k+(m*20|0)+8>>2]=w;c[v>>2]=(c[v>>2]|0)+1;if(!(a[k+(m*20|0)+1>>0]|0))break;Ei(x,k+(m*20|0)|0,u,-9)}else{c[14829]=w;c[v>>2]=(c[v>>2]|0)+1}while(0);c[o>>2]=-1;k=p+28|0;l=c[k>>2]|0;if((l|0)<0)break;do if(!(a[(c[x>>2]|0)+81>>0]|0)){m=c[q>>2]|0;c[m+(l*20|0)+8>>2]=w;c[v>>2]=(c[v>>2]|0)+1;if(!(a[m+(l*20|0)+1>>0]|0))break;Ei(x,m+(l*20|0)|0,u,-9)}else{c[14829]=w;c[v>>2]=(c[v>>2]|0)+1}while(0);c[k>>2]=-1}else{if(k)break;k=c[x>>2]|0;ka:do if(!(a[k+81>>0]|0)){k=c[q>>2]|0;c[k+(m*20|0)+8>>2]=w;c[v>>2]=(c[v>>2]|0)+1;l=k+(m*20|0)+1|0;if(!(a[l>>0]|0)){c[k+(m*20|0)+16>>2]=u;a[l>>0]=-9;break}else{Ei(x,k+(m*20|0)|0,u,-9);break}}else{c[14829]=w;c[v>>2]=(c[v>>2]|0)+1;if(c[k+480>>2]|0)break;Na=(c[u>>2]|0)+-1|0;c[u>>2]=Na;if(Na|0)break;k=c[r>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,u);break ka}if((c[k+304>>2]|0)>>>0>s>>>0)break;if((c[k+308>>2]|0)>>>0<=s>>>0)break;Na=k+300|0;c[u>>2]=c[Na>>2];c[Na>>2]=u;break ka}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{Na=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-Na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}while(0);c[o>>2]=-1;o=p+28|0;m=c[o>>2]|0;if((m|0)<0)break;k=c[x>>2]|0;la:do if(!(a[k+81>>0]|0)){k=c[q>>2]|0;c[k+(m*20|0)+8>>2]=w;c[v>>2]=(c[v>>2]|0)+1;l=k+(m*20|0)+1|0;if(!(a[l>>0]|0)){c[k+(m*20|0)+16>>2]=u;a[l>>0]=-9;break}else{Ei(x,k+(m*20|0)|0,u,-9);break}}else{c[14829]=w;c[v>>2]=(c[v>>2]|0)+1;if(c[k+480>>2]|0)break;Na=(c[u>>2]|0)+-1|0;c[u>>2]=Na;if(Na|0)break;k=c[r>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,u);break la}if((c[k+304>>2]|0)>>>0>s>>>0)break;if((c[k+308>>2]|0)>>>0<=s>>>0)break;Na=k+300|0;c[u>>2]=c[Na>>2];c[Na>>2]=u;break la}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{Na=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-Na;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}while(0);c[o>>2]=-1}while(0);p=c[p+52>>2]|0}while((p|0)!=0);Na=(c[v>>2]|0)+-1|0;c[v>>2]=Na;if(Na|0){k=n;Fa=640;break}k=c[v+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,u);k=n;Fa=640;break ga}l=v;if((c[k+304>>2]|0)>>>0>l>>>0)break;if((c[k+308>>2]|0)>>>0<=l>>>0)break;k=k+300|0;c[v>>2]=c[k>>2];c[k>>2]=v;k=n;Fa=640;break ga}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](u);k=n;Fa=640;break}else{k=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);k=n;Fa=640;break}}else{k=n;Fa=640}}else Fa=374;while(0);if((Fa|0)==374){k=j?43237:43150;switch(a[h+4>>0]|0){case -128:{j=41509;break}case -126:{j=41519;break}case -127:{j=41529;break}default:j=41536}c[ba>>2]=k;c[ba+4>>2]=j;cd(f,43195,ba);k=0;j=1;Fa=640}if((Fa|0)==640){c[i+8>>2]=c[Da+8>>2];c[i+12>>2]=c[Da+12>>2];if(!k)m=j;else{pi(y,k,1);m=j}}if(c[h+56>>2]|0){Oa=m;Ra=Pa;return Oa|0}l=f+212|0;j=c[l>>2]|0;if(!j)j=0;else{k=c[Oa>>2]|0;if((j|0)<0)j=(c[k+108>>2]|0)+-1|0;if(!(a[(c[k>>2]|0)+81>>0]|0))j=(c[k+104>>2]|0)+(j*20|0)|0;else j=59308;j=c[j+8>>2]|0}c[l>>2]=j;Oa=m;Ra=Pa;return Oa|0}else m=1;while(0);j=c[Ma+28>>2]|0;do if(j|0){if(Na|0){if(c[Na+480>>2]|0){Xd(Na,j);break}i=j;if((c[Na+304>>2]|0)>>>0<=i>>>0?(c[Na+308>>2]|0)>>>0>i>>>0:0){i=Na+300|0;c[j>>2]=c[i>>2];c[i>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{i=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);j=c[Ma+40>>2]|0;do if(j|0){if(Na|0){if(c[Na+480>>2]|0){Xd(Na,j);break}i=j;if((c[Na+304>>2]|0)>>>0<=i>>>0?(c[Na+308>>2]|0)>>>0>i>>>0:0){i=Na+300|0;c[j>>2]=c[i>>2];c[i>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{i=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);l=f+212|0;j=c[l>>2]|0;if(!j)j=0;else{k=c[Oa>>2]|0;if((j|0)<0)j=(c[k+108>>2]|0)+-1|0;if(!(a[(c[k>>2]|0)+81>>0]|0))j=(c[k+104>>2]|0)+(j*20|0)|0;else j=59308;j=c[j+8>>2]|0}c[l>>2]=j;Oa=m;Ra=Pa;return Oa|0}function lj(b,f,g,h,i,j,k,l){b=b|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=Ra;Ra=Ra+16|0;m=s;r=c[b>>2]|0;do if(!f){f=(k|0)!=0;if(f|(l|0)!=0){c[m>>2]=f?44504:44507;cd(b,44468,m);break}else{q=pj(b,0,g,h)|0;n=6;break}}else{q=pj(b,f,g,h)|0;n=6}while(0);if((n|0)==6?q|0:0){o=(c[q>>2]|0)+-1|0;a:do if((d[b+200>>0]|0)>1?(p=c[q+8+(o*72|0)+8>>2]|0,p|0):0){if(!((h|0)!=0?(c[h>>2]|0)!=0:0))h=g;g=c[b>>2]|0;b:do if(!g){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](16)|0;n=35;break}f=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;g=59064;m=c[g>>2]|0;g=c[g+4>>2]|0;if((g|0)>0|(g|0)==0&m>>>0>0){t=c[14978]|0;g=Tv(m|0,g|0,f|0,((f|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&g>>>0<=t>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f)break a;m=Wa[c[29352>>2]&127](f)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0)c[14987]=m}else{if(c[g+272>>2]|0){if(a[g+81>>0]|0)break a}else{do if((e[g+276>>1]|0)>=16){m=g+300|0;f=c[m>>2]|0;if(f|0){c[m>>2]=c[f>>2];n=g+284|0;c[n>>2]=(c[n>>2]|0)+1;n=35;break b}m=g+296|0;f=c[m>>2]|0;if(!f){f=g+292|0;break}else{c[m>>2]=c[f>>2];n=g+284|0;c[n>>2]=(c[n>>2]|0)+1;n=35;break b}}else f=g+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(g,16,0)|0;n=35}while(0);if((n|0)==35)if(!f)break;m=f+4|0;g=m+12|0;do{a[m>>0]=0;m=m+1|0}while((m|0)<(g|0));c[f>>2]=p;n=h;p=c[n+4>>2]|0;t=f+4|0;c[t>>2]=c[n>>2];c[t+4>>2]=p;t=b+272|0;c[f+12>>2]=c[t>>2];c[t>>2]=f}while(0);if(c[i+4>>2]|0){t=qj(r,i)|0;c[q+8+(o*72|0)+12>>2]=t}c[q+8+(o*72|0)+20>>2]=j;c[q+8+(o*72|0)+44>>2]=k;c[q+8+(o*72|0)+48>>2]=l;t=q;Ra=s;return t|0}if(k|0)ni(r,k);do if(l|0){b=l+4|0;f=c[l>>2]|0;c:do if((c[b>>2]|0)>0){g=r+480|0;h=r+304|0;n=r+308|0;o=r+300|0;if(!r){m=0;while(1){f=c[f+(m<<3)>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);m=m+1|0;f=c[l>>2]|0;if((m|0)>=(c[b>>2]|0))break c}}m=0;do{f=c[f+(m<<3)>>2]|0;do if(f|0){if(c[g>>2]|0){Xd(r,f);break}t=f;if((c[h>>2]|0)>>>0<=t>>>0?(c[n>>2]|0)>>>0>t>>>0:0){c[f>>2]=c[o>>2];c[o>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{t=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);m=m+1|0;f=c[l>>2]|0}while((m|0)<(c[b>>2]|0))}while(0);d:do if(f){do if(r|0){m=r+480|0;if(!(c[m>>2]|0)){g=f;if((c[r+304>>2]|0)>>>0>g>>>0)break;if((c[r+308>>2]|0)>>>0<=g>>>0)break;t=r+300|0;c[f>>2]=c[t>>2];c[t>>2]=f}else Xd(r,f);f=m;n=75;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);n=73;break}else{n=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);n=73;break}}else n=73;while(0);if((n|0)==73)if(r){f=r+480|0;n=75}if((n|0)==75){if(c[f>>2]|0){Xd(r,l);break}t=l;if((c[r+304>>2]|0)>>>0<=t>>>0?(c[r+308>>2]|0)>>>0>t>>>0:0){t=r+300|0;c[l>>2]=c[t>>2];c[t>>2]=l;break}}if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{t=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(!j){t=0;Ra=s;return t|0}pi(r,j,1);t=0;Ra=s;return t|0}function mj(d,f,g,h,i,j,k,l,m){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+96|0;q=t+80|0;s=t;p=c[d>>2]|0;a:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))r=11;else n=0;else{do if((e[p+276>>1]|0)>=76){o=p+300|0;n=c[o>>2]|0;if(n|0){c[o>>2]=c[n>>2];p=p+284|0;c[p>>2]=(c[p>>2]|0)+1;break a}o=p+296|0;n=c[o>>2]|0;if(!n){n=p+292|0;break}else{c[o>>2]=c[n>>2];p=p+284|0;c[p>>2]=(c[p>>2]|0)+1;break a}}else n=p+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;r=11}while(0);if((r|0)==11)n=_d(p,76,0)|0;o=(n|0)==0?s:n;if(!f){f=c[d>>2]|0;c[q>>2]=0;c[q+4>>2]=0;f=oj(f,172,q,0)|0;f=nj(c[d>>2]|0,0,f)|0}c[o>>2]=f;a[o+4>>0]=-125;c[o+8>>2]=l;c[o+12>>2]=0;c[o+16>>2]=0;q=d+100|0;l=(c[q>>2]|0)+1|0;c[q>>2]=l;c[o+20>>2]=l;c[o+24>>2]=-1;c[o+28>>2]=-1;b[o+6>>1]=0;if(!g){n=c[d>>2]|0;b:do if(!n){if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](80)|0;r=38;break}g=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;n=59064;f=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&f>>>0>0){l=c[14978]|0;q=Tv(f|0,n|0,g|0,((g|0)<0)<<31>>31|0)|0;p=L()|0;c[14768]=((p|0)<0|(p|0)==0&q>>>0<=l>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(g){f=Wa[c[29352>>2]&127](g)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0){c[14987]=f;r=39}else r=39}else g=0}else{if(c[n+272>>2]|0){if(a[n+81>>0]|0){g=0;break}}else{do if((e[n+276>>1]|0)>=80){f=n+300|0;g=c[f>>2]|0;if(g|0){c[f>>2]=c[g>>2];r=n+284|0;c[r>>2]=(c[r>>2]|0)+1;r=38;break b}f=n+296|0;g=c[f>>2]|0;if(!g){g=n+292|0;break}else{c[f>>2]=c[g>>2];r=n+284|0;c[r>>2]=(c[r>>2]|0)+1;r=38;break b}}else g=n+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1}g=_d(n,80,0)|0;r=38}while(0);if((r|0)==38)if(!g)g=0;else r=39;if((r|0)==39){f=g;n=f+80|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(n|0))}}c[o+32>>2]=g;c[o+36>>2]=h;c[o+40>>2]=i;c[o+44>>2]=j;c[o+48>>2]=k;c[o+52>>2]=0;c[o+56>>2]=0;c[o+60>>2]=m;c[o+64>>2]=0;c[o+68>>2]=0;c[o+72>>2]=0;g=c[d>>2]|0;if(!(a[g+81>>0]|0)){s=o;Ra=t;return s|0}pi(g,o,(o|0)!=(s|0)&1);s=0;Ra=t;return s|0}function nj(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;a:do if(!d){b:do if(c[b+272>>2]|0)if(!(a[b+81>>0]|0))i=12;else{d=0;break a}else{do if((e[b+276>>1]|0)>=24){g=b+300|0;d=c[g>>2]|0;if(d|0){c[g>>2]=c[d>>2];h=b+284|0;c[h>>2]=(c[h>>2]|0)+1;break b}g=b+296|0;d=c[g>>2]|0;if(!d){d=b+292|0;break}else{c[g>>2]=c[d>>2];h=b+284|0;c[h>>2]=(c[h>>2]|0)+1;break b}}else d=b+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1;i=12}while(0);if((i|0)==12)d=_d(b,24,0)|0;if(d){c[d>>2]=0;i=20}}else{g=c[d>>2]|0;if(!(g+-1&g)){h=Yv(g|0,((g|0)<0)<<31>>31|0,40,0)|0;g=L()|0;h=h|4;j=d;if(((c[b+304>>2]|0)>>>0<=j>>>0?(c[b+308>>2]|0)>>>0>j>>>0:0)?!(g>>>0>0|((g|0)==0?h>>>0>(e[b+276>>1]|0)>>>0:0)):0){i=20;break}g=Zd(b,d,h,g)|0;if(g){d=g;i=20}}else i=20}while(0);if((i|0)==20){j=c[d>>2]|0;c[d>>2]=j+1;i=d+4+(j*20|0)+4|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;c[d+4+(j*20|0)>>2]=f;j=d;return j|0}if(f|0)ni(b,f);if(!d){j=0;return j|0}ri(b,d);j=0;return j|0}function oj(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;n=t;c[n>>2]=0;o=(g|0)!=0;do if(o){if(((f|0)==147?(i=c[g>>2]|0,i|0):0)?ii(i,n)|0:0){m=0;break}m=(c[g+4>>2]|0)+1|0}else m=0;while(0);k=m+52|0;a:do if(c[d+272>>2]|0)if(!(a[d+81>>0]|0))l=16;else{s=0;Ra=t;return s|0}else{do if(!(0<0|(0==0?(e[d+276>>1]|0)>>>0>>0:0))){i=d+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];p=d+284|0;c[p>>2]=(c[p>>2]|0)+1;p=j;break a}i=d+296|0;j=c[i>>2]|0;if(!j){i=d+292|0;break}else{c[i>>2]=c[j>>2];p=d+284|0;c[p>>2]=(c[p>>2]|0)+1;p=j;break a}}else i=d+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;l=16}while(0);if((l|0)==16)p=_d(d,k,0)|0;if(!p){s=p;Ra=t;return s|0}i=p;j=i+52|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));a[p>>0]=f;b[p+34>>1]=-1;do if(o){if(!m){c[p+4>>2]=8389632;c[p+8>>2]=c[n>>2];break}k=p+52|0;d=p+8|0;c[d>>2]=k;i=g+4|0;j=c[i>>2]|0;if(!j)i=0;else{ew(k|0,c[g>>2]|0,j|0)|0;i=c[i>>2]|0}a[k+i>>0]=0;if(((h|0?(s=c[d>>2]|0,q=a[s>>0]|0,(a[880+(q&255)>>0]|0)<0):0)?(h=p+4|0,c[h>>2]=(q<<24>>24==34?67108928:67108864)|c[h>>2],s|0):0)?(r=a[s>>0]|0,(a[880+(r&255)>>0]|0)<0):0){d=r<<24>>24==91?93:r;k=0;i=1;while(1){j=a[s+i>>0]|0;if(j<<24>>24==d<<24>>24){i=i+1|0;j=s+k|0;if((a[s+i>>0]|0)!=d<<24>>24)break;a[j>>0]=d}else a[s+k>>0]=j;k=k+1|0;i=i+1|0}a[j>>0]=0}}while(0);c[p+24>>2]=1;s=p;Ra=t;return s|0}function pj(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;k=o;n=c[b>>2]|0;do if(!d){a:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))j=12;else{n=0;Ra=o;return n|0}else{do if((e[n+276>>1]|0)>=80){h=n+300|0;i=c[h>>2]|0;if(i|0){c[h>>2]=c[i>>2];m=n+284|0;c[m>>2]=(c[m>>2]|0)+1;break a}h=n+296|0;i=c[h>>2]|0;if(!i){h=n+292|0;break}else{c[h>>2]=c[i>>2];m=n+284|0;c[m>>2]=(c[m>>2]|0)+1;break a}}else h=n+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;j=12}while(0);if((j|0)==12)i=_d(n,80,0)|0;if(!i){n=0;Ra=o;return n|0}else{c[i+4>>2]=1;c[i>>2]=1;j=i+8|0;k=j+72|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));b=i;h=i+48|0;break}}else{m=c[d>>2]|0;h=m+1|0;b:do if(h>>>0>(c[d+4>>2]|0)>>>0){i=cw(m|0,((m|0)<0)<<31>>31|0,1)|0;j=L()|0;i=i|1;do if((h|0)>199){c[k>>2]=200;cd(b,43159,k)}else{h=(j|0)<0|(j|0)==0&i>>>0<200;b=h?i:200;h=Yv(b|0,(h?j:0)|0,72,0)|0;h=Sv(h|0,L()|0,8,0)|0;i=L()|0;l=d;if(((c[n+304>>2]|0)>>>0<=l>>>0?(c[n+308>>2]|0)>>>0>l>>>0:0)?!(i>>>0>0|((i|0)==0?h>>>0>(e[n+276>>1]|0)>>>0:0)):0)h=d;else{h=Zd(n,d,h,i)|0;if(!h)break}c[h+4>>2]=b;i=c[h>>2]|0;if((i|0)<=(m|0)){l=h;b=h;h=i;break b}do{j=h+8+(i*72|0)|0;i=i+-1|0;b=h+8+(i*72|0)|0;k=j+72|0;do{c[j>>2]=c[b>>2];j=j+4|0;b=b+4|0}while((j|0)<(k|0))}while((i|0)>(m|0));l=h;b=h;h=c[h>>2]|0;break b}while(0);qi(n,d);n=0;Ra=o;return n|0}else{l=d;b=d;h=m}while(0);c[b>>2]=h+1;j=l+8+(m*72|0)|0;k=j+72|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));b=l;h=l+8+(m*72|0)+40|0}while(0);c[h>>2]=-1;h=(c[b>>2]|0)+-1|0;if(g|0?c[g>>2]|0:0){g=qj(n,g)|0;c[b+8+(h*72|0)+8>>2]=g;n=qj(n,f)|0;c[b+8+(h*72|0)+4>>2]=n;n=b;Ra=o;return n|0}n=qj(n,f)|0;c[b+8+(h*72|0)+8>>2]=n;c[b+8+(h*72|0)+4>>2]=0;n=b;Ra=o;return n|0}function qj(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0;if(!d){k=0;return k|0}k=c[d>>2]|0;i=c[d+4>>2]|0;if(!k){k=0;return k|0}g=Sv(i|0,0,1,0)|0;h=L()|0;a:do if(c[b+272>>2]|0)if(!(a[b+81>>0]|0))j=13;else{k=0;return k|0}else{do if(0<0|(0==0?i>>>0<(e[b+276>>1]|0)>>>0:0)){d=b+300|0;f=c[d>>2]|0;if(f|0){c[d>>2]=c[f>>2];b=b+284|0;c[b>>2]=(c[b>>2]|0)+1;b=f;break a}d=b+296|0;f=c[d>>2]|0;if(!f){d=b+292|0;break}else{c[d>>2]=c[f>>2];b=b+284|0;c[b>>2]=(c[b>>2]|0)+1;b=f;break a}}else d=b+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1;j=13}while(0);if((j|0)==13)b=_d(b,g,h)|0;if(!b){k=0;return k|0}ew(b|0,k|0,i|0)|0;a[b+i>>0]=0;d=a[b>>0]|0;if((a[880+(d&255)>>0]|0)>=0){k=b;return k|0}h=d<<24>>24==91?93:d;g=0;d=1;while(1){f=a[b+d>>0]|0;if(f<<24>>24==h<<24>>24){d=d+1|0;f=b+g|0;if((a[b+d>>0]|0)!=h<<24>>24)break;a[f>>0]=h}else a[b+g>>0]=f;g=g+1|0;d=d+1|0}a[f>>0]=0;k=b;return k|0} -function yj(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0;Ea=Ra;Ra=Ra+448|0;ha=Ea+424|0;ca=Ea+416|0;ta=Ea+408|0;sa=Ea+400|0;ra=Ea+392|0;qa=Ea+384|0;ma=Ea+376|0;na=Ea+368|0;da=Ea+336|0;W=Ea+328|0;M=Ea+320|0;U=Ea+304|0;ba=Ea+280|0;V=Ea+272|0;ga=Ea+256|0;fa=Ea+240|0;ea=Ea+224|0;Z=Ea+216|0;ja=Ea+184|0;ia=Ea+152|0;X=Ea+144|0;J=Ea+136|0;N=Ea+128|0;K=Ea+120|0;I=Ea+112|0;_=Ea+104|0;T=Ea+96|0;Q=Ea+88|0;S=Ea+80|0;A=Ea+72|0;y=Ea+64|0;z=Ea+56|0;w=Ea+48|0;q=Ea+40|0;o=Ea+32|0;n=Ea+24|0;wa=Ea+16|0;B=Ea;oa=Ea+440|0;va=Ea+436|0;pa=Ea+432|0;Da=c[f>>2]|0;ua=f+8|0;k=c[ua>>2]|0;if(!k){if((c[f+116>>2]|0)==0?(b[Da+76>>1]&8)==0:0)a[f+23>>0]=1;a:do if(c[Da+272>>2]|0)if(!(a[Da+81>>0]|0))za=15;else{Ra=Ea;return}else{do if((e[Da+276>>1]|0)>=224){k=Da+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];Ca=Da+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break a}k=Da+296|0;l=c[k>>2]|0;if(!l){k=Da+292|0;break}else{c[k>>2]=c[l>>2];Ca=Da+284|0;c[Ca>>2]=(c[Ca>>2]|0)+1;break a}}else k=Da+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=15}while(0);if((za|0)==15)l=_d(Da,224,0)|0;if(!l){Ra=Ea;return}$=l+104|0;aa=$+120|0;do{c[$>>2]=0;$=$+4|0}while(($|0)<(aa|0));c[l>>2]=Da;k=Da+4|0;m=c[k>>2]|0;if(m|0)c[m+4>>2]=l;c[l+8>>2]=m;c[l+4>>2]=0;c[k>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=f;c[ua>>2]=l;Di(l,61,0,1,0)|0;Aa=l}else Aa=k;F=Aa+149|0;xa=d[F>>0]|d[F+1>>0]<<8|64;a[F>>0]=xa;a[F+1>>0]=xa>>8;xa=f+44|0;c[xa>>2]=2;k=c[f>>2]|0;ka=h+4|0;if(c[ka>>2]|0){if(a[k+165>>0]|0){cd(f,39404,n);Ra=Ea;return}r=wk(k,g)|0;if((r|0)<0){c[o>>2]=g;cd(f,39421,o);Ra=Ea;return}else g=h}else r=d[k+164>>0]|0;ya=Da+16|0;aa=c[ya>>2]|0;$=(r|0)==1;if(($?(v=c[f>>2]|0,p=v+16|0,(c[(c[p>>2]|0)+20>>2]|0)==0):0)?(a[f+199>>0]|0)==0:0){k=Pe(c[v>>2]|0,0,v,wa,0,542)|0;if(k|0){cd(f,32157,q);c[f+12>>2]=k;Ra=Ea;return}Ca=c[wa>>2]|0;c[(c[p>>2]|0)+20>>2]=Ca;k=c[v+92>>2]|0;p=c[Ca+4>>2]|0;c[p+4>>2]=c[Ca>>2];if(!(b[p+22>>1]&2)){m=p+32|0;n=p+36|0;o=(c[m>>2]|0)-(c[n>>2]|0)|0;if(((k+-512|0)>>>0<65025?(k+-1&k|0)==0:0)?(c[m>>2]=k,t=p+80|0,s=c[t>>2]|0,s|0):0){l=s+-4|0;c[t>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;Ca=(c[14820]|0)+1|0;c[14820]=Ca;c[14821]=(Ca|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=40;break}else{k=Wa[c[29352>>2]&127](l)|0;za=40}while(0);do if((za|0)==40){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{Ca=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Ca;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[t>>2]=0}Ca=Se(c[p>>2]|0,m,o)|0;c[n>>2]=(c[m>>2]|0)-(o&65535);if((Ca|0)==7){k=v+81|0;if((a[k>>0]|0)==0?(a[v+82>>0]|0)==0:0){a[k>>0]=1;if((c[v+180>>2]|0)>0)c[v+264>>2]=1;k=v+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[v+236>>2]|0;if(k|0)c[k+12>>2]=7}Ra=Ea;return}}}Ca=qj(Da,g)|0;if(!Ca){Ra=Ea;return}if(!j)Ba=qj(Da,i)|0;else{c[w>>2]=i;Ba=dd(Da,45384,w)|0}if(!(c[ka>>2]|0))la=0;else la=c[aa+(r<<4)>>2]|0;k=c[f>>2]|0;do if(((a[k+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(x=c[k+312>>2]|0,(x|0)!=0):0){k=$a[x&127](c[k+316>>2]|0,19,Ca,Ba,la,c[f+240>>2]|0)|0;if((k|0)==1){cd(f,39216,z);c[f+12>>2]=23;za=2020;break}if((k|2|0)==2)if(!k){za=67;break}else{za=2020;break}else{cd(f,39231,y);c[f+12>>2]=1;za=2020;break}}else za=67;while(0);b:do if((za|0)==67){c[B>>2]=0;c[B+4>>2]=Ca;c[B+8>>2]=Ba;c[B+12>>2]=0;t=Da+404|0;c[t>>2]=0;k=Td(Da,la)|0;c:do if(k){l=c[k+4>>2]|0;c[l+4>>2]=c[k>>2];k=c[(c[l>>2]|0)+60>>2]|0;l=c[k>>2]|0;d:do if(l|0){k=Ya[c[l+40>>2]&127](k,14,B)|0;switch(k|0){case 12:break d;case 0:break;default:{l=c[B>>2]|0;if(!l)break c;c[A>>2]=l;cd(f,31408,A);l=c[B>>2]|0;if(!l)break c;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break c}else{Aa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break c}}}Wi(Aa,1);if(!(a[(c[Aa>>2]|0)+81>>0]|0))yc(c[Aa+116>>2]|0,c[B>>2]|0,-1,1,-1)|0;l=c[B>>2]|0;if(!l){za=2020;break b}m=Aa+108|0;k=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;Ei(Aa,(c[Aa+104>>2]|0)+(k*20|0)|0,l,0)}k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0}else Di(Aa,81,1,1,0)|0;k=c[B>>2]|0;if(!k){za=2020;break b}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);za=2020;break b}else{za=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);za=2020;break b}}while(0);B=a[Ca>>0]|0;q=d[208+(B&255)>>0]|0;e:do if(!(B<<24>>24)){k=0;l=59;do{o=k+l|0;m=(o|0)/2|0;n=q-(d[208+(d[c[4544+(m<<4)>>2]>>0]|0)>>0]|0)|0;if(!n){j=m;za=103;break e}B=(n|0)<0;k=B?k:m+1|0;l=B?m+-1|0:l}while((k|0)<=(l|0))}else{n=0;p=59;do{o=n+p|0;g=(o|0)/2|0;l=c[4544+(g<<4)>>2]|0;k=q-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!k){m=Ca;do{m=m+1|0;l=l+1|0;B=a[m>>0]|0;k=(d[208+(B&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(B<<24>>24==0|(k|0)!=0));if(!k){j=g;za=103;break e}}B=(k|0)<0;n=B?n:g+1|0;p=B?g+-1|0:p}while((n|0)<=(p|0))}while(0);f:do if((za|0)==103){s=4544+(j<<4)|0;m=a[4544+(j<<4)+5>>0]|0;g:do if(m&1?(D=c[f>>2]|0,(a[D+165>>0]|0)==0):0){n=f+4|0;p=D+24|0;g=(c[p>>2]&1|0)==0;q=D+16|0;B=c[(c[q>>2]|0)+12>>2]|0;a[D+78>>0]=a[B+77>>0]|0;if((b[B+78>>1]&1)==0?(C=eh(D,0,n,0)|0,(C|0)!=0):0)k=C;else za=107;h:do if((za|0)==107){k=c[D+20>>2]|0;if((k|0)>1)do{l=k;k=k+-1|0;if((b[(c[(c[q>>2]|0)+(k<<4)+12>>2]|0)+78>>1]&1)==0?(E=eh(D,k,n,0)|0,E|0):0){k=E;break h}}while((l|0)>2);if(g)c[p>>2]=c[p>>2]&-2;if(!(a[D+89>>0]|0))break g;c[p>>2]=c[p>>2]|16;break g}while(0);c[f+12>>2]=k;Aa=f+36|0;c[Aa>>2]=(c[Aa>>2]|0)+1;break f}while(0);E=m&255;do if((E&2|0)==0?(Ba|0)==0|(E&4|0)==0:0){E=a[4544+(j<<4)+7>>0]|0;m=E&255;E=E<<24>>24==0;Wi(Aa,E?1:m);if(E){if(a[(c[Aa>>2]|0)+81>>0]|0)break;yc(c[Aa+116>>2]|0,c[s>>2]|0,-1,1,0)|0;break}n=Aa+116|0;k=0;l=d[4544+(j<<4)+6>>0]|0;while(1){if(!(a[(c[Aa>>2]|0)+81>>0]|0))yc((c[n>>2]|0)+(k*40|0)|0,c[5504+(l<<2)>>2]|0,-1,1,0)|0;k=k+1|0;if((k|0)==(m|0))break;else l=l+1|0}}while(0);do switch(a[4544+(j<<4)+4>>0]|0){case 11:{u=1<>2]=c[ya>>2]|u;if(!$?a[(c[(c[(c[Aa>>2]|0)+16>>2]|0)+(r<<4)+4>>2]|0)+9>>0]|0:0){ya=Aa+156|0;c[ya>>2]=c[ya>>2]|u}if(!Ba){c[xa>>2]=(c[xa>>2]|0)+2;Aa=ed(Aa,9,18352)|0;c[Aa+4>>2]=r;c[Aa+24>>2]=r;c[Aa+124>>2]=-2e3;break f}c[wa>>2]=0;ii(Ba,wa)|0;k=c[wa>>2]|0;k=(k|0)>-1?k:(k|0)==-2147483648?2147483647:0-k|0;t=c[f+116>>2]|0;t=(t|0)==0?f:t;l=t+84|0;m=c[l>>2]|0;i:do if(!(m&u)){c[l>>2]=m|u;if(!$)break;s=c[t>>2]|0;l=s+16|0;if(c[(c[l>>2]|0)+20>>2]|0)break;if(a[t+199>>0]|0)break;m=Pe(c[s>>2]|0,0,s,wa,0,542)|0;if(m|0){cd(t,32157,S);c[t+12>>2]=m;break}ya=c[wa>>2]|0;c[(c[l>>2]|0)+20>>2]=ya;l=c[s+92>>2]|0;o=c[ya+4>>2]|0;c[o+4>>2]=c[ya>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;g=o+36|0;q=(c[p>>2]|0)-(c[g>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[p>>2]=l;n=o+80|0;l=c[n>>2]|0;if(!l)break;m=l+-4|0;c[n>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;za=147;break}else{l=Wa[c[29352>>2]&127](m)|0;za=147}while(0);do if((za|0)==147){c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{za=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);za=Se(c[o>>2]|0,p,q)|0;c[g>>2]=(c[p>>2]|0)-(q&65535);if((za|0)!=7)break;l=s+81|0;do if(!(a[l>>0]|0)){if(a[s+82>>0]|0)break;a[l>>0]=1;if((c[s+180>>2]|0)>0)c[s+264>>2]=1;l=s+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[s+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);break i}while(0)}while(0);l=t+80|0;c[l>>2]=c[l>>2]|u;l=Aa+108|0;m=c[l>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[l>>2]=m+1;Aa=c[Aa+104>>2]|0;a[Aa+(m*20|0)>>0]=95;b[Aa+(m*20|0)+2>>1]=0;c[Aa+(m*20|0)+4>>2]=r;c[Aa+(m*20|0)+8>>2]=3;c[Aa+(m*20|0)+12>>2]=k;c[Aa+(m*20|0)+16>>2]=0;a[Aa+(m*20|0)+1>>0]=0}else Di(Aa,95,r,3,k)|0;c[(c[aa+(r<<4)+12>>2]|0)+80>>2]=k;m=c[aa+(r<<4)+4>>2]|0;l=c[m+4>>2]|0;c[l+4>>2]=c[m>>2];l=c[(c[l>>2]|0)+212>>2]|0;c[l+16>>2]=k;m=c[7357]|0;n=c[l+44>>2]|0;if((k|0)<=-1){za=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;Aa=L()|0;k=(c[l+28>>2]|0)+(c[l+24>>2]|0)|0;k=Wv(za|0,Aa|0,k|0,((k|0)<0)<<31>>31|0)|0;L()|0}bb[m&127](n,k);break f}case 28:{k=c[aa+(r<<4)+4>>2]|0;if(Ba|0){c[wa>>2]=0;ii(Ba,wa)|0;l=c[wa>>2]|0;c[Da+92>>2]=l;g=c[k+4>>2]|0;c[g+4>>2]=c[k>>2];if(b[g+22>>1]&2){za=2020;break b}n=g+32|0;o=g+36|0;p=(c[n>>2]|0)-(c[o>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[n>>2]=l;m=g+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;Aa=(c[14820]|0)+1|0;c[14820]=Aa;c[14821]=(Aa|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=219;break}else{k=Wa[c[29352>>2]&127](l)|0;za=219}while(0);do if((za|0)==219){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{Aa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);Aa=Se(c[g>>2]|0,n,p)|0;c[o>>2]=(c[n>>2]|0)-(p&65535);if((Aa|0)!=7){za=2020;break b}k=Da+81|0;if(a[k>>0]|0){za=2020;break b}if(a[Da+82>>0]|0){za=2020;break b}a[k>>0]=1;if((c[Da+180>>2]|0)>0)c[Da+264>>2]=1;k=Da+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[Da+236>>2]|0;if(!k){za=2020;break b}c[k+12>>2]=7;za=2020;break b}if(!k){n=0;o=0}else{o=c[(c[k+4>>2]|0)+32>>2]|0;n=o;o=((o|0)<0)<<31>>31}m=c[Aa>>2]|0;j:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=179;else za=199;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=180;break j}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=180;break j}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=179}while(0);if((za|0)==179){p=_d(m,8,0)|0;za=180}k:do if((za|0)==180){if(!p){za=199;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break k}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break k}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==199){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 30:{g=c[aa+(r<<4)+4>>2]|0;do if(!Ba){m=-1;n=0}else{za=a[Ba>>0]|0;k=(d[208+(za&255)>>0]|0)+-102|0;if(!(za<<24>>24==0|(k|0)!=0)){l=45388;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k)m=2;else m=(Zm(Ba,1,0)|0)<<24>>24!=0&1;if(c[ka>>2]|0){n=1;break}p=c[Da+20>>2]|0;if((p|0)<=0){n=1;break}l=c[ya>>2]|0;n=m<<2;k=0;do{o=c[l+(k<<4)+4>>2]|0;if(o|0){za=c[o+4>>2]|0;c[za+4>>2]=c[o>>2];za=za+22|0;b[za>>1]=n|b[za>>1]&-13&65535}k=k+1|0}while((k|0)!=(p|0));n=1}while(0);if(!g)n=0;else{l=c[g+4>>2]|0;c[l+4>>2]=c[g>>2];l=l+22|0;k=b[l>>1]|0;if(n){k=(m<<2|k&-13&65535)&65535;b[l>>1]=k}n=(k&65535)>>>2&3}m=c[Aa>>2]|0;l:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=256;else za=276;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=257;break l}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=257;break l}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=256}while(0);if((za|0)==256){p=_d(m,8,0)|0;za=257}m:do if((za|0)==257){if(!p){za=276;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break m}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break m}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==276){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 24:{n=c[f+116>>2]|0;n=(n|0)==0?f:n;k=n+84|0;l=c[k>>2]|0;m=1<>2]=l|m,$):0)?(Y=c[n>>2]|0,O=Y+16|0,(c[(c[O>>2]|0)+20>>2]|0)==0):0){if(a[n+199>>0]|0)break;k=Pe(c[Y>>2]|0,0,Y,wa,0,542)|0;if(k|0){cd(n,32157,Q);c[n+12>>2]=k;break}ya=c[wa>>2]|0;c[(c[O>>2]|0)+20>>2]=ya;k=c[Y+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=302;break}else{k=Wa[c[29352>>2]&127](l)|0;za=302}while(0);do if((za|0)==302){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ya=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);ya=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((ya|0)!=7)break;k=Y+81|0;do if(!(a[k>>0]|0)){if(a[Y+82>>0]|0)break;a[k>>0]=1;if((c[Y+180>>2]|0)>0)c[Y+264>>2]=1;k=Y+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[Y+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break n}while(0)}while(0);o=(c[xa>>2]|0)+1|0;c[xa>>2]=o;do if((a[Ca>>0]|32)<<24>>24==112){l=Aa+108|0;m=c[l>>2]|0;k=Aa+112|0;if((c[k>>2]|0)>(m|0)){c[l>>2]=m+1;za=c[Aa+104>>2]|0;a[za+(m*20|0)>>0]=-90;b[za+(m*20|0)+2>>1]=0;c[za+(m*20|0)+4>>2]=r;c[za+(m*20|0)+8>>2]=o;c[za+(m*20|0)+12>>2]=0;c[za+(m*20|0)+16>>2]=0;a[za+(m*20|0)+1>>0]=0;m=l;break}else{Di(Aa,166,r,o,0)|0;m=l;break}}else{c[wa>>2]=0;if(Ba){ii(Ba,wa)|0;k=c[wa>>2]|0;if((k|0)<0)k=(k|0)==-2147483648?2147483647:0-k|0;else za=322}else{k=0;za=322}m=Aa+108|0;l=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(l|0)){c[m>>2]=l+1;za=c[Aa+104>>2]|0;a[za+(l*20|0)>>0]=-89;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=r;c[za+(l*20|0)+8>>2]=o;c[za+(l*20|0)+12>>2]=k;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0;k=n;break}else{Di(Aa,167,r,o,k)|0;k=n;break}}while(0);l=c[m>>2]|0;if((c[k>>2]|0)>(l|0)){c[m>>2]=l+1;Aa=c[Aa+104>>2]|0;a[Aa+(l*20|0)>>0]=81;b[Aa+(l*20|0)+2>>1]=0;c[Aa+(l*20|0)+4>>2]=o;c[Aa+(l*20|0)+8>>2]=1;c[Aa+(l*20|0)+12>>2]=0;c[Aa+(l*20|0)+16>>2]=0;a[Aa+(l*20|0)+1>>0]=0;break f}else{Di(Aa,81,o,1,0)|0;break f}}case 23:{do if(!Ba)za=339;else{o=a[Ba>>0]|0;n=d[208+(o&255)>>0]|0;k=n+-101|0;o=o<<24>>24==0;if(!(o|(k|0)!=0)){l=45400;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(k){k=n+-110|0;if(!(o|(k|0)!=0)){l=45393;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k)l=0;else{za=339;break}}else l=1;if(c[ka>>2]|0){za=350;break}p=c[Da+20>>2]|0;if((p|0)>2){o=c[ya>>2]|0;k=l&255;m=2;do{n=c[c[(c[o+(m<<4)+4>>2]|0)+4>>2]>>2]|0;do if(!(a[n+12>>0]|0)){za=c[n+216>>2]|0;if(za|0?(a[za+43>>0]|0)==2:0)break;a[n+4>>0]=k}while(0);m=m+1|0}while((m|0)!=(p|0))}else k=l&255;a[Da+83>>0]=k;za=350}while(0);if((za|0)==339)if(!(c[ka>>2]|0))m=Da+83|0;else{l=-1;za=350}if((za|0)==350){k=c[c[(c[aa+(r<<4)+4>>2]|0)+4>>2]>>2]|0;do if((l|0)>-1){if(a[k+12>>0]|0)break;za=c[k+216>>2]|0;if(za|0?(a[za+43>>0]|0)==2:0)break;a[k+4>>0]=l}while(0);m=k+4|0}n=Aa+108|0;k=c[n>>2]|0;o=Aa+112|0;l=(c[o>>2]|0)>(k|0);if((a[m>>0]|0)==1){if(l){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[n>>2]|0)+-1|0;Ei(Aa,(c[Aa+104>>2]|0)+(k*20|0)|0,45400,0)}k=c[n>>2]|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}else{if(l){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[n>>2]|0)+-1|0;Ei(Aa,(c[Aa+104>>2]|0)+(k*20|0)|0,45393,0)}k=c[n>>2]|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}}case 20:{o:do if(Ba){m=(Eu(Ba)|0)&1073741823;if(m){n=Ba;p=36033;o=m;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=381;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[p>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=383;break}if((o|0)>1){n=n+1|0;p=p+1|0;o=o+-1|0}else{s=0;break o}}if((za|0)==381){l=0;k=a[208+(d[p>>0]|0)>>0]|0}else if((za|0)==383)l=l&255;if((l|0)!=(k&255|0)){n=Ba;p=36040;o=m;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=2043;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[p>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=2041;break}if((o|0)>1){n=n+1|0;p=p+1|0;o=o+-1|0}else{s=1;break o}}if((za|0)==2041)l=l&255;else if((za|0)==2043){l=0;k=a[208+(d[p>>0]|0)>>0]|0}if((l|0)==(k&255|0)){s=1;break}n=Ba;p=36048;o=m;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=2050;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[p>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=2048;break}if((o|0)>1){n=n+1|0;p=p+1|0;o=o+-1|0}else{s=2;break o}}if((za|0)==2048)l=l&255;else if((za|0)==2050){l=0;k=a[208+(d[p>>0]|0)>>0]|0}if((l|0)==(k&255|0)){s=2;break}n=Ba;p=36052;o=m;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=2057;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[p>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=2055;break}if((o|0)>1){n=n+1|0;p=p+1|0;o=o+-1|0}else{s=3;break o}}if((za|0)==2055)l=l&255;else if((za|0)==2057){l=0;k=a[208+(d[p>>0]|0)>>0]|0}if((l|0)==(k&255|0)){s=3;break}n=Ba;p=36061;o=m;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=2064;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[p>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=2062;break}if((o|0)>1){n=n+1|0;p=p+1|0;o=o+-1|0}else{s=4;break o}}if((za|0)==2062)l=l&255;else if((za|0)==2064){l=0;k=a[208+(d[p>>0]|0)>>0]|0}if((l|0)==(k&255|0)){s=4;break}n=Ba;o=36068;while(1){k=a[n>>0]|0;if(!(k<<24>>24)){za=2071;break}l=a[208+(k&255)>>0]|0;k=a[208+(d[o>>0]|0)>>0]|0;if(l<<24>>24!=k<<24>>24){za=2069;break}if((m|0)>1){n=n+1|0;o=o+1|0;m=m+-1|0}else{s=5;break o}}if((za|0)==2069)l=l&255;else if((za|0)==2071){l=0;k=a[208+(d[o>>0]|0)>>0]|0}if((l|0)==(k&255|0))s=5;else za=387}else s=0}else s=0}else za=387;while(0);if((za|0)==387)if(!(c[ka>>2]|0)){c[ka>>2]=1;r=0;s=-1}else s=-1;l=c[Da+20>>2]|0;if((l|0)>0){p=Aa+152|0;m=Aa+108|0;k=Aa+112|0;g=Aa+104|0;q=Aa+156|0;do{o=l;l=l+-1|0;do if(c[(c[ya>>2]|0)+(l<<4)+4>>2]|0){if((l|0)!=(r|0)?c[ka>>2]|0:0)break;n=1<>2]=c[p>>2]|n;do if((l|0)!=1){if(!(a[(c[(c[(c[Aa>>2]|0)+16>>2]|0)+(l<<4)+4>>2]|0)+9>>0]|0))break;c[q>>2]=c[q>>2]|n}while(0);n=c[m>>2]|0;if((c[k>>2]|0)>(n|0)){c[m>>2]=n+1;za=c[g>>2]|0;a[za+(n*20|0)>>0]=7;b[za+(n*20|0)+2>>1]=0;c[za+(n*20|0)+4>>2]=l;c[za+(n*20|0)+8>>2]=1;c[za+(n*20|0)+12>>2]=s;c[za+(n*20|0)+16>>2]=0;a[za+(n*20|0)+1>>0]=0;break}else{Di(Aa,7,l,1,s)|0;break}}while(0)}while((o|0)>1)}else{m=Aa+108|0;k=Aa+112|0}l=c[m>>2]|0;if((c[k>>2]|0)>(l|0)){c[m>>2]=l+1;za=c[Aa+104>>2]|0;a[za+(l*20|0)>>0]=81;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=1;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}case 21:{m=c[c[(c[aa+(r<<4)+4>>2]|0)+4>>2]>>2]|0;za=wa;c[za>>2]=-2;c[za+4>>2]=-1;if(Ba){Vd(Ba,wa)|0;l=wa;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)<-1|(l|0)==-1&k>>>0<4294967295){k=wa;c[k>>2]=-1;c[k+4>>2]=-1;k=-1;n=-1}else n=l;l=m+160|0;c[l>>2]=k;c[l+4>>2]=n;l=c[m+216>>2]|0;if(!l)o=k;else{o=l+16|0;c[o>>2]=k;c[o+4>>2]=n;o=k}}else{n=m+160|0;o=c[n>>2]|0;n=c[n+4>>2]|0}m=wa;c[m>>2]=o;c[m+4>>2]=n;m=c[Aa>>2]|0;p:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=421;else za=441;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=422;break p}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=422;break p}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=421}while(0);if((za|0)==421){p=_d(m,8,0)|0;za=422}q:do if((za|0)==422)if(p){m=p;k=m;a[k>>0]=o;a[k+1>>0]=o>>8;a[k+2>>0]=o>>16;a[k+3>>0]=o>>24;m=m+4|0;a[m>>0]=n;a[m+1>>0]=n>>8;a[m+2>>0]=n>>16;a[m+3>>0]=n>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break q}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break q}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=441;while(0);do if((za|0)==441){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0}else Di(Aa,81,1,1,0)|0;break f}case 1:{p=c[aa+(r<<4)+4>>2]|0;if(Ba|0){o=a[Ba>>0]|0;n=d[208+(o&255)>>0]|0;k=n+-110|0;o=o<<24>>24==0;if(!(o|(k|0)!=0)){l=45841;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}do if(!k)m=0;else{k=n+-102|0;if(!(o|(k|0)!=0)){l=45810;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k){m=1;break}k=n+-105|0;if(!(o|(k|0)!=0)){l=45846;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k){m=2;break}c[wa>>2]=0;ii(Ba,wa)|0;m=c[wa>>2]|0;m=m>>>0<3?m&255:0}while(0);a[Da+84>>0]=m;n=c[p+4>>2]|0;c[n+4>>2]=c[p>>2];l=m&255;if(b[n+22>>1]&2){k=n+17|0;if(((l|0)!=0|0)!=(d[k>>0]|0)){za=2020;break b}}else k=n+17|0;a[k>>0]=(l|0)!=0&1;a[n+18>>0]=(l|0)==2&1;k=m+-1|0;if(k>>>0>=2){za=2020;break b}ya=c[Aa+108>>2]|0;za=ed(Aa,5,18400)|0;c[za+4>>2]=r;c[za+24>>2]=r;c[za+48>>2]=ya+4;c[za+84>>2]=r;c[za+92>>2]=k;k=1<>2]=c[za>>2]|k;if($){za=2020;break b}if(!(a[(c[(c[(c[Aa>>2]|0)+16>>2]|0)+(r<<4)+4>>2]|0)+9>>0]|0)){za=2020;break b}za=Aa+156|0;c[za>>2]=c[za>>2]|k;za=2020;break b}k=c[p+4>>2]|0;c[k+4>>2]=c[p>>2];if(!(a[k+17>>0]|0))n=0;else n=(a[k+18>>0]|0)==0?1:2;m=c[Aa>>2]|0;r:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=466;else za=486;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=467;break r}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=467;break r}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=466}while(0);if((za|0)==466){p=_d(m,8,0)|0;za=467}s:do if((za|0)==467){if(!p){za=486;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break s}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break s}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==486){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 16:{if(!((Ba|0)!=0?(ya=(ii(Ba,oa)|0)==0,u=c[oa>>2]|0,!(ya|(u|0)<1)):0)){c[oa>>2]=2147483647;u=2147483647}t=c[f+116>>2]|0;t=(t|0)==0?f:t;k=t+84|0;l=c[k>>2]|0;s=1<>2]=l|s,$):0){q=c[t>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[t+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(t,32157,T);c[t+12>>2]=l;break}ya=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=ya;k=c[q+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=535;break}else{k=Wa[c[29352>>2]&127](l)|0;za=535}while(0);do if((za|0)==535){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{za=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);za=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((za|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break t}while(0)}while(0);m=t+80|0;c[m>>2]=c[m>>2]|s;m=Aa+108|0;k=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=70;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=u;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else Di(Aa,70,u,1,0)|0;k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=59;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=r;c[za+(k*20|0)+8>>2]=0;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,59,r,0,0)|0;l=c[m>>2]|0;if((c[n>>2]|0)>(l|0)){c[m>>2]=l+1;za=c[Aa+104>>2]|0;a[za+(l*20|0)>>0]=81;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=0;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0}else Di(Aa,81,1,0,0)|0;l=c[m>>2]|0;if((c[n>>2]|0)>(l|0)){c[m>>2]=l+1;za=c[Aa+104>>2]|0;a[za+(l*20|0)>>0]=83;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=-1;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0}else Di(Aa,83,1,-1,0)|0;l=c[m>>2]|0;if((c[n>>2]|0)>(l|0)){c[m>>2]=l+1;za=c[Aa+104>>2]|0;a[za+(l*20|0)>>0]=47;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=k;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0}else Di(Aa,47,1,k,0)|0;l=c[m>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))k=(c[Aa+104>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else k=59308;c[k+8>>2]=l;break f}case 4:{if(Ba|0){c[wa>>2]=0;ii(Ba,wa)|0;k=c[wa>>2]|0;c[(c[aa+(r<<4)+12>>2]|0)+80>>2]=k;m=c[aa+(r<<4)+4>>2]|0;l=c[m+4>>2]|0;c[l+4>>2]=c[m>>2];l=c[(c[l>>2]|0)+212>>2]|0;c[l+16>>2]=k;m=c[7357]|0;n=c[l+44>>2]|0;if((k|0)<=-1){za=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;Aa=L()|0;k=(c[l+28>>2]|0)+(c[l+24>>2]|0)|0;k=Wv(za|0,Aa|0,k|0,((k|0)<0)<<31>>31|0)|0;L()|0}bb[m&127](n,k);break f}n=c[(c[aa+(r<<4)+12>>2]|0)+80>>2]|0;o=((n|0)<0)<<31>>31;m=c[Aa>>2]|0;u:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=577;else za=597;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=578;break u}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=578;break u}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=577}while(0);if((za|0)==577){p=_d(m,8,0)|0;za=578}v:do if((za|0)==578)if(p){m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break v}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break v}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=597;while(0);do if((za|0)==597){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 5:{if(Ba|0){c[wa>>2]=1;do if(!(ii(Ba,wa)|0))k=c[wa>>2]|0;else{Aa=c[aa+(r<<4)+4>>2]|0;k=c[wa>>2]|0;m=c[Aa+4>>2]|0;c[m+4>>2]=c[Aa>>2];m=c[(c[m>>2]|0)+212>>2]|0;if(!k){k=0;break}if((k|0)<0){za=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;Aa=L()|0;l=(c[m+28>>2]|0)+(c[m+24>>2]|0)|0;l=Wv(za|0,Aa|0,l|0,((l|0)<0)<<31>>31|0)|0;L()|0}else l=k;c[m+20>>2]=l}while(0);f=(Zm(Ba,1,(k|0)!=0&1)|0)<<24>>24==0;r=Da+32|0;za=r;xa=c[za>>2]|0;za=c[za+4>>2]|0;Aa=r;c[Aa>>2]=f?xa&-33:xa|32;c[Aa+4>>2]=f?za:za;do if(a[Da+79>>0]|0){k=c[Da+20>>2]|0;if((k|0)<=0)break;q=c[ya>>2]|0;while(1){p=k;k=k+-1|0;l=c[q+4>>2]|0;if(l|0){g=c[r>>2]&56|d[q+8>>0];m=c[l+4>>2]|0;c[m+4>>2]=c[l>>2];m=c[m>>2]|0;za=g&7;Aa=(a[m+12>>0]|0)==0;n=(za|0)==1;o=za>>>0>2&Aa;a[m+7>>0]=(n|Aa^1)&1;a[m+8>>0]=o&1;a[m+9>>0]=(za|0)==4&Aa&1;n=Aa&(n^1);do if(n){l=m+10|0;if(!(g&8)){a[l>>0]=2;l=2;break}else{a[l>>0]=3;l=3;break}}else{a[m+10>>0]=0;l=0}while(0);Aa=(l<<2|(o?l:0))&255;a[m+11>>0]=(g&16|0)==0|n^1?Aa:Aa|12;Aa=m+20|0;za=d[Aa>>0]|0;a[Aa>>0]=(g&32|0)==0?za|1:za&254}if((p|0)<=1)break;else q=q+16|0}}while(0);break f}if(0==0?(c[Da+32>>2]&32|0)==0:0){n=0;o=0}else{k=c[aa+(r<<4)+4>>2]|0;l=c[k+4>>2]|0;c[l+4>>2]=c[k>>2];l=c[(c[l>>2]|0)+212>>2]|0;k=c[l+16>>2]|0;if((k|0)<=-1){ya=Yv(k|0,((k|0)<0)<<31>>31|0,-1024,-1)|0;za=L()|0;k=(c[l+28>>2]|0)+(c[l+24>>2]|0)|0;k=Wv(ya|0,za|0,k|0,((k|0)<0)<<31>>31|0)|0;L()|0}o=c[l+20>>2]|0;o=(k|0)<(o|0)?o:k;n=o;o=((o|0)<0)<<31>>31}m=c[Aa>>2]|0;w:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=626;else za=646;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=627;break w}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=627;break w}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=626}while(0);if((za|0)==626){p=_d(m,8,0)|0;za=627}x:do if((za|0)==627){if(!p){za=646;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break x}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break x}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==646){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}case 25:{m=c[Aa>>2]|0;y:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=685;else za=705;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];za=m+284|0;c[za>>2]=(c[za>>2]|0)+1;za=686;break y}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];za=m+284|0;c[za>>2]=(c[za>>2]|0)+1;za=686;break y}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=685}while(0);if((za|0)==685){l=_d(m,8,0)|0;za=686}z:do if((za|0)==686)if(l){m=l;k=m;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;m=m+4|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;m=Aa+108|0;k=c[m>>2]|0;p=Aa+112|0;if((c[p>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=l;a[o>>0]=-14;l=p;break}else{Ei(Aa,n+(k*20|0)|0,l,-14);l=p;break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,l);l=p;break z}k=l;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[l>>2]=c[ya>>2];c[ya>>2]=l;l=p;break z}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);l=p;break}else{ya=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);l=p;break}}else za=705;while(0);do if((za|0)==705){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}else m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 35:{if(Ba|0){l=a[Ba>>0]|0;do if((l+-48&255)<3)k=(l<<24>>24)+-48|0;else{n=d[208+(l&255)>>0]|0;k=n+-102|0;o=l<<24>>24==0;if(!(o|(k|0)!=0)){l=38150;m=Ba;do{m=m+1|0;l=l+1|0;Aa=a[m>>0]|0;k=(d[208+(Aa&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(k|0)!=0))}if(!k){k=1;break}k=n+-109|0;if(!(o|(k|0)!=0)){l=36061;m=Ba;do{m=m+1|0;l=l+1|0;Aa=a[m>>0]|0;k=(d[208+(Aa&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(k|0)!=0))}k=(k|0)==0?2:0}while(0);l=c[f>>2]|0;m=l+80|0;if((k|0)==(d[m>>0]|0))break f;n=l+16|0;o=c[(c[n>>2]|0)+20>>2]|0;A:do if(o|0){do if(a[l+79>>0]|0){if(a[o+8>>0]|0)break;ug(o);c[(c[n>>2]|0)+20>>2]=0;$b(l);break A}while(0);cd(f,45858,_);break f}while(0);a[m>>0]=k;break f}n=d[Da+80>>0]|0;m=c[Aa>>2]|0;B:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=727;else za=747;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=728;break B}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=728;break B}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=727}while(0);if((za|0)==727){p=_d(m,8,0)|0;za=728}C:do if((za|0)==728)if(p){m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break C}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break C}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=747;while(0);do if((za|0)==747){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}case 36:{if(!Ba){l=c[14771]|0;if(!l)break f;m=Aa+108|0;k=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;Ei(Aa,(c[Aa+104>>2]|0)+(k*20|0)|0,l,0)}k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}do if(a[Ba>>0]|0){Aa=c[Da>>2]|0;Aa=(Za[c[Aa+32>>2]&127](Aa,Ba,1,wa)|0)!=0;if(Aa|(c[wa>>2]|0)==0){cd(f,45410,I);za=2020;break b}else break}while(0);D:do if((d[Da+80>>0]|0)<2){k=c[f>>2]|0;l=k+16|0;m=c[(c[l>>2]|0)+20>>2]|0;if(!m)break;do if(a[k+79>>0]|0){if(a[m+8>>0]|0)break;ug(m);c[(c[l>>2]|0)+20>>2]=0;$b(k);break D}while(0);cd(f,45858,K)}while(0);k=c[14771]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Aa=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);if(!(a[Ba>>0]|0)){c[14771]=0;za=2020;break b}else{c[N>>2]=Ba;za=Bb(31408,N)|0;c[14771]=za;za=2020;break b}}case 33:{if(Ba|0){k=Da+79|0;if(!(a[k>>0]|0)){cd(f,45435,J);za=2020;break b}if($){za=2020;break b}Aa=(Zm(Ba,0,1)|0)+1&7;a[aa+(r<<4)+8>>0]=Aa<<24>>24==0?1:Aa;a[aa+(r<<4)+9>>0]=1;if(!(a[k>>0]|0)){za=2020;break b}k=c[Da+20>>2]|0;if((k|0)<=0){za=2020;break b}r=Da+32|0;q=c[ya>>2]|0;while(1){p=k;k=k+-1|0;l=c[q+4>>2]|0;if(l|0){g=c[r>>2]&56|d[q+8>>0];m=c[l+4>>2]|0;c[m+4>>2]=c[l>>2];m=c[m>>2]|0;za=g&7;Aa=(a[m+12>>0]|0)==0;n=(za|0)==1;o=za>>>0>2&Aa;a[m+7>>0]=(n|Aa^1)&1;a[m+8>>0]=o&1;a[m+9>>0]=(za|0)==4&Aa&1;n=Aa&(n^1);do if(n){l=m+10|0;if(!(g&8)){a[l>>0]=2;l=2;break}else{a[l>>0]=3;l=3;break}}else{a[m+10>>0]=0;l=0}while(0);Aa=(l<<2|(o?l:0))&255;a[m+11>>0]=(g&16|0)==0|n^1?Aa:Aa|12;Aa=m+20|0;za=d[Aa>>0]|0;a[Aa>>0]=(g&32|0)==0?za|1:za&254}if((p|0)<=1)break f;else q=q+16|0}}n=(d[aa+(r<<4)+8>>0]|0)+-1|0;o=((n|0)<0)<<31>>31;m=c[Aa>>2]|0;E:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=815;else za=835;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=816;break E}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=816;break E}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=815}while(0);if((za|0)==815){p=_d(m,8,0)|0;za=816}F:do if((za|0)==816)if(p){m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break F}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break F}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=835;while(0);do if((za|0)==835){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}case 2:{if(Ba|0){l=4544+(j<<4)+8|0;k=c[l>>2]|0;l=c[l+4>>2]|0;m=Da+79|0;za=(a[m>>0]|0)==0;k=za?k&-16385:k;l=za?l:l;do if(!((Zm(Ba,1,0)|0)<<24>>24)){za=Da+32|0;xa=za;f=c[xa+4>>2]&~l;c[za>>2]=c[xa>>2]&~k;c[za+4>>2]=f;if(!((k|0)==524288&(l|0)==0))break;za=Da+472|0;c[za>>2]=0;c[za+4>>2]=0}else{za=Da+32|0;xa=za;f=c[xa+4>>2]|l;c[za>>2]=c[xa>>2]|k;c[za+4>>2]=f}while(0);k=Aa+108|0;l=c[k>>2]|0;if((c[Aa+112>>2]|0)>(l|0)){c[k>>2]=l+1;$=c[Aa+104>>2]|0;a[$+(l*20|0)>>0]=-98;$=$+(l*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,158,0,0,0)|0;if(!(a[m>>0]|0)){za=2020;break b}k=c[Da+20>>2]|0;if((k|0)<=0){za=2020;break b}r=Da+32|0;q=c[ya>>2]|0;while(1){p=k;k=k+-1|0;l=c[q+4>>2]|0;if(l|0){g=c[r>>2]&56|d[q+8>>0];m=c[l+4>>2]|0;c[m+4>>2]=c[l>>2];m=c[m>>2]|0;za=g&7;Aa=(a[m+12>>0]|0)==0;n=(za|0)==1;o=za>>>0>2&Aa;a[m+7>>0]=(n|Aa^1)&1;a[m+8>>0]=o&1;a[m+9>>0]=(za|0)==4&Aa&1;n=Aa&(n^1);do if(n){l=m+10|0;if(!(g&8)){a[l>>0]=2;l=2;break}else{a[l>>0]=3;l=3;break}}else{a[m+10>>0]=0;l=0}while(0);Aa=(l<<2|(o?l:0))&255;a[m+11>>0]=(g&16|0)==0|n^1?Aa:Aa|12;Aa=m+20|0;za=d[Aa>>0]|0;a[Aa>>0]=(g&32|0)==0?za|1:za&254}if((p|0)<=1)break f;else q=q+16|0}}za=a[4544+(j<<4)+7>>0]|0;n=za&255;za=za<<24>>24==0;Wi(Aa,za?1:n);if(za)if(!(a[(c[Aa>>2]|0)+81>>0]|0)){yc(c[Aa+116>>2]|0,c[s>>2]|0,-1,1,0)|0;o=Aa}else o=Aa;else{m=Aa+116|0;k=0;l=d[4544+(j<<4)+6>>0]|0;while(1){if(!(a[(c[Aa>>2]|0)+81>>0]|0))yc((c[m>>2]|0)+(k*40|0)|0,c[5504+(l<<2)>>2]|0,-1,1,0)|0;k=k+1|0;if((k|0)==(n|0)){o=Aa;break}else l=l+1|0}}n=Da+32|0;m=4544+(j<<4)+8|0;n=(c[m>>2]&c[n>>2]|0?1:(c[m+4>>2]&c[n+4>>2]|0)!=0)&1;m=c[o>>2]|0;G:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=878;else za=898;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=879;break G}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=879;break G}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=878}while(0);if((za|0)==878){p=_d(m,8,0)|0;za=879}H:do if((za|0)==879){if(!p){za=898;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[o>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break H}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break H}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==898){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[o>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}case 34:{if(!Ba)break f;s=bd(f,2,Ba,la)|0;if(!s)break f;m=c[s+72>>2]|0;if(!m)n=-1e6;else{l=c[ya>>2]|0;k=0;while(1)if((c[l+(k<<4)+12>>2]|0)==(m|0)){n=k;break}else k=k+1|0}k=c[s+8>>2]|0;I:do if(!k)r=0;else while(1){ya=k+55|0;if(((d[ya>>0]|d[ya+1>>0]<<8)&3)==2){r=k;break I}k=c[k+20>>2]|0;if(!k){r=0;break}}while(0);c[xa>>2]=7;o=c[f+116>>2]|0;o=(o|0)==0?f:o;k=o+84|0;l=c[k>>2]|0;m=1<>2]=l|m;if((n|0)!=1)break;q=c[o>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(o,32157,X);c[o+12>>2]=l;break}ya=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=ya;k=c[q+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=951;break}else{k=Wa[c[29352>>2]&127](l)|0;za=951}while(0);do if((za|0)==951){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{ya=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);ya=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((ya|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break J}while(0)}while(0);Sk(f,s)|0;i=s+42|0;l=b[i>>1]|0;if(l<<16>>16<=0)break f;m=c[s+4>>2]|0;t=4544+(j<<4)+8|0;u=r+4|0;if(!r){r=c[t>>2]|0;t=c[t+4>>2]|0;s=(r|0)==0&(t|0)==0;t=(r|0)==0&(t|0)==0?45496:45488;r=0;k=0;q=m;while(1){p=a[q+15>>0]|0;za=p&2;g=(za&255)>>>1&255;if(za<<24>>24!=0&s)k=k+1|0;else{n=c[q>>2]|0;if(!(p&4))m=59952;else m=n+(Eu(n)|0)+1|0;o=(a[q+12>>0]|0)!=0&1;l=c[q+4>>2]|0;if(!l)l=0;else l=c[l+8>>2]|0;c[ia>>2]=r-k;c[ia+4>>2]=n;c[ia+8>>2]=m;c[ia+12>>2]=o;c[ia+16>>2]=l;c[ia+20>>2]=p&1;c[ia+24>>2]=g;_m(Aa,1,t,ia);l=b[i>>1]|0}r=r+1|0;if((r|0)>=(l<<16>>16|0))break f;else q=q+16|0}}s=0;k=0;r=m;p=l<<16>>16;while(1){o=a[r+15>>0]|0;ya=o&2;q=(ya&255)>>>1&255;do if(!(ya<<24>>24))za=979;else{ya=t;if(!((c[ya>>2]|0)==0&(c[ya+4>>2]|0)==0)){za=979;break}k=k+1|0}while(0);if((za|0)==979){za=0;l=(o&1)==0;K:do if(l)l=(l^1)&1;else{if((p|0)<1){l=1;break}m=c[u>>2]|0;l=1;while(1){if((s|0)==(b[m+(l+-1<<1)>>1]|0))break K;n=l+1|0;if((l|0)<(p|0))l=n;else{l=n;break}}}while(0);p=t;p=(c[p>>2]|0)==0&(c[p+4>>2]|0)==0?45496:45488;g=c[r>>2]|0;if(!(o&4))n=59952;else n=g+(Eu(g)|0)+1|0;o=(a[r+12>>0]|0)!=0&1;m=c[r+4>>2]|0;if(!m)m=0;else m=c[m+8>>2]|0;c[ja>>2]=s-k;c[ja+4>>2]=g;c[ja+8>>2]=n;c[ja+12>>2]=o;c[ja+16>>2]=m;c[ja+20>>2]=l;c[ja+24>>2]=q;_m(Aa,1,p,ja);l=b[i>>1]|0}s=s+1|0;p=l<<16>>16;if((s|0)>=(p|0))break;else r=r+16|0}break}case 17:{if(!Ba)break f;i=hi(Da,Ba,la)|0;if(!i)break f;m=c[i+24>>2]|0;if(!m)k=-1e6;else{l=c[ya>>2]|0;k=0;while(1)if((c[l+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}u=4544+(j<<4)+8|0;u=(c[u>>2]|0)==0&(c[u+4>>2]|0)==0;r=b[(u?i+50|0:i+52|0)>>1]|0;j=r&65535;c[xa>>2]=u?3:6;s=c[i+12>>2]|0;o=c[f+116>>2]|0;o=(o|0)==0?f:o;l=o+84|0;m=c[l>>2]|0;n=1<>2]=m|n;if((k|0)!=1)break;q=c[o>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(o,32157,Z);c[o+12>>2]=l;break}ya=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=ya;k=c[q+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1010;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1010}while(0);do if((za|0)==1010){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{za=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);za=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((za|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break L}while(0)}while(0);if(!(r<<16>>16))break f;t=i+4|0;q=s+4|0;r=Aa+108|0;s=Aa+112|0;o=i+28|0;p=i+32|0;n=i+50|0;g=Aa+104|0;if(u){m=0;do{za=b[(c[t>>2]|0)+(m<<1)>>1]|0;k=za<<16>>16;if(za<<16>>16<0)l=0;else l=c[(c[q>>2]|0)+(k<<4)>>2]|0;c[ea>>2]=m;c[ea+4>>2]=k;c[ea+8>>2]=l;_m(Aa,1,45503,ea);k=c[xa>>2]|0;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;za=c[g>>2]|0;a[za+(l*20|0)>>0]=81;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=k;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0}else Di(Aa,81,1,k,0)|0;m=m+1|0}while((m|0)!=(j|0))}else{m=0;do{za=b[(c[t>>2]|0)+(m<<1)>>1]|0;k=za<<16>>16;if(za<<16>>16<0)l=0;else l=c[(c[q>>2]|0)+(k<<4)>>2]|0;c[fa>>2]=m;c[fa+4>>2]=k;c[fa+8>>2]=l;_m(Aa,1,45503,fa);l=c[(c[p>>2]|0)+(m<<2)>>2]|0;k=m>>>0<(e[n>>1]|0)>>>0&1;c[ga>>2]=d[(c[o>>2]|0)+m>>0];c[ga+4>>2]=l;c[ga+8>>2]=k;_m(Aa,4,45508,ga);k=c[xa>>2]|0;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;za=c[g>>2]|0;a[za+(l*20|0)>>0]=81;b[za+(l*20|0)+2>>1]=0;c[za+(l*20|0)+4>>2]=1;c[za+(l*20|0)+8>>2]=k;c[za+(l*20|0)+12>>2]=0;c[za+(l*20|0)+16>>2]=0;a[za+(l*20|0)+1>>0]=0}else Di(Aa,81,1,k,0)|0;m=m+1|0}while((m|0)!=(j|0))}break}case 18:{if(!Ba)break f;r=Sd(Da,Ba,la)|0;if(!r)break f;m=c[r+72>>2]|0;if(!m)k=-1e6;else{l=c[ya>>2]|0;k=0;while(1)if((c[l+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}c[xa>>2]=5;o=c[f+116>>2]|0;o=(o|0)==0?f:o;l=o+84|0;m=c[l>>2]|0;n=1<>2]=m|n;if((k|0)!=1)break;q=c[o>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(o,32157,V);c[o+12>>2]=l;break}ya=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=ya;k=c[q+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1059;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1059}while(0);do if((za|0)==1059){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{za=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);za=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((za|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break M}while(0)}while(0);k=c[r+8>>2]|0;if(!k)break f;l=0;while(1){xa=c[k>>2]|0;f=(a[k+54>>0]|0)!=0&1;ya=k+55|0;ya=c[30092+(((d[ya>>0]|d[ya+1>>0]<<8)&3)<<2)>>2]|0;za=(c[k+36>>2]|0)!=0&1;c[ba>>2]=l;c[ba+4>>2]=xa;c[ba+8>>2]=f;c[ba+12>>2]=ya;c[ba+16>>2]=za;_m(Aa,1,45517,ba);k=c[k+20>>2]|0;if(!k)break;else l=l+1|0}break}case 10:{c[xa>>2]=3;o=Da+20|0;k=c[o>>2]|0;if((k|0)<=0){za=2020;break b}n=0;while(1){l=c[ya>>2]|0;m=c[l+(n<<4)+4>>2]|0;if(m){l=c[l+(n<<4)>>2]|0;k=c[c[m+4>>2]>>2]|0;if(!(a[k+15>>0]|0))k=c[k+168>>2]|0;else k=59952;c[U>>2]=n;c[U+4>>2]=l;c[U+8>>2]=k;_m(Aa,1,45523,U);k=c[o>>2]|0}n=n+1|0;if((n|0)>=(k|0)){za=2020;break b}}}case 7:{c[xa>>2]=2;k=c[Da+388>>2]|0;if(!k){za=2020;break b}l=0;while(1){za=c[c[k+8>>2]>>2]|0;c[M>>2]=l;c[M+4>>2]=za;_m(Aa,1,45527,M);k=c[k>>2]|0;if(!k)break;else l=l+1|0}break}case 14:{if(!Ba)break f;r=Sd(Da,Ba,la)|0;if(!r)break f;s=c[r+16>>2]|0;if(!s)break f;m=c[r+72>>2]|0;if(!m)k=-1e6;else{l=c[ya>>2]|0;k=0;while(1)if((c[l+(k<<4)+12>>2]|0)==(m|0))break;else k=k+1|0}c[xa>>2]=8;o=c[f+116>>2]|0;o=(o|0)==0?f:o;l=o+84|0;m=c[l>>2]|0;n=1<>2]=m|n;if((k|0)!=1)break;q=c[o>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(o,32157,W);c[o+12>>2]=l;break}ya=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=ya;k=c[q+92>>2]|0;n=c[ya+4>>2]|0;c[n+4>>2]=c[ya>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;ya=(c[14820]|0)+1|0;c[14820]=ya;c[14821]=(ya|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1106;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1106}while(0);do if((za|0)==1106){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{za=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-za;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);za=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((za|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break N}while(0)}while(0);i=r+4|0;m=s;n=0;while(1){p=m+20|0;O:do if((c[p>>2]|0)>0){g=m+8|0;q=m+26|0;r=m+25|0;o=0;while(1){s=c[g>>2]|0;t=c[(c[i>>2]|0)+(c[m+36+(o<<3)>>2]<<4)>>2]|0;u=c[m+36+(o<<3)+4>>2]|0;switch(a[q>>0]|0){case 8:{k=45928;break}case 9:{k=45937;break}case 10:{k=45949;break}case 7:{k=45957;break}default:k=45966}switch(a[r>>0]|0){case 8:{l=45928;break}case 9:{l=45937;break}case 10:{l=45949;break}case 7:{l=45957;break}default:l=45966}c[da>>2]=n;c[da+4>>2]=o;c[da+8>>2]=s;c[da+12>>2]=t;c[da+16>>2]=u;c[da+20>>2]=k;c[da+24>>2]=l;c[da+28>>2]=45539;_m(Aa,1,45530,da);o=o+1|0;if((o|0)>=(c[p>>2]|0))break O}}while(0);m=c[m+4>>2]|0;if(!m)break;else n=n+1|0}break}case 13:{k=c[xa>>2]|0;J=k+1|0;K=k+5|0;M=k+6|0;c[xa>>2]=M;l=c[(c[(c[ya>>2]|0)+(r<<4)+12>>2]|0)+16>>2]|0;P:do if(l|0){C=(Ba|0)==0;D=f+116|0;E=Aa+108|0;F=Aa+112|0;G=Aa+104|0;H=f+40|0;I=f+56|0;h=k+2|0;w=k+3|0;x=Aa+12|0;y=Da+480|0;z=Da+304|0;A=Da+308|0;B=Da+300|0;k=l;do{if(C){v=c[k+8>>2]|0;k=c[k>>2]|0}else{v=bd(f,0,Ba,la)|0;k=0}do if(v|0){t=v+16|0;if(!(c[t>>2]|0))break;m=c[v+72>>2]|0;if(!m)s=-1e6;else{n=c[ya>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0)){s=l;break}else l=l+1|0}o=c[D>>2]|0;o=(o|0)==0?f:o;l=o+84|0;m=c[l>>2]|0;n=1<>2]=m|n;if((s|0)!=1)break;r=c[o>>2]|0;l=r+16|0;if(c[(c[l>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;m=Pe(c[r>>2]|0,0,r,wa,0,542)|0;if(m|0){cd(o,32157,na);c[o+12>>2]=m;break}ta=c[wa>>2]|0;c[(c[l>>2]|0)+20>>2]=ta;l=c[r+92>>2]|0;o=c[ta+4>>2]|0;c[o+4>>2]=c[ta>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;g=o+36|0;q=(c[p>>2]|0)-(c[g>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[p>>2]=l;n=o+80|0;l=c[n>>2]|0;if(!l)break;m=l+-4|0;c[n>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;ta=(c[14820]|0)+1|0;c[14820]=ta;c[14821]=(ta|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;za=1159;break}else{l=Wa[c[29352>>2]&127](m)|0;za=1159}while(0);do if((za|0)==1159){za=0;c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{ta=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);ta=Se(c[o>>2]|0,p,q)|0;c[g>>2]=(c[p>>2]|0)-(q&65535);if((ta|0)!=7)break;l=r+81|0;do if(!(a[l>>0]|0)){if(a[r+82>>0]|0)break;a[l>>0]=1;if((c[r+180>>2]|0)>0)c[r+264>>2]=1;l=r+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[r+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);break Q}while(0)}while(0);Hj(f,s,c[v+28>>2]|0,0,c[v>>2]|0);l=M+(b[v+42>>1]|0)|0;if((l|0)>(c[xa>>2]|0)){c[xa>>2]=l;Gj(f,0,s,v,108)}else Gj(f,0,s,v,108);m=c[v>>2]|0;l=c[E>>2]|0;if((c[F>>2]|0)>(l|0)){c[E>>2]=l+1;ta=c[G>>2]|0;a[ta+(l*20|0)>>0]=110;b[ta+(l*20|0)+2>>1]=0;c[ta+(l*20|0)+4>>2]=0;c[ta+(l*20|0)+8>>2]=J;c[ta+(l*20|0)+12>>2]=0;c[ta+(l*20|0)+16>>2]=0;a[ta+(l*20|0)+1>>0]=0}else l=Di(Aa,110,0,J,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[E>>2]|0)+-1|0;Ei(Aa,(c[G>>2]|0)+(l*20|0)|0,m,0)}l=c[t>>2]|0;if(!l)l=1;else{p=l;l=1;do{m=Sd(Da,c[p+8>>2]|0,la)|0;R:do if(m|0){c[oa>>2]=0;Hj(f,s,c[m+28>>2]|0,0,c[m>>2]|0);if(Om(f,m,p,oa,0)|0)break P;o=c[oa>>2]|0;if(!o){Gj(f,l,s,m,108);break}m=c[o+44>>2]|0;n=c[E>>2]|0;if((c[F>>2]|0)>(n|0)){c[E>>2]=n+1;ta=c[G>>2]|0;a[ta+(n*20|0)>>0]=108;b[ta+(n*20|0)+2>>1]=0;c[ta+(n*20|0)+4>>2]=l;c[ta+(n*20|0)+8>>2]=m;c[ta+(n*20|0)+12>>2]=s;c[ta+(n*20|0)+16>>2]=0;a[ta+(n*20|0)+1>>0]=0}else Di(Aa,108,l,m,s)|0;n=c[ua>>2]|0;o=Ij(f,o)|0;if(!o)break;m=c[n>>2]|0;if(!(a[m+81>>0]|0)){sa=c[n+104>>2]|0;ta=(c[n+108>>2]|0)+-1|0;a[sa+(ta*20|0)+1>>0]=-9;c[sa+(ta*20|0)+16>>2]=o;break}if(c[m+480>>2]|0)break;ta=(c[o>>2]|0)+-1|0;c[o>>2]=ta;if(ta|0)break;m=c[o+12>>2]|0;do if(m|0){if(c[m+480>>2]|0){Xd(m,o);break R}n=o;if((c[m+304>>2]|0)>>>0>n>>>0)break;if((c[m+308>>2]|0)>>>0<=n>>>0)break;ta=m+300|0;c[o>>2]=c[ta>>2];c[ta>>2]=o;break R}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{ta=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}while(0);l=l+1|0;p=c[p+4>>2]|0}while((p|0)!=0)}if((c[H>>2]|0)<(l|0))c[H>>2]=l;l=c[E>>2]|0;if((c[F>>2]|0)>(l|0)){c[E>>2]=l+1;$=c[G>>2]|0;a[$+(l*20|0)>>0]=36;$=$+(l*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0));j=l}else j=Di(Aa,36,0,0,0)|0;l=c[t>>2]|0;if(l|0){i=v+36|0;u=1;while(1){s=l+8|0;m=Sd(Da,c[s>>2]|0,la)|0;c[oa>>2]=0;c[va>>2]=0;p=(m|0)!=0;if(p)Om(f,m,l,oa,va)|0;t=c[I>>2]|0;r=t+-1|0;c[I>>2]=r;g=l+20|0;m=c[g>>2]|0;if((m|0)>0){o=0;do{n=c[va>>2]|0;m=o+M|0;Vj(Aa,v,0,c[((n|0)==0?l+36+(o<<3)|0:n+(o<<2)|0)>>2]|0,m);n=c[E>>2]|0;if((c[F>>2]|0)>(n|0)){c[E>>2]=n+1;ta=c[G>>2]|0;a[ta+(n*20|0)>>0]=50;b[ta+(n*20|0)+2>>1]=0;c[ta+(n*20|0)+4>>2]=m;c[ta+(n*20|0)+8>>2]=r;c[ta+(n*20|0)+12>>2]=0;c[ta+(n*20|0)+16>>2]=0;a[ta+(n*20|0)+1>>0]=0}else Di(Aa,50,m,r,0)|0;o=o+1|0;m=c[g>>2]|0}while((o|0)<(m|0))}n=c[oa>>2]|0;do if(!n){if(!p)break;m=c[E>>2]|0;n=m+2|0;if((c[F>>2]|0)>(m|0)){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=30;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=u;c[ta+(m*20|0)+8>>2]=n;c[ta+(m*20|0)+12>>2]=M;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0}else Di(Aa,30,u,n,M)|0;m=c[E>>2]|0;if((c[F>>2]|0)>(m|0)){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=11;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=0;c[ta+(m*20|0)+8>>2]=r;c[ta+(m*20|0)+12>>2]=0;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0;break}else{Di(Aa,11,0,r,0)|0;break}}else{q=gl(Da,n)|0;g=c[g>>2]|0;n=c[E>>2]|0;if((c[F>>2]|0)>(n|0)){c[E>>2]=n+1;ta=c[G>>2]|0;a[ta+(n*20|0)>>0]=92;b[ta+(n*20|0)+2>>1]=0;c[ta+(n*20|0)+4>>2]=M;c[ta+(n*20|0)+8>>2]=m;c[ta+(n*20|0)+12>>2]=K;c[ta+(n*20|0)+16>>2]=0;a[ta+(n*20|0)+1>>0]=0;m=n}else m=Di(Aa,92,M,m,K)|0;n=c[Aa>>2]|0;S:do if(!(a[n+81>>0]|0)){if((m|0)<0)m=(c[E>>2]|0)+-1|0;n=c[G>>2]|0;o=n+(m*20|0)|0;do if((g|0)<=-1){p=n+(m*20|0)+1|0;if(a[p>>0]|0)break;if((g|0)==-3){c[n+(m*20|0)+16>>2]=q;a[p>>0]=-3;break S}if(!q)break S;c[n+(m*20|0)+16>>2]=q;a[p>>0]=g;if((g|0)!=-12)break S;ta=q+12|0;c[ta>>2]=(c[ta>>2]|0)+1;break S}while(0);Ei(Aa,o,q,g)}else{if((g|0)==-12)break;kg(n,g,q)}while(0);m=c[E>>2]|0;if((c[F>>2]|0)>(m|0)){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=29;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=u;c[ta+(m*20|0)+8>>2]=r;c[ta+(m*20|0)+12>>2]=K;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0}else m=Di(Aa,29,u,r,K)|0;if(a[(c[Aa>>2]|0)+81>>0]|0)break;ta=c[G>>2]|0;a[ta+(m*20|0)+1>>0]=-3;c[ta+(m*20|0)+16>>2]=0}while(0);m=c[E>>2]|0;n=(c[F>>2]|0)>(m|0);do if(!(c[i>>2]&32))if(n){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=-128;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=0;c[ta+(m*20|0)+8>>2]=h;c[ta+(m*20|0)+12>>2]=0;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0;break}else{Di(Aa,128,0,h,0)|0;break}else if(n){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=73;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=0;c[ta+(m*20|0)+8>>2]=h;c[ta+(m*20|0)+12>>2]=0;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0;break}else{Di(Aa,73,0,h,0)|0;break}while(0);c[ma>>2]=c[s>>2];c[ma+4>>2]=u+-1;_m(Aa,w,45544,ma);m=c[E>>2]|0;if((c[F>>2]|0)>(m|0)){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=81;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=J;c[ta+(m*20|0)+8>>2]=4;c[ta+(m*20|0)+12>>2]=0;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0}else Di(Aa,81,J,4,0)|0;n=c[x>>2]|0;m=0-t|0;if(((c[n+56>>2]|0)+(c[n+60>>2]|0)|0)<0)mk(n,Aa,m);else c[(c[n+64>>2]|0)+(m<<2)>>2]=c[E>>2];m=c[va>>2]|0;T:do if(m|0){if(c[y>>2]|0){Xd(Da,m);break}n=m;do if((c[z>>2]|0)>>>0<=n>>>0){if((c[A>>2]|0)>>>0<=n>>>0)break;c[m>>2]=c[B>>2];c[B>>2]=m;break T}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{ta=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-ta;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);l=c[l+4>>2]|0;if(!l)break;else u=u+1|0}}l=j+1|0;m=c[E>>2]|0;if((c[F>>2]|0)>(m|0)){c[E>>2]=m+1;ta=c[G>>2]|0;a[ta+(m*20|0)>>0]=5;b[ta+(m*20|0)+2>>1]=0;c[ta+(m*20|0)+4>>2]=0;c[ta+(m*20|0)+8>>2]=l;c[ta+(m*20|0)+12>>2]=0;c[ta+(m*20|0)+16>>2]=0;a[ta+(m*20|0)+1>>0]=0}else Di(Aa,5,0,l,0)|0;m=c[E>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))l=(c[G>>2]|0)+(((j|0)<0?m+-1|0:j)*20|0)|0;else l=59308;c[l+8>>2]=m}while(0)}while((k|0)!=0)}while(0);break f}case 6:{if(!Ba)break f;l=(Zm(Ba,1,0)|0)<<24>>24!=0;Aa=l?45976:31415;Hd(Da,43614,2,1,Aa,105,0,0,0,0,0)|0;Hd(Da,43614,3,1,Aa,105,0,0,0,0,0)|0;Hd(Da,43609,2,1,31411,105,0,0,0,0,0)|0;Aa=Jd(Da,43609,2,1,0)|0;k=Aa+4|0;if(Aa|0)c[k>>2]=c[k>>2]|12;Aa=Jd(Da,43609,3,1,0)|0;k=Aa+4|0;if(Aa|0)c[k>>2]=c[k>>2]|12;l=l?12:4;Aa=Jd(Da,43614,2,1,0)|0;k=Aa+4|0;if(Aa|0)c[k>>2]=c[k>>2]|l&255;Aa=Jd(Da,43614,3,1,0)|0;k=Aa+4|0;if(!Aa)break f;c[k>>2]=c[k>>2]|l&255;break f}case 19:{V=(a[Ca>>0]|32)<<24>>24==113;U=(c[h>>2]|0)==0?-1:r;c[xa>>2]=6;c[oa>>2]=100;if(Ba){ii(Ba,oa)|0;k=c[oa>>2]|0;if((k|0)<1){c[oa>>2]=100;S=100}else S=k}else S=100;k=S+-1|0;T=Aa+108|0;l=c[T>>2]|0;R=Aa+112|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;oa=c[Aa+104>>2]|0;a[oa+(l*20|0)>>0]=70;b[oa+(l*20|0)+2>>1]=0;c[oa+(l*20|0)+4>>2]=k;c[oa+(l*20|0)+8>>2]=1;c[oa+(l*20|0)+12>>2]=0;c[oa+(l*20|0)+16>>2]=0;a[oa+(l*20|0)+1>>0]=0}else Di(Aa,70,k,1,0)|0;z=Da+81|0;A=Da+20|0;U:do if((c[A>>2]|0)>0){B=(U|0)<0;C=f+116|0;D=Da+272|0;E=Da+276|0;F=Da+288|0;G=Da+300|0;H=Da+296|0;I=Da+284|0;h=f+19|0;J=f+28|0;K=Da+292|0;M=Aa+104|0;N=Da+32|0;O=f+56|0;P=Aa+12|0;Q=f+52|0;y=0;do{do if(B|(y|0)==(U|0)){n=c[C>>2]|0;n=(n|0)==0?f:n;k=n+84|0;l=c[k>>2]|0;m=1<>2]=l|m;if((y|0)!=1)break;q=c[n>>2]|0;k=q+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[n+199>>0]|0)break;l=Pe(c[q>>2]|0,0,q,wa,0,542)|0;if(l|0){cd(n,32157,qa);c[n+12>>2]=l;break}oa=c[wa>>2]|0;c[(c[k>>2]|0)+20>>2]=oa;k=c[q+92>>2]|0;n=c[oa+4>>2]|0;c[n+4>>2]=c[oa>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;g=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;oa=(c[14820]|0)+1|0;c[14820]=oa;c[14821]=(oa|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1314;break}else{k=Wa[c[29352>>2]&127](l)|0;za=1314}while(0);do if((za|0)==1314){za=0;c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{oa=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);oa=Se(c[n>>2]|0,o,g)|0;c[p>>2]=(c[o>>2]|0)-(g&65535);if((oa|0)!=7)break;k=q+81|0;do if(!(a[k>>0]|0)){if(a[q+82>>0]|0)break;a[k>>0]=1;if((c[q+180>>2]|0)>0)c[q+264>>2]=1;k=q+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[q+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break V}while(0)}while(0);g=(c[(c[ya>>2]|0)+(y<<4)+12>>2]|0)+16|0;l=c[g>>2]|0;if(!l){m=0;k=0}else{m=0;k=0;do{n=c[l+8>>2]|0;k=((c[n+36>>2]|0)>>>5&1^1)+k|0;n=c[n+8>>2]|0;if(!n)o=0;else{o=0;do{k=k+1|0;o=o+1|0;n=c[n+20>>2]|0}while((n|0)!=0)}m=(o|0)>(m|0)?o:m;l=c[l>>2]|0}while((l|0)!=0)}l=(k<<2)+4|0;W:do if(c[D>>2]|0)if(!(a[z>>0]|0))za=1341;else break U;else{do if(0<0|(0==0?(e[E>>1]|0)>>>0>>0:0))k=F;else{k=c[G>>2]|0;if(k|0){c[G>>2]=c[k>>2];c[I>>2]=(c[I>>2]|0)+1;p=k;break W}k=c[H>>2]|0;if(!k){k=K;break}c[H>>2]=c[k>>2];c[I>>2]=(c[I>>2]|0)+1;p=k;break W}while(0);c[k>>2]=(c[k>>2]|0)+1;za=1341}while(0);if((za|0)==1341){za=0;p=_d(Da,l,0)|0}if(!p)break U;k=c[g>>2]|0;if(!k)l=0;else{l=0;do{o=c[k+8>>2]|0;n=l+1|0;if(!(c[o+36>>2]&32)){c[p+(n<<2)>>2]=c[o+28>>2];l=n}n=c[o+8>>2]|0;if(n)do{l=l+1|0;c[p+(l<<2)>>2]=c[n+44>>2];n=c[n+20>>2]|0}while((n|0)!=0);k=c[k>>2]|0}while((k|0)!=0)}c[p>>2]=l;oa=c[xa>>2]|0;k=m+8|0;c[xa>>2]=(oa|0)>(k|0)?oa:k;a[h>>0]=0;c[J>>2]=0;k=c[T>>2]|0;if((c[R>>2]|0)>(k|0)){c[T>>2]=k+1;oa=c[M>>2]|0;a[oa+(k*20|0)>>0]=-109;b[oa+(k*20|0)+2>>1]=0;c[oa+(k*20|0)+4>>2]=2;c[oa+(k*20|0)+8>>2]=l;c[oa+(k*20|0)+12>>2]=1;c[oa+(k*20|0)+16>>2]=0;a[oa+(k*20|0)+1>>0]=0}else k=Di(Aa,147,2,l,1)|0;l=c[Aa>>2]|0;X:do if(!(a[l+81>>0]|0)){if((k|0)<0)k=(c[T>>2]|0)+-1|0;l=c[M>>2]|0;m=l+(k*20|0)+1|0;if(!(a[m>>0]|0)){c[l+(k*20|0)+16>>2]=p;a[m>>0]=-15;break}else{Ei(Aa,l+(k*20|0)|0,p,-15);break}}else{do if(l|0){if(c[l+480>>2]|0){Xd(l,p);break X}k=p;if((c[l+304>>2]|0)>>>0>k>>>0)break;if((c[l+308>>2]|0)>>>0<=k>>>0)break;oa=l+300|0;c[p>>2]=c[oa>>2];c[oa>>2]=p;break X}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{oa=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);k=c[T>>2]|0;if((k|0)>0)b[(c[M>>2]|0)+((k+-1|0)*20|0)+2>>1]=y&255;if((c[R>>2]|0)>(k|0)){c[T>>2]=k+1;oa=c[M>>2]|0;a[oa+(k*20|0)>>0]=50;b[oa+(k*20|0)+2>>1]=0;c[oa+(k*20|0)+4>>2]=2;c[oa+(k*20|0)+8>>2]=0;c[oa+(k*20|0)+12>>2]=0;c[oa+(k*20|0)+16>>2]=0;a[oa+(k*20|0)+1>>0]=0}else k=Di(Aa,50,2,0,0)|0;c[ra>>2]=c[(c[ya>>2]|0)+(y<<4)>>2];o=dd(Da,45548,ra)|0;l=c[T>>2]|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;oa=c[M>>2]|0;a[oa+(l*20|0)>>0]=110;b[oa+(l*20|0)+2>>1]=0;c[oa+(l*20|0)+4>>2]=0;c[oa+(l*20|0)+8>>2]=3;c[oa+(l*20|0)+12>>2]=0;c[oa+(l*20|0)+16>>2]=0;a[oa+(l*20|0)+1>>0]=0}else l=Di(Aa,110,0,3,0)|0;m=c[Aa>>2]|0;Y:do if(a[m+81>>0]|0){if(!o)break;do if(m|0){if(c[m+480>>2]|0){Xd(m,o);break Y}l=o;if((c[m+304>>2]|0)>>>0>l>>>0)break;if((c[m+308>>2]|0)>>>0<=l>>>0)break;oa=m+300|0;c[o>>2]=c[oa>>2];c[oa>>2]=o;break Y}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{oa=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else{if((l|0)<0)l=(c[T>>2]|0)+-1|0;m=c[M>>2]|0;n=m+(l*20|0)+1|0;if(a[n>>0]|0){Ei(Aa,m+(l*20|0)|0,o,-7);break}if(!o)break;c[m+(l*20|0)+16>>2]=o;a[n>>0]=-7}while(0);l=c[T>>2]|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;oa=c[M>>2]|0;a[oa+(l*20|0)>>0]=105;b[oa+(l*20|0)+2>>1]=0;c[oa+(l*20|0)+4>>2]=2;c[oa+(l*20|0)+8>>2]=3;c[oa+(l*20|0)+12>>2]=3;c[oa+(l*20|0)+16>>2]=0;a[oa+(l*20|0)+1>>0]=0}else Di(Aa,105,2,3,3)|0;l=c[T>>2]|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;oa=c[M>>2]|0;a[oa+(l*20|0)>>0]=81;b[oa+(l*20|0)+2>>1]=0;c[oa+(l*20|0)+4>>2]=3;c[oa+(l*20|0)+8>>2]=1;c[oa+(l*20|0)+12>>2]=0;c[oa+(l*20|0)+16>>2]=0;a[oa+(l*20|0)+1>>0]=0}else Di(Aa,81,3,1,0)|0;l=c[T>>2]|0;m=l+2|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;oa=c[M>>2]|0;a[oa+(l*20|0)>>0]=47;b[oa+(l*20|0)+2>>1]=0;c[oa+(l*20|0)+4>>2]=1;c[oa+(l*20|0)+8>>2]=m;c[oa+(l*20|0)+12>>2]=1;c[oa+(l*20|0)+16>>2]=0;a[oa+(l*20|0)+1>>0]=0}else Di(Aa,47,1,m,1)|0;l=c[T>>2]|0;if((c[R>>2]|0)>(l|0)){c[T>>2]=l+1;$=c[M>>2]|0;a[$+(l*20|0)>>0]=69;$=$+(l*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,69,0,0,0)|0;l=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))k=(c[M>>2]|0)+(((k|0)<0?l+-1|0:k)*20|0)|0;else k=59308;c[k+8>>2]=l;k=c[g>>2]|0;if(!k)break;do{u=c[k+8>>2]|0;do if((c[u+28>>2]|0)>=1){Z:do if(!(c[u+36>>2]&32))l=0;else{l=c[u+8>>2]|0;if(!l){l=0;break}while(1){oa=l+55|0;if(((d[oa>>0]|d[oa+1>>0]<<8)&3)==2)break Z;l=c[l+20>>2]|0;if(!l){l=0;break}}}while(0);Hm(f,u,108,0,1,0,wa,va)|0;m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=70;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=0;c[oa+(m*20|0)+8>>2]=7;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else Di(Aa,70,0,7,0)|0;x=u+8|0;m=c[x>>2]|0;if(m|0){n=0;while(1){o=n+8|0;p=c[T>>2]|0;if((c[R>>2]|0)>(p|0)){c[T>>2]=p+1;oa=c[M>>2]|0;a[oa+(p*20|0)>>0]=70;b[oa+(p*20|0)+2>>1]=0;c[oa+(p*20|0)+4>>2]=0;c[oa+(p*20|0)+8>>2]=o;c[oa+(p*20|0)+12>>2]=0;c[oa+(p*20|0)+16>>2]=0;a[oa+(p*20|0)+1>>0]=0}else Di(Aa,70,0,o,0)|0;m=c[m+20>>2]|0;if(!m)break;else n=n+1|0}}m=c[wa>>2]|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=36;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=m;c[oa+(n*20|0)+8>>2]=0;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,36,m,0,0)|0;m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;w=c[M>>2]|0;a[w+(m*20|0)>>0]=83;b[w+(m*20|0)+2>>1]=0;c[w+(m*20|0)+4>>2]=7;c[w+(m*20|0)+8>>2]=1;c[w+(m*20|0)+12>>2]=0;c[w+(m*20|0)+16>>2]=0;a[w+(m*20|0)+1>>0]=0;w=m}else w=Di(Aa,83,7,1,0)|0;do if(V)p=u+42|0;else{m=c[wa>>2]|0;p=u+42|0;n=(b[p>>1]|0)+-1|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=90;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=m;c[oa+(o*20|0)+8>>2]=n;c[oa+(o*20|0)+12>>2]=3;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,90,m,n,3)|0;m=c[T>>2]|0;if((m|0)<=0)break;b[(c[M>>2]|0)+((m+-1|0)*20|0)+2>>1]=128}while(0);m=b[p>>1]|0;if(m<<16>>16>0){s=u+40|0;t=u+4|0;r=0;do{do if((r|0)!=(b[s>>1]|0)){if(!(a[(c[t>>2]|0)+(r<<4)+12>>0]|0))break;Vj(Aa,u,c[wa>>2]|0,r,3);m=c[T>>2]|0;if((m|0)>0)b[(c[M>>2]|0)+((m+-1|0)*20|0)+2>>1]=128;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=51;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=3;c[oa+(m*20|0)+8>>2]=0;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else m=Di(Aa,51,3,0,0)|0;q=c[(c[t>>2]|0)+(r<<4)>>2]|0;c[sa>>2]=c[u>>2];c[sa+4>>2]=q;q=dd(Da,45572,sa)|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=110;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=0;c[oa+(n*20|0)+8>>2]=3;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,3,0)|0;o=c[Aa>>2]|0;_:do if(a[o+81>>0]|0){if(!q)break;do if(o|0){if(c[o+480>>2]|0){Xd(o,q);break _}n=q;if((c[o+304>>2]|0)>>>0>n>>>0)break;if((c[o+308>>2]|0)>>>0<=n>>>0)break;oa=o+300|0;c[q>>2]=c[oa>>2];c[oa>>2]=q;break _}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{oa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}else{if((n|0)<0)n=(c[T>>2]|0)+-1|0;o=c[M>>2]|0;g=o+(n*20|0)+1|0;if(a[g>>0]|0){Ei(Aa,o+(n*20|0)|0,q,-7);break}if(!q)break;c[o+(n*20|0)+16>>2]=q;a[g>>0]=-7}while(0);n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=81;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=3;c[oa+(n*20|0)+8>>2]=1;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,81,3,1,0)|0;n=c[T>>2]|0;o=n+2|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=47;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=1;c[oa+(n*20|0)+8>>2]=o;c[oa+(n*20|0)+12>>2]=1;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,47,1,o,1)|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;$=c[M>>2]|0;a[$+(n*20|0)>>0]=69;$=$+(n*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,69,0,0,0)|0;n=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))m=(c[M>>2]|0)+(((m|0)<0?n+-1|0:m)*20|0)|0;else m=59308;c[m+8>>2]=n;m=b[p>>1]|0}while(0);r=r+1|0}while((r|0)<(m<<16>>16|0))}m=c[u+24>>2]|0;$:do if(m|0){if(!((c[N>>2]&512|0)==0&0==0))break;q=gk(Da,m,0)|0;do if(!(a[z>>0]|0)){g=c[O>>2]|0;n=g+-1|0;o=g+-2|0;c[O>>2]=o;c[Q>>2]=(c[wa>>2]|0)+1;m=c[q>>2]|0;if((m|0)>1)do{oa=m;m=m+-1|0;Tj(f,c[q+4+(m*20|0)>>2]|0,n,0)}while((oa|0)>2);tk(f,c[q+4>>2]|0,o,16);m=c[P>>2]|0;n=0-g|0;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,Aa,n);else c[(c[m+64>>2]|0)+(n<<2)>>2]=c[T>>2];c[Q>>2]=0;c[ta>>2]=c[u>>2];p=dd(Da,45592,ta)|0;m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=110;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=0;c[oa+(m*20|0)+8>>2]=3;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else m=Di(Aa,110,0,3,0)|0;n=c[Aa>>2]|0;aa:do if(a[n+81>>0]|0){if(!p)break;do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break aa}m=p;if((c[n+304>>2]|0)>>>0>m>>>0)break;if((c[n+308>>2]|0)>>>0<=m>>>0)break;oa=n+300|0;c[p>>2]=c[oa>>2];c[oa>>2]=p;break aa}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{oa=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else{if((m|0)<0)m=(c[T>>2]|0)+-1|0;n=c[M>>2]|0;o=n+(m*20|0)+1|0;if(a[o>>0]|0){Ei(Aa,n+(m*20|0)|0,p,-7);break}if(!p)break;c[n+(m*20|0)+16>>2]=p;a[o>>0]=-7}while(0);m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=81;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=3;c[oa+(m*20|0)+8>>2]=1;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else Di(Aa,81,3,1,0)|0;m=c[T>>2]|0;n=m+2|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=47;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=1;c[oa+(m*20|0)+8>>2]=n;c[oa+(m*20|0)+12>>2]=1;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else Di(Aa,47,1,n,1)|0;m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;$=c[M>>2]|0;a[$+(m*20|0)>>0]=69;$=$+(m*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,69,0,0,0)|0;n=c[P>>2]|0;m=1-g|0;if(((c[n+56>>2]|0)+(c[n+60>>2]|0)|0)<0){mk(n,Aa,m);break}else{c[(c[n+64>>2]|0)+(m<<2)>>2]=c[T>>2];break}}else if(!q)break $;while(0);ri(Da,q)}while(0);if(V){l=c[wa>>2]|0;m=c[T>>2]|0;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=5;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=l;c[oa+(m*20|0)+8>>2]=w;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else Di(Aa,5,l,w,0)|0;m=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))l=(c[M>>2]|0)+((((w|0)<1?m:w)+-1|0)*20|0)|0;else l=59308;c[l+8>>2]=m;break}m=c[x>>2]|0;if(m|0){v=u+4|0;n=-1;o=0;j=0;while(1){g=(c[O>>2]|0)+-1|0;c[O>>2]=g;do if((l|0)!=(m|0)){i=el(f,m,c[wa>>2]|0,0,0,pa,o,n)|0;n=j+8|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=83;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=n;c[oa+(o*20|0)+8>>2]=1;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,83,n,1,0)|0;n=(c[va>>2]|0)+j|0;p=e[m+52>>1]|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=29;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=n;c[oa+(o*20|0)+8>>2]=g;c[oa+(o*20|0)+12>>2]=i;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0;g=o}else g=Di(Aa,29,n,g,i)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){oa=c[M>>2]|0;a[oa+(g*20|0)+1>>0]=-3;c[oa+(g*20|0)+16>>2]=p}n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=110;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=0;c[oa+(n*20|0)+8>>2]=3;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,3,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((n|0)<0)n=(c[T>>2]|0)+-1|0;Ei(Aa,(c[M>>2]|0)+(n*20|0)|0,45622,0)}n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=105;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=7;c[oa+(n*20|0)+8>>2]=3;c[oa+(n*20|0)+12>>2]=3;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,105,7,3,3)|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=110;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=0;c[oa+(n*20|0)+8>>2]=4;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,4,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((n|0)<0)n=(c[T>>2]|0)+-1|0;Ei(Aa,(c[M>>2]|0)+(n*20|0)|0,45627,0)}n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=105;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=4;c[oa+(n*20|0)+8>>2]=3;c[oa+(n*20|0)+12>>2]=3;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,105,4,3,3)|0;p=c[m>>2]|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=110;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=0;c[oa+(n*20|0)+8>>2]=4;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,4,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((n|0)<0)o=(c[T>>2]|0)+-1|0;else o=n;Ei(Aa,(c[M>>2]|0)+(o*20|0)|0,p,0)}o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=105;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=4;c[oa+(o*20|0)+8>>2]=3;c[oa+(o*20|0)+12>>2]=3;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,105,4,3,3)|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=81;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=3;c[oa+(o*20|0)+8>>2]=1;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,81,3,1,0)|0;o=c[T>>2]|0;p=o+2|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;u=c[M>>2]|0;a[u+(o*20|0)>>0]=47;b[u+(o*20|0)+2>>1]=0;c[u+(o*20|0)+4>>2]=1;c[u+(o*20|0)+8>>2]=p;c[u+(o*20|0)+12>>2]=1;c[u+(o*20|0)+16>>2]=0;a[u+(o*20|0)+1>>0]=0;u=o}else u=Di(Aa,47,1,p,1)|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;$=c[M>>2]|0;a[$+(o*20|0)>>0]=69;$=$+(o*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,69,0,0,0)|0;p=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))o=(c[M>>2]|0)+(((g|0)<0?p+-1|0:g)*20|0)|0;else o=59308;c[o+8>>2]=p;do if(a[m+54>>0]|0){t=c[O>>2]|0;s=t+-1|0;c[O>>2]=s;r=m+50|0;if(b[r>>1]|0){p=m+4|0;o=0;do{oa=b[(c[p>>2]|0)+(o<<1)>>1]|0;if(!(oa<<16>>16>-1?(a[(c[v>>2]|0)+(oa<<16>>16<<4)+12>>0]|0)!=0:0))za=1581;do if((za|0)==1581){za=0;g=o+i|0;q=c[T>>2]|0;if((c[R>>2]|0)>(q|0)){c[T>>2]=q+1;oa=c[M>>2]|0;a[oa+(q*20|0)>>0]=50;b[oa+(q*20|0)+2>>1]=0;c[oa+(q*20|0)+4>>2]=g;c[oa+(q*20|0)+8>>2]=s;c[oa+(q*20|0)+12>>2]=0;c[oa+(q*20|0)+16>>2]=0;a[oa+(q*20|0)+1>>0]=0;break}else{Di(Aa,50,g,s,0)|0;break}}while(0);o=o+1|0}while(o>>>0<(e[r>>1]|0)>>>0);p=c[T>>2]|0}o=(c[va>>2]|0)+j|0;if((c[R>>2]|0)>(p|0)){c[T>>2]=p+1;oa=c[M>>2]|0;a[oa+(p*20|0)>>0]=5;b[oa+(p*20|0)+2>>1]=0;c[oa+(p*20|0)+4>>2]=o;c[oa+(p*20|0)+8>>2]=0;c[oa+(p*20|0)+12>>2]=0;c[oa+(p*20|0)+16>>2]=0;a[oa+(p*20|0)+1>>0]=0}else p=Di(Aa,5,o,0,0)|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=11;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=0;c[oa+(o*20|0)+8>>2]=s;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,11,0,s,0)|0;o=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))p=(c[M>>2]|0)+(((p|0)<0?o+-1|0:p)*20|0)|0;else p=59308;c[p+8>>2]=o;p=(c[va>>2]|0)+j|0;g=e[r>>1]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=38;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=p;c[oa+(o*20|0)+8>>2]=s;c[oa+(o*20|0)+12>>2]=i;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else o=Di(Aa,38,p,s,i)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){oa=c[M>>2]|0;a[oa+(o*20|0)+1>>0]=-3;c[oa+(o*20|0)+16>>2]=g}o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=110;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=0;c[oa+(o*20|0)+8>>2]=3;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else o=Di(Aa,110,0,3,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[T>>2]|0)+-1|0;Ei(Aa,(c[M>>2]|0)+(o*20|0)|0,45648,0)}o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=11;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=0;c[oa+(o*20|0)+8>>2]=n;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,11,0,n,0)|0;o=c[P>>2]|0;n=0-t|0;if(((c[o+56>>2]|0)+(c[o+60>>2]|0)|0)<0){mk(o,Aa,n);break}else{c[(c[o+64>>2]|0)+(n<<2)>>2]=c[T>>2];break}}while(0);o=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))n=(c[M>>2]|0)+(((u|0)<0?o+-1|0:u)*20|0)|0;else n=59308;c[n+8>>2]=o;n=c[pa>>2]|0;if(!n){n=i;o=m;break}o=c[ua>>2]|0;p=c[o+12>>2]|0;n=~n;if(((c[p+56>>2]|0)+(c[p+60>>2]|0)|0)<0){mk(p,o,n);n=i;o=m;break}else{c[(c[p+64>>2]|0)+(n<<2)>>2]=c[o+108>>2];n=i;o=m;break}}while(0);m=c[m+20>>2]|0;if(!m)break;else j=j+1|0}}m=c[wa>>2]|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=5;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=m;c[oa+(n*20|0)+8>>2]=w;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,5,m,w,0)|0;m=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))n=(c[M>>2]|0)+((((w|0)<1?m:w)+-1|0)*20|0)|0;else n=59308;c[n+8>>2]=m;if((c[R>>2]|0)>(m|0)){c[T>>2]=m+1;oa=c[M>>2]|0;a[oa+(m*20|0)>>0]=110;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=0;c[oa+(m*20|0)+8>>2]=2;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0}else m=Di(Aa,110,0,2,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[T>>2]|0)+-1|0;Ei(Aa,(c[M>>2]|0)+(m*20|0)|0,45675,0)}m=c[x>>2]|0;if(!m)break;g=0;while(1){if((l|0)!=(m|0)){n=(c[va>>2]|0)+g|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=93;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=n;c[oa+(o*20|0)+8>>2]=3;c[oa+(o*20|0)+12>>2]=0;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else Di(Aa,93,n,3,0)|0;n=g+8|0;o=c[T>>2]|0;if((c[R>>2]|0)>(o|0)){c[T>>2]=o+1;oa=c[M>>2]|0;a[oa+(o*20|0)>>0]=53;b[oa+(o*20|0)+2>>1]=0;c[oa+(o*20|0)+4>>2]=n;c[oa+(o*20|0)+8>>2]=0;c[oa+(o*20|0)+12>>2]=3;c[oa+(o*20|0)+16>>2]=0;a[oa+(o*20|0)+1>>0]=0}else o=Di(Aa,53,n,0,3)|0;n=c[T>>2]|0;if((n|0)>0)b[(c[M>>2]|0)+((n+-1|0)*20|0)+2>>1]=144;p=c[m>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=110;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=0;c[oa+(n*20|0)+8>>2]=4;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,4,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((n|0)<0)n=(c[T>>2]|0)+-1|0;Ei(Aa,(c[M>>2]|0)+(n*20|0)|0,p,0)}n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=105;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=4;c[oa+(n*20|0)+8>>2]=2;c[oa+(n*20|0)+12>>2]=3;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,105,4,2,3)|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=81;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=3;c[oa+(n*20|0)+8>>2]=1;c[oa+(n*20|0)+12>>2]=0;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,81,3,1,0)|0;n=c[T>>2]|0;p=n+2|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;oa=c[M>>2]|0;a[oa+(n*20|0)>>0]=47;b[oa+(n*20|0)+2>>1]=0;c[oa+(n*20|0)+4>>2]=1;c[oa+(n*20|0)+8>>2]=p;c[oa+(n*20|0)+12>>2]=1;c[oa+(n*20|0)+16>>2]=0;a[oa+(n*20|0)+1>>0]=0}else Di(Aa,47,1,p,1)|0;n=c[T>>2]|0;if((c[R>>2]|0)>(n|0)){c[T>>2]=n+1;$=c[M>>2]|0;a[$+(n*20|0)>>0]=69;$=$+(n*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else Di(Aa,69,0,0,0)|0;p=c[T>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))n=(c[M>>2]|0)+(((o|0)<0?p+-1|0:o)*20|0)|0;else n=59308;c[n+8>>2]=p}m=c[m+20>>2]|0;if(!m)break;else g=g+1|0}}while(0);k=c[k>>2]|0}while((k|0)!=0)}while(0);y=y+1|0}while((y|0)<(c[A>>2]|0))}while(0);k=ed(Aa,7,18432)|0;if(k|0){c[k+8>>2]=1-S;a[k+41>>0]=-1;c[k+56>>2]=45704;a[k+101>>0]=-1;c[k+116>>2]=50394}if(!(a[(c[Aa>>2]|0)+81>>0]|0))k=c[Aa+104>>2]|0;else k=59308;c[k+12>>2]=(c[T>>2]|0)+-2;za=2020;break b}case 12:{if(!Ba){m=c[f>>2]|0;ba:do if(!(a[m+165>>0]|0)){n=f+4|0;o=m+24|0;p=(c[o>>2]&1|0)==0;g=m+16|0;ya=c[(c[g>>2]|0)+12>>2]|0;a[m+78>>0]=a[ya+77>>0]|0;if((b[ya+78>>1]&1)==0?(P=eh(m,0,n,0)|0,(P|0)!=0):0)k=P;else za=1682;ca:do if((za|0)==1682){k=c[m+20>>2]|0;if((k|0)>1)do{l=k;k=k+-1|0;if((b[(c[(c[g>>2]|0)+(k<<4)+12>>2]|0)+78>>1]&1)==0?(R=eh(m,k,n,0)|0,R|0):0){k=R;break ca}}while((l|0)>2);if(p)c[o>>2]=c[o>>2]&-2;if(!(a[m+89>>0]|0))break ba;c[o>>2]=c[o>>2]|16;break ba}while(0);c[f+12>>2]=k;Aa=f+36|0;c[Aa>>2]=(c[Aa>>2]|0)+1;break f}while(0);za=a[(c[f>>2]|0)+78>>0]|0;l=c[18464+((za&255)<<3)>>2]|0;if(za<<24>>24==8)break f;m=Aa+108|0;k=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;Ei(Aa,(c[Aa+104>>2]|0)+(k*20|0)|0,l,0)}k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,1,0)|0;break f}}o=c[(c[ya>>2]|0)+12>>2]|0;if((b[o+78>>1]&5)==1){za=2020;break b}k=a[Ba>>0]|0;da:do if(k<<24>>24){k=(d[208+(k&255)>>0]|0)+-117|0;n=(k|0)==0;if(n){l=45707;m=Ba;do{m=m+1|0;l=l+1|0;Aa=a[m>>0]|0;k=(d[208+(Aa&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(k|0)!=0))}do if(k){if(!n)break da;k=45712;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18472;break}k=45718;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18480;break}k=45727;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18488;break}k=45736;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18496;break}k=45744;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18504;break}k=45752;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m){k=18512;break}k=45759;l=Ba;do{l=l+1|0;k=k+1|0;Aa=a[l>>0]|0;m=(d[208+(Aa&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(m|0)!=0));if(!m)k=18520;else break da}else k=18464;while(0);za=a[k+4>>0]|0;za=za<<24>>24==0?2:za;a[Da+78>>0]=za;a[o+77>>0]=za;za=2020;break b}while(0);c[ca>>2]=Ba;cd(f,45765,ca);break f}case 0:{k=c[4544+(j<<4)+8>>2]|0;l=1<>2]=c[za>>2]|l;if(!$?a[(c[(c[(c[Aa>>2]|0)+16>>2]|0)+(r<<4)+4>>2]|0)+9>>0]|0:0){za=Aa+156|0;c[za>>2]=c[za>>2]|l}ea:do if(Ba|0){switch(o|0){case 24:case 25:case 42:case 43:break ea;default:{}}Aa=ed(Aa,2,45790)|0;c[Aa+4>>2]=r;c[Aa+24>>2]=r;c[Aa+28>>2]=k;c[wa>>2]=0;ii(Ba,wa)|0;c[Aa+32>>2]=c[wa>>2];break f}while(0);Aa=ed(Aa,3,45798)|0;c[Aa+4>>2]=r;c[Aa+24>>2]=r;c[Aa+32>>2]=k;Aa=(d[F>>0]|d[F+1>>0]<<8)&-65;a[F>>0]=Aa;a[F+1>>0]=Aa>>8;break f}case 8:{c[xa>>2]=1;n=Aa+108|0;o=Aa+112|0;p=Aa+104|0;m=0;do{l=c[26464+(m<<2)>>2]|0;m=m+1|0;k=c[n>>2]|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[p>>2]|0;a[za+(k*20|0)>>0]=110;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,110,0,1,0)|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((k|0)<0)k=(c[n>>2]|0)+-1|0;Ei(Aa,(c[p>>2]|0)+(k*20|0)|0,l,0)}k=c[n>>2]|0;if((c[o>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[p>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else Di(Aa,81,1,1,0)|0}while((m|0)!=7);Aa=(d[F>>0]|d[F+1>>0]<<8)&-65;a[F>>0]=Aa;a[F+1>>0]=Aa>>8;break f}case 39:{p=(c[h>>2]|0)==0?10:r;do if(Ba){o=a[Ba>>0]|0;n=d[208+(o&255)>>0]|0;k=n+-102|0;o=o<<24>>24==0;if(!(o|(k|0)!=0)){l=45810;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k)l=1;else{k=n+-114|0;if(!(o|(k|0)!=0)){l=45815;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}if(!k){l=2;break}k=n+-116|0;if(!(o|(k|0)!=0)){l=36052;m=Ba;do{m=m+1|0;l=l+1|0;za=a[m>>0]|0;k=(d[208+(za&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(za<<24>>24==0|(k|0)!=0))}l=(k|0)==0?3:0}}else l=0;while(0);c[xa>>2]=3;m=Aa+108|0;k=c[m>>2]|0;n=Aa+112|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=6;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=p;c[za+(k*20|0)+8>>2]=l;c[za+(k*20|0)+12>>2]=1;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else Di(Aa,6,p,l,1)|0;k=c[m>>2]|0;if((c[n>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=3;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0;break f}else{Di(Aa,81,1,3,0)|0;break f}}case 38:{if(!Ba)k=c[Da+240>>2]|0;else{c[wa>>2]=0;ii(Ba,wa)|0;za=c[wa>>2]|0;ya=(za|0)>0;k=ya?76:0;c[Da+240>>2]=k;c[Da+244>>2]=ya?za:0}if((k|0)==76){o=c[Da+244>>2]|0;n=o;o=((o|0)<0)<<31>>31}else{n=0;o=0}m=c[Aa>>2]|0;fa:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=1767;else za=1787;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1768;break fa}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1768;break fa}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=1767}while(0);if((za|0)==1767){p=_d(m,8,0)|0;za=1768}ga:do if((za|0)==1768){if(!p){za=1787;break}m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break ga}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break ga}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}while(0);do if((za|0)==1787){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}case 31:{o=Da+20|0;m=c[o>>2]|0;if((m|0)<=0){za=2020;break b}n=c[ya>>2]|0;k=0;do{l=c[n+(k<<4)+4>>2]|0;if(l|0)c[(c[l+4>>2]|0)+4>>2]=c[l>>2];k=k+1|0}while((k|0)!=(m|0));k=0;while(1){l=c[n+(k<<4)+4>>2]|0;if(!l)l=m;else{ab[c[29456>>2]&127](c[(c[(c[c[l+4>>2]>>2]|0)+212>>2]|0)+44>>2]|0);l=c[o>>2]|0}k=k+1|0;if((k|0)>=(l|0)){za=2020;break b}n=c[ya>>2]|0;m=l}}case 27:{if(Ba){c[wa>>2]=0;ii(Ba,wa)|0;k=c[wa>>2]|0;if(!(k&2))break f}else k=65534;wa=f+40|0;w=c[wa>>2]|0;c[wa>>2]=w+1;if(!la)j=(c[Da+20>>2]|0)+-1|0;else j=r;if((r|0)>(j|0)){m=Aa+108|0;k=Aa+112|0}else{v=f+116|0;t=k&1;s=(t|0)==0;m=Aa+108|0;t=t|2;k=Aa+112|0;u=f+19|0;i=Aa+104|0;while(1){do if((r|0)!=1){l=c[v>>2]|0;l=((l|0)==0?f:l)+84|0;n=c[l>>2]|0;o=1<>2]=n|o;l=c[(c[(c[ya>>2]|0)+(r<<4)+12>>2]|0)+16>>2]|0;if(!l)break;do{q=c[l+8>>2]|0;ha:do if(c[q+36>>2]&256|0){g=(e[q+44>>1]|0)+46|0;o=g&65535;n=c[q+8>>2]|0;ia:do if(!n)za=1825;else while(1){wa=n+55|0;if(!((d[wa>>0]|d[wa+1>>0]<<8)&128))break ia;n=c[n+20>>2]|0;if(!n){za=1825;break}}while(0);do if((za|0)==1825){za=0;if(!(o<<16>>16))break;Gj(f,w,r,q,108);o=c[m>>2]|0;p=o+t|0;n=g<<16>>16;if((c[k>>2]|0)>(o|0)){c[m>>2]=o+1;wa=c[i>>2]|0;a[wa+(o*20|0)>>0]=33;b[wa+(o*20|0)+2>>1]=0;c[wa+(o*20|0)+4>>2]=w;c[wa+(o*20|0)+8>>2]=p;c[wa+(o*20|0)+12>>2]=n;c[wa+(o*20|0)+16>>2]=0;a[wa+(o*20|0)+1>>0]=0;break}else{Di(Aa,33,w,p,n)|0;break}}while(0);q=c[q>>2]|0;c[ha>>2]=c[(c[ya>>2]|0)+(r<<4)>>2];c[ha+4>>2]=q;q=dd(Da,45823,ha)|0;if(s){n=c[m>>2]|0;if((c[k>>2]|0)>(n|0)){c[m>>2]=n+1;$=c[i>>2]|0;a[$+(n*20|0)>>0]=-116;$=$+(n*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0))}else n=Di(Aa,140,0,0,0)|0;o=c[Aa>>2]|0;if(!(a[o+81>>0]|0)){if((n|0)<0)n=(c[m>>2]|0)+-1|0;o=c[i>>2]|0;p=o+(n*20|0)+1|0;if(a[p>>0]|0){Ei(Aa,o+(n*20|0)|0,q,-7);break}if(!q)break;c[o+(n*20|0)+16>>2]=q;a[p>>0]=-7;break}if(!q)break;do if(o|0){if(c[o+480>>2]|0){Xd(o,q);break ha}n=q;if((c[o+304>>2]|0)>>>0>n>>>0)break;if((c[o+308>>2]|0)>>>0<=n>>>0)break;wa=o+300|0;c[q>>2]=c[wa>>2];c[wa>>2]=q;break ha}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{wa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}n=a[u>>0]|0;if(!(n<<24>>24)){g=(c[xa>>2]|0)+1|0;c[xa>>2]=g}else{g=n+-1<<24>>24;a[u>>0]=g;g=c[f+148+((g&255)<<2)>>2]|0}n=c[m>>2]|0;if((c[k>>2]|0)>(n|0)){c[m>>2]=n+1;wa=c[i>>2]|0;a[wa+(n*20|0)>>0]=110;b[wa+(n*20|0)+2>>1]=0;c[wa+(n*20|0)+4>>2]=0;c[wa+(n*20|0)+8>>2]=g;c[wa+(n*20|0)+12>>2]=0;c[wa+(n*20|0)+16>>2]=0;a[wa+(n*20|0)+1>>0]=0}else n=Di(Aa,110,0,g,0)|0;o=c[Aa>>2]|0;ja:do if(a[o+81>>0]|0){if(!q)break;do if(o|0){if(c[o+480>>2]|0){Xd(o,q);break ja}n=q;if((c[o+304>>2]|0)>>>0>n>>>0)break;if((c[o+308>>2]|0)>>>0<=n>>>0)break;wa=o+300|0;c[q>>2]=c[wa>>2];c[wa>>2]=q;break ja}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{wa=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}}else{if((n|0)<0)n=(c[m>>2]|0)+-1|0;o=c[i>>2]|0;p=o+(n*20|0)+1|0;if(a[p>>0]|0){Ei(Aa,o+(n*20|0)|0,q,-7);break}if(!q)break;c[o+(n*20|0)+16>>2]=q;a[p>>0]=-7}while(0);n=c[m>>2]|0;if((c[k>>2]|0)>(n|0)){c[m>>2]=n+1;wa=c[i>>2]|0;a[wa+(n*20|0)>>0]=81;b[wa+(n*20|0)+2>>1]=0;c[wa+(n*20|0)+4>>2]=g;c[wa+(n*20|0)+8>>2]=1;c[wa+(n*20|0)+12>>2]=0;c[wa+(n*20|0)+16>>2]=0;a[wa+(n*20|0)+1>>0]=0;break}else{Di(Aa,81,g,1,0)|0;break}}while(0);l=c[l>>2]|0}while((l|0)!=0)}while(0);if((r|0)<(j|0))r=r+1|0;else break}}l=c[m>>2]|0;if((c[k>>2]|0)>(l|0)){c[m>>2]=l+1;$=c[Aa+104>>2]|0;a[$+(l*20|0)>>0]=-98;$=$+(l*20|0)+1|0;aa=$+19|0;do{a[$>>0]=0;$=$+1|0}while(($|0)<(aa|0));break f}else{Di(Aa,158,0,0,0)|0;break f}}case 32:{if((Ba|0?(Vd(Ba,wa)|0)==0:0)?(H=wa,G=c[H>>2]|0,H=c[H+4>>2]|0,!((H|0)<0|(mb()|0)!=0)):0){za=59064;c[za>>2]=G;c[za+4>>2]=H;c[14768]=((G|0)!=0|(H|0)!=0)&((H|0)<0|(H|0)==0&G>>>0<=(c[14978]|0)>>>0)&1}m=(mb()|0)==0;o=59064;n=m?c[o>>2]|0:-1;o=m?c[o+4>>2]|0:-1;m=c[Aa>>2]|0;ka:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=1942;else za=1962;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1943;break ka}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1943;break ka}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=1942}while(0);if((za|0)==1942){p=_d(m,8,0)|0;za=1943}la:do if((za|0)==1943)if(p){m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break la}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break la}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=1962;while(0);do if((za|0)==1962){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0}else Di(Aa,81,1,1,0)|0;break f}case 37:{if(Ba|0?(f=(Vd(Ba,wa)|0)==0,za=wa,ya=c[za+4>>2]|0,f&((ya|0)>-1|(ya|0)==-1&(c[za>>2]|0)>>>0>4294967295)):0)c[Da+152>>2]=0;n=c[Da+152>>2]|0;o=((n|0)<0)<<31>>31;m=c[Aa>>2]|0;ma:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))za=1987;else za=2007;else{do if((e[m+276>>1]|0)>=8){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1988;break ma}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];p=m+284|0;c[p>>2]=(c[p>>2]|0)+1;p=l;za=1988;break ma}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;za=1987}while(0);if((za|0)==1987){p=_d(m,8,0)|0;za=1988}na:do if((za|0)==1988)if(p){m=p;k=m;a[k>>0]=n;a[k+1>>0]=n>>8;a[k+2>>0]=n>>16;a[k+3>>0]=n>>24;m=m+4|0;a[m>>0]=o;a[m+1>>0]=o>>8;a[m+2>>0]=o>>16;a[m+3>>0]=o>>24;m=Aa+108|0;k=c[m>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[m>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=p;a[o>>0]=-14;break}else{Ei(Aa,n+(k*20|0)|0,p,-14);break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,p);break na}k=p;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[p>>2]=c[ya>>2];c[ya>>2]=p;break na}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{ya=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else za=2007;while(0);do if((za|0)==2007){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;Aa=c[Aa+104>>2]|0;a[Aa+(k*20|0)>>0]=81;b[Aa+(k*20|0)+2>>1]=0;c[Aa+(k*20|0)+4>>2]=1;c[Aa+(k*20|0)+8>>2]=1;c[Aa+(k*20|0)+12>>2]=0;c[Aa+(k*20|0)+16>>2]=0;a[Aa+(k*20|0)+1>>0]=0}else Di(Aa,81,1,1,0)|0;za=2020;break b}default:{if(!Ba)k=c[Da+448>>2]|0;else{c[wa>>2]=0;ii(Ba,wa)|0;k=c[wa>>2]|0;l=Da+396|0;if((k|0)>0){c[l>>2]=91;c[Da+400>>2]=Da;c[t>>2]=0;a[Da+408>>0]=1}else{c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;a[l+12>>0]=0;k=0}c[Da+448>>2]=k}o=((k|0)<0)<<31>>31;n=c[Aa>>2]|0;oa:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))za=1897;else za=1917;else{do if((e[n+276>>1]|0)>=8){l=n+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];za=n+284|0;c[za>>2]=(c[za>>2]|0)+1;za=1898;break oa}l=n+296|0;m=c[l>>2]|0;if(!m){l=n+292|0;break}else{c[l>>2]=c[m>>2];za=n+284|0;c[za>>2]=(c[za>>2]|0)+1;za=1898;break oa}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;za=1897}while(0);if((za|0)==1897){m=_d(n,8,0)|0;za=1898}pa:do if((za|0)==1898)if(m){p=m;l=p;a[l>>0]=k;a[l+1>>0]=k>>8;a[l+2>>0]=k>>16;a[l+3>>0]=k>>24;p=p+4|0;a[p>>0]=o;a[p+1>>0]=o>>8;a[p+2>>0]=o>>16;a[p+3>>0]=o>>24;p=Aa+108|0;k=c[p>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[p>>2]=k+1;ya=c[Aa+104>>2]|0;a[ya+(k*20|0)>>0]=71;b[ya+(k*20|0)+2>>1]=0;c[ya+(k*20|0)+4>>2]=0;c[ya+(k*20|0)+8>>2]=1;c[ya+(k*20|0)+12>>2]=0;c[ya+(k*20|0)+16>>2]=0;a[ya+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;n=c[Aa>>2]|0;if(!(a[n+81>>0]|0)){if((k|0)<0)k=(c[p>>2]|0)+-1|0;n=c[Aa+104>>2]|0;o=n+(k*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(k*20|0)+16>>2]=m;a[o>>0]=-14;m=p;break}else{Ei(Aa,n+(k*20|0)|0,m,-14);m=p;break}}do if(n|0){if(c[n+480>>2]|0){Xd(n,m);m=p;break pa}k=m;if((c[n+304>>2]|0)>>>0>k>>>0)break;if((c[n+308>>2]|0)>>>0<=k>>>0)break;ya=n+300|0;c[m>>2]=c[ya>>2];c[ya>>2]=m;m=p;break pa}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);m=p;break}else{ya=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-ya;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);m=p;break}}else za=1917;while(0);do if((za|0)==1917){n=Aa+108|0;k=c[n>>2]|0;l=Aa+112|0;if((c[l>>2]|0)>(k|0)){c[n>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=71;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=0;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0}else k=Di(Aa,71,0,1,0)|0;if(a[(c[Aa>>2]|0)+81>>0]|0){m=n;break}if((k|0)<0)k=(c[n>>2]|0)+-1|0;m=c[Aa+104>>2]|0;if(!(a[m+(k*20|0)+1>>0]|0)){m=n;break}Ei(Aa,m+(k*20|0)|0,0,-14);m=n}while(0);k=c[m>>2]|0;if((c[l>>2]|0)>(k|0)){c[m>>2]=k+1;za=c[Aa+104>>2]|0;a[za+(k*20|0)>>0]=81;b[za+(k*20|0)+2>>1]=0;c[za+(k*20|0)+4>>2]=1;c[za+(k*20|0)+8>>2]=1;c[za+(k*20|0)+12>>2]=0;c[za+(k*20|0)+16>>2]=0;a[za+(k*20|0)+1>>0]=0;za=2020;break b}else{Di(Aa,81,1,1,0)|0;za=2020;break b}}}while(0)}while(0);if(!Da){za=2025;break b}else{za=2020;break b}}else k=1;while(0);za=f+36|0;c[za>>2]=(c[za>>2]|0)+1;c[f+12>>2]=k;za=2020}while(0);do if((za|0)==2020){if(c[Da+480>>2]|0){Xd(Da,Ca);break}Aa=Ca;if((c[Da+304>>2]|0)>>>0<=Aa>>>0?(c[Da+308>>2]|0)>>>0>Aa>>>0:0){Aa=Da+300|0;c[Ca>>2]=c[Aa>>2];c[Aa>>2]=Ca}else za=2025}while(0);do if((za|0)==2025)if(!(c[7324]|0)){ab[c[29344>>2]&127](Ca);break}else{Aa=Wa[c[29352>>2]&127](Ca)|0;c[14978]=(c[14978]|0)-Aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Ca);break}while(0);if(!Ba){Ra=Ea;return}if(Da|0){if(c[Da+480>>2]|0){Xd(Da,Ba);Ra=Ea;return}Ca=Ba;if((c[Da+304>>2]|0)>>>0<=Ca>>>0?(c[Da+308>>2]|0)>>>0>Ca>>>0:0){Da=Da+300|0;c[Ba>>2]=c[Da>>2];c[Da>>2]=Ba;Ra=Ea;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](Ba);Ra=Ea;return}else{Da=Wa[c[29352>>2]&127](Ba)|0;c[14978]=(c[14978]|0)-Da;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Ba);Ra=Ea;return}} -function Or(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Sa=0,Ta=0,Ua=0,Va=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,ob=0,qb=0,rb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0;Nb=Ra;Ra=Ra+256|0;Jb=Nb+232|0;Hb=Nb+224|0;Gb=Nb+216|0;Fb=Nb+208|0;Eb=Nb+200|0;Db=Nb+192|0;Cb=Nb+184|0;Ab=Nb+176|0;zb=Nb+168|0;yb=Nb+160|0;xb=Nb+152|0;vb=Nb+144|0;ub=Nb+136|0;tb=Nb+128|0;Ib=Nb+120|0;wb=Nb+112|0;l=Nb+104|0;Kb=Nb+56|0;lb=Nb+244|0;ob=Nb+8|0;qb=Nb;rb=Nb+240|0;if(mb()|0){Mb=7;Ra=Nb;return Mb|0}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](640)|0;if(!i){Mb=7;Ra=Nb;return Mb|0}else Lb=i}else{i=Wa[c[29356>>2]&127](640)|0;if((c[14985]|0)>>>0<640)c[14985]=640;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){Lb=c[14978]|0;jb=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;ib=L()|0;c[14768]=((ib|0)<0|(ib|0)==0&jb>>>0<=Lb>>>0)&1}j=Wa[c[29340>>2]&127](i)|0;if(!j){Mb=7;Ra=Nb;return Mb|0}i=Wa[c[29352>>2]&127](j)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0){c[14987]=i;Lb=j}else Lb=j}ib=Lb+568|0;jb=Lb+584|0;k=f+144|0;i=c[k>>2]|0;c[Kb>>2]=i;do if(!i){i=c[f+20>>2]|0;c[l>>2]=c[f+16>>2];c[l+4>>2]=i;i=Bb(52411,l)|0;if(!i){j=7;i=0;break}j=qd(c[f+12>>2]|0,i,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](i);else{hb=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-hb;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i)}i=c[Kb>>2]|0;c[k>>2]=i;if(!j){m=i;M=21}else i=0}else{m=i;M=21}while(0);do if((M|0)==21){o=m;do if(!(Vc(o,1)|0)){i=c[o+100>>2]|0;j=i+8|0;if(!(b[j>>1]&9216)){hb=i;c[hb>>2]=1;c[hb+4>>2]=0;b[j>>1]=4;break}else{Pg(i,1,0);break}}while(0);do if((Gc(o)|0)==100){if(!m)j=mc(29576)|0;else{i=c[o+120>>2]|0;if((i|0)!=0?(b[o+144>>1]|0)!=0:0)j=o;else{i=c[o>>2]|0;c[i+64>>2]=25;Ne(i,25);i=29576;j=o}l=mc(i)|0;i=c[j>>2]|0;k=o+40|0;j=c[k>>2]|0;if((j|0)==3082|(a[i+81>>0]|0)!=0){og(i);i=7}else i=c[i+68>>2]&j;c[k>>2]=i;j=l}n=Lc(o,0)|0;if(j){if((n|0)>0){if(mb()|0){l=7;i=0;n=0;p=0;break}i=sb(0,n,0)|0;if(!i){l=7;i=0;n=0;p=0;break}else k=n}else{i=0;k=0}ew(i|0,j|0,n|0)|0;l=0;p=k}else{l=0;i=0;n=0;p=0}}else{l=0;i=0;n=0;p=0}while(0);do if(m){j=c[o>>2]|0;hb=o+136|0;gb=c[hb+4>>2]|0;if((gb|0)>0|(gb|0)==0&(c[hb>>2]|0)>>>0>0)hc(j,o);k=kc(o)|0;c[o+20>>2]=770837923;c[o+36>>2]=-1;c[o+40>>2]=0;a[o+146>>0]=2;c[o+44>>2]=0;c[o+32>>2]=1;a[o+147>>0]=-1;c[o+48>>2]=0;hb=o+64|0;c[hb>>2]=0;c[hb+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&k;break}}else j=0;while(0);j=(l|0)==0?j:l;if((j|0)==0&(g|0)>0){eb=f+252|0;fb=f+168|0;gb=f+16|0;hb=f+20|0;Q=(h|0)>2?h:2;R=f+12|0;S=Lb+580|0;T=f+88|0;U=Lb+588|0;V=f+116|0;W=Lb+600|0;X=f+104|0;Y=Lb+596|0;Z=Lb+572|0;_=Lb+624|0;$=Lb+628|0;aa=f+184|0;ba=Lb+40|0;ca=f+172|0;da=Lb+632|0;ea=Lb+636|0;fa=Lb+64|0;ga=Lb+68|0;ha=Lb+76|0;ia=Lb+80|0;ja=f+228|0;ka=Lb+56|0;la=Lb+4|0;ma=Lb+84|0;na=Lb+48|0;oa=Lb+116|0;pa=Lb+108|0;qa=Lb+8|0;ra=Lb+16|0;sa=Lb+24|0;ta=Lb+32|0;ua=f+96|0;va=Lb+112|0;wa=Lb+88|0;xa=Lb+120|0;ya=Lb+152|0;za=Lb+184|0;Aa=Lb+216|0;Ba=Lb+248|0;Ca=Lb+280|0;Da=Lb+312|0;Ea=Lb+344|0;Fa=Lb+376|0;Ga=Lb+408|0;Ha=Lb+440|0;Ia=Lb+472|0;Ja=Lb+504|0;Ka=Lb+536|0;La=f+192|0;Ma=f+176|0;Na=f+124|0;Oa=ob+4|0;Pa=f+188|0;Qa=lb+4|0;Sa=f+196|0;Ta=ob+8|0;Ua=ob+4|0;Va=f+236|0;Xa=ob+16|0;Ya=ob+24|0;Za=ob+28|0;_a=Kb+8|0;$a=Kb+4|0;bb=Kb+16|0;cb=Kb+28|0;P=Kb+24|0;db=f+180|0;K=g;k=0;o=0;h=0;while(1){u=c[eb>>2]<<10;v=((u|0)<0)<<31>>31;O=c[fb>>2]|0;c[Kb>>2]=O;j=O;if((O|0)==0?(kb=c[hb>>2]|0,c[wb>>2]=c[gb>>2],c[wb+4>>2]=kb,kb=Bb(52607,wb)|0,(kb|0)!=0):0){qd(c[R>>2]|0,kb,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](kb);else{O=Wa[c[29352>>2]&127](kb)|0;c[14978]=(c[14978]|0)-O;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](kb)}j=c[Kb>>2]|0;c[fb>>2]=j}g=j;do if(!(Vc(g,1)|0)){l=c[g+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){O=l;c[O>>2]=Q;c[O+4>>2]=0;b[m>>1]=4;break}else{Pg(l,Q,0);break}}while(0);if((Gc(g)|0)==100){o=Oc(g,0)|0;h=L()|0;t=Nc(g,1)|0}else t=-1;do if(j){j=c[g>>2]|0;O=g+136|0;N=c[O+4>>2]|0;if((N|0)>0|(N|0)==0&(c[O>>2]|0)>>>0>0)hc(j,g);l=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;O=g+64|0;c[O>>2]=0;c[O+4>>2]=0;if(!((l|0)==3082|(a[j+81>>0]|0)!=0)){j=c[j+68>>2]&l;if(!j){M=67;break}else{M=94;break}}else{og(j);j=7;M=94;break}}else M=67;while(0);if((M|0)==67){M=0;if(n){j=n+-2|0;a:do if((n|0)>2)while(1){l=j+-1|0;if((a[i+l>>0]|0)>=0)break a;if((j|0)>1)j=l;else{j=l;break}}while(0);b:do if((j|0)>0)while(1){l=j+-1|0;if((a[i+l>>0]|0)>=0){l=j;break b}if((j|0)>1)j=l;else break}else l=j;while(0);r=i+l|0;m=a[r>>0]|0;j=m&255;do if(!(j&128)){g=1;s=m&255;q=0}else{O=d[r+1>>0]|0;j=O<<7|j&127;if(!(O&128)){g=2;s=j;q=0;break}O=d[r+2>>0]|0;j=O<<14|j&16383;if(!(O&128)){g=3;s=j;q=0;break}O=d[r+3>>0]|0;j=O<<21|j&2097151;if(!(O&128)){g=4;s=j;q=0;break}m=28;g=r+4|0;j=j&268435455;q=0;do{O=g;g=g+1|0;O=d[O>>0]|0;N=cw(O&127|0,0,m|0)|0;j=Sv(N|0,L()|0,j|0,q|0)|0;q=L()|0;m=m+7|0}while(m>>>0<64&((O&128|0)!=0|0!=0));g=g-r|0;s=j}while(0);r=g+l|0;g=i+r|0;j=a[g>>0]|0;m=j&255;do if(!(m&128))j=1;else{O=d[g+1>>0]|0;j=O<<7|j&127;if(!(O&128)){m=j;j=2;break}O=d[g+2>>0]|0;j=O<<14|j&16383;if(!(O&128)){m=j;j=3;break}O=d[g+3>>0]|0;j=O<<21|j&2097151;if(!(O&128)){m=j;j=4;break}m=(a[g+4>>0]&7)<<28|j&268435455;j=5}while(0);j=(j+r|0)==(n|0)?0:267;if((t|0)<0){E=1;J=m;k=1;n=l;O=s;N=q}else{E=Zv(o|0,h|0,u|0,v|0)|0;O=L()|0;N=Zv(s|0,q|0,u|0,v|0)|0;J=L()|0;N=(O|0)<(J|0)|(O|0)==(J|0)&E>>>0>>0;E=(N^1)&1;J=N?t:m;k=N?k:1;n=N?n:l;O=N?o:s;N=N?h:q}}else{j=0;n=0;M=94}}if((M|0)==94){M=0;if((t|0)<0)break;else{E=0;J=t;O=o;N=h}}gw(Lb|0,0,640)|0;c[S>>2]=1;c:do if(!j){j=c[T>>2]|0;c[Kb>>2]=j;do if(!j){j=c[hb>>2]|0;c[Ib>>2]=c[gb>>2];c[Ib+4>>2]=j;j=Bb(51533,Ib)|0;if(!j){s=0;M=116;break}l=qd(c[R>>2]|0,j,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{M=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}j=c[Kb>>2]|0;c[T>>2]=j;if(!l)M=104;else{s=0;M=116}}else M=104;while(0);if((M|0)==104){M=0;g=j;l=Sv(O|0,N|0,1,0)|0;m=L()|0;do if(!(Vc(g,1)|0)){o=c[g+100>>2]|0;h=o+8|0;if(!(b[h>>1]&9216)){I=o;c[I>>2]=l;c[I+4>>2]=m;b[h>>1]=4;break}else{Pg(o,l,m);break}}while(0);Gc(g)|0;m=Nc(g,0)|0;do if(j){j=c[g>>2]|0;I=g+136|0;H=c[I+4>>2]|0;if((H|0)>0|(H|0)==0&(c[I>>2]|0)>>>0>0)hc(j,g);l=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;I=g+64|0;c[I>>2]=0;c[I+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&l;break}}else j=0;while(0);if(m)if((E|0)!=0&(m|0)==1){s=1;M=116}else D=m;else{s=0;M=116}}do if((M|0)==116){M=0;g=Sv(O|0,N|0,1,0)|0;q=L()|0;j=c[V>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[tb>>2]=c[gb>>2];c[tb+4>>2]=l;l=Bb(52072,tb)|0;if(!l){m=K;j=7;l=p;M=801;break c}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[V>>2]=l;if(!j)j=l;else{m=K;l=p;M=801;break c}}r=j;l=Sv(O|0,N|0,2,0)|0;m=L()|0;do if(!(Vc(r,1)|0)){o=c[r+100>>2]|0;h=o+8|0;if(!(b[h>>1]&9216)){I=o;c[I>>2]=l;c[I+4>>2]=m;b[h>>1]=4;break}else{Pg(o,l,m);break}}while(0);l=Wv(g|0,q|0,1024,0)|0;l=cw(l|0,L()|0,10)|0;l=Sv(l|0,L()|0,1024,0)|0;m=L()|0;do if(!(Vc(r,2)|0)){h=c[r+100>>2]|0;o=h+40|0;h=h+48|0;if(!(b[h>>1]&9216)){I=o;c[I>>2]=l;c[I+4>>2]=m;b[h>>1]=4;break}else{Pg(o,l,m);break}}while(0);if((Gc(r)|0)==100){if(!j)l=1;else{l=c[r+120>>2]|0;do if(!l)M=137;else{if(!(b[r+144>>1]|0)){M=137;break}m=r}while(0);if((M|0)==137){M=0;l=c[r>>2]|0;c[l+64>>2]=25;Ne(l,25);l=29576;m=r}l=b[l+8>>1]&31;m=c[m>>2]|0;h=r+40|0;o=c[h>>2]|0;if((o|0)==3082|(a[m+81>>0]|0)!=0){og(m);m=7}else m=c[m+68>>2]&o;c[h>>2]=m}m=-1431655766>>>l&1}else m=0;do if(j){j=c[r>>2]|0;I=r+136|0;H=c[I+4>>2]|0;if((H|0)>0|(H|0)==0&(c[I>>2]|0)>>>0>0)hc(j,r);l=kc(r)|0;c[r+20>>2]=770837923;c[r+36>>2]=-1;c[r+40>>2]=0;a[r+146>>0]=2;c[r+44>>2]=0;c[r+32>>2]=1;a[r+147>>0]=-1;c[r+48>>2]=0;I=r+64|0;c[I>>2]=0;c[I+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&l;break}}else j=0;while(0);if(!m){D=s;break}c[S>>2]=c[S>>2]|2;D=s}while(0);if(!j){A=jb;B=A+56|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));j=J<<2;l=pb(j,0)|0;c[jb>>2]=l;if(!l){m=K;j=7;l=p;M=801}else{gw(l|0,0,j|0)|0;j=c[X>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[ub>>2]=c[gb>>2];c[ub+4>>2]=l;l=Bb(51773,ub)|0;if(!l){m=K;j=7;l=p;M=801;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[X>>2]=l;if(!j)j=l;else{m=K;l=p;M=801;break}}C=j;do if(!(Vc(C,1)|0)){l=c[C+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){I=l;c[I>>2]=O;c[I+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);y=(j|0)==0;w=C+120|0;z=C+40|0;x=C+144|0;j=(J|0)>0&(Gc(C)|0)==100;d:do if(y){if(!j){j=0;M=206;break}r=0;while(1){l=Oc(C,1)|0;m=L()|0;o=Oc(C,2)|0;h=L()|0;g=Oc(C,3)|0;q=L()|0;s=mc(29576)|0;t=Lc(C,4)|0;u=(c[jb>>2]|0)+(r<<2)|0;if((l|0)==0&(m|0)==0){if(!((o|0)==0&(h|0)==0)){j=267;break}j=t+20|0}else j=0;v=nb(j+96|0)|0;if(!v){j=7;break}A=v;B=A+96|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));c[v>>2]=r;a[v+4>>0]=0;M=v+8|0;c[M>>2]=l;c[M+4>>2]=m;M=v+16|0;c[M>>2]=o;c[M+4>>2]=h;M=v+24|0;c[M>>2]=g;c[M+4>>2]=q;if(!j){H=Sv(l|0,m|0,-1,-1)|0;I=L()|0;M=v+32|0;c[M>>2]=H;c[M+4>>2]=I}else{j=v+96|0;c[v+40>>2]=j;a[v+5>>0]=1;c[v+44>>2]=t;if(t|0)ew(j|0,s|0,t|0)|0;A=j+t|0;B=A+20|0;do{a[A>>0]=0;A=A+1|0}while((A|0)<(B|0))}c[u>>2]=v;c[U>>2]=(c[U>>2]|0)+1;r=r+1|0;if(!((r|0)<(J|0)&(Gc(C)|0)==100)){j=0;l=1;M=199;break d}}c[U>>2]=(c[U>>2]|0)+1;l=0;M=199}else{if(!j){j=0;l=1;M=200;break}v=0;while(1){g=Oc(C,1)|0;q=L()|0;r=Oc(C,2)|0;s=L()|0;t=Oc(C,3)|0;u=L()|0;j=c[w>>2]|0;do if(!j)M=184;else{if((e[x>>1]|0)<=4){M=184;break}j=j+160|0}while(0);if((M|0)==184){M=0;j=c[C>>2]|0;c[j+64>>2]=25;Ne(j,25);j=29576}h=mc(j)|0;j=c[C>>2]|0;l=c[z>>2]|0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7}else j=c[j+68>>2]&l;c[z>>2]=j;l=Lc(C,4)|0;m=(c[jb>>2]|0)+(v<<2)|0;if((g|0)==0&(q|0)==0){if(!((r|0)==0&(s|0)==0)){j=267;break}j=l+20|0}else j=0;o=nb(j+96|0)|0;if(!o){j=7;break}A=o;B=A+96|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));c[o>>2]=v;a[o+4>>0]=0;I=o+8|0;c[I>>2]=g;c[I+4>>2]=q;I=o+16|0;c[I>>2]=r;c[I+4>>2]=s;I=o+24|0;c[I>>2]=t;c[I+4>>2]=u;if(!j){F=Sv(g|0,q|0,-1,-1)|0;H=L()|0;I=o+32|0;c[I>>2]=F;c[I+4>>2]=H}else{j=o+96|0;c[o+40>>2]=j;a[o+5>>0]=1;c[o+44>>2]=l;if(l|0)ew(j|0,h|0,l|0)|0;A=j+l|0;B=A+20|0;do{a[A>>0]=0;A=A+1|0}while((A|0)<(B|0))}c[m>>2]=o;c[U>>2]=(c[U>>2]|0)+1;v=v+1|0;if(!((v|0)<(J|0)&(Gc(C)|0)==100)){j=0;l=1;M=199;break d}}c[U>>2]=(c[U>>2]|0)+1;l=0;M=199}while(0);do if((M|0)==199){M=0;if(!y){M=200;break}if(l){j=0;M=206}}while(0);do if((M|0)==200){M=0;m=c[C>>2]|0;I=C+136|0;H=c[I+4>>2]|0;if((H|0)>0|(H|0)==0&(c[I>>2]|0)>>>0>0)hc(m,C);o=kc(C)|0;c[C+20>>2]=770837923;c[C+36>>2]=-1;c[z>>2]=0;a[C+146>>0]=2;c[C+44>>2]=0;c[C+32>>2]=1;a[C+147>>0]=-1;c[C+48>>2]=0;I=C+64|0;c[I>>2]=0;c[I+4>>2]=0;if((o|0)==3082|(a[m+81>>0]|0)!=0){og(m);if(l){j=7;M=206;break}else break}else if(l){j=c[m+68>>2]&o;M=206;break}else break}while(0);if((M|0)==206)M=0;if(j|0){m=K;l=p;M=801;break}m=c[U>>2]|0;if((m|0)!=(J|0)){q=K;j=0;break}c[Y>>2]=ib;j=eq(f,jb,c[ib>>2]|0,c[Z>>2]|0)|0;if(j|0){m=K;l=p;M=801;break}j=gq(f,jb)|0;if((j|0)!=100){m=K;l=p;M=801;break}e:do if((E|0)!=0&(D|0)>0){x=c[_>>2]|0;y=c[$>>2]|0;z=D+-1|0;j=c[aa>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[vb>>2]=c[gb>>2];c[vb+4>>2]=l;l=Bb(52942,vb)|0;if(!l){m=K;g=J;j=7;l=p;M=750;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[aa>>2]=l;if(!j)j=l;else{m=K;g=J;l=p;M=750;break}}D=j;l=Sv(O|0,N|0,1,0)|0;m=L()|0;do if(!(Vc(D,1)|0)){o=c[D+100>>2]|0;h=o+8|0;if(!(b[h>>1]&9216)){I=o;c[I>>2]=l;c[I+4>>2]=m;b[h>>1]=4;break}else{Pg(o,l,m);break}}while(0);l=((z|0)<0)<<31>>31;do if(!(Vc(D,2)|0)){o=c[D+100>>2]|0;m=o+40|0;o=o+48|0;if(!(b[o>>1]&9216)){I=m;c[I>>2]=z;c[I+4>>2]=l;b[o>>1]=4;break}else{Pg(m,z,l);break}}while(0);do if((Gc(D)|0)!=100){if(!j){M=421;break e}j=c[D>>2]|0;M=D+136|0;I=c[M+4>>2]|0;if((I|0)>0|(I|0)==0&(c[M>>2]|0)>>>0>0)hc(j,D);l=kc(D)|0;c[D+20>>2]=770837923;c[D+36>>2]=-1;c[D+40>>2]=0;a[D+146>>0]=2;c[D+44>>2]=0;c[D+32>>2]=1;a[D+147>>0]=-1;c[D+48>>2]=0;M=D+64|0;c[M>>2]=0;c[M+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);m=K;g=J;j=7;l=p;M=750;break e}else{j=c[j+68>>2]&l;break}}else{v=Oc(D,1)|0;w=L()|0;t=Oc(D,2)|0;u=L()|0;C=(j|0)==0;f:do if(C)j=29576;else{j=c[D+120>>2]|0;do if(j|0){if((e[D+144>>1]|0)<=3)break;j=j+120|0;break f}while(0);j=c[D>>2]|0;c[j+64>>2]=25;Ne(j,25);j=29576}while(0);l=b[j+8>>1]|0;do if((l&514)==514){if((a[j+10>>0]|0)!=1){M=237;break}s=c[j+16>>2]|0}else M=237;while(0);do if((M|0)==237){M=0;if(l&1){s=0;break}s=Gg(j,1)|0}while(0);if(!C){j=c[D>>2]|0;m=D+40|0;l=c[m>>2]|0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7}else j=c[j+68>>2]&l;c[m>>2]=j}if(!s){h=ba;j=c[h+4>>2]|0;h=c[h>>2]|0;o=0;r=0}else{l=a[s>>0]|0;if((l+-48&255)<10){j=0;o=0;m=0;do{m=Yv(o|0,m|0,10,0)|0;o=(l&255)+-48|0;o=Sv(m|0,L()|0,o|0,((o|0)<0)<<31>>31|0)|0;m=L()|0;j=j+1|0;l=a[s+j>>0]|0}while((l+-48&255)<10)}else{j=0;o=0;m=0}g:while(1){l=a[s+j>>0]|0;switch(l<<24>>24){case 45:{M=251;break g}case 32:break;default:{q=1;r=0;break g}}j=j+1|0}if((M|0)==251){M=0;l=j+1|0;j=l;l=a[s+l>>0]|0;q=-1;r=-1}if((l+-48&255)<10){h=0;g=0;do{g=Yv(h|0,g|0,10,0)|0;h=(l&255)+-48|0;h=Sv(g|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;g=L()|0;j=j+1|0;l=a[s+j>>0]|0}while((l+-48&255)<10);l=h;j=g}else{l=0;j=0}h=Yv(l|0,j|0,q|0,r|0)|0;j=L()|0;r=ba;c[r>>2]=h;c[r+4>>2]=j;r=m}l=Tv(0,0,h|0,j|0)|0;m=L()|0;if((j|0)<0){j=ba;c[j>>2]=l;c[j+4>>2]=m;j=m}else l=h;a[na>>0]=(l|0)==0&(j|0)==0&1;s=Lc(D,4)|0;if(C)q=mc(29576)|0;else{j=c[D+120>>2]|0;do if(!j)M=263;else{if((e[D+144>>1]|0)<=4){M=263;break}j=j+160|0;l=D}while(0);if((M|0)==263){M=0;j=c[D>>2]|0;c[j+64>>2]=25;Ne(j,25);j=29576;l=D}h=mc(j)|0;j=c[l>>2]|0;m=D+40|0;l=c[m>>2]|0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7}else j=c[j+68>>2]&l;c[m>>2]=j;q=h}j=c[La>>2]|0;c[Kb>>2]=j;do if(!j){j=c[hb>>2]|0;c[xb>>2]=c[gb>>2];c[xb+4>>2]=j;j=Bb(53128,xb)|0;if(!j){m=7;break}m=qd(c[R>>2]|0,j,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{I=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}j=c[Kb>>2]|0;c[La>>2]=j;if(!m){m=j;M=277}}else{m=j;M=277}while(0);h:do if((M|0)==277){M=0;g=m;do if(!(Vc(g,1)|0)){j=c[g+100>>2]|0;l=j+8|0;if(!(b[l>>1]&9216)){I=j;c[I>>2]=o;c[I+4>>2]=r;b[l>>1]=4;break}else{Pg(j,o,r);break}}while(0);h=(Gc(g)|0)==100;j=h&1;do if(m){l=c[g>>2]|0;I=g+136|0;H=c[I+4>>2]|0;if((H|0)>0|(H|0)==0&(c[I>>2]|0)>>>0>0)hc(l,g);m=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;I=g+64|0;c[I>>2]=0;c[I+4>>2]=0;if((m|0)==3082|(a[l+81>>0]|0)!=0){og(l);m=7;break h}else{m=c[l+68>>2]&m;break}}else m=0;while(0);if(h&(m|0)==0){c[Kb>>2]=0;c[lb>>2]=0;m=dq(f,t,u,Kb,lb)|0;if(!m){m=c[Kb>>2]|0;j=c[lb>>2]|0;A=Ta;B=A+40|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));c[ob>>2]=m;c[Ua>>2]=j;do if(!(a[m>>0]|0))j=1;else{g=m+1|0;j=a[g>>0]|0;l=j&255;if(!(l&128)){I=Xa;c[I>>2]=j&255;c[I+4>>2]=0;j=2;break}I=d[m+2>>0]|0;j=I<<7|l&127;if(!(I&128)){I=Xa;c[I>>2]=j;c[I+4>>2]=0;j=3;break}I=d[m+3>>0]|0;j=I<<14|j&16383;if(!(I&128)){I=Xa;c[I>>2]=j;c[I+4>>2]=0;j=4;break}I=d[m+4>>0]|0;j=I<<21|j&2097151;if(!(I&128)){I=Xa;c[I>>2]=j;c[I+4>>2]=0;j=5;break}h=28;m=m+5|0;j=j&268435455;l=0;do{I=m;m=m+1|0;I=d[I>>0]|0;H=cw(I&127|0,0,h|0)|0;j=Sv(H|0,L()|0,j|0,l|0)|0;l=L()|0;h=h+7|0}while(h>>>0<64&((I&128|0)!=0|0!=0));I=Xa;c[I>>2]=j;c[I+4>>2]=l;j=1-g+m|0}while(0);c[Ta>>2]=j;m=Pr(ob)|0;if((m|0)==0&(c[ob>>2]|0)!=0)do m=Pr(ob)|0;while((m|0)==0&(c[ob>>2]|0)!=0);l=c[Ya>>2]|0;I=c[Za>>2]|0;j=Lu(x,l,(y|0)<(I|0)?y:I)|0;j=(((j|0)==0?y-I|0:j)|0)>0&1;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0)}else j=1;l=c[Kb>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0)}if(!((m|0)==0&(j|0)!=0))break;h=a[q>>0]|0;g=h<<24>>24;l=Tv(o|0,r|0,v|0,w|0)|0;L()|0;l=(l+1|0)/16|0;c[Lb>>2]=l;I=sa;c[I>>2]=v;c[I+4>>2]=w;I=ta;c[I>>2]=o;c[I+4>>2]=r;I=qa;c[I>>2]=O;c[I+4>>2]=N;c[ra>>2]=z;if(h<<24>>24<15){j=g;do{I=j;j=j+1|0;E=G(j,l)|0;E=Sv(v|0,w|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Lb+56+(j<<5)|0;c[H>>2]=E;c[H+4>>2]=F}while((I|0)<14)}o=G(l,g)|0;o=Sv(v|0,w|0,o|0,((o|0)<0)<<31>>31|0)|0;m=L()|0;l=Lb+56+(g<<5)|0;c[l>>2]=o;c[l+4>>2]=m;l=c[ja>>2]|0;l=(s|0)>(l|0)?s:l;m=Lb+56+(g<<5)+28|0;o=Lb+56+(g<<5)+20|0;j=c[o>>2]|0;if((c[m>>2]|0)<(l|0)){if(mb()|0){m=7;break}j=sb(j,(l|0)>0?l:0,0)|0;if(!j){m=7;break}c[m>>2]=l;c[o>>2]=j}ew(j|0,q|0,s|0)|0;c[Lb+56+(g<<5)+24>>2]=s;if(h<<24>>24<=-1){m=0;break}q=g;j=s;while(1){m=c[Lb+56+(q<<5)+20>>2]|0;A=_a;B=A+40|0;do{c[A>>2]=0;A=A+4|0}while((A|0)<(B|0));c[Kb>>2]=m;c[$a>>2]=j;if(!(a[m>>0]|0))j=1;else{h=m+1|0;j=a[h>>0]|0;l=j&255;do if(!(l&128)){I=bb;c[I>>2]=j&255;c[I+4>>2]=0;j=1}else{I=d[m+2>>0]|0;j=I<<7|l&127;if(!(I&128)){I=bb;c[I>>2]=j;c[I+4>>2]=0;j=2;break}I=d[m+3>>0]|0;j=I<<14|j&16383;if(!(I&128)){I=bb;c[I>>2]=j;c[I+4>>2]=0;j=3;break}I=d[m+4>>0]|0;j=I<<21|j&2097151;if(!(I&128)){I=bb;c[I>>2]=j;c[I+4>>2]=0;j=4;break}o=28;m=m+5|0;j=j&268435455;l=0;do{I=m;m=m+1|0;I=d[I>>0]|0;H=cw(I&127|0,0,o|0)|0;j=Sv(H|0,L()|0,j|0,l|0)|0;l=L()|0;o=o+7|0}while(o>>>0<64&((I&128|0)!=0|0!=0));I=bb;c[I>>2]=j;c[I+4>>2]=l;j=m-h|0}while(0);j=j+1|0}c[_a>>2]=j;j=Pr(Kb)|0;l=(j|0)==0;if(l&(c[Kb>>2]|0)!=0)do{j=Pr(Kb)|0;l=(j|0)==0}while(l&(c[Kb>>2]|0)!=0);o=c[cb>>2]|0;do if(l){l=Lb+56+(q<<5)+16|0;m=Lb+56+(q<<5)+8|0;if((c[l>>2]|0)<(o|0)){j=c[m>>2]|0;if(mb()|0){j=7;M=364;break}j=sb(j,(o|0)>0?o:0,0)|0;if(!j){j=7;M=364;break}c[l>>2]=o;c[m>>2]=j}else j=c[m>>2]|0;l=c[P>>2]|0;ew(j|0,l|0,o|0)|0;c[Lb+56+(q<<5)+12>>2]=o;if((q|0)<=0){j=0;break}c[lb>>2]=0;c[ob>>2]=0;h=q+-1|0;j=bb;g=c[j>>2]|0;j=c[j+4>>2]|0;o=Lb+56+(h<<5)|0;c[o>>2]=g;c[o+4>>2]=j;j=dq(f,g,j,lb,ob)|0;g=c[ob>>2]|0;o=c[ja>>2]|0;o=(g|0)>(o|0)?g:o;do if(!j){l=Lb+56+(h<<5)+28|0;m=Lb+56+(h<<5)+20|0;j=c[m>>2]|0;if((c[l>>2]|0)<(o|0)){if(mb()|0){j=7;break}j=sb(j,(o|0)>0?o:0,0)|0;if(!j){j=7;break}c[l>>2]=o;c[m>>2]=j}ew(j|0,c[lb>>2]|0,g|0)|0;c[Lb+56+(h<<5)+24>>2]=g;j=0}while(0);l=c[lb>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);M=364}else M=364;while(0);if((M|0)==364){M=0;l=c[P>>2]|0}do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{I=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=q+-1|0;if(!((q|0)>0&(j|0)==0)){m=j;break h}q=l;j=c[Lb+56+(l<<5)+24>>2]|0}}while(0);do if(!C){j=c[D>>2]|0;M=D+136|0;I=c[M+4>>2]|0;if((I|0)>0|(I|0)==0&(c[M>>2]|0)>>>0>0)hc(j,D);l=kc(D)|0;c[D+20>>2]=770837923;c[D+36>>2]=-1;c[D+40>>2]=0;a[D+146>>0]=2;c[D+44>>2]=0;c[D+32>>2]=1;a[D+147>>0]=-1;c[D+48>>2]=0;M=D+64|0;c[M>>2]=0;c[M+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&l;break}}else j=0;while(0);j=(m|0)==0?j:m}while(0);if(!j)M=421;else{m=K;g=J;l=p;M=750}}else{j=c[ca>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[yb>>2]=c[gb>>2];c[yb+4>>2]=l;l=Bb(52726,yb)|0;if(!l){m=K;g=J;j=7;l=p;M=750;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[ca>>2]=l;if(!j)j=l;else{m=K;g=J;l=p;M=750;break}}g=j;do if(!(Vc(g,1)|0)){l=c[g+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){M=l;c[M>>2]=O;c[M+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);l=c[U>>2]|0;m=((l|0)<0)<<31>>31;do if(!(Vc(g,2)|0)){h=c[g+100>>2]|0;o=h+40|0;h=h+48|0;if(!(b[h>>1]&9216)){M=o;c[M>>2]=l;c[M+4>>2]=m;b[h>>1]=4;break}else{Pg(o,l,m);break}}while(0);if((Gc(g)|0)==100)o=Nc(g,0)|0;else o=0;do if(j|0){j=c[g>>2]|0;M=g+136|0;I=c[M+4>>2]|0;if((I|0)>0|(I|0)==0&(c[M>>2]|0)>>>0>0)hc(j,g);l=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;M=g+64|0;c[M>>2]=0;c[M+4>>2]=0;if(!((l|0)==3082|(a[j+81>>0]|0)!=0)){j=c[j+68>>2]&l;if(!j)break;else{m=K;g=J;l=p;M=750;break e}}else{og(j);m=K;g=J;j=7;l=p;M=750;break e}}while(0);j=c[ua>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[zb>>2]=c[gb>>2];c[zb+4>>2]=l;l=Bb(51657,zb)|0;if(!l){m=K;g=J;j=7;l=p;M=750;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[ua>>2]=l;if(!j)j=l;else{m=K;g=J;l=p;M=750;break}}m=j;if((Gc(m)|0)==100){F=o<<4;F=Sv(F|0,((F|0)<0)<<31>>31|0,-1,-1)|0;M=L()|0;I=Oc(m,0)|0;H=L()|0;E=sa;c[E>>2]=I;c[E+4>>2]=H;H=Sv(F|0,M|0,I|0,H|0)|0;I=L()|0;M=ta;c[M>>2]=H;c[M+4>>2]=I}do if(j|0){j=c[m>>2]|0;M=m+136|0;I=c[M+4>>2]|0;if((I|0)>0|(I|0)==0&(c[M>>2]|0)>>>0>0)hc(j,m);l=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;M=m+64|0;c[M>>2]=0;c[M+4>>2]=0;if(!((l|0)==3082|(a[j+81>>0]|0)!=0)){j=c[j+68>>2]&l;if(!j)break;else{m=K;g=J;l=p;M=750;break e}}else{og(j);m=K;g=J;j=7;l=p;M=750;break e}}while(0);j=ta;j=Hr(f,c[j>>2]|0,c[j+4>>2]|0,0,0)|0;if(j|0){m=K;g=J;l=p;M=750;break}I=qa;c[I>>2]=O;c[I+4>>2]=N;c[Lb>>2]=o;c[ra>>2]=D;I=sa;M=c[I>>2]|0;I=c[I+4>>2]|0;H=ka;c[H>>2]=M;c[H+4>>2]=I;H=Sv(M|0,I|0,o|0,((o|0)<0)<<31>>31|0)|0;F=L()|0;E=wa;c[E>>2]=H;c[E+4>>2]=F;E=o<<1;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=xa;c[H>>2]=E;c[H+4>>2]=F;H=o*3|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=ya;c[E>>2]=H;c[E+4>>2]=F;E=o<<2;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=za;c[H>>2]=E;c[H+4>>2]=F;H=o*5|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=Aa;c[E>>2]=H;c[E+4>>2]=F;E=o*6|0;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Ba;c[H>>2]=E;c[H+4>>2]=F;H=o*7|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=Ca;c[E>>2]=H;c[E+4>>2]=F;E=o<<3;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Da;c[H>>2]=E;c[H+4>>2]=F;H=o*9|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=Ea;c[E>>2]=H;c[E+4>>2]=F;E=o*10|0;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Fa;c[H>>2]=E;c[H+4>>2]=F;H=o*11|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=Ga;c[E>>2]=H;c[E+4>>2]=F;E=o*12|0;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Ha;c[H>>2]=E;c[H+4>>2]=F;H=o*13|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;F=L()|0;E=Ia;c[E>>2]=H;c[E+4>>2]=F;E=o*14|0;E=Sv(M|0,I|0,E|0,((E|0)<0)<<31>>31|0)|0;F=L()|0;H=Ja;c[H>>2]=E;c[H+4>>2]=F;H=o*15|0;H=Sv(M|0,I|0,H|0,((H|0)<0)<<31>>31|0)|0;I=L()|0;M=Ka;c[M>>2]=H;c[M+4>>2]=I;M=421}while(0);i:do if((M|0)==421){M=0;if(!(c[Lb>>2]|0)){m=K;g=J;j=0;l=p;M=750;break}j:while(1){E=c[_>>2]|0;F=c[$>>2]|0;H=c[da>>2]|0;I=c[ea>>2]|0;l=c[fa>>2]|0;m=c[ga>>2]|0;k:do if((m|0)>0){j=0;while(1){if((a[l+j>>0]|0)!=(a[E+j>>0]|0)){A=j;break k}j=j+1|0;if((j|0)>=(m|0)){A=j;break}}}else A=0;while(0);g=0;j=A;l=((A|0)<0)<<31>>31;do{g=g+1|0;j=bw(j|0,l|0,7)|0;l=L()|0}while(!((j|0)==0&(l|0)==0));h=F-A|0;o=0;j=h;l=((h|0)<0)<<31>>31;do{o=o+1|0;j=bw(j|0,l|0,7)|0;l=L()|0}while(!((j|0)==0&(l|0)==0));D=((I|0)<0)<<31>>31;j=0;l=I;m=D;do{j=j+1|0;l=bw(l|0,m|0,7)|0;m=L()|0}while(!((l|0)==0&(m|0)==0));l=h+I+g+o+j|0;j=c[ia>>2]|0;do if((j|0)>0){if((j+l|0)<=(c[ja>>2]|0)){M=480;break}C=ka;j=Hr(f,c[C>>2]|0,c[C+4>>2]|0,c[ha>>2]|0,j)|0;c[la>>2]=(c[la>>2]|0)+1;l:do if(!j){C=A+1|0;m=ka;v=1;l=c[m>>2]|0;m=c[m+4>>2]|0;while(1){z=Lb+56+(v<<5)+8|0;o=c[z>>2]|0;B=Lb+56+(v<<5)+12|0;q=c[B>>2]|0;m:do if((q|0)>0){j=0;while(1){if((a[o+j>>0]|0)!=(a[E+j>>0]|0)){x=j;break m}j=j+1|0;if((j|0)>=(q|0)){x=j;break}}}else x=0;while(0);t=((x|0)<0)<<31>>31;g=0;j=x;o=t;do{g=g+1|0;j=bw(j|0,o|0,7)|0;o=L()|0}while(!((j|0)==0&(o|0)==0));w=C-x|0;u=((w|0)<0)<<31>>31;j=0;o=w;h=u;do{j=j+1|0;o=bw(o|0,h|0,7)|0;h=L()|0}while(!((o|0)==0&(h|0)==0));s=g+w+j|0;y=Lb+56+(v<<5)+24|0;j=c[y>>2]|0;if(!q)break;if((j+s|0)<=(c[ja>>2]|0))break;r=Lb+56+(v<<5)|0;o=r;q=Lb+56+(v<<5)+20|0;j=Hr(f,c[o>>2]|0,c[o+4>>2]|0,c[q>>2]|0,j)|0;a[c[q>>2]>>0]=v;q=(c[q>>2]|0)+1|0;o=Sv(l|0,m|0,1,0)|0;l=q;g=L()|0;while(1){m=o&255;h=l+1|0;a[l>>0]=m|-128;o=bw(o|0,g|0,7)|0;g=L()|0;if((o|0)==0&(g|0)==0)break;else l=h}a[l>>0]=m&127;c[y>>2]=1-q+h;m=r;l=c[m>>2]|0;m=c[m+4>>2]|0;x=Sv(l|0,m|0,1,0)|0;y=L()|0;z=r;c[z>>2]=x;c[z+4>>2]=y;c[B>>2]=0;if((j|0)!=0|(l|0)==0&(m|0)==0)break l;j=v+1|0;if(j>>>0<16)v=j;else{j=0;break l}}q=Lb+56+(v<<5)+20|0;if(!j){o=c[ja>>2]|0;r=Lb+56+(v<<5)+28|0;j=c[q>>2]|0;if((c[r>>2]|0)<(o|0)){if(mb()|0){j=7;break}j=sb(j,(o|0)>0?o:0,0)|0;if(!j){j=7;break}c[r>>2]=o;c[q>>2]=j}a[j>>0]=v;g=(c[q>>2]|0)+1|0;h=g;while(1){j=l&255;o=h+1|0;a[h>>0]=j|-128;l=bw(l|0,m|0,7)|0;m=L()|0;if((l|0)==0&(m|0)==0)break;else h=o}a[h>>0]=j&127;j=1-g+o|0;c[y>>2]=j;m=r}else m=Lb+56+(v<<5)+28|0;l=j+s|0;if((c[m>>2]|0)<(l|0)){j=c[q>>2]|0;if(mb()|0){j=7;break}j=sb(j,(l|0)>0?l:0,0)|0;if(!j){j=7;break}c[m>>2]=l;c[q>>2]=j}l=Lb+56+(v<<5)+16|0;if((c[l>>2]|0)<=(A|0)){j=c[z>>2]|0;if(mb()|0){j=7;break}j=sb(j,(C|0)>0?C:0,0)|0;if(!j){j=7;break}c[l>>2]=C;c[z>>2]=j}if(!(c[B>>2]|0))j=c[y>>2]|0;else{h=(c[q>>2]|0)+(c[y>>2]|0)|0;o=h;g=x;m=t;while(1){j=g&255;l=o+1|0;a[o>>0]=j|-128;g=bw(g|0,m|0,7)|0;m=L()|0;if((g|0)==0&(m|0)==0)break;else o=l}a[o>>0]=j&127;j=(c[y>>2]|0)+(l-h)|0;c[y>>2]=j}h=(c[q>>2]|0)+j|0;o=h;g=w;m=u;while(1){j=g&255;l=o+1|0;a[o>>0]=j|-128;g=bw(g|0,m|0,7)|0;m=L()|0;if((g|0)==0&(m|0)==0)break;else o=l}a[o>>0]=j&127;j=(c[y>>2]|0)+(l-h)|0;c[y>>2]=j;ew((c[q>>2]|0)+j|0,E+x|0,w|0)|0;c[y>>2]=(c[y>>2]|0)+w;ew(c[z>>2]|0,E|0,C|0)|0;c[B>>2]=C;j=0}while(0);m=ka;m=Sv(c[m>>2]|0,c[m+4>>2]|0,1,0)|0;l=L()|0;h=ka;c[h>>2]=m;c[h+4>>2]=l;c[ga>>2]=0;c[ia>>2]=0;h=0;l=F;m=((F|0)<0)<<31>>31;do{h=h+1|0;l=bw(l|0,m|0,7)|0;m=L()|0}while(!((l|0)==0&(m|0)==0));o=0;m=I;l=D;do{o=o+1|0;m=bw(m|0,l|0,7)|0;l=L()|0}while(!((m|0)==0&(l|0)==0));l=F+1+I+h|0;B=l+o|0;C=ba;B=Sv(c[C>>2]|0,c[C+4>>2]|0,B|0,((B|0)<0)<<31>>31|0)|0;C=L()|0;D=ba;c[D>>2]=B;c[D+4>>2]=C;if(!j){l=l+o|0;j=0;M=482}}else M=480;while(0);if((M|0)==480){B=ba;B=Sv(c[B>>2]|0,c[B+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;C=L()|0;D=ba;c[D>>2]=B;c[D+4>>2]=C;l=l+j|0;M=482}do if((M|0)==482){M=0;if((c[ma>>2]|0)<(l|0)){j=c[ha>>2]|0;if(mb()|0){m=K;g=J;j=7;l=p;M=750;break i}j=sb(j,(l|0)>0?l:0,0)|0;if(!j){m=K;g=J;j=7;l=p;M=750;break i}c[ma>>2]=l;c[ha>>2]=j;j=c[ia>>2]|0}if(!j){c[ia>>2]=1;a[c[ha>>2]>>0]=0}j=Qr(ha,fa,E,F,H,I)|0;if(j|0)break;j=gq(f,jb)|0}while(0);l=c[la>>2]|0;if((j|0)==100&(l|0)>=(K|0))break;switch(j|0){case 100:break;case 0:break j;default:{m=K;g=J;l=p;M=750;break i}}}F=K+-1-l|0;j=c[U>>2]|0;n:do if((j|0)>0){w=0;y=j;l=j;o:while(1){x=y+-1|0;if((l|0)>0){m=c[jb>>2]|0;j=0;do{o=c[m+(j<<2)>>2]|0;j=j+1|0}while((j|0)<(l|0)?(c[o>>2]|0)!=(x|0):0)}else o=0;do if(!(c[o+40>>2]|0)){h=o+8|0;m=h;j=c[m>>2]|0;m=c[m+4>>2]|0;do if(!((j|0)==0&(m|0)==0)){l=c[Na>>2]|0;c[Kb>>2]=l;if(!l){l=c[hb>>2]|0;c[Ab>>2]=c[gb>>2];c[Ab+4>>2]=l;l=Bb(52181,Ab)|0;if(!l){M=502;break o}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[Na>>2]=l;if(j|0){g=w;break n}m=h;j=c[m>>2]|0;m=c[m+4>>2]|0}q=l;do if(!(Vc(q,1)|0)){h=c[q+100>>2]|0;g=h+8|0;if(!(b[g>>1]&9216)){K=h;c[K>>2]=j;c[K+4>>2]=m;b[g>>1]=4;break}else{Pg(h,j,m);break}}while(0);h=o+24|0;m=c[h>>2]|0;h=c[h+4>>2]|0;if(Vc(q,2)|0){Gc(q)|0;if(!l)break}else{l=c[q+100>>2]|0;j=l+40|0;l=l+48|0;if(!(b[l>>1]&9216)){K=j;c[K>>2]=m;c[K+4>>2]=h;b[l>>1]=4}else Pg(j,m,h);Gc(q)|0}j=c[q>>2]|0;K=q+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,q);l=kc(q)|0;c[q+20>>2]=770837923;c[q+36>>2]=-1;c[q+40>>2]=0;a[q+146>>0]=2;c[q+44>>2]=0;c[q+32>>2]=1;a[q+147>>0]=-1;c[q+48>>2]=0;K=q+64|0;c[K>>2]=0;c[K+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){M=521;break o}j=c[j+68>>2]&l;if(j|0){g=w;break n}}while(0);h=c[o>>2]|0;j=c[Ma>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[Cb>>2]=c[gb>>2];c[Cb+4>>2]=l;l=Bb(52829,Cb)|0;if(!l){M=526;break o}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[Ma>>2]=l;if(!j)j=l;else{g=w;break n}}o=j;do if(!(Vc(o,1)|0)){l=c[o+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){K=l;c[K>>2]=O;c[K+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);m=((h|0)<0)<<31>>31;if(Vc(o,2)|0){Gc(o)|0;if(!j){m=w;j=0;break}}else{l=c[o+100>>2]|0;j=l+40|0;l=l+48|0;if(!(b[l>>1]&9216)){K=j;c[K>>2]=h;c[K+4>>2]=m;b[l>>1]=4}else Pg(j,h,m);Gc(o)|0}j=c[o>>2]|0;K=o+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,o);l=kc(o)|0;c[o+20>>2]=770837923;c[o+36>>2]=-1;c[o+40>>2]=0;a[o+146>>0]=2;c[o+44>>2]=0;c[o+32>>2]=1;a[o+147>>0]=-1;c[o+48>>2]=0;K=o+64|0;c[K>>2]=0;c[K+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){M=544;break o}m=w;j=c[j+68>>2]&l}else{q=c[o+64>>2]|0;t=c[o+60>>2]|0;v=c[o>>2]|0;c[lb>>2]=0;c[lb+4>>2]=0;c[lb+8>>2]=0;c[ob>>2]=0;c[ob+4>>2]=0;c[ob+8>>2]=0;j=qb;c[j>>2]=0;c[j+4>>2]=0;j=c[aa>>2]|0;c[Kb>>2]=j;do if(!j){l=c[hb>>2]|0;c[Db>>2]=c[gb>>2];c[Db+4>>2]=l;l=Bb(52942,Db)|0;if(!l){j=7;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[aa>>2]=l;if(!j){j=l;M=554}}else M=554;while(0);p:do if((M|0)==554){M=0;g=j;do if(!(Vc(g,1)|0)){l=c[g+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){K=l;c[K>>2]=O;c[K+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);u=((v|0)<0)<<31>>31;do if(!(Vc(g,2)|0)){m=c[g+100>>2]|0;l=m+40|0;m=m+48|0;if(!(b[m>>1]&9216)){K=l;c[K>>2]=v;c[K+4>>2]=u;b[m>>1]=4;break}else{Pg(l,v,u);break}}while(0);if((Gc(g)|0)==100){if(!j)l=mc(29576)|0;else{l=c[g+120>>2]|0;do if(!l)M=567;else{if((e[g+144>>1]|0)<=4){M=567;break}l=l+160|0;m=g}while(0);if((M|0)==567){M=0;l=c[g>>2]|0;c[l+64>>2]=25;Ne(l,25);l=29576;m=g}l=mc(l)|0;m=c[m>>2]|0;h=g+40|0;o=c[h>>2]|0;if((o|0)==3082|(a[m+81>>0]|0)!=0){og(m);m=7}else m=c[m+68>>2]&o;c[h>>2]=m}m=Lc(g,4)|0;r=Oc(g,1)|0;s=L()|0;m=Rr(l,m,lb,q,t,qb)|0}else{m=0;r=0;s=0}do if(j){j=c[g>>2]|0;K=g+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,g);l=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;K=g+64|0;c[K>>2]=0;c[K+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&l;break}}else j=0;while(0);j=(m|0)==0?j:m;m=qb;l=c[m>>2]|0;m=c[m+4>>2]|0;do if((j|0)==0&((l|0)!=0|(m|0)!=0)){while(1){c[Kb>>2]=0;c[rb>>2]=0;j=dq(f,l,m,Kb,rb)|0;do if(!j){j=Rr(c[Kb>>2]|0,c[rb>>2]|0,ob,q,t,qb)|0;if(j|0)break;j=Hr(f,l,m,c[ob>>2]|0,c[Oa>>2]|0)|0}while(0);o=c[Kb>>2]|0;do if(o|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{K=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);o=(j|0)==0;g=qb;h=c[g>>2]|0;g=c[g+4>>2]|0;if(o&((h|0)!=0|(g|0)!=0)){l=h;m=g}else break}if(!o)break p;j=c[Na>>2]|0;c[Kb>>2]=j;if(!j){o=c[hb>>2]|0;c[Eb>>2]=c[gb>>2];c[Eb+4>>2]=o;o=Bb(52181,Eb)|0;if(!o){j=7;break p}j=qd(c[R>>2]|0,o,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](o);else{K=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o)}o=c[Kb>>2]|0;c[Na>>2]=o;if(!j)j=o;else break p}q=j;do if(!(Vc(q,1)|0)){o=c[q+100>>2]|0;h=o+8|0;if(!(b[h>>1]&9216)){K=o;c[K>>2]=r;c[K+4>>2]=s;b[h>>1]=4;break}else{Pg(o,r,s);break}}while(0);h=Sv(l|0,m|0,-1,-1)|0;g=L()|0;if(Vc(q,2)|0){Gc(q)|0;if(!j){h=l;break}}else{o=c[q+100>>2]|0;j=o+40|0;o=o+48|0;if(!(b[o>>1]&9216)){K=j;c[K>>2]=h;c[K+4>>2]=g;b[o>>1]=4}else Pg(j,h,g);Gc(q)|0}j=c[q>>2]|0;K=q+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,q);o=kc(q)|0;c[q+20>>2]=770837923;c[q+36>>2]=-1;c[q+40>>2]=0;a[q+146>>0]=2;c[q+44>>2]=0;c[q+32>>2]=1;a[q+147>>0]=-1;c[q+48>>2]=0;K=q+64|0;c[K>>2]=0;c[K+4>>2]=0;if((o|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break p}else{j=c[j+68>>2]&o;M=614;break}}else{l=0;m=0;M=614}while(0);if((M|0)==614){M=0;if(!j)h=l;else break}j=c[Pa>>2]|0;c[Kb>>2]=j;if(!j){l=c[hb>>2]|0;c[Fb>>2]=c[gb>>2];c[Fb+4>>2]=l;l=Bb(53049,Fb)|0;if(!l){j=7;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[Pa>>2]=l;if(!j)j=l;else break}g=j;do if(!(Vc(g,1)|0)){l=c[g+100>>2]|0;o=l+8|0;if(!(b[o>>1]&9216)){K=l;c[K>>2]=h;c[K+4>>2]=m;b[o>>1]=4;break}else{Pg(l,h,m);break}}while(0);l=c[lb>>2]|0;m=c[Qa>>2]|0;do if(!((l|0)==0|(Vc(g,2)|0)!=0)){l=yc((c[g+100>>2]|0)+40|0,l,m,0,0)|0;if(!l)break;m=c[g>>2]|0;c[m+64>>2]=l;Ne(m,l);m=c[g>>2]|0;if(!((l|0)==3082|(a[m+81>>0]|0)!=0))break;og(m)}while(0);do if(!(Vc(g,3)|0)){m=c[g+100>>2]|0;l=m+80|0;m=m+88|0;if(!(b[m>>1]&9216)){K=l;c[K>>2]=O;c[K+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);if(Vc(g,4)|0){Gc(g)|0;if(!j)j=0;else M=641}else{l=c[g+100>>2]|0;j=l+120|0;l=l+128|0;if(!(b[l>>1]&9216)){M=j;c[M>>2]=v;c[M+4>>2]=u;b[l>>1]=4}else Pg(j,v,u);Gc(g)|0;M=641}do if((M|0)==641){M=0;j=c[g>>2]|0;K=g+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,g);l=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;K=g+64|0;c[K>>2]=0;c[K+4>>2]=0;if((l|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&l;break}}while(0);Vc(g,2)|0}while(0);l=c[lb>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[ob>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);m=w+1|0}while(0);l=(j|0)==0;if(!((y|0)>1&l)){M=658;break}w=m;y=x;l=c[U>>2]|0}if((M|0)==502){M=0;g=w;j=7;break}else if((M|0)==521){M=0;og(j);g=w;j=7;break}else if((M|0)==526){M=0;g=w;j=7;break}else if((M|0)==544){M=0;og(j);g=w;j=7;break}else if((M|0)==658){M=0;if(!l){g=m;break}E=m;j=c[U>>2]|0;M=660;break}}else{E=0;M=660}while(0);do if((M|0)==660){M=0;if((E|0)==(j|0)){g=j;j=0;break}j=c[Sa>>2]|0;c[Kb>>2]=j;do if(!j){l=c[hb>>2]|0;c[Gb>>2]=c[gb>>2];c[Gb+4>>2]=l;l=Bb(53193,Gb)|0;if(!l){j=7;l=0;M=698;break}j=qd(c[R>>2]|0,l,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](l);else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l)}l=c[Kb>>2]|0;c[Sa>>2]=l;if(!j){j=l;M=669}else{l=0;M=698}}else M=669;while(0);q:do if((M|0)==669){M=0;r=j;do if(!(Vc(r,1)|0)){l=c[r+100>>2]|0;m=l+8|0;if(!(b[m>>1]&9216)){K=l;c[K>>2]=O;c[K+4>>2]=N;b[m>>1]=4;break}else{Pg(l,O,N);break}}while(0);r:do if((Gc(r)|0)==100){g=0;o=0;q=0;h=0;l=0;while(1){if((q|0)>=(o|0)){o=o+16|0;m=o<<2;if(mb()|0){o=7;break r}m=sb(h,(m|0)>0?m:0,0)|0;if(!m){o=7;break r}else{g=m;l=m;h=m}}K=Nc(r,0)|0;m=q+1|0;c[g+(q<<2)>>2]=K;if((Gc(r)|0)==100)q=m;else{q=m;o=0;break}}}else{q=0;o=0;g=0;l=0}while(0);do if(j){j=c[r>>2]|0;K=r+136|0;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,r);m=kc(r)|0;c[r+20>>2]=770837923;c[r+36>>2]=-1;c[r+40>>2]=0;a[r+146>>0]=2;c[r+44>>2]=0;c[r+32>>2]=1;a[r+147>>0]=-1;c[r+48>>2]=0;K=r+64|0;c[K>>2]=0;c[K+4>>2]=0;if((m|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&m;break}}else j=0;while(0);j=(o|0)==0?j:o;if(j|0){M=698;break}j=c[db>>2]|0;c[Kb>>2]=j;if(!j){m=c[hb>>2]|0;c[Hb>>2]=c[gb>>2];c[Hb+4>>2]=m;m=Bb(52884,Hb)|0;if(!m){j=7;M=698;break}j=qd(c[R>>2]|0,m,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{K=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}m=c[Kb>>2]|0;c[db>>2]=m;if(!j)j=m;else{M=698;break}}D=j;do if(!(Vc(D,2)|0)){o=c[D+100>>2]|0;m=o+40|0;o=o+48|0;if(!(b[o>>1]&9216)){K=m;c[K>>2]=O;c[K+4>>2]=N;b[o>>1]=4;break}else{Pg(m,O,N);break}}while(0);a[Va>>0]=1;if(!q){j=0;break}s=D+100|0;t=D+136|0;u=D+20|0;v=D+36|0;w=D+40|0;x=D+146|0;y=D+44|0;z=D+32|0;A=D+147|0;B=D+48|0;C=D+64|0;if(!j){r=0;s:while(1){j=c[g+(r<<2)>>2]|0;do if((j|0)==(r|0))j=0;else{m=((j|0)<0)<<31>>31;do if(!(Vc(D,3)|0)){h=c[s>>2]|0;o=h+80|0;h=h+88|0;if(!(b[h>>1]&9216)){K=o;c[K>>2]=j;c[K+4>>2]=m;b[h>>1]=4;break}else{Pg(o,j,m);break}}while(0);if(Vc(D,1)|0){Gc(D)|0;j=0;break}j=c[s>>2]|0;m=j+8|0;if(!(b[m>>1]&9216)){K=j;c[K>>2]=r;c[K+4>>2]=0;b[m>>1]=4}else Pg(j,r,0);Gc(D)|0;j=c[D>>2]|0;K=t;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,D);m=kc(D)|0;c[u>>2]=770837923;c[v>>2]=-1;c[w>>2]=0;a[x>>0]=2;c[y>>2]=0;c[z>>2]=1;a[A>>0]=-1;c[B>>2]=0;K=C;c[K>>2]=0;c[K+4>>2]=0;if((m|0)==3082|(a[j+81>>0]|0)!=0)break s;j=c[j+68>>2]&m}while(0);r=r+1|0;if(!(r>>>0>>0&(j|0)==0))break q}og(j);j=7;break}r=0;while(1){j=c[g+(r<<2)>>2]|0;if((j|0)==(r|0))j=0;else{m=((j|0)<0)<<31>>31;do if(!(Vc(D,3)|0)){h=c[s>>2]|0;o=h+80|0;h=h+88|0;if(!(b[h>>1]&9216)){K=o;c[K>>2]=j;c[K+4>>2]=m;b[h>>1]=4;break}else{Pg(o,j,m);break}}while(0);if(!(Vc(D,1)|0)){j=c[s>>2]|0;m=j+8|0;if(!(b[m>>1]&9216)){K=j;c[K>>2]=r;c[K+4>>2]=0;b[m>>1]=4}else Pg(j,r,0);Gc(D)|0}else Gc(D)|0;j=c[D>>2]|0;K=t;J=c[K+4>>2]|0;if((J|0)>0|(J|0)==0&(c[K>>2]|0)>>>0>0)hc(j,D);m=kc(D)|0;c[u>>2]=770837923;c[v>>2]=-1;c[w>>2]=0;a[x>>0]=2;c[y>>2]=0;c[z>>2]=1;a[A>>0]=-1;c[B>>2]=0;K=C;c[K>>2]=0;c[K+4>>2]=0;if((m|0)==3082|(a[j+81>>0]|0)!=0)break;j=c[j+68>>2]&m}r=r+1|0;if(!(r>>>0>>0&(j|0)==0))break q}og(j);j=7}while(0);if((M|0)==698){M=0;a[Va>>0]=1}a[Va>>0]=0;if(!l){g=E;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);g=E;break}else{g=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);g=E;break}}while(0);if(!g){t=F;s=p;r=1;break}k=n+20|0;if(j|0){m=F;k=1;l=p;M=751;break}if((p|0)<(k|0)){if(mb()|0){m=F;k=1;j=7;l=p;M=751;break}j=sb(i,(k|0)>0?k:0,0)|0;if(!j){m=F;k=1;j=7;l=p;M=751;break}else{i=j;p=k}}k=i+n|0;j=k;m=O;h=N;while(1){l=m&255;o=j+1|0;a[j>>0]=l|-128;m=bw(m|0,h|0,7)|0;h=L()|0;if((m|0)==0&(h|0)==0)break;else j=o}a[j>>0]=l&127;n=o-k+n|0;o=i+n|0;j=o;l=g;m=((g|0)<0)<<31>>31;while(1){k=l&255;h=j+1|0;a[j>>0]=k|-128;l=bw(l|0,m|0,7)|0;m=L()|0;if((l|0)==0&(m|0)==0)break;else j=h}a[j>>0]=k&127;m=F;k=1;j=0;n=n-o+h|0;l=p;M=750}while(0);if((M|0)==750){M=0;if(!g){t=m;s=l;r=1}else M=751}if((M|0)==751){M=0;r=ba;r=Tv(0,0,c[r>>2]|0,c[r+4>>2]|0)|0;s=L()|0;t=ba;c[t>>2]=r;c[t+4>>2]=s;t=m;s=l;r=0}m=15;while(1){if((c[Lb+56+(m<<5)+24>>2]|0)>0){M=763;break}l=c[Lb+56+(m<<5)+20>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[Lb+56+(m<<5)+8>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);if(!m)break;else m=m+-1|0}do if((M|0)==763){M=0;do if(m){if((m|0)>0)M=773}else{if(j|0){m=1;M=773;break}j=c[pa>>2]|0;if((c[oa>>2]|0)<11){if(mb()|0){j=7;m=1;M=773;break}j=sb(j,11,0)|0;if(!j){j=7;m=1;M=773;break}c[oa>>2]=11;c[pa>>2]=j}a[j>>0]=1;l=(c[pa>>2]|0)+1|0;p=ka;j=l;o=c[p>>2]|0;p=c[p+4>>2]|0;while(1){m=o&255;h=j+1|0;a[j>>0]=m|-128;o=bw(o|0,p|0,7)|0;p=L()|0;if((o|0)==0&(p|0)==0)break;else j=h}a[j>>0]=m&127;c[va>>2]=1-l+h;j=0;m=1;M=773}while(0);if((M|0)==773){h=0;do{l=c[Lb+56+(h<<5)+24>>2]|0;o=Lb+56+(h<<5)+20|0;if((j|0)==0&(l|0)>0){j=Lb+56+(h<<5)|0;j=Hr(f,c[j>>2]|0,c[j+4>>2]|0,c[o>>2]|0,l)|0}l=c[o>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[Lb+56+(h<<5)+8>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);h=h+1|0}while((h|0)!=(m|0))}if(!j){j=qa;j=Sv(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;l=L()|0;o=sa;h=ka;p=ta;if(!(a[na>>0]|0)){q=ba;g=c[q>>2]|0;q=c[q+4>>2]|0}else{g=0;q=0}M=Lb+56+(m<<5)+20|0;j=Jr(f,j,l,c[ra>>2]|0,c[o>>2]|0,c[o+4>>2]|0,c[h>>2]|0,c[h+4>>2]|0,c[p>>2]|0,c[p+4>>2]|0,g,q,c[M>>2]|0,c[Lb+56+(m<<5)+24>>2]|0)|0;l=M}else l=Lb+56+(m<<5)+20|0;l=c[l>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[Lb+56+(m<<5)+8>>2]|0;if(!l)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{M=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-M;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(!r){m=t;l=s;M=801;break}if(a[na>>0]|0){m=t;l=s;M=801;break}M=Sv(O|0,N|0,1,0)|0;l=L()|0;m=ba;Gr(f,M,l,c[m>>2]|0,c[m+4>>2]|0)|0;m=t;l=s;M=801}}else{m=K;l=p;M=801}}else{m=K;l=p;M=801}while(0);if((M|0)==801){M=0;q=m;p=l;m=c[U>>2]|0}l=c[jb>>2]|0;if((m|0)>0){g=0;do{h=c[l+(g<<2)>>2]|0;do if(h|0){do if(!(c[h+56>>2]|0)){l=c[h+64>>2]|0;if(!l)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);do if(!(a[h+5>>0]|0)){l=c[h+40>>2]|0;if(!l)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);l=c[h+52>>2]|0;t:do if(l|0){m=c[l+20>>2]|0;gc(c[l+16>>2]|0)|0;do if(m|0){if(c[m+480>>2]|0){Xd(m,l);break t}o=l;if((c[m+304>>2]|0)>>>0>o>>>0)break;if((c[m+308>>2]|0)>>>0<=o>>>0)break;K=m+300|0;c[l>>2]=c[K>>2];c[K>>2]=l;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{K=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);g=g+1|0;l=c[jb>>2]|0}while((g|0)<(c[U>>2]|0))}do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);l=c[W>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{K=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);c[U>>2]=0;c[jb>>2]=0;c[W>>2]=0;if((j|0)==0&(q|0)>0){K=q;o=O;h=N}else break}if((k|0)!=0&(j|0)==0){l=f+148|0;k=c[l>>2]|0;c[Kb>>2]=k;if(!k){k=c[f+20>>2]|0;c[Jb>>2]=c[f+16>>2];c[Jb+4>>2]=k;k=Bb(52453,Jb)|0;if(!k){j=7;break}j=qd(c[f+12>>2]|0,k,-1,133,0,Kb,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](k);else{f=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k)}k=c[Kb>>2]|0;c[l>>2]=k;if(j)break}m=k;do if(!(Vc(m,1)|0)){j=c[m+100>>2]|0;l=j+8|0;if(!(b[l>>1]&9216)){Kb=j;c[Kb>>2]=1;c[Kb+4>>2]=0;b[l>>1]=4;break}else{Pg(j,1,0);break}}while(0);if((i|0)==0|(Vc(m,2)|0)!=0){Gc(m)|0;if(!k)j=0;else M=857}else{j=yc((c[m+100>>2]|0)+40|0,i,n,0,0)|0;if(j|0?(Mb=c[m>>2]|0,c[Mb+64>>2]=j,Ne(Mb,j),Mb=c[m>>2]|0,(j|0)==3082|(a[Mb+81>>0]|0)!=0):0)og(Mb);Gc(m)|0;M=857}do if((M|0)==857){j=c[m>>2]|0;Mb=m+136|0;Kb=c[Mb+4>>2]|0;if((Kb|0)>0|(Kb|0)==0&(c[Mb>>2]|0)>>>0>0)hc(j,m);k=kc(m)|0;c[m+20>>2]=770837923;c[m+36>>2]=-1;c[m+40>>2]=0;a[m+146>>0]=2;c[m+44>>2]=0;c[m+32>>2]=1;a[m+147>>0]=-1;c[m+48>>2]=0;Mb=m+64|0;c[Mb>>2]=0;c[Mb+4>>2]=0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7;break}else{j=c[j+68>>2]&k;break}}while(0);Vc(m,2)|0}}}while(0);if(!(c[7324]|0))ab[c[29344>>2]&127](Lb);else{Mb=Wa[c[29352>>2]&127](Lb)|0;c[14978]=(c[14978]|0)-Mb;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](Lb)}if(!i){Mb=j;Ra=Nb;return Mb|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);Mb=j;Ra=Nb;return Mb|0}else{Mb=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-Mb;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);Mb=j;Ra=Nb;return Mb|0}return 0}function Pr(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=b+28|0;g=(c[m>>2]|0)!=0;n=b+16|0;e=n;f=c[e>>2]|0;e=c[e+4>>2]|0;if(g&((f|0)!=0|(e|0)!=0)){l=Sv(f|0,e|0,1,0)|0;o=L()|0;p=n;c[p>>2]=l;c[p+4>>2]=o}o=b+8|0;j=c[o>>2]|0;p=b+4|0;k=c[p>>2]|0;if((j|0)>=(k|0)){c[b>>2]=0;b=0;return b|0}h=c[b>>2]|0;if(g){g=h+j|0;f=a[g>>0]|0;e=f&255;if(e&128){l=d[g+1>>0]|0;e=l<<7|f&127;if(l&128){l=d[g+2>>0]|0;e=l<<14|e&16383;if(l&128){l=d[g+3>>0]|0;e=l<<21|e&2097151;if(!(l&128))f=4;else{e=(a[g+4>>0]&7)<<28|e&268435455;f=5}}else f=3}else f=2}else f=1;j=f+j|0;c[o>>2]=j}else e=0;i=h+j|0;f=a[i>>0]|0;g=f&255;if(g&128){l=d[i+1>>0]|0;f=l<<7|f&127;if(l&128){l=d[i+2>>0]|0;f=l<<14|f&16383;if(l&128){l=d[i+3>>0]|0;f=l<<21|f&2097151;if(!(l&128)){l=f;f=4}else{l=(a[i+4>>0]&7)<<28|f&268435455;f=5}}else{l=f;f=3}}else{l=f;f=2}}else{l=g;f=1}g=f+j|0;c[o>>2]=g;if((e|0)>(g|0)|(l|0)>(k-g|0)){b=267;return b|0}k=l+e|0;i=b+32|0;j=b+24|0;do if((c[i>>2]|0)<(k|0)){f=c[j>>2]|0;if(mb()|0){b=7;return b|0}f=sb(f,(k|0)>0?k:0,0)|0;if(!f){b=7;return b|0}else{c[i>>2]=k;c[j>>2]=f;h=c[b>>2]|0;g=c[o>>2]|0;break}}else f=c[j>>2]|0;while(0);ew(f+e|0,h+g|0,l|0)|0;c[m>>2]=k;i=(c[o>>2]|0)+l|0;c[o>>2]=i;if(!((c[n>>2]|0)==0&(c[n+4>>2]|0)==0)){b=0;return b|0}j=c[b>>2]|0;g=j+i|0;e=a[g>>0]|0;f=e&255;h=b+40|0;do if(f&128){n=d[g+1>>0]|0;f=n<<7|e&127;if(!(n&128)){c[h>>2]=f;e=2;break}n=d[g+2>>0]|0;f=n<<14|f&16383;if(!(n&128)){c[h>>2]=f;e=3;break}n=d[g+3>>0]|0;f=n<<21|f&2097151;if(!(n&128)){c[h>>2]=f;e=4;break}else{f=(a[g+4>>0]&7)<<28|f&268435455;c[h>>2]=f;e=5;break}}else{c[h>>2]=f;e=1}while(0);e=e+i|0;c[o>>2]=e;if(((c[p>>2]|0)-e|0)<(f|0)){b=267;return b|0}c[b+36>>2]=j+e;c[o>>2]=f+e;b=0;return b|0}function Qr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=d+4|0;k=c[m>>2]|0;j=d+8|0;i=c[d>>2]|0;do if((c[j>>2]|0)<(f|0)){if(mb()|0){h=7;return h|0}i=sb(i,(f|0)>0?f:0,0)|0;if(!i){h=7;return h|0}else{c[j>>2]=f;c[d>>2]=i;l=c[m>>2]|0;break}}else l=k;while(0);j=(k|0)==0;a:do if((l|0)>0){d=0;while(1){if((a[i+d>>0]|0)!=(a[e+d>>0]|0)){n=d;break a}d=d+1|0;if((d|0)>=(l|0)){n=d;break}}}else n=0;while(0);o=f-n|0;ew(i|0,e|0,f|0)|0;c[m>>2]=f;if(j){d=b+4|0;m=d;d=c[d>>2]|0}else{m=b+4|0;i=(c[b>>2]|0)+(c[m>>2]|0)|0;d=i;k=n;f=((n|0)<0)<<31>>31;while(1){j=k&255;l=d+1|0;a[d>>0]=j|-128;k=bw(k|0,f|0,7)|0;f=L()|0;if((k|0)==0&(f|0)==0)break;else d=l}a[d>>0]=j&127;d=l-i+(c[m>>2]|0)|0;c[m>>2]=d}i=(c[b>>2]|0)+d|0;d=i;k=o;f=((o|0)<0)<<31>>31;while(1){j=k&255;l=d+1|0;a[d>>0]=j|-128;k=bw(k|0,f|0,7)|0;f=L()|0;if((k|0)==0&(f|0)==0)break;else d=l}a[d>>0]=j&127;d=(c[m>>2]|0)+(l-i)|0;c[m>>2]=d;ew((c[b>>2]|0)+d|0,e+n|0,o|0)|0;d=(c[m>>2]|0)+o|0;c[m>>2]=d;if(!g){h=0;return h|0}i=(c[b>>2]|0)+d|0;d=i;k=h;f=((h|0)<0)<<31>>31;while(1){j=k&255;l=d+1|0;a[d>>0]=j|-128;k=bw(k|0,f|0,7)|0;f=L()|0;if((k|0)==0&(f|0)==0)break;else d=l}a[d>>0]=j&127;e=(c[m>>2]|0)+(l-i)|0;c[m>>2]=e;ew((c[b>>2]|0)+e|0,g|0,h|0)|0;c[m>>2]=(c[m>>2]|0)+h;h=0;return h|0}function Rr(b,e,f,g,h,i){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=Ra;Ra=Ra+64|0;x=z;y=z+48|0;c[y>>2]=0;c[y+4>>2]=0;c[y+8>>2]=0;v=(a[b>>0]|0)!=0;k=f+8|0;do if((c[k>>2]|0)<(e|0)){j=c[f>>2]|0;if(mb()|0){y=7;Ra=z;return y|0}j=sb(j,(e|0)>0?e:0,0)|0;if(!j){y=7;Ra=z;return y|0}else{c[k>>2]=e;c[f>>2]=j;break}}while(0);w=f+4|0;c[w>>2]=0;o=x+8|0;j=o;k=j+40|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));c[x>>2]=b;c[x+4>>2]=e;do if(!(a[b>>0]|0))j=1;else{m=b+1|0;n=x+16|0;j=a[m>>0]|0;k=j&255;if(!(k&128)){t=n;c[t>>2]=j&255;c[t+4>>2]=0;j=2;break}t=d[b+2>>0]|0;j=t<<7|k&127;if(!(t&128)){t=n;c[t>>2]=j;c[t+4>>2]=0;j=3;break}t=d[b+3>>0]|0;j=t<<14|j&16383;if(!(t&128)){t=n;c[t>>2]=j;c[t+4>>2]=0;j=4;break}t=d[b+4>>0]|0;j=t<<21|j&2097151;if(!(t&128)){t=n;c[t>>2]=j;c[t+4>>2]=0;j=5;break}e=28;l=b+5|0;j=j&268435455;k=0;do{t=l;l=l+1|0;t=d[t>>0]|0;s=cw(t&127|0,0,e|0)|0;j=Sv(s|0,L()|0,j|0,k|0)|0;k=L()|0;e=e+7|0}while(e>>>0<64&((t&128|0)!=0|0!=0));t=n;c[t>>2]=j;c[t+4>>2]=k;j=1-m+l|0}while(0);c[o>>2]=j;j=Pr(x)|0;a:do if((j|0)==0&(c[x>>2]|0)!=0){o=x+24|0;q=x+28|0;r=x+36|0;s=x+40|0;t=x+16|0;while(1){if(!(c[w>>2]|0)){m=c[q>>2]|0;n=Lu(c[o>>2]|0,g,(m|0)<(h|0)?m:h)|0;n=(n|0)==0?m-h|0:n;if(!((n|0)<0|v&(n|0)==0)){k=t;j=c[k>>2]|0;k=c[k+4>>2]|0;a[c[f>>2]>>0]=a[b>>0]|0;if((j|0)==0&(k|0)==0){k=0;e=0;j=1}else{n=(c[f>>2]|0)+1|0;l=n;while(1){e=j&255;m=l+1|0;a[l>>0]=e|-128;j=bw(j|0,k|0,7)|0;k=L()|0;if((j|0)==0&(k|0)==0)break;else l=m}a[l>>0]=e&127;e=t;k=c[e>>2]|0;e=c[e+4>>2]|0;j=1-n+m|0}c[w>>2]=j;u=i;c[u>>2]=k;c[u+4>>2]=e;u=26}}else u=26;if((u|0)==26?(u=0,p=Qr(f,y,c[o>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0)|0,p|0):0)break a;j=Pr(x)|0;if(!((j|0)==0&(c[x>>2]|0)!=0)){p=j;break}}}else p=j;while(0);if(!(c[w>>2]|0)){n=x+16|0;e=n;j=c[e>>2]|0;e=c[e+4>>2]|0;a[c[f>>2]>>0]=a[b>>0]|0;if((j|0)==0&(e|0)==0){k=0;e=0;j=1}else{o=(c[f>>2]|0)+1|0;l=o;while(1){k=j&255;m=l+1|0;a[l>>0]=k|-128;j=bw(j|0,e|0,7)|0;e=L()|0;if((j|0)==0&(e|0)==0)break;else l=m}a[l>>0]=k&127;e=n;k=c[e>>2]|0;e=c[e+4>>2]|0;j=1-o+m|0}c[w>>2]=j;c[i>>2]=k;c[i+4>>2]=e}j=c[x+24>>2]|0;do if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{x=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);j=c[y>>2]|0;if(!j){y=p;Ra=z;return y|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);y=p;Ra=z;return y|0}else{y=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);y=p;Ra=z;return y|0}return 0}function Sr(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=Ra;Ra=Ra+16|0;i=m;j=m+8|0;f=d+252|0;g=d+280|0;a:do if((c[f>>2]|0)>0){e=0;b:while(1){h=Er(d,c[g>>2]|0,e,-1)|0;e=e+1|0;switch(h|0){case 0:case 101:break;default:break b}if((e|0)>=(c[f>>2]|0))break a}Fr(d);l=h;Ra=m;return l|0}while(0);Fr(d);if(!(a[d+233>>0]|0)){l=0;Ra=m;return l|0}k=d+48|0;if((c[k>>2]|0)!=255){l=0;Ra=m;return l|0}if(!(c[d+52>>2]|0)){l=0;Ra=m;return l|0}g=d+144|0;e=c[g>>2]|0;c[j>>2]=e;if(!e){e=c[d+20>>2]|0;c[i>>2]=c[d+16>>2];c[i+4>>2]=e;e=Bb(52411,i)|0;if(!e){l=7;Ra=m;return l|0}f=qd(c[d+12>>2]|0,e,-1,133,0,j,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}e=c[j>>2]|0;c[g>>2]=e;if(f){l=f;Ra=m;return l|0}}h=e;do if(!(Vc(h,1)|0)){f=c[h+100>>2]|0;g=f+8|0;if(!(b[g>>1]&9216)){j=f;c[j>>2]=2;c[j+4>>2]=0;b[g>>1]=4;break}else{Pg(f,2,0);break}}while(0);switch(Gc(h)|0){case 100:{f=Nc(h,0)|0;f=(f|0)==1?8:f;l=22;break}case 101:{f=0;l=22;break}default:{}}if((l|0)==22)c[k>>2]=f;if(!e){l=0;Ra=m;return l|0}e=c[h>>2]|0;l=h+136|0;k=c[l+4>>2]|0;if((k|0)>0|(k|0)==0&(c[l>>2]|0)>>>0>0)hc(e,h);f=kc(h)|0;c[h+20>>2]=770837923;c[h+36>>2]=-1;c[h+40>>2]=0;a[h+146>>0]=2;c[h+44>>2]=0;c[h+32>>2]=1;a[h+147>>0]=-1;c[h+48>>2]=0;l=h+64|0;c[l>>2]=0;c[l+4>>2]=0;if((f|0)==3082|(a[e+81>>0]|0)!=0){og(e);l=7;Ra=m;return l|0}else{l=c[e+68>>2]&f;Ra=m;return l|0}return 0}function Tr(f,h,i){f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0;Aa=Ra;Ra=Ra+176|0;m=Aa+96|0;sa=Aa+164|0;ta=Aa+152|0;ua=Aa+128|0;va=Aa+124|0;xa=Aa+120|0;ya=Aa+116|0;za=Aa+112|0;na=Aa+108|0;oa=Aa+104|0;pa=Aa+100|0;qa=Aa;if((h|0)>6){c[f+20>>2]=1;yc(c[f>>2]|0,55039,-1,1,-1)|0;Ra=Aa;return}j=c[i>>2]|0;if((((b[j+8>>1]&-15393)<<16>>16==-32255?(a[j+11>>0]|0)==112:0)?(Bu(c[j>>2]|0,54938)|0)==0:0)?(ra=c[j+16>>2]|0,ra|0):0){a:do switch(h|0){case 6:{h=c[i+20>>2]|0;j=e[h+8>>1]|0;if(j&4|0){k=c[h>>2]|0;ga=18;break a}if(j&8|0){k=Mg(+g[h>>3])|0;L()|0;ga=18;break a}if(!(j&18)){k=0;ga=18}else{k=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0;ga=18}break}case 5:{k=15;ga=18;break}case 4:{l=-1;k=15;ga=24;break}case 3:{m=55028;l=-1;k=15;ga=30;break}case 2:{o=55023;n=55028;l=-1;k=15;ga=36;break}default:{ka=55019;la=55023;ma=55028;fa=-1;q=15;ga=42}}while(0);do if((ga|0)==18){h=c[i+16>>2]|0;j=e[h+8>>1]|0;if(j&4|0){l=c[h>>2]|0;ga=24;break}if(j&8|0){l=Mg(+g[h>>3])|0;L()|0;ga=24;break}if(!(j&18)){l=0;ga=24}else{l=Ng(a[h+10>>0]|0,c[h+12>>2]|0,c[h+16>>2]|0)|0;L()|0;ga=24}}while(0);do if((ga|0)==24){h=c[i+12>>2]|0;if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){m=c[h+16>>2]|0;ga=30;break}if(!(j&1)){m=Gg(h,1)|0;ga=30}else{m=0;ga=30}}else{m=0;ga=30}}while(0);do if((ga|0)==30){h=c[i+8>>2]|0;if(h){j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0){o=c[h+16>>2]|0;n=m;ga=36;break}if(!(j&1)){o=Gg(h,1)|0;n=m;ga=36}else{o=0;n=m;ga=36}}else{o=0;n=m;ga=36}}while(0);do if((ga|0)==36?(p=c[i+4>>2]|0,p|0):0){h=b[p+8>>1]|0;if((h&514)==514?(a[p+10>>0]|0)==1:0){ka=c[p+16>>2]|0;la=o;ma=n;fa=l;q=k;ga=42;break}if(!(h&1)){ka=Gg(p,1)|0;la=o;ma=n;fa=l;q=k;ga=42}}while(0);if((ga|0)==42?(ka|0)!=0&((la|0)!=0&(ma|0)!=0):0){if(!q){if((yc(c[f>>2]|0,59952,-1,1,0)|0)!=18){Ra=Aa;return}c[f+20>>2]=18;yc(c[f>>2]|0,31223,-1,1,0)|0;Ra=Aa;return}if(ur(f,ra)|0){Ra=Aa;return}ja=c[ra>>2]|0;ea=ra+16|0;b:do if(!(c[ea>>2]|0)){if((yc(c[f>>2]|0,59952,0,1,0)|0)==18){c[f+20>>2]=18;yc(c[f>>2]|0,31223,-1,1,0)|0}}else{V=(q|0)>-64?q:-64;V=(V|0)<64?V:64;W=(V|0)>-1;X=ja+24|0;Y=(fa|0)<0;Z=ta+4|0;_=ua+16|0;$=ua+4|0;aa=ua+8|0;ba=ua+12|0;ca=ua+20|0;da=0-V|0;ia=1;h=0;c:while(1){if(W)ha=(ia+-1+V|0)/(ia|0)|0;else ha=da;U=0;k=0;j=0;T=0;l=0;d:while(1){S=qa+(U*24|0)|0;c[S>>2]=0;c[S+4>>2]=0;c[S+8>>2]=0;c[S+12>>2]=0;c[S+16>>2]=0;c[S+20>>2]=0;e:do if((c[X>>2]|0)>0){Q=qa+(U*24|0)+4|0;m=qa+(U*24|0)+8|0;R=qa+(U*24|0)+16|0;P=0;O=-1;s=j;f:while(1){g:do if(Y|(P|0)==(fa|0)){c[ua>>2]=0;c[ua+4>>2]=0;c[ua+8>>2]=0;c[ua+12>>2]=0;c[ua+16>>2]=0;c[ua+20>>2]=0;h=Z;c[h>>2]=0;c[h+4>>2]=0;c[ta>>2]=ra;h=c[ea>>2]|0;c[sa>>2]=0;h=Zr(h,sa,92,ta)|0;i=c[Z>>2]|0;do if(!h){h=i*24|0;j=pb(h,0)|0;c[_>>2]=j;if(!j){h=7;break}gw(j|0,0,h|0)|0;c[ua>>2]=ra;c[$>>2]=P;c[aa>>2]=ha;c[ba>>2]=i;c[ca>>2]=-1;h=c[ea>>2]|0;c[sa>>2]=0;h=Zr(h,sa,93,ua)|0;N=(h|0)==0;h:do if(N){if((i|0)>0){o=c[_>>2]|0;n=0;j=s;do{K=(c[o+(n*24|0)+12>>2]|0)==0;J=cw(1,0,n|0)|0;M=L()|0;k=(K?0:J)|k;j=(K?0:M)|j;n=n+1|0}while((n|0)!=(i|0))}else j=s;n=-1;I=0;o=c[ca>>2]|0;J=0;p=0;K=0;M=0;while(1){i:do if((o|0)<0){c[ca>>2]=0;o=c[ba>>2]|0;if((o|0)<=0){s=0;t=0;r=0;q=0;i=0;o=0;break}v=0;while(1){u=c[_>>2]|0;t=u+(v*24|0)+12|0;u=u+(v*24|0)+8|0;s=c[aa>>2]|0;q=c[t>>2]|0;if(q){i=c[u>>2]|0;o=q;j:do if((i|0)<(s|0)){o=q;do{r=a[o>>0]|0;if((r&255)<2){i=-1;o=0;break j}q=r&255;do if(!(q&128))r=1;else{ga=d[o+1>>0]|0;q=ga<<7|r&127;if(!(ga&128)){r=2;break}ga=d[o+2>>0]|0;q=ga<<14|q&16383;if(!(ga&128)){r=3;break}ga=d[o+3>>0]|0;q=ga<<21|q&2097151;if(!(ga&128)){r=4;break}q=(a[o+4>>0]&7)<<28|q&268435455;r=5}while(0);o=o+r|0;i=i+-2+q|0}while((i|0)<(s|0))}while(0);c[u>>2]=i;c[t>>2]=o;o=c[ba>>2]|0}v=v+1|0;if((v|0)>=(o|0)){ga=123;break}}}else{q=c[ba>>2]|0;if((q|0)<=0){t=P;r=I;s=j;q=J;i=K;o=M;break h}r=c[_>>2]|0;o=2147483647;i=0;while(1){if(!(c[r+(i*24|0)+12>>2]|0))x=o;else{x=c[r+(i*24|0)+8>>2]|0;x=(x|0)<(o|0)?x:o}i=i+1|0;if((i|0)==(q|0))break;else o=x}if((x|0)==2147483647){t=P;r=I;s=j;q=J;i=K;o=M;break h}w=x-(c[aa>>2]|0)|0;c[ca>>2]=w+1;i=0;while(1){u=r+(i*24|0)+12|0;v=r+(i*24|0)+8|0;o=c[u>>2]|0;if(o|0){q=c[v>>2]|0;k:do if((q|0)<=(x|0))do{t=a[o>>0]|0;if((t&255)<2){q=-1;o=0;break k}s=t&255;do if(!(s&128))t=1;else{ga=d[o+1>>0]|0;s=ga<<7|t&127;if(!(ga&128)){t=2;break}ga=d[o+2>>0]|0;s=ga<<14|s&16383;if(!(ga&128)){t=3;break}ga=d[o+3>>0]|0;s=ga<<21|s&2097151;if(!(ga&128)){t=4;break}s=(a[o+4>>0]&7)<<28|s&268435455;t=5}while(0);o=o+t|0;q=q+-2+s|0}while((q|0)<=(x|0));while(0);c[v>>2]=q;c[u>>2]=o}u=r+(i*24|0)+20|0;t=r+(i*24|0)+16|0;o=c[u>>2]|0;if(o|0){q=c[t>>2]|0;l:do if((q|0)<=(w|0))do{s=a[o>>0]|0;if((s&255)<2){q=-1;o=0;break l}r=s&255;do if(!(r&128))s=1;else{ga=d[o+1>>0]|0;r=ga<<7|s&127;if(!(ga&128)){s=2;break}ga=d[o+2>>0]|0;r=ga<<14|r&16383;if(!(ga&128)){s=3;break}ga=d[o+3>>0]|0;r=ga<<21|r&2097151;if(!(ga&128)){s=4;break}r=(a[o+4>>0]&7)<<28|r&268435455;s=5}while(0);o=o+s|0;q=q+-2+r|0}while((q|0)<=(w|0));while(0);c[t>>2]=q;c[u>>2]=o}i=i+1|0;o=c[ba>>2]|0;if((i|0)>=(o|0)){ga=123;break i}r=c[_>>2]|0}}while(0);do if((ga|0)==123){ga=0;H=c[ca>>2]|0;if((o|0)<=0){s=0;t=0;r=0;q=0;i=0;o=H;break}F=c[_>>2]|0;G=(c[aa>>2]|0)+H|0;s=0;E=0;t=0;r=0;q=0;i=0;while(1){v=c[F+(E*24|0)+20>>2]|0;m:do if(v){u=c[F+(E*24|0)+16>>2]|0;if((u|0)<(H|0)|(u|0)>=(G|0))break;C=cw(1,0,E|0)|0;D=L()|0;B=c[F+(E*24|0)>>2]|0;if((B|0)<=0){x=v;while(1){s=(((t|T)&C|0)==0&((r|l)&D|0)==0?1e3:1)+s|0;t=t|C;r=r|D;w=a[x>>0]|0;if((w&255)<2)break m;v=w&255;do if(!(v&128))w=1;else{B=d[x+1>>0]|0;v=B<<7|w&127;if(!(B&128)){w=2;break}B=d[x+2>>0]|0;v=B<<14|v&16383;if(!(B&128)){w=3;break}B=d[x+3>>0]|0;v=B<<21|v&2097151;if(!(B&128)){w=4;break}v=(a[x+4>>0]&7)<<28|v&268435455;w=5}while(0);u=u+-2+v|0;if((u|0)<(H|0)|(u|0)>=(G|0))break m;else x=x+w|0}}A=v;while(1){w=cw(1,0,u-H|0)|0;x=L()|0;y=(t|T)&C;z=(r|l)&D;v=0;do{Ba=bw(w|0,x|0,v|0)|0;q=Ba|q;i=L()|0|i;v=v+1|0}while((v|0)!=(B|0));s=((y|0)==0&(z|0)==0?1e3:1)+s|0;t=t|C;r=r|D;w=a[A>>0]|0;if((w&255)<2)break m;v=w&255;do if(!(v&128))w=1;else{Ba=d[A+1>>0]|0;v=Ba<<7|w&127;if(!(Ba&128)){w=2;break}Ba=d[A+2>>0]|0;v=Ba<<14|v&16383;if(!(Ba&128)){w=3;break}Ba=d[A+3>>0]|0;v=Ba<<21|v&2097151;if(!(Ba&128)){w=4;break}v=(a[A+4>>0]&7)<<28|v&268435455;w=5}while(0);u=u+-2+v|0;if((u|0)<(H|0)|(u|0)>=(G|0))break;else A=A+w|0}}while(0);E=E+1|0;if((E|0)==(o|0)){o=H;break}}}while(0);Ba=(s|0)>(n|0);n=Ba?s:n;I=Ba?o:I;J=Ba?t:J;p=Ba?r:p;K=Ba?q:K;M=Ba?i:M}}else{n=0;t=0;r=0;q=0;p=0;i=0;o=0}while(0);j=c[_>>2]|0;do if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{Ba=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);if(!N){j=11;n=O;o=s;break g}if((n|0)<=(O|0)){j=0;n=O;h=0;o=s;break g}c[S>>2]=t;c[Q>>2]=r;j=m;c[j>>2]=q;c[j+4>>2]=p;j=R;c[j>>2]=i;c[j+4>>2]=o;j=0;h=0;o=s;break g}while(0);j=11;n=O;o=s}else{j=10;n=O;o=s}while(0);switch(j&15){case 10:case 0:break;default:break f}P=P+1|0;if((P|0)>=(c[X>>2]|0)){j=o;ga=158;break e}else{O=n;s=o}}if(!j){m=T;j=o}else break d}else{m=qa+(U*24|0)+8|0;ga=158}while(0);if((ga|0)==158){ga=0;Ba=m;m=c[Ba>>2]|T;l=c[Ba+4>>2]|l}U=U+1|0;if(U>>>0>=ia>>>0){ga=161;break}else T=m}if((ga|0)==161){ga=0;j=(ia|0)==4|(k|0)==(m|0)&(j|0)==(l|0)?2:0}switch(j|0){case 2:{ga=164;break c}case 11:{m=0;break c}case 0:break;default:break b}ia=ia+1|0}n:do if((ga|0)==164)if(!h){F=ia+-1|0;G=ra+12|0;H=ra+20|0;I=ha+-1|0;E=0;m=0;k=0;s=0;while(1){B=(E|0)==(F|0);i=c[qa+(E*24|0)>>2]|0;p=c[qa+(E*24|0)+4>>2]|0;r=qa+(E*24|0)+16|0;q=c[r>>2]|0;r=c[r+4>>2]|0;o=c[ra>>2]|0;c[ya>>2]=0;i=i+1|0;n=c[G>>2]|0;l=(n|0)==0;do if(l)h=29576;else{h=c[n+120>>2]|0;if(h|0?i>>>0<(e[n+144>>1]|0)>>>0:0){h=h+(i*40|0)|0;break}h=c[n>>2]|0;c[h+64>>2]=25;Ne(h,25);h=29576}while(0);j=b[h+8>>1]|0;if((j&514)==514?(a[h+10>>0]|0)==1:0)A=c[h+16>>2]|0;else if(!(j&1))A=Gg(h,1)|0;else A=0;if(!l){j=c[n>>2]|0;l=n+40|0;h=c[l>>2]|0;if((h|0)==3082|(a[j+81>>0]|0)!=0){og(j);h=7}else h=c[j+68>>2]&h;c[l>>2]=h}n=c[G>>2]|0;if(!A){if(!n)h=1;else{h=c[n+120>>2]|0;do if(!h)ga=186;else{if(i>>>0>=(e[n+144>>1]|0)>>>0){ga=186;break}h=h+(i*40|0)|0;j=n}while(0);if((ga|0)==186){ga=0;h=c[n>>2]|0;c[h+64>>2]=25;Ne(h,25);h=29576;j=n}h=b[h+8>>1]&31;l=c[j>>2]|0;n=n+40|0;j=c[n>>2]|0;if((j|0)==3082|(a[l+81>>0]|0)!=0){og(l);j=7}else j=c[l+68>>2]&j;c[n>>2]=j}h=(-1431655766>>>h&1|0)==0?7:0;j=s}else{z=Lc(n,i)|0;y=o+36|0;j=c[y>>2]|0;D=c[j>>2]|0;l=c[H>>2]|0;c[sa>>2]=0;h=Za[c[D+12>>2]&127](j,A,z,sa)|0;if(h|0)break;c[c[sa>>2]>>2]=j;if((c[D>>2]|0)>0?(wa=Xa[c[D+24>>2]&255](c[sa>>2]|0,l)|0,wa|0):0){ga=195;break}C=c[sa>>2]|0;w=D+20|0;x=(E|0)!=0;t=p;v=0;o=0;j=s;s=q;o:while(1){c[na>>2]=-1;c[oa>>2]=0;c[pa>>2]=0;h=$a[c[w>>2]&127](C,za,na,oa,pa,ya)|0;switch(h|0){case 101:{ga=199;break o}case 0:break;default:{ga=274;break o}}h=c[ya>>2]|0;p:do if((h|0)<(t|0)){p=v;i=t;h=0;n=s;l=r}else{if(!o){o=c[oa>>2]|0;n=z-o|0;i=c[H>>2]|0;o=A+o|0;q:do if((s|0)==0&(r|0)==0){i=t;q=0;r=0}else{h=0;while(1){Ba=cw(1,0,h|0)|0;if((Ba&s|0)==0&((L()|0)&r|0)==0)h=h+1|0;else break}l=0;while(1){Ba=cw(1,0,I-l|0)|0;if((Ba&s|0)==0&((L()|0)&r|0)==0)l=l+1|0;else break}Ba=h-l|0;p=(Ba|0)/2|0;if((Ba|0)<=1){i=t;q=s;break}c[ta>>2]=0;l=c[y>>2]|0;q=c[l>>2]|0;c[sa>>2]=0;h=Za[c[q+12>>2]&127](l,o,n,sa)|0;r:do if(!h){c[c[sa>>2]>>2]=l;do if((c[q>>2]|0)>0){h=Xa[c[q+24>>2]&255](c[sa>>2]|0,i)|0;if(!h)break;Wa[c[q+16>>2]&127](c[sa>>2]|0)|0;c[sa>>2]=0;ga=216;break r}while(0);o=c[sa>>2]|0;l=p+ha|0;n=q+20|0;while(1){if((c[ta>>2]|0)>=(l|0)){ga=219;break}c[ua>>2]=0;c[va>>2]=0;c[xa>>2]=0;h=$a[c[n>>2]&127](o,sa,ua,va,xa,ta)|0;if(h|0){ga=221;break}}if((ga|0)==219){ga=0;Wa[c[q+16>>2]&127](o)|0;h=0}else if((ga|0)==221){ga=0;Wa[c[q+16>>2]&127](o)|0;if((h|0)==101)h=1;else break}i=h-ha+(c[ta>>2]|0)|0;Ba=(i|0)>0;q=bw(s|0,r|0,(Ba?i:0)|0)|0;r=L()|0;i=(Ba?i:0)+t|0;break q}else ga=216;while(0);if((ga|0)==216)ga=0;p=v;o=1;i=t;n=s;l=r;break p}while(0);do if(x|(i|0)>0){n=Eu(ma)|0;if((k+1+n|0)>=(j|0)){l=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;l=Sv(l|0,L()|0,n|0,((n|0)<0)<<31>>31|0)|0;h=L()|0;if(mb()|0){p=v;o=1;h=7;n=q;l=r;break p}h=sb(m,l,h)|0;if(!h){p=v;o=1;h=7;n=q;l=r;break p}m=h;j=l}ew(m+k|0,ma|0,n|0)|0;k=n+k|0;h=m+k|0;ga=238}else{h=c[oa>>2]|0;if(!h)break;if((h|0)<0)h=Eu(A)|0;if((k+1+h|0)>=(j|0)){n=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;n=Sv(n|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;l=L()|0;if(mb()|0){p=v;o=1;h=7;n=q;l=r;break p}l=sb(m,n,l)|0;if(!l){p=v;o=1;h=7;n=q;l=r;break p}m=l;j=n}ew(m+k|0,A|0,h|0)|0;k=h+k|0;h=m+k|0;ga=238}while(0);if((ga|0)==238){ga=0;a[h>>0]=0}h=c[ya>>2]|0;if((h|0)<(i|0)){p=v;o=1;h=0;n=q;l=r;break}else{u=1;t=i}}else{u=o;q=s}if((h|0)>=(t+ha|0)){ga=241;break o}p=cw(1,0,h-t|0)|0;p=(p&q|0)!=0|((L()|0)&r|0)!=0;do if((h|0)>(t|0)){o=A+v|0;h=(c[oa>>2]|0)-v|0;if((h|0)<0)h=Eu(o)|0;if((k+1+h|0)>=(j|0)){n=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;n=Sv(n|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;l=L()|0;if(mb()|0){h=7;break}l=sb(m,n,l)|0;if(!l){h=7;break}m=l;j=n}ew(m+k|0,o|0,h|0)|0;k=h+k|0;a[m+k>>0]=0;ga=255}else ga=255;while(0);do if((ga|0)==255){ga=0;if(p){n=Eu(ka)|0;o=n+k|0;if((o+1|0)>=(j|0)){l=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;l=Sv(l|0,L()|0,n|0,((n|0)<0)<<31>>31|0)|0;h=L()|0;if(mb()|0){h=7;break}h=sb(m,l,h)|0;if(!h){h=7;break}m=h;j=l}ew(m+k|0,ka|0,n|0)|0;a[m+o>>0]=0;k=o}h=c[oa>>2]|0;o=A+h|0;h=(c[pa>>2]|0)-h|0;if((h|0)<0)h=Eu(o)|0;i=h+k|0;if((i+1|0)>=(j|0)){n=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;n=Sv(n|0,L()|0,h|0,((h|0)<0)<<31>>31|0)|0;l=L()|0;if(mb()|0){h=7;break}l=sb(m,n,l)|0;if(!l){h=7;break}m=l;j=n}ew(m+k|0,o|0,h|0)|0;h=m+i|0;a[h>>0]=0;if(!p){h=0;k=i;break}o=Eu(la)|0;k=o+i|0;if((k+1|0)>=(j|0)){n=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;n=Sv(n|0,L()|0,o|0,((o|0)<0)<<31>>31|0)|0;h=L()|0;if(mb()|0){h=7;k=i;break}l=sb(m,n,h)|0;if(!l){h=7;k=i;break}h=l+i|0;m=l;j=n}ew(h|0,la|0,o|0)|0;a[m+k>>0]=0;h=0}while(0);p=c[pa>>2]|0;o=u;i=t;n=q;l=r}while(0);if(!h){t=i;v=p;s=n;r=l}else break}do if((ga|0)==199){n=A+v|0;o=Eu(n)|0;if((k+1+o|0)>=(j|0)){l=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;l=Sv(l|0,L()|0,o|0,((o|0)<0)<<31>>31|0)|0;h=L()|0;if(mb()|0){h=7;ga=274;break}h=sb(m,l,h)|0;if(!h){h=7;ga=274;break}m=h;j=l}ew(m+k|0,n|0,o|0)|0;k=o+k|0;a[m+k>>0]=0;h=0;ga=274}else if((ga|0)==241){if(!B){h=0;ga=274;break}n=Eu(ma)|0;if((k+1+n|0)>=(j|0)){l=Sv(j|0,((j|0)<0)<<31>>31|0,100,0)|0;l=Sv(l|0,L()|0,n|0,((n|0)<0)<<31>>31|0)|0;h=L()|0;if(mb()|0){h=7;ga=274;break}h=sb(m,l,h)|0;if(!h){h=7;ga=274;break}m=h;j=l}ew(m+k|0,ma|0,n|0)|0;k=n+k|0;a[m+k>>0]=0;h=0;ga=274}while(0);if((ga|0)==274)ga=0;Wa[c[D+16>>2]&127](C)|0}E=E+1|0;if(!(E>>>0>>0&(h|0)==0))break n;else s=j}if((ga|0)==195){Wa[c[D+16>>2]&127](c[sa>>2]|0)|0;c[sa>>2]=0;h=wa}}else m=0;while(0);j=ja+248|0;k=c[j>>2]|0;do if(k|0){l=c[k+20>>2]|0;gc(c[k+16>>2]|0)|0;if(l|0){if(c[l+480>>2]|0){Xd(l,k);break}Ba=k;if((c[l+304>>2]|0)>>>0<=Ba>>>0?(c[l+308>>2]|0)>>>0>Ba>>>0:0){Ba=l+300|0;c[k>>2]=c[Ba>>2];c[Ba>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{Ba=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[j>>2]=0;if(!h){if((yc(c[f>>2]|0,m,-1,1,90)|0)!=18)break;c[f+20>>2]=18;yc(c[f>>2]|0,31223,-1,1,0)|0;break}c[f+20>>2]=h;j=c[f>>2]|0;if(b[j+8>>1]&1){switch(h|0){case 516:{h=50738;break}case 100:{h=50760;break}case 101:{h=50782;break}default:{h=h&255;if(h>>>0<29?(520028155>>>h&1|0)!=0:0)h=c[22960+(h<<2)>>2]|0;else h=50724}}yc(j,h,-1,1,0)|0}if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{Ba=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);Ra=Aa;return}h=c[f>>2]|0;j=h+8|0;if(!(b[j>>1]&9216))b[j>>1]=1;else{Dg(h);h=c[f>>2]|0}c[f+20>>2]=7;h=c[h+32>>2]|0;j=h+81|0;if(a[j>>0]|0){Ra=Aa;return}if(a[h+82>>0]|0){Ra=Aa;return}a[j>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;Ba=h+272|0;c[Ba>>2]=(c[Ba>>2]|0)+1;h=c[h+236>>2]|0;if(!h){Ra=Aa;return}c[h+12>>2]=7;Ra=Aa;return}c[m>>2]=51022;h=Bb(55087,m)|0;c[f+20>>2]=1;yc(c[f>>2]|0,h,-1,1,-1)|0;if(!h){Ra=Aa;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);Ra=Aa;return}else{Ba=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);Ra=Aa;return}}function Ur(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;R=Ra;Ra=Ra+160|0;M=R+104|0;i=R+96|0;E=R;F=R+136|0;O=R+64|0;G=R+132|0;I=R+128|0;J=R+124|0;K=R+120|0;g=c[h>>2]|0;if((((b[g+8>>1]&-15393)<<16>>16==-32255?(a[g+11>>0]|0)==112:0)?(Bu(c[g>>2]|0,54938)|0)==0:0)?(j=c[g+16>>2]|0,j|0):0){if(ur(f,j)|0){Ra=R;return}P=c[j>>2]|0;C=P+36|0;h=c[c[C>>2]>>2]|0;D=j+16|0;g=c[D>>2]|0;do if(!g){if((yc(c[f>>2]|0,59952,0,1,0)|0)==18){c[f+20>>2]=18;yc(c[f>>2]|0,31223,-1,1,0)|0}}else{c[O>>2]=0;c[O+4>>2]=0;c[O+8>>2]=0;c[O+12>>2]=0;c[O+16>>2]=0;c[O+20>>2]=0;c[O+24>>2]=0;c[O+28>>2]=0;k=F+4|0;c[k>>2]=0;c[k+4>>2]=0;c[F>>2]=j;c[E>>2]=0;k=Zr(g,E,92,F)|0;B=c[F+8>>2]|0;a:do if(!k){A=pb(B*12|0,0)|0;H=O+24|0;c[H>>2]=A;if(A){z=j+32|0;A=c[z+4>>2]|0;x=O+16|0;c[x>>2]=c[z>>2];c[x+4>>2]=A;c[O>>2]=j;x=P+24|0;if((c[x>>2]|0)>0){y=O+4|0;z=O+8|0;A=j+12|0;t=j+20|0;u=h+20|0;v=(B|0)>0;w=P+40|0;s=h+16|0;r=0;h=0;j=0;n=0;b:while(1){c[G>>2]=0;c[I>>2]=0;c[J>>2]=0;c[K>>2]=0;c[y>>2]=r;c[z>>2]=0;l=c[D>>2]|0;c[E>>2]=0;Zr(l,E,94,O)|0;l=c[A>>2]|0;q=r;r=r+1|0;k=(l|0)==0;do if(k)g=29576;else{g=c[l+120>>2]|0;if(g|0?r>>>0<(e[l+144>>1]|0)>>>0:0){g=g+(r*40|0)|0;break}g=c[l>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576}while(0);i=b[g+8>>1]|0;if((i&514)==514?(a[g+10>>0]|0)==1:0)m=c[g+16>>2]|0;else if(!(i&1))m=Gg(g,1)|0;else m=0;if(!k){i=c[l>>2]|0;k=l+40|0;g=c[k>>2]|0;if((g|0)==3082|(a[i+81>>0]|0)!=0){og(i);g=7}else g=c[i+68>>2]&g;c[k>>2]=g}g=Lc(c[A>>2]|0,r)|0;if(!m){l=c[A>>2]|0;if(!l)g=1;else{g=c[l+120>>2]|0;do if(!g)Q=38;else{if(r>>>0>=(e[l+144>>1]|0)>>>0){Q=38;break}g=g+(r*40|0)|0;i=l}while(0);if((Q|0)==38){Q=0;g=c[l>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576;i=l}g=b[g+8>>1]&31;k=c[i>>2]|0;l=l+40|0;i=c[l>>2]|0;if((i|0)==3082|(a[k+81>>0]|0)!=0){og(k);i=7}else i=c[k+68>>2]&i;c[l>>2]=i}if(!(-1431655766>>>g&1)){k=7;g=H;Q=83;break a}else g=n}else{i=c[C>>2]|0;k=c[t>>2]|0;l=c[i>>2]|0;c[E>>2]=0;g=Za[c[l+12>>2]&127](i,m,g,E)|0;if(g|0){Q=47;break}c[c[E>>2]>>2]=i;if((c[l>>2]|0)>0?(N=Xa[c[l+24>>2]&255](c[E>>2]|0,k)|0,N|0):0){Q=46;break}p=c[E>>2]|0;g=$a[c[u>>2]&127](p,F,G,I,J,K)|0;i=n;c:while(1){d:while(1){switch(g|0){case 101:break c;case 0:break;default:{Q=79;break b}}do if(v){n=c[H>>2]|0;k=0;l=2147483647;m=0;while(1){g=n+(m*12|0)|0;if(!(c[g>>2]|0))o=k;else{S=(c[n+(m*12|0)+4>>2]|0)-(c[n+(m*12|0)+8>>2]|0)|0;T=(S|0)<(l|0);o=T?g:k;l=T?S:l}m=m+1|0;if((m|0)==(B|0))break;else k=o}if(!o){g=101;break}m=c[o>>2]|0;k=a[m>>0]|0;if((k&255)<2)c[o>>2]=0;else{n=o+4|0;g=k&255;do if(!(g&128))k=1;else{T=d[m+1>>0]|0;g=T<<7|k&127;if(!(T&128)){k=2;break}T=d[m+2>>0]|0;g=T<<14|g&16383;if(!(T&128)){k=3;break}T=d[m+3>>0]|0;g=T<<21|g&2097151;if(!(T&128)){k=4;break}g=(a[m+4>>0]&7)<<28|g&268435455;k=5}while(0);c[o>>2]=m+k;c[n>>2]=g+-2+(c[n>>2]|0)}if((c[K>>2]|0)>=(l|0))break d;do{g=$a[c[u>>2]&127](p,F,G,I,J,K)|0;k=(g|0)==0}while(k&(c[K>>2]|0)<(l|0));if(k)break d;if((g|0)!=101)break;g=(c[w>>2]|0)==0?267:101}else g=101;while(0)}T=(o-(c[H>>2]|0)|0)/12|0;m=c[I>>2]|0;l=(c[J>>2]|0)-m|0;c[M>>2]=q;c[M+4>>2]=T;c[M+8>>2]=m;c[M+12>>2]=l;Cb(64,E,55116,M)|0;l=Eu(E)|0;m=l+j|0;do if((m+1|0)<(i|0))Q=73;else{k=Sv(i|0,((i|0)<0)<<31>>31|0,100,0)|0;k=Sv(k|0,L()|0,l|0,((l|0)<0)<<31>>31|0)|0;g=L()|0;if(mb()|0){g=7;break}g=sb(h,k,g)|0;if(!g){g=7;break}h=g;i=k;Q=73}while(0);if((Q|0)==73){Q=0;ew(h+j|0,E|0,l|0)|0;a[h+m>>0]=0;g=0;j=m}}Wa[c[s>>2]&127](p)|0;g=i}if((r|0)>=(c[x>>2]|0)){k=0;g=H;Q=83;break a}else n=g}if((Q|0)==46){Wa[c[l+16>>2]&127](c[E>>2]|0)|0;c[E>>2]=0;g=N;Q=47}else if((Q|0)==79)Wa[c[s>>2]&127](p)|0;k=g;g=H;Q=83}else{k=0;g=H;h=0;j=0;Q=83}}else{k=7;l=0;j=0}}else{g=O+24|0;h=0;j=0;Q=83}while(0);do if((Q|0)==83){g=c[g>>2]|0;if(g)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);l=h;break}else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);l=h;break}else l=h}while(0);g=P+248|0;h=c[g>>2]|0;do if(h|0){i=c[h+20>>2]|0;gc(c[h+16>>2]|0)|0;if(i|0){if(c[i+480>>2]|0){Xd(i,h);break}T=h;if((c[i+304>>2]|0)>>>0<=T>>>0?(c[i+308>>2]|0)>>>0>T>>>0:0){T=i+300|0;c[h>>2]=c[T>>2];c[T>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{T=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);c[g>>2]=0;if(!k){if((yc(c[f>>2]|0,l,j+-1|0,1,90)|0)!=18)break;c[f+20>>2]=18;yc(c[f>>2]|0,31223,-1,1,0)|0;break}c[f+20>>2]=k;h=c[f>>2]|0;if(b[h+8>>1]&1){switch(k|0){case 516:{g=50738;break}case 100:{g=50760;break}case 101:{g=50782;break}default:{g=k&255;if(g>>>0<29?(520028155>>>g&1|0)!=0:0)g=c[22960+(g<<2)>>2]|0;else g=50724}}yc(h,g,-1,1,0)|0}if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{T=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);Ra=R;return}c[i>>2]=51030;g=Bb(55087,i)|0;c[f+20>>2]=1;yc(c[f>>2]|0,g,-1,1,-1)|0;if(!g){Ra=R;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);Ra=R;return}else{T=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);Ra=R;return}}function Vr(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=Ra;Ra=Ra+16|0;g=i;e=c[f>>2]|0;if((((b[e+8>>1]&-15393)<<16>>16==-32255?(a[e+11>>0]|0)==112:0)?(Bu(c[e>>2]|0,54938)|0)==0:0)?(h=c[e+16>>2]|0,h|0):0){g=c[h>>2]|0;f=g+12|0;e=nd(c[f>>2]|0,55167,0,0,0)|0;a:do if(!e){e=Dr(g,1)|0;switch(e|0){case 0:case 101:{h=nd(c[f>>2]|0,55182,0,0,0)|0;e=(h|0)==0?e:h;break a}default:{nd(c[f>>2]|0,55195,0,0,0)|0;nd(c[f>>2]|0,55182,0,0,0)|0;break a}}}while(0);f=g+248|0;g=c[f>>2]|0;do if(g|0){h=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);break}j=g;if((c[h+304>>2]|0)>>>0<=j>>>0?(c[h+308>>2]|0)>>>0>j>>>0:0){j=h+300|0;c[g>>2]=c[j>>2];c[j>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[f>>2]=0;switch(e|0){case 0:{if((yc(c[d>>2]|0,55129,-1,1,0)|0)!=18){Ra=i;return}c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;Ra=i;return}case 101:{if((yc(c[d>>2]|0,55145,-1,1,0)|0)!=18){Ra=i;return}c[d+20>>2]=18;yc(c[d>>2]|0,31223,-1,1,0)|0;Ra=i;return}default:{c[d+20>>2]=(e|0)==0?-1:e;f=c[d>>2]|0;if(!(b[f+8>>1]&1)){Ra=i;return}switch(e|0){case 516:{e=50738;break}case 100:{e=50760;break}default:{e=e&255;if(e>>>0<29?(520028155>>>e&1|0)!=0:0)e=c[22960+(e<<2)>>2]|0;else e=50724}}yc(f,e,-1,1,0)|0;Ra=i;return}}}c[g>>2]=37598;e=Bb(55087,g)|0;c[d+20>>2]=1;yc(c[d>>2]|0,e,-1,1,-1)|0;if(!e){Ra=i;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);Ra=i;return}else{j=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);Ra=i;return}}function Wr(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;$=Ra;Ra=Ra+80|0;X=$+48|0;o=$+40|0;i=$+32|0;Y=$+76|0;U=$+64|0;V=$+60|0;Z=$+56|0;W=$;h=c[g>>2]|0;if((((b[h+8>>1]&-15393)<<16>>16==-32255?(a[h+11>>0]|0)==112:0)?(Bu(c[h>>2]|0,54938)|0)==0:0)?(T=c[h+16>>2]|0,T|0):0){do if((f|0)>1?(j=c[g+4>>2]|0,(j|0)!=0):0){f=b[j+8>>1]|0;if((f&514)==514?(a[j+10>>0]|0)==1:0){f=c[j+16>>2]|0;break}if(!(f&1))f=Gg(j,1)|0;else f=0}else f=0;while(0);_=c[T>>2]|0;O=(f|0)==0?55212:f;P=T+16|0;f=c[P>>2]|0;if(!f){if((yc(c[e>>2]|0,59952,0,0,0)|0)!=18){Ra=$;return}c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0;Ra=$;return}Q=W+8|0;c[Q>>2]=0;c[Q+4>>2]=0;c[Q+8>>2]=0;c[Q+12>>2]=0;c[Q+16>>2]=0;c[Q+20>>2]=0;c[W>>2]=T;R=W+4|0;c[R>>2]=c[_+24>>2];S=T+92|0;g=c[S>>2]|0;if(g)if(!(Bu(c[g+12>>2]|0,O)|0)){j=0;u=47}else{a[g>>0]=0;do if((a[g+1>>0]|0)==0?(a[g+2>>0]|0)==0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{N=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-N;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[S>>2]=0;f=c[P>>2]|0;u=27}else u=27;a:do if((u|0)==27){c[U>>2]=0;c[Y>>2]=0;Zr(f,Y,95,U)|0;g=c[U>>2]|0;c[T+24>>2]=g;c[Q>>2]=g;f=a[O>>0]|0;b:do if(!(f<<24>>24))f=0;else{j=_+232|0;k=_+234|0;l=c[R>>2]|0;m=G(l,g)|0;n=m*3|0;i=G((l+31|0)/32|0,g)|0;h=0;g=0;c:while(1){c[Y>>2]=0;switch(f<<24>>24){case 98:case 121:case 120:case 115:case 99:case 112:break;case 110:{if(!(a[j>>0]|0)){f=110;break c}break}case 97:{if(!(a[j>>0]|0)){f=97;break c}break}case 108:{if(!(a[k>>0]|0)){f=108;break c}break}default:break c}switch(f<<24>>24|0){case 99:case 112:case 110:{f=1;break}case 115:case 108:case 97:{f=l;break}case 121:{f=m;break}case 98:{f=i;break}default:f=n}g=f+g|0;h=h+1|0;f=a[O+h>>0]|0;if(!(f<<24>>24)){f=g;break b}}c[o>>2]=f<<24>>24;Wp(Y,55216,o);f=c[Y>>2]|0;c[e+20>>2]=1;yc(c[e>>2]|0,f,-1,1,-1)|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);break a}while(0);g=cw(f|0,0,3)|0;i=L()|0;g=g|4;h=Eu(O)|0;N=Sv(h|0,0,21,0)|0;i=Sv(N|0,L()|0,g|0,i|0)|0;i=pb(i,L()|0)|0;if(!i){c[S>>2]=0;c[T+88>>2]=1;i=0;f=7;h=0;u=303;break}else{j=g+20|0;gw(i|0,0,j|0)|0;u=i+16|0;c[u>>2]=20;g=f+1|0;c[u+(g<<2)>>2]=(g<<2)+20;c[i+4>>2]=f;j=i+j|0;c[i+12>>2]=j;ew(j|0,O|0,h+1|0)|0;a[i>>0]=1;c[S>>2]=i;c[T+88>>2]=1;j=1;g=i;u=47;break}}while(0);d:do if((u|0)==47){f=g+1|0;do if(a[f>>0]|0){f=g+2|0;if(!(a[f>>0]|0)){a[f>>0]=1;N=g+16+((c[g+4>>2]|0)+2<<2)|0;i=98;break}f=g+4|0;h=pb(c[f>>2]<<2,0)|0;if(!h){i=0;f=7;h=0;u=303;break d}if(!(c[g+8>>2]|0)){N=h;i=90}else{ew(h|0,g+20|0,c[f>>2]<<2|0)|0;N=h;i=90}}else{a[f>>0]=1;N=g+20|0;i=98}while(0);h=N;F=W+28|0;c[F>>2]=h;H=T+24|0;c[Q>>2]=c[H>>2];c[V>>2]=0;I=c[T>>2]|0;c[Z>>2]=0;J=W+24|0;K=U+4|0;M=(j|0)==0;x=T+32|0;y=I+140|0;z=U+4|0;A=I+16|0;B=I+20|0;C=T+28|0;D=I+12|0;E=W+16|0;w=0;g=N;while(1){v=O+w|0;f=a[v>>0]|0;if(!(f<<24>>24)){f=0;break}a[J>>0]=f;e:do switch(f<<24>>24|0){case 112:{if(M)f=0;else{c[g>>2]=c[Q>>2];f=0}break}case 99:{if(M)f=0;else{c[g>>2]=c[R>>2];f=0}break}case 110:{if(M)f=0;else{f=c[Z>>2]|0;if(!f){f=lr(I,Z)|0;if(!f){f=c[Z>>2]|0;if(!f){k=mc(29576)|0;u=74}else u=65}else j=0}else u=65;if((u|0)==65){g=c[f+120>>2]|0;if((g|0)!=0?(b[f+144>>1]|0)!=0:0)j=f;else{g=c[f>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576;j=f}k=mc(g)|0;g=c[j>>2]|0;j=f+40|0;f=c[j>>2]|0;if((f|0)==3082|(a[g+81>>0]|0)!=0){og(g);f=7}else f=c[g+68>>2]&f;c[j>>2]=f;u=74}if((u|0)==74){u=0;f=a[k>>0]|0;g=f&255;do if(!(g&128)){f=f&255;g=0}else{t=d[k+1>>0]|0;f=t<<7|g&127;if(!(t&128)){g=0;break}t=d[k+2>>0]|0;f=t<<14|f&16383;if(!(t&128)){g=0;break}t=d[k+3>>0]|0;f=t<<21|f&2097151;if(!(t&128)){g=0;break}l=28;j=k+4|0;f=f&268435455;g=0;while(1){t=d[j>>0]|0;s=cw(t&127|0,0,l|0)|0;f=Sv(s|0,L()|0,f|0,g|0)|0;g=L()|0;l=l+7|0;if(!(l>>>0<64&((t&128|0)!=0|0!=0)))break;else j=j+1|0}}while(0);j=f;f=(f|0)==0&(g|0)==0?267:0}c[V>>2]=f;c[c[F>>2]>>2]=j}break}case 97:{if(M)f=0;else{f=c[Z>>2]|0;if(!f){f=lr(I,Z)|0;if(!f){f=c[Z>>2]|0;if(!f){l=mc(29576)|0;u=99}else u=90}}else u=90;if((u|0)==90){g=c[f+120>>2]|0;if((g|0)!=0?(b[f+144>>1]|0)!=0:0)j=f;else{g=c[f>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576;j=f}k=mc(g)|0;g=c[j>>2]|0;j=f+40|0;f=c[j>>2]|0;if((f|0)==3082|(a[g+81>>0]|0)!=0){og(g);f=7}else f=c[g+68>>2]&f;c[j>>2]=f;l=k;u=99}if((u|0)==99){u=0;g=a[l>>0]|0;f=g&255;do if(!(f&128)){j=1;f=g&255;g=0}else{t=d[l+1>>0]|0;f=t<<7|f&127;if(!(t&128)){j=2;g=0;break}t=d[l+2>>0]|0;f=t<<14|f&16383;if(!(t&128)){j=3;g=0;break}t=d[l+3>>0]|0;f=t<<21|f&2097151;if(!(t&128)){j=4;g=0;break}j=28;k=l+4|0;f=f&268435455;g=0;do{t=k;k=k+1|0;t=d[t>>0]|0;s=cw(t&127|0,0,j|0)|0;f=Sv(s|0,L()|0,f|0,g|0)|0;g=L()|0;j=j+7|0}while(j>>>0<64&((t&128|0)!=0|0!=0));j=k-l|0}while(0);if((f|0)==0&(g|0)==0)f=267;else{c[V>>2]=0;if((c[R>>2]|0)<=0){f=0;break e}o=bw(f|0,0,1)|0;p=L()|0;n=0;m=l+j|0;while(1){j=a[m>>0]|0;g=j&255;do if(!(g&128)){k=1;g=j&255}else{t=d[m+1>>0]|0;g=t<<7|g&127;if(!(t&128)){k=2;break}t=d[m+2>>0]|0;g=t<<14|g&16383;if(!(t&128)){k=3;break}t=d[m+3>>0]|0;g=t<<21|g&2097151;if(!(t&128)){k=4;break}k=28;l=m+4|0;g=g&268435455;j=0;do{t=l;l=l+1|0;t=d[t>>0]|0;s=cw(t&127|0,0,k|0)|0;g=Sv(s|0,L()|0,g|0,j|0)|0;j=L()|0;k=k+7|0}while(k>>>0<64&((t&128|0)!=0|0!=0));k=l-m|0}while(0);t=Sv(g|0,0,o|0,p|0)|0;t=_v(t|0,L()|0,f|0,0)|0;L()|0;c[(c[F>>2]|0)+(n<<2)>>2]=t;n=n+1|0;if((n|0)>=(c[R>>2]|0)){f=0;break e}else m=m+k|0}}}c[V>>2]=f}break}case 108:{l=x;k=c[l>>2]|0;l=c[l+4>>2]|0;u=c[y>>2]|0;c[Y>>2]=u;g=u;do if(!u){j=c[B>>2]|0;c[X>>2]=c[A>>2];c[X+4>>2]=j;j=Bb(52364,X)|0;if(!j){f=7;u=156;break}f=qd(c[D>>2]|0,j,-1,133,0,Y,0)|0;if(!(c[7324]|0))ab[c[29344>>2]&127](j);else{u=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j)}g=c[Y>>2]|0;c[y>>2]=g;if(!f)u=134;else u=156}else u=134;while(0);f:do if((u|0)==134){u=0;o=g;do if(!(Vc(o,1)|0)){f=c[o+100>>2]|0;j=f+8|0;if(!(b[j>>1]&9216)){t=f;c[t>>2]=k;c[t+4>>2]=l;b[j>>1]=4;break}else{Pg(f,k,l);break}}while(0);f=(g|0)==0;do if((Gc(o)|0)==100){if(!f){m=o+120|0;f=c[m>>2]|0;do if(!f)u=143;else{if(!(b[o+144>>1]|0)){u=143;break}j=f;f=o}while(0);if((u|0)==143){u=0;j=c[o>>2]|0;c[j+64>>2]=25;Ne(j,25);j=29576;f=o}l=b[j+8>>1]&15;j=c[f>>2]|0;n=o+40|0;k=c[n>>2]|0;if((k|0)==3082|(a[j+81>>0]|0)!=0){og(j);j=7}else j=c[j+68>>2]&k;c[n>>2]=j;if((l|16)<<16>>16!=16){u=150;break}c[V>>2]=0;f=c[m>>2]|0;do if(!f)u=160;else{if(!(b[o+144>>1]|0)){u=160;break}j=o}while(0);if((u|0)==160){u=0;f=c[o>>2]|0;c[f+64>>2]=25;Ne(f,25);f=29576;j=o}k=mc(f)|0;f=c[j>>2]|0;j=c[n>>2]|0;if((j|0)==3082|(a[f+81>>0]|0)!=0){og(f);f=7}else f=c[f+68>>2]&j;c[n>>2]=f;if((c[R>>2]|0)<=0){k=o;g=o;f=0;break f}m=k;n=0;while(1){f=d[m>>0]|0;do if(!(f&128))j=1;else{u=d[m+1>>0]|0;f=u<<7|f&127;if(!(u&128)){j=2;break}u=d[m+2>>0]|0;f=u<<14|f&16383;if(!(u&128)){j=3;break}u=d[m+3>>0]|0;f=u<<21|f&2097151;if(!(u&128)){j=4;break}k=28;l=m+4|0;f=f&268435455;j=0;do{u=l;l=l+1|0;u=d[u>>0]|0;t=cw(u&127|0,0,k|0)|0;f=Sv(t|0,L()|0,f|0,j|0)|0;j=L()|0;k=k+7|0}while(k>>>0<64&((u&128|0)!=0|0!=0));j=l-m|0}while(0);c[(c[F>>2]|0)+(n<<2)>>2]=f;n=n+1|0;if((n|0)>=(c[R>>2]|0)){j=o;f=0;u=174;break f}else m=m+j|0}}}else if(!f){f=o;u=150}while(0);do if((u|0)==150){f=c[f>>2]|0;u=o+136|0;t=c[u+4>>2]|0;if((t|0)>0|(t|0)==0&(c[u>>2]|0)>>>0>0)hc(f,o);g=kc(o)|0;c[o+20>>2]=770837923;c[o+36>>2]=-1;c[o+40>>2]=0;a[o+146>>0]=2;c[o+44>>2]=0;c[o+32>>2]=1;a[o+147>>0]=-1;c[o+48>>2]=0;u=o+64|0;c[u>>2]=0;c[u+4>>2]=0;if(!((g|0)==3082|(a[f+81>>0]|0)!=0)){f=c[f+68>>2]&g;if(!f)break;else{g=0;u=156;break f}}else{og(f);f=7;g=0;u=156;break f}}while(0);f=267;g=0;u=156}while(0);if((u|0)==156){c[V>>2]=f;j=g;u=174}if((u|0)==174){u=0;if(!g)break e;k=j;g=j}g=c[g>>2]|0;t=k+136|0;s=c[t+4>>2]|0;if((s|0)>0|(s|0)==0&(c[t>>2]|0)>>>0>0)hc(g,k);t=kc(k)|0;c[k+20>>2]=770837923;c[k+36>>2]=-1;c[k+40>>2]=0;a[k+146>>0]=2;c[k+44>>2]=0;c[k+32>>2]=1;a[k+147>>0]=-1;c[k+48>>2]=0;s=k+64|0;c[s>>2]=0;c[s+4>>2]=0;if((t|0)==3082|(a[g+81>>0]|0)!=0)og(g);break}case 115:{f=z;c[f>>2]=0;c[f+4>>2]=0;c[U>>2]=T;f=c[P>>2]|0;c[Y>>2]=0;f=Zr(f,Y,92,U)|0;c[V>>2]=f;if(!f){t=pb(c[H>>2]<<4,0)|0;do if(t){gw(t|0,0,c[H>>2]<<4|0)|0;f=c[P>>2]|0;c[Y>>2]=0;Zr(f,Y,96,t)|0;f=c[Q>>2]|0;if((f|0)>0){g=0;j=0;do{g=g-(c[(c[(c[t+(j<<4)>>2]|0)+20>>2]|0)+64>>2]|0)|0;c[t+(j<<4)+4>>2]=g;j=j+1|0}while((j|0)!=(f|0))}g:do if((c[R>>2]|0)>0){s=0;h:while(1){i:do if((f|0)>0){g=0;q=0;do{p=t+(q<<4)+8|0;f=_r(T,c[t+(q<<4)>>2]|0,s,p)|0;if(f|0)break g;m=c[p>>2]|0;if(m){n=c[t+(q<<4)+4>>2]|0;o=t+(q<<4)+12|0;c[o>>2]=n;j=a[m>>0]|0;f=j&255;do if(!(f&128)){k=1;l=0;f=j&255}else{r=d[m+1>>0]|0;f=r<<7|f&127;if(!(r&128)){k=2;l=0;break}r=d[m+2>>0]|0;f=r<<14|f&16383;if(!(r&128)){k=3;l=0;break}r=d[m+3>>0]|0;f=r<<21|f&2097151;if(!(r&128)){k=4;l=0;break}j=28;k=m+4|0;f=f&268435455;l=0;do{r=k;k=k+1|0;r=d[r>>0]|0;aa=cw(r&127|0,0,j|0)|0;f=Sv(aa|0,L()|0,f|0,l|0)|0;l=L()|0;j=j+7|0}while(j>>>0<64&((r&128|0)!=0|0!=0));k=k-m|0}while(0);if(l>>>0<0|(l|0)==0&f>>>0<2)break h;c[o>>2]=n+-2+f;c[p>>2]=m+k;g=g+1|0}q=q+1|0;r=c[Q>>2]|0}while((q|0)<(r|0));if((g|0)<=0){f=0;break}if((r|0)<=0){f=g;g=c[2]|0;while(1){k=a[g>>0]|0;j=k&255;do if(!(j&128)){l=1;m=0;j=k&255}else{aa=d[g+1>>0]|0;j=aa<<7|j&127;if(!(aa&128)){l=2;m=0;break}aa=d[g+2>>0]|0;j=aa<<14|j&16383;if(!(aa&128)){l=3;m=0;break}aa=d[g+3>>0]|0;j=aa<<21|j&2097151;if(!(aa&128)){l=4;m=0;break}k=28;l=g+4|0;j=j&268435455;m=0;do{aa=l;l=l+1|0;aa=d[aa>>0]|0;r=cw(aa&127|0,0,k|0)|0;j=Sv(r|0,L()|0,j|0,m|0)|0;m=L()|0;k=k+7|0}while(k>>>0<64&((aa&128|0)!=0|0!=0));l=l-g|0}while(0);if(m>>>0<0|(m|0)==0&j>>>0<2){c[2]=0;g=0;f=f+-1|0}else{g=g+l|0;c[3]=j+-2+(c[3]|0);c[2]=g}if((f|0)<=0){f=0;break i}}}f=0;do{l=0;k=0;m=0;do{j=t+(m<<4)|0;if(!(c[t+(m<<4)+8>>2]|0))l=0;else{if(!((k|0)!=0?(c[t+(m<<4)+12>>2]|0)>=(c[k+12>>2]|0):0))k=j;if((l|0)!=0?(c[t+(m<<4)+12>>2]|0)!=(c[j+-16+12>>2]|0):0)j=1;else j=l+1|0;l=j;f=(j|0)>(f|0)?j:f}m=m+1|0}while((m|0)!=(r|0));p=k+8|0;o=c[p>>2]|0;l=a[o>>0]|0;j=l&255;do if(!(j&128)){m=1;n=0;j=l&255}else{aa=d[o+1>>0]|0;j=aa<<7|j&127;if(!(aa&128)){m=2;n=0;break}aa=d[o+2>>0]|0;j=aa<<14|j&16383;if(!(aa&128)){m=3;n=0;break}aa=d[o+3>>0]|0;j=aa<<21|j&2097151;if(!(aa&128)){m=4;n=0;break}l=28;m=o+4|0;j=j&268435455;n=0;do{aa=m;m=m+1|0;aa=d[aa>>0]|0;q=cw(aa&127|0,0,l|0)|0;j=Sv(q|0,L()|0,j|0,n|0)|0;n=L()|0;l=l+7|0}while(l>>>0<64&((aa&128|0)!=0|0!=0));m=m-o|0}while(0);if(n>>>0<0|(n|0)==0&j>>>0<2){c[p>>2]=0;g=g+-1|0}else{aa=k+12|0;c[aa>>2]=j+-2+(c[aa>>2]|0);c[p>>2]=o+m}}while((g|0)>0)}else f=0;while(0);c[(c[F>>2]|0)+(s<<2)>>2]=f;f=s+1|0;if((f|0)>=(c[R>>2]|0)){f=0;break g}s=f;f=c[Q>>2]|0}c[p>>2]=0;f=267}else f=0;while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{aa=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}else f=7;while(0);c[V>>2]=f}break}case 98:{f=G(((c[R>>2]|0)+31|0)/32|0,c[Q>>2]|0)|0;u=258;break}case 121:{f=G(c[Q>>2]|0,c[R>>2]|0)|0;u=258;break}default:{m=c[P>>2]|0;f=K;c[f>>2]=0;c[f+4>>2]=0;c[U>>2]=T;c[Y>>2]=0;f=Zr(m,Y,92,U)|0;c[V>>2]=f;if(!f){if(!M){j:do if(c[C>>2]|0){f=c[Z>>2]|0;do if(!f){f=lr(I,Z)|0;if(f|0)break;f=c[Z>>2]|0;if(f|0){u=265;break}k=mc(29576)|0;u=274}else u=265;while(0);if((u|0)==265){u=0;g=c[f+120>>2]|0;do if(!g)u=268;else{if(!(b[f+144>>1]|0)){u=268;break}j=f}while(0);if((u|0)==268){g=c[f>>2]|0;c[g+64>>2]=25;Ne(g,25);g=29576;j=f}k=mc(g)|0;g=c[j>>2]|0;j=f+40|0;f=c[j>>2]|0;if((f|0)==3082|(a[g+81>>0]|0)!=0){og(g);f=7}else f=c[g+68>>2]&f;c[j>>2]=f;u=274}do if((u|0)==274){u=0;f=a[k>>0]|0;g=f&255;do if(!(g&128)){f=f&255;g=0}else{aa=d[k+1>>0]|0;f=aa<<7|g&127;if(!(aa&128)){g=0;break}aa=d[k+2>>0]|0;f=aa<<14|f&16383;if(!(aa&128)){g=0;break}aa=d[k+3>>0]|0;f=aa<<21|f&2097151;if(!(aa&128)){g=0;break}l=28;j=k+4|0;f=f&268435455;g=0;while(1){aa=d[j>>0]|0;t=cw(aa&127|0,0,l|0)|0;f=Sv(t|0,L()|0,f|0,g|0)|0;g=L()|0;l=l+7|0;if(!(l>>>0<64&((aa&128|0)!=0|0!=0)))break;else j=j+1|0}}while(0);if((f|0)==0&(g|0)==0){f=267;break}aa=E;c[aa>>2]=f;c[aa+4>>2]=0;c[V>>2]=0;break j}while(0);c[V>>2]=f;break e}while(0);c[Y>>2]=0;f=Zr(m,Y,97,W)|0;c[V>>2]=f;rr(T,V)|0;f=c[V>>2]|0;if(f|0)break e}c[Y>>2]=0;Zr(m,Y,98,W)|0;f=0}}}while(0);if((u|0)==258){u=0;gw(g|0,0,f<<2|0)|0;f=ds(c[P>>2]|0,W)|0;c[V>>2]=f}switch(a[v>>0]|0){case 99:case 112:case 110:{g=1;break}case 115:case 108:case 97:{g=c[R>>2]|0;break}case 121:{g=G(c[Q>>2]|0,c[R>>2]|0)|0;break}case 98:{g=G(((c[R>>2]|0)+31|0)/32|0,c[Q>>2]|0)|0;break}default:g=G((c[R>>2]|0)*3|0,c[Q>>2]|0)|0}g=(c[F>>2]|0)+(g<<2)|0;c[F>>2]=g;if(f|0)break;else w=w+1|0}g=c[Z>>2]|0;if(g|0){j=c[g>>2]|0;aa=g+136|0;Z=c[aa+4>>2]|0;if((Z|0)>0|(Z|0)==0&(c[aa>>2]|0)>>>0>0)hc(j,g);aa=kc(g)|0;c[g+20>>2]=770837923;c[g+36>>2]=-1;c[g+40>>2]=0;a[g+146>>0]=2;c[g+44>>2]=0;c[g+32>>2]=1;a[g+147>>0]=-1;c[g+48>>2]=0;Z=g+64|0;c[Z>>2]=0;c[Z+4>>2]=0;if((aa|0)==3082|(a[j+81>>0]|0)!=0)og(j)}if(!M){Z=c[S>>2]|0;c[Z+8>>2]=1;aa=c[Z+4>>2]|0;ew(Z+16+(aa+2<<2)|0,Z+20|0,aa<<2|0)|0}if(!f){if((yc(c[e>>2]|0,N,c[(c[S>>2]|0)+4>>2]<<2,0,i)|0)==18){c[e+20>>2]=18;yc(c[e>>2]|0,31223,-1,1,0)|0}}else u=303}while(0);if((u|0)==303){c[e+20>>2]=f;g=c[e>>2]|0;if(b[g+8>>1]&1){switch(f|0){case 516:{f=50738;break}case 100:{f=50760;break}case 101:{f=50782;break}default:{f=f&255;if(f>>>0<29?(520028155>>>f&1|0)!=0:0)f=c[22960+(f<<2)>>2]|0;else f=50724}}yc(g,f,-1,1,0)|0}if(i|0)ab[i&127](h)}f=_+248|0;g=c[f>>2]|0;do if(g|0){h=c[g+20>>2]|0;gc(c[g+16>>2]|0)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,g);break}aa=g;if((c[h+304>>2]|0)>>>0<=aa>>>0?(c[h+308>>2]|0)>>>0>aa>>>0:0){aa=h+300|0;c[g>>2]=c[aa>>2];c[aa>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{aa=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[f>>2]=0;Ra=$;return}c[i>>2]=51038;f=Bb(55087,i)|0;c[e+20>>2]=1;yc(c[e>>2]|0,f,-1,1,-1)|0;if(!f){Ra=$;return}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);Ra=$;return}else{aa=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-aa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);Ra=$;return}}function Xr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=Ra;Ra=Ra+16|0;i=k;j=c[f+16>>2]|0;c[j+(e*24|0)>>2]=c[(c[b+20>>2]|0)+64>>2];h=_r(c[f>>2]|0,b,c[f+4>>2]|0,i)|0;g=c[i>>2]|0;if(!g){j=h;Ra=k;return j|0}c[j+(e*24|0)+4>>2]=g;f=a[g>>0]|0;b=f&255;if(b&128){l=d[g+1>>0]|0;b=l<<7|f&127;if(l&128){l=d[g+2>>0]|0;b=l<<14|b&16383;if(l&128){l=d[g+3>>0]|0;b=l<<21|b&2097151;if(!(l&128))f=4;else{b=(a[g+4>>0]&7)<<28|b&268435455;f=5}}else f=3}else f=2}else f=1;g=g+f|0;c[i>>2]=g;f=b+-2|0;if((b|0)<2){l=267;Ra=k;return l|0}c[j+(e*24|0)+12>>2]=g;c[j+(e*24|0)+20>>2]=g;c[j+(e*24|0)+8>>2]=f;c[j+(e*24|0)+16>>2]=f;l=h;Ra=k;return l|0}function Yr(a,b,d){a=a|0;b=b|0;d=d|0;b=c[a+20>>2]|0;a=d+4|0;c[a>>2]=(c[a>>2]|0)+1;d=d+8|0;c[d>>2]=(c[d>>2]|0)+(c[b+64>>2]|0);return 0}function Zr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[a>>2]|0;a:do if((f|0)!=5){g=a;while(1){a=Zr(c[g+12>>2]|0,b,d,e)|0;if(!((f|0)!=2&(a|0)==0))break;a=c[g+16>>2]|0;f=c[a>>2]|0;if((f|0)==5)break a;else g=a}return a|0}while(0);e=Ya[d&127](a,c[b>>2]|0,e)|0;c[b>>2]=(c[b>>2]|0)+1;return e|0}function _r(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;G=Ra;Ra=Ra+32|0;F=G+16|0;C=G;o=G+12|0;D=G+20|0;E=G+8|0;A=c[e+20>>2]|0;i=c[b>>2]|0;c[g>>2]=0;B=c[A+68>>2]|0;if(!((B|0)==(f|0)?1:(B|0)>=(c[i+24>>2]|0))){g=0;Ra=G;return g|0}n=e+24|0;m=c[n>>2]|0;n=c[n+4>>2]|0;h=C;c[h>>2]=m;c[h+4>>2]=n;h=c[A+28>>2]|0;c[F>>2]=h;B=b+32|0;z=B;if(!(((m|0)==(c[z>>2]|0)?(n|0)==(c[z+4>>2]|0):0)?(a[e+32>>0]|0)==0:0))x=4;a:do if((x|0)==4){c[o>>2]=0;y=a[i+235>>0]|0;z=y&255;h=c[e+8>>2]|0;b:do if(h){i=0;l=0;do{x=c[h>>2]|0;i=(x|0)==4?1:i;e=(x|0)==1?h:e;l=(a[h+32>>0]|0)==0?l:1;h=c[h+8>>2]|0}while((h|0)!=0);if(i){c:do if(c[A+40>>2]|0){k=e+32|0;i=a[k>>0]|0;$r(b,e,o);j=e+24|0;h=c[o>>2]|0;if(!h)if(!(i<<24>>24))do{if(a[k>>0]|0){h=0;break c}qr(b,e,o);x=j;h=c[o>>2]|0}while(((c[x>>2]|0)!=(m|0)?1:(c[x+4>>2]|0)!=(n|0))&(h|0)==0);else do{if(a[k>>0]|0){h=0;break c}qr(b,e,o);h=c[o>>2]|0}while(!(h|0))}else h=0;while(0);i=(h|0)==0;d:do if(!(l<<24>>24)){if(!i)break b;if(!e)x=81;else x=24}else{if(!i)break b;i=e+32|0;while(1){if(a[i>>0]|0){x=24;break d}qr(b,e,o);h=c[o>>2]|0;if(h|0)break b}}while(0);if((x|0)==24){u=b+52|0;w=y<<24>>24==0;v=w?1:-1;w=w?0:-1;h=1;do{a[D>>0]=0;if((c[e>>2]|0)==1)i=c[e+16>>2]|0;else i=e;r=c[i+20>>2]|0;s=r+48|0;j=c[s>>2]|0;c[F>>2]=j;t=r+56|0;m=t;i=c[m>>2]|0;m=c[m+4>>2]|0;b=C;c[b>>2]=i;c[b+4>>2]=m;b=r+4|0;q=c[b>>2]|0;k=(q|0)!=0;l=j;e:do if((a[u>>0]|0)==y<<24>>24){if(k)k=((c[r>>2]|0)+q|0)>>>0<=l>>>0;else k=1;n=k&1;a[D>>0]=n;p=n;b=l;while(1){f:do if(!b){if(p<<24>>24){h=m;x=76;break e}n=c[r>>2]|0;l=n;i=a[n>>0]|0;j=i&255;do if(!(j&128)){i=i&255;j=C;c[j>>2]=i;c[j+4>>2]=0;j=1;m=0}else{p=d[n+1>>0]|0;i=p<<7|j&127;if(!(p&128)){j=C;c[j>>2]=i;c[j+4>>2]=0;j=2;m=0;break}p=d[n+2>>0]|0;i=p<<14|i&16383;if(!(p&128)){j=C;c[j>>2]=i;c[j+4>>2]=0;j=3;m=0;break}p=d[n+3>>0]|0;i=p<<21|i&2097151;if(!(p&128)){j=C;c[j>>2]=i;c[j+4>>2]=0;j=4;m=0;break}j=28;k=n+4|0;i=i&268435455;m=0;do{p=k;k=k+1|0;p=d[p>>0]|0;o=cw(p&127|0,0,j|0)|0;i=Sv(o|0,L()|0,i|0,m|0)|0;m=L()|0;j=j+7|0}while(j>>>0<64&((p&128|0)!=0|0!=0));j=C;c[j>>2]=i;c[j+4>>2]=m;j=k-l|0}while(0);k=0;j=n+j|0;n=0}else{k=B;l=c[k>>2]|0;k=c[k+4>>2]|0;o=Tv(i|0,m|0,l|0,k|0)|0;Yv(o|0,L()|0,v|0,w|0)|0;if(!(n<<24>>24==0&(L()|0)<0)){x=77;break e}n=c[r>>2]|0;l=b;j=0;while(1){k=a[l>>0]|0;l=l+1|0;if(!(j<<24>>24|k))break;else j=k&128}j=l;k=n+q|0;do if(l>>>0>>0){while(1){n=a[l>>0]|0;if(n<<24>>24)break;j=l+1|0;if(j>>>0>>0)l=j;else{x=52;break}}if((x|0)==52){x=0;break}k=n&255;do if(!(k&128)){b=1;k=n&255;j=0}else{o=d[l+1>>0]|0;k=o<<7|k&127;if(!(o&128)){b=2;j=0;break}o=d[l+2>>0]|0;k=o<<14|k&16383;if(!(o&128)){b=3;j=0;break}o=d[l+3>>0]|0;k=o<<21|k&2097151;if(!(o&128)){b=4;j=0;break}n=28;b=l+4|0;k=k&268435455;o=0;do{H=b;b=b+1|0;H=d[H>>0]|0;I=cw(H&127|0,0,n|0)|0;k=Sv(I|0,L()|0,k|0,o|0)|0;o=L()|0;n=n+7|0}while(n>>>0<64&((H&128|0)!=0|0!=0));b=b-j|0;j=o}while(0);k=Yv(k|0,j|0,v|0,w|0)|0;i=Sv(i|0,m|0,k|0,L()|0)|0;m=L()|0;k=C;c[k>>2]=i;c[k+4>>2]=m;k=p;j=l+b|0;n=0;break f}while(0);a[D>>0]=1;k=1;n=1}while(0);c[F>>2]=j;p=k;b=j}}else{if(k)if(!j)i=0;else i=(c[r>>2]|0)>>>0>=l>>>0;else i=1;a[D>>0]=i&1;i=l;while(1){if(!i){if(a[D>>0]|0)break}else{m=C;i=c[m>>2]|0;m=c[m+4>>2]|0;k=B;l=c[k>>2]|0;k=c[k+4>>2]|0;I=Tv(i|0,m|0,l|0,k|0)|0;I=Yv(I|0,L()|0,v|0,w|0)|0;H=L()|0;n=a[D>>0]|0;if(!(n<<24>>24==0&((H|0)>0|(H|0)==0&I>>>0>0))){x=77;break e}}kq(z,c[r>>2]|0,c[b>>2]|0,F,C,E,D);j=c[F>>2]|0;i=j}h=C;i=c[h>>2]|0;h=c[h+4>>2]|0;x=76}while(0);if((x|0)==76){c[s>>2]=j;I=t;c[I>>2]=i;c[I+4>>2]=h;x=78}else if((x|0)==77){x=0;c[s>>2]=j;I=t;c[I>>2]=i;c[I+4>>2]=m;if(!(n<<24>>24==0&((i|0)==(l|0)&(m|0)==(k|0))))x=78}if((x|0)==78){x=0;h=0}e=c[e+12>>2]|0}while((e|0)!=0);if(!h)h=0;else x=81}if((x|0)==81)h=c[A+48>>2]|0;c[F>>2]=h;break a}else h=0}else h=0;while(0);I=h;Ra=G;return I|0}while(0);if(!h){I=0;Ra=G;return I|0}if((a[h>>0]|0)==1){j=h+1|0;c[F>>2]=j;i=a[j>>0]|0;e=i&255;if(e&128){I=d[h+2>>0]|0;i=I<<7|i&127;if(I&128){I=d[h+3>>0]|0;i=I<<14|i&16383;if(I&128){I=d[h+4>>0]|0;i=I<<21|i&2097151;if(!(I&128)){h=i;i=4}else{h=(a[h+5>>0]&7)<<28|i&268435455;i=5}}else{h=i;i=3}}else{h=i;i=2}}else{h=e;i=1}I=j+i|0;c[F>>2]=I;i=h;h=I}else i=0;e=a[h>>0]|0;g:do if((i|0)<(f|0)){while(1){i=e<<24>>24;if(i&254)do{h=h+1|0;I=i;i=a[h>>0]|0}while((i&254|I&128|0)!=0);c[F>>2]=h;if(!(a[h>>0]|0)){h=0;break}j=h+1|0;c[F>>2]=j;e=a[j>>0]|0;i=e&255;if(i&128){I=d[h+2>>0]|0;i=I<<7|e&127;if(I&128){I=d[h+3>>0]|0;i=I<<14|i&16383;if(I&128){I=d[h+4>>0]|0;i=I<<21|i&2097151;if(!(I&128))h=4;else{i=(a[h+5>>0]&7)<<28|i&268435455;h=5}}else h=3}else h=2}else h=1;h=j+h|0;c[F>>2]=h;e=a[h>>0]|0;if((i|0)>=(f|0))break g}Ra=G;return h|0}while(0);if(!(e<<24>>24)){c[F>>2]=0;h=0}c[g>>2]=(i|0)==(f|0)?h:0;I=0;Ra=G;return I|0}function $r(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=Ra;Ra=Ra+16|0;m=p+4|0;n=p;if(!d){Ra=p;return}if(c[e>>2]|0){Ra=p;return}o=c[d+20>>2]|0;if(o|0){g=o+24|0;f=o+28|0;do if(c[g>>2]|0?(h=c[f>>2]|0,h|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{l=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[f>>2]=0;c[o+32>>2]=0;c[g>>2]=0;l=o+40|0;if(c[l>>2]|0){k=o+64|0;j=c[k>>2]|0;if((j|0)>0){h=0;do{f=c[o+72+(h*24|0)+20>>2]|0;if(f|0?(c[f+8>>2]=0,c[f+28>>2]=1,i=c[f+4>>2]|0,(i|0)>0):0){g=c[f>>2]|0;f=0;do{q=g+(f<<2)|0;c[(c[q>>2]|0)+80>>2]=0;q=c[q>>2]|0;c[q+84>>2]=0;q=q+88|0;c[q>>2]=0;c[q+4>>2]=0;f=f+1|0}while((f|0)!=(i|0))}h=h+1|0}while((h|0)<(j|0))}h=c[b>>2]|0;i=o+68|0;a:do if((j|0)>0){g=0;while(1){if(c[o+72+(g*24|0)+20>>2]|0){c[m>>2]=0;c[n>>2]=0;f=jr(h,o+72+(g*24|0)|0,c[i>>2]|0,m,n)|0;if(f|0)break;f=kr(h,o,g,c[n>>2]|0,c[m>>2]|0)|0;if(f|0)break a}g=g+1|0;if((g|0)>=(c[k>>2]|0)){f=0;break a}}}else f=0;while(0);c[l>>2]=0;c[e>>2]=f}c[o+8>>2]=0;q=o+16|0;c[q>>2]=0;c[q+4>>2]=0;c[o+48>>2]=0}q=d+24|0;c[q>>2]=0;c[q+4>>2]=0;a[d+32>>0]=0;a[d+33>>0]=0;$r(b,c[d+12>>2]|0,e);$r(b,c[d+16>>2]|0,e);Ra=p;return}function as(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+16|0;h=n;m=_r(c[f>>2]|0,b,c[f+4>>2]|0,h)|0;l=c[(c[b+20>>2]|0)+64>>2]|0;g=c[h>>2]|0;if(!g){i=0;j=0}else{b=a[g>>0]|0;e=b&255;if(e&128){k=d[g+1>>0]|0;e=k<<7|b&127;if(k&128){k=d[g+2>>0]|0;e=k<<14|e&16383;if(k&128){k=d[g+3>>0]|0;e=k<<21|e&2097151;if(!(k&128))b=4;else{e=(a[g+4>>0]&7)<<28|e&268435455;b=5}}else b=3}else b=2}else b=1;j=g+b|0;c[h>>2]=j;i=e+-2|0}if((l|0)<=0){Ra=n;return m|0}k=c[f+24>>2]|0;g=f+8|0;h=l+-1|0;b=c[g>>2]|0;e=0;f=b;while(1){c[k+(f*12|0)+8>>2]=h-e;c[k+(f*12|0)>>2]=j;c[k+(f*12|0)+4>>2]=i;e=e+1|0;if((e|0)==(l|0))break;else f=f+1|0}c[g>>2]=b+l;Ra=n;return m|0}function bs(a,b,d){a=a|0;b=b|0;d=d|0;c[d>>2]=(c[d>>2]|0)+1;c[a+36>>2]=b;return 0}function cs(b){b=b|0;var d=0;d=b+(0-(c[b+-4>>2]|0))|0;if((d+16+4|0)==(b|0))a[d+1>>0]=0;else a[d+2>>0]=0;if(a[d>>0]|0)return;if(a[d+1>>0]|0)return;if(a[d+2>>0]|0)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](d);return}else{b=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);return}}function ds(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(a[b+32>>0]|0){n=0;return n|0}while(1){m=b+24|0;h=c[e>>2]|0;n=h+32|0;if(!((c[m>>2]|0)==(c[n>>2]|0)?(c[m+4>>2]|0)==(c[n+4>>2]|0):0)){g=0;f=36;break}f=c[b+12>>2]|0;if(!f){f=7;break}f=ds(f,e)|0;if(f|0){g=f;f=36;break}f=c[b+16>>2]|0;if(!(a[f+32>>0]|0))b=f;else{g=0;f=36;break}}if((f|0)==7){m=c[b+20>>2]|0;f=c[m+28>>2]|0;i=(a[e+24>>0]|0)==121;n=e+4|0;l=c[n>>2]|0;l=G(i?l:(l+31|0)/32|0,c[b+36>>2]|0)|0;m=m+68|0;k=(c[h>>2]|0)+24|0;j=e+28|0;if(i){i=0;while(1){b=a[f>>0]|0;g=b<<24>>24;if(!(g&254)){h=0;e=f}else{b=0;while(1){f=f+1|0;e=g&128;h=(e>>>7^1)+b|0;b=a[f>>0]|0;g=b<<24>>24;if(!(g&254|e)){e=f;break}else b=h}}g=c[m>>2]|0;if((g|0)==(i|0)?1:(g|0)>=(c[k>>2]|0)){c[(c[j>>2]|0)+(i+l<<2)>>2]=h;b=a[e>>0]|0}if(b<<24>>24!=1){g=0;f=36;break}g=e+1|0;f=a[g>>0]|0;b=f&255;if(b&128){i=d[e+2>>0]|0;b=i<<7|f&127;if(i&128){i=d[e+3>>0]|0;b=i<<14|b&16383;if(i&128){i=d[e+4>>0]|0;b=i<<21|b&2097151;if(!(i&128))f=4;else{b=(a[e+5>>0]&7)<<28|b&268435455;f=5}}else f=3}else f=2}else f=1;if((b|0)>=(c[n>>2]|0)){g=267;f=36;break}i=b;f=g+f|0}if((f|0)==36)return g|0}else{i=0;while(1){b=a[f>>0]|0;g=b<<24>>24;if(!(g&254)){h=0;e=f}else{b=0;while(1){f=f+1|0;e=g&128;h=(e>>>7^1)+b|0;b=a[f>>0]|0;g=b<<24>>24;if(!(g&254|e)){e=f;break}else b=h}}g=c[m>>2]|0;if(!((h|0)==0|((g|0)!=(i|0)?(g|0)<(c[k>>2]|0):0))){b=(c[j>>2]|0)+(((i+1|0)/32|0)+l<<2)|0;c[b>>2]=c[b>>2]|1<<(i&31);b=a[e>>0]|0}if(b<<24>>24!=1){g=0;f=36;break}g=e+1|0;f=a[g>>0]|0;b=f&255;if(b&128){i=d[e+2>>0]|0;b=i<<7|f&127;if(i&128){i=d[e+3>>0]|0;b=i<<14|b&16383;if(i&128){i=d[e+4>>0]|0;b=i<<21|b&2097151;if(!(i&128))f=4;else{b=(a[e+5>>0]&7)<<28|b&268435455;f=5}}else f=3}else f=2}else f=1;if((b|0)>=(c[n>>2]|0)){g=267;f=36;break}i=b;f=g+f|0}if((f|0)==36)return g|0}}else if((f|0)==36)return g|0;return 0}function es(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;w=Ra;Ra=Ra+16|0;s=w;u=c[e>>2]|0;v=(c[e+28>>2]|0)+((G(d*3|0,c[e+4>>2]|0)|0)<<2)|0;f=c[u>>2]|0;if(a[b+34>>0]|0?(c[c[b+8>>2]>>2]|0)!=1:0){b=f+24|0;if((c[b>>2]|0)<=0){v=0;Ra=w;return v|0}e=c[u+64>>2]|0;d=0;do{u=d*3|0;c[v+(u+1<<2)>>2]=e;c[v+(u+2<<2)>>2]=e;d=d+1|0}while((d|0)<(c[b>>2]|0));d=0;Ra=w;return d|0}c[s>>2]=0;t=b+40|0;if(!(c[t>>2]|0)){o=u+32|0;q=o;p=c[q>>2]|0;q=c[q+4>>2]|0;e=c[b+8>>2]|0;a:do if(!e)e=b;else{d=b;while(1){if((c[e>>2]|0)!=1){e=d;break a}d=c[e+8>>2]|0;if(!d)break;else{n=e;e=d;d=n}}}while(0);l=e+24|0;n=l;m=c[n>>2]|0;n=c[n+4>>2]|0;j=e+32|0;k=a[j>>0]|0;b=f+24|0;d=e;do{if((c[d>>2]|0)==5)g=d;else g=c[d+16>>2]|0;f=pb((c[b>>2]|0)*12|0,0)|0;c[g+40>>2]=f;if(!f){h=16;break}gw(f|0,0,(c[b>>2]|0)*12|0)|0;d=c[d+12>>2]|0}while((d|0)!=0);if((h|0)==16){v=7;Ra=w;return v|0}$r(u,e,s);i=u+6|0;d=c[s>>2]|0;b:do if((a[i>>0]|0)==0&(d|0)==0){f=u+7|0;g=u+12|0;h=u+88|0;while(1){if((a[f>>0]|0)==0?(r=c[g>>2]|0,r|0):0){d=c[r>>2]|0;x=r+136|0;y=c[x+4>>2]|0;if((y|0)>0|(y|0)==0&(c[x>>2]|0)>>>0>0)hc(d,r);y=kc(r)|0;c[r+20>>2]=770837923;c[r+36>>2]=-1;c[r+40>>2]=0;a[r+146>>0]=2;c[r+44>>2]=0;c[r+32>>2]=1;a[r+147>>0]=-1;c[r+48>>2]=0;x=r+64|0;c[x>>2]=0;c[x+4>>2]=0;if((y|0)==3082|(a[d+81>>0]|0)!=0)og(d)}qr(u,e,s);y=a[j>>0]|0;a[i>>0]=y;a[f>>0]=1;c[h>>2]=1;z=l;d=c[z+4>>2]|0;x=o;c[x>>2]=c[z>>2];c[x+4>>2]=d;if(!((y<<24>>24==0?(c[e>>2]|0)==1:0)?(rr(u,s)|0)!=0:0)){d=c[s>>2]|0;if(d|0)break b;if(a[i>>0]|0){d=0;break b}hs(e,c[b>>2]|0);d=c[s>>2]|0;if(!((d|0)==0&(a[i>>0]|0)==0))break b}}}while(0);a[i>>0]=0;z=o;c[z>>2]=p;c[z+4>>2]=q;if(!(k<<24>>24)){$r(u,e,s);do{qr(u,e,s);z=l;d=c[s>>2]|0}while(((c[z>>2]|0)!=(m|0)?1:(c[z+4>>2]|0)!=(n|0))&(d|0)==0)}else a[j>>0]=k;if(d){z=d;Ra=w;return z|0}}else b=f+24|0;if((c[b>>2]|0)<=0){z=0;Ra=w;return z|0}e=c[t>>2]|0;d=0;do{z=d*3|0;y=z+1|0;c[v+(y<<2)>>2]=c[e+(y<<2)>>2];z=z+2|0;c[v+(z<<2)>>2]=c[e+(z<<2)>>2];d=d+1|0}while((d|0)<(c[b>>2]|0));d=0;Ra=w;return d|0}function fs(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=Ra;Ra=Ra+16|0;l=n;m=e+4|0;k=c[m>>2]|0;j=G(d*3|0,k)|0;if((k|0)<=0){m=0;Ra=n;return m|0}k=e+28|0;i=0;do{d=_r(c[e>>2]|0,b,i,l)|0;g=c[l>>2]|0;if(!g)f=0;else{h=a[g>>0]|0;if(!(h&254))f=0;else{f=0;do{g=g+1|0;o=h&128;f=(o>>>7^1)+f|0;h=a[g>>0]|0}while((h&254|o|0)!=0)}c[l>>2]=g}c[(c[k>>2]|0)+((i*3|0)+j<<2)>>2]=f;i=i+1|0}while((d|0)==0?(i|0)<(c[m>>2]|0):0);Ra=n;return d|0}function gs(a,b,d){a=a|0;b=b|0;d=d|0;c[d+(b<<4)>>2]=a;return 0}function hs(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!b)return;do{f=c[b+20>>2]|0;a:do if(f|0?(m=c[f+28>>2]|0,m|0):0){l=b+40|0;i=m;f=0;while(1){h=a[i>>0]|0;if((h&255)<2)g=0;else{g=0;j=0;while(1){g=g+((j|0)==0&1)|0;k=i+1|0;i=h&-128;h=a[k>>0]|0;if(!((h&-2|i)<<24>>24)){i=k;break}else{j=i&255;i=k}}}j=c[l>>2]|0;k=f*3|0;h=j+(k+1<<2)|0;c[h>>2]=(c[h>>2]|0)+g;k=j+(k+2<<2)|0;c[k>>2]=(c[k>>2]|0)+((g|0)!=0&1);if(!(a[i>>0]|0))break a;h=i+1|0;g=a[h>>0]|0;f=g&255;if(f&128){k=d[i+2>>0]|0;f=k<<7|g&127;if(k&128){k=d[i+3>>0]|0;f=k<<14|f&16383;if(k&128){k=d[i+4>>0]|0;f=k<<21|f&2097151;if(!(k&128))g=4;else{f=(a[i+5>>0]&7)<<28|f&268435455;g=5}}else g=3}else g=2}else g=1;if((f|0)<(e|0))i=h+g|0;else break}}while(0);hs(c[b+12>>2]|0,e);b=c[b+16>>2]|0}while((b|0)!=0);return}function is(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=Ra;Ra=Ra+16|0;x=z;y=z+4|0;c[y>>2]=0;b=td(b,55547)|0;if(b|0){y=b;Ra=z;return y|0}s=e+-3|0;r=f+12|0;a:do if(s){k=(e|0)>3;if(k){f=0;b=0;do{b=b+1+(Eu(c[r+(f<<2)>>2]|0)|0)|0;f=f+1|0}while((f|0)!=(s|0))}else b=0;q=pb(b+(s<<2)|0,0)|0;b=(q|0)==0;b:do if(b|k^1){if(b){f=7;j=0;b=0;m=44;break a}}else{n=q+(s<<2)|0;o=0;while(1){b=r+(o<<2)|0;p=Eu(c[b>>2]|0)|0;c[q+(o<<2)>>2]=n;p=p+1|0;ew(n|0,c[b>>2]|0,p|0)|0;b=a[n>>0]|0;switch(b<<24>>24){case 34:case 39:case 91:case 96:{m=b<<24>>24==91?93:b;f=a[n+1>>0]|0;c:do if(!(f<<24>>24))b=0;else{k=1;b=0;do{l=k+1|0;if(f<<24>>24==m<<24>>24){if((a[n+l>>0]|0)!=m<<24>>24)break c;a[n+b>>0]=m;k=k+2|0}else{a[n+b>>0]=f;k=l}b=b+1|0;f=a[n+k>>0]|0}while(f<<24>>24!=0)}while(0);a[n+b>>0]=0;break}default:{}}o=o+1|0;if((o|0)==(s|0))break b;else n=n+p|0}}while(0);if((e|0)<4){k=50983;l=q;b=q;m=21}else{k=c[q>>2]|0;l=q;b=q;m=21}}else{k=50983;l=0;b=0;m=21}while(0);d:do if((m|0)==21){f=(Eu(k)|0)+1|0;e:do if(((d|0?(t=d+16|0,c[t>>2]|0):0)?(u=Xa[(a[d>>0]<<24>>24==1?154:155)&255](k,f)|0,u=(c[d+12>>2]|0)+-1&u,v=c[t>>2]|0,v|0):0)?(j=c[v+(u<<3)>>2]|0,w=(a[d>>0]|0)==1?79:80,i=c[v+(u<<3)+4>>2]|0,(j|0)!=0&(i|0)!=0):0){while(1){j=j+-1|0;if(!(Za[w&127](c[i+12>>2]|0,c[i+16>>2]|0,k,f)|0))break;i=c[i>>2]|0;if(!((j|0)!=0&(i|0)!=0))break e}i=c[i+8>>2]|0;if(i|0){j=i;i=Ya[c[i+4>>2]&127]((e|0)>4?e+-4|0:0,l+4|0,y)|0;if(i|0){f=i;m=44;break d}if(mb()|0){f=7;m=44;break d}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](20)|0;if(!i){f=7;m=44;break d}}else{i=Wa[c[29356>>2]&127](20)|0;if((c[14985]|0)>>>0<20)c[14985]=20;k=59064;f=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&f>>>0>0){e=c[14978]|0;x=Tv(f|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&x>>>0<=e>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){f=7;m=44;break d}f=Wa[c[29352>>2]&127](i)|0;f=(c[14978]|0)+f|0;c[14978]=f;if(f>>>0>(c[14982]|0)>>>0)c[14982]=f;f=(c[14981]|0)+1|0;c[14981]=f;if(f>>>0>(c[14987]|0)>>>0)c[14987]=f};c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=j;c[i+16>>2]=c[y>>2];c[g>>2]=i;i=0;break d}}while(0);c[x>>2]=k;Wp(h,53600,x);f=1;j=0;m=44}while(0);if((m|0)==44){i=c[y>>2]|0;if(!i)i=f;else{Wa[c[j+8>>2]&127](i)|0;i=f}}if(!b){y=i;Ra=z;return y|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);y=i;Ra=z;return y|0}else{y=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);y=i;Ra=z;return y|0}return 0}function js(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[d>>2]|0;a:do if((e|0)>0){f=c[d+4>>2]|0;b=0;while(1){if((a[f+(b*12|0)+5>>0]|0?(c[f+(b*12|0)>>2]|0)==0:0)?(a[f+(b*12|0)+4>>0]|0)==2:0)break;b=b+1|0;if((b|0)>=(e|0))break a}c[d+20>>2]=1;f=c[d+16>>2]|0;c[f+(b<<3)>>2]=1;a[f+(b<<3)+4>>0]=1;g[d+40>>3]=1.0;return 0}while(0);c[d+20>>2]=0;return 0}function ks(a){a=a|0;var b=0;Wa[c[(c[a+12>>2]|0)+8>>2]&127](c[a+16>>2]|0)|0;if(!a)return 0;if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return 0}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return 0}return 0} -function Xf(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=Ra;Ra=Ra+16|0;o=u;t=c[e+20>>2]|0;s=t+16|0;f=a[s>>0]|0;if(f<<24>>24==2){r=c[t>>2]|0;f=c[t+40>>2]|0;if(f|0){e=f;Ra=u;return e|0}do if((c[t+216>>2]|0)==0?(l=t+5|0,(a[l>>0]|0)!=2):0){k=t+24|0;i=c[k>>2]|0;if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](512)|0;if(!f)q=16}else{f=Wa[c[29356>>2]&127](512)|0;if((c[14985]|0)>>>0<512)c[14985]=512;h=59064;g=c[h>>2]|0;h=c[h+4>>2]|0;if((h|0)>0|(h|0)==0&g>>>0>0){p=c[14978]|0;j=Tv(g|0,h|0,f|0,((f|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&j>>>0<=p>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(f){g=Wa[c[29352>>2]&127](f)|0;g=(c[14978]|0)+g|0;c[14978]=g;if(g>>>0>(c[14982]|0)>>>0)c[14982]=g;g=(c[14981]|0)+1|0;c[14981]=g;if(g>>>0>(c[14987]|0)>>>0)c[14987]=g}else q=16}if((q|0)==16){c[t+56>>2]=0;e=7;Ra=u;return e|0}gw(f+4|0,0,508)|0;c[f>>2]=i;p=t+56|0;c[p>>2]=f;j=t+64|0;f=c[j>>2]|0;a:do if(!(c[f>>2]|0)){if((a[l>>0]|0)==4){j=f;k=j+72|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));c[f+4>>2]=1020;c[f>>2]=29896;c[f+8>>2]=-1;c[f+56>>2]=0;c[f+64>>2]=0;c[f+60>>2]=0;q=33;break}do if(!(a[t+12>>0]|0)){c[o>>2]=0;if((c[k>>2]|0)!=0?(m=c[t+60>>2]|0,n=c[m>>2]|0,(n|0)!=0):0){f=Ya[c[n+40>>2]&127](m,20,o)|0;if((f|0)==12){h=2054;i=0;f=c[j>>2]|0;q=29;break}g=(f|0)==0;if(g&(c[o>>2]|0)!=0){f=1032;break a}if(g){g=c[t+172>>2]|0;f=c[j>>2]|0;j=f;k=j+72|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));h=2054;q=30}}else{h=2054;i=0;q=29}}else{i=c[7334]|0;c[o>>2]=0;h=4110;q=29}while(0);if((q|0)==29){g=c[t+172>>2]|0;j=f;k=j+72|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));if(!i)q=30;else{c[f+4>>2]=(i|0)>0?i:1020;c[f>>2]=29896;c[f+8>>2]=i;c[f+56>>2]=h;c[f+64>>2]=g;c[f+60>>2]=r;q=33;break}}if((q|0)==30)f=_a[c[r+24>>2]&127](r,g,f,h&556927,0)|0;if(!f)q=33}else q=33;while(0);if((q|0)==33){c[t+44>>2]=0;f=t+72|0;a[t+19>>0]=0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;f=of(t)|0;if(!f)break}yf(c[p>>2]|0);c[p>>2]=0;e=f;Ra=u;return e|0}while(0);a[s>>0]=3;m=3}else m=f;n=e+28|0;f=b[n>>1]|0;h=f&65535;if(h&17){g=h&65519;f=g&65535;b[n>>1]=f;if(h&1){f=(g^3)&65535;b[n>>1]=f;g=c[e+12>>2]|0;c[e+36>>2]=0;h=c[g>>2]|0;c[e+32>>2]=h;if(!h){c[g+4>>2]=e;if(a[g+32>>0]|0)a[g+33>>0]=1}else c[h+36>>2]=e;c[g>>2]=e;g=g+8|0;if((f&8)==0&(c[g>>2]|0)==0)c[g>>2]=e}}j=c[t+56>>2]|0;b:do if(j){l=c[e+24>>2]|0;h=l+-1|0;g=c[j>>2]|0;c:do if(h>>>0>>0){i=c[j+8>>2]|0;if(i){k=j;do{g=(h>>>0)/(i>>>0)|0;k=c[k+12+(g<<2)>>2]|0;if(!k)break c;h=h-(G(g,i)|0)|0;i=c[k+8>>2]|0}while((i|0)!=0);j=k;g=c[k>>2]|0}if(g>>>0<4001)if(!(1<<(h&7)&d[j+12+(h>>>3)>>0]))break;else break b;i=h+1|0;g=(h>>>0)%125|0;h=c[j+12+(g<<2)>>2]|0;if(h|0)do{if((h|0)==(i|0))break b;g=((g+1|0)>>>0)%125|0;h=c[j+12+(g<<2)>>2]|0}while((h|0)!=0)}while(0);if(l>>>0>(c[t+28>>2]|0)>>>0){if(m<<24>>24==4)break;f=f|8;b[n>>1]=f;break}f=Yf(e)|0;if(!f){f=b[n>>1]|0;break}else{e=f;Ra=u;return e|0}}while(0);b[n>>1]=f|4;if((c[t+96>>2]|0)>0)h=Ve(e)|0;else h=0;g=t+24|0;f=c[e+24>>2]|0;if((c[g>>2]|0)>>>0>=f>>>0){e=h;Ra=u;return e|0}c[g>>2]=f;e=h;Ra=u;return e|0}function Yf(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=Ra;Ra=Ra+16|0;p=t;s=c[e+20>>2]|0;r=s+72|0;h=r;n=c[h>>2]|0;h=c[h+4>>2]|0;o=c[e+4>>2]|0;f=c[s+48>>2]|0;q=s+152|0;g=c[q>>2]|0;if((g|0)>200)do{m=g;g=g+-200|0;f=f+(d[o+g>>0]|0)|0}while((m|0)>400);l=e+28|0;b[l>>1]=b[l>>1]|8;l=s+64|0;g=c[l>>2]|0;m=e+24|0;e=c[m>>2]|0;a[p>>0]=e>>>24;i=p+1|0;a[i>>0]=e>>>16;j=p+2|0;a[j>>0]=e>>>8;k=p+3|0;a[k>>0]=e;g=_a[c[(c[g>>2]|0)+12>>2]&127](g,p,4,n,h)|0;if(g|0){s=g;Ra=t;return s|0}u=c[l>>2]|0;g=c[q>>2]|0;e=Sv(n|0,h|0,4,0)|0;h=L()|0;g=_a[c[(c[u>>2]|0)+12>>2]&127](u,o,g,e,h)|0;if(g|0){u=g;Ra=t;return u|0}n=c[l>>2]|0;o=c[q>>2]|0;o=Sv(e|0,h|0,o|0,((o|0)<0)<<31>>31|0)|0;u=L()|0;a[p>>0]=f>>>24;a[i>>0]=f>>>16;a[j>>0]=f>>>8;a[k>>0]=f;f=_a[c[(c[n>>2]|0)+12>>2]&127](n,p,4,o,u)|0;if(f|0){u=f;Ra=t;return u|0}k=(c[q>>2]|0)+8|0;j=r;k=Sv(c[j>>2]|0,c[j+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;j=L()|0;l=r;c[l>>2]=k;c[l+4>>2]=j;l=s+44|0;c[l>>2]=(c[l>>2]|0)+1;l=df(c[s+56>>2]|0,c[m>>2]|0)|0;j=c[m>>2]|0;k=s+96|0;g=c[k>>2]|0;if((g|0)>0){i=s+92|0;f=0;h=0;do{e=c[i>>2]|0;if((c[e+(h*48|0)+20>>2]|0)>>>0>=j>>>0){f=df(c[e+(h*48|0)+16>>2]|0,j)|0|f;g=c[k>>2]|0}h=h+1|0}while((h|0)<(g|0))}else f=0;u=f|l;Ra=t;return u|0}function Zf(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=c[d+4>>2]|0;f=c[d>>2]|0;a[j+19>>0]=0;k=d+8|0;do if(a[k>>0]|0){if((c[f+172>>2]|0)>1){f=j+76|0;if((c[f>>2]|0)==(d|0)?(c[f>>2]=0,e=j+22|0,b[e>>1]=b[e>>1]&-193,e=c[j+72>>2]|0,e|0):0)do{a[e+8>>0]=1;e=c[e+12>>2]|0}while((e|0)!=0);a[k>>0]=1;return}e=j+72|0;f=c[e>>2]|0;if(f|0)while(1){g=f+12|0;do if((c[f>>2]|0)==(d|0)){h=c[g>>2]|0;c[e>>2]=h;if((c[f+4>>2]|0)!=1)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);i=15;break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);i=15;break}else{g=e;f=h}}else{e=g;i=15}while(0);if((i|0)==15){i=0;g=e;f=c[e>>2]|0}if(!f)break;else e=g}e=j+76|0;if((c[e>>2]|0)!=(d|0)){e=j+40|0;f=c[e>>2]|0;if((f|0)==2){d=j+22|0;b[d>>1]=b[d>>1]&-129;c[e>>2]=1;break}}else{c[e>>2]=0;f=j+22|0;b[f>>1]=b[f>>1]&-193;f=j+40|0;e=f;f=c[f>>2]|0}d=f+-1|0;c[e>>2]=d;if(!d)a[j+20>>0]=0}while(0);a[k>>0]=0;if(a[j+20>>0]|0)return;e=j+12|0;f=c[e>>2]|0;if(!f)return;c[e>>2]=0;k=c[f+72>>2]|0;e=c[k+20>>2]|0;Df(k);if(c[(c[e+212>>2]|0)+12>>2]|0)return;switch(a[e+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[e+4>>0]|0))uf(e,0,0)|0;break}default:tf(e)|0}vf(e);return}function _f(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=Ra;Ra=Ra+32|0;k=r;m=r+20|0;j=r+24|0;o=r+16|0;p=r+12|0;if(g>>>0<2)i=0;else{i=g+-2|0;i=i-((i>>>0)%(((((c[e+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;i=((i+1|0)==(1073741824/((c[e+32>>2]|0)>>>0)|0|0)?3:2)+i|0}a:do if((i|0)!=(g|0)?((1073741824/((c[e+32>>2]|0)>>>0)|0)+1|0)!=(g|0):0){n=c[(c[e+12>>2]|0)+56>>2]|0;b:do if((d[n+37>>0]|0)<<16|(d[n+36>>0]|0)<<24|(d[n+38>>0]|0)<<8|(d[n+39>>0]|0)){i=eg(e,g,j,o)|0;if(!i){n=a[j>>0]|0;c:do switch(n<<24>>24){case 1:{c[k>>2]=32306;c[k+4>>2]=66936;c[k+8>>2]=31517;Db(11,32001,k);i=11;break b}case 2:{if(!h){i=fg(e,p,m,g,1)|0;if(i|0)break b;i=c[p>>2]|0;do if(i|0){i=c[i+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{q=c[i+20>>2]|0;p=q+120|0;c[p>>2]=(c[p>>2]|0)+-1;q=q+136|0;c[i+16>>2]=c[q>>2];c[q>>2]=i;break}}while(0)}break}default:{i=c[e>>2]|0;i=Za[c[i+204>>2]&127](i,g,m,0)|0;do if(!i){i=c[m>>2]|0;l=c[i+8>>2]|0;j=l+4|0;if((c[j>>2]|0)!=(g|0)){c[l+56>>2]=c[i+4>>2];c[l+72>>2]=i;c[l+52>>2]=e;c[j>>2]=g;a[l+9>>0]=(g|0)==1?100:0}i=(h|0)==0;j=i?2:0;k=i?f:0;d:do if(i){i=fg(e,m,p,k,j)|0;if(!i){i=c[m>>2]|0;do if(i|0){i=c[i+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{m=c[i+20>>2]|0;f=m+120|0;c[f>>2]=(c[f>>2]|0)+-1;m=m+136|0;c[i+16>>2]=c[m>>2];c[m>>2]=i;break}}while(0);i=c[p>>2]|0}else q=30}else do{i=fg(e,m,p,k,j)|0;if(i|0){q=30;break d}i=c[m>>2]|0;do if(i|0){i=c[i+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{s=c[i+20>>2]|0;t=s+120|0;c[t>>2]=(c[t>>2]|0)+-1;s=s+136|0;c[i+16>>2]=c[s>>2];c[s>>2]=i;break}}while(0);i=c[p>>2]|0}while(i>>>0>f>>>0);while(0);if((q|0)==30){do if(l|0){j=c[l+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break}else{t=c[j+20>>2]|0;s=t+120|0;c[s>>2]=(c[s>>2]|0)+-1;t=t+136|0;c[j+16>>2]=c[t>>2];c[t>>2]=j;break}}while(0);break}i=gg(e,l,n,c[o>>2]|0,i,h)|0;do if(l|0){j=c[l+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break}else{t=c[j+20>>2]|0;s=t+120|0;c[s>>2]=(c[s>>2]|0)+-1;t=t+136|0;c[j+16>>2]=c[t>>2];c[t>>2]=j;break}}while(0);if(!i)break c}while(0);break b}}while(0);break a}}else i=101;while(0);t=i;Ra=r;return t|0}while(0);if(h|0){t=0;Ra=r;return t|0}k=1073741824/((c[e+32>>2]|0)>>>0)|0;f=k+1|0;l=e+36|0;i=g;while(1){j=i+-1|0;if((j|0)!=(f|0)){if(j>>>0<2)i=0;else{i=i+-3|0;i=i-((i>>>0)%(((((c[l>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;i=((i+1|0)==(k|0)?3:2)+i|0}if((i|0)!=(j|0))break}i=j}a[e+19>>0]=1;c[e+44>>2]=j;t=0;Ra=r;return t|0}function $f(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=(e|0)==0;a:while(1){b:do if((d|0)!=(f|0)){if(!k?(c[d+64>>2]|0)!=(e|0):0)break;switch(a[d>>0]|0){case 2:{a[d>>0]=0;break}case 0:{c[d+4>>2]=0;break}default:{j=d+68|0;g=a[j>>0]|0;if(g<<24>>24<=-1)break b;if(g<<24>>24){i=0;do{h=c[(c[d+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);g=a[j>>0]|0}else{m=c[h+20>>2]|0;n=m+120|0;c[n>>2]=(c[n>>2]|0)+-1;m=m+136|0;c[h+16>>2]=c[m>>2];c[m>>2]=h}i=i+1|0}while((i|0)<(g<<24>>24|0))}g=c[(c[d+116>>2]|0)+72>>2]|0;if(!(b[g+28>>1]&32))Df(g);else{n=c[g+20>>2]|0;m=n+120|0;c[m>>2]=(c[m>>2]|0)+-1;n=n+136|0;c[g+16>>2]=c[n>>2];c[n>>2]=g}a[j>>0]=-1;break b}}g=ag(d)|0;if(g|0)break a;j=d+68|0;g=a[j>>0]|0;if(g<<24>>24>-1){if(g<<24>>24){i=0;do{h=c[(c[d+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);g=a[j>>0]|0}else{n=c[h+20>>2]|0;m=n+120|0;c[m>>2]=(c[m>>2]|0)+-1;n=n+136|0;c[h+16>>2]=c[n>>2];c[n>>2]=h}i=i+1|0}while((i|0)<(g<<24>>24|0))}g=c[(c[d+116>>2]|0)+72>>2]|0;if(!(b[g+28>>1]&32))Df(g);else{n=c[g+20>>2]|0;m=n+120|0;c[m>>2]=(c[m>>2]|0)+-1;n=n+136|0;c[g+16>>2]=c[n>>2];c[n>>2]=g}a[j>>0]=-1}a[d>>0]=3;n=d+1|0;a[n>>0]=a[n>>0]&-15}while(0);d=c[d+24>>2]|0;if(!d){d=0;l=34;break}}if((l|0)==34)return d|0;n=d+1|0;a[n>>0]=a[n>>0]&-15;n=g;return n|0}function ag(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=(a[b+69>>0]|0)==0;bg(b);if(!g){f=b+32|0;g=c[f+4>>2]|0;b=b+56|0;c[b>>2]=c[f>>2];c[b+4>>2]=g;b=0;return b|0}f=c[b+44>>2]|0;g=b+56|0;d=g;c[d>>2]=f;c[d+4>>2]=0;d=Sv(f|0,0,17,0)|0;L()|0;f=Sv(f|0,0,16,0)|0;e=L()|0;if(e>>>0>0|(e|0)==0&f>>>0>2147483390){b=7;return b|0}if(!(c[7324]|0)){d=Wa[c[29340>>2]&127](d)|0;if(!d){b=7;return b|0}}else{f=Wa[c[29356>>2]&127](d)|0;if((c[14985]|0)>>>0>>0)c[14985]=d;e=59064;d=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&d>>>0>0){h=c[14978]|0;e=Tv(d|0,e|0,f|0,((f|0)<0)<<31>>31|0)|0;d=L()|0;c[14768]=((d|0)<0|(d|0)==0&e>>>0<=h>>>0)&1}d=Wa[c[29340>>2]&127](f)|0;if(!d){h=7;return h|0}e=Wa[c[29352>>2]&127](d)|0;e=(c[14978]|0)+e|0;c[14978]=e;if(e>>>0>(c[14982]|0)>>>0)c[14982]=e;e=(c[14981]|0)+1|0;c[14981]=e;if(e>>>0>(c[14987]|0)>>>0)c[14987]=e}e=cg(b,0,c[g>>2]|0,d,0)|0;if(!e){e=d+(c[g>>2]|0)|0;f=e+17|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));c[b+16>>2]=d;h=0;return h|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](d);h=e;return h|0}else{h=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);h=e;return h|0}return 0}function bg(f){f=f|0;var g=0,h=0;if(b[f+50>>1]|0)return;g=f+1|0;a[g>>0]=a[g>>0]|2;g=c[f+116>>2]|0;h=(c[g+64>>2]|0)+(e[f+70>>1]<<1)|0;cb[c[g+80>>2]&255](g,(c[g+56>>2]|0)+((d[h>>0]<<8|d[h+1>>0])&e[g+26>>1])|0,f+32|0);return}function cg(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=Ra;Ra=Ra+48|0;z=A+16|0;m=A;w=A+32|0;x=A+28|0;n=c[f+116>>2]|0;v=c[f+20>>2]|0;bg(f);r=c[f+40>>2]|0;p=v+36|0;q=f+48|0;l=e[q>>1]|0;if((r-(c[n+56>>2]|0)|0)>>>0>((c[p>>2]|0)-l|0)>>>0){c[m>>2]=32306;c[m+4>>2]=67944;c[m+8>>2]=31517;Db(11,32001,m);z=11;Ra=A;return z|0}if(l>>>0>g>>>0){o=(h+g|0)>>>0>l>>>0?l-g|0:h;g=r+g|0;l=c[n+72>>2]|0;a:do if(!j){ew(i|0,g|0,o|0)|0;k=0}else{m=c[l+20>>2]|0;if((b[l+28>>1]&4)!=0?(c[m+24>>2]|0)>>>0>=(c[l+24>>2]|0)>>>0:0){if(c[m+96>>2]|0){k=Ve(l)|0;y=13}}else y=9;do if((y|0)==9){k=c[m+40>>2]|0;if(k|0)break a;if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){k=Wf(l)|0;y=13;break}else{k=Xf(l)|0;y=13;break}}while(0);if((y|0)==13?k|0:0)break;ew(g|0,i|0,o|0)|0;k=0}while(0);s=0;h=h-o|0;i=i+o|0}else{s=g-l|0;k=0}do if((k|0)==0&(h|0)!=0){l=c[p>>2]|0;t=l+-4|0;k=e[q>>1]|0;o=r+k|0;o=(d[o+1>>0]|0)<<16|(d[o>>0]|0)<<24|(d[o+2>>0]|0)<<8|(d[o+3>>0]|0);c[w>>2]=o;n=f+1|0;do if(a[n>>0]&4){k=(s>>>0)/(t>>>0)|0;l=c[(c[f+12>>2]|0)+(k<<2)>>2]|0;if(!l)y=28;else{c[w>>2]=l;g=k;m=s-(G(k,t)|0)|0;y=29}}else{g=((l+-5-k+(c[f+44>>2]|0)|0)>>>0)/(t>>>0)|0;m=f+12|0;k=c[m>>2]|0;if(k){l=g<<2;r=(l|0)>(Wa[c[29352>>2]&127](k)|0);k=c[m>>2]|0;if(r)y=23}else y=23;if((y|0)==23){k=sb(k,g<<3,0)|0;if(!k){k=7;break}c[m>>2]=k;l=g<<2}gw(k|0,0,l|0)|0;a[n>>0]=a[n>>0]|4;y=28}while(0);if((y|0)==28)if(!o){k=0;y=55}else{g=0;m=s;l=o;y=29}b:do if((y|0)==29){r=f+12|0;p=(j|0)==0;q=p?2:0;o=g;while(1){k=c[r>>2]|0;c[k+(o<<2)>>2]=l;if(m>>>0>>0){n=(m+h|0)>>>0>t>>>0?t-m|0:h;k=c[v>>2]|0;k=Za[c[k+204>>2]&127](k,l,x,q)|0;do if(!k){g=c[x>>2]|0;l=c[g+4>>2]|0;c[w>>2]=(d[l+1>>0]|0)<<16|(d[l>>0]|0)<<24|(d[l+2>>0]|0)<<8|(d[l+3>>0]|0);l=l+(m+4)|0;c:do if(p){ew(i|0,l|0,n|0)|0;k=0}else{m=c[g+20>>2]|0;if((b[g+28>>1]&4)!=0?(c[m+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0){if(c[m+96>>2]|0){u=Ve(g)|0;y=46}}else y=42;do if((y|0)==42){y=0;k=c[m+40>>2]|0;if(k|0)break c;if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){u=Wf(g)|0;y=46;break}else{u=Xf(g)|0;y=46;break}}while(0);if((y|0)==46?(y=0,u|0):0){k=u;break}ew(l|0,i|0,n|0)|0;k=0}while(0);l=c[x>>2]|0;if(l)if(!(b[l+28>>1]&32)){Df(l);m=0;break}else{m=c[l+20>>2]|0;j=m+120|0;c[j>>2]=(c[j>>2]|0)+-1;m=m+136|0;c[l+16>>2]=c[m>>2];c[m>>2]=l;m=0;break}else m=0}while(0);h=h-n|0;if(!h)break b;else g=i+n|0}else{k=c[k+(o+1<<2)>>2]|0;if(!k)k=dg(v,l,0,w)|0;else{c[w>>2]=k;k=0}g=i;m=m-t|0}if(k|0){y=55;break b}l=c[w>>2]|0;if(!l){k=0;y=55;break}else{i=g;o=o+1|0}}}while(0);if((y|0)==55)break;z=k;Ra=A;return z|0}while(0);if(!((k|0)==0&(h|0)!=0)){z=k;Ra=A;return z|0}c[z>>2]=32306;c[z+4>>2]=68089;c[z+8>>2]=31517;Db(11,32001,z);z=11;Ra=A;return z|0}function dg(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=Ra;Ra=Ra+16|0;o=s;l=s+4|0;do if(a[e+17>>0]|0){m=e+36|0;k=1073741824/((c[e+32>>2]|0)>>>0)|0;p=f;do{i=p;p=p+1|0;if(p>>>0<2)j=0;else{j=i+-1|0;j=j-((j>>>0)%(((((c[m>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;j=((j+1|0)==(k|0)?3:2)+j|0}}while((j|0)==(p|0)|(i|0)==(k|0));if(p>>>0<=(c[e+44>>2]|0)>>>0?(n=eg(e,p,l,o)|0,m=(n|0)==0,q=m&(a[l>>0]|0)==4&(c[o>>2]|0)==(f|0),q|m^1):0){k=0;j=q?101:n;i=q?p:0;break}else{r=9;break}}else r=9;while(0);do if((r|0)==9){i=c[e>>2]|0;i=Za[c[i+204>>2]&127](i,f,o,(g|0)==0?2:0)|0;if(i|0){k=0;j=i;i=0;break}i=c[o>>2]|0;k=c[i+8>>2]|0;j=k+4|0;if((c[j>>2]|0)==(f|0))i=c[k+56>>2]|0;else{r=c[i+4>>2]|0;c[k+56>>2]=r;c[k+72>>2]=i;c[k+52>>2]=e;c[j>>2]=f;a[k+9>>0]=(f|0)==1?100:0;i=r}j=0;i=d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0]}while(0);c[h>>2]=i;if(g|0){c[g>>2]=k;h=(j|0)==101;h=h?0:j;Ra=s;return h|0}if(!k){h=(j|0)==101;h=h?0:j;Ra=s;return h|0}i=c[k+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);h=(j|0)==101;h=h?0:j;Ra=s;return h|0}else{h=c[i+20>>2]|0;g=h+120|0;c[g>>2]=(c[g>>2]|0)+-1;h=h+136|0;c[i+16>>2]=c[h>>2];c[h>>2]=i;h=(j|0)==101;h=h?0:j;Ra=s;return h|0}return 0}function eg(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+32|0;n=o+16|0;m=o;i=o+28|0;if(f>>>0<2)l=0;else{l=f+-2|0;l=l-((l>>>0)%(((((c[e+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;l=((l+1|0)==(1073741824/((c[e+32>>2]|0)>>>0)|0|0)?3:2)+l|0}e=c[e>>2]|0;e=Za[c[e+204>>2]&127](e,l,i,0)|0;if(e|0){n=e;Ra=o;return n|0}k=c[i>>2]|0;j=c[k+4>>2]|0;e=(f-l|0)*5|0;i=e+-5|0;if((i|0)<0){do if(k|0)if(!(b[k+28>>1]&32)){Df(k);break}else{n=c[k+20>>2]|0;h=n+120|0;c[h>>2]=(c[h>>2]|0)+-1;n=n+136|0;c[k+16>>2]=c[n>>2];c[n>>2]=k;break}while(0);c[m>>2]=32306;c[m+4>>2]=64247;c[m+8>>2]=31517;Db(11,32001,m);n=11;Ra=o;return n|0}a[g>>0]=a[j+i>>0]|0;if(h|0){m=j+(e+-4)|0;c[h>>2]=(d[m+1>>0]|0)<<16|(d[m>>0]|0)<<24|(d[m+2>>0]|0)<<8|(d[m+3>>0]|0)}do if(k|0)if(!(b[k+28>>1]&32)){Df(k);break}else{m=c[k+20>>2]|0;h=m+120|0;c[h>>2]=(c[h>>2]|0)+-1;m=m+136|0;c[k+16>>2]=c[m>>2];c[m>>2]=k;break}while(0);if(((a[g>>0]|0)+-1&255)<=4){n=0;Ra=o;return n|0}c[n>>2]=32306;c[n+4>>2]=64255;c[n+8>>2]=31517;Db(11,32001,n);n=11;Ra=o;return n|0}function fg(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Z=Ra;Ra=Ra+160|0;r=Z+144|0;o=Z+128|0;T=Z+112|0;R=Z+96|0;U=Z+80|0;Q=Z+64|0;P=Z+48|0;V=Z+32|0;S=Z+16|0;j=Z;Y=Z+156|0;q=e+12|0;k=c[q>>2]|0;p=e+44|0;W=c[p>>2]|0;O=k+56|0;N=c[O>>2]|0;N=d[N+37>>0]<<16|d[N+36>>0]<<24|d[N+38>>0]<<8|d[N+39>>0];if(N>>>0>=W>>>0){c[j>>2]=32306;c[j+4>>2]=69057;c[j+8>>2]=31517;Db(11,32001,j);f=11;Ra=Z;return f|0}if(!N){i=(a[e+19>>0]|0)==0&1;k=c[k+72>>2]|0;l=c[k+20>>2]|0;if((b[k+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[k+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0))k=W;else{j=Ve(k)|0;X=190}else X=186;do if((X|0)==186){j=c[l+40>>2]|0;if(j|0){f=j;Ra=Z;return f|0}if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){j=Wf(k)|0;X=190;break}else{j=Xf(k)|0;X=190;break}}while(0);do if((X|0)==190)if(!j){k=c[p>>2]|0;break}else{f=j;Ra=Z;return f|0}while(0);j=k+1|0;c[p>>2]=j;n=e+32|0;l=1073741824/((c[n>>2]|0)>>>0)|0;if((k|0)==(l|0)){j=k+2|0;c[p>>2]=j}if(a[e+17>>0]|0){if(j>>>0<2)k=0;else{k=j+-2|0;k=k-((k>>>0)%(((((c[e+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(l|0)?3:2)+k|0}if((k|0)==(j|0)){k=c[e>>2]|0;k=Za[c[k+204>>2]&127](k,j,Y,i)|0;if(k|0){f=k;Ra=Z;return f|0}k=c[Y>>2]|0;m=c[k+8>>2]|0;l=m+4|0;if((c[l>>2]|0)==(j|0))j=c[m+72>>2]|0;else{c[m+56>>2]=c[k+4>>2];c[m+72>>2]=k;c[m+52>>2]=e;c[l>>2]=j;a[m+9>>0]=(j|0)==1?100:0;j=k}if((b[j+30>>1]|0)>1){j=c[m+72>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{f=c[j+20>>2]|0;e=f+120|0;c[e>>2]=(c[e>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j}c[o>>2]=32306;c[o+4>>2]=65442;c[o+8>>2]=31517;Db(11,32001,o);f=11;Ra=Z;return f|0}a[m>>0]=0;m=m+72|0;j=c[m>>2]|0;l=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0))k=0;else k=Ve(j)|0;else X=212;do if((X|0)==212){k=c[l+40>>2]|0;if(!k)if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){k=Wf(j)|0;break}else{k=Xf(j)|0;break}}while(0);j=c[m>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{X=c[j+20>>2]|0;W=X+120|0;c[W>>2]=(c[W>>2]|0)+-1;X=X+136|0;c[j+16>>2]=c[X>>2];c[X>>2]=j}if(k|0){f=k;Ra=Z;return f|0}k=c[p>>2]|0;j=k+1|0;c[p>>2]=j;if((k|0)==(1073741824/((c[n>>2]|0)>>>0)|0|0)){j=k+2|0;c[p>>2]=j}}}m=c[(c[q>>2]|0)+56>>2]|0;a[m+28>>0]=j>>>24;a[m+29>>0]=j>>>16;a[m+30>>0]=j>>>8;a[m+31>>0]=j;m=c[p>>2]|0;c[g>>2]=m;j=c[e>>2]|0;j=Za[c[j+204>>2]&127](j,m,Y,i)|0;if(j|0){c[f>>2]=0;f=j;Ra=Z;return f|0}j=c[Y>>2]|0;k=c[j+8>>2]|0;l=k+4|0;if((c[l>>2]|0)==(m|0))j=k+72|0;else{c[k+56>>2]=c[j+4>>2];Y=k+72|0;c[Y>>2]=j;c[k+52>>2]=e;c[l>>2]=m;a[k+9>>0]=(m|0)==1?100:0;j=Y}c[f>>2]=k;m=c[j>>2]|0;if((b[m+30>>1]|0)>1){do if(k|0)if(!(b[m+28>>1]&32)){Df(m);break}else{e=c[m+20>>2]|0;Y=e+120|0;c[Y>>2]=(c[Y>>2]|0)+-1;e=e+136|0;c[m+16>>2]=c[e>>2];c[e>>2]=m;break}while(0);c[f>>2]=0;c[r>>2]=32306;c[r+4>>2]=65442;c[r+8>>2]=31517;Db(11,32001,r);f=11;Ra=Z;return f|0}a[k>>0]=0;l=c[m+20>>2]|0;do if((b[m+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[m+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0)){f=0;Ra=Z;return f|0}else{j=Ve(m)|0;X=241;break}else X=237;while(0);do if((X|0)==237){j=c[l+40>>2]|0;if(!j)if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){j=Wf(m)|0;X=241;break}else{j=Xf(m)|0;X=241;break}else X=243}while(0);do if((X|0)==241)if(j){k=c[f>>2]|0;if(!k)break;else{X=243;break}}else{f=0;Ra=Z;return f|0}while(0);do if((X|0)==243){k=c[k+72>>2]|0;if(!(b[k+28>>1]&32)){Df(k);break}else{e=c[k+20>>2]|0;Y=e+120|0;c[Y>>2]=(c[Y>>2]|0)+-1;e=e+136|0;c[k+16>>2]=c[e>>2];c[e>>2]=k;break}}while(0);c[f>>2]=0;f=j;Ra=Z;return f|0}a:do switch(i<<24>>24){case 1:{if(W>>>0>>0)n=0;else{j=eg(e,h,Y,0)|0;if(!j){n=(a[Y>>0]|0)==2&1;break a}f=j;Ra=Z;return f|0}break}case 2:{n=1;break}default:n=0}while(0);k=c[k+72>>2]|0;l=c[k+20>>2]|0;if((b[k+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[k+24>>2]|0)>>>0:0){if(c[l+96>>2]|0){m=Ve(k)|0;X=18}}else X=14;do if((X|0)==14){j=c[l+40>>2]|0;if(j|0){f=j;Ra=Z;return f|0}if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){m=Wf(k)|0;X=18;break}else{m=Xf(k)|0;X=18;break}}while(0);if((X|0)==18?m|0:0){f=m;Ra=Z;return f|0}F=c[O>>2]|0;H=N+-1|0;a[F+36>>0]=H>>>24;a[F+37>>0]=H>>>16;a[F+38>>0]=H>>>8;a[F+39>>0]=H;F=e+36|0;H=(h|0)==0;E=i<<24>>24==2;D=e+60|0;C=0;l=0;b:while(1){B=l;x=(l|0)!=0;if(x){k=c[B+56>>2]|0;j=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8;k=k+3|0}else{k=c[O>>2]|0;j=d[k+33>>0]<<16|d[k+32>>0]<<24|d[k+34>>0]<<8;k=k+35|0}i=j|d[k>>0];if(i>>>0>W>>>0){X=25;break}if(C>>>0>N>>>0){X=25;break}C=C+1|0;k=c[e>>2]|0;k=Za[c[k+204>>2]&127](k,i,Y,0)|0;if(k|0){X=35;break}j=c[Y>>2]|0;A=c[j+8>>2]|0;k=A+4|0;if((c[k>>2]|0)==(i|0))v=c[A+72>>2]|0;else{c[A+56>>2]=c[j+4>>2];c[A+72>>2]=j;c[A+52>>2]=e;c[k>>2]=i;a[A+9>>0]=(i|0)==1?100:0;v=j}j=A;if((b[v+30>>1]|0)>1){X=31;break}a[A>>0]=0;y=A+56|0;w=c[y>>2]|0;r=w+4|0;s=w+5|0;t=w+6|0;u=w+7|0;z=d[s>>0]<<16|d[r>>0]<<24|d[t>>0]<<8|d[u>>0];q=n<<24>>24!=0;c:do if(q|(z|0)!=0){if(z>>>0>(((c[F>>2]|0)>>>2)+-2|0)>>>0){X=49;break b}if(n<<24>>24?(i|0)==(h|0)|E&i>>>0>>0:0){c[g>>2]=i;c[f>>2]=j;j=c[A+72>>2]|0;m=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[m+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0){if(c[m+96>>2]|0){I=Ve(j)|0;X=60}}else X=56;do if((X|0)==56){k=c[m+40>>2]|0;if(k|0){X=251;break b}if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){I=Wf(j)|0;X=60;break}else{I=Xf(j)|0;X=60;break}}while(0);if((X|0)==60?(X=0,I|0):0){X=248;break b}if(!z){if(!x){X=63;break b}i=B+72|0;j=c[i>>2]|0;m=c[j+20>>2]|0;do if(!(b[j+28>>1]&4))X=68;else{if((c[m+24>>2]|0)>>>0<(c[j+24>>2]|0)>>>0){X=68;break}if(!(c[m+96>>2]|0))break;J=Ve(j)|0;X=72}while(0);do if((X|0)==68){k=c[m+40>>2]|0;if(k|0){X=252;break b}if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){J=Wf(j)|0;X=72;break}else{J=Xf(j)|0;X=72;break}}while(0);if((X|0)==72?(0,J|0):0){X=249;break b}n=c[B+56>>2]|0;k=c[y>>2]|0;k=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;a[n>>0]=k;a[n+1>>0]=k>>8;a[n+2>>0]=k>>16;a[n+3>>0]=k>>24;n=0;k=0;l=i;j=0;X=178;break}s=c[y>>2]|0;p=a[s+8>>0]|0;q=a[s+9>>0]|0;r=a[s+10>>0]|0;s=a[s+11>>0]|0;m=(q&255)<<16|(p&255)<<24|(r&255)<<8|s&255;if(m>>>0>W>>>0){X=75;break b}k=c[e>>2]|0;k=Za[c[k+204>>2]&127](k,m,Y,0)|0;if(k|0){X=85;break b}j=c[Y>>2]|0;o=c[j+8>>2]|0;k=o+4|0;if((c[k>>2]|0)==(m|0))j=c[o+72>>2]|0;else{c[o+56>>2]=c[j+4>>2];c[o+72>>2]=j;c[o+52>>2]=e;c[k>>2]=m;a[o+9>>0]=(m|0)==1?100:0}if((b[j+30>>1]|0)>1){X=81;break b}a[o>>0]=0;j=o+72|0;n=c[j>>2]|0;i=c[n+20>>2]|0;m=b[n+28>>1]|0;do if(!(m&4))X=90;else{if((c[i+24>>2]|0)>>>0<(c[n+24>>2]|0)>>>0){X=90;break}if(!(c[i+96>>2]|0))break;K=Ve(n)|0;X=94}while(0);do if((X|0)==90){k=c[i+40>>2]|0;if(k|0){X=96;break b}if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){K=Wf(n)|0;X=94;break}else{K=Xf(n)|0;X=94;break}}while(0);if((X|0)==94?(X=0,K|0):0){X=95;break b}w=o+56|0;v=c[w>>2]|0;u=c[y>>2]|0;u=d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24;a[v>>0]=u;a[v+1>>0]=u>>8;a[v+2>>0]=u>>16;a[v+3>>0]=u>>24;v=c[w>>2]|0;z=z+-1|0;a[v+4>>0]=z>>>24;a[v+5>>0]=z>>>16;a[v+6>>0]=z>>>8;a[v+7>>0]=z;ew((c[w>>2]|0)+8|0,(c[y>>2]|0)+12|0,z<<2|0)|0;j=c[j>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{z=c[j+20>>2]|0;y=z+120|0;c[y>>2]=(c[y>>2]|0)+-1;z=z+136|0;c[j+16>>2]=c[z>>2];c[z>>2]=j}if(!x){X=103;break b}i=B+72|0;j=c[i>>2]|0;m=c[j+20>>2]|0;do if(!(b[j+28>>1]&4))X=108;else{if((c[m+24>>2]|0)>>>0<(c[j+24>>2]|0)>>>0){X=108;break}if(!(c[m+96>>2]|0))break;L=Ve(j)|0;X=112}while(0);do if((X|0)==108){k=c[m+40>>2]|0;if(k|0){X=254;break b}if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){L=Wf(j)|0;X=112;break}else{L=Xf(j)|0;X=112;break}}while(0);if((X|0)==112?(0,L|0):0){X=253;break b}n=c[B+56>>2]|0;a[n>>0]=p;a[n+1>>0]=q;a[n+2>>0]=r;a[n+3>>0]=s;n=0;k=0;l=i;j=0;X=178;break}if(z){d:do if(!H)if(E){k=0;while(1){y=w+((k<<2)+8)|0;if((d[y+1>>0]<<16|d[y>>0]<<24|d[y+2>>0]<<8|d[y+3>>0])>>>0<=h>>>0){i=k;break d}k=k+1|0;if(k>>>0>=z>>>0){i=0;break}}}else{k=(d[w+9>>0]<<16|d[w+8>>0]<<24|d[w+10>>0]<<8|d[w+11>>0])-h|0;if(z>>>0<=1){i=0;break}m=(k|0)>-1?k:(k|0)==-2147483648?2147483647:0-k|0;k=0;i=1;while(1){p=w+((i<<2)+8)|0;p=(d[p+1>>0]<<16|d[p>>0]<<24|d[p+2>>0]<<8|d[p+3>>0])-h|0;p=(p|0)>-1?p:(p|0)==-2147483648?2147483647:0-p|0;o=(p|0)<(m|0);k=o?i:k;i=i+1|0;if((i|0)==(z|0)){i=k;break}else m=o?p:m}}else i=0;while(0);o=w+((i<<2)+8)|0;k=d[o+1>>0]<<16|d[o>>0]<<24|d[o+2>>0]<<8|d[o+3>>0];if(k>>>0>W>>>0){X=124;break b}if((k|0)==(h|0)|q^1|E&k>>>0>>0){c[g>>2]=k;m=c[v+20>>2]|0;do if(!(b[v+28>>1]&4))X=130;else{if((c[m+24>>2]|0)>>>0<(c[v+24>>2]|0)>>>0){X=130;break}if(!(c[m+96>>2]|0))break;M=Ve(v)|0;X=134}while(0);do if((X|0)==130){k=c[m+40>>2]|0;if(k|0){X=256;break b}if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){M=Wf(v)|0;X=134;break}else{M=Xf(v)|0;X=134;break}}while(0);if((X|0)==134?(0,M|0):0){X=255;break b}k=z+-1|0;if(i>>>0>>0){X=w+((z<<2)+4)|0;X=d[X>>0]|d[X+1>>0]<<8|d[X+2>>0]<<16|d[X+3>>0]<<24;a[o>>0]=X;a[o+1>>0]=X>>8;a[o+2>>0]=X>>16;a[o+3>>0]=X>>24}a[r>>0]=k>>>24;a[s>>0]=k>>>16;a[t>>0]=k>>>8;a[u>>0]=k;p=c[g>>2]|0;i=c[D>>2]|0;e:do if(!i)k=0;else{k=c[i>>2]|0;if(k>>>0

        >>0){k=1;break}m=p+-1|0;if(m>>>0>=k>>>0){k=0;break}n=c[i+8>>2]|0;if(n){o=i;do{k=(m>>>0)/(n>>>0)|0;o=c[o+12+(k<<2)>>2]|0;if(!o){k=0;break e}m=m-(G(k,n)|0)|0;n=c[o+8>>2]|0}while((n|0)!=0);i=o;k=c[o>>2]|0}if(k>>>0<4001){k=(1<<(m&7)&d[i+12+(m>>>3)>>0]|0)!=0&1;break}n=m+1|0;k=(m>>>0)%125|0;m=c[i+12+(k<<2)>>2]|0;if(!m){k=0;break}while(1){if((m|0)==(n|0)){k=1;break e}k=((k+1|0)>>>0)%125|0;m=c[i+12+(k<<2)>>2]|0;if(!m){k=0;break}}}while(0);X=c[e>>2]|0;k=Za[c[X+204>>2]&127](X,p,Y,k^1)|0;if(k|0){c[f>>2]=0;n=0;X=176;break}k=c[Y>>2]|0;m=c[k+8>>2]|0;n=m+4|0;if((c[n>>2]|0)==(p|0))k=m+72|0;else{c[m+56>>2]=c[k+4>>2];X=m+72|0;c[X>>2]=k;c[m+52>>2]=e;c[n>>2]=p;a[m+9>>0]=(p|0)==1?100:0;k=X}c[f>>2]=m;if((b[(c[k>>2]|0)+30>>1]|0)>1){do if(m|0){k=c[m+72>>2]|0;if(!(b[k+28>>1]&32)){Df(k);break}else{X=c[k+20>>2]|0;A=X+120|0;c[A>>2]=(c[A>>2]|0)+-1;X=X+136|0;c[k+16>>2]=c[X>>2];c[X>>2]=k;break}}while(0);c[f>>2]=0;c[T>>2]=32306;c[T+4>>2]=65442;c[T+8>>2]=31517;Db(11,32001,T);n=0;k=11;X=176;break}a[m>>0]=0;n=c[m+72>>2]|0;i=c[n+20>>2]|0;do if(!(b[n+28>>1]&4))X=166;else{if((c[i+24>>2]|0)>>>0<(c[n+24>>2]|0)>>>0){X=166;break}if(!(c[i+96>>2]|0)){n=0;k=0;X=176;break c}k=Ve(n)|0;X=170}while(0);do if((X|0)==166){k=c[i+40>>2]|0;if(k|0){X=172;break}if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){k=Wf(n)|0;X=170;break}else{k=Xf(n)|0;X=170;break}}while(0);if((X|0)==170){X=0;if(!k){n=0;k=0;X=176;break}m=c[f>>2]|0;if(m)X=172}do if((X|0)==172){m=c[m+72>>2]|0;if(!(b[m+28>>1]&32)){Df(m);break}else{X=c[m+20>>2]|0;A=X+120|0;c[A>>2]=(c[A>>2]|0)+-1;X=X+136|0;c[m+16>>2]=c[X>>2];c[X>>2]=m;break}}while(0);c[f>>2]=0;n=0;X=176}else{k=0;X=176}}else{k=0;X=176}}else{m=c[v+20>>2]|0;if((b[v+28>>1]&4)!=0?(c[m+24>>2]|0)>>>0>=(c[v+24>>2]|0)>>>0:0)if(!(c[m+96>>2]|0))k=w;else{k=Ve(v)|0;X=45}else X=41;do if((X|0)==41){k=c[m+40>>2]|0;if(k|0){X=250;break b}if((c[m+148>>2]|0)>>>0>(c[m+152>>2]|0)>>>0){k=Wf(v)|0;X=45;break}else{k=Xf(v)|0;X=45;break}}while(0);if((X|0)==45){if(k|0){X=247;break b}k=c[y>>2]|0}c[g>>2]=i;n=(c[O>>2]|0)+32|0;k=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;a[n>>0]=k;a[n+1>>0]=k>>8;a[n+2>>0]=k>>16;a[n+3>>0]=k>>24;c[f>>2]=j;n=0;k=0;j=0;X=176}while(0);if((X|0)==176){X=0;if(l){l=B+72|0;X=178}}do if((X|0)==178){X=0;l=c[l>>2]|0;if(!(b[l+28>>1]&32)){Df(l);break}else{B=c[l+20>>2]|0;A=B+120|0;c[A>>2]=(c[A>>2]|0)+-1;B=B+136|0;c[l+16>>2]=c[B>>2];c[B>>2]=l;break}}while(0);if(!(n<<24>>24)){l=0;X=257;break}else l=j}switch(X|0){case 25:{c[S>>2]=32306;c[S+4>>2]=69113;c[S+8>>2]=31517;Db(11,32001,S);j=l;k=11;break}case 31:{j=c[A+72>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{f=c[j+20>>2]|0;e=f+120|0;c[e>>2]=(c[e>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j}c[V>>2]=32306;c[V+4>>2]=65442;c[V+8>>2]=31517;Db(11,32001,V);j=l;k=11;break}case 35:{j=l;break}case 49:{c[P>>2]=32306;c[P+4>>2]=69142;c[P+8>>2]=31517;Db(11,32001,P);k=11;j=A;X=257;break}case 63:{f=(c[O>>2]|0)+32|0;e=c[y>>2]|0;e=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;a[f>>0]=e;a[f+1>>0]=e>>8;a[f+2>>0]=e>>16;a[f+3>>0]=e>>24;f=0;Ra=Z;return f|0}case 75:{c[Q>>2]=32306;c[Q+4>>2]=69176;c[Q+8>>2]=31517;Db(11,32001,Q);k=11;j=A;X=257;break}case 81:{j=c[o+72>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{f=c[j+20>>2]|0;e=f+120|0;c[e>>2]=(c[e>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j}c[U>>2]=32306;c[U+4>>2]=65442;c[U+8>>2]=31517;Db(11,32001,U);k=11;j=A;X=257;break}case 85:{j=A;X=257;break}case 95:{m=c[j>>2]|0;k=K;n=m;m=b[m+28>>1]|0;X=96;break}case 103:{f=c[O>>2]|0;a[f+32>>0]=p;a[f+33>>0]=q;a[f+34>>0]=r;a[f+35>>0]=s;f=0;Ra=Z;return f|0}case 124:{c[R>>2]=32306;c[R+4>>2]=69241;c[R+8>>2]=31517;Db(11,32001,R);k=11;j=A;X=257;break}case 247:{j=A;X=257;break}case 248:{k=I;j=A;X=257;break}case 249:{k=J;j=A;X=257;break}case 250:{j=A;X=257;break}case 251:{j=A;X=257;break}case 252:{j=A;X=257;break}case 253:{k=L;j=A;X=257;break}case 254:{j=A;X=257;break}case 255:{k=M;j=A;X=257;break}case 256:{j=A;X=257;break}}do if((X|0)==96){j=A;if(!(m&32)){Df(n);X=257;break}else{X=c[n+20>>2]|0;f=X+120|0;c[f>>2]=(c[f>>2]|0)+-1;X=X+136|0;c[n+16>>2]=c[X>>2];c[X>>2]=n;X=257;break}}while(0);do if((X|0)==257)if(j){j=c[j+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);j=l;break}else{f=c[j+20>>2]|0;e=f+120|0;c[e>>2]=(c[e>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j;j=l;break}}else j=l;while(0);if(!j){f=k;Ra=Z;return f|0}j=c[j+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);f=k;Ra=Z;return f|0}else{f=c[j+20>>2]|0;e=f+120|0;c[e>>2]=(c[e>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j;f=k;Ra=Z;return f|0}return 0}function gg(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=Ra;Ra=Ra+112|0;P=S+88|0;N=S+72|0;L=S+56|0;q=S+40|0;l=S+24|0;M=S;R=S+100|0;H=g+4|0;Q=c[H>>2]|0;F=c[f>>2]|0;if(Q>>>0<3){c[l>>2]=32306;c[l+4>>2]=66838;c[l+8>>2]=31517;Db(11,32001,l);R=11;Ra=S;return R|0}C=c[g+72>>2]|0;D=F+12|0;a:do if(a[D>>0]|0){n=c[C+20>>2]|0;p=C+28|0;if((b[p>>1]&4)!=0?(c[n+24>>2]|0)>>>0>=(c[C+24>>2]|0)>>>0:0){if(!(c[n+96>>2]|0)){O=14;break}l=Ve(C)|0}else O=9;do if((O|0)==9){l=c[n+40>>2]|0;if(l|0)break a;if((c[n+148>>2]|0)>>>0>(c[n+152>>2]|0)>>>0){l=Wf(C)|0;break}else{l=Xf(C)|0;break}}while(0);if(!l)O=14}else{p=C+28|0;O=14}while(0);b:do if((O|0)==14){l=b[p>>1]|0;if(l&2){l=Ve(C)|0;if(l|0)break;l=b[p>>1]|0}if((k|0)!=0|(l&8)==0)E=0;else E=c[C+24>>2]|0;b[p>>1]=l&-9;l=F+212|0;n=Ya[c[29436>>2]&127](c[(c[l>>2]|0)+44>>2]|0,j,0)|0;do if(n){l=c[l>>2]|0;k=c[n+4>>2]|0;if(!(c[k>>2]|0)){l=sf(l,j,n)|0;if(!l){A=0;y=0;break}x=l;y=1;l=b[l+30>>1]|0}else{x=l+12|0;c[x>>2]=(c[x>>2]|0)+1;x=k+30|0;l=(b[x>>1]|0)+1<<16>>16;b[x>>1]=l;x=k;y=(k|0)!=0}k=x+28|0;n=b[k>>1]|0;if(l<<16>>16>1){if(!(n&32))Df(x);else{j=c[x+20>>2]|0;i=j+120|0;c[i>>2]=(c[i>>2]|0)+-1;j=j+136|0;c[x+16>>2]=c[j>>2];c[j>>2]=x}c[q>>2]=32306;c[q+4>>2]=57762;c[q+8>>2]=31517;Db(11,32001,q);l=11;break b}b[p>>1]=b[p>>1]|n&8;if(!(a[D>>0]|0)){s=c[x+12>>2]|0;do if(b[k>>1]&2){l=s+8|0;n=x+36|0;k=c[n>>2]|0;if((c[l>>2]|0)==(x|0))c[l>>2]=k;q=c[x+32>>2]|0;r=(q|0)==0;if(r){c[s+4>>2]=k;l=k}else{c[q+36>>2]=k;l=c[n>>2]|0}if(l|0){c[l+32>>2]=q;break}c[s>>2]=q;if(r)a[s+33>>0]=2}while(0);A=s+12|0;c[A>>2]=(c[A>>2]|0)+-1;cb[c[29440>>2]&255](c[s+44>>2]|0,c[x>>2]|0,1);A=x;break}A=(c[F+24>>2]|0)+1|0;l=x+12|0;w=x+24|0;db[c[29444>>2]&127](c[(c[l>>2]|0)+44>>2]|0,c[x>>2]|0,c[w>>2]|0,A);c[w>>2]=A;w=b[k>>1]|0;if((w&10)==10){t=c[l>>2]|0;v=t+8|0;l=c[v>>2]|0;s=x+36|0;k=c[s>>2]|0;if((l|0)==(x|0)){c[v>>2]=k;u=k}else u=l;r=x+32|0;n=c[r>>2]|0;q=(n|0)==0;if(q){c[t+4>>2]=k;l=k}else{c[n+36>>2]=k;l=c[s>>2]|0}do if(!l){c[t>>2]=n;if(q){a[t+33>>0]=2;c[s>>2]=0;c[r>>2]=0;l=t;O=42;break}else{c[s>>2]=0;l=t;O=41;break}}else{c[l+32>>2]=n;n=c[t>>2]|0;c[s>>2]=0;c[r>>2]=n;if(!n){l=t;O=42}else{l=t;O=41}}while(0);if((O|0)==41)c[n+36>>2]=x;else if((O|0)==42){c[t+4>>2]=x;if(a[t+32>>0]|0)a[t+33>>0]=1}c[l>>2]=x;if((w&8)==0&(u|0)==0){c[v>>2]=x;A=x}else A=x}else A=x}else{A=0;y=0}while(0);v=C+24|0;z=c[v>>2]|0;x=C+12|0;db[c[29444>>2]&127](c[(c[x>>2]|0)+44>>2]|0,c[C>>2]|0,z,j);c[v>>2]=j;v=b[p>>1]|0;if((v&10)==10){t=c[x>>2]|0;w=t+8|0;l=c[w>>2]|0;s=C+36|0;k=c[s>>2]|0;if((l|0)==(C|0)){c[w>>2]=k;u=k}else u=l;r=C+32|0;n=c[r>>2]|0;q=(n|0)==0;if(q){c[t+4>>2]=k;l=k}else{c[n+36>>2]=k;l=c[s>>2]|0}do if(!l){c[t>>2]=n;if(q){a[t+33>>0]=2;c[s>>2]=0;c[r>>2]=0;l=t;O=69;break}else{c[s>>2]=0;l=t;O=68;break}}else{c[l+32>>2]=n;n=c[t>>2]|0;c[s>>2]=0;c[r>>2]=n;if(!n){l=t;O=69}else{l=t;O=68}}while(0);if((O|0)==68)c[n+36>>2]=C;else if((O|0)==69){c[t+4>>2]=C;if(a[t+32>>0]|0)a[t+33>>0]=1}c[l>>2]=C;if((v&8)==0&(u|0)==0)c[w>>2]=C}l=v&65535;if(l&17|0?(B=l&65519,b[p>>1]=B,l&1|0):0){k=(B^3)&65535;b[p>>1]=k;l=c[x>>2]|0;c[C+36>>2]=0;n=c[l>>2]|0;c[C+32>>2]=n;if(!n){c[l+4>>2]=C;if(a[l+32>>0]|0)a[l+33>>0]=1}else c[n+36>>2]=C;c[l>>2]=C;l=l+8|0;if((k&8)==0&(c[l>>2]|0)==0)c[l>>2]=C}do if(y&(a[D>>0]|0)!=0){l=A+12|0;v=A+24|0;db[c[29444>>2]&127](c[(c[l>>2]|0)+44>>2]|0,c[A>>2]|0,c[v>>2]|0,z);c[v>>2]=z;v=b[A+28>>1]|0;if((v&10)==10){s=c[l>>2]|0;u=s+8|0;l=c[u>>2]|0;r=A+36|0;p=c[r>>2]|0;if((l|0)==(A|0)){c[u>>2]=p;t=p}else t=l;q=A+32|0;n=c[q>>2]|0;k=(n|0)==0;if(k){c[s+4>>2]=p;l=p}else{c[n+36>>2]=p;l=c[r>>2]|0}do if(!l){c[s>>2]=n;if(k){a[s+33>>0]=2;c[r>>2]=0;c[q>>2]=0;l=s;O=94;break}else{c[r>>2]=0;l=s;O=93;break}}else{c[l+32>>2]=n;n=c[s>>2]|0;c[r>>2]=0;c[q>>2]=n;if(!n){l=s;O=94}else{l=s;O=93}}while(0);if((O|0)==93)c[n+36>>2]=A;else if((O|0)==94){c[s+4>>2]=A;if(a[s+32>>0]|0)a[s+33>>0]=1}c[l>>2]=A;if((v&8)==0&(t|0)==0)c[u>>2]=A}if(!(v&32)){Df(A);break}else{D=c[A+20>>2]|0;C=D+120|0;c[C>>2]=(c[C>>2]|0)+-1;D=D+136|0;c[A+16>>2]=c[D>>2];c[D>>2]=A;break}}while(0);do if(E|0){r=Za[c[F+204>>2]&127](F,E,M,0)|0;if(!r){l=c[M>>2]|0;p=l+28|0;n=b[p>>1]|8;b[p>>1]=n;k=n&65535;if(k&17){o=k&65519;n=o&65535;b[p>>1]=n;if(k&1){b[p>>1]=o^3;n=c[l+12>>2]|0;c[l+36>>2]=0;o=c[n>>2]|0;c[l+32>>2]=o;if(!o){c[n+4>>2]=l;if(a[n+32>>0]|0)a[n+33>>0]=1}else c[o+36>>2]=l;c[n>>2]=l;l=c[M>>2]|0;n=b[l+28>>1]|0}}if(!(n&32))Df(l);else{J=c[l+20>>2]|0;F=J+120|0;c[F>>2]=(c[F>>2]|0)+-1;J=J+136|0;c[l+16>>2]=c[J>>2];c[J>>2]=l}break}if(E>>>0<=(c[F+28>>2]|0)>>>0?(o=c[F+56>>2]|0,J=c[F+208>>2]|0,o|0):0){l=E+-1|0;m=c[o+8>>2]|0;c:do if(!m)O=109;else while(1){n=(l>>>0)/(m>>>0)|0;o=c[o+12+(n<<2)>>2]|0;if(!o)break c;l=l-(G(n,m)|0)|0;m=c[o+8>>2]|0;if(!m){O=109;break}}while(0);do if((O|0)==109){if((c[o>>2]|0)>>>0<4001){j=o+12+(l>>>3)|0;a[j>>0]=(1<<(l&7)^255)&d[j>>0];break}q=o+12|0;ew(J|0,q|0,500)|0;gw(q|0,0,500)|0;q=o+4|0;c[q>>2]=0;p=l+1|0;n=0;do{k=J+(n<<2)|0;l=c[k>>2]|0;if(!((l|0)==0|(l|0)==(p|0))){m=((l+-1|0)>>>0)%125|0;c[q>>2]=(c[q>>2]|0)+1;l=o+12+(m<<2)|0;if(c[l>>2]|0)do{l=m+1|0;m=l>>>0>124?0:l;l=o+12+(m<<2)|0}while((c[l>>2]|0)!=0);c[l>>2]=c[k>>2]}n=n+1|0}while((n|0)!=125)}while(0);c[R>>2]=r;R=r;Ra=S;return R|0}c[R>>2]=r;R=r;Ra=S;return R|0}while(0);c[R>>2]=0;c[H>>2]=j;switch(h<<24>>24){case 1:case 5:{l=hg(g)|0;c[R>>2]=l;if(l|0){R=l;Ra=S;return R|0}if(h<<24>>24==1){R=0;Ra=S;return R|0}break}default:{l=c[g+56>>2]|0;l=d[l+1>>0]<<16|d[l>>0]<<24|d[l+2>>0]<<8|d[l+3>>0];if(l|0?(ig(f,l,4,j,R),I=c[R>>2]|0,I|0):0){R=I;Ra=S;return R|0}}}l=c[f>>2]|0;l=Za[c[l+204>>2]&127](l,i,M,0)|0;if(l|0){c[R>>2]=l;R=l;Ra=S;return R|0}l=c[M>>2]|0;v=c[l+8>>2]|0;n=v+4|0;if((c[n>>2]|0)==(i|0))w=v+72|0;else{c[v+56>>2]=c[l+4>>2];w=v+72|0;c[w>>2]=l;c[v+52>>2]=f;c[n>>2]=i;a[v+9>>0]=(i|0)==1?100:0}c[R>>2]=0;l=c[w>>2]|0;n=c[l+20>>2]|0;do if((b[l+28>>1]&4)!=0?(c[n+24>>2]|0)>>>0>=(c[l+24>>2]|0)>>>0:0)if(!(c[n+96>>2]|0)){c[R>>2]=0;break}else{m=Ve(l)|0;O=152;break}else O=147;while(0);do if((O|0)==147){m=c[n+40>>2]|0;if(m|0){c[R>>2]=m;O=153;break}if((c[n+148>>2]|0)>>>0>(c[n+152>>2]|0)>>>0){m=Wf(l)|0;O=152;break}else{m=Xf(l)|0;O=152;break}}while(0);if((O|0)==152?(c[R>>2]=m,m|0):0)O=153;if((O|0)==153){if(!v){R=m;Ra=S;return R|0}l=c[w>>2]|0;if(!(b[l+28>>1]&32)){Df(l);R=m;Ra=S;return R|0}else{R=c[l+20>>2]|0;j=R+120|0;c[j>>2]=(c[j>>2]|0)+-1;R=R+136|0;c[l+16>>2]=c[R>>2];c[R>>2]=l;R=m;Ra=S;return R|0}}d:do if(h<<24>>24==4){l=c[v+56>>2]|0;m=l+1|0;n=l+2|0;o=l+3|0;if((d[m>>0]<<16|d[l>>0]<<24|d[n>>0]<<8|d[o>>0]|0)==(Q|0)){a[l>>0]=j>>>24;a[m>>0]=j>>>16;a[n>>0]=j>>>8;a[o>>0]=j;l=0;O=181;break}else{c[L>>2]=32306;c[L+4>>2]=66766;c[L+8>>2]=31517;Db(11,32001,L);l=11;O=181;break}}else{if((a[v>>0]|0)==0?(K=Gf(v)|0,K|0):0){l=K;O=181;break}L=b[v+24>>1]|0;u=L&65535;e:do if(L<<16>>16){n=v+56|0;t=v+26|0;s=v+64|0;o=v+80|0;p=M+16|0;k=M+12|0;q=M+18|0;r=v+52|0;if(h<<24>>24!=3){p=c[n>>2]|0;o=c[s>>2]|0;n=e[t>>1]|0;l=0;while(1){m=o+(l<<1)|0;m=p+((d[m>>0]<<8|d[m+1>>0])&n)|0;if((d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0]|0)==(Q|0))break;l=l+1|0;if(l>>>0>=u>>>0)break e}a[m>>0]=j>>>24;a[m+1>>0]=j>>>16;a[m+2>>0]=j>>>8;a[m+3>>0]=j;break}l=0;while(1){m=(c[s>>2]|0)+(l<<1)|0;m=(c[n>>2]|0)+((d[m>>0]<<8|d[m+1>>0])&e[t>>1])|0;cb[c[o>>2]&255](v,m,M);if((c[k>>2]|0)>>>0>(e[p>>1]|0)>>>0){m=m+(e[q>>1]|0)|0;if(m>>>0>((c[n>>2]|0)+(c[(c[r>>2]|0)+36>>2]|0)|0)>>>0){O=172;break}m=m+-4|0;if((d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0]|0)==(Q|0)){O=174;break}}l=l+1|0;if(l>>>0>=u>>>0)break e}if((O|0)==172){c[N>>2]=32306;c[N+4>>2]=66785;c[N+8>>2]=31517;Db(11,32001,N);l=11;O=181;break d}else if((O|0)==174){a[m>>0]=j>>>24;a[m+1>>0]=j>>>16;a[m+2>>0]=j>>>8;a[m+3>>0]=j;break}}else l=0;while(0);if((l|0)==(u|0)){do if(h<<24>>24==5){l=(c[v+56>>2]|0)+((d[v+9>>0]|0)+8)|0;m=l+1|0;n=l+2|0;o=l+3|0;if((d[m>>0]<<16|d[l>>0]<<24|d[n>>0]<<8|d[o>>0]|0)!=(Q|0))break;a[l>>0]=j>>>24;a[m>>0]=j>>>16;a[n>>0]=j>>>8;a[o>>0]=j;l=0;O=181;break d}while(0);c[P>>2]=32306;c[P+4>>2]=66803;c[P+8>>2]=31517;Db(11,32001,P);l=11}else l=0;c[R>>2]=l;if(v)O=183}while(0);if((O|0)==181){c[R>>2]=l;O=183}do if((O|0)==183){m=c[w>>2]|0;if(!(b[m+28>>1]&32)){Df(m);break}else{Q=c[m+20>>2]|0;P=Q+120|0;c[P>>2]=(c[P>>2]|0)+-1;Q=Q+136|0;c[m+16>>2]=c[Q>>2];c[Q>>2]=m;break}}while(0);if(l|0){R=l;Ra=S;return R|0}ig(f,j,h,i,R);R=c[R>>2]|0;Ra=S;return R|0}while(0);c[R>>2]=l;R=l;Ra=S;return R|0}function hg(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=Ra;Ra=Ra+48|0;x=B+24|0;t=B;y=B+36|0;u=f+52|0;z=c[u>>2]|0;w=f+4|0;A=c[w>>2]|0;if(!(a[f>>0]|0)){g=Gf(f)|0;c[y>>2]=g;if(g|0){A=g;Ra=B;return A|0}}else c[y>>2]=0;s=b[f+24>>1]|0;k=s&65535;a:do if(!(s<<16>>16))g=f+8|0;else{l=f+56|0;m=f+26|0;n=f+64|0;o=f+80|0;p=t+16|0;q=t+12|0;g=f+8|0;r=f+60|0;s=t+18|0;h=0;j=0;while(1){i=(c[n>>2]|0)+(h<<1)|0;i=(c[l>>2]|0)+((d[i>>0]<<8|d[i+1>>0])&e[m>>1])|0;do if((j|0)==0?(cb[c[o>>2]&255](f,i,t),v=e[p>>1]|0,(c[q>>2]|0)>>>0>v>>>0):0){j=c[r>>2]|0;if(j>>>0>=i>>>0?j>>>0<(i+v|0)>>>0:0){c[x>>2]=32306;c[x+4>>2]=64569;c[x+8>>2]=31517;Db(11,32001,x);c[y>>2]=11;break}j=i+((e[s>>1]|0)+-4)|0;ig(c[u>>2]|0,d[j+1>>0]<<16|d[j>>0]<<24|d[j+2>>0]<<8|d[j+3>>0],3,c[w>>2]|0,y)}while(0);if(!(a[g>>0]|0))ig(z,d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0],5,A,y);h=h+1|0;if((h|0)==(k|0))break a;j=c[y>>2]|0}}while(0);if(!(a[g>>0]|0)){f=(c[f+56>>2]|0)+((d[f+9>>0]|0)+8)|0;ig(z,d[f+1>>0]<<16|d[f>>0]<<24|d[f+2>>0]<<8|d[f+3>>0],5,A,y)}A=c[y>>2]|0;Ra=B;return A|0}function ig(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+48|0;m=r+32|0;l=r+16|0;j=r;q=r+44|0;if(c[i>>2]|0){Ra=r;return}switch(f|0){case 0:{c[j>>2]=32306;c[j+4>>2]=64184;c[j+8>>2]=31517;Db(11,32001,j);c[i>>2]=11;Ra=r;return}case 1:{k=0;break}default:{k=f+-2|0;k=k-((k>>>0)%(((((c[e+36>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(1073741824/((c[e+32>>2]|0)>>>0)|0|0)?3:2)+k|0}}j=c[e>>2]|0;j=Za[c[j+204>>2]&127](j,k,q,0)|0;if(j|0){c[i>>2]=j;Ra=r;return}n=c[q>>2]|0;a:do if(!(a[c[n+8>>2]>>0]|0)){l=(f-k|0)*5|0;j=l+-5|0;if((j|0)<0){c[m>>2]=32306;c[m+4>>2]=64202;c[m+8>>2]=31517;Db(11,32001,m);c[i>>2]=11;break}f=c[n+4>>2]|0;e=f+j|0;if((a[e>>0]|0)==g<<24>>24?(m=f+(l+-4)|0,(d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0]|0)==(h|0)):0)break;k=c[n+20>>2]|0;do if((b[n+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[n+24>>2]|0)>>>0:0)if(!(c[k+96>>2]|0)){c[i>>2]=0;break}else{o=Ve(n)|0;p=23;break}else p=18;while(0);do if((p|0)==18){j=c[k+40>>2]|0;if(j|0){c[i>>2]=j;break a}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){o=Wf(n)|0;p=23;break}else{o=Xf(n)|0;p=23;break}}while(0);if((p|0)==23?(c[i>>2]=o,o|0):0)break;a[e>>0]=g;i=f+(l+-4)|0;a[i>>0]=h>>>24;a[i+1>>0]=h>>>16;a[i+2>>0]=h>>>8;a[i+3>>0]=h}else{c[l>>2]=32306;c[l+4>>2]=64197;c[l+8>>2]=31517;Db(11,32001,l);c[i>>2]=11}while(0);j=c[q>>2]|0;if(!j){Ra=r;return}if(!(b[j+28>>1]&32)){Df(j);Ra=r;return}else{q=c[j+20>>2]|0;i=q+120|0;c[i>>2]=(c[i>>2]|0)+-1;q=q+136|0;c[j+16>>2]=c[q>>2];c[q>>2]=j;Ra=r;return}}function jg(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if(!d){n=0;return n|0}n=d+4|0;g=c[n>>2]|0;c[g+4>>2]=c[d>>2];g=c[g+8>>2]|0;if(!g){n=0;return n|0}k=(f|0)==0;a:while(1){b:do if(k){f=g+16|0;h=c[f>>2]|0;if(h)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);m=58;break}else{m=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);m=58;break}else m=58}else{l=g+1|0;if(a[l>>0]&1){f=g+16|0;h=c[f>>2]|0;if(!h){m=58;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);m=58;break}else{m=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);m=58;break}}switch(a[g>>0]|0){case 0:{c[g+4>>2]=0;f=ag(g)|0;if(f|0){k=f;break a}j=g+68|0;f=a[j>>0]|0;if(f<<24>>24>-1){if(f<<24>>24){i=0;do{h=c[(c[g+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);f=a[j>>0]|0}else{o=c[h+20>>2]|0;p=o+120|0;c[p>>2]=(c[p>>2]|0)+-1;o=o+136|0;c[h+16>>2]=c[o>>2];c[o>>2]=h}i=i+1|0}while((i|0)<(f<<24>>24|0))}f=c[(c[g+116>>2]|0)+72>>2]|0;if(!(b[f+28>>1]&32))Df(f);else{p=c[f+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[f+16>>2]=c[p>>2];c[p>>2]=f}a[j>>0]=-1}break}case 2:{a[g>>0]=0;f=ag(g)|0;if(f|0){k=f;break a}j=g+68|0;f=a[j>>0]|0;if(f<<24>>24>-1){if(f<<24>>24){i=0;do{h=c[(c[g+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);f=a[j>>0]|0}else{p=c[h+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[h+16>>2]=c[p>>2];c[p>>2]=h}i=i+1|0}while((i|0)<(f<<24>>24|0))}f=c[(c[g+116>>2]|0)+72>>2]|0;if(!(b[f+28>>1]&32))Df(f);else{p=c[f+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[f+16>>2]=c[p>>2];c[p>>2]=f}a[j>>0]=-1}break}default:break b}a[g>>0]=3;a[l>>0]=a[l>>0]&-15}while(0);if((m|0)==58){m=0;c[f>>2]=0;a[g>>0]=4;c[g+4>>2]=e}j=g+68|0;f=a[j>>0]|0;if(f<<24>>24>-1){if(f<<24>>24){i=0;do{h=c[(c[g+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);f=a[j>>0]|0}else{p=c[h+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[h+16>>2]=c[p>>2];c[p>>2]=h}i=i+1|0}while((i|0)<(f<<24>>24|0))}f=c[(c[g+116>>2]|0)+72>>2]|0;if(!(b[f+28>>1]&32))Df(f);else{p=c[f+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[f+16>>2]=c[p>>2];c[p>>2]=f}a[j>>0]=-1}g=c[g+24>>2]|0;if(!g){f=0;m=71;break}}if((m|0)==71)return f|0;a[l>>0]=a[l>>0]&-15;f=c[n>>2]|0;c[f+4>>2]=c[d>>2];f=c[f+8>>2]|0;if(!f){p=k;return p|0}do{g=f+16|0;h=c[g>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{p=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[g>>2]=0;a[f>>0]=4;c[f+4>>2]=k;j=f+68|0;g=a[j>>0]|0;if(g<<24>>24>-1){if(g<<24>>24){i=0;do{h=c[(c[f+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);g=a[j>>0]|0}else{p=c[h+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[h+16>>2]=c[p>>2];c[p>>2]=h}i=i+1|0}while((i|0)<(g<<24>>24|0))}g=c[(c[f+116>>2]|0)+72>>2]|0;if(!(b[g+28>>1]&32))Df(g);else{p=c[g+20>>2]|0;o=p+120|0;c[o>>2]=(c[o>>2]|0)+-1;p=p+136|0;c[g+16>>2]=c[p>>2];c[p>>2]=g}a[j>>0]=-1}f=c[f+24>>2]|0}while((f|0)!=0);f=k;return f|0}function kg(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;switch(d|0){case -16:{lg(a,e);return}case -15:case -17:case -7:case -14:case -13:{if(!e)return;if(a|0){if(c[a+480>>2]|0){Xd(a,e);return}d=e;if((c[a+304>>2]|0)>>>0<=d>>>0?(c[a+308>>2]|0)>>>0>d>>>0:0){d=a+300|0;c[e>>2]=c[d>>2];c[d>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}case -9:{if((e|0)==0|(c[a+480>>2]|0)!=0)return;d=(c[e>>2]|0)+-1|0;c[e>>2]=d;if(d|0)return;a=c[e+12>>2]|0;if(a|0){if(c[a+480>>2]|0){Xd(a,e);return}d=e;if((c[a+304>>2]|0)>>>0<=d>>>0?(c[a+308>>2]|0)>>>0>d>>>0:0){d=a+300|0;c[e>>2]=c[d>>2];c[d>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}case -8:{if(!(c[e+4>>2]&16))return;if(a|0){if(c[a+480>>2]|0){Xd(a,e);return}d=e;if((c[a+304>>2]|0)>>>0<=d>>>0?(c[a+308>>2]|0)>>>0>d>>>0:0){d=a+300|0;c[e>>2]=c[d>>2];c[d>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}case -11:{if(c[a+480>>2]|0){mg(a,e);return}if(!e)return;if(!((b[e+8>>1]&9216)==0?!(c[e+24>>2]|0):0))Cg(e);a=c[e+32>>2]|0;if(a|0){if(c[a+480>>2]|0){Xd(a,e);return}d=e;if((c[a+304>>2]|0)>>>0<=d>>>0?(c[a+308>>2]|0)>>>0>d>>>0:0){d=a+300|0;c[e>>2]=c[d>>2];c[d>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{d=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}case -12:{if(c[a+480>>2]|0)return;a=c[e>>2]|0;f=e+12|0;d=(c[f>>2]|0)+-1|0;c[f>>2]=d;if(d|0)return;d=c[e+8>>2]|0;if(d|0)Wa[c[(c[d>>2]|0)+16>>2]&127](d)|0;if(a|0){if(c[a+480>>2]|0){Xd(a,e);return}f=e;if((c[a+304>>2]|0)>>>0<=f>>>0?(c[a+308>>2]|0)>>>0>f>>>0:0){f=a+300|0;c[e>>2]=c[f>>2];c[f>>2]=e;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{f=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}default:return}}function lg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[b+4>>2]|0;a:do if(c[f+4>>2]&16){do if(a|0){d=a+480|0;if(!(c[d>>2]|0)){e=f;if((c[a+304>>2]|0)>>>0>e>>>0)break;if((c[a+308>>2]|0)>>>0<=e>>>0)break;e=a+300|0;c[f>>2]=c[e>>2];c[e>>2]=f}else Xd(a,f);e=14;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);e=12;break}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);e=12;break}}else e=12;while(0);if((e|0)==12)if(a){d=a+480|0;e=14}if((e|0)==14){if(c[d>>2]|0){Xd(a,b);return}f=b;if((c[a+304>>2]|0)>>>0<=f>>>0?(c[a+308>>2]|0)>>>0>f>>>0:0){a=a+300|0;c[b>>2]=c[a>>2];c[a>>2]=b;return}}if(!b)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{a=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a:do if((c[b+24>>2]|0)!=0?(f=c[b+20>>2]|0,(f|0)!=0):0){do if(a|0){d=a+480|0;if(!(c[d>>2]|0)){e=f;if((c[a+304>>2]|0)>>>0>e>>>0)break;if((c[a+308>>2]|0)>>>0<=e>>>0)break;e=a+300|0;c[f>>2]=c[e>>2];c[e>>2]=f}else Xd(a,f);e=15;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);e=13;break}else{e=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);e=13;break}}else e=13;while(0);if((e|0)==13)if(a){d=a+480|0;e=15}if((e|0)==15){if(c[d>>2]|0){Xd(a,b);return}f=b;if((c[a+304>>2]|0)>>>0<=f>>>0?(c[a+308>>2]|0)>>>0>f>>>0:0){a=a+300|0;c[b>>2]=c[a>>2];c[a>>2]=b;return}}if(!b)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{a=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function ng(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;e=a+12|0;d=(c[e>>2]|0)+-1|0;c[e>>2]=d;if(d|0)return;d=c[a+8>>2]|0;if(d|0)Wa[c[(c[d>>2]|0)+16>>2]&127](d)|0;if(b|0){if(c[b+480>>2]|0){Xd(b,a);return}e=a;if((c[b+304>>2]|0)>>>0<=e>>>0?(c[b+308>>2]|0)>>>0>e>>>0:0){e=b+300|0;c[a>>2]=c[e>>2];c[e>>2]=a;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{e=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function og(b){b=b|0;var d=0;d=b+81|0;if(a[d>>0]|0?(c[b+180>>2]|0)==0:0){a[d>>0]=0;c[b+264>>2]=0;d=b+272|0;c[d>>2]=(c[d>>2]|0)+-1}c[b+64>>2]=7;Ne(b,7);return}function pg(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0;N=Ra;Ra=Ra+64|0;C=N+40|0;F=N+32|0;E=N+24|0;D=N+16|0;z=N+8|0;y=N;B=N+48|0;J=c[f>>2]|0;K=f+20|0;if((c[K>>2]|0)!=770837923){M=0;Ra=N;return M|0}M=J+81|0;if(a[M>>0]|0)c[f+40>>2]=7;i=f+196|0;g=c[i>>2]|0;if(g|0){while(1){h=c[g+4>>2]|0;if(!h)break;else g=h}sg(g)|0;c[i>>2]=0;c[f+204>>2]=0}k=f+96|0;h=c[k>>2]|0;a:do if(h|0?(l=f+28|0,j=c[l>>2]|0,(j|0)>0):0){g=0;i=j;while(1){h=c[h+(g<<2)>>2]|0;if(!h)h=i;else{tg(f,h);c[(c[k>>2]|0)+(g<<2)>>2]=0;h=c[l>>2]|0}g=g+1|0;if((g|0)>=(h|0))break a;i=h;h=c[k>>2]|0}}while(0);g=c[f+88>>2]|0;b:do if(g|0?(m=c[f+24>>2]|0,m|0):0){p=g+(m*40|0)|0;k=c[g+32>>2]|0;l=k+480|0;h=(k|0)==0;m=k+304|0;n=k+308|0;o=k+300|0;if(c[l>>2]|0){if(h)while(1){do if(c[g+24>>2]|0?(q=c[g+20>>2]|0,q|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](q);break}else{G=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);break}while(0);g=g+40|0;if(g>>>0>=p>>>0)break b}while(1){do if(c[g+24>>2]|0?(r=c[g+20>>2]|0,r|0):0){if(c[l>>2]|0){Xd(k,r);break}G=r;if((c[m>>2]|0)>>>0<=G>>>0?(c[n>>2]|0)>>>0>G>>>0:0){c[r>>2]=c[o>>2];c[o>>2]=r;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{G=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);g=g+40|0;if(g>>>0>=p>>>0)break b}}if(h)while(1){i=g+8|0;if(!(b[i>>1]&9216)){j=g+24|0;if(c[j>>2]|0){h=c[g+20>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{G=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);c[j>>2]=0}}else Cg(g);b[i>>1]=128;g=g+40|0;if(g>>>0>=p>>>0)break b}do{h=g+8|0;if(!(b[h>>1]&9216)){i=g+24|0;if(c[i>>2]|0){j=c[g+20>>2]|0;do if(!(c[l>>2]|0)){G=j;if((c[m>>2]|0)>>>0<=G>>>0?(c[n>>2]|0)>>>0>G>>>0:0){c[j>>2]=c[o>>2];c[o>>2]=j;break}if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{G=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}else Xd(k,j);while(0);c[i>>2]=0}}else Cg(g);b[h>>1]=128;g=g+40|0}while(g>>>0

        >>0)}while(0);s=f+200|0;g=c[s>>2]|0;if(g|0)do{c[s>>2]=c[g+4>>2];h=g+80|0;j=g+60|0;i=c[j>>2]|0;k=h+(i*40|0)|0;l=g+64|0;if((c[l>>2]|0)>0){i=0;do{tg(c[g>>2]|0,c[k+(i<<2)>>2]|0);i=i+1|0}while((i|0)<(c[l>>2]|0));i=c[j>>2]|0}c:do if(i|0){r=h+(i*40|0)|0;m=c[g+112>>2]|0;n=m+480|0;i=(m|0)==0;o=m+304|0;p=m+308|0;q=m+300|0;if(c[n>>2]|0){if(i)while(1){do if(c[h+24>>2]|0?(t=c[h+20>>2]|0,t|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{G=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}while(0);h=h+40|0;if(h>>>0>=r>>>0)break c}while(1){d:do if(c[h+24>>2]|0?(u=c[h+20>>2]|0,u|0):0){if(c[n>>2]|0){Xd(m,u);break}i=u;do if((c[o>>2]|0)>>>0<=i>>>0){if((c[p>>2]|0)>>>0<=i>>>0)break;c[u>>2]=c[q>>2];c[q>>2]=u;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](u);break}else{G=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);break}}while(0);h=h+40|0;if(h>>>0>=r>>>0)break c}}if(i)while(1){i=h+8|0;if(!(b[i>>1]&9216)){j=h+24|0;if(c[j>>2]|0){k=c[h+20>>2]|0;do if(k|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{G=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}while(0);c[j>>2]=0}}else Cg(h);b[i>>1]=128;h=h+40|0;if(h>>>0>=r>>>0)break c}do{i=h+8|0;if(!(b[i>>1]&9216)){j=h+24|0;if(c[j>>2]|0){k=c[h+20>>2]|0;e:do if(!(c[n>>2]|0)){l=k;do if((c[o>>2]|0)>>>0<=l>>>0){if((c[p>>2]|0)>>>0<=l>>>0)break;c[k>>2]=c[q>>2];c[q>>2]=k;break e}while(0);if(!k)break;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{G=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}else Xd(m,k);while(0);c[j>>2]=0}}else Cg(h);b[i>>1]=128;h=h+40|0}while(h>>>0>>0)}while(0);j=c[c[g>>2]>>2]|0;o=g+40|0;h=c[o>>2]|0;f:do if(h|0){k=j+480|0;l=j+304|0;m=j+308|0;n=j+300|0;if(!j)while(1){i=c[h+12>>2]|0;if(i|0)ab[i&127](c[h+8>>2]|0);c[o>>2]=c[h+16>>2];if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{G=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}h=c[o>>2]|0;if(!h)break f}do{i=c[h+12>>2]|0;if(i|0)ab[i&127](c[h+8>>2]|0);c[o>>2]=c[h+16>>2];do if(!(c[k>>2]|0)){G=h;if((c[l>>2]|0)>>>0<=G>>>0?(c[m>>2]|0)>>>0>G>>>0:0){c[h>>2]=c[n>>2];c[n>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{G=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(j,h);while(0);h=c[o>>2]|0}while((h|0)!=0)}while(0);h=c[c[g>>2]>>2]|0;do if(h){if(c[h+480>>2]|0){Xd(h,g);break}G=g;if((c[h+304>>2]|0)>>>0<=G>>>0?(c[h+308>>2]|0)>>>0>G>>>0:0){G=h+300|0;c[g>>2]=c[G>>2];c[G>>2]=g}else H=145}else H=145;while(0);do if((H|0)==145){H=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{G=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=c[s>>2]|0}while((g|0)!=0);n=f+216|0;g=c[n>>2]|0;g:do if(g|0){i=c[f>>2]|0;j=i+480|0;k=i+304|0;l=i+308|0;m=i+300|0;if(!i)while(1){h=c[g+12>>2]|0;if(h|0)ab[h&127](c[g+8>>2]|0);c[n>>2]=c[g+16>>2];if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{G=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}g=c[n>>2]|0;if(!g)break g}do{h=c[g+12>>2]|0;if(h|0)ab[h&127](c[g+8>>2]|0);c[n>>2]=c[g+16>>2];do if(!(c[j>>2]|0)){G=g;if((c[k>>2]|0)>>>0<=G>>>0?(c[l>>2]|0)>>>0>G>>>0:0){c[g>>2]=c[m>>2];c[m>>2]=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{G=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-G;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}else Xd(i,g);while(0);g=c[n>>2]|0}while((g|0)!=0)}while(0);u=f+36|0;if((c[u>>2]|0)>-1){G=f+149|0;if((d[G>>0]|d[G+1>>0]<<8)&512){h=c[f+156>>2]|0;if(h|0?(w=c[f>>2]|0,v=c[w+16>>2]|0,w=c[w+20>>2]|0,(w|0)>0):0){g=0;do{if(((g|0)!=1?1<>2]|0,x|0):0)c[(c[x+4>>2]|0)+4>>2]=c[x>>2];g=g+1|0}while((g|0)!=(w|0))}t=f+40|0;h=c[t>>2]|0;i=h&255;h:do switch(i<<24>>24){case 13:case 7:case 9:case 10:{g=d[G>>0]|d[G+1>>0]<<8;if((h&255|0)!=9|(g&256)==0){switch(i<<24>>24){case 7:case 13:{if(g&128){g=2;i=1;break h}break}default:{}}rg(J,516);i=J+444|0;g=c[i>>2]|0;if(g|0){j=J+480|0;k=J+304|0;l=J+308|0;m=J+300|0;do{c[i>>2]=c[g+24>>2];i:do if(!(c[j>>2]|0)){h=g;do if((c[k>>2]|0)>>>0<=h>>>0){if((c[l>>2]|0)>>>0<=h>>>0)break;c[g>>2]=c[m>>2];c[m>>2]=g;break i}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{x=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}else Xd(J,g);while(0);g=c[i>>2]|0}while((g|0)!=0)}c[J+452>>2]=0;c[J+456>>2]=0;a[J+87>>0]=0;a[J+79>>0]=1;c[f+44>>2]=0;g=0;h=c[t>>2]|0;i=1}else{g=0;i=1}break}default:{g=0;i=0}}while(0);if((h|0)==0?(x=f+64|0,w=c[x+4>>2]|0,(w|0)>0|(w|0)==0&(c[x>>2]|0)>>>0>0):0){c[t>>2]=787;a[f+146>>0]=2;Ag(f,32436,y)}s=J+332|0;h=c[s>>2]|0;if((h|0)>0?(c[J+356>>2]|0)==0:0)H=460;else if((a[J+79>>0]|0)!=0?(c[J+176>>2]|0)==((((d[G>>0]|d[G+1>>0]<<8)&65535)>>>8&1^1)&65535|0):0){if((c[t>>2]|0)!=0?i|(a[f+146>>0]|0)!=3:0){rg(J,0);c[f+44>>2]=0}else H=205;j:do if((H|0)==205){x=c[f>>2]|0;y=x+464|0;x=x+472|0;y=Sv(c[x>>2]|0,c[x+4>>2]|0,c[y>>2]|0,c[y+4>>2]|0)|0;x=L()|0;k:do if((x|0)>0|(x|0)==0&y>>>0>0){c[t>>2]=787;a[f+146>>0]=2;Ag(f,32436,z);if(!((d[G>>0]|d[G+1>>0]<<8)&256)){h=787;break}else g=1;Ra=N;return g|0}else{r=J+356|0;p=c[r>>2]|0;c[r>>2]=0;q=f+124|0;l:do if((h|0)>0){o=0;m:while(1){i=c[(c[p+(o<<2)>>2]|0)+8>>2]|0;do if(i|0){h=c[(c[i>>2]|0)+60>>2]|0;if(!h)break;h=Wa[h&127](i)|0;n=i+8|0;if(c[n>>2]|0){k=c[f>>2]|0;i=c[q>>2]|0;n:do if(i|0){do if(k|0){if(c[k+480>>2]|0){Xd(k,i);break n}j=i;if((c[k+304>>2]|0)>>>0>j>>>0)break;if((c[k+308>>2]|0)>>>0<=j>>>0)break;z=k+300|0;c[i>>2]=c[z>>2];c[z>>2]=i;break n}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{z=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);l=c[n>>2]|0;o:do if(!l)i=0;else{m=(Eu(l)|0)+1|0;p:do if(!k){z=Sv(m|0,0,-1,-1)|0;y=L()|0;if(y>>>0>0|(y|0)==0&z>>>0>2147483390){i=0;break o}if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](m)|0;H=247;break}i=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){z=c[14978]|0;y=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;x=L()|0;c[14768]=((x|0)<0|(x|0)==0&y>>>0<=z>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i){i=0;break o}j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0)break;c[14987]=j}else{if(c[k+272>>2]|0){if(a[k+81>>0]|0){i=0;break o}}else{do if(!(0<0|(0==0?(e[k+276>>1]|0)>>>0>>0:0))){j=k+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];H=k+284|0;c[H>>2]=(c[H>>2]|0)+1;H=247;break p}j=k+296|0;i=c[j>>2]|0;if(!i){i=k+292|0;break}else{c[j>>2]=c[i>>2];H=k+284|0;c[H>>2]=(c[H>>2]|0)+1;H=247;break p}}else i=k+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(k,m,0)|0;H=247}while(0);if((H|0)==247){H=0;if(!i){i=0;break}}ew(i|0,l|0,m|0)|0}while(0);c[q>>2]=i;i=c[n>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{z=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-z;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[n>>2]=0}if(h|0)break m}while(0);o=o+1|0;if((o|0)>=(c[s>>2]|0)){H=257;break l}}c[r>>2]=p;H=454}else H=257;while(0);q:do if((H|0)==257){c[r>>2]=p;p=J+20|0;q=J+16|0;o=0;i=0;j=0;while(1){if((o|0)>=(c[p>>2]|0))break;k=c[q>>2]|0;h=c[k+(o<<4)+4>>2]|0;r:do if(!h)h=0;else{if((a[h+8>>0]|0)!=2){h=0;break}j=c[h+4>>2]|0;c[j+4>>2]=c[h>>2];j=c[j>>2]|0;do if((a[k+(o<<4)+8>>0]|0)!=1){if(!(11>>>(d[j+5>>0]|0)&1))break;i=i+((a[j+12>>0]|0)==0&1)|0}while(0);h=c[j+40>>2]|0;if(h|0){j=1;break}if(c[j+216>>2]|0){h=0;j=1;break}k=j+17|0;l=j+13|0;m=j+60|0;n=j+176|0;j=j+180|0;s:while(1){switch(a[k>>0]|0){case 0:case 1:case 2:case 3:case 5:break;default:{h=0;j=1;break r}}if(a[l>>0]|0)break;h=c[m>>2]|0;h=Xa[c[(c[h>>2]|0)+28>>2]&255](h,4)|0;switch(h|0){case 0:break s;case 5:break;default:{j=1;break r}}if(!(Wa[c[n>>2]&127](c[j>>2]|0)|0)){h=5;j=1;break r}}a[k>>0]=4;h=0;j=1}while(0);if(!h)o=o+1|0;else{H=454;break q}}do if(j|0){h=c[J+216>>2]|0;if(!h)break;if(Wa[h&127](c[J+212>>2]|0)|0){h=531;break k}}while(0);j=c[c[(c[(c[q>>2]|0)+4>>2]|0)+4>>2]>>2]|0;k=(a[j+15>>0]|0)==0;if(k){h=c[j+168>>2]|0;if(h|0)H=278}else{h=59952;H=278}do if((H|0)==278){if((i|0)<2|((Eu(h)|0)&1073741823|0)==0)break;n=c[J>>2]|0;if(k){h=c[j+168>>2]|0;if(!h){i=0;h=0}else H=320}else{h=59952;H=320}if((H|0)==320)i=(Eu(h)|0)&1073741823;c[D>>2]=h;o=dd(J,32466,D)|0;t:do if(o){j=o+i|0;k=n+32|0;i=0;u:while(1){do if(i|0){if(i>>>0>100){H=327;break u}if((i|0)!=1)break;c[E>>2]=o;Db(13,32496,E)}while(0);Fb(4,D);h=c[D>>2]|0;c[C>>2]=h>>>8;c[C+4>>2]=h&255;Cb(13,j,32511,C)|0;h=Za[c[k>>2]&127](n,o,0,B)|0;l=(h|0)==0;if(l&(c[B>>2]|0)!=0)i=i+1|0;else{H=329;break}}if((H|0)==327){c[F>>2]=o;Db(13,32482,F);Ya[c[n+28>>2]&127](n,o,0)|0;H=330}else if((H|0)==329)if(l)H=330;v:do if((H|0)==330){k=c[n+4>>2]|0;F=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;E=L()|0;if(E>>>0>0|(E|0)==0&F>>>0>2147483390){h=7;break}do if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](k)|0;if(!h){h=7;break v}else m=h}else{h=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){F=c[14978]|0;E=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;D=L()|0;c[14768]=((D|0)<0|(D|0)==0&E>>>0<=F>>>0)&1}i=Wa[c[29340>>2]&127](h)|0;if(!i){h=7;break v}h=Wa[c[29352>>2]&127](i)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0<=(c[14987]|0)>>>0){m=i;break}c[14987]=h;m=i}while(0);gw(m|0,0,k|0)|0;h=_a[c[n+24>>2]&127](n,o,m,16406,0)|0;if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{H=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}h=c[p>>2]|0;w:do if((h|0)>0){l=0;k=0;j=0;x:while(1){i=c[(c[q>>2]|0)+(l<<4)+4>>2]|0;do if(!i)i=k;else{if((a[i+8>>0]|0)!=2){i=k;break}i=c[(c[c[i+4>>2]>>2]|0)+172>>2]|0;if(!i){i=k;break}h=((Eu(i)|0)&1073741823)+1|0;h=_a[c[(c[m>>2]|0)+12>>2]&127](m,i,h,k,j)|0;if(h|0)break x;i=Sv(k|0,j|0,((Eu(i)|0)&1073741823)+1|0,0)|0;j=L()|0;h=c[p>>2]|0}while(0);l=l+1|0;if((l|0)>=(h|0))break w;else k=i}i=c[m>>2]|0;if(i|0){Wa[c[i+4>>2]&127](m)|0;c[m>>2]=0}if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{H=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}Ya[c[n+28>>2]&127](n,o,0)|0;if(c[J+480>>2]|0){Xd(J,o);break t}i=o;do if((c[J+304>>2]|0)>>>0<=i>>>0){if((c[J+308>>2]|0)>>>0<=i>>>0)break;H=J+300|0;c[o>>2]=c[H>>2];c[H>>2]=o;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break t}else{H=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break t}}while(0);do if(!((Wa[c[(c[m>>2]|0)+48>>2]&127](m)|0)&1024)){h=Xa[c[(c[m>>2]|0)+20>>2]&255](m,2)|0;if(!h)break;i=c[m>>2]|0;if(i|0){Wa[c[i+4>>2]&127](m)|0;c[m>>2]=0}if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{H=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}Ya[c[n+28>>2]&127](n,o,0)|0;if(c[J+480>>2]|0){Xd(J,o);break t}i=o;do if((c[J+304>>2]|0)>>>0<=i>>>0){if((c[J+308>>2]|0)>>>0<=i>>>0)break;H=J+300|0;c[o>>2]=c[H>>2];c[H>>2]=o;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break t}else{H=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break t}}while(0);i=0;while(1){if((i|0)>=(c[p>>2]|0)){h=0;i=1;break}h=c[(c[q>>2]|0)+(i<<4)+4>>2]|0;if(!h)h=0;else h=cc(h,o)|0;if(!h)i=i+1|0;else{i=0;break}}j=c[m>>2]|0;if(j|0){Wa[c[j+4>>2]&127](m)|0;c[m>>2]=0}if(!(c[7324]|0))ab[c[29344>>2]&127](m);else{F=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m)}if(!i){if(c[J+480>>2]|0){Xd(J,o);break t}i=o;do if((c[J+304>>2]|0)>>>0<=i>>>0){if((c[J+308>>2]|0)>>>0<=i>>>0)break;H=J+300|0;c[o>>2]=c[H>>2];c[H>>2]=o;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break t}else{H=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break t}}h=Ya[c[n+28>>2]&127](n,o,1)|0;n=J+480|0;y:do if(!(c[n>>2]|0)){i=o;do if((c[J+304>>2]|0)>>>0<=i>>>0){if((c[J+308>>2]|0)>>>0<=i>>>0)break;F=J+300|0;c[o>>2]=c[F>>2];c[F>>2]=o;break y}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{F=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else Xd(J,o);while(0);if(h|0)break t;h=c[p>>2]|0;if((h|0)>0){j=0;do{i=c[(c[q>>2]|0)+(j<<4)+4>>2]|0;if(i){bc(i,1)|0;h=c[p>>2]|0}j=j+1|0}while((j|0)<(h|0))}m=c[r>>2]|0;if(m|0){c[r>>2]=0;if((c[s>>2]|0)>0){k=0;do{l=c[m+(k<<2)>>2]|0;j=l+8|0;h=c[j>>2]|0;do if(h|0){i=c[(c[h>>2]|0)+64>>2]|0;if(!i)break;Wa[i&127](h)|0}while(0);c[l+20>>2]=0;i=c[l>>2]|0;E=l+12|0;F=(c[E>>2]|0)+-1|0;c[E>>2]=F;z:do if(!F){h=c[j>>2]|0;if(h|0)Wa[c[(c[h>>2]|0)+16>>2]&127](h)|0;do if(i|0){if(c[i+480>>2]|0){Xd(i,l);break z}h=l;if((c[i+304>>2]|0)>>>0>h>>>0)break;if((c[i+308>>2]|0)>>>0<=h>>>0)break;F=i+300|0;c[l>>2]=c[F>>2];c[F>>2]=l;break z}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{F=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);k=k+1|0}while((k|0)<(c[s>>2]|0))}A:do if(!(c[n>>2]|0)){h=m;do if((c[J+304>>2]|0)>>>0<=h>>>0){if((c[J+308>>2]|0)>>>0<=h>>>0)break;F=J+300|0;c[m>>2]=c[F>>2];c[F>>2]=m;break A}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{F=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}else Xd(J,m);while(0);c[s>>2]=0}break q}while(0);do if(J|0){if(c[J+480>>2]|0){Xd(J,o);break t}i=o;if((c[J+304>>2]|0)>>>0>i>>>0)break;if((c[J+308>>2]|0)>>>0<=i>>>0)break;H=J+300|0;c[o>>2]=c[H>>2];c[H>>2]=o;break t}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{H=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}}else h=7;while(0);H=454;break q}while(0);i=0;while(1){h=c[p>>2]|0;if((i|0)>=(h|0))break;h=c[(c[q>>2]|0)+(i<<4)+4>>2]|0;if(!h)h=0;else h=cc(h,0)|0;if(!h)i=i+1|0;else{H=454;break q}}if((h|0)>0){h=0;do{i=c[(c[q>>2]|0)+(h<<4)+4>>2]|0;if(i|0?(A=bc(i,0)|0,A|0):0){h=A;H=454;break q}h=h+1|0}while((h|0)<(c[p>>2]|0))}m=c[r>>2]|0;if(!m)break;c[r>>2]=0;if((c[s>>2]|0)>0){k=0;do{l=c[m+(k<<2)>>2]|0;j=l+8|0;h=c[j>>2]|0;do if(h|0){i=c[(c[h>>2]|0)+64>>2]|0;if(!i)break;Wa[i&127](h)|0}while(0);c[l+20>>2]=0;i=c[l>>2]|0;E=l+12|0;F=(c[E>>2]|0)+-1|0;c[E>>2]=F;B:do if(!F){h=c[j>>2]|0;if(h|0)Wa[c[(c[h>>2]|0)+16>>2]&127](h)|0;do if(i|0){if(c[i+480>>2]|0){Xd(i,l);break B}h=l;if((c[i+304>>2]|0)>>>0>h>>>0)break;if((c[i+308>>2]|0)>>>0<=h>>>0)break;F=i+300|0;c[l>>2]=c[F>>2];c[F>>2]=l;break B}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{F=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);k=k+1|0}while((k|0)<(c[s>>2]|0))}C:do if(!(c[J+480>>2]|0)){h=m;do if((c[J+304>>2]|0)>>>0<=h>>>0){if((c[J+308>>2]|0)>>>0<=h>>>0)break;F=J+300|0;c[m>>2]=c[F>>2];c[F>>2]=m;break C}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{F=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-F;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}else Xd(J,m);while(0);c[s>>2]=0}while(0);D:do if((H|0)==454){switch(h|0){case 0:break D;case 5:break;default:break k}if(!((d[G>>0]|d[G+1>>0]<<8)&256)){h=5;break k}else g=5;Ra=N;return g|0}while(0);E=J+464|0;H=J+32|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;E=H;F=c[E+4>>2]|0;c[H>>2]=c[E>>2]&-524289;c[H+4>>2]=F;H=J+24|0;c[H>>2]=c[H>>2]&-2;break j}while(0);c[t>>2]=h;rg(J,0);c[f+44>>2]=0}while(0);c[J+456>>2]=0;H=476}else H=460;E:do if((H|0)==460)if(!g)if(!(c[t>>2]|0)){g=1;H=477}else{switch(a[f+146>>0]|0){case 3:{g=1;H=477;break E}case 2:{g=2;H=477;break E}default:{}}rg(J,516);j=J+444|0;h=c[j>>2]|0;if(h|0){k=J+480|0;l=J+304|0;m=J+308|0;n=J+300|0;do{c[j>>2]=c[h+24>>2];F:do if(!(c[k>>2]|0)){i=h;do if((c[l>>2]|0)>>>0<=i>>>0){if((c[m>>2]|0)>>>0<=i>>>0)break;c[h>>2]=c[n>>2];c[n>>2]=h;break F}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{H=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-H;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(J,h);while(0);h=c[j>>2]|0}while((h|0)!=0)}c[J+452>>2]=0;c[J+456>>2]=0;a[J+87>>0]=0;a[J+79>>0]=1;c[f+44>>2]=0;H=476}else H=477;while(0);if((H|0)==476)if(!g)g=0;else H=477;if((H|0)==477)if(((c[(c[f>>2]|0)+456>>2]|0)!=0?(c[f+48>>2]|0)!=0:0)?(I=Bg(f,g)|0,(I|0)!=0):0){H=c[t>>2]|0;if((H|0)==0|(H&255|0)==19){c[t>>2]=I;h=f+124|0;i=c[h>>2]|0;G:do if(i|0){if(c[J+480>>2]|0){Xd(J,i);break}j=i;do if((c[J+304>>2]|0)>>>0<=j>>>0){if((c[J+308>>2]|0)>>>0<=j>>>0)break;I=J+300|0;c[i>>2]=c[I>>2];c[I>>2]=i;break G}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{I=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);c[h>>2]=0}rg(J,516);j=J+444|0;h=c[j>>2]|0;if(h|0){k=J+480|0;l=J+304|0;m=J+308|0;n=J+300|0;do{c[j>>2]=c[h+24>>2];H:do if(!(c[k>>2]|0)){i=h;do if((c[l>>2]|0)>>>0<=i>>>0){if((c[m>>2]|0)>>>0<=i>>>0)break;c[h>>2]=c[n>>2];c[n>>2]=h;break H}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{I=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-I;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}else Xd(J,h);while(0);h=c[j>>2]|0}while((h|0)!=0)}c[J+452>>2]=0;c[J+456>>2]=0;a[J+87>>0]=0;a[J+79>>0]=1;c[f+44>>2]=0}if((d[G>>0]|d[G+1>>0]<<8)&32){h=f+44|0;if((g|0)==2)g=0;else{g=c[h>>2]|0;I=J+104|0;c[I>>2]=(c[I>>2]|0)+g}c[J+100>>2]=g;c[h>>2]=0}}if((c[u>>2]|0)>-1){g=J+168|0;c[g>>2]=(c[g>>2]|0)+-1;g=d[G>>0]|d[G+1>>0]<<8;if(!(g&256)){g=J+176|0;c[g>>2]=(c[g>>2]|0)+-1;g=d[G>>0]|d[G+1>>0]<<8}if(g&512){J=J+172|0;c[J>>2]=(c[J>>2]|0)+-1}}}c[K>>2]=832317811;g=f+40|0;if(!(a[M>>0]|0)){M=(c[g>>2]|0)==5?5:0;Ra=N;return M|0}else{c[g>>2]=7;M=0;Ra=N;return M|0}return 0}function qg(d){d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=c[d>>2]|0;l=c[d+40>>2]|0;i=d+124|0;if(!(c[i>>2]|0)){d=c[k+260>>2]|0;if(!d){k=k+64|0;c[k>>2]=l;return l|0}f=d+8|0;if(!(b[f>>1]&9216)){b[f>>1]=1;k=k+64|0;c[k>>2]=l;return l|0}else{Dg(d);k=k+64|0;c[k>>2]=l;return l|0}}j=k+82|0;a[j>>0]=(a[j>>0]|0)+1<<24>>24;h=k+260|0;d=c[h>>2]|0;do if(!d){a:do if(c[k+272>>2]|0){if(!(a[k+81>>0]|0))g=13}else{do if((e[k+276>>1]|0)>=40){d=k+300|0;f=c[d>>2]|0;if(f|0){c[d>>2]=c[f>>2];g=k+284|0;c[g>>2]=(c[g>>2]|0)+1;g=14;break a}d=k+296|0;f=c[d>>2]|0;if(!f){d=k+292|0;break}else{c[d>>2]=c[f>>2];g=k+284|0;c[g>>2]=(c[g>>2]|0)+1;g=14;break a}}else d=k+288|0;while(0);c[d>>2]=(c[d>>2]|0)+1;g=13}while(0);if((g|0)==13){f=_d(k,40,0)|0;g=14}if((g|0)==14?f|0:0){d=f;g=d+40|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(g|0));b[f+8>>1]=1;c[f+32>>2]=k;c[h>>2]=f;d=f;g=17;break}c[h>>2]=0}else g=17;while(0);if((g|0)==17)yc(d,c[i>>2]|0,-1,1,-1)|0;a[j>>0]=(a[j>>0]|0)+-1<<24>>24;k=k+64|0;c[k>>2]=l;return l|0}function rg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=b+20|0;l=c[m>>2]|0;i=(l|0)>0;if(i){g=c[b+16>>2]|0;f=0;do{h=c[g+(f<<4)+4>>2]|0;if(h|0)c[(c[h+4>>2]|0)+4>>2]=c[h>>2];f=f+1|0}while((f|0)!=(l|0))}if(!(c[b+24>>2]&1))n=0;else n=(a[b+165>>0]|0)==0;if(i){j=b+16|0;k=(n^1)&1;f=0;i=0;h=l;while(1){g=c[(c[j>>2]|0)+(i<<4)+4>>2]|0;if(!g)g=h;else{f=(a[g+8>>0]|0)==2?1:f;ec(g,e,k);g=c[m>>2]|0}i=i+1|0;if((i|0)>=(g|0)){e=f;break}else h=g}}else e=0;f=b+356|0;l=c[f>>2]|0;if(l|0){c[f>>2]=0;j=b+332|0;if((c[j>>2]|0)>0){i=0;do{k=c[l+(i<<2)>>2]|0;g=k+8|0;f=c[g>>2]|0;if(f|0?(o=c[(c[f>>2]|0)+68>>2]|0,o|0):0)Wa[o&127](f)|0;c[k+20>>2]=0;h=c[k>>2]|0;f=k+12|0;m=(c[f>>2]|0)+-1|0;c[f>>2]=m;do if(!m){f=c[g>>2]|0;if(f|0)Wa[c[(c[f>>2]|0)+16>>2]&127](f)|0;if(h|0){if(c[h+480>>2]|0){Xd(h,k);break}m=k;if((c[h+304>>2]|0)>>>0<=m>>>0?(c[h+308>>2]|0)>>>0>m>>>0:0){m=h+300|0;c[k>>2]=c[m>>2];c[m>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{m=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);i=i+1|0}while((i|0)<(c[j>>2]|0))}do if(!(c[b+480>>2]|0)){o=l;if((c[b+304>>2]|0)>>>0<=o>>>0?(c[b+308>>2]|0)>>>0>o>>>0:0){o=b+300|0;c[l>>2]=c[o>>2];c[o>>2]=l;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{o=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}else Xd(b,l);while(0);c[j>>2]=0}if(n){f=c[b+4>>2]|0;if(f|0)do{o=f+149|0;n=(d[o>>0]|d[o+1>>0]<<8)&-4|1;a[o>>0]=n;a[o+1>>0]=n>>8;f=c[f+8>>2]|0}while((f|0)!=0);$b(b)}n=b+464|0;f=b+32|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;n=f;o=c[n+4>>2]|0;c[f>>2]=c[n>>2]&-524289;c[f+4>>2]=o;f=c[b+224>>2]|0;if(!f)return;if((e|0)==0?a[b+79>>0]|0:0)return;ab[f&127](c[b+220>>2]|0);return}function sg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=c[a>>2]|0;g=h+96|0;e=c[g>>2]|0;f=h+28|0;a:do if(e|0?(d=c[f>>2]|0,(d|0)>0):0){b=0;while(1){e=c[e+(b<<2)>>2]|0;if(e){tg(h,e);c[(c[g>>2]|0)+(b<<2)>>2]=0;d=c[f>>2]|0}b=b+1|0;if((b|0)>=(d|0))break a;e=c[g>>2]|0}}while(0);c[h+104>>2]=c[a+8>>2];c[h+108>>2]=c[a+52>>2];c[h+88>>2]=c[a+16>>2];c[h+24>>2]=c[a+56>>2];c[g>>2]=c[a+20>>2];c[f>>2]=c[a+44>>2];g=a+32|0;b=c[g+4>>2]|0;i=c[h>>2]|0;j=i+40|0;c[j>>2]=c[g>>2];c[j+4>>2]=b;c[h+44>>2]=c[a+68>>2];c[i+100>>2]=c[a+72>>2];j=h+216|0;b=c[j>>2]|0;if(!b){i=a+40|0;h=c[i>>2]|0;c[j>>2]=h;c[i>>2]=0;a=a+48|0;a=c[a>>2]|0;return a|0}e=i+480|0;f=i+304|0;g=i+308|0;h=i+300|0;if(!i){do{d=c[b+12>>2]|0;if(d|0)ab[d&127](c[b+8>>2]|0);c[j>>2]=c[b+16>>2];if(!(c[7324]|0))ab[c[29344>>2]&127](b);else{i=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b)}b=c[j>>2]|0}while((b|0)!=0);i=a+40|0;h=c[i>>2]|0;c[j>>2]=h;c[i>>2]=0;a=a+48|0;a=c[a>>2]|0;return a|0}do{d=c[b+12>>2]|0;if(d|0)ab[d&127](c[b+8>>2]|0);c[j>>2]=c[b+16>>2];do if(!(c[e>>2]|0)){d=b;if((c[f>>2]|0)>>>0<=d>>>0?(c[g>>2]|0)>>>0>d>>>0:0){c[b>>2]=c[h>>2];c[h>>2]=b;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}}else Xd(i,b);while(0);b=c[j>>2]|0}while((b|0)!=0);i=a+40|0;h=c[i>>2]|0;c[j>>2]=h;c[i>>2]=0;a=a+48|0;a=c[a>>2]|0;return a|0}function tg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;if(!d)return;switch(a[d>>0]|0){case 1:{f=c[b>>2]|0;b=d+40|0;d=c[b>>2]|0;if(!d)return;wg(f,d);e=c[d+40>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);do if(f){if(c[f+480>>2]|0){Xd(f,d);break}h=d;if((c[f+304>>2]|0)>>>0<=h>>>0?(c[f+308>>2]|0)>>>0>h>>>0:0){h=f+300|0;c[d>>2]=c[h>>2];c[h>>2]=d}else g=14}else g=14;while(0);do if((g|0)==14)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{h=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[b>>2]=0;return}case 0:{if(!(a[d+5>>0]&1)){vg(c[d+40>>2]|0);return}b=c[d+8>>2]|0;if(!b)return;ug(b);return}case 2:{h=c[d+40>>2]|0;f=c[h>>2]|0;g=c[f>>2]|0;f=f+4|0;c[f>>2]=(c[f>>2]|0)+-1;Wa[c[g+28>>2]&127](h)|0;return}default:return}}function ug(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=c[b+4>>2]|0;c[i+4>>2]=c[b>>2];d=c[i+8>>2]|0;if(d|0)do{e=d;d=c[d+24>>2]|0;if((c[e+8>>2]|0)==(b|0))vg(e)}while((d|0)!=0);ec(b,0,0);a:do if(a[b+9>>0]|0){e=i+64|0;f=c[e>>2]|0;c[e>>2]=f+-1;if((f|0)<2){d=c[14822]|0;if((d|0)==(i|0)){c[14822]=c[i+68>>2];h=15;break}if(!d)h=15;else{while(1){e=c[d+68>>2]|0;if((e|0)==(i|0))break;if(!e){h=15;break a}else d=e}c[d+68>>2]=c[i+68>>2];h=15}}}else h=15;while(0);do if((h|0)==15){Te(c[i>>2]|0,c[b>>2]|0);e=c[i+52>>2]|0;d=i+48|0;if(e){f=c[d>>2]|0;if(f|0){ab[e&127](f);h=18}}else h=18;do if((h|0)==18?(g=c[d>>2]|0,g|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{f=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);f=i+80|0;d=c[f>>2]|0;if(d|0){e=d+-4|0;c[f>>2]=e;d=e;do if((c[14816]|0)>>>0<=d>>>0)if((c[14817]|0)>>>0>d>>>0){c[14979]=(c[14979]|0)+-1;c[e>>2]=c[14819];c[14819]=e;g=(c[14820]|0)+1|0;c[14820]=g;c[14821]=(g|0)<(c[14815]|0)&1;break}else{d=Wa[c[29352>>2]&127](e)|0;h=28;break}else{d=Wa[c[29352>>2]&127](e)|0;h=28}while(0);do if((h|0)==28){c[14980]=(c[14980]|0)-d;if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);c[f>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{h=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);e=c[b+28>>2]|0;d=b+24|0;if(e|0)c[e+24>>2]=c[d>>2];d=c[d>>2]|0;if(d|0)c[d+28>>2]=e;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{i=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}function vg(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=d+8|0;e=c[m>>2]|0;if(!e)return;i=c[d+20>>2]|0;c[(c[e+4>>2]|0)+4>>2]=c[e>>2];f=i+8|0;e=c[f>>2]|0;a:do if((e|0)==(d|0))c[f>>2]=c[d+24>>2];else{while(1){f=c[e+24>>2]|0;if((f|0)==(d|0))break;if(!f)break a;else e=f}c[e+24>>2]=c[d+24>>2]}while(0);h=d+68|0;e=a[h>>0]|0;if(e<<24>>24>-1){if(e<<24>>24){g=0;do{f=c[(c[d+120+(g<<2)>>2]|0)+72>>2]|0;if(!(b[f+28>>1]&32)){Df(f);e=a[h>>0]|0}else{n=c[f+20>>2]|0;o=n+120|0;c[o>>2]=(c[o>>2]|0)+-1;n=n+136|0;c[f+16>>2]=c[n>>2];c[n>>2]=f}g=g+1|0}while((g|0)<(e<<24>>24|0))}e=c[(c[d+116>>2]|0)+72>>2]|0;if(!(b[e+28>>1]&32))Df(e);else{o=c[e+20>>2]|0;n=o+120|0;c[n>>2]=(c[n>>2]|0)+-1;o=o+136|0;c[e+16>>2]=c[o>>2];c[o>>2]=e}a[h>>0]=-1}if(((a[i+20>>0]|0)==0?(j=i+12|0,k=c[j>>2]|0,k|0):0)?(c[j>>2]=0,o=c[k+72>>2]|0,l=c[o+20>>2]|0,Df(o),(c[(c[l+212>>2]|0)+12>>2]|0)==0):0){switch(a[l+16>>0]|0){case 0:case 6:break;case 1:{if(!(a[l+4>>0]|0))uf(l,0,0)|0;break}default:tf(l)|0}vf(l)}e=c[d+12>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{o=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);e=c[d+16>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{o=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);c[m>>2]=0;return}function wg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=e+20|0;l=c[k>>2]|0;do if(l|0){if((c[l>>2]|0)>0){m=l+12|0;j=0;do{h=c[m>>2]|0;i=h+(j*56|0)|0;g=c[h+(j*56|0)+28>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{p=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);g=c[h+(j*56|0)+36>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{p=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);g=c[h+(j*56|0)+48>>2]|0;do if(g|0){xg(c[g+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{p=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=i+56|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(g|0));j=j+1|0}while((j|0)<(c[l>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{p=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[k>>2]=0;k=e+59|0;if(a[k>>0]|0){l=(b|0)==0;m=b+480|0;n=b+304|0;o=b+308|0;p=b+300|0;j=0;do{i=e+64+(j*72|0)|0;g=c[e+64+(j*72|0)+12>>2]|0;do if(g|0){if(!l){if(c[m>>2]|0){Xd(b,g);break}h=g;if((c[n>>2]|0)>>>0<=h>>>0?(c[o>>2]|0)>>>0>h>>>0:0){c[g>>2]=c[p>>2];c[p>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{h=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=c[e+64+(j*72|0)+16>>2]|0;if(g|0)do{h=g;g=c[g+4>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](h);else{q=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h)}}while((g|0)!=0);g=c[e+64+(j*72|0)+40>>2]|0;do if(g|0){h=c[g>>2]|0;if(h|0){Wa[c[h+4>>2]&127](g)|0;c[g>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=c[e+64+(j*72|0)+56>>2]|0;do if(g|0){h=c[g>>2]|0;if(h|0){Wa[c[h+4>>2]&127](g)|0;c[g>>2]=0}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);g=i+72|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(g|0));c[e+64+(j*72|0)+8>>2]=e;j=j+1|0}while(j>>>0<(d[k>>0]|0)>>>0)}h=e+36|0;if((c[e+40>>2]|0)==0?(f=c[h>>2]|0,f|0):0)do{g=f;f=c[f+4>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);c[h>>2]=0;c[e+44>>2]=0;a[e+56>>0]=0;c[e+48>>2]=0;c[e+8>>2]=0;f=e+32|0;g=c[f>>2]|0;if(!g){c[f>>2]=0;return}if(b|0){if(c[b+480>>2]|0){Xd(b,g);c[f>>2]=0;return}q=g;if((c[b+304>>2]|0)>>>0<=q>>>0?(c[b+308>>2]|0)>>>0>q>>>0:0){q=b+300|0;c[g>>2]=c[q>>2];c[q>>2]=g;c[f>>2]=0;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);c[f>>2]=0;return}else{q=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);c[f>>2]=0;return}}function xg(a){a=a|0;var b=0,d=0;if(!a)return;if((c[a>>2]|0)>0){d=a+12|0;b=0;do{yg((c[d>>2]|0)+(b*56|0)|0);b=b+1|0}while((b|0)<(c[a>>2]|0))}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function yg(a){a=a|0;var b=0,d=0;b=c[a+28>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);b=c[a+36>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{d=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);zg(c[a+48>>2]|0);b=a;a=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function zg(a){a=a|0;var b=0;if(!a)return;xg(c[a+4>>2]|0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);return}else{b=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-b;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);return}}function Ag(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+112|0;h=n+16|0;l=n+88|0;k=n;f=c[b>>2]|0;m=b+124|0;g=c[m>>2]|0;do if(g|0){if(f|0){if(c[f+480>>2]|0){Xd(f,g);break}j=g;if((c[f+304>>2]|0)>>>0<=j>>>0?(c[f+308>>2]|0)>>>0>j>>>0:0){j=f+300|0;c[g>>2]=c[j>>2];c[j>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{j=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);c[k>>2]=e;j=c[b>>2]|0;g=c[j+108>>2]|0;i=l+4|0;c[i>>2]=h;c[l>>2]=j;c[l+8>>2]=70;f=l+12|0;c[f>>2]=g;g=l+16|0;c[g>>2]=0;h=l+20|0;a[h>>0]=0;e=l+21|0;a[e>>0]=1;tb(l,d,k);b=c[i>>2]|0;if(((b|0)!=0?(a[b+(c[g>>2]|0)>>0]=0,(c[f>>2]|0)!=0):0)?(a[e>>0]&4)==0:0)f=$d(l)|0;else f=c[i>>2]|0;if((a[h>>0]|0)!=7){c[m>>2]=f;Ra=n;return}b=j+81|0;if(a[b>>0]|0){c[m>>2]=f;Ra=n;return}if(a[j+82>>0]|0){c[m>>2]=f;Ra=n;return}a[b>>0]=1;if((c[j+180>>2]|0)>0)c[j+264>>2]=1;b=j+272|0;c[b>>2]=(c[b>>2]|0)+1;b=c[j+236>>2]|0;if(!b){c[m>>2]=f;Ra=n;return}c[b+12>>2]=7;c[m>>2]=f;Ra=n;return}function Bg(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=c[e>>2]|0;q=e+48|0;r=c[q>>2]|0;s=r+-1|0;p=t+20|0;h=c[p>>2]|0;if((h|0)>0){n=t+16|0;o=(r|0)<1;if((f|0)==2){l=0;g=0;do{k=c[(c[n>>2]|0)+(l<<4)+4>>2]|0;if(k){i=k+8|0;do if((a[i>>0]|0)==2){j=c[k+4>>2]|0;c[j+4>>2]=c[k>>2];h=c[j+8>>2]|0;if(h|0?(m=$f(h,0,0)|0,m|0):0){h=m;break}h=wf(c[j>>2]|0,2,s)|0;if(!h){if(o?b[j+22>>1]&16:0)c[j+44>>2]=0;h=Rf(j)|0;u=c[(c[j+12>>2]|0)+56>>2]|0;c[j+44>>2]=d[u+29>>0]<<16|d[u+28>>0]<<24|d[u+30>>0]<<8|d[u+31>>0];if(!h)if((a[i>>0]|0)==2){i=c[k+4>>2]|0;c[i+4>>2]=c[k>>2];h=wf(c[i>>2]|0,1,s)|0;if(!h){if(o?b[i+22>>1]&16:0)c[i+44>>2]=0;h=Rf(i)|0;u=c[(c[i+12>>2]|0)+56>>2]|0;c[i+44>>2]=d[u+29>>0]<<16|d[u+28>>0]<<24|d[u+30>>0]<<8|d[u+31>>0]}}else h=0}}else h=0;while(0);g=(g|0)==0?h:g;h=c[p>>2]|0}l=l+1|0}while((l|0)<(h|0))}else{k=0;g=0;do{i=c[(c[n>>2]|0)+(k<<4)+4>>2]|0;if(i){if((a[i+8>>0]|0)==2){j=c[i+4>>2]|0;c[j+4>>2]=c[i>>2];h=wf(c[j>>2]|0,1,s)|0;if(!h){if(o?b[j+22>>1]&16:0)c[j+44>>2]=0;h=Rf(j)|0;u=c[(c[j+12>>2]|0)+56>>2]|0;c[j+44>>2]=d[u+29>>0]<<16|d[u+28>>0]<<24|d[u+30>>0]<<8|d[u+31>>0]}}else h=0;g=(g|0)==0?h:g;h=c[p>>2]|0}k=k+1|0}while((k|0)<(h|0))}u=t+456|0;c[u>>2]=(c[u>>2]|0)+-1;c[q>>2]=0;if(!g)h=33;else h=76}else{h=t+456|0;c[h>>2]=(c[h>>2]|0)+-1;c[q>>2]=0;h=33}a:do if((h|0)==33){o=t+356|0;b:do if((f|0)==2){if(!(c[o>>2]|0)){g=0;break a}n=t+332|0;m=0;while(1){if((m|0)>=(c[n>>2]|0))break b;l=c[(c[o>>2]|0)+(m<<2)>>2]|0;g=c[c[l+4>>2]>>2]|0;j=l+8|0;i=c[j>>2]|0;do if((i|0)!=0?(c[g>>2]|0)>1:0){k=l+12|0;h=(c[k>>2]|0)+1|0;c[k>>2]=h;g=c[g+88>>2]|0;if((g|0)!=0?(c[l+20>>2]|0)>=(r|0):0){g=Xa[g&255](i,s)|0;h=c[k>>2]|0}else g=0;i=c[l>>2]|0;u=h+-1|0;c[k>>2]=u;if(!u){h=c[j>>2]|0;if(h|0)Wa[c[(c[h>>2]|0)+16>>2]&127](h)|0;if(i|0){if(c[i+480>>2]|0){Xd(i,l);break}u=l;if((c[i+304>>2]|0)>>>0<=u>>>0?(c[i+308>>2]|0)>>>0>u>>>0:0){u=i+300|0;c[l>>2]=c[u>>2];c[u>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{u=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}}else g=0;while(0);if(!g)m=m+1|0;else{h=76;break a}}}while(0);if(!(c[o>>2]|0)){g=0;h=76}else{n=t+332|0;m=0;while(1){if((m|0)>=(c[n>>2]|0)){g=0;h=76;break a}l=c[(c[o>>2]|0)+(m<<2)>>2]|0;g=c[c[l+4>>2]>>2]|0;j=l+8|0;i=c[j>>2]|0;do if((i|0)!=0?(c[g>>2]|0)>1:0){k=l+12|0;h=(c[k>>2]|0)+1|0;c[k>>2]=h;g=c[g+84>>2]|0;if((g|0)!=0?(c[l+20>>2]|0)>=(r|0):0){g=Xa[g&255](i,s)|0;h=c[k>>2]|0}else g=0;i=c[l>>2]|0;u=h+-1|0;c[k>>2]=u;if(!u){h=c[j>>2]|0;if(h|0)Wa[c[(c[h>>2]|0)+16>>2]&127](h)|0;if(i|0){if(c[i+480>>2]|0){Xd(i,l);break}u=l;if((c[i+304>>2]|0)>>>0<=u>>>0?(c[i+308>>2]|0)>>>0>u>>>0:0){u=i+300|0;c[l>>2]=c[u>>2];c[u>>2]=l;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{u=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}}else g=0;while(0);if(!g)m=m+1|0;else{h=76;break}}}}while(0);if((h|0)==76)if((f|0)!=2){u=g;return u|0}s=e+72|0;u=c[s+4>>2]|0;f=t+464|0;c[f>>2]=c[s>>2];c[f+4>>2]=u;f=e+80|0;e=c[f+4>>2]|0;u=t+472|0;c[u>>2]=c[f>>2];c[u+4>>2]=e;u=g;return u|0}function Cg(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;if(b[a+8>>1]&9216)Dg(a);e=a+24|0;if(!(c[e>>2]|0)){g=a+16|0;c[g>>2]=0;return}f=c[a+32>>2]|0;d=c[a+20>>2]|0;do if(f){if(c[f+480>>2]|0){Xd(f,d);break}h=d;if((c[f+304>>2]|0)>>>0<=h>>>0?(c[f+308>>2]|0)>>>0>h>>>0:0){h=f+300|0;c[d>>2]=c[h>>2];c[h>>2]=d}else g=10}else g=10;while(0);do if((g|0)==10?d|0:0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{h=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[e>>2]=0;h=a+16|0;c[h>>2]=0;return}function Dg(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=Ra;Ra=Ra+80|0;h=k+40|0;i=k;j=a+8|0;d=b[j>>1]|0;if(d&8192){e=c[a>>2]|0;f=h+12|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;f=i;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));b[i+8>>1]=1;d=a+32|0;c[i+32>>2]=c[d>>2];c[h>>2]=i;c[h+8>>2]=a;c[h+4>>2]=e;ab[c[e+20>>2]&127](h);do if((c[a+24>>2]|0)>0){d=c[d>>2]|0;e=c[a+20>>2]|0;if(d|0){if(c[d+480>>2]|0){Xd(d,e);break}h=e;if((c[d+304>>2]|0)>>>0<=h>>>0?(c[d+308>>2]|0)>>>0>h>>>0:0){h=d+300|0;c[e>>2]=c[h>>2];c[h>>2]=e;break}}if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{h=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);f=a;d=i;g=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(g|0));d=b[j>>1]|0}if(!(d&1024)){b[j>>1]=1;Ra=k;return}ab[c[a+36>>2]&127](c[a+16>>2]|0);b[j>>1]=1;Ra=k;return}function Eg(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=d+24|0;h=(c[p>>2]|0)>0;if((g|0)!=0&h?(m=d+16|0,j=c[m>>2]|0,k=d+20|0,(j|0)==(c[k>>2]|0)):0){l=c[d+32>>2]|0;g=((f|0)<0)<<31>>31;i=(j|0)==0;a:do if(!i){h=j;if(((c[l+304>>2]|0)>>>0<=h>>>0?(c[l+308>>2]|0)>>>0>h>>>0:0)?!(0>>0|(0==(g|0)?(e[l+276>>1]|0)>>>0>>0:0)):0){h=j;break}h=Zd(l,j,f,g)|0;if(!(i|(h|0)!=0)){if(c[l+480>>2]|0){Xd(l,j);h=0;break}f=j;if((c[l+304>>2]|0)>>>0<=f>>>0?(c[l+308>>2]|0)>>>0>f>>>0:0){h=l+300|0;c[j>>2]=c[h>>2];c[h>>2]=j;h=0;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);h=0;break}else{h=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);h=0;break}}}else{if(c[l+272>>2]|0){if(a[l+81>>0]|0){h=0;break}}else{do if(!(0>>0|(0==(g|0)?(e[l+276>>1]|0)>>>0>>0:0))){i=l+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];f=l+284|0;c[f>>2]=(c[f>>2]|0)+1;break a}i=l+296|0;h=c[i>>2]|0;if(!h){h=l+292|0;break}else{c[i>>2]=c[h>>2];f=l+284|0;c[f>>2]=(c[f>>2]|0)+1;break a}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(l,f,g)|0}while(0);c[k>>2]=h;c[m>>2]=h;j=0}else{j=d+32|0;do if(h){h=c[j>>2]|0;i=c[d+20>>2]|0;if(h|0){if(c[h+480>>2]|0){Xd(h,i);break}m=i;if((c[h+304>>2]|0)>>>0<=m>>>0?(c[h+308>>2]|0)>>>0>m>>>0:0){m=h+300|0;c[i>>2]=c[m>>2];c[m>>2]=i;break}}if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{m=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-m;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);j=c[j>>2]|0;k=((f|0)<0)<<31>>31;b:do if(!j){m=Sv(f|0,k|0,-1,-1)|0;l=L()|0;if(!(l>>>0>0|(l|0)==0&m>>>0>2147483390)){if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](f)|0;break}j=Wa[c[29356>>2]&127](f)|0;if((c[14985]|0)>>>0>>0)c[14985]=f;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){f=c[14978]|0;m=Tv(h|0,i|0,j|0,((j|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=f>>>0)&1}i=Wa[c[29340>>2]&127](j)|0;if(i){h=Wa[c[29352>>2]&127](i)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;h=i}else h=i}else h=0}else h=0}else{if(c[j+272>>2]|0){if(a[j+81>>0]|0){h=0;break}}else{do if(!(0>>0|(0==(k|0)?(e[j+276>>1]|0)>>>0>>0:0))){i=j+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];f=j+284|0;c[f>>2]=(c[f>>2]|0)+1;break b}i=j+296|0;h=c[i>>2]|0;if(!h){h=j+292|0;break}else{c[i>>2]=c[h>>2];f=j+284|0;c[f>>2]=(c[f>>2]|0)+1;break b}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(j,f,k)|0}while(0);k=d+20|0;c[k>>2]=h;j=g}if(!h){h=d+8|0;if(!(b[h>>1]&9216))b[h>>1]=1;else Dg(d);c[d+16>>2]=0;c[p>>2]=0;d=7;return d|0}i=c[d+32>>2]|0;if(((i|0)!=0?(n=h,(c[i+304>>2]|0)>>>0<=n>>>0):0)?(c[i+308>>2]|0)>>>0>n>>>0:0)h=e[i+276>>1]|0;else h=Wa[c[29352>>2]&127](h)|0;c[p>>2]=h;if(j|0?(o=c[d+16>>2]|0,o|0):0)ew(c[k>>2]|0,o|0,c[d+12>>2]|0)|0;j=d+8|0;h=b[j>>1]|0;if(!(h&1024))i=d+16|0;else{i=d+16|0;ab[c[d+36>>2]&127](c[i>>2]|0);h=b[j>>1]|0}c[i>>2]=c[k>>2];b[j>>1]=h&-7169;d=0;return d|0}function Fg(a,b){a=a|0;b=b|0;if(!(Gg(a,b)|0)){b=0;return b|0}b=c[a+12>>2]|0;return b|0}function Gg(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=e+8|0;g=b[l>>1]|0;h=g&65535;if(h&18){do if(h&16384){i=e+12|0;h=(c[e>>2]|0)+(c[i>>2]|0)|0;if((h|0)<1)if(!(g&16))break;else g=1;else g=h;if(!(Eg(e,g,1)|0)){gw((c[e+16>>2]|0)+(c[i>>2]|0)|0,0,c[e>>2]|0)|0;c[i>>2]=(c[i>>2]|0)+(c[e>>2]|0);g=b[l>>1]&-16897;b[l>>1]=g;break}else{f=0;return f|0}}while(0);b[l>>1]=g|2;g=e+10|0;h=f&255;i=h&247;if((i|0)!=(d[g>>0]|0))Ig(e,i&255)|0;if(h&8|0?(k=e+16|0,c[k>>2]&1|0):0){h=b[l>>1]|0;i=h&65535;do if(i&18){do if(i&16384){j=e+12|0;i=(c[e>>2]|0)+(c[j>>2]|0)|0;if((i|0)<1)if(!(h&16))break;else h=1;else h=i;if(!(Eg(e,h,1)|0)){gw((c[k>>2]|0)+(c[j>>2]|0)|0,0,c[e>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+(c[e>>2]|0);h=b[l>>1]&-16897;b[l>>1]=h;break}else{f=0;return f|0}}while(0);if(c[e+24>>2]|0?(c[k>>2]|0)==(c[e+20>>2]|0):0)break;if(!(Jg(e)|0)){h=b[l>>1]|0;break}else{f=0;return f|0}}while(0);b[l>>1]=h&-4097}if((b[l>>1]&514)==2)Jg(e)|0}else{Hg(e,f,0)|0;g=e+10|0}if((a[g>>0]|0)!=(f&-9)<<24>>24){f=0;return f|0}f=c[e+16>>2]|0;return f|0}function Hg(d,e,f){d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=Ra;Ra=Ra+16|0;m=n+8|0;l=n;j=d+8|0;k=b[j>>1]|0;do if((c[d+24>>2]|0)<32){if(!(Eg(d,32,0)|0)){i=d+16|0;h=i;i=c[i>>2]|0;break}a[d+10>>0]=0;m=7;Ra=n;return m|0}else{i=c[d+20>>2]|0;h=d+16|0;c[h>>2]=i;b[j>>1]=k&13}while(0);if(!(k&4)){g[m>>3]=+g[d>>3];Cb(32,i,32529,m)|0}else{o=d;k=c[o+4>>2]|0;m=l;c[m>>2]=c[o>>2];c[m+4>>2]=k;Cb(32,i,32524,l)|0}o=(Eu(c[h>>2]|0)|0)&1073741823;c[d+12>>2]=o;a[d+10>>0]=1;o=b[j>>1]|514;b[j>>1]=f<<24>>24==0?o:o&-13;if(e<<24>>24==1){o=0;Ra=n;return o|0}Ig(d,e)|0;o=0;Ra=n;return o|0}function Ig(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=f+10|0;h=g<<24>>24==1;if(!(h|(a[w>>0]|0)==1)){k=f+8|0;h=b[k>>1]|0;i=h&65535;do if(i&18){do if(i&16384){j=f+12|0;i=(c[f>>2]|0)+(c[j>>2]|0)|0;if((i|0)<1)if(!(h&16))break;else h=1;else h=i;if(!(Eg(f,h,1)|0)){gw((c[f+16>>2]|0)+(c[j>>2]|0)|0,0,c[f>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+(c[f>>2]|0);h=b[k>>1]&-16897;b[k>>1]=h;break}else{w=7;return w|0}}while(0);if(c[f+24>>2]|0?(c[f+16>>2]|0)==(c[f+20>>2]|0):0)break;if(!(Jg(f)|0)){h=b[k>>1]|0;break}else{w=7;return w|0}}while(0);b[k>>1]=h&-4097;h=c[f+16>>2]|0;f=c[f+12>>2]&-2;i=h+f|0;if((f|0)>0)do{v=a[h>>0]|0;f=h+1|0;a[h>>0]=a[f>>0]|0;h=h+2|0;a[f>>0]=v}while(h>>>0>>0);a[w>>0]=g;w=0;return w|0}s=f+12|0;i=c[s>>2]|0;if(h){i=i&-2;c[s>>2]=i;n=cw(i|0,((i|0)<0)<<31>>31|0,1)|0;m=L()|0;n=n|1}else{n=cw(i|0,((i|0)<0)<<31>>31|0,1)|0;n=Sv(n|0,L()|0,2,0)|0;m=L()|0}t=f+16|0;k=c[t>>2]|0;r=k+i|0;u=f+32|0;l=c[u>>2]|0;a:do if(!l){q=Sv(n|0,m|0,-1,-1)|0;p=L()|0;if(p>>>0>0|(p|0)==0&q>>>0>2147483390){w=7;return w|0}if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](n)|0;o=43;break}l=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;j=59064;h=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&h>>>0>0){q=c[14978]|0;p=Tv(h|0,j|0,l|0,((l|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&p>>>0<=q>>>0)&1}j=Wa[c[29340>>2]&127](l)|0;if(!j){w=7;return w|0}h=Wa[c[29352>>2]&127](j)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0){c[14987]=h;q=j}else q=j}else{if(c[l+272>>2]|0){if(a[l+81>>0]|0){w=7;return w|0}}else{do if(!(m>>>0>0|((m|0)==0?n>>>0>(e[l+276>>1]|0)>>>0:0))){j=l+300|0;h=c[j>>2]|0;if(h|0){c[j>>2]=c[h>>2];o=l+284|0;c[o>>2]=(c[o>>2]|0)+1;o=43;break a}j=l+296|0;h=c[j>>2]|0;if(!h){h=l+292|0;break}else{c[j>>2]=c[h>>2];o=l+284|0;c[o>>2]=(c[o>>2]|0)+1;o=43;break a}}else h=l+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(l,n,m)|0;o=43}while(0);if((o|0)==43)if(!h){w=7;return w|0}else q=h;switch(a[w>>0]|0){case 1:{h=(i|0)>0;if(g<<24>>24==2)if(h){h=q;i=k;do{k=i+1|0;p=a[i>>0]|0;i=p&255;if((p&255)>191){i=d[2736+(i+-192)>>0]|0;b:do if((k|0)==(r|0)){j=i;i=r}else{j=i;i=k;while(1){k=a[i>>0]|0;if((k&-64)<<24>>24!=-128)break b;i=i+1|0;j=j<<6|k&63;if((i|0)==(r|0)){i=r;break}}}while(0);if(!((j&-2|0)==65534|(j>>>0<128|(j&-2048|0)==55296)))if(j>>>0<65536)o=55;else{l=j+-65536|0;a[h>>0]=l>>>10&192|j>>>10&63;a[h+1>>0]=l>>>18&3|216;a[h+2>>0]=j;l=h+3|0;k=4;j=j>>>8&3|220}else{j=65533;o=55}}else{j=i;i=k;o=55}if((o|0)==55){o=0;a[h>>0]=j;l=h+1|0;k=2;j=j>>>8}h=h+k|0;a[l>>0]=j}while(i>>>0>>0)}else h=q;else if(h){n=q;h=k;while(1){i=h+1|0;p=a[h>>0]|0;h=p&255;if((p&255)>191){h=d[2736+(h+-192)>>0]|0;c:do if((i|0)==(r|0))i=r;else while(1){j=a[i>>0]|0;if((j&-64)<<24>>24!=-128)break c;i=i+1|0;h=h<<6|j&63;if((i|0)==(r|0)){i=r;break}}while(0);if(!((h&-2|0)==65534|(h>>>0<128|(h&-2048|0)==55296)))if(h>>>0<65536)o=67;else{m=h+-65536|0;a[n>>0]=m>>>18&3|216;a[n+1>>0]=m>>>10&192|h>>>10&63;m=h;j=4;k=n+2|0;l=3;h=h>>>8&3|220}else{h=65533;o=67}}else o=67;if((o|0)==67){o=0;m=h;j=2;k=n;l=1;h=h>>>8}a[k>>0]=h;h=n+j|0;a[n+l>>0]=m;if(i>>>0>>0){n=h;h=i}else break}}else h=q;c[s>>2]=h-q;a[h>>0]=0;h=h+1|0;break}case 2:{if((i|0)>0){h=q;do{i=d[k>>0]|0;l=k+2|0;p=d[k+1>>0]|0;j=p<<8|i;if(l>>>0>>0&(p&248|0)==216){j=(j<<10&983040)+65536|i<<10&64512|d[l>>0]|d[k+3>>0]<<8&768;k=k+4|0}else k=l;if(j>>>0<128){l=h;i=1}else{if(j>>>0<2048){o=h;i=2;l=1;m=192;n=31}else{if(j>>>0<65536){m=h;i=3;l=2;n=1;o=224;p=15}else{a[h>>0]=j>>>18&7|240;m=h+1|0;i=4;l=3;n=2;o=128;p=63}a[m>>0]=j>>>12&p|o;o=h+n|0;m=128;n=63}a[o>>0]=j>>>6&n|m;l=h+l|0;j=j&63|128}h=h+i|0;a[l>>0]=j}while(k>>>0>>0);o=93}else{h=q;o=93}break}default:if((i|0)>0){h=q;while(1){p=d[k>>0]|0;i=k+2|0;l=d[k+1>>0]|0;j=p<<8|l;if(i>>>0>>0&(p&248|0)==216){p=k+4|0;j=(j<<10&983040)+65536|l<<10&64512|d[k+3>>0]|d[i>>0]<<8&768}else p=i;if(j>>>0<128){k=h;i=1}else{if(j>>>0<2048){n=h;i=2;k=1;l=192;m=31}else{if(j>>>0<65536){l=h;i=3;k=2;m=1;n=224;o=15}else{a[h>>0]=j>>>18&7|240;l=h+1|0;i=4;k=3;m=2;n=128;o=63}a[l>>0]=j>>>12&o|n;n=h+m|0;l=128;m=63}a[n>>0]=j>>>6&m|l;k=h+k|0;j=j&63|128}h=h+i|0;a[k>>0]=j;if(p>>>0>>0)k=p;else{o=93;break}}}else{h=q;o=93}}if((o|0)==93)c[s>>2]=h-q;a[h>>0]=0;h=f+8|0;i=b[h>>1]|0;if(!((i&9216)==0?!(c[f+24>>2]|0):0))Cg(f);b[h>>1]=i&-32739|514;a[w>>0]=g;c[t>>2]=q;c[f+20>>2]=q;h=c[u>>2]|0;if(((h|0)!=0?(v=q,(c[h+304>>2]|0)>>>0<=v>>>0):0)?(c[h+308>>2]|0)>>>0>v>>>0:0)h=e[h+276>>1]|0;else h=Wa[c[29352>>2]&127](q)|0;c[f+24>>2]=h;w=0;return w|0}function Jg(d){d=d|0;var e=0,f=0;e=d+12|0;if(Eg(d,(c[e>>2]|0)+2|0,1)|0){e=7;return e|0}f=d+16|0;a[(c[f>>2]|0)+(c[e>>2]|0)>>0]=0;a[(c[f>>2]|0)+((c[e>>2]|0)+1)>>0]=0;e=d+8|0;b[e>>1]=b[e>>1]|512;e=0;return e|0}function Kg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=Ra;Ra=Ra+16|0;d=e;g[d>>3]=0.0;Lg(c,d,b,a)|0;Ra=e;return +(+g[d>>3])}function Lg(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;g[c>>3]=0.0;j=f&255;if(f<<24>>24==1){j=b;i=1;q=1;f=e}else{f=3-j|0;a:do if((f|0)<(e|0))while(1){if(a[b+f>>0]|0){i=0;break a}f=f+2|0;if((f|0)>=(e|0)){i=1;break}}else i=1;while(0);j=b+(j&1)|0;q=2;f=f^1}u=b+f|0;if(j>>>0>=u>>>0){c=0;return c|0}f=j;while(1){j=a[f>>0]|0;if(!(a[880+(j&255)>>0]&1))break;f=f+q|0;if(f>>>0>=u>>>0){f=0;t=69;break}}if((t|0)==69)return f|0;switch(j<<24>>24){case 45:{s=-1;f=f+q|0;break}case 43:{s=1;f=f+q|0;break}default:s=1}b:do if(f>>>0>>0){j=0;m=0;b=0;do{e=a[f>>0]|0;if(!(((m|0)<214748364|(m|0)==214748364&b>>>0<3435973835)&((e&255)+-48|0)>>>0<10))break b;m=Yv(b|0,m|0,10,0)|0;b=(e<<24>>24)+-48|0;b=Sv(m|0,L()|0,b|0,((b|0)<0)<<31>>31|0)|0;m=L()|0;f=f+q|0;j=j+1|0}while(f>>>0>>0)}else{j=0;b=0;m=0}while(0);c:do if(f>>>0>>0){l=0;while(1){e=a[f>>0]|0;if(((e&255)+-48|0)>>>0>=10)break;f=f+q|0;j=j+1|0;e=l+1|0;if(f>>>0>>0)l=e;else{q=1;l=0;p=1;break c}}d:do if(e<<24>>24==46){f=f+q|0;if(f>>>0>>0)while(1){e=a[f>>0]|0;if(((e&255)+-48|0)>>>0>=10){e=l;break d}p=(m|0)<214748364|(m|0)==214748364&b>>>0<3435973835;n=Yv(b|0,m|0,10,0)|0;o=(e<<24>>24)+-48|0;o=Sv(n|0,L()|0,o|0,((o|0)<0)<<31>>31|0)|0;e=L()|0;b=p?o:b;m=p?e:m;e=l+(p<<31>>31)|0;j=j+1|0;f=f+q|0;if(f>>>0>>0)l=e;else break}else e=l}else e=l;while(0);if(f>>>0>>0){e:do switch(a[f>>0]|0){case 69:case 101:{f=f+q|0;if(f>>>0>=u>>>0){q=0;l=0;p=1;break c}switch(a[f>>0]|0){case 45:{p=-1;f=f+q|0;break}case 43:{p=1;f=f+q|0;break}default:p=1}if(f>>>0>>0){n=0;o=0;while(1){l=a[f>>0]|0;if(((l&255)+-48|0)>>>0>=10){l=o;break e}l=(o|0)<1e4?(o*10|0)+-48+(l<<24>>24)|0:1e4;f=f+q|0;if(f>>>0>>0){n=1;o=l}else{n=1;break}}}else{n=0;l=0}break}default:{n=1;l=0;p=1}}while(0);if(f>>>0>>0)while(1){if(!(a[880+(d[f>>0]|0)>>0]&1)){q=n;break c}f=f+q|0;if(f>>>0>=u>>>0){q=n;break}}else q=n}else{q=1;l=0;p=1}}else{q=1;l=0;p=1;e=0}while(0);e=(G(l,p)|0)+e|0;p=(e|0)<0;l=e>>31|1;f:do if((b|0)==0&(m|0)==0)h=(s|0)<0?-0.0:0.0;else{e=p?0-e|0:e;g:do if((e|0)>0){h:do if((l|0)>0)while(1){if((m|0)>214748364|(m|0)==214748364&b>>>0>3435973835){l=e;break h}b=Yv(b|0,m|0,10,0)|0;m=L()|0;l=e+-1|0;if((e|0)>1)e=l;else{t=51;break g}}else while(1){n=Wv(b|0,m|0,10,0)|0;o=L()|0;l=Yv(n|0,o|0,10,0)|0;l=Tv(b|0,m|0,l|0,L()|0)|0;if(!((l|0)==0&(L()|0)==0)){l=e;break h}l=e+-1|0;if((e|0)>1){e=l;b=n;m=o}else{b=n;m=o;t=51;break g}}while(0);o=(s|0)<0;e=Tv(0,0,b|0,m|0)|0;s=L()|0;e=o?e:b;b=o?s:m;if((l|0)>307){if((l|0)>=342){h=+(e>>>0)+4294967296.0*+(b|0);if(p){h=h*0.0;break f}else{h=h*r;break f}}l=l+-308|0;k=(l&1|0)==0?1.0:10.0;l=l>>1;if(l){h=10.0;do{h=h*h;k=(l&1|0)==0?k:k*h;l=l>>1}while((l|0)!=0)}h=+(e>>>0)+4294967296.0*+(b|0);if(p){h=h/k/1.e+308;break f}else{h=k*h*1.e+308;break f}}}else{l=e;t=51}while(0);if((t|0)==51){s=(s|0)<0;e=Tv(0,0,b|0,m|0)|0;t=L()|0;e=s?e:b;b=s?t:m;if(!l){h=+(e>>>0)+4294967296.0*+(b|0);break}}h=(l&1|0)==0?1.0:10.0;l=l>>1;if(l){k=10.0;do{k=k*k;h=(l&1|0)==0?h:h*k;l=l>>1}while((l|0)!=0)}k=+(e>>>0)+4294967296.0*+(b|0);h=p?k/h:h*k}while(0);g[c>>3]=h;c=(q|0)!=0&((j|0)>0&(f|0)==(u|0))?i:0;return c|0}function Mg(a){a=+a;var b=0,c=0;if(!(a<=-9223372036854775808.0))if(!(a>=9223372036854775808.0)){c=+t(a)>=1.0?(a>0.0?~~+H(+s(a/4294967296.0),4294967295.0)>>>0:~~+F((a-+(~~a>>>0))/4294967296.0)>>>0):0;b=~~a>>>0}else{c=2147483647;b=-1}else{c=-2147483648;b=0}K(c|0);return b|0}function Ng(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=Ra;Ra=Ra+16|0;f=e;g=f;c[g>>2]=0;c[g+4>>2]=0;Og(d,f,b,a)|0;b=f;d=c[b>>2]|0;K(c[b+4>>2]|0);Ra=e;return d|0}function Og(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;i=g&255;if(g<<24>>24==1){h=0;o=1;i=b;g=f}else{g=3-i|0;a:do if((g|0)<(f|0))while(1){if(a[b+g>>0]|0){h=1;break a}g=g+2|0;if((g|0)>=(f|0)){h=0;break}}else h=0;while(0);o=2;i=b+(i&1)|0;g=g^1}n=b+g|0;b:do if(i>>>0>>0){while(1){g=a[i>>0]|0;if(!(a[880+(g&255)>>0]&1))break;g=i+o|0;if(g>>>0>>0)i=g;else{m=0;break b}}switch(g<<24>>24){case 45:{m=1;g=i+o|0;break b}case 43:{m=0;g=i+o|0;break b}default:{m=0;g=i;break b}}}else{m=0;g=i}while(0);c:do if(g>>>0>>0){i=g;do{if((a[i>>0]|0)!=48)break c;i=i+o|0}while(i>>>0>>0)}else i=g;while(0);do if(i>>>0>>0){k=0;l=i;j=0;f=0;while(1){b=a[l>>0]|0;if((b+-48&255)>=10){b=k;k=1;break}f=Yv(j|0,f|0,10,0)|0;j=b<<24>>24;f=Sv(f|0,L()|0,-48,-1)|0;j=Sv(f|0,L()|0,j|0,((j|0)<0)<<31>>31|0)|0;f=L()|0;b=k+o|0;l=i+b|0;if(l>>>0>=n>>>0){k=0;break}else k=b}l=(m|0)!=0;if((f|0)>=0)if(l){p=26;break}else{l=0;break}else{j=l?0:-1;f=l?-2147483648:2147483647;break}}else if(!m){b=0;k=0;j=0;f=0;l=0}else{b=0;k=0;j=0;f=0;p=26}while(0);if((p|0)==26){j=Tv(0,0,j|0,f|0)|0;f=L()|0;l=1}m=e;c[m>>2]=j;c[m+4>>2]=f;if(!b){g=(g|0)==(i|0);if((h|0)!=0|g|k^1)h=h|g&1;else p=30}else if(!((h|0)!=0|k^1))p=30;d:do if((p|0)==30){g=b;while(1){if(!(a[880+(d[i+g>>0]|0)>>0]&1)){h=1;break d}g=g+o|0;if((i+g|0)>>>0>=n>>>0){h=0;break}}}while(0);g=o*19|0;if(b>>>0>>0){e=h;return e|0}if(b>>>0>g>>>0){c[e>>2]=l?0:-1;c[e+4>>2]=l?-2147483648:2147483647;e=2;return e|0}g=0;do{f=i+(G(g,o)|0)|0;f=(a[f>>0]|0)-(a[32536+g>>0]|0)|0;g=g+1|0;b=(f|0)==0}while(g>>>0<18&b);if(b)g=(a[i+(o*18|0)>>0]|0)+-56|0;else g=f*10|0;if((g|0)<0){e=h;return e|0}else{c[e>>2]=l?0:-1;c[e+4>>2]=l?-2147483648:2147483647;return ((g|0)==0?(l?h:3):2)|0}return 0}function Pg(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=a+8|0;if(!(b[f>>1]&9216))b[f>>1]=1;else Dg(a);c[a>>2]=d;c[a+4>>2]=e;b[f>>1]=4;return}function Qg(a){a=a|0;return} -function Sg(d,e,f){d=d|0;e=e|0;f=f|0;var h=0,i=0.0,j=0,k=0;k=d+8|0;h=b[k>>1]|0;j=h&65535;if(j&1|0)return;switch(e<<24>>24){case 65:{if(j&16|0){b[k>>1]=j&15920;return}if(!((j&2|0)!=0|(j&12|0)==0)){Hg(d,f,1)|0;h=b[k>>1]|0}h=h&-13;b[k>>1]=h;h=h&65535;if(!(h&2))return;b[k>>1]=h&15904|16;return}case 67:{oh(d);return}case 68:{do if(!(j&4)){if(j&8|0){e=Mg(+g[d>>3])|0;f=L()|0;break}if(!(j&18)){e=0;f=0}else{e=Ng(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0)|0;f=L()|0;h=b[k>>1]|0}}else{f=d;e=c[f>>2]|0;f=c[f+4>>2]|0}while(0);c[d>>2]=e;c[d+4>>2]=f;b[k>>1]=h&15904|4;return}case 69:{do if(!(j&8)){if(j&4|0){j=d;i=+((c[j>>2]|0)>>>0)+4294967296.0*+(c[j+4>>2]|0);break}if(!(j&18))i=0.0;else{i=+Kg(a[d+10>>0]|0,c[d+12>>2]|0,c[d+16>>2]|0);h=b[k>>1]|0}}else i=+g[d>>3];while(0);g[d>>3]=i;b[k>>1]=h&15904|8;return}default:{e=j>>>3&2|j;h=e&65535;b[k>>1]=h;if(!((j&12|0)==0|(e&2|0)!=0)){Hg(d,f,1)|0;h=b[k>>1]|0}b[k>>1]=h&-16413;return}}}function Tg(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0,j=0,k=0,l=0,m=0;j=b[a+8>>1]|0;l=j&65535;k=b[d+8>>1]|0;m=k&65535;i=(k|j)&65535;if(i&1|0){d=(m&1)-(l&1)|0;return d|0}if(!(i&12)){if(i&2|0){if(!(l&2)){d=1;return d|0}if(!(m&2)){d=-1;return d|0}if(e|0){d=ph(a,d,e,0)|0;return d|0}}d=qh(a,d)|0;return d|0}i=k&j&65535;if(i&4|0){l=a;a=c[l>>2]|0;l=c[l+4>>2]|0;m=d;d=c[m>>2]|0;m=c[m+4>>2]|0;return ((l|0)<(m|0)|(l|0)==(m|0)&a>>>0>>0?-1:((l|0)>(m|0)|(l|0)==(m|0)&a>>>0>d>>>0)&1)|0}if(i&8|0){h=+g[a>>3];f=+g[d>>3];if(hf&1;return d|0}if(l&4|0){if(!(m&8)){d=-1;return d|0}k=a;j=c[k>>2]|0;k=c[k+4>>2]|0;h=+g[d>>3];if(h<-9223372036854775808.0){d=1;return d|0}if(h>=9223372036854775808.0){d=-1;return d|0}i=~~h>>>0;e=+t(h)>=1.0?(h>0.0?~~+H(+s(h/4294967296.0),4294967295.0)>>>0:~~+F((h-+(~~h>>>0))/4294967296.0)>>>0):0;if((k|0)<(e|0)|(k|0)==(e|0)&j>>>0>>0){d=-1;return d|0}if((k|0)>(e|0)|(k|0)==(e|0)&j>>>0>i>>>0){d=1;return d|0}f=+(j>>>0)+4294967296.0*+(k|0);if(h>f){d=-1;return d|0}d=h>2]|0;k=c[k+4>>2]|0;h=+g[a>>3];if(h<-9223372036854775808.0){d=-1;return d|0}if(h>=9223372036854775808.0){d=1;return d|0}i=~~h>>>0;e=+t(h)>=1.0?(h>0.0?~~+H(+s(h/4294967296.0),4294967295.0)>>>0:~~+F((h-+(~~h>>>0))/4294967296.0)>>>0):0;if((k|0)<(e|0)|(k|0)==(e|0)&j>>>0>>0){d=1;return d|0}if((k|0)>(e|0)|(k|0)==(e|0)&j>>>0>i>>>0){d=-1;return d|0}f=+(j>>>0)+4294967296.0*+(k|0);if(h>f){d=1;return d|0}d=(h>31;return d|0}function Ug(e,f,g){e=e|0;f=f|0;g=g|0;var h=0;do switch(f|0){case 10:{b[g+8>>1]=16385;c[g+12>>2]=0;c[g>>2]=0;g=0;return g|0}case 0:case 11:{b[g+8>>1]=1;g=0;return g|0}case 1:{e=a[e>>0]|0;f=g;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;b[g+8>>1]=4;g=1;return g|0}case 2:{e=a[e>>0]<<8|d[e+1>>0];f=g;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;b[g+8>>1]=4;g=2;return g|0}case 3:{e=d[e+1>>0]<<8|a[e>>0]<<16|d[e+2>>0];f=g;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;b[g+8>>1]=4;g=3;return g|0}case 4:{e=d[e+1>>0]<<16|a[e>>0]<<24|d[e+2>>0]<<8|d[e+3>>0];f=g;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;b[g+8>>1]=4;g=4;return g|0}case 5:{h=a[e>>0]<<8|d[e+1>>0];f=g;c[f>>2]=d[e+3>>0]<<16|d[e+2>>0]<<24|d[e+4>>0]<<8|d[e+5>>0];c[f+4>>2]=h;b[g+8>>1]=4;g=6;return g|0}case 7:case 6:{vh(e,f,g);h=8;return h|0}case 9:case 8:{h=g;c[h>>2]=f+-8;c[h+4>>2]=0;b[g+8>>1]=4;h=0;return h|0}default:{c[g+16>>2]=e;h=(f+-12|0)>>>1;c[g+12>>2]=h;b[g+8>>1]=b[31116+((f&1)<<1)>>1]|0;return h|0}}while(0);return 0}function Vg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;i=o;if((d|0)<1){c[i>>2]=32306;c[i+4>>2]=67596;c[i+8>>2]=31517;Db(11,32001,i);g=11;Ra=o;return g|0}n=c[b+4>>2]|0;c[n+4>>2]=c[b>>2];l=(e|0)!=0;if(l?(m=n+80|0,(c[m>>2]|0)==0):0){k=c[n+32>>2]|0;if((c[14813]|0)>=(k|0)?(h=c[14819]|0,(h|0)!=0):0){c[14819]=c[h>>2];e=c[14820]|0;c[14820]=e+-1;c[14821]=(e|0)<=(c[14815]|0)&1;if((c[14986]|0)>>>0>>0)c[14986]=k;i=(c[14979]|0)+1|0;c[14979]=i;if(i>>>0>(c[14983]|0)>>>0)c[14983]=i}else j=11;a:do if((j|0)==11){j=Sv(k|0,((k|0)<0)<<31>>31|0,-1,-1)|0;e=L()|0;do if(!(e>>>0>0|(e|0)==0&j>>>0>2147483390)){if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](k)|0;if(!h)break}else{h=Wa[c[29356>>2]&127](k)|0;if((c[14985]|0)>>>0>>0)c[14985]=k;e=59064;i=c[e>>2]|0;e=c[e+4>>2]|0;if((e|0)>0|(e|0)==0&i>>>0>0){j=c[14978]|0;e=Tv(i|0,e|0,h|0,((h|0)<0)<<31>>31|0)|0;i=L()|0;c[14768]=((i|0)<0|(i|0)==0&e>>>0<=j>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h)break;i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}i=Wa[c[29352>>2]&127](h)|0;if((c[14986]|0)>>>0>>0)c[14986]=k;i=(c[14980]|0)+i|0;c[14980]=i;if(i>>>0<=(c[14984]|0)>>>0)break a;c[14984]=i;break a}while(0);c[m>>2]=0;g=7;Ra=o;return g|0}while(0);c[m>>2]=h;k=h;j=k;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;k=k+4|0;a[k>>0]=0;a[k+1>>0]=0;a[k+2>>0]=0;a[k+3>>0]=0;c[m>>2]=(c[m>>2]|0)+4}if((d|0)==1)d=(c[n+44>>2]|0)!=0&1;c[g+64>>2]=d;a[g+68>>0]=-1;c[g+112>>2]=f;c[g+8>>2]=b;c[g+20>>2]=n;j=g+1|0;a[j>>0]=l&1;a[g+2>>0]=l?0:2;i=n+8|0;h=c[i>>2]|0;e=h;if(h|0)do{if((c[h+64>>2]|0)==(d|0)){n=h+1|0;a[n>>0]=a[n>>0]|32;a[j>>0]=a[j>>0]|32}h=c[h+24>>2]|0}while((h|0)!=0);c[g+24>>2]=e;c[i>>2]=g;a[g>>0]=1;g=0;Ra=o;return g|0}function Wg(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=Ra;Ra=Ra+64|0;y=A+16|0;p=A;r=A+52|0;s=A+48|0;z=A+44|0;x=A+40|0;l=A+36|0;m=A+32|0;n=A+56|0;o=A+28|0;i=c[e>>2]|0;v=e+4|0;u=c[v>>2]|0;j=u+4|0;c[j>>2]=i;a:do if(!(a[u+17>>0]|0)){h=fg(u,s,z,1,0)|0;c[x>>2]=h;if(!h){q=c[s>>2]|0;break}else{z=h;Ra=A;return z|0}}else{k=u+8|0;h=c[k>>2]|0;if(h|0)do{w=h+1|0;a[w>>0]=a[w>>0]&-5;h=c[h+24>>2]|0}while((h|0)!=0);c[j>>2]=i;q=c[(c[u+12>>2]|0)+56>>2]|0;q=d[q+53>>0]<<16|d[q+52>>0]<<24|d[q+54>>0]<<8|d[q+55>>0];c[z>>2]=q;i=u+36|0;j=1073741824/((c[u+32>>2]|0)>>>0)|0;while(1){w=q+1|0;if(w>>>0<2)h=0;else{h=q+-1|0;h=h-((h>>>0)%(((((c[i>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;h=((h+1|0)==(j|0)?3:2)+h|0}if((q|0)==(j|0)|(w|0)==(h|0))q=w;else break}c[z>>2]=w;h=fg(u,m,l,w,1)|0;c[x>>2]=h;b:do if(!h){l=c[l>>2]|0;c:do if((l|0)==(w|0)){l=c[m>>2]|0;c[s>>2]=l}else{a[n>>0]=0;c[o>>2]=0;h=c[k>>2]|0;if(!h)h=0;else h=$f(h,0,0)|0;c[x>>2]=h;i=c[m>>2]|0;do if(i|0){i=c[i+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{t=c[i+20>>2]|0;m=t+120|0;c[m>>2]=(c[m>>2]|0)+-1;t=t+136|0;c[i+16>>2]=c[t>>2];c[t>>2]=i;break}}while(0);do if(!h){h=c[u>>2]|0;h=Za[c[h+204>>2]&127](h,w,r,0)|0;if(h|0){c[x>>2]=h;break}h=c[r>>2]|0;j=c[h+8>>2]|0;i=j+4|0;if((c[i>>2]|0)!=(w|0)){c[j+56>>2]=c[h+4>>2];c[j+72>>2]=h;c[j+52>>2]=u;c[i>>2]=w;a[j+9>>0]=(q|0)==0?100:0}c[s>>2]=j;h=eg(u,w,n,o)|0;c[x>>2]=h;i=a[n>>0]|0;if((i+-1&255)>=2){if(!h){h=gg(u,j,i,c[o>>2]|0,l,0)|0;c[x>>2]=h;do if(j|0){i=c[j+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{t=c[i+20>>2]|0;p=t+120|0;c[p>>2]=(c[p>>2]|0)+-1;t=t+136|0;c[i+16>>2]=c[t>>2];c[t>>2]=i;break}}while(0);if(h|0)break;h=c[u>>2]|0;h=Za[c[h+204>>2]&127](h,w,r,0)|0;if(h|0){c[x>>2]=h;break}h=c[r>>2]|0;l=c[h+8>>2]|0;i=l+4|0;if((c[i>>2]|0)==(w|0))k=l+72|0;else{c[l+56>>2]=c[h+4>>2];k=l+72|0;c[k>>2]=h;c[l+52>>2]=u;c[i>>2]=w;a[l+9>>0]=(q|0)==0?100:0}c[s>>2]=l;c[x>>2]=0;i=c[k>>2]|0;j=c[i+20>>2]|0;do if(b[i+28>>1]&4){if((c[j+24>>2]|0)>>>0<(c[i+24>>2]|0)>>>0){t=44;break}if(!(c[j+96>>2]|0)){c[x>>2]=0;t=55;break}else{h=Ve(i)|0;t=49;break}}else t=44;while(0);do if((t|0)==44){h=c[j+40>>2]|0;if(h|0){c[x>>2]=h;break}if((c[j+148>>2]|0)>>>0>(c[j+152>>2]|0)>>>0){h=Wf(i)|0;t=49;break}else{h=Xf(i)|0;t=49;break}}while(0);if((t|0)==49){c[x>>2]=h;if(!h)t=55}if((t|0)==55)break c;if(!l)break;i=c[k>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{z=c[i+20>>2]|0;f=z+120|0;c[f>>2]=(c[f>>2]|0)+-1;z=z+136|0;c[i+16>>2]=c[z>>2];c[z>>2]=i;break}}}else{c[p>>2]=32306;c[p+4>>2]=72254;c[p+8>>2]=31517;Db(11,32001,p);c[x>>2]=11;h=11}if(j){i=c[j+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{z=c[i+20>>2]|0;f=z+120|0;c[f>>2]=(c[f>>2]|0)+-1;z=z+136|0;c[i+16>>2]=c[z>>2];c[z>>2]=i;break}}}while(0);break b}while(0);ig(u,w,1,0,x);h=c[x>>2]|0;if(h|0){if(!l)break;i=c[l+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{z=c[i+20>>2]|0;f=z+120|0;c[f>>2]=(c[f>>2]|0)+-1;z=z+136|0;c[i+16>>2]=c[z>>2];c[z>>2]=i;break}}i=c[v>>2]|0;c[i+4>>2]=c[e>>2];i=c[i+12>>2]|0;k=c[i+56>>2]|0;i=c[i+72>>2]|0;j=c[i+20>>2]|0;if((b[i+28>>1]&4)!=0?(c[j+24>>2]|0)>>>0>=(c[i+24>>2]|0)>>>0:0)if(!(c[j+96>>2]|0))t=76;else{h=Ve(i)|0;t=70}else t=66;do if((t|0)==66){h=c[j+40>>2]|0;if(!h)if((c[j+148>>2]|0)>>>0>(c[j+152>>2]|0)>>>0){h=Wf(i)|0;t=70;break}else{h=Xf(i)|0;t=70;break}}while(0);if((t|0)==70)if(!h)t=76;if((t|0)==76){a[k+52>>0]=w>>>24;a[k+53>>0]=w>>>16;a[k+54>>0]=w>>>8;a[k+55>>0]=w;c[x>>2]=0;q=l;break a}c[x>>2]=h;if(l){i=c[l+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{z=c[i+20>>2]|0;f=z+120|0;c[f>>2]=(c[f>>2]|0)+-1;z=z+136|0;c[i+16>>2]=c[z>>2];c[z>>2]=i;break}}}while(0);z=h;Ra=A;return z|0}while(0);k=(g&1|0)==0?10:13;o=c[q+56>>2]|0;j=q+52|0;p=c[j>>2]|0;i=d[q+9>>0]|0;if(!(b[p+22>>1]&12)){h=o+i|0;n=p+36|0}else{n=p+36|0;h=o+i|0;gw(h|0,0,(c[n>>2]|0)-i|0)|0}a[h>>0]=k;l=i+8|0;m=l&65535;h=o+(i+1)|0;a[h>>0]=0;a[h+1>>0]=0;a[h+2>>0]=0;a[h+3>>0]=0;a[o+(i+7)>>0]=0;h=o+(i+5)|0;a[h>>0]=(c[n>>2]|0)>>>8;a[h+1>>0]=c[n>>2];c[q+20>>2]=(c[n>>2]|0)-l&65535;a[q+8>>0]=1;h=q+10|0;a[h>>0]=0;c[q+76>>2]=120;i=c[j>>2]|0;switch(k&7){case 5:{a[q+2>>0]=1;a[q+3>>0]=1;c[q+80>>2]=180;b[q+14>>1]=b[i+28>>1]|0;h=i+30|0;t=86;break}case 2:{a[q+2>>0]=0;a[q+3>>0]=0;c[q+80>>2]=179;b[q+14>>1]=b[i+24>>1]|0;h=i+26|0;t=86;break}default:{c[y>>2]=32306;c[y+4>>2]=65035;c[y+8>>2]=31517;Db(11,32001,y);h=a[h>>0]|0}}if((t|0)==86){b[q+16>>1]=b[h>>1]|0;a[q+11>>0]=a[i+21>>0]|0;h=0}b[q+18>>1]=m;c[q+60>>2]=o+(c[n>>2]|0);c[q+64>>2]=o+l;c[q+68>>2]=o+(h&255);a[q+12>>0]=0;b[q+26>>1]=(c[p+32>>2]|0)+65535;b[q+24>>1]=0;a[q>>0]=1;h=c[q+72>>2]|0;do if(h|0)if(!(b[h+28>>1]&32)){Df(h);break}else{y=c[h+20>>2]|0;x=y+120|0;c[x>>2]=(c[x>>2]|0)+-1;y=y+136|0;c[h+16>>2]=c[y>>2];c[y>>2]=h;break}while(0);c[f>>2]=c[z>>2];z=0;Ra=A;return z|0}function Xg(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;V=Ra;Ra=Ra+80|0;R=V+56|0;T=V+40|0;S=V+24|0;Q=V+8|0;P=V;a:do if(!g)if((a[f>>0]|0)==0?(l=d[f+1>>0]|0,(l&2|0)!=0):0){o=f+32|0;n=o;m=c[n>>2]|0;n=c[n+4>>2]|0;if((m|0)==(h|0)&(n|0)==(i|0)){c[k>>2]=0;U=0;Ra=V;return U|0}if((n|0)<(i|0)|(n|0)==(i|0)&m>>>0>>0){if(l&8|0){c[k>>2]=-1;U=0;Ra=V;return U|0}N=Sv(m|0,n|0,1,0)|0;if((N|0)==(h|0)&(L()|0)==(i|0)){c[k>>2]=0;l=Yg(f,0)|0;switch(l|0){case 101:{N=0;break a}case 0:break;default:{U=l;Ra=V;return U|0}}bg(f);N=o;if((c[N>>2]|0)==(h|0)?(c[N+4>>2]|0)==(i|0):0){U=0;Ra=V;return U|0}else N=0}else N=0}else N=0}else N=0;else{l=c[g>>2]|0;do if((e[l+8>>1]|0)<14){m=e[(c[g+4>>2]|0)+8>>1]|0;N=(a[c[l+16>>2]>>0]|0)==0;a[g+12>>0]=N?-1:1;a[g+13>>0]=N?1:-1;if(!(m&4)){if(m&25|0){l=88;break}if(!(c[l+20>>2]|0))l=90;else{l=88;break}}else l=89}else l=88;while(0);a[g+11>>0]=0;N=l}while(0);l=xh(f)|0;switch(l|0){case 0:{K=f+116|0;B=1-j|0;C=f+70|0;D=(N|0)==0;E=f+1|0;F=f+32|0;M=f+50|0;G=f+32|0;H=f+20|0;I=f+68|0;J=f+2|0;l=0;m=0;b:while(1){A=c[K>>2]|0;x=A+24|0;o=(e[x>>1]|0)+-1|0;j=o>>B;b[C>>1]=j;w=A+68|0;y=A+26|0;z=A+64|0;c:do if(D){t=A+3|0;u=A+60|0;n=A+8|0;s=j;r=o;o=0;d:while(1){j=(c[z>>2]|0)+(s<<1)|0;j=(c[w>>2]|0)+((d[j>>0]<<8|d[j+1>>0])&e[y>>1])|0;e:do if(a[t>>0]|0){p=j+1|0;if((a[j>>0]|0)<0){q=c[u>>2]|0;while(1){if(p>>>0>=q>>>0)break;j=p+1|0;if((a[p>>0]|0)<0)p=j;else{U=29;break e}}c[Q>>2]=32306;c[Q+4>>2]=68640;c[Q+8>>2]=31517;Db(11,32001,Q);q=1;j=s;l=11;p=r}else{j=p;U=29}}else U=29;while(0);f:do if((U|0)==29){U=0;Of(j,P)|0;p=P;j=c[p>>2]|0;p=c[p+4>>2]|0;do if((p|0)<(i|0)|(p|0)==(i|0)&j>>>0>>0){o=s+1|0;if((s|0)<(r|0))p=r;else{q=4;j=s;m=-1;p=r;break f}}else{if((p|0)>(i|0)|(p|0)==(i|0)&j>>>0>h>>>0){p=s+-1|0;if((o|0)<(s|0))break;else{q=4;j=s;m=1;break f}}b[C>>1]=s;if(!(a[n>>0]|0)){q=8;j=s;p=r;o=s;break f}a[E>>0]=a[E>>0]|2;q=F;c[q>>2]=j;c[q+4>>2]=p;b[M>>1]=0;c[k>>2]=0;q=1;j=s;l=0;p=r;break f}while(0);q=0;j=p+o>>1}while(0);switch(q&15){case 4:{U=74;break c}case 8:{U=76;break c}case 0:{s=j;r=p;break}default:break d}}if(q){U=85;break b}}else{s=A+11|0;t=A+14|0;u=A+10|0;v=A+80|0;n=o;o=0;while(1){p=(c[z>>2]|0)+(j<<1)|0;p=(c[w>>2]|0)+((d[p>>0]<<8|d[p+1>>0])&e[y>>1])|0;r=a[p>>0]|0;q=r&255;m=p+1|0;do if((r&255)>(d[s>>0]|0)){m=d[m>>0]|0;if((m&128|0)==0?(O=(q<<7&16256)+m|0,O>>>0<=(e[t>>1]|0)>>>0):0){m=Ya[N&127](O,p+2|0,g)|0;break}cb[c[v>>2]&255](A,p+(0-(d[u>>0]|0))|0,G);r=c[G>>2]|0;if((r|0)<2){U=45;break b}q=c[H>>2]|0;if(((r>>>0)/((c[q+36>>2]|0)>>>0)|0)>>>0>(c[q+44>>2]|0)>>>0){U=45;break b}m=r+18|0;q=Sv(m|0,((m|0)<0)<<31>>31|0,-1,-1)|0;p=L()|0;if(p>>>0>0|(p|0)==0&q>>>0>2147483390){l=7;break b}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](m)|0;if(!m){l=7;break b}else p=m}else{q=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;p=59064;m=c[p>>2]|0;p=c[p+4>>2]|0;if((p|0)>0|(p|0)==0&m>>>0>0){W=c[14978]|0;p=Tv(m|0,p|0,q|0,((q|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&p>>>0<=W>>>0)&1}p=Wa[c[29340>>2]&127](q)|0;if(!p){l=7;break b}m=Wa[c[29352>>2]&127](p)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0>(c[14987]|0)>>>0)c[14987]=m}b[C>>1]=j;m=cg(f,0,r,p,0)|0;a[E>>0]=a[E>>0]&-5;if(m|0){U=59;break b}m=Fh(r,p,g,0)|0;if(!(c[7324]|0)){ab[c[29344>>2]&127](p);break}else{W=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-W;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);break}}else m=Ya[N&127](q,m,g)|0;while(0);if((m|0)<0)o=j+1|0;else{if(!m){U=69;break b}n=j+-1|0}if((o|0)>(n|0))break;j=n+o>>1}n=A+8|0;U=74}while(0);if((U|0)==74)if(!(a[n>>0]|0))U=76;else{U=75;break}if((U|0)==76){U=0;if((o|0)<(e[x>>1]|0)){n=(c[z>>2]|0)+(o<<1)|0;n=(d[n>>0]<<8|d[n+1>>0])&e[y>>1]}else n=(d[A+9>>0]|0)+8|0;r=(c[A+56>>2]|0)+n|0;j=a[r>>0]|0;p=a[r+1>>0]|0;q=a[r+2>>0]|0;r=a[r+3>>0]|0;n=o&65535;b[C>>1]=n;o=a[I>>0]|0;if(o<<24>>24>18){U=80;break}W=c[H>>2]|0;b[M>>1]=0;a[E>>0]=a[E>>0]&-7;A=o<<24>>24;b[f+72+(A<<1)>>1]=n;c[f+120+(A<<2)>>2]=c[K>>2];b[C>>1]=0;a[I>>0]=o+1<<24>>24;n=yh(W,(p&255)<<16|(j&255)<<24|(q&255)<<8|r&255,K,f,d[J>>0]|0)|0;if(n){l=n;break}}}do if((U|0)==45){c[S>>2]=32306;c[S+4>>2]=68714;c[S+8>>2]=31517;Db(11,32001,S);l=11}else if((U|0)==59)if(!(c[7324]|0)){ab[c[29344>>2]&127](p);l=m;break}else{l=Wa[c[29352>>2]&127](p)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](p);l=m;break}else if((U|0)==69){c[k>>2]=0;b[C>>1]=j;if(!(a[g+11>>0]|0))l=0;else{c[T>>2]=32306;c[T+4>>2]=68745;c[T+8>>2]=31517;Db(11,32001,T);l=11}}else if((U|0)==75){b[C>>1]=j;c[k>>2]=m;l=0}else if((U|0)==80){c[R>>2]=32306;c[R+4>>2]=68229;c[R+8>>2]=31517;Db(11,32001,R);l=11}else if((U|0)==85){Ra=V;return l|0}while(0);b[M>>1]=0;W=l;Ra=V;return W|0}case 16:{c[k>>2]=-1;W=0;Ra=V;return W|0}default:{W=l;Ra=V;return W|0}}return 0}function Yg(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=Ra;Ra=Ra+16|0;r=s;o=f+50|0;b[o>>1]=0;p=f+1|0;a[p>>0]=a[p>>0]&-7;if(a[f>>0]|0){r=Gh(f)|0;Ra=s;return r|0}q=f+116|0;h=c[q>>2]|0;n=f+70|0;g=b[n>>1]|0;m=g+1<<16>>16;b[n>>1]=m;if((m&65535)>=(e[h+24>>1]|0)){b[n>>1]=g;r=Gh(f)|0;Ra=s;return r|0}if(a[h+8>>0]|0){r=0;Ra=s;return r|0}k=f+68|0;l=f+20|0;m=f+2|0;while(1){g=b[n>>1]|0;i=(c[h+64>>2]|0)+((g&65535)<<1)|0;i=(c[h+56>>2]|0)+((d[i>>0]<<8|d[i+1>>0])&e[h+26>>1])|0;j=a[k>>0]|0;if(j<<24>>24>18){h=8;break}i=d[i>>0]<<24|d[i+1>>0]<<16|d[i+2>>0]<<8|d[i+3>>0];t=c[l>>2]|0;b[o>>1]=0;a[p>>0]=a[p>>0]&-7;u=j<<24>>24;b[f+72+(u<<1)>>1]=g;c[f+120+(u<<2)>>2]=h;b[n>>1]=0;a[k>>0]=j+1<<24>>24;g=yh(t,i,q,f,d[m>>0]|0)|0;if(g|0){h=11;break}h=c[q>>2]|0;if(a[h+8>>0]|0){g=0;h=11;break}}if((h|0)==8){c[r>>2]=32306;c[r+4>>2]=68229;c[r+8>>2]=31517;Db(11,32001,r);u=11;Ra=s;return u|0}else if((h|0)==11){Ra=s;return g|0}return 0}function Zg(d,e){d=d|0;e=e|0;var f=0,g=0;e=d+1|0;a[e>>0]=a[e>>0]&-15;b[d+50>>1]=0;if(((a[d>>0]|0)==0?(f=d+70|0,g=b[f>>1]|0,g<<16>>16):0)?a[(c[d+116>>2]|0)+8>>0]|0:0){b[f>>1]=g+-1<<16>>16;g=0;return g|0}g=Hh(d)|0;return g|0}function _g(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=Ra;Ra=Ra+16|0;u=v;m=c[i+4>>2]|0;a[i+10>>0]=0;t=a[h>>0]|0;j=t&255;do if(t<<24>>24<=-1){k=d[h+1>>0]|0;if(!(k&128)){t=j<<7&16256|k;j=2;break}l=d[h+2>>0]|0;if(!(l&128)){t=(j<<14|l)&2080895|k<<7&16256;j=3;break}else{j=Of(h,u)|0;s=u;t=c[s>>2]|0;t=((t|0)==(t|0)?0==(c[s+4>>2]|0):0)?t:-1;break}}else{t=j;j=1}while(0);j=j&255;if(t>>>0>g>>>0|t>>>0<=j>>>0){u=0;i=i+8|0;b[i>>1]=u;Ra=v;return}s=f+4|0;q=f+12|0;r=i+8|0;p=0;o=t;while(1){l=h+j|0;n=a[l>>0]|0;k=n&255;if(n<<24>>24>-1)l=1;else{f=d[l+1>>0]|0;do if(f&128){n=d[l+2>>0]|0;if(!(n&128)){k=(k<<14|n)&2080895|f<<7&16256;l=3;break}else{l=Of(l,u)|0;n=u;k=c[n>>2]|0;k=((k|0)==(k|0)?0==(c[n+4>>2]|0):0)?k:-1;break}}else{k=k<<7&16256|f;l=2}while(0);l=l&255}a[m+10>>0]=a[s>>0]|0;c[m+32>>2]=c[q>>2];c[m+24>>2]=0;c[m+16>>2]=0;o=(Ug(h+o|0,k,m)|0)+o|0;p=p+1<<16>>16;j=l+j|0;if((p&65535)>=(e[r>>1]|0))break;if(o>>>0>g>>>0|j>>>0>=t>>>0)break;else m=m+40|0}if(o>>>0<=g>>>0|p<<16>>16==0){u=p;i=i+8|0;b[i>>1]=u;Ra=v;return}j=m+8|0;if(!(b[j>>1]&9216)){b[j>>1]=1;u=p;i=i+8|0;b[i>>1]=u;Ra=v;return}else{Dg(m);u=p;i=i+8|0;b[i>>1]=u;Ra=v;return}}function $g(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=Ra;Ra=Ra+16|0;u=w;if((a[f>>0]|0)==0?a[f+1>>0]&8:0){v=0;Ra=w;return v|0}h=xh(f)|0;switch(h|0){case 0:{c[g>>2]=0;r=f+116|0;h=c[r>>2]|0;s=f+70|0;a:do if(!(a[h+8>>0]|0)){n=f+68|0;o=f+20|0;p=f+50|0;t=f+1|0;q=f+2|0;while(1){k=(c[h+56>>2]|0)+((d[h+9>>0]|0)+8)|0;g=a[k>>0]|0;i=a[k+1>>0]|0;j=a[k+2>>0]|0;k=a[k+3>>0]|0;l=b[h+24>>1]|0;b[s>>1]=l;m=a[n>>0]|0;if(m<<24>>24>18){v=9;break}x=c[o>>2]|0;b[p>>1]=0;a[t>>0]=a[t>>0]&-7;y=m<<24>>24;b[f+72+(y<<1)>>1]=l;c[f+120+(y<<2)>>2]=h;b[s>>1]=0;a[n>>0]=m+1<<24>>24;g=yh(x,(i&255)<<16|(g&255)<<24|(j&255)<<8|k&255,r,f,d[q>>0]|0)|0;if(g|0)break;h=c[r>>2]|0;if(a[h+8>>0]|0){g=t;break a}}if((v|0)==9){c[u>>2]=32306;c[u+4>>2]=68229;c[u+8>>2]=31517;Db(11,32001,u);g=11}a[t>>0]=a[t>>0]&-9;y=g;Ra=w;return y|0}else g=f+1|0;while(0);b[s>>1]=(e[h+24>>1]|0)+65535;a[g>>0]=a[g>>0]|8;y=0;Ra=w;return y|0}case 16:{c[g>>2]=1;y=0;Ra=w;return y|0}default:{y=h;Ra=w;return y|0}}return 0}function ah(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0;N=Ra;Ra=Ra+80|0;H=N+40|0;G=N;A=N+64|0;B=N+60|0;M=N+56|0;C=N+52|0;c[C>>2]=i;o=c[f+8>>2]|0;q=o+4|0;F=c[q>>2]|0;if((a[f>>0]|0)==4){M=c[f+4>>2]|0;Ra=N;return M|0}I=f+1|0;l=a[I>>0]|0;a:do if(l&32){m=c[f+64>>2]|0;j=c[F+8>>2]|0;b:do if(!j)K=14;else{c:do if(m){do{if((j|0)!=(f|0)?(c[j+64>>2]|0)==(m|0):0)break c;j=c[j+24>>2]|0}while((j|0)!=0);if(!f)break b;else{K=14;break b}}else{k=f+24|0;while(1){if((j|0)!=(f|0))break c;j=c[k>>2]|0;if(!j){K=14;break b}}}while(0);j=$f(j,m,f)|0;c[M>>2]=j;if(!j)break a;Ra=N;return j|0}while(0);if((K|0)==14)a[I>>0]=l&-33;c[M>>2]=0}while(0);J=f+112|0;z=c[J>>2]|0;k=z;do if(!z){l=c[f+64>>2]|0;n=g+8|0;m=c[n>>2]|0;n=c[n+4>>2]|0;k=o+11|0;if(a[k>>0]|0?(a[k>>0]=0,p=c[(c[q>>2]|0)+8>>2]|0,p|0):0){j=p;do{if((a[j+1>>0]&16?(a[k>>0]=1,(c[j+64>>2]|0)==(l|0)):0)?(z=j+32|0,(c[z>>2]|0)==(m|0)?(c[z+4>>2]|0)==(n|0):0):0)a[j>>0]=1;j=c[j+24>>2]|0}while((j|0)!=0)}if(a[I>>0]&2?(z=f+32|0,(m|0)==(c[z>>2]|0)?(n|0)==(c[z+4>>2]|0):0):0){if(!(b[f+50>>1]|0))break;if((c[f+44>>2]|0)!=((c[g+32>>2]|0)+(c[g+28>>2]|0)|0))break;M=Ih(f,g)|0;Ra=N;return M|0}if((i|0)==0?(r=Xg(f,0,m,n,(h|0)!=0&1,C)|0,c[M>>2]=r,r|0):0){M=r;Ra=N;return M|0}}else{do if(!(h&2|i)){j=b[g+24>>1]|0;if(!(j<<16>>16)){j=g+8|0;j=th(f,c[g>>2]|0,c[j>>2]|0,c[j+4>>2]|0,(h|0)!=0&1,C)|0;c[M>>2]=j}else{c[G>>2]=k;c[G+4>>2]=c[g+20>>2];b[G+8>>1]=j;j=G+10|0;b[j>>1]=0;b[j+2>>1]=0;a[j+4>>0]=0;j=Xg(f,G,0,0,(h|0)!=0&1,C)|0;c[M>>2]=j}if(!j){j=c[C>>2]|0;break}else{M=j;Ra=N;return M|0}}else j=i;while(0);if((j|0)==0?(bg(f),y=f+32|0,n=c[y>>2]|0,z=g+8|0,(n|0)==(c[z>>2]|0)?(c[y+4>>2]|0)==(c[z+4>>2]|0):0):0){c[G+16>>2]=c[g>>2];c[G+28>>2]=n;c[G+32>>2]=0;M=Ih(f,G)|0;Ra=N;return M|0}}while(0);z=f+116|0;y=c[z>>2]|0;if((c[y+20>>2]|0)<0?(s=Jh(y)|0,c[M>>2]=s,s|0):0){M=s;Ra=N;return M|0}x=c[F+80>>2]|0;o=d[y+10>>0]|0;if(!(a[y+2>>0]|0)){m=c[g+8>>2]|0;l=c[g>>2]|0;do if(m>>>0>=128){j=x+o|0;k=((m|0)<0)<<31>>31;if(m>>>0<16384){w=bw(m|0,k|0,7)|0;L()|0;a[j>>0]=w&255|-128;a[j+1>>0]=m&127;j=2;break}else{j=(wh(j,m,k)|0)&255;break}}else{a[x+o>>0]=m;j=1}while(0);r=m;n=j+o|0;q=m}else{q=c[g+28>>2]|0;n=(c[g+32>>2]|0)+q|0;p=c[g+16>>2]|0;do if(n>>>0>=128){j=x+o|0;k=((n|0)<0)<<31>>31;if(n>>>0<16384){w=bw(n|0,k|0,7)|0;L()|0;a[j>>0]=w&255|-128;a[j+1>>0]=n&127;j=2;break}else{j=(wh(j,n,k)|0)&255;break}}else{a[x+o>>0]=n;j=1}while(0);m=j+o|0;j=x+m|0;l=g+8|0;k=c[l>>2]|0;l=c[l+4>>2]|0;do if(!(l>>>0<0|(l|0)==0&k>>>0<128))if(l>>>0<0|(l|0)==0&k>>>0<16384){w=bw(k|0,l|0,7)|0;L()|0;a[j>>0]=w&255|-128;a[j+1>>0]=k&127;j=2;break}else{j=wh(j,k,l)|0;break}else{a[j>>0]=k&127;j=1}while(0);r=n;n=j+m|0;l=p}k=x+n|0;j=e[y+14>>1]|0;d:do if((r|0)>(j|0)){i=e[y+16>>1]|0;v=c[y+52>>2]|0;w=v+36|0;m=(((r-i|0)>>>0)%(((c[w>>2]|0)+-4|0)>>>0)|0)+i|0;m=(m|0)>(j|0)?i:m;i=m+n|0;n=i+4|0;c[A>>2]=0;s=v+17|0;t=v+32|0;i=x+i|0;u=0;j=r;e:while(1){r=j;while(1){j=(r|0)>(m|0)?m:r;do if((q|0)<(j|0))if((q|0)>0){ew(k|0,l|0,q|0)|0;j=q;break}else{gw(k|0,0,j|0)|0;break}else ew(k|0,l|0,j|0)|0;while(0);r=r-j|0;if((r|0)<1){K=96;break e}l=l+j|0;q=q-j|0;m=m-j|0;if(!m)break;else k=k+j|0}c[B>>2]=0;p=c[A>>2]|0;if(!(a[s>>0]|0))j=p;else{m=1073741824/((c[t>>2]|0)>>>0)|0;j=p;do{o=j;j=j+1|0;if(j>>>0<2)k=0;else{k=o+-1|0;k=k-((k>>>0)%(((((c[w>>2]|0)>>>0)/5|0)+1|0)>>>0)|0)|0;k=((k+1|0)==(m|0)?3:2)+k|0}}while((o|0)==(m|0)|(k|0)==(j|0));c[A>>2]=j}k=fg(v,B,A,j,0)|0;c[G>>2]=k;j=(k|0)==0;if(j&(a[s>>0]|0)!=0){j=c[A>>2]|0;ig(v,j,(p|0)==0?3:4,p,G);k=c[G>>2]|0;if(k){K=81;break}}else{if(!j)break;j=c[A>>2]|0}a[i>>0]=j>>>24;a[i+1>>0]=j>>>16;a[i+2>>0]=j>>>8;a[i+3>>0]=j;do if(u|0){j=c[u+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break}else{u=c[j+20>>2]|0;i=u+120|0;c[i>>2]=(c[i>>2]|0)+-1;u=u+136|0;c[j+16>>2]=c[u>>2];c[u>>2]=j;break}}while(0);u=c[B>>2]|0;k=u+56|0;i=c[k>>2]|0;a[i>>0]=0;a[i+1>>0]=0;a[i+2>>0]=0;a[i+3>>0]=0;k=(c[k>>2]|0)+4|0;m=(c[w>>2]|0)+-4|0;j=r}do if((K|0)==81){j=c[B>>2]|0;if(j){j=c[j+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break}else{f=c[j+20>>2]|0;g=f+120|0;c[g>>2]=(c[g>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j;break}}}else if((K|0)==96){if(!u)break d;j=c[u+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break d}else{B=c[j+20>>2]|0;A=B+120|0;c[A>>2]=(c[A>>2]|0)+-1;B=B+136|0;c[j+16>>2]=c[B>>2];c[B>>2]=j;break d}}while(0);do if(u|0){j=c[u+72>>2]|0;if(!(b[j+28>>1]&32)){Df(j);break}else{f=c[j+20>>2]|0;g=f+120|0;c[g>>2]=(c[g>>2]|0)+-1;f=f+136|0;c[j+16>>2]=c[f>>2];c[f>>2]=j;break}}while(0);c[M>>2]=k;M=k;Ra=N;return M|0}else{n=r+n|0;ew(k|0,l|0,q|0)|0;gw(k+q|0,0,r-q|0)|0;n=(n|0)>4?n:4}while(0);c[M>>2]=0;k=f+70|0;l=b[k>>1]|0;m=l&65535;j=c[C>>2]|0;if(!j){k=c[y+72>>2]|0;l=c[k+20>>2]|0;do if((b[k+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[k+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0)){c[M>>2]=0;break}else{E=Ve(k)|0;K=112;break}else K=107;while(0);do if((K|0)==107){j=c[l+40>>2]|0;if(j|0){c[M>>2]=j;K=123;break}if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){E=Wf(k)|0;K=112;break}else{E=Xf(k)|0;K=112;break}}while(0);if((K|0)==112?(c[M>>2]=E,E|0):0){j=E;K=123}if((K|0)==123){M=j;Ra=N;return M|0}j=(c[y+64>>2]|0)+(m<<1)|0;j=(c[y+56>>2]|0)+((d[j>>0]<<8|d[j+1>>0])&e[y+26>>1])|0;if(!(a[y+8>>0]|0)){E=d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24;a[x>>0]=E;a[x+1>>0]=E>>8;a[x+2>>0]=E>>16;a[x+3>>0]=E>>24}k=Ah(y,j,G)|0;c[M>>2]=k;k=e[G+18>>1]|0;do if((n|0)==(k|0)?(c[G+12>>2]|0)==(e[G+16>>1]|0):0){if(a[F+17>>0]|0?(n|0)>=(e[y+16>>1]|0):0)break;if((j+n|0)>>>0>(c[y+60>>2]|0)>>>0){c[H>>2]=32306;c[H+4>>2]=71903;c[H+8>>2]=31517;Db(11,32001,H);j=11}else{ew(j|0,x|0,n|0)|0;j=0}M=j;Ra=N;return M|0}while(0);Kh(y,m,k,M);j=c[M>>2]|0;if(!j)j=m;else{M=j;Ra=N;return M|0}}else if((j|0)<0?(D=l+1<<16>>16,(b[y+24>>1]|0)!=0):0){b[k>>1]=D;a[I>>0]=a[I>>0]&-3;j=D&65535}else j=m;Lh(y,j,x,n,0,0,M);b[f+50>>1]=0;if(!(a[y+12>>0]|0)){M=c[M>>2]|0;Ra=N;return M|0}a[I>>0]=a[I>>0]&-3;k=Mh(f)|0;c[M>>2]=k;j=c[z>>2]|0;a[j+12>>0]=0;a[f>>0]=1;if(!((h&2|0)!=0&(k|0)==0)){M=k;Ra=N;return M|0}m=f+68|0;k=a[m>>0]|0;if(k<<24>>24>-1){if(k<<24>>24){l=0;j=k;do{k=c[(c[f+120+(l<<2)>>2]|0)+72>>2]|0;if(!(b[k+28>>1]&32)){Df(k);j=a[m>>0]|0}else{h=c[k+20>>2]|0;I=h+120|0;c[I>>2]=(c[I>>2]|0)+-1;h=h+136|0;c[k+16>>2]=c[h>>2];c[h>>2]=k}l=l+1|0}while((l|0)<(j<<24>>24|0));j=c[z>>2]|0}j=c[j+72>>2]|0;if(!(b[j+28>>1]&32))Df(j);else{h=c[j+20>>2]|0;I=h+120|0;c[I>>2]=(c[I>>2]|0)+-1;h=h+136|0;c[j+16>>2]=c[h>>2];c[h>>2]=j}a[m>>0]=-1}m=g+8|0;f:do if(!(c[J>>2]|0))j=0;else{J=m;j=c[J>>2]|0;J=Sv(j|0,c[J+4>>2]|0,-1,-1)|0;h=L()|0;do if(h>>>0>0|(h|0)==0&J>>>0>2147483390)K=155;else{if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](j)|0;c[f+16>>2]=j;if(!j)break}else{l=Wa[c[29356>>2]&127](j)|0;if((c[14985]|0)>>>0>>0)c[14985]=j;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){K=c[14978]|0;J=Tv(j|0,k|0,l|0,((l|0)<0)<<31>>31|0)|0;h=L()|0;c[14768]=((h|0)<0|(h|0)==0&J>>>0<=K>>>0)&1}j=Wa[c[29340>>2]&127](l)|0;if(!j){K=155;break}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k;c[f+16>>2]=j}ew(j|0,c[g>>2]|0,c[m>>2]|0)|0;j=0;break f}while(0);if((K|0)==155)c[f+16>>2]=0;c[M>>2]=7;j=7}while(0);a[f>>0]=3;K=m;g=c[K+4>>2]|0;M=f+56|0;c[M>>2]=c[K>>2];c[M+4>>2]=g;M=j;Ra=N;return M|0}function bh(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=Ra;Ra=Ra+48|0;B=N+24|0;i=N+40|0;M=N+36|0;x=N;q=c[f+8>>2]|0;r=q+4|0;C=c[r>>2]|0;j=g&2;do if((a[f>>0]|0)==3){c[i>>2]=0;a[f>>0]=1;g=c[7389]|0;if((g|0)!=0?(Wa[g&127](410)|0)!=0:0)g=10;else{h=f+16|0;g=f+56|0;g=th(f,c[h>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,i)|0;if(!g){g=c[h>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{L=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-L;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[h>>2]=0;h=c[i>>2]|0;g=f+4|0;if(!h){if(c[g>>2]|0)D=12}else{c[g>>2]=h;D=12}if((D|0)==12?(a[f>>0]|0)==0:0)a[f>>0]=2;c[M>>2]=0;break}}c[M>>2]=g;M=g;Ra=N;return M|0}while(0);L=f+68|0;F=a[L>>0]|0;p=F<<24>>24;I=f+70|0;J=b[I>>1]|0;z=J&65535;K=f+116|0;G=c[K>>2]|0;m=(c[G+64>>2]|0)+(z<<1)|0;m=(c[G+56>>2]|0)+((d[m>>0]<<8|d[m+1>>0])&e[G+26>>1])|0;g=G+20|0;if((c[g>>2]|0)<0?Jh(G)|0:0){M=11;Ra=N;return M|0}H=j<<24>>24!=0;n=G+8|0;do if(H){if(a[n>>0]|0){k=c[g>>2]|0;i=m+(d[G+10>>0]|0)|0;A=a[i>>0]|0;h=A&255;if(A<<24>>24<0){g=0;h=h&127;do{g=g+1|0;A=a[i+g>>0]|0;h=h<<7|A&127}while(A<<24>>24<0&g>>>0<8);i=i+g|0;j=h}else j=h;if(!(a[G+2>>0]|0))g=i+1|0;else{g=1;do{A=g;g=g+1|0}while((a[i+A>>0]|0)<0&g>>>0<10);g=i+g|0}h=e[G+14>>1]|0;if(j>>>0>h>>>0){i=e[G+16>>1]|0;A=(((j-i|0)>>>0)%(((c[(c[G+52>>2]|0)+36>>2]|0)+-4|0)>>>0)|0)+i|0;g=(g-m&65535)+4+(A>>>0>h>>>0?i:A)|0}else{g=g-m+j|0;g=g>>>0>4?g:4}if((k+2+(g&65535)|0)<=((c[C+36>>2]<<1>>>0)/3|0|0)?(b[G+24>>1]|0)!=1:0){A=1;break}}g=ag(f)|0;c[M>>2]=g;if(g){M=g;Ra=N;return M|0}else A=0}else A=0;while(0);k=f+1|0;do if(!(a[n>>0]|0)){a[k>>0]=a[k>>0]&-15;b[f+50>>1]=0;if(((a[f>>0]|0)==0?(l=b[I>>1]|0,l<<16>>16):0)?a[(c[K>>2]|0)+8>>0]|0:0){b[I>>1]=l+-1<<16>>16;c[M>>2]=0;break}g=Hh(f)|0;c[M>>2]=g;if(g|0){M=g;Ra=N;return M|0}}while(0);i=a[k>>0]|0;a:do if(i&32){j=c[f+64>>2]|0;g=c[C+8>>2]|0;b:do if(!g)D=51;else{c:do if(j){do{if((g|0)!=(f|0)?(c[g+64>>2]|0)==(j|0):0)break c;g=c[g+24>>2]|0}while((g|0)!=0);if(!f)break b;else{D=51;break b}}else{h=f+24|0;while(1){if((g|0)!=(f|0))break c;g=c[h>>2]|0;if(!g){D=51;break b}}}while(0);g=$f(g,j,f)|0;c[M>>2]=g;if(!g)break a;Ra=N;return g|0}while(0);if((D|0)==51)a[k>>0]=i&-33;c[M>>2]=0}while(0);if(((c[f+112>>2]|0)==0?(s=c[f+64>>2]|0,u=f+32|0,t=c[u>>2]|0,u=c[u+4>>2]|0,v=q+11|0,a[v>>0]|0):0)?(a[v>>0]=0,o=c[(c[r>>2]|0)+8>>2]|0,o|0):0){g=o;do{if((a[g+1>>0]&16?(a[v>>0]=1,(c[g+64>>2]|0)==(s|0)):0)?(r=g+32|0,(c[r>>2]|0)==(t|0)?(c[r+4>>2]|0)==(u|0):0):0)a[g>>0]=1;g=c[g+24>>2]|0}while((g|0)!=0)}h=c[G+72>>2]|0;i=c[h+20>>2]|0;do if((b[h+28>>1]&4)!=0?(c[i+24>>2]|0)>>>0>=(c[h+24>>2]|0)>>>0:0)if(!(c[i+96>>2]|0)){c[M>>2]=0;break}else{w=Ve(h)|0;D=73;break}else D=68;while(0);do if((D|0)==68){g=c[i+40>>2]|0;if(g|0){c[M>>2]=g;M=g;Ra=N;return M|0}if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){w=Wf(h)|0;D=73;break}else{w=Xf(h)|0;D=73;break}}while(0);if((D|0)==73?(c[M>>2]=w,w|0):0){M=w;Ra=N;return M|0}g=Ah(G,m,x)|0;c[M>>2]=g;Kh(G,z,e[x+18>>1]|0,M);g=c[M>>2]|0;if(g|0){M=g;Ra=N;return M|0}if(!(a[n>>0]|0)){o=c[K>>2]|0;if((c[o+20>>2]|0)<0?(y=Jh(o)|0,c[M>>2]=y,y|0):0){M=y;Ra=N;return M|0}l=c[(c[(((a[L>>0]|0)+-1|0)>(p|0)?f+120+(p+1<<2)|0:K)>>2]|0)+4>>2]|0;m=o+24|0;D=(c[o+64>>2]|0)+((e[m>>1]<<1)+-2)|0;D=(d[D>>0]<<8|d[D+1>>0])&e[o+26>>1];n=(c[o+56>>2]|0)+D|0;if(D>>>0<4){c[B>>2]=32306;c[B+4>>2]=72100;c[B+8>>2]=31517;Db(11,32001,B);M=11;Ra=N;return M|0}k=(Xa[c[o+76>>2]&255](o,n)|0)&65535;g=c[C+80>>2]|0;h=c[o+72>>2]|0;i=c[h+20>>2]|0;do if((b[h+28>>1]&4)!=0?(c[i+24>>2]|0)>>>0>=(c[h+24>>2]|0)>>>0:0)if(!(c[i+96>>2]|0)){c[M>>2]=0;D=91;break}else{E=Ve(h)|0;D=90;break}else D=85;while(0);do if((D|0)==85){j=c[i+40>>2]|0;if(j|0){c[M>>2]=j;break}if((c[i+148>>2]|0)>>>0>(c[i+152>>2]|0)>>>0){E=Wf(h)|0;D=90;break}else{E=Xf(h)|0;D=90;break}}while(0);if((D|0)==90?(c[M>>2]=E,(E|0)==0):0)D=91;if((D|0)==91)Lh(G,z,n+-4|0,k+4|0,g,l,M);Kh(o,(e[m>>1]|0)+-1|0,k,M);g=c[M>>2]|0;if(g|0){M=g;Ra=N;return M|0}}g=Mh(f)|0;c[M>>2]=g;if(g|0){M=g;Ra=N;return M|0}g=a[L>>0]|0;if(g<<24>>24>F<<24>>24){h=c[(c[K>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);g=a[L>>0]|0}else{E=c[h+20>>2]|0;D=E+120|0;c[D>>2]=(c[D>>2]|0)+-1;E=E+136|0;c[h+16>>2]=c[E>>2];c[E>>2]=h}h=g+-1<<24>>24;a[L>>0]=h;g=h<<24>>24;if(h<<24>>24>F<<24>>24)do{h=h+-1<<24>>24;a[L>>0]=h;g=c[f+120+(g<<2)>>2]|0;do if(g){g=c[g+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);h=a[L>>0]|0;break}else{E=c[g+20>>2]|0;D=E+120|0;c[D>>2]=(c[D>>2]|0)+-1;E=E+136|0;c[g+16>>2]=c[E>>2];c[E>>2]=g;break}}while(0);g=h<<24>>24}while(h<<24>>24>F<<24>>24);c[K>>2]=c[f+120+(g<<2)>>2];g=Mh(f)|0;c[M>>2]=g;if(g|0){M=g;Ra=N;return M|0}}if(A|0){a[f>>0]=2;h=b[G+24>>1]|0;g=f+4|0;if((J&65535)<(h&65535)){c[g>>2]=1;M=0;Ra=N;return M|0}else{c[g>>2]=-1;b[I>>1]=(h&65535)+65535;M=0;Ra=N;return M|0}}g=xh(f)|0;c[M>>2]=g;if(H){h=a[L>>0]|0;if(h<<24>>24>-1){if(h<<24>>24){i=0;g=h;do{h=c[(c[f+120+(i<<2)>>2]|0)+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);g=a[L>>0]|0}else{J=c[h+20>>2]|0;I=J+120|0;c[I>>2]=(c[I>>2]|0)+-1;J=J+136|0;c[h+16>>2]=c[J>>2];c[J>>2]=h}i=i+1|0}while((i|0)<(g<<24>>24|0))}g=c[(c[K>>2]|0)+72>>2]|0;if(!(b[g+28>>1]&32))Df(g);else{K=c[g+20>>2]|0;J=K+120|0;c[J>>2]=(c[J>>2]|0)+-1;K=K+136|0;c[g+16>>2]=c[K>>2];c[K>>2]=g}a[L>>0]=-1;g=c[M>>2]|0}a[f>>0]=3}if((g|0)!=16){M=g;Ra=N;return M|0}c[M>>2]=0;M=0;Ra=N;return M|0}function ch(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=Ra;Ra=Ra+16|0;r=s;h=xh(f)|0;switch(h|0){case 0:{c[g>>2]=0;k=f+116|0;l=f+70|0;m=f+68|0;n=f+20|0;o=f+50|0;p=f+1|0;q=f+2|0;while(1){g=c[k>>2]|0;if(a[g+8>>0]|0){g=0;h=8;break}h=b[l>>1]|0;i=(c[g+64>>2]|0)+((h&65535)<<1)|0;i=(c[g+56>>2]|0)+((d[i>>0]<<8|d[i+1>>0])&e[g+26>>1])|0;j=a[m>>0]|0;if(j<<24>>24>18){h=5;break}i=d[i>>0]<<24|d[i+1>>0]<<16|d[i+2>>0]<<8|d[i+3>>0];t=c[n>>2]|0;b[o>>1]=0;a[p>>0]=a[p>>0]&-7;u=j<<24>>24;b[f+72+(u<<1)>>1]=h;c[f+120+(u<<2)>>2]=g;b[l>>1]=0;a[m>>0]=j+1<<24>>24;g=yh(t,i,k,f,d[q>>0]|0)|0;if(g|0){h=8;break}}if((h|0)==5){c[r>>2]=32306;c[r+4>>2]=68229;c[r+8>>2]=31517;Db(11,32001,r);u=11;Ra=s;return u|0}else if((h|0)==8){Ra=s;return g|0}break}case 16:{c[g>>2]=1;u=0;Ra=s;return u|0}default:{u=h;Ra=s;return u|0}}return 0}function dh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=a+8|0;d=c[a+16>>2]|0;o=c[a+20>>2]|0;g=a+40|0;e=c[a+48>>2]|0;m=c[a+52>>2]|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;g=a+24|0;h=a+32|0;f=c[h>>2]|0;c[h>>2]=0;h=a+36|0;i=c[h>>2]|0;do if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{l=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);c[h>>2]=0;c[g>>2]=0;if(f|0)do{g=f;f=c[f>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](g);else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g)}}while((f|0)!=0);c[a+28>>2]=0;k=(e|0)==0;if(!k){j=e;do{l=c[j+8>>2]|0;do if(l|0){Xi(0,c[l+28>>2]|0);f=c[l>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);f=c[l+4>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{i=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);f=c[l+12>>2]|0;if(f|0)ni(0,f);i=c[l+16>>2]|0;do if(i|0){h=i+4|0;f=c[i>>2]|0;if((c[h>>2]|0)>0){g=0;do{f=c[f+(g<<3)>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);g=g+1|0;f=c[i>>2]|0}while((g|0)<(c[h>>2]|0))}do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{p=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{p=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);j=c[j>>2]|0}while((j|0)!=0)}do if(m|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{p=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}while(0);if(!k)do{f=e;e=c[e>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](f);else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f)}}while((e|0)!=0);c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;f=(d|0)==0;if(!f){e=d;do{g=c[e+8>>2]|0;if(g|0?(n=g+32|0,p=(c[n>>2]|0)+-1|0,c[n>>2]=p,(p|0)==0):0)Vi(0,g);e=c[e>>2]|0}while((e|0)!=0)}do if(o|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](o);break}else{p=Wa[c[29352>>2]&127](o)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](o);break}while(0);if(!f)do{e=d;d=c[d>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}}while((d|0)!=0);e=a+56|0;f=a+64|0;d=c[f>>2]|0;c[f>>2]=0;f=a+68|0;g=c[f>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{p=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[f>>2]=0;c[e>>2]=0;if(d|0)do{e=d;d=c[d>>2]|0;if(!(c[7324]|0))ab[c[29344>>2]&127](e);else{p=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e)}}while((d|0)!=0);c[a+60>>2]=0;c[a+72>>2]=0;d=a+78|0;e=b[d>>1]|0;if(!(e&1)){p=e&-10;b[d>>1]=p;return}p=a+4|0;c[p>>2]=(c[p>>2]|0)+1;p=e&-10;b[d>>1]=p;return}function eh(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=Ra;Ra=Ra+48|0;x=G+16|0;C=G;A=G+24|0;F=f+165|0;a[F>>0]=1;w=(g|0)==1?34855:34585;c[C>>2]=w;c[C+4>>2]=34874;c[C+8>>2]=34876;c[C+12>>2]=0;c[A>>2]=f;c[A+8>>2]=g;y=A+12|0;c[y>>2]=0;c[A+4>>2]=h;c[A+16>>2]=i;c[A+20>>2]=0;fh(A,3,C,0)|0;i=c[y>>2]|0;a:do if(!i){z=f+16|0;u=c[z>>2]|0;C=u+(g<<4)+4|0;i=c[C>>2]|0;if(!i){f=(c[u+28>>2]|0)+78|0;b[f>>1]=b[f>>1]|1;f=0;a[F>>0]=0;Ra=G;return f|0}l=c[i>>2]|0;m=c[i+4>>2]|0;k=m+4|0;c[k>>2]=l;b:do if(!(a[i+8>>0]|0)){m=Zb(i,0,0)|0;switch(m|0){case 0:{l=c[C>>2]|0;m=c[l+4>>2]|0;B=1;k=m+4|0;l=c[l>>2]|0;break b}case 516:{l=50738;break}case 100:{l=50760;break}case 101:{l=50782;break}default:{j=m&255;if(j>>>0<29?(520028155>>>j&1|0)!=0:0)l=c[22960+(j<<2)>>2]|0;else l=50724}}j=c[h>>2]|0;do if(j|0){if(c[f+480>>2]|0){Xd(f,j);break}E=j;if((c[f+304>>2]|0)>>>0<=E>>>0?(c[f+308>>2]|0)>>>0>E>>>0:0){E=f+300|0;c[j>>2]=c[E>>2];c[E>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{E=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c:do if(l){k=(Eu(l)|0)+1|0;d:do if(c[f+272>>2]|0)if(!(a[f+81>>0]|0))D=32;else{j=0;break c}else{do if(!(0<0|(0==0?(e[f+276>>1]|0)>>>0>>0:0))){i=f+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];E=f+284|0;c[E>>2]=(c[E>>2]|0)+1;break d}i=f+296|0;j=c[i>>2]|0;if(!j){j=f+292|0;break}else{c[i>>2]=c[j>>2];E=f+284|0;c[E>>2]=(c[E>>2]|0)+1;break d}}else j=f+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;D=32}while(0);if((D|0)==32)j=_d(f,k,0)|0;if(j)ew(j|0,l|0,k|0)|0;else j=0}else j=0;while(0);c[h>>2]=j;j=m;break a}else B=0;while(0);c[k>>2]=l;t=c[(c[m+12>>2]|0)+56>>2]|0;p=a[t+40>>0]|0;q=a[t+41>>0]|0;r=a[t+42>>0]|0;s=a[t+43>>0]|0;c[k>>2]=l;o=d[t+45>>0]<<16|d[t+44>>0]<<24|d[t+46>>0]<<8|d[t+47>>0];c[k>>2]=l;n=d[t+49>>0]<<16|d[t+48>>0]<<24|d[t+50>>0]<<8|d[t+51>>0];c[k>>2]=l;k=d[t+59>>0]|0;t=d[t+57>>0]<<16|d[t+56>>0]<<24|d[t+58>>0]<<8|k;v=f+32|0;u=u+(g<<4)+12|0;i=c[u>>2]|0;do if((c[v>>2]&33554432|0)==0&0==0){c[i>>2]=(q&255)<<16|(p&255)<<24|(r&255)<<8|s&255;if(t){if(!g){k=k&3;k=(k|0)==0?1:k&255;a[f+78>>0]=k;D=66;break}k=a[f+78>>0]|0;if((t|0)==(k&255|0))D=66;else{j=c[h>>2]|0;do if(j|0){if(c[f+480>>2]|0){Xd(f,j);break}A=j;if((c[f+304>>2]|0)>>>0<=A>>>0?(c[f+308>>2]|0)>>>0>A>>>0:0){A=f+300|0;c[j>>2]=c[A>>2];c[A>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{A=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);e:do if(c[f+272>>2]|0)if(!(a[f+81>>0]|0))D=61;else j=0;else{do if((e[f+276>>1]|0)>=68){i=f+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];D=f+284|0;c[D>>2]=(c[D>>2]|0)+1;D=62;break e}i=f+296|0;j=c[i>>2]|0;if(!j){j=f+292|0;break}else{c[i>>2]=c[j>>2];D=f+284|0;c[D>>2]=(c[D>>2]|0)+1;D=62;break e}}else j=f+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;D=61}while(0);if((D|0)==61){j=_d(f,68,0)|0;D=62}if((D|0)==62)if(!j)j=0;else{i=j;k=34948;l=i+68|0;do{a[i>>0]=a[k>>0]|0;i=i+1|0;k=k+1|0}while((i|0)<(l|0))}c[h>>2]=j;j=1}}else D=65}else{c[i>>2]=0;n=0;o=0;D=65}while(0);if((D|0)==65){k=(c[(c[z>>2]|0)+(g<<4)+12>>2]|0)+78|0;b[k>>1]=b[k>>1]|4;k=a[f+78>>0]|0;D=66}do if((D|0)==66){a[i+77>>0]=k;k=i+80|0;if(!(c[k>>2]|0)){i=(n|0)>-1?n:(n|0)==-2147483648?2147483647:0-n|0;i=(i|0)==0?-2e3:i;c[k>>2]=i;c[m+4>>2]=l;k=c[(c[m>>2]|0)+212>>2]|0;c[k+16>>2]=i;l=c[7357]|0;m=c[k+44>>2]|0;if((i|0)<=-1){s=Yv(i|0,((i|0)<0)<<31>>31|0,-1024,-1)|0;t=L()|0;i=(c[k+28>>2]|0)+(c[k+24>>2]|0)|0;i=Wv(s|0,t|0,i|0,((i|0)<0)<<31>>31|0)|0;L()|0}bb[l&127](m,i);i=c[u>>2]|0}k=o&255;i=i+76|0;a[i>>0]=k;if(k<<24>>24){if((k&255)>4){j=c[h>>2]|0;do if(j|0){if(c[f+480>>2]|0){Xd(f,j);break}A=j;if((c[f+304>>2]|0)>>>0<=A>>>0?(c[f+308>>2]|0)>>>0>A>>>0:0){A=f+300|0;c[j>>2]=c[A>>2];c[A>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{A=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-A;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);f:do if(c[f+272>>2]|0)if(!(a[f+81>>0]|0))D=92;else j=0;else{do if((e[f+276>>1]|0)>=24){i=f+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];D=f+284|0;c[D>>2]=(c[D>>2]|0)+1;D=93;break f}i=f+296|0;j=c[i>>2]|0;if(!j){j=f+292|0;break}else{c[i>>2]=c[j>>2];D=f+284|0;c[D>>2]=(c[D>>2]|0)+1;D=93;break f}}else j=f+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;D=92}while(0);if((D|0)==92){j=_d(f,24,0)|0;D=93}if((D|0)==93)if(!j)j=0;else{i=j;k=35016;l=i+24|0;do{a[i>>0]=a[k>>0]|0;i=i+1|0;k=k+1|0}while((i|0)<(l|0))}c[h>>2]=j;j=1;break}}else a[i>>0]=1;if((g|0)==0&(o|0)>3){t=v;u=c[t+4>>2]|0;h=v;c[h>>2]=c[t>>2]&-3;c[h+4>>2]=u}c[x>>2]=c[(c[z>>2]|0)+(g<<4)>>2];c[x+4>>2]=w;i=dd(f,35040,x)|0;h=f+312|0;x=c[h>>2]|0;c[h>>2]=0;k=nd(f,i,77,A,0)|0;c[h>>2]=x;k=(k|0)==0?c[y>>2]|0:k;do if(i|0){if(c[f+480>>2]|0){Xd(f,i);break}h=i;if((c[f+304>>2]|0)>>>0<=h>>>0?(c[f+308>>2]|0)>>>0>h>>>0:0){h=f+300|0;c[i>>2]=c[h>>2];c[h>>2]=i;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{h=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);i=(k|0)==0;if(i)gh(f,g)|0;if(!(a[f+81>>0]|0)){if(!i){j=k;D=112}}else{$b(f);j=7;D=112}if((D|0)==112?(c[v>>2]&134217728|0)==0&0==0:0)break;j=(c[(c[z>>2]|0)+(g<<4)+12>>2]|0)+78|0;b[j>>1]=b[j>>1]|1;j=0}while(0);if((B|0)!=0?(E=c[C>>2]|0,c[(c[E+4>>2]|0)+4>>2]=c[E>>2],(cc(E,0)|0)==0):0)bc(E,0)|0}else j=i;while(0);g:do if((j|0)>=7){if((j|0)<3082)switch(j|0){case 7:break;default:break g}else switch(j|0){case 3082:break;default:break g}i=f+81|0;if((a[i>>0]|0)==0?(a[f+82>>0]|0)==0:0){a[i>>0]=1;if((c[f+180>>2]|0)>0)c[f+264>>2]=1;i=f+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[f+236>>2]|0;if(i|0)c[i+12>>2]=7}}else{switch(j|0){case 0:break;default:break g}a[F>>0]=0;Ra=G;return j|0}while(0);if((g|0)>-1){h=c[f+16>>2]|0;g=(c[h+(g<<4)+12>>2]|0)+78|0;b[g>>1]=b[g>>1]|8;g=(c[h+28>>2]|0)+78|0;b[g>>1]=b[g>>1]|8;g=f+24|0;c[g>>2]=c[g>>2]&-17}if(c[f+56>>2]|0){f=j;a[F>>0]=0;Ra=G;return f|0}n=f+20|0;i=c[n>>2]|0;if((i|0)<=0){f=j;a[F>>0]=0;Ra=G;return f|0}m=f+16|0;l=0;do{k=c[(c[m>>2]|0)+(l<<4)+12>>2]|0;if(b[k+78>>1]&8){dh(k);i=c[n>>2]|0}l=l+1|0}while((l|0)<(i|0));a[F>>0]=0;Ra=G;return j|0}function fh(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=Ra;Ra=Ra+96|0;x=B+64|0;w=B+56|0;v=B+40|0;l=B+24|0;k=B+16|0;j=B;n=B+80|0;s=B+76|0;A=c[e>>2]|0;t=c[e+8>>2]|0;r=c[A+16>>2]|0;q=(c[r+(t<<4)+12>>2]|0)+78|0;b[q>>1]=b[q>>1]&-5;q=e+20|0;c[q>>2]=(c[q>>2]|0)+1;q=A+81|0;if(a[q>>0]|0){c[e+12>>2]=7;e=1;Ra=B;return e|0}if(!g){e=0;Ra=B;return e|0}u=c[g+4>>2]|0;if(!u){f=c[g>>2]|0;h=e+4|0;i=c[h>>2]|0;if(c[i>>2]|0){e=0;Ra=B;return e|0}if(c[e+16>>2]&1|0){c[i>>2]=0;c[e+12>>2]=1;e=0;Ra=B;return e|0}if(0==0?(c[A+32>>2]&1|0)==0:0){c[k>>2]=(f|0)==0?35133:f;g=dd(A,35135,k)|0;c[c[h>>2]>>2]=g;c[l>>2]=32306;c[l+4>>2]=123732;c[l+8>>2]=31517;Db(11,32001,l);c[e+12>>2]=11;e=0;Ra=B;return e|0}else{c[j>>2]=32306;c[j+4>>2]=123725;c[j+8>>2]=31517;Db(11,32001,j);c[e+12>>2]=11;e=0;Ra=B;return e|0}}i=g+8|0;k=c[i>>2]|0;l=(k|0)==0;do if(!l){f=a[k>>0]|0;do if(!(f<<24>>24)){f=35095;o=13}else{j=f&255;f=208+j|0;if((j|32|0)==99){f=a[k+1>>0]|0;if(!(f<<24>>24)){f=35096;o=13;break}j=f&255;f=208+j|0;if((j|32|0)==114){f=a[k+2>>0]|0;if(!(f<<24>>24)){f=35097;o=13;break}j=f&255;f=208+j|0;if((j|32|0)==101){f=a[k+3>>0]|0;if(!(f<<24>>24)){f=35098;o=13;break}j=f&255;f=208+j|0;if((j|32|0)==97){f=a[k+4>>0]|0;if(!(f<<24>>24)){f=35099;o=13;break}j=f&255;f=208+j|0;if((j|32|0)==116){f=a[k+5>>0]|0;if(!(f<<24>>24)){f=35100;o=13;break}j=f&255;f=208+j|0;if((j|32|0)==101){f=a[k+6>>0]|0;if(!(f<<24>>24)){f=35101;o=13;break}if(f<<24>>24==32)break;else{h=32;f=208+(f&255)|0}}else h=101}else h=116}else h=97}else h=101}else h=114}else h=99;p=d[f>>0]|0;m=h;o=17}while(0);if((o|0)==13){p=0;m=a[208+(d[f>>0]|0)>>0]|0;o=17}if((o|0)==17?(p|0)!=(m&255|0):0)break;y=A+164|0;x=a[y>>0]|0;a[y>>0]=t;c[n>>2]=0;ii(u,n)|0;c[A+160>>2]=c[n>>2];z=A+166|0;a[z>>0]=a[z>>0]&-2;qd(A,c[i>>2]|0,-1,0,0,s,0)|0;f=c[A+64>>2]|0;a[y>>0]=x;a:do if(f|0?(a[z>>0]&1)==0:0){c[e+12>>2]=f;switch(f|0){case 9:break a;case 7:break;default:{if((f&255|0)==6)break a;gi(e,c[g>>2]|0,pd(A)|0);break a}}if((a[q>>0]|0)==0?(a[A+82>>0]|0)==0:0){a[q>>0]=1;if((c[A+180>>2]|0)>0)c[A+264>>2]=1;f=A+272|0;c[f>>2]=(c[f>>2]|0)+1;f=c[A+236>>2]|0;if(f|0)c[f+12>>2]=7}}while(0);gc(c[s>>2]|0)|0;e=0;Ra=B;return e|0}while(0);i=c[g>>2]|0;j=(i|0)==0;do if(!j){if(!l?a[k>>0]|0:0)break;h=hi(A,i,c[r+(t<<4)>>2]|0)|0;i=(h|0)==0;b:do if((!i?(y=h+44|0,ii(u,y)|0):0)?(z=c[y>>2]|0,(z|0)>=2):0){f=c[(c[h+12>>2]|0)+8>>2]|0;if(!f){e=0;Ra=B;return e|0}while(1){if(!((f|0)==(h|0)?1:(c[f+44>>2]|0)!=(z|0)))break b;f=c[f+20>>2]|0;if(!f){f=0;break}}Ra=B;return f|0}while(0);gi(e,c[g>>2]|0,i?35120:35103);e=0;Ra=B;return e|0}while(0);f=e+4|0;h=c[f>>2]|0;if(c[h>>2]|0){e=0;Ra=B;return e|0}if(c[e+16>>2]&1|0){c[h>>2]=0;c[e+12>>2]=1;e=0;Ra=B;return e|0}if(0==0?(c[A+32>>2]&1|0)==0:0){c[w>>2]=j?35133:i;g=dd(A,35135,w)|0;c[c[f>>2]>>2]=g;c[x>>2]=32306;c[x+4>>2]=123732;c[x+8>>2]=31517;Db(11,32001,x);c[e+12>>2]=11;e=0;Ra=B;return e|0}else{c[v>>2]=32306;c[v+4>>2]=123725;c[v+8>>2]=31517;Db(11,32001,v);c[e+12>>2]=11;e=0;Ra=B;return e|0}return 0}function gh(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=Ra;Ra=Ra+16|0;k=m;l=m+8|0;j=e+16|0;g=c[j>>2]|0;i=c[g+(f<<4)+12>>2]|0;h=c[i+16>>2]|0;if(h|0)do{n=(c[h+8>>2]|0)+36|0;c[n>>2]=c[n>>2]&-17;h=c[h>>2]|0}while((h|0)!=0);i=i+32|0;h=c[i>>2]|0;if(h){g=h;do{n=(c[g+8>>2]|0)+55|0;h=(d[n>>0]|d[n+1>>0]<<8)&-129;a[n>>0]=h;a[n+1>>0]=h>>8;g=c[g>>2]|0}while((g|0)!=0);g=c[j>>2]|0}c[l>>2]=e;g=c[g+(f<<4)>>2]|0;c[l+4>>2]=g;do if(Sd(e,35174,g)|0){c[k>>2]=g;h=dd(e,35187,k)|0;if(h){g=nd(e,h,78,l,0)|0;if(c[e+480>>2]|0){Xd(e,h);l=g;break}n=h;if((c[e+304>>2]|0)>>>0<=n>>>0?(c[e+308>>2]|0)>>>0>n>>>0:0){l=e+300|0;c[h>>2]=c[l>>2];c[l>>2]=h;l=g;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);l=g;break}else{l=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);l=g;break}}else l=7}else l=0;while(0);g=c[i>>2]|0;if(g|0)do{f=c[g+8>>2]|0;n=f+55|0;if(!((d[n>>0]|d[n+1>>0]<<8)&128)){k=c[f+8>>2]|0;j=f+50|0;i=b[j>>1]|0;i=(i&65535)<5?i:5;h=b[(c[f+12>>2]|0)+44>>1]|0;b[k>>1]=h;if(c[f+36>>2]|0){h=(h&65535)+65526&65535;b[k>>1]=h}if(h<<16>>16<33)b[k>>1]=33;ew(k+2|0,31120,i<<1&65535|0)|0;n=b[j>>1]|0;h=n&65535;if((i&65535)<(n&65535)){h=i&65535;do{h=h+1|0;b[k+(h<<1)>>1]=23;i=b[j>>1]|0}while(h>>>0<(i&65535)>>>0);h=i&65535}if(a[f+54>>0]|0)b[k+(h<<1)>>1]=0}g=c[g>>2]|0}while((g|0)!=0);if((l|0)!=7){Ra=m;return l|0}g=e+81|0;if(a[g>>0]|0){Ra=m;return l|0}if(a[e+82>>0]|0){Ra=m;return l|0}a[g>>0]=1;if((c[e+180>>2]|0)>0)c[e+264>>2]=1;g=e+272|0;c[g>>2]=(c[g>>2]|0)+1;g=c[e+236>>2]|0;if(!g){Ra=m;return l|0}c[g+12>>2]=7;Ra=m;return l|0}function hh(d){d=d|0;var f=0,g=0,h=0,i=0,j=0;i=c[d+32>>2]|0;j=d+8|0;if(!((b[j>>1]&9216)==0?!(c[d+24>>2]|0):0))Cg(d);a:do if(c[i+272>>2]|0)if(!(a[i+81>>0]|0))h=14;else{j=7;return j|0}else{do if((e[i+276>>1]|0)>=32){f=i+300|0;g=c[f>>2]|0;if(g|0){c[f>>2]=c[g>>2];f=i+284|0;c[f>>2]=(c[f>>2]|0)+1;break a}f=i+296|0;g=c[f>>2]|0;if(!g){f=i+292|0;break}else{c[f>>2]=c[g>>2];f=i+284|0;c[f>>2]=(c[f>>2]|0)+1;break a}}else f=i+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1;h=14}while(0);if((h|0)==14)g=_d(i,32,0)|0;if(!g){j=7;return j|0}h=g;if((c[i+304>>2]|0)>>>0<=h>>>0?(c[i+308>>2]|0)>>>0>h>>>0:0)f=e[i+276>>1]|0;else f=Wa[c[29352>>2]&127](g)|0;c[g>>2]=0;c[g+4>>2]=i;c[g+8>>2]=0;c[g+12>>2]=0;c[g+20>>2]=0;c[g+16>>2]=g+32;b[g+24>>1]=(f+1048544|0)>>>4;b[g+26>>1]=1;c[g+28>>2]=0;c[d+16>>2]=g;b[j>>1]=1040;c[d+36>>2]=94;j=0;return j|0}function ih(a){a=a|0;var b=0;b=(c[a>>2]|0)+200|0;c[a+4>>2]=c[b>>2];c[b>>2]=a;return}function jh(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=b+5|0;f=a[k>>0]|0;if(!(a[b+15>>0]|0))j=3;else switch(e|0){case 2:case 4:{j=3;break}default:{}}do if((j|0)==3?(g=f&255,(g|0)!=(e|0)):0){a[k>>0]=e;if(!((e&1|0)==0&((g&5|0)==1&(a[b+4>>0]|0)==0))){if((e|0)!=2)break;e=c[b+64>>2]|0;f=c[e>>2]|0;if(!f)break;Wa[c[f+4>>2]&127](e)|0;c[e>>2]=0;break}e=c[b+64>>2]|0;f=c[e>>2]|0;if(f|0){Wa[c[f+4>>2]&127](e)|0;c[e>>2]=0}i=b+17|0;if((d[i>>0]|0)>1){j=c[b>>2]|0;Ya[c[j+28>>2]&127](j,c[b+172>>2]|0,0)|0;break}e=b+16|0;g=a[e>>0]|0;h=g<<24>>24==0;if(h){f=Sf(b)|0;e=a[e>>0]|0}else{f=0;e=g}a:do if(e<<24>>24==1){e=a[i>>0]|0;switch(e<<24>>24){case 0:case 1:case 5:break;default:{j=19;break a}}if(!(a[b+13>>0]|0)){f=c[b+60>>2]|0;if(Xa[c[(c[f>>2]|0)+28>>2]&255](f,2)|0)break;e=a[i>>0]|0}if(e<<24>>24==5)j=19;else{a[i>>0]=2;j=19}}else if(!f)j=19;while(0);if((j|0)==19?(j=c[b>>2]|0,Ya[c[j+28>>2]&127](j,c[b+172>>2]|0,0)|0,g<<24>>24==1):0){e=c[b+60>>2]|0;f=c[e>>2]|0;if(!f)break;if(!(a[b+13>>0]|0))Xa[c[f+32>>2]&255](e,1)|0;if((a[i>>0]|0)==5)break;a[i>>0]=1;break}if(h)vf(b)}while(0);return d[k>>0]|0}function kh(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;T=Ra;Ra=Ra+80|0;A=T+32|0;y=T+24|0;x=T+16|0;w=T+8|0;q=T;S=g+79|0;if(!(a[S>>0]|0)){j=c[f>>2]|0;do if(j|0){if(c[g+480>>2]|0){Xd(g,j);break}S=j;if((c[g+304>>2]|0)>>>0<=S>>>0?(c[g+308>>2]|0)>>>0>S>>>0:0){S=g+300|0;c[j>>2]=c[S>>2];c[S>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{S=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);a:do if(c[g+272>>2]|0)if(!(a[g+81>>0]|0))R=21;else j=0;else{do if((e[g+276>>1]|0)>=40){k=g+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=22;break a}k=g+296|0;j=c[k>>2]|0;if(!j){j=g+292|0;break}else{c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=22;break a}}else j=g+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;R=21}while(0);if((R|0)==21){j=_d(g,40,0)|0;R=22}if((R|0)==22)if(!j)j=0;else{l=j;k=36072;n=l+40|0;do{a[l>>0]=a[k>>0]|0;l=l+1|0;k=k+1|0}while((l|0)<(n|0))}c[f>>2]=j;g=1;Ra=T;return g|0}if((c[g+168>>2]|0)>1){j=c[f>>2]|0;do if(j|0){if(c[g+480>>2]|0){Xd(g,j);break}S=j;if((c[g+304>>2]|0)>>>0<=S>>>0?(c[g+308>>2]|0)>>>0>S>>>0:0){S=g+300|0;c[j>>2]=c[S>>2];c[S>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{S=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);b:do if(c[g+272>>2]|0)if(!(a[g+81>>0]|0))R=45;else j=0;else{do if((e[g+276>>1]|0)>=43){k=g+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=46;break b}k=g+296|0;j=c[k>>2]|0;if(!j){j=g+292|0;break}else{c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=46;break b}}else j=g+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;R=45}while(0);if((R|0)==45){j=_d(g,43,0)|0;R=46}if((R|0)==46)if(!j)j=0;else{l=j;k=36112;n=l+43|0;do{a[l>>0]=a[k>>0]|0;l=l+1|0;k=k+1|0}while((l|0)<(n|0))}c[f>>2]=j;g=1;Ra=T;return g|0}m=g+60|0;n=c[m>>2]|0;p=(i|0)!=0;do if(p){j=b[i+8>>1]|0;if((j&15|16)<<16>>16==18){if((j&514)==514?(a[i+10>>0]|0)==1:0){j=c[i+16>>2]|0;k=n}else if(!(j&1)){j=Gg(i,1)|0;k=c[m>>2]|0}else{j=0;k=n}c[m>>2]=k&-8|6;break}j=c[f>>2]|0;do if(j|0){if(c[g+480>>2]|0){Xd(g,j);break}S=j;if((c[g+304>>2]|0)>>>0<=S>>>0?(c[g+308>>2]|0)>>>0>S>>>0:0){S=g+300|0;c[j>>2]=c[S>>2];c[S>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{S=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-S;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);c:do if(c[g+272>>2]|0)if(!(a[g+81>>0]|0))R=70;else j=0;else{do if((e[g+276>>1]|0)>=18){k=g+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=71;break c}k=g+296|0;j=c[k>>2]|0;if(!j){j=g+292|0;break}else{c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=71;break c}}else j=g+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;R=70}while(0);if((R|0)==70){j=_d(g,18,0)|0;R=71}if((R|0)==71)if(!j)j=0;else{l=j;k=36155;n=l+18|0;do{a[l>>0]=a[k>>0]|0;l=l+1|0;k=k+1|0}while((l|0)<(n|0))}c[f>>2]=j;g=1;Ra=T;return g|0}else j=59952;while(0);E=g+32|0;G=E;F=c[G>>2]|0;G=c[G+4>>2]|0;H=g+24|0;I=c[H>>2]|0;J=g+100|0;K=c[J>>2]|0;M=g+104|0;N=c[M>>2]|0;O=g+88|0;P=a[O>>0]|0;c[H>>2]=I|6;o=E;c[o>>2]=F&-268456578|513;c[o+4>>2]=G;a[O>>0]=0;o=g+16|0;Q=c[o>>2]|0;v=c[Q+(h<<4)>>2]|0;Q=c[Q+(h<<4)+4>>2]|0;D=Q+4|0;r=a[(c[c[D>>2]>>2]|0)+12>>0]|0;u=c[g+20>>2]|0;c[q>>2]=j;j=yi(g,f,36173,q)|0;c[m>>2]=n;d:do if(!j){j=c[o>>2]|0;C=j+(u<<4)|0;z=c[j+(u<<4)+4>>2]|0;B=z+4|0;if(p){k=c[(c[c[B>>2]>>2]|0)+60>>2]|0;m=q;c[m>>2]=0;c[m+4>>2]=0;m=c[k>>2]|0;do if(m){n=(Xa[c[m+24>>2]&255](k,q)|0)!=0;p=c[q+4>>2]|0;if(!(n|((p|0)>0|(p|0)==0&(c[q>>2]|0)>>>0>0))){j=c[o>>2]|0;break}j=c[f>>2]|0;do if(j|0){if(c[g+480>>2]|0){Xd(g,j);break}B=j;if((c[g+304>>2]|0)>>>0<=B>>>0?(c[g+308>>2]|0)>>>0>B>>>0:0){B=g+300|0;c[j>>2]=c[B>>2];c[B>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{B=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-B;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);e:do if(c[g+272>>2]|0)if(!(a[g+81>>0]|0))R=104;else j=0;else{do if((e[g+276>>1]|0)>=27){k=g+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=105;break e}k=g+296|0;j=c[k>>2]|0;if(!j){j=g+292|0;break}else{c[k>>2]=c[j>>2];R=g+284|0;c[R>>2]=(c[R>>2]|0)+1;R=105;break e}}else j=g+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;R=104}while(0);if((R|0)==104){j=_d(g,27,0)|0;R=105}if((R|0)==105)if(!j)j=0;else{l=j;k=36196;n=l+27|0;do{a[l>>0]=a[k>>0]|0;l=l+1|0;k=k+1|0}while((l|0)<(n|0))}c[f>>2]=j;m=C;l=1;break d}while(0);c[H>>2]=c[H>>2]|8}m=c[D>>2]|0;c[m+4>>2]=c[Q>>2];m=(c[m+32>>2]|0)-(c[m+36>>2]|0)|0;j=c[(c[j+(h<<4)+12>>2]|0)+80>>2]|0;k=c[B>>2]|0;c[k+4>>2]=c[z>>2];k=c[(c[k>>2]|0)+212>>2]|0;c[k+16>>2]=j;n=c[7357]|0;o=c[k+44>>2]|0;if((j|0)<=-1){q=Yv(j|0,((j|0)<0)<<31>>31|0,-1024,-1)|0;h=L()|0;j=(c[k+28>>2]|0)+(c[k+24>>2]|0)|0;j=Wv(q|0,h|0,j|0,((j|0)<0)<<31>>31|0)|0;L()|0}bb[n&127](o,j);k=c[D>>2]|0;c[k+4>>2]=c[Q>>2];k=c[(c[k>>2]|0)+212>>2]|0;j=c[k+16>>2]|0;if((j|0)<=-1){q=Yv(j|0,((j|0)<0)<<31>>31|0,-1024,-1)|0;h=L()|0;j=(c[k+28>>2]|0)+(c[k+24>>2]|0)|0;j=Wv(q|0,h|0,j|0,((j|0)<0)<<31>>31|0)|0;L()|0}p=c[k+20>>2]|0;j=(j|0)<(p|0)?p:j;p=c[B>>2]|0;n=c[z>>2]|0;o=p+4|0;c[o>>2]=n;p=c[p>>2]|0;k=c[p+212>>2]|0;if(j|0){if((j|0)<0){q=Yv(j|0,((j|0)<0)<<31>>31|0,-1024,-1)|0;h=L()|0;j=(c[k+28>>2]|0)+(c[k+24>>2]|0)|0;j=Wv(q|0,h|0,j|0,((j|0)<0)<<31>>31|0)|0;L()|0}c[k+20>>2]=j}c[o>>2]=n;a[p+7>>0]=1;j=p+20|0;c[p+8>>2]=0;a[j>>0]=a[j>>0]&-2;j=zi(g,f,36223)|0;if(!j){h=(i|0)==0;j=Zb(Q,h?2:0,0)|0;if(!j){j=c[D>>2]|0;if((a[(c[j>>2]|0)+5>>0]|0)==5)c[g+92>>2]=0;j=c[j+32>>2]|0;o=c[B>>2]|0;c[o+4>>2]=c[z>>2];if(!(b[o+22>>1]&2)){i=(m|0)<0;if(i)n=(c[o+32>>2]|0)-(c[o+36>>2]|0)|0;else n=m;if(((j+-512|0)>>>0<65025?(j+-1&j|0)==0:0)?(c[o+32>>2]=j,t=o+80|0,s=c[t>>2]|0,s|0):0){k=s+-4|0;c[t>>2]=k;j=k;do if((c[14816]|0)>>>0<=j>>>0)if((c[14817]|0)>>>0>j>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;s=(c[14820]|0)+1|0;c[14820]=s;c[14821]=(s|0)<(c[14815]|0)&1;break}else{j=Wa[c[29352>>2]&127](k)|0;R=132;break}else{j=Wa[c[29352>>2]&127](k)|0;R=132}while(0);do if((R|0)==132){c[14980]=(c[14980]|0)-j;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{s=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[t>>2]=0}s=o+32|0;t=Se(c[o>>2]|0,s,n)|0;c[o+36>>2]=(c[s>>2]|0)-(n&65535);if(!t){if(!(r<<24>>24)){j=c[g+92>>2]|0;p=c[B>>2]|0;c[p+4>>2]=c[z>>2];if(b[p+22>>1]&2){m=C;l=7;break}if(i)o=(c[p+32>>2]|0)-(c[p+36>>2]|0)|0;else o=m;do if((j+-512|0)>>>0<65025){if(j+-1&j|0)break;c[p+32>>2]=j;n=p+80|0;j=c[n>>2]|0;if(!j)break;k=j+-4|0;c[n>>2]=k;j=k;do if((c[14816]|0)>>>0<=j>>>0)if((c[14817]|0)>>>0>j>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;t=(c[14820]|0)+1|0;c[14820]=t;c[14821]=(t|0)<(c[14815]|0)&1;break}else{j=Wa[c[29352>>2]&127](k)|0;R=149;break}else{j=Wa[c[29352>>2]&127](k)|0;R=149}while(0);do if((R|0)==149){c[14980]=(c[14980]|0)-j;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{t=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[n>>2]=0}while(0);s=p+32|0;t=Se(c[p>>2]|0,s,o)|0;c[p+36>>2]=(c[s>>2]|0)-(o&65535);if(t|0){m=C;l=7;break}}if(!(a[g+81>>0]|0)){j=a[g+84>>0]|0;do if(j<<24>>24>-1)j=j<<24>>24;else{j=c[D>>2]|0;c[j+4>>2]=c[Q>>2];if(!(a[j+17>>0]|0)){j=0;break}j=(a[j+18>>0]|0)==0?1:2}while(0);n=c[B>>2]|0;c[n+4>>2]=c[z>>2];k=j&255;if(b[n+22>>1]&2){j=n+17|0;if(((k|0)!=0|0)==(d[j>>0]|0))R=162}else{j=n+17|0;R=162}if((R|0)==162){a[j>>0]=(k|0)!=0&1;a[n+18>>0]=(k|0)==2&1}k=g+164|0;a[k>>0]=u;c[w>>2]=v;j=yi(g,f,36229,w)|0;if(j|0){m=C;l=j;break}c[x>>2]=v;j=yi(g,f,36337,x)|0;if(j|0){m=C;l=j;break}a[k>>0]=0;c[y>>2]=v;j=yi(g,f,36391,y)|0;c[H>>2]=c[H>>2]&-5;if(j|0){m=C;l=j;break}c[A>>2]=v;j=yi(g,f,36542,A)|0;if(j|0){m=C;l=j;break}j=0;do{k=d[36672+j>>0]|0;n=c[D>>2]|0;c[n+4>>2]=c[Q>>2];k=(k<<2)+36|0;n=(c[(c[n+12>>2]|0)+56>>2]|0)+k|0;n=(d[n+1>>0]<<16|d[n>>0]<<24|d[n+2>>0]<<8|d[n+3>>0])+(d[36672+(j|1)>>0]|0)|0;p=c[B>>2]|0;c[p+4>>2]=c[z>>2];p=c[p+12>>2]|0;o=c[p+56>>2]|0;p=c[p+72>>2]|0;q=c[p+20>>2]|0;do if(!(b[p+28>>1]&4))R=172;else{if((c[q+24>>2]|0)>>>0<(c[p+24>>2]|0)>>>0){R=172;break}if(!(c[q+96>>2]|0))break;l=Ve(p)|0;R=176}while(0);do if((R|0)==172){l=c[q+40>>2]|0;if(l|0){m=C;break d}if((c[q+148>>2]|0)>>>0>(c[q+152>>2]|0)>>>0){l=Wf(p)|0;R=176;break}else{l=Xf(p)|0;R=176;break}}while(0);if((R|0)==176?(R=0,l|0):0){m=C;break d}f=o+k|0;a[f>>0]=n>>>24;a[f+1>>0]=n>>>16;a[f+2>>0]=n>>>8;a[f+3>>0]=n;j=j+2|0}while(j>>>0<10);f:do if(h){k=c[D>>2]|0;c[k+4>>2]=c[Q>>2];j=c[z>>2]|0;l=c[B>>2]|0;c[l+4>>2]=j;k=c[(c[k>>2]|0)+60>>2]|0;n=c[k>>2]|0;do if(!n)R=182;else{x=c[l+32>>2]|0;x=Yv(c[l+44>>2]|0,0,x|0,((x|0)<0)<<31>>31|0)|0;f=L()|0;j=y;c[j>>2]=x;c[j+4>>2]=f;j=Ya[c[n+40>>2]&127](k,11,y)|0;j=(j|0)==12?0:j;if(j|0)break;j=c[z>>2]|0;R=182}while(0);do if((R|0)==182){l=A;n=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(n|0));c[A+20>>2]=j;c[A+24>>2]=z;j=A+4|0;c[j>>2]=Q;c[A+16>>2]=1;Yb(A,2147483647)|0;k=dc(A)|0;if(!k){f=(c[D>>2]|0)+22|0;b[f>>1]=b[f>>1]&-3;break f}j=c[c[(c[j>>2]|0)+4>>2]>>2]|0;if(a[j+12>>0]|0){j=k;break}Ff(j);j=k}while(0);m=C;l=j;break d}while(0);c[(c[B>>2]|0)+4>>2]=c[z>>2];l=cc(z,0)|0;if(l|0){m=C;break}l=bc(z,0)|0;k=(l|0)!=0;j=h^1;do if(k|j)k=k?2:0;else{j=c[B>>2]|0;c[j+4>>2]=c[z>>2];if(!(a[j+17>>0]|0))l=0;else l=(a[j+18>>0]|0)==0?1:2;k=c[D>>2]|0;c[k+4>>2]=c[Q>>2];if(b[k+22>>1]&2){j=k+17|0;if(((l|0)!=0|0)!=(d[j>>0]|0)){k=0;l=0;j=0;break}}else j=k+17|0;a[j>>0]=(l|0)!=0&1;a[k+18>>0]=(l|0)==2&1;k=0;l=0;j=0}while(0);if(j|(k&3)!=0){m=C;break}j=c[(c[B>>2]|0)+32>>2]|0;n=c[D>>2]|0;c[n+4>>2]=c[Q>>2];o=n+22|0;if(b[o>>1]&2){m=C;l=8;break}if(i)m=(c[n+32>>2]|0)-(c[n+36>>2]|0)|0;do if((j+-512|0)>>>0<65025){if(j+-1&j|0)break;c[n+32>>2]=j;l=n+80|0;j=c[l>>2]|0;if(!j)break;k=j+-4|0;c[l>>2]=k;j=k;do if((c[14816]|0)>>>0<=j>>>0)if((c[14817]|0)>>>0>j>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;f=(c[14820]|0)+1|0;c[14820]=f;c[14821]=(f|0)<(c[14815]|0)&1;break}else{j=Wa[c[29352>>2]&127](k)|0;R=207;break}else{j=Wa[c[29352>>2]&127](k)|0;R=207}while(0);do if((R|0)==207){c[14980]=(c[14980]|0)-j;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{R=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-R;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[l>>2]=0}while(0);R=n+32|0;l=Se(c[n>>2]|0,R,m)|0;c[n+36>>2]=(c[R>>2]|0)-(m&65535);b[o>>1]=b[o>>1]|2;m=C}else{m=C;l=7}}else{m=C;l=7}}else{m=C;l=7}}else{m=C;l=j}}else{m=C;l=j}}else{m=0;l=j}while(0);a[g+164>>0]=0;c[H>>2]=I;k=E;c[k>>2]=F;c[k+4>>2]=G;c[J>>2]=K;c[M>>2]=N;a[O>>0]=P;k=c[D>>2]|0;c[k+4>>2]=c[Q>>2];j=k+22|0;if(!(b[j>>1]&2)){P=k+32|0;R=k+36|0;Q=(c[P>>2]|0)-(c[R>>2]|0)|0;Se(c[k>>2]|0,P,Q)|0;c[R>>2]=(c[P>>2]|0)-(Q&65535);b[j>>1]=b[j>>1]|2}a[S>>0]=1;if(m|0){S=m+4|0;ug(c[S>>2]|0);c[S>>2]=0;c[m+12>>2]=0}$b(g);g=l;Ra=T;return g|0}function lh(a){a=a|0;var c=0;c=a+8|0;if(!(b[c>>1]&9216)){b[c>>1]=1;b[c>>1]=4;return a|0}else{Dg(a);b[c>>1]=4;return a|0}return 0}function mh(a,d,e){a=a|0;d=d|0;e=e|0;var f=0;f=a+8|0;do Dg(a);while((b[f>>1]&9216)!=0);c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];if(b[d+8>>1]&2048)return;b[f>>1]=b[f>>1]&-7169&65535|e;return}function nh(d){d=d|0;var e=0,f=0,g=0,h=0;g=d+8|0;f=b[g>>1]|0;h=d+12|0;do if(f&16384){e=(c[d>>2]|0)+(c[h>>2]|0)|0;if((e|0)<1)if(!(f&16))break;else e=1;if(!(Eg(d,e,1)|0)){gw((c[d+16>>2]|0)+(c[h>>2]|0)|0,0,c[d>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+(c[d>>2]|0);b[g>>1]=b[g>>1]&-16897}}while(0);e=d+16|0;f=d+10|0;if(!(Lg(c[e>>2]|0,d,c[h>>2]|0,a[f>>0]|0)|0)){d=0;return d|0}d=(Og(c[e>>2]|0,d,c[h>>2]|0,a[f>>0]|0)|0)==0;d=d?4:8;return d|0}function oh(d){d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Ra;Ra=Ra+16|0;l=o+8|0;m=o;n=d+8|0;e=b[n>>1]|0;if(e&13){m=e;m=m&-16403;b[n>>1]=m;Ra=o;return}j=d+16|0;k=d+12|0;e=d+10|0;f=Og(c[j>>2]|0,d,c[k>>2]|0,a[e>>0]|0)|0;if(f){i=d;h=c[i>>2]|0;i=c[i+4>>2]|0;Lg(c[j>>2]|0,d,c[k>>2]|0,a[e>>0]|0)|0;if((f|0)==1?(g[l>>3]=+g[d>>3],g[m>>3]=+(h>>>0)+4294967296.0*+(i|0),(Lu(l,m,8)|0)==0):0){e=d;c[e>>2]=h;c[e+4>>2]=i;e=4}else e=8}else e=4;m=b[n>>1]&15904|e;b[n>>1]=m;m=m&-16403;b[n>>1]=m;Ra=o;return}function ph(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+80|0;n=p+40|0;o=p;i=f+4|0;h=a[i>>0]|0;if((a[d+10>>0]|0)==h<<24>>24){o=_a[c[f+12>>2]&127](c[f+8>>2]|0,c[d+12>>2]|0,c[d+16>>2]|0,c[e+12>>2]|0,c[e+16>>2]|0)|0;Ra=p;return o|0}m=c[d+32>>2]|0;j=n+8|0;c[n+32>>2]=m;k=n+24|0;c[k>>2]=0;l=o+8|0;b[l>>1]=1;c[o+32>>2]=m;m=o+24|0;c[m>>2]=0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];c[n+16>>2]=c[d+16>>2];if(!(b[d+8>>1]&2048))b[j>>1]=b[j>>1]&-7169|4096;c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];c[o+16>>2]=c[e+16>>2];if(!(b[e+8>>1]&2048))b[l>>1]=b[l>>1]&-7169|4096;d=b[j>>1]|0;if((d&514)==514?(a[n+10>>0]|0)==h<<24>>24:0)e=c[n+16>>2]|0;else if(!(d&1)){e=Gg(n,h)|0;h=a[i>>0]|0}else e=0;d=b[l>>1]|0;if((d&514)==514?(a[o+10>>0]|0)==h<<24>>24:0){d=c[o+16>>2]|0;h=17}else if(!(d&1)){d=Gg(o,h)|0;h=17}else h=18;if((h|0)==17)if((e|0)==0|(d|0)==0)h=18;else d=_a[c[f+12>>2]&127](c[f+8>>2]|0,c[n+12>>2]|0,e,c[o+12>>2]|0,d)|0;if((h|0)==18)if(!g)d=0;else{a[g>>0]=7;d=0}if(!((b[j>>1]&9216)==0&(c[k>>2]|0)==0))Cg(n);if(!((b[l>>1]&9216)==0&(c[m>>2]|0)==0))Cg(o);o=d;Ra=p;return o|0}function qh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=c[d+12>>2]|0;i=c[e+12>>2]|0;f=b[d+8>>1]|0;g=b[e+8>>1]|0;if(!((g|f)&16384)){e=Lu(c[d+16>>2]|0,c[e+16>>2]|0,(h|0)>(i|0)?i:h)|0;return ((e|0)==0?h-i|0:e)|0}f=f&16384;if((f&g)<<16>>16){i=(c[d>>2]|0)-(c[e>>2]|0)|0;return i|0}if(!(f<<16>>16)){g=c[d+16>>2]|0;a:do if((h|0)>0){f=0;while(1){if(a[g+f>>0]|0){f=1;break}f=f+1|0;if((f|0)>=(h|0))break a}return f|0}while(0);i=h-(c[e>>2]|0)|0;return i|0}else{g=c[e+16>>2]|0;b:do if((i|0)>0){f=0;while(1){if(a[g+f>>0]|0){f=-1;break}f=f+1|0;if((f|0)>=(i|0))break b}return f|0}while(0);i=(c[d>>2]|0)-i|0;return i|0}return 0}function rh(b){b=b|0;var d=0,e=0,f=0,g=0;g=Ra;Ra=Ra+16|0;f=g;d=g+12|0;e=b+64|0;e=Xg(c[b+40>>2]|0,0,c[e>>2]|0,c[e+4>>2]|0,0,d)|0;if(e|0){f=e;Ra=g;return f|0}if(!(c[d>>2]|0)){a[b+3>>0]=0;c[b+28>>2]=0;f=0;Ra=g;return f|0}else{c[f>>2]=32306;c[f+4>>2]=79626;c[f+8>>2]=31517;Db(11,32001,f);f=11;Ra=g;return f|0}return 0}function sh(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=Ra;Ra=Ra+16|0;f=i;g=c[b+40>>2]|0;d=a[g>>0]|0;do if((d&255)>2){c[f>>2]=0;if(d<<24>>24==4){d=c[g+4>>2]|0;if(!d)d=0;else h=19}else{a[g>>0]=1;d=c[7389]|0;if((d|0)!=0?(Wa[d&127](410)|0)!=0:0)d=10;else{e=g+16|0;d=g+56|0;d=th(g,c[e>>2]|0,c[d>>2]|0,c[d+4>>2]|0,0,f)|0;if(!d){d=c[e>>2]|0;do if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{j=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0);c[e>>2]=0;e=c[f>>2]|0;d=g+4|0;if(!e)if(!(c[d>>2]|0))d=a[g>>0]|0;else h=14;else{c[d>>2]=e;h=14}if((h|0)==14){d=a[g>>0]|0;if(!(d<<24>>24)){a[g>>0]=2;d=2}}h=20;break}}h=19}c[b+28>>2]=0}else h=20;while(0);if((h|0)==20){c[b+28>>2]=0;if(!(d<<24>>24)){j=0;Ra=i;return j|0}else d=0}a[b+2>>0]=1;j=d;Ra=i;return j|0}function th(d,f,g,h,i,j){d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+16|0;r=t;if(!f){s=Xg(d,0,g,h,i,j)|0;Ra=t;return s|0}s=d+112|0;q=c[s>>2]|0;p=q+6|0;n=((e[p>>1]|0)*40|0)+56|0;m=c[q+12>>2]|0;a:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](n)|0;o=26;break}m=Wa[c[29356>>2]&127](n)|0;if((c[14985]|0)>>>0>>0)c[14985]=n;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){n=c[14978]|0;l=Tv(k|0,l|0,m|0,((m|0)<0)<<31>>31|0)|0;k=L()|0;c[14768]=((k|0)<0|(k|0)==0&l>>>0<=n>>>0)&1}m=Wa[c[29340>>2]&127](m)|0;if(!m){s=7;Ra=t;return s|0}k=Wa[c[29352>>2]&127](m)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0){s=7;Ra=t;return s|0}}else{do if(!(0<0|(0==0?(e[m+276>>1]|0)>>>0>>0:0))){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];o=m+284|0;c[o>>2]=(c[o>>2]|0)+1;o=26;break a}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];o=m+284|0;c[o>>2]=(c[o>>2]|0)+1;o=26;break a}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,n,0)|0;o=26}while(0);if((o|0)==26)if(!k){s=7;Ra=t;return s|0}else m=k;c[m+4>>2]=m+16;c[m>>2]=q;o=m+8|0;b[o>>1]=(e[p>>1]|0)+1;_g(q,g,f,m);p=b[o>>1]|0;if(p<<16>>16!=0?(p&65535)<=(e[q+8>>1]|0):0)l=Xg(d,m,g,h,i,j)|0;else{c[r>>2]=32306;c[r+4>>2]=64001;c[r+8>>2]=31517;Db(11,32001,r);l=11}k=c[(c[s>>2]|0)+12>>2]|0;if(k|0){if(c[k+480>>2]|0){Xd(k,m);s=l;Ra=t;return s|0}s=m;if((c[k+304>>2]|0)>>>0<=s>>>0?(c[k+308>>2]|0)>>>0>s>>>0:0){s=k+300|0;c[m>>2]=c[s>>2];c[s>>2]=m;s=l;Ra=t;return s|0}}if(!(c[7324]|0)){ab[c[29344>>2]&127](m);s=l;Ra=t;return s|0}else{s=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);s=l;Ra=t;return s|0}return 0}function uh(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=Ra;Ra=Ra+16|0;h=l;k=g+8|0;b[k>>1]=1;j=c[d+20>>2]|0;j=Yv(c[j+44>>2]|0,0,c[j+32>>2]|0,0)|0;i=L()|0;if(i>>>0<0|(i|0)==0&j>>>0<(f+e|0)>>>0){c[h>>2]=32306;c[h+4>>2]=75549;c[h+8>>2]=31517;Db(11,32001,h);k=11;Ra=l;return k|0}h=f+1|0;j=g+24|0;do if((c[j>>2]|0)<(h|0)){h=Eg(g,h,0)|0;if(!h){h=g+16|0;i=h;h=c[h>>2]|0;break}else{k=h;Ra=l;return k|0}}else{h=c[g+20>>2]|0;i=g+16|0;c[i>>2]=h;b[k>>1]=1}while(0);h=cg(d,e,f,h,0)|0;if(!h){a[(c[i>>2]|0)+f>>0]=0;b[k>>1]=16;c[g+12>>2]=f;k=0;Ra=l;return k|0}if((b[k>>1]&9216)==0?(c[j>>2]|0)==0:0){k=h;Ra=l;return k|0}Cg(g);k=h;Ra=l;return k|0}function vh(a,e,f){a=a|0;e=e|0;f=f|0;var i=0,j=0,k=0,l=0,m=0;l=Ra;Ra=Ra+16|0;j=l+8|0;k=l;i=(d[a+1>>0]|0)<<16|(d[a>>0]|0)<<24|(d[a+2>>0]|0)<<8|(d[a+3>>0]|0);a=(d[a+5>>0]|0)<<16|(d[a+4>>0]|0)<<24|(d[a+6>>0]|0)<<8|(d[a+7>>0]|0);m=f;c[m>>2]=a;c[m+4>>2]=i;if((e|0)==6){k=4;m=f+8|0;b[m>>1]=k;Ra=l;return}c[h>>2]=a;c[h+4>>2]=i;g[j>>3]=+g[h>>3];g[k>>3]=+g[j>>3];k=+g[j>>3]==+g[k>>3]?8:1;m=f+8|0;b[m>>1]=k;Ra=l;return}function wh(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+16|0;g=h;if(d>>>0>16777215|(d|0)==16777215&c>>>0>4294967295){a[b+8>>0]=c;g=bw(c|0,d|0,8)|0;L()|0;a[b+7>>0]=g&255|-128;g=bw(c|0,d|0,15)|0;L()|0;a[b+6>>0]=g&255|-128;g=bw(c|0,d|0,22)|0;L()|0;a[b+5>>0]=g&255|-128;g=bw(c|0,d|0,29)|0;L()|0;a[b+4>>0]=g&255|-128;g=bw(c|0,d|0,36)|0;L()|0;a[b+3>>0]=g&255|-128;g=bw(c|0,d|0,43)|0;L()|0;a[b+2>>0]=g&255|-128;g=bw(c|0,d|0,50)|0;L()|0;a[b+1>>0]=g&255|-128;g=bw(c|0,d|0,57)|0;L()|0;a[b>>0]=g&255|-128;g=9;Ra=h;return g|0}e=0;f=c;while(1){c=e+1|0;a[g+e>>0]=f&255|-128;f=bw(f|0,d|0,7)|0;d=L()|0;if((f|0)==0&(d|0)==0)break;else e=c}a[g>>0]=a[g>>0]&127;d=0;while(1){a[b+d>>0]=a[g+e>>0]|0;if((e|0)>0){e=e+-1|0;d=d+1|0}else break}Ra=h;return c|0}function xh(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=Ra;Ra=Ra+32|0;n=o+16|0;i=o;m=e+68|0;f=a[m>>0]|0;do if(f<<24>>24>-1){h=e+116|0;g=c[h>>2]|0;if(!(f<<24>>24)){f=h;j=26}else{g=c[g+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);f=a[m>>0]|0}else{l=c[g+20>>2]|0;k=l+120|0;c[k>>2]=(c[k>>2]|0)+-1;l=l+136|0;c[g+16>>2]=c[l>>2];c[l>>2]=g}f=f+-1<<24>>24;a[m>>0]=f;if(f<<24>>24)do{g=c[(c[e+120+(f<<24>>24<<2)>>2]|0)+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);f=a[m>>0]|0}else{l=c[g+20>>2]|0;k=l+120|0;c[k>>2]=(c[k>>2]|0)+-1;l=l+136|0;c[g+16>>2]=c[l>>2];c[l>>2]=g}f=f+-1<<24>>24;a[m>>0]=f}while(f<<24>>24!=0);k=c[e+120>>2]|0;c[h>>2]=k;f=h;l=k}}else{h=e+64|0;f=c[h>>2]|0;if(!f){a[e>>0]=1;n=16;Ra=o;return n|0}g=a[e>>0]|0;if((g&255)>2){if(g<<24>>24==4){n=c[e+4>>2]|0;Ra=o;return n|0}f=e+16|0;g=c[f>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{l=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-l;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[f>>2]=0;a[e>>0]=1;f=c[h>>2]|0}h=e+116|0;f=yh(c[(c[e+8>>2]|0)+4>>2]|0,f,h,0,d[e+2>>0]|0)|0;if(!f){a[m>>0]=0;g=c[h>>2]|0;a[e+69>>0]=a[g+2>>0]|0;f=h;j=26;break}a[e>>0]=1;n=f;Ra=o;return n|0}while(0);do if((j|0)==26){if(a[g>>0]|0?((c[e+112>>2]|0)==0|0)==(d[g+2>>0]|0):0){l=g;k=g;break}c[i>>2]=32306;c[i+4>>2]=68367;c[i+8>>2]=31517;Db(11,32001,i);n=11;Ra=o;return n|0}while(0);g=e+70|0;b[g>>1]=0;h=e+50|0;b[h>>1]=0;i=e+1|0;j=a[i>>0]&-15;a[i>>0]=j;if(b[k+24>>1]|0){a[e>>0]=0;n=0;Ra=o;return n|0}if(a[k+8>>0]|0){a[e>>0]=1;n=16;Ra=o;return n|0}if((c[k+4>>2]|0)==1){n=(c[k+56>>2]|0)+((d[k+9>>0]|0)+8)|0;p=a[n>>0]|0;q=a[n+1>>0]|0;k=a[n+2>>0]|0;n=a[n+3>>0]|0;a[e>>0]=0;r=c[e+20>>2]|0;b[h>>1]=0;a[i>>0]=j;b[e+72>>1]=0;c[e+120>>2]=l;b[g>>1]=0;a[m>>0]=1;n=yh(r,(q&255)<<16|(p&255)<<24|(k&255)<<8|n&255,f,e,d[e+2>>0]|0)|0;Ra=o;return n|0}else{c[n>>2]=32306;c[n+4>>2]=68380;c[n+8>>2]=31517;Db(11,32001,n);r=11;Ra=o;return r|0}return 0}function yh(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+32|0;l=n+16|0;i=n;j=n+28|0;do if((c[d+44>>2]|0)>>>0>=e>>>0){k=c[d>>2]|0;h=Za[c[k+204>>2]&127](k,e,j,h)|0;if(!h){k=c[j>>2]|0;i=k+8|0;h=c[i>>2]|0;c[f>>2]=h;if(!(a[h>>0]|0)){i=c[i>>2]|0;j=i+4|0;if((c[j>>2]|0)!=(e|0)){c[i+56>>2]=c[k+4>>2];c[i+72>>2]=k;c[i+52>>2]=d;c[j>>2]=e;a[i+9>>0]=(e|0)==1?100:0;h=c[f>>2]|0}h=Gf(h)|0;if(!h)m=8}else m=8;if((m|0)==8){if(!g){g=0;Ra=n;return g|0}m=c[f>>2]|0;if(b[m+24>>1]|0?(a[m+2>>0]|0)==(a[g+69>>0]|0):0){g=0;Ra=n;return g|0}c[l>>2]=32306;c[l+4>>2]=65376;c[l+8>>2]=31517;Db(11,32001,l);h=11}i=c[f>>2]|0;if(i){i=c[i+72>>2]|0;if(!(b[i+28>>1]&32)){Df(i);break}else{m=c[i+20>>2]|0;f=m+120|0;c[f>>2]=(c[f>>2]|0)+-1;m=m+136|0;c[i+16>>2]=c[m>>2];c[m>>2]=i;break}}}}else{c[i>>2]=32306;c[i+4>>2]=65355;c[i+8>>2]=31517;Db(11,32001,i);h=11}while(0);if(!g){g=h;Ra=n;return g|0}f=g+68|0;m=(a[f>>0]|0)+-1<<24>>24;a[f>>0]=m;c[g+116>>2]=c[g+120+(m<<24>>24<<2)>>2];g=h;Ra=n;return g|0}function zh(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=Ra;Ra=Ra+80|0;m=z+56|0;x=z+40|0;k=z+24|0;l=z+68|0;p=z;if((c[f+44>>2]|0)>>>0>>0){c[k>>2]=32306;c[k+4>>2]=72344;c[k+8>>2]=31517;Db(11,32001,k);y=11;Ra=z;return y|0}g=yh(f,g,l,0,0)|0;if(g|0){y=g;Ra=z;return y|0}w=c[l>>2]|0;v=w+1|0;if(a[v>>0]|0){c[m>>2]=32306;c[m+4>>2]=72349;c[m+8>>2]=31517;Db(11,32001,m);a[v>>0]=0;if(!w){y=11;Ra=z;return y|0}else j=11}else{a[v>>0]=1;t=w+9|0;s=d[t>>0]|0;u=w+24|0;a:do if(!(b[u>>1]|0)){g=0;r=w+8|0;y=13}else{l=w+56|0;m=w+26|0;n=w+64|0;o=w+8|0;k=0;do{g=(c[n>>2]|0)+(k<<1)|0;g=(c[l>>2]|0)+((d[g>>0]<<8|d[g+1>>0])&e[m>>1])|0;if((a[o>>0]|0)==0?(q=zh(f,d[g+1>>0]<<16|d[g>>0]<<24|d[g+2>>0]<<8|d[g+3>>0],1,i)|0,q|0):0){j=q;break a}g=Ah(w,g,p)|0;k=k+1|0;if(g|0){j=g;break a}g=b[u>>1]|0}while(k>>>0<(g&65535)>>>0);g=g&65535;r=o;y=13}while(0);b:do if((y|0)==13){if(!(a[r>>0]|0)){g=(c[w+56>>2]|0)+(s+8)|0;g=zh(f,d[g+1>>0]<<16|d[g>>0]<<24|d[g+2>>0]<<8|d[g+3>>0],1,i)|0;if(g|0){j=g;break}}else if(i|0)c[i>>2]=(c[i>>2]|0)+g;if(h|0){j=Bh(c[w+52>>2]|0,w,c[w+4>>2]|0)|0;break}g=c[w+72>>2]|0;k=c[g+20>>2]|0;if((b[g+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[g+24>>2]|0)>>>0:0){if(c[k+96>>2]|0){j=Ve(g)|0;y=27}}else y=23;do if((y|0)==23){j=c[k+40>>2]|0;if(j|0)break b;if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){j=Wf(g)|0;y=27;break}else{j=Xf(g)|0;y=27;break}}while(0);if((y|0)==27?j|0:0)break;f=c[w+56>>2]|0;j=a[f+s>>0]|8;o=j&255;l=w+52|0;q=c[l>>2]|0;k=d[t>>0]|0;if(!(b[q+22>>1]&12)){g=f+k|0;p=q+36|0}else{p=q+36|0;g=f+k|0;gw(g|0,0,(c[p>>2]|0)-k|0)|0}a[g>>0]=j;m=k+8|0;n=m&65535;g=f+(k+1)|0;a[g>>0]=0;a[g+1>>0]=0;a[g+2>>0]=0;a[g+3>>0]=0;a[f+(k+7)>>0]=0;g=f+(k+5)|0;a[g>>0]=(c[p>>2]|0)>>>8;a[g+1>>0]=c[p>>2];c[w+20>>2]=(c[p>>2]|0)-m&65535;g=o>>>3;a[r>>0]=g;g=4-(g<<2)&255;j=w+10|0;a[j>>0]=g;c[w+76>>2]=120;k=c[l>>2]|0;switch((o&247)<<24>>24){case 5:{a[w+2>>0]=1;a[w+3>>0]=1;c[w+80>>2]=180;b[w+14>>1]=b[k+28>>1]|0;j=k+30|0;y=35;break}case 2:{a[w+2>>0]=0;a[w+3>>0]=0;c[w+80>>2]=179;b[w+14>>1]=b[k+24>>1]|0;j=k+26|0;y=35;break}default:{c[x>>2]=32306;c[x+4>>2]=65035;c[x+8>>2]=31517;Db(11,32001,x);g=a[j>>0]|0}}if((y|0)==35){b[w+16>>1]=b[j>>1]|0;a[w+11>>0]=a[k+21>>0]|0}b[w+18>>1]=n;c[w+60>>2]=f+(c[p>>2]|0);c[w+64>>2]=f+m;c[w+68>>2]=f+(g&255);a[w+12>>0]=0;b[w+26>>1]=(c[q+32>>2]|0)+65535;b[u>>1]=0;a[w>>0]=1;j=0}while(0);a[v>>0]=0}g=c[w+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);y=j;Ra=z;return y|0}else{y=c[g+20>>2]|0;x=y+120|0;c[x>>2]=(c[x>>2]|0)+-1;y=y+136|0;c[g+16>>2]=c[y>>2];c[y>>2]=g;y=j;Ra=z;return y|0}return 0}function Ah(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=Ra;Ra=Ra+64|0;s=t+32|0;r=t+16|0;i=t;o=t+48|0;p=t+44|0;cb[c[f+80>>2]&255](f,g,h);k=e[h+16>>1]|0;j=c[h+12>>2]|0;if((j|0)==(k|0)){s=0;Ra=t;return s|0}g=g+(e[h+18>>1]|0)|0;if(g>>>0>(c[f+60>>2]|0)>>>0){c[i>>2]=32306;c[i+4>>2]=69515;c[i+8>>2]=31517;Db(11,32001,i);s=11;Ra=t;return s|0}h=g+-4|0;n=c[f+52>>2]|0;i=(c[n+36>>2]|0)+-4|0;g=j+~k+i|0;if(i>>>0>g>>>0){s=0;Ra=t;return s|0}l=n+44|0;f=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];j=(g>>>0)/(i>>>0)|0;while(1){j=j+-1|0;c[o>>2]=0;c[p>>2]=0;if(f>>>0<2){m=8;break}if(f>>>0>(c[l>>2]|0)>>>0){m=8;break}k=(j|0)==0;if(!k){g=dg(n,f,p,o)|0;if(g|0)break;g=c[p>>2]|0;if(g)m=20;else m=12}else m=12;a:do if((m|0)==12){g=(c[n>>2]|0)+212|0;i=Ya[c[29436>>2]&127](c[(c[g>>2]|0)+44>>2]|0,f,0)|0;do if(i|0){g=c[g>>2]|0;h=c[i+4>>2]|0;if(!(c[h>>2]|0)){g=sf(g,f,i)|0;if(!g)break;else h=g}else{m=g+12|0;c[m>>2]=(c[m>>2]|0)+1;m=h+30|0;b[m>>1]=(b[m>>1]|0)+1<<16>>16}g=c[h+8>>2]|0;i=g+4|0;if((c[i>>2]|0)==(f|0)){c[p>>2]=g;if(!g){m=22;break a}else{m=20;break a}}else{c[g+56>>2]=c[h+4>>2];c[g+72>>2]=h;c[g+52>>2]=n;c[i>>2]=f;a[g+9>>0]=0;c[p>>2]=g;m=20;break a}}while(0);c[p>>2]=0;g=0;m=22}while(0);if((m|0)==20){m=0;if((b[(c[g+72>>2]|0)+30>>1]|0)==1)m=22;else{c[s>>2]=32306;c[s+4>>2]=69552;c[s+8>>2]=31517;Db(11,32001,s);g=11}}if((m|0)==22){m=0;g=Bh(n,g,f)|0}h=c[p>>2]|0;do if(h|0?(q=c[h+72>>2]|0,q|0):0)if(!(b[q+28>>1]&32)){Df(q);break}else{f=c[q+20>>2]|0;i=f+120|0;c[i>>2]=(c[i>>2]|0)+-1;f=f+136|0;c[q+16>>2]=c[f>>2];c[f>>2]=q;break}while(0);if((g|0)!=0|k){m=30;break}else f=c[o>>2]|0}if((m|0)==8){c[r>>2]=32306;c[r+4>>2]=69532;c[r+8>>2]=31517;Db(11,32001,r);g=11}else if((m|0)==30){Ra=t;return g|0}s=g;Ra=t;return s|0}function Bh(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=Ra;Ra=Ra+48|0;r=B+16|0;j=B;s=B+32|0;A=B+28|0;m=c[f+12>>2]|0;if(h>>>0>=2?(x=f+44|0,(c[x>>2]|0)>>>0>=h>>>0):0){do if(!g){g=(c[f>>2]|0)+212|0;k=Ya[c[29436>>2]&127](c[(c[g>>2]|0)+44>>2]|0,h,0)|0;if(k){g=c[g>>2]|0;j=c[k+4>>2]|0;if(!(c[j>>2]|0)){g=sf(g,h,k)|0;if(!g){g=0;break}else j=g}else{z=g+12|0;c[z>>2]=(c[z>>2]|0)+1;z=j+30|0;b[z>>1]=(b[z>>1]|0)+1<<16>>16}g=c[j+8>>2]|0;k=g+4|0;if((c[k>>2]|0)!=(h|0)){c[g+56>>2]=c[j+4>>2];c[g+72>>2]=j;c[g+52>>2]=f;c[k>>2]=h;a[g+9>>0]=0}}else g=0}else{z=c[g+72>>2]|0;q=z+30|0;b[q>>1]=(b[q>>1]|0)+1<<16>>16;z=(c[z+12>>2]|0)+12|0;c[z>>2]=(c[z>>2]|0)+1}while(0);k=c[m+72>>2]|0;l=c[k+20>>2]|0;do if((b[k+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[k+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0)){c[A>>2]=0;z=23;break}else{j=Ve(k)|0;z=22;break}else z=17;while(0);do if((z|0)==17){j=c[l+40>>2]|0;if(j|0){c[A>>2]=j;i=0;z=105;break}if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){j=Wf(k)|0;z=22;break}else{j=Xf(k)|0;z=22;break}}while(0);if((z|0)==22){c[A>>2]=j;if(!j)z=23;else{i=0;z=105}}a:do if((z|0)==23){q=m+56|0;p=c[q>>2]|0;j=p+36|0;k=p+37|0;m=p+38|0;p=p+39|0;l=d[k>>0]<<16|d[j>>0]<<24|d[m>>0]<<8|d[p>>0];o=l+1|0;a[j>>0]=o>>>24;a[k>>0]=o>>>16;a[m>>0]=o>>>8;a[p>>0]=o;p=f+22|0;if(!(b[p>>1]&4))m=g;else{if(!g){g=c[f>>2]|0;g=Za[c[g+204>>2]&127](g,h,s,0)|0;if(g|0){c[A>>2]=g;break}i=c[s>>2]|0;g=c[i+8>>2]|0;j=g+4|0;if((c[j>>2]|0)!=(h|0)){c[g+56>>2]=c[i+4>>2];c[g+72>>2]=i;c[g+52>>2]=f;c[j>>2]=h;a[g+9>>0]=0}c[A>>2]=0}j=c[g+72>>2]|0;k=c[j+20>>2]|0;do if((b[j+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0)if(!(c[k+96>>2]|0)){c[A>>2]=0;break}else{n=Ve(j)|0;z=40;break}else z=35;while(0);do if((z|0)==35){i=c[k+40>>2]|0;if(i|0){c[A>>2]=i;i=0;z=105;break a}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){n=Wf(j)|0;z=40;break}else{n=Xf(j)|0;z=40;break}}while(0);if((z|0)==40?(c[A>>2]=n,n|0):0){i=0;z=105;break}gw(c[g+56>>2]|0,0,c[(c[g+52>>2]|0)+32>>2]|0)|0;m=g}if(a[f+17>>0]|0?(ig(f,h,2,0,A),c[A>>2]|0):0){i=0;g=m;z=105;break}if(l){n=c[q>>2]|0;n=d[n+33>>0]<<16|d[n+32>>0]<<24|d[n+34>>0]<<8|d[n+35>>0];g=c[f>>2]|0;g=Za[c[g+204>>2]&127](g,n,s,0)|0;if(g|0){c[A>>2]=g;i=0;g=m;z=105;break}g=c[s>>2]|0;i=c[g+8>>2]|0;j=i+4|0;if((c[j>>2]|0)==(n|0)){g=i+56|0;l=g;g=c[g>>2]|0}else{o=c[g+4>>2]|0;l=i+56|0;c[l>>2]=o;c[i+72>>2]=g;c[i+52>>2]=f;c[j>>2]=n;a[i+9>>0]=(n|0)==1?100:0;g=o}c[A>>2]=0;o=d[g+5>>0]<<16|d[g+4>>0]<<24|d[g+6>>0]<<8|d[g+7>>0];j=(c[f+36>>2]|0)>>>2;if(o>>>0>(j+-2|0)>>>0){c[r>>2]=32306;c[r+4>>2]=69422;c[r+8>>2]=31517;Db(11,32001,r);c[A>>2]=11;g=m;z=105;break}if(o>>>0<(j+-8|0)>>>0){j=c[i+72>>2]|0;k=c[j+20>>2]|0;do if((b[j+28>>1]&4)!=0?(c[k+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0)if(!(c[k+96>>2]|0)){c[A>>2]=0;break}else{g=Ve(j)|0;z=63;break}else z=58;while(0);do if((z|0)==58){g=c[k+40>>2]|0;if(g|0){c[A>>2]=g;g=m;z=105;break a}if((c[k+148>>2]|0)>>>0>(c[k+152>>2]|0)>>>0){g=Wf(j)|0;z=63;break}else{g=Xf(j)|0;z=63;break}}while(0);if((z|0)==63){c[A>>2]=g;if(g|0){g=m;z=105;break}g=c[l>>2]|0}z=o+1|0;a[g+4>>0]=z>>>24;a[g+5>>0]=z>>>16;a[g+6>>0]=z>>>8;a[g+7>>0]=z;z=(c[l>>2]|0)+((o<<2)+8)|0;a[z>>0]=h>>>24;a[z+1>>0]=h>>>16;a[z+2>>0]=h>>>8;a[z+3>>0]=h;do if(((m|0?(b[p>>1]&4)==0:0)?(t=c[m+72>>2]|0,u=c[t+20>>2]|0,(a[u+12>>0]|0)==0):0)?(v=t+28|0,w=e[v>>1]|0,w&2|0):0){if(c[u+96>>2]|0)break;b[v>>1]=w&65515|16}while(0);n=f+60|0;g=c[n>>2]|0;do if(!g){l=c[x>>2]|0;do if(!(c[7324]|0)){g=Wa[c[29340>>2]&127](512)|0;if(!g)z=83;else z=84}else{g=Wa[c[29356>>2]&127](512)|0;if((c[14985]|0)>>>0<512)c[14985]=512;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){z=c[14978]|0;f=Tv(j|0,k|0,g|0,((g|0)<0)<<31>>31|0)|0;y=L()|0;c[14768]=((y|0)<0|(y|0)==0&f>>>0<=z>>>0)&1}g=Wa[c[29340>>2]&127](g)|0;if(!g){z=83;break}j=Wa[c[29352>>2]&127](g)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0<=(c[14987]|0)>>>0){z=84;break}c[14987]=j;z=84}while(0);if((z|0)==83){c[n>>2]=0;g=7;break}else if((z|0)==84){gw(g+4|0,0,508)|0;c[g>>2]=l;c[n>>2]=g;z=85;break}}else z=85;while(0);if((z|0)==85)if((c[g>>2]|0)>>>0>>0)g=0;else g=df(g,h)|0;c[A>>2]=g;g=m;z=105;break}}else{n=0;i=0}if(!m){g=c[f>>2]|0;g=Za[c[g+204>>2]&127](g,h,s,0)|0;if(g|0){c[A>>2]=g;z=111;break}j=c[s>>2]|0;g=c[j+8>>2]|0;k=g+4|0;if((c[k>>2]|0)!=(h|0)){c[g+56>>2]=c[j+4>>2];c[g+72>>2]=j;c[g+52>>2]=f;c[k>>2]=h;a[g+9>>0]=0}c[A>>2]=0;m=g}g=m+72|0;k=c[g>>2]|0;l=c[k+20>>2]|0;do if((b[k+28>>1]&4)!=0?(c[l+24>>2]|0)>>>0>=(c[k+24>>2]|0)>>>0:0)if(!(c[l+96>>2]|0)){c[A>>2]=0;break}else{y=Ve(k)|0;z=104;break}else z=99;while(0);do if((z|0)==99){j=c[l+40>>2]|0;if(j|0){c[A>>2]=j;g=m;z=105;break a}if((c[l+148>>2]|0)>>>0>(c[l+152>>2]|0)>>>0){y=Wf(k)|0;z=104;break}else{y=Xf(k)|0;z=104;break}}while(0);if((z|0)==104?(c[A>>2]=y,y|0):0){g=m;z=105;break}z=m+56|0;f=c[z>>2]|0;a[f>>0]=n>>>24;a[f+1>>0]=n>>>16;a[f+2>>0]=n>>>8;a[f+3>>0]=n;z=(c[z>>2]|0)+4|0;a[z>>0]=0;a[z+1>>0]=0;a[z+2>>0]=0;a[z+3>>0]=0;z=c[q>>2]|0;a[z+32>>0]=h>>>24;a[z+33>>0]=h>>>16;a[z+34>>0]=h>>>8;a[z+35>>0]=h;a[m>>0]=0;if(!m)z=111;else z=108}while(0);if((z|0)==105)if(!g)z=111;else{a[g>>0]=0;g=g+72|0;z=108}do if((z|0)==108){g=c[g>>2]|0;if(!(b[g+28>>1]&32)){Df(g);z=111;break}else{z=c[g+20>>2]|0;h=z+120|0;c[h>>2]=(c[h>>2]|0)+-1;z=z+136|0;c[g+16>>2]=c[z>>2];c[z>>2]=g;z=111;break}}while(0);do if((z|0)==111?i|0:0){g=c[i+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);break}else{h=c[g+20>>2]|0;z=h+120|0;c[z>>2]=(c[z>>2]|0)+-1;h=h+136|0;c[g+16>>2]=c[h>>2];c[h>>2]=g;break}}while(0);A=c[A>>2]|0;Ra=B;return A|0}c[j>>2]=32306;c[j+4>>2]=69368;c[j+8>>2]=31517;Db(11,32001,j);A=11;Ra=B;return A|0}function Ch(a,b,c){a=a|0;b=b|0;c=c|0;return Fh(a,b,c,0)|0}function Dh(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=f+(a[f>>0]&63)|0;switch(a[f+1>>0]|0){case 1:{k=a[h>>0]|0;j=((k|0)<0)<<31>>31;break}case 2:{k=a[h>>0]<<8|d[h+1>>0];j=((k|0)<0)<<31>>31;break}case 3:{k=d[h+1>>0]<<8|a[h>>0]<<16|d[h+2>>0];j=((k|0)<0)<<31>>31;break}case 4:{k=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];j=((k|0)<0)<<31>>31;break}case 5:{k=h+2|0;j=a[h>>0]<<8|d[h+1>>0];k=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8|d[k+3>>0];break}case 6:{k=h+4|0;j=d[h+1>>0]<<16|d[h>>0]<<24|d[h+2>>0]<<8|d[h+3>>0];k=d[k+1>>0]<<16|d[k>>0]<<24|d[k+2>>0]<<8|d[k+3>>0];break}case 8:{j=0;k=0;break}case 9:{j=0;k=1;break}case 7:case 0:{g=Fh(b,f,g,0)|0;return g|0}default:{g=Fh(b,f,g,0)|0;return g|0}}i=c[g+4>>2]|0;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>(j|0)|(i|0)==(j|0)&h>>>0>k>>>0){g=a[g+12>>0]|0;return g|0}if((i|0)<(j|0)|(i|0)==(j|0)&h>>>0>>0){g=a[g+13>>0]|0;return g|0}if((e[g+8>>1]|0)>1){g=Fh(b,f,g,1)|0;return g|0}else{f=a[g+10>>0]|0;a[g+14>>0]=1;g=f;return g|0}return 0}function Eh(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=Ra;Ra=Ra+32|0;o=p+8|0;j=p;k=f+1|0;i=a[k>>0]|0;l=i&255;do if(i<<24>>24<=-1){h=d[f+2>>0]|0;if(!(h&128)){n=l<<7&16256|h;m=7;break}i=d[f+3>>0]|0;if(i&128){Of(k,j)|0;l=j;h=c[l>>2]|0;if((h|0)==(h|0)?0==(c[l+4>>2]|0):0){n=h;m=7;break}else break}else{n=(l<<14|i)&2080895|h<<7&16256;m=7;break}}else{n=l;m=7}while(0);if((m|0)==7?(n|0)>=12:0){if(!(n&1)){g=a[g+13>>0]|0;Ra=p;return g|0}h=d[f>>0]|0;j=(n+-12|0)/2|0;if((j+h|0)>(b|0)){c[o>>2]=32306;c[o+4>>2]=80874;c[o+8>>2]=31517;Db(11,32001,o);a[g+11>>0]=11;g=0;Ra=p;return g|0}o=c[g+4>>2]|0;i=c[o+12>>2]|0;h=Lu(f+h|0,c[o+16>>2]|0,(j|0)>(i|0)?i:j)|0;if(h|0)if((h|0)>0){g=a[g+13>>0]|0;Ra=p;return g|0}else{g=a[g+12>>0]|0;Ra=p;return g|0}h=j-i|0;if(!h)if((e[g+8>>1]|0)>1){g=Fh(b,f,g,1)|0;Ra=p;return g|0}else{f=a[g+10>>0]|0;a[g+14>>0]=1;g=f;Ra=p;return g|0}else if((h|0)>0){g=a[g+13>>0]|0;Ra=p;return g|0}else{g=a[g+12>>0]|0;Ra=p;return g|0}}g=a[g+12>>0]|0;Ra=p;return g|0}function Fh(f,h,i,j){f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0;P=Ra;Ra=Ra+96|0;O=P+80|0;N=P+64|0;q=P+48|0;K=P+40|0;M=P;p=c[i+4>>2]|0;if(!j){G=a[h>>0]|0;j=G&255;do if(G<<24>>24<=-1){k=d[h+1>>0]|0;if(!(k&128)){j=j<<7&16256|k;k=2;break}l=d[h+2>>0]|0;if(!(l&128)){j=(j<<14|l)&2080895|k<<7&16256;k=3;break}else{k=Of(h,K)|0;G=K;j=c[G>>2]|0;j=((j|0)==(j|0)?0==(c[G+4>>2]|0):0)?j:-1;break}}else k=1;while(0);m=j;r=0;k=k&255;l=j}else{m=h+1|0;G=a[m>>0]|0;j=G&255;do if(G<<24>>24>-1){l=d[h>>0]|0;k=2;w=12}else{k=d[h+2>>0]|0;do if(k&128){l=d[h+3>>0]|0;if(!(l&128)){j=(j<<14|l)&2080895|k<<7&16256;k=3;w=10;break}k=Of(m,K)|0;G=K;j=c[G>>2]|0;if((j|0)==(j|0)?0==(c[G+4>>2]|0):0)w=10;else{j=-1;l=d[h>>0]|0;k=(k&255)+1|0}}else{j=j<<7&16256|k;k=2;w=10}while(0);if((w|0)==10){k=(k&255)+1|0;l=d[h>>0]|0;if(j>>>0<=127){w=12;break}}j=(j+-12|0)>>>1}while(0);if((w|0)==12)j=d[3520+j>>0]|0;m=j+l|0;r=1;p=p+40|0}if(m>>>0>f>>>0){c[q>>2]=32306;c[q+4>>2]=80583;c[q+8>>2]=31517;Db(11,32001,q);a[i+11>>0]=11;i=0;Ra=P;return i|0}E=i+8|0;G=M+12|0;z=M+10|0;A=M+32|0;B=M+8|0;C=M+16|0;D=i+11|0;y=m;x=p;a:while(1){v=x+8|0;j=e[v>>1]|0;b:do if(j&4){j=a[h+k>>0]|0;q=j&255;if((j&255)>9){j=1;w=88;break a}switch(j<<24>>24){case 0:{j=-1;w=88;break a}case 7:{Ug(h+y|0,q,M)|0;m=x;j=c[m>>2]|0;m=c[m+4>>2]|0;o=+g[M>>3];if(!(o<-9223372036854775808.0))if(!(o>=9223372036854775808.0)?(I=~~o>>>0,J=+t(o)>=1.0?(o>0.0?~~+H(+s(o/4294967296.0),4294967295.0)>>>0:~~+F((o-+(~~o>>>0))/4294967296.0)>>>0):0,!((m|0)<(J|0)|(m|0)==(J|0)&j>>>0>>0)):0)if(!((m|0)>(J|0)|(m|0)==(J|0)&j>>>0>I>>>0)){n=+(j>>>0)+4294967296.0*+(m|0);if(o>n)j=-1;else j=o>24){case 6:{u=d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0];p=d[m+5>>0]<<16|d[m+4>>0]<<24|d[m+6>>0]<<8|d[m+7>>0];break}case 1:{p=a[m>>0]|0;u=((p|0)<0)<<31>>31;break}case 2:{p=a[m>>0]<<8|d[m+1>>0];u=((p|0)<0)<<31>>31;break}case 3:{p=d[m+1>>0]<<8|a[m>>0]<<16|d[m+2>>0];u=((p|0)<0)<<31>>31;break}case 4:{p=d[m+1>>0]<<16|d[m>>0]<<24|d[m+2>>0]<<8|d[m+3>>0];u=((p|0)<0)<<31>>31;break}case 5:{u=a[m>>0]<<8|d[m+1>>0];p=d[m+3>>0]<<16|d[m+2>>0]<<24|d[m+4>>0]<<8|d[m+5>>0];break}default:{u=0;p=q+-8|0}}m=x;j=c[m>>2]|0;m=c[m+4>>2]|0;if((u|0)<(m|0)|(u|0)==(m|0)&p>>>0>>0){j=-1;w=88;break a}else{j=((u|0)>(m|0)|(u|0)==(m|0)&p>>>0>j>>>0)&1;w=87}}else{if(j&8|0){j=a[h+k>>0]|0;u=j&255;if((j&255)>9){j=1;w=88;break a}if(!(j<<24>>24)){j=-1;w=88;break a}Ug(h+y|0,u,M)|0;if(j<<24>>24==7){n=+g[M>>3];o=+g[x>>3];if(no){j=1;w=88;break a}else{j=7;break}}m=M;j=c[m>>2]|0;m=c[m+4>>2]|0;o=+g[x>>3];if(o<-9223372036854775808.0){j=1;w=88;break a}if(o>=9223372036854775808.0){j=-1;w=88;break a}p=~~o>>>0;q=+t(o)>=1.0?(o>0.0?~~+H(+s(o/4294967296.0),4294967295.0)>>>0:~~+F((o-+(~~o>>>0))/4294967296.0)>>>0):0;if((m|0)<(q|0)|(m|0)==(q|0)&j>>>0

        >>0){j=-1;w=88;break a}if((m|0)>(q|0)|(m|0)==(q|0)&j>>>0>p>>>0){j=1;w=88;break a}n=+(j>>>0)+4294967296.0*+(m|0);if(o>n){j=-1;w=88;break a}else{q=u;j=o>0]|0;j=v&255;do if(v<<24>>24<=-1){p=d[m+1>>0]|0;if(!(p&128)){j=j<<7&16256|p;w=61;break}q=d[m+2>>0]|0;if(q&128){Of(m,K)|0;v=K;j=c[v>>2]|0;if((j|0)==(j|0)?0==(c[v+4>>2]|0):0){w=61;break}else{p=-1;break}}else{j=(j<<14|q)&2080895|p<<7&16256;w=61;break}}else w=61;while(0);if((w|0)==61){if(j>>>0<12){j=-1;w=88;break a}if(!(j&1)){j=1;w=88;break a}else p=j}u=(p+-12|0)>>>1;c[G>>2]=u;if((u+y|0)>>>0>f>>>0){w=65;break a}j=c[i>>2]|0;if(r>>>0>=(e[j+8>>1]|0)>>>0){w=65;break a}m=c[j+20+(r<<2)>>2]|0;if(!m){m=c[x+12>>2]|0;j=Lu(h+y|0,c[x+16>>2]|0,(u|0)<(m|0)?u:m)|0;if(!j){q=p;j=u-m|0;w=87;break}else{w=88;break a}}else{a[z>>0]=a[j+4>>0]|0;c[A>>2]=c[j+12>>2];b[B>>1]=2;c[C>>2]=h+y;q=p;j=ph(M,x,m,D)|0;w=87;break}}q=h+k|0;m=a[q>>0]|0;p=m&255;if(!(j&16)){q=p;j=m<<24>>24!=0&1;w=87;break}do if(m<<24>>24<=-1){j=d[q+1>>0]|0;if(!(j&128)){p=p<<7&16256|j;break}m=d[q+2>>0]|0;if(!(m&128)){p=(p<<14|m)&2080895|j<<7&16256;break}else{Of(q,K)|0;w=K;p=c[w>>2]|0;p=((p|0)==(p|0)?0==(c[w+4>>2]|0):0)?p:-1;break}}while(0);if(!(p>>>0>11&(p&1|0)==0)){j=-1;w=88;break a}u=(p+-12|0)>>>1;if((u+y|0)>>>0>f>>>0){w=85;break a}if(!(b[v>>1]&16384)){m=c[x+12>>2]|0;j=Lu(h+y|0,c[x+16>>2]|0,(u|0)<(m|0)?u:m)|0;if(!j){q=p;j=u-m|0;w=87;break}else{w=88;break a}}m=h+y|0;if(u|0){j=0;do{if(a[m+j>>0]|0){j=1;w=88;break a}j=j+1|0}while(j>>>0>>0)}q=p;j=u-(c[x>>2]|0)|0;w=87}while(0);if((w|0)==87){w=0;if(!j)j=q;else{w=88;break}}r=r+1|0;if((r|0)==(e[E>>1]|0)){w=96;break}x=x+40|0;if(j>>>0>127)q=(j+-12|0)>>>1;else q=d[3520+j>>0]|0;p=1;m=0;while(1){j=bw(j|0,m|0,7)|0;m=L()|0;if((j|0)==0&(m|0)==0)break;else p=p+1|0}y=q+y|0;k=p+k|0;if(y>>>0>f>>>0|k>>>0>=l>>>0){w=96;break}}if((w|0)==65){c[N>>2]=32306;c[N+4>>2]=80658;c[N+8>>2]=31517;Db(11,32001,N);a[D>>0]=11;i=0;Ra=P;return i|0}else if((w|0)==85){c[O>>2]=32306;c[O+4>>2]=80688;c[O+8>>2]=31517;Db(11,32001,O);a[D>>0]=11;i=0;Ra=P;return i|0}else if((w|0)==88){i=(a[(c[(c[i>>2]|0)+16>>2]|0)+r>>0]|0)==0?j:0-j|0;Ra=P;return i|0}else if((w|0)==96){a[i+14>>0]=1;i=a[i+10>>0]|0;Ra=P;return i|0}return 0}function Gh(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;A=Ra;Ra=Ra+64|0;u=A+48|0;z=A+32|0;v=A+16|0;l=A;j=A+60|0;g=a[f>>0]|0;a:do if(g<<24>>24){do if((g&255)>2){c[j>>2]=0;if(g<<24>>24==4){g=c[f+4>>2]|0;if(!g)break a;else y=g;Ra=A;return y|0}a[f>>0]=1;g=c[7389]|0;if((g|0)!=0?(Wa[g&127](410)|0)!=0:0)g=10;else{h=f+16|0;g=f+56|0;g=th(f,c[h>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,j)|0;if(!g){g=c[h>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{x=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-x;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[h>>2]=0;h=c[j>>2]|0;g=f+4|0;if(!h)if(!(c[g>>2]|0))k=a[f>>0]|0;else n=15;else{c[g>>2]=h;n=15}if((n|0)==15){g=a[f>>0]|0;if(!(g<<24>>24)){a[f>>0]=2;k=2}else k=g}g=k;break}}f=g;Ra=A;return f|0}while(0);switch(g<<24>>24){case 2:break;case 1:{f=101;Ra=A;return f|0}default:break a}a[f>>0]=0;if((c[f+4>>2]|0)>0){f=0;Ra=A;return f|0}}while(0);w=f+116|0;j=c[w>>2]|0;x=f+70|0;s=(b[x>>1]|0)+1<<16>>16;b[x>>1]=s;t=j;if(!(a[j>>0]|0)){c[l>>2]=32306;c[l+4>>2]=68870;c[l+8>>2]=31517;Db(11,32001,l);f=11;Ra=A;return f|0}r=(a[j+8>>0]|0)!=0;if((s&65535)<(e[j+24>>1]|0)){if(r){f=0;Ra=A;return f|0}m=f+68|0;n=f+20|0;o=f+50|0;p=f+1|0;q=f+2|0;h=j;l=t;while(1){k=b[x>>1]|0;g=(c[h+64>>2]|0)+((k&65535)<<1)|0;g=(c[h+56>>2]|0)+((d[g>>0]<<8|d[g+1>>0])&e[h+26>>1])|0;h=a[m>>0]|0;if(h<<24>>24>18){n=46;break}g=d[g>>0]<<24|d[g+1>>0]<<16|d[g+2>>0]<<8|d[g+3>>0];B=c[n>>2]|0;b[o>>1]=0;a[p>>0]=a[p>>0]&-7;C=h<<24>>24;b[f+72+(C<<1)>>1]=k;c[f+120+(C<<2)>>2]=l;b[x>>1]=0;a[m>>0]=h+1<<24>>24;g=yh(B,g,w,f,d[q>>0]|0)|0;if(g|0){y=g;n=49;break}g=c[w>>2]|0;if(!(a[g+8>>0]|0)){h=g;l=g}else{y=0;n=49;break}}if((n|0)==46){c[u>>2]=32306;c[u+4>>2]=68229;c[u+8>>2]=31517;Db(11,32001,u);C=11;Ra=A;return C|0}else if((n|0)==49){Ra=A;return y|0}}if(r){k=f+68|0;l=f+50|0;m=f+1|0;while(1){h=a[k>>0]|0;if(!(h<<24>>24)){n=36;break}b[l>>1]=0;a[m>>0]=a[m>>0]&-7;g=b[f+72+((h<<24>>24)+-1<<1)>>1]|0;b[x>>1]=g;i=h+-1<<24>>24;a[k>>0]=i;i=c[f+120+(i<<24>>24<<2)>>2]|0;c[w>>2]=i;h=c[j+72>>2]|0;if(!(b[h+28>>1]&32)){Df(h);i=c[w>>2]|0;g=b[x>>1]|0}else{C=c[h+20>>2]|0;B=C+120|0;c[B>>2]=(c[B>>2]|0)+-1;C=C+136|0;c[h+16>>2]=c[C>>2];c[C>>2]=h}if((g&65535)<(e[i+24>>1]|0))break;else j=i}if((n|0)==36){a[f>>0]=1;C=101;Ra=A;return C|0}if(!(a[i+2>>0]|0)){C=0;Ra=A;return C|0}C=Yg(f,0)|0;Ra=A;return C|0}g=(c[j+56>>2]|0)+((d[j+9>>0]|0)+8)|0;o=f+68|0;h=a[o>>0]|0;if(h<<24>>24>18){c[v>>2]=32306;c[v+4>>2]=68229;c[v+8>>2]=31517;Db(11,32001,v);C=11;Ra=A;return C|0}g=d[g>>0]<<24|d[g+1>>0]<<16|d[g+2>>0]<<8|d[g+3>>0];l=f+20|0;C=c[l>>2]|0;m=f+50|0;b[m>>1]=0;n=f+1|0;a[n>>0]=a[n>>0]&-7;k=h<<24>>24;b[f+72+(k<<1)>>1]=s;c[f+120+(k<<2)>>2]=t;b[x>>1]=0;a[o>>0]=h+1<<24>>24;k=f+2|0;g=yh(C,g,w,f,d[k>>0]|0)|0;if(g|0){C=g;Ra=A;return C|0}while(1){g=c[w>>2]|0;if(a[g+8>>0]|0){y=0;n=49;break}h=b[x>>1]|0;i=(c[g+64>>2]|0)+((h&65535)<<1)|0;i=(c[g+56>>2]|0)+((d[i>>0]<<8|d[i+1>>0])&e[g+26>>1])|0;j=a[o>>0]|0;if(j<<24>>24>18){n=32;break}C=d[i>>0]<<24|d[i+1>>0]<<16|d[i+2>>0]<<8|d[i+3>>0];B=c[l>>2]|0;b[m>>1]=0;a[n>>0]=a[n>>0]&-7;v=j<<24>>24;b[f+72+(v<<1)>>1]=h;c[f+120+(v<<2)>>2]=g;b[x>>1]=0;a[o>>0]=j+1<<24>>24;g=yh(B,C,w,f,d[k>>0]|0)|0;if(g|0){y=g;n=49;break}}if((n|0)==32){c[z>>2]=32306;c[z+4>>2]=68229;c[z+8>>2]=31517;Db(11,32001,z);C=11;Ra=A;return C|0}else if((n|0)==49){Ra=A;return y|0}return 0}function Hh(f){f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=Ra;Ra=Ra+32|0;u=w+16|0;k=w;i=w+28|0;g=a[f>>0]|0;a:do if(g<<24>>24){do if((g&255)>2){c[i>>2]=0;if(g<<24>>24==4){g=c[f+4>>2]|0;if(!g)break a;Ra=w;return g|0}a[f>>0]=1;g=c[7389]|0;if((g|0)!=0?(Wa[g&127](410)|0)!=0:0)g=10;else{h=f+16|0;g=f+56|0;g=th(f,c[h>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,i)|0;if(!g){g=c[h>>2]|0;do if(g|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{t=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}while(0);c[h>>2]=0;h=c[i>>2]|0;g=f+4|0;if(!h)if(!(c[g>>2]|0))g=a[f>>0]|0;else v=15;else{c[g>>2]=h;v=15}if((v|0)==15){g=a[f>>0]|0;if(!(g<<24>>24)){a[f>>0]=2;g=2}}break}}f=g;Ra=w;return f|0}while(0);switch(g<<24>>24){case 2:break;case 1:{f=101;Ra=w;return f|0}default:break a}a[f>>0]=0;if((c[f+4>>2]|0)<0){f=0;Ra=w;return f|0}}while(0);s=f+116|0;g=c[s>>2]|0;t=f+70|0;h=b[t>>1]|0;j=g;if(!(a[g+8>>0]|0)){r=(c[g+64>>2]|0)+((h&65535)<<1)|0;g=(c[g+56>>2]|0)+((d[r>>0]<<8|d[r+1>>0])&e[g+26>>1])|0;r=f+68|0;i=a[r>>0]|0;if(i<<24>>24>18){c[k>>2]=32306;c[k+4>>2]=68229;c[k+8>>2]=31517;Db(11,32001,k);f=11;Ra=w;return f|0}g=d[g>>0]<<24|d[g+1>>0]<<16|d[g+2>>0]<<8|d[g+3>>0];o=f+20|0;m=c[o>>2]|0;p=f+50|0;b[p>>1]=0;q=f+1|0;a[q>>0]=a[q>>0]&-7;n=i<<24>>24;b[f+72+(n<<1)>>1]=h;c[f+120+(n<<2)>>2]=j;b[t>>1]=0;a[r>>0]=i+1<<24>>24;n=f+2|0;g=yh(m,g,s,f,d[n>>0]|0)|0;if(g|0){f=g;Ra=w;return f|0}g=c[s>>2]|0;b:do if(!(a[g+8>>0]|0)){while(1){k=(c[g+56>>2]|0)+((d[g+9>>0]|0)+8)|0;h=a[k>>0]|0;i=a[k+1>>0]|0;j=a[k+2>>0]|0;k=a[k+3>>0]|0;l=b[g+24>>1]|0;b[t>>1]=l;m=a[r>>0]|0;if(m<<24>>24>18)break;x=c[o>>2]|0;b[p>>1]=0;a[q>>0]=a[q>>0]&-7;y=m<<24>>24;b[f+72+(y<<1)>>1]=l;c[f+120+(y<<2)>>2]=g;b[t>>1]=0;a[r>>0]=m+1<<24>>24;g=yh(x,(i&255)<<16|(h&255)<<24|(j&255)<<8|k&255,s,f,d[n>>0]|0)|0;if(g|0){v=45;break}g=c[s>>2]|0;if(a[g+8>>0]|0)break b}if((v|0)==45){Ra=w;return g|0}c[u>>2]=32306;c[u+4>>2]=68229;c[u+8>>2]=31517;Db(11,32001,u);y=11;Ra=w;return y|0}while(0);b[t>>1]=(e[g+24>>1]|0)+65535;y=0;Ra=w;return y|0}do if(!(h<<16>>16)){i=f+68|0;j=f+50|0;k=f+1|0;while(1){g=a[i>>0]|0;if(!(g<<24>>24))break;b[j>>1]=0;a[k>>0]=a[k>>0]&-7;h=b[f+72+((g<<24>>24)+-1<<1)>>1]|0;b[t>>1]=h;y=c[s>>2]|0;g=g+-1<<24>>24;a[i>>0]=g;c[s>>2]=c[f+120+(g<<24>>24<<2)>>2];g=c[y+72>>2]|0;if(!(b[g+28>>1]&32)){Df(g);h=b[t>>1]|0}else{y=c[g+20>>2]|0;x=y+120|0;c[x>>2]=(c[x>>2]|0)+-1;y=y+136|0;c[g+16>>2]=c[y>>2];c[y>>2]=g}if(h<<16>>16){v=41;break}}if((v|0)==41){g=c[s>>2]|0;break}a[f>>0]=1;y=101;Ra=w;return y|0}while(0);b[t>>1]=h+-1<<16>>16;if(!(a[g+2>>0]|0)){y=0;Ra=w;return y|0}if(a[g+8>>0]|0){y=0;Ra=w;return y|0}y=f+1|0;a[y>>0]=a[y>>0]&-15;b[f+50>>1]=0;y=Hh(f)|0;Ra=w;return y|0}function Ih(f,g){f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=Ra;Ra=Ra+32|0;q=r+16|0;j=r;o=r+28|0;p=(c[g+32>>2]|0)+(c[g+28>>2]|0)|0;l=c[f+116>>2]|0;k=f+40|0;h=c[k>>2]|0;i=f+48|0;f=e[i>>1]|0;if((h+f|0)>>>0>(c[l+60>>2]|0)>>>0){c[j>>2]=32306;c[j+4>>2]=71650;c[j+8>>2]=31517;Db(11,32001,j);q=11;Ra=r;return q|0}f=Nh(l,h,g,0,f)|0;if(f|0){q=f;Ra=r;return q|0}f=e[i>>1]|0;if((p|0)==(f|0)){q=0;Ra=r;return q|0}i=(c[k>>2]|0)+f|0;n=c[l+52>>2]|0;j=(c[n+36>>2]|0)+-4|0;i=d[i+1>>0]<<16|d[i>>0]<<24|d[i+2>>0]<<8|d[i+3>>0];m=f;while(1){f=c[n>>2]|0;f=Za[c[f+204>>2]&127](f,i,o,0)|0;if(f|0){h=10;break}h=c[o>>2]|0;k=c[h+8>>2]|0;f=k+4|0;if((c[f>>2]|0)==(i|0)){f=k+72|0;l=f;f=c[f>>2]|0}else{c[k+56>>2]=c[h+4>>2];l=k+72|0;c[l>>2]=h;c[k+52>>2]=n;c[f>>2]=i;a[k+9>>0]=(i|0)==1?100:0;f=h}if((b[f+30>>1]|0)==1){if((j+m|0)>>>0

        >>0){f=c[k+56>>2]|0;h=j;i=d[f+1>>0]<<16|d[f>>0]<<24|d[f+2>>0]<<8|d[f+3>>0]}else{h=p-m|0;f=c[k+56>>2]|0}f=Nh(k,f+4|0,g,m,h)|0;j=h}else{c[q>>2]=32306;c[q+4>>2]=71669;c[q+8>>2]=31517;Db(11,32001,q);f=11}h=c[l>>2]|0;do if(h|0)if(!(b[h+28>>1]&32)){Df(h);break}else{l=c[h+20>>2]|0;k=l+120|0;c[k>>2]=(c[k>>2]|0)+-1;l=l+136|0;c[h+16>>2]=c[l>>2];c[l>>2]=h;break}while(0);if(f|0){h=23;break}m=j+m|0;if((m|0)>=(p|0)){f=0;h=23;break}}if((h|0)==10){q=f;Ra=r;return q|0}else if((h|0)==23){Ra=r;return f|0}return 0}function Jh(a){a=a|0;var b=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=Ra;Ra=Ra+80|0;o=p+64|0;j=p+48|0;l=p+32|0;k=p+16|0;g=p;n=c[(c[a+52>>2]|0)+36>>2]|0;i=c[a+56>>2]|0;b=d[a+9>>0]|0;q=i+(b+5)|0;m=b+8+(d[a+10>>0]|0)+((e[a+24>>1]|0)<<1)|0;h=n+-4|0;f=i+(b+1)|0;f=(d[f>>0]|0)<<8|(d[f+1>>0]|0);b=(((d[q>>0]|0)<<8|(d[q+1>>0]|0))+65535&65535)+1+(d[i+(b+7)>>0]|0)|0;a:do if(f){if(f>>>0>>0){c[g>>2]=32306;c[g+4>>2]=65086;c[g+8>>2]=31517;Db(11,32001,g);q=11;Ra=p;return q|0}b:do if((f|0)<=(h|0)){while(1){q=i+f|0;g=f;f=(d[q>>0]|0)<<8|(d[q+1>>0]|0);q=i+(g+2)|0;q=(d[q>>0]|0)<<8|(d[q+1>>0]|0);b=q+b|0;g=q+g|0;if(f>>>0<=(g+3|0)>>>0)break;if((f|0)>(h|0))break b}if(f|0){c[l>>2]=32306;c[l+4>>2]=65101;c[l+8>>2]=31517;Db(11,32001,l);q=11;Ra=p;return q|0}if(g>>>0<=n>>>0)break a;c[j>>2]=32306;c[j+4>>2]=65105;c[j+8>>2]=31517;Db(11,32001,j);q=11;Ra=p;return q|0}while(0);c[k>>2]=32306;c[k+4>>2]=65091;c[k+8>>2]=31517;Db(11,32001,k);q=11;Ra=p;return q|0}while(0);if((b|0)>(n|0)){c[o>>2]=32306;c[o+4>>2]=65117;c[o+8>>2]=31517;Db(11,32001,o);q=11;Ra=p;return q|0}else{c[a+20>>2]=b-m&65535;q=0;Ra=p;return q|0}return 0}function Kh(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=Ra;Ra=Ra+16|0;k=q;if(c[i>>2]|0){Ra=q;return}p=c[f+56>>2]|0;l=(c[f+64>>2]|0)+(g<<1)|0;j=(d[l>>0]|0)<<8|(d[l+1>>0]|0);m=f+9|0;n=d[m>>0]|0;o=f+52|0;if((j+h|0)>>>0>(c[(c[o>>2]|0)+36>>2]|0)>>>0){c[k>>2]=32306;c[k+4>>2]=69788;c[k+8>>2]=31517;Db(11,32001,k);c[i>>2]=11;Ra=q;return}j=Oh(f,j&65535,h&65535)|0;if(j|0){c[i>>2]=j;Ra=q;return}j=f+24|0;h=(b[j>>1]|0)+-1<<16>>16;b[j>>1]=h;if(!(h<<16>>16)){l=p+(n+1)|0;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;a[l+3>>0]=0;a[p+(n+7)>>0]=0;p=p+(n+5)|0;a[p>>0]=(c[(c[o>>2]|0)+36>>2]|0)>>>8;a[p+1>>0]=c[(c[o>>2]|0)+36>>2];c[f+20>>2]=(c[(c[o>>2]|0)+36>>2]|0)+-8-(d[m>>0]|0)-(d[f+10>>0]|0);Ra=q;return}else{fw(l|0,l+2|0,(h&65535)-g<<1|0)|0;p=p+(n+3)|0;a[p>>0]=(e[j>>1]|0)>>>8;a[p+1>>0]=b[j>>1];p=f+20|0;c[p>>2]=(c[p>>2]|0)+2;Ra=q;return}}function Lh(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=Ra;Ra=Ra+64|0;A=B+40|0;o=B+24|0;z=B;n=f+12|0;if((a[n>>0]|0)==0?(w=i+2|0,x=f+20|0,(w|0)<=(c[x>>2]|0)):0){j=c[f+72>>2]|0;n=c[j+20>>2]|0;if((b[j+28>>1]&4)!=0?(c[n+24>>2]|0)>>>0>=(c[j+24>>2]|0)>>>0:0){if(c[n+96>>2]|0){m=Ve(j)|0;v=16}}else v=12;do if((v|0)==12){m=c[n+40>>2]|0;if(!m)if((c[n+148>>2]|0)>>>0>(c[n+152>>2]|0)>>>0){m=Wf(j)|0;v=16;break}else{m=Xf(j)|0;v=16;break}else v=17}while(0);if((v|0)==16?m|0:0)v=17;if((v|0)==17){c[l>>2]=m;Ra=B;return}s=c[f+56>>2]|0;t=f+9|0;n=a[t>>0]|0;j=n&255;c[z>>2]=0;u=f+24|0;p=(e[u>>1]<<1)+(e[f+18>>1]|0)|0;q=s+(j+5)|0;r=q+1|0;m=d[q>>0]<<8|d[r>>0];do if(p>>>0>m>>>0){if((m|0)==0?(c[(c[f+52>>2]|0)+36>>2]|0)==65536:0){o=65536;v=22;break}c[o>>2]=32306;c[o+4>>2]=64824;c[o+8>>2]=31517;Db(11,32001,o);m=11}else{o=m;v=22}while(0);a:do if((v|0)==22){if(!(a[s+(j+2)>>0]|0)){m=p+2|0;if((m|0)>(o|0)?1:(a[s+(j+1)>>0]|0)==0)v=29;else v=25}else{m=p+2|0;if((m|0)>(o|0))v=29;else v=25}do if((v|0)==25){m=Ph(n,c[(c[f+52>>2]|0)+36>>2]|0,s,i,z)|0;if(m|0){m=m-s|0;break}m=c[z>>2]|0;if(m|0)break a;m=p+2|0;v=29}while(0);if((v|0)==29){if((m+i|0)>(o|0)){m=(c[x>>2]|0)+(-2-i)|0;m=Qh(f,(m|0)<4?m:4)|0;c[z>>2]=m;if(m|0)break;m=((d[q>>0]<<8|d[r>>0])+65535&65535)+1|0}else m=o;m=m-i|0;a[q>>0]=m>>>8;a[r>>0]=m}c[x>>2]=(c[x>>2]|0)-(w&65535);if(!k)ew(s+m|0,h|0,i|0)|0;else{ew(s+(m+4)|0,h+4|0,i+-4|0)|0;i=s+m|0;a[i>>0]=k>>>24;a[i+1>>0]=k>>>16;a[i+2>>0]=k>>>8;a[i+3>>0]=k}k=(c[f+64>>2]|0)+(g<<1)|0;fw(k+2|0,k|0,(e[u>>1]|0)-g<<1|0)|0;a[k>>0]=m>>>8;a[k+1>>0]=m;b[u>>1]=(b[u>>1]|0)+1<<16>>16;g=s+((d[t>>0]|0)+4)|0;k=(a[g>>0]|0)+1<<24>>24;a[g>>0]=k;if(!(k<<24>>24)){k=s+((d[t>>0]|0)+3)|0;a[k>>0]=(a[k>>0]|0)+1<<24>>24}m=f+52|0;if(!(a[(c[m>>2]|0)+17>>0]|0)){Ra=B;return}do if((c[l>>2]|0)==0?(cb[c[f+80>>2]&255](f,h,z),y=e[z+16>>1]|0,(c[z+12>>2]|0)>>>0>y>>>0):0){k=c[f+60>>2]|0;if(k>>>0>=h>>>0?k>>>0<(h+y|0)>>>0:0){c[A>>2]=32306;c[A+4>>2]=64569;c[A+8>>2]=31517;Db(11,32001,A);c[l>>2]=11;break}A=h+((e[z+18>>1]|0)+-4)|0;ig(c[m>>2]|0,d[A+1>>0]<<16|d[A>>0]<<24|d[A+2>>0]<<8|d[A+3>>0],3,c[f+4>>2]|0,l)}while(0);Ra=B;return}while(0);c[l>>2]=m;Ra=B;return}if(!j)m=h;else{ew(j|0,h|0,i|0)|0;m=j}if(k|0){a[m>>0]=k>>>24;a[m+1>>0]=k>>>16;a[m+2>>0]=k>>>8;a[m+3>>0]=k}l=a[n>>0]|0;a[n>>0]=l+1<<24>>24;l=l&255;c[f+36+(l<<2)>>2]=m;b[f+28+(l<<1)>>1]=g;Ra=B;return} -function lu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=Ra;Ra=Ra+16|0;n=w;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=c[14832]|0;d=m>>>a;if(d&3|0){b=(d&1^1)+a|0;a=59368+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[14832]=m&~(1<>2]=a;c[d>>2]=g}v=b<<3;c[e+4>>2]=v|3;v=e+v+4|0;c[v>>2]=c[v>>2]|1;v=f;Ra=w;return v|0}l=c[14834]|0;if(k>>>0>l>>>0){if(d|0){b=2<>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=59368+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=m&~(1<>2]=b;c[a>>2]=d;a=m}v=e<<3;h=v-k|0;c[g+4>>2]=k|3;f=g+k|0;c[f+4>>2]=h|1;c[g+v>>2]=h;if(l|0){e=c[14837]|0;b=l>>>3;d=59368+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14834]=h;c[14837]=f;v=i;Ra=w;return v|0}g=c[14833]|0;if(g){d=(g&0-g)+-1|0;f=d>>>12&16;d=d>>>f;e=d>>>5&8;d=d>>>e;h=d>>>2&4;d=d>>>h;i=d>>>1&2;d=d>>>i;j=d>>>1&1;j=c[59632+((e|f|h|i|j)+(d>>>j)<<2)>>2]|0;d=j;i=j;j=(c[j+4>>2]&-8)-k|0;while(1){a=c[d+16>>2]|0;if(!a){a=c[d+20>>2]|0;if(!a)break}h=(c[a+4>>2]&-8)-k|0;f=h>>>0>>0;d=a;i=f?a:i;j=f?h:j}h=i+k|0;if(h>>>0>i>>>0){f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[i+28>>2]|0;a=59632+(b<<2)|0;if((i|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[14833]=g&~(1<>2]|0)==(i|0)?v:f+20|0)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[i+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[i+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(j>>>0<16){v=j+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[h+4>>2]=j|1;c[h+j>>2]=j;if(l|0){e=c[14837]|0;b=l>>>3;d=59368+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[14834]=j;c[14837]=h}v=i+8|0;Ra=w;return v|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=c[14833]|0;if(e){f=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;j=14-(i|m|j)+(q<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;d=c[59632+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;q=61}else{a=0;i=k<<((j|0)==31?0:25-(j>>>1)|0);g=0;while(1){h=(c[d+4>>2]&-8)-k|0;if(h>>>0>>0)if(!h){a=d;f=0;q=65;break a}else{a=d;f=h}q=c[d+20>>2]|0;d=c[d+16+(i>>>31<<2)>>2]|0;g=(q|0)==0|(q|0)==(d|0)?g:q;if(!d){d=g;q=61;break}else i=i<<1}}while(0);if((q|0)==61){if((d|0)==0&(a|0)==0){a=2<>>12&16;m=m>>>h;g=m>>>5&8;m=m>>>g;i=m>>>2&4;m=m>>>i;j=m>>>1&2;m=m>>>j;d=m>>>1&1;a=0;d=c[59632+((g|h|i|j|d)+(m>>>d)<<2)>>2]|0}if(!d){i=a;h=f}else q=65}if((q|0)==65){g=d;while(1){m=(c[g+4>>2]&-8)-k|0;d=m>>>0>>0;f=d?m:f;a=d?g:a;d=c[g+16>>2]|0;if(!d)d=c[g+20>>2]|0;if(!d){i=a;h=f;break}else g=d}}if(((i|0)!=0?h>>>0<((c[14834]|0)-k|0)>>>0:0)?(l=i+k|0,l>>>0>i>>>0):0){g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){f=b+20|0;d=c[f>>2]|0;if(!d){f=b+16|0;d=c[f>>2]|0;if(!d)break;else{b=d;a=f}}else{b=d;a=f}}c[a>>2]=0}else{v=c[i+8>>2]|0;c[v+12>>2]=b;c[b+8>>2]=v}while(0);do if(g){a=c[i+28>>2]|0;d=59632+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=e&~(1<>2]|0)==(i|0)?v:g+20|0)>>2]=b;if(!b)break}c[b+24>>2]=g;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b}}while(0);b:do if(h>>>0<16){v=h+k|0;c[i+4>>2]=v|3;v=i+v+4|0;c[v>>2]=c[v>>2]|1}else{c[i+4>>2]=k|3;c[l+4>>2]=h|1;c[l+h>>2]=h;b=h>>>3;if(h>>>0<256){d=59368+(b<<1<<2)|0;a=c[14832]|0;b=1<>2]|0}c[a>>2]=l;c[b+12>>2]=l;c[l+8>>2]=b;c[l+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)d=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;d=14-(t|u|d)+(v<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;b=59632+(d<<2)|0;c[l+28>>2]=d;a=l+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(h|0)){e=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(h|0)){b=a;break c}else{e=e<<1;b=a}}c[d>>2]=l;c[l+24>>2]=b;c[l+12>>2]=l;c[l+8>>2]=l;break b}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=l;c[u>>2]=l;c[l+8>>2]=v;c[l+12>>2]=b;c[l+24>>2]=0}while(0);v=i+8|0;Ra=w;return v|0}else m=k}else m=k}else m=-1;while(0);d=c[14834]|0;if(d>>>0>=m>>>0){b=d-m|0;a=c[14837]|0;if(b>>>0>15){v=a+m|0;c[14837]=v;c[14834]=b;c[v+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=m|3}else{c[14834]=0;c[14837]=0;c[a+4>>2]=d|3;v=a+d+4|0;c[v>>2]=c[v>>2]|1}v=a+8|0;Ra=w;return v|0}h=c[14835]|0;if(h>>>0>m>>>0){t=h-m|0;c[14835]=t;v=c[14838]|0;u=v+m|0;c[14838]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;Ra=w;return v|0}if(!(c[14950]|0)){c[14952]=4096;c[14951]=4096;c[14953]=-1;c[14954]=-1;c[14955]=0;c[14943]=0;c[14950]=n&-16^1431655768;a=4096}else a=c[14952]|0;i=m+48|0;j=m+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=m>>>0){v=0;Ra=w;return v|0}a=c[14942]|0;if(a|0?(l=c[14940]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){v=0;Ra=w;return v|0}d:do if(!(c[14943]&4)){d=c[14838]|0;e:do if(d){e=59776;while(1){n=c[e>>2]|0;if(n>>>0<=d>>>0?(n+(c[e+4>>2]|0)|0)>>>0>d>>>0:0)break;a=c[e+8>>2]|0;if(!a){q=128;break e}else e=a}b=g-h&f;if(b>>>0<2147483647){a=hw(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[e+4>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;q=145;break d}}else{e=a;q=136}}else b=0}else q=128;while(0);do if((q|0)==128){d=hw(0)|0;if((d|0)!=(-1|0)?(b=d,o=c[14951]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=c[14940]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){n=c[14942]|0;if(n|0?p>>>0<=o>>>0|p>>>0>n>>>0:0){b=0;break}a=hw(b|0)|0;if((a|0)==(d|0)){h=b;g=d;q=145;break d}else{e=a;q=136}}else b=0}while(0);do if((q|0)==136){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;q=145;break d}a=c[14952]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;q=145;break d}if((hw(a|0)|0)==(-1|0)){hw(d|0)|0;b=0;break}else{h=a+b|0;g=e;q=145;break d}}while(0);c[14943]=c[14943]|4;q=143}else{b=0;q=143}while(0);if(((q|0)==143?k>>>0<2147483647:0)?(t=hw(k|0)|0,p=hw(0)|0,r=p-t|0,s=r>>>0>(m+40|0)>>>0,!((t|0)==(-1|0)|s^1|t>>>0

        >>0&((t|0)!=(-1|0)&(p|0)!=(-1|0))^1)):0){h=s?r:b;g=t;q=145}if((q|0)==145){b=(c[14940]|0)+h|0;c[14940]=b;if(b>>>0>(c[14941]|0)>>>0)c[14941]=b;j=c[14838]|0;f:do if(j){b=59776;while(1){a=c[b>>2]|0;d=c[b+4>>2]|0;if((g|0)==(a+d|0)){q=154;break}e=c[b+8>>2]|0;if(!e)break;else b=e}if(((q|0)==154?(u=b+4|0,(c[b+12>>2]&8|0)==0):0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[u>>2]=d+h;v=(c[14835]|0)+h|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;u=j+t|0;t=v-t|0;c[14838]=u;c[14835]=t;c[u+4>>2]=t|1;c[j+v+4>>2]=40;c[14839]=c[14954];break}if(g>>>0<(c[14836]|0)>>>0)c[14836]=g;d=g+h|0;b=59776;while(1){if((c[b>>2]|0)==(d|0)){q=162;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((q|0)==162?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;l=b+4|0;c[l>>2]=(c[l>>2]|0)+h;l=g+8|0;l=g+((l&7|0)==0?0:0-l&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;c[l+4>>2]=m|3;g:do if((j|0)==(b|0)){v=(c[14835]|0)+i|0;c[14835]=v;c[14838]=k;c[k+4>>2]=v|1}else{if((c[14837]|0)==(b|0)){v=(c[14834]|0)+i|0;c[14834]=v;c[14837]=k;c[k+4>>2]=v|1;c[k+v>>2]=v;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;h:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[14832]=c[14832]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){d=b+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{v=c[b+8>>2]|0;c[v+12>>2]=a;c[a+8>>2]=v}while(0);if(!g)break;d=c[b+28>>2]|0;e=59632+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){v=g+16|0;c[((c[v>>2]|0)==(b|0)?v:g+20|0)>>2]=a;if(!a)break h}else{c[e>>2]=a;if(a|0)break;c[14833]=c[14833]&~(1<>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=59368+(b<<1<<2)|0;a=c[14832]|0;b=1<>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=59632+(e<<2)|0;c[k+28>>2]=e;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[14833]|0;d=1<>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break}b=c[b>>2]|0;i:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break i}else{e=e<<1;b=a}}c[d>>2]=k;c[k+24>>2]=b;c[k+12>>2]=k;c[k+8>>2]=k;break g}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=k;c[u>>2]=k;c[k+8>>2]=v;c[k+12>>2]=b;c[k+24>>2]=0}while(0);v=l+8|0;Ra=w;return v|0}b=59776;while(1){a=c[b>>2]|0;if(a>>>0<=j>>>0?(v=a+(c[b+4>>2]|0)|0,v>>>0>j>>>0):0)break;b=c[b+8>>2]|0}f=v+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=d-t|0;c[14838]=u;c[14835]=t;c[u+4>>2]=t|1;c[g+d+4>>2]=40;c[14839]=c[14954];d=a+4|0;c[d>>2]=27;c[b>>2]=c[14944];c[b+4>>2]=c[14945];c[b+8>>2]=c[14946];c[b+12>>2]=c[14947];c[14944]=g;c[14945]=h;c[14947]=0;c[14946]=b;b=a+24|0;do{u=b;b=b+4|0;c[b>>2]=7}while((u+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=59368+(b<<1<<2)|0;a=c[14832]|0;b=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{u=(b+1048320|0)>>>16&8;v=b<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=59632+(e<<2)|0;c[j+28>>2]=e;c[j+20>>2]=0;c[f>>2]=0;b=c[14833]|0;a=1<>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}b=c[d>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(g|0)){b=a;break j}else{e=e<<1;b=a}}c[d>>2]=j;c[j+24>>2]=b;c[j+12>>2]=j;c[j+8>>2]=j;break f}while(0);u=b+8|0;v=c[u>>2]|0;c[v+12>>2]=j;c[u>>2]=j;c[j+8>>2]=v;c[j+12>>2]=b;c[j+24>>2]=0}}else{v=c[14836]|0;if((v|0)==0|g>>>0>>0)c[14836]=g;c[14944]=g;c[14945]=h;c[14947]=0;c[14841]=c[14950];c[14840]=-1;c[14845]=59368;c[14844]=59368;c[14847]=59376;c[14846]=59376;c[14849]=59384;c[14848]=59384;c[14851]=59392;c[14850]=59392;c[14853]=59400;c[14852]=59400;c[14855]=59408;c[14854]=59408;c[14857]=59416;c[14856]=59416;c[14859]=59424;c[14858]=59424;c[14861]=59432;c[14860]=59432;c[14863]=59440;c[14862]=59440;c[14865]=59448;c[14864]=59448;c[14867]=59456;c[14866]=59456;c[14869]=59464;c[14868]=59464;c[14871]=59472;c[14870]=59472;c[14873]=59480;c[14872]=59480;c[14875]=59488;c[14874]=59488;c[14877]=59496;c[14876]=59496;c[14879]=59504;c[14878]=59504;c[14881]=59512;c[14880]=59512;c[14883]=59520;c[14882]=59520;c[14885]=59528;c[14884]=59528;c[14887]=59536;c[14886]=59536;c[14889]=59544;c[14888]=59544;c[14891]=59552;c[14890]=59552;c[14893]=59560;c[14892]=59560;c[14895]=59568;c[14894]=59568;c[14897]=59576;c[14896]=59576;c[14899]=59584;c[14898]=59584;c[14901]=59592;c[14900]=59592;c[14903]=59600;c[14902]=59600;c[14905]=59608;c[14904]=59608;c[14907]=59616;c[14906]=59616;v=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=v-t|0;c[14838]=u;c[14835]=t;c[u+4>>2]=t|1;c[g+v+4>>2]=40;c[14839]=c[14954]}while(0);b=c[14835]|0;if(b>>>0>m>>>0){t=b-m|0;c[14835]=t;v=c[14838]|0;u=v+m|0;c[14838]=u;c[u+4>>2]=t|1;c[v+4>>2]=m|3;v=v+8|0;Ra=w;return v|0}}v=uu()|0;c[v>>2]=12;v=0;Ra=w;return v|0}function mu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[14836]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0>>0)return;if((c[14837]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[14834]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[14832]=c[14832]&~(1<>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){b=h+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){a=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=59632+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[14833]=c[14833]&~(1<>2]|0)==(h|0)?i:f+20|0)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[14838]|0)==(j|0)){j=(c[14835]|0)+b|0;c[14835]=j;c[14838]=i;c[i+4>>2]=j|1;if((i|0)!=(c[14837]|0))return;c[14837]=0;c[14834]=0;return}if((c[14837]|0)==(j|0)){j=(c[14834]|0)+b|0;c[14834]=j;c[14837]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[14832]=c[14832]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){b=j+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){d=0;break}}else b=d;while(1){e=a+20|0;d=c[e>>2]|0;if(!d){e=a+16|0;d=c[e>>2]|0;if(!d)break;else{a=d;b=e}}else{a=d;b=e}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=59632+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[14833]=c[14833]&~(1<>2]|0)==(j|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[14837]|0)){c[14834]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=59368+(a<<1<<2)|0;b=c[14832]|0;a=1<>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)e=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;e=14-(g|h|e)+(j<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;a=59632+(e<<2)|0;c[i+28>>2]=e;c[i+20>>2]=0;c[i+16>>2]=0;b=c[14833]|0;d=1<>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i}else{a=c[a>>2]|0;b:do if((c[a+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=a+16+(e>>>31<<2)|0;b=c[d>>2]|0;if(!b)break;if((c[b+4>>2]&-8|0)==(f|0)){a=b;break b}else{e=e<<1;a=b}}c[d>>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i;break a}while(0);h=a+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=a;c[i+24>>2]=0}while(0);j=(c[14840]|0)+-1|0;c[14840]=j;if(j|0)return;a=59784;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[14840]=-1;return}function nu(a,b){a=a|0;b=b|0;var d=0;if(a){d=G(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=lu(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;gw(a|0,0,d|0)|0;return a|0}function ou(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=lu(b)|0;return b|0}if(b>>>0>4294967231){b=uu()|0;c[b>>2]=12;b=0;return b|0}d=pu(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=lu(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;ew(d|0,a|0,(e>>>0>>0?e:b)|0)|0;mu(a);b=d;return b|0}function pu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[14952]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;qu(k,d);return a|0}if((c[14838]|0)==(i|0)){k=(c[14835]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[14838]=e;c[14835]=d;return a|0}if((c[14837]|0)==(i|0)){e=(c[14834]|0)+d|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[14834]=d;c[14837]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[14832]=c[14832]&~(1<>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){e=i+16|0;f=e+4|0;d=c[f>>2]|0;if(!d){d=c[e>>2]|0;if(!d){f=0;break}}else e=f;while(1){g=d+20|0;f=c[g>>2]|0;if(!f){g=d+16|0;f=c[g>>2]|0;if(!f)break;else{d=f;e=g}}else{d=f;e=g}}c[e>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=59632+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[14833]=c[14833]&~(1<>2]|0)==(i|0)?g:h+20|0)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=m&1|j|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;qu(i,k);return a|0}return 0}function qu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[14837]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[14834]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[14832]=c[14832]&~(1<>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;e=d+4|0;a=c[e>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=c[f>>2]|0;if(!e){f=a+16|0;e=c[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=59632+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[14833]=c[14833]&~(1<>2]|0)==(h|0)?f:g+20|0)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[14838]|0)==(i|0)){i=(c[14835]|0)+b|0;c[14835]=i;c[14838]=h;c[h+4>>2]=i|1;if((h|0)!=(c[14837]|0))return;c[14837]=0;c[14834]=0;return}if((c[14837]|0)==(i|0)){i=(c[14834]|0)+b|0;c[14834]=i;c[14837]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[14832]=c[14832]&~(1<>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+16|0;d=a+4|0;b=c[d>>2]|0;if(!b){b=c[a>>2]|0;if(!b){d=0;break}}else a=d;while(1){e=b+20|0;d=c[e>>2]|0;if(!d){e=b+16|0;d=c[e>>2]|0;if(!d)break;else{b=d;a=e}}else{b=d;a=e}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=59632+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[14833]=c[14833]&~(1<>2]|0)==(i|0)?e:g+20|0)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[14837]|0)){c[14834]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=59368+(b<<1<<2)|0;a=c[14832]|0;b=1<>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{g=(b+1048320|0)>>>16&8;i=b<>>16&4;i=i<>>16&2;e=14-(d|g|e)+(i<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=59632+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[h+16>>2]=0;a=c[14833]|0;d=1<>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}b=c[b>>2]|0;a:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=b+16+(e>>>31<<2)|0;a=c[d>>2]|0;if(!a)break;if((c[a+4>>2]&-8|0)==(f|0)){b=a;break a}else{e=e<<1;b=a}}c[d>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;return}while(0);g=b+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=b;c[h+24>>2]=0;return}function ru(a,b){a=a|0;b=b|0;if(a>>>0<9){b=lu(b)|0;return b|0}else{b=su(a,b)|0;return b|0}return 0}function su(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a>>>0>16?a:16;if(!(d+-1&d))a=d;else{a=16;while(1)if(a>>>0>>0)a=a<<1;else break}if((-64-a|0)>>>0<=b>>>0){h=uu()|0;c[h>>2]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;d=lu(g+12+a|0)|0;if(!d){h=0;return h|0}f=d+-8|0;do if(a+-1&d){e=(d+a+-1&0-a)+-8|0;b=f;e=(e-b|0)>>>0>15?e:e+a|0;b=e-b|0;a=d+-4|0;i=c[a>>2]|0;d=(i&-8)-b|0;if(!(i&3)){c[e>>2]=(c[f>>2]|0)+b;c[e+4>>2]=d;a=e;b=e;break}else{i=e+4|0;c[i>>2]=d|c[i>>2]&1|2;d=e+d+4|0;c[d>>2]=c[d>>2]|1;c[a>>2]=b|c[a>>2]&1|2;c[i>>2]=c[i>>2]|1;qu(f,b);a=e;b=e;break}}else{a=f;b=f}while(0);a=a+4|0;d=c[a>>2]|0;if(d&3|0?(h=d&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;f=b+g|0;c[a>>2]=g|d&1|2;c[f+4>>2]=i|3;h=b+h+4|0;c[h>>2]=c[h>>2]|1;qu(f,i)}i=b+8|0;return i|0}function tu(a){a=a|0;var b=0;if(a>>>0>4294963200){b=uu()|0;c[b>>2]=0-a;a=-1}return a|0}function uu(){return 59888}function vu(a){a=a|0;return a|0}function wu(a){a=a|0;return ((a|0)==32|(a|0)==9)&1|0}function xu(){return 30868}function yu(a){a=a|0;return ((a|32)+-97|0)>>>0<26|0}function zu(a){a=a|0;var b=0;b=(Au(a)|0)==0;return (b?a:a&95)|0}function Au(a){a=a|0;return (a+-97|0)>>>0<26|0}function Bu(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function Cu(a){a=a|0;return (a+-65|0)>>>0<26|0}function Du(a){a=a|0;var b=0;b=(Cu(a)|0)==0;return (b?a:a|32)|0}function Eu(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=5;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=5;break}}}while(0);if((e|0)==5){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function Fu(a,b){a=a|0;b=b|0;if(!b)b=0;else b=Gu(c[b>>2]|0,c[b+4>>2]|0,a)|0;return ((b|0)==0?a:b)|0}function Gu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=Hu(c[b+8>>2]|0,o)|0;f=Hu(c[b+12>>2]|0,o)|0;g=Hu(c[b+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=d-(h<<2)|0,f>>>0>>0&g>>>0>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=Hu(c[b+(g<<2)>>2]|0,o)|0;g=Hu(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=Bu(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}l=f?l:k;h=f?j:h-j|0}f=i+m|0;g=Hu(c[b+(f<<2)>>2]|0,o)|0;f=Hu(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function Hu(a,b){a=a|0;b=b|0;var c=0;c=dw(a|0)|0;return ((b|0)==0?a:c)|0}function Iu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=Ra;Ra=Ra+192|0;i=r+168|0;h=r+152|0;q=r+136|0;p=r+120|0;o=r+112|0;l=r+96|0;k=r+80|0;f=r+64|0;m=r+48|0;g=r+32|0;e=r+16|0;s=r;j=r+184|0;c[s>>2]=d;d=(c[s>>2]|0)+(4-1)&~(4-1);n=c[d>>2]|0;c[s>>2]=d+4;n=(b|0)==4?n|32768:n;a:do switch(b|0){case 14:{c[e>>2]=a;c[e+4>>2]=14;c[e+8>>2]=n;d=tu(oa(221,e|0)|0)|0;break}case 9:{c[g>>2]=a;c[g+4>>2]=16;c[g+8>>2]=j;d=oa(221,g|0)|0;switch(d|0){case -22:{c[m>>2]=a;c[m+4>>2]=9;c[m+8>>2]=n;d=oa(221,m|0)|0;break}case 0:{d=c[j+4>>2]|0;d=(c[j>>2]|0)==2?0-d|0:d;break}default:d=tu(d)|0}break}case 1030:{c[f>>2]=a;c[f+4>>2]=1030;c[f+8>>2]=n;d=oa(221,f|0)|0;if((d|0)!=-22){if((d|0)>-1){c[k>>2]=d;c[k+4>>2]=2;c[k+8>>2]=1;oa(221,k|0)|0}d=tu(d)|0;break a}c[l>>2]=a;c[l+4>>2]=1030;c[l+8>>2]=0;d=oa(221,l|0)|0;if((d|0)==-22){c[p>>2]=a;c[p+4>>2]=0;c[p+8>>2]=n;d=oa(221,p|0)|0;if((d|0)>-1){c[q>>2]=d;c[q+4>>2]=2;c[q+8>>2]=1;oa(221,q|0)|0}d=tu(d)|0;break a}else{if((d|0)>-1){c[o>>2]=d;va(6,o|0)|0}d=tu(-22)|0;break a}}case 15:case 16:case 12:case 13:{c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=n;d=tu(oa(221,h|0)|0)|0;break}default:{c[i>>2]=a;c[i+4>>2]=b;c[i+8>>2]=n;d=tu(oa(221,i|0)|0)|0}}while(0);Ra=r;return d|0}function Ju(){var a=0,b=0;b=Ra;Ra=Ra+16|0;a=ja(20,b|0)|0;Ra=b;return a|0}function Ku(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(Eu(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=G(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function Lu(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function Mu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=Ra;Ra=Ra+48|0;g=h+32|0;f=h+16|0;e=h;if(!(b&4194368))e=0;else{c[e>>2]=d;i=(c[e>>2]|0)+(4-1)&~(4-1);d=c[i>>2]|0;c[e>>2]=i+4;e=d}c[f>>2]=a;c[f+4>>2]=b|32768;c[f+8>>2]=e;e=ua(5,f|0)|0;if(!((b&524288|0)==0|(e|0)<0)){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;oa(221,g|0)|0}i=tu(e)|0;Ra=h;return i|0}function Nu(a){a=a|0;var b=0,d=0;b=Ra;Ra=Ra+16|0;d=b;a=vu(a)|0;c[d>>2]=a;a=va(6,d|0)|0;a=tu((a|0)==-4?0:a)|0;Ra=b;return a|0}function Ou(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=tu(ha(196,e|0)|0)|0;Ra=d;return b|0}function Pu(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=tu(ga(195,e|0)|0)|0;Ra=d;return b|0}function Qu(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=tu(qa(33,e|0)|0)|0;Ra=d;return b|0}function Ru(a,b){a=a|0;b=b|0;return Uu(a,b,(Eu(a)|0)+1|0)|0}function Su(a,b){a=a|0;b=b|0;Tu(a,b)|0;return a|0}function Tu(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=10}else f=10;while(0);if((f|0)==10){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function Uu(b,c,d){b=b|0;c=c|0;d=d|0;a:do if(!d)d=0;else{c=c&255;while(1){d=d+-1|0;if((a[b+d>>0]|0)==c<<24>>24)break;if(!d){d=0;break a}}d=b+d|0}while(0);return d|0}function Vu(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=58986;f=d+15|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));if(!c){a[b+14>>0]=48;a[b+15>>0]=0}else{e=c;d=14;while(1){d=d+1|0;if(e>>>0<10)break;else e=(e>>>0)/10|0}a[b+d>>0]=0;do{f=c;c=(c>>>0)/10|0;d=d+-1|0;a[b+d>>0]=f-(c*10|0)|48}while(f>>>0>=10)}return}function Wu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=Ra;Ra=Ra+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;d=tu(wa(85,f|0)|0)|0;Ra=e;return d|0}function Xu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=Ra;Ra=Ra+48|0;f=g+40|0;e=g;d=g+32|0;c[d>>2]=a;c[d+4>>2]=b;d=ia(197,d|0)|0;if((d|0)==-9?(c[e>>2]=a,c[e+4>>2]=1,(oa(221,e|0)|0)>=0):0){Vu(e,a);c[f>>2]=e;c[f+4>>2]=b;b=tu(ga(195,f|0)|0)|0}else b=tu(d)|0;Ra=g;return b|0}function Yu(a){a=a|0;var b=0,c=0;b=(Eu(a)|0)+1|0;c=lu(b)|0;if(!c)a=0;else a=ew(c|0,a|0,b|0)|0;return a|0}function Zu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=Ra;Ra=Ra+4112|0;e=g+4096|0;d=g;if(a)if(!b){a=uu()|0;c[a>>2]=22;a=0}else f=4;else{b=4096;a=d;f=4}if((f|0)==4){c[e>>2]=a;c[e+4>>2]=b;if((tu(da(183,e|0)|0)|0)>=0){if((a|0)==(d|0))a=Yu(d)|0}else a=0}Ra=g;return a|0}function _u(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=Ra;Ra=Ra+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;d=tu(sa(4,f|0)|0)|0;Ra=e;return d|0}function $u(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=Ra;Ra=Ra+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;d=tu(pa(3,f|0)|0)|0;Ra=e;return d|0}function av(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e)f=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(f<<24>>24==g<<24>>24&((e|0)!=0&g<<24>>24!=0)))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);f=(f&255)-(d[c>>0]|0)|0}return f|0}function bv(b,e){b=b|0;e=e|0;var f=0,g=0;f=0;while(1){if((d[27392+f>>0]|0)==(b|0)){g=4;break}f=f+1|0;if((f|0)==87){b=87;g=5;break}}if((g|0)==4)if(!f)f=27488;else{b=f;g=5}if((g|0)==5){f=27488;do{do{g=f;f=f+1|0}while((a[g>>0]|0)!=0);b=b+-1|0}while((b|0)!=0)}return cv(f,c[e+20>>2]|0)|0}function cv(a,b){a=a|0;b=b|0;return Fu(a,b)|0}function dv(a){a=a|0;var b=0;b=(ev()|0)+188|0;return bv(a,c[b>>2]|0)|0}function ev(){return xu()|0}function fv(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=tu(ra(39,e|0)|0)|0;Ra=d;return b|0}function gv(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=tu(xa(91,e|0)|0)|0;Ra=d;return b|0}function hv(){return}function iv(a){a=+a;var b=0;g[h>>3]=a;b=c[h+4>>2]&2147483647;c[h>>2]=c[h>>2];c[h+4>>2]=b;a=+g[h>>3];do if(b>>>0<1072049730)if(b>>>0<1045430272)a=1.0;else{a=+kv(a);a=a*a/((a+1.0)*2.0)+1.0}else if(b>>>0<1082535490){a=+D(+a);a=(a+1.0/a)*.5;break}else{a=+lv(a);break}while(0);return +a}function jv(a){a=+a;var b=0.0,d=0,e=0.0;g[h>>3]=a;d=c[h+4>>2]|0;e=(d|0)<0?-.5:.5;d=d&2147483647;c[h>>2]=c[h>>2];c[h+4>>2]=d;b=+g[h>>3];do if(d>>>0<1082535490){b=+kv(b);if(d>>>0>=1072693248){a=e*(b+b/(b+1.0));break}if(d>>>0>=1045430272)a=e*(b*2.0-b*b/(b+1.0))}else a=e*2.0*+lv(b);while(0);return +a}function kv(a){a=+a;var b=0,d=0,e=0.0,f=0.0,i=0.0,j=0,k=0,l=0.0;g[h>>3]=a;d=c[h+4>>2]|0;b=d&2147483647;d=bw(c[h>>2]|0,d|0,63)|0;L()|0;do if(b>>>0>1078159481){j=mv(a)|0;b=(L()|0)&2147483647;if(!(b>>>0>2146435072|(b|0)==2146435072&j>>>0>0))if(!d)if(a>709.782712893384)a=a*8988465674311579538646525.0e283;else k=11;else a=-1.0}else{if(b>>>0<=1071001154)if(b>>>0<1016070144)break;else{i=0.0;j=0;k=14;break}if(b>>>0<1072734898)if(!d){b=1;e=a+-.6931471803691238;f=1.9082149292705877e-10;k=12;break}else{b=-1;e=a+.6931471803691238;f=-1.9082149292705877e-10;k=12;break}else k=11}while(0);if((k|0)==11){b=~~(a*1.4426950408889634+((d|0)==0?.5:-.5));f=+(b|0);e=a-f*.6931471803691238;f=f*1.9082149292705877e-10;k=12}if((k|0)==12){i=e-f;a=i;i=e-i-f;j=b;k=14}a:do if((k|0)==14){f=a*.5;e=a*f;l=e*(e*(e*(e*(4.008217827329362e-06-e*2.0109921818362437e-07)+-7.93650757867488e-05)+1.5873015872548146e-03)+-.03333333333333313)+1.0;f=3.0-f*l;f=e*((l-f)/(6.0-a*f));if(!j){a=a-(a*f-e);break}f=a*(f-i)-i-e;switch(j|0){case -1:{a=(a-f)*.5+-.5;break a}case 1:if(a<-.25){a=(f-(a+.5))*-2.0;break a}else{a=(a-f)*2.0+1.0;break a}default:{d=cw(j+1023|0,0,52)|0;k=L()|0;c[h>>2]=d;c[h+4>>2]=k;i=+g[h>>3];if(j>>>0>56){a=a-f+1.0;a=((j|0)==1024?a*2.0*8988465674311579538646525.0e283:a*i)+-1.0;break a}b=cw(1023-j|0,0,52)|0;d=L()|0;if((j|0)<20){c[h>>2]=b;c[h+4>>2]=d;e=1.0-+g[h>>3];a=a-f}else{c[h>>2]=b;c[h+4>>2]=d;e=a-(f+ +g[h>>3]);a=1.0}a=(e+a)*i;break a}}}while(0);return +a}function lv(a){a=+a;return +(+D(+(a+-1416.0996898839683))*2247116418577894884661631.0e283*2247116418577894884661631.0e283)}function mv(a){a=+a;var b=0;g[h>>3]=a;b=c[h>>2]|0;K(c[h+4>>2]|0);return b|0}function nv(a,b,c){a=a|0;b=b|0;c=c|0;ov(a,b,c)|0;return a|0}function ov(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=13}}else e=0}else h=13;while(0);c:do if((h|0)==13)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);gw(b|0,0,e|0)|0;return b|0}function pv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=Ra;Ra=Ra+208|0;j=m;k=m+192|0;h=G(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)qv(a,d,e,f,j);else sv(a,d,e,k,f,0,j);if((f|0)==1){tv(k,1);f=0;break}else{tv(k,b);f=1;break}}else{qv(a,d,e,f,j);rv(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0>>0)}else{f=1;b=1}sv(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1)if(!(c[g>>2]|0))break a;else l=19;else if((f|0)<2)l=19;else{tv(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;rv(k,1);sv(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);tv(k,1);b=c[k>>2]|1;c[k>>2]=b;a=a+i|0;sv(a,d,e,k,n,1,j);f=n}if((l|0)==19){l=0;b=uv(k)|0;rv(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}}while(0);Ra=m;return}function qv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=Ra;Ra=Ra+240|0;l=m;c[l>>2]=a;a:do if((e|0)>1){k=0-b|0;i=a;g=e;e=1;h=a;while(1){i=i+k|0;j=g+-2|0;a=i+(0-(c[f+(j<<2)>>2]|0))|0;if((Xa[d&255](h,a)|0)>-1?(Xa[d&255](h,i)|0)>-1:0)break a;h=l+(e<<2)|0;if((Xa[d&255](a,i)|0)>-1){c[h>>2]=a;g=g+-1|0}else{c[h>>2]=i;a=i;g=j}e=e+1|0;if((g|0)<=1)break a;i=a;h=c[l>>2]|0}}else e=1;while(0);wv(b,l,e);Ra=m;return}function rv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function sv(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=Ra;Ra=Ra+240|0;m=o+232|0;n=o;p=c[e>>2]|0;c[m>>2]=p;j=c[e+4>>2]|0;k=m+4|0;c[k>>2]=j;c[n>>2]=a;a:do if((p|0)!=1|(j|0)!=0?(l=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(Xa[d&255](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+l|0;i=c[h+(f+-2<<2)>>2]|0;if((Xa[d&255](g,j)|0)>-1){i=10;break a}if((Xa[d&255](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[n+(e<<2)>>2]=j;p=uv(m)|0;rv(m,p);f=p+f|0;if(!((c[m>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((Xa[d&255](a,c[n>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{p=j;e=g;g=1;j=a;a=p}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){wv(b,n,e);qv(a,b,d,f,h)}Ra=o;return}function tv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<>2]=d<>2]|0)+-1|0)|0;if(!b){b=vv(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function vv(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;while(1){a=a+1|0;if(!(b&2))b=b>>>1;else break}}else a=0;else a=32;return a|0}function wv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=Ra;Ra=Ra+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;ew(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;ew(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);Ra=h;return}function xv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=Ra;Ra=Ra+32|0;g=f;e=f+20|0;c[g>>2]=a;c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;d=(tu(ba(140,g|0)|0)|0)==0;Ra=f;return (d?c[e>>2]|0:-1)|0}function yv(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ra;Ra=Ra+16|0;e=d;c[e>>2]=a;c[e+4>>2]=0;c[e+8>>2]=b;c[e+12>>2]=b>>31;b=tu(fa(194,e|0)|0)|0;Ra=d;return b|0}function zv(a){a=a|0;var b=0,d=0;b=Ra;Ra=Ra+16|0;d=b;c[d>>2]=a;a=tu(aa(118,d|0)|0)|0;Ra=b;return a|0}function Av(a){a=a|0;var b=0,d=0;d=Ra;Ra=Ra+16|0;b=d;c[b>>2]=a;c[b+4>>2]=0;a=(Ja(b|0,b|0)|0)==0;Ra=d;return (a?0:c[b>>2]|0)|0}function Bv(a){a=a|0;var b=0,d=0;b=Ra;Ra=Ra+16|0;d=b;c[d>>2]=a;a=tu($(10,d|0)|0)|0;Ra=b;return a|0}function Cv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Ra;Ra=Ra+64|0;g=h+48|0;f=h;e=h+32|0;c[e>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;e=ma(207,e|0)|0;if((e|0)==-9?(c[f>>2]=a,c[f+4>>2]=1,(oa(221,f|0)|0)>=0):0){Vu(f,a);c[g>>2]=f;c[g+4>>2]=b;c[g+8>>2]=d;a=tu(na(212,g|0)|0)|0}else a=tu(e)|0;Ra=h;return a|0}function Dv(){var a=0,b=0;b=Ra;Ra=Ra+16|0;a=ka(201,b|0)|0;Ra=b;return a|0}function Ev(a){a=a|0;var b=0,d=0;b=Ra;Ra=Ra+16|0;d=b;c[d>>2]=a;a=tu(ta(40,d|0)|0)|0;Ra=b;return a|0}function Fv(a){a=+a;var b=0,d=0,e=0,f=0,i=0.0;g[h>>3]=a;f=c[h>>2]|0;d=c[h+4>>2]|0;b=bw(f|0,d|0,52)|0;L()|0;b=b&2047;c[h>>2]=f;c[h+4>>2]=d&2147483647;a=+g[h>>3];if(b>>>0<1022){if(b>>>0>=991){i=a*2.0;a=i+i*a/(1.0-a);e=5}}else{a=a/(1.0-a)*2.0;e=5}if((e|0)==5)a=+Gv(a)*.5;return +((d|0)<0?-a:a)}function Gv(a){a=+a;var b=0.0,d=0,e=0.0,f=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0;g[h>>3]=a;d=c[h+4>>2]|0;do if((d|0)<0|d>>>0<1071284858)if(d>>>0<=3220176895){i=cw(d|0,0,1)|0;L()|0;if(i>>>0<2034237440)break;if(d>>>0<3218259653){e=0.0;b=0.0;f=11;break}else{f=8;break}}else{if(a==-1.0){a=-r;break}a=(a-a)/0.0;break}else if(d>>>0<=2146435071)f=8;while(0);if((f|0)==8){b=a+1.0;g[h>>3]=b;d=(c[h+4>>2]|0)+614242|0;if(d>>>0<1129316352)b=(d>>>0>1074790399?1.0-(b-a):a-(b+-1.0))/b;else b=0.0;c[h>>2]=c[h>>2];c[h+4>>2]=(d&1048575)+1072079006;e=+((d>>>20)+-1023|0);a=+g[h>>3]+-1.0;f=11}if((f|0)==11){j=a*(a*.5);m=a/(a+2.0);l=m*m;k=l*l;a=e*.6931471803691238+(a+(b+e*1.9082149292705877e-10+m*(j+(k*(k*(k*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(k*(k*(k*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)))-j))}return +a}function Hv(a){a=+a;var b=0;g[h>>3]=a;b=bw(c[h>>2]|0,c[h+4>>2]|0,52)|0;L()|0;b=b&2047;do if(b>>>0>=1024)if(b>>>0<1049){a=+E(+(a*2.0-1.0/(+u(+(a*a+-1.0))+a)));break}else{a=+E(+a)+.6931471805599453;break}else{a=a+-1.0;a=+Gv(a+ +u(+(a*a+a*2.0)))}while(0);return +a}function Iv(a){a=+a;var b=0,d=0;g[h>>3]=a;d=c[h+4>>2]|0;b=d&2147483647;c[h>>2]=c[h>>2];c[h+4>>2]=b;a=+g[h>>3];do if(b>>>0>1071748074)if(b>>>0>1077149696){a=1.0-0.0/a;break}else{a=1.0-2.0/(+kv(a*2.0)+2.0);break}else{if(b>>>0>1070618798){a=+kv(a*2.0);a=a/(a+2.0);break}if(b>>>0>1048575){a=+kv(a*-2.0);a=-a/(a+2.0)}}while(0);return +((d|0)<0?-a:a)}function Jv(a){a=+a;var b=0,d=0,e=0,f=0.0;g[h>>3]=a;e=c[h>>2]|0;d=c[h+4>>2]|0;b=bw(e|0,d|0,52)|0;L()|0;b=b&2047;c[h>>2]=e;c[h+4>>2]=d&2147483647;a=+g[h>>3];do if(b>>>0<=1048){if(b>>>0>1023){a=+E(+(a*2.0+1.0/(+u(+(a*a+1.0))+a)));break}if(b>>>0>996){f=a*a;a=+Gv(f/(+u(+(f+1.0))+1.0)+a)}}else a=+E(+a)+.6931471805599453;while(0);return +((d|0)<0?-a:a)}function Kv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=Ra;Ra=Ra+48|0;f=g+40|0;e=g;d=g+32|0;c[d>>2]=a;c[d+4>>2]=b;d=ya(94,d|0)|0;if((d|0)==-9?(c[e>>2]=a,c[e+4>>2]=1,(oa(221,e|0)|0)>=0):0){Vu(e,a);c[f>>2]=e;c[f+4>>2]=b;a=tu(ca(15,f|0)|0)|0}else a=tu(d)|0;Ra=g;return a|0}function Lv(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=Ra;Ra=Ra+32|0;h=i;do if((g&4095|0)==0&(((g|0)<0)<<31>>31&-4096|0)==0){if(b>>>0>2147483646){a=uu()|0;c[a>>2]=12;a=-1;break}c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=d;c[h+12>>2]=e;c[h+16>>2]=f;c[h+20>>2]=g>>12;a=tu(ea(192,h|0)|0)|0}else{a=uu()|0;c[a>>2]=22;a=-1}while(0);Ra=i;return a|0}function Mv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=Ra;Ra=Ra+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){gw(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{j=e&255;i=f+(j>>>5<<2)|0;c[i>>2]=c[i>>2]|1<<(j&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{j=d&255;if(c[f+(j>>>5<<2)>>2]&1<<(j&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=Ku(b,e<<24>>24)|0;Ra=h;return e-b|0}function Nv(){Z(59908);return}function Ov(){return 59892}function Pv(){return 59900}function Qv(){return 59904}function Rv(){return 59908}function Sv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (K(b+d+(c>>>0>>0|0)>>>0|0),c|0)|0}function Tv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (K(d|0),a-c>>>0|0)|0}function Uv(a){a=a|0;return (a?31-(I(a^a-1)|0)|0:32)|0}function Vv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (K(n|0),f)|0}else{if(!g){n=0;f=0;return (K(n|0),f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (K(n|0),f)|0}}g=(i|0)==0;do if(h){if(!g){g=(I(i|0)|0)-(I(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (K(n|0),f)|0}g=h-1|0;if(g&h|0){i=(I(h|0)|0)+33-(I(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (K(o|0),p)|0}else{p=Uv(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (K(o|0),p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (K(o|0),p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (K(o|0),p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((Uv(i|0)|0)>>>0);return (K(o|0),p)|0}g=(I(i|0)|0)-(I(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (K(o|0),p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=Sv(m|0,l|0,-1,-1)|0;d=L()|0;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;Tv(k|0,d|0,e|0,n|0)|0;p=L()|0;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=Tv(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=L()|0;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (K(o|0),p)|0}function Wv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=Tv(j^a|0,i^b|0,j|0,i|0)|0;g=L()|0;a=f^j;b=e^i;return Tv((Vv(h,g,Tv(f^c|0,e^d|0,f|0,e|0)|0,L()|0,0)|0)^a|0,(L()|0)^b|0,a|0,b|0)|0}function Xv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=G(e,f)|0;d=a>>>16;a=(c>>>16)+(G(e,d)|0)|0;e=b>>>16;b=G(e,f)|0;return (K((a>>>16)+(G(e,d)|0)+(((a&65535)+b|0)>>>16)|0),a+b<<16|c&65535|0)|0}function Yv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=Xv(e,f)|0;a=L()|0;return (K((G(b,f)|0)+(G(d,e)|0)+a|a&0|0),c|0|0)|0}function Zv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=Ra;Ra=Ra+16|0;i=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;k=e>>31|((e|0)<0?-1:0)<<1;j=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=Tv(h^a|0,g^b|0,h|0,g|0)|0;b=L()|0;Vv(a,b,Tv(k^d|0,j^e|0,k|0,j|0)|0,L()|0,i)|0;e=Tv(c[i>>2]^h|0,c[i+4>>2]^g|0,h|0,g|0)|0;d=L()|0;Ra=f;return (K(d|0),e)|0}function _v(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Vv(a,b,c,d,0)|0}function $v(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=Ra;Ra=Ra+16|0;f=g|0;Vv(a,b,d,e,f)|0;Ra=g;return (K(c[f+4>>2]|0),c[f>>2]|0)|0}function aw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){K(b>>c|0);return a>>>c|(b&(1<>c-32|0}function bw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){K(b>>>c|0);return a>>>c|(b&(1<>>c-32|0}function cw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){K(b<>>32-c|0);return a<>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function ew(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192){Aa(b|0,d|0,e|0)|0;return b|0}h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function fw(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else ew(b,c,d)|0;return b|0}function gw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;i=d|d<<8|d<<16|d<<24;g=f-64|0;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function hw(a){a=a|0;var b=0,d=0;d=c[i>>2]|0;b=d+a|0;if((a|0)>0&(b|0)<(d|0)|(b|0)<0){Pa(b|0)|0;_(12);return -1}if((b|0)>(za()|0)?(Ba(b|0)|0)==0:0){_(12);return -1}c[i>>2]=b;return d|0}function iw(a){a=a|0;return Va[a&127]()|0}function jw(){return M(0)|0}function kw(){return M(1)|0}function lw(){return M(2)|0}function mw(){return M(3)|0}function nw(){return M(4)|0}function ow(){return M(5)|0}function pw(){return M(6)|0}function qw(){return M(7)|0}function rw(){return M(8)|0}function sw(){return M(9)|0}function tw(){return M(10)|0}function uw(){return M(11)|0}function vw(){return M(12)|0}function ww(){return M(13)|0}function xw(){return M(14)|0}function yw(){return M(15)|0}function zw(){return M(16)|0}function Aw(){return M(17)|0}function Bw(){return M(18)|0}function Cw(){return M(19)|0}function Dw(){return M(20)|0}function Ew(){return M(21)|0}function Fw(){return M(22)|0}function Gw(){return M(23)|0}function Hw(){return M(24)|0}function Iw(){return M(25)|0}function Jw(){return M(26)|0}function Kw(){return M(27)|0}function Lw(){return M(28)|0}function Mw(){return M(29)|0}function Nw(){return M(30)|0}function Ow(){return M(31)|0}function Pw(){return M(32)|0}function Qw(){return M(33)|0}function Rw(){return M(34)|0}function Sw(){return M(35)|0}function Tw(){return M(36)|0}function Uw(){return M(37)|0}function Vw(){return M(38)|0}function Ww(){return M(39)|0}function Xw(){return M(40)|0}function Yw(){return M(41)|0}function Zw(){return M(42)|0}function _w(){return M(43)|0}function $w(){return M(44)|0}function ax(){return M(45)|0}function bx(){return M(46)|0}function cx(){return M(47)|0}function dx(){return M(48)|0}function ex(){return M(49)|0}function fx(){return M(50)|0}function gx(){return M(51)|0}function hx(){return M(52)|0}function ix(){return M(53)|0}function jx(){return M(54)|0}function kx(){return M(55)|0}function lx(){return M(56)|0}function mx(){return M(57)|0}function nx(){return M(58)|0}function ox(){return M(59)|0}function px(){return M(60)|0}function qx(){return M(61)|0}function rx(){return M(62)|0}function sx(){return M(63)|0}function tx(a,b){a=a|0;b=b|0;return Wa[a&127](b|0)|0}function ux(a){a=a|0;return N(0,a|0)|0}function vx(a){a=a|0;return N(1,a|0)|0}function wx(a){a=a|0;return N(2,a|0)|0}function xx(a){a=a|0;return N(3,a|0)|0}function yx(a){a=a|0;return N(4,a|0)|0}function zx(a){a=a|0;return N(5,a|0)|0}function Ax(a){a=a|0;return N(6,a|0)|0}function Bx(a){a=a|0;return N(7,a|0)|0}function Cx(a){a=a|0;return N(8,a|0)|0}function Dx(a){a=a|0;return N(9,a|0)|0}function Ex(a){a=a|0;return N(10,a|0)|0}function Fx(a){a=a|0;return N(11,a|0)|0}function Gx(a){a=a|0;return N(12,a|0)|0}function Hx(a){a=a|0;return N(13,a|0)|0}function Ix(a){a=a|0;return N(14,a|0)|0}function Jx(a){a=a|0;return N(15,a|0)|0}function Kx(a){a=a|0;return N(16,a|0)|0}function Lx(a){a=a|0;return N(17,a|0)|0}function Mx(a){a=a|0;return N(18,a|0)|0}function Nx(a){a=a|0;return N(19,a|0)|0}function Ox(a){a=a|0;return N(20,a|0)|0}function Px(a){a=a|0;return N(21,a|0)|0}function Qx(a){a=a|0;return N(22,a|0)|0}function Rx(a){a=a|0;return N(23,a|0)|0}function Sx(a){a=a|0;return N(24,a|0)|0}function Tx(a){a=a|0;return N(25,a|0)|0}function Ux(a){a=a|0;return N(26,a|0)|0}function Vx(a){a=a|0;return N(27,a|0)|0}function Wx(a){a=a|0;return N(28,a|0)|0}function Xx(a){a=a|0;return N(29,a|0)|0}function Yx(a){a=a|0;return N(30,a|0)|0}function Zx(a){a=a|0;return N(31,a|0)|0}function _x(a){a=a|0;return N(32,a|0)|0}function $x(a){a=a|0;return N(33,a|0)|0}function ay(a){a=a|0;return N(34,a|0)|0}function by(a){a=a|0;return N(35,a|0)|0}function cy(a){a=a|0;return N(36,a|0)|0}function dy(a){a=a|0;return N(37,a|0)|0}function ey(a){a=a|0;return N(38,a|0)|0}function fy(a){a=a|0;return N(39,a|0)|0}function gy(a){a=a|0;return N(40,a|0)|0}function hy(a){a=a|0;return N(41,a|0)|0}function iy(a){a=a|0;return N(42,a|0)|0}function jy(a){a=a|0;return N(43,a|0)|0}function ky(a){a=a|0;return N(44,a|0)|0}function ly(a){a=a|0;return N(45,a|0)|0}function my(a){a=a|0;return N(46,a|0)|0}function ny(a){a=a|0;return N(47,a|0)|0}function oy(a){a=a|0;return N(48,a|0)|0}function py(a){a=a|0;return N(49,a|0)|0}function qy(a){a=a|0;return N(50,a|0)|0}function ry(a){a=a|0;return N(51,a|0)|0}function sy(a){a=a|0;return N(52,a|0)|0}function ty(a){a=a|0;return N(53,a|0)|0}function uy(a){a=a|0;return N(54,a|0)|0}function vy(a){a=a|0;return N(55,a|0)|0}function wy(a){a=a|0;return N(56,a|0)|0}function xy(a){a=a|0;return N(57,a|0)|0}function yy(a){a=a|0;return N(58,a|0)|0}function zy(a){a=a|0;return N(59,a|0)|0}function Ay(a){a=a|0;return N(60,a|0)|0}function By(a){a=a|0;return N(61,a|0)|0}function Cy(a){a=a|0;return N(62,a|0)|0}function Dy(a){a=a|0;return N(63,a|0)|0}function Ey(a,b,c){a=a|0;b=b|0;c=c|0;return Xa[a&255](b|0,c|0)|0}function Fy(a,b){a=a|0;b=b|0;return O(0,a|0,b|0)|0}function Gy(a,b){a=a|0;b=b|0;return O(1,a|0,b|0)|0}function Hy(a,b){a=a|0;b=b|0;return O(2,a|0,b|0)|0}function Iy(a,b){a=a|0;b=b|0;return O(3,a|0,b|0)|0}function Jy(a,b){a=a|0;b=b|0;return O(4,a|0,b|0)|0}function Ky(a,b){a=a|0;b=b|0;return O(5,a|0,b|0)|0}function Ly(a,b){a=a|0;b=b|0;return O(6,a|0,b|0)|0}function My(a,b){a=a|0;b=b|0;return O(7,a|0,b|0)|0}function Ny(a,b){a=a|0;b=b|0;return O(8,a|0,b|0)|0}function Oy(a,b){a=a|0;b=b|0;return O(9,a|0,b|0)|0}function Py(a,b){a=a|0;b=b|0;return O(10,a|0,b|0)|0}function Qy(a,b){a=a|0;b=b|0;return O(11,a|0,b|0)|0}function Ry(a,b){a=a|0;b=b|0;return O(12,a|0,b|0)|0}function Sy(a,b){a=a|0;b=b|0;return O(13,a|0,b|0)|0}function Ty(a,b){a=a|0;b=b|0;return O(14,a|0,b|0)|0}function Uy(a,b){a=a|0;b=b|0;return O(15,a|0,b|0)|0}function Vy(a,b){a=a|0;b=b|0;return O(16,a|0,b|0)|0}function Wy(a,b){a=a|0;b=b|0;return O(17,a|0,b|0)|0}function Xy(a,b){a=a|0;b=b|0;return O(18,a|0,b|0)|0}function Yy(a,b){a=a|0;b=b|0;return O(19,a|0,b|0)|0}function Zy(a,b){a=a|0;b=b|0;return O(20,a|0,b|0)|0}function _y(a,b){a=a|0;b=b|0;return O(21,a|0,b|0)|0}function $y(a,b){a=a|0;b=b|0;return O(22,a|0,b|0)|0}function az(a,b){a=a|0;b=b|0;return O(23,a|0,b|0)|0}function bz(a,b){a=a|0;b=b|0;return O(24,a|0,b|0)|0}function cz(a,b){a=a|0;b=b|0;return O(25,a|0,b|0)|0}function dz(a,b){a=a|0;b=b|0;return O(26,a|0,b|0)|0}function ez(a,b){a=a|0;b=b|0;return O(27,a|0,b|0)|0}function fz(a,b){a=a|0;b=b|0;return O(28,a|0,b|0)|0}function gz(a,b){a=a|0;b=b|0;return O(29,a|0,b|0)|0}function hz(a,b){a=a|0;b=b|0;return O(30,a|0,b|0)|0}function iz(a,b){a=a|0;b=b|0;return O(31,a|0,b|0)|0}function jz(a,b){a=a|0;b=b|0;return O(32,a|0,b|0)|0}function kz(a,b){a=a|0;b=b|0;return O(33,a|0,b|0)|0}function lz(a,b){a=a|0;b=b|0;return O(34,a|0,b|0)|0}function mz(a,b){a=a|0;b=b|0;return O(35,a|0,b|0)|0}function nz(a,b){a=a|0;b=b|0;return O(36,a|0,b|0)|0}function oz(a,b){a=a|0;b=b|0;return O(37,a|0,b|0)|0}function pz(a,b){a=a|0;b=b|0;return O(38,a|0,b|0)|0}function qz(a,b){a=a|0;b=b|0;return O(39,a|0,b|0)|0}function rz(a,b){a=a|0;b=b|0;return O(40,a|0,b|0)|0}function sz(a,b){a=a|0;b=b|0;return O(41,a|0,b|0)|0}function tz(a,b){a=a|0;b=b|0;return O(42,a|0,b|0)|0}function uz(a,b){a=a|0;b=b|0;return O(43,a|0,b|0)|0}function vz(a,b){a=a|0;b=b|0;return O(44,a|0,b|0)|0}function wz(a,b){a=a|0;b=b|0;return O(45,a|0,b|0)|0}function xz(a,b){a=a|0;b=b|0;return O(46,a|0,b|0)|0}function yz(a,b){a=a|0;b=b|0;return O(47,a|0,b|0)|0}function zz(a,b){a=a|0;b=b|0;return O(48,a|0,b|0)|0}function Az(a,b){a=a|0;b=b|0;return O(49,a|0,b|0)|0}function Bz(a,b){a=a|0;b=b|0;return O(50,a|0,b|0)|0}function Cz(a,b){a=a|0;b=b|0;return O(51,a|0,b|0)|0}function Dz(a,b){a=a|0;b=b|0;return O(52,a|0,b|0)|0}function Ez(a,b){a=a|0;b=b|0;return O(53,a|0,b|0)|0}function Fz(a,b){a=a|0;b=b|0;return O(54,a|0,b|0)|0}function Gz(a,b){a=a|0;b=b|0;return O(55,a|0,b|0)|0}function Hz(a,b){a=a|0;b=b|0;return O(56,a|0,b|0)|0}function Iz(a,b){a=a|0;b=b|0;return O(57,a|0,b|0)|0}function Jz(a,b){a=a|0;b=b|0;return O(58,a|0,b|0)|0}function Kz(a,b){a=a|0;b=b|0;return O(59,a|0,b|0)|0}function Lz(a,b){a=a|0;b=b|0;return O(60,a|0,b|0)|0}function Mz(a,b){a=a|0;b=b|0;return O(61,a|0,b|0)|0}function Nz(a,b){a=a|0;b=b|0;return O(62,a|0,b|0)|0}function Oz(a,b){a=a|0;b=b|0;return O(63,a|0,b|0)|0}function Pz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ya[a&127](b|0,c|0,d|0)|0}function Qz(a,b,c){a=a|0;b=b|0;c=c|0;return P(0,a|0,b|0,c|0)|0}function Rz(a,b,c){a=a|0;b=b|0;c=c|0;return P(1,a|0,b|0,c|0)|0}function Sz(a,b,c){a=a|0;b=b|0;c=c|0;return P(2,a|0,b|0,c|0)|0}function Tz(a,b,c){a=a|0;b=b|0;c=c|0;return P(3,a|0,b|0,c|0)|0}function Uz(a,b,c){a=a|0;b=b|0;c=c|0;return P(4,a|0,b|0,c|0)|0}function Vz(a,b,c){a=a|0;b=b|0;c=c|0;return P(5,a|0,b|0,c|0)|0}function Wz(a,b,c){a=a|0;b=b|0;c=c|0;return P(6,a|0,b|0,c|0)|0}function Xz(a,b,c){a=a|0;b=b|0;c=c|0;return P(7,a|0,b|0,c|0)|0}function Yz(a,b,c){a=a|0;b=b|0;c=c|0;return P(8,a|0,b|0,c|0)|0}function Zz(a,b,c){a=a|0;b=b|0;c=c|0;return P(9,a|0,b|0,c|0)|0}function _z(a,b,c){a=a|0;b=b|0;c=c|0;return P(10,a|0,b|0,c|0)|0}function $z(a,b,c){a=a|0;b=b|0;c=c|0;return P(11,a|0,b|0,c|0)|0}function aA(a,b,c){a=a|0;b=b|0;c=c|0;return P(12,a|0,b|0,c|0)|0}function bA(a,b,c){a=a|0;b=b|0;c=c|0;return P(13,a|0,b|0,c|0)|0}function cA(a,b,c){a=a|0;b=b|0;c=c|0;return P(14,a|0,b|0,c|0)|0}function dA(a,b,c){a=a|0;b=b|0;c=c|0;return P(15,a|0,b|0,c|0)|0}function eA(a,b,c){a=a|0;b=b|0;c=c|0;return P(16,a|0,b|0,c|0)|0}function fA(a,b,c){a=a|0;b=b|0;c=c|0;return P(17,a|0,b|0,c|0)|0}function gA(a,b,c){a=a|0;b=b|0;c=c|0;return P(18,a|0,b|0,c|0)|0}function hA(a,b,c){a=a|0;b=b|0;c=c|0;return P(19,a|0,b|0,c|0)|0}function iA(a,b,c){a=a|0;b=b|0;c=c|0;return P(20,a|0,b|0,c|0)|0}function jA(a,b,c){a=a|0;b=b|0;c=c|0;return P(21,a|0,b|0,c|0)|0}function kA(a,b,c){a=a|0;b=b|0;c=c|0;return P(22,a|0,b|0,c|0)|0}function lA(a,b,c){a=a|0;b=b|0;c=c|0;return P(23,a|0,b|0,c|0)|0}function mA(a,b,c){a=a|0;b=b|0;c=c|0;return P(24,a|0,b|0,c|0)|0}function nA(a,b,c){a=a|0;b=b|0;c=c|0;return P(25,a|0,b|0,c|0)|0}function oA(a,b,c){a=a|0;b=b|0;c=c|0;return P(26,a|0,b|0,c|0)|0}function pA(a,b,c){a=a|0;b=b|0;c=c|0;return P(27,a|0,b|0,c|0)|0}function qA(a,b,c){a=a|0;b=b|0;c=c|0;return P(28,a|0,b|0,c|0)|0}function rA(a,b,c){a=a|0;b=b|0;c=c|0;return P(29,a|0,b|0,c|0)|0}function sA(a,b,c){a=a|0;b=b|0;c=c|0;return P(30,a|0,b|0,c|0)|0}function tA(a,b,c){a=a|0;b=b|0;c=c|0;return P(31,a|0,b|0,c|0)|0}function uA(a,b,c){a=a|0;b=b|0;c=c|0;return P(32,a|0,b|0,c|0)|0}function vA(a,b,c){a=a|0;b=b|0;c=c|0;return P(33,a|0,b|0,c|0)|0}function wA(a,b,c){a=a|0;b=b|0;c=c|0;return P(34,a|0,b|0,c|0)|0}function xA(a,b,c){a=a|0;b=b|0;c=c|0;return P(35,a|0,b|0,c|0)|0}function yA(a,b,c){a=a|0;b=b|0;c=c|0;return P(36,a|0,b|0,c|0)|0}function zA(a,b,c){a=a|0;b=b|0;c=c|0;return P(37,a|0,b|0,c|0)|0}function AA(a,b,c){a=a|0;b=b|0;c=c|0;return P(38,a|0,b|0,c|0)|0}function BA(a,b,c){a=a|0;b=b|0;c=c|0;return P(39,a|0,b|0,c|0)|0}function CA(a,b,c){a=a|0;b=b|0;c=c|0;return P(40,a|0,b|0,c|0)|0}function DA(a,b,c){a=a|0;b=b|0;c=c|0;return P(41,a|0,b|0,c|0)|0}function EA(a,b,c){a=a|0;b=b|0;c=c|0;return P(42,a|0,b|0,c|0)|0}function FA(a,b,c){a=a|0;b=b|0;c=c|0;return P(43,a|0,b|0,c|0)|0}function GA(a,b,c){a=a|0;b=b|0;c=c|0;return P(44,a|0,b|0,c|0)|0}function HA(a,b,c){a=a|0;b=b|0;c=c|0;return P(45,a|0,b|0,c|0)|0}function IA(a,b,c){a=a|0;b=b|0;c=c|0;return P(46,a|0,b|0,c|0)|0}function JA(a,b,c){a=a|0;b=b|0;c=c|0;return P(47,a|0,b|0,c|0)|0}function KA(a,b,c){a=a|0;b=b|0;c=c|0;return P(48,a|0,b|0,c|0)|0}function LA(a,b,c){a=a|0;b=b|0;c=c|0;return P(49,a|0,b|0,c|0)|0}function MA(a,b,c){a=a|0;b=b|0;c=c|0;return P(50,a|0,b|0,c|0)|0}function NA(a,b,c){a=a|0;b=b|0;c=c|0;return P(51,a|0,b|0,c|0)|0}function OA(a,b,c){a=a|0;b=b|0;c=c|0;return P(52,a|0,b|0,c|0)|0}function PA(a,b,c){a=a|0;b=b|0;c=c|0;return P(53,a|0,b|0,c|0)|0}function QA(a,b,c){a=a|0;b=b|0;c=c|0;return P(54,a|0,b|0,c|0)|0}function RA(a,b,c){a=a|0;b=b|0;c=c|0;return P(55,a|0,b|0,c|0)|0}function SA(a,b,c){a=a|0;b=b|0;c=c|0;return P(56,a|0,b|0,c|0)|0}function TA(a,b,c){a=a|0;b=b|0;c=c|0;return P(57,a|0,b|0,c|0)|0}function UA(a,b,c){a=a|0;b=b|0;c=c|0;return P(58,a|0,b|0,c|0)|0}function VA(a,b,c){a=a|0;b=b|0;c=c|0;return P(59,a|0,b|0,c|0)|0}function WA(a,b,c){a=a|0;b=b|0;c=c|0;return P(60,a|0,b|0,c|0)|0}function XA(a,b,c){a=a|0;b=b|0;c=c|0;return P(61,a|0,b|0,c|0)|0}function YA(a,b,c){a=a|0;b=b|0;c=c|0;return P(62,a|0,b|0,c|0)|0}function ZA(a,b,c){a=a|0;b=b|0;c=c|0;return P(63,a|0,b|0,c|0)|0}function _A(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Za[a&127](b|0,c|0,d|0,e|0)|0}function $A(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(0,a|0,b|0,c|0,d|0)|0}function aB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(1,a|0,b|0,c|0,d|0)|0}function bB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(2,a|0,b|0,c|0,d|0)|0}function cB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(3,a|0,b|0,c|0,d|0)|0}function dB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(4,a|0,b|0,c|0,d|0)|0}function eB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(5,a|0,b|0,c|0,d|0)|0}function fB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(6,a|0,b|0,c|0,d|0)|0}function gB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(7,a|0,b|0,c|0,d|0)|0}function hB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(8,a|0,b|0,c|0,d|0)|0}function iB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(9,a|0,b|0,c|0,d|0)|0}function jB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(10,a|0,b|0,c|0,d|0)|0}function kB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(11,a|0,b|0,c|0,d|0)|0}function lB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(12,a|0,b|0,c|0,d|0)|0}function mB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(13,a|0,b|0,c|0,d|0)|0}function nB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(14,a|0,b|0,c|0,d|0)|0}function oB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(15,a|0,b|0,c|0,d|0)|0}function pB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(16,a|0,b|0,c|0,d|0)|0}function qB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(17,a|0,b|0,c|0,d|0)|0}function rB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(18,a|0,b|0,c|0,d|0)|0}function sB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(19,a|0,b|0,c|0,d|0)|0}function tB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(20,a|0,b|0,c|0,d|0)|0}function uB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(21,a|0,b|0,c|0,d|0)|0}function vB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(22,a|0,b|0,c|0,d|0)|0}function wB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(23,a|0,b|0,c|0,d|0)|0}function xB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(24,a|0,b|0,c|0,d|0)|0}function yB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(25,a|0,b|0,c|0,d|0)|0}function zB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(26,a|0,b|0,c|0,d|0)|0}function AB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(27,a|0,b|0,c|0,d|0)|0}function BB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(28,a|0,b|0,c|0,d|0)|0}function CB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(29,a|0,b|0,c|0,d|0)|0}function DB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(30,a|0,b|0,c|0,d|0)|0}function EB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(31,a|0,b|0,c|0,d|0)|0}function FB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(32,a|0,b|0,c|0,d|0)|0}function GB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(33,a|0,b|0,c|0,d|0)|0}function HB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(34,a|0,b|0,c|0,d|0)|0}function IB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(35,a|0,b|0,c|0,d|0)|0}function JB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(36,a|0,b|0,c|0,d|0)|0}function KB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(37,a|0,b|0,c|0,d|0)|0}function LB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(38,a|0,b|0,c|0,d|0)|0}function MB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(39,a|0,b|0,c|0,d|0)|0}function NB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(40,a|0,b|0,c|0,d|0)|0}function OB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(41,a|0,b|0,c|0,d|0)|0}function PB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(42,a|0,b|0,c|0,d|0)|0}function QB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(43,a|0,b|0,c|0,d|0)|0}function RB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(44,a|0,b|0,c|0,d|0)|0}function SB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(45,a|0,b|0,c|0,d|0)|0}function TB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(46,a|0,b|0,c|0,d|0)|0}function UB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(47,a|0,b|0,c|0,d|0)|0}function VB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(48,a|0,b|0,c|0,d|0)|0}function WB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(49,a|0,b|0,c|0,d|0)|0}function XB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(50,a|0,b|0,c|0,d|0)|0}function YB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(51,a|0,b|0,c|0,d|0)|0}function ZB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(52,a|0,b|0,c|0,d|0)|0}function _B(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(53,a|0,b|0,c|0,d|0)|0}function $B(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(54,a|0,b|0,c|0,d|0)|0}function aC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(55,a|0,b|0,c|0,d|0)|0}function bC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(56,a|0,b|0,c|0,d|0)|0}function cC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(57,a|0,b|0,c|0,d|0)|0}function dC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(58,a|0,b|0,c|0,d|0)|0}function eC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(59,a|0,b|0,c|0,d|0)|0}function fC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(60,a|0,b|0,c|0,d|0)|0}function gC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(61,a|0,b|0,c|0,d|0)|0}function hC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(62,a|0,b|0,c|0,d|0)|0}function iC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Q(63,a|0,b|0,c|0,d|0)|0}function jC(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return _a[a&127](b|0,c|0,d|0,e|0,f|0)|0}function kC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(0,a|0,b|0,c|0,d|0,e|0)|0}function lC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(1,a|0,b|0,c|0,d|0,e|0)|0}function mC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(2,a|0,b|0,c|0,d|0,e|0)|0}function nC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(3,a|0,b|0,c|0,d|0,e|0)|0}function oC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(4,a|0,b|0,c|0,d|0,e|0)|0}function pC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(5,a|0,b|0,c|0,d|0,e|0)|0}function qC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(6,a|0,b|0,c|0,d|0,e|0)|0}function rC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(7,a|0,b|0,c|0,d|0,e|0)|0}function sC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(8,a|0,b|0,c|0,d|0,e|0)|0}function tC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(9,a|0,b|0,c|0,d|0,e|0)|0}function uC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(10,a|0,b|0,c|0,d|0,e|0)|0}function vC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(11,a|0,b|0,c|0,d|0,e|0)|0}function wC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(12,a|0,b|0,c|0,d|0,e|0)|0}function xC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(13,a|0,b|0,c|0,d|0,e|0)|0}function yC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(14,a|0,b|0,c|0,d|0,e|0)|0}function zC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(15,a|0,b|0,c|0,d|0,e|0)|0}function AC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(16,a|0,b|0,c|0,d|0,e|0)|0}function BC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(17,a|0,b|0,c|0,d|0,e|0)|0}function CC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(18,a|0,b|0,c|0,d|0,e|0)|0}function DC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(19,a|0,b|0,c|0,d|0,e|0)|0}function EC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(20,a|0,b|0,c|0,d|0,e|0)|0}function FC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(21,a|0,b|0,c|0,d|0,e|0)|0}function GC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(22,a|0,b|0,c|0,d|0,e|0)|0}function HC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(23,a|0,b|0,c|0,d|0,e|0)|0}function IC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(24,a|0,b|0,c|0,d|0,e|0)|0}function JC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(25,a|0,b|0,c|0,d|0,e|0)|0}function KC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(26,a|0,b|0,c|0,d|0,e|0)|0}function LC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(27,a|0,b|0,c|0,d|0,e|0)|0}function MC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(28,a|0,b|0,c|0,d|0,e|0)|0}function NC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(29,a|0,b|0,c|0,d|0,e|0)|0}function OC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(30,a|0,b|0,c|0,d|0,e|0)|0}function PC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(31,a|0,b|0,c|0,d|0,e|0)|0}function QC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(32,a|0,b|0,c|0,d|0,e|0)|0}function RC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(33,a|0,b|0,c|0,d|0,e|0)|0}function SC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(34,a|0,b|0,c|0,d|0,e|0)|0}function TC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(35,a|0,b|0,c|0,d|0,e|0)|0}function UC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(36,a|0,b|0,c|0,d|0,e|0)|0}function VC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(37,a|0,b|0,c|0,d|0,e|0)|0}function WC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(38,a|0,b|0,c|0,d|0,e|0)|0}function XC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(39,a|0,b|0,c|0,d|0,e|0)|0}function YC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(40,a|0,b|0,c|0,d|0,e|0)|0}function ZC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(41,a|0,b|0,c|0,d|0,e|0)|0}function _C(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(42,a|0,b|0,c|0,d|0,e|0)|0}function $C(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(43,a|0,b|0,c|0,d|0,e|0)|0}function aD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(44,a|0,b|0,c|0,d|0,e|0)|0}function bD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(45,a|0,b|0,c|0,d|0,e|0)|0}function cD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(46,a|0,b|0,c|0,d|0,e|0)|0}function dD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(47,a|0,b|0,c|0,d|0,e|0)|0}function eD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(48,a|0,b|0,c|0,d|0,e|0)|0}function fD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(49,a|0,b|0,c|0,d|0,e|0)|0}function gD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(50,a|0,b|0,c|0,d|0,e|0)|0}function hD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(51,a|0,b|0,c|0,d|0,e|0)|0}function iD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(52,a|0,b|0,c|0,d|0,e|0)|0}function jD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(53,a|0,b|0,c|0,d|0,e|0)|0}function kD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(54,a|0,b|0,c|0,d|0,e|0)|0}function lD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(55,a|0,b|0,c|0,d|0,e|0)|0}function mD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(56,a|0,b|0,c|0,d|0,e|0)|0}function nD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(57,a|0,b|0,c|0,d|0,e|0)|0}function oD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(58,a|0,b|0,c|0,d|0,e|0)|0}function pD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(59,a|0,b|0,c|0,d|0,e|0)|0}function qD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(60,a|0,b|0,c|0,d|0,e|0)|0}function rD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(61,a|0,b|0,c|0,d|0,e|0)|0}function sD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(62,a|0,b|0,c|0,d|0,e|0)|0}function tD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return R(63,a|0,b|0,c|0,d|0,e|0)|0}function uD(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return $a[a&127](b|0,c|0,d|0,e|0,f|0,g|0)|0}function vD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(0,a|0,b|0,c|0,d|0,e|0,f|0)|0}function wD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(1,a|0,b|0,c|0,d|0,e|0,f|0)|0}function xD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(2,a|0,b|0,c|0,d|0,e|0,f|0)|0}function yD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(3,a|0,b|0,c|0,d|0,e|0,f|0)|0}function zD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(4,a|0,b|0,c|0,d|0,e|0,f|0)|0}function AD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(5,a|0,b|0,c|0,d|0,e|0,f|0)|0}function BD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(6,a|0,b|0,c|0,d|0,e|0,f|0)|0}function CD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(7,a|0,b|0,c|0,d|0,e|0,f|0)|0}function DD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(8,a|0,b|0,c|0,d|0,e|0,f|0)|0}function ED(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(9,a|0,b|0,c|0,d|0,e|0,f|0)|0}function FD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(10,a|0,b|0,c|0,d|0,e|0,f|0)|0}function GD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(11,a|0,b|0,c|0,d|0,e|0,f|0)|0}function HD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(12,a|0,b|0,c|0,d|0,e|0,f|0)|0}function ID(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(13,a|0,b|0,c|0,d|0,e|0,f|0)|0}function JD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(14,a|0,b|0,c|0,d|0,e|0,f|0)|0}function KD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(15,a|0,b|0,c|0,d|0,e|0,f|0)|0}function LD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(16,a|0,b|0,c|0,d|0,e|0,f|0)|0}function MD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(17,a|0,b|0,c|0,d|0,e|0,f|0)|0}function ND(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(18,a|0,b|0,c|0,d|0,e|0,f|0)|0}function OD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(19,a|0,b|0,c|0,d|0,e|0,f|0)|0}function PD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(20,a|0,b|0,c|0,d|0,e|0,f|0)|0}function QD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(21,a|0,b|0,c|0,d|0,e|0,f|0)|0}function RD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(22,a|0,b|0,c|0,d|0,e|0,f|0)|0}function SD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(23,a|0,b|0,c|0,d|0,e|0,f|0)|0}function TD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(24,a|0,b|0,c|0,d|0,e|0,f|0)|0}function UD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(25,a|0,b|0,c|0,d|0,e|0,f|0)|0}function VD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(26,a|0,b|0,c|0,d|0,e|0,f|0)|0}function WD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(27,a|0,b|0,c|0,d|0,e|0,f|0)|0}function XD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(28,a|0,b|0,c|0,d|0,e|0,f|0)|0}function YD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(29,a|0,b|0,c|0,d|0,e|0,f|0)|0}function ZD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(30,a|0,b|0,c|0,d|0,e|0,f|0)|0}function _D(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(31,a|0,b|0,c|0,d|0,e|0,f|0)|0}function $D(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(32,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(33,a|0,b|0,c|0,d|0,e|0,f|0)|0}function bE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(34,a|0,b|0,c|0,d|0,e|0,f|0)|0}function cE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(35,a|0,b|0,c|0,d|0,e|0,f|0)|0}function dE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(36,a|0,b|0,c|0,d|0,e|0,f|0)|0}function eE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(37,a|0,b|0,c|0,d|0,e|0,f|0)|0}function fE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(38,a|0,b|0,c|0,d|0,e|0,f|0)|0}function gE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(39,a|0,b|0,c|0,d|0,e|0,f|0)|0}function hE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(40,a|0,b|0,c|0,d|0,e|0,f|0)|0}function iE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(41,a|0,b|0,c|0,d|0,e|0,f|0)|0}function jE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(42,a|0,b|0,c|0,d|0,e|0,f|0)|0}function kE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(43,a|0,b|0,c|0,d|0,e|0,f|0)|0}function lE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(44,a|0,b|0,c|0,d|0,e|0,f|0)|0}function mE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(45,a|0,b|0,c|0,d|0,e|0,f|0)|0}function nE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(46,a|0,b|0,c|0,d|0,e|0,f|0)|0}function oE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(47,a|0,b|0,c|0,d|0,e|0,f|0)|0}function pE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(48,a|0,b|0,c|0,d|0,e|0,f|0)|0}function qE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(49,a|0,b|0,c|0,d|0,e|0,f|0)|0}function rE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(50,a|0,b|0,c|0,d|0,e|0,f|0)|0}function sE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(51,a|0,b|0,c|0,d|0,e|0,f|0)|0}function tE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(52,a|0,b|0,c|0,d|0,e|0,f|0)|0}function uE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(53,a|0,b|0,c|0,d|0,e|0,f|0)|0}function vE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(54,a|0,b|0,c|0,d|0,e|0,f|0)|0}function wE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(55,a|0,b|0,c|0,d|0,e|0,f|0)|0}function xE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(56,a|0,b|0,c|0,d|0,e|0,f|0)|0}function yE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(57,a|0,b|0,c|0,d|0,e|0,f|0)|0}function zE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(58,a|0,b|0,c|0,d|0,e|0,f|0)|0}function AE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(59,a|0,b|0,c|0,d|0,e|0,f|0)|0}function BE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(60,a|0,b|0,c|0,d|0,e|0,f|0)|0}function CE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(61,a|0,b|0,c|0,d|0,e|0,f|0)|0}function DE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(62,a|0,b|0,c|0,d|0,e|0,f|0)|0}function EE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return S(63,a|0,b|0,c|0,d|0,e|0,f|0)|0}function FE(a,b){a=a|0;b=b|0;ab[a&127](b|0)}function GE(a){a=a|0;T(0,a|0)}function HE(a){a=a|0;T(1,a|0)}function IE(a){a=a|0;T(2,a|0)}function JE(a){a=a|0;T(3,a|0)}function KE(a){a=a|0;T(4,a|0)}function LE(a){a=a|0;T(5,a|0)}function ME(a){a=a|0;T(6,a|0)}function NE(a){a=a|0;T(7,a|0)}function OE(a){a=a|0;T(8,a|0)}function PE(a){a=a|0;T(9,a|0)}function QE(a){a=a|0;T(10,a|0)}function RE(a){a=a|0;T(11,a|0)}function SE(a){a=a|0;T(12,a|0)}function TE(a){a=a|0;T(13,a|0)}function UE(a){a=a|0;T(14,a|0)}function VE(a){a=a|0;T(15,a|0)}function WE(a){a=a|0;T(16,a|0)}function XE(a){a=a|0;T(17,a|0)}function YE(a){a=a|0;T(18,a|0)}function ZE(a){a=a|0;T(19,a|0)}function _E(a){a=a|0;T(20,a|0)}function $E(a){a=a|0;T(21,a|0)}function aF(a){a=a|0;T(22,a|0)}function bF(a){a=a|0;T(23,a|0)}function cF(a){a=a|0;T(24,a|0)}function dF(a){a=a|0;T(25,a|0)}function eF(a){a=a|0;T(26,a|0)}function fF(a){a=a|0;T(27,a|0)}function gF(a){a=a|0;T(28,a|0)}function hF(a){a=a|0;T(29,a|0)}function iF(a){a=a|0;T(30,a|0)}function jF(a){a=a|0;T(31,a|0)}function kF(a){a=a|0;T(32,a|0)}function lF(a){a=a|0;T(33,a|0)}function mF(a){a=a|0;T(34,a|0)}function nF(a){a=a|0;T(35,a|0)}function oF(a){a=a|0;T(36,a|0)}function pF(a){a=a|0;T(37,a|0)}function qF(a){a=a|0;T(38,a|0)}function rF(a){a=a|0;T(39,a|0)}function sF(a){a=a|0;T(40,a|0)}function tF(a){a=a|0;T(41,a|0)}function uF(a){a=a|0;T(42,a|0)}function vF(a){a=a|0;T(43,a|0)}function wF(a){a=a|0;T(44,a|0)}function xF(a){a=a|0;T(45,a|0)}function yF(a){a=a|0;T(46,a|0)}function zF(a){a=a|0;T(47,a|0)}function AF(a){a=a|0;T(48,a|0)}function BF(a){a=a|0;T(49,a|0)}function CF(a){a=a|0;T(50,a|0)}function DF(a){a=a|0;T(51,a|0)}function EF(a){a=a|0;T(52,a|0)}function FF(a){a=a|0;T(53,a|0)}function GF(a){a=a|0;T(54,a|0)}function HF(a){a=a|0;T(55,a|0)}function IF(a){a=a|0;T(56,a|0)}function JF(a){a=a|0;T(57,a|0)}function KF(a){a=a|0;T(58,a|0)}function LF(a){a=a|0;T(59,a|0)}function MF(a){a=a|0;T(60,a|0)}function NF(a){a=a|0;T(61,a|0)}function OF(a){a=a|0;T(62,a|0)}function PF(a){a=a|0;T(63,a|0)}function QF(a,b,c){a=a|0;b=b|0;c=c|0;bb[a&127](b|0,c|0)}function RF(a,b){a=a|0;b=b|0;U(0,a|0,b|0)}function SF(a,b){a=a|0;b=b|0;U(1,a|0,b|0)}function TF(a,b){a=a|0;b=b|0;U(2,a|0,b|0)}function UF(a,b){a=a|0;b=b|0;U(3,a|0,b|0)}function VF(a,b){a=a|0;b=b|0;U(4,a|0,b|0)}function WF(a,b){a=a|0;b=b|0;U(5,a|0,b|0)}function XF(a,b){a=a|0;b=b|0;U(6,a|0,b|0)}function YF(a,b){a=a|0;b=b|0;U(7,a|0,b|0)}function ZF(a,b){a=a|0;b=b|0;U(8,a|0,b|0)}function _F(a,b){a=a|0;b=b|0;U(9,a|0,b|0)}function $F(a,b){a=a|0;b=b|0;U(10,a|0,b|0)}function aG(a,b){a=a|0;b=b|0;U(11,a|0,b|0)}function bG(a,b){a=a|0;b=b|0;U(12,a|0,b|0)}function cG(a,b){a=a|0;b=b|0;U(13,a|0,b|0)}function dG(a,b){a=a|0;b=b|0;U(14,a|0,b|0)}function eG(a,b){a=a|0;b=b|0;U(15,a|0,b|0)}function fG(a,b){a=a|0;b=b|0;U(16,a|0,b|0)}function gG(a,b){a=a|0;b=b|0;U(17,a|0,b|0)}function hG(a,b){a=a|0;b=b|0;U(18,a|0,b|0)}function iG(a,b){a=a|0;b=b|0;U(19,a|0,b|0)}function jG(a,b){a=a|0;b=b|0;U(20,a|0,b|0)}function kG(a,b){a=a|0;b=b|0;U(21,a|0,b|0)}function lG(a,b){a=a|0;b=b|0;U(22,a|0,b|0)}function mG(a,b){a=a|0;b=b|0;U(23,a|0,b|0)}function nG(a,b){a=a|0;b=b|0;U(24,a|0,b|0)}function oG(a,b){a=a|0;b=b|0;U(25,a|0,b|0)}function pG(a,b){a=a|0;b=b|0;U(26,a|0,b|0)}function qG(a,b){a=a|0;b=b|0;U(27,a|0,b|0)}function rG(a,b){a=a|0;b=b|0;U(28,a|0,b|0)}function sG(a,b){a=a|0;b=b|0;U(29,a|0,b|0)}function tG(a,b){a=a|0;b=b|0;U(30,a|0,b|0)}function uG(a,b){a=a|0;b=b|0;U(31,a|0,b|0)}function vG(a,b){a=a|0;b=b|0;U(32,a|0,b|0)}function wG(a,b){a=a|0;b=b|0;U(33,a|0,b|0)}function xG(a,b){a=a|0;b=b|0;U(34,a|0,b|0)}function yG(a,b){a=a|0;b=b|0;U(35,a|0,b|0)}function zG(a,b){a=a|0;b=b|0;U(36,a|0,b|0)}function AG(a,b){a=a|0;b=b|0;U(37,a|0,b|0)}function BG(a,b){a=a|0;b=b|0;U(38,a|0,b|0)}function CG(a,b){a=a|0;b=b|0;U(39,a|0,b|0)}function DG(a,b){a=a|0;b=b|0;U(40,a|0,b|0)}function EG(a,b){a=a|0;b=b|0;U(41,a|0,b|0)}function FG(a,b){a=a|0;b=b|0;U(42,a|0,b|0)}function GG(a,b){a=a|0;b=b|0;U(43,a|0,b|0)}function HG(a,b){a=a|0;b=b|0;U(44,a|0,b|0)}function IG(a,b){a=a|0;b=b|0;U(45,a|0,b|0)}function JG(a,b){a=a|0;b=b|0;U(46,a|0,b|0)}function KG(a,b){a=a|0;b=b|0;U(47,a|0,b|0)}function LG(a,b){a=a|0;b=b|0;U(48,a|0,b|0)}function MG(a,b){a=a|0;b=b|0;U(49,a|0,b|0)}function NG(a,b){a=a|0;b=b|0;U(50,a|0,b|0)}function OG(a,b){a=a|0;b=b|0;U(51,a|0,b|0)}function PG(a,b){a=a|0;b=b|0;U(52,a|0,b|0)}function QG(a,b){a=a|0;b=b|0;U(53,a|0,b|0)}function RG(a,b){a=a|0;b=b|0;U(54,a|0,b|0)}function SG(a,b){a=a|0;b=b|0;U(55,a|0,b|0)}function TG(a,b){a=a|0;b=b|0;U(56,a|0,b|0)}function UG(a,b){a=a|0;b=b|0;U(57,a|0,b|0)}function VG(a,b){a=a|0;b=b|0;U(58,a|0,b|0)}function WG(a,b){a=a|0;b=b|0;U(59,a|0,b|0)}function XG(a,b){a=a|0;b=b|0;U(60,a|0,b|0)}function YG(a,b){a=a|0;b=b|0;U(61,a|0,b|0)}function ZG(a,b){a=a|0;b=b|0;U(62,a|0,b|0)}function _G(a,b){a=a|0;b=b|0;U(63,a|0,b|0)}function $G(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;cb[a&255](b|0,c|0,d|0)}function aH(a,b,c){a=a|0;b=b|0;c=c|0;V(0,a|0,b|0,c|0)}function bH(a,b,c){a=a|0;b=b|0;c=c|0;V(1,a|0,b|0,c|0)}function cH(a,b,c){a=a|0;b=b|0;c=c|0;V(2,a|0,b|0,c|0)}function dH(a,b,c){a=a|0;b=b|0;c=c|0;V(3,a|0,b|0,c|0)}function eH(a,b,c){a=a|0;b=b|0;c=c|0;V(4,a|0,b|0,c|0)}function fH(a,b,c){a=a|0;b=b|0;c=c|0;V(5,a|0,b|0,c|0)}function gH(a,b,c){a=a|0;b=b|0;c=c|0;V(6,a|0,b|0,c|0)}function hH(a,b,c){a=a|0;b=b|0;c=c|0;V(7,a|0,b|0,c|0)}function iH(a,b,c){a=a|0;b=b|0;c=c|0;V(8,a|0,b|0,c|0)}function jH(a,b,c){a=a|0;b=b|0;c=c|0;V(9,a|0,b|0,c|0)}function kH(a,b,c){a=a|0;b=b|0;c=c|0;V(10,a|0,b|0,c|0)}function lH(a,b,c){a=a|0;b=b|0;c=c|0;V(11,a|0,b|0,c|0)}function mH(a,b,c){a=a|0;b=b|0;c=c|0;V(12,a|0,b|0,c|0)}function nH(a,b,c){a=a|0;b=b|0;c=c|0;V(13,a|0,b|0,c|0)}function oH(a,b,c){a=a|0;b=b|0;c=c|0;V(14,a|0,b|0,c|0)}function pH(a,b,c){a=a|0;b=b|0;c=c|0;V(15,a|0,b|0,c|0)}function qH(a,b,c){a=a|0;b=b|0;c=c|0;V(16,a|0,b|0,c|0)}function rH(a,b,c){a=a|0;b=b|0;c=c|0;V(17,a|0,b|0,c|0)}function sH(a,b,c){a=a|0;b=b|0;c=c|0;V(18,a|0,b|0,c|0)}function tH(a,b,c){a=a|0;b=b|0;c=c|0;V(19,a|0,b|0,c|0)}function uH(a,b,c){a=a|0;b=b|0;c=c|0;V(20,a|0,b|0,c|0)}function vH(a,b,c){a=a|0;b=b|0;c=c|0;V(21,a|0,b|0,c|0)}function wH(a,b,c){a=a|0;b=b|0;c=c|0;V(22,a|0,b|0,c|0)}function xH(a,b,c){a=a|0;b=b|0;c=c|0;V(23,a|0,b|0,c|0)}function yH(a,b,c){a=a|0;b=b|0;c=c|0;V(24,a|0,b|0,c|0)}function zH(a,b,c){a=a|0;b=b|0;c=c|0;V(25,a|0,b|0,c|0)}function AH(a,b,c){a=a|0;b=b|0;c=c|0;V(26,a|0,b|0,c|0)}function BH(a,b,c){a=a|0;b=b|0;c=c|0;V(27,a|0,b|0,c|0)}function CH(a,b,c){a=a|0;b=b|0;c=c|0;V(28,a|0,b|0,c|0)}function DH(a,b,c){a=a|0;b=b|0;c=c|0;V(29,a|0,b|0,c|0)}function EH(a,b,c){a=a|0;b=b|0;c=c|0;V(30,a|0,b|0,c|0)}function FH(a,b,c){a=a|0;b=b|0;c=c|0;V(31,a|0,b|0,c|0)}function GH(a,b,c){a=a|0;b=b|0;c=c|0;V(32,a|0,b|0,c|0)}function HH(a,b,c){a=a|0;b=b|0;c=c|0;V(33,a|0,b|0,c|0)}function IH(a,b,c){a=a|0;b=b|0;c=c|0;V(34,a|0,b|0,c|0)}function JH(a,b,c){a=a|0;b=b|0;c=c|0;V(35,a|0,b|0,c|0)}function KH(a,b,c){a=a|0;b=b|0;c=c|0;V(36,a|0,b|0,c|0)}function LH(a,b,c){a=a|0;b=b|0;c=c|0;V(37,a|0,b|0,c|0)}function MH(a,b,c){a=a|0;b=b|0;c=c|0;V(38,a|0,b|0,c|0)}function NH(a,b,c){a=a|0;b=b|0;c=c|0;V(39,a|0,b|0,c|0)}function OH(a,b,c){a=a|0;b=b|0;c=c|0;V(40,a|0,b|0,c|0)}function PH(a,b,c){a=a|0;b=b|0;c=c|0;V(41,a|0,b|0,c|0)}function QH(a,b,c){a=a|0;b=b|0;c=c|0;V(42,a|0,b|0,c|0)}function RH(a,b,c){a=a|0;b=b|0;c=c|0;V(43,a|0,b|0,c|0)}function SH(a,b,c){a=a|0;b=b|0;c=c|0;V(44,a|0,b|0,c|0)}function TH(a,b,c){a=a|0;b=b|0;c=c|0;V(45,a|0,b|0,c|0)}function UH(a,b,c){a=a|0;b=b|0;c=c|0;V(46,a|0,b|0,c|0)}function VH(a,b,c){a=a|0;b=b|0;c=c|0;V(47,a|0,b|0,c|0)}function WH(a,b,c){a=a|0;b=b|0;c=c|0;V(48,a|0,b|0,c|0)}function XH(a,b,c){a=a|0;b=b|0;c=c|0;V(49,a|0,b|0,c|0)}function YH(a,b,c){a=a|0;b=b|0;c=c|0;V(50,a|0,b|0,c|0)}function ZH(a,b,c){a=a|0;b=b|0;c=c|0;V(51,a|0,b|0,c|0)}function _H(a,b,c){a=a|0;b=b|0;c=c|0;V(52,a|0,b|0,c|0)}function $H(a,b,c){a=a|0;b=b|0;c=c|0;V(53,a|0,b|0,c|0)}function aI(a,b,c){a=a|0;b=b|0;c=c|0;V(54,a|0,b|0,c|0)}function bI(a,b,c){a=a|0;b=b|0;c=c|0;V(55,a|0,b|0,c|0)}function cI(a,b,c){a=a|0;b=b|0;c=c|0;V(56,a|0,b|0,c|0)}function dI(a,b,c){a=a|0;b=b|0;c=c|0;V(57,a|0,b|0,c|0)}function eI(a,b,c){a=a|0;b=b|0;c=c|0;V(58,a|0,b|0,c|0)}function fI(a,b,c){a=a|0;b=b|0;c=c|0;V(59,a|0,b|0,c|0)}function gI(a,b,c){a=a|0;b=b|0;c=c|0;V(60,a|0,b|0,c|0)}function hI(a,b,c){a=a|0;b=b|0;c=c|0;V(61,a|0,b|0,c|0)}function iI(a,b,c){a=a|0;b=b|0;c=c|0;V(62,a|0,b|0,c|0)}function jI(a,b,c){a=a|0;b=b|0;c=c|0;V(63,a|0,b|0,c|0)}function kI(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;db[a&127](b|0,c|0,d|0,e|0)}function lI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(0,a|0,b|0,c|0,d|0)}function mI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(1,a|0,b|0,c|0,d|0)}function nI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(2,a|0,b|0,c|0,d|0)}function oI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(3,a|0,b|0,c|0,d|0)}function pI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(4,a|0,b|0,c|0,d|0)}function qI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(5,a|0,b|0,c|0,d|0)}function rI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(6,a|0,b|0,c|0,d|0)}function sI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(7,a|0,b|0,c|0,d|0)}function tI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(8,a|0,b|0,c|0,d|0)}function uI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(9,a|0,b|0,c|0,d|0)}function vI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(10,a|0,b|0,c|0,d|0)}function wI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(11,a|0,b|0,c|0,d|0)}function xI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(12,a|0,b|0,c|0,d|0)}function yI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(13,a|0,b|0,c|0,d|0)}function zI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(14,a|0,b|0,c|0,d|0)}function AI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(15,a|0,b|0,c|0,d|0)}function BI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(16,a|0,b|0,c|0,d|0)}function CI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(17,a|0,b|0,c|0,d|0)}function DI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(18,a|0,b|0,c|0,d|0)}function EI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(19,a|0,b|0,c|0,d|0)}function FI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(20,a|0,b|0,c|0,d|0)}function GI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(21,a|0,b|0,c|0,d|0)}function HI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(22,a|0,b|0,c|0,d|0)}function II(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(23,a|0,b|0,c|0,d|0)}function JI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(24,a|0,b|0,c|0,d|0)}function KI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(25,a|0,b|0,c|0,d|0)}function LI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(26,a|0,b|0,c|0,d|0)}function MI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(27,a|0,b|0,c|0,d|0)}function NI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(28,a|0,b|0,c|0,d|0)}function OI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(29,a|0,b|0,c|0,d|0)}function PI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(30,a|0,b|0,c|0,d|0)}function QI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(31,a|0,b|0,c|0,d|0)}function RI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(32,a|0,b|0,c|0,d|0)}function SI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(33,a|0,b|0,c|0,d|0)}function TI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(34,a|0,b|0,c|0,d|0)}function UI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(35,a|0,b|0,c|0,d|0)}function VI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(36,a|0,b|0,c|0,d|0)}function WI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(37,a|0,b|0,c|0,d|0)}function XI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(38,a|0,b|0,c|0,d|0)}function YI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(39,a|0,b|0,c|0,d|0)}function ZI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(40,a|0,b|0,c|0,d|0)}function _I(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(41,a|0,b|0,c|0,d|0)}function $I(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(42,a|0,b|0,c|0,d|0)}function aJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(43,a|0,b|0,c|0,d|0)}function bJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(44,a|0,b|0,c|0,d|0)}function cJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(45,a|0,b|0,c|0,d|0)}function dJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(46,a|0,b|0,c|0,d|0)}function eJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(47,a|0,b|0,c|0,d|0)}function fJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(48,a|0,b|0,c|0,d|0)}function gJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(49,a|0,b|0,c|0,d|0)}function hJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(50,a|0,b|0,c|0,d|0)}function iJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(51,a|0,b|0,c|0,d|0)}function jJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(52,a|0,b|0,c|0,d|0)}function kJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(53,a|0,b|0,c|0,d|0)}function lJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(54,a|0,b|0,c|0,d|0)}function mJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(55,a|0,b|0,c|0,d|0)}function nJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(56,a|0,b|0,c|0,d|0)}function oJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(57,a|0,b|0,c|0,d|0)}function pJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(58,a|0,b|0,c|0,d|0)}function qJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(59,a|0,b|0,c|0,d|0)}function rJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(60,a|0,b|0,c|0,d|0)}function sJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(61,a|0,b|0,c|0,d|0)}function tJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(62,a|0,b|0,c|0,d|0)}function uJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(63,a|0,b|0,c|0,d|0)}function vJ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;eb[a&127](b|0,c|0,d|0,e|0,f|0,g|0)}function wJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(0,a|0,b|0,c|0,d|0,e|0,f|0)}function xJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(1,a|0,b|0,c|0,d|0,e|0,f|0)}function yJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(2,a|0,b|0,c|0,d|0,e|0,f|0)}function zJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(3,a|0,b|0,c|0,d|0,e|0,f|0)}function AJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(4,a|0,b|0,c|0,d|0,e|0,f|0)}function BJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(5,a|0,b|0,c|0,d|0,e|0,f|0)}function CJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(6,a|0,b|0,c|0,d|0,e|0,f|0)}function DJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(7,a|0,b|0,c|0,d|0,e|0,f|0)}function EJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(8,a|0,b|0,c|0,d|0,e|0,f|0)}function FJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(9,a|0,b|0,c|0,d|0,e|0,f|0)}function GJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(10,a|0,b|0,c|0,d|0,e|0,f|0)}function HJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(11,a|0,b|0,c|0,d|0,e|0,f|0)}function IJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(12,a|0,b|0,c|0,d|0,e|0,f|0)}function JJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(13,a|0,b|0,c|0,d|0,e|0,f|0)}function KJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(14,a|0,b|0,c|0,d|0,e|0,f|0)}function LJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(15,a|0,b|0,c|0,d|0,e|0,f|0)}function MJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(16,a|0,b|0,c|0,d|0,e|0,f|0)}function NJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(17,a|0,b|0,c|0,d|0,e|0,f|0)}function OJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(18,a|0,b|0,c|0,d|0,e|0,f|0)}function PJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(19,a|0,b|0,c|0,d|0,e|0,f|0)}function QJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(20,a|0,b|0,c|0,d|0,e|0,f|0)}function RJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(21,a|0,b|0,c|0,d|0,e|0,f|0)}function SJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(22,a|0,b|0,c|0,d|0,e|0,f|0)}function TJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(23,a|0,b|0,c|0,d|0,e|0,f|0)}function UJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(24,a|0,b|0,c|0,d|0,e|0,f|0)}function VJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(25,a|0,b|0,c|0,d|0,e|0,f|0)}function WJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(26,a|0,b|0,c|0,d|0,e|0,f|0)}function XJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(27,a|0,b|0,c|0,d|0,e|0,f|0)}function YJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(28,a|0,b|0,c|0,d|0,e|0,f|0)}function ZJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(29,a|0,b|0,c|0,d|0,e|0,f|0)}function _J(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(30,a|0,b|0,c|0,d|0,e|0,f|0)}function $J(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(31,a|0,b|0,c|0,d|0,e|0,f|0)}function aK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(32,a|0,b|0,c|0,d|0,e|0,f|0)}function bK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(33,a|0,b|0,c|0,d|0,e|0,f|0)}function cK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(34,a|0,b|0,c|0,d|0,e|0,f|0)}function dK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(35,a|0,b|0,c|0,d|0,e|0,f|0)}function eK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(36,a|0,b|0,c|0,d|0,e|0,f|0)}function fK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(37,a|0,b|0,c|0,d|0,e|0,f|0)}function gK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(38,a|0,b|0,c|0,d|0,e|0,f|0)}function hK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(39,a|0,b|0,c|0,d|0,e|0,f|0)}function iK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(40,a|0,b|0,c|0,d|0,e|0,f|0)}function jK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(41,a|0,b|0,c|0,d|0,e|0,f|0)}function kK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(42,a|0,b|0,c|0,d|0,e|0,f|0)}function lK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(43,a|0,b|0,c|0,d|0,e|0,f|0)}function mK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(44,a|0,b|0,c|0,d|0,e|0,f|0)}function nK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(45,a|0,b|0,c|0,d|0,e|0,f|0)}function oK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(46,a|0,b|0,c|0,d|0,e|0,f|0)}function pK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(47,a|0,b|0,c|0,d|0,e|0,f|0)}function qK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(48,a|0,b|0,c|0,d|0,e|0,f|0)}function rK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(49,a|0,b|0,c|0,d|0,e|0,f|0)}function sK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(50,a|0,b|0,c|0,d|0,e|0,f|0)}function tK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(51,a|0,b|0,c|0,d|0,e|0,f|0)}function uK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(52,a|0,b|0,c|0,d|0,e|0,f|0)}function vK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(53,a|0,b|0,c|0,d|0,e|0,f|0)}function wK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(54,a|0,b|0,c|0,d|0,e|0,f|0)}function xK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(55,a|0,b|0,c|0,d|0,e|0,f|0)}function yK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(56,a|0,b|0,c|0,d|0,e|0,f|0)}function zK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(57,a|0,b|0,c|0,d|0,e|0,f|0)}function AK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(58,a|0,b|0,c|0,d|0,e|0,f|0)}function BK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(59,a|0,b|0,c|0,d|0,e|0,f|0)}function CK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(60,a|0,b|0,c|0,d|0,e|0,f|0)}function DK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(61,a|0,b|0,c|0,d|0,e|0,f|0)}function EK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(62,a|0,b|0,c|0,d|0,e|0,f|0)}function FK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;X(63,a|0,b|0,c|0,d|0,e|0,f|0)}function GK(){J(0);return 0}function HK(a){a=a|0;J(1);return 0}function IK(a,b){a=a|0;b=b|0;J(2);return 0}function JK(a,b,c){a=a|0;b=b|0;c=c|0;J(3);return 0}function KK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;J(4);return 0}function LK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;J(5);return 0}function MK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;J(6);return 0}function NK(a){a=a|0;J(7)}function OK(a,b){a=a|0;b=b|0;J(8)}function PK(a,b,c){a=a|0;b=b|0;c=c|0;J(9)}function QK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;J(10)}function RK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;J(11)} -function aj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;do switch(b<<16>>16){case 240:case 228:case 227:case 195:{b=c[d>>2]|0;if(!b)return;pi(c[a>>2]|0,b,1);return}case 294:case 280:case 275:case 268:case 265:case 263:case 248:case 236:case 234:case 206:case 205:{b=c[d>>2]|0;if(!b)return;ni(c[a>>2]|0,b);return}case 293:case 264:case 262:case 254:case 250:case 242:case 241:case 237:case 235:case 232:case 220:case 219:case 210:{b=c[d>>2]|0;if(!b)return;ri(c[a>>2]|0,b);return}case 251:case 245:case 244:case 233:case 226:{qi(c[a>>2]|0,c[d>>2]|0);return}case 229:{i=c[a>>2]|0;h=c[d>>2]|0;if(!h)return;a:do if((c[h>>2]|0)>0){d=i+480|0;e=i+304|0;f=i+308|0;g=i+300|0;if(!i){a=0;while(1){b=c[h+8+(a<<4)+4>>2]|0;if(b|0)ri(0,b);b=c[h+8+(a<<4)+8>>2]|0;if(b|0)pi(0,b,1);b=c[h+8+(a<<4)>>2]|0;do if(b|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{j=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}while(0);a=a+1|0;if((a|0)>=(c[h>>2]|0))break a}}a=0;do{b=c[h+8+(a<<4)+4>>2]|0;if(b|0)ri(i,b);b=c[h+8+(a<<4)+8>>2]|0;if(b|0)pi(i,b,1);b=c[h+8+(a<<4)>>2]|0;do if(b|0){if(c[d>>2]|0){Xd(i,b);break}j=b;if((c[e>>2]|0)>>>0<=j>>>0?(c[f>>2]|0)>>>0>j>>>0:0){c[b>>2]=c[g>>2];c[g>>2]=b;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](b);break}else{j=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);break}}while(0);a=a+1|0}while((a|0)<(c[h>>2]|0))}while(0);if(i|0){if(c[i+480>>2]|0){Xd(i,h);return}j=h;if((c[i+304>>2]|0)>>>0<=j>>>0?(c[i+308>>2]|0)>>>0>j>>>0:0){j=i+300|0;c[h>>2]=c[j>>2];c[j>>2]=h;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);return}else{j=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-j;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);return}}case 289:case 239:{a=c[a>>2]|0;b=c[d>>2]|0;if(!b)return;do{j=b;b=c[b+32>>2]|0;oi(a,j)}while((b|0)!=0);return}case 256:case 252:case 249:{j=c[a>>2]|0;b=c[d>>2]|0;if(!b)return;i=b+4|0;a=c[b>>2]|0;b:do if((c[i>>2]|0)>0){e=j+480|0;f=j+304|0;g=j+308|0;h=j+300|0;if(!j){d=0;while(1){a=c[a+(d<<3)>>2]|0;do if(a|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](a);break}else{h=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);break}while(0);d=d+1|0;a=c[b>>2]|0;if((d|0)>=(c[i>>2]|0))break b}}d=0;do{a=c[a+(d<<3)>>2]|0;do if(a|0){if(c[e>>2]|0){Xd(j,a);break}k=a;if((c[f>>2]|0)>>>0<=k>>>0?(c[g>>2]|0)>>>0>k>>>0:0){c[a>>2]=c[h>>2];c[h>>2]=a;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);break}else{k=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);break}}while(0);d=d+1|0;a=c[b>>2]|0}while((d|0)<(c[i>>2]|0))}while(0);c:do if(a){do if(j|0){d=j+480|0;if(!(c[d>>2]|0)){e=a;if((c[j+304>>2]|0)>>>0>e>>>0)break;if((c[j+308>>2]|0)>>>0<=e>>>0)break;k=j+300|0;c[a>>2]=c[k>>2];c[k>>2]=a}else Xd(j,a);a=d;d=82;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);d=80;break}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);d=80;break}}else d=80;while(0);if((d|0)==80)if(j){a=j+480|0;d=82}if((d|0)==82){if(c[a>>2]|0){Xd(j,b);return}k=b;if((c[j+304>>2]|0)>>>0<=k>>>0?(c[j+308>>2]|0)>>>0>k>>>0:0){k=j+300|0;c[b>>2]=c[k>>2];c[k>>2]=b;return}}if(!b)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{k=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}case 292:case 291:case 290:case 258:{oi(c[a>>2]|0,c[d>>2]|0);return}case 276:case 271:{Xi(c[a>>2]|0,c[d>>2]|0);return}case 273:{j=c[a>>2]|0;b=c[d+4>>2]|0;if(!b)return;i=b+4|0;a=c[b>>2]|0;d:do if((c[i>>2]|0)>0){e=j+480|0;f=j+304|0;g=j+308|0;h=j+300|0;if(!j){d=0;while(1){a=c[a+(d<<3)>>2]|0;do if(a|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](a);break}else{k=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);break}while(0);d=d+1|0;a=c[b>>2]|0;if((d|0)>=(c[i>>2]|0))break d}}d=0;do{a=c[a+(d<<3)>>2]|0;do if(a|0){if(c[e>>2]|0){Xd(j,a);break}k=a;if((c[f>>2]|0)>>>0<=k>>>0?(c[g>>2]|0)>>>0>k>>>0:0){c[a>>2]=c[h>>2];c[h>>2]=a;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](a);break}else{k=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);break}}while(0);d=d+1|0;a=c[b>>2]|0}while((d|0)<(c[i>>2]|0))}while(0);e:do if(a){do if(j|0){d=j+480|0;if(!(c[d>>2]|0)){e=a;if((c[j+304>>2]|0)>>>0>e>>>0)break;if((c[j+308>>2]|0)>>>0<=e>>>0)break;k=j+300|0;c[a>>2]=c[k>>2];c[k>>2]=a}else Xd(j,a);a=d;d=126;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](a);d=124;break}else{d=Wa[c[29352>>2]&127](a)|0;c[14978]=(c[14978]|0)-d;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](a);d=124;break}}else d=124;while(0);if((d|0)==124)if(j){a=j+480|0;d=126}if((d|0)==126){if(c[a>>2]|0){Xd(j,b);return}k=b;if((c[j+304>>2]|0)>>>0<=k>>>0?(c[j+308>>2]|0)>>>0>k>>>0:0){k=j+300|0;c[b>>2]=c[k>>2];c[k>>2]=b;return}}if(!b)return;if(!(c[7324]|0)){ab[c[29344>>2]&127](b);return}else{k=Wa[c[29352>>2]&127](b)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](b);return}}case 298:case 297:case 296:{b=c[d+4>>2]|0;if(!b)return;ni(c[a>>2]|0,b);return}default:return}while(0)}function bj(f,g,h,i,j,k,l){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0;Q=Ra;Ra=Ra+96|0;J=Q+80|0;D=Q+72|0;G=Q+64|0;C=Q+56|0;z=Q+48|0;A=Q+40|0;v=Q+32|0;u=Q+24|0;s=Q+16|0;q=Q+8|0;p=Q;K=Q+84|0;P=c[f>>2]|0;H=P+165|0;n=(a[H>>0]|0)==0;do if(!n?(c[P+160>>2]|0)==1:0){h=a[P+164>>0]|0;q=h&255;h=h<<24>>24==1;p=h?34855:34585;h=h?19:14;a:do if(c[P+272>>2]|0){if(!(a[P+81>>0]|0))O=13}else{do if(!(0<0|(0==0?(e[P+276>>1]|0)>>>0>>0:0))){n=P+300|0;o=c[n>>2]|0;if(o|0){c[n>>2]=c[o>>2];O=P+284|0;c[O>>2]=(c[O>>2]|0)+1;O=14;break a}n=P+296|0;o=c[n>>2]|0;if(!o){n=P+292|0;break}else{c[n>>2]=c[o>>2];O=P+284|0;c[O>>2]=(c[O>>2]|0)+1;O=14;break a}}else n=P+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1;O=13}while(0);if((O|0)==13){o=_d(P,h,0)|0;O=14}if((O|0)==14?o|0:0){ew(o|0,p|0,h|0)|0;F=g;M=c[F+4>>2]|0;E=f+180|0;c[E>>2]=c[F>>2];c[E+4>>2]=M;E=o;M=q;break}O=g;P=c[O+4>>2]|0;f=f+180|0;c[f>>2]=c[O>>2];c[f+4>>2]=P;Ra=Q;return}else O=16;while(0);if((O|0)==16){r=h+4|0;if(c[r>>2]|0){if(!n){cd(f,39404,p);Ra=Q;return}n=wk(P,g)|0;if((n|0)<0){c[q>>2]=g;cd(f,39421,q);Ra=Q;return}}else{h=g;n=d[P+164>>0]|0}o=(i|0)!=0;if(o?(n|0)!=1&(c[r>>2]|0)!=0:0){cd(f,39278,s);Ra=Q;return}r=o?1:n;q=qj(P,h)|0;b:do if((d[f+200>>0]|0)>1){p=c[f>>2]|0;c:do if(!p){if(!(c[7324]|0)){n=Wa[c[29340>>2]&127](16)|0;O=49;break}n=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;p=59064;o=c[p>>2]|0;p=c[p+4>>2]|0;if((p|0)>0|(p|0)==0&o>>>0>0){M=c[14978]|0;F=Tv(o|0,p|0,n|0,((n|0)<0)<<31>>31|0)|0;E=L()|0;c[14768]=((E|0)<0|(E|0)==0&F>>>0<=M>>>0)&1}n=Wa[c[29340>>2]&127](n)|0;if(!n)break b;o=Wa[c[29352>>2]&127](n)|0;o=(c[14978]|0)+o|0;c[14978]=o;if(o>>>0>(c[14982]|0)>>>0)c[14982]=o;o=(c[14981]|0)+1|0;c[14981]=o;if(o>>>0>(c[14987]|0)>>>0)c[14987]=o}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0)break b}else{do if((e[p+276>>1]|0)>=16){o=p+300|0;n=c[o>>2]|0;if(n|0){c[o>>2]=c[n>>2];O=p+284|0;c[O>>2]=(c[O>>2]|0)+1;O=49;break c}o=p+296|0;n=c[o>>2]|0;if(!n){n=p+292|0;break}else{c[o>>2]=c[n>>2];O=p+284|0;c[O>>2]=(c[O>>2]|0)+1;O=49;break c}}else n=p+288|0;while(0);c[n>>2]=(c[n>>2]|0)+1}n=_d(p,16,0)|0;O=49}while(0);if((O|0)==49)if(!n)break;o=n+4|0;p=o;s=p+12|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(s|0));c[n>>2]=q;E=h;F=c[E+4>>2]|0;M=o;c[M>>2]=c[E>>2];c[M+4>>2]=F;M=f+272|0;c[n+12>>2]=c[M>>2];c[M>>2]=n}while(0);E=h;F=c[E+4>>2]|0;M=f+180|0;c[M>>2]=c[E>>2];c[M+4>>2]=F;if(!q){Ra=Q;return}else{E=q;g=h;M=r}}d:do if(!(vk(f,E)|0)){h=(a[P+164>>0]|0)==1?1:i;i=P+16|0;p=c[(c[i>>2]|0)+(M<<4)>>2]|0;n=(h|0)==1?34855:34585;o=c[f>>2]|0;do if(((a[o+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(t=c[o+312>>2]|0,t|0):0){n=$a[t&127](c[o+316>>2]|0,18,n,0,p,c[f+240>>2]|0)|0;if((n|0)==1){cd(f,39216,u);c[f+12>>2]=23;O=271;break d}if((n|2|0)==2)if(!n)break;else{O=271;break d}else{cd(f,39231,v);c[f+12>>2]=1;O=271;break d}}while(0);F=(k|0)==0;do if(((F?(w=d[39319+(h+(j<<1))>>0]|0,x=c[f>>2]|0,(a[x+165>>0]|0)==0):0)?(a[f+200>>0]|0)==0:0)?(y=c[x+312>>2]|0,y|0):0){n=$a[y&127](c[x+316>>2]|0,w,E,0,p,c[f+240>>2]|0)|0;if((n|0)==1){cd(f,39216,A);c[f+12>>2]=23;O=271;break d}if((n|2|0)==2)if(!n)break;else{O=271;break d}else{cd(f,39231,z);c[f+12>>2]=1;O=271;break d}}while(0);do if(!(a[f+200>>0]|0)){o=c[(c[i>>2]|0)+(M<<4)>>2]|0;p=c[f>>2]|0;e:do if(!(a[p+165>>0]|0)){h=f+4|0;q=p+24|0;r=(c[q>>2]&1|0)==0;s=p+16|0;A=c[(c[s>>2]|0)+12>>2]|0;a[p+78>>0]=a[A+77>>0]|0;if(!((b[A+78>>1]&1)==0?(m=eh(p,0,h,0)|0,(m|0)!=0):0))O=75;f:do if((O|0)==75){m=c[p+20>>2]|0;if((m|0)>1)do{n=m;m=m+-1|0;if((b[(c[(c[s>>2]|0)+(m<<4)+12>>2]|0)+78>>1]&1)==0?(B=eh(p,m,h,0)|0,B|0):0){m=B;break f}}while((n|0)>2);if(r)c[q>>2]=c[q>>2]&-2;if(!(a[p+89>>0]|0))break e;c[q>>2]=c[q>>2]|16;break e}while(0);c[f+12>>2]=m;O=f+36|0;c[O>>2]=(c[O>>2]|0)+1;O=270;break d}while(0);if(!(Sd(P,E,o)|0)){if(hi(P,E,o)|0){c[D>>2]=E;cd(f,39347,D);O=270;break d}if(P|0){O=119;break}if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](80)|0;O=141;break}m=Wa[c[29356>>2]&127](80)|0;if((c[14985]|0)>>>0<80)c[14985]=80;o=59064;n=c[o>>2]|0;o=c[o+4>>2]|0;if((o|0)>0|(o|0)==0&n>>>0>0){G=c[14978]|0;D=Tv(n|0,o|0,m|0,((m|0)<0)<<31>>31|0)|0;C=L()|0;c[14768]=((C|0)<0|(C|0)==0&D>>>0<=G>>>0)&1}m=Wa[c[29340>>2]&127](m)|0;if(!m){O=142;break}n=Wa[c[29352>>2]&127](m)|0;n=(c[14978]|0)+n|0;c[14978]=n;if(n>>>0>(c[14982]|0)>>>0)c[14982]=n;n=(c[14981]|0)+1|0;c[14981]=n;if(n>>>0<=(c[14987]|0)>>>0)break;c[14987]=n;break}if(!l){c[C>>2]=g;cd(f,39323,C);O=270;break d}p=c[f+116>>2]|0;p=(p|0)==0?f:p;m=p+84|0;n=c[m>>2]|0;o=1<>2]=n|o;if((M|0)!=1){O=270;break d}s=c[p>>2]|0;m=s+16|0;if(c[(c[m>>2]|0)+20>>2]|0){O=270;break d}if(a[p+199>>0]|0){O=270;break d}n=Pe(c[s>>2]|0,0,s,K,0,542)|0;if(n|0){cd(p,32157,G);c[p+12>>2]=n;O=270;break d}f=c[K>>2]|0;c[(c[m>>2]|0)+20>>2]=f;m=c[s+92>>2]|0;p=c[f+4>>2]|0;c[p+4>>2]=c[f>>2];if(!(b[p+22>>1]&2)){h=p+32|0;q=p+36|0;r=(c[h>>2]|0)-(c[q>>2]|0)|0;do if((m+-512|0)>>>0<65025?(m+-1&m|0)==0:0){c[h>>2]=m;o=p+80|0;m=c[o>>2]|0;if(!m)break;n=m+-4|0;c[o>>2]=n;m=n;do if((c[14816]|0)>>>0<=m>>>0)if((c[14817]|0)>>>0>m>>>0){c[14979]=(c[14979]|0)+-1;c[n>>2]=c[14819];c[14819]=n;f=(c[14820]|0)+1|0;c[14820]=f;c[14821]=(f|0)<(c[14815]|0)&1;break}else{m=Wa[c[29352>>2]&127](n)|0;O=103;break}else{m=Wa[c[29352>>2]&127](n)|0;O=103}while(0);do if((O|0)==103){c[14980]=(c[14980]|0)-m;if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{f=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[o>>2]=0}while(0);f=Se(c[p>>2]|0,h,r)|0;c[q>>2]=(c[h>>2]|0)-(r&65535);if((f|0)==7){m=s+81|0;do if(!(a[m>>0]|0)){if(a[s+82>>0]|0)break;a[m>>0]=1;if((c[s+180>>2]|0)>0)c[s+264>>2]=1;m=s+272|0;c[m>>2]=(c[m>>2]|0)+1;m=c[s+236>>2]|0;if(!m)break;c[m+12>>2]=7}while(0);O=270;break d}}O=270;break d}else O=119;while(0);g:do if((O|0)==119){if(c[P+272>>2]|0){if(a[P+81>>0]|0){O=142;break}}else{do if((e[P+276>>1]|0)>=80){n=P+300|0;m=c[n>>2]|0;if(m|0){c[n>>2]=c[m>>2];O=P+284|0;c[O>>2]=(c[O>>2]|0)+1;O=141;break g}n=P+296|0;m=c[n>>2]|0;if(!m){m=P+292|0;break}else{c[n>>2]=c[m>>2];O=P+284|0;c[O>>2]=(c[O>>2]|0)+1;O=141;break g}}else m=P+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1}m=_d(P,80,0)|0;O=141}while(0);if((O|0)==141)if(!m)O=142;if((O|0)==142){c[f+12>>2]=7;f=f+36|0;c[f>>2]=(c[f>>2]|0)+1;O=270;break}p=m+4|0;s=p+76|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(s|0));c[m>>2]=E;b[m+40>>1]=-1;n=c[(c[i>>2]|0)+(M<<4)+12>>2]|0;c[m+72>>2]=n;c[m+32>>2]=1;b[m+44>>1]=200;c[f+228>>2]=m;if((a[f+18>>0]|0)==0?(Bu(E,39382)|0)==0:0)c[n+72>>2]=m;if(a[H>>0]|0){Ra=Q;return}u=f+8|0;m=c[u>>2]|0;t=f+116|0;if(!m){o=c[f>>2]|0;if((c[t>>2]|0)==0?(b[o+76>>1]&8)==0:0)a[f+23>>0]=1;h:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))O=161;else{Ra=Q;return}else{do if((e[o+276>>1]|0)>=224){m=o+300|0;n=c[m>>2]|0;if(n|0){c[m>>2]=c[n>>2];H=o+284|0;c[H>>2]=(c[H>>2]|0)+1;break h}m=o+296|0;n=c[m>>2]|0;if(!n){m=o+292|0;break}else{c[m>>2]=c[n>>2];H=o+284|0;c[H>>2]=(c[H>>2]|0)+1;break h}}else m=o+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;O=161}while(0);if((O|0)==161)n=_d(o,224,0)|0;if(!n){Ra=Q;return}p=n+104|0;s=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(s|0));c[n>>2]=o;m=o+4|0;o=c[m>>2]|0;if(o|0)c[o+4>>2]=n;c[n+8>>2]=o;c[n+4>>2]=0;c[m>>2]=n;c[n+20>>2]=381479589;c[n+12>>2]=f;c[u>>2]=n;Di(n,61,0,1,0)|0;v=n}else v=m;s=c[t>>2]|0;s=(s|0)==0?f:s;m=s+84|0;n=c[m>>2]|0;g=1<>2]=n|g,(M|0)==1):0)?(N=c[s>>2]|0,I=N+16|0,(c[(c[I>>2]|0)+20>>2]|0)==0):0)?(a[s+199>>0]|0)==0:0){m=Pe(c[N>>2]|0,0,N,K,0,542)|0;if(m|0){cd(s,32157,J);c[s+12>>2]=m;break}K=c[K>>2]|0;c[(c[I>>2]|0)+20>>2]=K;m=c[N+92>>2]|0;p=c[K+4>>2]|0;c[p+4>>2]=c[K>>2];if(!(b[p+22>>1]&2)){h=p+32|0;q=p+36|0;r=(c[h>>2]|0)-(c[q>>2]|0)|0;do if((m+-512|0)>>>0<65025?(m+-1&m|0)==0:0){c[h>>2]=m;o=p+80|0;m=c[o>>2]|0;if(!m)break;n=m+-4|0;c[o>>2]=n;m=n;do if((c[14816]|0)>>>0<=m>>>0)if((c[14817]|0)>>>0>m>>>0){c[14979]=(c[14979]|0)+-1;c[n>>2]=c[14819];c[14819]=n;K=(c[14820]|0)+1|0;c[14820]=K;c[14821]=(K|0)<(c[14815]|0)&1;break}else{m=Wa[c[29352>>2]&127](n)|0;O=181;break}else{m=Wa[c[29352>>2]&127](n)|0;O=181}while(0);do if((O|0)==181){c[14980]=(c[14980]|0)-m;if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{K=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-K;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);c[o>>2]=0}while(0);K=Se(c[p>>2]|0,h,r)|0;c[q>>2]=(c[h>>2]|0)-(r&65535);if((K|0)==7){m=N+81|0;do if(!(a[m>>0]|0)){if(a[N+82>>0]|0)break;a[m>>0]=1;if((c[N+180>>2]|0)>0)c[N+264>>2]=1;m=N+272|0;c[m>>2]=(c[m>>2]|0)+1;m=c[N+236>>2]|0;if(!m)break;c[m+12>>2]=7}while(0);break}}}while(0);i=s+80|0;c[i>>2]=c[i>>2]|g;i=s+20|0;a[i>>0]=a[i>>0]|1;i=v+108|0;do if(!F){m=c[i>>2]|0;n=v+112|0;if((c[n>>2]|0)>(m|0)){c[i>>2]=m+1;p=c[v+104>>2]|0;a[p+(m*20|0)>>0]=-96;p=p+(m*20|0)+1|0;s=p+19|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(s|0));r=n;break}else{Di(v,160,0,0,0)|0;r=n;break}}else r=v+112|0;while(0);m=f+44|0;q=c[m>>2]|0;h=q+1|0;c[f+88>>2]=h;p=q+2|0;c[f+92>>2]=p;q=q+3|0;c[m>>2]=q;m=c[i>>2]|0;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;N=c[v+104>>2]|0;a[N+(m*20|0)>>0]=94;b[N+(m*20|0)+2>>1]=0;c[N+(m*20|0)+4>>2]=M;c[N+(m*20|0)+8>>2]=q;c[N+(m*20|0)+12>>2]=2;c[N+(m*20|0)+16>>2]=0;a[N+(m*20|0)+1>>0]=0}else Di(v,94,M,q,2)|0;N=v+152|0;c[N>>2]=c[N>>2]|g;if((M|0)!=1?a[(c[(c[(c[v>>2]|0)+16>>2]|0)+(M<<4)+4>>2]|0)+9>>0]|0:0){N=v+156|0;c[N>>2]=c[N>>2]|g}m=c[i>>2]|0;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;o=c[v+104>>2]|0;a[o+(m*20|0)>>0]=18;b[o+(m*20|0)+2>>1]=0;c[o+(m*20|0)+4>>2]=q;c[o+(m*20|0)+8>>2]=0;c[o+(m*20|0)+12>>2]=0;c[o+(m*20|0)+16>>2]=0;a[o+(m*20|0)+1>>0]=0;o=m}else o=Di(v,18,q,0,0)|0;m=(0==0?(c[P+32>>2]&2|0)==0:0)?4:1;n=c[i>>2]|0;if((c[r>>2]|0)>(n|0)){c[i>>2]=n+1;N=c[v+104>>2]|0;a[N+(n*20|0)>>0]=95;b[N+(n*20|0)+2>>1]=0;c[N+(n*20|0)+4>>2]=M;c[N+(n*20|0)+8>>2]=2;c[N+(n*20|0)+12>>2]=m;c[N+(n*20|0)+16>>2]=0;a[N+(n*20|0)+1>>0]=0}else Di(v,95,M,2,m)|0;m=d[P+78>>0]|0;n=c[i>>2]|0;if((c[r>>2]|0)>(n|0)){c[i>>2]=n+1;P=c[v+104>>2]|0;a[P+(n*20|0)>>0]=95;b[P+(n*20|0)+2>>1]=0;c[P+(n*20|0)+4>>2]=M;c[P+(n*20|0)+8>>2]=5;c[P+(n*20|0)+12>>2]=m;c[P+(n*20|0)+16>>2]=0;a[P+(n*20|0)+1>>0]=0}else Di(v,95,M,5,m)|0;m=c[i>>2]|0;if(!(a[(c[v>>2]|0)+81>>0]|0))n=(c[v+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else n=59308;c[n+8>>2]=m;n=(c[r>>2]|0)>(m|0);do if(k|j)if(n){c[i>>2]=m+1;P=c[v+104>>2]|0;a[P+(m*20|0)>>0]=70;b[P+(m*20|0)+2>>1]=0;c[P+(m*20|0)+4>>2]=0;c[P+(m*20|0)+8>>2]=p;c[P+(m*20|0)+12>>2]=0;c[P+(m*20|0)+16>>2]=0;a[P+(m*20|0)+1>>0]=0;break}else{Di(v,70,0,p,0)|0;break}else{if(n){c[i>>2]=m+1;P=c[v+104>>2]|0;a[P+(m*20|0)>>0]=-117;b[P+(m*20|0)+2>>1]=0;c[P+(m*20|0)+4>>2]=M;c[P+(m*20|0)+8>>2]=p;c[P+(m*20|0)+12>>2]=1;c[P+(m*20|0)+16>>2]=0;a[P+(m*20|0)+1>>0]=0}else m=Di(v,139,M,p,1)|0;c[f+128>>2]=m}while(0);o=c[u>>2]|0;i:do if(!o){n=c[f>>2]|0;do if(!(c[t>>2]|0)){if(b[n+76>>1]&8)break;a[f+23>>0]=1}while(0);j:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))O=238;else{o=0;break i}else{do if((e[n+276>>1]|0)>=224){m=n+300|0;o=c[m>>2]|0;if(o|0){c[m>>2]=c[o>>2];P=n+284|0;c[P>>2]=(c[P>>2]|0)+1;break j}m=n+296|0;o=c[m>>2]|0;if(!o){m=n+292|0;break}else{c[m>>2]=c[o>>2];P=n+284|0;c[P>>2]=(c[P>>2]|0)+1;break j}}else m=n+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;O=238}while(0);if((O|0)==238)o=_d(n,224,0)|0;if(!o){o=0;break}p=o+104|0;s=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(s|0));c[o>>2]=n;m=n+4|0;n=c[m>>2]|0;if(n|0)c[n+4>>2]=o;c[o+8>>2]=n;c[o+4>>2]=0;c[m>>2]=o;c[o+20>>2]=381479589;c[o+12>>2]=f;c[u>>2]=o;Di(o,61,0,1,0)|0}while(0);Hj(f,M,1,1,34585);n=o+108|0;m=c[n>>2]|0;if((c[o+112>>2]|0)>(m|0)){c[n>>2]=m+1;P=c[o+104>>2]|0;a[P+(m*20|0)>>0]=109;b[P+(m*20|0)+2>>1]=0;c[P+(m*20|0)+4>>2]=0;c[P+(m*20|0)+8>>2]=1;c[P+(m*20|0)+12>>2]=M;c[P+(m*20|0)+16>>2]=0;a[P+(m*20|0)+1>>0]=0}else m=Di(o,109,0,1,M)|0;if(!(a[(c[o>>2]|0)+81>>0]|0)){P=c[o+104>>2]|0;a[P+(m*20|0)+1>>0]=-3;c[P+(m*20|0)+16>>2]=5}m=f+40|0;if(!(c[m>>2]|0))c[m>>2]=1;m=c[i>>2]|0;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;f=c[v+104>>2]|0;a[f+(m*20|0)>>0]=121;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=0;c[f+(m*20|0)+8>>2]=h;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(v,121,0,h,0)|0;m=c[i>>2]|0;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;f=c[v+104>>2]|0;a[f+(m*20|0)>>0]=75;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=6;c[f+(m*20|0)+8>>2]=q;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else m=Di(v,75,6,q,0)|0;do if(!(a[(c[v>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[i>>2]|0)+-1|0;n=c[v+104>>2]|0;o=n+(m*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(m*20|0)+16>>2]=39398;a[o>>0]=-1;break}else{Ei(v,n+(m*20|0)|0,39398,-1);break}}while(0);m=c[i>>2]|0;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;f=c[v+104>>2]|0;a[f+(m*20|0)>>0]=122;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=0;c[f+(m*20|0)+8>>2]=q;c[f+(m*20|0)+12>>2]=h;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(v,122,0,q,h)|0;m=c[i>>2]|0;if((m|0)>0)b[(c[v+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=8;if((c[r>>2]|0)>(m|0)){c[i>>2]=m+1;p=c[v+104>>2]|0;a[p+(m*20|0)>>0]=117;p=p+(m*20|0)+1|0;s=p+19|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(s|0));Ra=Q;return}else{Di(v,117,0,0,0)|0;Ra=Q;return}}else O=270;while(0);if((O|0)==270?P|0:0)O=271;if((O|0)==271){if(c[P+480>>2]|0){Xd(P,E);Ra=Q;return}f=E;if((c[P+304>>2]|0)>>>0<=f>>>0?(c[P+308>>2]|0)>>>0>f>>>0:0){f=P+300|0;c[E>>2]=c[f>>2];c[f>>2]=E;Ra=Q;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](E);Ra=Q;return}else{f=Wa[c[29352>>2]&127](E)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](E);Ra=Q;return}}function cj(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;da=Ra;Ra=Ra+272|0;$=da+192|0;_=da+184|0;Y=da+152|0;R=da+136|0;X=da+128|0;W=da+120|0;T=da+112|0;P=da+104|0;w=da+96|0;v=da+88|0;u=da+80|0;S=da+232|0;N=da;O=da+200|0;ba=c[f>>2]|0;Q=(j|0)==0;if((h|0)==0&Q){Ra=da;return}aa=f+228|0;ca=c[aa>>2]|0;if(!ca){Ra=da;return}if(((Q?(k=c[ca>>2]|0,r=Ru(k,95)|0,r|0):0)?(a[r>>0]=0,l=Sd(ba,k,0)|0,a[r>>0]=95,l|0):0)?c[l+56>>2]|0:0){q=c[c[l+60>>2]>>2]|0;n=c[ba+348>>2]|0;if(!n){l=ba+340|0;k=ba+344|0}else{l=a[q>>0]|0;if(!(l<<24>>24))k=0;else{k=0;m=q;do{m=m+1|0;k=G(k+(d[208+(l&255)>>0]|0)|0,-1640531535)|0;l=a[m>>0]|0}while(l<<24>>24!=0)}k=(k>>>0)%((c[ba+336>>2]|0)>>>0)|0;l=n+(k<<3)|0;k=n+(k<<3)+4|0}l=c[l>>2]|0;a:do if(!l)k=59292;else{p=d[208+(d[q>>0]|0)>>0]|0;while(1){k=c[k>>2]|0;l=l+-1|0;n=c[k+12>>2]|0;V=a[n>>0]|0;m=(d[208+(V&255)>>0]|0)-p|0;if(!(V<<24>>24==0|(m|0)!=0)){o=q;do{n=n+1|0;o=o+1|0;V=a[n>>0]|0;m=(d[208+(V&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(V<<24>>24==0|(m|0)!=0))}if(!m)break a;if(!l){k=59292;break}}}while(0);k=c[k+8>>2]|0;if(((k|0?(s=c[k>>2]|0,(c[s>>2]|0)>=3):0)?(t=c[s+92>>2]|0,t|0):0)?Wa[t&127](r+1|0)|0:0){V=ca+36|0;c[V>>2]=c[V>>2]|1024}}V=ba+165|0;do if(a[V>>0]|0)if(Q){M=c[ba+160>>2]|0;c[ca+28>>2]=M;if((M|0)!=1)break;M=ca+36|0;c[M>>2]=c[M>>2]|1;break}else{cd(f,59952,u);Ra=da;return}while(0);b:do if(i&32){k=ca+36|0;l=c[k>>2]|0;if(l&8|0){cd(f,39491,v);Ra=da;return}if(!(l&4)){c[w>>2]=c[ca>>2];cd(f,39541,w);break}c[k>>2]=l|96;M=c[f>>2]|0;v=c[f+8>>2]|0;u=M+166|0;if((a[u>>0]&2)==0?(x=b[ca+42>>1]|0,x<<16>>16>0):0){m=c[ca+4>>2]|0;l=x<<16>>16;k=0;do{if(a[m+(k<<4)+15>>0]&1)a[m+(k<<4)+12>>0]=2;k=k+1|0}while((k|0)!=(l|0))}k=c[f+128>>2]|0;if(k|0){if((k|0)<0)k=(c[v+108>>2]|0)+-1|0;if(!(a[(c[v>>2]|0)+81>>0]|0))k=(c[v+104>>2]|0)+(k*20|0)|0;else k=59308;c[k+12>>2]=2}l=ca+40|0;k=b[l>>1]|0;do if(k<<16>>16>-1){k=c[(c[ca+4>>2]|0)+(k<<16>>16<<4)>>2]|0;c[S>>2]=k;if(!k)k=0;else k=(Eu(k)|0)&1073741823;c[S+4>>2]=k;k=oj(M,59,S,0)|0;k=nj(c[f>>2]|0,0,k)|0;if((k|0?(a[k+16>>0]=a[f+198>>0]|0,hj(f,0,0,0,k,d[ca+48>>0]|0,0,0,0,0,2),(a[M+81>>0]|0)==0):0)?(c[f+36>>2]|0)==0:0){k=c[ca+8>>2]|0;c:do if(!k)k=0;else while(1){K=k+55|0;if(((d[K>>0]|d[K+1>>0]<<8)&3)==2)break c;k=c[k+20>>2]|0;if(!k){k=0;break}}while(0);b[l>>1]=-1;K=k;break}break b}else{k=c[ca+8>>2]|0;d:do if(!k)k=0;else while(1){K=k+55|0;if(((d[K>>0]|d[K+1>>0]<<8)&3)==2)break d;k=c[k+20>>2]|0;if(!k){k=0;break}}while(0);t=k+50|0;m=b[t>>1]|0;if((m&65535)>1){r=c[k+4>>2]|0;s=k+52|0;l=1;q=1;do{p=b[r+(q<<1)>>1]|0;e:do if((l|0)>0){n=r;o=l;while(1){if((b[n>>1]|0)==p<<16>>16)break;if((o|0)>1){n=n+2|0;o=o+-1|0}else{U=70;break e}}b[s>>1]=(b[s>>1]|0)+-1<<16>>16}else U=70;while(0);if((U|0)==70){U=0;b[r+(l<<1)>>1]=p;l=l+1|0;m=b[t>>1]|0}q=q+1|0}while(q>>>0<(m&65535)>>>0)}else l=1;b[t>>1]=l;K=k}while(0);I=K+55|0;k=d[I>>0]|d[I+1>>0]<<8;J=k|32;a[I>>0]=J;a[I+1>>0]=J>>8;if(!(a[u>>0]&2)){J=k|40;a[I>>0]=J;a[I+1>>0]=J>>8}m=b[K+50>>1]|0;J=m&65535;l=K+44|0;if(v|0?(y=c[l>>2]|0,(y|0)>0):0){if(!(a[(c[v>>2]|0)+81>>0]|0))k=(c[v+104>>2]|0)+(y*20|0)|0;else k=59308;a[k>>0]=11}c[l>>2]=c[ca+28>>2];k=c[ca+8>>2]|0;if(k|0){w=m<<16>>16==0;x=K+4|0;y=M+272|0;z=K+32|0;A=M+276|0;B=M+81|0;C=M+288|0;D=M+300|0;E=M+296|0;F=M+284|0;H=M+292|0;do{u=k+55|0;f:do if(((d[u>>0]|d[u+1>>0]<<8)&3)!=2){v=k+50|0;l=b[v>>1]|0;do if(!w){s=c[x>>2]|0;t=l&65535;if(!(l<<16>>16)){m=J;n=0}else{r=c[k+4>>2]|0;m=0;q=0;do{p=b[s+(q<<1)>>1]|0;n=r;o=t;while(1){if((b[n>>1]|0)==p<<16>>16)break;if((o|0)>1){n=n+2|0;o=o+-1|0}else{U=89;break}}if((U|0)==89){U=0;m=m+1|0}q=q+1|0}while((q|0)!=(J|0));n=l}if(!m){l=n;break}o=m+(n&65535)|0;p=k+52|0;if((o|0)>(e[p>>1]|0)){n=o*7|0;m=((n|0)<0)<<31>>31;g:do if(c[y>>2]|0)if(!(a[B>>0]|0))U=103;else break b;else{do if(0>>0|(0==(m|0)?(e[A>>1]|0)>>>0>>0:0))l=C;else{l=c[D>>2]|0;if(l|0){c[D>>2]=c[l>>2];c[F>>2]=(c[F>>2]|0)+1;break g}l=c[E>>2]|0;if(!l){l=H;break}c[E>>2]=c[l>>2];c[F>>2]=(c[F>>2]|0)+1;break g}while(0);c[l>>2]=(c[l>>2]|0)+1;U=103}while(0);if((U|0)==103){U=0;l=_d(M,n,m)|0}if(!l)break b;gw(l|0,0,n|0)|0;s=k+32|0;ew(l|0,c[s>>2]|0,e[p>>1]<<2|0)|0;c[s>>2]=l;m=l+(o<<2)|0;r=k+4|0;ew(m|0,c[r>>2]|0,e[p>>1]<<1|0)|0;c[r>>2]=m;m=m+(o<<1)|0;l=k+28|0;ew(m|0,c[l>>2]|0,e[p>>1]|0)|0;c[l>>2]=m;b[p>>1]=o;l=d[u>>0]|d[u+1>>0]<<8|16;a[u>>0]=l;a[u+1>>0]=l>>8;l=b[v>>1]|0;m=l&65535}else{m=t;r=k+4|0;s=k+32|0}n=0;while(1){p=c[r>>2]|0;q=b[(c[x>>2]|0)+(n<<1)>>1]|0;h:do if(!(l<<16>>16))U=111;else{o=p;l=l&65535;while(1){if((b[o>>1]|0)==q<<16>>16){l=m;break h}if((l|0)>1){o=o+2|0;l=l+-1|0}else{U=111;break}}}while(0);if((U|0)==111){U=0;b[p+(m<<1)>>1]=q;c[(c[s>>2]|0)+(m<<2)>>2]=c[(c[z>>2]|0)+(n<<2)>>2];l=m+1|0}n=n+1|0;if((n|0)==(J|0))break f;m=l;l=b[v>>1]|0}}while(0);b[k+52>>1]=l}while(0);k=c[k+20>>2]|0}while((k|0)!=0)}s=ca+42|0;l=b[s>>1]|0;p=l<<16>>16;t=K+52|0;if((J|0)<(p|0)){k=b[t>>1]|0;if((k&65535|0)<(p|0)){o=p*7|0;n=((o|0)<0)<<31>>31;i:do if(!M){M=Sv(o|0,n|0,-1,-1)|0;H=L()|0;if(H>>>0>0|(H|0)==0&M>>>0>2147483390)break b;if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](o)|0;U=141;break}k=Wa[c[29356>>2]&127](o)|0;if((c[14985]|0)>>>0>>0)c[14985]=o;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){M=c[14978]|0;H=Tv(m|0,n|0,k|0,((k|0)<0)<<31>>31|0)|0;F=L()|0;c[14768]=((F|0)<0|(F|0)==0&H>>>0<=M>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break b;m=Wa[c[29352>>2]&127](k)|0;m=(c[14978]|0)+m|0;c[14978]=m;if(m>>>0>(c[14982]|0)>>>0)c[14982]=m;m=(c[14981]|0)+1|0;c[14981]=m;if(m>>>0<=(c[14987]|0)>>>0)break;c[14987]=m}else{if(c[M+272>>2]|0){if(a[M+81>>0]|0)break b}else{do if(!(0>>0|(0==(n|0)?(e[M+276>>1]|0)>>>0>>0:0))){m=M+300|0;k=c[m>>2]|0;if(k|0){c[m>>2]=c[k>>2];U=M+284|0;c[U>>2]=(c[U>>2]|0)+1;U=141;break i}m=M+296|0;k=c[m>>2]|0;if(!k){k=M+292|0;break}else{c[m>>2]=c[k>>2];U=M+284|0;c[U>>2]=(c[U>>2]|0)+1;U=141;break i}}else k=M+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(M,o,n)|0;U=141}while(0);if((U|0)==141)if(!k)break;gw(k|0,0,o|0)|0;M=K+32|0;ew(k|0,c[M>>2]|0,e[t>>1]<<2|0)|0;c[M>>2]=k;M=k+(p<<2)|0;k=K+4|0;ew(M|0,c[k>>2]|0,e[t>>1]<<1|0)|0;c[k>>2]=M;M=M+(p<<1)|0;k=K+28|0;ew(M|0,c[k>>2]|0,e[t>>1]|0)|0;c[k>>2]=M;b[t>>1]=l;k=d[I>>0]|d[I+1>>0]<<8|16;a[I>>0]=k;a[I+1>>0]=k>>8;k=l;l=b[s>>1]|0}if(l<<16>>16>0){q=K+4|0;r=K+32|0;p=0;k=J;do{o=c[q>>2]|0;j:do if((k|0)>0){m=o;n=k;while(1){if((p|0)==(b[m>>1]|0))break j;if((n|0)>1){m=m+2|0;n=n+-1|0}else{U=149;break}}}else U=149;while(0);if((U|0)==149){U=0;b[o+(k<<1)>>1]=p;c[(c[r>>2]|0)+(k<<2)>>2]=34049;k=k+1|0;l=b[s>>1]|0}p=p+1|0}while((p|0)<(l<<16>>16|0));k=b[t>>1]|0}}else{b[t>>1]=l;k=l}if(!(k<<16>>16)){l=-1;k=-1}else{m=c[K+4>>2]|0;k=k&65535;l=0;n=0;do{M=k;k=k+-1|0;H=b[m+(k<<1)>>1]|0;I=(H&65535)<63;H=cw(1,0,H<<16>>16|0)|0;J=L()|0;l=(I?H:0)|l;n=(I?J:0)|n}while((M|0)>1);l=~l;k=~n}M=K+64|0;c[M>>2]=l;c[M+4>>2]=k}while(0);F=ca+72|0;l=c[F>>2]|0;if(!l)E=-1e6;else{m=c[ba+16>>2]|0;k=0;while(1)if((c[m+(k<<4)+12>>2]|0)==(l|0)){E=k;break}else k=k+1|0}w=c[ca+24>>2]|0;if(w|0){k=O+8|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;k=N;n=k+80|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(n|0));c[N>>2]=1;c[N+16>>2]=c[ca>>2];c[N+24>>2]=ca;c[N+48>>2]=-1;c[O>>2]=f;c[O+4>>2]=N;q=O+24|0;b[q>>1]=4;k:do if((c[w>>2]|0)>0){r=S+4|0;s=S+8|0;t=S+12|0;u=S+24|0;v=O+20|0;p=0;k=4;while(1){o=c[w+4+(p*20|0)>>2]|0;if(o){m=k&65535;b[q>>1]=m&28655;k=c[O>>2]|0;c[S>>2]=k;c[r>>2]=125;c[s>>2]=126;c[t>>2]=0;c[u>>2]=O;n=o+24|0;l=k;M=l+208|0;N=(c[M>>2]|0)+(c[n>>2]|0)|0;c[M>>2]=N;l=c[(c[l>>2]|0)+120>>2]|0;if((l|0)<(N|0)){U=168;break}_j(S,o)|0;l=c[S>>2]|0;k=l+208|0;c[k>>2]=(c[k>>2]|0)-(c[n>>2]|0);k=b[q>>1]|0;N=o+4|0;c[N>>2]=c[N>>2]|k&-32752&65535;k=(m&36880|k&65535)&65535;b[q>>1]=k;if((c[v>>2]|0)>0)break;if((c[l+36>>2]|0)>=1)break k}p=p+1|0;if((p|0)>=(c[w>>2]|0))break k}if((U|0)==168){c[P>>2]=l;cd(k,41637,P)}}while(0)}D=ca+42|0;l=b[D>>1]|0;if(l<<16>>16>0){m=c[ca+4>>2]|0;k=0;l=l<<16>>16;while(1){k=k+(d[m+14>>0]|0)|0;if((l|0)>1){m=m+16|0;l=l+-1|0}else break}}else k=0;k=k+((e[ca+40>>1]|0)>>>15&65535)<<2;if(k>>>0<8)if(!k)k=0;else{m=40;l=0;do{m=(m&65535)+65526|0;k=cw(k|0,l|0,1)|0;l=L()|0}while(l>>>0<0|(l|0)==0&k>>>0<8);m=m&65535;U=189}else{if(k>>>0>255){m=40;l=0;do{m=(m&65535)+40|0;U=k;k=bw(k|0,l|0,4)|0;P=l;l=L()|0}while(P>>>0>0|(P|0)==0&U>>>0>4095);m=m&65535}else{m=40;l=0}if(l>>>0>0|(l|0)==0&k>>>0>15){do{m=(m&65535)+10&65535;U=k;k=bw(k|0,l|0,1)|0;P=l;l=L()|0}while(P>>>0>0|(P|0)==0&U>>>0>31);U=189}else U=189}if((U|0)==189)k=(m&65535)+65526+(e[3648+((k&7)<<1)>>1]|0)&65535;b[ca+46>>1]=k;k=c[ca+8>>2]|0;if(k|0)do{xk(k);k=c[k+20>>2]|0}while((k|0)!=0);if(!(a[V>>0]|0)){C=f+8|0;k=c[C>>2]|0;if(!k){m=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[f+23>>0]=1;l:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))U=209;else{Ra=da;return}else{do if((e[m+276>>1]|0)>=224){k=m+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];P=m+284|0;c[P>>2]=(c[P>>2]|0)+1;break l}k=m+296|0;l=c[k>>2]|0;if(!l){k=m+292|0;break}else{c[k>>2]=c[l>>2];P=m+284|0;c[P>>2]=(c[P>>2]|0)+1;break l}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;U=209}while(0);if((U|0)==209)l=_d(m,224,0)|0;if(!l){Ra=da;return}k=l+104|0;n=k+120|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(n|0));c[l>>2]=m;k=m+4|0;m=c[k>>2]|0;if(m|0)c[m+4>>2]=l;c[l+8>>2]=m;c[l+4>>2]=0;c[k>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=f;c[C>>2]=l;Di(l,61,0,1,0)|0;B=l}else B=k;u=B+108|0;k=c[u>>2]|0;v=B+112|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;n=c[B+104>>2]|0;a[n+(k*20|0)>>0]=117;k=n+(k*20|0)+1|0;n=k+19|0;do{a[k>>0]=0;k=k+1|0}while((k|0)<(n|0))}else Di(B,117,0,0,0)|0;A=(c[ca+12>>2]|0)==0;n=A?39573:39584;A=A?37991:39579;m:do if(Q){l=i<<24>>24==0?h:f+188|0;X=c[l>>2]|0;m=c[f+180>>2]|0;k=X-m|0;if((a[X>>0]|0)!=59)k=(c[l+4>>2]|0)+k|0;c[R>>2]=n;c[R+4>>2]=k;c[R+8>>2]=m;m=dd(ba,39589,R)|0;l=f+92|0;k=ca}else{l=f+44|0;t=c[l>>2]|0;p=t+1|0;s=t+2|0;t=t+3|0;c[l>>2]=t;l=c[f+116>>2]|0;a[((l|0)==0?f:l)+21>>0]=1;l=f+92|0;k=c[l>>2]|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;R=c[B+104>>2]|0;a[R+(m*20|0)>>0]=109;b[R+(m*20|0)+2>>1]=0;c[R+(m*20|0)+4>>2]=1;c[R+(m*20|0)+8>>2]=k;c[R+(m*20|0)+12>>2]=E;c[R+(m*20|0)+16>>2]=0;a[R+(m*20|0)+1>>0]=0}else Di(B,109,1,k,E)|0;o=c[u>>2]|0;if((o|0)>0)b[(c[B+104>>2]|0)+((o+-1|0)*20|0)+2>>1]=16;c[f+40>>2]=2;k=o+1|0;if((c[v>>2]|0)>(o|0)){c[u>>2]=k;R=c[B+104>>2]|0;a[R+(o*20|0)>>0]=13;b[R+(o*20|0)+2>>1]=0;c[R+(o*20|0)+4>>2]=p;c[R+(o*20|0)+8>>2]=0;c[R+(o*20|0)+12>>2]=k;c[R+(o*20|0)+16>>2]=0;a[R+(o*20|0)+1>>0]=0}else Di(B,13,p,0,k)|0;m=f+36|0;do if(!(c[m>>2]|0)){k=yk(f,j)|0;if(!k)break;i=k+42|0;b[D>>1]=b[i>>1]|0;R=k+4|0;w=ca+4|0;c[w>>2]=c[R>>2];b[i>>1]=0;c[R>>2]=0;do if(!(c[ba+480>>2]|0)){i=k+32|0;R=(c[i>>2]|0)+-1|0;c[i>>2]=R;if(R|0)break;Vi(ba,k)}else Vi(ba,k);while(0);a[S>>0]=13;n=S+4|0;c[n>>2]=p;c[S+16>>2]=0;q=S+8|0;c[q>>2]=0;r=S+12|0;c[r>>2]=0;kj(f,j,S)|0;if(c[m>>2]|0)break;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;S=c[B+104>>2]|0;a[S+(k*20|0)>>0]=67;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=p;c[S+(k*20|0)+8>>2]=0;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(B,67,p,0,0)|0;m=c[B+12>>2]|0;a[m+19>>0]=0;c[m+28>>2]=0;m=c[u>>2]|0;if(!(a[(c[B>>2]|0)+81>>0]|0))k=(c[B+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else k=59308;c[k+8>>2]=m;k=c[n>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;o=c[B+104>>2]|0;a[o+(m*20|0)>>0]=14;b[o+(m*20|0)+2>>1]=0;c[o+(m*20|0)+4>>2]=k;c[o+(m*20|0)+8>>2]=0;c[o+(m*20|0)+12>>2]=0;c[o+(m*20|0)+16>>2]=0;a[o+(m*20|0)+1>>0]=0;o=m}else o=Di(B,14,k,0,0)|0;n=c[q>>2]|0;k=c[r>>2]|0;m=c[u>>2]|0;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;S=c[B+104>>2]|0;a[S+(m*20|0)>>0]=92;b[S+(m*20|0)+2>>1]=0;c[S+(m*20|0)+4>>2]=n;c[S+(m*20|0)+8>>2]=k;c[S+(m*20|0)+12>>2]=s;c[S+(m*20|0)+16>>2]=0;a[S+(m*20|0)+1>>0]=0}else Di(B,92,n,k,s)|0;zk(B,ca,0);k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;S=c[B+104>>2]|0;a[S+(k*20|0)>>0]=121;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=1;c[S+(k*20|0)+8>>2]=t;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(B,121,1,t,0)|0;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;S=c[B+104>>2]|0;a[S+(k*20|0)>>0]=122;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=1;c[S+(k*20|0)+8>>2]=s;c[S+(k*20|0)+12>>2]=t;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(B,122,1,s,t)|0;k=c[u>>2]|0;if((c[v>>2]|0)>(k|0)){c[u>>2]=k+1;S=c[B+104>>2]|0;a[S+(k*20|0)>>0]=11;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=0;c[S+(k*20|0)+8>>2]=o;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(B,11,0,o,0)|0;m=c[u>>2]|0;if(!(a[(c[B>>2]|0)+81>>0]|0))k=(c[B+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else k=59308;c[k+8>>2]=m;if((c[v>>2]|0)>(m|0)){c[u>>2]=m+1;S=c[B+104>>2]|0;a[S+(m*20|0)>>0]=117;b[S+(m*20|0)+2>>1]=0;c[S+(m*20|0)+4>>2]=1;c[S+(m*20|0)+8>>2]=0;c[S+(m*20|0)+12>>2]=0;c[S+(m*20|0)+16>>2]=0;a[S+(m*20|0)+1>>0]=0}else Di(B,117,1,0,0)|0;S=b[D>>1]|0;r=S<<16>>16;if(S<<16>>16>0){o=0;p=c[w>>2]|0;k=0;while(1){m=0;n=c[p>>2]|0;n:while(1){switch(a[n>>0]|0){case 0:break n;case 34:{m=m+1|0;break}default:{}}m=m+1|0;n=n+1|0}k=k+7+m|0;o=o+1|0;if((o|0)==(r|0)){n=k;break}else p=p+16|0}}else n=0;k=0;m=c[ca>>2]|0;o:while(1){switch(a[m>>0]|0){case 0:break o;case 34:{k=k+1|0;break}default:{}}k=k+1|0;m=m+1|0}x=n+2+k|0;z=(x|0)<50;q=z?59952:41687;y=z?41685:41691;z=z?34066:41696;x=(r*6|0)+35+x|0;S=Sv(x|0,((x|0)<0)<<31>>31|0,-1,-1)|0;j=L()|0;p:do if(!(j>>>0>0|(j|0)==0&S>>>0>2147483390)){do if(!(c[7324]|0)){m=Wa[c[29340>>2]&127](x)|0;if(!m)break p}else{k=Wa[c[29356>>2]&127](x)|0;if((c[14985]|0)>>>0>>0)c[14985]=x;n=59064;m=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)>0|(n|0)==0&m>>>0>0){S=c[14978]|0;j=Tv(m|0,n|0,k|0,((k|0)<0)<<31>>31|0)|0;R=L()|0;c[14768]=((R|0)<0|(R|0)==0&j>>>0<=S>>>0)&1}m=Wa[c[29340>>2]&127](k)|0;if(!m)break p;k=Wa[c[29352>>2]&127](m)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0<=(c[14987]|0)>>>0)break;c[14987]=k}while(0);Cb(x,m,41699,T)|0;k=(Eu(m)|0)&1073741823;u=c[ca>>2]|0;t=a[u>>0]|0;q:do if(!(t<<24>>24)){n=0;s=0}else{n=0;o=t;while(1){if(!(o<<24>>24==95?1:(a[880+(o&255)>>0]&6)!=0)){s=1;break q}n=n+1|0;o=a[u+n>>0]|0;if(!(o<<24>>24)){s=0;break}}}while(0);o=t&255;r:do if((o+-48|0)>>>0>=10){do if((n|0)>1){o=a[3952+((d[208+o>>0]<<2^n^(d[208+(d[u+(n+-1)>>0]|0)>>0]|0)*3|0)%127|0)>>0]|0;if(!(o<<24>>24))break;o=o&255;while(1){p=o+-1|0;s:do if((n|0)==(d[2064+p>>0]|0)){r=1136+(e[1776+(p<<1)>>1]|0)|0;o=0;while(1){if((a[u+o>>0]&-33)<<24>>24!=(a[r+o>>0]|0))break s;o=o+1|0;if((o|0)>=(n|0)){U=302;break r}}}while(0);o=a[4224+p>>0]|0;if(!(o<<24>>24))break;else o=o&255}}while(0);if(!((n|0)==0|s)){p=t;t=0}else U=302}else U=302;while(0);if((U|0)==302){a[m+k>>0]=34;k=k+1|0;p=a[u>>0]|0;t=1}n=k+1|0;o=m+k|0;if(p<<24>>24){s=0;r=u;do{a[o>>0]=p;if((a[r>>0]|0)==34){a[m+n>>0]=34;k=k+2|0}else k=n;s=s+1|0;r=u+s|0;p=a[r>>0]|0;n=k+1|0;o=m+k|0}while(p<<24>>24!=0)}if(t){a[o>>0]=34;k=n}o=k+1|0;a[m+k>>0]=40;k=x-o|0;n=m+o|0;if((b[D>>1]|0)>0){p=0;v=c[w>>2]|0;while(1){Cb(k,n,q,W)|0;k=((Eu(n)|0)&1073741823)+o|0;u=c[v>>2]|0;t=a[u>>0]|0;t:do if(!(t<<24>>24)){n=0;s=0}else{n=0;o=t;while(1){if(!(o<<24>>24==95?1:(a[880+(o&255)>>0]&6)!=0)){s=1;break t}n=n+1|0;o=a[u+n>>0]|0;if(!(o<<24>>24)){s=0;break}}}while(0);o=t&255;u:do if((o+-48|0)>>>0>=10){do if((n|0)>1){o=a[3952+((d[208+o>>0]<<2^n^(d[208+(d[u+(n+-1)>>0]|0)>>0]|0)*3|0)%127|0)>>0]|0;if(!(o<<24>>24))break;o=o&255;while(1){q=o+-1|0;v:do if((n|0)==(d[2064+q>>0]|0)){r=1136+(e[1776+(q<<1)>>1]|0)|0;o=0;while(1){if((a[u+o>>0]&-33)<<24>>24!=(a[r+o>>0]|0))break v;o=o+1|0;if((o|0)>=(n|0)){U=326;break u}}}while(0);o=a[4224+q>>0]|0;if(!(o<<24>>24))break;else o=o&255}}while(0);if(!((n|0)==0|s)){q=t;t=0}else U=326}else U=326;while(0);if((U|0)==326){U=0;a[m+k>>0]=34;k=k+1|0;q=a[u>>0]|0;t=1}n=k+1|0;o=m+k|0;if(q<<24>>24){s=0;r=u;do{a[o>>0]=q;if((a[r>>0]|0)==34){a[m+n>>0]=34;k=k+2|0}else k=n;s=s+1|0;r=u+s|0;q=a[r>>0]|0;n=k+1|0;o=m+k|0}while(q<<24>>24!=0)}if(t){a[o>>0]=34;k=n}T=m+k|0;a[T>>0]=0;n=c[18080+((a[v+13>>0]|0)+-65<<2)>>2]|0;o=(Eu(n)|0)&1073741823;ew(T|0,n|0,o|0)|0;o=o+k|0;p=p+1|0;k=x-o|0;n=m+o|0;if((p|0)<(b[D>>1]|0)){v=v+16|0;q=y}else break}}c[X>>2]=z;Cb(k,n,31408,X)|0;k=ca;break m}while(0);k=ba+81|0;if(a[k>>0]|0){m=0;k=ca;break m}if(a[ba+82>>0]|0){m=0;k=ca;break m}a[k>>0]=1;if((c[ba+180>>2]|0)>0)c[ba+264>>2]=1;k=ba+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[ba+236>>2]|0;if(!k){m=0;k=ca;break m}c[k+12>>2]=7;m=0;k=ca;break m}while(0);Ra=da;return}while(0);p=ba+16|0;U=c[k>>2]|0;W=c[l>>2]|0;X=c[f+88>>2]|0;c[Y>>2]=c[(c[p>>2]|0)+(E<<4)>>2];c[Y+4>>2]=34585;c[Y+8>>2]=A;c[Y+12>>2]=U;c[Y+16>>2]=U;c[Y+20>>2]=W;c[Y+24>>2]=m;c[Y+28>>2]=X;Ak(f,39604,Y);w:do if(m|0){if(c[ba+480>>2]|0){Xd(ba,m);break}l=m;do if((c[ba+304>>2]|0)>>>0<=l>>>0){if((c[ba+308>>2]|0)>>>0<=l>>>0)break;Y=ba+300|0;c[m>>2]=c[Y>>2];c[Y>>2]=m;break w}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{Y=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-Y;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);l=c[C>>2]|0;m=(c[c[(c[(c[f>>2]|0)+16>>2]|0)+(E<<4)+12>>2]>>2]|0)+1|0;n=l+108|0;o=c[n>>2]|0;if((c[l+112>>2]|0)>(o|0)){c[n>>2]=o+1;Y=c[l+104>>2]|0;a[Y+(o*20|0)>>0]=95;b[Y+(o*20|0)+2>>1]=0;c[Y+(o*20|0)+4>>2]=E;c[Y+(o*20|0)+8>>2]=1;c[Y+(o*20|0)+12>>2]=m;c[Y+(o*20|0)+16>>2]=0;a[Y+(o*20|0)+1>>0]=0}else Di(l,95,E,1,m)|0;if(c[ca+36>>2]&8|0?(Z=c[p>>2]|0,(c[(c[Z+(E<<4)+12>>2]|0)+72>>2]|0)==0):0){c[_>>2]=c[Z+(E<<4)>>2];Ak(f,39691,_)}c[$>>2]=c[k>>2];Bk(B,E,dd(ba,39733,$)|0);if(!(a[V>>0]|0)){Ra=da;return}}else k=ca;if(mi((c[F>>2]|0)+8|0,c[k>>2]|0,ca)|0){k=ba+81|0;if(a[k>>0]|0){Ra=da;return}if(a[ba+82>>0]|0){Ra=da;return}a[k>>0]=1;if((c[ba+180>>2]|0)>0)c[ba+264>>2]=1;k=ba+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[ba+236>>2]|0;if(!k){Ra=da;return}c[k+12>>2]=7;Ra=da;return}c[aa>>2]=0;ba=ba+24|0;c[ba>>2]=c[ba>>2]|1;if(c[ca+12>>2]|0){Ra=da;return}k=c[f+180>>2]|0;o=(c[((c[g>>2]|0)==0?h:g)>>2]|0)-k|0;o=(o|0)>-1?k+o|0:-1;l=a[k>>0]|0;if(l<<24>>24!=0&o>>>0>k>>>0){n=0;while(1){m=k+1|0;if((l&255)>191){k=m;while(1){l=a[k>>0]|0;if((l&-64)<<24>>24==-128)k=k+1|0;else break}}else{k=m;l=a[m>>0]|0}if(l<<24>>24!=0&k>>>0>>0)n=n+1|0;else break}k=n+14|0}else k=13;c[ca+52>>2]=k;Ra=da;return}function dj(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=Ra;Ra=Ra+64|0;n=s;q=s+4|0;r=c[f>>2]|0;j=c[f+228>>2]|0;do if(j|0){m=c[j+4>>2]|0;l=(b[j+42>>1]|0)+-1|0;j=(d[r+165>>0]|0)+4&255;k=q+20|0;a[k>>0]=j;c[q+4>>2]=127;c[q+8>>2]=128;c[q+24>>2]=0;if(g){_j(q,g)|0;j=a[k>>0]|0}if(!(j<<24>>24)){c[n>>2]=c[m+(l<<4)>>2];cd(f,41761,n);break}o=m+(l<<4)+4|0;j=c[o>>2]|0;if(j|0)ni(r,j);j=q;k=j+52|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(k|0));a[q>>0]=-83;while(1)if(!(a[880+(d[h>>0]|0)>>0]&1))break;else h=h+1|0;j=i-h|0;a:do if((j|0)<=0)if(!h)j=0;else{k=j;p=15}else while(1){k=j+-1|0;if(!(a[880+(d[h+k>>0]|0)>>0]&1)){k=j;p=15;break a}if((j|0)>1)j=k;else{p=15;break}}while(0);b:do if((p|0)==15){m=Sv(k|0,((k|0)<0)<<31>>31|0,1,0)|0;n=L()|0;c:do if(c[r+272>>2]|0)if(!(a[r+81>>0]|0))p=25;else{j=0;break b}else{do if(!(n>>>0>0|((n|0)==0?m>>>0>(e[r+276>>1]|0)>>>0:0))){l=r+300|0;j=c[l>>2]|0;if(j|0){c[l>>2]=c[j>>2];i=r+284|0;c[i>>2]=(c[i>>2]|0)+1;break c}l=r+296|0;j=c[l>>2]|0;if(!j){j=r+292|0;break}else{c[l>>2]=c[j>>2];i=r+284|0;c[i>>2]=(c[i>>2]|0)+1;break c}}else j=r+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;p=25}while(0);if((p|0)==25)j=_d(r,m,n)|0;if(!j)j=0;else{ew(j|0,h|0,k|0)|0;a[j+k>>0]=0}}while(0);p=q+8|0;c[p>>2]=j;c[q+12>>2]=g;c[q+4>>2]=4096;j=dk(r,q,1,0)|0;c[o>>2]=j;j=c[p>>2]|0;do if(j|0){if(r|0){if(c[r+480>>2]|0){Xd(r,j);break}p=j;if((c[r+304>>2]|0)>>>0<=p>>>0?(c[r+308>>2]|0)>>>0>p>>>0:0){p=r+300|0;c[j>>2]=c[p>>2];c[p>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{p=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0)}while(0);if((d[f+200>>0]|0)>1?(p=q+8|0,c[p>>2]=0,c[p+4>>2]=0,c[p+8>>2]=0,c[p+12>>2]=0,c[p+16>>2]=0,c[q>>2]=f,c[q+4>>2]=124,g|0):0)_j(q,g)|0;if(!g){Ra=s;return}ni(r,g);Ra=s;return}function ej(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0;n=Ra;Ra=Ra+16|0;m=n;if(((g|0)==44?(c[f+36>>2]|0)==0:0)?(d[f+200>>0]|0)<=1:0){j=Xk(c[f>>2]|0,h,i)|0;if(!j){m=0;Ra=n;return m|0}else k=f}else l=4;a:do if((l|0)==4){j=c[f>>2]|0;b:do if(c[j+272>>2]|0){if(!(a[j+81>>0]|0))l=14}else{do if((e[j+276>>1]|0)>=52){k=j+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];j=j+284|0;c[j>>2]=(c[j>>2]|0)+1;j=l;l=15;break b}k=j+296|0;l=c[k>>2]|0;if(!l){k=j+292|0;break}else{c[k>>2]=c[l>>2];j=j+284|0;c[j>>2]=(c[j>>2]|0)+1;j=l;l=15;break b}}else k=j+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;l=14}while(0);if((l|0)==14){j=_d(j,52,0)|0;l=15}do if((l|0)==15){if(!j){j=c[f>>2]|0;break}k=j;l=k+52|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));a[j>>0]=g;b[j+34>>1]=-1;if(!i)k=0;else{c[j+16>>2]=i;k=c[i+4>>2]&2097412;c[j+4>>2]=k}if(h|0){c[j+12>>2]=h;c[j+4>>2]=k|c[h+4>>2]&2097412}Ym(j);k=f;break a}while(0);if(h|0)ni(j,h);if(!i){m=0;Ra=n;return m|0}ni(j,i);m=0;Ra=n;return m|0}while(0);k=c[(c[k>>2]|0)+120>>2]|0;if((k|0)>=(c[j+24>>2]|0)){m=j;Ra=n;return m|0}c[m>>2]=k;cd(f,41637,m);m=j;Ra=n;return m|0}function fj(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=h;l=c[f>>2]|0;m=i+53|0;a:do if(c[l+272>>2]|0)if(!(a[l+81>>0]|0))p=11;else{q=0;return q|0}else{do if(!(0<0|(0==0?(e[l+276>>1]|0)>>>0>>0:0))){j=l+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];o=l+284|0;c[o>>2]=(c[o>>2]|0)+1;o=k;break a}j=l+296|0;k=c[j>>2]|0;if(!k){j=l+292|0;break}else{c[j>>2]=c[k>>2];o=l+284|0;c[o>>2]=(c[o>>2]|0)+1;o=k;break a}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;p=11}while(0);if((p|0)==11)o=_d(l,m,0)|0;if(!o){q=o;return q|0}a[o>>0]=g;a[o+1>>0]=0;k=o+4|0;c[k>>2]=8388608;b[o+34>>1]=-1;c[o+16>>2]=0;c[o+12>>2]=0;c[o+20>>2]=0;c[o+40>>2]=0;c[o+44>>2]=0;a[o+38>>0]=0;c[o+28>>2]=0;b[o+32>>1]=0;j=o+52|0;g=o+8|0;c[g>>2]=j;ew(j|0,h|0,i|0)|0;a[j+i>>0]=0;g=c[g>>2]|0;j=a[g>>0]|0;if(((a[880+(j&255)>>0]|0)<0?(c[k>>2]=(j<<24>>24==34?67108928:67108864)|c[k>>2],g|0):0)?(n=a[g>>0]|0,(a[880+(n&255)>>0]|0)<0):0){m=n<<24>>24==91?93:n;l=0;j=1;while(1){k=a[g+j>>0]|0;if(k<<24>>24==m<<24>>24){j=j+1|0;k=g+l|0;if((a[g+j>>0]|0)!=m<<24>>24)break;a[k>>0]=m}else a[g+l>>0]=k;l=l+1|0;j=j+1|0}a[k>>0]=0}c[o+24>>2]=1;if((d[f+200>>0]|0)<=1){q=o;return q|0}l=c[f>>2]|0;b:do if(!l){if(!(c[7324]|0)){j=Wa[c[29340>>2]&127](16)|0;p=47;break}j=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;l=59064;k=c[l>>2]|0;l=c[l+4>>2]|0;if((l|0)>0|(l|0)==0&k>>>0>0){n=c[14978]|0;h=Tv(k|0,l|0,j|0,((j|0)<0)<<31>>31|0)|0;g=L()|0;c[14768]=((g|0)<0|(g|0)==0&h>>>0<=n>>>0)&1}j=Wa[c[29340>>2]&127](j)|0;if(!j){q=o;return q|0}k=Wa[c[29352>>2]&127](j)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0)c[14987]=k}else{if(c[l+272>>2]|0){if(a[l+81>>0]|0){q=o;return q|0}}else{do if((e[l+276>>1]|0)>=16){k=l+300|0;j=c[k>>2]|0;if(j|0){c[k>>2]=c[j>>2];p=l+284|0;c[p>>2]=(c[p>>2]|0)+1;p=47;break b}k=l+296|0;j=c[k>>2]|0;if(!j){j=l+292|0;break}else{c[k>>2]=c[j>>2];p=l+284|0;c[p>>2]=(c[p>>2]|0)+1;p=47;break b}}else j=l+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1}j=_d(l,16,0)|0;p=47}while(0);if((p|0)==47)if(!j){q=o;return q|0}c[j>>2]=o;c[j+4>>2]=q;c[j+8>>2]=i;q=f+272|0;c[j+12>>2]=c[q>>2];c[q>>2]=j;q=o;return q|0}function gj(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=Ra;Ra=Ra+16|0;w=B+8|0;k=B;y=c[e+228>>2]|0;do if(!y)A=60;else{z=y+36|0;j=c[z>>2]|0;if(j&4|0){c[k>>2]=c[y>>2];cd(e,41817,k);A=60;break}x=j|4;c[z>>2]=x;if(f){v=c[f>>2]|0;if((v|0)>0){t=y+42|0;u=y+4|0;l=0;m=-1;s=0;while(1){j=c[f+4+(s*20|0)>>2]|0;a:do if(!j)j=0;else while(1){k=c[j+4>>2]|0;if(!(k&4096))break a;if(!(k&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){j=0;break}}while(0);k=a[j>>0]|0;switch(k<<24>>24){case 110:{a[j>>0]=59;A=20;break}case 106:{k=c[j+12>>2]|0;if((a[k>>0]|0)==110){a[k>>0]=59;k=a[j>>0]|0;A=19}else j=m;break}default:A=19}if((A|0)==19){A=0;if(k<<24>>24==59)A=20;else j=m}b:do if((A|0)==20){A=0;o=c[j+8>>2]|0;j=b[t>>1]|0;if(j<<16>>16>0){r=c[u>>2]|0;n=a[o>>0]|0;q=a[208+(n&255)>>0]|0;p=j<<16>>16;c:do if(!(n<<24>>24)){j=0;while(1){if(q<<24>>24==(a[208+(d[c[r+(j<<4)>>2]>>0]|0)>>0]|0))break c;j=j+1|0;if((j|0)>=(p|0))break b}}else{j=0;while(1){k=c[r+(j<<4)>>2]|0;if(q<<24>>24==(a[208+(d[k>>0]|0)>>0]|0)){m=o;do{m=m+1|0;k=k+1|0;C=a[m>>0]|0;n=(d[208+(C&255)>>0]|0)-(d[208+(d[k>>0]|0)>>0]|0)|0}while(!(C<<24>>24==0|(n|0)!=0));if(!n)break c}j=j+1|0;if((j|0)>=(p|0))break b}}while(0);l=r+(j<<4)+15|0;a[l>>0]=a[l>>0]|1;l=r+(j<<4)|0}else j=0}while(0);s=s+1|0;if((s|0)==(v|0))break;else m=j}m=(v|0)==1;n=j;A=34}}else{n=(b[y+42>>1]|0)+-1|0;l=c[y+4>>2]|0;m=l+(n<<4)+15|0;a[m>>0]=a[m>>0]|1;m=1;l=l+(n<<4)|0;A=34}if((A|0)==34?m&(l|0)!=0:0){if(!(a[l+15>>0]&4))k=59952;else{k=c[l>>2]|0;k=k+(Eu(k)|0)+1|0}C=a[k>>0]|0;j=(d[208+(C&255)>>0]|0)+-105|0;if(!(C<<24>>24==0|(j|0)!=0)){l=31453;do{k=k+1|0;l=l+1|0;C=a[k>>0]|0;j=(d[208+(C&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(C<<24>>24==0|(j|0)!=0))}if((i|0)!=1&(j|0)==0){m=(f|0)!=0;d:do if(m&(d[e+200>>0]|0)>1){j=c[f+4>>2]|0;e:do if(!j)l=0;else while(1){k=c[j+4>>2]|0;if(!(k&4096)){l=j;break e}if(!(k&262144))j=j+12|0;else j=(c[j+20>>2]|0)+4|0;j=c[j>>2]|0;if(!j){l=0;break}}while(0);j=y+40|0;k=c[e+272>>2]|0;if(k){while(1){if((c[k>>2]|0)==(l|0))break;k=c[k+12>>2]|0;if(!k)break d}c[k>>2]=j}}else j=y+40|0;while(0);b[j>>1]=n;a[y+48>>0]=g;c[z>>2]=x|h<<3;if(m){a[e+198>>0]=a[f+16>>0]|0;break}else{Ra=B;return}}}if(h|0){cd(e,41858,w);A=60;break}hj(e,0,0,0,f,g,0,0,i,0,2);Ra=B;return}while(0);if((A|0)==60?(f|0)==0:0){Ra=B;return}ri(c[e>>2]|0,f);Ra=B;return}function hj(f,g,h,i,j,k,l,m,n,o,p){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;ya=Ra;Ra=Ra+416|0;ta=ya+320|0;sa=ya+296|0;ra=ya+280|0;oa=ya+272|0;na=ya+256|0;ma=ya+248|0;ga=ya+240|0;fa=ya+232|0;ba=ya+224|0;aa=ya+216|0;Y=ya+208|0;U=ya+200|0;T=ya+192|0;S=ya+184|0;Q=ya+176|0;P=ya+168|0;M=ya+160|0;N=ya+152|0;K=ya+144|0;J=ya+136|0;I=ya+128|0;H=ya+120|0;G=ya+112|0;D=ya+104|0;A=ya+96|0;y=ya+88|0;x=ya+80|0;pa=ya+384|0;_=ya;$=ya+352|0;B=ya+328|0;xa=c[f>>2]|0;la=xa+81|0;a:do if(((a[la>>0]|0)==0?(ca=f+36|0,(c[ca>>2]|0)<=0):0)?(ua=f+200|0,da=p<<24>>24==2,da|(a[ua>>0]|0)!=1):0){va=xa+165|0;b:do if(!(a[va>>0]|0)){s=f+4|0;t=xa+24|0;u=(c[t>>2]&1|0)==0;v=xa+16|0;qa=c[(c[v>>2]|0)+12>>2]|0;a[xa+78>>0]=a[qa+77>>0]|0;if(!((b[qa+78>>1]&1)==0?(q=eh(xa,0,s,0)|0,(q|0)!=0):0))wa=7;c:do if((wa|0)==7){q=c[xa+20>>2]|0;if((q|0)>1)do{r=q;q=q+-1|0;if((b[(c[(c[v>>2]|0)+(q<<4)+12>>2]|0)+78>>1]&1)==0?(w=eh(xa,q,s,0)|0,w|0):0){q=w;break c}}while((r|0)>2);if(u)c[t>>2]=c[t>>2]&-2;if(!(a[xa+89>>0]|0))break b;c[t>>2]=c[t>>2]|16;break b}while(0);c[f+12>>2]=q;c[ca>>2]=(c[ca>>2]|0)+1;r=m;q=0;wa=468;break a}while(0);qa=(i|0)!=0;d:do if(qa){q=c[f>>2]|0;z=h+4|0;if(c[z>>2]|0){if(a[q+165>>0]|0){cd(f,39404,x);r=m;q=0;wa=468;break a}q=wk(q,g)|0;if((q|0)<0){c[y>>2]=g;cd(f,39421,y);r=m;q=0;wa=468;break a}else{u=q;g=h}}else u=d[q+164>>0]|0;y=i+8|0;e:do if(!(a[va>>0]|0)){r=c[y>>2]|0;if(!r)q=i+12|0;else{s=c[(c[f>>2]|0)+16>>2]|0;q=0;while(1)if((c[s+(q<<4)+12>>2]|0)==(r|0))break;else q=q+1|0;q=s+(q<<4)|0}x=bd(f,0,c[i+16>>2]|0,c[q>>2]|0)|0;q=c[f>>2]|0;r=i+24|0;s=c[r>>2]|0;do if(s|0){if(q|0?c[q+480>>2]|0:0){Vi(q,s);break}ja=s+32|0;ka=(c[ja>>2]|0)+-1|0;c[ja>>2]=ka;if(!ka)Vi(q,s)}while(0);c[r>>2]=x;if(x){ka=x+32|0;c[ka>>2]=(c[ka>>2]|0)+1;f:do if(a[i+45>>0]&2){v=c[i+72>>2]|0;q=c[x+8>>2]|0;g:do if(q|0){w=d[208+(d[v>>0]|0)>>0]|0;while(1){s=c[q>>2]|0;ka=a[s>>0]|0;r=(d[208+(ka&255)>>0]|0)-w|0;if(!(ka<<24>>24==0|(r|0)!=0)){t=v;do{s=s+1|0;t=t+1|0;ka=a[s>>0]|0;r=(d[208+(ka&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(r|0)!=0))}if(!r)break;q=c[q+20>>2]|0;if(!q)break g}c[i+76>>2]=q;break f}while(0);c[A>>2]=v;c[A+4>>2]=0;cd(f,41107,A);a[f+17>>0]=1;break e}while(0);if(!(c[z>>2]|0))u=(c[x+72>>2]|0)==(c[(c[xa+16>>2]|0)+28>>2]|0)?1:u}}while(0);t=c[f>>2]|0;c[B>>2]=f;t=c[t+16>>2]|0;c[B+12>>2]=c[t+(u<<4)>>2];c[B+4>>2]=c[t+(u<<4)+12>>2];c[B+16>>2]=41914;c[B+20>>2]=g;t=(u|0)==1;c[B+8>>2]=t&1;al(B,i)|0;r=c[y>>2]|0;if(!r)q=i+12|0;else{s=c[(c[f>>2]|0)+16>>2]|0;q=0;while(1)if((c[s+(q<<4)+12>>2]|0)==(r|0))break;else q=q+1|0;q=s+(q<<4)|0}r=bd(f,0,c[i+16>>2]|0,c[q>>2]|0)|0;if(!r){r=m;q=0;wa=468;break a}if(t?(c[(c[xa+16>>2]|0)+28>>2]|0)!=(c[r+72>>2]|0):0){c[D>>2]=c[r>>2];cd(f,41920,D);r=m;q=0;wa=468;break a}if((c[r+36>>2]&32|0)!=0?(C=c[r+8>>2]|0,(C|0)!=0):0){q=C;while(1){ka=q+55|0;if(((d[ka>>0]|d[ka+1>>0]<<8)&3)==2){ka=r;Z=q;ja=u;ha=g;break d}q=c[q+20>>2]|0;if(!q){ka=r;Z=0;ja=u;ha=g;break}}}else{ka=r;Z=0;ja=u;ha=g}}else{q=c[f+228>>2]|0;if(!q){r=m;q=0;wa=468;break a}r=c[q+72>>2]|0;if(!r){ka=q;Z=0;ja=-1e6;ha=0}else{s=c[xa+16>>2]|0;t=0;while(1)if((c[s+(t<<4)+12>>2]|0)==(r|0)){ka=q;Z=0;ja=t;ha=0;break}else t=t+1|0}}while(0);ia=xa+16|0;A=c[ia>>2]|0;t=A+(ja<<4)|0;s=c[ka>>2]|0;do if(s|0){q=a[s>>0]|0;h:do if(!(q<<24>>24)){q=39441;wa=69}else{ea=q&255;q=208+ea|0;do if((ea|32|0)==115){q=a[s+1>>0]|0;if(!(q<<24>>24)){q=39442;wa=69;break h}ea=q&255;q=208+ea|0;if((ea|32|0)==113){q=a[s+2>>0]|0;if(!(q<<24>>24)){q=39443;wa=69;break h}ea=q&255;q=208+ea|0;if((ea|32|0)==108){q=a[s+3>>0]|0;if(!(q<<24>>24)){q=39444;wa=69;break h}ea=q&255;q=208+ea|0;if((ea|32|0)==105){q=a[s+4>>0]|0;if(!(q<<24>>24)){q=39445;wa=69;break h}ea=q&255;q=208+ea|0;if((ea|32|0)==116){q=a[s+5>>0]|0;if(!(q<<24>>24)){q=39446;wa=69;break h}q=q&255;if((q|32|0)!=101){r=101;q=208+q|0;break}q=a[s+6>>0]|0;if(!(q<<24>>24)){q=39447;wa=69;break h}if(q<<24>>24==95)break h;else{r=95;q=208+(q&255)|0}}else r=116}else r=105}else r=108}else r=113}else r=115;while(0);F=d[q>>0]|0;E=r;wa=73}while(0);if((wa|0)==69){F=0;E=a[208+(d[q>>0]|0)>>0]|0;wa=73}if((wa|0)==73?(F|0)!=(E&255|0):0)break;if(qa&(a[va>>0]|0)==0){c[G>>2]=s;cd(f,41970,G);r=m;q=0;wa=468;break a}}while(0);if(c[ka+12>>2]|0){cd(f,41998,H);r=m;q=0;wa=468;break}if(c[ka+56>>2]|0){cd(f,42023,I);r=m;q=0;wa=468;break}if(!ha){q=c[ka+8>>2]|0;if(!q)q=1;else{r=1;do{r=r+1|0;q=c[q+20>>2]|0}while((q|0)!=0);q=r}c[M>>2]=s;c[M+4>>2]=q;q=dd(xa,42115,M)|0;if(!q){r=m;q=0;wa=468;break}if(a[ua>>0]|0){r=q+7|0;a[r>>0]=(a[r>>0]|0)+1<<24>>24;r=a[ua>>0]|0;if((r&255)<=1)wa=124}else{r=0;wa=124}}else{y=qj(xa,ha)|0;if(!y){r=m;q=0;wa=468;break}if(vk(f,y)|0){r=m;q=y;wa=468;break}r=a[ua>>0]|0;if((r&255)<=1){if((a[va>>0]|0)==0?Sd(xa,y,0)|0:0){c[J>>2]=y;cd(f,42057,J);r=m;q=y;wa=468;break}if(!(hi(xa,y,c[t>>2]|0)|0)){q=y;wa=124}else{if(!o){c[K>>2]=y;cd(f,42091,K);r=m;q=y;wa=468;break}t=c[f+116>>2]|0;t=(t|0)==0?f:t;q=t+84|0;r=c[q>>2]|0;s=1<>2]=r|s;if((ja|0)!=1){r=m;q=y;wa=468;break}x=c[t>>2]|0;q=x+16|0;if(c[(c[q>>2]|0)+20>>2]|0){r=m;q=y;wa=468;break}if(a[t+199>>0]|0){r=m;q=y;wa=468;break}r=Pe(c[x>>2]|0,0,x,pa,0,542)|0;if(r|0){cd(t,32157,N);c[t+12>>2]=r;r=m;q=y;wa=468;break}k=c[pa>>2]|0;c[(c[q>>2]|0)+20>>2]=k;q=c[x+92>>2]|0;t=c[k+4>>2]|0;c[t+4>>2]=c[k>>2];do if(!(b[t+22>>1]&2)){u=t+32|0;v=t+36|0;w=(c[u>>2]|0)-(c[v>>2]|0)|0;do if((q+-512|0)>>>0<65025){if(q+-1&q|0)break;c[u>>2]=q;s=t+80|0;q=c[s>>2]|0;if(!q)break;r=q+-4|0;c[s>>2]=r;q=r;do if((c[14816]|0)>>>0<=q>>>0)if((c[14817]|0)>>>0>q>>>0){c[14979]=(c[14979]|0)+-1;c[r>>2]=c[14819];c[14819]=r;k=(c[14820]|0)+1|0;c[14820]=k;c[14821]=(k|0)<(c[14815]|0)&1;break}else{q=Wa[c[29352>>2]&127](r)|0;wa=105;break}else{q=Wa[c[29352>>2]&127](r)|0;wa=105}while(0);do if((wa|0)==105){c[14980]=(c[14980]|0)-q;if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{wa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);c[s>>2]=0}while(0);wa=Se(c[t>>2]|0,u,w)|0;c[v>>2]=(c[u>>2]|0)-(w&65535);if((wa|0)!=7)break;q=x+81|0;do if(!(a[q>>0]|0)){if(a[x+82>>0]|0)break;a[q>>0]=1;if((c[x+180>>2]|0)>0)c[x+264>>2]=1;q=x+272|0;c[q>>2]=(c[q>>2]|0)+1;q=c[x+236>>2]|0;if(!q)break;c[q+12>>2]=7}while(0);r=m;q=y;wa=468;break a}while(0);r=m;q=y;wa=468;break}}else q=y}do if((wa|0)==124){w=c[t>>2]|0;v=(ja|0)==1;s=v?34855:34585;t=c[f>>2]|0;u=a[t+165>>0]|0;if((u|r)<<24>>24==0?(O=c[t+312>>2]|0,(O|0)!=0):0){r=$a[O&127](c[t+316>>2]|0,18,s,0,w,c[f+240>>2]|0)|0;if((r|0)==1){cd(f,39216,P);c[f+12>>2]=23;r=m;wa=468;break a}if((r|2|0)!=2){cd(f,39231,Q);c[f+12>>2]=1;r=m;wa=468;break a}if(r|0){r=m;wa=468;break a}t=c[f>>2]|0;u=a[t+165>>0]|0}s=v?3:1;r=c[ka>>2]|0;if((u<<24>>24==0?(a[ua>>0]|0)==0:0)?(R=c[t+312>>2]|0,(R|0)!=0):0){r=$a[R&127](c[t+316>>2]|0,s,q,r,w,c[f+240>>2]|0)|0;if((r|0)==1){cd(f,39216,S);c[f+12>>2]=23;r=m;wa=468;break a}if((r|2|0)==2)if(!r)break;else{r=m;wa=468;break a}else{cd(f,39231,T);c[f+12>>2]=1;r=m;wa=468;break a}}}while(0);if(j){if((c[j>>2]|0)>(c[(c[f>>2]|0)+116>>2]|0)){c[U>>2]=41914;cd(f,44753,U)}if(!(c[ca>>2]|0))T=j;else{r=m;wa=468;break}}else{ea=c[ka+4>>2]|0;j=(b[ka+42>>1]|0)+-1|0;X=ea+(j<<4)+15|0;a[X>>0]=a[X>>0]|8;j=c[ea+(j<<4)>>2]|0;c[pa>>2]=j;if(!j)j=0;else j=(Eu(j)|0)&1073741823;c[pa+4>>2]=j;r=oj(xa,59,pa,0)|0;r=nj(c[f>>2]|0,0,r)|0;if(!r){r=m;j=0;wa=468;break}if((n|0)<0)j=r;else{a[r+4+(((c[r>>2]|0)+-1|0)*20|0)+12>>0]=n;j=r}T=r}u=c[j>>2]|0;if((u|0)>0){t=0;r=0;do{s=c[T+4+(t*20|0)>>2]|0;if((a[s>>0]|0)==106){s=c[s+8>>2]|0;if(!s)s=0;else s=(Eu(s)|0)&1073741823;r=r+1+s|0}t=t+1|0}while((t|0)!=(u|0));if(!q)t=0;else wa=160}else{r=0;wa=160}if((wa|0)==160)t=(Eu(q)|0)&1073741823;V=(Z|0)!=0;if(V)s=e[Z+50>>1]|0;else s=1;y=s+u|0;v=y&65535;y=y<<16;w=y>>16;x=(y>>14)+7&-8;y=y>>15;g=y+2|0;h=x+72+(w+7+y+g&-8)|0;z=t+1|0;u=z+r+h|0;t=((u|0)<0)<<31>>31;ea=(xa|0)==0;i:do if(ea){X=Sv(u|0,t|0,-1,-1)|0;W=L()|0;if(!(W>>>0>0|(W|0)==0&X>>>0>2147483390)){if(!(c[7324]|0)){r=Wa[c[29340>>2]&127](u)|0;wa=187;break}r=Wa[c[29356>>2]&127](u)|0;if((c[14985]|0)>>>0>>0)c[14985]=u;t=59064;s=c[t>>2]|0;t=c[t+4>>2]|0;if((t|0)>0|(t|0)==0&s>>>0>0){X=c[14978]|0;W=Tv(s|0,t|0,r|0,((r|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&W>>>0<=X>>>0)&1}r=Wa[c[29340>>2]&127](r)|0;if(r){s=Wa[c[29352>>2]&127](r)|0;s=(c[14978]|0)+s|0;c[14978]=s;if(s>>>0>(c[14982]|0)>>>0)c[14982]=s;s=(c[14981]|0)+1|0;c[14981]=s;if(s>>>0<=(c[14987]|0)>>>0){wa=188;break}c[14987]=s;wa=188}else{s=0;t=0;r=0}}else{s=0;t=0;r=0}}else{if(c[xa+272>>2]|0){if(a[la>>0]|0){r=m;j=T;wa=468;break a}}else{do if(!(0>>0|(0==(t|0)?(e[xa+276>>1]|0)>>>0>>0:0))){s=xa+300|0;r=c[s>>2]|0;if(r|0){c[s>>2]=c[r>>2];wa=xa+284|0;c[wa>>2]=(c[wa>>2]|0)+1;wa=187;break i}s=xa+296|0;r=c[s>>2]|0;if(!r){r=xa+292|0;break}else{c[s>>2]=c[r>>2];wa=xa+284|0;c[wa>>2]=(c[wa>>2]|0)+1;wa=187;break i}}else r=xa+288|0;while(0);c[r>>2]=(c[r>>2]|0)+1}r=_d(xa,u,t)|0;wa=187}while(0);if((wa|0)==187)if(!r){s=0;t=0;r=0}else wa=188;if((wa|0)==188){gw(r|0,0,u|0)|0;s=r+72|0;c[r+32>>2]=s;s=s+x|0;c[r+8>>2]=s;s=s+g|0;c[r+4>>2]=s;c[r+28>>2]=s+y;b[r+52>>1]=v;b[r+50>>1]=w+65535;s=r;t=r+h|0}j:do if(!(a[la>>0]|0)){c[s>>2]=t;U=t;x=U+z|0;ew(U|0,q|0,z|0)|0;U=s+12|0;c[U>>2]=ka;W=s+54|0;a[W>>0]=k;X=s+55|0;p=p&3;n=((k|0)!=0&1)<<3&65535|p|(d[X>>0]|d[X+1>>0]<<8)&-12;a[X>>0]=n;a[X+1>>0]=n>>8;c[s+24>>2]=c[(c[ia>>2]|0)+(ja<<4)+12>>2];n=s+50|0;b[n>>1]=c[j>>2];if(m|0){c[$>>2]=0;c[$+4>>2]=0;c[$+8>>2]=0;c[$+12>>2]=0;c[$+16>>2]=0;c[$+20>>2]=0;c[$+24>>2]=0;c[$+28>>2]=0;h=_;z=h+80|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(z|0));if(ka|0){c[_>>2]=1;c[_+16>>2]=c[ka>>2];c[_+24>>2]=ka;c[_+48>>2]=-1}c[$>>2]=f;c[$+4>>2]=_;j=$+24|0;b[j>>1]=2;c[pa>>2]=f;c[pa+4>>2]=125;c[pa+8>>2]=126;c[pa+12>>2]=0;c[pa+24>>2]=$;t=m+24|0;u=f+208|0;S=(c[u>>2]|0)+(c[t>>2]|0)|0;c[u>>2]=S;u=c[(c[f>>2]|0)+120>>2]|0;if((u|0)<(S|0)){c[Y>>2]=u;cd(f,41637,Y)}else{_j(pa,m)|0;Y=(c[pa>>2]|0)+208|0;c[Y>>2]=(c[Y>>2]|0)-(c[t>>2]|0);Y=m+4|0;c[Y>>2]=c[Y>>2]|b[j>>1]&-32752&65535}c[s+36>>2]=m}g=(d[(c[A+(ja<<4)+12>>2]|0)+76>>0]|0)>3;if((d[ua>>0]|0)>1){c[s+40>>2]=T;j=0}else j=T;k:do if(!(b[n>>1]|0)){u=0;w=0}else{A=(ka|0)==0;B=$+4|0;C=$+24|0;D=_+16|0;E=_+24|0;F=_+48|0;G=pa+4|0;H=pa+8|0;I=pa+12|0;o=pa+24|0;J=f+228|0;K=ka+40|0;M=s+4|0;N=ka+4|0;O=s+40|0;P=s+32|0;Q=s+28|0;R=f;S=f+208|0;y=T+4|0;u=0;while(1){w=c[y>>2]|0;l:do switch(a[w>>0]|0){case 110:{a[w>>0]=59;break}case 106:{t=c[w+12>>2]|0;if((a[t>>0]|0)!=110)break l;a[t>>0]=59;break}default:{}}while(0);c[$>>2]=0;c[$+4>>2]=0;c[$+8>>2]=0;c[$+12>>2]=0;c[$+16>>2]=0;c[$+20>>2]=0;c[$+24>>2]=0;c[$+28>>2]=0;h=_;z=h+80|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(z|0));if(!A){c[_>>2]=1;c[D>>2]=c[ka>>2];c[E>>2]=ka;c[F>>2]=-1}c[$>>2]=f;c[B>>2]=_;b[C>>1]=32;do if(w|0){b[C>>1]=32;c[pa>>2]=R;c[G>>2]=125;c[H>>2]=126;c[I>>2]=0;c[o>>2]=$;t=w+24|0;m=(c[S>>2]|0)+(c[t>>2]|0)|0;c[S>>2]=m;v=c[(c[f>>2]|0)+120>>2]|0;if((v|0)<(m|0)){c[aa>>2]=v;cd(f,41637,aa);break}else{_j(pa,w)|0;m=(c[pa>>2]|0)+208|0;c[m>>2]=(c[m>>2]|0)-(c[t>>2]|0);m=w+4|0;c[m>>2]=c[m>>2]|b[C>>1]&-32752&65535;break}}while(0);if(c[ca>>2]|0){u=0;v=s;t=r;break j}t=c[y>>2]|0;m:do if(!t)t=0;else while(1){v=c[t+4>>2]|0;if(!(v&4096))break m;if(!(v&262144))t=t+12|0;else t=(c[t+20>>2]|0)+4|0;t=c[t>>2]|0;if(!t){t=0;break}}while(0);if((a[t>>0]|0)==-94){m=b[t+32>>1]|0;t=m<<16>>16;do if(m<<16>>16<0)t=b[K>>1]|0;else{if(a[(c[N>>2]|0)+(t<<4)+12>>0]|0)break;m=(d[X>>0]|d[X+1>>0]<<8)&-9;a[X>>0]=m;a[X+1>>0]=m>>8}while(0);b[(c[M>>2]|0)+(u<<1)>>1]=t}else{if((ka|0)==(c[J>>2]|0))break;if(!(c[O>>2]|0)){c[O>>2]=j;j=0}b[(c[M>>2]|0)+(u<<1)>>1]=-2;t=(d[X>>0]|d[X+1>>0]<<8)&-9;a[X>>0]=t;a[X+1>>0]=t>>8;t=-2}v=c[y>>2]|0;do if((a[v>>0]|0)==106){v=c[v+8>>2]|0;if(!v)t=0;else t=(Eu(v)|0)&1073741823;m=t+1|0;ew(x|0,v|0,m|0)|0;t=x;x=x+m|0}else{if((t|0)<=-1){t=0;break}t=c[(c[N>>2]|0)+(t<<4)+8>>2]|0}while(0);w=(t|0)==0?34049:t;n:do if(!(a[va>>0]|0)){t=c[f>>2]|0;v=a[t+78>>0]|0;m=a[t+165>>0]|0;t=Zi(t,v,w,m&255)|0;do if(!(m<<24>>24)){if(!t){t=_i(f,v,0,w)|0;break}if(c[t+12>>2]|0)break n;t=_i(f,v,t,w)|0}while(0);if(!t){u=0;v=s;t=r;break j}}while(0);c[(c[P>>2]|0)+(u<<2)>>2]=w;a[(c[Q>>2]|0)+u>>0]=g?a[y+12>>0]|0:0;u=u+1|0;w=b[n>>1]|0;if(u>>>0<(w&65535)>>>0)y=y+20|0;else break k}cd(f,42138,ba);u=0;wa=432;break j}while(0);o:do if(V){B=Z+50|0;v=b[B>>1]|0;if(!(v<<16>>16))break;C=Z+4|0;D=s+4|0;E=Z+32|0;F=s+32|0;h=Z+28|0;z=s+28|0;A=s+52|0;t=0;while(1){y=b[(c[C>>2]|0)+(t<<1)>>1]|0;g=c[D>>2]|0;p:do if(!(w<<16>>16))wa=252;else{x=g;w=w&65535;while(1){if((b[x>>1]|0)==y<<16>>16)break;if((w|0)>1){x=x+2|0;w=w+-1|0}else{wa=252;break p}}b[A>>1]=(b[A>>1]|0)+-1<<16>>16}while(0);if((wa|0)==252){wa=0;b[g+(u<<1)>>1]=y;c[(c[F>>2]|0)+(u<<2)>>2]=c[(c[E>>2]|0)+(t<<2)>>2];a[(c[z>>2]|0)+u>>0]=a[(c[h>>2]|0)+t>>0]|0;u=u+1|0;v=b[B>>1]|0}t=t+1|0;if(t>>>0>=(v&65535)>>>0)break o;w=b[n>>1]|0}}else{b[(c[s+4>>2]|0)+(u<<1)>>1]=-1;c[(c[s+32>>2]|0)+(u<<2)>>2]=34049}while(0);v=c[s+8>>2]|0;u=b[n>>1]|0;u=(u&65535)<5?u:5;t=b[(c[U>>2]|0)+44>>1]|0;b[v>>1]=t;if(c[s+36>>2]|0){t=(t&65535)+65526&65535;b[v>>1]=t}if(t<<16>>16<33)b[v>>1]=33;ew(v+2|0,31120,u<<1&65535|0)|0;ca=b[n>>1]|0;t=ca&65535;if((u&65535)<(ca&65535)){t=u&65535;do{t=t+1|0;b[v+(t<<1)>>1]=23;u=b[n>>1]|0}while(t>>>0<(u&65535)>>>0);t=u&65535}if(a[W>>0]|0)b[v+(t<<1)>>1]=0;B=f+228|0;if(!(c[B>>2]|0))xk(s);x=b[s+52>>1]|0;A=x<<16>>16==0;if(A){u=-1;t=-1}else{u=c[s+4>>2]|0;t=x&65535;v=0;w=0;do{ca=t;t=t+-1|0;$=b[u+(t<<1)>>1]|0;aa=($&65535)<63;$=cw(1,0,$<<16>>16|0)|0;ba=L()|0;v=(aa?$:0)|v;w=(aa?ba:0)|w}while((ca|0)>1);u=~v;t=~w}ca=s+64|0;c[ca>>2]=u;c[ca+4>>2]=t;q:do if(qa){h=x&65535;t=ka+42|0;if((h|0)<(b[t>>1]|0))break;z=d[X>>0]|d[X+1>>0]<<8;ca=z|32;a[X>>0]=ca;a[X+1>>0]=ca>>8;t=b[t>>1]|0;if(t<<16>>16<=0)break;u=b[ka+40>>1]|0;y=u<<16>>16;g=s+4|0;r:do if(A){if(!((y+1|0)<(t<<16>>16|0)|u<<16>>16==0^1))break q}else{v=t<<16>>16;u=0;while(1){if((u|0)!=(y|0)){w=u&65535;x=c[g>>2]|0;t=0;while(1){if((b[x+(t<<1)>>1]|0)==w<<16>>16)break;t=t+1|0;if(t>>>0>=h>>>0)break r}if((t&65535)<<16>>16<=-1)break r}u=u+1|0;if((u|0)>=(v|0))break q}}while(0);ca=z&-33;a[X>>0]=ca;a[X+1>>0]=ca>>8}while(0);s:do if((ka|0)==(c[B>>2]|0)){t=c[ka+8>>2]|0;if(!t){v=s;E=r;t=r;break}C=f+232|0;t:do if(da){B=t;t=r;while(1){u=b[B+50>>1]|0;do if(u<<16>>16==(b[s+50>>1]|0)){A=u&65535;u:do if(!(u<<16>>16))u=0;else{y=c[B+4>>2]|0;g=c[s+4>>2]|0;h=B+32|0;z=s+32|0;u=0;do{if((b[y+(u<<1)>>1]|0)!=(b[g+(u<<1)>>1]|0))break u;w=c[(c[h>>2]|0)+(u<<2)>>2]|0;x=c[(c[z>>2]|0)+(u<<2)>>2]|0;ga=a[w>>0]|0;v=(d[208+(ga&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(ga<<24>>24==0|(v|0)!=0))do{w=w+1|0;x=x+1|0;ga=a[w>>0]|0;v=(d[208+(ga&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(ga<<24>>24==0|(v|0)!=0));if(v|0)break u;u=u+1|0}while(u>>>0>>0)}while(0);if((u|0)!=(A|0)){u=0;break}w=B+54|0;u=a[w>>0]|0;x=s+54|0;v=a[x>>0]|0;do if(u<<24>>24!=v<<24>>24){if(!(u<<24>>24==11|v<<24>>24==11)){c[fa>>2]=0;cd(f,42199,fa);u=a[w>>0]|0}if(u<<24>>24!=11)break;a[w>>0]=a[x>>0]|0}while(0);ga=B+55|0;da=(d[ga>>0]|d[ga+1>>0]<<8)&-4|p;a[ga>>0]=da;a[ga+1>>0]=da>>8;if((d[ua>>0]|0)<=1){u=2;break}c[s+20>>2]=c[C>>2];c[C>>2]=s;s=0;u=2;r=0;t=0}else u=20;while(0);switch(u&31){case 20:case 0:break;default:break t}B=c[B+20>>2]|0;if(!B){v=s;E=t;t=r;break s}}}else{B=t;t=r;while(1){u=b[B+50>>1]|0;do if(u<<16>>16==(b[s+50>>1]|0)){A=u&65535;v:do if(!(u<<16>>16))u=0;else{y=c[B+4>>2]|0;g=c[s+4>>2]|0;h=B+32|0;z=s+32|0;u=0;do{if((b[y+(u<<1)>>1]|0)!=(b[g+(u<<1)>>1]|0))break v;w=c[(c[h>>2]|0)+(u<<2)>>2]|0;x=c[(c[z>>2]|0)+(u<<2)>>2]|0;fa=a[w>>0]|0;v=(d[208+(fa&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0;if(!(fa<<24>>24==0|(v|0)!=0))do{w=w+1|0;x=x+1|0;fa=a[w>>0]|0;v=(d[208+(fa&255)>>0]|0)-(d[208+(d[x>>0]|0)>>0]|0)|0}while(!(fa<<24>>24==0|(v|0)!=0));if(v|0)break v;u=u+1|0}while(u>>>0>>0)}while(0);if((u|0)!=(A|0)){u=0;break}w=B+54|0;u=a[w>>0]|0;x=s+54|0;v=a[x>>0]|0;do if(u<<24>>24!=v<<24>>24){if(!(u<<24>>24==11|v<<24>>24==11)){c[ga>>2]=0;cd(f,42199,ga);u=a[w>>0]|0}if(u<<24>>24!=11)break;a[w>>0]=a[x>>0]|0}while(0);if((d[ua>>0]|0)<=1){u=2;break}c[s+20>>2]=c[C>>2];c[C>>2]=s;s=0;u=2;r=0;t=0}else u=20;while(0);switch(u&31){case 20:case 0:break;default:break t}B=c[B+20>>2]|0;if(!B){v=s;E=t;t=r;break s}}}while(0);if(!u){v=s;E=t;t=r}else{u=0;wa=432;break j}}else{v=s;E=r;t=r}while(0);do if((d[ua>>0]|0)>1)wa=420;else{if(a[va>>0]|0){w:do if(qa){s=c[xa+160>>2]|0;c[v+44>>2]=s;r=c[(c[v+12>>2]|0)+8>>2]|0;if(!r)break;while(1){if(!((r|0)==(v|0)?1:(c[r+44>>2]|0)!=(s|0)))break;r=c[r+20>>2]|0;if(!r)break w}cd(f,35103,ma);c[na>>2]=32306;c[na+4>>2]=110349;c[na+8>>2]=31517;Db(11,32001,na);c[f+12>>2]=11;u=0;s=v;r=t;wa=432;break j}while(0);if(!(mi((c[v+24>>2]|0)+24|0,c[v>>2]|0,E)|0)){wa=xa+24|0;c[wa>>2]=c[wa>>2]|1;wa=420;break}if(a[la>>0]|0){u=0;break j}if(a[xa+82>>0]|0){u=0;break j}a[la>>0]=1;if((c[xa+180>>2]|0)>0)c[xa+264>>2]=1;r=xa+272|0;c[r>>2]=(c[r>>2]|0)+1;r=c[xa+236>>2]|0;if(!r){u=0;break j}c[r+12>>2]=7;u=0;break j}if(!(qa|(c[ka+36>>2]&32|0)==0))break;D=f+44|0;C=(c[D>>2]|0)+1|0;c[D>>2]=C;D=f+8|0;r=c[D>>2]|0;w=f+116|0;if(!r){u=c[f>>2]|0;do if(!(c[w>>2]|0)){if(b[u+76>>1]&8)break;a[f+23>>0]=1}while(0);x:do if(c[u+272>>2]|0)if(!(a[u+81>>0]|0))wa=360;else{u=0;s=v;r=t;wa=432;break j}else{do if((e[u+276>>1]|0)>=224){r=u+300|0;s=c[r>>2]|0;if(s|0){c[r>>2]=c[s>>2];na=u+284|0;c[na>>2]=(c[na>>2]|0)+1;break x}r=u+296|0;s=c[r>>2]|0;if(!s){r=u+292|0;break}else{c[r>>2]=c[s>>2];na=u+284|0;c[na>>2]=(c[na>>2]|0)+1;break x}}else r=u+288|0;while(0);c[r>>2]=(c[r>>2]|0)+1;wa=360}while(0);if((wa|0)==360)s=_d(u,224,0)|0;if(!s){u=0;s=v;r=t;wa=432;break j}h=s+104|0;z=h+120|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(z|0));c[s>>2]=u;r=u+4|0;u=c[r>>2]|0;if(u|0)c[u+4>>2]=s;c[s+8>>2]=u;c[s+4>>2]=0;c[r>>2]=s;c[s+20>>2]=381479589;c[s+12>>2]=f;c[D>>2]=s;Di(s,61,0,1,0)|0;B=s}else B=r;A=c[w>>2]|0;A=(A|0)==0?f:A;r=A+84|0;s=c[r>>2]|0;z=1<>2]=s|z;if((ja|0)!=1)break;h=c[A>>2]|0;r=h+16|0;if(c[(c[r>>2]|0)+20>>2]|0)break;if(a[A+199>>0]|0)break;s=Pe(c[h>>2]|0,0,h,pa,0,542)|0;if(s|0){cd(A,32157,oa);c[A+12>>2]=s;break}pa=c[pa>>2]|0;c[(c[r>>2]|0)+20>>2]=pa;r=c[h+92>>2]|0;w=c[pa+4>>2]|0;c[w+4>>2]=c[pa>>2];do if(!(b[w+22>>1]&2)){x=w+32|0;y=w+36|0;g=(c[x>>2]|0)-(c[y>>2]|0)|0;do if((r+-512|0)>>>0<65025){if(r+-1&r|0)break;c[x>>2]=r;u=w+80|0;r=c[u>>2]|0;if(!r)break;s=r+-4|0;c[u>>2]=s;r=s;do if((c[14816]|0)>>>0<=r>>>0)if((c[14817]|0)>>>0>r>>>0){c[14979]=(c[14979]|0)+-1;c[s>>2]=c[14819];c[14819]=s;pa=(c[14820]|0)+1|0;c[14820]=pa;c[14821]=(pa|0)<(c[14815]|0)&1;break}else{r=Wa[c[29352>>2]&127](s)|0;wa=380;break}else{r=Wa[c[29352>>2]&127](s)|0;wa=380}while(0);do if((wa|0)==380){c[14980]=(c[14980]|0)-r;if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{wa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);c[u>>2]=0}while(0);wa=Se(c[w>>2]|0,x,g)|0;c[y>>2]=(c[x>>2]|0)-(g&65535);if((wa|0)!=7)break;r=h+81|0;do if(!(a[r>>0]|0)){if(a[h+82>>0]|0)break;a[r>>0]=1;if((c[h+180>>2]|0)>0)c[h+264>>2]=1;r=h+272|0;c[r>>2]=(c[r>>2]|0)+1;r=c[h+236>>2]|0;if(!r)break;c[r+12>>2]=7}while(0);break y}while(0)}while(0);g=A+80|0;c[g>>2]=c[g>>2]|z;g=A+20|0;a[g>>0]=a[g>>0]|1;g=B+108|0;r=c[g>>2]|0;y=B+112|0;if((c[y>>2]|0)>(r|0)){c[g>>2]=r+1;h=c[B+104>>2]|0;a[h+(r*20|0)>>0]=-86;h=h+(r*20|0)+1|0;z=h+19|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(z|0))}else r=Di(B,170,0,0,0)|0;x=v+44|0;c[x>>2]=r;r=c[g>>2]|0;if((c[y>>2]|0)>(r|0)){c[g>>2]=r+1;wa=c[B+104>>2]|0;a[wa+(r*20|0)>>0]=-117;b[wa+(r*20|0)+2>>1]=0;c[wa+(r*20|0)+4>>2]=ja;c[wa+(r*20|0)+8>>2]=C;c[wa+(r*20|0)+12>>2]=2;c[wa+(r*20|0)+16>>2]=0;a[wa+(r*20|0)+1>>0]=0}else Di(B,139,ja,C,2)|0;if(!l)s=0;else{s=c[ha>>2]|0;wa=(c[f+188>>2]|0)-s+(c[f+192>>2]|0)|0;l=wa+-1|0;wa=(a[s+l>>0]|0)==59?l:wa;c[ra>>2]=(k|0)==0?59952:42261;c[ra+4>>2]=wa;c[ra+8>>2]=s;s=dd(xa,42241,ra)|0}ra=c[v>>2]|0;wa=c[ka>>2]|0;c[sa>>2]=c[(c[ia>>2]|0)+(ja<<4)>>2];c[sa+4>>2]=34585;c[sa+8>>2]=ra;c[sa+12>>2]=wa;c[sa+16>>2]=C;c[sa+20>>2]=s;Ak(f,42269,sa);z:do if(s|0){if(c[xa+480>>2]|0){Xd(xa,s);break}r=s;do if((c[xa+304>>2]|0)>>>0<=r>>>0){if((c[xa+308>>2]|0)>>>0<=r>>>0)break;wa=xa+300|0;c[s>>2]=c[wa>>2];c[wa>>2]=s;break z}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{wa=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}}while(0);do if(qa){bl(f,v,C);r=c[D>>2]|0;s=(c[c[(c[(c[f>>2]|0)+16>>2]|0)+(ja<<4)+12>>2]>>2]|0)+1|0;u=r+108|0;w=c[u>>2]|0;if((c[r+112>>2]|0)>(w|0)){c[u>>2]=w+1;wa=c[r+104>>2]|0;a[wa+(w*20|0)>>0]=95;b[wa+(w*20|0)+2>>1]=0;c[wa+(w*20|0)+4>>2]=ja;c[wa+(w*20|0)+8>>2]=1;c[wa+(w*20|0)+12>>2]=s;c[wa+(w*20|0)+16>>2]=0;a[wa+(w*20|0)+1>>0]=0}else Di(r,95,ja,1,s)|0;c[ta>>2]=c[v>>2];Bk(B,ja,dd(xa,42317,ta)|0);r=c[g>>2]|0;if((c[y>>2]|0)>(r|0)){c[g>>2]=r+1;wa=c[B+104>>2]|0;a[wa+(r*20|0)>>0]=-98;b[wa+(r*20|0)+2>>1]=0;c[wa+(r*20|0)+4>>2]=0;c[wa+(r*20|0)+8>>2]=1;c[wa+(r*20|0)+12>>2]=0;c[wa+(r*20|0)+16>>2]=0;a[wa+(r*20|0)+1>>0]=0;break}else{Di(B,158,0,1,0)|0;break}}while(0);r=c[x>>2]|0;s=c[g>>2]|0;if(!(a[(c[B>>2]|0)+81>>0]|0))r=(c[B+104>>2]|0)+(((r|0)<0?s+-1|0:r)*20|0)|0;else r=59308;c[r+8>>2]=s;wa=420}while(0);do if((wa|0)==420){if((i|0)==0|(a[va>>0]|0)!=0)break;if((d[ua>>0]|0)<=1){u=0;s=v;r=t;wa=432;break j}c[f+232>>2]=E;break a}while(0);s=ka+8|0;do if((k|0)==5){r=c[s>>2]|0;if(!r)break;if((a[r+54>>0]|0)==5)break;r=r+20|0;s=c[r>>2]|0;A:do if(!s)s=0;else while(1){if((a[s+54>>0]|0)==5)break A;r=s+20|0;s=c[r>>2]|0;if(!s){s=0;break}}while(0);c[v+20>>2]=s;c[r>>2]=v;break a}while(0);c[v+20>>2]=c[s>>2];c[s>>2]=v;break a}else{u=m;j=T;wa=432}while(0);if((wa|0)==432)if(!s){r=u;wa=468;break}else{v=s;t=r}r=c[v+36>>2]|0;if(r|0)ni(xa,r);r=c[v+40>>2]|0;if(r|0)ri(xa,r);r=c[v+16>>2]|0;B:do if(r|0){do if(!ea){if(c[xa+480>>2]|0){Xd(xa,r);break B}s=r;if((c[xa+304>>2]|0)>>>0>s>>>0)break;if((c[xa+308>>2]|0)>>>0<=s>>>0)break;wa=xa+300|0;c[r>>2]=c[wa>>2];c[wa>>2]=r;break B}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{wa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);wa=v+55|0;C:do if((d[wa>>0]|d[wa+1>>0]<<8)&16){r=c[v+32>>2]|0;if(!r)break;do if(!ea){if(c[xa+480>>2]|0){Xd(xa,r);break C}s=r;if((c[xa+304>>2]|0)>>>0>s>>>0)break;if((c[xa+308>>2]|0)>>>0<=s>>>0)break;wa=xa+300|0;c[r>>2]=c[wa>>2];c[wa>>2]=r;break C}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{wa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-wa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);if(t){do if(!ea){if(c[xa+480>>2]|0){Xd(xa,t);r=u;wa=468;break a}r=t;if((c[xa+304>>2]|0)>>>0>r>>>0)break;if((c[xa+308>>2]|0)>>>0<=r>>>0)break;r=xa+300|0;c[t>>2]=c[r>>2];c[r>>2]=t;r=u;wa=468;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);r=u;wa=468;break}else{r=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-r;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);r=u;wa=468;break}}else{r=u;wa=468}}else{r=m;q=0;wa=468}while(0);if((wa|0)==468)if(r)ni(xa,r);if(j|0)ri(xa,j);qi(xa,i);if(!q){Ra=ya;return}if(xa|0){if(c[xa+480>>2]|0){Xd(xa,q);Ra=ya;return}i=q;if((c[xa+304>>2]|0)>>>0<=i>>>0?(c[xa+308>>2]|0)>>>0>i>>>0:0){i=xa+300|0;c[q>>2]=c[i>>2];c[i>>2]=q;Ra=ya;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](q);Ra=ya;return}else{i=Wa[c[29352>>2]&127](q)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](q);Ra=ya;return}}function ij(f,g,h,i,j){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0;M=Ra;Ra=Ra+32|0;G=M+16|0;m=M+8|0;l=M;K=c[f>>2]|0;I=c[f+228>>2]|0;a:do if((I|0)!=0?(J=f+200|0,(a[J>>0]|0)!=1):0){r=(g|0)==0;do if(r){D=b[I+42>>1]|0;k=(D<<16>>16)+-1|0;if(D<<16>>16<1){C=130;break a}if(i)if((c[i>>2]|0)==1){k=1;C=13}else{c[l>>2]=c[(c[I+4>>2]|0)+(k<<4)>>2];c[l+4>>2]=h;cd(f,42428,l);break a}else{k=1;C=12}}else{if(!i){k=c[g>>2]|0;C=12;break}k=c[i>>2]|0;if((k|0)==(c[g>>2]|0))C=13;else{cd(f,42491,m);C=129;break a}}while(0);if((C|0)==12){p=h+4|0;l=(k<<3)+37+(c[p>>2]|0)|0;D=k;A=0}else if((C|0)==13){p=h+4|0;l=(k<<3)+37+(c[p>>2]|0)|0;o=c[i>>2]|0;if((o|0)>0){n=0;do{m=c[i+4+(n*20|0)+4>>2]|0;if(!m)m=0;else m=(Eu(m)|0)&1073741823;l=l+1+m|0;n=n+1|0}while((n|0)<(o|0));D=k;A=1}else{D=k;A=1}}n=((l|0)<0)<<31>>31;B=(K|0)==0;b:do if(B){z=Sv(l|0,n|0,-1,-1)|0;y=L()|0;if(y>>>0>0|(y|0)==0&z>>>0>2147483390){C=128;break a}if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](l)|0;C=42;break}n=Wa[c[29356>>2]&127](l)|0;if((c[14985]|0)>>>0>>0)c[14985]=l;m=59064;k=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&k>>>0>0){z=c[14978]|0;y=Tv(k|0,m|0,n|0,((n|0)<0)<<31>>31|0)|0;x=L()|0;c[14768]=((x|0)<0|(x|0)==0&y>>>0<=z>>>0)&1}m=Wa[c[29340>>2]&127](n)|0;if(!m){C=128;break a}k=Wa[c[29352>>2]&127](m)|0;k=(c[14978]|0)+k|0;c[14978]=k;if(k>>>0>(c[14982]|0)>>>0)c[14982]=k;k=(c[14981]|0)+1|0;c[14981]=k;if(k>>>0>(c[14987]|0)>>>0){c[14987]=k;z=m}else z=m}else{if(c[K+272>>2]|0){if(a[K+81>>0]|0){C=128;break a}}else{do if(!(0>>0|(0==(n|0)?(e[K+276>>1]|0)>>>0>>0:0))){m=K+300|0;k=c[m>>2]|0;if(k|0){c[m>>2]=c[k>>2];C=K+284|0;c[C>>2]=(c[C>>2]|0)+1;C=42;break b}m=K+296|0;k=c[m>>2]|0;if(!k){k=K+292|0;break}else{c[m>>2]=c[k>>2];C=K+284|0;c[C>>2]=(c[C>>2]|0)+1;C=42;break b}}else k=K+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(K,l,n)|0;C=42}while(0);if((C|0)==42)if(!k){C=128;break}else z=k;gw(z|0,0,l|0)|0;c[z>>2]=I;y=I+16|0;c[z+4>>2]=c[y>>2];w=z+36|0;o=w+(D<<3)|0;x=z+8|0;c[x>>2]=o;c:do if((d[J>>0]|0)>1){m=c[f>>2]|0;d:do if(!m){if(!(c[7324]|0)){k=Wa[c[29340>>2]&127](16)|0;C=67;break}k=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;m=59064;l=c[m>>2]|0;m=c[m+4>>2]|0;if((m|0)>0|(m|0)==0&l>>>0>0){v=c[14978]|0;u=Tv(l|0,m|0,k|0,((k|0)<0)<<31>>31|0)|0;t=L()|0;c[14768]=((t|0)<0|(t|0)==0&u>>>0<=v>>>0)&1}k=Wa[c[29340>>2]&127](k)|0;if(!k)break c;l=Wa[c[29352>>2]&127](k)|0;l=(c[14978]|0)+l|0;c[14978]=l;if(l>>>0>(c[14982]|0)>>>0)c[14982]=l;l=(c[14981]|0)+1|0;c[14981]=l;if(l>>>0>(c[14987]|0)>>>0)c[14987]=l}else{if(c[m+272>>2]|0){if(a[m+81>>0]|0)break c}else{do if((e[m+276>>1]|0)>=16){l=m+300|0;k=c[l>>2]|0;if(k|0){c[l>>2]=c[k>>2];C=m+284|0;c[C>>2]=(c[C>>2]|0)+1;C=67;break d}l=m+296|0;k=c[l>>2]|0;if(!k){k=m+292|0;break}else{c[l>>2]=c[k>>2];C=m+284|0;c[C>>2]=(c[C>>2]|0)+1;C=67;break d}}else k=m+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1}k=_d(m,16,0)|0;C=67}while(0);if((C|0)==67)if(!k)break;l=k+4|0;m=l+12|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(m|0));c[k>>2]=o;t=h;u=c[t+4>>2]|0;v=k+4|0;c[v>>2]=c[t>>2];c[v+4>>2]=u;v=f+272|0;c[k+12>>2]=c[v>>2];c[v>>2]=k}while(0);ew(o|0,c[h>>2]|0,c[p>>2]|0)|0;a[o+(c[p>>2]|0)>>0]=0;if(o|0?(q=a[o>>0]|0,(a[880+(q&255)>>0]|0)<0):0){n=q<<24>>24==91?93:q;m=0;k=1;while(1){l=a[o+k>>0]|0;if(l<<24>>24==n<<24>>24){k=k+1|0;l=o+m|0;if((a[o+k>>0]|0)!=n<<24>>24)break;a[l>>0]=n}else a[o+m>>0]=l;m=m+1|0;k=k+1|0}a[l>>0]=0}m=o+((c[p>>2]|0)+1)|0;c[z+20>>2]=D;e:do if(!r)if((D|0)>0){s=I+4|0;t=f+272|0;v=b[I+42>>1]|0;u=v<<16>>16>0;v=v<<16>>16;r=0;f:while(1){if(!u){C=117;break}h=c[s>>2]|0;k=c[g+4+(r*20|0)+4>>2]|0;q=d[208+(d[k>>0]|0)>>0]|0;l=0;while(1){o=c[h+(l<<4)>>2]|0;p=a[o>>0]|0;n=(d[208+(p&255)>>0]|0)-q|0;if(!(p<<24>>24==0|(n|0)!=0)){p=k;do{o=o+1|0;p=p+1|0;N=a[o>>0]|0;n=(d[208+(N&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(N<<24>>24==0|(n|0)!=0))}if(!n)break;l=l+1|0;if((l|0)>=(v|0))break f}c[w+(r<<3)>>2]=l;g:do if((d[J>>0]|0)>1?(F=w+(r<<3)|0,E=c[t>>2]|0,E|0):0){l=E;while(1){if((c[l>>2]|0)==(k|0))break;l=c[l+12>>2]|0;if(!l)break g}c[l>>2]=F}while(0);k=r+1|0;if((k|0)<(D|0))r=k;else{C=96;break e}}if((C|0)==117)k=c[g+4+(r*20|0)+4>>2]|0;c[G>>2]=k;cd(f,42585,G);if(!z){C=129;break a}if(!B)C=120}else C=107;else{c[w>>2]=(b[I+42>>1]|0)+-1;C=96}while(0);if((C|0)==96)if(A&(D|0)>0){p=f+272|0;n=0;while(1){o=c[i+4+(n*20|0)+4>>2]|0;if(!o)l=0;else l=(Eu(o)|0)&1073741823;c[w+(n<<3)+4>>2]=m;h:do if((d[J>>0]|0)>1?(H=c[p>>2]|0,H|0):0){k=H;while(1){if((c[k>>2]|0)==(o|0))break;k=c[k+12>>2]|0;if(!k)break h}c[k>>2]=m}while(0);ew(m|0,o|0,l|0)|0;a[m+l>>0]=0;n=n+1|0;if((n|0)==(D|0)){C=107;break}else m=m+(l+1)|0}}else C=107;if((C|0)==107){a[z+24>>0]=0;a[z+25>>0]=j;a[z+26>>0]=j>>>8;k=mi((c[I+72>>2]|0)+56|0,c[x>>2]|0,z)|0;if((k|0)!=(z|0)){if(k|0){c[z+12>>2]=k;c[k+16>>2]=z}c[y>>2]=z;C=128;break}k=K+81|0;if((a[k>>0]|0)==0?(a[K+82>>0]|0)==0:0){a[k>>0]=1;if((c[K+180>>2]|0)>0)c[K+264>>2]=1;k=K+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[K+236>>2]|0;if(k){c[k+12>>2]=7;C=120}else C=120}else C=120}if((C|0)==120){if(c[K+480>>2]|0){Xd(K,z);C=128;break}N=z;if((c[K+304>>2]|0)>>>0<=N>>>0?(c[K+308>>2]|0)>>>0>N>>>0:0){C=K+300|0;c[z>>2]=c[C>>2];c[C>>2]=z;C=128;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](z);C=128;break}else{C=Wa[c[29352>>2]&127](z)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](z);C=128;break}}else C=128;while(0);if((C|0)==128)if(!g)C=130;else C=129;if((C|0)==129){ri(K,g);C=130}if((C|0)==130?(i|0)==0:0){Ra=M;return}ri(K,i);Ra=M;return}function jj(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=Ra;Ra=Ra+208|0;Q=U+184|0;O=U+176|0;N=U+160|0;M=U+152|0;L=U+136|0;K=U+128|0;J=U+112|0;I=U+104|0;D=U+96|0;A=U+88|0;z=U+80|0;y=U+72|0;x=U+64|0;w=U+56|0;u=U+48|0;t=U+40|0;s=U+32|0;r=U+24|0;P=U;T=c[f>>2]|0;if(a[T+81>>0]|0){qi(T,g);Ra=U;return}a:do if(!(a[T+165>>0]|0)){l=f+4|0;m=T+24|0;n=(c[m>>2]&1|0)==0;o=T+16|0;S=c[(c[o>>2]|0)+12>>2]|0;a[T+78>>0]=a[S+77>>0]|0;if(!((b[S+78>>1]&1)==0?(j=eh(T,0,l,0)|0,(j|0)!=0):0))E=5;b:do if((E|0)==5){j=c[T+20>>2]|0;if((j|0)>1)do{k=j;j=j+-1|0;if((b[(c[(c[o>>2]|0)+(j<<4)+12>>2]|0)+78>>1]&1)==0?(p=eh(T,j,l,0)|0,p|0):0){j=p;break b}}while((k|0)>2);if(n)c[m>>2]=c[m>>2]&-2;if(!(a[T+89>>0]|0))break a;c[m>>2]=c[m>>2]|16;break a}while(0);c[f+12>>2]=j;f=f+36|0;c[f>>2]=(c[f>>2]|0)+1;qi(T,g);Ra=U;return}while(0);m=(i|0)!=0;if(m){S=T+85|0;a[S>>0]=(a[S>>0]|0)+1<<24>>24}k=c[g+8>>2]|0;if(!k)j=g+12|0;else{l=c[(c[f>>2]|0)+16>>2]|0;j=0;while(1)if((c[l+(j<<4)+12>>2]|0)==(k|0))break;else j=j+1|0;j=l+(j<<4)|0}S=bd(f,h,c[g+16>>2]|0,c[j>>2]|0)|0;if(m){R=T+85|0;a[R>>0]=(a[R>>0]|0)+-1<<24>>24}if(!S){if(!m){qi(T,g);Ra=U;return}hl(f,c[g+12>>2]|0);qi(T,g);Ra=U;return}H=S+72|0;k=c[H>>2]|0;if(!k)R=-1e6;else{l=c[T+16>>2]|0;j=0;while(1)if((c[l+(j<<4)+12>>2]|0)==(k|0)){R=j;break}else j=j+1|0}B=S+56|0;if(c[B>>2]|0?Sk(f,S)|0:0){qi(T,g);Ra=U;return}i=(R|0)==1;j=i?34855:34585;o=c[(c[T+16>>2]|0)+(R<<4)>>2]|0;k=c[f>>2]|0;do if(((a[k+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(q=c[k+312>>2]|0,q|0):0){j=$a[q&127](c[k+316>>2]|0,9,j,0,o,c[f+240>>2]|0)|0;if((j|0)==1){cd(f,39216,r);c[f+12>>2]=23;qi(T,g);Ra=U;return}if((j|2|0)==2){if(!j)break;qi(T,g);Ra=U;return}else{cd(f,39231,s);c[f+12>>2]=1;qi(T,g);Ra=U;return}}while(0);do if(!h){if(!(c[B>>2]|0)){l=0;m=i?13:11;break}j=S+64|0;while(1){j=c[j>>2]|0;if((c[j>>2]|0)==(T|0))break;else j=j+24|0}l=c[(c[j+4>>2]|0)+4>>2]|0;m=30}else{l=0;m=i?15:17}while(0);j=c[S>>2]|0;k=c[f>>2]|0;do if((a[k+165>>0]|0)==0?(v=f+200|0,(a[v>>0]|0)==0):0){n=c[k+312>>2]|0;if(n){j=$a[n&127](c[k+316>>2]|0,m,j,l,o,c[f+240>>2]|0)|0;if((j|0)==1){cd(f,39216,t);c[f+12>>2]=23;qi(T,g);Ra=U;return}if((j|2|0)!=2){cd(f,39231,u);c[f+12>>2]=1;qi(T,g);Ra=U;return}if(j|0){qi(T,g);Ra=U;return}j=c[S>>2]|0;k=c[f>>2]|0;if(a[k+165>>0]|0){o=j;break}if(a[v>>0]|0){o=j;break}}l=c[k+312>>2]|0;if(l){j=$a[l&127](c[k+316>>2]|0,9,j,0,o,c[f+240>>2]|0)|0;if((j|0)==1){cd(f,39216,w);c[f+12>>2]=23;qi(T,g);Ra=U;return}if((j|2|0)!=2){cd(f,39231,x);c[f+12>>2]=1;qi(T,g);Ra=U;return}if(!j){o=c[S>>2]|0;break}else{qi(T,g);Ra=U;return}}else o=j}else o=j;while(0);c:do if(o|0){m=a[o>>0]|0;n=m<<24>>24==0;d:do if(n){j=39441;E=66}else{E=m&255;j=208+E|0;do if((E|32|0)==115){j=a[o+1>>0]|0;if(!(j<<24>>24)){j=39442;E=66;break d}E=j&255;j=208+E|0;if((E|32|0)==113){j=a[o+2>>0]|0;if(!(j<<24>>24)){j=39443;E=66;break d}j=j&255;if((j|32|0)!=108){l=108;j=208+j|0;break}j=a[o+3>>0]|0;if(!(j<<24>>24)){j=39444;E=66;break d}j=j&255;if((j|32|0)!=105){l=105;j=208+j|0;break}j=a[o+4>>0]|0;if(!(j<<24>>24)){j=39445;E=66;break d}j=j&255;if((j|32|0)!=116){l=116;j=208+j|0;break}j=a[o+5>>0]|0;if(!(j<<24>>24)){j=39446;E=66;break d}j=j&255;if((j|32|0)!=101){l=101;j=208+j|0;break}j=a[o+6>>0]|0;if(!(j<<24>>24)){j=39447;E=66;break d}if(j<<24>>24==95){E=75;break d}else{l=95;j=208+(j&255)|0}}else l=113}else l=115;while(0);k=d[j>>0]|0;j=l;E=70}while(0);if((E|0)==66){k=0;j=a[208+(d[j>>0]|0)>>0]|0;E=70}if((E|0)==70){if((k|0)!=(j&255|0))break;if(!n){j=m&255;if((j|32|0)==115)E=75;else{l=115;j=208+j|0;E=74}}else{j=42631;E=72}}do if((E|0)==75){j=a[o+1>>0]|0;if(j<<24>>24){x=j&255;j=208+x|0;if((x|32|0)==113){j=a[o+2>>0]|0;if(j<<24>>24){x=j&255;j=208+x|0;if((x|32|0)==108){j=a[o+3>>0]|0;if(j<<24>>24){j=j&255;if((j|32|0)!=105){l=105;j=208+j|0;E=74;break}j=a[o+4>>0]|0;if(!(j<<24>>24)){j=42635;E=72;break}j=j&255;if((j|32|0)!=116){l=116;j=208+j|0;E=74;break}j=a[o+5>>0]|0;if(!(j<<24>>24)){j=42636;E=72;break}j=j&255;if((j|32|0)!=101){l=101;j=208+j|0;E=74;break}j=a[o+6>>0]|0;if(!(j<<24>>24)){j=42637;E=72;break}if(j<<24>>24!=95){l=95;j=208+(j&255)|0;E=74;break}j=a[o+7>>0]|0;if(!(j<<24>>24)){j=42638;E=72;break}j=j&255;if((j|32|0)!=115){l=115;j=208+j|0;E=74;break}j=a[o+8>>0]|0;if(!(j<<24>>24)){j=42639;E=72;break}j=j&255;if((j|32|0)!=116){l=116;j=208+j|0;E=74;break}j=a[o+9>>0]|0;if(!(j<<24>>24)){j=42640;E=72;break}j=j&255;if((j|32|0)!=97){l=97;j=208+j|0;E=74;break}j=a[o+10>>0]|0;if(!(j<<24>>24)){j=42641;E=72;break}j=j&255;if((j|32|0)==116)break c;else{l=116;j=208+j|0;E=74}}else{j=42634;E=72}}else{l=108;E=74}}else{j=42633;E=72}}else{l=113;E=74}}else{j=42632;E=72}}while(0);if((E|0)==72){k=0;j=a[208+(d[j>>0]|0)>>0]|0}else if((E|0)==74){k=d[j>>0]|0;j=l}if((k|0)!=(j&255|0)){c[y>>2]=o;cd(f,42643,y);qi(T,g);Ra=U;return}}while(0);r=(h|0)!=0;j=(c[S+12>>2]|0)==0;if(r){if(j){c[z>>2]=o;cd(f,42671,z);qi(T,g);Ra=U;return}}else if(!j){c[A>>2]=o;cd(f,42705,A);qi(T,g);Ra=U;return}t=f+8|0;s=f+116|0;if(!(c[t>>2]|0)){m=c[f>>2]|0;if((c[s>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[f+23>>0]=1;e:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))E=97;else{qi(T,g);Ra=U;return}else{do if((e[m+276>>1]|0)>=224){j=m+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];A=m+284|0;c[A>>2]=(c[A>>2]|0)+1;break e}j=m+296|0;k=c[j>>2]|0;if(!k){j=m+292|0;break}else{c[j>>2]=c[k>>2];A=m+284|0;c[A>>2]=(c[A>>2]|0)+1;break e}}else j=m+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;E=97}while(0);if((E|0)==97)k=_d(m,224,0)|0;if(!k){qi(T,g);Ra=U;return}j=k+104|0;l=j+120|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));c[k>>2]=m;j=m+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[t>>2]=k;Di(k,61,0,1,0)|0}q=c[s>>2]|0;q=(q|0)==0?f:q;j=q+84|0;k=c[j>>2]|0;p=1<>2]=k|p,i):0)?(F=c[q>>2]|0,C=F+16|0,(c[(c[C>>2]|0)+20>>2]|0)==0):0)?(a[q+199>>0]|0)==0:0){j=Pe(c[F>>2]|0,0,F,P,0,542)|0;if(j|0){cd(q,32157,D);c[q+12>>2]=j;break}D=c[P>>2]|0;c[(c[C>>2]|0)+20>>2]=D;j=c[F+92>>2]|0;m=c[D+4>>2]|0;c[m+4>>2]=c[D>>2];do if(!(b[m+22>>1]&2)){n=m+32|0;o=m+36|0;i=(c[n>>2]|0)-(c[o>>2]|0)|0;do if((j+-512|0)>>>0<65025){if(j+-1&j|0)break;c[n>>2]=j;l=m+80|0;j=c[l>>2]|0;if(!j)break;k=j+-4|0;c[l>>2]=k;j=k;do if((c[14816]|0)>>>0<=j>>>0)if((c[14817]|0)>>>0>j>>>0){c[14979]=(c[14979]|0)+-1;c[k>>2]=c[14819];c[14819]=k;D=(c[14820]|0)+1|0;c[14820]=D;c[14821]=(D|0)<(c[14815]|0)&1;break}else{j=Wa[c[29352>>2]&127](k)|0;E=117;break}else{j=Wa[c[29352>>2]&127](k)|0;E=117}while(0);do if((E|0)==117){c[14980]=(c[14980]|0)-j;if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{D=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-D;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);c[l>>2]=0}while(0);D=Se(c[m>>2]|0,n,i)|0;c[o>>2]=(c[n>>2]|0)-(i&65535);if((D|0)!=7)break;j=F+81|0;do if(!(a[j>>0]|0)){if(a[F+82>>0]|0)break;a[j>>0]=1;if((c[F+180>>2]|0)>0)c[F+264>>2]=1;j=F+272|0;c[j>>2]=(c[j>>2]|0)+1;j=c[F+236>>2]|0;if(!j)break;c[j+12>>2]=7}while(0);break f}while(0)}while(0);F=q+80|0;c[F>>2]=c[F>>2]|p;F=q+20|0;a[F>>0]=a[F>>0]|1;if(r){il(f,S,R,h);qi(T,g);Ra=U;return}k=c[S>>2]|0;l=c[(c[(c[f>>2]|0)+16>>2]|0)+(R<<4)>>2]|0;c[I>>2]=1;Cb(24,P,42737,I)|0;if(Sd(c[f>>2]|0,P,l)|0){c[J>>2]=l;c[J+4>>2]=P;c[J+8>>2]=38087;c[J+12>>2]=k;Ak(f,42751,J)}c[K>>2]=2;Cb(24,P,42737,K)|0;if(Sd(c[f>>2]|0,P,l)|0){c[L>>2]=l;c[L+4>>2]=P;c[L+8>>2]=38087;c[L+12>>2]=k;Ak(f,42751,L)}c[M>>2]=3;Cb(24,P,42737,M)|0;if(Sd(c[f>>2]|0,P,l)|0){c[N>>2]=l;c[N+4>>2]=P;c[N+8>>2]=38087;c[N+12>>2]=k;Ak(f,42751,N)}c[O>>2]=4;Cb(24,P,42737,O)|0;j=c[f>>2]|0;if(!(Sd(j,P,l)|0))q=j;else{c[Q>>2]=l;c[Q+4>>2]=P;c[Q+8>>2]=38087;c[Q+12>>2]=k;Ak(f,42751,Q);q=c[f>>2]|0}r=q+32|0;g:do if(!((c[r>>2]&16384|0)==0&0==0)){if(c[B>>2]|0)break;j=c[t>>2]|0;h:do if(!j){do if(!(c[s>>2]|0)){if(b[q+76>>1]&8)break;a[f+23>>0]=1}while(0);i:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))E=149;else{p=0;break h}else{do if((e[q+276>>1]|0)>=224){j=q+300|0;k=c[j>>2]|0;if(k|0){c[j>>2]=c[k>>2];Q=q+284|0;c[Q>>2]=(c[Q>>2]|0)+1;break i}j=q+296|0;k=c[j>>2]|0;if(!k){j=q+292|0;break}else{c[j>>2]=c[k>>2];Q=q+284|0;c[Q>>2]=(c[Q>>2]|0)+1;break i}}else j=q+288|0;while(0);c[j>>2]=(c[j>>2]|0)+1;E=149}while(0);if((E|0)==149)k=_d(q,224,0)|0;if(!k){p=0;break}j=k+104|0;l=j+120|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(l|0));c[k>>2]=q;j=q+4|0;l=c[j>>2]|0;if(l|0)c[l+4>>2]=k;c[k+8>>2]=l;c[k+4>>2]=0;c[j>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[t>>2]=k;Di(k,61,0,1,0)|0;p=k}else p=j;while(0);i=c[S>>2]|0;m=c[H>>2]|0;n=c[m+68>>2]|0;if(!n){k=m+60|0;j=m+64|0}else{k=a[i>>0]|0;if(!(k<<24>>24))j=0;else{j=0;l=i;do{l=l+1|0;j=G(j+(d[208+(k&255)>>0]|0)|0,-1640531535)|0;k=a[l>>0]|0}while(k<<24>>24!=0)}j=(j>>>0)%((c[m+56>>2]|0)>>>0)|0;k=n+(j<<3)|0;j=n+(j<<3)+4|0}k=c[k>>2]|0;j:do if(!k)j=59292;else{o=d[208+(d[i>>0]|0)>>0]|0;while(1){j=c[j>>2]|0;k=k+-1|0;m=c[j+12>>2]|0;Q=a[m>>0]|0;l=(d[208+(Q&255)>>0]|0)-o|0;if(!(Q<<24>>24==0|(l|0)!=0)){n=i;do{m=m+1|0;n=n+1|0;Q=a[m>>0]|0;l=(d[208+(Q&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(Q<<24>>24==0|(l|0)!=0))}if(!l)break j;if(!k){j=59292;break}}}while(0);do if(!(c[j+8>>2]|0)){j=c[S+16>>2]|0;if(!j)break g;while(1){if(a[j+24>>0]|0)break;if(!((c[r>>2]&524288|0)==0&0==0))break;j=c[j+4>>2]|0;if(!j)break g}k=f+56|0;j=(c[k>>2]|0)+-1|0;c[k>>2]=j;k=p+108|0;l=c[k>>2]|0;if((c[p+112>>2]|0)>(l|0)){c[k>>2]=l+1;m=c[p+104>>2]|0;a[m+(l*20|0)>>0]=46;b[m+(l*20|0)+2>>1]=0;c[m+(l*20|0)+4>>2]=1;c[m+(l*20|0)+8>>2]=j;c[m+(l*20|0)+12>>2]=0;c[m+(l*20|0)+16>>2]=0;a[m+(l*20|0)+1>>0]=0;m=j;break}else{Di(p,46,1,j,0)|0;m=j;break}}else m=0;while(0);Q=f+146|0;a[Q>>0]=1;sj(f,ik(q,g,0)|0,0);a[Q>>0]=0;if((c[r>>2]&524288|0)==0&0==0){j=p+108|0;k=c[j>>2]|0;l=k+2|0;if((c[p+112>>2]|0)>(k|0)){c[j>>2]=k+1;Q=c[p+104>>2]|0;a[Q+(k*20|0)>>0]=46;b[Q+(k*20|0)+2>>1]=0;c[Q+(k*20|0)+4>>2]=0;c[Q+(k*20|0)+8>>2]=l;c[Q+(k*20|0)+12>>2]=0;c[Q+(k*20|0)+16>>2]=0;a[Q+(k*20|0)+1>>0]=0}else Di(p,46,0,l,0)|0;Uj(f,787,2,0,-1,4)}if(!m)break;k=c[p+12>>2]|0;j=~m;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0){mk(k,p,j);break}else{c[(c[k+64>>2]|0)+(j<<2)>>2]=c[p+108>>2];break}}while(0);il(f,S,R,0);qi(T,g);Ra=U;return} -function rj(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=Ra;Ra=Ra+48|0;s=u+32|0;t=u+16|0;r=u;p=u+36|0;c[p>>2]=e;c[p+4>>2]=f;c[p+8>>2]=g;a:do if(!e)h=0;else{o=0;h=0;n=e;b:while(1){m=c[n+4>>2]|0;if((m|0)<=0)break;c:do if((m|0)==7){j=c[n>>2]|0;if(!j)break b;i=a[j>>0]|0;d:do if(!(i<<24>>24)){i=18240;q=10}else{l=i&255;i=208+l|0;do if((l|32|0)==110){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18241;q=10;break d}l=i&255;i=208+l|0;if((l|32|0)==97){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18242;q=10;break d}l=i&255;i=208+l|0;if((l|32|0)==116){i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18243;q=10;break d}l=i&255;i=208+l|0;if((l|32|0)==117){i=a[j+4>>0]|0;if(!(i<<24>>24)){i=18244;q=10;break d}l=i&255;i=208+l|0;if((l|32|0)==114){i=a[j+5>>0]|0;if(!(i<<24>>24)){i=18245;q=10;break d}i=i&255;if((i|32|0)!=97){k=97;i=208+i|0;break}i=a[j+6>>0]|0;if(!(i<<24>>24)){i=18246;q=10;break d}i=i&255;if((i|32|0)==108){i=0;break c}else{k=108;i=208+i|0}}else k=114}else k=117}else k=116}else k=97}else k=110;while(0);j=d[i>>0]|0;i=k}while(0);if((q|0)==10){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0))i=0;else q=12}else q=12;while(0);e:do if((q|0)==12){q=0;l=(m|0)==4;if(l){j=c[n>>2]|0;if(!j)break b;i=a[j>>0]|0;do if(!(i<<24>>24)){i=18246;q=28}else{k=i&255;i=208+k|0;if((k|32|0)==108){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18247;q=28;break}k=i&255;i=208+k|0;if((k|32|0)==101){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18248;q=28;break}k=i&255;i=208+k|0;if((k|32|0)==102){i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18249;q=28;break}i=i&255;if((i|32|0)==116){i=1;break e}else{k=116;i=208+i|0}}else k=102}else k=101}else k=108;j=d[i>>0]|0;i=k}while(0);if((q|0)==28){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0)){i=1;break}}else l=0;m=(m|0)==5;if(m){j=c[n>>2]|0;if(!j)break b;i=a[j>>0]|0;do if(!(i<<24>>24)){i=18250;q=37}else{k=i&255;i=208+k|0;if((k|32|0)==111){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18251;q=37;break}k=i&255;i=208+k|0;if((k|32|0)==117){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18252;q=37;break}k=i&255;i=208+k|0;if((k|32|0)==116){i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18253;q=37;break}k=i&255;i=208+k|0;if((k|32|0)==101){i=a[j+4>>0]|0;if(!(i<<24>>24)){i=18254;q=37;break}i=i&255;if((i|32|0)==114){i=2;break e}else{k=114;i=208+i|0}}else k=101}else k=116}else k=117}else k=111;j=d[i>>0]|0;i=k}while(0);if((q|0)==37){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0)){i=2;break}if(m){j=c[n>>2]|0;if(j){i=a[j>>0]|0;f:do if(!(i<<24>>24)){i=18254;q=45}else{m=i&255;i=208+m|0;do if((m|32|0)==114){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18255;q=45;break f}i=i&255;if((i|32|0)!=105){k=105;i=208+i|0;break}i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18256;q=45;break f}i=i&255;if((i|32|0)!=103){k=103;i=208+i|0;break}i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18257;q=45;break f}i=i&255;if((i|32|0)!=104){k=104;i=208+i|0;break}i=a[j+4>>0]|0;if(!(i<<24>>24)){i=18258;q=45;break f}i=i&255;if((i|32|0)==116){i=3;break e}else{k=116;i=208+i|0}}else k=114;while(0);j=d[i>>0]|0;i=k}while(0);if((q|0)==45){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0)){i=3;break}else i=1}else i=1}else i=0;if(l){l=i;q=48}else l=i}else if(l){l=0;q=48}else break b;if((q|0)==48){q=0;j=c[n>>2]|0;if(j){i=a[j>>0]|0;do if(!(i<<24>>24)){i=18259;q=53}else{m=i&255;i=208+m|0;if((m|32|0)==102){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18260;q=53;break}m=i&255;i=208+m|0;if((m|32|0)==117){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18261;q=53;break}m=i&255;i=208+m|0;if((m|32|0)==108){i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18262;q=53;break}i=i&255;if((i|32|0)==108){i=4;break e}else{k=108;i=208+i|0}}else k=108}else k=117}else k=102;j=d[i>>0]|0;i=k}while(0);if((q|0)==53){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0)){i=4;break}}}if(!l)break b;j=c[n>>2]|0;if(!j)break b;i=a[j>>0]|0;do if(!(i<<24>>24)){i=18263;q=61}else{m=i&255;i=208+m|0;if((m|32|0)==105){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18264;q=61;break}m=i&255;i=208+m|0;if((m|32|0)==110){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18265;q=61;break}m=i&255;i=208+m|0;if((m|32|0)==110){i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18266;q=61;break}m=i&255;i=208+m|0;if((m|32|0)==101){i=a[j+4>>0]|0;if(!(i<<24>>24)){i=18267;q=61;break}i=i&255;if((i|32|0)==114){i=5;break e}else{k=114;i=208+i|0}}else k=101}else k=110}else k=110}else k=105;j=d[i>>0]|0;i=k}while(0);if((q|0)==61){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)!=(i&255|0)){if(!l)break b;j=c[n>>2]|0;if(!j)break b;i=a[j>>0]|0;g:do if(!(i<<24>>24)){i=18268;q=69}else{n=i&255;i=208+n|0;do if((n|32|0)==99){i=a[j+1>>0]|0;if(!(i<<24>>24)){i=18269;q=69;break g}n=i&255;i=208+n|0;if((n|32|0)==114){i=a[j+2>>0]|0;if(!(i<<24>>24)){i=18270;q=69;break g}i=i&255;if((i|32|0)!=111){k=111;i=208+i|0;break}i=a[j+3>>0]|0;if(!(i<<24>>24)){i=18271;q=69;break g}i=i&255;if((i|32|0)!=115){k=115;i=208+i|0;break}i=a[j+4>>0]|0;if(!(i<<24>>24)){i=18272;q=69;break g}i=i&255;if((i|32|0)==115){i=6;break e}else{k=115;i=208+i|0}}else k=114}else k=99;while(0);j=d[i>>0]|0;i=k}while(0);if((q|0)==69){q=0;j=0;i=a[208+(d[i>>0]|0)>>0]|0}if((j|0)==(i&255|0))i=6;else break b}else i=5}while(0);h=h|(d[18288+(i*3|0)+2>>0]|0);o=o+1|0;if(o>>>0>=3)break a;n=c[p+(o<<2)>>2]|0;if(!n)break a}h=h|64}while(0);if((h&33|0)!=33&(h&64|0)==0){if((h&32|0)==0|(h&24|0)==8){t=h;Ra=u;return t|0}cd(b,44559,s);t=1;Ra=u;return t|0}if(!g){c[t>>2]=e;c[t+4>>2]=f;c[t+8>>2]=44514;c[t+12>>2]=0;cd(b,44515,t);t=1;Ra=u;return t|0}else{c[r>>2]=e;c[r+4>>2]=f;c[r+8>>2]=44513;c[r+12>>2]=g;cd(b,44515,r);t=1;Ra=u;return t|0}return 0}function sj(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=Ra;Ra=Ra+112|0;E=U+32|0;C=U+24|0;w=U+16|0;v=U+8|0;o=U;D=U+80|0;P=U+76|0;Q=U+72|0;F=U+40|0;c[P>>2]=0;c[Q>>2]=0;T=c[f>>2]|0;a:do if((c[f+36>>2]|0)==0?(K=T+81|0,(a[K>>0]|0)==0):0){j=c[g+8>>2]|0;if(!j)i=g+12|0;else{k=c[T+16>>2]|0;i=0;while(1)if((c[k+(i<<4)+12>>2]|0)==(j|0))break;else i=i+1|0;i=k+(i<<4)|0}R=bd(f,0,c[g+16>>2]|0,c[i>>2]|0)|0;i=c[f>>2]|0;j=g+24|0;k=c[j>>2]|0;do if(k|0){if(i|0?c[i+480>>2]|0:0){Vi(i,k);break}N=k+32|0;O=(c[N>>2]|0)+-1|0;c[N>>2]=O;if(!O)Vi(i,k)}while(0);c[j>>2]=R;if(R){O=R+32|0;c[O>>2]=(c[O>>2]|0)+1;b:do if(a[g+45>>0]&2){m=c[g+72>>2]|0;i=c[R+8>>2]|0;c:do if(i|0){n=d[208+(d[m>>0]|0)>>0]|0;while(1){k=c[i>>2]|0;O=a[k>>0]|0;j=(d[208+(O&255)>>0]|0)-n|0;if(!(O<<24>>24==0|(j|0)!=0)){l=m;do{k=k+1|0;l=l+1|0;O=a[k>>0]|0;j=(d[208+(O&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(O<<24>>24==0|(j|0)!=0))}if(!j)break;i=c[i+20>>2]|0;if(!i)break c}c[g+76>>2]=i;break b}while(0);c[o>>2]=m;c[o+4>>2]=0;cd(f,41107,o);a[f+17>>0]=1;i=0;break a}while(0);i=c[f>>2]|0;s=c[i+32>>2]|0;do if(!((s&262144|0)==0&0==0)?(q=c[(c[i+16>>2]|0)+28>>2]|0,(a[f+146>>0]|0)==0):0){p=c[R+72>>2]|0;if((p|0)!=(q|0)?(r=c[q+48>>2]|0,(r|0)!=0):0){o=R+68|0;n=r;i=0;do{m=c[n+8>>2]|0;if((c[m+24>>2]|0)==(p|0)){k=c[m+4>>2]|0;l=c[R>>2]|0;O=a[k>>0]|0;j=(d[208+(O&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0;if(!(O<<24>>24==0|(j|0)!=0))do{k=k+1|0;l=l+1|0;O=a[k>>0]|0;j=(d[208+(O&255)>>0]|0)-(d[208+(d[l>>0]|0)>>0]|0)|0}while(!(O<<24>>24==0|(j|0)!=0));if(!j){if(!i)i=c[o>>2]|0;c[m+32>>2]=i;i=m}}n=c[n>>2]|0}while((n|0)!=0);if(!i)S=40}else S=40;if((S|0)==40){i=c[R+68>>2]|0;if(!i){S=46;break}}j=0;k=i;do{if((a[k+8>>0]|0)==121)j=j|d[k+9>>0];k=c[k+32>>2]|0}while((k|0)!=0);if(j){j=(c[R+12>>2]|0)!=0;if(!i)S=48;else{I=i;x=1;i=1}}else S=46}else S=46;while(0);if((S|0)==46){j=(c[R+12>>2]|0)!=0;S=48}if((S|0)==48){if(!((s&16384|0)==0&0==0)){p=c[R>>2]|0;m=c[R+72>>2]|0;n=c[m+68>>2]|0;if(!n){k=m+60|0;i=m+64|0}else{k=a[p>>0]|0;if(!(k<<24>>24))i=0;else{i=0;l=p;do{l=l+1|0;i=G(i+(d[208+(k&255)>>0]|0)|0,-1640531535)|0;k=a[l>>0]|0}while(k<<24>>24!=0)}i=(i>>>0)%((c[m+56>>2]|0)>>>0)|0;k=n+(i<<3)|0;i=n+(i<<3)+4|0}k=c[k>>2]|0;d:do if(!k)i=59292;else{o=d[208+(d[p>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;k=k+-1|0;m=c[i+12>>2]|0;O=a[m>>0]|0;l=(d[208+(O&255)>>0]|0)-o|0;if(!(O<<24>>24==0|(l|0)!=0)){n=p;do{m=m+1|0;n=n+1|0;O=a[m>>0]|0;l=(d[208+(O&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(O<<24>>24==0|(l|0)!=0))}if(!l)break d;if(!k){i=59292;break}}}while(0);if(!(c[i+8>>2]|0))i=(c[R+16>>2]|0)!=0&1;else i=1}else i=0;I=0;x=(i|0)!=0;i=0}u=x&1;if((Sk(f,R)|0)==0?(Fm(f,R,i)|0)==0:0){k=c[R+72>>2]|0;l=c[T+16>>2]|0;if(!k)z=-1e6;else{i=0;while(1)if((c[l+(i<<4)+12>>2]|0)==(k|0)){z=i;break}else i=i+1|0}m=c[R>>2]|0;i=c[l+(z<<4)>>2]|0;k=c[f>>2]|0;if(((a[k+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(t=c[k+312>>2]|0,(t|0)!=0):0){i=$a[t&127](c[k+316>>2]|0,9,m,0,i,c[f+240>>2]|0)|0;if((i|0)==1){cd(f,39216,v);c[f+12>>2]=23;i=0;break}if((i|2|0)!=2){cd(f,39231,w);c[f+12>>2]=1;i=0;break}}else i=0;w=f+40|0;J=c[w>>2]|0;A=J+1|0;c[w>>2]=A;c[g+48>>2]=J;y=R+8|0;k=c[y>>2]|0;if(!k)B=0;else{l=0;m=A;do{m=m+1|0;l=l+1|0;k=c[k+20>>2]|0}while((k|0)!=0);c[w>>2]=m;B=l}if(j){O=f+240|0;N=c[O>>2]|0;c[O>>2]=c[R>>2];O=f}else{N=0;O=0}v=f+8|0;k=c[v>>2]|0;e:do if(!k){n=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[n+76>>1]&8)==0:0)a[f+23>>0]=1;f:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))S=97;else{i=0;break e}else{do if((e[n+276>>1]|0)>=224){k=n+300|0;l=c[k>>2]|0;if(l|0){c[k>>2]=c[l>>2];m=n+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break f}k=n+296|0;l=c[k>>2]|0;if(!l){k=n+292|0;break}else{c[k>>2]=c[l>>2];m=n+284|0;c[m>>2]=(c[m>>2]|0)+1;m=l;break f}}else k=n+288|0;while(0);c[k>>2]=(c[k>>2]|0)+1;S=97}while(0);if((S|0)==97)m=_d(n,224,0)|0;if(!m)i=0;else{o=m+104|0;q=o+120|0;do{c[o>>2]=0;o=o+4|0}while((o|0)<(q|0));c[m>>2]=n;k=n+4|0;l=c[k>>2]|0;if(l|0)c[l+4>>2]=m;c[m+8>>2]=l;c[m+4>>2]=0;c[k>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[v>>2]=m;Di(m,61,0,1,0)|0;M=m;S=102}}else{M=k;S=102}while(0);g:do if((S|0)==102){L=f+18|0;if(!(a[L>>0]|0)){H=M+149|0;t=d[H>>0]|d[H+1>>0]<<8|32;a[H>>0]=t;a[H+1>>0]=t>>8}H=f+116|0;t=c[H>>2]|0;t=(t|0)==0?f:t;k=t+84|0;l=c[k>>2]|0;s=1<>2]=l|s,(z|0)==1):0){r=c[t>>2]|0;k=r+16|0;if(c[(c[k>>2]|0)+20>>2]|0)break;if(a[t+199>>0]|0)break;l=Pe(c[r>>2]|0,0,r,D,0,542)|0;if(l|0){cd(t,32157,C);c[t+12>>2]=l;break}C=c[D>>2]|0;c[(c[k>>2]|0)+20>>2]=C;k=c[r+92>>2]|0;n=c[C+4>>2]|0;c[n+4>>2]=c[C>>2];do if(!(b[n+22>>1]&2)){o=n+32|0;p=n+36|0;q=(c[o>>2]|0)-(c[p>>2]|0)|0;do if((k+-512|0)>>>0<65025){if(k+-1&k|0)break;c[o>>2]=k;m=n+80|0;k=c[m>>2]|0;if(!k)break;l=k+-4|0;c[m>>2]=l;k=l;do if((c[14816]|0)>>>0<=k>>>0)if((c[14817]|0)>>>0>k>>>0){c[14979]=(c[14979]|0)+-1;c[l>>2]=c[14819];c[14819]=l;C=(c[14820]|0)+1|0;c[14820]=C;c[14821]=(C|0)<(c[14815]|0)&1;break}else{k=Wa[c[29352>>2]&127](l)|0;S=119;break}else{k=Wa[c[29352>>2]&127](l)|0;S=119}while(0);do if((S|0)==119){c[14980]=(c[14980]|0)-k;if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{C=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-C;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);c[m>>2]=0}while(0);C=Se(c[n>>2]|0,o,q)|0;c[p>>2]=(c[o>>2]|0)-(q&65535);if((C|0)!=7)break;k=r+81|0;do if(!(a[k>>0]|0)){if(a[r+82>>0]|0)break;a[k>>0]=1;if((c[r+180>>2]|0)>0)c[r+264>>2]=1;k=r+272|0;c[k>>2]=(c[k>>2]|0)+1;k=c[r+236>>2]|0;if(!k)break;c[k+12>>2]=7}while(0);break h}while(0)}while(0);C=t+80|0;c[C>>2]=c[C>>2]|s;C=t+20|0;a[C>>0]=d[C>>0]|u;if(j){Gm(f,R,h,J);c[Q>>2]=J;c[P>>2]=J}C=F+8|0;c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;c[C+12>>2]=0;c[C+16>>2]=0;c[C+20>>2]=0;c[F>>2]=f;c[F+4>>2]=g;i:do if(h){l=F+24|0;b[l>>1]=0;c[D>>2]=f;c[D+4>>2]=125;c[D+8>>2]=126;c[D+12>>2]=0;c[D+24>>2]=F;m=h+24|0;k=f+208|0;C=(c[k>>2]|0)+(c[m>>2]|0)|0;c[k>>2]=C;k=c[(c[f>>2]|0)+120>>2]|0;do if((k|0)>=(C|0)){_j(D,h)|0;k=c[D>>2]|0;E=k+208|0;c[E>>2]=(c[E>>2]|0)-(c[m>>2]|0);E=h+4|0;c[E>>2]=c[E>>2]|b[l>>1]&-32752&65535;if((c[F+20>>2]|0)>0)break;if((c[k+36>>2]|0)<1)break i;else{i=0;break g}}else{c[E>>2]=k;cd(f,41637,E)}while(0);i=0;break g}while(0);do if(!(0==0?(c[T+32>>2]&128|0)==0:0)){if(a[L>>0]|0){D=0;break}if(c[f+120>>2]|0){D=0;break}l=f+44|0;k=(c[l>>2]|0)+1|0;c[l>>2]=k;l=M+108|0;m=c[l>>2]|0;if((c[M+112>>2]|0)>(m|0)){c[l>>2]=m+1;D=c[M+104>>2]|0;a[D+(m*20|0)>>0]=70;b[D+(m*20|0)+2>>1]=0;c[D+(m*20|0)+4>>2]=0;c[D+(m*20|0)+8>>2]=k;c[D+(m*20|0)+12>>2]=0;c[D+(m*20|0)+16>>2]=0;a[D+(m*20|0)+1>>0]=0;D=k;break}else{Di(M,70,0,k,0)|0;D=k;break}}else D=0;while(0);do if(x|((h|0)!=0|(i|0)!=0))S=166;else{if(c[R+56>>2]|0){S=166;break}i=R+28|0;Hj(f,z,c[i>>2]|0,1,c[R>>2]|0);do if(!(c[R+36>>2]&32)){j=c[i>>2]|0;k=(D|0)==0?-1:D;m=c[R>>2]|0;l=M+108|0;i=c[l>>2]|0;if((c[M+112>>2]|0)>(i|0)){c[l>>2]=i+1;R=c[M+104>>2]|0;a[R+(i*20|0)>>0]=-119;b[R+(i*20|0)+2>>1]=0;c[R+(i*20|0)+4>>2]=j;c[R+(i*20|0)+8>>2]=z;c[R+(i*20|0)+12>>2]=k;c[R+(i*20|0)+16>>2]=0;a[R+(i*20|0)+1>>0]=0}else i=Di(M,137,j,z,k)|0;if(a[(c[M>>2]|0)+81>>0]|0)break;if((i|0)<0)i=(c[l>>2]|0)+-1|0;j=c[M+104>>2]|0;k=j+(i*20|0)+1|0;if(a[k>>0]|0){Ei(M,j+(i*20|0)|0,m,-1);break}if(!m)break;c[j+(i*20|0)+16>>2]=m;a[k>>0]=-1}while(0);i=c[y>>2]|0;if(!i){i=0;break}l=M+108|0;m=M+112|0;n=M+104|0;do{j=c[i+44>>2]|0;k=c[l>>2]|0;if((c[m>>2]|0)>(k|0)){c[l>>2]=k+1;R=c[n>>2]|0;a[R+(k*20|0)>>0]=-119;b[R+(k*20|0)+2>>1]=0;c[R+(k*20|0)+4>>2]=j;c[R+(k*20|0)+8>>2]=z;c[R+(k*20|0)+12>>2]=0;c[R+(k*20|0)+16>>2]=0;a[R+(k*20|0)+1>>0]=0}else Di(M,137,j,z,0)|0;i=c[i+20>>2]|0}while((i|0)!=0);i=0}while(0);do if((S|0)==166){r=x|(b[F+24>>1]&64)!=0?1044:1052;j:do if(!(c[R+36>>2]&32)){i=f+44|0;l=(c[i>>2]|0)+1|0;c[i>>2]=l;i=M+108|0;k=c[i>>2]|0;if((c[M+112>>2]|0)>(k|0)){c[i>>2]=k+1;s=c[M+104>>2]|0;a[s+(k*20|0)>>0]=73;b[s+(k*20|0)+2>>1]=0;c[s+(k*20|0)+4>>2]=0;c[s+(k*20|0)+8>>2]=l;c[s+(k*20|0)+12>>2]=0;c[s+(k*20|0)+16>>2]=0;a[s+(k*20|0)+1>>0]=0;s=0;C=0;p=1;u=0;i=0;break}else{Di(M,73,0,l,0)|0;s=0;C=0;p=1;u=0;i=0;break}}else{i=c[y>>2]|0;k:do if(!i)i=0;else while(1){F=i+55|0;if(((d[F>>0]|d[F+1>>0]<<8)&3)==2)break k;i=c[i+20>>2]|0;if(!i){i=0;break}}while(0);p=b[i+50>>1]|0;o=f+44|0;k=c[o>>2]|0;q=k+1|0;m=p<<16>>16;c[o>>2]=k+m;o=c[w>>2]|0;c[w>>2]=o+1;k=M+108|0;l=c[k>>2]|0;if((c[M+112>>2]|0)>(l|0)){c[k>>2]=l+1;F=c[M+104>>2]|0;a[F+(l*20|0)>>0]=113;b[F+(l*20|0)+2>>1]=0;c[F+(l*20|0)+4>>2]=o;c[F+(l*20|0)+8>>2]=m;c[F+(l*20|0)+12>>2]=0;c[F+(l*20|0)+16>>2]=0;a[F+(l*20|0)+1>>0]=0}else l=Di(M,113,o,m,0)|0;k=c[v>>2]|0;n=Ij(f,i)|0;if(!n){s=l;l=0;C=o;u=q;break}m=c[k>>2]|0;if(!(a[m+81>>0]|0)){C=c[k+104>>2]|0;s=(c[k+108>>2]|0)+-1|0;a[C+(s*20|0)+1>>0]=-9;c[C+(s*20|0)+16>>2]=n;s=l;l=0;C=o;u=q;break}if(c[m+480>>2]|0){s=l;l=0;C=o;u=q;break}F=(c[n>>2]|0)+-1|0;c[n>>2]=F;if(F|0){s=l;l=0;C=o;u=q;break}k=c[n+12>>2]|0;do if(k|0){if(c[k+480>>2]|0){Xd(k,n);s=l;l=0;C=o;u=q;break j}m=n;if((c[k+304>>2]|0)>>>0>m>>>0)break;if((c[k+308>>2]|0)>>>0<=m>>>0)break;s=k+300|0;c[n>>2]=c[s>>2];c[s>>2]=n;s=l;l=0;C=o;u=q;break j}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);s=l;l=0;C=o;u=q;break}else{s=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);s=l;l=0;C=o;u=q;break}}while(0);A=ql(f,g,h,0,0,r,A)|0;if(!A){i=0;break g}v=A+24|0;o=c[v>>2]|0;v=c[v+4>>2]|0;w=a[A+49>>0]|0;x=w<<24>>24==1;if(!x){F=c[H>>2]|0;a[((F|0)==0?f:F)+20>>0]=1}do if(D|0){k=M+108|0;m=c[k>>2]|0;if((c[M+112>>2]|0)>(m|0)){c[k>>2]=m+1;F=c[M+104>>2]|0;a[F+(m*20|0)>>0]=83;b[F+(m*20|0)+2>>1]=0;c[F+(m*20|0)+4>>2]=D;c[F+(m*20|0)+8>>2]=1;c[F+(m*20|0)+12>>2]=0;c[F+(m*20|0)+16>>2]=0;a[F+(m*20|0)+1>>0]=0;break}else{Di(M,83,D,1,0)|0;break}}while(0);z=(i|0)!=0;do if(!z){m=f+44|0;k=(c[m>>2]|0)+1|0;c[m>>2]=k;m=M+108|0;n=c[m>>2]|0;if((c[M+112>>2]|0)>(n|0)){c[m>>2]=n+1;F=c[M+104>>2]|0;a[F+(n*20|0)>>0]=-128;b[F+(n*20|0)+2>>1]=0;c[F+(n*20|0)+4>>2]=J;c[F+(n*20|0)+8>>2]=k;c[F+(n*20|0)+12>>2]=0;c[F+(n*20|0)+16>>2]=0;a[F+(n*20|0)+1>>0]=0;n=k;break}else{Di(M,128,J,k,0)|0;n=k;break}}else{m=p<<16>>16;if(p<<16>>16<=0){n=u;break}n=i+4|0;k=0;do{Vj(M,R,J,b[(c[n>>2]|0)+(k<<1)>>1]|0,k+u|0);k=k+1|0}while((k|0)!=(m|0));n=u}while(0);y=w<<24>>24!=0;l:do if(y){m=B+2|0;m:do if(c[T+272>>2]|0){if(!(a[K>>0]|0))S=216}else{do if(!(0<0|(0==0?(e[T+276>>1]|0)>>>0>>0:0))){k=T+300|0;i=c[k>>2]|0;if(i|0){c[k>>2]=c[i>>2];S=T+284|0;c[S>>2]=(c[S>>2]|0)+1;S=217;break m}k=T+296|0;i=c[k>>2]|0;if(!i){i=T+292|0;break}else{c[k>>2]=c[i>>2];S=T+284|0;c[S>>2]=(c[S>>2]|0)+1;S=217;break m}}else i=T+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;S=216}while(0);if((S|0)==216){i=_d(T,m,0)|0;S=217}do if((S|0)==217){if(!i)break;K=B+1|0;gw(i|0,1,K|0)|0;a[i+K>>0]=0;if((o|0)>-1)a[i+(o-J)>>0]=0;if((v|0)>-1)a[i+(v-J)>>0]=0;do if(s|0){k=c[M>>2]|0;if(a[k+81>>0]|0)break;K=c[M+104>>2]|0;E=K+(s*20|0)+1|0;F=K+(s*20|0)+16|0;kg(k,a[E>>0]|0,c[F>>2]|0);a[E>>0]=0;c[F>>2]=0;a[K+(s*20|0)>>0]=-86}while(0);r=f+56|0;s=(c[r>>2]|0)+-1|0;c[r>>2]=s;r=n;break l}while(0);sl(A);i=0;break g}else{do if(!z){i=M+108|0;k=c[i>>2]|0;if((c[M+112>>2]|0)>(k|0)){c[i>>2]=k+1;i=c[M+104>>2]|0;a[i+(k*20|0)>>0]=-108;b[i+(k*20|0)+2>>1]=0;c[i+(k*20|0)+4>>2]=l;c[i+(k*20|0)+8>>2]=n;c[i+(k*20|0)+12>>2]=0;c[i+(k*20|0)+16>>2]=0;a[i+(k*20|0)+1>>0]=0;i=1;k=n;break}else{Di(M,148,l,n,0)|0;i=1;k=n;break}}else{t=f+44|0;k=(c[t>>2]|0)+1|0;c[t>>2]=k;t=p<<16>>16;q=gl(c[f>>2]|0,i)|0;r=M+108|0;i=c[r>>2]|0;s=M+112|0;if((c[s>>2]|0)>(i|0)){c[r>>2]=i+1;K=c[M+104>>2]|0;a[K+(i*20|0)>>0]=92;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=u;c[K+(i*20|0)+8>>2]=t;c[K+(i*20|0)+12>>2]=k;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(M,92,u,t,k)|0;m=c[M>>2]|0;n:do if(!(a[m+81>>0]|0)){if((i|0)<0)i=(c[r>>2]|0)+-1|0;m=c[M+104>>2]|0;n=m+(i*20|0)|0;do if(p<<16>>16<=-1){o=m+(i*20|0)+1|0;if(a[o>>0]|0)break;if(p<<16>>16==-3){c[m+(i*20|0)+16>>2]=q;a[o>>0]=-3;break n}if(!q)break n;c[m+(i*20|0)+16>>2]=q;a[o>>0]=p;if(p<<16>>16!=-12)break n;K=q+12|0;c[K>>2]=(c[K>>2]|0)+1;break n}while(0);Ei(M,n,q,t)}else{if(p<<16>>16==-12)break;kg(m,t,q)}while(0);i=c[r>>2]|0;if((c[s>>2]|0)>(i|0)){c[r>>2]=i+1;K=c[M+104>>2]|0;a[K+(i*20|0)>>0]=-124;b[K+(i*20|0)+2>>1]=0;c[K+(i*20|0)+4>>2]=C;c[K+(i*20|0)+8>>2]=k;c[K+(i*20|0)+12>>2]=u;c[K+(i*20|0)+16>>2]=0;a[K+(i*20|0)+1>>0]=0}else i=Di(M,132,C,k,u)|0;if(a[(c[M>>2]|0)+81>>0]|0){i=0;break}K=c[M+104>>2]|0;a[K+(i*20|0)+1>>0]=-3;c[K+(i*20|0)+16>>2]=t;i=0}while(0);sl(A);s=0;p=i;i=0;r=k}while(0);do if(!j){if(w<<24>>24!=2){Hm(f,R,109,8,J,i,P,Q)|0;break}k=M+108|0;j=c[k>>2]|0;if((c[M+112>>2]|0)>(j|0)){c[k>>2]=j+1;o=c[M+104>>2]|0;a[o+(j*20|0)>>0]=17;o=o+(j*20|0)+1|0;q=o+19|0;do{a[o>>0]=0;o=o+1|0}while((o|0)<(q|0))}else j=Di(M,17,0,0,0)|0;Hm(f,R,109,8,J,i,P,Q)|0;k=c[k>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))j=(c[M+104>>2]|0)+(((j|0)<0?k+-1|0:j)*20|0)|0;else j=59308;c[j+8>>2]=k}while(0);do if(!y){n=M+108|0;k=c[n>>2]|0;m=M+112|0;j=(c[m>>2]|0)>(k|0);if(!z)if(j){c[n>>2]=k+1;q=c[M+104>>2]|0;a[q+(k*20|0)>>0]=41;b[q+(k*20|0)+2>>1]=0;c[q+(k*20|0)+4>>2]=l;c[q+(k*20|0)+8>>2]=0;c[q+(k*20|0)+12>>2]=r;c[q+(k*20|0)+16>>2]=0;a[q+(k*20|0)+1>>0]=0;q=k;break}else{q=Di(M,41,l,0,r)|0;break}if(j){c[n>>2]=k+1;K=c[M+104>>2]|0;a[K+(k*20|0)>>0]=36;b[K+(k*20|0)+2>>1]=0;c[K+(k*20|0)+4>>2]=C;c[K+(k*20|0)+8>>2]=0;c[K+(k*20|0)+12>>2]=0;c[K+(k*20|0)+16>>2]=0;a[K+(k*20|0)+1>>0]=0}else k=Di(M,36,C,0,0)|0;l=c[n>>2]|0;j=(c[m>>2]|0)>(l|0);if(!(c[R+56>>2]|0))if(j){c[n>>2]=l+1;q=c[M+104>>2]|0;a[q+(l*20|0)>>0]=127;b[q+(l*20|0)+2>>1]=0;c[q+(l*20|0)+4>>2]=C;c[q+(l*20|0)+8>>2]=r;c[q+(l*20|0)+12>>2]=0;c[q+(l*20|0)+16>>2]=0;a[q+(l*20|0)+1>>0]=0;q=k;break}else{Di(M,127,C,r,0)|0;q=k;break}else if(j){c[n>>2]=l+1;q=c[M+104>>2]|0;a[q+(l*20|0)>>0]=90;b[q+(l*20|0)+2>>1]=0;c[q+(l*20|0)+4>>2]=C;c[q+(l*20|0)+8>>2]=0;c[q+(l*20|0)+12>>2]=r;c[q+(l*20|0)+16>>2]=0;a[q+(l*20|0)+1>>0]=0;q=k;break}else{Di(M,90,C,0,r)|0;q=k;break}}else{if(c[R+56>>2]|0){q=0;break}k=c[P>>2]|0;if(!(a[i+(k-J)>>0]|0)){q=0;break}l=M+108|0;j=c[l>>2]|0;if((c[M+112>>2]|0)>(j|0)){c[l>>2]=j+1;K=c[M+104>>2]|0;a[K+(j*20|0)>>0]=28;b[K+(j*20|0)+2>>1]=0;c[K+(j*20|0)+4>>2]=k;c[K+(j*20|0)+8>>2]=s;c[K+(j*20|0)+12>>2]=r;c[K+(j*20|0)+16>>2]=0;a[K+(j*20|0)+1>>0]=0}else j=Di(M,28,k,s,r)|0;if(a[(c[M>>2]|0)+81>>0]|0){q=0;break}q=c[M+104>>2]|0;a[q+(j*20|0)+1>>0]=-3;c[q+(j*20|0)+16>>2]=p<<16>>16;q=0}while(0);do if(!(c[R+56>>2]|0))Im(f,R,I,c[P>>2]|0,c[Q>>2]|0,r,p,(a[L>>0]|0)==0&1,11,w,v);else{j=c[R+64>>2]|0;o:do if(!j)p=0;else while(1){if((c[j>>2]|0)==(T|0)){p=j;break o}j=c[j+24>>2]|0;if(!j){p=0;break}}while(0);o=c[H>>2]|0;o=(o|0)==0?f:o;n=o+204|0;m=c[n>>2]|0;l=o+252|0;p:do if((m|0)>0){j=c[l>>2]|0;k=0;do{if((c[j+(k<<2)>>2]|0)==(R|0))break p;k=k+1|0}while((k|0)<(m|0));k=l;S=295}else{k=l;j=c[l>>2]|0;S=295}while(0);q:do if((S|0)==295){do if(!(mb()|0)){S=(m<<2)+4|0;j=sb(j,S,((S|0)<0)<<31>>31)|0;if(!j)break;c[k>>2]=j;S=c[n>>2]|0;c[n>>2]=S+1;c[j+(S<<2)>>2]=R;break q}while(0);j=c[o>>2]|0;k=j+81|0;if(a[k>>0]|0)break;if(a[j+82>>0]|0)break;a[k>>0]=1;if((c[j+180>>2]|0)>0)c[j+264>>2]=1;S=j+272|0;c[S>>2]=(c[S>>2]|0)+1;j=c[j+236>>2]|0;if(!j)break;c[j+12>>2]=7}while(0);m=c[H>>2]|0;a[((m|0)==0?f:m)+21>>0]=1;m=M+108|0;do if(x){j=c[m>>2]|0;k=M+112|0;if((c[k>>2]|0)>(j|0)){c[m>>2]=j+1;S=c[M+104>>2]|0;a[S+(j*20|0)>>0]=117;b[S+(j*20|0)+2>>1]=0;c[S+(j*20|0)+4>>2]=J;c[S+(j*20|0)+8>>2]=0;c[S+(j*20|0)+12>>2]=0;c[S+(j*20|0)+16>>2]=0;a[S+(j*20|0)+1>>0]=0}else Di(M,117,J,0,0)|0;if(c[H>>2]|0)break;a[f+20>>0]=0}else k=M+112|0;while(0);j=c[m>>2]|0;if((c[k>>2]|0)>(j|0)){c[m>>2]=j+1;S=c[M+104>>2]|0;a[S+(j*20|0)>>0]=10;b[S+(j*20|0)+2>>1]=0;c[S+(j*20|0)+4>>2]=0;c[S+(j*20|0)+8>>2]=1;c[S+(j*20|0)+12>>2]=r;c[S+(j*20|0)+16>>2]=0;a[S+(j*20|0)+1>>0]=0}else j=Di(M,10,0,1,r)|0;do if(!(a[(c[M>>2]|0)+81>>0]|0)){if((j|0)<0)j=(c[m>>2]|0)+-1|0;k=c[M+104>>2]|0;l=k+(j*20|0)+1|0;if(a[l>>0]|0){Ei(M,k+(j*20|0)|0,p,-12);break}if(!p)break;c[k+(j*20|0)+16>>2]=p;a[l>>0]=-12;S=p+12|0;c[S>>2]=(c[S>>2]|0)+1}while(0);j=c[m>>2]|0;if((j|0)<=0)break;b[(c[M+104>>2]|0)+((j+-1|0)*20|0)+2>>1]=2}while(0);if(y){k=c[M+12>>2]|0;j=~s;if(((c[k+56>>2]|0)+(c[k+60>>2]|0)|0)<0)mk(k,M,j);else c[(c[k+64>>2]|0)+(j<<2)>>2]=c[M+108>>2];sl(A);break}if(z){j=q+1|0;k=M+108|0;l=c[k>>2]|0;if((c[M+112>>2]|0)>(l|0)){c[k>>2]=l+1;S=c[M+104>>2]|0;a[S+(l*20|0)>>0]=5;b[S+(l*20|0)+2>>1]=0;c[S+(l*20|0)+4>>2]=C;c[S+(l*20|0)+8>>2]=j;c[S+(l*20|0)+12>>2]=0;c[S+(l*20|0)+16>>2]=0;a[S+(l*20|0)+1>>0]=0}else Di(M,5,C,j,0)|0;k=c[k>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))j=(c[M+104>>2]|0)+(((q|0)<0?k+-1|0:q)*20|0)|0;else j=59308;c[j+8>>2]=k;break}else{j=M+108|0;k=c[j>>2]|0;if((c[M+112>>2]|0)>(k|0)){c[j>>2]=k+1;S=c[M+104>>2]|0;a[S+(k*20|0)>>0]=11;b[S+(k*20|0)+2>>1]=0;c[S+(k*20|0)+4>>2]=0;c[S+(k*20|0)+8>>2]=q;c[S+(k*20|0)+12>>2]=0;c[S+(k*20|0)+16>>2]=0;a[S+(k*20|0)+1>>0]=0}else Di(M,11,0,q,0)|0;k=c[j>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))j=(c[M+104>>2]|0)+(((q|0)<0?k+-1|0:q)*20|0)|0;else j=59308;c[j+8>>2]=k;break}}while(0);do if(!(a[L>>0]|0)){if(c[f+120>>2]|0)break;if(!(c[f+112>>2]|0))break;Sm(f)}while(0);if(!D)break;j=M+108|0;k=c[j>>2]|0;if((c[M+112>>2]|0)>(k|0)){c[j>>2]=k+1;f=c[M+104>>2]|0;a[f+(k*20|0)>>0]=81;b[f+(k*20|0)+2>>1]=0;c[f+(k*20|0)+4>>2]=D;c[f+(k*20|0)+8>>2]=1;c[f+(k*20|0)+12>>2]=0;c[f+(k*20|0)+16>>2]=0;a[f+(k*20|0)+1>>0]=0}else Di(M,81,D,1,0)|0;Wi(M,1);if(a[(c[M>>2]|0)+81>>0]|0)break;yc(c[M+116>>2]|0,44614,-1,1,0)|0}while(0);if(O)c[O+240>>2]=N}else i=0}else i=0}else i=0;while(0);qi(T,g);if(h|0)ni(T,h);if(!i){Ra=U;return}if(T|0){if(c[T+480>>2]|0){Xd(T,i);Ra=U;return}h=i;if((c[T+304>>2]|0)>>>0<=h>>>0?(c[T+308>>2]|0)>>>0>h>>>0:0){T=T+300|0;c[i>>2]=c[T>>2];c[T>>2]=i;Ra=U;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](i);Ra=U;return}else{T=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-T;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);Ra=U;return}}function tj(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0;Aa=Ra;Ra=Ra+128|0;ea=Aa+48|0;aa=Aa+40|0;S=Aa+32|0;V=Aa+24|0;U=Aa+16|0;T=Aa+8|0;r=Aa;da=Aa+88|0;fa=Aa+56|0;va=Aa+52|0;c[va>>2]=0;za=c[f>>2]|0;a:do if((c[f+36>>2]|0)==0?(y=za+81|0,(a[y>>0]|0)==0):0){m=c[g+8>>2]|0;if(!m)l=g+12|0;else{n=c[za+16>>2]|0;l=0;while(1)if((c[n+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0;l=n+(l<<4)|0}ya=bd(f,0,c[g+16>>2]|0,c[l>>2]|0)|0;l=c[f>>2]|0;m=g+24|0;n=c[m>>2]|0;do if(n|0){if(l|0?c[l+480>>2]|0:0){Vi(l,n);break}ua=n+32|0;wa=(c[ua>>2]|0)+-1|0;c[ua>>2]=wa;if(!wa)Vi(l,n)}while(0);c[m>>2]=ya;if(ya|0){wa=ya+32|0;c[wa>>2]=(c[wa>>2]|0)+1;b:do if(a[g+45>>0]&2){p=c[g+72>>2]|0;l=c[ya+8>>2]|0;c:do if(l|0){q=d[208+(d[p>>0]|0)>>0]|0;while(1){n=c[l>>2]|0;wa=a[n>>0]|0;m=(d[208+(wa&255)>>0]|0)-q|0;if(!(wa<<24>>24==0|(m|0)!=0)){o=p;do{n=n+1|0;o=o+1|0;wa=a[n>>0]|0;m=(d[208+(wa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(wa<<24>>24==0|(m|0)!=0))}if(!m)break;l=c[l+20>>2]|0;if(!l)break c}c[g+76>>2]=l;break b}while(0);c[r>>2]=p;c[r+4>>2]=0;cd(f,41107,r);a[f+17>>0]=1;break a}while(0);n=c[f>>2]|0;ua=ya+72|0;s=c[ua>>2]|0;if(!s)Z=-1e6;else{m=c[n+16>>2]|0;l=0;while(1)if((c[m+(l<<4)+12>>2]|0)==(s|0)){Z=l;break}else l=l+1|0}do if(!(0==0?(c[n+32>>2]&262144|0)==0:0)?(t=c[(c[n+16>>2]|0)+28>>2]|0,(a[f+146>>0]|0)==0):0){if((s|0)!=(t|0)?(u=c[t+48>>2]|0,(u|0)!=0):0){r=ya+68|0;q=u;l=0;do{p=c[q+8>>2]|0;if((c[p+24>>2]|0)==(s|0)){n=c[p+4>>2]|0;o=c[ya>>2]|0;wa=a[n>>0]|0;m=(d[208+(wa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0;if(!(wa<<24>>24==0|(m|0)!=0))do{n=n+1|0;o=o+1|0;wa=a[n>>0]|0;m=(d[208+(wa&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(wa<<24>>24==0|(m|0)!=0));if(!m){if(!l)l=c[r>>2]|0;c[p+32>>2]=l;l=p}}q=c[q>>2]|0}while((q|0)!=0);if(!l)xa=43}else xa=43;if((xa|0)==43){l=c[ya+68>>2]|0;if(!l){xa=65;break}}if(!h){m=0;n=l;do{if((a[n+8>>0]|0)==122)m=m|d[n+9>>0];n=c[n+32>>2]|0}while((n|0)!=0)}else{m=0;x=l;do{d:do if((a[x+8>>0]|0)==122){n=c[x+16>>2]|0;e:do if(n|0){w=c[h>>2]|0;if((w|0)<=0)break d;v=c[n+4>>2]|0;if((v|0)<=0)break d;s=c[n>>2]|0;q=0;while(1){t=c[h+4+(q*20|0)+4>>2]|0;u=d[208+(d[t>>0]|0)>>0]|0;r=0;do{o=c[s+(r<<3)>>2]|0;wa=a[o>>0]|0;n=(d[208+(wa&255)>>0]|0)-u|0;if(!(wa<<24>>24==0|(n|0)!=0)){p=t;do{o=o+1|0;p=p+1|0;wa=a[o>>0]|0;n=(d[208+(wa&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(wa<<24>>24==0|(n|0)!=0))}if(!n)break e;r=r+1|0}while((r|0)<(v|0));q=q+1|0;if((q|0)>=(w|0))break d}}while(0);m=m|d[x+9>>0]}while(0);x=c[x+32>>2]|0}while((x|0)!=0)}if(!m)xa=65}else xa=65;while(0);if((xa|0)==65){m=0;l=0}sa=(c[ya+12>>2]|0)!=0;if((Sk(f,ya)|0)==0?(Fm(f,ya,m)|0)==0:0){_=f+40|0;ga=c[_>>2]|0;s=ga+1|0;c[_>>2]=s;ha=ya+36|0;ba=ya+8|0;o=c[ba>>2]|0;f:do if(c[ha>>2]&32)if(!o){p=0;o=ga;n=0}else{n=o;while(1){xa=n+55|0;if(((d[xa>>0]|d[xa+1>>0]<<8)&3)==2){xa=73;break f}n=c[n+20>>2]|0;if(!n){n=0;xa=73;break}}}else{n=0;xa=73}while(0);if((xa|0)==73)if(!o){p=0;o=ga}else{p=0;r=ga;q=s;do{r=(n|0)==(o|0)?q:r;q=q+1|0;p=p+1|0;o=c[o+20>>2]|0}while((o|0)!=0);c[_>>2]=q;o=r}$=(k|0)!=0;if($){o=c[k+28>>2]|0;s=c[k+32>>2]|0;c[_>>2]=ga}Y=g+48|0;c[Y>>2]=o;ta=ya+42|0;t=p+2+(p+(b[ta>>1]|0)<<2)|0;g:do if(c[za+272>>2]|0)if(!(a[y>>0]|0))xa=89;else break a;else{do if(!(0<0|(0==0?(e[za+276>>1]|0)>>>0>>0:0))){q=za+300|0;r=c[q>>2]|0;if(r|0){c[q>>2]=c[r>>2];wa=za+284|0;c[wa>>2]=(c[wa>>2]|0)+1;wa=r;break g}q=za+296|0;r=c[q>>2]|0;if(!r){q=za+292|0;break}else{c[q>>2]=c[r>>2];wa=za+284|0;c[wa>>2]=(c[wa>>2]|0)+1;wa=r;break g}}else q=za+288|0;while(0);c[q>>2]=(c[q>>2]|0)+1;xa=89}while(0);if((xa|0)==89)wa=_d(za,t,0)|0;if(wa|0){ra=wa+(b[ta>>1]<<2)|0;ca=ra+(p<<2)|0;W=p+1|0;gw(ca|0,1,W|0)|0;a[ca+W>>0]=0;qa=b[ta>>1]|0;q=qa<<16>>16;if(qa<<16>>16>0)gw(wa|0,-1,((q|0)>1?q:1)<<2|0)|0;X=fa+12|0;c[X>>2]=0;c[X+4>>2]=0;c[X+8>>2]=0;c[X+12>>2]=0;c[X+16>>2]=0;c[fa>>2]=f;c[fa+4>>2]=g;c[fa+8>>2]=k;X=fa+24|0;b[X>>1]=512;h:do if((c[h>>2]|0)>0){F=da+4|0;H=da+8|0;I=da+12|0;J=da+24|0;K=(n|0)==0;M=za+16|0;N=ya+4|0;O=fa+20|0;P=f+200|0;Q=f+240|0;R=ya+40|0;B=0;t=0;D=0;E=0;i:while(1){C=h+4+(E*20|0)|0;u=c[C>>2]|0;if(u){v=e[X>>1]|0;b[X>>1]=v&28655;q=c[fa>>2]|0;c[da>>2]=q;c[F>>2]=125;c[H>>2]=126;c[I>>2]=0;c[J>>2]=fa;w=u+24|0;r=q;pa=r+208|0;qa=(c[pa>>2]|0)+(c[w>>2]|0)|0;c[pa>>2]=qa;r=c[(c[r>>2]|0)+120>>2]|0;if((r|0)<(qa|0)){xa=98;break}_j(da,u)|0;q=c[da>>2]|0;qa=q+208|0;c[qa>>2]=(c[qa>>2]|0)-(c[w>>2]|0);qa=b[X>>1]|0;pa=u+4|0;c[pa>>2]=c[pa>>2]|qa&-32752&65535;b[X>>1]=v&36880|qa&65535;if((c[O>>2]|0)>0)break;if((c[q+36>>2]|0)>=1){xa=919;break h}}q=b[ta>>1]|0;j:do if(q<<16>>16>0){A=c[N>>2]|0;x=c[h+4+(E*20|0)+4>>2]|0;z=d[208+(d[x>>0]|0)>>0]|0;w=q<<16>>16;y=0;while(1){v=c[A+(y<<4)>>2]|0;qa=a[v>>0]|0;q=(d[208+(qa&255)>>0]|0)-z|0;if(!(qa<<24>>24==0|(q|0)!=0)){r=x;u=v;do{u=u+1|0;r=r+1|0;qa=a[u>>0]|0;q=(d[208+(qa&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(q|0)!=0))}if(!q)break;q=y+1|0;if((q|0)<(w|0))y=q;else{xa=114;break j}}do if((y|0)==(b[R>>1]|0)){r=c[C>>2]|0;t=1;q=D}else{if(K){r=B;q=D;break}r=B;q=(a[A+(y<<4)+15>>0]&1)==0?D:1}while(0);c[wa+(y<<2)>>2]=E;z=q;w=r;x=t}else{x=c[h+4+(E*20|0)+4>>2]|0;xa=114}while(0);if((xa|0)==114){xa=0;if(!K){xa=128;break}v=a[x>>0]|0;u=d[208+(v&255)>>0]|0;q=u+-95|0;v=v<<24>>24==0;if(!(v|(q|0)!=0)){r=58070;t=x;do{t=t+1|0;r=r+1|0;qa=a[t>>0]|0;q=(d[208+(qa&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(q|0)!=0))}do if(q|0){q=u+-114|0;if(!(v|(q|0)!=0)){r=40352;t=x;do{t=t+1|0;r=r+1|0;qa=a[t>>0]|0;q=(d[208+(qa&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(q|0)!=0))}if(!q)break;q=u+-111|0;if(!(v|(q|0)!=0)){r=58078;t=x;do{t=t+1|0;r=r+1|0;qa=a[t>>0]|0;q=(d[208+(qa&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(q|0)!=0))}if(q|0){xa=128;break i}}while(0);y=-1;z=D;w=c[C>>2]|0;x=1;v=40352}q=c[ya>>2]|0;r=c[(c[M>>2]|0)+(Z<<4)>>2]|0;t=c[f>>2]|0;do if(!(a[t+165>>0]|0)){if(a[P>>0]|0)break;u=c[t+312>>2]|0;if(!u)break;q=$a[u&127](c[t+316>>2]|0,23,q,v,r,c[Q>>2]|0)|0;if((q|0)==1){xa=134;break i}if((q|2|0)!=2){xa=136;break i}if((q|0)!=2)break;c[wa+(y<<2)>>2]=-1}while(0);E=E+1|0;if((E|0)>=(c[h>>2]|0)){S=w;N=x;O=z;xa=140;break h}else{B=w;t=x;D=z}}if((xa|0)==98){c[T>>2]=r;cd(q,41637,T)}else if((xa|0)==128){c[U>>2]=x;cd(f,44776,U);a[f+17>>0]=1;xa=918;break}else if((xa|0)==134){cd(f,39216,V);c[f+12>>2]=23;xa=919;break}else if((xa|0)==136){cd(f,39231,S);c[f+12>>2]=1;xa=919;break}xa=919}else{S=0;N=0;O=0;xa=140}while(0);k:do if((xa|0)==140){pa=(N&255)+(O&255)|0;ja=pa&255;M=ya+56|0;oa=((c[M>>2]|0)!=0)<<31>>31;qa=g+64|0;c[qa>>2]=oa;c[qa+4>>2]=((oa|0)<0)<<31>>31;pa=pa&255;l:do if(0==0?(c[(c[f>>2]|0)+32>>2]&16384|0)==0:0)ia=0;else{q=c[ya+16>>2]|0;y=c[ya>>2]|0;m:do if(!q)x=0;else{w=ya+40|0;r=(y|0)==0;if(!pa){if(r){u=q;q=0;while(1){if(!(c[u+8>>2]|0)){ia=2;break l}t=c[u+20>>2]|0;n:do if((t|0)>0){r=0;do{if((c[wa+(c[u+36+(r<<3)>>2]<<2)>>2]|0)>-1){q=1;break n}r=r+1|0}while((r|0)<(t|0))}while(0);u=c[u+4>>2]|0;if(!u){x=q;break m}}}v=q;q=0;while(1){t=c[v+8>>2]|0;if(t|0){qa=a[y>>0]|0;r=(d[208+(qa&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0;if(!(qa<<24>>24==0|(r|0)!=0)){u=y;do{u=u+1|0;t=t+1|0;qa=a[u>>0]|0;r=(d[208+(qa&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(r|0)!=0))}if(!r){ia=2;break l}}t=c[v+20>>2]|0;o:do if((t|0)>0){r=0;do{if((c[wa+(c[v+36+(r<<3)>>2]<<2)>>2]|0)>-1){q=1;break o}r=r+1|0}while((r|0)<(t|0))}while(0);v=c[v+4>>2]|0;if(!v){x=q;break m}}}if(r){r=0;while(1){if(!(c[q+8>>2]|0)){ia=2;break l}u=c[q+20>>2]|0;p:do if((u|0)>0){t=0;do{v=c[q+36+(t<<3)>>2]|0;if((c[wa+(v<<2)>>2]|0)>-1){r=1;break p}t=t+1|0;if((v|0)==(b[w>>1]|0)){r=1;break p}}while((t|0)<(u|0))}while(0);q=c[q+4>>2]|0;if(!q){x=r;break m}}}r=0;while(1){u=c[q+8>>2]|0;if(u|0){qa=a[y>>0]|0;t=(d[208+(qa&255)>>0]|0)-(d[208+(d[u>>0]|0)>>0]|0)|0;if(!(qa<<24>>24==0|(t|0)!=0)){v=y;do{v=v+1|0;u=u+1|0;qa=a[v>>0]|0;t=(d[208+(qa&255)>>0]|0)-(d[208+(d[u>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(t|0)!=0))}if(!t){ia=2;break l}}u=c[q+20>>2]|0;q:do if((u|0)>0){t=0;do{v=c[q+36+(t<<3)>>2]|0;if((c[wa+(v<<2)>>2]|0)>-1){r=1;break q}t=t+1|0;if((v|0)==(b[w>>1]|0)){r=1;break q}}while((t|0)<(u|0))}while(0);q=c[q+4>>2]|0;if(!q){x=r;break}}}while(0);u=c[ua>>2]|0;v=c[u+68>>2]|0;if(!v){r=u+60|0;q=u+64|0}else{r=a[y>>0]|0;if(!(r<<24>>24))q=0;else{q=0;t=y;do{t=t+1|0;q=G(q+(d[208+(r&255)>>0]|0)|0,-1640531535)|0;r=a[t>>0]|0}while(r<<24>>24!=0)}q=(q>>>0)%((c[u+56>>2]|0)>>>0)|0;r=v+(q<<3)|0;q=v+(q<<3)+4|0}r=c[r>>2]|0;r:do if(!r)q=59292;else{w=d[208+(d[y>>0]|0)>>0]|0;while(1){q=c[q>>2]|0;r=r+-1|0;u=c[q+12>>2]|0;qa=a[u>>0]|0;t=(d[208+(qa&255)>>0]|0)-w|0;if(!(qa<<24>>24==0|(t|0)!=0)){v=y;do{u=u+1|0;v=v+1|0;qa=a[u>>0]|0;t=(d[208+(qa&255)>>0]|0)-(d[208+(d[v>>0]|0)>>0]|0)|0}while(!(qa<<24>>24==0|(t|0)!=0))}if(!t)break r;if(!r){q=59292;break}}}while(0);q=c[q+8>>2]|0;if(!q){ia=x;break}r=q;q=x;while(1){if(Jm(ya,r,wa,pa)|0)if(!(a[r+26>>0]|0))q=1;else{ia=2;break l}r=c[r+12>>2]|0;if(!r){ia=q;break}}}while(0);if((j|0)==5){c[va>>2]=1;q=1}else q=0;r=c[ba>>2]|0;if(r){J=(pa|0)!=0|(ia|0)>1;z=f+44|0;A=da+20|0;B=da+4|0;C=da+24|0;D=N<<24>>24==0;E=da+20|0;F=da+4|0;H=da+24|0;I=(j|0)==11;y=0;while(1){s:do if(J|(r|0)==(n|0))xa=210;else{t=c[r+36>>2]|0;if(t|0){c[da>>2]=0;c[da+4>>2]=0;c[da+8>>2]=0;c[da+12>>2]=0;c[da+16>>2]=0;c[da+20>>2]=0;c[B>>2]=136;c[C>>2]=wa;_j(da,t)|0;t=a[A>>0]|0;u=t&-3;if(D){a[A>>0]=u;t=u}if(t<<24>>24){xa=210;break}}v=r+50|0;if(!(b[v>>1]|0)){xa=233;break}w=r+4|0;x=r+40|0;t:do if(D){u=0;while(1){t=b[(c[w>>2]|0)+(u<<1)>>1]|0;if(t<<16>>16>-1)t=(c[wa+(t<<16>>16<<2)>>2]|0)>>>31^1;else{t=c[(c[x>>2]|0)+4+(u*20|0)>>2]|0;c[da>>2]=0;c[da+4>>2]=0;c[da+8>>2]=0;c[da+12>>2]=0;c[da+16>>2]=0;c[da+20>>2]=0;c[F>>2]=136;c[H>>2]=wa;if(!t)t=0;else{_j(da,t)|0;t=a[E>>0]|0}t=(t&-3)<<24>>24!=0&1}u=u+1|0;if(t|0)break t;if(u>>>0>=(e[v>>1]|0)>>>0){xa=233;break s}}}else{u=0;while(1){t=b[(c[w>>2]|0)+(u<<1)>>1]|0;if(t<<16>>16>-1)t=(c[wa+(t<<16>>16<<2)>>2]|0)>>>31^1;else{t=c[(c[x>>2]|0)+4+(u*20|0)>>2]|0;c[da>>2]=0;c[da+4>>2]=0;c[da+8>>2]=0;c[da+12>>2]=0;c[da+16>>2]=0;c[da+20>>2]=0;c[F>>2]=136;c[H>>2]=wa;if(!t)t=0;else{_j(da,t)|0;t=a[E>>0]|0}t=t<<24>>24!=0&1}u=u+1|0;if(t|0)break t;if(u>>>0>=(e[v>>1]|0)>>>0){xa=233;break s}}}while(0);t=(c[z>>2]|0)+1|0;c[z>>2]=t+(e[r+52>>1]|0);if(!I){xa=231;break}q=(a[r+54>>0]|0)==5?1:q;xa=231}while(0);if((xa|0)==210){t=(c[z>>2]|0)+1|0;c[z>>2]=t+(e[r+52>>1]|0);xa=231}do if((xa|0)==231){xa=0;if(!t){xa=233;break}u=y+1|0}while(0);if((xa|0)==233){xa=0;u=y+1|0;a[ca+u>>0]=0;t=0}c[ra+(y<<2)>>2]=t;r=c[r+20>>2]|0;if(!r)break;else y=u}c[va>>2]=q}if(q|0)gw(ca|0,1,W|0)|0;ma=f+8|0;q=c[ma>>2]|0;if(!q){t=c[f>>2]|0;do if(!(c[f+116>>2]|0)){if(b[t+76>>1]&8)break;a[f+23>>0]=1}while(0);u:do if(c[t+272>>2]|0)if(!(a[t+81>>0]|0))xa=252;else{xa=918;break k}else{do if((e[t+276>>1]|0)>=224){q=t+300|0;r=c[q>>2]|0;if(r|0){c[q>>2]=c[r>>2];qa=t+284|0;c[qa>>2]=(c[qa>>2]|0)+1;break u}q=t+296|0;r=c[q>>2]|0;if(!r){q=t+292|0;break}else{c[q>>2]=c[r>>2];qa=t+284|0;c[qa>>2]=(c[qa>>2]|0)+1;break u}}else q=t+288|0;while(0);c[q>>2]=(c[q>>2]|0)+1;xa=252}while(0);if((xa|0)==252)r=_d(t,224,0)|0;if(!r){xa=918;break}D=r+104|0;F=D+120|0;do{c[D>>2]=0;D=D+4|0}while((D|0)<(F|0));c[r>>2]=t;q=t+4|0;t=c[q>>2]|0;if(t|0)c[t+4>>2]=r;c[r+8>>2]=t;c[r+4>>2]=0;c[q>>2]=r;c[r+20>>2]=381479589;c[r+12>>2]=f;c[ma>>2]=r;Di(r,61,0,1,0)|0;la=r}else la=q;ka=f+18|0;if(!(a[ka>>0]|0)){qa=la+149|0;oa=d[qa>>0]|d[qa+1>>0]<<8|32;a[qa>>0]=oa;a[qa+1>>0]=oa>>8}J=(l|0)!=0;T=(ia|0)!=0;z=(J|T)&1;qa=f+116|0;B=c[qa>>2]|0;B=(B|0)==0?f:B;q=B+84|0;r=c[q>>2]|0;A=1<>2]=r|A;if((Z|0)!=1)break;y=c[B>>2]|0;q=y+16|0;if(c[(c[q>>2]|0)+20>>2]|0)break;if(a[B+199>>0]|0)break;r=Pe(c[y>>2]|0,0,y,da,0,542)|0;if(r|0){cd(B,32157,aa);c[B+12>>2]=r;break}oa=c[da>>2]|0;c[(c[q>>2]|0)+20>>2]=oa;q=c[y+92>>2]|0;u=c[oa+4>>2]|0;c[u+4>>2]=c[oa>>2];do if(!(b[u+22>>1]&2)){v=u+32|0;w=u+36|0;x=(c[v>>2]|0)-(c[w>>2]|0)|0;do if((q+-512|0)>>>0<65025){if(q+-1&q|0)break;c[v>>2]=q;t=u+80|0;q=c[t>>2]|0;if(!q)break;r=q+-4|0;c[t>>2]=r;q=r;do if((c[14816]|0)>>>0<=q>>>0)if((c[14817]|0)>>>0>q>>>0){c[14979]=(c[14979]|0)+-1;c[r>>2]=c[14819];c[14819]=r;oa=(c[14820]|0)+1|0;c[14820]=oa;c[14821]=(oa|0)<(c[14815]|0)&1;break}else{q=Wa[c[29352>>2]&127](r)|0;xa=274;break}else{q=Wa[c[29352>>2]&127](r)|0;xa=274}while(0);do if((xa|0)==274){c[14980]=(c[14980]|0)-q;if(!(c[7324]|0)){ab[c[29344>>2]&127](r);break}else{oa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-oa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);break}}while(0);c[t>>2]=0}while(0);oa=Se(c[u>>2]|0,v,x)|0;c[w>>2]=(c[v>>2]|0)-(x&65535);if((oa|0)!=7)break;q=y+81|0;do if(!(a[q>>0]|0)){if(a[y+82>>0]|0)break;a[q>>0]=1;if((c[y+180>>2]|0)>0)c[y+264>>2]=1;q=y+272|0;c[q>>2]=(c[q>>2]|0)+1;q=c[y+236>>2]|0;if(!q)break;c[q+12>>2]=7}while(0);break v}while(0)}while(0);oa=B+80|0;c[oa>>2]=c[oa>>2]|A;oa=B+20|0;a[oa>>0]=d[oa>>0]|z;if(!(c[M>>2]|0)){t=f+44|0;u=c[t>>2]|0;w=u+2|0;c[t>>2]=w;if(J|O<<24>>24!=0|T){q=w+(b[ta>>1]|0)|0;c[t>>2]=q;x=u+3|0}else{x=0;q=w}r=q+1|0;if(J|(ia|pa|0)!=0){c[t>>2]=r;y=r;v=q+2|0;q=r}else{y=w;v=r}c[t>>2]=q+(b[ta>>1]|0);F=u+1|0;aa=w;K=x;Q=y}else{F=0;v=0;aa=0;K=0;Q=0}if(sa){oa=f+240|0;na=c[oa>>2]|0;c[oa>>2]=c[ya>>2];Gm(f,ya,i,o);oa=f}else{na=0;oa=0}w:do if(!i)xa=302;else{t=e[X>>1]|0;b[X>>1]=t&28655;q=c[fa>>2]|0;c[da>>2]=q;c[da+4>>2]=125;c[da+8>>2]=126;c[da+12>>2]=0;c[da+24>>2]=fa;u=i+24|0;r=q+208|0;Z=(c[r>>2]|0)+(c[u>>2]|0)|0;c[r>>2]=Z;r=c[(c[q>>2]|0)+120>>2]|0;do if((r|0)>=(Z|0)){_j(da,i)|0;q=c[da>>2]|0;ea=q+208|0;c[ea>>2]=(c[ea>>2]|0)-(c[u>>2]|0);ea=b[X>>1]|0;da=i+4|0;c[da>>2]=c[da>>2]|ea&-32752&65535;b[X>>1]=t&36880|ea&65535;if((c[fa+20>>2]|0)>0)break;if((c[q+36>>2]|0)<1){xa=302;break w}else break w}else{c[ea>>2]=r;cd(q,41637,ea)}while(0)}while(0);x:do if((xa|0)==302){if(c[M>>2]|0){H=c[ma>>2]|0;m=c[f>>2]|0;l=c[ya+64>>2]|0;y:do if(!l)C=0;else while(1){if((c[l>>2]|0)==(m|0)){C=l;break y}l=c[l+24>>2]|0;if(!l){C=0;break}}while(0);y=b[ta>>1]|0;A=(y<<16>>16)+2|0;x=c[Y>>2]|0;F=c[_>>2]|0;c[_>>2]=F+1;D=H+108|0;l=c[D>>2]|0;E=H+112|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;r=c[H+104>>2]|0;a[r+(l*20|0)>>0]=113;b[r+(l*20|0)+2>>1]=0;c[r+(l*20|0)+4>>2]=F;c[r+(l*20|0)+8>>2]=A;c[r+(l*20|0)+12>>2]=0;c[r+(l*20|0)+16>>2]=0;a[r+(l*20|0)+1>>0]=0;r=l}else r=Di(H,113,F,A,0)|0;B=f+44|0;u=c[B>>2]|0;z=u+1|0;w=u+A|0;v=w+1|0;w=w+2|0;c[B>>2]=w;B=ql(f,g,i,0,0,4,0)|0;if(!B)break;if((b[ta>>1]|0)>0){s=u+3|0;t=H+104|0;q=0;do{l=c[wa+(q<<2)>>2]|0;z:do if((l|0)>-1){l=c[h+4+(l*20|0)>>2]|0;p=q+s|0;do if(l){if((a[l>>0]|0)!=-88){o=Jj(f,l,p)|0;break}o=c[ma>>2]|0;l=c[l+28>>2]|0;m=o+108|0;n=c[m>>2]|0;if((c[o+112>>2]|0)>(n|0)){c[m>>2]=n+1;va=c[o+104>>2]|0;a[va+(n*20|0)>>0]=78;b[va+(n*20|0)+2>>1]=0;c[va+(n*20|0)+4>>2]=l;c[va+(n*20|0)+8>>2]=p;c[va+(n*20|0)+12>>2]=0;c[va+(n*20|0)+16>>2]=0;a[va+(n*20|0)+1>>0]=0;break z}else{Di(o,78,l,p,0)|0;break z}}else o=Jj(f,0,p)|0;while(0);if((o|0)==(p|0))break;l=c[ma>>2]|0;if(!l)break;m=l+108|0;n=c[m>>2]|0;if((c[l+112>>2]|0)>(n|0)){c[m>>2]=n+1;va=c[l+104>>2]|0;a[va+(n*20|0)>>0]=79;b[va+(n*20|0)+2>>1]=0;c[va+(n*20|0)+4>>2]=o;c[va+(n*20|0)+8>>2]=p;c[va+(n*20|0)+12>>2]=0;c[va+(n*20|0)+16>>2]=0;a[va+(n*20|0)+1>>0]=0;break}else{Di(l,79,o,p,0)|0;break}}else{l=q+s|0;m=c[D>>2]|0;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;va=c[t>>2]|0;a[va+(m*20|0)>>0]=-92;b[va+(m*20|0)+2>>1]=0;c[va+(m*20|0)+4>>2]=x;c[va+(m*20|0)+8>>2]=q;c[va+(m*20|0)+12>>2]=l;c[va+(m*20|0)+16>>2]=0;a[va+(m*20|0)+1>>0]=0}else Di(H,164,x,q,l)|0;l=c[D>>2]|0;if((l|0)<=0)break;b[(c[t>>2]|0)+((l+-1|0)*20|0)+2>>1]=1}while(0);q=q+1|0}while((q|0)<(b[ta>>1]|0))}do if(!(c[ha>>2]&32)){l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=-128;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=x;c[va+(l*20|0)+8>>2]=z;c[va+(l*20|0)+12>>2]=0;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0}else Di(H,128,x,z,0)|0;p=u+2|0;if(!S){l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=-128;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=x;c[va+(l*20|0)+8>>2]=p;c[va+(l*20|0)+12>>2]=0;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0;break}else{Di(H,128,x,p,0)|0;break}}if((a[S>>0]|0)==-88){o=c[ma>>2]|0;l=c[S+28>>2]|0;m=o+108|0;n=c[m>>2]|0;if((c[o+112>>2]|0)>(n|0)){c[m>>2]=n+1;va=c[o+104>>2]|0;a[va+(n*20|0)>>0]=78;b[va+(n*20|0)+2>>1]=0;c[va+(n*20|0)+4>>2]=l;c[va+(n*20|0)+8>>2]=p;c[va+(n*20|0)+12>>2]=0;c[va+(n*20|0)+16>>2]=0;a[va+(n*20|0)+1>>0]=0;break}else{Di(o,78,l,p,0)|0;break}}o=Jj(f,S,p)|0;if((o|0)==(p|0))break;l=c[ma>>2]|0;if(!l)break;m=l+108|0;n=c[m>>2]|0;if((c[l+112>>2]|0)>(n|0)){c[m>>2]=n+1;va=c[l+104>>2]|0;a[va+(n*20|0)>>0]=79;b[va+(n*20|0)+2>>1]=0;c[va+(n*20|0)+4>>2]=o;c[va+(n*20|0)+8>>2]=p;c[va+(n*20|0)+12>>2]=0;c[va+(n*20|0)+16>>2]=0;a[va+(n*20|0)+1>>0]=0;break}else{Di(l,79,o,p,0)|0;break}}else{l=ba;while(1){l=c[l>>2]|0;va=l+55|0;if(((d[va>>0]|d[va+1>>0]<<8)&3)==2)break;else l=l+20|0}l=b[c[l+4>>2]>>1]|0;m=c[D>>2]|0;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;va=c[H+104>>2]|0;a[va+(m*20|0)>>0]=-92;b[va+(m*20|0)+2>>1]=0;c[va+(m*20|0)+4>>2]=x;c[va+(m*20|0)+8>>2]=l;c[va+(m*20|0)+12>>2]=z;c[va+(m*20|0)+16>>2]=0;a[va+(m*20|0)+1>>0]=0}else Di(H,164,x,l,z)|0;n=u+3+l|0;l=u+2|0;m=c[D>>2]|0;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;va=c[H+104>>2]|0;a[va+(m*20|0)>>0]=79;b[va+(m*20|0)+2>>1]=0;c[va+(m*20|0)+4>>2]=n;c[va+(m*20|0)+8>>2]=l;c[va+(m*20|0)+12>>2]=0;c[va+(m*20|0)+16>>2]=0;a[va+(m*20|0)+1>>0]=0;break}else{Di(H,79,n,l,0)|0;break}}while(0);s=(a[B+49>>0]|0)==0;do if(!s){l=c[H>>2]|0;if(!(a[l+81>>0]|0)){va=c[H+104>>2]|0;ta=va+(r*20|0)+1|0;ua=va+(r*20|0)+16|0;kg(l,a[ta>>0]|0,c[ua>>2]|0);a[ta>>0]=0;c[ua>>2]=0;a[va+(r*20|0)>>0]=-86}l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=117;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=x;c[va+(l*20|0)+8>>2]=0;c[va+(l*20|0)+12>>2]=0;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0;break}else{Di(H,117,x,0,0)|0;break}}else{l=c[qa>>2]|0;a[((l|0)==0?f:l)+20>>0]=1;l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=92;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=z;c[va+(l*20|0)+8>>2]=A;c[va+(l*20|0)+12>>2]=v;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0}else Di(H,92,z,A,v)|0;l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=121;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=F;c[va+(l*20|0)+8>>2]=w;c[va+(l*20|0)+12>>2]=0;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0}else Di(H,121,F,w,0)|0;l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=122;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=F;c[va+(l*20|0)+8>>2]=v;c[va+(l*20|0)+12>>2]=w;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0}else Di(H,122,F,v,w)|0;sl(B);l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;va=c[H+104>>2]|0;a[va+(l*20|0)>>0]=36;b[va+(l*20|0)+2>>1]=0;c[va+(l*20|0)+4>>2]=F;c[va+(l*20|0)+8>>2]=0;c[va+(l*20|0)+12>>2]=0;c[va+(l*20|0)+16>>2]=0;a[va+(l*20|0)+1>>0]=0}else l=Di(H,36,F,0,0)|0;if(y<<16>>16<=-2){r=l;break}n=H+104|0;m=0;do{o=m+z|0;p=c[D>>2]|0;if((c[E>>2]|0)>(p|0)){c[D>>2]=p+1;va=c[n>>2]|0;a[va+(p*20|0)>>0]=90;b[va+(p*20|0)+2>>1]=0;c[va+(p*20|0)+4>>2]=F;c[va+(p*20|0)+8>>2]=m;c[va+(p*20|0)+12>>2]=o;c[va+(p*20|0)+16>>2]=0;a[va+(p*20|0)+1>>0]=0}else Di(H,90,F,m,o)|0;m=m+1|0}while((m|0)<(A|0));r=l}while(0);q=c[qa>>2]|0;q=(q|0)==0?f:q;p=q+204|0;o=c[p>>2]|0;n=q+252|0;A:do if((o|0)>0){l=c[n>>2]|0;m=0;do{if((c[l+(m<<2)>>2]|0)==(ya|0))break A;m=m+1|0}while((m|0)<(o|0));m=n;xa=387}else{m=n;l=c[n>>2]|0;xa=387}while(0);B:do if((xa|0)==387){do if(!(mb()|0)){xa=(o<<2)+4|0;l=sb(l,xa,((xa|0)<0)<<31>>31)|0;if(!l)break;c[m>>2]=l;xa=c[p>>2]|0;c[p>>2]=xa+1;c[l+(xa<<2)>>2]=ya;break B}while(0);l=c[q>>2]|0;m=l+81|0;if(a[m>>0]|0)break;if(a[l+82>>0]|0)break;a[m>>0]=1;if((c[l+180>>2]|0)>0)c[l+264>>2]=1;ya=l+272|0;c[ya>>2]=(c[ya>>2]|0)+1;l=c[l+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);l=c[D>>2]|0;if((c[E>>2]|0)>(l|0)){c[D>>2]=l+1;ya=c[H+104>>2]|0;a[ya+(l*20|0)>>0]=10;b[ya+(l*20|0)+2>>1]=0;c[ya+(l*20|0)+4>>2]=0;c[ya+(l*20|0)+8>>2]=A;c[ya+(l*20|0)+12>>2]=z;c[ya+(l*20|0)+16>>2]=0;a[ya+(l*20|0)+1>>0]=0}else l=Di(H,10,0,A,z)|0;do if(!(a[(c[H>>2]|0)+81>>0]|0)){if((l|0)<0)l=(c[D>>2]|0)+-1|0;m=c[H+104>>2]|0;n=m+(l*20|0)+1|0;if(a[n>>0]|0){Ei(H,m+(l*20|0)|0,C,-12);break}if(!C)break;c[m+(l*20|0)+16>>2]=C;a[n>>0]=-12;ya=C+12|0;c[ya>>2]=(c[ya>>2]|0)+1}while(0);m=c[D>>2]|0;if((m|0)>0)b[(c[H+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=(j|0)==11?2:j&65535;j=c[qa>>2]|0;a[((j|0)==0?f:j)+21>>0]=1;if(!s){sl(B);break}l=r+1|0;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;f=c[H+104>>2]|0;a[f+(m*20|0)>>0]=5;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=F;c[f+(m*20|0)+8>>2]=l;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(H,5,F,l,0)|0;m=c[D>>2]|0;if(!(a[(c[H>>2]|0)+81>>0]|0))l=(c[H+104>>2]|0)+(((r|0)<0?m+-1|0:r)*20|0)|0;else l=59308;c[l+8>>2]=m;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;f=c[H+104>>2]|0;a[f+(m*20|0)>>0]=117;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=F;c[f+(m*20|0)+8>>2]=0;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0;break}else{Di(H,117,F,0,0)|0;break}}H=f+56|0;Z=c[H>>2]|0;I=Z+-1|0;c[H>>2]=I;do if(!(0==0?(c[za+32>>2]&128|0)==0:0)){if(c[f+120>>2]|0){Y=0;break}if(!((k|0)==0&(a[ka>>0]|0)==0)){Y=0;break}r=f+44|0;q=(c[r>>2]|0)+1|0;c[r>>2]=q;r=la+108|0;t=c[r>>2]|0;if((c[la+112>>2]|0)>(t|0)){c[r>>2]=t+1;Y=c[la+104>>2]|0;a[Y+(t*20|0)>>0]=70;b[Y+(t*20|0)+2>>1]=0;c[Y+(t*20|0)+4>>2]=0;c[Y+(t*20|0)+8>>2]=q;c[Y+(t*20|0)+12>>2]=0;c[Y+(t*20|0)+16>>2]=0;a[Y+(t*20|0)+1>>0]=0;Y=q;break}else{Di(la,70,0,q,0)|0;Y=q;break}}else Y=0;while(0);C:do if(!(c[ha>>2]&32)){q=la+108|0;r=c[q>>2]|0;if((c[la+112>>2]|0)>(r|0)){c[q>>2]=r+1;E=c[la+104>>2]|0;a[E+(r*20|0)>>0]=73;b[E+(r*20|0)+2>>1]=0;c[E+(r*20|0)+4>>2]=0;c[E+(r*20|0)+8>>2]=F;c[E+(r*20|0)+12>>2]=aa;c[E+(r*20|0)+16>>2]=0;a[E+(r*20|0)+1>>0]=0;E=0;C=0;D=0;x=0;X=0;break}else{Di(la,73,0,F,aa)|0;E=0;C=0;D=0;x=0;X=0;break}}else{y=b[n+50>>1]|0;fa=f+44|0;r=c[fa>>2]|0;z=r+1|0;w=y<<16>>16;r=r+w|0;x=r+1|0;c[fa>>2]=x;if(k|0){E=x;C=y;D=z;x=0;X=0;break}A=c[_>>2]|0;c[_>>2]=A+1;t=la+108|0;q=c[t>>2]|0;u=la+112|0;if((c[u>>2]|0)>(q|0)){c[t>>2]=q+1;fa=c[la+104>>2]|0;a[fa+(q*20|0)>>0]=73;b[fa+(q*20|0)+2>>1]=0;c[fa+(q*20|0)+4>>2]=0;c[fa+(q*20|0)+8>>2]=z;c[fa+(q*20|0)+12>>2]=r;c[fa+(q*20|0)+16>>2]=0;a[fa+(q*20|0)+1>>0]=0}else Di(la,73,0,z,r)|0;q=c[t>>2]|0;if((c[u>>2]|0)>(q|0)){c[t>>2]=q+1;fa=c[la+104>>2]|0;a[fa+(q*20|0)>>0]=113;b[fa+(q*20|0)+2>>1]=0;c[fa+(q*20|0)+4>>2]=A;c[fa+(q*20|0)+8>>2]=w;c[fa+(q*20|0)+12>>2]=0;c[fa+(q*20|0)+16>>2]=0;a[fa+(q*20|0)+1>>0]=0}else q=Di(la,113,A,w,0)|0;r=c[ma>>2]|0;u=Ij(f,n)|0;if(!u){E=x;C=y;D=z;x=q;X=A;break}t=c[r>>2]|0;if(!(a[t+81>>0]|0)){C=c[r+104>>2]|0;E=(c[r+108>>2]|0)+-1|0;a[C+(E*20|0)+1>>0]=-9;c[C+(E*20|0)+16>>2]=u;E=x;C=y;D=z;x=q;X=A;break}if(c[t+480>>2]|0){E=x;C=y;D=z;x=q;X=A;break}fa=(c[u>>2]|0)+-1|0;c[u>>2]=fa;if(fa|0){E=x;C=y;D=z;x=q;X=A;break}r=c[u+12>>2]|0;do if(r|0){if(c[r+480>>2]|0){Xd(r,u);E=x;C=y;D=z;x=q;X=A;break C}t=u;if((c[r+304>>2]|0)>>>0>t>>>0)break;if((c[r+308>>2]|0)>>>0<=t>>>0)break;E=r+300|0;c[u>>2]=c[E>>2];c[E>>2]=u;E=x;C=y;D=z;x=q;X=A;break C}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](u);E=x;C=y;D=z;x=q;X=A;break}else{E=Wa[c[29352>>2]&127](u)|0;c[14978]=(c[14978]|0)-E;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](u);E=x;C=y;D=z;x=q;X=A;break}}while(0);do if($){Tj(f,i,I,16);W=0;V=1;u=0;w=0}else{q=ql(f,g,i,0,0,(c[va>>2]|0)!=0|(ja<<24>>24!=0|(T|(J|(a[ka>>0]|0)!=0)))?4100:4108,s)|0;if(!q)break x;w=q+24|0;u=c[w>>2]|0;w=c[w+4>>2]|0;r=a[q+49>>0]|0;t=r&255;if(r<<24>>24==1){W=q;V=1;break}fa=c[qa>>2]|0;a[((fa|0)==0?f:fa)+20>>0]=1;if(r<<24>>24!=2){W=q;V=t;break}if((w|0)<0|(o|0)==(w|0)){W=q;V=2;break}W=q;V=(a[ca+(w-ga)>>0]|0)==0?t:0}while(0);do if(!(c[ha>>2]&32)){r=la+108|0;q=c[r>>2]|0;t=la+112|0;if((c[t>>2]|0)>(q|0)){c[r>>2]=q+1;ha=c[la+104>>2]|0;a[ha+(q*20|0)>>0]=-128;b[ha+(q*20|0)+2>>1]=0;c[ha+(q*20|0)+4>>2]=o;c[ha+(q*20|0)+8>>2]=aa;c[ha+(q*20|0)+12>>2]=0;c[ha+(q*20|0)+16>>2]=0;a[ha+(q*20|0)+1>>0]=0}else Di(la,128,o,aa,0)|0;if(V|0){M=0;break}q=c[r>>2]|0;if((c[t>>2]|0)>(q|0)){c[r>>2]=q+1;M=c[la+104>>2]|0;a[M+(q*20|0)>>0]=-108;b[M+(q*20|0)+2>>1]=0;c[M+(q*20|0)+4>>2]=F;c[M+(q*20|0)+8>>2]=aa;c[M+(q*20|0)+12>>2]=0;c[M+(q*20|0)+16>>2]=0;a[M+(q*20|0)+1>>0]=0;M=0;break}else{Di(la,148,F,aa,0)|0;M=0;break}}else{B=C<<16>>16;if(C<<16>>16>0){r=n+4|0;q=0;do{Vj(la,ya,o,b[(c[r>>2]|0)+(q<<1)>>1]|0,q+D|0);q=q+1|0}while((q|0)!=(B|0))}if(V|0){if(!x){M=B;E=D;break}q=c[la>>2]|0;if(a[q+81>>0]|0){M=B;E=D;break}M=c[la+104>>2]|0;ha=M+(x*20|0)+1|0;E=M+(x*20|0)+16|0;kg(q,a[ha>>0]|0,c[E>>2]|0);a[ha>>0]=0;c[E>>2]=0;a[M+(x*20|0)>>0]=-86;M=B;E=D;break}y=gl(za,n)|0;z=la+108|0;q=c[z>>2]|0;A=la+112|0;if((c[A>>2]|0)>(q|0)){c[z>>2]=q+1;ha=c[la+104>>2]|0;a[ha+(q*20|0)>>0]=92;b[ha+(q*20|0)+2>>1]=0;c[ha+(q*20|0)+4>>2]=D;c[ha+(q*20|0)+8>>2]=B;c[ha+(q*20|0)+12>>2]=E;c[ha+(q*20|0)+16>>2]=0;a[ha+(q*20|0)+1>>0]=0}else q=Di(la,92,D,B,E)|0;r=c[la>>2]|0;D:do if(!(a[r+81>>0]|0)){if((q|0)<0)q=(c[z>>2]|0)+-1|0;r=c[la+104>>2]|0;t=r+(q*20|0)|0;do if(C<<16>>16<=-1){x=r+(q*20|0)+1|0;if(a[x>>0]|0)break;if(C<<16>>16==-3){c[r+(q*20|0)+16>>2]=y;a[x>>0]=-3;break D}if(!y)break D;c[r+(q*20|0)+16>>2]=y;a[x>>0]=C;if(C<<16>>16!=-12)break D;ha=y+12|0;c[ha>>2]=(c[ha>>2]|0)+1;break D}while(0);Ei(la,t,y,B)}else{if(C<<16>>16==-12)break;kg(r,B,y)}while(0);q=c[z>>2]|0;if((c[A>>2]|0)>(q|0)){c[z>>2]=q+1;ha=c[la+104>>2]|0;a[ha+(q*20|0)>>0]=-124;b[ha+(q*20|0)+2>>1]=0;c[ha+(q*20|0)+4>>2]=X;c[ha+(q*20|0)+8>>2]=E;c[ha+(q*20|0)+12>>2]=D;c[ha+(q*20|0)+16>>2]=0;a[ha+(q*20|0)+1>>0]=0}else q=Di(la,132,X,E,D)|0;if(a[(c[la>>2]|0)+81>>0]|0){M=0;break}M=c[la+104>>2]|0;a[M+(q*20|0)+1>>0]=-3;c[M+(q*20|0)+16>>2]=B;M=0}while(0);U=(k|0)==0;E:do if(U){q=(V|0)==2;if(!q)sl(W);F:do if(sa)xa=511;else{do if(V|0){if((u|0)>-1)a[ca+(u-ga)>>0]=0;if((w|0)>-1)a[ca+(w-ga)>>0]=0;if(!q)break;if(p>>>0<=(w>>>31^1)>>>0)break;r=la+108|0;p=c[r>>2]|0;q=la+112|0;if((c[q>>2]|0)>(p|0)){c[r>>2]=p+1;D=c[la+104>>2]|0;a[D+(p*20|0)>>0]=17;D=D+(p*20|0)+1|0;F=D+19|0;do{a[D>>0]=0;D=D+1|0}while((D|0)<(F|0))}else p=Di(la,17,0,0,0)|0;Hm(f,ya,109,0,ga,ca,0,0)|0;if(p|0){t=c[r>>2]|0;if(!(a[(c[la>>2]|0)+81>>0]|0))p=(c[la+104>>2]|0)+(((p|0)<0?t+-1|0:p)*20|0)|0;else p=59308;c[p+8>>2]=t}if((w|0)==(o|0)|(u|0)==(o|0)){xa=521;break F}else{xa=515;break F}}while(0);Hm(f,ya,109,0,ga,ca,0,0)|0;xa=511}while(0);do if((xa|0)==511){if(V|0){if((w|0)==(o|0)|(sa|(u|0)==(o|0))){xa=520;break}r=la+108|0;q=la+112|0;xa=515;break}if(!n){r=la+108|0;q=c[r>>2]|0;t=la+112|0;if((c[t>>2]|0)>(q|0)){c[r>>2]=q+1;k=c[la+104>>2]|0;a[k+(q*20|0)>>0]=41;b[k+(q*20|0)+2>>1]=0;c[k+(q*20|0)+4>>2]=F;c[k+(q*20|0)+8>>2]=I;c[k+(q*20|0)+12>>2]=aa;c[k+(q*20|0)+16>>2]=0;a[k+(q*20|0)+1>>0]=0}else q=Di(la,41,F,I,aa)|0;p=c[r>>2]|0;if((c[t>>2]|0)>(p|0)){c[r>>2]=p+1;R=c[la+104>>2]|0;a[R+(p*20|0)>>0]=31;b[R+(p*20|0)+2>>1]=0;c[R+(p*20|0)+4>>2]=o;c[R+(p*20|0)+8>>2]=q;c[R+(p*20|0)+12>>2]=aa;c[R+(p*20|0)+16>>2]=0;a[R+(p*20|0)+1>>0]=0;R=0;P=q;break E}else{Di(la,31,o,q,aa)|0;R=0;P=q;break E}}u=(c[H>>2]|0)+-1|0;c[H>>2]=u;r=la+108|0;p=c[r>>2]|0;t=la+112|0;if((c[t>>2]|0)>(p|0)){c[r>>2]=p+1;k=c[la+104>>2]|0;a[k+(p*20|0)>>0]=36;b[k+(p*20|0)+2>>1]=0;c[k+(p*20|0)+4>>2]=X;c[k+(p*20|0)+8>>2]=I;c[k+(p*20|0)+12>>2]=0;c[k+(p*20|0)+16>>2]=0;a[k+(p*20|0)+1>>0]=0}else Di(la,36,X,I,0)|0;p=c[r>>2]|0;if((c[t>>2]|0)>(p|0)){c[r>>2]=p+1;q=c[la+104>>2]|0;a[q+(p*20|0)>>0]=127;b[q+(p*20|0)+2>>1]=0;c[q+(p*20|0)+4>>2]=X;c[q+(p*20|0)+8>>2]=E;c[q+(p*20|0)+12>>2]=0;c[q+(p*20|0)+16>>2]=0;a[q+(p*20|0)+1>>0]=0;q=p}else q=Di(la,127,X,E,0)|0;p=c[r>>2]|0;if((c[t>>2]|0)>(p|0)){c[r>>2]=p+1;k=c[la+104>>2]|0;a[k+(p*20|0)>>0]=28;b[k+(p*20|0)+2>>1]=0;c[k+(p*20|0)+4>>2]=o;c[k+(p*20|0)+8>>2]=u;c[k+(p*20|0)+12>>2]=E;c[k+(p*20|0)+16>>2]=0;a[k+(p*20|0)+1>>0]=0}else p=Di(la,28,o,u,E)|0;if(a[(c[la>>2]|0)+81>>0]|0){R=q;P=u;break E}R=c[la+104>>2]|0;a[R+(p*20|0)+1>>0]=-3;c[R+(p*20|0)+16>>2]=0;R=q;P=u;break E}while(0);do if((xa|0)==515){p=c[r>>2]|0;if((c[q>>2]|0)>(p|0)){c[r>>2]=p+1;xa=c[la+104>>2]|0;a[xa+(p*20|0)>>0]=28;b[xa+(p*20|0)+2>>1]=0;c[xa+(p*20|0)+4>>2]=o;c[xa+(p*20|0)+8>>2]=I;c[xa+(p*20|0)+12>>2]=E;c[xa+(p*20|0)+16>>2]=0;a[xa+(p*20|0)+1>>0]=0}else p=Di(la,28,o,I,E)|0;if(a[(c[la>>2]|0)+81>>0]|0){xa=520;break}xa=c[la+104>>2]|0;a[xa+(p*20|0)+1>>0]=-3;c[xa+(p*20|0)+16>>2]=M;xa=520}while(0);if((xa|0)==520)if((V|0)==1)t=I;else xa=521;if((xa|0)==521){t=(c[H>>2]|0)+-1|0;c[H>>2]=t}p=(n|0)==0?aa:E;q=la+108|0;r=c[q>>2]|0;if((c[la+112>>2]|0)>(r|0)){c[q>>2]=r+1;R=c[la+104>>2]|0;a[R+(r*20|0)>>0]=50;b[R+(r*20|0)+2>>1]=0;c[R+(r*20|0)+4>>2]=p;c[R+(r*20|0)+8>>2]=I;c[R+(r*20|0)+12>>2]=0;c[R+(r*20|0)+16>>2]=0;a[R+(r*20|0)+1>>0]=0;R=0;P=t;break}else{Di(la,50,p,I,0)|0;R=0;P=t;break}}else{R=0;P=I}while(0);I=N<<24>>24==0;do if(!I){do if(S){if((a[S>>0]|0)!=-88){t=Jj(f,S,Q)|0;xa=551;break}t=c[ma>>2]|0;p=c[S+28>>2]|0;q=t+108|0;r=c[q>>2]|0;if((c[t+112>>2]|0)>(r|0)){c[q>>2]=r+1;k=c[t+104>>2]|0;a[k+(r*20|0)>>0]=78;b[k+(r*20|0)+2>>1]=0;c[k+(r*20|0)+4>>2]=p;c[k+(r*20|0)+8>>2]=Q;c[k+(r*20|0)+12>>2]=0;c[k+(r*20|0)+16>>2]=0;a[k+(r*20|0)+1>>0]=0;break}else{Di(t,78,p,Q,0)|0;break}}else{t=Jj(f,0,Q)|0;xa=551}while(0);do if((xa|0)==551){if((t|0)==(Q|0))break;p=c[ma>>2]|0;if(!p)break;q=p+108|0;r=c[q>>2]|0;if((c[p+112>>2]|0)>(r|0)){c[q>>2]=r+1;k=c[p+104>>2]|0;a[k+(r*20|0)>>0]=79;b[k+(r*20|0)+2>>1]=0;c[k+(r*20|0)+4>>2]=t;c[k+(r*20|0)+8>>2]=Q;c[k+(r*20|0)+12>>2]=0;c[k+(r*20|0)+16>>2]=0;a[k+(r*20|0)+1>>0]=0;break}else{Di(p,79,t,Q,0)|0;break}}while(0);p=la+108|0;q=c[p>>2]|0;if((c[la+112>>2]|0)>(q|0)){c[p>>2]=q+1;k=c[la+104>>2]|0;a[k+(q*20|0)>>0]=15;b[k+(q*20|0)+2>>1]=0;c[k+(q*20|0)+4>>2]=Q;c[k+(q*20|0)+8>>2]=0;c[k+(q*20|0)+12>>2]=0;c[k+(q*20|0)+16>>2]=0;a[k+(q*20|0)+1>>0]=0;break}else{Di(la,15,Q,0,0)|0;break}}while(0);G:do if(J|(O<<24>>24!=0|T)){if(T)D=Km(f,ya)|0;else D=0;H=(h|0)==0;J=H?121:122;F=(l|0)==0;H:do if(F)p=0;else{if(H){p=0;r=l;while(1){do if((J|0)==(d[r+8>>0]|0)){if(!(a[r+9>>0]&3))break;q=c[qa>>2]|0;q=c[((q|0)==0?f:q)+260>>2]|0;I:do if(!q)xa=574;else while(1){if((c[q>>2]|0)==(r|0)?(c[q+12>>2]|0)==(j|0):0)break I;q=c[q+4>>2]|0;if(!q){xa=574;break}}while(0);if((xa|0)==574){xa=0;q=Nm(f,r,ya,j)|0;if(!q)break}p=c[q+16>>2]|p}while(0);r=c[r+32>>2]|0;if(!r)break H}}p=0;C=l;do{J:do if((J|0)==(d[C+8>>0]|0)){if(!(a[C+9>>0]&3))break;q=c[C+16>>2]|0;K:do if(q|0){B=c[h>>2]|0;if((B|0)<=0)break J;A=c[q+4>>2]|0;if((A|0)<=0)break J;x=c[q>>2]|0;u=0;while(1){y=c[h+4+(u*20|0)+4>>2]|0;z=d[208+(d[y>>0]|0)>>0]|0;w=0;do{r=c[x+(w<<3)>>2]|0;k=a[r>>0]|0;q=(d[208+(k&255)>>0]|0)-z|0;if(!(k<<24>>24==0|(q|0)!=0)){t=y;do{r=r+1|0;t=t+1|0;k=a[r>>0]|0;q=(d[208+(k&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(q|0)!=0))}if(!q)break K;w=w+1|0}while((w|0)<(A|0));u=u+1|0;if((u|0)>=(B|0))break J}}while(0);q=c[qa>>2]|0;q=c[((q|0)==0?f:q)+260>>2]|0;L:do if(!q)xa=595;else while(1){if((c[q>>2]|0)==(C|0)?(c[q+12>>2]|0)==(j|0):0)break L;q=c[q+4>>2]|0;if(!q){xa=595;break}}while(0);if((xa|0)==595){xa=0;q=Nm(f,C,ya,j)|0;if(!q)break}p=c[q+16>>2]|p}while(0);C=c[C+32>>2]|0}while((C|0)!=0)}while(0);q=p|D;M:do if((b[ta>>1]|0)>0){r=ya+4|0;t=la+108|0;u=la+112|0;w=la+104|0;if((q|0)==-1){p=0;while(1){Vj(la,ya,o,p,p+K|0);p=p+1|0;if((p|0)>=(b[ta>>1]|0))break M}}p=0;do{if(p>>>0<32?(1<>2]|0)+(p<<4)+15>>0]&1){xa=606;break}x=p+K|0;y=c[t>>2]|0;if((c[u>>2]|0)>(y|0)){c[t>>2]=y+1;k=c[w>>2]|0;a[k+(y*20|0)>>0]=73;b[k+(y*20|0)+2>>1]=0;c[k+(y*20|0)+4>>2]=0;c[k+(y*20|0)+8>>2]=x;c[k+(y*20|0)+12>>2]=0;c[k+(y*20|0)+16>>2]=0;a[k+(y*20|0)+1>>0]=0;break}else{Di(la,73,0,x,0)|0;break}}while(0);if((xa|0)==606){xa=0;Vj(la,ya,o,p,p+K|0)}p=p+1|0}while((p|0)<(b[ta>>1]|0))}while(0);do if((n|0)==0&I){n=la+108|0;p=c[n>>2]|0;if((c[la+112>>2]|0)>(p|0)){c[n>>2]=p+1;n=c[la+104>>2]|0;a[n+(p*20|0)>>0]=78;b[n+(p*20|0)+2>>1]=0;c[n+(p*20|0)+4>>2]=aa;c[n+(p*20|0)+8>>2]=Q;c[n+(p*20|0)+12>>2]=0;c[n+(p*20|0)+16>>2]=0;a[n+(p*20|0)+1>>0]=0;n=0;break}else{Di(la,78,aa,Q,0)|0;n=0;break}}while(0);if(F){p=0;I=1;break}if(H){p=0;r=l;while(1){do if((J|0)==(d[r+8>>0]|0)){if(!(a[r+9>>0]&1))break;q=c[qa>>2]|0;q=c[((q|0)==0?f:q)+260>>2]|0;N:do if(!q)xa=626;else while(1){if((c[q>>2]|0)==(r|0)?(c[q+12>>2]|0)==(j|0):0)break N;q=c[q+4>>2]|0;if(!q){xa=626;break}}while(0);if((xa|0)==626){xa=0;q=Nm(f,r,ya,j)|0;if(!q)break}p=c[q+20>>2]|p}while(0);r=c[r+32>>2]|0;if(!r){H=1;I=0;break G}}}p=0;C=l;while(1){O:do if((J|0)==(d[C+8>>0]|0)){if(!(a[C+9>>0]&1))break;q=c[C+16>>2]|0;P:do if(q|0){B=c[h>>2]|0;if((B|0)<=0)break O;A=c[q+4>>2]|0;if((A|0)<=0)break O;x=c[q>>2]|0;u=0;while(1){y=c[h+4+(u*20|0)+4>>2]|0;z=d[208+(d[y>>0]|0)>>0]|0;w=0;do{r=c[x+(w<<3)>>2]|0;k=a[r>>0]|0;q=(d[208+(k&255)>>0]|0)-z|0;if(!(k<<24>>24==0|(q|0)!=0)){t=y;do{r=r+1|0;t=t+1|0;k=a[r>>0]|0;q=(d[208+(k&255)>>0]|0)-(d[208+(d[t>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(q|0)!=0))}if(!q)break P;w=w+1|0}while((w|0)<(A|0));u=u+1|0;if((u|0)>=(B|0))break O}}while(0);q=c[qa>>2]|0;q=c[((q|0)==0?f:q)+260>>2]|0;Q:do if(!q)xa=647;else while(1){if((c[q>>2]|0)==(C|0)?(c[q+12>>2]|0)==(j|0):0)break Q;q=c[q+4>>2]|0;if(!q){xa=647;break}}while(0);if((xa|0)==647){xa=0;q=Nm(f,C,ya,j)|0;if(!q)break}p=c[q+20>>2]|p}while(0);C=c[C+32>>2]|0;if(!C){H=0;I=0;break}}}else{p=0;H=(h|0)==0;I=1}while(0);if((b[ta>>1]|0)>0){z=ya+40|0;A=la+108|0;B=la+112|0;C=la+104|0;m=m&1;y=(m|0)==0;x=0;do{R:do if((x|0)==(b[z>>1]|0)){q=x+v|0;r=c[A>>2]|0;if((c[B>>2]|0)>(r|0)){c[A>>2]=r+1;k=c[C>>2]|0;a[k+(r*20|0)>>0]=73;b[k+(r*20|0)+2>>1]=0;c[k+(r*20|0)+4>>2]=0;c[k+(r*20|0)+8>>2]=q;c[k+(r*20|0)+12>>2]=0;c[k+(r*20|0)+16>>2]=0;a[k+(r*20|0)+1>>0]=0;break}else{Di(la,73,0,q,0)|0;break}}else{q=c[wa+(x<<2)>>2]|0;if((q|0)<=-1){do if(!(y|x>>>0>31)){if(1<>2]|0;if((c[B>>2]|0)>(r|0)){c[A>>2]=r+1;k=c[C>>2]|0;a[k+(r*20|0)>>0]=73;b[k+(r*20|0)+2>>1]=0;c[k+(r*20|0)+4>>2]=0;c[k+(r*20|0)+8>>2]=q;c[k+(r*20|0)+12>>2]=0;c[k+(r*20|0)+16>>2]=0;a[k+(r*20|0)+1>>0]=0;break R}else{Di(la,73,0,q,0)|0;break R}}while(0);Vj(la,ya,o,x,x+v|0);break}q=c[h+4+(q*20|0)>>2]|0;w=x+v|0;do if(q){if((a[q>>0]|0)!=-88){u=Jj(f,q,w)|0;break}u=c[ma>>2]|0;q=c[q+28>>2]|0;r=u+108|0;t=c[r>>2]|0;if((c[u+112>>2]|0)>(t|0)){c[r>>2]=t+1;k=c[u+104>>2]|0;a[k+(t*20|0)>>0]=78;b[k+(t*20|0)+2>>1]=0;c[k+(t*20|0)+4>>2]=q;c[k+(t*20|0)+8>>2]=w;c[k+(t*20|0)+12>>2]=0;c[k+(t*20|0)+16>>2]=0;a[k+(t*20|0)+1>>0]=0;break R}else{Di(u,78,q,w,0)|0;break R}}else u=Jj(f,0,w)|0;while(0);if((u|0)==(w|0))break;q=c[ma>>2]|0;if(!q)break;r=q+108|0;t=c[r>>2]|0;if((c[q+112>>2]|0)>(t|0)){c[r>>2]=t+1;k=c[q+104>>2]|0;a[k+(t*20|0)>>0]=79;b[k+(t*20|0)+2>>1]=0;c[k+(t*20|0)+4>>2]=u;c[k+(t*20|0)+8>>2]=w;c[k+(t*20|0)+12>>2]=0;c[k+(t*20|0)+16>>2]=0;a[k+(t*20|0)+1>>0]=0;break}else{Di(q,79,u,w,0)|0;break}}while(0);x=x+1|0}while((x|0)<(b[ta>>1]|0))}else m=m&1;do if(m|0){zk(la,ya,v);if(!I){B=f+23|0;C=f+44|0;A=l;do{S:do if((a[A+8>>0]|0)==122){if((a[A+9>>0]|0)!=1)break;m=c[A+16>>2]|0;T:do if(!(H|(m|0)==0)){z=c[h>>2]|0;if((z|0)<=0)break S;y=c[m+4>>2]|0;if((y|0)<=0)break S;u=c[m>>2]|0;r=0;while(1){w=c[h+4+(r*20|0)+4>>2]|0;x=d[208+(d[w>>0]|0)>>0]|0;t=0;do{p=c[u+(t<<3)>>2]|0;k=a[p>>0]|0;m=(d[208+(k&255)>>0]|0)-x|0;if(!(k<<24>>24==0|(m|0)!=0)){q=w;do{p=p+1|0;q=q+1|0;k=a[p>>0]|0;m=(d[208+(k&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(k<<24>>24==0|(m|0)!=0))}if(!m)break T;t=t+1|0}while((t|0)<(y|0));r=r+1|0;if((r|0)>=(z|0))break S}}while(0);m=c[ma>>2]|0;U:do if(!m){q=c[f>>2]|0;do if(!(c[qa>>2]|0)){if(b[q+76>>1]&8)break;a[B>>0]=1}while(0);V:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))xa=707;else{m=0;break U}else{do if((e[q+276>>1]|0)>=224){p=q+300|0;m=c[p>>2]|0;if(m|0){c[p>>2]=c[m>>2];k=q+284|0;c[k>>2]=(c[k>>2]|0)+1;break V}p=q+296|0;m=c[p>>2]|0;if(!m){m=q+292|0;break}else{c[p>>2]=c[m>>2];k=q+284|0;c[k>>2]=(c[k>>2]|0)+1;break V}}else m=q+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;xa=707}while(0);if((xa|0)==707){xa=0;m=_d(q,224,0)|0}if(!m){m=0;break}D=m+104|0;F=D+120|0;do{c[D>>2]=0;D=D+4|0}while((D|0)<(F|0));c[m>>2]=q;p=q+4|0;q=c[p>>2]|0;if(q|0)c[q+4>>2]=m;c[m+8>>2]=q;c[m+4>>2]=0;c[p>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[ma>>2]=m;Di(m,61,0,1,0)|0}while(0);p=c[qa>>2]|0;p=c[((p|0)==0?f:p)+260>>2]|0;W:do if(!p)xa=717;else while(1){if((c[p>>2]|0)==(A|0)?(c[p+12>>2]|0)==(j|0):0)break W;p=c[p+4>>2]|0;if(!p){xa=717;break}}while(0);if((xa|0)==717){xa=0;p=Nm(f,A,ya,j)|0;if(!p)break}if(!(c[A>>2]|0))w=0;else{w=(c[f>>2]|0)+32|0;w=bw(c[w>>2]|0,c[w+4>>2]|0,13)|0;L()|0;w=w&1^1}q=(c[C>>2]|0)+1|0;c[C>>2]=q;t=c[p+8>>2]|0;u=m+108|0;p=c[u>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[u>>2]=p+1;k=c[m+104>>2]|0;a[k+(p*20|0)>>0]=45;b[k+(p*20|0)+2>>1]=0;c[k+(p*20|0)+4>>2]=aa;c[k+(p*20|0)+8>>2]=P;c[k+(p*20|0)+12>>2]=q;c[k+(p*20|0)+16>>2]=0;a[k+(p*20|0)+1>>0]=0}else p=Di(m,45,aa,P,q)|0;do if(!(a[(c[m>>2]|0)+81>>0]|0)){if((p|0)<0)p=(c[u>>2]|0)+-1|0;q=c[m+104>>2]|0;r=q+(p*20|0)+1|0;if(a[r>>0]|0){Ei(m,q+(p*20|0)|0,t,-4);break}if(!t)break;c[q+(p*20|0)+16>>2]=t;a[r>>0]=-4}while(0);p=c[u>>2]|0;if((p|0)<=0)break;b[(c[m+104>>2]|0)+((p+-1|0)*20|0)+2>>1]=w}while(0);A=c[A+32>>2]|0}while((A|0)!=0)}p=la+108|0;m=c[p>>2]|0;q=(c[la+112>>2]|0)>(m|0);do if(!n)if(q){c[p>>2]=m+1;k=c[la+104>>2]|0;a[k+(m*20|0)>>0]=31;b[k+(m*20|0)+2>>1]=0;c[k+(m*20|0)+4>>2]=o;c[k+(m*20|0)+8>>2]=P;c[k+(m*20|0)+12>>2]=aa;c[k+(m*20|0)+16>>2]=0;a[k+(m*20|0)+1>>0]=0;break}else{Di(la,31,o,P,aa)|0;break}else{if(q){c[p>>2]=m+1;k=c[la+104>>2]|0;a[k+(m*20|0)>>0]=28;b[k+(m*20|0)+2>>1]=0;c[k+(m*20|0)+4>>2]=o;c[k+(m*20|0)+8>>2]=P;c[k+(m*20|0)+12>>2]=E;c[k+(m*20|0)+16>>2]=0;a[k+(m*20|0)+1>>0]=0}else m=Di(la,28,o,P,E)|0;if(a[(c[la>>2]|0)+81>>0]|0)break;k=c[la+104>>2]|0;a[k+(m*20|0)+1>>0]=-3;c[k+(m*20|0)+16>>2]=M}while(0);m=b[ta>>1]|0;if(m<<16>>16<=0)break;q=ya+40|0;p=0;do{do if((c[wa+(p<<2)>>2]|0)<0){if((p|0)==(b[q>>1]|0))break;Vj(la,ya,o,p,p+v|0);m=b[ta>>1]|0}while(0);p=p+1|0}while((p|0)<(m<<16>>16|0))}while(0);do if(!sa){Tm(f,ya,ra,o,s,Q,aa,ja,j&255,P,va,wa,0);if(T)Lm(f,ya,aa,0,wa,pa);r=(pa|0)==0;t=(c[va>>2]|pa|0)==0;do if(t)q=0;else{p=la+108|0;m=c[p>>2]|0;q=(c[la+112>>2]|0)>(m|0);if(!n)if(q){c[p>>2]=m+1;q=c[la+104>>2]|0;a[q+(m*20|0)>>0]=31;b[q+(m*20|0)+2>>1]=0;c[q+(m*20|0)+4>>2]=o;c[q+(m*20|0)+8>>2]=0;c[q+(m*20|0)+12>>2]=aa;c[q+(m*20|0)+16>>2]=0;a[q+(m*20|0)+1>>0]=0;q=m;break}else{q=Di(la,31,o,0,aa)|0;break}if(q){c[p>>2]=m+1;va=c[la+104>>2]|0;a[va+(m*20|0)>>0]=28;b[va+(m*20|0)+2>>1]=0;c[va+(m*20|0)+4>>2]=o;c[va+(m*20|0)+8>>2]=0;c[va+(m*20|0)+12>>2]=E;c[va+(m*20|0)+16>>2]=0;a[va+(m*20|0)+1>>0]=0}else m=Di(la,28,o,0,E)|0;if(a[(c[la>>2]|0)+81>>0]|0){q=m;break}q=c[la+104>>2]|0;a[q+(m*20|0)+1>>0]=-3;c[q+(m*20|0)+16>>2]=M;q=m}while(0);Mm(f,ya,o,s,ra,-1);do if(!(r&(ia|0)<2)){m=la+108|0;p=c[m>>2]|0;if((c[la+112>>2]|0)>(p|0)){c[m>>2]=p+1;va=c[la+104>>2]|0;a[va+(p*20|0)>>0]=123;b[va+(p*20|0)+2>>1]=0;c[va+(p*20|0)+4>>2]=o;c[va+(p*20|0)+8>>2]=0;c[va+(p*20|0)+12>>2]=0;c[va+(p*20|0)+16>>2]=0;a[va+(p*20|0)+1>>0]=0;break}else{Di(la,123,o,0,0)|0;break}}while(0);if(!t){p=c[la+108>>2]|0;if(!(a[(c[la>>2]|0)+81>>0]|0))m=(c[la+104>>2]|0)+(((q|0)<0?p+-1|0:q)*20|0)|0;else m=59308;c[m+8>>2]=p}if(!T){Um(f,ya,o,s,Q,ra,(V|0)==2?6:4,0,0);break}Lm(f,ya,0,Q,wa,pa);Um(f,ya,o,s,Q,ra,(V|0)==2?6:4,0,0);if(0==0?(c[(c[f>>2]|0)+32>>2]&16384|0)==0:0)break;t=c[ya>>2]|0;q=c[ua>>2]|0;r=c[q+68>>2]|0;if(!r){o=q+60|0;m=q+64|0}else{o=a[t>>0]|0;if(!(o<<24>>24))m=0;else{m=0;p=t;do{p=p+1|0;m=G(m+(d[208+(o&255)>>0]|0)|0,-1640531535)|0;o=a[p>>0]|0}while(o<<24>>24!=0)}m=(m>>>0)%((c[q+56>>2]|0)>>>0)|0;o=r+(m<<3)|0;m=r+(m<<3)+4|0}o=c[o>>2]|0;X:do if(!o)m=59292;else{s=d[208+(d[t>>0]|0)>>0]|0;while(1){m=c[m>>2]|0;o=o+-1|0;q=c[m+12>>2]|0;va=a[q>>0]|0;p=(d[208+(va&255)>>0]|0)-s|0;if(!(va<<24>>24==0|(p|0)!=0)){r=t;do{q=q+1|0;r=r+1|0;va=a[q>>0]|0;p=(d[208+(va&255)>>0]|0)-(d[208+(d[r>>0]|0)>>0]|0)|0}while(!(va<<24>>24==0|(p|0)!=0))}if(!p)break X;if(!o){m=59292;break}}}while(0);m=c[m+8>>2]|0;if(!m)break;v=f+23|0;w=f+44|0;do{do if(Jm(ya,m,wa,pa)|0){r=Rm(f,ya,m,h)|0;if(!r)break;o=c[ma>>2]|0;Y:do if(!o){q=c[f>>2]|0;do if(!(c[qa>>2]|0)){if(b[q+76>>1]&8)break;a[v>>0]=1}while(0);Z:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))xa=802;else{o=0;break Y}else{do if((e[q+276>>1]|0)>=224){p=q+300|0;o=c[p>>2]|0;if(o|0){c[p>>2]=c[o>>2];va=q+284|0;c[va>>2]=(c[va>>2]|0)+1;break Z}p=q+296|0;o=c[p>>2]|0;if(!o){o=q+292|0;break}else{c[p>>2]=c[o>>2];va=q+284|0;c[va>>2]=(c[va>>2]|0)+1;break Z}}else o=q+288|0;while(0);c[o>>2]=(c[o>>2]|0)+1;xa=802}while(0);if((xa|0)==802){xa=0;o=_d(q,224,0)|0}if(!o){o=0;break}D=o+104|0;F=D+120|0;do{c[D>>2]=0;D=D+4|0}while((D|0)<(F|0));c[o>>2]=q;p=q+4|0;q=c[p>>2]|0;if(q|0)c[q+4>>2]=o;c[o+8>>2]=q;c[o+4>>2]=0;c[p>>2]=o;c[o+20>>2]=381479589;c[o+12>>2]=f;c[ma>>2]=o;Di(o,61,0,1,0)|0}while(0);p=c[qa>>2]|0;p=c[((p|0)==0?f:p)+260>>2]|0;_:do if(!p)xa=812;else while(1){if((c[p>>2]|0)==(r|0)?(c[p+12>>2]|0)==2:0)break _;p=c[p+4>>2]|0;if(!p){xa=812;break}}while(0);if((xa|0)==812){xa=0;p=Nm(f,r,ya,2)|0;if(!p)break}if(!(c[r>>2]|0))u=0;else{u=(c[f>>2]|0)+32|0;u=bw(c[u>>2]|0,c[u+4>>2]|0,13)|0;L()|0;u=u&1^1}q=(c[w>>2]|0)+1|0;c[w>>2]=q;s=c[p+8>>2]|0;t=o+108|0;p=c[t>>2]|0;if((c[o+112>>2]|0)>(p|0)){c[t>>2]=p+1;va=c[o+104>>2]|0;a[va+(p*20|0)>>0]=45;b[va+(p*20|0)+2>>1]=0;c[va+(p*20|0)+4>>2]=aa;c[va+(p*20|0)+8>>2]=0;c[va+(p*20|0)+12>>2]=q;c[va+(p*20|0)+16>>2]=0;a[va+(p*20|0)+1>>0]=0}else p=Di(o,45,aa,0,q)|0;do if(!(a[(c[o>>2]|0)+81>>0]|0)){if((p|0)<0)p=(c[t>>2]|0)+-1|0;q=c[o+104>>2]|0;r=q+(p*20|0)+1|0;if(a[r>>0]|0){Ei(o,q+(p*20|0)|0,s,-4);break}if(!s)break;c[q+(p*20|0)+16>>2]=s;a[r>>0]=-4}while(0);p=c[t>>2]|0;if((p|0)<=0)break;b[(c[o+104>>2]|0)+((p+-1|0)*20|0)+2>>1]=u}while(0);m=c[m+12>>2]|0}while((m|0)!=0)}while(0);z=(Y|0)!=0;do if(z){m=la+108|0;o=c[m>>2]|0;if((c[la+112>>2]|0)>(o|0)){c[m>>2]=o+1;va=c[la+104>>2]|0;a[va+(o*20|0)>>0]=83;b[va+(o*20|0)+2>>1]=0;c[va+(o*20|0)+4>>2]=Y;c[va+(o*20|0)+8>>2]=1;c[va+(o*20|0)+12>>2]=0;c[va+(o*20|0)+16>>2]=0;a[va+(o*20|0)+1>>0]=0;break}else{Di(la,83,Y,1,0)|0;break}}while(0);if(!I){x=f+23|0;y=f+44|0;do{$:do if((a[l+8>>0]|0)==122){if((a[l+9>>0]|0)!=2)break;m=c[l+16>>2]|0;aa:do if(!(H|(m|0)==0)){w=c[h>>2]|0;if((w|0)<=0)break $;v=c[m+4>>2]|0;if((v|0)<=0)break $;s=c[m>>2]|0;q=0;while(1){t=c[h+4+(q*20|0)+4>>2]|0;u=d[208+(d[t>>0]|0)>>0]|0;r=0;do{o=c[s+(r<<3)>>2]|0;va=a[o>>0]|0;m=(d[208+(va&255)>>0]|0)-u|0;if(!(va<<24>>24==0|(m|0)!=0)){p=t;do{o=o+1|0;p=p+1|0;va=a[o>>0]|0;m=(d[208+(va&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(va<<24>>24==0|(m|0)!=0))}if(!m)break aa;r=r+1|0}while((r|0)<(v|0));q=q+1|0;if((q|0)>=(w|0))break $}}while(0);m=c[ma>>2]|0;ba:do if(!m){p=c[f>>2]|0;do if(!(c[qa>>2]|0)){if(b[p+76>>1]&8)break;a[x>>0]=1}while(0);ca:do if(c[p+272>>2]|0)if(!(a[p+81>>0]|0))xa=862;else{m=0;break ba}else{do if((e[p+276>>1]|0)>=224){o=p+300|0;m=c[o>>2]|0;if(m|0){c[o>>2]=c[m>>2];va=p+284|0;c[va>>2]=(c[va>>2]|0)+1;break ca}o=p+296|0;m=c[o>>2]|0;if(!m){m=p+292|0;break}else{c[o>>2]=c[m>>2];va=p+284|0;c[va>>2]=(c[va>>2]|0)+1;break ca}}else m=p+288|0;while(0);c[m>>2]=(c[m>>2]|0)+1;xa=862}while(0);if((xa|0)==862){xa=0;m=_d(p,224,0)|0}if(!m){m=0;break}D=m+104|0;F=D+120|0;do{c[D>>2]=0;D=D+4|0}while((D|0)<(F|0));c[m>>2]=p;o=p+4|0;p=c[o>>2]|0;if(p|0)c[p+4>>2]=m;c[m+8>>2]=p;c[m+4>>2]=0;c[o>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[ma>>2]=m;Di(m,61,0,1,0)|0}while(0);o=c[qa>>2]|0;o=c[((o|0)==0?f:o)+260>>2]|0;da:do if(!o)xa=872;else while(1){if((c[o>>2]|0)==(l|0)?(c[o+12>>2]|0)==(j|0):0)break da;o=c[o+4>>2]|0;if(!o){xa=872;break}}while(0);if((xa|0)==872){xa=0;o=Nm(f,l,ya,j)|0;if(!o)break}if(!(c[l>>2]|0))t=0;else{t=(c[f>>2]|0)+32|0;t=bw(c[t>>2]|0,c[t+4>>2]|0,13)|0;L()|0;t=t&1^1}p=(c[y>>2]|0)+1|0;c[y>>2]=p;r=c[o+8>>2]|0;s=m+108|0;o=c[s>>2]|0;if((c[m+112>>2]|0)>(o|0)){c[s>>2]=o+1;va=c[m+104>>2]|0;a[va+(o*20|0)>>0]=45;b[va+(o*20|0)+2>>1]=0;c[va+(o*20|0)+4>>2]=aa;c[va+(o*20|0)+8>>2]=P;c[va+(o*20|0)+12>>2]=p;c[va+(o*20|0)+16>>2]=0;a[va+(o*20|0)+1>>0]=0}else o=Di(m,45,aa,P,p)|0;do if(!(a[(c[m>>2]|0)+81>>0]|0)){if((o|0)<0)o=(c[s>>2]|0)+-1|0;p=c[m+104>>2]|0;q=p+(o*20|0)+1|0;if(a[q>>0]|0){Ei(m,p+(o*20|0)|0,r,-4);break}if(!r)break;c[p+(o*20|0)+16>>2]=r;a[q>>0]=-4}while(0);o=c[s>>2]|0;if((o|0)<=0)break;b[(c[m+104>>2]|0)+((o+-1|0)*20|0)+2>>1]=t}while(0);l=c[l+32>>2]|0}while((l|0)!=0)}ea:do switch(V|0){case 1:break;case 2:{m=c[la+12>>2]|0;l=~P;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,la,l);else c[(c[m+64>>2]|0)+(l<<2)>>2]=c[la+108>>2];sl(W);break}default:{if(!n){l=la+108|0;m=c[l>>2]|0;if((c[la+112>>2]|0)>(m|0)){c[l>>2]=m+1;j=c[la+104>>2]|0;a[j+(m*20|0)>>0]=11;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=0;c[j+(m*20|0)+8>>2]=P;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0;break ea}else{Di(la,11,0,P,0)|0;break ea}}m=c[la+12>>2]|0;l=~P;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0){mk(m,la,l);l=la+108|0}else{j=la+108|0;c[(c[m+64>>2]|0)+(l<<2)>>2]=c[j>>2];l=j}m=c[l>>2]|0;if((c[la+112>>2]|0)>(m|0)){c[l>>2]=m+1;j=c[la+104>>2]|0;a[j+(m*20|0)>>0]=5;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=X;c[j+(m*20|0)+8>>2]=R;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0;break ea}else{Di(la,5,X,R,0)|0;break ea}}}while(0);m=c[la+12>>2]|0;l=0-Z|0;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,la,l);else c[(c[m+64>>2]|0)+(l<<2)>>2]=c[la+108>>2];do if(!(a[ka>>0]|0)){if(!(U&(c[f+120>>2]|0)==0))break;if(!(c[f+112>>2]|0))break;Sm(f)}while(0);if(!z)break;l=la+108|0;m=c[l>>2]|0;if((c[la+112>>2]|0)>(m|0)){c[l>>2]=m+1;f=c[la+104>>2]|0;a[f+(m*20|0)>>0]=81;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=Y;c[f+(m*20|0)+8>>2]=1;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(la,81,Y,1,0)|0;Wi(la,1);if(a[(c[la>>2]|0)+81>>0]|0)break;yc(c[la+116>>2]|0,44795,-1,1,0)|0}while(0);if(!oa){xa=918;break}c[oa+240>>2]=na;xa=918}while(0);if((xa|0)==918?za|0:0)xa=919;do if((xa|0)==919){if(c[za+480>>2]|0){Xd(za,wa);break a}l=wa;if((c[za+304>>2]|0)>>>0<=l>>>0){if((c[za+308>>2]|0)>>>0<=l>>>0)break;f=za+300|0;c[wa>>2]=c[f>>2];c[f>>2]=wa;break a}}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](wa);break}else{f=Wa[c[29352>>2]&127](wa)|0;c[14978]=(c[14978]|0)-f;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](wa);break}}}}}while(0);qi(za,g);if(h|0)ri(za,h);if(!i){Ra=Aa;return}ni(za,i);Ra=Aa;return}function uj(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=Ra;Ra=Ra+48|0;k=u;r=u+8|0;t=c[e>>2]|0;if(!f)p=0;else p=c[f>>2]|0;s=(g|0)==0;do if(!(s|(h|0)==0)){l=a[h>>0]|0;o=g+4|0;i=c[o>>2]|0;switch(l<<24>>24){case -125:break;case -88:{j=a[h+38>>0]|0;q=6;break}default:{j=l;q=6}}if((q|0)==6){switch(j<<24>>24){case -87:{j=h+20|0;q=9;break}case -125:{j=c[h+20>>2]|0;q=9;break}default:j=1}if((q|0)==9)j=c[c[j>>2]>>2]|0;if((i|0)!=(j|0)){c[k>>2]=i;c[k+4>>2]=j;cd(e,38869,k);n=f;break}}a:do if((i|0)>0){m=e+272|0;n=h+20|0;j=0;i=l;while(1){switch(i<<24>>24){case -125:{i=ej(e,170,0,0)|0;if(!i)i=0;else{b[i+32>>1]=j;c[i+12>>2]=h}break}case -87:{i=c[(c[n>>2]|0)+4+(j*20|0)>>2]|0;if(!i){l=0;i=0;q=19}else q=18;break}default:{i=h;q=18}}if((q|0)==18){l=i;i=dk(c[e>>2]|0,i,0,0)|0;q=19}b:do if((q|0)==19){q=0;k=c[m>>2]|0;if(k){while(1){if((c[k>>2]|0)==(l|0))break;k=c[k+12>>2]|0;if(!k)break b}c[k>>2]=i}}while(0);f=nj(c[e>>2]|0,f,i)|0;if(f|0){l=(c[g>>2]|0)+(j<<3)|0;c[f+4+(((c[f>>2]|0)+-1|0)*20|0)+4>>2]=c[l>>2];c[l>>2]=0}j=j+1|0;i=c[o>>2]|0;if((j|0)>=(i|0))break a;i=a[h>>0]|0}}while(0);if((a[t+81>>0]|0)==0?(f|0)!=0&(a[h>>0]|0)==-125:0){n=c[f+4+(p*20|0)>>2]|0;c[n+16>>2]=h;c[n+28>>2]=i;h=0;n=f}else n=f}else n=f;while(0);if((d[e+200>>0]|0)>1?(q=r+8|0,c[q>>2]=0,c[q+4>>2]=0,c[q+8>>2]=0,c[q+12>>2]=0,c[q+16>>2]=0,c[r>>2]=e,c[r+4>>2]=124,h|0):0)_j(r,h)|0;if(h|0)ni(t,h);if(s){Ra=u;return n|0}m=g+4|0;h=c[g>>2]|0;c:do if((c[m>>2]|0)>0){f=t+480|0;j=t+304|0;k=t+308|0;l=t+300|0;if(!t){i=0;while(1){h=c[h+(i<<3)>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{s=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);i=i+1|0;h=c[g>>2]|0;if((i|0)>=(c[m>>2]|0))break c}}i=0;do{h=c[h+(i<<3)>>2]|0;do if(h|0){if(c[f>>2]|0){Xd(t,h);break}s=h;if((c[j>>2]|0)>>>0<=s>>>0?(c[k>>2]|0)>>>0>s>>>0:0){c[h>>2]=c[l>>2];c[l>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{s=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);i=i+1|0;h=c[g>>2]|0}while((i|0)<(c[m>>2]|0))}while(0);d:do if(h){do if(t|0){i=t+480|0;if(!(c[i>>2]|0)){f=h;if((c[t+304>>2]|0)>>>0>f>>>0)break;if((c[t+308>>2]|0)>>>0<=f>>>0)break;s=t+300|0;c[h>>2]=c[s>>2];c[s>>2]=h}else Xd(t,h);h=i;q=70;break d}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);q=68;break}else{q=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);q=68;break}}else q=68;while(0);if((q|0)==68)if(t){h=t+480|0;q=70}if((q|0)==70){if(c[h>>2]|0){Xd(t,g);Ra=u;return n|0}s=g;if((c[t+304>>2]|0)>>>0<=s>>>0?(c[t+308>>2]|0)>>>0>s>>>0:0){t=t+300|0;c[g>>2]=c[t>>2];c[t>>2]=g;Ra=u;return n|0}}if(!g){Ra=u;return n|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);Ra=u;return n|0}else{t=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);Ra=u;return n|0}return 0} -function vj(f,g,h,i,j,k){f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0;Ga=Ra;Ra=Ra+336|0;ma=Ga+232|0;ia=Ga+224|0;ga=Ga+216|0;ca=Ga+208|0;aa=Ga+200|0;$=Ga+184|0;X=Ga+176|0;T=Ga+160|0;R=Ga+152|0;Q=Ga+144|0;A=Ga+136|0;x=Ga+128|0;t=Ga+120|0;s=Ga+112|0;q=Ga+104|0;ta=Ga+304|0;ja=Ga+272|0;la=Ga;xa=Ga+268|0;wa=Ga+264|0;U=Ga+240|0;c[xa>>2]=0;c[wa>>2]=0;Fa=c[f>>2]|0;V=f+36|0;do if((c[V>>2]|0)==0?(ba=Fa+81|0,(a[ba>>0]|0)==0):0){na=U+4|0;c[na>>2]=0;if(h)if((c[h+8>>2]&512|0)!=0?(c[h+52>>2]|0)==0:0){Ea=c[h>>2]|0;c[h>>2]=0;pi(Fa,h,1);Da=0}else{Da=h;Ea=0}else{Da=0;Ea=0}h=c[g+8>>2]|0;if(!h)l=g+12|0;else{m=c[(c[f>>2]|0)+16>>2]|0;l=0;while(1)if((c[m+(l<<4)+12>>2]|0)==(h|0))break;else l=l+1|0;l=m+(l<<4)|0}Ca=bd(f,0,c[g+16>>2]|0,c[l>>2]|0)|0;l=c[f>>2]|0;ha=g+24|0;h=c[ha>>2]|0;do if(h|0){if(l|0?c[l+480>>2]|0:0){Vi(l,h);break}za=h+32|0;Aa=(c[za>>2]|0)+-1|0;c[za>>2]=Aa;if(!Aa)Vi(l,h)}while(0);c[ha>>2]=Ca;a:do if(Ca){Aa=Ca+32|0;c[Aa>>2]=(c[Aa>>2]|0)+1;b:do if(a[g+45>>0]&2){o=c[g+72>>2]|0;l=c[Ca+8>>2]|0;c:do if(l|0){p=d[208+(d[o>>0]|0)>>0]|0;while(1){m=c[l>>2]|0;Aa=a[m>>0]|0;h=(d[208+(Aa&255)>>0]|0)-p|0;if(!(Aa<<24>>24==0|(h|0)!=0)){n=o;do{m=m+1|0;n=n+1|0;Aa=a[m>>0]|0;h=(d[208+(Aa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(h|0)!=0))}if(!h)break;l=c[l+20>>2]|0;if(!l)break c}c[g+76>>2]=l;break b}while(0);c[q>>2]=o;c[q+4>>2]=0;cd(f,41107,q);a[f+17>>0]=1;l=0;Ba=1038;break a}while(0);ra=Ca+72|0;h=c[ra>>2]|0;m=c[Fa+16>>2]|0;if(!h)W=-1e6;else{l=0;while(1)if((c[m+(l<<4)+12>>2]|0)==(h|0)){W=l;break}else l=l+1|0}n=c[Ca>>2]|0;h=c[m+(W<<4)>>2]|0;l=c[f>>2]|0;if(((a[l+165>>0]|0)==0?(a[f+200>>0]|0)==0:0)?(r=c[l+312>>2]|0,(r|0)!=0):0){l=$a[r&127](c[l+316>>2]|0,18,n,0,h,c[f+240>>2]|0)|0;if((l|0)==1){cd(f,39216,s);c[f+12>>2]=23;l=0;Ba=1038;break}if((l|2|0)!=2){cd(f,39231,t);c[f+12>>2]=1;l=0;Ba=1038;break}if(l|0){l=0;Ba=1038;break}l=c[f>>2]|0}S=Ca+36|0;pa=(c[S>>2]|0)>>>5&1;do if(!(0==0?(c[l+32>>2]&262144|0)==0:0)?(u=c[(c[l+16>>2]|0)+28>>2]|0,(a[f+146>>0]|0)==0):0){r=c[ra>>2]|0;if((r|0)!=(u|0)?(v=c[u+48>>2]|0,(v|0)!=0):0){q=Ca+68|0;p=v;l=0;do{o=c[p+8>>2]|0;do if((c[o+24>>2]|0)==(r|0)){m=c[o+4>>2]|0;n=c[Ca>>2]|0;Aa=a[m>>0]|0;h=(d[208+(Aa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(!(Aa<<24>>24==0|(h|0)!=0))do{m=m+1|0;n=n+1|0;Aa=a[m>>0]|0;h=(d[208+(Aa&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(Aa<<24>>24==0|(h|0)!=0));if(h|0)break;if(!l)l=c[q>>2]|0;c[o+32>>2]=l;l=o}while(0);p=c[p>>2]|0}while((p|0)!=0);if(!l)Ba=56}else Ba=56;if((Ba|0)==56){l=c[Ca+68>>2]|0;if(!l){Ba=62;break}}h=0;m=l;do{if((a[m+8>>0]|0)==120)h=h|d[m+9>>0];m=c[m+32>>2]|0}while((m|0)!=0);if(h)t=l;else Ba=62}else Ba=62;while(0);if((Ba|0)==62){h=0;t=0}oa=(c[Ca+12>>2]|0)!=0;if((Sk(f,Ca)|0)==0?(Fm(f,Ca,h)|0)==0:0){ya=f+8|0;l=c[ya>>2]|0;if(!l){n=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[n+76>>1]&8)==0:0)a[f+23>>0]=1;d:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))Ba=79;else{l=0;Ba=1038;break a}else{do if((e[n+276>>1]|0)>=224){l=n+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];Aa=n+284|0;c[Aa>>2]=(c[Aa>>2]|0)+1;break d}l=n+296|0;m=c[l>>2]|0;if(!m){l=n+292|0;break}else{c[l>>2]=c[m>>2];Aa=n+284|0;c[Aa>>2]=(c[Aa>>2]|0)+1;break d}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;Ba=79}while(0);if((Ba|0)==79)m=_d(n,224,0)|0;if(!m){l=0;Ba=1038;break}p=m+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[m>>2]=n;l=n+4|0;n=c[l>>2]|0;if(n|0)c[n+4>>2]=m;c[m+8>>2]=n;c[m+4>>2]=0;c[l>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[ya>>2]=m;Di(m,61,0,1,0)|0;Aa=m}else Aa=l;za=f+18|0;if(!(a[za>>0]|0)){va=Aa+149|0;ua=d[va>>0]|d[va+1>>0]<<8|32;a[va>>0]=ua;a[va+1>>0]=ua>>8}va=(Da|0)!=0;sa=(t|0)!=0;s=(va|sa)&1;ua=f+116|0;v=c[ua>>2]|0;v=(v|0)==0?f:v;l=v+84|0;m=c[l>>2]|0;u=1<>2]=m|u,(W|0)==1):0)?(y=c[v>>2]|0,w=y+16|0,(c[(c[w>>2]|0)+20>>2]|0)==0):0){if(a[v+199>>0]|0)break;l=Pe(c[y>>2]|0,0,y,ta,0,542)|0;if(l|0){cd(v,32157,x);c[v+12>>2]=l;break}qa=c[ta>>2]|0;c[(c[w>>2]|0)+20>>2]=qa;l=c[y+92>>2]|0;o=c[qa+4>>2]|0;c[o+4>>2]=c[qa>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;q=o+36|0;r=(c[p>>2]|0)-(c[q>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[p>>2]=l;n=o+80|0;l=c[n>>2]|0;if(!l)break;m=l+-4|0;c[n>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;qa=(c[14820]|0)+1|0;c[14820]=qa;c[14821]=(qa|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;Ba=101;break}else{l=Wa[c[29352>>2]&127](m)|0;Ba=101}while(0);do if((Ba|0)==101){c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{qa=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-qa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);qa=Se(c[o>>2]|0,p,r)|0;c[q>>2]=(c[p>>2]|0)-(r&65535);if((qa|0)!=7)break;l=y+81|0;do if(!(a[l>>0]|0)){if(a[y+82>>0]|0)break;a[l>>0]=1;if((c[y+180>>2]|0)>0)c[y+264>>2]=1;l=y+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[y+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);break e}while(0)}while(0);qa=v+80|0;c[qa>>2]=c[qa>>2]|u;qa=v+20|0;a[qa>>0]=d[qa>>0]|s;qa=(i|0)==0;f:do if(qa?(P=c[f>>2]|0,(Da|0)!=0):0){if(c[f+264>>2]|0){Ba=424;break}if(c[Da+64>>2]|0){Ba=424;break}w=P+16|0;u=c[w>>2]|0;l=c[u+28>>2]|0;if(!(a[f+146>>0]|0)){s=c[ra>>2]|0;do if((s|0)!=(l|0)){l=c[l+48>>2]|0;if(!l)break;r=Ca+68|0;m=0;do{q=c[l+8>>2]|0;do if((c[q+24>>2]|0)==(s|0)){o=c[q+4>>2]|0;p=c[Ca>>2]|0;ka=a[o>>0]|0;n=(d[208+(ka&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0;if(!(ka<<24>>24==0|(n|0)!=0))do{o=o+1|0;p=p+1|0;ka=a[o>>0]|0;n=(d[208+(ka&255)>>0]|0)-(d[208+(d[p>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(n|0)!=0));if(n|0)break;if(!m)m=c[r>>2]|0;c[q+32>>2]=m;m=q}while(0);l=c[l>>2]|0}while((l|0)!=0);if(m|0){Ba=424;break f}}while(0);if(c[Ca+68>>2]|0){Ba=424;break}}if(c[Ca+56>>2]|0){Ba=424;break}do if((j|0)==11){if((b[Ca+40>>1]|0)>-1?(z=a[Ca+48>>0]|0,z<<24>>24!=11):0){I=z&255;break}I=2}else I=j;while(0);n=c[Da+32>>2]|0;if((c[n>>2]|0)!=1){Ba=424;break}if(c[n+28>>2]|0){Ba=424;break}if(c[Da+36>>2]|0){Ba=424;break}if(c[Da+48>>2]|0){Ba=424;break}if(c[Da+40>>2]|0){Ba=424;break}if(c[Da+60>>2]|0){Ba=424;break}if(c[Da+52>>2]|0){Ba=424;break}if(c[Da+8>>2]&1|0){Ba=424;break}l=c[Da>>2]|0;if((c[l>>2]|0)!=1){Ba=424;break}if((a[c[l+4>>2]>>0]|0)!=-84){Ba=424;break}m=c[n+8>>2]|0;if(!m)l=n+12|0;else{l=0;while(1)if((c[u+(l<<4)+12>>2]|0)==(m|0))break;else l=l+1|0;l=u+(l<<4)|0}K=bd(f,0,c[n+16>>2]|0,c[l>>2]|0)|0;if(!K){Ba=424;break}x=K+28|0;y=Ca+28|0;if((c[x>>2]|0)==(c[y>>2]|0)?(c[K+72>>2]|0)==(c[ra>>2]|0):0){Ba=424;break}O=K+36|0;if((c[O>>2]^c[S>>2])&32|0){Ba=424;break}if(c[K+56>>2]|0){Ba=424;break}if(c[K+12>>2]|0){Ba=424;break}l=b[Ca+42>>1]|0;if(l<<16>>16!=(b[K+42>>1]|0)){Ba=424;break}B=Ca+40|0;if((b[B>>1]|0)!=(b[K+40>>1]|0)){Ba=424;break}r=l<<16>>16;if(l<<16>>16>0){p=c[Ca+4>>2]|0;q=c[K+4>>2]|0;o=0;do{if((a[p+(o<<4)+13>>0]|0)!=(a[q+(o<<4)+13>>0]|0)){Ba=424;break f}m=c[p+(o<<4)+8>>2]|0;n=c[q+(o<<4)+8>>2]|0;do if(!m)l=((n|0)!=0)<<31>>31;else{if(!n){Ba=424;break f}ka=a[m>>0]|0;l=(d[208+(ka&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0;if(ka<<24>>24==0|(l|0)!=0)break;do{m=m+1|0;n=n+1|0;ka=a[m>>0]|0;l=(d[208+(ka&255)>>0]|0)-(d[208+(d[n>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(l|0)!=0))}while(0);if(l|0){Ba=424;break f}if(a[p+(o<<4)+12>>0]|0?(a[q+(o<<4)+12>>0]|0)==0:0){Ba=424;break f}do if(o|0){l=c[p+(o<<4)+4>>2]|0;m=(l|0)==0;n=c[q+(o<<4)+4>>2]|0;if(m^(n|0)==0){Ba=424;break f}if(m)break;if(Bu(c[l+8>>2]|0,c[n+8>>2]|0)|0){Ba=424;break f}}while(0);o=o+1|0}while((o|0)<(r|0))}H=Ca+8|0;l=c[H>>2]|0;if(!l)v=0;else{o=K+8|0;p=K+72|0;m=0;while(1){m=(a[l+54>>0]|0)==0?m:1;n=c[o>>2]|0;if(!n){Ba=424;break f}while(1){if(Xm(l,n)|0)break;n=c[n+20>>2]|0;if(!n){Ba=424;break f}}do if((c[n+44>>2]|0)==(c[l+44>>2]|0)){if((c[p>>2]|0)!=(c[ra>>2]|0))break;n=c[7389]|0;if(!n){Ba=424;break f}if(!(Wa[n&127](411)|0)){Ba=424;break f}}while(0);l=c[l+20>>2]|0;if(!l){v=m;break}}}m=c[Ca+24>>2]|0;do if(m|0){n=c[K+24>>2]|0;if(!n){Ba=424;break f}l=c[n>>2]|0;if((l|0)!=(c[m>>2]|0)){Ba=424;break f}if((l|0)<=0)break;l=0;do{if((a[n+4+(l*20|0)+12>>0]|0)!=(a[m+4+(l*20|0)+12>>0]|0)){Ba=424;break f}if(bk(0,c[n+4+(l*20|0)>>2]|0,c[m+4+(l*20|0)>>2]|0,-1)|0){Ba=424;break f}l=l+1|0}while((l|0)<(c[n>>2]|0))}while(0);l=c[P+32>>2]|0;if((l&16384|0)==0&0==0){if(!((l&128|0)==0&0==0)){Ba=424;break}}else if(!((l&128|0)==0&0==0&(c[Ca+16>>2]|0)==0)){Ba=424;break}n=c[K+72>>2]|0;if(!n)N=-1e6;else{m=c[w>>2]|0;l=0;while(1)if((c[m+(l<<4)+12>>2]|0)==(n|0)){N=l;break}else l=l+1|0}l=c[ya>>2]|0;g:do if(!l){n=c[f>>2]|0;do if(!(c[ua>>2]|0)){if(b[n+76>>1]&8)break;a[f+23>>0]=1}while(0);h:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))Ba=217;else{M=0;break g}else{do if((e[n+276>>1]|0)>=224){l=n+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];ka=n+284|0;c[ka>>2]=(c[ka>>2]|0)+1;break h}l=n+296|0;m=c[l>>2]|0;if(!m){l=n+292|0;break}else{c[l>>2]=c[m>>2];ka=n+284|0;c[ka>>2]=(c[ka>>2]|0)+1;break h}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;Ba=217}while(0);if((Ba|0)==217)m=_d(n,224,0)|0;if(!m){M=0;break}p=m+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[m>>2]=n;l=n+4|0;n=c[l>>2]|0;if(n|0)c[n+4>>2]=m;c[m+8>>2]=n;c[m+4>>2]=0;c[l>>2]=m;c[m+20>>2]=381479589;c[m+12>>2]=f;c[ya>>2]=m;Di(m,61,0,1,0)|0;M=m}else M=l;while(0);o=c[ua>>2]|0;o=(o|0)==0?f:o;l=o+84|0;m=c[l>>2]|0;n=1<>2]=m|n;if((N|0)!=1)break;s=c[o>>2]|0;l=s+16|0;if(c[(c[l>>2]|0)+20>>2]|0)break;if(a[o+199>>0]|0)break;m=Pe(c[s>>2]|0,0,s,ta,0,542)|0;if(m|0){cd(o,32157,A);c[o+12>>2]=m;break}ka=c[ta>>2]|0;c[(c[l>>2]|0)+20>>2]=ka;l=c[s+92>>2]|0;o=c[ka+4>>2]|0;c[o+4>>2]=c[ka>>2];do if(!(b[o+22>>1]&2)){p=o+32|0;q=o+36|0;r=(c[p>>2]|0)-(c[q>>2]|0)|0;do if((l+-512|0)>>>0<65025){if(l+-1&l|0)break;c[p>>2]=l;n=o+80|0;l=c[n>>2]|0;if(!l)break;m=l+-4|0;c[n>>2]=m;l=m;do if((c[14816]|0)>>>0<=l>>>0)if((c[14817]|0)>>>0>l>>>0){c[14979]=(c[14979]|0)+-1;c[m>>2]=c[14819];c[14819]=m;ka=(c[14820]|0)+1|0;c[14820]=ka;c[14821]=(ka|0)<(c[14815]|0)&1;break}else{l=Wa[c[29352>>2]&127](m)|0;Ba=237;break}else{l=Wa[c[29352>>2]&127](m)|0;Ba=237}while(0);do if((Ba|0)==237){c[14980]=(c[14980]|0)-l;if(!(c[7324]|0)){ab[c[29344>>2]&127](m);break}else{ka=Wa[c[29352>>2]&127](m)|0;c[14978]=(c[14978]|0)-ka;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](m);break}}while(0);c[n>>2]=0}while(0);ka=Se(c[o>>2]|0,p,r)|0;c[q>>2]=(c[p>>2]|0)-(r&65535);if((ka|0)!=7)break;l=s+81|0;do if(!(a[l>>0]|0)){if(a[s+82>>0]|0)break;a[l>>0]=1;if((c[s+180>>2]|0)>0)c[s+264>>2]=1;l=s+272|0;c[l>>2]=(c[l>>2]|0)+1;l=c[s+236>>2]|0;if(!l)break;c[l+12>>2]=7}while(0);break i}while(0)}while(0);u=f+40|0;E=c[u>>2]|0;J=E+1|0;c[u>>2]=E+2;u=Wm(f,W,Ca)|0;F=f+19|0;l=a[F>>0]|0;do if(l<<24>>24){ka=l+-1<<24>>24;a[F>>0]=ka;m=c[f+148+((ka&255)<<2)>>2]|0;if(!(ka<<24>>24)){n=f+44|0;l=n;n=c[n>>2]|0;Ba=254;break}else{C=l+-2<<24>>24;a[F>>0]=C;D=m;C=c[f+148+((C&255)<<2)>>2]|0;break}}else{l=f+44|0;n=(c[l>>2]|0)+1|0;c[l>>2]=n;m=n;Ba=254}while(0);if((Ba|0)==254){C=n+1|0;c[l>>2]=C;D=m}Gj(f,J,W,Ca,109);A=P+24|0;do if(!(c[A>>2]&4)){if((b[B>>1]|0)<0){if(!((I+-1|0)>>>0>1|((v|0)!=0|(c[H>>2]|0)!=0))){z=0;break}}else if(!((I+-1|0)>>>0>1|(v|0)!=0)){z=0;break}o=M+108|0;l=c[o>>2]|0;m=M+112|0;if((c[m>>2]|0)>(l|0)){c[o>>2]=l+1;ka=c[M+104>>2]|0;a[ka+(l*20|0)>>0]=36;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=J;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else l=Di(M,36,J,0,0)|0;n=c[o>>2]|0;if((c[m>>2]|0)>(n|0)){c[o>>2]=n+1;p=c[M+104>>2]|0;a[p+(n*20|0)>>0]=11;p=p+(n*20|0)+1|0;q=p+19|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(q|0))}else n=Di(M,11,0,0,0)|0;m=c[o>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))l=(c[M+104>>2]|0)+(((l|0)<0?m+-1|0:l)*20|0)|0;else l=59308;c[l+8>>2]=m;z=n}else z=0;while(0);do if(!(c[O>>2]&32)){Gj(f,E,N,K,108);r=M+108|0;l=c[r>>2]|0;s=M+112|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;q=c[M+104>>2]|0;a[q+(l*20|0)>>0]=36;b[q+(l*20|0)+2>>1]=0;c[q+(l*20|0)+4>>2]=E;c[q+(l*20|0)+8>>2]=0;c[q+(l*20|0)+12>>2]=0;c[q+(l*20|0)+16>>2]=0;a[q+(l*20|0)+1>>0]=0;q=l}else q=Di(M,36,E,0,0)|0;j:do if((b[B>>1]|0)>-1){l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;ka=c[M+104>>2]|0;a[ka+(l*20|0)>>0]=-128;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=E;c[ka+(l*20|0)+8>>2]=C;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else l=Di(M,128,E,C,0)|0;m=c[r>>2]|0;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;p=c[M+104>>2]|0;a[p+(m*20|0)>>0]=31;b[p+(m*20|0)+2>>1]=0;c[p+(m*20|0)+4>>2]=J;c[p+(m*20|0)+8>>2]=0;c[p+(m*20|0)+12>>2]=C;c[p+(m*20|0)+16>>2]=0;a[p+(m*20|0)+1>>0]=0;p=m}else p=Di(M,31,J,0,C)|0;m=b[B>>1]|0;o=c[f>>2]|0;n=c[Ca>>2]|0;if(m<<16>>16>-1){m=c[(c[Ca+4>>2]|0)+(m<<16>>16<<4)>>2]|0;c[Q>>2]=n;c[Q+4>>2]=m;n=1555;m=dd(o,40358,Q)|0}else{c[R>>2]=n;n=2579;m=dd(o,44808,R)|0}Uj(f,n,I,m,-7,2);n=c[r>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))m=(c[M+104>>2]|0)+(((p|0)<0?n+-1|0:p)*20|0)|0;else m=59308;c[m+8>>2]=n;if((u|0)<=0)break;m=c[ya>>2]|0;n=m+108|0;o=c[n>>2]|0;if((c[m+112>>2]|0)>(o|0)){c[n>>2]=o+1;ka=c[m+104>>2]|0;a[ka+(o*20|0)>>0]=-105;b[ka+(o*20|0)+2>>1]=0;c[ka+(o*20|0)+4>>2]=u;c[ka+(o*20|0)+8>>2]=C;c[ka+(o*20|0)+12>>2]=0;c[ka+(o*20|0)+16>>2]=0;a[ka+(o*20|0)+1>>0]=0;break}else{Di(m,151,u,C,0)|0;break}}else{do if(!(c[H>>2]|0)){if(c[A>>2]&8|0)break;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;ka=c[M+104>>2]|0;a[ka+(l*20|0)>>0]=121;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=J;c[ka+(l*20|0)+8>>2]=C;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0;break j}else{l=Di(M,121,J,C,0)|0;break j}}while(0);l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;ka=c[M+104>>2]|0;a[ka+(l*20|0)>>0]=-128;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=E;c[ka+(l*20|0)+8>>2]=C;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0;break}else{l=Di(M,128,E,C,0)|0;break}}while(0);m=c[r>>2]|0;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;ka=c[M+104>>2]|0;a[ka+(m*20|0)>>0]=127;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=E;c[ka+(m*20|0)+8>>2]=D;c[ka+(m*20|0)+12>>2]=1;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,127,E,D,1)|0;do if(c[A>>2]&4){m=c[r>>2]|0;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;p=c[M+104>>2]|0;a[p+(m*20|0)>>0]=-126;b[p+(m*20|0)+2>>1]=0;c[p+(m*20|0)+4>>2]=J;c[p+(m*20|0)+8>>2]=0;c[p+(m*20|0)+12>>2]=0;c[p+(m*20|0)+16>>2]=0;a[p+(m*20|0)+1>>0]=0;p=57;break}else{Di(M,130,J,0,0)|0;p=57;break}}else p=41;while(0);m=c[r>>2]|0;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;ka=c[M+104>>2]|0;a[ka+(m*20|0)>>0]=122;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=J;c[ka+(m*20|0)+8>>2]=D;c[ka+(m*20|0)+12>>2]=C;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else m=Di(M,122,J,D,C)|0;do if(!(a[(c[M>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[r>>2]|0)+-1|0;n=c[M+104>>2]|0;o=n+(m*20|0)+1|0;if(!(a[o>>0]|0)){c[n+(m*20|0)+16>>2]=Ca;a[o>>0]=-6;break}else{Ei(M,n+(m*20|0)|0,Ca,-6);break}}while(0);m=c[r>>2]|0;if((m|0)>0)b[(c[M+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=p;if((c[s>>2]|0)>(m|0)){c[r>>2]=m+1;ka=c[M+104>>2]|0;a[ka+(m*20|0)>>0]=5;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=E;c[ka+(m*20|0)+8>>2]=l;c[ka+(m*20|0)+12>>2]=0;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,5,E,l,0)|0;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;ka=c[M+104>>2]|0;a[ka+(l*20|0)>>0]=117;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=E;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else Di(M,117,E,0,0)|0;l=c[r>>2]|0;if((c[s>>2]|0)>(l|0)){c[r>>2]=l+1;y=c[M+104>>2]|0;a[y+(l*20|0)>>0]=117;b[y+(l*20|0)+2>>1]=0;c[y+(l*20|0)+4>>2]=J;c[y+(l*20|0)+8>>2]=0;c[y+(l*20|0)+12>>2]=0;c[y+(l*20|0)+16>>2]=0;a[y+(l*20|0)+1>>0]=0;y=q;break}else{Di(M,117,J,0,0)|0;y=q;break}}else{Hj(f,W,c[y>>2]|0,1,c[Ca>>2]|0);Hj(f,N,c[x>>2]|0,0,c[K>>2]|0);y=0}while(0);l=c[H>>2]|0;if(l|0){u=K+8|0;v=M+108|0;w=M+112|0;x=M+104|0;s=l;do{l=u;while(1){o=c[l>>2]|0;if(!(Xm(s,o)|0))l=o+20|0;else break}l=c[o+44>>2]|0;m=c[v>>2]|0;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;ka=c[x>>2]|0;a[ka+(m*20|0)>>0]=108;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=E;c[ka+(m*20|0)+8>>2]=l;c[ka+(m*20|0)+12>>2]=N;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,108,E,l,N)|0;l=c[ya>>2]|0;n=Ij(f,o)|0;k:do if(n|0){m=c[l>>2]|0;if(!(a[m+81>>0]|0)){fa=c[l+104>>2]|0;ka=(c[l+108>>2]|0)+-1|0;a[fa+(ka*20|0)+1>>0]=-9;c[fa+(ka*20|0)+16>>2]=n;break}if(c[m+480>>2]|0)break;ka=(c[n>>2]|0)+-1|0;c[n>>2]=ka;if(ka|0)break;l=c[n+12>>2]|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,n);break k}m=n;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;ka=l+300|0;c[n>>2]=c[ka>>2];c[ka>>2]=n;break k}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{ka=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-ka;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);l=c[s+44>>2]|0;m=c[v>>2]|0;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;ka=c[x>>2]|0;a[ka+(m*20|0)>>0]=109;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=J;c[ka+(m*20|0)+8>>2]=l;c[ka+(m*20|0)+12>>2]=W;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,109,J,l,W)|0;l=c[ya>>2]|0;n=Ij(f,s)|0;l:do if(n|0){m=c[l>>2]|0;if(!(a[m+81>>0]|0)){fa=c[l+104>>2]|0;ka=(c[l+108>>2]|0)+-1|0;a[fa+(ka*20|0)+1>>0]=-9;c[fa+(ka*20|0)+16>>2]=n;break}if(c[m+480>>2]|0)break;ka=(c[n>>2]|0)+-1|0;c[n>>2]=ka;if(ka|0)break;l=c[n+12>>2]|0;do if(l|0){if(c[l+480>>2]|0){Xd(l,n);break l}m=n;if((c[l+304>>2]|0)>>>0>m>>>0)break;if((c[l+308>>2]|0)>>>0<=m>>>0)break;ka=l+300|0;c[n>>2]=c[ka>>2];c[ka>>2]=n;break l}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](n);break}else{ka=Wa[c[29352>>2]&127](n)|0;c[14978]=(c[14978]|0)-ka;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](n);break}}while(0);l=c[v>>2]|0;if((l|0)>0)b[(c[x>>2]|0)+((l+-1|0)*20|0)+2>>1]=1;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;r=c[x>>2]|0;a[r+(l*20|0)>>0]=36;b[r+(l*20|0)+2>>1]=0;c[r+(l*20|0)+4>>2]=E;c[r+(l*20|0)+8>>2]=0;c[r+(l*20|0)+12>>2]=0;c[r+(l*20|0)+16>>2]=0;a[r+(l*20|0)+1>>0]=0;r=l}else r=Di(M,36,E,0,0)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;ka=c[x>>2]|0;a[ka+(l*20|0)>>0]=127;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=E;c[ka+(l*20|0)+8>>2]=D;c[ka+(l*20|0)+12>>2]=1;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else Di(M,127,E,D,1)|0;do if(c[A>>2]&4){ka=b[o+52>>1]|0;q=ka&65535;m:do if(!(ka<<16>>16))l=0;else{p=c[o+32>>2]|0;l=0;do{m=c[p+(l<<2)>>2]|0;if(!m)break m;if((a[m>>0]|32)<<24>>24!=98)break m;n=34049;do{n=n+1|0;m=m+1|0;ka=a[n>>0]|0;o=(d[208+(ka&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(ka<<24>>24==0|(o|0)!=0));if(o|0)break m;l=l+1|0}while(l>>>0>>0)}while(0);if((l|0)!=(q|0)){l=0;break}l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;ka=c[x>>2]|0;a[ka+(l*20|0)>>0]=-126;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=J;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0;l=16;break}else{Di(M,130,J,0,0)|0;l=16;break}}else l=0;while(0);if(c[O>>2]&32){ka=s+55|0;l=l|((d[ka>>0]|d[ka+1>>0]<<8)&3)==2}m=c[v>>2]|0;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;ka=c[x>>2]|0;a[ka+(m*20|0)>>0]=-124;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=J;c[ka+(m*20|0)+8>>2]=D;c[ka+(m*20|0)+12>>2]=0;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,132,J,D,0)|0;m=c[v>>2]|0;if((m|0)>0)b[(c[x>>2]|0)+((m+-1|0)*20|0)+2>>1]=(l|8)&255;l=r+1|0;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;ka=c[x>>2]|0;a[ka+(m*20|0)>>0]=5;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=E;c[ka+(m*20|0)+8>>2]=l;c[ka+(m*20|0)+12>>2]=0;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,5,E,l,0)|0;m=c[v>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))l=(c[x>>2]|0)+(((r|0)<0?m+-1|0:r)*20|0)|0;else l=59308;c[l+8>>2]=m;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;ka=c[x>>2]|0;a[ka+(m*20|0)>>0]=117;b[ka+(m*20|0)+2>>1]=0;c[ka+(m*20|0)+4>>2]=E;c[ka+(m*20|0)+8>>2]=0;c[ka+(m*20|0)+12>>2]=0;c[ka+(m*20|0)+16>>2]=0;a[ka+(m*20|0)+1>>0]=0}else Di(M,117,E,0,0)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;ka=c[x>>2]|0;a[ka+(l*20|0)>>0]=117;b[ka+(l*20|0)+2>>1]=0;c[ka+(l*20|0)+4>>2]=J;c[ka+(l*20|0)+8>>2]=0;c[ka+(l*20|0)+12>>2]=0;c[ka+(l*20|0)+16>>2]=0;a[ka+(l*20|0)+1>>0]=0}else Di(M,117,J,0,0)|0;s=c[s+20>>2]|0}while((s|0)!=0)}if(y|0){m=c[M+108>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))l=(c[M+104>>2]|0)+(((y|0)<0?m+-1|0:y)*20|0)|0;else l=59308;c[l+8>>2]=m}do if(C|0){l=a[F>>0]|0;if((l&255)>=8)break;a[F>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=C}while(0);do if(D|0){l=a[F>>0]|0;if((l&255)>=8)break;a[F>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=D}while(0);if(!z){n=0;l=0;break}if(c[f+112>>2]|0)Sm(f);n=M+108|0;l=c[n>>2]|0;o=M+112|0;if((c[o>>2]|0)>(l|0)){c[n>>2]=l+1;p=c[M+104>>2]|0;a[p+(l*20|0)>>0]=69;p=p+(l*20|0)+1|0;q=p+19|0;do{a[p>>0]=0;p=p+1|0}while((p|0)<(q|0))}else Di(M,69,0,0,0)|0;m=c[n>>2]|0;if(!(a[(c[M>>2]|0)+81>>0]|0))l=(c[M+104>>2]|0)+(((z|0)<0?m+-1|0:z)*20|0)|0;else l=59308;c[l+8>>2]=m;if((c[o>>2]|0)>(m|0)){c[n>>2]=m+1;Ba=c[M+104>>2]|0;a[Ba+(m*20|0)>>0]=117;b[Ba+(m*20|0)+2>>1]=0;c[Ba+(m*20|0)+4>>2]=J;c[Ba+(m*20|0)+8>>2]=0;c[Ba+(m*20|0)+12>>2]=0;c[Ba+(m*20|0)+16>>2]=0;a[Ba+(m*20|0)+1>>0]=0;Ba=424;break}else{Di(M,117,J,0,0)|0;Ba=424;break}}else Ba=424;while(0);do if((Ba|0)==424){F=Wm(f,W,Ca)|0;ka=f+44|0;fa=c[ka>>2]|0;da=fa+1|0;ea=Ca+42|0;n=b[ea>>1]|0;D=n<<16>>16;E=da+D|0;c[ka>>2]=E;Z=Ca+56|0;_=(c[Z>>2]|0)==0;E=E+((_^1)&1)|0;c[ka>>2]=E;fa=_?da:fa+2|0;_=fa+1|0;m=((c[S>>2]|0)>>>7&1^1)&255;Y=(i|0)!=0;n:do if(Y){B=c[i+4>>2]|0;if((B|0)<=0){z=-1;break}C=c[i>>2]|0;l=0;do{c[C+(l<<3)+4>>2]=-1;l=l+1|0}while((l|0)!=(B|0));x=n<<16>>16>0;y=Ca+4|0;z=Ca+40|0;A=(pa|0)!=0;n=-1;w=0;while(1){v=c[C+(w<<3)>>2]|0;o:do if(x){r=c[y>>2]|0;s=a[v>>0]|0;u=a[208+(s&255)>>0]|0;p:do if(!(s<<24>>24)){l=0;do{if(u<<24>>24==(a[208+(d[c[r+(l<<4)>>2]>>0]|0)>>0]|0))break p;l=l+1|0}while((l|0)<(D|0));o=u&255;l=o+-95|0;p=1;Ba=446;break o}else{l=0;while(1){o=c[r+(l<<4)>>2]|0;if(u<<24>>24==(a[208+(d[o>>0]|0)>>0]|0)){p=v;do{p=p+1|0;o=o+1|0;S=a[p>>0]|0;q=(d[208+(S&255)>>0]|0)-(d[208+(d[o>>0]|0)>>0]|0)|0}while(!(S<<24>>24==0|(q|0)!=0));if(!q)break p}l=l+1|0;if((l|0)>=(D|0)){l=u;m=s;Ba=443;break o}}}while(0);c[C+(w<<3)+4>>2]=l;n=(l|0)==(b[z>>1]|0)?w:n;m=(w|0)==(l|0)?m:0}else{m=a[v>>0]|0;l=a[208+(m&255)>>0]|0;Ba=443}while(0);do if((Ba|0)==443){o=l&255;l=o+-95|0;p=m<<24>>24==0;if(p|(l|0)!=0){Ba=446;break}m=58070;n=v;do{n=n+1|0;m=m+1|0;Ba=a[n>>0]|0;l=(d[208+(Ba&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(Ba<<24>>24==0|(l|0)!=0));Ba=446}while(0);if((Ba|0)==446){Ba=0;do if(!l)l=1;else{l=o+-114|0;if(!(p|(l|0)!=0)){m=40352;n=v;do{n=n+1|0;m=m+1|0;S=a[n>>0]|0;l=(d[208+(S&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(S<<24>>24==0|(l|0)!=0))}if(!l){l=1;break}l=o+-111|0;if(!(p|(l|0)!=0)){m=58078;n=v;do{n=n+1|0;m=m+1|0;S=a[n>>0]|0;l=(d[208+(S&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(S<<24>>24==0|(l|0)!=0))}l=(l|0)==0&1}while(0);if(A|(l|0)==0)break;else{n=w;m=0}}w=w+1|0;if((w|0)>=(B|0)){z=n;break n}}c[T>>2]=g;c[T+4>>2]=0;c[T+8>>2]=v;cd(f,44817,T);a[f+17>>0]=1;l=0;Ba=1038;break a}else z=-1;while(0);q:do if(va){n=E+1|0;c[ka>>2]=n;v=Aa+108|0;o=c[v>>2]|0;l=o+1|0;w=Aa+112|0;if((c[w>>2]|0)>(o|0)){c[v>>2]=l;X=c[Aa+104>>2]|0;a[X+(o*20|0)>>0]=13;b[X+(o*20|0)+2>>1]=0;c[X+(o*20|0)+4>>2]=n;c[X+(o*20|0)+8>>2]=0;c[X+(o*20|0)+12>>2]=l;c[X+(o*20|0)+16>>2]=0;a[X+(o*20|0)+1>>0]=0}else Di(Aa,13,n,0,l)|0;a[U>>0]=13;c[na>>2]=n;c[U+16>>2]=0;x=U+8|0;c[x>>2]=m<<24>>24==0?0:_;c[U+12>>2]=b[ea>>1];X=kj(f,Da,U)|0;x=c[x>>2]|0;if(X|0){l=0;Ba=1038;break a}if(a[ba>>0]|0){l=0;Ba=1038;break a}if(c[V>>2]|0){l=0;Ba=1038;break a}l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=67;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=n;c[X+(l*20|0)+8>>2]=0;c[X+(l*20|0)+12>>2]=0;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,67,n,0,0)|0;m=c[Aa+12>>2]|0;a[m+19>>0]=0;c[m+28>>2]=0;m=c[v>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))l=(c[Aa+104>>2]|0)+(((o|0)<0?m+-1|0:o)*20|0)|0;else l=59308;c[l+8>>2]=m;u=c[c[Da>>2]>>2]|0;r:do if(!sa){l=c[ya>>2]|0;s:do if(!l){n=c[f>>2]|0;do if(!(c[ua>>2]|0)){if(b[n+76>>1]&8)break;a[f+23>>0]=1}while(0);t:do if(c[n+272>>2]|0)if(!(a[n+81>>0]|0))Ba=485;else{l=0;break s}else{do if((e[n+276>>1]|0)>=224){m=n+300|0;l=c[m>>2]|0;if(l|0){c[m>>2]=c[l>>2];X=n+284|0;c[X>>2]=(c[X>>2]|0)+1;break t}m=n+296|0;l=c[m>>2]|0;if(!l){l=n+292|0;break}else{c[m>>2]=c[l>>2];X=n+284|0;c[X>>2]=(c[X>>2]|0)+1;break t}}else l=n+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;Ba=485}while(0);if((Ba|0)==485)l=_d(n,224,0)|0;if(!l){l=0;break}p=l+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[l>>2]=n;m=n+4|0;n=c[m>>2]|0;if(n|0)c[n+4>>2]=l;c[l+8>>2]=n;c[l+4>>2]=0;c[m>>2]=l;c[l+20>>2]=381479589;c[l+12>>2]=f;c[ya>>2]=l;Di(l,61,0,1,0)|0}while(0);s=c[l+108>>2]|0;u:do if(!(c[Z>>2]|0))m=0;else{n=c[f>>2]|0;m=c[Ca+64>>2]|0;if(!m){m=0;break}while(1){if((c[m>>2]|0)==(n|0))break u;m=c[m+24>>2]|0;if(!m){m=0;break}}}while(0);if((s|0)<=1){T=x;U=0;E=0;J=u;break q}q=Ca+28|0;r=Ca+8|0;if(!(a[(c[l>>2]|0)+81>>0]|0)){o=c[l+104>>2]|0;n=1;while(1){v:do switch(a[o+(n*20|0)>>0]|0){case 108:{if((c[o+(n*20|0)+12>>2]|0)!=(W|0))break v;p=c[o+(n*20|0)+8>>2]|0;if((p|0)==(c[q>>2]|0))break r;l=c[r>>2]|0;if(!l)break v;do{if((p|0)==(c[l+44>>2]|0))break r;l=c[l+20>>2]|0}while((l|0)!=0);break}case -93:{if((c[o+(n*20|0)+16>>2]|0)==(m|0))break r;break}default:{}}while(0);n=n+1|0;if((n|0)>=(s|0)){T=x;U=0;E=0;J=u;break q}}}n=(c[14830]|0)==(W|0);l=(c[14831]|0)==(m|0);p=c[14829]|0;switch(a[59308]|0){case 108:break;case -93:if(l)break r;else{T=x;U=0;E=0;J=u;break q}default:{T=x;U=0;E=0;J=u;break q}}if(l){if(!n){T=x;U=0;E=0;J=u;break q}n=(p|0)==(c[q>>2]|0);m=1;while(1){if(n)break r;l=c[r>>2]|0;if(l|0)do{if((p|0)==(c[l+44>>2]|0))break r;l=c[l+20>>2]|0}while((l|0)!=0);m=m+1|0;if((m|0)>=(s|0)){T=x;U=0;E=0;J=u;break q}}}else{if(!n){T=x;U=0;E=0;J=u;break q}if((p|0)==(c[q>>2]|0))break;l=c[r>>2]|0;o=(l|0)==0;n=1;while(1){if(!o){m=l;do{if((p|0)==(c[m+44>>2]|0))break r;m=c[m+20>>2]|0}while((m|0)!=0)}n=n+1|0;if((n|0)>=(s|0)){T=x;U=0;E=0;J=u;break q}}}}while(0);q=f+40|0;r=c[q>>2]|0;c[q>>2]=r+1;q=f+19|0;m=a[q>>0]|0;do if(m<<24>>24){X=m+-1<<24>>24;a[q>>0]=X;l=c[f+148+((X&255)<<2)>>2]|0;if(!(X<<24>>24)){m=c[ka>>2]|0;Ba=530;break}else{p=m+-2<<24>>24;a[q>>0]=p;o=l;p=c[f+148+((p&255)<<2)>>2]|0;break}}else{m=(c[ka>>2]|0)+1|0;c[ka>>2]=m;l=m;Ba=530}while(0);if((Ba|0)==530){p=m+1|0;c[ka>>2]=p;o=l}l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=113;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=r;c[X+(l*20|0)+8>>2]=u;c[X+(l*20|0)+12>>2]=0;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,113,r,u,0)|0;l=c[na>>2]|0;m=c[v>>2]|0;if((c[w>>2]|0)>(m|0)){c[v>>2]=m+1;n=c[Aa+104>>2]|0;a[n+(m*20|0)>>0]=14;b[n+(m*20|0)+2>>1]=0;c[n+(m*20|0)+4>>2]=l;c[n+(m*20|0)+8>>2]=0;c[n+(m*20|0)+12>>2]=0;c[n+(m*20|0)+16>>2]=0;a[n+(m*20|0)+1>>0]=0;n=m}else n=Di(Aa,14,l,0,0)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=92;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=x;c[X+(l*20|0)+8>>2]=u;c[X+(l*20|0)+12>>2]=o;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,92,x,u,o)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=121;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=r;c[X+(l*20|0)+8>>2]=p;c[X+(l*20|0)+12>>2]=0;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,121,r,p,0)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=122;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=r;c[X+(l*20|0)+8>>2]=o;c[X+(l*20|0)+12>>2]=p;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,122,r,o,p)|0;l=c[v>>2]|0;if((c[w>>2]|0)>(l|0)){c[v>>2]=l+1;X=c[Aa+104>>2]|0;a[X+(l*20|0)>>0]=11;b[X+(l*20|0)+2>>1]=0;c[X+(l*20|0)+4>>2]=0;c[X+(l*20|0)+8>>2]=n;c[X+(l*20|0)+12>>2]=0;c[X+(l*20|0)+16>>2]=0;a[X+(l*20|0)+1>>0]=0}else Di(Aa,11,0,n,0)|0;m=c[v>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))l=(c[Aa+104>>2]|0)+(((n|0)<0?m+-1|0:n)*20|0)|0;else l=59308;c[l+8>>2]=m;do if(o|0){l=a[q>>0]|0;if((l&255)>=8)break;a[q>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=o}while(0);if(!p){T=x;U=r;E=1;J=u;break}l=a[q>>0]|0;if((l&255)>=8){T=x;U=r;E=1;J=u;break}a[q>>0]=l+1<<24>>24;c[f+148+((l&255)<<2)>>2]=p;T=x;U=r;E=1;J=u}else{W=ja+4|0;c[W>>2]=0;c[W+4>>2]=0;c[W+8>>2]=0;c[W+12>>2]=0;c[W+16>>2]=0;c[W+20>>2]=0;c[W+24>>2]=0;c[ja>>2]=f;w:do if(!Ea)l=0;else{l=c[Ea>>2]|0;if((l|0)<=0)break;s=ja+24|0;u=ta+4|0;v=ta+8|0;w=ta+12|0;x=ta+24|0;y=ja+20|0;r=0;m=0;while(1){q=c[Ea+4+(r*20|0)>>2]|0;if(q){o=m&65535;b[s>>1]=o&28655;m=c[ja>>2]|0;c[ta>>2]=m;c[u>>2]=125;c[v>>2]=126;c[w>>2]=0;c[x>>2]=ja;p=q+24|0;n=m;V=n+208|0;W=(c[V>>2]|0)+(c[p>>2]|0)|0;c[V>>2]=W;n=c[(c[n>>2]|0)+120>>2]|0;if((n|0)<(W|0)){Ba=565;break}_j(ta,q)|0;n=c[ta>>2]|0;m=n+208|0;c[m>>2]=(c[m>>2]|0)-(c[p>>2]|0);m=b[s>>1]|0;W=q+4|0;c[W>>2]=c[W>>2]|m&-32752&65535;m=(o&36880|m&65535)&65535;b[s>>1]=m;if((c[y>>2]|0)>0){Ba=567;break}if((c[n+36>>2]|0)>=1)break}r=r+1|0;if((r|0)>=(c[Ea>>2]|0))break w}if((Ba|0)==565){c[X>>2]=n;cd(m,41637,X);Ba=567}qi(Fa,g);l=0;break a}while(0);T=0;U=-1;E=0;J=l}while(0);if(qa&(J|0)>0)S=b[Ca+40>>1]|0;else S=z;X=b[ea>>1]|0;o=X<<16>>16;if(X<<16>>16>0){n=c[Ca+4>>2]|0;l=0;m=0;do{l=l+((d[n+(m<<4)+15>>0]|0)>>>1&1)|0;m=m+1|0}while((m|0)!=(o|0))}else l=0;do if(qa&(J|0)!=0){l=o-l|0;if((J|0)==(l|0))break;c[$>>2]=g;c[$+4>>2]=0;c[$+8>>2]=l;c[$+12>>2]=J;cd(f,44849,$);l=0;Ba=1038;break a}while(0);do if(Y){l=c[i+4>>2]|0;if((J|0)==(l|0))break;c[aa>>2]=J;c[aa+4>>2]=l;cd(f,44901,aa);l=0;Ba=1038;break a}while(0);O=Fa+32|0;do if(!((c[O>>2]&128|0)==0&0==0)){if(a[za>>0]|0){n=0;break}if(c[f+120>>2]|0){n=0;break}n=(c[ka>>2]|0)+1|0;c[ka>>2]=n;l=Aa+108|0;m=c[l>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[l>>2]=m+1;aa=c[Aa+104>>2]|0;a[aa+(m*20|0)>>0]=70;b[aa+(m*20|0)+2>>1]=0;c[aa+(m*20|0)+4>>2]=0;c[aa+(m*20|0)+8>>2]=n;c[aa+(m*20|0)+12>>2]=0;c[aa+(m*20|0)+16>>2]=0;a[aa+(m*20|0)+1>>0]=0;break}else{Di(Aa,70,0,n,0)|0;break}}else n=0;while(0);do if(oa){R=0;l=0}else{q=Hm(f,Ca,109,0,-1,0,xa,wa)|0;o=(q<<2)+4|0;x:do if(c[Fa+272>>2]|0)if(!(a[ba>>0]|0))Ba=599;else{l=0;Ba=1038;break a}else{do if(!(0<0|(0==0?(e[Fa+276>>1]|0)>>>0>>0:0))){l=Fa+300|0;m=c[l>>2]|0;if(m|0){c[l>>2]=c[m>>2];ba=Fa+284|0;c[ba>>2]=(c[ba>>2]|0)+1;break x}l=Fa+296|0;m=c[l>>2]|0;if(!m){l=Fa+292|0;break}else{c[l>>2]=c[m>>2];ba=Fa+284|0;c[ba>>2]=(c[ba>>2]|0)+1;break x}}else l=Fa+288|0;while(0);c[l>>2]=(c[l>>2]|0)+1;Ba=599}while(0);if((Ba|0)==599)m=_d(Fa,o,0)|0;if(!m){l=0;Ba=1038;break a}if((q|0)<=0){R=m;l=m;break}l=Ca+8|0;o=0;p=c[ka>>2]|0;while(1){l=c[l>>2]|0;ba=p+1|0;c[ka>>2]=ba;c[m+(o<<2)>>2]=ba;p=(c[ka>>2]|0)+(e[l+52>>1]|0)|0;c[ka>>2]=p;o=o+1|0;if((o|0)==(q|0)){R=m;l=m;break}else l=l+20|0}}while(0);do if(k|0){if(c[Z>>2]|0){c[ca>>2]=c[Ca>>2];cd(f,44926,ca);Ba=1038;break a}u=c[xa>>2]|0;C=g+48|0;c[C>>2]=u;c[k+20>>2]=g;c[k+24>>2]=_;c[k+28>>2]=u;c[k+32>>2]=c[wa>>2];u=c[k>>2]|0;if(!u)break;ca=ja+8|0;c[ca>>2]=0;c[ca+4>>2]=0;c[ca+8>>2]=0;c[ca+12>>2]=0;c[ca+16>>2]=0;c[ca+20>>2]=0;c[ja>>2]=f;c[ja+4>>2]=g;y:do if((c[u>>2]|0)>0){v=ja+24|0;w=ta+4|0;x=ta+8|0;y=ta+12|0;z=ta+24|0;A=ja+20|0;s=0;m=0;while(1){r=c[u+4+(s*20|0)>>2]|0;if(r){p=m&65535;b[v>>1]=p&28655;m=c[ja>>2]|0;c[ta>>2]=m;c[w>>2]=125;c[x>>2]=126;c[y>>2]=0;c[z>>2]=ja;q=r+24|0;o=m;ba=o+208|0;ca=(c[ba>>2]|0)+(c[q>>2]|0)|0;c[ba>>2]=ca;o=c[(c[o>>2]|0)+120>>2]|0;if((o|0)<(ca|0)){Ba=614;break}_j(ta,r)|0;o=c[ta>>2]|0;m=o+208|0;c[m>>2]=(c[m>>2]|0)-(c[q>>2]|0);m=b[v>>1]|0;ca=r+4|0;c[ca>>2]=c[ca>>2]|m&-32752&65535;m=(p&36880|m&65535)&65535;b[v>>1]=m;if((c[A>>2]|0)>0)break;if((c[o+36>>2]|0)>=1)break y}s=s+1|0;if((s|0)>=(c[u>>2]|0)){Ba=618;break y}}if((Ba|0)==614){c[ga>>2]=o;cd(m,41637,ga)}}else{m=0;Ba=618}while(0);z:do if((Ba|0)==618){D=k+4|0;r=c[D>>2]|0;A:do if(r){s=ja+24|0;p=m&65535;b[s>>1]=p&28655;m=c[ja>>2]|0;c[ta>>2]=m;c[ta+4>>2]=125;c[ta+8>>2]=126;c[ta+12>>2]=0;c[ta+24>>2]=ja;q=r+24|0;o=m+208|0;ga=(c[o>>2]|0)+(c[q>>2]|0)|0;c[o>>2]=ga;o=c[(c[m>>2]|0)+120>>2]|0;do if((o|0)>=(ga|0)){_j(ta,r)|0;m=c[ta>>2]|0;ia=m+208|0;c[ia>>2]=(c[ia>>2]|0)-(c[q>>2]|0);ia=b[s>>1]|0;ga=r+4|0;c[ga>>2]=c[ga>>2]|ia&-32752&65535;b[s>>1]=p&36880|ia&65535;if((c[ja+20>>2]|0)>0)break;if((c[m+36>>2]|0)<1)break A;else break z}else{c[ia>>2]=o;cd(m,41637,ia)}while(0);break z}while(0);o=c[ha>>2]|0;B=c[k>>2]|0;A=c[C>>2]|0;do if(!(c[o+36>>2]&32)){if((c[B>>2]|0)!=1)break;m=c[B+4>>2]|0;if((a[m>>0]|0)!=-94)break;if((b[m+32>>1]|0)==-1)break z}while(0);p=la;q=p+104|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));a[la>>0]=106;y=la+52|0;z=la+12|0;c[z>>2]=y;a[y>>0]=-94;c[la+80>>2]=A;m=c[o+8>>2]|0;B:do if(m|0){w=la+8|0;x=la+84|0;C:while(1){D:do if(a[m+54>>0]|0){p=c[B>>2]|0;q=m+50|0;o=b[q>>1]|0;if((p|0)!=(o&65535|0))break;r=c[m+36>>2]|0;if(r){o=c[D>>2]|0;if(!o)break;if(bk(f,o,r,A)|0)break;o=b[q>>1]|0;p=o&65535}if(!(o<<16>>16))break C;s=m+32|0;u=m+4|0;v=m+40|0;r=0;while(1){c[w>>2]=c[(c[s>>2]|0)+(r<<2)>>2];o=b[(c[u>>2]|0)+(r<<1)>>1]|0;do if(o<<16>>16==-2){o=c[(c[v>>2]|0)+4+(r*20|0)>>2]|0;if((a[o>>0]|0)==106)break;c[z>>2]=o;o=la}else{c[z>>2]=y;b[x>>1]=o;o=la}while(0);q=0;while(1){if((bk(f,c[B+4+(q*20|0)>>2]|0,o,A)|0)<2)break;q=q+1|0;if(q>>>0>=p>>>0)break D}r=r+1|0;if(r>>>0>=p>>>0)break C}}while(0);m=c[m+20>>2]|0;if(!m)break B}c[k+16>>2]=m;break z}while(0);cd(f,44986,ma)}while(0)}while(0);P=E<<24>>24!=0;do if(!P){if(!va){Q=0;N=0;break}m=c[na>>2]|0;o=Aa+108|0;p=c[o>>2]|0;if((c[Aa+112>>2]|0)>(p|0)){c[o>>2]=p+1;Q=c[Aa+104>>2]|0;a[Q+(p*20|0)>>0]=14;b[Q+(p*20|0)+2>>1]=0;c[Q+(p*20|0)+4>>2]=m;c[Q+(p*20|0)+8>>2]=0;c[Q+(p*20|0)+12>>2]=0;c[Q+(p*20|0)+16>>2]=0;a[Q+(p*20|0)+1>>0]=0;Q=p;N=p;break}else{N=Di(Aa,14,m,0,0)|0;Q=N;break}}else{o=Aa+108|0;m=c[o>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[o>>2]=m+1;na=c[Aa+104>>2]|0;a[na+(m*20|0)>>0]=36;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=U;c[na+(m*20|0)+8>>2]=0;c[na+(m*20|0)+12>>2]=0;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0}else m=Di(Aa,36,U,0,0)|0;Q=m;N=c[o>>2]|0}while(0);na=f+56|0;M=c[na>>2]|0;K=M+-1|0;c[na>>2]=K;do if(h&1|0){na=b[ea>>1]|0;h=na<<16>>16;m=h+1|0;do if(!(na<<16>>16)){h=f+19|0;m=a[h>>0]|0;if(!(m<<24>>24)){E=(c[ka>>2]|0)+1|0;c[ka>>2]=E;break}else{E=m+-1<<24>>24;a[h>>0]=E;E=c[f+148+((E&255)<<2)>>2]|0;break}}else{o=f+32|0;p=c[o>>2]|0;q=f+28|0;r=c[q>>2]|0;if((r|0)>(h|0)){c[o>>2]=p+m;c[q>>2]=r-m;E=p;break}else{E=c[ka>>2]|0;c[ka>>2]=E+m;E=E+1|0;break}}while(0);do if((S|0)<0){h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;na=c[Aa+104>>2]|0;a[na+(m*20|0)>>0]=70;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=-1;c[na+(m*20|0)+8>>2]=E;c[na+(m*20|0)+12>>2]=0;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0;break}else{Di(Aa,70,-1,E,0)|0;break}}else{E:do if(P){h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;na=c[Aa+104>>2]|0;a[na+(m*20|0)>>0]=90;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=U;c[na+(m*20|0)+8>>2]=S;c[na+(m*20|0)+12>>2]=E;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0;break}else{Di(Aa,90,U,S,E)|0;break}}else{h=c[Ea+4+(S*20|0)>>2]|0;do if(h){if((a[h>>0]|0)!=-88){p=Jj(f,h,E)|0;break}p=c[ya>>2]|0;h=c[h+28>>2]|0;m=p+108|0;o=c[m>>2]|0;if((c[p+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[p+104>>2]|0;a[na+(o*20|0)>>0]=78;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=h;c[na+(o*20|0)+8>>2]=E;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break E}else{Di(p,78,h,E,0)|0;break E}}else p=Jj(f,0,E)|0;while(0);if((p|0)==(E|0))break;h=c[ya>>2]|0;if(!h)break;m=h+108|0;o=c[m>>2]|0;if((c[h+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[h+104>>2]|0;a[na+(o*20|0)>>0]=79;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=p;c[na+(o*20|0)+8>>2]=E;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break}else{Di(h,79,p,E,0)|0;break}}while(0);o=Aa+108|0;h=c[o>>2]|0;p=Aa+112|0;if((c[p>>2]|0)>(h|0)){c[o>>2]=h+1;na=c[Aa+104>>2]|0;a[na+(h*20|0)>>0]=51;b[na+(h*20|0)+2>>1]=0;c[na+(h*20|0)+4>>2]=E;c[na+(h*20|0)+8>>2]=0;c[na+(h*20|0)+12>>2]=0;c[na+(h*20|0)+16>>2]=0;a[na+(h*20|0)+1>>0]=0}else h=Di(Aa,51,E,0,0)|0;m=c[o>>2]|0;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;na=c[Aa+104>>2]|0;a[na+(m*20|0)>>0]=70;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=-1;c[na+(m*20|0)+8>>2]=E;c[na+(m*20|0)+12>>2]=0;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0}else Di(Aa,70,-1,E,0)|0;m=c[o>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))h=(c[Aa+104>>2]|0)+(((h|0)<0?m+-1|0:h)*20|0)|0;else h=59308;c[h+8>>2]=m;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;na=c[Aa+104>>2]|0;a[na+(m*20|0)>>0]=15;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=E;c[na+(m*20|0)+8>>2]=0;c[na+(m*20|0)+12>>2]=0;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0;break}else{Di(Aa,15,E,0,0)|0;break}}while(0);h=b[ea>>1]|0;if(h<<16>>16>0){w=i+4|0;D=(Ea|0)!=0|P;x=qa&1;y=Ca+4|0;z=E+1|0;A=Aa+108|0;B=Aa+112|0;C=Aa+104|0;h=0;v=0;while(1){F:do if(Y){m=c[w>>2]|0;if((m|0)<=0){u=0;break}o=c[i>>2]|0;h=0;while(1){if((c[o+(h<<3)+4>>2]|0)==(v|0)){u=h;break F}h=h+1|0;if((h|0)>=(m|0)){u=h;break}}}else u=h;while(0);do if(D){if(Y?(u|0)>=(c[w>>2]|0):0){Ba=710;break}if(P){h=v+z|0;m=c[A>>2]|0;if((c[B>>2]|0)>(m|0)){c[A>>2]=m+1;na=c[C>>2]|0;a[na+(m*20|0)>>0]=90;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=U;c[na+(m*20|0)+8>>2]=u;c[na+(m*20|0)+12>>2]=h;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0;break}else{Di(Aa,90,U,u,h)|0;break}}q=c[Ea+4+(u*20|0)>>2]|0;r=v+z|0;s=c[ya>>2]|0;do if(q){if((a[q>>0]|0)!=-88){p=Jj(f,q,r)|0;Ba=732;break}h=c[q+28>>2]|0;m=s+108|0;o=c[m>>2]|0;if((c[s+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[s+104>>2]|0;a[na+(o*20|0)>>0]=78;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=h;c[na+(o*20|0)+8>>2]=r;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break}else{Di(s,78,h,r,0)|0;break}}else{p=Jj(f,0,r)|0;Ba=732}while(0);do if((Ba|0)==732){Ba=0;if((p|0)==(r|0))break;h=c[ya>>2]|0;if(!h)break;m=h+108|0;o=c[m>>2]|0;if((c[h+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[h+104>>2]|0;a[na+(o*20|0)>>0]=79;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=p;c[na+(o*20|0)+8>>2]=r;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break}else{Di(h,79,p,r,0)|0;break}}while(0);h=(c[ka>>2]|0)+1|0;c[ka>>2]=h;m=s+108|0;o=c[m>>2]|0;if((c[s+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[s+104>>2]|0;a[na+(o*20|0)>>0]=78;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=r;c[na+(o*20|0)+8>>2]=h;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0}else Di(s,78,r,h,0)|0;a[q+38>>0]=a[q>>0]|0;a[q>>0]=-88;c[q+28>>2]=h;na=q+4|0;c[na>>2]=c[na>>2]&-4097}else Ba=710;while(0);G:do if((Ba|0)==710){Ba=0;h=c[(c[y>>2]|0)+(v<<4)+4>>2]|0;q=v+z|0;do if(h){if((a[h>>0]|0)!=-88){p=Jj(f,h,q)|0;break}p=c[ya>>2]|0;h=c[h+28>>2]|0;m=p+108|0;o=c[m>>2]|0;if((c[p+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[p+104>>2]|0;a[na+(o*20|0)>>0]=78;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=h;c[na+(o*20|0)+8>>2]=q;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break G}else{Di(p,78,h,q,0)|0;break G}}else p=Jj(f,0,q)|0;while(0);if((p|0)==(q|0))break;h=c[ya>>2]|0;if(!h)break;m=h+108|0;o=c[m>>2]|0;if((c[h+112>>2]|0)>(o|0)){c[m>>2]=o+1;na=c[h+104>>2]|0;a[na+(o*20|0)>>0]=79;b[na+(o*20|0)+2>>1]=0;c[na+(o*20|0)+4>>2]=p;c[na+(o*20|0)+8>>2]=q;c[na+(o*20|0)+12>>2]=0;c[na+(o*20|0)+16>>2]=0;a[na+(o*20|0)+1>>0]=0;break}else{Di(h,79,p,q,0)|0;break}}while(0);v=v+1|0;h=b[ea>>1]|0;if((v|0)>=(h<<16>>16|0))break;else h=u+x|0}}if(!oa){zk(Aa,Ca,E+1|0);h=b[ea>>1]|0}m=h<<16>>16;w=E-m+-1|0;if(t){v=f+23|0;u=t;do{do if((a[u+8>>0]|0)==120){if((a[u+9>>0]|0)!=1)break;h=c[ya>>2]|0;H:do if(!h){o=c[f>>2]|0;do if(!(c[ua>>2]|0)){if(b[o+76>>1]&8)break;a[v>>0]=1}while(0);I:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))Ba=762;else{h=0;break H}else{do if((e[o+276>>1]|0)>=224){m=o+300|0;h=c[m>>2]|0;if(h|0){c[m>>2]=c[h>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break I}m=o+296|0;h=c[m>>2]|0;if(!h){h=o+292|0;break}else{c[m>>2]=c[h>>2];na=o+284|0;c[na>>2]=(c[na>>2]|0)+1;break I}}else h=o+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;Ba=762}while(0);if((Ba|0)==762){Ba=0;h=_d(o,224,0)|0}if(!h){h=0;break}p=h+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[h>>2]=o;m=o+4|0;o=c[m>>2]|0;if(o|0)c[o+4>>2]=h;c[h+8>>2]=o;c[h+4>>2]=0;c[m>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=f;c[ya>>2]=h;Di(h,61,0,1,0)|0}while(0);m=c[ua>>2]|0;m=c[((m|0)==0?f:m)+260>>2]|0;J:do if(!m)Ba=772;else while(1){if((c[m>>2]|0)==(u|0)?(c[m+12>>2]|0)==(j|0):0)break J;m=c[m+4>>2]|0;if(!m){Ba=772;break}}while(0);if((Ba|0)==772){Ba=0;m=Nm(f,u,Ca,j)|0;if(!m)break}if(!(c[u>>2]|0))s=0;else{s=(c[f>>2]|0)+32|0;s=bw(c[s>>2]|0,c[s+4>>2]|0,13)|0;L()|0;s=s&1^1}o=(c[ka>>2]|0)+1|0;c[ka>>2]=o;q=c[m+8>>2]|0;r=h+108|0;m=c[r>>2]|0;if((c[h+112>>2]|0)>(m|0)){c[r>>2]=m+1;na=c[h+104>>2]|0;a[na+(m*20|0)>>0]=45;b[na+(m*20|0)+2>>1]=0;c[na+(m*20|0)+4>>2]=w;c[na+(m*20|0)+8>>2]=K;c[na+(m*20|0)+12>>2]=o;c[na+(m*20|0)+16>>2]=0;a[na+(m*20|0)+1>>0]=0}else m=Di(h,45,w,K,o)|0;do if(!(a[(c[h>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[r>>2]|0)+-1|0;o=c[h+104>>2]|0;p=o+(m*20|0)+1|0;if(a[p>>0]|0){Ei(h,o+(m*20|0)|0,q,-4);break}if(!q)break;c[o+(m*20|0)+16>>2]=q;a[p>>0]=-4}while(0);m=c[r>>2]|0;if((m|0)<=0)break;b[(c[h+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=s}while(0);u=c[u+32>>2]|0}while((u|0)!=0);h=b[ea>>1]|0;m=h<<16>>16}o=m+1|0;if(h<<16>>16){h=f+28|0;if((c[h>>2]|0)>(m|0))break;c[h>>2]=o;c[f+32>>2]=E;break}if(!E)break;h=f+19|0;m=a[h>>0]|0;if((m&255)>=8)break;a[h>>0]=m+1<<24>>24;c[f+148+((m&255)<<2)>>2]=E}while(0);do if(!oa){do if(c[Z>>2]|0){h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;oa=c[Aa+104>>2]|0;a[oa+(m*20|0)>>0]=73;b[oa+(m*20|0)+2>>1]=0;c[oa+(m*20|0)+4>>2]=0;c[oa+(m*20|0)+8>>2]=da;c[oa+(m*20|0)+12>>2]=0;c[oa+(m*20|0)+16>>2]=0;a[oa+(m*20|0)+1>>0]=0;break}else{Di(Aa,73,0,da,0)|0;break}}while(0);K:do if((S|0)>-1){L:do if(P){h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;pa=c[Aa+104>>2]|0;a[pa+(m*20|0)>>0]=90;b[pa+(m*20|0)+2>>1]=0;c[pa+(m*20|0)+4>>2]=U;c[pa+(m*20|0)+8>>2]=S;c[pa+(m*20|0)+12>>2]=fa;c[pa+(m*20|0)+16>>2]=0;a[pa+(m*20|0)+1>>0]=0;break}else{Di(Aa,90,U,S,fa)|0;break}}else{if(va){h=S+T|0;m=Aa+108|0;o=c[m>>2]|0;if((c[Aa+112>>2]|0)>(o|0)){c[m>>2]=o+1;pa=c[Aa+104>>2]|0;a[pa+(o*20|0)>>0]=78;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=h;c[pa+(o*20|0)+8>>2]=fa;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break}else{Di(Aa,78,h,fa,0)|0;break}}m=c[Ea+4+(S*20|0)>>2]|0;h=a[m>>0]|0;do if(h<<24>>24==114){if(c[Z>>2]|0)break;h=c[xa>>2]|0;m=Aa+108|0;o=c[m>>2]|0;if((c[Aa+112>>2]|0)>(o|0)){c[m>>2]=o+1;I=c[Aa+104>>2]|0;a[I+(o*20|0)>>0]=121;b[I+(o*20|0)+2>>1]=0;c[I+(o*20|0)+4>>2]=h;c[I+(o*20|0)+8>>2]=fa;c[I+(o*20|0)+12>>2]=F;c[I+(o*20|0)+16>>2]=0;a[I+(o*20|0)+1>>0]=0;I=1;break K}else{Di(Aa,121,h,fa,F)|0;I=1;break K}}while(0);do if(m){if(h<<24>>24!=-88){p=Jj(f,m,fa)|0;break}p=c[ya>>2]|0;h=c[m+28>>2]|0;m=p+108|0;o=c[m>>2]|0;if((c[p+112>>2]|0)>(o|0)){c[m>>2]=o+1;pa=c[p+104>>2]|0;a[pa+(o*20|0)>>0]=78;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=h;c[pa+(o*20|0)+8>>2]=fa;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break L}else{Di(p,78,h,fa,0)|0;break L}}else p=Jj(f,0,fa)|0;while(0);if((p|0)==(fa|0))break;h=c[ya>>2]|0;if(!h)break;m=h+108|0;o=c[m>>2]|0;if((c[h+112>>2]|0)>(o|0)){c[m>>2]=o+1;pa=c[h+104>>2]|0;a[pa+(o*20|0)>>0]=79;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=p;c[pa+(o*20|0)+8>>2]=fa;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break}else{Di(h,79,p,fa,0)|0;break}}while(0);q=Aa+108|0;o=c[q>>2]|0;do if(c[Z>>2]|0){m=o+2|0;h=Aa+112|0;if((c[h>>2]|0)>(o|0)){c[q>>2]=o+1;pa=c[Aa+104>>2]|0;a[pa+(o*20|0)>>0]=50;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=fa;c[pa+(o*20|0)+8>>2]=m;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break}else{Di(Aa,50,fa,m,0)|0;break}}else{h=Aa+112|0;if((c[h>>2]|0)>(o|0)){c[q>>2]=o+1;pa=c[Aa+104>>2]|0;a[pa+(o*20|0)>>0]=51;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=fa;c[pa+(o*20|0)+8>>2]=0;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0}else o=Di(Aa,51,fa,0,0)|0;m=c[xa>>2]|0;p=c[q>>2]|0;if((c[h>>2]|0)>(p|0)){c[q>>2]=p+1;pa=c[Aa+104>>2]|0;a[pa+(p*20|0)>>0]=121;b[pa+(p*20|0)+2>>1]=0;c[pa+(p*20|0)+4>>2]=m;c[pa+(p*20|0)+8>>2]=fa;c[pa+(p*20|0)+12>>2]=F;c[pa+(p*20|0)+16>>2]=0;a[pa+(p*20|0)+1>>0]=0}else Di(Aa,121,m,fa,F)|0;p=c[q>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))m=(c[Aa+104>>2]|0)+(((o|0)<0?p+-1|0:o)*20|0)|0;else m=59308;c[m+8>>2]=p}while(0);m=c[q>>2]|0;if((c[h>>2]|0)>(m|0)){c[q>>2]=m+1;I=c[Aa+104>>2]|0;a[I+(m*20|0)>>0]=15;b[I+(m*20|0)+2>>1]=0;c[I+(m*20|0)+4>>2]=fa;c[I+(m*20|0)+8>>2]=0;c[I+(m*20|0)+12>>2]=0;c[I+(m*20|0)+16>>2]=0;a[I+(m*20|0)+1>>0]=0;I=0;break}else{Di(Aa,15,fa,0,0)|0;I=0;break}}else if(!(c[Z>>2]|pa)){h=c[xa>>2]|0;m=Aa+108|0;o=c[m>>2]|0;if((c[Aa+112>>2]|0)>(o|0)){c[m>>2]=o+1;I=c[Aa+104>>2]|0;a[I+(o*20|0)>>0]=121;b[I+(o*20|0)+2>>1]=0;c[I+(o*20|0)+4>>2]=h;c[I+(o*20|0)+8>>2]=fa;c[I+(o*20|0)+12>>2]=F;c[I+(o*20|0)+16>>2]=0;a[I+(o*20|0)+1>>0]=0;I=1;break}else{Di(Aa,121,h,fa,F)|0;I=1;break}}else{h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;I=c[Aa+104>>2]|0;a[I+(m*20|0)>>0]=73;b[I+(m*20|0)+2>>1]=0;c[I+(m*20|0)+4>>2]=0;c[I+(m*20|0)+8>>2]=fa;c[I+(m*20|0)+12>>2]=0;c[I+(m*20|0)+16>>2]=0;a[I+(m*20|0)+1>>0]=0;I=0;break}else{Di(Aa,73,0,fa,0)|0;I=0;break}}while(0);do if((F|0)>0){h=c[ya>>2]|0;m=h+108|0;o=c[m>>2]|0;if((c[h+112>>2]|0)>(o|0)){c[m>>2]=o+1;pa=c[h+104>>2]|0;a[pa+(o*20|0)>>0]=-105;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=F;c[pa+(o*20|0)+8>>2]=fa;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break}else{Di(h,151,F,fa,0)|0;break}}while(0);if((b[ea>>1]|0)>0){C=Ca+40|0;D=Aa+108|0;E=Aa+112|0;F=Aa+104|0;H=Ca+4|0;u=(J|0)==0;v=f+23|0;w=i+4|0;x=ta+20|0;y=ta+4|0;z=ta+8|0;A=ta+24|0;B=(T|0)==(_|0);h=0;s=0;do{r=s+_|0;M:do if((s|0)==(b[C>>1]|0)){m=c[D>>2]|0;if((c[E>>2]|0)>(m|0)){c[D>>2]=m+1;pa=c[F>>2]|0;a[pa+(m*20|0)>>0]=74;b[pa+(m*20|0)+2>>1]=0;c[pa+(m*20|0)+4>>2]=r;c[pa+(m*20|0)+8>>2]=0;c[pa+(m*20|0)+12>>2]=0;c[pa+(m*20|0)+16>>2]=0;a[pa+(m*20|0)+1>>0]=0;break}else{Di(Aa,74,r,0,0)|0;break}}else{N:do if(qa)if(!(a[(c[H>>2]|0)+(s<<4)+15>>0]&2)){m=s-h|0;Ba=867;break}else{h=h+1|0;break}else{o=c[w>>2]|0;if((o|0)<=0){m=0;Ba=867;break}p=c[i>>2]|0;m=0;while(1){if((c[p+(m<<3)+4>>2]|0)==(s|0)){Ba=867;break N}m=m+1|0;if((m|0)>=(o|0)){Ba=867;break}}}while(0);do if((Ba|0)==867){Ba=0;if(u|(m|0)<0)break;if(Y?(m|0)>=(c[w>>2]|0):0)break;if(P){o=c[D>>2]|0;if((c[E>>2]|0)>(o|0)){c[D>>2]=o+1;pa=c[F>>2]|0;a[pa+(o*20|0)>>0]=90;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=U;c[pa+(o*20|0)+8>>2]=m;c[pa+(o*20|0)+12>>2]=r;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break M}else{Di(Aa,90,U,m,r)|0;break M}}if(va){if(B)break M;m=m+T|0;o=c[D>>2]|0;if((c[E>>2]|0)>(o|0)){c[D>>2]=o+1;pa=c[F>>2]|0;a[pa+(o*20|0)>>0]=79;b[pa+(o*20|0)+2>>1]=0;c[pa+(o*20|0)+4>>2]=m;c[pa+(o*20|0)+8>>2]=r;c[pa+(o*20|0)+12>>2]=0;c[pa+(o*20|0)+16>>2]=0;a[pa+(o*20|0)+1>>0]=0;break M}else{Di(Aa,79,m,r,0)|0;break M}}m=c[Ea+4+(m*20|0)>>2]|0;do if(m){if((a[m>>0]|0)!=-88){q=Jj(f,m,r)|0;break}q=c[ya>>2]|0;m=c[m+28>>2]|0;o=q+108|0;p=c[o>>2]|0;if((c[q+112>>2]|0)>(p|0)){c[o>>2]=p+1;pa=c[q+104>>2]|0;a[pa+(p*20|0)>>0]=78;b[pa+(p*20|0)+2>>1]=0;c[pa+(p*20|0)+4>>2]=m;c[pa+(p*20|0)+8>>2]=r;c[pa+(p*20|0)+12>>2]=0;c[pa+(p*20|0)+16>>2]=0;a[pa+(p*20|0)+1>>0]=0;break M}else{Di(q,78,m,r,0)|0;break M}}else q=Jj(f,0,r)|0;while(0);if((q|0)==(r|0))break M;m=c[ya>>2]|0;if(!m)break M;o=m+108|0;p=c[o>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[o>>2]=p+1;pa=c[m+104>>2]|0;a[pa+(p*20|0)>>0]=79;b[pa+(p*20|0)+2>>1]=0;c[pa+(p*20|0)+4>>2]=q;c[pa+(p*20|0)+8>>2]=r;c[pa+(p*20|0)+12>>2]=0;c[pa+(p*20|0)+16>>2]=0;a[pa+(p*20|0)+1>>0]=0;break M}else{Di(m,79,q,r,0)|0;break M}}while(0);m=c[(c[H>>2]|0)+(s<<4)+4>>2]|0;do if(!(a[v>>0]|0)){if(m|0){Ba=876;break}q=Jj(f,0,r)|0}else{a[x>>0]=2;c[y>>2]=127;c[z>>2]=128;c[A>>2]=0;if(m){_j(ta,m)|0;if(!(a[x>>0]|0)){Ba=876;break}}Nj(f,m,r)|0;break M}while(0);do if((Ba|0)==876){Ba=0;if((a[m>>0]|0)!=-88){q=Jj(f,m,r)|0;break}q=c[ya>>2]|0;m=c[m+28>>2]|0;o=q+108|0;p=c[o>>2]|0;if((c[q+112>>2]|0)>(p|0)){c[o>>2]=p+1;pa=c[q+104>>2]|0;a[pa+(p*20|0)>>0]=78;b[pa+(p*20|0)+2>>1]=0;c[pa+(p*20|0)+4>>2]=m;c[pa+(p*20|0)+8>>2]=r;c[pa+(p*20|0)+12>>2]=0;c[pa+(p*20|0)+16>>2]=0;a[pa+(p*20|0)+1>>0]=0;break M}else{Di(q,78,m,r,0)|0;break M}}while(0);if((q|0)==(r|0))break;m=c[ya>>2]|0;if(!m)break;o=m+108|0;p=c[o>>2]|0;if((c[m+112>>2]|0)>(p|0)){c[o>>2]=p+1;pa=c[m+104>>2]|0;a[pa+(p*20|0)>>0]=79;b[pa+(p*20|0)+2>>1]=0;c[pa+(p*20|0)+4>>2]=q;c[pa+(p*20|0)+8>>2]=r;c[pa+(p*20|0)+12>>2]=0;c[pa+(p*20|0)+16>>2]=0;a[pa+(p*20|0)+1>>0]=0;break}else{Di(m,79,q,r,0)|0;break}}while(0);s=s+1|0}while((s|0)<(b[ea>>1]|0))}if(!(c[Z>>2]|0)){Tm(f,Ca,R,c[xa>>2]|0,c[wa>>2]|0,da,0,S>>>31&255^1,j&255,K,ta,0,k);Lm(f,Ca,0,da,0,0);do if(!(c[ta>>2]|0))h=1;else{if(t|0){h=0;break}if((c[O>>2]&16384|0)==0&0==0){h=1;break}s=c[Ca>>2]|0;p=c[ra>>2]|0;q=c[p+68>>2]|0;if(!q){m=p+60|0;h=p+64|0}else{m=a[s>>0]|0;if(!(m<<24>>24))h=0;else{h=0;o=s;do{o=o+1|0;h=G(h+(d[208+(m&255)>>0]|0)|0,-1640531535)|0;m=a[o>>0]|0}while(m<<24>>24!=0)}h=(h>>>0)%((c[p+56>>2]|0)>>>0)|0;m=q+(h<<3)|0;h=q+(h<<3)+4|0}m=c[m>>2]|0;O:do if(!m)h=59292;else{r=d[208+(d[s>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;m=m+-1|0;p=c[h+12>>2]|0;ta=a[p>>0]|0;o=(d[208+(ta&255)>>0]|0)-r|0;if(!(ta<<24>>24==0|(o|0)!=0)){q=s;do{p=p+1|0;q=q+1|0;ta=a[p>>0]|0;o=(d[208+(ta&255)>>0]|0)-(d[208+(d[q>>0]|0)>>0]|0)|0}while(!(ta<<24>>24==0|(o|0)!=0))}if(!o)break O;if(!m){h=59292;break}}}while(0);h=(c[h+8>>2]|0)==0&1}while(0);Um(f,Ca,c[xa>>2]|0,c[wa>>2]|0,da,R,0,I,h);break}h=c[Ca+64>>2]|0;P:do if(!h)h=0;else while(1){if((c[h>>2]|0)==(Fa|0))break P;h=c[h+24>>2]|0;if(!h){h=0;break}}while(0);s=c[ua>>2]|0;s=(s|0)==0?f:s;r=s+204|0;q=c[r>>2]|0;p=s+252|0;Q:do if((q|0)>0){m=c[p>>2]|0;o=0;do{if((c[m+(o<<2)>>2]|0)==(Ca|0))break Q;o=o+1|0}while((o|0)<(q|0));o=p;Ba=920}else{o=p;m=c[p>>2]|0;Ba=920}while(0);R:do if((Ba|0)==920){do if(!(mb()|0)){xa=(q<<2)+4|0;m=sb(m,xa,((xa|0)<0)<<31>>31)|0;if(!m)break;c[o>>2]=m;xa=c[r>>2]|0;c[r>>2]=xa+1;c[m+(xa<<2)>>2]=Ca;break R}while(0);m=c[s>>2]|0;o=m+81|0;if(a[o>>0]|0)break;if(a[m+82>>0]|0)break;a[o>>0]=1;if((c[m+180>>2]|0)>0)c[m+264>>2]=1;xa=m+272|0;c[xa>>2]=(c[xa>>2]|0)+1;m=c[m+236>>2]|0;if(!m)break;c[m+12>>2]=7}while(0);o=(b[ea>>1]|0)+2|0;q=Aa+108|0;m=c[q>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[q>>2]=m+1;xa=c[Aa+104>>2]|0;a[xa+(m*20|0)>>0]=10;b[xa+(m*20|0)+2>>1]=0;c[xa+(m*20|0)+4>>2]=1;c[xa+(m*20|0)+8>>2]=o;c[xa+(m*20|0)+12>>2]=da;c[xa+(m*20|0)+16>>2]=0;a[xa+(m*20|0)+1>>0]=0}else m=Di(Aa,10,1,o,da)|0;do if(!(a[(c[Aa>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[q>>2]|0)+-1|0;o=c[Aa+104>>2]|0;p=o+(m*20|0)+1|0;if(a[p>>0]|0){Ei(Aa,o+(m*20|0)|0,h,-12);break}if(!h)break;c[o+(m*20|0)+16>>2]=h;a[p>>0]=-12;xa=h+12|0;c[xa>>2]=(c[xa>>2]|0)+1}while(0);h=c[q>>2]|0;if((h|0)>0)b[(c[Aa+104>>2]|0)+((h+-1|0)*20|0)+2>>1]=(j|0)==11?2:j&65535;xa=c[ua>>2]|0;a[((xa|0)==0?f:xa)+21>>0]=1}while(0);do if(n|0){h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;xa=c[Aa+104>>2]|0;a[xa+(m*20|0)>>0]=83;b[xa+(m*20|0)+2>>1]=0;c[xa+(m*20|0)+4>>2]=n;c[xa+(m*20|0)+8>>2]=1;c[xa+(m*20|0)+12>>2]=0;c[xa+(m*20|0)+16>>2]=0;a[xa+(m*20|0)+1>>0]=0;break}else{Di(Aa,83,n,1,0)|0;break}}while(0);if(sa){u=fa+-1-(b[ea>>1]|0)|0;v=f+23|0;do{do if((a[t+8>>0]|0)==120){if((a[t+9>>0]|0)!=2)break;h=c[ya>>2]|0;S:do if(!h){o=c[f>>2]|0;do if(!(c[ua>>2]|0)){if(b[o+76>>1]&8)break;a[v>>0]=1}while(0);T:do if(c[o+272>>2]|0)if(!(a[o+81>>0]|0))Ba=982;else{h=0;break S}else{do if((e[o+276>>1]|0)>=224){m=o+300|0;h=c[m>>2]|0;if(h|0){c[m>>2]=c[h>>2];xa=o+284|0;c[xa>>2]=(c[xa>>2]|0)+1;break T}m=o+296|0;h=c[m>>2]|0;if(!h){h=o+292|0;break}else{c[m>>2]=c[h>>2];xa=o+284|0;c[xa>>2]=(c[xa>>2]|0)+1;break T}}else h=o+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;Ba=982}while(0);if((Ba|0)==982){Ba=0;h=_d(o,224,0)|0}if(!h){h=0;break}p=h+104|0;q=p+120|0;do{c[p>>2]=0;p=p+4|0}while((p|0)<(q|0));c[h>>2]=o;m=o+4|0;o=c[m>>2]|0;if(o|0)c[o+4>>2]=h;c[h+8>>2]=o;c[h+4>>2]=0;c[m>>2]=h;c[h+20>>2]=381479589;c[h+12>>2]=f;c[ya>>2]=h;Di(h,61,0,1,0)|0}while(0);m=c[ua>>2]|0;m=c[((m|0)==0?f:m)+260>>2]|0;U:do if(!m)Ba=992;else while(1){if((c[m>>2]|0)==(t|0)?(c[m+12>>2]|0)==(j|0):0)break U;m=c[m+4>>2]|0;if(!m){Ba=992;break}}while(0);if((Ba|0)==992){Ba=0;m=Nm(f,t,Ca,j)|0;if(!m)break}if(!(c[t>>2]|0))s=0;else{s=(c[f>>2]|0)+32|0;s=bw(c[s>>2]|0,c[s+4>>2]|0,13)|0;L()|0;s=s&1^1}o=(c[ka>>2]|0)+1|0;c[ka>>2]=o;q=c[m+8>>2]|0;r=h+108|0;m=c[r>>2]|0;if((c[h+112>>2]|0)>(m|0)){c[r>>2]=m+1;xa=c[h+104>>2]|0;a[xa+(m*20|0)>>0]=45;b[xa+(m*20|0)+2>>1]=0;c[xa+(m*20|0)+4>>2]=u;c[xa+(m*20|0)+8>>2]=K;c[xa+(m*20|0)+12>>2]=o;c[xa+(m*20|0)+16>>2]=0;a[xa+(m*20|0)+1>>0]=0}else m=Di(h,45,u,K,o)|0;do if(!(a[(c[h>>2]|0)+81>>0]|0)){if((m|0)<0)m=(c[r>>2]|0)+-1|0;o=c[h+104>>2]|0;p=o+(m*20|0)+1|0;if(a[p>>0]|0){Ei(h,o+(m*20|0)|0,q,-4);break}if(!q)break;c[o+(m*20|0)+16>>2]=q;a[p>>0]=-4}while(0);m=c[r>>2]|0;if((m|0)<=0)break;b[(c[h+104>>2]|0)+((m+-1|0)*20|0)+2>>1]=s}while(0);t=c[t+32>>2]|0}while((t|0)!=0)}m=c[Aa+12>>2]|0;h=0-M|0;if(((c[m+56>>2]|0)+(c[m+60>>2]|0)|0)<0)mk(m,Aa,h);else c[(c[m+64>>2]|0)+(h<<2)>>2]=c[Aa+108>>2];if(!P){if(!va)break;h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;j=c[Aa+104>>2]|0;a[j+(m*20|0)>>0]=11;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=0;c[j+(m*20|0)+8>>2]=N;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0}else Di(Aa,11,0,N,0)|0;m=c[h>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))h=(c[Aa+104>>2]|0)+(((Q|0)<0?m+-1|0:Q)*20|0)|0;else h=59308;c[h+8>>2]=m;break}o=Aa+108|0;h=c[o>>2]|0;p=Aa+112|0;if((c[p>>2]|0)>(h|0)){c[o>>2]=h+1;j=c[Aa+104>>2]|0;a[j+(h*20|0)>>0]=5;b[j+(h*20|0)+2>>1]=0;c[j+(h*20|0)+4>>2]=U;c[j+(h*20|0)+8>>2]=N;c[j+(h*20|0)+12>>2]=0;c[j+(h*20|0)+16>>2]=0;a[j+(h*20|0)+1>>0]=0}else Di(Aa,5,U,N,0)|0;m=c[o>>2]|0;if(!(a[(c[Aa>>2]|0)+81>>0]|0))h=(c[Aa+104>>2]|0)+(((Q|0)<0?m+-1|0:Q)*20|0)|0;else h=59308;c[h+8>>2]=m;if((c[p>>2]|0)>(m|0)){c[o>>2]=m+1;j=c[Aa+104>>2]|0;a[j+(m*20|0)>>0]=117;b[j+(m*20|0)+2>>1]=0;c[j+(m*20|0)+4>>2]=U;c[j+(m*20|0)+8>>2]=0;c[j+(m*20|0)+12>>2]=0;c[j+(m*20|0)+16>>2]=0;a[j+(m*20|0)+1>>0]=0;break}else{Di(Aa,117,U,0,0)|0;break}}while(0);do if(!(a[za>>0]|0)){if(c[f+120>>2]|0)break;if(!(c[f+112>>2]|0))break;Sm(f)}while(0);if(!n)Ba=1038;else{h=Aa+108|0;m=c[h>>2]|0;if((c[Aa+112>>2]|0)>(m|0)){c[h>>2]=m+1;f=c[Aa+104>>2]|0;a[f+(m*20|0)>>0]=81;b[f+(m*20|0)+2>>1]=0;c[f+(m*20|0)+4>>2]=n;c[f+(m*20|0)+8>>2]=1;c[f+(m*20|0)+12>>2]=0;c[f+(m*20|0)+16>>2]=0;a[f+(m*20|0)+1>>0]=0}else Di(Aa,81,n,1,0)|0;Wi(Aa,1);if(a[(c[Aa>>2]|0)+81>>0]|0){Ba=1038;break}yc(c[Aa+116>>2]|0,44972,-1,1,0)|0;Ba=1038}}else{l=0;Ba=1038}}else{l=0;Ba=1038}while(0);if((Ba|0)==1038){qi(Fa,g);if(!Ea){h=Da;r=l;break}}ri(Fa,Ea);h=Da;r=l}else Ba=1037;while(0);if((Ba|0)==1037){qi(Fa,g);r=0}do if(k|0){l=c[k>>2]|0;if(l|0)ri(Fa,l);l=c[k+4>>2]|0;if(l|0)ni(Fa,l);l=c[k+8>>2]|0;if(l|0)ri(Fa,l);l=c[k+12>>2]|0;if(l|0)ni(Fa,l);if(Fa|0){if(c[Fa+480>>2]|0){Xd(Fa,k);break}g=k;if((c[Fa+304>>2]|0)>>>0<=g>>>0?(c[Fa+308>>2]|0)>>>0>g>>>0:0){g=Fa+300|0;c[k>>2]=c[g>>2];c[g>>2]=k;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);break}else{g=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);break}}while(0);if(h|0)pi(Fa,h,1);do if(i|0){q=i+4|0;l=c[i>>2]|0;V:do if((c[q>>2]|0)>0){m=Fa+480|0;n=Fa+304|0;o=Fa+308|0;p=Fa+300|0;if(!Fa){h=0;while(1){l=c[l+(h<<3)>>2]|0;do if(l|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{k=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}while(0);h=h+1|0;l=c[i>>2]|0;if((h|0)>=(c[q>>2]|0))break V}}h=0;do{l=c[l+(h<<3)>>2]|0;do if(l|0){if(c[m>>2]|0){Xd(Fa,l);break}k=l;if((c[n>>2]|0)>>>0<=k>>>0?(c[o>>2]|0)>>>0>k>>>0:0){c[l>>2]=c[p>>2];c[p>>2]=l;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](l);break}else{k=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);break}}while(0);h=h+1|0;l=c[i>>2]|0}while((h|0)<(c[q>>2]|0))}while(0);W:do if(l){do if(Fa|0){h=Fa+480|0;if(!(c[h>>2]|0)){m=l;if((c[Fa+304>>2]|0)>>>0>m>>>0)break;if((c[Fa+308>>2]|0)>>>0<=m>>>0)break;k=Fa+300|0;c[l>>2]=c[k>>2];c[k>>2]=l}else Xd(Fa,l);l=h;Ba=1093;break W}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](l);Ba=1091;break}else{Ba=Wa[c[29352>>2]&127](l)|0;c[14978]=(c[14978]|0)-Ba;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](l);Ba=1091;break}}else Ba=1091;while(0);if((Ba|0)==1091)if(Fa){l=Fa+480|0;Ba=1093}if((Ba|0)==1093){if(c[l>>2]|0){Xd(Fa,i);break}k=i;if((c[Fa+304>>2]|0)>>>0<=k>>>0?(c[Fa+308>>2]|0)>>>0>k>>>0:0){k=Fa+300|0;c[i>>2]=c[k>>2];c[k>>2]=i;break}}if(i|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{k=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-k;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(!r){Ra=Ga;return}if(Fa|0){if(c[Fa+480>>2]|0){Xd(Fa,r);Ra=Ga;return}k=r;if((c[Fa+304>>2]|0)>>>0<=k>>>0?(c[Fa+308>>2]|0)>>>0>k>>>0:0){Fa=Fa+300|0;c[r>>2]=c[Fa>>2];c[Fa>>2]=r;Ra=Ga;return}}if(!(c[7324]|0)){ab[c[29344>>2]&127](r);Ra=Ga;return}else{Fa=Wa[c[29352>>2]&127](r)|0;c[14978]=(c[14978]|0)-Fa;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](r);Ra=Ga;return}}function wj(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=c[b>>2]|0;if(!f){a:do if(!p){if(!(c[7324]|0)){f=Wa[c[29340>>2]&127](8)|0;o=25;break}f=Wa[c[29356>>2]&127](8)|0;if((c[14985]|0)>>>0<8)c[14985]=8;i=59064;h=c[i>>2]|0;i=c[i+4>>2]|0;if((i|0)>0|(i|0)==0&h>>>0>0){n=c[14978]|0;m=Tv(h|0,i|0,f|0,((f|0)<0)<<31>>31|0)|0;l=L()|0;c[14768]=((l|0)<0|(l|0)==0&m>>>0<=n>>>0)&1}f=Wa[c[29340>>2]&127](f)|0;if(!f){p=0;return p|0}h=Wa[c[29352>>2]&127](f)|0;h=(c[14978]|0)+h|0;c[14978]=h;if(h>>>0>(c[14982]|0)>>>0)c[14982]=h;h=(c[14981]|0)+1|0;c[14981]=h;if(h>>>0>(c[14987]|0)>>>0)c[14987]=h}else{if(c[p+272>>2]|0){if(a[p+81>>0]|0){p=0;return p|0}}else{do if((e[p+276>>1]|0)>=8){h=p+300|0;f=c[h>>2]|0;if(f|0){c[h>>2]=c[f>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;o=25;break a}h=p+296|0;f=c[h>>2]|0;if(!f){f=p+292|0;break}else{c[h>>2]=c[f>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;o=25;break a}}else f=p+288|0;while(0);c[f>>2]=(c[f>>2]|0)+1}f=_d(p,8,0)|0;o=25}while(0);if((o|0)==25)if(!f){p=0;return p|0}n=f;m=n;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;n=n+4|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0}m=c[f>>2]|0;n=f+4|0;i=c[n>>2]|0;h=((i|0)<0)<<31>>31;l=Sv(i|0,h|0,-1,-1)|0;b:do if((l&i|0)==0&((L()|0)&h|0)==0){j=(i|0)==0;k=cw(i|0,h|0,4)|0;l=L()|0;k=j?8:k;l=j?0:l;c:do if(!m){if(c[p+272>>2]|0){if(a[p+81>>0]|0)break}else{do if(!(l>>>0>0|((l|0)==0?k>>>0>(e[p+276>>1]|0)>>>0:0))){j=p+300|0;h=c[j>>2]|0;if(h|0){c[j>>2]=c[h>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;o=45;break c}j=p+296|0;h=c[j>>2]|0;if(!h){h=p+292|0;break}else{c[j>>2]=c[h>>2];o=p+284|0;c[o>>2]=(c[o>>2]|0)+1;o=45;break c}}else h=p+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(p,k,l)|0;o=45}else{o=m;if((c[p+304>>2]|0)>>>0<=o>>>0?(c[p+308>>2]|0)>>>0>o>>>0:0){if(!(l>>>0>0|((l|0)==0?k>>>0>(e[p+276>>1]|0)>>>0:0))){h=m;o=48;break b}h=Zd(p,m,k,l)|0;o=45;break}h=Zd(p,m,k,l)|0;o=45}while(0);if((o|0)==45){if(h|0){o=48;break}i=c[n>>2]|0}c[f>>2]=m;h=m}else{h=m;o=48}while(0);if((o|0)==48){j=h+(i<<3)|0;m=j;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;j=j+4|0;a[j>>0]=0;a[j+1>>0]=0;a[j+2>>0]=0;a[j+3>>0]=0;j=(c[n>>2]|0)+1|0;c[n>>2]=j;c[f>>2]=h;if((i|0)<0)i=j;else{k=qj(p,g)|0;c[(c[f>>2]|0)+(i<<3)>>2]=k;if((k|0)==0|(d[b+200>>0]|0)<2){p=f;return p|0}j=c[b>>2]|0;d:do if(!j){if(!(c[7324]|0)){h=Wa[c[29340>>2]&127](16)|0;o=114;break}h=Wa[c[29356>>2]&127](16)|0;if((c[14985]|0)>>>0<16)c[14985]=16;j=59064;i=c[j>>2]|0;j=c[j+4>>2]|0;if((j|0)>0|(j|0)==0&i>>>0>0){p=c[14978]|0;n=Tv(i|0,j|0,h|0,((h|0)<0)<<31>>31|0)|0;m=L()|0;c[14768]=((m|0)<0|(m|0)==0&n>>>0<=p>>>0)&1}h=Wa[c[29340>>2]&127](h)|0;if(!h){p=f;return p|0}i=Wa[c[29352>>2]&127](h)|0;i=(c[14978]|0)+i|0;c[14978]=i;if(i>>>0>(c[14982]|0)>>>0)c[14982]=i;i=(c[14981]|0)+1|0;c[14981]=i;if(i>>>0>(c[14987]|0)>>>0)c[14987]=i}else{if(c[j+272>>2]|0){if(a[j+81>>0]|0){p=f;return p|0}}else{do if((e[j+276>>1]|0)>=16){i=j+300|0;h=c[i>>2]|0;if(h|0){c[i>>2]=c[h>>2];o=j+284|0;c[o>>2]=(c[o>>2]|0)+1;o=114;break d}i=j+296|0;h=c[i>>2]|0;if(!h){h=j+292|0;break}else{c[i>>2]=c[h>>2];o=j+284|0;c[o>>2]=(c[o>>2]|0)+1;o=114;break d}}else h=j+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1}h=_d(j,16,0)|0;o=114}while(0);if((o|0)==114)if(!h){p=f;return p|0}i=h+4|0;j=i+12|0;do{a[i>>0]=0;i=i+1|0}while((i|0)<(j|0));c[h>>2]=k;o=g;g=c[o+4>>2]|0;p=h+4|0;c[p>>2]=c[o>>2];c[p+4>>2]=g;p=b+272|0;c[h+12>>2]=c[p>>2];c[p>>2]=h;p=f;return p|0}}e:do if((i|0)>0){j=p+480|0;k=p+304|0;l=p+308|0;m=p+300|0;if(!p){i=0;while(1){h=c[h+(i<<3)>>2]|0;do if(h|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{g=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}while(0);i=i+1|0;h=c[f>>2]|0;if((i|0)>=(c[n>>2]|0))break e}}i=0;do{h=c[h+(i<<3)>>2]|0;do if(h|0){if(c[j>>2]|0){Xd(p,h);break}g=h;if((c[k>>2]|0)>>>0<=g>>>0?(c[l>>2]|0)>>>0>g>>>0:0){c[h>>2]=c[m>>2];c[m>>2]=h;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{g=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);i=i+1|0;h=c[f>>2]|0}while((i|0)<(c[n>>2]|0))}while(0);f:do if(h){do if(p|0){i=p+480|0;if(!(c[i>>2]|0)){j=h;if((c[p+304>>2]|0)>>>0>j>>>0)break;if((c[p+308>>2]|0)>>>0<=j>>>0)break;g=p+300|0;c[h>>2]=c[g>>2];c[g>>2]=h}else Xd(p,h);h=i;o=81;break f}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);o=79;break}else{o=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);o=79;break}}else o=79;while(0);if((o|0)==79)if(p){h=p+480|0;o=81}if((o|0)==81){if(c[h>>2]|0){Xd(p,f);p=0;return p|0}g=f;if((c[p+304>>2]|0)>>>0<=g>>>0?(c[p+308>>2]|0)>>>0>g>>>0:0){p=p+300|0;c[f>>2]=c[p>>2];c[p>>2]=f;p=0;return p|0}}if(!f){p=0;return p|0}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);p=0;return p|0}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);p=0;return p|0}return 0}function xj(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=Ra;Ra=Ra+176|0;r=w+96|0;o=w+88|0;n=w+80|0;q=w+136|0;p=w;s=w+104|0;u=f+8|0;i=c[u>>2]|0;a:do if(!i){m=c[f>>2]|0;if((c[f+116>>2]|0)==0?(b[m+76>>1]&8)==0:0)a[f+23>>0]=1;b:do if(c[m+272>>2]|0)if(!(a[m+81>>0]|0))l=15;else break a;else{do if((e[m+276>>1]|0)>=224){i=m+300|0;j=c[i>>2]|0;if(j|0){c[i>>2]=c[j>>2];k=m+284|0;c[k>>2]=(c[k>>2]|0)+1;k=j;break b}i=m+296|0;j=c[i>>2]|0;if(!j){i=m+292|0;break}else{c[i>>2]=c[j>>2];k=m+284|0;c[k>>2]=(c[k>>2]|0)+1;k=j;break b}}else i=m+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1;l=15}while(0);if((l|0)==15)k=_d(m,224,0)|0;if(k|0){i=k+104|0;j=i+120|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[k>>2]=m;i=m+4|0;j=c[i>>2]|0;if(j|0)c[j+4>>2]=k;c[k+8>>2]=j;c[k+4>>2]=0;c[i>>2]=k;c[k+20>>2]=381479589;c[k+12>>2]=f;c[u>>2]=k;Di(k,61,0,1,0)|0;t=k;l=20}}else{t=i;l=20}while(0);do if((l|0)==20){if(g){i=c[f>>2]|0;if(c[g+4>>2]|0){if(a[i+165>>0]|0){cd(f,39404,n);break}i=wk(i,g)|0;if((i|0)<0){c[o>>2]=g;cd(f,39421,o);break}}else i=d[i+164>>0]|0;if((i|0)>-1&(i|0)!=1)n=i;else break}else n=0;do if(h){i=s+8|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;c[i+16>>2]=0;c[i+20>>2]=0;i=p;j=i+80|0;do{c[i>>2]=0;i=i+4|0}while((i|0)<(j|0));c[s>>2]=f;c[s+4>>2]=p;j=s+24|0;b[j>>1]=0;c[q>>2]=f;c[q+4>>2]=125;c[q+8>>2]=126;c[q+12>>2]=0;c[q+24>>2]=s;k=h+24|0;i=f+208|0;p=(c[i>>2]|0)+(c[k>>2]|0)|0;c[i>>2]=p;i=c[(c[f>>2]|0)+120>>2]|0;if((i|0)<(p|0)){c[r>>2]=i;cd(f,41637,r);i=0;break}_j(q,h)|0;i=c[q>>2]|0;r=i+208|0;c[r>>2]=(c[r>>2]|0)-(c[k>>2]|0);r=h+4|0;c[r>>2]=c[r>>2]|b[j>>1]&-32752&65535;if((c[s+20>>2]|0)>0){i=0;break}if((c[i+36>>2]|0)<1){s=f+44|0;i=(c[s>>2]|0)+1|0;c[s>>2]=i;if((a[h>>0]|0)==-88){j=c[u>>2]|0;k=c[h+28>>2]|0;l=j+108|0;m=c[l>>2]|0;if((c[j+112>>2]|0)>(m|0)){c[l>>2]=m+1;v=c[j+104>>2]|0;a[v+(m*20|0)>>0]=78;b[v+(m*20|0)+2>>1]=0;c[v+(m*20|0)+4>>2]=k;c[v+(m*20|0)+8>>2]=i;c[v+(m*20|0)+12>>2]=0;c[v+(m*20|0)+16>>2]=0;a[v+(m*20|0)+1>>0]=0;break}else{Di(j,78,k,i,0)|0;break}}l=Jj(f,h,i)|0;if((l|0)!=(i|0)?(v=c[u>>2]|0,(v|0)!=0):0){j=v+108|0;k=c[j>>2]|0;if((c[v+112>>2]|0)>(k|0)){c[j>>2]=k+1;v=c[v+104>>2]|0;a[v+(k*20|0)>>0]=79;b[v+(k*20|0)+2>>1]=0;c[v+(k*20|0)+4>>2]=l;c[v+(k*20|0)+8>>2]=i;c[v+(k*20|0)+12>>2]=0;c[v+(k*20|0)+16>>2]=0;a[v+(k*20|0)+1>>0]=0;break}else{Di(v,79,l,i,0)|0;break}}}else i=0}else i=0;while(0);j=t+108|0;k=c[j>>2]|0;if((c[t+112>>2]|0)>(k|0)){c[j>>2]=k+1;v=c[t+104>>2]|0;a[v+(k*20|0)>>0]=8;b[v+(k*20|0)+2>>1]=0;c[v+(k*20|0)+4>>2]=n;c[v+(k*20|0)+8>>2]=i;c[v+(k*20|0)+12>>2]=0;c[v+(k*20|0)+16>>2]=0;a[v+(k*20|0)+1>>0]=0}else Di(t,8,n,i,0)|0;i=1<>2]=c[v>>2]|i;if((n|0)!=1?a[(c[(c[(c[t>>2]|0)+16>>2]|0)+(n<<4)+4>>2]|0)+9>>0]|0:0){v=t+156|0;c[v>>2]=c[v>>2]|i}}while(0);if(!h){Ra=w;return}ni(c[f>>2]|0,h);Ra=w;return} -function Vi(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=c[e+8>>2]|0;if(f|0){j=(a|0)==0;l=e+56|0;m=a+480|0;n=a+304|0;o=a+308|0;i=a+300|0;do{h=f;f=c[f+20>>2]|0;if(!(!j?(c[m>>2]|0)!=0:0))p=5;if((p|0)==5?(0,(c[l>>2]|0)==0):0)mi((c[h+24>>2]|0)+24|0,c[h>>2]|0,0)|0;g=c[h+36>>2]|0;if(g|0)ni(a,g);g=c[h+40>>2]|0;if(g|0)ri(a,g);g=c[h+16>>2]|0;do if(g|0){if(!j){if(c[m>>2]|0){Xd(a,g);break}p=g;if((c[n>>2]|0)>>>0<=p>>>0?(c[o>>2]|0)>>>0>p>>>0:0){c[g>>2]=c[i>>2];c[i>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{p=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}while(0);p=h+55|0;do if(((d[p>>0]|d[p+1>>0]<<8)&16)!=0?(k=c[h+32>>2]|0,(k|0)!=0):0){if(!j){if(c[m>>2]|0){Xd(a,k);p=33;break}p=k;if((c[n>>2]|0)>>>0<=p>>>0?(c[o>>2]|0)>>>0>p>>>0:0){c[k>>2]=c[i>>2];c[i>>2]=k;p=33;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](k);p=32;break}else{p=Wa[c[29352>>2]&127](k)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](k);p=32;break}}else p=32;while(0);if((p|0)==32)if(j)p=38;else p=33;do if((p|0)==33){p=0;if(c[m>>2]|0){Xd(a,h);break}g=h;if((c[n>>2]|0)>>>0<=g>>>0?(c[o>>2]|0)>>>0>g>>>0:0){c[h>>2]=c[i>>2];c[i>>2]=h}else p=38}while(0);do if((p|0)==38){p=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{g=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-g;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0)}while((f|0)!=0)}f=c[e+16>>2]|0;if(f|0){k=(a|0)==0;l=a+480|0;m=e+72|0;n=a+304|0;o=a+308|0;j=a+300|0;i=f;while(1){if(!(!k?(c[l>>2]|0)!=0:0)){h=i+16|0;f=c[h>>2]|0;g=i+12|0;if(!f){p=c[g>>2]|0;mi((c[m>>2]|0)+56|0,c[((p|0)==0?i:p)+8>>2]|0,p)|0}else c[f+12>>2]=c[g>>2];f=c[g>>2]|0;if(f|0)c[f+16>>2]=c[h>>2]}h=c[i+28>>2]|0;do if(h|0){g=c[h+28>>2]|0;f=c[g+16>>2]|0;if(f|0)ni(a,f);f=c[g+20>>2]|0;if(f|0)ri(a,f);f=c[g+8>>2]|0;if(f|0)pi(a,f,1);f=c[h+12>>2]|0;if(f|0)ni(a,f);if(!k){if(c[l>>2]|0){Xd(a,h);break}p=h;if((c[n>>2]|0)>>>0<=p>>>0?(c[o>>2]|0)>>>0>p>>>0:0){c[h>>2]=c[j>>2];c[j>>2]=h;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);break}else{p=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);break}}while(0);h=c[i+32>>2]|0;a:do if(h){g=c[h+28>>2]|0;f=c[g+16>>2]|0;if(f|0)ni(a,f);f=c[g+20>>2]|0;if(f|0)ri(a,f);f=c[g+8>>2]|0;if(f|0)pi(a,f,1);f=c[h+12>>2]|0;if(f|0)ni(a,f);do if(!k){if(!(c[l>>2]|0)){f=h;if((c[n>>2]|0)>>>0>f>>>0)break;if((c[o>>2]|0)>>>0<=f>>>0)break;c[h>>2]=c[j>>2];c[j>>2]=h}else Xd(a,h);f=c[i+4>>2]|0;p=89;break a}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](h);p=88;break}else{p=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);p=88;break}}else p=88;while(0);if((p|0)==88){f=c[i+4>>2]|0;if(k)p=94;else p=89}do if((p|0)==89){p=0;if(c[l>>2]|0){Xd(a,i);break}h=i;if((c[n>>2]|0)>>>0<=h>>>0?(c[o>>2]|0)>>>0>h>>>0:0){c[i>>2]=c[j>>2];c[j>>2]=i}else p=94}while(0);do if((p|0)==94){p=0;if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{h=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-h;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}}while(0);if(!f)break;else i=f}}m=e+4|0;g=c[m>>2]|0;do if(g|0){n=e+42|0;b:do if((b[n>>1]|0)>0){i=a+480|0;j=a+304|0;k=a+308|0;l=a+300|0;if(!a){h=0;while(1){f=c[g>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);f=c[g+4>>2]|0;if(f|0)ni(0,f);f=c[g+8>>2]|0;do if(f|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}while(0);h=h+1|0;if((h|0)>=(b[n>>1]|0))break b;else g=g+16|0}}h=0;while(1){f=c[g>>2]|0;do if(f|0){if(c[i>>2]|0){Xd(a,f);break}o=f;if((c[j>>2]|0)>>>0<=o>>>0?(c[k>>2]|0)>>>0>o>>>0:0){c[f>>2]=c[l>>2];c[l>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[g+4>>2]|0;if(f|0)ni(a,f);f=c[g+8>>2]|0;do if(f|0){if(c[i>>2]|0){Xd(a,f);break}o=f;if((c[j>>2]|0)>>>0<=o>>>0?(c[k>>2]|0)>>>0>o>>>0:0){c[f>>2]=c[l>>2];c[l>>2]=f;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);h=h+1|0;if((h|0)>=(b[n>>1]|0))break;else g=g+16|0}}while(0);f=c[m>>2]|0;if(f|0){if(a|0){if(c[a+480>>2]|0){Xd(a,f);break}o=f;if((c[a+304>>2]|0)>>>0<=o>>>0?(c[a+308>>2]|0)>>>0>o>>>0:0){o=a+300|0;c[f>>2]=c[o>>2];c[o>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}}while(0);f=c[e>>2]|0;do if(f|0){if(a|0){if(c[a+480>>2]|0){Xd(a,f);break}o=f;if((c[a+304>>2]|0)>>>0<=o>>>0?(c[a+308>>2]|0)>>>0>o>>>0:0){o=a+300|0;c[f>>2]=c[o>>2];c[o>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[e+20>>2]|0;do if(f|0){if(a|0){if(c[a+480>>2]|0){Xd(a,f);break}o=f;if((c[a+304>>2]|0)>>>0<=o>>>0?(c[a+308>>2]|0)>>>0>o>>>0:0){o=a+300|0;c[f>>2]=c[o>>2];c[o>>2]=f;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](f);break}else{o=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);break}}while(0);f=c[e+12>>2]|0;if(f|0)pi(a,f,1);f=c[e+24>>2]|0;if(f|0)ri(a,f);n=(a|0)==0;if(!(!n?(c[a+480>>2]|0)!=0:0))p=171;if((p|0)==171?(r=e+64|0,q=c[r>>2]|0,c[r>>2]=0,q|0):0){f=q;do{h=c[f>>2]|0;i=f+24|0;g=f;f=c[i>>2]|0;if(!h){c[r>>2]=g;c[i>>2]=0}else{q=h+360|0;c[i>>2]=c[q>>2];c[q>>2]=g}}while((f|0)!=0)}l=e+60|0;c:do if(c[l>>2]|0){m=e+56|0;d:do if((c[m>>2]|0)>0){h=a+480|0;i=a+304|0;j=a+308|0;k=a+300|0;if(n){f=0;while(1){do if((f|0)!=1?(s=c[(c[l>>2]|0)+(f<<2)>>2]|0,s|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](s);break}else{t=Wa[c[29352>>2]&127](s)|0;c[14978]=(c[14978]|0)-t;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](s);break}while(0);f=f+1|0;if((f|0)>=(c[m>>2]|0))break d}}f=0;do{e:do if((f|0)!=1?(t=c[(c[l>>2]|0)+(f<<2)>>2]|0,t|0):0){if(c[h>>2]|0){Xd(a,t);break}g=t;do if((c[i>>2]|0)>>>0<=g>>>0){if((c[j>>2]|0)>>>0<=g>>>0)break;c[t>>2]=c[k>>2];c[k>>2]=t;break e}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](t);break}else{s=Wa[c[29352>>2]&127](t)|0;c[14978]=(c[14978]|0)-s;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](t);break}}while(0);f=f+1|0}while((f|0)<(c[m>>2]|0))}while(0);f=c[l>>2]|0;if(f){do if(!n){if(!(c[a+480>>2]|0)){g=f;if((c[a+304>>2]|0)>>>0>g>>>0)break;if((c[a+308>>2]|0)>>>0<=g>>>0)break;t=a+300|0;c[f>>2]=c[t>>2];c[t>>2]=f}else Xd(a,f);f=e;p=211;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](f);p=210;break}else{p=Wa[c[29352>>2]&127](f)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](f);p=210;break}}else p=210}else p=210;while(0);if((p|0)==210)if(!n){f=e;p=211}if((p|0)==211){if(c[a+480>>2]|0){Xd(a,f);return}t=e;if((c[a+304>>2]|0)>>>0<=t>>>0?(c[a+308>>2]|0)>>>0>t>>>0:0){a=a+300|0;c[e>>2]=c[a>>2];c[a>>2]=e;return}else e=f}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);return}else{a=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-a;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);return}}function Wi(d,f){d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=c[d>>2]|0;r=d+144|0;h=b[r>>1]|0;do if(h<<16>>16){q=d+116|0;g=c[q>>2]|0;a:do if(g|0){p=g+(((h&65535)<<1)*40|0)|0;k=c[g+32>>2]|0;l=k+480|0;h=(k|0)==0;m=k+304|0;n=k+308|0;o=k+300|0;if(c[l>>2]|0){if(h)while(1){do if(c[g+24>>2]|0?(i=c[g+20>>2]|0,i|0):0)if(!(c[7324]|0)){ab[c[29344>>2]&127](i);break}else{o=Wa[c[29352>>2]&127](i)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](i);break}while(0);g=g+40|0;if(g>>>0>=p>>>0)break a}while(1){do if(c[g+24>>2]|0?(j=c[g+20>>2]|0,j|0):0){if(c[l>>2]|0){Xd(k,j);break}i=j;if((c[m>>2]|0)>>>0<=i>>>0?(c[n>>2]|0)>>>0>i>>>0:0){c[j>>2]=c[o>>2];c[o>>2]=j;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{i=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-i;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}while(0);g=g+40|0;if(g>>>0>=p>>>0)break a}}if(h)while(1){h=g+8|0;if(!(b[h>>1]&9216)){i=g+24|0;if(c[i>>2]|0){j=c[g+20>>2]|0;do if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{o=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-o;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}while(0);c[i>>2]=0}}else Cg(g);b[h>>1]=128;g=g+40|0;if(g>>>0>=p>>>0)break a}do{h=g+8|0;if(!(b[h>>1]&9216)){i=g+24|0;if(c[i>>2]|0){j=c[g+20>>2]|0;do if(!(c[l>>2]|0)){u=j;if((c[m>>2]|0)>>>0<=u>>>0?(c[n>>2]|0)>>>0>u>>>0:0){c[j>>2]=c[o>>2];c[o>>2]=j;break}if(j|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{u=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}else Xd(k,j);while(0);c[i>>2]=0}}else Cg(g);b[h>>1]=128;g=g+40|0}while(g>>>0

        >>0)}while(0);g=c[q>>2]|0;if(g|0){if(t|0){if(c[t+480>>2]|0){Xd(t,g);break}u=g;if((c[t+304>>2]|0)>>>0<=u>>>0?(c[t+308>>2]|0)>>>0>u>>>0:0){u=t+300|0;c[g>>2]=c[u>>2];c[u>>2]=g;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](g);break}else{u=Wa[c[29352>>2]&127](g)|0;c[14978]=(c[14978]|0)-u;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](g);break}}}while(0);b[r>>1]=f;i=f*80|0;b:do if(c[t+272>>2]|0)if(!(a[t+81>>0]|0))s=71;else{c[d+116>>2]=0;return}else{do if(!(0<0|(0==0?(e[t+276>>1]|0)>>>0>>0:0))){h=t+300|0;g=c[h>>2]|0;if(g|0){c[h>>2]=c[g>>2];u=t+284|0;c[u>>2]=(c[u>>2]|0)+1;break b}h=t+296|0;g=c[h>>2]|0;if(!g){g=t+292|0;break}else{c[h>>2]=c[g>>2];u=t+284|0;c[u>>2]=(c[u>>2]|0)+1;break b}}else g=t+288|0;while(0);c[g>>2]=(c[g>>2]|0)+1;s=71}while(0);if((s|0)==71)g=_d(t,i,0)|0;c[d+116>>2]=g;if(!((f|0)>0&(g|0)!=0))return;h=f<<1;while(1){c[g+32>>2]=t;b[g+8>>1]=1;c[g+24>>2]=0;if((h|0)>1){h=h+-1|0;g=g+40|0}else break}return}function Xi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!b)return;i=(a|0)==0;j=a+480|0;k=a+304|0;l=a+308|0;m=a+300|0;do{h=b;b=c[b+36>>2]|0;d=c[h+16>>2]|0;if(d|0)ni(a,d);d=c[h+20>>2]|0;if(d|0)ri(a,d);d=c[h+8>>2]|0;if(d|0)pi(a,d,1);d=c[h+24>>2]|0;do if(d|0){g=d+4|0;e=c[d>>2]|0;a:do if((c[g>>2]|0)>0){if(i){f=0;while(1){e=c[e+(f<<3)>>2]|0;do if(e|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{n=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}while(0);f=f+1|0;e=c[d>>2]|0;if((f|0)>=(c[g>>2]|0))break a}}f=0;do{e=c[e+(f<<3)>>2]|0;do if(e|0){if(c[j>>2]|0){Xd(a,e);break}n=e;if((c[k>>2]|0)>>>0<=n>>>0?(c[l>>2]|0)>>>0>n>>>0:0){c[e>>2]=c[m>>2];c[m>>2]=e;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{n=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);f=f+1|0;e=c[d>>2]|0}while((f|0)<(c[g>>2]|0))}while(0);b:do if(e){do if(!i){if(!(c[j>>2]|0)){f=e;if((c[k>>2]|0)>>>0>f>>>0)break;if((c[l>>2]|0)>>>0<=f>>>0)break;c[e>>2]=c[m>>2];c[m>>2]=e}else Xd(a,e);e=41;break b}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](e);e=40;break}else{n=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);e=40;break}}else e=40;while(0);if((e|0)==40){e=0;if(!i)e=41}if((e|0)==41){if(c[j>>2]|0){Xd(a,d);break}n=d;if((c[k>>2]|0)>>>0<=n>>>0?(c[l>>2]|0)>>>0>n>>>0:0){c[d>>2]=c[m>>2];c[m>>2]=d;break}}if(d|0)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{n=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}}while(0);e=c[h+28>>2]|0;do if(e|0){d=c[e>>2]|0;if(d|0)ri(a,d);d=c[e+4>>2]|0;if(d|0)ni(a,d);d=c[e+8>>2]|0;if(d|0)ri(a,d);d=c[e+12>>2]|0;if(d|0)ni(a,d);if(!i){if(c[j>>2]|0){Xd(a,e);break}n=e;if((c[k>>2]|0)>>>0<=n>>>0?(c[l>>2]|0)>>>0>n>>>0:0){c[e>>2]=c[m>>2];c[m>>2]=e;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](e);break}else{n=Wa[c[29352>>2]&127](e)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](e);break}}while(0);d=c[h+32>>2]|0;c:do if(d){do if(!i){if(!(c[j>>2]|0)){e=d;if((c[k>>2]|0)>>>0>e>>>0)break;if((c[l>>2]|0)>>>0<=e>>>0)break;c[d>>2]=c[m>>2];c[m>>2]=d}else Xd(a,d);d=h;e=80;break c}while(0);if(!(c[7324]|0)){ab[c[29344>>2]&127](d);e=79;break}else{e=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-e;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);e=79;break}}else e=79;while(0);if((e|0)==79)if(i){d=h;e=85}else{d=h;e=80}do if((e|0)==80){e=0;if(c[j>>2]|0){Xd(a,d);break}n=d;if((c[k>>2]|0)>>>0<=n>>>0?(c[l>>2]|0)>>>0>n>>>0:0){c[d>>2]=c[m>>2];c[m>>2]=d}else e=85}while(0);do if((e|0)==85)if(!(c[7324]|0)){ab[c[29344>>2]&127](d);break}else{n=Wa[c[29352>>2]&127](d)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](d);break}while(0)}while((b|0)!=0);return}function Yi(e,f){e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=c[e>>2]|0;a:do if(f){b:while(1){g=a[f>>0]|0;j=c[f+4>>2]|0;if(j&512|0){f=0;break a}if(g<<24>>24==-88)g=d[f+38>>0]|0;else g=g&255;switch((g&255)<<24>>24){case 106:{m=11;break b}case 77:case -94:case -92:{h=c[f+44>>2]|0;if(h|0){m=8;break b}if((g|0)==106){m=11;break b}else m=12;break}case 36:case -90:{f=c[f+12>>2]|0;break}default:m=12}c:do if((m|0)==12){m=0;if(!(j&256)){f=0;break a}g=c[f+12>>2]|0;if(g|0?c[g+4>>2]&256|0:0){f=g;break}i=c[f+16>>2]|0;h=c[f+20>>2]|0;if((j&2048|0)==0&(h|0)!=0?(k=c[h>>2]|0,(k|0)>0):0){g=0;while(1){f=c[h+4+(g*20|0)>>2]|0;g=g+1|0;if(c[f+4>>2]&256|0)break c;if((g|0)>=(k|0)){f=i;break}}}else f=i}while(0);if(!f){f=0;break a}}if((m|0)==8){f=b[f+32>>1]|0;if(f<<16>>16<=-1){f=0;break}f=Zi(l,a[l+78>>0]|0,c[(c[h+4>>2]|0)+(f<<16>>16<<4)+8>>2]|0,0)|0}else if((m|0)==11)f=_i(e,a[l+78>>0]|0,0,c[f+8>>2]|0)|0;if(f){if((c[f+12>>2]|0)==0?(_i(e,a[(c[e>>2]|0)+78>>0]|0,f,c[f>>2]|0)|0)==0:0){e=0;return e|0}}else f=0}else f=0;while(0);e=f;return e|0}function Zi(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!g){g=c[b+8>>2]|0;p=(g|0)==0;b=f&255;b=b+-1|0;b=g+(b*20|0)|0;b=p?0:b;return b|0}p=b+380|0;l=c[b+392>>2]|0;if(!l){j=b+384|0;i=b+388|0}else{j=a[g>>0]|0;if(!(j<<24>>24))i=0;else{i=0;k=g;do{k=k+1|0;i=G(i+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}i=(i>>>0)%((c[p>>2]|0)>>>0)|0;j=l+(i<<3)|0;i=l+(i<<3)+4|0}j=c[j>>2]|0;a:do if(!j)i=59292;else{n=d[208+(d[g>>0]|0)>>0]|0;while(1){i=c[i>>2]|0;j=j+-1|0;l=c[i+12>>2]|0;m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)-n|0;if(!(m<<24>>24==0|(k|0)!=0)){m=g;do{l=l+1|0;m=m+1|0;q=a[l>>0]|0;k=(d[208+(q&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(q<<24>>24==0|(k|0)!=0))}if(!k)break a;if(!j){i=59292;break}}}while(0);i=c[i+8>>2]|0;if(!((h|0)!=0&(i|0)==0)){p=i;b=(p|0)==0;q=f&255;q=q+-1|0;q=p+(q*20|0)|0;q=b?0:q;return q|0}l=(Eu(g)|0)&1073741823;m=l+61|0;b:do if(!b){if(!(c[7324]|0)){i=Wa[c[29340>>2]&127](m)|0;o=39;break}i=Wa[c[29356>>2]&127](m)|0;if((c[14985]|0)>>>0>>0)c[14985]=m;k=59064;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){q=c[14978]|0;h=Tv(j|0,k|0,i|0,((i|0)<0)<<31>>31|0)|0;n=L()|0;c[14768]=((n|0)<0|(n|0)==0&h>>>0<=q>>>0)&1}i=Wa[c[29340>>2]&127](i)|0;if(!i)return 0;j=Wa[c[29352>>2]&127](i)|0;j=(c[14978]|0)+j|0;c[14978]=j;if(j>>>0>(c[14982]|0)>>>0)c[14982]=j;j=(c[14981]|0)+1|0;c[14981]=j;if(j>>>0>(c[14987]|0)>>>0)c[14987]=j}else{if(c[b+272>>2]|0){if(a[b+81>>0]|0)return 0}else{do if(!(0<0|(0==0?(e[b+276>>1]|0)>>>0>>0:0))){j=b+300|0;i=c[j>>2]|0;if(i|0){c[j>>2]=c[i>>2];o=b+284|0;c[o>>2]=(c[o>>2]|0)+1;o=39;break b}j=b+296|0;i=c[j>>2]|0;if(!i){i=b+292|0;break}else{c[j>>2]=c[i>>2];o=b+284|0;c[o>>2]=(c[o>>2]|0)+1;o=39;break b}}else i=b+288|0;while(0);c[i>>2]=(c[i>>2]|0)+1}i=_d(b,m,0)|0;o=39}while(0);if((o|0)==39)if(!i)return 0;gw(i|0,0,m|0)|0;j=i+60|0;c[i>>2]=j;a[i+4>>0]=1;c[i+20>>2]=j;a[i+24>>0]=2;c[i+40>>2]=j;a[i+44>>0]=3;ew(j|0,g|0,l+1|0)|0;j=mi(p,j,i)|0;if(!j){p=i;b=(p|0)==0;q=f&255;q=q+-1|0;q=p+(q*20|0)|0;q=b?0:q;return q|0}i=b+81|0;if((a[i>>0]|0)==0?(a[b+82>>0]|0)==0:0){a[i>>0]=1;if((c[b+180>>2]|0)>0)c[b+264>>2]=1;i=b+272|0;c[i>>2]=(c[i>>2]|0)+1;i=c[b+236>>2]|0;if(i|0)c[i+12>>2]=7}if(c[b+480>>2]|0){Xd(b,j);return 0}q=j;if((c[b+304>>2]|0)>>>0<=q>>>0?(c[b+308>>2]|0)>>>0>q>>>0:0){q=b+300|0;c[j>>2]=c[q>>2];c[q>>2]=j;return 0}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);return 0}else{q=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-q;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);return 0}return 0}function _i(f,g,h,i){f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=Ra;Ra=Ra+16|0;r=s;q=c[f>>2]|0;if(!h){h=Zi(q,g,i,0)|0;if(h|0){j=h;n=3}}else{j=h;n=3}if((n|0)==3?c[j+12>>2]|0:0){r=j;Ra=s;return r|0}k=g&255;l=q+248|0;a:do if(c[l>>2]|0){if(i|0){m=(Eu(i)|0)+1|0;b:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))n=16;else break a;else{do if(!(0<0|(0==0?(e[q+276>>1]|0)>>>0>>0:0))){j=q+300|0;h=c[j>>2]|0;if(h|0){c[j>>2]=c[h>>2];j=q+284|0;c[j>>2]=(c[j>>2]|0)+1;break b}j=q+296|0;h=c[j>>2]|0;if(!h){h=q+292|0;break}else{c[j>>2]=c[h>>2];j=q+284|0;c[j>>2]=(c[j>>2]|0)+1;break b}}else h=q+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;n=16}while(0);if((n|0)==16)h=_d(q,m,0)|0;if(h|0){ew(h|0,i|0,m|0)|0;db[c[l>>2]&127](c[q+256>>2]|0,q,k,h);if(c[q+480>>2]|0){Xd(q,h);n=26;break}n=h;if((c[q+304>>2]|0)>>>0<=n>>>0?(c[q+308>>2]|0)>>>0>n>>>0:0){n=q+300|0;c[h>>2]=c[n>>2];c[n>>2]=h;n=26;break}if(!(c[7324]|0)){ab[c[29344>>2]&127](h);n=26;break}else{n=Wa[c[29352>>2]&127](h)|0;c[14978]=(c[14978]|0)-n;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](h);n=26;break}}}}else n=26;while(0);c:do if((n|0)==26?(p=q+252|0,c[p>>2]|0):0){d:do if(c[q+272>>2]|0)if(!(a[q+81>>0]|0))n=37;else break c;else{do if((e[q+276>>1]|0)>=40){h=q+300|0;j=c[h>>2]|0;if(j|0){c[h>>2]=c[j>>2];m=q+284|0;c[m>>2]=(c[m>>2]|0)+1;break d}h=q+296|0;j=c[h>>2]|0;if(!j){h=q+292|0;break}else{c[h>>2]=c[j>>2];m=q+284|0;c[m>>2]=(c[m>>2]|0)+1;break d}}else h=q+288|0;while(0);c[h>>2]=(c[h>>2]|0)+1;n=37}while(0);if((n|0)==37)j=_d(q,40,0)|0;if(j|0){h=j;k=h+40|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(k|0));h=j+8|0;b[h>>1]=1;k=j+32|0;c[k>>2]=q;yc(j,i,-1,1,0)|0;l=b[h>>1]|0;if((l&514)==514?(a[j+10>>0]|0)==2:0){o=c[j+16>>2]|0;n=44}else n=42;if((n|0)==42?(l&1)==0:0){o=Gg(j,2)|0;n=44}if((n|0)==44?o|0:0)db[c[p>>2]&127](c[q+256>>2]|0,q,d[q+78>>0]|0,o);if(!((b[h>>1]&9216)==0?!(c[j+24>>2]|0):0))Cg(j);h=c[k>>2]|0;if(h|0){if(c[h+480>>2]|0){Xd(h,j);break}p=j;if((c[h+304>>2]|0)>>>0<=p>>>0?(c[h+308>>2]|0)>>>0>p>>>0:0){p=h+300|0;c[j>>2]=c[p>>2];c[p>>2]=j;break}}if(!(c[7324]|0)){ab[c[29344>>2]&127](j);break}else{p=Wa[c[29352>>2]&127](j)|0;c[14978]=(c[14978]|0)-p;c[14981]=(c[14981]|0)+-1;ab[c[29344>>2]&127](j);break}}}while(0);g=Zi(q,g,i,0)|0;do if(g|0){if(c[g+12>>2]|0){r=g;Ra=s;return r|0}p=c[g>>2]|0;o=(p|0)==0;if(o)h=q+8|0;else{l=c[q+392>>2]|0;if(!l){j=q+384|0;h=q+388|0}else{j=a[p>>0]|0;if(!(j<<24>>24))h=0;else{h=0;k=p;do{k=k+1|0;h=G(h+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}h=(h>>>0)%((c[q+380>>2]|0)>>>0)|0;j=l+(h<<3)|0;h=l+(h<<3)+4|0}j=c[j>>2]|0;e:do if(!j)h=59292;else{n=d[208+(d[p>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;j=j+-1|0;l=c[h+12>>2]|0;m=a[l>>0]|0;k=(d[208+(m&255)>>0]|0)-n|0;if(!(m<<24>>24==0|(k|0)!=0)){m=p;do{l=l+1|0;m=m+1|0;t=a[l>>0]|0;k=(d[208+(t&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(k|0)!=0))}if(!k)break e;if(!j){h=59292;break}}}while(0);h=h+8|0}h=c[h>>2]|0;h=(h|0)==0?0:h+40|0;if(!(c[h+12>>2]|0)){if(o)h=q+8|0;else{l=c[q+392>>2]|0;if(!l){j=q+384|0;h=q+388|0}else{j=a[p>>0]|0;if(!(j<<24>>24))h=0;else{h=0;k=p;do{k=k+1|0;h=G(h+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}h=(h>>>0)%((c[q+380>>2]|0)>>>0)|0;j=l+(h<<3)|0;h=l+(h<<3)+4|0}j=c[j>>2]|0;f:do if(!j)h=59292;else{n=d[208+(d[p>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;j=j+-1|0;l=c[h+12>>2]|0;t=a[l>>0]|0;k=(d[208+(t&255)>>0]|0)-n|0;if(!(t<<24>>24==0|(k|0)!=0)){m=p;do{l=l+1|0;m=m+1|0;t=a[l>>0]|0;k=(d[208+(t&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(k|0)!=0))}if(!k)break f;if(!j){h=59292;break}}}while(0);h=h+8|0}h=c[h>>2]|0;h=(h|0)==0?0:h+20|0;if(!(c[h+12>>2]|0)){if(o)h=q+8|0;else{l=c[q+392>>2]|0;if(!l){j=q+384|0;h=q+388|0}else{j=a[p>>0]|0;if(!(j<<24>>24))h=0;else{h=0;k=p;do{k=k+1|0;h=G(h+(d[208+(j&255)>>0]|0)|0,-1640531535)|0;j=a[k>>0]|0}while(j<<24>>24!=0)}h=(h>>>0)%((c[q+380>>2]|0)>>>0)|0;j=l+(h<<3)|0;h=l+(h<<3)+4|0}j=c[j>>2]|0;g:do if(!j)h=59292;else{n=d[208+(d[p>>0]|0)>>0]|0;while(1){h=c[h>>2]|0;j=j+-1|0;l=c[h+12>>2]|0;t=a[l>>0]|0;k=(d[208+(t&255)>>0]|0)-n|0;if(!(t<<24>>24==0|(k|0)!=0)){m=p;do{l=l+1|0;m=m+1|0;t=a[l>>0]|0;k=(d[208+(t&255)>>0]|0)-(d[208+(d[m>>0]|0)>>0]|0)|0}while(!(t<<24>>24==0|(k|0)!=0))}if(!k)break g;if(!j){h=59292;break}}}while(0);h=h+8|0}h=c[h>>2]|0;if(!(c[h+12>>2]|0))break}};c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=0;t=g;Ra=s;return t|0}while(0);c[r>>2]=i;cd(f,38397,r);c[f+12>>2]=257;t=0;Ra=s;return t|0} - -// EMSCRIPTEN_END_FUNCS -var Va=[GK,jw,kw,lw,mw,nw,ow,pw,qw,rw,sw,tw,uw,vw,ww,xw,yw,zw,Aw,Bw,Cw,Dw,Ew,Fw,Gw,Hw,Iw,Jw,Kw,Lw,Mw,Nw,Ow,Pw,Qw,Rw,Sw,Tw,Uw,Vw,Ww,Xw,Yw,Zw,_w,$w,ax,bx,cx,dx,ex,fx,gx,hx,ix,jx,kx,lx,mx,nx,ox,px,qx,rx,sx,Dv,we,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK,GK];var Wa=[HK,ux,vx,wx,xx,yx,zx,Ax,Bx,Cx,Dx,Ex,Fx,Gx,Hx,Ix,Jx,Kx,Lx,Mx,Nx,Ox,Px,Qx,Rx,Sx,Tx,Ux,Vx,Wx,Xx,Yx,Zx,_x,$x,ay,by,cy,dy,ey,fy,gy,hy,iy,jy,ky,ly,my,ny,oy,py,qy,ry,sy,ty,uy,vy,wy,xy,yy,zy,Ay,By,Cy,Dy,be,le,me,Nu,Bv,Ev,Be,Fe,Ze,Ki,Mi,Oi,Pi,ep,hp,ip,jp,lp,pp,Dq,Eq,Gq,Iq,Jq,Nq,Oq,Pq,Qq,Wq,Hp,Jp,Op,Qp,Sp,Tp,mq,oq,rq,tq,ks,ms,os,ps,Ds,Es,Gs,Is,Js,Ns,Os,Rs,rb,Re,HK,HK,HK,HK,HK,HK,HK,HK,HK,HK];var Xa=[IK,Fy,Gy,Hy,Iy,Jy,Ky,Ly,My,Ny,Oy,Py,Qy,Ry,Sy,Ty,Uy,Vy,Wy,Xy,Yy,Zy,_y,$y,az,bz,cz,dz,ez,fz,gz,hz,iz,jz,kz,lz,mz,nz,oz,pz,qz,rz,sz,tz,uz,vz,wz,xz,yz,zz,Az,Bz,Cz,Dz,Ez,Fz,Gz,Hz,Iz,Jz,Kz,Lz,Mz,Nz,Oz,Ob,Pb,Rb,Tb,Ub,ae,Je,Ke,fe,ge,he,ie,je,qe,Qu,Zu,Pu,Xu,yv,Kv,ve,fv,gv,Ou,Ce,De,Ee,Ge,He,Ie,bf,cf,Ji,Li,Ri,gp,Cq,Fq,Lq,Sq,Tq,Uq,Vq,Np,Pp,Vp,js,ls,rs,Cs,Fs,Ls,Ps,Qs,Ue,If,Kf,Yg,Zg,$k,Dk,Ek,Yj,Zj,vl,wl,Gl,Yk,Cm,Dm,Am,Vm,kk,lk,Jk,Hk,Mk,Nk,Ok,_k,xl,Sl,nm,fm,Bm,jo,ko,so,to,_p,$p,Zp,iq,hq,yt,zt,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK,IK];var Ya=[JK,Qz,Rz,Sz,Tz,Uz,Vz,Wz,Xz,Yz,Zz,_z,$z,aA,bA,cA,dA,eA,fA,gA,hA,iA,jA,kA,lA,mA,nA,oA,pA,qA,rA,sA,tA,uA,vA,wA,xA,yA,zA,AA,BA,CA,DA,EA,FA,GA,HA,IA,JA,KA,LA,MA,NA,OA,PA,QA,RA,SA,TA,UA,VA,WA,XA,YA,ZA,Kb,Nb,Qb,Sb,ee,ke,ue,Iu,$u,_u,Cv,Wu,af,Qi,np,qp,Kq,Gp,Up,lq,qq,qs,Ks,Ch,Dh,Eh,Dd,Yr,Xr,as,bs,gs,es,fs,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK,JK];var Za=[KK,$A,aB,bB,cB,dB,eB,fB,gB,hB,iB,jB,kB,lB,mB,nB,oB,pB,qB,rB,sB,tB,uB,vB,wB,xB,yB,zB,AB,BB,CB,DB,EB,FB,GB,HB,IB,JB,KB,LB,MB,NB,OB,PB,QB,RB,SB,TB,UB,VB,WB,XB,YB,ZB,_B,$B,aC,bC,cC,dC,eC,fC,gC,hC,iC,Lb,Mb,oe,se,Mq,Ip,nq,sq,Ms,qf,pf,Ld,fh,ki,aq,bq,kd,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK,KK];var _a=[LK,kC,lC,mC,nC,oC,pC,qC,rC,sC,tC,uC,vC,wC,xC,yC,zC,AC,BC,CC,DC,EC,FC,GC,HC,IC,JC,KC,LC,MC,NC,OC,PC,QC,RC,SC,TC,UC,VC,WC,XC,YC,ZC,_C,$C,aD,bD,cD,dD,eD,fD,gD,hD,iD,jD,kD,lD,mD,nD,oD,pD,qD,rD,sD,tD,Jb,ce,de,ne,re,_e,$e,Ni,Hq,Rq,Rp,ns,Hs,Hl,Dp,gt,ht,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK,LK];var $a=[MK,vD,wD,xD,yD,zD,AD,BD,CD,DD,ED,FD,GD,HD,ID,JD,KD,LD,MD,ND,OD,PD,QD,RD,SD,TD,UD,VD,WD,XD,YD,ZD,_D,$D,aE,bE,cE,dE,eE,fE,gE,hE,iE,jE,kE,lE,mE,nE,oE,pE,qE,rE,sE,tE,uE,vE,wE,xE,yE,zE,AE,BE,CE,DE,EE,Lv,Ii,Aq,Bq,Kp,Mp,pq,uq,is,As,Bs,Xh,Yh,Wh,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK,MK];var ab=[NK,GE,HE,IE,JE,KE,LE,ME,NE,OE,PE,QE,RE,SE,TE,UE,VE,WE,XE,YE,ZE,_E,$E,aF,bF,cF,dF,eF,fF,gF,hF,iF,jF,kF,lF,mF,nF,oF,pF,qF,rF,sF,tF,uF,vF,wF,xF,yF,zF,AF,BF,CF,DF,EF,FF,GF,HF,IF,JF,KF,LF,MF,NF,OF,PF,pe,wn,xn,Wn,Yn,Zn,$n,co,eo,vo,xo,zo,Bo,Eo,Ho,Ko,Lo,Oo,Po,Ro,fp,kp,mp,up,vp,qb,Fp,Qe,ih,vi,dh,ln,Qg,cs,mt,nt,pt,qt,rt,st,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK,NK];var bb=[OK,RF,SF,TF,UF,VF,WF,XF,YF,ZF,_F,$F,aG,bG,cG,dG,eG,fG,gG,hG,iG,jG,kG,lG,mG,nG,oG,pG,qG,rG,sG,tG,uG,vG,wG,xG,yG,zG,AG,BG,CG,DG,EG,FG,GG,HG,IG,JG,KG,LG,MG,NG,OG,PG,QG,RG,SG,TG,UG,VG,WG,XG,YG,ZG,_G,op,tp,Em,Pk,Zk,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK];var cb=[PK,aH,bH,cH,dH,eH,fH,gH,hH,iH,jH,kH,lH,mH,nH,oH,pH,qH,rH,sH,tH,uH,vH,wH,xH,yH,zH,AH,BH,CH,DH,EH,FH,GH,HH,IH,JH,KH,LH,MH,NH,OH,PH,QH,RH,SH,TH,UH,VH,WH,XH,YH,ZH,_H,$H,aI,bI,cI,dI,eI,fI,gI,hI,iI,jI,bn,fn,kn,mn,nn,qn,rn,sn,tn,un,vn,yn,zn,An,Bn,Cn,Dn,En,Fn,Gn,Hn,In,Jn,Kn,Ln,Mn,Nn,On,Pn,Qn,Rn,Sn,Tn,Un,Vn,Xn,_n,ao,bo,fo,$m,go,ho,io,uo,xm,wo,yo,Ao,Co,Do,Fo,Go,Io,Jo,Mo,No,Qo,So,To,Uo,Vo,Wo,Xo,Yo,Zo,rp,Tr,Ur,Vr,Wr,At,Bt,Ct,Dt,Et,Ft,Gt,Ht,It,Jt,Kt,Lt,Mt,Nt,Ot,Pt,Qt,Rt,St,Tt,Ut,Vt,Wt,Xt,Yt,Zt,_t,$t,au,bu,cu,du,eu,fu,gu,hu,iu,ju,Kd,zq,ss,ts,us,Mf,Jf,Lf,lt,ot,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK,PK];var db=[QK,lI,mI,nI,oI,pI,qI,rI,sI,tI,uI,vI,wI,xI,yI,zI,AI,BI,CI,DI,EI,FI,GI,HI,II,JI,KI,LI,MI,NI,OI,PI,QI,RI,SI,TI,UI,VI,WI,XI,YI,ZI,_I,$I,aJ,bJ,cJ,dJ,eJ,fJ,gJ,hJ,iJ,jJ,kJ,lJ,mJ,nJ,oJ,pJ,qJ,rJ,sJ,tJ,uJ,sp,Tj,tk,xt,ut,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK,QK];var eb=[RK,wJ,xJ,yJ,zJ,AJ,BJ,CJ,DJ,EJ,FJ,GJ,HJ,IJ,JJ,KJ,LJ,MJ,NJ,OJ,PJ,QJ,RJ,SJ,TJ,UJ,VJ,WJ,XJ,YJ,ZJ,_J,$J,aK,bK,cK,dK,eK,fK,gK,hK,iK,jK,kK,lK,mK,nK,oK,pK,qK,rK,sK,tK,uK,vK,wK,xK,yK,zK,AK,BK,CK,DK,EK,FK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK,RK];return{_RegisterExtensionFunctions:kt,___divdi3:Wv,___emscripten_environ_constructor:Nv,___errno_location:uu,___muldi3:Yv,___remdi3:Zv,___udivdi3:_v,___uremdi3:$v,__get_daylight:Pv,__get_environ:Rv,__get_timezone:Qv,__get_tzname:Ov,_bitshift64Ashr:aw,_bitshift64Lshr:bw,_bitshift64Shl:cw,_emscripten_replace_memory:Ua,_free:mu,_i64Add:Sv,_i64Subtract:Tv,_llvm_bswap_i32:dw,_malloc:lu,_memalign:ru,_memcpy:ew,_memmove:fw,_memset:gw,_sbrk:hw,_sqlite3_bind_blob:Sc,_sqlite3_bind_double:Uc,_sqlite3_bind_int:Wc,_sqlite3_bind_parameter_index:Zc,_sqlite3_bind_text:Xc,_sqlite3_changes:Ad,_sqlite3_clear_bindings:lc,_sqlite3_close_v2:Cd,_sqlite3_column_blob:Kc,_sqlite3_column_bytes:Lc,_sqlite3_column_double:Mc,_sqlite3_column_name:Rc,_sqlite3_column_text:Pc,_sqlite3_column_type:Qc,_sqlite3_create_function_v2:Gd,_sqlite3_data_count:Jc,_sqlite3_errmsg:pd,_sqlite3_exec:nd,_sqlite3_finalize:gc,_sqlite3_free:qb,_sqlite3_open:Od,_sqlite3_prepare_v2:od,_sqlite3_reset:jc,_sqlite3_result_blob:vc,_sqlite3_result_double:wc,_sqlite3_result_error:xc,_sqlite3_result_int:zc,_sqlite3_result_int64:Ac,_sqlite3_result_null:Bc,_sqlite3_result_text:Cc,_sqlite3_step:Gc,_sqlite3_value_blob:mc,_sqlite3_value_bytes:oc,_sqlite3_value_double:pc,_sqlite3_value_int:qc,_sqlite3_value_text:nc,_sqlite3_value_type:sc,dynCall_i:iw,dynCall_ii:tx,dynCall_iii:Ey,dynCall_iiii:Pz,dynCall_iiiii:_A,dynCall_iiiiii:jC,dynCall_iiiiiii:uD,dynCall_vi:FE,dynCall_vii:QF,dynCall_viii:$G,dynCall_viiii:kI,dynCall_viiiiii:vJ,establishStackSpace:ib,stackAlloc:fb,stackRestore:hb,stackSave:gb}}) - - -// EMSCRIPTEN_END_ASM -(Zc,bd,buffer);f._RegisterExtensionFunctions=Z._RegisterExtensionFunctions;f.___divdi3=Z.___divdi3;var lb=f.___emscripten_environ_constructor=Z.___emscripten_environ_constructor;f.___errno_location=Z.___errno_location;f.___muldi3=Z.___muldi3;f.___remdi3=Z.___remdi3;f.___udivdi3=Z.___udivdi3;f.___uremdi3=Z.___uremdi3;var Tc=f.__get_daylight=Z.__get_daylight;f.__get_environ=Z.__get_environ; -var Sc=f.__get_timezone=Z.__get_timezone,Uc=f.__get_tzname=Z.__get_tzname;f._bitshift64Ashr=Z._bitshift64Ashr;f._bitshift64Lshr=Z._bitshift64Lshr;f._bitshift64Shl=Z._bitshift64Shl;f._emscripten_replace_memory=Z._emscripten_replace_memory;var fa=f._free=Z._free;f._i64Add=Z._i64Add;f._i64Subtract=Z._i64Subtract;f._llvm_bswap_i32=Z._llvm_bswap_i32;var Wa=f._malloc=Z._malloc,$c=f._memalign=Z._memalign;f._memcpy=Z._memcpy;f._memmove=Z._memmove;var ad=f._memset=Z._memset;f._sbrk=Z._sbrk; -f._sqlite3_bind_blob=Z._sqlite3_bind_blob;f._sqlite3_bind_double=Z._sqlite3_bind_double;f._sqlite3_bind_int=Z._sqlite3_bind_int;f._sqlite3_bind_parameter_index=Z._sqlite3_bind_parameter_index;f._sqlite3_bind_text=Z._sqlite3_bind_text;f._sqlite3_changes=Z._sqlite3_changes;f._sqlite3_clear_bindings=Z._sqlite3_clear_bindings;f._sqlite3_close_v2=Z._sqlite3_close_v2;f._sqlite3_column_blob=Z._sqlite3_column_blob;f._sqlite3_column_bytes=Z._sqlite3_column_bytes;f._sqlite3_column_double=Z._sqlite3_column_double; -f._sqlite3_column_name=Z._sqlite3_column_name;f._sqlite3_column_text=Z._sqlite3_column_text;f._sqlite3_column_type=Z._sqlite3_column_type;f._sqlite3_create_function_v2=Z._sqlite3_create_function_v2;f._sqlite3_data_count=Z._sqlite3_data_count;f._sqlite3_errmsg=Z._sqlite3_errmsg;f._sqlite3_exec=Z._sqlite3_exec;f._sqlite3_finalize=Z._sqlite3_finalize;f._sqlite3_free=Z._sqlite3_free;f._sqlite3_open=Z._sqlite3_open;f._sqlite3_prepare_v2=Z._sqlite3_prepare_v2;f._sqlite3_reset=Z._sqlite3_reset; -f._sqlite3_result_blob=Z._sqlite3_result_blob;f._sqlite3_result_double=Z._sqlite3_result_double;f._sqlite3_result_error=Z._sqlite3_result_error;f._sqlite3_result_int=Z._sqlite3_result_int;f._sqlite3_result_int64=Z._sqlite3_result_int64;f._sqlite3_result_null=Z._sqlite3_result_null;f._sqlite3_result_text=Z._sqlite3_result_text;f._sqlite3_step=Z._sqlite3_step;f._sqlite3_value_blob=Z._sqlite3_value_blob;f._sqlite3_value_bytes=Z._sqlite3_value_bytes;f._sqlite3_value_double=Z._sqlite3_value_double; -f._sqlite3_value_int=Z._sqlite3_value_int;f._sqlite3_value_text=Z._sqlite3_value_text;f._sqlite3_value_type=Z._sqlite3_value_type;f.establishStackSpace=Z.establishStackSpace;var h=f.stackAlloc=Z.stackAlloc,qa=f.stackRestore=Z.stackRestore,na=f.stackSave=Z.stackSave;f.dynCall_i=Z.dynCall_i;f.dynCall_ii=Z.dynCall_ii;f.dynCall_iii=Z.dynCall_iii;f.dynCall_iiii=Z.dynCall_iiii;f.dynCall_iiiii=Z.dynCall_iiiii;f.dynCall_iiiiii=Z.dynCall_iiiiii;f.dynCall_iiiiiii=Z.dynCall_iiiiiii;f.dynCall_vi=Z.dynCall_vi; -f.dynCall_vii=Z.dynCall_vii;f.dynCall_viii=Z.dynCall_viii;f.dynCall_viiii=Z.dynCall_viiii;f.dynCall_viiiiii=Z.dynCall_viiiiii;f.asm=Z;f.cwrap=function(a,b,c,d){c=c||[];var e=c.every(function(a){return"number"===a});return"string"!==b&&e&&!d?Qa(a):function(){return Ra(a,b,c,arguments)}};f.stackSave=na;f.stackRestore=qa;f.stackAlloc=h; -if(H){if(String.prototype.startsWith?!H.startsWith(kb):0!==H.indexOf(kb)){var cd=H;H=f.locateFile?f.locateFile(cd,z):z+cd}if(y||za){var dd=f.readBinary(H);E.set(dd,8)}else{G++;f.monitorRunDependencies&&f.monitorRunDependencies(G);var ed=function(a){a.byteLength&&(a=new Uint8Array(a));E.set(a,8);f.memoryInitializerRequest&&delete f.memoryInitializerRequest.response;G--;f.monitorRunDependencies&&f.monitorRunDependencies(G);0==G&&(null!==ib&&(clearInterval(ib),ib=null),jb&&(a=jb,jb=null,a()))},fd=function(){f.readAsync(H, -ed,function(){throw"could not load memory initializer "+H;})},gd=B(H);if(gd)ed(gd.buffer);else if(f.memoryInitializerRequest){var hd=function(){var a=f.memoryInitializerRequest,b=a.response;if(200!==a.status&&0!==a.status)if(b=B(f.memoryInitializerRequestURL))b=b.buffer;else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+a.status+", retrying "+H);fd();return}ed(b)};f.memoryInitializerRequest.response?setTimeout(hd,0):f.memoryInitializerRequest.addEventListener("load", -hd)}else fd()}}function id(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}id.prototype=Error();id.prototype.constructor=id;jb=function jd(){f.calledRun||kd();f.calledRun||(jb=jd)}; -function kd(){function a(){if(!f.calledRun&&(f.calledRun=!0,!Na)){gb||(gb=!0,f.noFSInit||Ic||(Ic=!0,Hc(),f.stdin=f.stdin,f.stdout=f.stdout,f.stderr=f.stderr,f.stdin?Jc("stdin",f.stdin):bc("/dev/tty","/dev/stdin"),f.stdout?Jc("stdout",null,f.stdout):bc("/dev/tty","/dev/stdout"),f.stderr?Jc("stderr",null,f.stderr):bc("/dev/tty1","/dev/stderr"),p("/dev/stdin","r"),p("/dev/stdout","w"),p("/dev/stderr","w")),bb(db));Lb=!1;bb(eb);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for("function"== -typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;){var a=f.postRun.shift();fb.unshift(a)}bb(fb)}}if(!(0 self._pos) { - var newData = response.substr(self._pos) - if (self._charset === 'x-user-defined') { - var buffer = new Buffer(newData.length) - for (var i = 0; i < newData.length; i++) - buffer[i] = newData.charCodeAt(i) & 0xff - - self.push(buffer) - } else { - self.push(newData, self._charset) - } - self._pos = response.length - } - break - case 'arraybuffer': - if (xhr.readyState !== rStates.DONE || !xhr.response) - break - response = xhr.response - self.push(new Buffer(new Uint8Array(response))) - break - case 'moz-chunked-arraybuffer': // take whole - response = xhr.response - if (xhr.readyState !== rStates.LOADING || !response) - break - self.push(new Buffer(new Uint8Array(response))) - break - case 'ms-stream': - response = xhr.response - if (xhr.readyState !== rStates.LOADING) - break - var reader = new global.MSStreamReader() - reader.onprogress = function () { - if (reader.result.byteLength > self._pos) { - self.push(new Buffer(new Uint8Array(reader.result.slice(self._pos)))) - self._pos = reader.result.byteLength - } - } - reader.onload = function () { - self.push(null) - } - // reader.onerror = ??? // TODO: this - reader.readAsArrayBuffer(response) - break - } - - // The ms-stream case handles end separately in reader.onload() - if (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') { - self.push(null) - } -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) -},{"./capability":330,"_process":284,"buffer":182,"inherits":262,"readable-stream":312}],333:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -/**/ - -var Buffer = require('safe-buffer').Buffer; -/**/ - -var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.toLowerCase()) { - case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': - return true; - default: - return false; - } -}; - -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - case 'latin1': - case 'binary': - return 'latin1'; - case 'base64': - case 'ascii': - case 'hex': - return enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } - } -}; - -// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -exports.StringDecoder = StringDecoder; -function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); -} - -StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; - -StringDecoder.prototype.end = utf8End; - -// Returns only complete characters in a Buffer -StringDecoder.prototype.text = utf8Text; - -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; - -// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. If an invalid byte is detected, -2 is returned. -function utf8CheckByte(byte) { - if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; - return byte >> 6 === 0x02 ? -1 : -2; -} - -// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - return nb; - } - return 0; -} - -// Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'; - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'; - } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'; - } - } - } -} - -// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf, p); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} - -// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a -// partial character, the character's bytes are buffered until the required -// number of bytes are available. -function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); -} - -// For UTF-8, a replacement character is added when ending on a partial -// character. -function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + '\ufffd'; - return r; -} - -// UTF-16LE typically needs two bytes per character, but even if we have an even -// number of bytes available, we need to check if we end on a leading/high -// surrogate. In that case, we need to wait for the next two bytes in order to -// decode the last character properly. -function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - if (r) { - var c = r.charCodeAt(r.length - 1); - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - return r; - } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} - -// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - return r; -} - -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - return buf.toString('base64', i, buf.length - n); -} - -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; -} - -// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function simpleWrite(buf) { - return buf.toString(this.encoding); -} - -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; -} -},{"safe-buffer":334}],334:[function(require,module,exports){ -arguments[4][178][0].apply(exports,arguments) -},{"buffer":182,"dup":178}],335:[function(require,module,exports){ -(function (setImmediate,clearImmediate){ -var nextTick = require('process/browser.js').nextTick; -var apply = Function.prototype.apply; -var slice = Array.prototype.slice; -var immediateIds = {}; -var nextImmediateId = 0; - -// DOM APIs, for completeness - -exports.setTimeout = function() { - return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); -}; -exports.setInterval = function() { - return new Timeout(apply.call(setInterval, window, arguments), clearInterval); -}; -exports.clearTimeout = -exports.clearInterval = function(timeout) { timeout.close(); }; - -function Timeout(id, clearFn) { - this._id = id; - this._clearFn = clearFn; -} -Timeout.prototype.unref = Timeout.prototype.ref = function() {}; -Timeout.prototype.close = function() { - this._clearFn.call(window, this._id); -}; - -// Does not start the time, just sets up the members needed. -exports.enroll = function(item, msecs) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = msecs; -}; - -exports.unenroll = function(item) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = -1; -}; - -exports._unrefActive = exports.active = function(item) { - clearTimeout(item._idleTimeoutId); - - var msecs = item._idleTimeout; - if (msecs >= 0) { - item._idleTimeoutId = setTimeout(function onTimeout() { - if (item._onTimeout) - item._onTimeout(); - }, msecs); - } -}; - -// That's not how node.js implements it but the exposed api is the same. -exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { - var id = nextImmediateId++; - var args = arguments.length < 2 ? false : slice.call(arguments, 1); - - immediateIds[id] = true; - - nextTick(function onNextTick() { - if (immediateIds[id]) { - // fn.call() is faster so we optimize for the common use-case - // @see http://jsperf.com/call-apply-segu - if (args) { - fn.apply(null, args); - } else { - fn.call(null); - } - // Prevent ids from leaking - exports.clearImmediate(id); - } - }); - - return id; -}; - -exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { - delete immediateIds[id]; -}; -}).call(this,require("timers").setImmediate,require("timers").clearImmediate) -},{"process/browser.js":284,"timers":335}],336:[function(require,module,exports){ -var Buffer = require('buffer').Buffer - -module.exports = function (buf) { - // If the buffer is backed by a Uint8Array, a faster version will work - if (buf instanceof Uint8Array) { - // If the buffer isn't a subarray, return the underlying ArrayBuffer - if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) { - return buf.buffer - } else if (typeof buf.buffer.slice === 'function') { - // Otherwise we need to get a proper copy - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) - } - } - - if (Buffer.isBuffer(buf)) { - // This is the slow version that will work with any Buffer - // implementation (even in old browsers) - var arrayCopy = new Uint8Array(buf.length) - var len = buf.length - for (var i = 0; i < len; i++) { - arrayCopy[i] = buf[i] - } - return arrayCopy.buffer - } else { - throw new Error('Argument must be a Buffer') - } -} - -},{"buffer":182}],337:[function(require,module,exports){ -var undefined = (void 0); // Paranoia - -// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to -// create, and consume so much memory, that the browser appears frozen. -var MAX_ARRAY_LENGTH = 1e5; - -// Approximations of internal ECMAScript conversion functions -var ECMAScript = (function() { - // Stash a copy in case other scripts modify these - var opts = Object.prototype.toString, - ophop = Object.prototype.hasOwnProperty; - - return { - // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues: - Class: function(v) { return opts.call(v).replace(/^\[object *|\]$/g, ''); }, - HasProperty: function(o, p) { return p in o; }, - HasOwnProperty: function(o, p) { return ophop.call(o, p); }, - IsCallable: function(o) { return typeof o === 'function'; }, - ToInt32: function(v) { return v >> 0; }, - ToUint32: function(v) { return v >>> 0; } - }; -}()); - -// Snapshot intrinsics -var LN2 = Math.LN2, - abs = Math.abs, - floor = Math.floor, - log = Math.log, - min = Math.min, - pow = Math.pow, - round = Math.round; - -// ES5: lock down object properties -function configureProperties(obj) { - if (getOwnPropNames && defineProp) { - var props = getOwnPropNames(obj), i; - for (i = 0; i < props.length; i += 1) { - defineProp(obj, props[i], { - value: obj[props[i]], - writable: false, - enumerable: false, - configurable: false - }); - } - } -} - -// emulate ES5 getter/setter API using legacy APIs -// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx -// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but -// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless) -var defineProp -if (Object.defineProperty && (function() { - try { - Object.defineProperty({}, 'x', {}); - return true; - } catch (e) { - return false; - } - })()) { - defineProp = Object.defineProperty; -} else { - defineProp = function(o, p, desc) { - if (!o === Object(o)) throw new TypeError("Object.defineProperty called on non-object"); - if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) { Object.prototype.__defineGetter__.call(o, p, desc.get); } - if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) { Object.prototype.__defineSetter__.call(o, p, desc.set); } - if (ECMAScript.HasProperty(desc, 'value')) { o[p] = desc.value; } - return o; - }; -} - -var getOwnPropNames = Object.getOwnPropertyNames || function (o) { - if (o !== Object(o)) throw new TypeError("Object.getOwnPropertyNames called on non-object"); - var props = [], p; - for (p in o) { - if (ECMAScript.HasOwnProperty(o, p)) { - props.push(p); - } - } - return props; -}; - -// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value) -// for index in 0 ... obj.length -function makeArrayAccessors(obj) { - if (!defineProp) { return; } - - if (obj.length > MAX_ARRAY_LENGTH) throw new RangeError("Array too large for polyfill"); - - function makeArrayAccessor(index) { - defineProp(obj, index, { - 'get': function() { return obj._getter(index); }, - 'set': function(v) { obj._setter(index, v); }, - enumerable: true, - configurable: false - }); - } - - var i; - for (i = 0; i < obj.length; i += 1) { - makeArrayAccessor(i); - } -} - -// Internal conversion functions: -// pack() - take a number (interpreted as Type), output a byte array -// unpack() - take a byte array, output a Type-like number - -function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; } -function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; } - -function packI8(n) { return [n & 0xff]; } -function unpackI8(bytes) { return as_signed(bytes[0], 8); } - -function packU8(n) { return [n & 0xff]; } -function unpackU8(bytes) { return as_unsigned(bytes[0], 8); } - -function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; } - -function packI16(n) { return [(n >> 8) & 0xff, n & 0xff]; } -function unpackI16(bytes) { return as_signed(bytes[0] << 8 | bytes[1], 16); } - -function packU16(n) { return [(n >> 8) & 0xff, n & 0xff]; } -function unpackU16(bytes) { return as_unsigned(bytes[0] << 8 | bytes[1], 16); } - -function packI32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } -function unpackI32(bytes) { return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } - -function packU32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } -function unpackU32(bytes) { return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } - -function packIEEE754(v, ebits, fbits) { - - var bias = (1 << (ebits - 1)) - 1, - s, e, f, ln, - i, bits, str, bytes; - - function roundToEven(n) { - var w = floor(n), f = n - w; - if (f < 0.5) - return w; - if (f > 0.5) - return w + 1; - return w % 2 ? w + 1 : w; - } - - // Compute sign, exponent, fraction - if (v !== v) { - // NaN - // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping - e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0; - } else if (v === Infinity || v === -Infinity) { - e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0; - } else if (v === 0) { - e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0; - } else { - s = v < 0; - v = abs(v); - - if (v >= pow(2, 1 - bias)) { - e = min(floor(log(v) / LN2), 1023); - f = roundToEven(v / pow(2, e) * pow(2, fbits)); - if (f / pow(2, fbits) >= 2) { - e = e + 1; - f = 1; - } - if (e > bias) { - // Overflow - e = (1 << ebits) - 1; - f = 0; - } else { - // Normalized - e = e + bias; - f = f - pow(2, fbits); - } - } else { - // Denormalized - e = 0; - f = roundToEven(v / pow(2, 1 - bias - fbits)); - } - } - - // Pack sign, exponent, fraction - bits = []; - for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); } - for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); } - bits.push(s ? 1 : 0); - bits.reverse(); - str = bits.join(''); - - // Bits to bytes - bytes = []; - while (str.length) { - bytes.push(parseInt(str.substring(0, 8), 2)); - str = str.substring(8); - } - return bytes; -} - -function unpackIEEE754(bytes, ebits, fbits) { - - // Bytes to bits - var bits = [], i, j, b, str, - bias, s, e, f; - - for (i = bytes.length; i; i -= 1) { - b = bytes[i - 1]; - for (j = 8; j; j -= 1) { - bits.push(b % 2 ? 1 : 0); b = b >> 1; - } - } - bits.reverse(); - str = bits.join(''); - - // Unpack sign, exponent, fraction - bias = (1 << (ebits - 1)) - 1; - s = parseInt(str.substring(0, 1), 2) ? -1 : 1; - e = parseInt(str.substring(1, 1 + ebits), 2); - f = parseInt(str.substring(1 + ebits), 2); - - // Produce number - if (e === (1 << ebits) - 1) { - return f !== 0 ? NaN : s * Infinity; - } else if (e > 0) { - // Normalized - return s * pow(2, e - bias) * (1 + f / pow(2, fbits)); - } else if (f !== 0) { - // Denormalized - return s * pow(2, -(bias - 1)) * (f / pow(2, fbits)); - } else { - return s < 0 ? -0 : 0; - } -} - -function unpackF64(b) { return unpackIEEE754(b, 11, 52); } -function packF64(v) { return packIEEE754(v, 11, 52); } -function unpackF32(b) { return unpackIEEE754(b, 8, 23); } -function packF32(v) { return packIEEE754(v, 8, 23); } - - -// -// 3 The ArrayBuffer Type -// - -(function() { - - /** @constructor */ - var ArrayBuffer = function ArrayBuffer(length) { - length = ECMAScript.ToInt32(length); - if (length < 0) throw new RangeError('ArrayBuffer size is not a small enough positive integer'); - - this.byteLength = length; - this._bytes = []; - this._bytes.length = length; - - var i; - for (i = 0; i < this.byteLength; i += 1) { - this._bytes[i] = 0; - } - - configureProperties(this); - }; - - exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer; - - // - // 4 The ArrayBufferView Type - // - - // NOTE: this constructor is not exported - /** @constructor */ - var ArrayBufferView = function ArrayBufferView() { - //this.buffer = null; - //this.byteOffset = 0; - //this.byteLength = 0; - }; - - // - // 5 The Typed Array View Types - // - - function makeConstructor(bytesPerElement, pack, unpack) { - // Each TypedArray type requires a distinct constructor instance with - // identical logic, which this produces. - - var ctor; - ctor = function(buffer, byteOffset, length) { - var array, sequence, i, s; - - if (!arguments.length || typeof arguments[0] === 'number') { - // Constructor(unsigned long length) - this.length = ECMAScript.ToInt32(arguments[0]); - if (length < 0) throw new RangeError('ArrayBufferView size is not a small enough positive integer'); - - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - } else if (typeof arguments[0] === 'object' && arguments[0].constructor === ctor) { - // Constructor(TypedArray array) - array = arguments[0]; - - this.length = array.length; - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - - for (i = 0; i < this.length; i += 1) { - this._setter(i, array._getter(i)); - } - } else if (typeof arguments[0] === 'object' && - !(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { - // Constructor(sequence array) - sequence = arguments[0]; - - this.length = ECMAScript.ToUint32(sequence.length); - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - - for (i = 0; i < this.length; i += 1) { - s = sequence[i]; - this._setter(i, Number(s)); - } - } else if (typeof arguments[0] === 'object' && - (arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { - // Constructor(ArrayBuffer buffer, - // optional unsigned long byteOffset, optional unsigned long length) - this.buffer = buffer; - - this.byteOffset = ECMAScript.ToUint32(byteOffset); - if (this.byteOffset > this.buffer.byteLength) { - throw new RangeError("byteOffset out of range"); - } - - if (this.byteOffset % this.BYTES_PER_ELEMENT) { - // The given byteOffset must be a multiple of the element - // size of the specific type, otherwise an exception is raised. - throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size."); - } - - if (arguments.length < 3) { - this.byteLength = this.buffer.byteLength - this.byteOffset; - - if (this.byteLength % this.BYTES_PER_ELEMENT) { - throw new RangeError("length of buffer minus byteOffset not a multiple of the element size"); - } - this.length = this.byteLength / this.BYTES_PER_ELEMENT; - } else { - this.length = ECMAScript.ToUint32(length); - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - } - - if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { - throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); - } - } else { - throw new TypeError("Unexpected argument type(s)"); - } - - this.constructor = ctor; - - configureProperties(this); - makeArrayAccessors(this); - }; - - ctor.prototype = new ArrayBufferView(); - ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement; - ctor.prototype._pack = pack; - ctor.prototype._unpack = unpack; - ctor.BYTES_PER_ELEMENT = bytesPerElement; - - // getter type (unsigned long index); - ctor.prototype._getter = function(index) { - if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); - - index = ECMAScript.ToUint32(index); - if (index >= this.length) { - return undefined; - } - - var bytes = [], i, o; - for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; - i < this.BYTES_PER_ELEMENT; - i += 1, o += 1) { - bytes.push(this.buffer._bytes[o]); - } - return this._unpack(bytes); - }; - - // NONSTANDARD: convenience alias for getter: type get(unsigned long index); - ctor.prototype.get = ctor.prototype._getter; - - // setter void (unsigned long index, type value); - ctor.prototype._setter = function(index, value) { - if (arguments.length < 2) throw new SyntaxError("Not enough arguments"); - - index = ECMAScript.ToUint32(index); - if (index >= this.length) { - return undefined; - } - - var bytes = this._pack(value), i, o; - for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; - i < this.BYTES_PER_ELEMENT; - i += 1, o += 1) { - this.buffer._bytes[o] = bytes[i]; - } - }; - - // void set(TypedArray array, optional unsigned long offset); - // void set(sequence array, optional unsigned long offset); - ctor.prototype.set = function(index, value) { - if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); - var array, sequence, offset, len, - i, s, d, - byteOffset, byteLength, tmp; - - if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) { - // void set(TypedArray array, optional unsigned long offset); - array = arguments[0]; - offset = ECMAScript.ToUint32(arguments[1]); - - if (offset + array.length > this.length) { - throw new RangeError("Offset plus length of array is out of range"); - } - - byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT; - byteLength = array.length * this.BYTES_PER_ELEMENT; - - if (array.buffer === this.buffer) { - tmp = []; - for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) { - tmp[i] = array.buffer._bytes[s]; - } - for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) { - this.buffer._bytes[d] = tmp[i]; - } - } else { - for (i = 0, s = array.byteOffset, d = byteOffset; - i < byteLength; i += 1, s += 1, d += 1) { - this.buffer._bytes[d] = array.buffer._bytes[s]; - } - } - } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') { - // void set(sequence array, optional unsigned long offset); - sequence = arguments[0]; - len = ECMAScript.ToUint32(sequence.length); - offset = ECMAScript.ToUint32(arguments[1]); - - if (offset + len > this.length) { - throw new RangeError("Offset plus length of array is out of range"); - } - - for (i = 0; i < len; i += 1) { - s = sequence[i]; - this._setter(offset + i, Number(s)); - } - } else { - throw new TypeError("Unexpected argument type(s)"); - } - }; - - // TypedArray subarray(long begin, optional long end); - ctor.prototype.subarray = function(start, end) { - function clamp(v, min, max) { return v < min ? min : v > max ? max : v; } - - start = ECMAScript.ToInt32(start); - end = ECMAScript.ToInt32(end); - - if (arguments.length < 1) { start = 0; } - if (arguments.length < 2) { end = this.length; } - - if (start < 0) { start = this.length + start; } - if (end < 0) { end = this.length + end; } - - start = clamp(start, 0, this.length); - end = clamp(end, 0, this.length); - - var len = end - start; - if (len < 0) { - len = 0; - } - - return new this.constructor( - this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len); - }; - - return ctor; - } - - var Int8Array = makeConstructor(1, packI8, unpackI8); - var Uint8Array = makeConstructor(1, packU8, unpackU8); - var Uint8ClampedArray = makeConstructor(1, packU8Clamped, unpackU8); - var Int16Array = makeConstructor(2, packI16, unpackI16); - var Uint16Array = makeConstructor(2, packU16, unpackU16); - var Int32Array = makeConstructor(4, packI32, unpackI32); - var Uint32Array = makeConstructor(4, packU32, unpackU32); - var Float32Array = makeConstructor(4, packF32, unpackF32); - var Float64Array = makeConstructor(8, packF64, unpackF64); - - exports.Int8Array = exports.Int8Array || Int8Array; - exports.Uint8Array = exports.Uint8Array || Uint8Array; - exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray; - exports.Int16Array = exports.Int16Array || Int16Array; - exports.Uint16Array = exports.Uint16Array || Uint16Array; - exports.Int32Array = exports.Int32Array || Int32Array; - exports.Uint32Array = exports.Uint32Array || Uint32Array; - exports.Float32Array = exports.Float32Array || Float32Array; - exports.Float64Array = exports.Float64Array || Float64Array; -}()); - -// -// 6 The DataView View Type -// - -(function() { - function r(array, index) { - return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index]; - } - - var IS_BIG_ENDIAN = (function() { - var u16array = new(exports.Uint16Array)([0x1234]), - u8array = new(exports.Uint8Array)(u16array.buffer); - return r(u8array, 0) === 0x12; - }()); - - // Constructor(ArrayBuffer buffer, - // optional unsigned long byteOffset, - // optional unsigned long byteLength) - /** @constructor */ - var DataView = function DataView(buffer, byteOffset, byteLength) { - if (arguments.length === 0) { - buffer = new exports.ArrayBuffer(0); - } else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) { - throw new TypeError("TypeError"); - } - - this.buffer = buffer || new exports.ArrayBuffer(0); - - this.byteOffset = ECMAScript.ToUint32(byteOffset); - if (this.byteOffset > this.buffer.byteLength) { - throw new RangeError("byteOffset out of range"); - } - - if (arguments.length < 3) { - this.byteLength = this.buffer.byteLength - this.byteOffset; - } else { - this.byteLength = ECMAScript.ToUint32(byteLength); - } - - if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { - throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); - } - - configureProperties(this); - }; - - function makeGetter(arrayType) { - return function(byteOffset, littleEndian) { - - byteOffset = ECMAScript.ToUint32(byteOffset); - - if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { - throw new RangeError("Array index out of range"); - } - byteOffset += this.byteOffset; - - var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT), - bytes = [], i; - for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { - bytes.push(r(uint8Array, i)); - } - - if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { - bytes.reverse(); - } - - return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0); - }; - } - - DataView.prototype.getUint8 = makeGetter(exports.Uint8Array); - DataView.prototype.getInt8 = makeGetter(exports.Int8Array); - DataView.prototype.getUint16 = makeGetter(exports.Uint16Array); - DataView.prototype.getInt16 = makeGetter(exports.Int16Array); - DataView.prototype.getUint32 = makeGetter(exports.Uint32Array); - DataView.prototype.getInt32 = makeGetter(exports.Int32Array); - DataView.prototype.getFloat32 = makeGetter(exports.Float32Array); - DataView.prototype.getFloat64 = makeGetter(exports.Float64Array); - - function makeSetter(arrayType) { - return function(byteOffset, value, littleEndian) { - - byteOffset = ECMAScript.ToUint32(byteOffset); - if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { - throw new RangeError("Array index out of range"); - } - - // Get bytes - var typeArray = new arrayType([value]), - byteArray = new exports.Uint8Array(typeArray.buffer), - bytes = [], i, byteView; - - for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { - bytes.push(r(byteArray, i)); - } - - // Flip if necessary - if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { - bytes.reverse(); - } - - // Write them - byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT); - byteView.set(bytes); - }; - } - - DataView.prototype.setUint8 = makeSetter(exports.Uint8Array); - DataView.prototype.setInt8 = makeSetter(exports.Int8Array); - DataView.prototype.setUint16 = makeSetter(exports.Uint16Array); - DataView.prototype.setInt16 = makeSetter(exports.Int16Array); - DataView.prototype.setUint32 = makeSetter(exports.Uint32Array); - DataView.prototype.setInt32 = makeSetter(exports.Int32Array); - DataView.prototype.setFloat32 = makeSetter(exports.Float32Array); - DataView.prototype.setFloat64 = makeSetter(exports.Float64Array); - - exports.DataView = exports.DataView || DataView; - -}()); - -},{}],338:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -var punycode = require('punycode'); -var util = require('./util'); - -exports.parse = urlParse; -exports.resolve = urlResolve; -exports.resolveObject = urlResolveObject; -exports.format = urlFormat; - -exports.Url = Url; - -function Url() { - this.protocol = null; - this.slashes = null; - this.auth = null; - this.host = null; - this.port = null; - this.hostname = null; - this.hash = null; - this.search = null; - this.query = null; - this.pathname = null; - this.path = null; - this.href = null; -} - -// Reference: RFC 3986, RFC 1808, RFC 2396 - -// define these here so at least they only have to be -// compiled once on the first module load. -var protocolPattern = /^([a-z0-9.+-]+:)/i, - portPattern = /:[0-9]*$/, - - // Special case for a simple path URL - simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, - - // RFC 2396: characters reserved for delimiting URLs. - // We actually just auto-escape these. - delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], - - // RFC 2396: characters not allowed for various reasons. - unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), - - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''].concat(unwise), - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), - hostEndingChars = ['/', '?', '#'], - hostnameMaxLen = 255, - hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = require('querystring'); - -function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && util.isObject(url) && url instanceof Url) return url; - - var u = new Url; - u.parse(url, parseQueryString, slashesDenoteHost); - return u; -} - -Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { - if (!util.isString(url)) { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - // Copy chrome, IE, opera backslash-handling behavior. - // Back slashes before the query string get converted to forward slashes - // See: https://code.google.com/p/chromium/issues/detail?id=25916 - var queryIndex = url.indexOf('?'), - splitter = - (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', - uSplit = url.split(splitter), - slashRegex = /\\/g; - uSplit[0] = uSplit[0].replace(slashRegex, '/'); - url = uSplit.join(splitter); - - var rest = url; - - // trim before proceeding. - // This is to support parse stuff like " http://foo.com \n" - rest = rest.trim(); - - if (!slashesDenoteHost && url.split('#').length === 1) { - // Try fast path regexp - var simplePath = simplePathPattern.exec(rest); - if (simplePath) { - this.path = rest; - this.href = rest; - this.pathname = simplePath[1]; - if (simplePath[2]) { - this.search = simplePath[2]; - if (parseQueryString) { - this.query = querystring.parse(this.search.substr(1)); - } else { - this.query = this.search.substr(1); - } - } else if (parseQueryString) { - this.search = ''; - this.query = {}; - } - return this; - } - } - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - this.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the last @ sign, unless some host-ending character - // comes *before* the @-sign. - // URLs are obnoxious. - // - // ex: - // http://a@b@c/ => user:a@b host:c - // http://a@b?@c => user:a host:c path:/?@c - - // v0.12 TODO(isaacs): This is not quite how Chrome does things. - // Review our test case against browsers more comprehensively. - - // find the first instance of any hostEndingChars - var hostEnd = -1; - for (var i = 0; i < hostEndingChars.length; i++) { - var hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - - // at this point, either we have an explicit point where the - // auth portion cannot go past, or the last @ char is the decider. - var auth, atSign; - if (hostEnd === -1) { - // atSign can be anywhere. - atSign = rest.lastIndexOf('@'); - } else { - // atSign must be in auth portion. - // http://a@b/c@d => host:b auth:a path:/c@d - atSign = rest.lastIndexOf('@', hostEnd); - } - - // Now we have a portion which is definitely the auth. - // Pull that off. - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = decodeURIComponent(auth); - } - - // the host is the remaining to the left of the first non-host char - hostEnd = -1; - for (var i = 0; i < nonHostChars.length; i++) { - var hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - // if we still have not hit it, then the entire thing is a host. - if (hostEnd === -1) - hostEnd = rest.length; - - this.host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - // pull out port. - this.parseHost(); - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - this.hostname = this.hostname || ''; - - // if hostname begins with [ and ends with ] - // assume that it's an IPv6 address. - var ipv6Hostname = this.hostname[0] === '[' && - this.hostname[this.hostname.length - 1] === ']'; - - // validate a little. - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } else { - // hostnames are always lower case. - this.hostname = this.hostname.toLowerCase(); - } - - if (!ipv6Hostname) { - // IDNA Support: Returns a punycoded representation of "domain". - // It only converts parts of the domain name that - // have non-ASCII characters, i.e. it doesn't matter if - // you call it with a domain that already is ASCII-only. - this.hostname = punycode.toASCII(this.hostname); - } - - var p = this.port ? ':' + this.port : ''; - var h = this.hostname || ''; - this.host = h + p; - this.href += this.host; - - // strip [ and ] from the hostname - // the host field still retains them, though - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - if (rest[0] !== '/') { - rest = '/' + rest; - } - } - } - - // now rest is set to the post-host stuff. - // chop off any delim chars. - if (!unsafeProtocol[lowerProto]) { - - // First, make 100% sure that any "autoEscape" chars get - // escaped, even if encodeURIComponent doesn't think they - // need to be. - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - if (rest.indexOf(ae) === -1) - continue; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - } - - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - this.query = rest.substr(qm + 1); - if (parseQueryString) { - this.query = querystring.parse(this.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - this.search = ''; - this.query = {}; - } - if (rest) this.pathname = rest; - if (slashedProtocol[lowerProto] && - this.hostname && !this.pathname) { - this.pathname = '/'; - } - - //to support http.request - if (this.pathname || this.search) { - var p = this.pathname || ''; - var s = this.search || ''; - this.path = p + s; - } - - // finally, reconstruct the href based on what has been validated. - this.href = this.format(); - return this; -}; - -// format a parsed object into a url string -function urlFormat(obj) { - // ensure it's an object, and not a string url. - // If it's an obj, this is a no-op. - // this way, you can call url_format() on strings - // to clean up potentially wonky urls. - if (util.isString(obj)) obj = urlParse(obj); - if (!(obj instanceof Url)) return Url.prototype.format.call(obj); - return obj.format(); -} - -Url.prototype.format = function() { - var auth = this.auth || ''; - if (auth) { - auth = encodeURIComponent(auth); - auth = auth.replace(/%3A/i, ':'); - auth += '@'; - } - - var protocol = this.protocol || '', - pathname = this.pathname || '', - hash = this.hash || '', - host = false, - query = ''; - - if (this.host) { - host = auth + this.host; - } else if (this.hostname) { - host = auth + (this.hostname.indexOf(':') === -1 ? - this.hostname : - '[' + this.hostname + ']'); - if (this.port) { - host += ':' + this.port; - } - } - - if (this.query && - util.isObject(this.query) && - Object.keys(this.query).length) { - query = querystring.stringify(this.query); - } - - var search = this.search || (query && ('?' + query)) || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - // unless they had them to begin with. - if (this.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - pathname = pathname.replace(/[?#]/g, function(match) { - return encodeURIComponent(match); - }); - search = search.replace('#', '%23'); - - return protocol + host + pathname + search + hash; -}; - -function urlResolve(source, relative) { - return urlParse(source, false, true).resolve(relative); -} - -Url.prototype.resolve = function(relative) { - return this.resolveObject(urlParse(relative, false, true)).format(); -}; - -function urlResolveObject(source, relative) { - if (!source) return relative; - return urlParse(source, false, true).resolveObject(relative); -} - -Url.prototype.resolveObject = function(relative) { - if (util.isString(relative)) { - var rel = new Url(); - rel.parse(relative, false, true); - relative = rel; - } - - var result = new Url(); - var tkeys = Object.keys(this); - for (var tk = 0; tk < tkeys.length; tk++) { - var tkey = tkeys[tk]; - result[tkey] = this[tkey]; - } - - // hash is always overridden, no matter what. - // even href="" will remove it. - result.hash = relative.hash; - - // if the relative url is empty, then there's nothing left to do here. - if (relative.href === '') { - result.href = result.format(); - return result; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - // take everything except the protocol from relative - var rkeys = Object.keys(relative); - for (var rk = 0; rk < rkeys.length; rk++) { - var rkey = rkeys[rk]; - if (rkey !== 'protocol') - result[rkey] = relative[rkey]; - } - - //urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[result.protocol] && - result.hostname && !result.pathname) { - result.path = result.pathname = '/'; - } - - result.href = result.format(); - return result; - } - - if (relative.protocol && relative.protocol !== result.protocol) { - // if it's a known url protocol, then changing - // the protocol does weird things - // first, if it's not file:, then we MUST have a host, - // and if there was a path - // to begin with, then we MUST have a path. - // if it is file:, then the host is dropped, - // because that's known to be hostless. - // anything else is assumed to be absolute. - if (!slashedProtocol[relative.protocol]) { - var keys = Object.keys(relative); - for (var v = 0; v < keys.length; v++) { - var k = keys[v]; - result[k] = relative[k]; - } - result.href = result.format(); - return result; - } - - result.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - result.pathname = relPath.join('/'); - } else { - result.pathname = relative.pathname; - } - result.search = relative.search; - result.query = relative.query; - result.host = relative.host || ''; - result.auth = relative.auth; - result.hostname = relative.hostname || relative.host; - result.port = relative.port; - // to support http.request - if (result.pathname || result.search) { - var p = result.pathname || ''; - var s = result.search || ''; - result.path = p + s; - } - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - } - - var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (result.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = result.pathname && result.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = result.protocol && !slashedProtocol[result.protocol]; - - // if the url is a non-slashed url, then relative - // links like ../.. should be able - // to crawl up to the hostname, as well. This is strange. - // result.protocol has already been set by now. - // Later on, put the first path part into the host field. - if (psychotic) { - result.hostname = ''; - result.port = null; - if (result.host) { - if (srcPath[0] === '') srcPath[0] = result.host; - else srcPath.unshift(result.host); - } - result.host = ''; - if (relative.protocol) { - relative.hostname = null; - relative.port = null; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - relative.host = null; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - result.host = (relative.host || relative.host === '') ? - relative.host : result.host; - result.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : result.hostname; - result.search = relative.search; - result.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - // it's relative - // throw away the existing file, and take the new path instead. - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - result.search = relative.search; - result.query = relative.query; - } else if (!util.isNullOrUndefined(relative.search)) { - // just pull out the search. - // like href='?foo'. - // Put this after the other two cases because it simplifies the booleans - if (psychotic) { - result.hostname = result.host = srcPath.shift(); - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - result.search = relative.search; - result.query = relative.query; - //to support http.request - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.href = result.format(); - return result; - } - - if (!srcPath.length) { - // no path at all. easy. - // we've already handled the other stuff above. - result.pathname = null; - //to support http.request - if (result.search) { - result.path = '/' + result.search; - } else { - result.path = null; - } - result.href = result.format(); - return result; - } - - // if a url ENDs in . or .., then it must get a trailing slash. - // however, if it ends in anything else non-slashy, - // then it must NOT get a trailing slash. - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (result.host || relative.host || srcPath.length > 1) && - (last === '.' || last === '..') || last === ''); - - // strip single dots, resolve double dots to parent dir - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last === '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - result.hostname = result.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (result.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - if (!srcPath.length) { - result.pathname = null; - result.path = null; - } else { - result.pathname = srcPath.join('/'); - } - - //to support request.http - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.auth = relative.auth || result.auth; - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; -}; - -Url.prototype.parseHost = function() { - var host = this.host; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) this.hostname = host; -}; - -},{"./util":339,"punycode":292,"querystring":295}],339:[function(require,module,exports){ -'use strict'; - -module.exports = { - isString: function(arg) { - return typeof(arg) === 'string'; - }, - isObject: function(arg) { - return typeof(arg) === 'object' && arg !== null; - }, - isNull: function(arg) { - return arg === null; - }, - isNullOrUndefined: function(arg) { - return arg == null; - } -}; - -},{}],340:[function(require,module,exports){ -(function (global){ - -/** - * Module exports. - */ - -module.exports = deprecate; - -/** - * Mark that a method should not be used. - * Returns a modified function which warns once by default. - * - * If `localStorage.noDeprecation = true` is set, then it is a no-op. - * - * If `localStorage.throwDeprecation = true` is set, then deprecated functions - * will throw an Error when invoked. - * - * If `localStorage.traceDeprecation = true` is set, then deprecated functions - * will invoke `console.trace()` instead of `console.error()`. - * - * @param {Function} fn - the function to deprecate - * @param {String} msg - the string to print to the console when `fn` is invoked - * @returns {Function} a new "deprecated" version of `fn` - * @api public - */ - -function deprecate (fn, msg) { - if (config('noDeprecation')) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (config('throwDeprecation')) { - throw new Error(msg); - } else if (config('traceDeprecation')) { - console.trace(msg); - } else { - console.warn(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -} - -/** - * Checks `localStorage` for boolean values for the given `name`. - * - * @param {String} name - * @returns {Boolean} - * @api private - */ - -function config (name) { - // accessing global.localStorage can trigger a DOMException in sandboxed iframes - try { - if (!global.localStorage) return false; - } catch (_) { - return false; - } - var val = global.localStorage[name]; - if (null == val) return false; - return String(val).toLowerCase() === 'true'; -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],341:[function(require,module,exports){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} - -},{}],342:[function(require,module,exports){ -module.exports = function isBuffer(arg) { - return arg && typeof arg === 'object' - && typeof arg.copy === 'function' - && typeof arg.fill === 'function' - && typeof arg.readUInt8 === 'function'; -} -},{}],343:[function(require,module,exports){ -(function (process,global){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(' '); - } - - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } - } - return str; -}; - - -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. -exports.deprecate = function(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(global.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } - - if (process.noDeprecation === true) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -}; - - -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; -}; - - -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} -exports.inspect = inspect; - - -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; - -// Don't use 'blue' not visible on cmd.exe -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; - - -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; - } -} - - -function stylizeNoColor(str, styleType) { - return str; -} - - -function arrayToHash(array) { - var hash = {}; - - array.forEach(function(val, idx) { - hash[val] = true; - }); - - return hash; -} - - -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } - - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } - - var base = '', array = false, braces = ['{', '}']; - - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } - - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } - - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } - - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - - return reduceToSingleString(output, base, braces); -} - - -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); -} - - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} - - -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} - - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} - - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = require('./support/isBuffer'); - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - - -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} - - -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; - -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} - - -// log is just a thin wrapper to console.log that prepends a timestamp -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; - - -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ -exports.inherits = require('inherits'); - -exports._extend = function(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -}; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./support/isBuffer":342,"_process":284,"inherits":341}],344:[function(require,module,exports){ -var indexOf = require('indexof'); - -var Object_keys = function (obj) { - if (Object.keys) return Object.keys(obj) - else { - var res = []; - for (var key in obj) res.push(key) - return res; - } -}; - -var forEach = function (xs, fn) { - if (xs.forEach) return xs.forEach(fn) - else for (var i = 0; i < xs.length; i++) { - fn(xs[i], i, xs); - } -}; - -var defineProp = (function() { - try { - Object.defineProperty({}, '_', {}); - return function(obj, name, value) { - Object.defineProperty(obj, name, { - writable: true, - enumerable: false, - configurable: true, - value: value - }) - }; - } catch(e) { - return function(obj, name, value) { - obj[name] = value; - }; - } -}()); - -var globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function', -'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError', -'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError', -'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape', -'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape']; - -function Context() {} -Context.prototype = {}; - -var Script = exports.Script = function NodeScript (code) { - if (!(this instanceof Script)) return new Script(code); - this.code = code; -}; - -Script.prototype.runInContext = function (context) { - if (!(context instanceof Context)) { - throw new TypeError("needs a 'context' argument."); - } - - var iframe = document.createElement('iframe'); - if (!iframe.style) iframe.style = {}; - iframe.style.display = 'none'; - - document.body.appendChild(iframe); - - var win = iframe.contentWindow; - var wEval = win.eval, wExecScript = win.execScript; - - if (!wEval && wExecScript) { - // win.eval() magically appears when this is called in IE: - wExecScript.call(win, 'null'); - wEval = win.eval; - } - - forEach(Object_keys(context), function (key) { - win[key] = context[key]; - }); - forEach(globals, function (key) { - if (context[key]) { - win[key] = context[key]; - } - }); - - var winKeys = Object_keys(win); - - var res = wEval.call(win, this.code); - - forEach(Object_keys(win), function (key) { - // Avoid copying circular objects like `top` and `window` by only - // updating existing context properties or new properties in the `win` - // that was only introduced after the eval. - if (key in context || indexOf(winKeys, key) === -1) { - context[key] = win[key]; - } - }); - - forEach(globals, function (key) { - if (!(key in context)) { - defineProp(context, key, win[key]); - } - }); - - document.body.removeChild(iframe); - - return res; -}; - -Script.prototype.runInThisContext = function () { - return eval(this.code); // maybe... -}; - -Script.prototype.runInNewContext = function (context) { - var ctx = Script.createContext(context); - var res = this.runInContext(ctx); - - forEach(Object_keys(ctx), function (key) { - context[key] = ctx[key]; - }); - - return res; -}; - -forEach(Object_keys(Script.prototype), function (name) { - exports[name] = Script[name] = function (code) { - var s = Script(code); - return s[name].apply(s, [].slice.call(arguments, 1)); - }; -}); - -exports.createScript = function (code) { - return exports.Script(code); -}; - -exports.createContext = Script.createContext = function (context) { - var copy = new Context(); - if(typeof context === 'object') { - forEach(Object_keys(context), function (key) { - copy[key] = context[key]; - }); - } - return copy; -}; - -},{"indexof":261}],345:[function(require,module,exports){ -var Pbf = require('pbf') -var GeoJSONWrapper = require('./lib/geojson_wrapper') - -module.exports = fromVectorTileJs -module.exports.fromVectorTileJs = fromVectorTileJs -module.exports.fromGeojsonVt = fromGeojsonVt -module.exports.GeoJSONWrapper = GeoJSONWrapper - -/** - * Serialize a vector-tile-js-created tile to pbf - * - * @param {Object} tile - * @return {Buffer} uncompressed, pbf-serialized tile data - */ -function fromVectorTileJs (tile) { - var out = new Pbf() - writeTile(tile, out) - return out.finish() -} - -/** - * Serialized a geojson-vt-created tile to pbf. - * - * @param {Object} layers - An object mapping layer names to geojson-vt-created vector tile objects - * @param {Object} [options] - An object specifying the vector-tile specification version and extent that were used to create `layers`. - * @param {Number} [options.version=1] - Version of vector-tile spec used - * @param {Number} [options.extent=4096] - Extent of the vector tile - * @return {Buffer} uncompressed, pbf-serialized tile data - */ -function fromGeojsonVt (layers, options) { - options = options || {} - var l = {} - for (var k in layers) { - l[k] = new GeoJSONWrapper(layers[k].features, options) - l[k].name = k - l[k].version = options.version - l[k].extent = options.extent - } - return fromVectorTileJs({layers: l}) -} - -function writeTile (tile, pbf) { - for (var key in tile.layers) { - pbf.writeMessage(3, writeLayer, tile.layers[key]) - } -} - -function writeLayer (layer, pbf) { - pbf.writeVarintField(15, layer.version || 1) - pbf.writeStringField(1, layer.name || '') - pbf.writeVarintField(5, layer.extent || 4096) - - var i - var context = { - keys: [], - values: [], - keycache: {}, - valuecache: {} - } - - for (i = 0; i < layer.length; i++) { - context.feature = layer.feature(i) - pbf.writeMessage(2, writeFeature, context) - } - - var keys = context.keys - for (i = 0; i < keys.length; i++) { - pbf.writeStringField(3, keys[i]) - } - - var values = context.values - for (i = 0; i < values.length; i++) { - pbf.writeMessage(4, writeValue, values[i]) - } -} - -function writeFeature (context, pbf) { - var feature = context.feature - - if (feature.id !== undefined) { - pbf.writeVarintField(1, feature.id) - } - - pbf.writeMessage(2, writeProperties, context) - pbf.writeVarintField(3, feature.type) - pbf.writeMessage(4, writeGeometry, feature) -} - -function writeProperties (context, pbf) { - var feature = context.feature - var keys = context.keys - var values = context.values - var keycache = context.keycache - var valuecache = context.valuecache - - for (var key in feature.properties) { - var keyIndex = keycache[key] - if (typeof keyIndex === 'undefined') { - keys.push(key) - keyIndex = keys.length - 1 - keycache[key] = keyIndex - } - pbf.writeVarint(keyIndex) - - var value = feature.properties[key] - var type = typeof value - if (type !== 'string' && type !== 'boolean' && type !== 'number') { - value = JSON.stringify(value) - } - var valueKey = type + ':' + value - var valueIndex = valuecache[valueKey] - if (typeof valueIndex === 'undefined') { - values.push(value) - valueIndex = values.length - 1 - valuecache[valueKey] = valueIndex - } - pbf.writeVarint(valueIndex) - } -} - -function command (cmd, length) { - return (length << 3) + (cmd & 0x7) -} - -function zigzag (num) { - return (num << 1) ^ (num >> 31) -} - -function writeGeometry (feature, pbf) { - var geometry = feature.loadGeometry() - var type = feature.type - var x = 0 - var y = 0 - var rings = geometry.length - for (var r = 0; r < rings; r++) { - var ring = geometry[r] - var count = 1 - if (type === 1) { - count = ring.length - } - pbf.writeVarint(command(1, count)) // moveto - // do not write polygon closing path as lineto - var lineCount = type === 3 ? ring.length - 1 : ring.length - for (var i = 0; i < lineCount; i++) { - if (i === 1 && type !== 1) { - pbf.writeVarint(command(2, lineCount - 1)) // lineto - } - var dx = ring[i].x - x - var dy = ring[i].y - y - pbf.writeVarint(zigzag(dx)) - pbf.writeVarint(zigzag(dy)) - x += dx - y += dy - } - if (type === 3) { - pbf.writeVarint(command(7, 1)) // closepath - } - } -} - -function writeValue (value, pbf) { - var type = typeof value - if (type === 'string') { - pbf.writeStringField(1, value) - } else if (type === 'boolean') { - pbf.writeBooleanField(7, value) - } else if (type === 'number') { - if (value % 1 !== 0) { - pbf.writeDoubleField(3, value) - } else if (value < 0) { - pbf.writeSVarintField(6, value) - } else { - pbf.writeVarintField(5, value) - } - } -} - -},{"./lib/geojson_wrapper":346,"pbf":277}],346:[function(require,module,exports){ -'use strict' - -var Point = require('@mapbox/point-geometry') -var VectorTileFeature = require('@mapbox/vector-tile').VectorTileFeature - -module.exports = GeoJSONWrapper - -// conform to vectortile api -function GeoJSONWrapper (features, options) { - this.options = options || {} - this.features = features - this.length = features.length -} - -GeoJSONWrapper.prototype.feature = function (i) { - return new FeatureWrapper(this.features[i], this.options.extent) -} - -function FeatureWrapper (feature, extent) { - this.id = typeof feature.id === 'number' ? feature.id : undefined - this.type = feature.type - this.rawGeometry = feature.type === 1 ? [feature.geometry] : feature.geometry - this.properties = feature.tags - this.extent = extent || 4096 -} - -FeatureWrapper.prototype.loadGeometry = function () { - var rings = this.rawGeometry - this.geometry = [] - - for (var i = 0; i < rings.length; i++) { - var ring = rings[i] - var newRing = [] - for (var j = 0; j < ring.length; j++) { - newRing.push(new Point(ring[j][0], ring[j][1])) - } - this.geometry.push(newRing) - } - return this.geometry -} - -FeatureWrapper.prototype.bbox = function () { - if (!this.geometry) this.loadGeometry() - - var rings = this.geometry - var x1 = Infinity - var x2 = -Infinity - var y1 = Infinity - var y2 = -Infinity - - for (var i = 0; i < rings.length; i++) { - var ring = rings[i] - - for (var j = 0; j < ring.length; j++) { - var coord = ring[j] - - x1 = Math.min(x1, coord.x) - x2 = Math.max(x2, coord.x) - y1 = Math.min(y1, coord.y) - y2 = Math.max(y2, coord.y) - } - } - - return [x1, y1, x2, y2] -} - -FeatureWrapper.prototype.toGeoJSON = VectorTileFeature.prototype.toGeoJSON - -},{"@mapbox/point-geometry":112,"@mapbox/vector-tile":113}],347:[function(require,module,exports){ -var bundleFn = arguments[3]; -var sources = arguments[4]; -var cache = arguments[5]; - -var stringify = JSON.stringify; - -module.exports = function (fn, options) { - var wkey; - var cacheKeys = Object.keys(cache); - - for (var i = 0, l = cacheKeys.length; i < l; i++) { - var key = cacheKeys[i]; - var exp = cache[key].exports; - // Using babel as a transpiler to use esmodule, the export will always - // be an object with the default export as a property of it. To ensure - // the existing api and babel esmodule exports are both supported we - // check for both - if (exp === fn || exp && exp.default === fn) { - wkey = key; - break; - } - } - - if (!wkey) { - wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); - var wcache = {}; - for (var i = 0, l = cacheKeys.length; i < l; i++) { - var key = cacheKeys[i]; - wcache[key] = key; - } - sources[wkey] = [ - 'function(require,module,exports){' + fn + '(self); }', - wcache - ]; - } - var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); - - var scache = {}; scache[wkey] = wkey; - sources[skey] = [ - 'function(require,module,exports){' + - // try to call default if defined to also support babel esmodule exports - 'var f = require(' + stringify(wkey) + ');' + - '(f.default ? f.default : f)(self);' + - '}', - scache - ]; - - var workerSources = {}; - resolveSources(skey); - - function resolveSources(key) { - workerSources[key] = true; - - for (var depPath in sources[key][1]) { - var depKey = sources[key][1][depPath]; - if (!workerSources[depKey]) { - resolveSources(depKey); - } - } - } - - var src = '(' + bundleFn + ')({' - + Object.keys(workerSources).map(function (key) { - return stringify(key) + ':[' - + sources[key][0] - + ',' + stringify(sources[key][1]) + ']' - ; - }).join(',') - + '},{},[' + stringify(skey) + '])' - ; - - var URL = window.URL || window.webkitURL || window.mozURL || window.msURL; - - var blob = new Blob([src], { type: 'text/javascript' }); - if (options && options.bare) { return blob; } - var workerUrl = URL.createObjectURL(blob); - var worker = new Worker(workerUrl); - worker.objectURL = workerUrl; - return worker; -}; - -},{}],348:[function(require,module,exports){ -(function (Buffer){ -module.exports = BinaryReader; - -function BinaryReader(buffer, isBigEndian) { - this.buffer = buffer; - this.position = 0; - this.isBigEndian = isBigEndian || false; -} - -function _read(readLE, readBE, size) { - return function () { - var value; - - if (this.isBigEndian) - value = readBE.call(this.buffer, this.position); - else - value = readLE.call(this.buffer, this.position); - - this.position += size; - - return value; - }; -} - -BinaryReader.prototype.readUInt8 = _read(Buffer.prototype.readUInt8, Buffer.prototype.readUInt8, 1); -BinaryReader.prototype.readUInt16 = _read(Buffer.prototype.readUInt16LE, Buffer.prototype.readUInt16BE, 2); -BinaryReader.prototype.readUInt32 = _read(Buffer.prototype.readUInt32LE, Buffer.prototype.readUInt32BE, 4); -BinaryReader.prototype.readInt8 = _read(Buffer.prototype.readInt8, Buffer.prototype.readInt8, 1); -BinaryReader.prototype.readInt16 = _read(Buffer.prototype.readInt16LE, Buffer.prototype.readInt16BE, 2); -BinaryReader.prototype.readInt32 = _read(Buffer.prototype.readInt32LE, Buffer.prototype.readInt32BE, 4); -BinaryReader.prototype.readFloat = _read(Buffer.prototype.readFloatLE, Buffer.prototype.readFloatBE, 4); -BinaryReader.prototype.readDouble = _read(Buffer.prototype.readDoubleLE, Buffer.prototype.readDoubleBE, 8); - -BinaryReader.prototype.readVarInt = function () { - var nextByte, - result = 0, - bytesRead = 0; - - do { - nextByte = this.buffer[this.position + bytesRead]; - result += (nextByte & 0x7F) << (7 * bytesRead); - bytesRead++; - } while (nextByte >= 0x80); - - this.position += bytesRead; - - return result; -}; - -}).call(this,require("buffer").Buffer) -},{"buffer":182}],349:[function(require,module,exports){ -(function (Buffer){ -module.exports = BinaryWriter; - -function BinaryWriter(size, allowResize) { - this.buffer = new Buffer(size); - this.position = 0; - this.allowResize = allowResize; -} - -function _write(write, size) { - return function (value, noAssert) { - this.ensureSize(size); - - write.call(this.buffer, value, this.position, noAssert); - this.position += size; - }; -} - -BinaryWriter.prototype.writeUInt8 = _write(Buffer.prototype.writeUInt8, 1); -BinaryWriter.prototype.writeUInt16LE = _write(Buffer.prototype.writeUInt16LE, 2); -BinaryWriter.prototype.writeUInt16BE = _write(Buffer.prototype.writeUInt16BE, 2); -BinaryWriter.prototype.writeUInt32LE = _write(Buffer.prototype.writeUInt32LE, 4); -BinaryWriter.prototype.writeUInt32BE = _write(Buffer.prototype.writeUInt32BE, 4); -BinaryWriter.prototype.writeInt8 = _write(Buffer.prototype.writeInt8, 1); -BinaryWriter.prototype.writeInt16LE = _write(Buffer.prototype.writeInt16LE, 2); -BinaryWriter.prototype.writeInt16BE = _write(Buffer.prototype.writeInt16BE, 2); -BinaryWriter.prototype.writeInt32LE = _write(Buffer.prototype.writeInt32LE, 4); -BinaryWriter.prototype.writeInt32BE = _write(Buffer.prototype.writeInt32BE, 4); -BinaryWriter.prototype.writeFloatLE = _write(Buffer.prototype.writeFloatLE, 4); -BinaryWriter.prototype.writeFloatBE = _write(Buffer.prototype.writeFloatBE, 4); -BinaryWriter.prototype.writeDoubleLE = _write(Buffer.prototype.writeDoubleLE, 8); -BinaryWriter.prototype.writeDoubleBE = _write(Buffer.prototype.writeDoubleBE, 8); - -BinaryWriter.prototype.writeBuffer = function (buffer) { - this.ensureSize(buffer.length); - - buffer.copy(this.buffer, this.position, 0, buffer.length); - this.position += buffer.length; -}; - -BinaryWriter.prototype.writeVarInt = function (value) { - var length = 1; - - while ((value & 0xFFFFFF80) !== 0) { - this.writeUInt8((value & 0x7F) | 0x80); - value >>>= 7; - length++; - } - - this.writeUInt8(value & 0x7F); - - return length; -}; - -BinaryWriter.prototype.ensureSize = function (size) { - if (this.buffer.length < this.position + size) { - if (this.allowResize) { - var tempBuffer = new Buffer(this.position + size); - this.buffer.copy(tempBuffer, 0, 0, this.buffer.length); - this.buffer = tempBuffer; - } - else { - throw new RangeError('index out of range'); - } - } -}; - -}).call(this,require("buffer").Buffer) -},{"buffer":182}],350:[function(require,module,exports){ -(function (Buffer){ -module.exports = Geometry; - -var Types = require('./types'); -var Point = require('./point'); -var LineString = require('./linestring'); -var Polygon = require('./polygon'); -var MultiPoint = require('./multipoint'); -var MultiLineString = require('./multilinestring'); -var MultiPolygon = require('./multipolygon'); -var GeometryCollection = require('./geometrycollection'); -var BinaryReader = require('./binaryreader'); -var BinaryWriter = require('./binarywriter'); -var WktParser = require('./wktparser'); -var ZigZag = require('./zigzag.js'); - -function Geometry() { - this.srid = undefined; - this.hasZ = false; - this.hasM = false; -} - -Geometry.parse = function (value, options) { - var valueType = typeof value; - - if (valueType === 'string' || value instanceof WktParser) - return Geometry._parseWkt(value); - else if (Buffer.isBuffer(value) || value instanceof BinaryReader) - return Geometry._parseWkb(value, options); - else - throw new Error('first argument must be a string or Buffer'); -}; - -Geometry._parseWkt = function (value) { - var wktParser, - srid; - - if (value instanceof WktParser) - wktParser = value; - else - wktParser = new WktParser(value); - - var match = wktParser.matchRegex([/^SRID=(\d+);/]); - if (match) - srid = parseInt(match[1], 10); - - var geometryType = wktParser.matchType(); - var dimension = wktParser.matchDimension(); - - var options = { - srid: srid, - hasZ: dimension.hasZ, - hasM: dimension.hasM - }; - - switch (geometryType) { - case Types.wkt.Point: - return Point._parseWkt(wktParser, options); - case Types.wkt.LineString: - return LineString._parseWkt(wktParser, options); - case Types.wkt.Polygon: - return Polygon._parseWkt(wktParser, options); - case Types.wkt.MultiPoint: - return MultiPoint._parseWkt(wktParser, options); - case Types.wkt.MultiLineString: - return MultiLineString._parseWkt(wktParser, options); - case Types.wkt.MultiPolygon: - return MultiPolygon._parseWkt(wktParser, options); - case Types.wkt.GeometryCollection: - return GeometryCollection._parseWkt(wktParser, options); - } -}; - -Geometry._parseWkb = function (value, parentOptions) { - var binaryReader, - wkbType, - geometryType, - options = {}; - - if (value instanceof BinaryReader) - binaryReader = value; - else - binaryReader = new BinaryReader(value); - - binaryReader.isBigEndian = !binaryReader.readInt8(); - - wkbType = binaryReader.readUInt32(); - - options.hasSrid = (wkbType & 0x20000000) === 0x20000000; - options.isEwkb = (wkbType & 0x20000000) || (wkbType & 0x40000000) || (wkbType & 0x80000000); - - if (options.hasSrid) - options.srid = binaryReader.readUInt32(); - - options.hasZ = false; - options.hasM = false; - - if (!options.isEwkb && (!parentOptions || !parentOptions.isEwkb)) { - if (wkbType >= 1000 && wkbType < 2000) { - options.hasZ = true; - geometryType = wkbType - 1000; - } - else if (wkbType >= 2000 && wkbType < 3000) { - options.hasM = true; - geometryType = wkbType - 2000; - } - else if (wkbType >= 3000 && wkbType < 4000) { - options.hasZ = true; - options.hasM = true; - geometryType = wkbType - 3000; - } - else { - geometryType = wkbType; - } - } - else { - if (wkbType & 0x80000000) - options.hasZ = true; - if (wkbType & 0x40000000) - options.hasM = true; - - geometryType = wkbType & 0xF; - } - - switch (geometryType) { - case Types.wkb.Point: - return Point._parseWkb(binaryReader, options); - case Types.wkb.LineString: - return LineString._parseWkb(binaryReader, options); - case Types.wkb.Polygon: - return Polygon._parseWkb(binaryReader, options); - case Types.wkb.MultiPoint: - return MultiPoint._parseWkb(binaryReader, options); - case Types.wkb.MultiLineString: - return MultiLineString._parseWkb(binaryReader, options); - case Types.wkb.MultiPolygon: - return MultiPolygon._parseWkb(binaryReader, options); - case Types.wkb.GeometryCollection: - return GeometryCollection._parseWkb(binaryReader, options); - default: - throw new Error('GeometryType ' + geometryType + ' not supported'); - } -}; - -Geometry.parseTwkb = function (value) { - var binaryReader, - options = {}; - - if (value instanceof BinaryReader) - binaryReader = value; - else - binaryReader = new BinaryReader(value); - - var type = binaryReader.readUInt8(); - var metadataHeader = binaryReader.readUInt8(); - - var geometryType = type & 0x0F; - options.precision = ZigZag.decode(type >> 4); - options.precisionFactor = Math.pow(10, options.precision); - - options.hasBoundingBox = metadataHeader >> 0 & 1; - options.hasSizeAttribute = metadataHeader >> 1 & 1; - options.hasIdList = metadataHeader >> 2 & 1; - options.hasExtendedPrecision = metadataHeader >> 3 & 1; - options.isEmpty = metadataHeader >> 4 & 1; - - if (options.hasExtendedPrecision) { - var extendedPrecision = binaryReader.readUInt8(); - options.hasZ = (extendedPrecision & 0x01) === 0x01; - options.hasM = (extendedPrecision & 0x02) === 0x02; - - options.zPrecision = ZigZag.decode((extendedPrecision & 0x1C) >> 2); - options.zPrecisionFactor = Math.pow(10, options.zPrecision); - - options.mPrecision = ZigZag.decode((extendedPrecision & 0xE0) >> 5); - options.mPrecisionFactor = Math.pow(10, options.mPrecision); - } - else { - options.hasZ = false; - options.hasM = false; - } - - if (options.hasSizeAttribute) - binaryReader.readVarInt(); - if (options.hasBoundingBox) { - var dimensions = 2; - - if (options.hasZ) - dimensions++; - if (options.hasM) - dimensions++; - - for (var i = 0; i < dimensions; i++) { - binaryReader.readVarInt(); - binaryReader.readVarInt(); - } - } - - switch (geometryType) { - case Types.wkb.Point: - return Point._parseTwkb(binaryReader, options); - case Types.wkb.LineString: - return LineString._parseTwkb(binaryReader, options); - case Types.wkb.Polygon: - return Polygon._parseTwkb(binaryReader, options); - case Types.wkb.MultiPoint: - return MultiPoint._parseTwkb(binaryReader, options); - case Types.wkb.MultiLineString: - return MultiLineString._parseTwkb(binaryReader, options); - case Types.wkb.MultiPolygon: - return MultiPolygon._parseTwkb(binaryReader, options); - case Types.wkb.GeometryCollection: - return GeometryCollection._parseTwkb(binaryReader, options); - default: - throw new Error('GeometryType ' + geometryType + ' not supported'); - } -}; - -Geometry.parseGeoJSON = function (value) { - return Geometry._parseGeoJSON(value); -}; - -Geometry._parseGeoJSON = function (value, isSubGeometry) { - var geometry; - - switch (value.type) { - case Types.geoJSON.Point: - geometry = Point._parseGeoJSON(value); break; - case Types.geoJSON.LineString: - geometry = LineString._parseGeoJSON(value); break; - case Types.geoJSON.Polygon: - geometry = Polygon._parseGeoJSON(value); break; - case Types.geoJSON.MultiPoint: - geometry = MultiPoint._parseGeoJSON(value); break; - case Types.geoJSON.MultiLineString: - geometry = MultiLineString._parseGeoJSON(value); break; - case Types.geoJSON.MultiPolygon: - geometry = MultiPolygon._parseGeoJSON(value); break; - case Types.geoJSON.GeometryCollection: - geometry = GeometryCollection._parseGeoJSON(value); break; - default: - throw new Error('GeometryType ' + value.type + ' not supported'); - } - - if (value.crs && value.crs.type && value.crs.type === 'name' && value.crs.properties && value.crs.properties.name) { - var crs = value.crs.properties.name; - - if (crs.indexOf('EPSG:') === 0) - geometry.srid = parseInt(crs.substring(5)); - else if (crs.indexOf('urn:ogc:def:crs:EPSG::') === 0) - geometry.srid = parseInt(crs.substring(22)); - else - throw new Error('Unsupported crs: ' + crs); - } - else if (!isSubGeometry) { - geometry.srid = 4326; - } - - return geometry; -}; - -Geometry.prototype.toEwkt = function () { - return 'SRID=' + this.srid + ';' + this.toWkt(); -}; - -Geometry.prototype.toEwkb = function () { - var ewkb = new BinaryWriter(this._getWkbSize() + 4); - var wkb = this.toWkb(); - - ewkb.writeInt8(1); - ewkb.writeUInt32LE(wkb.slice(1, 5).readUInt32LE(0) | 0x20000000, true); - ewkb.writeUInt32LE(this.srid); - - ewkb.writeBuffer(wkb.slice(5)); - - return ewkb.buffer; -}; - -Geometry.prototype._getWktType = function (wktType, isEmpty) { - var wkt = wktType; - - if (this.hasZ && this.hasM) - wkt += ' ZM '; - else if (this.hasZ) - wkt += ' Z '; - else if (this.hasM) - wkt += ' M '; - - if (isEmpty && !this.hasZ && !this.hasM) - wkt += ' '; - - if (isEmpty) - wkt += 'EMPTY'; - - return wkt; -}; - -Geometry.prototype._getWktCoordinate = function (point) { - var coordinates = point.x + ' ' + point.y; - - if (this.hasZ) - coordinates += ' ' + point.z; - if (this.hasM) - coordinates += ' ' + point.m; - - return coordinates; -}; - -Geometry.prototype._writeWkbType = function (wkb, geometryType, parentOptions) { - var dimensionType = 0; - - if (typeof this.srid === 'undefined' && (!parentOptions || typeof parentOptions.srid === 'undefined')) { - if (this.hasZ && this.hasM) - dimensionType += 3000; - else if(this.hasZ) - dimensionType += 1000; - else if(this.hasM) - dimensionType += 2000; - } - else { - if (this.hasZ) - dimensionType |= 0x80000000; - if (this.hasM) - dimensionType |= 0x40000000; - } - - wkb.writeUInt32LE(dimensionType + geometryType, true); -}; - -Geometry.getTwkbPrecision = function (xyPrecision, zPrecision, mPrecision) { - return { - xy: xyPrecision, - z: zPrecision, - m: mPrecision, - xyFactor: Math.pow(10, xyPrecision), - zFactor: Math.pow(10, zPrecision), - mFactor: Math.pow(10, mPrecision) - }; -}; - -Geometry.prototype._writeTwkbHeader = function (twkb, geometryType, precision, isEmpty) { - var type = (ZigZag.encode(precision.xy) << 4) + geometryType; - var metadataHeader = (this.hasZ || this.hasM) << 3; - metadataHeader += isEmpty << 4; - - twkb.writeUInt8(type); - twkb.writeUInt8(metadataHeader); - - if (this.hasZ || this.hasM) { - var extendedPrecision = 0; - if (this.hasZ) - extendedPrecision |= 0x1; - if (this.hasM) - extendedPrecision |= 0x2; - - twkb.writeUInt8(extendedPrecision); - } -}; - -Geometry.prototype.toGeoJSON = function (options) { - var geoJSON = {}; - - if (this.srid) { - if (options) { - if (options.shortCrs) { - geoJSON.crs = { - type: 'name', - properties: { - name: 'EPSG:' + this.srid - } - }; - } - else if (options.longCrs) { - geoJSON.crs = { - type: 'name', - properties: { - name: 'urn:ogc:def:crs:EPSG::' + this.srid - } - }; - } - } - } - - return geoJSON; -}; - -}).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":263,"./binaryreader":348,"./binarywriter":349,"./geometrycollection":351,"./linestring":352,"./multilinestring":353,"./multipoint":354,"./multipolygon":355,"./point":356,"./polygon":357,"./types":358,"./wktparser":359,"./zigzag.js":361}],351:[function(require,module,exports){ -module.exports = GeometryCollection; - -var util = require('util'); - -var Types = require('./types'); -var Geometry = require('./geometry'); -var BinaryWriter = require('./binarywriter'); - -function GeometryCollection(geometries, srid) { - Geometry.call(this); - - this.geometries = geometries || []; - this.srid = srid; - - if (this.geometries.length > 0) { - this.hasZ = this.geometries[0].hasZ; - this.hasM = this.geometries[0].hasM; - } -} - -util.inherits(GeometryCollection, Geometry); - -GeometryCollection.Z = function (geometries, srid) { - var geometryCollection = new GeometryCollection(geometries, srid); - geometryCollection.hasZ = true; - return geometryCollection; -}; - -GeometryCollection.M = function (geometries, srid) { - var geometryCollection = new GeometryCollection(geometries, srid); - geometryCollection.hasM = true; - return geometryCollection; -}; - -GeometryCollection.ZM = function (geometries, srid) { - var geometryCollection = new GeometryCollection(geometries, srid); - geometryCollection.hasZ = true; - geometryCollection.hasM = true; - return geometryCollection; -}; - -GeometryCollection._parseWkt = function (value, options) { - var geometryCollection = new GeometryCollection(); - geometryCollection.srid = options.srid; - geometryCollection.hasZ = options.hasZ; - geometryCollection.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return geometryCollection; - - value.expectGroupStart(); - - do { - geometryCollection.geometries.push(Geometry.parse(value)); - } while (value.isMatch([','])); - - value.expectGroupEnd(); - - return geometryCollection; -}; - -GeometryCollection._parseWkb = function (value, options) { - var geometryCollection = new GeometryCollection(); - geometryCollection.srid = options.srid; - geometryCollection.hasZ = options.hasZ; - geometryCollection.hasM = options.hasM; - - var geometryCount = value.readUInt32(); - - for (var i = 0; i < geometryCount; i++) - geometryCollection.geometries.push(Geometry.parse(value, options)); - - return geometryCollection; -}; - -GeometryCollection._parseTwkb = function (value, options) { - var geometryCollection = new GeometryCollection(); - geometryCollection.hasZ = options.hasZ; - geometryCollection.hasM = options.hasM; - - if (options.isEmpty) - return geometryCollection; - - var geometryCount = value.readVarInt(); - - for (var i = 0; i < geometryCount; i++) - geometryCollection.geometries.push(Geometry.parseTwkb(value)); - - return geometryCollection; -}; - -GeometryCollection._parseGeoJSON = function (value) { - var geometryCollection = new GeometryCollection(); - - for (var i = 0; i < value.geometries.length; i++) - geometryCollection.geometries.push(Geometry._parseGeoJSON(value.geometries[i], true)); - - if (geometryCollection.geometries.length > 0) - geometryCollection.hasZ = geometryCollection.geometries[0].hasZ; - - return geometryCollection; -}; - -GeometryCollection.prototype.toWkt = function () { - if (this.geometries.length === 0) - return this._getWktType(Types.wkt.GeometryCollection, true); - - var wkt = this._getWktType(Types.wkt.GeometryCollection, false) + '('; - - for (var i = 0; i < this.geometries.length; i++) - wkt += this.geometries[i].toWkt() + ','; - - wkt = wkt.slice(0, -1); - wkt += ')'; - - return wkt; -}; - -GeometryCollection.prototype.toWkb = function () { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.GeometryCollection); - wkb.writeUInt32LE(this.geometries.length); - - for (var i = 0; i < this.geometries.length; i++) - wkb.writeBuffer(this.geometries[i].toWkb({ srid: this.srid })); - - return wkb.buffer; -}; - -GeometryCollection.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.geometries.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.GeometryCollection, precision, isEmpty); - - if (this.geometries.length > 0) { - twkb.writeVarInt(this.geometries.length); - - for (var i = 0; i < this.geometries.length; i++) - twkb.writeBuffer(this.geometries[i].toTwkb()); - } - - return twkb.buffer; -}; - -GeometryCollection.prototype._getWkbSize = function () { - var size = 1 + 4 + 4; - - for (var i = 0; i < this.geometries.length; i++) - size += this.geometries[i]._getWkbSize(); - - return size; -}; - -GeometryCollection.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.GeometryCollection; - geoJSON.geometries = []; - - for (var i = 0; i < this.geometries.length; i++) - geoJSON.geometries.push(this.geometries[i].toGeoJSON()); - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./types":358,"util":343}],352:[function(require,module,exports){ -module.exports = LineString; - -var util = require('util'); - -var Geometry = require('./geometry'); -var Types = require('./types'); -var Point = require('./point'); -var BinaryWriter = require('./binarywriter'); - -function LineString(points, srid) { - Geometry.call(this); - - this.points = points || []; - this.srid = srid; - - if (this.points.length > 0) { - this.hasZ = this.points[0].hasZ; - this.hasM = this.points[0].hasM; - } -} - -util.inherits(LineString, Geometry); - -LineString.Z = function (points, srid) { - var lineString = new LineString(points, srid); - lineString.hasZ = true; - return lineString; -}; - -LineString.M = function (points, srid) { - var lineString = new LineString(points, srid); - lineString.hasM = true; - return lineString; -}; - -LineString.ZM = function (points, srid) { - var lineString = new LineString(points, srid); - lineString.hasZ = true; - lineString.hasM = true; - return lineString; -}; - -LineString._parseWkt = function (value, options) { - var lineString = new LineString(); - lineString.srid = options.srid; - lineString.hasZ = options.hasZ; - lineString.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return lineString; - - value.expectGroupStart(); - lineString.points.push.apply(lineString.points, value.matchCoordinates(options)); - value.expectGroupEnd(); - - return lineString; -}; - -LineString._parseWkb = function (value, options) { - var lineString = new LineString(); - lineString.srid = options.srid; - lineString.hasZ = options.hasZ; - lineString.hasM = options.hasM; - - var pointCount = value.readUInt32(); - - for (var i = 0; i < pointCount; i++) - lineString.points.push(Point._readWkbPoint(value, options)); - - return lineString; -}; - -LineString._parseTwkb = function (value, options) { - var lineString = new LineString(); - lineString.hasZ = options.hasZ; - lineString.hasM = options.hasM; - - if (options.isEmpty) - return lineString; - - var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined); - var pointCount = value.readVarInt(); - - for (var i = 0; i < pointCount; i++) - lineString.points.push(Point._readTwkbPoint(value, options, previousPoint)); - - return lineString; -}; - -LineString._parseGeoJSON = function (value) { - var lineString = new LineString(); - - if (value.coordinates.length > 0) - lineString.hasZ = value.coordinates[0].length > 2; - - for (var i = 0; i < value.coordinates.length; i++) - lineString.points.push(Point._readGeoJSONPoint(value.coordinates[i])); - - return lineString; -}; - -LineString.prototype.toWkt = function () { - if (this.points.length === 0) - return this._getWktType(Types.wkt.LineString, true); - - return this._getWktType(Types.wkt.LineString, false) + this._toInnerWkt(); -}; - -LineString.prototype._toInnerWkt = function () { - var innerWkt = '('; - - for (var i = 0; i < this.points.length; i++) - innerWkt += this._getWktCoordinate(this.points[i]) + ','; - - innerWkt = innerWkt.slice(0, -1); - innerWkt += ')'; - - return innerWkt; -}; - -LineString.prototype.toWkb = function (parentOptions) { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.LineString, parentOptions); - wkb.writeUInt32LE(this.points.length); - - for (var i = 0; i < this.points.length; i++) - this.points[i]._writeWkbPoint(wkb); - - return wkb.buffer; -}; - -LineString.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.points.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.LineString, precision, isEmpty); - - if (this.points.length > 0) { - twkb.writeVarInt(this.points.length); - - var previousPoint = new Point(0, 0, 0, 0); - for (var i = 0; i < this.points.length; i++) - this.points[i]._writeTwkbPoint(twkb, precision, previousPoint); - } - - return twkb.buffer; -}; - -LineString.prototype._getWkbSize = function () { - var coordinateSize = 16; - - if (this.hasZ) - coordinateSize += 8; - if (this.hasM) - coordinateSize += 8; - - return 1 + 4 + 4 + (this.points.length * coordinateSize); -}; - -LineString.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.LineString; - geoJSON.coordinates = []; - - for (var i = 0; i < this.points.length; i++) { - if (this.hasZ) - geoJSON.coordinates.push([this.points[i].x, this.points[i].y, this.points[i].z]); - else - geoJSON.coordinates.push([this.points[i].x, this.points[i].y]); - } - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./point":356,"./types":358,"util":343}],353:[function(require,module,exports){ -module.exports = MultiLineString; - -var util = require('util'); - -var Types = require('./types'); -var Geometry = require('./geometry'); -var Point = require('./point'); -var LineString = require('./linestring'); -var BinaryWriter = require('./binarywriter'); - -function MultiLineString(lineStrings, srid) { - Geometry.call(this); - - this.lineStrings = lineStrings || []; - this.srid = srid; - - if (this.lineStrings.length > 0) { - this.hasZ = this.lineStrings[0].hasZ; - this.hasM = this.lineStrings[0].hasM; - } -} - -util.inherits(MultiLineString, Geometry); - -MultiLineString.Z = function (lineStrings, srid) { - var multiLineString = new MultiLineString(lineStrings, srid); - multiLineString.hasZ = true; - return multiLineString; -}; - -MultiLineString.M = function (lineStrings, srid) { - var multiLineString = new MultiLineString(lineStrings, srid); - multiLineString.hasM = true; - return multiLineString; -}; - -MultiLineString.ZM = function (lineStrings, srid) { - var multiLineString = new MultiLineString(lineStrings, srid); - multiLineString.hasZ = true; - multiLineString.hasM = true; - return multiLineString; -}; - -MultiLineString._parseWkt = function (value, options) { - var multiLineString = new MultiLineString(); - multiLineString.srid = options.srid; - multiLineString.hasZ = options.hasZ; - multiLineString.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return multiLineString; - - value.expectGroupStart(); - - do { - value.expectGroupStart(); - multiLineString.lineStrings.push(new LineString(value.matchCoordinates(options))); - value.expectGroupEnd(); - } while (value.isMatch([','])); - - value.expectGroupEnd(); - - return multiLineString; -}; - -MultiLineString._parseWkb = function (value, options) { - var multiLineString = new MultiLineString(); - multiLineString.srid = options.srid; - multiLineString.hasZ = options.hasZ; - multiLineString.hasM = options.hasM; - - var lineStringCount = value.readUInt32(); - - for (var i = 0; i < lineStringCount; i++) - multiLineString.lineStrings.push(Geometry.parse(value, options)); - - return multiLineString; -}; - -MultiLineString._parseTwkb = function (value, options) { - var multiLineString = new MultiLineString(); - multiLineString.hasZ = options.hasZ; - multiLineString.hasM = options.hasM; - - if (options.isEmpty) - return multiLineString; - - var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined); - var lineStringCount = value.readVarInt(); - - for (var i = 0; i < lineStringCount; i++) { - var lineString = new LineString(); - lineString.hasZ = options.hasZ; - lineString.hasM = options.hasM; - - var pointCount = value.readVarInt(); - - for (var j = 0; j < pointCount; j++) - lineString.points.push(Point._readTwkbPoint(value, options, previousPoint)); - - multiLineString.lineStrings.push(lineString); - } - - return multiLineString; -}; - -MultiLineString._parseGeoJSON = function (value) { - var multiLineString = new MultiLineString(); - - if (value.coordinates.length > 0 && value.coordinates[0].length > 0) - multiLineString.hasZ = value.coordinates[0][0].length > 2; - - for (var i = 0; i < value.coordinates.length; i++) - multiLineString.lineStrings.push(LineString._parseGeoJSON({ coordinates: value.coordinates[i] })); - - return multiLineString; -}; - -MultiLineString.prototype.toWkt = function () { - if (this.lineStrings.length === 0) - return this._getWktType(Types.wkt.MultiLineString, true); - - var wkt = this._getWktType(Types.wkt.MultiLineString, false) + '('; - - for (var i = 0; i < this.lineStrings.length; i++) - wkt += this.lineStrings[i]._toInnerWkt() + ','; - - wkt = wkt.slice(0, -1); - wkt += ')'; - - return wkt; -}; - -MultiLineString.prototype.toWkb = function () { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.MultiLineString); - wkb.writeUInt32LE(this.lineStrings.length); - - for (var i = 0; i < this.lineStrings.length; i++) - wkb.writeBuffer(this.lineStrings[i].toWkb({ srid: this.srid })); - - return wkb.buffer; -}; - -MultiLineString.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.lineStrings.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.MultiLineString, precision, isEmpty); - - if (this.lineStrings.length > 0) { - twkb.writeVarInt(this.lineStrings.length); - - var previousPoint = new Point(0, 0, 0, 0); - for (var i = 0; i < this.lineStrings.length; i++) { - twkb.writeVarInt(this.lineStrings[i].points.length); - - for (var j = 0; j < this.lineStrings[i].points.length; j++) - this.lineStrings[i].points[j]._writeTwkbPoint(twkb, precision, previousPoint); - } - } - - return twkb.buffer; -}; - -MultiLineString.prototype._getWkbSize = function () { - var size = 1 + 4 + 4; - - for (var i = 0; i < this.lineStrings.length; i++) - size += this.lineStrings[i]._getWkbSize(); - - return size; -}; - -MultiLineString.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.MultiLineString; - geoJSON.coordinates = []; - - for (var i = 0; i < this.lineStrings.length; i++) - geoJSON.coordinates.push(this.lineStrings[i].toGeoJSON().coordinates); - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./linestring":352,"./point":356,"./types":358,"util":343}],354:[function(require,module,exports){ -module.exports = MultiPoint; - -var util = require('util'); - -var Types = require('./types'); -var Geometry = require('./geometry'); -var Point = require('./point'); -var BinaryWriter = require('./binarywriter'); - -function MultiPoint(points, srid) { - Geometry.call(this); - - this.points = points || []; - this.srid = srid; - - if (this.points.length > 0) { - this.hasZ = this.points[0].hasZ; - this.hasM = this.points[0].hasM; - } -} - -util.inherits(MultiPoint, Geometry); - -MultiPoint.Z = function (points, srid) { - var multiPoint = new MultiPoint(points, srid); - multiPoint.hasZ = true; - return multiPoint; -}; - -MultiPoint.M = function (points, srid) { - var multiPoint = new MultiPoint(points, srid); - multiPoint.hasM = true; - return multiPoint; -}; - -MultiPoint.ZM = function (points, srid) { - var multiPoint = new MultiPoint(points, srid); - multiPoint.hasZ = true; - multiPoint.hasM = true; - return multiPoint; -}; - -MultiPoint._parseWkt = function (value, options) { - var multiPoint = new MultiPoint(); - multiPoint.srid = options.srid; - multiPoint.hasZ = options.hasZ; - multiPoint.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return multiPoint; - - value.expectGroupStart(); - multiPoint.points.push.apply(multiPoint.points, value.matchCoordinates(options)); - value.expectGroupEnd(); - - return multiPoint; -}; - -MultiPoint._parseWkb = function (value, options) { - var multiPoint = new MultiPoint(); - multiPoint.srid = options.srid; - multiPoint.hasZ = options.hasZ; - multiPoint.hasM = options.hasM; - - var pointCount = value.readUInt32(); - - for (var i = 0; i < pointCount; i++) - multiPoint.points.push(Geometry.parse(value, options)); - - return multiPoint; -}; - -MultiPoint._parseTwkb = function (value, options) { - var multiPoint = new MultiPoint(); - multiPoint.hasZ = options.hasZ; - multiPoint.hasM = options.hasM; - - if (options.isEmpty) - return multiPoint; - - var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined); - var pointCount = value.readVarInt(); - - for (var i = 0; i < pointCount; i++) - multiPoint.points.push(Point._readTwkbPoint(value, options, previousPoint)); - - return multiPoint; -}; - -MultiPoint._parseGeoJSON = function (value) { - var multiPoint = new MultiPoint(); - - if (value.coordinates.length > 0) - multiPoint.hasZ = value.coordinates[0].length > 2; - - for (var i = 0; i < value.coordinates.length; i++) - multiPoint.points.push(Point._parseGeoJSON({ coordinates: value.coordinates[i] })); - - return multiPoint; -}; - -MultiPoint.prototype.toWkt = function () { - if (this.points.length === 0) - return this._getWktType(Types.wkt.MultiPoint, true); - - var wkt = this._getWktType(Types.wkt.MultiPoint, false) + '('; - - for (var i = 0; i < this.points.length; i++) - wkt += this._getWktCoordinate(this.points[i]) + ','; - - wkt = wkt.slice(0, -1); - wkt += ')'; - - return wkt; -}; - -MultiPoint.prototype.toWkb = function () { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.MultiPoint); - wkb.writeUInt32LE(this.points.length); - - for (var i = 0; i < this.points.length; i++) - wkb.writeBuffer(this.points[i].toWkb({ srid: this.srid })); - - return wkb.buffer; -}; - -MultiPoint.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.points.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.MultiPoint, precision, isEmpty); - - if (this.points.length > 0) { - twkb.writeVarInt(this.points.length); - - var previousPoint = new Point(0, 0, 0, 0); - for (var i = 0; i < this.points.length; i++) - this.points[i]._writeTwkbPoint(twkb, precision, previousPoint); - } - - return twkb.buffer; -}; - -MultiPoint.prototype._getWkbSize = function () { - var coordinateSize = 16; - - if (this.hasZ) - coordinateSize += 8; - if (this.hasM) - coordinateSize += 8; - - coordinateSize += 5; - - return 1 + 4 + 4 + (this.points.length * coordinateSize); -}; - -MultiPoint.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.MultiPoint; - geoJSON.coordinates = []; - - for (var i = 0; i < this.points.length; i++) - geoJSON.coordinates.push(this.points[i].toGeoJSON().coordinates); - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./point":356,"./types":358,"util":343}],355:[function(require,module,exports){ -module.exports = MultiPolygon; - -var util = require('util'); - -var Types = require('./types'); -var Geometry = require('./geometry'); -var Point = require('./point'); -var Polygon = require('./polygon'); -var BinaryWriter = require('./binarywriter'); - -function MultiPolygon(polygons, srid) { - Geometry.call(this); - - this.polygons = polygons || []; - this.srid = srid; - - if (this.polygons.length > 0) { - this.hasZ = this.polygons[0].hasZ; - this.hasM = this.polygons[0].hasM; - } -} - -util.inherits(MultiPolygon, Geometry); - -MultiPolygon.Z = function (polygons, srid) { - var multiPolygon = new MultiPolygon(polygons, srid); - multiPolygon.hasZ = true; - return multiPolygon; -}; - -MultiPolygon.M = function (polygons, srid) { - var multiPolygon = new MultiPolygon(polygons, srid); - multiPolygon.hasM = true; - return multiPolygon; -}; - -MultiPolygon.ZM = function (polygons, srid) { - var multiPolygon = new MultiPolygon(polygons, srid); - multiPolygon.hasZ = true; - multiPolygon.hasM = true; - return multiPolygon; -}; - -MultiPolygon._parseWkt = function (value, options) { - var multiPolygon = new MultiPolygon(); - multiPolygon.srid = options.srid; - multiPolygon.hasZ = options.hasZ; - multiPolygon.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return multiPolygon; - - value.expectGroupStart(); - - do { - value.expectGroupStart(); - - var exteriorRing = []; - var interiorRings = []; - - value.expectGroupStart(); - exteriorRing.push.apply(exteriorRing, value.matchCoordinates(options)); - value.expectGroupEnd(); - - while (value.isMatch([','])) { - value.expectGroupStart(); - interiorRings.push(value.matchCoordinates(options)); - value.expectGroupEnd(); - } - - multiPolygon.polygons.push(new Polygon(exteriorRing, interiorRings)); - - value.expectGroupEnd(); - - } while (value.isMatch([','])); - - value.expectGroupEnd(); - - return multiPolygon; -}; - -MultiPolygon._parseWkb = function (value, options) { - var multiPolygon = new MultiPolygon(); - multiPolygon.srid = options.srid; - multiPolygon.hasZ = options.hasZ; - multiPolygon.hasM = options.hasM; - - var polygonCount = value.readUInt32(); - - for (var i = 0; i < polygonCount; i++) - multiPolygon.polygons.push(Geometry.parse(value, options)); - - return multiPolygon; -}; - -MultiPolygon._parseTwkb = function (value, options) { - var multiPolygon = new MultiPolygon(); - multiPolygon.hasZ = options.hasZ; - multiPolygon.hasM = options.hasM; - - if (options.isEmpty) - return multiPolygon; - - var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined); - var polygonCount = value.readVarInt(); - - for (var i = 0; i < polygonCount; i++) { - var polygon = new Polygon(); - polygon.hasZ = options.hasZ; - polygon.hasM = options.hasM; - - var ringCount = value.readVarInt(); - var exteriorRingCount = value.readVarInt(); - - for (var j = 0; j < exteriorRingCount; j++) - polygon.exteriorRing.push(Point._readTwkbPoint(value, options, previousPoint)); - - for (j = 1; j < ringCount; j++) { - var interiorRing = []; - - var interiorRingCount = value.readVarInt(); - - for (var k = 0; k < interiorRingCount; k++) - interiorRing.push(Point._readTwkbPoint(value, options, previousPoint)); - - polygon.interiorRings.push(interiorRing); - } - - multiPolygon.polygons.push(polygon); - } - - return multiPolygon; -}; - -MultiPolygon._parseGeoJSON = function (value) { - var multiPolygon = new MultiPolygon(); - - if (value.coordinates.length > 0 && value.coordinates[0].length > 0 && value.coordinates[0][0].length > 0) - multiPolygon.hasZ = value.coordinates[0][0][0].length > 2; - - for (var i = 0; i < value.coordinates.length; i++) - multiPolygon.polygons.push(Polygon._parseGeoJSON({ coordinates: value.coordinates[i] })); - - return multiPolygon; -}; - -MultiPolygon.prototype.toWkt = function () { - if (this.polygons.length === 0) - return this._getWktType(Types.wkt.MultiPolygon, true); - - var wkt = this._getWktType(Types.wkt.MultiPolygon, false) + '('; - - for (var i = 0; i < this.polygons.length; i++) - wkt += this.polygons[i]._toInnerWkt() + ','; - - wkt = wkt.slice(0, -1); - wkt += ')'; - - return wkt; -}; - -MultiPolygon.prototype.toWkb = function () { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.MultiPolygon); - wkb.writeUInt32LE(this.polygons.length); - - for (var i = 0; i < this.polygons.length; i++) - wkb.writeBuffer(this.polygons[i].toWkb({ srid: this.srid })); - - return wkb.buffer; -}; - -MultiPolygon.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.polygons.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.MultiPolygon, precision, isEmpty); - - if (this.polygons.length > 0) { - twkb.writeVarInt(this.polygons.length); - - var previousPoint = new Point(0, 0, 0, 0); - for (var i = 0; i < this.polygons.length; i++) { - twkb.writeVarInt(1 + this.polygons[i].interiorRings.length); - - twkb.writeVarInt(this.polygons[i].exteriorRing.length); - - for (var j = 0; j < this.polygons[i].exteriorRing.length; j++) - this.polygons[i].exteriorRing[j]._writeTwkbPoint(twkb, precision, previousPoint); - - for (j = 0; j < this.polygons[i].interiorRings.length; j++) { - twkb.writeVarInt(this.polygons[i].interiorRings[j].length); - - for (var k = 0; k < this.polygons[i].interiorRings[j].length; k++) - this.polygons[i].interiorRings[j][k]._writeTwkbPoint(twkb, precision, previousPoint); - } - } - } - - return twkb.buffer; -}; - -MultiPolygon.prototype._getWkbSize = function () { - var size = 1 + 4 + 4; - - for (var i = 0; i < this.polygons.length; i++) - size += this.polygons[i]._getWkbSize(); - - return size; -}; - -MultiPolygon.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.MultiPolygon; - geoJSON.coordinates = []; - - for (var i = 0; i < this.polygons.length; i++) - geoJSON.coordinates.push(this.polygons[i].toGeoJSON().coordinates); - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./point":356,"./polygon":357,"./types":358,"util":343}],356:[function(require,module,exports){ -module.exports = Point; - -var util = require('util'); - -var Geometry = require('./geometry'); -var Types = require('./types'); -var BinaryWriter = require('./binarywriter'); -var ZigZag = require('./zigzag.js'); - -function Point(x, y, z, m, srid) { - Geometry.call(this); - - this.x = x; - this.y = y; - this.z = z; - this.m = m; - this.srid = srid; - - this.hasZ = typeof this.z !== 'undefined'; - this.hasM = typeof this.m !== 'undefined'; -} - -util.inherits(Point, Geometry); - -Point.Z = function (x, y, z, srid) { - var point = new Point(x, y, z, undefined, srid); - point.hasZ = true; - return point; -}; - -Point.M = function (x, y, m, srid) { - var point = new Point(x, y, undefined, m, srid); - point.hasM = true; - return point; -}; - -Point.ZM = function (x, y, z, m, srid) { - var point = new Point(x, y, z, m, srid); - point.hasZ = true; - point.hasM = true; - return point; -}; - -Point._parseWkt = function (value, options) { - var point = new Point(); - point.srid = options.srid; - point.hasZ = options.hasZ; - point.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return point; - - value.expectGroupStart(); - - var coordinate = value.matchCoordinate(options); - - point.x = coordinate.x; - point.y = coordinate.y; - point.z = coordinate.z; - point.m = coordinate.m; - - value.expectGroupEnd(); - - return point; -}; - -Point._parseWkb = function (value, options) { - var point = Point._readWkbPoint(value, options); - point.srid = options.srid; - return point; -}; - -Point._readWkbPoint = function (value, options) { - return new Point(value.readDouble(), value.readDouble(), - options.hasZ ? value.readDouble() : undefined, - options.hasM ? value.readDouble() : undefined); -}; - -Point._parseTwkb = function (value, options) { - var point = new Point(); - point.hasZ = options.hasZ; - point.hasM = options.hasM; - - if (options.isEmpty) - return point; - - point.x = ZigZag.decode(value.readVarInt()) / options.precisionFactor; - point.y = ZigZag.decode(value.readVarInt()) / options.precisionFactor; - point.z = options.hasZ ? ZigZag.decode(value.readVarInt()) / options.zPrecisionFactor : undefined; - point.m = options.hasM ? ZigZag.decode(value.readVarInt()) / options.mPrecisionFactor : undefined; - - return point; -}; - -Point._readTwkbPoint = function (value, options, previousPoint) { - previousPoint.x += ZigZag.decode(value.readVarInt()) / options.precisionFactor; - previousPoint.y += ZigZag.decode(value.readVarInt()) / options.precisionFactor; - - if (options.hasZ) - previousPoint.z += ZigZag.decode(value.readVarInt()) / options.zPrecisionFactor; - if (options.hasM) - previousPoint.m += ZigZag.decode(value.readVarInt()) / options.mPrecisionFactor; - - return new Point(previousPoint.x, previousPoint.y, previousPoint.z, previousPoint.m); -}; - -Point._parseGeoJSON = function (value) { - return Point._readGeoJSONPoint(value.coordinates); -}; - -Point._readGeoJSONPoint = function (coordinates) { - if (coordinates.length === 0) - return new Point(); - - if (coordinates.length > 2) - return new Point(coordinates[0], coordinates[1], coordinates[2]); - - return new Point(coordinates[0], coordinates[1]); -}; - -Point.prototype.toWkt = function () { - if (typeof this.x === 'undefined' && typeof this.y === 'undefined' && - typeof this.z === 'undefined' && typeof this.m === 'undefined') - return this._getWktType(Types.wkt.Point, true); - - return this._getWktType(Types.wkt.Point, false) + '(' + this._getWktCoordinate(this) + ')'; -}; - -Point.prototype.toWkb = function (parentOptions) { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - this._writeWkbType(wkb, Types.wkb.Point, parentOptions); - - if (typeof this.x === 'undefined' && typeof this.y === 'undefined') { - wkb.writeDoubleLE(NaN); - wkb.writeDoubleLE(NaN); - - if (this.hasZ) - wkb.writeDoubleLE(NaN); - if (this.hasM) - wkb.writeDoubleLE(NaN); - } - else { - this._writeWkbPoint(wkb); - } - - return wkb.buffer; -}; - -Point.prototype._writeWkbPoint = function (wkb) { - wkb.writeDoubleLE(this.x); - wkb.writeDoubleLE(this.y); - - if (this.hasZ) - wkb.writeDoubleLE(this.z); - if (this.hasM) - wkb.writeDoubleLE(this.m); -}; - -Point.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = typeof this.x === 'undefined' && typeof this.y === 'undefined'; - - this._writeTwkbHeader(twkb, Types.wkb.Point, precision, isEmpty); - - if (!isEmpty) - this._writeTwkbPoint(twkb, precision, new Point(0, 0, 0, 0)); - - return twkb.buffer; -}; - -Point.prototype._writeTwkbPoint = function (twkb, precision, previousPoint) { - var x = this.x * precision.xyFactor; - var y = this.y * precision.xyFactor; - var z = this.z * precision.zFactor; - var m = this.m * precision.mFactor; - - twkb.writeVarInt(ZigZag.encode(x - previousPoint.x)); - twkb.writeVarInt(ZigZag.encode(y - previousPoint.y)); - if (this.hasZ) - twkb.writeVarInt(ZigZag.encode(z - previousPoint.z)); - if (this.hasM) - twkb.writeVarInt(ZigZag.encode(m - previousPoint.m)); - - previousPoint.x = x; - previousPoint.y = y; - previousPoint.z = z; - previousPoint.m = m; -}; - -Point.prototype._getWkbSize = function () { - var size = 1 + 4 + 8 + 8; - - if (this.hasZ) - size += 8; - if (this.hasM) - size += 8; - - return size; -}; - -Point.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.Point; - - if (typeof this.x === 'undefined' && typeof this.y === 'undefined') - geoJSON.coordinates = []; - else if (typeof this.z !== 'undefined') - geoJSON.coordinates = [this.x, this.y, this.z]; - else - geoJSON.coordinates = [this.x, this.y]; - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./types":358,"./zigzag.js":361,"util":343}],357:[function(require,module,exports){ -module.exports = Polygon; - -var util = require('util'); - -var Geometry = require('./geometry'); -var Types = require('./types'); -var Point = require('./point'); -var BinaryWriter = require('./binarywriter'); - -function Polygon(exteriorRing, interiorRings, srid) { - Geometry.call(this); - - this.exteriorRing = exteriorRing || []; - this.interiorRings = interiorRings || []; - this.srid = srid; - - if (this.exteriorRing.length > 0) { - this.hasZ = this.exteriorRing[0].hasZ; - this.hasM = this.exteriorRing[0].hasM; - } -} - -util.inherits(Polygon, Geometry); - -Polygon.Z = function (exteriorRing, interiorRings, srid) { - var polygon = new Polygon(exteriorRing, interiorRings, srid); - polygon.hasZ = true; - return polygon; -}; - -Polygon.M = function (exteriorRing, interiorRings, srid) { - var polygon = new Polygon(exteriorRing, interiorRings, srid); - polygon.hasM = true; - return polygon; -}; - -Polygon.ZM = function (exteriorRing, interiorRings, srid) { - var polygon = new Polygon(exteriorRing, interiorRings, srid); - polygon.hasZ = true; - polygon.hasM = true; - return polygon; -}; - -Polygon._parseWkt = function (value, options) { - var polygon = new Polygon(); - polygon.srid = options.srid; - polygon.hasZ = options.hasZ; - polygon.hasM = options.hasM; - - if (value.isMatch(['EMPTY'])) - return polygon; - - value.expectGroupStart(); - - value.expectGroupStart(); - polygon.exteriorRing.push.apply(polygon.exteriorRing, value.matchCoordinates(options)); - value.expectGroupEnd(); - - while (value.isMatch([','])) { - value.expectGroupStart(); - polygon.interiorRings.push(value.matchCoordinates(options)); - value.expectGroupEnd(); - } - - value.expectGroupEnd(); - - return polygon; -}; - -Polygon._parseWkb = function (value, options) { - var polygon = new Polygon(); - polygon.srid = options.srid; - polygon.hasZ = options.hasZ; - polygon.hasM = options.hasM; - - var ringCount = value.readUInt32(); - - if (ringCount > 0) { - var exteriorRingCount = value.readUInt32(); - - for (var i = 0; i < exteriorRingCount; i++) - polygon.exteriorRing.push(Point._readWkbPoint(value, options)); - - for (i = 1; i < ringCount; i++) { - var interiorRing = []; - - var interiorRingCount = value.readUInt32(); - - for (var j = 0; j < interiorRingCount; j++) - interiorRing.push(Point._readWkbPoint(value, options)); - - polygon.interiorRings.push(interiorRing); - } - } - - return polygon; -}; - -Polygon._parseTwkb = function (value, options) { - var polygon = new Polygon(); - polygon.hasZ = options.hasZ; - polygon.hasM = options.hasM; - - if (options.isEmpty) - return polygon; - - var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined); - var ringCount = value.readVarInt(); - var exteriorRingCount = value.readVarInt(); - - for (var i = 0; i < exteriorRingCount; i++) - polygon.exteriorRing.push(Point._readTwkbPoint(value, options, previousPoint)); - - for (i = 1; i < ringCount; i++) { - var interiorRing = []; - - var interiorRingCount = value.readVarInt(); - - for (var j = 0; j < interiorRingCount; j++) - interiorRing.push(Point._readTwkbPoint(value, options, previousPoint)); - - polygon.interiorRings.push(interiorRing); - } - - return polygon; -}; - -Polygon._parseGeoJSON = function (value) { - var polygon = new Polygon(); - - if (value.coordinates.length > 0 && value.coordinates[0].length > 0) - polygon.hasZ = value.coordinates[0][0].length > 2; - - for (var i = 0; i < value.coordinates.length; i++) { - if (i > 0) - polygon.interiorRings.push([]); - - for (var j = 0; j < value.coordinates[i].length; j++) { - if (i === 0) - polygon.exteriorRing.push(Point._readGeoJSONPoint(value.coordinates[i][j])); - else - polygon.interiorRings[i - 1].push(Point._readGeoJSONPoint(value.coordinates[i][j])); - } - } - - return polygon; -}; - -Polygon.prototype.toWkt = function () { - if (this.exteriorRing.length === 0) - return this._getWktType(Types.wkt.Polygon, true); - - return this._getWktType(Types.wkt.Polygon, false) + this._toInnerWkt(); -}; - -Polygon.prototype._toInnerWkt = function () { - var innerWkt = '(('; - - for (var i = 0; i < this.exteriorRing.length; i++) - innerWkt += this._getWktCoordinate(this.exteriorRing[i]) + ','; - - innerWkt = innerWkt.slice(0, -1); - innerWkt += ')'; - - for (i = 0; i < this.interiorRings.length; i++) { - innerWkt += ',('; - - for (var j = 0; j < this.interiorRings[i].length; j++) { - innerWkt += this._getWktCoordinate(this.interiorRings[i][j]) + ','; - } - - innerWkt = innerWkt.slice(0, -1); - innerWkt += ')'; - } - - innerWkt += ')'; - - return innerWkt; -}; - -Polygon.prototype.toWkb = function (parentOptions) { - var wkb = new BinaryWriter(this._getWkbSize()); - - wkb.writeInt8(1); - - this._writeWkbType(wkb, Types.wkb.Polygon, parentOptions); - - if (this.exteriorRing.length > 0) { - wkb.writeUInt32LE(1 + this.interiorRings.length); - wkb.writeUInt32LE(this.exteriorRing.length); - } - else { - wkb.writeUInt32LE(0); - } - - for (var i = 0; i < this.exteriorRing.length; i++) - this.exteriorRing[i]._writeWkbPoint(wkb); - - for (i = 0; i < this.interiorRings.length; i++) { - wkb.writeUInt32LE(this.interiorRings[i].length); - - for (var j = 0; j < this.interiorRings[i].length; j++) - this.interiorRings[i][j]._writeWkbPoint(wkb); - } - - return wkb.buffer; -}; - -Polygon.prototype.toTwkb = function () { - var twkb = new BinaryWriter(0, true); - - var precision = Geometry.getTwkbPrecision(5, 0, 0); - var isEmpty = this.exteriorRing.length === 0; - - this._writeTwkbHeader(twkb, Types.wkb.Polygon, precision, isEmpty); - - if (this.exteriorRing.length > 0) { - twkb.writeVarInt(1 + this.interiorRings.length); - - twkb.writeVarInt(this.exteriorRing.length); - - var previousPoint = new Point(0, 0, 0, 0); - for (var i = 0; i < this.exteriorRing.length; i++) - this.exteriorRing[i]._writeTwkbPoint(twkb, precision, previousPoint); - - for (i = 0; i < this.interiorRings.length; i++) { - twkb.writeVarInt(this.interiorRings[i].length); - - for (var j = 0; j < this.interiorRings[i].length; j++) - this.interiorRings[i][j]._writeTwkbPoint(twkb, precision, previousPoint); - } - } - - return twkb.buffer; -}; - -Polygon.prototype._getWkbSize = function () { - var coordinateSize = 16; - - if (this.hasZ) - coordinateSize += 8; - if (this.hasM) - coordinateSize += 8; - - var size = 1 + 4 + 4; - - if (this.exteriorRing.length > 0) - size += 4 + (this.exteriorRing.length * coordinateSize); - - for (var i = 0; i < this.interiorRings.length; i++) - size += 4 + (this.interiorRings[i].length * coordinateSize); - - return size; -}; - -Polygon.prototype.toGeoJSON = function (options) { - var geoJSON = Geometry.prototype.toGeoJSON.call(this, options); - geoJSON.type = Types.geoJSON.Polygon; - geoJSON.coordinates = []; - - if (this.exteriorRing.length > 0) { - var exteriorRing = []; - - for (var i = 0; i < this.exteriorRing.length; i++) { - if (this.hasZ) - exteriorRing.push([this.exteriorRing[i].x, this.exteriorRing[i].y, this.exteriorRing[i].z]); - else - exteriorRing.push([this.exteriorRing[i].x, this.exteriorRing[i].y]); - } - - geoJSON.coordinates.push(exteriorRing); - } - - for (var j = 0; j < this.interiorRings.length; j++) { - var interiorRing = []; - - for (var k = 0; k < this.interiorRings[j].length; k++) { - if (this.hasZ) - interiorRing.push([this.interiorRings[j][k].x, this.interiorRings[j][k].y, this.interiorRings[j][k].z]); - else - interiorRing.push([this.interiorRings[j][k].x, this.interiorRings[j][k].y]); - } - - geoJSON.coordinates.push(interiorRing); - } - - return geoJSON; -}; - -},{"./binarywriter":349,"./geometry":350,"./point":356,"./types":358,"util":343}],358:[function(require,module,exports){ -module.exports = { - wkt: { - Point: 'POINT', - LineString: 'LINESTRING', - Polygon: 'POLYGON', - MultiPoint: 'MULTIPOINT', - MultiLineString: 'MULTILINESTRING', - MultiPolygon: 'MULTIPOLYGON', - GeometryCollection: 'GEOMETRYCOLLECTION' - }, - wkb: { - Point: 1, - LineString: 2, - Polygon: 3, - MultiPoint: 4, - MultiLineString: 5, - MultiPolygon: 6, - GeometryCollection: 7 - }, - geoJSON: { - Point: 'Point', - LineString: 'LineString', - Polygon: 'Polygon', - MultiPoint: 'MultiPoint', - MultiLineString: 'MultiLineString', - MultiPolygon: 'MultiPolygon', - GeometryCollection: 'GeometryCollection' - } -}; - -},{}],359:[function(require,module,exports){ -module.exports = WktParser; - -var Types = require('./types'); -var Point = require('./point'); - -function WktParser(value) { - this.value = value; - this.position = 0; -} - -WktParser.prototype.match = function (tokens) { - this.skipWhitespaces(); - - for (var i = 0; i < tokens.length; i++) { - if (this.value.substring(this.position).indexOf(tokens[i]) === 0) { - this.position += tokens[i].length; - return tokens[i]; - } - } - - return null; -}; - -WktParser.prototype.matchRegex = function (tokens) { - this.skipWhitespaces(); - - for (var i = 0; i < tokens.length; i++) { - var match = this.value.substring(this.position).match(tokens[i]); - - if (match) { - this.position += match[0].length; - return match; - } - } - - return null; -}; - -WktParser.prototype.isMatch = function (tokens) { - this.skipWhitespaces(); - - for (var i = 0; i < tokens.length; i++) { - if (this.value.substring(this.position).indexOf(tokens[i]) === 0) { - this.position += tokens[i].length; - return true; - } - } - - return false; -}; - -WktParser.prototype.matchType = function () { - var geometryType = this.match([Types.wkt.Point, Types.wkt.LineString, Types.wkt.Polygon, Types.wkt.MultiPoint, - Types.wkt.MultiLineString, Types.wkt.MultiPolygon, Types.wkt.GeometryCollection]); - - if (!geometryType) - throw new Error('Expected geometry type'); - - return geometryType; -}; - -WktParser.prototype.matchDimension = function () { - var dimension = this.match(['ZM', 'Z', 'M']); - - switch (dimension) { - case 'ZM': return { hasZ: true, hasM: true }; - case 'Z': return { hasZ: true, hasM: false }; - case 'M': return { hasZ: false, hasM: true }; - default: return { hasZ: false, hasM: false }; - } -}; - -WktParser.prototype.expectGroupStart = function () { - if (!this.isMatch(['('])) - throw new Error('Expected group start'); -}; - -WktParser.prototype.expectGroupEnd = function () { - if (!this.isMatch([')'])) - throw new Error('Expected group end'); -}; - -WktParser.prototype.matchCoordinate = function (options) { - var match; - - if (options.hasZ && options.hasM) - match = this.matchRegex([/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)\s+(-?\d+\.?\d*)\s+(-?\d+\.?\d*)/]); - else if (options.hasZ || options.hasM) - match = this.matchRegex([/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)\s+(-?\d+\.?\d*)/]); - else - match = this.matchRegex([/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)/]); - - if (!match) - throw new Error('Expected coordinates'); - - if (options.hasZ && options.hasM) - return new Point(parseFloat(match[1]), parseFloat(match[2]), parseFloat(match[3]), parseFloat(match[4])); - else if (options.hasZ) - return new Point(parseFloat(match[1]), parseFloat(match[2]), parseFloat(match[3])); - else if (options.hasM) - return new Point(parseFloat(match[1]), parseFloat(match[2]), undefined, parseFloat(match[3])); - else - return new Point(parseFloat(match[1]), parseFloat(match[2])); -}; - -WktParser.prototype.matchCoordinates = function (options) { - var coordinates = []; - - do { - var startsWithBracket = this.isMatch(['(']); - - coordinates.push(this.matchCoordinate(options)); - - if (startsWithBracket) - this.expectGroupEnd(); - } while (this.isMatch([','])); - - return coordinates; -}; - -WktParser.prototype.skipWhitespaces = function () { - while (this.position < this.value.length && this.value[this.position] === ' ') - this.position++; -}; - -},{"./point":356,"./types":358}],360:[function(require,module,exports){ -exports.Types = require('./types'); -exports.Geometry = require('./geometry'); -exports.Point = require('./point'); -exports.LineString = require('./linestring'); -exports.Polygon = require('./polygon'); -exports.MultiPoint = require('./multipoint'); -exports.MultiLineString = require('./multilinestring'); -exports.MultiPolygon = require('./multipolygon'); -exports.GeometryCollection = require('./geometrycollection'); -},{"./geometry":350,"./geometrycollection":351,"./linestring":352,"./multilinestring":353,"./multipoint":354,"./multipolygon":355,"./point":356,"./polygon":357,"./types":358}],361:[function(require,module,exports){ -module.exports = { - encode: function (value) { - return (value << 1) ^ (value >> 31); - }, - decode: function (value) { - return (value >> 1) ^ (-(value & 1)); - } -}; - -},{}],362:[function(require,module,exports){ -module.exports = extend - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -function extend() { - var target = {} - - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i] - - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - target[key] = source[key] - } - } - } - - return target -} - -},{}]},{},[1])(1) -}); diff --git a/libs/potree/lazylibs/geopackage/geopackage.min.js b/libs/potree/lazylibs/geopackage/geopackage.min.js deleted file mode 100644 index 856963d..0000000 --- a/libs/potree/lazylibs/geopackage/geopackage.min.js +++ /dev/null @@ -1,97 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.geopackage=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o1){return callback(new Error("Unexpected state. More than one Tile Matrix Set matched for table name: "+tableName+", count: "+results.length))}var tileMatrixSet=new TileMatrixSet;tms.populateObjectFromResult(tileMatrixSet,results[0]);this.getTileDaoWithTileMatrixSet(tileMatrixSet,callback)}.bind(this))};GeoPackage.prototype.getTileTables=function(callback){var tms=this.getTileMatrixSetDao();tms.isTableExists(function(err,exists){if(!exists){return callback(null,[])}tms.getTileTables(callback)})};GeoPackage.prototype.getFeatureTables=function(callback){var gcd=this.getGeometryColumnsDao();gcd.isTableExists(function(err,exists){if(!exists){return callback(null,[])}gcd.getFeatureTables(callback)})};GeoPackage.prototype.getGeometryColumnsDao=function(){return new GeometryColumnsDao(this.connection)};GeoPackage.prototype.getFeatureDaoWithGeometryColumns=function(geometryColumns,callback){if(!geometryColumns){return callback(new Error("Non null Geometry Columns is required to create Feature DAO"))}var tableReader=new FeatureTableReader(geometryColumns);var featureTable=tableReader.readFeatureTable(this.connection,function(err,featureTable){if(err){return callback(err)}var dao=new FeatureDao(this.connection,featureTable,geometryColumns,this.metadataDb);callback(null,dao)}.bind(this))};GeoPackage.prototype.getFeatureDaoWithContents=function(contents,callback){};GeoPackage.prototype.getFeatureDaoWithTableName=function(tableName,callback){var self=this;var dao=this.getGeometryColumnsDao();var geometryColumns=dao.queryForTableName(tableName,function(err,geometryColumns){if(!geometryColumns){return callback(new Error("No Feature Table exists for table name: "+tableName))}self.getFeatureDaoWithGeometryColumns(geometryColumns,callback)})};module.exports=GeoPackage},{"./core/contents":"/data/github/geopackage-node/lib/core/contents/index.js","./core/srs":"/data/github/geopackage-node/lib/core/srs/index.js","./features/columns":"/data/github/geopackage-node/lib/features/columns/index.js","./features/user/featureDao":"/data/github/geopackage-node/lib/features/user/featureDao.js","./features/user/featureTableReader":"/data/github/geopackage-node/lib/features/user/featureTableReader.js","./tiles/matrix":"/data/github/geopackage-node/lib/tiles/matrix/index.js","./tiles/matrixset":"/data/github/geopackage-node/lib/tiles/matrixset/index.js","./tiles/user/tileDao":"/data/github/geopackage-node/lib/tiles/user/tileDao.js","./tiles/user/tileTableReader":"/data/github/geopackage-node/lib/tiles/user/tileTableReader.js",async:"/data/github/geopackage-node/node_modules/async/lib/async.js"}],"/data/github/geopackage-node/lib/geoPackageConstants.js":[function(require,module,exports){exports.GEOPACKAGE_EXTENSION="gpkg";exports.GEOPACKAGE_EXTENDED_EXTENSION="gpkx";exports.APPLICATION_ID="GP10";exports.GEOPACKAGE_EXTENSION_AUTHOR=exports.GEOPACKAGE_EXTENSION;exports.GEOMETRY_EXTENSION_PREFIX="geom";exports.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER="GP";exports.GEOPACKAGE_GEOMETRY_VERSION_1=0;exports.SQLITE_HEADER_PREFIX="SQLite format 3"},{}],"/data/github/geopackage-node/lib/geoPackageManager.js":[function(require,module,exports){var async=require("async"),path=require("path"),GeoPackage=require("./geoPackage"),GeoPackageValidate=require("./validate/geoPackageValidate"),GeoPackageConnection=require("./db/geoPackageConnection");module.exports.open=function(filePath,callback){var error=GeoPackageValidate.validateGeoPackageExtension(filePath);if(error)return callback(error);var results={};async.waterfall([function(callback){GeoPackageConnection.connect(filePath,function(err,connection){if(err){console.log("cannot open "+filePath);return callback(err)}results.connection=connection;callback(err,results)})},function(results,callback){results.geoPackage=new GeoPackage(path.basename(filePath),filePath,results.connection);callback(null,results)},function(results,callback){GeoPackageValidate.hasMinimumTables(results.geoPackage,function(err){callback(err,results)})}],function(err,results){if(err){return callback(err)}callback(err,results.geoPackage)})}},{"./db/geoPackageConnection":"/data/github/geopackage-node/lib/db/geoPackageConnection.js","./geoPackage":"/data/github/geopackage-node/lib/geoPackage.js","./validate/geoPackageValidate":"/data/github/geopackage-node/lib/validate/geoPackageValidate.js",async:"/data/github/geopackage-node/node_modules/async/lib/async.js",path:"/data/github/geopackage-node/node_modules/browserify/node_modules/path-browserify/index.js"}],"/data/github/geopackage-node/lib/geom/geometryData.js":[function(require,module,exports){(function(Buffer){var GeoPackageConstants=require("../geoPackageConstants");var wkx=require("wkx");var BIG_ENDIAN=0;var LITTLE_ENDIAN=1;var GeometryData=function(buffer){this.empty=true;this.byteOrder=BIG_ENDIAN;this.fromData(buffer)};module.exports=GeometryData;GeometryData.prototype.fromData=function(buffer){this.buffer=buffer;if(buffer instanceof Uint8Array){this.buffer=buffer=new Buffer(buffer)}var magicString=buffer.toString("ascii",0,2);if(magicString!==GeoPackageConstants.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER){throw new Error("Unexpected GeoPackage Geometry magic number: "+magicString+", Expected: "+GeoPackageConstants.GEOPACKAGE_GEOMETRY_MAGIC_NUMBER)}var version=buffer.readUInt8(2);if(version!==GeoPackageConstants.GEOPACKAGE_GEOMETRY_VERSION_1){throw new Error("Unexpected GeoPackage Geometry version "+version+", Expected: "+GeoPackageConstants.GEOPACKAGE_GEOMETRY_VERSION_1)}var flags=buffer.readUInt8(3);var envelopeIndicator=this.readFlags(flags);this.srsId=buffer[this.byteOrder?"readUInt32LE":"readUInt32BE"](4);this.envelope=this.readEnvelope(envelopeIndicator,buffer);var offset=this.envelope.offset;var wkbBuffer=buffer.slice(offset);this.geometry=wkx.Geometry.parse(wkbBuffer)};GeometryData.prototype.readFlags=function(flagsInt){var reserved7=flagsInt>>7&1;var reserved6=flagsInt>>6&1;if(reserved7!==0||reserved6!==0){throw new Error("Unexpected GeoPackage Geometry flags. Flag bit 7 and 6 should both be 0, 7="+reserved7+", 6="+reserved6)}var binaryType=flagsInt>>5&1;this.extended=binaryType==1;var emptyValue=flagsInt>>4&1;this.empty=emptyValue==1;var envelopeIndicator=flagsInt>>1&7;if(envelopeIndicator>4){throw new Error("Unexpected GeoPackage Geometry flags. Envelope contents indicator must be between 0 and 4. Actual: "+envelopeIndicator)}var byteOrderValue=flagsInt&1;this.byteOrder=byteOrderValue;return envelopeIndicator};GeometryData.prototype.readEnvelope=function(envelopeIndicator,buffer){var readDoubleMethod="readDouble"+(this.byteOrder?"LE":"BE");var envelopeByteOffset=8;reads=0;var envelope={};if(envelopeIndicator<=0){envelope.offset=envelopeByteOffset;return envelope}envelope.minX=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.maxX=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.minY=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.maxY=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.hasZ=false;var minZ=undefined;var maxZ=undefined;envelope.hasM=false;var minM=undefined;var maxM=undefined;if(envelopeIndicator===2||envelopeIndicator===4){envelope.hasZ=true;envelope.minZ=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.maxZ=buffer[readDoubleMethod](envelopeByteOffset+8*reads++)}if(envelopeIndicator===3||envelopeIndicator===4){envelope.hasM=true;envelope.minM=buffer[readDoubleMethod](envelopeByteOffset+8*reads++);envelope.maxM=buffer[readDoubleMethod](envelopeByteOffset+8*reads++)}envelope.offset=envelopeByteOffset+8*reads;return envelope}}).call(this,require("buffer").Buffer)},{"../geoPackageConstants":"/data/github/geopackage-node/lib/geoPackageConstants.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",wkx:"/data/github/geopackage-node/node_modules/wkx/lib/wkx.js"}],"/data/github/geopackage-node/lib/geopackage.js":[function(require,module,exports){arguments[4]["/data/github/geopackage-node/lib/geoPackage.js"][0].apply(exports,arguments)},{"./core/contents":"/data/github/geopackage-node/lib/core/contents/index.js","./core/srs":"/data/github/geopackage-node/lib/core/srs/index.js","./features/columns":"/data/github/geopackage-node/lib/features/columns/index.js","./features/user/featureDao":"/data/github/geopackage-node/lib/features/user/featureDao.js","./features/user/featureTableReader":"/data/github/geopackage-node/lib/features/user/featureTableReader.js","./tiles/matrix":"/data/github/geopackage-node/lib/tiles/matrix/index.js","./tiles/matrixset":"/data/github/geopackage-node/lib/tiles/matrixset/index.js","./tiles/user/tileDao":"/data/github/geopackage-node/lib/tiles/user/tileDao.js","./tiles/user/tileTableReader":"/data/github/geopackage-node/lib/tiles/user/tileTableReader.js",async:"/data/github/geopackage-node/node_modules/async/lib/async.js"}],"/data/github/geopackage-node/lib/tiles/creator/index.js":[function(require,module,exports){(function(process){var fileType=require("file-type");module.exports.initialize=function(width,height,callback){if(typeof process!=="undefined"&&process.version){new LwipTileCreator(width,height,callback)}else{new CanvasTileCreator(width,height,callback)}};function CanvasTileCreator(width,height,callback){this.canvas=document.createElement("canvas");this.canvas.width=width;this.canvas.height=height;this.ctx=this.canvas.getContext("2d");callback(null,this)}CanvasTileCreator.prototype.addTile=function(tileData,xOffset,yOffset,callback){var type=fileType(tileData);var base64Data=btoa(String.fromCharCode.apply(null,tileData));var image=document.createElement("img");image.onload=function(){this.ctx.drawImage(image,xOffset,yOffset);callback()}.bind(this);image.src="data:"+type.mime+";base64,"+base64Data};CanvasTileCreator.prototype.getCompleteTile=function(format,callback){callback(null,this.canvas.toDataURL())};function LwipTileCreator(width,height,callback){this.lwip=require("lwip");this.width=width;this.height=height;this.lwip.create(this.width*3,this.height*3,function(err,image){this.image=image;callback(null,this)}.bind(this))}LwipTileCreator.prototype.addTile=function(tileData,xOffset,yOffset,callback){var type=fileType(tileData);this.lwip.open(tileData,type.ext,function(err,tile){this.image.paste(xOffset+this.width,yOffset+this.height,tile,callback)}.bind(this))};LwipTileCreator.prototype.getCompleteTile=function(format,callback){this.image.writeFile("/tmp/lwip.png",function(err){this.image.batch().crop(this.width,this.height).toBuffer(format,callback)}.bind(this))}}).call(this,require("_process"))},{_process:"/data/github/geopackage-node/node_modules/browserify/node_modules/process/browser.js","file-type":"/data/github/geopackage-node/node_modules/file-type/index.js",lwip:false}],"/data/github/geopackage-node/lib/tiles/matrix/index.js":[function(require,module,exports){var Dao=require("../../dao/dao"),TileMatrixSetDao=require("../matrixset").TileMatrixSetDao;var util=require("util");var TileMatrix=function(){this.tableName;this.zoomLevel;this.matrixWidth;this.matrixHeight;this.tileWidth;this.tileHeight;this.pixelXSize;this.pixelYSize};var TileMatrixDao=function(connection){Dao.call(this,connection)};util.inherits(TileMatrixDao,Dao);TileMatrixDao.prototype.createObject=function(){return new TileMatrix};TileMatrixDao.prototype.getContents=function(tileMatrix,callback){var dao=this.getContentsDao();return dao.queryForIdObject(tileMatrix.tableName,callback)};TileMatrixDao.prototype.getContentsDao=function(){var ContentsDao=require("../../core/contents").ContentsDao;return new ContentsDao(this.connection)};TileMatrixDao.prototype.getTileMatrixSet=function(tileMatrix,callback){var dao=this.getTileMatrixSetDao();return dao.queryForIdObject(tileMatrix.tableName,callback)};TileMatrixDao.prototype.getTileMatrixSetDao=function(){return new TileMatrixSetDao(this.connection)};TileMatrixDao.TABLE_NAME="gpkg_tile_matrix";TileMatrixDao.COLUMN_PK1="table_name";TileMatrixDao.COLUMN_PK2="zoom_level";TileMatrixDao.COLUMN_TABLE_NAME="table_name";TileMatrixDao.COLUMN_ZOOM_LEVEL="zoom_level";TileMatrixDao.COLUMN_MATRIX_WIDTH="matrix_width";TileMatrixDao.COLUMN_MATRIX_HEIGHT="matrix_height";TileMatrixDao.COLUMN_TILE_WIDTH="tile_width";TileMatrixDao.COLUMN_TILE_HEIGHT="tile_height";TileMatrixDao.COLUMN_PIXEL_X_SIZE="pixel_x_size";TileMatrixDao.COLUMN_PIXEL_Y_SIZE="pixel_y_size";TileMatrix.TABLE_NAME="tableName";TileMatrix.ZOOM_LEVEL="zoomLevel";TileMatrix.MATRIX_WIDTH="matrixWidth";TileMatrix.MATRIX_HEIGHT="matrixHeight";TileMatrix.TILE_WIDTH="tileWidth";TileMatrix.TILE_HEIGHT="tileHeight";TileMatrix.PIXEL_X_SIZE="pixelXSize";TileMatrix.PIXEL_Y_SIZE="pixelYSize";TileMatrixDao.prototype.tableName="gpkg_tile_matrix";TileMatrixDao.prototype.idColumns=[TileMatrixDao.COLUMN_PK1,TileMatrixDao.COLUMN_PK2];TileMatrixDao.prototype.columns=[TileMatrixDao.COLUMN_TABLE_NAME,TileMatrixDao.COLUMN_ZOOM_LEVEL,TileMatrixDao.COLUMN_MATRIX_WIDTH,TileMatrixDao.COLUMN_MATRIX_HEIGHT,TileMatrixDao.COLUMN_TILE_WIDTH,TileMatrixDao.COLUMN_TILE_HEIGHT,TileMatrixDao.COLUMN_PIXEL_X_SIZE,TileMatrixDao.COLUMN_PIXEL_Y_SIZE];TileMatrixDao.prototype.columnToPropertyMap={};TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_TABLE_NAME]=TileMatrix.TABLE_NAME;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_ZOOM_LEVEL]=TileMatrix.ZOOM_LEVEL;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_MATRIX_WIDTH]=TileMatrix.MATRIX_WIDTH;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_MATRIX_HEIGHT]=TileMatrix.MATRIX_HEIGHT;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_TILE_WIDTH]=TileMatrix.TILE_WIDTH;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_TILE_HEIGHT]=TileMatrix.TILE_HEIGHT;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_PIXEL_X_SIZE]=TileMatrix.PIXEL_X_SIZE;TileMatrixDao.prototype.columnToPropertyMap[TileMatrixDao.COLUMN_PIXEL_Y_SIZE]=TileMatrix.PIXEL_Y_SIZE;TileMatrixDao.columnIndexToPropertyMap=[TileMatrix.TABLE_NAME,TileMatrix.ZOOM_LEVEL,TileMatrix.MATRIX_WIDTH,TileMatrix.MATRIX_HEIGHT,TileMatrix.TILE_WIDTH,TileMatrix.TILE_HEIGHT,TileMatrix.PIXEL_X_SIZE,TileMatrix.PIXEL_Y_SIZE];module.exports.TileMatrixDao=TileMatrixDao;module.exports.TileMatrix=TileMatrix},{"../../core/contents":"/data/github/geopackage-node/lib/core/contents/index.js","../../dao/dao":"/data/github/geopackage-node/lib/dao/dao.js","../matrixset":"/data/github/geopackage-node/lib/tiles/matrixset/index.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/lib/tiles/matrixset/index.js":[function(require,module,exports){var Dao=require("../../dao/dao"),BoundingBox=require("../../boundingBox"),SpatialReferenceSystemDao=require("../../core/srs").SpatialReferenceSystemDao;var util=require("util");var TileMatrixSet=function(){this.tableName;this.srsId;this.minX;this.minY;this.maxX; -this.maxY};TileMatrixSet.prototype.setBoundingBox=function(boundingBox){this.minX=boundingBox.minLongitude;this.maxX=boundingBox.maxLongitude;this.minY=boundingBox.minLatitude;this.maxY=boundingBox.maxLatitude};TileMatrixSet.prototype.getBoundingBox=function(){return new BoundingBox(this.minX,this.maxX,this.minY,this.maxY)};var TileMatrixSetDao=function(connection){Dao.call(this,connection);this.connection=connection};util.inherits(TileMatrixSetDao,Dao);TileMatrixSetDao.prototype.createObject=function(){return new TileMatrixSet};TileMatrixSetDao.prototype.getTileTables=function(callback){var tableNames=[];this.connection.each("select "+TileMatrixSetDao.COLUMN_TABLE_NAME+" from "+TileMatrixSetDao.TABLE_NAME,function(err,result){if(err)return callback(err);tableNames.push(result[TileMatrixSetDao.COLUMN_TABLE_NAME])},function(err,numberOfResults){callback(err,tableNames)})};TileMatrixSetDao.prototype.getProjection=function(tileMatrixSet,callback){this.getSrs(tileMatrixSet,function(err,srs){if(err)return callback(err);if(!srs)return callback();var srsDao=this.getSpatialReferenceSystemDao();callback(null,srsDao.getProjection(srs))}.bind(this))};TileMatrixSetDao.prototype.getSrs=function(tileMatrixSet,callback){var dao=this.getSpatialReferenceSystemDao();dao.queryForIdObject(tileMatrixSet.srsId,callback)};TileMatrixSetDao.prototype.getContents=function(tileMatrixSet,callback){var dao=this.getContentsDao();dao.queryForIdObject(tileMatrixSet.tableName,callback)};TileMatrixSetDao.prototype.getSpatialReferenceSystemDao=function(){return new SpatialReferenceSystemDao(this.connection)};TileMatrixSetDao.prototype.getContentsDao=function(){var ContentsDao=require("../../core/contents").ContentsDao;return new ContentsDao(this.connection)};TileMatrixSet.TABLE_NAME="tableName";TileMatrixSet.MIN_X="minX";TileMatrixSet.MIN_Y="minY";TileMatrixSet.MAX_X="maxX";TileMatrixSet.MAX_Y="maxY";TileMatrixSet.SRS_ID="srsId";TileMatrixSetDao.TABLE_NAME="gpkg_tile_matrix_set";TileMatrixSetDao.COLUMN_PK="table_name";TileMatrixSetDao.COLUMN_TABLE_NAME="table_name";TileMatrixSetDao.COLUMN_SRS_ID="srs_id";TileMatrixSetDao.COLUMN_MIN_X="min_x";TileMatrixSetDao.COLUMN_MIN_Y="min_y";TileMatrixSetDao.COLUMN_MAX_X="max_x";TileMatrixSetDao.COLUMN_MAX_Y="max_y";TileMatrixSetDao.prototype.tableName="gpkg_tile_matrix_set";TileMatrixSetDao.prototype.idColumns=[TileMatrixSetDao.COLUMN_PK];TileMatrixSetDao.prototype.columns=[TileMatrixSetDao.COLUMN_TABLE_NAME,TileMatrixSetDao.COLUMN_SRS_ID,TileMatrixSetDao.COLUMN_MIN_X,TileMatrixSetDao.COLUMN_MIN_Y,TileMatrixSetDao.COLUMN_MAX_X,TileMatrixSetDao.COLUMN_MAX_Y];TileMatrixSetDao.prototype.columnToPropertyMap={};TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_TABLE_NAME]=TileMatrixSet.TABLE_NAME;TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_SRS_ID]=TileMatrixSet.SRS_ID;TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MIN_X]=TileMatrixSet.MIN_X;TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MIN_Y]=TileMatrixSet.MIN_Y;TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MAX_X]=TileMatrixSet.MAX_X;TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MAX_Y]=TileMatrixSet.MAX_Y;TileMatrixSetDao.columnIndexToPropertyMap=[TileMatrixSet.TABLE_NAME,TileMatrixSet.SRS_ID,TileMatrixSet.MIN_X,TileMatrixSet.MIN_Y,TileMatrixSet.MAX_X,TileMatrixSet.MAX_Y];module.exports.TileMatrixSetDao=TileMatrixSetDao;module.exports.TileMatrixSet=TileMatrixSet},{"../../boundingBox":"/data/github/geopackage-node/lib/boundingBox.js","../../core/contents":"/data/github/geopackage-node/lib/core/contents/index.js","../../core/srs":"/data/github/geopackage-node/lib/core/srs/index.js","../../dao/dao":"/data/github/geopackage-node/lib/dao/dao.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/lib/tiles/retriever/index.js":[function(require,module,exports){var TileMatrixSetDao=require("../matrixset").TileMatrixSetDao,TileBoundingBoxUtils=require("../tileBoundingBoxUtils"),TileCreator=require("../creator");var async=require("async");var GeoPackageTileRetriever=function(tileDao,width,height){this.tileDao=tileDao;this.tileDao.adjustTileMatrixLengths();this.width=width;this.height=height};module.exports=GeoPackageTileRetriever;GeoPackageTileRetriever.prototype.getWebMercatorBoundingBox=function(callback){if(this.setWebMercatorBoundingBox){return callback(null,this.setWebMercatorBoundingBox)}else{var tileMatrixSetDao=new TileMatrixSetDao(this.tileDao.connection);var tileMatrixSet=this.tileDao.tileMatrixSet;tileMatrixSetDao.getSrs(tileMatrixSet,function(err,srs){this.setProjectionBoundingBox=tileMatrixSet.getBoundingBox();this.setWebMercatorBoundingBox=this.setProjectionBoundingBox.projectBoundingBox("EPSG:3857","EPSG:3857");callback(null,this.setWebMercatorBoundingBox)}.bind(this))}};GeoPackageTileRetriever.prototype.hasTile=function(x,y,zoom,callback){var webMercatorBoundingBox=TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x,y,zoom);this.getTileMatrixWithWebMercatorBoundingBox(webMercatorBoundingBox,function(err,tileMatrix){var tileResults=[];this.retrieveTileResults(webMercatorBoundingBox,tileMatrix,function(err,result){tileResults.push(result)},function(err){if(tileResults&&tileResults.length>0){return callback(err,true)}callback(err,false)})}.bind(this))};GeoPackageTileRetriever.prototype.getTile=function(x,y,zoom,callback){var webMercatorBoundingBox=TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x,y,zoom);this.getTileWithBounds(webMercatorBoundingBox,zoom,callback)};GeoPackageTileRetriever.prototype.getTileWithWgs84Bounds=function(wgs84BoundingBox,zoom,callback){var webMercatorBoundingBox=wgs84BoundingBox.projectBoundingBox("EPSG:4326","EPSG:3857");this.getTileWithBounds(webMercatorBoundingBox,zoom,callback)};GeoPackageTileRetriever.prototype.getTileWithBounds=function(webMercatorBoundingBox,zoom,callback){var tiles=[];this.getTileMatrixWithWebMercatorBoundingBox(webMercatorBoundingBox,zoom,function(err,tileMatrix){if(err||!tileMatrix)return callback();var tileWidth=tileMatrix.tileWidth;var tileHeight=tileMatrix.tileHeight;TileCreator.initialize(this.width||tileWidth,this.height||tileHeight,function(err,creator){this.retrieveTileResults(webMercatorBoundingBox,tileMatrix,function(err,tile){this.getWebMercatorBoundingBox(function(err,box){var tileWebMercatorBoundingBox=TileBoundingBoxUtils.getWebMercatorBoundingBox(box,tileMatrix,tile.getTileColumn(),tile.getTileRow());var overlap=TileBoundingBoxUtils.overlapWithBoundingBox(webMercatorBoundingBox,tileWebMercatorBoundingBox);if(overlap){var xOffset=Math.round(TileBoundingBoxUtils.getXPixelOffset(this.width||tileWidth,webMercatorBoundingBox,tileWebMercatorBoundingBox.minLongitude));var yOffset=Math.round(TileBoundingBoxUtils.getYPixelOffset(this.height||tileHeight,webMercatorBoundingBox,tileWebMercatorBoundingBox.maxLatitude));if(xOffset<=-(this.height||tileHeight)||xOffset>=(this.height||tileHeight)||yOffset<=-(this.width||tileWidth)||yOffset>=(this.width||tileWidth)){}else{tiles.push({data:tile.getTileData(),xOffset:xOffset,yOffset:yOffset})}}}.bind(this))}.bind(this),function(err){async.eachSeries(tiles,function(tile,callback){creator.addTile(tile.data,tile.xOffset,tile.yOffset,callback)},function(err){creator.getCompleteTile("png",callback)})})}.bind(this))}.bind(this))};GeoPackageTileRetriever.prototype.getTileMatrixWithWebMercatorBoundingBox=function(webMercatorBoundingBox,zoom,callback){if(!callback){callback=zoom;zoom=undefined}var tileMatrix;this.getWebMercatorBoundingBox(function(err,setWebMercatorBoundingBox){var overlap=TileBoundingBoxUtils.overlapWithBoundingBox(webMercatorBoundingBox,setWebMercatorBoundingBox);if(overlap){var distance=webMercatorBoundingBox.maxLongitude-webMercatorBoundingBox.minLongitude;var zoomLevel=zoom;if(zoom===undefined||zoom===null){zoomLevel=this.tileDao.getZoomLevelWithLength(distance)}if(zoomLevel!==undefined&&zoomLevel!==null){tileMatrix=this.tileDao.getTileMatrixWithZoomLevel(zoomLevel)}}callback(null,tileMatrix)}.bind(this))};GeoPackageTileRetriever.prototype.retrieveTileResults=function(webMercatorBoundingBox,tileMatrix,tileCallback,doneCallback){if(tileMatrix){this.getWebMercatorBoundingBox(function(err,setWebMercatorBoundingBox){var tileGrid=TileBoundingBoxUtils.getTileGridWithWebMercatorTotalBoundingBox(setWebMercatorBoundingBox,tileMatrix.matrixWidth,tileMatrix.matrixHeight,webMercatorBoundingBox);this.tileDao.queryByTileGrid(tileGrid,tileMatrix.zoomLevel,tileCallback,doneCallback)}.bind(this))}else{doneCallback()}}},{"../creator":"/data/github/geopackage-node/lib/tiles/creator/index.js","../matrixset":"/data/github/geopackage-node/lib/tiles/matrixset/index.js","../tileBoundingBoxUtils":"/data/github/geopackage-node/lib/tiles/tileBoundingBoxUtils.js",async:"/data/github/geopackage-node/node_modules/async/lib/async.js"}],"/data/github/geopackage-node/lib/tiles/tileBoundingBoxUtils.js":[function(require,module,exports){var BoundingBox=require("../boundingBox"),TileGrid=require("./tileGrid");var proj4=require("proj4");var WEB_MERCATOR_HALF_WORLD_WIDTH=20037508.342789244;module.exports.overlapWithBoundingBox=function(boundingBox,boundingBox2){var minLongitude=Math.max(boundingBox.minLongitude,boundingBox2.minLongitude);var maxLongitude=Math.min(boundingBox.maxLongitude,boundingBox2.maxLongitude);var minLatitude=Math.max(boundingBox.minLatitude,boundingBox2.minLatitude);var maxLatitude=Math.min(boundingBox.maxLatitude,boundingBox2.maxLatitude);var overlap;if(minLongitude=0){if(minColumn<0){minColumn=0}if(maxColumn>=matrixWidth){maxColumn=matrixWidth-1}}var maxRow=module.exports.getTileRowWithWebMercatorTotalBoundingBox(webMercatorTotalBox,matrixHeight,webMercatorBoundingBox.minLatitude,true);var minRow=module.exports.getTileRowWithWebMercatorTotalBoundingBox(webMercatorTotalBox,matrixHeight,webMercatorBoundingBox.maxLatitude);if(minRow=0){if(minRow<0){minRow=0}if(maxRow>=matrixHeight){maxRow=matrixHeight-1}}var tileGrid=new TileGrid(minColumn,maxColumn,minRow,maxRow);return tileGrid};module.exports.getTileColumnWithWebMercatorTotalBoundingBox=function(webMercatorTotalBox,matrixWidth,longitude,max){var minX=webMercatorTotalBox.minLongitude;var maxX=webMercatorTotalBox.maxLongitude;var tileId;if(longitude=maxX){tileId=matrixWidth}else{var matrixWidthMeters=maxX-minX;var tileWidth=matrixWidthMeters/matrixWidth;var tileIdDouble=(longitude-minX)/tileWidth;tileId=parseInt(tileIdDouble);if(max){if(tileIdDouble===tileId){tileId--}}}return tileId};module.exports.getTileRowWithWebMercatorTotalBoundingBox=function(webMercatorTotalBox,matrixHeight,latitude,max){var minY=webMercatorTotalBox.minLatitude;var maxY=webMercatorTotalBox.maxLatitude;var tileId;if(latitude=maxY){tileId=-1}else{var matrixHeightMeters=maxY-minY;var tileHeight=matrixHeightMeters/matrixHeight;var tileIdDouble=(maxY-latitude)/tileHeight;tileId=parseInt(tileIdDouble);if(max){if(tileIdDouble===tileId){tileId--}}}return tileId};module.exports.getWebMercatorBoundingBox=function(webMercatorTotalBox,tileMatrix,tileColumn,tileRow){var tileMatrixWidth=tileMatrix.matrixWidth;var tileMatrixHeight=tileMatrix.matrixHeight;var tileGrid=new TileGrid(tileColumn,tileColumn,tileRow,tileRow);var matrixMinX=webMercatorTotalBox.minLongitude;var matrixMaxX=webMercatorTotalBox.maxLongitude;var matrixWidth=matrixMaxX-matrixMinX;var tileWidth=matrixWidth/tileMatrixWidth;var minLon=matrixMinX+tileWidth*tileGrid.minX;var maxLon=minLon+tileWidth*(tileGrid.maxX+1-tileGrid.minX);var matrixMinY=webMercatorTotalBox.minLatitude;var matrixMaxY=webMercatorTotalBox.maxLatitude;var matrixHeight=matrixMaxY-matrixMinY;var tileHeight=matrixHeight/tileMatrixHeight;var maxLat=matrixMaxY-tileHeight*tileGrid.minY;var minLat=maxLat-tileHeight*(tileGrid.maxY+1-tileGrid.minY);var boundingBox=new BoundingBox(minLon,maxLon,minLat,maxLat);return boundingBox};module.exports.getWebMercatorBoundingBoxWithWebMercatorTotalBoundingBox=function(webMercatorTotalBox,tileMatrixWidth,tileMatrixHeight,tileGrid){var matrixMinX=webMercatorTotalBox.minLongitude;var matrixMaxX=webMercatorTotalBox.maxLongitude;var matrixWidth=matrixMaxX-matrixMinX;var tileWidth=matrixWidth/tileMatrixWidth;var minLon=matrixMinX+tileWidth*tileGrid.minX;var maxLon=minLon+tileWidth*(tileGrid.maxX+1-tileGrid.minX);var matrixMinY=webMercatorTotalBox.minLatitude;var matrixMaxY=webMercatorTotalBox.maxLatitude;var matrixHeight=matrixMaxY-matrixMinY;var tileHeight=matrixHeight/tileMatrixHeight;var maxLat=matrixMaxY-tileHeight*tileGrid.minY;var minLat=maxLat-tileHeight*(tileGrid.maxY+1-tileGrid.minY);return new BoundingBox(minLon,maxLon,minLat,maxLat)}},{"../boundingBox":"/data/github/geopackage-node/lib/boundingBox.js","./tileGrid":"/data/github/geopackage-node/lib/tiles/tileGrid.js",proj4:"/data/github/geopackage-node/node_modules/proj4/lib/index.js"}],"/data/github/geopackage-node/lib/tiles/tileGrid.js":[function(require,module,exports){var TileGrid=function(minX,maxX,minY,maxY){this.minX=minX;this.maxX=maxX;this.minY=minY;this.maxY=maxY};TileGrid.prototype.count=function(){return(this.maxX+1-this.minX)*(this.maxY+1-this.minY)};TileGrid.prototype.equals=function(tileGrid){if(!tileGrid)return false;return this.minX===tileGrid.minX&&this.maxX===tileGrid.maxX&&this.minY===tileGrid.minY&&this.maxY===tileGrid.maxY};module.exports=TileGrid},{}],"/data/github/geopackage-node/lib/tiles/user/tileColumn.js":[function(require,module,exports){var UserColumn=require("../../user/userColumn"),DataTypes=require("../../db/dataTypes"),TileTable=require("./tileTable");var util=require("util");var TileColumn=function(index,name,dataType,max,notNull,defaultValue,primaryKey){UserColumn.call(this,index,name,dataType,max,notNull,defaultValue,primaryKey);if(dataType===DataTypes.GPKG_DT_GEOMETRY){throw new Error("Data Type is required to create column: "+name)}};util.inherits(TileColumn,UserColumn);TileColumn.createIdColumn=function(index){return new TileColumn(index,TileTable.COLUMN_ID,DataTypes.GPKG_DT_INTEGER,null,false,null,true)};TileColumn.createZoomLevelColumn=function(index){return new TileColumn(index,TileTable.COLUMN_ZOOM_LEVEL,DataTypes.GPKG_DT_INTEGER,null,true,null,false)};TileColumn.createTileColumnColumn=function(index){return new TileColumn(index,TileTable.COLUMN_TILE_COLUMN,DataTypes.GPKG_DT_INTEGER,null,true,null,false)};TileColumn.createTileRowColumn=function(index){return new TileColumn(index,TileTable.COLUMN_TILE_ROW,DataTypes.GPKG_DT_INTEGER,null,true,null,false)};TileColumn.createTileDataColumn=function(index){return new TileColumn(index,TileTable.COLUMN_TILE_DATA,DataTypes.GPKG_DT_BLOB,null,true,null,false)};module.exports=TileColumn},{"../../db/dataTypes":"/data/github/geopackage-node/lib/db/dataTypes.js","../../user/userColumn":"/data/github/geopackage-node/lib/user/userColumn.js","./tileTable":"/data/github/geopackage-node/lib/tiles/user/tileTable.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/lib/tiles/user/tileDao.js":[function(require,module,exports){var UserDao=require("../../user/UserDao"),TileGrid=require("../tileGrid"),TileRow=require("./tileRow"),TileMatrixSetDao=require("../matrixset").TileMatrixSetDao,BoundingBoxUtils=require("../tileBoundingBoxUtils"),ColumnValues=require("../../dao/columnValues"),TileTable=require("./tileTable"),TileDaoUtils=require("./tileDaoUtils");var util=require("util"),proj4=require("proj4"),async=require("async");var TileDao=function(connection,table,tileMatrixSet,tileMatrices,callback){UserDao.call(this,connection,table);this.connection=connection;this.tileMatrixSet=tileMatrixSet;this.tileMatrices=tileMatrices;this.zoomLevelToTileMatrix=[];this.widths=[];this.heights=[];if(tileMatrices.length===0){this.minZoom=0;this.maxZoom=0}else{this.minZoom=this.tileMatrices[0].zoomLevel;this.maxZoom=this.tileMatrices[this.tileMatrices.length-1].zoomLevel}for(var i=this.tileMatrices.length-1;i>=0;i--){var tileMatrix=this.tileMatrices[i];this.zoomLevelToTileMatrix[tileMatrix.zoomLevel]=tileMatrix}this.initialize(callback)};util.inherits(TileDao,UserDao);TileDao.prototype.initialize=function(callback){var tileMatrixSetDao=this.getTileMatrixSetDao();tileMatrixSetDao.getSrs(this.tileMatrixSet,function(err,srs){if(srs.definition&&srs.definition!=="undefined"){this.projection=proj4(srs.definition)}else{this.projection=proj4(srs.organization+":"+srs.organizationCoordsysId)}for(var i=this.tileMatrices.length-1;i>=0;i--){var tileMatrix=this.tileMatrices[i];var width=tileMatrix.pixelXSize*parseInt(tileMatrix.tileWidth);var height=tileMatrix.pixelYSize*parseInt(tileMatrix.tileHeight);if(this.projection.to_meter){width=this.projection.to_meter*tileMatrix.pixelXSize*parseInt(tileMatrix.tileWidth);height=this.projection.to_meter*tileMatrix.pixelYSize*parseInt(tileMatrix.tileHeight)}this.widths.push(width);this.heights.push(height)}callback(null,this)}.bind(this))};TileDao.prototype.createObject=function(){throw new Error("not implemented")};TileDao.prototype.getBoundingBoxWithZoomLevel=function(zoomLevel,callback){var boundingBox;var tileMatrix=this.getTileMatrixWithZoomLevel(zoomLevel);if(tileMatrix){this.queryForTileGridWithZoomLevel(zoomLevel,function(err,tileGrid){if(tileGrid){var matrixSetBoundingBox=this.getBoundingBox();boundingBox=BoundingBoxUtils.getWebMercatorBoundingBoxWithWebMercatorTotalBoundingBox(matrixSetBoundingBox,tileMatrix.matrixWidth,tileMatrix.matrixHeight,tileGrid)}callback(err,boundingBox)}.bind(this))}else{callback(null,boundingBox)}};TileDao.prototype.getBoundingBox=function(){return this.tileMatrixSet.getBoundingBox()};TileDao.prototype.queryForTileGridWithZoomLevel=function(zoomLevel,callback){var where=this.buildWhereWithFieldAndValue(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel);var whereArgs=this.buildWhereArgsWithValue(zoomLevel);async.series({minX:function(callback){this.minOfColumn(TileTable.COLUMN_TILE_COLUMN,where,whereArgs,callback)}.bind(this),maxX:function(callback){this.maxOfColumn(TileTable.COLUMN_TILE_COLUMN,where,whereArgs,callback)}.bind(this),minY:function(callback){this.minOfColumn(TileTable.COLUMN_TILE_ROW,where,whereArgs,callback)}.bind(this),maxY:function(callback){this.maxOfColumn(TileTable.COLUMN_TILE_ROW,where,whereArgs,callback)}.bind(this)},function(err,results){if(err)return callback(err);var tileGrid;if(results.minX!=null&&results.minY!=null&&results.maxX!=null&&results.maxY!=null){tileGrid=new TileGrid(results.minX,results.maxX,results.minY,results.maxY)}callback(err,tileGrid)})};TileDao.prototype.getTileGridWithZoomLevel=function(zoomLevel){var tileGrid;var tileMatrix=this.getTileMatrixWithZoomLevel(zoomLevel);if(tileMatrix){tileGrid=new TileGrid(0,parseInt(tileMatrix.matrixWidth)-1,0,parseInt(tileMatrix.matrixHeight)-1)}return tileGrid};TileDao.prototype.getTileTable=function(){return this.table};TileDao.prototype.getTileRow=function(result){return this.getRow(result)};TileDao.prototype.newRowWithColumnTypes=function(columnTypes,values){return new TileRow(this.getTileTable(),columnTypes,values)};TileDao.prototype.newRow=function(){return new TileRow(this.getTileTable())};TileDao.prototype.adjustTileMatrixLengths=function(){TileDaoUtils.adjustTileMatrixLengths(this.tileMatrixSet,this.tileMatrices)};TileDao.prototype.getTileMatrixWithZoomLevel=function(zoomLevel){return this.zoomLevelToTileMatrix[zoomLevel]};TileDao.prototype.queryForTile=function(column,row,zoomLevel,callback){var fieldValues=new ColumnValues;fieldValues.addColumn(TileTable.COLUMN_TILE_COLUMN,column);fieldValues.addColumn(TileTable.COLUMN_TILE_ROW,row);fieldValues.addColumn(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel);this.queryForFieldValues(fieldValues,function(err,result){var tileRow=this.getTileRow(result);callback(err,tileRow)}.bind(this))};TileDao.prototype.queryForTilesWithZoomLevel=function(zoomLevel,tileCallback,doneCallback){this.queryForEqWithFieldAndValue(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel,function(err,result){if(!tileCallback)return;if(err||!result)return tileCallback(err);tileCallback(err,this.getTileRow(result))}.bind(this),doneCallback)};TileDao.prototype.queryForTilesDescending=function(zoomLevel,tileCallback,doneCallback){this.queryForEqWithField(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel,undefined,undefined,TileTable.COLUMN_TILE_COLUMN+" DESC, "+TileTable.COLUMN_TILE_ROW+", DESC",function(err,result){if(!tileCallback)return;if(err||!result)return tileCallback(err);tileCallback(err,this.getTileRow(result))}.bind(this),doneCallback)};TileDao.prototype.queryForTilesInColumn=function(column,zoomLevel,tileCallback,doneCallback){var fieldValues=new ColumnValues;fieldValues.addColumn(TileTable.COLUMN_TILE_COLUMN,column);fieldValues.addColumn(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel);this.queryForFieldValues(fieldValues,function(err,result){if(!tileCallback)return;if(err||!result)return tileCallback(err);tileCallback(err,this.getTileRow(result))}.bind(this),doneCallback)};TileDao.prototype.queryForTilesInRow=function(row,zoomLevel,tileCallback,doneCallback){var fieldValues=new ColumnValues;fieldValues.addColumn(TileTable.COLUMN_TILE_ROW,row);fieldValues.addColumn(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel);this.queryForFieldValues(fieldValues,function(err,result){if(!tileCallback)return;if(err||!result)return tileCallback(err);tileCallback(err,this.getTileRow(result))}.bind(this),doneCallback)};TileDao.prototype.getZoomLevelWithLength=function(length){return TileDaoUtils.getZoomLevel(this.widths,this.heights,this.tileMatrices,length)};TileDao.prototype.queryByTileGrid=function(tileGrid,zoomLevel,tileCallback,doneCallback){if(!tileGrid)return doneCallback();var where="";where+=this.buildWhereWithFieldAndValue(TileTable.COLUMN_ZOOM_LEVEL,zoomLevel);where+=" and ";where+=this.buildWhereWithFieldAndValueAndOperation(TileTable.COLUMN_TILE_COLUMN,tileGrid.minX,">=");where+=" and ";where+=this.buildWhereWithFieldAndValueAndOperation(TileTable.COLUMN_TILE_COLUMN,tileGrid.maxX,"<=");where+=" and ";where+=this.buildWhereWithFieldAndValueAndOperation(TileTable.COLUMN_TILE_ROW,tileGrid.minY,">=");where+=" and ";where+=this.buildWhereWithFieldAndValueAndOperation(TileTable.COLUMN_TILE_ROW,tileGrid.maxY,"<=");var whereArgs=this.buildWhereArgsWithValueArray([zoomLevel,tileGrid.minX,tileGrid.maxX,tileGrid.minY,tileGrid.maxY]);this.queryWhereWithArgsDistinct(where,whereArgs,function(err,result){if(!tileCallback)return;if(err||!result)return tileCallback(err);tileCallback(err,this.getTileRow(result))}.bind(this),doneCallback)};TileDao.prototype.getTileMatrixSetDao=function(){return new TileMatrixSetDao(this.connection)};module.exports=TileDao},{"../../dao/columnValues":"/data/github/geopackage-node/lib/dao/columnValues.js","../../user/UserDao":"/data/github/geopackage-node/lib/user/UserDao.js","../matrixset":"/data/github/geopackage-node/lib/tiles/matrixset/index.js","../tileBoundingBoxUtils":"/data/github/geopackage-node/lib/tiles/tileBoundingBoxUtils.js","../tileGrid":"/data/github/geopackage-node/lib/tiles/tileGrid.js","./tileDaoUtils":"/data/github/geopackage-node/lib/tiles/user/tileDaoUtils.js","./tileRow":"/data/github/geopackage-node/lib/tiles/user/tileRow.js","./tileTable":"/data/github/geopackage-node/lib/tiles/user/tileTable.js",async:"/data/github/geopackage-node/node_modules/async/lib/async.js",proj4:"/data/github/geopackage-node/node_modules/proj4/lib/index.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/lib/tiles/user/tileDaoUtils.js":[function(require,module,exports){module.exports.adjustTileMatrixLengths=function(tileMatrixSet,tileMatrices){var tileMatrixWidth=tileMatrixSet.maxX-tileMatrixSet.minX;var tileMatrixHeight=tileMatrixSet.maxY-tileMatrixSet.minY;for(var i=0;iparseInt(tileMatrix.matrixWidth)){tileMatrix.matrixWidth=parseInt(tempMatrixWidth)}if(tempMatrixHeight>parseInt(tileMatrix.matrixHeight)){tileMatrix.matrixHeight=parseInt(tempMatrixHeight)}}};module.exports.getZoomLevel=function(widths,heights,tileMatrices,length){var zoomLevel;var widthIndex=widths.length;var heightIndex=heights.length;for(var i=0;ilength){widthIndex=i;break}}for(var i=0;ilength){heightIndex=i;break}}if(widthIndex===0){if(length=widths[widthIndex-1]/.51){widthIndex=-1}else{widthIndex=widthIndex-1}}else if(length-widths[widthIndex-1]=heights[heightIndex-1]/.51){heightIndex=-1}else{heightIndex=heightIndex-1}}else if(length-heights[heightIndex-1]=0&&heightIndex>=0){var index=widthIndex=0){var tileMatrix=tileMatrices[tileMatrices.length-index-1];zoomLevel=tileMatrix.zoomLevel}}return zoomLevel}},{}],"/data/github/geopackage-node/lib/tiles/user/tileRow.js":[function(require,module,exports){var UserRow=require("../../user/UserRow");var util=require("util");var TileRow=function(tileTable,columnTypes,values){UserRow.call(this,tileTable,columnTypes,values);this.tileTable=tileTable};util.inherits(TileRow,UserRow);TileRow.prototype.toObjectValue=function(value){return value};TileRow.prototype.toDatabaseValue=function(value){return value};TileRow.prototype.getZoomLevelColumnIndex=function(){return this.tileTable.zoomLevelIndex};TileRow.prototype.getZoomLevelColumn=function(){return this.tileTable.getZoomLevelColumn()};TileRow.prototype.getZoomLevel=function(){return this.getValueWithColumnName(this.getZoomLevelColumn().name)};TileRow.prototype.setZoomLevel=function(zoomLevel){this.setValueWithIndex(this.getZoomLevelColumnIndex(),zoomLevel)};TileRow.prototype.getTileColumnColumnIndex=function(){return this.tileTable.tileColumnIndex};TileRow.prototype.getTileColumnColumn=function(){return this.tileTable.getTileColumnColumn()};TileRow.prototype.getTileColumn=function(){return this.getValueWithColumnName(this.getTileColumnColumn().name)};TileRow.prototype.setTileColumn=function(tileColumn){this.setValueWithColumnName(this.getTileColumnColumn().name,tileColumn)};TileRow.prototype.getTileRowColumnIndex=function(){return this.tileTable.tileRowIndex};TileRow.prototype.getTileRowColumn=function(){return this.tileTable.getTileRowColumn()};TileRow.prototype.getTileRow=function(){return this.getValueWithColumnName(this.getTileRowColumn().name)};TileRow.prototype.setTileRow=function(tileRow){this.setValueWithColumnName(this.getTileRowColumn().name,tileRow)};TileRow.prototype.getTileDataColumnIndex=function(){return this.tileTable.tileDataIndex};TileRow.prototype.getTileDataColumn=function(){return this.tileTable.getTileDataColumn()};TileRow.prototype.getTileData=function(){return this.getValueWithColumnName(this.getTileDataColumn().name)};TileRow.prototype.setTileData=function(tileData){this.setValueWithColumnName(this.getTileDataColumn().name,tileData)};TileRow.prototype.getTileDataImage=function(){};module.exports=TileRow},{"../../user/UserRow":"/data/github/geopackage-node/lib/user/UserRow.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/lib/tiles/user/tileTable.js":[function(require,module,exports){var UserTable=require("../../user/userTable");var util=require("util");var TileTable=function(tableName,columns){UserTable.call(this,tableName,columns);var zoomLevel;var tileColumn;var tileRow;var tileData;for(var i=0;i-1){var maxString=type.substring(maxStart+1,type.length-1);if(maxString!==""){max=parseInt(maxString);type=type.substring(0,maxStart)}}}var defaultValueIndex=result[GPKG_UTR_DFLT_VALUE];try{var column=this.createColumnWithResults(result,index,name,type,max,notNull,defaultValueIndex,primarykey);columnList.push(column)}catch(e){console.err(e);return callback(e)}}if(columnList.length===0){return callback(new Error("Table does not exist: "+this.tableName))}var table=this.createTableWithNameAndColumns(this.tableName,columnList);callback(null,table)}.bind(this))};UserTableReader.prototype.createColumnWithResults=function(result,index,name,type,max,notNull,defaultValueIndex,primaryKey){var dataType=DataTypes.fromName(type);var defaultValue=undefined;if(defaultValueIndex){}return new UserColumn(index,name,dataType,max,notNull,defaultValue,primaryKey)};UserTableReader.prototype.createTableWithNameAndColumns=function(tableName,columns){return new UserTable(tableName,columns)};module.exports=UserTableReader},{"../db/dataTypes":"/data/github/geopackage-node/lib/db/dataTypes.js","./userColumn":"/data/github/geopackage-node/lib/user/userColumn.js","./userTable":"/data/github/geopackage-node/lib/user/userTable.js"}],"/data/github/geopackage-node/lib/user/userColumn.js":[function(require,module,exports){var DataTypes=require("../db/dataTypes");function UserColumn(index,name,dataType,max,notNull,defaultValue,primaryKey){this.index=index;this.name=name;this.dataType=dataType;this.max=max;this.notNull=notNull,this.defaultValue=defaultValue;this.primaryKey=primaryKey;this.validateMax()}UserColumn.prototype.getTypeName=function(){var type=undefined;if(this.dataType!==DataTypes.GPKG_DT_GEOMETRY){type=DataTypes.name(this.dataType)}return type};UserColumn.prototype.validateMax=function(){if(this.max&&this.dataType!=="TEXT"&&this.dataType!=="BLOB"){throw new Error("Column max is only supported for TEXT and BLOB columns. column: "+self.name+", max: "+self.max+", type: "+self.dataType)}};module.exports=UserColumn},{"../db/dataTypes":"/data/github/geopackage-node/lib/db/dataTypes.js"}],"/data/github/geopackage-node/lib/user/userRow.js":[function(require,module,exports){arguments[4]["/data/github/geopackage-node/lib/user/UserRow.js"][0].apply(exports,arguments)},{}],"/data/github/geopackage-node/lib/user/userTable.js":[function(require,module,exports){var UserTable=function(tableName,columns){this.tableName=tableName;columns.sort(function(a,b){return a.index-b.index});for(var i=0;i=0&&arr.length%1===0}function _arrayEach(arr,iterator){var index=-1,length=arr.length;while(++index3){eachfn(arr,limit,iteratee,done)}else{cb=iterator;iterator=limit;eachfn(arr,iteratee,done)}}}async.any=async.some=_createTester(async.eachOf,toBool,identity);async.someLimit=_createTester(async.eachOfLimit,toBool,identity);async.all=async.every=_createTester(async.eachOf,notId,notId);async.everyLimit=_createTester(async.eachOfLimit,notId,notId);function _findGetResult(v,x){return x}async.detect=_createTester(async.eachOf,identity,_findGetResult);async.detectSeries=_createTester(async.eachOfSeries,identity,_findGetResult);async.detectLimit=_createTester(async.eachOfLimit,identity,_findGetResult);async.sortBy=function(arr,iterator,callback){async.map(arr,function(x,callback){iterator(x,function(err,criteria){if(err){callback(err)}else{callback(null,{value:x,criteria:criteria})}})},function(err,results){if(err){return callback(err)}else{callback(null,_map(results.sort(comparator),function(x){return x.value}))}});function comparator(left,right){var a=left.criteria,b=right.criteria;return ab?1:0}};async.auto=function(tasks,concurrency,callback){if(typeof arguments[1]==="function"){callback=concurrency;concurrency=null}callback=_once(callback||noop);var keys=_keys(tasks);var remainingTasks=keys.length;if(!remainingTasks){return callback(null)}if(!concurrency){concurrency=remainingTasks}var results={};var runningTasks=0;var hasError=false;var listeners=[];function addListener(fn){listeners.unshift(fn)}function removeListener(fn){var idx=_indexOf(listeners,fn);if(idx>=0)listeners.splice(idx,1)}function taskComplete(){remainingTasks--;_arrayEach(listeners.slice(0),function(fn){fn()})}addListener(function(){if(!remainingTasks){callback(null,results)}});_arrayEach(keys,function(k){if(hasError)return;var task=_isArray(tasks[k])?tasks[k]:[tasks[k]];var taskCallback=_restParam(function(err,args){runningTasks--;if(args.length<=1){args=args[0]}if(err){var safeResults={};_forEachOf(results,function(val,rkey){safeResults[rkey]=val});safeResults[k]=args;hasError=true;callback(err,safeResults)}else{results[k]=args;async.setImmediate(taskComplete)}});var requires=task.slice(0,task.length-1);var len=requires.length;var dep;while(len--){if(!(dep=tasks[requires[len]])){throw new Error("Has nonexistent dependency in "+requires.join(", "))}if(_isArray(dep)&&_indexOf(dep,k)>=0){throw new Error("Has cyclic dependencies")}}function ready(){return runningTasks3){throw new Error("Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)")}else if(length<=2&&typeof times==="function"){callback=task;task=times}if(typeof times!=="function"){parseTimes(opts,times)}opts.callback=callback;opts.task=task;function wrappedTask(wrappedCallback,wrappedResults){function retryAttempt(task,finalAttempt){return function(seriesCallback){task(function(err,result){seriesCallback(!err||finalAttempt,{err:err,result:result})},wrappedResults)}}function retryInterval(interval){return function(seriesCallback){setTimeout(function(){seriesCallback(null)},interval)}}while(opts.times){var finalAttempt=!(opts.times-=1);attempts.push(retryAttempt(opts.task,finalAttempt));if(!finalAttempt&&opts.interval>0){attempts.push(retryInterval(opts.interval))}}async.series(attempts,function(done,data){data=data[data.length-1];(wrappedCallback||opts.callback)(data.err,data.result)})}return opts.callback?wrappedTask():wrappedTask};async.waterfall=function(tasks,callback){callback=_once(callback||noop);if(!_isArray(tasks)){var err=new Error("First argument to waterfall must be an array of functions");return callback(err)}if(!tasks.length){return callback()}function wrapIterator(iterator){return _restParam(function(err,args){if(err){callback.apply(null,[err].concat(args))}else{var next=iterator.next();if(next){args.push(wrapIterator(next))}else{args.push(callback)}ensureAsync(iterator).apply(null,args)}})}wrapIterator(async.iterator(tasks))()};function _parallel(eachfn,tasks,callback){callback=callback||noop;var results=_isArrayLike(tasks)?[]:{};eachfn(tasks,function(task,key,callback){task(_restParam(function(err,args){if(args.length<=1){args=args[0]}results[key]=args;callback(err)}))},function(err){callback(err,results)})}async.parallel=function(tasks,callback){_parallel(async.eachOf,tasks,callback)};async.parallelLimit=function(tasks,limit,callback){_parallel(_eachOfLimit(limit),tasks,callback)};async.series=function(tasks,callback){_parallel(async.eachOfSeries,tasks,callback)};async.iterator=function(tasks){function makeCallback(index){function fn(){if(tasks.length){tasks[index].apply(null,arguments)}return fn.next()}fn.next=function(){return index>>1);if(compare(item,sequence[mid])>=0){beg=mid}else{end=mid-1}}return beg}function _insert(q,data,priority,callback){if(callback!=null&&typeof callback!=="function"){throw new Error("task callback must be a function")}q.started=true;if(!_isArray(data)){data=[data]}if(data.length===0){return async.setImmediate(function(){q.drain()})}_arrayEach(data,function(task){var item={data:task,priority:priority,callback:typeof callback==="function"?callback:noop};q.tasks.splice(_binarySearch(q.tasks,item,_compareTasks)+1,0,item);if(q.tasks.length===q.concurrency){q.saturated()}async.setImmediate(q.process)})}var q=async.queue(worker,concurrency);q.push=function(data,priority,callback){_insert(q,data,priority,callback)};delete q.unshift;return q};async.cargo=function(worker,payload){return _queue(worker,1,payload)};function _console_fn(name){return _restParam(function(fn,args){fn.apply(null,args.concat([_restParam(function(err,args){if(typeof console==="object"){if(err){if(console.error){console.error(err)}}else if(console[name]){_arrayEach(args,function(x){console[name](x)})}}})]))})}async.log=_console_fn("log");async.dir=_console_fn("dir");async.memoize=function(fn,hasher){var memo={};var queues={};var has=Object.prototype.hasOwnProperty;hasher=hasher||identity;var memoized=_restParam(function memoized(args){var callback=args.pop();var key=hasher.apply(null,args);if(has.call(memo,key)){async.setImmediate(function(){callback.apply(null,memo[key])})}else if(has.call(queues,key)){ -queues[key].push(callback)}else{queues[key]=[callback];fn.apply(null,args.concat([_restParam(function(args){memo[key]=args;var q=queues[key];delete queues[key];for(var i=0,l=q.length;i1)return new Buffer(arg,arguments[1]);return new Buffer(arg)}if(!Buffer.TYPED_ARRAY_SUPPORT){this.length=0;this.parent=undefined}if(typeof arg==="number"){return fromNumber(this,arg)}if(typeof arg==="string"){return fromString(this,arg,arguments.length>1?arguments[1]:"utf8")}return fromObject(this,arg)}Buffer._augment=function(arr){arr.__proto__=Buffer.prototype;return arr};function fromNumber(that,length){that=allocate(that,length<0?0:checked(length)|0);if(!Buffer.TYPED_ARRAY_SUPPORT){for(var i=0;i>>1;if(fromPool)that.parent=rootParent;return that}function checked(length){if(length>=kMaxLength()){throw new RangeError("Attempt to allocate Buffer larger than maximum "+"size: 0x"+kMaxLength().toString(16)+" bytes")}return length|0}function SlowBuffer(subject,encoding){if(!(this instanceof SlowBuffer))return new SlowBuffer(subject,encoding);var buf=new Buffer(subject,encoding);delete buf.parent;return buf}Buffer.isBuffer=function isBuffer(b){return!!(b!=null&&b._isBuffer)};Buffer.compare=function compare(a,b){if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError("Arguments must be Buffers")}if(a===b)return 0;var x=a.length;var y=b.length;for(var i=0,len=Math.min(x,y);i>>1;case"base64":return base64ToBytes(string).length;default:if(loweredCase)return utf8ToBytes(string).length;encoding=(""+encoding).toLowerCase();loweredCase=true}}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){var loweredCase=false;start=start|0;end=end===undefined||end===Infinity?this.length:end|0;if(!encoding)encoding="utf8";if(start<0)start=0;if(end>this.length)end=this.length;if(end<=start)return"";while(true){switch(encoding){case"hex":return hexSlice(this,start,end);case"utf8":case"utf-8":return utf8Slice(this,start,end);case"ascii":return asciiSlice(this,start,end);case"binary":return binarySlice(this,start,end);case"base64":return base64Slice(this,start,end);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(encoding+"").toLowerCase();loweredCase=true}}}Buffer.prototype._isBuffer=true;Buffer.prototype.toString=function toString(){var length=this.length|0;if(length===0)return"";if(arguments.length===0)return utf8Slice(this,0,length);return slowToString.apply(this,arguments)};Buffer.prototype.equals=function equals(b){if(!Buffer.isBuffer(b))throw new TypeError("Argument must be a Buffer");if(this===b)return true;return Buffer.compare(this,b)===0};Buffer.prototype.inspect=function inspect(){var str="";var max=exports.INSPECT_MAX_BYTES;if(this.length>0){str=this.toString("hex",0,max).match(/.{2}/g).join(" ");if(this.length>max)str+=" ... "}return""};Buffer.prototype.compare=function compare(b){if(!Buffer.isBuffer(b))throw new TypeError("Argument must be a Buffer");return Buffer.compare(this,b)};Buffer.prototype.indexOf=function indexOf(val,byteOffset){if(byteOffset>2147483647)byteOffset=2147483647;else if(byteOffset<-2147483648)byteOffset=-2147483648;byteOffset>>=0;if(this.length===0)return-1;if(byteOffset>=this.length)return-1;if(byteOffset<0)byteOffset=Math.max(this.length+byteOffset,0);if(typeof val==="string"){if(val.length===0)return-1;return String.prototype.indexOf.call(this,val,byteOffset)}if(Buffer.isBuffer(val)){return arrayIndexOf(this,val,byteOffset)}if(typeof val==="number"){if(Buffer.TYPED_ARRAY_SUPPORT&&Uint8Array.prototype.indexOf==="function"){return Uint8Array.prototype.indexOf.call(this,val,byteOffset)}return arrayIndexOf(this,[val],byteOffset)}function arrayIndexOf(arr,val,byteOffset){var foundIndex=-1;for(var i=0;byteOffset+iremaining){length=remaining}}var strLen=string.length;if(strLen%2!==0)throw new Error("Invalid hex string");if(length>strLen/2){length=strLen/2}for(var i=0;iremaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError("attempt to write outside buffer bounds")}if(!encoding)encoding="utf8";var loweredCase=false;for(;;){switch(encoding){case"hex":return hexWrite(this,string,offset,length);case"utf8":case"utf-8":return utf8Write(this,string,offset,length);case"ascii":return asciiWrite(this,string,offset,length);case"binary":return binaryWrite(this,string,offset,length);case"base64":return base64Write(this,string,offset,length);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(""+encoding).toLowerCase();loweredCase=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);var res=[];var i=start;while(i239?4:firstByte>223?3:firstByte>191?2:1;if(i+bytesPerSequence<=end){var secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<128){codePoint=firstByte}break;case 2:secondByte=buf[i+1];if((secondByte&192)===128){tempCodePoint=(firstByte&31)<<6|secondByte&63;if(tempCodePoint>127){codePoint=tempCodePoint}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&192)===128&&(thirdByte&192)===128){tempCodePoint=(firstByte&15)<<12|(secondByte&63)<<6|thirdByte&63;if(tempCodePoint>2047&&(tempCodePoint<55296||tempCodePoint>57343)){codePoint=tempCodePoint}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&192)===128&&(thirdByte&192)===128&&(fourthByte&192)===128){tempCodePoint=(firstByte&15)<<18|(secondByte&63)<<12|(thirdByte&63)<<6|fourthByte&63;if(tempCodePoint>65535&&tempCodePoint<1114112){codePoint=tempCodePoint}}}}if(codePoint===null){codePoint=65533;bytesPerSequence=1}else if(codePoint>65535){codePoint-=65536;res.push(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}res.push(codePoint);i+=bytesPerSequence}return decodeCodePointsArray(res)}var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(codePoints){var len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints)}var res="";var i=0;while(ilen)end=len;var out="";for(var i=start;ilen){start=len}if(end<0){end+=len;if(end<0)end=0}else if(end>len){end=len}if(endlength)throw new RangeError("Trying to access beyond buffer length")}Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i0&&(mul*=256)){val+=this[offset+--byteLength]*mul}return val};Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);return this[offset]};Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8};Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1]};Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*16777216};Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*16777216+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3])};Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var i=byteLength;var mul=1;var val=this[offset+--i];while(i>0&&(mul*=256)){val+=this[offset+--i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readInt8=function readInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&128))return this[offset];return(255-this[offset]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset]|this[offset+1]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset+1]|this[offset]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3]};Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,false,52,8)};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError("buffer must be a Buffer instance");if(value>max||valuebuf.length)throw new RangeError("index out of range")}Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkInt(this,value,offset,byteLength,Math.pow(2,8*byteLength),0);var mul=1;var i=0;this[offset]=value&255;while(++i=0&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,255,0);if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value);this[offset]=value&255;return offset+1};function objectWriteUInt16(buf,value,offset,littleEndian){if(value<0)value=65535+value+1;for(var i=0,j=Math.min(buf.length-offset,2);i>>(littleEndian?i:1-i)*8}}Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,65535,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8}else{objectWriteUInt16(this,value,offset,true)}return offset+2};Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,65535,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&255}else{objectWriteUInt16(this,value,offset,false)}return offset+2};function objectWriteUInt32(buf,value,offset,littleEndian){if(value<0)value=4294967295+value+1;for(var i=0,j=Math.min(buf.length-offset,4);i>>(littleEndian?i:3-i)*8&255}}Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&255}else{objectWriteUInt32(this,value,offset,true)}return offset+4};Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255}else{objectWriteUInt32(this,value,offset,false)}return offset+4};Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=0;var mul=1;var sub=value<0?1:0;this[offset]=value&255;while(++i>0)-sub&255}return offset+byteLength};Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=byteLength-1;var mul=1;var sub=value<0?1:0;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,127,-128);if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value);if(value<0)value=255+value+1;this[offset]=value&255;return offset+1};Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8}else{objectWriteUInt16(this,value,offset,true)}return offset+2};Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&255}else{objectWriteUInt16(this,value,offset,false)}return offset+2};Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24}else{objectWriteUInt32(this,value,offset,true)}return offset+4};Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(value<0)value=4294967295+value+1;if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255}else{objectWriteUInt32(this,value,offset,false)}return offset+4};function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError("index out of range");if(offset<0)throw new RangeError("index out of range")}function writeFloat(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,4,3.4028234663852886e38,-3.4028234663852886e38)}ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4}Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert)};Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert)};function writeDouble(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,8,1.7976931348623157e308,-1.7976931348623157e308)}ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert)};Buffer.prototype.copy=function copy(target,targetStart,start,end){if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end=this.length)throw new RangeError("sourceStart out of bounds");if(end<0)throw new RangeError("sourceEnd out of bounds");if(end>this.length)end=this.length;if(target.length-targetStart=0;i--){target[i+targetStart]=this[i+start]}}else if(len<1e3||!Buffer.TYPED_ARRAY_SUPPORT){for(i=0;i=this.length)throw new RangeError("start out of bounds");if(end<0||end>this.length)throw new RangeError("end out of bounds");var i;if(typeof value==="number"){for(i=start;i55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){if((units-=3)>-1)bytes.push(239,191,189);continue}else if(i+1===length){if((units-=3)>-1)bytes.push(239,191,189);continue}leadSurrogate=codePoint;continue}if(codePoint<56320){if((units-=3)>-1)bytes.push(239,191,189);leadSurrogate=codePoint;continue}codePoint=(leadSurrogate-55296<<10|codePoint-56320)+65536}else if(leadSurrogate){if((units-=3)>-1)bytes.push(239,191,189)}leadSurrogate=null;if(codePoint<128){if((units-=1)<0)break;bytes.push(codePoint)}else if(codePoint<2048){if((units-=2)<0)break;bytes.push(codePoint>>6|192,codePoint&63|128)}else if(codePoint<65536){if((units-=3)<0)break;bytes.push(codePoint>>12|224,codePoint>>6&63|128,codePoint&63|128)}else if(codePoint<1114112){if((units-=4)<0)break;bytes.push(codePoint>>18|240,codePoint>>12&63|128,codePoint>>6&63|128,codePoint&63|128)}else{throw new Error("Invalid code point")}}return bytes}function asciiToBytes(str){var byteArray=[];for(var i=0;i>8;lo=c%256;byteArray.push(lo);byteArray.push(hi)}return byteArray}function base64ToBytes(str){return base64.toByteArray(base64clean(str))}function blitBuffer(src,dst,offset,length){for(var i=0;i=dst.length||i>=src.length)break;dst[i+offset]=src[i]}return i}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"base64-js":"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/base64-js/lib/b64.js",ieee754:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/ieee754/index.js",isarray:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/isarray/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/base64-js/lib/b64.js":[function(require,module,exports){"use strict";exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=="undefined"?Uint8Array:Array;function init(){var code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i0){throw new Error("Invalid string. Length must be a multiple of 4")}placeHolders=b64[len-2]==="="?2:b64[len-1]==="="?1:0;arr=new Arr(len*3/4-placeHolders);l=placeHolders>0?len-4:len; -var L=0;for(i=0,j=0;i>16&255;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}if(placeHolders===2){tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4;arr[L++]=tmp&255}else if(placeHolders===1){tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}return arr}function tripletToBase64(num){return lookup[num>>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[num&63]}function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=start;ilen2?len2:i+maxChunkLength))}if(extraBytes===1){tmp=uint8[len-1];output+=lookup[tmp>>2];output+=lookup[tmp<<4&63];output+="=="}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];output+=lookup[tmp>>10];output+=lookup[tmp>>4&63];output+=lookup[tmp<<2&63];output+="="}parts.push(output);return parts.join("")}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/ieee754/index.js":[function(require,module,exports){exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity}else{m=m+Math.pow(2,mLen);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2}if(e+eBias>=1){value+=rt/c}else{value+=rt*Math.pow(2,1-eBias)}if(value*c>=2){e++;c/=2}if(e+eBias>=eMax){m=0;e=eMax}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0}}for(;mLen>=8;buffer[offset+i]=m&255,i+=d,m/=256,mLen-=8){}e=e<0;buffer[offset+i]=e&255,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/node_modules/isarray/index.js":[function(require,module,exports){var toString={}.toString;module.exports=Array.isArray||function(arr){return toString.call(arr)=="[object Array]"}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/index.js":[function(require,module,exports){"use strict";exports.randomBytes=exports.rng=exports.pseudoRandomBytes=exports.prng=require("randombytes");exports.createHash=exports.Hash=require("create-hash");exports.createHmac=exports.Hmac=require("create-hmac");var hashes=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(Object.keys(require("browserify-sign/algos")));exports.getHashes=function(){return hashes};var p=require("pbkdf2");exports.pbkdf2=p.pbkdf2;exports.pbkdf2Sync=p.pbkdf2Sync;var aes=require("browserify-cipher");["Cipher","createCipher","Cipheriv","createCipheriv","Decipher","createDecipher","Decipheriv","createDecipheriv","getCiphers","listCiphers"].forEach(function(key){exports[key]=aes[key]});var dh=require("diffie-hellman");["DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman"].forEach(function(key){exports[key]=dh[key]});var sign=require("browserify-sign");["createSign","Sign","createVerify","Verify"].forEach(function(key){exports[key]=sign[key]});exports.createECDH=require("create-ecdh");var publicEncrypt=require("public-encrypt");["publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt"].forEach(function(key){exports[key]=publicEncrypt[key]});["createCredentials"].forEach(function(name){exports[name]=function(){throw new Error(["sorry, "+name+" is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))}})},{"browserify-cipher":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/browser.js","browserify-sign":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/browser.js","browserify-sign/algos":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/algos.js","create-ecdh":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-ecdh/browser.js","create-hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/browser.js","create-hmac":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hmac/browser.js","diffie-hellman":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/browser.js",pbkdf2:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/pbkdf2/browser.js","public-encrypt":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/public-encrypt/browser.js",randombytes:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/randombytes/browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/browser.js":[function(require,module,exports){var ebtk=require("evp_bytestokey");var aes=require("browserify-aes/browser");var DES=require("browserify-des");var desModes=require("browserify-des/modes");var aesModes=require("browserify-aes/modes");function createCipher(suite,password){var keyLen,ivLen;suite=suite.toLowerCase();if(aesModes[suite]){keyLen=aesModes[suite].key;ivLen=aesModes[suite].iv}else if(desModes[suite]){keyLen=desModes[suite].key*8;ivLen=desModes[suite].iv}else{throw new TypeError("invalid suite type")}var keys=ebtk(password,false,keyLen,ivLen);return createCipheriv(suite,keys.key,keys.iv)}function createDecipher(suite,password){var keyLen,ivLen;suite=suite.toLowerCase();if(aesModes[suite]){keyLen=aesModes[suite].key;ivLen=aesModes[suite].iv}else if(desModes[suite]){keyLen=desModes[suite].key*8;ivLen=desModes[suite].iv}else{throw new TypeError("invalid suite type")}var keys=ebtk(password,false,keyLen,ivLen);return createDecipheriv(suite,keys.key,keys.iv)}function createCipheriv(suite,key,iv){suite=suite.toLowerCase();if(aesModes[suite]){return aes.createCipheriv(suite,key,iv)}else if(desModes[suite]){return new DES({key:key,iv:iv,mode:suite})}else{throw new TypeError("invalid suite type")}}function createDecipheriv(suite,key,iv){suite=suite.toLowerCase();if(aesModes[suite]){return aes.createDecipheriv(suite,key,iv)}else if(desModes[suite]){return new DES({key:key,iv:iv,mode:suite,decrypt:true})}else{throw new TypeError("invalid suite type")}}exports.createCipher=exports.Cipher=createCipher;exports.createCipheriv=exports.Cipheriv=createCipheriv;exports.createDecipher=exports.Decipher=createDecipher;exports.createDecipheriv=exports.Decipheriv=createDecipheriv;function getCiphers(){return Object.keys(desModes).concat(aes.getCiphers())}exports.listCiphers=exports.getCiphers=getCiphers},{"browserify-aes/browser":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/browser.js","browserify-aes/modes":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes.js","browserify-des":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/index.js","browserify-des/modes":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/modes.js",evp_bytestokey:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/evp_bytestokey/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/aes.js":[function(require,module,exports){(function(Buffer){var uint_max=Math.pow(2,32);function fixup_uint32(x){var ret,x_pos;ret=x>uint_max||x<0?(x_pos=Math.abs(x)%uint_max,x<0?uint_max-x_pos:x_pos):x;return ret}function scrub_vec(v){for(var i=0;i>>8^sx&255^99;this.SBOX[x]=sx;this.INV_SBOX[sx]=x;x2=d[x];x4=d[x2];x8=d[x4];t=d[sx]*257^sx*16843008;this.SUB_MIX[0][x]=t<<24|t>>>8;this.SUB_MIX[1][x]=t<<16|t>>>16;this.SUB_MIX[2][x]=t<<8|t>>>24;this.SUB_MIX[3][x]=t;t=x8*16843009^x4*65537^x2*257^x*16843008;this.INV_SUB_MIX[0][sx]=t<<24|t>>>8;this.INV_SUB_MIX[1][sx]=t<<16|t>>>16;this.INV_SUB_MIX[2][sx]=t<<8|t>>>24;this.INV_SUB_MIX[3][sx]=t;if(x===0){x=xi=1}else{x=x2^d[d[d[x8^x2]]];xi^=d[d[xi]]}}return true};var G=new Global;AES.blockSize=4*4;AES.prototype.blockSize=AES.blockSize;AES.keySize=256/8;AES.prototype.keySize=AES.keySize;function bufferToArray(buf){var len=buf.length/4;var out=new Array(len);var i=-1;while(++i>>24,t=G.SBOX[t>>>24]<<24|G.SBOX[t>>>16&255]<<16|G.SBOX[t>>>8&255]<<8|G.SBOX[t&255],t^=G.RCON[ksRow/keySize|0]<<24):keySize>6&&ksRow%keySize===4?t=G.SBOX[t>>>24]<<24|G.SBOX[t>>>16&255]<<16|G.SBOX[t>>>8&255]<<8|G.SBOX[t&255]:void 0,this._keySchedule[ksRow-keySize]^t)}this._invKeySchedule=[];for(invKsRow=0;invKsRow>>24]]^G.INV_SUB_MIX[1][G.SBOX[t>>>16&255]]^G.INV_SUB_MIX[2][G.SBOX[t>>>8&255]]^G.INV_SUB_MIX[3][G.SBOX[t&255]]}return true};AES.prototype.encryptBlock=function(M){M=bufferToArray(new Buffer(M));var out=this._doCryptBlock(M,this._keySchedule,G.SUB_MIX,G.SBOX);var buf=new Buffer(16);buf.writeUInt32BE(out[0],0);buf.writeUInt32BE(out[1],4);buf.writeUInt32BE(out[2],8);buf.writeUInt32BE(out[3],12);return buf};AES.prototype.decryptBlock=function(M){M=bufferToArray(new Buffer(M));var temp=[M[3],M[1]];M[1]=temp[0];M[3]=temp[1];var out=this._doCryptBlock(M,this._invKeySchedule,G.INV_SUB_MIX,G.INV_SBOX);var buf=new Buffer(16);buf.writeUInt32BE(out[0],0);buf.writeUInt32BE(out[3],4);buf.writeUInt32BE(out[2],8);buf.writeUInt32BE(out[1],12);return buf};AES.prototype.scrub=function(){scrub_vec(this._keySchedule);scrub_vec(this._invKeySchedule);scrub_vec(this._key)};AES.prototype._doCryptBlock=function(M,keySchedule,SUB_MIX,SBOX){var ksRow,s0,s1,s2,s3,t0,t1,t2,t3;s0=M[0]^keySchedule[0];s1=M[1]^keySchedule[1];s2=M[2]^keySchedule[2];s3=M[3]^keySchedule[3];ksRow=4;for(var round=1;round>>24]^SUB_MIX[1][s1>>>16&255]^SUB_MIX[2][s2>>>8&255]^SUB_MIX[3][s3&255]^keySchedule[ksRow++];t1=SUB_MIX[0][s1>>>24]^SUB_MIX[1][s2>>>16&255]^SUB_MIX[2][s3>>>8&255]^SUB_MIX[3][s0&255]^keySchedule[ksRow++];t2=SUB_MIX[0][s2>>>24]^SUB_MIX[1][s3>>>16&255]^SUB_MIX[2][s0>>>8&255]^SUB_MIX[3][s1&255]^keySchedule[ksRow++];t3=SUB_MIX[0][s3>>>24]^SUB_MIX[1][s0>>>16&255]^SUB_MIX[2][s1>>>8&255]^SUB_MIX[3][s2&255]^keySchedule[ksRow++];s0=t0;s1=t1;s2=t2;s3=t3}t0=(SBOX[s0>>>24]<<24|SBOX[s1>>>16&255]<<16|SBOX[s2>>>8&255]<<8|SBOX[s3&255])^keySchedule[ksRow++];t1=(SBOX[s1>>>24]<<24|SBOX[s2>>>16&255]<<16|SBOX[s3>>>8&255]<<8|SBOX[s0&255])^keySchedule[ksRow++];t2=(SBOX[s2>>>24]<<24|SBOX[s3>>>16&255]<<16|SBOX[s0>>>8&255]<<8|SBOX[s1&255])^keySchedule[ksRow++];t3=(SBOX[s3>>>24]<<24|SBOX[s0>>>16&255]<<16|SBOX[s1>>>8&255]<<8|SBOX[s2&255])^keySchedule[ksRow++];return[fixup_uint32(t0),fixup_uint32(t1),fixup_uint32(t2),fixup_uint32(t3)]};exports.AES=AES}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/authCipher.js":[function(require,module,exports){(function(Buffer){var aes=require("./aes");var Transform=require("cipher-base");var inherits=require("inherits");var GHASH=require("./ghash");var xor=require("buffer-xor");inherits(StreamCipher,Transform);module.exports=StreamCipher;function StreamCipher(mode,key,iv,decrypt){if(!(this instanceof StreamCipher)){return new StreamCipher(mode,key,iv)}Transform.call(this);this._finID=Buffer.concat([iv,new Buffer([0,0,0,1])]);iv=Buffer.concat([iv,new Buffer([0,0,0,2])]);this._cipher=new aes.AES(key);this._prev=new Buffer(iv.length);this._cache=new Buffer("");this._secCache=new Buffer("");this._decrypt=decrypt;this._alen=0;this._len=0;iv.copy(this._prev);this._mode=mode;var h=new Buffer(4);h.fill(0);this._ghash=new GHASH(this._cipher.encryptBlock(h));this._authTag=null;this._called=false}StreamCipher.prototype._update=function(chunk){if(!this._called&&this._alen){var rump=16-this._alen%16;if(rump<16){rump=new Buffer(rump);rump.fill(0);this._ghash.update(rump)}}this._called=true;var out=this._mode.encrypt(this,chunk);if(this._decrypt){this._ghash.update(chunk)}else{this._ghash.update(out)}this._len+=chunk.length;return out};StreamCipher.prototype._final=function(){if(this._decrypt&&!this._authTag){throw new Error("Unsupported state or unable to authenticate data")}var tag=xor(this._ghash.final(this._alen*8,this._len*8),this._cipher.encryptBlock(this._finID));if(this._decrypt){if(xorTest(tag,this._authTag)){throw new Error("Unsupported state or unable to authenticate data")}}else{this._authTag=tag}this._cipher.scrub()};StreamCipher.prototype.getAuthTag=function getAuthTag(){if(!this._decrypt&&Buffer.isBuffer(this._authTag)){return this._authTag}else{throw new Error("Attempting to get auth tag in unsupported state")}};StreamCipher.prototype.setAuthTag=function setAuthTag(tag){if(this._decrypt){this._authTag=tag}else{throw new Error("Attempting to set auth tag in unsupported state")}};StreamCipher.prototype.setAAD=function setAAD(buf){if(!this._called){this._ghash.update(buf);this._alen+=buf.length}else{throw new Error("Attempting to set AAD in unsupported state")}};function xorTest(a,b){var out=0;if(a.length!==b.length){out++}var len=Math.min(a.length,b.length);var i=-1;while(++i16){out=this.cache.slice(0,16);this.cache=this.cache.slice(16);return out}}else{if(this.cache.length>=16){out=this.cache.slice(0,16);this.cache=this.cache.slice(16);return out}}return null};Splitter.prototype.flush=function(){if(this.cache.length){return this.cache}};function unpad(last){var padded=last[15];var i=-1;while(++i15){var out=this.cache.slice(0,16);this.cache=this.cache.slice(16);return out}return null};Splitter.prototype.flush=function(){var len=16-this.cache.length;var padBuff=new Buffer(len);var i=-1;while(++i0;j--){Vi[j]=Vi[j]>>>1|(Vi[j-1]&1)<<31}Vi[0]=Vi[0]>>>1;if(lsb_Vi){Vi[0]=Vi[0]^225<<24}}this.state=fromArray(Zi)};GHASH.prototype.update=function(buf){this.cache=Buffer.concat([this.cache,buf]);var chunk;while(this.cache.length>=16){chunk=this.cache.slice(0,16);this.cache=this.cache.slice(16);this.ghash(chunk)}};GHASH.prototype.final=function(abl,bl){if(this.cache.length){this.ghash(Buffer.concat([this.cache,zeros],16))}this.ghash(fromArray([0,abl,0,bl]));return this.state};function toArray(buf){return[buf.readUInt32BE(0),buf.readUInt32BE(4),buf.readUInt32BE(8),buf.readUInt32BE(12)]}function fromArray(out){out=out.map(fixup_uint32);var buf=new Buffer(16);buf.writeUInt32BE(out[0],0);buf.writeUInt32BE(out[1],4);buf.writeUInt32BE(out[2],8);buf.writeUInt32BE(out[3],12);return buf}var uint_max=Math.pow(2,32);function fixup_uint32(x){var ret,x_pos;ret=x>uint_max||x<0?(x_pos=Math.abs(x)%uint_max,x<0?uint_max-x_pos:x_pos):x;return ret}function xor(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]}}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes.js":[function(require,module,exports){exports["aes-128-ecb"]={cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"};exports["aes-192-ecb"]={cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"};exports["aes-256-ecb"]={cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"};exports["aes-128-cbc"]={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"};exports["aes-192-cbc"]={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"};exports["aes-256-cbc"]={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"};exports["aes128"]=exports["aes-128-cbc"];exports["aes192"]=exports["aes-192-cbc"];exports["aes256"]=exports["aes-256-cbc"];exports["aes-128-cfb"]={cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream" -};exports["aes-192-cfb"]={cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"};exports["aes-256-cfb"]={cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"};exports["aes-128-cfb8"]={cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"};exports["aes-192-cfb8"]={cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"};exports["aes-256-cfb8"]={cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"};exports["aes-128-cfb1"]={cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"};exports["aes-192-cfb1"]={cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"};exports["aes-256-cfb1"]={cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"};exports["aes-128-ofb"]={cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"};exports["aes-192-ofb"]={cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"};exports["aes-256-ofb"]={cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"};exports["aes-128-ctr"]={cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"};exports["aes-192-ctr"]={cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"};exports["aes-256-ctr"]={cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"};exports["aes-128-gcm"]={cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"};exports["aes-192-gcm"]={cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"};exports["aes-256-gcm"]={cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes/cbc.js":[function(require,module,exports){var xor=require("buffer-xor");exports.encrypt=function(self,block){var data=xor(block,self._prev);self._prev=self._cipher.encryptBlock(data);return self._prev};exports.decrypt=function(self,block){var pad=self._prev;self._prev=block;var out=self._cipher.decryptBlock(block);return xor(out,pad)}},{"buffer-xor":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/node_modules/buffer-xor/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes/cfb.js":[function(require,module,exports){(function(Buffer){var xor=require("buffer-xor");exports.encrypt=function(self,data,decrypt){var out=new Buffer("");var len;while(data.length){if(self._cache.length===0){self._cache=self._cipher.encryptBlock(self._prev);self._prev=new Buffer("")}if(self._cache.length<=data.length){len=self._cache.length;out=Buffer.concat([out,encryptStart(self,data.slice(0,len),decrypt)]);data=data.slice(len)}else{out=Buffer.concat([out,encryptStart(self,data,decrypt)]);break}}return out};function encryptStart(self,data,decrypt){var len=data.length;var out=xor(data,self._cache);self._cache=self._cache.slice(len);self._prev=Buffer.concat([self._prev,decrypt?data:out]);return out}}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js","buffer-xor":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/node_modules/buffer-xor/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes/cfb1.js":[function(require,module,exports){(function(Buffer){function encryptByte(self,byteParam,decrypt){var pad;var i=-1;var len=8;var out=0;var bit,value;while(++i>i%8;self._prev=shiftIn(self._prev,decrypt?bit:value)}return out}exports.encrypt=function(self,chunk,decrypt){var len=chunk.length;var out=new Buffer(len);var i=-1;while(++i>7}return out}}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/modes/cfb8.js":[function(require,module,exports){(function(Buffer){function encryptByte(self,byteParam,decrypt){var pad=self._cipher.encryptBlock(self._prev);var out=pad[0]^byteParam;self._prev=Buffer.concat([self._prev.slice(1),new Buffer([decrypt?byteParam:out])]);return out}exports.encrypt=function(self,chunk,decrypt){var len=chunk.length;var out=new Buffer(len);var i=-1;while(++i0;count--){inputOff+=this._buffer(data,inputOff);outputOff+=this._flushBuffer(out,outputOff)}inputOff+=this._buffer(data,inputOff);return out};Cipher.prototype.final=function final(buffer){var first;if(buffer)first=this.update(buffer);var last;if(this.type==="encrypt")last=this._finalEncrypt();else last=this._finalDecrypt();if(first)return first.concat(last);else return last};Cipher.prototype._pad=function _pad(buffer,off){if(off===0)return false;while(off>>1];kL=utils.r28shl(kL,shift);kR=utils.r28shl(kR,shift);utils.pc2(kL,kR,state.keys,i)}};DES.prototype._update=function _update(inp,inOff,out,outOff){var state=this._desState;var l=utils.readUInt32BE(inp,inOff);var r=utils.readUInt32BE(inp,inOff+4);utils.ip(l,r,state.tmp,0);l=state.tmp[0];r=state.tmp[1];if(this.type==="encrypt")this._encrypt(state,l,r,state.tmp,0);else this._decrypt(state,l,r,state.tmp,0);l=state.tmp[0];r=state.tmp[1];utils.writeUInt32BE(out,l,outOff);utils.writeUInt32BE(out,r,outOff+4)};DES.prototype._pad=function _pad(buffer,off){var value=buffer.length-off;for(var i=off;i>>0;l=t}utils.rip(r,l,out,off)};DES.prototype._decrypt=function _decrypt(state,lStart,rStart,out,off){var l=rStart;var r=lStart;for(var i=state.keys.length-2;i>=0;i-=2){var keyL=state.keys[i];var keyR=state.keys[i+1];utils.expand(l,state.tmp,0);keyL^=state.tmp[0];keyR^=state.tmp[1];var s=utils.substitute(keyL,keyR);var f=utils.permute(s);var t=l;l=(r^f)>>>0;r=t}utils.rip(l,r,out,off)}},{"../des":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/lib/des.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js","minimalistic-assert":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/node_modules/minimalistic-assert/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/lib/des/ede.js":[function(require,module,exports){"use strict";var assert=require("minimalistic-assert");var inherits=require("inherits");var des=require("../des");var Cipher=des.Cipher;var DES=des.DES;function EDEState(type,key){assert.equal(key.length,24,"Invalid key length");var k1=key.slice(0,8);var k2=key.slice(8,16);var k3=key.slice(16,24);if(type==="encrypt"){this.ciphers=[DES.create({type:"encrypt",key:k1}),DES.create({type:"decrypt",key:k2}),DES.create({type:"encrypt",key:k3})]}else{this.ciphers=[DES.create({type:"decrypt",key:k3}),DES.create({type:"encrypt",key:k2}),DES.create({type:"decrypt",key:k1})]}}function EDE(options){Cipher.call(this,options);var state=new EDEState(this.type,this.options.key);this._edeState=state}inherits(EDE,Cipher);module.exports=EDE;EDE.create=function create(options){return new EDE(options)};EDE.prototype._update=function _update(inp,inOff,out,outOff){var state=this._edeState;state.ciphers[0]._update(inp,inOff,out,outOff);state.ciphers[1]._update(out,outOff,out,outOff);state.ciphers[2]._update(out,outOff,out,outOff)};EDE.prototype._pad=DES.prototype._pad;EDE.prototype._unpad=DES.prototype._unpad},{"../des":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/lib/des.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js","minimalistic-assert":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/node_modules/minimalistic-assert/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-des/node_modules/des.js/lib/des/utils.js":[function(require,module,exports){"use strict";exports.readUInt32BE=function readUInt32BE(bytes,off){var res=bytes[0+off]<<24|bytes[1+off]<<16|bytes[2+off]<<8|bytes[3+off];return res>>>0};exports.writeUInt32BE=function writeUInt32BE(bytes,value,off){bytes[0+off]=value>>>24;bytes[1+off]=value>>>16&255;bytes[2+off]=value>>>8&255;bytes[3+off]=value&255};exports.ip=function ip(inL,inR,out,off){var outL=0;var outR=0;for(var i=6;i>=0;i-=2){for(var j=0;j<=24;j+=8){outL<<=1;outL|=inR>>>j+i&1}for(var j=0;j<=24;j+=8){outL<<=1;outL|=inL>>>j+i&1}}for(var i=6;i>=0;i-=2){for(var j=1;j<=25;j+=8){outR<<=1;outR|=inR>>>j+i&1}for(var j=1;j<=25;j+=8){outR<<=1;outR|=inL>>>j+i&1}}out[off+0]=outL>>>0;out[off+1]=outR>>>0};exports.rip=function rip(inL,inR,out,off){var outL=0;var outR=0;for(var i=0;i<4;i++){for(var j=24;j>=0;j-=8){outL<<=1;outL|=inR>>>j+i&1;outL<<=1;outL|=inL>>>j+i&1}}for(var i=4;i<8;i++){for(var j=24;j>=0;j-=8){outR<<=1;outR|=inR>>>j+i&1;outR<<=1;outR|=inL>>>j+i&1}}out[off+0]=outL>>>0;out[off+1]=outR>>>0};exports.pc1=function pc1(inL,inR,out,off){var outL=0;var outR=0;for(var i=7;i>=5;i--){for(var j=0;j<=24;j+=8){outL<<=1;outL|=inR>>j+i&1}for(var j=0;j<=24;j+=8){outL<<=1;outL|=inL>>j+i&1}}for(var j=0;j<=24;j+=8){outL<<=1;outL|=inR>>j+i&1}for(var i=1;i<=3;i++){for(var j=0;j<=24;j+=8){outR<<=1;outR|=inR>>j+i&1}for(var j=0;j<=24;j+=8){outR<<=1;outR|=inL>>j+i&1}}for(var j=0;j<=24;j+=8){outR<<=1;outR|=inL>>j+i&1}out[off+0]=outL>>>0;out[off+1]=outR>>>0};exports.r28shl=function r28shl(num,shift){return num<>>28-shift};var pc2table=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];exports.pc2=function pc2(inL,inR,out,off){var outL=0;var outR=0;var len=pc2table.length>>>1;for(var i=0;i>>pc2table[i]&1}for(var i=len;i>>pc2table[i]&1}out[off+0]=outL>>>0;out[off+1]=outR>>>0};exports.expand=function expand(r,out,off){var outL=0;var outR=0;outL=(r&1)<<5|r>>>27;for(var i=23;i>=15;i-=4){outL<<=6;outL|=r>>>i&63}for(var i=11;i>=3;i-=4){outR|=r>>>i&63;outR<<=6}outR|=(r&31)<<1|r>>>31;out[off+0]=outL>>>0;out[off+1]=outR>>>0};var sTable=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];exports.substitute=function substitute(inL,inR){var out=0;for(var i=0;i<4;i++){var b=inL>>>18-i*6&63;var sb=sTable[i*64+b];out<<=4;out|=sb}for(var i=0;i<4;i++){var b=inR>>>18-i*6&63;var sb=sTable[4*64+i*64+b];out<<=4;out|=sb}return out>>>0};var permuteTable=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];exports.permute=function permute(num){var out=0;for(var i=0;i>>permuteTable[i]&1}return out>>>0};exports.padSplit=function padSplit(num,size,group){var str=num.toString(2);while(str.length0){bufs.push(md_buf)}bufs.push(password);if(salt){bufs.push(salt)}md_buf=md5(Buffer.concat(bufs));bufs=[];i=0;if(keyLen>0){while(true){if(keyLen===0){break}if(i===md_buf.length){break}key[ki++]=md_buf[i];keyLen--;i++}}if(ivLen>0&&i!==md_buf.length){while(true){if(ivLen===0){break}if(i===md_buf.length){break}iv[ii++]=md_buf[i];ivLen--;i++}}if(keyLen===0&&ivLen===0){break}}for(i=0;i0)return left;return right};BN.min=function min(left,right){if(left.cmp(right)<0)return left;return right};BN.prototype._init=function init(number,base,endian){if(typeof number==="number"){return this._initNumber(number,base,endian)}if(typeof number==="object"){return this._initArray(number,base,endian)}if(base==="hex"){base=16}assert(base===(base|0)&&base>=2&&base<=36);number=number.toString().replace(/\s+/g,"");var start=0;if(number[0]==="-"){start++}if(base===16){this._parseHex(number,start)}else{this._parseBase(number,base,start)}if(number[0]==="-"){this.negative=1}this.strip();if(endian!=="le")return;this._initArray(this.toArray(),base,endian)};BN.prototype._initNumber=function _initNumber(number,base,endian){if(number<0){this.negative=1;number=-number}if(number<67108864){this.words=[number&67108863];this.length=1}else if(number<4503599627370496){this.words=[number&67108863,number/67108864&67108863];this.length=2}else{assert(number<9007199254740992);this.words=[number&67108863,number/67108864&67108863,1];this.length=3}if(endian!=="le")return;this._initArray(this.toArray(),base,endian)};BN.prototype._initArray=function _initArray(number,base,endian){assert(typeof number.length==="number");if(number.length<=0){this.words=[0];this.length=1;return this}this.length=Math.ceil(number.length/3);this.words=new Array(this.length);for(var i=0;i=0;i-=3){w=number[i]|number[i-1]<<8|number[i-2]<<16;this.words[j]|=w<>>26-off&67108863;off+=24;if(off>=26){off-=26;j++}}}else if(endian==="le"){for(i=0,j=0;i>>26-off&67108863;off+=24;if(off>=26){off-=26;j++}}}return this.strip()};function parseHex(str,start,end){var r=0;var len=Math.min(str.length,end);for(var i=start;i=49&&c<=54){r|=c-49+10}else if(c>=17&&c<=22){r|=c-17+10}else{r|=c&15}}return r}BN.prototype._parseHex=function _parseHex(number,start){this.length=Math.ceil((number.length-start)/6);this.words=new Array(this.length);for(var i=0;i=start;i-=6){w=parseHex(number,i,i+6);this.words[j]|=w<>>26-off&4194303;off+=24;if(off>=26){off-=26;j++}}if(i+6!==start){w=parseHex(number,start,i+6);this.words[j]|=w<>>26-off&4194303}this.strip()};function parseBase(str,start,end,mul){var r=0;var len=Math.min(str.length,end);for(var i=start;i=49){r+=c-49+10}else if(c>=17){r+=c-17+10}else{r+=c}}return r}BN.prototype._parseBase=function _parseBase(number,base,start){this.words=[0];this.length=1;for(var limbLen=0,limbPow=1;limbPow<=67108863;limbPow*=base){limbLen++}limbLen--;limbPow=limbPow/base|0;var total=number.length-start;var mod=total%limbLen;var end=Math.min(total,total-mod)+start;var word=0;for(var i=start;i1&&this.words[this.length-1]===0){this.length--}return this._normSign()};BN.prototype._normSign=function _normSign(){if(this.length===1&&this.words[0]===0){this.negative=0}return this};BN.prototype.inspect=function inspect(){return(this.red?""};var zeros=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"];var groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5];var groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];BN.prototype.toString=function toString(base,padding){base=base||10;padding=padding|0||1;var out;if(base===16||base==="hex"){out="";var off=0;var carry=0;for(var i=0;i>>24-off&16777215;if(carry!==0||i!==this.length-1){out=zeros[6-word.length]+word+out}else{out=word+out}off+=2;if(off>=26){off-=26;i--}}if(carry!==0){out=carry.toString(16)+out}while(out.length%padding!==0){out="0"+out}if(this.negative!==0){out="-"+out}return out}if(base===(base|0)&&base>=2&&base<=36){var groupSize=groupSizes[base];var groupBase=groupBases[base];out="";var c=this.clone();c.negative=0;while(!c.isZero()){var r=c.modn(groupBase).toString(base);c=c.idivn(groupBase);if(!c.isZero()){out=zeros[groupSize-r.length]+r+out}else{out=r+out}}if(this.isZero()){out="0"+out}while(out.length%padding!==0){out="0"+out}if(this.negative!==0){out="-"+out}return out}assert(false,"Base should be between 2 and 36")};BN.prototype.toNumber=function toNumber(){var length=this.bitLength();var ret;if(length<=26){ret=this.words[0]}else if(length<=52){ret=this.words[1]*67108864+this.words[0]}else if(length===53){ret=4503599627370496+this.words[1]*67108864+this.words[0]}else{assert(false,"Number can only safely store up to 53 bits")}return this.negative!==0?-ret:ret};BN.prototype.toJSON=function toJSON(){return this.toString(16)};BN.prototype.toBuffer=function toBuffer(endian,length){assert(typeof Buffer!=="undefined");return this.toArrayLike(Buffer,endian,length)};BN.prototype.toArray=function toArray(endian,length){return this.toArrayLike(Array,endian,length)};BN.prototype.toArrayLike=function toArrayLike(ArrayType,endian,length){var byteLength=this.byteLength();var reqLength=length||Math.max(1,byteLength);assert(byteLength<=reqLength,"byte array longer than desired length");assert(reqLength>0,"Requested array length <= 0");this.strip();var littleEndian=endian==="le";var res=new ArrayType(reqLength);var b,i;var q=this.clone();if(!littleEndian){for(i=0;i=4096){r+=13;t>>>=13}if(t>=64){r+=7;t>>>=7}if(t>=8){r+=4;t>>>=4}if(t>=2){r+=2;t>>>=2}return r+t}}BN.prototype._zeroBits=function _zeroBits(w){if(w===0)return 26;var t=w;var r=0;if((t&8191)===0){r+=13;t>>>=13}if((t&127)===0){r+=7;t>>>=7}if((t&15)===0){r+=4;t>>>=4}if((t&3)===0){r+=2;t>>>=2}if((t&1)===0){r++}return r};BN.prototype.bitLength=function bitLength(){var w=this.words[this.length-1];var hi=this._countBits(w);return(this.length-1)*26+hi};function toBitArray(num){var w=new Array(num.bitLength());for(var bit=0;bit>>wbit}return w}BN.prototype.zeroBits=function zeroBits(){if(this.isZero())return 0;var r=0;for(var i=0;inum.length)return this.clone().ior(num);return num.clone().ior(this)};BN.prototype.uor=function uor(num){if(this.length>num.length)return this.clone().iuor(num);return num.clone().iuor(this)};BN.prototype.iuand=function iuand(num){var b;if(this.length>num.length){b=num}else{b=this}for(var i=0;inum.length)return this.clone().iand(num);return num.clone().iand(this)};BN.prototype.uand=function uand(num){if(this.length>num.length)return this.clone().iuand(num);return num.clone().iuand(this)};BN.prototype.iuxor=function iuxor(num){var a;var b;if(this.length>num.length){a=this;b=num}else{a=num;b=this}for(var i=0;inum.length)return this.clone().ixor(num);return num.clone().ixor(this)};BN.prototype.uxor=function uxor(num){if(this.length>num.length)return this.clone().iuxor(num);return num.clone().iuxor(this)};BN.prototype.inotn=function inotn(width){assert(typeof width==="number"&&width>=0);var bytesNeeded=Math.ceil(width/26)|0;var bitsLeft=width%26;this._expand(bytesNeeded);if(bitsLeft>0){bytesNeeded--}for(var i=0;i0){this.words[i]=~this.words[i]&67108863>>26-bitsLeft}return this.strip()};BN.prototype.notn=function notn(width){return this.clone().inotn(width)};BN.prototype.setn=function setn(bit,val){assert(typeof bit==="number"&&bit>=0);var off=bit/26|0;var wbit=bit%26;this._expand(off+1);if(val){this.words[off]=this.words[off]|1<num.length){a=this;b=num}else{a=num;b=this}var carry=0;for(var i=0;i>>26}for(;carry!==0&&i>>26}this.length=a.length;if(carry!==0){this.words[this.length]=carry;this.length++}else if(a!==this){for(;inum.length)return this.clone().iadd(num);return num.clone().iadd(this)};BN.prototype.isub=function isub(num){if(num.negative!==0){num.negative=0;var r=this.iadd(num);num.negative=1;return r._normSign()}else if(this.negative!==0){this.negative=0;this.iadd(num);this.negative=1;return this._normSign()}var cmp=this.cmp(num);if(cmp===0){this.negative=0;this.length=1;this.words[0]=0;return this}var a,b;if(cmp>0){a=this;b=num}else{a=num;b=this}var carry=0;for(var i=0;i>26;this.words[i]=r&67108863}for(;carry!==0&&i>26;this.words[i]=r&67108863}if(carry===0&&i>>26;var rword=carry&67108863;var maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self.length+1);j<=maxJ;j++){var i=k-j|0;a=self.words[i]|0;b=num.words[j]|0;r=a*b+rword;ncarry+=r/67108864|0;rword=r&67108863}out.words[k]=rword|0;carry=ncarry|0}if(carry!==0){out.words[k]=carry|0}else{out.length--}return out.strip()}var comb10MulTo=function comb10MulTo(self,num,out){var a=self.words;var b=num.words;var o=out.words;var c=0;var lo;var mid;var hi;var a0=a[0]|0;var al0=a0&8191;var ah0=a0>>>13;var a1=a[1]|0;var al1=a1&8191;var ah1=a1>>>13;var a2=a[2]|0;var al2=a2&8191;var ah2=a2>>>13;var a3=a[3]|0;var al3=a3&8191;var ah3=a3>>>13;var a4=a[4]|0;var al4=a4&8191;var ah4=a4>>>13;var a5=a[5]|0;var al5=a5&8191;var ah5=a5>>>13;var a6=a[6]|0;var al6=a6&8191;var ah6=a6>>>13;var a7=a[7]|0;var al7=a7&8191;var ah7=a7>>>13;var a8=a[8]|0;var al8=a8&8191;var ah8=a8>>>13;var a9=a[9]|0;var al9=a9&8191;var ah9=a9>>>13;var b0=b[0]|0;var bl0=b0&8191;var bh0=b0>>>13;var b1=b[1]|0;var bl1=b1&8191;var bh1=b1>>>13;var b2=b[2]|0;var bl2=b2&8191;var bh2=b2>>>13;var b3=b[3]|0;var bl3=b3&8191;var bh3=b3>>>13;var b4=b[4]|0;var bl4=b4&8191;var bh4=b4>>>13;var b5=b[5]|0;var bl5=b5&8191;var bh5=b5>>>13;var b6=b[6]|0;var bl6=b6&8191;var bh6=b6>>>13;var b7=b[7]|0;var bl7=b7&8191;var bh7=b7>>>13;var b8=b[8]|0;var bl8=b8&8191;var bh8=b8>>>13;var b9=b[9]|0;var bl9=b9&8191;var bh9=b9>>>13;out.negative=self.negative^num.negative;out.length=19;lo=Math.imul(al0,bl0);mid=Math.imul(al0,bh0);mid+=Math.imul(ah0,bl0);hi=Math.imul(ah0,bh0);var w0=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w0>>>26);w0&=67108863;lo=Math.imul(al1,bl0);mid=Math.imul(al1,bh0);mid+=Math.imul(ah1,bl0);hi=Math.imul(ah1,bh0);lo+=Math.imul(al0,bl1);mid+=Math.imul(al0,bh1);mid+=Math.imul(ah0,bl1);hi+=Math.imul(ah0,bh1);var w1=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w1>>>26);w1&=67108863;lo=Math.imul(al2,bl0);mid=Math.imul(al2,bh0);mid+=Math.imul(ah2,bl0);hi=Math.imul(ah2,bh0);lo+=Math.imul(al1,bl1);mid+=Math.imul(al1,bh1);mid+=Math.imul(ah1,bl1);hi+=Math.imul(ah1,bh1);lo+=Math.imul(al0,bl2);mid+=Math.imul(al0,bh2);mid+=Math.imul(ah0,bl2);hi+=Math.imul(ah0,bh2);var w2=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w2>>>26);w2&=67108863;lo=Math.imul(al3,bl0);mid=Math.imul(al3,bh0);mid+=Math.imul(ah3,bl0);hi=Math.imul(ah3,bh0);lo+=Math.imul(al2,bl1);mid+=Math.imul(al2,bh1);mid+=Math.imul(ah2,bl1);hi+=Math.imul(ah2,bh1);lo+=Math.imul(al1,bl2);mid+=Math.imul(al1,bh2);mid+=Math.imul(ah1,bl2);hi+=Math.imul(ah1,bh2);lo+=Math.imul(al0,bl3);mid+=Math.imul(al0,bh3);mid+=Math.imul(ah0,bl3);hi+=Math.imul(ah0,bh3);var w3=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w3>>>26);w3&=67108863;lo=Math.imul(al4,bl0);mid=Math.imul(al4,bh0);mid+=Math.imul(ah4,bl0);hi=Math.imul(ah4,bh0);lo+=Math.imul(al3,bl1);mid+=Math.imul(al3,bh1);mid+=Math.imul(ah3,bl1);hi+=Math.imul(ah3,bh1);lo+=Math.imul(al2,bl2);mid+=Math.imul(al2,bh2);mid+=Math.imul(ah2,bl2);hi+=Math.imul(ah2,bh2);lo+=Math.imul(al1,bl3);mid+=Math.imul(al1,bh3);mid+=Math.imul(ah1,bl3);hi+=Math.imul(ah1,bh3);lo+=Math.imul(al0,bl4);mid+=Math.imul(al0,bh4);mid+=Math.imul(ah0,bl4);hi+=Math.imul(ah0,bh4);var w4=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w4>>>26);w4&=67108863;lo=Math.imul(al5,bl0);mid=Math.imul(al5,bh0);mid+=Math.imul(ah5,bl0);hi=Math.imul(ah5,bh0);lo+=Math.imul(al4,bl1);mid+=Math.imul(al4,bh1);mid+=Math.imul(ah4,bl1);hi+=Math.imul(ah4,bh1);lo+=Math.imul(al3,bl2);mid+=Math.imul(al3,bh2);mid+=Math.imul(ah3,bl2);hi+=Math.imul(ah3,bh2);lo+=Math.imul(al2,bl3);mid+=Math.imul(al2,bh3);mid+=Math.imul(ah2,bl3);hi+=Math.imul(ah2,bh3);lo+=Math.imul(al1,bl4);mid+=Math.imul(al1,bh4);mid+=Math.imul(ah1,bl4);hi+=Math.imul(ah1,bh4);lo+=Math.imul(al0,bl5);mid+=Math.imul(al0,bh5);mid+=Math.imul(ah0,bl5);hi+=Math.imul(ah0,bh5);var w5=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w5>>>26);w5&=67108863;lo=Math.imul(al6,bl0);mid=Math.imul(al6,bh0);mid+=Math.imul(ah6,bl0);hi=Math.imul(ah6,bh0);lo+=Math.imul(al5,bl1);mid+=Math.imul(al5,bh1);mid+=Math.imul(ah5,bl1);hi+=Math.imul(ah5,bh1);lo+=Math.imul(al4,bl2);mid+=Math.imul(al4,bh2);mid+=Math.imul(ah4,bl2);hi+=Math.imul(ah4,bh2);lo+=Math.imul(al3,bl3);mid+=Math.imul(al3,bh3);mid+=Math.imul(ah3,bl3);hi+=Math.imul(ah3,bh3);lo+=Math.imul(al2,bl4);mid+=Math.imul(al2,bh4);mid+=Math.imul(ah2,bl4);hi+=Math.imul(ah2,bh4);lo+=Math.imul(al1,bl5);mid+=Math.imul(al1,bh5);mid+=Math.imul(ah1,bl5);hi+=Math.imul(ah1,bh5);lo+=Math.imul(al0,bl6);mid+=Math.imul(al0,bh6);mid+=Math.imul(ah0,bl6);hi+=Math.imul(ah0,bh6);var w6=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w6>>>26);w6&=67108863;lo=Math.imul(al7,bl0);mid=Math.imul(al7,bh0);mid+=Math.imul(ah7,bl0);hi=Math.imul(ah7,bh0);lo+=Math.imul(al6,bl1);mid+=Math.imul(al6,bh1);mid+=Math.imul(ah6,bl1);hi+=Math.imul(ah6,bh1);lo+=Math.imul(al5,bl2);mid+=Math.imul(al5,bh2);mid+=Math.imul(ah5,bl2);hi+=Math.imul(ah5,bh2);lo+=Math.imul(al4,bl3);mid+=Math.imul(al4,bh3);mid+=Math.imul(ah4,bl3);hi+=Math.imul(ah4,bh3);lo+=Math.imul(al3,bl4);mid+=Math.imul(al3,bh4);mid+=Math.imul(ah3,bl4);hi+=Math.imul(ah3,bh4);lo+=Math.imul(al2,bl5);mid+=Math.imul(al2,bh5);mid+=Math.imul(ah2,bl5);hi+=Math.imul(ah2,bh5);lo+=Math.imul(al1,bl6);mid+=Math.imul(al1,bh6);mid+=Math.imul(ah1,bl6);hi+=Math.imul(ah1,bh6);lo+=Math.imul(al0,bl7);mid+=Math.imul(al0,bh7);mid+=Math.imul(ah0,bl7);hi+=Math.imul(ah0,bh7);var w7=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w7>>>26);w7&=67108863;lo=Math.imul(al8,bl0);mid=Math.imul(al8,bh0);mid+=Math.imul(ah8,bl0);hi=Math.imul(ah8,bh0);lo+=Math.imul(al7,bl1);mid+=Math.imul(al7,bh1);mid+=Math.imul(ah7,bl1);hi+=Math.imul(ah7,bh1);lo+=Math.imul(al6,bl2);mid+=Math.imul(al6,bh2);mid+=Math.imul(ah6,bl2);hi+=Math.imul(ah6,bh2);lo+=Math.imul(al5,bl3);mid+=Math.imul(al5,bh3);mid+=Math.imul(ah5,bl3);hi+=Math.imul(ah5,bh3);lo+=Math.imul(al4,bl4);mid+=Math.imul(al4,bh4);mid+=Math.imul(ah4,bl4);hi+=Math.imul(ah4,bh4);lo+=Math.imul(al3,bl5);mid+=Math.imul(al3,bh5);mid+=Math.imul(ah3,bl5);hi+=Math.imul(ah3,bh5);lo+=Math.imul(al2,bl6);mid+=Math.imul(al2,bh6);mid+=Math.imul(ah2,bl6);hi+=Math.imul(ah2,bh6);lo+=Math.imul(al1,bl7);mid+=Math.imul(al1,bh7);mid+=Math.imul(ah1,bl7);hi+=Math.imul(ah1,bh7);lo+=Math.imul(al0,bl8);mid+=Math.imul(al0,bh8);mid+=Math.imul(ah0,bl8);hi+=Math.imul(ah0,bh8);var w8=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w8>>>26);w8&=67108863;lo=Math.imul(al9,bl0);mid=Math.imul(al9,bh0);mid+=Math.imul(ah9,bl0);hi=Math.imul(ah9,bh0);lo+=Math.imul(al8,bl1);mid+=Math.imul(al8,bh1);mid+=Math.imul(ah8,bl1);hi+=Math.imul(ah8,bh1);lo+=Math.imul(al7,bl2);mid+=Math.imul(al7,bh2);mid+=Math.imul(ah7,bl2);hi+=Math.imul(ah7,bh2);lo+=Math.imul(al6,bl3);mid+=Math.imul(al6,bh3);mid+=Math.imul(ah6,bl3);hi+=Math.imul(ah6,bh3);lo+=Math.imul(al5,bl4);mid+=Math.imul(al5,bh4);mid+=Math.imul(ah5,bl4);hi+=Math.imul(ah5,bh4);lo+=Math.imul(al4,bl5);mid+=Math.imul(al4,bh5);mid+=Math.imul(ah4,bl5);hi+=Math.imul(ah4,bh5);lo+=Math.imul(al3,bl6);mid+=Math.imul(al3,bh6);mid+=Math.imul(ah3,bl6);hi+=Math.imul(ah3,bh6);lo+=Math.imul(al2,bl7);mid+=Math.imul(al2,bh7);mid+=Math.imul(ah2,bl7);hi+=Math.imul(ah2,bh7);lo+=Math.imul(al1,bl8);mid+=Math.imul(al1,bh8);mid+=Math.imul(ah1,bl8);hi+=Math.imul(ah1,bh8);lo+=Math.imul(al0,bl9);mid+=Math.imul(al0,bh9);mid+=Math.imul(ah0,bl9);hi+=Math.imul(ah0,bh9);var w9=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w9>>>26);w9&=67108863;lo=Math.imul(al9,bl1);mid=Math.imul(al9,bh1);mid+=Math.imul(ah9,bl1);hi=Math.imul(ah9,bh1);lo+=Math.imul(al8,bl2);mid+=Math.imul(al8,bh2);mid+=Math.imul(ah8,bl2);hi+=Math.imul(ah8,bh2);lo+=Math.imul(al7,bl3);mid+=Math.imul(al7,bh3);mid+=Math.imul(ah7,bl3);hi+=Math.imul(ah7,bh3);lo+=Math.imul(al6,bl4);mid+=Math.imul(al6,bh4);mid+=Math.imul(ah6,bl4);hi+=Math.imul(ah6,bh4);lo+=Math.imul(al5,bl5);mid+=Math.imul(al5,bh5);mid+=Math.imul(ah5,bl5);hi+=Math.imul(ah5,bh5);lo+=Math.imul(al4,bl6);mid+=Math.imul(al4,bh6);mid+=Math.imul(ah4,bl6);hi+=Math.imul(ah4,bh6);lo+=Math.imul(al3,bl7);mid+=Math.imul(al3,bh7);mid+=Math.imul(ah3,bl7);hi+=Math.imul(ah3,bh7);lo+=Math.imul(al2,bl8);mid+=Math.imul(al2,bh8);mid+=Math.imul(ah2,bl8);hi+=Math.imul(ah2,bh8);lo+=Math.imul(al1,bl9);mid+=Math.imul(al1,bh9);mid+=Math.imul(ah1,bl9);hi+=Math.imul(ah1,bh9);var w10=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w10>>>26);w10&=67108863;lo=Math.imul(al9,bl2);mid=Math.imul(al9,bh2);mid+=Math.imul(ah9,bl2);hi=Math.imul(ah9,bh2);lo+=Math.imul(al8,bl3);mid+=Math.imul(al8,bh3);mid+=Math.imul(ah8,bl3);hi+=Math.imul(ah8,bh3);lo+=Math.imul(al7,bl4);mid+=Math.imul(al7,bh4);mid+=Math.imul(ah7,bl4);hi+=Math.imul(ah7,bh4);lo+=Math.imul(al6,bl5);mid+=Math.imul(al6,bh5);mid+=Math.imul(ah6,bl5);hi+=Math.imul(ah6,bh5);lo+=Math.imul(al5,bl6);mid+=Math.imul(al5,bh6);mid+=Math.imul(ah5,bl6);hi+=Math.imul(ah5,bh6);lo+=Math.imul(al4,bl7);mid+=Math.imul(al4,bh7);mid+=Math.imul(ah4,bl7);hi+=Math.imul(ah4,bh7);lo+=Math.imul(al3,bl8);mid+=Math.imul(al3,bh8);mid+=Math.imul(ah3,bl8);hi+=Math.imul(ah3,bh8);lo+=Math.imul(al2,bl9);mid+=Math.imul(al2,bh9);mid+=Math.imul(ah2,bl9);hi+=Math.imul(ah2,bh9);var w11=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w11>>>26);w11&=67108863;lo=Math.imul(al9,bl3);mid=Math.imul(al9,bh3);mid+=Math.imul(ah9,bl3);hi=Math.imul(ah9,bh3);lo+=Math.imul(al8,bl4);mid+=Math.imul(al8,bh4);mid+=Math.imul(ah8,bl4);hi+=Math.imul(ah8,bh4);lo+=Math.imul(al7,bl5);mid+=Math.imul(al7,bh5);mid+=Math.imul(ah7,bl5);hi+=Math.imul(ah7,bh5);lo+=Math.imul(al6,bl6);mid+=Math.imul(al6,bh6);mid+=Math.imul(ah6,bl6);hi+=Math.imul(ah6,bh6);lo+=Math.imul(al5,bl7);mid+=Math.imul(al5,bh7);mid+=Math.imul(ah5,bl7);hi+=Math.imul(ah5,bh7);lo+=Math.imul(al4,bl8);mid+=Math.imul(al4,bh8);mid+=Math.imul(ah4,bl8);hi+=Math.imul(ah4,bh8);lo+=Math.imul(al3,bl9);mid+=Math.imul(al3,bh9);mid+=Math.imul(ah3,bl9);hi+=Math.imul(ah3,bh9);var w12=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w12>>>26);w12&=67108863;lo=Math.imul(al9,bl4);mid=Math.imul(al9,bh4);mid+=Math.imul(ah9,bl4);hi=Math.imul(ah9,bh4);lo+=Math.imul(al8,bl5);mid+=Math.imul(al8,bh5);mid+=Math.imul(ah8,bl5);hi+=Math.imul(ah8,bh5);lo+=Math.imul(al7,bl6);mid+=Math.imul(al7,bh6);mid+=Math.imul(ah7,bl6);hi+=Math.imul(ah7,bh6);lo+=Math.imul(al6,bl7);mid+=Math.imul(al6,bh7);mid+=Math.imul(ah6,bl7);hi+=Math.imul(ah6,bh7);lo+=Math.imul(al5,bl8);mid+=Math.imul(al5,bh8);mid+=Math.imul(ah5,bl8);hi+=Math.imul(ah5,bh8);lo+=Math.imul(al4,bl9);mid+=Math.imul(al4,bh9);mid+=Math.imul(ah4,bl9);hi+=Math.imul(ah4,bh9);var w13=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w13>>>26);w13&=67108863;lo=Math.imul(al9,bl5);mid=Math.imul(al9,bh5);mid+=Math.imul(ah9,bl5);hi=Math.imul(ah9,bh5);lo+=Math.imul(al8,bl6);mid+=Math.imul(al8,bh6);mid+=Math.imul(ah8,bl6);hi+=Math.imul(ah8,bh6);lo+=Math.imul(al7,bl7);mid+=Math.imul(al7,bh7);mid+=Math.imul(ah7,bl7);hi+=Math.imul(ah7,bh7);lo+=Math.imul(al6,bl8);mid+=Math.imul(al6,bh8);mid+=Math.imul(ah6,bl8);hi+=Math.imul(ah6,bh8);lo+=Math.imul(al5,bl9);mid+=Math.imul(al5,bh9);mid+=Math.imul(ah5,bl9);hi+=Math.imul(ah5,bh9);var w14=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w14>>>26);w14&=67108863;lo=Math.imul(al9,bl6);mid=Math.imul(al9,bh6);mid+=Math.imul(ah9,bl6);hi=Math.imul(ah9,bh6);lo+=Math.imul(al8,bl7);mid+=Math.imul(al8,bh7);mid+=Math.imul(ah8,bl7);hi+=Math.imul(ah8,bh7);lo+=Math.imul(al7,bl8);mid+=Math.imul(al7,bh8);mid+=Math.imul(ah7,bl8);hi+=Math.imul(ah7,bh8);lo+=Math.imul(al6,bl9);mid+=Math.imul(al6,bh9);mid+=Math.imul(ah6,bl9);hi+=Math.imul(ah6,bh9);var w15=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w15>>>26);w15&=67108863;lo=Math.imul(al9,bl7);mid=Math.imul(al9,bh7);mid+=Math.imul(ah9,bl7);hi=Math.imul(ah9,bh7);lo+=Math.imul(al8,bl8);mid+=Math.imul(al8,bh8);mid+=Math.imul(ah8,bl8);hi+=Math.imul(ah8,bh8);lo+=Math.imul(al7,bl9);mid+=Math.imul(al7,bh9);mid+=Math.imul(ah7,bl9);hi+=Math.imul(ah7,bh9);var w16=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w16>>>26);w16&=67108863;lo=Math.imul(al9,bl8);mid=Math.imul(al9,bh8);mid+=Math.imul(ah9,bl8);hi=Math.imul(ah9,bh8);lo+=Math.imul(al8,bl9);mid+=Math.imul(al8,bh9);mid+=Math.imul(ah8,bl9);hi+=Math.imul(ah8,bh9);var w17=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w17>>>26);w17&=67108863;lo=Math.imul(al9,bl9);mid=Math.imul(al9,bh9);mid+=Math.imul(ah9,bl9);hi=Math.imul(ah9,bh9);var w18=c+lo+((mid&8191)<<13);c=hi+(mid>>>13)+(w18>>>26);w18&=67108863;o[0]=w0;o[1]=w1;o[2]=w2;o[3]=w3;o[4]=w4;o[5]=w5;o[6]=w6;o[7]=w7;o[8]=w8;o[9]=w9;o[10]=w10;o[11]=w11;o[12]=w12;o[13]=w13;o[14]=w14;o[15]=w15;o[16]=w16;o[17]=w17;o[18]=w18;if(c!==0){o[19]=c;out.length++}return out};if(!Math.imul){comb10MulTo=smallMulTo}function bigMulTo(self,num,out){out.negative=num.negative^self.negative;out.length=self.length+num.length;var carry=0;var hncarry=0;for(var k=0;k>>26)|0;hncarry+=ncarry>>>26;ncarry&=67108863}out.words[k]=rword;carry=ncarry;ncarry=hncarry}if(carry!==0){out.words[k]=carry}else{out.length--}return out.strip()}function jumboMulTo(self,num,out){var fftm=new FFTM;return fftm.mulp(self,num,out)}BN.prototype.mulTo=function mulTo(num,out){var res;var len=this.length+num.length;if(this.length===10&&num.length===10){res=comb10MulTo(this,num,out)}else if(len<63){res=smallMulTo(this,num,out)}else if(len<1024){res=bigMulTo(this,num,out)}else{res=jumboMulTo(this,num,out)}return res};function FFTM(x,y){this.x=x;this.y=y}FFTM.prototype.makeRBT=function makeRBT(N){var t=new Array(N);var l=BN.prototype._countBits(N)-1;for(var i=0;i>=1}return rb};FFTM.prototype.permute=function permute(rbt,rws,iws,rtws,itws,N){for(var i=0;i>>1){i++}return 1<>>13;rws[2*i+1]=carry&8191;carry=carry>>>13}for(i=2*len;i>=26;carry+=w/67108864|0;carry+=lo>>>26;this.words[i]=lo&67108863}if(carry!==0){this.words[i]=carry;this.length++}return this};BN.prototype.muln=function muln(num){return this.clone().imuln(num)};BN.prototype.sqr=function sqr(){return this.mul(this)};BN.prototype.isqr=function isqr(){return this.imul(this.clone())};BN.prototype.pow=function pow(num){var w=toBitArray(num);if(w.length===0)return new BN(1);var res=this;for(var i=0;i=0);var r=bits%26;var s=(bits-r)/26;var carryMask=67108863>>>26-r<<26-r;var i;if(r!==0){var carry=0;for(i=0;i>>26-r}if(carry){this.words[i]=carry;this.length++}}if(s!==0){for(i=this.length-1;i>=0;i--){this.words[i+s]=this.words[i]}for(i=0;i=0);var h;if(hint){h=(hint-hint%26)/26}else{h=0}var r=bits%26;var s=Math.min((bits-r)/26,this.length);var mask=67108863^67108863>>>r<s){this.length-=s;for(i=0;i=0&&(carry!==0||i>=h);i--){var word=this.words[i]|0;this.words[i]=carry<<26-r|word>>>r;carry=word&mask}if(maskedWords&&carry!==0){maskedWords.words[maskedWords.length++]=carry}if(this.length===0){this.words[0]=0;this.length=1}return this.strip()};BN.prototype.ishrn=function ishrn(bits,hint,extended){assert(this.negative===0);return this.iushrn(bits,hint,extended)};BN.prototype.shln=function shln(bits){return this.clone().ishln(bits)};BN.prototype.ushln=function ushln(bits){return this.clone().iushln(bits)};BN.prototype.shrn=function shrn(bits){return this.clone().ishrn(bits)};BN.prototype.ushrn=function ushrn(bits){return this.clone().iushrn(bits)};BN.prototype.testn=function testn(bit){assert(typeof bit==="number"&&bit>=0);var r=bit%26;var s=(bit-r)/26;var q=1<=0);var r=bits%26;var s=(bits-r)/26;assert(this.negative===0,"imaskn works only with positive numbers");if(r!==0){s++}this.length=Math.min(s,this.length);if(r!==0){var mask=67108863^67108863>>>r<=67108864;i++){this.words[i]-=67108864;if(i===this.length-1){this.words[i+1]=1}else{this.words[i+1]++}}this.length=Math.max(this.length,i+1);return this};BN.prototype.isubn=function isubn(num){assert(typeof num==="number");assert(num<67108864);if(num<0)return this.iaddn(-num);if(this.negative!==0){this.negative=0;this.iaddn(num);this.negative=1;return this}this.words[0]-=num;if(this.length===1&&this.words[0]<0){this.words[0]=-this.words[0];this.negative=1}else{for(var i=0;i>26)-(right/67108864|0);this.words[i+shift]=w&67108863}for(;i>26;this.words[i+shift]=w&67108863}if(carry===0)return this.strip();assert(carry===-1);carry=0;for(i=0;i>26;this.words[i]=w&67108863}this.negative=1;return this.strip()};BN.prototype._wordDiv=function _wordDiv(num,mode){var shift=this.length-num.length;var a=this.clone();var b=num;var bhi=b.words[b.length-1]|0;var bhiBits=this._countBits(bhi);shift=26-bhiBits;if(shift!==0){b=b.ushln(shift);a.iushln(shift);bhi=b.words[b.length-1]|0}var m=a.length-b.length;var q;if(mode!=="mod"){q=new BN(null);q.length=m+1;q.words=new Array(q.length);for(var i=0;i=0;j--){var qj=(a.words[b.length+j]|0)*67108864+(a.words[b.length+j-1]|0);qj=Math.min(qj/bhi|0,67108863);a._ishlnsubmul(b,qj,j);while(a.negative!==0){qj--;a.negative=0;a._ishlnsubmul(b,1,j);if(!a.isZero()){a.negative^=1}}if(q){q.words[j]=qj}}if(q){q.strip()}a.strip();if(mode!=="div"&&shift!==0){a.iushrn(shift)}return{div:q||null,mod:a}};BN.prototype.divmod=function divmod(num,mode,positive){assert(!num.isZero());if(this.isZero()){return{div:new BN(0),mod:new BN(0)}}var div,mod,res;if(this.negative!==0&&num.negative===0){res=this.neg().divmod(num,mode);if(mode!=="mod"){div=res.div.neg()}if(mode!=="div"){mod=res.mod.neg();if(positive&&mod.negative!==0){mod.iadd(num)}}return{div:div,mod:mod}}if(this.negative===0&&num.negative!==0){res=this.divmod(num.neg(),mode);if(mode!=="mod"){div=res.div.neg()}return{div:div,mod:res.mod}}if((this.negative&num.negative)!==0){res=this.neg().divmod(num.neg(),mode);if(mode!=="div"){mod=res.mod.neg();if(positive&&mod.negative!==0){mod.isub(num)}}return{div:res.div,mod:mod}}if(num.length>this.length||this.cmp(num)<0){return{div:new BN(0),mod:this}}if(num.length===1){if(mode==="div"){return{div:this.divn(num.words[0]),mod:null}}if(mode==="mod"){return{div:null,mod:new BN(this.modn(num.words[0]))}}return{div:this.divn(num.words[0]),mod:new BN(this.modn(num.words[0]))}}return this._wordDiv(num,mode)};BN.prototype.div=function div(num){return this.divmod(num,"div",false).div};BN.prototype.mod=function mod(num){return this.divmod(num,"mod",false).mod};BN.prototype.umod=function umod(num){return this.divmod(num,"mod",true).mod};BN.prototype.divRound=function divRound(num){var dm=this.divmod(num);if(dm.mod.isZero())return dm.div;var mod=dm.div.negative!==0?dm.mod.isub(num):dm.mod;var half=num.ushrn(1);var r2=num.andln(1);var cmp=mod.cmp(half);if(cmp<0||r2===1&&cmp===0)return dm.div;return dm.div.negative!==0?dm.div.isubn(1):dm.div.iaddn(1)};BN.prototype.modn=function modn(num){assert(num<=67108863);var p=(1<<26)%num;var acc=0;for(var i=this.length-1;i>=0;i--){acc=(p*acc+(this.words[i]|0))%num}return acc};BN.prototype.idivn=function idivn(num){assert(num<=67108863);var carry=0;for(var i=this.length-1;i>=0;i--){var w=(this.words[i]|0)+carry*67108864;this.words[i]=w/num|0;carry=w%num}return this.strip()};BN.prototype.divn=function divn(num){return this.clone().idivn(num)};BN.prototype.egcd=function egcd(p){assert(p.negative===0);assert(!p.isZero());var x=this;var y=p.clone();if(x.negative!==0){x=x.umod(p)}else{x=x.clone()}var A=new BN(1);var B=new BN(0);var C=new BN(0);var D=new BN(1);var g=0;while(x.isEven()&&y.isEven()){x.iushrn(1);y.iushrn(1);++g}var yp=y.clone();var xp=x.clone();while(!x.isZero()){for(var i=0,im=1;(x.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){x.iushrn(i);while(i-- >0){if(A.isOdd()||B.isOdd()){A.iadd(yp);B.isub(xp)}A.iushrn(1);B.iushrn(1)}}for(var j=0,jm=1;(y.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){y.iushrn(j);while(j-- >0){if(C.isOdd()||D.isOdd()){C.iadd(yp);D.isub(xp)}C.iushrn(1);D.iushrn(1)}}if(x.cmp(y)>=0){x.isub(y);A.isub(C);B.isub(D)}else{y.isub(x);C.isub(A);D.isub(B)}}return{a:C,b:D,gcd:y.iushln(g)}};BN.prototype._invmp=function _invmp(p){assert(p.negative===0);assert(!p.isZero());var a=this;var b=p.clone();if(a.negative!==0){a=a.umod(p)}else{a=a.clone()}var x1=new BN(1);var x2=new BN(0);var delta=b.clone();while(a.cmpn(1)>0&&b.cmpn(1)>0){for(var i=0,im=1;(a.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){a.iushrn(i);while(i-- >0){if(x1.isOdd()){x1.iadd(delta)}x1.iushrn(1)}}for(var j=0,jm=1;(b.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){b.iushrn(j);while(j-- >0){if(x2.isOdd()){x2.iadd(delta)}x2.iushrn(1)}}if(a.cmp(b)>=0){a.isub(b);x1.isub(x2)}else{b.isub(a);x2.isub(x1)}}var res;if(a.cmpn(1)===0){res=x1}else{res=x2}if(res.cmpn(0)<0){res.iadd(p)}return res};BN.prototype.gcd=function gcd(num){if(this.isZero())return num.abs();if(num.isZero())return this.abs();var a=this.clone();var b=num.clone();a.negative=0;b.negative=0;for(var shift=0;a.isEven()&&b.isEven();shift++){a.iushrn(1);b.iushrn(1)}do{while(a.isEven()){a.iushrn(1)}while(b.isEven()){b.iushrn(1)}var r=a.cmp(b);if(r<0){var t=a;a=b;b=t}else if(r===0||b.cmpn(1)===0){break}a.isub(b)}while(true);return b.iushln(shift)};BN.prototype.invm=function invm(num){return this.egcd(num).a.umod(num)};BN.prototype.isEven=function isEven(){return(this.words[0]&1)===0};BN.prototype.isOdd=function isOdd(){return(this.words[0]&1)===1};BN.prototype.andln=function andln(num){return this.words[0]&num};BN.prototype.bincn=function bincn(bit){assert(typeof bit==="number");var r=bit%26;var s=(bit-r)/26;var q=1<>>26;w&=67108863;this.words[i]=w}if(carry!==0){this.words[i]=carry;this.length++}return this};BN.prototype.isZero=function isZero(){return this.length===1&&this.words[0]===0};BN.prototype.cmpn=function cmpn(num){var negative=num<0;if(this.negative!==0&&!negative)return-1;if(this.negative===0&&negative)return 1;this.strip();var res;if(this.length>1){res=1}else{if(negative){num=-num}assert(num<=67108863,"Number is too big");var w=this.words[0]|0;res=w===num?0:wnum.length)return 1;if(this.length=0;i--){var a=this.words[i]|0;var b=num.words[i]|0;if(a===b)continue;if(ab){res=1}break}return res};BN.prototype.gtn=function gtn(num){return this.cmpn(num)===1};BN.prototype.gt=function gt(num){return this.cmp(num)===1};BN.prototype.gten=function gten(num){return this.cmpn(num)>=0};BN.prototype.gte=function gte(num){return this.cmp(num)>=0};BN.prototype.ltn=function ltn(num){return this.cmpn(num)===-1};BN.prototype.lt=function lt(num){return this.cmp(num)===-1};BN.prototype.lten=function lten(num){return this.cmpn(num)<=0};BN.prototype.lte=function lte(num){return this.cmp(num)<=0};BN.prototype.eqn=function eqn(num){return this.cmpn(num)===0};BN.prototype.eq=function eq(num){return this.cmp(num)===0};BN.red=function red(num){return new Red(num)};BN.prototype.toRed=function toRed(ctx){assert(!this.red,"Already a number in reduction context");assert(this.negative===0,"red works only with positives");return ctx.convertTo(this)._forceRed(ctx)};BN.prototype.fromRed=function fromRed(){assert(this.red,"fromRed works only with numbers in reduction context");return this.red.convertFrom(this)};BN.prototype._forceRed=function _forceRed(ctx){this.red=ctx;return this};BN.prototype.forceRed=function forceRed(ctx){assert(!this.red,"Already a number in reduction context");return this._forceRed(ctx)};BN.prototype.redAdd=function redAdd(num){assert(this.red,"redAdd works only with red numbers");return this.red.add(this,num)};BN.prototype.redIAdd=function redIAdd(num){assert(this.red,"redIAdd works only with red numbers");return this.red.iadd(this,num)};BN.prototype.redSub=function redSub(num){assert(this.red,"redSub works only with red numbers");return this.red.sub(this,num)};BN.prototype.redISub=function redISub(num){assert(this.red,"redISub works only with red numbers");return this.red.isub(this,num)};BN.prototype.redShl=function redShl(num){assert(this.red,"redShl works only with red numbers");return this.red.shl(this,num)};BN.prototype.redMul=function redMul(num){assert(this.red,"redMul works only with red numbers");this.red._verify2(this,num);return this.red.mul(this,num)};BN.prototype.redIMul=function redIMul(num){assert(this.red,"redMul works only with red numbers");this.red._verify2(this,num);return this.red.imul(this,num)};BN.prototype.redSqr=function redSqr(){assert(this.red,"redSqr works only with red numbers");this.red._verify1(this);return this.red.sqr(this)};BN.prototype.redISqr=function redISqr(){assert(this.red,"redISqr works only with red numbers");this.red._verify1(this);return this.red.isqr(this)};BN.prototype.redSqrt=function redSqrt(){assert(this.red,"redSqrt works only with red numbers");this.red._verify1(this);return this.red.sqrt(this)};BN.prototype.redInvm=function redInvm(){assert(this.red,"redInvm works only with red numbers");this.red._verify1(this);return this.red.invm(this)};BN.prototype.redNeg=function redNeg(){assert(this.red,"redNeg works only with red numbers");this.red._verify1(this);return this.red.neg(this)};BN.prototype.redPow=function redPow(num){assert(this.red&&!num.red,"redPow(normalNum)");this.red._verify1(this);return this.red.pow(this,num)};var primes={k256:null,p224:null,p192:null,p25519:null};function MPrime(name,p){this.name=name;this.p=new BN(p,16);this.n=this.p.bitLength();this.k=new BN(1).iushln(this.n).isub(this.p);this.tmp=this._tmp()}MPrime.prototype._tmp=function _tmp(){var tmp=new BN(null);tmp.words=new Array(Math.ceil(this.n/13));return tmp};MPrime.prototype.ireduce=function ireduce(num){var r=num;var rlen;do{this.split(r,this.tmp);r=this.imulK(r);r=r.iadd(this.tmp);rlen=r.bitLength()}while(rlen>this.n);var cmp=rlen0){r.isub(this.p)}else{r.strip()}return r};MPrime.prototype.split=function split(input,out){input.iushrn(this.n,0,out)};MPrime.prototype.imulK=function imulK(num){return num.imul(this.k)};function K256(){MPrime.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}inherits(K256,MPrime);K256.prototype.split=function split(input,output){var mask=4194303;var outLen=Math.min(input.length,9);for(var i=0;i>>22;prev=next}prev>>>=22;input.words[i-10]=prev;if(prev===0&&input.length>10){input.length-=10}else{input.length-=9}};K256.prototype.imulK=function imulK(num){num.words[num.length]=0;num.words[num.length+1]=0;num.length+=2;var lo=0;for(var i=0;i>>=26;num.words[i]=lo;carry=hi}if(carry!==0){num.words[num.length++]=carry}return num};BN._prime=function prime(name){if(primes[name])return primes[name];var prime;if(name==="k256"){prime=new K256}else if(name==="p224"){prime=new P224}else if(name==="p192"){prime=new P192}else if(name==="p25519"){prime=new P25519}else{throw new Error("Unknown prime "+name)}primes[name]=prime;return prime};function Red(m){if(typeof m==="string"){var prime=BN._prime(m);this.m=prime.p;this.prime=prime}else{this.m=m;this.prime=null}}Red.prototype._verify1=function _verify1(a){assert(a.negative===0,"red works only with positives");assert(a.red,"red works only with red numbers")};Red.prototype._verify2=function _verify2(a,b){assert((a.negative|b.negative)===0,"red works only with positives");assert(a.red&&a.red===b.red,"red works only with red numbers")};Red.prototype.imod=function imod(a){if(this.prime)return this.prime.ireduce(a)._forceRed(this);return a.umod(this.m)._forceRed(this)};Red.prototype.neg=function neg(a){if(a.isZero()){return a.clone()}return this.m.sub(a)._forceRed(this)};Red.prototype.add=function add(a,b){this._verify2(a,b);var res=a.add(b);if(res.cmp(this.m)>=0){res.isub(this.m)}return res._forceRed(this)};Red.prototype.iadd=function iadd(a,b){this._verify2(a,b);var res=a.iadd(b);if(res.cmp(this.m)>=0){res.isub(this.m)}return res};Red.prototype.sub=function sub(a,b){this._verify2(a,b);var res=a.sub(b);if(res.cmpn(0)<0){res.iadd(this.m)}return res._forceRed(this)};Red.prototype.isub=function isub(a,b){this._verify2(a,b);var res=a.isub(b);if(res.cmpn(0)<0){res.iadd(this.m)}return res};Red.prototype.shl=function shl(a,num){this._verify1(a);return this.imod(a.ushln(num))};Red.prototype.imul=function imul(a,b){this._verify2(a,b);return this.imod(a.imul(b))};Red.prototype.mul=function mul(a,b){this._verify2(a,b);return this.imod(a.mul(b))};Red.prototype.isqr=function isqr(a){return this.imul(a,a.clone())};Red.prototype.sqr=function sqr(a){return this.mul(a,a)};Red.prototype.sqrt=function sqrt(a){if(a.isZero())return a.clone();var mod3=this.m.andln(3);assert(mod3%2===1);if(mod3===3){var pow=this.m.add(new BN(1)).iushrn(2);return this.pow(a,pow)}var q=this.m.subn(1);var s=0;while(!q.isZero()&&q.andln(1)===0){s++;q.iushrn(1)}assert(!q.isZero());var one=new BN(1).toRed(this);var nOne=one.redNeg();var lpow=this.m.subn(1).iushrn(1);var z=this.m.bitLength();z=new BN(2*z*z).toRed(this);while(this.pow(z,lpow).cmp(nOne)!==0){z.redIAdd(nOne)}var c=this.pow(z,q);var r=this.pow(a,q.addn(1).iushrn(1));var t=this.pow(a,q);var m=s;while(t.cmp(one)!==0){var tmp=t;for(var i=0;tmp.cmp(one)!==0;i++){tmp=tmp.redSqr()}assert(i=0;i--){var word=num.words[i];for(var j=start-1;j>=0;j--){var bit=word>>j&1;if(res!==wnd[0]){res=this.sqr(res)}if(bit===0&¤t===0){currentLen=0;continue}current<<=1;current|=bit;currentLen++;if(currentLen!==windowSize&&(i!==0||j!==0))continue;res=this.mul(res,wnd[current]);currentLen=0;current=0}start=26}return res};Red.prototype.convertTo=function convertTo(num){var r=num.umod(this.m);return r===num?r.clone():r};Red.prototype.convertFrom=function convertFrom(num){var res=num.clone();res.red=null;return res};BN.mont=function mont(num){return new Mont(num)};function Mont(m){Red.call(this,m);this.shift=this.m.bitLength();if(this.shift%26!==0){this.shift+=26-this.shift%26}this.r=new BN(1).iushln(this.shift);this.r2=this.imod(this.r.sqr());this.rinv=this.r._invmp(this.m);this.minv=this.rinv.mul(this.r).isubn(1).div(this.m);this.minv=this.minv.umod(this.r);this.minv=this.r.sub(this.minv)}inherits(Mont,Red);Mont.prototype.convertTo=function convertTo(num){return this.imod(num.ushln(this.shift))};Mont.prototype.convertFrom=function convertFrom(num){var r=this.imod(num.mul(this.rinv));r.red=null;return r};Mont.prototype.imul=function imul(a,b){if(a.isZero()||b.isZero()){a.words[0]=0;a.length=1;return a}var t=a.imul(b);var c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var u=t.isub(c).iushrn(this.shift);var res=u;if(u.cmp(this.m)>=0){res=u.isub(this.m)}else if(u.cmpn(0)<0){res=u.iadd(this.m)}return res._forceRed(this)};Mont.prototype.mul=function mul(a,b){if(a.isZero()||b.isZero())return new BN(0)._forceRed(this);var t=a.mul(b);var c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var u=t.isub(c).iushrn(this.shift);var res=u;if(u.cmp(this.m)>=0){res=u.isub(this.m)}else if(u.cmpn(0)<0){res=u.iadd(this.m)}return res._forceRed(this)};Mont.prototype.invm=function invm(a){var res=this.imod(a._invmp(this.m).mul(this.r2));return res._forceRed(this)}})(typeof module==="undefined"||module,this)},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/browserify-rsa/index.js":[function(require,module,exports){(function(Buffer){var bn=require("bn.js");var randomBytes=require("randombytes");module.exports=crt;function blind(priv){var r=getr(priv);var blinder=r.toRed(bn.mont(priv.modulus)).redPow(new bn(priv.publicExponent)).fromRed();return{blinder:blinder,unblinder:r.invm(priv.modulus)}}function crt(msg,priv){var blinds=blind(priv);var len=priv.modulus.byteLength();var mod=bn.mont(priv.modulus);var blinded=new bn(msg).mul(blinds.blinder).umod(priv.modulus);var c1=blinded.toRed(bn.mont(priv.prime1));var c2=blinded.toRed(bn.mont(priv.prime2));var qinv=priv.coefficient;var p=priv.prime1;var q=priv.prime2;var m1=c1.redPow(priv.exponent1);var m2=c2.redPow(priv.exponent2);m1=m1.fromRed();m2=m2.fromRed();var h=m1.isub(m2).imul(qinv).umod(p);h.imul(q);m2.iadd(h);return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false,len))}crt.getr=getr;function getr(priv){var len=priv.modulus.byteLength();var r=new bn(randomBytes(len));while(r.cmp(priv.modulus)>=0||!r.umod(priv.prime1)||!r.umod(priv.prime2)){r=new bn(randomBytes(len))}return r}}).call(this,require("buffer").Buffer)},{"bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",randombytes:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/randombytes/browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js":[function(require,module,exports){"use strict";var elliptic=exports;elliptic.version=require("../package.json").version;elliptic.utils=require("./elliptic/utils");elliptic.rand=require("brorand");elliptic.hmacDRBG=require("./elliptic/hmac-drbg");elliptic.curve=require("./elliptic/curve");elliptic.curves=require("./elliptic/curves");elliptic.ec=require("./elliptic/ec");elliptic.eddsa=require("./elliptic/eddsa")},{"../package.json":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/package.json","./elliptic/curve":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/index.js","./elliptic/curves":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curves.js","./elliptic/ec":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/index.js","./elliptic/eddsa":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/eddsa/index.js","./elliptic/hmac-drbg":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/hmac-drbg.js","./elliptic/utils":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/utils.js",brorand:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/node_modules/brorand/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/base.js":[function(require,module,exports){"use strict";var BN=require("bn.js");var elliptic=require("../../elliptic");var utils=elliptic.utils;var getNAF=utils.getNAF;var getJSF=utils.getJSF;var assert=utils.assert;function BaseCurve(type,conf){this.type=type;this.p=new BN(conf.p,16);this.red=conf.prime?BN.red(conf.prime):BN.mont(this.p);this.zero=new BN(0).toRed(this.red);this.one=new BN(1).toRed(this.red);this.two=new BN(2).toRed(this.red);this.n=conf.n&&new BN(conf.n,16);this.g=conf.g&&this.pointFromJSON(conf.g,conf.gRed);this._wnafT1=new Array(4);this._wnafT2=new Array(4);this._wnafT3=new Array(4);this._wnafT4=new Array(4)}module.exports=BaseCurve;BaseCurve.prototype.point=function point(){throw new Error("Not implemented")};BaseCurve.prototype.validate=function validate(){throw new Error("Not implemented")};BaseCurve.prototype._fixedNafMul=function _fixedNafMul(p,k){assert(p.precomputed);var doubles=p._getDoubles();var naf=getNAF(k,1);var I=(1<=j;k--)nafW=(nafW<<1)+naf[k];repr.push(nafW)}var a=this.jpoint(null,null,null);var b=this.jpoint(null,null,null);for(var i=I;i>0;i--){for(var j=0;j=0;i--){for(var k=0;i>=0&&naf[i]===0;i--)k++;if(i>=0)k++;acc=acc.dblp(k);if(i<0)break;var z=naf[i];assert(z!==0);if(p.type==="affine"){if(z>0)acc=acc.mixedAdd(wnd[z-1>>1]);else acc=acc.mixedAdd(wnd[-z-1>>1].neg())}else{if(z>0)acc=acc.add(wnd[z-1>>1]);else acc=acc.add(wnd[-z-1>>1].neg())}}return p.type==="affine"?acc.toP():acc};BaseCurve.prototype._wnafMulAdd=function _wnafMulAdd(defW,points,coeffs,len){var wndWidth=this._wnafT1;var wnd=this._wnafT2;var naf=this._wnafT3;var max=0;for(var i=0;i=1;i-=2){var a=i-1;var b=i;if(wndWidth[a]!==1||wndWidth[b]!==1){naf[a]=getNAF(coeffs[a],wndWidth[a]);naf[b]=getNAF(coeffs[b],wndWidth[b]);max=Math.max(naf[a].length,max);max=Math.max(naf[b].length,max);continue}var comb=[points[a],null,null,points[b]];if(points[a].y.cmp(points[b].y)===0){comb[1]=points[a].add(points[b]);comb[2]=points[a].toJ().mixedAdd(points[b].neg())}else if(points[a].y.cmp(points[b].y.redNeg())===0){comb[1]=points[a].toJ().mixedAdd(points[b]);comb[2]=points[a].add(points[b].neg())}else{comb[1]=points[a].toJ().mixedAdd(points[b]); -comb[2]=points[a].toJ().mixedAdd(points[b].neg())}var index=[-3,-1,-5,-7,0,7,5,1,3];var jsf=getJSF(coeffs[a],coeffs[b]);max=Math.max(jsf[0].length,max);naf[a]=new Array(max);naf[b]=new Array(max);for(var j=0;j=0;i--){var k=0;while(i>=0){var zero=true;for(var j=0;j=0)k++;acc=acc.dblp(k);if(i<0)break;for(var j=0;j0)p=wnd[j][z-1>>1];else if(z<0)p=wnd[j][-z-1>>1].neg();if(p.type==="affine")acc=acc.mixedAdd(p);else acc=acc.add(p)}}for(var i=0;i=Math.ceil((k.bitLength()+1)/doubles.step)};BasePoint.prototype._getDoubles=function _getDoubles(step,power){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;var doubles=[this];var acc=this;for(var i=0;i";return""};Point.prototype.isInfinity=function isInfinity(){return this.x.cmpn(0)===0&&this.y.cmp(this.z)===0};Point.prototype._extDbl=function _extDbl(){var a=this.x.redSqr();var b=this.y.redSqr();var c=this.z.redSqr();c=c.redIAdd(c);var d=this.curve._mulA(a);var e=this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);var g=d.redAdd(b);var f=g.redSub(c);var h=d.redSub(b);var nx=e.redMul(f);var ny=g.redMul(h);var nt=e.redMul(h);var nz=f.redMul(g);return this.curve.point(nx,ny,nz,nt)};Point.prototype._projDbl=function _projDbl(){var b=this.x.redAdd(this.y).redSqr();var c=this.x.redSqr();var d=this.y.redSqr();var nx;var ny;var nz;if(this.curve.twisted){var e=this.curve._mulA(c);var f=e.redAdd(d);if(this.zOne){nx=b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));ny=f.redMul(e.redSub(d));nz=f.redSqr().redSub(f).redSub(f)}else{var h=this.z.redSqr();var j=f.redSub(h).redISub(h);nx=b.redSub(c).redISub(d).redMul(j);ny=f.redMul(e.redSub(d));nz=f.redMul(j)}}else{var e=c.redAdd(d);var h=this.curve._mulC(this.c.redMul(this.z)).redSqr();var j=e.redSub(h).redSub(h);nx=this.curve._mulC(b.redISub(e)).redMul(j);ny=this.curve._mulC(e).redMul(c.redISub(d));nz=e.redMul(j)}return this.curve.point(nx,ny,nz)};Point.prototype.dbl=function dbl(){if(this.isInfinity())return this;if(this.curve.extended)return this._extDbl();else return this._projDbl()};Point.prototype._extAdd=function _extAdd(p){var a=this.y.redSub(this.x).redMul(p.y.redSub(p.x));var b=this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));var c=this.t.redMul(this.curve.dd).redMul(p.t);var d=this.z.redMul(p.z.redAdd(p.z));var e=b.redSub(a);var f=d.redSub(c);var g=d.redAdd(c);var h=b.redAdd(a);var nx=e.redMul(f);var ny=g.redMul(h);var nt=e.redMul(h);var nz=f.redMul(g);return this.curve.point(nx,ny,nz,nt)};Point.prototype._projAdd=function _projAdd(p){var a=this.z.redMul(p.z);var b=a.redSqr();var c=this.x.redMul(p.x);var d=this.y.redMul(p.y);var e=this.curve.d.redMul(c).redMul(d);var f=b.redSub(e);var g=b.redAdd(e);var tmp=this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);var nx=a.redMul(f).redMul(tmp);var ny;var nz;if(this.curve.twisted){ny=a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));nz=f.redMul(g)}else{ny=a.redMul(g).redMul(d.redSub(c));nz=this.curve._mulC(f).redMul(g)}return this.curve.point(nx,ny,nz)};Point.prototype.add=function add(p){if(this.isInfinity())return p;if(p.isInfinity())return this;if(this.curve.extended)return this._extAdd(p);else return this._projAdd(p)};Point.prototype.mul=function mul(k){if(this._hasDoubles(k))return this.curve._fixedNafMul(this,k);else return this.curve._wnafMul(this,k)};Point.prototype.mulAdd=function mulAdd(k1,p,k2){return this.curve._wnafMulAdd(1,[this,p],[k1,k2],2)};Point.prototype.normalize=function normalize(){if(this.zOne)return this;var zi=this.z.redInvm();this.x=this.x.redMul(zi);this.y=this.y.redMul(zi);if(this.t)this.t=this.t.redMul(zi);this.z=this.curve.one;this.zOne=true;return this};Point.prototype.neg=function neg(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Point.prototype.getX=function getX(){this.normalize();return this.x.fromRed()};Point.prototype.getY=function getY(){this.normalize();return this.y.fromRed()};Point.prototype.eq=function eq(other){return this===other||this.getX().cmp(other.getX())===0&&this.getY().cmp(other.getY())===0};Point.prototype.toP=Point.prototype.normalize;Point.prototype.mixedAdd=Point.prototype.add},{"../../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","../curve":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/index.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/index.js":[function(require,module,exports){"use strict";var curve=exports;curve.base=require("./base");curve.short=require("./short");curve.mont=require("./mont");curve.edwards=require("./edwards")},{"./base":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/base.js","./edwards":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/edwards.js","./mont":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/mont.js","./short":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/short.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/mont.js":[function(require,module,exports){"use strict";var curve=require("../curve");var BN=require("bn.js");var inherits=require("inherits");var Base=curve.base;var elliptic=require("../../elliptic");var utils=elliptic.utils;function MontCurve(conf){Base.call(this,"mont",conf);this.a=new BN(conf.a,16).toRed(this.red);this.b=new BN(conf.b,16).toRed(this.red);this.i4=new BN(4).toRed(this.red).redInvm();this.two=new BN(2).toRed(this.red);this.a24=this.i4.redMul(this.a.redAdd(this.two))}inherits(MontCurve,Base);module.exports=MontCurve;MontCurve.prototype.validate=function validate(point){var x=point.normalize().x;var x2=x.redSqr();var rhs=x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);var y=rhs.redSqrt();return y.redSqr().cmp(rhs)===0};function Point(curve,x,z){Base.BasePoint.call(this,curve,"projective");if(x===null&&z===null){this.x=this.curve.one;this.z=this.curve.zero}else{this.x=new BN(x,16);this.z=new BN(z,16);if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red)}}inherits(Point,Base.BasePoint);MontCurve.prototype.decodePoint=function decodePoint(bytes,enc){return this.point(utils.toArray(bytes,enc),1)};MontCurve.prototype.point=function point(x,z){return new Point(this,x,z)};MontCurve.prototype.pointFromJSON=function pointFromJSON(obj){return Point.fromJSON(this,obj)};Point.prototype.precompute=function precompute(){};Point.prototype._encode=function _encode(){return this.getX().toArray("be",this.curve.p.byteLength())};Point.fromJSON=function fromJSON(curve,obj){return new Point(curve,obj[0],obj[1]||curve.one)};Point.prototype.inspect=function inspect(){if(this.isInfinity())return"";return""};Point.prototype.isInfinity=function isInfinity(){return this.z.cmpn(0)===0};Point.prototype.dbl=function dbl(){var a=this.x.redAdd(this.z);var aa=a.redSqr();var b=this.x.redSub(this.z);var bb=b.redSqr();var c=aa.redSub(bb);var nx=aa.redMul(bb);var nz=c.redMul(bb.redAdd(this.curve.a24.redMul(c)));return this.curve.point(nx,nz)};Point.prototype.add=function add(){throw new Error("Not supported on Montgomery curve")};Point.prototype.diffAdd=function diffAdd(p,diff){var a=this.x.redAdd(this.z);var b=this.x.redSub(this.z);var c=p.x.redAdd(p.z);var d=p.x.redSub(p.z);var da=d.redMul(a);var cb=c.redMul(b);var nx=diff.z.redMul(da.redAdd(cb).redSqr());var nz=diff.x.redMul(da.redISub(cb).redSqr());return this.curve.point(nx,nz)};Point.prototype.mul=function mul(k){var t=k.clone();var a=this;var b=this.curve.point(null,null);var c=this;for(var bits=[];t.cmpn(0)!==0;t.iushrn(1))bits.push(t.andln(1));for(var i=bits.length-1;i>=0;i--){if(bits[i]===0){a=a.diffAdd(b,c);b=b.dbl()}else{b=a.diffAdd(b,c);a=a.dbl()}}return b};Point.prototype.mulAdd=function mulAdd(){throw new Error("Not supported on Montgomery curve")};Point.prototype.eq=function eq(other){return this.getX().cmp(other.getX())===0};Point.prototype.normalize=function normalize(){this.x=this.x.redMul(this.z.redInvm());this.z=this.curve.one;return this};Point.prototype.getX=function getX(){this.normalize();return this.x.fromRed()}},{"../../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","../curve":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/index.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/short.js":[function(require,module,exports){"use strict";var curve=require("../curve");var elliptic=require("../../elliptic");var BN=require("bn.js");var inherits=require("inherits");var Base=curve.base;var assert=elliptic.utils.assert;function ShortCurve(conf){Base.call(this,"short",conf);this.a=new BN(conf.a,16).toRed(this.red);this.b=new BN(conf.b,16).toRed(this.red);this.tinv=this.two.redInvm();this.zeroA=this.a.fromRed().cmpn(0)===0;this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0;this.endo=this._getEndomorphism(conf);this._endoWnafT1=new Array(4);this._endoWnafT2=new Array(4)}inherits(ShortCurve,Base);module.exports=ShortCurve;ShortCurve.prototype._getEndomorphism=function _getEndomorphism(conf){if(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)return;var beta;var lambda;if(conf.beta){beta=new BN(conf.beta,16).toRed(this.red)}else{var betas=this._getEndoRoots(this.p);beta=betas[0].cmp(betas[1])<0?betas[0]:betas[1];beta=beta.toRed(this.red)}if(conf.lambda){lambda=new BN(conf.lambda,16)}else{var lambdas=this._getEndoRoots(this.n);if(this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta))===0){lambda=lambdas[0]}else{lambda=lambdas[1];assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta))===0)}}var basis;if(conf.basis){basis=conf.basis.map(function(vec){return{a:new BN(vec.a,16),b:new BN(vec.b,16)}})}else{basis=this._getEndoBasis(lambda)}return{beta:beta,lambda:lambda,basis:basis}};ShortCurve.prototype._getEndoRoots=function _getEndoRoots(num){var red=num===this.p?this.red:BN.mont(num);var tinv=new BN(2).toRed(red).redInvm();var ntinv=tinv.redNeg();var s=new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);var l1=ntinv.redAdd(s).fromRed();var l2=ntinv.redSub(s).fromRed();return[l1,l2]};ShortCurve.prototype._getEndoBasis=function _getEndoBasis(lambda){var aprxSqrt=this.n.ushrn(Math.floor(this.n.bitLength()/2));var u=lambda;var v=this.n.clone();var x1=new BN(1);var y1=new BN(0);var x2=new BN(0);var y2=new BN(1);var a0;var b0;var a1;var b1;var a2;var b2;var prevR;var i=0;var r;var x;while(u.cmpn(0)!==0){var q=v.div(u);r=v.sub(q.mul(u));x=x2.sub(q.mul(x1));var y=y2.sub(q.mul(y1));if(!a1&&r.cmp(aprxSqrt)<0){a0=prevR.neg();b0=x1;a1=r.neg();b1=x}else if(a1&&++i===2){break}prevR=r;v=u;u=r;x2=x1;x1=x;y2=y1;y1=y}a2=r.neg();b2=x;var len1=a1.sqr().add(b1.sqr());var len2=a2.sqr().add(b2.sqr());if(len2.cmp(len1)>=0){a2=a0;b2=b0}if(a1.negative){a1=a1.neg();b1=b1.neg()}if(a2.negative){a2=a2.neg();b2=b2.neg()}return[{a:a1,b:b1},{a:a2,b:b2}]};ShortCurve.prototype._endoSplit=function _endoSplit(k){var basis=this.endo.basis;var v1=basis[0];var v2=basis[1];var c1=v2.b.mul(k).divRound(this.n);var c2=v1.b.neg().mul(k).divRound(this.n);var p1=c1.mul(v1.a);var p2=c2.mul(v2.a);var q1=c1.mul(v1.b);var q2=c2.mul(v2.b);var k1=k.sub(p1).sub(p2);var k2=q1.add(q2).neg();return{k1:k1,k2:k2}};ShortCurve.prototype.pointFromX=function pointFromX(x,odd){x=new BN(x,16);if(!x.red)x=x.toRed(this.red);var y2=x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);var y=y2.redSqrt();if(y.redSqr().redSub(y2).cmp(this.zero)!==0)throw new Error("invalid point");var isOdd=y.fromRed().isOdd();if(odd&&!isOdd||!odd&&isOdd)y=y.redNeg();return this.point(x,y)};ShortCurve.prototype.validate=function validate(point){if(point.inf)return true;var x=point.x;var y=point.y;var ax=this.a.redMul(x);var rhs=x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);return y.redSqr().redISub(rhs).cmpn(0)===0};ShortCurve.prototype._endoWnafMulAdd=function _endoWnafMulAdd(points,coeffs){var npoints=this._endoWnafT1;var ncoeffs=this._endoWnafT2;for(var i=0;i";return""};Point.prototype.isInfinity=function isInfinity(){return this.inf};Point.prototype.add=function add(p){if(this.inf)return p;if(p.inf)return this;if(this.eq(p))return this.dbl();if(this.neg().eq(p))return this.curve.point(null,null);if(this.x.cmp(p.x)===0)return this.curve.point(null,null);var c=this.y.redSub(p.y);if(c.cmpn(0)!==0)c=c.redMul(this.x.redSub(p.x).redInvm());var nx=c.redSqr().redISub(this.x).redISub(p.x);var ny=c.redMul(this.x.redSub(nx)).redISub(this.y);return this.curve.point(nx,ny)};Point.prototype.dbl=function dbl(){if(this.inf)return this;var ys1=this.y.redAdd(this.y);if(ys1.cmpn(0)===0)return this.curve.point(null,null);var a=this.curve.a;var x2=this.x.redSqr();var dyinv=ys1.redInvm();var c=x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);var nx=c.redSqr().redISub(this.x.redAdd(this.x));var ny=c.redMul(this.x.redSub(nx)).redISub(this.y);return this.curve.point(nx,ny)};Point.prototype.getX=function getX(){return this.x.fromRed()};Point.prototype.getY=function getY(){return this.y.fromRed()};Point.prototype.mul=function mul(k){k=new BN(k,16);if(this._hasDoubles(k))return this.curve._fixedNafMul(this,k);else if(this.curve.endo)return this.curve._endoWnafMulAdd([this],[k]);else return this.curve._wnafMul(this,k)};Point.prototype.mulAdd=function mulAdd(k1,p2,k2){var points=[this,p2];var coeffs=[k1,k2];if(this.curve.endo)return this.curve._endoWnafMulAdd(points,coeffs);else return this.curve._wnafMulAdd(1,points,coeffs,2)};Point.prototype.eq=function eq(p){return this===p||this.inf===p.inf&&(this.inf||this.x.cmp(p.x)===0&&this.y.cmp(p.y)===0)};Point.prototype.neg=function neg(_precompute){if(this.inf)return this;var res=this.curve.point(this.x,this.y.redNeg());if(_precompute&&this.precomputed){var pre=this.precomputed;var negate=function(p){return p.neg()};res.precomputed={naf:pre.naf&&{wnd:pre.naf.wnd,points:pre.naf.points.map(negate)},doubles:pre.doubles&&{step:pre.doubles.step,points:pre.doubles.points.map(negate)}}}return res};Point.prototype.toJ=function toJ(){if(this.inf)return this.curve.jpoint(null,null,null);var res=this.curve.jpoint(this.x,this.y,this.curve.one);return res};function JPoint(curve,x,y,z){Base.BasePoint.call(this,curve,"jacobian");if(x===null&&y===null&&z===null){this.x=this.curve.one;this.y=this.curve.one;this.z=new BN(0)}else{this.x=new BN(x,16);this.y=new BN(y,16);this.z=new BN(z,16)}if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.y.red)this.y=this.y.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red);this.zOne=this.z===this.curve.one}inherits(JPoint,Base.BasePoint);ShortCurve.prototype.jpoint=function jpoint(x,y,z){return new JPoint(this,x,y,z)};JPoint.prototype.toP=function toP(){if(this.isInfinity())return this.curve.point(null,null);var zinv=this.z.redInvm();var zinv2=zinv.redSqr();var ax=this.x.redMul(zinv2);var ay=this.y.redMul(zinv2).redMul(zinv);return this.curve.point(ax,ay)};JPoint.prototype.neg=function neg(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};JPoint.prototype.add=function add(p){if(this.isInfinity())return p;if(p.isInfinity())return this;var pz2=p.z.redSqr();var z2=this.z.redSqr();var u1=this.x.redMul(pz2);var u2=p.x.redMul(z2);var s1=this.y.redMul(pz2.redMul(p.z));var s2=p.y.redMul(z2.redMul(this.z));var h=u1.redSub(u2);var r=s1.redSub(s2);if(h.cmpn(0)===0){if(r.cmpn(0)!==0)return this.curve.jpoint(null,null,null);else return this.dbl()}var h2=h.redSqr();var h3=h2.redMul(h);var v=u1.redMul(h2);var nx=r.redSqr().redIAdd(h3).redISub(v).redISub(v);var ny=r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));var nz=this.z.redMul(p.z).redMul(h);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.mixedAdd=function mixedAdd(p){if(this.isInfinity())return p.toJ();if(p.isInfinity())return this;var z2=this.z.redSqr();var u1=this.x;var u2=p.x.redMul(z2);var s1=this.y;var s2=p.y.redMul(z2).redMul(this.z);var h=u1.redSub(u2);var r=s1.redSub(s2);if(h.cmpn(0)===0){if(r.cmpn(0)!==0)return this.curve.jpoint(null,null,null);else return this.dbl()}var h2=h.redSqr();var h3=h2.redMul(h);var v=u1.redMul(h2);var nx=r.redSqr().redIAdd(h3).redISub(v).redISub(v);var ny=r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));var nz=this.z.redMul(h);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.dblp=function dblp(pow){if(pow===0)return this;if(this.isInfinity())return this;if(!pow)return this.dbl();if(this.curve.zeroA||this.curve.threeA){var r=this;for(var i=0;i";return""};JPoint.prototype.isInfinity=function isInfinity(){return this.z.cmpn(0)===0}},{"../../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","../curve":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curve/index.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js", -inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/curves.js":[function(require,module,exports){"use strict";var curves=exports;var hash=require("hash.js");var elliptic=require("../elliptic");var assert=elliptic.utils.assert;function PresetCurve(options){if(options.type==="short")this.curve=new elliptic.curve.short(options);else if(options.type==="edwards")this.curve=new elliptic.curve.edwards(options);else this.curve=new elliptic.curve.mont(options);this.g=this.curve.g;this.n=this.curve.n;this.hash=options.hash;assert(this.g.validate(),"Invalid curve");assert(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}curves.PresetCurve=PresetCurve;function defineCurve(name,options){Object.defineProperty(curves,name,{configurable:true,enumerable:true,get:function(){var curve=new PresetCurve(options);Object.defineProperty(curves,name,{configurable:true,enumerable:true,value:curve});return curve}})}defineCurve("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:hash.sha256,gRed:false,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});defineCurve("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:hash.sha256,gRed:false,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});defineCurve("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:hash.sha256,gRed:false,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});defineCurve("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff "+"fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff "+"fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f "+"5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 "+"f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:hash.sha384,gRed:false,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 "+"5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 "+"0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});defineCurve("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff "+"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff "+"ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff "+"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff "+"ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b "+"99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd "+"3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff "+"ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 "+"f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:hash.sha512,gRed:false,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 "+"053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 "+"a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 "+"579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 "+"3fad0761 353c7086 a272c240 88be9476 9fd16650"]});defineCurve("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"0",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:hash.sha256,gRed:false,g:["9"]});defineCurve("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:hash.sha256,gRed:false,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var pre;try{pre=require("./precomputed/secp256k1")}catch(e){pre=undefined}defineCurve("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:hash.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:false,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",pre]})},{"../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","./precomputed/secp256k1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","hash.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/node_modules/hash.js/lib/hash.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/index.js":[function(require,module,exports){"use strict";var BN=require("bn.js");var elliptic=require("../../elliptic");var utils=elliptic.utils;var assert=utils.assert;var KeyPair=require("./key");var Signature=require("./signature");function EC(options){if(!(this instanceof EC))return new EC(options);if(typeof options==="string"){assert(elliptic.curves.hasOwnProperty(options),"Unknown curve "+options);options=elliptic.curves[options]}if(options instanceof elliptic.curves.PresetCurve)options={curve:options};this.curve=options.curve.curve;this.n=this.curve.n;this.nh=this.n.ushrn(1);this.g=this.curve.g;this.g=options.curve.g;this.g.precompute(options.curve.n.bitLength()+1);this.hash=options.hash||options.curve.hash}module.exports=EC;EC.prototype.keyPair=function keyPair(options){return new KeyPair(this,options)};EC.prototype.keyFromPrivate=function keyFromPrivate(priv,enc){return KeyPair.fromPrivate(this,priv,enc)};EC.prototype.keyFromPublic=function keyFromPublic(pub,enc){return KeyPair.fromPublic(this,pub,enc)};EC.prototype.genKeyPair=function genKeyPair(options){if(!options)options={};var drbg=new elliptic.hmacDRBG({hash:this.hash,pers:options.pers,entropy:options.entropy||elliptic.rand(this.hash.hmacStrength),nonce:this.n.toArray()});var bytes=this.n.byteLength();var ns2=this.n.sub(new BN(2));do{var priv=new BN(drbg.generate(bytes));if(priv.cmp(ns2)>0)continue;priv.iaddn(1);return this.keyFromPrivate(priv)}while(true)};EC.prototype._truncateToN=function truncateToN(msg,truncOnly){var delta=msg.byteLength()*8-this.n.bitLength();if(delta>0)msg=msg.ushrn(delta);if(!truncOnly&&msg.cmp(this.n)>=0)return msg.sub(this.n);else return msg};EC.prototype.sign=function sign(msg,key,enc,options){if(typeof enc==="object"){options=enc;enc=null}if(!options)options={};key=this.keyFromPrivate(key,enc);msg=this._truncateToN(new BN(msg,16));var bytes=this.n.byteLength();var bkey=key.getPrivate().toArray("be",bytes);var nonce=msg.toArray("be",bytes);var drbg=new elliptic.hmacDRBG({hash:this.hash,entropy:bkey,nonce:nonce,pers:options.pers,persEnc:options.persEnc});var ns1=this.n.sub(new BN(1));for(var iter=0;true;iter++){var k=options.k?options.k(iter):new BN(drbg.generate(this.n.byteLength()));k=this._truncateToN(k,true);if(k.cmpn(1)<=0||k.cmp(ns1)>=0)continue;var kp=this.g.mul(k);if(kp.isInfinity())continue;var kpX=kp.getX();var r=kpX.umod(this.n);if(r.cmpn(0)===0)continue;var s=k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));s=s.umod(this.n);if(s.cmpn(0)===0)continue;var recoveryParam=(kp.getY().isOdd()?1:0)|(kpX.cmp(r)!==0?2:0);if(options.canonical&&s.cmp(this.nh)>0){s=this.n.sub(s);recoveryParam^=1}return new Signature({r:r,s:s,recoveryParam:recoveryParam})}};EC.prototype.verify=function verify(msg,signature,key,enc){msg=this._truncateToN(new BN(msg,16));key=this.keyFromPublic(key,enc);signature=new Signature(signature,"hex");var r=signature.r;var s=signature.s;if(r.cmpn(1)<0||r.cmp(this.n)>=0)return false;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return false;var sinv=s.invm(this.n);var u1=sinv.mul(msg).umod(this.n);var u2=sinv.mul(r).umod(this.n);var p=this.g.mulAdd(u1,key.getPublic(),u2);if(p.isInfinity())return false;return p.getX().umod(this.n).cmp(r)===0};EC.prototype.recoverPubKey=function(msg,signature,j,enc){assert((3&j)===j,"The recovery param is more than two bits");signature=new Signature(signature,enc);var n=this.n;var e=new BN(msg);var r=signature.r;var s=signature.s;var isYOdd=j&1;var isSecondKey=j>>1;if(r.cmp(this.curve.p.umod(this.curve.n))>=0&&isSecondKey)throw new Error("Unable to find sencond key candinate");if(isSecondKey)r=this.curve.pointFromX(r.add(this.curve.n),isYOdd);else r=this.curve.pointFromX(r,isYOdd);var eNeg=n.sub(e);var rInv=signature.r.invm(n);return this.g.mulAdd(eNeg,r,s).mul(rInv)};EC.prototype.getKeyRecoveryParam=function(e,signature,Q,enc){signature=new Signature(signature,enc);if(signature.recoveryParam!==null)return signature.recoveryParam;for(var i=0;i<4;i++){var Qprime;try{Qprime=this.recoverPubKey(e,signature,i)}catch(e){continue}if(Qprime.eq(Q))return i}throw new Error("Unable to find valid recovery factor")}},{"../../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","./key":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/key.js","./signature":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/signature.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/key.js":[function(require,module,exports){"use strict";var BN=require("bn.js");function KeyPair(ec,options){this.ec=ec;this.priv=null;this.pub=null;if(options.priv)this._importPrivate(options.priv,options.privEnc);if(options.pub)this._importPublic(options.pub,options.pubEnc)}module.exports=KeyPair;KeyPair.fromPublic=function fromPublic(ec,pub,enc){if(pub instanceof KeyPair)return pub;return new KeyPair(ec,{pub:pub,pubEnc:enc})};KeyPair.fromPrivate=function fromPrivate(ec,priv,enc){if(priv instanceof KeyPair)return priv;return new KeyPair(ec,{priv:priv,privEnc:enc})};KeyPair.prototype.validate=function validate(){var pub=this.getPublic();if(pub.isInfinity())return{result:false,reason:"Invalid public key"};if(!pub.validate())return{result:false,reason:"Public key is not a point"};if(!pub.mul(this.ec.curve.n).isInfinity())return{result:false,reason:"Public key * N != O"};return{result:true,reason:null}};KeyPair.prototype.getPublic=function getPublic(compact,enc){if(typeof compact==="string"){enc=compact;compact=null}if(!this.pub)this.pub=this.ec.g.mul(this.priv);if(!enc)return this.pub;return this.pub.encode(enc,compact)};KeyPair.prototype.getPrivate=function getPrivate(enc){if(enc==="hex")return this.priv.toString(16,2);else return this.priv};KeyPair.prototype._importPrivate=function _importPrivate(key,enc){this.priv=new BN(key,enc||16);this.priv=this.priv.umod(this.ec.curve.n)};KeyPair.prototype._importPublic=function _importPublic(key,enc){if(key.x||key.y){this.pub=this.ec.curve.point(key.x,key.y);return}this.pub=this.ec.curve.decodePoint(key,enc)};KeyPair.prototype.derive=function derive(pub){return pub.mul(this.priv).getX()};KeyPair.prototype.sign=function sign(msg,enc,options){return this.ec.sign(msg,this,enc,options)};KeyPair.prototype.verify=function verify(msg,signature){return this.ec.verify(msg,signature,this)};KeyPair.prototype.inspect=function inspect(){return""}},{"bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/ec/signature.js":[function(require,module,exports){"use strict";var BN=require("bn.js");var elliptic=require("../../elliptic");var utils=elliptic.utils;var assert=utils.assert;function Signature(options,enc){if(options instanceof Signature)return options;if(this._importDER(options,enc))return;assert(options.r&&options.s,"Signature without r or s");this.r=new BN(options.r,16);this.s=new BN(options.s,16);if(options.recoveryParam===undefined)this.recoveryParam=null;else this.recoveryParam=options.recoveryParam}module.exports=Signature;function Position(){this.place=0}function getLength(buf,p){var initial=buf[p.place++];if(!(initial&128)){return initial}var octetLen=initial&15;var val=0;for(var i=0,off=p.place;i>>3);arr.push(octets|128);while(--octets){arr.push(len>>>(octets<<3)&255)}arr.push(len)}Signature.prototype.toDER=function toDER(enc){var r=this.r.toArray();var s=this.s.toArray();if(r[0]&128)r=[0].concat(r);if(s[0]&128)s=[0].concat(s);r=rmPadding(r);s=rmPadding(s);while(!s[0]&&!(s[1]&128)){s=s.slice(1)}var arr=[2];constructLength(arr,r.length);arr=arr.concat(r);arr.push(2);constructLength(arr,s.length);var backHalf=arr.concat(s);var res=[48];constructLength(res,backHalf.length);res=res.concat(backHalf);return utils.encode(res,enc)}},{"../../elliptic":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic/eddsa/index.js":[function(require,module,exports){"use strict";var hash=require("hash.js");var elliptic=require("../../elliptic");var utils=elliptic.utils;var assert=utils.assert;var parseBytes=utils.parseBytes;var KeyPair=require("./key");var Signature=require("./signature");function EDDSA(curve){assert(curve==="ed25519","only tested with ed25519 so far");if(!(this instanceof EDDSA))return new EDDSA(curve);var curve=elliptic.curves[curve].curve;this.curve=curve;this.g=curve.g;this.g.precompute(curve.n.bitLength()+1);this.pointClass=curve.point().constructor;this.encodingLength=Math.ceil(curve.n.bitLength()/8);this.hash=hash.sha512}module.exports=EDDSA;EDDSA.prototype.sign=function sign(message,secret){message=parseBytes(message);var key=this.keyFromSecret(secret);var r=this.hashInt(key.messagePrefix(),message);var R=this.g.mul(r);var Rencoded=this.encodePoint(R);var s_=this.hashInt(Rencoded,key.pubBytes(),message).mul(key.priv());var S=r.add(s_).umod(this.curve.n);return this.makeSignature({R:R,S:S,Rencoded:Rencoded})};EDDSA.prototype.verify=function verify(message,sig,pub){message=parseBytes(message);sig=this.makeSignature(sig);var key=this.keyFromPublic(pub);var h=this.hashInt(sig.Rencoded(),key.pubBytes(),message);var SG=this.g.mul(sig.S());var RplusAh=sig.R().add(key.pub().mul(h));return RplusAh.eq(SG)};EDDSA.prototype.hashInt=function hashInt(){var hash=this.hash();for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits");this._init(entropy,nonce,pers)}module.exports=HmacDRBG;HmacDRBG.prototype._init=function init(entropy,nonce,pers){var seed=entropy.concat(nonce).concat(pers);this.K=new Array(this.outLen/8);this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits");this._update(entropy.concat(add||[]));this.reseed=1};HmacDRBG.prototype.generate=function generate(len,enc,add,addEnc){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");if(typeof enc!=="string"){addEnc=add;add=enc;enc=null}if(add){add=utils.toArray(add,addEnc);this._update(add)}var temp=[];while(temp.length>8;var lo=c&255;if(hi)res.push(hi,lo);else res.push(lo)}}else if(enc==="hex"){msg=msg.replace(/[^a-z0-9]+/gi,"");if(msg.length%2!==0)msg="0"+msg;for(var i=0;i=0){var z;if(k.isOdd()){var mod=k.andln(ws-1);if(mod>(ws>>1)-1)z=(ws>>1)-mod;else z=mod;k.isubn(z)}else{z=0}naf.push(z);var shift=k.cmpn(0)!==0&&k.andln(ws-1)===0?w+1:1;for(var i=1;i0||k2.cmpn(-d2)>0){var m14=k1.andln(3)+d1&3;var m24=k2.andln(3)+d2&3;if(m14===3)m14=-1;if(m24===3)m24=-1;var u1;if((m14&1)===0){u1=0}else{var m8=k1.andln(7)+d1&7;if((m8===3||m8===5)&&m24===2)u1=-m14;else u1=m14}jsf[0].push(u1);var u2;if((m24&1)===0){u2=0}else{var m8=k2.andln(7)+d2&7;if((m8===3||m8===5)&&m14===2)u2=-m24;else u2=m24}jsf[1].push(u2);if(2*d1===u1+1)d1=1-d1;if(2*d2===u2+1)d2=1-d2;k1.iushrn(1);k2.iushrn(1)}return jsf}utils.getJSF=getJSF;function cachedProperty(obj,computer){var name=computer.name;var key="_"+name;obj.prototype[name]=function cachedProperty(){return this[key]!==undefined?this[key]:this[key]=computer.call(this)}}utils.cachedProperty=cachedProperty;function parseBytes(bytes){return typeof bytes==="string"?utils.toArray(bytes,"hex"):bytes}utils.parseBytes=parseBytes;function intFromLE(bytes){return new BN(bytes,"hex","le")}utils.intFromLE=intFromLE},{"bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/node_modules/brorand/index.js":[function(require,module,exports){var r;module.exports=function rand(len){if(!r)r=new Rand(null);return r.generate(len)};function Rand(rand){this.rand=rand}module.exports.Rand=Rand;Rand.prototype.generate=function generate(len){return this._rand(len)};if(typeof window==="object"){if(window.crypto&&window.crypto.getRandomValues){Rand.prototype._rand=function _rand(n){var arr=new Uint8Array(n);window.crypto.getRandomValues(arr);return arr}}else if(window.msCrypto&&window.msCrypto.getRandomValues){Rand.prototype._rand=function _rand(n){var arr=new Uint8Array(n);window.msCrypto.getRandomValues(arr);return arr}}else{Rand.prototype._rand=function(){throw new Error("Not implemented yet")}}}else{try{var crypto=require("cry"+"pto");Rand.prototype._rand=function _rand(n){return crypto.randomBytes(n)}}catch(e){Rand.prototype._rand=function _rand(n){var res=new Uint8Array(n);for(var i=0;i=this._delta8){msg=this.pending;var r=msg.length%this._delta8;this.pending=msg.slice(msg.length-r,msg.length);if(this.pending.length===0)this.pending=null;msg=utils.join32(msg,0,msg.length-r,this.endian);for(var i=0;i>>24&255;res[i++]=len>>>16&255;res[i++]=len>>>8&255;res[i++]=len&255}else{res[i++]=len&255;res[i++]=len>>>8&255;res[i++]=len>>>16&255;res[i++]=len>>>24&255;res[i++]=0;res[i++]=0;res[i++]=0;res[i++]=0;for(var t=8;tthis.blockSize)key=(new this.Hash).update(key).digest();assert(key.length<=this.blockSize);for(var i=key.length;i>>3}function g1_256(x){return rotr32(x,17)^rotr32(x,19)^x>>>10}function ft_1(s,x,y,z){if(s===0)return ch32(x,y,z);if(s===1||s===3)return p32(x,y,z);if(s===2)return maj32(x,y,z)}function ch64_hi(xh,xl,yh,yl,zh,zl){var r=xh&yh^~xh&zh;if(r<0)r+=4294967296;return r}function ch64_lo(xh,xl,yh,yl,zh,zl){var r=xl&yl^~xl&zl;if(r<0)r+=4294967296;return r}function maj64_hi(xh,xl,yh,yl,zh,zl){var r=xh&yh^xh&zh^yh&zh;if(r<0)r+=4294967296;return r}function maj64_lo(xh,xl,yh,yl,zh,zl){var r=xl&yl^xl&zl^yl&zl;if(r<0)r+=4294967296;return r}function s0_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,28);var c1_hi=rotr64_hi(xl,xh,2);var c2_hi=rotr64_hi(xl,xh,7);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function s0_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,28);var c1_lo=rotr64_lo(xl,xh,2);var c2_lo=rotr64_lo(xl,xh,7);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function s1_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,14);var c1_hi=rotr64_hi(xh,xl,18);var c2_hi=rotr64_hi(xl,xh,9);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function s1_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,14);var c1_lo=rotr64_lo(xh,xl,18);var c2_lo=rotr64_lo(xl,xh,9);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function g0_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,1);var c1_hi=rotr64_hi(xh,xl,8);var c2_hi=shr64_hi(xh,xl,7);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function g0_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,1);var c1_lo=rotr64_lo(xh,xl,8);var c2_lo=shr64_lo(xh,xl,7);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function g1_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,19);var c1_hi=rotr64_hi(xl,xh,29);var c2_hi=shr64_hi(xh,xl,6);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function g1_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,19);var c1_lo=rotr64_lo(xl,xh,29);var c2_lo=shr64_lo(xh,xl,6);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}},{"../hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/node_modules/hash.js/lib/hash.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/node_modules/hash.js/lib/hash/utils.js":[function(require,module,exports){var utils=exports;var inherits=require("inherits");function toArray(msg,enc){if(Array.isArray(msg))return msg.slice();if(!msg)return[];var res=[];if(typeof msg==="string"){if(!enc){for(var i=0;i>8;var lo=c&255;if(hi)res.push(hi,lo);else res.push(lo)}}else if(enc==="hex"){msg=msg.replace(/[^a-z0-9]+/gi,"");if(msg.length%2!==0)msg="0"+msg;for(var i=0;i>>24|w>>>8&65280|w<<8&16711680|(w&255)<<24;return res>>>0}utils.htonl=htonl;function toHex32(msg,endian){var res="";for(var i=0;i>>0}return res}utils.join32=join32;function split32(msg,endian){var res=new Array(msg.length*4);for(var i=0,k=0;i>>24;res[k+1]=m>>>16&255;res[k+2]=m>>>8&255;res[k+3]=m&255}else{res[k+3]=m>>>24;res[k+2]=m>>>16&255;res[k+1]=m>>>8&255;res[k]=m&255}}return res}utils.split32=split32;function rotr32(w,b){return w>>>b|w<<32-b}utils.rotr32=rotr32;function rotl32(w,b){return w<>>32-b}utils.rotl32=rotl32;function sum32(a,b){return a+b>>>0}utils.sum32=sum32;function sum32_3(a,b,c){return a+b+c>>>0}utils.sum32_3=sum32_3;function sum32_4(a,b,c,d){return a+b+c+d>>>0}utils.sum32_4=sum32_4;function sum32_5(a,b,c,d,e){return a+b+c+d+e>>>0}utils.sum32_5=sum32_5;function assert(cond,msg){if(!cond)throw new Error(msg||"Assertion failed")}utils.assert=assert;utils.inherits=inherits;function sum64(buf,pos,ah,al){var bh=buf[pos];var bl=buf[pos+1];var lo=al+bl>>>0;var hi=(lo>>0;buf[pos+1]=lo}exports.sum64=sum64;function sum64_hi(ah,al,bh,bl){var lo=al+bl>>>0;var hi=(lo>>0}exports.sum64_hi=sum64_hi;function sum64_lo(ah,al,bh,bl){var lo=al+bl;return lo>>>0}exports.sum64_lo=sum64_lo;function sum64_4_hi(ah,al,bh,bl,ch,cl,dh,dl){var carry=0;var lo=al;lo=lo+bl>>>0;carry+=lo>>0;carry+=lo>>0;carry+=lo>>0}exports.sum64_4_hi=sum64_4_hi;function sum64_4_lo(ah,al,bh,bl,ch,cl,dh,dl){var lo=al+bl+cl+dl;return lo>>>0}exports.sum64_4_lo=sum64_4_lo;function sum64_5_hi(ah,al,bh,bl,ch,cl,dh,dl,eh,el){var carry=0;var lo=al;lo=lo+bl>>>0;carry+=lo>>0;carry+=lo>>0;carry+=lo>>0;carry+=lo>>0}exports.sum64_5_hi=sum64_5_hi;function sum64_5_lo(ah,al,bh,bl,ch,cl,dh,dl,eh,el){var lo=al+bl+cl+dl+el;return lo>>>0}exports.sum64_5_lo=sum64_5_lo;function rotr64_hi(ah,al,num){var r=al<<32-num|ah>>>num;return r>>>0}exports.rotr64_hi=rotr64_hi;function rotr64_lo(ah,al,num){var r=ah<<32-num|al>>>num;return r>>>0}exports.rotr64_lo=rotr64_lo;function shr64_hi(ah,al,num){return ah>>>num}exports.shr64_hi=shr64_hi;function shr64_lo(ah,al,num){var r=ah<<32-num|al>>>num;return r>>>0}exports.shr64_lo=shr64_lo},{inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/package.json":[function(require,module,exports){module.exports={name:"elliptic",version:"6.2.3",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{coverage:"npm run unit --coverage",coveralls:"npm run coverage && cat ./coverage/lcov.info | coveralls",jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/*.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/*.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/*-test.js"},repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},keywords:["EC","Elliptic","curve","Cryptography"],author:{name:"Fedor Indutny",email:"fedor@indutny.com"},license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{coveralls:"^2.11.3",istanbul:"^0.4.2",jscs:"^2.9.0",jshint:"^2.6.0",mocha:"^2.1.0"},dependencies:{"bn.js":"^4.0.0",brorand:"^1.0.1","hash.js":"^1.0.0",inherits:"^2.0.1"},gitHead:"c32f20b22b420eb6af3c6dda28963deb7facf823",_id:"elliptic@6.2.3",_shasum:"18e46d7306b0951275a2d42063270a14b74ebe99",_from:"elliptic@>=6.0.0 <7.0.0",_npmVersion:"3.3.12",_nodeVersion:"5.4.1",_npmUser:{name:"indutny",email:"fedor@indutny.com"},dist:{shasum:"18e46d7306b0951275a2d42063270a14b74ebe99",tarball:"http://registry.npmjs.org/elliptic/-/elliptic-6.2.3.tgz"},maintainers:[{name:"indutny",email:"fedor@indutny.com"}],directories:{},_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.2.3.tgz",readme:"ERROR: No README data found!"}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/aesid.json":[function(require,module,exports){module.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/asn1.js":[function(require,module,exports){var asn1=require("asn1.js");var RSAPrivateKey=asn1.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});exports.RSAPrivateKey=RSAPrivateKey;var RSAPublicKey=asn1.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});exports.RSAPublicKey=RSAPublicKey;var PublicKey=asn1.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(AlgorithmIdentifier),this.key("subjectPublicKey").bitstr())});exports.PublicKey=PublicKey;var AlgorithmIdentifier=asn1.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())});var PrivateKeyInfo=asn1.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(AlgorithmIdentifier),this.key("subjectPrivateKey").octstr())});exports.PrivateKey=PrivateKeyInfo;var EncryptedPrivateKeyInfo=asn1.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});exports.EncryptedPrivateKey=EncryptedPrivateKeyInfo;var DSAPrivateKey=asn1.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});exports.DSAPrivateKey=DSAPrivateKey;exports.DSAparam=asn1.define("DSAparam",function(){this.int()});var ECPrivateKey=asn1.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(ECParameters),this.key("publicKey").optional().explicit(1).bitstr())});exports.ECPrivateKey=ECPrivateKey;var ECParameters=asn1.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});exports.signature=asn1.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},{"asn1.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/fixProc.js":[function(require,module,exports){(function(Buffer){var findProc=/Proc-Type: 4,ENCRYPTED\r?\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\r?\n\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n/m;var startRegex=/^-----BEGIN (.*) KEY-----\r?\n/m;var fullRegex=/^-----BEGIN (.*) KEY-----\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n-----END \1 KEY-----$/m;var evp=require("evp_bytestokey");var ciphers=require("browserify-aes");module.exports=function(okey,password){var key=okey.toString();var match=key.match(findProc);var decrypted;if(!match){var match2=key.match(fullRegex);decrypted=new Buffer(match2[2].replace(/\r?\n/g,""),"base64")}else{var suite="aes"+match[1];var iv=new Buffer(match[2],"hex");var cipherText=new Buffer(match[3].replace(/\r?\n/g,""),"base64");var cipherKey=evp(password,iv.slice(0,8),parseInt(match[1],10)).key;var out=[];var cipher=ciphers.createDecipheriv(suite,cipherKey,iv);out.push(cipher.update(cipherText));out.push(cipher.final());decrypted=Buffer.concat(out)}var tag=key.match(startRegex)[1]+" KEY";return{tag:tag,data:decrypted}}}).call(this,require("buffer").Buffer)},{"browserify-aes":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/browserify-aes/browser.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",evp_bytestokey:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/evp_bytestokey/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/index.js":[function(require,module,exports){(function(Buffer){var asn1=require("./asn1");var aesid=require("./aesid.json");var fixProc=require("./fixProc");var ciphers=require("browserify-aes");var compat=require("pbkdf2");module.exports=parseKeys;function parseKeys(buffer){var password;if(typeof buffer==="object"&&!Buffer.isBuffer(buffer)){password=buffer.passphrase;buffer=buffer.key}if(typeof buffer==="string"){buffer=new Buffer(buffer)}var stripped=fixProc(buffer,password);var type=stripped.tag;var data=stripped.data;var subtype,ndata;switch(type){case"PUBLIC KEY":ndata=asn1.PublicKey.decode(data,"der");subtype=ndata.algorithm.algorithm.join(".");switch(subtype){case"1.2.840.113549.1.1.1":return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":ndata.subjectPrivateKey=ndata.subjectPublicKey;return{type:"ec",data:ndata};case"1.2.840.10040.4.1":ndata.algorithm.params.pub_key=asn1.DSAparam.decode(ndata.subjectPublicKey.data,"der");return{type:"dsa",data:ndata.algorithm.params};default:throw new Error("unknown key id "+subtype)}throw new Error("unknown key type "+type);case"ENCRYPTED PRIVATE KEY":data=asn1.EncryptedPrivateKey.decode(data,"der");data=decrypt(data,password);case"PRIVATE KEY":ndata=asn1.PrivateKey.decode(data,"der");subtype=ndata.algorithm.algorithm.join(".");switch(subtype){case"1.2.840.113549.1.1.1":return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:ndata.algorithm.curve,privateKey:asn1.ECPrivateKey.decode(ndata.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":ndata.algorithm.params.priv_key=asn1.DSAparam.decode(ndata.subjectPrivateKey,"der");return{type:"dsa",params:ndata.algorithm.params};default:throw new Error("unknown key id "+subtype)}throw new Error("unknown key type "+type);case"RSA PUBLIC KEY":return asn1.RSAPublicKey.decode(data,"der");case"RSA PRIVATE KEY":return asn1.RSAPrivateKey.decode(data,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:asn1.DSAPrivateKey.decode(data,"der")};case"EC PRIVATE KEY":data=asn1.ECPrivateKey.decode(data,"der");return{curve:data.parameters.value,privateKey:data.privateKey};default:throw new Error("unknown key type "+type)}}parseKeys.signature=asn1.signature;function decrypt(data,password){var salt=data.algorithm.decrypt.kde.kdeparams.salt;var iters=parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(),10);var algo=aesid[data.algorithm.decrypt.cipher.algo.join(".")];var iv=data.algorithm.decrypt.cipher.iv;var cipherText=data.subjectPrivateKey;var keylen=parseInt(algo.split("-")[1],10)/8;var key=compat.pbkdf2Sync(password,salt,iters,keylen);var cipher=ciphers.createDecipheriv(algo,key,iv);var out=[];out.push(cipher.update(cipherText));out.push(cipher.final());return Buffer.concat(out)}}).call(this,require("buffer").Buffer)},{"./aesid.json":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/aesid.json","./asn1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/asn1.js","./fixProc":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/fixProc.js","browserify-aes":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/browserify-aes/browser.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",pbkdf2:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/pbkdf2/browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1.js":[function(require,module,exports){var asn1=exports;asn1.bignum=require("bn.js");asn1.define=require("./asn1/api").define;asn1.base=require("./asn1/base");asn1.constants=require("./asn1/constants");asn1.decoders=require("./asn1/decoders");asn1.encoders=require("./asn1/encoders")},{"./asn1/api":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/api.js","./asn1/base":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/index.js","./asn1/constants":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/constants/index.js","./asn1/decoders":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/decoders/index.js","./asn1/encoders":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/encoders/index.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/api.js":[function(require,module,exports){var asn1=require("../asn1");var inherits=require("inherits");var api=exports;api.define=function define(name,body){return new Entity(name,body)};function Entity(name,body){this.name=name;this.body=body;this.decoders={};this.encoders={}}Entity.prototype._createNamed=function createNamed(base){var named;try{named=require("vm").runInThisContext("(function "+this.name+"(entity) {\n"+" this._initNamed(entity);\n"+"})")}catch(e){named=function(entity){this._initNamed(entity)}}inherits(named,base);named.prototype._initNamed=function initnamed(entity){base.call(this,entity)};return new named(this)};Entity.prototype._getDecoder=function _getDecoder(enc){if(!this.decoders.hasOwnProperty(enc))this.decoders[enc]=this._createNamed(asn1.decoders[enc]);return this.decoders[enc]};Entity.prototype.decode=function decode(data,enc,options){return this._getDecoder(enc).decode(data,options)};Entity.prototype._getEncoder=function _getEncoder(enc){if(!this.encoders.hasOwnProperty(enc))this.encoders[enc]=this._createNamed(asn1.encoders[enc]);return this.encoders[enc]};Entity.prototype.encode=function encode(data,enc,reporter){return this._getEncoder(enc).encode(data,reporter)}},{"../asn1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js",vm:"/data/github/geopackage-node/node_modules/browserify/node_modules/vm-browserify/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/buffer.js":[function(require,module,exports){var inherits=require("inherits");var Reporter=require("../base").Reporter;var Buffer=require("buffer").Buffer;function DecoderBuffer(base,options){Reporter.call(this,options);if(!Buffer.isBuffer(base)){this.error("Input not Buffer");return}this.base=base;this.offset=0;this.length=base.length}inherits(DecoderBuffer,Reporter);exports.DecoderBuffer=DecoderBuffer;DecoderBuffer.prototype.save=function save(){return{offset:this.offset,reporter:Reporter.prototype.save.call(this)}};DecoderBuffer.prototype.restore=function restore(save){var res=new DecoderBuffer(this.base);res.offset=save.offset;res.length=this.offset;this.offset=save.offset;Reporter.prototype.restore.call(this,save.reporter);return res};DecoderBuffer.prototype.isEmpty=function isEmpty(){return this.offset===this.length};DecoderBuffer.prototype.readUInt8=function readUInt8(fail){if(this.offset+1<=this.length)return this.base.readUInt8(this.offset++,true);else return this.error(fail||"DecoderBuffer overrun")};DecoderBuffer.prototype.skip=function skip(bytes,fail){if(!(this.offset+bytes<=this.length))return this.error(fail||"DecoderBuffer overrun");var res=new DecoderBuffer(this.base);res._reporterState=this._reporterState;res.offset=this.offset;res.length=this.offset+bytes;this.offset+=bytes;return res};DecoderBuffer.prototype.raw=function raw(save){return this.base.slice(save?save.offset:this.offset,this.length)};function EncoderBuffer(value,reporter){if(Array.isArray(value)){this.length=0;this.value=value.map(function(item){if(!(item instanceof EncoderBuffer))item=new EncoderBuffer(item,reporter);this.length+=item.length;return item},this)}else if(typeof value==="number"){if(!(0<=value&&value<=255))return reporter.error("non-byte EncoderBuffer value");this.value=value;this.length=1}else if(typeof value==="string"){this.value=value;this.length=Buffer.byteLength(value)}else if(Buffer.isBuffer(value)){this.value=value;this.length=value.length}else{return reporter.error("Unsupported type: "+typeof value)}}exports.EncoderBuffer=EncoderBuffer;EncoderBuffer.prototype.join=function join(out,offset){if(!out)out=new Buffer(this.length);if(!offset)offset=0;if(this.length===0)return out;if(Array.isArray(this.value)){this.value.forEach(function(item){item.join(out,offset);offset+=item.length})}else{if(typeof this.value==="number")out[offset]=this.value;else if(typeof this.value==="string")out.write(this.value,offset);else if(Buffer.isBuffer(this.value))this.value.copy(out,offset);offset+=this.length}return out}},{"../base":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/index.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/index.js":[function(require,module,exports){var base=exports;base.Reporter=require("./reporter").Reporter;base.DecoderBuffer=require("./buffer").DecoderBuffer;base.EncoderBuffer=require("./buffer").EncoderBuffer;base.Node=require("./node")},{"./buffer":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/buffer.js","./node":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/node.js","./reporter":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/reporter.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/node.js":[function(require,module,exports){var Reporter=require("../base").Reporter;var EncoderBuffer=require("../base").EncoderBuffer;var DecoderBuffer=require("../base").DecoderBuffer;var assert=require("minimalistic-assert");var tags=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"];var methods=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(tags);var overrided=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function Node(enc,parent){var state={};this._baseState=state;state.enc=enc;state.parent=parent||null;state.children=null;state.tag=null;state.args=null;state.reverseArgs=null;state.choice=null;state.optional=false;state.any=false;state.obj=false;state.use=null;state.useDecoder=null; -state.key=null;state["default"]=null;state.explicit=null;state.implicit=null;state.contains=null;if(!state.parent){state.children=[];this._wrap()}}module.exports=Node;var stateProps=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit"];Node.prototype.clone=function clone(){var state=this._baseState;var cstate={};stateProps.forEach(function(prop){cstate[prop]=state[prop]});var res=new this.constructor(cstate.parent);res._baseState=cstate;return res};Node.prototype._wrap=function wrap(){var state=this._baseState;methods.forEach(function(method){this[method]=function _wrappedMethod(){var clone=new this.constructor(this);state.children.push(clone);return clone[method].apply(clone,arguments)}},this)};Node.prototype._init=function init(body){var state=this._baseState;assert(state.parent===null);body.call(this);state.children=state.children.filter(function(child){return child._baseState.parent===this},this);assert.equal(state.children.length,1,"Root node can have only one child")};Node.prototype._useArgs=function useArgs(args){var state=this._baseState;var children=args.filter(function(arg){return arg instanceof this.constructor},this);args=args.filter(function(arg){return!(arg instanceof this.constructor)},this);if(children.length!==0){assert(state.children===null);state.children=children;children.forEach(function(child){child._baseState.parent=this},this)}if(args.length!==0){assert(state.args===null);state.args=args;state.reverseArgs=args.map(function(arg){if(typeof arg!=="object"||arg.constructor!==Object)return arg;var res={};Object.keys(arg).forEach(function(key){if(key==(key|0))key|=0;var value=arg[key];res[value]=key});return res})}};overrided.forEach(function(method){Node.prototype[method]=function _overrided(){var state=this._baseState;throw new Error(method+" not implemented for encoding: "+state.enc)}});tags.forEach(function(tag){Node.prototype[tag]=function _tagMethod(){var state=this._baseState;var args=Array.prototype.slice.call(arguments);assert(state.tag===null);state.tag=tag;this._useArgs(args);return this}});Node.prototype.use=function use(item){var state=this._baseState;assert(state.use===null);state.use=item;return this};Node.prototype.optional=function optional(){var state=this._baseState;state.optional=true;return this};Node.prototype.def=function def(val){var state=this._baseState;assert(state["default"]===null);state["default"]=val;state.optional=true;return this};Node.prototype.explicit=function explicit(num){var state=this._baseState;assert(state.explicit===null&&state.implicit===null);state.explicit=num;return this};Node.prototype.implicit=function implicit(num){var state=this._baseState;assert(state.explicit===null&&state.implicit===null);state.implicit=num;return this};Node.prototype.obj=function obj(){var state=this._baseState;var args=Array.prototype.slice.call(arguments);state.obj=true;if(args.length!==0)this._useArgs(args);return this};Node.prototype.key=function key(newKey){var state=this._baseState;assert(state.key===null);state.key=newKey;return this};Node.prototype.any=function any(){var state=this._baseState;state.any=true;return this};Node.prototype.choice=function choice(obj){var state=this._baseState;assert(state.choice===null);state.choice=obj;this._useArgs(Object.keys(obj).map(function(key){return obj[key]}));return this};Node.prototype.contains=function contains(item){var state=this._baseState;assert(state.use===null);state.contains=item;return this};Node.prototype._decode=function decode(input){var state=this._baseState;if(state.parent===null)return input.wrapResult(state.children[0]._decode(input));var result=state["default"];var present=true;var prevKey;if(state.key!==null)prevKey=input.enterKey(state.key);if(state.optional){var tag=null;if(state.explicit!==null)tag=state.explicit;else if(state.implicit!==null)tag=state.implicit;else if(state.tag!==null)tag=state.tag;if(tag===null&&!state.any){var save=input.save();try{if(state.choice===null)this._decodeGeneric(state.tag,input);else this._decodeChoice(input);present=true}catch(e){present=false}input.restore(save)}else{present=this._peekTag(input,tag,state.any);if(input.isError(present))return present}}var prevObj;if(state.obj&&present)prevObj=input.enterObject();if(present){if(state.explicit!==null){var explicit=this._decodeTag(input,state.explicit);if(input.isError(explicit))return explicit;input=explicit}if(state.use===null&&state.choice===null){if(state.any)var save=input.save();var body=this._decodeTag(input,state.implicit!==null?state.implicit:state.tag,state.any);if(input.isError(body))return body;if(state.any)result=input.raw(save);else input=body}if(state.any)result=result;else if(state.choice===null)result=this._decodeGeneric(state.tag,input);else result=this._decodeChoice(input);if(input.isError(result))return result;if(!state.any&&state.choice===null&&state.children!==null){state.children.forEach(function decodeChildren(child){child._decode(input)})}if(state.contains&&(state.tag==="octstr"||state.tag==="bitstr")){var data=new DecoderBuffer(result);result=this._getUse(state.contains,input._reporterState.obj)._decode(data)}}if(state.obj&&present)result=input.leaveObject(prevObj);if(state.key!==null&&(result!==null||present===true))input.leaveKey(prevKey,state.key,result);return result};Node.prototype._decodeGeneric=function decodeGeneric(tag,input){var state=this._baseState;if(tag==="seq"||tag==="set")return null;if(tag==="seqof"||tag==="setof")return this._decodeList(input,tag,state.args[0]);else if(/str$/.test(tag))return this._decodeStr(input,tag);else if(tag==="objid"&&state.args)return this._decodeObjid(input,state.args[0],state.args[1]);else if(tag==="objid")return this._decodeObjid(input,null,null);else if(tag==="gentime"||tag==="utctime")return this._decodeTime(input,tag);else if(tag==="null_")return this._decodeNull(input);else if(tag==="bool")return this._decodeBool(input);else if(tag==="int"||tag==="enum")return this._decodeInt(input,state.args&&state.args[0]);else if(state.use!==null)return this._getUse(state.use,input._reporterState.obj)._decode(input);else return input.error("unknown tag: "+tag);return null};Node.prototype._getUse=function _getUse(entity,obj){var state=this._baseState;state.useDecoder=this._use(entity,obj);assert(state.useDecoder._baseState.parent===null);state.useDecoder=state.useDecoder._baseState.children[0];if(state.implicit!==state.useDecoder._baseState.implicit){state.useDecoder=state.useDecoder.clone();state.useDecoder._baseState.implicit=state.implicit}return state.useDecoder};Node.prototype._decodeChoice=function decodeChoice(input){var state=this._baseState;var result=null;var match=false;Object.keys(state.choice).some(function(key){var save=input.save();var node=state.choice[key];try{var value=node._decode(input);if(input.isError(value))return false;result={type:key,value:value};match=true}catch(e){input.restore(save);return false}return true},this);if(!match)return input.error("Choice not matched");return result};Node.prototype._createEncoderBuffer=function createEncoderBuffer(data){return new EncoderBuffer(data,this.reporter)};Node.prototype._encode=function encode(data,reporter,parent){var state=this._baseState;if(state["default"]!==null&&state["default"]===data)return;var result=this._encodeValue(data,reporter,parent);if(result===undefined)return;if(this._skipDefault(result,reporter,parent))return;return result};Node.prototype._encodeValue=function encode(data,reporter,parent){var state=this._baseState;if(state.parent===null)return state.children[0]._encode(data,reporter||new Reporter);var result=null;var present=true;this.reporter=reporter;if(state.optional&&data===undefined){if(state["default"]!==null)data=state["default"];else return}var prevKey;var content=null;var primitive=false;if(state.any){result=this._createEncoderBuffer(data)}else if(state.choice){result=this._encodeChoice(data,reporter)}else if(state.contains){content=this._getUse(state.contains,parent)._encode(data,reporter);primitive=true}else if(state.children){content=state.children.map(function(child){if(child._baseState.tag==="null_")return child._encode(null,reporter,data);if(child._baseState.key===null)return reporter.error("Child should have a key");var prevKey=reporter.enterKey(child._baseState.key);if(typeof data!=="object")return reporter.error("Child expected, but input is not object");var res=child._encode(data[child._baseState.key],reporter,data);reporter.leaveKey(prevKey);return res},this).filter(function(child){return child});content=this._createEncoderBuffer(content)}else{if(state.tag==="seqof"||state.tag==="setof"){if(!(state.args&&state.args.length===1))return reporter.error("Too many args for : "+state.tag);if(!Array.isArray(data))return reporter.error("seqof/setof, but data is not Array");var child=this.clone();child._baseState.implicit=null;content=this._createEncoderBuffer(data.map(function(item){var state=this._baseState;return this._getUse(state.args[0],data)._encode(item,reporter)},child))}else if(state.use!==null){result=this._getUse(state.use,parent)._encode(data,reporter)}else{content=this._encodePrimitive(state.tag,data);primitive=true}}var result;if(!state.any&&state.choice===null){var tag=state.implicit!==null?state.implicit:state.tag;var cls=state.implicit===null?"universal":"context";if(tag===null){if(state.use===null)reporter.error("Tag could be ommited only for .use()")}else{if(state.use===null)result=this._encodeComposite(tag,primitive,cls,content)}}if(state.explicit!==null)result=this._encodeComposite(state.explicit,false,"context",result);return result};Node.prototype._encodeChoice=function encodeChoice(data,reporter){var state=this._baseState;var node=state.choice[data.type];if(!node){assert(false,data.type+" not found in "+JSON.stringify(Object.keys(state.choice)))}return node._encode(data.value,reporter)};Node.prototype._encodePrimitive=function encodePrimitive(tag,data){var state=this._baseState;if(/str$/.test(tag))return this._encodeStr(data,tag);else if(tag==="objid"&&state.args)return this._encodeObjid(data,state.reverseArgs[0],state.args[1]);else if(tag==="objid")return this._encodeObjid(data,null,null);else if(tag==="gentime"||tag==="utctime")return this._encodeTime(data,tag);else if(tag==="null_")return this._encodeNull();else if(tag==="int"||tag==="enum")return this._encodeInt(data,state.args&&state.reverseArgs[0]);else if(tag==="bool")return this._encodeBool(data);else throw new Error("Unsupported tag: "+tag)};Node.prototype._isNumstr=function isNumstr(str){return/^[0-9 ]*$/.test(str)};Node.prototype._isPrintstr=function isPrintstr(str){return/^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str)}},{"../base":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/index.js","minimalistic-assert":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/node_modules/minimalistic-assert/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/base/reporter.js":[function(require,module,exports){var inherits=require("inherits");function Reporter(options){this._reporterState={obj:null,path:[],options:options||{},errors:[]}}exports.Reporter=Reporter;Reporter.prototype.isError=function isError(obj){return obj instanceof ReporterError};Reporter.prototype.save=function save(){var state=this._reporterState;return{obj:state.obj,pathLen:state.path.length}};Reporter.prototype.restore=function restore(data){var state=this._reporterState;state.obj=data.obj;state.path=state.path.slice(0,data.pathLen)};Reporter.prototype.enterKey=function enterKey(key){return this._reporterState.path.push(key)};Reporter.prototype.leaveKey=function leaveKey(index,key,value){var state=this._reporterState;state.path=state.path.slice(0,index-1);if(state.obj!==null)state.obj[key]=value};Reporter.prototype.enterObject=function enterObject(){var state=this._reporterState;var prev=state.obj;state.obj={};return prev};Reporter.prototype.leaveObject=function leaveObject(prev){var state=this._reporterState;var now=state.obj;state.obj=prev;return now};Reporter.prototype.error=function error(msg){var err;var state=this._reporterState;var inherited=msg instanceof ReporterError;if(inherited){err=msg}else{err=new ReporterError(state.path.map(function(elem){return"["+JSON.stringify(elem)+"]"}).join(""),msg.message||msg,msg.stack)}if(!state.options.partial)throw err;if(!inherited)state.errors.push(err);return err};Reporter.prototype.wrapResult=function wrapResult(result){var state=this._reporterState;if(!state.options.partial)return result;return{result:this.isError(result)?null:result,errors:state.errors}};function ReporterError(path,msg){this.path=path;this.rethrow(msg)}inherits(ReporterError,Error);ReporterError.prototype.rethrow=function rethrow(msg){this.message=msg+" at: "+(this.path||"(shallow)");Error.captureStackTrace(this,ReporterError);return this}},{inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/constants/der.js":[function(require,module,exports){var constants=require("../constants");exports.tagClass={0:"universal",1:"application",2:"context",3:"private"};exports.tagClassByName=constants._reverse(exports.tagClass);exports.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};exports.tagByName=constants._reverse(exports.tag)},{"../constants":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/constants/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/constants/index.js":[function(require,module,exports){var constants=exports;constants._reverse=function reverse(map){var res={};Object.keys(map).forEach(function(key){if((key|0)==key)key=key|0;var value=map[key];res[value]=key});return res};constants.der=require("./der")},{"./der":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/constants/der.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/decoders/der.js":[function(require,module,exports){var inherits=require("inherits");var asn1=require("../../asn1");var base=asn1.base;var bignum=asn1.bignum;var der=asn1.constants.der;function DERDecoder(entity){this.enc="der";this.name=entity.name;this.entity=entity;this.tree=new DERNode;this.tree._init(entity.body)}module.exports=DERDecoder;DERDecoder.prototype.decode=function decode(data,options){if(!(data instanceof base.DecoderBuffer))data=new base.DecoderBuffer(data,options);return this.tree._decode(data,options)};function DERNode(parent){base.Node.call(this,"der",parent)}inherits(DERNode,base.Node);DERNode.prototype._peekTag=function peekTag(buffer,tag,any){if(buffer.isEmpty())return false;var state=buffer.save();var decodedTag=derDecodeTag(buffer,'Failed to peek tag: "'+tag+'"');if(buffer.isError(decodedTag))return decodedTag;buffer.restore(state);return decodedTag.tag===tag||decodedTag.tagStr===tag||decodedTag.tagStr+"of"===tag||any};DERNode.prototype._decodeTag=function decodeTag(buffer,tag,any){var decodedTag=derDecodeTag(buffer,'Failed to decode tag of "'+tag+'"');if(buffer.isError(decodedTag))return decodedTag;var len=derDecodeLen(buffer,decodedTag.primitive,'Failed to get length of "'+tag+'"');if(buffer.isError(len))return len;if(!any&&decodedTag.tag!==tag&&decodedTag.tagStr!==tag&&decodedTag.tagStr+"of"!==tag){return buffer.error('Failed to match tag: "'+tag+'"')}if(decodedTag.primitive||len!==null)return buffer.skip(len,'Failed to match body of: "'+tag+'"');var state=buffer.save();var res=this._skipUntilEnd(buffer,'Failed to skip indefinite length body: "'+this.tag+'"');if(buffer.isError(res))return res;len=buffer.offset-state.offset;buffer.restore(state);return buffer.skip(len,'Failed to match body of: "'+tag+'"')};DERNode.prototype._skipUntilEnd=function skipUntilEnd(buffer,fail){while(true){var tag=derDecodeTag(buffer,fail);if(buffer.isError(tag))return tag;var len=derDecodeLen(buffer,tag.primitive,fail);if(buffer.isError(len))return len;var res;if(tag.primitive||len!==null)res=buffer.skip(len);else res=this._skipUntilEnd(buffer,fail);if(buffer.isError(res))return res;if(tag.tagStr==="end")break}};DERNode.prototype._decodeList=function decodeList(buffer,tag,decoder){var result=[];while(!buffer.isEmpty()){var possibleEnd=this._peekTag(buffer,"end");if(buffer.isError(possibleEnd))return possibleEnd;var res=decoder.decode(buffer,"der");if(buffer.isError(res)&&possibleEnd)break;result.push(res)}return result};DERNode.prototype._decodeStr=function decodeStr(buffer,tag){if(tag==="bitstr"){var unused=buffer.readUInt8();if(buffer.isError(unused))return unused;return{unused:unused,data:buffer.raw()}}else if(tag==="bmpstr"){var raw=buffer.raw();if(raw.length%2===1)return buffer.error("Decoding of string type: bmpstr length mismatch");var str="";for(var i=0;i>6];var primitive=(tag&32)===0;if((tag&31)===31){var oct=tag;tag=0;while((oct&128)===128){oct=buf.readUInt8(fail);if(buf.isError(oct))return oct;tag<<=7;tag|=oct&127}}else{tag&=31}var tagStr=der.tag[tag];return{cls:cls,primitive:primitive,tag:tag,tagStr:tagStr}}function derDecodeLen(buf,primitive,fail){var len=buf.readUInt8(fail);if(buf.isError(len))return len;if(!primitive&&len===128)return null;if((len&128)===0){return len}var num=len&127;if(num>=4)return buf.error("length octect is too long");len=0;for(var i=0;i=256;i>>=8)lenOctets++;var header=new Buffer(1+1+lenOctets);header[0]=encodedTag;header[1]=128|lenOctets;for(var i=1+lenOctets,j=content.length;j>0;i--,j>>=8)header[i]=j&255;return this._createEncoderBuffer([header,content])};DERNode.prototype._encodeStr=function encodeStr(str,tag){if(tag==="bitstr"){return this._createEncoderBuffer([str.unused|0,str.data])}else if(tag==="bmpstr"){var buf=new Buffer(str.length*2);for(var i=0;i=40)return this.reporter.error("Second objid identifier OOB");id.splice(0,2,id[0]*40+id[1])}var size=0;for(var i=0;i=128;ident>>=7)size++}var objid=new Buffer(size);var offset=objid.length-1;for(var i=id.length-1;i>=0;i--){var ident=id[i];objid[offset--]=ident&127;while((ident>>=7)>0)objid[offset--]=128|ident&127}return this._createEncoderBuffer(objid)};function two(num){if(num<10)return"0"+num;else return num}DERNode.prototype._encodeTime=function encodeTime(time,tag){var str;var date=new Date(time);if(tag==="gentime"){str=[two(date.getFullYear()),two(date.getUTCMonth()+1),two(date.getUTCDate()),two(date.getUTCHours()),two(date.getUTCMinutes()),two(date.getUTCSeconds()),"Z"].join("")}else if(tag==="utctime"){str=[two(date.getFullYear()%100),two(date.getUTCMonth()+1),two(date.getUTCDate()),two(date.getUTCHours()),two(date.getUTCMinutes()),two(date.getUTCSeconds()),"Z"].join("")}else{this.reporter.error("Encoding "+tag+" time is not supported yet")}return this._encodeStr(str,"octstr")};DERNode.prototype._encodeNull=function encodeNull(){return this._createEncoderBuffer("")};DERNode.prototype._encodeInt=function encodeInt(num,values){if(typeof num==="string"){if(!values)return this.reporter.error("String int or enum given, but no values map");if(!values.hasOwnProperty(num)){return this.reporter.error("Values map doesn't contain: "+JSON.stringify(num))}num=values[num]}if(typeof num!=="number"&&!Buffer.isBuffer(num)){var numArray=num.toArray();if(!num.sign&&numArray[0]&128){numArray.unshift(0)}num=new Buffer(numArray)}if(Buffer.isBuffer(num)){var size=num.length;if(num.length===0)size++;var out=new Buffer(size);num.copy(out);if(num.length===0)out[0]=0;return this._createEncoderBuffer(out)}if(num<128)return this._createEncoderBuffer(num);if(num<256)return this._createEncoderBuffer([0,num]);var size=1;for(var i=num;i>=256;i>>=8)size++;var out=new Array(size);for(var i=out.length-1;i>=0;i--){out[i]=num&255;num>>=8}if(out[0]&128){out.unshift(0)}return this._createEncoderBuffer(new Buffer(out))};DERNode.prototype._encodeBool=function encodeBool(value){return this._createEncoderBuffer(value?255:0)};DERNode.prototype._use=function use(entity,obj){if(typeof entity==="function")entity=entity(obj);return entity._getEncoder("der").tree};DERNode.prototype._skipDefault=function skipDefault(dataBuffer,reporter,parent){var state=this._baseState;var i;if(state["default"]===null)return false;var data=dataBuffer.join();if(state.defaultBuffer===undefined)state.defaultBuffer=this._encodeValue(state["default"],reporter,parent).join();if(data.length!==state.defaultBuffer.length)return false;for(i=0;i=31)return reporter.error("Multi-octet tag encoding unsupported");if(!primitive)res|=32;res|=der.tagClassByName[cls||"universal"]<<6;return res}},{"../../asn1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/encoders/index.js":[function(require,module,exports){var encoders=exports;encoders.der=require("./der");encoders.pem=require("./pem")},{"./der":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/encoders/der.js","./pem":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/encoders/pem.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/node_modules/asn1.js/lib/asn1/encoders/pem.js":[function(require,module,exports){var inherits=require("inherits");var Buffer=require("buffer").Buffer;var asn1=require("../../asn1");var DEREncoder=require("./der");function PEMEncoder(entity){DEREncoder.call(this,entity);this.enc="pem"}inherits(PEMEncoder,DEREncoder);module.exports=PEMEncoder;PEMEncoder.prototype.encode=function encode(data,options){var buf=DEREncoder.prototype.encode.call(this,data);var p=buf.toString("base64");var out=["-----BEGIN "+options.label+"-----"];for(var i=0;i0){bits.ishrn(shift)}return bits}function bits2octets(bits,q){bits=bits2int(bits,q);bits=bits.mod(q);var out=new Buffer(bits.toArray());if(out.length=q){throw new Error("invalid sig")}}module.exports=verify}).call(this,require("buffer").Buffer)},{"./curves":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/curves.js","bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",elliptic:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/elliptic/lib/elliptic.js","parse-asn1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/parse-asn1/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-ecdh/browser.js":[function(require,module,exports){(function(Buffer){var elliptic=require("elliptic");var BN=require("bn.js");module.exports=function createECDH(curve){return new ECDH(curve)};var aliases={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};aliases.p224=aliases.secp224r1;aliases.p256=aliases.secp256r1=aliases.prime256v1;aliases.p192=aliases.secp192r1=aliases.prime192v1;aliases.p384=aliases.secp384r1;aliases.p521=aliases.secp521r1;function ECDH(curve){this.curveType=aliases[curve];if(!this.curveType){this.curveType={name:curve}}this.curve=new elliptic.ec(this.curveType.name);this.keys=void 0}ECDH.prototype.generateKeys=function(enc,format){this.keys=this.curve.genKeyPair();return this.getPublicKey(enc,format)};ECDH.prototype.computeSecret=function(other,inenc,enc){inenc=inenc||"utf8";if(!Buffer.isBuffer(other)){other=new Buffer(other,inenc)}var otherPub=this.curve.keyFromPublic(other).getPublic();var out=otherPub.mul(this.keys.getPrivate()).getX();return formatReturnValue(out,enc,this.curveType.byteLength)};ECDH.prototype.getPublicKey=function(enc,format){var key=this.keys.getPublic(format==="compressed",true);if(format==="hybrid"){if(key[key.length-1]%2){key[0]=7}else{key[0]=6}}return formatReturnValue(key,enc)};ECDH.prototype.getPrivateKey=function(enc){return formatReturnValue(this.keys.getPrivate(),enc)};ECDH.prototype.setPublicKey=function(pub,enc){enc=enc||"utf8";if(!Buffer.isBuffer(pub)){pub=new Buffer(pub,enc)}this.keys._importPublic(pub);return this};ECDH.prototype.setPrivateKey=function(priv,enc){enc=enc||"utf8";if(!Buffer.isBuffer(priv)){priv=new Buffer(priv,enc)}var _priv=new BN(priv);_priv=_priv.toString(16);this.keys._importPrivate(_priv);return this};function formatReturnValue(bn,enc,len){if(!Array.isArray(bn)){bn=bn.toArray()}var buf=new Buffer(bn);if(len&&buf.length>5]|=128<>>9<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i>16)+(y>>16)+(lsw>>16);return msw<<16|lsw&65535}function bit_rol(num,cnt){return num<>>32-cnt}module.exports=function md5(buf){return helpers.hash(buf,core_md5,16)}},{"./helpers":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/helpers.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/cipher-base/index.js":[function(require,module,exports){arguments[4]["/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-cipher/node_modules/browserify-aes/node_modules/cipher-base/index.js"][0].apply(exports,arguments)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js",stream:"/data/github/geopackage-node/node_modules/browserify/node_modules/stream-browserify/index.js",string_decoder:"/data/github/geopackage-node/node_modules/browserify/node_modules/string_decoder/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/ripemd160/lib/ripemd160.js":[function(require,module,exports){(function(Buffer){var zl=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13];var zr=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11];var sl=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6];var sr=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];var hl=[0,1518500249,1859775393,2400959708,2840853838];var hr=[1352829926,1548603684,1836072691,2053994217,0];function bytesToWords(bytes){var words=[];for(var i=0,b=0;i>>5]|=bytes[i]<<24-b%32}return words}function wordsToBytes(words){var bytes=[];for(var b=0;b>>5]>>>24-b%32&255)}return bytes}function processBlock(H,M,offset){for(var i=0;i<16;i++){var offset_i=offset+i;var M_offset_i=M[offset_i];M[offset_i]=(M_offset_i<<8|M_offset_i>>>24)&16711935|(M_offset_i<<24|M_offset_i>>>8)&4278255360}var al,bl,cl,dl,el;var ar,br,cr,dr,er;ar=al=H[0];br=bl=H[1];cr=cl=H[2];dr=dl=H[3];er=el=H[4];var t;for(i=0;i<80;i+=1){t=al+M[offset+zl[i]]|0;if(i<16){t+=f1(bl,cl,dl)+hl[0]}else if(i<32){t+=f2(bl,cl,dl)+hl[1]}else if(i<48){t+=f3(bl,cl,dl)+hl[2]}else if(i<64){t+=f4(bl,cl,dl)+hl[3]}else{t+=f5(bl,cl,dl)+hl[4]}t=t|0;t=rotl(t,sl[i]);t=t+el|0;al=el;el=dl;dl=rotl(cl,10);cl=bl;bl=t;t=ar+M[offset+zr[i]]|0;if(i<16){t+=f5(br,cr,dr)+hr[0]}else if(i<32){t+=f4(br,cr,dr)+hr[1]}else if(i<48){t+=f3(br,cr,dr)+hr[2]}else if(i<64){t+=f2(br,cr,dr)+hr[3]}else{t+=f1(br,cr,dr)+hr[4]}t=t|0;t=rotl(t,sr[i]);t=t+er|0;ar=er;er=dr;dr=rotl(cr,10);cr=br;br=t}t=H[1]+cl+dr|0;H[1]=H[2]+dl+er|0;H[2]=H[3]+el+ar|0;H[3]=H[4]+al+br|0;H[4]=H[0]+bl+cr|0;H[0]=t}function f1(x,y,z){return x^y^z}function f2(x,y,z){return x&y|~x&z}function f3(x,y,z){return(x|~y)^z}function f4(x,y,z){return x&z|y&~z}function f5(x,y,z){return x^(y|~z)}function rotl(x,n){return x<>>32-n}function ripemd160(message){var H=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof message==="string"){message=new Buffer(message,"utf8")}var m=bytesToWords(message);var nBitsLeft=message.length*8;var nBitsTotal=message.length*8;m[nBitsLeft>>>5]|=128<<24-nBitsLeft%32;m[(nBitsLeft+64>>>9<<4)+14]=(nBitsTotal<<8|nBitsTotal>>>24)&16711935|(nBitsTotal<<24|nBitsTotal>>>8)&4278255360;for(var i=0;i>>24)&16711935|(H_i<<24|H_i>>>8)&4278255360}var digestbytes=wordsToBytes(H);return new Buffer(digestbytes)}module.exports=ripemd160}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js":[function(require,module,exports){(function(Buffer){function Hash(blockSize,finalSize){this._block=new Buffer(blockSize);this._finalSize=finalSize;this._blockSize=blockSize;this._len=0;this._s=0}Hash.prototype.update=function(data,enc){if(typeof data==="string"){enc=enc||"utf8";data=new Buffer(data,enc)}var l=this._len+=data.length;var s=this._s||0;var f=0;var buffer=this._block;while(s=this._finalSize*8){this._update(this._block);this._block.fill(0)}this._block.writeInt32BE(l,this._blockSize-4);var hash=this._update(this._block)||this._hash();return enc?hash.toString(enc):hash};Hash.prototype._update=function(){throw new Error("_update must be implemented by subclass")};module.exports=Hash}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/index.js":[function(require,module,exports){var exports=module.exports=function SHA(algorithm){algorithm=algorithm.toLowerCase();var Algorithm=exports[algorithm];if(!Algorithm)throw new Error(algorithm+" is not supported (we accept pull requests)");return new Algorithm};exports.sha=require("./sha");exports.sha1=require("./sha1");exports.sha224=require("./sha224");exports.sha256=require("./sha256");exports.sha384=require("./sha384");exports.sha512=require("./sha512")},{"./sha":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha.js","./sha1":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha1.js","./sha224":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha224.js","./sha256":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha256.js","./sha384":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha384.js","./sha512":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha512.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Hash=require("./hash");var K=[1518500249,1859775393,2400959708|0,3395469782|0];var W=new Array(80);function Sha(){this.init();this._w=W;Hash.call(this,64,56)}inherits(Sha,Hash);Sha.prototype.init=function(){this._a=1732584193;this._b=4023233417;this._c=2562383102;this._d=271733878;this._e=3285377520;return this};function rotl5(num){return num<<5|num>>>27}function rotl30(num){return num<<30|num>>>2}function ft(s,b,c,d){if(s===0)return b&c|~b&d;if(s===2)return b&c|b&d|c&d;return b^c^d}Sha.prototype._update=function(M){var W=this._w;var a=this._a|0;var b=this._b|0;var c=this._c|0;var d=this._d|0;var e=this._e|0;for(var i=0;i<16;++i)W[i]=M.readInt32BE(i*4);for(;i<80;++i)W[i]=W[i-3]^W[i-8]^W[i-14]^W[i-16];for(var j=0;j<80;++j){var s=~~(j/20);var t=rotl5(a)+ft(s,b,c,d)+e+W[j]+K[s]|0;e=d;d=c;c=rotl30(b);b=a;a=t}this._a=a+this._a|0;this._b=b+this._b|0;this._c=c+this._c|0;this._d=d+this._d|0;this._e=e+this._e|0};Sha.prototype._hash=function(){var H=new Buffer(20);H.writeInt32BE(this._a|0,0);H.writeInt32BE(this._b|0,4);H.writeInt32BE(this._c|0,8);H.writeInt32BE(this._d|0,12);H.writeInt32BE(this._e|0,16);return H};module.exports=Sha}).call(this,require("buffer").Buffer)},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha1.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Hash=require("./hash");var K=[1518500249,1859775393,2400959708|0,3395469782|0];var W=new Array(80);function Sha1(){this.init();this._w=W;Hash.call(this,64,56)}inherits(Sha1,Hash);Sha1.prototype.init=function(){this._a=1732584193;this._b=4023233417;this._c=2562383102;this._d=271733878;this._e=3285377520;return this};function rotl1(num){return num<<1|num>>>31}function rotl5(num){return num<<5|num>>>27}function rotl30(num){return num<<30|num>>>2}function ft(s,b,c,d){if(s===0)return b&c|~b&d;if(s===2)return b&c|b&d|c&d;return b^c^d}Sha1.prototype._update=function(M){var W=this._w;var a=this._a|0;var b=this._b|0;var c=this._c|0;var d=this._d|0;var e=this._e|0;for(var i=0;i<16;++i)W[i]=M.readInt32BE(i*4);for(;i<80;++i)W[i]=rotl1(W[i-3]^W[i-8]^W[i-14]^W[i-16]);for(var j=0;j<80;++j){var s=~~(j/20);var t=rotl5(a)+ft(s,b,c,d)+e+W[j]+K[s]|0;e=d;d=c;c=rotl30(b);b=a;a=t}this._a=a+this._a|0;this._b=b+this._b|0;this._c=c+this._c|0;this._d=d+this._d|0;this._e=e+this._e|0};Sha1.prototype._hash=function(){var H=new Buffer(20);H.writeInt32BE(this._a|0,0);H.writeInt32BE(this._b|0,4);H.writeInt32BE(this._c|0,8);H.writeInt32BE(this._d|0,12);H.writeInt32BE(this._e|0,16);return H};module.exports=Sha1}).call(this,require("buffer").Buffer); -},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha224.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Sha256=require("./sha256");var Hash=require("./hash");var W=new Array(64);function Sha224(){this.init();this._w=W;Hash.call(this,64,56)}inherits(Sha224,Sha256);Sha224.prototype.init=function(){this._a=3238371032;this._b=914150663;this._c=812702999;this._d=4144912697;this._e=4290775857;this._f=1750603025;this._g=1694076839;this._h=3204075428;return this};Sha224.prototype._hash=function(){var H=new Buffer(28);H.writeInt32BE(this._a,0);H.writeInt32BE(this._b,4);H.writeInt32BE(this._c,8);H.writeInt32BE(this._d,12);H.writeInt32BE(this._e,16);H.writeInt32BE(this._f,20);H.writeInt32BE(this._g,24);return H};module.exports=Sha224}).call(this,require("buffer").Buffer)},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js","./sha256":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha256.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha256.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Hash=require("./hash");var K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];var W=new Array(64);function Sha256(){this.init();this._w=W;Hash.call(this,64,56)}inherits(Sha256,Hash);Sha256.prototype.init=function(){this._a=1779033703;this._b=3144134277;this._c=1013904242;this._d=2773480762;this._e=1359893119;this._f=2600822924;this._g=528734635;this._h=1541459225;return this};function ch(x,y,z){return z^x&(y^z)}function maj(x,y,z){return x&y|z&(x|y)}function sigma0(x){return(x>>>2|x<<30)^(x>>>13|x<<19)^(x>>>22|x<<10)}function sigma1(x){return(x>>>6|x<<26)^(x>>>11|x<<21)^(x>>>25|x<<7)}function gamma0(x){return(x>>>7|x<<25)^(x>>>18|x<<14)^x>>>3}function gamma1(x){return(x>>>17|x<<15)^(x>>>19|x<<13)^x>>>10}Sha256.prototype._update=function(M){var W=this._w;var a=this._a|0;var b=this._b|0;var c=this._c|0;var d=this._d|0;var e=this._e|0;var f=this._f|0;var g=this._g|0;var h=this._h|0;for(var i=0;i<16;++i)W[i]=M.readInt32BE(i*4);for(;i<64;++i)W[i]=gamma1(W[i-2])+W[i-7]+gamma0(W[i-15])+W[i-16]|0;for(var j=0;j<64;++j){var T1=h+sigma1(e)+ch(e,f,g)+K[j]+W[j]|0;var T2=sigma0(a)+maj(a,b,c)|0;h=g;g=f;f=e;e=d+T1|0;d=c;c=b;b=a;a=T1+T2|0}this._a=a+this._a|0;this._b=b+this._b|0;this._c=c+this._c|0;this._d=d+this._d|0;this._e=e+this._e|0;this._f=f+this._f|0;this._g=g+this._g|0;this._h=h+this._h|0};Sha256.prototype._hash=function(){var H=new Buffer(32);H.writeInt32BE(this._a,0);H.writeInt32BE(this._b,4);H.writeInt32BE(this._c,8);H.writeInt32BE(this._d,12);H.writeInt32BE(this._e,16);H.writeInt32BE(this._f,20);H.writeInt32BE(this._g,24);H.writeInt32BE(this._h,28);return H};module.exports=Sha256}).call(this,require("buffer").Buffer)},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha384.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var SHA512=require("./sha512");var Hash=require("./hash");var W=new Array(160);function Sha384(){this.init();this._w=W;Hash.call(this,128,112)}inherits(Sha384,SHA512);Sha384.prototype.init=function(){this._ah=3418070365;this._bh=1654270250;this._ch=2438529370;this._dh=355462360;this._eh=1731405415;this._fh=2394180231;this._gh=3675008525;this._hh=1203062813;this._al=3238371032;this._bl=914150663;this._cl=812702999;this._dl=4144912697;this._el=4290775857;this._fl=1750603025;this._gl=1694076839;this._hl=3204075428;return this};Sha384.prototype._hash=function(){var H=new Buffer(48);function writeInt64BE(h,l,offset){H.writeInt32BE(h,offset);H.writeInt32BE(l,offset+4)}writeInt64BE(this._ah,this._al,0);writeInt64BE(this._bh,this._bl,8);writeInt64BE(this._ch,this._cl,16);writeInt64BE(this._dh,this._dl,24);writeInt64BE(this._eh,this._el,32);writeInt64BE(this._fh,this._fl,40);return H};module.exports=Sha384}).call(this,require("buffer").Buffer)},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js","./sha512":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha512.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/sha512.js":[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Hash=require("./hash");var K=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];var W=new Array(160);function Sha512(){this.init();this._w=W;Hash.call(this,128,112)}inherits(Sha512,Hash);Sha512.prototype.init=function(){this._ah=1779033703;this._bh=3144134277;this._ch=1013904242;this._dh=2773480762;this._eh=1359893119;this._fh=2600822924;this._gh=528734635;this._hh=1541459225;this._al=4089235720;this._bl=2227873595;this._cl=4271175723;this._dl=1595750129;this._el=2917565137;this._fl=725511199;this._gl=4215389547;this._hl=327033209;return this};function Ch(x,y,z){return z^x&(y^z)}function maj(x,y,z){return x&y|z&(x|y)}function sigma0(x,xl){return(x>>>28|xl<<4)^(xl>>>2|x<<30)^(xl>>>7|x<<25)}function sigma1(x,xl){return(x>>>14|xl<<18)^(x>>>18|xl<<14)^(xl>>>9|x<<23)}function Gamma0(x,xl){return(x>>>1|xl<<31)^(x>>>8|xl<<24)^x>>>7}function Gamma0l(x,xl){return(x>>>1|xl<<31)^(x>>>8|xl<<24)^(x>>>7|xl<<25)}function Gamma1(x,xl){return(x>>>19|xl<<13)^(xl>>>29|x<<3)^x>>>6}function Gamma1l(x,xl){return(x>>>19|xl<<13)^(xl>>>29|x<<3)^(x>>>6|xl<<26)}function getCarry(a,b){return a>>>0>>0?1:0}Sha512.prototype._update=function(M){var W=this._w;var ah=this._ah|0;var bh=this._bh|0;var ch=this._ch|0;var dh=this._dh|0;var eh=this._eh|0;var fh=this._fh|0;var gh=this._gh|0;var hh=this._hh|0;var al=this._al|0;var bl=this._bl|0;var cl=this._cl|0;var dl=this._dl|0;var el=this._el|0;var fl=this._fl|0;var gl=this._gl|0;var hl=this._hl|0;for(var i=0;i<32;i+=2){W[i]=M.readInt32BE(i*4);W[i+1]=M.readInt32BE(i*4+4)}for(;i<160;i+=2){var xh=W[i-15*2];var xl=W[i-15*2+1];var gamma0=Gamma0(xh,xl);var gamma0l=Gamma0l(xl,xh);xh=W[i-2*2];xl=W[i-2*2+1];var gamma1=Gamma1(xh,xl);var gamma1l=Gamma1l(xl,xh);var Wi7h=W[i-7*2];var Wi7l=W[i-7*2+1];var Wi16h=W[i-16*2];var Wi16l=W[i-16*2+1];var Wil=gamma0l+Wi7l|0;var Wih=gamma0+Wi7h+getCarry(Wil,gamma0l)|0;Wil=Wil+gamma1l|0;Wih=Wih+gamma1+getCarry(Wil,gamma1l)|0;Wil=Wil+Wi16l|0;Wih=Wih+Wi16h+getCarry(Wil,Wi16l)|0;W[i]=Wih;W[i+1]=Wil}for(var j=0;j<160;j+=2){Wih=W[j];Wil=W[j+1];var majh=maj(ah,bh,ch);var majl=maj(al,bl,cl);var sigma0h=sigma0(ah,al);var sigma0l=sigma0(al,ah);var sigma1h=sigma1(eh,el);var sigma1l=sigma1(el,eh);var Kih=K[j];var Kil=K[j+1];var chh=Ch(eh,fh,gh);var chl=Ch(el,fl,gl);var t1l=hl+sigma1l|0;var t1h=hh+sigma1h+getCarry(t1l,hl)|0;t1l=t1l+chl|0;t1h=t1h+chh+getCarry(t1l,chl)|0;t1l=t1l+Kil|0;t1h=t1h+Kih+getCarry(t1l,Kil)|0;t1l=t1l+Wil|0;t1h=t1h+Wih+getCarry(t1l,Wil)|0;var t2l=sigma0l+majl|0;var t2h=sigma0h+majh+getCarry(t2l,sigma0l)|0;hh=gh;hl=gl;gh=fh;gl=fl;fh=eh;fl=el;el=dl+t1l|0;eh=dh+t1h+getCarry(el,dl)|0;dh=ch;dl=cl;ch=bh;cl=bl;bh=ah;bl=al;al=t1l+t2l|0;ah=t1h+t2h+getCarry(al,t1l)|0}this._al=this._al+al|0;this._bl=this._bl+bl|0;this._cl=this._cl+cl|0;this._dl=this._dl+dl|0;this._el=this._el+el|0;this._fl=this._fl+fl|0;this._gl=this._gl+gl|0;this._hl=this._hl+hl|0;this._ah=this._ah+ah+getCarry(this._al,al)|0;this._bh=this._bh+bh+getCarry(this._bl,bl)|0;this._ch=this._ch+ch+getCarry(this._cl,cl)|0;this._dh=this._dh+dh+getCarry(this._dl,dl)|0;this._eh=this._eh+eh+getCarry(this._el,el)|0;this._fh=this._fh+fh+getCarry(this._fl,fl)|0;this._gh=this._gh+gh+getCarry(this._gl,gl)|0;this._hh=this._hh+hh+getCarry(this._hl,hl)|0};Sha512.prototype._hash=function(){var H=new Buffer(64);function writeInt64BE(h,l,offset){H.writeInt32BE(h,offset);H.writeInt32BE(l,offset+4)}writeInt64BE(this._ah,this._al,0);writeInt64BE(this._bh,this._bl,8);writeInt64BE(this._ch,this._cl,16);writeInt64BE(this._dh,this._dl,24);writeInt64BE(this._eh,this._el,32);writeInt64BE(this._fh,this._fl,40);writeInt64BE(this._gh,this._gl,48);writeInt64BE(this._hh,this._hl,56);return H};module.exports=Sha512}).call(this,require("buffer").Buffer)},{"./hash":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hash/node_modules/sha.js/hash.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/create-hmac/browser.js":[function(require,module,exports){(function(Buffer){"use strict";var createHash=require("create-hash/browser");var inherits=require("inherits");var Transform=require("stream").Transform;var ZEROS=new Buffer(128);ZEROS.fill(0);function Hmac(alg,key){Transform.call(this);alg=alg.toLowerCase();if(typeof key==="string"){key=new Buffer(key)}var blocksize=alg==="sha512"||alg==="sha384"?128:64;this._alg=alg;this._key=key;if(key.length>blocksize){key=createHash(alg).update(key).digest()}else if(key.lengthbits){num.ishrn(1)}if(num.isEven()){num.iadd(ONE)}if(!num.testn(1)){num.iadd(TWO)}if(!gen.cmp(TWO)){while(num.mod(TWENTYFOUR).cmp(ELEVEN)){num.iadd(FOUR)}}else if(!gen.cmp(FIVE)){while(num.mod(TEN).cmp(THREE)){num.iadd(FOUR)}}n2=num.shrn(1);if(simpleSieve(n2)&&simpleSieve(num)&&fermatTest(n2)&&fermatTest(num)&&millerRabin.test(n2)&&millerRabin.test(num)){return num}}}},{"bn.js":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","miller-rabin":"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/node_modules/miller-rabin/lib/mr.js",randombytes:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/randombytes/browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/lib/primes.json":[function(require,module,exports){module.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js":[function(require,module,exports){arguments[4]["/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/browserify-sign/node_modules/bn.js/lib/bn.js"][0].apply(exports,arguments)},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/node_modules/diffie-hellman/node_modules/miller-rabin/lib/mr.js":[function(require,module,exports){var bn=require("bn.js");var brorand=require("brorand");function MillerRabin(rand){this.rand=rand||new brorand.Rand}module.exports=MillerRabin;MillerRabin.create=function create(rand){return new MillerRabin(rand)};MillerRabin.prototype._rand=function _rand(n){var len=n.bitLength();var buf=this.rand.generate(Math.ceil(len/8));buf[0]|=3;var mask=len&7;if(mask!==0)buf[buf.length-1]>>=7-mask;return new bn(buf)};MillerRabin.prototype.test=function test(n,k,cb){var len=n.bitLength();var red=bn.mont(n);var rone=new bn(1).toRed(red);if(!k)k=Math.max(1,len/48|0);var n1=n.subn(1);var n2=n1.subn(1);for(var s=0;!n1.testn(s);s++){}var d=n.shrn(s);var rn1=n1.toRed(red);var prime=true;for(;k>0;k--){var a=this._rand(n2);if(cb)cb(a);var x=a.toRed(red).redPow(d);if(x.cmp(rone)===0||x.cmp(rn1)===0)continue;for(var i=1;i0;k--){var a=this._rand(n2);var g=n.gcd(a);if(g.cmpn(1)!==0)return g;var x=a.toRed(red).redPow(d);if(x.cmp(rone)===0||x.cmp(rn1)===0)continue;for(var i=1;iMAX_ALLOC){throw new TypeError("Bad key length")}digest=digest||"sha1";if(!Buffer.isBuffer(password))password=new Buffer(password,"binary");if(!Buffer.isBuffer(salt))salt=new Buffer(salt,"binary");var hLen;var l=1;var DK=new Buffer(keylen);var block1=new Buffer(salt.length+4);salt.copy(block1,0,0,salt.length);var r;var T;for(var i=1;i<=l;i++){block1.writeUInt32BE(i,salt.length);var U=createHmac(digest,password).update(block1).digest();if(!hLen){hLen=U.length;T=new Buffer(hLen);l=Math.ceil(keylen/hLen);r=keylen-(l-1)*hLen}U.copy(T,0,0,hLen);for(var j=1;jk||new bn(enc).cmp(key.modulus)>=0){throw new Error("decryption error")}var msg;if(reverse){msg=withPublic(new bn(enc),key)}else{msg=crt(enc,key)}var zBuffer=new Buffer(k-msg.length);zBuffer.fill(0);msg=Buffer.concat([zBuffer,msg],k);if(padding===4){return oaep(key,msg)}else if(padding===1){return pkcs1(key,msg,reverse)}else if(padding===3){return msg}else{throw new Error("unknown padding")}};function oaep(key,msg){var n=key.modulus;var k=key.modulus.byteLength();var mLen=msg.length;var iHash=createHash("sha1").update(new Buffer("")).digest();var hLen=iHash.length;var hLen2=2*hLen;if(msg[0]!==0){throw new Error("decryption error")}var maskedSeed=msg.slice(1,hLen+1);var maskedDb=msg.slice(hLen+1);var seed=xor(maskedSeed,mgf(maskedDb,hLen));var db=xor(maskedDb,mgf(seed,k-hLen-1));if(compare(iHash,db.slice(0,hLen))){throw new Error("decryption error")}var i=hLen;while(db[i]===0){i++}if(db[i++]!==1){throw new Error("decryption error")}return db.slice(i)}function pkcs1(key,msg,reverse){var p1=msg.slice(0,2);var i=2;var status=0;while(msg[i++]!==0){if(i>=msg.length){status++;break}}var ps=msg.slice(2,i-1);var p2=msg.slice(i-1,i);if(p1.toString("hex")!=="0002"&&!reverse||p1.toString("hex")!=="0001"&&reverse){status++}if(ps.length<8){status++}if(status){throw new Error("decryption error")}return msg.slice(i)}function compare(a,b){a=new Buffer(a);b=new Buffer(b);var dif=0;var len=a.length;if(a.length!==b.length){dif++;len=Math.min(a.length,b.length)}var i=-1;while(++i=0){throw new Error("data too long for modulus")}}else{throw new Error("unknown padding")}if(reverse){return crt(paddedMsg,key)}else{return withPublic(paddedMsg,key)}};function oaep(key,msg){var k=key.modulus.byteLength();var mLen=msg.length;var iHash=createHash("sha1").update(new Buffer("")).digest();var hLen=iHash.length;var hLen2=2*hLen;if(mLen>k-hLen2-2){throw new Error("message too long")}var ps=new Buffer(k-mLen-hLen2-2);ps.fill(0);var dblen=k-hLen-1;var seed=randomBytes(hLen);var maskedDb=xor(Buffer.concat([iHash,ps,new Buffer([1]),msg],dblen),mgf(seed,dblen));var maskedSeed=xor(seed,mgf(maskedDb,hLen));return new bn(Buffer.concat([new Buffer([0]),maskedSeed,maskedDb],k))}function pkcs1(key,msg,reverse){var mLen=msg.length;var k=key.modulus.byteLength();if(mLen>k-11){throw new Error("message too long")}var ps;if(reverse){ps=new Buffer(k-mLen-3);ps.fill(255)}else{ps=nonZero(k-mLen-3)}return new bn(Buffer.concat([new Buffer([0,reverse?1:2]),ps,new Buffer([0]),msg],k))}function nonZero(len,crypto){var out=new Buffer(len);var i=0;var cache=randomBytes(len*2);var cur=0;var num;while(i65536)throw new Error("requested too many random bytes");var rawBytes=new global.Uint8Array(size);if(size>0){crypto.getRandomValues(rawBytes)}var bytes=new Buffer(rawBytes.buffer);if(typeof cb==="function"){return process.nextTick(function(){cb(null,bytes)})}return bytes}}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer)},{_process:"/data/github/geopackage-node/node_modules/browserify/node_modules/process/browser.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/events/events.js":[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}throw TypeError('Uncaught, unspecified "error" event.')}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:args=Array.prototype.slice.call(arguments,1);handler.apply(this,args)}}else if(isObject(handler)){args=Array.prototype.slice.call(arguments,1);listeners=handler.slice();len=listeners.length;for(i=0;i0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-- >0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else if(listeners){while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.prototype.listenerCount=function(type){if(this._events){var evlistener=this._events[type];if(isFunction(evlistener))return 1;else if(evlistener)return evlistener.length}return 0};EventEmitter.listenerCount=function(emitter,type){return emitter.listenerCount(type)};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js":[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/insert-module-globals/node_modules/is-buffer/index.js":[function(require,module,exports){module.exports=function(obj){return!!(obj!=null&&(obj._isBuffer||obj.constructor&&typeof obj.constructor.isBuffer==="function"&&obj.constructor.isBuffer(obj)))}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/path-browserify/index.js":[function(require,module,exports){(function(process){function normalizeArray(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var splitPath=function(filename){return splitPathRe.exec(filename).slice(1)};exports.resolve=function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){continue}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=normalizeArray(filter(resolvedPath.split("/"),function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."};exports.normalize=function(path){var isAbsolute=exports.isAbsolute(path),trailingSlash=substr(path,-1)==="/";path=normalizeArray(filter(path.split("/"),function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path};exports.isAbsolute=function(path){return path.charAt(0)==="/"};exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p,index){if(typeof p!=="string"){throw new TypeError("Arguments to path.join must be strings")}return p}).join("/"))};exports.relative=function(from,to){from=exports.resolve(from).substr(1);to=exports.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i1){for(var i=1;i0){if(state.ended&&!addToFront){var e=new Error("stream.push() after EOF");stream.emit("error",e)}else if(state.endEmitted&&addToFront){var e=new Error("stream.unshift() after end event");stream.emit("error",e)}else{var skipAdd;if(state.decoder&&!addToFront&&!encoding){chunk=state.decoder.write(chunk);skipAdd=!state.objectMode&&chunk.length===0}if(!addToFront)state.reading=false;if(!skipAdd){if(state.flowing&&state.length===0&&!state.sync){stream.emit("data",chunk);stream.read(0)}else{state.length+=state.objectMode?1:chunk.length;if(addToFront)state.buffer.unshift(chunk);else state.buffer.push(chunk);if(state.needReadable)emitReadable(stream)}}maybeReadMore(stream,state)}}else if(!addToFront){state.reading=false}return needMoreData(state)}function needMoreData(state){return!state.ended&&(state.needReadable||state.length=MAX_HWM){ -n=MAX_HWM}else{n--;n|=n>>>1;n|=n>>>2;n|=n>>>4;n|=n>>>8;n|=n>>>16;n++}return n}function howMuchToRead(n,state){if(state.length===0&&state.ended)return 0;if(state.objectMode)return n===0?0:1;if(n===null||isNaN(n)){if(state.flowing&&state.buffer.length)return state.buffer[0].length;else return state.length}if(n<=0)return 0;if(n>state.highWaterMark)state.highWaterMark=computeNewHighWaterMark(n);if(n>state.length){if(!state.ended){state.needReadable=true;return 0}else{return state.length}}return n}Readable.prototype.read=function(n){debug("read",n);var state=this._readableState;var nOrig=n;if(typeof n!=="number"||n>0)state.emittedReadable=false;if(n===0&&state.needReadable&&(state.length>=state.highWaterMark||state.ended)){debug("read: emitReadable",state.length,state.ended);if(state.length===0&&state.ended)endReadable(this);else emitReadable(this);return null}n=howMuchToRead(n,state);if(n===0&&state.ended){if(state.length===0)endReadable(this);return null}var doRead=state.needReadable;debug("need readable",doRead);if(state.length===0||state.length-n0)ret=fromList(n,state);else ret=null;if(ret===null){state.needReadable=true;n=0}state.length-=n;if(state.length===0&&!state.ended)state.needReadable=true;if(nOrig!==n&&state.ended&&state.length===0)endReadable(this);if(ret!==null)this.emit("data",ret);return ret};function chunkInvalid(state,chunk){var er=null;if(!Buffer.isBuffer(chunk)&&typeof chunk!=="string"&&chunk!==null&&chunk!==undefined&&!state.objectMode){er=new TypeError("Invalid non-string/buffer chunk")}return er}function onEofChunk(stream,state){if(state.ended)return;if(state.decoder){var chunk=state.decoder.end();if(chunk&&chunk.length){state.buffer.push(chunk);state.length+=state.objectMode?1:chunk.length}}state.ended=true;emitReadable(stream)}function emitReadable(stream){var state=stream._readableState;state.needReadable=false;if(!state.emittedReadable){debug("emitReadable",state.flowing);state.emittedReadable=true;if(state.sync)processNextTick(emitReadable_,stream);else emitReadable_(stream)}}function emitReadable_(stream){debug("emit readable");stream.emit("readable");flow(stream)}function maybeReadMore(stream,state){if(!state.readingMore){state.readingMore=true;processNextTick(maybeReadMore_,stream,state)}}function maybeReadMore_(stream,state){var len=state.length;while(!state.reading&&!state.flowing&&!state.ended&&state.length=length){if(stringMode)ret=list.join("");else if(list.length===1)ret=list[0];else ret=Buffer.concat(list,length);list.length=0}else{if(n0)throw new Error("endReadable called on non-empty stream");if(!state.endEmitted){state.ended=true;processNextTick(endReadableNT,state,stream)}}function endReadableNT(state,stream){if(!state.endEmitted&&state.length===0){state.endEmitted=true;stream.readable=false;stream.emit("end")}}function forEach(xs,f){for(var i=0,l=xs.length;i-1?setImmediate:processNextTick;var Buffer=require("buffer").Buffer;Writable.WritableState=WritableState;var util=require("core-util-is");util.inherits=require("inherits");var internalUtil={deprecate:require("util-deprecate")};var Stream;(function(){try{Stream=require("st"+"ream")}catch(_){}finally{if(!Stream)Stream=require("events").EventEmitter}})();var Buffer=require("buffer").Buffer;util.inherits(Writable,Stream);function nop(){}function WriteReq(chunk,encoding,cb){this.chunk=chunk;this.encoding=encoding;this.callback=cb;this.next=null}var Duplex;function WritableState(options,stream){Duplex=Duplex||require("./_stream_duplex");options=options||{};this.objectMode=!!options.objectMode;if(stream instanceof Duplex)this.objectMode=this.objectMode||!!options.writableObjectMode;var hwm=options.highWaterMark;var defaultHwm=this.objectMode?16:16*1024;this.highWaterMark=hwm||hwm===0?hwm:defaultHwm;this.highWaterMark=~~this.highWaterMark;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;var noDecode=options.decodeStrings===false;this.decodeStrings=!noDecode;this.defaultEncoding=options.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(er){onwrite(stream,er)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this);this.corkedRequestsFree.next=new CorkedRequest(this)}WritableState.prototype.getBuffer=function writableStateGetBuffer(){var current=this.bufferedRequest;var out=[];while(current){out.push(current);current=current.next}return out};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:internalUtil.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer "+"instead.")})}catch(_){}})();var Duplex;function Writable(options){Duplex=Duplex||require("./_stream_duplex");if(!(this instanceof Writable)&&!(this instanceof Duplex))return new Writable(options);this._writableState=new WritableState(options,this);this.writable=true;if(options){if(typeof options.write==="function")this._write=options.write;if(typeof options.writev==="function")this._writev=options.writev}Stream.call(this)}Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe. Not readable."))};function writeAfterEnd(stream,cb){var er=new Error("write after end");stream.emit("error",er);processNextTick(cb,er)}function validChunk(stream,state,chunk,cb){var valid=true;if(!Buffer.isBuffer(chunk)&&typeof chunk!=="string"&&chunk!==null&&chunk!==undefined&&!state.objectMode){var er=new TypeError("Invalid non-string/buffer chunk");stream.emit("error",er);processNextTick(cb,er);valid=false}return valid}Writable.prototype.write=function(chunk,encoding,cb){var state=this._writableState;var ret=false;if(typeof encoding==="function"){cb=encoding;encoding=null}if(Buffer.isBuffer(chunk))encoding="buffer";else if(!encoding)encoding=state.defaultEncoding;if(typeof cb!=="function")cb=nop;if(state.ended)writeAfterEnd(this,cb);else if(validChunk(this,state,chunk,cb)){state.pendingcb++;ret=writeOrBuffer(this,state,chunk,encoding,cb)}return ret};Writable.prototype.cork=function(){var state=this._writableState;state.corked++};Writable.prototype.uncork=function(){var state=this._writableState;if(state.corked){state.corked--;if(!state.writing&&!state.corked&&!state.finished&&!state.bufferProcessing&&state.bufferedRequest)clearBuffer(this,state)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(encoding){if(typeof encoding==="string")encoding=encoding.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((encoding+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+encoding);this._writableState.defaultEncoding=encoding};function decodeChunk(state,chunk,encoding){if(!state.objectMode&&state.decodeStrings!==false&&typeof chunk==="string"){chunk=new Buffer(chunk,encoding)}return chunk}function writeOrBuffer(stream,state,chunk,encoding,cb){chunk=decodeChunk(state,chunk,encoding);if(Buffer.isBuffer(chunk))encoding="buffer";var len=state.objectMode?1:chunk.length;state.length+=len;var ret=state.length=this.charLength-this.charReceived?this.charLength-this.charReceived:buffer.length;buffer.copy(this.charBuffer,this.charReceived,0,available);this.charReceived+=available;if(this.charReceived=55296&&charCode<=56319){this.charLength+=this.surrogateSize;charStr="";continue}this.charReceived=this.charLength=0;if(buffer.length===0){return charStr}break}this.detectIncompleteChar(buffer);var end=buffer.length;if(this.charLength){buffer.copy(this.charBuffer,0,buffer.length-this.charReceived,end);end-=this.charReceived}charStr+=buffer.toString(this.encoding,0,end);var end=charStr.length-1;var charCode=charStr.charCodeAt(end);if(charCode>=55296&&charCode<=56319){var size=this.surrogateSize;this.charLength+=size;this.charReceived+=size;this.charBuffer.copy(this.charBuffer,size,0,size);buffer.copy(this.charBuffer,0,0,size);return charStr.substring(0,end)}return charStr};StringDecoder.prototype.detectIncompleteChar=function(buffer){var i=buffer.length>=3?3:buffer.length;for(;i>0;i--){var c=buffer[buffer.length-i];if(i==1&&c>>5==6){this.charLength=2;break}if(i<=2&&c>>4==14){this.charLength=3;break}if(i<=3&&c>>3==30){this.charLength=4;break}}this.charReceived=i};StringDecoder.prototype.end=function(buffer){var res="";if(buffer&&buffer.length)res=this.write(buffer);if(this.charReceived){var cr=this.charReceived;var buf=this.charBuffer;var enc=this.encoding;res+=buf.slice(0,cr).toString(enc)}return res};function passThroughWrite(buffer){return buffer.toString(this.encoding)}function utf16DetectIncompleteChar(buffer){this.charReceived=buffer.length%2;this.charLength=this.charReceived?2:0}function base64DetectIncompleteChar(buffer){this.charReceived=buffer.length%3;this.charLength=this.charReceived?3:0}},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/util/support/isBufferBrowser.js":[function(require,module,exports){module.exports=function isBuffer(arg){return arg&&typeof arg==="object"&&typeof arg.copy==="function"&&typeof arg.fill==="function"&&typeof arg.readUInt8==="function"}},{}],"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js":[function(require,module,exports){(function(process,global){var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(!isString(f)){var objects=[];for(var i=0;i=len)return x;switch(x){case"%s":return String(args[i++]);case"%d":return Number(args[i++]);case"%j":try{return JSON.stringify(args[i++])}catch(_){return"[Circular]"}default:return x}});for(var x=args[i];i=3)ctx.depth=arguments[2];if(arguments.length>=4)ctx.colors=arguments[3];if(isBoolean(opts)){ctx.showHidden=opts}else if(opts){exports._extend(ctx,opts)}if(isUndefined(ctx.showHidden))ctx.showHidden=false;if(isUndefined(ctx.depth))ctx.depth=2;if(isUndefined(ctx.colors))ctx.colors=false;if(isUndefined(ctx.customInspect))ctx.customInspect=true;if(ctx.colors)ctx.stylize=stylizeWithColor;return formatValue(ctx,obj,ctx.depth)}exports.inspect=inspect;inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};inspect.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"};function stylizeWithColor(str,styleType){var style=inspect.styles[styleType];if(style){return"["+inspect.colors[style][0]+"m"+str+"["+inspect.colors[style][1]+"m"}else{return str}}function stylizeNoColor(str,styleType){return str}function arrayToHash(array){var hash={};array.forEach(function(val,idx){hash[val]=true});return hash}function formatValue(ctx,value,recurseTimes){if(ctx.customInspect&&value&&isFunction(value.inspect)&&value.inspect!==exports.inspect&&!(value.constructor&&value.constructor.prototype===value)){var ret=value.inspect(recurseTimes,ctx);if(!isString(ret)){ret=formatValue(ctx,ret,recurseTimes)}return ret}var primitive=formatPrimitive(ctx,value);if(primitive){return primitive}var keys=Object.keys(value);var visibleKeys=arrayToHash(keys);if(ctx.showHidden){keys=Object.getOwnPropertyNames(value)}if(isError(value)&&(keys.indexOf("message")>=0||keys.indexOf("description")>=0)){return formatError(value)}if(keys.length===0){if(isFunction(value)){var name=value.name?": "+value.name:"";return ctx.stylize("[Function"+name+"]","special")}if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}if(isDate(value)){return ctx.stylize(Date.prototype.toString.call(value),"date")}if(isError(value)){return formatError(value)}}var base="",array=false,braces=["{","}"];if(isArray(value)){array=true;braces=["[","]"]}if(isFunction(value)){var n=value.name?": "+value.name:"";base=" [Function"+n+"]"}if(isRegExp(value)){base=" "+RegExp.prototype.toString.call(value)}if(isDate(value)){base=" "+Date.prototype.toUTCString.call(value)}if(isError(value)){base=" "+formatError(value)}if(keys.length===0&&(!array||value.length==0)){return braces[0]+base+braces[1]}if(recurseTimes<0){if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}else{return ctx.stylize("[Object]","special")}}ctx.seen.push(value);var output;if(array){output=formatArray(ctx,value,recurseTimes,visibleKeys,keys)}else{output=keys.map(function(key){return formatProperty(ctx,value,recurseTimes,visibleKeys,key,array)})}ctx.seen.pop();return reduceToSingleString(output,base,braces)}function formatPrimitive(ctx,value){if(isUndefined(value))return ctx.stylize("undefined","undefined");if(isString(value)){var simple="'"+JSON.stringify(value).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return ctx.stylize(simple,"string")}if(isNumber(value))return ctx.stylize(""+value,"number");if(isBoolean(value))return ctx.stylize(""+value,"boolean");if(isNull(value))return ctx.stylize("null","null")}function formatError(value){return"["+Error.prototype.toString.call(value)+"]"}function formatArray(ctx,value,recurseTimes,visibleKeys,keys){var output=[];for(var i=0,l=value.length;i-1){if(array){str=str.split("\n").map(function(line){return" "+line}).join("\n").substr(2)}else{str="\n"+str.split("\n").map(function(line){return" "+line}).join("\n")}}}else{str=ctx.stylize("[Circular]","special")}}if(isUndefined(name)){if(array&&key.match(/^\d+$/)){return str}name=JSON.stringify(""+key);if(name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)){name=name.substr(1,name.length-2);name=ctx.stylize(name,"name")}else{name=name.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'");name=ctx.stylize(name,"string")}}return name+": "+str}function reduceToSingleString(output,base,braces){var numLinesEst=0;var length=output.reduce(function(prev,cur){numLinesEst++;if(cur.indexOf("\n")>=0)numLinesEst++;return prev+cur.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(length>60){return braces[0]+(base===""?"":base+"\n ")+" "+output.join(",\n ")+" "+braces[1]}return braces[0]+base+" "+output.join(", ")+" "+braces[1]}function isArray(ar){return Array.isArray(ar)}exports.isArray=isArray;function isBoolean(arg){return typeof arg==="boolean"}exports.isBoolean=isBoolean;function isNull(arg){return arg===null}exports.isNull=isNull;function isNullOrUndefined(arg){return arg==null}exports.isNullOrUndefined=isNullOrUndefined;function isNumber(arg){return typeof arg==="number"}exports.isNumber=isNumber;function isString(arg){return typeof arg==="string"}exports.isString=isString;function isSymbol(arg){return typeof arg==="symbol"}exports.isSymbol=isSymbol;function isUndefined(arg){return arg===void 0}exports.isUndefined=isUndefined;function isRegExp(re){return isObject(re)&&objectToString(re)==="[object RegExp]"}exports.isRegExp=isRegExp;function isObject(arg){return typeof arg==="object"&&arg!==null}exports.isObject=isObject;function isDate(d){return isObject(d)&&objectToString(d)==="[object Date]"}exports.isDate=isDate;function isError(e){return isObject(e)&&(objectToString(e)==="[object Error]"||e instanceof Error)}exports.isError=isError;function isFunction(arg){return typeof arg==="function"}exports.isFunction=isFunction;function isPrimitive(arg){return arg===null||typeof arg==="boolean"||typeof arg==="number"||typeof arg==="string"||typeof arg==="symbol"||typeof arg==="undefined"}exports.isPrimitive=isPrimitive;exports.isBuffer=require("./support/isBuffer");function objectToString(o){return Object.prototype.toString.call(o)}function pad(n){return n<10?"0"+n.toString(10):n.toString(10)}var months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function timestamp(){var d=new Date;var time=[pad(d.getHours()),pad(d.getMinutes()),pad(d.getSeconds())].join(":");return[d.getDate(),months[d.getMonth()],time].join(" ")}exports.log=function(){console.log("%s - %s",timestamp(),exports.format.apply(exports,arguments))};exports.inherits=require("inherits");exports._extend=function(origin,add){if(!add||!isObject(add))return origin;var keys=Object.keys(add);var i=keys.length;while(i--){origin[keys[i]]=add[keys[i]]}return origin};function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./support/isBuffer":"/data/github/geopackage-node/node_modules/browserify/node_modules/util/support/isBufferBrowser.js",_process:"/data/github/geopackage-node/node_modules/browserify/node_modules/process/browser.js",inherits:"/data/github/geopackage-node/node_modules/browserify/node_modules/inherits/inherits_browser.js"}],"/data/github/geopackage-node/node_modules/browserify/node_modules/vm-browserify/index.js":[function(require,module,exports){var indexOf=require("indexof");var Object_keys=function(obj){if(Object.keys)return Object.keys(obj);else{var res=[];for(var key in obj)res.push(key);return res}};var forEach=function(xs,fn){if(xs.forEach)return xs.forEach(fn);else for(var i=0;i1)){return null}if(buf[0]===255&&buf[1]===216&&buf[2]===255){return{ext:"jpg",mime:"image/jpeg"}}if(buf[0]===137&&buf[1]===80&&buf[2]===78&&buf[3]===71){return{ext:"png",mime:"image/png"}}if(buf[0]===71&&buf[1]===73&&buf[2]===70){return{ext:"gif",mime:"image/gif"}}if(buf[8]===87&&buf[9]===69&&buf[10]===66&&buf[11]===80){return{ext:"webp",mime:"image/webp"}}if((buf[0]===73&&buf[1]===73&&buf[2]===42&&buf[3]===0||buf[0]===77&&buf[1]===77&&buf[2]===0&&buf[3]===42)&&buf[8]===67&&buf[9]===82){return{ext:"cr2",mime:"image/x-canon-cr2"}}if(buf[0]===73&&buf[1]===73&&buf[2]===42&&buf[3]===0||buf[0]===77&&buf[1]===77&&buf[2]===0&&buf[3]===42){return{ext:"tif",mime:"image/tiff"}}if(buf[0]===66&&buf[1]===77){return{ext:"bmp",mime:"image/bmp"}}if(buf[0]===73&&buf[1]===73&&buf[2]===188){return{ext:"jxr",mime:"image/vnd.ms-photo"}}if(buf[0]===56&&buf[1]===66&&buf[2]===80&&buf[3]===83){return{ext:"psd",mime:"image/vnd.adobe.photoshop"}}if(buf[0]===80&&buf[1]===75&&buf[2]===3&&buf[3]===4&&buf[30]===109&&buf[31]===105&&buf[32]===109&&buf[33]===101&&buf[34]===116&&buf[35]===121&&buf[36]===112&&buf[37]===101&&buf[38]===97&&buf[39]===112&&buf[40]===112&&buf[41]===108&&buf[42]===105&&buf[43]===99&&buf[44]===97&&buf[45]===116&&buf[46]===105&&buf[47]===111&&buf[48]===110&&buf[49]===47&&buf[50]===101&&buf[51]===112&&buf[52]===117&&buf[53]===98&&buf[54]===43&&buf[55]===122&&buf[56]===105&&buf[57]===112){return{ext:"epub",mime:"application/epub+zip"}}if(buf[0]===80&&buf[1]===75&&buf[2]===3&&buf[3]===4&&buf[30]===77&&buf[31]===69&&buf[32]===84&&buf[33]===65&&buf[34]===45&&buf[35]===73&&buf[36]===78&&buf[37]===70&&buf[38]===47&&buf[39]===109&&buf[40]===111&&buf[41]===122&&buf[42]===105&&buf[43]===108&&buf[44]===108&&buf[45]===97&&buf[46]===46&&buf[47]===114&&buf[48]===115&&buf[49]===97){return{ext:"xpi",mime:"application/x-xpinstall"}}if(buf[0]===80&&buf[1]===75&&(buf[2]===3||buf[2]===5||buf[2]===7)&&(buf[3]===4||buf[3]===6||buf[3]===8)){return{ext:"zip",mime:"application/zip"}}if(buf[257]===117&&buf[258]===115&&buf[259]===116&&buf[260]===97&&buf[261]===114){return{ext:"tar",mime:"application/x-tar"}}if(buf[0]===82&&buf[1]===97&&buf[2]===114&&buf[3]===33&&buf[4]===26&&buf[5]===7&&(buf[6]===0||buf[6]===1)){return{ext:"rar",mime:"application/x-rar-compressed"}}if(buf[0]===31&&buf[1]===139&&buf[2]===8){return{ext:"gz",mime:"application/gzip"}}if(buf[0]===66&&buf[1]===90&&buf[2]===104){return{ext:"bz2",mime:"application/x-bzip2"}}if(buf[0]===55&&buf[1]===122&&buf[2]===188&&buf[3]===175&&buf[4]===39&&buf[5]===28){return{ext:"7z",mime:"application/x-7z-compressed"}}if(buf[0]===120&&buf[1]===1){return{ext:"dmg",mime:"application/x-apple-diskimage"}}if(buf[0]===0&&buf[1]===0&&buf[2]===0&&(buf[3]===24||buf[3]===32)&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112||buf[0]===51&&buf[1]===103&&buf[2]===112&&buf[3]===53||buf[0]===0&&buf[1]===0&&buf[2]===0&&buf[3]===28&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112&&buf[8]===109&&buf[9]===112&&buf[10]===52&&buf[11]===50&&buf[16]===109&&buf[17]===112&&buf[18]===52&&buf[19]===49&&buf[20]===109&&buf[21]===112&&buf[22]===52&&buf[23]===50&&buf[24]===105&&buf[25]===115&&buf[26]===111&&buf[27]===109||buf[0]===0&&buf[1]===0&&buf[2]===0&&buf[3]===28&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112&&buf[8]===105&&buf[9]===115&&buf[10]===111&&buf[11]===109||buf[0]===0&&buf[1]===0&&buf[2]===0&&buf[3]===28&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112&&buf[8]===109&&buf[9]===112&&buf[10]===52&&buf[11]===50&&buf[12]===0&&buf[13]===0&&buf[14]===0&&buf[15]===0){return{ext:"mp4",mime:"video/mp4"}}if(buf[0]===0&&buf[1]===0&&buf[2]===0&&buf[3]===28&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112&&buf[8]===77&&buf[9]===52&&buf[10]===86){return{ext:"m4v",mime:"video/x-m4v"}}if(buf[0]===77&&buf[1]===84&&buf[2]===104&&buf[3]===100){return{ext:"mid",mime:"audio/midi"}}if(buf[31]===109&&buf[32]===97&&buf[33]===116&&buf[34]===114&&buf[35]===111&&buf[36]===115&&buf[37]===107&&buf[38]===97){return{ext:"mkv",mime:"video/x-matroska"}}if(buf[0]===26&&buf[1]===69&&buf[2]===223&&buf[3]===163){return{ext:"webm",mime:"video/webm"}}if(buf[0]===0&&buf[1]===0&&buf[2]===0&&buf[3]===20&&buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112){return{ext:"mov",mime:"video/quicktime"}}if(buf[0]===82&&buf[1]===73&&buf[2]===70&&buf[3]===70&&buf[8]===65&&buf[9]===86&&buf[10]===73){return{ext:"avi",mime:"video/x-msvideo"}}if(buf[0]===48&&buf[1]===38&&buf[2]===178&&buf[3]===117&&buf[4]===142&&buf[5]===102&&buf[6]===207&&buf[7]===17&&buf[8]===166&&buf[9]===217){return{ext:"wmv",mime:"video/x-ms-wmv"}}if(buf[0]===0&&buf[1]===0&&buf[2]===1&&buf[3].toString(16)[0]==="b"){return{ext:"mpg",mime:"video/mpeg"}}if(buf[0]===73&&buf[1]===68&&buf[2]===51||buf[0]===255&&buf[1]===251){return{ext:"mp3",mime:"audio/mpeg"}}if(buf[4]===102&&buf[5]===116&&buf[6]===121&&buf[7]===112&&buf[8]===77&&buf[9]===52&&buf[10]===65||buf[0]===77&&buf[1]===52&&buf[2]===65&&buf[3]===32){return{ext:"m4a",mime:"audio/m4a"}}if(buf[28]===79&&buf[29]===112&&buf[30]===117&&buf[31]===115&&buf[32]===72&&buf[33]===101&&buf[34]===97&&buf[35]===100){return{ext:"opus",mime:"audio/opus"}}if(buf[0]===79&&buf[1]===103&&buf[2]===103&&buf[3]===83){return{ext:"ogg",mime:"audio/ogg"}}if(buf[0]===102&&buf[1]===76&&buf[2]===97&&buf[3]===67){return{ext:"flac",mime:"audio/x-flac"}}if(buf[0]===82&&buf[1]===73&&buf[2]===70&&buf[3]===70&&buf[8]===87&&buf[9]===65&&buf[10]===86&&buf[11]===69){return{ext:"wav",mime:"audio/x-wav"}}if(buf[0]===35&&buf[1]===33&&buf[2]===65&&buf[3]===77&&buf[4]===82&&buf[5]===10){return{ext:"amr",mime:"audio/amr"}}if(buf[0]===37&&buf[1]===80&&buf[2]===68&&buf[3]===70){return{ext:"pdf",mime:"application/pdf"}}if(buf[0]===77&&buf[1]===90){return{ext:"exe",mime:"application/x-msdownload"}}if((buf[0]===67||buf[0]===70)&&buf[1]===87&&buf[2]===83){return{ext:"swf",mime:"application/x-shockwave-flash"}}if(buf[0]===123&&buf[1]===92&&buf[2]===114&&buf[3]===116&&buf[4]===102){return{ext:"rtf",mime:"application/rtf"}}if(buf[0]===119&&buf[1]===79&&buf[2]===70&&buf[3]===70&&(buf[4]===0&&buf[5]===1&&buf[6]===0&&buf[7]===0||buf[4]===79&&buf[5]===84&&buf[6]===84&&buf[7]===79)){return{ext:"woff",mime:"application/font-woff"}}if(buf[0]===119&&buf[1]===79&&buf[2]===70&&buf[3]===50&&(buf[4]===0&&buf[5]===1&&buf[6]===0&&buf[7]===0||buf[4]===79&&buf[5]===84&&buf[6]===84&&buf[7]===79)){return{ext:"woff2",mime:"application/font-woff"}}if(buf[34]===76&&buf[35]===80&&(buf[8]===0&&buf[9]===0&&buf[10]===1||buf[8]===1&&buf[9]===0&&buf[10]===2||buf[8]===2&&buf[9]===0&&buf[10]===2)){return{ext:"eot",mime:"application/octet-stream"}}if(buf[0]===0&&buf[1]===1&&buf[2]===0&&buf[3]===0&&buf[4]===0){return{ext:"ttf",mime:"application/font-sfnt"}}if(buf[0]===79&&buf[1]===84&&buf[2]===84&&buf[3]===79&&buf[4]===0){return{ext:"otf",mime:"application/font-sfnt"}}if(buf[0]===0&&buf[1]===0&&buf[2]===1&&buf[3]===0){return{ext:"ico",mime:"image/x-icon"}}if(buf[0]===70&&buf[1]===76&&buf[2]===86&&buf[3]===1){return{ext:"flv",mime:"video/x-flv"}}if(buf[0]===37&&buf[1]===33){return{ext:"ps",mime:"application/postscript"}}if(buf[0]===253&&buf[1]===55&&buf[2]===122&&buf[3]===88&&buf[4]===90&&buf[5]===0){return{ext:"xz",mime:"application/x-xz"}}if(buf[0]===83&&buf[1]===81&&buf[2]===76&&buf[3]===105){return{ext:"sqlite",mime:"application/x-sqlite3"}}if(buf[0]===78&&buf[1]===69&&buf[2]===83&&buf[3]===26){return{ext:"nes",mime:"application/x-nintendo-nes-rom"}}if(buf[0]===67&&buf[1]===114&&buf[2]===50&&buf[3]===52){return{ext:"crx",mime:"application/x-google-chrome-extension"}}if(buf[0]===77&&buf[1]===83&&buf[2]===67&&buf[3]===70||buf[0]===73&&buf[1]===83&&buf[2]===99&&buf[3]===40){return{ext:"cab",mime:"application/vnd.ms-cab-compressed"}}if(buf[0]===33&&buf[1]===60&&buf[2]===97&&buf[3]===114&&buf[4]===99&&buf[5]===104&&buf[6]===62&&buf[7]===10&&buf[8]===100&&buf[9]===101&&buf[10]===98&&buf[11]===105&&buf[12]===97&&buf[13]===110&&buf[14]===45&&buf[15]===98&&buf[16]===105&&buf[17]===110&&buf[18]===97&&buf[19]===114&&buf[20]===121){return{ext:"deb",mime:"application/x-deb"}}if(buf[0]===33&&buf[1]===60&&buf[2]===97&&buf[3]===114&&buf[4]===99&&buf[5]===104&&buf[6]===62){return{ext:"ar",mime:"application/x-unix-archive"}}if(buf[0]===237&&buf[1]===171&&buf[2]===238&&buf[3]===219){return{ext:"rpm",mime:"application/x-rpm"}}if(buf[0]===31&&buf[1]===160||buf[0]===31&&buf[1]===157){return{ext:"Z",mime:"application/x-compress"}}if(buf[0]===76&&buf[1]===90&&buf[2]===73&&buf[3]===80){return{ext:"lz",mime:"application/x-lzip"}}if(buf[0]===208&&buf[1]===207&&buf[2]===17&&buf[3]===224&&buf[4]===161&&buf[5]===177&&buf[6]===26&&buf[7]===225){return{ext:"msi",mime:"application/x-msi"}}return null}},{}],"/data/github/geopackage-node/node_modules/leaflet/dist/leaflet-src.js":[function(require,module,exports){(function(window,document,undefined){var oldL=window.L,L={};L.version="0.7.7";if(typeof module==="object"&&typeof module.exports==="object"){module.exports=L}else if(typeof define==="function"&&define.amd){define(L)}L.noConflict=function(){window.L=oldL;return this};window.L=L;L.Util={extend:function(dest){var sources=Array.prototype.slice.call(arguments,1),i,j,len,src;for(j=0,len=sources.length;j2?Array.prototype.slice.call(arguments,2):null;return function(){return fn.apply(obj,args||arguments)}},stamp:function(){var lastId=0,key="_leaflet_id";return function(obj){obj[key]=obj[key]||++lastId;return obj[key]}}(),invokeEach:function(obj,method,context){var i,args;if(typeof obj==="object"){args=Array.prototype.slice.call(arguments,3);for(i in obj){method.apply(context,[i,obj[i]].concat(args))}return true}return false},limitExecByInterval:function(fn,time,context){var lock,execOnUnlock;return function wrapperFn(){var args=arguments;if(lock){execOnUnlock=true;return}lock=true;setTimeout(function(){lock=false;if(execOnUnlock){wrapperFn.apply(context,args);execOnUnlock=false}},time);fn.apply(context,args)}},falseFn:function(){return false},formatNum:function(num,digits){var pow=Math.pow(10,digits||5);return Math.round(num*pow)/pow},trim:function(str){return str.trim?str.trim():str.replace(/^\s+|\s+$/g,"")},splitWords:function(str){return L.Util.trim(str).split(/\s+/)},setOptions:function(obj,options){obj.options=L.extend({},obj.options,options);return obj.options},getParamString:function(obj,existingUrl,uppercase){var params=[];for(var i in obj){params.push(encodeURIComponent(uppercase?i.toUpperCase():i)+"="+encodeURIComponent(obj[i]))}return(!existingUrl||existingUrl.indexOf("?")===-1?"?":"&")+params.join("&")},template:function(str,data){return str.replace(/\{ *([\w_]+) *\}/g,function(str,key){var value=data[key];if(value===undefined){throw new Error("No value provided for variable "+str)}else if(typeof value==="function"){value=value(data)}return value})},isArray:Array.isArray||function(obj){return Object.prototype.toString.call(obj)==="[object Array]"},emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="};(function(){function getPrefixed(name){var i,fn,prefixes=["webkit","moz","o","ms"];for(i=0;i0||type+"_idx"in events&&events[type+"_idx_len"]>0)},removeEventListener:function(types,fn,context){if(!this[eventsKey]){return this}if(!types){return this.clearAllEventListeners()}if(L.Util.invokeEach(types,this.removeEventListener,this,fn,context)){return this}var events=this[eventsKey],contextId=context&&context!==this&&L.stamp(context),i,len,type,listeners,j,indexKey,indexLenKey,typeIndex,removed;types=L.Util.splitWords(types);for(i=0,len=types.length;i=0;j--){if(listeners[j].action===fn&&(!context||listeners[j].context===context)){removed=listeners.splice(j,1);removed[0].action=L.Util.falseFn}}if(context&&typeIndex&&listeners.length===0){delete typeIndex[contextId];events[indexLenKey]--}}}}return this},clearAllEventListeners:function(){delete this[eventsKey];return this},fireEvent:function(type,data){if(!this.hasEventListeners(type)){return this}var event=L.Util.extend({},data,{type:type,target:this});var events=this[eventsKey],listeners,i,len,typeIndex,contextId;if(events[type]){listeners=events[type].slice();for(i=0,len=listeners.length;i1||"matchMedia"in window&&window.matchMedia("(min-resolution:144dpi)")&&window.matchMedia("(min-resolution:144dpi)").matches,doc=document.documentElement,ie3d=ie&&"transition"in doc.style,webkit3d="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!android23,gecko3d="MozPerspective"in doc.style,opera3d="OTransition"in doc.style,any3d=!window.L_DISABLE_3D&&(ie3d||webkit3d||gecko3d||opera3d)&&!phantomjs;var touch=!window.L_NO_TOUCH&&!phantomjs&&(pointer||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch);L.Browser={ie:ie,ielt9:ielt9,webkit:webkit,gecko:gecko&&!webkit&&!window.opera&&!ie,android:android,android23:android23,chrome:chrome,ie3d:ie3d,webkit3d:webkit3d,gecko3d:gecko3d,opera3d:opera3d,any3d:any3d,mobile:mobile,mobileWebkit:mobile&&webkit,mobileWebkit3d:mobile&&webkit3d,mobileOpera:mobile&&window.opera,touch:touch,msPointer:msPointer,pointer:pointer,retina:retina}})();L.Point=function(x,y,round){this.x=round?Math.round(x):x;this.y=round?Math.round(y):y};L.Point.prototype={clone:function(){return new L.Point(this.x,this.y)},add:function(point){return this.clone()._add(L.point(point))},_add:function(point){this.x+=point.x;this.y+=point.y;return this},subtract:function(point){return this.clone()._subtract(L.point(point))},_subtract:function(point){this.x-=point.x;this.y-=point.y;return this},divideBy:function(num){return this.clone()._divideBy(num)},_divideBy:function(num){this.x/=num;this.y/=num;return this},multiplyBy:function(num){return this.clone()._multiplyBy(num)},_multiplyBy:function(num){this.x*=num;this.y*=num;return this},round:function(){return this.clone()._round()},_round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this},floor:function(){return this.clone()._floor()},_floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this},distanceTo:function(point){point=L.point(point);var x=point.x-this.x,y=point.y-this.y;return Math.sqrt(x*x+y*y)},equals:function(point){point=L.point(point);return point.x===this.x&&point.y===this.y},contains:function(point){point=L.point(point);return Math.abs(point.x)<=Math.abs(this.x)&&Math.abs(point.y)<=Math.abs(this.y)},toString:function(){return"Point("+L.Util.formatNum(this.x)+", "+L.Util.formatNum(this.y)+")"}};L.point=function(x,y,round){if(x instanceof L.Point){return x}if(L.Util.isArray(x)){return new L.Point(x[0],x[1])}if(x===undefined||x===null){return x}return new L.Point(x,y,round)};L.Bounds=function(a,b){if(!a){return}var points=b?[a,b]:a;for(var i=0,len=points.length;i=this.min.x&&max.x<=this.max.x&&min.y>=this.min.y&&max.y<=this.max.y},intersects:function(bounds){bounds=L.bounds(bounds);var min=this.min,max=this.max,min2=bounds.min,max2=bounds.max,xIntersects=max2.x>=min.x&&min2.x<=max.x,yIntersects=max2.y>=min.y&&min2.y<=max.y;return xIntersects&&yIntersects},isValid:function(){return!!(this.min&&this.max)}};L.bounds=function(a,b){if(!a||a instanceof L.Bounds){return a}return new L.Bounds(a,b)};L.Transformation=function(a,b,c,d){this._a=a;this._b=b;this._c=c;this._d=d};L.Transformation.prototype={transform:function(point,scale){return this._transform(point.clone(),scale)},_transform:function(point,scale){scale=scale||1;point.x=scale*(this._a*point.x+this._b);point.y=scale*(this._c*point.y+this._d);return point},untransform:function(point,scale){scale=scale||1;return new L.Point((point.x/scale-this._b)/this._a,(point.y/scale-this._d)/this._c)}};L.DomUtil={get:function(id){return typeof id==="string"?document.getElementById(id):id},getStyle:function(el,style){var value=el.style[style];if(!value&&el.currentStyle){value=el.currentStyle[style]}if((!value||value==="auto")&&document.defaultView){var css=document.defaultView.getComputedStyle(el,null);value=css?css[style]:null}return value==="auto"?null:value},getViewportOffset:function(element){var top=0,left=0,el=element,docBody=document.body,docEl=document.documentElement,pos;do{top+=el.offsetTop||0;left+=el.offsetLeft||0;top+=parseInt(L.DomUtil.getStyle(el,"borderTopWidth"),10)||0;left+=parseInt(L.DomUtil.getStyle(el,"borderLeftWidth"),10)||0;pos=L.DomUtil.getStyle(el,"position");if(el.offsetParent===docBody&&pos==="absolute"){break}if(pos==="fixed"){top+=docBody.scrollTop||docEl.scrollTop||0;left+=docBody.scrollLeft||docEl.scrollLeft||0;break}if(pos==="relative"&&!el.offsetLeft){var width=L.DomUtil.getStyle(el,"width"),maxWidth=L.DomUtil.getStyle(el,"max-width"),r=el.getBoundingClientRect();if(width!=="none"||maxWidth!=="none"){left+=r.left+el.clientLeft}top+=r.top+(docBody.scrollTop||docEl.scrollTop||0);break}el=el.offsetParent}while(el);el=element;do{if(el===docBody){break}top-=el.scrollTop||0;left-=el.scrollLeft||0;el=el.parentNode}while(el);return new L.Point(left,top)},documentIsLtr:function(){if(!L.DomUtil._docIsLtrCached){L.DomUtil._docIsLtrCached=true;L.DomUtil._docIsLtr=L.DomUtil.getStyle(document.body,"direction")==="ltr"}return L.DomUtil._docIsLtr},create:function(tagName,className,container){var el=document.createElement(tagName);el.className=className;if(container){container.appendChild(el)}return el},hasClass:function(el,name){if(el.classList!==undefined){return el.classList.contains(name)}var className=L.DomUtil._getClass(el);return className.length>0&&new RegExp("(^|\\s)"+name+"(\\s|$)").test(className)},addClass:function(el,name){if(el.classList!==undefined){var classes=L.Util.splitWords(name);for(var i=0,len=classes.length;i=sw.lat&&ne2.lat<=ne.lat&&sw2.lng>=sw.lng&&ne2.lng<=ne.lng},intersects:function(bounds){bounds=L.latLngBounds(bounds);var sw=this._southWest,ne=this._northEast,sw2=bounds.getSouthWest(),ne2=bounds.getNorthEast(),latIntersects=ne2.lat>=sw.lat&&sw2.lat<=ne.lat,lngIntersects=ne2.lng>=sw.lng&&sw2.lng<=ne.lng;return latIntersects&&lngIntersects},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(bounds){if(!bounds){return false}bounds=L.latLngBounds(bounds);return this._southWest.equals(bounds.getSouthWest())&&this._northEast.equals(bounds.getNorthEast())},isValid:function(){return!!(this._southWest&&this._northEast)}};L.latLngBounds=function(a,b){if(!a||a instanceof L.LatLngBounds){return a}return new L.LatLngBounds(a,b)};L.Projection={};L.Projection.SphericalMercator={MAX_LATITUDE:85.0511287798,project:function(latlng){var d=L.LatLng.DEG_TO_RAD,max=this.MAX_LATITUDE,lat=Math.max(Math.min(max,latlng.lat),-max),x=latlng.lng*d,y=lat*d;y=Math.log(Math.tan(Math.PI/4+y/2));return new L.Point(x,y)},unproject:function(point){var d=L.LatLng.RAD_TO_DEG,lng=point.x*d,lat=(2*Math.atan(Math.exp(point.y))-Math.PI/2)*d;return new L.LatLng(lat,lng)}};L.Projection.LonLat={project:function(latlng){return new L.Point(latlng.lng,latlng.lat)},unproject:function(point){return new L.LatLng(point.y,point.x)}};L.CRS={latLngToPoint:function(latlng,zoom){var projectedPoint=this.projection.project(latlng),scale=this.scale(zoom);return this.transformation._transform(projectedPoint,scale)},pointToLatLng:function(point,zoom){var scale=this.scale(zoom),untransformedPoint=this.transformation.untransform(point,scale);return this.projection.unproject(untransformedPoint)},project:function(latlng){return this.projection.project(latlng)},scale:function(zoom){return 256*Math.pow(2,zoom)},getSize:function(zoom){var s=this.scale(zoom);return L.point(s,s)}};L.CRS.Simple=L.extend({},L.CRS,{projection:L.Projection.LonLat,transformation:new L.Transformation(1,0,-1,0),scale:function(zoom){return Math.pow(2,zoom)}});L.CRS.EPSG3857=L.extend({},L.CRS,{code:"EPSG:3857",projection:L.Projection.SphericalMercator,transformation:new L.Transformation(.5/Math.PI,.5,-.5/Math.PI,.5),project:function(latlng){var projectedPoint=this.projection.project(latlng),earthRadius=6378137;return projectedPoint.multiplyBy(earthRadius)}});L.CRS.EPSG900913=L.extend({},L.CRS.EPSG3857,{code:"EPSG:900913"});L.CRS.EPSG4326=L.extend({},L.CRS,{code:"EPSG:4326",projection:L.Projection.LonLat,transformation:new L.Transformation(1/360,.5,-1/360,.5)});L.Map=L.Class.extend({includes:L.Mixin.Events,options:{crs:L.CRS.EPSG3857,fadeAnimation:L.DomUtil.TRANSITION&&!L.Browser.android23,trackResize:true,markerZoomAnimation:L.DomUtil.TRANSITION&&L.Browser.any3d},initialize:function(id,options){options=L.setOptions(this,options);this._initContainer(id);this._initLayout();this._onResize=L.bind(this._onResize,this);this._initEvents();if(options.maxBounds){this.setMaxBounds(options.maxBounds)}if(options.center&&options.zoom!==undefined){this.setView(L.latLng(options.center),options.zoom,{reset:true})}this._handlers=[];this._layers={};this._zoomBoundLayers={};this._tileLayersNum=0;this.callInitHooks();this._addLayers(options.layers)},setView:function(center,zoom){zoom=zoom===undefined?this.getZoom():zoom;this._resetView(L.latLng(center),this._limitZoom(zoom));return this},setZoom:function(zoom,options){if(!this._loaded){this._zoom=this._limitZoom(zoom);return this}return this.setView(this.getCenter(),zoom,{zoom:options})},zoomIn:function(delta,options){return this.setZoom(this._zoom+(delta||1),options)},zoomOut:function(delta,options){return this.setZoom(this._zoom-(delta||1),options)},setZoomAround:function(latlng,zoom,options){var scale=this.getZoomScale(zoom),viewHalf=this.getSize().divideBy(2),containerPoint=latlng instanceof L.Point?latlng:this.latLngToContainerPoint(latlng),centerOffset=containerPoint.subtract(viewHalf).multiplyBy(1-1/scale),newCenter=this.containerPointToLatLng(viewHalf.add(centerOffset));return this.setView(newCenter,zoom,{zoom:options})},fitBounds:function(bounds,options){options=options||{};bounds=bounds.getBounds?bounds.getBounds():L.latLngBounds(bounds);var paddingTL=L.point(options.paddingTopLeft||options.padding||[0,0]),paddingBR=L.point(options.paddingBottomRight||options.padding||[0,0]),zoom=this.getBoundsZoom(bounds,false,paddingTL.add(paddingBR));zoom=options.maxZoom?Math.min(options.maxZoom,zoom):zoom;var paddingOffset=paddingBR.subtract(paddingTL).divideBy(2),swPoint=this.project(bounds.getSouthWest(),zoom),nePoint=this.project(bounds.getNorthEast(),zoom),center=this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset),zoom);return this.setView(center,zoom,options)},fitWorld:function(options){return this.fitBounds([[-90,-180],[90,180]],options)},panTo:function(center,options){return this.setView(center,this._zoom,{pan:options})},panBy:function(offset){this.fire("movestart");this._rawPanBy(L.point(offset));this.fire("move");return this.fire("moveend")},setMaxBounds:function(bounds){bounds=L.latLngBounds(bounds);this.options.maxBounds=bounds;if(!bounds){return this.off("moveend",this._panInsideMaxBounds,this)}if(this._loaded){this._panInsideMaxBounds()}return this.on("moveend",this._panInsideMaxBounds,this)},panInsideBounds:function(bounds,options){var center=this.getCenter(),newCenter=this._limitCenter(center,this._zoom,bounds);if(center.equals(newCenter)){return this}return this.panTo(newCenter,options)},addLayer:function(layer){var id=L.stamp(layer);if(this._layers[id]){return this}this._layers[id]=layer;if(layer.options&&(!isNaN(layer.options.maxZoom)||!isNaN(layer.options.minZoom))){this._zoomBoundLayers[id]=layer;this._updateZoomLevels()}if(this.options.zoomAnimation&&L.TileLayer&&layer instanceof L.TileLayer){this._tileLayersNum++;this._tileLayersToLoad++;layer.on("load",this._onTileLayerLoad,this)}if(this._loaded){this._layerAdd(layer)}return this},removeLayer:function(layer){var id=L.stamp(layer);if(!this._layers[id]){return this}if(this._loaded){layer.onRemove(this)}delete this._layers[id];if(this._loaded){this.fire("layerremove",{layer:layer})}if(this._zoomBoundLayers[id]){delete this._zoomBoundLayers[id];this._updateZoomLevels()}if(this.options.zoomAnimation&&L.TileLayer&&layer instanceof L.TileLayer){this._tileLayersNum--;this._tileLayersToLoad--;layer.off("load",this._onTileLayerLoad,this)}return this},hasLayer:function(layer){if(!layer){return false}return L.stamp(layer)in this._layers},eachLayer:function(method,context){for(var i in this._layers){method.call(context,this._layers[i])}return this},invalidateSize:function(options){if(!this._loaded){return this}options=L.extend({animate:false,pan:true},options===true?{animate:true}:options);var oldSize=this.getSize();this._sizeChanged=true;this._initialCenter=null;var newSize=this.getSize(),oldCenter=oldSize.divideBy(2).round(),newCenter=newSize.divideBy(2).round(),offset=oldCenter.subtract(newCenter);if(!offset.x&&!offset.y){return this}if(options.animate&&options.pan){this.panBy(offset)}else{if(options.pan){this._rawPanBy(offset)}this.fire("move");if(options.debounceMoveend){clearTimeout(this._sizeTimer);this._sizeTimer=setTimeout(L.bind(this.fire,this,"moveend"),200)}else{this.fire("moveend")}}return this.fire("resize",{oldSize:oldSize,newSize:newSize})},addHandler:function(name,HandlerClass){if(!HandlerClass){return this}var handler=this[name]=new HandlerClass(this);this._handlers.push(handler);if(this.options[name]){handler.enable()}return this},remove:function(){if(this._loaded){this.fire("unload")}this._initEvents("off");try{delete this._container._leaflet}catch(e){this._container._leaflet=undefined}this._clearPanes();if(this._clearControlPos){this._clearControlPos()}this._clearHandlers();return this},getCenter:function(){this._checkIfLoaded();if(this._initialCenter&&!this._moved()){return this._initialCenter}return this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var bounds=this.getPixelBounds(),sw=this.unproject(bounds.getBottomLeft()),ne=this.unproject(bounds.getTopRight());return new L.LatLngBounds(sw,ne)},getMinZoom:function(){return this.options.minZoom===undefined?this._layersMinZoom===undefined?0:this._layersMinZoom:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===undefined?this._layersMaxZoom===undefined?Infinity:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(bounds,inside,padding){bounds=L.latLngBounds(bounds);var zoom=this.getMinZoom()-(inside?1:0),maxZoom=this.getMaxZoom(),size=this.getSize(),nw=bounds.getNorthWest(),se=bounds.getSouthEast(),zoomNotFound=true,boundsSize;padding=L.point(padding||[0,0]);do{zoom++;boundsSize=this.project(se,zoom).subtract(this.project(nw,zoom)).add(padding);zoomNotFound=!inside?size.contains(boundsSize):boundsSize.x0?Math.round(left-right)/2:Math.max(0,Math.ceil(left))-Math.max(0,Math.floor(right))},_limitZoom:function(zoom){var min=this.getMinZoom(),max=this.getMaxZoom();return Math.max(min,Math.min(max,zoom))}});L.map=function(id,options){return new L.Map(id,options)};L.Projection.Mercator={MAX_LATITUDE:85.0840591556,R_MINOR:6356752.314245179,R_MAJOR:6378137,project:function(latlng){var d=L.LatLng.DEG_TO_RAD,max=this.MAX_LATITUDE,lat=Math.max(Math.min(max,latlng.lat),-max),r=this.R_MAJOR,r2=this.R_MINOR,x=latlng.lng*d*r,y=lat*d,tmp=r2/r,eccent=Math.sqrt(1-tmp*tmp),con=eccent*Math.sin(y);con=Math.pow((1-con)/(1+con),eccent*.5);var ts=Math.tan(.5*(Math.PI*.5-y))/con;y=-r*Math.log(ts);return new L.Point(x,y)},unproject:function(point){var d=L.LatLng.RAD_TO_DEG,r=this.R_MAJOR,r2=this.R_MINOR,lng=point.x*d/r,tmp=r2/r,eccent=Math.sqrt(1-tmp*tmp),ts=Math.exp(-point.y/r),phi=Math.PI/2-2*Math.atan(ts),numIter=15,tol=1e-7,i=numIter,dphi=.1,con;while(Math.abs(dphi)>tol&&--i>0){con=eccent*Math.sin(phi);dphi=Math.PI/2-2*Math.atan(ts*Math.pow((1-con)/(1+con),.5*eccent))-phi;phi+=dphi}return new L.LatLng(phi*d,lng)}};L.CRS.EPSG3395=L.extend({},L.CRS,{code:"EPSG:3395",projection:L.Projection.Mercator,transformation:function(){var m=L.Projection.Mercator,r=m.R_MAJOR,scale=.5/(Math.PI*r);return new L.Transformation(scale,.5,-scale,.5)}()});L.TileLayer=L.Class.extend({includes:L.Mixin.Events,options:{minZoom:0,maxZoom:18,tileSize:256,subdomains:"abc",errorTileUrl:"",attribution:"",zoomOffset:0,opacity:1,unloadInvisibleTiles:L.Browser.mobile,updateWhenIdle:L.Browser.mobile},initialize:function(url,options){options=L.setOptions(this,options);if(options.detectRetina&&L.Browser.retina&&options.maxZoom>0){options.tileSize=Math.floor(options.tileSize/2);options.zoomOffset++;if(options.minZoom>0){options.minZoom--}this.options.maxZoom--}if(options.bounds){options.bounds=L.latLngBounds(options.bounds)}this._url=url;var subdomains=this.options.subdomains;if(typeof subdomains==="string"){this.options.subdomains=subdomains.split("")}},onAdd:function(map){this._map=map;this._animated=map._zoomAnimated;this._initContainer();map.on({viewreset:this._reset,moveend:this._update},this);if(this._animated){map.on({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this)}if(!this.options.updateWhenIdle){this._limitedUpdate=L.Util.limitExecByInterval(this._update,150,this);map.on("move",this._limitedUpdate,this)}this._reset();this._update()},addTo:function(map){map.addLayer(this);return this},onRemove:function(map){this._container.parentNode.removeChild(this._container);map.off({viewreset:this._reset,moveend:this._update},this);if(this._animated){map.off({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this)}if(!this.options.updateWhenIdle){map.off("move",this._limitedUpdate,this)}this._container=null;this._map=null},bringToFront:function(){var pane=this._map._panes.tilePane;if(this._container){pane.appendChild(this._container);this._setAutoZIndex(pane,Math.max)}return this},bringToBack:function(){var pane=this._map._panes.tilePane;if(this._container){pane.insertBefore(this._container,pane.firstChild);this._setAutoZIndex(pane,Math.min)}return this},getAttribution:function(){return this.options.attribution},getContainer:function(){return this._container},setOpacity:function(opacity){this.options.opacity=opacity;if(this._map){this._updateOpacity()}return this},setZIndex:function(zIndex){this.options.zIndex=zIndex;this._updateZIndex();return this},setUrl:function(url,noRedraw){this._url=url;if(!noRedraw){this.redraw()}return this},redraw:function(){if(this._map){this._reset({hard:true});this._update()}return this},_updateZIndex:function(){if(this._container&&this.options.zIndex!==undefined){this._container.style.zIndex=this.options.zIndex}},_setAutoZIndex:function(pane,compare){var layers=pane.children,edgeZIndex=-compare(Infinity,-Infinity),zIndex,i,len;for(i=0,len=layers.length;izoomN){tileSize=Math.round(map.getZoomScale(zoom)/map.getZoomScale(zoomN)*tileSize)}return tileSize},_update:function(){if(!this._map){return}var map=this._map,bounds=map.getPixelBounds(),zoom=map.getZoom(),tileSize=this._getTileSize();if(zoom>this.options.maxZoom||zoom=limit.x)||tilePoint.y<0||tilePoint.y>=limit.y){return false}}if(options.bounds){var tileSize=this._getTileSize(),nwPoint=tilePoint.multiplyBy(tileSize),sePoint=nwPoint.add([tileSize,tileSize]),nw=this._map.unproject(nwPoint),se=this._map.unproject(sePoint);if(!options.continuousWorld&&!options.noWrap){nw=nw.wrap();se=se.wrap()}if(!options.bounds.intersects([nw,se])){return false}}return true},_removeOtherTiles:function(bounds){var kArr,x,y,key;for(key in this._tiles){kArr=key.split(":");x=parseInt(kArr[0],10);y=parseInt(kArr[1],10);if(xbounds.max.x||ybounds.max.y){this._removeTile(key)}}},_removeTile:function(key){var tile=this._tiles[key];this.fire("tileunload",{tile:tile,url:tile.src});if(this.options.reuseTiles){L.DomUtil.removeClass(tile,"leaflet-tile-loaded");this._unusedTiles.push(tile)}else if(tile.parentNode===this._tileContainer){this._tileContainer.removeChild(tile)}if(!L.Browser.android){tile.onload=null;tile.src=L.Util.emptyImageUrl}delete this._tiles[key]},_addTile:function(tilePoint,container){var tilePos=this._getTilePos(tilePoint);var tile=this._getTile();L.DomUtil.setPosition(tile,tilePos,L.Browser.chrome);this._tiles[tilePoint.x+":"+tilePoint.y]=tile;this._loadTile(tile,tilePoint);if(tile.parentNode!==this._tileContainer){container.appendChild(tile)}},_getZoomForUrl:function(){var options=this.options,zoom=this._map.getZoom();if(options.zoomReverse){zoom=options.maxZoom-zoom}zoom+=options.zoomOffset;return options.maxNativeZoom?Math.min(zoom,options.maxNativeZoom):zoom},_getTilePos:function(tilePoint){var origin=this._map.getPixelOrigin(),tileSize=this._getTileSize();return tilePoint.multiplyBy(tileSize).subtract(origin)},getTileUrl:function(tilePoint){return L.Util.template(this._url,L.extend({s:this._getSubdomain(tilePoint),z:tilePoint.z,x:tilePoint.x,y:tilePoint.y},this.options))},_getWrapTileNum:function(){var crs=this._map.options.crs,size=crs.getSize(this._map.getZoom());return size.divideBy(this._getTileSize())._floor()},_adjustTilePoint:function(tilePoint){var limit=this._getWrapTileNum();if(!this.options.continuousWorld&&!this.options.noWrap){tilePoint.x=(tilePoint.x%limit.x+limit.x)%limit.x}if(this.options.tms){tilePoint.y=limit.y-tilePoint.y-1}tilePoint.z=this._getZoomForUrl()},_getSubdomain:function(tilePoint){var index=Math.abs(tilePoint.x+tilePoint.y)%this.options.subdomains.length;return this.options.subdomains[index]},_getTile:function(){if(this.options.reuseTiles&&this._unusedTiles.length>0){var tile=this._unusedTiles.pop();this._resetTile(tile);return tile}return this._createTile()},_resetTile:function(){},_createTile:function(){var tile=L.DomUtil.create("img","leaflet-tile");tile.style.width=tile.style.height=this._getTileSize()+"px";tile.galleryimg="no";tile.onselectstart=tile.onmousemove=L.Util.falseFn;if(L.Browser.ielt9&&this.options.opacity!==undefined){L.DomUtil.setOpacity(tile,this.options.opacity)}if(L.Browser.mobileWebkit3d){tile.style.WebkitBackfaceVisibility="hidden"}return tile},_loadTile:function(tile,tilePoint){tile._layer=this;tile.onload=this._tileOnLoad;tile.onerror=this._tileOnError;this._adjustTilePoint(tilePoint);tile.src=this.getTileUrl(tilePoint);this.fire("tileloadstart",{tile:tile,url:tile.src})},_tileLoaded:function(){this._tilesToLoad--;if(this._animated){L.DomUtil.addClass(this._tileContainer,"leaflet-zoom-animated")}if(!this._tilesToLoad){this.fire("load");if(this._animated){clearTimeout(this._clearBgBufferTimer);this._clearBgBufferTimer=setTimeout(L.bind(this._clearBgBuffer,this),500)}}},_tileOnLoad:function(){var layer=this._layer;if(this.src!==L.Util.emptyImageUrl){L.DomUtil.addClass(this,"leaflet-tile-loaded");layer.fire("tileload",{tile:this,url:this.src})}layer._tileLoaded()},_tileOnError:function(){var layer=this._layer;layer.fire("tileerror",{tile:this,url:this.src});var newUrl=layer.options.errorTileUrl;if(newUrl){this.src=newUrl}layer._tileLoaded()}});L.tileLayer=function(url,options){return new L.TileLayer(url,options)};L.TileLayer.WMS=L.TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",version:"1.1.1",layers:"",styles:"",format:"image/jpeg",transparent:false},initialize:function(url,options){this._url=url;var wmsParams=L.extend({},this.defaultWmsParams),tileSize=options.tileSize||this.options.tileSize;if(options.detectRetina&&L.Browser.retina){wmsParams.width=wmsParams.height=tileSize*2}else{wmsParams.width=wmsParams.height=tileSize}for(var i in options){if(!this.options.hasOwnProperty(i)&&i!=="crs"){wmsParams[i]=options[i]}}this.wmsParams=wmsParams;L.setOptions(this,options)},onAdd:function(map){this._crs=this.options.crs||map.options.crs;this._wmsVersion=parseFloat(this.wmsParams.version);var projectionKey=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[projectionKey]=this._crs.code;L.TileLayer.prototype.onAdd.call(this,map)},getTileUrl:function(tilePoint){var map=this._map,tileSize=this.options.tileSize,nwPoint=tilePoint.multiplyBy(tileSize),sePoint=nwPoint.add([tileSize,tileSize]),nw=this._crs.project(map.unproject(nwPoint,tilePoint.z)),se=this._crs.project(map.unproject(sePoint,tilePoint.z)),bbox=this._wmsVersion>=1.3&&this._crs===L.CRS.EPSG4326?[se.y,nw.x,nw.y,se.x].join(","):[nw.x,se.y,se.x,nw.y].join(","),url=L.Util.template(this._url,{s:this._getSubdomain(tilePoint)});return url+L.Util.getParamString(this.wmsParams,url,true)+"&BBOX="+bbox},setParams:function(params,noRedraw){L.extend(this.wmsParams,params);if(!noRedraw){this.redraw()}return this}});L.tileLayer.wms=function(url,options){return new L.TileLayer.WMS(url,options)};L.TileLayer.Canvas=L.TileLayer.extend({options:{async:false},initialize:function(options){L.setOptions(this,options)},redraw:function(){if(this._map){this._reset({hard:true});this._update()}for(var i in this._tiles){this._redrawTile(this._tiles[i])}return this},_redrawTile:function(tile){this.drawTile(tile,tile._tilePoint,this._map._zoom)},_createTile:function(){var tile=L.DomUtil.create("canvas","leaflet-tile");tile.width=tile.height=this.options.tileSize;tile.onselectstart=tile.onmousemove=L.Util.falseFn;return tile},_loadTile:function(tile,tilePoint){tile._layer=this;tile._tilePoint=tilePoint;this._redrawTile(tile);if(!this.options.async){this.tileDrawn(tile)}},drawTile:function(){},tileDrawn:function(tile){this._tileOnLoad.call(tile)}});L.tileLayer.canvas=function(options){return new L.TileLayer.Canvas(options)};L.ImageOverlay=L.Class.extend({includes:L.Mixin.Events,options:{opacity:1},initialize:function(url,bounds,options){this._url=url;this._bounds=L.latLngBounds(bounds);L.setOptions(this,options)},onAdd:function(map){this._map=map;if(!this._image){this._initImage()}map._panes.overlayPane.appendChild(this._image);map.on("viewreset",this._reset,this);if(map.options.zoomAnimation&&L.Browser.any3d){map.on("zoomanim",this._animateZoom,this)}this._reset()},onRemove:function(map){map.getPanes().overlayPane.removeChild(this._image);map.off("viewreset",this._reset,this);if(map.options.zoomAnimation){map.off("zoomanim",this._animateZoom,this)}},addTo:function(map){map.addLayer(this);return this},setOpacity:function(opacity){this.options.opacity=opacity;this._updateOpacity();return this},bringToFront:function(){if(this._image){this._map._panes.overlayPane.appendChild(this._image)}return this},bringToBack:function(){var pane=this._map._panes.overlayPane;if(this._image){pane.insertBefore(this._image,pane.firstChild)}return this},setUrl:function(url){this._url=url;this._image.src=this._url},getAttribution:function(){return this.options.attribution},_initImage:function(){this._image=L.DomUtil.create("img","leaflet-image-layer");if(this._map.options.zoomAnimation&&L.Browser.any3d){L.DomUtil.addClass(this._image,"leaflet-zoom-animated")}else{L.DomUtil.addClass(this._image,"leaflet-zoom-hide")}this._updateOpacity();L.extend(this._image,{galleryimg:"no",onselectstart:L.Util.falseFn,onmousemove:L.Util.falseFn,onload:L.bind(this._onImageLoad,this),src:this._url})},_animateZoom:function(e){var map=this._map,image=this._image,scale=map.getZoomScale(e.zoom),nw=this._bounds.getNorthWest(),se=this._bounds.getSouthEast(),topLeft=map._latLngToNewLayerPoint(nw,e.zoom,e.center),size=map._latLngToNewLayerPoint(se,e.zoom,e.center)._subtract(topLeft),origin=topLeft._add(size._multiplyBy(1/2*(1-1/scale)));image.style[L.DomUtil.TRANSFORM]=L.DomUtil.getTranslateString(origin)+" scale("+scale+") "},_reset:function(){var image=this._image,topLeft=this._map.latLngToLayerPoint(this._bounds.getNorthWest()),size=this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(topLeft);L.DomUtil.setPosition(image,topLeft);image.style.width=size.x+"px";image.style.height=size.y+"px"},_onImageLoad:function(){this.fire("load")},_updateOpacity:function(){L.DomUtil.setOpacity(this._image,this.options.opacity)}});L.imageOverlay=function(url,bounds,options){return new L.ImageOverlay(url,bounds,options)};L.Icon=L.Class.extend({options:{className:""},initialize:function(options){L.setOptions(this,options)},createIcon:function(oldIcon){return this._createIcon("icon",oldIcon)},createShadow:function(oldIcon){return this._createIcon("shadow",oldIcon)},_createIcon:function(name,oldIcon){var src=this._getIconUrl(name);if(!src){if(name==="icon"){throw new Error("iconUrl not set in Icon options (see the docs).")}return null}var img;if(!oldIcon||oldIcon.tagName!=="IMG"){img=this._createImg(src)}else{img=this._createImg(src,oldIcon)}this._setIconStyles(img,name);return img},_setIconStyles:function(img,name){var options=this.options,size=L.point(options[name+"Size"]),anchor;if(name==="shadow"){anchor=L.point(options.shadowAnchor||options.iconAnchor)}else{anchor=L.point(options.iconAnchor)}if(!anchor&&size){anchor=size.divideBy(2,true)}img.className="leaflet-marker-"+name+" "+options.className;if(anchor){img.style.marginLeft=-anchor.x+"px";img.style.marginTop=-anchor.y+"px"}if(size){img.style.width=size.x+"px";img.style.height=size.y+"px"}},_createImg:function(src,el){el=el||document.createElement("img");el.src=src;return el},_getIconUrl:function(name){if(L.Browser.retina&&this.options[name+"RetinaUrl"]){return this.options[name+"RetinaUrl"]}return this.options[name+"Url"]}});L.icon=function(options){return new L.Icon(options)};L.Icon.Default=L.Icon.extend({options:{iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],shadowSize:[41,41]},_getIconUrl:function(name){var key=name+"Url";if(this.options[key]){return this.options[key]}if(L.Browser.retina&&name==="icon"){name+="-2x"}var path=L.Icon.Default.imagePath;if(!path){throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.")}return path+"/marker-"+name+".png"}});L.Icon.Default.imagePath=function(){var scripts=document.getElementsByTagName("script"),leafletRe=/[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;var i,len,src,matches,path;for(i=0,len=scripts.length;imaxHeight){style.height=maxHeight+"px";L.DomUtil.addClass(container,scrolledClass)}else{L.DomUtil.removeClass(container,scrolledClass)}this._containerWidth=this._container.offsetWidth},_updatePosition:function(){if(!this._map){return}var pos=this._map.latLngToLayerPoint(this._latlng),animated=this._animated,offset=L.point(this.options.offset);if(animated){L.DomUtil.setPosition(this._container,pos)}this._containerBottom=-offset.y-(animated?0:pos.y);this._containerLeft=-Math.round(this._containerWidth/2)+offset.x+(animated?0:pos.x);this._container.style.bottom=this._containerBottom+"px";this._container.style.left=this._containerLeft+"px"},_zoomAnimation:function(opt){var pos=this._map._latLngToNewLayerPoint(this._latlng,opt.zoom,opt.center);L.DomUtil.setPosition(this._container,pos)},_adjustPan:function(){if(!this.options.autoPan){return}var map=this._map,containerHeight=this._container.offsetHeight,containerWidth=this._containerWidth,layerPos=new L.Point(this._containerLeft,-containerHeight-this._containerBottom);if(this._animated){layerPos._add(L.DomUtil.getPosition(this._container))}var containerPos=map.layerPointToContainerPoint(layerPos),padding=L.point(this.options.autoPanPadding),paddingTL=L.point(this.options.autoPanPaddingTopLeft||padding),paddingBR=L.point(this.options.autoPanPaddingBottomRight||padding),size=map.getSize(),dx=0,dy=0;if(containerPos.x+containerWidth+paddingBR.x>size.x){dx=containerPos.x+containerWidth-size.x+paddingBR.x}if(containerPos.x-dx-paddingTL.x<0){dx=containerPos.x-paddingTL.x}if(containerPos.y+containerHeight+paddingBR.y>size.y){dy=containerPos.y+containerHeight-size.y+paddingBR.y}if(containerPos.y-dy-paddingTL.y<0){dy=containerPos.y-paddingTL.y}if(dx||dy){map.fire("autopanstart").panBy([dx,dy])}},_onCloseButtonClick:function(e){this._close();L.DomEvent.stop(e)}});L.popup=function(options,source){return new L.Popup(options,source)};L.Map.include({openPopup:function(popup,latlng,options){this.closePopup();if(!(popup instanceof L.Popup)){var content=popup;popup=new L.Popup(options).setLatLng(latlng).setContent(content)}popup._isOpen=true;this._popup=popup;return this.addLayer(popup)},closePopup:function(popup){if(!popup||popup===this._popup){popup=this._popup;this._popup=null}if(popup){this.removeLayer(popup);popup._isOpen=false}return this}});L.Marker.include({openPopup:function(){if(this._popup&&this._map&&!this._map.hasLayer(this._popup)){this._popup.setLatLng(this._latlng);this._map.openPopup(this._popup)}return this},closePopup:function(){if(this._popup){this._popup._close()}return this},togglePopup:function(){if(this._popup){if(this._popup._isOpen){this.closePopup()}else{this.openPopup()}}return this},bindPopup:function(content,options){var anchor=L.point(this.options.icon.options.popupAnchor||[0,0]);anchor=anchor.add(L.Popup.prototype.options.offset);if(options&&options.offset){anchor=anchor.add(options.offset)}options=L.extend({offset:anchor},options);if(!this._popupHandlersAdded){this.on("click",this.togglePopup,this).on("remove",this.closePopup,this).on("move",this._movePopup,this);this._popupHandlersAdded=true}if(content instanceof L.Popup){L.setOptions(content,options);this._popup=content;content._source=this}else{this._popup=new L.Popup(options,this).setContent(content)}return this},setPopupContent:function(content){if(this._popup){this._popup.setContent(content)}return this},unbindPopup:function(){if(this._popup){this._popup=null;this.off("click",this.togglePopup,this).off("remove",this.closePopup,this).off("move",this._movePopup,this);this._popupHandlersAdded=false}return this},getPopup:function(){return this._popup},_movePopup:function(e){this._popup.setLatLng(e.latlng)}});L.LayerGroup=L.Class.extend({initialize:function(layers){this._layers={};var i,len;if(layers){for(i=0,len=layers.length;i';var shape=div.firstChild;shape.style.behavior="url(#default#VML)";return shape&&typeof shape.adj==="object"}catch(e){return false}}();L.Path=L.Browser.svg||!L.Browser.vml?L.Path:L.Path.extend({statics:{VML:true,CLIP_PADDING:.02},_createElement:function(){try{document.namespaces.add("lvml","urn:schemas-microsoft-com:vml");return function(name){return document.createElement("')}}catch(e){return function(name){return document.createElement("<"+name+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),_initPath:function(){var container=this._container=this._createElement("shape");L.DomUtil.addClass(container,"leaflet-vml-shape"+(this.options.className?" "+this.options.className:""));if(this.options.clickable){L.DomUtil.addClass(container,"leaflet-clickable")}container.coordsize="1 1";this._path=this._createElement("path");container.appendChild(this._path);this._map._pathRoot.appendChild(container)},_initStyle:function(){this._updateStyle()},_updateStyle:function(){var stroke=this._stroke,fill=this._fill,options=this.options,container=this._container;container.stroked=options.stroke;container.filled=options.fill;if(options.stroke){if(!stroke){stroke=this._stroke=this._createElement("stroke");stroke.endcap="round";container.appendChild(stroke)}stroke.weight=options.weight+"px";stroke.color=options.color;stroke.opacity=options.opacity;if(options.dashArray){stroke.dashStyle=L.Util.isArray(options.dashArray)?options.dashArray.join(" "):options.dashArray.replace(/( *, *)/g," ")}else{stroke.dashStyle=""}if(options.lineCap){stroke.endcap=options.lineCap.replace("butt","flat")}if(options.lineJoin){stroke.joinstyle=options.lineJoin}}else if(stroke){container.removeChild(stroke);this._stroke=null}if(options.fill){if(!fill){fill=this._fill=this._createElement("fill");container.appendChild(fill)}fill.color=options.fillColor||options.color;fill.opacity=options.fillOpacity}else if(fill){container.removeChild(fill);this._fill=null}},_updatePath:function(){var style=this._container.style;style.display="none";this._path.v=this.getPathString()+" ";style.display=""}});L.Map.include(L.Browser.svg||!L.Browser.vml?{}:{_initPathRoot:function(){if(this._pathRoot){return}var root=this._pathRoot=document.createElement("div");root.className="leaflet-vml-container";this._panes.overlayPane.appendChild(root);this.on("moveend",this._updatePathViewport);this._updatePathViewport()}});L.Browser.canvas=function(){return!!document.createElement("canvas").getContext}();L.Path=L.Path.SVG&&!window.L_PREFER_CANVAS||!L.Browser.canvas?L.Path:L.Path.extend({statics:{CANVAS:true,SVG:false},redraw:function(){if(this._map){this.projectLatlngs();this._requestUpdate()}return this},setStyle:function(style){L.setOptions(this,style);if(this._map){this._updateStyle();this._requestUpdate()}return this},onRemove:function(map){map.off("viewreset",this.projectLatlngs,this).off("moveend",this._updatePath,this);if(this.options.clickable){this._map.off("click",this._onClick,this);this._map.off("mousemove",this._onMouseMove,this)}this._requestUpdate();this.fire("remove");this._map=null},_requestUpdate:function(){if(this._map&&!L.Path._updateRequest){L.Path._updateRequest=L.Util.requestAnimFrame(this._fireMapMoveEnd,this._map)}},_fireMapMoveEnd:function(){L.Path._updateRequest=null;this.fire("moveend")},_initElements:function(){this._map._initPathRoot();this._ctx=this._map._canvasCtx},_updateStyle:function(){var options=this.options;if(options.stroke){this._ctx.lineWidth=options.weight;this._ctx.strokeStyle=options.color}if(options.fill){this._ctx.fillStyle=options.fillColor||options.color}if(options.lineCap){this._ctx.lineCap=options.lineCap}if(options.lineJoin){this._ctx.lineJoin=options.lineJoin}},_drawPath:function(){var i,j,len,len2,point,drawMethod;this._ctx.beginPath();for(i=0,len=this._parts.length;imaxSqDist){index=i;maxSqDist=sqDist}}if(maxSqDist>sqTolerance){markers[index]=1;this._simplifyDPStep(points,markers,sqTolerance,first,index);this._simplifyDPStep(points,markers,sqTolerance,index,last)}},_reducePoints:function(points,sqTolerance){var reducedPoints=[points[0]];for(var i=1,prev=0,len=points.length;isqTolerance){reducedPoints.push(points[i]);prev=i}}if(prevbounds.max.x){code|=2}if(p.ybounds.max.y){code|=8}return code},_sqDist:function(p1,p2){var dx=p2.x-p1.x,dy=p2.y-p1.y;return dx*dx+dy*dy},_sqClosestPointOnSegment:function(p,p1,p2,sqDist){var x=p1.x,y=p1.y,dx=p2.x-x,dy=p2.y-y,dot=dx*dx+dy*dy,t;if(dot>0){t=((p.x-x)*dx+(p.y-y)*dy)/dot;if(t>1){x=p2.x;y=p2.y}else if(t>0){x+=dx*t;y+=dy*t}}dx=p.x-x;dy=p.y-y;return sqDist?dx*dx+dy*dy:new L.Point(x,y)}};L.Polyline=L.Path.extend({initialize:function(latlngs,options){L.Path.prototype.initialize.call(this,options);this._latlngs=this._convertLatLngs(latlngs)},options:{smoothFactor:1,noClip:false},projectLatlngs:function(){this._originalPoints=[];for(var i=0,len=this._latlngs.length;i=2&&latlngs[0].equals(latlngs[latlngs.length-1])){latlngs.pop()}},projectLatlngs:function(){L.Polyline.prototype.projectLatlngs.call(this);this._holePoints=[];if(!this._holes){return}var i,j,len,len2;for(i=0,len=this._holes.length;ivp.max.x||p.y-r>vp.max.y||p.x+rp.y!==p2.y>p.y&&p.x<(p2.x-p1.x)*(p.y-p1.y)/(p2.y-p1.y)+p1.x){inside=!inside}}}return inside}});L.Circle.include(!L.Path.CANVAS?{}:{_drawPath:function(){var p=this._point;this._ctx.beginPath();this._ctx.arc(p.x,p.y,this._radius,0,Math.PI*2,false)},_containsPoint:function(p){var center=this._point,w2=this.options.stroke?this.options.weight/2:0;return p.distanceTo(center)<=this._radius+w2}});L.CircleMarker.include(!L.Path.CANVAS?{}:{_updateStyle:function(){L.Path.prototype._updateStyle.call(this)}});L.GeoJSON=L.FeatureGroup.extend({initialize:function(geojson,options){L.setOptions(this,options);this._layers={};if(geojson){this.addData(geojson)}},addData:function(geojson){var features=L.Util.isArray(geojson)?geojson:geojson.features,i,len,feature;if(features){for(i=0,len=features.length;i=0;i--){L.DomEvent.on(el,L.Draggable.START[i],stop)}return L.DomEvent.on(el,"click",L.DomEvent._fakeStop).on(el,"dblclick",stop)},preventDefault:function(e){if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}return this},stop:function(e){return L.DomEvent.preventDefault(e).stopPropagation(e)},getMousePosition:function(e,container){if(!container){return new L.Point(e.clientX,e.clientY)}var rect=container.getBoundingClientRect();return new L.Point(e.clientX-rect.left-container.clientLeft,e.clientY-rect.top-container.clientTop)},getWheelDelta:function(e){var delta=0;if(e.wheelDelta){delta=e.wheelDelta/120}if(e.detail){delta=-e.detail/3}return delta},_skipEvents:{},_fakeStop:function(e){L.DomEvent._skipEvents[e.type]=true},_skipped:function(e){var skipped=this._skipEvents[e.type];this._skipEvents[e.type]=false;return skipped},_checkMouse:function(el,e){var related=e.relatedTarget;if(!related){return true}try{while(related&&related!==el){related=related.parentNode}}catch(err){return false}return related!==el},_getEvent:function(){var e=window.event;if(!e){var caller=arguments.callee.caller;while(caller){e=caller["arguments"][0];if(e&&window.Event===e.constructor){break}caller=caller.caller}}return e},_filterClick:function(e,handler){var timeStamp=e.timeStamp||e.originalEvent.timeStamp,elapsed=L.DomEvent._lastClick&&timeStamp-L.DomEvent._lastClick;if(elapsed&&elapsed>100&&elapsed<500||e.target._simulatedClick&&!e._simulated){L.DomEvent.stop(e);return}L.DomEvent._lastClick=timeStamp;return handler(e)}};L.DomEvent.on=L.DomEvent.addListener;L.DomEvent.off=L.DomEvent.removeListener;L.Draggable=L.Class.extend({includes:L.Mixin.Events,statics:{START:L.Browser.touch?["touchstart","mousedown"]:["mousedown"],END:{mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},MOVE:{mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"}},initialize:function(element,dragStartTarget){this._element=element;this._dragStartTarget=dragStartTarget||element},enable:function(){if(this._enabled){return}for(var i=L.Draggable.START.length-1;i>=0;i--){L.DomEvent.on(this._dragStartTarget,L.Draggable.START[i],this._onDown,this)}this._enabled=true},disable:function(){if(!this._enabled){return}for(var i=L.Draggable.START.length-1;i>=0;i--){L.DomEvent.off(this._dragStartTarget,L.Draggable.START[i],this._onDown,this)}this._enabled=false;this._moved=false},_onDown:function(e){this._moved=false;if(e.shiftKey||e.which!==1&&e.button!==1&&!e.touches){return}L.DomEvent.stopPropagation(e);if(L.Draggable._disabled){return}L.DomUtil.disableImageDrag();L.DomUtil.disableTextSelection();if(this._moving){return}var first=e.touches?e.touches[0]:e;this._startPoint=new L.Point(first.clientX,first.clientY);this._startPos=this._newPos=L.DomUtil.getPosition(this._element);L.DomEvent.on(document,L.Draggable.MOVE[e.type],this._onMove,this).on(document,L.Draggable.END[e.type],this._onUp,this)},_onMove:function(e){if(e.touches&&e.touches.length>1){this._moved=true;return}var first=e.touches&&e.touches.length===1?e.touches[0]:e,newPoint=new L.Point(first.clientX,first.clientY),offset=newPoint.subtract(this._startPoint);if(!offset.x&&!offset.y){return}if(L.Browser.touch&&Math.abs(offset.x)+Math.abs(offset.y)<3){return}L.DomEvent.preventDefault(e);if(!this._moved){this.fire("dragstart");this._moved=true;this._startPos=L.DomUtil.getPosition(this._element).subtract(offset);L.DomUtil.addClass(document.body,"leaflet-dragging");this._lastTarget=e.target||e.srcElement;L.DomUtil.addClass(this._lastTarget,"leaflet-drag-target")}this._newPos=this._startPos.add(offset);this._moving=true;L.Util.cancelAnimFrame(this._animRequest);this._animRequest=L.Util.requestAnimFrame(this._updatePosition,this,true,this._dragStartTarget)},_updatePosition:function(){this.fire("predrag");L.DomUtil.setPosition(this._element,this._newPos);this.fire("drag")},_onUp:function(){L.DomUtil.removeClass(document.body,"leaflet-dragging");if(this._lastTarget){L.DomUtil.removeClass(this._lastTarget,"leaflet-drag-target");this._lastTarget=null}for(var i in L.Draggable.MOVE){L.DomEvent.off(document,L.Draggable.MOVE[i],this._onMove).off(document,L.Draggable.END[i],this._onUp)}L.DomUtil.enableImageDrag();L.DomUtil.enableTextSelection();if(this._moved&&this._moving){L.Util.cancelAnimFrame(this._animRequest);this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})}this._moving=false}});L.Handler=L.Class.extend({initialize:function(map){this._map=map},enable:function(){if(this._enabled){return}this._enabled=true;this.addHooks()},disable:function(){if(!this._enabled){return}this._enabled=false;this.removeHooks()},enabled:function(){return!!this._enabled}});L.Map.mergeOptions({dragging:true,inertia:!L.Browser.android23,inertiaDeceleration:3400,inertiaMaxSpeed:Infinity,inertiaThreshold:L.Browser.touch?32:18,easeLinearity:.25,worldCopyJump:false});L.Map.Drag=L.Handler.extend({addHooks:function(){if(!this._draggable){var map=this._map;this._draggable=new L.Draggable(map._mapPane,map._container);this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this);if(map.options.worldCopyJump){this._draggable.on("predrag",this._onPreDrag,this);map.on("viewreset",this._onViewReset,this);map.whenReady(this._onViewReset,this)}}this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){var map=this._map;if(map._panAnim){map._panAnim.stop()}map.fire("movestart").fire("dragstart");if(map.options.inertia){this._positions=[];this._times=[]}},_onDrag:function(){if(this._map.options.inertia){var time=this._lastTime=+new Date,pos=this._lastPos=this._draggable._newPos;this._positions.push(pos);this._times.push(time);if(time-this._times[0]>200){this._positions.shift();this._times.shift()}}this._map.fire("move").fire("drag")},_onViewReset:function(){var pxCenter=this._map.getSize()._divideBy(2),pxWorldCenter=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=pxWorldCenter.subtract(pxCenter).x;this._worldWidth=this._map.project([0,180]).x},_onPreDrag:function(){var worldWidth=this._worldWidth,halfWidth=Math.round(worldWidth/2),dx=this._initialWorldOffset,x=this._draggable._newPos.x,newX1=(x-halfWidth+dx)%worldWidth+halfWidth-dx,newX2=(x+halfWidth+dx)%worldWidth-halfWidth-dx,newX=Math.abs(newX1+dx)options.inertiaThreshold||!this._positions[0];map.fire("dragend",e);if(noInertia){map.fire("moveend")}else{var direction=this._lastPos.subtract(this._positions[0]),duration=(this._lastTime+delay-this._times[0])/1e3,ease=options.easeLinearity,speedVector=direction.multiplyBy(ease/duration),speed=speedVector.distanceTo([0,0]),limitedSpeed=Math.min(options.inertiaMaxSpeed,speed),limitedSpeedVector=speedVector.multiplyBy(limitedSpeed/speed),decelerationDuration=limitedSpeed/(options.inertiaDeceleration*ease),offset=limitedSpeedVector.multiplyBy(-decelerationDuration/2).round();if(!offset.x||!offset.y){map.fire("moveend")}else{offset=map._limitOffset(offset,map.options.maxBounds);L.Util.requestAnimFrame(function(){map.panBy(offset,{duration:decelerationDuration,easeLinearity:ease,noMoveStart:true})})}}}});L.Map.addInitHook("addHandler","dragging",L.Map.Drag);L.Map.mergeOptions({doubleClickZoom:true});L.Map.DoubleClickZoom=L.Handler.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(e){var map=this._map,zoom=map.getZoom()+(e.originalEvent.shiftKey?-1:1);if(map.options.doubleClickZoom==="center"){map.setZoom(zoom)}else{map.setZoomAround(e.containerPoint,zoom)}}});L.Map.addInitHook("addHandler","doubleClickZoom",L.Map.DoubleClickZoom);L.Map.mergeOptions({scrollWheelZoom:true});L.Map.ScrollWheelZoom=L.Handler.extend({addHooks:function(){L.DomEvent.on(this._map._container,"mousewheel",this._onWheelScroll,this);L.DomEvent.on(this._map._container,"MozMousePixelScroll",L.DomEvent.preventDefault);this._delta=0},removeHooks:function(){L.DomEvent.off(this._map._container,"mousewheel",this._onWheelScroll);L.DomEvent.off(this._map._container,"MozMousePixelScroll",L.DomEvent.preventDefault)},_onWheelScroll:function(e){var delta=L.DomEvent.getWheelDelta(e);this._delta+=delta;this._lastMousePos=this._map.mouseEventToContainerPoint(e);if(!this._startTime){this._startTime=+new Date}var left=Math.max(40-(+new Date-this._startTime),0);clearTimeout(this._timer);this._timer=setTimeout(L.bind(this._performZoom,this),left);L.DomEvent.preventDefault(e);L.DomEvent.stopPropagation(e)},_performZoom:function(){var map=this._map,delta=this._delta,zoom=map.getZoom();delta=delta>0?Math.ceil(delta):Math.floor(delta);delta=Math.max(Math.min(delta,4),-4);delta=map._limitZoom(zoom+delta)-zoom;this._delta=0;this._startTime=null;if(!delta){return}if(map.options.scrollWheelZoom==="center"){map.setZoom(zoom+delta)}else{map.setZoomAround(this._lastMousePos,zoom+delta)}}});L.Map.addInitHook("addHandler","scrollWheelZoom",L.Map.ScrollWheelZoom);L.extend(L.DomEvent,{_touchstart:L.Browser.msPointer?"MSPointerDown":L.Browser.pointer?"pointerdown":"touchstart",_touchend:L.Browser.msPointer?"MSPointerUp":L.Browser.pointer?"pointerup":"touchend",addDoubleTapListener:function(obj,handler,id){var last,doubleTap=false,delay=250,touch,pre="_leaflet_",touchstart=this._touchstart,touchend=this._touchend,trackedTouches=[];function onTouchStart(e){var count;if(L.Browser.pointer){trackedTouches.push(e.pointerId);count=trackedTouches.length}else{count=e.touches.length}if(count>1){return}var now=Date.now(),delta=now-(last||now);touch=e.touches?e.touches[0]:e;doubleTap=delta>0&&delta<=delay;last=now}function onTouchEnd(e){if(L.Browser.pointer){var idx=trackedTouches.indexOf(e.pointerId);if(idx===-1){return}trackedTouches.splice(idx,1)}if(doubleTap){if(L.Browser.pointer){var newTouch={},prop;for(var i in touch){prop=touch[i];if(typeof prop==="function"){newTouch[i]=prop.bind(touch)}else{newTouch[i]=prop}}touch=newTouch}touch.type="dblclick";handler(touch);last=null}}obj[pre+touchstart+id]=onTouchStart;obj[pre+touchend+id]=onTouchEnd;var endElement=L.Browser.pointer?document.documentElement:obj;obj.addEventListener(touchstart,onTouchStart,false);endElement.addEventListener(touchend,onTouchEnd,false);if(L.Browser.pointer){endElement.addEventListener(L.DomEvent.POINTER_CANCEL,onTouchEnd,false)}return this},removeDoubleTapListener:function(obj,id){var pre="_leaflet_";obj.removeEventListener(this._touchstart,obj[pre+this._touchstart+id],false);(L.Browser.pointer?document.documentElement:obj).removeEventListener(this._touchend,obj[pre+this._touchend+id],false);if(L.Browser.pointer){document.documentElement.removeEventListener(L.DomEvent.POINTER_CANCEL,obj[pre+this._touchend+id],false)}return this}});L.extend(L.DomEvent,{POINTER_DOWN:L.Browser.msPointer?"MSPointerDown":"pointerdown",POINTER_MOVE:L.Browser.msPointer?"MSPointerMove":"pointermove",POINTER_UP:L.Browser.msPointer?"MSPointerUp":"pointerup",POINTER_CANCEL:L.Browser.msPointer?"MSPointerCancel":"pointercancel",_pointers:[],_pointerDocumentListener:false,addPointerListener:function(obj,type,handler,id){switch(type){case"touchstart":return this.addPointerListenerStart(obj,type,handler,id);case"touchend":return this.addPointerListenerEnd(obj,type,handler,id);case"touchmove":return this.addPointerListenerMove(obj,type,handler,id);default:throw"Unknown touch event type"}},addPointerListenerStart:function(obj,type,handler,id){var pre="_leaflet_",pointers=this._pointers;var cb=function(e){if(e.pointerType!=="mouse"&&e.pointerType!==e.MSPOINTER_TYPE_MOUSE){L.DomEvent.preventDefault(e)}var alreadyInArray=false;for(var i=0;i1){return}}if(!this._moved){L.DomUtil.addClass(map._mapPane,"leaflet-touching");map.fire("movestart").fire("zoomstart");this._moved=true}L.Util.cancelAnimFrame(this._animRequest);this._animRequest=L.Util.requestAnimFrame(this._updateOnMove,this,true,this._map._container);L.DomEvent.preventDefault(e)},_updateOnMove:function(){var map=this._map,origin=this._getScaleOrigin(),center=map.layerPointToLatLng(origin),zoom=map.getScaleZoom(this._scale);map._animateZoom(center,zoom,this._startCenter,this._scale,this._delta,false,true)},_onTouchEnd:function(){if(!this._moved||!this._zooming){this._zooming=false;return}var map=this._map;this._zooming=false;L.DomUtil.removeClass(map._mapPane,"leaflet-touching");L.Util.cancelAnimFrame(this._animRequest);L.DomEvent.off(document,"touchmove",this._onTouchMove).off(document,"touchend",this._onTouchEnd);var origin=this._getScaleOrigin(),center=map.layerPointToLatLng(origin),oldZoom=map.getZoom(),floatZoomDelta=map.getScaleZoom(this._scale)-oldZoom,roundZoomDelta=floatZoomDelta>0?Math.ceil(floatZoomDelta):Math.floor(floatZoomDelta),zoom=map._limitZoom(oldZoom+roundZoomDelta),scale=map.getZoomScale(zoom)/this._scale;map._animateZoom(center,zoom,origin,scale)},_getScaleOrigin:function(){var centerOffset=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(centerOffset)}});L.Map.addInitHook("addHandler","touchZoom",L.Map.TouchZoom);L.Map.mergeOptions({tap:true,tapTolerance:15});L.Map.Tap=L.Handler.extend({addHooks:function(){L.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){L.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(e){if(!e.touches){return}L.DomEvent.preventDefault(e);this._fireClick=true;if(e.touches.length>1){this._fireClick=false;clearTimeout(this._holdTimeout);return}var first=e.touches[0],el=first.target;this._startPos=this._newPos=new L.Point(first.clientX,first.clientY);if(el.tagName&&el.tagName.toLowerCase()==="a"){L.DomUtil.addClass(el,"leaflet-active")}this._holdTimeout=setTimeout(L.bind(function(){if(this._isTapValid()){this._fireClick=false;this._onUp();this._simulateEvent("contextmenu",first)}},this),1e3);L.DomEvent.on(document,"touchmove",this._onMove,this).on(document,"touchend",this._onUp,this)},_onUp:function(e){clearTimeout(this._holdTimeout);L.DomEvent.off(document,"touchmove",this._onMove,this).off(document,"touchend",this._onUp,this);if(this._fireClick&&e&&e.changedTouches){var first=e.changedTouches[0],el=first.target;if(el&&el.tagName&&el.tagName.toLowerCase()==="a"){L.DomUtil.removeClass(el,"leaflet-active")}if(this._isTapValid()){this._simulateEvent("click",first)}}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(e){var first=e.touches[0];this._newPos=new L.Point(first.clientX,first.clientY)},_simulateEvent:function(type,e){var simulatedEvent=document.createEvent("MouseEvents");simulatedEvent._simulated=true;e.target._simulatedClick=true;simulatedEvent.initMouseEvent(type,true,true,window,1,e.screenX,e.screenY,e.clientX,e.clientY,false,false,false,false,0,null);e.target.dispatchEvent(simulatedEvent)}});if(L.Browser.touch&&!L.Browser.pointer){L.Map.addInitHook("addHandler","tap",L.Map.Tap)}L.Map.mergeOptions({boxZoom:true});L.Map.BoxZoom=L.Handler.extend({initialize:function(map){this._map=map;this._container=map._container;this._pane=map._panes.overlayPane;this._moved=false},addHooks:function(){L.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){L.DomEvent.off(this._container,"mousedown",this._onMouseDown);this._moved=false},moved:function(){return this._moved},_onMouseDown:function(e){this._moved=false;if(!e.shiftKey||e.which!==1&&e.button!==1){return false}L.DomUtil.disableTextSelection();L.DomUtil.disableImageDrag();this._startLayerPoint=this._map.mouseEventToLayerPoint(e);L.DomEvent.on(document,"mousemove",this._onMouseMove,this).on(document,"mouseup",this._onMouseUp,this).on(document,"keydown",this._onKeyDown,this)},_onMouseMove:function(e){if(!this._moved){this._box=L.DomUtil.create("div","leaflet-zoom-box",this._pane);L.DomUtil.setPosition(this._box,this._startLayerPoint);this._container.style.cursor="crosshair";this._map.fire("boxzoomstart")}var startPoint=this._startLayerPoint,box=this._box,layerPoint=this._map.mouseEventToLayerPoint(e),offset=layerPoint.subtract(startPoint),newPos=new L.Point(Math.min(layerPoint.x,startPoint.x),Math.min(layerPoint.y,startPoint.y));L.DomUtil.setPosition(box,newPos);this._moved=true;box.style.width=Math.max(0,Math.abs(offset.x)-4)+"px";box.style.height=Math.max(0,Math.abs(offset.y)-4)+"px"},_finish:function(){if(this._moved){this._pane.removeChild(this._box);this._container.style.cursor=""}L.DomUtil.enableTextSelection();L.DomUtil.enableImageDrag();L.DomEvent.off(document,"mousemove",this._onMouseMove).off(document,"mouseup",this._onMouseUp).off(document,"keydown",this._onKeyDown)},_onMouseUp:function(e){this._finish();var map=this._map,layerPoint=map.mouseEventToLayerPoint(e);if(this._startLayerPoint.equals(layerPoint)){return}var bounds=new L.LatLngBounds(map.layerPointToLatLng(this._startLayerPoint),map.layerPointToLatLng(layerPoint));map.fitBounds(bounds);map.fire("boxzoomend",{boxZoomBounds:bounds})},_onKeyDown:function(e){if(e.keyCode===27){this._finish()}}});L.Map.addInitHook("addHandler","boxZoom",L.Map.BoxZoom);L.Map.mergeOptions({keyboard:true,keyboardPanOffset:80,keyboardZoomOffset:1});L.Map.Keyboard=L.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(map){this._map=map;this._setPanOffset(map.options.keyboardPanOffset);this._setZoomOffset(map.options.keyboardZoomOffset)},addHooks:function(){var container=this._map._container;if(container.tabIndex===-1){container.tabIndex="0"}L.DomEvent.on(container,"focus",this._onFocus,this).on(container,"blur",this._onBlur,this).on(container,"mousedown",this._onMouseDown,this);this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var container=this._map._container;L.DomEvent.off(container,"focus",this._onFocus,this).off(container,"blur",this._onBlur,this).off(container,"mousedown",this._onMouseDown,this);this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){if(this._focused){return}var body=document.body,docEl=document.documentElement,top=body.scrollTop||docEl.scrollTop,left=body.scrollLeft||docEl.scrollLeft;this._map._container.focus();window.scrollTo(left,top)},_onFocus:function(){this._focused=true;this._map.fire("focus")},_onBlur:function(){this._focused=false;this._map.fire("blur")},_setPanOffset:function(pan){var keys=this._panKeys={},codes=this.keyCodes,i,len;for(i=0,len=codes.left.length;iLeaflet'},initialize:function(options){L.setOptions(this,options);this._attributions={}},onAdd:function(map){this._container=L.DomUtil.create("div","leaflet-control-attribution");L.DomEvent.disableClickPropagation(this._container);for(var i in map._layers){if(map._layers[i].getAttribution){this.addAttribution(map._layers[i].getAttribution())}}map.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this);this._update();return this._container},onRemove:function(map){map.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},setPrefix:function(prefix){this.options.prefix=prefix;this._update();return this},addAttribution:function(text){if(!text){return}if(!this._attributions[text]){this._attributions[text]=0}this._attributions[text]++;this._update();return this},removeAttribution:function(text){if(!text){return}if(this._attributions[text]){this._attributions[text]--;this._update()}return this},_update:function(){if(!this._map){return}var attribs=[];for(var i in this._attributions){if(this._attributions[i]){attribs.push(i)}}var prefixAndAttribs=[];if(this.options.prefix){prefixAndAttribs.push(this.options.prefix); -}if(attribs.length){prefixAndAttribs.push(attribs.join(", "))}this._container.innerHTML=prefixAndAttribs.join(" | ")},_onLayerAdd:function(e){if(e.layer.getAttribution){this.addAttribution(e.layer.getAttribution())}},_onLayerRemove:function(e){if(e.layer.getAttribution){this.removeAttribution(e.layer.getAttribution())}}});L.Map.mergeOptions({attributionControl:true});L.Map.addInitHook(function(){if(this.options.attributionControl){this.attributionControl=(new L.Control.Attribution).addTo(this)}});L.control.attribution=function(options){return new L.Control.Attribution(options)};L.Control.Scale=L.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:true,imperial:true,updateWhenIdle:false},onAdd:function(map){this._map=map;var className="leaflet-control-scale",container=L.DomUtil.create("div",className),options=this.options;this._addScales(options,className,container);map.on(options.updateWhenIdle?"moveend":"move",this._update,this);map.whenReady(this._update,this);return container},onRemove:function(map){map.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(options,className,container){if(options.metric){this._mScale=L.DomUtil.create("div",className+"-line",container)}if(options.imperial){this._iScale=L.DomUtil.create("div",className+"-line",container)}},_update:function(){var bounds=this._map.getBounds(),centerLat=bounds.getCenter().lat,halfWorldMeters=6378137*Math.PI*Math.cos(centerLat*Math.PI/180),dist=halfWorldMeters*(bounds.getNorthEast().lng-bounds.getSouthWest().lng)/180,size=this._map.getSize(),options=this.options,maxMeters=0;if(size.x>0){maxMeters=dist*(options.maxWidth/size.x)}this._updateScales(options,maxMeters)},_updateScales:function(options,maxMeters){if(options.metric&&maxMeters){this._updateMetric(maxMeters)}if(options.imperial&&maxMeters){this._updateImperial(maxMeters)}},_updateMetric:function(maxMeters){var meters=this._getRoundNum(maxMeters);this._mScale.style.width=this._getScaleWidth(meters/maxMeters)+"px";this._mScale.innerHTML=meters<1e3?meters+" m":meters/1e3+" km"},_updateImperial:function(maxMeters){var maxFeet=maxMeters*3.2808399,scale=this._iScale,maxMiles,miles,feet;if(maxFeet>5280){maxMiles=maxFeet/5280;miles=this._getRoundNum(maxMiles);scale.style.width=this._getScaleWidth(miles/maxMiles)+"px";scale.innerHTML=miles+" mi"}else{feet=this._getRoundNum(maxFeet);scale.style.width=this._getScaleWidth(feet/maxFeet)+"px";scale.innerHTML=feet+" ft"}},_getScaleWidth:function(ratio){return Math.round(this.options.maxWidth*ratio)-10},_getRoundNum:function(num){var pow10=Math.pow(10,(Math.floor(num)+"").length-1),d=num/pow10;d=d>=10?10:d>=5?5:d>=3?3:d>=2?2:1;return pow10*d}});L.control.scale=function(options){return new L.Control.Scale(options)};L.Control.Layers=L.Control.extend({options:{collapsed:true,position:"topright",autoZIndex:true},initialize:function(baseLayers,overlays,options){L.setOptions(this,options);this._layers={};this._lastZIndex=0;this._handlingClick=false;for(var i in baseLayers){this._addLayer(baseLayers[i],i)}for(i in overlays){this._addLayer(overlays[i],i,true)}},onAdd:function(map){this._initLayout();this._update();map.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this);return this._container},onRemove:function(map){map.off("layeradd",this._onLayerChange,this).off("layerremove",this._onLayerChange,this)},addBaseLayer:function(layer,name){this._addLayer(layer,name);this._update();return this},addOverlay:function(layer,name){this._addLayer(layer,name,true);this._update();return this},removeLayer:function(layer){var id=L.stamp(layer);delete this._layers[id];this._update();return this},_initLayout:function(){var className="leaflet-control-layers",container=this._container=L.DomUtil.create("div",className);container.setAttribute("aria-haspopup",true);if(!L.Browser.touch){L.DomEvent.disableClickPropagation(container).disableScrollPropagation(container)}else{L.DomEvent.on(container,"click",L.DomEvent.stopPropagation)}var form=this._form=L.DomUtil.create("form",className+"-list");if(this.options.collapsed){if(!L.Browser.android){L.DomEvent.on(container,"mouseover",this._expand,this).on(container,"mouseout",this._collapse,this)}var link=this._layersLink=L.DomUtil.create("a",className+"-toggle",container);link.href="#";link.title="Layers";if(L.Browser.touch){L.DomEvent.on(link,"click",L.DomEvent.stop).on(link,"click",this._expand,this)}else{L.DomEvent.on(link,"focus",this._expand,this)}L.DomEvent.on(form,"click",function(){setTimeout(L.bind(this._onInputClick,this),0)},this);this._map.on("click",this._collapse,this)}else{this._expand()}this._baseLayersList=L.DomUtil.create("div",className+"-base",form);this._separator=L.DomUtil.create("div",className+"-separator",form);this._overlaysList=L.DomUtil.create("div",className+"-overlays",form);container.appendChild(form)},_addLayer:function(layer,name,overlay){var id=L.stamp(layer);this._layers[id]={layer:layer,name:name,overlay:overlay};if(this.options.autoZIndex&&layer.setZIndex){this._lastZIndex++;layer.setZIndex(this._lastZIndex)}},_update:function(){if(!this._container){return}this._baseLayersList.innerHTML="";this._overlaysList.innerHTML="";var baseLayersPresent=false,overlaysPresent=false,i,obj;for(i in this._layers){obj=this._layers[i];this._addItem(obj);overlaysPresent=overlaysPresent||obj.overlay;baseLayersPresent=baseLayersPresent||!obj.overlay}this._separator.style.display=overlaysPresent&&baseLayersPresent?"":"none"},_onLayerChange:function(e){var obj=this._layers[L.stamp(e.layer)];if(!obj){return}if(!this._handlingClick){this._update()}var type=obj.overlay?e.type==="layeradd"?"overlayadd":"overlayremove":e.type==="layeradd"?"baselayerchange":null;if(type){this._map.fire(type,obj)}},_createRadioElement:function(name,checked){var radioHtml='=0){this._onZoomTransitionEnd()}},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(center,zoom,options){if(this._animatingZoom){return true}options=options||{};if(!this._zoomAnimated||options.animate===false||this._nothingToAnimate()||Math.abs(zoom-this._zoom)>this.options.zoomAnimationThreshold){return false}var scale=this.getZoomScale(zoom),offset=this._getCenterOffset(center)._divideBy(1-1/scale),origin=this._getCenterLayerPoint()._add(offset);if(options.animate!==true&&!this.getSize().contains(offset)){return false}this.fire("movestart").fire("zoomstart");this._animateZoom(center,zoom,origin,scale,null,true);return true},_animateZoom:function(center,zoom,origin,scale,delta,backwards,forTouchZoom){if(!forTouchZoom){this._animatingZoom=true}L.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim");this._animateToCenter=center;this._animateToZoom=zoom;if(L.Draggable){L.Draggable._disabled=true}L.Util.requestAnimFrame(function(){this.fire("zoomanim",{center:center,zoom:zoom,origin:origin,scale:scale,delta:delta,backwards:backwards});setTimeout(L.bind(this._onZoomTransitionEnd,this),250)},this)},_onZoomTransitionEnd:function(){if(!this._animatingZoom){return}this._animatingZoom=false;L.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim");L.Util.requestAnimFrame(function(){this._resetView(this._animateToCenter,this._animateToZoom,true,true);if(L.Draggable){L.Draggable._disabled=false}},this)}});L.TileLayer.include({_animateZoom:function(e){if(!this._animating){this._animating=true;this._prepareBgBuffer()}var bg=this._bgBuffer,transform=L.DomUtil.TRANSFORM,initialTransform=e.delta?L.DomUtil.getTranslateString(e.delta):bg.style[transform],scaleStr=L.DomUtil.getScaleString(e.scale,e.origin);bg.style[transform]=e.backwards?scaleStr+" "+initialTransform:initialTransform+" "+scaleStr},_endZoomAnim:function(){var front=this._tileContainer,bg=this._bgBuffer;front.style.visibility="";front.parentNode.appendChild(front);L.Util.falseFn(bg.offsetWidth);var zoom=this._map.getZoom();if(zoom>this.options.maxZoom||zoom.5&&frontLoaded<.5){front.style.visibility="hidden";this._stopLoadingImages(front);return}bg.style.visibility="hidden";bg.style[L.DomUtil.TRANSFORM]="";this._tileContainer=bg;bg=this._bgBuffer=front;this._stopLoadingImages(bg);clearTimeout(this._clearBgBufferTimer)},_getLoadedTilesPercentage:function(container){var tiles=container.getElementsByTagName("img"),i,len,count=0;for(i=0,len=tiles.length;i1){x=x>1?1:-1}return Math.asin(x)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/e0fn.js":[function(require,module,exports){module.exports=function(x){return 1-.25*x*(1+x/16*(3+1.25*x))}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/e1fn.js":[function(require,module,exports){module.exports=function(x){return.375*x*(1+.25*x*(1+.46875*x))}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/e2fn.js":[function(require,module,exports){module.exports=function(x){return.05859375*x*x*(1+.75*x)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/e3fn.js":[function(require,module,exports){module.exports=function(x){return x*x*x*(35/3072)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/gN.js":[function(require,module,exports){module.exports=function(a,e,sinphi){var temp=e*sinphi;return a/Math.sqrt(1-temp*temp)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/imlfn.js":[function(require,module,exports){module.exports=function(ml,e0,e1,e2,e3){var phi;var dphi;phi=ml/e0;for(var i=0;i<15;i++){dphi=(ml-(e0*phi-e1*Math.sin(2*phi)+e2*Math.sin(4*phi)-e3*Math.sin(6*phi)))/(e0-2*e1*Math.cos(2*phi)+4*e2*Math.cos(4*phi)-6*e3*Math.cos(6*phi));phi+=dphi;if(Math.abs(dphi)<=1e-10){return phi}}return NaN}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/iqsfnz.js":[function(require,module,exports){var HALF_PI=Math.PI/2;module.exports=function(eccent,q){var temp=1-(1-eccent*eccent)/(2*eccent)*Math.log((1-eccent)/(1+eccent));if(Math.abs(Math.abs(q)-temp)<1e-6){if(q<0){return-1*HALF_PI}else{return HALF_PI}}var phi=Math.asin(.5*q);var dphi;var sin_phi;var cos_phi;var con;for(var i=0;i<30;i++){sin_phi=Math.sin(phi);cos_phi=Math.cos(phi);con=eccent*sin_phi;dphi=Math.pow(1-con*con,2)/(2*cos_phi)*(q/(1-eccent*eccent)-sin_phi/(1-con*con)+.5/eccent*Math.log((1-con)/(1+con)));phi+=dphi;if(Math.abs(dphi)<=1e-10){return phi}}return NaN}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/mlfn.js":[function(require,module,exports){module.exports=function(e0,e1,e2,e3,phi){return e0*phi-e1*Math.sin(2*phi)+e2*Math.sin(4*phi)-e3*Math.sin(6*phi)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js":[function(require,module,exports){module.exports=function(eccent,sinphi,cosphi){var con=eccent*sinphi;return cosphi/Math.sqrt(1-con*con)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/phi2z.js":[function(require,module,exports){var HALF_PI=Math.PI/2;module.exports=function(eccent,ts){var eccnth=.5*eccent;var con,dphi;var phi=HALF_PI-2*Math.atan(ts);for(var i=0;i<=15;i++){con=eccent*Math.sin(phi);dphi=HALF_PI-2*Math.atan(ts*Math.pow((1-con)/(1+con),eccnth))-phi;phi+=dphi;if(Math.abs(dphi)<=1e-10){return phi}}return-9999}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/pj_enfn.js":[function(require,module,exports){var C00=1;var C02=.25;var C04=.046875;var C06=.01953125;var C08=.01068115234375;var C22=.75;var C44=.46875;var C46=.013020833333333334;var C48=.007120768229166667;var C66=.3645833333333333;var C68=.005696614583333333;var C88=.3076171875;module.exports=function(es){var en=[];en[0]=C00-es*(C02+es*(C04+es*(C06+es*C08)));en[1]=es*(C22-es*(C04+es*(C06+es*C08)));var t=es*es;en[2]=t*(C44-es*(C46+es*C48));t*=es;en[3]=t*(C66-es*C68);en[4]=t*es*C88;return en}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/pj_inv_mlfn.js":[function(require,module,exports){var pj_mlfn=require("./pj_mlfn");var EPSLN=1e-10;var MAX_ITER=20;module.exports=function(arg,es,en){var k=1/(1-es);var phi=arg;for(var i=MAX_ITER;i;--i){var s=Math.sin(phi);var t=1-es*s*s;t=(pj_mlfn(phi,s,Math.cos(phi),en)-arg)*(t*Math.sqrt(t))*k;phi-=t;if(Math.abs(t)1e-7){con=eccent*sinphi;return(1-eccent*eccent)*(sinphi/(1-con*con)-.5/eccent*Math.log((1-con)/(1+con)))}else{return 2*sinphi}}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/sign.js":[function(require,module,exports){module.exports=function(x){return x<0?-1:1}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/srat.js":[function(require,module,exports){module.exports=function(esinp,exp){return Math.pow((1-esinp)/(1+esinp),exp)}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/toPoint.js":[function(require,module,exports){module.exports=function(array){var out={x:array[0],y:array[1]};if(array.length>2){out.z=array[2]}if(array.length>3){out.m=array[3]}return out}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/common/tsfnz.js":[function(require,module,exports){var HALF_PI=Math.PI/2;module.exports=function(eccent,phi,sinphi){var con=eccent*sinphi;var com=.5*eccent;con=Math.pow((1-con)/(1+con),com);return Math.tan(.5*(HALF_PI-phi))/con}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/constants/Datum.js":[function(require,module,exports){exports.wgs84={towgs84:"0,0,0",ellipse:"WGS84",datumName:"WGS84"};exports.ch1903={towgs84:"674.374,15.056,405.346",ellipse:"bessel",datumName:"swiss"};exports.ggrs87={towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"};exports.nad83={towgs84:"0,0,0",ellipse:"GRS80",datumName:"North_American_Datum_1983"};exports.nad27={nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"};exports.potsdam={towgs84:"606.0,23.0,413.0",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"};exports.carthage={towgs84:"-263.0,6.0,431.0",ellipse:"clark80",datumName:"Carthage 1934 Tunisia"};exports.hermannskogel={towgs84:"653.0,-212.0,449.0",ellipse:"bessel",datumName:"Hermannskogel"};exports.ire65={towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"};exports.rassadiran={towgs84:"-133.63,-157.5,-158.62",ellipse:"intl",datumName:"Rassadiran"};exports.nzgd49={towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"};exports.osgb36={towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Airy 1830"};exports.s_jtsk={towgs84:"589,76,480",ellipse:"bessel",datumName:"S-JTSK (Ferro)"};exports.beduaram={towgs84:"-106,-87,188",ellipse:"clrk80",datumName:"Beduaram"};exports.gunung_segara={towgs84:"-403,684,41",ellipse:"bessel",datumName:"Gunung Segara Jakarta"};exports.rnb72={towgs84:"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",ellipse:"intl",datumName:"Reseau National Belge 1972"}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/constants/Ellipsoid.js":[function(require,module,exports){exports.MERIT={a:6378137,rf:298.257,ellipseName:"MERIT 1983"};exports.SGS85={a:6378136,rf:298.257,ellipseName:"Soviet Geodetic System 85"};exports.GRS80={a:6378137,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"};exports.IAU76={a:6378140,rf:298.257,ellipseName:"IAU 1976"};exports.airy={a:6377563.396,b:6356256.91,ellipseName:"Airy 1830"};exports.APL4={a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"};exports.NWL9D={a:6378145,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"};exports.mod_airy={a:6377340.189,b:6356034.446,ellipseName:"Modified Airy"};exports.andrae={a:6377104.43,rf:300,ellipseName:"Andrae 1876 (Den., Iclnd.)"};exports.aust_SA={a:6378160,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"};exports.GRS67={a:6378160,rf:298.247167427,ellipseName:"GRS 67(IUGG 1967)"};exports.bessel={a:6377397.155,rf:299.1528128,ellipseName:"Bessel 1841"};exports.bess_nam={a:6377483.865,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"};exports.clrk66={a:6378206.4,b:6356583.8,ellipseName:"Clarke 1866"};exports.clrk80={a:6378249.145,rf:293.4663,ellipseName:"Clarke 1880 mod."};exports.clrk58={a:6378293.645208759,rf:294.2606763692654,ellipseName:"Clarke 1858"};exports.CPM={a:6375738.7,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"};exports.delmbr={a:6376428,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"};exports.engelis={a:6378136.05,rf:298.2566,ellipseName:"Engelis 1985"};exports.evrst30={a:6377276.345,rf:300.8017,ellipseName:"Everest 1830"};exports.evrst48={a:6377304.063,rf:300.8017,ellipseName:"Everest 1948"};exports.evrst56={a:6377301.243,rf:300.8017,ellipseName:"Everest 1956"};exports.evrst69={a:6377295.664,rf:300.8017,ellipseName:"Everest 1969"};exports.evrstSS={a:6377298.556,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"};exports.fschr60={a:6378166,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"};exports.fschr60m={a:6378155,rf:298.3,ellipseName:"Fischer 1960"};exports.fschr68={a:6378150,rf:298.3,ellipseName:"Fischer 1968"};exports.helmert={a:6378200,rf:298.3,ellipseName:"Helmert 1906"};exports.hough={a:6378270,rf:297,ellipseName:"Hough"};exports.intl={a:6378388,rf:297,ellipseName:"International 1909 (Hayford)"};exports.kaula={a:6378163,rf:298.24,ellipseName:"Kaula 1961"};exports.lerch={a:6378139,rf:298.257,ellipseName:"Lerch 1979"};exports.mprts={a:6397300,rf:191,ellipseName:"Maupertius 1738"};exports.new_intl={a:6378157.5,b:6356772.2,ellipseName:"New International 1967"};exports.plessis={a:6376523,rf:6355863,ellipseName:"Plessis 1817 (France)"};exports.krass={a:6378245,rf:298.3,ellipseName:"Krassovsky, 1942"};exports.SEasia={a:6378155,b:6356773.3205,ellipseName:"Southeast Asia"};exports.walbeck={a:6376896,b:6355834.8467,ellipseName:"Walbeck"};exports.WGS60={a:6378165,rf:298.3,ellipseName:"WGS 60"};exports.WGS66={a:6378145,rf:298.25,ellipseName:"WGS 66"};exports.WGS7={a:6378135,rf:298.26,ellipseName:"WGS 72"};exports.WGS84={a:6378137,rf:298.257223563,ellipseName:"WGS 84"};exports.sphere={a:6370997,b:6370997,ellipseName:"Normal Sphere (r=6370997)"}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/constants/PrimeMeridian.js":[function(require,module,exports){exports.greenwich=0;exports.lisbon=-9.131906111111;exports.paris=2.337229166667;exports.bogota=-74.080916666667;exports.madrid=-3.687938888889;exports.rome=12.452333333333;exports.bern=7.439583333333;exports.jakarta=106.807719444444;exports.ferro=-17.666666666667;exports.brussels=4.367975;exports.stockholm=18.058277777778;exports.athens=23.7163375;exports.oslo=10.722916666667},{}],"/data/github/geopackage-node/node_modules/proj4/lib/constants/units.js":[function(require,module,exports){exports.ft={to_meter:.3048};exports["us-ft"]={to_meter:1200/3937}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/core.js":[function(require,module,exports){var proj=require("./Proj");var transform=require("./transform");var wgs84=proj("WGS84");function transformer(from,to,coords){var transformedArray;if(Array.isArray(coords)){transformedArray=transform(from,to,coords);if(coords.length===3){return[transformedArray.x,transformedArray.y,transformedArray.z]}else{return[transformedArray.x,transformedArray.y]}}else{return transform(from,to,coords)}}function checkProj(item){if(item instanceof proj){ -return item}if(item.oProj){return item.oProj}return proj(item)}function proj4(fromProj,toProj,coord){fromProj=checkProj(fromProj);var single=false;var obj;if(typeof toProj==="undefined"){toProj=fromProj;fromProj=wgs84;single=true}else if(typeof toProj.x!=="undefined"||Array.isArray(toProj)){coord=toProj;toProj=fromProj;fromProj=wgs84;single=true}toProj=checkProj(toProj);if(coord){return transformer(fromProj,toProj,coord)}else{obj={forward:function(coords){return transformer(fromProj,toProj,coords)},inverse:function(coords){return transformer(toProj,fromProj,coords)}};if(single){obj.oProj=toProj}return obj}}module.exports=proj4},{"./Proj":"/data/github/geopackage-node/node_modules/proj4/lib/Proj.js","./transform":"/data/github/geopackage-node/node_modules/proj4/lib/transform.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/datum.js":[function(require,module,exports){var HALF_PI=Math.PI/2;var PJD_3PARAM=1;var PJD_7PARAM=2;var PJD_GRIDSHIFT=3;var PJD_WGS84=4;var PJD_NODATUM=5;var SEC_TO_RAD=484813681109536e-20;var AD_C=1.0026;var COS_67P5=.3826834323650898;var datum=function(proj){if(!(this instanceof datum)){return new datum(proj)}this.datum_type=PJD_WGS84;if(!proj){return}if(proj.datumCode&&proj.datumCode==="none"){this.datum_type=PJD_NODATUM}if(proj.datum_params){this.datum_params=proj.datum_params.map(parseFloat);if(this.datum_params[0]!==0||this.datum_params[1]!==0||this.datum_params[2]!==0){this.datum_type=PJD_3PARAM}if(this.datum_params.length>3){if(this.datum_params[3]!==0||this.datum_params[4]!==0||this.datum_params[5]!==0||this.datum_params[6]!==0){this.datum_type=PJD_7PARAM;this.datum_params[3]*=SEC_TO_RAD;this.datum_params[4]*=SEC_TO_RAD;this.datum_params[5]*=SEC_TO_RAD;this.datum_params[6]=this.datum_params[6]/1e6+1}}}this.datum_type=proj.grids?PJD_GRIDSHIFT:this.datum_type;this.a=proj.a;this.b=proj.b;this.es=proj.es;this.ep2=proj.ep2;if(this.datum_type===PJD_GRIDSHIFT){this.grids=proj.grids}};datum.prototype={compare_datums:function(dest){if(this.datum_type!==dest.datum_type){return false}else if(this.a!==dest.a||Math.abs(this.es-dest.es)>5e-11){return false}else if(this.datum_type===PJD_3PARAM){return this.datum_params[0]===dest.datum_params[0]&&this.datum_params[1]===dest.datum_params[1]&&this.datum_params[2]===dest.datum_params[2]}else if(this.datum_type===PJD_7PARAM){return this.datum_params[0]===dest.datum_params[0]&&this.datum_params[1]===dest.datum_params[1]&&this.datum_params[2]===dest.datum_params[2]&&this.datum_params[3]===dest.datum_params[3]&&this.datum_params[4]===dest.datum_params[4]&&this.datum_params[5]===dest.datum_params[5]&&this.datum_params[6]===dest.datum_params[6]}else if(this.datum_type===PJD_GRIDSHIFT||dest.datum_type===PJD_GRIDSHIFT){return this.nadgrids===dest.nadgrids}else{return true}},geodetic_to_geocentric:function(p){var Longitude=p.x;var Latitude=p.y;var Height=p.z?p.z:0;var X;var Y;var Z;var Error_Code=0;var Rn;var Sin_Lat;var Sin2_Lat;var Cos_Lat;if(Latitude<-HALF_PI&&Latitude>-1.001*HALF_PI){Latitude=-HALF_PI}else if(Latitude>HALF_PI&&Latitude<1.001*HALF_PI){Latitude=HALF_PI}else if(Latitude<-HALF_PI||Latitude>HALF_PI){return null}if(Longitude>Math.PI){Longitude-=2*Math.PI}Sin_Lat=Math.sin(Latitude);Cos_Lat=Math.cos(Latitude);Sin2_Lat=Sin_Lat*Sin_Lat;Rn=this.a/Math.sqrt(1-this.es*Sin2_Lat);X=(Rn+Height)*Cos_Lat*Math.cos(Longitude);Y=(Rn+Height)*Cos_Lat*Math.sin(Longitude);Z=(Rn*(1-this.es)+Height)*Sin_Lat;p.x=X;p.y=Y;p.z=Z;return Error_Code},geocentric_to_geodetic:function(p){var genau=1e-12;var genau2=genau*genau;var maxiter=30;var P;var RR;var CT;var ST;var RX;var RK;var RN;var CPHI0;var SPHI0;var CPHI;var SPHI;var SDPHI;var At_Pole;var iter;var X=p.x;var Y=p.y;var Z=p.z?p.z:0;var Longitude;var Latitude;var Height;At_Pole=false;P=Math.sqrt(X*X+Y*Y);RR=Math.sqrt(X*X+Y*Y+Z*Z);if(P/this.agenau2&&iter0){Longitude=HALF_PI}else if(Y<0){Longitude=-HALF_PI}else{At_Pole=true;Longitude=0;if(Z>0){Latitude=HALF_PI}else if(Z<0){Latitude=-HALF_PI}else{Latitude=HALF_PI;Height=-this.b;return}}}W2=X*X+Y*Y;W=Math.sqrt(W2);T0=Z*AD_C;S0=Math.sqrt(T0*T0+W2);Sin_B0=T0/S0;Cos_B0=W/S0;Sin3_B0=Sin_B0*Sin_B0*Sin_B0;T1=Z+this.b*this.ep2*Sin3_B0;Sum=W-this.a*this.es*Cos_B0*Cos_B0*Cos_B0;S1=Math.sqrt(T1*T1+Sum*Sum);Sin_p1=T1/S1;Cos_p1=Sum/S1;Rn=this.a/Math.sqrt(1-this.es*Sin_p1*Sin_p1);if(Cos_p1>=COS_67P5){Height=W/Cos_p1-Rn}else if(Cos_p1<=-COS_67P5){Height=W/-Cos_p1-Rn}else{Height=Z/Sin_p1+Rn*(this.es-1)}if(At_Pole===false){Latitude=Math.atan(Sin_p1/Cos_p1)}p.x=Longitude;p.y=Latitude;p.z=Height;return p},geocentric_to_wgs84:function(p){if(this.datum_type===PJD_3PARAM){p.x+=this.datum_params[0];p.y+=this.datum_params[1];p.z+=this.datum_params[2]}else if(this.datum_type===PJD_7PARAM){var Dx_BF=this.datum_params[0];var Dy_BF=this.datum_params[1];var Dz_BF=this.datum_params[2];var Rx_BF=this.datum_params[3];var Ry_BF=this.datum_params[4];var Rz_BF=this.datum_params[5];var M_BF=this.datum_params[6];var x_out=M_BF*(p.x-Rz_BF*p.y+Ry_BF*p.z)+Dx_BF;var y_out=M_BF*(Rz_BF*p.x+p.y-Rx_BF*p.z)+Dy_BF;var z_out=M_BF*(-Ry_BF*p.x+Rx_BF*p.y+p.z)+Dz_BF;p.x=x_out;p.y=y_out;p.z=z_out}},geocentric_from_wgs84:function(p){if(this.datum_type===PJD_3PARAM){p.x-=this.datum_params[0];p.y-=this.datum_params[1];p.z-=this.datum_params[2]}else if(this.datum_type===PJD_7PARAM){var Dx_BF=this.datum_params[0];var Dy_BF=this.datum_params[1];var Dz_BF=this.datum_params[2];var Rx_BF=this.datum_params[3];var Ry_BF=this.datum_params[4];var Rz_BF=this.datum_params[5];var M_BF=this.datum_params[6];var x_tmp=(p.x-Dx_BF)/M_BF;var y_tmp=(p.y-Dy_BF)/M_BF;var z_tmp=(p.z-Dz_BF)/M_BF;p.x=x_tmp+Rz_BF*y_tmp-Ry_BF*z_tmp;p.y=-Rz_BF*x_tmp+y_tmp+Rx_BF*z_tmp;p.z=Ry_BF*x_tmp-Rx_BF*y_tmp+z_tmp}}};module.exports=datum},{}],"/data/github/geopackage-node/node_modules/proj4/lib/datum_transform.js":[function(require,module,exports){var PJD_3PARAM=1;var PJD_7PARAM=2;var PJD_GRIDSHIFT=3;var PJD_NODATUM=5;var SRS_WGS84_SEMIMAJOR=6378137;var SRS_WGS84_ESQUARED=.006694379990141316;module.exports=function(source,dest,point){var wp,i,l;function checkParams(fallback){return fallback===PJD_3PARAM||fallback===PJD_7PARAM}if(source.compare_datums(dest)){return point}if(source.datum_type===PJD_NODATUM||dest.datum_type===PJD_NODATUM){return point}var src_a=source.a;var src_es=source.es;var dst_a=dest.a;var dst_es=dest.es;var fallback=source.datum_type;if(fallback===PJD_GRIDSHIFT){if(this.apply_gridshift(source,0,point)===0){source.a=SRS_WGS84_SEMIMAJOR;source.es=SRS_WGS84_ESQUARED}else{if(!source.datum_params){source.a=src_a;source.es=source.es;return point}wp=1;for(i=0,l=source.datum_params.length;i3){fallback=PJD_7PARAM}else{fallback=PJD_3PARAM}}}if(dest.datum_type===PJD_GRIDSHIFT){dest.a=SRS_WGS84_SEMIMAJOR;dest.es=SRS_WGS84_ESQUARED}if(source.es!==dest.es||source.a!==dest.a||checkParams(fallback)||checkParams(dest.datum_type)){source.geodetic_to_geocentric(point);if(checkParams(source.datum_type)){source.geocentric_to_wgs84(point)}if(checkParams(dest.datum_type)){dest.geocentric_from_wgs84(point)}dest.geocentric_to_geodetic(point)}if(dest.datum_type===PJD_GRIDSHIFT){this.apply_gridshift(dest,1,point)}source.a=src_a;source.es=src_es;dest.a=dst_a;dest.es=dst_es;return point}},{}],"/data/github/geopackage-node/node_modules/proj4/lib/defs.js":[function(require,module,exports){var globals=require("./global");var parseProj=require("./projString");var wkt=require("./wkt");function defs(name){var that=this;if(arguments.length===2){var def=arguments[1];if(typeof def==="string"){if(def.charAt(0)==="+"){defs[name]=parseProj(arguments[1])}else{defs[name]=wkt(arguments[1])}}else{defs[name]=def}}else if(arguments.length===1){if(Array.isArray(name)){return name.map(function(v){if(Array.isArray(v)){defs.apply(that,v)}else{defs(v)}})}else if(typeof name==="string"){if(name in defs){return defs[name]}}else if("EPSG"in name){defs["EPSG:"+name.EPSG]=name}else if("ESRI"in name){defs["ESRI:"+name.ESRI]=name}else if("IAU2000"in name){defs["IAU2000:"+name.IAU2000]=name}else{console.log(name)}return}}globals(defs);module.exports=defs},{"./global":"/data/github/geopackage-node/node_modules/proj4/lib/global.js","./projString":"/data/github/geopackage-node/node_modules/proj4/lib/projString.js","./wkt":"/data/github/geopackage-node/node_modules/proj4/lib/wkt.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/deriveConstants.js":[function(require,module,exports){var Datum=require("./constants/Datum");var Ellipsoid=require("./constants/Ellipsoid");var extend=require("./extend");var datum=require("./datum");var EPSLN=1e-10;var SIXTH=.16666666666666666;var RA4=.04722222222222222;var RA6=.022156084656084655;module.exports=function(json){if(json.datumCode&&json.datumCode!=="none"){var datumDef=Datum[json.datumCode];if(datumDef){json.datum_params=datumDef.towgs84?datumDef.towgs84.split(","):null;json.ellps=datumDef.ellipse;json.datumName=datumDef.datumName?datumDef.datumName:json.datumCode}}if(!json.a){var ellipse=Ellipsoid[json.ellps]?Ellipsoid[json.ellps]:Ellipsoid.WGS84;extend(json,ellipse)}if(json.rf&&!json.b){json.b=(1-1/json.rf)*json.a}if(json.rf===0||Math.abs(json.a-json.b)EPSLN){this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1)}else{this.ns0=this.con}this.c=this.ms1*this.ms1+this.ns0*this.qs1;this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0};exports.forward=function(p){var lon=p.x;var lat=p.y;this.sin_phi=Math.sin(lat);this.cos_phi=Math.cos(lat);var qs=qsfnz(this.e3,this.sin_phi,this.cos_phi);var rh1=this.a*Math.sqrt(this.c-this.ns0*qs)/this.ns0;var theta=this.ns0*adjust_lon(lon-this.long0);var x=rh1*Math.sin(theta)+this.x0;var y=this.rh-rh1*Math.cos(theta)+this.y0;p.x=x;p.y=y;return p};exports.inverse=function(p){var rh1,qs,con,theta,lon,lat;p.x-=this.x0;p.y=this.rh-p.y+this.y0;if(this.ns0>=0){rh1=Math.sqrt(p.x*p.x+p.y*p.y);con=1}else{rh1=-Math.sqrt(p.x*p.x+p.y*p.y);con=-1}theta=0;if(rh1!==0){theta=Math.atan2(con*p.x,con*p.y)}con=rh1*this.ns0/this.a;if(this.sphere){lat=Math.asin((this.c-con*con)/(2*this.ns0))}else{qs=(this.c-con*con)/this.ns0;lat=this.phi1z(this.e3,qs)}lon=adjust_lon(theta/this.ns0+this.long0);p.x=lon;p.y=lat;return p};exports.phi1z=function(eccent,qs){var sinphi,cosphi,con,com,dphi;var phi=asinz(.5*qs);if(eccent2*HALF_PI*this.a){return}z=rh/this.a;sinz=Math.sin(z);cosz=Math.cos(z);lon=this.long0;if(Math.abs(rh)<=EPSLN){lat=this.lat0}else{lat=asinz(cosz*this.sin_p12+p.y*sinz*this.cos_p12/rh);con=Math.abs(this.lat0)-HALF_PI;if(Math.abs(con)<=EPSLN){if(this.lat0>=0){lon=adjust_lon(this.long0+Math.atan2(p.x,-p.y))}else{lon=adjust_lon(this.long0-Math.atan2(-p.x,p.y))}}else{lon=adjust_lon(this.long0+Math.atan2(p.x*sinz,rh*this.cos_p12*cosz-p.y*this.sin_p12*sinz))}}p.x=lon;p.y=lat;return p}else{e0=e0fn(this.es);e1=e1fn(this.es);e2=e2fn(this.es);e3=e3fn(this.es);if(Math.abs(this.sin_p12-1)<=EPSLN){Mlp=this.a*mlfn(e0,e1,e2,e3,HALF_PI);rh=Math.sqrt(p.x*p.x+p.y*p.y);M=Mlp-rh;lat=imlfn(M/this.a,e0,e1,e2,e3);lon=adjust_lon(this.long0+Math.atan2(p.x,-1*p.y));p.x=lon;p.y=lat;return p}else if(Math.abs(this.sin_p12+1)<=EPSLN){Mlp=this.a*mlfn(e0,e1,e2,e3,HALF_PI);rh=Math.sqrt(p.x*p.x+p.y*p.y);M=rh-Mlp;lat=imlfn(M/this.a,e0,e1,e2,e3);lon=adjust_lon(this.long0+Math.atan2(p.x,p.y));p.x=lon;p.y=lat;return p}else{rh=Math.sqrt(p.x*p.x+p.y*p.y);Az=Math.atan2(p.x,p.y);N1=gN(this.a,this.e,this.sin_p12);cosAz=Math.cos(Az);tmp=this.e*this.cos_p12*cosAz;A=-tmp*tmp/(1-this.es);B=3*this.es*(1-A)*this.sin_p12*this.cos_p12*cosAz/(1-this.es);D=rh/N1;Ee=D-A*(1+A)*Math.pow(D,3)/6-B*(1+3*A)*Math.pow(D,4)/24;F=1-A*Ee*Ee/2-D*Ee*Ee*Ee/6;psi=Math.asin(this.sin_p12*Math.cos(Ee)+this.cos_p12*Math.sin(Ee)*cosAz);lon=adjust_lon(this.long0+Math.asin(Math.sin(Az)*Math.sin(Ee)/Math.cos(psi)));lat=Math.atan((1-this.es*F*this.sin_p12/Math.sin(psi))*Math.tan(psi)/(1-this.es));p.x=lon;p.y=lat;return p}}};exports.names=["Azimuthal_Equidistant","aeqd"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/asinz":"/data/github/geopackage-node/node_modules/proj4/lib/common/asinz.js","../common/e0fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e0fn.js","../common/e1fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e1fn.js","../common/e2fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e2fn.js","../common/e3fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e3fn.js","../common/gN":"/data/github/geopackage-node/node_modules/proj4/lib/common/gN.js","../common/imlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/imlfn.js","../common/mlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/mlfn.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/cass.js":[function(require,module,exports){var mlfn=require("../common/mlfn");var e0fn=require("../common/e0fn");var e1fn=require("../common/e1fn");var e2fn=require("../common/e2fn");var e3fn=require("../common/e3fn");var gN=require("../common/gN");var adjust_lon=require("../common/adjust_lon");var adjust_lat=require("../common/adjust_lat");var imlfn=require("../common/imlfn");var HALF_PI=Math.PI/2;var EPSLN=1e-10;exports.init=function(){if(!this.sphere){this.e0=e0fn(this.es);this.e1=e1fn(this.es);this.e2=e2fn(this.es);this.e3=e3fn(this.es);this.ml0=this.a*mlfn(this.e0,this.e1,this.e2,this.e3,this.lat0)}};exports.forward=function(p){var x,y;var lam=p.x;var phi=p.y;lam=adjust_lon(lam-this.long0);if(this.sphere){x=this.a*Math.asin(Math.cos(phi)*Math.sin(lam));y=this.a*(Math.atan2(Math.tan(phi),Math.cos(lam))-this.lat0)}else{var sinphi=Math.sin(phi);var cosphi=Math.cos(phi);var nl=gN(this.a,this.e,sinphi);var tl=Math.tan(phi)*Math.tan(phi);var al=lam*Math.cos(phi);var asq=al*al;var cl=this.es*cosphi*cosphi/(1-this.es);var ml=this.a*mlfn(this.e0,this.e1,this.e2,this.e3,phi);x=nl*al*(1-asq*tl*(1/6-(8-tl+8*cl)*asq/120));y=ml-this.ml0+nl*sinphi/cosphi*asq*(.5+(5-tl+6*cl)*asq/24)}p.x=x+this.x0;p.y=y+this.y0;return p};exports.inverse=function(p){p.x-=this.x0;p.y-=this.y0;var x=p.x/this.a;var y=p.y/this.a;var phi,lam;if(this.sphere){var dd=y+this.lat0;phi=Math.asin(Math.sin(dd)*Math.cos(x));lam=Math.atan2(Math.tan(x),Math.cos(dd))}else{var ml1=this.ml0/this.a+y;var phi1=imlfn(ml1,this.e0,this.e1,this.e2,this.e3);if(Math.abs(Math.abs(phi1)-HALF_PI)<=EPSLN){p.x=this.long0;p.y=HALF_PI;if(y<0){p.y*=-1}return p}var nl1=gN(this.a,this.e,Math.sin(phi1));var rl1=nl1*nl1*nl1/this.a/this.a*(1-this.es);var tl1=Math.pow(Math.tan(phi1),2);var dl=x*this.a/nl1;var dsq=dl*dl;phi=phi1-nl1*Math.tan(phi1)/rl1*dl*dl*(.5-(1+3*tl1)*dl*dl/24);lam=dl*(1-dsq*(tl1/3+(1+3*tl1)*tl1*dsq/15))/Math.cos(phi1)}p.x=adjust_lon(lam+this.long0);p.y=adjust_lat(phi);return p};exports.names=["Cassini","Cassini_Soldner","cass"]},{"../common/adjust_lat":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lat.js","../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/e0fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e0fn.js","../common/e1fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e1fn.js","../common/e2fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e2fn.js","../common/e3fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e3fn.js","../common/gN":"/data/github/geopackage-node/node_modules/proj4/lib/common/gN.js","../common/imlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/imlfn.js","../common/mlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/mlfn.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/cea.js":[function(require,module,exports){var adjust_lon=require("../common/adjust_lon");var qsfnz=require("../common/qsfnz");var msfnz=require("../common/msfnz");var iqsfnz=require("../common/iqsfnz");exports.init=function(){if(!this.sphere){this.k0=msfnz(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))}};exports.forward=function(p){var lon=p.x;var lat=p.y;var x,y;var dlon=adjust_lon(lon-this.long0);if(this.sphere){x=this.x0+this.a*dlon*Math.cos(this.lat_ts);y=this.y0+this.a*Math.sin(lat)/Math.cos(this.lat_ts)}else{var qs=qsfnz(this.e,Math.sin(lat));x=this.x0+this.a*this.k0*dlon;y=this.y0+this.a*qs*.5/this.k0}p.x=x;p.y=y;return p};exports.inverse=function(p){p.x-=this.x0;p.y-=this.y0;var lon,lat;if(this.sphere){lon=adjust_lon(this.long0+p.x/this.a/Math.cos(this.lat_ts)); -lat=Math.asin(p.y/this.a*Math.cos(this.lat_ts))}else{lat=iqsfnz(this.e,2*p.y*this.k0/this.a);lon=adjust_lon(this.long0+p.x/(this.a*this.k0))}p.x=lon;p.y=lat;return p};exports.names=["cea"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/iqsfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/iqsfnz.js","../common/msfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js","../common/qsfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/qsfnz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/eqc.js":[function(require,module,exports){var adjust_lon=require("../common/adjust_lon");var adjust_lat=require("../common/adjust_lat");exports.init=function(){this.x0=this.x0||0;this.y0=this.y0||0;this.lat0=this.lat0||0;this.long0=this.long0||0;this.lat_ts=this.lat_ts||0;this.title=this.title||"Equidistant Cylindrical (Plate Carre)";this.rc=Math.cos(this.lat_ts)};exports.forward=function(p){var lon=p.x;var lat=p.y;var dlon=adjust_lon(lon-this.long0);var dlat=adjust_lat(lat-this.lat0);p.x=this.x0+this.a*dlon*this.rc;p.y=this.y0+this.a*dlat;return p};exports.inverse=function(p){var x=p.x;var y=p.y;p.x=adjust_lon(this.long0+(x-this.x0)/(this.a*this.rc));p.y=adjust_lat(this.lat0+(y-this.y0)/this.a);return p};exports.names=["Equirectangular","Equidistant_Cylindrical","eqc"]},{"../common/adjust_lat":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lat.js","../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/eqdc.js":[function(require,module,exports){var e0fn=require("../common/e0fn");var e1fn=require("../common/e1fn");var e2fn=require("../common/e2fn");var e3fn=require("../common/e3fn");var msfnz=require("../common/msfnz");var mlfn=require("../common/mlfn");var adjust_lon=require("../common/adjust_lon");var adjust_lat=require("../common/adjust_lat");var imlfn=require("../common/imlfn");var EPSLN=1e-10;exports.init=function(){if(Math.abs(this.lat1+this.lat2)=0){rh1=Math.sqrt(p.x*p.x+p.y*p.y);con=1}else{rh1=-Math.sqrt(p.x*p.x+p.y*p.y);con=-1}var theta=0;if(rh1!==0){theta=Math.atan2(con*p.x,con*p.y)}if(this.sphere){lon=adjust_lon(this.long0+theta/this.ns);lat=adjust_lat(this.g-rh1/this.a);p.x=lon;p.y=lat;return p}else{var ml=this.g-rh1/this.a;lat=imlfn(ml,this.e0,this.e1,this.e2,this.e3);lon=adjust_lon(this.long0+theta/this.ns);p.x=lon;p.y=lat;return p}};exports.names=["Equidistant_Conic","eqdc"]},{"../common/adjust_lat":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lat.js","../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/e0fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e0fn.js","../common/e1fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e1fn.js","../common/e2fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e2fn.js","../common/e3fn":"/data/github/geopackage-node/node_modules/proj4/lib/common/e3fn.js","../common/imlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/imlfn.js","../common/mlfn":"/data/github/geopackage-node/node_modules/proj4/lib/common/mlfn.js","../common/msfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/gauss.js":[function(require,module,exports){var FORTPI=Math.PI/4;var srat=require("../common/srat");var HALF_PI=Math.PI/2;var MAX_ITER=20;exports.init=function(){var sphi=Math.sin(this.lat0);var cphi=Math.cos(this.lat0);cphi*=cphi;this.rc=Math.sqrt(1-this.es)/(1-this.es*sphi*sphi);this.C=Math.sqrt(1+this.es*cphi*cphi/(1-this.es));this.phic0=Math.asin(sphi/this.C);this.ratexp=.5*this.C*this.e;this.K=Math.tan(.5*this.phic0+FORTPI)/(Math.pow(Math.tan(.5*this.lat0+FORTPI),this.C)*srat(this.e*sphi,this.ratexp))};exports.forward=function(p){var lon=p.x;var lat=p.y;p.y=2*Math.atan(this.K*Math.pow(Math.tan(.5*lat+FORTPI),this.C)*srat(this.e*Math.sin(lat),this.ratexp))-HALF_PI;p.x=this.C*lon;return p};exports.inverse=function(p){var DEL_TOL=1e-14;var lon=p.x/this.C;var lat=p.y;var num=Math.pow(Math.tan(.5*lat+FORTPI)/this.K,1/this.C);for(var i=MAX_ITER;i>0;--i){lat=2*Math.atan(num*srat(this.e*Math.sin(p.y),-.5*this.e))-HALF_PI;if(Math.abs(lat-p.y)0||Math.abs(g)<=EPSLN){x=this.x0+this.a*ksp*cosphi*Math.sin(dlon)/g;y=this.y0+this.a*ksp*(this.cos_p14*sinphi-this.sin_p14*cosphi*coslon)/g}else{x=this.x0+this.infinity_dist*cosphi*Math.sin(dlon);y=this.y0+this.infinity_dist*(this.cos_p14*sinphi-this.sin_p14*cosphi*coslon)}p.x=x;p.y=y;return p};exports.inverse=function(p){var rh;var sinc,cosc;var c;var lon,lat;p.x=(p.x-this.x0)/this.a;p.y=(p.y-this.y0)/this.a;p.x/=this.k0;p.y/=this.k0;if(rh=Math.sqrt(p.x*p.x+p.y*p.y)){c=Math.atan2(rh,this.rc);sinc=Math.sin(c);cosc=Math.cos(c);lat=asinz(cosc*this.sin_p14+p.y*sinc*this.cos_p14/rh);lon=Math.atan2(p.x*sinc,rh*this.cos_p14*cosc-p.y*this.sin_p14*sinc);lon=adjust_lon(this.long0+lon)}else{lat=this.phic0;lon=0}p.x=lon;p.y=lat;return p};exports.names=["gnom"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/asinz":"/data/github/geopackage-node/node_modules/proj4/lib/common/asinz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/krovak.js":[function(require,module,exports){var adjust_lon=require("../common/adjust_lon");exports.init=function(){this.a=6377397.155;this.es=.006674372230614;this.e=Math.sqrt(this.es);if(!this.lat0){this.lat0=.863937979737193}if(!this.long0){this.long0=.7417649320975901-.308341501185665}if(!this.k0){this.k0=.9999}this.s45=.785398163397448;this.s90=2*this.s45;this.fi0=this.lat0;this.e2=this.es;this.e=Math.sqrt(this.e2);this.alfa=Math.sqrt(1+this.e2*Math.pow(Math.cos(this.fi0),4)/(1-this.e2));this.uq=1.04216856380474;this.u0=Math.asin(Math.sin(this.fi0)/this.alfa);this.g=Math.pow((1+this.e*Math.sin(this.fi0))/(1-this.e*Math.sin(this.fi0)),this.alfa*this.e/2);this.k=Math.tan(this.u0/2+this.s45)/Math.pow(Math.tan(this.fi0/2+this.s45),this.alfa)*this.g;this.k1=this.k0;this.n0=this.a*Math.sqrt(1-this.e2)/(1-this.e2*Math.pow(Math.sin(this.fi0),2));this.s0=1.37008346281555;this.n=Math.sin(this.s0);this.ro0=this.k1*this.n0/Math.tan(this.s0);this.ad=this.s90-this.uq};exports.forward=function(p){var gfi,u,deltav,s,d,eps,ro;var lon=p.x;var lat=p.y;var delta_lon=adjust_lon(lon-this.long0);gfi=Math.pow((1+this.e*Math.sin(lat))/(1-this.e*Math.sin(lat)),this.alfa*this.e/2);u=2*(Math.atan(this.k*Math.pow(Math.tan(lat/2+this.s45),this.alfa)/gfi)-this.s45);deltav=-delta_lon*this.alfa;s=Math.asin(Math.cos(this.ad)*Math.sin(u)+Math.sin(this.ad)*Math.cos(u)*Math.cos(deltav));d=Math.asin(Math.cos(u)*Math.sin(deltav)/Math.cos(s));eps=this.n*d;ro=this.ro0*Math.pow(Math.tan(this.s0/2+this.s45),this.n)/Math.pow(Math.tan(s/2+this.s45),this.n);p.y=ro*Math.cos(eps)/1;p.x=ro*Math.sin(eps)/1;if(!this.czech){p.y*=-1;p.x*=-1}return p};exports.inverse=function(p){var u,deltav,s,d,eps,ro,fi1;var ok;var tmp=p.x;p.x=p.y;p.y=tmp;if(!this.czech){p.y*=-1;p.x*=-1}ro=Math.sqrt(p.x*p.x+p.y*p.y);eps=Math.atan2(p.y,p.x);d=eps/Math.sin(this.s0);s=2*(Math.atan(Math.pow(this.ro0/ro,1/this.n)*Math.tan(this.s0/2+this.s45))-this.s45);u=Math.asin(Math.cos(this.ad)*Math.sin(s)-Math.sin(this.ad)*Math.cos(s)*Math.cos(d));deltav=Math.asin(Math.cos(s)*Math.sin(d)/Math.cos(u));p.x=this.long0-deltav/this.alfa;fi1=u;ok=0;var iter=0;do{p.y=2*(Math.atan(Math.pow(this.k,-1/this.alfa)*Math.pow(Math.tan(u/2+this.s45),1/this.alfa)*Math.pow((1+this.e*Math.sin(fi1))/(1-this.e*Math.sin(fi1)),this.e/2))-this.s45);if(Math.abs(fi1-p.y)<1e-10){ok=1}fi1=p.y;iter+=1}while(ok===0&&iter<15);if(iter>=15){return null}return p};exports.names=["Krovak","krovak"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/laea.js":[function(require,module,exports){var HALF_PI=Math.PI/2;var FORTPI=Math.PI/4;var EPSLN=1e-10;var qsfnz=require("../common/qsfnz");var adjust_lon=require("../common/adjust_lon");exports.S_POLE=1;exports.N_POLE=2;exports.EQUIT=3;exports.OBLIQ=4;exports.init=function(){var t=Math.abs(this.lat0);if(Math.abs(t-HALF_PI)0){var sinphi;this.qp=qsfnz(this.e,1);this.mmf=.5/(1-this.es);this.apa=this.authset(this.es);switch(this.mode){case this.N_POLE:this.dd=1;break;case this.S_POLE:this.dd=1;break;case this.EQUIT:this.rq=Math.sqrt(.5*this.qp);this.dd=1/this.rq;this.xmf=1;this.ymf=.5*this.qp;break;case this.OBLIQ:this.rq=Math.sqrt(.5*this.qp);sinphi=Math.sin(this.lat0);this.sinb1=qsfnz(this.e,sinphi)/this.qp;this.cosb1=Math.sqrt(1-this.sinb1*this.sinb1);this.dd=Math.cos(this.lat0)/(Math.sqrt(1-this.es*sinphi*sinphi)*this.rq*this.cosb1);this.ymf=(this.xmf=this.rq)/this.dd;this.xmf*=this.dd;break}}else{if(this.mode===this.OBLIQ){this.sinph0=Math.sin(this.lat0);this.cosph0=Math.cos(this.lat0)}}};exports.forward=function(p){var x,y,coslam,sinlam,sinphi,q,sinb,cosb,b,cosphi;var lam=p.x;var phi=p.y;lam=adjust_lon(lam-this.long0);if(this.sphere){sinphi=Math.sin(phi);cosphi=Math.cos(phi);coslam=Math.cos(lam);if(this.mode===this.OBLIQ||this.mode===this.EQUIT){y=this.mode===this.EQUIT?1+cosphi*coslam:1+this.sinph0*sinphi+this.cosph0*cosphi*coslam;if(y<=EPSLN){return null}y=Math.sqrt(2/y);x=y*cosphi*Math.sin(lam);y*=this.mode===this.EQUIT?sinphi:this.cosph0*sinphi-this.sinph0*cosphi*coslam}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE){coslam=-coslam}if(Math.abs(phi+this.phi0)=0){x=(b=Math.sqrt(q))*sinlam;y=coslam*(this.mode===this.S_POLE?b:-b)}else{x=y=0}break}}p.x=this.a*x+this.x0;p.y=this.a*y+this.y0;return p};exports.inverse=function(p){p.x-=this.x0;p.y-=this.y0;var x=p.x/this.a;var y=p.y/this.a;var lam,phi,cCe,sCe,q,rho,ab;if(this.sphere){var cosz=0,rh,sinz=0;rh=Math.sqrt(x*x+y*y);phi=rh*.5;if(phi>1){return null}phi=2*Math.asin(phi);if(this.mode===this.OBLIQ||this.mode===this.EQUIT){sinz=Math.sin(phi);cosz=Math.cos(phi)}switch(this.mode){case this.EQUIT:phi=Math.abs(rh)<=EPSLN?0:Math.asin(y*sinz/rh);x*=sinz;y=cosz*rh;break;case this.OBLIQ:phi=Math.abs(rh)<=EPSLN?this.phi0:Math.asin(cosz*this.sinph0+y*sinz*this.cosph0/rh);x*=sinz*this.cosph0;y=(cosz-Math.sin(phi)*this.sinph0)*rh;break;case this.N_POLE:y=-y;phi=HALF_PI-phi;break;case this.S_POLE:phi-=HALF_PI;break}lam=y===0&&(this.mode===this.EQUIT||this.mode===this.OBLIQ)?0:Math.atan2(x,y)}else{ab=0;if(this.mode===this.OBLIQ||this.mode===this.EQUIT){x/=this.dd;y*=this.dd;rho=Math.sqrt(x*x+y*y);if(rhoEPSLN){this.ns=Math.log(ms1/ms2)/Math.log(ts1/ts2)}else{this.ns=sin1}if(isNaN(this.ns)){this.ns=sin1}this.f0=ms1/(this.ns*Math.pow(ts1,this.ns));this.rh=this.a*this.f0*Math.pow(ts0,this.ns);if(!this.title){this.title="Lambert Conformal Conic"}};exports.forward=function(p){var lon=p.x;var lat=p.y;if(Math.abs(2*Math.abs(lat)-Math.PI)<=EPSLN){lat=sign(lat)*(HALF_PI-2*EPSLN)}var con=Math.abs(Math.abs(lat)-HALF_PI);var ts,rh1;if(con>EPSLN){ts=tsfnz(this.e,lat,Math.sin(lat));rh1=this.a*this.f0*Math.pow(ts,this.ns)}else{con=lat*this.ns;if(con<=0){return null}rh1=0}var theta=this.ns*adjust_lon(lon-this.long0);p.x=this.k0*(rh1*Math.sin(theta))+this.x0;p.y=this.k0*(this.rh-rh1*Math.cos(theta))+this.y0;return p};exports.inverse=function(p){var rh1,con,ts;var lat,lon;var x=(p.x-this.x0)/this.k0;var y=this.rh-(p.y-this.y0)/this.k0;if(this.ns>0){rh1=Math.sqrt(x*x+y*y);con=1}else{rh1=-Math.sqrt(x*x+y*y);con=-1}var theta=0;if(rh1!==0){theta=Math.atan2(con*x,con*y)}if(rh1!==0||this.ns>0){con=1/this.ns;ts=Math.pow(rh1/(this.a*this.f0),con);lat=phi2z(this.e,ts);if(lat===-9999){return null}}else{lat=-HALF_PI}lon=adjust_lon(theta/this.ns+this.long0);p.x=lon;p.y=lat;return p};exports.names=["Lambert Tangential Conformal Conic Projection","Lambert_Conformal_Conic","Lambert_Conformal_Conic_2SP","lcc"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/msfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js","../common/phi2z":"/data/github/geopackage-node/node_modules/proj4/lib/common/phi2z.js","../common/sign":"/data/github/geopackage-node/node_modules/proj4/lib/common/sign.js","../common/tsfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/tsfnz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/longlat.js":[function(require,module,exports){exports.init=function(){};function identity(pt){return pt}exports.forward=identity;exports.inverse=identity;exports.names=["longlat","identity"]},{}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/merc.js":[function(require,module,exports){var msfnz=require("../common/msfnz");var HALF_PI=Math.PI/2;var EPSLN=1e-10;var R2D=57.29577951308232;var adjust_lon=require("../common/adjust_lon");var FORTPI=Math.PI/4;var tsfnz=require("../common/tsfnz");var phi2z=require("../common/phi2z");exports.init=function(){var con=this.b/this.a;this.es=1-con*con;if(!("x0"in this)){this.x0=0}if(!("y0"in this)){this.y0=0}this.e=Math.sqrt(this.es);if(this.lat_ts){if(this.sphere){this.k0=Math.cos(this.lat_ts)}else{this.k0=msfnz(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))}}else{if(!this.k0){if(this.k){this.k0=this.k}else{this.k0=1}}}};exports.forward=function(p){var lon=p.x;var lat=p.y;if(lat*R2D>90&&lat*R2D<-90&&lon*R2D>180&&lon*R2D<-180){return null}var x,y;if(Math.abs(Math.abs(lat)-HALF_PI)<=EPSLN){return null}else{if(this.sphere){x=this.x0+this.a*this.k0*adjust_lon(lon-this.long0);y=this.y0+this.a*this.k0*Math.log(Math.tan(FORTPI+.5*lat))}else{var sinphi=Math.sin(lat);var ts=tsfnz(this.e,lat,sinphi);x=this.x0+this.a*this.k0*adjust_lon(lon-this.long0);y=this.y0-this.a*this.k0*Math.log(ts)}p.x=x;p.y=y;return p}};exports.inverse=function(p){var x=p.x-this.x0;var y=p.y-this.y0;var lon,lat;if(this.sphere){lat=HALF_PI-2*Math.atan(Math.exp(-y/(this.a*this.k0)))}else{var ts=Math.exp(-y/(this.a*this.k0));lat=phi2z(this.e,ts);if(lat===-9999){return null}}lon=adjust_lon(this.long0+x/(this.a*this.k0));p.x=lon;p.y=lat;return p};exports.names=["Mercator","Popular Visualisation Pseudo Mercator","Mercator_1SP","Mercator_Auxiliary_Sphere","merc"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/msfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js","../common/phi2z":"/data/github/geopackage-node/node_modules/proj4/lib/common/phi2z.js","../common/tsfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/tsfnz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/mill.js":[function(require,module,exports){var adjust_lon=require("../common/adjust_lon");exports.init=function(){};exports.forward=function(p){var lon=p.x;var lat=p.y;var dlon=adjust_lon(lon-this.long0);var x=this.x0+this.a*dlon;var y=this.y0+this.a*Math.log(Math.tan(Math.PI/4+lat/2.5))*1.25;p.x=x;p.y=y;return p};exports.inverse=function(p){p.x-=this.x0;p.y-=this.y0;var lon=adjust_lon(this.long0+p.x/this.a);var lat=2.5*(Math.atan(Math.exp(.8*p.y/this.a))-Math.PI/4);p.x=lon;p.y=lat;return p};exports.names=["Miller_Cylindrical","mill"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/moll.js":[function(require,module,exports){var adjust_lon=require("../common/adjust_lon");var EPSLN=1e-10;exports.init=function(){};exports.forward=function(p){var lon=p.x;var lat=p.y;var delta_lon=adjust_lon(lon-this.long0);var theta=lat;var con=Math.PI*Math.sin(lat);for(var i=0;true;i++){var delta_theta=-(theta+Math.sin(theta)-con)/(1+Math.cos(theta));theta+=delta_theta;if(Math.abs(delta_theta).999999999999){arg=.999999999999}theta=Math.asin(arg);var lon=adjust_lon(this.long0+p.x/(.900316316158*this.a*Math.cos(theta)));if(lon<-Math.PI){lon=-Math.PI}if(lon>Math.PI){lon=Math.PI}arg=(2*theta+Math.sin(2*theta))/Math.PI;if(Math.abs(arg)>1){arg=1}var lat=Math.asin(arg);p.x=lon;p.y=lat;return p};exports.names=["Mollweide","moll"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/nzmg.js":[function(require,module,exports){var SEC_TO_RAD=484813681109536e-20;exports.iterations=1;exports.init=function(){this.A=[];this.A[1]=.6399175073;this.A[2]=-.1358797613;this.A[3]=.063294409;this.A[4]=-.02526853;this.A[5]=.0117879;this.A[6]=-.0055161;this.A[7]=.0026906;this.A[8]=-.001333;this.A[9]=67e-5;this.A[10]=-34e-5;this.B_re=[];this.B_im=[];this.B_re[1]=.7557853228;this.B_im[1]=0;this.B_re[2]=.249204646;this.B_im[2]=.003371507;this.B_re[3]=-.001541739;this.B_im[3]=.04105856;this.B_re[4]=-.10162907;this.B_im[4]=.01727609;this.B_re[5]=-.26623489;this.B_im[5]=-.36249218;this.B_re[6]=-.6870983;this.B_im[6]=-1.1651967;this.C_re=[];this.C_im=[];this.C_re[1]=1.3231270439;this.C_im[1]=0;this.C_re[2]=-.577245789;this.C_im[2]=-.007809598;this.C_re[3]=.508307513;this.C_im[3]=-.112208952;this.C_re[4]=-.15094762;this.C_im[4]=.18200602;this.C_re[5]=1.01418179;this.C_im[5]=1.64497696;this.C_re[6]=1.9660549;this.C_im[6]=2.5127645;this.D=[];this.D[1]=1.5627014243;this.D[2]=.5185406398;this.D[3]=-.03333098;this.D[4]=-.1052906;this.D[5]=-.0368594;this.D[6]=.007317;this.D[7]=.0122;this.D[8]=.00394;this.D[9]=-.0013};exports.forward=function(p){var n;var lon=p.x;var lat=p.y;var delta_lat=lat-this.lat0;var delta_lon=lon-this.long0;var d_phi=delta_lat/SEC_TO_RAD*1e-5;var d_lambda=delta_lon;var d_phi_n=1;var d_psi=0;for(n=1;n<=10;n++){d_phi_n=d_phi_n*d_phi;d_psi=d_psi+this.A[n]*d_phi_n}var th_re=d_psi;var th_im=d_lambda;var th_n_re=1;var th_n_im=0;var th_n_re1;var th_n_im1;var z_re=0;var z_im=0;for(n=1;n<=6;n++){th_n_re1=th_n_re*th_re-th_n_im*th_im;th_n_im1=th_n_im*th_re+th_n_re*th_im;th_n_re=th_n_re1;th_n_im=th_n_im1;z_re=z_re+this.B_re[n]*th_n_re-this.B_im[n]*th_n_im;z_im=z_im+this.B_im[n]*th_n_re+this.B_re[n]*th_n_im}p.x=z_im*this.a+this.x0;p.y=z_re*this.a+this.y0;return p};exports.inverse=function(p){var n;var x=p.x;var y=p.y;var delta_x=x-this.x0;var delta_y=y-this.y0;var z_re=delta_y/this.a;var z_im=delta_x/this.a;var z_n_re=1;var z_n_im=0;var z_n_re1;var z_n_im1;var th_re=0;var th_im=0;for(n=1;n<=6;n++){z_n_re1=z_n_re*z_re-z_n_im*z_im;z_n_im1=z_n_im*z_re+z_n_re*z_im;z_n_re=z_n_re1;z_n_im=z_n_im1;th_re=th_re+this.C_re[n]*z_n_re-this.C_im[n]*z_n_im;th_im=th_im+this.C_im[n]*z_n_re+this.C_re[n]*z_n_im}for(var i=0;i=0){fl=dl+Math.sqrt(dl*dl-1)}else{fl=dl-Math.sqrt(dl*dl-1)}this.el=fl*Math.pow(t0,this.bl);gl=.5*(fl-1/fl);this.gamma0=Math.asin(Math.sin(this.alpha)/dl);this.long0=this.longc-Math.asin(gl*Math.tan(this.gamma0))/this.bl}else{var t1=tsfnz(this.e,this.lat1,Math.sin(this.lat1));var t2=tsfnz(this.e,this.lat2,Math.sin(this.lat2));if(this.lat0>=0){this.el=(dl+Math.sqrt(dl*dl-1))*Math.pow(t0,this.bl)}else{this.el=(dl-Math.sqrt(dl*dl-1))*Math.pow(t0,this.bl)}var hl=Math.pow(t1,this.bl);var ll=Math.pow(t2,this.bl);fl=this.el/hl;gl=.5*(fl-1/fl);var jl=(this.el*this.el-ll*hl)/(this.el*this.el+ll*hl);var pl=(ll-hl)/(ll+hl);var dlon12=adjust_lon(this.long1-this.long2);this.long0=.5*(this.long1+this.long2)-Math.atan(jl*Math.tan(.5*this.bl*dlon12)/pl)/this.bl;this.long0=adjust_lon(this.long0);var dlon10=adjust_lon(this.long1-this.long0);this.gamma0=Math.atan(Math.sin(this.bl*dlon10)/gl);this.alpha=Math.asin(dl*Math.sin(this.gamma0))}if(this.no_off){this.uc=0}else{if(this.lat0>=0){this.uc=this.al/this.bl*Math.atan2(Math.sqrt(dl*dl-1),Math.cos(this.alpha))}else{this.uc=-1*this.al/this.bl*Math.atan2(Math.sqrt(dl*dl-1),Math.cos(this.alpha))}}};exports.forward=function(p){var lon=p.x;var lat=p.y;var dlon=adjust_lon(lon-this.long0);var us,vs;var con;if(Math.abs(Math.abs(lat)-HALF_PI)<=EPSLN){if(lat>0){con=-1}else{con=1}vs=this.al/this.bl*Math.log(Math.tan(FORTPI+con*this.gamma0*.5));us=-1*con*HALF_PI*this.al/this.bl}else{var t=tsfnz(this.e,lat,Math.sin(lat));var ql=this.el/Math.pow(t,this.bl);var sl=.5*(ql-1/ql);var tl=.5*(ql+1/ql);var vl=Math.sin(this.bl*dlon);var ul=(sl*Math.sin(this.gamma0)-vl*Math.cos(this.gamma0))/tl;if(Math.abs(Math.abs(ul)-1)<=EPSLN){vs=Number.POSITIVE_INFINITY}else{vs=.5*this.al*Math.log((1-ul)/(1+ul))/this.bl}if(Math.abs(Math.cos(this.bl*dlon))<=EPSLN){us=this.al*this.bl*dlon}else{us=this.al*Math.atan2(sl*Math.cos(this.gamma0)+vl*Math.sin(this.gamma0),Math.cos(this.bl*dlon))/this.bl}}if(this.no_rot){p.x=this.x0+us;p.y=this.y0+vs}else{us-=this.uc;p.x=this.x0+vs*Math.cos(this.alpha)+us*Math.sin(this.alpha);p.y=this.y0+us*Math.cos(this.alpha)-vs*Math.sin(this.alpha)}return p};exports.inverse=function(p){var us,vs;if(this.no_rot){vs=p.y-this.y0;us=p.x-this.x0}else{vs=(p.x-this.x0)*Math.cos(this.alpha)-(p.y-this.y0)*Math.sin(this.alpha);us=(p.y-this.y0)*Math.cos(this.alpha)+(p.x-this.x0)*Math.sin(this.alpha);us+=this.uc}var qp=Math.exp(-1*this.bl*vs/this.al);var sp=.5*(qp-1/qp);var tp=.5*(qp+1/qp);var vp=Math.sin(this.bl*us/this.al);var up=(vp*Math.cos(this.gamma0)+sp*Math.sin(this.gamma0))/tp;var ts=Math.pow(this.el/Math.sqrt((1+up)/(1-up)),1/this.bl);if(Math.abs(up-1)1e-7){if(++iteration>20){return}S=1/this.alpha*(Math.log(Math.tan(Math.PI/4+b/2))-this.K)+this.e*Math.log(Math.tan(Math.PI/4+Math.asin(this.e*Math.sin(phy))/2));prevPhy=phy;phy=2*Math.atan(Math.exp(S))-Math.PI/2}p.x=lambda;p.y=phy;return p};exports.names=["somerc"]},{}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/stere.js":[function(require,module,exports){var HALF_PI=Math.PI/2;var EPSLN=1e-10;var sign=require("../common/sign");var msfnz=require("../common/msfnz");var tsfnz=require("../common/tsfnz");var phi2z=require("../common/phi2z");var adjust_lon=require("../common/adjust_lon");exports.ssfn_=function(phit,sinphi,eccen){sinphi*=eccen;return Math.tan(.5*(HALF_PI+phit))*Math.pow((1-sinphi)/(1+sinphi),.5*eccen)};exports.init=function(){this.coslat0=Math.cos(this.lat0);this.sinlat0=Math.sin(this.lat0);if(this.sphere){if(this.k0===1&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=EPSLN){this.k0=.5*(1+sign(this.lat0)*Math.sin(this.lat_ts))}}else{if(Math.abs(this.coslat0)<=EPSLN){if(this.lat0>0){this.con=1}else{this.con=-1}}this.cons=Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e));if(this.k0===1&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=EPSLN){this.k0=.5*this.cons*msfnz(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))/tsfnz(this.e,this.con*this.lat_ts,this.con*Math.sin(this.lat_ts))}this.ms1=msfnz(this.e,this.sinlat0,this.coslat0);this.X0=2*Math.atan(this.ssfn_(this.lat0,this.sinlat0,this.e))-HALF_PI;this.cosX0=Math.cos(this.X0);this.sinX0=Math.sin(this.X0)}};exports.forward=function(p){var lon=p.x;var lat=p.y;var sinlat=Math.sin(lat);var coslat=Math.cos(lat);var A,X,sinX,cosX,ts,rh;var dlon=adjust_lon(lon-this.long0);if(Math.abs(Math.abs(lon-this.long0)-Math.PI)<=EPSLN&&Math.abs(lat+this.lat0)<=EPSLN){p.x=NaN;p.y=NaN;return p}if(this.sphere){A=2*this.k0/(1+this.sinlat0*sinlat+this.coslat0*coslat*Math.cos(dlon));p.x=this.a*A*coslat*Math.sin(dlon)+this.x0;p.y=this.a*A*(this.coslat0*sinlat-this.sinlat0*coslat*Math.cos(dlon))+this.y0;return p}else{X=2*Math.atan(this.ssfn_(lat,sinlat,this.e))-HALF_PI;cosX=Math.cos(X);sinX=Math.sin(X);if(Math.abs(this.coslat0)<=EPSLN){ts=tsfnz(this.e,lat*this.con,this.con*sinlat);rh=2*this.a*this.k0*ts/this.cons;p.x=this.x0+rh*Math.sin(lon-this.long0);p.y=this.y0-this.con*rh*Math.cos(lon-this.long0);return p}else if(Math.abs(this.sinlat0)0){lon=adjust_lon(this.long0+Math.atan2(p.x,-1*p.y))}else{lon=adjust_lon(this.long0+Math.atan2(p.x,p.y))}}else{lon=adjust_lon(this.long0+Math.atan2(p.x*Math.sin(c),rh*this.coslat0*Math.cos(c)-p.y*this.sinlat0*Math.sin(c)))}p.x=lon;p.y=lat;return p}else{if(Math.abs(this.coslat0)<=EPSLN){if(rh<=EPSLN){lat=this.lat0;lon=this.long0;p.x=lon;p.y=lat;return p}p.x*=this.con;p.y*=this.con;ts=rh*this.cons/(2*this.a*this.k0);lat=this.con*phi2z(this.e,ts);lon=this.con*adjust_lon(this.con*this.long0+Math.atan2(p.x,-1*p.y))}else{ce=2*Math.atan(rh*this.cosX0/(2*this.a*this.k0*this.ms1));lon=this.long0;if(rh<=EPSLN){Chi=this.X0}else{Chi=Math.asin(Math.cos(ce)*this.sinX0+p.y*Math.sin(ce)*this.cosX0/rh);lon=adjust_lon(this.long0+Math.atan2(p.x*Math.sin(ce),rh*this.cosX0*Math.cos(ce)-p.y*this.sinX0*Math.sin(ce)))}lat=-1*phi2z(this.e,Math.tan(.5*(HALF_PI+Chi)))}}p.x=lon;p.y=lat;return p};exports.names=["stere","Stereographic_South_Pole","Polar Stereographic (variant B)"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","../common/msfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/msfnz.js","../common/phi2z":"/data/github/geopackage-node/node_modules/proj4/lib/common/phi2z.js","../common/sign":"/data/github/geopackage-node/node_modules/proj4/lib/common/sign.js","../common/tsfnz":"/data/github/geopackage-node/node_modules/proj4/lib/common/tsfnz.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/sterea.js":[function(require,module,exports){var gauss=require("./gauss");var adjust_lon=require("../common/adjust_lon");exports.init=function(){gauss.init.apply(this);if(!this.rc){return}this.sinc0=Math.sin(this.phic0);this.cosc0=Math.cos(this.phic0);this.R2=2*this.rc;if(!this.title){this.title="Oblique Stereographic Alternative"}};exports.forward=function(p){var sinc,cosc,cosl,k;p.x=adjust_lon(p.x-this.long0);gauss.forward.apply(this,[p]);sinc=Math.sin(p.y);cosc=Math.cos(p.y);cosl=Math.cos(p.x);k=this.k0*this.R2/(1+this.sinc0*sinc+this.cosc0*cosc*cosl);p.x=k*cosc*Math.sin(p.x);p.y=k*(this.cosc0*sinc-this.sinc0*cosc*cosl);p.x=this.a*p.x+this.x0;p.y=this.a*p.y+this.y0;return p};exports.inverse=function(p){var sinc,cosc,lon,lat,rho;p.x=(p.x-this.x0)/this.a;p.y=(p.y-this.y0)/this.a;p.x/=this.k0;p.y/=this.k0;if(rho=Math.sqrt(p.x*p.x+p.y*p.y)){var c=2*Math.atan2(rho,this.R2);sinc=Math.sin(c);cosc=Math.cos(c);lat=Math.asin(cosc*this.sinc0+p.y*sinc*this.cosc0/rho);lon=Math.atan2(p.x*sinc,rho*this.cosc0*cosc-p.y*this.sinc0*sinc)}else{lat=this.phic0;lon=0}p.x=lon;p.y=lat;gauss.inverse.apply(this,[p]);p.x=adjust_lon(p.x+this.long0);return p};exports.names=["Stereographic_North_Pole","Oblique_Stereographic","Polar_Stereographic","sterea","Oblique Stereographic Alternative"]},{"../common/adjust_lon":"/data/github/geopackage-node/node_modules/proj4/lib/common/adjust_lon.js","./gauss":"/data/github/geopackage-node/node_modules/proj4/lib/projections/gauss.js"}],"/data/github/geopackage-node/node_modules/proj4/lib/projections/tmerc.js":[function(require,module,exports){var e0fn=require("../common/e0fn");var e1fn=require("../common/e1fn");var e2fn=require("../common/e2fn");var e3fn=require("../common/e3fn");var mlfn=require("../common/mlfn");var adjust_lon=require("../common/adjust_lon");var HALF_PI=Math.PI/2;var EPSLN=1e-10;var sign=require("../common/sign");var asinz=require("../common/asinz");exports.init=function(){this.e0=e0fn(this.es);this.e1=e1fn(this.es);this.e2=e2fn(this.es);this.e3=e3fn(this.es);this.ml0=this.a*mlfn(this.e0,this.e1,this.e2,this.e3,this.lat0)};exports.forward=function(p){var lon=p.x;var lat=p.y;var delta_lon=adjust_lon(lon-this.long0);var con;var x,y;var sin_phi=Math.sin(lat);var cos_phi=Math.cos(lat);if(this.sphere){var b=cos_phi*Math.sin(delta_lon);if(Math.abs(Math.abs(b)-1)<1e-10){return 93}else{x=.5*this.a*this.k0*Math.log((1+b)/(1-b));con=Math.acos(cos_phi*Math.cos(delta_lon)/Math.sqrt(1-b*b));if(lat<0){con=-con}y=this.a*this.k0*(con-this.lat0)}}else{var al=cos_phi*delta_lon;var als=Math.pow(al,2);var c=this.ep2*Math.pow(cos_phi,2);var tq=Math.tan(lat);var t=Math.pow(tq,2);con=1-this.es*Math.pow(sin_phi,2);var n=this.a/Math.sqrt(con);var ml=this.a*mlfn(this.e0,this.e1,this.e2,this.e3,lat);x=this.k0*n*al*(1+als/6*(1-t+c+als/20*(5-18*t+Math.pow(t,2)+72*c-58*this.ep2)))+this.x0;y=this.k0*(ml-this.ml0+n*tq*(als*(.5+als/24*(5-t+9*c+4*Math.pow(c,2)+als/30*(61-58*t+Math.pow(t,2)+600*c-330*this.ep2)))))+this.y0}p.x=x;p.y=y;return p};exports.inverse=function(p){var con,phi;var delta_phi;var i;var max_iter=6;var lat,lon;if(this.sphere){var f=Math.exp(p.x/(this.a*this.k0));var g=.5*(f-1/f);var temp=this.lat0+p.y/(this.a*this.k0);var h=Math.cos(temp);con=Math.sqrt((1-h*h)/(1+g*g));lat=asinz(con);if(temp<0){lat=-lat}if(g===0&&h===0){lon=this.long0}else{lon=adjust_lon(Math.atan2(g,h)+this.long0)}}else{var x=p.x-this.x0;var y=p.y-this.y0;con=(this.ml0+y/this.k0)/this.a;phi=con;for(i=0;true;i++){delta_phi=(con+this.e1*Math.sin(2*phi)-this.e2*Math.sin(4*phi)+this.e3*Math.sin(6*phi))/this.e0-phi;phi+=delta_phi;if(Math.abs(delta_phi)<=EPSLN){break}if(i>=max_iter){return 95}}if(Math.abs(phi)=0){y=this.y0+Math.PI*this.R*Math.tan(.5*theta)}else{y=this.y0+Math.PI*this.R*-Math.tan(.5*theta)}}var al=.5*Math.abs(Math.PI/dlon-dlon/Math.PI);var asq=al*al;var sinth=Math.sin(theta);var costh=Math.cos(theta);var g=costh/(sinth+costh-1);var gsq=g*g;var m=g*(2/sinth-1);var msq=m*m;var con=Math.PI*this.R*(al*(g-msq)+Math.sqrt(asq*(g-msq)*(g-msq)-(msq+asq)*(gsq-msq)))/(msq+asq);if(dlon<0){con=-con}x=this.x0+con;var q=asq+g;con=Math.PI*this.R*(m*q-al*Math.sqrt((msq+asq)*(asq+1)-q*q))/(msq+asq);if(lat>=0){y=this.y0+con}else{y=this.y0-con}p.x=x;p.y=y;return p};exports.inverse=function(p){var lon,lat;var xx,yy,xys,c1,c2,c3;var a1;var m1;var con;var th1;var d;p.x-=this.x0;p.y-=this.y0;con=Math.PI*this.R;xx=p.x/con;yy=p.y/con;xys=xx*xx+yy*yy;c1=-Math.abs(yy)*(1+xys);c2=c1-2*yy*yy+xx*xx;c3=-2*c1+1+2*yy*yy+xys*xys;d=yy*yy/c3+(2*c2*c2*c2/c3/c3/c3-9*c1*c2/c3/c3)/27;a1=(c1-c2*c2/3/c3)/c3;m1=2*Math.sqrt(-a1/3);con=3*d/a1/m1;if(Math.abs(con)>1){if(con>=0){con=1}else{con=-1}}th1=Math.acos(con)/3;if(p.y>=0){lat=(-m1*Math.cos(th1+Math.PI/3)-c2/3/c3)*Math.PI}else{lat=-(-m1*Math.cos(th1+Math.PI/3)-c2/3/c3)*Math.PI}if(Math.abs(xx)-1){obj[key]={name:v[0].toLowerCase(),convert:v[1]};if(v.length===3){obj[key].auth=v[2]}}else if(key==="SPHEROID"){obj[key]={name:v[0],a:v[1],rf:v[2]};if(v.length===4){obj[key].auth=v[3]}}else if(["GEOGCS","GEOCCS","DATUM","VERT_CS","COMPD_CS","LOCAL_CS","FITTED_CS","LOCAL_DATUM"].indexOf(key)>-1){v[0]=["name",v[0]];mapit(obj,key,v)}else if(v.every(function(aa){return Array.isArray(aa)})){mapit(obj,key,v)}else{sExpr(v,obj[key])}}}}function rename(obj,params){var outName=params[0];var inName=params[1];if(!(outName in obj)&&inName in obj){obj[outName]=obj[inName];if(params.length===3){obj[outName]=params[2](obj[outName])}}}function d2r(input){return input*D2R}function cleanWKT(wkt){if(wkt.type==="GEOGCS"){wkt.projName="longlat"}else if(wkt.type==="LOCAL_CS"){wkt.projName="identity";wkt.local=true}else{if(typeof wkt.PROJECTION==="object"){wkt.projName=Object.keys(wkt.PROJECTION)[0]}else{wkt.projName=wkt.PROJECTION}}if(wkt.UNIT){wkt.units=wkt.UNIT.name.toLowerCase();if(wkt.units==="metre"){wkt.units="meter"}if(wkt.UNIT.convert){if(wkt.type==="GEOGCS"){if(wkt.DATUM&&wkt.DATUM.SPHEROID){wkt.to_meter=parseFloat(wkt.UNIT.convert,10)*wkt.DATUM.SPHEROID.a}}else{wkt.to_meter=parseFloat(wkt.UNIT.convert,10)}}}if(wkt.GEOGCS){if(wkt.GEOGCS.DATUM){wkt.datumCode=wkt.GEOGCS.DATUM.name.toLowerCase()}else{wkt.datumCode=wkt.GEOGCS.name.toLowerCase()}if(wkt.datumCode.slice(0,2)==="d_"){wkt.datumCode=wkt.datumCode.slice(2)}if(wkt.datumCode==="new_zealand_geodetic_datum_1949"||wkt.datumCode==="new_zealand_1949"){wkt.datumCode="nzgd49"}if(wkt.datumCode==="wgs_1984"){if(wkt.PROJECTION==="Mercator_Auxiliary_Sphere"){wkt.sphere=true}wkt.datumCode="wgs84"}if(wkt.datumCode.slice(-6)==="_ferro"){wkt.datumCode=wkt.datumCode.slice(0,-6)}if(wkt.datumCode.slice(-8)==="_jakarta"){wkt.datumCode=wkt.datumCode.slice(0,-8)}if(~wkt.datumCode.indexOf("belge")){wkt.datumCode="rnb72"}if(wkt.GEOGCS.DATUM&&wkt.GEOGCS.DATUM.SPHEROID){wkt.ellps=wkt.GEOGCS.DATUM.SPHEROID.name.replace("_19","").replace(/[Cc]larke\_18/,"clrk");if(wkt.ellps.toLowerCase().slice(0,13)==="international"){wkt.ellps="intl"}wkt.a=wkt.GEOGCS.DATUM.SPHEROID.a;wkt.rf=parseFloat(wkt.GEOGCS.DATUM.SPHEROID.rf,10)}if(~wkt.datumCode.indexOf("osgb_1936")){wkt.datumCode="osgb36"}}if(wkt.b&&!isFinite(wkt.b)){wkt.b=wkt.a}function toMeter(input){var ratio=wkt.to_meter||1;return parseFloat(input,10)*ratio}var renamer=function(a){return rename(wkt,a)};var list=[["standard_parallel_1","Standard_Parallel_1"],["standard_parallel_2","Standard_Parallel_2"],["false_easting","False_Easting"],["false_northing","False_Northing"],["central_meridian","Central_Meridian"],["latitude_of_origin","Latitude_Of_Origin"],["latitude_of_origin","Central_Parallel"],["scale_factor","Scale_Factor"],["k0","scale_factor"],["latitude_of_center","Latitude_of_center"],["lat0","latitude_of_center",d2r],["longitude_of_center","Longitude_Of_Center"],["longc","longitude_of_center",d2r],["x0","false_easting",toMeter],["y0","false_northing",toMeter],["long0","central_meridian",d2r],["lat0","latitude_of_origin",d2r],["lat0","standard_parallel_1",d2r],["lat1","standard_parallel_1",d2r],["lat2","standard_parallel_2",d2r],["alpha","azimuth",d2r],["srsCode","name"]];list.forEach(renamer);if(!wkt.long0&&wkt.longc&&(wkt.projName==="Albers_Conic_Equal_Area"||wkt.projName==="Lambert_Azimuthal_Equal_Area")){wkt.long0=wkt.longc}if(!wkt.lat_ts&&wkt.lat1&&(wkt.projName==="Stereographic_South_Pole"||wkt.projName==="Polar Stereographic (variant B)")){wkt.lat0=d2r(wkt.lat1>0?90:-90);wkt.lat_ts=wkt.lat1}}module.exports=function(wkt,self){var lisp=JSON.parse((","+wkt).replace(/\s*\,\s*([A-Z_0-9]+?)(\[)/g,',["$1",').slice(1).replace(/\s*\,\s*([A-Z_0-9]+?)\]/g,',"$1"]').replace(/,\["VERTCS".+/,""));var type=lisp.shift();var name=lisp.shift();lisp.unshift(["name",name]);lisp.unshift(["type",type]);lisp.unshift("output");var obj={};sExpr(lisp,obj);cleanWKT(obj.output);return extend(self,obj.output)}},{"./extend":"/data/github/geopackage-node/node_modules/proj4/lib/extend.js"}],"/data/github/geopackage-node/node_modules/proj4/node_modules/mgrs/mgrs.js":[function(require,module,exports){var NUM_100K_SETS=6;var SET_ORIGIN_COLUMN_LETTERS="AJSAJS";var SET_ORIGIN_ROW_LETTERS="AFAFAF";var A=65;var I=73;var O=79;var V=86;var Z=90;exports.forward=function(ll,accuracy){accuracy=accuracy||5;return encode(LLtoUTM({lat:ll[1],lon:ll[0]}),accuracy)};exports.inverse=function(mgrs){var bbox=UTMtoLL(decode(mgrs.toUpperCase()));if(bbox.lat&&bbox.lon){return[bbox.lon,bbox.lat,bbox.lon,bbox.lat]}return[bbox.left,bbox.bottom,bbox.right,bbox.top]};exports.toPoint=function(mgrs){var bbox=UTMtoLL(decode(mgrs.toUpperCase()));if(bbox.lat&&bbox.lon){return[bbox.lon,bbox.lat]}return[(bbox.left+bbox.right)/2,(bbox.top+bbox.bottom)/2]};function degToRad(deg){return deg*(Math.PI/180)}function radToDeg(rad){return 180*(rad/Math.PI)}function LLtoUTM(ll){var Lat=ll.lat;var Long=ll.lon;var a=6378137;var eccSquared=.00669438;var k0=.9996;var LongOrigin;var eccPrimeSquared;var N,T,C,A,M;var LatRad=degToRad(Lat);var LongRad=degToRad(Long);var LongOriginRad;var ZoneNumber;ZoneNumber=Math.floor((Long+180)/6)+1;if(Long===180){ZoneNumber=60}if(Lat>=56&&Lat<64&&Long>=3&&Long<12){ZoneNumber=32}if(Lat>=72&&Lat<84){if(Long>=0&&Long<9){ZoneNumber=31}else if(Long>=9&&Long<21){ZoneNumber=33}else if(Long>=21&&Long<33){ZoneNumber=35}else if(Long>=33&&Long<42){ZoneNumber=37}}LongOrigin=(ZoneNumber-1)*6-180+3;LongOriginRad=degToRad(LongOrigin);eccPrimeSquared=eccSquared/(1-eccSquared);N=a/Math.sqrt(1-eccSquared*Math.sin(LatRad)*Math.sin(LatRad));T=Math.tan(LatRad)*Math.tan(LatRad);C=eccPrimeSquared*Math.cos(LatRad)*Math.cos(LatRad);A=Math.cos(LatRad)*(LongRad-LongOriginRad);M=a*((1-eccSquared/4-3*eccSquared*eccSquared/64-5*eccSquared*eccSquared*eccSquared/256)*LatRad-(3*eccSquared/8+3*eccSquared*eccSquared/32+45*eccSquared*eccSquared*eccSquared/1024)*Math.sin(2*LatRad)+(15*eccSquared*eccSquared/256+45*eccSquared*eccSquared*eccSquared/1024)*Math.sin(4*LatRad)-35*eccSquared*eccSquared*eccSquared/3072*Math.sin(6*LatRad));var UTMEasting=k0*N*(A+(1-T+C)*A*A*A/6+(5-18*T+T*T+72*C-58*eccPrimeSquared)*A*A*A*A*A/120)+5e5;var UTMNorthing=k0*(M+N*Math.tan(LatRad)*(A*A/2+(5-T+9*C+4*C*C)*A*A*A*A/24+(61-58*T+T*T+600*C-330*eccPrimeSquared)*A*A*A*A*A*A/720));if(Lat<0){UTMNorthing+=1e7}return{northing:Math.round(UTMNorthing),easting:Math.round(UTMEasting),zoneNumber:ZoneNumber,zoneLetter:getLetterDesignator(Lat)}}function UTMtoLL(utm){var UTMNorthing=utm.northing;var UTMEasting=utm.easting;var zoneLetter=utm.zoneLetter;var zoneNumber=utm.zoneNumber;if(zoneNumber<0||zoneNumber>60){return null}var k0=.9996;var a=6378137;var eccSquared=.00669438;var eccPrimeSquared;var e1=(1-Math.sqrt(1-eccSquared))/(1+Math.sqrt(1-eccSquared));var N1,T1,C1,R1,D,M;var LongOrigin;var mu,phi1Rad;var x=UTMEasting-5e5;var y=UTMNorthing;if(zoneLetter<"N"){y-=1e7}LongOrigin=(zoneNumber-1)*6-180+3;eccPrimeSquared=eccSquared/(1-eccSquared);M=y/k0;mu=M/(a*(1-eccSquared/4-3*eccSquared*eccSquared/64-5*eccSquared*eccSquared*eccSquared/256));phi1Rad=mu+(3*e1/2-27*e1*e1*e1/32)*Math.sin(2*mu)+(21*e1*e1/16-55*e1*e1*e1*e1/32)*Math.sin(4*mu)+151*e1*e1*e1/96*Math.sin(6*mu);N1=a/Math.sqrt(1-eccSquared*Math.sin(phi1Rad)*Math.sin(phi1Rad));T1=Math.tan(phi1Rad)*Math.tan(phi1Rad);C1=eccPrimeSquared*Math.cos(phi1Rad)*Math.cos(phi1Rad);R1=a*(1-eccSquared)/Math.pow(1-eccSquared*Math.sin(phi1Rad)*Math.sin(phi1Rad),1.5);D=x/(N1*k0);var lat=phi1Rad-N1*Math.tan(phi1Rad)/R1*(D*D/2-(5+3*T1+10*C1-4*C1*C1-9*eccPrimeSquared)*D*D*D*D/24+(61+90*T1+298*C1+45*T1*T1-252*eccPrimeSquared-3*C1*C1)*D*D*D*D*D*D/720);lat=radToDeg(lat);var lon=(D-(1+2*T1+C1)*D*D*D/6+(5-2*C1+28*T1-3*C1*C1+8*eccPrimeSquared+24*T1*T1)*D*D*D*D*D/120)/Math.cos(phi1Rad);lon=LongOrigin+radToDeg(lon);var result;if(utm.accuracy){var topRight=UTMtoLL({northing:utm.northing+utm.accuracy,easting:utm.easting+utm.accuracy,zoneLetter:utm.zoneLetter,zoneNumber:utm.zoneNumber});result={top:topRight.lat,right:topRight.lon,bottom:lat,left:lon}}else{result={lat:lat,lon:lon}}return result}function getLetterDesignator(lat){var LetterDesignator="Z";if(84>=lat&&lat>=72){LetterDesignator="X"}else if(72>lat&&lat>=64){LetterDesignator="W"}else if(64>lat&&lat>=56){LetterDesignator="V"}else if(56>lat&&lat>=48){LetterDesignator="U"}else if(48>lat&&lat>=40){LetterDesignator="T"}else if(40>lat&&lat>=32){LetterDesignator="S"}else if(32>lat&&lat>=24){LetterDesignator="R"}else if(24>lat&&lat>=16){LetterDesignator="Q"}else if(16>lat&&lat>=8){LetterDesignator="P"}else if(8>lat&&lat>=0){LetterDesignator="N"}else if(0>lat&&lat>=-8){LetterDesignator="M"}else if(-8>lat&&lat>=-16){LetterDesignator="L"}else if(-16>lat&&lat>=-24){LetterDesignator="K"}else if(-24>lat&&lat>=-32){LetterDesignator="J"}else if(-32>lat&&lat>=-40){LetterDesignator="H"}else if(-40>lat&&lat>=-48){LetterDesignator="G"}else if(-48>lat&&lat>=-56){LetterDesignator="F"}else if(-56>lat&&lat>=-64){LetterDesignator="E"}else if(-64>lat&&lat>=-72){LetterDesignator="D"}else if(-72>lat&&lat>=-80){LetterDesignator="C"}return LetterDesignator}function encode(utm,accuracy){var seasting="00000"+utm.easting,snorthing="00000"+utm.northing;return utm.zoneNumber+utm.zoneLetter+get100kID(utm.easting,utm.northing,utm.zoneNumber)+seasting.substr(seasting.length-5,accuracy)+snorthing.substr(snorthing.length-5,accuracy)}function get100kID(easting,northing,zoneNumber){var setParm=get100kSetForZone(zoneNumber);var setColumn=Math.floor(easting/1e5);var setRow=Math.floor(northing/1e5)%20;return getLetter100kID(setColumn,setRow,setParm)}function get100kSetForZone(i){var setParm=i%NUM_100K_SETS;if(setParm===0){setParm=NUM_100K_SETS}return setParm}function getLetter100kID(column,row,parm){var index=parm-1;var colOrigin=SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);var rowOrigin=SET_ORIGIN_ROW_LETTERS.charCodeAt(index);var colInt=colOrigin+column-1;var rowInt=rowOrigin+row;var rollover=false;if(colInt>Z){colInt=colInt-Z+A-1;rollover=true}if(colInt===I||colOriginI||(colInt>I||colOriginO||(colInt>O||colOriginZ){colInt=colInt-Z+A-1}if(rowInt>V){rowInt=rowInt-V+A-1;rollover=true}else{rollover=false}if(rowInt===I||rowOriginI||(rowInt>I||rowOriginO||(rowInt>O||rowOriginV){rowInt=rowInt-V+A-1}var twoLetter=String.fromCharCode(colInt)+String.fromCharCode(rowInt);return twoLetter}function decode(mgrsString){if(mgrsString&&mgrsString.length===0){throw"MGRSPoint coverting from nothing"}var length=mgrsString.length;var hunK=null;var sb="";var testChar;var i=0;while(!/[A-Z]/.test(testChar=mgrsString.charAt(i))){if(i>=2){throw"MGRSPoint bad conversion from: "+mgrsString}sb+=testChar;i++}var zoneNumber=parseInt(sb,10);if(i===0||i+3>length){throw"MGRSPoint bad conversion from: "+mgrsString}var zoneLetter=mgrsString.charAt(i++);if(zoneLetter<="A"||zoneLetter==="B"||zoneLetter==="Y"||zoneLetter>="Z"||zoneLetter==="I"||zoneLetter==="O"){throw"MGRSPoint zone letter "+zoneLetter+" not handled: "+mgrsString}hunK=mgrsString.substring(i,i+=2);var set=get100kSetForZone(zoneNumber);var east100k=getEastingFromChar(hunK.charAt(0),set);var north100k=getNorthingFromChar(hunK.charAt(1),set);while(north100k0){accuracyBonus=1e5/Math.pow(10,sep);sepEastingString=mgrsString.substring(i,i+sep);sepEasting=parseFloat(sepEastingString)*accuracyBonus;sepNorthingString=mgrsString.substring(i+sep);sepNorthing=parseFloat(sepNorthingString)*accuracyBonus}easting=sepEasting+east100k;northing=sepNorthing+north100k;return{easting:easting,northing:northing,zoneLetter:zoneLetter,zoneNumber:zoneNumber,accuracy:accuracyBonus}}function getEastingFromChar(e,set){var curCol=SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set-1);var eastingValue=1e5;var rewindMarker=false;while(curCol!==e.charCodeAt(0)){curCol++;if(curCol===I){curCol++}if(curCol===O){curCol++}if(curCol>Z){if(rewindMarker){throw"Bad character: "+e}curCol=A;rewindMarker=true}eastingValue+=1e5}return eastingValue}function getNorthingFromChar(n,set){if(n>"V"){throw"MGRSPoint given invalid Northing "+n}var curRow=SET_ORIGIN_ROW_LETTERS.charCodeAt(set-1);var northingValue=0;var rewindMarker=false;while(curRow!==n.charCodeAt(0)){curRow++;if(curRow===I){curRow++}if(curRow===O){curRow++}if(curRow>V){if(rewindMarker){throw"Bad character: "+n}curRow=A;rewindMarker=true}northingValue+=1e5}return northingValue}function getMinNorthing(zoneLetter){var northing;switch(zoneLetter){case"C":northing=11e5;break;case"D":northing=2e6;break;case"E":northing=28e5;break;case"F":northing=37e5; -break;case"G":northing=46e5;break;case"H":northing=55e5;break;case"J":northing=64e5;break;case"K":northing=73e5;break;case"L":northing=82e5;break;case"M":northing=91e5;break;case"N":northing=0;break;case"P":northing=8e5;break;case"Q":northing=17e5;break;case"R":northing=26e5;break;case"S":northing=35e5;break;case"T":northing=44e5;break;case"U":northing=53e5;break;case"V":northing=62e5;break;case"W":northing=7e6;break;case"X":northing=79e5;break;default:northing=-1}if(northing>=0){return northing}else{throw"Invalid zone letter: "+zoneLetter}}},{}],"/data/github/geopackage-node/node_modules/proj4/package.json":[function(require,module,exports){module.exports={name:"proj4",version:"2.3.14",description:"Proj4js is a JavaScript library to transform point coordinates from one coordinate system to another, including datum transformations.",main:"lib/index.js",directories:{test:"test",doc:"docs"},scripts:{test:"./node_modules/istanbul/lib/cli.js test ./node_modules/mocha/bin/_mocha test/test.js"},repository:{type:"git",url:"git://github.com/proj4js/proj4js.git"},author:"",license:"MIT",jam:{main:"dist/proj4.js",include:["dist/proj4.js","README.md","AUTHORS","LICENSE.md"]},devDependencies:{"grunt-cli":"~0.1.13",grunt:"~0.4.2","grunt-contrib-connect":"~0.6.0","grunt-contrib-jshint":"~0.8.0",chai:"~1.8.1",mocha:"~1.17.1","grunt-mocha-phantomjs":"~0.4.0",browserify:"~12.0.1","grunt-browserify":"~4.0.1","grunt-contrib-uglify":"~0.11.1",curl:"git://github.com/cujojs/curl.git",istanbul:"~0.2.4",tin:"~0.4.0"},dependencies:{mgrs:"~0.0.2"},contributors:[{name:"Mike Adair",email:"madair@dmsolutions.ca"},{name:"Richard Greenwood",email:"rich@greenwoodmap.com"},{name:"Calvin Metcalf",email:"calvin.metcalf@gmail.com"},{name:"Richard Marsden",url:"http://www.winwaed.com"},{name:"T. Mittan"},{name:"D. Steinwand"},{name:"S. Nelson"}],gitHead:"7619c8a63df1eae5bad0b9ad31ca1d87b0549243",bugs:{url:"https://github.com/proj4js/proj4js/issues"},homepage:"https://github.com/proj4js/proj4js#readme",_id:"proj4@2.3.14",_shasum:"928906144388980c914c5a357fc493aba59a747a",_from:"proj4@>=2.3.14 <3.0.0",_npmVersion:"2.14.12",_nodeVersion:"4.2.6",_npmUser:{name:"ahocevar",email:"andreas.hocevar@gmail.com"},dist:{shasum:"928906144388980c914c5a357fc493aba59a747a",tarball:"https://registry.npmjs.org/proj4/-/proj4-2.3.14.tgz"},maintainers:[{name:"cwmma",email:"calvin.metcalf@gmail.com"},{name:"ahocevar",email:"andreas.hocevar@gmail.com"}],_npmOperationalInternal:{host:"packages-13-west.internal.npmjs.com",tmp:"tmp/proj4-2.3.14.tgz_1457689264880_0.9409773757215589"},_resolved:"https://registry.npmjs.org/proj4/-/proj4-2.3.14.tgz",readme:"ERROR: No README data found!"}},{}],"/data/github/geopackage-node/node_modules/reproject/index.js":[function(require,module,exports){"use strict";var proj4=require("proj4");function isXY(list){return list.length>=2&&typeof list[0]==="number"&&typeof list[1]==="number"}function traverseCoords(coordinates,callback){if(isXY(coordinates))return callback(coordinates);return coordinates.map(function(coord){return traverseCoords(coord,callback)})}function clone(obj){if(null==obj||"object"!==typeof obj)return obj;var copy=obj.constructor();for(var attr in obj){if(obj.hasOwnProperty(attr))copy[attr]=obj[attr]}return copy}function traverseGeoJson(geojson,leafCallback,nodeCallback){if(geojson==null)return geojson;var r=clone(geojson);if(geojson.type==="Feature"){r.geometry=traverseGeoJson(geojson.geometry,leafCallback,nodeCallback)}else if(geojson.type==="FeatureCollection"){r.features=r.features.map(function(gj){return traverseGeoJson(gj,leafCallback,nodeCallback)})}else if(geojson.type==="GeometryCollection"){r.geometries=r.geometries.map(function(gj){return traverseGeoJson(gj,leafCallback,nodeCallback)})}else{if(leafCallback)leafCallback(r)}if(nodeCallback)nodeCallback(r);return r}function detectCrs(geojson,projs){var crsInfo=geojson.crs,crs;if(crsInfo===undefined){throw new Error('Unable to detect CRS, GeoJSON has no "crs" property.')}if(crsInfo.type==="name"){crs=projs[crsInfo.properties.name]}else if(crsInfo.type==="EPSG"){crs=projs["EPSG:"+crsInfo.properties.code]}if(!crs){throw new Error("CRS defined in crs section could not be identified: "+JSON.stringify(crsInfo))}return crs}function determineCrs(crs,projs){if(typeof crs==="string"||crs instanceof String){return projs[crs]||proj4.Proj(crs)}return crs}function reproject(geojson,from,to,projs){projs=projs||{};if(!from){from=detectCrs(geojson,projs)}else{from=determineCrs(from,projs)}to=determineCrs(to,projs);var transform=proj4(from,to);return traverseGeoJson(geojson,function(gj){if(gj.crs){delete gj.crs}gj.coordinates=traverseCoords(gj.coordinates,function(xy){return transform.forward(xy)})},function(gj){if(gj.bbox){gj.bbox=function(){var min=[Number.MAX_VALUE,Number.MAX_VALUE],max=[-Number.MAX_VALUE,-Number.MAX_VALUE];traverseGeoJson(gj,function(_gj){traverseCoords(_gj.coordinates,function(xy){min[0]=Math.min(min[0],xy[0]);min[1]=Math.min(min[1],xy[1]);max[0]=Math.max(max[0],xy[0]);max[1]=Math.max(max[1],xy[1])})});return[min[0],min[1],max[0],max[1]]}()}})}module.exports={detectCrs:detectCrs,reproject:reproject,reverse:function(geojson){return traverseGeoJson(geojson,function(gj){gj.coordinates=traverseCoords(gj.coordinates,function(xy){return[xy[1],xy[0]]})})},toWgs84:function(geojson,from,projs){return reproject(geojson,from,proj4.WGS84,projs)}}},{proj4:"/data/github/geopackage-node/node_modules/proj4/lib/index.js"}],"/data/github/geopackage-node/node_modules/sql.js/js/sql.js":[function(require,module,exports){(function(process,Buffer,__dirname){var SQL=function(){var f;f||(f=eval("(function() { try { return Module || {} } catch(e) { return {} } })()"));var aa={},ba;for(ba in f)f.hasOwnProperty(ba)&&(aa[ba]=f[ba]);var ca="object"===typeof window,da="function"===typeof importScripts,ea="object"===typeof process&&"function"===typeof require&&!ca&&!da,fa=!ca&&!ea&&!da;if(ea){f.print||(f.print=function(a){process.stdout.write(a+"\n")});f.printErr||(f.printErr=function(a){process.stderr.write(a+"\n")});var ga=require("fs"),ia=require("path");f.read=function(a,b){a=ia.normalize(a);var c=ga.readFileSync(a);c||a==ia.resolve(a)||(a=path.join(__dirname,"..","src",a),c=ga.readFileSync(a));c&&!b&&(c=c.toString());return c};f.readBinary=function(a){a=f.read(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a};f.load=function(a){ja(read(a))};f.thisProgram||(f.thisProgram=1 0) var gc = undefined");else if(ca||da)f.read=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},"undefined"!=typeof arguments&&(f.arguments=arguments),"undefined"!==typeof console?(f.print||(f.print=function(a){console.log(a)}),f.printErr||(f.printErr=function(a){console.log(a)})):f.print||(f.print=function(){}),da&&(f.load=importScripts),"undefined"===typeof f.setWindowTitle&&(f.setWindowTitle=function(a){document.title=a});else throw"Unknown runtime environment. Where are we?";function ja(a){eval.call(null,a)}!f.load&&f.read&&(f.load=function(a){ja(f.read(a))});f.print||(f.print=function(){});f.printErr||(f.printErr=f.print);f.arguments||(f.arguments=[]);f.thisProgram||(f.thisProgram="./this.program");f.print=f.print;f.fa=f.printErr;f.preRun=[];f.postRun=[];for(ba in aa)aa.hasOwnProperty(ba)&&(f[ba]=aa[ba]);var l={Qb:function(a){la=a},Ab:function(){return la},qa:function(){return k},ga:function(a){k=a},Xa:function(a){switch(a){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:return"*"===a[a.length-1]?l.M:"i"===a[0]?(a=parseInt(a.substr(1)),assert(0===a%8),a/8):0}},xb:function(a){return Math.max(l.Xa(a),l.M)},oe:16,Ke:function(a,b){"double"===b||"i64"===b?a&7&&(assert(4===(a&7)),a+=4):assert(0===(a&3));return a},ye:function(a,b,c){return c||"i64"!=a&&"double"!=a?a?Math.min(b||(a?l.xb(a):0),l.M):Math.min(b,8):8},T:function(a,b,c){return c&&c.length?(c.splice||(c=Array.prototype.slice.call(c)),c.splice(0,0,b),f["dynCall_"+a].apply(null,c)):f["dynCall_"+a].call(null,b)},A:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],La:function(a){for(var b=0;b=na)p("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+na+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 "),a=!0;return a?(n=b,0):b},ta:function(a,b){return Math.ceil(a/(b?b:16))*(b?b:16)},He:function(a,b,c){return c?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296*+(b|0)},aa:8,M:4,re:0};f.Runtime=l;l.addFunction=l.La;l.removeFunction=l.Mb;var oa=!1,pa,qa,la;function assert(a,b){a||p("Assertion failed: "+b)}function ra(a){var b=f["_"+a];if(!b)try{b=eval("_"+a)}catch(c){}assert(b,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)");return b}var sa,ta;(function(){function a(a){a=a.toString().match(d).slice(1);return{arguments:a[0],body:a[1],returnValue:a[2]}}var b={stackSave:function(){l.qa()},stackRestore:function(){l.ga()},arrayToC:function(a){var b=l.R(a.length);ua(a,b);return b},stringToC:function(a){var b=0;null!==a&&void 0!==a&&0!==a&&(b=l.R((a.length<<2)+1),wa(a,b));return b}},c={string:b.stringToC,array:b.arrayToC};ta=function(a,b,d,e,g){a=ra(a);var v=[],G=0;if(e)for(var I=0;I>0]=b;break;case"i8":u[a>>0]=b;break;case"i16":za[a>>1]=b;break;case"i32":w[a>>2]=b;break;case"i64":qa=[b>>>0,(pa=b,1<=+Aa(pa)?0>>0:~~+Da((pa-+(~~pa>>>0))/4294967296)>>>0:0)];w[a>>2]=qa[0];w[a+4>>2]=qa[1];break;case"float":Ea[a>>2]=b;break;case"double":Fa[a>>3]=b;break;default:p("invalid type for setValue: "+c)}}f.setValue=ya;function y(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case"i1":return u[a>>0];case"i8":return u[a>>0];case"i16":return za[a>>1];case"i32":return w[a>>2];case"i64":return w[a>>2];case"float":return Ea[a>>2];case"double":return Fa[a>>3];default:p("invalid type for setValue: "+b)}return null}f.getValue=y;f.ALLOC_NORMAL=0;f.ALLOC_STACK=1;f.ALLOC_STATIC=2;f.ALLOC_DYNAMIC=3;f.ALLOC_NONE=4;function z(a,b,c,d){var e,g;"number"===typeof a?(e=!0,g=a):(e=!1,g=a.length);var h="string"===typeof b?b:null;c=4==c?d:[Ga,l.R,l.bb,l.ba][void 0===c?2:c](Math.max(g,h?1:b.length));if(e){d=c;assert(0==(c&3));for(a=c+(g&-4);d>2]=0;for(a=c+g;d>0]=0;return c}if("i8"===h)return a.subarray||a.slice?A.set(a,c):A.set(new Uint8Array(a),c),c;d=0;for(var m,t;d>0];c|=d;if(0==d&&!b)break;e++;if(b&&e==b)break}b||(b=e);d="";if(128>c){for(;0>0];if(!c)return b;b+=String.fromCharCode(c)}};f.stringToAscii=function(a,b){return Ka(a,b,!1)};function La(a,b){for(var c,d,e,g,h,m,t="";;){c=a[b++];if(!c)return t;c&128?(d=a[b++]&63,192==(c&224)?t+=String.fromCharCode((c&31)<<6|d):(e=a[b++]&63,224==(c&240)?c=(c&15)<<12|d<<6|e:(g=a[b++]&63,240==(c&248)?c=(c&7)<<18|d<<12|e<<6|g:(h=a[b++]&63,248==(c&252)?c=(c&3)<<24|d<<18|e<<12|g<<6|h:(m=a[b++]&63,c=(c&1)<<30|d<<24|e<<18|g<<12|h<<6|m))),65536>c?t+=String.fromCharCode(c):(c-=65536,t+=String.fromCharCode(55296|c>>10,56320|c&1023)))):t+=String.fromCharCode(c)}}f.UTF8ArrayToString=La;f.UTF8ToString=function(a){return La(A,a)};function Ma(a,b,c,d){if(!(0=h&&(h=65536+((h&1023)<<10)|a.charCodeAt(++g)&1023);if(127>=h){if(c>=d)break;b[c++]=h}else{if(2047>=h){if(c+1>=d)break;b[c++]=192|h>>6}else{if(65535>=h){if(c+2>=d)break;b[c++]=224|h>>12}else{if(2097151>=h){if(c+3>=d)break;b[c++]=240|h>>18}else{if(67108863>=h){if(c+4>=d)break;b[c++]=248|h>>24}else{if(c+5>=d)break;b[c++]=252|h>>30;b[c++]=128|h>>24&63}b[c++]=128|h>>18&63}b[c++]=128|h>>12&63}b[c++]=128|h>>6&63}b[c++]=128|h&63}}b[c]=0;return c-e}f.stringToUTF8Array=Ma;f.stringToUTF8=function(a,b,c){return Ma(a,A,b,c)};function Na(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:2097151>=d?b+4:67108863>=d?b+5:b+6}return b}f.lengthBytesUTF8=Na;f.UTF16ToString=function(a){for(var b=0,c="";;){var d=za[a+2*b>>1];if(0==d)return c;++b;c+=String.fromCharCode(d)}};f.stringToUTF16=function(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e>1]=a.charCodeAt(e),b+=2;za[b>>1]=0;return b-d};f.lengthBytesUTF16=function(a){return 2*a.length};f.UTF32ToString=function(a){for(var b=0,c="";;){var d=w[a+4*b>>2];if(0==d)return c;++b;65536<=d?(d=d-65536,c+=String.fromCharCode(55296|d>>10,56320|d&1023)):c+=String.fromCharCode(d)}};f.stringToUTF32=function(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=g)var h=a.charCodeAt(++e),g=65536+((g&1023)<<10)|h&1023;w[b>>2]=g;b+=4;if(b+4>c)break}w[b>>2]=0;return b-d};f.lengthBytesUTF32=function(a){for(var b=0,c=0;c=d&&++c;b+=4}return b};function Oa(a){function b(c,d,e){d=d||Infinity;var g="",h=[],v;if("N"===a[m]){m++;"K"===a[m]&&m++;for(v=[];"E"!==a[m];)if("S"===a[m]){m++;var F=a.indexOf("_",m);v.push(r[a.substring(m,F)||0]||"?");m=F+1}else if("C"===a[m])v.push(v[v.length-1]),m+=2;else{var F=parseInt(a.substr(m)),ha=F.toString().length;if(!F||!ha){m--;break}var lc=a.substr(m+ha,F);v.push(lc);r.push(lc);m+=ha+F}m++;v=v.join("::");d--;if(0===d)return c?[v]:v}else if(("K"===a[m]||x&&"L"===a[m])&&m++,F=parseInt(a.substr(m)))ha=F.toString().length,v=a.substr(m+ha,F),m+=ha+F;x=!1;"I"===a[m]?(m++,F=b(!0),ha=b(!0,1,!0),g+=ha[0]+" "+v+"<"+F.join(", ")+">"):g=v;a:for(;m$a?2*$a:$a+16777216;$a!==na&&(na=$a);assert("undefined"!==typeof Int32Array&&"undefined"!==typeof Float64Array&&!!new Int32Array(1).subarray&&!!new Int32Array(1).set,"JS engine does not provide full typed array support");var buffer;buffer=new ArrayBuffer(na);u=new Int8Array(buffer);za=new Int16Array(buffer);w=new Int32Array(buffer);A=new Uint8Array(buffer);Ta=new Uint16Array(buffer);Ua=new Uint32Array(buffer);Ea=new Float32Array(buffer);Fa=new Float64Array(buffer);w[0]=255;assert(255===A[0]&&0===A[3],"Typed arrays 2 must be run on a little-endian system");f.HEAP=void 0;f.buffer=buffer;f.HEAP8=u;f.HEAP16=za;f.HEAP32=w;f.HEAPU8=A;f.HEAPU16=Ta;f.HEAPU32=Ua;f.HEAPF32=Ea;f.HEAPF64=Fa;function ab(a){for(;0>0]=a[c],c+=1}f.writeStringToMemory=wa;function ua(a,b){for(var c=0;c>0]=a[c]}f.writeArrayToMemory=ua;function Ka(a,b,c){for(var d=0;d>0]=a.charCodeAt(d);c||(u[b>>0]=0)}f.writeAsciiToMemory=Ka;Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(a,b){var c=a&65535,d=b&65535;return c*d+((a>>>16)*d+c*(b>>>16)<<16)|0});Math.De=Math.imul;Math.clz32||(Math.clz32=function(a){a=a>>>0;for(var b=0;32>b;b++)if(a&1<<31-b)return b;return 32});Math.ue=Math.clz32;var Aa=Math.abs,ib=Math.cos,jb=Math.sin,kb=Math.tan,lb=Math.acos,mb=Math.asin,nb=Math.atan,ob=Math.atan2,pb=Math.exp,qb=Math.log,rb=Math.sqrt,Da=Math.ceil,Ca=Math.floor,sb=Math.pow,Ba=Math.min,tb=0,ub=null,vb=null;function wb(){tb++;f.monitorRunDependencies&&f.monitorRunDependencies(tb)}f.addRunDependency=wb;function xb(){tb--;f.monitorRunDependencies&&f.monitorRunDependencies(tb);if(0==tb&&(null!==ub&&(clearInterval(ub),ub=null),vb)){var a=vb;vb=null;a()}}f.removeRunDependency=xb;f.preloadedImages={};f.preloadedAudios={};Va=8;ma=Va+50112;cb.push();z([1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,254,255,255,127,0,0,0,0,128,0,0,0,244,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,67,0,0,1,0,1,0,130,0,0,0,151,67,0,0,1,0,1,0,131,0,0,0,156,67,0,0,1,0,1,0,132,0,0,0,161,67,0,0,2,0,1,0,133,0,0,0,166,67,0,0,2,0,1,0,133,0,0,0,172,67,0,0,1,0,1,0,134,0,0,0,178,67,0,0,1,0,1,0,135,0,0,0,184,67,0,0,1,0,1,0,136,0,0,0,190,67,0,0,2,0,1,0,137,0,0,0,201,67,0,0,1,0,1,0,138,0,0,0,209,67,0,0,1,0,1,0,139,0,0,0,217,67,0,0,1,0,1,0,140,0,0,0,221,67,0,0,1,0,1,0,141,0,0,0,225,67,0,0,1,0,1,0,142,0,0,0,229,67,0,0,1,0,1,0,143,0,0,0,233,67,0,0,1,0,1,0,144,0,0,0,238,67,0,0,1,0,1,0,145,0,0,0,243,67,0,0,1,0,1,0,146,0,0,0,248,67,0,0,1,0,1,0,147,0,0,0,253,67,0,0,1,0,1,0,148,0,0,0,232,101,0,0,1,0,1,0,149,0,0,0,1,68,0,0,1,0,1,0,150,0,0,0,7,68,0,0,2,0,1,0,151,0,0,0,13,68,0,0,1,0,1,0,152,0,0,0,18,68,0,0,1,0,1,0,153,0,0,0,23,68,0,0,1,0,1,0,154,0,0,0,30,68,0,0,1,0,1,0,155,0,0,0,35,68,0,0,1,0,1,0,156,0,0,0,41,68,0,0,0,0,1,1,157,0,0,0,44,68,0,0,2,0,1,0,158,0,0,0,54,68,0,0,2,0,1,0,159,0,0,0,54,68,0,0,3,0,1,0,159,0,0,0,64,68,0,0,2,0,1,0,160,0,0,0,72,68,0,0,2,0,1,0,161,0,0,0,81,68,0,0,1,0,1,0,162,0,0,0,89,68,0,0,1,0,1,0,163,0,0,0,96,68,0,0,2,0,1,0,164,0,0,0,101,68,0,0,2,0,1,0,165,0,0,0,106,68,0,0,2,0,1,0,166,0,0,0,111,68,0,0,2,0,1,0,167,0,0,0,121,68,0,0,1,0,0,0,168,0,0,0,130,0,0,0,127,68,0,0,1,0,0,0,168,0,0,0,131,0,0,0,76,105,0,0,1,0,0,0,169,0,0,0,132,0,0,0,136,68,0,0,1,0,0,0,169,0,0,0,133,0,0,0,143,68,0,0,1,0,0,0,169,0,0,0,134,0,0,0,158,68,0,0,1,0,0,0,169,0,0,0,135,0,0,0,0,0,0,0,128,48,0,0,128,32,14,0,128,32,200,3,0,0,0,0,128,255,255,255,0,248,255,255,0,0,255,255,1,0,0,0,0,0,0,0,223,183,0,0,235,183,0,0,247,183,0,0,15,184,0,0,26,184,0,0,46,184,0,0,60,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,184,177,0,0,12,28,0,0,130,0,0,0,130,0,0,0,130,0,0,0,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,0,0,0,130,0,0,0,131,0,0,0,132,0,0,0,132,0,0,0,133,0,0,0,133,0,0,0,134,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,189,177,0,0,16,28,0,0,130,0,0,0,130,0,0,0,130,0,0,0,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,0,0,0,130,0,0,0,131,0,0,0,132,0,0,0,132,0,0,0,133,0,0,0,133,0,0,0,134,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,199,177,0,0,20,28,0,0,130,0,0,0,130,0,0,0,130,0,0,0,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,0,0,0,130,0,0,0,131,0,0,0,132,0,0,0,132,0,0,0,133,0,0,0,133,0,0,0,134,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,212,177,0,0,12,28,0,0,130,0,0,0,130,0,0,0,130,0,0,0,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131,0,0,0,130,0,0,0,131,0,0,0,132,0,0,0,132,0,0,0,133,0,0,0,133,0,0,0,134,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,202,154,59,0,202,154,59,208,7,0,0,232,3,0,0,244,1,0,0,168,97,0,0,127,0,0,0,10,0,0,0,80,195,0,0,231,3,0,0,232,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,130,0,0,0,131,0,0,0,135,0,0,0,130,0,0,0,131,0,0,0,136,0,0,0,132,0,0,0,131,0,0,0,133,0,0,0,134,0,0,0,134,0,0,0,137,0,0,0,132,0,0,0,135,0,0,0,136,0,0,0,137,0,0,0,138,0,0,0,132,0,0,0,138,0,0,0,139,0,0,0,140,0,0,0,141,0,0,0,0,0,0,0,132,0,0,0,132,0,0,0,142,0,0,0,139,0,0,0,139,0,0,0,143,0,0,0,140,0,0,0,133,0,0,0,141,0,0,0,142,0,0,0,135,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,233,84,0,0,21,85,0,0,89,85,0,0,117,85,0,0,146,85,0,0,173,85,0,0,201,85,0,0,226,85,0,0,250,85,0,0,59,86,0,0,118,86,0,0,186,86,0,0,234,86,0,0,90,87,0,0,225,87,0,0,21,88,0,0,87,88,0,0,130,88,0,0,189,88,0,0,228,88,0,0,16,89,0,0,57,89,0,0,104,89,0,0,146,89,0,0,66,75,0,0,66,75,0,0,184,89,0,0,239,89,0,0,44,90,0,0,149,90,0,0,252,90,0,0,51,91,0,0,109,91,0,0,216,91,0,0,39,92,0,0,104,92,0,0,164,92,0,0,212,92,0,0,62,93,0,0,135,93,0,0,99,83,0,0,170,0,0,0,107,83,0,0,171,0,0,0,125,83,0,0,172,0,0,0,115,83,0,0,173,0,0,0,79,96,0,0,2,0,4,0,82,96,0,0,3,1,3,0,86,96,0,0,3,1,2,0,90,96,0,0,4,0,1,0,115,83,0,0,9,0,0,0,59,100,0,0,6,0,0,0,178,97,0,0,8,0,0,0,187,97,0,0,10,0,0,0,66,100,0,0,5,0,0,0,116,97,0,0,7,0,0,0,72,100,0,0,10,0,0,0,83,100,0,0,10,0,0,0,0,0,0,0,136,0,0,0,143,0,0,0,133,0,0,0,144,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,137,0,0,0,145,0,0,0,134,0,0,0,146,0,0,0,134,0,0,0,0,0,0,0,0,0,0,0,135,0,0,0,135,0,0,0,145,0,0,0,147,0,0,0,147,0,0,0,146,0,0,0,148,0,0,0,134,0,0,0,149,0,0,0,150,0,0,0,138,0,0,0,147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,0,0,151,0,0,0,135,0,0,0,152,0,0,0,136,0,0,0,0,0,0,0,255,255,255,255,255,255,0,252,1,0,0,248,1,0,0,248,48,0,0,0,7,232,0,0,6,108,1,0,47,236,1,0,7,172,2,0,1,208,2,0,3,216,2,0,1,236,2,0,1,252,2,0,1,92,3,0,1,220,3,0,4,8,11,0,14,72,11,0,7,148,11,0,1,180,11,0,129,188,11,0,1,212,13,0,1,248,13,0,2,16,14,0,1,28,14,0,1,216,15,0,8,8,18,0,6,104,21,0,2,36,22,0,1,60,22,0,55,68,22,0,2,204,23,0,5,0,24,0,22,24,24,0,2,120,24,0,21,44,25,0,4,168,25,0,1,192,25,0,1,80,27,0,15,88,27,0,7,156,27,0,2,244,27,0,14,0,28,0,1,60,28,0,1,68,28,0,27,192,28,0,11,152,30,0,9,172,31,0,4,216,31,0,4,88,32,0,9,108,32,0,3,148,32,0,5,164,32,0,15,192,32,0,3,100,33,0,1,120,33,0,27,144,35,0,4,0,36,0,3,232,36,0,18,248,36,0,7,68,37,0,4,136,37,0,1,192,37,0,3,4,38,0,1,240,38,0,7,248,38,0,2,28,39,0,3,44,39,0,1,92,39,0,2,136,39,0,2,200,39,0,2,232,39,0,3,4,40,0,1,240,40,0,5,248,40,0,2,28,41,0,3,44,41,0,1,68,41,0,2,192,41,0,1,212,41,0,3,4,42,0,1,240,42,0,8,248,42,0,3,28,43,0,3,44,43,0,2,136,43,0,2,192,43,0,3,4,44,0,1,240,44,0,7,248,44,0,2,28,45,0,3,44,45,0,2,88,45,0,2,136,45,0,1,192,45,0,1,8,46,0,5,248,46,0,3,24,47,0,4,40,47,0,1,92,47,0,8,204,47,0,3,4,48,0,7,248,48,0,3,24,49,0,4,40,49,0,2,84,49,0,2,136,49,0,1,252,49,0,2,8,50,0,1,240,50,0,7,248,50,0,3,24,51,0,4,40,51,0,2,84,51,0,2,136,51,0,2,8,52,0,7,248,52,0,3,24,53,0,4,40,53,0,1,92,53,0,2,136,53,0,1,228,53,0,2,8,54,0,1,40,55,0,6,60,55,0,1,88,55,0,8,96,55,0,3,200,55,0,1,196,56,0,7,208,56,0,1,252,56,0,9,28,57,0,2,104,57,0,1,196,58,0,6,208,58,0,2,236,58,0,6,32,59,0,31,4,60,0,12,208,60,0,23,196,61,0,11,52,62,0,36,100,62,0,15,248,62,0,13,56,63,0,20,172,64,0,6,40,65,0,4,88,65,0,3,120,65,0,3,136,65,0,7,156,65,0,4,196,65,0,12,8,66,0,1,60,66,0,6,104,66,0,1,236,67,0,12,116,77,0,10,64,78,0,1,0,80,0,2,180,89,0,1,0,90,0,2,108,90,0,3,172,91,0,3,72,92,0,5,200,92,0,2,72,93,0,2,200,93,0,35,208,94,0,4,96,95,0,1,116,95,0,15,0,96,0,1,164,98,0,12,128,100,0,12,192,100,0,1,0,101,0,2,16,101,0,17,192,102,0,2,32,103,0,34,120,103,0,5,92,104,0,2,120,104,0,10,84,105,0,29,128,105,0,1,252,105,0,7,128,106,0,6,160,106,0,5,0,108,0,17,208,108,0,35,104,109,0,3,0,110,0,13,132,110,0,14,152,111,0,4,240,111,0,20,144,112,0,5,236,112,0,2,248,113,0,8,0,115,0,25,64,115,0,1,180,115,0,3,200,115,0,39,0,119,0,4,240,119,0,1,244,126,0,3,252,126,0,3,52,127,0,3,116,127,0,3,180,127,0,2,244,127,0,101,0,128,0,6,168,129,0,5,232,129,0,5,40,130,0,26,128,130,0,33,64,131,0,2,0,132,0,4,12,132,0,2,32,132,0,1,80,132,0,3,88,132,0,6,120,132,0,1,148,132,0,1,156,132,0,1,164,132,0,1,184,132,0,2,232,132,0,5,0,133,0,4,40,133,0,1,60,133,0,100,66,134,0,39,0,144,0,11,0,145,0,78,112,146,0,0,2,148,0,117,4,156,0,185,83,158,0,10,64,173,0,6,148,179,0,3,188,179,0,4,228,179,0,2,248,179,0,1,192,181,0,1,252,181,0,79,128,183,0,12,192,184,0,26,0,186,0,89,108,186,0,214,0,188,0,12,192,191,0,5,0,192,0,25,32,192,0,7,168,192,0,2,216,192,0,3,244,192,0,4,100,194,0,1,128,194,0,1,236,195,0,2,64,198,0,10,88,198,0,36,0,199,0,31,0,200,0,30,168,200,0,1,64,201,0,32,128,201,0,39,40,202,0,63,0,203,0,0,1,204,0,64,0,55,1,55,64,146,2,2,248,147,2,3,52,152,2,16,188,153,2,1,124,154,2,8,192,155,2,23,0,156,2,2,128,156,2,2,36,158,2,1,8,160,2,1,24,160,2,1,44,160,2,9,140,160,2,4,216,160,2,4,208,161,2,2,0,162,2,17,208,162,2,2,56,163,2,18,128,163,2,3,224,163,2,10,152,164,2,13,28,165,2,1,124,165,2,4,0,166,2,27,204,166,2,2,120,167,2,14,164,168,2,1,12,169,2,2,48,169,2,4,112,169,2,3,220,169,2,1,236,169,2,1,192,170,2,3,200,170,2,2,220,170,2,2,248,170,2,1,4,171,2,2,120,171,2,7,172,171,2,2,212,171,2,11,140,175,2,1,0,96,3,2,252,109,3,2,252,111,3,1,252,127,3,1,120,236,3,1,164,236,3,16,200,238,3,2,248,244,3,2,240,247,3,26,0,248,3,7,128,248,3,35,192,248,3,19,80,249,3,4,160,249,3,1,252,251,3,15,4,252,3,7,104,252,3,6,236,252,3,11,108,253,3,7,128,255,3,7,160,255,3,5,228,255,3,3,0,4,4,9,220,4,4,17,228,5,4,12,64,6,4,46,64,7,4,1,124,14,4,1,64,15,4,1,92,33,4,1,124,36,4,1,252,36,4,3,4,40,4,2,20,40,4,4,48,40,4,3,224,40,4,1,252,40,4,9,64,41,4,1,252,41,4,7,228,44,4,3,0,64,4,22,224,64,4,3,0,66,4,18,192,66,4,3,0,68,4,14,156,68,4,4,0,69,4,3,0,70,4,14,204,70,4,4,20,71,4,13,172,90,4,4,192,145,4,46,68,189,5,4,60,190,5,246,0,64,7,39,0,68,7,181,164,68,7,70,0,72,7,87,0,76,7,1,4,91,7,1,108,91,7,1,236,91,7,1,84,92,7,1,212,92,7,1,60,93,7,1,188,93,7,1,36,94,7,1,164,94,7,1,12,95,7,2,192,187,7,44,0,192,7,100,192,192,7,15,128,194,7,14,196,194,7,15,4,195,7,15,68,195,7,31,64,196,7,60,192,196,7,43,192,197,7,29,152,199,7,43,64,200,7,9,0,201,7,2,64,201,7,33,0,204,7,6,192,204,7,70,220,204,7,20,0,206,7,37,128,206,7,5,24,207,7,17,128,207,7,63,0,208,7,1,0,209,7,182,8,209,7,4,228,211,7,62,0,212,7,4,0,213,7,24,64,213,7,70,236,215,7,11,20,217,7,70,0,218,7,116,0,220,7,1,4,0,56,96,128,0,56,240,0,4,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,153,0,0,0,135,0,0,0,136,0,0,0,140,0,0,0,148,0,0,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,105,0,0,0,0,2,0,172,105,0,0,0,0,4,0,0,0,0,0,0,0,0,0,148,105,0,0,1,0,0,0,151,105,0,0,2,0,0,0,154,105,0,0,6,0,0,0,158,105,0,0,128,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,154,0,0,0,136,0,0,0,141,0,0,0,130,0,0,0,155,0,0,0,142,0,0,0,174,0,0,0,130,0,0,0,131,0,0,0,137,0,0,0,138,0,0,0,156,0,0,0,139,0,0,0,150,0,0,0,157,0,0,0,158,0,0,0,159,0,0,0,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,136,0,0,1,0,0,0,66,81,0,0,1,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,175,0,0,0,0,0,0,0,32,124,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,22,124,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,2,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,82,0,0,95,124,0,0,108,124,0,0,0,0,0,0,121,124,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,178,0,0,0,0,0,0,0,115,125,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,179,0,0,0,0,0,0,0,240,125,0,0,0,0,0,0,0,0,0,0,67,133,0,0,0,0,0,0,8,0,0,0,35,129,0,0,1,1,0,0,0,0,0,0,82,133,0,0,2,0,0,0,0,0,16,0,98,133,0,0,3,0,0,0,0,0,0,0,158,128,0,0,4,1,0,0,0,0,0,0,67,129,0,0,5,0,0,0,0,0,0,0,111,133,0,0,6,0,0,0,0,0,0,0,131,133,0,0,2,0,0,0,0,0,0,16,147,133,0,0,2,0,0,0,16,0,0,0,168,133,0,0,7,0,0,0,0,0,0,0,183,133,0,0,8,0,0,0,0,0,0,0,199,133,0,0,2,0,0,0,128,0,0,0,213,133,0,0,0,2,0,0,15,0,0,0,226,133,0,0,10,1,0,0,0,0,0,0,240,133,0,0,11,1,0,0,0,0,0,0,3,134,0,0,2,0,0,0,0,0,0,1,22,134,0,0,2,0,0,0,0,1,0,0,170,130,0,0,12,0,0,0,0,0,0,0,45,134,0,0,13,1,0,0,0,0,0,0,63,134,0,0,14,1,0,0,0,0,0,0,80,134,0,0,2,0,0,0,0,0,8,0,93,134,0,0,0,2,0,0,0,0,0,0,108,134,0,0,2,0,0,0,4,0,0,0,126,134,0,0,2,0,0,0,8,0,0,0,136,134,0,0,2,0,0,0,0,32,0,0,161,134,0,0,15,1,0,0,0,0,0,0,180,134,0,0,16,1,0,0,0,0,0,0,191,134,0,0,17,1,0,0,0,0,0,0,202,134,0,0,16,1,0,0,1,0,0,0,9,130,0,0,18,1,0,0,0,0,0,0,3,129,0,0,19,1,0,0,0,0,0,0,16,129,0,0,20,0,0,0,0,0,0,0,214,134,0,0,2,0,0,0,0,128,0,0,246,128,0,0,22,0,0,0,0,0,0,0,233,134,0,0,23,1,0,0,0,0,0,0,79,129,0,0,24,0,0,0,0,0,0,0,248,134,0,0,23,1,0,0,0,0,0,0,205,128,0,0,25,0,0,0,0,0,0,0,3,135,0,0,2,0,0,0,0,0,0,2,14,135,0,0,18,1,0,0,0,0,0,0,26,135,0,0,2,0,0,0,0,64,0,0,43,135,0,0,2,0,0,0,0,0,4,0,62,135,0,0,2,0,0,0,0,0,2,0,88,135,0,0,0,0,0,0,1,0,0,0,215,128,0,0,26,0,0,0,0,0,0,0,103,135,0,0,2,0,0,0,64,0,0,0,122,135,0,0,27,0,0,0,0,0,0,0,32,131,0,0,28,0,0,0,0,0,0,0,136,135,0,0,29,1,0,0,0,0,0,0,146,129,0,0,30,1,0,0,0,0,0,0,142,135,0,0,31,1,0,0,0,0,0,0,89,129,0,0,32,0,0,0,0,0,0,0,100,129,0,0,33,0,0,0,0,0,0,0,48,131,0,0,34,0,0,0,0,0,0,0,153,135,0,0,0,0,0,0,6,0,0,0,5,131,0,0,35,0,0,0,0,0,0,0,166,135,0,0,36,1,0,0,0,0,0,0,181,135,0,0,2,0,0,0,0,8,1,0,165,132,0,0,120,132,0,0,197,132,0,0,202,132,0,0,210,132,0,0,134,132,0,0,13,132,0,0,178,132,0,0,184,132,0,0,190,132,0,0,159,132,0,0,165,132,0,0,120,132,0,0,88,97,0,0,169,132,0,0,174,132,0,0,82,132,0,0,120,132,0,0,137,132,0,0,144,132,0,0,151,132,0,0,130,132,0,0,132,132,0,0,134,132,0,0,82,132,0,0,120,132,0,0,125,132,0,0,82,132,0,0,120,132,0,0,79,132,0,0,82,132,0,0,13,132,0,0,86,132,0,0,91,132,0,0,94,132,0,0,104,132,0,0,114,132,0,0,13,132,0,0,248,99,0,0,19,132,0,0,26,132,0,0,74,131,0,0,1,0,0,0,79,131,0,0,1,0,0,0,85,131,0,0,2,0,0,0,94,131,0,0,3,0,0,0,103,131,0,0,2,0,0,0,111,131,0,0,3,0,0,0,119,131,0,0,0,0,0,0,126,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,131,0,0,232,101,0,0,61,131,0,0,44,133,0,0,51,133,0,0,59,133,0,0,252,130,0,0,158,105,0,0,63,133,0,0,114,132,0,0,64,0,0,0,141,131,0,0,66,0,0,0,136,131,0,0,65,0,0,0,113,139,0,0,67,0,0,0,79,120,0,0,3,0,0,0,75,120,0,0,3,0,0,0,66,75,0,0,150,149,0,0,156,149,0,0,161,149,0,0,166,149,0,0,26,150,0,0,32,150,0,0,40,150,0,0,255,157,0,0,4,158,0,0,11,158,0,0,14,158,0,0,17,158,0,0,20,158,0,0,23,158,0,0,26,158,0,0,34,158,0,0,66,100,0,0,86,132,0,0,43,158,0,0,62,169,0,0,71,169,0,0,78,169,0,0,84,169,0,0,167,169,0,0,177,169,0,0,188,169,0,0,200,169,0,0,211,169,0,0,222,169,0,0,233,169,0,0,238,169,0,0,243,169,0,0,254,169,0,0,10,170,0,0,17,170,0,0,25,170,0,0,33,170,0,0,38,170,0,0,44,170,0,0,51,170,0,0,65,170,0,0,78,170,0,0,84,170,0,0,88,170,0,0,99,170,0,0,104,170,0,0,112,170,0,0,118,170,0,0,125,170,0,0,130,170,0,0,139,170,0,0,144,170,0,0,153,170,0,0,158,170,0,0,163,170,0,0,169,170,0,0,177,170,0,0,187,170,0,0,195,170,0,0,205,170,0,0,214,170,0,0,221,170,0,0,231,170,0,0,244,170,0,0,249,170,0,0,5,171,0,0,13,171,0,0,18,171,0,0,23,171,0,0,26,171,0,0,32,171,0,0,39,171,0,0,48,171,0,0,59,171,0,0,65,171,0,0,76,171,0,0,86,171,0,0,96,171,0,0,105,171,0,0,115,171,0,0,129,171,0,0,143,171,0,0,154,171,0,0,167,171,0,0,178,171,0,0,184,171,0,0,196,171,0,0,203,171,0,0,210,171,0,0,217,171,0,0,224,171,0,0,235,171,0,0,244,171,0,0,250,171,0,0,4,172,0,0,7,172,0,0,11,172,0,0,20,172,0,0,29,172,0,0,36,172,0,0,43,172,0,0,51,172,0,0,54,172,0,0,57,172,0,0,60,172,0,0,63,172,0,0,66,172,0,0,69,172,0,0,79,172,0,0,86,172,0,0,92,172,0,0,102,172,0,0,113,172,0,0,117,172,0,0,126,172,0,0,135,172,0,0,142,172,0,0,152,172,0,0,159,172,0,0,166,172,0,0,173,172,0,0,181,172,0,0,192,172,0,0,206,172,0,0,217,172,0,0,224,172,0,0,232,172,0,0,238,172,0,0,246,172,0,0,251,172,0,0,6,173,0,0,11,173,0,0,18,173,0,0,31,173,0,0,41,173,0,0,51,173,0,0,56,173,0,0,65,173,0,0,71,173,0,0,77,173,0,0,83,173,0,0,89,173,0,0,97,173,0,0,103,173,0,0,115,173,0,0,127,173,0,0,139,173,0,0,151,173,0,0,164,173,0,0,174,173,0,0,184,173,0,0,196,173,0,0,208,173,0,0,218,173,0,0,229,173,0,0,240,173,0,0,248,173,0,0,253,173,0,0,3,174,0,0,13,174,0,0,22,174,0,0,29,174,0,0,35,174,0,0,47,174,0,0,57,174,0,0,70,174,0,0,83,174,0,0,92,174,0,0,100,174,0,0,109,174,0,0,120,174,0,0,127,174,0,0,137,174,0,0,144,174,0,0,152,174,0,0,161,174,0,0,167,174,0,0,175,174,0,0,181,174,0,0,189,174,0,0,199,174,0,0,208,174,0,0,213,174,0,0,224,174,0,0,229,174,0,0,57,175,0,0,70,175,0,0,0,0,0,0,106,175,0,0,131,175,0,0,162,175,0,0,181,175,0,0,136,126,0,0,206,175,0,0,243,175,0,0,255,175,0,0,14,176,0,0,47,176,0,0,65,176,0,0,90,176,0,0,119,176,0,0,136,176,0,0,96,160,0,0,90,74,0,0,159,176,0,0,177,176,0,0,195,176,0,0,234,176,0,0,9,177,0,0,30,177,0,0,62,177,0,0,96,177,0,0,151,0,0,0,152,0,0,0,153,0,0,0,1,0,0,0,160,0,0,0,137,0,0,0,138,0,0,0,143,0,0,0,154,0,0,0,155,0,0,0,156,0,0,0,157,0,0,0,158,0,0,0,144,0,0,0,161,0,0,0,162,0,0,0,0,0,0,0,136,0,0,0,141,0,0,0,159,0,0,0,139,0,0,0,137,0,0,0,3,178,0,0,145,0,0,0,0,0,0,0,222,177,0,0,163,0,0,0,0,0,0,0,81,105,0,0,160,0,0,0,0,0,0,0,8,178,0,0,161,0,0,0,0,0,0,0,15,178,0,0,162,0,0,0,0,0,0,0,20,178,0,0,163,0,0,0,0,0,0,0,26,178,0,0,164,0,0,0,0,0,0,0,36,178,0,0,146,0,0,0,0,0,0,0,42,178,0,0,147,0,0,0,0,0,0,0,47,178,0,0,0,0,0,0,0,0,0,0,53,178,0,0,0,0,0,0,0,0,0,0,61,178,0,0,148,0,0,0,0,0,0,0,67,178,0,0,0,0,0,0,0,0,0,0,74,178,0,0,0,0,0,0,0,0,0,0,83,178,0,0,165,0,0,0,0,0,0,0,90,178,0,0,0,0,0,0,0,0,0,0,100,178,0,0,164,0,0,0,0,0,0,0,107,178,0,0,166,0,0,0,0,0,0,0,121,178,0,0,167,0,0,0,0,0,0,0,127,178,0,0,165,0,0,0,0,0,0,0,133,178,0,0,149,0,0,0,0,0,0,0,140,178,0,0,130,0,0,0,0,0,0,0,148,178,0,0,137,0,0,0,0,0,0,0,153,178,0,0,168,0,0,0,0,0,0,0,160,178,0,0,0,0,0,0,0,0,0,0,167,178,0,0,131,0,0,0,0,0,0,0,179,178,0,0,150,0,0,0,0,0,0,0,188,178,0,0,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,179,0,0,38,179,0,0,47,179,0,0,52,179,0,0,3,0,0,0,166,0,0,0,137,0,0,0,138,0,0,0,143,0,0,0,154,0,0,0,155,0,0,0,170,0,0,0,171,0,0,0,172,0,0,0,144,0,0,0,161,0,0,0,162,0,0,0,0,0,0,0,136,0,0,0,141,0,0,0,159,0,0,0,139,0,0,0,137,0,0,0,0,0,0,0,3,0,0,0,167,0,0,0,137,0,0,0,138,0,0,0,143,0,0,0,154,0,0,0,155,0,0,0,173,0,0,0,174,0,0,0,175,0,0,0,144,0,0,0,161,0,0,0,162,0,0,0,140,0,0,0,136,0,0,0,141,0,0,0,159,0,0,0,139,0,0,0,137,0,0,0,0,0,0,0,1,0,1,8,1,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,46,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,1,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,46,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,2,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,52,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,2,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,52,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,3,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,58,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,3,0,0,0,0,0,0,0,180,0,0,0,0,0,0,0,58,182,0,0,0,0,0,0,0,0,0,0,255,255,33,8,0,0,0,0,0,0,0,0,181,0,0,0,0,0,0,0,181,142,0,0,0,0,0,0,0,0,0,0,0,0,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,142,0,0,0,0,0,0,0,0,0,0,1,0,33,16,0,0,0,0,0,0,0,0,182,0,0,0,142,0,0,0,181,142,0,0,0,0,0,0,0,0,0,0,255,255,33,8,1,0,0,0,0,0,0,0,181,0,0,0,0,0,0,0,185,142,0,0,0,0,0,0,0,0,0,0,0,0,33,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,185,142,0,0,0,0,0,0,0,0,0,0,1,0,33,16,1,0,0,0,0,0,0,0,182,0,0,0,142,0,0,0,185,142,0,0,0,0,0,0,0,0,0,0,1,0,129,8,0,0,0,0,0,0,0,0,183,0,0,0,0,0,0,0,63,182,0,0,0,0,0,0,0,0,0,0,1,0,65,8,0,0,0,0,0,0,0,0,184,0,0,0,0,0,0,0,70,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,185,0,0,0,0,0,0,0,77,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,186,0,0,0,0,0,0,0,83,182,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,186,0,0,0,0,0,0,0,83,182,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,187,0,0,0,0,0,0,0,90,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,97,182,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,189,0,0,0,0,0,0,0,105,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,190,0,0,0,0,0,0,0,110,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,114,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,191,0,0,0,0,0,0,0,114,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,120,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,193,0,0,0,0,0,0,0,126,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,182,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,182,0,0,0,0,0,0,0,0,0,0,255,255,1,10,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,132,182,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,195,0,0,0,0,0,0,0,141,182,0,0,0,0,0,0,0,0,0,0,2,0,1,10,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,145,182,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,152,182,0,0,0,0,0,0,0,0,0,0,2,0,1,12,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,161,182,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,172,182,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,196,0,0,0,0,0,0,0,179,182,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,197,0,0,0,0,0,0,0,186,182,0,0,0,0,0,0,0,0,0,0,2,0,33,8,0,0,0,0,0,0,0,0,198,0,0,0,0,0,0,0,197,182,0,0,0,0,0,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,0,0,194,0,0,0,0,0,0,0,204,182,0,0,0,0,0,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,0,0,199,0,0,0,0,0,0,0,219,182,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,200,0,0,0,0,0,0,0,236,182,0,0,0,0,0,0,0,0,0,0,1,0,1,32,0,0,0,0,0,0,0,0,201,0,0,0,0,0,0,0,247,182,0,0,0,0,0,0,0,0,0,0,1,0,1,32,0,0,0,0,0,0,0,0,202,0,0,0,0,0,0,0,17,183,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,203,0,0,0,0,0,0,0,42,183,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,204,0,0,0,0,0,0,0,48,183,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,205,0,0,0,0,0,0,0,66,183,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,206,0,0,0,0,0,0,0,74,183,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,207,0,0,0,0,0,0,0,88,183,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,208,0,0,0,0,0,0,0,96,183,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,209,0,0,0,143,0,0,0,105,183,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,209,0,0,0,144,0,0,0,109,183,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,209,0,0,0,145,0,0,0,115,183,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,210,0,0,0,146,0,0,0,119,183,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,210,0,0,0,146,0,0,0,119,183,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,211,0,0,0,147,0,0,0,125,183,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,211,0,0,0,147,0,0,0,125,183,0,0,0,0,0,0,0,0,0,0,2,0,13,8,58,75,0,0,0,0,0,0,212,0,0,0,0,0,0,0,141,131,0,0,0,0,0,0,0,0,0,0,2,0,5,8,62,75,0,0,0,0,0,0,212,0,0,0,0,0,0,0,136,131,0,0,0,0,0,0,0,0,0,0,3,0,5,8,62,75,0,0,0,0,0,0,212,0,0,0,0,0,0,0,136,131,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,213,0,0,0,0,0,0,0,173,180,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,214,0,0,0,0,0,0,0,193,180,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,215,180,0,0,0,0,0,0,0,0,0,0,255,255,1,32,0,0,0,0,0,0,0,0,216,0,0,0,0,0,0,0,2,181,0,0,0,0,0,0,0,0,0,0,255,255,1,32,0,0,0,0,0,0,0,0,217,0,0,0,0,0,0,0,12,181,0,0,0,0,0,0,0,0,0,0,255,255,1,32,0,0,0,0,0,0,0,0,218,0,0,0,0,0,0,0,17,181,0,0,0,0,0,0,0,0,0,0,255,255,1,32,0,0,0,0,0,0,0,0,219,0,0,0,0,0,0,0,22,181,0,0,0,0,0,0,0,0,0,0,255,255,1,32,0,0,0,0,0,0,0,0,220,0,0,0,0,0,0,0,31,181,0,0,0,0,0,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,0,0,221,0,0,0,0,0,0,0,40,181,0,0,0,0,0,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,0,0,222,0,0,0,0,0,0,0,53,181,0,0,0,0,0,0,0,0,0,0,0,0,1,32,0,0,0,0,0,0,0,0,223,0,0,0,0,0,0,0,71,181,0,0,0,0,0,0,0,0,0,0,158,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,39,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,0,0,0,152,0,0,0,196,191,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255],"i8",4,l.aa); -z([2,0,2,0,8,0,9,0,14,0,16,0,20,0,23,0,25,0,25,0,29,0,33,0,36,0,41,0,46,0,48,0,53,0,54,0,59,0,62,0,65,0,67,0,69,0,78,0,81,0,86,0,91,0,95,0,96,0,101,0,105,0,109,0,117,0,122,0,128,0,136,0,142,0,152,0,159,0,162,0,162,0,165,0,167,0,167,0,171,0,176,0,179,0,184,0,184,0,188,0,192,0,199,0,204,0,209,0,212,0,218,0,221,0,225,0,234,0,240,0,240,0,240,0,243,0,246,0,250,0,251,0,255,0,5,1,9,1,16,1,22,1,34,1,40,1,49,1,51,1,57,1,62,1,64,1,71,1,76,1,81,1,87,1,93,1,98,1,102,1,105,1,111,1,115,1,122,1,124,1,131,1,133,1,135,1,144,1,148,1,154,1,160,1,168,1,173,1,173,1,189,1,196,1,203,1,204,1,211,1,215,1,219,1,223,1,227,1,230,1,232,1,234,1,240,1,244,1,252,1,1,2,9,2,12,2,17,2,22,2,28,2,32,2,37,2,0,0,2,0,3,0,5,0,6,0,7,0,8,0,9,0,33,0,32,0,30,0,28,0,26,0,65,0,14,26,181,0,64,1,192,0,14,23,216,0,14,7,0,1,1,48,50,1,1,6,57,1,1,16,74,1,1,46,120,1,116,1,121,1,1,6,127,1,104,1,129,1,50,1,130,1,1,4,134,1,44,1,135,1,0,1,137,1,42,2,139,1,0,1,142,1,32,1,143,1,38,1,144,1,40,1,145,1,0,1,147,1,42,1,148,1,46,1,150,1,52,1,151,1,48,1,152,1,0,1,156,1,52,1,157,1,54,1,159,1,56,1,160,1,1,6,166,1,60,1,167,1,0,1,169,1,60,1,172,1,0,1,174,1,60,1,175,1,0,1,177,1,58,2,179,1,1,4,183,1,62,1,184,1,0,1,188,1,0,1,196,1,2,1,197,1,0,1,199,1,2,1,200,1,0,1,202,1,2,1,203,1,1,18,222,1,1,18,241,1,2,1,242,1,1,4,246,1,122,1,247,1,134,1,248,1,1,40,32,2,110,1,34,2,1,18,58,2,70,1,59,2,0,1,61,2,108,1,62,2,68,1,65,2,0,1,67,2,106,1,68,2,28,1,69,2,30,1,70,2,1,10,69,3,36,1,112,3,1,4,118,3,0,1,134,3,18,1,136,3,16,3,140,3,26,1,142,3,24,2,145,3,14,17,163,3,14,9,194,3,0,1,207,3,4,1,208,3,140,1,209,3,142,1,213,3,146,1,214,3,144,1,216,3,1,24,240,3,136,1,241,3,138,1,244,3,130,1,245,3,128,1,247,3,0,1,249,3,152,1,250,3,0,1,253,3,110,3,0,4,34,16,16,4,14,32,96,4,1,34,138,4,1,54,192,4,6,1,193,4,1,14,208,4,1,88,49,5,22,38,160,16,66,38,199,16,66,1,205,16,66,1,0,30,1,150,155,30,132,1,158,30,96,1,160,30,1,96,8,31,150,8,24,31,150,6,40,31,150,8,56,31,150,8,72,31,150,6,89,31,151,8,104,31,150,8,136,31,150,8,152,31,150,8,168,31,150,8,184,31,150,2,186,31,126,2,188,31,148,1,190,31,100,1,200,31,124,4,204,31,148,1,216,31,150,2,218,31,120,2,232,31,150,2,234,31,118,2,236,31,152,1,248,31,112,2,250,31,114,2,252,31,148,1,38,33,98,1,42,33,92,1,43,33,94,1,50,33,12,1,96,33,8,16,131,33,0,1,182,36,10,26,0,44,22,47,96,44,0,1,98,44,88,1,99,44,102,1,100,44,90,1,103,44,1,6,109,44,84,1,110,44,86,1,111,44,80,1,112,44,82,1,114,44,0,1,117,44,0,1,126,44,78,2,128,44,1,100,235,44,1,4,242,44,0,1,64,166,1,46,128,166,1,24,34,167,1,14,50,167,1,62,121,167,1,4,125,167,76,1,126,167,1,10,139,167,0,1,141,167,74,1,144,167,1,4,160,167,1,10,170,167,72,1,33,255,14,26,1,0,2,0,8,0,15,0,16,0,26,0,28,0,32,0,37,0,38,0,40,0,48,0,63,0,64,0,69,0,71,0,79,0,80,0,116,0,202,0,203,0,205,0,206,0,207,0,209,0,210,0,211,0,213,0,214,0,217,0,218,0,219,0,7,3,96,28,40,42,43,42,188,90,216,90,252,117,193,213,225,213,226,213,228,213,3,214,9,214,25,214,65,223,186,223,65,226,163,226,251,227,26,241,244,254,61,255,93,255,126,255,128,255,130,255,135,255,144,255,156,255,159,255,170,255,182,255,192,255,196,255,198,255,200,255,202,255,208,255,226,255,231,255,234,255,241,255,247,255,248,255,249,255,0,0,5,7,56,7,67,7,99,7,136,7,148,7,203,7,232,7,248,7,12,8,62,8,120,8,158,8,216,8,238,8,40,9,79,9,168,9,184,9,212,9,36,10,108,10,172,10,222,10,26,11,78,11,138,11,168,11,184,11,212,11,8,13,128,13,112,14,128,14,144,14,160,14,56,15,72,15,88,15,128,15,168,15,200,15,10,16,42,16,74,16,106,16,138,16,170,16,200,16,216,16,248,16,56,17,72,17,120,17,152,17,4,24,54,24,120,24,136,24,216,24,29,25,105,25,129,25,8,240,28,240,94,240,152,240,202,240,248,240,8,241,30,241,88,241,104,241,140,241,184,241,218,241,252,241,46,242,170,242,202,242,248,242,10,243,94,243,156,243,234,243,14,244,72,244,90,244,120,244,140,244,176,244,184,244,192,244,200,244,10,245,204,245,74,246,106,246,42,247,158,247,113,255,186,3,86,0,21,0,206,255,23,0,79,0,134,0,226,0,136,255,129,255,146,0,161,0,35,1,93,1,110,1,55,1,126,1,118,1,231,0,108,1,111,1,140,1,142,1,236,0,61,1,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,204,1,247,1,55,2,57,2,60,2,65,2,68,2,70,2,72,2,75,2,81,2,119,2,132,2,134,2,137,2,143,2,145,2,147,2,149,2,152,2,158,2,196,2,208,2,247,2,3,3,42,3,54,3,93,3,105,3,144,3,162,3,179,3,182,3,189,3,191,3,195,3,198,3,200,3,230,3,237,3,245,3,254,3,1,4,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,153,255,218,1,212,0,15,0,242,1,222,0,255,1,153,255,97,0,45,2,153,255,153,255,153,255,153,255,176,255,9,0,59,0,19,0,38,1,38,1,203,255,194,255,178,2,179,2,223,2,225,2,228,2,232,2,133,0,54,1,148,0,74,1,160,0,124,1,18,3,20,3,145,1,40,1,21,3,221,2,85,0,210,2,214,255,68,1,252,1,16,3,60,3,61,3,62,3,166,2,201,2,151,1,69,0,150,0,194,0,188,0,33,1,45,1,147,1,205,1,229,1,56,2,105,2,161,2,212,2,11,3,24,3,56,3,63,3,69,3,74,3,78,3,80,3,113,3,124,3,132,3,163,3,168,3,190,1,142,3,143,3,176,3,181,3,133,3,187,3,199,3,210,3,155,3,224,3,225,3,188,3,228,3,231,3,242,3,33,1,250,3,9,4,19,4,22,4,25,4,32,4,166,3,205,3,229,3,232,3,234,3,133,3,244,3,251,3,36,4,246,3,236,3,252,3,207,3,0,4,208,3,16,4,11,4,23,4,21,4,253,3,239,3,27,4,29,4,7,4,10,4,59,4,2,4,58,4,60,4,240,3,241,3,65,4,12,4,44,4,35,4,45,4,47,4,48,4,49,4,81,4,87,4,52,4,26,4,56,4,66,4,55,4,91,4,93,4,34,4,24,4,104,4,114,4,116,4,100,4,121,4,124,4,125,4,127,4,107,4,111,4,113,4,117,4,106,4,118,4,119,4,120,4,123,4,110,4,126,4,128,4,82,4,88,4,89,4,92,4,90,4,101,4,99,4,103,4,147,4,151,4,95,4,140,4,96,4,97,4,142,4,122,4,131,4,133,4,136,4,143,4,187,4,190,4,200,4,201,4,208,4,209,4,210,4,211,4,108,4,129,4,109,4,177,4,184,4,204,4,55,1,26,5,145,0,139,2,2,0,192,0,140,2,82,1,12,3,92,0,92,0,92,0,92,0,85,0,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,88,0,88,0,88,0,87,0,79,1,71,1,88,3,88,3,92,0,92,0,92,0,92,0,185,2,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,76,0,39,3,74,0,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,79,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,12,3,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,100,1,40,3,8,3,189,2,177,2,177,2,86,0,83,0,166,0,1,1,41,3,203,2,174,1,86,0,83,0,166,0,68,1,185,2,88,3,88,3,201,0,158,0,20,1,131,1,15,1,130,1,188,0,177,2,177,2,60,3,86,0,83,0,166,0,13,1,65,3,49,0,123,0,87,0,79,1,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,239,0,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,251,2,77,1,76,1,216,0,152,1,138,1,69,0,231,0,137,1,178,2,179,2,140,1,142,3,251,0,98,1,250,0,32,1,59,1,174,1,140,3,174,1,141,3,89,0,89,0,88,0,88,0,88,0,87,0,79,1,135,1,88,3,88,3,178,2,179,2,183,0,95,0,123,0,128,1,125,1,124,1,65,3,31,0,65,3,49,0,144,3,144,3,239,2,240,2,123,1,123,0,55,1,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,114,0,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,174,1,152,1,143,1,179,1,145,2,88,3,88,3,90,1,57,0,232,0,60,3,109,0,192,2,110,1,177,2,177,2,107,1,57,3,248,2,97,0,237,2,240,2,65,3,49,0,196,2,196,2,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,167,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,114,0,22,0,105,1,176,2,58,0,152,1,134,1,251,0,93,1,240,0,213,0,250,2,177,2,177,2,79,3,173,2,115,0,105,1,231,0,137,1,177,2,177,2,140,1,183,0,177,2,177,2,128,1,125,1,124,1,105,1,88,3,88,3,178,2,179,2,160,0,159,0,223,0,123,1,226,2,25,0,38,3,195,2,73,3,143,0,177,2,177,2,67,3,136,1,83,1,254,2,254,2,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,146,3,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,72,3,72,3,72,3,10,1,1,1,178,2,179,2,10,3,194,2,86,0,83,0,166,0,219,0,178,2,179,2,225,2,1,0,178,2,179,2,177,2,177,2,177,2,177,2,174,1,86,0,83,0,166,0,249,0,176,2,169,3,88,3,88,3,171,1,187,2,188,2,60,3,42,1,178,2,179,2,221,0,174,2,115,0,123,0,176,3,27,3,65,3,48,0,86,1,49,1,202,3,79,3,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,114,0,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,172,3,73,3,167,2,201,2,173,1,67,3,174,1,251,0,98,1,250,0,99,1,32,1,178,2,179,2,178,2,179,2,29,1,173,3,84,1,203,3,31,1,210,0,23,0,174,0,25,3,64,3,174,1,97,1,65,3,10,0,88,3,88,3,24,0,174,3,151,0,241,2,72,3,72,3,72,3,26,3,200,3,10,5,65,1,142,1,10,5,100,1,96,1,242,2,65,3,49,0,167,3,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,120,1,114,0,139,3,193,2,174,1,139,3,72,1,122,3,114,0,65,3,10,0,198,3,174,1,89,3,89,3,64,1,189,0,163,0,64,3,165,0,174,1,138,3,88,1,67,1,138,3,136,3,65,3,10,0,197,3,50,1,88,3,88,3,187,0,163,1,65,3,10,0,220,0,101,3,104,3,64,3,222,0,147,1,65,3,49,0,195,4,25,3,68,0,169,3,150,1,245,0,66,0,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,93,3,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,148,1,213,0,250,2,66,3,89,1,114,0,172,3,134,3,112,1,215,2,5,0,60,1,192,0,140,1,4,3,12,3,13,1,230,0,242,0,3,3,244,0,141,1,164,0,173,3,129,1,123,0,91,1,55,0,99,1,73,1,88,3,88,3,216,2,77,1,76,1,176,2,200,3,11,5,212,2,174,3,11,5,157,1,214,0,65,3,9,0,106,1,30,1,187,3,115,0,206,2,55,1,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,144,3,144,3,20,5,20,5,246,2,88,3,88,3,69,1,198,3,12,3,65,3,35,0,235,2,208,2,78,1,187,2,188,2,209,3,140,2,82,1,243,0,233,2,152,3,152,3,113,1,187,0,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,114,0,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,174,1,186,3,174,1,112,0,54,1,174,1,181,2,61,1,186,2,144,1,174,1,25,3,103,1,174,1,249,3,174,1,192,0,174,1,145,1,12,3,174,1,104,1,65,3,36,0,65,3,12,0,174,1,65,3,27,0,60,1,88,3,88,3,65,3,37,0,20,0,65,3,38,0,65,3,39,0,65,3,28,0,72,0,65,3,29,0,151,2,152,2,153,2,8,1,65,3,40,0,234,0,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,55,1,174,1,186,2,174,1,149,3,147,0,174,1,165,0,148,3,19,1,65,3,41,0,174,1,12,3,174,1,21,0,174,1,3,1,174,1,6,1,18,1,174,1,111,1,65,3,42,0,65,3,11,0,174,1,65,3,43,0,235,0,88,3,88,3,25,3,65,3,99,0,65,3,44,0,65,3,45,0,65,3,32,0,75,0,65,3,46,0,49,1,199,3,1,1,1,1,65,3,47,0,55,1,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,174,1,186,0,185,0,184,0,238,0,88,3,88,3,138,2,2,0,40,4,65,3,33,0,227,2,217,0,218,0,1,1,203,3,1,1,170,1,61,1,1,1,6,3,65,3,117,0,1,1,55,1,93,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,174,1,62,1,124,0,212,0,163,0,88,3,88,3,175,3,132,3,130,3,65,3,118,0,247,2,214,2,213,2,1,1,243,2,33,1,33,1,221,2,222,2,193,3,65,3,119,0,170,2,55,1,93,0,82,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,174,1,204,2,246,0,66,1,75,1,88,3,88,3,0,1,114,0,101,1,65,3,53,0,40,3,145,3,145,3,164,3,156,0,160,1,164,1,168,1,162,3,41,3,65,3,34,0,108,1,55,1,253,0,94,0,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,174,1,114,0,114,0,114,0,192,3,88,3,88,3,51,1,2,1,62,3,65,3,100,0,191,0,252,0,121,1,11,1,68,0,197,0,68,0,5,1,204,2,1,3,65,3,50,0,71,0,143,3,143,3,7,1,84,0,100,3,103,3,92,3,92,3,91,0,91,0,92,0,92,0,92,0,92,0,174,1,90,0,90,0,90,0,90,0,89,0,89,0,88,0,88,0,88,0,87,0,79,1,80,0,169,1,34,3,3,0,190,4,191,0,174,1,9,1,80,1,80,1,65,3,101,0,229,2,80,0,169,1,129,3,3,0,211,2,210,2,172,1,209,2,80,1,80,1,174,1,125,3,14,1,174,1,197,0,65,3,102,0,174,1,32,3,172,1,174,1,183,2,174,1,75,3,111,0,158,1,174,1,16,3,153,1,174,1,63,3,174,1,65,3,98,0,123,0,65,3,116,0,79,3,158,1,65,3,49,0,11,3,65,3,113,0,65,3,106,0,226,0,123,0,65,3,105,0,79,3,65,3,103,0,65,3,104,0,23,3,155,1,77,0,78,0,34,1,156,1,174,1,35,1,114,0,79,0,176,1,175,1,133,1,174,1,67,3,77,0,78,0,129,3,71,3,152,1,154,1,174,1,79,0,176,1,175,1,116,1,191,2,67,3,65,3,52,0,174,1,80,0,169,1,174,1,3,0,65,3,54,0,4,3,75,3,80,1,80,1,172,2,3,3,65,3,51,0,72,3,72,3,72,3,74,3,19,0,172,1,160,2,65,3,26,0,159,2,65,3,30,0,161,2,72,3,72,3,72,3,74,3,19,0,207,0,149,2,22,1,48,1,148,0,24,1,158,1,26,1,248,0,102,1,54,3,126,1,6,0,92,1,161,0,17,1,80,0,169,1,79,3,3,0,166,3,127,3,208,2,126,3,80,1,80,1,40,1,157,0,159,1,241,0,28,1,162,2,190,3,194,0,185,3,172,1,183,3,180,3,77,0,78,0,9,3,63,1,56,0,59,0,135,0,79,0,176,1,175,1,121,0,66,0,67,3,146,0,128,0,94,1,158,1,51,3,130,0,95,1,131,0,132,0,133,0,119,1,173,0,107,0,138,0,149,0,79,3,109,1,178,0,62,0,70,0,169,1,168,3,3,0,59,3,121,3,115,1,255,0,80,1,80,1,24,3,72,3,72,3,72,3,74,3,19,0,77,0,78,0,147,3,172,1,208,0,179,0,144,0,79,0,176,1,175,1,117,1,4,1,67,3,180,0,70,1,163,2,181,0,52,1,232,2,132,1,231,2,219,2,158,1,206,2,230,2,218,2,200,2,146,1,53,1,199,2,16,1,20,3,65,0,198,2,79,3,197,2,21,1,193,0,21,3,19,3,23,1,108,3,73,0,72,3,72,3,72,3,74,3,19,0,18,3,25,1,162,1,27,1,166,1,227,0,77,0,78,0,74,1,228,0,229,0,96,0,255,2,79,0,176,1,175,1,151,1,67,0,67,3,215,0,36,1,37,1,149,1,38,1,47,1,46,1,45,1,204,0,43,1,39,1,202,0,164,2,169,2,7,0,177,1,157,2,203,0,205,0,206,0,125,0,110,0,57,1,178,1,155,2,154,2,146,2,168,0,224,0,237,0,72,3,72,3,72,3,74,3,19,0,120,0,144,2,81,1,236,0,155,0,167,0,85,1,233,0,58,1,108,0,137,3,135,3,58,3,127,0,126,0,244,2,170,0,129,0,172,0,247,0,160,3,134,0,136,0,171,0,60,0,61,0,123,0,169,0,137,0,165,3,175,0,176,0,159,3,8,0,13,0,177,0,254,0,150,3,139,0,191,0,156,3,140,0,114,1,166,2,150,0,118,1,182,0,18,1,12,1,141,0,122,0,63,0,14,0,122,1,15,0,127,1,64,0,225,0,78,3,77,3,106,3,16,0,4,0,217,2,253,2,2,3,162,0,139,1,209,0,211,0,142,0,33,3,110,3,28,3,56,1,71,0,68,0,107,3,105,3,171,3,190,0,161,1,170,3,17,0,195,0,196,0,152,0,18,0,207,3,199,0,208,3,153,0,198,0,154,0,165,1,109,3,76,3,184,2,81,0,200,0,41,1,87,1,251,3,250,3,44,1,141,2,16,16,2,16,5,0,33,4,75,5,46,4,180,4,180,4,180,4,90,0,60,0,237,255,58,0,58,0,186,0,180,4,180,4,180,4,180,4,180,4,180,4,180,4,67,0,67,0,182,0,80,1,218,0,38,2,135,0,7,1,84,1,161,1,238,1,59,2,110,2,187,2,8,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,110,3,59,3,161,3,212,3,212,3,132,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,234,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,185,255,209,255,209,255,209,255,209,255,209,255,250,255,88,0,190,255,218,0,218,0,162,1,239,1,23,2,23,2,33,0,43,0,10,0,226,255,167,255,167,255,167,255,11,0,169,1,169,1,12,1,199,1,93,2,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,172,2,138,0,10,0,43,0,125,0,125,0,125,0,125,0,125,0,125,0,167,255,167,255,167,255,228,0,85,1,85,1,207,0,20,1,44,1,24,1,96,1,98,1,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,51,2,51,2,51,2,218,0,218,0,179,1,218,0,218,0,218,0,67,2,218,0,218,0,73,2,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,218,0,69,2,0,3,199,2,199,2,199,2,192,2,215,0,41,4,244,2,178,1,197,2,197,2,200,2,178,1,200,2,22,2,90,3,129,2,185,3,197,2,168,255,185,3,185,3,99,3,233,1,191,1,176,4,94,4,94,4,179,4,179,4,94,4,205,4,160,4,102,4,218,4,218,4,218,4,218,4,94,4,226,4,102,4,205,4,160,4,160,4,102,4,94,4,226,4,115,4,213,4,94,4,94,4,226,4,253,4,94,4,226,4,94,4,226,4,253,4,181,4,181,4,181,4,235,4,253,4,181,4,186,4,181,4,235,4,181,4,181,4,171,4,194,4,171,4,194,4,171,4,194,4,171,4,194,4,94,4,94,4,174,4,253,4,230,4,230,4,253,4,199,4,207,4,206,4,212,4,102,4,66,5,68,5,83,5,83,5,93,5,93,5,93,5,93,5,167,255,167,255,167,255,167,255,167,255,167,255,221,1,35,2,130,1,50,3,238,2,253,2,188,2,238,3,219,2,243,3,247,3,248,3,249,3,180,3,68,3,167,3,191,2,255,3,31,4,40,4,53,4,87,3,150,3,63,4,61,4,99,2,112,5,114,5,97,5,236,4,105,5,53,5,108,5,102,5,103,5,7,5,254,4,17,5,9,5,110,5,8,5,118,5,134,5,13,5,6,5,60,5,61,5,32,5,116,5,109,5,24,5,146,5,143,5,127,5,43,5,11,5,98,5,128,5,99,5,94,5,113,5,49,5,135,5,138,5,141,5,50,5,56,5,142,5,115,5,144,5,145,5,140,5,147,5,117,5,148,5,149,5,119,5,125,5,150,5,151,5,152,5,63,5,154,5,157,5,155,5,156,5,59,5,160,5,161,5,158,5,159,5,163,5,64,5,164,5,162,5,165,5,166,5,164,5,169,5,170,5,171,5,173,5,174,5,178,5,176,5,180,5,179,5,172,5,181,5,182,5,184,5,185,5,181,5,187,5,186,5,188,5,189,5,191,5,82,5,92,5,95,5,96,5,192,5,204,5,219,5,214,3,20,5,20,5,20,5,190,4,190,4,190,4,25,5,20,5,85,4,114,4,114,4,250,4,25,5,25,5,25,5,25,5,25,5,25,5,188,4,25,5,25,5,25,5,20,5,25,5,89,4,120,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,249,4,251,4,128,4,127,4,230,4,101,4,125,4,118,4,122,4,191,4,184,4,185,4,183,4,187,4,192,4,25,5,121,4,153,4,168,4,152,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,162,4,167,4,174,4,166,4,163,4,155,4,154,4,156,4,157,4,25,5,25,5,240,3,50,4,25,5,25,5,158,4,25,5,252,3,159,4,171,4,170,4,169,4,247,3,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,214,3,20,5,25,5,25,5,20,5,20,5,20,5,20,5,20,5,20,5,12,5,89,4,79,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,0,5,254,4,25,5,203,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,85,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,220,3,25,5,223,4,85,4,85,4,85,4,87,4,65,4,77,4,222,3,124,4,103,4,103,4,235,4,124,4,235,4,21,4,44,4,18,4,114,4,103,4,186,4,114,4,114,4,86,4,77,4,25,5,5,5,94,4,94,4,253,4,253,4,94,4,133,4,54,4,124,4,61,4,61,4,61,4,61,4,94,4,237,3,124,4,133,4,54,4,54,4,124,4,94,4,237,3,229,4,227,4,94,4,94,4,237,3,196,4,94,4,237,3,94,4,237,3,196,4,52,4,52,4,52,4,36,4,196,4,52,4,21,4,52,4,36,4,52,4,52,4,107,4,102,4,107,4,102,4,107,4,102,4,107,4,102,4,94,4,94,4,25,5,196,4,200,4,200,4,196,4,119,4,108,4,117,4,115,4,124,4,243,3,39,4,230,3,230,3,219,3,219,3,219,3,219,3,17,5,17,5,12,5,23,4,23,4,6,4,25,5,25,5,25,5,25,5,25,5,25,5,254,3,25,5,205,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,140,4,25,5,215,3,7,5,25,5,25,5,4,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,233,4,25,5,25,5,25,5,25,5,25,5,25,5,226,4,225,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,68,4,25,5,25,5,25,5,72,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,116,4,25,5,109,4,25,5,189,4,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,25,5,22,5,25,5,25,5,25,5,21,5,25,5,25,5,25,5,25,5,25,5,142,4,25,5,141,4,145,4,25,5,228,3,25,5,16,0,2,2,12,0,14,0,24,0,31,0,59,0,15,39,97,99,111,115,0,97,115,105,110,0,97,116,97,110,0,97,116,110,50,0,97,116,97,110,50,0,97,99,111,115,104,0,97,115,105,110,104,0,97,116,97,110,104,0,100,105,102,102,101,114,101,110,99,101,0,100,101,103,114,101,101,115,0,114,97,100,105,97,110,115,0,99,111,115,0,115,105,110,0,116,97,110,0,99,111,116,0,99,111,115,104,0,115,105,110,104,0,116,97,110,104,0,99,111,116,104,0,101,120,112,0,108,111,103,49,48,0,112,111,119,101,114,0,115,105,103,110,0,115,113,114,116,0,115,113,117,97,114,101,0,99,101,105,108,0,102,108,111,111,114,0,112,105,0,114,101,112,108,105,99,97,116,101,0,99,104,97,114,105,110,100,101,120,0,108,101,102,116,115,116,114,0,114,105,103,104,116,115,116,114,0,114,101,118,101,114,115,101,0,112,114,111,112,101,114,0,112,97,100,108,0,112,97,100,114,0,112,97,100,99,0,115,116,114,102,105,108,116,101,114,0,115,116,100,101,118,0,118,97,114,105,97,110,99,101,0,109,101,100,105,97,110,0,108,111,119,101,114,95,113,117,97,114,116,105,108,101,0,117,112,112,101,114,95,113,117,97,114,116,105,108,101,0,102,111,114,32,110,111,100,101,0,97,114,103,99,61,61,49,0,99,47,101,120,116,101,110,115,105,111,110,45,102,117,110,99,116,105,111,110,115,46,99,0,97,99,111,115,70,117,110,99,0,97,115,105,110,70,117,110,99,0,97,116,97,110,70,117,110,99,0,97,114,103,99,61,61,50,0,97,116,110,50,70,117,110,99,0,97,99,111,115,104,70,117,110,99,0,97,115,105,110,104,70,117,110,99,0,97,116,97,110,104,70,117,110,99,0,100,105,102,102,101,114,101,110,99,101,70,117,110,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,0,1,2,0,0,2,2,4,5,5,0,1,2,6,2,3,0,1,0,2,0,2,0,0,0,0,0,0,0,1,2,3,0,1,2,0,0,2,2,4,5,5,0,1,2,6,2,3,0,1,0,2,0,2,0,0,0,0,0,63,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,114,97,100,50,100,101,103,70,117,110,99,0,100,101,103,50,114,97,100,70,117,110,99,0,99,111,115,70,117,110,99,0,115,105,110,70,117,110,99,0,116,97,110,70,117,110,99,0,99,111,116,70,117,110,99,0,99,111,115,104,70,117,110,99,0,115,105,110,104,70,117,110,99,0,116,97,110,104,70,117,110,99,0,99,111,116,104,70,117,110,99,0,101,120,112,70,117,110,99,0,108,111,103,70,117,110,99,0,108,111,103,49,48,70,117,110,99,0,112,111,119,101,114,70,117,110,99,0,115,105,103,110,70,117,110,99,0,115,113,114,116,70,117,110,99,0,115,113,117,97,114,101,70,117,110,99,0,99,101,105,108,70,117,110,99,0,102,108,111,111,114,70,117,110,99,0,100,111,109,97,105,110,32,101,114,114,111,114,0,97,114,103,99,61,61,51,32,124,124,97,114,103,99,61,61,50,0,99,104,97,114,105,110,100,101,120,70,117,110,99,0,108,101,102,116,70,117,110,99,0,114,105,103,104,116,70,117,110,99,0,49,61,61,97,114,103,99,0,114,101,118,101,114,115,101,70,117,110,99,0,112,114,111,112,101,114,70,117,110,99,0,112,97,100,108,70,117,110,99,0,122,60,61,122,84,101,114,109,0,115,113,108,105,116,101,51,85,116,102,56,67,104,97,114,76,101,110,0,112,97,100,114,70,117,110,99,0,112,97,100,99,70,117,110,99,0,115,116,114,102,105,108,116,101,114,70,117,110,99,0,118,97,114,105,97,110,99,101,83,116,101,112,0,109,111,100,101,83,116,101,112,0,51,46,49,49,46,48,0,83,81,76,73,84,69,95,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,115,116,114,105,110,103,32,111,114,32,98,108,111,98,32,116,111,111,32,98,105,103,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,58,32,37,115,0,99,97,110,110,111,116,32,111,112,101,110,32,116,97,98,108,101,32,119,105,116,104,111,117,116,32,114,111,119,105,100,58,32,37,115,0,99,97,110,110,111,116,32,111,112,101,110,32,118,105,101,119,58,32,37,115,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,34,37,115,34,0,102,111,114,101,105,103,110,32,107,101,121,0,105,110,100,101,120,101,100,0,99,97,110,110,111,116,32,111,112,101,110,32,37,115,32,99,111,108,117,109,110,32,102,111,114,32,119,114,105,116,105,110,103,0,148,0,0,0,54,0,0,0,28,1,1,0,70,0,7,1,47,0,0,1,33,1,0,0,13,0,2,0,61,0,0,0,21,0,0,0,37,115,0,42,63,91,0,37,95,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,10,10,10,10,10,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,64,0,42,42,42,42,42,42,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,4,3,2,5,116,114,105,103,103,101,114,0,116,101,109,112,0,50,48,49,54,45,48,50,45,49,53,32,49,55,58,50,57,58,50,52,32,51,100,56,54,50,102,50,48,55,101,51,97,100,99,48,48,102,55,56,48,54,54,55,57,57,97,99,53,97,56,99,50,56,50,52,51,48,97,53,102,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,73,78,84,69,71,69,82,0,57,50,50,51,51,55,50,48,51,54,56,53,52,55,55,53,56,48,0,2,2,3,5,3,4,5,4,0,1,2,4,9,12,15,20,111,110,111,102,102,97,108,115,101,121,101,115,116,114,117,101,120,116,114,97,102,117,108,108,0,1,0,0,0,1,1,3,2,76,105,117,74,0,45,0,0,82,0,77,0,0,42,12,78,15,0,116,85,54,112,0,19,0,0,121,0,119,115,0,22,93,0,9,0,0,70,71,0,69,6,0,48,90,102,0,118,101,0,0,44,0,103,24,0,17,0,122,53,23,0,5,110,25,96,0,0,124,106,60,123,57,28,55,0,91,0,100,26,0,99,0,0,0,95,92,97,88,109,14,39,108,0,81,0,18,89,111,32,0,120,80,113,62,46,84,0,0,94,40,59,114,0,36,0,0,29,0,86,63,64,0,20,61,0,56,7,7,5,4,6,4,5,3,6,7,3,6,6,7,7,3,8,2,6,5,4,4,3,10,4,6,11,6,2,7,5,5,9,6,9,9,7,10,10,4,6,2,3,9,4,2,6,5,7,4,5,7,6,6,5,6,5,5,9,7,7,3,2,4,4,7,3,6,4,7,6,12,6,9,4,6,5,4,7,6,5,6,7,5,4,5,6,5,7,3,7,13,2,2,4,6,6,8,5,17,12,7,8,8,2,4,4,4,4,4,2,2,6,5,8,5,8,3,5,5,6,4,9,3,82,69,73,78,68,69,88,69,68,69,83,67,65,80,69,65,67,72,69,67,75,69,89,66,69,70,79,82,69,73,71,78,79,82,69,71,69,88,80,76,65,73,78,83,84,69,65,68,68,65,84,65,66,65,83,69,76,69,67,84,65,66,76,69,70,84,72,69,78,68,69,70,69,82,82,65,66,76,69,76,83,69,88,67,69,80,84,82,65,78,83,65,67,84,73,79,78,65,84,85,82,65,76,84,69,82,65,73,83,69,88,67,76,85,83,73,86,69,88,73,83,84,83,65,86,69,80,79,73,78,84,69,82,83,69,67,84,82,73,71,71,69,82,69,70,69,82,69,78,67,69,83,67,79,78,83,84,82,65,73,78,84,79,70,70,83,69,84,69,77,80,79,82,65,82,89,85,78,73,81,85,69,82,89,87,73,84,72,79,85,84,69,82,69,76,69,65,83,69,65,84,84,65,67,72,65,86,73,78,71,82,79,85,80,68,65,84,69,66,69,71,73,78,78,69,82,69,67,85,82,83,73,86,69,66,69,84,87,69,69,78,79,84,78,85,76,76,73,75,69,67,65,83,67,65,68,69,76,69,84,69,67,65,83,69,67,79,76,76,65,84,69,67,82,69,65,84,69,67,85,82,82,69,78,84,95,68,65,84,69,68,69,84,65,67,72,73,77,77,69,68,73,65,84,69,74,79,73,78,83,69,82,84,77,65,84,67,72,80,76,65,78,65,76,89,90,69,80,82,65,71,77,65,66,79,82,84,86,65,76,85,69,83,86,73,82,84,85,65,76,73,77,73,84,87,72,69,78,87,72,69,82,69,78,65,77,69,65,70,84,69,82,69,80,76,65,67,69,65,78,68,69,70,65,85,76,84,65,85,84,79,73,78,67,82,69,77,69,78,84,67,65,83,84,67,79,76,85,77,78,67,79,77,77,73,84,67,79,78,70,76,73,67,84,67,82,79,83,83,67,85,82,82,69,78,84,95,84,73,77,69,83,84,65,77,80,82,73,77,65,82,89,68,69,70,69,82,82,69,68,73,83,84,73,78,67,84,68,82,79,80,70,65,73,76,70,82,79,77,70,85,76,76,71,76,79,66,89,73,70,73,83,78,85,76,76,79,82,68,69,82,69,83,84,82,73,67,84,82,73,71,72,84,82,79,76,76,66,65,67,75,82,79,87,85,78,73,79,78,85,83,73,78,71,86,65,67,85,85,77,86,73,69,87,73,78,73,84,73,65,76,76,89,67,28,140,42,84,44,104,53,35,113,46,47,50,2,49,142,41,24,119,16,98,138,11,112,139,117,6,30,107,98,141,57,9,20,13,118,62,105,99,131,55,54,111,21,21,71,103,3,25,66,98,14,34,128,127,110,5,98,58,74,77,19,52,101,50,37,33,109,136,95,17,69,43,8,124,108,51,4,32,56,29,120,65,129,137,130,68,31,59,72,100,106,15,75,38,39,10,40,98,69,69,102,7,121,73,114,45,123,98,50,36,18,76,126,60,98,12,61,115,125,63,64,48,116,0,0,0,0,4,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,13,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,21,0,0,0,0,0,50,0,43,3,47,0,0,0,0,30,0,58,0,38,0,0,0,1,66,0,0,67,0,41,0,0,0,0,0,0,49,65,0,0,0,0,31,52,16,34,10,0,0,0,0,0,0,0,11,72,79,0,8,0,104,98,0,107,0,87,0,75,51,0,27,37,73,83,0,35,68,0,0,95,82,79,87,73,68,95,0,82,79,87,73,68,0,79,73,68,0,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,0,115,113,108,105,116,101,95,109,97,115,116,101,114,0,49,0,67,82,69,65,84,69,32,84,65,66,76,69,32,120,40,116,121,112,101,32,116,101,120,116,44,110,97,109,101,32,116,101,120,116,44,116,98,108,95,110,97,109,101,32,116,101,120,116,44,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44],"i8",4,l.aa+10622);z([115,113,108,32,116,101,120,116,41,0,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,109,117,115,116,32,117,115,101,32,116,104,101,32,115,97,109,101,32,116,101,120,116,32,101,110,99,111,100,105,110,103,32,97,115,32,109,97,105,110,32,100,97,116,97,98,97,115,101,0,117,110,115,117,112,112,111,114,116,101,100,32,102,105,108,101,32,102,111,114,109,97,116,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,34,37,119,34,46,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,115,113,108,105,116,101,95,115,116,97,116,49,0,83,69,76,69,67,84,32,116,98,108,44,105,100,120,44,115,116,97,116,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,116,97,116,49,0,117,110,111,114,100,101,114,101,100,42,0,115,122,61,91,48,45,57,93,42,0,110,111,115,107,105,112,115,99,97,110,42,0,99,114,101,97,116,101,32,0,105,110,118,97,108,105,100,32,114,111,111,116,112,97,103,101,0,63,0,109,97,108,102,111,114,109,101,100,32,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,40,37,115,41,0,37,122,32,45,32,37,115,0,100,97,116,97,98,97,115,101,32,99,111,114,114,117,112,116,105,111,110,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,78,79,67,65,83,69,0,82,84,82,73,77,0,109,97,105,110,0,115,105,109,112,108,101,0,112,111,114,116,101,114,0,117,110,105,99,111,100,101,54,49,0,102,116,115,51,95,116,111,107,101,110,105,122,101,114,0,115,110,105,112,112,101,116,0,111,102,102,115,101,116,115,0,109,97,116,99,104,105,110,102,111,0,111,112,116,105,109,105,122,101,0,102,116,115,51,0,102,116,115,52,0,102,116,115,51,116,111,107,101,110,105,122,101,0,67,82,69,65,84,69,32,84,65,66,76,69,32,120,40,105,110,112,117,116,44,32,116,111,107,101,110,44,32,115,116,97,114,116,44,32,101,110,100,44,32,112,111,115,105,116,105,111,110,41,0,117,110,107,110,111,119,110,32,116,111,107,101,110,105,122,101,114,58,32,37,115,0,65,76,84,69,82,32,84,65,66,76,69,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,32,32,82,69,78,65,77,69,32,84,79,32,39,37,113,95,99,111,110,116,101,110,116,39,59,0,65,76,84,69,82,32,84,65,66,76,69,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,32,32,82,69,78,65,77,69,32,84,79,32,39,37,113,95,100,111,99,115,105,122,101,39,59,0,65,76,84,69,82,32,84,65,66,76,69,32,37,81,46,39,37,113,95,115,116,97,116,39,32,32,82,69,78,65,77,69,32,84,79,32,39,37,113,95,115,116,97,116,39,59,0,65,76,84,69,82,32,84,65,66,76,69,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,32,82,69,78,65,77,69,32,84,79,32,39,37,113,95,115,101,103,109,101,110,116,115,39,59,0,65,76,84,69,82,32,84,65,66,76,69,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,32,32,82,69,78,65,77,69,32,84,79,32,39,37,113,95,115,101,103,100,105,114,39,59,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,32,87,72,69,82,69,32,114,111,119,105,100,32,61,32,63,0,83,69,76,69,67,84,32,78,79,84,32,69,88,73,83,84,83,40,83,69,76,69,67,84,32,100,111,99,105,100,32,70,82,79,77,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,32,87,72,69,82,69,32,114,111,119,105,100,33,61,63,41,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,116,97,116,39,0,83,69,76,69,67,84,32,37,115,32,87,72,69,82,69,32,114,111,119,105,100,61,63,0,83,69,76,69,67,84,32,40,83,69,76,69,67,84,32,109,97,120,40,105,100,120,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,41,32,43,32,49,0,82,69,80,76,65,67,69,32,73,78,84,79,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,40,98,108,111,99,107,105,100,44,32,98,108,111,99,107,41,32,86,65,76,85,69,83,40,63,44,32,63,41,0,83,69,76,69,67,84,32,99,111,97,108,101,115,99,101,40,40,83,69,76,69,67,84,32,109,97,120,40,98,108,111,99,107,105,100,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,41,32,43,32,49,44,32,49,41,0,82,69,80,76,65,67,69,32,73,78,84,79,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,86,65,76,85,69,83,40,63,44,63,44,63,44,63,44,63,44,63,41,0,83,69,76,69,67,84,32,105,100,120,44,32,115,116,97,114,116,95,98,108,111,99,107,44,32,108,101,97,118,101,115,95,101,110,100,95,98,108,111,99,107,44,32,101,110,100,95,98,108,111,99,107,44,32,114,111,111,116,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,32,79,82,68,69,82,32,66,89,32,105,100,120,32,65,83,67,0,83,69,76,69,67,84,32,105,100,120,44,32,115,116,97,114,116,95,98,108,111,99,107,44,32,108,101,97,118,101,115,95,101,110,100,95,98,108,111,99,107,44,32,101,110,100,95,98,108,111,99,107,44,32,114,111,111,116,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,66,69,84,87,69,69,78,32,63,32,65,78,68,32,63,79,82,68,69,82,32,66,89,32,108,101,118,101,108,32,68,69,83,67,44,32,105,100,120,32,65,83,67,0,83,69,76,69,67,84,32,99,111,117,110,116,40,42,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,0,83,69,76,69,67,84,32,109,97,120,40,108,101,118,101,108,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,66,69,84,87,69,69,78,32,63,32,65,78,68,32,63,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,32,87,72,69,82,69,32,98,108,111,99,107,105,100,32,66,69,84,87,69,69,78,32,63,32,65,78,68,32,63,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,32,86,65,76,85,69,83,40,37,115,41,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,32,87,72,69,82,69,32,100,111,99,105,100,32,61,32,63,0,82,69,80,76,65,67,69,32,73,78,84,79,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,32,86,65,76,85,69,83,40,63,44,63,41,0,83,69,76,69,67,84,32,115,105,122,101,32,70,82,79,77,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,32,87,72,69,82,69,32,100,111,99,105,100,61,63,0,83,69,76,69,67,84,32,118,97,108,117,101,32,70,82,79,77,32,37,81,46,39,37,113,95,115,116,97,116,39,32,87,72,69,82,69,32,105,100,61,63,0,82,69,80,76,65,67,69,32,73,78,84,79,32,37,81,46,39,37,113,95,115,116,97,116,39,32,86,65,76,85,69,83,40,63,44,63,41,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,66,69,84,87,69,69,78,32,63,32,65,78,68,32,63,0,83,69,76,69,67,84,32,63,32,85,78,73,79,78,32,83,69,76,69,67,84,32,108,101,118,101,108,32,47,32,40,49,48,50,52,32,42,32,63,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,0,83,69,76,69,67,84,32,108,101,118,101,108,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,71,82,79,85,80,32,66,89,32,108,101,118,101,108,32,72,65,86,73,78,71,32,99,111,117,110,116,40,42,41,62,61,63,32,32,79,82,68,69,82,32,66,89,32,40,108,101,118,101,108,32,37,37,32,49,48,50,52,41,32,65,83,67,32,76,73,77,73,84,32,49,0,83,69,76,69,67,84,32,50,32,42,32,116,111,116,97,108,40,49,32,43,32,108,101,97,118,101,115,95,101,110,100,95,98,108,111,99,107,32,45,32,115,116,97,114,116,95,98,108,111,99,107,41,32,32,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,32,65,78,68,32,105,100,120,32,60,32,63,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,32,65,78,68,32,105,100,120,32,61,32,63,0,85,80,68,65,84,69,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,83,69,84,32,105,100,120,32,61,32,63,32,87,72,69,82,69,32,108,101,118,101,108,61,63,32,65,78,68,32,105,100,120,61,63,0,83,69,76,69,67,84,32,105,100,120,44,32,115,116,97,114,116,95,98,108,111,99,107,44,32,108,101,97,118,101,115,95,101,110,100,95,98,108,111,99,107,44,32,101,110,100,95,98,108,111,99,107,44,32,114,111,111,116,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,32,65,78,68,32,105,100,120,32,61,32,63,0,85,80,68,65,84,69,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,83,69,84,32,115,116,97,114,116,95,98,108,111,99,107,32,61,32,63,44,32,114,111,111,116,32,61,32,63,87,72,69,82,69,32,108,101,118,101,108,32,61,32,63,32,65,78,68,32,105,100,120,32,61,32,63,0,83,69,76,69,67,84,32,49,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,32,87,72,69,82,69,32,98,108,111,99,107,105,100,61,63,32,65,78,68,32,98,108,111,99,107,32,73,83,32,78,85,76,76,0,83,69,76,69,67,84,32,105,100,120,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,61,63,32,79,82,68,69,82,32,66,89,32,49,32,65,83,67,0,83,69,76,69,67,84,32,109,97,120,40,32,108,101,118,101,108,32,37,37,32,49,48,50,52,32,41,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,0,83,69,76,69,67,84,32,108,101,118,101,108,44,32,105,100,120,44,32,101,110,100,95,98,108,111,99,107,32,70,82,79,77,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,87,72,69,82,69,32,108,101,118,101,108,32,66,69,84,87,69,69,78,32,63,32,65,78,68,32,63,32,79,82,68,69,82,32,66,89,32,108,101,118,101,108,32,68,69,83,67,44,32,105,100,120,32,65,83,67,0,85,80,68,65,84,69,32,79,82,32,70,65,73,76,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,83,69,84,32,108,101,118,101,108,61,45,49,44,105,100,120,61,63,32,87,72,69,82,69,32,108,101,118,101,108,61,63,32,65,78,68,32,105,100,120,61,63,0,85,80,68,65,84,69,32,79,82,32,70,65,73,76,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,32,83,69,84,32,108,101,118,101,108,61,63,32,87,72,69,82,69,32,108,101,118,101,108,61,45,49,0,37,108,108,100,32,37,108,108,100,0,37,115,95,115,101,103,109,101,110,116,115,0,98,108,111,99,107,0,83,69,76,69,67,84,32,49,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,39,37,113,95,115,116,97,116,39,0,112,99,120,0,83,69,76,69,67,84,32,37,115,32,87,72,69,82,69,32,114,111,119,105,100,32,61,32,63,0,117,110,114,101,99,111,103,110,105,122,101,100,32,109,97,116,99,104,105,110,102,111,32,114,101,113,117,101,115,116,58,32,37,99,0,105,108,108,101,103,97,108,32,102,105,114,115,116,32,97,114,103,117,109,101,110,116,32,116,111,32,37,115,0,73,110,100,101,120,32,111,112,116,105,109,105,122,101,100,0,73,110,100,101,120,32,97,108,114,101,97,100,121,32,111,112,116,105,109,97,108,0,83,65,86,69,80,79,73,78,84,32,102,116,115,51,0,82,69,76,69,65,83,69,32,102,116,115,51,0,82,79,76,76,66,65,67,75,32,84,79,32,102,116,115,51,0,37,100,32,37,100,32,37,100,32,37,100,32,0,60,98,62,0,60,47,98,62,0,60,98,62,46,46,46,60,47,98,62,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,102,117,110,99,116,105,111,110,32,115,110,105,112,112,101,116,40,41,0,114,101,98,117,105,108,100,0,105,110,116,101,103,114,105,116,121,45,99,104,101,99,107,0,109,101,114,103,101,61,0,97,117,116,111,109,101,114,103,101,61,0,67,82,69,65,84,69,32,84,65,66,76,69,32,73,70,32,78,79,84,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,115,116,97,116,39,40,105,100,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,44,32,118,97,108,117,101,32,66,76,79,66,41,59,0,83,69,76,69,67,84,32,37,115,0,68,69,83,67,0,65,83,67,0,83,69,76,69,67,84,32,37,115,32,87,72,69,82,69,32,114,111,119,105,100,32,66,69,84,87,69,69,78,32,37,108,108,100,32,65,78,68,32,37,108,108,100,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,32,37,115,0,83,69,76,69,67,84,32,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,32,37,115,0,70,84,83,32,101,120,112,114,101,115,115,105,111,110,32,116,114,101,101,32,105,115,32,116,111,111,32,108,97,114,103,101,32,40,109,97,120,105,109,117,109,32,100,101,112,116,104,32,37,100,41,0,109,97,108,102,111,114,109,101,100,32,77,65,84,67,72,32,101,120,112,114,101,115,115,105,111,110,58,32,91,37,115,93,0,79,82,0,65,78,68,0,78,79,84,0,78,69,65,82,0,68,82,79,80,32,84,65,66,76,69,32,73,70,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,0,68,82,79,80,32,84,65,66,76,69,32,73,70,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,0,68,82,79,80,32,84,65,66,76,69,32,73,70,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,0,68,82,79,80,32,84,65,66,76,69,32,73,70,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,0,68,82,79,80,32,84,65,66,76,69,32,73,70,32,69,88,73,83,84,83,32,37,81,46,39,37,113,95,115,116,97,116,39,0,116,111,107,101,110,105,122,101,0,117,110,114,101,99,111,103,110,105,122,101,100,32,112,97,114,97,109,101,116,101,114,58,32,37,115,0,117,110,114,101,99,111,103,110,105,122,101,100,32,109,97,116,99,104,105,110,102,111,58,32,37,115,0,97,115,99,0,100,101,115,99,0,117,110,114,101,99,111,103,110,105,122,101,100,32,111,114,100,101,114,58,32,37,115,0,99,111,110,116,101,110,116,0,101,114,114,111,114,32,112,97,114,115,105,110,103,32,112,114,101,102,105,120,32,112,97,114,97,109,101,116,101,114,58,32,37,115,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,58,32,37,115,0,99,111,109,112,114,101,115,115,0,117,110,99,111,109,112,114,101,115,115,0,109,105,115,115,105,110,103,32,37,115,32,112,97,114,97,109,101,116,101,114,32,105,110,32,102,116,115,52,32,99,111,110,115,116,114,117,99,116,111,114,0,95,95,108,97,110,103,105,100,0,37,81,44,32,0,37,122,37,81,44,32,0,67,82,69,65,84,69,32,84,65,66,76,69,32,120,40,37,115,32,37,81,32,72,73,68,68,69,78,44,32,100,111,99,105,100,32,72,73,68,68,69,78,44,32,37,81,32,72,73,68,68,69,78,41,0,80,82,65,71,77,65,32,37,81,46,112,97,103,101,95,115,105,122,101,0,100,111,99,105,100,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,0,37,122,44,32,39,99,37,100,37,113,39,0,37,122,44,32,108,97,110,103,105,100,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,39,37,113,95,99,111,110,116,101,110,116,39,40,37,115,41,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,39,37,113,95,115,101,103,109,101,110,116,115,39,40,98,108,111,99,107,105,100,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,44,32,98,108,111,99,107,32,66,76,79,66,41,59,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,39,37,113,95,115,101,103,100,105,114,39,40,108,101,118,101,108,32,73,78,84,69,71,69,82,44,105,100,120,32,73,78,84,69,71,69,82,44,115,116,97,114,116,95,98,108,111,99,107,32,73,78,84,69,71,69,82,44,108,101,97,118,101,115,95,101,110,100,95,98,108,111,99,107,32,73,78,84,69,71,69,82,44,101,110,100,95,98,108,111,99,107,32,73,78,84,69,71,69,82,44,114,111,111,116,32,66,76,79,66,44,80,82,73,77,65,82,89,32,75,69,89,40,108,101,118,101,108,44,32,105,100,120,41,41,59,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,39,37,113,95,100,111,99,115,105,122,101,39,40,100,111,99,105,100,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,44,32,115,105,122,101,32,66,76,79,66,41,59,0,44,37,115,40,63,41,0,44,32,63,0,37,115,37,115,0,100,111,99,105,100,0,44,37,115,40,120,46,39,99,37,100,37,113,39,41,0,44,32,120,46,37,81,0,108,97,110,103,105,100,0,114,111,119,105,100,0,44,32,120,46,39,37,113,39,0,95,99,111,110,116,101,110,116,0,32,70,82,79,77,32,39,37,113,39,46,39,37,113,37,115,39,32,65,83,32,120,0,83,69,76,69,67,84,32,42,32,70,82,79,77,32,37,81,46,37,81,0,112,114,101,102,105,120,0,111,114,100,101,114,0,108,97,110,103,117,97,103,101,105,100,0,110,111,116,105,110,100,101,120,101,100,0,117,110,107,110,111,119,110,32,116,111,107,101,110,105,122,101,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,102,116,115,51,116,111,107,101,110,105,122,101,58,32,100,105,115,97,98,108,101,100,32,45,32,114,101,98,117,105,108,100,32,119,105,116,104,32,45,68,83,81,76,73,84,69,95,69,78,65,66,76,69,95,70,84,83,51,95,84,79,75,69,78,73,90,69,82,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,115,101,115,115,0,115,115,0,115,101,105,0,105,0,100,101,101,0,101,101,0,103,110,105,0,100,101,0,116,97,0,97,116,101,0,108,98,0,98,108,101,0,122,105,0,105,122,101,0,108,97,110,111,105,116,97,0,108,97,110,111,105,116,0,116,105,111,110,0,105,99,110,101,0,101,110,99,101,0,105,99,110,97,0,97,110,99,101,0,114,101,122,105,0,105,103,111,108,0,108,111,103,0,105,108,98,0,105,108,108,97,0,97,108,0,105,108,116,110,101,0,101,110,116,0,105,108,101,0,101,0,105,108,115,117,111,0,111,117,115,0,110,111,105,116,97,122,105,0,110,111,105,116,97,0,114,111,116,97,0,109,115,105,108,97,0,115,115,101,110,101,118,105,0,105,118,101,0,115,115,101,110,108,117,102,0,102,117,108,0,115,115,101,110,115,117,111,0,105,116,105,108,97,0,105,116,105,118,105,0,105,116,105,108,105,98,0,101,116,97,99,105,0,105,99,0,101,118,105,116,97,0,101,122,105,108,97,0,105,116,105,99,105,0,108,97,99,105,0,108,117,102,0,115,115,101,110,0,116,110,101,109,101,0,116,110,101,109,0,116,110,101,0,110,111,105,0,101,116,97,0,105,116,105,0,0,1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,2,1,102,116,115,52,97,117,120,0,42,0,67,82,69,65,84,69,32,84,65,66,76,69,32,120,40,116,101,114,109,44,32,99,111,108,44,32,100,111,99,117,109,101,110,116,115,44,32,111,99,99,117,114,114,101,110,99,101,115,44,32,108,97,110,103,117,97,103,101,105,100,32,72,73,68,68,69,78,41,0,105,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,115,32,116,111,32,102,116,115,52,97,117,120,32,99,111,110,115,116,114,117,99,116,111,114,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,0,1,2,3,0,1,0,0,0,97,99,101,105,110,111,117,121,121,97,99,100,101,101,103,104,105,106,107,108,110,111,114,115,116,117,117,119,121,122,111,117,97,105,111,117,103,107,111,106,103,110,97,101,105,111,114,117,115,116,104,97,101,111,121,0,0,0,0,0,0,0,0,97,98,100,100,101,102,103,104,104,105,107,108,108,109,110,112,114,114,115,116,117,118,119,119,120,121,122,104,116,119,121,97,101,105,111,117,121,114,101,109,111,118,101,95,100,105,97,99,114,105,116,105,99,115,61,49,0,114,101,109,111,118,101,95,100,105,97,99,114,105,116,105,99,115,61,48,0,116,111,107,101,110,99,104,97,114,115,61,0,115,101,112,97,114,97,116,111,114,115,61,0,97,117,116,111,109,97,116,105,99,32,101,120,116,101,110,115,105,111,110,32,108,111,97,100,105,110,103,32,102,97,105,108,101,100,58,32,37,115,0,77,65,84,67,72,0,58,109,101,109,111,114,121,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32,112,97,103,101,115,32,102,114,111,109,32,37,115,0,217,213,5,249,32,161,99,215,99,97,110,110,111,116,32,108,105,109,105,116,32,87,65,76,32,115,105,122,101,58,32,37,115,0,99,97,110,110,111,116,32,111,112,101,110,32,102,105,108,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,114,101,99,111,118,101,114,101,100,32,37,100,32,102,114,97,109,101,115,32,102,114,111,109,32,87,65,76,32,102,105,108,101,32,37,115,0,45,106,111,117,114,110,97,108,0,0,45,119,97,108,0,0,110,111,108,111,99,107,0,105,109,109,117,116,97,98,108,101,0,0,102,105,108,101,58,0,108,111,99,97,108,104,111,115,116,0,105,110,118,97,108,105,100,32,117,114,105,32,97,117,116,104,111,114,105,116,121,58,32,37,46,42,115,0,118,102,115,0,99,97,99,104,101,0,109,111,100,101,0,97,99,99,101,115,115,0,110,111,32,115,117,99,104,32,37,115,32,109,111,100,101,58,32,37,115,0,37,115,32,109,111,100,101,32,110,111,116,32,97,108,108,111,119,101,100,58,32,37,115,0,110,111,32,115,117,99,104,32,118,102,115,58,32,37,115,0,114,111,0,114,119,0,114,119,99,0,109,101,109,111,114,121,0,115,104,97,114,101,100,0,112,114,105,118,97,116,101,0,117,110,97,98,108,101,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,32,37,115,32,105,110,32,116,104,101,32,114,101,113,117,101,115,116,101,100,32,99,111,110,116,101,120,116,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,117,115,101,114,45,102,117,110,99,116,105,111,110,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,117,110,97,98,108,101,32,116,111,32,99,108,111,115,101,32,100,117,101,32,116,111,32,117,110,102,105,110,97,108,105,122,101,100,32,115,116,97,116,101,109,101,110,116,115,32,111,114,32,117,110,102,105,110,105,115,104,101,100,32,98,97,99,107,117,112,115,0,102,97,105,108,101,100,32,109,101,109,111,114,121,32,114,101,115,105,122,101,32,37,117,32,116,111,32,37,117,32,98,121,116,101,115,0,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,37,117,32,98,121,116,101,115,32,111,102,32,109,101,109,111,114,121,0,117,110,114,101,99,111,103,110,105,122,101,100,32,116,111,107,101,110,58,32,34,37,84,34,0,110,101,97,114,32,34,37,84,34,58,32,115,121,110,116,97,120,32,101,114,114,111,114,0,117,110,107,110,111,119,110,32,116,97,98,108,101,32,111,112,116,105,111,110,58,32,37,46,42,115,0,115,101,116,32,108,105,115,116,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,111,110,32,102,117,110,99,116,105,111,110,32,37,84,0,113,117,97,108,105,102,105,101,100,32,116,97,98,108,101,32,110,97,109,101,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,73,78,83,69,82,84,44,32,85,80,68,65,84,69,44,32,97,110,100,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,116,104,101,32,73,78,68,69,88,69,68,32,66,89,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,116,104,101,32,78,79,84,32,73,78,68,69,88,69,68,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,144,1,145,2,145,1,146,1,146,3,147,0,147,1,147,3,148,1,149,3,151,0,151,1,151,2,150,0,150,1,150,1,150,1,149,2,149,2,149,2,153,1,153,0,149,2,149,3,149,5,149,2,154,6,156,1,158,0,158,3,157,1,157,0,155,5,155,2,162,0,162,2,160,3,160,1,164,3,165,1,152,1,152,1,152,1,166,0,166,1,168,1,168,4,168,6,169,1,169,2,170,1,170,1,167,2,167,0,173,2,173,2,173,4,173,3,173,3,173,2,173,2,173,3,173,5,173,2,173,4,173,4,173,1,173,2,178,0,178,1,180,0,180,2,182,2,182,3,182,3,182,3,183,2,183,2,183,1,183,1,183,2,181,3,181,2,184,0,184,2,184,2,161,0,161,2,185,3,185,1,186,1,186,0,187,2,187,7,187,5,187,5,187,10,190,0,190,1,176,0,176,3,191,0,191,2,192,1,192,1,192,1,149,4,194,2,194,0,149,9,149,4,149,1,163,2,196,1,196,3,199,1,199,2,199,1,197,9,197,1,208,4,208,5,200,1,200,1,200,0,211,2,211,0,201,3,201,2,201,4,212,2,212,1,212,0,202,0,202,2,214,2,214,0,213,7,213,9,213,7,213,7,159,0,159,2,195,2,215,1,215,2,215,3,215,4,217,2,217,0,216,0,216,3,216,2,218,4,218,0,206,0,206,3,188,4,188,2,177,1,177,1,177,0,204,0,204,3,205,0,205,2,207,0,207,2,207,4,207,4,149,6,203,0,203,2,149,8,220,5,220,3,149,6,149,7,221,2,221,1,222,0,222,3,219,3,219,1,175,1,175,3,174,1,175,1,175,1,175,3,175,5,174,1,174,1,175,1,175,3,175,6,175,5,175,4,174,1,175,3,175,3,175,3,175,3,175,3,175,3,175,3,175,3,223,1,223,2,175,3,175,5,175,2,175,3,175,3,175,4,175,2,175,2,175,2,175,2,224,1,224,2,175,5,225,1,225,2,175,5,175,3,175,5,175,4,175,4,175,5,227,5,227,4,228,2,228,0,226,1,226,0,210,1,210,0,209,3,209,1,149,12,229,1,229,0,179,0,179,3,189,5,189,3,230,0,230,2,149,4,149,1,149,2,149,3,149,5,149,6,149,5,149,6,231,1,231,1,231,1,231,1,231,1,171,2,171,1,172,2,149,5,232,11,234,1,234,1,234,2,234,0,235,1,235,1,235,3,236,0,236,3,237,0,237,2,233,3,233,2,239,1,239,3,240,0,240,3,240,2,238,7,238,5,238,5,238,1,175,4,175,6,193,1,193,1,193,1,149,4,149,6,149,3,242,0,242,2,241,1,241,0,149,1,149,3,149,1,149,3,149,6,149,6,243,1,244,0,244,1,149,1,149,4,245,8,246,1,246,3,247,0,247,2,248,1,248,3,249,1,250,0,250,4,250,2,198,0,198,2,198,3,251,6,251,8,100,117,112,108,105,99,97,116,101,32,87,73,84,72,32,116,97,98,108,101,32,110,97,109,101,58,32,37,115,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,0,97,117,116,104,111,114,105,122,101,114,32,109,97,108,102,117,110,99,116,105,111,110,0,67,82,69,65,84,69,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,37,84,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,116,97,98,108,101,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,48,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,116,97,98,108,101,39,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,116,111,32,97,32,118,105,101,119,0,115,113,108,105,116,101,95,97,108,116,101,114,116,97,98,95,37,115,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,97,32,116,101,109,112,111,114,97,114,121,32,100,97,116,97,98,97,115,101,32,102,105,108,101,32,102,111,114,32,115,116,111,114,105,110,103,32,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,115,0,115,113,108,105,116,101,95,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,67,97,110,110,111,116,32,97,100,100,32,97,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,108,117,109,110,0,67,97,110,110,111,116,32,97,100,100,32,97,32,85,78,73,81,85,69,32,99,111,108,117,109,110,0,67,97,110,110,111,116,32,97,100,100,32,97,32,82,69,70,69,82,69,78,67,69,83,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,78,85,76,76,32,100,101,102,97,117,108,116,32,118,97,108,117,101,0,67,97,110,110,111,116,32,97,100,100,32,97,32,78,79,84,32,78,85,76,76,32,99,111,108,117,109,110,32,119,105,116,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,32,78,85,76,76,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,99,111,110,115,116,97,110,116,32,100,101,102,97,117,108,116,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,117,98,115,116,114,40,115,113,108,44,49,44,37,100,41,32,124,124,32,39,44,32,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,37,100,41,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,32,61,32,37,81,0,116,98,108,95,110,97,109,101,61,37,81,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,40,37,115,41,0,110,97,109,101,61,37,81,0,37,115,32,79,82,32,110,97,109,101,61,37,81,0,45,0,37,108,108,100,0,37,33,46,49,53,103,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,111,116,104,101,114,32,116,97,98,108,101,32,111,114,32,105,110,100,101,120,32,119,105,116,104,32,116,104,105,115,32,110,97,109,101,58,32,37,115,0,118,105,101,119,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,40,115,113,108,44,32,37,81,44,32,37,81,41,32,87,72,69,82,69,32,37,115,59,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,115,113,108,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,32,61,32,39,116,114,105,103,103,101,114,39,32,84,72,69,78,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,69,76,83,69,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,40,115,113,108,44,32,37,81,41,32,69,78,68,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,44,32,110,97,109,101,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,61,39,116,97,98,108,101,39,32,84,72,69,78,32,37,81,32,87,72,69,78,32,110,97,109,101,32,76,73,75,69,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,37,37,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,32,84,72,69,78,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,110,97,109,101,44,37,100,43,49,56,41,32,69,76,83,69,32,110,97,109,101,32,69,78,68,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,67,79,76,76,65,84,69,32,110,111,99,97,115,101,32,65,78,68,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,79,82,32,116,121,112,101,61,39,105,110,100,101,120,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,41,59,0,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,0,85,80,68,65,84,69,32,34,37,119,34,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,115,101,116,32,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,110,97,109,101,32,61,32,37,81,0,85,80,68,65,84,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,37,115,59,0,118,105,101,119,32,37,115,32,105,115,32,99,105,114,99,117,108,97,114,108,121,32,100,101,102,105,110,101,100,0,110,111,32,115,117,99,104,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,58,32,37,115,0,3,2,1,97,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,72,65,86,73,78,71,0,79,82,68,69,82,0,71,82,79,85,80,0,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,116,104,101,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,0,37,114,32,79,82,68,69,82,32,66,89,32,116,101,114,109,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,97,110,121,32,99,111,108,117,109,110,32,105,110,32,116,104,101,32,114,101,115,117,108,116,32,115,101,116,0,37,114,32,37,115,32,66,89,32,116,101,114,109,32,111,117,116,32,111,102,32,114,97,110,103,101,32,45,32,115,104,111,117,108,100,32,98,101,32,98,101,116,119,101,101,110,32,49,32,97,110,100,32,37,100,0,97,108,108,32,86,65,76,85,69,83,32,109,117,115,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,116,101,114,109,115,0,83,69,76,69,67,84,115,32,116,111,32,116,104,101,32,108,101,102,116,32,97,110,100,32,114,105,103,104,116,32,111,102,32,37,115,32,100,111,32,110,111,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,114,101,115,117,108,116,32,99,111,108,117,109,110,115,0,85,78,73,79,78,32,65,76,76,0,73,78,84,69,82,83,69,67,84,0,69,88,67,69,80,84,0,85,78,73,79,78,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,37,115,32,66,89,32,99,108,97,117,115,101,0,69,120,112,114,101,115,115,105,111,110,32,116,114,101,101,32,105,115,32,116,111,111,32,108,97,114,103,101,32,40,109,97,120,105,109,117,109,32,100,101,112,116,104,32,37,100,41,0,116,104,101,32,34,46,34,32,111,112,101,114,97,116,111,114,0,102,117,110,99,116,105,111,110,115,0,115,101,99,111,110,100,32,97,114,103,117,109,101,110,116,32,116,111,32,108,105,107,101,108,105,104,111,111,100,40,41,32,109,117,115,116,32,98,101,32,97,32,99,111,110,115,116,97,110,116,32,98,101,116,119,101,101,110,32,48,46,48,32,97,110,100,32,49,46,48,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,58,32,37,115,0,110,111,110,45,100,101,116,101,114,109,105,110,105,115,116,105,99,32,102,117,110,99,116,105,111,110,115,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,110,111,32,115,117,99,104,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,115,117,98,113,117,101,114,105,101,115,0,112,97,114,97,109,101,116,101,114,115,0,112,97,114,116,105,97,108,32,105,110,100,101,120,32,87,72,69,82,69,32,99,108,97,117,115,101,115,0,105,110,100,101,120,32,101,120,112,114,101,115,115,105,111,110,115,0,67,72,69,67,75,32,99,111,110,115,116,114,97,105,110,116,115,0,37,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,37,115,0,110,101,119,0,111,108,100,0,109,105,115,117,115,101,32,111,102,32,97,108,105,97,115,101,100,32,97,103,103,114,101,103,97,116,101,32,37,115,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,0,97,109,98,105,103,117,111,117,115,32,99,111,108,117,109,110,32,110,97,109,101,0,37,115,58,32,37,115,46,37,115,46,37,115,0,37,115,58,32,37,115,46,37,115,0,37,115,58,32,37,115,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,115,113,108,105,116,101,95,115,113,95,37,112,0,116,111,111,32,109,97,110,121,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,34,37,115,34,58,32,109,97,120,32,54,53,53,51,53,0,37,115,46,37,115,0,37,115,46,37,115,46,37,115,0,110,111,32,115,117,99,104,32,116,97,98,108,101,58,32,37,115,0,110,111,32,116,97,98,108,101,115,32,115,112,101,99,105,102,105,101,100,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,114,101,115,117,108,116,32,115,101,116,0,97,32,78,65,84,85,82,65,76,32],"i8",4,l.aa+20862); -z([106,111,105,110,32,109,97,121,32,110,111,116,32,104,97,118,101,32,97,110,32,79,78,32,111,114,32,85,83,73,78,71,32,99,108,97,117,115,101,0,99,97,110,110,111,116,32,104,97,118,101,32,98,111,116,104,32,79,78,32,97,110,100,32,85,83,73,78,71,32,99,108,97,117,115,101,115,32,105,110,32,116,104,101,32,115,97,109,101,32,106,111,105,110,0,99,97,110,110,111,116,32,106,111,105,110,32,117,115,105,110,103,32,99,111,108,117,109,110,32,37,115,32,45,32,99,111,108,117,109,110,32,110,111,116,32,112,114,101,115,101,110,116,32,105,110,32,98,111,116,104,32,116,97,98,108,101,115,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,115,0,39,37,115,39,32,105,115,32,110,111,116,32,97,32,102,117,110,99,116,105,111,110,0,109,117,108,116,105,112,108,101,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,114,101,99,117,114,115,105,118,101,32,116,97,98,108,101,58,32,37,115,0,99,105,114,99,117,108,97,114,32,114,101,102,101,114,101,110,99,101,58,32,37,115,0,116,97,98,108,101,32,37,115,32,104,97,115,32,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,109,117,108,116,105,112,108,101,32,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,115,58,32,37,115,0,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,32,105,110,32,97,32,115,117,98,113,117,101,114,121,58,32,37,115,0,37,46,42,122,58,37,117,0,110,111,32,115,117,99,104,32,109,111,100,117,108,101,58,32,37,115,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,99,97,108,108,101,100,32,114,101,99,117,114,115,105,118,101,108,121,58,32,37,115,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,102,97,105,108,101,100,58,32,37,115,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,100,105,100,32,110,111,116,32,100,101,99,108,97,114,101,32,115,99,104,101,109,97,58,32,37,115,0,104,105,100,100,101,110,0,32,104,105,100,100,101,110,0,111,98,106,101,99,116,32,110,97,109,101,32,114,101,115,101,114,118,101,100,32,102,111,114,32,105,110,116,101,114,110,97,108,32,117,115,101,58,32,37,115,0,99,111,114,114,117,112,116,32,100,97,116,97,98,97,115,101,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,32,37,84,0,105,100,120,0,116,98,108,0,115,113,108,105,116,101,95,37,0,66,66,66,0,115,116,97,116,95,103,101,116,0,37,108,108,117,0,32,37,108,108,117,0,115,116,97,116,95,112,117,115,104,0,115,116,97,116,95,105,110,105,116,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,37,115,40,37,115,41,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,37,115,61,37,81,0,116,98,108,44,105,100,120,44,115,116,97,116,0,115,113,108,105,116,101,95,115,116,97,116,51,0,115,113,108,105,116,101,95,115,116,97,116,52,0,117,110,97,98,108,101,32,116,111,32,105,100,101,110,116,105,102,121,32,116,104,101,32,111,98,106,101,99,116,32,116,111,32,98,101,32,114,101,105,110,100,101,120,101,100,0,105,110,100,101,120,32,39,37,113,39,0,44,32,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,58,32,37,115,40,41,0,117,110,107,110,111,119,110,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,40,41,0,82,65,73,83,69,40,41,32,109,97,121,32,111,110,108,121,32,98,101,32,117,115,101,100,32,119,105,116,104,105,110,32,97,32,116,114,105,103,103,101,114,45,112,114,111,103,114,97,109,0,67,79,82,82,69,76,65,84,69,68,32,0,76,73,83,84,0,83,67,65,76,65,82,0,69,88,69,67,85,84,69,32,37,115,37,115,32,83,85,66,81,85,69,82,89,32,37,100,0,48,120,0,104,101,120,32,108,105,116,101,114,97,108,32,116,111,111,32,98,105,103,58,32,37,115,0,115,113,108,105,116,101,95,100,101,116,97,99,104,0,110,111,32,115,117,99,104,32,100,97,116,97,98,97,115,101,58,32,37,115,0,99,97,110,110,111,116,32,100,101,116,97,99,104,32,100,97,116,97,98,97,115,101,32,37,115,0,99,97,110,110,111,116,32,68,69,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,108,111,99,107,101,100,0,115,113,108,105,116,101,95,97,116,116,97,99,104,0,116,111,111,32,109,97,110,121,32,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,45,32,109,97,120,32,37,100,0,99,97,110,110,111,116,32,65,84,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,97,108,114,101,97,100,121,32,105,110,32,117,115,101,0,100,97,116,97,98,97,115,101,32,105,115,32,97,108,114,101,97,100,121,32,97,116,116,97,99,104,101,100,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,110,111,32,115,117,99,104,32,116,114,105,103,103,101,114,58,32,37,83,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,110,97,109,101,61,37,81,32,65,78,68,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,0,116,101,109,112,111,114,97,114,121,32,116,114,105,103,103,101,114,32,109,97,121,32,110,111,116,32,104,97,118,101,32,113,117,97,108,105,102,105,101,100,32,110,97,109,101,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,115,32,111,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,115,0,116,114,105,103,103,101,114,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,32,111,110,32,115,121,115,116,101,109,32,116,97,98,108,101,0,66,69,70,79,82,69,0,65,70,84,69,82,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,37,115,32,116,114,105,103,103,101,114,32,111,110,32,118,105,101,119,58,32,37,83,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,73,78,83,84,69,65,68,32,79,70,32,116,114,105,103,103,101,114,32,111,110,32,116,97,98,108,101,58,32,37,83,0,37,115,32,37,84,32,99,97,110,110,111,116,32,114,101,102,101,114,101,110,99,101,32,111,98,106,101,99,116,115,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,0,37,115,32,99,97,110,110,111,116,32,117,115,101,32,118,97,114,105,97,98,108,101,115,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,116,114,105,103,103,101,114,39,44,37,81,44,37,81,44,48,44,39,67,82,69,65,84,69,32,84,82,73,71,71,69,82,32,37,113,39,41,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,110,97,109,101,61,39,37,113,39,0,45,37,84,0,114,101,115,117,108,116,0,99,97,99,104,101,95,115,105,122,101,0,2,0,0,0,51,0,1,3,138,1,8,0,22,0,2,0,90,1,2,1,138,1,8,0,22,0,1,0,160,0,0,0,33,1,1,0,112,97,103,101,95,115,105,122,101,0,115,101,99,117,114,101,95,100,101,108,101,116,101,0,110,111,114,109,97,108,0,101,120,99,108,117,115,105,118,101,0,108,111,99,107,105,110,103,95,109,111,100,101,0,106,111,117,114,110,97,108,95,109,111,100,101,0,106,111,117,114,110,97,108,95,115,105,122,101,95,108,105,109,105,116,0,97,117,116,111,95,118,97,99,117,117,109,0,2,0,1,0,51,0,1,4,45,1,0,0,21,0,2,0,52,0,7,0,99,97,99,104,101,95,115,112,105,108,108,0,109,109,97,112,95,115,105,122,101,0,116,101,109,112,95,115,116,111,114,101,0,116,101,109,112,95,115,116,111,114,101,95,100,105,114,101,99,116,111,114,121,0,110,111,116,32,97,32,119,114,105,116,97,98,108,101,32,100,105,114,101,99,116,111,114,121,0,115,121,110,99,104,114,111,110,111,117,115,0,83,97,102,101,116,121,32,108,101,118,101,108,32,109,97,121,32,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,105,110,115,105,100,101,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,105,115,115,105,115,105,0,115,115,105,105,0,115,105,105,0,105,105,115,0,105,115,105,0,105,115,105,115,105,0,105,115,115,0,105,115,0,105,105,115,115,115,115,115,115,0,78,79,78,69,0,115,105,0,105,110,116,101,103,114,105,116,121,95,99,104,101,99,107,0,42,42,42,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,32,42,42,42,10,0,78,85,76,76,32,118,97,108,117,101,32,105,110,32,37,115,46,37,115,0,114,111,119,32,0,32,109,105,115,115,105,110,103,32,102,114,111,109,32,105,110,100,101,120,32,0,110,111,110,45,117,110,105,113,117,101,32,101,110,116,114,121,32,105,110,32,105,110,100,101,120,32,0,119,114,111,110,103,32,35,32,111,102,32,101,110,116,114,105,101,115,32,105,110,32,105,110,100,101,120,32,0,37,1,0,0,45,1,4,0,97,0,3,0,33,3,1,0,111,107,0,101,110,99,111,100,105,110,103,0,117,110,115,117,112,112,111,114,116,101,100,32,101,110,99,111,100,105,110,103,58,32,37,115,0,2,0,1,0,52,0,0,0,2,0,0,0,51,0,1,0,33,1,1,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,0,102,117,108,108,0,114,101,115,116,97,114,116,0,116,114,117,110,99,97,116,101,0,119,97,108,95,97,117,116,111,99,104,101,99,107,112,111,105,110,116,0,116,105,109,101,111,117,116,0,115,111,102,116,95,104,101,97,112,95,108,105,109,105,116,0,116,104,114,101,97,100,115,0,98,117,115,121,0,99,104,101,99,107,112,111,105,110,116,101,100,0,85,84,70,56,0,85,84,70,45,56,0,85,84,70,45,49,54,108,101,0,85,84,70,45,49,54,98,101,0,85,84,70,49,54,108,101,0,85,84,70,49,54,98,101,0,85,84,70,45,49,54,0,85,84,70,49,54,0,37,95,0,0,108,105,107,101,0,103,108,111,98,0,76,73,75,69,32,111,114,32,71,76,79,66,32,112,97,116,116,101,114,110,32,116,111,111,32,99,111,109,112,108,101,120,0,69,83,67,65,80,69,32,101,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,97,32,115,105,110,103,108,101,32,99,104,97,114,97,99,116,101,114,0,102,111,114,101,105,103,110,32,107,101,121,32,109,105,115,109,97,116,99,104,32,45,32,34,37,119,34,32,114,101,102,101,114,101,110,99,105,110,103,32,34,37,119,34,0,116,97,98,108,101,0,112,97,114,101,110,116,0,102,107,105,100,0,83,69,84,32,78,85,76,76,0,83,69,84,32,68,69,70,65,85,76,84,0,67,65,83,67,65,68,69,0,82,69,83,84,82,73,67,84,0,78,79,32,65,67,84,73,79,78,0,105,100,0,115,101,113,0,102,114,111,109,0,116,111,0,111,110,95,117,112,100,97,116,101,0,111,110,95,100,101,108,101,116,101,0,109,97,116,99,104,0,110,97,109,101,0,102,105,108,101,0,99,0,117,0,112,107,0,117,110,105,113,117,101,0,111,114,105,103,105,110,0,112,97,114,116,105,97,108,0,115,101,113,110,111,0,99,105,100,0,99,111,108,108,0,107,101,121,0,105,110,100,101,120,0,119,105,100,116,104,0,104,101,105,103,104,116,0,116,121,112,101,0,110,111,116,110,117,108,108,0,100,102,108,116,95,118,97,108,117,101,0,116,101,109,112,111,114,97,114,121,32,115,116,111,114,97,103,101,32,99,97,110,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,110,111,110,101,0,105,110,99,114,101,109,101,110,116,97,108,0,100,101,108,101,116,101,0,112,101,114,115,105,115,116,0,111,102,102,0,119,97,108,0,97,112,112,108,105,99,97,116,105,111,110,95,105,100,0,97,117,116,111,109,97,116,105,99,95,105,110,100,101,120,0,98,117,115,121,95,116,105,109,101,111,117,116,0,99,97,115,101,95,115,101,110,115,105,116,105,118,101,95,108,105,107,101,0,99,101,108,108,95,115,105,122,101,95,99,104,101,99,107,0,99,104,101,99,107,112,111,105,110,116,95,102,117,108,108,102,115,121,110,99,0,99,111,108,108,97,116,105,111,110,95,108,105,115,116,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,115,0,99,111,117,110,116,95,99,104,97,110,103,101,115,0,100,97,116,97,95,118,101,114,115,105,111,110,0,100,97,116,97,98,97,115,101,95,108,105,115,116,0,100,101,102,97,117,108,116,95,99,97,99,104,101,95,115,105,122,101,0,100,101,102,101,114,95,102,111,114,101,105,103,110,95,107,101,121,115,0,101,109,112,116,121,95,114,101,115,117,108,116,95,99,97,108,108,98,97,99,107,115,0,102,111,114,101,105,103,110,95,107,101,121,95,99,104,101,99,107,0,102,111,114,101,105,103,110,95,107,101,121,95,108,105,115,116,0,102,111,114,101,105,103,110,95,107,101,121,115,0,102,114,101,101,108,105,115,116,95,99,111,117,110,116,0,102,117,108,108,95,99,111,108,117,109,110,95,110,97,109,101,115,0,102,117,108,108,102,115,121,110,99,0,105,103,110,111,114,101,95,99,104,101,99,107,95,99,111,110,115,116,114,97,105,110,116,115,0,105,110,99,114,101,109,101,110,116,97,108,95,118,97,99,117,117,109,0,105,110,100,101,120,95,105,110,102,111,0,105,110,100,101,120,95,108,105,115,116,0,105,110,100,101,120,95,120,105,110,102,111,0,108,101,103,97,99,121,95,102,105,108,101,95,102,111,114,109,97,116,0,109,97,120,95,112,97,103,101,95,99,111,117,110,116,0,112,97,103,101,95,99,111,117,110,116,0,113,117,101,114,121,95,111,110,108,121,0,113,117,105,99,107,95,99,104,101,99,107,0,114,101,97,100,95,117,110,99,111,109,109,105,116,116,101,100,0,114,101,99,117,114,115,105,118,101,95,116,114,105,103,103,101,114,115,0,114,101,118,101,114,115,101,95,117,110,111,114,100,101,114,101,100,95,115,101,108,101,99,116,115,0,115,99,104,101,109,97,95,118,101,114,115,105,111,110,0,115,104,111,114,116,95,99,111,108,117,109,110,95,110,97,109,101,115,0,115,104,114,105,110,107,95,109,101,109,111,114,121,0,115,116,97,116,115,0,116,97,98,108,101,95,105,110,102,111,0,117,115,101,114,95,118,101,114,115,105,111,110,0,119,97,108,95,99,104,101,99,107,112,111,105,110,116,0,119,114,105,116,97,98,108,101,95,115,99,104,101,109,97,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,83,0,105,110,100,101,120,32,97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32,85,78,73,81,85,69,32,111,114,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,99,97,110,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,110,97,109,101,61,37,81,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,114,111,111,116,112,97,103,101,61,37,100,32,87,72,69,82,69,32,35,37,100,32,65,78,68,32,114,111,111,116,112,97,103,101,61,35,37,100,0,115,113,108,105,116,101,95,115,116,97,116,37,100,0,115,121,110,116,97,120,32,101,114,114,111,114,32,97,102,116,101,114,32,99,111,108,117,109,110,32,110,97,109,101,32,34,37,46,42,115,34,0,48,0,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,109,117,115,116,32,98,101,32,98,101,116,119,101,101,110,32,63,49,32,97,110,100,32,63,37,100,0,116,111,111,32,109,97,110,121,32,83,81,76,32,118,97,114,105,97,98,108,101,115,0,116,97,98,108,101,32,37,83,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,116,97,98,108,101,32,37,83,32,104,97,115,32,37,100,32,99,111,108,117,109,110,115,32,98,117,116,32,37,100,32,118,97,108,117,101,115,32,119,101,114,101,32,115,117,112,112,108,105,101,100,0,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,114,111,119,115,32,105,110,115,101,114,116,101,100,0,77,0,2,0,74,0,0,0,49,0,2,0,75,0,0,0,61,0,0,0,97,116,32,109,111,115,116,32,37,100,32,116,97,98,108,101,115,32,105,110,32,97,32,106,111,105,110,0,66,64,63,65,0,0,108,105,66,63,65,64,117,115,114,116,7,6,108,105,83,69,65,82,67,72,0,83,67,65,78,0,32,83,85,66,81,85,69,82,89,32,37,100,0,32,84,65,66,76,69,32,37,115,0,32,65,83,32,37,115,0,80,82,73,77,65,82,89,32,75,69,89,0,65,85,84,79,77,65,84,73,67,32,80,65,82,84,73,65,76,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,65,85,84,79,77,65,84,73,67,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,37,115,0,73,78,68,69,88,32,37,115,0,32,85,83,73,78,71,32,0,61,0,62,63,32,65,78,68,32,114,111,119,105,100,60,0,62,0,60,0,32,85,83,73,78,71,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,32,40,114,111,119,105,100,37,115,63,41,0,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,73,78,68,69,88,32,37,100,58,37,115,0,32,40,0,32,65,78,68,32,0,37,115,61,63,0,65,78,89,40,37,115,41,0,41,0,60,101,120,112,114,62,0,97,117,116,111,109,97,116,105,99,32,105,110,100,101,120,32,111,110,32,37,115,40,37,115,41,0,97,117,116,111,45,105,110,100,101,120,0,110,111,32,113,117,101,114,121,32,115,111,108,117,116,105,111,110,0,10,10,9,9,8,8,7,7,7,6,6,6,5,5,5,4,4,4,4,3,3,3,3,3,3,2,2,2,2,2,2,2,37,115,46,120,66,101,115,116,73,110,100,101,120,40,41,32,109,97,108,102,117,110,99,116,105,111,110,0,116,97,98,108,101,32,37,115,58,32,120,66,101,115,116,73,110,100,101,120,32,114,101,116,117,114,110,101,100,32,97,110,32,105,110,118,97,108,105,100,32,112,108,97,110,0,83,81,66,73,78,65,82,89,0,114,101,103,101,120,112,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,111,110,32,37,115,40,41,32,45,32,109,97,120,32,37,100,0,45,45,32,84,82,73,71,71,69,82,32,37,115,0,0,0,0,1,1,1,1,1,0,16,0,1,0,1,1,2,1,2,3,18,8,0,16,16,16,16,0,16,16,0,0,16,16,0,0,0,0,2,3,2,2,0,0,1,1,3,3,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,9,9,38,38,16,16,0,3,3,11,11,11,11,11,11,0,38,38,38,38,38,38,38,38,38,38,0,18,16,0,0,0,0,0,16,0,1,1,1,1,4,4,0,0,16,1,1,1,1,16,0,0,16,16,0,0,0,0,0,0,6,35,11,1,16,16,0,1,4,3,26,3,3,3,0,0,0,1,0,0,0,0,0,0,0,1,0,16,16,1,0,0,0,0,1,2,3,4,6,8,8,0,0,0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,49,49,50,50,51,51,52,52,53,53,54,54,55,55,56,56,57,57,70,79,82,69,73,71,78,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,37,115,46,114,111,119,105,100,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,109,111,100,105,102,105,101,100,0,99,97,110,110,111,116,32,109,111,100,105,102,121,32,37,115,32,98,101,99,97,117,115,101,32,105,116,32,105,115,32,97,32,118,105,101,119,0,114,111,119,115,32,117,112,100,97,116,101,100,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,37,115,0,114,111,119,115,32,100,101,108,101,116,101,100,0,0,7,4,6,4,40,10,5,32,14,5,48,19,4,56,23,5,1,28,5,3,110,97,116,117,114,97,108,101,102,116,111,117,116,101,114,105,103,104,116,102,117,108,108,105,110,110,101,114,99,114,111,115,115,0,32,0,117,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,106,111,105,110,32,116,121,112,101,58,32,37,84,32,37,84,37,115,37,84,0,82,73,71,72,84,32,97,110,100,32,70,85,76,76,32,79,85,84,69,82,32,74,79,73,78,115,32,97,114,101,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,0,79,78,0,85,83,73,78,71,0,97,32,74,79,73,78,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,37,115,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,99,111,109,112,111,117,110,100,32,83,69,76,69,67,84,0,101,120,112,101,99,116,101,100,32,37,100,32,99,111,108,117,109,110,115,32,102,111,114,32,39,37,115,39,32,98,117,116,32,103,111,116,32,37,100,0,68,73,83,84,73,78,67,84,0,71,82,79,85,80,32,66,89,0,82,73,71,72,84,32,80,65,82,84,32,79,70,32,79,82,68,69,82,32,66,89,0,79,82,68,69,82,32,66,89,0,99,111,108,117,109,110,37,100,0,109,105,110,0,109,97,120,0,32,85,83,73,78,71,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,0,83,67,65,78,32,84,65,66,76,69,32,37,115,37,115,37,115,0,68,73,83,84,73,78,67,84,32,97,103,103,114,101,103,97,116,101,115,32,109,117,115,116,32,104,97,118,101,32,101,120,97,99,116,108,121,32,111,110,101,32,97,114,103,117,109,101,110,116,0,85,83,69,32,84,69,77,80,32,66,45,84,82,69,69,32,70,79,82,32,37,115,0,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,76,73,77,73,84,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,85,83,73,78,71,32,84,69,77,80,32,66,45,84,82,69,69,32,0,67,79,77,80,79,85,78,68,32,83,85,66,81,85,69,82,73,69,83,32,37,100,32,65,78,68,32,37,100,32,37,115,40,37,115,41,0,114,101,99,117,114,115,105,118,101,32,97,103,103,114,101,103,97,116,101,32,113,117,101,114,105,101,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,111,110,108,121,32,97,32,115,105,110,103,108,101,32,114,101,115,117,108,116,32,97,108,108,111,119,101,100,32,102,111,114,32,97,32,83,69,76,69,67,84,32,116,104,97,116,32,105,115,32,112,97,114,116,32,111,102,32,97,110,32,101,120,112,114,101,115,115,105,111,110,0,112,97,114,97,109,101,116,101,114,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,118,105,101,119,115,0,118,105,101,119,0,115,113,108,105,116,101,95,115,116,97,116,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,117,115,101,32,68,82,79,80,32,84,65,66,76,69,32,116,111,32,100,101,108,101,116,101,32,116,97,98,108,101,32,37,115,0,117,115,101,32,68,82,79,80,32,86,73,69,87,32,116,111,32,100,101,108,101,116,101,32,118,105,101,119,32,37,115,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,87,72,69,82,69,32,110,97,109,101,61,37,81,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,97,110,100,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,102,111,114,101,105,103,110,32,107,101,121,32,111,110,32,37,115,32,115,104,111,117,108,100,32,114,101,102,101,114,101,110,99,101,32,111,110,108,121,32,111,110,101,32,99,111,108,117,109,110,32,111,102,32,116,97,98,108,101,32,37,84,0,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,116,104,101,32,114,101,102,101,114,101,110,99,101,100,32,116,97,98,108,101,0,117,110,107,110,111,119,110,32,99,111,108,117,109,110,32,34,37,115,34,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,101,102,105,110,105,116,105,111,110,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,97,32,84,69,77,80,32,105,110,100,101,120,32,111,110,32,110,111,110,45,84,69,77,80,32,116,97,98,108,101,32,34,37,115,34,0,97,108,116,101,114,116,97,98,95,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,118,105,101,119,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,32,116,97,98,108,101,32,110,97,109,101,100,32,37,115,0,105,110,100,101,120,32,37,115,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,37,115,95,37,100,0,101,120,112,114,101,115,115,105,111,110,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,80,82,73,77,65,82,89,32,75,69,89,32,97,110,100,32,85,78,73,81,85,69,32,99,111,110,115,116,114,97,105,110,116,115,0,99,111,110,102,108,105,99,116,105,110,103,32,79,78,32,67,79,78,70,76,73,67,84,32,99,108,97,117,115,101,115,32,115,112,101,99,105,102,105,101,100,0,32,85,78,73,81,85,69,0,67,82,69,65,84,69,37,115,32,73,78,68,69,88,32,37,46,42,115,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,105,110,100,101,120,39,44,37,81,44,37,81,44,35,37,100,44,37,81,41,59,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,116,97,98,108,101,32,34,37,115,34,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,112,114,105,109,97,114,121,32,107,101,121,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,105,115,32,111,110,108,121,32,97,108,108,111,119,101,100,32,111,110,32,97,110,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,0,100,101,102,97,117,108,116,32,118,97,108,117,101,32,111,102,32,99,111,108,117,109,110,32,91,37,115,93,32,105,115,32,110,111,116,32,99,111,110,115,116,97,110,116,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,111,110,32,37,115,0,100,117,112,108,105,99,97,116,101,32,99,111,108,117,109,110,32,110,97,109,101,58,32,37,115,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,87,73,84,72,79,85,84,32,82,79,87,73,68,32,116,97,98,108,101,115,0,80,82,73,77,65,82,89,32,75,69,89,32,109,105,115,115,105,110,103,32,111,110,32,116,97,98,108,101,32,37,115,0,84,65,66,76,69,0,86,73,69,87,0,67,82,69,65,84,69,32,37,115,32,37,46,42,115,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,37,115,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,35,37,100,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114,111,119,105,100,61,35,37,100,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,40,110,97,109,101,44,115,101,113,41,0,116,98,108,95,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,44,0,10,32,32,0,44,10,32,32,0,10,41,0,67,82,69,65,84,69,32,84,65,66,76,69,32,0,32,84,69,88,84,0,32,78,85,77,0,32,73,78,84,0,32,82,69,65,76,0,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,117,110,113,117,97,108,105,102,105,101,100,0,2,4,8,6,116,97,98,108,101,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,32,105,110,100,101,120,32,110,97,109,101,100,32,37,115,0,6,0,0,0,0,0,66,69,71,73,78,0,82,69,76,69,65,83,69,0,82,79,76,76,66,65,67,75,0,67,79,77,77,73,84,0,25,0,0,0,108,0,9,0,47,0,0,0,78,0,7,0,103,0,0,0,47,0,1,0,13,0,9,0,7,0,2,0,22,0,0,0,61,0,0,0,112,97,114,115,101,114,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,19,144,145,146,147,24,1,2,27,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,91,92,93,94,95,19,50,51,80,81,82,83,27,85,86,87,88,89,90,91,92,93,94,95,137,177,139,71,72,73,74,75,76,77,78,79,80,81,82,83,95,85,86,87,88,89,90,91,92,93,94,95,19,97,85,86,87,88,89,90,91,92,93,94,95,152,33,212,173,27,28,223,224,225,152,42,181,152,223,224,225,95,97,50,51,99,100,101,102,103,104,105,27,28,59,223,224,225,112,174,175,66,94,95,71,72,73,74,75,76,77,78,79,80,81,82,83,195,85,86,87,88,89,90,91,92,93,94,95,19,197,89,90,220,209,210,26,119,120,97,98,208,100,108,109,110,152,157,152,107,152,109,89,90,91,92,93,94,95,163,50,51,97,98,99,55,66,102,103,104,174,175,174,175,132,133,192,193,113,66,19,71,72,73,74,75,76,77,78,79,80,81,82,83,198,85,86,87,88,89,90,91,92,93,94,95,152,209,210,148,149,50,51,100,53,154,59,156,174,229,27,28,232,163,163,22,192,193,174,175,27,28,71,72,73,74,75,76,77,78,79,80,81,82,83,251,85,86,87,88,89,90,91,92,93,94,95,19,198,198,152,152,24,209,210,108,109,110,196,197,27,28,69,164,165,152,119,120,27,28,208,99,27,28,102,103,104,152,50,51,97,98,89,90,185,113,187,22,177,174,97,58,27,28,101,115,245,117,118,71,72,73,74,75,76,77,78,79,80,81,82,83,11,85,86,87,88,89,90,91,92,93,94,95,19,132,133,134,23,152,97,98,91,174,223,224,225,239,97,98,187,22,97,98,27,28,27,28,152,223,224,225,239,152,163,50,51,170,171,172,59,160,97,98,239,164,165,66,242,124,174,175,195,22,23,69,71,72,73,74,75,76,77,78,79,80,81,82,83,198,85,86,87,88,89,90,91,92,93,94,95,19,12,97,21,23,152,101,152,108,109,110,221,152,97,98,97,98,152,29,243,70,226,23,233,26,26,152,152,238,174,175,50,51,22,45,24,47,132,133,134,124,22,23,188,163,26,152,65,59,174,175,163,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,19,198,152,23,152,152,209,103,198,174,175,70,152,50,51,219,213,214,152,98,152,171,172,188,171,172,174,175,248,249,50,51,51,251,174,175,220,74,75,152,188,152,174,175,140,124,26,163,188,16,130,71,72,73,74,75,76,77,78,79,80,81,82,83,101,85,86,87,88,89,90,91,92,93,94,95,19,209,196,197,23,231,198,12,231,219,37,22,107,24,208,116,27,112,201,62,121,64,152,152,29,52,66,221,211,221,219,50,51,60,89,90,152,22,23,183,45,26,47,22,174,175,238,152,164,165,106,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,132,133,119,120,163,50,51,111,70,97,174,175,181,182,170,171,172,0,1,2,140,190,108,109,110,51,71,72,73,74,75,76,77,78,79,80,81,82,83,198,85,86,87,88,89,90,91,92,93,94,95,19,152,152,152,22,166,152,168,169,27,19,152,26,19,152,122,152,24,152,28,27,152,28,174,175,174,175,152,174,175,107,50,51,174,175,22,174,175,174,175,174,175,138,174,175,7,8,9,16,174,175,152,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,152,97,152,31,24,152,98,35,101,174,175,152,97,152,79,152,62,152,64,112,152,49,174,175,174,175,152,174,175,152,50,51,124,174,175,174,175,174,175,174,175,138,174,175,22,23,152,152,174,175,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,108,109,110,152,50,51,146,147,23,174,175,26,195,195,152,70,152,168,169,152,26,174,175,152,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,246,247,213,214,50,51,195,152,195,174,175,195,100,101,152,195,152,152,7,8,152,174,175,163,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,27,152,189,189,50,51,195,198,152,174,175,33,132,133,152,123,163,163,163,152,42,174,175,152,19,152,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,198,198,198,23,50,51,26,152,23,174,175,26,23,23,23,26,26,26,152,97,23,174,175,26,132,133,152,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,20,23,22,23,26,152,152,27,28,174,175,152,19,20,27,22,183,183,38,152,27,28,152,23,152,152,26,174,175,152,152,38,152,23,152,27,26,57,152,215,163,152,152,152,174,175,66,174,175,69,57,174,175,152,174,175,174,175,212,66,174,175,69,174,175,174,175,152,152,89,90,152,193,152,152,198,96,97,98,91,152,101,89,90,97,152,209,210,152,96,97,98,235,152,101,174,175,152,19,20,152,22,174,175,116,97,27,28,152,121,174,175,132,133,134,135,136,38,152,174,175,152,174,175,152,132,133,134,135,136,234,152,212,150,199,212,57,212,240,240,203,178,200,216,186,177,19,20,69,22,203,177,182,177,27,28,202,200,228,216,216,155,39,122,159,38,159,41,89,90,91,159,241,241,22,96,97,98,71,130,101,222,191,18,57,203,194,159,194,194,194,18,158,244,191,222,69,159,158,137,19,20,203,22,191,203,46,236,27,28,159,132,133,134,135,136,89,90,237,38,159,158,22,96,97,98,179,159,101,158,48,159,158,179,176,107,176,184,57,106,176,184,176,125,179,178,176,218,107,176,69,176,217,159,218,218,217,159,137,132,133,134,135,136,218,217,179,217,179,227,89,90,95,230,230,129,207,96,97,98,126,128,101,5,206,205,127,204,10,11,12,13,14,203,25,17,162,26,161,13,153,153,6,247,180,250,151,151,151,151,32,180,34,132,133,134,135,136,167,4,3,43,22,15,68,142,250,16,23,23,120,111,131,20,56,123,125,16,1,123,131,63,79,79,66,67,111,28,36,122,1,5,22,107,140,54,54,26,61,107,44,20,24,19,105,112,23,22,40,22,22,53,22,53,22,53,23,23,23,22,22,30,116,23,122,26,23,23,22,28,11,124,114,26,26,23,23,23,36,24,23,36,26,22,22,36,23,122,23,22,26,22,24,23,23,23,22,122,23,141,122,122,15,1,0,0,27,27,27,27,0,27,27,27,0,27,27,27,27,0,0,0,27,0,0,27,0,0,0,27,0,0,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,7,7,27,7,7,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,7,15,8,5,4,22,24,8,17,18,21,20,23,11,26,16,3,3,3,3,3,3,3,3,3,3,5,19,12,14,13,6,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,9,27,27,27,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,27,10,27,25,27,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,105,110,118,97,108,105,100,0,65,80,73,32,99,97,108,108,32,119,105,116,104,32,37,115,32,100,97,116,97,98,97,115,101,32,99,111,110,110,101,99,116,105,111,110,32,112,111,105,110,116,101,114,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,115,116,97,116,101,109,101,110,116,32,116,111,111,32,108,111,110,103,0,97,100,100,114,0,111,112,99,111,100,101,0,112,49,0,112,50,0,112,51,0,112,52,0,112,53,0,99,111,109,109,101,110,116,0,115,101,108,101,99,116,105,100,0,100,101,116,97,105,108,0,78,85,76,76,0,117,110,111,112,101,110,101,100,0,114,101,97,108,0,105,110,116,101,103,101,114,0,110,117,108,108,0,99,97,110,110,111,116,32,111,112,101,110,32,118,97,108,117,101,32,111,102,32,116,121,112,101,32,37,115,0,110,111,32,115,117,99,104,32,114,111,119,105,100,58,32,37,108,108,100,0,110,111,32,115,117,99,104,32,118,105,101,119,0,110,111,32,115,117,99,104,32,116,97,98,108,101,0,98,105,110,100,32,111,110,32,97,32,98,117,115,121,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,58,32,91,37,115,93,0,97,98,111,114,116,32,97,116,32,37,100,32,105,110,32,91,37,115,93,58,32,37,115,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,58,32,37,115,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,1,2,0,2,2,0,1,2,1,1,1,2,1,2,0,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,110,111,32,115,117,99,104,32,115,97,118,101,112,111,105,110,116,58,32,37,115,0,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,116,114,97,110,115,97,99,116,105,111,110,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,99,97,110,110,111,116,32,114,111,108,108,98,97,99,107,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,99,97,110,110,111,116,32,115,116,97,114,116,32,97,32,116,114,97,110,115,97,99,116,105,111,110,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,104,97,115,32,99,104,97,110,103,101,100,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,87,72,69,82,69,32,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,116,111,111,32,109,97,110,121,32,108,101,118,101,108,115,32,111,102,32,116,114,105,103,103,101,114,32,114,101,99,117,114,115,105,111,110,0,105,110,116,111,0,111,117,116,32,111,102,0,99,97,110,110,111,116,32,99,104,97,110,103,101,32,37,115,32,119,97,108,32,109,111,100,101,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,115,116,97,116,101,109,101,110,116,32,97,98,111,114,116,115,32,97,116,32,37,100,58,32,91,37,115,93,32,37,115,0,45,45,32,0,39,37,46,42,113,39,0,122,101,114,111,98,108,111,98,40,37,100,41,0,120,39,0,37,48,50,120,0,39,0,99,97,110,110,111,116],"i8",4,l.aa+31102); -z([32,86,65,67,85,85,77,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,86,65,67,85,85,77,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,65,84,84,65,67,72,32,39,58,109,101,109,111,114,121,58,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,65,84,84,65,67,72,32,39,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,80,82,65,71,77,65,32,118,97,99,117,117,109,95,100,98,46,115,121,110,99,104,114,111,110,111,117,115,61,79,70,70,0,66,69,71,73,78,59,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,84,65,66,76,69,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,37,39,32,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,50,49,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,37,39,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,83,69,76,69,67,84,32,39,68,69,76,69,84,69,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,59,0,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,83,69,76,69,67,84,32,116,121,112,101,44,32,110,97,109,101,44,32,116,98,108,95,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,32,32,32,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,87,72,69,82,69,32,116,121,112,101,61,39,118,105,101,119,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,32,32,32,32,32,79,82,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,114,111,111,116,112,97,103,101,61,48,41,0,1,1,3,0,5,0,6,0,8,0,77,97,105,110,32,102,114,101,101,108,105,115,116,58,32,0,80,97,103,101,32,37,100,32,105,115,32,110,101,118,101,114,32,117,115,101,100,0,80,111,105,110,116,101,114,32,109,97,112,32,112,97,103,101,32,37,100,32,105,115,32,114,101,102,101,114,101,110,99,101,100,0,10,0,80,97,103,101,32,37,100,58,32,0,117,110,97,98,108,101,32,116,111,32,103,101,116,32,116,104,101,32,112,97,103,101,46,32,101,114,114,111,114,32,99,111,100,101,61,37,100,0,98,116,114,101,101,73,110,105,116,80,97,103,101,40,41,32,114,101,116,117,114,110,115,32,101,114,114,111,114,32,99,111,100,101,32,37,100,0,79,110,32,116,114,101,101,32,112,97,103,101,32,37,100,32,99,101,108,108,32,37,100,58,32,0,79,110,32,112,97,103,101,32,37,100,32,97,116,32,114,105,103,104,116,32,99,104,105,108,100,58,32,0,79,102,102,115,101,116,32,37,100,32,111,117,116,32,111,102,32,114,97,110,103,101,32,37,100,46,46,37,100,0,69,120,116,101,110,100,115,32,111,102,102,32,101,110,100,32,111,102,32,112,97,103,101,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,0,67,104,105,108,100,32,112,97,103,101,32,100,101,112,116,104,32,100,105,102,102,101,114,115,0,77,117,108,116,105,112,108,101,32,117,115,101,115,32,102,111,114,32,98,121,116,101,32,37,117,32,111,102,32,112,97,103,101,32,37,100,0,70,114,97,103,109,101,110,116,97,116,105,111,110,32,111,102,32,37,100,32,98,121,116,101,115,32,114,101,112,111,114,116,101,100,32,97,115,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,105,110,118,97,108,105,100,32,112,97,103,101,32,110,117,109,98,101,114,32,37,100,0,50,110,100,32,114,101,102,101,114,101,110,99,101,32,116,111,32,112,97,103,101,32,37,100,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,112,116,114,109,97,112,32,107,101,121,61,37,100,0,66,97,100,32,112,116,114,32,109,97,112,32,101,110,116,114,121,32,107,101,121,61,37,100,32,101,120,112,101,99,116,101,100,61,40,37,100,44,37,100,41,32,103,111,116,61,40,37,100,44,37,100,41,0,37,100,32,111,102,32,37,100,32,112,97,103,101,115,32,109,105,115,115,105,110,103,32,102,114,111,109,32,111,118,101,114,102,108,111,119,32,108,105,115,116,32,115,116,97,114,116,105,110,103,32,97,116,32,37,100,0,102,97,105,108,101,100,32,116,111,32,103,101,116,32,112,97,103,101,32,37,100,0,102,114,101,101,108,105,115,116,32,108,101,97,102,32,99,111,117,110,116,32,116,111,111,32,98,105,103,32,111,110,32,112,97,103,101,32,37,100,0,102,114,101,101,45,112,97,103,101,32,99,111,117,110,116,32,105,110,32,104,101,97,100,101,114,32,105,115,32,116,111,111,32,115,109,97,108,108,0,0,1,2,3,4,6,8,83,81,76,105,116,101,32,102,111,114,109,97,116,32,51,0,37,115,45,109,106,88,88,88,88,88,88,57,88,88,122,0,77,74,32,100,101,108,101,116,101,58,32,37,115,0,77,74,32,99,111,108,108,105,100,101,58,32,37,115,0,45,109,106,37,48,54,88,57,37,48,50,88,0,78,79,84,32,78,85,76,76,0,85,78,73,81,85,69,0,67,72,69,67,75,0,70,79,82,69,73,71,78,32,75,69,89,0,37,46,50,120,0,107,40,37,100,0,66,0,44,37,115,37,115,0,40,37,46,50,48,115,41,0,37,115,40,37,100,41,0,37,100,0,37,46,49,54,103,0,40,98,108,111,98,41,0,118,116,97,98,58,37,112,0,44,37,100,0,93,0,112,114,111,103,114,97,109,0,83,97,118,101,112,111,105,110,116,0,65,117,116,111,67,111,109,109,105,116,0,84,114,97,110,115,97,99,116,105,111,110,0,83,111,114,116,101,114,78,101,120,116,0,80,114,101,118,73,102,79,112,101,110,0,78,101,120,116,73,102,79,112,101,110,0,80,114,101,118,0,78,101,120,116,0,67,104,101,99,107,112,111,105,110,116,0,74,111,117,114,110,97,108,77,111,100,101,0,86,97,99,117,117,109,0,86,70,105,108,116,101,114,0,86,85,112,100,97,116,101,0,71,111,116,111,0,71,111,115,117,98,0,82,101,116,117,114,110,0,73,110,105,116,67,111,114,111,117,116,105,110,101,0,69,110,100,67,111,114,111,117,116,105,110,101,0,89,105,101,108,100,0,78,111,116,0,72,97,108,116,73,102,78,117,108,108,0,72,97,108,116,0,73,110,116,101,103,101,114,0,73,110,116,54,52,0,83,116,114,105,110,103,0,78,117,108,108,0,83,111,102,116,78,117,108,108,0,66,108,111,98,0,86,97,114,105,97,98,108,101,0,77,111,118,101,0,67,111,112,121,0,83,67,111,112,121,0,73,110,116,67,111,112,121,0,82,101,115,117,108,116,82,111,119,0,67,111,108,108,83,101,113,0,70,117,110,99,116,105,111,110,48,0,70,117,110,99,116,105,111,110,0,65,100,100,73,109,109,0,77,117,115,116,66,101,73,110,116,0,82,101,97,108,65,102,102,105,110,105,116,121,0,67,97,115,116,0,80,101,114,109,117,116,97,116,105,111,110,0,67,111,109,112,97,114,101,0,74,117,109,112,0,79,110,99,101,0,73,102,0,73,102,78,111,116,0,67,111,108,117,109,110,0,65,102,102,105,110,105,116,121,0,77,97,107,101,82,101,99,111,114,100,0,67,111,117,110,116,0,82,101,97,100,67,111,111,107,105,101,0,83,101,116,67,111,111,107,105,101,0,82,101,111,112,101,110,73,100,120,0,79,112,101,110,82,101,97,100,0,79,112,101,110,87,114,105,116,101,0,79,112,101,110,65,117,116,111,105,110,100,101,120,0,79,112,101,110,69,112,104,101,109,101,114,97,108,0,83,111,114,116,101,114,79,112,101,110,0,83,101,113,117,101,110,99,101,84,101,115,116,0,79,112,101,110,80,115,101,117,100,111,0,67,108,111,115,101,0,67,111,108,117,109,110,115,85,115,101,100,0,83,101,101,107,76,84,0,83,101,101,107,76,69,0,83,101,101,107,71,69,0,83,101,101,107,71,84,0,78,111,67,111,110,102,108,105,99,116,0,78,111,116,70,111,117,110,100,0,70,111,117,110,100,0,78,111,116,69,120,105,115,116,115,0,79,114,0,65,110,100,0,83,101,113,117,101,110,99,101,0,78,101,119,82,111,119,105,100,0,73,110,115,101,114,116,0,73,115,78,117,108,108,0,78,111,116,78,117,108,108,0,78,101,0,69,113,0,71,116,0,76,101,0,76,116,0,71,101,0,73,110,115,101,114,116,73,110,116,0,66,105,116,65,110,100,0,66,105,116,79,114,0,83,104,105,102,116,76,101,102,116,0,83,104,105,102,116,82,105,103,104,116,0,65,100,100,0,83,117,98,116,114,97,99,116,0,77,117,108,116,105,112,108,121,0,68,105,118,105,100,101,0,82,101,109,97,105,110,100,101,114,0,67,111,110,99,97,116,0,68,101,108,101,116,101,0,66,105,116,78,111,116,0,83,116,114,105,110,103,56,0,82,101,115,101,116,67,111,117,110,116,0,83,111,114,116,101,114,67,111,109,112,97,114,101,0,83,111,114,116,101,114,68,97,116,97,0,82,111,119,75,101,121,0,82,111,119,68,97,116,97,0,82,111,119,105,100,0,78,117,108,108,82,111,119,0,76,97,115,116,0,83,111,114,116,101,114,83,111,114,116,0,83,111,114,116,0,82,101,119,105,110,100,0,83,111,114,116,101,114,73,110,115,101,114,116,0,73,100,120,73,110,115,101,114,116,0,73,100,120,68,101,108,101,116,101,0,83,101,101,107,0,73,100,120,82,111,119,105,100,0,73,100,120,76,69,0,73,100,120,71,84,0,73,100,120,76,84,0,73,100,120,71,69,0,68,101,115,116,114,111,121,0,67,108,101,97,114,0,82,101,115,101,116,83,111,114,116,101,114,0,67,114,101,97,116,101,73,110,100,101,120,0,67,114,101,97,116,101,84,97,98,108,101,0,80,97,114,115,101,83,99,104,101,109,97,0,76,111,97,100,65,110,97,108,121,115,105,115,0,68,114,111,112,84,97,98,108,101,0,68,114,111,112,73,110,100,101,120,0,68,114,111,112,84,114,105,103,103,101,114,0,73,110,116,101,103,114,105,116,121,67,107,0,82,111,119,83,101,116,65,100,100,0,82,111,119,83,101,116,82,101,97,100,0,82,111,119,83,101,116,84,101,115,116,0,80,114,111,103,114,97,109,0,82,101,97,108,0,80,97,114,97,109,0,70,107,67,111,117,110,116,101,114,0,70,107,73,102,90,101,114,111,0,77,101,109,77,97,120,0,73,102,80,111,115,0,79,102,102,115,101,116,76,105,109,105,116,0,73,102,78,111,116,90,101,114,111,0,68,101,99,114,74,117,109,112,90,101,114,111,0,74,117,109,112,90,101,114,111,73,110,99,114,0,65,103,103,83,116,101,112,48,0,65,103,103,83,116,101,112,0,65,103,103,70,105,110,97,108,0,73,110,99,114,86,97,99,117,117,109,0,69,120,112,105,114,101,0,84,97,98,108,101,76,111,99,107,0,86,66,101,103,105,110,0,86,67,114,101,97,116,101,0,86,68,101,115,116,114,111,121,0,86,79,112,101,110,0,86,67,111,108,117,109,110,0,86,78,101,120,116,0,86,82,101,110,97,109,101,0,80,97,103,101,99,111,117,110,116,0,77,97,120,80,103,99,110,116,0,73,110,105,116,0,67,117,114,115,111,114,72,105,110,116,0,78,111,111,112,0,69,120,112,108,97,105,110,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,78,85,76,76,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,117,110,107,110,111,119,110,32,101,114,114,111,114,0,97,98,111,114,116,32,100,117,101,32,116,111,32,82,79,76,76,66,65,67,75,0,110,111,116,32,97,110,32,101,114,114,111,114,0,83,81,76,32,108,111,103,105,99,32,101,114,114,111,114,32,111,114,32,109,105,115,115,105,110,103,32,100,97,116,97,98,97,115,101,0,97,99,99,101,115,115,32,112,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,99,97,108,108,98,97,99,107,32,114,101,113,117,101,115,116,101,100,32,113,117,101,114,121,32,97,98,111,114,116,0,100,97,116,97,98,97,115,101,32,105,115,32,108,111,99,107,101,100,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,0,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,97,32,114,101,97,100,111,110,108,121,32,100,97,116,97,98,97,115,101,0,105,110,116,101,114,114,117,112,116,101,100,0,100,105,115,107,32,73,47,79,32,101,114,114,111,114,0,100,97,116,97,98,97,115,101,32,100,105,115,107,32,105,109,97,103,101,32,105,115,32,109,97,108,102,111,114,109,101,100,0,117,110,107,110,111,119,110,32,111,112,101,114,97,116,105,111,110,0,100,97,116,97,98,97,115,101,32,111,114,32,100,105,115,107,32,105,115,32,102,117,108,108,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,32,102,105,108,101,0,108,111,99,107,105,110,103,32,112,114,111,116,111,99,111,108,0,116,97,98,108,101,32,99,111,110,116,97,105,110,115,32,110,111,32,100,97,116,97,0,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,100,97,116,97,116,121,112,101,32,109,105,115,109,97,116,99,104,0,108,105,98,114,97,114,121,32,114,111,117,116,105,110,101,32,99,97,108,108,101,100,32,111,117,116,32,111,102,32,115,101,113,117,101,110,99,101,0,108,97,114,103,101,32,102,105,108,101,32,115,117,112,112,111,114,116,32,105,115,32,100,105,115,97,98,108,101,100,0,97,117,116,104,111,114,105,122,97,116,105,111,110,32,100,101,110,105,101,100,0,97,117,120,105,108,105,97,114,121,32,100,97,116,97,98,97,115,101,32,102,111,114,109,97,116,32,101,114,114,111,114,0,98,105,110,100,32,111,114,32,99,111,108,117,109,110,32,105,110,100,101,120,32,111,117,116,32,111,102,32,114,97,110,103,101,0,102,105,108,101,32,105,115,32,101,110,99,114,121,112,116,101,100,32,111,114,32,105,115,32,110,111,116,32,97,32,100,97,116,97,98,97,115,101,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,102,105,110,97,108,105,122,101,100,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,64,32,32,0,117,110,105,120,0,117,110,105,120,45,110,111,110,101,0,117,110,105,120,45,100,111,116,102,105,108,101,0,117,110,105,120,45,101,120,99,108,0,99,108,111,115,101,0,111,115,95,117,110,105,120,46,99,58,37,100,58,32,40,37,100,41,32,37,115,40,37,115,41,32,45,32,37,115,0,111,112,101,110,0,103,101,116,99,119,100,0,115,116,97,116,0,102,115,116,97,116,0,102,116,114,117,110,99,97,116,101,0,102,99,110,116,108,0,114,101,97,100,0,112,114,101,97,100,0,112,114,101,97,100,54,52,0,119,114,105,116,101,0,112,119,114,105,116,101,0,112,119,114,105,116,101,54,52,0,102,99,104,109,111,100,0,102,97,108,108,111,99,97,116,101,0,117,110,108,105,110,107,0,111,112,101,110,68,105,114,101,99,116,111,114,121,0,109,107,100,105,114,0,114,109,100,105,114,0,102,99,104,111,119,110,0,103,101,116,101,117,105,100,0,109,109,97,112,0,109,117,110,109,97,112,0,109,114,101,109,97,112,0,103,101,116,112,97,103,101,115,105,122,101,0,114,101,97,100,108,105,110,107,0,108,115,116,97,116,0,97,116,116,101,109,112,116,32,116,111,32,111,112,101,110,32,34,37,115,34,32,97,115,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,37,100,0,47,100,101,118,47,110,117,108,108,0,37,115,47,101,116,105,108,113,115,95,37,108,108,120,37,99,0,83,81,76,73,84,69,95,84,77,80,68,73,82,0,84,77,80,68,73,82,0,47,118,97,114,47,116,109,112,0,47,117,115,114,47,116,109,112,0,47,116,109,112,0,46,0,102,117,108,108,95,102,115,121,110,99,0,47,100,101,118,47,117,114,97,110,100,111,109,0,102,115,121,110,99,0,112,115,111,119,0,37,115,46,108,111,99,107,0,99,97,110,110,111,116,32,102,115,116,97,116,32,100,98,32,102,105,108,101,32,37,115,0,102,105,108,101,32,117,110,108,105,110,107,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,109,117,108,116,105,112,108,101,32,108,105,110,107,115,32,116,111,32,102,105,108,101,58,32,37,115,0,102,105,108,101,32,114,101,110,97,109,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,37,115,45,115,104,109,0,114,101,97,100,111,110,108,121,95,115,104,109,0,37,0,100,10,1,1,0,0,115,0,4,6,0,0,103,0,1,4,30,0,122,0,4,7,0,0,113,0,4,10,0,0,81,0,4,11,0,0,119,0,4,15,0,0,99,0,0,9,0,0,111,8,0,1,0,2,117,10,0,1,0,0,120,16,0,1,16,1,88,16,0,1,0,4,102,0,1,2,0,0,101,0,1,3,30,0,69,0,1,3,14,0,71,0,1,4,14,0,105,10,1,1,0,0,110,0,0,5,0,0,37,0,0,8,0,0,112,16,0,14,0,1,84,0,2,12,0,0,83,0,2,13,0,0,114,10,3,16,0,0,116,104,115,116,110,100,114,100,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,0,45,120,48,0,88,48,0,78,97,78,0,73,110,102,0,40,78,85,76,76,41,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,0,37,115,37,46,42,115,34,37,119,34,0,37,46,42,115,34,37,119,34,37,115,0,106,117,108,105,97,110,100,97,121,0,100,97,116,101,0,116,105,109,101,0,100,97,116,101,116,105,109,101,0,115,116,114,102,116,105,109,101,0,99,117,114,114,101,110,116,95,116,105,109,101,0,99,117,114,114,101,110,116,95,116,105,109,101,115,116,97,109,112,0,99,117,114,114,101,110,116,95,100,97,116,101,0,37,48,50,100,0,37,48,54,46,51,102,0,37,48,51,100,0,37,48,52,100,0,108,111,99,97,108,116,105,109,101,0,117,110,105,120,101,112,111,99,104,0,117,116,99,0,119,101,101,107,100,97,121,32,0,115,116,97,114,116,32,111,102,32,0,109,111,110,116,104,0,121,101,97,114,0,100,97,121,0,104,111,117,114,0,109,105,110,117,116,101,0,115,101,99,111,110,100,0,50,48,99,58,50,48,101,0,50,48,101,0,50,48,98,58,50,48,101,0,108,111,99,97,108,32,116,105,109,101,32,117,110,97,118,97,105,108,97,98,108,101,0,110,111,119,0,52,48,102,45,50,49,97,45,50,49,100,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,32,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,0,108,116,114,105,109,0,114,116,114,105,109,0,116,114,105,109,0,116,121,112,101,111,102,0,108,101,110,103,116,104,0,105,110,115,116,114,0,115,117,98,115,116,114,0,112,114,105,110,116,102,0,117,110,105,99,111,100,101,0,99,104,97,114,0,97,98,115,0,114,111,117,110,100,0,117,112,112,101,114,0,108,111,119,101,114,0,99,111,97,108,101,115,99,101,0,104,101,120,0,105,102,110,117,108,108,0,117,110,108,105,107,101,108,121,0,108,105,107,101,108,105,104,111,111,100,0,108,105,107,101,108,121,0,114,97,110,100,111,109,0,114,97,110,100,111,109,98,108,111,98,0,110,117,108,108,105,102,0,115,113,108,105,116,101,95,118,101,114,115,105,111,110,0,115,113,108,105,116,101,95,115,111,117,114,99,101,95,105,100,0,115,113,108,105,116,101,95,108,111,103,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,117,115,101,100,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,103,101,116,0,113,117,111,116,101,0,108,97,115,116,95,105,110,115,101,114,116,95,114,111,119,105,100,0,99,104,97,110,103,101,115,0,116,111,116,97,108,95,99,104,97,110,103,101,115,0,114,101,112,108,97,99,101,0,122,101,114,111,98,108,111,98,0,115,117,109,0,116,111,116,97,108,0,97,118,103,0,99,111,117,110,116,0,103,114,111,117,112,95,99,111,110,99,97,116,0,105,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,37,33,46,50,48,101,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,37,46,42,102,0,116,101,120,116,0,98,108,111,98,0,1,109,105,115,117,115,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,68,73,83,65,66,76,69,95,76,70,83,0,69,78,65,66,76,69,95,70,84,83,51,0,69,78,65,66,76,69,95,70,84,83,51,95,80,65,82,69,78,84,72,69,83,73,83,0,73,78,84,54,52,95,84,89,80,69,0,79,77,73,84,95,76,79,65,68,95,69,88,84,69,78,83,73,79,78,0,83,89,83,84,69,77,95,77,65,76,76,79,67,0,84,72,82,69,65,68,83,65,70,69,61,48,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,47,112,114,111,99,47,115,101,108,102,47,102,100,47],"i8",4,l.aa+41342);var yb=l.ta(z(12,"i8",2),8);assert(0==yb%8);f._i64Subtract=zb;f._i64Add=Ab;var D={H:1,J:2,Kd:3,Gc:4,O:5,Ka:6,$b:7,dd:8,L:9,nc:10,Ga:11,Ud:11,Ia:12,Y:13,zc:14,rd:15,Z:16,Ha:17,Vd:18,ha:19,ia:20,S:21,p:22,Zc:23,eb:24,$:25,Rd:26,Ac:27,nd:28,ja:29,Hd:30,Sc:31,Bd:32,wc:33,fb:34,jd:42,Dc:43,oc:44,Jc:45,Kc:46,Lc:47,Rc:48,Sd:49,bd:50,Ic:51,tc:35,ed:37,fc:52,ic:53,Wd:54,$c:55,jc:56,kc:57,uc:35,lc:59,pd:60,cd:61,Od:62,od:63,kd:64,ld:65,Gd:66,gd:67,cc:68,Ld:69,pc:70,Cd:71,Uc:72,xc:73,hc:74,wd:76,gc:77,Fd:78,Mc:79,Nc:80,Qc:81,Pc:82,Oc:83,qd:38,Ja:39,Vc:36,sa:40,xd:95,Ad:96,sc:104,ad:105,dc:97,Ed:91,ud:88,md:92,Id:108,rc:111,ac:98,qc:103,Yc:101,Wc:100,Pd:110,Bc:112,Cc:113,Fc:115,ec:114,vc:89,Tc:90,Dd:93,Jd:94,bc:99,Xc:102,Hc:106,sd:107,Qd:109,Td:87,yc:122,Md:116,vd:95,hd:123,Ec:84,yd:75,mc:125,td:131,zd:130,Nd:86},Bb={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function Cb(a){f.___errno_location&&(w[f.___errno_location()>>2]=a);return a}function Db(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c--;c)a.unshift("..");return a}function Eb(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=Db(a.split("/").filter(function(a){return!!a}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a}function Fb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function Gb(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function Hb(){var a=Array.prototype.slice.call(arguments,0);return Eb(a.join("/"))}function E(a,b){return Eb(a+"/"+b)}function Ib(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){ -b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=Db(a.split("/").filter(function(a){return!!a}),!b).join("/");return(b?"/":"")+a||"."}var Jb=[];function Kb(a,b){Jb[a]={input:[],output:[],W:b};Lb(a,Mb)}var Mb={open:function(a){var b=Jb[a.g.rdev];if(!b)throw new H(D.ha);a.tty=b;a.seekable=!1},close:function(a){a.tty.W.flush(a.tty)},flush:function(a){a.tty.W.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.W.Ya)throw new H(D.Ka);for(var e=0,g=0;ga.e.length&&(a.e=J.wb(a),a.q=a.e.length);if(!a.e||a.e.subarray){var c=a.e?a.e.buffer.byteLength:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.e,a.e=new Uint8Array(b),0b)a.e.length=b;else for(;a.e.length=a.g.q)return 0;a=Math.min(a.g.q-e,d);assert(0<=a);if(8b)throw new H(D.p);return b},Ma:function(a,b,c){J.Sa(a.g,b+c);a.g.q=Math.max(a.g.q,b+c)},oa:function(a,b,c,d,e,g,h){if(32768!==(a.g.mode&61440))throw new H(D.ha);c=a.g.e;if(h&2||c.buffer!==b&&c.buffer!==b.buffer){if(0>1)}catch(c){if(!c.code)throw c;throw new H(D[c.code])}return b.mode},F:function(a){for(var b=[];a.parent!==a;)b.push(a.name),a=a.parent;b.push(a.D.Ba.root);b.reverse();return Hb.apply(null,b)},Ta:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},ub:function(a){a&=-32769;if(a in L.Ta)return L.Ta[a];throw new H(D.p)},k:{G:function(a){a=L.F(a);var b;try{b=fs.lstatSync(a)}catch(c){if(!c.code)throw c;throw new H(D[c.code])}L.na&&!b.P&&(b.P=4096);L.na&&!b.blocks&&(b.blocks=(b.size+b.P-1)/b.P|0);return{dev:b.dev,ino:b.ino,mode:b.mode,nlink:b.nlink,uid:b.uid,gid:b.gid,rdev:b.rdev,size:b.size,atime:b.atime,mtime:b.mtime,ctime:b.ctime,P:b.P,blocks:b.blocks}},B:function(a,b){var c=L.F(a);try{void 0!==b.mode&&(fs.chmodSync(c,b.mode),a.mode=b.mode),void 0!==b.size&&fs.truncateSync(c,b.size)}catch(d){if(!d.code)throw d;throw new H(D[d.code])}},lookup:function(a,b){var c=E(L.F(a),b),c=L.Wa(c);return L.createNode(a,b,c)},da:function(a,b,c,d){a=L.createNode(a,b,c,d);b=L.F(a);try{K(a.mode)?fs.mkdirSync(b,a.mode):fs.writeFileSync(b,"",{mode:a.mode})}catch(e){if(!e.code)throw e;throw new H(D[e.code])}return a},rename:function(a,b,c){a=L.F(a);b=E(L.F(b),c);try{fs.renameSync(a,b)}catch(d){if(!d.code)throw d;throw new H(D[d.code])}},unlink:function(a,b){var c=E(L.F(a),b);try{fs.unlinkSync(c)}catch(d){if(!d.code)throw d;throw new H(D[d.code])}},rmdir:function(a,b){var c=E(L.F(a),b);try{fs.rmdirSync(c)}catch(d){if(!d.code)throw d;throw new H(D[d.code])}},readdir:function(a){a=L.F(a);try{return fs.readdirSync(a)}catch(b){if(!b.code)throw b;throw new H(D[b.code])}},symlink:function(a,b,c){a=E(L.F(a),b);try{fs.symlinkSync(c,a)}catch(d){if(!d.code)throw d;throw new H(D[d.code])}},readlink:function(a){var b=L.F(a);try{return b=fs.readlinkSync(b),b=Tb.relative(Tb.resolve(a.D.Ba.root),b)}catch(c){if(!c.code)throw c;throw new H(D[c.code])}}},n:{open:function(a){var b=L.F(a.g);try{32768===(a.g.mode&61440)&&(a.ea=fs.openSync(b,L.ub(a.flags)))}catch(c){if(!c.code)throw c;throw new H(D[c.code])}},close:function(a){try{32768===(a.g.mode&61440)&&a.ea&&fs.closeSync(a.ea)}catch(b){if(!b.code)throw b;throw new H(D[b.code])}},read:function(a,b,c,d,e){if(0===d)return 0;var g=new Buffer(d),h;try{h=fs.readSync(a.ea,g,0,d,e)}catch(m){throw new H(D[m.code])}if(0b)throw new H(D.p);return b}}};z(1,"i32*",2);z(1,"i32*",2);z(1,"i32*",2);var Ub=null,Vb=[null],M=[],Wb=1,Xb=null,Yb=!0,N={},H=null,Rb={};function O(a,b){a=Ib("/",a);b=b||{};if(!a)return{path:"",g:null};var c={Ua:!0,Da:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8>>0)%Xb.length}function ac(a){var b=$b(a.parent.id,a.name);a.V=Xb[b];Xb[b]=a}function bc(a){var b=$b(a.parent.id,a.name);if(Xb[b]===a)Xb[b]=a.V;else for(b=Xb[b];b;){if(b.V===a){b.V=a.V;break}b=b.V}}function Sb(a,b){var c;if(c=(c=cc(a,"x"))?c:a.k.lookup?0:D.Y)throw new H(c,a);for(c=Xb[$b(a.id,b)];c;c=c.V){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.k.lookup(a,b)}function Qb(a,b,c,d){dc||(dc=function(a,b,c,d){a||(a=this);this.parent=a;this.D=a.D;this.U=null;this.id=Wb++;this.name=b;this.mode=c;this.k={};this.n={};this.rdev=d},dc.prototype={},Object.defineProperties(dc.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}},Fb:{get:function(){return K(this.mode)}},Eb:{get:function(){return 8192===(this.mode&61440)}}}));a=new dc(a,b,c,d);ac(a);return a}function K(a){return 16384===(a&61440)}var ec={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function cc(a,b){if(Yb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return D.Y}else return D.Y;return 0}function fc(a,b){try{return Sb(a,b),D.Ha}catch(c){}return cc(a,"wx")}function gc(a,b,c){var d;try{d=Sb(a,b)}catch(e){return e.o}if(a=cc(a,"wx"))return a;if(c){if(!K(d.mode))return D.ia;if(d===d.parent||"/"===P(d))return D.Z}else if(K(d.mode))return D.S;return 0}function hc(a){var b;b=4096;for(a=a||0;a<=b;a++)if(!M[a])return a;throw new H(D.eb)}function ic(a,b){jc||(jc=function(){},jc.prototype={},Object.defineProperties(jc.prototype,{object:{get:function(){return this.g},set:function(a){this.g=a}},Fe:{get:function(){return 1!==(this.flags&2097155)}},Ge:{get:function(){return 0!==(this.flags&2097155)}},Ee:{get:function(){return this.flags&1024}}}));var c=new jc,d;for(d in a)c[d]=a[d];a=c;c=hc(b);a.fd=c;return M[c]=a}var Pb={open:function(a){a.n=Vb[a.g.rdev].n;a.n.open&&a.n.open(a)},N:function(){throw new H(D.ja)}};function Lb(a,b){Vb[a]={n:b}}function kc(a,b){var c="/"===b,d=!b,e;if(c&&Ub)throw new H(D.Z);if(!c&&!d){e=O(b,{Ua:!1});b=e.path;e=e.g;if(e.U)throw new H(D.Z);if(!K(e.mode))throw new H(D.ia)}var d={type:a,Ba:{},$a:b,Jb:[]},g=a.D(d);g.D=d;d.root=g;c?Ub=g:e&&(e.U=d,e.D&&e.D.Jb.push(d))}function mc(a,b,c){var d=O(a,{parent:!0}).g;a=Gb(a);if(!a||"."===a||".."===a)throw new H(D.p);var e=fc(d,a);if(e)throw new H(e);if(!d.k.da)throw new H(D.H);return d.k.da(d,a,b,c)}function nc(a,b){b=(void 0!==b?b:438)&4095;b|=32768;return mc(a,b,0)}function Q(a,b){b=(void 0!==b?b:511)&1023;b|=16384;return mc(a,b,0)}function oc(a,b,c){"undefined"===typeof c&&(c=b,b=438);return mc(a,b|8192,c)}function pc(a,b){if(!Ib(a))throw new H(D.J);var c=O(b,{parent:!0}).g;if(!c)throw new H(D.J);var d=Gb(b),e=fc(c,d);if(e)throw new H(e);if(!c.k.symlink)throw new H(D.H);return c.k.symlink(c,d,a)}function qc(a){var b=O(a,{parent:!0}).g,c=Gb(a),d=Sb(b,c),e=gc(b,c,!1);if(e)throw e===D.S&&(e=D.H),new H(e);if(!b.k.unlink)throw new H(D.H);if(d.U)throw new H(D.Z);try{N.willDeletePath&&N.willDeletePath(a)}catch(g){console.log("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+g.message)}b.k.unlink(b,c);bc(d);try{if(N.onDeletePath)N.onDeletePath(a)}catch(h){console.log("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+h.message)}}function Zb(a){a=O(a).g;if(!a)throw new H(D.J);if(!a.k.readlink)throw new H(D.p);return Ib(P(a.parent),a.k.readlink(a))}function rc(a,b){var c=O(a,{Q:!b}).g;if(!c)throw new H(D.J);if(!c.k.G)throw new H(D.H);return c.k.G(c)}function sc(a){return rc(a,!0)}function tc(a,b){var c;"string"===typeof a?c=O(a,{Q:!0}).g:c=a;if(!c.k.B)throw new H(D.H);c.k.B(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})}function uc(a){var b;"string"===typeof a?b=O(a,{Q:!0}).g:b=a;if(!b.k.B)throw new H(D.H);b.k.B(b,{timestamp:Date.now()})}function vc(a,b){if(0>b)throw new H(D.p);var c;"string"===typeof a?c=O(a,{Q:!0}).g:c=a;if(!c.k.B)throw new H(D.H);if(K(c.mode))throw new H(D.S);if(32768!==(c.mode&61440))throw new H(D.p);var d=cc(c,"w");if(d)throw new H(d);c.k.B(c,{size:b,timestamp:Date.now()})}function wc(a,b,c,d){if(""===a)throw new H(D.J);if("string"===typeof b){var e=ec[b];if("undefined"===typeof e)throw Error("Unknown file open mode: "+b);b=e}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;var g;if("object"===typeof a)g=a;else{a=Eb(a);try{g=O(a,{Q:!(b&131072)}).g}catch(h){}}e=!1;if(b&64)if(g){if(b&128)throw new H(D.Ha)}else g=mc(a,c,0),e=!0;if(!g)throw new H(D.J);8192===(g.mode&61440)&&(b&=-513);if(b&65536&&!K(g.mode))throw new H(D.ia);if(!e&&(g?40960===(g.mode&61440)?c=D.sa:K(g.mode)&&(0!==(b&2097155)||b&512)?c=D.S:(c=["r","w","rw"][b&3],b&512&&(c+="w"),c=cc(g,c)):c=D.J,c))throw new H(c);b&512&&vc(g,0);b&=-641;d=ic({g:g,path:P(g),flags:b,seekable:!0,position:0,n:g.n,Sb:[],error:!1},d);d.n.open&&d.n.open(d);!f.logReadFiles||b&1||(xc||(xc={}),a in xc||(xc[a]=1,f.printErr("read file: "+a)));try{N.onOpenFile&&(g=0,1!==(b&2097155)&&(g|=1),0!==(b&2097155)&&(g|=2),N.onOpenFile(a,g))}catch(m){console.log("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+m.message)}return d}function yc(a){a.za&&(a.za=null);try{a.n.close&&a.n.close(a)}catch(b){throw b}finally{M[a.fd]=null}}function zc(a,b,c){if(!a.seekable||!a.n.N)throw new H(D.ja);a.position=a.n.N(a,b,c);a.Sb=[]}function Ac(a,b,c,d,e){if(0>d||0>e)throw new H(D.p);if(1===(a.flags&2097155))throw new H(D.L);if(K(a.g.mode))throw new H(D.S);if(!a.n.read)throw new H(D.p);var g=!0;if("undefined"===typeof e)e=a.position,g=!1;else if(!a.seekable)throw new H(D.ja);b=a.n.read(a,b,c,d,e);g||(a.position+=b);return b}function Bc(a,b,c,d,e,g){if(0>d||0>e)throw new H(D.p);if(0===(a.flags&2097155))throw new H(D.L);if(K(a.g.mode))throw new H(D.S);if(!a.n.write)throw new H(D.p);a.flags&1024&&zc(a,0,2);var h=!0;if("undefined"===typeof e)e=a.position,h=!1;else if(!a.seekable)throw new H(D.ja);b=a.n.write(a,b,c,d,e,g);h||(a.position+=b);try{if(a.path&&N.onWriteToFile)N.onWriteToFile(a.path)}catch(m){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+m.message)}return b}function Cc(){H||(H=function(a,b){this.g=b;this.Pb=function(a){this.o=a;for(var b in D)if(D[b]===a){this.code=b;break}};this.Pb(a);this.message=Bb[a]},H.prototype=Error(),H.prototype.constructor=H,[D.J].forEach(function(a){Rb[a]=new H(a);Rb[a].stack=""}))}var Dc;function Ec(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c}function Fc(a,b,c,d){a=E("string"===typeof a?a:P(a),b);return nc(a,Ec(c,d))}function Gc(a,b,c,d,e,g){a=b?E("string"===typeof a?a:P(a),b):a;d=Ec(d,e);e=nc(a,d);if(c){if("string"===typeof c){a=Array(c.length);b=0;for(var h=c.length;b>2]=d.dev;w[c+4>>2]=0;w[c+8>>2]=d.ino;w[c+12>>2]=d.mode;w[c+16>>2]=d.nlink;w[c+20>>2]=d.uid;w[c+24>>2]=d.gid;w[c+28>>2]=d.rdev;w[c+32>>2]=0;w[c+36>>2]=d.size;w[c+40>>2]=4096;w[c+44>>2]=d.blocks;w[c+48>>2]=d.atime.getTime()/1e3|0;w[c+52>>2]=0;w[c+56>>2]=d.mtime.getTime()/1e3|0;w[c+60>>2]=0;w[c+64>>2]=d.ctime.getTime()/1e3|0;w[c+68>>2]=0;w[c+72>>2]=d.ino;return 0}var S=0;function T(){S+=4;return w[S-4>>2]}function U(){return q(T())}function Lc(){var a;a=T();a=M[a];if(!a)throw new H(D.L);return a}var xa=void 0;function Mc(a){a=a/1e3;if((ca||da)&&self.performance&&self.performance.now)for(var b=self.performance.now();self.performance.now()-b>2]=60*-(new Date).getTimezoneOffset();var b=new Date(2e3,0,1),c=new Date(2e3,6,1);w[Pc>>2]=Number(b.getTimezoneOffset()!=c.getTimezoneOffset());var d=a(b),e=a(c),d=z(B(d),"i8",0),e=z(B(e),"i8",0);c.getTimezoneOffset()>2]=d,w[Oc+4>>2]=e):(w[Oc>>2]=e,w[Oc+4>>2]=d)}}function Sc(a,b){Rc();var c=new Date(1e3*w[a>>2]);w[b>>2]=c.getSeconds();w[b+4>>2]=c.getMinutes();w[b+8>>2]=c.getHours();w[b+12>>2]=c.getDate();w[b+16>>2]=c.getMonth();w[b+20>>2]=c.getFullYear()-1900;w[b+24>>2]=c.getDay();var d=new Date(c.getFullYear(),0,1);w[b+28>>2]=(c.getTime()-d.getTime())/864e5|0;w[b+36>>2]=-(60*c.getTimezoneOffset());c=c.getTimezoneOffset()==Math.min(d.getTimezoneOffset(),new Date(2e3,6,1).getTimezoneOffset())|0;w[b+32>>2]=c;w[b+40>>2]=w[Oc+(c?l.M:0)>>2];return b}f._bitshift64Lshr=Tc;function Uc(a,b){eb.push(function(){l.T("vi",a,[b])});Uc.level=eb.length}var Vc=z(1,"i32*",2);function Wc(a){var b,c;Wc.C?(c=w[Vc>>2],b=w[c>>2]):(Wc.C=!0,V.USER=V.LOGNAME="web_user",V.PATH="/",V.PWD="/",V.HOME="/home/web_user",V.LANG="C",V._=f.thisProgram,b=z(1024,"i8",2),c=z(256,"i8*",2),w[c>>2]=b,w[Vc>>2]=c);var d=[],e=0,g;for(g in a)if("string"===typeof a[g]){var h=g+"="+a[g];d.push(h);e+=h.length}if(1024>2]=b,b+=h.length+1;w[c+4*d.length>>2]=0}var V={};function Xc(a){if(0===a)return 0;a=q(a);if(!V.hasOwnProperty(a))return 0;Xc.C&&Pa(Xc.C);Xc.C=z(B(V[a]),"i8",0);return Xc.C}f._memcpy=Yc;function Ia(a){Ia.Va||(n=Sa(),Ia.Va=!0,assert(l.ba),Ia.Gb=l.ba,l.ba=function(){p("cannot dynamically allocate, sbrk now has control")});var b=n;return 0==a||Ia.Gb(a)?b:4294967295}f._memmove=Zc;function $c(a,b){S=b;return 0}f._memset=ad;f._bitshift64Shl=bd;var cd=Ca;function dd(a,b){ed=a;fd=b;if(!gd)return 1;if(0==a)hd=function(){setTimeout(id,b)},jd="timeout";else if(1==a)hd=function(){kd(id)},jd="rAF";else if(2==a){if(!window.setImmediate){var c=[];window.addEventListener("message",function(a){a.source===window&&"__emcc"===a.data&&(a.stopPropagation(),c.shift()())},!0);window.setImmediate=function(a){c.push(a);window.postMessage("__emcc","*")}}hd=function(){window.setImmediate(id)};jd="immediate"}return 0}function ld(a,b,c,d,e){f.noExitRuntime=!0;assert(!gd,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");gd=a;md=d;var g=nd;id=function(){if(!oa)if(0>h-6&63,h=h-6,c=c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[v];2==h?(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g&3)<<4],c+="=="):4==h&&(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g&15)<<2],c+="=");G.src="data:audio/x-"+b.substr(-3)+";base64,"+c;m(G)}};G.src=x;Dd(function(){m(G)})}else return t()}});var c=f.canvas;c&&(c.Ea=c.requestPointerLock||c.mozRequestPointerLock||c.webkitRequestPointerLock||c.msRequestPointerLock||function(){},c.Ra=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},c.Ra=c.Ra.bind(document),document.addEventListener("pointerlockchange",a,!1),document.addEventListener("mozpointerlockchange",a,!1),document.addEventListener("webkitpointerlockchange",a,!1),document.addEventListener("mspointerlockchange",a,!1),f.elementPointerLock&&c.addEventListener("click",function(a){!vd&&c.Ea&&(c.Ea(),a.preventDefault())},!1))}}function Ed(a,b,c,d){if(b&&f.wa&&a==f.canvas)return f.wa;var e,g;if(b){g={antialias:!1,alpha:!1};if(d)for(var h in d)g[h]=d[h];if(g=GL.createContext(a,g))e=GL.getContext(g).Zd;a.style.backgroundColor="black"}else e=a.getContext("2d");if(!e)return null;c&&(b||assert("undefined"===typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),f.wa=e,b&&GL.Ie(g),f.Le=b,wd.forEach(function(a){a()}),xd());return e}var Fd=!1,Gd=void 0,Hd=void 0;function Id(a,b,c){function d(){ud=!1;var a=e.parentNode;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement||document.msFullScreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement)===a?(e.Pa=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen||document.exitFullscreen||function(){},e.Pa=e.Pa.bind(document),Gd&&e.Ea(),ud=!0,Hd&&Jd()):(a.parentNode.insertBefore(e,a),a.parentNode.removeChild(a),Hd&&Kd());if(f.onFullScreen)f.onFullScreen(ud);Ld(e)}Gd=a;Hd=b;Md=c;"undefined"===typeof Gd&&(Gd=!0);"undefined"===typeof Hd&&(Hd=!1);"undefined"===typeof Md&&(Md=null);var e=f.canvas;Fd||(Fd=!0,document.addEventListener("fullscreenchange",d,!1),document.addEventListener("mozfullscreenchange",d,!1),document.addEventListener("webkitfullscreenchange",d,!1),document.addEventListener("MSFullscreenChange",d,!1));var g=document.createElement("div");e.parentNode.insertBefore(g,e);g.appendChild(e);g.C=g.requestFullScreen||g.mozRequestFullScreen||g.msRequestFullscreen||(g.webkitRequestFullScreen?function(){g.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null);c?g.C({Me:c}):g.C()}var Nd=0;function Od(a){var b=Date.now();if(0===Nd)Nd=b+1e3/60;else for(;b+2>=Nd;)Nd+=1e3/60;b=Math.max(Nd-b,0);setTimeout(a,b)}function kd(a){"undefined"===typeof window?Od(a):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Od),window.requestAnimationFrame(a))}function Dd(a){f.noExitRuntime=!0;setTimeout(function(){oa||a()},1e4)}function Cd(a){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".")+1)]}function Pd(a,b,c){var d=new XMLHttpRequest;d.open("GET",a,!0);d.responseType="arraybuffer";d.onload=function(){200==d.status||0==d.status&&d.response?b(d.response):c()};d.onerror=c;d.send(null)}function Qd(a,b,c){Pd(a,function(c){assert(c,'Loading data file "'+a+'" failed (no arrayBuffer).');b(new Uint8Array(c));xb()},function(){if(c)c();else throw'Loading data file "'+a+'" failed.'});wb()}var Rd=[];function Sd(){var a=f.canvas;Rd.forEach(function(b){b(a.width,a.height)})}function Jd(){if("undefined"!=typeof SDL){var a=Ua[SDL.screen+0*l.M>>2];w[SDL.screen+0*l.M>>2]=a|8388608}Sd()}function Kd(){if("undefined"!=typeof SDL){var a=Ua[SDL.screen+0*l.M>>2];w[SDL.screen+0*l.M>>2]=a&-8388609}Sd()}function Ld(a,b,c){b&&c?(a.Tb=b,a.Cb=c):(b=a.Tb,c=a.Cb);var d=b,e=c;f.forcedAspectRatio&&0this.length-1||0>a)){var b=a%this.chunkSize;return this.Bb(a/this.chunkSize|0)[b]}};m.prototype.Ob=function(a){this.Bb=a};m.prototype.Oa=function(){var a=new XMLHttpRequest;a.open("HEAD",c,!1);a.send(null);if(!(200<=a.status&&300>a.status||304===a.status))throw Error("Couldn't load "+c+". Status: "+a.status);var b=Number(a.getResponseHeader("Content-length")),d,e=1048576;(d=a.getResponseHeader("Accept-Ranges"))&&"bytes"===d||(e=b);var g=this;g.Ob(function(a){var d=a*e,h=(a+1)*e-1,h=Math.min(h,b-1);if("undefined"===typeof g.ma[a]){var m=g.ma;if(d>h)throw Error("invalid range ("+d+", "+h+") or no bytes requested!");if(h>b-1)throw Error("only "+b+" bytes available! programmer error!");var r=new XMLHttpRequest;r.open("GET",c,!1);b!==e&&r.setRequestHeader("Range","bytes="+d+"-"+h);"undefined"!=typeof Uint8Array&&(r.responseType="arraybuffer");r.overrideMimeType&&r.overrideMimeType("text/plain; charset=x-user-defined");r.send(null);if(!(200<=r.status&&300>r.status||304===r.status))throw Error("Couldn't load "+c+". Status: "+r.status);d=void 0!==r.response?new Uint8Array(r.response||[]):B(r.responseText||"",!0);m[a]=d}if("undefined"===typeof g.ma[a])throw Error("doXHR failed!");return g.ma[a]});this.lb=b;this.kb=e;this.Aa=!0};if("undefined"!==typeof XMLHttpRequest){if(!da)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";g=new m;Object.defineProperty(g,"length",{get:function(){this.Aa||this.Oa();return this.lb}});Object.defineProperty(g,"chunkSize",{get:function(){this.Aa||this.Oa();return this.kb}});h=void 0}else h=c,g=void 0;var t=Fc(a,b,d,e);g?t.e=g:h&&(t.e=null,t.url=h);Object.defineProperty(t,"usedBytes",{get:function(){return this.e.length}});var r={};Object.keys(t.n).forEach(function(a){var b=t.n[a];r[a]=function(){if(!Ic(t))throw new H(D.O);return b.apply(null,arguments)}});r.read=function(a,b,c,d,e){if(!Ic(t))throw new H(D.O);a=a.g.e;if(e>=a.length)return 0;d=Math.min(a.length-e,d);assert(0<=d);if(a.slice)for(var g=0;g=g)e=-D.p;else{var h=Zb(c),h=h.slice(0,Math.max(0,g));wa(h,d,!0);e=h.length}return e}catch(m){return"undefined"!==typeof R&&m instanceof H||p(m),-m.o}},_sin:jb,_exp:pb,_utimes:function(a,b){var c;b?(c=1e3*w[b+8>>2],c+=w[b+12>>2]/1e3):c=Date.now();a=q(a);try{var d=c,e=O(a,{Q:!0}).g;e.k.B(e,{timestamp:Math.max(d,c)});return 0}catch(g){if(!(g instanceof H))throw g+" : "+Qa();Cb(g.o);return-1}},_llvm_pow_f64:sb,_acos:lb,___syscall54:function(a,b){S=b;try{var c=Lc(),d=T();switch(d){case 21505:return c.tty?0:-D.$;case 21506:return c.tty?0:-D.$;case 21519:if(!c.tty)return-D.$;var e=T();return w[e>>2]=0;case 21520:return c.tty?-D.p:-D.$;case 21531:e=T();if(!c.n.Db)throw new H(D.$);return c.n.Db(c,d,e);default:p("bad ioctl syscall "+d)}}catch(g){return"undefined"!==typeof R&&g instanceof H||p(g),-g.o}},_pthread_cleanup_push:Uc,_abort:function(){f.abort()},___syscall40:function(a,b){S=b;try{var c=U(),d=O(c,{parent:!0}).g,e=Gb(c),g=Sb(d,e),h=gc(d,e,!0);if(h)throw new H(h);if(!d.k.rmdir)throw new H(D.H);if(g.U)throw new H(D.Z);try{N.willDeletePath&&N.willDeletePath(c)}catch(m){console.log("FS.trackingDelegate['willDeletePath']('"+c+"') threw an exception: "+m.message)}d.k.rmdir(d,e);bc(g);try{if(N.onDeletePath)N.onDeletePath(c)}catch(t){console.log("FS.trackingDelegate['onDeletePath']('"+c+"') threw an exception: "+t.message)}return 0}catch(r){return"undefined"!==typeof R&&r instanceof H||p(r),-r.o}},___syscall118:function(a,b){S=b;try{return Lc(),0}catch(c){return"undefined"!==typeof R&&c instanceof H||p(c),-c.o}},___setErrNo:Cb,___syscall20:function(a,b){S=b;return 42},___syscall183:function(a,b){S=b;try{var c=T(),d=T();if(0===d)return-D.p;if(2>d)return-D.fb;Ka("/",c);return c}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},___assert_fail:function(a,b,c,d){oa=!0;throw"Assertion failed: "+q(a)+", at: "+[b?q(b):"unknown filename",c,d?q(d):"unknown function"]+" at "+Qa()},_usleep:Mc,_asin:mb,___buildEnvironment:Wc,___syscall202:$c,___syscall91:function(a,b){S=b;try{var c=T(),d=T(),e=Jc[c];if(!e)return 0;if(d===e.Hb){var g=M[e.fd],h=e.flags,m=new Uint8Array(A.subarray(c,c+d));g&&g.n.pa&&g.n.pa(g,m,0,d,h);Jc[c]=null;e.ua&&Pa(e.Ib)}return 0}catch(t){return"undefined"!==typeof R&&t instanceof H||p(t),-t.o}},_cos:ib,___syscall39:function(a,b){S=b;try{var c=U(),d=T(),c=Eb(c);"/"===c[c.length-1]&&(c=c.substr(0,c.length-1));Q(c,d);return 0}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},_localtime_r:Sc,_tzset:Rc,_emscripten_set_main_loop_timing:dd,_sbrk:Ia,___syscall192:function(a,b){S=b;try{var c=T(),d=T(),e=T(),g=T(),h=T(),m=T(),m=m<<12,t,r=!1;if(-1===h){t=Ga(d);if(!t)return-D.Ia;ad(t,0,d);r=!0}else{var x=M[h];if(!x)return-D.L;var v,G=A;if(1===(x.flags&2097155))throw new H(D.Y);if(!x.n.oa)throw new H(D.ha);v=x.n.oa(x,G,c,d,m,e,g);t=v.Kb;r=v.ua}Jc[t]={Ib:t,Hb:d,ua:r,fd:h,flags:g};return t}catch(I){return"undefined"!==typeof R&&I instanceof H||p(I),-I.o}},___syscall197:function(a,b){S=b;try{var c=Lc(),d=T();return Kc(rc,c.path,d)}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},___syscall196:function(a,b){S=b;try{var c=U(),d=T();return Kc(sc,c,d)}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},___syscall195:function(a,b){S=b;try{var c=U(),d=T();return Kc(rc,c,d)}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},___syscall194:function(a,b){S=b;try{var c=T();assert(0===T());var d=T(),e=T();0<=d?assert(0===e):assert(-1===e);var g=M[c];if(!g)throw new H(D.L);if(0===(g.flags&2097155))throw new H(D.p);vc(g.g,d);return 0}catch(h){return"undefined"!==typeof R&&h instanceof H||p(h),-h.o}},___syscall212:function(a,b){S=b;try{var c=U();T();T();uc(c);return 0}catch(d){return"undefined"!==typeof R&&d instanceof H||p(d),-d.o}},_sysconf:function(a){switch(a){case 30:return 4096;case 85:return $a/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}Cb(D.p);return-1},___syscall94:function(a,b){S=b;try{var c=T(),d=T(),e=M[c];if(!e)throw new H(D.L);tc(e.g,d);return 0}catch(g){return"undefined"!==typeof R&&g instanceof H||p(g),-g.o}},_nanosleep:function(a,b){var c=w[a>>2],d=w[a+4>>2];0!==b&&(w[b>>2]=0,w[b+4>>2]=0);return Mc(1e6*c+d/1e3)},_emscripten_memcpy_big:function(a,b,c){A.set(A.subarray(b,b+c),a);return a},___syscall221:function(a,b){S=b;try{var c=Lc();switch(T()){case 0:var d=T();return 0>d?-D.p:wc(c.path,c.flags,0,d).fd;case 1:case 2:return 0;case 3:return c.flags;case 4:return d=T(),c.flags|=d,0;case 12:case 12:return d=T(),za[d+0>>1]=2,0;case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-D.p;case 9:return Cb(D.p),-1;default:return-D.p}}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},_floor:cd,_atan:nb,___syscall201:function(){return $c.apply(null,arguments)},_pthread_self:function(){return 0},_getenv:Xc,___syscall33:function(a,b){S=b;try{var c=U(),d;var e=T();if(e&-8)d=-D.p;else{var g;g=O(c,{Q:!0}).g;c="";e&4&&(c+="r");e&2&&(c+="w");e&1&&(c+="x");d=c&&cc(g,c)?-D.Y:0}return d}catch(h){return"undefined"!==typeof R&&h instanceof H||p(h),-h.o}},_log:qb,___unlock:function(){},___syscall140:function(a,b){S=b;try{var c=Lc(),d=T(),e=T(),g=T(),h=T();assert(0===d);zc(c,e,h);w[g>>2]=c.position;c.za&&0===e&&0===h&&(c.za=null);return 0}catch(m){return"undefined"!==typeof R&&m instanceof H||p(m),-m.o}},___syscall15:function(a,b){S=b;try{var c=U(),d=T();tc(c,d);return 0}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},_emscripten_set_main_loop:ld,___syscall10:function(a,b){S=b;try{var c=U();qc(c);return 0}catch(d){return"undefined"!==typeof R&&d instanceof H||p(d),-d.o}},_tan:kb,___syscall3:function(a,b){S=b;try{var c=Lc(),d=T(),e=T();return Ac(c,u,d,e)}catch(g){return"undefined"!==typeof R&&g instanceof H||p(g),-g.o}},___lock:function(){},___syscall6:function(a,b){S=b;try{var c=Lc();yc(c);return 0}catch(d){return"undefined"!==typeof R&&d instanceof H||p(d),-d.o}},___syscall5:function(a,b){S=b;try{var c=U(),d=T(),e=T();return wc(c,d,e).fd}catch(g){return"undefined"!==typeof R&&g instanceof H||p(g),-g.o}},___syscall4:function(a,b){S=b;try{var c=Lc(),d=T(),e=T();return Bc(c,u,d,e)}catch(g){return"undefined"!==typeof R&&g instanceof H||p(g),-g.o}},_time:function(a){var b=Date.now()/1e3|0;a&&(w[a>>2]=b);return b},_atan2:ob,_gettimeofday:function(a){var b=Date.now();w[a>>2]=b/1e3|0;w[a+4>>2]=b%1e3*1e3|0;return 0},_ceil:Td,_sqrt:rb,_localtime:function(a){return Sc(a,Nc)},___syscall207:function(a,b){S=b;try{var c=T();T();T();var d=M[c];if(!d)throw new H(D.L);uc(d.g);return 0}catch(e){return"undefined"!==typeof R&&e instanceof H||p(e),-e.o}},___syscall146:function(a,b){S=b;try{var c=Lc(),d=T(),e;a:{for(var g=T(),h=0,m=0;m>2],w[d+(8*m+4)>>2],void 0);if(0>t){e=-1;break a}h+=t}e=h}return e}catch(r){return"undefined"!==typeof R&&r instanceof H||p(r),-r.o}},STACKTOP:k,STACK_MAX:Xa,tempDoublePtr:yb,ABORT:oa,cttz_i8:Ud};var W=function(global,env,buffer){"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=0;var o=0;var p=0;var q=0;var r=global.NaN,s=global.Infinity;var t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0.0;var C=0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=global.Math.floor;var N=global.Math.abs;var O=global.Math.sqrt;var P=global.Math.pow;var Q=global.Math.cos;var R=global.Math.sin;var S=global.Math.tan;var T=global.Math.acos;var U=global.Math.asin;var V=global.Math.atan;var W=global.Math.atan2;var X=global.Math.exp;var Y=global.Math.log;var Z=global.Math.ceil;var _=global.Math.imul;var $=global.Math.min;var aa=global.Math.clz32;var ba=env.abort;var ca=env.assert;var da=env.invoke_iiii;var ea=env.jsCall_iiii;var fa=env.invoke_i;var ga=env.jsCall_i;var ha=env.invoke_vi;var ia=env.jsCall_vi;var ja=env.invoke_vii;var ka=env.jsCall_vii;var la=env.invoke_iiiiiii;var ma=env.jsCall_iiiiiii;var na=env.invoke_ii;var oa=env.jsCall_ii;var pa=env.invoke_viii;var qa=env.jsCall_viii;var ra=env.invoke_v;var sa=env.jsCall_v;var ta=env.invoke_iiiii;var ua=env.jsCall_iiiii;var va=env.invoke_viiiiii;var wa=env.jsCall_viiiiii;var xa=env.invoke_iii;var ya=env.jsCall_iii;var za=env.invoke_iiiiii;var Aa=env.jsCall_iiiiii;var Ba=env.invoke_viiii;var Ca=env.jsCall_viiii;var Da=env._pthread_cleanup_pop;var Ea=env.___syscall85;var Fa=env._sin;var Ga=env._exp;var Ha=env._utimes;var Ia=env._llvm_pow_f64;var Ja=env._acos;var Ka=env.___syscall54;var La=env._pthread_cleanup_push;var Ma=env._abort;var Na=env.___syscall40;var Oa=env.___syscall118;var Pa=env.___setErrNo;var Qa=env.___syscall20;var Ra=env.___syscall183;var Sa=env.___assert_fail;var Ta=env._usleep;var Ua=env._asin;var Va=env.___buildEnvironment;var Wa=env.___syscall202;var Xa=env.___syscall91;var Ya=env._cos;var Za=env.___syscall39;var _a=env._localtime_r;var $a=env._tzset;var ab=env._emscripten_set_main_loop_timing;var bb=env._sbrk;var cb=env.___syscall192;var db=env.___syscall197;var eb=env.___syscall196;var fb=env.___syscall195;var gb=env.___syscall194;var hb=env.___syscall212;var ib=env._sysconf;var jb=env.___syscall94;var kb=env._nanosleep;var lb=env._emscripten_memcpy_big;var mb=env.___syscall221;var nb=env._floor;var ob=env._atan;var pb=env.___syscall201;var qb=env._pthread_self;var rb=env._getenv;var sb=env.___syscall33;var tb=env._log;var ub=env.___unlock;var vb=env.___syscall140;var wb=env.___syscall15;var xb=env._emscripten_set_main_loop;var yb=env.___syscall10;var zb=env._tan;var Ab=env.___syscall3;var Bb=env.___lock;var Cb=env.___syscall6;var Db=env.___syscall5;var Eb=env.___syscall4;var Fb=env._time;var Gb=env._atan2;var Hb=env._gettimeofday;var Ib=env._ceil;var Jb=env._sqrt;var Kb=env._localtime;var Lb=env.___syscall207;var Mb=env.___syscall146;var Nb=0.0;function $b(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function ac(){return i|0}function bc(a){a=a|0;i=a}function cc(a,b){a=a|0;b=b|0;i=a;j=b}function dc(a,b){a=a|0;b=b|0;if(!n){n=a;o=b}}function ec(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function fc(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function gc(a){a=a|0;C=a}function hc(){return C|0}function ic(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=b;c[f>>2]=0;while(1){if((c[f>>2]|0)>>>0>=40)break;c[g>>2]=0;switch(d[352+((c[f>>2]|0)*12|0)+5>>0]|0){case 1:{c[g>>2]=c[e>>2];break}case 2:{c[g>>2]=-1;break}default:{}}vf(c[e>>2]|0,c[352+((c[f>>2]|0)*12|0)>>2]|0,a[352+((c[f>>2]|0)*12|0)+4>>0]|0,d[352+((c[f>>2]|0)*12|0)+6>>0]|0,c[g>>2]|0,c[352+((c[f>>2]|0)*12|0)+8>>2]|0,0,0)|0;c[f>>2]=(c[f>>2]|0)+1}c[f>>2]=0;while(1){if((c[f>>2]|0)>>>0>=6)break;c[h>>2]=0;switch(d[832+(c[f>>2]<<4)+5>>0]|0){case 1:{c[h>>2]=c[e>>2];break}case 2:{c[h>>2]=-1;break}default:{}}vf(c[e>>2]|0,c[832+(c[f>>2]<<4)>>2]|0,a[832+(c[f>>2]<<4)+4>>0]|0,1,c[h>>2]|0,0,c[832+(c[f>>2]<<4)+8>>2]|0,c[832+(c[f>>2]<<4)+12>>2]|0)|0;c[f>>2]=(c[f>>2]|0)+1}i=j;return 0}function jc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,378,17622);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+T(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function kc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,379,17631);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+U(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function lc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,380,17640);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+V(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function mc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;h[j>>3]=0.0;if((c[l>>2]|0)!=2)Sa(17649,17598,570,17657);if((fe(c[c[f>>2]>>2]|0)|0)!=5?(fe(c[(c[f>>2]|0)+4>>2]|0)|0)!=5:0){h[g>>3]=+ce(c[c[f>>2]>>2]|0);h[j>>3]=+ce(c[(c[f>>2]|0)+4>>2]|0);ie(c[e>>2]|0,+W(+ +h[g>>3],+ +h[j>>3]));i=k;return}me(c[e>>2]|0);i=k;return}function nc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,394,17666);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+ZP(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function oc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,402,17676);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+_P(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function pc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,410,17686);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+$P(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function qc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+64|0;f=o+32|0;p=o+28|0;g=o+24|0;m=o+20|0;n=o+16|0;j=o+12|0;h=o+8|0;k=o+4|0;l=o;c[f>>2]=b;c[p>>2]=d;c[g>>2]=e;c[m>>2]=o+48;c[n>>2]=o+40;c[j>>2]=0;c[h>>2]=0;if((c[p>>2]|0)!=2)Sa(17649,17598,1680,17696);if((fe(c[c[g>>2]>>2]|0)|0)!=5?(fe(c[(c[g>>2]|0)+4>>2]|0)|0)!=5:0){c[k>>2]=ae(c[c[g>>2]>>2]|0)|0;c[l>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;md(c[k>>2]|0,c[m>>2]|0);md(c[l>>2]|0,c[n>>2]|0);c[h>>2]=0;while(1){if((c[h>>2]|0)>=4)break;p=nd(c[m>>2]|0)|0;if((p|0)==(nd(c[n>>2]|0)|0))c[j>>2]=(c[j>>2]|0)+1;do{p=(c[m>>2]|0)+1|0;c[m>>2]=p}while((192&a[p>>0]|0)==128);do{p=(c[n>>2]|0)+1|0;c[n>>2]=p}while((192&a[p>>0]|0)==128);c[h>>2]=(c[h>>2]|0)+1}ke(c[f>>2]|0,c[j>>2]|0);i=o;return}me(c[f>>2]|0);i=o;return}function rc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,498,18100);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+od(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function sc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,499,18112);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+pd(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function tc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,420,18124);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+Q(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function uc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,419,18132);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+R(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function vc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,421,18140);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+S(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function wc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,422,18148);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+qd(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function xc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,446,18156);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+aQ(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function yc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,438,18165);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+eQ(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function zc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,454,18174);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+fQ(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Ac(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,456,18183);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+rd(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Bc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,474,18192);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+X(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Cc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,472,18200);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+Y(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Dc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,473,18208);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+cQ(+h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Ec(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;l=i;i=i+48|0;e=l+32|0;m=l+28|0;f=l+24|0;g=l+16|0;j=l+8|0;k=l;c[e>>2]=a;c[m>>2]=b;c[f>>2]=d;h[g>>3]=0.0;h[j>>3]=0.0;if((c[m>>2]|0)!=2)Sa(17649,17598,546,18218);if((fe(c[c[f>>2]>>2]|0)|0)!=5?(fe(c[(c[f>>2]|0)+4>>2]|0)|0)!=5:0){h[g>>3]=+ce(c[c[f>>2]>>2]|0);h[j>>3]=+ce(c[(c[f>>2]|0)+4>>2]|0);c[(SP()|0)>>2]=0;h[k>>3]=+P(+ +h[g>>3],+ +h[j>>3]);m=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(m){ie(e,+h[k>>3]);i=l;return}else{m=TP(c[(SP()|0)>>2]|0)|0;je(e,m,c[(SP()|0)>>2]|0);i=l;return}}me(c[e>>2]|0);i=l;return}function Fc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;j=k+24|0;l=k+20|0;e=k+16|0;g=k+8|0;f=k;c[j>>2]=a;c[l>>2]=b;c[e>>2]=d;h[g>>3]=0.0;a=f;c[a>>2]=0;c[a+4>>2]=0;if((c[l>>2]|0)!=1)Sa(17590,17598,590,18228);switch(fe(c[c[e>>2]>>2]|0)|0){case 1:{l=f;c[l>>2]=ee(c[c[e>>2]>>2]|0)|0;c[l+4>>2]=C;l=f;g=c[l+4>>2]|0;if((g|0)>0|(g|0)==0&(c[l>>2]|0)>>>0>0)e=1;else e=(c[f+4>>2]|0)<0?-1:0;l=f;c[l>>2]=e;c[l+4>>2]=((e|0)<0)<<31>>31;l=f;le(c[j>>2]|0,c[l>>2]|0,c[l+4>>2]|0);i=k;return}case 5:{me(c[j>>2]|0);i=k;return}default:{h[g>>3]=+ce(c[c[e>>2]>>2]|0);if(+h[g>>3]>0.0)e=1;else e=+h[g>>3]<0.0?-1:0;h[g>>3]=+(e|0);ie(c[j>>2]|0,+h[g>>3]);i=k;return}}}function Gc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[g>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,375,18237);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[e>>2]|0);i=k;return}h[g>>3]=+ce(c[c[f>>2]>>2]|0);c[(SP()|0)>>2]=0;h[j>>3]=+O(+ +h[g>>3]);l=(c[(SP()|0)>>2]|0)==0;e=c[e>>2]|0;if(l){ie(e,+h[j>>3]);i=k;return}else{l=TP(c[(SP()|0)>>2]|0)|0;je(e,l,c[(SP()|0)>>2]|0);i=k;return}}function Hc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+24|0;l=k+20|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;a=g;c[a>>2]=0;c[a+4>>2]=0;h[j>>3]=0.0;if((c[l>>2]|0)!=1)Sa(17590,17598,514,18246);switch(fe(c[c[f>>2]>>2]|0)|0){case 1:{a=g;c[a>>2]=ee(c[c[f>>2]>>2]|0)|0;c[a+4>>2]=C;a=c[e>>2]|0;j=g;l=g;le(a,rR(c[j>>2]|0,c[j+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0,C);i=k;return}case 5:{me(c[e>>2]|0);i=k;return}default:{h[j>>3]=+ce(c[c[f>>2]>>2]|0);ie(c[e>>2]|0,+h[j>>3]*+h[j>>3]);i=k;return}}}function Ic(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0.0;k=i;i=i+48|0;e=k+32|0;l=k+28|0;f=k+24|0;j=k+16|0;g=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[j>>3]=0.0;a=k+8|0;c[a>>2]=0;c[a+4>>2]=0;if((c[l>>2]|0)!=1)Sa(17590,17598,620,18257);switch(fe(c[c[f>>2]>>2]|0)|0){case 1:{l=g;c[l>>2]=ee(c[c[f>>2]>>2]|0)|0;c[l+4>>2]=C;l=g;le(c[e>>2]|0,c[l>>2]|0,c[l+4>>2]|0);i=k;return}case 5:{me(c[e>>2]|0);i=k;return}default:{h[j>>3]=+ce(c[c[f>>2]>>2]|0);m=+Z(+ +h[j>>3]);le(c[e>>2]|0,~~m>>>0,+N(m)>=1.0?m>0.0?~~+$(+M(m/4294967296.0),4294967295.0)>>>0:~~+Z((m-+(~~m>>>0))/4294967296.0)>>>0:0);i=k;return}}}function Jc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0.0;k=i;i=i+48|0;e=k+32|0;l=k+28|0;f=k+24|0;j=k+16|0;g=k;c[e>>2]=a;c[l>>2]=b;c[f>>2]=d;h[j>>3]=0.0;a=k+8|0;c[a>>2]=0;c[a+4>>2]=0;if((c[l>>2]|0)!=1)Sa(17590,17598,645,18266);switch(fe(c[c[f>>2]>>2]|0)|0){case 1:{l=g;c[l>>2]=ee(c[c[f>>2]>>2]|0)|0; -c[l+4>>2]=C;l=g;le(c[e>>2]|0,c[l>>2]|0,c[l+4>>2]|0);i=k;return}case 5:{me(c[e>>2]|0);i=k;return}default:{h[j>>3]=+ce(c[c[f>>2]>>2]|0);m=+M(+ +h[j>>3]);le(c[e>>2]|0,~~m>>>0,+N(m)>=1.0?m>0.0?~~+$(+M(m/4294967296.0),4294967295.0)>>>0:~~+Z((m-+(~~m>>>0))/4294967296.0)>>>0:0);i=k;return}}}function Kc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;ie(c[f>>2]|0,3.141592653589793);i=e;return}function Lc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+64|0;e=n+48|0;o=n+44|0;f=n+40|0;l=n+36|0;m=n+32|0;h=n+24|0;j=n+16|0;k=n+8|0;g=n;c[e>>2]=a;c[o>>2]=b;c[f>>2]=d;a=g;c[a>>2]=0;c[a+4>>2]=0;if((c[o>>2]|0)!=2){i=n;return}if(5==(fe(c[c[f>>2]>>2]|0)|0)){i=n;return}a=ee(c[(c[f>>2]|0)+4>>2]|0)|0;o=h;c[o>>2]=a;c[o+4>>2]=C;if((c[h+4>>2]|0)<0){je(c[e>>2]|0,18276,-1);i=n;return}a=be(c[c[f>>2]>>2]|0)|0;o=j;c[o>>2]=a;c[o+4>>2]=((a|0)<0)<<31>>31;o=j;a=h;a=rR(c[o>>2]|0,c[o+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;o=k;c[o>>2]=a;c[o+4>>2]=C;o=k;o=gR(c[o>>2]|0,c[o+4>>2]|0,1,0)|0;c[l>>2]=Id(o)|0;o=j;o=gR(c[o>>2]|0,c[o+4>>2]|0,1,0)|0;c[m>>2]=Id(o)|0;if((c[l>>2]|0)!=0&(c[m>>2]|0)!=0){o=c[m>>2]|0;zQ(o,ae(c[c[f>>2]>>2]|0)|0)|0;o=g;c[o>>2]=0;c[o+4>>2]=0;while(1){k=g;d=c[k+4>>2]|0;o=h;a=c[o+4>>2]|0;if(!((d|0)<(a|0)|((d|0)==(a|0)?(c[k>>2]|0)>>>0<(c[o>>2]|0)>>>0:0)))break;o=c[l>>2]|0;a=g;k=j;k=rR(c[a>>2]|0,c[a+4>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;zQ(o+k|0,c[m>>2]|0)|0;k=g;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;o=g;c[o>>2]=k;c[o+4>>2]=C}ne(c[e>>2]|0,c[l>>2]|0,-1,-1);Kd(c[l>>2]|0);Kd(c[m>>2]|0);i=n;return}te(c[e>>2]|0);if(c[l>>2]|0)Kd(c[l>>2]|0);if(!(c[m>>2]|0)){i=n;return}Kd(c[m>>2]|0);i=n;return}function Mc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;g=m+16|0;k=m+12|0;l=m+8|0;j=m+4|0;h=m;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=0;c[h>>2]=0;if(!((c[f>>2]|0)==3|(c[f>>2]|0)==2))Sa(18289,17598,1038,18307);if(5!=(fe(c[c[g>>2]>>2]|0)|0)?5!=(fe(c[(c[g>>2]|0)+4>>2]|0)|0):0){c[k>>2]=ae(c[c[g>>2]>>2]|0)|0;if(!(c[k>>2]|0)){i=m;return}c[l>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;if((c[f>>2]|0)==3){a=(de(c[(c[g>>2]|0)+8>>2]|0)|0)-1|0;c[j>>2]=a;c[j>>2]=(c[j>>2]|0)<0?0:a}else c[j>>2]=0;c[h>>2]=sd(c[k>>2]|0,c[l>>2]|0,c[j>>2]|0,0)|0;ke(c[e>>2]|0,(c[h>>2]|0)+1|0);i=m;return}me(c[e>>2]|0);i=m;return}function Nc(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;g=p+32|0;q=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;n=p+8|0;o=p+4|0;m=p;c[g>>2]=b;c[q>>2]=e;c[h>>2]=f;c[j>>2]=0;c[k>>2]=0;c[l>>2]=0;if((c[q>>2]|0)!=2)Sa(17649,17598,1073,18321);if(5!=(fe(c[c[h>>2]>>2]|0)|0)?5!=(fe(c[(c[h>>2]|0)+4>>2]|0)|0):0){c[n>>2]=ae(c[c[h>>2]>>2]|0)|0;c[l>>2]=de(c[(c[h>>2]|0)+4>>2]|0)|0;c[o>>2]=c[n>>2];a:while(1){if(!(nd(c[o>>2]|0)|0))break;q=c[j>>2]|0;c[j>>2]=q+1;if((q|0)>=(c[l>>2]|0))break;while(1){q=(c[o>>2]|0)+1|0;c[o>>2]=q;if((192&(d[q>>0]|0)|0)!=128)continue a}}c[k>>2]=(c[o>>2]|0)-(c[n>>2]|0);c[m>>2]=Id((c[o>>2]|0)-(c[n>>2]|0)+1|0)|0;if(c[m>>2]|0){DQ(c[m>>2]|0,c[n>>2]|0,(c[o>>2]|0)-(c[n>>2]|0)|0)|0;a[(c[m>>2]|0)+(c[k>>2]|0)>>0]=0;ne(c[g>>2]|0,c[m>>2]|0,-1,-1);Kd(c[m>>2]|0);i=p;return}else{te(c[g>>2]|0);i=p;return}}me(c[g>>2]|0);i=p;return}function Oc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;f=p+36|0;q=p+32|0;g=p+28|0;k=p+24|0;h=p+20|0;j=p+16|0;m=p+12|0;o=p+8|0;n=p+4|0;l=p;c[f>>2]=b;c[q>>2]=d;c[g>>2]=e;c[k>>2]=0;c[h>>2]=0;c[j>>2]=0;if((c[q>>2]|0)!=2)Sa(17649,17598,1113,18330);if(5!=(fe(c[c[g>>2]>>2]|0)|0)?5!=(fe(c[(c[g>>2]|0)+4>>2]|0)|0):0){c[m>>2]=ae(c[c[g>>2]>>2]|0)|0;c[k>>2]=de(c[(c[g>>2]|0)+4>>2]|0)|0;c[o>>2]=c[m>>2];while(1){if(!(nd(c[o>>2]|0)|0))break;do{q=(c[o>>2]|0)+1|0;c[o>>2]=q}while((192&a[q>>0]|0)==128);c[h>>2]=(c[h>>2]|0)+1}c[n>>2]=c[o>>2];c[o>>2]=c[m>>2];q=(c[h>>2]|0)-(c[k>>2]|0)|0;c[j>>2]=q;c[j>>2]=(c[j>>2]|0)<0?0:q;a:while(1){q=c[j>>2]|0;c[j>>2]=q+-1;if((q|0)<=0)break;while(1){q=(c[o>>2]|0)+1|0;c[o>>2]=q;if((192&a[q>>0]|0)!=128)continue a}}c[l>>2]=Id((c[n>>2]|0)-(c[o>>2]|0)+1|0)|0;if(c[l>>2]|0){zQ(c[l>>2]|0,c[o>>2]|0)|0;ne(c[f>>2]|0,c[l>>2]|0,-1,-1);Kd(c[l>>2]|0);i=p;return}else{te(c[f>>2]|0);i=p;return}}me(c[f>>2]|0);i=p;return}function Pc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;f=o+32|0;p=o+28|0;g=o+24|0;m=o+20|0;n=o+16|0;k=o+12|0;l=o+8|0;j=o+4|0;h=o;c[f>>2]=b;c[p>>2]=d;c[g>>2]=e;c[j>>2]=0;c[h>>2]=0;if(1!=(c[p>>2]|0))Sa(18340,17598,1323,18348);if(5==(fe(c[c[g>>2]>>2]|0)|0)){me(c[f>>2]|0);i=o;return}c[m>>2]=ae(c[c[g>>2]>>2]|0)|0;c[j>>2]=BQ(c[m>>2]|0)|0;c[k>>2]=Id((c[j>>2]|0)+1|0)|0;if(!(c[k>>2]|0)){te(c[f>>2]|0);i=o;return}c[l>>2]=(c[k>>2]|0)+(c[j>>2]|0);p=c[l>>2]|0;c[l>>2]=p+-1;a[p>>0]=0;c[n>>2]=c[m>>2];a:while(1){if(!(nd(c[n>>2]|0)|0))break;c[m>>2]=c[n>>2];do{p=(c[n>>2]|0)+1|0;c[n>>2]=p}while((192&a[p>>0]|0)==128);c[h>>2]=1;while(1){if(((c[n>>2]|0)+(0-(c[h>>2]|0))|0)>>>0<(c[m>>2]|0)>>>0)continue a;j=a[(c[n>>2]|0)+(0-(c[h>>2]|0))>>0]|0;p=c[l>>2]|0;c[l>>2]=p+-1;a[p>>0]=j;c[h>>2]=(c[h>>2]|0)+1}}ne(c[f>>2]|0,c[k>>2]|0,-1,-1);Kd(c[k>>2]|0);i=o;return}function Qc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;g=n+24|0;o=n+20|0;f=n+16|0;k=n+12|0;l=n+8|0;m=n+4|0;j=n+28|0;h=n;c[g>>2]=b;c[o>>2]=d;c[f>>2]=e;c[h>>2]=1;if((c[o>>2]|0)!=1)Sa(17590,17598,724,18360);if(5==(fe(c[c[f>>2]>>2]|0)|0)){me(c[g>>2]|0);i=n;return}c[k>>2]=ae(c[c[f>>2]>>2]|0)|0;c[l>>2]=td(c[k>>2]|0)|0;if(!(c[l>>2]|0)){te(c[g>>2]|0);i=n;return}c[m>>2]=c[l>>2];while(1){o=c[k>>2]|0;c[k>>2]=o+1;o=a[o>>0]|0;a[j>>0]=o;if(!(o<<24>>24))break;if(NP(a[j>>0]|0)|0)c[h>>2]=1;else{f=a[j>>0]|0;if((c[h>>2]|0)==1)a[j>>0]=RP(f)|0;else a[j>>0]=QP(f)|0;c[h>>2]=0}b=a[j>>0]|0;o=c[m>>2]|0;c[m>>2]=o+1;a[o>>0]=b}a[c[m>>2]>>0]=0;ne(c[g>>2]|0,c[l>>2]|0,-1,-1);Kd(c[l>>2]|0);i=n;return}function Rc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;m=o+40|0;p=o+36|0;f=o+32|0;h=o+8|0;k=o;g=o+28|0;j=o+24|0;n=o+20|0;l=o+16|0;c[m>>2]=b;c[p>>2]=d;c[f>>2]=e;c[g>>2]=0;if((c[p>>2]|0)!=2)Sa(17649,17598,771,18371);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[m>>2]|0);i=o;return}c[j>>2]=ae(c[c[f>>2]>>2]|0)|0;b=ee(c[(c[f>>2]|0)+4>>2]|0)|0;p=h;c[p>>2]=b;c[p+4>>2]=C;if((c[h+4>>2]|0)<0){je(c[m>>2]|0,18276,-1);i=o;return}d=ud(c[j>>2]|0,-1)|0;b=k;c[b>>2]=d;c[b+4>>2]=((d|0)<0)<<31>>31;b=k;d=c[b+4>>2]|0;p=h;e=c[p+4>>2]|0;f=c[j>>2]|0;do if((d|0)>(e|0)|((d|0)==(e|0)?(c[b>>2]|0)>>>0>=(c[p>>2]|0)>>>0:0)){c[n>>2]=td(f)|0;f=c[m>>2]|0;if(c[n>>2]|0){ne(f,c[n>>2]|0,-1,-1);break}te(f);i=o;return}else{p=BQ(f)|0;b=h;b=gR(p|0,0,c[b>>2]|0,c[b+4>>2]|0)|0;p=k;p=fR(b|0,C|0,c[p>>2]|0,c[p+4>>2]|0)|0;p=gR(p|0,C|0,1,0)|0;c[n>>2]=Id(p)|0;if(!(c[n>>2]|0)){te(c[m>>2]|0);i=o;return}c[l>>2]=c[n>>2];c[g>>2]=1;while(1){d=c[g>>2]|0;b=k;b=gR(d|0,((d|0)<0)<<31>>31|0,c[b>>2]|0,c[b+4>>2]|0)|0;d=C;p=h;e=c[p+4>>2]|0;f=c[l>>2]|0;if(!((d|0)<(e|0)|((d|0)==(e|0)?b>>>0<=(c[p>>2]|0)>>>0:0)))break;c[l>>2]=f+1;a[f>>0]=32;c[g>>2]=(c[g>>2]|0)+1}zQ(f,c[j>>2]|0)|0}while(0);ne(c[m>>2]|0,c[n>>2]|0,-1,-1);Kd(c[n>>2]|0);i=o;return}function Sc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+64|0;n=p+48|0;q=p+44|0;f=p+40|0;k=p+16|0;l=p+8|0;h=p;j=p+36|0;g=p+32|0;o=p+28|0;m=p+24|0;c[n>>2]=b;c[q>>2]=d;c[f>>2]=e;c[j>>2]=0;if((c[q>>2]|0)!=2)Sa(17649,17598,825,18408);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[n>>2]|0);i=p;return}c[g>>2]=ae(c[c[f>>2]>>2]|0)|0;b=ee(c[(c[f>>2]|0)+4>>2]|0)|0;q=k;c[q>>2]=b;c[q+4>>2]=C;if((c[k+4>>2]|0)<0){je(c[n>>2]|0,18276,-1);i=p;return}d=ud(c[g>>2]|0,-1)|0;b=l;c[b>>2]=d;c[b+4>>2]=((d|0)<0)<<31>>31;b=l;d=c[b+4>>2]|0;q=k;e=c[q+4>>2]|0;f=c[g>>2]|0;do if((d|0)>(e|0)|((d|0)==(e|0)?(c[b>>2]|0)>>>0>=(c[q>>2]|0)>>>0:0)){c[o>>2]=td(f)|0;f=c[n>>2]|0;if(c[o>>2]|0){ne(f,c[o>>2]|0,-1,-1);break}te(f);i=p;return}else{q=h;c[q>>2]=BQ(f)|0;c[q+4>>2]=0;q=h;b=k;b=gR(c[q>>2]|0,c[q+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;q=l;q=fR(b|0,C|0,c[q>>2]|0,c[q+4>>2]|0)|0;q=gR(q|0,C|0,1,0)|0;c[o>>2]=Id(q)|0;if(!(c[o>>2]|0)){te(c[n>>2]|0);i=p;return}q=zQ(c[o>>2]|0,c[g>>2]|0)|0;c[m>>2]=q+(c[h>>2]|0);c[j>>2]=1;while(1){b=c[j>>2]|0;h=l;h=gR(b|0,((b|0)<0)<<31>>31|0,c[h>>2]|0,c[h+4>>2]|0)|0;b=C;q=k;g=c[q+4>>2]|0;f=c[m>>2]|0;if(!((b|0)<(g|0)|((b|0)==(g|0)?h>>>0<=(c[q>>2]|0)>>>0:0)))break;c[m>>2]=f+1;a[f>>0]=32;c[j>>2]=(c[j>>2]|0)+1}a[f>>0]=0}while(0);ne(c[n>>2]|0,c[o>>2]|0,-1,-1);Kd(c[o>>2]|0);i=p;return}function Tc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+64|0;n=p+48|0;q=p+44|0;f=p+40|0;k=p+16|0;l=p+8|0;h=p;j=p+36|0;g=p+32|0;o=p+28|0;m=p+24|0;c[n>>2]=b;c[q>>2]=d;c[f>>2]=e;c[j>>2]=0;if((c[q>>2]|0)!=2)Sa(17649,17598,880,18417);if((fe(c[c[f>>2]>>2]|0)|0)==5){me(c[n>>2]|0);i=p;return}c[g>>2]=ae(c[c[f>>2]>>2]|0)|0;b=ee(c[(c[f>>2]|0)+4>>2]|0)|0;q=k;c[q>>2]=b;c[q+4>>2]=C;if((c[k+4>>2]|0)<0){je(c[n>>2]|0,18276,-1);i=p;return}d=ud(c[g>>2]|0,-1)|0;b=l;c[b>>2]=d;c[b+4>>2]=((d|0)<0)<<31>>31;b=l;d=c[b+4>>2]|0;q=k;e=c[q+4>>2]|0;f=c[g>>2]|0;do if((d|0)>(e|0)|((d|0)==(e|0)?(c[b>>2]|0)>>>0>=(c[q>>2]|0)>>>0:0)){c[o>>2]=td(f)|0;f=c[n>>2]|0;if(c[o>>2]|0){ne(f,c[o>>2]|0,-1,-1);break}te(f);i=p;return}else{q=h;c[q>>2]=BQ(f)|0;c[q+4>>2]=0;q=h;b=k;b=gR(c[q>>2]|0,c[q+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;q=l;q=fR(b|0,C|0,c[q>>2]|0,c[q+4>>2]|0)|0;q=gR(q|0,C|0,1,0)|0;c[o>>2]=Id(q)|0;if(!(c[o>>2]|0)){te(c[n>>2]|0);i=p;return}c[m>>2]=c[o>>2];c[j>>2]=1;while(1){d=c[j>>2]<<1;b=l;b=gR(d|0,((d|0)<0)<<31>>31|0,c[b>>2]|0,c[b+4>>2]|0)|0;d=C;q=k;e=c[q+4>>2]|0;f=c[m>>2]|0;if(!((d|0)<(e|0)|((d|0)==(e|0)?b>>>0<=(c[q>>2]|0)>>>0:0)))break;c[m>>2]=f+1;a[f>>0]=32;c[j>>2]=(c[j>>2]|0)+1}zQ(f,c[g>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+(c[h>>2]|0);while(1){b=c[j>>2]|0;h=l;h=gR(b|0,((b|0)<0)<<31>>31|0,c[h>>2]|0,c[h+4>>2]|0)|0;b=C;q=k;g=c[q+4>>2]|0;f=c[m>>2]|0;if(!((b|0)<(g|0)|((b|0)==(g|0)?h>>>0<=(c[q>>2]|0)>>>0:0)))break;c[m>>2]=f+1;a[f>>0]=32;c[j>>2]=(c[j>>2]|0)+1}a[f>>0]=0}while(0);ne(c[n>>2]|0,c[o>>2]|0,-1,-1);Kd(c[o>>2]|0);i=p;return}function Uc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;f=r+44|0;s=r+40|0;g=r+36|0;n=r+32|0;o=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;p=r+12|0;q=r+8|0;h=r+4|0;j=r;c[f>>2]=b;c[s>>2]=d;c[g>>2]=e;c[h>>2]=0;c[j>>2]=0;if((c[s>>2]|0)!=2)Sa(17649,17598,939,18426);if((fe(c[c[g>>2]>>2]|0)|0)!=5?(fe(c[(c[g>>2]|0)+4>>2]|0)|0)!=5:0){c[n>>2]=ae(c[c[g>>2]>>2]|0)|0;c[o>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;c[p>>2]=Id((BQ(c[n>>2]|0)|0)+1|0)|0;if(!(c[p>>2]|0)){te(c[f>>2]|0);i=r;return}c[q>>2]=c[p>>2];c[k>>2]=c[n>>2];a:while(1){s=nd(c[k>>2]|0)|0;c[h>>2]=s;if(!s)break;c[l>>2]=c[o>>2];b:while(1){s=nd(c[l>>2]|0)|0;c[j>>2]=s;if(!s)break;if((c[j>>2]|0)==(c[h>>2]|0))break;while(1){s=(c[l>>2]|0)+1|0;c[l>>2]=s;if((192&a[s>>0]|0)!=128)continue b}}if(c[j>>2]|0){c[m>>2]=c[l>>2];do{s=(c[m>>2]|0)+1|0;c[m>>2]=s}while((192&a[s>>0]|0)==128);DQ(c[q>>2]|0,c[l>>2]|0,(c[m>>2]|0)-(c[l>>2]|0)|0)|0;c[q>>2]=(c[q>>2]|0)+((c[m>>2]|0)-(c[l>>2]|0))}while(1){s=(c[k>>2]|0)+1|0;c[k>>2]=s;if((192&a[s>>0]|0)!=128)continue a}}a[c[q>>2]>>0]=0;ne(c[f>>2]|0,c[p>>2]|0,-1,-1);Kd(c[p>>2]|0);i=r;return}me(c[f>>2]|0);i=r;return}function Vc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;e=l+28|0;m=l+24|0;f=l+20|0;j=l+16|0;g=l+8|0;k=l;c[e>>2]=a;c[m>>2]=b;c[f>>2]=d;if((c[m>>2]|0)!=1)Sa(17590,17598,1395,18440);c[j>>2]=xe(c[e>>2]|0,24)|0;if(5==(Te(c[c[f>>2]>>2]|0)|0)){i=l;return}a=(c[j>>2]|0)+16|0;m=a;m=gR(c[m>>2]|0,c[m+4>>2]|0,1,0)|0;c[a>>2]=m;c[a+4>>2]=C;h[k>>3]=+ce(c[c[f>>2]>>2]|0);h[g>>3]=+h[k>>3]-+h[c[j>>2]>>3];a=(c[j>>2]|0)+16|0;m=c[j>>2]|0;h[m>>3]=+h[m>>3]+ +h[g>>3]/(+((c[a>>2]|0)>>>0)+4294967296.0*+(c[a+4>>2]|0));m=(c[j>>2]|0)+8|0;h[m>>3]=+h[m>>3]+ +h[g>>3]*(+h[k>>3]-+h[c[j>>2]>>3]);i=l;return}function Wc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if((c[d>>2]|0)!=0?(a=(c[d>>2]|0)+16|0,f=c[a+4>>2]|0,(f|0)>0|(f|0)==0&(c[a>>2]|0)>>>0>1):0){a=c[b>>2]|0;g=+h[(c[d>>2]|0)+8>>3];f=(c[d>>2]|0)+16|0;f=fR(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;ie(a,+O(+(g/(+(f>>>0)+4294967296.0*+(C|0)))));i=e;return}ie(c[b>>2]|0,0.0);i=e;return}function Xc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if((c[d>>2]|0)!=0?(a=(c[d>>2]|0)+16|0,f=c[a+4>>2]|0,(f|0)>0|(f|0)==0&(c[a>>2]|0)>>>0>1):0){a=c[b>>2]|0;g=+h[(c[d>>2]|0)+8>>3];f=(c[d>>2]|0)+16|0;f=fR(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;ie(a,g/(+(f>>>0)+4294967296.0*+(C|0)));i=e;return}ie(c[b>>2]|0,0.0);i=e;return}function Yc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+80|0;e=q+64|0;r=q+60|0;f=q+56|0;n=q+52|0;p=q+8|0;o=q;m=q+48|0;l=q+44|0;k=q+40|0;g=q+28|0;j=q+16|0;c[e>>2]=a;c[r>>2]=b;c[f>>2]=d;a=p;c[a>>2]=0;c[a+4>>2]=0;h[o>>3]=0.0;if((c[r>>2]|0)!=1)Sa(17590,17598,1418,18453);c[k>>2]=Te(c[c[f>>2]>>2]|0)|0;if((c[k>>2]|0)==5){i=q;return}c[n>>2]=xe(c[e>>2]|0,64)|0;do if(!(c[(c[n>>2]|0)+56>>2]|0)){e=aR(1,12)|0;c[(c[n>>2]|0)+56>>2]=e;e=c[n>>2]|0;if((c[k>>2]|0)==1){r=c[e+56>>2]|0;bd(g,176);c[r>>2]=c[g>>2];c[r+4>>2]=c[g+4>>2];c[r+8>>2]=c[g+8>>2];r=(c[n>>2]|0)+48|0;c[r>>2]=0;c[r+4>>2]=0;break}else{r=e+48|0;c[r>>2]=1;c[r+4>>2]=0;r=c[(c[n>>2]|0)+56>>2]|0;bd(j,177);c[r>>2]=c[j>>2];c[r+4>>2]=c[j+4>>2];c[r+8>>2]=c[j+8>>2];break}}while(0);r=(c[n>>2]|0)+16|0;e=r;e=gR(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;c[r>>2]=e;c[r+4>>2]=C;r=(c[n>>2]|0)+48|0;e=c[c[f>>2]>>2]|0;if(0==(c[r>>2]|0)?0==(c[r+4>>2]|0):0){r=ee(e)|0;o=p;c[o>>2]=r;c[o+4>>2]=C;c[m>>2]=aR(1,8)|0;o=p;p=c[o+4>>2]|0;r=c[m>>2]|0;c[r>>2]=c[o>>2];c[r+4>>2]=p;fd(c[(c[n>>2]|0)+56>>2]|0,c[m>>2]|0);i=q;return}else{h[o>>3]=+ce(e);c[l>>2]=aR(1,8)|0;h[c[l>>2]>>3]=+h[o>>3];fd(c[(c[n>>2]|0)+56>>2]|0,c[l>>2]|0);i=q;return}}function Zc(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if(!(c[d>>2]|0)){i=e;return}if(!(c[(c[d>>2]|0)+56>>2]|0)){i=e;return}hd(c[(c[d>>2]|0)+56>>2]|0,131,c[d>>2]|0);jd(c[(c[d>>2]|0)+56>>2]|0);$Q(c[(c[d>>2]|0)+56>>2]|0);a=(c[d>>2]|0)+40|0;if(!(1==(c[a>>2]|0)?0==(c[a+4>>2]|0):0)){i=e;return}f=(c[d>>2]|0)+48|0;a=c[b>>2]|0;b=c[d>>2]|0;if(0==(c[f>>2]|0)?0==(c[f+4>>2]|0):0){f=b;le(a,c[f>>2]|0,c[f+4>>2]|0);i=e;return}else{ie(a,+h[b+8>>3]);i=e;return}}function _c(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if(!(c[d>>2]|0)){i=e;return}a=(c[d>>2]|0)+16|0;h[(c[d>>2]|0)+24>>3]=(+((c[a>>2]|0)>>>0)+4294967296.0*+(c[a+4>>2]|0))/2.0;wd(c[b>>2]|0);i=e;return}function $c(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if(!(c[d>>2]|0)){i=e;return}a=(c[d>>2]|0)+16|0;h[(c[d>>2]|0)+24>>3]=(+((c[a>>2]|0)>>>0)+4294967296.0*+(c[a+4>>2]|0))/4.0;wd(c[b>>2]|0);i=e;return}function ad(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if(!(c[d>>2]|0)){i=e;return}a=(c[d>>2]|0)+16|0;a=rR(c[a>>2]|0,c[a+4>>2]|0,3,0)|0;h[(c[d>>2]|0)+24>>3]=(+(a>>>0)+4294967296.0*+(C|0))/4.0;wd(c[b>>2]|0);i=e;return}function bd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+12|0;e=d;c[f>>2]=b;c[e+4>>2]=c[f>>2];c[e>>2]=0;c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];i=d;return}function cd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;i=i+16|0;h=f+12|0;g=f+8|0;e=f;c[h>>2]=a;c[g>>2]=b;c[f+4>>2]=d;c[e>>2]=aR(c[h>>2]|0,c[g>>2]|0)|0;i=f;return c[e>>2]|0}function dd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;$Q(c[d>>2]|0);i=b;return}function ed(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;g=k+12|0;h=k+8|0;j=k+4|0;f=k;c[e>>2]=a;c[g>>2]=b;c[h>>2]=d;if(!(c[c[e>>2]>>2]|0)){c[f>>2]=cd(1,24,17581)|0;c[(c[f>>2]|0)+8>>2]=c[h>>2];j=(c[f>>2]|0)+16|0;c[j>>2]=1;c[j+4>>2]=0;c[c[e>>2]>>2]=c[f>>2];i=k;return}c[j>>2]=Yb[c[g>>2]&255](c[(c[c[e>>2]>>2]|0)+8>>2]|0,c[h>>2]|0)|0;if(!(c[j>>2]|0)){j=(c[c[e>>2]>>2]|0)+16|0;g=j;g=gR(c[g>>2]|0,c[g+4>>2]|0,1,0)|0;c[j>>2]=g;c[j+4>>2]=C;dd(c[h>>2]|0);i=k;return}e=c[c[e>>2]>>2]|0;if((c[j>>2]|0)>0){ed(e,c[g>>2]|0,c[h>>2]|0);i=k;return}else{ed(e+4|0,c[g>>2]|0,c[h>>2]|0);i=k;return}}function fd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;ed(c[f>>2]|0,c[(c[f>>2]|0)+4>>2]|0,c[e>>2]|0);i=d;return}function gd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(!(c[e>>2]|0)){i=h;return}if(c[c[e>>2]>>2]|0)gd(c[c[e>>2]>>2]|0,c[f>>2]|0,c[g>>2]|0);d=(c[e>>2]|0)+16|0;_b[c[f>>2]&255](c[(c[e>>2]|0)+8>>2]|0,c[d>>2]|0,c[d+4>>2]|0,c[g>>2]|0);if(!(c[(c[e>>2]|0)+4>>2]|0)){i=h;return}gd(c[(c[e>>2]|0)+4>>2]|0,c[f>>2]|0,c[g>>2]|0);i=h;return}function hd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;gd(c[c[h>>2]>>2]|0,c[g>>2]|0,c[f>>2]|0);i=e;return}function id(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}dd(c[(c[b>>2]|0)+8>>2]|0);if(c[c[b>>2]>>2]|0)id(c[c[b>>2]>>2]|0);if(c[(c[b>>2]|0)+4>>2]|0)id(c[(c[b>>2]|0)+4>>2]|0);dd(c[b>>2]|0);i=d;return}function jd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;id(c[c[d>>2]>>2]|0);i=b;return}function kd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;g=i;i=i+32|0;d=g+24|0;j=g+20|0;h=g+16|0;e=g+8|0;f=g;c[j>>2]=a;c[h>>2]=b;j=c[j>>2]|0;a=c[j+4>>2]|0;b=e;c[b>>2]=c[j>>2];c[b+4>>2]=a;h=c[h>>2]|0;b=c[h+4>>2]|0;a=f;c[a>>2]=c[h>>2];c[a+4>>2]=b;a=e;b=f;if((c[a>>2]|0)==(c[b>>2]|0)?(c[a+4>>2]|0)==(c[b+4>>2]|0):0){c[d>>2]=0;j=c[d>>2]|0;i=g;return j|0}h=e;b=c[h+4>>2]|0;j=f;f=c[j+4>>2]|0;if((b|0)<(f|0)|((b|0)==(f|0)?(c[h>>2]|0)>>>0<(c[j>>2]|0)>>>0:0)){c[d>>2]=-1;j=c[d>>2]|0;i=g;return j|0}else{c[d>>2]=1;j=c[d>>2]|0;i=g;return j|0}return 0}function ld(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0;g=i;i=i+32|0;d=g+24|0;k=g+20|0;j=g+16|0;e=g+8|0;f=g;c[k>>2]=a;c[j>>2]=b;h[e>>3]=+h[c[k>>2]>>3];h[f>>3]=+h[c[j>>2]>>3];do if(!(+h[e>>3]==+h[f>>3]))if(+h[e>>3]<+h[f>>3]){c[d>>2]=-1;break}else{c[d>>2]=1;break}else c[d>>2]=0;while(0);i=g;return c[d>>2]|0}function md(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;j=l+12|0;h=l+8|0;k=l+4|0;g=l;c[f>>2]=b;c[j>>2]=e;c[h>>2]=0;while(1){if(!(d[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0))break;if(!((MP(d[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0)|0)!=0^1))break;c[h>>2]=(c[h>>2]|0)+1}if(!(a[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0)){zQ(c[j>>2]|0,17839)|0;i=l;return}e=(RP(d[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0)|0)&255;a[c[j>>2]>>0]=e;c[k>>2]=1;while(1){if((c[k>>2]|0)>=4)break;if(!(d[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0))break;c[g>>2]=d[17711+(d[(c[f>>2]|0)+(c[h>>2]|0)>>0]&127)>>0];if((c[g>>2]|0)>0){b=(c[g>>2]|0)+48&255;e=c[k>>2]|0;c[k>>2]=e+1;a[(c[j>>2]|0)+e>>0]=b}c[h>>2]=(c[h>>2]|0)+1}while(1){f=c[k>>2]|0;if((c[k>>2]|0)>=4)break;c[k>>2]=f+1;a[(c[j>>2]|0)+f>>0]=48}a[(c[j>>2]|0)+f>>0]=0;i=l;return}function nd(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;b=h+8|0;e=h+4|0;f=h;c[b>>2]=a;a=c[b>>2]|0;c[b>>2]=a+1;c[e>>2]=d[a>>0];c[f>>2]=d[17844+(c[e>>2]|0)>>0];switch(c[f>>2]|0){case 4:{c[e>>2]=65533;g=c[e>>2]|0;i=h;return g|0}case 3:{a=c[e>>2]<<6;g=c[b>>2]|0;c[b>>2]=g+1;c[e>>2]=a+(d[g>>0]|0);g=4;break}case 2:{g=4;break}case 1:break;default:{g=c[e>>2]|0;i=h;return g|0}}if((g|0)==4){a=c[e>>2]<<6;g=c[b>>2]|0;c[b>>2]=g+1;c[e>>2]=a+(d[g>>0]|0)}a=c[e>>2]<<6;g=c[b>>2]|0;c[b>>2]=g+1;c[e>>2]=a+(d[g>>0]|0);c[e>>2]=(c[e>>2]|0)-(c[928+(c[f>>2]<<2)>>2]|0);if(((c[944+(c[f>>2]<<2)>>2]&c[e>>2]|0)!=0?(c[e>>2]&-2048|0)!=55296:0)?(c[e>>2]&-2|0)!=65534:0){g=c[e>>2]|0;i=h;return g|0}c[e>>2]=65533;g=c[e>>2]|0;i=h;return g|0}function od(a){a=+a;var b=0,c=0;c=i;i=i+16|0;b=c;h[b>>3]=a;i=c;return+(+h[b>>3]*180.0/3.141592653589793)}function pd(a){a=+a;var b=0,c=0;c=i;i=i+16|0;b=c;h[b>>3]=a;i=c;return+(+h[b>>3]*3.141592653589793/180.0)}function qd(a){a=+a;var b=0,c=0;b=i;i=i+16|0;c=b;h[c>>3]=a;a=1.0/+S(+ +h[c>>3]);i=b;return+a}function rd(a){a=+a;var b=0,c=0;b=i;i=i+16|0;c=b;h[c>>3]=a;a=1.0/+fQ(+h[c>>3]);i=b;return+a}function sd(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;g=t+40|0;h=t+36|0;j=t+32|0;k=t+28|0;l=t+24|0;m=t+20|0;p=t+16|0;q=t+12|0;r=t+8|0;n=t+4|0;o=t;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=0;c[p>>2]=-1;if(!(a[c[h>>2]>>0]|0)){c[g>>2]=-1;s=c[g>>2]|0;i=t;return s|0}a:while(1){if(!(nd(c[j>>2]|0)|0))break;d=c[m>>2]|0;c[m>>2]=d+1;if((d|0)>=(c[k>>2]|0))break;while(1){d=(c[j>>2]|0)+1|0;c[j>>2]=d;if((192&a[d>>0]|0)!=128)continue a}}c[m>>2]=0;while(1){if(!(nd(c[j>>2]|0)|0))break;c[q>>2]=c[h>>2];c[r>>2]=c[j>>2];do{c[n>>2]=nd(c[q>>2]|0)|0;c[o>>2]=nd(c[r>>2]|0)|0;do{d=(c[q>>2]|0)+1|0;c[q>>2]=d}while((192&a[d>>0]|0)==128);do{d=(c[r>>2]|0)+1|0;c[r>>2]=d}while((192&a[d>>0]|0)==128)}while(((c[n>>2]|0)!=0?(c[n>>2]|0)==(c[o>>2]|0):0)&(c[o>>2]|0)!=0);if(!(c[n>>2]|0)){s=14;break}do{d=(c[j>>2]|0)+1|0;c[j>>2]=d}while((192&a[d>>0]|0)==128);c[m>>2]=(c[m>>2]|0)+1}if((s|0)==14)c[p>>2]=c[m>>2];if(c[l>>2]|0)c[c[l>>2]>>2]=c[j>>2];s=c[p>>2]|0;c[g>>2]=(c[p>>2]|0)>=0?s+(c[k>>2]|0)|0:s;s=c[g>>2]|0;i=t;return s|0}function td(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=Id((BQ(c[d>>2]|0)|0)+1|0)|0;a=zQ(c[e>>2]|0,c[d>>2]|0)|0;i=b;return a|0}function ud(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[g>>2]=e;c[j>>2]=0;if((c[g>>2]|0)>=0)c[h>>2]=(c[f>>2]|0)+(c[g>>2]|0);else c[h>>2]=-1;if((c[f>>2]|0)>>>0>(c[h>>2]|0)>>>0)Sa(18380,17598,316,18389);while(1){if(!(a[c[f>>2]>>0]|0)){f=10;break}if((c[f>>2]|0)>>>0>=(c[h>>2]|0)>>>0){f=10;break}c[f>>2]=(c[f>>2]|0)+((d[17844+(d[c[f>>2]>>0]|0)>>0]|0)+1);c[j>>2]=(c[j>>2]|0)+1}if((f|0)==10){i=k;return c[j>>2]|0}return 0}function vd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+48|0;m=l+32|0;j=l+16|0;n=l+28|0;g=l+8|0;f=l;k=l+24|0;c[m>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[n>>2]=e;c[k>>2]=c[n>>2];e=(c[k>>2]|0)+48|0;b=c[m>>2]|0;if(0==(c[e>>2]|0)?0==(c[e+4>>2]|0):0){n=c[b>>2]|0;m=g;c[m>>2]=n;c[m+4>>2]=((n|0)<0)<<31>>31;m=(c[k>>2]|0)+32|0;n=j;b=c[k>>2]|0;if((c[m>>2]|0)==(c[n>>2]|0)?(c[m+4>>2]|0)==(c[n+4>>2]|0):0){n=b+40|0;m=n;m=gR(c[m>>2]|0,c[m+4>>2]|0,1,0)|0;c[n>>2]=m;c[n+4>>2]=C;i=l;return}m=b+32|0;e=c[m+4>>2]|0;n=j;f=c[n+4>>2]|0;if(!((e|0)<(f|0)|((e|0)==(f|0)?(c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0:0))){i=l;return}n=c[g+4>>2]|0;m=c[k>>2]|0;c[m>>2]=c[g>>2];c[m+4>>2]=n;m=c[j+4>>2]|0;n=(c[k>>2]|0)+32|0;c[n>>2]=c[j>>2];c[n+4>>2]=m;n=(c[k>>2]|0)+40|0;c[n>>2]=1;c[n+4>>2]=0;i=l;return}else{h[f>>3]=+h[b>>3];m=(c[k>>2]|0)+32|0;n=j;b=c[k>>2]|0;if((c[m>>2]|0)==(c[n>>2]|0)?(c[m+4>>2]|0)==(c[n+4>>2]|0):0){n=b+40|0;m=n;m=gR(c[m>>2]|0,c[m+4>>2]|0,1,0)|0;c[n>>2]=m;c[n+4>>2]=C;i=l;return}m=b+32|0;e=c[m+4>>2]|0;n=j;g=c[n+4>>2]|0;if(!((e|0)<(g|0)|((e|0)==(g|0)?(c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0:0))){i=l;return}h[(c[k>>2]|0)+8>>3]=+h[f>>3];m=c[j+4>>2]|0;n=(c[k>>2]|0)+32|0;c[n>>2]=c[j>>2];c[n+4>>2]=m;n=(c[k>>2]|0)+40|0;c[n>>2]=1;c[n+4>>2]=0;i=l;return}}function wd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;b=f+4|0;e=f;c[b>>2]=a;c[e>>2]=xe(c[b>>2]|0,0)|0;if(!(c[e>>2]|0)){i=f;return}if(!(c[(c[e>>2]|0)+56>>2]|0)){i=f;return}c[(c[e>>2]|0)+60>>2]=0;hd(c[(c[e>>2]|0)+56>>2]|0,132,c[e>>2]|0);jd(c[(c[e>>2]|0)+56>>2]|0);$Q(c[(c[e>>2]|0)+56>>2]|0);d=(c[e>>2]|0)+48|0;if(!(0==(c[d>>2]|0)?0==(c[d+4>>2]|0):0)){d=(c[e>>2]|0)+40|0;ie(c[b>>2]|0,+h[(c[e>>2]|0)+8>>3]/(+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0)));i=f;return}g=(c[e>>2]|0)+40|0;b=c[b>>2]|0;d=c[e>>2]|0;a=c[d>>2]|0;d=c[d+4>>2]|0;if(1==(c[g>>2]|0)?0==(c[g+4>>2]|0):0){le(b,a,d);i=f;return}else{g=(c[e>>2]|0)+40|0;ie(b,(+(a>>>0)+4294967296.0*+(d|0))*1.0/(+((c[g>>2]|0)>>>0)+4294967296.0*+(c[g+4>>2]|0)));i=f;return}}function xd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+64|0;j=q+56|0;m=q+32|0;r=q+52|0;o=q+24|0;n=q+16|0;f=q+8|0;k=q;g=q+48|0;l=q+44|0;p=q+40|0;c[j>>2]=a;a=m;c[a>>2]=b;c[a+4>>2]=d;c[r>>2]=e;c[p>>2]=c[r>>2];if((c[(c[p>>2]|0)+60>>2]|0)>0){i=q;return}h[f>>3]=+h[(c[p>>2]|0)+24>>3];r=(c[p>>2]|0)+16|0;h[k>>3]=+((c[r>>2]|0)>>>0)+4294967296.0*+(c[r+4>>2]|0)-+h[(c[p>>2]|0)+24>>3];r=(c[p>>2]|0)+32|0;e=m;e=gR(c[r>>2]|0,c[r+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;c[g>>2]=e;e=(c[p>>2]|0)+16|0;r=(c[p>>2]|0)+32|0;r=fR(c[e>>2]|0,c[e+4>>2]|0,c[r>>2]|0,c[r+4>>2]|0)|0;c[l>>2]=r;do if(+(c[g>>2]|0)>=+h[f>>3]){b=c[p>>2]|0;if(!(+(c[l>>2]|0)>=+h[k>>3])){c[b+60>>2]=1;break}r=b+40|0;b=r;b=gR(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[r>>2]=b;c[r+4>>2]=C;r=(c[p>>2]|0)+48|0;b=c[j>>2]|0;if(0==(c[r>>2]|0)?0==(c[r+4>>2]|0):0){n=c[b>>2]|0;r=o;c[r>>2]=n;c[r+4>>2]=((n|0)<0)<<31>>31;r=c[p>>2]|0;n=r;o=gR(c[n>>2]|0,c[n+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[r>>2]=o;c[r+4>>2]=C;break}else{h[n>>3]=+h[b>>3];r=(c[p>>2]|0)+8|0;h[r>>3]=+h[r>>3]+ +h[n>>3];break}}while(0);o=m;r=(c[p>>2]|0)+32|0;p=r;p=gR(c[p>>2]|0,c[p+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[r>>2]=p;c[r+4>>2]=C;i=q;return}function yd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h+12|0;d=h+8|0;e=h+4|0;f=h;c[d>>2]=b;if(!(zd(c[d>>2]|0,18469,7)|0))c[d>>2]=(c[d>>2]|0)+7;c[f>>2]=If(c[d>>2]|0)|0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=7){d=9;break}if((zd(c[d>>2]|0,c[968+(c[e>>2]<<2)>>2]|0,c[f>>2]|0)|0)==0?(Jf(a[(c[968+(c[e>>2]<<2)>>2]|0)+(c[f>>2]|0)>>0]|0)|0)==0:0){d=7;break}c[e>>2]=(c[e>>2]|0)+1}if((d|0)==7){c[g>>2]=1;g=c[g>>2]|0;i=h;return g|0}else if((d|0)==9){c[g>>2]=0;g=c[g>>2]|0;i=h;return g|0}return 0}function zd(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m+20|0;f=m+16|0;g=m+12|0;h=m+8|0;j=m+4|0;k=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;e=c[g>>2]|0;if(!(c[f>>2]|0)){c[l>>2]=(e|0)!=0?-1:0;l=c[l>>2]|0;i=m;return l|0}if(!e){c[l>>2]=1;l=c[l>>2]|0;i=m;return l|0}c[j>>2]=c[f>>2];c[k>>2]=c[g>>2];while(1){g=c[h>>2]|0;c[h>>2]=g+-1;if((g|0)<=0)break;if(!(d[c[j>>2]>>0]|0))break;if((d[18477+(d[c[j>>2]>>0]|0)>>0]|0|0)!=(d[18477+(d[c[k>>2]>>0]|0)>>0]|0|0))break;c[j>>2]=(c[j>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+1}if((c[h>>2]|0)<0)e=0;else e=(d[18477+(d[c[j>>2]>>0]|0)>>0]|0)-(d[18477+(d[c[k>>2]>>0]|0)>>0]|0)|0;c[l>>2]=e;l=c[l>>2]|0;i=m;return l|0}function Ad(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if((c[d>>2]|0)>=0&(c[d>>2]|0)<7){c[b>>2]=c[968+(c[d>>2]<<2)>>2];a=c[b>>2]|0;i=e;return a|0}else{c[b>>2]=0;a=c[b>>2]|0;i=e;return a|0}return 0}function Bd(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+20|0;h=m+16|0;j=m+12|0;k=m+8|0;l=m+4|0;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;if((c[h>>2]|0)<0|(c[h>>2]|0)>=10){c[g>>2]=Kf(16368)|0;l=c[g>>2]|0;i=m;return l|0}if(a[18733+(c[h>>2]|0)>>0]|0)b=Lf()|0;else b=Mf()|0;c[m>>2]=b;j=c[j>>2]|0;c[j>>2]=c[996+(c[h>>2]<<2)>>2];c[j+4>>2]=0;k=c[k>>2]|0;c[k>>2]=c[1036+(c[h>>2]<<2)>>2];c[k+4>>2]=0;if(c[l>>2]|0)c[1036+(c[h>>2]<<2)>>2]=c[996+(c[h>>2]<<2)>>2];c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}function Cd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;b=f+12|0;d=f+8|0;e=f+4|0;g=f;c[d>>2]=a;c[e>>2]=0;c[g>>2]=Dd()|0;if(c[g>>2]|0){c[b>>2]=0;g=c[b>>2]|0;i=f;return g|0}c[e>>2]=c[269];while(1){if((c[e>>2]|0)==0|(c[d>>2]|0)==0)break;if(!(yQ(c[d>>2]|0,c[(c[e>>2]|0)+16>>2]|0)|0))break;c[e>>2]=c[(c[e>>2]|0)+12>>2]}c[b>>2]=c[e>>2];g=c[b>>2]|0;i=f;return g|0}function Dd(){var a=0,b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f+8|0;e=f+4|0;a=f;if(c[59]|0){c[d>>2]=0;e=c[d>>2]|0;i=f;return e|0}c[e>>2]=0;if(c[e>>2]|0){c[d>>2]=c[e>>2];e=c[d>>2]|0;i=f;return e|0}c[61]=1;if(!(c[62]|0))c[e>>2]=Tf()|0;if(((c[e>>2]|0)==0?(c[62]=1,(c[65]|0)==0):0)?(c[65]=8,!((c[3]|0)==0|(c[65]|0)!=0)):0)c[e>>2]=7;if(!(c[e>>2]|0))c[64]=(c[64]|0)+1;if(c[e>>2]|0){c[d>>2]=c[e>>2];e=c[d>>2]|0;i=f;return e|0}if((c[59]|0)==0&(c[60]|0)==0){c[a>>2]=1080;c[60]=1;a=c[a>>2]|0;b=a+92|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));Uf();if(!(c[63]|0))c[e>>2]=Vf()|0;if(!(c[e>>2]|0)){c[63]=1;c[e>>2]=Wf()|0}if(!(c[e>>2]|0)){Xf(c[53]|0,c[54]|0,c[55]|0);c[59]=1}c[60]=0}c[64]=(c[64]|0)+-1;if((c[64]|0)<=0)c[65]=0;c[d>>2]=c[e>>2];e=c[d>>2]|0;i=f;return e|0}function Ed(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h+8|0;g=h+4|0;d=h;c[f>>2]=a;c[g>>2]=b;c[d>>2]=Dd()|0;if(c[d>>2]|0){c[e>>2]=c[d>>2];g=c[e>>2]|0;i=h;return g|0}Yf(c[f>>2]|0);b=c[269]|0;if((c[g>>2]|0)!=0|(c[269]|0)==0){c[(c[f>>2]|0)+12>>2]=b;c[269]=c[f>>2]}else{c[(c[f>>2]|0)+12>>2]=c[b+12>>2];c[(c[269]|0)+12>>2]=c[f>>2]}c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}function Fd(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return 0}function Gd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+48|0;e=j+32|0;f=j+24|0;h=j+16|0;g=j+8|0;d=j;k=j+40|0;l=f;c[l>>2]=a;c[l+4>>2]=b;c[k>>2]=Dd()|0;if(c[k>>2]|0){k=e;c[k>>2]=-1;c[k+4>>2]=-1;k=e;l=k;l=c[l>>2]|0;k=k+4|0;k=c[k>>2]|0;C=k;i=j;return l|0}b=288;k=c[b+4>>2]|0;l=h;c[l>>2]=c[b>>2];c[l+4>>2]=k;if((c[f+4>>2]|0)<0){l=c[h+4>>2]|0;k=e;c[k>>2]=c[h>>2];c[k+4>>2]=l;k=e;l=k;l=c[l>>2]|0;k=k+4|0;k=c[k>>2]|0;C=k;i=j;return l|0}b=f;l=c[b+4>>2]|0;k=288;c[k>>2]=c[b>>2];c[k+4>>2]=l;k=Zf(0)|0;l=d;c[l>>2]=k;c[l+4>>2]=C;l=f;k=c[l+4>>2]|0;if((k|0)>0|(k|0)==0&(c[l>>2]|0)>>>0>0){l=f;b=c[l+4>>2]|0;a=d;k=c[a+4>>2]|0;a=(b|0)<(k|0)|((b|0)==(k|0)?(c[l>>2]|0)>>>0<=(c[a>>2]|0)>>>0:0)}else a=0;c[77]=a&1;l=Hd()|0;k=f;k=fR(l|0,C|0,c[k>>2]|0,c[k+4>>2]|0)|0;l=g;c[l>>2]=k;c[l+4>>2]=C;l=g;k=c[l+4>>2]|0;if((k|0)>0|(k|0)==0&(c[l>>2]|0)>>>0>0)Fd(c[g>>2]&2147483647)|0;l=c[h+4>>2]|0;k=e;c[k>>2]=c[h>>2];c[k+4>>2]=l;k=e;l=k;l=c[l>>2]|0;k=k+4|0;k=c[k>>2]|0;C=k;i=j;return l|0}function Hd(){var a=0,b=0;b=i;i=i+16|0;a=b+8|0;Bd(0,a,b,0)|0;C=c[a+4>>2]|0;i=b;return c[a>>2]|0}function Id(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;d=e+4|0;b=e;c[b>>2]=a;if(Dd()|0){c[d>>2]=0;d=c[d>>2]|0;i=e;return d|0}if((c[b>>2]|0)<=0)b=0;else{b=c[b>>2]|0;b=_f(b,((b|0)<0)<<31>>31)|0}c[d>>2]=b;d=c[d>>2]|0;i=e;return d|0}function Jd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;e=f;g=e;c[g>>2]=a;c[g+4>>2]=b;if(Dd()|0){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}else{g=e;c[d>>2]=_f(c[g>>2]|0,c[g+4>>2]|0)|0;g=c[d>>2]|0;i=f;return g|0}return 0}function Kd(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}if(c[2]|0){ag(0,$f(c[b>>2]|0)|0);ag(9,1);Qb[c[48>>2]&255](c[b>>2]|0);i=d;return}else{Qb[c[48>>2]&255](c[b>>2]|0);i=d;return}}function Ld(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=b;if(Dd()|0){c[d>>2]=0;a=c[d>>2]|0;i=g;return a|0}if((c[f>>2]|0)<0)c[f>>2]=0;a=c[f>>2]|0;c[d>>2]=bg(c[e>>2]|0,a,((a|0)<0)<<31>>31)|0;a=c[d>>2]|0;i=g;return a|0}function Md(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h+8|0;g=h;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;if(Dd()|0){c[e>>2]=0;a=c[e>>2]|0;i=h;return a|0}else{a=g;c[e>>2]=bg(c[f>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;a=c[e>>2]|0;i=h;return a|0}return 0}function Nd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+128|0;d=j+40|0;e=j+36|0;f=j+32|0;h=j+28|0;g=j;c[e>>2]=a;c[f>>2]=b;if(Dd()|0){c[d>>2]=0;a=c[d>>2]|0;i=j;return a|0}else{cg(g,0,j+44|0,70,1e9);dg(g,c[e>>2]|0,c[f>>2]|0);c[h>>2]=eg(g)|0;c[d>>2]=c[h>>2];a=c[d>>2]|0;i=j;return a|0}return 0}function Od(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;d=h+28|0;e=h+24|0;f=h+8|0;g=h;c[e>>2]=a;if(Dd()|0){c[d>>2]=0;a=c[d>>2]|0;i=h;return a|0}else{c[f>>2]=b;c[g>>2]=Nd(c[e>>2]|0,f)|0;c[d>>2]=c[g>>2];a=c[d>>2]|0;i=h;return a|0}return 0}function Pd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+48|0;f=l+44|0;g=l+40|0;m=l+36|0;h=l+32|0;j=l+28|0;k=l;c[g>>2]=a;c[m>>2]=b;c[h>>2]=d;c[j>>2]=e;e=c[m>>2]|0;if((c[g>>2]|0)<=0){c[f>>2]=e;m=c[f>>2]|0;i=l;return m|0}else{cg(k,0,e,c[g>>2]|0,0);dg(k,c[h>>2]|0,c[j>>2]|0);c[f>>2]=eg(k)|0;m=c[f>>2]|0;i=l;return m|0}return 0}function Qd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;l=g+28|0;k=g+24|0;j=g+20|0;f=g+16|0;h=g;c[l>>2]=a;c[k>>2]=b;c[j>>2]=d;c[h>>2]=e;c[f>>2]=Pd(c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,h)|0;i=g;return c[f>>2]|0}function Rd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;e=h+20|0;f=h+16|0;g=h;c[e>>2]=a;c[f>>2]=b;if(!(c[66]|0)){i=h;return}c[g>>2]=d;fg(c[e>>2]|0,c[f>>2]|0,g);i=h;return}function Sd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+288|0;f=m+12|0;g=m+8|0;k=m+272|0;l=m+4|0;h=m;j=m+16|0;c[f>>2]=b;c[g>>2]=e;c[l>>2]=c[g>>2];if(Dd()|0){i=m;return}if((c[f>>2]|0)<=0|(c[g>>2]|0)==0){a[18743]=0;i=m;return}if(!(a[18743]|0)){a[18745]=0;a[18744]=0;gg(Cd(0)|0,256,j)|0;c[h>>2]=0;while(1){if((c[h>>2]|0)>=256)break;a[18746+(c[h>>2]|0)>>0]=c[h>>2];c[h>>2]=(c[h>>2]|0)+1}c[h>>2]=0;while(1){if((c[h>>2]|0)>=256)break;a[18745]=(d[18745]|0)+((d[18746+(c[h>>2]|0)>>0]|0)+(a[j+(c[h>>2]|0)>>0]|0));a[k>>0]=a[18746+(d[18745]|0)>>0]|0;a[18746+(d[18745]|0)>>0]=a[18746+(c[h>>2]|0)>>0]|0;a[18746+(c[h>>2]|0)>>0]=a[k>>0]|0;c[h>>2]=(c[h>>2]|0)+1}a[18743]=1}do{a[18744]=(a[18744]|0)+1<<24>>24;a[k>>0]=a[18746+(d[18744]|0)>>0]|0; -a[18745]=(d[18745]|0)+(d[k>>0]|0);a[18746+(d[18744]|0)>>0]=a[18746+(d[18745]|0)>>0]|0;a[18746+(d[18745]|0)>>0]=a[k>>0]|0;a[k>>0]=(d[k>>0]|0)+(d[18746+(d[18744]|0)>>0]|0);j=a[18746+(d[k>>0]|0)>>0]|0;e=c[l>>2]|0;c[l>>2]=e+1;a[e>>0]=j;e=(c[f>>2]|0)+-1|0;c[f>>2]=e}while((e|0)!=0);i=m;return}function Td(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;g=k+16|0;e=k+12|0;f=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;a=c[f>>2]|0;if(!(c[e>>2]|0)){c[g>>2]=(a|0)!=0?-1:0;j=c[g>>2]|0;i=k;return j|0}if(!a){c[g>>2]=1;j=c[g>>2]|0;i=k;return j|0}c[h>>2]=c[e>>2];c[j>>2]=c[f>>2];while(1){if(d[c[h>>2]>>0]|0)b=(d[18477+(d[c[h>>2]>>0]|0)>>0]|0|0)==(d[18477+(d[c[j>>2]>>0]|0)>>0]|0|0);else b=0;a=c[h>>2]|0;if(!b)break;c[h>>2]=a+1;c[j>>2]=(c[j>>2]|0)+1}c[g>>2]=(d[18477+(d[a>>0]|0)>>0]|0)-(d[18477+(d[c[j>>2]>>0]|0)>>0]|0);j=c[g>>2]|0;i=k;return j|0}function Ud(){var a=0,b=0;b=i;i=i+16|0;a=b;c[a>>2]=0;while(1){if((c[a>>2]|0)>>>0>=4)break;Ed(1172+((c[a>>2]|0)*88|0)|0,(c[a>>2]|0)==0&1)|0;c[a>>2]=(c[a>>2]|0)+1}i=b;return 0}function Vd(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0;F=i;i=i+112|0;r=F+108|0;e=F+104|0;D=F+100|0;f=F+96|0;B=F+92|0;p=F+88|0;z=F+84|0;x=F+80|0;j=F+76|0;m=F+72|0;s=F+68|0;h=F+64|0;o=F+60|0;k=F+56|0;q=F+52|0;v=F+16|0;y=F+48|0;g=F+44|0;l=F+40|0;u=F+8|0;t=F;n=F+36|0;A=F+32|0;w=F+28|0;E=F+24|0;c[r>>2]=a;c[e>>2]=b;c[B>>2]=0;c[p>>2]=0;kg(c[(c[r>>2]|0)+24>>2]|0);c[D>>2]=c[(c[r>>2]|0)+28>>2];if(lg(c[D>>2]|0)|0){E=c[D>>2]|0;i=F;return E|0}c[z>>2]=Of(c[(c[r>>2]|0)+24>>2]|0)|0;c[x>>2]=Of(c[(c[r>>2]|0)+4>>2]|0)|0;c[m>>2]=-1;c[s>>2]=0;if((c[c[r>>2]>>2]|0)!=0?(d[(c[(c[(c[r>>2]|0)+24>>2]|0)+4>>2]|0)+20>>0]|0|0)==2:0)c[D>>2]=5;else c[D>>2]=0;if((0==(c[D>>2]|0)?(c[(c[r>>2]|0)+12>>2]|0)==0:0)?(a=mg(c[(c[r>>2]|0)+4>>2]|0,2)|0,c[D>>2]=a,0==(a|0)):0){c[(c[r>>2]|0)+12>>2]=1;ng(c[(c[r>>2]|0)+4>>2]|0,1,(c[r>>2]|0)+8|0)}if((c[D>>2]|0)==0?0==(og(c[(c[r>>2]|0)+24>>2]|0)|0):0){c[D>>2]=mg(c[(c[r>>2]|0)+24>>2]|0,0)|0;c[s>>2]=1}c[B>>2]=pg(c[(c[r>>2]|0)+24>>2]|0)|0;c[p>>2]=pg(c[(c[r>>2]|0)+4>>2]|0)|0;c[f>>2]=qg(Of(c[(c[r>>2]|0)+4>>2]|0)|0)|0;if(0==(c[D>>2]|0)&(c[f>>2]|0)==5?(c[B>>2]|0)!=(c[p>>2]|0):0)c[D>>2]=8;c[m>>2]=rg(c[(c[r>>2]|0)+24>>2]|0)|0;c[j>>2]=0;while(1){if((c[e>>2]|0)>=0?(c[j>>2]|0)>=(c[e>>2]|0):0)break;if((c[(c[r>>2]|0)+16>>2]|0)>>>0>(c[m>>2]|0)>>>0)break;if(!((c[D>>2]|0)!=0^1))break;c[h>>2]=c[(c[r>>2]|0)+16>>2];if((c[h>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[(c[(c[r>>2]|0)+24>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0)?(c[D>>2]=sg(c[z>>2]|0,c[h>>2]|0,o,2)|0,(c[D>>2]|0)==0):0){b=c[r>>2]|0;a=c[h>>2]|0;c[D>>2]=ug(b,a,tg(c[o>>2]|0)|0,0)|0;vg(c[o>>2]|0)}a=(c[r>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+1}do if(!(c[D>>2]|0)){c[(c[r>>2]|0)+36>>2]=c[m>>2];c[(c[r>>2]|0)+32>>2]=(c[m>>2]|0)+1-(c[(c[r>>2]|0)+16>>2]|0);if((c[(c[r>>2]|0)+16>>2]|0)>>>0>(c[m>>2]|0)>>>0){c[D>>2]=101;break}if(!(c[(c[r>>2]|0)+40>>2]|0))wg(c[r>>2]|0)}while(0);if((c[D>>2]|0)==101){if(!(c[m>>2]|0)){c[D>>2]=xg(c[(c[r>>2]|0)+4>>2]|0)|0;c[m>>2]=1}if((c[D>>2]|0)==0|(c[D>>2]|0)==101)c[D>>2]=yg(c[(c[r>>2]|0)+4>>2]|0,1,(c[(c[r>>2]|0)+8>>2]|0)+1|0)|0;if(!(c[D>>2]|0)){if(c[c[r>>2]>>2]|0)zg(c[c[r>>2]>>2]|0);if((c[f>>2]|0)==5)c[D>>2]=Ag(c[(c[r>>2]|0)+4>>2]|0,2)|0}if(!(c[D>>2]|0)){if((c[B>>2]|0)<(c[p>>2]|0)){c[q>>2]=(c[p>>2]|0)/(c[B>>2]|0)|0;c[k>>2]=((c[m>>2]|0)+(c[q>>2]|0)-1|0)/(c[q>>2]|0)|0;if((c[k>>2]|0)==((((c[381]|0)>>>0)/((c[(c[(c[(c[r>>2]|0)+4>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0))c[k>>2]=(c[k>>2]|0)+-1}else c[k>>2]=_(c[m>>2]|0,(c[B>>2]|0)/(c[p>>2]|0)|0)|0;if((c[B>>2]|0)<(c[p>>2]|0)){q=c[B>>2]|0;o=c[m>>2]|0;o=rR(q|0,((q|0)<0)<<31>>31|0,o|0,((o|0)<0)<<31>>31|0)|0;q=v;c[q>>2]=o;c[q+4>>2]=C;c[y>>2]=Bg(c[x>>2]|0)|0;Cg(c[x>>2]|0,l);c[g>>2]=c[k>>2];while(1){if(c[D>>2]|0)break;if((c[g>>2]|0)>>>0>(c[l>>2]|0)>>>0)break;do if((c[g>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[(c[(c[r>>2]|0)+4>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0)){c[D>>2]=sg(c[x>>2]|0,c[g>>2]|0,n,0)|0;if(c[D>>2]|0)break;c[D>>2]=Dg(c[n>>2]|0)|0;vg(c[n>>2]|0)}while(0);c[g>>2]=(c[g>>2]|0)+1}if(!(c[D>>2]|0))c[D>>2]=Eg(c[x>>2]|0,0,1)|0;o=(c[381]|0)+(c[p>>2]|0)|0;a=((o|0)<0)<<31>>31;q=v;n=c[q+4>>2]|0;if((a|0)<(n|0)|((a|0)==(n|0)?o>>>0<(c[q>>2]|0)>>>0:0)){f=(c[381]|0)+(c[p>>2]|0)|0;e=f;f=((f|0)<0)<<31>>31}else{f=v;e=c[f>>2]|0;f=c[f+4>>2]|0}p=t;c[p>>2]=e;c[p+4>>2]=f;p=(c[381]|0)+(c[B>>2]|0)|0;q=u;c[q>>2]=p;c[q+4>>2]=((p|0)<0)<<31>>31;while(1){if(c[D>>2]|0)break;p=u;n=c[p+4>>2]|0;q=t;o=c[q+4>>2]|0;if(!((n|0)<(o|0)|((n|0)==(o|0)?(c[p>>2]|0)>>>0<(c[q>>2]|0)>>>0:0)))break;c[A>>2]=0;p=u;q=c[B>>2]|0;q=pR(c[p>>2]|0,c[p+4>>2]|0,q|0,((q|0)<0)<<31>>31|0)|0;q=gR(q|0,C|0,1,0)|0;c[w>>2]=q;c[D>>2]=sg(c[z>>2]|0,c[w>>2]|0,A,0)|0;if(!(c[D>>2]|0)){c[E>>2]=tg(c[A>>2]|0)|0;q=u;c[D>>2]=Fg(c[y>>2]|0,c[E>>2]|0,c[B>>2]|0,c[q>>2]|0,c[q+4>>2]|0)|0}vg(c[A>>2]|0);p=c[B>>2]|0;q=u;p=gR(c[q>>2]|0,c[q+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;q=u;c[q>>2]=p;c[q+4>>2]=C}if(!(c[D>>2]|0)){E=v;c[D>>2]=Gg(c[y>>2]|0,c[E>>2]|0,c[E+4>>2]|0)|0}if(!(c[D>>2]|0))c[D>>2]=Hg(c[x>>2]|0,0)|0}else{Ig(c[x>>2]|0,c[k>>2]|0);c[D>>2]=Eg(c[x>>2]|0,0,0)|0}if(!(c[D>>2]|0)){E=Jg(c[(c[r>>2]|0)+4>>2]|0,0)|0;c[D>>2]=E;c[D>>2]=0==(E|0)?101:E}}}if(c[s>>2]|0){Kg(c[(c[r>>2]|0)+24>>2]|0,0)|0;Jg(c[(c[r>>2]|0)+24>>2]|0,0)|0}if((c[D>>2]|0)==3082)c[D>>2]=7;c[(c[r>>2]|0)+28>>2]=c[D>>2];E=c[D>>2]|0;i=F;return E|0}function Wd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;d=h+16|0;e=h+12|0;b=h+8|0;f=h+4|0;g=h;c[e>>2]=a;if(!(c[e>>2]|0)){c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}c[f>>2]=c[(c[e>>2]|0)+20>>2];kg(c[(c[e>>2]|0)+24>>2]|0);if(c[c[e>>2]>>2]|0){a=(c[(c[e>>2]|0)+24>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+-1}if(c[(c[e>>2]|0)+40>>2]|0){c[b>>2]=Lg(Of(c[(c[e>>2]|0)+24>>2]|0)|0)|0;while(1){if((c[c[b>>2]>>2]|0)==(c[e>>2]|0))break;c[b>>2]=(c[c[b>>2]>>2]|0)+44}c[c[b>>2]>>2]=c[(c[e>>2]|0)+44>>2]}Mg(c[(c[e>>2]|0)+4>>2]|0,0,0)|0;if((c[(c[e>>2]|0)+28>>2]|0)==101)a=0;else a=c[(c[e>>2]|0)+28>>2]|0;c[g>>2]=a;if(c[c[e>>2]>>2]|0){jg(c[c[e>>2]>>2]|0,c[g>>2]|0);Ng(c[c[e>>2]>>2]|0)}if(c[c[e>>2]>>2]|0)Kd(c[e>>2]|0);Ng(c[f>>2]|0);c[d>>2]=c[g>>2];g=c[d>>2]|0;i=h;return g|0}function Xd(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];if(!(c[b>>2]|0)){e=0;i=d;return e|0}e=c[(c[b>>2]|0)+168>>2]|0;i=d;return e|0}function Yd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;b=h+16|0;d=h+12|0;f=h+8|0;g=h+4|0;e=h;c[d>>2]=a;if(!(c[d>>2]|0))c[f>>2]=0;else{c[g>>2]=c[d>>2];c[e>>2]=c[c[g>>2]>>2];if(Og(c[g>>2]|0)|0){c[b>>2]=Kf(72362)|0;g=c[b>>2]|0;i=h;return g|0}a=(c[g>>2]|0)+128|0;d=c[a+4>>2]|0;if((d|0)>0|(d|0)==0&(c[a>>2]|0)>>>0>0)Pg(c[e>>2]|0,c[g>>2]|0);c[f>>2]=Qg(c[g>>2]|0)|0;c[f>>2]=Rg(c[e>>2]|0,c[f>>2]|0)|0;Ng(c[e>>2]|0)}c[b>>2]=c[f>>2];g=c[b>>2]|0;i=h;return g|0}function Zd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;e=g+8|0;f=g+4|0;d=g;c[b>>2]=a;if(!(c[b>>2]|0)){c[e>>2]=0;f=c[e>>2]|0;i=g;return f|0}c[f>>2]=c[b>>2];c[d>>2]=c[c[f>>2]>>2];a=(c[f>>2]|0)+128|0;b=c[a+4>>2]|0;if((b|0)>0|(b|0)==0&(c[a>>2]|0)>>>0>0)Pg(c[d>>2]|0,c[f>>2]|0);c[e>>2]=Sg(c[f>>2]|0)|0;Tg(c[f>>2]|0);c[e>>2]=Rg(c[d>>2]|0,c[e>>2]|0)|0;f=c[e>>2]|0;i=g;return f|0}function _d(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;d=h+8|0;g=h+4|0;f=h;c[j>>2]=a;c[g>>2]=0;c[f>>2]=c[j>>2];c[d>>2]=0;while(1){if((c[d>>2]|0)>=(b[(c[f>>2]|0)+68>>1]|0))break;Ug((c[(c[f>>2]|0)+60>>2]|0)+((c[d>>2]|0)*40|0)|0);b[(c[(c[f>>2]|0)+60>>2]|0)+((c[d>>2]|0)*40|0)+8>>1]=1;c[d>>2]=(c[d>>2]|0)+1}if(!((e[(c[f>>2]|0)+88>>1]|0)>>>8&1)){j=c[g>>2]|0;i=h;return j|0}if(!(c[(c[f>>2]|0)+188>>2]|0)){j=c[g>>2]|0;i=h;return j|0}j=(c[f>>2]|0)+88|0;b[j>>1]=b[j>>1]&-9|8;j=c[g>>2]|0;i=h;return j|0}function $d(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h+8|0;d=h+4|0;f=h;c[d>>2]=a;c[f>>2]=c[d>>2];if(!((e[(c[f>>2]|0)+8>>1]|0)&18)){c[g>>2]=ae(c[d>>2]|0)|0;g=c[g>>2]|0;i=h;return g|0}if(Vg(c[f>>2]|0)|0){c[g>>2]=0;g=c[g>>2]|0;i=h;return g|0}a=(c[f>>2]|0)+8|0;b[a>>1]=e[a>>1]|0|16;if(c[(c[f>>2]|0)+12>>2]|0)d=c[(c[f>>2]|0)+16>>2]|0;else d=0;c[g>>2]=d;g=c[g>>2]|0;i=h;return g|0}function ae(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Wg(c[d>>2]|0,1)|0;i=b;return a|0}function be(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Xg(c[d>>2]|0,1)|0;i=b;return a|0}function ce(a){a=a|0;var b=0.0,d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;b=+Yg(c[e>>2]|0);i=d;return+b}function de(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Zg(c[d>>2]|0)|0;i=b;return a|0}function ee(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Zg(c[d>>2]|0)|0;i=b;return a|0}function fe(a){a=a|0;var b=0,f=0;f=i;i=i+16|0;b=f;c[b>>2]=a;i=f;return d[19002+((e[(c[b>>2]|0)+8>>1]|0)&31)>>0]|0|0}function ge(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;ah(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,0,c[g>>2]|0);i=f;return}function he(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l;k=l+8|0;c[g>>2]=a;c[h>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=e;c[k>>2]=f;b=j;f=c[b+4>>2]|0;if(f>>>0>0|(f|0)==0&(c[b>>2]|0)>>>0>2147483647){bh(c[h>>2]|0,c[k>>2]|0,c[g>>2]|0)|0;i=l;return}else{ah(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,0,c[k>>2]|0);i=l;return}}function ie(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;e=d;c[f>>2]=a;h[e>>3]=b;ch(c[c[f>>2]>>2]|0,+h[e>>3]);i=d;return}function je(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+8|0;h=f+4|0;g=f;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;c[(c[j>>2]|0)+20>>2]=1;a[(c[j>>2]|0)+25>>0]=1;dh(c[c[j>>2]>>2]|0,c[h>>2]|0,c[g>>2]|0,1,-1)|0;i=f;return}function ke(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;a=c[f>>2]|0;eh(c[c[e>>2]>>2]|0,a,((a|0)<0)<<31>>31);i=d;return}function le(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a=g;eh(c[c[f>>2]>>2]|0,c[a>>2]|0,c[a+4>>2]|0);i=e;return}function me(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;fh(c[c[d>>2]>>2]|0);i=b;return}function ne(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;ah(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,1,c[g>>2]|0);i=f;return}function oe(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;k=p+16|0;l=p+12|0;m=p;n=p+8|0;o=p+20|0;c[k>>2]=b;c[l>>2]=e;e=m;c[e>>2]=f;c[e+4>>2]=g;c[n>>2]=h;a[o>>0]=j;if((d[o>>0]|0)==4)a[o>>0]=(a[960]|0)==0?3:2;e=m;h=c[e+4>>2]|0;if(h>>>0>0|(h|0)==0&(c[e>>2]|0)>>>0>2147483647){bh(c[l>>2]|0,c[n>>2]|0,c[k>>2]|0)|0;i=p;return}else{ah(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,a[o>>0]|0,c[n>>2]|0);i=p;return}}function pe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;gh(c[c[f>>2]>>2]|0,c[e>>2]|0)|0;i=d;return}function qe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;e=h+16|0;f=h+12|0;g=h;k=h+8|0;c[f>>2]=a;j=g;c[j>>2]=b;c[j+4>>2]=d;c[k>>2]=c[c[f>>2]>>2];d=g;j=c[d+4>>2]|0;a=c[(c[(c[k>>2]|0)+32>>2]|0)+88>>2]|0;b=((a|0)<0)<<31>>31;if(j>>>0>b>>>0|((j|0)==(b|0)?(c[d>>2]|0)>>>0>a>>>0:0)){c[e>>2]=18;k=c[e>>2]|0;i=h;return k|0}else{hh(c[c[f>>2]>>2]|0,c[g>>2]|0);c[e>>2]=0;k=c[e>>2]|0;i=h;return k|0}return 0}function re(b,d){b=b|0;d=d|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=d;c[(c[f>>2]|0)+20>>2]=c[g>>2];a[(c[f>>2]|0)+25>>0]=1;if(!((e[(c[c[f>>2]>>2]|0)+8>>1]|0)&1)){i=h;return}b=c[c[f>>2]>>2]|0;dh(b,ih(c[g>>2]|0)|0,-1,1,0)|0;i=h;return}function se(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;c[(c[e>>2]|0)+20>>2]=18;a[(c[e>>2]|0)+25>>0]=1;dh(c[c[e>>2]>>2]|0,19034,-1,1,0)|0;i=d;return}function te(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;fh(c[c[e>>2]>>2]|0);c[(c[e>>2]|0)+20>>2]=7;a[(c[e>>2]|0)+25>>0]=1;jh(c[(c[c[e>>2]>>2]|0)+32>>2]|0);i=d;return}function ue(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;e=o+32|0;f=o+28|0;j=o+24|0;k=o+20|0;m=o+16|0;g=o+12|0;h=o+8|0;l=o+4|0;n=o;c[f>>2]=d;c[j>>2]=0;c[k>>2]=0;c[m>>2]=c[f>>2];c[g>>2]=0;if(kh(c[m>>2]|0)|0){c[e>>2]=Kf(72913)|0;n=c[e>>2]|0;i=o;return n|0}c[h>>2]=c[c[m>>2]>>2];d=(c[m>>2]|0)+88|0;b[d>>1]=b[d>>1]&-513;while(1){d=lh(c[m>>2]|0)|0;c[j>>2]=d;if((d|0)!=17)break;d=c[g>>2]|0;c[g>>2]=d+1;if((d|0)>=50)break;c[l>>2]=c[(c[m>>2]|0)+76>>2];d=mh(c[m>>2]|0)|0;c[j>>2]=d;c[k>>2]=d;if(c[j>>2]|0)break;Zd(c[f>>2]|0)|0;if((c[l>>2]|0)<0)continue;d=(c[m>>2]|0)+88|0;b[d>>1]=b[d>>1]&-513|512}do if(c[k>>2]|0){c[n>>2]=ae(c[(c[h>>2]|0)+236>>2]|0)|0;Sf(c[h>>2]|0,c[(c[m>>2]|0)+44>>2]|0);if(a[(c[h>>2]|0)+65>>0]|0){c[(c[m>>2]|0)+44>>2]=0;c[j>>2]=7;c[(c[m>>2]|0)+80>>2]=7;break}else{n=nh(c[h>>2]|0,c[n>>2]|0)|0;c[(c[m>>2]|0)+44>>2]=n;c[(c[m>>2]|0)+80>>2]=c[k>>2];break}}while(0);c[j>>2]=Rg(c[h>>2]|0,c[j>>2]|0)|0;c[e>>2]=c[j>>2];n=c[e>>2]|0;i=o;return n|0}function ve(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[(c[b>>2]|0)+4>>2]|0)+4>>2]|0}function we(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[c[b>>2]>>2]|0)+32>>2]|0}function xe(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+8|0;h=g+4|0;f=g;c[h>>2]=a;c[f>>2]=b;b=c[h>>2]|0;if(!((e[(c[(c[h>>2]|0)+8>>2]|0)+8>>1]|0)&8192)){c[d>>2]=oh(b,c[f>>2]|0)|0;h=c[d>>2]|0;i=g;return h|0}else{c[d>>2]=c[(c[b+8>>2]|0)+16>>2];h=c[d>>2]|0;i=g;return h|0}return 0}function ye(a){a=a|0;var b=0,d=0,f=0;d=i;i=i+16|0;f=d+4|0;b=d;c[f>>2]=a;c[b>>2]=c[f>>2];if(!(c[b>>2]|0)){f=0;i=d;return f|0}f=e[(c[b>>2]|0)+84>>1]|0;i=d;return f|0}function ze(a){a=a|0;var b=0,d=0,f=0,g=0;f=i;i=i+16|0;b=f+8|0;g=f+4|0;d=f;c[g>>2]=a;c[d>>2]=c[g>>2];if((c[d>>2]|0)!=0?(c[(c[d>>2]|0)+20>>2]|0)!=0:0){c[b>>2]=e[(c[d>>2]|0)+84>>1];g=c[b>>2]|0;i=f;return g|0}c[b>>2]=0;g=c[b>>2]|0;i=f;return g|0}function Ae(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=$d(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;rh(c[f>>2]|0);i=e;return c[d>>2]|0}function Be(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=be(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;rh(c[f>>2]|0);i=e;return c[d>>2]|0}function Ce(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+12|0;g=e+8|0;d=e;c[f>>2]=a;c[g>>2]=b;h[d>>3]=+ce(qh(c[f>>2]|0,c[g>>2]|0)|0);rh(c[f>>2]|0);i=e;return+ +h[d>>3]}function De(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=de(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;rh(c[f>>2]|0);i=e;return c[d>>2]|0}function Ee(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+12|0;g=d+8|0;e=d;c[f>>2]=a;c[g>>2]=b;b=ee(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;a=e;c[a>>2]=b;c[a+4>>2]=C;rh(c[f>>2]|0);a=e;C=c[a+4>>2]|0;i=d;return c[a>>2]|0}function Fe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=ae(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;rh(c[f>>2]|0);i=e;return c[d>>2]|0}function Ge(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;f=h+8|0;j=h+4|0;g=h;c[f>>2]=a;c[j>>2]=d;c[g>>2]=qh(c[f>>2]|0,c[j>>2]|0)|0;if(!((e[(c[g>>2]|0)+8>>1]|0)&2048)){j=c[f>>2]|0;rh(j);j=c[g>>2]|0;i=h;return j|0}j=(c[g>>2]|0)+8|0;b[j>>1]=(e[j>>1]|0)&-2049;j=(c[g>>2]|0)+8|0;b[j>>1]=e[j>>1]|0|4096;j=c[f>>2]|0;rh(j);j=c[g>>2]|0;i=h;return j|0}function He(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=fe(qh(c[f>>2]|0,c[g>>2]|0)|0)|0;rh(c[f>>2]|0);i=e;return c[d>>2]|0}function Ie(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=sh(c[f>>2]|0,c[e>>2]|0,169,0)|0;i=d;return a|0}function Je(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;d=th(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,0)|0;i=g;return d|0}function Ke(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;e=k+16|0;f=k;j=k+12|0;g=k+8|0;c[l>>2]=a;c[e>>2]=b;h[f>>3]=d;c[g>>2]=c[l>>2];c[j>>2]=uh(c[g>>2]|0,c[e>>2]|0)|0;if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}ch((c[(c[g>>2]|0)+60>>2]|0)+(((c[e>>2]|0)-1|0)*40|0)|0,+h[f>>3]);l=c[j>>2]|0;i=k;return l|0}function Le(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[f>>2]=b;c[h>>2]=d;a=c[h>>2]|0;a=Me(c[g>>2]|0,c[f>>2]|0,a,((a|0)<0)<<31>>31)|0;i=e;return a|0}function Me(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;f=k+16|0;g=k;j=k+12|0;h=k+8|0;c[l>>2]=a;c[f>>2]=b;a=g;c[a>>2]=d;c[a+4>>2]=e;c[h>>2]=c[l>>2];c[j>>2]=uh(c[h>>2]|0,c[f>>2]|0)|0;if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}l=g;eh((c[(c[h>>2]|0)+60>>2]|0)+(((c[f>>2]|0)-1|0)*40|0)|0,c[l>>2]|0,c[l+4>>2]|0);l=c[j>>2]|0;i=k;return l|0}function Ne(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+12|0;f=e+8|0;d=e+4|0;g=e;c[h>>2]=a;c[f>>2]=b;c[g>>2]=c[h>>2];c[d>>2]=uh(c[g>>2]|0,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function Oe(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;d=th(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,1)|0;i=g;return d|0}function Pe(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=b;c[j>>2]=d;c[k>>2]=f;switch(fe(c[k>>2]|0)|0){case 1:{k=c[k>>2]|0;c[l>>2]=Me(c[g>>2]|0,c[j>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}case 2:{c[l>>2]=Ke(c[g>>2]|0,c[j>>2]|0,+h[c[k>>2]>>3])|0;l=c[l>>2]|0;i=m;return l|0}case 4:{b=c[g>>2]|0;g=c[j>>2]|0;d=c[k>>2]|0;if((e[(c[k>>2]|0)+8>>1]|0)&16384){c[l>>2]=Qe(b,g,c[d>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}else{c[l>>2]=Je(b,g,c[d+16>>2]|0,c[(c[k>>2]|0)+12>>2]|0,-1)|0;l=c[l>>2]|0;i=m;return l|0}}case 3:{c[l>>2]=th(c[g>>2]|0,c[j>>2]|0,c[(c[k>>2]|0)+16>>2]|0,c[(c[k>>2]|0)+12>>2]|0,-1,a[(c[k>>2]|0)+10>>0]|0)|0;l=c[l>>2]|0;i=m;return l|0}default:{c[l>>2]=Ne(c[g>>2]|0,c[j>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}}return 0}function Qe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+16|0;e=j+12|0;f=j+8|0;h=j+4|0;g=j;c[k>>2]=a;c[e>>2]=b;c[f>>2]=d;c[g>>2]=c[k>>2];c[h>>2]=uh(c[g>>2]|0,c[e>>2]|0)|0;if(c[h>>2]|0){k=c[h>>2]|0;i=j;return k|0}hh((c[(c[g>>2]|0)+60>>2]|0)+(((c[e>>2]|0)-1|0)*40|0)|0,c[f>>2]|0);k=c[h>>2]|0;i=j;return k|0}function Re(a){a=a|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=a;c[d>>2]=c[f>>2];if(!(c[d>>2]|0)){f=0;i=e;return f|0}f=b[(c[d>>2]|0)+68>>1]|0;i=e;return f|0}function Se(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=c[f>>2]|0;b=c[e>>2]|0;b=vh(a,b,If(c[e>>2]|0)|0)|0;i=d;return b|0}function Te(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=fe(c[b>>2]|0)|0;if((c[d>>2]|0)!=3){a=c[d>>2]|0;i=f;return a|0}c[e>>2]=c[b>>2];xh(c[e>>2]|0,0);c[d>>2]=fe(c[b>>2]|0)|0;a=c[d>>2]|0;i=f;return a|0}function Ue(f,g,h,j,k,l,m,n){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+144|0;M=Q+48|0;L=Q+40|0;N=Q+32|0;E=Q+24|0;D=Q+16|0;C=Q+8|0;F=Q+132|0;o=Q+128|0;p=Q+124|0;G=Q+120|0;q=Q;r=Q+116|0;H=Q+112|0;x=Q+108|0;t=Q+104|0;K=Q+100|0;O=Q+96|0;A=Q+92|0;J=Q+88|0;I=Q+84|0;P=Q+80|0;z=Q+76|0;y=Q+72|0;v=Q+68|0;w=Q+64|0;B=Q+60|0;u=Q+56|0;s=Q+52|0;c[F>>2]=f;c[o>>2]=g;c[p>>2]=h;c[G>>2]=j;h=q;c[h>>2]=k;c[h+4>>2]=l;c[r>>2]=m;c[H>>2]=n;c[x>>2]=0;c[K>>2]=0;c[O>>2]=0;c[J>>2]=0;c[I>>2]=0;c[c[H>>2]>>2]=0;c[r>>2]=((c[r>>2]|0)!=0^1^1)&1;c[I>>2]=ph(c[F>>2]|0,28,0)|0;a:do if((c[I>>2]|0)!=0?(c[J>>2]=yh(c[F>>2]|0,544,0)|0,(c[J>>2]|0)!=0):0){while(1){kR(c[J>>2]|0,0,544)|0;c[c[J>>2]>>2]=c[F>>2];Sf(c[F>>2]|0,c[O>>2]|0);c[O>>2]=0;Nf(c[F>>2]|0);c[A>>2]=zh(c[J>>2]|0,0,c[p>>2]|0,c[o>>2]|0)|0;if((c[A>>2]|0)!=0?(d[(c[A>>2]|0)+42>>0]&16|0)!=0:0){c[A>>2]=0;h=c[J>>2]|0;c[C>>2]=c[p>>2];Ah(h,19057,C)}if((c[A>>2]|0)!=0?(d[(c[A>>2]|0)+42>>0]&32|0)!=0:0){c[A>>2]=0;h=c[J>>2]|0;c[D>>2]=c[p>>2];Ah(h,19087,D)}if((c[A>>2]|0)!=0?(c[(c[A>>2]|0)+12>>2]|0)!=0:0){c[A>>2]=0;h=c[J>>2]|0;c[E>>2]=c[p>>2];Ah(h,19123,E)}if(!(c[A>>2]|0)){k=13;break}c[t>>2]=0;while(1){if((c[t>>2]|0)>=(b[(c[A>>2]|0)+34>>1]|0))break;if(!(Td(c[(c[(c[A>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)>>2]|0,c[G>>2]|0)|0))break;c[t>>2]=(c[t>>2]|0)+1}if((c[t>>2]|0)==(b[(c[A>>2]|0)+34>>1]|0)){k=21;break}if(c[r>>2]|0){c[P>>2]=0;b:do if(c[(c[F>>2]|0)+24>>2]&524288){c[y>>2]=c[(c[A>>2]|0)+16>>2];while(1){if(!(c[y>>2]|0))break b;c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[(c[y>>2]|0)+20>>2]|0))break;if((c[(c[y>>2]|0)+36+(c[v>>2]<<3)>>2]|0)==(c[t>>2]|0))c[P>>2]=19165;c[v>>2]=(c[v>>2]|0)+1}c[y>>2]=c[(c[y>>2]|0)+4>>2]}}while(0);c[z>>2]=c[(c[A>>2]|0)+8>>2];while(1){if(!(c[z>>2]|0))break;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(e[(c[z>>2]|0)+50>>1]|0))break;if(!((b[(c[(c[z>>2]|0)+4>>2]|0)+(c[w>>2]<<1)>>1]|0)!=(c[t>>2]|0)?(b[(c[(c[z>>2]|0)+4>>2]|0)+(c[w>>2]<<1)>>1]|0)!=-2:0))c[P>>2]=19177;c[w>>2]=(c[w>>2]|0)+1}c[z>>2]=c[(c[z>>2]|0)+20>>2]}if(c[P>>2]|0){k=42;break}}h=Ch(c[J>>2]|0)|0;c[(c[I>>2]|0)+20>>2]=h;if(c[(c[I>>2]|0)+20>>2]|0){c[B>>2]=c[(c[I>>2]|0)+20>>2];c[u>>2]=Dh(c[F>>2]|0,c[(c[A>>2]|0)+64>>2]|0)|0;Eh(c[B>>2]|0,2,c[u>>2]|0,c[r>>2]|0,c[c[(c[A>>2]|0)+64>>2]>>2]|0,c[(c[(c[A>>2]|0)+64>>2]|0)+4>>2]|0)|0;Fh(c[B>>2]|0,1);c[s>>2]=Gh(c[B>>2]|0,9,19219,0)|0;Hh(c[B>>2]|0,c[u>>2]|0);if(!(d[(c[F>>2]|0)+65>>0]|0)){c[(c[s>>2]|0)+4>>2]=c[u>>2];c[(c[s>>2]|0)+8>>2]=c[(c[A>>2]|0)+28>>2];c[(c[s>>2]|0)+12>>2]=c[r>>2];Ih(c[B>>2]|0,1,c[c[A>>2]>>2]|0,0)}if(!(d[(c[F>>2]|0)+65>>0]|0)){if(c[r>>2]|0)a[(c[s>>2]|0)+20>>0]=55;c[(c[s>>2]|0)+20+8>>2]=c[(c[A>>2]|0)+28>>2];c[(c[s>>2]|0)+20+12>>2]=c[u>>2];a[(c[s>>2]|0)+20+1>>0]=-14;c[(c[s>>2]|0)+20+16>>2]=(b[(c[A>>2]|0)+34>>1]|0)+1;c[(c[s>>2]|0)+80+8>>2]=b[(c[A>>2]|0)+34>>1];b[(c[J>>2]|0)+444>>1]=1;c[(c[J>>2]|0)+76>>2]=1;c[(c[J>>2]|0)+72>>2]=1;Jh(c[B>>2]|0,c[J>>2]|0)}}c[c[I>>2]>>2]=c[r>>2];c[(c[I>>2]|0)+12>>2]=c[t>>2];c[(c[I>>2]|0)+24>>2]=c[F>>2];if(a[(c[F>>2]|0)+65>>0]|0)break a;h=q;Me(c[(c[I>>2]|0)+20>>2]|0,1,c[h>>2]|0,c[h+4>>2]|0)|0;h=q;c[K>>2]=Kh(c[I>>2]|0,c[h>>2]|0,c[h+4>>2]|0,O)|0;h=(c[x>>2]|0)+1|0;c[x>>2]=h;if(!((h|0)<50?(c[K>>2]|0)==17:0))break a}if((k|0)==13){if(c[(c[J>>2]|0)+4>>2]|0){Sf(c[F>>2]|0,c[O>>2]|0);c[O>>2]=c[(c[J>>2]|0)+4>>2];c[(c[J>>2]|0)+4>>2]=0}c[K>>2]=1;break}else if((k|0)==21){Sf(c[F>>2]|0,c[O>>2]|0);P=c[F>>2]|0;c[N>>2]=c[G>>2];c[O>>2]=Bh(P,19144,N)|0;c[K>>2]=1;break}else if((k|0)==42){Sf(c[F>>2]|0,c[O>>2]|0);N=c[F>>2]|0;c[L>>2]=c[P>>2];c[O>>2]=Bh(N,19185,L)|0;c[K>>2]=1;break}}while(0);if((c[K>>2]|0)==0?(d[(c[F>>2]|0)+65>>0]|0)==0:0){c[c[H>>2]>>2]=c[I>>2];L=c[F>>2]|0;P=c[K>>2]|0;N=c[O>>2]|0;N=(N|0)!=0;N=N?19255:0;I=c[O>>2]|0;c[M>>2]=I;hg(L,P,N,M);N=c[F>>2]|0;P=c[O>>2]|0;Sf(N,P);P=c[J>>2]|0;Lh(P);P=c[F>>2]|0;O=c[J>>2]|0;Sf(P,O);O=c[F>>2]|0;P=c[K>>2]|0;P=Rg(O,P)|0;c[K>>2]=P;P=c[K>>2]|0;i=Q;return P|0}if((c[I>>2]|0)!=0?(c[(c[I>>2]|0)+20>>2]|0)!=0:0)Qg(c[(c[I>>2]|0)+20>>2]|0)|0;Sf(c[F>>2]|0,c[I>>2]|0);L=c[F>>2]|0;P=c[K>>2]|0;N=c[O>>2]|0;N=(N|0)!=0;N=N?19255:0;I=c[O>>2]|0;c[M>>2]=I;hg(L,P,N,M);N=c[F>>2]|0;P=c[O>>2]|0;Sf(N,P);P=c[J>>2]|0;Lh(P);P=c[F>>2]|0;O=c[J>>2]|0;Sf(P,O);O=c[F>>2]|0;P=c[K>>2]|0;P=Rg(O,P)|0;c[K>>2]=P;P=c[K>>2]|0;i=Q;return P|0}function Ve(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+12|0;d=f+8|0;e=f+4|0;b=f;c[g>>2]=a;c[d>>2]=c[g>>2];if(c[d>>2]|0){c[b>>2]=c[(c[d>>2]|0)+24>>2];c[e>>2]=Yd(c[(c[d>>2]|0)+20>>2]|0)|0;Sf(c[b>>2]|0,c[d>>2]|0);g=c[e>>2]|0;i=f;return g|0}else{c[e>>2]=0;g=c[e>>2]|0;i=f;return g|0}return 0}function We(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;b=Nh(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0,138)|0;i=f;return b|0}function Xe(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];if(!(c[b>>2]|0)){e=0;i=d;return e|0}if(!(c[(c[b>>2]|0)+20>>2]|0)){e=0;i=d;return e|0}e=c[(c[b>>2]|0)+4>>2]|0;i=d;return e|0}function Ye(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+48|0;k=m+8|0;e=m+32|0;n=m+28|0;f=m;j=m+24|0;h=m+20|0;g=m+16|0;l=m+12|0;c[n>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[h>>2]=c[n>>2];if(!(c[h>>2]|0)){c[e>>2]=Kf(81515)|0;n=c[e>>2]|0;i=m;return n|0}c[g>>2]=c[(c[h>>2]|0)+24>>2];if(c[(c[h>>2]|0)+20>>2]|0){n=f;c[j>>2]=Kh(c[h>>2]|0,c[n>>2]|0,c[n+4>>2]|0,l)|0;if(c[j>>2]|0){h=c[g>>2]|0;a=c[j>>2]|0;n=(c[l>>2]|0)!=0?19255:0;c[k>>2]=c[l>>2];hg(h,a,n,k);Sf(c[g>>2]|0,c[l>>2]|0)}}else c[j>>2]=4;c[j>>2]=Rg(c[g>>2]|0,c[j>>2]|0)|0;c[e>>2]=c[j>>2];n=c[e>>2]|0;i=m;return n|0}function Ze(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=(Ph(c[f>>2]|0,c[e>>2]|0,19258,91)|0)==0&1;i=d;return b|0}function _e(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;b=(Ph(c[h>>2]|0,c[g>>2]|0,19262,c[f>>2]|0)|0)==0&1;i=e;return b|0}function $e(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+64|0;j=z+56|0;k=z+52|0;l=z+48|0;m=z+44|0;n=z+40|0;o=z+36|0;w=z+32|0;x=z+28|0;v=z+24|0;p=z+20|0;r=z+16|0;t=z+12|0;q=z+8|0;s=z+4|0;u=z;c[k>>2]=b;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[w>>2]=0;c[v>>2]=0;c[p>>2]=0;if(!(Qh(c[k>>2]|0)|0)){c[j>>2]=Kf(105510)|0;y=c[j>>2]|0;i=z;return y|0}if(!(c[l>>2]|0))c[l>>2]=19266;jg(c[k>>2]|0,0);a:while(1){if(c[w>>2]|0)break;if(!(a[c[l>>2]>>0]|0))break;c[q>>2]=0;c[v>>2]=0;c[w>>2]=af(c[k>>2]|0,c[l>>2]|0,-1,v,x)|0;if(c[w>>2]|0)continue;if(!(c[v>>2]|0)){c[l>>2]=c[x>>2];continue}c[r>>2]=0;c[t>>2]=ye(c[v>>2]|0)|0;do{c[w>>2]=ue(c[v>>2]|0)|0;do if(c[m>>2]|0){if(100!=(c[w>>2]|0)){if(101!=(c[w>>2]|0)|(c[r>>2]|0)!=0)break;if(!(c[(c[k>>2]|0)+24>>2]&256))break}if(!(c[r>>2]|0)){c[p>>2]=ph(c[k>>2]|0,(c[t>>2]<<1<<2)+1|0,0)|0;if(!(c[p>>2]|0))break a;c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[t>>2]|0))break;e=Ie(c[v>>2]|0,c[s>>2]|0)|0;c[(c[p>>2]|0)+(c[s>>2]<<2)>>2]=e;c[s>>2]=(c[s>>2]|0)+1}c[r>>2]=1}b:do if((c[w>>2]|0)==100){c[q>>2]=(c[p>>2]|0)+(c[t>>2]<<2);c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[t>>2]|0))break b;e=Fe(c[v>>2]|0,c[s>>2]|0)|0;c[(c[q>>2]|0)+(c[s>>2]<<2)>>2]=e;if((c[(c[q>>2]|0)+(c[s>>2]<<2)>>2]|0)==0?(He(c[v>>2]|0,c[s>>2]|0)|0)!=5:0){y=27;break a}c[s>>2]=(c[s>>2]|0)+1}}while(0);if(Wb[c[m>>2]&255](c[n>>2]|0,c[t>>2]|0,c[q>>2]|0,c[p>>2]|0)|0){y=30;break a}}while(0)}while((c[w>>2]|0)==100);c[w>>2]=Qg(c[v>>2]|0)|0;c[v>>2]=0;c[l>>2]=c[x>>2];while(1){if(!(d[19267+(d[c[l>>2]>>0]|0)>>0]&1))break;c[l>>2]=(c[l>>2]|0)+1}Sf(c[k>>2]|0,c[p>>2]|0);c[p>>2]=0}if((y|0)==27)jh(c[k>>2]|0);else if((y|0)==30){c[w>>2]=4;Qg(c[v>>2]|0)|0;c[v>>2]=0;jg(c[k>>2]|0,4)}if(c[v>>2]|0)Qg(c[v>>2]|0)|0;Sf(c[k>>2]|0,c[p>>2]|0);c[w>>2]=Rg(c[k>>2]|0,c[w>>2]|0)|0;do if((c[w>>2]|0)!=0&(c[o>>2]|0)!=0){c[u>>2]=1+(If(bf(c[k>>2]|0)|0)|0);y=c[u>>2]|0;y=_f(y,((y|0)<0)<<31>>31)|0;c[c[o>>2]>>2]=y;if(c[c[o>>2]>>2]|0){e=c[c[o>>2]>>2]|0;y=bf(c[k>>2]|0)|0;iR(e|0,y|0,c[u>>2]|0)|0;break}else{c[w>>2]=7;jg(c[k>>2]|0,7);break}}else if(c[o>>2]|0)c[c[o>>2]>>2]=0;while(0);c[j>>2]=c[w>>2];y=c[j>>2]|0;i=z;return y|0}function af(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+20|0;m=h+16|0;l=h+12|0;k=h+8|0;j=h+4|0;g=h;c[n>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;c[g>>2]=Rh(c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,1,0,c[k>>2]|0,c[j>>2]|0)|0;i=h;return c[g>>2]|0}function bf(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[e>>2]=b;if(!(c[e>>2]|0)){c[d>>2]=ih(7)|0;f=c[d>>2]|0;i=g;return f|0}if(!(Sh(c[e>>2]|0)|0)){c[d>>2]=ih(Kf(134947)|0)|0;f=c[d>>2]|0;i=g;return f|0}if(!(a[(c[e>>2]|0)+65>>0]|0)){c[f>>2]=ae(c[(c[e>>2]|0)+236>>2]|0)|0;if(!(c[f>>2]|0))c[f>>2]=ih(c[(c[e>>2]|0)+52>>2]|0)|0}else c[f>>2]=ih(7)|0;c[d>>2]=c[f>>2];f=c[d>>2]|0;i=g;return f|0}function cf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+20|0;m=h+16|0;l=h+12|0;k=h+8|0;j=h+4|0;g=h;c[n>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;c[g>>2]=Rh(c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,0,0,c[k>>2]|0,c[j>>2]|0)|0;i=h;return c[g>>2]|0}function df(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;b=Th(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0,0)|0;i=f;return b|0}function ef(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;b=Th(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;i=g;return b|0}function ff(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;o=q;g=q+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;n=q+12|0;m=q+8|0;p=q+4|0;c[h>>2]=e;c[j>>2]=f;c[n>>2]=0;c[p>>2]=0;c[k>>2]=c[(c[h>>2]|0)+328>>2];if((c[k>>2]|0)!=0?(c[(c[k>>2]|0)+12>>2]|0)==0:0){c[m>>2]=c[(c[k>>2]|0)+4>>2];c[l>>2]=ph(c[h>>2]|0,544,0)|0;if(!(c[l>>2]|0))c[n>>2]=7;else{a[(c[l>>2]|0)+454>>0]=1;c[c[l>>2]>>2]=c[h>>2];c[(c[l>>2]|0)+428>>2]=1;if((((0==(Uh(c[l>>2]|0,c[j>>2]|0,p)|0)?(c[(c[l>>2]|0)+488>>2]|0)!=0:0)?(a[(c[h>>2]|0)+65>>0]|0)==0:0)?(c[(c[(c[l>>2]|0)+488>>2]|0)+12>>2]|0)==0:0)?(d[(c[(c[l>>2]|0)+488>>2]|0)+42>>0]&16|0)==0:0){if(!(c[(c[m>>2]|0)+4>>2]|0)){c[(c[m>>2]|0)+4>>2]=c[(c[(c[l>>2]|0)+488>>2]|0)+4>>2];b[(c[m>>2]|0)+34>>1]=b[(c[(c[l>>2]|0)+488>>2]|0)+34>>1]|0;b[(c[(c[l>>2]|0)+488>>2]|0)+34>>1]=0;c[(c[(c[l>>2]|0)+488>>2]|0)+4>>2]=0}c[(c[k>>2]|0)+12>>2]=1}else{m=c[h>>2]|0;f=(c[p>>2]|0)!=0?19255:0;c[o>>2]=c[p>>2];hg(m,1,f,o);Sf(c[h>>2]|0,c[p>>2]|0);c[n>>2]=1}a[(c[l>>2]|0)+454>>0]=0;if(c[(c[l>>2]|0)+8>>2]|0)Qg(c[(c[l>>2]|0)+8>>2]|0)|0;Qf(c[h>>2]|0,c[(c[l>>2]|0)+488>>2]|0);Lh(c[l>>2]|0);Sf(c[h>>2]|0,c[l>>2]|0)}c[n>>2]=Rg(c[h>>2]|0,c[n>>2]|0)|0;c[g>>2]=c[n>>2];p=c[g>>2]|0;i=q;return p|0}jg(c[h>>2]|0,21);c[g>>2]=Kf(119136)|0;p=c[g>>2]|0;i=q;return p|0}function gf(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[19523+((d[(c[b>>2]|0)+70>>0]|0)-1)>>0]|0|0}function hf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+28|0;l=k+24|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[l>>2]=d;c[j>>2]=0;c[g>>2]=e;do if((c[l>>2]|0)==1){c[h>>2]=c[(c[f>>2]|0)+328>>2];if(c[h>>2]|0){e=(c[g>>2]|0)+(4-1)&~(4-1);l=c[e>>2]|0;c[g>>2]=e+4;a[(c[c[h>>2]>>2]|0)+16>>0]=l;break}else{c[j>>2]=Kf(119587)|0;break}}else c[j>>2]=Kf(119595)|0;while(0);if(!(c[j>>2]|0)){l=c[j>>2]|0;i=k;return l|0}jg(c[f>>2]|0,c[j>>2]|0);l=c[j>>2]|0;i=k;return l|0}function jf(){return 18462}function kf(){return 19541}function lf(){return 3011e3}function mf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+48|0;h=k+44|0;d=k+40|0;e=k+24|0;j=k+16|0;g=k+8|0;f=k;c[d>>2]=a;c[j>>2]=0;if(c[59]|0){c[h>>2]=Kf(133154)|0;j=c[h>>2]|0;i=k;return j|0}c[e>>2]=b;do switch(c[d>>2]|0){case 4:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[11]=c[b>>2];c[12]=c[b+4>>2];c[13]=c[b+8>>2];c[14]=c[b+12>>2];c[15]=c[b+16>>2];c[16]=c[b+20>>2];c[17]=c[b+24>>2];c[18]=c[b+28>>2];break}case 5:{if(!(c[11]|0))Xh();g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[b>>2]=c[11];c[b+4>>2]=c[12];c[b+8>>2]=c[13];c[b+12>>2]=c[14];c[b+16>>2]=c[15];c[b+20>>2]=c[16];c[b+24>>2]=c[17];c[b+28>>2]=c[18];break}case 9:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[2]=b;break}case 6:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[50]=b;b=(c[e>>2]|0)+(4-1)&~(4-1);g=c[b>>2]|0;c[e>>2]=b+4;c[51]=g;g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[52]=b;break}case 7:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[53]=b;b=(c[e>>2]|0)+(4-1)&~(4-1);g=c[b>>2]|0;c[e>>2]=b+4;c[54]=g;g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[55]=b;break}case 24:{g=(Yh()|0)+(Zh()|0)+(_h()|0)|0;a=(c[e>>2]|0)+(4-1)&~(4-1);b=c[a>>2]|0;c[e>>2]=a+4;c[b>>2]=g;break}case 14:break;case 15:{c[j>>2]=1;break}case 18:{d=(c[e>>2]|0)+(4-1)&~(4-1);f=c[d>>2]|0;c[e>>2]=d+4;d=112;e=f;f=d+52|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));break}case 19:{if(!(c[30]|0))$h();f=(c[e>>2]|0)+(4-1)&~(4-1);d=c[f>>2]|0;c[e>>2]=f+4;e=112;f=d+52|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));break}case 13:{b=(c[e>>2]|0)+(4-1)&~(4-1);g=c[b>>2]|0;c[e>>2]=b+4;c[9]=g;g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[10]=b;break}case 16:{b=(c[e>>2]|0)+(4-1)&~(4-1);g=c[b>>2]|0;c[e>>2]=b+4;c[66]=g;g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[67]=b;break}case 17:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[5]=b;break}case 20:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[6]=b;break}case 22:{b=(c[e>>2]|0)+(8-1)&~(8-1);a=b;d=c[a>>2]|0;a=c[a+4>>2]|0;c[e>>2]=b+8;b=g;c[b>>2]=d;c[b+4>>2]=a;b=(c[e>>2]|0)+(8-1)&~(8-1); -a=b;d=c[a>>2]|0;a=c[a+4>>2]|0;c[e>>2]=b+8;e=f;c[e>>2]=d;c[e+4>>2]=a;e=f;b=c[e+4>>2]|0;e=(c[f+4>>2]|0)<0|((b|0)>0|(b|0)==0&(c[e>>2]|0)>>>0>0);b=f;c[b>>2]=e?0:d;c[b+4>>2]=e?0:a;if((c[g+4>>2]|0)<0){b=g;c[b>>2]=0;c[b+4>>2]=0}a=g;d=c[a+4>>2]|0;b=f;e=c[b+4>>2]|0;if((d|0)>(e|0)|((d|0)==(e|0)?(c[a>>2]|0)>>>0>(c[b>>2]|0)>>>0:0)){e=f;a=c[e+4>>2]|0;b=g;c[b>>2]=c[e>>2];c[b+4>>2]=a}b=c[f+4>>2]|0;a=192;c[a>>2]=c[f>>2];c[a+4>>2]=b;a=g;g=c[a+4>>2]|0;b=184;c[b>>2]=c[a>>2];c[b+4>>2]=g;break}case 25:{g=(c[e>>2]|0)+(4-1)&~(4-1);b=c[g>>2]|0;c[e>>2]=g+4;c[58]=b;break}default:c[j>>2]=1}while(0);c[h>>2]=c[j>>2];j=c[h>>2]|0;i=k;return j|0}function nf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;d=g+8|0;e=g+4|0;f=g;c[b>>2]=a;Nf(c[b>>2]|0);c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[e>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)+4>>2];if(c[e>>2]|0){c[f>>2]=Of(c[e>>2]|0)|0;ai(c[f>>2]|0)}c[d>>2]=(c[d>>2]|0)+1}i=g;return 0}function of(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+32|0;C=c[a+4>>2]|0;i=b;return c[a>>2]|0}function pf(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+80>>2]|0}function qf(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+84>>2]|0}function rf(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=di(c[d>>2]|0,0)|0;i=b;return a|0}function sf(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=di(c[d>>2]|0,1)|0;i=b;return a|0}function tf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=d;c[(c[f>>2]|0)+448>>2]=c[h>>2];c[(c[f>>2]|0)+448+4>>2]=c[g>>2];c[(c[f>>2]|0)+448+8>>2]=0;c[(c[f>>2]|0)+496>>2]=0;i=e;return 0}function uf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;a=c[d>>2]|0;if((c[e>>2]|0)>0){tf(a,178,c[d>>2]|0)|0;c[(c[d>>2]|0)+496>>2]=c[e>>2];i=f;return 0}else{tf(a,0,0)|0;i=f;return 0}return 0}function vf(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;k=i;i=i+32|0;s=k+28|0;r=k+24|0;q=k+20|0;p=k+16|0;o=k+12|0;n=k+8|0;m=k+4|0;l=k;c[s>>2]=a;c[r>>2]=b;c[q>>2]=d;c[p>>2]=e;c[o>>2]=f;c[n>>2]=g;c[m>>2]=h;c[l>>2]=j;b=wf(c[s>>2]|0,c[r>>2]|0,c[q>>2]|0,c[p>>2]|0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,0)|0;i=k;return b|0}function wf(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+48|0;l=x+40|0;m=x+36|0;n=x+32|0;o=x+28|0;p=x+24|0;q=x+20|0;r=x+16|0;s=x+12|0;t=x+8|0;v=x+4|0;u=x;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[v>>2]=1;c[u>>2]=0;do if(c[t>>2]|0){c[u>>2]=ph(c[l>>2]|0,12,0)|0;a=c[t>>2]|0;if(c[u>>2]|0){c[(c[u>>2]|0)+4>>2]=a;c[(c[u>>2]|0)+8>>2]=c[p>>2];w=5;break}else{Qb[a&255](c[p>>2]|0);break}}else w=5;while(0);if(((w|0)==5?(c[v>>2]=fi(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[u>>2]|0)|0,(c[u>>2]|0)!=0):0)?(c[c[u>>2]>>2]|0)==0:0){Qb[c[t>>2]&255](c[p>>2]|0);Sf(c[l>>2]|0,c[u>>2]|0)}c[v>>2]=Rg(c[l>>2]|0,c[v>>2]|0)|0;i=x;return c[v>>2]|0}function xf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+16|0;f=j+12|0;g=j+8|0;k=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[k>>2]=If(c[f>>2]|0)|0;c[h>>2]=0;if(!(gi(c[e>>2]|0,c[f>>2]|0,c[k>>2]|0,c[g>>2]|0,1,0)|0))c[h>>2]=fi(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,1,0,224,0,0,0)|0;c[h>>2]=Rg(c[e>>2]|0,c[h>>2]|0)|0;i=j;return c[h>>2]|0}function yf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=a;c[d>>2]=b;a=c[f>>2]|0;if((c[d>>2]|0)>0){zf(a,139,c[d>>2]|0)|0;i=e;return 0}else{zf(a,0,0)|0;i=e;return 0}return 0}function zf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;j=f+8|0;h=f+4|0;e=f;c[g>>2]=a;c[j>>2]=b;c[h>>2]=d;c[e>>2]=c[(c[g>>2]|0)+220>>2];c[(c[g>>2]|0)+216>>2]=c[j>>2];c[(c[g>>2]|0)+220>>2]=c[h>>2];i=f;return c[e>>2]|0}function Af(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r;h=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;n=r+12|0;p=r+8|0;o=r+4|0;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=10;if(c[m>>2]|0)c[c[m>>2]>>2]=-1;if(c[n>>2]|0)c[c[n>>2]>>2]=-1;if((c[l>>2]|0)<0|(c[l>>2]|0)>3){c[h>>2]=21;d=c[h>>2]|0;i=r;return d|0}if((c[k>>2]|0)!=0?(a[c[k>>2]>>0]|0)!=0:0)c[o>>2]=ji(c[j>>2]|0,c[k>>2]|0)|0;if((c[o>>2]|0)<0){c[p>>2]=1;d=c[j>>2]|0;c[q>>2]=c[k>>2];hg(d,1,19602,q)}else{c[(c[j>>2]|0)+448+8>>2]=0;c[p>>2]=ki(c[j>>2]|0,c[o>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;jg(c[j>>2]|0,c[p>>2]|0)}c[p>>2]=Rg(c[j>>2]|0,c[p>>2]|0)|0;c[h>>2]=c[p>>2];d=c[h>>2]|0;i=r;return d|0}function Bf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=Af(c[f>>2]|0,c[e>>2]|0,0,0,0)|0;i=d;return b|0}function Cf(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[e>>2]=a;if((c[e>>2]|0)!=0?(Sh(c[e>>2]|0)|0)==0:0){c[b>>2]=Kf(135016)|0;a=c[b>>2]|0;i=f;return a|0}if((c[e>>2]|0)!=0?(d[(c[e>>2]|0)+65>>0]|0|0)==0:0){c[b>>2]=c[(c[e>>2]|0)+52>>2]&c[(c[e>>2]|0)+56>>2];a=c[b>>2]|0;i=f;return a|0}c[b>>2]=7;a=c[b>>2]|0;i=f;return a|0}function Df(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if((c[g>>2]|0)<0|(c[g>>2]|0)>=12){c[e>>2]=-1;j=c[e>>2]|0;i=k;return j|0}c[j>>2]=c[(c[f>>2]|0)+88+(c[g>>2]<<2)>>2];if((c[h>>2]|0)>=0){if((c[h>>2]|0)>(c[1536+(c[g>>2]<<2)>>2]|0))c[h>>2]=c[1536+(c[g>>2]<<2)>>2];c[(c[f>>2]|0)+88+(c[g>>2]<<2)>>2]=c[h>>2]}c[e>>2]=c[j>>2];j=c[e>>2]|0;i=k;return j|0}function Ef(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=mi(c[f>>2]|0,c[e>>2]|0,6,0)|0;i=d;return a|0}function Ff(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;o=m+28|0;n=m+24|0;f=m+20|0;g=m+16|0;l=m+12|0;j=m+8|0;k=m+4|0;h=m;c[o>>2]=a;c[n>>2]=b;c[f>>2]=d;c[g>>2]=e;c[l>>2]=1;c[j>>2]=si(c[o>>2]|0,c[n>>2]|0)|0;if(!(c[j>>2]|0)){o=c[l>>2]|0;i=m;return o|0}kg(c[j>>2]|0);c[k>>2]=Of(c[j>>2]|0)|0;c[h>>2]=Bg(c[k>>2]|0)|0;if((c[f>>2]|0)==7){c[c[g>>2]>>2]=c[h>>2];c[l>>2]=0;o=c[l>>2]|0;i=m;return o|0}if((c[f>>2]|0)==27){o=ti(c[k>>2]|0)|0;c[c[g>>2]>>2]=o;c[l>>2]=0;o=c[l>>2]|0;i=m;return o|0}if((c[f>>2]|0)==28){o=ui(c[k>>2]|0)|0;c[c[g>>2]>>2]=o;c[l>>2]=0;o=c[l>>2]|0;i=m;return o|0}if(c[c[h>>2]>>2]|0){c[l>>2]=vi(c[h>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;o=c[l>>2]|0;i=m;return o|0}else{c[l>>2]=12;o=c[l>>2]|0;i=m;return o|0}return 0}function Gf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+12|0;e=j+8|0;f=j+4|0;g=j;c[e>>2]=b;c[f>>2]=d;if((c[e>>2]|0)==0|(c[f>>2]|0)==0){c[h>>2]=0;h=c[h>>2]|0;i=j;return h|0}d=(If(c[e>>2]|0)|0)+1|0;c[e>>2]=(c[e>>2]|0)+d;while(1){if(!(a[c[e>>2]>>0]|0)){b=8;break}c[g>>2]=yQ(c[e>>2]|0,c[f>>2]|0)|0;d=(If(c[e>>2]|0)|0)+1|0;c[e>>2]=(c[e>>2]|0)+d;d=c[e>>2]|0;if(!(c[g>>2]|0)){b=6;break}d=(If(d)|0)+1|0;c[e>>2]=(c[e>>2]|0)+d}if((b|0)==6){c[h>>2]=d;h=c[h>>2]|0;i=j;return h|0}else if((b|0)==8){c[h>>2]=0;h=c[h>>2]|0;i=j;return h|0}return 0}function Hf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;j=g+12|0;h=g+8|0;e=g+4|0;f=g;c[j>>2]=a;c[h>>2]=b;c[e>>2]=d;c[f>>2]=Gf(c[j>>2]|0,c[h>>2]|0)|0;c[e>>2]=(c[e>>2]|0)!=0&1;if(c[f>>2]|0){j=(Bi(c[f>>2]|0,c[e>>2]&255)|0)&255;i=g;return j|0}else{j=c[e>>2]|0;i=g;return j|0}return 0}function If(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if(!(c[d>>2]|0))c[b>>2]=0;else c[b>>2]=1073741823&(BQ(c[d>>2]|0)|0);i=e;return c[b>>2]|0}function Jf(b){b=b|0;var c=0,e=0;e=i;i=i+16|0;c=e;a[c>>0]=b;i=e;return((d[19267+(d[c>>0]|0)>>0]|0)&70|0)!=0|0}function Kf(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+8|0;c[e>>2]=a;e=c[e>>2]|0;a=(kf()|0)+20|0;c[d>>2]=e;c[d+4>>2]=a;Rd(21,47042,d);i=b;return 21}function Lf(){return c[417]|0}function Mf(){return c[70]|0}function Nf(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[e>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)+4>>2];if(c[e>>2]|0)c[(c[(c[e>>2]|0)+4>>2]|0)+4>>2]=c[c[e>>2]>>2];c[d>>2]=(c[d>>2]|0)+1}i=f;return}function Of(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[(c[b>>2]|0)+4>>2]>>2]|0}function Pf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=f;return}bv(c[d>>2]|0,c[(c[e>>2]|0)+28>>2]|0);Sf(c[d>>2]|0,c[c[e>>2]>>2]|0);Sf(c[d>>2]|0,c[(c[e>>2]|0)+4>>2]|0);Zu(c[d>>2]|0,c[(c[e>>2]|0)+12>>2]|0);_u(c[d>>2]|0,c[(c[e>>2]|0)+16>>2]|0);Sf(c[d>>2]|0,c[e>>2]|0);i=f;return}function Qf(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;j=l;c[e>>2]=a;c[f>>2]=d;if(!(c[f>>2]|0)){i=l;return}if(!((c[e>>2]|0)!=0?(c[(c[e>>2]|0)+528>>2]|0)!=0:0))k=4;if((k|0)==4?(d=(c[f>>2]|0)+36|0,k=(b[d>>1]|0)+-1<<16>>16,b[d>>1]=k,(k&65535|0)>0):0){i=l;return}c[g>>2]=c[(c[f>>2]|0)+8>>2];while(1){if(!(c[g>>2]|0))break;c[h>>2]=c[(c[g>>2]|0)+20>>2];if(!((c[e>>2]|0)!=0?(c[(c[e>>2]|0)+528>>2]|0)!=0:0)){c[j>>2]=c[c[g>>2]>>2];Oj((c[(c[g>>2]|0)+24>>2]|0)+24|0,c[j>>2]|0,0)|0}WG(c[e>>2]|0,c[g>>2]|0);c[g>>2]=c[h>>2]}LP(c[e>>2]|0,c[f>>2]|0);RG(c[e>>2]|0,c[f>>2]|0);Sf(c[e>>2]|0,c[c[f>>2]>>2]|0);Sf(c[e>>2]|0,c[(c[f>>2]|0)+20>>2]|0);Wu(c[e>>2]|0,c[(c[f>>2]|0)+12>>2]|0);Vu(c[e>>2]|0,c[(c[f>>2]|0)+24>>2]|0);CH(c[e>>2]|0,c[f>>2]|0);Sf(c[e>>2]|0,c[f>>2]|0);i=l;return}function Rf(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;h=l+16|0;j=l+12|0;g=l+8|0;f=l+4|0;k=l;c[h>>2]=a;c[j>>2]=d;oC(c[(c[j>>2]|0)+60>>2]|0,b[(c[j>>2]|0)+68>>1]|0);oC(c[(c[j>>2]|0)+16>>2]|0,e[(c[j>>2]|0)+84>>1]<<1);c[g>>2]=c[(c[j>>2]|0)+192>>2];while(1){if(!(c[g>>2]|0))break;c[f>>2]=c[(c[g>>2]|0)+24>>2];KP(c[h>>2]|0,c[c[g>>2]>>2]|0,c[(c[g>>2]|0)+4>>2]|0);Sf(c[h>>2]|0,c[g>>2]|0);c[g>>2]=c[f>>2]}c[k>>2]=(b[(c[j>>2]|0)+70>>1]|0)-1;while(1){a=c[h>>2]|0;if((c[k>>2]|0)<0)break;Sf(a,c[(c[(c[j>>2]|0)+64>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+-1}Sf(a,c[(c[j>>2]|0)+64>>2]|0);KP(c[h>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+32>>2]|0);Sf(c[h>>2]|0,c[(c[j>>2]|0)+16>>2]|0);Sf(c[h>>2]|0,c[(c[j>>2]|0)+168>>2]|0);Sf(c[h>>2]|0,c[(c[j>>2]|0)+172>>2]|0);i=l;return}function Sf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=g;return}if(c[d>>2]|0){a=c[d>>2]|0;b=c[e>>2]|0;if(c[(c[d>>2]|0)+528>>2]|0){JP(a,b);i=g;return}if(au(a,b)|0){c[f>>2]=c[e>>2];c[c[f>>2]>>2]=c[(c[d>>2]|0)+248+28>>2];c[(c[d>>2]|0)+248+28>>2]=c[f>>2];f=(c[d>>2]|0)+248+8|0;c[f>>2]=(c[f>>2]|0)+-1;i=g;return}}Kd(c[e>>2]|0);i=g;return}function Tf(){var a=0,b=0,d=0,e=0,f=0,g=0;g=i;i=i+32|0;e=g+16|0;a=g+12|0;b=g+8|0;f=g+4|0;d=g;if(!(c[11]|0))Xh();c[70]=0;c[71]=0;c[72]=0;c[73]=0;c[74]=0;c[75]=0;c[76]=0;c[77]=0;c[70]=8;if((c[50]|0)!=0&(c[51]|0)>=100&(c[52]|0)>0){c[f>>2]=c[51]&-8;c[51]=c[f>>2];c[d>>2]=c[50];c[b>>2]=c[52];c[75]=c[d>>2];c[76]=c[b>>2];c[a>>2]=0;while(1){if((c[a>>2]|0)>=((c[b>>2]|0)-1|0))break;c[c[d>>2]>>2]=(c[d>>2]|0)+(c[f>>2]|0);c[d>>2]=c[c[d>>2]>>2];c[a>>2]=(c[a>>2]|0)+1}c[c[d>>2]>>2]=0;c[74]=(c[d>>2]|0)+4}else{c[74]=0;c[50]=0;c[51]=0;c[52]=0}if((c[53]|0)==0|(c[54]|0)<512|(c[55]|0)<=0){c[53]=0;c[54]=0}c[e>>2]=Tb[c[64>>2]&255](c[18]|0)|0;if(!(c[e>>2]|0)){f=c[e>>2]|0;i=g;return f|0}c[70]=0;c[71]=0;c[72]=0;c[73]=0;c[74]=0;c[75]=0;c[76]=0;c[77]=0;f=c[e>>2]|0;i=g;return f|0}function Uf(){var a=0,b=0,d=0,e=0;e=i;i=i+16|0;b=e+8|0;d=e+4|0;a=e;c[d>>2]=1080;c[a>>2]=7788;c[b>>2]=0;while(1){if((c[b>>2]|0)>=57)break;Yt(c[d>>2]|0,(c[a>>2]|0)+(c[b>>2]<<5)|0);c[b>>2]=(c[b>>2]|0)+1}tO();uO();i=e;return}function Vf(){if(!(c[30]|0))$h();return Tb[c[120>>2]&255](c[29]|0)|0}function Wf(){var a=0,b=0,d=0;d=i;i=i+16|0;a=d+4|0;b=d;c[b>>2]=Id(10)|0;if(!(c[b>>2]|0)){c[a>>2]=7;b=c[a>>2]|0;i=d;return b|0}else{Kd(c[b>>2]|0);c[a>>2]=Ud()|0;b=c[a>>2]|0;i=d;return b|0}return 0}function Xf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(!(c[409]|0)){i=j;return}if(!(c[e>>2]|0)){c[g>>2]=0;c[f>>2]=0}c[f>>2]=c[f>>2]&-8;c[412]=c[f>>2];b=c[g>>2]|0;c[419]=b;c[413]=b;if((c[g>>2]|0)>90)d=10;else d=((c[g>>2]|0)/10|0)+1|0;c[414]=d;c[415]=c[e>>2];c[418]=0;c[420]=0;while(1){b=c[g>>2]|0;c[g>>2]=b+-1;d=c[e>>2]|0;if(!b)break;c[h>>2]=d;c[c[h>>2]>>2]=c[418];c[418]=c[h>>2];c[e>>2]=(c[e>>2]|0)+(c[f>>2]|0)}c[416]=d;i=j;return}function Yf(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;if(!(c[d>>2]|0)){i=f;return}if((c[269]|0)==(c[d>>2]|0)){c[269]=c[(c[d>>2]|0)+12>>2];i=f;return}if(!(c[269]|0)){i=f;return}c[e>>2]=c[269];while(1){if(c[(c[e>>2]|0)+12>>2]|0)b=(c[(c[e>>2]|0)+12>>2]|0)!=(c[d>>2]|0);else b=0;a=c[(c[e>>2]|0)+12>>2]|0;if(!b)break;c[e>>2]=a}if((a|0)!=(c[d>>2]|0)){i=f;return}c[(c[e>>2]|0)+12>>2]=c[(c[d>>2]|0)+12>>2];i=f;return}function Zf(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;C=0;i=d;return c[996+(c[b>>2]<<2)>>2]|0}function _f(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f;e=f+8|0;g=d;c[g>>2]=a;c[g+4>>2]=b;g=d;b=d;a=c[b+4>>2]|0;if((c[g>>2]|0)==0&(c[g+4>>2]|0)==0|(a>>>0>0|(a|0)==0&(c[b>>2]|0)>>>0>=2147483392)){c[e>>2]=0;g=c[e>>2]|0;i=f;return g|0}if(c[2]|0){sO(c[d>>2]|0,e)|0;g=c[e>>2]|0;i=f;return g|0}else{c[e>>2]=Tb[c[44>>2]&255](c[d>>2]|0)|0;g=c[e>>2]|0;i=f;return g|0}return 0}function $f(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Tb[c[56>>2]&255](c[d>>2]|0)|0;i=b;return a|0}function ag(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=996+(c[f>>2]<<2)|0;c[a>>2]=(c[a>>2]|0)-(c[e>>2]|0);i=d;return}function bg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;e=m+28|0;f=m+24|0;g=m;k=m+20|0;j=m+16|0;h=m+12|0;l=m+8|0;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=g;b=c[d>>2]|0;d=c[d+4>>2]|0;if(!(c[f>>2]|0)){c[e>>2]=_f(b,d)|0;l=c[e>>2]|0;i=m;return l|0}if((b|0)==0&(d|0)==0){Kd(c[f>>2]|0);c[e>>2]=0;l=c[e>>2]|0;i=m;return l|0}a=g;d=c[a+4>>2]|0;if(d>>>0>0|(d|0)==0&(c[a>>2]|0)>>>0>=2147483392){c[e>>2]=0;l=c[e>>2]|0;i=m;return l|0}c[k>>2]=$f(c[f>>2]|0)|0;c[j>>2]=Tb[c[60>>2]&255](c[g>>2]|0)|0;do if((c[k>>2]|0)!=(c[j>>2]|0)){if(!(c[2]|0)){c[l>>2]=Yb[c[52>>2]&255](c[f>>2]|0,c[j>>2]|0)|0;break}Mi(5,c[g>>2]|0);c[h>>2]=(c[j>>2]|0)-(c[k>>2]|0);d=Zf(0)|0;n=C;b=288;a=c[h>>2]|0;a=fR(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;b=C;if((n|0)>(b|0)|(n|0)==(b|0)&d>>>0>=a>>>0)rO(c[h>>2]|0);c[l>>2]=Yb[c[52>>2]&255](c[f>>2]|0,c[j>>2]|0)|0;n=288;h=c[n+4>>2]|0;if((c[l>>2]|0)==0&((h|0)>0|(h|0)==0&(c[n>>2]|0)>>>0>0)){rO(c[g>>2]|0);c[l>>2]=Yb[c[52>>2]&255](c[f>>2]|0,c[j>>2]|0)|0}if(c[l>>2]|0){c[j>>2]=$f(c[l>>2]|0)|0;Ni(0,(c[j>>2]|0)-(c[k>>2]|0)|0)}}else c[l>>2]=c[f>>2];while(0);c[e>>2]=c[l>>2];n=c[e>>2]|0;i=m;return n|0}function cg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;j=h+16|0;m=h+12|0;n=h+8|0;l=h+4|0;k=h;c[j>>2]=b;c[m>>2]=d;c[n>>2]=e;c[l>>2]=f;c[k>>2]=g;e=c[n>>2]|0;c[(c[j>>2]|0)+4>>2]=e;c[(c[j>>2]|0)+8>>2]=e;c[c[j>>2]>>2]=c[m>>2];c[(c[j>>2]|0)+12>>2]=0;c[(c[j>>2]|0)+16>>2]=c[l>>2];c[(c[j>>2]|0)+20>>2]=c[k>>2];a[(c[j>>2]|0)+24>>0]=0;a[(c[j>>2]|0)+25>>0]=0;i=h;return}function dg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0;ra=i;i=i+272|0;j=ra+176|0;k=ra+172|0;l=ra+168|0;q=ra+164|0;p=ra+160|0;aa=ra+156|0;Q=ra+152|0;K=ra+148|0;ja=ra+144|0;B=ra+268|0;F=ra+267|0;z=ra+266|0;x=ra+265|0;y=ra+264|0;H=ra+263|0;D=ra+262|0;E=ra+261|0;t=ra+260|0;na=ra+259|0;m=ra+258|0;ha=ra+257|0;ba=ra+256|0;R=ra+32|0;ea=ra+24|0;L=ra+140|0;pa=ra+136|0;T=ra+132|0;oa=ra+128|0;w=ra+124|0;u=ra+120|0;W=ra+116|0;fa=ra+16|0;A=ra+255|0;G=ra+254|0;X=ra+112|0;o=ra+184|0;ka=ra+108|0;ca=ra+104|0;ia=ra+8|0;la=ra+100|0;s=ra+96|0;n=ra+183|0;$=ra+92|0;ma=ra+182|0;ga=ra;I=ra+88|0;U=ra+84|0;J=ra+80|0;N=ra+76|0;O=ra+72|0;S=ra+68|0;M=ra+64|0;V=ra+60|0;r=ra+181|0;da=ra+180|0;v=ra+56|0;_=ra+52|0;Z=ra+48|0;P=ra+44|0;Y=ra+40|0;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;a[na>>0]=0;c[oa>>2]=0;c[X>>2]=0;c[p>>2]=0;if(a[(c[j>>2]|0)+25>>0]|0){b=d[(c[j>>2]|0)+25>>0]&2;a[m>>0]=b;if(b&255){e=c[l>>2]|0;f=(c[e>>2]|0)+(4-1)&~(4-1);b=c[f>>2]|0;c[e>>2]=f+4;c[X>>2]=b}a[ha>>0]=d[(c[j>>2]|0)+25>>0]&1}else{a[ha>>0]=0;a[m>>0]=0}a:while(1){b=a[c[k>>2]>>0]|0;c[q>>2]=b;if(!b){qa=268;break}if((c[q>>2]|0)!=37){c[p>>2]=c[k>>2];do{c[k>>2]=(c[k>>2]|0)+1;if(!(a[c[k>>2]>>0]|0))break}while((a[c[k>>2]>>0]|0)!=37);aA(c[j>>2]|0,c[p>>2]|0,(c[k>>2]|0)-(c[p>>2]|0)|0);if(!(a[c[k>>2]>>0]|0)){qa=268;break}}b=(c[k>>2]|0)+1|0;c[k>>2]=b;b=a[b>>0]|0;c[q>>2]=b;if(!b){qa=13;break}a[H>>0]=0;a[y>>0]=0;a[x>>0]=0;a[z>>0]=0;a[F>>0]=0;a[B>>0]=0;a[t>>0]=0;do{switch(c[q>>2]|0){case 45:{a[B>>0]=1;break}case 43:{a[F>>0]=1;break}case 32:{a[z>>0]=1;break}case 35:{a[x>>0]=1;break}case 33:{a[y>>0]=1;break}case 48:{a[H>>0]=1;break}default:a[t>>0]=1}if(a[t>>0]|0)break;b=(c[k>>2]|0)+1|0;c[k>>2]=b;b=a[b>>0]|0;c[q>>2]=b}while((b|0)!=0);if((c[q>>2]|0)==42){if(a[m>>0]|0){b=mO(c[X>>2]|0)|0;c[ja>>2]=b}else{e=c[l>>2]|0;f=(c[e>>2]|0)+(4-1)&~(4-1);b=c[f>>2]|0;c[e>>2]=f+4;c[ja>>2]=b}if((c[ja>>2]|0)<0){a[B>>0]=1;c[ja>>2]=(c[ja>>2]|0)>=-2147483647?0-(c[ja>>2]|0)|0:0}b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0]}else{c[ka>>2]=0;while(1){f=c[ka>>2]|0;if(!((c[q>>2]|0)>=48?(c[q>>2]|0)<=57:0))break;c[ka>>2]=(f*10|0)+(c[q>>2]|0)-48;b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0]}c[ja>>2]=f&2147483647}do if((c[q>>2]|0)==46){b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0];if((c[q>>2]|0)!=42){c[ca>>2]=0;while(1){f=c[ca>>2]|0;if(!((c[q>>2]|0)>=48?(c[q>>2]|0)<=57:0))break;c[ca>>2]=(f*10|0)+(c[q>>2]|0)-48;b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0]}c[aa>>2]=f&2147483647;break}if(a[m>>0]|0){b=mO(c[X>>2]|0)|0;c[aa>>2]=b}else{e=c[l>>2]|0;f=(c[e>>2]|0)+(4-1)&~(4-1);b=c[f>>2]|0;c[e>>2]=f+4;c[aa>>2]=b}b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0];if((c[aa>>2]|0)<0)c[aa>>2]=(c[aa>>2]|0)>=-2147483647?0-(c[aa>>2]|0)|0:-1}else c[aa>>2]=-1;while(0);do if((c[q>>2]|0)==108){a[D>>0]=1;b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0];if((c[q>>2]|0)==108){a[E>>0]=1;b=(c[k>>2]|0)+1|0;c[k>>2]=b;c[q>>2]=a[b>>0];break}else{a[E>>0]=0;break}}else{a[E>>0]=0;a[D>>0]=0}while(0);c[L>>2]=46051;a[na>>0]=0;c[K>>2]=0;while(1){if((c[K>>2]|0)>=23)break;f=c[K>>2]|0;if((c[q>>2]|0)==(a[46051+((c[K>>2]|0)*6|0)>>0]|0)){qa=56;break}c[K>>2]=f+1}if((qa|0)==56){qa=0;c[L>>2]=46051+(f*6|0);if((d[ha>>0]|0)==0?(d[(c[L>>2]|0)+2>>0]&2|0)!=0:0){qa=268;break}a[na>>0]=a[(c[L>>2]|0)+3>>0]|0}b:do switch(d[na>>0]|0){case 14:{a[E>>0]=0;a[D>>0]=1;qa=62;break}case 1:case 16:{qa=62;break}case 4:case 3:case 2:{if(a[m>>0]|0)h[ea>>3]=+nO(c[X>>2]|0);else{b=c[l>>2]|0;e=(c[b>>2]|0)+(8-1)&~(8-1);g=+h[e>>3];c[b>>2]=e+8;h[ea>>3]=g}if((c[aa>>2]|0)<0)c[aa>>2]=6;do if(!(+h[ea>>3]<0.0)){if(a[F>>0]|0){a[ba>>0]=43;break}if(a[z>>0]|0){a[ba>>0]=32;break}else{a[ba>>0]=0;break}}else{h[ea>>3]=-+h[ea>>3];a[ba>>0]=45}while(0);if((d[na>>0]|0)==4&(c[aa>>2]|0)>0)c[aa>>2]=(c[aa>>2]|0)+-1;c[K>>2]=c[aa>>2]&4095;h[fa>>3]=.5;while(1){if((c[K>>2]|0)<=0)break;c[K>>2]=(c[K>>2]|0)+-1;h[fa>>3]=+h[fa>>3]*.1}if((d[na>>0]|0)==2)h[ea>>3]=+h[ea>>3]+ +h[fa>>3];c[w>>2]=0;if(HF(+h[ea>>3])|0){c[p>>2]=46238;c[Q>>2]=3;break b}if(+h[ea>>3]>0.0){h[ga>>3]=1.0;while(1){if(!(+h[ea>>3]>=+h[ga>>3]*1.e+100?(c[w>>2]|0)<=350:0))break;h[ga>>3]=+h[ga>>3]*1.e+100;c[w>>2]=(c[w>>2]|0)+100}while(1){if(!(+h[ea>>3]>=+h[ga>>3]*1.0e10?(c[w>>2]|0)<=350:0))break;h[ga>>3]=+h[ga>>3]*1.0e10;c[w>>2]=(c[w>>2]|0)+10}while(1){g=+h[ga>>3];if(!(+h[ea>>3]>=+h[ga>>3]*10.0?(c[w>>2]|0)<=350:0))break;h[ga>>3]=g*10.0;c[w>>2]=(c[w>>2]|0)+1}h[ea>>3]=+h[ea>>3]/g;while(1){if(!(+h[ea>>3]<1.0e-08))break;h[ea>>3]=+h[ea>>3]*1.0e8;c[w>>2]=(c[w>>2]|0)-8}while(1){if(!(+h[ea>>3]<1.0))break;h[ea>>3]=+h[ea>>3]*10.0;c[w>>2]=(c[w>>2]|0)+-1}if((c[w>>2]|0)>350){c[p>>2]=o;a[o>>0]=a[ba>>0]|0;b=o+((a[ba>>0]|0)!=0&1)|0;a[b>>0]=a[46242]|0;a[b+1>>0]=a[46243]|0;a[b+2>>0]=a[46244]|0;a[b+3>>0]=a[46245]|0;c[Q>>2]=3+((a[ba>>0]|0)!=0&1);break b}}c[p>>2]=o;if((d[na>>0]|0)!=2?(h[ea>>3]=+h[ea>>3]+ +h[fa>>3],+h[ea>>3]>=10.0):0){h[ea>>3]=+h[ea>>3]*.1;c[w>>2]=(c[w>>2]|0)+1}c:do if((d[na>>0]|0)==4){a[G>>0]=((a[x>>0]|0)!=0^1)&1;do if((c[w>>2]|0)>=-4){if((c[w>>2]|0)>(c[aa>>2]|0))break;c[aa>>2]=(c[aa>>2]|0)-(c[w>>2]|0);a[na>>0]=2;break c}while(0);a[na>>0]=3}else a[G>>0]=a[y>>0]|0;while(0);if((d[na>>0]|0)==3)c[u>>2]=0;else c[u>>2]=c[w>>2];b=(c[u>>2]|0)>0?c[u>>2]|0:0;e=c[aa>>2]|0;e=gR(b|0,((b|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0;b=c[ja>>2]|0;b=gR(e|0,C|0,b|0,((b|0)<0)<<31>>31|0)|0;e=C;if((e|0)>0|(e|0)==0&b>>>0>55?(b=(c[u>>2]|0)>0?c[u>>2]|0:0,e=c[aa>>2]|0,e=gR(b|0,((b|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0,b=c[ja>>2]|0,b=gR(e|0,C|0,b|0,((b|0)<0)<<31>>31|0)|0,b=gR(b|0,C|0,15,0)|0,b=_f(b,C)|0,c[oa>>2]=b,c[p>>2]=b,(c[p>>2]|0)==0):0){qa=161;break a}c[pa>>2]=c[p>>2];c[W>>2]=16+((d[y>>0]|0)*10|0);a[A>>0]=((c[aa>>2]|0)>0?1:0)|d[x>>0]|d[y>>0];if(a[ba>>0]|0){e=a[ba>>0]|0;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=e}d:do if((c[u>>2]|0)<0){b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=48}else while(1){if((c[u>>2]|0)<0)break d;e=oO(ea,W)|0;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=e;c[u>>2]=(c[u>>2]|0)+-1}while(0);if(a[A>>0]|0){b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=46}c[u>>2]=(c[u>>2]|0)+1;while(1){if((c[u>>2]|0)>=0)break;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=48;c[aa>>2]=(c[aa>>2]|0)+-1;c[u>>2]=(c[u>>2]|0)+1}while(1){b=c[aa>>2]|0;c[aa>>2]=b+-1;if((b|0)<=0)break;e=oO(ea,W)|0;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=e}do if(d[G>>0]|0){if(!(d[A>>0]|0))break;while(1){f=(c[p>>2]|0)+-1|0;if((a[(c[p>>2]|0)+-1>>0]|0)!=48)break;c[p>>2]=f;a[f>>0]=0}if((a[f>>0]|0)!=46)break;f=c[p>>2]|0;if(a[y>>0]|0){c[p>>2]=f+1;a[f>>0]=48;break}else{b=f+-1|0;c[p>>2]=b;a[b>>0]=0;break}}while(0);if((d[na>>0]|0)==3){f=a[46198+(d[(c[L>>2]|0)+4>>0]|0)>>0]|0;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=f;b=(c[w>>2]|0)<0;f=c[p>>2]|0;c[p>>2]=f+1;if(b){a[f>>0]=45;c[w>>2]=0-(c[w>>2]|0)}else a[f>>0]=43;if((c[w>>2]|0)>=100){e=((c[w>>2]|0)/100|0)+48&255;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=e;c[w>>2]=(c[w>>2]|0)%100|0}b=((c[w>>2]|0)/10|0)+48&255;e=c[p>>2]|0;c[p>>2]=e+1;a[e>>0]=b;e=((c[w>>2]|0)%10|0)+48&255;b=c[p>>2]|0;c[p>>2]=b+1;a[b>>0]=e}a[c[p>>2]>>0]=0;c[Q>>2]=(c[p>>2]|0)-(c[pa>>2]|0);c[p>>2]=c[pa>>2];if((d[H>>0]|0)==0|(a[B>>0]|0)!=0)break b;if((c[Q>>2]|0)>=(c[ja>>2]|0))break b;c[U>>2]=(c[ja>>2]|0)-(c[Q>>2]|0);c[I>>2]=c[ja>>2];while(1){if((c[I>>2]|0)<(c[U>>2]|0))break;a[(c[p>>2]|0)+(c[I>>2]|0)>>0]=a[(c[p>>2]|0)+((c[I>>2]|0)-(c[U>>2]|0))>>0]|0;c[I>>2]=(c[I>>2]|0)+-1}c[I>>2]=(a[ba>>0]|0)!=0&1;while(1){b=c[U>>2]|0;c[U>>2]=b+-1;if(!b)break;b=c[I>>2]|0;c[I>>2]=b+1;a[(c[p>>2]|0)+b>>0]=48}c[Q>>2]=c[ja>>2];break}case 5:{if(!(a[m>>0]|0)){e=c[(c[j>>2]|0)+12>>2]|0;f=c[l>>2]|0;sa=(c[f>>2]|0)+(4-1)&~(4-1);b=c[sa>>2]|0;c[f>>2]=sa+4;c[b>>2]=e}c[ja>>2]=0;c[Q>>2]=0;break}case 8:{a[o>>0]=37;c[p>>2]=o;c[Q>>2]=1;break}case 9:{if(a[m>>0]|0){c[p>>2]=pO(c[X>>2]|0)|0;if(c[p>>2]|0)f=a[c[p>>2]>>0]|0;else f=0;c[q>>2]=f}else{b=c[l>>2]|0;e=(c[b>>2]|0)+(4-1)&~(4-1);sa=c[e>>2]|0;c[b>>2]=e+4;c[q>>2]=sa}if((c[aa>>2]|0)>1){c[ja>>2]=(c[ja>>2]|0)-((c[aa>>2]|0)-1);if(!((c[ja>>2]|0)<=1|(a[B>>0]|0)!=0)){qO(c[j>>2]|0,(c[ja>>2]|0)-1|0,32);c[ja>>2]=0}qO(c[j>>2]|0,(c[aa>>2]|0)-1|0,c[q>>2]&255)}c[Q>>2]=1;a[o>>0]=c[q>>2];c[p>>2]=o;break}case 7:case 6:{if(a[m>>0]|0){c[p>>2]=pO(c[X>>2]|0)|0;a[na>>0]=6}else{b=c[l>>2]|0;e=(c[b>>2]|0)+(4-1)&~(4-1);sa=c[e>>2]|0;c[b>>2]=e+4;c[p>>2]=sa}if(c[p>>2]|0){if((d[na>>0]|0)==7)c[oa>>2]=c[p>>2]}else c[p>>2]=19266;if((c[aa>>2]|0)<0){c[Q>>2]=If(c[p>>2]|0)|0;break b}c[Q>>2]=0;while(1){if((c[Q>>2]|0)>=(c[aa>>2]|0))break b;if(!(a[(c[p>>2]|0)+(c[Q>>2]|0)>>0]|0))break b;c[Q>>2]=(c[Q>>2]|0)+1}}case 15:case 11:case 10:{a[da>>0]=(d[na>>0]|0)==15?34:39;if(a[m>>0]|0)c[v>>2]=pO(c[X>>2]|0)|0;else{b=c[l>>2]|0;e=(c[b>>2]|0)+(4-1)&~(4-1);sa=c[e>>2]|0;c[b>>2]=e+4;c[v>>2]=sa}c[M>>2]=(c[v>>2]|0)==0&1;if(c[M>>2]|0)c[v>>2]=(d[na>>0]|0)==11?40498:46246;c[O>>2]=c[aa>>2];c[S>>2]=0;c[J>>2]=0;while(1){if(!(c[O>>2]|0))break;sa=a[(c[v>>2]|0)+(c[J>>2]|0)>>0]|0;a[r>>0]=sa;if(!(sa<<24>>24))break;if((a[r>>0]|0)==(a[da>>0]|0))c[S>>2]=(c[S>>2]|0)+1;c[J>>2]=(c[J>>2]|0)+1;c[O>>2]=(c[O>>2]|0)+-1}if(c[M>>2]|0)f=0;else f=(d[na>>0]|0)==11;c[V>>2]=f&1;c[S>>2]=(c[S>>2]|0)+((c[J>>2]|0)+3);if((c[S>>2]|0)>70){sa=c[S>>2]|0;sa=_f(sa,((sa|0)<0)<<31>>31)|0;c[oa>>2]=sa;c[p>>2]=sa;if(!(c[p>>2]|0)){qa=241;break a}}else c[p>>2]=o;c[N>>2]=0;if(c[V>>2]|0){b=a[da>>0]|0;sa=c[N>>2]|0;c[N>>2]=sa+1;a[(c[p>>2]|0)+sa>>0]=b}c[O>>2]=c[J>>2];c[J>>2]=0;while(1){if((c[J>>2]|0)>=(c[O>>2]|0))break;b=a[(c[v>>2]|0)+(c[J>>2]|0)>>0]|0;a[r>>0]=b;sa=c[N>>2]|0;c[N>>2]=sa+1;a[(c[p>>2]|0)+sa>>0]=b;if((a[r>>0]|0)==(a[da>>0]|0)){b=a[r>>0]|0;sa=c[N>>2]|0;c[N>>2]=sa+1;a[(c[p>>2]|0)+sa>>0]=b}c[J>>2]=(c[J>>2]|0)+1}if(c[V>>2]|0){b=a[da>>0]|0;sa=c[N>>2]|0;c[N>>2]=sa+1;a[(c[p>>2]|0)+sa>>0]=b}a[(c[p>>2]|0)+(c[N>>2]|0)>>0]=0;c[Q>>2]=c[N>>2];break}case 12:{b=c[l>>2]|0;e=(c[b>>2]|0)+(4-1)&~(4-1);sa=c[e>>2]|0;c[b>>2]=e+4;c[_>>2]=sa;if((c[_>>2]|0)!=0?(c[(c[_>>2]|0)+4>>2]|0)!=0:0)aA(c[j>>2]|0,c[c[_>>2]>>2]|0,c[(c[_>>2]|0)+4>>2]|0);c[ja>>2]=0;c[Q>>2]=0;break}case 13:{e=c[l>>2]|0;sa=(c[e>>2]|0)+(4-1)&~(4-1);b=c[sa>>2]|0;c[e>>2]=sa+4;c[Z>>2]=b;b=c[l>>2]|0;e=(c[b>>2]|0)+(4-1)&~(4-1);sa=c[e>>2]|0;c[b>>2]=e+4;c[P>>2]=sa;c[Y>>2]=(c[Z>>2]|0)+8+((c[P>>2]|0)*72|0);if(c[(c[Y>>2]|0)+4>>2]|0){AD(c[j>>2]|0,c[(c[Y>>2]|0)+4>>2]|0);aA(c[j>>2]|0,45876,1)}AD(c[j>>2]|0,c[(c[Y>>2]|0)+8>>2]|0);c[ja>>2]=0;c[Q>>2]=0;break}default:{qa=268;break a}}while(0);if((qa|0)==62){qa=0;f=(a[m>>0]|0)!=0;do if(d[(c[L>>2]|0)+2>>0]&1){do if(!f){f=c[l>>2]|0;if(a[E>>0]|0){sa=(c[f>>2]|0)+(8-1)&~(8-1);b=sa;e=c[b>>2]|0;b=c[b+4>>2]|0;c[f>>2]=sa+8;sa=ia;c[sa>>2]=e;c[sa+4>>2]=b;break}else{sa=(c[f>>2]|0)+(4-1)&~(4-1);b=c[sa>>2]|0;c[f>>2]=sa+4;sa=ia;c[sa>>2]=b;c[sa+4>>2]=((b|0)<0)<<31>>31;break}}else{b=mO(c[X>>2]|0)|0;sa=ia;c[sa>>2]=b;c[sa+4>>2]=C}while(0);e=ia;f=c[e>>2]|0;e=c[e+4>>2]|0;if((c[ia+4>>2]|0)<0){if((f|0)==0&(e|0)==-2147483648){sa=R;c[sa>>2]=0;c[sa+4>>2]=-2147483648}else{b=ia;b=fR(0,0,c[b>>2]|0,c[b+4>>2]|0)|0;sa=R;c[sa>>2]=b;c[sa+4>>2]=C}a[ba>>0]=45;break}sa=R;c[sa>>2]=f;c[sa+4>>2]=e;if(a[F>>0]|0){a[ba>>0]=43;break}if(a[z>>0]|0){a[ba>>0]=32;break}else{a[ba>>0]=0;break}}else{do if(!f){f=c[l>>2]|0;if(a[E>>0]|0){sa=(c[f>>2]|0)+(8-1)&~(8-1);b=sa;e=c[b>>2]|0;b=c[b+4>>2]|0;c[f>>2]=sa+8;sa=R;c[sa>>2]=e;c[sa+4>>2]=b;break}else{sa=(c[f>>2]|0)+(4-1)&~(4-1);b=c[sa>>2]|0;c[f>>2]=sa+4;sa=R;c[sa>>2]=b;c[sa+4>>2]=0;break}}else{b=mO(c[X>>2]|0)|0;sa=R;c[sa>>2]=b;c[sa+4>>2]=C}while(0);a[ba>>0]=0}while(0);sa=R;if((c[sa>>2]|0)==0&(c[sa+4>>2]|0)==0)a[x>>0]=0;if((d[H>>0]|0)!=0?(c[aa>>2]|0)<((c[ja>>2]|0)-((a[ba>>0]|0)!=0&1)|0):0)c[aa>>2]=(c[ja>>2]|0)-((a[ba>>0]|0)!=0&1);if((c[aa>>2]|0)>=60){c[T>>2]=(c[aa>>2]|0)+10;sa=c[T>>2]|0;sa=_f(sa,((sa|0)<0)<<31>>31)|0;c[oa>>2]=sa;c[pa>>2]=sa;if(!(c[pa>>2]|0)){qa=92;break}}else{c[T>>2]=70;c[pa>>2]=o}c[p>>2]=(c[pa>>2]|0)+((c[T>>2]|0)-1);if((d[na>>0]|0)==16){sa=R;sa=tR(c[sa>>2]|0,c[sa+4>>2]|0,10,0)|0;c[la>>2]=sa;if(!((c[la>>2]|0)<4?(sa=R,sa=sR(c[sa>>2]|0,c[sa+4>>2]|0,10,0)|0,sa=tR(sa|0,C|0,10,0)|0,!((sa|0)==1&(C|0)==0)):0))c[la>>2]=0;sa=a[46189+((c[la>>2]<<1)+1)>>0]|0;b=(c[p>>2]|0)+-1|0;c[p>>2]=b;a[b>>0]=sa;b=a[46189+(c[la>>2]<<1)>>0]|0;sa=(c[p>>2]|0)+-1|0;c[p>>2]=sa;a[sa>>0]=b}c[s>>2]=46198+(d[(c[L>>2]|0)+4>>0]|0);a[n>>0]=a[(c[L>>2]|0)+1>>0]|0;do{sa=R;sa=tR(c[sa>>2]|0,c[sa+4>>2]|0,d[n>>0]|0,0)|0;sa=a[(c[s>>2]|0)+sa>>0]|0;b=(c[p>>2]|0)+-1|0;c[p>>2]=b;a[b>>0]=sa;b=R;b=sR(c[b>>2]|0,c[b+4>>2]|0,d[n>>0]|0,0)|0;sa=R;c[sa>>2]=b;c[sa+4>>2]=C;sa=R;b=c[sa+4>>2]|0}while(b>>>0>0|(b|0)==0&(c[sa>>2]|0)>>>0>0);c[Q>>2]=(c[pa>>2]|0)+((c[T>>2]|0)-1)-(c[p>>2]|0);c[K>>2]=(c[aa>>2]|0)-(c[Q>>2]|0);while(1){if((c[K>>2]|0)<=0)break;sa=(c[p>>2]|0)+-1|0;c[p>>2]=sa;a[sa>>0]=48;c[K>>2]=(c[K>>2]|0)+-1}if(a[ba>>0]|0){b=a[ba>>0]|0;sa=(c[p>>2]|0)+-1|0;c[p>>2]=sa;a[sa>>0]=b}e:do if((d[x>>0]|0)!=0?(d[(c[L>>2]|0)+5>>0]|0)!=0:0){c[$>>2]=46231+(d[(c[L>>2]|0)+5>>0]|0);while(1){sa=a[c[$>>2]>>0]|0;a[ma>>0]=sa;if(!(sa<<24>>24))break e;b=a[ma>>0]|0;sa=(c[p>>2]|0)+-1|0;c[p>>2]=sa;a[sa>>0]=b;c[$>>2]=(c[$>>2]|0)+1}}while(0);c[Q>>2]=(c[pa>>2]|0)+((c[T>>2]|0)-1)-(c[p>>2]|0)}c[ja>>2]=(c[ja>>2]|0)-(c[Q>>2]|0);if(!((c[ja>>2]|0)<=0|(a[B>>0]|0)!=0))qO(c[j>>2]|0,c[ja>>2]|0,32);aA(c[j>>2]|0,c[p>>2]|0,c[Q>>2]|0);if((c[ja>>2]|0)>0?(d[B>>0]|0)!=0:0)qO(c[j>>2]|0,c[ja>>2]|0,32);if(c[oa>>2]|0){Sf(c[c[j>>2]>>2]|0,c[oa>>2]|0);c[oa>>2]=0}c[k>>2]=(c[k>>2]|0)+1}if((qa|0)==13){aA(c[j>>2]|0,46049,1);i=ra;return}else if((qa|0)==92){eA(c[j>>2]|0,1);i=ra;return}else if((qa|0)==161){eA(c[j>>2]|0,1);i=ra;return}else if((qa|0)==241){eA(c[j>>2]|0,1);i=ra;return}else if((qa|0)==268){i=ra;return}}function eg(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;do if(((c[(c[e>>2]|0)+8>>2]|0)!=0?(a[(c[(c[e>>2]|0)+8>>2]|0)+(c[(c[e>>2]|0)+12>>2]|0)>>0]=0,(c[(c[e>>2]|0)+20>>2]|0)>>>0>0):0)?((d[(c[e>>2]|0)+25>>0]|0)&4|0)==0:0){b=yh(c[c[e>>2]>>2]|0,(c[(c[e>>2]|0)+12>>2]|0)+1|0,0)|0;c[(c[e>>2]|0)+8>>2]=b;b=c[e>>2]|0;if(c[(c[e>>2]|0)+8>>2]|0){iR(c[b+8>>2]|0,c[(c[e>>2]|0)+4>>2]|0,(c[(c[e>>2]|0)+12>>2]|0)+1|0)|0;b=(c[e>>2]|0)+25|0;a[b>>0]=d[b>>0]|0|4;break}else{eA(b,1);break}}while(0);i=f;return c[(c[e>>2]|0)+8>>2]|0}function fg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+256|0;h=e+36|0;j=e+32|0;f=e+28|0;g=e;c[h>>2]=a;c[j>>2]=b;c[f>>2]=d;cg(g,0,e+40|0,210,0);dg(g,c[j>>2]|0,c[f>>2]|0);f=c[66]|0;d=c[67]|0;a=c[h>>2]|0;b=eg(g)|0;Ub[f&255](d,a,b);i=e;return}function gg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;d=Ob[c[(c[h>>2]|0)+56>>2]&255](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return d|0}function hg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+28|0;g=l+24|0;h=l+20|0;k=l+16|0;j=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+52>>2]=c[g>>2];a=c[f>>2]|0;if(!(c[h>>2]|0)){jg(a,c[g>>2]|0);i=l;return}if((c[a+236>>2]|0)==0?(g=Vh(c[f>>2]|0)|0,c[(c[f>>2]|0)+236>>2]=g,(g|0)==0):0){i=l;return}c[j>>2]=e;c[k>>2]=Zw(c[f>>2]|0,c[h>>2]|0,j)|0;Wh(c[(c[f>>2]|0)+236>>2]|0,-1,c[k>>2]|0,1,170);i=l;return}function ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f;e=f+8|0;g=d;c[g>>2]=a;c[g+4>>2]=b;b=d;c[e>>2]=_f(c[b>>2]|0,c[b+4>>2]|0)|0;if(!(c[e>>2]|0)){g=c[e>>2]|0;i=f;return g|0}kR(c[e>>2]|0,0,c[d>>2]|0)|0;g=c[e>>2]|0;i=f;return g|0}function jg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e+4|0;f=e;c[d>>2]=a;c[f>>2]=b;c[(c[d>>2]|0)+52>>2]=c[f>>2];if(!(c[(c[d>>2]|0)+236>>2]|0)){i=e;return}PM(c[(c[d>>2]|0)+236>>2]|0);i=e;return}function kg(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[(c[d>>2]|0)+4>>2]|0)+4>>2]=c[c[d>>2]>>2];i=b;return}function lg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!((c[b>>2]|0)!=0&(c[b>>2]|0)!=5)){a=0;a=a&1;i=d;return a|0}a=(c[b>>2]|0)!=6;a=a&1;i=d;return a|0}function mg(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;l=p+16|0;o=p+12|0;k=p+8|0;m=p+4|0;n=p;c[h>>2]=f;c[j>>2]=g;c[l>>2]=c[(c[h>>2]|0)+4>>2];c[o>>2]=0;kg(c[h>>2]|0);do if((d[(c[h>>2]|0)+8>>0]|0)!=2?(c[j>>2]|0)!=0?1:(d[(c[h>>2]|0)+8>>0]|0)!=1:0){if((c[j>>2]|0)!=0?(e[(c[l>>2]|0)+22>>1]&1|0)!=0:0){c[o>>2]=8;break}c[k>>2]=0;if((c[j>>2]|0)!=0?(d[(c[l>>2]|0)+20>>0]|0)==2:0)g=8;else g=7;a:do if((g|0)==7)if(!(e[(c[l>>2]|0)+22>>1]&64)){if((c[j>>2]|0)>1){c[m>>2]=c[(c[l>>2]|0)+72>>2];while(1){if(!(c[m>>2]|0))break a;f=c[m>>2]|0;if((c[c[m>>2]>>2]|0)!=(c[h>>2]|0))break;c[m>>2]=c[f+12>>2]}c[k>>2]=c[c[f>>2]>>2]}}else g=8;while(0);if((g|0)==8)c[k>>2]=c[c[(c[l>>2]|0)+76>>2]>>2];if(c[k>>2]|0){c[o>>2]=262;break}c[o>>2]=mH(c[h>>2]|0,1,1)|0;if(!(c[o>>2]|0)){m=(c[l>>2]|0)+22|0;b[m>>1]=e[m>>1]&-9;if(!(c[(c[l>>2]|0)+44>>2]|0)){m=(c[l>>2]|0)+22|0;b[m>>1]=e[m>>1]|8}while(1){if((c[(c[l>>2]|0)+12>>2]|0)==0?(m=MM(c[l>>2]|0)|0,c[o>>2]=m,0==(m|0)):0)continue;do if((c[o>>2]|0)==0&(c[j>>2]|0)!=0){if(e[(c[l>>2]|0)+22>>1]&1){c[o>>2]=8;break}k=c[c[l>>2]>>2]|0;m=(c[j>>2]|0)>1&1;c[o>>2]=NM(k,m,Sq(c[c[h>>2]>>2]|0)|0)|0;if(!(c[o>>2]|0))c[o>>2]=VL(c[l>>2]|0)|0}while(0);if(c[o>>2]|0)rB(c[l>>2]|0);if((c[o>>2]&255|0)!=5)break;if(d[(c[l>>2]|0)+20>>0]|0)break;if(!(Yq(c[l>>2]|0)|0))break}if(!(c[o>>2]|0)){if((d[(c[h>>2]|0)+8>>0]|0)==0?(m=(c[l>>2]|0)+40|0,c[m>>2]=(c[m>>2]|0)+1,(a[(c[h>>2]|0)+9>>0]|0)!=0):0){a[(c[h>>2]|0)+32+8>>0]=1;c[(c[h>>2]|0)+32+12>>2]=c[(c[l>>2]|0)+72>>2];c[(c[l>>2]|0)+72>>2]=(c[h>>2]|0)+32}a[(c[h>>2]|0)+8>>0]=(c[j>>2]|0)!=0?2:1;if((d[(c[h>>2]|0)+8>>0]|0)>(d[(c[l>>2]|0)+20>>0]|0))a[(c[l>>2]|0)+20>>0]=a[(c[h>>2]|0)+8>>0]|0; -if(c[j>>2]|0){c[n>>2]=c[(c[l>>2]|0)+12>>2];c[(c[l>>2]|0)+76>>2]=c[h>>2];m=(c[l>>2]|0)+22|0;b[m>>1]=e[m>>1]&-33;if((c[j>>2]|0)>1){m=(c[l>>2]|0)+22|0;b[m>>1]=e[m>>1]|32}m=c[(c[l>>2]|0)+44>>2]|0;if((m|0)!=($q((c[(c[n>>2]|0)+56>>2]|0)+28|0)|0)?(c[o>>2]=Dg(c[(c[n>>2]|0)+72>>2]|0)|0,(c[o>>2]|0)==0):0)Xs((c[(c[n>>2]|0)+56>>2]|0)+28|0,c[(c[l>>2]|0)+44>>2]|0)}}}}while(0);if(!((c[o>>2]|0)==0&(c[j>>2]|0)!=0)){o=c[o>>2]|0;i=p;return o|0}c[o>>2]=SL(c[c[l>>2]>>2]|0,c[(c[c[h>>2]>>2]|0)+500>>2]|0)|0;o=c[o>>2]|0;i=p;return o|0}function ng(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=c[(c[e>>2]|0)+4>>2];kg(c[e>>2]|0);if((c[f>>2]|0)==15){d=LM(c[c[h>>2]>>2]|0)|0;c[c[g>>2]>>2]=d+(c[(c[e>>2]|0)+20>>2]|0);i=j;return}else{d=$q((c[(c[(c[h>>2]|0)+12>>2]|0)+56>>2]|0)+(36+(c[f>>2]<<2))|0)|0;c[c[g>>2]>>2]=d;i=j;return}}function og(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[(c[b>>2]|0)+8>>0]|0|0)!=0|0}function pg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[(c[b>>2]|0)+4>>2]|0)+32>>2]|0}function qg(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+5>>0]|0|0}function rg(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=$E(c[(c[d>>2]|0)+4>>2]|0)|0;i=b;return a|0}function sg(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+48|0;k=t+44|0;l=t+40|0;m=t+36|0;n=t+32|0;u=t+28|0;s=t+24|0;r=t+20|0;p=t+16|0;q=t+12|0;o=t+8|0;h=t+4|0;g=t;c[l>>2]=a;c[m>>2]=b;c[n>>2]=e;c[u>>2]=f;c[s>>2]=0;c[r>>2]=0;c[p>>2]=0;c[q>>2]=c[u>>2]&1;c[o>>2]=0;if((c[m>>2]|0)>>>0<=1&(c[m>>2]|0)==0){c[k>>2]=Lj(49076)|0;u=c[k>>2]|0;i=t;return u|0}do if(c[(c[l>>2]|0)+44>>2]|0){c[s>>2]=c[(c[l>>2]|0)+44>>2];j=23}else{if(((c[o>>2]|0)!=0?(sr(c[l>>2]|0)|0)!=0:0)?(c[s>>2]=xs(c[(c[l>>2]|0)+216>>2]|0,c[m>>2]|0,p)|0,(c[s>>2]|0)!=0):0)break;if((c[o>>2]|0)!=0&(c[p>>2]|0)==0){c[h>>2]=0;e=c[(c[l>>2]|0)+64>>2]|0;u=c[(c[l>>2]|0)+160>>2]|0;u=rR((c[m>>2]|0)-1|0,0,u|0,((u|0)<0)<<31>>31|0)|0;c[s>>2]=$K(e,u,C,c[(c[l>>2]|0)+160>>2]|0,h)|0;if((c[s>>2]|0)==0&(c[h>>2]|0)!=0){if((d[(c[l>>2]|0)+17>>0]|0|0)>1)c[r>>2]=Zr(c[l>>2]|0,c[m>>2]|0)|0;f=c[l>>2]|0;if(!(c[r>>2]|0))c[s>>2]=IM(f,c[m>>2]|0,c[h>>2]|0,r)|0;else{e=c[f+64>>2]|0;u=c[(c[l>>2]|0)+160>>2]|0;u=rR((c[m>>2]|0)-1|0,0,u|0,((u|0)<0)<<31>>31|0)|0;Cs(e,u,C,c[h>>2]|0)|0}if(c[r>>2]|0){c[c[n>>2]>>2]=c[r>>2];c[k>>2]=0;u=c[k>>2]|0;i=t;return u|0}}if(c[s>>2]|0)break}c[g>>2]=cs(c[(c[l>>2]|0)+212>>2]|0,c[m>>2]|0,3)|0;if(!(c[g>>2]|0)){c[s>>2]=JM(c[(c[l>>2]|0)+212>>2]|0,c[m>>2]|0,g)|0;if(c[s>>2]|0)break;if(!(c[g>>2]|0)){c[c[n>>2]>>2]=0;c[r>>2]=0;c[s>>2]=7;break}}j=ds(c[(c[l>>2]|0)+212>>2]|0,c[m>>2]|0,c[g>>2]|0)|0;c[c[n>>2]>>2]=j;c[r>>2]=j;j=23}while(0);do if((j|0)==23){if(c[s>>2]|0){c[r>>2]=0;break}f=c[l>>2]|0;if(!((c[q>>2]|0)!=0?1:(c[(c[r>>2]|0)+16>>2]|0)==0)){u=f+192|0;c[u>>2]=(c[u>>2]|0)+1;c[k>>2]=0;u=c[k>>2]|0;i=t;return u|0}c[(c[r>>2]|0)+16>>2]=f;if((c[m>>2]|0)>>>0<=2147483647?(c[m>>2]|0)!=(((c[381]|0)/(c[(c[l>>2]|0)+160>>2]|0)|0)+1|0):0){if(((d[(c[l>>2]|0)+16>>0]|0|0)==0?!((c[q>>2]|0)!=0?1:(c[(c[l>>2]|0)+28>>2]|0)>>>0<(c[m>>2]|0)>>>0):0)?(c[c[(c[l>>2]|0)+64>>2]>>2]|0)!=0:0){u=(sr(c[l>>2]|0)|0)!=0;if(u&(c[o>>2]|0)==0?(c[s>>2]=xs(c[(c[l>>2]|0)+216>>2]|0,c[m>>2]|0,p)|0,(c[s>>2]|0)!=0):0)break;u=(c[l>>2]|0)+192+4|0;c[u>>2]=(c[u>>2]|0)+1;c[s>>2]=ys(c[r>>2]|0,c[p>>2]|0)|0;if(c[s>>2]|0)break}else{if((c[m>>2]|0)>>>0>(c[(c[l>>2]|0)+164>>2]|0)>>>0){c[s>>2]=13;break}if(c[q>>2]|0){Sj();if((c[m>>2]|0)>>>0<=(c[(c[l>>2]|0)+32>>2]|0)>>>0)gj(c[(c[l>>2]|0)+60>>2]|0,c[m>>2]|0)|0;Ht(c[l>>2]|0,c[m>>2]|0)|0;Tj()}kR(c[(c[r>>2]|0)+4>>2]|0,0,c[(c[l>>2]|0)+160>>2]|0)|0}c[k>>2]=0;u=c[k>>2]|0;i=t;return u|0}c[s>>2]=Lj(49165)|0}while(0);if(c[r>>2]|0)ws(c[r>>2]|0);Bs(c[l>>2]|0);c[c[n>>2]>>2]=0;c[k>>2]=c[s>>2];u=c[k>>2]|0;i=t;return u|0}function tg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+4>>2]|0}function ug(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+80|0;g=w+68|0;x=w+64|0;h=w+60|0;j=w+56|0;q=w+52|0;p=w+48|0;o=w+44|0;n=w+40|0;l=w+8|0;v=w+36|0;m=w;r=w+32|0;k=w+28|0;t=w+24|0;s=w+20|0;u=w+16|0;c[g>>2]=b;c[x>>2]=d;c[h>>2]=e;c[j>>2]=f;c[q>>2]=Of(c[(c[g>>2]|0)+4>>2]|0)|0;c[p>>2]=pg(c[(c[g>>2]|0)+24>>2]|0)|0;c[o>>2]=pg(c[(c[g>>2]|0)+4>>2]|0)|0;c[n>>2]=(c[p>>2]|0)<(c[o>>2]|0)?c[p>>2]|0:c[o>>2]|0;b=c[p>>2]|0;b=rR(c[x>>2]|0,0,b|0,((b|0)<0)<<31>>31|0)|0;e=l;c[e>>2]=b;c[e+4>>2]=C;c[v>>2]=0;if((c[p>>2]|0)!=(c[o>>2]|0)?(DJ(c[q>>2]|0)|0)!=0:0)c[v>>2]=8;x=l;e=c[p>>2]|0;e=fR(c[x>>2]|0,c[x+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;x=m;c[x>>2]=e;c[x+4>>2]=C;while(1){if(c[v>>2]|0){g=14;break}e=m;d=c[e+4>>2]|0;x=l;b=c[x+4>>2]|0;if(!((d|0)<(b|0)|((d|0)==(b|0)?(c[e>>2]|0)>>>0<(c[x>>2]|0)>>>0:0))){g=14;break}c[r>>2]=0;e=m;x=c[o>>2]|0;x=pR(c[e>>2]|0,c[e+4>>2]|0,x|0,((x|0)<0)<<31>>31|0)|0;c[k>>2]=x+1;if((c[k>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[(c[(c[g>>2]|0)+4>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0)){x=sg(c[q>>2]|0,c[k>>2]|0,r,0)|0;c[v>>2]=x;if((0==(x|0)?(x=Dg(c[r>>2]|0)|0,c[v>>2]=x,0==(x|0)):0)?(x=m,e=c[p>>2]|0,e=qR(c[x>>2]|0,c[x+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,c[t>>2]=(c[h>>2]|0)+e,c[s>>2]=tg(c[r>>2]|0)|0,e=m,x=c[o>>2]|0,x=qR(c[e>>2]|0,c[e+4>>2]|0,x|0,((x|0)<0)<<31>>31|0)|0,c[u>>2]=(c[s>>2]|0)+x,iR(c[u>>2]|0,c[t>>2]|0,c[n>>2]|0)|0,a[(It(c[r>>2]|0)|0)>>0]=0,x=m,(c[x>>2]|0)==0&(c[x+4>>2]|0)==0&(c[j>>2]|0)==0):0){x=(c[u>>2]|0)+28|0;Xs(x,rg(c[(c[g>>2]|0)+24>>2]|0)|0)}vg(c[r>>2]|0)}e=c[o>>2]|0;x=m;e=gR(c[x>>2]|0,c[x+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;x=m;c[x>>2]=e;c[x+4>>2]=C}if((g|0)==14){i=w;return c[v>>2]|0}return 0}function vg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}zs(c[b>>2]|0);i=d;return}function wg(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=Lg(Of(c[(c[d>>2]|0)+24>>2]|0)|0)|0;c[(c[d>>2]|0)+44>>2]=c[c[e>>2]>>2];c[c[e>>2]>>2]=c[d>>2];c[(c[d>>2]|0)+40>>2]=1;i=b;return}function xg(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;kg(c[e>>2]|0);c[(c[(c[e>>2]|0)+4>>2]|0)+44>>2]=0;c[b>>2]=VL(c[(c[e>>2]|0)+4>>2]|0)|0;i=d;return c[b>>2]|0}function yg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+20|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[m>>2]=b;c[f>>2]=d;c[g>>2]=e;c[h>>2]=c[(c[m>>2]|0)+4>>2];kg(c[m>>2]|0);c[j>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+56>>2];c[k>>2]=Dg(c[(c[(c[h>>2]|0)+12>>2]|0)+72>>2]|0)|0;if(c[k>>2]|0){m=c[k>>2]|0;i=l;return m|0}Xs((c[j>>2]|0)+(36+(c[f>>2]<<2))|0,c[g>>2]|0);if((c[f>>2]|0)!=7){m=c[k>>2]|0;i=l;return m|0}a[(c[h>>2]|0)+18>>0]=c[g>>2];m=c[k>>2]|0;i=l;return m|0}function zg(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;Nf(c[b>>2]|0);c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[e>>2]=(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4);if(c[(c[e>>2]|0)+12>>2]|0)tj(c[(c[e>>2]|0)+12>>2]|0);c[d>>2]=(c[d>>2]|0)+1}e=(c[b>>2]|0)+24|0;c[e>>2]=c[e>>2]&-3;ju(c[b>>2]|0);mB(c[b>>2]|0);i=f;return}function Ag(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;h=n+16|0;j=n+12|0;l=n+8|0;m=n+4|0;k=n;c[h>>2]=f;c[j>>2]=g;c[l>>2]=c[(c[h>>2]|0)+4>>2];f=(c[l>>2]|0)+22|0;b[f>>1]=(e[f>>1]|0)&-17;if((c[j>>2]|0)==1){f=(c[l>>2]|0)+22|0;b[f>>1]=e[f>>1]|0|16}c[m>>2]=mg(c[h>>2]|0,0)|0;do if(!(c[m>>2]|0)){c[k>>2]=c[(c[(c[l>>2]|0)+12>>2]|0)+56>>2];if((d[(c[k>>2]|0)+18>>0]|0|0)==(c[j>>2]&255|0)?(d[(c[k>>2]|0)+19>>0]|0|0)==(c[j>>2]&255|0):0)break;c[m>>2]=mg(c[h>>2]|0,2)|0;if((c[m>>2]|0)==0?(c[m>>2]=Dg(c[(c[(c[l>>2]|0)+12>>2]|0)+72>>2]|0)|0,(c[m>>2]|0)==0):0){a[(c[k>>2]|0)+18>>0]=c[j>>2];a[(c[k>>2]|0)+19>>0]=c[j>>2]}}while(0);f=(c[l>>2]|0)+22|0;b[f>>1]=(e[f>>1]|0)&-17;i=n;return c[m>>2]|0}function Bg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+64>>2]|0}function Cg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[c[e>>2]>>2]=c[(c[f>>2]|0)+28>>2];i=d;return}function Dg(a){a=a|0;var b=0,d=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;b=g+4|0;f=g;c[b>>2]=a;c[f>>2]=c[(c[b>>2]|0)+16>>2];if(c[(c[f>>2]|0)+44>>2]|0){c[d>>2]=c[(c[f>>2]|0)+44>>2];f=c[d>>2]|0;i=g;return f|0}if(((e[(c[b>>2]|0)+24>>1]|0)&4|0)!=0?(c[(c[f>>2]|0)+28>>2]|0)>>>0>=(c[(c[b>>2]|0)+20>>2]|0)>>>0:0)if(c[(c[f>>2]|0)+104>>2]|0){c[d>>2]=lt(c[b>>2]|0)|0;f=c[d>>2]|0;i=g;return f|0}else{c[d>>2]=0;f=c[d>>2]|0;i=g;return f|0}b=c[b>>2]|0;if((c[(c[f>>2]|0)+156>>2]|0)>>>0>(c[(c[f>>2]|0)+160>>2]|0)>>>0){c[d>>2]=DM(b)|0;f=c[d>>2]|0;i=g;return f|0}else{c[d>>2]=EM(b)|0;f=c[d>>2]|0;i=g;return f|0}return 0}function Eg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;o=p+12|0;m=p+8|0;n=p+4|0;l=p;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[o>>2]=0;f=c[h>>2]|0;if(c[(c[h>>2]|0)+44>>2]|0){c[g>>2]=c[f+44>>2];o=c[g>>2]|0;i=p;return o|0}if((d[f+17>>0]|0)<3){c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}f=c[h>>2]|0;do if(!(a[(c[h>>2]|0)+16>>0]|0)){e=(sr(f)|0)!=0;f=c[h>>2]|0;if(e){c[m>>2]=qs(c[f+212>>2]|0)|0;c[n>>2]=0;if(!(c[m>>2]|0)){c[o>>2]=sg(c[h>>2]|0,1,n,0)|0;c[m>>2]=c[n>>2];c[(c[m>>2]|0)+12>>2]=0}if(c[m>>2]|0)c[o>>2]=mt(c[h>>2]|0,c[m>>2]|0,c[(c[h>>2]|0)+28>>2]|0,1)|0;vg(c[n>>2]|0);if(c[o>>2]|0)break;rr(c[(c[h>>2]|0)+212>>2]|0);break}c[o>>2]=BM(f,0)|0;if((((c[o>>2]|0)==0?(c[o>>2]=CM(c[h>>2]|0,c[j>>2]|0)|0,(c[o>>2]|0)==0):0)?(c[o>>2]=nt(c[h>>2]|0,0)|0,(c[o>>2]|0)==0):0)?(n=c[h>>2]|0,c[o>>2]=ot(n,qs(c[(c[h>>2]|0)+212>>2]|0)|0)|0,(c[o>>2]|0)==0):0){rr(c[(c[h>>2]|0)+212>>2]|0);if((c[(c[h>>2]|0)+28>>2]|0)>>>0>(c[(c[h>>2]|0)+36>>2]|0)>>>0){c[l>>2]=(c[(c[h>>2]|0)+28>>2]|0)-((c[(c[h>>2]|0)+28>>2]|0)==(((c[381]|0)/(c[(c[h>>2]|0)+160>>2]|0)|0)+1|0)&1);c[o>>2]=ur(c[h>>2]|0,c[l>>2]|0)|0;if((c[o>>2]|0)!=0|(c[k>>2]|0)!=0)break}else if(c[k>>2]|0)break;c[o>>2]=Hg(c[h>>2]|0,c[j>>2]|0)|0}}else _i(c[f+96>>2]|0);while(0);if((c[o>>2]|0)==0?(sr(c[h>>2]|0)|0)==0:0)a[(c[h>>2]|0)+17>>0]=5;c[g>>2]=c[o>>2];o=c[g>>2]|0;i=p;return o|0}function Fg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;k=g+16|0;j=g+12|0;h=g+8|0;l=g;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;b=l;c[b>>2]=e;c[b+4>>2]=f;b=l;b=Zb[c[(c[c[k>>2]>>2]|0)+12>>2]&255](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;i=g;return b|0}function Gg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;e=j+20|0;f=j+8|0;g=j;h=j+16|0;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[h>>2]=Si(c[e>>2]|0,g)|0;if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}b=c[g+4>>2]|0;a=f;d=c[a+4>>2]|0;if(!((b|0)>(d|0)|((b|0)==(d|0)?(c[g>>2]|0)>>>0>(c[a>>2]|0)>>>0:0))){h=c[h>>2]|0;i=j;return h|0}a=f;c[h>>2]=nr(c[e>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;h=c[h>>2]|0;i=j;return h|0}function Hg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[g>>2]=e;c[j>>2]=0;if(c[c[(c[f>>2]|0)+64>>2]>>2]|0){c[h>>2]=c[g>>2];e=vi(c[(c[f>>2]|0)+64>>2]|0,21,c[h>>2]|0)|0;c[j>>2]=e;c[j>>2]=(c[j>>2]|0)==12?0:e}if(c[j>>2]|0){e=c[j>>2]|0;i=k;return e|0}if(a[(c[f>>2]|0)+7>>0]|0){e=c[j>>2]|0;i=k;return e|0}c[j>>2]=or(c[(c[f>>2]|0)+64>>2]|0,d[(c[f>>2]|0)+12>>0]|0)|0;e=c[j>>2]|0;i=k;return e|0}function Ig(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[(c[e>>2]|0)+28>>2]=c[f>>2];i=d;return}function Jg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;k=l+4|0;j=l;c[g>>2]=b;c[h>>2]=e;if(!(d[(c[g>>2]|0)+8>>0]|0)){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}kg(c[g>>2]|0);do if((d[(c[g>>2]|0)+8>>0]|0|0)==2){c[j>>2]=c[(c[g>>2]|0)+4>>2];c[k>>2]=AM(c[c[j>>2]>>2]|0)|0;if(!((c[k>>2]|0)!=0&(c[h>>2]|0)==0)){k=(c[g>>2]|0)+20|0;c[k>>2]=(c[k>>2]|0)+-1;a[(c[j>>2]|0)+20>>0]=1;vM(c[j>>2]|0);break}c[f>>2]=c[k>>2];k=c[f>>2]|0;i=l;return k|0}while(0);wM(c[g>>2]|0);c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}function Kg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;k=l+4|0;j=l;c[g>>2]=b;c[h>>2]=e;c[k>>2]=0;if((d[(c[g>>2]|0)+8>>0]|0)==2){c[j>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);if((a[(c[j>>2]|0)+17>>0]|0)!=0?(c[k>>2]=zM(c[j>>2]|0)|0,(c[k>>2]|0)!=0):0){c[f>>2]=c[k>>2];e=c[f>>2]|0;i=l;return e|0}if(a[(c[j>>2]|0)+19>>0]|0)Ig(c[c[j>>2]>>2]|0,c[(c[j>>2]|0)+44>>2]|0);c[k>>2]=Eg(c[c[j>>2]>>2]|0,c[h>>2]|0,0)|0}c[f>>2]=c[k>>2];e=c[f>>2]|0;i=l;return e|0}function Lg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)+96|0}function Mg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+32|0;h=q+28|0;j=q+24|0;n=q+20|0;l=q+16|0;m=q+12|0;o=q+8|0;p=q+4|0;k=q;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[l>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);if(!(c[h>>2]|0)){f=nH(c[l>>2]|0,0,0)|0;c[h>>2]=f;c[n>>2]=f;if(c[n>>2]|0)c[j>>2]=0}else c[n>>2]=0;if((c[h>>2]|0)!=0?(c[o>>2]=oI(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0)|0,(c[o>>2]|0)!=0):0)c[n>>2]=c[o>>2];if((d[(c[g>>2]|0)+8>>0]|0|0)!=2){f=c[g>>2]|0;wM(f);f=c[n>>2]|0;i=q;return f|0}c[p>>2]=jr(c[c[l>>2]>>2]|0)|0;if(c[p>>2]|0)c[n>>2]=c[p>>2];if(!(nF(c[l>>2]|0,1,m,0)|0)){c[k>>2]=$q((c[(c[m>>2]|0)+56>>2]|0)+28|0)|0;if(!(c[k>>2]|0))Cg(c[c[l>>2]>>2]|0,k);c[(c[l>>2]|0)+44>>2]=c[k>>2];qB(c[m>>2]|0)}a[(c[l>>2]|0)+20>>0]=1;vM(c[l>>2]|0);f=c[g>>2]|0;wM(f);f=c[n>>2]|0;i=q;return f|0}function Ng(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;d=n+32|0;e=n+28|0;f=n+24|0;j=n+20|0;m=n+16|0;k=n+12|0;g=n+8|0;h=n+4|0;l=n;c[d>>2]=b;if((c[(c[d>>2]|0)+76>>2]|0)!=1691352191){i=n;return}if(eu(c[d>>2]|0)|0){i=n;return}qI(c[d>>2]|0,0);rI(c[d>>2]|0);c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[d>>2]|0)+20>>2]|0))break;c[j>>2]=(c[(c[d>>2]|0)+16>>2]|0)+(c[f>>2]<<4);if((c[(c[j>>2]|0)+4>>2]|0)!=0?(lB(c[(c[j>>2]|0)+4>>2]|0)|0,c[(c[j>>2]|0)+4>>2]=0,(c[f>>2]|0)!=1):0)c[(c[j>>2]|0)+12>>2]=0;c[f>>2]=(c[f>>2]|0)+1}if(c[(c[(c[d>>2]|0)+16>>2]|0)+16+12>>2]|0)tj(c[(c[(c[d>>2]|0)+16>>2]|0)+16+12>>2]|0);ju(c[d>>2]|0);mB(c[d>>2]|0);c[f>>2]=0;while(1){if((c[f>>2]|0)>=23)break;c[g>>2]=c[(c[d>>2]|0)+340+(c[f>>2]<<2)>>2];while(1){if(!(c[g>>2]|0))break;c[k>>2]=c[(c[g>>2]|0)+24>>2];while(1){if(!(c[g>>2]|0))break;bu(c[d>>2]|0,c[g>>2]|0);c[m>>2]=c[(c[g>>2]|0)+8>>2];Sf(c[d>>2]|0,c[g>>2]|0);c[g>>2]=c[m>>2]}c[g>>2]=c[k>>2]}c[f>>2]=(c[f>>2]|0)+1}c[e>>2]=c[(c[d>>2]|0)+432+8>>2];while(1){if(!(c[e>>2]|0))break;c[h>>2]=c[(c[e>>2]|0)+8>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=3)break;if(c[(c[h>>2]|0)+((c[f>>2]|0)*20|0)+16>>2]|0)Qb[c[(c[h>>2]|0)+((c[f>>2]|0)*20|0)+16>>2]&255](c[(c[h>>2]|0)+((c[f>>2]|0)*20|0)+8>>2]|0);c[f>>2]=(c[f>>2]|0)+1}Sf(c[d>>2]|0,c[h>>2]|0);c[e>>2]=c[c[e>>2]>>2]}vj((c[d>>2]|0)+432|0);c[e>>2]=c[(c[d>>2]|0)+312+8>>2];while(1){if(!(c[e>>2]|0))break;c[l>>2]=c[(c[e>>2]|0)+8>>2];if(c[(c[l>>2]|0)+12>>2]|0)Qb[c[(c[l>>2]|0)+12>>2]&255](c[(c[l>>2]|0)+8>>2]|0);BH(c[d>>2]|0,c[l>>2]|0);Sf(c[d>>2]|0,c[l>>2]|0);c[e>>2]=c[c[e>>2]>>2]}vj((c[d>>2]|0)+312|0);jg(c[d>>2]|0,0);$g(c[(c[d>>2]|0)+236>>2]|0);c[(c[d>>2]|0)+76>>2]=-1254786768;Sf(c[d>>2]|0,c[(c[(c[d>>2]|0)+16>>2]|0)+16+12>>2]|0);c[(c[d>>2]|0)+76>>2]=-1623446221;if(a[(c[d>>2]|0)+248+6>>0]|0)Kd(c[(c[d>>2]|0)+248+32>>2]|0);Kd(c[d>>2]|0);i=n;return}function Og(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+8|0;e=d+4|0;c[e>>2]=a;if(!(c[c[e>>2]>>2]|0)){Rd(21,45447,d);c[b>>2]=1;e=c[b>>2]|0;i=d;return e|0}else{c[b>>2]=0;e=c[b>>2]|0;i=d;return e|0}return 0}function Pg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;f=d+12|0;e=d+8|0;h=d;c[f>>2]=a;c[e>>2]=b;IH(c[c[f>>2]>>2]|0,h)|0;g=c[(c[f>>2]|0)+184>>2]|0;f=c[(c[f>>2]|0)+188>>2]|0;a=c[(c[e>>2]|0)+168>>2]|0;b=(c[e>>2]|0)+128|0;b=fR(c[h>>2]|0,c[h+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;b=rR(b|0,C|0,1e6,0)|0;_b[g&255](f,a,b,C);b=(c[e>>2]|0)+128|0;c[b>>2]=0;c[b+4>>2]=0;i=d;return}function Qg(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;if(!((c[(c[b>>2]|0)+40>>2]|0)!=-1108210269?(c[(c[b>>2]|0)+40>>2]|0)!=1369188723:0))c[d>>2]=Sg(c[b>>2]|0)|0;Tu(c[b>>2]|0);i=e;return c[d>>2]|0}function Rg(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=b;if((c[g>>2]|0)==3082?1:(d[(c[f>>2]|0)+65>>0]|0|0)!=0){c[e>>2]=uM(c[f>>2]|0)|0;b=c[e>>2]|0;i=h;return b|0}else{c[e>>2]=c[g>>2]&c[(c[f>>2]|0)+56>>2];b=c[e>>2]|0;i=h;return b|0}return 0}function Sg(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;g=h;d=h+8|0;f=h+4|0;c[d>>2]=a;c[f>>2]=c[c[d>>2]>>2];TH(c[d>>2]|0)|0;a=c[d>>2]|0;if((c[(c[d>>2]|0)+76>>2]|0)>=0){MH(a)|0;Sf(c[f>>2]|0,c[(c[d>>2]|0)+44>>2]|0);c[(c[d>>2]|0)+44>>2]=0;if((e[(c[d>>2]|0)+88>>1]|0)>>>4&1){g=(c[d>>2]|0)+88|0;b[g>>1]=b[g>>1]&-9|8}}else if((c[a+80>>2]|0)!=0?((e[(c[d>>2]|0)+88>>1]|0)>>>3&1|0)!=0:0){k=c[f>>2]|0;j=c[(c[d>>2]|0)+80>>2]|0;a=(c[(c[d>>2]|0)+44>>2]|0)!=0?19255:0;c[g>>2]=c[(c[d>>2]|0)+44>>2];hg(k,j,a,g);Sf(c[f>>2]|0,c[(c[d>>2]|0)+44>>2]|0);c[(c[d>>2]|0)+44>>2]=0}tM(c[d>>2]|0);k=(c[d>>2]|0)+136|0;c[k>>2]=0;c[k+4>>2]=0;c[(c[d>>2]|0)+40>>2]=649915045;i=h;return c[(c[d>>2]|0)+80>>2]&c[(c[f>>2]|0)+56>>2]|0}function Tg(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;c[(c[e>>2]|0)+40>>2]=-1108210269;c[(c[e>>2]|0)+76>>2]=-1;c[(c[e>>2]|0)+80>>2]=0;a[(c[e>>2]|0)+86>>0]=2;c[(c[e>>2]|0)+92>>2]=0;c[(c[e>>2]|0)+72>>2]=1;a[(c[e>>2]|0)+87>>0]=-1;c[(c[e>>2]|0)+104>>2]=0;b=(c[e>>2]|0)+144|0;c[b>>2]=0;c[b+4>>2]=0;i=d;return}function Ug(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(((e[(c[b>>2]|0)+8>>1]|0)&9312|0)==0?(c[(c[b>>2]|0)+24>>2]|0)==0:0){i=d;return}sM(c[b>>2]|0);i=d;return}function Vg(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=a;do if((e[(c[f>>2]|0)+8>>1]|0)&16384){a=(c[(c[f>>2]|0)+12>>2]|0)+(c[c[f>>2]>>2]|0)|0;c[g>>2]=a;c[g>>2]=(c[g>>2]|0)<=0?1:a;if(!(ux(c[f>>2]|0,c[g>>2]|0,1)|0)){kR((c[(c[f>>2]|0)+16>>2]|0)+(c[(c[f>>2]|0)+12>>2]|0)|0,0,c[c[f>>2]>>2]|0)|0;a=(c[f>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[c[f>>2]>>2]|0);a=(c[f>>2]|0)+8|0;b[a>>1]=(e[a>>1]|0)&-16897;break}c[d>>2]=7;a=c[d>>2]|0;i=h;return a|0}while(0);c[d>>2]=0;a=c[d>>2]|0;i=h;return a|0}function Wg(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+4|0;h=k;j=k+8|0;c[h>>2]=b;a[j>>0]=f;do if(c[h>>2]|0){if(((e[(c[h>>2]|0)+8>>1]|0)&514|0)==514?(d[(c[h>>2]|0)+10>>0]|0|0)==(d[j>>0]|0|0):0){c[g>>2]=c[(c[h>>2]|0)+16>>2];break}if((e[(c[h>>2]|0)+8>>1]|0)&1){c[g>>2]=0;break}else{c[g>>2]=rM(c[h>>2]|0,a[j>>0]|0)|0;break}}else c[g>>2]=0;while(0);i=k;return c[g>>2]|0}function Xg(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l+8|0;g=l+4|0;h=l+12|0;k=l;c[g>>2]=b;a[h>>0]=f;c[k>>2]=c[g>>2];if(((e[(c[k>>2]|0)+8>>1]|0)&2|0)!=0?(d[(c[g>>2]|0)+10>>0]|0|0)==(d[h>>0]|0|0):0){c[j>>2]=c[(c[k>>2]|0)+12>>2];k=c[j>>2]|0;i=l;return k|0}b=e[(c[k>>2]|0)+8>>1]|0;if((e[(c[k>>2]|0)+8>>1]|0)&16){f=c[(c[k>>2]|0)+12>>2]|0;if(b&16384){c[j>>2]=f+(c[c[k>>2]>>2]|0);k=c[j>>2]|0;i=l;return k|0}else{c[j>>2]=f;k=c[j>>2]|0;i=l;return k|0}}else if(b&1){c[j>>2]=0;k=c[j>>2]|0;i=l;return k|0}else{c[j>>2]=qM(c[g>>2]|0,a[h>>0]|0)|0;k=c[j>>2]|0;i=l;return k|0}return 0}function Yg(b){b=b|0;var d=0,f=0,g=0,j=0,k=0,l=0.0;k=i;i=i+32|0;f=k+8|0;g=k+16|0;j=k;c[g>>2]=b;d=c[g>>2]|0;if((e[(c[g>>2]|0)+8>>1]|0)&8){h[f>>3]=+h[d>>3];l=+h[f>>3];i=k;return+l}b=c[g>>2]|0;if((e[d+8>>1]|0)&4){j=b;h[f>>3]=+((c[j>>2]|0)>>>0)+4294967296.0*+(c[j+4>>2]|0);l=+h[f>>3];i=k;return+l}if((e[b+8>>1]|0)&18){h[j>>3]=0.0;Ky(c[(c[g>>2]|0)+16>>2]|0,j,c[(c[g>>2]|0)+12>>2]|0,a[(c[g>>2]|0)+10>>0]|0)|0;h[f>>3]=+h[j>>3];l=+h[f>>3];i=k;return+l}else{h[f>>3]=0.0;l=+h[f>>3];i=k;return+l}return 0.0}function Zg(b){b=b|0;var d=0,f=0,g=0,j=0,k=0;k=i;i=i+32|0;d=k+8|0;f=k+20|0;g=k+16|0;j=k;c[f>>2]=b;c[g>>2]=e[(c[f>>2]|0)+8>>1];do if(!(c[g>>2]&4)){if(c[g>>2]&8){b=qx(+h[c[f>>2]>>3])|0;j=d;c[j>>2]=b;c[j+4>>2]=C;break}if(c[g>>2]&18){g=j;c[g>>2]=0;c[g+4>>2]=0;Hi(c[(c[f>>2]|0)+16>>2]|0,j,c[(c[f>>2]|0)+12>>2]|0,a[(c[f>>2]|0)+10>>0]|0)|0;g=j;b=c[g+4>>2]|0;j=d;c[j>>2]=c[g>>2];c[j+4>>2]=b;break}else{j=d;c[j>>2]=0;c[j+4>>2]=0;break}}else{g=c[f>>2]|0;b=c[g+4>>2]|0;j=d;c[j>>2]=c[g>>2];c[j+4>>2]=b}while(0);j=d;C=c[j+4>>2]|0;i=k;return c[j>>2]|0}function _g(d){d=d|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[g>>2]=d;if((e[(c[g>>2]|0)+8>>1]|0)&16384)Vg(c[g>>2]|0)|0;c[h>>2]=e[(c[g>>2]|0)+8>>1];do if(c[h>>2]&18){if((c[(c[g>>2]|0)+24>>2]|0)!=0?(c[(c[g>>2]|0)+16>>2]|0)==(c[(c[g>>2]|0)+20>>2]|0):0)break;if(!(ux(c[g>>2]|0,(c[(c[g>>2]|0)+12>>2]|0)+2|0,1)|0)){a[(c[(c[g>>2]|0)+16>>2]|0)+(c[(c[g>>2]|0)+12>>2]|0)>>0]=0;a[(c[(c[g>>2]|0)+16>>2]|0)+((c[(c[g>>2]|0)+12>>2]|0)+1)>>0]=0;d=(c[g>>2]|0)+8|0;b[d>>1]=e[d>>1]|0|512;break}c[f>>2]=7;d=c[f>>2]|0;i=j;return d|0}while(0);d=(c[g>>2]|0)+8|0;b[d>>1]=(e[d>>1]|0)&-4097;c[f>>2]=0;d=c[f>>2]|0;i=j;return d|0}function $g(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}Ug(c[b>>2]|0);Sf(c[(c[b>>2]|0)+32>>2]|0,c[b>>2]|0);i=d;return}function ah(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;h=j+12|0;n=j+8|0;m=j+4|0;l=j+16|0;k=j;c[h>>2]=b;c[n>>2]=d;c[m>>2]=e;a[l>>0]=f;c[k>>2]=g;if((dh(c[c[h>>2]>>2]|0,c[n>>2]|0,c[m>>2]|0,a[l>>0]|0,c[k>>2]|0)|0)!=18){i=j;return}se(c[h>>2]|0);i=j;return}function bh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(!((c[f>>2]|0)==0|(c[f>>2]|0)==(-1|0)))Qb[c[f>>2]&255](c[e>>2]|0);if(!(c[g>>2]|0)){i=h;return 18}se(c[g>>2]|0);i=h;return 18}function ch(a,d){a=a|0;d=+d;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g;c[e>>2]=a;h[f>>3]=d;fh(c[e>>2]|0);if(HF(+h[f>>3])|0){i=g;return}h[c[e>>2]>>3]=+h[f>>3];b[(c[e>>2]|0)+8>>1]=8;i=g;return}function dh(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+48|0;n=u+28|0;o=u+24|0;l=u+20|0;v=u+16|0;p=u+34|0;q=u+12|0;t=u+8|0;s=u+4|0;r=u+32|0;m=u;c[o>>2]=f;c[l>>2]=g;c[v>>2]=h;a[p>>0]=j;c[q>>2]=k;c[t>>2]=c[v>>2];b[r>>1]=0;j=c[o>>2]|0;if(!(c[l>>2]|0)){fh(j);c[n>>2]=0;v=c[n>>2]|0;i=u;return v|0}if(c[j+32>>2]|0)c[s>>2]=c[(c[(c[o>>2]|0)+32>>2]|0)+88>>2];else c[s>>2]=1e9;b[r>>1]=(d[p>>0]|0)==0?16:2;if((c[t>>2]|0)<0){a:do if((d[p>>0]|0)==1){c[t>>2]=If(c[l>>2]|0)|0;if((c[t>>2]|0)>(c[s>>2]|0))c[t>>2]=(c[s>>2]|0)+1}else{c[t>>2]=0;while(1){if((c[t>>2]|0)>(c[s>>2]|0))break a;if(!(a[(c[l>>2]|0)+(c[t>>2]|0)>>0]|a[(c[l>>2]|0)+((c[t>>2]|0)+1)>>0]))break a;c[t>>2]=(c[t>>2]|0)+2}}while(0);b[r>>1]=e[r>>1]|512}do if((c[q>>2]|0)!=(-1|0)){v=(c[q>>2]|0)==170;Ug(c[o>>2]|0);j=c[l>>2]|0;c[(c[o>>2]|0)+16>>2]=j;if(v){c[(c[o>>2]|0)+20>>2]=j;v=$t(c[(c[o>>2]|0)+32>>2]|0,c[(c[o>>2]|0)+20>>2]|0)|0;c[(c[o>>2]|0)+24>>2]=v;break}else{c[(c[o>>2]|0)+36>>2]=c[q>>2];b[r>>1]=e[r>>1]|((c[q>>2]|0)==0?2048:1024);break}}else{c[m>>2]=c[t>>2];if(e[r>>1]&512)c[m>>2]=(c[m>>2]|0)+((d[p>>0]|0)==1?1:2);if((c[t>>2]|0)>(c[s>>2]|0)){c[n>>2]=18;v=c[n>>2]|0;i=u;return v|0}if(!(tx(c[o>>2]|0,(c[m>>2]|0)>32?c[m>>2]|0:32)|0)){iR(c[(c[o>>2]|0)+16>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;break}c[n>>2]=7;v=c[n>>2]|0;i=u;return v|0}while(0);c[(c[o>>2]|0)+12>>2]=c[t>>2];b[(c[o>>2]|0)+8>>1]=b[r>>1]|0;a[(c[o>>2]|0)+10>>0]=(d[p>>0]|0)==0?1:d[p>>0]|0;if((d[(c[o>>2]|0)+10>>0]|0)!=1?(pM(c[o>>2]|0)|0)!=0:0){c[n>>2]=7;v=c[n>>2]|0;i=u;return v|0}if((c[t>>2]|0)>(c[s>>2]|0)){c[n>>2]=18;v=c[n>>2]|0;i=u;return v|0}else{c[n>>2]=0;v=c[n>>2]|0;i=u;return v|0}return 0}function eh(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+16|0;g=j+8|0;h=j;c[g>>2]=a;a=h;c[a>>2]=d;c[a+4>>2]=f;if((e[(c[g>>2]|0)+8>>1]|0)&9312){a=h;oM(c[g>>2]|0,c[a>>2]|0,c[a+4>>2]|0);i=j;return}else{f=h;h=c[f+4>>2]|0;a=c[g>>2]|0;c[a>>2]=c[f>>2];c[a+4>>2]=h;b[(c[g>>2]|0)+8>>1]=4;i=j;return}}function fh(a){a=a|0;var d=0,f=0;d=i;i=i+16|0;f=d;c[f>>2]=a;a=c[f>>2]|0;if((e[(c[f>>2]|0)+8>>1]|0)&9312){DF(a);i=d;return}else{b[a+8>>1]=1;i=d;return}}function gh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[g>>2]=d;c[h>>2]=0;if((e[(c[f>>2]|0)+8>>1]|0)&9312)DF(c[f>>2]|0);a=c[f>>2]|0;d=c[g>>2]|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];a=(c[f>>2]|0)+8|0;b[a>>1]=(e[a>>1]|0)&-1025;if(!((e[(c[f>>2]|0)+8>>1]|0)&18)){h=c[h>>2]|0;i=j;return h|0}if((e[(c[g>>2]|0)+8>>1]|0)&2048){h=c[h>>2]|0;i=j;return h|0}a=(c[f>>2]|0)+8|0;b[a>>1]=e[a>>1]|0|4096;c[h>>2]=_g(c[f>>2]|0)|0;h=c[h>>2]|0;i=j;return h|0}function hh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=d;c[g>>2]=e;Ug(c[f>>2]|0);b[(c[f>>2]|0)+8>>1]=16400;c[(c[f>>2]|0)+12>>2]=0;if((c[g>>2]|0)<0)c[g>>2]=0;c[c[f>>2]>>2]=c[g>>2];a[(c[f>>2]|0)+10>>0]=1;c[(c[f>>2]|0)+16>>2]=0;i=h;return}function ih(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=44821;if((c[b>>2]|0)!=516){c[b>>2]=c[b>>2]&255;if((c[b>>2]|0)>=0&(c[b>>2]|0)<27?(c[7072+(c[b>>2]<<2)>>2]|0)!=0:0)c[d>>2]=c[7072+(c[b>>2]<<2)>>2]}else c[d>>2]=44835;i=e;return c[d>>2]|0}function jh(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;if(d[(c[e>>2]|0)+65>>0]|0){i=f;return}if(d[(c[e>>2]|0)+66>>0]|0){i=f;return}a[(c[e>>2]|0)+65>>0]=1;if((c[(c[e>>2]|0)+160>>2]|0)>0)c[(c[e>>2]|0)+240>>2]=1;b=(c[e>>2]|0)+248|0;c[b>>2]=(c[b>>2]|0)+1;i=f;return}function kh(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+8|0;d=e+4|0;c[d>>2]=a;if(!(c[d>>2]|0)){Rd(21,44781,e);c[b>>2]=1;a=c[b>>2]|0;i=e;return a|0}else{c[b>>2]=Og(c[d>>2]|0)|0;a=c[b>>2]|0;i=e;return a|0}return 0}function lh(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=d;if((c[(c[g>>2]|0)+40>>2]|0)!=-1108210269)Zd(c[g>>2]|0)|0;c[h>>2]=c[c[g>>2]>>2];d=c[g>>2]|0;if(a[(c[h>>2]|0)+65>>0]|0){c[d+80>>2]=7;c[f>>2]=7;j=c[f>>2]|0;i=k;return j|0}if((c[d+76>>2]|0)<=0?((e[(c[g>>2]|0)+88>>1]|0)>>>3&1|0)!=0:0){c[(c[g>>2]|0)+80>>2]=17;c[j>>2]=1}else{if((c[(c[g>>2]|0)+76>>2]|0)<0){if(!(c[(c[h>>2]|0)+148>>2]|0))c[(c[h>>2]|0)+240>>2]=0;if(((c[(c[h>>2]|0)+184>>2]|0)!=0?(a[(c[h>>2]|0)+140+5>>0]|0)==0:0)?(c[(c[g>>2]|0)+168>>2]|0)!=0:0)IH(c[c[h>>2]>>2]|0,(c[g>>2]|0)+128|0)|0;d=(c[h>>2]|0)+148|0;c[d>>2]=(c[d>>2]|0)+1;if(!((e[(c[g>>2]|0)+88>>1]|0)>>>6&1)){d=(c[h>>2]|0)+156|0;c[d>>2]=(c[d>>2]|0)+1}if((e[(c[g>>2]|0)+88>>1]|0)>>>7&1){d=(c[h>>2]|0)+152|0;c[d>>2]=(c[d>>2]|0)+1}c[(c[g>>2]|0)+76>>2]=0}if(b[(c[g>>2]|0)+88>>1]&3)c[j>>2]=JH(c[g>>2]|0)|0;else{d=(c[h>>2]|0)+160|0;c[d>>2]=(c[d>>2]|0)+1;c[j>>2]=KH(c[g>>2]|0)|0;d=(c[h>>2]|0)+160|0;c[d>>2]=(c[d>>2]|0)+-1}if((c[j>>2]|0)!=100?(d=(c[g>>2]|0)+128|0,l=c[d+4>>2]|0,(l|0)>0|(l|0)==0&(c[d>>2]|0)>>>0>0):0)Pg(c[h>>2]|0,c[g>>2]|0);if((c[j>>2]|0)==101?(l=LH(c[h>>2]|0)|0,c[(c[g>>2]|0)+80>>2]=l,(c[(c[g>>2]|0)+80>>2]|0)!=0):0)c[j>>2]=1;c[(c[h>>2]|0)+52>>2]=c[j>>2];if(7==(Rg(c[c[g>>2]>>2]|0,c[(c[g>>2]|0)+80>>2]|0)|0))c[(c[g>>2]|0)+80>>2]=7}if(((c[j>>2]|0)!=100?((e[(c[g>>2]|0)+88>>1]|0)>>>8&1|0)!=0:0)&(c[j>>2]|0)!=101)c[j>>2]=MH(c[g>>2]|0)|0;c[f>>2]=c[j>>2]&c[(c[h>>2]|0)+56>>2];l=c[f>>2]|0;i=k;return l|0}function mh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;b=h+20|0;d=h+16|0;g=h+12|0;f=h+8|0;j=h+4|0;e=h;c[d>>2]=a;c[j>>2]=Xd(c[d>>2]|0)|0;c[e>>2]=wA(c[d>>2]|0)|0;c[g>>2]=Rh(c[e>>2]|0,c[j>>2]|0,-1,0,c[d>>2]|0,f,0)|0;if(!(c[g>>2]|0)){GH(c[f>>2]|0,c[d>>2]|0);wh(c[f>>2]|0,c[d>>2]|0)|0;HH(c[f>>2]|0);Qg(c[f>>2]|0)|0;c[b>>2]=0;j=c[b>>2]|0;i=h;return j|0}if((c[g>>2]|0)==7)jh(c[e>>2]|0);c[b>>2]=c[g>>2];j=c[b>>2]|0;i=h;return j|0}function nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;h=j+4|0;g=j;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){c[d>>2]=0;h=c[d>>2]|0;i=j;return h|0}c[g>>2]=(If(c[f>>2]|0)|0)+1;b=c[g>>2]|0;c[h>>2]=yh(c[e>>2]|0,b,((b|0)<0)<<31>>31)|0;if(c[h>>2]|0)iR(c[h>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;c[d>>2]=c[h>>2];h=c[d>>2]|0;i=j;return h|0}function oh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=d;c[g>>2]=c[(c[e>>2]|0)+8>>2];d=c[g>>2]|0;if((c[f>>2]|0)>0){tx(d,c[f>>2]|0)|0;b[(c[g>>2]|0)+8>>1]=8192;c[c[g>>2]>>2]=c[(c[e>>2]|0)+4>>2];if(c[(c[g>>2]|0)+16>>2]|0)kR(c[(c[g>>2]|0)+16>>2]|0,0,c[f>>2]|0)|0}else{fh(d);c[(c[g>>2]|0)+16>>2]=0}i=h;return c[(c[g>>2]|0)+16>>2]|0}function ph(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;e=g;f=g+8|0;c[h>>2]=a;a=e;c[a>>2]=b;c[a+4>>2]=d;a=e;c[f>>2]=yh(c[h>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(!(c[f>>2]|0)){h=c[f>>2]|0;i=g;return h|0}kR(c[f>>2]|0,0,c[e>>2]|0)|0;h=c[f>>2]|0;i=g;return h|0}function qh(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;d=h+8|0;g=h+4|0;f=h;c[j>>2]=a;c[d>>2]=b;c[g>>2]=c[j>>2];if(((c[g>>2]|0)!=0?(c[(c[g>>2]|0)+20>>2]|0)!=0:0)?(c[d>>2]|0)>=0?(c[d>>2]|0)<(e[(c[g>>2]|0)+84>>1]|0|0):0:0){c[f>>2]=(c[(c[g>>2]|0)+20>>2]|0)+((c[d>>2]|0)*40|0);j=c[f>>2]|0;i=h;return j|0}if((c[g>>2]|0)!=0?(c[c[g>>2]>>2]|0)!=0:0)jg(c[c[g>>2]>>2]|0,25);c[f>>2]=FH()|0;j=c[f>>2]|0;i=h;return j|0}function rh(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];if(!(c[b>>2]|0)){i=d;return}e=Rg(c[c[b>>2]>>2]|0,c[(c[b>>2]|0)+80>>2]|0)|0;c[(c[b>>2]|0)+80>>2]=e;i=d;return}function sh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+32|0;p=o+28|0;g=o+24|0;h=o+20|0;j=o+16|0;n=o+12|0;m=o+8|0;l=o+4|0;k=o;c[p>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[n>>2]=0;c[m>>2]=c[p>>2];c[k>>2]=c[c[m>>2]>>2];c[l>>2]=ye(c[p>>2]|0)|0;if(!((c[g>>2]|0)>=0?(c[g>>2]|0)<(c[l>>2]|0):0)){p=c[n>>2]|0;i=o;return p|0}p=_(c[j>>2]|0,c[l>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+p;c[n>>2]=Tb[c[h>>2]&255]((c[(c[m>>2]|0)+16>>2]|0)+((c[g>>2]|0)*40|0)|0)|0;if(!(a[(c[k>>2]|0)+65>>0]|0)){p=c[n>>2]|0;i=o;return p|0}li(c[k>>2]|0);c[n>>2]=0;p=c[n>>2]|0;i=o;return p|0}function th(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;t=s+28|0;k=s+24|0;l=s+20|0;m=s+16|0;n=s+12|0;o=s+32|0;p=s+8|0;q=s+4|0;r=s;c[t>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;a[o>>0]=j;c[p>>2]=c[t>>2];c[r>>2]=uh(c[p>>2]|0,c[k>>2]|0)|0;if(c[r>>2]|0){if(!((c[n>>2]|0)!=0&(c[n>>2]|0)!=(-1|0))){t=c[r>>2]|0;i=s;return t|0}Qb[c[n>>2]&255](c[l>>2]|0);t=c[r>>2]|0;i=s;return t|0}if(!(c[l>>2]|0)){t=c[r>>2]|0;i=s;return t|0}c[q>>2]=(c[(c[p>>2]|0)+60>>2]|0)+(((c[k>>2]|0)-1|0)*40|0);c[r>>2]=dh(c[q>>2]|0,c[l>>2]|0,c[m>>2]|0,a[o>>0]|0,c[n>>2]|0)|0;if((c[r>>2]|0)==0?(d[o>>0]|0|0)!=0:0)c[r>>2]=Zt(c[q>>2]|0,d[(c[c[p>>2]>>2]|0)+62>>0]|0)|0;jg(c[c[p>>2]>>2]|0,c[r>>2]|0);c[r>>2]=Rg(c[c[p>>2]>>2]|0,c[r>>2]|0)|0;t=c[r>>2]|0;i=s;return t|0}function uh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;k=m;f=m+16|0;g=m+12|0;h=m+8|0;j=m+4|0;c[g>>2]=a;c[h>>2]=d;if(kh(c[g>>2]|0)|0){c[f>>2]=Kf(73485)|0;l=c[f>>2]|0;i=m;return l|0}if((c[(c[g>>2]|0)+40>>2]|0)==-1108210269?(c[(c[g>>2]|0)+76>>2]|0)<0:0){if((c[h>>2]|0)>=1?(c[h>>2]|0)<=(b[(c[g>>2]|0)+68>>1]|0):0){c[h>>2]=(c[h>>2]|0)+-1;c[j>>2]=(c[(c[g>>2]|0)+60>>2]|0)+((c[h>>2]|0)*40|0);Ug(c[j>>2]|0);b[(c[j>>2]|0)+8>>1]=1;jg(c[c[g>>2]>>2]|0,0);do if((e[(c[g>>2]|0)+88>>1]|0)>>>8&1){if(!((c[h>>2]|0)<32?(c[(c[g>>2]|0)+188>>2]&1<>2]|0)!=0:0))l=12;if((l|0)==12?(c[(c[g>>2]|0)+188>>2]|0)!=-1:0)break;l=(c[g>>2]|0)+88|0;b[l>>1]=b[l>>1]&-9|8}while(0);c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}jg(c[c[g>>2]>>2]|0,25);c[f>>2]=25;l=c[f>>2]|0;i=m;return l|0}jg(c[c[g>>2]>>2]|0,21);c[k>>2]=c[(c[g>>2]|0)+168>>2];Rd(21,40606,k);c[f>>2]=Kf(73493)|0;l=c[f>>2]|0;i=m;return l|0}function vh(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;if(!(c[h>>2]|0)){c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}a:do if(c[j>>2]|0){c[l>>2]=0;while(1){if((c[l>>2]|0)>=(b[(c[h>>2]|0)+70>>1]|0))break a;c[m>>2]=c[(c[(c[h>>2]|0)+64>>2]|0)+(c[l>>2]<<2)>>2];if(((c[m>>2]|0)!=0?(CQ(c[m>>2]|0,c[j>>2]|0,c[k>>2]|0)|0)==0:0)?(a[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)==0:0)break;c[l>>2]=(c[l>>2]|0)+1}c[g>>2]=(c[l>>2]|0)+1;e=c[g>>2]|0;i=n;return e|0}while(0);c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}function wh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;k=h+16|0;j=h+12|0;f=h+8|0;g=h+4|0;e=h;c[k>>2]=a;c[j>>2]=d;c[f>>2]=c[k>>2];c[g>>2]=c[j>>2];c[e>>2]=0;while(1){if((c[e>>2]|0)>=(b[(c[f>>2]|0)+68>>1]|0))break;EH((c[(c[g>>2]|0)+60>>2]|0)+((c[e>>2]|0)*40|0)|0,(c[(c[f>>2]|0)+60>>2]|0)+((c[e>>2]|0)*40|0)|0);c[e>>2]=(c[e>>2]|0)+1}i=h;return 0}function xh(d,f){d=d|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;j=n+16|0;m=n+8|0;l=n;k=n+24|0;c[g>>2]=d;c[j>>2]=f;a[k>>0]=a[(c[g>>2]|0)+10>>0]|0;if(!(Ky(c[(c[g>>2]|0)+16>>2]|0,m,c[(c[g>>2]|0)+12>>2]|0,a[k>>0]|0)|0)){i=n;return}if(!(Hi(c[(c[g>>2]|0)+16>>2]|0,l,c[(c[g>>2]|0)+12>>2]|0,a[k>>0]|0)|0)){d=c[l+4>>2]|0;m=c[g>>2]|0;c[m>>2]=c[l>>2];c[m+4>>2]=d;m=(c[g>>2]|0)+8|0;b[m>>1]=e[m>>1]|0|4;i=n;return}h[c[g>>2]>>3]=+h[m>>3];m=(c[g>>2]|0)+8|0;b[m>>1]=e[m>>1]|0|8;if(!(c[j>>2]|0)){i=n;return}px(c[g>>2]|0);i=n;return}function yh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0; -j=i;i=i+32|0;e=j+16|0;f=j+12|0;g=j;h=j+8|0;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;if(c[f>>2]|0){h=g;c[e>>2]=Fw(c[f>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0;h=c[e>>2]|0;i=j;return h|0}else{a=g;c[h>>2]=_f(c[a>>2]|0,c[a+4>>2]|0)|0;c[e>>2]=c[h>>2];h=c[e>>2]|0;i=j;return h|0}return 0}function zh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r+16|0;p=r;k=r+52|0;l=r+48|0;g=r+44|0;m=r+40|0;n=r+36|0;o=r+32|0;j=r+28|0;h=r+24|0;c[l>>2]=b;c[g>>2]=d;c[m>>2]=e;c[n>>2]=f;if(pz(c[l>>2]|0)|0){c[k>>2]=0;q=c[k>>2]|0;i=r;return q|0}c[o>>2]=pi(c[c[l>>2]>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;if(!(c[o>>2]|0)){c[j>>2]=(c[g>>2]|0)!=0?40579:40592;if(((ji(c[c[l>>2]>>2]|0,c[n>>2]|0)|0)<1?(c[h>>2]=nj((c[c[l>>2]>>2]|0)+312|0,c[m>>2]|0)|0,(c[h>>2]|0)!=0):0)?(AH(c[l>>2]|0,c[h>>2]|0)|0)!=0:0){c[k>>2]=c[(c[h>>2]|0)+16>>2];q=c[k>>2]|0;i=r;return q|0}d=c[l>>2]|0;g=c[j>>2]|0;if(c[n>>2]|0){n=c[n>>2]|0;q=c[m>>2]|0;c[p>>2]=g;c[p+4>>2]=n;c[p+8>>2]=q;Ah(d,30884,p)}else{p=c[m>>2]|0;c[q>>2]=g;c[q+4>>2]=p;Ah(d,30894,q)}a[(c[l>>2]|0)+17>>0]=1}c[k>>2]=c[o>>2];q=c[k>>2]|0;i=r;return q|0}function Ah(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+48|0;f=j+32|0;l=j+28|0;h=j+24|0;k=j+8|0;g=j;c[f>>2]=b;c[l>>2]=d;c[g>>2]=c[c[f>>2]>>2];c[k>>2]=e;c[h>>2]=Zw(c[g>>2]|0,c[l>>2]|0,k)|0;if(a[(c[g>>2]|0)+69>>0]|0){Sf(c[g>>2]|0,c[h>>2]|0);i=j;return}else{l=(c[f>>2]|0)+68|0;c[l>>2]=(c[l>>2]|0)+1;Sf(c[g>>2]|0,c[(c[f>>2]|0)+4>>2]|0);c[(c[f>>2]|0)+4>>2]=c[h>>2];c[(c[f>>2]|0)+12>>2]=1;i=j;return}}function Bh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+32|0;j=f+28|0;h=f+24|0;g=f+8|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;c[e>>2]=Zw(c[j>>2]|0,c[h>>2]|0,g)|0;i=f;return c[e>>2]|0}function Ch(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=c[c[d>>2]>>2];c[f>>2]=ph(c[e>>2]|0,208,0)|0;if(!(c[f>>2]|0)){c[b>>2]=0;a=c[b>>2]|0;i=g;return a|0}c[c[f>>2]>>2]=c[e>>2];if(c[(c[e>>2]|0)+4>>2]|0)c[(c[(c[e>>2]|0)+4>>2]|0)+48>>2]=c[f>>2];c[(c[f>>2]|0)+52>>2]=c[(c[e>>2]|0)+4>>2];c[(c[f>>2]|0)+48>>2]=0;c[(c[e>>2]|0)+4>>2]=c[f>>2];c[(c[f>>2]|0)+40>>2]=649915045;c[(c[f>>2]|0)+24>>2]=c[d>>2];c[b>>2]=c[f>>2];a=c[b>>2]|0;i=g;return a|0}function Dh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=-1e6;if(!(c[e>>2]|0)){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[d>>2]|0)+20>>2]|0)){d=6;break}if((c[(c[(c[d>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+12>>2]|0)==(c[e>>2]|0)){d=6;break}c[f>>2]=(c[f>>2]|0)+1}if((d|0)==6){f=c[f>>2]|0;i=g;return f|0}return 0}function Eh(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+32|0;l=j+24|0;p=j+20|0;o=j+16|0;n=j+12|0;m=j+8|0;k=j+4|0;h=j;c[l>>2]=a;c[p>>2]=b;c[o>>2]=d;c[n>>2]=e;c[m>>2]=f;c[k>>2]=g;c[h>>2]=Vw(c[l>>2]|0,c[p>>2]|0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0)|0;Ih(c[l>>2]|0,c[h>>2]|0,c[k>>2]|0,-14);i=j;return c[h>>2]|0}function Fh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g;f=g+4|0;c[e>>2]=b;a[f>>0]=d;if(a[(c[c[e>>2]>>2]|0)+65>>0]|0){i=g;return}a[(c[(c[e>>2]|0)+4>>2]|0)+(((c[(c[e>>2]|0)+32>>2]|0)-1|0)*20|0)+3>>0]=a[f>>0]|0;i=g;return}function Gh(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+28|0;j=p+24|0;k=p+20|0;l=p+16|0;m=p+8|0;o=p+4|0;n=p;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[p+12>>2]=g;if(((c[(c[j>>2]|0)+32>>2]|0)+(c[k>>2]|0)|0)>(c[(c[(c[j>>2]|0)+24>>2]|0)+88>>2]|0)?(Xw(c[j>>2]|0,c[k>>2]|0)|0)!=0:0){c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}b=(c[(c[j>>2]|0)+4>>2]|0)+((c[(c[j>>2]|0)+32>>2]|0)*20|0)|0;c[o>>2]=b;c[n>>2]=b;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;a[c[o>>2]>>0]=a[c[l>>2]>>0]|0;c[(c[o>>2]|0)+4>>2]=a[(c[l>>2]|0)+1>>0];c[(c[o>>2]|0)+8>>2]=a[(c[l>>2]|0)+2>>0];if((d[35754+(d[c[l>>2]>>0]|0)>>0]&1|0)!=0?(a[(c[l>>2]|0)+2>>0]|0)>0:0){b=(c[o>>2]|0)+8|0;c[b>>2]=(c[b>>2]|0)+(c[(c[j>>2]|0)+32>>2]|0)}c[(c[o>>2]|0)+12>>2]=a[(c[l>>2]|0)+3>>0];a[(c[o>>2]|0)+1>>0]=0;c[(c[o>>2]|0)+16>>2]=0;a[(c[o>>2]|0)+3>>0]=0;c[m>>2]=(c[m>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+4;c[o>>2]=(c[o>>2]|0)+20}o=(c[j>>2]|0)+32|0;c[o>>2]=(c[o>>2]|0)+(c[k>>2]|0);c[h>>2]=c[n>>2];o=c[h>>2]|0;i=p;return o|0}function Hh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;a=(c[d>>2]|0)+96|0;c[a>>2]=c[a>>2]|1<>2];if((c[e>>2]|0)==1){i=f;return}if(!(zH(c[(c[(c[c[d>>2]>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+4>>2]|0)|0)){i=f;return}a=(c[d>>2]|0)+100|0;c[a>>2]=c[a>>2]|1<>2];i=f;return}function Ih(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;k=n+12|0;l=n+8|0;m=n+4|0;j=n;c[g>>2]=b;c[h>>2]=d;c[k>>2]=e;c[l>>2]=f;c[j>>2]=c[c[g>>2]>>2];if(a[(c[j>>2]|0)+65>>0]|0){if((c[l>>2]|0)==-10){i=n;return}qA(c[j>>2]|0,c[l>>2]|0,c[k>>2]|0);i=n;return}if((c[h>>2]|0)<0)c[h>>2]=(c[(c[g>>2]|0)+32>>2]|0)-1;c[m>>2]=(c[(c[g>>2]|0)+4>>2]|0)+((c[h>>2]|0)*20|0);if((c[l>>2]|0)<0?(a[(c[m>>2]|0)+1>>0]|0)==0:0){g=c[k>>2]|0;if((c[l>>2]|0)==-14){c[(c[m>>2]|0)+16>>2]=g;a[(c[m>>2]|0)+1>>0]=-14;i=n;return}if(!g){i=n;return}c[(c[m>>2]|0)+16>>2]=c[k>>2];a[(c[m>>2]|0)+1>>0]=c[l>>2];if((c[l>>2]|0)!=-10){i=n;return}yH(c[k>>2]|0);i=n;return}xH(c[g>>2]|0,c[m>>2]|0,c[k>>2]|0,c[l>>2]|0);i=n;return}function Jh(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+44|0;h=r+40|0;j=r+36|0;p=r+32|0;n=r+28|0;m=r+24|0;l=r+20|0;o=r+16|0;k=r+12|0;q=r;c[g>>2]=e;c[h>>2]=f;c[j>>2]=c[c[g>>2]>>2];c[p>>2]=b[(c[h>>2]|0)+444>>1];c[n>>2]=c[(c[h>>2]|0)+76>>2];c[m>>2]=c[(c[h>>2]|0)+72>>2];c[l>>2]=c[(c[h>>2]|0)+400>>2];f=c[(c[h>>2]|0)+84>>2]|0;c[o>>2]=f;c[o>>2]=(c[o>>2]|0)==0?1:f;c[n>>2]=(c[n>>2]|0)+(c[m>>2]|0);c[k>>2]=((c[(c[g>>2]|0)+32>>2]|0)*20|0)+7&-8;c[q>>2]=(c[(c[g>>2]|0)+4>>2]|0)+(c[k>>2]|0);c[q+4>>2]=(c[(c[h>>2]|0)+92>>2]|0)-(c[k>>2]|0)&-8;if((c[q+4>>2]|0)>0)kR(c[q>>2]|0,0,c[q+4>>2]|0)|0;SE(c[g>>2]|0,l);if(d[(c[h>>2]|0)+20>>0]|0)e=(d[(c[h>>2]|0)+21>>0]|0)!=0;else e=0;f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-33|(e&1)<<5&65535;if((c[n>>2]|0)<10?(d[(c[h>>2]|0)+453>>0]|0)!=0:0)c[n>>2]=10;f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-9;do{c[q+8>>2]=0;f=wH(q,c[(c[g>>2]|0)+8>>2]|0,(c[n>>2]|0)*40|0)|0;c[(c[g>>2]|0)+8>>2]=f;f=wH(q,c[(c[g>>2]|0)+60>>2]|0,(c[p>>2]|0)*40|0)|0;c[(c[g>>2]|0)+60>>2]=f;f=wH(q,c[(c[g>>2]|0)+12>>2]|0,c[l>>2]<<2)|0;c[(c[g>>2]|0)+12>>2]=f;f=wH(q,c[(c[g>>2]|0)+56>>2]|0,c[m>>2]<<2)|0;c[(c[g>>2]|0)+56>>2]=f;f=wH(q,c[(c[g>>2]|0)+200>>2]|0,c[o>>2]|0)|0;c[(c[g>>2]|0)+200>>2]=f;if(!(c[q+8>>2]|0))break;f=c[q+8>>2]|0;f=ph(c[j>>2]|0,f,((f|0)<0)<<31>>31)|0;c[(c[g>>2]|0)+172>>2]=f;c[q>>2]=f;c[q+4>>2]=c[q+8>>2]}while((a[(c[j>>2]|0)+65>>0]|0)!=0^1);c[(c[g>>2]|0)+36>>2]=c[m>>2];c[(c[g>>2]|0)+196>>2]=c[o>>2];a:do if(c[(c[g>>2]|0)+60>>2]|0){b[(c[g>>2]|0)+68>>1]=c[p>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[p>>2]|0))break a;b[(c[(c[g>>2]|0)+60>>2]|0)+((c[k>>2]|0)*40|0)+8>>1]=1;c[(c[(c[g>>2]|0)+60>>2]|0)+((c[k>>2]|0)*40|0)+32>>2]=c[j>>2];c[k>>2]=(c[k>>2]|0)+1}}while(0);b[(c[g>>2]|0)+70>>1]=c[(c[h>>2]|0)+448>>2];c[(c[g>>2]|0)+64>>2]=c[(c[h>>2]|0)+476>>2];c[(c[h>>2]|0)+448>>2]=0;c[(c[h>>2]|0)+476>>2]=0;if(!(c[(c[g>>2]|0)+8>>2]|0)){p=c[h>>2]|0;p=p+453|0;p=a[p>>0]|0;p=p&255;q=c[g>>2]|0;q=q+88|0;p=p&65535;o=b[q>>1]|0;p=p&3;o=o&-4;p=o|p;b[q>>1]=p;q=c[g>>2]|0;Tg(q);i=r;return}q=(c[g>>2]|0)+8|0;c[q>>2]=(c[q>>2]|0)+-40;c[(c[g>>2]|0)+28>>2]=c[n>>2];c[k>>2]=1;while(1){if((c[k>>2]|0)>(c[n>>2]|0))break;b[(c[(c[g>>2]|0)+8>>2]|0)+((c[k>>2]|0)*40|0)+8>>1]=128;c[(c[(c[g>>2]|0)+8>>2]|0)+((c[k>>2]|0)*40|0)+32>>2]=c[j>>2];c[k>>2]=(c[k>>2]|0)+1}p=c[h>>2]|0;p=p+453|0;p=a[p>>0]|0;p=p&255;q=c[g>>2]|0;q=q+88|0;p=p&65535;o=b[q>>1]|0;p=p&3;o=o&-4;p=o|p;b[q>>1]=p;q=c[g>>2]|0;Tg(q);i=r;return}function Kh(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+64|0;q=s+24|0;p=s+16|0;k=s+8|0;l=s+52|0;m=s;n=s+48|0;o=s+44|0;r=s+40|0;g=s+36|0;h=s+32|0;j=s+28|0;c[l>>2]=a;a=m;c[a>>2]=d;c[a+4>>2]=e;c[n>>2]=f;c[r>>2]=0;c[g>>2]=c[(c[l>>2]|0)+20>>2];e=m;a=c[e+4>>2]|0;f=c[(c[g>>2]|0)+60>>2]|0;c[f>>2]=c[e>>2];c[f+4>>2]=a;c[o>>2]=ue(c[(c[l>>2]|0)+20>>2]|0)|0;do if((c[o>>2]|0)==100){c[h>>2]=c[c[(c[g>>2]|0)+56>>2]>>2];c[j>>2]=c[(c[h>>2]|0)+80+(c[(c[l>>2]|0)+12>>2]<<2)>>2];d=c[l>>2]|0;if((c[j>>2]|0)>>>0>=12){c[(c[l>>2]|0)+8>>2]=c[(c[h>>2]|0)+80+((c[d+12>>2]|0)+(b[(c[h>>2]|0)+12>>1]|0)<<2)>>2];k=uF(c[j>>2]|0)|0;c[(c[l>>2]|0)+4>>2]=k;c[(c[l>>2]|0)+16>>2]=c[(c[h>>2]|0)+16>>2];vH(c[(c[l>>2]|0)+16>>2]|0);break}e=c[d+24>>2]|0;if(!(c[j>>2]|0))d=40525;else d=(c[j>>2]|0)==7?40512:40517;c[k>>2]=d;c[r>>2]=Bh(e,40530,k)|0;c[o>>2]=1;Yd(c[(c[l>>2]|0)+20>>2]|0)|0;c[(c[l>>2]|0)+20>>2]=0}while(0);if((c[o>>2]|0)==100){c[o>>2]=0;q=c[r>>2]|0;r=c[n>>2]|0;c[r>>2]=q;r=c[o>>2]|0;i=s;return r|0}if(!(c[(c[l>>2]|0)+20>>2]|0)){q=c[r>>2]|0;r=c[n>>2]|0;c[r>>2]=q;r=c[o>>2]|0;i=s;return r|0}c[o>>2]=Yd(c[(c[l>>2]|0)+20>>2]|0)|0;c[(c[l>>2]|0)+20>>2]=0;d=c[(c[l>>2]|0)+24>>2]|0;if(!(c[o>>2]|0)){l=m;m=c[l+4>>2]|0;q=p;c[q>>2]=c[l>>2];c[q+4>>2]=m;c[r>>2]=Bh(d,40559,p)|0;c[o>>2]=1;q=c[r>>2]|0;r=c[n>>2]|0;c[r>>2]=q;r=c[o>>2]|0;i=s;return r|0}else{c[q>>2]=bf(c[(c[l>>2]|0)+24>>2]|0)|0;c[r>>2]=Bh(d,19255,q)|0;q=c[r>>2]|0;r=c[n>>2]|0;c[r>>2]=q;r=c[o>>2]|0;i=s;return r|0}return 0}function Lh(b){b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;if(!(c[e>>2]|0)){i=g;return}c[f>>2]=c[c[e>>2]>>2];Sf(c[f>>2]|0,c[(c[e>>2]|0)+120>>2]|0);Vu(c[f>>2]|0,c[(c[e>>2]|0)+324>>2]|0);if(c[f>>2]|0){b=(c[f>>2]|0)+248|0;c[b>>2]=(c[b>>2]|0)-(d[(c[e>>2]|0)+24>>0]|0)}a[(c[e>>2]|0)+24>>0]=0;i=g;return}function Mh(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;if(!(d[(c[h>>2]|0)+66>>0]|0)){c[g>>2]=4;m=c[g>>2]|0;i=n;return m|0}if((d[(c[h>>2]|0)+66>>0]|0|0)>=3)e=WE(c[h>>2]|0)|0;else e=0;c[m>>2]=e;if(!(c[m>>2]|0))c[m>>2]=hF(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,0)|0;c[g>>2]=c[m>>2];m=c[g>>2]|0;i=n;return m|0}function Nh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;g=r+36|0;s=r+32|0;h=r+28|0;j=r+24|0;k=r+20|0;l=r+16|0;o=r+12|0;n=r+8|0;p=r+4|0;m=r;c[s>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[n>>2]=c[s>>2];if(!(c[n>>2]|0)){c[g>>2]=Kf(81441)|0;s=c[g>>2]|0;i=r;return s|0}c[m>>2]=c[(c[n>>2]|0)+24>>2];c[p>>2]=c[(c[n>>2]|0)+20>>2];do if(!((c[j>>2]|0)<0|(c[k>>2]|0)<0)?(a=c[k>>2]|0,b=c[j>>2]|0,b=gR(a|0,((a|0)<0)<<31>>31|0,b|0,((b|0)<0)<<31>>31|0)|0,a=C,s=c[(c[n>>2]|0)+4>>2]|0,f=((s|0)<0)<<31>>31,!((a|0)>(f|0)|(a|0)==(f|0)&b>>>0>s>>>0)):0){if(!(c[p>>2]|0)){c[o>>2]=4;break}uH(c[(c[n>>2]|0)+16>>2]|0);c[o>>2]=Wb[c[l>>2]&255](c[(c[n>>2]|0)+16>>2]|0,(c[k>>2]|0)+(c[(c[n>>2]|0)+8>>2]|0)|0,c[j>>2]|0,c[h>>2]|0)|0;if((c[o>>2]|0)==4){Qg(c[p>>2]|0)|0;c[(c[n>>2]|0)+20>>2]=0;break}else{c[(c[p>>2]|0)+80>>2]=c[o>>2];break}}else q=5;while(0);if((q|0)==5)c[o>>2]=1;jg(c[m>>2]|0,c[o>>2]|0);c[o>>2]=Rg(c[m>>2]|0,c[o>>2]|0)|0;c[g>>2]=c[o>>2];s=c[g>>2]|0;i=r;return s|0}function Oh(a){a=a|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=a;c[d>>2]=c[(c[f>>2]|0)+4>>2];while(1){if(!(c[d>>2]|0))break;f=(c[d>>2]|0)+88|0;b[f>>1]=b[f>>1]&-9|8;c[d>>2]=c[(c[d>>2]|0)+52>>2]}i=e;return}function Ph(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+64|0;s=x+52|0;t=x+48|0;u=x+44|0;v=x+40|0;w=x+36|0;q=x+32|0;r=x+28|0;n=x+24|0;m=x+20|0;p=x+56|0;l=x+16|0;o=x+12|0;j=x+8|0;k=x+4|0;h=x;c[t>>2]=b;c[u>>2]=e;c[v>>2]=f;c[w>>2]=g;c[n>>2]=d[(c[v>>2]|0)+1>>0];c[m>>2]=d[c[v>>2]>>0];a[p>>0]=a[(c[v>>2]|0)+3>>0]|0;c[l>>2]=0;a:while(1){if((d[c[t>>2]>>0]|0)<128){g=c[t>>2]|0;c[t>>2]=g+1;g=d[g>>0]|0}else g=jC(t)|0;c[q>>2]=g;if(!g){b=83;break}if((c[q>>2]|0)==(c[m>>2]|0)){b=7;break}do if((c[q>>2]|0)==(c[w>>2]|0)){if(!(d[(c[v>>2]|0)+2>>0]|0)){c[q>>2]=jC(t)|0;if(!(c[q>>2]|0)){b=49;break a}c[l>>2]=c[t>>2];break}c[j>>2]=0;c[k>>2]=0;c[h>>2]=0;c[q>>2]=jC(u)|0;if(!(c[q>>2]|0)){b=52;break a}c[r>>2]=jC(t)|0;if((c[r>>2]|0)==94){c[h>>2]=1;c[r>>2]=jC(t)|0}if((c[r>>2]|0)==93){if((c[q>>2]|0)==93)c[k>>2]=1;c[r>>2]=jC(t)|0}while(1){g=c[r>>2]|0;if(!((c[r>>2]|0)!=0?(c[r>>2]|0)!=93:0))break;if(((g|0)==45?(d[c[t>>2]>>0]|0)!=93:0)?(c[j>>2]|0)>>>0>0?(d[c[t>>2]>>0]|0)!=0:0:0){c[r>>2]=jC(t)|0;if((c[q>>2]|0)>>>0>=(c[j>>2]|0)>>>0?(c[q>>2]|0)>>>0<=(c[r>>2]|0)>>>0:0)c[k>>2]=1;c[j>>2]=0}else{if((c[q>>2]|0)==(c[r>>2]|0))c[k>>2]=1;c[j>>2]=c[r>>2]}c[r>>2]=jC(t)|0}if(!g){b=73;break a}if(!(c[k>>2]^c[h>>2])){b=73;break a}else continue a}while(0);if((d[c[u>>2]>>0]|0)<128){g=c[u>>2]|0;c[u>>2]=g+1;g=d[g>>0]|0}else g=jC(u)|0;c[r>>2]=g;if((c[q>>2]|0)==(c[r>>2]|0))continue;if((d[p>>0]|0)!=0&(c[q>>2]|0)>>>0<128&(c[r>>2]|0)>>>0<128?(d[18477+(c[q>>2]&255)>>0]|0)==(d[18477+(c[r>>2]&255)>>0]|0):0)continue;if((c[q>>2]|0)!=(c[n>>2]|0)){b=82;break}if(!((c[r>>2]|0)!=0?(c[t>>2]|0)!=(c[l>>2]|0):0)){b=82;break}}if((b|0)==7){while(1){b=0;if((d[c[t>>2]>>0]|0)<128){g=c[t>>2]|0;c[t>>2]=g+1;g=d[g>>0]|0}else g=jC(t)|0;c[q>>2]=g;if((g|0)==(c[m>>2]|0))g=1;else g=(c[q>>2]|0)==(c[n>>2]|0);f=c[q>>2]|0;if(!g)break;if((f|0)!=(c[n>>2]|0)){b=7;continue}if(!(jC(u)|0)){b=15;break}else b=7}if((b|0)==15){c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}if(!f){c[s>>2]=1;w=c[s>>2]|0;i=x;return w|0}do if((c[q>>2]|0)==(c[w>>2]|0)){if(!(d[(c[v>>2]|0)+2>>0]|0)){c[q>>2]=jC(t)|0;if(c[q>>2]|0)break;c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}b:while(1){if(d[c[u>>2]>>0]|0)g=(Ph((c[t>>2]|0)+-1|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0)==0;else g=0;f=c[u>>2]|0;if(!g)break;c[u>>2]=f+1;if((d[f>>0]|0)<192)continue;while(1){if((d[c[u>>2]>>0]&192|0)!=128)continue b;c[u>>2]=(c[u>>2]|0)+1}}c[s>>2]=(d[f>>0]|0)!=0&1;w=c[s>>2]|0;i=x;return w|0}while(0);c:do if((c[q>>2]|0)>>>0<=128){g=c[q>>2]|0;if(a[p>>0]|0){c[o>>2]=g&~(d[19267+(c[q>>2]&255)>>0]&32);c[q>>2]=d[18477+(c[q>>2]&255)>>0]}else c[o>>2]=g;while(1){p=c[u>>2]|0;c[u>>2]=p+1;p=d[p>>0]|0;c[r>>2]=p;if(!p)break c;if((c[r>>2]|0)!=(c[q>>2]|0)?(c[r>>2]|0)!=(c[o>>2]|0):0)continue;if(Ph(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0)break}c[s>>2]=1;w=c[s>>2]|0;i=x;return w|0}else{while(1){if((d[c[u>>2]>>0]|0)<128){g=c[u>>2]|0;c[u>>2]=g+1;g=d[g>>0]|0}else g=jC(u)|0;c[r>>2]=g;if(!g)break c;if((c[r>>2]|0)!=(c[q>>2]|0))continue;if(Ph(c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0)break}c[s>>2]=1;w=c[s>>2]|0;i=x;return w|0}while(0);c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}else if((b|0)==49){c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}else if((b|0)==52){c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}else if((b|0)==73){c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}else if((b|0)==82){c[s>>2]=0;w=c[s>>2]|0;i=x;return w|0}else if((b|0)==83){c[s>>2]=(d[c[u>>2]>>0]|0)==0&1;w=c[s>>2]|0;i=x;return w|0}return 0}function Qh(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[d>>2]=a;do if(!(c[d>>2]|0)){hH(40498);c[b>>2]=0}else{c[e>>2]=c[(c[d>>2]|0)+76>>2];if((c[e>>2]|0)==-1607883113){c[b>>2]=1;break}if(Sh(c[d>>2]|0)|0)hH(40503);c[b>>2]=0}while(0);i=f;return c[b>>2]|0}function Rh(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;j=s+32|0;k=s+28|0;l=s+24|0;m=s+20|0;n=s+16|0;o=s+12|0;p=s+8|0;q=s+4|0;r=s;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[c[p>>2]>>2]=0;b=(Qh(c[k>>2]|0)|0)==0;if(b|(c[l>>2]|0)==0){c[j>>2]=Kf(110077)|0;b=c[j>>2]|0;i=s;return b|0}Nf(c[k>>2]|0);c[r>>2]=iH(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;if((c[r>>2]|0)==17){Yd(c[c[p>>2]>>2]|0)|0;c[r>>2]=iH(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0)|0}c[j>>2]=c[r>>2];b=c[j>>2]|0;i=s;return b|0}function Sh(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;b=d+8|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=c[(c[f>>2]|0)+76>>2];if((c[e>>2]|0)!=1266094736&(c[e>>2]|0)!=-1607883113&(c[e>>2]|0)!=-264537850){hH(40345);c[b>>2]=0;f=c[b>>2]|0;i=d;return f|0}else{c[b>>2]=1;f=c[b>>2]|0;i=d;return f|0}return 0}function Th(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+36|0;h=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;p=r+16|0;m=r+12|0;o=r+8|0;n=r+4|0;q=r;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[p>>2]=0;c[m>>2]=If(c[h>>2]|0)|0;if(!(nj((c[g>>2]|0)+312|0,c[h>>2]|0)|0)){c[o>>2]=Fw(c[g>>2]|0,20+(c[m>>2]|0)+1|0,0)|0;if((c[o>>2]|0)!=0?(c[q>>2]=(c[o>>2]|0)+20,iR(c[q>>2]|0,c[h>>2]|0,(c[m>>2]|0)+1|0)|0,c[(c[o>>2]|0)+4>>2]=c[q>>2],c[c[o>>2]>>2]=c[j>>2],c[(c[o>>2]|0)+8>>2]=c[k>>2],c[(c[o>>2]|0)+12>>2]=c[l>>2],c[(c[o>>2]|0)+16>>2]=0,c[n>>2]=Oj((c[g>>2]|0)+312|0,c[q>>2]|0,c[o>>2]|0)|0,(c[n>>2]|0)!=0):0){jh(c[g>>2]|0);Sf(c[g>>2]|0,c[n>>2]|0)}}else c[p>>2]=Kf(118442)|0;c[p>>2]=Rg(c[g>>2]|0,c[p>>2]|0)|0;if(!((c[p>>2]|0)!=0&(c[l>>2]|0)!=0)){b=c[p>>2]|0;i=r;return b|0}Qb[c[l>>2]&255](c[k>>2]|0);b=c[p>>2]|0;i=r;return b|0}function Uh(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+80|0;g=z+72|0;q=z+16|0;p=z+8|0;o=z;s=z+68|0;t=z+64|0;h=z+60|0;j=z+56|0;w=z+52|0;v=z+48|0;m=z+44|0;n=z+40|0;k=z+36|0;u=z+32|0;l=z+28|0;x=z+24|0;y=z+20|0;c[t>>2]=b;c[h>>2]=e;c[j>>2]=f;c[w>>2]=0;c[k>>2]=-1;c[u>>2]=c[c[t>>2]>>2];c[l>>2]=c[(c[u>>2]|0)+88+4>>2];if(!(c[(c[u>>2]|0)+148>>2]|0))c[(c[u>>2]|0)+240>>2]=0;c[(c[t>>2]|0)+12>>2]=0;c[(c[t>>2]|0)+484>>2]=c[h>>2];c[v>>2]=0;c[m>>2]=Pu(179)|0;if(!(c[m>>2]|0)){jh(c[u>>2]|0);c[s>>2]=7;y=c[s>>2]|0;i=z;return y|0}while(1){if(!(a[(c[h>>2]|0)+(c[v>>2]|0)>>0]|0))break;c[(c[t>>2]|0)+508>>2]=(c[h>>2]|0)+(c[v>>2]|0);e=Qu((c[h>>2]|0)+(c[v>>2]|0)|0,n)|0;c[(c[t>>2]|0)+508+4>>2]=e;c[v>>2]=(c[v>>2]|0)+(c[(c[t>>2]|0)+508+4>>2]|0);if((c[v>>2]|0)>(c[l>>2]|0)){r=7;break}if((c[n>>2]|0)>=159){if(c[(c[u>>2]|0)+240>>2]|0){r=10;break}if((c[n>>2]|0)==160){r=12;break}else continue}if((c[n>>2]|0)==1)c[(c[t>>2]|0)+484>>2]=(c[h>>2]|0)+(c[v>>2]|0);b=c[m>>2]|0;f=c[n>>2]|0;A=(c[t>>2]|0)+508|0;e=c[t>>2]|0;c[g>>2]=c[A>>2];c[g+4>>2]=c[A+4>>2];Ru(b,f,g,e);c[k>>2]=c[n>>2];if(c[(c[t>>2]|0)+12>>2]|0)break;if(d[(c[u>>2]|0)+65>>0]|0)break}if((r|0)==7)c[(c[t>>2]|0)+12>>2]=18;else if((r|0)==10)c[(c[t>>2]|0)+12>>2]=9;else if((r|0)==12){A=c[t>>2]|0;c[o>>2]=(c[t>>2]|0)+508;Ah(A,27316,o)}if((c[(c[t>>2]|0)+12>>2]|0)==0?(d[(c[u>>2]|0)+65>>0]|0)==0:0){if((c[k>>2]|0)!=1){r=c[m>>2]|0;e=(c[t>>2]|0)+508|0;A=c[t>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];Ru(r,1,g,A);c[(c[t>>2]|0)+484>>2]=(c[h>>2]|0)+(c[v>>2]|0)}if((c[(c[t>>2]|0)+12>>2]|0)==0?(d[(c[u>>2]|0)+65>>0]|0)==0:0){r=c[m>>2]|0;e=(c[t>>2]|0)+508|0;A=c[t>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];Ru(r,0,g,A)}}Su(c[m>>2]|0,148);if(a[(c[u>>2]|0)+65>>0]|0)c[(c[t>>2]|0)+12>>2]=7;if(((c[(c[t>>2]|0)+12>>2]|0)!=0?(c[(c[t>>2]|0)+12>>2]|0)!=101:0)?(c[(c[t>>2]|0)+4>>2]|0)==0:0){A=c[u>>2]|0;c[p>>2]=ih(c[(c[t>>2]|0)+12>>2]|0)|0;A=Bh(A,19255,p)|0;c[(c[t>>2]|0)+4>>2]=A}if(c[(c[t>>2]|0)+4>>2]|0){c[c[j>>2]>>2]=c[(c[t>>2]|0)+4>>2];A=c[(c[t>>2]|0)+12>>2]|0;c[q>>2]=c[c[j>>2]>>2];Rd(A,19255,q);c[(c[t>>2]|0)+4>>2]=0;c[w>>2]=(c[w>>2]|0)+1}if(((c[(c[t>>2]|0)+8>>2]|0)!=0?(c[(c[t>>2]|0)+68>>2]|0)>0:0)?(d[(c[t>>2]|0)+18>>0]|0)==0:0){Tu(c[(c[t>>2]|0)+8>>2]|0);c[(c[t>>2]|0)+8>>2]=0}if(!(d[(c[t>>2]|0)+18>>0]|0)){Sf(c[u>>2]|0,c[(c[t>>2]|0)+408>>2]|0);c[(c[t>>2]|0)+408>>2]=0;c[(c[t>>2]|0)+404>>2]=0}Kd(c[(c[t>>2]|0)+524>>2]|0);if(!(a[(c[t>>2]|0)+454>>0]|0))Qf(c[u>>2]|0,c[(c[t>>2]|0)+488>>2]|0);Uu(c[u>>2]|0,c[(c[t>>2]|0)+540>>2]|0);Pf(c[u>>2]|0,c[(c[t>>2]|0)+492>>2]|0);c[v>>2]=(c[(c[t>>2]|0)+448>>2]|0)-1;while(1){g=c[u>>2]|0;if((c[v>>2]|0)<0)break;Sf(g,c[(c[(c[t>>2]|0)+476>>2]|0)+(c[v>>2]<<2)>>2]|0);c[v>>2]=(c[v>>2]|0)+-1}Sf(g,c[(c[t>>2]|0)+476>>2]|0);while(1){if(!(c[(c[t>>2]|0)+412>>2]|0))break;c[x>>2]=c[(c[t>>2]|0)+412>>2];c[(c[t>>2]|0)+412>>2]=c[c[x>>2]>>2];Sf(c[u>>2]|0,c[x>>2]|0)}while(1){if(!(c[(c[t>>2]|0)+528>>2]|0))break;c[y>>2]=c[(c[t>>2]|0)+528>>2];c[(c[t>>2]|0)+528>>2]=c[(c[y>>2]|0)+68>>2];Qf(c[u>>2]|0,c[y>>2]|0)}c[s>>2]=c[w>>2];A=c[s>>2]|0;i=z;return A|0}function Vh(a){a=a|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=ph(c[d>>2]|0,40,0)|0;if(!(c[e>>2]|0)){e=c[e>>2]|0;i=f;return e|0}b[(c[e>>2]|0)+8>>1]=1;c[(c[e>>2]|0)+32>>2]=c[d>>2];e=c[e>>2]|0;i=f;return e|0}function Wh(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;h=n+12|0;j=n+8|0;k=n+4|0;l=n+16|0;m=n;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;a[l>>0]=f;c[m>>2]=g;if(!(c[h>>2]|0)){i=n;return}dh(c[h>>2]|0,c[k>>2]|0,c[j>>2]|0,a[l>>0]|0,c[m>>2]|0)|0;i=n;return}function Xh(){var a=0,b=0;a=i;i=i+16|0;b=a;c[b>>2]=5028;mf(4,b)|0;i=a;return}function Yh(){return 88}function Zh(){return 40}function _h(){return 32}function $h(){var a=0,b=0;a=i;i=i+16|0;b=a;c[b>>2]=4976;mf(18,b)|0;i=a;return}function ai(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;ku(c[(c[d>>2]|0)+212>>2]|0);i=b;return}function bi(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if(!(c[b>>2]|0)){a=0;a=a&1;i=e;return a|0}a=(d[(c[b>>2]|0)+8>>0]|0|0)==2;a=a&1;i=e;return a|0}function ci(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;p=q+8|0;n=q+4|0;o=q;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;if(c[(c[j>>2]|0)+248+8>>2]|0){c[h>>2]=5;f=c[h>>2]|0;i=q;return f|0}if(a[(c[j>>2]|0)+248+6>>0]|0)Kd(c[(c[j>>2]|0)+248+32>>2]|0);f=c[l>>2]&-8;c[l>>2]=f;c[l>>2]=(c[l>>2]|0)<=4?0:f;if((c[m>>2]|0)<0)c[m>>2]=0;do if(!((c[l>>2]|0)==0|(c[m>>2]|0)==0)){if(c[k>>2]|0){c[p>>2]=c[k>>2];break}Sj();f=_(c[l>>2]|0,c[m>>2]|0)|0;c[p>>2]=_f(f,((f|0)<0)<<31>>31)|0;Tj();if(c[p>>2]|0){f=$f(c[p>>2]|0)|0;c[m>>2]=(f|0)/(c[l>>2]|0)|0}}else{c[l>>2]=0;c[p>>2]=0}while(0);c[(c[j>>2]|0)+248+32>>2]=c[p>>2];c[(c[j>>2]|0)+248+28>>2]=0;b[(c[j>>2]|0)+248+4>>1]=c[l>>2];if(c[p>>2]|0){c[o>>2]=c[p>>2];c[n>>2]=(c[m>>2]|0)-1;while(1){if((c[n>>2]|0)<0)break;c[c[o>>2]>>2]=c[(c[j>>2]|0)+248+28>>2];c[(c[j>>2]|0)+248+28>>2]=c[o>>2];c[o>>2]=(c[o>>2]|0)+(c[l>>2]|0);c[n>>2]=(c[n>>2]|0)+-1}c[(c[j>>2]|0)+248+36>>2]=c[o>>2];c[(c[j>>2]|0)+248>>2]=0;a[(c[j>>2]|0)+248+6>>0]=(c[k>>2]|0)==0?1:0}else{c[(c[j>>2]|0)+248+32>>2]=c[j>>2];c[(c[j>>2]|0)+248+36>>2]=c[j>>2];c[(c[j>>2]|0)+248>>2]=1;a[(c[j>>2]|0)+248+6>>0]=0}c[h>>2]=0;f=c[h>>2]|0;i=q;return f|0}function di(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;d=h+12|0;e=h+8|0;f=h+4|0;c[e>>2]=a;c[f>>2]=b;if(!(c[e>>2]|0)){c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}if(!(Sh(c[e>>2]|0)|0)){c[d>>2]=Kf(133819)|0;g=c[d>>2]|0;i=h;return g|0}cu(c[e>>2]|0);du(c[e>>2]|0)|0;if((c[f>>2]|0)==0?(eu(c[e>>2]|0)|0)!=0:0){hg(c[e>>2]|0,5,27174,g);c[d>>2]=5;g=c[d>>2]|0;i=h;return g|0}c[(c[e>>2]|0)+76>>2]=1691352191;Ng(c[e>>2]|0);c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}function ei(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;f=i;i=i+32|0;d=f+16|0;j=f+12|0;h=f+8|0;e=f+4|0;g=f;c[j>>2]=a;c[h>>2]=b;c[e>>2]=c[j>>2];c[g>>2]=c[(c[j>>2]|0)+496>>2];if((((c[h>>2]|0)+1|0)*1e3|0)>(c[g>>2]|0)){c[d>>2]=0;j=c[d>>2]|0;i=f;return j|0}else{ri(c[c[e>>2]>>2]|0,1e6)|0;c[d>>2]=1;j=c[d>>2]|0;i=f;return j|0}return 0}function Py(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;n=t+44|0;h=t+40|0;o=t+36|0;l=t+32|0;q=t+28|0;m=t+24|0;p=t+20|0;j=t+16|0;r=t+12|0;s=t+8|0;k=t;c[h>>2]=f;c[o>>2]=g;if(!(c[(c[o>>2]|0)+52>>2]|0)){c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}if(!(c[(c[o>>2]|0)+48>>2]|0)){c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}c[m>>2]=c[o>>2];while(1){if(!(c[m>>2]|0))break;if((d[(c[m>>2]|0)+4>>0]|0|0)!=116?(d[(c[m>>2]|0)+4>>0]|0|0)!=119:0)break;c[m>>2]=c[(c[m>>2]|0)+52>>2]}if(!(c[m>>2]|0)){c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}c[j>>2]=c[(c[(c[o>>2]|0)+48>>2]|0)+4>>2];c[l>>2]=(c[c[(c[o>>2]|0)+48>>2]>>2]|0)-1;while(1){if((c[l>>2]|0)<0)break;if(c[(c[(c[j>>2]|0)+((c[l>>2]|0)*20|0)>>2]|0)+4>>2]&256)break;c[l>>2]=(c[l>>2]|0)+-1}if((c[l>>2]|0)<0){c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}c[s>>2]=c[c[h>>2]>>2];c[p>>2]=c[c[s>>2]>>2];c[q>>2]=ph(c[p>>2]|0,72,0)|0;if(!(c[q>>2]|0)){c[n>>2]=2;s=c[n>>2]|0;i=t;return s|0}c[k>>2]=0;c[k+4>>2]=0;c[r>>2]=Ev(c[s>>2]|0,0,0,0,k,c[q>>2]|0,0,0)|0;if(!(c[r>>2]|0)){c[n>>2]=2;s=c[n>>2]|0;i=t;return s|0}else{h=c[q>>2]|0;j=c[o>>2]|0;k=h+72|0;do{c[h>>2]=c[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(k|0));c[(c[o>>2]|0)+32>>2]=c[r>>2];s=c[s>>2]|0;s=Gv(s,0,Jv(c[p>>2]|0,158,0)|0)|0;c[c[o>>2]>>2]=s;a[(c[o>>2]|0)+4>>0]=119;c[(c[o>>2]|0)+36>>2]=0;c[(c[q>>2]|0)+40>>2]=0;c[(c[q>>2]|0)+44>>2]=0;c[(c[q>>2]|0)+48>>2]=0;c[(c[o>>2]|0)+52>>2]=0;c[(c[o>>2]|0)+56>>2]=0;c[(c[o>>2]|0)+68>>2]=0;s=(c[o>>2]|0)+6|0;b[s>>1]=(e[s>>1]|0)&-129;s=(c[o>>2]|0)+6|0;b[s>>1]=e[s>>1]|0|16384;c[(c[(c[q>>2]|0)+52>>2]|0)+56>>2]=c[q>>2];c[(c[q>>2]|0)+60>>2]=0;c[(c[q>>2]|0)+64>>2]=0;c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}return 0}function Qy(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=i;i=i+208|0;Q=Y+56|0;P=Y+48|0;O=Y+40|0;N=Y+24|0;R=Y+16|0;p=Y+8|0;m=Y;q=Y+196|0;h=Y+192|0;r=Y+188|0;F=Y+184|0;u=Y+180|0;w=Y+176|0;x=Y+172|0;J=Y+168|0;A=Y+164|0;C=Y+160|0;t=Y+156|0;z=Y+152|0;G=Y+148|0;B=Y+144|0;l=Y+202|0;o=Y+140|0;k=Y+136|0;j=Y+200|0;s=Y+132|0;E=Y+128|0;n=Y+124|0;y=Y+120|0;M=Y+116|0;V=Y+112|0;I=Y+108|0;H=Y+104|0;W=Y+100|0;U=Y+96|0;v=Y+92|0;T=Y+88|0;S=Y+84|0;X=Y+80|0;L=Y+72|0;D=Y+64|0;K=Y+60|0;c[h>>2]=f;c[r>>2]=g;c[F>>2]=c[c[h>>2]>>2];c[t>>2]=c[c[F>>2]>>2];b[l>>1]=b[(c[r>>2]|0)+6>>1]|0;f=(c[r>>2]|0)+6|0;b[f>>1]=e[f>>1]|32;if(a[(c[t>>2]|0)+65>>0]|0){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}if((c[(c[r>>2]|0)+32>>2]|0)!=0?(e[l>>1]&32|0)==0:0){c[J>>2]=c[(c[r>>2]|0)+32>>2];c[A>>2]=c[c[r>>2]>>2];if((c[(c[h>>2]|0)+12>>2]|0)==132){l=c[F>>2]|0;Qv(l,c[(Sy(c[r>>2]|0)|0)+68>>2]|0,0)}Ix(c[F>>2]|0,c[J>>2]|0);c[u>>2]=0;c[C>>2]=(c[J>>2]|0)+8;a:while(1){if((c[u>>2]|0)>=(c[c[J>>2]>>2]|0)){j=38;break}if(!((d[(c[C>>2]|0)+36+1>>0]|0)>>>5&1)){if(Ty(c[h>>2]|0,c[C>>2]|0)|0){j=12;break}do if(!(c[(c[C>>2]|0)+16>>2]|0)){if(!(c[(c[C>>2]|0)+8>>2]|0)){c[k>>2]=c[(c[C>>2]|0)+20>>2];if(Zx(c[h>>2]|0,c[k>>2]|0)|0){j=16;break a}l=ph(c[t>>2]|0,72,0)|0;c[o>>2]=l;c[(c[C>>2]|0)+16>>2]=l;if(!(c[o>>2]|0)){j=18;break a}b[(c[o>>2]|0)+36>>1]=1;l=c[t>>2]|0;c[m>>2]=c[o>>2];l=Bh(l,30964,m)|0;c[c[o>>2]>>2]=l;while(1){if(!(c[(c[k>>2]|0)+52>>2]|0))break;c[k>>2]=c[(c[k>>2]|0)+52>>2]}Gx(c[F>>2]|0,c[c[k>>2]>>2]|0,(c[o>>2]|0)+34|0,(c[o>>2]|0)+4|0)|0;b[(c[o>>2]|0)+32>>1]=-1;b[(c[o>>2]|0)+38>>1]=200;l=(c[o>>2]|0)+42|0;a[l>>0]=d[l>>0]|2;break}l=_w(c[F>>2]|0,0,c[C>>2]|0)|0;c[o>>2]=l;c[(c[C>>2]|0)+16>>2]=l;if(!(c[o>>2]|0)){j=24;break a}if((e[(c[o>>2]|0)+36>>1]|0)==65535){j=26;break a}l=(c[o>>2]|0)+36|0;b[l>>1]=(b[l>>1]|0)+1<<16>>16;if((d[(c[o>>2]|0)+42>>0]&16|0)==0?(Uy(c[F>>2]|0,c[C>>2]|0)|0)!=0:0){j=29;break a}if((d[(c[o>>2]|0)+42>>0]&16|0)==0?(c[(c[o>>2]|0)+12>>2]|0)==0:0)break;if(zx(c[F>>2]|0,c[o>>2]|0)|0){j=33;break a}l=Hx(c[t>>2]|0,c[(c[o>>2]|0)+12>>2]|0,0)|0;c[(c[C>>2]|0)+20>>2]=l;b[j>>1]=b[(c[o>>2]|0)+34>>1]|0;b[(c[o>>2]|0)+34>>1]=-1;Zx(c[h>>2]|0,c[(c[C>>2]|0)+20>>2]|0)|0;b[(c[o>>2]|0)+34>>1]=b[j>>1]|0}while(0);if(Vy(c[F>>2]|0,c[C>>2]|0)|0){j=36;break}}c[u>>2]=(c[u>>2]|0)+1;c[C>>2]=(c[C>>2]|0)+72}if((j|0)==12){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==16){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==18){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==24){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==26){X=c[F>>2]|0;c[p>>2]=c[c[o>>2]>>2];Ah(X,30977,p);c[(c[C>>2]|0)+16>>2]=0;c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==29){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==33){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==36){c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}else if((j|0)==38){if((d[(c[t>>2]|0)+65>>0]|0)==0?(Wy(c[F>>2]|0,c[r>>2]|0)|0)==0:0){c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[c[A>>2]>>2]|0))break;c[z>>2]=c[(c[(c[A>>2]|0)+4>>2]|0)+((c[x>>2]|0)*20|0)>>2];if((d[c[z>>2]>>0]|0)==158)break;if((d[c[z>>2]>>0]|0)==122?(d[c[(c[z>>2]|0)+16>>2]>>0]|0)==158:0)break;c[x>>2]=(c[x>>2]|0)+1}if((c[x>>2]|0)<(c[c[A>>2]>>2]|0)){c[s>>2]=c[(c[A>>2]|0)+4>>2];c[E>>2]=0;c[n>>2]=c[(c[c[F>>2]>>2]|0)+24>>2];if(c[n>>2]&4)h=(c[n>>2]&64|0)==0;else h=0;c[y>>2]=h&1;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[c[A>>2]>>2]|0))break;c[z>>2]=c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)>>2];c[G>>2]=c[(c[z>>2]|0)+16>>2];do if((d[c[z>>2]>>0]|0)!=158){if((d[c[z>>2]>>0]|0)==122?(d[c[G>>2]>>0]|0)==158:0){j=58;break}c[E>>2]=Gv(c[F>>2]|0,c[E>>2]|0,c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)>>2]|0)|0;if(c[E>>2]|0){c[(c[(c[E>>2]|0)+4>>2]|0)+(((c[c[E>>2]>>2]|0)-1|0)*20|0)+4>>2]=c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)+4>>2];c[(c[(c[E>>2]|0)+4>>2]|0)+(((c[c[E>>2]>>2]|0)-1|0)*20|0)+8>>2]=c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)+8>>2];c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)+4>>2]=0;c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)+8>>2]=0}c[(c[s>>2]|0)+((c[x>>2]|0)*20|0)>>2]=0}else j=58;while(0);do if((j|0)==58){j=0;c[M>>2]=0;c[V>>2]=0;if((d[c[z>>2]>>0]|0)==122)c[V>>2]=c[(c[(c[z>>2]|0)+12>>2]|0)+8>>2];c[u>>2]=0;c[C>>2]=(c[J>>2]|0)+8;while(1){if((c[u>>2]|0)>=(c[c[J>>2]>>2]|0))break;c[I>>2]=c[(c[C>>2]|0)+16>>2];c[H>>2]=c[(c[C>>2]|0)+20>>2];c[W>>2]=c[(c[C>>2]|0)+12>>2];c[U>>2]=0;if(!(c[W>>2]|0))c[W>>2]=c[c[I>>2]>>2];if(a[(c[t>>2]|0)+65>>0]|0)break;if((c[H>>2]|0)!=0?(e[(c[H>>2]|0)+6>>1]&1024|0)!=0:0)j=72;else j=67;do if((j|0)==67){j=0;c[H>>2]=0;if((c[V>>2]|0)!=0?(Td(c[V>>2]|0,c[W>>2]|0)|0)!=0:0)break;c[v>>2]=Dh(c[t>>2]|0,c[(c[I>>2]|0)+64>>2]|0)|0;if((c[v>>2]|0)>=0)h=c[(c[(c[t>>2]|0)+16>>2]|0)+(c[v>>2]<<4)>>2]|0;else h=26308;c[U>>2]=h;j=72}while(0);b:do if((j|0)==72){j=0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(b[(c[I>>2]|0)+34>>1]|0))break b;c[T>>2]=c[(c[(c[I>>2]|0)+4>>2]|0)+((c[w>>2]|0)*24|0)>>2];if(!((c[V>>2]|0)!=0&(c[H>>2]|0)!=0?(Ly(c[(c[(c[c[H>>2]>>2]|0)+4>>2]|0)+((c[w>>2]|0)*20|0)+8>>2]|0,0,c[V>>2]|0,0)|0)==0:0))j=76;do if((j|0)==76){j=0;if((e[(c[r>>2]|0)+6>>1]&32768|0)==0?(d[(c[(c[I>>2]|0)+4>>2]|0)+((c[w>>2]|0)*24|0)+23>>0]&2|0)!=0:0)break;c[M>>2]=1;if((c[u>>2]|0)>0&(c[V>>2]|0)==0){if((d[(c[C>>2]|0)+36>>0]&4|0)!=0?(Xy(c[J>>2]|0,c[u>>2]|0,c[T>>2]|0,0,0)|0)!=0:0)break;if((Yy(c[(c[C>>2]|0)+52>>2]|0,c[T>>2]|0)|0)>=0)break}c[G>>2]=Jv(c[t>>2]|0,27,c[T>>2]|0)|0;c[S>>2]=c[T>>2];c[X>>2]=0;do if(c[y>>2]|0)j=84;else{if((c[c[J>>2]>>2]|0)>1){j=84;break}c[B>>2]=c[G>>2]}while(0);do if((j|0)==84){j=0;c[D>>2]=Jv(c[t>>2]|0,27,c[W>>2]|0)|0;c[B>>2]=rv(c[F>>2]|0,122,c[D>>2]|0,c[G>>2]|0,0)|0;if(c[U>>2]|0){c[D>>2]=Jv(c[t>>2]|0,27,c[U>>2]|0)|0;c[B>>2]=rv(c[F>>2]|0,122,c[D>>2]|0,c[B>>2]|0,0)|0}if(!(c[y>>2]|0))break;p=c[t>>2]|0;o=c[T>>2]|0;c[R>>2]=c[W>>2];c[R+4>>2]=o;c[S>>2]=Bh(p,31016,R)|0;c[X>>2]=c[S>>2]}while(0);c[E>>2]=Gv(c[F>>2]|0,c[E>>2]|0,c[B>>2]|0)|0;Cy(L,c[S>>2]|0);Hv(c[F>>2]|0,c[E>>2]|0,L,0);do if(c[E>>2]|0){if(!(e[(c[r>>2]|0)+6>>1]&1024))break;c[K>>2]=(c[(c[E>>2]|0)+4>>2]|0)+(((c[c[E>>2]>>2]|0)-1|0)*20|0);h=c[t>>2]|0;if(c[H>>2]|0){p=nh(h,c[(c[(c[c[H>>2]>>2]|0)+4>>2]|0)+((c[w>>2]|0)*20|0)+8>>2]|0)|0;c[(c[K>>2]|0)+8>>2]=p}else{o=c[W>>2]|0;p=c[S>>2]|0;c[N>>2]=c[U>>2];c[N+4>>2]=o;c[N+8>>2]=p;p=Bh(h,31022,N)|0;c[(c[K>>2]|0)+8>>2]=p}p=(c[K>>2]|0)+13|0;a[p>>0]=a[p>>0]&-3|2}while(0);Sf(c[t>>2]|0,c[X>>2]|0)}while(0);c[w>>2]=(c[w>>2]|0)+1}}while(0);c[u>>2]=(c[u>>2]|0)+1;c[C>>2]=(c[C>>2]|0)+72}if(!(c[M>>2]|0)){h=c[F>>2]|0;if(c[V>>2]|0){c[O>>2]=c[V>>2];Ah(h,31031,O);break}else{Ah(h,31049,P);break}}}while(0);c[x>>2]=(c[x>>2]|0)+1}Vu(c[t>>2]|0,c[A>>2]|0);c[c[r>>2]>>2]=c[E>>2]}if((c[c[r>>2]>>2]|0)!=0?(c[c[c[r>>2]>>2]>>2]|0)>(c[(c[t>>2]|0)+88+8>>2]|0):0){Ah(c[F>>2]|0,31069,Q);c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}c[q>>2]=0;X=c[q>>2]|0;i=Y;return X|0}c[q>>2]=2;X=c[q>>2]|0;i=Y;return X|0}}c[q>>2]=1;X=c[q>>2]|0;i=Y;return X|0}function Ry(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=i;i=i+16|0;h=f+12|0;g=f+8|0;d=f+4|0;e=f;c[h>>2]=a;c[g>>2]=b;c[d>>2]=c[c[h>>2]>>2];c[e>>2]=c[(Sy(c[g>>2]|0)|0)+68>>2];if(!(c[e>>2]|0)){i=f;return}c[(c[d>>2]|0)+536>>2]=c[(c[e>>2]|0)+4>>2];i=f;return}function Sy(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;while(1){a=c[b>>2]|0;if(!(c[(c[b>>2]|0)+56>>2]|0))break;c[b>>2]=c[a+56>>2]}i=d;return a|0}function Ty(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+96|0;u=B+16|0;o=B+8|0;j=B;v=B+88|0;w=B+84|0;k=B+80|0;y=B+76|0;h=B+72|0;x=B+68|0;p=B+64|0;t=B+60|0;r=B+56|0;A=B+52|0;s=B+48|0;q=B+44|0;z=B+40|0;l=B+36|0;n=B+32|0;m=B+28|0;c[w>>2]=f;c[k>>2]=g;c[y>>2]=c[c[w>>2]>>2];c[h>>2]=c[c[y>>2]>>2];c[x>>2]=kz(c[(c[y>>2]|0)+536>>2]|0,c[k>>2]|0,p)|0;if(c[x>>2]|0){g=c[y>>2]|0;if(c[(c[x>>2]|0)+12>>2]|0){A=c[(c[x>>2]|0)+12>>2]|0;c[j>>2]=c[c[x>>2]>>2];Ah(g,A,j);c[v>>2]=1;A=c[v>>2]|0;i=B;return A|0}if(Uy(g,c[k>>2]|0)|0){c[v>>2]=1;A=c[v>>2]|0;i=B;return A|0}j=ph(c[h>>2]|0,72,0)|0;c[t>>2]=j; -c[(c[k>>2]|0)+16>>2]=j;if(!(c[t>>2]|0)){c[v>>2]=2;A=c[v>>2]|0;i=B;return A|0}b[(c[t>>2]|0)+36>>1]=1;j=nh(c[h>>2]|0,c[c[x>>2]>>2]|0)|0;c[c[t>>2]>>2]=j;b[(c[t>>2]|0)+32>>1]=-1;b[(c[t>>2]|0)+38>>1]=200;j=(c[t>>2]|0)+42|0;a[j>>0]=d[j>>0]|66;j=Hx(c[h>>2]|0,c[(c[x>>2]|0)+8>>2]|0,0)|0;c[(c[k>>2]|0)+20>>2]=j;if(a[(c[h>>2]|0)+65>>0]|0){c[v>>2]=7;A=c[v>>2]|0;i=B;return A|0}c[A>>2]=c[(c[k>>2]|0)+20>>2];if((d[(c[A>>2]|0)+4>>0]|0)==116)g=1;else g=(d[(c[A>>2]|0)+4>>0]|0)==115;c[q>>2]=g&1;a:do if(c[q>>2]|0){c[n>>2]=c[(c[(c[k>>2]|0)+20>>2]|0)+32>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[c[n>>2]>>2]|0))break a;c[m>>2]=(c[n>>2]|0)+8+((c[l>>2]|0)*72|0);if(((c[(c[m>>2]|0)+4>>2]|0)==0?(c[(c[m>>2]|0)+8>>2]|0)!=0:0)?0==(Td(c[(c[m>>2]|0)+8>>2]|0,c[c[x>>2]>>2]|0)|0):0){c[(c[m>>2]|0)+16>>2]=c[t>>2];k=(c[m>>2]|0)+36+1|0;a[k>>0]=a[k>>0]&-33|32;k=(c[t>>2]|0)+36|0;b[k>>1]=(b[k>>1]|0)+1<<16>>16;k=(c[A>>2]|0)+6|0;b[k>>1]=e[k>>1]|8192}c[l>>2]=(c[l>>2]|0)+1}}while(0);if((e[(c[t>>2]|0)+36>>1]|0)>2){A=c[y>>2]|0;c[o>>2]=c[c[x>>2]>>2];Ah(A,31310,o);c[v>>2]=1;A=c[v>>2]|0;i=B;return A|0}c[(c[x>>2]|0)+12>>2]=31353;c[z>>2]=c[(c[y>>2]|0)+536>>2];c[(c[y>>2]|0)+536>>2]=c[p>>2];g=c[A>>2]|0;if(c[q>>2]|0)g=c[g+52>>2]|0;Zx(c[w>>2]|0,g)|0;c[(c[y>>2]|0)+536>>2]=c[p>>2];c[s>>2]=c[A>>2];while(1){g=c[s>>2]|0;if(!(c[(c[s>>2]|0)+52>>2]|0))break;c[s>>2]=c[g+52>>2]}c[r>>2]=c[g>>2];if(c[(c[x>>2]|0)+4>>2]|0){if((c[r>>2]|0)!=0?(c[c[r>>2]>>2]|0)!=(c[c[(c[x>>2]|0)+4>>2]>>2]|0):0){A=c[y>>2]|0;t=c[c[r>>2]>>2]|0;w=c[c[(c[x>>2]|0)+4>>2]>>2]|0;c[u>>2]=c[c[x>>2]>>2];c[u+4>>2]=t;c[u+8>>2]=w;Ah(A,31376,u);c[(c[y>>2]|0)+536>>2]=c[z>>2];c[v>>2]=1;A=c[v>>2]|0;i=B;return A|0}c[r>>2]=c[(c[x>>2]|0)+4>>2]}Gx(c[y>>2]|0,c[r>>2]|0,(c[t>>2]|0)+34|0,(c[t>>2]|0)+4|0)|0;if(c[q>>2]|0){g=(c[x>>2]|0)+12|0;if(e[(c[A>>2]|0)+6>>1]&8192)c[g>>2]=31414;else c[g>>2]=31448;Zx(c[w>>2]|0,c[A>>2]|0)|0}c[(c[x>>2]|0)+12>>2]=0;c[(c[y>>2]|0)+536>>2]=c[z>>2]}c[v>>2]=0;A=c[v>>2]|0;i=B;return A|0}function Uy(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j;e=j+12|0;f=j+8|0;g=j+4|0;c[f>>2]=a;c[g>>2]=b;if((d[(c[g>>2]|0)+36+1>>0]|0)>>>2&1){a=c[f>>2]|0;c[h>>2]=c[(c[g>>2]|0)+8>>2];Ah(a,31287,h);c[e>>2]=1;h=c[e>>2]|0;i=j;return h|0}else{c[e>>2]=0;h=c[e>>2]|0;i=j;return h|0}return 0}function Vy(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;l=n;f=n+28|0;g=n+24|0;h=n+20|0;k=n+16|0;m=n+12|0;j=n+8|0;c[g>>2]=b;c[h>>2]=e;do if((c[(c[h>>2]|0)+16>>2]|0)!=0?((d[(c[h>>2]|0)+36+1>>0]|0)>>>1&1|0)!=0:0){c[k>>2]=c[(c[h>>2]|0)+16>>2];c[m>>2]=c[(c[h>>2]|0)+64>>2];c[j>>2]=c[(c[k>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;if(!(Td(c[c[j>>2]>>2]|0,c[m>>2]|0)|0))break;c[j>>2]=c[(c[j>>2]|0)+20>>2]}if(c[j>>2]|0){c[(c[h>>2]|0)+68>>2]=c[j>>2];break}k=c[g>>2]|0;c[l>>2]=c[m>>2];c[l+4>>2]=0;Ah(k,31269,l);a[(c[g>>2]|0)+17>>0]=1;c[f>>2]=1;m=c[f>>2]|0;i=n;return m|0}while(0);c[f>>2]=0;m=c[f>>2]|0;i=n;return m|0}function Wy(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+96|0;A=C+16|0;z=C+8|0;y=C;w=C+92|0;x=C+88|0;f=C+84|0;u=C+80|0;g=C+76|0;o=C+72|0;p=C+68|0;s=C+64|0;q=C+60|0;t=C+56|0;n=C+52|0;v=C+48|0;h=C+44|0;k=C+40|0;r=C+36|0;B=C+32|0;j=C+28|0;l=C+24|0;m=C+20|0;c[x>>2]=a;c[f>>2]=e;c[u>>2]=c[(c[f>>2]|0)+32>>2];c[p>>2]=(c[u>>2]|0)+8;c[s>>2]=(c[p>>2]|0)+72;c[g>>2]=0;a:while(1){if((c[g>>2]|0)>=((c[c[u>>2]>>2]|0)-1|0)){f=28;break}c[q>>2]=c[(c[p>>2]|0)+16>>2];c[t>>2]=c[(c[s>>2]|0)+16>>2];b:do if(!((c[q>>2]|0)==0|(c[t>>2]|0)==0)){c[n>>2]=(d[(c[s>>2]|0)+36>>0]&32|0)!=0&1;c:do if(d[(c[s>>2]|0)+36>>0]&4){if(c[(c[s>>2]|0)+48>>2]|0){f=7;break a}if(c[(c[s>>2]|0)+52>>2]|0){f=7;break a}c[o>>2]=0;while(1){if((c[o>>2]|0)>=(b[(c[t>>2]|0)+34>>1]|0))break c;c[v>>2]=c[(c[(c[t>>2]|0)+4>>2]|0)+((c[o>>2]|0)*24|0)>>2];if(Xy(c[u>>2]|0,(c[g>>2]|0)+1|0,c[v>>2]|0,h,k)|0)_y(c[x>>2]|0,c[u>>2]|0,c[h>>2]|0,c[k>>2]|0,(c[g>>2]|0)+1|0,c[o>>2]|0,c[n>>2]|0,(c[f>>2]|0)+36|0);c[o>>2]=(c[o>>2]|0)+1}}while(0);if((c[(c[s>>2]|0)+48>>2]|0)!=0?(c[(c[s>>2]|0)+52>>2]|0)!=0:0){f=15;break a}if(c[(c[s>>2]|0)+48>>2]|0){if(c[n>>2]|0)$y(c[(c[s>>2]|0)+48>>2]|0,c[(c[s>>2]|0)+44>>2]|0);a=az(c[c[x>>2]>>2]|0,c[(c[f>>2]|0)+36>>2]|0,c[(c[s>>2]|0)+48>>2]|0)|0;c[(c[f>>2]|0)+36>>2]=a;c[(c[s>>2]|0)+48>>2]=0}if(c[(c[s>>2]|0)+52>>2]|0){c[r>>2]=c[(c[s>>2]|0)+52>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[(c[r>>2]|0)+4>>2]|0))break b;c[B>>2]=c[(c[c[r>>2]>>2]|0)+(c[o>>2]<<3)>>2];c[m>>2]=Zy(c[t>>2]|0,c[B>>2]|0)|0;if((c[m>>2]|0)<0){f=25;break a}if(!(Xy(c[u>>2]|0,(c[g>>2]|0)+1|0,c[B>>2]|0,j,l)|0)){f=25;break a}_y(c[x>>2]|0,c[u>>2]|0,c[j>>2]|0,c[l>>2]|0,(c[g>>2]|0)+1|0,c[m>>2]|0,c[n>>2]|0,(c[f>>2]|0)+36|0);c[o>>2]=(c[o>>2]|0)+1}}}while(0);c[g>>2]=(c[g>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+72;c[p>>2]=(c[p>>2]|0)+72}if((f|0)==7){B=c[x>>2]|0;c[y>>2]=0;Ah(B,31100,y);c[w>>2]=1;B=c[w>>2]|0;i=C;return B|0}else if((f|0)==15){Ah(c[x>>2]|0,31150,z);c[w>>2]=1;B=c[w>>2]|0;i=C;return B|0}else if((f|0)==25){z=c[x>>2]|0;c[A>>2]=c[B>>2];Ah(z,31205,A);c[w>>2]=1;B=c[w>>2]|0;i=C;return B|0}else if((f|0)==28){c[w>>2]=0;B=c[w>>2]|0;i=C;return B|0}return 0}function Xy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;g=q+28|0;h=q+24|0;j=q+20|0;k=q+16|0;l=q+12|0;m=q+8|0;n=q+4|0;o=q;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[j>>2]|0)){p=8;break}c[o>>2]=Zy(c[(c[h>>2]|0)+8+((c[n>>2]|0)*72|0)+16>>2]|0,c[k>>2]|0)|0;if((c[o>>2]|0)>=0)break;c[n>>2]=(c[n>>2]|0)+1}if((p|0)==8){c[g>>2]=0;p=c[g>>2]|0;i=q;return p|0}if(c[l>>2]|0){c[c[l>>2]>>2]=c[n>>2];c[c[m>>2]>>2]=c[o>>2]}c[g>>2]=1;p=c[g>>2]|0;i=q;return p|0}function Yy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h+12|0;d=h+8|0;e=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;if(!(c[d>>2]|0)){c[g>>2]=-1;g=c[g>>2]|0;i=h;return g|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[d>>2]|0)+4>>2]|0)){a=8;break}a=(Td(c[(c[c[d>>2]>>2]|0)+(c[f>>2]<<3)>>2]|0,c[e>>2]|0)|0)==0;b=c[f>>2]|0;if(a){a=6;break}c[f>>2]=b+1}if((a|0)==6){c[g>>2]=b;g=c[g>>2]|0;i=h;return g|0}else if((a|0)==8){c[g>>2]=-1;g=c[g>>2]|0;i=h;return g|0}return 0}function Zy(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+12|0;e=j+8|0;f=j+4|0;g=j;c[e>>2]=a;c[f>>2]=d;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(b[(c[e>>2]|0)+34>>1]|0)){a=6;break}a=(Td(c[(c[(c[e>>2]|0)+4>>2]|0)+((c[g>>2]|0)*24|0)>>2]|0,c[f>>2]|0)|0)==0;d=c[g>>2]|0;if(a){a=4;break}c[g>>2]=d+1}if((a|0)==4){c[h>>2]=d;h=c[h>>2]|0;i=j;return h|0}else if((a|0)==6){c[h>>2]=-1;h=c[h>>2]|0;i=j;return h|0}return 0}function _y(a,d,e,f,g,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;p=i;i=i+48|0;s=p+44|0;v=p+40|0;x=p+36|0;w=p+32|0;u=p+28|0;t=p+24|0;q=p+20|0;l=p+16|0;m=p+12|0;r=p+8|0;n=p+4|0;o=p;c[s>>2]=a;c[v>>2]=d;c[x>>2]=e;c[w>>2]=f;c[u>>2]=g;c[t>>2]=h;c[q>>2]=j;c[l>>2]=k;c[m>>2]=c[c[s>>2]>>2];c[r>>2]=jz(c[m>>2]|0,c[v>>2]|0,c[x>>2]|0,c[w>>2]|0)|0;c[n>>2]=jz(c[m>>2]|0,c[v>>2]|0,c[u>>2]|0,c[t>>2]|0)|0;c[o>>2]=rv(c[s>>2]|0,79,c[r>>2]|0,c[n>>2]|0,0)|0;if(!((c[o>>2]|0)!=0&(c[q>>2]|0)!=0)){v=c[m>>2]|0;x=c[l>>2]|0;x=c[x>>2]|0;w=c[o>>2]|0;w=az(v,x,w)|0;x=c[l>>2]|0;c[x>>2]=w;i=p;return}v=(c[o>>2]|0)+4|0;c[v>>2]=c[v>>2]|1;b[(c[o>>2]|0)+36>>1]=c[(c[n>>2]|0)+28>>2];v=c[m>>2]|0;x=c[l>>2]|0;x=c[x>>2]|0;w=c[o>>2]|0;w=az(v,x,w)|0;x=c[l>>2]|0;c[x>>2]=w;i=p;return}function $y(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[g>>2]=e;while(1){if(!(c[f>>2]|0))break;a=(c[f>>2]|0)+4|0;c[a>>2]=c[a>>2]|1;b[(c[f>>2]|0)+36>>1]=c[g>>2];a:do if((d[c[f>>2]>>0]|0|0)==151?(c[(c[f>>2]|0)+20>>2]|0)!=0:0){c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[c[(c[f>>2]|0)+20>>2]>>2]|0))break a;$y(c[(c[(c[(c[f>>2]|0)+20>>2]|0)+4>>2]|0)+((c[h>>2]|0)*20|0)>>2]|0,c[g>>2]|0);c[h>>2]=(c[h>>2]|0)+1}}while(0);$y(c[(c[f>>2]|0)+12>>2]|0,c[g>>2]|0);c[f>>2]=c[(c[f>>2]|0)+16>>2]}i=j;return}function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;a=c[h>>2]|0;if(!(c[g>>2]|0)){c[e>>2]=a;j=c[e>>2]|0;i=k;return j|0}b=c[g>>2]|0;if(!a){c[e>>2]=b;j=c[e>>2]|0;i=k;return j|0}if((bz(b)|0)==0?(bz(c[h>>2]|0)|0)==0:0){c[j>>2]=cz(c[f>>2]|0,72,0,0)|0;dz(c[f>>2]|0,c[j>>2]|0,c[g>>2]|0,c[h>>2]|0);c[e>>2]=c[j>>2];j=c[e>>2]|0;i=k;return j|0}Zu(c[f>>2]|0,c[g>>2]|0);Zu(c[f>>2]|0,c[h>>2]|0);c[e>>2]=cz(c[f>>2]|0,132,5092,0)|0;j=c[e>>2]|0;i=k;return j|0}function bz(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=0;do if(!(c[(c[d>>2]|0)+4>>2]&1))if(ky(c[d>>2]|0,e)|0){c[b>>2]=(c[e>>2]|0)==0&1;break}else{c[b>>2]=0;break}else c[b>>2]=0;while(0);i=f;return c[b>>2]|0}function cz(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;p=q+12|0;o=q+8|0;n=q+4|0;m=q;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[o>>2]=0;c[n>>2]=0;do if(c[k>>2]|0){if(((c[j>>2]|0)==132?(c[c[k>>2]>>2]|0)!=0:0)?(Li(c[c[k>>2]>>2]|0,n)|0)!=0:0)break;c[o>>2]=(c[(c[k>>2]|0)+4>>2]|0)+1}while(0);c[p>>2]=Fw(c[h>>2]|0,48+(c[o>>2]|0)|0,0)|0;if(!(c[p>>2]|0)){p=c[p>>2]|0;i=q;return p|0}h=c[p>>2]|0;d=h+48|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(d|0));a[c[p>>2]>>0]=c[j>>2];b[(c[p>>2]|0)+34>>1]=-1;do if(c[k>>2]|0){h=c[p>>2]|0;if(!(c[o>>2]|0)){o=h+4|0;c[o>>2]=c[o>>2]|1024;c[(c[p>>2]|0)+8>>2]=c[n>>2];break}c[(c[p>>2]|0)+8>>2]=h+48;if(c[(c[k>>2]|0)+4>>2]|0)iR(c[(c[p>>2]|0)+8>>2]|0,c[c[k>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0)|0;a[(c[(c[p>>2]|0)+8>>2]|0)+(c[(c[k>>2]|0)+4>>2]|0)>>0]=0;if(((c[l>>2]|0)!=0&(c[o>>2]|0)>=3?(o=a[c[c[k>>2]>>2]>>0]|0,c[m>>2]=o,(o|0)==39|(c[m>>2]|0)==34|(c[m>>2]|0)==91|(c[m>>2]|0)==96):0)?(Jw(c[(c[p>>2]|0)+8>>2]|0)|0,(c[m>>2]|0)==34):0){o=(c[p>>2]|0)+4|0;c[o>>2]=c[o>>2]|64}}while(0);c[(c[p>>2]|0)+24>>2]=1;p=c[p>>2]|0;i=q;return p|0}function dz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if(!(c[g>>2]|0)){Zu(c[f>>2]|0,c[h>>2]|0);Zu(c[f>>2]|0,c[j>>2]|0);i=k;return}if(c[j>>2]|0){c[(c[g>>2]|0)+16>>2]=c[j>>2];b=(c[g>>2]|0)+4|0;c[b>>2]=c[b>>2]|2097408&c[(c[j>>2]|0)+4>>2]}if(c[h>>2]|0){c[(c[g>>2]|0)+12>>2]=c[h>>2];b=(c[g>>2]|0)+4|0;c[b>>2]=c[b>>2]|2097408&c[(c[h>>2]|0)+4>>2]}ez(c[g>>2]|0);i=k;return}function ez(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;fz(c[(c[b>>2]|0)+12>>2]|0,d);fz(c[(c[b>>2]|0)+16>>2]|0,d);a=(c[b>>2]|0)+20|0;if(!(c[(c[b>>2]|0)+4>>2]&2048)){if(c[a>>2]|0){hz(c[(c[b>>2]|0)+20>>2]|0,d);f=2097408&(iz(c[(c[b>>2]|0)+20>>2]|0)|0);a=(c[b>>2]|0)+4|0;c[a>>2]=c[a>>2]|f}}else gz(c[a>>2]|0,d);c[(c[b>>2]|0)+24>>2]=(c[d>>2]|0)+1;i=e;return}function fz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[d>>2]|0)){i=f;return}if((c[(c[d>>2]|0)+24>>2]|0)<=(c[c[e>>2]>>2]|0)){i=f;return}c[c[e>>2]>>2]=c[(c[d>>2]|0)+24>>2];i=f;return}function gz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[d>>2]|0)){i=f;return}fz(c[(c[d>>2]|0)+36>>2]|0,c[e>>2]|0);fz(c[(c[d>>2]|0)+44>>2]|0,c[e>>2]|0);fz(c[(c[d>>2]|0)+60>>2]|0,c[e>>2]|0);fz(c[(c[d>>2]|0)+64>>2]|0,c[e>>2]|0);hz(c[c[d>>2]>>2]|0,c[e>>2]|0);hz(c[(c[d>>2]|0)+40>>2]|0,c[e>>2]|0);hz(c[(c[d>>2]|0)+48>>2]|0,c[e>>2]|0);gz(c[(c[d>>2]|0)+52>>2]|0,c[e>>2]|0);i=f;return}function hz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!(c[d>>2]|0)){i=g;return}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[d>>2]>>2]|0))break;fz(c[(c[(c[d>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)>>2]|0,c[e>>2]|0);c[f>>2]=(c[f>>2]|0)+1}i=g;return}function iz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;d=g+8|0;e=g+4|0;f=g;c[b>>2]=a;c[e>>2]=0;if(!(c[b>>2]|0)){a=c[e>>2]|0;i=g;return a|0}c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[c[b>>2]>>2]|0))break;c[f>>2]=c[(c[(c[b>>2]|0)+4>>2]|0)+((c[d>>2]|0)*20|0)>>2];if(c[f>>2]|0)c[e>>2]=c[e>>2]|c[(c[f>>2]|0)+4>>2];c[d>>2]=(c[d>>2]|0)+1}a=c[e>>2]|0;i=g;return a|0}function jz(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;n=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[n>>2]=a;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[k>>2]=cz(c[n>>2]|0,152,0,0)|0;if(!(c[k>>2]|0)){n=c[k>>2]|0;i=m;return n|0}c[l>>2]=(c[g>>2]|0)+8+((c[h>>2]|0)*72|0);c[(c[k>>2]|0)+44>>2]=c[(c[l>>2]|0)+16>>2];c[(c[k>>2]|0)+28>>2]=c[(c[l>>2]|0)+44>>2];if((b[(c[(c[k>>2]|0)+44>>2]|0)+32>>1]|0)==(c[j>>2]|0))b[(c[k>>2]|0)+32>>1]=-1;else{b[(c[k>>2]|0)+32>>1]=c[j>>2];e=lR(1,0,((c[j>>2]|0)>=64?63:c[j>>2]|0)|0)|0;n=(c[l>>2]|0)+56|0;l=n;d=c[l+4>>2]|C;c[n>>2]=c[l>>2]|e;c[n+4>>2]=d}n=(c[k>>2]|0)+4|0;c[n>>2]=c[n>>2]|4;n=c[k>>2]|0;i=m;return n|0}function kz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;k=m+4|0;j=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;a:do if((c[(c[g>>2]|0)+4>>2]|0)==0?(d=c[(c[g>>2]|0)+8>>2]|0,c[l>>2]=d,(d|0)!=0):0){c[k>>2]=c[f>>2];b:while(1){if(!(c[k>>2]|0))break a;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[k>>2]>>2]|0))break;if(!(Td(c[l>>2]|0,c[(c[k>>2]|0)+8+(c[j>>2]<<4)>>2]|0)|0))break b;c[j>>2]=(c[j>>2]|0)+1}c[k>>2]=c[(c[k>>2]|0)+4>>2]}c[c[h>>2]>>2]=c[k>>2];c[e>>2]=(c[k>>2]|0)+8+(c[j>>2]<<4);l=c[e>>2]|0;i=m;return l|0}while(0);c[e>>2]=0;l=c[e>>2]|0;i=m;return l|0}function lz(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+36|0;h=r+32|0;j=r+28|0;k=r+24|0;n=r+20|0;l=r+16|0;m=r+12|0;o=r+8|0;p=r+4|0;q=r;c[h>>2]=a;c[j>>2]=e;c[k>>2]=f;if(!(c[j>>2]|0)){c[g>>2]=0;q=c[g>>2]|0;i=r;return q|0}if((c[c[j>>2]>>2]|0)>0)a=((c[c[j>>2]>>2]|0)-1|0)*72|0;else a=0;c[m>>2]=80+a;m=c[m>>2]|0;c[n>>2]=Fw(c[h>>2]|0,m,((m|0)<0)<<31>>31)|0;if(!(c[n>>2]|0)){c[g>>2]=0;q=c[g>>2]|0;i=r;return q|0}m=c[c[j>>2]>>2]|0;c[(c[n>>2]|0)+4>>2]=m;c[c[n>>2]>>2]=m;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[c[j>>2]>>2]|0))break;c[o>>2]=(c[n>>2]|0)+8+((c[l>>2]|0)*72|0);c[p>>2]=(c[j>>2]|0)+8+((c[l>>2]|0)*72|0);c[c[o>>2]>>2]=c[c[p>>2]>>2];m=nh(c[h>>2]|0,c[(c[p>>2]|0)+4>>2]|0)|0;c[(c[o>>2]|0)+4>>2]=m;m=nh(c[h>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0;c[(c[o>>2]|0)+8>>2]=m;m=nh(c[h>>2]|0,c[(c[p>>2]|0)+12>>2]|0)|0;c[(c[o>>2]|0)+12>>2]=m;c[(c[o>>2]|0)+36>>2]=c[(c[p>>2]|0)+36>>2];c[(c[o>>2]|0)+44>>2]=c[(c[p>>2]|0)+44>>2];c[(c[o>>2]|0)+24>>2]=c[(c[p>>2]|0)+24>>2];c[(c[o>>2]|0)+28>>2]=c[(c[p>>2]|0)+28>>2];if((d[(c[o>>2]|0)+36+1>>0]|0)>>>1&1){m=nh(c[h>>2]|0,c[(c[p>>2]|0)+64>>2]|0)|0;c[(c[o>>2]|0)+64>>2]=m}c[(c[o>>2]|0)+68>>2]=c[(c[p>>2]|0)+68>>2];if((d[(c[o>>2]|0)+36+1>>0]|0)>>>2&1){m=vy(c[h>>2]|0,c[(c[p>>2]|0)+64>>2]|0,c[k>>2]|0)|0;c[(c[o>>2]|0)+64>>2]=m}m=c[(c[p>>2]|0)+16>>2]|0;c[(c[o>>2]|0)+16>>2]=m;c[q>>2]=m;if(c[q>>2]|0){m=(c[q>>2]|0)+36|0;b[m>>1]=(b[m>>1]|0)+1<<16>>16}f=Hx(c[h>>2]|0,c[(c[p>>2]|0)+20>>2]|0,c[k>>2]|0)|0;c[(c[o>>2]|0)+20>>2]=f;f=ny(c[h>>2]|0,c[(c[p>>2]|0)+48>>2]|0,c[k>>2]|0)|0;c[(c[o>>2]|0)+48>>2]=f;f=nz(c[h>>2]|0,c[(c[p>>2]|0)+52>>2]|0)|0;c[(c[o>>2]|0)+52>>2]=f;f=(c[p>>2]|0)+56|0;e=c[f+4>>2]|0;m=(c[o>>2]|0)+56|0;c[m>>2]=c[f>>2];c[m+4>>2]=e;c[l>>2]=(c[l>>2]|0)+1}c[g>>2]=c[n>>2];q=c[g>>2]|0;i=r;return q|0}function mz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;h=j+8|0;g=j+4|0;f=j;c[d>>2]=a;c[e>>2]=b;c[h>>2]=0;if(!(c[e>>2]|0)){h=c[h>>2]|0;i=j;return h|0}c[g>>2]=24+((c[c[e>>2]>>2]|0)-1<<4);b=c[g>>2]|0;c[h>>2]=ph(c[d>>2]|0,b,((b|0)<0)<<31>>31)|0;if(!(c[h>>2]|0)){h=c[h>>2]|0;i=j;return h|0}c[c[h>>2]>>2]=c[c[e>>2]>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;b=Hx(c[d>>2]|0,c[(c[e>>2]|0)+8+(c[f>>2]<<4)+8>>2]|0,0)|0;c[(c[h>>2]|0)+8+(c[f>>2]<<4)+8>>2]=b;b=vy(c[d>>2]|0,c[(c[e>>2]|0)+8+(c[f>>2]<<4)+4>>2]|0,0)|0;c[(c[h>>2]|0)+8+(c[f>>2]<<4)+4>>2]=b;b=nh(c[d>>2]|0,c[(c[e>>2]|0)+8+(c[f>>2]<<4)>>2]|0)|0;c[(c[h>>2]|0)+8+(c[f>>2]<<4)>>2]=b;c[f>>2]=(c[f>>2]|0)+1}h=c[h>>2]|0;i=j;return h|0}function nz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;e=l+20|0;f=l+16|0;h=l+12|0;g=l+8|0;j=l+4|0;k=l;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){c[d>>2]=0;k=c[d>>2]|0;i=l;return k|0}c[h>>2]=Fw(c[e>>2]|0,8,0)|0;if(!(c[h>>2]|0)){c[d>>2]=0;k=c[d>>2]|0;i=l;return k|0}c[(c[h>>2]|0)+4>>2]=c[(c[f>>2]|0)+4>>2];b=Fw(c[e>>2]|0,c[(c[f>>2]|0)+4>>2]<<3,0)|0;c[c[h>>2]>>2]=b;if(!(c[c[h>>2]>>2]|0)){Sf(c[e>>2]|0,c[h>>2]|0);c[d>>2]=0;k=c[d>>2]|0;i=l;return k|0}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+4>>2]|0))break;c[j>>2]=(c[c[h>>2]>>2]|0)+(c[g>>2]<<3);c[k>>2]=(c[c[f>>2]>>2]|0)+(c[g>>2]<<3);b=nh(c[e>>2]|0,c[c[k>>2]>>2]|0)|0;c[c[j>>2]>>2]=b;c[(c[j>>2]|0)+4>>2]=c[(c[k>>2]|0)+4>>2];c[g>>2]=(c[g>>2]|0)+1}c[d>>2]=c[h>>2];k=c[d>>2]|0;i=l;return k|0}function oz(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=i;i=i+144|0;A=N+32|0;K=N+24|0;J=N+16|0;m=N+8|0;l=N;E=N+132|0;F=N+128|0;n=N+124|0;o=N+120|0;p=N+116|0;G=N+112|0;z=N+96|0;H=N+92|0;I=N+88|0;q=N+84|0;v=N+80|0;L=N+76|0;M=N+72|0;t=N+68|0;k=N+64|0;B=N+60|0;s=N+56|0;y=N+136|0;C=N+52|0;x=N+48|0;r=N+44|0;u=N+40|0;w=N+36|0;c[F>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[G>>2]=j;c[q>>2]=c[(c[n>>2]|0)+52>>2];c[v>>2]=c[(c[n>>2]|0)+48>>2];c[L>>2]=0;c[k>>2]=c[(c[F>>2]|0)+328>>2];while(1){if(!(c[k>>2]|0))break;if((c[(c[k>>2]|0)+4>>2]|0)==(c[n>>2]|0)){D=4;break}c[k>>2]=c[(c[k>>2]|0)+8>>2]}if((D|0)==4){M=c[F>>2]|0;c[l>>2]=c[c[n>>2]>>2];M=Bh(M,31513,l)|0;c[c[G>>2]>>2]=M;c[E>>2]=6;M=c[E>>2]|0;i=N;return M|0}h=c[F>>2]|0;c[m>>2]=c[c[n>>2]>>2];c[M>>2]=Bh(h,19255,m)|0;if(!(c[M>>2]|0)){c[E>>2]=7;M=c[E>>2]|0;i=N;return M|0}c[H>>2]=ph(c[F>>2]|0,28,0)|0;e=c[F>>2]|0;if(!(c[H>>2]|0)){Sf(e,c[M>>2]|0);c[E>>2]=7;M=c[E>>2]|0;i=N;return M|0}c[c[H>>2]>>2]=e;c[(c[H>>2]|0)+4>>2]=c[o>>2];c[t>>2]=Dh(c[F>>2]|0,c[(c[n>>2]|0)+64>>2]|0)|0;c[(c[(c[n>>2]|0)+52>>2]|0)+4>>2]=c[(c[(c[F>>2]|0)+16>>2]|0)+(c[t>>2]<<4)>>2];c[z+4>>2]=c[n>>2];c[z>>2]=c[H>>2];c[z+8>>2]=c[(c[F>>2]|0)+328>>2];c[z+12>>2]=0;c[(c[F>>2]|0)+328>>2]=z;c[I>>2]=Sb[c[p>>2]&255](c[F>>2]|0,c[(c[o>>2]|0)+8>>2]|0,c[v>>2]|0,c[q>>2]|0,(c[H>>2]|0)+8|0,L)|0;c[(c[F>>2]|0)+328>>2]=c[z+8>>2];if((c[I>>2]|0)==7)jh(c[F>>2]|0);a:do if(!(c[I>>2]|0)){if(c[(c[H>>2]|0)+8>>2]|0){L=c[(c[H>>2]|0)+8>>2]|0;c[L>>2]=0;c[L+4>>2]=0;c[L+8>>2]=0;c[c[(c[H>>2]|0)+8>>2]>>2]=c[c[o>>2]>>2];c[(c[H>>2]|0)+12>>2]=1;if(!(c[z+12>>2]|0)){c[B>>2]=31585;K=c[F>>2]|0;L=c[B>>2]|0;c[A>>2]=c[c[n>>2]>>2];L=Bh(K,L,A)|0;c[c[G>>2]>>2]=L;hu(c[H>>2]|0);c[I>>2]=1;break}a[y>>0]=0;c[(c[H>>2]|0)+24>>2]=c[(c[n>>2]|0)+56>>2];c[(c[n>>2]|0)+56>>2]=c[H>>2];c[s>>2]=0;while(1){if((c[s>>2]|0)>=(b[(c[n>>2]|0)+34>>1]|0))break a;c[C>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+((c[s>>2]|0)*24|0)+12>>2];c[r>>2]=0;do if(c[C>>2]|0){c[x>>2]=If(c[C>>2]|0)|0;if(!(zd(31631,c[C>>2]|0,6)|0)){if((a[(c[C>>2]|0)+6>>0]|0)!=0?(a[(c[C>>2]|0)+6>>0]|0)!=32:0)D=27}else D=27;b:do if((D|0)==27){D=0;c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[x>>2]|0))break b;if(!(zd(31638,(c[C>>2]|0)+(c[r>>2]|0)|0,7)|0)){if(!(a[(c[C>>2]|0)+((c[r>>2]|0)+7)>>0]|0))break;if((a[(c[C>>2]|0)+((c[r>>2]|0)+7)>>0]|0)==32)break}c[r>>2]=(c[r>>2]|0)+1}c[r>>2]=(c[r>>2]|0)+1}while(0);if((c[r>>2]|0)>=(c[x>>2]|0)){L=(c[n>>2]|0)+42|0;a[L>>0]=d[L>>0]|d[y>>0];break}c[w>>2]=6+((a[(c[C>>2]|0)+((c[r>>2]|0)+6)>>0]|0)!=0?1:0);c[u>>2]=c[r>>2];while(1){if(((c[u>>2]|0)+(c[w>>2]|0)|0)>(c[x>>2]|0))break;a[(c[C>>2]|0)+(c[u>>2]|0)>>0]=a[(c[C>>2]|0)+((c[u>>2]|0)+(c[w>>2]|0))>>0]|0;c[u>>2]=(c[u>>2]|0)+1}if((c[r>>2]|0)>0?(a[(c[C>>2]|0)+(c[r>>2]|0)>>0]|0)==0:0)a[(c[C>>2]|0)+((c[r>>2]|0)-1)>>0]=0;L=(c[(c[n>>2]|0)+4>>2]|0)+((c[s>>2]|0)*24|0)+23|0;a[L>>0]=d[L>>0]|2;a[y>>0]=-128}else{L=(c[n>>2]|0)+42|0;a[L>>0]=d[L>>0]|d[y>>0]}while(0);c[s>>2]=(c[s>>2]|0)+1}}}else{e=c[F>>2]|0;if(!(c[L>>2]|0)){c[J>>2]=c[M>>2];L=Bh(e,31555,J)|0;c[c[G>>2]>>2]=L}else{c[K>>2]=c[L>>2];K=Bh(e,19255,K)|0;c[c[G>>2]>>2]=K;Kd(c[L>>2]|0)}Sf(c[F>>2]|0,c[H>>2]|0)}while(0);Sf(c[F>>2]|0,c[M>>2]|0);c[E>>2]=c[I>>2];M=c[E>>2]|0;i=N;return M|0}function pz(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;f=g+4|0;e=g;c[d>>2]=b;c[f>>2]=0;c[e>>2]=c[c[d>>2]>>2];if(!(a[(c[e>>2]|0)+140+5>>0]|0))c[f>>2]=oi(c[e>>2]|0,(c[d>>2]|0)+4|0)|0;if(!(c[f>>2]|0)){f=c[f>>2]|0;i=g;return f|0}c[(c[d>>2]|0)+12>>2]=c[f>>2];b=(c[d>>2]|0)+68|0;c[b>>2]=(c[b>>2]|0)+1;f=c[f>>2]|0;i=g;return f|0}function qz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+48|0;d=l+32|0;e=l+28|0;n=l+24|0;m=l+20|0;j=l+16|0;g=l+12|0;f=l+8|0;h=l+4|0;k=l;c[d>>2]=a;c[e>>2]=b;c[n>>2]=c[c[d>>2]>>2];c[m>>2]=c[(c[(c[n>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+12>>2];ax(c[d>>2]|0,0,c[e>>2]|0);c[g>>2]=c[(c[d>>2]|0)+72>>2];a=(c[d>>2]|0)+72|0;c[a>>2]=(c[a>>2]|0)+3;uz(c[d>>2]|0,c[e>>2]|0,c[g>>2]|0,0,0);c[f>>2]=(c[(c[d>>2]|0)+76>>2]|0)+1;c[h>>2]=c[(c[d>>2]|0)+72>>2];c[j>>2]=c[(c[m>>2]|0)+8+8>>2];while(1){if(!(c[j>>2]|0))break;c[k>>2]=c[(c[j>>2]|0)+8>>2];vz(c[d>>2]|0,c[k>>2]|0,0,c[g>>2]|0,c[f>>2]|0,c[h>>2]|0);c[j>>2]=c[c[j>>2]>>2]}wz(c[d>>2]|0,c[e>>2]|0);i=l;return}function rz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+12|0;h=e+8|0;d=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[f>>2]=Dw(c[g>>2]|0,c[h>>2]|0)|0;c[d>>2]=ji(c[g>>2]|0,c[f>>2]|0)|0;Sf(c[g>>2]|0,c[f>>2]|0);i=e;return c[d>>2]|0}function sz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=Dh(c[c[e>>2]>>2]|0,c[(c[f>>2]|0)+64>>2]|0)|0;ax(c[e>>2]|0,0,c[h>>2]|0);c[j>>2]=c[(c[e>>2]|0)+72>>2];d=(c[e>>2]|0)+72|0;c[d>>2]=(c[d>>2]|0)+3;d=c[e>>2]|0;a=c[h>>2]|0;b=c[j>>2]|0;if(c[g>>2]|0)uz(d,a,b,c[c[g>>2]>>2]|0,31725);else uz(d,a,b,c[c[f>>2]>>2]|0,31729);vz(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,c[j>>2]|0,(c[(c[e>>2]|0)+76>>2]|0)+1|0,c[(c[e>>2]|0)+72>>2]|0);wz(c[e>>2]|0,c[h>>2]|0);i=k;return}function tz(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r+8|0;p=r;h=r+36|0;j=r+32|0;k=r+28|0;l=r+24|0;m=r+20|0;o=r+16|0;n=r+12|0;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=c[c[j>>2]>>2];e=(c[n>>2]|0)+140|0;if((c[(c[l>>2]|0)+4>>2]|0)>>>0>0){if(a[e+5>>0]|0){Ah(c[j>>2]|0,31688,p);c[h>>2]=-1;q=c[h>>2]|0;i=r;return q|0}c[c[m>>2]>>2]=c[l>>2];c[o>>2]=rz(c[n>>2]|0,c[k>>2]|0)|0;if((c[o>>2]|0)<0){p=c[j>>2]|0;c[q>>2]=c[k>>2];Ah(p,31705,q);c[h>>2]=-1;q=c[h>>2]|0;i=r;return q|0}}else{c[o>>2]=d[e+4>>0];c[c[m>>2]>>2]=c[k>>2]}c[h>>2]=c[o>>2];q=c[h>>2]|0;i=r;return q|0}function uz(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+96|0;v=x+16|0;u=x;h=x+84|0;j=x+80|0;k=x+76|0;l=x+72|0;m=x+68|0;q=x+64|0;p=x+60|0;r=x+56|0;t=x+52|0;o=x+40|0;n=x+88|0;w=x+36|0;s=x+32|0;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[p>>2]=c[c[h>>2]>>2];c[t>>2]=Pw(c[h>>2]|0)|0;if(!(c[t>>2]|0)){i=x;return}c[r>>2]=(c[(c[p>>2]|0)+16>>2]|0)+(c[j>>2]<<4);c[q>>2]=0;while(1){if((c[q>>2]|0)>=3)break;c[w>>2]=c[5224+(c[q>>2]<<3)>>2];g=pi(c[p>>2]|0,c[w>>2]|0,c[c[r>>2]>>2]|0)|0;c[s>>2]=g;do if(!g){if(c[5224+(c[q>>2]<<3)+4>>2]|0){g=c[h>>2]|0;b=c[w>>2]|0;f=c[5224+(c[q>>2]<<3)+4>>2]|0;c[u>>2]=c[c[r>>2]>>2];c[u+4>>2]=b;c[u+8>>2]=f;Ow(g,31786,u);c[o+(c[q>>2]<<2)>>2]=c[(c[h>>2]|0)+396>>2];a[n+(c[q>>2]|0)>>0]=16}}else{c[o+(c[q>>2]<<2)>>2]=c[(c[s>>2]|0)+28>>2];a[n+(c[q>>2]|0)>>0]=0;yz(c[h>>2]|0,c[j>>2]|0,c[o+(c[q>>2]<<2)>>2]|0,1,c[w>>2]|0);if(c[l>>2]|0){g=c[h>>2]|0;e=c[w>>2]|0;b=c[m>>2]|0;f=c[l>>2]|0;c[v>>2]=c[c[r>>2]>>2];c[v+4>>2]=e;c[v+8>>2]=b;c[v+12>>2]=f;Ow(g,31809,v);break}else{Rw(c[t>>2]|0,119,c[o+(c[q>>2]<<2)>>2]|0,c[j>>2]|0)|0;break}}while(0);c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if(!(c[5224+(c[q>>2]<<3)+4>>2]|0))break;Eh(c[t>>2]|0,55,(c[k>>2]|0)+(c[q>>2]|0)|0,c[o+(c[q>>2]<<2)>>2]|0,c[j>>2]|0,3)|0;Fh(c[t>>2]|0,a[n+(c[q>>2]|0)>>0]|0);c[q>>2]=(c[q>>2]|0)+1}i=x;return}function vz(b,f,g,h,j,k){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=i;i=i+128|0;n=R+116|0;o=R+112|0;p=R+108|0;q=R+104|0;l=R+100|0;m=R+96|0;u=R+92|0;F=R+88|0;y=R+84|0;z=R+80|0;O=R+76|0;w=R+72|0;A=R+68|0;x=R+64|0;D=R+120|0;I=R+60|0;L=R+56|0;G=R+52|0;N=R+48|0;M=R+44|0;H=R+40|0;K=R+36|0;J=R+32|0;B=R+28|0;t=R+24|0;s=R+20|0;P=R+16|0;C=R+12|0;v=R+8|0;r=R+4|0;E=R;c[n>>2]=b;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[l>>2]=j;c[m>>2]=k;c[u>>2]=c[c[n>>2]>>2];c[A>>2]=-1;a[D>>0]=1;f=c[l>>2]|0;c[l>>2]=f+1;c[I>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[L>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[G>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[N>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[M>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[H>>2]=f;f=c[l>>2]|0;c[l>>2]=f+1;c[K>>2]=f;c[J>>2]=c[l>>2];if((c[(c[n>>2]|0)+76>>2]|0)>(c[l>>2]|0))l=c[(c[n>>2]|0)+76>>2]|0;else l=c[l>>2]|0;c[(c[n>>2]|0)+76>>2]=l;c[O>>2]=Pw(c[n>>2]|0)|0;if((c[O>>2]|0)==0|(c[o>>2]|0)==0){i=R;return}if(!(c[(c[o>>2]|0)+28>>2]|0)){i=R;return}if(!(_e(31733,c[c[o>>2]>>2]|0,0)|0)){i=R;return}c[x>>2]=Dh(c[u>>2]|0,c[(c[o>>2]|0)+64>>2]|0)|0;if(Mw(c[n>>2]|0,28,c[c[o>>2]>>2]|0,0,c[(c[(c[u>>2]|0)+16>>2]|0)+(c[x>>2]<<4)>>2]|0)|0){i=R;return}yz(c[n>>2]|0,c[x>>2]|0,c[(c[o>>2]|0)+28>>2]|0,0,c[c[o>>2]>>2]|0);f=c[m>>2]|0;c[m>>2]=f+1;c[z>>2]=f;f=c[m>>2]|0;c[m>>2]=f+1;c[y>>2]=f;if((c[(c[n>>2]|0)+72>>2]|0)>(c[m>>2]|0))l=c[(c[n>>2]|0)+72>>2]|0;else l=c[m>>2]|0;c[(c[n>>2]|0)+72>>2]=l;zz(c[n>>2]|0,c[z>>2]|0,c[x>>2]|0,c[o>>2]|0,54);Tw(c[O>>2]|0,c[M>>2]|0,c[c[o>>2]>>2]|0)|0;c[F>>2]=c[(c[o>>2]|0)+8>>2];while(1){l=c[p>>2]|0;if(!(c[F>>2]|0))break;if(!((l|0)!=0?(c[p>>2]|0)!=(c[F>>2]|0):0))Q=15;do if((Q|0)==15){Q=0;if(!(c[(c[F>>2]|0)+36>>2]|0))a[D>>0]=0;if(((d[(c[o>>2]|0)+42>>0]|0)&32|0)!=0?(a[(c[F>>2]|0)+55>>0]&3|0)==2:0){c[B>>2]=e[(c[F>>2]|0)+50>>1];c[P>>2]=c[c[o>>2]>>2];c[C>>2]=(c[B>>2]|0)-1}else{c[B>>2]=e[(c[F>>2]|0)+52>>1];c[P>>2]=c[c[F>>2]>>2];if((d[(c[F>>2]|0)+55>>0]|0)>>>3&1)l=e[(c[F>>2]|0)+50>>1]|0;else l=c[B>>2]|0;c[C>>2]=l-1}Tw(c[O>>2]|0,c[H>>2]|0,c[P>>2]|0)|0;if((c[(c[n>>2]|0)+76>>2]|0)>((c[J>>2]|0)+(c[C>>2]|0)|0))l=c[(c[n>>2]|0)+76>>2]|0;else l=(c[J>>2]|0)+(c[C>>2]|0)|0;c[(c[n>>2]|0)+76>>2]=l;Vw(c[O>>2]|0,54,c[y>>2]|0,c[(c[F>>2]|0)+44>>2]|0,c[x>>2]|0)|0;Az(c[n>>2]|0,c[F>>2]|0);Rw(c[O>>2]|0,22,c[B>>2]|0,(c[L>>2]|0)+1|0)|0;Rw(c[O>>2]|0,22,e[(c[F>>2]|0)+50>>1]|0,(c[L>>2]|0)+2|0)|0;Uw(c[O>>2]|0,35,0,(c[L>>2]|0)+1|0,c[L>>2]|0,5108,-5)|0;Fh(c[O>>2]|0,2);c[t>>2]=xz(c[O>>2]|0,108,c[y>>2]|0)|0;Rw(c[O>>2]|0,22,0,c[G>>2]|0)|0;c[s>>2]=Bz(c[O>>2]|0)|0;if((c[C>>2]|0)>0){c[v>>2]=Cz(c[O>>2]|0)|0;c[r>>2]=Fw(c[u>>2]|0,c[C>>2]<<2,0)|0;if(!(c[r>>2]|0))break;Yw(c[O>>2]|0,13)|0;c[s>>2]=Bz(c[O>>2]|0)|0;if(((c[C>>2]|0)==1?(e[(c[F>>2]|0)+50>>1]|0|0)==1:0)?(d[(c[F>>2]|0)+54>>0]|0|0)!=0:0)Rw(c[O>>2]|0,77,c[J>>2]|0,c[v>>2]|0)|0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[C>>2]|0))break;c[E>>2]=Dz(c[n>>2]|0,c[(c[(c[F>>2]|0)+32>>2]|0)+(c[w>>2]<<2)>>2]|0)|0;Rw(c[O>>2]|0,22,c[w>>2]|0,c[G>>2]|0)|0;Vw(c[O>>2]|0,47,c[y>>2]|0,c[w>>2]|0,c[N>>2]|0)|0;m=Uw(c[O>>2]|0,78,c[N>>2]|0,0,(c[J>>2]|0)+(c[w>>2]|0)|0,c[E>>2]|0,-4)|0;c[(c[r>>2]|0)+(c[w>>2]<<2)>>2]=m;Fh(c[O>>2]|0,-128);c[w>>2]=(c[w>>2]|0)+1}Rw(c[O>>2]|0,22,c[C>>2]|0,c[G>>2]|0)|0;Ez(c[O>>2]|0,c[v>>2]|0)|0;Fz(c[O>>2]|0,(c[s>>2]|0)-1|0);c[w>>2]=0;while(1){l=c[O>>2]|0;if((c[w>>2]|0)>=(c[C>>2]|0))break;Fz(l,c[(c[r>>2]|0)+(c[w>>2]<<2)>>2]|0);Vw(c[O>>2]|0,47,c[y>>2]|0,c[w>>2]|0,(c[J>>2]|0)+(c[w>>2]|0)|0)|0;c[w>>2]=(c[w>>2]|0)+1}Gz(l,c[v>>2]|0);Sf(c[u>>2]|0,c[r>>2]|0)}Uw(c[O>>2]|0,35,1,c[L>>2]|0,c[N>>2]|0,5140,-5)|0;Fh(c[O>>2]|0,2);Rw(c[O>>2]|0,7,c[y>>2]|0,c[s>>2]|0)|0;Hz(c[O>>2]|0,c[L>>2]|0,0,c[K>>2]|0);Uw(c[O>>2]|0,49,c[M>>2]|0,3,c[N>>2]|0,31742,0)|0;Rw(c[O>>2]|0,74,c[q>>2]|0,c[I>>2]|0)|0;Vw(c[O>>2]|0,75,c[q>>2]|0,c[N>>2]|0,c[I>>2]|0)|0;Fh(c[O>>2]|0,8);Fz(c[O>>2]|0,c[t>>2]|0)}while(0);c[F>>2]=c[(c[F>>2]|0)+20>>2]}if(l){i=R;return}if(!(d[D>>0]|0)){i=R;return}Rw(c[O>>2]|0,50,c[z>>2]|0,c[K>>2]|0)|0;c[A>>2]=xz(c[O>>2]|0,46,c[K>>2]|0)|0;Rw(c[O>>2]|0,25,0,c[H>>2]|0)|0;Uw(c[O>>2]|0,49,c[M>>2]|0,3,c[N>>2]|0,31742,0)|0;Rw(c[O>>2]|0,74,c[q>>2]|0,c[I>>2]|0)|0;Vw(c[O>>2]|0,75,c[q>>2]|0,c[N>>2]|0,c[I>>2]|0)|0;Fh(c[O>>2]|0,8);Fz(c[O>>2]|0,c[A>>2]|0);i=R;return}function wz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[d>>2]=b;c[e>>2]=Pw(c[g>>2]|0)|0;if(!(c[e>>2]|0)){i=f;return}xz(c[e>>2]|0,124,c[d>>2]|0)|0;i=f;return}function xz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;d=Vw(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0,0,0)|0;i=e;return d|0}function yz(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;t=s+28|0;m=s+24|0;n=s+20|0;o=s+32|0;p=s+16|0;q=s+12|0;j=s+8|0;k=s+4|0;r=s;c[t>>2]=b;c[m>>2]=e;c[n>>2]=f;a[o>>0]=g;c[p>>2]=h;e=c[t>>2]|0;if(c[(c[t>>2]|0)+416>>2]|0)e=c[e+416>>2]|0;c[q>>2]=e;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[(c[q>>2]|0)+404>>2]|0))break;c[r>>2]=(c[(c[q>>2]|0)+408>>2]|0)+(c[j>>2]<<4);if((c[c[r>>2]>>2]|0)==(c[m>>2]|0)?(c[(c[r>>2]|0)+4>>2]|0)==(c[n>>2]|0):0){l=7;break}c[j>>2]=(c[j>>2]|0)+1}if((l|0)==7){if(d[(c[r>>2]|0)+8>>0]|0)e=1;else e=(d[o>>0]|0|0)!=0;a[(c[r>>2]|0)+8>>0]=e&1;i=s;return}c[k>>2]=(c[(c[q>>2]|0)+404>>2]|0)+1<<4;e=c[k>>2]|0;e=vx(c[c[q>>2]>>2]|0,c[(c[q>>2]|0)+408>>2]|0,e,((e|0)<0)<<31>>31)|0;c[(c[q>>2]|0)+408>>2]=e;e=(c[q>>2]|0)+404|0;if(c[(c[q>>2]|0)+408>>2]|0){t=c[e>>2]|0;c[e>>2]=t+1;c[r>>2]=(c[(c[q>>2]|0)+408>>2]|0)+(t<<4);c[c[r>>2]>>2]=c[m>>2];c[(c[r>>2]|0)+4>>2]=c[n>>2];a[(c[r>>2]|0)+8>>0]=a[o>>0]|0;c[(c[r>>2]|0)+12>>2]=c[p>>2];i=s;return}else{c[e>>2]=0;jh(c[c[q>>2]>>2]|0);i=s;return}}function zz(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;p=q+4|0;o=q;c[j>>2]=a;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[p>>2]=Pw(c[j>>2]|0)|0;yz(c[j>>2]|0,c[l>>2]|0,c[(c[m>>2]|0)+28>>2]|0,((c[n>>2]|0)==55?1:0)&255,c[c[m>>2]>>2]|0);if(!(d[(c[m>>2]|0)+42>>0]&32)){Eh(c[p>>2]|0,c[n>>2]|0,c[k>>2]|0,c[(c[m>>2]|0)+28>>2]|0,c[l>>2]|0,b[(c[m>>2]|0)+34>>1]|0)|0;i=q;return}else{c[o>>2]=Ej(c[m>>2]|0)|0;Vw(c[p>>2]|0,c[n>>2]|0,c[k>>2]|0,c[(c[o>>2]|0)+44>>2]|0,c[l>>2]|0)|0;Az(c[j>>2]|0,c[o>>2]|0);i=q;return}}function Az(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;e=d+4|0;g=d;c[f>>2]=a;c[e>>2]=b;c[g>>2]=c[(c[f>>2]|0)+8>>2];a=c[g>>2]|0;Ih(a,-1,Pz(c[f>>2]|0,c[e>>2]|0)|0,-6);i=d;return}function Bz(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+32>>2]|0}function Cz(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;f=e+8|0;d=e+4|0;b=e;c[f>>2]=a;c[d>>2]=c[(c[f>>2]|0)+24>>2];f=(c[d>>2]|0)+116|0;a=c[f>>2]|0;c[f>>2]=a+1;c[b>>2]=a;if(!(c[b>>2]&(c[b>>2]|0)-1)){f=vx(c[c[d>>2]>>2]|0,c[(c[d>>2]|0)+120>>2]|0,(c[b>>2]<<1)+1<<2,0)|0;c[(c[d>>2]|0)+120>>2]=f}if(!(c[(c[d>>2]|0)+120>>2]|0)){f=c[b>>2]|0;f=-1-f|0;i=e;return f|0}c[(c[(c[d>>2]|0)+120>>2]|0)+(c[b>>2]<<2)>>2]=-1;f=c[b>>2]|0;f=-1-f|0;i=e;return f|0}function Dz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;f=k+12|0;g=k+8|0;m=k+4|0;h=k+17|0;l=k+16|0;j=k;c[f>>2]=b;c[g>>2]=e;c[m>>2]=c[c[f>>2]>>2];a[h>>0]=a[(c[m>>2]|0)+62>>0]|0;a[l>>0]=a[(c[m>>2]|0)+140+5>>0]|0;c[j>>2]=Mj(c[m>>2]|0,a[h>>0]|0,c[g>>2]|0,d[l>>0]|0)|0;if(a[l>>0]|0){m=c[j>>2]|0;i=k;return m|0}if((c[j>>2]|0)!=0?(c[(c[j>>2]|0)+12>>2]|0)!=0:0){m=c[j>>2]|0;i=k;return m|0}c[j>>2]=Px(c[f>>2]|0,a[h>>0]|0,c[j>>2]|0,c[g>>2]|0)|0;m=c[j>>2]|0;i=k;return m|0}function Ez(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Vw(c[f>>2]|0,13,0,c[e>>2]|0,0)|0;i=d;return a|0}function Fz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[(c[(c[e>>2]|0)+24>>2]|0)+96>>2]=(c[(c[e>>2]|0)+32>>2]|0)-1;Lz(c[e>>2]|0,c[f>>2]|0,c[(c[e>>2]|0)+32>>2]|0);i=d;return}function Gz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;h=g+8|0;f=g+4|0;e=g;c[d>>2]=a;c[h>>2]=b;c[f>>2]=c[(c[d>>2]|0)+24>>2];c[e>>2]=-1-(c[h>>2]|0);if(c[(c[f>>2]|0)+120>>2]|0)c[(c[(c[f>>2]|0)+120>>2]|0)+(c[e>>2]<<2)>>2]=c[(c[d>>2]|0)+32>>2];c[(c[f>>2]|0)+96>>2]=(c[(c[d>>2]|0)+32>>2]|0)-1;i=g;return}function Hz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;j=f+8|0;h=f;c[g>>2]=a;c[j>>2]=b;c[f+4>>2]=d;c[h>>2]=e;Uw(c[g>>2]|0,35,0,c[j>>2]|0,c[h>>2]|0,5172,-5)|0;Fh(c[g>>2]|0,1);i=f;return}function Iz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+64|0;l=o+24|0;k=o+16|0;e=o+56|0;p=o+48|0;j=o+44|0;m=o+40|0;f=o+36|0;n=o+32|0;h=o+8|0;g=o;c[e>>2]=a;c[o+52>>2]=b;c[p>>2]=d;c[j>>2]=$d(c[c[p>>2]>>2]|0)|0;a=((c[(c[j>>2]|0)+12>>2]|0)+1|0)*25|0;c[n>>2]=ig(a,((a|0)<0)<<31>>31)|0;if(!(c[n>>2]|0)){te(c[e>>2]|0);i=o;return}p=c[n>>2]|0;a=k;c[a>>2]=c[c[j>>2]>>2]; -c[a+4>>2]=0;Qd(24,p,31755,k)|0;p=c[n>>2]|0;c[m>>2]=p+(If(c[n>>2]|0)|0);c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[j>>2]|0)+12>>2]|0))break;p=h;c[p>>2]=(c[(c[(c[j>>2]|0)+20+4>>2]|0)+(c[f>>2]<<2)>>2]|0)+1;c[p+4>>2]=0;p=h;p=gR(c[c[j>>2]>>2]|0,0,c[p>>2]|0,c[p+4>>2]|0)|0;p=fR(p|0,C|0,1,0)|0;d=h;d=sR(p|0,C|0,c[d>>2]|0,c[d+4>>2]|0)|0;p=g;c[p>>2]=d;c[p+4>>2]=C;p=c[m>>2]|0;d=g;a=c[d+4>>2]|0;k=l;c[k>>2]=c[d>>2];c[k+4>>2]=a;Qd(24,p,31760,l)|0;p=If(c[m>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+p;c[f>>2]=(c[f>>2]|0)+1}ne(c[e>>2]|0,c[n>>2]|0,-1,148);i=o;return}function Jz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;j=h+12|0;e=h+8|0;g=h+4|0;f=h;c[h+20>>2]=a;c[h+16>>2]=b;c[j>>2]=d;c[g>>2]=$d(c[c[j>>2]>>2]|0)|0;c[f>>2]=de(c[(c[j>>2]|0)+4>>2]|0)|0;if(!(c[c[g>>2]>>2]|0)){c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[g>>2]|0)+8>>2]|0))break;c[(c[(c[g>>2]|0)+20>>2]|0)+(c[e>>2]<<2)>>2]=1;c[e>>2]=(c[e>>2]|0)+1}j=c[g>>2]|0;g=c[j>>2]|0;g=g+1|0;c[j>>2]=g;i=h;return}Kz(c[g>>2]|0,c[f>>2]|0);c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[f>>2]|0))break;j=(c[(c[g>>2]|0)+20>>2]|0)+(c[e>>2]<<2)|0;c[j>>2]=(c[j>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+1}c[e>>2]=c[f>>2];while(1){if((c[e>>2]|0)>=(c[(c[g>>2]|0)+8>>2]|0))break;j=(c[(c[g>>2]|0)+20+4>>2]|0)+(c[e>>2]<<2)|0;c[j>>2]=(c[j>>2]|0)+1;c[(c[(c[g>>2]|0)+20>>2]|0)+(c[e>>2]<<2)>>2]=1;c[e>>2]=(c[e>>2]|0)+1}j=c[g>>2]|0;g=c[j>>2]|0;g=g+1|0;c[j>>2]=g;i=h;return}function Kz(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return}function Lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[f>>2]=b;c[h>>2]=d;d=c[h>>2]|0;c[(Mz(c[g>>2]|0,c[f>>2]|0)|0)+8>>2]=d;i=e;return}function Mz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=d;if((c[g>>2]|0)<0)c[g>>2]=(c[(c[f>>2]|0)+32>>2]|0)-1;if(a[(c[c[f>>2]>>2]|0)+65>>0]|0){c[e>>2]=5204;b=c[e>>2]|0;i=h;return b|0}else{c[e>>2]=(c[(c[f>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0);b=c[e>>2]|0;i=h;return b|0}return 0}function Nz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+48|0;e=l+32|0;n=l+24|0;k=l+20|0;g=l+16|0;j=l+12|0;h=l+8|0;m=l+4|0;f=l;c[e>>2]=a;c[l+28>>2]=b;c[n>>2]=d;c[g>>2]=de(c[c[n>>2]>>2]|0)|0;c[h>>2]=(c[g>>2]|0)+1&-2;c[j>>2]=de(c[(c[n>>2]|0)+4>>2]|0)|0;c[m>>2]=56+(c[h>>2]<<2)+(c[h>>2]<<2);c[f>>2]=we(c[e>>2]|0)|0;a=c[m>>2]|0;c[k>>2]=ph(c[f>>2]|0,a,((a|0)<0)<<31>>31)|0;if(!(c[k>>2]|0)){te(c[e>>2]|0);i=l;return}else{c[(c[k>>2]|0)+52>>2]=c[f>>2];c[c[k>>2]>>2]=0;c[(c[k>>2]|0)+8>>2]=c[g>>2];c[(c[k>>2]|0)+12>>2]=c[j>>2];c[(c[k>>2]|0)+20+4>>2]=(c[k>>2]|0)+56;c[(c[k>>2]|0)+20>>2]=(c[(c[k>>2]|0)+20+4>>2]|0)+(c[h>>2]<<2);ge(c[e>>2]|0,c[k>>2]|0,56,153);i=l;return}}function Oz(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Sf(c[(c[d>>2]|0)+52>>2]|0,c[d>>2]|0);i=b;return}function Pz(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+28|0;j=p+24|0;k=p+20|0;l=p+16|0;m=p+12|0;g=p+8|0;n=p+4|0;o=p;c[j>>2]=b;c[k>>2]=f;c[m>>2]=e[(c[k>>2]|0)+52>>1];c[g>>2]=e[(c[k>>2]|0)+50>>1];if(c[(c[j>>2]|0)+68>>2]|0){c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}f=c[c[j>>2]>>2]|0;if((d[(c[k>>2]|0)+55>>0]|0)>>>3&1)c[n>>2]=Qz(f,c[g>>2]|0,(c[m>>2]|0)-(c[g>>2]|0)|0)|0;else c[n>>2]=Qz(f,c[m>>2]|0,0)|0;if(c[n>>2]|0){c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[m>>2]|0))break;c[o>>2]=c[(c[(c[k>>2]|0)+32>>2]|0)+(c[l>>2]<<2)>>2];if((c[o>>2]|0)==35690)f=0;else f=Dz(c[j>>2]|0,c[o>>2]|0)|0;c[(c[n>>2]|0)+20+(c[l>>2]<<2)>>2]=f;a[(c[(c[n>>2]|0)+16>>2]|0)+(c[l>>2]|0)>>0]=a[(c[(c[k>>2]|0)+28>>2]|0)+(c[l>>2]|0)>>0]|0;c[l>>2]=(c[l>>2]|0)+1}if(c[(c[j>>2]|0)+68>>2]|0){Rz(c[n>>2]|0);c[n>>2]=0}}c[h>>2]=c[n>>2];o=c[h>>2]|0;i=p;return o|0}function Qz(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[k>>2]=((c[h>>2]|0)+(c[j>>2]|0)|0)*5;c[l>>2]=_f(24+(c[k>>2]|0)|0,0)|0;if(c[l>>2]|0){c[(c[l>>2]|0)+16>>2]=(c[l>>2]|0)+20+((c[h>>2]|0)+(c[j>>2]|0)<<2);b[(c[l>>2]|0)+6>>1]=c[h>>2];b[(c[l>>2]|0)+8>>1]=c[j>>2];a[(c[l>>2]|0)+4>>0]=a[(c[g>>2]|0)+62>>0]|0;c[(c[l>>2]|0)+12>>2]=c[g>>2];c[c[l>>2]>>2]=1;kR((c[l>>2]|0)+24|0,0,c[k>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}else{jh(c[g>>2]|0);l=c[l>>2]|0;i=m;return l|0}return 0}function Rz(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}a=c[b>>2]|0;c[a>>2]=(c[a>>2]|0)+-1;if(c[c[b>>2]>>2]|0){i=d;return}Sf(0,c[b>>2]|0);i=d;return}function Sz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;e=l+20|0;j=l+16|0;g=l+12|0;f=l+8|0;h=l+4|0;k=l;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[c[d>>2]>>2];c[g>>2]=0;c[j>>2]=c[(c[f>>2]|0)+16>>2];while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;c[h>>2]=c[(c[(c[j>>2]|0)+12>>2]|0)+8+8>>2];while(1){if(!(c[h>>2]|0))break;c[k>>2]=c[(c[h>>2]|0)+8>>2];Tz(c[d>>2]|0,c[k>>2]|0,c[e>>2]|0);c[h>>2]=c[c[h>>2]>>2]}c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+16}i=l;return}function Tz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=c[(c[f>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;if(!((c[g>>2]|0)!=0?(hB(c[g>>2]|0,c[j>>2]|0)|0)==0:0)){c[h>>2]=Dh(c[c[e>>2]>>2]|0,c[(c[f>>2]|0)+64>>2]|0)|0;ax(c[e>>2]|0,0,c[h>>2]|0);Uz(c[e>>2]|0,c[j>>2]|0,-1)}c[j>>2]=c[(c[j>>2]|0)+20>>2]}i=k;return}function Uz(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+80|0;n=x+64|0;o=x+60|0;g=x+56|0;l=x+52|0;t=x+48|0;r=x+44|0;s=x+40|0;p=x+36|0;q=x+32|0;m=x+28|0;j=x+24|0;w=x+20|0;k=x+16|0;v=x+12|0;y=x+8|0;h=x+4|0;u=x;c[n>>2]=a;c[o>>2]=b;c[g>>2]=f;c[l>>2]=c[(c[o>>2]|0)+12>>2];a=(c[n>>2]|0)+72|0;b=c[a>>2]|0;c[a>>2]=b+1;c[t>>2]=b;b=(c[n>>2]|0)+72|0;a=c[b>>2]|0;c[b>>2]=a+1;c[r>>2]=a;c[y>>2]=c[c[n>>2]>>2];c[h>>2]=Dh(c[y>>2]|0,c[(c[o>>2]|0)+24>>2]|0)|0;if(Mw(c[n>>2]|0,27,c[c[o>>2]>>2]|0,0,c[(c[(c[y>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2]|0)|0){i=x;return}yz(c[n>>2]|0,c[h>>2]|0,c[(c[l>>2]|0)+28>>2]|0,1,c[c[l>>2]>>2]|0);c[w>>2]=Pw(c[n>>2]|0)|0;if(!(c[w>>2]|0)){i=x;return}if((c[g>>2]|0)>=0)c[m>>2]=c[g>>2];else c[m>>2]=c[(c[o>>2]|0)+44>>2];c[k>>2]=Pz(c[n>>2]|0,c[o>>2]|0)|0;a=(c[n>>2]|0)+72|0;b=c[a>>2]|0;c[a>>2]=b+1;c[s>>2]=b;b=c[w>>2]|0;a=c[s>>2]|0;y=e[(c[o>>2]|0)+50>>1]|0;Uw(b,58,a,0,y,Vz(c[k>>2]|0)|0,-6)|0;zz(c[n>>2]|0,c[t>>2]|0,c[h>>2]|0,c[l>>2]|0,54);c[p>>2]=Rw(c[w>>2]|0,108,c[t>>2]|0,0)|0;c[v>>2]=Wz(c[n>>2]|0)|0;Xz(c[n>>2]|0,c[o>>2]|0,c[t>>2]|0,c[v>>2]|0,0,j,0,0)|0;Rw(c[w>>2]|0,109,c[s>>2]|0,c[v>>2]|0)|0;Yz(c[n>>2]|0,c[j>>2]|0);Rw(c[w>>2]|0,7,c[t>>2]|0,(c[p>>2]|0)+1|0)|0;Fz(c[w>>2]|0,c[p>>2]|0);if((c[g>>2]|0)<0)Rw(c[w>>2]|0,119,c[m>>2]|0,c[h>>2]|0)|0;Uw(c[w>>2]|0,55,c[r>>2]|0,c[m>>2]|0,c[h>>2]|0,c[k>>2]|0,-6)|0;Fh(c[w>>2]|0,(1|((c[g>>2]|0)>=0?16:0))&255);c[p>>2]=Rw(c[w>>2]|0,106,c[s>>2]|0,0)|0;y=(c[k>>2]|0)!=0?(d[(c[o>>2]|0)+54>>0]|0|0)!=0:0;g=Bz(c[w>>2]|0)|0;if(y){c[u>>2]=g+3;Ez(c[w>>2]|0,c[u>>2]|0)|0;c[q>>2]=Bz(c[w>>2]|0)|0;Eh(c[w>>2]|0,99,c[s>>2]|0,c[u>>2]|0,c[v>>2]|0,e[(c[o>>2]|0)+50>>1]|0)|0;Zz(c[n>>2]|0,2,c[o>>2]|0)}else c[q>>2]=g;Vw(c[w>>2]|0,100,c[s>>2]|0,c[v>>2]|0,c[r>>2]|0)|0;Vw(c[w>>2]|0,105,c[r>>2]|0,0,-1)|0;Vw(c[w>>2]|0,110,c[r>>2]|0,c[v>>2]|0,0)|0;Fh(c[w>>2]|0,16);_z(c[n>>2]|0,c[v>>2]|0);Rw(c[w>>2]|0,3,c[s>>2]|0,c[q>>2]|0)|0;Fz(c[w>>2]|0,c[p>>2]|0);xz(c[w>>2]|0,61,c[t>>2]|0)|0;xz(c[w>>2]|0,61,c[r>>2]|0)|0;xz(c[w>>2]|0,61,c[s>>2]|0)|0;i=x;return}function Vz(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(c[b>>2]|0){a=c[b>>2]|0;c[a>>2]=(c[a>>2]|0)+1}i=d;return c[b>>2]|0}function Wz(b){b=b|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+4|0;f=g;c[f>>2]=b;b=c[f>>2]|0;if(!(d[(c[f>>2]|0)+19>>0]|0)){b=b+76|0;f=(c[b>>2]|0)+1|0;c[b>>2]=f;c[e>>2]=f;f=c[e>>2]|0;i=g;return f|0}else{h=b+19|0;b=(a[h>>0]|0)+-1<<24>>24;a[h>>0]=b;c[e>>2]=c[(c[f>>2]|0)+28+((b&255)<<2)>>2];f=c[e>>2]|0;i=g;return f|0}return 0}function Xz(a,e,f,g,h,j,k,l){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+48|0;o=y+44|0;p=y+40|0;q=y+36|0;r=y+32|0;m=y+28|0;n=y+24|0;s=y+20|0;t=y+16|0;x=y+12|0;u=y+8|0;w=y+4|0;v=y;c[o>>2]=a;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[m>>2]=h;c[n>>2]=j;c[s>>2]=k;c[t>>2]=l;c[x>>2]=c[(c[o>>2]|0)+8>>2];do if(c[n>>2]|0)if(c[(c[p>>2]|0)+36>>2]|0){l=Cz(c[x>>2]|0)|0;c[c[n>>2]>>2]=l;c[(c[o>>2]|0)+104>>2]=c[q>>2];iA(c[o>>2]|0);jA(c[o>>2]|0,c[(c[p>>2]|0)+36>>2]|0,c[c[n>>2]>>2]|0,16);break}else{c[c[n>>2]>>2]=0;break}while(0);if((c[m>>2]|0)!=0?((d[(c[p>>2]|0)+55>>0]|0)>>>3&1|0)!=0:0)m=b[(c[p>>2]|0)+50>>1]|0;else m=b[(c[p>>2]|0)+52>>1]|0;c[v>>2]=m&65535;c[w>>2]=kA(c[o>>2]|0,c[v>>2]|0)|0;do if(c[s>>2]|0){if((c[w>>2]|0)==(c[t>>2]|0)?(c[(c[s>>2]|0)+36>>2]|0)==0:0)break;c[s>>2]=0}while(0);c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[v>>2]|0))break;if(!(((c[s>>2]|0)!=0?(b[(c[(c[s>>2]|0)+4>>2]|0)+(c[u>>2]<<1)>>1]|0)==(b[(c[(c[p>>2]|0)+4>>2]|0)+(c[u>>2]<<1)>>1]|0):0)?(b[(c[(c[s>>2]|0)+4>>2]|0)+(c[u>>2]<<1)>>1]|0)!=-2:0)){lA(c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[u>>2]|0,(c[w>>2]|0)+(c[u>>2]|0)|0);mA(c[x>>2]|0,39)|0}c[u>>2]=(c[u>>2]|0)+1}if(!(c[r>>2]|0)){t=c[o>>2]|0;u=c[w>>2]|0;x=c[v>>2]|0;nA(t,u,x);x=c[w>>2]|0;i=y;return x|0}Vw(c[x>>2]|0,49,c[w>>2]|0,c[v>>2]|0,c[r>>2]|0)|0;t=c[o>>2]|0;u=c[w>>2]|0;x=c[v>>2]|0;nA(t,u,x);x=c[w>>2]|0;i=y;return x|0}function Yz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=f;return}Gz(c[(c[d>>2]|0)+8>>2]|0,c[e>>2]|0);gA(c[d>>2]|0);i=f;return}function Zz(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+80|0;p=s+8|0;o=s;h=s+68|0;j=s+64|0;k=s+60|0;r=s+56|0;m=s+52|0;l=s+24|0;n=s+20|0;q=s+16|0;c[h>>2]=d;c[j>>2]=f;c[k>>2]=g;c[n>>2]=c[(c[k>>2]|0)+12>>2];cg(l,c[c[h>>2]>>2]|0,0,0,200);if(c[(c[k>>2]|0)+40>>2]|0){c[o>>2]=c[c[k>>2]>>2];$z(l,31924,o);o=eg(l)|0;c[r>>2]=o;o=c[h>>2]|0;p=c[k>>2]|0;p=p+55|0;p=a[p>>0]|0;p=p&3;p=p&255;p=(p|0)==2;p=p?1555:2067;q=c[j>>2]|0;r=c[r>>2]|0;bA(o,p,q,r,-1,2);i=s;return}c[m>>2]=0;while(1){if((c[m>>2]|0)>=(e[(c[k>>2]|0)+50>>1]|0))break;c[q>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+((b[(c[(c[k>>2]|0)+4>>2]|0)+(c[m>>2]<<1)>>1]|0)*24|0)>>2];if(c[m>>2]|0)aA(l,31935,2);o=c[q>>2]|0;c[p>>2]=c[c[n>>2]>>2];c[p+4>>2]=o;$z(l,31016,p);c[m>>2]=(c[m>>2]|0)+1}o=eg(l)|0;c[r>>2]=o;o=c[h>>2]|0;p=c[k>>2]|0;p=p+55|0;p=a[p>>0]|0;p=p&3;p=p&255;p=(p|0)==2;p=p?1555:2067;q=c[j>>2]|0;r=c[r>>2]|0;bA(o,p,q,r,-1,2);i=s;return}function _z(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+12|0;h=k+8|0;f=k+4|0;j=k;c[g>>2]=b;c[h>>2]=e;if(!(c[h>>2]|0)){i=k;return}if((d[(c[g>>2]|0)+19>>0]|0|0)>=8){i=k;return}c[f>>2]=0;c[j>>2]=(c[g>>2]|0)+124;while(1){if((c[f>>2]|0)>=10){f=8;break}if((c[(c[j>>2]|0)+12>>2]|0)==(c[h>>2]|0)){f=6;break}c[f>>2]=(c[f>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+20}if((f|0)==6){a[(c[j>>2]|0)+6>>0]=1;i=k;return}else if((f|0)==8){h=c[h>>2]|0;b=(c[g>>2]|0)+19|0;j=a[b>>0]|0;a[b>>0]=j+1<<24>>24;c[(c[g>>2]|0)+28+((j&255)<<2)>>2]=h;i=k;return}}function $z(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;h=e+20|0;g=e+16|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;dg(c[h>>2]|0,c[g>>2]|0,f);i=e;return}function aA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(((c[(c[e>>2]|0)+12>>2]|0)+(c[g>>2]|0)|0)>>>0>=(c[(c[e>>2]|0)+16>>2]|0)>>>0){cA(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0);i=h;return}else{b=(c[e>>2]|0)+12|0;c[b>>2]=(c[b>>2]|0)+(c[g>>2]|0);iR((c[(c[e>>2]|0)+8>>2]|0)+((c[(c[e>>2]|0)+12>>2]|0)-(c[g>>2]|0))|0,c[f>>2]|0,c[g>>2]|0)|0;i=h;return}}function bA(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;j=q+16|0;k=q+12|0;l=q+8|0;m=q+4|0;n=q+21|0;o=q+20|0;p=q;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;a[n>>0]=g;a[o>>0]=h;c[p>>2]=Pw(c[j>>2]|0)|0;if((c[l>>2]|0)==2)Bx(c[j>>2]|0);Uw(c[p>>2]|0,21,c[k>>2]|0,c[l>>2]|0,0,c[m>>2]|0,a[n>>0]|0)|0;Fh(c[p>>2]|0,a[o>>0]|0);i=q;return}function cA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[g>>2]=dA(c[e>>2]|0,c[g>>2]|0)|0;if((c[g>>2]|0)<=0){i=h;return}iR((c[(c[e>>2]|0)+8>>2]|0)+(c[(c[e>>2]|0)+12>>2]|0)|0,c[f>>2]|0,c[g>>2]|0)|0;b=(c[e>>2]|0)+12|0;c[b>>2]=(c[b>>2]|0)+(c[g>>2]|0);i=h;return}function dA(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;h=m+24|0;j=m+20|0;k=m+16|0;l=m+12|0;g=m+8|0;f=m;c[j>>2]=b;c[k>>2]=e;if(a[(c[j>>2]|0)+24>>0]|0){c[h>>2]=0;l=c[h>>2]|0;i=m;return l|0}e=c[j>>2]|0;if(!(c[(c[j>>2]|0)+20>>2]|0)){c[k>>2]=(c[e+16>>2]|0)-(c[(c[j>>2]|0)+12>>2]|0)-1;eA(c[j>>2]|0,2);c[h>>2]=c[k>>2];l=c[h>>2]|0;i=m;return l|0}if(d[e+25>>0]&4)e=c[(c[j>>2]|0)+8>>2]|0;else e=0;c[g>>2]=e;e=f;c[e>>2]=c[(c[j>>2]|0)+12>>2];c[e+4>>2]=0;e=(c[k>>2]|0)+1|0;b=f;e=gR(c[b>>2]|0,c[b+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;b=f;c[b>>2]=e;c[b+4>>2]=C;b=f;b=gR(c[b>>2]|0,c[b+4>>2]|0,c[(c[j>>2]|0)+12>>2]|0,0)|0;e=C;if((e|0)<0|((e|0)==0?b>>>0<=(c[(c[j>>2]|0)+20>>2]|0)>>>0:0)){e=f;e=gR(c[e>>2]|0,c[e+4>>2]|0,c[(c[j>>2]|0)+12>>2]|0,0)|0;b=f;c[b>>2]=e;c[b+4>>2]=C}b=f;e=c[b+4>>2]|0;if((e|0)>0|((e|0)==0?(c[b>>2]|0)>>>0>(c[(c[j>>2]|0)+20>>2]|0)>>>0:0)){fA(c[j>>2]|0);eA(c[j>>2]|0,2);c[h>>2]=0;l=c[h>>2]|0;i=m;return l|0}c[(c[j>>2]|0)+16>>2]=c[f>>2];if(c[c[j>>2]>>2]|0)c[l>>2]=Ew(c[c[j>>2]>>2]|0,c[g>>2]|0,c[(c[j>>2]|0)+16>>2]|0,0)|0;else c[l>>2]=Md(c[g>>2]|0,c[(c[j>>2]|0)+16>>2]|0,0)|0;e=c[j>>2]|0;if(!(c[l>>2]|0)){fA(e);eA(c[j>>2]|0,1);c[h>>2]=0;l=c[h>>2]|0;i=m;return l|0}if((d[e+25>>0]&4|0)==0?(c[(c[j>>2]|0)+12>>2]|0)>>>0>0:0)iR(c[l>>2]|0,c[(c[j>>2]|0)+8>>2]|0,c[(c[j>>2]|0)+12>>2]|0)|0;c[(c[j>>2]|0)+8>>2]=c[l>>2];l=$t(c[c[j>>2]>>2]|0,c[l>>2]|0)|0;c[(c[j>>2]|0)+16>>2]=l;l=(c[j>>2]|0)+25|0;a[l>>0]=d[l>>0]|4;c[h>>2]=c[k>>2];l=c[h>>2]|0;i=m;return l|0}function eA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e;g=e+4|0;c[f>>2]=b;a[g>>0]=d;a[(c[f>>2]|0)+24>>0]=a[g>>0]|0;c[(c[f>>2]|0)+16>>2]=0;i=e;return}function fA(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;if(!((d[(c[e>>2]|0)+25>>0]|0)&4)){b=c[e>>2]|0;b=b+8|0;c[b>>2]=0;i=f;return}Sf(c[c[e>>2]>>2]|0,c[(c[e>>2]|0)+8>>2]|0);b=(c[e>>2]|0)+25|0;a[b>>0]=(d[b>>0]|0)&-5;b=c[e>>2]|0;b=b+8|0;c[b>>2]=0;i=f;return}function gA(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;a=(c[b>>2]|0)+108|0;c[a>>2]=(c[a>>2]|0)+-1;c[d>>2]=0;c[e>>2]=(c[b>>2]|0)+124;while(1){if((c[d>>2]|0)>=10)break;if((c[(c[e>>2]|0)+12>>2]|0)!=0?(c[(c[e>>2]|0)+8>>2]|0)>(c[(c[b>>2]|0)+108>>2]|0):0){hA(c[b>>2]|0,c[e>>2]|0);c[(c[e>>2]|0)+12>>2]=0}c[d>>2]=(c[d>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+20}i=f;return}function hA(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=e;if(!(a[(c[g>>2]|0)+6>>0]|0)){i=h;return}if((d[(c[f>>2]|0)+19>>0]|0)<8){e=c[(c[g>>2]|0)+12>>2]|0;j=(c[f>>2]|0)+19|0;b=a[j>>0]|0;a[j>>0]=b+1<<24>>24;c[(c[f>>2]|0)+28+((b&255)<<2)>>2]=e}a[(c[g>>2]|0)+6>>0]=0;i=h;return}function iA(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+108|0;c[a>>2]=(c[a>>2]|0)+1;i=b;return}function jA(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;g=m+20|0;n=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=a;c[n>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[c[g>>2]>>2];c[l>>2]=ny(c[k>>2]|0,c[n>>2]|0,0)|0;if(d[(c[k>>2]|0)+65>>0]|0){a=c[k>>2]|0;n=c[l>>2]|0;Zu(a,n);i=m;return}LA(c[g>>2]|0,c[l>>2]|0,c[h>>2]|0,c[j>>2]|0);a=c[k>>2]|0;n=c[l>>2]|0;Zu(a,n);i=m;return}function kA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;e=g+8|0;f=g+4|0;h=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[d>>2]|0)+64>>2];c[h>>2]=c[(c[d>>2]|0)+60>>2];if((c[e>>2]|0)<=(c[h>>2]|0)){h=(c[d>>2]|0)+64|0;c[h>>2]=(c[h>>2]|0)+(c[e>>2]|0);h=(c[d>>2]|0)+60|0;c[h>>2]=(c[h>>2]|0)-(c[e>>2]|0);h=c[f>>2]|0;i=g;return h|0}else{c[f>>2]=(c[(c[d>>2]|0)+76>>2]|0)+1;h=(c[d>>2]|0)+76|0;c[h>>2]=(c[h>>2]|0)+(c[e>>2]|0);h=c[f>>2]|0;i=g;return h|0}return 0}function lA(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+16|0;j=o+12|0;k=o+8|0;l=o+4|0;m=o;n=o+20|0;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;b[n>>1]=b[(c[(c[j>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0;if((b[n>>1]|0)==-2){c[(c[h>>2]|0)+104>>2]=c[k>>2];sA(c[h>>2]|0,c[(c[(c[(c[j>>2]|0)+40>>2]|0)+4>>2]|0)+((c[l>>2]|0)*20|0)>>2]|0,c[m>>2]|0);i=o;return}else{tA(c[(c[h>>2]|0)+8>>2]|0,c[(c[j>>2]|0)+12>>2]|0,c[k>>2]|0,b[n>>1]|0,c[m>>2]|0);i=o;return}}function mA(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;f=h+4|0;g=h;j=h+8|0;c[g>>2]=b;a[j>>0]=e;if(((c[(c[g>>2]|0)+32>>2]|0)-1|0)>(c[(c[(c[g>>2]|0)+24>>2]|0)+96>>2]|0)?(d[(c[(c[g>>2]|0)+4>>2]|0)+(((c[(c[g>>2]|0)+32>>2]|0)-1|0)*20|0)>>0]|0|0)==(d[j>>0]|0|0):0){c[f>>2]=pA(c[g>>2]|0,(c[(c[g>>2]|0)+32>>2]|0)-1|0)|0;j=c[f>>2]|0;i=h;return j|0}c[f>>2]=0;j=c[f>>2]|0;i=h;return j|0}function nA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;oA(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0);if((c[g>>2]|0)<=(c[(c[e>>2]|0)+60>>2]|0)){i=h;return}c[(c[e>>2]|0)+60>>2]=c[g>>2];c[(c[e>>2]|0)+64>>2]=c[f>>2];i=h;return}function oA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;e=l+24|0;f=l+20|0;m=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[e>>2]=a;c[f>>2]=b;c[m>>2]=d;c[h>>2]=(c[f>>2]|0)+(c[m>>2]|0)-1;c[g>>2]=0;c[j>>2]=(c[e>>2]|0)+124;while(1){if((c[g>>2]|0)>=10)break;c[k>>2]=c[(c[j>>2]|0)+12>>2];if((c[k>>2]|0)>=(c[f>>2]|0)?(c[k>>2]|0)<=(c[h>>2]|0):0){hA(c[e>>2]|0,c[j>>2]|0);c[(c[j>>2]|0)+12>>2]=0}c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+20}i=l;return}function pA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;if(a[(c[c[f>>2]>>2]|0)+65>>0]|0){c[e>>2]=0;h=c[e>>2]|0;i=j;return h|0}else{c[h>>2]=(c[(c[f>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0);qA(c[c[f>>2]>>2]|0,a[(c[h>>2]|0)+1>>0]|0,c[(c[h>>2]|0)+16>>2]|0);a[(c[h>>2]|0)+1>>0]=0;c[(c[h>>2]|0)+16>>2]=0;a[c[h>>2]>>0]=-96;c[e>>2]=1;h=c[e>>2]|0;i=j;return h|0}return 0}function qA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j+12|0;e=j+8|0;f=j+4|0;h=j;c[g>>2]=a;c[e>>2]=b;c[f>>2]=d;if(!(c[f>>2]|0)){i=j;return}switch(c[e>>2]|0){case-20:{rA(c[g>>2]|0,c[(c[f>>2]|0)+4>>2]|0);break}case-15:case-1:case-13:case-12:break;case-6:{if(c[(c[g>>2]|0)+528>>2]|0){i=j;return}Rz(c[f>>2]|0);i=j;return}case-11:{if(c[(c[g>>2]|0)+528>>2]|0){i=j;return}Kd(c[f>>2]|0);i=j;return}case-5:{rA(c[g>>2]|0,c[f>>2]|0);i=j;return}case-8:{e=c[f>>2]|0;if(!(c[(c[g>>2]|0)+528>>2]|0)){$g(e);i=j;return}c[h>>2]=e;if(c[(c[h>>2]|0)+24>>2]|0)Sf(c[g>>2]|0,c[(c[h>>2]|0)+20>>2]|0);Sf(c[g>>2]|0,c[h>>2]|0);i=j;return}case-10:{if(c[(c[g>>2]|0)+528>>2]|0){i=j;return}hu(c[f>>2]|0);i=j;return}default:{i=j;return}}Sf(c[g>>2]|0,c[f>>2]|0);i=j;return}function rA(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;f=g;c[d>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=g;return}if(!((e[(c[f>>2]|0)+2>>1]|0)&16)){i=g;return}Sf(c[d>>2]|0,c[f>>2]|0);i=g;return}function sA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=c[c[f>>2]>>2];c[g>>2]=ny(c[j>>2]|0,c[g>>2]|0,0)|0;if(a[(c[j>>2]|0)+65>>0]|0){b=c[j>>2]|0;e=c[g>>2]|0;Zu(b,e);i=k;return}xA(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0);b=c[j>>2]|0;e=c[g>>2]|0;Zu(b,e);i=k;return}function tA(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;o=q+4|0;p=q;c[j>>2]=a;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;if((c[m>>2]|0)>=0?(c[m>>2]|0)!=(b[(c[k>>2]|0)+32>>1]|0):0){c[o>>2]=(d[(c[k>>2]|0)+42>>0]&16|0)!=0?153:47;c[p>>2]=c[m>>2];if(d[(c[k>>2]|0)+42>>0]&32){a=Ej(c[k>>2]|0)|0;c[p>>2]=(uA(a,c[m>>2]&65535)|0)<<16>>16}Vw(c[j>>2]|0,c[o>>2]|0,c[l>>2]|0,c[p>>2]|0,c[n>>2]|0)|0}else Rw(c[j>>2]|0,103,c[l>>2]|0,c[n>>2]|0)|0;if((c[m>>2]|0)<0){i=q;return}vA(c[j>>2]|0,c[k>>2]|0,c[m>>2]|0,c[n>>2]|0);i=q;return}function uA(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k+10|0;f=k+4|0;g=k+8|0;h=k;c[f>>2]=a;b[g>>1]=d;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[(c[f>>2]|0)+52>>1]|0)){d=6;break}a=c[h>>2]|0;if((b[g>>1]|0)==(b[(c[(c[f>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1]|0)){d=4;break}c[h>>2]=a+1}if((d|0)==4){b[j>>1]=a;j=b[j>>1]|0;i=k;return j|0}else if((d|0)==6){b[j>>1]=-1;j=b[j>>1]|0;i=k;return j|0}return 0}function vA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+20|0;h=o+16|0;j=o+12|0;k=o+8|0;n=o+4|0;l=o+24|0;m=o;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;if(c[(c[h>>2]|0)+12>>2]|0){i=o;return}c[n>>2]=0;a[l>>0]=a[(wA(c[g>>2]|0)|0)+62>>0]|0;c[m>>2]=(c[(c[h>>2]|0)+4>>2]|0)+((c[j>>2]|0)*24|0);b=wA(c[g>>2]|0)|0;dx(b,c[(c[m>>2]|0)+4>>2]|0,a[l>>0]|0,a[(c[m>>2]|0)+21>>0]|0,n)|0;if(c[n>>2]|0)Ih(c[g>>2]|0,-1,c[n>>2]|0,-8);if((a[(c[(c[h>>2]|0)+4>>2]|0)+((c[j>>2]|0)*24|0)+21>>0]|0)!=69){i=o;return}xz(c[g>>2]|0,39,c[k>>2]|0)|0;i=o;return}function wA(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[b>>2]>>2]|0}function xA(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;if((c[g>>2]|0)!=0?(d[c[g>>2]>>0]|0|0)==157:0){Rw(c[(c[f>>2]|0)+8>>2]|0,30,c[(c[g>>2]|0)+28>>2]|0,c[h>>2]|0)|0;i=k;return}c[j>>2]=yA(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;if((c[j>>2]|0)==(c[h>>2]|0)){i=k;return}if(!(c[(c[f>>2]|0)+8>>2]|0)){i=k;return}Rw(c[(c[f>>2]|0)+8>>2]|0,31,c[j>>2]|0,c[h>>2]|0)|0;i=k;return}function yA(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;la=i;i=i+320|0;C=la+16|0;H=la+8|0;B=la;da=la+308|0;ea=la+304|0;J=la+300|0;fa=la+296|0;ja=la+292|0;o=la+288|0;ga=la+284|0;ha=la+280|0;ia=la+276|0;R=la+272|0;y=la+268|0;z=la+264|0;A=la+260|0;L=la+256|0;U=la+208|0;q=la+200|0;r=la+196|0;m=la+192|0;n=la+188|0;D=la+184|0;E=la+180|0;u=la+176|0;j=la+172|0;s=la+168|0;T=la+164|0;S=la+160|0;Q=la+156|0;G=la+152|0;I=la+148|0;K=la+144|0;O=la+140|0;F=la+313|0;P=la+136|0;M=la+132|0;N=la+312|0;k=la+128|0;l=la+124|0;v=la+120|0;t=la+116|0;w=la+112|0;x=la+108|0;p=la+104|0;W=la+100|0;Z=la+96|0;Y=la+92|0;X=la+88|0;aa=la+84|0;V=la+80|0;$=la+32|0;ca=la+24|0;ba=la+20|0;c[ea>>2]=f;c[J>>2]=g;c[fa>>2]=h;c[ja>>2]=c[(c[ea>>2]|0)+8>>2];c[ga>>2]=c[fa>>2];c[ha>>2]=0;c[ia>>2]=0;c[L>>2]=c[c[ea>>2]>>2];if(!(c[ja>>2]|0)){c[da>>2]=0;ka=c[da>>2]|0;i=la;return ka|0}if(!(c[J>>2]|0))c[o>>2]=101;else c[o>>2]=d[c[J>>2]>>0];a:do switch(c[o>>2]|0){case 154:{c[q>>2]=c[(c[J>>2]|0)+40>>2];c[r>>2]=(c[(c[q>>2]|0)+28>>2]|0)+((b[(c[J>>2]|0)+34>>1]|0)*24|0);if(!(a[c[q>>2]>>0]|0)){c[ga>>2]=c[(c[r>>2]|0)+16>>2];break a}if(a[(c[q>>2]|0)+1>>0]|0)Vw(c[ja>>2]|0,47,c[(c[q>>2]|0)+8>>2]|0,c[(c[r>>2]|0)+12>>2]|0,c[fa>>2]|0)|0;else ka=11;break}case 152:{ka=11;break}case 132:{AA(c[ea>>2]|0,c[J>>2]|0,0,c[fa>>2]|0);break}case 133:{BA(c[ja>>2]|0,c[(c[J>>2]|0)+8>>2]|0,0,c[fa>>2]|0);break}case 97:{Tw(c[ja>>2]|0,c[fa>>2]|0,c[(c[J>>2]|0)+8>>2]|0)|0;break}case 101:{Rw(c[ja>>2]|0,25,0,c[fa>>2]|0)|0;break}case 134:{c[D>>2]=(c[(c[J>>2]|0)+8>>2]|0)+2;c[n>>2]=(If(c[D>>2]|0)|0)-1;c[E>>2]=ox(wA(c[ja>>2]|0)|0,c[D>>2]|0,c[n>>2]|0)|0;Uw(c[ja>>2]|0,27,(c[n>>2]|0)/2|0,c[fa>>2]|0,0,c[E>>2]|0,-1)|0;break}case 135:{Rw(c[ja>>2]|0,28,b[(c[J>>2]|0)+32>>1]|0,c[fa>>2]|0)|0;if(a[(c[(c[J>>2]|0)+8>>2]|0)+1>>0]|0)Ih(c[ja>>2]|0,-1,c[(c[(c[ea>>2]|0)+476>>2]|0)+((b[(c[J>>2]|0)+32>>1]|0)-1<<2)>>2]|0,-2);break}case 157:{c[ga>>2]=c[(c[J>>2]|0)+28>>2];break}case 38:{c[ga>>2]=yA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,c[fa>>2]|0)|0;if((c[ga>>2]|0)!=(c[fa>>2]|0)){Rw(c[ja>>2]|0,31,c[ga>>2]|0,c[fa>>2]|0)|0;c[ga>>2]=c[fa>>2]}Rw(c[ja>>2]|0,40,c[fa>>2]|0,(jx(c[(c[J>>2]|0)+8>>2]|0,0)|0)<<24>>24)|0;CA(c[ea>>2]|0,c[ga>>2]|0,1);break}case 79:case 78:case 83:case 80:case 81:case 82:{c[R>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ha)|0;c[y>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+16>>2]|0,ia)|0;EA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,c[(c[J>>2]|0)+16>>2]|0,c[o>>2]|0,c[R>>2]|0,c[y>>2]|0,c[ga>>2]|0,32)|0;break}case 148:case 73:{c[R>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ha)|0;c[y>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+16>>2]|0,ia)|0;c[o>>2]=(c[o>>2]|0)==73?79:78;EA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,c[(c[J>>2]|0)+16>>2]|0,c[o>>2]|0,c[R>>2]|0,c[y>>2]|0,c[ga>>2]|0,160)|0;break}case 94:case 88:case 87:case 92:case 86:case 85:case 93:case 90:case 91:case 89:case 71:case 72:{c[R>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ha)|0;c[y>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+16>>2]|0,ia)|0;Vw(c[ja>>2]|0,c[o>>2]|0,c[y>>2]|0,c[R>>2]|0,c[fa>>2]|0)|0;break}case 155:{c[u>>2]=c[(c[J>>2]|0)+12>>2];do if((d[c[u>>2]>>0]|0)!=132)if((d[c[u>>2]>>0]|0)==133){BA(c[ja>>2]|0,c[(c[u>>2]|0)+8>>2]|0,1,c[fa>>2]|0);break}else{a[U>>0]=-124;c[U+4>>2]=17408;c[U+8>>2]=0;c[R>>2]=DA(c[ea>>2]|0,U,ha)|0;c[y>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ia)|0;Vw(c[ja>>2]|0,90,c[y>>2]|0,c[R>>2]|0,c[fa>>2]|0)|0;break}else AA(c[ea>>2]|0,c[u>>2]|0,1,c[fa>>2]|0);while(0);c[ga>>2]=c[fa>>2];break}case 19:case 96:{c[R>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ha)|0;c[ga>>2]=c[fa>>2];Rw(c[ja>>2]|0,c[o>>2]|0,c[R>>2]|0,c[ga>>2]|0)|0;break}case 77:case 76:{Rw(c[ja>>2]|0,22,1,c[fa>>2]|0)|0;c[R>>2]=DA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,ha)|0;c[j>>2]=xz(c[ja>>2]|0,c[o>>2]|0,c[R>>2]|0)|0;Rw(c[ja>>2]|0,22,0,c[fa>>2]|0)|0;Fz(c[ja>>2]|0,c[j>>2]|0);break}case 153:{c[s>>2]=c[(c[J>>2]|0)+40>>2];if(!(c[s>>2]|0)){ja=c[ea>>2]|0;c[B>>2]=c[(c[J>>2]|0)+8>>2];Ah(ja,31938,B);break a}else{c[ga>>2]=c[(c[(c[s>>2]|0)+40>>2]|0)+(b[(c[J>>2]|0)+34>>1]<<4)+8>>2];break a}}case 151:{c[K>>2]=0;a[F>>0]=a[(c[L>>2]|0)+62>>0]|0;c[P>>2]=0;if(c[(c[J>>2]|0)+4>>2]&16384)c[T>>2]=0;else c[T>>2]=c[(c[J>>2]|0)+20>>2];if(c[T>>2]|0)j=c[c[T>>2]>>2]|0;else j=0;c[S>>2]=j;c[I>>2]=c[(c[J>>2]|0)+8>>2];c[G>>2]=If(c[I>>2]|0)|0;c[Q>>2]=gi(c[L>>2]|0,c[I>>2]|0,c[G>>2]|0,c[S>>2]|0,a[F>>0]|0,0)|0;if((c[Q>>2]|0)!=0?(c[(c[Q>>2]|0)+16>>2]|0)==0:0){if(e[(c[Q>>2]|0)+2>>1]&512){c[M>>2]=Cz(c[ja>>2]|0)|0;xA(c[ea>>2]|0,c[c[(c[T>>2]|0)+4>>2]>>2]|0,c[fa>>2]|0);c[O>>2]=1;while(1){j=c[ja>>2]|0;if((c[O>>2]|0)>=(c[S>>2]|0))break;Rw(j,77,c[fa>>2]|0,c[M>>2]|0)|0;oA(c[ea>>2]|0,c[fa>>2]|0,1);iA(c[ea>>2]|0);xA(c[ea>>2]|0,c[(c[(c[T>>2]|0)+4>>2]|0)+((c[O>>2]|0)*20|0)>>2]|0,c[fa>>2]|0);gA(c[ea>>2]|0);c[O>>2]=(c[O>>2]|0)+1}Gz(j,c[M>>2]|0);break a}if(e[(c[Q>>2]|0)+2>>1]&1024){c[ga>>2]=yA(c[ea>>2]|0,c[c[(c[T>>2]|0)+4>>2]>>2]|0,c[fa>>2]|0)|0;break a}c[O>>2]=0;while(1){if((c[O>>2]|0)>=(c[S>>2]|0))break;if((c[O>>2]|0)<32?(FA(c[(c[(c[T>>2]|0)+4>>2]|0)+((c[O>>2]|0)*20|0)>>2]|0)|0)!=0:0)c[K>>2]=c[K>>2]|1<>2];if(!((c[P>>2]|0)!=0?1:(e[(c[Q>>2]|0)+2>>1]&32|0)==0))c[P>>2]=Ox(c[ea>>2]|0,c[(c[(c[T>>2]|0)+4>>2]|0)+((c[O>>2]|0)*20|0)>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+1}if(c[T>>2]|0){j=c[ea>>2]|0;if(c[K>>2]|0){c[R>>2]=(c[j+76>>2]|0)+1;ca=(c[ea>>2]|0)+76|0;c[ca>>2]=(c[ca>>2]|0)+(c[S>>2]|0)}else c[R>>2]=kA(j,c[S>>2]|0)|0;do if(e[(c[Q>>2]|0)+2>>1]&192){a[N>>0]=a[c[c[(c[T>>2]|0)+4>>2]>>2]>>0]|0;if((d[N>>0]|0)!=152?(d[N>>0]|0)!=154:0)break;a[(c[c[(c[T>>2]|0)+4>>2]>>2]|0)+38>>0]=e[(c[Q>>2]|0)+2>>1]&192}while(0);iA(c[ea>>2]|0);GA(c[ea>>2]|0,c[T>>2]|0,c[R>>2]|0,0,3)|0;gA(c[ea>>2]|0)}else c[R>>2]=0;if((c[S>>2]|0)>=2?(c[(c[J>>2]|0)+4>>2]&128|0)!=0:0)c[Q>>2]=HA(c[L>>2]|0,c[Q>>2]|0,c[S>>2]|0,c[(c[(c[T>>2]|0)+4>>2]|0)+20>>2]|0)|0;else ka=77;if((ka|0)==77?(c[S>>2]|0)>0:0)c[Q>>2]=HA(c[L>>2]|0,c[Q>>2]|0,c[S>>2]|0,c[c[(c[T>>2]|0)+4>>2]>>2]|0)|0;if(e[(c[Q>>2]|0)+2>>1]&32){if(!(c[P>>2]|0))c[P>>2]=c[(c[L>>2]|0)+8>>2];Uw(c[ja>>2]|0,34,0,0,0,c[P>>2]|0,-4)|0}Uw(c[ja>>2]|0,35,c[K>>2]|0,c[R>>2]|0,c[fa>>2]|0,c[Q>>2]|0,-5)|0;Fh(c[ja>>2]|0,c[S>>2]&255);if(!((c[S>>2]|0)!=0&(c[K>>2]|0)==0))break a;nA(c[ea>>2]|0,c[R>>2]|0,c[S>>2]|0);break a}ja=c[ea>>2]|0;fa=c[I>>2]|0;c[H>>2]=c[G>>2];c[H+4>>2]=fa;Ah(ja,31964,H);break}case 119:case 20:{c[ga>>2]=IA(c[ea>>2]|0,c[J>>2]|0,0,0)|0;break}case 75:{c[k>>2]=Cz(c[ja>>2]|0)|0;c[l>>2]=Cz(c[ja>>2]|0)|0;Rw(c[ja>>2]|0,25,0,c[fa>>2]|0)|0;JA(c[ea>>2]|0,c[J>>2]|0,c[k>>2]|0,c[l>>2]|0);Rw(c[ja>>2]|0,22,1,c[fa>>2]|0)|0;Gz(c[ja>>2]|0,c[k>>2]|0);Rw(c[ja>>2]|0,37,c[fa>>2]|0,0)|0;Gz(c[ja>>2]|0,c[l>>2]|0);break}case 74:{c[v>>2]=c[(c[J>>2]|0)+12>>2];c[t>>2]=c[(c[(c[J>>2]|0)+20>>2]|0)+4>>2];c[w>>2]=c[c[t>>2]>>2];c[R>>2]=DA(c[ea>>2]|0,c[v>>2]|0,ha)|0;c[y>>2]=DA(c[ea>>2]|0,c[w>>2]|0,ia)|0;c[z>>2]=Wz(c[ea>>2]|0)|0;c[A>>2]=Wz(c[ea>>2]|0)|0;EA(c[ea>>2]|0,c[v>>2]|0,c[w>>2]|0,83,c[R>>2]|0,c[y>>2]|0,c[z>>2]|0,32)|0;c[t>>2]=(c[t>>2]|0)+20;c[w>>2]=c[c[t>>2]>>2];_z(c[ea>>2]|0,c[ia>>2]|0);c[y>>2]=DA(c[ea>>2]|0,c[w>>2]|0,ia)|0;EA(c[ea>>2]|0,c[v>>2]|0,c[w>>2]|0,81,c[R>>2]|0,c[y>>2]|0,c[A>>2]|0,32)|0;Vw(c[ja>>2]|0,72,c[z>>2]|0,c[A>>2]|0,c[fa>>2]|0)|0;_z(c[ea>>2]|0,c[z>>2]|0);_z(c[ea>>2]|0,c[A>>2]|0);break}case 156:case 95:{c[ga>>2]=yA(c[ea>>2]|0,c[(c[J>>2]|0)+12>>2]|0,c[fa>>2]|0)|0;break}case 62:{c[x>>2]=c[(c[J>>2]|0)+44>>2];c[p>>2]=(_(c[(c[J>>2]|0)+28>>2]|0,(b[(c[x>>2]|0)+34>>1]|0)+1|0)|0)+1+(b[(c[J>>2]|0)+32>>1]|0);Rw(c[ja>>2]|0,134,c[p>>2]|0,c[fa>>2]|0)|0;if((b[(c[J>>2]|0)+32>>1]|0)>=0?(a[(c[(c[x>>2]|0)+4>>2]|0)+((b[(c[J>>2]|0)+32>>1]|0)*24|0)+21>>0]|0)==69:0)xz(c[ja>>2]|0,39,c[fa>>2]|0)|0;break}case 57:{if(!(c[(c[ea>>2]|0)+420>>2]|0)){Ah(c[ea>>2]|0,31989,C);c[da>>2]=0;ka=c[da>>2]|0;i=la;return ka|0}if((a[(c[J>>2]|0)+1>>0]|0)==2)Bx(c[ea>>2]|0);if((a[(c[J>>2]|0)+1>>0]|0)==4){Uw(c[ja>>2]|0,21,0,4,0,c[(c[J>>2]|0)+8>>2]|0,0)|0;break a}else{bA(c[ea>>2]|0,1811,a[(c[J>>2]|0)+1>>0]|0,c[(c[J>>2]|0)+8>>2]|0,0,0);break a}}default:{c[ba>>2]=0;c[aa>>2]=c[(c[J>>2]|0)+20>>2];c[V>>2]=c[(c[aa>>2]|0)+4>>2];c[Y>>2]=c[c[aa>>2]>>2];c[W>>2]=Cz(c[ja>>2]|0)|0;T=c[(c[J>>2]|0)+12>>2]|0;c[ca>>2]=T;if(T){j=U;k=c[ca>>2]|0;l=j+48|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(l|0));KA(U,DA(c[ea>>2]|0,c[ca>>2]|0,ha)|0);a[$>>0]=79;c[$+12>>2]=U;c[ba>>2]=$;c[ha>>2]=0}c[X>>2]=0;while(1){if((c[X>>2]|0)>=((c[Y>>2]|0)-1|0))break;iA(c[ea>>2]|0);j=c[(c[V>>2]|0)+((c[X>>2]|0)*20|0)>>2]|0;if(c[ca>>2]|0)c[$+16>>2]=j;else c[ba>>2]=j;c[Z>>2]=Cz(c[ja>>2]|0)|0;LA(c[ea>>2]|0,c[ba>>2]|0,c[Z>>2]|0,16);xA(c[ea>>2]|0,c[(c[V>>2]|0)+(((c[X>>2]|0)+1|0)*20|0)>>2]|0,c[fa>>2]|0);Ez(c[ja>>2]|0,c[W>>2]|0)|0;gA(c[ea>>2]|0);Gz(c[ja>>2]|0,c[Z>>2]|0);c[X>>2]=(c[X>>2]|0)+2}if(c[Y>>2]&1){iA(c[ea>>2]|0);xA(c[ea>>2]|0,c[(c[(c[aa>>2]|0)+4>>2]|0)+(((c[Y>>2]|0)-1|0)*20|0)>>2]|0,c[fa>>2]|0);gA(c[ea>>2]|0)}else Rw(c[ja>>2]|0,25,0,c[fa>>2]|0)|0;Gz(c[ja>>2]|0,c[W>>2]|0)}}while(0);b:do if((ka|0)==11){c[m>>2]=c[(c[J>>2]|0)+28>>2];do if((c[m>>2]|0)<0)if((c[(c[ea>>2]|0)+100>>2]|0)>0){c[ga>>2]=(b[(c[J>>2]|0)+32>>1]|0)+(c[(c[ea>>2]|0)+100>>2]|0);break b}else{c[m>>2]=c[(c[ea>>2]|0)+104>>2];break}while(0);c[ga>>2]=zA(c[ea>>2]|0,c[(c[J>>2]|0)+44>>2]|0,b[(c[J>>2]|0)+32>>1]|0,c[m>>2]|0,c[fa>>2]|0,a[(c[J>>2]|0)+38>>0]|0)|0}while(0);_z(c[ea>>2]|0,c[ha>>2]|0);_z(c[ea>>2]|0,c[ia>>2]|0);c[da>>2]=c[ga>>2];ka=c[da>>2]|0;i=la;return ka|0}function zA(d,e,f,g,h,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+48|0;k=v+32|0;l=v+28|0;m=v+24|0;n=v+20|0;o=v+16|0;p=v+12|0;q=v+36|0;t=v+8|0;r=v+4|0;s=v;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;a[q>>0]=j;c[t>>2]=c[(c[l>>2]|0)+8>>2];c[r>>2]=0;c[s>>2]=(c[l>>2]|0)+124;while(1){if((c[r>>2]|0)>=10)break;if(((c[(c[s>>2]|0)+12>>2]|0)>0?(c[c[s>>2]>>2]|0)==(c[o>>2]|0):0)?(b[(c[s>>2]|0)+4>>1]|0)==(c[n>>2]|0):0){u=6;break}c[r>>2]=(c[r>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+20}if((u|0)==6){t=(c[l>>2]|0)+112|0;u=c[t>>2]|0;c[t>>2]=u+1;c[(c[s>>2]|0)+16>>2]=u;fB(c[l>>2]|0,c[(c[s>>2]|0)+12>>2]|0);c[k>>2]=c[(c[s>>2]|0)+12>>2];u=c[k>>2]|0;i=v;return u|0}tA(c[t>>2]|0,c[m>>2]|0,c[o>>2]|0,c[n>>2]|0,c[p>>2]|0);if(a[q>>0]|0)Fh(c[t>>2]|0,a[q>>0]|0);else gB(c[l>>2]|0,c[o>>2]|0,c[n>>2]|0,c[p>>2]|0);c[k>>2]=c[p>>2];u=c[k>>2]|0;i=v;return u|0}function AA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;n=p+8|0;f=p+40|0;q=p+36|0;g=p+32|0;h=p+28|0;l=p+24|0;k=p+20|0;j=p+16|0;m=p;o=p+12|0;c[f>>2]=a;c[q>>2]=b;c[g>>2]=d;c[h>>2]=e;c[l>>2]=c[(c[f>>2]|0)+8>>2];e=(c[q>>2]|0)+8|0;if(c[(c[q>>2]|0)+4>>2]&1024){c[k>>2]=c[e>>2];if(c[g>>2]|0)c[k>>2]=0-(c[k>>2]|0);Rw(c[l>>2]|0,22,c[k>>2]|0,c[h>>2]|0)|0;i=p;return}c[o>>2]=c[e>>2];c[j>>2]=Ci(c[o>>2]|0,m)|0;if((c[j>>2]|0)!=0?!((c[j>>2]|0)==2&(c[g>>2]|0)!=0):0)if(!(zd(c[o>>2]|0,32088,2)|0)){q=c[f>>2]|0;c[n>>2]=c[o>>2];Ah(q,32091,n);i=p;return}else{BA(c[l>>2]|0,c[o>>2]|0,c[g>>2]|0,c[h>>2]|0);i=p;return}if(c[g>>2]|0){o=(c[j>>2]|0)==2;n=m;n=fR(0,0,c[n>>2]|0,c[n+4>>2]|0)|0;q=m;c[q>>2]=o?0:n;c[q+4>>2]=o?-2147483648:C}eB(c[l>>2]|0,23,0,c[h>>2]|0,0,m,-13)|0;i=p;return}function BA(a,b,d,e){a=a|0;b=b|0; -d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;j=m+12|0;k=m+8|0;l=m;c[f>>2]=a;c[g>>2]=b;c[j>>2]=d;c[k>>2]=e;if(!(c[g>>2]|0)){i=m;return}b=c[g>>2]|0;Ky(b,l,If(c[g>>2]|0)|0,1)|0;if(c[j>>2]|0)h[l>>3]=-+h[l>>3];eB(c[f>>2]|0,133,0,c[k>>2]|0,0,l,-12)|0;i=m;return}function CA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;oA(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0);i=e;return}function DA(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+32|0;g=q+28|0;h=q+24|0;j=q+20|0;o=q+16|0;l=q+12|0;k=q+8|0;m=q+4|0;n=q;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[h>>2]=Tx(c[h>>2]|0)|0;if(((d[(c[g>>2]|0)+23>>0]|0|0)!=0?(d[c[h>>2]>>0]|0|0)!=157:0)?(dB(c[h>>2]|0)|0)!=0:0){c[l>>2]=c[(c[g>>2]|0)+324>>2];c[c[j>>2]>>2]=0;a:do if(c[l>>2]|0){c[m>>2]=c[(c[l>>2]|0)+4>>2];c[k>>2]=c[c[l>>2]>>2];while(1){if((c[k>>2]|0)<=0)break a;if(((d[(c[m>>2]|0)+13>>0]|0)>>>2&1|0)!=0?(py(c[c[m>>2]>>2]|0,c[h>>2]|0,-1)|0)==0:0)break;c[m>>2]=(c[m>>2]|0)+20;c[k>>2]=(c[k>>2]|0)+-1}c[f>>2]=c[(c[m>>2]|0)+16>>2];p=c[f>>2]|0;i=q;return p|0}while(0);e=(c[g>>2]|0)+76|0;n=(c[e>>2]|0)+1|0;c[e>>2]=n;c[o>>2]=n;_A(c[g>>2]|0,c[h>>2]|0,c[o>>2]|0,1)}else p=12;do if((p|0)==12){c[n>>2]=Wz(c[g>>2]|0)|0;c[o>>2]=yA(c[g>>2]|0,c[h>>2]|0,c[n>>2]|0)|0;if((c[o>>2]|0)==(c[n>>2]|0)){c[c[j>>2]>>2]=c[n>>2];break}else{_z(c[g>>2]|0,c[n>>2]|0);c[c[j>>2]>>2]=0;break}}while(0);c[f>>2]=c[o>>2];p=c[f>>2]|0;i=q;return p|0}function EA(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=i;i=i+48|0;n=l+40|0;v=l+36|0;u=l+32|0;s=l+28|0;p=l+24|0;r=l+20|0;q=l+16|0;t=l+12|0;m=l+8|0;k=l+4|0;o=l;c[n>>2]=a;c[v>>2]=b;c[u>>2]=d;c[s>>2]=e;c[p>>2]=f;c[r>>2]=g;c[q>>2]=h;c[t>>2]=j;c[o>>2]=VA(c[n>>2]|0,c[v>>2]|0,c[u>>2]|0)|0;c[m>>2]=(cB(c[v>>2]|0,c[u>>2]|0,c[t>>2]|0)|0)&255;c[k>>2]=Uw(c[(c[n>>2]|0)+8>>2]|0,c[s>>2]|0,c[r>>2]|0,c[q>>2]|0,c[p>>2]|0,c[o>>2]|0,-4)|0;Fh(c[(c[n>>2]|0)+8>>2]|0,c[m>>2]&255);i=l;return c[k>>2]|0}function FA(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=$A(c[d>>2]|0,1,0)|0;i=b;return a|0}function GA(b,f,g,h,j){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+64|0;k=z+44|0;l=z+40|0;m=z+36|0;n=z+32|0;o=z+49|0;v=z+28|0;q=z+24|0;s=z+20|0;t=z+16|0;p=z+48|0;x=z+12|0;u=z+8|0;r=z+4|0;w=z;c[k>>2]=b;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;a[o>>0]=j;a[p>>0]=(d[o>>0]&1|0)!=0?30:31;c[x>>2]=c[(c[k>>2]|0)+8>>2];c[t>>2]=c[c[l>>2]>>2];if(!(a[(c[k>>2]|0)+23>>0]|0))a[o>>0]=d[o>>0]&-3;c[v>>2]=c[(c[l>>2]|0)+4>>2];c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[t>>2]|0))break;c[u>>2]=c[c[v>>2]>>2];if((d[o>>0]&4|0)!=0?(g=e[(c[(c[l>>2]|0)+4>>2]|0)+((c[q>>2]|0)*20|0)+16>>1]|0,c[s>>2]=g,(g|0)>0):0)Rw(c[x>>2]|0,d[p>>0]|0,(c[s>>2]|0)+(c[n>>2]|0)-1|0,(c[m>>2]|0)+(c[q>>2]|0)|0)|0;else y=8;do if((y|0)==8){y=0;if((d[o>>0]&2|0)!=0?(FA(c[u>>2]|0)|0)!=0:0){_A(c[k>>2]|0,c[u>>2]|0,(c[m>>2]|0)+(c[q>>2]|0)|0,0);break}c[r>>2]=yA(c[k>>2]|0,c[u>>2]|0,(c[m>>2]|0)+(c[q>>2]|0)|0)|0;if((c[r>>2]|0)!=((c[m>>2]|0)+(c[q>>2]|0)|0)){if((((d[p>>0]|0)==30?(g=Mz(c[x>>2]|0,-1)|0,c[w>>2]=g,(d[g>>0]|0)==30):0)?((c[(c[w>>2]|0)+4>>2]|0)+(c[(c[w>>2]|0)+12>>2]|0)+1|0)==(c[r>>2]|0):0)?((c[(c[w>>2]|0)+8>>2]|0)+(c[(c[w>>2]|0)+12>>2]|0)+1|0)==((c[m>>2]|0)+(c[q>>2]|0)|0):0){g=(c[w>>2]|0)+12|0;c[g>>2]=(c[g>>2]|0)+1;break}Rw(c[x>>2]|0,d[p>>0]|0,c[r>>2]|0,(c[m>>2]|0)+(c[q>>2]|0)|0)|0}}while(0);c[q>>2]=(c[q>>2]|0)+1;c[v>>2]=(c[v>>2]|0)+20}i=z;return c[t>>2]|0}function HA(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+64|0;k=z+56|0;l=z+52|0;m=z+48|0;n=z+44|0;o=z+40|0;t=z+36|0;u=z+32|0;r=z+28|0;w=z+24|0;q=z+20|0;s=z+16|0;v=z+12|0;y=z+8|0;x=z+4|0;p=z;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[o>>2]=j;c[w>>2]=0;c[q>>2]=0;c[v>>2]=0;if(!(c[o>>2]|0)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}if((d[c[o>>2]>>0]|0)!=152){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}c[t>>2]=c[(c[o>>2]|0)+44>>2];if(!(c[t>>2]|0)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}if(!(d[(c[t>>2]|0)+42>>0]&16)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}c[u>>2]=c[(Ax(c[l>>2]|0,c[t>>2]|0)|0)+8>>2];c[r>>2]=c[c[u>>2]>>2];if(!(c[(c[r>>2]|0)+72>>2]|0)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}c[y>>2]=nh(c[l>>2]|0,c[(c[m>>2]|0)+20>>2]|0)|0;if(c[y>>2]|0){c[x>>2]=c[y>>2];while(1){if(!(a[c[x>>2]>>0]|0))break;a[c[x>>2]>>0]=a[18477+(d[c[x>>2]>>0]|0)>>0]|0;c[x>>2]=(c[x>>2]|0)+1}r=c[(c[r>>2]|0)+72>>2]|0;t=c[u>>2]|0;u=c[n>>2]|0;x=c[y>>2]|0;c[p>>2]=w;c[v>>2]=Zb[r&255](t,u,x,c[p>>2]|0,q)|0;Sf(c[l>>2]|0,c[y>>2]|0)}if(!(c[v>>2]|0)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}y=c[l>>2]|0;c[s>>2]=ph(y,32+(If(c[(c[m>>2]|0)+20>>2]|0)|0)+1|0,0)|0;if(!(c[s>>2]|0)){c[k>>2]=c[m>>2];y=c[k>>2]|0;i=z;return y|0}else{x=c[s>>2]|0;y=c[m>>2]|0;c[x>>2]=c[y>>2];c[x+4>>2]=c[y+4>>2];c[x+8>>2]=c[y+8>>2];c[x+12>>2]=c[y+12>>2];c[x+16>>2]=c[y+16>>2];c[x+20>>2]=c[y+20>>2];c[x+24>>2]=c[y+24>>2];c[x+28>>2]=c[y+28>>2];c[(c[s>>2]|0)+20>>2]=(c[s>>2]|0)+32;x=c[(c[s>>2]|0)+20>>2]|0;y=c[(c[m>>2]|0)+20>>2]|0;iR(x|0,y|0,(If(c[(c[m>>2]|0)+20>>2]|0)|0)+1|0)|0;c[(c[s>>2]|0)+12>>2]=c[w>>2];c[(c[s>>2]|0)+4>>2]=c[q>>2];y=(c[s>>2]|0)+2|0;b[y>>1]=e[y>>1]|16;c[k>>2]=c[s>>2];y=c[k>>2]|0;i=z;return y|0}return 0}function IA(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+160|0;k=M;t=M+140|0;u=M+136|0;v=M+132|0;w=M+128|0;x=M+124|0;C=M+120|0;J=M+116|0;K=M+112|0;l=M+108|0;z=M+144|0;y=M+104|0;n=M+100|0;F=M+96|0;s=M+92|0;p=M+72|0;q=M+68|0;A=M+64|0;r=M+60|0;E=M+56|0;G=M+52|0;H=M+48|0;I=M+44|0;D=M+40|0;B=M+36|0;o=M+32|0;m=M+12|0;c[u>>2]=f;c[v>>2]=g;c[w>>2]=h;c[x>>2]=j;c[C>>2]=-1;c[J>>2]=0;c[K>>2]=Pw(c[u>>2]|0)|0;if(!(c[K>>2]|0)){c[t>>2]=0;L=c[t>>2]|0;i=M;return L|0}iA(c[u>>2]|0);if(!(c[(c[v>>2]|0)+4>>2]&32))c[C>>2]=UA(c[u>>2]|0)|0;if((d[(c[u>>2]|0)+453>>0]|0)==2){h=c[c[u>>2]>>2]|0;g=(d[c[v>>2]>>0]|0)==75?32051:32056;f=c[(c[u>>2]|0)+472>>2]|0;c[k>>2]=(c[C>>2]|0)>=0?19266:32039;c[k+4>>2]=g;c[k+8>>2]=f;c[l>>2]=Bh(h,32063,k)|0;Uw(c[K>>2]|0,161,c[(c[u>>2]|0)+468>>2]|0,0,0,c[l>>2]|0,-1)|0}j=c[v>>2]|0;do if((d[c[v>>2]>>0]|0)==75){c[n>>2]=c[j+12>>2];c[F>>2]=0;a[z>>0]=Nx(c[n>>2]|0)|0;n=(c[u>>2]|0)+72|0;o=c[n>>2]|0;c[n>>2]=o+1;c[(c[v>>2]|0)+28>>2]=o;c[y>>2]=Rw(c[K>>2]|0,57,c[(c[v>>2]|0)+28>>2]|0,((c[x>>2]|0)!=0^1)&1)|0;if(c[x>>2]|0)j=0;else j=Qz(c[c[u>>2]>>2]|0,1,1)|0;c[F>>2]=j;j=(c[v>>2]|0)+20|0;do if(!(c[(c[v>>2]|0)+4>>2]&2048)){if(c[j>>2]|0){c[r>>2]=c[(c[v>>2]|0)+20>>2];if(!(a[z>>0]|0))a[z>>0]=65;if(c[F>>2]|0){s=Ox(c[u>>2]|0,c[(c[v>>2]|0)+12>>2]|0)|0;c[(c[F>>2]|0)+20>>2]=s}c[G>>2]=Wz(c[u>>2]|0)|0;c[H>>2]=Wz(c[u>>2]|0)|0;if(c[x>>2]|0)Rw(c[K>>2]|0,25,0,c[H>>2]|0)|0;c[A>>2]=c[c[r>>2]>>2];c[E>>2]=c[(c[r>>2]|0)+4>>2];while(1){if((c[A>>2]|0)<=0)break;c[D>>2]=c[c[E>>2]>>2];if((c[C>>2]|0)>=0?(FA(c[D>>2]|0)|0)==0:0){pA(c[K>>2]|0,c[C>>2]|0)|0;c[C>>2]=-1}if((c[x>>2]|0)!=0?(ky(c[D>>2]|0,B)|0)!=0:0)Vw(c[K>>2]|0,84,c[(c[v>>2]|0)+28>>2]|0,c[H>>2]|0,c[B>>2]|0)|0;else L=29;do if((L|0)==29){L=0;c[I>>2]=yA(c[u>>2]|0,c[D>>2]|0,c[G>>2]|0)|0;j=c[K>>2]|0;g=c[I>>2]|0;if(c[x>>2]|0){Rw(j,38,g,(Bz(c[K>>2]|0)|0)+2|0)|0;Vw(c[K>>2]|0,75,c[(c[v>>2]|0)+28>>2]|0,c[H>>2]|0,c[I>>2]|0)|0;break}else{Uw(j,49,g,1,c[H>>2]|0,z,1)|0;CA(c[u>>2]|0,c[I>>2]|0,1);Rw(c[K>>2]|0,110,c[(c[v>>2]|0)+28>>2]|0,c[H>>2]|0)|0;break}}while(0);c[A>>2]=(c[A>>2]|0)+-1;c[E>>2]=(c[E>>2]|0)+20}_z(c[u>>2]|0,c[G>>2]|0);_z(c[u>>2]|0,c[H>>2]|0)}}else{c[s>>2]=c[j>>2];ZA(p,11,c[(c[v>>2]|0)+28>>2]|0);a[p+1>>0]=a[z>>0]|0;c[(c[s>>2]|0)+8>>2]=0;if(!(Cv(c[u>>2]|0,c[s>>2]|0,p)|0)){c[q>>2]=c[c[s>>2]>>2];L=VA(c[u>>2]|0,c[(c[v>>2]|0)+12>>2]|0,c[c[(c[q>>2]|0)+4>>2]>>2]|0)|0;c[(c[F>>2]|0)+20>>2]=L;break}Rz(c[F>>2]|0);c[t>>2]=0;L=c[t>>2]|0;i=M;return L|0}while(0);if(c[F>>2]|0)Ih(c[K>>2]|0,c[y>>2]|0,c[F>>2]|0,-6)}else{c[o>>2]=c[j+20>>2];I=(c[u>>2]|0)+76|0;L=(c[I>>2]|0)+1|0;c[I>>2]=L;ZA(m,0,L);if((d[c[v>>2]>>0]|0)==119){a[m>>0]=10;c[m+8>>2]=c[m+4>>2];Rw(c[K>>2]|0,25,0,c[m+4>>2]|0)|0}else{a[m>>0]=3;Rw(c[K>>2]|0,22,0,c[m+4>>2]|0)|0}Zu(c[c[u>>2]>>2]|0,c[(c[o>>2]|0)+60>>2]|0);L=rv(c[u>>2]|0,132,0,0,5100)|0;c[(c[o>>2]|0)+60>>2]=L;c[(c[o>>2]|0)+8>>2]=0;L=(c[o>>2]|0)+6|0;b[L>>1]=e[L>>1]&-513;if(!(Cv(c[u>>2]|0,c[o>>2]|0,m)|0)){c[J>>2]=c[m+4>>2];break}c[t>>2]=0;L=c[t>>2]|0;i=M;return L|0}while(0);if(c[w>>2]|0)XA(c[K>>2]|0,c[(c[v>>2]|0)+28>>2]|0,c[w>>2]|0);if((c[C>>2]|0)>=0)Fz(c[K>>2]|0,c[C>>2]|0);gA(c[u>>2]|0);c[t>>2]=c[J>>2];L=c[t>>2]|0;i=M;return L|0}function JA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+80|0;s=z+64|0;r=z+60|0;t=z+56|0;u=z+52|0;x=z+48|0;p=z+68|0;q=z+44|0;w=z+40|0;y=z+36|0;k=z+32|0;j=z+28|0;h=z+24|0;l=z+20|0;n=z+16|0;m=z+12|0;g=z+8|0;o=z+4|0;v=z;c[s>>2]=b;c[r>>2]=d;c[t>>2]=e;c[u>>2]=f;c[x>>2]=0;c[y>>2]=c[(c[s>>2]|0)+8>>2];c[q>>2]=PA(c[s>>2]|0,c[r>>2]|0,3,(c[t>>2]|0)==(c[u>>2]|0)?0:x)|0;a[p>>0]=QA(c[r>>2]|0)|0;iA(c[s>>2]|0);c[w>>2]=Wz(c[s>>2]|0)|0;xA(c[s>>2]|0,c[(c[r>>2]|0)+12>>2]|0,c[w>>2]|0);e=c[r>>2]|0;if((c[q>>2]|0)!=5){do if(RA(c[e+12>>2]|0)|0){e=c[y>>2]|0;f=c[w>>2]|0;if((c[u>>2]|0)==(c[t>>2]|0)){Rw(e,76,f,c[u>>2]|0)|0;break}else{c[o>>2]=xz(e,77,f)|0;Rw(c[y>>2]|0,108,c[(c[r>>2]|0)+28>>2]|0,c[t>>2]|0)|0;Ez(c[y>>2]|0,c[u>>2]|0)|0;Fz(c[y>>2]|0,c[o>>2]|0);break}}while(0);e=c[y>>2]|0;f=c[w>>2]|0;if((c[q>>2]|0)==1){Rw(e,38,f,c[t>>2]|0)|0;Vw(c[y>>2]|0,70,c[(c[r>>2]|0)+28>>2]|0,c[t>>2]|0,c[w>>2]|0)|0;x=c[s>>2]|0;y=c[w>>2]|0;_z(x,y);y=c[s>>2]|0;gA(y);i=z;return}Uw(e,48,f,1,0,p,1)|0;f=c[y>>2]|0;e=c[(c[r>>2]|0)+28>>2]|0;if(!(c[x>>2]|0)){Eh(f,68,e,c[t>>2]|0,c[w>>2]|0,1)|0;x=c[s>>2]|0;y=c[w>>2]|0;_z(x,y);y=c[s>>2]|0;gA(y);i=z;return}else{c[v>>2]=Eh(f,69,e,0,c[w>>2]|0,1)|0;Rw(c[y>>2]|0,76,c[x>>2]|0,c[u>>2]|0)|0;Ez(c[y>>2]|0,c[t>>2]|0)|0;Fz(c[y>>2]|0,c[v>>2]|0);x=c[s>>2]|0;y=c[w>>2]|0;_z(x,y);y=c[s>>2]|0;gA(y);i=z;return}}c[k>>2]=c[e+20>>2];c[j>>2]=Ox(c[s>>2]|0,c[(c[r>>2]|0)+12>>2]|0)|0;c[h>>2]=Cz(c[y>>2]|0)|0;c[m>>2]=0;if((c[u>>2]|0)!=(c[t>>2]|0)){c[m>>2]=Wz(c[s>>2]|0)|0;Vw(c[y>>2]|0,85,c[w>>2]|0,c[w>>2]|0,c[m>>2]|0)|0}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[c[k>>2]>>2]|0))break;c[l>>2]=DA(c[s>>2]|0,c[(c[(c[k>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0,n)|0;if((c[m>>2]|0)!=0?(RA(c[(c[(c[k>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0)|0)!=0:0)Vw(c[y>>2]|0,85,c[m>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;if((c[g>>2]|0)>=((c[c[k>>2]>>2]|0)-1|0)?(c[u>>2]|0)==(c[t>>2]|0):0){Uw(c[y>>2]|0,78,c[w>>2]|0,c[t>>2]|0,c[l>>2]|0,c[j>>2]|0,-4)|0;Fh(c[y>>2]|0,(a[p>>0]|16)&255)}else{Uw(c[y>>2]|0,79,c[w>>2]|0,c[h>>2]|0,c[l>>2]|0,c[j>>2]|0,-4)|0;Fh(c[y>>2]|0,a[p>>0]|0)}_z(c[s>>2]|0,c[n>>2]|0);c[g>>2]=(c[g>>2]|0)+1}if(c[m>>2]|0){Rw(c[y>>2]|0,76,c[m>>2]|0,c[u>>2]|0)|0;Ez(c[y>>2]|0,c[t>>2]|0)|0}Gz(c[y>>2]|0,c[h>>2]|0);_z(c[s>>2]|0,c[m>>2]|0);x=c[s>>2]|0;y=c[w>>2]|0;_z(x,y);y=c[s>>2]|0;gA(y);i=z;return}function KA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;a[(c[f>>2]|0)+38>>0]=a[c[f>>2]>>0]|0;a[c[f>>2]>>0]=-99;c[(c[f>>2]|0)+28>>2]=c[g>>2];b=(c[f>>2]|0)+4|0;c[b>>2]=c[b>>2]&-4097;i=e;return}function LA(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;g=t+44|0;h=t+40|0;j=t+36|0;k=t+32|0;s=t+28|0;n=t+24|0;q=t+20|0;r=t+16|0;o=t+12|0;p=t+8|0;l=t+4|0;m=t;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[s>>2]=c[(c[g>>2]|0)+8>>2];c[n>>2]=0;c[q>>2]=0;c[r>>2]=0;if((c[s>>2]|0)==0|(c[h>>2]|0)==0){i=t;return}c[n>>2]=((d[c[h>>2]>>0]|0)+0^1)-0;a:do switch(d[c[h>>2]>>0]|0|0){case 72:{LA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,c[k>>2]|0);iA(c[g>>2]|0);LA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[j>>2]|0,c[k>>2]|0);gA(c[g>>2]|0);break}case 71:{c[l>>2]=Cz(c[s>>2]|0)|0;MA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[l>>2]|0,c[k>>2]^16);iA(c[g>>2]|0);LA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[j>>2]|0,c[k>>2]|0);Gz(c[s>>2]|0,c[l>>2]|0);gA(c[g>>2]|0);break}case 19:{MA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,c[k>>2]|0);break}case 79:case 78:case 83:case 80:case 81:case 82:{c[o>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,q)|0;c[p>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,r)|0;EA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;break}case 148:case 73:{c[o>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,q)|0;c[p>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,r)|0;c[n>>2]=(d[c[h>>2]>>0]|0|0)==73?78:79;EA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[j>>2]|0,128)|0;break}case 77:case 76:{c[o>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,q)|0;Rw(c[s>>2]|0,c[n>>2]|0,c[o>>2]|0,c[j>>2]|0)|0;break}case 74:{NA(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,0,c[k>>2]|0);break}case 75:if(c[k>>2]|0){JA(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[j>>2]|0);break a}else{c[m>>2]=Cz(c[s>>2]|0)|0;JA(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[m>>2]|0);Gz(c[s>>2]|0,c[m>>2]|0);break a}default:{if(bz(c[h>>2]|0)|0){Ez(c[s>>2]|0,c[j>>2]|0)|0;break a}if(!(OA(c[h>>2]|0)|0)){c[o>>2]=DA(c[g>>2]|0,c[h>>2]|0,q)|0;Vw(c[s>>2]|0,46,c[o>>2]|0,c[j>>2]|0,(c[k>>2]|0)!=0&1)|0}}}while(0);_z(c[g>>2]|0,c[q>>2]|0);_z(c[g>>2]|0,c[r>>2]|0);i=t;return}function MA(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;g=u+48|0;h=u+44|0;j=u+40|0;k=u+36|0;t=u+32|0;o=u+28|0;r=u+24|0;s=u+20|0;p=u+16|0;q=u+12|0;l=u+8|0;m=u+4|0;n=u;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[t>>2]=c[(c[g>>2]|0)+8>>2];c[o>>2]=0;c[r>>2]=0;c[s>>2]=0;if((c[t>>2]|0)==0|(c[h>>2]|0)==0){i=u;return}c[o>>2]=d[c[h>>2]>>0];a:do switch(c[o>>2]|0){case 72:{c[l>>2]=Cz(c[t>>2]|0)|0;LA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[l>>2]|0,c[k>>2]^16);iA(c[g>>2]|0);MA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[j>>2]|0,c[k>>2]|0);Gz(c[t>>2]|0,c[l>>2]|0);gA(c[g>>2]|0);break}case 71:{MA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,c[k>>2]|0);iA(c[g>>2]|0);MA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[j>>2]|0,c[k>>2]|0);gA(c[g>>2]|0);break}case 19:{LA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,c[k>>2]|0);break}case 79:case 78:case 83:case 80:case 81:case 82:{c[p>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,r)|0;c[q>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,s)|0;EA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;break}case 148:case 73:{c[p>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,r)|0;c[q>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,s)|0;c[o>>2]=(c[o>>2]|0)==73?79:78;EA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[j>>2]|0,128)|0;break}case 77:case 76:{c[p>>2]=DA(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,r)|0;Rw(c[t>>2]|0,c[o>>2]|0,c[p>>2]|0,c[j>>2]|0)|0;break}case 74:{NA(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,1,c[k>>2]|0);break}case 75:{c[m>>2]=Cz(c[t>>2]|0)|0;c[n>>2]=(c[k>>2]|0)!=0?c[j>>2]|0:c[m>>2]|0;JA(c[g>>2]|0,c[h>>2]|0,c[m>>2]|0,c[n>>2]|0);Ez(c[t>>2]|0,c[j>>2]|0)|0;Gz(c[t>>2]|0,c[m>>2]|0);break}default:{if(OA(c[h>>2]|0)|0){Ez(c[t>>2]|0,c[j>>2]|0)|0;break a}if(!(bz(c[h>>2]|0)|0)){c[p>>2]=DA(c[g>>2]|0,c[h>>2]|0,r)|0;Vw(c[t>>2]|0,45,c[p>>2]|0,c[j>>2]|0,(c[k>>2]|0)!=0&1)|0}}}while(0);_z(c[g>>2]|0,c[r>>2]|0);_z(c[g>>2]|0,c[s>>2]|0);i=u;return}function NA(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+224|0;o=s+216|0;h=s+212|0;m=s+208|0;p=s+204|0;n=s+200|0;q=s+152|0;j=s+104|0;k=s+56|0;l=s+8|0;r=s;c[o>>2]=b;c[h>>2]=d;c[m>>2]=e;c[p>>2]=f;c[n>>2]=g;c[r>>2]=0;e=l;g=c[(c[h>>2]|0)+12>>2]|0;f=e+48|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(f|0));a[q>>0]=72;c[q+12>>2]=j;c[q+16>>2]=k;a[j>>0]=83;c[j+12>>2]=l;c[j+16>>2]=c[c[(c[(c[h>>2]|0)+20>>2]|0)+4>>2]>>2];a[k>>0]=81;c[k+12>>2]=l;c[k+16>>2]=c[(c[(c[(c[h>>2]|0)+20>>2]|0)+4>>2]|0)+20>>2];KA(l,DA(c[o>>2]|0,l,r)|0);f=c[o>>2]|0;g=c[m>>2]|0;e=c[n>>2]|0;if(c[p>>2]|0){MA(f,q,g,e);q=c[o>>2]|0;r=c[r>>2]|0;_z(q,r);i=s;return}else{LA(f,q,g,e);q=c[o>>2]|0;r=c[r>>2]|0;_z(q,r);i=s;return}}function OA(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=0;do if(!(c[(c[d>>2]|0)+4>>2]&1))if(ky(c[d>>2]|0,e)|0){c[b>>2]=(c[e>>2]|0)!=0&1;break}else{c[b>>2]=0;break}else c[b>>2]=0;while(0);i=f;return c[b>>2]|0}function PA(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+80|0;l=F+72|0;m=F+68|0;n=F+64|0;o=F+60|0;k=F+56|0;r=F+52|0;w=F+48|0;x=F+44|0;E=F+40|0;q=F+36|0;B=F+32|0;y=F+28|0;u=F+78|0;v=F+76|0;s=F+24|0;z=F+20|0;A=F+16|0;p=F+12|0;t=F+8|0;D=F+4|0;C=F;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[o>>2]=j;c[r>>2]=0;g=(c[l>>2]|0)+72|0;j=c[g>>2]|0;c[g>>2]=j+1;c[w>>2]=j;c[E>>2]=Pw(c[l>>2]|0)|0;c[x>>2]=(c[n>>2]&4|0)!=0&1;if(c[(c[m>>2]|0)+4>>2]&2048)h=c[(c[m>>2]|0)+20>>2]|0;else h=0;c[k>>2]=h;a:do if((c[(c[l>>2]|0)+68>>2]|0)==0?(TA(c[k>>2]|0)|0)!=0:0){c[q>>2]=c[c[l>>2]>>2];c[B>>2]=c[(c[(c[k>>2]|0)+32>>2]|0)+8+16>>2];c[y>>2]=c[c[(c[c[k>>2]>>2]|0)+4>>2]>>2];b[u>>1]=b[(c[y>>2]|0)+32>>1]|0;b[v>>1]=Dh(c[q>>2]|0,c[(c[B>>2]|0)+64>>2]|0)|0;bx(c[l>>2]|0,b[v>>1]|0);yz(c[l>>2]|0,b[v>>1]|0,c[(c[B>>2]|0)+28>>2]|0,0,c[c[B>>2]>>2]|0);h=c[l>>2]|0;if((b[u>>1]|0)<0){c[s>>2]=UA(h)|0;zz(c[l>>2]|0,c[w>>2]|0,b[v>>1]|0,c[B>>2]|0,54);c[r>>2]=1;Fz(c[E>>2]|0,c[s>>2]|0);break}c[A>>2]=VA(h,c[(c[m>>2]|0)+12>>2]|0,c[y>>2]|0)|0;c[p>>2]=WA(c[m>>2]|0,a[(c[(c[B>>2]|0)+4>>2]|0)+((b[u>>1]|0)*24|0)+21>>0]|0)|0;c[z>>2]=c[(c[B>>2]|0)+8>>2];while(1){if(!((c[z>>2]|0)!=0&(c[r>>2]|0)==0&(c[p>>2]|0)!=0))break a;do if((b[c[(c[z>>2]|0)+4>>2]>>1]|0)==(b[u>>1]|0)?(y=Mj(c[q>>2]|0,a[(c[q>>2]|0)+62>>0]|0,c[c[(c[z>>2]|0)+32>>2]>>2]|0,0)|0,(y|0)==(c[A>>2]|0)):0){if(c[x>>2]|0){if((e[(c[z>>2]|0)+50>>1]|0)!=1)break;if(!(d[(c[z>>2]|0)+54>>0]|0))break}c[t>>2]=UA(c[l>>2]|0)|0;Vw(c[E>>2]|0,54,c[w>>2]|0,c[(c[z>>2]|0)+44>>2]|0,b[v>>1]|0)|0;Az(c[l>>2]|0,c[z>>2]|0);c[r>>2]=3+(d[c[(c[z>>2]|0)+28>>2]>>0]|0);if((c[o>>2]|0)!=0?(a[(c[(c[B>>2]|0)+4>>2]|0)+((b[u>>1]|0)*24|0)+20>>0]|0)==0:0){s=(c[l>>2]|0)+76|0;y=(c[s>>2]|0)+1|0;c[s>>2]=y;c[c[o>>2]>>2]=y;XA(c[E>>2]|0,c[w>>2]|0,c[c[o>>2]>>2]|0)}Fz(c[E>>2]|0,c[t>>2]|0)}while(0);c[z>>2]=c[(c[z>>2]|0)+20>>2]}}while(0);do if(((c[r>>2]|0)==0?(c[n>>2]&1|0)!=0:0)?(c[(c[m>>2]|0)+4>>2]&2048|0)==0:0){if((YA(c[m>>2]|0)|0)!=0?(c[c[(c[m>>2]|0)+20>>2]>>2]|0)>2:0)break;c[r>>2]=5}while(0);if(c[r>>2]|0){c[(c[m>>2]|0)+28>>2]=c[w>>2];E=c[r>>2]|0;i=F;return E|0}c[D>>2]=c[(c[l>>2]|0)+428>>2];c[C>>2]=0;c[r>>2]=2;if(c[n>>2]&4){c[(c[l>>2]|0)+428>>2]=0;if((b[(c[(c[m>>2]|0)+12>>2]|0)+32>>1]|0)<0?(c[(c[m>>2]|0)+4>>2]&2048|0)==0:0)c[r>>2]=1}else if(c[o>>2]|0){B=(c[l>>2]|0)+76|0;E=(c[B>>2]|0)+1|0;c[B>>2]=E;c[C>>2]=E;c[c[o>>2]>>2]=E}IA(c[l>>2]|0,c[m>>2]|0,c[C>>2]|0,(c[r>>2]|0)==1&1)|0;c[(c[l>>2]|0)+428>>2]=c[D>>2];E=c[r>>2]|0;i=F;return E|0}function QA(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f;e=f+4|0;c[d>>2]=b;a[e>>0]=Nx(c[(c[d>>2]|0)+12>>2]|0)|0;b=c[d>>2]|0;if(c[(c[d>>2]|0)+16>>2]|0){a[e>>0]=SA(c[b+16>>2]|0,a[e>>0]|0)|0;e=a[e>>0]|0;i=f;return e|0}if(c[b+4>>2]&2048){a[e>>0]=SA(c[c[(c[c[(c[d>>2]|0)+20>>2]>>2]|0)+4>>2]>>2]|0,a[e>>0]|0)|0;e=a[e>>0]|0;i=f;return e|0}if(a[e>>0]|0){e=a[e>>0]|0;i=f;return e|0}a[e>>0]=65;e=a[e>>0]|0;i=f;return e|0}function RA(e){e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k+4|0;g=k;h=k+8|0;c[g>>2]=e;while(1){if((d[c[g>>2]>>0]|0)==156)f=1;else f=(d[c[g>>2]>>0]|0)==155;e=c[g>>2]|0;if(!f)break;c[g>>2]=c[e+12>>2]}a[h>>0]=a[e>>0]|0;if((d[h>>0]|0)==157)a[h>>0]=a[(c[g>>2]|0)+38>>0]|0;switch(d[h>>0]|0){case 134:case 133:case 97:case 132:{c[j>>2]=0;j=c[j>>2]|0;i=k;return j|0}case 152:{if(!(c[(c[g>>2]|0)+4>>2]&1048576))if((b[(c[g>>2]|0)+32>>1]|0)>=0)e=(d[(c[(c[(c[g>>2]|0)+44>>2]|0)+4>>2]|0)+((b[(c[g>>2]|0)+32>>1]|0)*24|0)+20>>0]|0)==0;else e=0;else e=1;c[j>>2]=e&1;j=c[j>>2]|0;i=k;return j|0}default:{c[j>>2]=1;j=c[j>>2]|0;i=k;return j|0}}return 0}function SA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+6|0;j=h;f=h+5|0;g=h+4|0;c[j>>2]=b;a[f>>0]=d;a[g>>0]=Nx(c[j>>2]|0)|0;if((a[g>>0]|0)!=0?(a[f>>0]|0)!=0:0){if((a[g>>0]|0)<67?(a[f>>0]|0)<67:0){a[e>>0]=65;j=a[e>>0]|0;i=h;return j|0}a[e>>0]=67;j=a[e>>0]|0;i=h;return j|0}if((a[g>>0]|0)!=0|(a[f>>0]|0)!=0){a[e>>0]=(a[g>>0]|0)+(a[f>>0]|0);j=a[e>>0]|0;i=h;return j|0}else{a[e>>0]=65;j=a[e>>0]|0;i=h;return j|0}return 0}function TA(a){a=a|0;var b=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k;c[f>>2]=a;do if(c[f>>2]|0){if(c[(c[f>>2]|0)+52>>2]|0){c[b>>2]=0;break}if((e[(c[f>>2]|0)+6>>1]|0)&9){c[b>>2]=0;break}if(c[(c[f>>2]|0)+60>>2]|0){c[b>>2]=0;break}if(c[(c[f>>2]|0)+36>>2]|0){c[b>>2]=0;break}c[h>>2]=c[(c[f>>2]|0)+32>>2];if((c[c[h>>2]>>2]|0)!=1){c[b>>2]=0;break}if(c[(c[h>>2]|0)+8+20>>2]|0){c[b>>2]=0;break}c[j>>2]=c[(c[h>>2]|0)+8+16>>2];if(!(c[j>>2]|0)){c[b>>2]=0;break}if((d[(c[j>>2]|0)+42>>0]|0)&16){c[b>>2]=0;break}c[g>>2]=c[c[f>>2]>>2];if((c[c[g>>2]>>2]|0)!=1){c[b>>2]=0;break}if((d[c[c[(c[g>>2]|0)+4>>2]>>2]>>0]|0|0)!=152){c[b>>2]=0;break}else{c[b>>2]=1;break}}else c[b>>2]=0;while(0);i=k;return c[b>>2]|0}function UA(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=Pw(c[e>>2]|0)|0;d=c[d>>2]|0;e=(c[e>>2]|0)+84|0;a=c[e>>2]|0;c[e>>2]=a+1;a=xz(d,44,a)|0;i=b;return a|0}function VA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[(c[f>>2]|0)+4>>2]&256){c[h>>2]=Ox(c[e>>2]|0,c[f>>2]|0)|0;d=c[h>>2]|0;i=j;return d|0}if((c[g>>2]|0)!=0?(c[(c[g>>2]|0)+4>>2]&256|0)!=0:0){c[h>>2]=Ox(c[e>>2]|0,c[g>>2]|0)|0;d=c[h>>2]|0;i=j;return d|0}c[h>>2]=Ox(c[e>>2]|0,c[f>>2]|0)|0;if(c[h>>2]|0){d=c[h>>2]|0;i=j;return d|0}c[h>>2]=Ox(c[e>>2]|0,c[g>>2]|0)|0;d=c[h>>2]|0;i=j;return d|0}function WA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;e=g+4|0;j=g;f=g+9|0;h=g+8|0;c[j>>2]=b;a[f>>0]=d;a[h>>0]=QA(c[j>>2]|0)|0;switch(a[h>>0]|0){case 65:{c[e>>2]=1;break}case 66:{c[e>>2]=(a[f>>0]|0)==66&1;break}default:c[e>>2]=(a[f>>0]|0)>=67&1}i=g;return c[e>>2]|0}function XA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;g=e+12|0;j=e+8|0;h=e+4|0;f=e;c[g>>2]=a;c[j>>2]=b;c[h>>2]=d;Rw(c[g>>2]|0,22,0,c[h>>2]|0)|0;c[f>>2]=xz(c[g>>2]|0,108,c[j>>2]|0)|0;Vw(c[g>>2]|0,47,c[j>>2]|0,0,c[h>>2]|0)|0;Fh(c[g>>2]|0,-128);Fz(c[g>>2]|0,c[f>>2]|0);i=e;return}function YA(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;b=d;c[e>>2]=a;c[f>>2]=c[(c[e>>2]|0)+12>>2];c[(c[e>>2]|0)+12>>2]=0;c[b>>2]=FA(c[e>>2]|0)|0;c[(c[e>>2]|0)+12>>2]=c[f>>2];i=d;return c[b>>2]|0}function ZA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+8|0;j=f+4|0;h=f;c[g>>2]=b;c[j>>2]=d;c[h>>2]=e;a[c[g>>2]>>0]=c[j>>2];c[(c[g>>2]|0)+4>>2]=c[h>>2];a[(c[g>>2]|0)+1>>0]=0;c[(c[g>>2]|0)+8>>2]=0;c[(c[g>>2]|0)+12>>2]=0;i=f;return}function _A(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;h=n+16|0;o=n+12|0;j=n+8|0;k=n+20|0;l=n+4|0;m=n;c[h>>2]=b;c[o>>2]=e;c[j>>2]=f;a[k>>0]=g;c[l>>2]=c[(c[h>>2]|0)+324>>2];c[o>>2]=ny(c[c[h>>2]>>2]|0,c[o>>2]|0,0)|0;c[l>>2]=Gv(c[h>>2]|0,c[l>>2]|0,c[o>>2]|0)|0;if(!(c[l>>2]|0)){g=c[l>>2]|0;o=c[h>>2]|0;o=o+324|0;c[o>>2]=g;i=n;return}c[m>>2]=(c[(c[l>>2]|0)+4>>2]|0)+(((c[c[l>>2]>>2]|0)-1|0)*20|0);c[(c[m>>2]|0)+16>>2]=c[j>>2];g=(c[m>>2]|0)+13|0;a[g>>0]=a[g>>0]&-5|((d[k>>0]|0)&1)<<2&255;g=c[l>>2]|0;o=c[h>>2]|0;o=o+324|0;c[o>>2]=g;i=n;return}function $A(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;h=i;i=i+48|0;j=h+36|0;l=h+32|0;k=h+28|0;g=h;c[j>>2]=b;c[l>>2]=e;c[k>>2]=f;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;a[g+20>>0]=c[l>>2];c[g+4>>2]=197;c[g+8>>2]=198;c[g+24>>2]=c[k>>2];by(g,c[j>>2]|0)|0;i=h;return d[g+20>>0]|0|0}function aB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+8|0;g=k+4|0;h=k;c[g>>2]=b;c[h>>2]=e;if((d[(c[g>>2]|0)+20>>0]|0|0)==2?(c[(c[h>>2]|0)+4>>2]&1|0)!=0:0){a[(c[g>>2]|0)+20>>0]=0;c[f>>2]=2}else j=4;a:do if((j|0)==4){b:do switch(d[c[h>>2]>>0]|0|0){case 151:{if((d[(c[g>>2]|0)+20>>0]|0|0)<4?(c[(c[h>>2]|0)+4>>2]&524288|0)==0:0){a[(c[g>>2]|0)+20>>0]=0;c[f>>2]=2;break a}c[f>>2]=0;break a}case 154:case 153:case 152:case 27:{if((d[(c[g>>2]|0)+20>>0]|0|0)==3?(c[(c[h>>2]|0)+28>>2]|0)==(c[(c[g>>2]|0)+24>>2]|0):0){c[f>>2]=0;break a}a[(c[g>>2]|0)+20>>0]=0;c[f>>2]=2;break a}case 135:{if((d[(c[g>>2]|0)+20>>0]|0|0)==5){a[c[h>>2]>>0]=101;break b}if((d[(c[g>>2]|0)+20>>0]|0|0)==4){a[(c[g>>2]|0)+20>>0]=0;c[f>>2]=2;break a}break}default:{}}while(0);c[f>>2]=0}while(0);i=k;return c[f>>2]|0}function bB(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+4|0;c[f>>2]=b;c[e>>2]=d;a[(c[f>>2]|0)+20>>0]=0;i=e;return 2}function cB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g+8|0;k=g+4|0;h=g;f=g+12|0;c[j>>2]=b;c[k>>2]=d;c[h>>2]=e;a[f>>0]=Nx(c[k>>2]|0)|0;d=(SA(c[j>>2]|0,a[f>>0]|0)|0)&255;a[f>>0]=d|c[h>>2]&255;i=g;return a[f>>0]|0}function dB(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=$A(c[d>>2]|0,2,0)|0;i=b;return a|0}function eB(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;k=s+28|0;l=s+24|0;m=s+20|0;n=s+16|0;o=s+12|0;p=s+8|0;q=s+4|0;r=s;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[r>>2]=Fw(wA(c[k>>2]|0)|0,8,0)|0;if(c[r>>2]|0){h=c[r>>2]|0;j=c[p>>2]|0;a[h>>0]=a[j>>0]|0;a[h+1>>0]=a[j+1>>0]|0;a[h+2>>0]=a[j+2>>0]|0;a[h+3>>0]=a[j+3>>0]|0;a[h+4>>0]=a[j+4>>0]|0;a[h+5>>0]=a[j+5>>0]|0;a[h+6>>0]=a[j+6>>0]|0;a[h+7>>0]=a[j+7>>0]|0}h=Uw(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[r>>2]|0,c[q>>2]|0)|0;i=s;return h|0}function fB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;f=h+4|0;g=h;c[j>>2]=b;c[e>>2]=d;c[f>>2]=0;c[g>>2]=(c[j>>2]|0)+124;while(1){if((c[f>>2]|0)>=10)break;if((c[(c[g>>2]|0)+12>>2]|0)==(c[e>>2]|0))a[(c[g>>2]|0)+6>>0]=0;c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+20}i=h;return}function gB(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;j=s+28|0;k=s+24|0;l=s+20|0;m=s+16|0;n=s+12|0;p=s+8|0;o=s+4|0;q=s;c[j>>2]=d;c[k>>2]=f;c[l>>2]=g;c[m>>2]=h;if((e[(c[c[j>>2]>>2]|0)+60>>1]|0)&2){i=s;return}c[n>>2]=0;c[q>>2]=(c[j>>2]|0)+124;while(1){if((c[n>>2]|0)>=10)break;if(!(c[(c[q>>2]|0)+12>>2]|0)){r=5;break}c[n>>2]=(c[n>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+20}if((r|0)==5){c[(c[q>>2]|0)+8>>2]=c[(c[j>>2]|0)+108>>2];c[c[q>>2]>>2]=c[k>>2];b[(c[q>>2]|0)+4>>1]=c[l>>2];c[(c[q>>2]|0)+12>>2]=c[m>>2];a[(c[q>>2]|0)+6>>0]=0;d=(c[j>>2]|0)+112|0;r=c[d>>2]|0;c[d>>2]=r+1;c[(c[q>>2]|0)+16>>2]=r;i=s;return}c[p>>2]=2147483647;c[o>>2]=-1;c[n>>2]=0;c[q>>2]=(c[j>>2]|0)+124;while(1){if((c[n>>2]|0)>=10)break;if((c[(c[q>>2]|0)+16>>2]|0)<(c[p>>2]|0)){c[o>>2]=c[n>>2];c[p>>2]=c[(c[q>>2]|0)+16>>2]}c[n>>2]=(c[n>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+20}if((c[o>>2]|0)<0){i=s;return}c[q>>2]=(c[j>>2]|0)+124+((c[o>>2]|0)*20|0);c[(c[q>>2]|0)+8>>2]=c[(c[j>>2]|0)+108>>2];c[c[q>>2]>>2]=c[k>>2];b[(c[q>>2]|0)+4>>1]=c[l>>2];c[(c[q>>2]|0)+12>>2]=c[m>>2];a[(c[q>>2]|0)+6>>0]=0;d=(c[j>>2]|0)+112|0;r=c[d>>2]|0;c[d>>2]=r+1;c[(c[q>>2]|0)+16>>2]=r;i=s;return}function hB(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;k=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;j=l;c[f>>2]=a;c[g>>2]=d;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[(c[g>>2]|0)+52>>1]|0)){f=7;break}c[j>>2]=c[(c[(c[g>>2]|0)+32>>2]|0)+(c[h>>2]<<2)>>2];if((b[(c[(c[g>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1]|0)>=0?0==(Td(c[j>>2]|0,c[f>>2]|0)|0):0){f=5;break}c[h>>2]=(c[h>>2]|0)+1}if((f|0)==5){c[k>>2]=1;k=c[k>>2]|0;i=l;return k|0}else if((f|0)==7){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}return 0}function iB(a,e,f,g,h,j,k){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+80|0;l=y+76|0;m=y+72|0;n=y+68|0;o=y+64|0;p=y+60|0;q=y+56|0;r=y+52|0;t=y+48|0;v=y+16|0;w=y+12|0;s=y+8|0;u=y+4|0;x=y;c[l>>2]=a;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[r>>2]=k;c[s>>2]=c[c[l>>2]>>2];c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;c[v+16>>2]=0;c[v+20>>2]=0;c[v+24>>2]=0;c[v+28>>2]=0;c[v>>2]=c[l>>2];e=jB(v,c[p>>2]|0)|0;c[t>>2]=e;do if((0==(e|0)?(e=jB(v,c[q>>2]|0)|0,c[t>>2]=e,0==(e|0)):0)?(e=jB(v,c[r>>2]|0)|0,c[t>>2]=e,0==(e|0)):0){if(c[o>>2]|0){if((d[c[o>>2]>>0]|0)==97)c[x>>2]=c[(c[o>>2]|0)+8>>2];else c[x>>2]=0;c[t>>2]=Mw(c[l>>2]|0,c[m>>2]|0,c[x>>2]|0,0,0)|0;if(c[t>>2]|0)break}c[w>>2]=Pw(c[l>>2]|0)|0;c[u>>2]=kA(c[l>>2]|0,4)|0;xA(c[l>>2]|0,c[p>>2]|0,c[u>>2]|0);xA(c[l>>2]|0,c[q>>2]|0,(c[u>>2]|0)+1|0);xA(c[l>>2]|0,c[r>>2]|0,(c[u>>2]|0)+2|0);if(c[w>>2]|0){Uw(c[w>>2]|0,35,0,(c[u>>2]|0)+3-(b[c[n>>2]>>1]|0)|0,(c[u>>2]|0)+3|0,c[n>>2]|0,-5)|0;Fh(c[w>>2]|0,b[c[n>>2]>>1]&255);xz(c[w>>2]|0,147,(c[m>>2]|0)==24&1)|0}}while(0);Zu(c[s>>2]|0,c[p>>2]|0);Zu(c[s>>2]|0,c[q>>2]|0);Zu(c[s>>2]|0,c[r>>2]|0);i=y;return}function jB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=e;c[h>>2]=0;do if(c[g>>2]|0)if((d[c[g>>2]>>0]|0|0)!=27){c[h>>2]=fy(c[f>>2]|0,c[g>>2]|0)|0;break}else{a[c[g>>2]>>0]=97;break}while(0);i=j;return c[h>>2]|0}function kB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+192|0;n=q+24|0;m=q+16|0;l=q+8|0;k=q;f=q+52|0;r=q+44|0;p=q+40|0;g=q+36|0;h=q+32|0;j=q+28|0;o=q+56|0;c[f>>2]=b;c[q+48>>2]=d;c[r>>2]=e;c[p>>2]=ae(c[c[r>>2]>>2]|0)|0;c[g>>2]=we(c[f>>2]|0)|0;c[j>>2]=0;if(!(c[p>>2]|0))c[p>>2]=19266;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[g>>2]|0)+20>>2]|0))break;c[j>>2]=(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4);if((c[(c[j>>2]|0)+4>>2]|0)!=0?(Td(c[c[j>>2]>>2]|0,c[p>>2]|0)|0)==0:0)break;c[h>>2]=(c[h>>2]|0)+1}do if((c[h>>2]|0)>=(c[(c[g>>2]|0)+20>>2]|0)){c[k>>2]=c[p>>2];Qd(128,o,32129,k)|0}else{if((c[h>>2]|0)<2){c[l>>2]=c[p>>2];Qd(128,o,32150,l)|0;break}if(!(a[(c[g>>2]|0)+63>>0]|0)){Qd(128,o,32176,m)|0;break}if((og(c[(c[j>>2]|0)+4>>2]|0)|0)==0?(fu(c[(c[j>>2]|0)+4>>2]|0)|0)==0:0){lB(c[(c[j>>2]|0)+4>>2]|0)|0;c[(c[j>>2]|0)+4>>2]=0;c[(c[j>>2]|0)+12>>2]=0;mB(c[g>>2]|0);i=q;return}c[n>>2]=c[p>>2];Qd(128,o,32218,n)|0}while(0);je(c[f>>2]|0,o,-1);i=q;return}function lB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[d>>2]=b;c[e>>2]=c[(c[d>>2]|0)+4>>2];kg(c[d>>2]|0);c[f>>2]=c[(c[e>>2]|0)+8>>2];while(1){if(!(c[f>>2]|0))break;c[g>>2]=c[f>>2];c[f>>2]=c[(c[f>>2]|0)+8>>2];if((c[c[g>>2]>>2]|0)!=(c[d>>2]|0))continue;nB(c[g>>2]|0)|0}Mg(c[d>>2]|0,0,0)|0;if(!((a[(c[d>>2]|0)+9>>0]|0)!=0?(oB(c[e>>2]|0)|0)==0:0)){ar(c[c[e>>2]>>2]|0)|0;if((c[(c[e>>2]|0)+52>>2]|0)!=0?(c[(c[e>>2]|0)+48>>2]|0)!=0:0)Qb[c[(c[e>>2]|0)+52>>2]&255](c[(c[e>>2]|0)+48>>2]|0);Sf(0,c[(c[e>>2]|0)+48>>2]|0);Pi(c[e>>2]|0);Kd(c[e>>2]|0)}if(c[(c[d>>2]|0)+28>>2]|0)c[(c[(c[d>>2]|0)+28>>2]|0)+24>>2]=c[(c[d>>2]|0)+24>>2];if(!(c[(c[d>>2]|0)+24>>2]|0)){g=c[d>>2]|0;Kd(g);i=h;return 0}c[(c[(c[d>>2]|0)+24>>2]|0)+28>>2]=c[(c[d>>2]|0)+28>>2];g=c[d>>2]|0;Kd(g);i=h;return 0}function mB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;b=g+12|0;d=g+8|0;e=g+4|0;f=g;c[b>>2]=a;c[e>>2]=2;c[d>>2]=2;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[f>>2]=(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4);if(!(c[(c[f>>2]|0)+4>>2]|0)){Sf(c[b>>2]|0,c[c[f>>2]>>2]|0);c[c[f>>2]>>2]=0}else{if((c[e>>2]|0)<(c[d>>2]|0)){a=(c[(c[b>>2]|0)+16>>2]|0)+(c[e>>2]<<4)|0;h=(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)|0;c[a>>2]=c[h>>2];c[a+4>>2]=c[h+4>>2];c[a+8>>2]=c[h+8>>2];c[a+12>>2]=c[h+12>>2]}c[e>>2]=(c[e>>2]|0)+1}c[d>>2]=(c[d>>2]|0)+1}c[(c[b>>2]|0)+20>>2]=c[e>>2];if((c[(c[b>>2]|0)+20>>2]|0)>2){i=g;return}if((c[(c[b>>2]|0)+16>>2]|0)==((c[b>>2]|0)+460|0)){i=g;return}h=(c[b>>2]|0)+460|0;f=c[(c[b>>2]|0)+16>>2]|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[h+16>>2]=c[f+16>>2];c[h+20>>2]=c[f+20>>2];c[h+24>>2]=c[f+24>>2];c[h+28>>2]=c[f+28>>2];Sf(c[b>>2]|0,c[(c[b>>2]|0)+16>>2]|0);c[(c[b>>2]|0)+16>>2]=(c[b>>2]|0)+460;i=g;return}function nB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;g=j+12|0;e=j+8|0;f=j+4|0;h=j;c[d>>2]=b;c[g>>2]=c[c[d>>2]>>2];if(!(c[g>>2]|0)){i=j;return 0}c[f>>2]=c[(c[d>>2]|0)+4>>2];kg(c[g>>2]|0);pB(c[d>>2]|0);a:do if((c[(c[f>>2]|0)+8>>2]|0)==(c[d>>2]|0))c[(c[f>>2]|0)+8>>2]=c[(c[d>>2]|0)+8>>2];else{c[h>>2]=c[(c[f>>2]|0)+8>>2];while(1){if((c[(c[h>>2]|0)+8>>2]|0)==(c[d>>2]|0))break;c[h>>2]=c[(c[h>>2]|0)+8>>2];if(!(c[h>>2]|0))break a}c[(c[h>>2]|0)+8>>2]=c[(c[d>>2]|0)+8>>2]}while(0);c[e>>2]=0;while(1){if((c[e>>2]|0)>(a[(c[d>>2]|0)+68>>0]|0))break;qB(c[(c[d>>2]|0)+120+(c[e>>2]<<2)>>2]|0);c[e>>2]=(c[e>>2]|0)+1}rB(c[f>>2]|0);Kd(c[(c[d>>2]|0)+12>>2]|0);i=j;return 0}function oB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[f>>2]=0;b=(c[d>>2]|0)+64|0;c[b>>2]=(c[b>>2]|0)+-1;if((c[(c[d>>2]|0)+64>>2]|0)>0){ -f=c[f>>2]|0;i=g;return f|0}if((c[1208]|0)!=(c[d>>2]|0)){c[e>>2]=c[1208];while(1){if(c[e>>2]|0)b=(c[(c[e>>2]|0)+68>>2]|0)!=(c[d>>2]|0);else b=0;a=c[e>>2]|0;if(!b)break;c[e>>2]=c[a+68>>2]}if(a)c[(c[e>>2]|0)+68>>2]=c[(c[d>>2]|0)+68>>2]}else c[1208]=c[(c[d>>2]|0)+68>>2];c[f>>2]=1;f=c[f>>2]|0;i=g;return f|0}function pB(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;Kd(c[(c[e>>2]|0)+48>>2]|0);c[(c[e>>2]|0)+48>>2]=0;a[(c[e>>2]|0)+66>>0]=0;i=d;return}function qB(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}sB(c[b>>2]|0);i=d;return}function rB(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[b>>2]=a;if(d[(c[b>>2]|0)+20>>0]|0){i=f;return}if(!(c[(c[b>>2]|0)+12>>2]|0)){i=f;return}c[e>>2]=c[(c[b>>2]|0)+12>>2];c[(c[b>>2]|0)+12>>2]=0;sB(c[e>>2]|0);i=f;return}function sB(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;zs(c[(c[d>>2]|0)+72>>2]|0);i=b;return}function tB(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=i;i=i+128|0;w=E+48|0;v=E+40|0;y=E+32|0;x=E+24|0;k=E+16|0;j=E+8|0;h=E;n=E+116|0;F=E+108|0;g=E+104|0;u=E+100|0;p=E+96|0;C=E+92|0;B=E+88|0;D=E+84|0;z=E+80|0;q=E+76|0;o=E+72|0;A=E+68|0;t=E+64|0;l=E+60|0;s=E+56|0;r=E+52|0;c[n>>2]=b;c[E+112>>2]=e;c[F>>2]=f;c[u>>2]=0;c[p>>2]=we(c[n>>2]|0)|0;c[D>>2]=0;c[z>>2]=0;c[A>>2]=0;c[B>>2]=ae(c[c[F>>2]>>2]|0)|0;c[C>>2]=ae(c[(c[F>>2]|0)+4>>2]|0)|0;if(!(c[B>>2]|0))c[B>>2]=19266;if(!(c[C>>2]|0))c[C>>2]=19266;e=c[p>>2]|0;do if((c[(c[p>>2]|0)+20>>2]|0)<((c[(c[p>>2]|0)+88+28>>2]|0)+2|0)){if(!(a[e+63>>0]|0)){c[A>>2]=Bh(c[p>>2]|0,32291,j)|0;break}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[p>>2]|0)+20>>2]|0))break;c[l>>2]=c[(c[(c[p>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2];if(!(Td(c[l>>2]|0,c[C>>2]|0)|0)){m=12;break}c[g>>2]=(c[g>>2]|0)+1}if((m|0)==12){F=c[p>>2]|0;c[k>>2]=c[C>>2];c[A>>2]=Bh(F,32333,k)|0;break}e=c[p>>2]|0;do if((c[(c[p>>2]|0)+16>>2]|0)==((c[p>>2]|0)+460|0)){c[o>>2]=Fw(e,48,0)|0;if(!(c[o>>2]|0)){i=E;return}else{F=c[o>>2]|0;m=c[(c[p>>2]|0)+16>>2]|0;c[F>>2]=c[m>>2];c[F+4>>2]=c[m+4>>2];c[F+8>>2]=c[m+8>>2];c[F+12>>2]=c[m+12>>2];c[F+16>>2]=c[m+16>>2];c[F+20>>2]=c[m+20>>2];c[F+24>>2]=c[m+24>>2];c[F+28>>2]=c[m+28>>2];break}}else{c[o>>2]=Ew(e,c[(c[p>>2]|0)+16>>2]|0,(c[(c[p>>2]|0)+20>>2]|0)+1<<4,0)|0;if(!(c[o>>2]|0)){i=E;return}}while(0);c[(c[p>>2]|0)+16>>2]=c[o>>2];c[o>>2]=(c[(c[p>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+20>>2]<<4);F=c[o>>2]|0;c[F>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;c[q>>2]=c[(c[p>>2]|0)+48>>2];c[u>>2]=Wj(c[(c[c[p>>2]>>2]|0)+16>>2]|0,c[B>>2]|0,q,t,D,z)|0;if(c[u>>2]|0){if((c[u>>2]|0)==7)jh(c[p>>2]|0);je(c[n>>2]|0,c[z>>2]|0,-1);Kd(c[z>>2]|0);i=E;return}c[q>>2]=c[q>>2]|256;c[u>>2]=Xj(c[t>>2]|0,c[D>>2]|0,c[p>>2]|0,(c[o>>2]|0)+4|0,0,c[q>>2]|0)|0;Kd(c[D>>2]|0);F=(c[p>>2]|0)+20|0;c[F>>2]=(c[F>>2]|0)+1;if((c[u>>2]|0)!=19){if(!(c[u>>2]|0)){F=Yj(c[p>>2]|0,c[(c[o>>2]|0)+4>>2]|0)|0;c[(c[o>>2]|0)+12>>2]=F;if(c[(c[o>>2]|0)+12>>2]|0){if((d[(c[(c[o>>2]|0)+12>>2]|0)+76>>0]|0)!=0?(d[(c[(c[o>>2]|0)+12>>2]|0)+77>>0]|0)!=(d[(c[p>>2]|0)+62>>0]|0):0){c[A>>2]=Bh(c[p>>2]|0,20880,y)|0;c[u>>2]=1}}else c[u>>2]=7;kg(c[(c[o>>2]|0)+4>>2]|0);c[s>>2]=Of(c[(c[o>>2]|0)+4>>2]|0)|0;uB(c[s>>2]|0,d[(c[p>>2]|0)+67>>0]|0)|0;F=c[(c[o>>2]|0)+4>>2]|0;vB(F,vB(c[(c[(c[p>>2]|0)+16>>2]|0)+4>>2]|0,-1)|0)|0;wB(c[(c[o>>2]|0)+4>>2]|0,3|c[(c[p>>2]|0)+24>>2]&56)|0}}else{c[u>>2]=1;c[A>>2]=Bh(c[p>>2]|0,32363,x)|0}a[(c[o>>2]|0)+8>>0]=3;F=nh(c[p>>2]|0,c[C>>2]|0)|0;c[c[o>>2]>>2]=F;if((c[u>>2]|0)==0?(c[c[o>>2]>>2]|0)==0:0)c[u>>2]=7;if(!(c[u>>2]|0)){Nf(c[p>>2]|0);c[u>>2]=oi(c[p>>2]|0,A)|0}if(!(c[u>>2]|0)){i=E;return}c[r>>2]=(c[(c[p>>2]|0)+20>>2]|0)-1;if(c[(c[(c[p>>2]|0)+16>>2]|0)+(c[r>>2]<<4)+4>>2]|0){lB(c[(c[(c[p>>2]|0)+16>>2]|0)+(c[r>>2]<<4)+4>>2]|0)|0;c[(c[(c[p>>2]|0)+16>>2]|0)+(c[r>>2]<<4)+4>>2]=0;c[(c[(c[p>>2]|0)+16>>2]|0)+(c[r>>2]<<4)+12>>2]=0}zg(c[p>>2]|0);c[(c[p>>2]|0)+20>>2]=c[r>>2];if((c[u>>2]|0)==7|(c[u>>2]|0)==3082){jh(c[p>>2]|0);Sf(c[p>>2]|0,c[A>>2]|0);c[A>>2]=Bh(c[p>>2]|0,32392,v)|0;break}if(!(c[A>>2]|0)){F=c[p>>2]|0;c[w>>2]=c[B>>2];c[A>>2]=Bh(F,32406,w)|0}}else{c[h>>2]=c[(c[p>>2]|0)+88+28>>2];c[A>>2]=Bh(e,32254,h)|0}while(0);if(c[A>>2]|0){je(c[n>>2]|0,c[A>>2]|0,-1);Sf(c[p>>2]|0,c[A>>2]|0)}if(!(c[u>>2]|0)){i=E;return}re(c[n>>2]|0,c[u>>2]|0);i=E;return}function uB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=e;if(((c[g>>2]|0)>=0?(a[(c[f>>2]|0)+13>>0]|0)==0:0)?(yB(c[(c[f>>2]|0)+216>>2]|0)|0)==0:0)a[(c[f>>2]|0)+4>>0]=c[g>>2];i=h;return d[(c[f>>2]|0)+4>>0]|0}function vB(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=d;if(!(c[g>>2]|0)){c[f>>2]=0;a=c[f>>2]|0;i=k;return a|0}kg(c[g>>2]|0);if((c[h>>2]|0)>=0?(a=(c[(c[g>>2]|0)+4>>2]|0)+22|0,b[a>>1]=(e[a>>1]|0)&-5,(c[h>>2]|0)!=0):0){a=(c[(c[g>>2]|0)+4>>2]|0)+22|0;b[a>>1]=e[a>>1]|0|4}c[j>>2]=((e[(c[(c[g>>2]|0)+4>>2]|0)+22>>1]|0)&4|0)!=0&1;c[f>>2]=c[j>>2];a=c[f>>2]|0;i=k;return a|0}function wB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);xB(c[c[f>>2]>>2]|0,c[e>>2]|0);i=d;return 0}function xB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j+8|0;h=j+4|0;f=j;c[g>>2]=b;c[h>>2]=e;c[f>>2]=c[h>>2]&7;if(a[(c[g>>2]|0)+13>>0]|0){a[(c[g>>2]|0)+7>>0]=1;a[(c[g>>2]|0)+8>>0]=0;a[(c[g>>2]|0)+9>>0]=0}else{a[(c[g>>2]|0)+7>>0]=(c[f>>2]|0)==1?1:0;a[(c[g>>2]|0)+8>>0]=(c[f>>2]|0)>>>0>=3?1:0;a[(c[g>>2]|0)+9>>0]=(c[f>>2]|0)==4?1:0}do if(!(a[(c[g>>2]|0)+7>>0]|0)){if(c[h>>2]&8){a[(c[g>>2]|0)+12>>0]=3;a[(c[g>>2]|0)+10>>0]=3;break}e=(c[h>>2]&16|0)!=0;a[(c[g>>2]|0)+12>>0]=2;f=(c[g>>2]|0)+10|0;if(e){a[f>>0]=3;break}else{a[f>>0]=2;break}}else{a[(c[g>>2]|0)+12>>0]=0;a[(c[g>>2]|0)+10>>0]=0}while(0);a[(c[g>>2]|0)+11>>0]=a[(c[g>>2]|0)+12>>0]|0;if(a[(c[g>>2]|0)+8>>0]|0){e=(c[g>>2]|0)+11|0;a[e>>0]=d[e>>0]|32}f=(c[g>>2]|0)+21|0;b=d[f>>0]|0;if(c[h>>2]&32){a[f>>0]=b&-2;i=j;return}else{a[f>>0]=b|1;i=j;return}}function yB(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if(!(c[b>>2]|0)){a=0;a=a&1;i=e;return a|0}a=(d[(c[b>>2]|0)+43>>0]|0|0)==2;a=a&1;i=e;return a|0}function zB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[c[d>>2]>>2];c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;c[h>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4);do if(c[(c[h>>2]|0)+4>>2]|0){if((c[e>>2]|0)!=0?0!=(Td(c[e>>2]|0,c[c[h>>2]>>2]|0)|0):0)break;bx(c[d>>2]|0,c[g>>2]|0)}while(0);c[g>>2]=(c[g>>2]|0)+1}i=j;return}function AB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;l=o;d=o+44|0;e=o+40|0;j=o+36|0;k=o+32|0;g=o+28|0;h=o+24|0;f=o+20|0;m=o+16|0;n=o+12|0;c[d>>2]=a;c[e>>2]=b;c[g>>2]=c[c[d>>2]>>2];c[h>>2]=Dh(c[c[d>>2]>>2]|0,c[(c[e>>2]|0)+20>>2]|0)|0;c[j>>2]=BB(c[e>>2]|0)|0;c[f>>2]=16;c[m>>2]=c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2];c[n>>2]=(c[h>>2]|0)==1?20769:20788;if((c[h>>2]|0)==1)c[f>>2]=14;if(Mw(c[d>>2]|0,c[f>>2]|0,c[c[e>>2]>>2]|0,c[c[j>>2]>>2]|0,c[m>>2]|0)|0){i=o;return}if(Mw(c[d>>2]|0,9,c[n>>2]|0,0,c[m>>2]|0)|0){i=o;return}n=Pw(c[d>>2]|0)|0;c[k>>2]=n;if(!n){i=o;return}n=c[d>>2]|0;b=(c[h>>2]|0)==1?20769:20788;m=c[c[e>>2]>>2]|0;c[l>>2]=c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2];c[l+4>>2]=b;c[l+8>>2]=m;Ow(n,32454,l);Qw(c[d>>2]|0,c[h>>2]|0);Uw(c[k>>2]|0,127,c[h>>2]|0,0,0,c[c[e>>2]>>2]|0,0)|0;i=o;return}function BB(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=nj((c[(c[d>>2]|0)+24>>2]|0)+8|0,c[(c[d>>2]|0)+4>>2]|0)|0;i=b;return a|0}function CB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+12|0;f=k+16|0;g=k+8|0;h=k+4|0;j=k;c[l>>2]=b;a[f>>0]=d;c[g>>2]=e;c[h>>2]=ph(c[l>>2]|0,36+(c[(c[g>>2]|0)+4>>2]|0)+1|0,0)|0;if(!(c[h>>2]|0)){l=c[h>>2]|0;i=k;return l|0}c[j>>2]=(c[h>>2]|0)+36;iR(c[j>>2]|0,c[c[g>>2]>>2]|0,c[(c[g>>2]|0)+4>>2]|0)|0;Jw(c[j>>2]|0)|0;c[(c[h>>2]|0)+12>>2]=c[j>>2];a[c[h>>2]>>0]=a[f>>0]|0;l=c[h>>2]|0;i=k;return l|0}function DB(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+12|0;j=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[j>>2]=d;c[f>>2]=(c[j>>2]|0)+8;c[g>>2]=_w(c[e>>2]|0,0,c[f>>2]|0)|0;Qf(c[c[e>>2]>>2]|0,c[(c[f>>2]|0)+16>>2]|0);c[(c[f>>2]|0)+16>>2]=c[g>>2];if(c[g>>2]|0){j=(c[g>>2]|0)+36|0;b[j>>1]=(b[j>>1]|0)+1<<16>>16}if(!(Vy(c[e>>2]|0,c[f>>2]|0)|0)){j=c[g>>2]|0;i=h;return j|0}c[g>>2]=0;j=c[g>>2]|0;i=h;return j|0}function EB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;h=g+20|0;n=g+16|0;j=g+12|0;l=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[n>>2]=b;c[j>>2]=d;c[l>>2]=e;c[k>>2]=f;c[m>>2]=c[c[n>>2]>>2];c[c[h>>2]>>2]=c[n>>2];c[(c[h>>2]|0)+12>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[j>>2]<<4)>>2];c[(c[h>>2]|0)+4>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+12>>2];c[(c[h>>2]|0)+16>>2]=c[l>>2];c[(c[h>>2]|0)+20>>2]=c[k>>2];c[(c[h>>2]|0)+8>>2]=(c[j>>2]|0)==1&1;i=g;return}function FB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+48|0;k=l;g=l+32|0;h=l+28|0;d=l+24|0;e=l+20|0;f=l+16|0;j=l+12|0;c[h>>2]=a;c[d>>2]=b;if(!(c[d>>2]|0)){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}c[f>>2]=c[(c[h>>2]|0)+12>>2];c[e>>2]=0;c[j>>2]=(c[d>>2]|0)+8;while(1){if((c[e>>2]|0)>=(c[c[d>>2]>>2]|0)){d=15;break}if(!(c[(c[h>>2]|0)+8>>2]|0)){if((c[(c[j>>2]|0)+4>>2]|0)!=0?(Td(c[(c[j>>2]|0)+4>>2]|0,c[f>>2]|0)|0)!=0:0){d=8;break}Sf(c[c[c[h>>2]>>2]>>2]|0,c[(c[j>>2]|0)+4>>2]|0);c[(c[j>>2]|0)+4>>2]=0;c[c[j>>2]>>2]=c[(c[h>>2]|0)+4>>2]}if(GB(c[h>>2]|0,c[(c[j>>2]|0)+20>>2]|0)|0){d=11;break}if(HB(c[h>>2]|0,c[(c[j>>2]|0)+48>>2]|0)|0){d=13;break}c[e>>2]=(c[e>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+72}if((d|0)==8){f=c[c[h>>2]>>2]|0;b=c[(c[h>>2]|0)+20>>2]|0;j=c[(c[j>>2]|0)+4>>2]|0;c[k>>2]=c[(c[h>>2]|0)+16>>2];c[k+4>>2]=b;c[k+8>>2]=j;Ah(f,32752,k);c[g>>2]=1;k=c[g>>2]|0;i=l;return k|0}else if((d|0)==11){c[g>>2]=1;k=c[g>>2]|0;i=l;return k|0}else if((d|0)==13){c[g>>2]=1;k=c[g>>2]|0;i=l;return k|0}else if((d|0)==15){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}return 0}function GB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+8|0;d=g+4|0;e=g;c[d>>2]=a;c[e>>2]=b;while(1){if(!(c[e>>2]|0)){d=20;break}if(IB(c[d>>2]|0,c[c[e>>2]>>2]|0)|0){d=4;break}if(FB(c[d>>2]|0,c[(c[e>>2]|0)+32>>2]|0)|0){d=6;break}if(HB(c[d>>2]|0,c[(c[e>>2]|0)+36>>2]|0)|0){d=8;break}if(IB(c[d>>2]|0,c[(c[e>>2]|0)+40>>2]|0)|0){d=10;break}if(HB(c[d>>2]|0,c[(c[e>>2]|0)+44>>2]|0)|0){d=12;break}if(IB(c[d>>2]|0,c[(c[e>>2]|0)+48>>2]|0)|0){d=14;break}if(HB(c[d>>2]|0,c[(c[e>>2]|0)+60>>2]|0)|0){d=16;break}if(HB(c[d>>2]|0,c[(c[e>>2]|0)+64>>2]|0)|0){d=18;break}c[e>>2]=c[(c[e>>2]|0)+52>>2]}if((d|0)==4)c[f>>2]=1;else if((d|0)==6)c[f>>2]=1;else if((d|0)==8)c[f>>2]=1;else if((d|0)==10)c[f>>2]=1;else if((d|0)==12)c[f>>2]=1;else if((d|0)==14)c[f>>2]=1;else if((d|0)==16)c[f>>2]=1;else if((d|0)==18)c[f>>2]=1;else if((d|0)==20)c[f>>2]=0;i=g;return c[f>>2]|0}function HB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;g=k+12|0;h=k+8|0;f=k+4|0;c[h>>2]=b;c[f>>2]=e;while(1){if(!(c[f>>2]|0)){e=16;break}if((d[c[f>>2]>>0]|0)==135){if(!(a[(c[c[c[h>>2]>>2]>>2]|0)+140+5>>0]|0)){e=6;break}a[c[f>>2]>>0]=101}if(c[(c[f>>2]|0)+4>>2]&16384){e=16;break}e=c[h>>2]|0;b=(c[f>>2]|0)+20|0;if(c[(c[f>>2]|0)+4>>2]&2048){if(GB(e,c[b>>2]|0)|0){e=10;break}}else if(IB(e,c[b>>2]|0)|0){e=12;break}if(HB(c[h>>2]|0,c[(c[f>>2]|0)+16>>2]|0)|0){e=14;break}c[f>>2]=c[(c[f>>2]|0)+12>>2]}if((e|0)==6){f=c[c[h>>2]>>2]|0;c[j>>2]=c[(c[h>>2]|0)+16>>2];Ah(f,32798,j);c[g>>2]=1;j=c[g>>2]|0;i=k;return j|0}else if((e|0)==10){c[g>>2]=1;j=c[g>>2]|0;i=k;return j|0}else if((e|0)==12){c[g>>2]=1;j=c[g>>2]|0;i=k;return j|0}else if((e|0)==14){c[g>>2]=1;j=c[g>>2]|0;i=k;return j|0}else if((e|0)==16){c[g>>2]=0;j=c[g>>2]|0;i=k;return j|0}return 0}function IB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j+16|0;d=j+12|0;e=j+8|0;f=j+4|0;g=j;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){c[h>>2]=0;h=c[h>>2]|0;i=j;return h|0}c[f>>2]=0;c[g>>2]=c[(c[e>>2]|0)+4>>2];while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0)){d=8;break}if(HB(c[d>>2]|0,c[c[g>>2]>>2]|0)|0){d=6;break}c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+20}if((d|0)==6){c[h>>2]=1;h=c[h>>2]|0;i=j;return h|0}else if((d|0)==8){c[h>>2]=0;h=c[h>>2]|0;i=j;return h|0}return 0}function JB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+8|0;d=g+4|0;e=g;c[d>>2]=a;c[e>>2]=b;while(1){if(!(c[e>>2]|0)){d=10;break}if(GB(c[d>>2]|0,c[(c[e>>2]|0)+8>>2]|0)|0){d=4;break}if(HB(c[d>>2]|0,c[(c[e>>2]|0)+16>>2]|0)|0){d=6;break}if(IB(c[d>>2]|0,c[(c[e>>2]|0)+20>>2]|0)|0){d=8;break}c[e>>2]=c[(c[e>>2]|0)+28>>2]}if((d|0)==4)c[f>>2]=1;else if((d|0)==6)c[f>>2]=1;else if((d|0)==8)c[f>>2]=1;else if((d|0)==10)c[f>>2]=0;i=g;return c[f>>2]|0}function KB(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=(c[e>>2]|0)+88|0;b[a>>1]=b[a>>1]&-17|16;i=d;return}function LB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(!(c[g>>2]|0)){i=h;return}Tw(c[e>>2]|0,1,c[g>>2]|0)|0;MB(c[e>>2]|0,c[f>>2]|0);Rw(c[e>>2]|0,33,1,1)|0;i=h;return}function MB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;_B(c[f>>2]|0,1,e);i=d;return}function NB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;j=f;c[g>>2]=a;c[h>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=e;eB(c[g>>2]|0,23,0,1,0,j,-13)|0;MB(c[g>>2]|0,c[h>>2]|0);Rw(c[g>>2]|0,33,1,1)|0;i=f;return}function OB(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;f=j+16|0;l=j+12|0;h=j+8|0;g=j+4|0;k=j;c[f>>2]=a;c[l>>2]=d;c[k>>2]=c[c[f>>2]>>2];oC(c[(c[f>>2]|0)+16>>2]|0,(e[(c[f>>2]|0)+84>>1]|0)<<1);Sf(c[k>>2]|0,c[(c[f>>2]|0)+16>>2]|0);c[g>>2]=c[l>>2]<<1;b[(c[f>>2]|0)+84>>1]=c[l>>2];a=ph(c[k>>2]|0,(c[g>>2]|0)*40|0,0)|0;c[h>>2]=a;c[(c[f>>2]|0)+16>>2]=a;if(!(c[(c[f>>2]|0)+16>>2]|0)){i=j;return}while(1){l=c[g>>2]|0;c[g>>2]=l+-1;if((l|0)<=0)break;b[(c[h>>2]|0)+8>>1]=1;c[(c[h>>2]|0)+32>>2]=c[c[f>>2]>>2];c[h>>2]=(c[h>>2]|0)+40}i=j;return}function PB(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;j=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;n=r+12|0;o=r+8|0;q=r+4|0;p=r;c[k>>2]=b;c[l>>2]=d;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;if(a[(c[c[k>>2]>>2]|0)+65>>0]|0){c[j>>2]=7;g=c[j>>2]|0;i=r;return g|0}else{g=(c[l>>2]|0)+(_(c[m>>2]|0,e[(c[k>>2]|0)+84>>1]|0)|0)|0;c[p>>2]=(c[(c[k>>2]|0)+16>>2]|0)+(g*40|0);c[q>>2]=dh(c[p>>2]|0,c[n>>2]|0,-1,1,c[o>>2]|0)|0;c[j>>2]=c[q>>2];g=c[j>>2]|0;i=r;return g|0}return 0}function QB(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;d=f;c[d>>2]=a;do if(c[d>>2]|0){if(!(Td(c[d>>2]|0,33004)|0)){c[b>>2]=1;break}if(!(Td(c[d>>2]|0,32997)|0))c[b>>2]=0;else e=6}else e=6;while(0);if((e|0)==6)c[b>>2]=-1;i=f;return c[b>>2]|0}function RB(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if((c[d>>2]|0)==6)c[b>>2]=0;else c[b>>2]=c[6256+(c[d>>2]<<2)>>2];i=e;return c[b>>2]|0}function SB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;a=f;d=c[a+4>>2]|0;if((d|0)>-1|(d|0)==-1&(c[a>>2]|0)>>>0>=4294967295){b=f;d=c[b+4>>2]|0;a=(c[e>>2]|0)+168|0;c[a>>2]=c[b>>2];c[a+4>>2]=d;a=f;nC(c[(c[e>>2]|0)+216>>2]|0,c[a>>2]|0,c[a+4>>2]|0)}a=(c[e>>2]|0)+168|0;C=c[a+4>>2]|0;i=g;return c[a>>2]|0}function TB(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;kg(c[d>>2]|0);if(!(a[(c[(c[d>>2]|0)+4>>2]|0)+17>>0]|0)){b=0;c[e>>2]=b;e=c[e>>2]|0;i=f;return e|0}b=(a[(c[(c[d>>2]|0)+4>>2]|0)+18>>0]|0)!=0^1?1:2;c[e>>2]=b;e=c[e>>2]|0;i=f;return e|0}function UB(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[d>>2]=a;do if(Td(c[d>>2]|0,34075)|0){if(!(Td(c[d>>2]|0,33519)|0)){c[b>>2]=1;break}if(!(Td(c[d>>2]|0,34080)|0)){c[b>>2]=2;break}else{c[e>>2]=Ki(c[d>>2]|0)|0;c[b>>2]=((c[e>>2]|0)>=0&(c[e>>2]|0)<=2?c[e>>2]|0:0)&255;break}}else c[b>>2]=0;while(0);i=f;return c[b>>2]|0}function VB(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;l=k+12|0;m=k+8|0;h=k+4|0;j=k;g=k+16|0;c[l>>2]=b;c[m>>2]=f;c[h>>2]=c[(c[l>>2]|0)+4>>2];c[j>>2]=0;a[g>>0]=c[m>>2];kg(c[l>>2]|0);if(((e[(c[h>>2]|0)+22>>1]|0)&2|0)!=0?(((d[g>>0]|0|0)!=0?1:0)|0)!=(d[(c[h>>2]|0)+17>>0]|0|0):0){c[j>>2]=8;m=c[j>>2]|0;i=k;return m|0}a[(c[h>>2]|0)+17>>0]=(d[g>>0]|0|0)!=0?1:0;a[(c[h>>2]|0)+18>>0]=(d[g>>0]|0|0)==2?1:0;m=c[j>>2]|0;i=k;return m|0}function WB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+12|0;f=e+8|0;g=e+4|0;d=e;c[h>>2]=a;c[f>>2]=b;c[g>>2]=c[(c[h>>2]|0)+4>>2];kg(c[h>>2]|0);c[d>>2]=lC(c[c[g>>2]>>2]|0,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function XB(b){b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;g=h+4|0;f=h;c[e>>2]=b;if(!(a[(c[e>>2]|0)+63>>0]|0)){i=h;return}c[g>>2]=c[(c[e>>2]|0)+16>>2];c[f>>2]=c[(c[e>>2]|0)+20>>2];while(1){b=c[f>>2]|0;c[f>>2]=b+-1;if((b|0)<=0)break;if(c[(c[g>>2]|0)+4>>2]|0)wB(c[(c[g>>2]|0)+4>>2]|0,d[(c[g>>2]|0)+8>>0]|c[(c[e>>2]|0)+24>>2]&56)|0;c[g>>2]=(c[g>>2]|0)+16}i=h;return}function YB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;g=k+12|0;l=k+8|0;j=k+4|0;h=k;c[g>>2]=b;c[l>>2]=e;c[j>>2]=kC(c[l>>2]|0)|0;c[h>>2]=c[c[g>>2]>>2];if((d[(c[h>>2]|0)+64>>0]|0|0)==(c[j>>2]|0)){c[f>>2]=0;l=c[f>>2]|0;i=k;return l|0}if(ZB(c[g>>2]|0)|0){c[f>>2]=1;l=c[f>>2]|0;i=k;return l|0}else{a[(c[h>>2]|0)+64>>0]=c[j>>2];c[f>>2]=0;l=c[f>>2]|0;i=k;return l|0}return 0}function ZB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;d=h+12|0;e=h+8|0;f=h+4|0;c[e>>2]=b;c[f>>2]=c[c[e>>2]>>2];do if(c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]|0){if((a[(c[f>>2]|0)+63>>0]|0)!=0?(og(c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]|0)|0)==0:0){lB(c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]|0)|0;c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]=0;zg(c[f>>2]|0);break}Ah(c[e>>2]|0,34013,g);c[d>>2]=1;g=c[d>>2]|0;i=h;return g|0}while(0);c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}function _B(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;OB(c[e>>2]|0,c[f>>2]|0);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[f>>2]|0))break;PB(c[e>>2]|0,c[h>>2]|0,0,c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,0)|0;c[h>>2]=(c[h>>2]|0)+1}i=j;return}function $B(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;g=o+32|0;h=o+28|0;j=o+24|0;k=o+8|0;m=o+4|0;l=o+36|0;n=o;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;while(1){e=a[(c[j>>2]|0)+(c[m>>2]|0)>>0]|0;a[l>>0]=e;if(!(e<<24>>24))break;if((a[l>>0]|0)==115){f=(c[k>>2]|0)+(4-1)&~(4-1);b=c[f>>2]|0;c[k>>2]=f+4;c[n>>2]=b;b=c[g>>2]|0;f=(c[n>>2]|0)==0?25:97;e=c[h>>2]|0;c[h>>2]=e+1;Uw(b,f,0,e,0,c[n>>2]|0,0)|0}else{b=c[g>>2]|0;e=(c[k>>2]|0)+(4-1)&~(4-1);f=c[e>>2]|0;c[k>>2]=e+4;e=c[h>>2]|0;c[h>>2]=e+1;Rw(b,22,f,e)|0}c[m>>2]=(c[m>>2]|0)+1}i=o;return}function aC(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;g=h+8|0;e=h+16|0;f=h;b[e>>1]=a;if((b[e>>1]|0)<10){f=g;c[f>>2]=1;c[f+4>>2]=0;f=g;g=f;g=c[g>>2]|0;f=f+4|0;f=c[f>>2]|0;C=f;i=h;return g|0}k=(b[e>>1]|0)%10|0;j=f;c[j>>2]=k;c[j+4>>2]=((k|0)<0)<<31>>31;b[e>>1]=(b[e>>1]|0)/10|0;j=f;k=c[j+4>>2]|0;d=f;a=c[d>>2]|0;d=c[d+4>>2]|0;if(!(k>>>0>0|(k|0)==0&(c[j>>2]|0)>>>0>=5)){if(d>>>0>0|(d|0)==0&a>>>0>=1){j=f;j=fR(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;k=f;c[k>>2]=j;c[k+4>>2]=C}}else{j=fR(a|0,d|0,2,0)|0;k=f;c[k>>2]=j;c[k+4>>2]=C}if((b[e>>1]|0)<3){k=f;k=gR(c[k>>2]|0,c[k+4>>2]|0,8,0)|0;k=hR(k|0,C|0,3-(b[e>>1]|0)|0)|0;j=g;c[j>>2]=k;c[j+4>>2]=C;j=g;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;C=j;i=h;return k|0}if((b[e>>1]|0)>60){a=-1;d=2147483647}else{a=f;a=gR(c[a>>2]|0,c[a+4>>2]|0,8,0)|0;a=lR(a|0,C|0,(b[e>>1]|0)-3|0)|0;d=C}j=g;c[j>>2]=a;c[j+4>>2]=d;j=g;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;C=j;i=h;return k|0}function bC(b){b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;g=f+4|0;e=f;a[g>>0]=b;switch(d[g>>0]|0|0){case 7:{c[e>>2]=33823;break}case 8:{c[e>>2]=33832;break}case 9:{c[e>>2]=33844;break}case 6:{c[e>>2]=33852;break}default:c[e>>2]=33861}i=f;return c[e>>2]|0}function cC(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+80|0;y=D;l=D+64|0;m=D+60|0;n=D+56|0;o=D+52|0;p=D+48|0;q=D+44|0;x=D+40|0;r=D+36|0;w=D+32|0;B=D+28|0;s=D+24|0;t=D+20|0;v=D+16|0;u=D+68|0;z=D+12|0;A=D+8|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[q>>2]=k;c[x>>2]=0;c[r>>2]=0;c[w>>2]=c[(c[o>>2]|0)+20>>2];c[B>>2]=c[(c[o>>2]|0)+36+4>>2];do if((c[w>>2]|0)==1){if((b[(c[n>>2]|0)+32>>1]|0)>=0){if(!(c[B>>2]|0)){c[l>>2]=0;C=c[l>>2]|0;i=D;return C|0}if(!(Td(c[(c[(c[n>>2]|0)+4>>2]|0)+((b[(c[n>>2]|0)+32>>1]|0)*24|0)>>2]|0,c[B>>2]|0)|0)){c[l>>2]=0;C=c[l>>2]|0;i=D;return C|0}}}else if(c[q>>2]|0){c[r>>2]=Fw(c[c[m>>2]>>2]|0,c[w>>2]<<2,0)|0;if(c[r>>2]|0){c[c[q>>2]>>2]=c[r>>2];break}c[l>>2]=1;C=c[l>>2]|0;i=D;return C|0}while(0);c[x>>2]=c[(c[n>>2]|0)+8>>2];a:while(1){if(!(c[x>>2]|0))break;do if((e[(c[x>>2]|0)+50>>1]|0)==(c[w>>2]|0)?(d[(c[x>>2]|0)+54>>0]|0)!=0:0){if(!(c[B>>2]|0))if((a[(c[x>>2]|0)+55>>0]&3|0)==2){C=17;break a}else break;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[w>>2]|0))break;b[u>>1]=b[(c[(c[x>>2]|0)+4>>2]|0)+(c[t>>2]<<1)>>1]|0;if((b[u>>1]|0)<0)break;j=c[(c[(c[n>>2]|0)+4>>2]|0)+((b[u>>1]|0)*24|0)+16>>2]|0;c[z>>2]=j;c[z>>2]=(c[z>>2]|0)!=0?j:35690;if(Td(c[(c[(c[x>>2]|0)+32>>2]|0)+(c[t>>2]<<2)>>2]|0,c[z>>2]|0)|0)break;c[A>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+((b[u>>1]|0)*24|0)>>2];c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[w>>2]|0))break;if(!(Td(c[(c[o>>2]|0)+36+(c[v>>2]<<3)+4>>2]|0,c[A>>2]|0)|0)){C=28;break}c[v>>2]=(c[v>>2]|0)+1}if((C|0)==28?(C=0,(c[r>>2]|0)!=0):0)c[(c[r>>2]|0)+(c[t>>2]<<2)>>2]=c[(c[o>>2]|0)+36+(c[v>>2]<<3)>>2];if((c[v>>2]|0)==(c[w>>2]|0))break;c[t>>2]=(c[t>>2]|0)+1}if((c[t>>2]|0)==(c[w>>2]|0))break a}while(0);c[x>>2]=c[(c[x>>2]|0)+20>>2]}b:do if((C|0)==17?(c[r>>2]|0)!=0:0){c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[w>>2]|0))break b;c[(c[r>>2]|0)+(c[s>>2]<<2)>>2]=c[(c[o>>2]|0)+36+(c[s>>2]<<3)>>2];c[s>>2]=(c[s>>2]|0)+1}}while(0);if(c[x>>2]|0){c[c[p>>2]>>2]=c[x>>2];c[l>>2]=0;C=c[l>>2]|0;i=D;return C|0}if(!(a[(c[m>>2]|0)+442>>0]|0)){C=c[m>>2]|0;B=c[(c[o>>2]|0)+8>>2]|0;c[y>>2]=c[c[c[o>>2]>>2]>>2];c[y+4>>2]=B;Ah(C,33760,y)}Sf(c[c[m>>2]>>2]|0,c[r>>2]|0);c[l>>2]=1;C=c[l>>2]|0;i=D;return C|0}function dC(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+16|0;g=o+12|0;j=o+8|0;l=o+4|0;m=o;n=o+20|0;k=o+22|0;c[g>>2]=d;c[j>>2]=f;if(!(c[(c[j>>2]|0)+16>>2]|0)){c[m>>2]=c[(c[j>>2]|0)+12>>2];f=(e[(c[j>>2]|0)+52>>1]|0)+1|0;f=yh(0,f,((f|0)<0)<<31>>31)|0;c[(c[j>>2]|0)+16>>2]=f;if(!(c[(c[j>>2]|0)+16>>2]|0)){jh(c[g>>2]|0);c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}c[l>>2]=0;while(1){g=c[l>>2]|0;d=c[j>>2]|0;if((c[l>>2]|0)>=(e[(c[j>>2]|0)+52>>1]|0))break;b[n>>1]=b[(c[d+4>>2]|0)+(g<<1)>>1]|0;g=b[n>>1]|0;do if((b[n>>1]|0)<0){d=c[l>>2]|0;f=c[j>>2]|0;if((g|0)==-1){a[(c[f+16>>2]|0)+d>>0]=68;break}else{f=Nx(c[(c[(c[f+40>>2]|0)+4>>2]|0)+(d*20|0)>>2]|0)|0;a[k>>0]=f;a[k>>0]=(a[k>>0]|0)==0?65:f;a[(c[(c[j>>2]|0)+16>>2]|0)+(c[l>>2]|0)>>0]=a[k>>0]|0;break}}else a[(c[(c[j>>2]|0)+16>>2]|0)+(c[l>>2]|0)>>0]=a[(c[(c[m>>2]|0)+4>>2]|0)+(g*24|0)+21>>0]|0;while(0);c[l>>2]=(c[l>>2]|0)+1}a[(c[d+16>>2]|0)+g>>0]=0}c[h>>2]=c[(c[j>>2]|0)+16>>2];n=c[h>>2]|0;i=o;return n|0}function eC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(c[e>>2]|0)c[f>>2]=33668;else c[f>>2]=19262;fi(c[d>>2]|0,33672,2,1,c[f>>2]|0,212,0,0,0)|0;fi(c[d>>2]|0,33672,3,1,c[f>>2]|0,212,0,0,0)|0;fi(c[d>>2]|0,33677,2,1,19258,212,0,0,0)|0;iC(c[d>>2]|0,33677,12);iC(c[d>>2]|0,33672,((c[e>>2]|0)!=0?12:4)&255);i=g;return}function fC(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=0;c[e>>2]=(c[b>>2]|0)+124;while(1){if((c[d>>2]|0)>=10)break;if(c[(c[e>>2]|0)+12>>2]|0){hA(c[b>>2]|0,c[e>>2]|0);c[(c[e>>2]|0)+12>>2]=0}c[d>>2]=(c[d>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+20}i=f;return}function gC(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+64|0;p=C+52|0;q=C+48|0;r=C+44|0;s=C+40|0;t=C+56|0;u=C+36|0;v=C+32|0;w=C+28|0;m=C+24|0;x=C+20|0;y=C+16|0;n=C+12|0;A=C+8|0;B=C+4|0;z=C;c[q>>2]=b;c[r>>2]=e;c[s>>2]=f;a[t>>0]=g;c[u>>2]=h;c[v>>2]=j;c[w>>2]=k;c[m>>2]=l;if((d[(c[r>>2]|0)+42>>0]|0)&16){c[p>>2]=0;B=c[p>>2]|0;i=C;return B|0}c[y>>2]=Dh(c[c[q>>2]>>2]|0,c[(c[r>>2]|0)+64>>2]|0)|0;c[B>>2]=Pw(c[q>>2]|0)|0;if((c[u>>2]|0)<0)c[u>>2]=c[(c[q>>2]|0)+72>>2];l=c[u>>2]|0;c[u>>2]=l+1;c[n>>2]=l;if(c[w>>2]|0)c[c[w>>2]>>2]=c[n>>2];do if(!((d[(c[r>>2]|0)+42>>0]|0)&32)){if((c[v>>2]|0)!=0?(d[c[v>>2]>>0]|0|0)==0:0){o=11;break}zz(c[q>>2]|0,c[n>>2]|0,c[y>>2]|0,c[r>>2]|0,c[s>>2]|0)}else o=11;while(0);if((o|0)==11)yz(c[q>>2]|0,c[y>>2]|0,c[(c[r>>2]|0)+28>>2]|0,(c[s>>2]|0)==55&255,c[c[r>>2]>>2]|0);if(c[m>>2]|0)c[c[m>>2]>>2]=c[u>>2];c[x>>2]=0;c[A>>2]=c[(c[r>>2]|0)+8>>2];while(1){m=c[u>>2]|0;if(!(c[A>>2]|0))break;c[u>>2]=m+1;c[z>>2]=m;if(!((c[v>>2]|0)!=0?(d[(c[v>>2]|0)+((c[x>>2]|0)+1)>>0]|0|0)==0:0)){Vw(c[B>>2]|0,c[s>>2]|0,c[z>>2]|0,c[(c[A>>2]|0)+44>>2]|0,c[y>>2]|0)|0;Az(c[q>>2]|0,c[A>>2]|0)}if((a[(c[A>>2]|0)+55>>0]&3|0)==2?((d[(c[r>>2]|0)+42>>0]|0)&32|0)!=0:0){if(c[w>>2]|0)c[c[w>>2]>>2]=c[z>>2]}else Fh(c[B>>2]|0,a[t>>0]|0);c[A>>2]=c[(c[A>>2]|0)+20>>2];c[x>>2]=(c[x>>2]|0)+1}if((m|0)>(c[(c[q>>2]|0)+72>>2]|0))c[(c[q>>2]|0)+72>>2]=c[u>>2];c[p>>2]=c[x>>2];B=c[p>>2]|0;i=C;return B|0}function hC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+48|0;f=o+36|0;g=o+32|0;h=o+28|0;l=o+24|0;m=o+20|0;j=o+16|0;q=o+12|0;p=o+8|0;k=o+4|0;n=o;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;c[p>>2]=we(c[f>>2]|0)|0;c[k>>2]=ve(c[f>>2]|0)|0;c[m>>2]=ae(c[c[h>>2]>>2]|0)|0;c[l>>2]=ae(c[(c[h>>2]|0)+4>>2]|0)|0;c[q>>2]=be(c[c[h>>2]>>2]|0)|0;if((c[q>>2]|0)>(c[(c[p>>2]|0)+88+32>>2]|0)){je(c[f>>2]|0,33682,-1);i=o;return}do if((c[g>>2]|0)==3){c[n>>2]=ae(c[(c[h>>2]|0)+8>>2]|0)|0;if(!(c[n>>2]|0)){i=o;return}if((Cx(c[n>>2]|0,-1)|0)==1){c[j>>2]=jC(n)|0;break}je(c[f>>2]|0,33715,-1);i=o;return}else c[j>>2]=d[(c[k>>2]|0)+2>>0];while(0);if(!((c[l>>2]|0)!=0&(c[m>>2]|0)!=0)){i=o;return}q=c[f>>2]|0;ke(q,Ph(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0)|0);i=o;return}function iC(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;l=i;i=i+16|0;n=l+8|0;m=l+4|0;j=l+12|0;k=l;c[n>>2]=f;c[m>>2]=g;a[j>>0]=h;h=c[n>>2]|0;g=c[m>>2]|0;c[k>>2]=gi(h,g,If(c[m>>2]|0)|0,2,1,0)|0;if(!(c[k>>2]|0)){i=l;return}n=(c[k>>2]|0)+2|0;b[n>>1]=e[n>>1]|0|(d[j>>0]|0);i=l;return}function jC(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;f=i;i=i+16|0;b=f+4|0;e=f;c[b>>2]=a;g=c[b>>2]|0;a=c[g>>2]|0;c[g>>2]=a+1;c[e>>2]=d[a>>0];if((c[e>>2]|0)>>>0<192){g=c[e>>2]|0;i=f;return g|0}c[e>>2]=d[26420+((c[e>>2]|0)-192)>>0];while(1){a=c[e>>2]|0;if(((d[c[c[b>>2]>>2]>>0]|0)&192|0)!=128)break;h=c[b>>2]|0;g=c[h>>2]|0;c[h>>2]=g+1;c[e>>2]=(a<<6)+(63&(d[g>>0]|0))}if((a>>>0>=128?(c[e>>2]&-2048|0)!=55296:0)?(c[e>>2]&-2|0)!=65534:0){h=c[e>>2]|0;i=f;return h|0}c[e>>2]=65533;h=c[e>>2]|0;i=f;return h|0}function kC(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;e=g;c[e>>2]=b;if((a[c[e>>2]>>0]|0)>=48?(a[c[e>>2]>>0]|0)<=50:0)c[d>>2]=(a[c[e>>2]>>0]|0)-48;else f=4;do if((f|0)==4){if(!(Td(c[e>>2]|0,33917)|0)){c[d>>2]=1;break}if(!(Td(c[e>>2]|0,27038)|0)){c[d>>2]=2;break}else{c[d>>2]=0;break}}while(0);i=g;return c[d>>2]|0}function lC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=mC(c[(c[f>>2]|0)+212>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function mC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(c[e>>2]|0){if((c[e>>2]|0)<0){b=c[e>>2]|0;b=rR(-1024,-1,b|0,((b|0)<0)<<31>>31|0)|0;a=(c[(c[d>>2]|0)+24>>2]|0)+(c[(c[d>>2]|0)+28>>2]|0)|0;a=pR(b|0,C|0,a|0,((a|0)<0)<<31>>31|0)|0;c[e>>2]=a}c[(c[d>>2]|0)+20>>2]=c[e>>2]}c[f>>2]=Zi(c[d>>2]|0)|0;if((c[f>>2]|0)>=(c[(c[d>>2]|0)+20>>2]|0)){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=c[(c[d>>2]|0)+20>>2];f=c[f>>2]|0;i=g;return f|0}function nC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;if(!(c[e>>2]|0)){i=g;return}d=f;f=c[d+4>>2]|0;a=(c[e>>2]|0)+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=f;i=g;return}function oC(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+12|0;f=k+8|0;j=k+4|0;h=k;c[g>>2]=a;c[f>>2]=d;if(!((c[g>>2]|0)!=0&(c[f>>2]|0)!=0)){i=k;return}c[j>>2]=(c[g>>2]|0)+((c[f>>2]|0)*40|0);c[h>>2]=c[(c[g>>2]|0)+32>>2];if(c[(c[h>>2]|0)+528>>2]|0){do{if(c[(c[g>>2]|0)+24>>2]|0)Sf(c[h>>2]|0,c[(c[g>>2]|0)+20>>2]|0);a=(c[g>>2]|0)+40|0;c[g>>2]=a}while(a>>>0<(c[j>>2]|0)>>>0);i=k;return}do{f=c[g>>2]|0;if(!((e[(c[g>>2]|0)+8>>1]|0)&9312)){if(c[f+24>>2]|0){Sf(c[h>>2]|0,c[(c[g>>2]|0)+20>>2]|0);c[(c[g>>2]|0)+24>>2]=0}}else Ug(f);b[(c[g>>2]|0)+8>>1]=128;a=(c[g>>2]|0)+40|0;c[g>>2]=a}while(a>>>0<(c[j>>2]|0)>>>0);i=k;return}function pC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+80|0;l=o+8|0;k=o;f=o+44|0;p=o+40|0;g=o+36|0;h=o+32|0;j=o+28|0;m=o+24|0;n=o+48|0;c[f>>2]=a;c[p>>2]=b;c[g>>2]=d;c[h>>2]=e;c[m>>2]=c[(c[(c[c[f>>2]>>2]|0)+16>>2]|0)+(c[p>>2]<<4)>>2];c[j>>2]=1;while(1){if((c[j>>2]|0)>4)break;c[k>>2]=c[j>>2];Qd(24,n,34953,k)|0;if(pi(c[c[f>>2]>>2]|0,n,c[m>>2]|0)|0){p=c[f>>2]|0;e=c[g>>2]|0;d=c[h>>2]|0;c[l>>2]=c[m>>2];c[l+4>>2]=n;c[l+8>>2]=e;c[l+12>>2]=d;Ow(p,31809,l)}c[j>>2]=(c[j>>2]|0)+1}i=o;return}function qC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+48|0;h=e;g=e+36|0;j=e+32|0;l=e+28|0;k=e+24|0;f=e+20|0;c[g>>2]=a;c[j>>2]=b;c[l>>2]=d;c[k>>2]=Pw(c[g>>2]|0)|0;c[f>>2]=Wz(c[g>>2]|0)|0;Vw(c[k>>2]|0,118,c[j>>2]|0,c[f>>2]|0,c[l>>2]|0)|0;Bx(c[g>>2]|0);a=c[g>>2]|0;k=(c[l>>2]|0)==1?20769:20788;j=c[j>>2]|0;d=c[f>>2]|0;b=c[f>>2]|0;c[h>>2]=c[(c[(c[c[g>>2]>>2]|0)+16>>2]|0)+(c[l>>2]<<4)>>2];c[h+4>>2]=k;c[h+8>>2]=j;c[h+12>>2]=d;c[h+16>>2]=b;Ow(a,34897,h);_z(c[g>>2]|0,c[f>>2]|0);i=e;return}function rC(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+36|0;h=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;q=r+12|0;n=r+8|0;p=r+4|0;o=r;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=c[c[l>>2]>>2];do if(!(c[n>>2]&(c[n>>2]|0)-1)){c[p>>2]=(c[n>>2]|0)==0?1:c[n>>2]<<1;d=_(c[p>>2]|0,c[k>>2]|0)|0;c[o>>2]=Ew(c[h>>2]|0,c[j>>2]|0,d,((d|0)<0)<<31>>31)|0;if(c[o>>2]|0){c[j>>2]=c[o>>2];break}c[c[m>>2]>>2]=-1;c[g>>2]=c[j>>2];q=c[g>>2]|0;i=r;return q|0}while(0);c[q>>2]=c[j>>2];d=_(c[n>>2]|0,c[k>>2]|0)|0;kR((c[q>>2]|0)+d|0,0,c[k>>2]|0)|0;c[c[m>>2]>>2]=c[n>>2];q=c[l>>2]|0;c[q>>2]=(c[q>>2]|0)+1;c[g>>2]=c[j>>2];q=c[g>>2]|0;i=r;return q|0}function sC(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;p=q+4|0;o=q;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=0;c[p>>2]=0;if(c[(c[c[h>>2]>>2]|0)+24>>2]&8388608)c[p>>2]=fx(c[h>>2]|0,c[j>>2]|0)|0;c[o>>2]=c[p>>2];while(1){if(!(c[o>>2]|0))break;if((d[(c[o>>2]|0)+8>>0]|0|0)==(c[k>>2]|0)?(MF(c[(c[o>>2]|0)+16>>2]|0,c[l>>2]|0)|0)!=0:0)c[n>>2]=c[n>>2]|(d[(c[o>>2]|0)+9>>0]|0);c[o>>2]=c[(c[o>>2]|0)+32>>2]}if(!(c[m>>2]|0)){a=c[n>>2]|0;a=(a|0)!=0;b=c[p>>2]|0;b=a?b:0;i=q;return b|0}c[c[m>>2]>>2]=c[n>>2];a=c[n>>2]|0;a=(a|0)!=0;b=c[p>>2]|0;b=a?b:0;i=q;return b|0}function tC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;l=n+8|0;k=n;f=n+24|0;g=n+20|0;h=n+16|0;j=n+12|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;if(!(((d[(c[h>>2]|0)+42>>0]|0)&16|0)!=0?(c[(c[c[(Ax(c[c[g>>2]>>2]|0,c[h>>2]|0)|0)+4>>2]>>2]|0)+52>>2]|0)==0:0))m=3;do if((m|0)==3){if((((d[(c[h>>2]|0)+42>>0]|0)&1|0)!=0?(c[(c[c[g>>2]>>2]|0)+24>>2]&2048|0)==0:0)?(d[(c[g>>2]|0)+18>>0]|0|0)==0:0)break;if((c[j>>2]|0)==0?(c[(c[h>>2]|0)+12>>2]|0)!=0:0){m=c[g>>2]|0;c[l>>2]=c[c[h>>2]>>2];Ah(m,36112,l);c[f>>2]=1;m=c[f>>2]|0;i=n;return m|0}c[f>>2]=0;m=c[f>>2]|0;i=n;return m|0}while(0);m=c[g>>2]|0;c[k>>2]=c[c[h>>2]>>2];Ah(m,36083,k);c[f>>2]=1;m=c[f>>2]|0;i=n;return m|0}function uC(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=(c[e>>2]|0)+88|0;b[a>>1]=b[a>>1]&-5|4;i=d;return}function vC(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+128|0;u=O+108|0;v=O+104|0;w=O+100|0;l=O+96|0;r=O+92|0;x=O+88|0;z=O+84|0;n=O+80|0;I=O+76|0;J=O+72|0;H=O+68|0;o=O+64|0;C=O+60|0;D=O+56|0;F=O+52|0;E=O+48|0;y=O+44|0;s=O+40|0;A=O+36|0;B=O+32|0;M=O+28|0;t=O+24|0;q=O+20|0;K=O+16|0;L=O+12|0;m=O+8|0;p=O+4|0;G=O+112|0;N=O;c[v>>2]=f;c[w>>2]=g;c[l>>2]=h;c[r>>2]=j;c[x>>2]=k;c[z>>2]=c[c[v>>2]>>2];c[A>>2]=0;c[B>>2]=0;c[q>>2]=0;if(!(c[l>>2]|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((c[(c[v>>2]|0)+536>>2]|0)==0?(c[(c[l>>2]|0)+68>>2]|0)==0:0){if(fx(c[v>>2]|0,c[w>>2]|0)|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(d[(c[w>>2]|0)+42>>0]&16){ -c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((c[r>>2]|0)==10){if((b[(c[w>>2]|0)+32>>1]|0)>=0)c[r>>2]=d[(c[w>>2]|0)+43>>0];if((c[r>>2]|0)==10)c[r>>2]=2}if((c[c[(c[l>>2]|0)+32>>2]>>2]|0)!=1){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[(c[l>>2]|0)+32>>2]|0)+8+20>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[l>>2]|0)+36>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[l>>2]|0)+48>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[l>>2]|0)+40>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[l>>2]|0)+60>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[l>>2]|0)+52>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(e[(c[l>>2]|0)+6>>1]&1){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}c[n>>2]=c[c[l>>2]>>2];if((c[c[n>>2]>>2]|0)!=1){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((d[c[c[(c[n>>2]|0)+4>>2]>>2]>>0]|0)!=158){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}c[o>>2]=(c[(c[l>>2]|0)+32>>2]|0)+8;c[I>>2]=_w(c[v>>2]|0,0,c[o>>2]|0)|0;if(!(c[I>>2]|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((c[I>>2]|0)==(c[w>>2]|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(((d[(c[w>>2]|0)+42>>0]&32|0)==0|0)!=((d[(c[I>>2]|0)+42>>0]&32|0)==0|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(d[(c[I>>2]|0)+42>>0]&16){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if(c[(c[I>>2]|0)+12>>2]|0){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((b[(c[w>>2]|0)+34>>1]|0)!=(b[(c[I>>2]|0)+34>>1]|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}if((b[(c[w>>2]|0)+32>>1]|0)!=(b[(c[I>>2]|0)+32>>1]|0)){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}c[C>>2]=0;a:while(1){if((c[C>>2]|0)>=(b[(c[w>>2]|0)+34>>1]|0)){l=64;break}c[m>>2]=(c[(c[w>>2]|0)+4>>2]|0)+((c[C>>2]|0)*24|0);c[p>>2]=(c[(c[I>>2]|0)+4>>2]|0)+((c[C>>2]|0)*24|0);if((a[(c[m>>2]|0)+21>>0]|0)!=(a[(c[p>>2]|0)+21>>0]|0)){l=52;break}if(Td(c[(c[m>>2]|0)+16>>2]|0,c[(c[p>>2]|0)+16>>2]|0)|0){l=54;break}if((d[(c[m>>2]|0)+20>>0]|0)!=0?(a[(c[p>>2]|0)+20>>0]|0)==0:0){l=57;break}do if((c[C>>2]|0)>0){if(((c[(c[m>>2]|0)+8>>2]|0)==0|0)!=((c[(c[p>>2]|0)+8>>2]|0)==0|0)){l=62;break a}if(!(c[(c[m>>2]|0)+8>>2]|0))break;if(yQ(c[(c[m>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0){l=62;break a}}while(0);c[C>>2]=(c[C>>2]|0)+1}if((l|0)==52){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}else if((l|0)==54){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}else if((l|0)==57){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}else if((l|0)==62){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}else if((l|0)==64){c[H>>2]=c[(c[w>>2]|0)+8>>2];while(1){if(!(c[H>>2]|0))break;if(d[(c[H>>2]|0)+54>>0]|0)c[q>>2]=1;c[J>>2]=c[(c[I>>2]|0)+8>>2];while(1){if(!(c[J>>2]|0))break;if(OF(c[H>>2]|0,c[J>>2]|0)|0)break;c[J>>2]=c[(c[J>>2]|0)+20>>2]}if(!(c[J>>2]|0)){l=73;break}c[H>>2]=c[(c[H>>2]|0)+20>>2]}if((l|0)==73){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}do if(c[(c[w>>2]|0)+24>>2]|0){if(!(qy(c[(c[I>>2]|0)+24>>2]|0,c[(c[w>>2]|0)+24>>2]|0,-1)|0))break;c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}while(0);do if(c[(c[z>>2]|0)+24>>2]&524288){if(!(c[(c[w>>2]|0)+16>>2]|0))break;c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}while(0);if(c[(c[z>>2]|0)+24>>2]&128){c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}c[D>>2]=Dh(c[z>>2]|0,c[(c[I>>2]|0)+64>>2]|0)|0;c[M>>2]=Pw(c[v>>2]|0)|0;bx(c[v>>2]|0,c[D>>2]|0);p=(c[v>>2]|0)+72|0;h=c[p>>2]|0;c[p>>2]=h+1;c[F>>2]=h;h=(c[v>>2]|0)+72|0;p=c[h>>2]|0;c[h>>2]=p+1;c[E>>2]=p;c[t>>2]=wC(c[v>>2]|0,c[x>>2]|0,c[w>>2]|0)|0;c[K>>2]=Wz(c[v>>2]|0)|0;c[L>>2]=Wz(c[v>>2]|0)|0;zz(c[v>>2]|0,c[E>>2]|0,c[x>>2]|0,c[w>>2]|0,55);do if(!(c[(c[z>>2]|0)+24>>2]&134217728)){if((b[(c[w>>2]|0)+32>>1]|0)<0){if(!((c[q>>2]|0)!=0?1:(c[(c[w>>2]|0)+8>>2]|0)!=0))l=87}else if(!(c[q>>2]|0))l=87;if((l|0)==87?!((c[r>>2]|0)!=2&(c[r>>2]|0)!=1):0)break;c[y>>2]=Rw(c[M>>2]|0,108,c[E>>2]|0,0)|0;c[A>>2]=Yw(c[M>>2]|0,13)|0;Fz(c[M>>2]|0,c[y>>2]|0)}while(0);l=c[v>>2]|0;if(!(d[(c[I>>2]|0)+42>>0]&32)){zz(l,c[F>>2]|0,c[D>>2]|0,c[I>>2]|0,54);c[B>>2]=Rw(c[M>>2]|0,108,c[F>>2]|0,0)|0;do if((b[(c[w>>2]|0)+32>>1]|0)<0){l=c[M>>2]|0;if(!(c[(c[w>>2]|0)+8>>2]|0)){c[y>>2]=Rw(l,74,c[E>>2]|0,c[L>>2]|0)|0;break}else{c[y>>2]=Rw(l,103,c[F>>2]|0,c[L>>2]|0)|0;break}}else{c[y>>2]=Rw(c[M>>2]|0,103,c[F>>2]|0,c[L>>2]|0)|0;c[s>>2]=Vw(c[M>>2]|0,70,c[E>>2]|0,0,c[L>>2]|0)|0;CE(c[v>>2]|0,c[r>>2]|0,c[w>>2]|0);Fz(c[M>>2]|0,c[s>>2]|0);CC(c[v>>2]|0,c[t>>2]|0,c[L>>2]|0)}while(0);Rw(c[M>>2]|0,102,c[F>>2]|0,c[K>>2]|0)|0;Uw(c[M>>2]|0,75,c[E>>2]|0,c[K>>2]|0,c[L>>2]|0,c[c[w>>2]>>2]|0,0)|0;Fh(c[M>>2]|0,11);Rw(c[M>>2]|0,7,c[F>>2]|0,c[y>>2]|0)|0;Rw(c[M>>2]|0,61,c[F>>2]|0,0)|0;Rw(c[M>>2]|0,61,c[E>>2]|0,0)|0}else{yz(l,c[x>>2]|0,c[(c[w>>2]|0)+28>>2]|0,1,c[c[w>>2]>>2]|0);yz(c[v>>2]|0,c[D>>2]|0,c[(c[I>>2]|0)+28>>2]|0,0,c[c[I>>2]>>2]|0)}c[H>>2]=c[(c[w>>2]|0)+8>>2];while(1){if(!(c[H>>2]|0))break;a[G>>0]=0;c[J>>2]=c[(c[I>>2]|0)+8>>2];while(1){if(!(c[J>>2]|0))break;if(OF(c[H>>2]|0,c[J>>2]|0)|0)break;c[J>>2]=c[(c[J>>2]|0)+20>>2]}Vw(c[M>>2]|0,54,c[F>>2]|0,c[(c[J>>2]|0)+44>>2]|0,c[D>>2]|0)|0;Az(c[v>>2]|0,c[J>>2]|0);Vw(c[M>>2]|0,55,c[E>>2]|0,c[(c[H>>2]|0)+44>>2]|0,c[x>>2]|0)|0;Az(c[v>>2]|0,c[H>>2]|0);Fh(c[M>>2]|0,1);c[y>>2]=Rw(c[M>>2]|0,108,c[F>>2]|0,0)|0;Rw(c[M>>2]|0,101,c[F>>2]|0,c[K>>2]|0)|0;do if(c[(c[z>>2]|0)+24>>2]&134217728){c[C>>2]=0;while(1){if((c[C>>2]|0)>=(e[(c[J>>2]|0)+52>>1]|0))break;c[N>>2]=c[(c[(c[J>>2]|0)+32>>2]|0)+(c[C>>2]<<2)>>2];if(Td(35690,c[N>>2]|0)|0)break;c[C>>2]=(c[C>>2]|0)+1}if((c[C>>2]|0)!=(e[(c[J>>2]|0)+52>>1]|0))break;a[G>>0]=16;Vw(c[M>>2]|0,105,c[E>>2]|0,0,-1)|0}while(0);do if(d[(c[I>>2]|0)+42>>0]&32){if((a[(c[H>>2]|0)+55>>0]&3|0)!=2)break;a[G>>0]=d[G>>0]|1}while(0);Vw(c[M>>2]|0,110,c[E>>2]|0,c[K>>2]|0,1)|0;Fh(c[M>>2]|0,a[G>>0]|0);Rw(c[M>>2]|0,7,c[F>>2]|0,(c[y>>2]|0)+1|0)|0;Fz(c[M>>2]|0,c[y>>2]|0);Rw(c[M>>2]|0,61,c[F>>2]|0,0)|0;Rw(c[M>>2]|0,61,c[E>>2]|0,0)|0;c[H>>2]=c[(c[H>>2]|0)+20>>2]}if(c[B>>2]|0)Fz(c[M>>2]|0,c[B>>2]|0);_z(c[v>>2]|0,c[L>>2]|0);_z(c[v>>2]|0,c[K>>2]|0);if(c[A>>2]|0){Rw(c[M>>2]|0,21,0,0)|0;Fz(c[M>>2]|0,c[A>>2]|0);Rw(c[M>>2]|0,61,c[E>>2]|0,0)|0;c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}else{c[u>>2]=1;N=c[u>>2]|0;i=O;return N|0}}}c[u>>2]=0;N=c[u>>2]|0;i=O;return N|0}function wC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+24|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;m=n+4|0;l=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=0;if((d[(c[j>>2]|0)+42>>0]|0)&8){b=c[g>>2]|0;if(c[(c[g>>2]|0)+416>>2]|0)b=c[b+416>>2]|0;c[m>>2]=b;c[l>>2]=c[(c[m>>2]|0)+412>>2];while(1){if(c[l>>2]|0)a=(c[(c[l>>2]|0)+4>>2]|0)!=(c[j>>2]|0);else a=0;b=c[l>>2]|0;if(!a)break;c[l>>2]=c[b>>2]}do if(!b){c[l>>2]=Fw(c[c[g>>2]>>2]|0,16,0)|0;if(c[l>>2]|0){c[c[l>>2]>>2]=c[(c[m>>2]|0)+412>>2];c[(c[m>>2]|0)+412>>2]=c[l>>2];c[(c[l>>2]|0)+4>>2]=c[j>>2];c[(c[l>>2]|0)+8>>2]=c[h>>2];h=(c[m>>2]|0)+76|0;c[h>>2]=(c[h>>2]|0)+1;h=(c[m>>2]|0)+76|0;j=(c[h>>2]|0)+1|0;c[h>>2]=j;c[(c[l>>2]|0)+12>>2]=j;m=(c[m>>2]|0)+76|0;c[m>>2]=(c[m>>2]|0)+1;break}c[f>>2]=0;m=c[f>>2]|0;i=n;return m|0}while(0);c[k>>2]=c[(c[l>>2]|0)+12>>2]}c[f>>2]=c[k>>2];m=c[f>>2]|0;i=n;return m|0}function xC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;xz(c[f>>2]|0,17,c[g>>2]|0)|0;a[(c[(c[f>>2]|0)+24>>2]|0)+19>>0]=0;c[(c[(c[f>>2]|0)+24>>2]|0)+60>>2]=0;i=e;return}function yC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r+40|0;f=r+36|0;g=r+32|0;h=r+28|0;p=r+24|0;j=r+20|0;k=r+16|0;n=r+12|0;m=r+8|0;l=r+4|0;o=r;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;c[p>>2]=Pw(c[f>>2]|0)|0;c[k>>2]=Bz(c[p>>2]|0)|0;if((d[(c[h>>2]|0)+42>>0]|0)&16)f=Ax(c[c[f>>2]>>2]|0,c[h>>2]|0)|0;else f=0;c[n>>2]=f;c[j>>2]=1;a:while(1){if((c[j>>2]|0)>=(c[k>>2]|0)){f=18;break}c[m>>2]=Mz(c[p>>2]|0,c[j>>2]|0)|0;b:do if((d[c[m>>2]>>0]|0|0)==54?(c[(c[m>>2]|0)+12>>2]|0)==(c[g>>2]|0):0){c[o>>2]=c[(c[m>>2]|0)+8>>2];if((c[o>>2]|0)==(c[(c[h>>2]|0)+28>>2]|0)){f=8;break a}c[l>>2]=c[(c[h>>2]|0)+8>>2];while(1){if(!(c[l>>2]|0))break b;if((c[o>>2]|0)==(c[(c[l>>2]|0)+44>>2]|0)){f=12;break a}c[l>>2]=c[(c[l>>2]|0)+20>>2]}}while(0);if((d[c[m>>2]>>0]|0|0)==152?(c[(c[m>>2]|0)+16>>2]|0)==(c[n>>2]|0):0){f=16;break}c[j>>2]=(c[j>>2]|0)+1}if((f|0)==8){c[q>>2]=1;q=c[q>>2]|0;i=r;return q|0}else if((f|0)==12){c[q>>2]=1;q=c[q>>2]|0;i=r;return q|0}else if((f|0)==16){c[q>>2]=1;q=c[q>>2]|0;i=r;return q|0}else if((f|0)==18){c[q>>2]=0;q=c[q>>2]|0;i=r;return q|0}return 0}function zC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;k=e+16|0;g=e+12|0;h=e+8|0;j=e+4|0;f=e;c[k>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=c[(c[k>>2]|0)+8>>2];xA(c[k>>2]|0,c[g>>2]|0,c[h>>2]|0);a=(c[k>>2]|0)+76|0;d=(c[a>>2]|0)+1|0;c[a>>2]=d;c[f>>2]=d;Rw(c[j>>2]|0,30,c[h>>2]|0,c[f>>2]|0)|0;KA(c[g>>2]|0,c[f>>2]|0);i=e;return}function AC(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;k=n+12|0;l=n+8|0;m=n+4|0;j=n;c[g>>2]=d;c[h>>2]=e;c[k>>2]=f;c[m>>2]=c[(c[h>>2]|0)+20>>2];if(!(c[m>>2]|0)){c[j>>2]=wA(c[g>>2]|0)|0;d=(b[(c[h>>2]|0)+34>>1]|0)+1|0;c[m>>2]=yh(0,d,((d|0)<0)<<31>>31)|0;if(!(c[m>>2]|0)){jh(c[j>>2]|0);i=n;return}c[l>>2]=0;while(1){if((c[l>>2]|0)>=(b[(c[h>>2]|0)+34>>1]|0))break;a[(c[m>>2]|0)+(c[l>>2]|0)>>0]=a[(c[(c[h>>2]|0)+4>>2]|0)+((c[l>>2]|0)*24|0)+21>>0]|0;c[l>>2]=(c[l>>2]|0)+1}do{d=c[l>>2]|0;c[l>>2]=d+-1;a[(c[m>>2]|0)+d>>0]=0;if((c[l>>2]|0)<0)break}while((a[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)==65);c[(c[h>>2]|0)+20>>2]=c[m>>2]}c[l>>2]=If(c[m>>2]|0)|0;if(!(c[l>>2]|0)){i=n;return}g=c[g>>2]|0;if(c[k>>2]|0){Uw(g,48,c[k>>2]|0,c[l>>2]|0,0,c[m>>2]|0,c[l>>2]|0)|0;i=n;return}else{Ih(g,-1,c[m>>2]|0,c[l>>2]|0);i=n;return}}function BC(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=i;i=i+48|0;m=v+36|0;w=v+32|0;n=v+28|0;o=v+24|0;p=v+20|0;q=v+16|0;r=v+12|0;s=v+8|0;t=v+4|0;u=v;c[m>>2]=a;c[w>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=j;c[s>>2]=k;c[t>>2]=l;c[u>>2]=c[w>>2];while(1){if(!(c[u>>2]|0))break;if(((d[(c[u>>2]|0)+8>>0]|0|0)==(c[n>>2]|0)?(d[(c[u>>2]|0)+9>>0]|0|0)==(c[p>>2]|0):0)?(MF(c[(c[u>>2]|0)+16>>2]|0,c[o>>2]|0)|0)!=0:0)LE(c[m>>2]|0,c[u>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0);c[u>>2]=c[(c[u>>2]|0)+32>>2]}i=v;return}function CC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if((c[f>>2]|0)<=0){i=h;return}Rw(c[(c[e>>2]|0)+8>>2]|0,137,c[f>>2]|0,c[g>>2]|0)|0;i=h;return}function DC(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;if((d[(c[f>>2]|0)+23>>0]|0|0)!=0?(FA(c[g>>2]|0)|0)!=0:0){_A(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,0);i=j;return}xA(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0);i=j;return}function EC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;d=k+16|0;h=k+12|0;f=k+8|0;g=k+4|0;e=k;c[l>>2]=a;c[d>>2]=b;a=c[l>>2]|0;if(c[(c[l>>2]|0)+416>>2]|0)a=c[a+416>>2]|0;c[h>>2]=a;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[h>>2]|0)+456>>2]|0))break;if((c[d>>2]|0)==(c[(c[(c[h>>2]|0)+524>>2]|0)+(c[f>>2]<<2)>>2]|0)){j=10;break}c[f>>2]=(c[f>>2]|0)+1}if((j|0)==10){i=k;return}c[g>>2]=(c[(c[h>>2]|0)+456>>2]|0)+1<<2;l=c[g>>2]|0;c[e>>2]=Md(c[(c[h>>2]|0)+524>>2]|0,l,((l|0)<0)<<31>>31)|0;if(c[e>>2]|0){c[(c[h>>2]|0)+524>>2]=c[e>>2];j=c[d>>2]|0;g=(c[h>>2]|0)+456|0;l=c[g>>2]|0;c[g>>2]=l+1;c[(c[(c[h>>2]|0)+524>>2]|0)+(l<<2)>>2]=j;i=k;return}else{jh(c[c[h>>2]>>2]|0);i=k;return}}function FC(f,g,h,j,k,l,m,n,o,p,q,r){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;na=i;i=i+192|0;A=na;E=na+176|0;F=na+172|0;H=na+168|0;I=na+164|0;J=na+160|0;K=na+156|0;L=na+152|0;M=na+183|0;N=na+182|0;O=na+148|0;G=na+144|0;s=na+140|0;ka=na+136|0;ca=na+132|0;da=na+128|0;S=na+124|0;T=na+120|0;Z=na+116|0;w=na+112|0;$=na+108|0;t=na+104|0;ja=na+100|0;_=na+96|0;X=na+92|0;W=na+88|0;Y=na+181|0;R=na+180|0;ia=na+84|0;B=na+80|0;x=na+76|0;v=na+72|0;y=na+68|0;C=na+64|0;u=na+60|0;z=na+56|0;ga=na+52|0;ha=na+48|0;V=na+44|0;Q=na+40|0;U=na+36|0;la=na+32|0;ma=na+28|0;P=na+24|0;aa=na+20|0;fa=na+16|0;ba=na+12|0;ea=na+8|0;c[E>>2]=f;c[F>>2]=g;c[H>>2]=h;c[I>>2]=j;c[J>>2]=k;c[K>>2]=l;c[L>>2]=m;a[M>>0]=n;a[N>>0]=o;c[O>>2]=p;c[G>>2]=q;c[s>>2]=r;c[da>>2]=0;c[ja>>2]=0;c[X>>2]=0;c[W>>2]=0;a[R>>0]=0;c[ia>>2]=-1;a[Y>>0]=(c[L>>2]|0)!=0;c[S>>2]=c[c[E>>2]>>2];c[ka>>2]=Pw(c[E>>2]|0)|0;c[w>>2]=b[(c[F>>2]|0)+34>>1];if(!(d[(c[F>>2]|0)+42>>0]&32)){c[da>>2]=0;c[_>>2]=1}else{c[da>>2]=Ej(c[F>>2]|0)|0;c[_>>2]=e[(c[da>>2]|0)+50>>1]}c[T>>2]=0;while(1){if((c[T>>2]|0)>=(c[w>>2]|0))break;a:do if((c[T>>2]|0)!=(b[(c[F>>2]|0)+32>>1]|0)){if((c[s>>2]|0)!=0?(c[(c[s>>2]|0)+(c[T>>2]<<2)>>2]|0)<0:0)break;c[$>>2]=d[(c[(c[F>>2]|0)+4>>2]|0)+((c[T>>2]|0)*24|0)+20>>0];if(c[$>>2]|0){if((d[N>>0]|0)==10){if((c[$>>2]|0)==10)c[$>>2]=2}else c[$>>2]=d[N>>0];if((c[$>>2]|0)==5?(c[(c[(c[F>>2]|0)+4>>2]|0)+((c[T>>2]|0)*24|0)+4>>2]|0)==0:0)c[$>>2]=2;switch(c[$>>2]|0){case 2:{Bx(c[E>>2]|0);break}case 3:case 1:break;case 4:{Rw(c[ka>>2]|0,76,(c[K>>2]|0)+1+(c[T>>2]|0)|0,c[O>>2]|0)|0;break a}default:{c[t>>2]=xz(c[ka>>2]|0,77,(c[K>>2]|0)+1+(c[T>>2]|0)|0)|0;xA(c[E>>2]|0,c[(c[(c[F>>2]|0)+4>>2]|0)+((c[T>>2]|0)*24|0)+4>>2]|0,(c[K>>2]|0)+1+(c[T>>2]|0)|0);Fz(c[ka>>2]|0,c[t>>2]|0);break a}}m=c[S>>2]|0;l=c[(c[(c[F>>2]|0)+4>>2]|0)+((c[T>>2]|0)*24|0)>>2]|0;c[A>>2]=c[c[F>>2]>>2];c[A+4>>2]=l;c[B>>2]=Bh(m,31016,A)|0;Uw(c[ka>>2]|0,20,1299,c[$>>2]|0,(c[K>>2]|0)+1+(c[T>>2]|0)|0,c[B>>2]|0,-1)|0;Fh(c[ka>>2]|0,1)}}while(0);c[T>>2]=(c[T>>2]|0)+1}b:do if((c[(c[F>>2]|0)+24>>2]|0)!=0?(c[(c[S>>2]|0)+24>>2]&8192|0)==0:0){c[x>>2]=c[(c[F>>2]|0)+24>>2];c[(c[E>>2]|0)+100>>2]=(c[K>>2]|0)+1;c[$>>2]=(d[N>>0]|0)!=10?d[N>>0]|0:2;c[T>>2]=0;while(1){if((c[T>>2]|0)>=(c[c[x>>2]>>2]|0))break b;c[y>>2]=c[(c[(c[x>>2]|0)+4>>2]|0)+((c[T>>2]|0)*20|0)>>2];if(!((c[s>>2]|0)!=0?(BE(c[y>>2]|0,c[s>>2]|0,d[M>>0]|0)|0)!=0:0)){c[v>>2]=Cz(c[ka>>2]|0)|0;MA(c[E>>2]|0,c[y>>2]|0,c[v>>2]|0,16);if((c[$>>2]|0)==4)Ez(c[ka>>2]|0,c[O>>2]|0)|0;else{c[C>>2]=c[(c[(c[x>>2]|0)+4>>2]|0)+((c[T>>2]|0)*20|0)+4>>2];if(!(c[C>>2]|0))c[C>>2]=c[c[F>>2]>>2];if((c[$>>2]|0)==5)c[$>>2]=2;bA(c[E>>2]|0,275,c[$>>2]|0,c[C>>2]|0,0,3)}Gz(c[ka>>2]|0,c[v>>2]|0)}c[T>>2]=(c[T>>2]|0)+1}}while(0);if((d[M>>0]|0)!=0&(c[da>>2]|0)==0){c[u>>2]=Cz(c[ka>>2]|0)|0;c[$>>2]=d[(c[F>>2]|0)+43>>0];if((d[N>>0]|0)==10){if((c[$>>2]|0)==10)c[$>>2]=2}else c[$>>2]=d[N>>0];if(a[Y>>0]|0){Vw(c[ka>>2]|0,79,c[K>>2]|0,c[u>>2]|0,c[L>>2]|0)|0;Fh(c[ka>>2]|0,-112)}c:do if((c[$>>2]|0)==5?(d[N>>0]|0)!=5:0){c[ca>>2]=c[(c[F>>2]|0)+8>>2];while(1){if(!(c[ca>>2]|0))break c;if((d[(c[ca>>2]|0)+54>>0]|0)==4)break;if((d[(c[ca>>2]|0)+54>>0]|0)==3)break;c[ca>>2]=c[(c[ca>>2]|0)+20>>2]}c[X>>2]=Yw(c[ka>>2]|0,13)|0}while(0);Vw(c[ka>>2]|0,70,c[I>>2]|0,c[u>>2]|0,c[K>>2]|0)|0;switch(c[$>>2]|0){case 3:case 2:case 1:{D=55;break}case 5:{c[z>>2]=0;if(c[(c[S>>2]|0)+24>>2]&262144)c[z>>2]=sC(c[E>>2]|0,c[F>>2]|0,109,0,0)|0;if((c[z>>2]|0)==0?(DE(c[E>>2]|0,c[F>>2]|0,0,0)|0)==0:0){if(c[(c[F>>2]|0)+8>>2]|0){EE(c[E>>2]|0);GE(c[E>>2]|0,c[F>>2]|0,c[I>>2]|0,c[J>>2]|0,0,-1)}}else{EE(c[E>>2]|0);FE(c[E>>2]|0,c[F>>2]|0,c[z>>2]|0,c[I>>2]|0,c[J>>2]|0,c[K>>2]|0,1,0,5,1,-1)}c[ja>>2]=1;break}case 4:{Ez(c[ka>>2]|0,c[O>>2]|0)|0;break}default:{c[$>>2]=2;D=55}}if((D|0)==55)CE(c[E>>2]|0,c[$>>2]|0,c[F>>2]|0);Gz(c[ka>>2]|0,c[u>>2]|0);if(c[X>>2]|0){c[W>>2]=Yw(c[ka>>2]|0,13)|0;Fz(c[ka>>2]|0,c[X>>2]|0)}}c[Z>>2]=0;c[ca>>2]=c[(c[F>>2]|0)+8>>2];while(1){if(!(c[ca>>2]|0))break;do if(c[(c[H>>2]|0)+(c[Z>>2]<<2)>>2]|0){if(!(d[R>>0]|0)){AC(c[ka>>2]|0,c[F>>2]|0,(c[K>>2]|0)+1|0);a[R>>0]=1}c[V>>2]=(c[J>>2]|0)+(c[Z>>2]|0);c[Q>>2]=Cz(c[ka>>2]|0)|0;if(c[(c[ca>>2]|0)+36>>2]|0){Rw(c[ka>>2]|0,25,0,c[(c[H>>2]|0)+(c[Z>>2]<<2)>>2]|0)|0;c[(c[E>>2]|0)+100>>2]=(c[K>>2]|0)+1;jA(c[E>>2]|0,c[(c[ca>>2]|0)+36>>2]|0,c[Q>>2]|0,16);c[(c[E>>2]|0)+100>>2]=0}c[ga>>2]=kA(c[E>>2]|0,e[(c[ca>>2]|0)+52>>1]|0)|0;c[T>>2]=0;while(1){if((c[T>>2]|0)>=(e[(c[ca>>2]|0)+52>>1]|0))break;c[U>>2]=b[(c[(c[ca>>2]|0)+4>>2]|0)+(c[T>>2]<<1)>>1];do if((c[U>>2]|0)==-2){c[(c[E>>2]|0)+100>>2]=(c[K>>2]|0)+1;sA(c[E>>2]|0,c[(c[(c[(c[ca>>2]|0)+40>>2]|0)+4>>2]|0)+((c[T>>2]|0)*20|0)>>2]|0,(c[ga>>2]|0)+(c[T>>2]|0)|0);c[(c[E>>2]|0)+100>>2]=0}else{if((c[U>>2]|0)!=-1?(c[U>>2]|0)!=(b[(c[F>>2]|0)+32>>1]|0):0)c[la>>2]=(c[U>>2]|0)+(c[K>>2]|0)+1;else{if((c[ia>>2]|0)==((c[ga>>2]|0)+(c[T>>2]|0)|0))break;c[la>>2]=c[K>>2];if(c[(c[ca>>2]|0)+36>>2]|0)s=-1;else s=(c[ga>>2]|0)+(c[T>>2]|0)|0;c[ia>>2]=s}Rw(c[ka>>2]|0,(c[U>>2]|0)<0?32:31,c[la>>2]|0,(c[ga>>2]|0)+(c[T>>2]|0)|0)|0}while(0);c[T>>2]=(c[T>>2]|0)+1}Vw(c[ka>>2]|0,49,c[ga>>2]|0,e[(c[ca>>2]|0)+52>>1]|0,c[(c[H>>2]|0)+(c[Z>>2]<<2)>>2]|0)|0;CA(c[E>>2]|0,c[ga>>2]|0,e[(c[ca>>2]|0)+52>>1]|0);if(((d[Y>>0]|0)!=0?(c[da>>2]|0)==(c[ca>>2]|0):0)?(d[M>>0]|0)==0:0){Gz(c[ka>>2]|0,c[Q>>2]|0);break}c[$>>2]=d[(c[ca>>2]|0)+54>>0];if(!(c[$>>2]|0)){nA(c[E>>2]|0,c[ga>>2]|0,e[(c[ca>>2]|0)+52>>1]|0);Gz(c[ka>>2]|0,c[Q>>2]|0);break}if((d[N>>0]|0)==10){if((c[$>>2]|0)==10)c[$>>2]=2}else c[$>>2]=d[N>>0];Eh(c[ka>>2]|0,67,c[V>>2]|0,c[Q>>2]|0,c[ga>>2]|0,e[(c[ca>>2]|0)+50>>1]|0)|0;if((c[ca>>2]|0)==(c[da>>2]|0))s=c[ga>>2]|0;else s=kA(c[E>>2]|0,c[_>>2]|0)|0;c[ha>>2]=s;d:do if((d[Y>>0]|0)!=0|(c[$>>2]|0)==5){if(!(d[(c[F>>2]|0)+42>>0]&32)){Rw(c[ka>>2]|0,113,c[V>>2]|0,c[ha>>2]|0)|0;if(!(a[Y>>0]|0))break;Vw(c[ka>>2]|0,79,c[ha>>2]|0,c[Q>>2]|0,c[L>>2]|0)|0;Fh(c[ka>>2]|0,-112);break}e:do if((c[ca>>2]|0)!=(c[da>>2]|0)){c[T>>2]=0;while(1){if((c[T>>2]|0)>=(e[(c[da>>2]|0)+50>>1]|0))break e;c[ma>>2]=(uA(c[ca>>2]|0,b[(c[(c[da>>2]|0)+4>>2]|0)+(c[T>>2]<<1)>>1]|0)|0)<<16>>16;Vw(c[ka>>2]|0,47,c[V>>2]|0,c[ma>>2]|0,(c[ha>>2]|0)+(c[T>>2]|0)|0)|0;c[T>>2]=(c[T>>2]|0)+1}}while(0);if(a[Y>>0]|0){D=Bz(c[ka>>2]|0)|0;c[P>>2]=D+(e[(c[da>>2]|0)+50>>1]|0);c[aa>>2]=78;c[fa>>2]=(a[(c[ca>>2]|0)+55>>0]&3|0)==2?c[ga>>2]|0:c[ha>>2]|0;c[T>>2]=0;while(1){if((c[T>>2]|0)>=(e[(c[da>>2]|0)+50>>1]|0))break d;c[ba>>2]=Dz(c[E>>2]|0,c[(c[(c[da>>2]|0)+32>>2]|0)+(c[T>>2]<<2)>>2]|0)|0;c[ma>>2]=b[(c[(c[da>>2]|0)+4>>2]|0)+(c[T>>2]<<1)>>1];if((c[T>>2]|0)==((e[(c[da>>2]|0)+50>>1]|0)-1|0)){c[P>>2]=c[Q>>2];c[aa>>2]=79}Uw(c[ka>>2]|0,c[aa>>2]|0,(c[L>>2]|0)+1+(c[ma>>2]|0)|0,c[P>>2]|0,(c[fa>>2]|0)+(c[T>>2]|0)|0,c[ba>>2]|0,-4)|0;Fh(c[ka>>2]|0,-112);c[T>>2]=(c[T>>2]|0)+1}}}while(0);switch(c[$>>2]|0){case 3:case 2:case 1:{Zz(c[E>>2]|0,c[$>>2]|0,c[ca>>2]|0);break}case 4:{Ez(c[ka>>2]|0,c[O>>2]|0)|0;break}default:{c[ea>>2]=0;EE(c[E>>2]|0);if(c[(c[S>>2]|0)+24>>2]&262144)c[ea>>2]=sC(c[E>>2]|0,c[F>>2]|0,109,0,0)|0;FE(c[E>>2]|0,c[F>>2]|0,c[ea>>2]|0,c[I>>2]|0,c[J>>2]|0,c[ha>>2]|0,c[_>>2]&65535,0,5,((c[ca>>2]|0)==(c[da>>2]|0)?1:0)&255,-1);c[ja>>2]=1}}Gz(c[ka>>2]|0,c[Q>>2]|0);nA(c[E>>2]|0,c[ga>>2]|0,e[(c[ca>>2]|0)+52>>1]|0);if((c[ha>>2]|0)!=(c[ga>>2]|0))nA(c[E>>2]|0,c[ha>>2]|0,c[_>>2]|0)}while(0);c[ca>>2]=c[(c[ca>>2]|0)+20>>2];c[Z>>2]=(c[Z>>2]|0)+1}if(!(c[X>>2]|0)){la=c[ja>>2]|0;ma=c[G>>2]|0;c[ma>>2]=la;i=na;return}Ez(c[ka>>2]|0,(c[X>>2]|0)+1|0)|0;Fz(c[ka>>2]|0,c[W>>2]|0);la=c[ja>>2]|0;ma=c[G>>2]|0;c[ma>>2]=la;i=na;return}function GC(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+112|0;l=O+108|0;m=O+104|0;n=O+100|0;o=O+96|0;p=O+92|0;q=O+88|0;v=O+84|0;D=O+80|0;z=O+76|0;M=O+72|0;C=O+68|0;I=O+64|0;E=O+60|0;t=O+56|0;r=O+52|0;y=O+48|0;x=O+44|0;u=O+40|0;K=O+36|0;A=O+32|0;B=O+28|0;J=O+24|0;L=O+20|0;F=O+16|0;H=O+12|0;s=O+8|0;G=O+4|0;w=O;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[q>>2]=k;c[v>>2]=c[c[l>>2]>>2];c[C>>2]=d[(c[l>>2]|0)+442>>0];if(!(c[(c[v>>2]|0)+24>>2]&524288)){i=O;return}c[z>>2]=Dh(c[v>>2]|0,c[(c[m>>2]|0)+64>>2]|0)|0;c[M>>2]=c[(c[(c[v>>2]|0)+16>>2]|0)+(c[z>>2]<<4)>>2];c[D>>2]=c[(c[m>>2]|0)+16>>2];a:while(1){if(!(c[D>>2]|0)){N=39;break}c[E>>2]=0;c[t>>2]=0;c[u>>2]=0;if(!(((c[p>>2]|0)!=0?(Td(c[c[m>>2]>>2]|0,c[(c[D>>2]|0)+8>>2]|0)|0)!=0:0)?(KC(c[m>>2]|0,c[D>>2]|0,c[p>>2]|0,c[q>>2]|0)|0)==0:0))N=7;do if((N|0)==7){N=0;if(a[(c[l>>2]|0)+442>>0]|0)c[I>>2]=pi(c[v>>2]|0,c[(c[D>>2]|0)+8>>2]|0,c[M>>2]|0)|0;else c[I>>2]=zh(c[l>>2]|0,0,c[(c[D>>2]|0)+8>>2]|0,c[M>>2]|0)|0;if((c[I>>2]|0)!=0?(cC(c[l>>2]|0,c[I>>2]|0,c[D>>2]|0,E,t)|0)==0:0){if(c[t>>2]|0)c[r>>2]=c[t>>2];else{c[y>>2]=c[(c[D>>2]|0)+36>>2];c[r>>2]=y}c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[(c[D>>2]|0)+20>>2]|0))break;if((c[(c[r>>2]|0)+(c[x>>2]<<2)>>2]|0)==(b[(c[m>>2]|0)+32>>1]|0))c[(c[r>>2]|0)+(c[x>>2]<<2)>>2]=-1;if(c[(c[v>>2]|0)+288>>2]|0){if(c[E>>2]|0)j=b[(c[(c[E>>2]|0)+4>>2]|0)+(c[x>>2]<<1)>>1]|0;else j=b[(c[I>>2]|0)+32>>1]|0;c[L>>2]=c[(c[(c[I>>2]|0)+4>>2]|0)+((j<<16>>16)*24|0)>>2];c[J>>2]=Oy(c[l>>2]|0,c[c[I>>2]>>2]|0,c[L>>2]|0,c[z>>2]|0)|0;c[u>>2]=(c[J>>2]|0)==2&1}c[x>>2]=(c[x>>2]|0)+1}yz(c[l>>2]|0,c[z>>2]|0,c[(c[I>>2]|0)+28>>2]|0,0,c[c[I>>2]>>2]|0);g=(c[l>>2]|0)+72|0;c[g>>2]=(c[g>>2]|0)+1;if(c[n>>2]|0)LC(c[l>>2]|0,c[z>>2]|0,c[I>>2]|0,c[E>>2]|0,c[D>>2]|0,c[r>>2]|0,c[n>>2]|0,-1,c[u>>2]|0);if((c[o>>2]|0)!=0?(MC(c[l>>2]|0,c[D>>2]|0)|0)==0:0)LC(c[l>>2]|0,c[z>>2]|0,c[I>>2]|0,c[E>>2]|0,c[D>>2]|0,c[r>>2]|0,c[o>>2]|0,1,c[u>>2]|0);Sf(c[v>>2]|0,c[t>>2]|0);break}if(!(c[C>>2]|0)){N=59;break a}if(d[(c[v>>2]|0)+65>>0]|0){N=59;break a}if(!(c[I>>2]|0)){c[K>>2]=Pw(c[l>>2]|0)|0;g=Bz(c[K>>2]|0)|0;c[A>>2]=g+(c[(c[D>>2]|0)+20>>2]|0)+1;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[(c[D>>2]|0)+20>>2]|0))break;c[B>>2]=(c[(c[D>>2]|0)+36+(c[x>>2]<<3)>>2]|0)+(c[n>>2]|0)+1;Rw(c[K>>2]|0,76,c[B>>2]|0,c[A>>2]|0)|0;c[x>>2]=(c[x>>2]|0)+1}Rw(c[K>>2]|0,135,d[(c[D>>2]|0)+24>>0]|0,-1)|0}}while(0);c[D>>2]=c[(c[D>>2]|0)+4>>2]}if((N|0)==39){c[D>>2]=Ex(c[m>>2]|0)|0;b:while(1){if(!(c[D>>2]|0)){N=59;break}c[F>>2]=0;c[s>>2]=0;if(!((c[p>>2]|0)!=0?(NC(c[m>>2]|0,c[D>>2]|0,c[p>>2]|0,c[q>>2]|0)|0)==0:0))N=43;do if((N|0)==43){N=0;if((((a[(c[D>>2]|0)+24>>0]|0)==0?(c[(c[v>>2]|0)+24>>2]&16777216|0)==0:0)?(c[(c[l>>2]|0)+416>>2]|0)==0:0)?(a[(c[l>>2]|0)+20>>0]|0)==0:0)break;if(cC(c[l>>2]|0,c[m>>2]|0,c[D>>2]|0,F,s)|0){if(!(c[C>>2]|0)){N=59;break b}if(d[(c[v>>2]|0)+65>>0]|0){N=59;break b}else break}c[H>>2]=Nv(c[v>>2]|0,0,0,0)|0;if(c[H>>2]|0){c[G>>2]=(c[H>>2]|0)+8;c[(c[G>>2]|0)+16>>2]=c[c[D>>2]>>2];c[(c[G>>2]|0)+8>>2]=c[c[c[D>>2]>>2]>>2];L=(c[(c[G>>2]|0)+16>>2]|0)+36|0;b[L>>1]=(b[L>>1]|0)+1<<16>>16;L=(c[l>>2]|0)+72|0;M=c[L>>2]|0;c[L>>2]=M+1;c[(c[G>>2]|0)+44>>2]=M;if(c[o>>2]|0)OC(c[l>>2]|0,c[H>>2]|0,c[m>>2]|0,c[F>>2]|0,c[D>>2]|0,c[s>>2]|0,c[o>>2]|0,-1);if((c[n>>2]|0)!=0?(c[w>>2]=d[(c[D>>2]|0)+25+((c[p>>2]|0)!=0&1)>>0],OC(c[l>>2]|0,c[H>>2]|0,c[m>>2]|0,c[F>>2]|0,c[D>>2]|0,c[s>>2]|0,c[n>>2]|0,1),((c[w>>2]|0)!=9?(a[(c[D>>2]|0)+24>>0]|0)==0:0)&(c[w>>2]|0)!=7):0)Bx(c[l>>2]|0);c[(c[G>>2]|0)+8>>2]=0;Yu(c[v>>2]|0,c[H>>2]|0)}Sf(c[v>>2]|0,c[s>>2]|0)}while(0);c[D>>2]=c[(c[D>>2]|0)+12>>2]}if((N|0)==59){i=O;return}}else if((N|0)==59){i=O;return}}function HC(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+64|0;o=E+52|0;p=E+48|0;q=E+44|0;r=E+40|0;s=E+36|0;t=E+32|0;u=E+28|0;v=E+24|0;w=E+20|0;D=E+16|0;z=E+12|0;A=E+57|0;B=E+8|0;C=E+4|0;y=E;x=E+56|0;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[u>>2]=l;c[v>>2]=m;c[w>>2]=n;a[x>>0]=0;c[D>>2]=Pw(c[o>>2]|0)|0;c[y>>2]=0;c[z>>2]=c[(c[p>>2]|0)+8>>2];while(1){if(!(c[z>>2]|0))break;if(c[(c[t>>2]|0)+(c[y>>2]<<2)>>2]|0){a[x>>0]=1;if(c[(c[z>>2]|0)+36>>2]|0){j=c[D>>2]|0;n=c[(c[t>>2]|0)+(c[y>>2]<<2)>>2]|0;Rw(j,76,n,(Bz(c[D>>2]|0)|0)+2|0)|0}Rw(c[D>>2]|0,110,(c[r>>2]|0)+(c[y>>2]|0)|0,c[(c[t>>2]|0)+(c[y>>2]<<2)>>2]|0)|0;a[A>>0]=0;a[A>>0]=(c[w>>2]|0)!=0?16:0;if((a[(c[z>>2]|0)+55>>0]&3|0)==2?(d[(c[p>>2]|0)+42>>0]&32|0)!=0:0)a[A>>0]=d[A>>0]|1;Fh(c[D>>2]|0,a[A>>0]|0)}c[z>>2]=c[(c[z>>2]|0)+20>>2];c[y>>2]=(c[y>>2]|0)+1}if(d[(c[p>>2]|0)+42>>0]&32){i=E;return}c[B>>2]=(c[s>>2]|0)+1;c[C>>2]=Wz(c[o>>2]|0)|0;Vw(c[D>>2]|0,49,c[B>>2]|0,b[(c[p>>2]|0)+34>>1]|0,c[C>>2]|0)|0;if(!(a[x>>0]|0))AC(c[D>>2]|0,c[p>>2]|0,0);CA(c[o>>2]|0,c[B>>2]|0,b[(c[p>>2]|0)+34>>1]|0);if(a[(c[o>>2]|0)+18>>0]|0)a[A>>0]=0;else{a[A>>0]=1;a[A>>0]=d[A>>0]|((c[u>>2]|0)!=0?4:2)}if(c[v>>2]|0)a[A>>0]=d[A>>0]|8;if(c[w>>2]|0)a[A>>0]=d[A>>0]|16;Vw(c[D>>2]|0,75,c[q>>2]|0,c[C>>2]|0,c[s>>2]|0)|0;if(!(a[(c[o>>2]|0)+18>>0]|0))Ih(c[D>>2]|0,-1,c[c[p>>2]>>2]|0,0);Fh(c[D>>2]|0,a[A>>0]|0);i=E;return}function IC(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[(c[b>>2]|0)+412>>2]|0)){i=d;return}JC(c[b>>2]|0);i=d;return}function JC(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+28|0;j=m+24|0;l=m+20|0;f=m+16|0;e=m+12|0;k=m+8|0;g=m+4|0;h=m;c[d>>2]=b;c[l>>2]=c[(c[d>>2]|0)+8>>2];c[f>>2]=c[c[d>>2]>>2];c[j>>2]=c[(c[d>>2]|0)+412>>2];while(1){if(!(c[j>>2]|0)){d=5;break}c[k>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[(c[j>>2]|0)+8>>2]<<4);c[h>>2]=c[(c[j>>2]|0)+12>>2];c[g>>2]=Wz(c[d>>2]|0)|0;zz(c[d>>2]|0,0,c[(c[j>>2]|0)+8>>2]|0,c[(c[(c[k>>2]|0)+12>>2]|0)+72>>2]|0,55);c[e>>2]=Gh(c[l>>2]|0,5,35196,0)|0;if(!(c[e>>2]|0)){d=5;break}c[(c[e>>2]|0)+4>>2]=(c[h>>2]|0)+1;c[(c[e>>2]|0)+20+8>>2]=(c[h>>2]|0)+1;c[(c[e>>2]|0)+40+4>>2]=(c[h>>2]|0)-1;c[(c[e>>2]|0)+40+12>>2]=c[g>>2];c[(c[e>>2]|0)+60+8>>2]=c[g>>2];c[(c[e>>2]|0)+60+12>>2]=(c[h>>2]|0)+1;a[(c[e>>2]|0)+60+3>>0]=8;_z(c[d>>2]|0,c[g>>2]|0);c[j>>2]=c[c[j>>2]>>2]}if((d|0)==5){i=m;return}}function KC(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;n=o+24|0;g=o+20|0;h=o+16|0;j=o+12|0;k=o+8|0;l=o+4|0;m=o;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0)){g=8;break}c[m>>2]=c[(c[h>>2]|0)+36+(c[l>>2]<<3)>>2];if((c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0)>=0){g=4;break}if((c[k>>2]|0)!=0?(c[m>>2]|0)==(b[(c[g>>2]|0)+32>>1]|0):0){g=6;break}c[l>>2]=(c[l>>2]|0)+1}if((g|0)==4){c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}else if((g|0)==6){c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}else if((g|0)==8){c[n>>2]=0;n=c[n>>2]|0;i=o;return n|0}return 0}function fi(d,f,g,h,j,k,l,m,n){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+64|0;C=D;p=D+56|0;q=D+52|0;r=D+48|0;s=D+44|0;t=D+40|0;u=D+36|0;v=D+32|0;w=D+28|0;x=D+24|0;y=D+20|0;B=D+16|0;A=D+12|0;z=D+8|0;o=D+4|0;c[q>>2]=d;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=j;c[v>>2]=k;c[w>>2]=l;c[x>>2]=m;c[y>>2]=n;do if(c[r>>2]|0){if((c[v>>2]|0)!=0?(c[x>>2]|0)!=0|(c[w>>2]|0)!=0:0)break;if(((c[v>>2]|0)==0&(c[x>>2]|0)!=0^1|(c[w>>2]|0)!=0?!((((c[v>>2]|0)!=0|(c[x>>2]|0)!=0)^1)&(c[w>>2]|0)!=0|(c[s>>2]|0)<-1|(c[s>>2]|0)>127):0)?(f=If(c[r>>2]|0)|0,c[A>>2]=f,255>=(f|0)):0){c[z>>2]=c[t>>2]&2048;c[t>>2]=c[t>>2]&7;do if((c[t>>2]|0)!=4){if((c[t>>2]|0)==5){c[o>>2]=fi(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,1|c[z>>2],c[u>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0)|0;if(!(c[o>>2]|0))c[o>>2]=fi(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,2|c[z>>2],c[u>>2]|0,c[v>>2]|0,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0)|0;if(!(c[o>>2]|0)){c[t>>2]=3;break}c[p>>2]=c[o>>2];C=c[p>>2]|0;i=D;return C|0}}else c[t>>2]=(a[960]|0)==0?3:2;while(0);c[B>>2]=gi(c[q>>2]|0,c[r>>2]|0,c[A>>2]|0,c[s>>2]|0,c[t>>2]&255,0)|0;do if(((c[B>>2]|0)!=0?(e[(c[B>>2]|0)+2>>1]&3|0)==(c[t>>2]|0):0)?(b[c[B>>2]>>1]|0)==(c[s>>2]|0):0){d=c[q>>2]|0;if(!(c[(c[q>>2]|0)+148>>2]|0)){Oh(d);break}hg(d,5,27111,C);c[p>>2]=5;C=c[p>>2]|0;i=D;return C|0}while(0);c[B>>2]=gi(c[q>>2]|0,c[r>>2]|0,c[A>>2]|0,c[s>>2]|0,c[t>>2]&255,1)|0;if(!(c[B>>2]|0)){c[p>>2]=7;C=c[p>>2]|0;i=D;return C|0}bu(c[q>>2]|0,c[B>>2]|0);if(c[y>>2]|0){C=c[y>>2]|0;c[C>>2]=(c[C>>2]|0)+1}c[(c[B>>2]|0)+28>>2]=c[y>>2];b[(c[B>>2]|0)+2>>1]=e[(c[B>>2]|0)+2>>1]&3|c[z>>2];c[(c[B>>2]|0)+12>>2]=(c[v>>2]|0)!=0?c[v>>2]|0:c[w>>2]|0;c[(c[B>>2]|0)+16>>2]=c[x>>2];c[(c[B>>2]|0)+4>>2]=c[u>>2];b[c[B>>2]>>1]=c[s>>2];c[p>>2]=0;C=c[p>>2]|0;i=D;return C|0}}while(0);c[p>>2]=Kf(134386)|0;C=c[p>>2]|0;i=D;return C|0}function gi(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+64|0;l=z+44|0;m=z+40|0;n=z+36|0;o=z+32|0;p=z+28|0;q=z+49|0;r=z+48|0;u=z+24|0;v=z+20|0;s=z+16|0;t=z+12|0;x=z+8|0;w=z+4|0;y=z;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;a[q>>0]=j;a[r>>0]=k;c[v>>2]=0;c[s>>2]=0;c[t>>2]=((d[18477+(d[c[n>>2]>>0]|0)>>0]|0)+(c[o>>2]|0)|0)%23|0;c[u>>2]=Wt((c[m>>2]|0)+340|0,c[t>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;while(1){if(!(c[u>>2]|0))break;c[x>>2]=Xt(c[u>>2]|0,c[p>>2]|0,a[q>>0]|0)|0;if((c[x>>2]|0)>(c[s>>2]|0)){c[v>>2]=c[u>>2];c[s>>2]=c[x>>2]}c[u>>2]=c[(c[u>>2]|0)+8>>2]}a:do if(!(a[r>>0]|0)){if((c[v>>2]|0)!=0?(c[(c[m>>2]|0)+24>>2]&2097152|0)==0:0)break;c[w>>2]=1080;c[s>>2]=0;c[u>>2]=Wt(c[w>>2]|0,c[t>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;while(1){if(!(c[u>>2]|0))break a;c[y>>2]=Xt(c[u>>2]|0,c[p>>2]|0,a[q>>0]|0)|0;if((c[y>>2]|0)>(c[s>>2]|0)){c[v>>2]=c[u>>2];c[s>>2]=c[y>>2]}c[u>>2]=c[(c[u>>2]|0)+8>>2]}}while(0);if((d[r>>0]|0)!=0&(c[s>>2]|0)<6?(f=ph(c[m>>2]|0,32+(c[o>>2]|0)+1|0,0)|0,c[v>>2]=f,(f|0)!=0):0){c[(c[v>>2]|0)+20>>2]=(c[v>>2]|0)+32;b[c[v>>2]>>1]=c[p>>2];b[(c[v>>2]|0)+2>>1]=d[q>>0]|0;iR(c[(c[v>>2]|0)+20>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;a[(c[(c[v>>2]|0)+20>>2]|0)+(c[o>>2]|0)>>0]=0;Yt((c[m>>2]|0)+340|0,c[v>>2]|0)}do if(c[v>>2]|0){if((c[(c[v>>2]|0)+12>>2]|0)==0?(d[r>>0]|0)==0:0)break;c[l>>2]=c[v>>2];f=c[l>>2]|0;i=z;return f|0}while(0);c[l>>2]=0;f=c[l>>2]|0;i=z;return f|0}function hi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e;g=e+20|0;j=e+8|0;f=e+4|0;c[g>>2]=a;c[e+16>>2]=b;c[e+12>>2]=d;c[j>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+20>>2];c[h>>2]=c[j>>2];c[f>>2]=Od(27060,h)|0;je(c[g>>2]|0,c[f>>2]|0,-1);Kd(c[f>>2]|0);i=e;return}function ii(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;j=h+12|0;f=h+8|0;g=h+4|0;k=h;c[j>>2]=a;c[f>>2]=b;c[g>>2]=d;c[k>>2]=e;if((c[k>>2]|0)<(c[j>>2]|0)){i=h;return 0}Sj();Bf(c[f>>2]|0,c[g>>2]|0)|0;Tj();i=h;return 0}function ji(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;h=j+8|0;g=j+4|0;f=j;c[d>>2]=a;c[e>>2]=b;c[h>>2]=-1;if(!(c[e>>2]|0)){h=c[h>>2]|0;i=j;return h|0}c[f>>2]=If(c[e>>2]|0)|0;c[h>>2]=(c[(c[d>>2]|0)+20>>2]|0)-1;c[g>>2]=(c[(c[d>>2]|0)+16>>2]|0)+(c[h>>2]<<4);while(1){if((c[h>>2]|0)<0){d=7;break}b=c[f>>2]|0;if((b|0)==(If(c[c[g>>2]>>2]|0)|0)?0==(Td(c[c[g>>2]>>2]|0,c[e>>2]|0)|0):0){d=7;break}c[h>>2]=(c[h>>2]|0)+-1;c[g>>2]=(c[g>>2]|0)+-16}if((d|0)==7){h=c[h>>2]|0;i=j;return h|0}return 0}function ki(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;o=p+8|0;n=p+4|0;m=p;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[o>>2]=0;c[m>>2]=0;c[n>>2]=0;while(1){if(!((c[n>>2]|0)<(c[(c[g>>2]|0)+20>>2]|0)?(c[o>>2]|0)==0:0))break;if(((c[h>>2]|0)==10?1:(c[n>>2]|0)==(c[h>>2]|0))?(c[o>>2]=Ut(c[(c[(c[g>>2]|0)+16>>2]|0)+(c[n>>2]<<4)+4>>2]|0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0)|0,c[k>>2]=0,c[l>>2]=0,(c[o>>2]|0)==5):0){c[m>>2]=1;c[o>>2]=0}c[n>>2]=(c[n>>2]|0)+1}i=p;return((c[o>>2]|0)==0&(c[m>>2]|0)!=0?5:c[o>>2]|0)|0}function li(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;if(!(d[(c[e>>2]|0)+65>>0]|0)){i=f;return}if(c[(c[e>>2]|0)+160>>2]|0){i=f;return}a[(c[e>>2]|0)+65>>0]=0;c[(c[e>>2]|0)+240>>2]=0;b=(c[e>>2]|0)+248|0;c[b>>2]=(c[b>>2]|0)+-1;i=f;return}function mi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;p=s;h=s+40|0;j=s+36|0;k=s+32|0;l=s+28|0;m=s+24|0;n=s+20|0;o=s+16|0;g=s+12|0;r=s+8|0;q=s+4|0;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[r>>2]=0;c[q>>2]=0;c[c[k>>2]>>2]=0;c[o>>2]=Dd()|0;if(c[o>>2]|0){c[h>>2]=c[o>>2];r=c[h>>2]|0;i=s;return r|0}if(!(1<<(c[l>>2]&7)&70)){c[h>>2]=Kf(135519)|0;r=c[h>>2]|0;i=s;return r|0}do if(c[3]|0){if(c[l>>2]&32768){c[g>>2]=0;break}if(c[l>>2]&65536){c[g>>2]=1;break}else{c[g>>2]=c[4];break}}else c[g>>2]=0;while(0);if(!(c[l>>2]&262144)){if(c[57]|0)c[l>>2]=c[l>>2]|131072}else c[l>>2]=c[l>>2]&-131073;c[l>>2]=c[l>>2]&-655129;c[n>>2]=ig(536,0)|0;do if(c[n>>2]|0){if((c[g>>2]|0)!=0?(c[(c[n>>2]|0)+12>>2]=8,(c[(c[n>>2]|0)+12>>2]|0)==0):0){Kd(c[n>>2]|0);c[n>>2]=0;break}c[(c[n>>2]|0)+56>>2]=255;c[(c[n>>2]|0)+20>>2]=2;c[(c[n>>2]|0)+76>>2]=-264537850;c[(c[n>>2]|0)+16>>2]=(c[n>>2]|0)+460;e=(c[n>>2]|0)+88|0;g=1536;d=e+48|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));c[(c[n>>2]|0)+88+44>>2]=0;a[(c[n>>2]|0)+63>>0]=1;a[(c[n>>2]|0)+68>>0]=-1;d=184;b=c[d+4>>2]|0;f=(c[n>>2]|0)+40|0;c[f>>2]=c[d>>2];c[f+4>>2]=b;c[(c[n>>2]|0)+72>>2]=0;c[(c[n>>2]|0)+136>>2]=2147483647;f=(c[n>>2]|0)+24|0;c[f>>2]=c[f>>2]|9437280;uj((c[n>>2]|0)+432|0);uj((c[n>>2]|0)+312|0);ni(c[n>>2]|0,35690,1,0,141,0)|0;ni(c[n>>2]|0,35690,3,0,141,0)|0;ni(c[n>>2]|0,35690,2,0,141,0)|0;ni(c[n>>2]|0,21290,1,0,142,0)|0;ni(c[n>>2]|0,21297,1,1,141,0)|0;if(!(a[(c[n>>2]|0)+65>>0]|0)){f=Mj(c[n>>2]|0,1,35690,0)|0;c[(c[n>>2]|0)+8>>2]=f; -c[(c[n>>2]|0)+48>>2]=c[l>>2];c[o>>2]=Wj(c[m>>2]|0,c[j>>2]|0,l,c[n>>2]|0,r,q)|0;if(c[o>>2]|0){if((c[o>>2]|0)==7)jh(c[n>>2]|0);j=c[n>>2]|0;l=c[o>>2]|0;m=(c[q>>2]|0)!=0?19255:0;c[p>>2]=c[q>>2];hg(j,l,m,p);Kd(c[q>>2]|0);break}c[o>>2]=Xj(c[c[n>>2]>>2]|0,c[r>>2]|0,c[n>>2]|0,(c[(c[n>>2]|0)+16>>2]|0)+4|0,0,c[l>>2]|256)|0;if(c[o>>2]|0){if((c[o>>2]|0)==3082)c[o>>2]=7;jg(c[n>>2]|0,c[o>>2]|0);break}kg(c[(c[(c[n>>2]|0)+16>>2]|0)+4>>2]|0);q=Yj(c[n>>2]|0,c[(c[(c[n>>2]|0)+16>>2]|0)+4>>2]|0)|0;c[(c[(c[n>>2]|0)+16>>2]|0)+12>>2]=q;if(!(a[(c[n>>2]|0)+65>>0]|0))a[(c[n>>2]|0)+62>>0]=a[(c[(c[(c[n>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;q=Yj(c[n>>2]|0,0)|0;c[(c[(c[n>>2]|0)+16>>2]|0)+16+12>>2]=q;c[c[(c[n>>2]|0)+16>>2]>>2]=21303;a[(c[(c[n>>2]|0)+16>>2]|0)+8>>0]=3;c[(c[(c[n>>2]|0)+16>>2]|0)+16>>2]=19536;a[(c[(c[n>>2]|0)+16>>2]|0)+16+8>>0]=1;c[(c[n>>2]|0)+76>>2]=-1607883113;if(!(a[(c[n>>2]|0)+65>>0]|0)){jg(c[n>>2]|0,0);Zj(c[n>>2]|0);c[o>>2]=Cf(c[n>>2]|0)|0;if((c[o>>2]|0)==0?(_j(c[n>>2]|0),c[o>>2]=Cf(c[n>>2]|0)|0,(c[o>>2]|0)!=0):0)break;if((c[o>>2]|0)==0?(a[(c[n>>2]|0)+65>>0]|0)==0:0)c[o>>2]=$j(c[n>>2]|0)|0;if(c[o>>2]|0)jg(c[n>>2]|0,c[o>>2]|0);ci(c[n>>2]|0,0,c[9]|0,c[10]|0)|0;yf(c[n>>2]|0,1e3)|0}}}while(0);c[o>>2]=Cf(c[n>>2]|0)|0;if((c[o>>2]|0)!=7){if(c[o>>2]|0)c[(c[n>>2]|0)+76>>2]=1266094736}else{rf(c[n>>2]|0)|0;c[n>>2]=0}c[c[k>>2]>>2]=c[n>>2];Kd(c[r>>2]|0);c[h>>2]=c[o>>2]&255;r=c[h>>2]|0;i=s;return r|0}function ni(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+64|0;w=x;k=x+44|0;l=x+40|0;m=x+36|0;n=x+48|0;o=x+32|0;p=x+28|0;q=x+24|0;v=x+20|0;s=x+16|0;r=x+12|0;t=x+8|0;u=x+4|0;c[l>>2]=b;c[m>>2]=e;a[n>>0]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[s>>2]=d[n>>0];if((c[s>>2]|0)==4|(c[s>>2]|0)==8)c[s>>2]=(a[960]|0)==0?3:2;if((c[s>>2]|0)<1|(c[s>>2]|0)>3){c[k>>2]=Kf(135070)|0;w=c[k>>2]|0;i=x;return w|0}c[v>>2]=Mj(c[l>>2]|0,c[s>>2]&255,c[m>>2]|0,0)|0;a:do if((c[v>>2]|0)!=0?(c[(c[v>>2]|0)+12>>2]|0)!=0:0){b=c[l>>2]|0;if(c[(c[l>>2]|0)+148>>2]|0){hg(b,5,21222,w);c[k>>2]=5;w=c[k>>2]|0;i=x;return w|0}Oh(b);if((d[(c[v>>2]|0)+4>>0]&-9|0)==(c[s>>2]|0)){c[r>>2]=nj((c[l>>2]|0)+432|0,c[m>>2]|0)|0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=3)break a;c[u>>2]=(c[r>>2]|0)+((c[t>>2]|0)*20|0);if((d[(c[u>>2]|0)+4>>0]|0)==(d[(c[v>>2]|0)+4>>0]|0)){if(c[(c[u>>2]|0)+16>>2]|0)Qb[c[(c[u>>2]|0)+16>>2]&255](c[(c[u>>2]|0)+8>>2]|0);c[(c[u>>2]|0)+12>>2]=0}c[t>>2]=(c[t>>2]|0)+1}}}while(0);c[v>>2]=Mj(c[l>>2]|0,c[s>>2]&255,c[m>>2]|0,1)|0;if(!(c[v>>2]|0)){c[k>>2]=7;w=c[k>>2]|0;i=x;return w|0}else{c[(c[v>>2]|0)+12>>2]=c[p>>2];c[(c[v>>2]|0)+8>>2]=c[o>>2];c[(c[v>>2]|0)+16>>2]=c[q>>2];a[(c[v>>2]|0)+4>>0]=c[s>>2]|d[n>>0]&8;jg(c[l>>2]|0,0);c[k>>2]=0;w=c[k>>2]|0;i=x;return w|0}return 0}function oi(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;j=l+8|0;k=l+4|0;h=l;c[f>>2]=b;c[g>>2]=d;c[h>>2]=((c[(c[f>>2]|0)+24>>2]&2|0)!=0^1)&1;c[k>>2]=0;a[(c[f>>2]|0)+140+5>>0]=1;a[(c[f>>2]|0)+62>>0]=a[(c[(c[(c[f>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;c[j>>2]=0;while(1){if(c[k>>2]|0)break;if((c[j>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;if(!((c[j>>2]|0)==1?1:((e[(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+12>>2]|0)+78>>1]|0)&1|0)==1)?(c[k>>2]=qj(c[f>>2]|0,c[j>>2]|0,c[g>>2]|0)|0,(c[k>>2]|0)!=0):0)rj(c[f>>2]|0,c[j>>2]|0);c[j>>2]=(c[j>>2]|0)+1}if(((c[k>>2]|0)==0?((e[(c[(c[(c[f>>2]|0)+16>>2]|0)+16+12>>2]|0)+78>>1]|0)&1|0)!=1:0)?(c[k>>2]=qj(c[f>>2]|0,1,c[g>>2]|0)|0,(c[k>>2]|0)!=0):0)rj(c[f>>2]|0,1);a[(c[f>>2]|0)+140+5>>0]=0;if(!((c[k>>2]|0)==0&(c[h>>2]|0)!=0)){k=c[k>>2]|0;i=l;return k|0}sj(c[f>>2]|0);k=c[k>>2]|0;i=l;return k|0}function pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+20|0;f=m+16|0;g=m+12|0;k=m+8|0;h=m+4|0;j=m;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[k>>2]=0;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0)){l=7;break}b=c[h>>2]|0;c[j>>2]=(c[h>>2]|0)<2?b^1:b;if(!((c[g>>2]|0)!=0?(Td(c[g>>2]|0,c[(c[(c[e>>2]|0)+16>>2]|0)+(c[j>>2]<<4)>>2]|0)|0)!=0:0))l=5;if((l|0)==5?(l=0,c[k>>2]=nj((c[(c[(c[e>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+12>>2]|0)+8|0,c[f>>2]|0)|0,(c[k>>2]|0)!=0):0){l=7;break}c[h>>2]=(c[h>>2]|0)+1}if((l|0)==7){i=m;return c[k>>2]|0}return 0}function qi(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;do if(Td(c[d>>2]|0,20751)|0){if(!(Td(c[d>>2]|0,20759)|0)){c[b>>2]=1;break}if(!(Td(c[d>>2]|0,20765)|0)){c[b>>2]=1;break}else{c[b>>2]=0;break}}else c[b>>2]=1;while(0);i=e;return c[b>>2]|0}function ri(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Yb[c[(c[f>>2]|0)+60>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function si(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h+8|0;d=h+4|0;g=h;c[f>>2]=a;c[d>>2]=b;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0)){d=8;break}if(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+4>>2]|0){if(!(c[d>>2]|0)){d=6;break}if(!(Td(c[d>>2]|0,c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2]|0)|0)){d=6;break}}c[g>>2]=(c[g>>2]|0)+1}if((d|0)==6){c[e>>2]=c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+4>>2];g=c[e>>2]|0;i=h;return g|0}else if((d|0)==8){c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}return 0}function ti(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[b>>2]>>2]|0}function ui(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=c[d>>2]|0;if(c[(c[d>>2]|0)+216>>2]|0){d=mj(c[a+216>>2]|0)|0;i=b;return d|0}else{d=c[a+68>>2]|0;i=b;return d|0}return 0}function vi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;d=Ob[c[(c[c[h>>2]>>2]|0)+40>>2]&255](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return d|0}function wi(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[68];if(!(c[d>>2]|0)){d=0;i=e;return d|0}d=Tb[c[d>>2]&255](c[b>>2]|0)|0;i=e;return d|0}function xi(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+32|0;h=o+24|0;p=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[p>>2]=a;c[j>>2]=d;c[k>>2]=f;c[l>>2]=g;c[n>>2]=0;c[m>>2]=c[(c[p>>2]|0)+4>>2];kg(c[p>>2]|0);if((e[(c[m>>2]|0)+22>>1]|0)&2){c[h>>2]=8;p=c[h>>2]|0;i=o;return p|0}if((c[k>>2]|0)<0)c[k>>2]=(c[(c[m>>2]|0)+32>>2]|0)-(c[(c[m>>2]|0)+36>>2]|0);if((c[j>>2]|0)>=512&(c[j>>2]|0)<=65536?((c[j>>2]|0)-1&c[j>>2]|0)==0:0){c[(c[m>>2]|0)+32>>2]=c[j>>2];Pi(c[m>>2]|0)}c[n>>2]=Qi(c[c[m>>2]>>2]|0,(c[m>>2]|0)+32|0,c[k>>2]|0)|0;c[(c[m>>2]|0)+36>>2]=(c[(c[m>>2]|0)+32>>2]|0)-(c[k>>2]&65535);if(c[l>>2]|0){p=(c[m>>2]|0)+22|0;b[p>>1]=e[p>>1]|0|2}c[h>>2]=c[n>>2];p=c[h>>2]|0;i=o;return p|0}function yi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;c[d>>2]=27;Oi(c[g>>2]|0,c[f>>2]|0,d)|0;i=e;return c[d>>2]|0}function zi(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;Mi(8,c[b>>2]|0);if((c[76]|0)!=0?(c[51]|0)>=(c[b>>2]|0):0){c[d>>2]=c[75];c[75]=c[c[75]>>2];c[76]=(c[76]|0)+-1;Ni(3,1);d=c[d>>2]|0;i=e;return d|0}a=c[b>>2]|0;c[d>>2]=_f(a,((a|0)<0)<<31>>31)|0;if(!((c[2]|0)!=0&(c[d>>2]|0)!=0)){d=c[d>>2]|0;i=e;return d|0}Ni(4,$f(c[d>>2]|0)|0);d=c[d>>2]|0;i=e;return d|0}function Ai(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f+4|0;d=f;c[b>>2]=a;if(!(c[b>>2]|0)){i=f;return}if((c[b>>2]|0)>>>0>=(c[50]|0)>>>0?(c[b>>2]|0)>>>0<(c[74]|0)>>>0:0){c[e>>2]=c[b>>2];c[c[e>>2]>>2]=c[75];c[75]=c[e>>2];c[76]=(c[76]|0)+1;ag(3,1);i=f;return}if(c[2]|0){c[d>>2]=$f(c[b>>2]|0)|0;ag(4,c[d>>2]|0);ag(0,c[d>>2]|0);ag(9,1);Qb[c[48>>2]&255](c[b>>2]|0);i=f;return}else{Qb[c[48>>2]&255](c[b>>2]|0);i=f;return}}function Bi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e;f=e+4|0;c[g>>2]=b;a[f>>0]=d;b=((Ji(c[g>>2]|0,1,a[f>>0]|0)|0)&255|0)!=0&255;i=e;return b|0}function Ci(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m+24|0;f=m+20|0;g=m+16|0;k=m;h=m+12|0;j=m+8|0;c[f>>2]=b;c[g>>2]=e;do if((a[c[f>>2]>>0]|0)==48){if((a[(c[f>>2]|0)+1>>0]|0)!=120?(a[(c[f>>2]|0)+1>>0]|0)!=88:0)break;if(d[19267+(d[(c[f>>2]|0)+2>>0]|0)>>0]&8){b=k;c[b>>2]=0;c[b+4>>2]=0;c[h>>2]=2;while(1){e=c[h>>2]|0;if((a[(c[f>>2]|0)+(c[h>>2]|0)>>0]|0)!=48)break;c[h>>2]=e+1}c[j>>2]=e;while(1){if(!(d[19267+(d[(c[f>>2]|0)+(c[j>>2]|0)>>0]|0)>>0]&8))break;b=k;b=rR(c[b>>2]|0,c[b+4>>2]|0,16,0)|0;e=C;e=gR(b|0,e|0,(Gi(a[(c[f>>2]|0)+(c[j>>2]|0)>>0]|0)|0)&255|0,0)|0;b=k;c[b>>2]=e;c[b+4>>2]=C;c[j>>2]=(c[j>>2]|0)+1}g=c[g>>2]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];if(!(a[(c[f>>2]|0)+(c[j>>2]|0)>>0]|0))e=((c[j>>2]|0)-(c[h>>2]|0)|0)<=16;else e=0;c[l>>2]=e?0:1;l=c[l>>2]|0;i=m;return l|0}}while(0);j=c[f>>2]|0;k=c[g>>2]|0;c[l>>2]=Hi(j,k,If(c[f>>2]|0)|0,1)|0;l=c[l>>2]|0;i=m;return l|0}function Di(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Fi(c[c[(c[d>>2]|0)+4>>2]>>2]|0,1)|0;i=b;return a|0}function Ei(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return((e[(c[(c[b>>2]|0)+4>>2]|0)+22>>1]|0)&1|0)!=0|0}function Fi(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f+4|0;g=f;c[e>>2]=a;c[g>>2]=b;if((c[g>>2]|0)!=0?(d[(c[e>>2]|0)+16>>0]|0|0)!=0:0){g=19266;i=f;return g|0}g=c[(c[e>>2]|0)+176>>2]|0;i=f;return g|0}function Gi(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;c[b>>2]=(c[b>>2]|0)+((1&c[b>>2]>>6)*9|0);i=d;return c[b>>2]&15|0}function Hi(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+64|0;l=w+48|0;m=w+44|0;n=w+40|0;h=w+36|0;j=w+52|0;q=w+32|0;k=w;r=w+28|0;p=w+24|0;o=w+20|0;s=w+16|0;u=w+12|0;t=w+8|0;c[m>>2]=b;c[n>>2]=e;c[h>>2]=f;a[j>>0]=g;b=k;c[b>>2]=0;c[b+4>>2]=0;c[r>>2]=0;c[o>>2]=0;c[s>>2]=0;c[t>>2]=(c[m>>2]|0)+(c[h>>2]|0);if((d[j>>0]|0)==1)c[q>>2]=1;else{c[q>>2]=2;c[p>>2]=3-(d[j>>0]|0);while(1){if((c[p>>2]|0)>=(c[h>>2]|0))break;if(a[(c[m>>2]|0)+(c[p>>2]|0)>>0]|0)break;c[p>>2]=(c[p>>2]|0)+2}c[s>>2]=(c[p>>2]|0)<(c[h>>2]|0)&1;c[t>>2]=(c[m>>2]|0)+(c[p>>2]|0)+(d[j>>0]|0)+-3;c[m>>2]=(c[m>>2]|0)+(d[j>>0]&1)}while(1){if((c[m>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;if(!(d[19267+(d[c[m>>2]>>0]|0)>>0]&1))break;c[m>>2]=(c[m>>2]|0)+(c[q>>2]|0)}do if((c[m>>2]|0)>>>0<(c[t>>2]|0)>>>0){if((a[c[m>>2]>>0]|0)==45){c[r>>2]=1;c[m>>2]=(c[m>>2]|0)+(c[q>>2]|0);break}if((a[c[m>>2]>>0]|0)==43)c[m>>2]=(c[m>>2]|0)+(c[q>>2]|0)}while(0);c[u>>2]=c[m>>2];while(1){if((c[m>>2]|0)>>>0>=(c[t>>2]|0)>>>0)break;if((a[c[m>>2]>>0]|0)!=48)break;c[m>>2]=(c[m>>2]|0)+(c[q>>2]|0)}c[p>>2]=0;while(1){if(((c[m>>2]|0)+(c[p>>2]|0)|0)>>>0<(c[t>>2]|0)>>>0?(b=a[(c[m>>2]|0)+(c[p>>2]|0)>>0]|0,c[o>>2]=b,(b|0)>=48):0)h=(c[o>>2]|0)<=57;else h=0;g=k;j=c[g>>2]|0;g=c[g+4>>2]|0;if(!h)break;b=rR(j|0,g|0,10,0)|0;e=c[o>>2]|0;e=gR(b|0,C|0,e|0,((e|0)<0)<<31>>31|0)|0;e=fR(e|0,C|0,48,0)|0;b=k;c[b>>2]=e;c[b+4>>2]=C;c[p>>2]=(c[p>>2]|0)+(c[q>>2]|0)}f=(c[r>>2]|0)!=0;do if(!(g>>>0>2147483647|(g|0)==2147483647&j>>>0>4294967295)){j=k;h=c[j>>2]|0;j=c[j+4>>2]|0;if(f){k=fR(0,0,h|0,j|0)|0;n=c[n>>2]|0;c[n>>2]=k;c[n+4>>2]=C;break}else{n=c[n>>2]|0;c[n>>2]=h;c[n+4>>2]=j;break}}else{n=c[n>>2]|0;c[n>>2]=f?0:-1;c[n+4>>2]=f?-2147483648:2147483647}while(0);if(!((c[o>>2]|0)!=0?((c[m>>2]|0)+(c[p>>2]|0)|0)>>>0<(c[t>>2]|0)>>>0:0))v=33;do if((v|0)==33){if((c[p>>2]|0)==0?(c[u>>2]|0)==(c[m>>2]|0):0)break;if(!((c[s>>2]|0)!=0?1:(c[p>>2]|0)>((c[q>>2]|0)*19|0))){if((c[p>>2]|0)<((c[q>>2]|0)*19|0)){c[l>>2]=0;v=c[l>>2]|0;i=w;return v|0}c[o>>2]=Ii(c[m>>2]|0,c[q>>2]|0)|0;if((c[o>>2]|0)<0){c[l>>2]=0;v=c[l>>2]|0;i=w;return v|0}if((c[o>>2]|0)>0){c[l>>2]=1;v=c[l>>2]|0;i=w;return v|0}else{c[l>>2]=(c[r>>2]|0)!=0?0:2;v=c[l>>2]|0;i=w;return v|0}}}while(0);c[l>>2]=1;v=c[l>>2]|0;i=w;return v|0}function Ii(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[e>>2]=b;c[f>>2]=d;c[g>>2]=0;c[j>>2]=19631;c[h>>2]=0;while(1){if(!((c[g>>2]|0)==0?(c[h>>2]|0)<18:0))break;b=_(c[h>>2]|0,c[f>>2]|0)|0;c[g>>2]=((a[(c[e>>2]|0)+b>>0]|0)-(a[(c[j>>2]|0)+(c[h>>2]|0)>>0]|0)|0)*10;c[h>>2]=(c[h>>2]|0)+1}if(c[g>>2]|0){b=c[g>>2]|0;i=k;return b|0}c[g>>2]=(a[(c[e>>2]|0)+((c[f>>2]|0)*18|0)>>0]|0)-56;b=c[g>>2]|0;i=k;return b|0}function Ji(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;k=n+17|0;g=n+12|0;h=n+8|0;l=n+16|0;m=n+4|0;j=n;c[g>>2]=b;c[h>>2]=e;a[l>>0]=f;f=c[g>>2]|0;if((d[19267+(d[c[g>>2]>>0]|0)>>0]|0)&4){a[k>>0]=Ki(f)|0;m=a[k>>0]|0;i=n;return m|0}c[j>>2]=If(f)|0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=8){f=11;break}if((d[19650+(c[m>>2]|0)>>0]|0|0)==(c[j>>2]|0)?(zd(19666+(d[19658+(c[m>>2]|0)>>0]|0)|0,c[g>>2]|0,c[j>>2]|0)|0)==0:0){if(!(c[h>>2]|0)){f=9;break}if((d[19691+(c[m>>2]|0)>>0]|0|0)<=1){f=9;break}}c[m>>2]=(c[m>>2]|0)+1}if((f|0)==9){a[k>>0]=a[19691+(c[m>>2]|0)>>0]|0;m=a[k>>0]|0;i=n;return m|0}else if((f|0)==11){a[k>>0]=a[l>>0]|0;m=a[k>>0]|0;i=n;return m|0}return 0}function Ki(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;if(c[b>>2]|0)Li(c[b>>2]|0,d)|0;i=e;return c[d>>2]|0}function Li(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;j=o+32|0;k=o+28|0;l=o+24|0;h=o;m=o+20|0;f=o+16|0;g=o+12|0;n=o+8|0;c[k>>2]=b;c[l>>2]=e;b=h;c[b>>2]=0;c[b+4>>2]=0;c[g>>2]=0;do if((a[c[k>>2]>>0]|0)!=45){e=c[k>>2]|0;if((a[c[k>>2]>>0]|0)==43){c[k>>2]=e+1;break}if((a[e>>0]|0)==48){if((a[(c[k>>2]|0)+1>>0]|0)!=120?(a[(c[k>>2]|0)+1>>0]|0)!=88:0)break;if(d[19267+(d[(c[k>>2]|0)+2>>0]|0)>>0]&8){c[n>>2]=0;c[k>>2]=(c[k>>2]|0)+2;while(1){if((a[c[k>>2]>>0]|0)!=48)break;c[k>>2]=(c[k>>2]|0)+1}c[m>>2]=0;while(1){e=c[n>>2]|0;if(!((d[19267+(d[(c[k>>2]|0)+(c[m>>2]|0)>>0]|0)>>0]&8|0)!=0?(c[m>>2]|0)<8:0))break;c[n>>2]=(e<<4)+((Gi(a[(c[k>>2]|0)+(c[m>>2]|0)>>0]|0)|0)&255);c[m>>2]=(c[m>>2]|0)+1}if((e&-2147483648|0)==0?(d[19267+(d[(c[k>>2]|0)+(c[m>>2]|0)>>0]|0)>>0]&8|0)==0:0){c[c[l>>2]>>2]=c[n>>2];c[j>>2]=1;n=c[j>>2]|0;i=o;return n|0}c[j>>2]=0;n=c[j>>2]|0;i=o;return n|0}}}else{c[g>>2]=1;c[k>>2]=(c[k>>2]|0)+1}while(0);while(1){if((a[c[k>>2]>>0]|0)!=48)break;c[k>>2]=(c[k>>2]|0)+1}c[m>>2]=0;while(1){if((c[m>>2]|0)>=11)break;n=(a[(c[k>>2]|0)+(c[m>>2]|0)>>0]|0)-48|0;c[f>>2]=n;if(!((n|0)>=0&(c[f>>2]|0)<=9))break;n=h;n=rR(c[n>>2]|0,c[n+4>>2]|0,10,0)|0;b=c[f>>2]|0;b=gR(n|0,C|0,b|0,((b|0)<0)<<31>>31|0)|0;n=h;c[n>>2]=b;c[n+4>>2]=C;c[m>>2]=(c[m>>2]|0)+1}if((c[m>>2]|0)>10){c[j>>2]=0;n=c[j>>2]|0;i=o;return n|0}m=h;n=c[g>>2]|0;n=fR(c[m>>2]|0,c[m+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;m=C;if((m|0)>0|(m|0)==0&n>>>0>2147483647){c[j>>2]=0;n=c[j>>2]|0;i=o;return n|0}if(c[g>>2]|0){m=h;m=fR(0,0,c[m>>2]|0,c[m+4>>2]|0)|0;n=h;c[n>>2]=m;c[n+4>>2]=C}c[c[l>>2]>>2]=c[h>>2];c[j>>2]=1;n=c[j>>2]|0;i=o;return n|0}function Mi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=c[g>>2];if((c[e>>2]|0)>>>0<=(c[1036+(c[d>>2]<<2)>>2]|0)>>>0){i=f;return}c[1036+(c[d>>2]<<2)>>2]=c[e>>2];i=f;return}function Ni(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e+4|0;f=e;c[d>>2]=a;c[f>>2]=b;a=996+(c[d>>2]<<2)|0;c[a>>2]=(c[a>>2]|0)+(c[f>>2]|0);if((c[996+(c[d>>2]<<2)>>2]|0)>>>0<=(c[1036+(c[d>>2]<<2)>>2]|0)>>>0){i=e;return}c[1036+(c[d>>2]<<2)>>2]=c[996+(c[d>>2]<<2)>>2];i=e;return}function Oi(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+20|0;j=p+16|0;k=p+12|0;l=p+8|0;m=p+4|0;n=p;c[h>>2]=b;c[j>>2]=f;c[k>>2]=g;if((c[j>>2]|0)<2){o=c[j>>2]|0;i=p;return o|0}c[l>>2]=(d[18477+(d[c[h>>2]>>0]|0)>>0]<<2^(d[18477+(d[(c[h>>2]|0)+((c[j>>2]|0)-1)>>0]|0)>>0]|0)*3^c[j>>2]|0)%127|0;c[l>>2]=(d[19699+(c[l>>2]|0)>>0]|0)-1;while(1){if((c[l>>2]|0)<0){o=13;break}if((d[19826+(c[l>>2]|0)>>0]|0)==(c[j>>2]|0)){c[m>>2]=0;c[n>>2]=19950+(e[10628+(c[l>>2]<<1)>>1]|0);while(1){if((c[m>>2]|0)<(c[j>>2]|0))g=(a[(c[h>>2]|0)+(c[m>>2]|0)>>0]&-33|0)==(a[(c[n>>2]|0)+(c[m>>2]|0)>>0]|0);else g=0;f=c[m>>2]|0;if(!g)break;c[m>>2]=f+1}if((f|0)>=(c[j>>2]|0))break}c[l>>2]=(d[20627+(c[l>>2]|0)>>0]|0)-1}if((o|0)==13){o=c[j>>2]|0;i=p;return o|0}c[c[k>>2]>>2]=d[20503+(c[l>>2]|0)>>0];o=c[j>>2]|0;i=p;return o|0}function Pi(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[(c[b>>2]|0)+80>>2]|0)){i=d;return}a=(c[b>>2]|0)+80|0;c[a>>2]=(c[a>>2]|0)+-4;Wi(c[(c[b>>2]|0)+80>>2]|0);c[(c[b>>2]|0)+80>>2]=0;i=d;return}function Qi(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;n=p+16|0;m=p+12|0;l=p+8|0;k=p;c[g>>2]=a;c[h>>2]=e;c[j>>2]=f;c[n>>2]=0;c[m>>2]=c[c[h>>2]>>2];if(!((d[(c[g>>2]|0)+16>>0]|0)!=0?(c[(c[g>>2]|0)+28>>2]|0)!=0:0))o=3;do if(((o|0)==3?(o=(Ri(c[(c[g>>2]|0)+212>>2]|0)|0)==0,o&(c[m>>2]|0)!=0):0)?(c[m>>2]|0)!=(c[(c[g>>2]|0)+160>>2]|0):0){c[l>>2]=0;o=k;c[o>>2]=0;c[o+4>>2]=0;if((d[(c[g>>2]|0)+17>>0]|0)>0?(c[c[(c[g>>2]|0)+64>>2]>>2]|0)!=0:0)c[n>>2]=Si(c[(c[g>>2]|0)+64>>2]|0,k)|0;if((c[n>>2]|0)==0?(c[l>>2]=Ti(c[m>>2]|0)|0,(c[l>>2]|0)==0):0)c[n>>2]=7;if(!(c[n>>2]|0)){Ui(c[g>>2]|0);c[n>>2]=Vi(c[(c[g>>2]|0)+212>>2]|0,c[m>>2]|0)|0}if(!(c[n>>2]|0)){Wi(c[(c[g>>2]|0)+208>>2]|0);c[(c[g>>2]|0)+208>>2]=c[l>>2];o=k;o=gR(c[o>>2]|0,c[o+4>>2]|0,c[m>>2]|0,0)|0;o=fR(o|0,C|0,1,0)|0;o=pR(o|0,C|0,c[m>>2]|0,0)|0;c[(c[g>>2]|0)+28>>2]=o;c[(c[g>>2]|0)+160>>2]=c[m>>2];break}else{Wi(c[l>>2]|0);break}}while(0);c[c[h>>2]>>2]=c[(c[g>>2]|0)+160>>2];if(c[n>>2]|0){o=c[n>>2]|0;i=p;return o|0}if((c[j>>2]|0)<0)c[j>>2]=b[(c[g>>2]|0)+150>>1];b[(c[g>>2]|0)+150>>1]=c[j>>2];Xi(c[g>>2]|0);o=c[n>>2]|0;i=p;return o|0}function Ri(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+12>>2]|0}function Si(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=Yb[c[(c[c[f>>2]>>2]|0)+24>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return b|0}function Ti(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=ej(c[d>>2]|0)|0;i=b;return a|0}function Ui(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+108|0;c[a>>2]=(c[a>>2]|0)+1;_i(c[(c[d>>2]|0)+96>>2]|0);$i(c[(c[d>>2]|0)+212>>2]|0);i=b;return}function Vi(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[g>>2]=b;if(c[(c[f>>2]|0)+24>>2]|0){c[h>>2]=Ob[c[128>>2]&255](c[g>>2]|0,(c[(c[f>>2]|0)+28>>2]|0)+40|0,d[(c[f>>2]|0)+32>>0]|0)|0;if(!(c[h>>2]|0)){c[e>>2]=7;b=c[e>>2]|0;i=j;return b|0}k=c[33]|0;a=c[h>>2]|0;b=Zi(c[f>>2]|0)|0;Rb[k&255](a,b);if(c[(c[f>>2]|0)+44>>2]|0)Qb[c[156>>2]&255](c[(c[f>>2]|0)+44>>2]|0);c[(c[f>>2]|0)+44>>2]=c[h>>2];c[(c[f>>2]|0)+24>>2]=c[g>>2]}c[e>>2]=0;k=c[e>>2]|0;i=j;return k|0}function Wi(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Yi(c[d>>2]|0);i=b;return}function Xi(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return}function Yi(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=0;if(!(c[b>>2]|0)){i=f;return}if((c[b>>2]|0)>>>0>=(c[415]|0)>>>0?(c[b>>2]|0)>>>0<(c[416]|0)>>>0:0){ag(1,1);c[e>>2]=c[b>>2];c[c[e>>2]>>2]=c[418];c[418]=c[e>>2];c[419]=(c[419]|0)+1;c[420]=(c[419]|0)<(c[414]|0)&1;i=f;return}c[d>>2]=$f(c[b>>2]|0)|0;ag(2,c[d>>2]|0);Kd(c[b>>2]|0);i=f;return}function Zi(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;a=c[(c[d>>2]|0)+16>>2]|0;if((c[(c[d>>2]|0)+16>>2]|0)>=0){c[b>>2]=a;d=c[b>>2]|0;i=e;return d|0}else{a=rR(-1024,-1,a|0,((a|0)<0)<<31>>31|0)|0;d=(c[(c[d>>2]|0)+24>>2]|0)+(c[(c[d>>2]|0)+28>>2]|0)|0;d=pR(a|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;c[b>>2]=d;d=c[b>>2]|0;i=e;return d|0}return 0}function _i(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];while(1){if(!(c[b>>2]|0))break;c[(c[b>>2]|0)+16>>2]=1;c[b>>2]=c[(c[b>>2]|0)+44>>2]}i=d;return}function $i(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;aj(c[d>>2]|0,0);i=b;return}function aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[d>>2]=a;c[e>>2]=b;if(!(c[(c[d>>2]|0)+44>>2]|0)){i=j;return}c[f>>2]=c[c[d>>2]>>2];while(1){if(!(c[f>>2]|0))break;c[g>>2]=c[(c[f>>2]|0)+32>>2];if((c[(c[f>>2]|0)+20>>2]|0)>>>0>(c[e>>2]|0)>>>0)bj(c[f>>2]|0);c[f>>2]=c[g>>2]}if(((c[e>>2]|0)==0?(c[(c[d>>2]|0)+12>>2]|0)!=0:0)?(c[h>>2]=Ob[c[140>>2]&255](c[(c[d>>2]|0)+44>>2]|0,1,0)|0,(c[h>>2]|0)!=0):0){kR(c[c[h>>2]>>2]|0,0,c[(c[d>>2]|0)+24>>2]|0)|0;c[e>>2]=1}Rb[c[152>>2]&255](c[(c[d>>2]|0)+44>>2]|0,(c[e>>2]|0)+1|0);i=j;return}function bj(a){a=a|0;var d=0,f=0;f=i;i=i+16|0;d=f;c[d>>2]=a;if(!(e[(c[d>>2]|0)+24>>1]&2)){i=f;return}cj(c[d>>2]|0,1);a=(c[d>>2]|0)+24|0;b[a>>1]=e[a>>1]&-15;a=(c[d>>2]|0)+24|0;b[a>>1]=e[a>>1]|1;if(b[(c[d>>2]|0)+26>>1]|0){i=f;return}dj(c[d>>2]|0);i=f;return}function cj(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;j=l+8|0;h=l+12|0;k=l+4|0;g=l;c[j>>2]=b;a[h>>0]=f;c[k>>2]=c[(c[j>>2]|0)+28>>2];if(d[h>>0]&1){if((c[(c[k>>2]|0)+8>>2]|0)==(c[j>>2]|0)){c[g>>2]=c[(c[j>>2]|0)+36>>2];while(1){if(c[g>>2]|0)f=(e[(c[g>>2]|0)+24>>1]&8|0)!=0;else f=0;b=c[g>>2]|0;if(!f)break;c[g>>2]=c[b+36>>2]}c[(c[k>>2]|0)+8>>2]=b}f=c[(c[j>>2]|0)+36>>2]|0;if(c[(c[j>>2]|0)+32>>2]|0)c[(c[(c[j>>2]|0)+32>>2]|0)+36>>2]=f;else c[(c[k>>2]|0)+4>>2]=f;f=c[(c[j>>2]|0)+32>>2]|0;if(!(c[(c[j>>2]|0)+36>>2]|0)){c[c[k>>2]>>2]=f;if((c[c[k>>2]>>2]|0)==0?(d[(c[k>>2]|0)+32>>0]|0)!=0:0)a[(c[k>>2]|0)+33>>0]=2}else c[(c[(c[j>>2]|0)+36>>2]|0)+32>>2]=f;c[(c[j>>2]|0)+32>>2]=0;c[(c[j>>2]|0)+36>>2]=0}if(!(d[h>>0]&2)){i=l;return}c[(c[j>>2]|0)+32>>2]=c[c[k>>2]>>2];f=c[j>>2]|0;if(!(c[(c[j>>2]|0)+32>>2]|0)){c[(c[k>>2]|0)+4>>2]=f;if(a[(c[k>>2]|0)+32>>0]|0)a[(c[k>>2]|0)+33>>0]=1}else c[(c[(c[j>>2]|0)+32>>2]|0)+36>>2]=f;c[c[k>>2]>>2]=c[j>>2];if(c[(c[k>>2]|0)+8>>2]|0){i=l;return}if(e[(c[j>>2]|0)+24>>1]&8){i=l;return}c[(c[k>>2]|0)+8>>2]=c[j>>2];i=l;return}function dj(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;if(!(a[(c[(c[d>>2]|0)+28>>2]|0)+32>>0]|0)){i=e;return}Ub[c[144>>2]&255](c[(c[(c[d>>2]|0)+28>>2]|0)+44>>2]|0,c[c[d>>2]>>2]|0,0);i=e;return}function ej(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=0;if((c[b>>2]|0)<=(c[412]|0)?(c[d>>2]=c[418],(c[d>>2]|0)!=0):0){c[418]=c[c[418]>>2];c[419]=(c[419]|0)+-1;c[420]=(c[419]|0)<(c[414]|0)&1;Mi(7,c[b>>2]|0);Ni(1,1)}if(c[d>>2]|0){e=c[d>>2]|0;i=f;return e|0}a=c[b>>2]|0;c[d>>2]=_f(a,((a|0)<0)<<31>>31)|0;if(!(c[d>>2]|0)){e=c[d>>2]|0;i=f;return e|0}c[e>>2]=$f(c[d>>2]|0)|0;Mi(7,c[b>>2]|0);Ni(2,c[e>>2]|0);e=c[d>>2]|0;i=f;return e|0}function fj(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=ig(512,0)|0;if(!(c[d>>2]|0)){d=c[d>>2]|0;i=e;return d|0}c[c[d>>2]>>2]=c[b>>2];d=c[d>>2]|0;i=e;return d|0}function gj(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;l=p+16|0;f=p+12|0;m=p+8|0;n=p+4|0;k=p;c[h>>2]=b;c[j>>2]=e;if(!(c[h>>2]|0)){c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}c[j>>2]=(c[j>>2]|0)+-1;while(1){if((c[c[h>>2]>>2]|0)>>>0<=4e3)break;if(!(c[(c[h>>2]|0)+8>>2]|0))break;c[f>>2]=((c[j>>2]|0)>>>0)/((c[(c[h>>2]|0)+8>>2]|0)>>>0)|0;c[j>>2]=((c[j>>2]|0)>>>0)%((c[(c[h>>2]|0)+8>>2]|0)>>>0)|0;if((c[(c[h>>2]|0)+12+(c[f>>2]<<2)>>2]|0)==0?(b=fj(c[(c[h>>2]|0)+8>>2]|0)|0,c[(c[h>>2]|0)+12+(c[f>>2]<<2)>>2]=b,(c[(c[h>>2]|0)+12+(c[f>>2]<<2)>>2]|0)==0):0){o=8;break}c[h>>2]=c[(c[h>>2]|0)+12+(c[f>>2]<<2)>>2]}if((o|0)==8){c[g>>2]=7;o=c[g>>2]|0;i=p;return o|0}f=c[j>>2]|0;if((c[c[h>>2]>>2]|0)>>>0<=4e3){o=(c[h>>2]|0)+12+(((c[j>>2]|0)>>>0)/8|0)|0;a[o>>0]=d[o>>0]|0|1<<(f&7);c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}c[j>>2]=f+1;c[l>>2]=(f>>>0)%125|0;a:do if(!(c[(c[h>>2]|0)+12+(c[l>>2]<<2)>>2]|0)){if((c[(c[h>>2]|0)+4>>2]|0)>>>0>=124)o=17}else{while(1){if((c[(c[h>>2]|0)+12+(c[l>>2]<<2)>>2]|0)==(c[j>>2]|0))break;o=(c[l>>2]|0)+1|0;c[l>>2]=o;c[l>>2]=(c[l>>2]|0)>>>0>=125?0:o;if(!(c[(c[h>>2]|0)+12+(c[l>>2]<<2)>>2]|0)){o=17;break a}}c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}while(0);if((o|0)==17?(c[(c[h>>2]|0)+4>>2]|0)>>>0>=62:0){c[k>>2]=yh(0,500,0)|0;if(!(c[k>>2]|0)){c[g>>2]=7;o=c[g>>2]|0;i=p;return o|0}iR(c[k>>2]|0,(c[h>>2]|0)+12|0,500)|0;kR((c[h>>2]|0)+12|0,0,500)|0;c[(c[h>>2]|0)+8>>2]=(((c[c[h>>2]>>2]|0)+125-1|0)>>>0)/125|0;c[n>>2]=gj(c[h>>2]|0,c[j>>2]|0)|0;c[m>>2]=0;while(1){if((c[m>>2]|0)>>>0>=125)break;if(c[(c[k>>2]|0)+(c[m>>2]<<2)>>2]|0){o=gj(c[h>>2]|0,c[(c[k>>2]|0)+(c[m>>2]<<2)>>2]|0)|0;c[n>>2]=c[n>>2]|o}c[m>>2]=(c[m>>2]|0)+1}Sf(0,c[k>>2]|0);c[g>>2]=c[n>>2];o=c[g>>2]|0;i=p;return o|0}o=(c[h>>2]|0)+4|0;c[o>>2]=(c[o>>2]|0)+1;c[(c[h>>2]|0)+12+(c[l>>2]<<2)>>2]=c[j>>2];c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}function hj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+24|0;h=p+20|0;j=p+16|0;l=p+12|0;n=p+8|0;k=p+4|0;m=p;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;if(!(c[g>>2]|0)){i=p;return}c[h>>2]=(c[h>>2]|0)+-1;while(1){if(!(c[(c[g>>2]|0)+8>>2]|0))break;c[l>>2]=((c[h>>2]|0)>>>0)/((c[(c[g>>2]|0)+8>>2]|0)>>>0)|0;c[h>>2]=((c[h>>2]|0)>>>0)%((c[(c[g>>2]|0)+8>>2]|0)>>>0)|0;c[g>>2]=c[(c[g>>2]|0)+12+(c[l>>2]<<2)>>2];if(!(c[g>>2]|0)){o=16;break}}if((o|0)==16){i=p;return}if((c[c[g>>2]>>2]|0)>>>0<=4e3){o=(c[g>>2]|0)+12+(((c[h>>2]|0)>>>0)/8|0)|0;a[o>>0]=(d[o>>0]|0)&~(1<<(c[h>>2]&7));i=p;return}c[k>>2]=c[j>>2];iR(c[k>>2]|0,(c[g>>2]|0)+12|0,500)|0;kR((c[g>>2]|0)+12|0,0,500)|0;c[(c[g>>2]|0)+4>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>>>0>=125)break;if((c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]|0)!=0?(c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]|0)!=((c[h>>2]|0)+1|0):0){c[m>>2]=(((c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]|0)-1|0)>>>0)%125|0;o=(c[g>>2]|0)+4|0;c[o>>2]=(c[o>>2]|0)+1;while(1){if(!(c[(c[g>>2]|0)+12+(c[m>>2]<<2)>>2]|0))break;o=(c[m>>2]|0)+1|0;c[m>>2]=o;c[m>>2]=(c[m>>2]|0)>>>0>=125?0:o}c[(c[g>>2]|0)+12+(c[m>>2]<<2)>>2]=c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]}c[n>>2]=(c[n>>2]|0)+1}i=p;return}function ij(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[d>>2]|0)){a=0;a=a&1;i=f;return a|0}a=(lj(c[d>>2]|0,c[e>>2]|0)|0)!=0;a=a&1;i=f;return a|0}function jj(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[b>>2]>>2]|0}function kj(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(c[b>>2]|0)){i=e;return}a:do if(c[(c[b>>2]|0)+8>>2]|0){c[d>>2]=0;while(1){if((c[d>>2]|0)>>>0>=125)break a;kj(c[(c[b>>2]|0)+12+(c[d>>2]<<2)>>2]|0);c[d>>2]=(c[d>>2]|0)+1}}while(0);Kd(c[b>>2]|0);i=e;return}function lj(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l+8|0;e=l+4|0;k=l;c[h>>2]=a;c[j>>2]=b;c[j>>2]=(c[j>>2]|0)+-1;if((c[j>>2]|0)>>>0>=(c[c[h>>2]>>2]|0)>>>0){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}while(1){if(!(c[(c[h>>2]|0)+8>>2]|0))break;c[e>>2]=((c[j>>2]|0)>>>0)/((c[(c[h>>2]|0)+8>>2]|0)>>>0)|0;c[j>>2]=((c[j>>2]|0)>>>0)%((c[(c[h>>2]|0)+8>>2]|0)>>>0)|0;c[h>>2]=c[(c[h>>2]|0)+12+(c[e>>2]<<2)>>2];if(!(c[h>>2]|0)){f=5;break}}if((f|0)==5){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}e=c[j>>2]|0;if((c[c[h>>2]>>2]|0)>>>0<=4e3){c[g>>2]=((d[(c[h>>2]|0)+12+((e>>>0)/8|0)>>0]|0)&1<<(c[j>>2]&7)|0)!=0&1;k=c[g>>2]|0;i=l;return k|0}c[j>>2]=e+1;c[k>>2]=(e>>>0)%125|0;while(1){if(!(c[(c[h>>2]|0)+12+(c[k>>2]<<2)>>2]|0)){f=13;break}if((c[(c[h>>2]|0)+12+(c[k>>2]<<2)>>2]|0)==(c[j>>2]|0)){f=11;break}c[k>>2]=(((c[k>>2]|0)+1|0)>>>0)%125|0}if((f|0)==11){c[g>>2]=1;k=c[g>>2]|0;i=l;return k|0}else if((f|0)==13){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}return 0}function mj(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+8>>2]|0}function nj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;f=e+8|0;d=e+4|0;c[g>>2]=a;c[f>>2]=b;c[d>>2]=oj(c[g>>2]|0,c[f>>2]|0,e)|0;if(!(c[d>>2]|0)){g=0;i=e;return g|0}g=c[(c[d>>2]|0)+8>>2]|0;i=e;return g|0}function oj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;m=n+28|0;e=n+24|0;j=n+20|0;f=n+16|0;l=n+12|0;k=n+8|0;g=n+4|0;h=n;c[e>>2]=a;c[j>>2]=b;c[f>>2]=d;if(c[(c[e>>2]|0)+12>>2]|0){b=pj(c[j>>2]|0)|0;c[g>>2]=(b>>>0)%((c[c[e>>2]>>2]|0)>>>0)|0;c[h>>2]=(c[(c[e>>2]|0)+12>>2]|0)+(c[g>>2]<<3);c[l>>2]=c[(c[h>>2]|0)+4>>2];c[k>>2]=c[c[h>>2]>>2]}else{c[g>>2]=0;c[l>>2]=c[(c[e>>2]|0)+8>>2];c[k>>2]=c[(c[e>>2]|0)+4>>2]}c[c[f>>2]>>2]=c[g>>2];while(1){b=c[k>>2]|0;c[k>>2]=b+-1;if(!b){e=9;break}b=(Td(c[(c[l>>2]|0)+12>>2]|0,c[j>>2]|0)|0)==0;f=c[l>>2]|0;if(b){e=7;break}c[l>>2]=c[f>>2]}if((e|0)==7){c[m>>2]=f;m=c[m>>2]|0;i=n;return m|0}else if((e|0)==9){c[m>>2]=0;m=c[m>>2]|0;i=n;return m|0}return 0}function pj(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+4|0;g=h;f=h+8|0;c[e>>2]=b;c[g>>2]=0;while(1){j=c[e>>2]|0;c[e>>2]=j+1;j=a[j>>0]|0;a[f>>0]=j;b=c[g>>2]|0;if(!(j&255))break;c[g>>2]=b<<3^c[g>>2]^(d[18477+(d[f>>0]|0)>>0]|0)}i=h;return b|0}function qj(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=i;i=i+128|0;w=A;l=A+108|0;m=A+104|0;n=A+100|0;o=A+96|0;u=A+92|0;j=A+88|0;v=A+84|0;t=A+80|0;B=A+64|0;r=A+40|0;q=A+24|0;y=A+20|0;s=A+16|0;p=A+112|0;z=A+12|0;x=A+8|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[s>>2]=0;h=(c[n>>2]|0)==1?20769:20788;c[y>>2]=h;c[B>>2]=h;c[B+4>>2]=20802;c[B+8>>2]=20804;c[B+12>>2]=0;c[q>>2]=c[m>>2];c[q+8>>2]=c[n>>2];c[q+12>>2]=0;c[q+4>>2]=c[o>>2];wj(q,3,B,0)|0;if(!(c[q+12>>2]|0)){c[t>>2]=(c[(c[m>>2]|0)+16>>2]|0)+(c[n>>2]<<4);if(!(c[(c[t>>2]|0)+4>>2]|0)){if((c[n>>2]|0)==1){B=(c[(c[(c[m>>2]|0)+16>>2]|0)+16+12>>2]|0)+78|0;b[B>>1]=e[B>>1]|1}c[l>>2]=0;B=c[l>>2]|0;i=A;return B|0}kg(c[(c[t>>2]|0)+4>>2]|0);do if(!(og(c[(c[t>>2]|0)+4>>2]|0)|0)){c[u>>2]=mg(c[(c[t>>2]|0)+4>>2]|0,0)|0;if(c[u>>2]|0){z=c[o>>2]|0;B=c[m>>2]|0;xj(z,B,ih(c[u>>2]|0)|0);break}else{c[s>>2]=1;k=11;break}}else k=11;while(0);a:do if((k|0)==11){c[j>>2]=0;while(1){if((c[j>>2]|0)>=5)break;ng(c[(c[t>>2]|0)+4>>2]|0,(c[j>>2]|0)+1|0,r+(c[j>>2]<<2)|0);c[j>>2]=(c[j>>2]|0)+1}c[c[(c[t>>2]|0)+12>>2]>>2]=c[r>>2];f=c[n>>2]|0;do if(c[r+16>>2]|0){j=c[r+16>>2]|0;if(!f){B=j&3;a[p>>0]=B;a[p>>0]=(d[p>>0]|0)==0?1:B;a[(c[m>>2]|0)+62>>0]=a[p>>0]|0;break}if((j|0)!=(d[(c[m>>2]|0)+62>>0]|0)){xj(c[o>>2]|0,c[m>>2]|0,20880);c[u>>2]=1;break a}}else{B=(c[(c[(c[m>>2]|0)+16>>2]|0)+(f<<4)+12>>2]|0)+78|0;b[B>>1]=e[B>>1]|4}while(0);a[(c[(c[t>>2]|0)+12>>2]|0)+77>>0]=a[(c[m>>2]|0)+62>>0]|0;if(!(c[(c[(c[t>>2]|0)+12>>2]|0)+80>>2]|0)){B=yj(c[r+8>>2]|0)|0;c[v>>2]=B;c[v>>2]=(c[v>>2]|0)==0?2e3:B;c[(c[(c[t>>2]|0)+12>>2]|0)+80>>2]=c[v>>2];zj(c[(c[t>>2]|0)+4>>2]|0,c[(c[(c[t>>2]|0)+12>>2]|0)+80>>2]|0)|0}a[(c[(c[t>>2]|0)+12>>2]|0)+76>>0]=c[r+4>>2];if(!(d[(c[(c[t>>2]|0)+12>>2]|0)+76>>0]|0))a[(c[(c[t>>2]|0)+12>>2]|0)+76>>0]=1;if((d[(c[(c[t>>2]|0)+12>>2]|0)+76>>0]|0)>4){xj(c[o>>2]|0,c[m>>2]|0,20948);c[u>>2]=1;break}if((c[n>>2]|0)==0?(c[r+4>>2]|0)>=4:0){B=(c[m>>2]|0)+24|0;c[B>>2]=c[B>>2]&-32769}B=c[m>>2]|0;y=c[y>>2]|0;c[w>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[n>>2]<<4)>>2];c[w+4>>2]=y;c[z>>2]=Bh(B,20972,w)|0;c[x>>2]=c[(c[m>>2]|0)+288>>2];c[(c[m>>2]|0)+288>>2]=0;c[u>>2]=$e(c[m>>2]|0,c[z>>2]|0,140,q,0)|0;c[(c[m>>2]|0)+288>>2]=c[x>>2];if(!(c[u>>2]|0))c[u>>2]=c[q+12>>2];Sf(c[m>>2]|0,c[z>>2]|0);if(!(c[u>>2]|0))Aj(c[m>>2]|0,c[n>>2]|0)|0;if(a[(c[m>>2]|0)+65>>0]|0){c[u>>2]=7;zg(c[m>>2]|0)}if((c[u>>2]|0)!=0?(c[(c[m>>2]|0)+24>>2]&65536|0)==0:0)break;B=(c[(c[(c[m>>2]|0)+16>>2]|0)+(c[n>>2]<<4)+12>>2]|0)+78|0;b[B>>1]=e[B>>1]|1;c[u>>2]=0}while(0);if(c[s>>2]|0)Bj(c[(c[t>>2]|0)+4>>2]|0)|0}else c[u>>2]=c[q+12>>2];if((c[u>>2]|0)==7|(c[u>>2]|0)==3082)jh(c[m>>2]|0);c[l>>2]=c[u>>2];B=c[l>>2]|0;i=A;return B|0}function rj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=(c[(c[d>>2]|0)+16>>2]|0)+(c[g>>2]<<4);tj(c[(c[e>>2]|0)+12>>2]|0);if((c[g>>2]|0)==1){i=f;return}c[e>>2]=(c[(c[d>>2]|0)+16>>2]|0)+16;tj(c[(c[e>>2]|0)+12>>2]|0);i=f;return}function sj(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+24|0;c[a>>2]=c[a>>2]&-3;i=b;return}function tj(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+64|0;l=k+48|0;h=k+32|0;j=k+16|0;d=k+8|0;f=k+4|0;g=k;c[l>>2]=a;c[f>>2]=c[l>>2];a=(c[f>>2]|0)+8|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];a=(c[f>>2]|0)+40|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];uj((c[f>>2]|0)+40|0);vj((c[f>>2]|0)+24|0);c[d>>2]=c[j+8>>2];while(1){if(!(c[d>>2]|0))break;Pf(0,c[(c[d>>2]|0)+8>>2]|0);c[d>>2]=c[c[d>>2]>>2]}vj(j);uj((c[f>>2]|0)+8|0);c[d>>2]=c[h+8>>2];while(1){if(!(c[d>>2]|0))break;c[g>>2]=c[(c[d>>2]|0)+8>>2];Qf(0,c[g>>2]|0);c[d>>2]=c[c[d>>2]>>2]}vj(h);vj((c[f>>2]|0)+56|0);c[(c[f>>2]|0)+72>>2]=0;if(!((e[(c[f>>2]|0)+78>>1]|0)&1)){i=k;return}l=(c[f>>2]|0)+4|0;c[l>>2]=(c[l>>2]|0)+1;l=(c[f>>2]|0)+78|0;b[l>>1]=(e[l>>1]|0)&-2;i=k;return}function uj(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+8>>2]=0;c[(c[d>>2]|0)+4>>2]=0;c[c[d>>2]>>2]=0;c[(c[d>>2]|0)+12>>2]=0;i=b;return}function vj(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+8>>2];c[(c[b>>2]|0)+8>>2]=0;Kd(c[(c[b>>2]|0)+12>>2]|0);c[(c[b>>2]|0)+12>>2]=0;c[c[b>>2]>>2]=0;while(1){if(!(c[d>>2]|0))break;c[e>>2]=c[c[d>>2]>>2];Kd(c[d>>2]|0);c[d>>2]=c[e>>2]}c[(c[b>>2]|0)+4>>2]=0;i=f;return}function wj(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;j=r+40|0;s=r+36|0;k=r+28|0; -n=r+20|0;l=r+16|0;m=r+12|0;q=r+8|0;p=r+4|0;o=r;c[s>>2]=d;c[r+32>>2]=f;c[k>>2]=g;c[r+24>>2]=h;c[n>>2]=c[s>>2];c[l>>2]=c[c[n>>2]>>2];c[m>>2]=c[(c[n>>2]|0)+8>>2];d=(c[(c[(c[l>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2]|0)+78|0;b[d>>1]=e[d>>1]&-5;if(a[(c[l>>2]|0)+65>>0]|0){Kj(c[n>>2]|0,c[c[k>>2]>>2]|0,0);c[j>>2]=1;s=c[j>>2]|0;i=r;return s|0}if(!(c[k>>2]|0)){c[j>>2]=0;s=c[j>>2]|0;i=r;return s|0}a:do if(!(c[(c[k>>2]|0)+4>>2]|0))Kj(c[n>>2]|0,c[c[k>>2]>>2]|0,0);else{if(zd(c[(c[k>>2]|0)+8>>2]|0,21114,7)|0){do if(c[c[k>>2]>>2]|0){if((c[(c[k>>2]|0)+8>>2]|0)!=0?(a[c[(c[k>>2]|0)+8>>2]>>0]|0)!=0:0)break;c[o>>2]=Fj(c[l>>2]|0,c[c[k>>2]>>2]|0,c[(c[(c[l>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2]|0)|0;if(!(c[o>>2]|0))break a;if(Li(c[(c[k>>2]|0)+4>>2]|0,(c[o>>2]|0)+44|0)|0)break a;Kj(c[n>>2]|0,c[c[k>>2]>>2]|0,21122);break a}while(0);Kj(c[n>>2]|0,c[c[k>>2]>>2]|0,0);break}a[(c[l>>2]|0)+140+4>>0]=c[m>>2];s=Ki(c[(c[k>>2]|0)+4>>2]|0)|0;c[(c[l>>2]|0)+140>>2]=s;a[(c[l>>2]|0)+140+6>>0]=0;cf(c[l>>2]|0,c[(c[k>>2]|0)+8>>2]|0,-1,p,0)|0;c[q>>2]=c[(c[l>>2]|0)+52>>2];a[(c[l>>2]|0)+140+4>>0]=0;do if(0!=(c[q>>2]|0)?(a[(c[l>>2]|0)+140+6>>0]|0)==0:0){c[(c[n>>2]|0)+12>>2]=c[q>>2];if((c[q>>2]|0)==7){jh(c[l>>2]|0);break}if((c[q>>2]|0)!=9?(c[q>>2]&255|0)!=6:0){q=c[n>>2]|0;s=c[c[k>>2]>>2]|0;Kj(q,s,bf(c[l>>2]|0)|0)}}while(0);Yd(c[p>>2]|0)|0}while(0);c[j>>2]=0;s=c[j>>2]|0;i=r;return s|0}function xj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=d;Sf(c[h>>2]|0,c[c[f>>2]>>2]|0);d=nh(c[h>>2]|0,c[g>>2]|0)|0;c[c[f>>2]>>2]=d;i=e;return}function yj(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;a=c[d>>2]|0;do if((c[d>>2]|0)<0)if((a|0)==-2147483648){c[b>>2]=2147483647;break}else{c[b>>2]=0-(c[d>>2]|0);break}else c[b>>2]=a;while(0);i=e;return c[b>>2]|0}function zj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);Ij(c[c[f>>2]>>2]|0,c[e>>2]|0);i=d;return 0}function Aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;l=n;d=n+40|0;e=n+36|0;f=n+32|0;k=n+24|0;g=n+16|0;m=n+12|0;j=n+8|0;h=n+4|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=c[(c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+12>>2]|0)+24+8>>2];while(1){if(!(c[g>>2]|0))break;c[h>>2]=c[(c[g>>2]|0)+8>>2];Cj(c[h>>2]|0);c[g>>2]=c[c[g>>2]>>2]}c[k>>2]=c[e>>2];c[k+4>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)>>2];if(!(pi(c[e>>2]|0,21027,c[k+4>>2]|0)|0)){c[d>>2]=1;m=c[d>>2]|0;i=n;return m|0}h=c[e>>2]|0;c[l>>2]=c[k+4>>2];c[m>>2]=Bh(h,21040,l)|0;if(!(c[m>>2]|0))c[j>>2]=7;else{c[j>>2]=$e(c[e>>2]|0,c[m>>2]|0,141,k,0)|0;Sf(c[e>>2]|0,c[m>>2]|0)}if((c[j>>2]|0)==7)jh(c[e>>2]|0);c[d>>2]=c[j>>2];m=c[d>>2]|0;i=n;return m|0}function Bj(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;kg(c[b>>2]|0);c[d>>2]=Kg(c[b>>2]|0,0)|0;if(c[d>>2]|0){d=c[d>>2]|0;i=e;return d|0}c[d>>2]=Jg(c[b>>2]|0,0)|0;d=c[d>>2]|0;i=e;return d|0}function Cj(a){a=a|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+12|0;h=l+16|0;g=l+8|0;k=l+4|0;j=l;c[f>>2]=a;b[h>>1]=b[5446]|0;b[h+2>>1]=b[5447]|0;b[h+4>>1]=b[5448]|0;b[h+6>>1]=b[5449]|0;b[h+8>>1]=b[5450]|0;c[g>>2]=c[(c[f>>2]|0)+8>>2];if(5<(e[(c[f>>2]|0)+50>>1]|0))a=5;else a=e[(c[f>>2]|0)+50>>1]|0;c[k>>2]=a;b[c[g>>2]>>1]=b[(c[(c[f>>2]|0)+12>>2]|0)+38>>1]|0;if((b[c[g>>2]>>1]|0)<33)b[c[g>>2]>>1]=33;iR((c[g>>2]|0)+2|0,h|0,c[k>>2]<<1|0)|0;c[j>>2]=(c[k>>2]|0)+1;while(1){if((c[j>>2]|0)>(e[(c[f>>2]|0)+50>>1]|0))break;b[(c[g>>2]|0)+(c[j>>2]<<1)>>1]=23;c[j>>2]=(c[j>>2]|0)+1}if(!(d[(c[f>>2]|0)+54>>0]|0)){i=l;return}b[(c[g>>2]|0)+(e[(c[f>>2]|0)+50>>1]<<1)>>1]=0;i=l;return}function Dj(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+112|0;j=s+96|0;t=s+92|0;k=s+84|0;p=s+76|0;o=s+72|0;q=s+68|0;r=s+64|0;l=s+60|0;n=s+56|0;m=s;c[t>>2]=d;c[s+88>>2]=f;c[k>>2]=g;c[s+80>>2]=h;c[p>>2]=c[t>>2];if(((c[k>>2]|0)!=0?(c[c[k>>2]>>2]|0)!=0:0)?(c[(c[k>>2]|0)+8>>2]|0)!=0:0){c[q>>2]=pi(c[c[p>>2]>>2]|0,c[c[k>>2]>>2]|0,c[(c[p>>2]|0)+4>>2]|0)|0;if(!(c[q>>2]|0)){c[j>>2]=0;t=c[j>>2]|0;i=s;return t|0}do if(c[(c[k>>2]|0)+4>>2]|0)if(!(Td(c[c[k>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0)|0)){c[o>>2]=Ej(c[q>>2]|0)|0;break}else{c[o>>2]=Fj(c[c[p>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+4>>2]|0)|0;break}else c[o>>2]=0;while(0);c[r>>2]=c[(c[k>>2]|0)+8>>2];if(c[o>>2]|0){c[l>>2]=0;c[n>>2]=(e[(c[o>>2]|0)+50>>1]|0)+1;t=(c[o>>2]|0)+55|0;a[t>>0]=a[t>>0]&-5;Gj(c[r>>2]|0,c[n>>2]|0,c[l>>2]|0,c[(c[o>>2]|0)+8>>2]|0,c[o>>2]|0);if(!(c[(c[o>>2]|0)+36>>2]|0))b[(c[q>>2]|0)+38>>1]=b[c[(c[o>>2]|0)+8>>2]>>1]|0}else{b[m+48>>1]=b[(c[q>>2]|0)+40>>1]|0;Gj(c[r>>2]|0,1,0,(c[q>>2]|0)+38|0,m);b[(c[q>>2]|0)+40>>1]=b[m+48>>1]|0}c[j>>2]=0;t=c[j>>2]|0;i=s;return t|0}c[j>>2]=0;t=c[j>>2]|0;i=s;return t|0}function Ej(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=b;c[d>>2]=c[(c[f>>2]|0)+8>>2];while(1){if(!(c[d>>2]|0)){b=5;break}if(!((a[(c[d>>2]|0)+55>>0]&3|0)==2^1)){b=5;break}c[d>>2]=c[(c[d>>2]|0)+20>>2]}if((b|0)==5){i=e;return c[d>>2]|0}return 0}function Fj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;e=n+24|0;f=n+20|0;g=n+16|0;k=n+12|0;h=n+8|0;j=n+4|0;l=n;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[k>>2]=0;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0)){m=7;break}b=c[h>>2]|0;c[j>>2]=(c[h>>2]|0)<2?b^1:b;c[l>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+12>>2];if(!((c[g>>2]|0)!=0?(Td(c[g>>2]|0,c[(c[(c[e>>2]|0)+16>>2]|0)+(c[j>>2]<<4)>>2]|0)|0)!=0:0))m=5;if((m|0)==5?(m=0,c[k>>2]=nj((c[l>>2]|0)+24|0,c[f>>2]|0)|0,(c[k>>2]|0)!=0):0){m=7;break}c[h>>2]=(c[h>>2]|0)+1}if((m|0)==7){i=n;return c[k>>2]|0}return 0}function Gj(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+48|0;r=q+32|0;j=q+28|0;k=q+20|0;o=q+16|0;p=q+12|0;l=q+8|0;m=q+4|0;n=q;c[r>>2]=d;c[j>>2]=e;c[q+24>>2]=f;c[k>>2]=g;c[o>>2]=h;c[p>>2]=c[r>>2];c[m>>2]=0;while(1){if(!(a[c[p>>2]>>0]|0))break;if((c[m>>2]|0)>=(c[j>>2]|0))break;c[n>>2]=0;while(1){r=a[c[p>>2]>>0]|0;c[l>>2]=r;if(!((r|0)>=48?(c[l>>2]|0)<=57:0))break;c[n>>2]=((c[n>>2]|0)*10|0)+(c[l>>2]|0)-48;c[p>>2]=(c[p>>2]|0)+1}r=Hj(c[n>>2]|0,0)|0;b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]=r;if((a[c[p>>2]>>0]|0)==32)c[p>>2]=(c[p>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+1}r=(c[o>>2]|0)+55|0;a[r>>0]=a[r>>0]&-5;r=(c[o>>2]|0)+55|0;a[r>>0]=a[r>>0]&-65;a:while(1){if(!(a[c[p>>2]>>0]|0))break;do if(Ze(21081,c[p>>2]|0)|0){r=(Ze(21092,c[p>>2]|0)|0)==0;j=c[p>>2]|0;if(r){r=Ki(j+3|0)|0;r=Hj(r,((r|0)<0)<<31>>31)|0;b[(c[o>>2]|0)+48>>1]=r;break}if(!(Ze(21102,j)|0)){r=(c[o>>2]|0)+55|0;a[r>>0]=a[r>>0]&-65|64}}else{r=(c[o>>2]|0)+55|0;a[r>>0]=a[r>>0]&-5|4}while(0);while(1){if(!(a[c[p>>2]>>0]|0))break;if((a[c[p>>2]>>0]|0)==32)break;c[p>>2]=(c[p>>2]|0)+1}while(1){if((a[c[p>>2]>>0]|0)!=32)continue a;c[p>>2]=(c[p>>2]|0)+1}}i=q;return}function Hj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+10|0;f=h;g=h+8|0;j=f;c[j>>2]=a;c[j+4>>2]=d;b[g>>1]=40;d=f;a=c[d+4>>2]|0;a:do if(a>>>0<0|(a|0)==0&(c[d>>2]|0)>>>0<8){j=f;d=c[j+4>>2]|0;if(d>>>0<0|(d|0)==0&(c[j>>2]|0)>>>0<2){b[e>>1]=0;j=b[e>>1]|0;i=h;return j|0}else while(1){j=f;d=c[j+4>>2]|0;if(!(d>>>0<0|(d|0)==0&(c[j>>2]|0)>>>0<8))break a;b[g>>1]=(b[g>>1]|0)-10;d=f;d=lR(c[d>>2]|0,c[d+4>>2]|0,1)|0;j=f;c[j>>2]=d;c[j+4>>2]=C}}else{while(1){j=f;d=c[j+4>>2]|0;if(!(d>>>0>0|(d|0)==0&(c[j>>2]|0)>>>0>255))break;b[g>>1]=(b[g>>1]|0)+40;d=f;d=hR(c[d>>2]|0,c[d+4>>2]|0,4)|0;j=f;c[j>>2]=d;c[j+4>>2]=C}while(1){j=f;d=c[j+4>>2]|0;if(!(d>>>0>0|(d|0)==0&(c[j>>2]|0)>>>0>15))break a;b[g>>1]=(b[g>>1]|0)+10;d=f;d=hR(c[d>>2]|0,c[d+4>>2]|0,1)|0;j=f;c[j>>2]=d;c[j+4>>2]=C}}while(0);b[e>>1]=(b[10876+((c[f>>2]&7)<<1)>>1]|0)+(b[g>>1]|0)-10;j=b[e>>1]|0;i=h;return j|0}function Ij(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;Jj(c[(c[f>>2]|0)+212>>2]|0,c[e>>2]|0);i=d;return}function Jj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[(c[f>>2]|0)+16>>2]=c[e>>2];e=c[33]|0;b=c[(c[f>>2]|0)+44>>2]|0;a=Zi(c[f>>2]|0)|0;Rb[e&255](b,a);i=d;return}function Kj(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;m=o+8|0;l=o;g=o+32|0;h=o+28|0;j=o+24|0;k=o+20|0;n=o+16|0;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[c[g>>2]>>2];if((a[(c[k>>2]|0)+65>>0]|0)==0?(c[(c[k>>2]|0)+24>>2]&65536|0)==0:0){if(!(c[h>>2]|0))c[h>>2]=21139;e=c[k>>2]|0;c[l>>2]=c[h>>2];c[n>>2]=Bh(e,21141,l)|0;if(c[j>>2]|0){e=c[k>>2]|0;f=c[j>>2]|0;c[m>>2]=c[n>>2];c[m+4>>2]=f;c[n>>2]=Bh(e,21172,m)|0}Sf(c[k>>2]|0,c[c[(c[g>>2]|0)+4>>2]>>2]|0);c[c[(c[g>>2]|0)+4>>2]>>2]=c[n>>2]}if(d[(c[k>>2]|0)+65>>0]|0){f=7;e=c[g>>2]|0;e=e+12|0;c[e>>2]=f;i=o;return}f=Lj(109430)|0;e=c[g>>2]|0;e=e+12|0;c[e>>2]=f;i=o;return}function Lj(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+8|0;c[e>>2]=a;e=c[e>>2]|0;a=(kf()|0)+20|0;c[d>>2]=e;c[d+4>>2]=a;Rd(11,21180,d);i=b;return 11}function Mj(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;n=m+12|0;h=m+16|0;j=m+8|0;k=m+4|0;l=m;c[n>>2]=b;a[h>>0]=e;c[j>>2]=f;c[k>>2]=g;g=c[n>>2]|0;if(c[j>>2]|0)c[l>>2]=Nj(g,c[j>>2]|0,c[k>>2]|0)|0;else c[l>>2]=c[g+8>>2];if(!(c[l>>2]|0)){n=c[l>>2]|0;i=m;return n|0}c[l>>2]=(c[l>>2]|0)+(((d[h>>0]|0)-1|0)*20|0);n=c[l>>2]|0;i=m;return n|0}function Nj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;f=l+20|0;g=l+16|0;m=l+12|0;j=l+8|0;h=l+4|0;k=l;c[f>>2]=b;c[g>>2]=d;c[m>>2]=e;c[j>>2]=nj((c[f>>2]|0)+432|0,c[g>>2]|0)|0;if(!(0==(c[j>>2]|0)&(c[m>>2]|0)!=0)){m=c[j>>2]|0;i=l;return m|0}c[h>>2]=If(c[g>>2]|0)|0;c[j>>2]=ph(c[f>>2]|0,60+(c[h>>2]|0)+1|0,0)|0;if(!(c[j>>2]|0)){m=c[j>>2]|0;i=l;return m|0}c[k>>2]=0;c[c[j>>2]>>2]=(c[j>>2]|0)+60;a[(c[j>>2]|0)+4>>0]=1;c[(c[j>>2]|0)+20>>2]=(c[j>>2]|0)+60;a[(c[j>>2]|0)+20+4>>0]=2;c[(c[j>>2]|0)+40>>2]=(c[j>>2]|0)+60;a[(c[j>>2]|0)+40+4>>0]=3;iR(c[c[j>>2]>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;a[(c[c[j>>2]>>2]|0)+(c[h>>2]|0)>>0]=0;c[k>>2]=Oj((c[f>>2]|0)+432|0,c[c[j>>2]>>2]|0,c[j>>2]|0)|0;if(!(c[k>>2]|0)){m=c[j>>2]|0;i=l;return m|0}jh(c[f>>2]|0);Sf(c[f>>2]|0,c[k>>2]|0);c[j>>2]=0;m=c[j>>2]|0;i=l;return m|0}function Oj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;k=n+28|0;l=n+24|0;e=n+20|0;f=n+16|0;h=n+12|0;g=n+8|0;m=n+4|0;j=n;c[l>>2]=a;c[e>>2]=b;c[f>>2]=d;c[g>>2]=oj(c[l>>2]|0,c[e>>2]|0,h)|0;if(c[g>>2]|0){c[j>>2]=c[(c[g>>2]|0)+8>>2];if(!(c[f>>2]|0))Pj(c[l>>2]|0,c[g>>2]|0,c[h>>2]|0);else{c[(c[g>>2]|0)+8>>2]=c[f>>2];c[(c[g>>2]|0)+12>>2]=c[e>>2]}c[k>>2]=c[j>>2];m=c[k>>2]|0;i=n;return m|0}if(!(c[f>>2]|0)){c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}c[m>>2]=_f(16,0)|0;if(!(c[m>>2]|0)){c[k>>2]=c[f>>2];m=c[k>>2]|0;i=n;return m|0}c[(c[m>>2]|0)+12>>2]=c[e>>2];c[(c[m>>2]|0)+8>>2]=c[f>>2];b=(c[l>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+1;if(((c[(c[l>>2]|0)+4>>2]|0)>>>0>=10?(c[(c[l>>2]|0)+4>>2]|0)>>>0>c[c[l>>2]>>2]<<1>>>0:0)?(Qj(c[l>>2]|0,c[(c[l>>2]|0)+4>>2]<<1)|0)!=0:0){b=pj(c[e>>2]|0)|0;c[h>>2]=(b>>>0)%((c[c[l>>2]>>2]|0)>>>0)|0}if(c[(c[l>>2]|0)+12>>2]|0)e=(c[(c[l>>2]|0)+12>>2]|0)+(c[h>>2]<<3)|0;else e=0;Rj(c[l>>2]|0,e,c[m>>2]|0);c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}function Pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;b=c[c[f>>2]>>2]|0;if(c[(c[f>>2]|0)+4>>2]|0)c[c[(c[f>>2]|0)+4>>2]>>2]=b;else c[(c[e>>2]|0)+8>>2]=b;if(c[c[f>>2]>>2]|0)c[(c[c[f>>2]>>2]|0)+4>>2]=c[(c[f>>2]|0)+4>>2];if(c[(c[e>>2]|0)+12>>2]|0){c[h>>2]=(c[(c[e>>2]|0)+12>>2]|0)+(c[g>>2]<<3);if((c[(c[h>>2]|0)+4>>2]|0)==(c[f>>2]|0))c[(c[h>>2]|0)+4>>2]=c[c[f>>2]>>2];h=c[h>>2]|0;c[h>>2]=(c[h>>2]|0)+-1}Kd(c[f>>2]|0);h=(c[e>>2]|0)+4|0;c[h>>2]=(c[h>>2]|0)+-1;if(c[(c[e>>2]|0)+4>>2]|0){i=j;return}vj(c[e>>2]|0);i=j;return}function Qj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;e=l+20|0;f=l+16|0;j=l+12|0;g=l+8|0;k=l+4|0;h=l;c[e>>2]=a;c[f>>2]=b;c[f>>2]=c[f>>2]<<3>>>0>1024?128:b;if((c[f>>2]|0)==(c[c[e>>2]>>2]|0)){c[d>>2]=0;a=c[d>>2]|0;i=l;return a|0}Sj();c[j>>2]=_f(c[f>>2]<<3,0)|0;Tj();if(!(c[j>>2]|0)){c[d>>2]=0;a=c[d>>2]|0;i=l;return a|0}Kd(c[(c[e>>2]|0)+12>>2]|0);c[(c[e>>2]|0)+12>>2]=c[j>>2];a=(($f(c[j>>2]|0)|0)>>>0)/8|0;c[f>>2]=a;c[c[e>>2]>>2]=a;kR(c[j>>2]|0,0,c[f>>2]<<3|0)|0;c[g>>2]=c[(c[e>>2]|0)+8>>2];c[(c[e>>2]|0)+8>>2]=0;while(1){if(!(c[g>>2]|0))break;a=pj(c[(c[g>>2]|0)+12>>2]|0)|0;c[h>>2]=(a>>>0)%((c[f>>2]|0)>>>0)|0;c[k>>2]=c[c[g>>2]>>2];Rj(c[e>>2]|0,(c[j>>2]|0)+(c[h>>2]<<3)|0,c[g>>2]|0);c[g>>2]=c[k>>2]}c[d>>2]=1;a=c[d>>2]|0;i=l;return a|0}function Rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+12|0;e=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[e>>2]=b;c[g>>2]=d;if(c[e>>2]|0){if(c[c[e>>2]>>2]|0)b=c[(c[e>>2]|0)+4>>2]|0;else b=0;c[h>>2]=b;d=c[e>>2]|0;c[d>>2]=(c[d>>2]|0)+1;c[(c[e>>2]|0)+4>>2]=c[g>>2]}else c[h>>2]=0;if(!(c[h>>2]|0)){c[c[g>>2]>>2]=c[(c[f>>2]|0)+8>>2];if(c[(c[f>>2]|0)+8>>2]|0)c[(c[(c[f>>2]|0)+8>>2]|0)+4>>2]=c[g>>2];c[(c[g>>2]|0)+4>>2]=0;c[(c[f>>2]|0)+8>>2]=c[g>>2];i=j;return}c[c[g>>2]>>2]=c[h>>2];c[(c[g>>2]|0)+4>>2]=c[(c[h>>2]|0)+4>>2];b=c[g>>2]|0;if(c[(c[h>>2]|0)+4>>2]|0)c[c[(c[h>>2]|0)+4>>2]>>2]=b;else c[(c[f>>2]|0)+8>>2]=b;c[(c[h>>2]|0)+4>>2]=c[g>>2];i=j;return}function Sj(){if(!(c[421]|0))return;Vb[c[1684>>2]&255]();return}function Tj(){if(!(c[422]|0))return;Vb[c[1688>>2]&255]();return}function Uj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=(c[h>>2]|0)<(c[k>>2]|0)?c[h>>2]|0:c[k>>2]|0;c[n>>2]=vQ(c[j>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;if(c[n>>2]|0){n=c[n>>2]|0;i=o;return n|0}if(((c[g>>2]|0)!=0?(Tt((c[j>>2]|0)+(c[m>>2]|0)|0,(c[h>>2]|0)-(c[m>>2]|0)|0)|0)!=0:0)?(Tt((c[l>>2]|0)+(c[m>>2]|0)|0,(c[k>>2]|0)-(c[m>>2]|0)|0)|0)!=0:0){n=c[n>>2]|0;i=o;return n|0}c[n>>2]=(c[h>>2]|0)-(c[k>>2]|0);n=c[n>>2]|0;i=o;return n|0}function Vj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;g=k+16|0;m=k+12|0;h=k+8|0;l=k+4|0;j=k;c[k+20>>2]=a;c[g>>2]=b;c[m>>2]=d;c[h>>2]=e;c[l>>2]=f;c[j>>2]=zd(c[m>>2]|0,c[l>>2]|0,(c[g>>2]|0)<(c[h>>2]|0)?c[g>>2]|0:c[h>>2]|0)|0;if(c[j>>2]|0){m=c[j>>2]|0;i=k;return m|0}c[j>>2]=(c[g>>2]|0)-(c[h>>2]|0);m=c[j>>2]|0;i=k;return m|0}function Wj(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;S=i;i=i+160|0;K=S+32|0;J=S+24|0;I=S+16|0;H=S+8|0;m=S+140|0;T=S+136|0;n=S+132|0;o=S+128|0;p=S+124|0;q=S+120|0;r=S+116|0;G=S+112|0;v=S+108|0;Q=S+104|0;M=S+100|0;t=S+144|0;l=S+96|0;O=S+92|0;u=S+88|0;x=S+84|0;y=S+80|0;k=S;F=S+76|0;D=S+72|0;P=S+68|0;E=S+64|0;s=S+60|0;N=S+56|0;A=S+52|0;z=S+48|0;w=S+44|0;B=S+40|0;L=S+36|0;c[T>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=j;c[G>>2]=0;c[v>>2]=c[c[o>>2]>>2];c[Q>>2]=c[T>>2];c[l>>2]=If(c[n>>2]|0)|0;a:do if(((c[v>>2]&64|0)!=0|(c[5]|0)!=0)&(c[l>>2]|0)>=5?(vQ(c[n>>2]|0,26902,5)|0)==0:0){c[y>>2]=0;e=(c[l>>2]|0)+2|0;T=k;c[T>>2]=e;c[T+4>>2]=((e|0)<0)<<31>>31;c[v>>2]=c[v>>2]|64;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[l>>2]|0))break;e=(a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0)==38&1;T=k;e=gR(c[T>>2]|0,c[T+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;T=k;c[T>>2]=e;c[T+4>>2]=C;c[x>>2]=(c[x>>2]|0)+1}T=k;c[M>>2]=Jd(c[T>>2]|0,c[T+4>>2]|0)|0;if(!(c[M>>2]|0)){c[m>>2]=7;T=c[m>>2]|0;i=S;return T|0}c[x>>2]=5;do if((a[(c[n>>2]|0)+5>>0]|0)==47?(a[(c[n>>2]|0)+6>>0]|0)==47:0){c[x>>2]=7;while(1){if(a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0)k=(a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0)!=47;else k=0;l=c[x>>2]|0;if(!k)break;c[x>>2]=l+1}if((l|0)!=7){if((c[x>>2]|0)==16?(vQ(26908,(c[n>>2]|0)+7|0,9)|0)==0:0)break;T=(c[n>>2]|0)+7|0;c[H>>2]=(c[x>>2]|0)-7;c[H+4>>2]=T;T=Od(26918,H)|0;c[c[r>>2]>>2]=T;c[G>>2]=1;break a}}while(0);c[u>>2]=0;b:while(1){T=a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0;a[t>>0]=T;if(!(T<<24>>24))break;if((a[t>>0]|0)==35)break;c[x>>2]=(c[x>>2]|0)+1;do if(((a[t>>0]|0)==37?(d[19267+(d[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0)>>0]&8|0)!=0:0)?(d[19267+(d[(c[n>>2]|0)+((c[x>>2]|0)+1)>>0]|0)>>0]&8|0)!=0:0){T=c[x>>2]|0;c[x>>2]=T+1;c[F>>2]=((Gi(a[(c[n>>2]|0)+T>>0]|0)|0)&255)<<4;T=c[x>>2]|0;c[x>>2]=T+1;T=(Gi(a[(c[n>>2]|0)+T>>0]|0)|0)&255;c[F>>2]=(c[F>>2]|0)+T;if(c[F>>2]|0){a[t>>0]=c[F>>2];break}while(1){T=a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0;a[t>>0]=T;if(!(T<<24>>24))continue b;if((a[t>>0]|0)==35)continue b;if((c[u>>2]|0)==0?(a[t>>0]|0)==63:0)continue b;if((c[u>>2]|0)==1){if((a[t>>0]|0)==61)continue b;if((a[t>>0]|0)==38)continue b}if((c[u>>2]|0)==2?(a[t>>0]|0)==38:0)continue b;c[x>>2]=(c[x>>2]|0)+1}}else R=37;while(0);c:do if((R|0)==37){R=0;do if((c[u>>2]|0)==1){if((a[t>>0]|0)!=38?(a[t>>0]|0)!=61:0)break;if(!(a[(c[M>>2]|0)+((c[y>>2]|0)-1)>>0]|0))while(1){if(!(a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0))continue b;if((a[(c[n>>2]|0)+(c[x>>2]|0)>>0]|0)==35)continue b;if((a[(c[n>>2]|0)+((c[x>>2]|0)-1)>>0]|0)==38)continue b;c[x>>2]=(c[x>>2]|0)+1}else{if((a[t>>0]|0)==38){T=c[y>>2]|0;c[y>>2]=T+1;a[(c[M>>2]|0)+T>>0]=0}else c[u>>2]=2;a[t>>0]=0;break c}}while(0);if(!((c[u>>2]|0)==0?(a[t>>0]|0)==63:0)){if((c[u>>2]|0)!=2)break;if((a[t>>0]|0)!=38)break}a[t>>0]=0;c[u>>2]=1}while(0);H=a[t>>0]|0;T=c[y>>2]|0;c[y>>2]=T+1;a[(c[M>>2]|0)+T>>0]=H}if((c[u>>2]|0)==1){T=c[y>>2]|0;c[y>>2]=T+1;a[(c[M>>2]|0)+T>>0]=0}T=c[y>>2]|0;c[y>>2]=T+1;a[(c[M>>2]|0)+T>>0]=0;T=c[y>>2]|0;c[y>>2]=T+1;a[(c[M>>2]|0)+T>>0]=0;T=(If(c[M>>2]|0)|0)+1|0;c[O>>2]=(c[M>>2]|0)+T;while(1){if(!(a[c[O>>2]>>0]|0)){R=84;break a}c[D>>2]=If(c[O>>2]|0)|0;c[P>>2]=(c[O>>2]|0)+((c[D>>2]|0)+1);c[E>>2]=If(c[P>>2]|0)|0;if((c[D>>2]|0)==3?(vQ(26946,c[O>>2]|0,3)|0)==0:0)c[Q>>2]=c[P>>2];else{c[s>>2]=0;c[N>>2]=0;c[A>>2]=0;c[z>>2]=0;if((c[D>>2]|0)==5?(vQ(26950,c[O>>2]|0,5)|0)==0:0){c[A>>2]=393216;c[s>>2]=4912;c[z>>2]=c[A>>2];c[N>>2]=26950}if((c[D>>2]|0)==4?(vQ(26956,c[O>>2]|0,4)|0)==0:0){c[A>>2]=135;c[s>>2]=4936;c[z>>2]=c[A>>2]&c[v>>2];c[N>>2]=26961}if(c[s>>2]|0){c[B>>2]=0;c[w>>2]=0;while(1){if(!(c[(c[s>>2]|0)+(c[w>>2]<<3)>>2]|0))break;c[L>>2]=c[(c[s>>2]|0)+(c[w>>2]<<3)>>2];T=c[E>>2]|0;if((T|0)==(If(c[L>>2]|0)|0)?0==(vQ(c[P>>2]|0,c[L>>2]|0,c[E>>2]|0)|0):0){R=73;break}c[w>>2]=(c[w>>2]|0)+1}if((R|0)==73){R=0;c[B>>2]=c[(c[s>>2]|0)+(c[w>>2]<<3)+4>>2]}if(!(c[B>>2]|0)){R=76;break}if((c[B>>2]&-129|0)>(c[z>>2]|0)){R=78;break}c[v>>2]=c[v>>2]&~c[A>>2]|c[B>>2]}}c[O>>2]=(c[P>>2]|0)+((c[E>>2]|0)+1)}if((R|0)==76){T=c[P>>2]|0;c[I>>2]=c[N>>2];c[I+4>>2]=T;T=Od(26968,I)|0;c[c[r>>2]>>2]=T;c[G>>2]=1;break}else if((R|0)==78){T=c[P>>2]|0;c[J>>2]=c[N>>2];c[J+4>>2]=T;T=Od(26988,J)|0;c[c[r>>2]>>2]=T;c[G>>2]=3;break}}else R=81;while(0);do if((R|0)==81){T=(c[l>>2]|0)+2|0;c[M>>2]=Jd(T,((T|0)<0)<<31>>31)|0;if(c[M>>2]|0){iR(c[M>>2]|0,c[n>>2]|0,c[l>>2]|0)|0;a[(c[M>>2]|0)+(c[l>>2]|0)>>0]=0;a[(c[M>>2]|0)+((c[l>>2]|0)+1)>>0]=0;c[v>>2]=c[v>>2]&-65;R=84;break}c[m>>2]=7;T=c[m>>2]|0;i=S;return T|0}while(0);if((R|0)==84?(T=Cd(c[Q>>2]|0)|0,c[c[p>>2]>>2]=T,(c[c[p>>2]>>2]|0)==0):0){c[K>>2]=c[Q>>2];T=Od(27012,K)|0;c[c[r>>2]>>2]=T;c[G>>2]=1}if(c[G>>2]|0){Kd(c[M>>2]|0);c[M>>2]=0}c[c[o>>2]>>2]=c[v>>2];c[c[q>>2]>>2]=c[M>>2];c[m>>2]=c[G>>2];T=c[m>>2]|0;i=S;return T|0}function Xj(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+192|0;C=I+76|0;m=I+72|0;n=I+68|0;o=I+64|0;D=I+60|0;p=I+56|0;q=I+52|0;F=I+48|0;E=I+44|0;H=I+36|0;x=I+180|0;z=I+80|0;u=I+32|0;t=I+28|0;v=I+24|0;w=I+20|0;A=I+16|0;s=I+12|0;y=I+8|0;r=I+4|0;G=I;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[D>>2]=j;c[p>>2]=k;c[q>>2]=l;c[F>>2]=0;c[I+40>>2]=0;c[H>>2]=0;if(!(c[n>>2]|0))h=1;else h=(a[c[n>>2]>>0]|0)==0;c[u>>2]=h&1;if((c[n>>2]|0)!=0?(yQ(c[n>>2]|0,26694)|0)==0:0)h=1;else B=5;do if((B|0)==5){if((c[u>>2]|0)!=0?(Sq(c[o>>2]|0)|0)!=0:0){h=1;break}h=(c[q>>2]&128|0)!=0}while(0);c[t>>2]=h&1;if(c[t>>2]|0)c[p>>2]=c[p>>2]|2;if((c[q>>2]&256|0)!=0?(c[t>>2]|0)!=0|(c[u>>2]|0)!=0:0)c[q>>2]=c[q>>2]&-257|512;c[E>>2]=ig(48,0)|0;if(!(c[E>>2]|0)){c[C>>2]=7;H=c[C>>2]|0;i=I;return H|0}a[(c[E>>2]|0)+8>>0]=0;c[c[E>>2]>>2]=c[o>>2];c[(c[E>>2]|0)+32>>2]=c[E>>2];c[(c[E>>2]|0)+32+4>>2]=1;do if(!(c[u>>2]|0)){if((c[t>>2]|0)!=0?(c[q>>2]&64|0)==0:0)break;if(c[q>>2]&131072){c[v>>2]=(If(c[n>>2]|0)|0)+1;c[w>>2]=(c[(c[m>>2]|0)+8>>2]|0)+1;u=(c[w>>2]|0)>(c[v>>2]|0)?c[w>>2]|0:c[v>>2]|0;c[A>>2]=_f(u,((u|0)<0)<<31>>31)|0;a[(c[E>>2]|0)+9>>0]=1;if(!(c[A>>2]|0)){Kd(c[E>>2]|0);c[C>>2]=7;H=c[C>>2]|0;i=I;return H|0}if(!(c[t>>2]|0)){c[H>>2]=Tq(c[m>>2]|0,c[n>>2]|0,c[w>>2]|0,c[A>>2]|0)|0;if(c[H>>2]|0){Kd(c[A>>2]|0);Kd(c[E>>2]|0);c[C>>2]=c[H>>2];H=c[C>>2]|0;i=I;return H|0}}else iR(c[A>>2]|0,c[n>>2]|0,c[v>>2]|0)|0;c[F>>2]=c[1208];while(1){if(!(c[F>>2]|0))break;w=c[A>>2]|0;if(0==(yQ(w,Fi(c[c[F>>2]>>2]|0,0)|0)|0)?(w=ti(c[c[F>>2]>>2]|0)|0,(w|0)==(c[m>>2]|0)):0){B=29;break}c[F>>2]=c[(c[F>>2]|0)+68>>2]}do if((B|0)==29){c[s>>2]=(c[(c[o>>2]|0)+20>>2]|0)-1;while(1){if((c[s>>2]|0)<0){B=35;break}c[y>>2]=c[(c[(c[o>>2]|0)+16>>2]|0)+(c[s>>2]<<4)+4>>2];if((c[y>>2]|0)!=0?(c[(c[y>>2]|0)+4>>2]|0)==(c[F>>2]|0):0)break;c[s>>2]=(c[s>>2]|0)+-1}if((B|0)==35){c[(c[E>>2]|0)+4>>2]=c[F>>2];y=(c[F>>2]|0)+64|0;c[y>>2]=(c[y>>2]|0)+1;break}Kd(c[A>>2]|0);Kd(c[E>>2]|0);c[C>>2]=19;H=c[C>>2]|0;i=I;return H|0}while(0);Kd(c[A>>2]|0)}}while(0);do if(!(c[F>>2]|0)){c[F>>2]=ig(84,0)|0;if(!(c[F>>2]|0)){c[H>>2]=7;break}c[H>>2]=Vq(c[m>>2]|0,c[F>>2]|0,c[n>>2]|0,88,c[p>>2]|0,c[q>>2]|0,149)|0;if(!(c[H>>2]|0)){A=(c[o>>2]|0)+40|0;Wq(c[c[F>>2]>>2]|0,c[A>>2]|0,c[A+4>>2]|0);c[H>>2]=Xq(c[c[F>>2]>>2]|0,100,z)|0}if(!(c[H>>2]|0)){a[(c[F>>2]|0)+16>>0]=c[p>>2];c[(c[F>>2]|0)+4>>2]=c[o>>2];Zq(c[c[F>>2]>>2]|0,171,c[F>>2]|0);c[(c[E>>2]|0)+4>>2]=c[F>>2];c[(c[F>>2]|0)+8>>2]=0;c[(c[F>>2]|0)+12>>2]=0;if((_q(c[c[F>>2]>>2]|0)|0)<<24>>24){A=(c[F>>2]|0)+22|0;b[A>>1]=e[A>>1]|1}c[(c[F>>2]|0)+32>>2]=d[z+16>>0]<<8|d[z+17>>0]<<16;if(((c[(c[F>>2]|0)+32>>2]|0)>>>0>=512?(c[(c[F>>2]|0)+32>>2]|0)>>>0<=65536:0)?((c[(c[F>>2]|0)+32>>2]|0)-1&c[(c[F>>2]|0)+32>>2]|0)==0:0){a[x>>0]=a[z+20>>0]|0;A=(c[F>>2]|0)+22|0;b[A>>1]=e[A>>1]|2;A=($q(z+52|0)|0)!=0;a[(c[F>>2]|0)+17>>0]=A?1:0;A=($q(z+64|0)|0)!=0;a[(c[F>>2]|0)+18>>0]=A?1:0}else{c[(c[F>>2]|0)+32>>2]=0;if(!((c[n>>2]|0)==0|(c[t>>2]|0)!=0)){a[(c[F>>2]|0)+17>>0]=0;a[(c[F>>2]|0)+18>>0]=0}a[x>>0]=0}c[H>>2]=Qi(c[c[F>>2]>>2]|0,(c[F>>2]|0)+32|0,d[x>>0]|0)|0;if(!(c[H>>2]|0)){c[(c[F>>2]|0)+36>>2]=(c[(c[F>>2]|0)+32>>2]|0)-(d[x>>0]|0);if(a[(c[E>>2]|0)+9>>0]|0){c[(c[F>>2]|0)+64>>2]=1;c[(c[F>>2]|0)+68>>2]=c[1208];c[1208]=c[F>>2];B=56}else B=56}}}else B=56;while(0);if((B|0)==56){a:do if(a[(c[E>>2]|0)+9>>0]|0){c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[(c[o>>2]|0)+20>>2]|0))break a;B=c[(c[(c[o>>2]|0)+16>>2]|0)+(c[r>>2]<<4)+4>>2]|0;c[G>>2]=B;if((B|0)!=0?(d[(c[G>>2]|0)+9>>0]|0)!=0:0)break;c[r>>2]=(c[r>>2]|0)+1}while(1){if(!(c[(c[G>>2]|0)+28>>2]|0))break;c[G>>2]=c[(c[G>>2]|0)+28>>2]}if((c[(c[E>>2]|0)+4>>2]|0)>>>0<(c[(c[G>>2]|0)+4>>2]|0)>>>0){c[(c[E>>2]|0)+24>>2]=c[G>>2];c[(c[E>>2]|0)+28>>2]=0;c[(c[G>>2]|0)+28>>2]=c[E>>2];break}while(1){if(c[(c[G>>2]|0)+24>>2]|0)k=(c[(c[(c[G>>2]|0)+24>>2]|0)+4>>2]|0)>>>0<(c[(c[E>>2]|0)+4>>2]|0)>>>0;else k=0;h=c[(c[G>>2]|0)+24>>2]|0;if(!k)break;c[G>>2]=h}c[(c[E>>2]|0)+24>>2]=h;c[(c[E>>2]|0)+28>>2]=c[G>>2];if(c[(c[E>>2]|0)+24>>2]|0)c[(c[(c[E>>2]|0)+24>>2]|0)+28>>2]=c[E>>2];c[(c[G>>2]|0)+24>>2]=c[E>>2]}while(0);c[c[D>>2]>>2]=c[E>>2]}if(!(c[H>>2]|0)){if(!(Rq(c[E>>2]|0,0,0)|0))Ij(c[c[(c[E>>2]|0)+4>>2]>>2]|0,2e3)}else{if((c[F>>2]|0)!=0?(c[c[F>>2]>>2]|0)!=0:0)ar(c[c[F>>2]>>2]|0)|0;Kd(c[F>>2]|0);Kd(c[E>>2]|0);c[c[D>>2]>>2]=0}c[C>>2]=c[H>>2];H=c[C>>2]|0;i=I;return H|0}function Yj(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=e;if(c[g>>2]|0)c[h>>2]=Rq(c[g>>2]|0,84,150)|0;else c[h>>2]=ph(0,84,0)|0;if(!(c[h>>2]|0)){jh(c[f>>2]|0);e=c[h>>2]|0;i=j;return e|0}if(d[(c[h>>2]|0)+76>>0]|0){e=c[h>>2]|0;i=j;return e|0}uj((c[h>>2]|0)+8|0);uj((c[h>>2]|0)+24|0);uj((c[h>>2]|0)+40|0);uj((c[h>>2]|0)+56|0);a[(c[h>>2]|0)+77>>0]=1;e=c[h>>2]|0;i=j;return e|0}function Zj(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[b>>2]=a;c[e>>2]=xf(c[b>>2]|0,26688,2)|0;if((c[e>>2]|0)!=7){i=d;return}jh(c[b>>2]|0);i=d;return}function _j(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;g=k;b=k+24|0;e=k+20|0;d=k+16|0;f=k+12|0;h=k+8|0;j=k+4|0;c[b>>2]=a;c[d>>2]=1;if(!(c[382]|0)){i=k;return}c[e>>2]=0;while(1){if(!(c[d>>2]|0))break;if((c[e>>2]|0)>>>0>=(c[382]|0)>>>0){c[h>>2]=0;c[d>>2]=0}else c[h>>2]=c[(c[383]|0)+(c[e>>2]<<2)>>2];c[j>>2]=0;if((c[h>>2]|0)!=0?(a=Ob[c[h>>2]&255](c[b>>2]|0,j,3980)|0,c[f>>2]=a,(a|0)!=0):0){l=c[b>>2]|0;a=c[f>>2]|0;c[g>>2]=c[j>>2];hg(l,a,26649,g);c[d>>2]=0}Kd(c[j>>2]|0);c[e>>2]=(c[e>>2]|0)+1}i=k;return}function $j(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+24|0;d=k+20|0;j=k+16|0;e=k+12|0;g=k+8|0;f=k+4|0;h=k;c[d>>2]=a;c[j>>2]=0;c[e>>2]=0;c[g>>2]=0;c[f>>2]=0;c[h>>2]=0;ak(h);c[j>>2]=bk(c[d>>2]|0)|0;if(c[j>>2]|0){c[b>>2]=c[j>>2];j=c[b>>2]|0;i=k;return j|0}ck(g);dk(f);c[e>>2]=Id(20)|0;if(c[e>>2]|0)ek(c[e>>2]|0,1,1);else c[j>>2]=7;do if(!(c[j>>2]|0)){if(((fk(c[e>>2]|0,21308,7,c[g>>2]|0)|0)==0?(fk(c[e>>2]|0,21315,7,c[f>>2]|0)|0)==0:0)?(fk(c[e>>2]|0,21322,10,c[h>>2]|0)|0)==0:0)break;c[j>>2]=7}while(0);if((((((0==(c[j>>2]|0)?(h=gk(c[d>>2]|0,c[e>>2]|0,21332)|0,c[j>>2]=h,0==(h|0)):0)?(h=xf(c[d>>2]|0,21347,-1)|0,c[j>>2]=h,0==(h|0)):0)?(h=xf(c[d>>2]|0,21355,1)|0,c[j>>2]=h,0==(h|0)):0)?(h=xf(c[d>>2]|0,21363,1)|0,c[j>>2]=h,0==(h|0)):0)?(h=xf(c[d>>2]|0,21363,2)|0,c[j>>2]=h,0==(h|0)):0)?(h=xf(c[d>>2]|0,21373,1)|0,c[j>>2]=h,0==(h|0)):0){c[j>>2]=ef(c[d>>2]|0,21382,1692,c[e>>2]|0,151)|0;if(!(c[j>>2]|0))c[j>>2]=ef(c[d>>2]|0,21387,1692,c[e>>2]|0,0)|0;if(!(c[j>>2]|0))c[j>>2]=ik(c[d>>2]|0,c[e>>2]|0)|0;c[b>>2]=c[j>>2];j=c[b>>2]|0;i=k;return j|0}if(c[e>>2]|0){jk(c[e>>2]|0);Kd(c[e>>2]|0)}c[b>>2]=c[j>>2];j=c[b>>2]|0;i=k;return j|0}function ak(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[c[d>>2]>>2]=2312;i=b;return}function bk(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=df(c[e>>2]|0,26300,2220,0)|0;i=d;return c[b>>2]|0}function ck(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[c[d>>2]>>2]=2192;i=b;return}function dk(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[c[d>>2]>>2]=2164;i=b;return}function ek(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f;j=f+5|0;h=f+4|0;c[g>>2]=b;a[j>>0]=d;a[h>>0]=e;a[c[g>>2]>>0]=a[j>>0]|0;a[(c[g>>2]|0)+1>>0]=a[h>>0]|0;c[(c[g>>2]|0)+8>>2]=0;c[(c[g>>2]|0)+4>>2]=0;c[(c[g>>2]|0)+12>>2]=0;c[(c[g>>2]|0)+16>>2]=0;i=f;return}function fk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;k=s+40|0;l=s+36|0;m=s+32|0;n=s+28|0;o=s+24|0;q=s+20|0;p=s+16|0;g=s+12|0;r=s+8|0;t=s+4|0;h=s;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[t>>2]=Bk(a[c[l>>2]>>0]|0)|0;c[q>>2]=Yb[c[t>>2]&255](c[m>>2]|0,c[n>>2]|0)|0;c[p>>2]=c[q>>2]&(c[(c[l>>2]|0)+12>>2]|0)-1;c[g>>2]=Ck(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[p>>2]|0)|0;if(c[g>>2]|0){c[h>>2]=c[(c[g>>2]|0)+8>>2];if(!(c[o>>2]|0))Vp(c[l>>2]|0,c[g>>2]|0,c[p>>2]|0);else c[(c[g>>2]|0)+8>>2]=c[o>>2];c[k>>2]=c[h>>2];t=c[k>>2]|0;i=s;return t|0}if(!(c[o>>2]|0)){c[k>>2]=0;t=c[k>>2]|0;i=s;return t|0}if(!((c[(c[l>>2]|0)+12>>2]|0)==0?(Wp(c[l>>2]|0,8)|0)!=0:0))j=10;do if((j|0)==10){if((c[(c[l>>2]|0)+4>>2]|0)>=(c[(c[l>>2]|0)+12>>2]|0)?(Wp(c[l>>2]|0,c[(c[l>>2]|0)+12>>2]<<1)|0)!=0:0)break;c[r>>2]=Xp(20)|0;if(!(c[r>>2]|0)){c[k>>2]=c[o>>2];t=c[k>>2]|0;i=s;return t|0}do if((c[m>>2]|0)!=0?(a[(c[l>>2]|0)+1>>0]|0)!=0:0){f=Xp(c[n>>2]|0)|0;c[(c[r>>2]|0)+12>>2]=f;f=c[r>>2]|0;if(c[(c[r>>2]|0)+12>>2]|0){iR(c[f+12>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;break}kk(f);c[k>>2]=c[o>>2];t=c[k>>2]|0;i=s;return t|0}else c[(c[r>>2]|0)+12>>2]=c[m>>2];while(0);c[(c[r>>2]|0)+16>>2]=c[n>>2];t=(c[l>>2]|0)+4|0;c[t>>2]=(c[t>>2]|0)+1;c[p>>2]=c[q>>2]&(c[(c[l>>2]|0)+12>>2]|0)-1;Yp(c[l>>2]|0,(c[(c[l>>2]|0)+16>>2]|0)+(c[p>>2]<<3)|0,c[r>>2]|0);c[(c[r>>2]|0)+8>>2]=c[o>>2];c[k>>2]=0;t=c[k>>2]|0;i=s;return t|0}while(0);c[(c[l>>2]|0)+4>>2]=0;c[k>>2]=c[o>>2];t=c[k>>2]|0;i=s;return t|0}function gk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+20|0;k=j+16|0;f=j+12|0;h=j+8|0;g=j+4|0;c[e>>2]=a;c[k>>2]=b;c[f>>2]=d;c[h>>2]=0;c[g>>2]=c[k>>2];c[j>>2]=5;if(!(c[h>>2]|0))c[h>>2]=vf(c[e>>2]|0,c[f>>2]|0,1,5,c[g>>2]|0,225,0,0)|0;if(c[h>>2]|0){k=c[h>>2]|0;i=j;return k|0}c[h>>2]=vf(c[e>>2]|0,c[f>>2]|0,2,5,c[g>>2]|0,225,0,0)|0;k=c[h>>2]|0;i=j;return k|0}function hk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];jk(c[d>>2]|0);Kd(c[d>>2]|0);i=b;return}function ik(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;c[d>>2]=df(c[g>>2]|0,21392,1784,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function jk(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=b;c[e>>2]=c[(c[d>>2]|0)+8>>2];c[(c[d>>2]|0)+8>>2]=0;kk(c[(c[d>>2]|0)+16>>2]|0);c[(c[d>>2]|0)+16>>2]=0;c[(c[d>>2]|0)+12>>2]=0;while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[c[e>>2]>>2];if((a[(c[d>>2]|0)+1>>0]|0)!=0?(c[(c[e>>2]|0)+12>>2]|0)!=0:0)kk(c[(c[e>>2]|0)+12>>2]|0);kk(c[e>>2]|0);c[e>>2]=c[f>>2]}c[(c[d>>2]|0)+4>>2]=0;i=g;return}function kk(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[d>>2]|0);i=b;return}function lk(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+64|0;h=w+56|0;x=w+52|0;j=w+48|0;k=w+44|0;l=w+40|0;m=w+36|0;n=w+32|0;s=w+28|0;r=w+24|0;t=w+20|0;u=w+16|0;p=w+12|0;q=w+8|0;v=w+4|0;o=w;c[x>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[s>>2]=0;c[r>>2]=0;c[t>>2]=0;c[p>>2]=0;c[u>>2]=ff(c[x>>2]|0,21405)|0;if(c[u>>2]|0){c[h>>2]=c[u>>2];x=c[h>>2]|0;i=w;return x|0}c[q>>2]=(c[k>>2]|0)-3;c[u>>2]=wk(c[q>>2]|0,(c[l>>2]|0)+12|0,p)|0;if(!(c[u>>2]|0)){if((c[q>>2]|0)<1)c[v>>2]=21308;else c[v>>2]=c[c[p>>2]>>2];c[u>>2]=xk(c[j>>2]|0,c[v>>2]|0,r,c[n>>2]|0)|0}if(!(c[u>>2]|0)){c[o>>2]=(c[p>>2]|0)+4;c[u>>2]=Ob[c[(c[r>>2]|0)+4>>2]&255]((c[q>>2]|0)>1?(c[q>>2]|0)-1|0:0,c[o>>2]|0,t)|0}if((c[u>>2]|0)==0?(c[s>>2]=Id(20)|0,(c[s>>2]|0)==0):0)c[u>>2]=7;if(c[u>>2]|0){if(c[t>>2]|0)Tb[c[(c[r>>2]|0)+8>>2]&255](c[t>>2]|0)|0}else{x=c[s>>2]|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[(c[s>>2]|0)+12>>2]=c[r>>2];c[(c[s>>2]|0)+16>>2]=c[t>>2];c[c[m>>2]>>2]=c[s>>2]}Kd(c[p>>2]|0);c[h>>2]=c[u>>2];x=c[h>>2]|0;i=w;return x|0}function mk(b,e){b=b|0;e=e|0;var f=0,g=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+4|0;j=k;c[k+8>>2]=b;c[g>>2]=e;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[g>>2]>>2]|0)){e=8;break}if(((d[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*12|0)+5>>0]|0|0)!=0?(c[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*12|0)>>2]|0)==0:0)?(d[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*12|0)+4>>0]|0|0)==2:0){e=6;break}c[j>>2]=(c[j>>2]|0)+1}if((e|0)==6){c[(c[g>>2]|0)+20>>2]=1;c[(c[(c[g>>2]|0)+16>>2]|0)+(c[j>>2]<<3)>>2]=1;a[(c[(c[g>>2]|0)+16>>2]|0)+(c[j>>2]<<3)+4>>0]=1;h[(c[g>>2]|0)+40>>3]=1.0;c[f>>2]=0;j=c[f>>2]|0;i=k;return j|0}else if((e|0)==8){c[(c[g>>2]|0)+20>>2]=0;c[f>>2]=0;j=c[f>>2]|0;i=k;return j|0}return 0}function nk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Tb[c[(c[(c[d>>2]|0)+12>>2]|0)+8>>2]&255](c[(c[d>>2]|0)+16>>2]|0)|0;Kd(c[d>>2]|0);i=b;return 0}function ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+12|0;e=g+4|0;f=g;c[g+8>>2]=a;c[e>>2]=b;c[f>>2]=Id(36)|0;if(!(c[f>>2]|0)){c[d>>2]=7;f=c[d>>2]|0;i=g;return f|0}else{a=c[f>>2]|0;b=a+36|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));c[c[e>>2]>>2]=c[f>>2];c[d>>2]=0;f=c[d>>2]|0;i=g;return f|0}return 0}function pk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];vk(c[d>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function qk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+48|0;h=q+40|0;j=q+36|0;r=q+32|0;k=q+20|0;o=q+16|0;m=q+12|0;n=q+8|0;p=q+4|0;l=q;c[j>>2]=b;c[r>>2]=d;c[q+28>>2]=e;c[q+24>>2]=f;c[k>>2]=g;c[o>>2]=1;c[m>>2]=c[j>>2];c[n>>2]=c[c[j>>2]>>2];vk(c[m>>2]|0);do if((c[r>>2]|0)==1){c[p>>2]=ae(c[c[k>>2]>>2]|0)|0;c[l>>2]=be(c[c[k>>2]>>2]|0)|0;r=Id((c[l>>2]|0)+1|0)|0;c[(c[m>>2]|0)+4>>2]=r;if(!(c[(c[m>>2]|0)+4>>2]|0)){c[o>>2]=7;break}iR(c[(c[m>>2]|0)+4>>2]|0,c[p>>2]|0,c[l>>2]|0)|0;a[(c[(c[m>>2]|0)+4>>2]|0)+(c[l>>2]|0)>>0]=0;c[o>>2]=Wb[c[(c[(c[n>>2]|0)+12>>2]|0)+12>>2]&255](c[(c[n>>2]|0)+16>>2]|0,c[(c[m>>2]|0)+4>>2]|0,c[l>>2]|0,(c[m>>2]|0)+8|0)|0;if(!(c[o>>2]|0))c[c[(c[m>>2]|0)+8>>2]>>2]=c[(c[n>>2]|0)+16>>2]}while(0);if(c[o>>2]|0){c[h>>2]=c[o>>2];r=c[h>>2]|0;i=q;return r|0}else{c[h>>2]=rk(c[j>>2]|0)|0;r=c[h>>2]|0;i=q;return r|0}return 0}function rk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;b=e+8|0;f=e+4|0; -d=e;c[g>>2]=a;c[b>>2]=c[g>>2];c[f>>2]=c[c[g>>2]>>2];a=(c[b>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;c[d>>2]=Sb[c[(c[(c[f>>2]|0)+12>>2]|0)+20>>2]&255](c[(c[b>>2]|0)+8>>2]|0,(c[b>>2]|0)+16|0,(c[b>>2]|0)+20|0,(c[b>>2]|0)+24|0,(c[b>>2]|0)+28|0,(c[b>>2]|0)+32|0)|0;if(!(c[d>>2]|0)){g=c[d>>2]|0;i=e;return g|0}vk(c[b>>2]|0);if((c[d>>2]|0)!=101){g=c[d>>2]|0;i=e;return g|0}c[d>>2]=0;g=c[d>>2]|0;i=e;return g|0}function sk(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];i=d;return(c[(c[b>>2]|0)+16>>2]|0)==0|0}function tk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;j=g+12|0;e=g+8|0;h=g+4|0;f=g;c[j>>2]=a;c[e>>2]=b;c[h>>2]=d;c[f>>2]=c[j>>2];switch(c[h>>2]|0){case 0:{ne(c[e>>2]|0,c[(c[f>>2]|0)+4>>2]|0,-1,-1);i=g;return 0}case 1:{ne(c[e>>2]|0,c[(c[f>>2]|0)+16>>2]|0,c[(c[f>>2]|0)+20>>2]|0,-1);i=g;return 0}case 2:{ke(c[e>>2]|0,c[(c[f>>2]|0)+24>>2]|0);i=g;return 0}case 3:{ke(c[e>>2]|0,c[(c[f>>2]|0)+28>>2]|0);i=g;return 0}default:{ke(c[e>>2]|0,c[(c[f>>2]|0)+32>>2]|0);i=g;return 0}}return 0}function uk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f>>2]=c[g>>2];a=c[(c[f>>2]|0)+12>>2]|0;b=c[e>>2]|0;c[b>>2]=a;c[b+4>>2]=((a|0)<0)<<31>>31;i=d;return 0}function vk(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(c[(c[b>>2]|0)+8>>2]|0){c[d>>2]=c[c[b>>2]>>2];Tb[c[(c[(c[d>>2]|0)+12>>2]|0)+16>>2]&255](c[(c[b>>2]|0)+8>>2]|0)|0;c[(c[b>>2]|0)+8>>2]=0}Kd(c[(c[b>>2]|0)+4>>2]|0);c[(c[b>>2]|0)+4>>2]=0;c[(c[b>>2]|0)+16>>2]=0;c[(c[b>>2]|0)+20>>2]=0;c[(c[b>>2]|0)+24>>2]=0;c[(c[b>>2]|0)+28>>2]=0;c[(c[b>>2]|0)+32>>2]=0;c[(c[b>>2]|0)+12>>2]=0;i=e;return}function wk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;e=o+32|0;f=o+28|0;g=o+24|0;n=o+20|0;j=o+16|0;l=o+12|0;h=o+8|0;m=o+4|0;k=o;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[n>>2]=0;if(!(c[e>>2]|0)){c[c[g>>2]>>2]=0;n=c[n>>2]|0;i=o;return n|0}c[l>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[e>>2]|0))break;d=(BQ(c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]|0)|0)+1|0;c[l>>2]=(c[l>>2]|0)+d;c[j>>2]=(c[j>>2]|0)+1}d=Id((c[e>>2]<<2)+(c[l>>2]|0)|0)|0;c[h>>2]=d;c[c[g>>2]>>2]=d;if(!(c[h>>2]|0)){c[n>>2]=7;n=c[n>>2]|0;i=o;return n|0}c[m>>2]=(c[h>>2]|0)+(c[e>>2]<<2);c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[e>>2]|0))break;c[k>>2]=BQ(c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]|0)|0;c[(c[h>>2]|0)+(c[j>>2]<<2)>>2]=c[m>>2];iR(c[m>>2]|0,c[(c[f>>2]|0)+(c[j>>2]<<2)>>2]|0,(c[k>>2]|0)+1|0)|0;Ik(c[m>>2]|0);c[m>>2]=(c[m>>2]|0)+((c[k>>2]|0)+1);c[j>>2]=(c[j>>2]|0)+1}n=c[n>>2]|0;i=o;return n|0}function xk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;l=m;f=m+28|0;o=m+24|0;g=m+20|0;h=m+16|0;j=m+12|0;k=m+8|0;n=m+4|0;c[o>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[n>>2]=BQ(c[g>>2]|0)|0;c[k>>2]=yk(c[o>>2]|0,c[g>>2]|0,(c[n>>2]|0)+1|0)|0;if(c[k>>2]|0){c[c[h>>2]>>2]=c[k>>2];c[f>>2]=0;o=c[f>>2]|0;i=m;return o|0}else{o=c[j>>2]|0;c[l>>2]=c[g>>2];zk(o,21456,l);c[f>>2]=1;o=c[f>>2]|0;i=m;return o|0}return 0}function yk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;c[e>>2]=Ak(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;if(!(c[e>>2]|0)){j=0;i=f;return j|0}j=c[(c[e>>2]|0)+8>>2]|0;i=f;return j|0}function zk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;f=e+20|0;h=e+16|0;g=e;c[f>>2]=a;c[h>>2]=b;Kd(c[c[f>>2]>>2]|0);c[g>>2]=d;b=Nd(c[h>>2]|0,g)|0;c[c[f>>2]>>2]=b;i=e;return}function Ak(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if((c[g>>2]|0)!=0?(c[(c[g>>2]|0)+16>>2]|0)!=0:0){c[l>>2]=Bk(a[c[g>>2]>>0]|0)|0;c[k>>2]=Yb[c[l>>2]&255](c[h>>2]|0,c[j>>2]|0)|0;c[f>>2]=Ck(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]&(c[(c[g>>2]|0)+12>>2]|0)-1)|0;l=c[f>>2]|0;i=m;return l|0}c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}function Bk(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[e>>2]=a;if((c[e>>2]|0)==1)c[b>>2]=180;else c[b>>2]=181;i=d;return c[b>>2]|0}function Ck(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;k=q+32|0;g=q+28|0;l=q+24|0;m=q+20|0;h=q+16|0;o=q+12|0;n=q+8|0;p=q+4|0;j=q;c[g>>2]=b;c[l>>2]=d;c[m>>2]=e;c[h>>2]=f;a:do if(c[(c[g>>2]|0)+16>>2]|0){c[j>>2]=(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<3);c[o>>2]=c[(c[j>>2]|0)+4>>2];c[n>>2]=c[c[j>>2]>>2];c[p>>2]=Dk(a[c[g>>2]>>0]|0)|0;while(1){d=c[n>>2]|0;c[n>>2]=d+-1;if(!((d|0)!=0?(c[o>>2]|0)!=0:0))break a;d=(Wb[c[p>>2]&255](c[(c[o>>2]|0)+12>>2]|0,c[(c[o>>2]|0)+16>>2]|0,c[l>>2]|0,c[m>>2]|0)|0)==0;g=c[o>>2]|0;if(d)break;c[o>>2]=c[g>>2]}c[k>>2]=g;p=c[k>>2]|0;i=q;return p|0}while(0);c[k>>2]=0;p=c[k>>2]|0;i=q;return p|0}function Dk(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[e>>2]=a;if((c[e>>2]|0)==1)c[b>>2]=142;else c[b>>2]=143;i=d;return c[b>>2]|0}function Ek(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;g=k+12|0;h=k+8|0;j=k+4|0;l=k;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[l>>2]=e;if((c[h>>2]|0)!=(c[l>>2]|0)){c[f>>2]=1;l=c[f>>2]|0;i=k;return l|0}else{c[f>>2]=CQ(c[g>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;l=c[f>>2]|0;i=k;return l|0}return 0}function Fk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;g=k+12|0;h=k+8|0;j=k+4|0;l=k;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[l>>2]=e;if((c[h>>2]|0)!=(c[l>>2]|0)){c[f>>2]=1;l=c[f>>2]|0;i=k;return l|0}else{c[f>>2]=vQ(c[g>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;l=c[f>>2]|0;i=k;return l|0}return 0}function Gk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;g=h+4|0;f=h;c[j>>2]=b;c[e>>2]=d;c[g>>2]=c[j>>2];c[f>>2]=0;if((c[e>>2]|0)<=0)c[e>>2]=BQ(c[g>>2]|0)|0;while(1){d=c[f>>2]|0;if((c[e>>2]|0)<=0)break;b=d<<3^c[f>>2];j=c[g>>2]|0;c[g>>2]=j+1;c[f>>2]=b^a[j>>0];c[e>>2]=(c[e>>2]|0)+-1}i=h;return d&2147483647|0}function Hk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;f=h+4|0;g=h;c[j>>2]=b;c[e>>2]=d;c[f>>2]=0;c[g>>2]=c[j>>2];while(1){j=c[e>>2]|0;c[e>>2]=j+-1;d=c[f>>2]|0;if((j|0)<=0)break;b=d<<3^c[f>>2];j=c[g>>2]|0;c[g>>2]=j+1;c[f>>2]=b^a[j>>0]}i=h;return d&2147483647|0}function Ik(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+8|0;h=j+12|0;f=j+4|0;g=j;c[e>>2]=b;a[h>>0]=a[c[e>>2]>>0]|0;if((((a[h>>0]|0)!=91?(a[h>>0]|0)!=39:0)?(a[h>>0]|0)!=34:0)?(a[h>>0]|0)!=96:0){i=j;return}c[f>>2]=1;c[g>>2]=0;if((a[h>>0]|0)==91)a[h>>0]=93;while(1){if(!(a[(c[e>>2]|0)+(c[f>>2]|0)>>0]|0))break;b=c[f>>2]|0;d=b+1|0;if((a[(c[e>>2]|0)+(c[f>>2]|0)>>0]|0)!=(a[h>>0]|0)){c[f>>2]=d;b=a[(c[e>>2]|0)+b>>0]|0;d=c[g>>2]|0;c[g>>2]=d+1;a[(c[e>>2]|0)+d>>0]=b;continue}if((a[(c[e>>2]|0)+d>>0]|0)!=(a[h>>0]|0))break;b=a[h>>0]|0;d=c[g>>2]|0;c[g>>2]=d+1;a[(c[e>>2]|0)+d>>0]=b;c[f>>2]=(c[f>>2]|0)+2}a[(c[e>>2]|0)+(c[g>>2]|0)>>0]=0;i=j;return}function Jk(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;o=h+20|0;n=h+16|0;m=h+12|0;l=h+8|0;k=h+4|0;j=h;c[o>>2]=a;c[n>>2]=b;c[m>>2]=d;c[l>>2]=e;c[k>>2]=f;c[j>>2]=g;g=Fp(1,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0)|0;i=h;return g|0}function Kk(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;o=h+20|0;n=h+16|0;m=h+12|0;l=h+8|0;k=h+4|0;j=h;c[o>>2]=a;c[n>>2]=b;c[m>>2]=d;c[l>>2]=e;c[k>>2]=f;c[j>>2]=g;g=Fp(0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0)|0;i=h;return g|0}function Lk(b,e){b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+64|0;r=u+48|0;v=u+44|0;s=u+40|0;o=u+36|0;g=u+32|0;j=u+28|0;n=u+24|0;k=u+20|0;l=u+16|0;m=u+12|0;f=u+8|0;p=u+4|0;t=u;c[v>>2]=b;c[s>>2]=e;c[o>>2]=c[v>>2];c[j>>2]=-1;c[n>>2]=-1;c[k>>2]=-1;c[l>>2]=-1;c[(c[s>>2]|0)+20>>2]=0;h[(c[s>>2]|0)+40>>3]=5.0e6;c[g>>2]=0;a:while(1){if((c[g>>2]|0)>=(c[c[s>>2]>>2]|0))break;c[p>>2]=(c[(c[s>>2]|0)+4>>2]|0)+((c[g>>2]|0)*12|0);e=c[p>>2]|0;b:do if(!(d[(c[p>>2]|0)+5>>0]|0)){if((d[e+4>>0]|0)==64){q=5;break a}}else{if((c[e>>2]|0)<0)e=1;else e=(c[c[p>>2]>>2]|0)==((c[(c[o>>2]|0)+24>>2]|0)+1|0);c[f>>2]=e&1;if((c[j>>2]|0)<0?(c[f>>2]|0)!=0?(d[(c[p>>2]|0)+4>>0]|0)==2:0:0){c[(c[s>>2]|0)+20>>2]=1;h[(c[s>>2]|0)+40>>3]=1.0;c[j>>2]=c[g>>2]}if(((d[(c[p>>2]|0)+4>>0]|0)==64?(c[c[p>>2]>>2]|0)>=0:0)?(c[c[p>>2]>>2]|0)<=(c[(c[o>>2]|0)+24>>2]|0):0){c[(c[s>>2]|0)+20>>2]=2+(c[c[p>>2]>>2]|0);h[(c[s>>2]|0)+40>>3]=2.0;c[j>>2]=c[g>>2]}if((d[(c[p>>2]|0)+4>>0]|0)==2?(c[c[p>>2]>>2]|0)==((c[(c[o>>2]|0)+24>>2]|0)+2|0):0)c[n>>2]=c[g>>2];if(c[f>>2]|0)switch(d[(c[p>>2]|0)+4>>0]|0){case 4:case 32:{c[k>>2]=c[g>>2];break b}case 16:case 8:{c[l>>2]=c[g>>2];break b}default:break b}}while(0);c[g>>2]=(c[g>>2]|0)+1}if((q|0)==5){c[(c[s>>2]|0)+20>>2]=0;h[(c[s>>2]|0)+40>>3]=1.e+50;Dp(c[s>>2]|0,0,262144);c[r>>2]=0;v=c[r>>2]|0;i=u;return v|0}if((c[(c[s>>2]|0)+20>>2]|0)==1)Ep(c[s>>2]|0);c[m>>2]=1;if((c[j>>2]|0)>=0){v=c[m>>2]|0;c[m>>2]=v+1;c[(c[(c[s>>2]|0)+16>>2]|0)+(c[j>>2]<<3)>>2]=v;a[(c[(c[s>>2]|0)+16>>2]|0)+(c[j>>2]<<3)+4>>0]=1}if((c[n>>2]|0)>=0){v=(c[s>>2]|0)+20|0;c[v>>2]=c[v>>2]|65536;v=c[m>>2]|0;c[m>>2]=v+1;c[(c[(c[s>>2]|0)+16>>2]|0)+(c[n>>2]<<3)>>2]=v}if((c[k>>2]|0)>=0){v=(c[s>>2]|0)+20|0;c[v>>2]=c[v>>2]|131072;v=c[m>>2]|0;c[m>>2]=v+1;c[(c[(c[s>>2]|0)+16>>2]|0)+(c[k>>2]<<3)>>2]=v}if((c[l>>2]|0)>=0){v=(c[s>>2]|0)+20|0;c[v>>2]=c[v>>2]|262144;v=c[m>>2]|0;c[m>>2]=v+1;c[(c[(c[s>>2]|0)+16>>2]|0)+(c[l>>2]<<3)>>2]=v}do if((c[(c[s>>2]|0)+8>>2]|0)==1){c[t>>2]=c[(c[s>>2]|0)+12>>2];if((c[c[t>>2]>>2]|0)>=0?(c[c[t>>2]>>2]|0)!=((c[(c[o>>2]|0)+24>>2]|0)+1|0):0)break;e=(c[s>>2]|0)+24|0;if(a[(c[t>>2]|0)+4>>0]|0)c[e>>2]=24471;else c[e>>2]=24476;c[(c[s>>2]|0)+32>>2]=1}while(0);c[r>>2]=0;v=c[r>>2]|0;i=u;return v|0}function Mk(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;f=e+8|0;d=e+4|0;b=e;c[f>>2]=a;c[d>>2]=c[f>>2];c[b>>2]=0;while(1){if((c[b>>2]|0)>=40)break;Yd(c[(c[d>>2]|0)+56+(c[b>>2]<<2)>>2]|0)|0;c[b>>2]=(c[b>>2]|0)+1}Kd(c[(c[d>>2]|0)+240>>2]|0);Kd(c[(c[d>>2]|0)+216>>2]|0);Kd(c[(c[d>>2]|0)+220>>2]|0);Kd(c[(c[d>>2]|0)+40>>2]|0);Kd(c[(c[d>>2]|0)+44>>2]|0);Tb[c[(c[c[(c[d>>2]|0)+36>>2]>>2]|0)+8>>2]&255](c[(c[d>>2]|0)+36>>2]|0)|0;Kd(c[d>>2]|0);i=e;return 0}function Nk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+64|0;j=n+32|0;h=n+24|0;l=n+16|0;k=n+8|0;g=n;b=n+56|0;e=n+52|0;f=n+48|0;m=n+44|0;d=n+40|0;c[b>>2]=a;c[e>>2]=c[b>>2];c[f>>2]=0;c[m>>2]=c[(c[e>>2]|0)+16>>2];c[d>>2]=c[(c[e>>2]|0)+12>>2];if(!(c[(c[e>>2]|0)+40>>2]|0)){a=c[d>>2]|0;o=c[(c[e>>2]|0)+20>>2]|0;c[g>>2]=c[m>>2];c[g+4>>2]=o;hl(f,a,24671,g)}o=c[d>>2]|0;g=c[(c[e>>2]|0)+20>>2]|0;c[k>>2]=c[m>>2];c[k+4>>2]=g;hl(f,o,24708,k);o=c[d>>2]|0;k=c[(c[e>>2]|0)+20>>2]|0;c[l>>2]=c[m>>2];c[l+4>>2]=k;hl(f,o,24746,l);o=c[d>>2]|0;l=c[(c[e>>2]|0)+20>>2]|0;c[h>>2]=c[m>>2];c[h+4>>2]=l;hl(f,o,24782,h);o=c[d>>2]|0;l=c[(c[e>>2]|0)+20>>2]|0;c[j>>2]=c[m>>2];c[j+4>>2]=l;hl(f,o,24819,j);if(!(c[f>>2]|0)){o=Mk(c[b>>2]|0)|0;i=n;return o|0}else{o=c[f>>2]|0;i=n;return o|0}return 0}function Ok(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;e=f+12|0;g=f+4|0;d=f;c[f+8>>2]=a;c[g>>2]=b;b=Id(96)|0;c[d>>2]=b;c[c[g>>2]>>2]=b;if(c[d>>2]|0){d=c[d>>2]|0;a=d+96|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));c[e>>2]=0;g=c[e>>2]|0;i=f;return g|0}else{c[e>>2]=7;g=c[e>>2]|0;i=f;return g|0}return 0}function Pk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Yd(c[(c[d>>2]|0)+8>>2]|0)|0;ap(c[(c[d>>2]|0)+12>>2]|0);Cp(c[d>>2]|0);Kd(c[(c[d>>2]|0)+44>>2]|0);tm(c[(c[d>>2]|0)+92>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function Qk(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0;E=i;i=i+112|0;B=E+32|0;A=E;t=E+108|0;u=E+104|0;k=E+100|0;n=E+96|0;l=E+88|0;z=E+84|0;D=E+80|0;o=E+76|0;v=E+72|0;w=E+68|0;q=E+64|0;r=E+60|0;x=E+56|0;y=E+52|0;m=E+48|0;p=E+44|0;s=E+40|0;c[u>>2]=e;c[k>>2]=f;c[n>>2]=g;c[E+92>>2]=h;c[l>>2]=j;c[z>>2]=0;c[v>>2]=c[c[u>>2]>>2];c[w>>2]=c[u>>2];c[q>>2]=0;c[r>>2]=0;c[x>>2]=0;c[y>>2]=0;c[o>>2]=c[k>>2]&65535;c[m>>2]=0;if(c[o>>2]|0){e=c[m>>2]|0;c[m>>2]=e+1;c[q>>2]=c[(c[l>>2]|0)+(e<<2)>>2]}if(c[k>>2]&65536){e=c[m>>2]|0;c[m>>2]=e+1;c[r>>2]=c[(c[l>>2]|0)+(e<<2)>>2]}if(c[k>>2]&131072){e=c[m>>2]|0;c[m>>2]=e+1;c[x>>2]=c[(c[l>>2]|0)+(e<<2)>>2]}if(c[k>>2]&262144){e=c[m>>2]|0;c[m>>2]=e+1;c[y>>2]=c[(c[l>>2]|0)+(e<<2)>>2]}Yd(c[(c[w>>2]|0)+8>>2]|0)|0;Kd(c[(c[w>>2]|0)+44>>2]|0);tm(c[(c[w>>2]|0)+92>>2]|0);ap(c[(c[w>>2]|0)+12>>2]|0);k=(c[u>>2]|0)+4|0;l=k+92|0;do{c[k>>2]=0;k=k+4|0}while((k|0)<(l|0));e=bp(c[x>>2]|0,0,-2147483648)|0;h=(c[w>>2]|0)+72|0;c[h>>2]=e;c[h+4>>2]=C;h=bp(c[y>>2]|0,-1,2147483647)|0;e=(c[w>>2]|0)+80|0;c[e>>2]=h;c[e+4>>2]=C;if(c[n>>2]|0)a[(c[w>>2]|0)+52>>0]=(a[c[n>>2]>>0]|0)==68;else a[(c[w>>2]|0)+52>>0]=a[(c[v>>2]|0)+231>>0]|0;b[(c[w>>2]|0)+4>>1]=c[o>>2];do if((c[o>>2]|0)!=1&(c[o>>2]|0)!=0){c[p>>2]=(c[o>>2]|0)-2;c[s>>2]=ae(c[q>>2]|0)|0;if((c[s>>2]|0)==0?(fe(c[q>>2]|0)|0)!=5:0){c[t>>2]=7;D=c[t>>2]|0;i=E;return D|0}c[(c[w>>2]|0)+16>>2]=0;if(c[r>>2]|0){r=de(c[r>>2]|0)|0;c[(c[w>>2]|0)+16>>2]=r}c[z>>2]=cp(c[(c[v>>2]|0)+36>>2]|0,c[(c[w>>2]|0)+16>>2]|0,c[(c[v>>2]|0)+28>>2]|0,d[(c[v>>2]|0)+228>>0]|0,c[(c[v>>2]|0)+24>>2]|0,c[p>>2]|0,c[s>>2]|0,-1,(c[w>>2]|0)+12|0,(c[v>>2]|0)+8|0)|0;if(c[z>>2]|0){c[t>>2]=c[z>>2];D=c[t>>2]|0;i=E;return D|0}c[z>>2]=dp(c[w>>2]|0)|0;sm(c[v>>2]|0);if(!(c[z>>2]|0)){c[(c[w>>2]|0)+40>>2]=c[(c[w>>2]|0)+44>>2];s=(c[w>>2]|0)+32|0;c[s>>2]=0;c[s+4>>2]=0;break}c[t>>2]=c[z>>2];D=c[t>>2]|0;i=E;return D|0}while(0);do if(!(c[o>>2]|0)){k=c[(c[v>>2]|0)+216>>2]|0;l=c[w>>2]|0;if((c[x>>2]|0)!=0|(c[y>>2]|0)!=0){r=l+72|0;q=c[r>>2]|0;r=c[r+4>>2]|0;x=(c[w>>2]|0)+80|0;s=c[x>>2]|0;x=c[x+4>>2]|0;B=(d[(c[w>>2]|0)+52>>0]|0)!=0?24471:24476;c[A>>2]=k;y=A+8|0;c[y>>2]=q;c[y+4>>2]=r;y=A+16|0;c[y>>2]=s;c[y+4>>2]=x;c[A+24>>2]=B;c[D>>2]=Od(24480,A)|0}else{A=(d[l+52>>0]|0)!=0?24471:24476;c[B>>2]=k;c[B+4>>2]=A;c[D>>2]=Od(24542,B)|0}if(c[D>>2]|0){c[z>>2]=af(c[(c[v>>2]|0)+12>>2]|0,c[D>>2]|0,-1,(c[w>>2]|0)+8|0,0)|0;Kd(c[D>>2]|0);break}else{c[z>>2]=7;break}}else if((c[o>>2]|0)==1?(c[z>>2]=zn(c[w>>2]|0,(c[w>>2]|0)+8|0)|0,(c[z>>2]|0)==0):0)c[z>>2]=Pe(c[(c[w>>2]|0)+8>>2]|0,1,c[q>>2]|0)|0;while(0);if(c[z>>2]|0){c[t>>2]=c[z>>2];D=c[t>>2]|0;i=E;return D|0}else{c[t>>2]=Rk(c[u>>2]|0)|0;D=c[t>>2]|0;i=E;return D|0}return 0}function Rk(d){d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;g=h+4|0;f=h;c[e>>2]=d;c[f>>2]=c[e>>2];if((b[(c[f>>2]|0)+4>>1]|0)!=1?(b[(c[f>>2]|0)+4>>1]|0)!=0:0){c[g>>2]=$o(c[e>>2]|0)|0;g=c[g>>2]|0;i=h;return g|0}d=100!=(ue(c[(c[f>>2]|0)+8>>2]|0)|0);e=c[f>>2]|0;if(d){a[e+6>>0]=1;c[g>>2]=Zd(c[(c[f>>2]|0)+8>>2]|0)|0;g=c[g>>2]|0;i=h;return g|0}else{d=Ee(c[e+8>>2]|0,0)|0;f=(c[f>>2]|0)+32|0;c[f>>2]=d;c[f+4>>2]=C;c[g>>2]=0;g=c[g>>2]|0;i=h;return g|0}return 0}function Sk(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+6>>0]|0|0}function Tk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+24|0;e=l+20|0;f=l+16|0;k=l+12|0;j=l+8|0;h=l+4|0;g=l;c[m>>2]=a;c[e>>2]=b;c[f>>2]=d;c[k>>2]=0;c[j>>2]=c[m>>2];c[h>>2]=c[c[m>>2]>>2];if((c[f>>2]|0)==((c[(c[h>>2]|0)+24>>2]|0)+1|0)){m=(c[j>>2]|0)+32|0;le(c[e>>2]|0,c[m>>2]|0,c[m+4>>2]|0);m=c[k>>2]|0;i=l;return m|0}if((c[f>>2]|0)==(c[(c[h>>2]|0)+24>>2]|0)){ge(c[e>>2]|0,j,4,-1);m=c[k>>2]|0;i=l;return m|0}if((c[f>>2]|0)==((c[(c[h>>2]|0)+24>>2]|0)+2|0)?(c[(c[j>>2]|0)+12>>2]|0)!=0:0){m=c[(c[j>>2]|0)+16>>2]|0;le(c[e>>2]|0,m,((m|0)<0)<<31>>31);m=c[k>>2]|0;i=l;return m|0}c[k>>2]=nn(0,c[j>>2]|0)|0;if(c[k>>2]|0){m=c[k>>2]|0;i=l;return m|0}if((c[f>>2]|0)==((c[(c[h>>2]|0)+24>>2]|0)+2|0)){c[g>>2]=0;if(c[(c[h>>2]|0)+44>>2]|0)c[g>>2]=De(c[(c[j>>2]|0)+8>>2]|0,(c[(c[h>>2]|0)+24>>2]|0)+1|0)|0;ke(c[e>>2]|0,c[g>>2]|0);m=c[k>>2]|0;i=l;return m|0}else{m=ze(c[(c[j>>2]|0)+8>>2]|0)|0;if((m|0)<=((c[f>>2]|0)+1|0)){m=c[k>>2]|0;i=l;return m|0}m=c[e>>2]|0;pe(m,Ge(c[(c[j>>2]|0)+8>>2]|0,(c[f>>2]|0)+1|0)|0);m=c[k>>2]|0;i=l;return m|0}return 0}function Uk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=c[g>>2];e=(c[e>>2]|0)+32|0;a=c[e+4>>2]|0;b=c[f>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=a;i=d;return 0}function Vk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;a=Ao(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return a|0}function Wk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];c[(c[d>>2]|0)+52>>2]=0;a=fl(c[d>>2]|0)|0;i=b;return a|0}function Xk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+32|0;h=g+20|0;e=g+12|0;f=g+8|0;d=g+4|0;b=g;c[h>>2]=a;c[g+16>>2]=64;c[e>>2]=c[h>>2];c[f>>2]=gl(c[e>>2]|0)|0;if(((((c[f>>2]|0)==0?(c[(c[e>>2]|0)+52>>2]|0)>>>0>4:0)?(c[(c[e>>2]|0)+48>>2]|0)!=0:0)?(c[(c[e>>2]|0)+48>>2]|0)!=255:0)?(c[d>>2]=0,c[f>>2]=_n(c[e>>2]|0,d)|0,c[b>>2]=_(c[(c[e>>2]|0)+52>>2]|0,c[d>>2]|0)|0,c[b>>2]=(c[b>>2]|0)+((c[b>>2]|0)/2|0),(c[b>>2]|0)>64):0)c[f>>2]=$n(c[e>>2]|0,c[b>>2]|0,c[(c[e>>2]|0)+48>>2]|0)|0;sm(c[e>>2]|0);i=g;return c[f>>2]|0}function Yk(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return 0}function Zk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];dl(c[d>>2]|0);i=b;return 0}function _k(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+80|0;j=m+64|0;n=m+60|0;g=m+48|0;k=m+44|0;l=m+8|0;h=m;c[n>>2]=e;e=c[n>>2]|0;c[m+56>>2]=a;c[m+52>>2]=b;c[g>>2]=d;c[k>>2]=e;c[m+40>>2]=f;c[l>>2]=c[509];c[l+4>>2]=c[510];c[l+8>>2]=c[511];c[l+12>>2]=c[512];c[l+16>>2]=c[513];c[l+20>>2]=c[514];c[l+24>>2]=c[515];c[l+28>>2]=c[516];c[h>>2]=0;while(1){if((c[h>>2]|0)>=4){b=6;break}n=(yQ(c[g>>2]|0,c[l+(c[h>>2]<<3)>>2]|0)|0)==0;a=c[h>>2]|0;if(n){b=4;break}c[h>>2]=a+1}if((b|0)==4){c[c[k>>2]>>2]=c[l+(a<<3)+4>>2];c[j>>2]=1;n=c[j>>2]|0;i=m;return n|0}else if((b|0)==6){c[j>>2]=0;n=c[j>>2]|0;i=m;return n|0}return 0}function $k(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+96|0;l=o+64|0;k=o+48|0;n=o+32|0;m=o+16|0;j=o;p=o+92|0;e=o+88|0;g=o+84|0;f=o+80|0;h=o+76|0;c[p>>2]=b;c[e>>2]=d;c[g>>2]=c[p>>2];c[f>>2]=c[(c[g>>2]|0)+12>>2];c[h>>2]=fl(c[g>>2]|0)|0;if(!(c[h>>2]|0))c[h>>2]=gl(c[g>>2]|0)|0;if(!(c[(c[g>>2]|0)+40>>2]|0)){p=c[f>>2]|0;b=c[(c[g>>2]|0)+20>>2]|0;d=c[e>>2]|0;c[j>>2]=c[(c[g>>2]|0)+16>>2];c[j+4>>2]=b;c[j+8>>2]=d;hl(h,p,21478,j)}if(a[(c[g>>2]|0)+230>>0]|0){p=c[f>>2]|0;j=c[(c[g>>2]|0)+20>>2]|0;d=c[e>>2]|0;c[m>>2]=c[(c[g>>2]|0)+16>>2];c[m+4>>2]=j;c[m+8>>2]=d;hl(h,p,21531,m)}if(a[(c[g>>2]|0)+229>>0]|0){p=c[f>>2]|0;m=c[(c[g>>2]|0)+20>>2]|0;d=c[e>>2]|0;c[n>>2]=c[(c[g>>2]|0)+16>>2];c[n+4>>2]=m;c[n+8>>2]=d;hl(h,p,21584,n)}p=c[f>>2]|0;d=c[(c[g>>2]|0)+20>>2]|0;n=c[e>>2]|0;c[k>>2]=c[(c[g>>2]|0)+16>>2];c[k+4>>2]=d;c[k+8>>2]=n;hl(h,p,21631,k);p=c[f>>2]|0;n=c[(c[g>>2]|0)+20>>2]|0;d=c[e>>2]|0;c[l>>2]=c[(c[g>>2]|0)+16>>2];c[l+4>>2]=n;c[l+8>>2]=d;hl(h,p,21685,l);i=o;return c[h>>2]|0}function al(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g;c[e>>2]=a;c[g+4>>2]=b;c[f>>2]=0;if(d[(c[e>>2]|0)+232>>0]|0){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=Xk(c[e>>2]|0)|0;f=c[f>>2]|0;i=g;return f|0}function bl(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function cl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;e=d;c[f>>2]=a;c[d+4>>2]=b;c[e>>2]=c[f>>2];dl(c[e>>2]|0);i=d;return 0}function dl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;b=h+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[b>>2]=a;c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+248>>2]|0))break;c[f>>2]=(c[(c[b>>2]|0)+252>>2]|0)+((c[d>>2]|0)*24|0)+4;c[e>>2]=c[(c[f>>2]|0)+8>>2];while(1){if(!(c[e>>2]|0))break;c[g>>2]=c[(c[e>>2]|0)+8>>2];el(c[g>>2]|0);c[e>>2]=c[c[e>>2]>>2]}jk(c[f>>2]|0);c[d>>2]=(c[d>>2]|0)+1}c[(c[b>>2]|0)+260>>2]=0;i=h;return}function el(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[d>>2]|0);i=b;return}function fl(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;j=m;e=m+28|0;h=m+24|0;k=m+20|0;l=m+16|0;g=m+12|0;f=m+8|0;c[e>>2]=b;c[h>>2]=0;if((d[(c[e>>2]|0)+229>>0]|0|0)!=2){l=c[h>>2]|0;i=m;return l|0}c[k>>2]=24028;k=c[k>>2]|0;b=c[(c[e>>2]|0)+20>>2]|0;c[j>>2]=c[(c[e>>2]|0)+16>>2];c[j+4>>2]=b;c[l>>2]=Od(k,j)|0;if(!(c[l>>2]|0)){c[h>>2]=7;l=c[h>>2]|0;i=m;return l|0}c[g>>2]=0;c[h>>2]=af(c[(c[e>>2]|0)+12>>2]|0,c[l>>2]|0,-1,g,0)|0;if((c[h>>2]|0)==0?(c[f>>2]=(ue(c[g>>2]|0)|0)==100&1,c[h>>2]=Yd(c[g>>2]|0)|0,(c[h>>2]|0)==0):0)a[(c[e>>2]|0)+229>>0]=c[f>>2];Kd(c[l>>2]|0);l=c[h>>2]|0;i=m;return l|0}function gl(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;h=j+8|0;f=j+4|0;g=j;c[e>>2]=a;c[h>>2]=0;c[f>>2]=0;while(1){if(!(c[h>>2]|0))a=(c[f>>2]|0)<(c[(c[e>>2]|0)+248>>2]|0);else a=0;b=c[e>>2]|0;if(!a)break;b=il(b,c[(c[e>>2]|0)+272>>2]|0,c[f>>2]|0,-1)|0;c[h>>2]=b;c[h>>2]=(c[h>>2]|0)==101?0:b;c[f>>2]=(c[f>>2]|0)+1}dl(b);if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}if(!(d[(c[e>>2]|0)+229>>0]|0)){h=c[h>>2]|0;i=j;return h|0}if((c[(c[e>>2]|0)+48>>2]|0)!=255){h=c[h>>2]|0;i=j;return h|0}if((c[(c[e>>2]|0)+52>>2]|0)>>>0<=0){h=c[h>>2]|0;i=j;return h|0}c[g>>2]=0;c[h>>2]=jl(c[e>>2]|0,22,g,0)|0;if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}Le(c[g>>2]|0,1,2)|0;c[h>>2]=ue(c[g>>2]|0)|0;if((c[h>>2]|0)==100){f=De(c[g>>2]|0,0)|0;c[(c[e>>2]|0)+48>>2]=f;if((c[(c[e>>2]|0)+48>>2]|0)==1)c[(c[e>>2]|0)+48>>2]=8}else if((c[h>>2]|0)==101)c[(c[e>>2]|0)+48>>2]=0;c[h>>2]=Zd(c[g>>2]|0)|0;h=c[h>>2]|0;i=j;return h|0}function hl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+48|0;f=l+32|0;g=l+28|0;h=l+24|0;j=l+8|0;k=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if(c[c[f>>2]>>2]|0){i=l;return}c[j>>2]=e;c[k>>2]=Nd(c[h>>2]|0,j)|0;if(!(c[k>>2]|0)){c[c[f>>2]>>2]=7;i=l;return}else{d=$e(c[g>>2]|0,c[k>>2]|0,0,0,0)|0;c[c[f>>2]>>2]=d;Kd(c[k>>2]|0);i=l;return}}function il(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+128|0;f=s+120|0;g=s+116|0;h=s+112|0;j=s+108|0;r=s+104|0;n=s+100|0;p=s+8|0;q=s+96|0;m=s+80|0;l=s+24|0;k=s+16|0;o=s;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[n>>2]=0;a=p;c[a>>2]=0;c[a+4>>2]=0;c[q>>2]=0;c[k>>2]=0;a=o;c[a>>2]=0;c[a+4>>2]=0;c[r>>2]=kl(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,0,0,1,0,l)|0;a:do if((c[r>>2]|0)==0?(c[l+4>>2]|0)!=0:0){if((c[j>>2]|0)!=-1?(c[r>>2]=ll(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,o)|0,(c[r>>2]|0)!=0):0)break;do if((c[j>>2]|0)==-2)if((c[l+4>>2]|0)==1){c[r>>2]=101;break a}else{b=o;e=c[b+4>>2]|0;a=p;c[a>>2]=c[b>>2];c[a+4>>2]=e;c[k>>2]=1;break}else{e=ml(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,(c[j>>2]|0)+1|0)|0;a=p;c[a>>2]=e;c[a+4>>2]=C;c[r>>2]=nl(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,(c[j>>2]|0)+1|0,n)|0;if((c[j>>2]|0)!=-1){a=p;b=c[a+4>>2]|0;d=o;e=c[d+4>>2]|0;d=(b|0)>(e|0)|((b|0)==(e|0)?(c[a>>2]|0)>>>0>(c[d>>2]|0)>>>0:0)}else d=0;c[k>>2]=d&1}while(0);if(!(c[r>>2]|0)){c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+12>>2]=1;a=m+12|0;c[a>>2]=c[a>>2]|((c[k>>2]|0)!=0?2:0);c[r>>2]=ol(c[f>>2]|0,l,m)|0;while(1){if(c[r>>2]|0)break;c[r>>2]=pl(c[f>>2]|0,l)|0;if((c[r>>2]|0)!=100)break;c[r>>2]=ql(c[f>>2]|0,q,1,c[l+40>>2]|0,c[l+44>>2]|0,c[l+48>>2]|0,c[l+52>>2]|0)|0}if(!(c[r>>2]|0)){if((c[j>>2]|0)!=-1){c[r>>2]=rl(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0;if(!((c[r>>2]|0)==0&(c[q>>2]|0)!=0))break}else if(!(c[q>>2]|0))break;m=p;c[r>>2]=sl(c[f>>2]|0,c[q>>2]|0,c[m>>2]|0,c[m+4>>2]|0,c[n>>2]|0)|0;if(!(c[r>>2]|0)){if((c[j>>2]|0)!=-1?(n=p,k=c[n+4>>2]|0,o,m=c[o+4>>2]|0,!((k|0)<(m|0)|((k|0)==(m|0)?(c[n>>2]|0)>>>0<(c[o>>2]|0)>>>0:0))):0)break;o=p;p=(c[q>>2]|0)+56|0;c[r>>2]=tl(c[f>>2]|0,c[o>>2]|0,c[o+4>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0}}}}while(0);ul(c[q>>2]|0);vl(l);i=s;return c[r>>2]|0}function jl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+240|0;o=t+24|0;n=t+16|0;g=t;h=t+228|0;j=t+224|0;q=t+220|0;k=t+216|0;f=t+56|0;s=t+48|0;r=t+44|0;p=t+40|0;l=t+36|0;m=t+32|0;c[h>>2]=a;c[j>>2]=b;c[q>>2]=d;c[k>>2]=e;iR(f|0,1876,160)|0;c[s>>2]=0;c[r>>2]=c[(c[h>>2]|0)+56+(c[j>>2]<<2)>>2];do if(!(c[r>>2]|0)){a=c[j>>2]|0;do if((c[j>>2]|0)!=18){e=c[f+(c[j>>2]<<2)>>2]|0;b=c[h>>2]|0;if((a|0)==7){c[n>>2]=c[b+216>>2];c[p>>2]=Od(e,n)|0;break}else{n=c[(c[h>>2]|0)+20>>2]|0;c[o>>2]=c[b+16>>2];c[o+4>>2]=n;c[p>>2]=Od(e,o)|0;break}}else{o=c[f+(a<<2)>>2]|0;f=c[(c[h>>2]|0)+20>>2]|0;n=c[(c[h>>2]|0)+220>>2]|0;c[g>>2]=c[(c[h>>2]|0)+16>>2];c[g+4>>2]=f;c[g+8>>2]=n;c[p>>2]=Od(o,g)|0}while(0);if(c[p>>2]|0){c[s>>2]=af(c[(c[h>>2]|0)+12>>2]|0,c[p>>2]|0,-1,r,0)|0;Kd(c[p>>2]|0);c[(c[h>>2]|0)+56+(c[j>>2]<<2)>>2]=c[r>>2];break}else{c[s>>2]=7;break}}while(0);if(!(c[k>>2]|0)){p=c[r>>2]|0;r=c[q>>2]|0;c[r>>2]=p;s=c[s>>2]|0;i=t;return s|0}c[m>>2]=Re(c[r>>2]|0)|0;c[l>>2]=0;while(1){if(c[s>>2]|0){e=15;break}if((c[l>>2]|0)>=(c[m>>2]|0)){e=15;break}c[s>>2]=Pe(c[r>>2]|0,(c[l>>2]|0)+1|0,c[(c[k>>2]|0)+(c[l>>2]<<2)>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+1}if((e|0)==15){p=c[r>>2]|0;r=c[q>>2]|0;c[r>>2]=p;s=c[s>>2]|0;i=t;return s|0}return 0}function kl(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;l=u+32|0;m=u+28|0;n=u+24|0;o=u+20|0;p=u+16|0;q=u+12|0;r=u+8|0;s=u+4|0;t=u;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;d=c[t>>2]|0;b=d+56|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(b|0));t=dm(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0)|0;i=u;return t|0}function ll(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+24|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[m>>2]=jl(c[g>>2]|0,15,l,0)|0;if(c[m>>2]|0){c[f>>2]=c[m>>2];m=c[f>>2]|0;i=n;return m|0}m=c[l>>2]|0;e=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,0)|0;Me(m,1,e,C)|0;e=c[l>>2]|0;m=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,1023)|0;Me(e,2,m,C)|0;if(100==(ue(c[l>>2]|0)|0)){e=Ee(c[l>>2]|0,0)|0;m=c[k>>2]|0;c[m>>2]=e;c[m+4>>2]=C}c[f>>2]=Zd(c[l>>2]|0)|0;m=c[f>>2]|0;i=n;return m|0}function ml(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;k=f+20|0;l=f+16|0;j=f+12|0;g=f+8|0;h=f;c[k>>2]=a;c[l>>2]=b;c[j>>2]=d;c[g>>2]=e;a=c[l>>2]|0;e=c[(c[k>>2]|0)+248>>2]|0;e=rR(a|0,((a|0)<0)<<31>>31|0,e|0,((e|0)<0)<<31>>31|0)|0;a=c[j>>2]|0;a=gR(e|0,C|0,a|0,((a|0)<0)<<31>>31|0)|0;a=rR(a|0,C|0,1024,0)|0;e=h;c[e>>2]=a;c[e+4>>2]=C;e=h;a=c[g>>2]|0;a=gR(c[e>>2]|0,c[e+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;i=f;return a|0}function nl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;o=p+8|0;n=p+4|0;m=p;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=0;c[o>>2]=jl(c[g>>2]|0,8,n,0)|0;if(!(c[o>>2]|0)){a=c[n>>2]|0;f=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;Me(a,1,f,C)|0;if(100==(ue(c[n>>2]|0)|0))c[m>>2]=De(c[n>>2]|0,0)|0;c[o>>2]=Zd(c[n>>2]|0)|0}if(c[o>>2]|0){o=c[o>>2]|0;i=p;return o|0}if((c[m>>2]|0)>=16){c[o>>2]=il(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[c[l>>2]>>2]=0;o=c[o>>2]|0;i=p;return o|0}else{c[c[l>>2]>>2]=c[m>>2];o=c[o>>2]|0;i=p;return o|0}return 0}function ol(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;c[(c[g>>2]|0)+12>>2]=c[f>>2];d=bm(c[h>>2]|0,c[g>>2]|0,c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+4>>2]|0)|0;i=e;return d|0}function pl(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;K=i;i=i+128|0;f=K+120|0;g=K+116|0;h=K+112|0;H=K+108|0;s=K+104|0;u=K+100|0;q=K+96|0;t=K+92|0;v=K+88|0;r=K+84|0;l=K+80|0;B=K+76|0;E=K+72|0;I=K+68|0;A=K+64|0;m=K+60|0;G=K+56|0;y=K+52|0;p=K+16|0;w=K+48|0;F=K+44|0;z=K+40|0;x=K+36|0;o=K+8|0;n=K;k=K+32|0;j=K+28|0;D=K+24|0;c[g>>2]=b;c[h>>2]=e;c[H>>2]=0;c[s>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&2;c[u>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&1;c[q>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&4;c[t>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&8;c[v>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&16;c[r>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+12>>2]&32;c[l>>2]=c[c[h>>2]>>2];c[B>>2]=c[(c[h>>2]|0)+4>>2];c[E>>2]=c[(c[h>>2]|0)+12>>2];c[I>>2]=(d[(c[g>>2]|0)+231>>0]|0)!=0?182:183;if(!(c[(c[h>>2]|0)+4>>2]|0)){c[f>>2]=0;J=c[f>>2]|0;i=K;return J|0}a:while(1){c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[h>>2]|0)+8>>2]|0))break;c[G>>2]=c[(c[l>>2]|0)+(c[m>>2]<<2)>>2];if(a[(c[G>>2]|0)+4>>0]|0)Kl(c[G>>2]|0);else c[H>>2]=Ll(c[g>>2]|0,c[G>>2]|0,0)|0;if(c[H>>2]|0){J=9;break a}c[m>>2]=(c[m>>2]|0)+1}Nl(c[l>>2]|0,c[B>>2]|0,c[(c[h>>2]|0)+8>>2]|0,184);c[(c[h>>2]|0)+8>>2]=0;if(!(c[(c[c[l>>2]>>2]|0)+40>>2]|0)){J=61;break}c[(c[h>>2]|0)+44>>2]=c[(c[c[l>>2]>>2]|0)+60>>2];c[(c[h>>2]|0)+40>>2]=c[(c[c[l>>2]>>2]|0)+64>>2];if(!((c[v>>2]|0)!=0?1:(c[c[E>>2]>>2]|0)==0)){if((c[(c[h>>2]|0)+44>>2]|0)<(c[(c[E>>2]|0)+4>>2]|0)){J=61;break}if((c[t>>2]|0)==0?(c[(c[h>>2]|0)+44>>2]|0)>(c[(c[E>>2]|0)+4>>2]|0):0){J=61;break}if(vQ(c[(c[h>>2]|0)+40>>2]|0,c[c[E>>2]>>2]|0,c[(c[E>>2]|0)+4>>2]|0)|0){J=61;break}}c[A>>2]=1;while(1){if(((c[A>>2]|0)<(c[B>>2]|0)?(c[(c[(c[l>>2]|0)+(c[A>>2]<<2)>>2]|0)+40>>2]|0)!=0:0)?(c[(c[(c[l>>2]|0)+(c[A>>2]<<2)>>2]|0)+60>>2]|0)==(c[(c[h>>2]|0)+44>>2]|0):0)e=0==(vQ(c[(c[h>>2]|0)+40>>2]|0,c[(c[(c[l>>2]|0)+(c[A>>2]<<2)>>2]|0)+64>>2]|0,c[(c[h>>2]|0)+44>>2]|0)|0);else e=0;b=c[A>>2]|0;if(!e)break;c[A>>2]=b+1}do if(!((b|0)!=1|(c[s>>2]|0)!=0|(c[r>>2]|0)!=0)){if((d[(c[g>>2]|0)+231>>0]|0)!=0?((c[(c[c[l>>2]>>2]|0)+56>>2]|0)!=0|0)!=0:0){J=32;break}c[(c[h>>2]|0)+52>>2]=c[(c[c[l>>2]>>2]|0)+76>>2];if(c[(c[c[l>>2]>>2]|0)+56>>2]|0){c[H>>2]=Ol(c[h>>2]|0,c[(c[c[l>>2]>>2]|0)+72>>2]|0,c[(c[h>>2]|0)+52>>2]|0)|0;c[(c[h>>2]|0)+48>>2]=c[(c[h>>2]|0)+16>>2]}else c[(c[h>>2]|0)+48>>2]=c[(c[c[l>>2]>>2]|0)+72>>2];if(!(c[H>>2]|0))c[H>>2]=100}else J=32;while(0);if((J|0)==32){J=0;c[y>>2]=0;e=p;c[e>>2]=0;c[e+4>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[A>>2]|0))break;Pl(c[g>>2]|0,c[(c[l>>2]|0)+(c[m>>2]<<2)>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+1}Nl(c[l>>2]|0,c[A>>2]|0,c[A>>2]|0,c[I>>2]|0);while(1){if(!(c[(c[c[l>>2]>>2]|0)+80>>2]|0))break;c[F>>2]=0;c[z>>2]=0;L=(c[c[l>>2]>>2]|0)+88|0;b=c[L+4>>2]|0;e=o;c[e>>2]=c[L>>2];c[e+4>>2]=b;Ql(c[g>>2]|0,c[c[l>>2]>>2]|0,F,z)|0;c[w>>2]=1;while(1){if((c[w>>2]|0)>=(c[A>>2]|0))break;if(!(c[(c[(c[l>>2]|0)+(c[w>>2]<<2)>>2]|0)+80>>2]|0))break;e=(c[(c[l>>2]|0)+(c[w>>2]<<2)>>2]|0)+88|0;L=o;if(!((c[e>>2]|0)==(c[L>>2]|0)?(c[e+4>>2]|0)==(c[L+4>>2]|0):0))break;Ql(c[g>>2]|0,c[(c[l>>2]|0)+(c[w>>2]<<2)>>2]|0,0,0)|0;c[w>>2]=(c[w>>2]|0)+1}if(c[q>>2]|0)Rl(c[(c[E>>2]|0)+8>>2]|0,0,F,z);do if((c[s>>2]|0)==0|(c[z>>2]|0)>0){if((c[y>>2]|0)>0?(d[(c[g>>2]|0)+231>>0]|0)!=0:0){L=p;e=o;e=fR(c[L>>2]|0,c[L+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;L=n;c[L>>2]=e;c[L+4>>2]=C}else{L=o;e=p;e=fR(c[L>>2]|0,c[L+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;L=n;c[L>>2]=e;c[L+4>>2]=C}L=n;L=Dl(c[L>>2]|0,c[L+4>>2]|0)|0;c[x>>2]=L+((c[u>>2]|0)!=0?(c[z>>2]|0)+1|0:0);if(((c[y>>2]|0)+(c[x>>2]|0)|0)>(c[(c[h>>2]|0)+20>>2]|0)){c[(c[h>>2]|0)+20>>2]=(c[y>>2]|0)+(c[x>>2]|0)<<1;c[k>>2]=Ld(c[(c[h>>2]|0)+16>>2]|0,c[(c[h>>2]|0)+20>>2]|0)|0;if(!(c[k>>2]|0)){J=50;break a}c[(c[h>>2]|0)+16>>2]=c[k>>2]}b=(c[(c[h>>2]|0)+16>>2]|0)+(c[y>>2]|0)|0;if(c[r>>2]|0){c[j>>2]=b;L=n;c[D>>2]=Sl(c[L>>2]|0,c[L+4>>2]|0,c[F>>2]|0,c[z>>2]|0,c[j>>2]|0)|0;if(!(c[D>>2]|0))break;b=o;e=c[b+4>>2]|0;L=p;c[L>>2]=c[b>>2];c[L+4>>2]=e;c[y>>2]=(c[y>>2]|0)+(c[D>>2]|0);break}else{e=n;b=El(b,c[e>>2]|0,c[e+4>>2]|0)|0;c[y>>2]=(c[y>>2]|0)+b;b=o;e=c[b+4>>2]|0;L=p;c[L>>2]=c[b>>2];c[L+4>>2]=e;if(!(c[u>>2]|0))break;iR((c[(c[h>>2]|0)+16>>2]|0)+(c[y>>2]|0)|0,c[F>>2]|0,c[z>>2]|0)|0;c[y>>2]=(c[y>>2]|0)+(c[z>>2]|0);L=c[y>>2]|0;c[y>>2]=L+1;a[(c[(c[h>>2]|0)+16>>2]|0)+L>>0]=0;break}}while(0);Nl(c[l>>2]|0,c[A>>2]|0,c[w>>2]|0,c[I>>2]|0)}if((c[y>>2]|0)>0){c[(c[h>>2]|0)+48>>2]=c[(c[h>>2]|0)+16>>2];c[(c[h>>2]|0)+52>>2]=c[y>>2];c[H>>2]=100}}c[(c[h>>2]|0)+8>>2]=c[A>>2];if(c[H>>2]|0){J=61;break}}if((J|0)==9){c[f>>2]=c[H>>2];L=c[f>>2]|0;i=K;return L|0}else if((J|0)==50){c[f>>2]=7;L=c[f>>2]|0;i=K;return L|0}else if((J|0)==61){c[f>>2]=c[H>>2];L=c[f>>2]|0;i=K;return L|0}return 0}function ql(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+80|0;j=B+68|0;k=B+64|0;l=B+60|0;m=B+56|0;n=B+52|0;o=B+48|0;p=B+44|0;q=B+40|0;t=B+36|0;v=B+32|0;u=B+28|0;s=B+24|0;x=B+20|0;y=B+16|0;w=B+12|0;z=B+8|0;r=B+4|0;A=B;c[k>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[x>>2]=c[c[l>>2]>>2];if(!(c[x>>2]|0)){c[x>>2]=Id(64)|0;if(!(c[x>>2]|0)){c[j>>2]=7;A=c[j>>2]|0;i=B;return A|0}g=c[x>>2]|0;d=g+64|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(d|0));c[c[l>>2]>>2]=c[x>>2];l=Id(c[(c[k>>2]|0)+224>>2]|0)|0;c[(c[x>>2]|0)+48>>2]=l;if(!(c[(c[x>>2]|0)+48>>2]|0)){ -c[j>>2]=7;A=c[j>>2]|0;i=B;return A|0}c[(c[x>>2]|0)+40>>2]=c[(c[k>>2]|0)+224>>2];c[y>>2]=jl(c[k>>2]|0,10,w,0)|0;if(c[y>>2]|0){c[j>>2]=c[y>>2];A=c[j>>2]|0;i=B;return A|0}if(100==(ue(c[w>>2]|0)|0)){e=Ee(c[w>>2]|0,0)|0;b=(c[x>>2]|0)+16|0;c[b>>2]=e;c[b+4>>2]=C;b=(c[x>>2]|0)+16|0;e=c[b+4>>2]|0;l=(c[x>>2]|0)+8|0;c[l>>2]=c[b>>2];c[l+4>>2]=e}c[y>>2]=Zd(c[w>>2]|0)|0;if(c[y>>2]|0){c[j>>2]=c[y>>2];A=c[j>>2]|0;i=B;return A|0}}c[s>>2]=c[(c[x>>2]|0)+44>>2];c[t>>2]=Gl(c[(c[x>>2]|0)+24>>2]|0,c[(c[x>>2]|0)+28>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;c[v>>2]=(c[o>>2]|0)-(c[t>>2]|0);y=c[t>>2]|0;y=Dl(y,((y|0)<0)<<31>>31)|0;w=c[v>>2]|0;w=y+(Dl(w,((w|0)<0)<<31>>31)|0)|0;w=w+(c[v>>2]|0)|0;y=c[q>>2]|0;y=w+(Dl(y,((y|0)<0)<<31>>31)|0)|0;c[u>>2]=y+(c[q>>2]|0);do if((c[s>>2]|0)>0?((c[s>>2]|0)+(c[u>>2]|0)|0)>(c[(c[k>>2]|0)+224>>2]|0):0){l=c[k>>2]|0;e=(c[x>>2]|0)+16|0;y=e;w=c[y>>2]|0;y=c[y+4>>2]|0;b=gR(w|0,y|0,1,0)|0;c[e>>2]=b;c[e+4>>2]=C;c[z>>2]=zl(l,w,y,c[(c[x>>2]|0)+48>>2]|0,c[s>>2]|0)|0;if(c[z>>2]|0){c[j>>2]=c[z>>2];A=c[j>>2]|0;i=B;return A|0}y=(c[k>>2]|0)+52|0;c[y>>2]=(c[y>>2]|0)+1;c[z>>2]=Hl(c[k>>2]|0,c[x>>2]|0,c[m>>2]|0,c[n>>2]|0,(c[t>>2]|0)+1|0)|0;if(!(c[z>>2]|0)){c[s>>2]=0;c[(c[x>>2]|0)+28>>2]=0;c[t>>2]=0;c[v>>2]=c[o>>2];y=c[o>>2]|0;y=1+(Dl(y,((y|0)<0)<<31>>31)|0)|0;y=y+(c[o>>2]|0)|0;z=c[q>>2]|0;z=y+(Dl(z,((z|0)<0)<<31>>31)|0)|0;c[u>>2]=z+(c[q>>2]|0);break}c[j>>2]=c[z>>2];A=c[j>>2]|0;i=B;return A|0}while(0);y=c[u>>2]|0;z=(c[x>>2]|0)+56|0;w=z;y=gR(c[w>>2]|0,c[w+4>>2]|0,y|0,((y|0)<0)<<31>>31|0)|0;c[z>>2]=y;c[z+4>>2]=C;do if((c[u>>2]|0)>(c[(c[x>>2]|0)+40>>2]|0)){c[r>>2]=Ld(c[(c[x>>2]|0)+48>>2]|0,c[u>>2]|0)|0;if(c[r>>2]|0){c[(c[x>>2]|0)+48>>2]=c[r>>2];c[(c[x>>2]|0)+40>>2]=c[u>>2];break}c[j>>2]=7;A=c[j>>2]|0;i=B;return A|0}while(0);z=c[t>>2]|0;z=El((c[(c[x>>2]|0)+48>>2]|0)+(c[s>>2]|0)|0,z,((z|0)<0)<<31>>31)|0;c[s>>2]=(c[s>>2]|0)+z;z=c[v>>2]|0;z=El((c[(c[x>>2]|0)+48>>2]|0)+(c[s>>2]|0)|0,z,((z|0)<0)<<31>>31)|0;c[s>>2]=(c[s>>2]|0)+z;iR((c[(c[x>>2]|0)+48>>2]|0)+(c[s>>2]|0)|0,(c[n>>2]|0)+(c[t>>2]|0)|0,c[v>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[v>>2]|0);z=c[q>>2]|0;z=El((c[(c[x>>2]|0)+48>>2]|0)+(c[s>>2]|0)|0,z,((z|0)<0)<<31>>31)|0;c[s>>2]=(c[s>>2]|0)+z;iR((c[(c[x>>2]|0)+48>>2]|0)+(c[s>>2]|0)|0,c[p>>2]|0,c[q>>2]|0)|0;c[(c[x>>2]|0)+44>>2]=(c[s>>2]|0)+(c[q>>2]|0);if(c[m>>2]|0){do if((c[o>>2]|0)>(c[(c[x>>2]|0)+32>>2]|0)){c[A>>2]=Ld(c[(c[x>>2]|0)+36>>2]|0,c[o>>2]<<1)|0;if(c[A>>2]|0){c[(c[x>>2]|0)+32>>2]=c[o>>2]<<1;c[(c[x>>2]|0)+36>>2]=c[A>>2];c[(c[x>>2]|0)+24>>2]=c[A>>2];break}c[j>>2]=7;A=c[j>>2]|0;i=B;return A|0}while(0);iR(c[(c[x>>2]|0)+24>>2]|0,c[n>>2]|0,c[o>>2]|0)|0}else c[(c[x>>2]|0)+24>>2]=c[n>>2];c[(c[x>>2]|0)+28>>2]=c[o>>2];c[j>>2]=0;A=c[j>>2]|0;i=B;return A|0}function rl(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;l=s+36|0;m=s+32|0;n=s+28|0;o=s+24|0;p=s+20|0;h=s+16|0;j=s+12|0;r=s+8|0;k=s+4|0;q=s;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[h>>2]=f;c[j>>2]=g;c[r>>2]=0;c[q>>2]=0;c[k>>2]=0;while(1){if(c[r>>2]|0)break;if((c[k>>2]|0)>=(c[j>>2]|0))break;c[r>>2]=Fl(c[m>>2]|0,c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)|0;c[k>>2]=(c[k>>2]|0)+1}if(c[r>>2]|0){c[l>>2]=c[r>>2];r=c[l>>2]|0;i=s;return r|0}h=c[m>>2]|0;if((c[p>>2]|0)==-2){c[r>>2]=jl(h,26,q,0)|0;if(!(c[r>>2]|0)){p=c[q>>2]|0;a=ml(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,0)|0;Me(p,1,a,C)|0;a=c[q>>2]|0;p=ml(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,1023)|0;Me(a,2,p,C)|0}}else{c[r>>2]=jl(h,16,q,0)|0;if(!(c[r>>2]|0)){a=c[q>>2]|0;p=ml(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;Me(a,1,p,C)|0}}if(!(c[r>>2]|0)){ue(c[q>>2]|0)|0;c[r>>2]=Zd(c[q>>2]|0)|0}c[l>>2]=c[r>>2];r=c[l>>2]|0;i=s;return r|0}function sl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+44|0;h=q+40|0;j=q+16|0;k=q+36|0;o=q+32|0;l=q+8|0;m=q;p=q+28|0;n=q+24|0;c[g>>2]=a;c[h>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=e;c[k>>2]=f;if(!(c[c[h>>2]>>2]|0)){b=j;p=(c[h>>2]|0)+56|0;c[o>>2]=Bl(c[g>>2]|0,c[b>>2]|0,c[b+4>>2]|0,c[k>>2]|0,0,0,0,0,0,0,c[p>>2]|0,c[p+4>>2]|0,c[(c[h>>2]|0)+48>>2]|0,c[(c[h>>2]|0)+44>>2]|0)|0;p=c[g>>2]|0;p=p+52|0;b=c[p>>2]|0;b=b+1|0;c[p>>2]=b;p=c[o>>2]|0;i=q;return p|0}b=l;c[b>>2]=0;c[b+4>>2]=0;c[p>>2]=0;c[n>>2]=0;b=(c[h>>2]|0)+16|0;e=c[b+4>>2]|0;f=m;c[f>>2]=c[b>>2];c[f+4>>2]=e;f=c[g>>2]|0;e=(c[h>>2]|0)+16|0;b=e;a=c[b>>2]|0;b=c[b+4>>2]|0;d=gR(a|0,b|0,1,0)|0;c[e>>2]=d;c[e+4>>2]=C;c[o>>2]=zl(f,a,b,c[(c[h>>2]|0)+48>>2]|0,c[(c[h>>2]|0)+44>>2]|0)|0;if(!(c[o>>2]|0)){a=(c[h>>2]|0)+8|0;b=(c[h>>2]|0)+16|0;c[o>>2]=Al(c[g>>2]|0,c[c[h>>2]>>2]|0,1,c[a>>2]|0,c[a+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0,l,p,n)|0}if(c[o>>2]|0){p=c[g>>2]|0;p=p+52|0;b=c[p>>2]|0;b=b+1|0;c[p>>2]=b;p=c[o>>2]|0;i=q;return p|0}f=(c[h>>2]|0)+8|0;a=l;b=(c[h>>2]|0)+56|0;c[o>>2]=Bl(c[g>>2]|0,c[j>>2]|0,c[j+4>>2]|0,c[k>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[m>>2]|0,c[m+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0,c[p>>2]|0,c[n>>2]|0)|0;p=c[g>>2]|0;p=p+52|0;b=c[p>>2]|0;b=b+1|0;c[p>>2]=b;p=c[o>>2]|0;i=q;return p|0}function tl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+80|0;g=v+72|0;h=v+40|0;j=v+32|0;t=v+68|0;q=v+64|0;k=v+60|0;n=v+24|0;o=v+16|0;p=v+8|0;l=v;m=v+56|0;r=v+52|0;s=v+48|0;c[g>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;a=j;c[a>>2]=e;c[a+4>>2]=f;c[t>>2]=0;c[t>>2]=jl(c[g>>2]|0,37,q,0)|0;if(c[t>>2]|0){u=c[t>>2]|0;i=v;return u|0}c[k>>2]=0;f=h;f=pR(c[f>>2]|0,c[f+4>>2]|0,1024,0)|0;f=gR(f|0,C|0,1,0)|0;f=rR(f|0,C|0,1024,0)|0;f=fR(f|0,C|0,1,0)|0;a=n;c[a>>2]=f;c[a+4>>2]=C;a=j;a=rR(c[a>>2]|0,c[a+4>>2]|0,3,0)|0;a=pR(a|0,C|0,2,0)|0;j=o;c[j>>2]=a;c[j+4>>2]=C;j=c[q>>2]|0;a=h;a=gR(c[a>>2]|0,c[a+4>>2]|0,1,0)|0;Me(j,1,a,C)|0;a=n;Me(c[q>>2]|0,2,c[a>>2]|0,c[a+4>>2]|0)|0;while(1){if(100!=(ue(c[q>>2]|0)|0))break;a=p;c[a>>2]=0;c[a+4>>2]=0;yl(c[q>>2]|0,2,l,p);a=p;n=c[a+4>>2]|0;if((n|0)<0|(n|0)==0&(c[a>>2]|0)>>>0<=0){u=6;break}n=p;f=c[n+4>>2]|0;a=o;j=c[a+4>>2]|0;if((f|0)>(j|0)|((f|0)==(j|0)?(c[n>>2]|0)>>>0>(c[a>>2]|0)>>>0:0)){u=6;break}c[k>>2]=1}if((u|0)==6)c[k>>2]=0;c[t>>2]=Zd(c[q>>2]|0)|0;if(!(c[k>>2]|0)){u=c[t>>2]|0;i=v;return u|0}c[m>>2]=0;c[r>>2]=0;c[s>>2]=0;if(!(c[t>>2]|0))c[t>>2]=jl(c[g>>2]|0,38,r,0)|0;if(!(c[t>>2]|0))c[t>>2]=jl(c[g>>2]|0,39,s,0)|0;a:do if(!(c[t>>2]|0)){u=h;Me(c[q>>2]|0,1,c[u>>2]|0,c[u+4>>2]|0)|0;do{if(100!=(ue(c[q>>2]|0)|0))break a;a=c[r>>2]|0;u=c[m>>2]|0;c[m>>2]=u+1;Le(a,1,u)|0;u=c[r>>2]|0;Le(u,2,De(c[q>>2]|0,0)|0)|0;u=c[r>>2]|0;Le(u,3,De(c[q>>2]|0,1)|0)|0;ue(c[r>>2]|0)|0;c[t>>2]=Zd(c[r>>2]|0)|0}while((c[t>>2]|0)==0);Zd(c[q>>2]|0)|0}while(0);if(!(c[t>>2]|0))c[t>>2]=Zd(c[q>>2]|0)|0;if(c[t>>2]|0){u=c[t>>2]|0;i=v;return u|0}u=h;Me(c[s>>2]|0,1,c[u>>2]|0,c[u+4>>2]|0)|0;ue(c[s>>2]|0)|0;c[t>>2]=Zd(c[s>>2]|0)|0;u=c[t>>2]|0;i=v;return u|0}function ul(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}Kd(c[(c[b>>2]|0)+48>>2]|0);Kd(c[(c[b>>2]|0)+36>>2]|0);xl(c[c[b>>2]>>2]|0);Kd(c[b>>2]|0);i=d;return}function vl(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(c[b>>2]|0)){i=e;return}c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+4>>2]|0))break;wl(c[(c[c[b>>2]>>2]|0)+(c[d>>2]<<2)>>2]|0);c[d>>2]=(c[d>>2]|0)+1}Kd(c[c[b>>2]>>2]|0);Kd(c[(c[b>>2]|0)+16>>2]|0);c[(c[b>>2]|0)+4>>2]=0;c[c[b>>2]>>2]=0;c[(c[b>>2]|0)+16>>2]=0;i=e;return}function wl(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if(!(c[b>>2]|0)){a=c[b>>2]|0;Kd(a);i=e;return}if(!(c[(c[b>>2]|0)+56>>2]|0))Kd(c[(c[b>>2]|0)+64>>2]|0);if(!(d[(c[b>>2]|0)+5>>0]|0))Kd(c[(c[b>>2]|0)+40>>2]|0);Ve(c[(c[b>>2]|0)+52>>2]|0)|0;a=c[b>>2]|0;Kd(a);i=e;return}function xl(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;if(!(c[b>>2]|0)){i=f;return}c[d>>2]=c[(c[b>>2]|0)+8>>2];xl(c[c[d>>2]>>2]|0);while(1){if(!(c[d>>2]|0))break;c[e>>2]=c[(c[d>>2]|0)+4>>2];if((c[(c[d>>2]|0)+36>>2]|0)!=((c[d>>2]|0)+40|0))Kd(c[(c[d>>2]|0)+36>>2]|0);Kd(c[(c[d>>2]|0)+28>>2]|0);Kd(c[d>>2]|0);c[d>>2]=c[e>>2]}i=f;return}function yl(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+48|0;p=n+32|0;o=n+28|0;g=n+24|0;h=n+20|0;m=n+16|0;j=n+12|0;k=n+8|0;l=n;c[p>>2]=a;c[o>>2]=b;c[g>>2]=e;c[h>>2]=f;c[m>>2]=Fe(c[p>>2]|0,c[o>>2]|0)|0;if(!(c[m>>2]|0)){i=n;return}c[k>>2]=1;p=l;c[p>>2]=0;c[p+4>>2]=0;c[j>>2]=0;while(1){if((d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)>=48)b=(d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)<=57;else b=0;e=l;a=c[e>>2]|0;e=c[e+4>>2]|0;if(!b)break;p=rR(a|0,e|0,10,0)|0;o=(d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0)-48|0;o=gR(p|0,C|0,o|0,((o|0)<0)<<31>>31|0)|0;p=l;c[p>>2]=o;c[p+4>>2]=C;c[j>>2]=(c[j>>2]|0)+1}p=c[g>>2]|0;c[p>>2]=a;c[p+4>>2]=e;while(1){if((d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)!=32)break;c[j>>2]=(c[j>>2]|0)+1}p=l;c[p>>2]=0;c[p+4>>2]=0;if((d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)==45){c[j>>2]=(c[j>>2]|0)+1;c[k>>2]=-1}while(1){if((d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)>=48)b=(d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0|0)<=57;else b=0;e=l;a=c[e>>2]|0;e=c[e+4>>2]|0;if(!b)break;p=rR(a|0,e|0,10,0)|0;o=(d[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0)-48|0;o=gR(p|0,C|0,o|0,((o|0)<0)<<31>>31|0)|0;p=l;c[p>>2]=o;c[p+4>>2]=C;c[j>>2]=(c[j>>2]|0)+1}o=c[k>>2]|0;o=rR(a|0,e|0,o|0,((o|0)<0)<<31>>31|0)|0;p=c[h>>2]|0;c[p>>2]=o;c[p+4>>2]=C;i=n;return}function zl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;n=m+24|0;g=m;h=m+20|0;j=m+16|0;k=m+12|0;l=m+8|0;c[n>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;c[h>>2]=e;c[j>>2]=f;c[l>>2]=jl(c[n>>2]|0,9,k,0)|0;if(c[l>>2]|0){n=c[l>>2]|0;i=m;return n|0}n=g;Me(c[k>>2]|0,1,c[n>>2]|0,c[n+4>>2]|0)|0;Je(c[k>>2]|0,2,c[h>>2]|0,c[j>>2]|0,0)|0;ue(c[k>>2]|0)|0;c[l>>2]=Zd(c[k>>2]|0)|0;n=c[l>>2]|0;i=m;return n|0}function Al(a,b,d,e,f,g,h,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+80|0;o=B+72|0;p=B+68|0;q=B+64|0;r=B+24|0;s=B+16|0;t=B+60|0;m=B+56|0;n=B+52|0;A=B+48|0;w=B+44|0;z=B+40|0;u=B+8|0;v=B;x=B+36|0;y=B+32|0;c[o>>2]=a;c[p>>2]=b;c[q>>2]=d;b=r;c[b>>2]=e;c[b+4>>2]=f;b=s;c[b>>2]=g;c[b+4>>2]=h;c[t>>2]=j;c[m>>2]=k;c[n>>2]=l;c[A>>2]=0;if(!(c[c[p>>2]>>2]|0)){j=r;c[w>>2]=Cl(c[p>>2]|0,c[q>>2]|0,c[j>>2]|0,c[j+4>>2]|0)|0;j=s;j=fR(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;l=c[t>>2]|0;c[l>>2]=j;c[l+4>>2]=C;c[c[n>>2]>>2]=(c[(c[p>>2]|0)+32>>2]|0)-(c[w>>2]|0);c[c[m>>2]>>2]=(c[(c[p>>2]|0)+36>>2]|0)+(c[w>>2]|0);A=c[A>>2]|0;i=B;return A|0}l=s;j=c[l+4>>2]|0;k=u;c[k>>2]=c[l>>2];c[k+4>>2]=j;k=r;j=c[k+4>>2]|0;l=v;c[l>>2]=c[k>>2];c[l+4>>2]=j;c[z>>2]=c[(c[p>>2]|0)+8>>2];while(1){if(!((c[z>>2]|0)!=0?(c[A>>2]|0)==0:0))break;l=v;c[x>>2]=Cl(c[z>>2]|0,c[q>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0;c[y>>2]=(c[(c[z>>2]|0)+32>>2]|0)-(c[x>>2]|0);l=u;c[A>>2]=zl(c[o>>2]|0,c[l>>2]|0,c[l+4>>2]|0,(c[(c[z>>2]|0)+36>>2]|0)+(c[x>>2]|0)|0,c[y>>2]|0)|0;l=u;l=gR(c[l>>2]|0,c[l+4>>2]|0,1,0)|0;j=u;c[j>>2]=l;c[j+4>>2]=C;j=(c[(c[z>>2]|0)+12>>2]|0)+1|0;l=v;j=gR(c[l>>2]|0,c[l+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0;l=v;c[l>>2]=j;c[l+4>>2]=C;c[z>>2]=c[(c[z>>2]|0)+4>>2]}if(c[A>>2]|0){A=c[A>>2]|0;i=B;return A|0}j=s;l=u;c[A>>2]=Al(c[o>>2]|0,c[c[p>>2]>>2]|0,(c[q>>2]|0)+1|0,c[j>>2]|0,c[j+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0,c[t>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;A=c[A>>2]|0;i=B;return A|0}function Bl(a,b,d,e,f,g,h,j,k,l,m,n,o,p){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=i;i=i+96|0;B=D+40|0;q=D+84|0;E=D+80|0;r=D+32|0;s=D+76|0;t=D+24|0;u=D+16|0;v=D+8|0;w=D;x=D+72|0;y=D+68|0;z=D+64|0;A=D+60|0;C=D+56|0;c[E>>2]=a;a=r;c[a>>2]=b;c[a+4>>2]=d;c[s>>2]=e;a=t;c[a>>2]=f;c[a+4>>2]=g;a=u;c[a>>2]=h;c[a+4>>2]=j;a=v;c[a>>2]=k;c[a+4>>2]=l;a=w;c[a>>2]=m;c[a+4>>2]=n;c[x>>2]=o;c[y>>2]=p;c[A>>2]=jl(c[E>>2]|0,11,z,0)|0;if(!(c[A>>2]|0)){E=r;Me(c[z>>2]|0,1,c[E>>2]|0,c[E+4>>2]|0)|0;Le(c[z>>2]|0,2,c[s>>2]|0)|0;E=t;Me(c[z>>2]|0,3,c[E>>2]|0,c[E+4>>2]|0)|0;E=u;Me(c[z>>2]|0,4,c[E>>2]|0,c[E+4>>2]|0)|0;E=w;do if((c[E>>2]|0)==0&(c[E+4>>2]|0)==0){E=v;Me(c[z>>2]|0,5,c[E>>2]|0,c[E+4>>2]|0)|0}else{e=v;p=c[e+4>>2]|0;o=w;a=c[o>>2]|0;o=c[o+4>>2]|0;E=B;c[E>>2]=c[e>>2];c[E+4>>2]=p;E=B+8|0;c[E>>2]=a;c[E+4>>2]=o;c[C>>2]=Od(24e3,B)|0;if(c[C>>2]|0){Oe(c[z>>2]|0,5,c[C>>2]|0,-1,148)|0;break}c[q>>2]=7;E=c[q>>2]|0;i=D;return E|0}while(0);Je(c[z>>2]|0,6,c[x>>2]|0,c[y>>2]|0,0)|0;ue(c[z>>2]|0)|0;c[A>>2]=Zd(c[z>>2]|0)|0}c[q>>2]=c[A>>2];E=c[q>>2]|0;i=D;return E|0}function Cl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;h=i;i=i+32|0;j=h+16|0;l=h+12|0;k=h;g=h+8|0;c[j>>2]=b;c[l>>2]=d;b=k;c[b>>2]=e;c[b+4>>2]=f;b=k;c[g>>2]=10-(Dl(c[b>>2]|0,c[b+4>>2]|0)|0);a[(c[(c[j>>2]|0)+36>>2]|0)+(c[g>>2]|0)>>0]=c[l>>2];b=k;El((c[(c[j>>2]|0)+36>>2]|0)+((c[g>>2]|0)+1)|0,c[b>>2]|0,c[b+4>>2]|0)|0;i=h;return c[g>>2]|0}function Dl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f;e=f+8|0;g=d;c[g>>2]=a;c[g+4>>2]=b;c[e>>2]=0;do{c[e>>2]=(c[e>>2]|0)+1;b=d;b=hR(c[b>>2]|0,c[b+4>>2]|0,7)|0;g=d;c[g>>2]=b;c[g+4>>2]=C;g=d}while((c[g>>2]|0)!=0|(c[g+4>>2]|0)!=0);i=f;return c[e>>2]|0}function El(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;g=k+20|0;l=k+8|0;h=k+16|0;j=k;c[g>>2]=b;b=l;c[b>>2]=e;c[b+4>>2]=f;c[h>>2]=c[g>>2];e=l;f=c[e+4>>2]|0;b=j;c[b>>2]=c[e>>2];c[b+4>>2]=f;do{l=(c[j>>2]&127|128)&255;b=c[h>>2]|0;c[h>>2]=b+1;a[b>>0]=l;b=j;b=hR(c[b>>2]|0,c[b+4>>2]|0,7)|0;l=j;c[l>>2]=b;c[l+4>>2]=C;l=j}while((c[l>>2]|0)!=0|(c[l+4>>2]|0)!=0);l=(c[h>>2]|0)+-1|0;a[l>>0]=(d[l>>0]|0)&127;i=k;return(c[h>>2]|0)-(c[g>>2]|0)|0}function Fl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;c[g>>2]=0;b=(c[e>>2]|0)+8|0;if(!((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0)){g=c[g>>2]|0;i=h;return g|0}c[g>>2]=jl(c[d>>2]|0,17,f,0)|0;if(c[g>>2]|0){g=c[g>>2]|0;i=h;return g|0}b=(c[e>>2]|0)+8|0;Me(c[f>>2]|0,1,c[b>>2]|0,c[b+4>>2]|0)|0;b=(c[e>>2]|0)+24|0;Me(c[f>>2]|0,2,c[b>>2]|0,c[b+4>>2]|0)|0;ue(c[f>>2]|0)|0;c[g>>2]=Zd(c[f>>2]|0)|0;g=c[g>>2]|0;i=h;return g|0}function Gl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l+8|0;k=l;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[l+4>>2]=f;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[h>>2]|0)){g=5;break}if((a[(c[g>>2]|0)+(c[k>>2]|0)>>0]|0)!=(a[(c[j>>2]|0)+(c[k>>2]|0)>>0]|0)){g=5;break}c[k>>2]=(c[k>>2]|0)+1}if((g|0)==5){i=l;return c[k>>2]|0}return 0}function Hl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+64|0;m=w+56|0;n=w+52|0;o=w+48|0;p=w+44|0;q=w+40|0;r=w+36|0;u=w+32|0;v=w+28|0;s=w+24|0;g=w+20|0;j=w+16|0;h=w+12|0;k=w+8|0;l=w+4|0;t=w;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=f;c[u>>2]=c[c[o>>2]>>2];do if(c[u>>2]|0){c[g>>2]=c[(c[u>>2]|0)+32>>2];c[j>>2]=c[g>>2];c[h>>2]=Gl(c[(c[u>>2]|0)+16>>2]|0,c[(c[u>>2]|0)+20>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;c[k>>2]=(c[r>>2]|0)-(c[h>>2]|0);b=c[h>>2]|0;b=Dl(b,((b|0)<0)<<31>>31)|0;e=c[k>>2]|0;e=b+(Dl(e,((e|0)<0)<<31>>31)|0)|0;c[j>>2]=(c[j>>2]|0)+(e+(c[k>>2]|0));if((c[j>>2]|0)>(c[(c[n>>2]|0)+224>>2]|0)?(c[(c[u>>2]|0)+16>>2]|0)!=0:0)break;if((c[j>>2]|0)>(c[(c[n>>2]|0)+224>>2]|0)?(v=Id(c[j>>2]|0)|0,c[(c[u>>2]|0)+36>>2]=v,(c[(c[u>>2]|0)+36>>2]|0)==0):0){c[m>>2]=7;v=c[m>>2]|0;i=w;return v|0}if(c[(c[u>>2]|0)+16>>2]|0){v=c[h>>2]|0;v=El((c[(c[u>>2]|0)+36>>2]|0)+(c[g>>2]|0)|0,v,((v|0)<0)<<31>>31)|0;c[g>>2]=(c[g>>2]|0)+v}v=c[k>>2]|0;v=El((c[(c[u>>2]|0)+36>>2]|0)+(c[g>>2]|0)|0,v,((v|0)<0)<<31>>31)|0;c[g>>2]=(c[g>>2]|0)+v;iR((c[(c[u>>2]|0)+36>>2]|0)+(c[g>>2]|0)|0,(c[q>>2]|0)+(c[h>>2]|0)|0,c[k>>2]|0)|0;c[(c[u>>2]|0)+32>>2]=(c[g>>2]|0)+(c[k>>2]|0);v=(c[u>>2]|0)+12|0;c[v>>2]=(c[v>>2]|0)+1;if(c[p>>2]|0){do if((c[(c[u>>2]|0)+24>>2]|0)<(c[r>>2]|0)){c[l>>2]=Ld(c[(c[u>>2]|0)+28>>2]|0,c[r>>2]<<1)|0;if(c[l>>2]|0){c[(c[u>>2]|0)+24>>2]=c[r>>2]<<1;c[(c[u>>2]|0)+28>>2]=c[l>>2];break}c[m>>2]=7;v=c[m>>2]|0;i=w;return v|0}while(0);c[(c[u>>2]|0)+16>>2]=c[(c[u>>2]|0)+28>>2];iR(c[(c[u>>2]|0)+16>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;c[(c[u>>2]|0)+20>>2]=c[r>>2]}else{c[(c[u>>2]|0)+16>>2]=c[q>>2];c[(c[u>>2]|0)+20>>2]=c[r>>2]}c[m>>2]=0;v=c[m>>2]|0;i=w;return v|0}while(0);c[s>>2]=Id(40+(c[(c[n>>2]|0)+224>>2]|0)|0)|0;if(!(c[s>>2]|0)){c[m>>2]=7;v=c[m>>2]|0;i=w;return v|0}d=c[s>>2]|0;g=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(g|0));c[(c[s>>2]|0)+32>>2]=11;c[(c[s>>2]|0)+36>>2]=(c[s>>2]|0)+40;if(c[u>>2]|0){c[t>>2]=c[c[u>>2]>>2];c[v>>2]=Hl(c[n>>2]|0,t,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;if(!(c[c[u>>2]>>2]|0))c[c[u>>2]>>2]=c[t>>2];c[(c[u>>2]|0)+4>>2]=c[s>>2];c[(c[s>>2]|0)+8>>2]=c[(c[u>>2]|0)+8>>2];c[c[s>>2]>>2]=c[t>>2];c[(c[s>>2]|0)+28>>2]=c[(c[u>>2]|0)+28>>2];c[(c[s>>2]|0)+24>>2]=c[(c[u>>2]|0)+24>>2];c[(c[u>>2]|0)+28>>2]=0}else{c[(c[s>>2]|0)+8>>2]=c[s>>2];c[v>>2]=Hl(c[n>>2]|0,s,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)|0}c[c[o>>2]>>2]=c[s>>2];c[m>>2]=c[v>>2];v=c[m>>2]|0;i=w;return v|0}function Il(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=((c[(c[d>>2]|0)+80>>2]|0)==0&1)-((c[(c[e>>2]|0)+80>>2]|0)==0&1);if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}a=(c[d>>2]|0)+88|0;b=(c[e>>2]|0)+88|0;if((c[a>>2]|0)==(c[b>>2]|0)?(c[a+4>>2]|0)==(c[b+4>>2]|0):0){c[f>>2]=(c[c[e>>2]>>2]|0)-(c[c[d>>2]>>2]|0);f=c[f>>2]|0;i=g;return f|0}else{a=(c[d>>2]|0)+88|0;d=c[a+4>>2]|0;b=(c[e>>2]|0)+88|0;e=c[b+4>>2]|0;c[f>>2]=(d|0)<(e|0)|((d|0)==(e|0)?(c[a>>2]|0)>>>0<(c[b>>2]|0)>>>0:0)?1:-1;f=c[f>>2]|0;i=g;return f|0}return 0}function Jl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=((c[(c[d>>2]|0)+80>>2]|0)==0&1)-((c[(c[e>>2]|0)+80>>2]|0)==0&1);if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}a=(c[d>>2]|0)+88|0;b=(c[e>>2]|0)+88|0;if((c[a>>2]|0)==(c[b>>2]|0)?(c[a+4>>2]|0)==(c[b+4>>2]|0):0){c[f>>2]=(c[c[e>>2]>>2]|0)-(c[c[d>>2]>>2]|0);f=c[f>>2]|0;i=g;return f|0}else{a=(c[d>>2]|0)+88|0;d=c[a+4>>2]|0;b=(c[e>>2]|0)+88|0;e=c[b+4>>2]|0;c[f>>2]=(d|0)>(e|0)|((d|0)==(e|0)?(c[a>>2]|0)>>>0>(c[b>>2]|0)>>>0:0)?1:-1;f=c[f>>2]|0;i=g;return f|0}return 0}function Kl(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if(d[(c[b>>2]|0)+5>>0]|0){a=c[b>>2]|0;a=a+40|0;c[a>>2]=0;i=e;return}Kd(c[(c[b>>2]|0)+40>>2]|0);Ve(c[(c[b>>2]|0)+52>>2]|0)|0;c[(c[b>>2]|0)+52>>2]=0;a=c[b>>2]|0;a=a+40|0;c[a>>2]=0;i=e;return}function Ll(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+64|0;s=v+52|0;g=v+48|0;t=v+44|0;h=v+40|0;q=v+36|0;u=v+32|0;o=v+28|0;p=v+24|0;l=v+20|0;j=v+16|0;m=v+12|0;k=v+8|0;n=v+4|0;r=v;c[g>>2]=b;c[t>>2]=e;c[h>>2]=f;f=c[t>>2]|0;if(c[(c[t>>2]|0)+72>>2]|0)c[u>>2]=(c[(c[t>>2]|0)+72>>2]|0)+(c[f+76>>2]|0);else c[u>>2]=c[f+40>>2];if(!((c[u>>2]|0)!=0?(c[u>>2]|0)>>>0<((c[(c[t>>2]|0)+40>>2]|0)+(c[(c[t>>2]|0)+44>>2]|0)|0)>>>0:0)){f=c[t>>2]|0;if(c[(c[t>>2]|0)+56>>2]|0){c[l>>2]=c[c[f+56>>2]>>2];Kd(c[(c[t>>2]|0)+40>>2]|0);c[(c[t>>2]|0)+40>>2]=0;do if(c[l>>2]|0){c[m>>2]=c[(c[l>>2]|0)+8>>2];c[k>>2]=(c[c[m>>2]>>2]|0)+1;c[(c[t>>2]|0)+64>>2]=c[(c[l>>2]|0)+12>>2];c[(c[t>>2]|0)+60>>2]=c[(c[l>>2]|0)+16>>2];c[j>>2]=Id(c[k>>2]|0)|0;if(c[j>>2]|0){iR(c[j>>2]|0,c[(c[m>>2]|0)+4>>2]|0,c[k>>2]|0)|0;u=c[k>>2]|0;c[(c[t>>2]|0)+76>>2]=u;c[(c[t>>2]|0)+44>>2]=u;u=c[j>>2]|0;c[(c[t>>2]|0)+72>>2]=u;c[(c[t>>2]|0)+40>>2]=u;u=(c[t>>2]|0)+56|0;c[u>>2]=(c[u>>2]|0)+4;break}c[s>>2]=7;u=c[s>>2]|0;i=v;return u|0}while(0);c[s>>2]=0;u=c[s>>2]|0;i=v;return u|0}Kl(f);l=(c[t>>2]|0)+32|0;j=c[l+4>>2]|0;m=(c[t>>2]|0)+16|0;k=c[m+4>>2]|0;if((j|0)>(k|0)|((j|0)==(k|0)?(c[l>>2]|0)>>>0>=(c[m>>2]|0)>>>0:0)){c[s>>2]=0;u=c[s>>2]|0;i=v;return u|0}k=c[g>>2]|0;j=(c[t>>2]|0)+32|0;l=j;l=gR(c[l>>2]|0,c[l+4>>2]|0,1,0)|0;m=C;c[j>>2]=l;c[j+4>>2]=m;c[q>>2]=am(k,l,m,(c[t>>2]|0)+40|0,(c[t>>2]|0)+44|0,(c[h>>2]|0)!=0?(c[t>>2]|0)+48|0:0)|0;if(c[q>>2]|0){c[s>>2]=c[q>>2];u=c[s>>2]|0;i=v;return u|0}if((c[h>>2]|0)!=0?(c[(c[t>>2]|0)+48>>2]|0)<(c[(c[t>>2]|0)+44>>2]|0):0){c[(c[t>>2]|0)+52>>2]=c[(c[g>>2]|0)+244>>2];c[(c[g>>2]|0)+244>>2]=0}c[u>>2]=c[(c[t>>2]|0)+40>>2]}c[q>>2]=Yl(c[t>>2]|0,c[u>>2]|0,20)|0;if(c[q>>2]|0){c[s>>2]=c[q>>2];u=c[s>>2]|0;i=v;return u|0}f=c[u>>2]|0;if(d[c[u>>2]>>0]&128)f=Vl(f,o)|0;else{c[o>>2]=d[f>>0];f=1}c[u>>2]=(c[u>>2]|0)+f;f=c[u>>2]|0;if(d[c[u>>2]>>0]&128)f=Vl(f,p)|0;else{c[p>>2]=d[f>>0];f=1}c[u>>2]=(c[u>>2]|0)+f;if(!((c[o>>2]|0)<0|(c[p>>2]|0)<=0)?((c[u>>2]|0)+(c[p>>2]|0)|0)>>>0<=((c[(c[t>>2]|0)+40>>2]|0)+(c[(c[t>>2]|0)+44>>2]|0)|0)>>>0:0){do if(((c[o>>2]|0)+(c[p>>2]|0)|0)>(c[(c[t>>2]|0)+68>>2]|0)){c[n>>2]=(c[o>>2]|0)+(c[p>>2]|0)<<1;c[r>>2]=Ld(c[(c[t>>2]|0)+64>>2]|0,c[n>>2]|0)|0;if(c[r>>2]|0){c[(c[t>>2]|0)+64>>2]=c[r>>2];c[(c[t>>2]|0)+68>>2]=c[n>>2];break}c[s>>2]=7;u=c[s>>2]|0;i=v;return u|0}while(0);c[q>>2]=Yl(c[t>>2]|0,c[u>>2]|0,(c[p>>2]|0)+10|0)|0;if(c[q>>2]|0){c[s>>2]=c[q>>2];u=c[s>>2]|0;i=v;return u|0}iR((c[(c[t>>2]|0)+64>>2]|0)+(c[o>>2]|0)|0,c[u>>2]|0,c[p>>2]|0)|0;c[(c[t>>2]|0)+60>>2]=(c[o>>2]|0)+(c[p>>2]|0);c[u>>2]=(c[u>>2]|0)+(c[p>>2]|0);f=c[u>>2]|0;if(d[c[u>>2]>>0]&128)f=Vl(f,(c[t>>2]|0)+76|0)|0;else{c[(c[t>>2]|0)+76>>2]=d[f>>0];f=1}c[u>>2]=(c[u>>2]|0)+f;c[(c[t>>2]|0)+72>>2]=c[u>>2];c[(c[t>>2]|0)+80>>2]=0;do if(((c[(c[t>>2]|0)+72>>2]|0)+(c[(c[t>>2]|0)+76>>2]|0)|0)>>>0<=((c[(c[t>>2]|0)+40>>2]|0)+(c[(c[t>>2]|0)+44>>2]|0)|0)>>>0){if((c[(c[t>>2]|0)+48>>2]|0)==0?(a[(c[(c[t>>2]|0)+72>>2]|0)+((c[(c[t>>2]|0)+76>>2]|0)-1)>>0]|0)!=0:0)break;c[s>>2]=0;u=c[s>>2]|0;i=v;return u|0}while(0);c[s>>2]=267;u=c[s>>2]|0;i=v;return u|0}c[s>>2]=267;u=c[s>>2]|0;i=v;return u|0}function Ml(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[e>>2]=b;if((c[(c[d>>2]|0)+40>>2]|0)!=0?(c[(c[e>>2]|0)+40>>2]|0)!=0:0){c[g>>2]=(c[(c[d>>2]|0)+60>>2]|0)-(c[(c[e>>2]|0)+60>>2]|0);a=c[(c[d>>2]|0)+64>>2]|0;b=c[(c[e>>2]|0)+64>>2]|0;if((c[g>>2]|0)<0)c[f>>2]=vQ(a,b,c[(c[d>>2]|0)+60>>2]|0)|0;else c[f>>2]=vQ(a,b,c[(c[e>>2]|0)+60>>2]|0)|0;if(!(c[f>>2]|0))c[f>>2]=c[g>>2]}else c[f>>2]=((c[(c[d>>2]|0)+40>>2]|0)==0&1)-((c[(c[e>>2]|0)+40>>2]|0)==0&1);if(c[f>>2]|0){g=c[f>>2]|0;i=h;return g|0}c[f>>2]=(c[c[e>>2]>>2]|0)-(c[c[d>>2]>>2]|0);g=c[f>>2]|0;i=h;return g|0}function Nl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+24|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if((c[h>>2]|0)==(c[g>>2]|0))c[h>>2]=(c[h>>2]|0)+-1;c[k>>2]=(c[h>>2]|0)-1;while(1){if((c[k>>2]|0)<0)break;c[l>>2]=c[k>>2];while(1){if((c[l>>2]|0)>=((c[g>>2]|0)-1|0))break;if((Yb[c[j>>2]&255](c[(c[f>>2]|0)+(c[l>>2]<<2)>>2]|0,c[(c[f>>2]|0)+((c[l>>2]|0)+1<<2)>>2]|0)|0)<0)break;c[m>>2]=c[(c[f>>2]|0)+((c[l>>2]|0)+1<<2)>>2];c[(c[f>>2]|0)+((c[l>>2]|0)+1<<2)>>2]=c[(c[f>>2]|0)+(c[l>>2]<<2)>>2];c[(c[f>>2]|0)+(c[l>>2]<<2)>>2]=c[m>>2];c[l>>2]=(c[l>>2]|0)+1}c[k>>2]=(c[k>>2]|0)+-1}i=n;return}function Ol(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;do if((c[h>>2]|0)>(c[(c[f>>2]|0)+20>>2]|0)){c[(c[f>>2]|0)+20>>2]=c[h>>2]<<1;c[j>>2]=Ld(c[(c[f>>2]|0)+16>>2]|0,c[(c[f>>2]|0)+20>>2]|0)|0;if(c[j>>2]|0){c[(c[f>>2]|0)+16>>2]=c[j>>2];break}c[e>>2]=7;j=c[e>>2]|0;i=k;return j|0}while(0);iR(c[(c[f>>2]|0)+16>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;c[e>>2]=0;j=c[e>>2]|0;i=k;return j|0}function Pl(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+12|0;f=k+8|0;j=k+4|0;g=k+16|0;h=k;c[l>>2]=b;c[f>>2]=e;c[j>>2]=0;if((d[(c[l>>2]|0)+231>>0]|0|0)!=0?(c[(c[f>>2]|0)+56>>2]|0)!=0:0){a[g>>0]=0;l=(c[f>>2]|0)+88|0;c[l>>2]=0;c[l+4>>2]=0;c[(c[f>>2]|0)+84>>2]=0;Wl(0,c[(c[f>>2]|0)+72>>2]|0,c[(c[f>>2]|0)+76>>2]|0,(c[f>>2]|0)+80|0,(c[f>>2]|0)+88|0,(c[f>>2]|0)+84|0,g);l=c[j>>2]|0;i=k;return l|0}c[j>>2]=Yl(c[f>>2]|0,c[(c[f>>2]|0)+72>>2]|0,10)|0;if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}c[h>>2]=Ul(c[(c[f>>2]|0)+72>>2]|0,(c[f>>2]|0)+88|0)|0;c[(c[f>>2]|0)+80>>2]=(c[(c[f>>2]|0)+72>>2]|0)+(c[h>>2]|0);l=c[j>>2]|0;i=k;return l|0}function Ql(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;s=u+36|0;t=u+32|0;r=u+28|0;h=u+24|0;j=u+20|0;q=u+16|0;o=u+12|0;l=u+41|0;k=u+40|0;p=u+8|0;n=u;c[t>>2]=b;c[r>>2]=e;c[h>>2]=f;c[j>>2]=g;c[q>>2]=0;c[o>>2]=c[(c[r>>2]|0)+80>>2];a[l>>0]=0;do if((d[(c[t>>2]|0)+231>>0]|0)!=0?(c[(c[r>>2]|0)+56>>2]|0)!=0:0){a[k>>0]=0;if(c[h>>2]|0){c[c[h>>2]>>2]=c[(c[r>>2]|0)+80>>2];c[c[j>>2]>>2]=(c[(c[r>>2]|0)+84>>2]|0)-1}Wl(0,c[(c[r>>2]|0)+72>>2]|0,c[(c[r>>2]|0)+76>>2]|0,o,(c[r>>2]|0)+88|0,(c[r>>2]|0)+84|0,k);if(a[k>>0]|0){c[(c[r>>2]|0)+80>>2]=0;break}else{c[(c[r>>2]|0)+80>>2]=c[o>>2];break}}else m=8;while(0);do if((m|0)==8){c[p>>2]=(c[(c[r>>2]|0)+72>>2]|0)+(c[(c[r>>2]|0)+76>>2]|0);while(1){if(a[c[o>>2]>>0]|a[l>>0]){f=c[o>>2]|0;c[o>>2]=f+1;a[l>>0]=a[f>>0]&128;continue}if(!(c[(c[r>>2]|0)+52>>2]|0))break;if((c[o>>2]|0)>>>0<((c[(c[r>>2]|0)+40>>2]|0)+(c[(c[r>>2]|0)+48>>2]|0)|0)>>>0)break;c[q>>2]=Xl(c[r>>2]|0)|0;if(c[q>>2]|0){m=14;break}}if((m|0)==14){c[s>>2]=c[q>>2];t=c[s>>2]|0;i=u;return t|0}c[o>>2]=(c[o>>2]|0)+1;if(c[h>>2]|0){c[c[h>>2]>>2]=c[(c[r>>2]|0)+80>>2];c[c[j>>2]>>2]=(c[o>>2]|0)-(c[(c[r>>2]|0)+80>>2]|0)-1}while(1){if((c[o>>2]|0)>>>0<(c[p>>2]|0)>>>0)h=(a[c[o>>2]>>0]|0)==0;else h=0;j=c[o>>2]|0;if(!h)break;c[o>>2]=j+1}h=c[r>>2]|0;if(j>>>0>=(c[p>>2]|0)>>>0){c[h+80>>2]=0;break}c[q>>2]=Yl(h,c[o>>2]|0,10)|0;if(!(c[q>>2]|0)){e=c[o>>2]|0;e=e+(Ul(c[o>>2]|0,n)|0)|0;c[(c[r>>2]|0)+80>>2]=e;e=n;l=c[e>>2]|0;e=c[e+4>>2]|0;h=(c[r>>2]|0)+88|0;k=h;j=c[k>>2]|0;k=c[k+4>>2]|0;if(a[(c[t>>2]|0)+231>>0]|0){r=fR(j|0,k|0,l|0,e|0)|0;t=h;c[t>>2]=r;c[t+4>>2]=C;break}else{r=gR(j|0,k|0,l|0,e|0)|0;t=h;c[t>>2]=r;c[t+4>>2]=C;break}}}while(0);c[s>>2]=0;t=c[s>>2]|0;i=u;return t|0}function Rl(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+32|0;j=t+28|0;k=t+24|0;l=t+20|0;r=t+16|0;o=t+12|0;q=t+8|0;n=t+4|0;p=t;m=t+36|0;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[r>>2]=c[c[k>>2]>>2];c[o>>2]=c[c[l>>2]>>2];c[q>>2]=(c[r>>2]|0)+(c[o>>2]|0);c[n>>2]=0;c[p>>2]=c[r>>2];while(1){a[m>>0]=0;while(1){if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break;if(!((a[m>>0]|a[c[p>>2]>>0])&254))break;f=c[p>>2]|0;c[p>>2]=f+1;a[m>>0]=a[f>>0]&128}e=(c[p>>2]|0)-(c[r>>2]|0)|0;if((c[h>>2]|0)==(c[n>>2]|0)){s=7;break}c[o>>2]=(c[o>>2]|0)-e;c[r>>2]=c[p>>2];if(!(c[o>>2]|0))break;c[p>>2]=(c[r>>2]|0)+1;e=c[p>>2]|0;if(d[c[p>>2]>>0]&128)e=Vl(e,n)|0;else{c[n>>2]=d[e>>0];e=1}c[p>>2]=(c[p>>2]|0)+e}if((s|0)==7)c[o>>2]=e;if(!(c[j>>2]|0)){s=c[r>>2]|0;r=c[k>>2]|0;c[r>>2]=s;r=c[o>>2]|0;s=c[l>>2]|0;c[s>>2]=r;i=t;return}if(((c[r>>2]|0)+(c[o>>2]|0)|0)==(c[q>>2]|0)){s=c[r>>2]|0;r=c[k>>2]|0;c[r>>2]=s;r=c[o>>2]|0;s=c[l>>2]|0;c[s>>2]=r;i=t;return}kR((c[r>>2]|0)+(c[o>>2]|0)|0,0,(c[q>>2]|0)-((c[r>>2]|0)+(c[o>>2]|0))|0)|0;s=c[r>>2]|0;r=c[k>>2]|0;c[r>>2]=s;r=c[o>>2]|0;s=c[l>>2]|0;c[s>>2]=r;i=t;return}function Sl(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=i;i=i+48|0;h=p+8|0;r=p+40|0;q=p+36|0;j=p+32|0;m=p+28|0;k=p+24|0;n=p+20|0;o=p+16|0;l=p;s=h;c[s>>2]=b;c[s+4>>2]=d;c[r>>2]=e;c[q>>2]=f;c[j>>2]=g;c[m>>2]=0;c[k>>2]=0;c[n>>2]=c[r>>2];c[o>>2]=(c[r>>2]|0)+(c[q>>2]|0);if((a[c[n>>2]>>0]|0)!=1){if((a[c[n>>2]>>0]|0)==2){s=h;s=El((c[j>>2]|0)+(c[m>>2]|0)|0,c[s>>2]|0,c[s+4>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+s;s=c[m>>2]|0;c[m>>2]=s+1;a[(c[j>>2]|0)+s>>0]=2;c[k>>2]=1}Tl(0,n)}while(1){if((c[n>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;if((a[c[n>>2]>>0]|0)!=1)break;c[n>>2]=(c[n>>2]|0)+1;s=Ul(c[n>>2]|0,l)|0;c[n>>2]=(c[n>>2]|0)+s;if((a[c[n>>2]>>0]|0)==2){if(!(c[k>>2]|0)){s=h;s=El((c[j>>2]|0)+(c[m>>2]|0)|0,c[s>>2]|0,c[s+4>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+s;c[k>>2]=1}s=c[m>>2]|0;c[m>>2]=s+1;a[(c[j>>2]|0)+s>>0]=1;s=l;s=El((c[j>>2]|0)+(c[m>>2]|0)|0,c[s>>2]|0,c[s+4>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+s;s=c[m>>2]|0;c[m>>2]=s+1;a[(c[j>>2]|0)+s>>0]=2}Tl(0,n)}if(!(c[k>>2]|0)){s=c[m>>2]|0;i=p;return s|0}s=c[m>>2]|0;c[m>>2]=s+1;a[(c[j>>2]|0)+s>>0]=0;s=c[m>>2]|0;i=p;return s|0}function Tl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+16|0;f=l+12|0;k=l+8|0;g=l+20|0;h=l+4|0;j=l;c[e>>2]=b;c[f>>2]=d;c[k>>2]=c[c[f>>2]>>2];a[g>>0]=0;while(1){if(!(254&(a[c[k>>2]>>0]|a[g>>0])))break;d=c[k>>2]|0;c[k>>2]=d+1;a[g>>0]=a[d>>0]&128}if(!(c[e>>2]|0)){b=c[k>>2]|0;d=c[f>>2]|0;c[d>>2]=b;i=l;return}c[h>>2]=(c[k>>2]|0)-(c[c[f>>2]>>2]|0);c[j>>2]=c[c[e>>2]>>2];iR(c[j>>2]|0,c[c[f>>2]>>2]|0,c[h>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+(c[h>>2]|0);c[c[e>>2]>>2]=c[j>>2];b=c[k>>2]|0;d=c[f>>2]|0;c[d>>2]=b;i=l;return}function Ul(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;e=n+36|0;f=n+32|0;g=n+28|0;l=n+24|0;h=n+20|0;j=n+8|0;m=n+16|0;k=n;c[f>>2]=b;c[g>>2]=d;c[l>>2]=c[f>>2];b=c[f>>2]|0;c[f>>2]=b+1;c[h>>2]=a[b>>0];b=c[h>>2]|0;if(!(c[h>>2]&128)){m=c[g>>2]|0;c[m>>2]=b;c[m+4>>2]=0;c[e>>2]=1;m=c[e>>2]|0;i=n;return m|0}d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=b&127|a[d>>0]<<7;b=c[h>>2]|0;if(!(c[h>>2]&16384)){m=c[g>>2]|0;c[m>>2]=b;c[m+4>>2]=0;c[e>>2]=2;m=c[e>>2]|0;i=n;return m|0}d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=b&16383|a[d>>0]<<14;b=c[h>>2]|0;if(!(c[h>>2]&2097152)){m=c[g>>2]|0;c[m>>2]=b;c[m+4>>2]=0;c[e>>2]=3;m=c[e>>2]|0;i=n;return m|0}d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=b&2097151|a[d>>0]<<21;b=c[h>>2]|0;if(!(c[h>>2]&268435456)){m=c[g>>2]|0;c[m>>2]=b;c[m+4>>2]=0;c[e>>2]=4;m=c[e>>2]|0;i=n;return m|0}h=j;c[h>>2]=b&268435455;c[h+4>>2]=0;c[m>>2]=28;while(1){if((c[m>>2]|0)>63)break;h=c[f>>2]|0;c[f>>2]=h+1;h=a[h>>0]|0;d=k;c[d>>2]=h;c[d+4>>2]=((h|0)<0)<<31>>31;d=lR(c[k>>2]&127|0,0,c[m>>2]|0)|0;h=j;d=gR(c[h>>2]|0,c[h+4>>2]|0,d|0,C|0)|0;h=j;c[h>>2]=d;c[h+4>>2]=C;if((c[k>>2]&128|0)==0&0==0)break;c[m>>2]=(c[m>>2]|0)+7}k=c[j+4>>2]|0;m=c[g>>2]|0;c[m>>2]=c[j>>2];c[m+4>>2]=k;c[e>>2]=(c[f>>2]|0)-(c[l>>2]|0);m=c[e>>2]|0;i=n;return m|0}function Vl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=a[d>>0];d=c[h>>2]&127;b=c[f>>2]|0;c[f>>2]=b+1;c[h>>2]=d|a[b>>0]<<7;b=c[h>>2]|0;if(!(c[h>>2]&16384)){c[c[g>>2]>>2]=b;c[e>>2]=2;h=c[e>>2]|0;i=j;return h|0}d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=b&16383|a[d>>0]<<14;b=c[h>>2]|0;if(!(c[h>>2]&2097152)){c[c[g>>2]>>2]=b;c[e>>2]=3;h=c[e>>2]|0;i=j;return h|0}d=c[f>>2]|0;c[f>>2]=d+1;c[h>>2]=b&2097151|a[d>>0]<<21;b=c[h>>2]|0;if(!(c[h>>2]&268435456)){c[c[g>>2]>>2]=b;c[e>>2]=4;h=c[e>>2]|0;i=j;return h|0}else{c[h>>2]=b&268435455;c[c[g>>2]>>2]=c[h>>2]|(a[c[f>>2]>>0]&15)<<28;c[e>>2]=5;h=c[e>>2]|0;i=j;return h|0}return 0}function Wl(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+80|0;k=B+76|0;l=B+72|0;m=B+68|0;n=B+64|0;o=B+60|0;p=B+56|0;q=B+52|0;w=B+48|0;t=B+16|0;z=B+44|0;x=B+40|0;y=B+36|0;u=B+32|0;r=B+8|0;v=B+28|0;s=B;A=B+24|0;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[w>>2]=c[c[n>>2]>>2];if(c[w>>2]|0){c[v>>2]=(c[k>>2]|0)!=0?-1:1;_l(w,c[l>>2]|0,s);f=c[v>>2]|0;h=s;h=rR(f|0,((f|0)<0)<<31>>31|0,c[h>>2]|0,c[h+4>>2]|0)|0;f=c[o>>2]|0;g=f;h=fR(c[g>>2]|0,c[g+4>>2]|0,h|0,C|0)|0;c[f>>2]=h;c[f+4>>2]=C;if((c[w>>2]|0)==(c[l>>2]|0))a[c[q>>2]>>0]=1;else{c[A>>2]=c[w>>2];$l(c[l>>2]|0,w);c[c[p>>2]>>2]=(c[A>>2]|0)-(c[w>>2]|0)}c[c[n>>2]>>2]=c[w>>2];i=B;return}f=t;c[f>>2]=0;c[f+4>>2]=0;c[z>>2]=0;c[x>>2]=c[l>>2];c[y>>2]=(c[l>>2]|0)+(c[m>>2]|0);c[u>>2]=1;while(1){if((c[x>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break;f=Ul(c[x>>2]|0,r)|0;c[x>>2]=(c[x>>2]|0)+f;f=c[u>>2]|0;h=r;h=rR(f|0,((f|0)<0)<<31>>31|0,c[h>>2]|0,c[h+4>>2]|0)|0;f=t;h=gR(c[f>>2]|0,c[f+4>>2]|0,h|0,C|0)|0;f=t;c[f>>2]=h;c[f+4>>2]=C;c[z>>2]=c[x>>2];Zl(0,x);while(1){if((c[x>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break;if(a[c[x>>2]>>0]|0)break;c[x>>2]=(c[x>>2]|0)+1}c[u>>2]=(c[k>>2]|0)!=0?-1:1}c[c[p>>2]>>2]=(c[y>>2]|0)-(c[z>>2]|0);c[c[n>>2]>>2]=c[z>>2];g=t;h=c[g+4>>2]|0;f=c[o>>2]|0;c[f>>2]=c[g>>2];c[f+4>>2]=h;i=B;return}function Xl(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;d=g+4|0;f=g;c[e>>2]=b;if(((c[(c[e>>2]|0)+44>>2]|0)-(c[(c[e>>2]|0)+48>>2]|0)|0)<4096)b=(c[(c[e>>2]|0)+44>>2]|0)-(c[(c[e>>2]|0)+48>>2]|0)|0;else b=4096;c[d>>2]=b;c[f>>2]=We(c[(c[e>>2]|0)+52>>2]|0,(c[(c[e>>2]|0)+40>>2]|0)+(c[(c[e>>2]|0)+48>>2]|0)|0,c[d>>2]|0,c[(c[e>>2]|0)+48>>2]|0)|0;if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}b=(c[e>>2]|0)+48|0;c[b>>2]=(c[b>>2]|0)+(c[d>>2]|0);b=(c[(c[e>>2]|0)+40>>2]|0)+(c[(c[e>>2]|0)+48>>2]|0)|0;d=b+20|0;do{a[b>>0]=0;b=b+1|0}while((b|0)<(d|0));if((c[(c[e>>2]|0)+48>>2]|0)!=(c[(c[e>>2]|0)+44>>2]|0)){f=c[f>>2]|0;i=g;return f|0}Ve(c[(c[e>>2]|0)+52>>2]|0)|0;c[(c[e>>2]|0)+52>>2]=0;c[(c[e>>2]|0)+48>>2]=0;f=c[f>>2]|0;i=g;return f|0}function Yl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=0;while(1){if(!((c[h>>2]|0)==0?(c[(c[e>>2]|0)+52>>2]|0)!=0:0)){e=5;break}if(((c[f>>2]|0)-(c[(c[e>>2]|0)+40>>2]|0)+(c[g>>2]|0)|0)<=(c[(c[e>>2]|0)+48>>2]|0)){ -e=5;break}c[h>>2]=Xl(c[e>>2]|0)|0}if((e|0)==5){i=j;return c[h>>2]|0}return 0}function Zl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+16|0;f=l+12|0;k=l+8|0;g=l+20|0;h=l+4|0;j=l;c[e>>2]=b;c[f>>2]=d;c[k>>2]=c[c[f>>2]>>2];a[g>>0]=0;while(1){d=(a[c[k>>2]>>0]|a[g>>0]|0)!=0;b=c[k>>2]|0;c[k>>2]=b+1;if(!d)break;a[g>>0]=a[b>>0]&128}if(!(c[e>>2]|0)){j=c[k>>2]|0;k=c[f>>2]|0;c[k>>2]=j;i=l;return}c[h>>2]=(c[k>>2]|0)-(c[c[f>>2]>>2]|0);c[j>>2]=c[c[e>>2]>>2];iR(c[j>>2]|0,c[c[f>>2]>>2]|0,c[h>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+(c[h>>2]|0);c[c[e>>2]>>2]=c[j>>2];j=c[k>>2]|0;k=c[f>>2]|0;c[k>>2]=j;i=l;return}function _l(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+20|0;g=l+16|0;h=l+12|0;j=l;k=l+8|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[k>>2]=(c[c[f>>2]>>2]|0)+-2;while(1){if((c[k>>2]|0)>>>0<(c[g>>2]|0)>>>0)break;if(!(a[c[k>>2]>>0]&128))break;c[k>>2]=(c[k>>2]|0)+-1}c[k>>2]=(c[k>>2]|0)+1;c[c[f>>2]>>2]=c[k>>2];Ul(c[k>>2]|0,j)|0;d=j;e=c[d+4>>2]|0;b=c[h>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=e;i=l;return}function $l(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k+8|0;f=k+4|0;h=k;g=k+12|0;c[e>>2]=b;c[f>>2]=d;c[h>>2]=(c[c[f>>2]>>2]|0)+-2;a[g>>0]=0;do{if((c[h>>2]|0)>>>0<=(c[e>>2]|0)>>>0)break;d=c[h>>2]|0;c[h>>2]=d+-1;d=a[d>>0]|0;a[g>>0]=d}while((d<<24>>24|0)==0);while(1){if((c[h>>2]|0)>>>0>(c[e>>2]|0)>>>0)d=(a[c[h>>2]>>0]&128|a[g>>0]|0)!=0;else d=0;b=c[h>>2]|0;if(!d)break;c[h>>2]=b+-1;a[g>>0]=a[b>>0]|0}if(b>>>0<=(c[e>>2]|0)>>>0){if((a[g>>0]|0)==0?(c[c[f>>2]>>2]|0)>>>0>((c[h>>2]|0)+2|0)>>>0:0)j=11}else j=11;if((j|0)==11)c[h>>2]=(c[h>>2]|0)+2;do{j=c[h>>2]|0;c[h>>2]=j+1}while((a[j>>0]&128|0)!=0);c[c[f>>2]>>2]=c[h>>2];i=k;return}function am(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;o=t+8|0;p=t+40|0;j=t+36|0;k=t;q=t+32|0;l=t+28|0;m=t+24|0;s=t+20|0;n=t+16|0;r=t+12|0;c[j>>2]=b;b=k;c[b>>2]=d;c[b+4>>2]=e;c[q>>2]=f;c[l>>2]=g;c[m>>2]=h;d=c[j>>2]|0;if(c[(c[j>>2]|0)+244>>2]|0){o=k;c[s>>2]=Ye(c[d+244>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0}else{if(0==(c[d+240>>2]|0)?(c[o>>2]=c[(c[j>>2]|0)+20>>2],o=Od(24010,o)|0,c[(c[j>>2]|0)+240>>2]=o,0==(c[(c[j>>2]|0)+240>>2]|0)):0){c[p>>2]=7;s=c[p>>2]|0;i=t;return s|0}o=k;c[s>>2]=Ue(c[(c[j>>2]|0)+12>>2]|0,c[(c[j>>2]|0)+16>>2]|0,c[(c[j>>2]|0)+240>>2]|0,24022,c[o>>2]|0,c[o+4>>2]|0,0,(c[j>>2]|0)+244|0)|0}if((c[s>>2]|0)==0?(c[n>>2]=Xe(c[(c[j>>2]|0)+244>>2]|0)|0,c[c[l>>2]>>2]=c[n>>2],(c[q>>2]|0)!=0):0){c[r>>2]=Id((c[n>>2]|0)+20|0)|0;if(c[r>>2]|0){if((c[m>>2]|0)!=0&(c[n>>2]|0)>16384){c[n>>2]=4096;c[c[m>>2]>>2]=c[n>>2]}c[s>>2]=We(c[(c[j>>2]|0)+244>>2]|0,c[r>>2]|0,c[n>>2]|0,0)|0;d=(c[r>>2]|0)+(c[n>>2]|0)|0;e=d+20|0;do{a[d>>0]=0;d=d+1|0}while((d|0)<(e|0));if(c[s>>2]|0){Kd(c[r>>2]|0);c[r>>2]=0}}else c[s>>2]=7;c[c[q>>2]>>2]=c[r>>2]}c[p>>2]=c[s>>2];s=c[p>>2]|0;i=t;return s|0}function bm(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;n=r+36|0;g=r+32|0;o=r+28|0;h=r+24|0;j=r+20|0;k=r+16|0;p=r+12|0;m=r+8|0;l=r+4|0;q=r;c[g>>2]=a;c[o>>2]=b;c[h>>2]=e;c[j>>2]=f;c[p>>2]=c[(c[o>>2]|0)+4>>2];c[k>>2]=0;a:while(1){if(c[(c[o>>2]|0)+28>>2]|0){g=12;break}if((c[k>>2]|0)>=(c[(c[o>>2]|0)+4>>2]|0)){g=12;break}c[m>>2]=0;c[l>>2]=c[(c[c[o>>2]>>2]|0)+(c[k>>2]<<2)>>2];do{c[q>>2]=Ll(c[g>>2]|0,c[l>>2]|0,0)|0;if(c[q>>2]|0){g=6;break a}if(!(c[h>>2]|0))break;e=cm(c[l>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;c[m>>2]=e}while((e|0)<0);if((c[m>>2]|0)!=0?(d[(c[l>>2]|0)+4>>0]|0|0)!=0:0)Kl(c[l>>2]|0);c[k>>2]=(c[k>>2]|0)+1}if((g|0)==6){c[n>>2]=c[q>>2];q=c[n>>2]|0;i=r;return q|0}else if((g|0)==12){Nl(c[c[o>>2]>>2]|0,c[p>>2]|0,c[p>>2]|0,184);c[n>>2]=0;q=c[n>>2]|0;i=r;return q|0}return 0}function cm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+12|0;e=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[e>>2]=b;c[g>>2]=d;c[h>>2]=0;if(!(c[(c[f>>2]|0)+40>>2]|0)){h=c[h>>2]|0;i=j;return h|0}a=c[(c[f>>2]|0)+64>>2]|0;d=c[e>>2]|0;if((c[(c[f>>2]|0)+60>>2]|0)>(c[g>>2]|0))c[h>>2]=vQ(a,d,c[g>>2]|0)|0;else c[h>>2]=vQ(a,d,c[(c[f>>2]|0)+60>>2]|0)|0;if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}c[h>>2]=(c[(c[f>>2]|0)+60>>2]|0)-(c[g>>2]|0);h=c[h>>2]|0;i=j;return h|0}function dm(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0;G=i;i=i+96|0;l=G+88|0;m=G+84|0;n=G+80|0;o=G+76|0;p=G+72|0;q=G+68|0;r=G+64|0;s=G+60|0;t=G+56|0;D=G+52|0;A=G+48|0;E=G+44|0;y=G+40|0;z=G+36|0;w=G+16|0;v=G+8|0;u=G;x=G+32|0;F=G+28|0;B=G+24|0;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[D>>2]=0;c[A>>2]=0;if(((c[o>>2]|0)<0?(c[(c[l>>2]|0)+252>>2]|0)!=0:0)?(c[y>>2]=0,c[D>>2]=em(c[l>>2]|0,c[n>>2]|0,c[p>>2]|0,c[q>>2]|0,((c[r>>2]|0)!=0?1:(c[s>>2]|0)!=0)&1,y)|0,(c[D>>2]|0)==0&(c[y>>2]|0)!=0):0)c[D>>2]=fm(c[t>>2]|0,c[y>>2]|0)|0;a:do if((c[o>>2]|0)!=-1){if(!(c[D>>2]|0))c[D>>2]=gm(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,A)|0;while(1){if(c[D>>2]|0)break a;f=ue(c[A>>2]|0)|0;c[D>>2]=f;if(100!=(f|0))break a;c[z>>2]=0;y=Ee(c[A>>2]|0,1)|0;f=w;c[f>>2]=y;c[f+4>>2]=C;f=Ee(c[A>>2]|0,2)|0;y=v;c[y>>2]=f;c[y+4>>2]=C;y=Ee(c[A>>2]|0,3)|0;f=u;c[f>>2]=y;c[f+4>>2]=C;c[x>>2]=Be(c[A>>2]|0,4)|0;c[F>>2]=Ae(c[A>>2]|0,4)|0;f=w;if(((c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0)&(c[p>>2]|0)!=0){c[B>>2]=(c[r>>2]|0)!=0?v:0;c[D>>2]=hm(c[l>>2]|0,c[p>>2]|0,c[q>>2]|0,c[F>>2]|0,c[x>>2]|0,w,c[B>>2]|0)|0;if(c[D>>2]|0)break a;if((c[r>>2]|0)==0&(c[s>>2]|0)==0){k=w;y=c[k+4>>2]|0;f=v;c[f>>2]=c[k>>2];c[f+4>>2]=y}}k=w;y=v;f=u;c[D>>2]=im((c[(c[t>>2]|0)+4>>2]|0)+1|0,((c[r>>2]|0)==0?(c[s>>2]|0)==0:0)&1,c[k>>2]|0,c[k+4>>2]|0,c[y>>2]|0,c[y+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[F>>2]|0,c[x>>2]|0,z)|0;if(c[D>>2]|0)break a;c[D>>2]=fm(c[t>>2]|0,c[z>>2]|0)|0}}while(0);c[E>>2]=Zd(c[A>>2]|0)|0;if((c[D>>2]|0)!=101){f=c[D>>2]|0;i=G;return f|0}c[D>>2]=c[E>>2];f=c[D>>2]|0;i=G;return f|0}function em(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=i;i=i+80|0;A=y+64|0;z=y+60|0;h=y+56|0;j=y+52|0;k=y+48|0;l=y+44|0;u=y+40|0;s=y+36|0;m=y+32|0;q=y+28|0;v=y+24|0;t=y+20|0;o=y+16|0;w=y+12|0;r=y+8|0;n=y+4|0;p=y;c[A>>2]=a;c[z>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[u>>2]=0;c[m>>2]=0;c[q>>2]=0;c[v>>2]=0;c[t>>2]=(c[(c[A>>2]|0)+252>>2]|0)+((c[z>>2]|0)*24|0)+4;if(c[k>>2]|0){c[o>>2]=0;c[s>>2]=c[(c[t>>2]|0)+8>>2];while(1){if(!(c[s>>2]|0))break;c[w>>2]=c[(c[s>>2]|0)+12>>2];c[r>>2]=c[(c[s>>2]|0)+16>>2];if(c[j>>2]|0){if((c[r>>2]|0)>=(c[j>>2]|0)?0==(vQ(c[w>>2]|0,c[h>>2]|0,c[j>>2]|0)|0):0)x=7}else x=7;if((x|0)==7){x=0;if((c[q>>2]|0)==(c[o>>2]|0)){c[o>>2]=(c[o>>2]|0)+16;c[n>>2]=Ld(c[m>>2]|0,c[o>>2]<<2)|0;if(!(c[n>>2]|0)){x=9;break}c[m>>2]=c[n>>2]}z=c[s>>2]|0;A=c[q>>2]|0;c[q>>2]=A+1;c[(c[m>>2]|0)+(A<<2)>>2]=z}c[s>>2]=c[c[s>>2]>>2]}if((x|0)==9){c[v>>2]=7;c[q>>2]=0}if((c[q>>2]|0)>1)uQ(c[m>>2]|0,c[q>>2]|0,4,185)}else{c[s>>2]=Ak(c[t>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;if(c[s>>2]|0){c[m>>2]=s;c[q>>2]=1}}do if((c[q>>2]|0)>0){c[p>>2]=96+((c[q>>2]|0)+1<<2);c[u>>2]=Id(c[p>>2]|0)|0;if(c[u>>2]|0){kR(c[u>>2]|0,0,c[p>>2]|0)|0;c[c[u>>2]>>2]=2147483647;c[(c[u>>2]|0)+56>>2]=(c[u>>2]|0)+96;iR(c[(c[u>>2]|0)+56>>2]|0,c[m>>2]|0,c[q>>2]<<2|0)|0;break}else{c[v>>2]=7;break}}while(0);if(!(c[k>>2]|0)){z=c[u>>2]|0;A=c[l>>2]|0;c[A>>2]=z;A=c[v>>2]|0;i=y;return A|0}Kd(c[m>>2]|0);z=c[u>>2]|0;A=c[l>>2]|0;c[A>>2]=z;A=c[v>>2]|0;i=y;return A|0}function fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;do if(!((c[(c[e>>2]|0)+4>>2]|0)%16|0)){c[h>>2]=(c[(c[e>>2]|0)+4>>2]|0)+16<<2;c[g>>2]=Ld(c[c[e>>2]>>2]|0,c[h>>2]|0)|0;if(c[g>>2]|0){c[c[e>>2]>>2]=c[g>>2];break}wl(c[f>>2]|0);c[d>>2]=7;b=c[d>>2]|0;i=j;return b|0}while(0);a=c[f>>2]|0;h=(c[e>>2]|0)+4|0;b=c[h>>2]|0;c[h>>2]=b+1;c[(c[c[e>>2]>>2]|0)+(b<<2)>>2]=a;c[d>>2]=0;b=c[d>>2]|0;i=j;return b|0}function gm(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=0;d=c[g>>2]|0;if((c[k>>2]|0)<0){c[n>>2]=jl(d,13,m,0)|0;if(!(c[n>>2]|0)){k=c[m>>2]|0;f=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,0)|0;Me(k,1,f,C)|0;f=c[m>>2]|0;k=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,1023)|0;Me(f,2,k,C)|0}}else{c[n>>2]=jl(d,12,m,0)|0;if(!(c[n>>2]|0)){f=c[m>>2]|0;k=ml(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;Me(f,1,k,C)|0}}c[c[l>>2]>>2]=c[m>>2];i=o;return c[n>>2]|0}function hm(a,b,e,f,g,h,j){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+48|0;n=v+40|0;o=v+36|0;p=v+32|0;k=v+28|0;l=v+24|0;q=v+20|0;r=v+16|0;t=v+12|0;m=v+8|0;u=v+4|0;s=v;c[n>>2]=a;c[o>>2]=b;c[p>>2]=e;c[k>>2]=f;c[l>>2]=g;c[q>>2]=h;c[r>>2]=j;c[t>>2]=0;g=c[k>>2]|0;if((d[c[k>>2]>>0]|0)&128)Vl(g,m)|0;else c[m>>2]=d[g>>0];c[t>>2]=jm(c[o>>2]|0,c[p>>2]|0,c[k>>2]|0,c[l>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;if(!((c[t>>2]|0)==0&(c[m>>2]|0)>1)){u=c[t>>2]|0;i=v;return u|0}c[u>>2]=0;c[s>>2]=0;if((c[q>>2]|0)!=0&(c[r>>2]|0)!=0?(l=c[q>>2]|0,m=c[r>>2]|0,(c[l>>2]|0)!=(c[m>>2]|0)?1:(c[l+4>>2]|0)!=(c[m+4>>2]|0)):0){m=c[q>>2]|0;c[t>>2]=am(c[n>>2]|0,c[m>>2]|0,c[m+4>>2]|0,u,s,0)|0;if(!(c[t>>2]|0))c[t>>2]=hm(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[u>>2]|0,c[s>>2]|0,c[q>>2]|0,0)|0;Kd(c[u>>2]|0);c[q>>2]=0;c[u>>2]=0}if(!(c[t>>2]|0)){if(c[q>>2]|0){e=c[q>>2]|0;g=c[e>>2]|0;e=c[e+4>>2]|0}else{e=c[r>>2]|0;g=c[e>>2]|0;e=c[e+4>>2]|0}c[t>>2]=am(c[n>>2]|0,g,e,u,s,0)|0}if(!(c[t>>2]|0))c[t>>2]=hm(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[u>>2]|0,c[s>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;Kd(c[u>>2]|0);u=c[t>>2]|0;i=v;return u|0}function im(b,d,e,f,g,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+64|0;t=z+52|0;u=z+48|0;v=z+44|0;w=z+16|0;o=z+8|0;p=z;q=z+40|0;r=z+36|0;s=z+32|0;y=z+28|0;x=z+24|0;c[u>>2]=b;c[v>>2]=d;b=w;c[b>>2]=e;c[b+4>>2]=f;b=o;c[b>>2]=g;c[b+4>>2]=h;b=p;c[b>>2]=j;c[b+4>>2]=k;c[q>>2]=l;c[r>>2]=m;c[s>>2]=n;c[x>>2]=0;l=w;if((c[l>>2]|0)==0&(c[l+4>>2]|0)==0)c[x>>2]=(c[r>>2]|0)+20;c[y>>2]=Id(96+(c[x>>2]|0)|0)|0;if(!(c[y>>2]|0)){c[t>>2]=7;y=c[t>>2]|0;i=z;return y|0}e=c[y>>2]|0;f=e+96|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[c[y>>2]>>2]=c[u>>2];a[(c[y>>2]|0)+4>>0]=(c[v>>2]|0)!=0;l=w;u=c[l+4>>2]|0;v=(c[y>>2]|0)+8|0;c[v>>2]=c[l>>2];c[v+4>>2]=u;v=c[o+4>>2]|0;u=(c[y>>2]|0)+16|0;c[u>>2]=c[o>>2];c[u+4>>2]=v;u=c[p+4>>2]|0;v=(c[y>>2]|0)+24|0;c[v>>2]=c[p>>2];c[v+4>>2]=u;if(c[x>>2]|0){c[(c[y>>2]|0)+40>>2]=(c[y>>2]|0)+96;a[(c[y>>2]|0)+5>>0]=1;c[(c[y>>2]|0)+44>>2]=c[r>>2];iR(c[(c[y>>2]|0)+40>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;e=(c[(c[y>>2]|0)+40>>2]|0)+(c[r>>2]|0)|0;f=e+20|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0))}else{w=fR(c[w>>2]|0,c[w+4>>2]|0,1,0)|0;x=(c[y>>2]|0)+32|0;c[x>>2]=w;c[x+4>>2]=C}c[c[s>>2]>>2]=c[y>>2];c[t>>2]=0;y=c[t>>2]|0;i=z;return y|0}function jm(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0;A=i;i=i+80|0;u=A+76|0;j=A+72|0;k=A+68|0;D=A+64|0;B=A+60|0;v=A+56|0;w=A+52|0;y=A+48|0;r=A+44|0;s=A+40|0;z=A+36|0;n=A+32|0;m=A+28|0;x=A;l=A+24|0;q=A+20|0;p=A+16|0;o=A+12|0;t=A+8|0;c[j>>2]=a;c[k>>2]=b;c[D>>2]=e;c[B>>2]=f;c[v>>2]=g;c[w>>2]=h;c[y>>2]=0;c[r>>2]=c[D>>2];c[s>>2]=(c[r>>2]|0)+(c[B>>2]|0);c[z>>2]=0;c[n>>2]=0;c[m>>2]=1;a=Ul(c[r>>2]|0,x)|0;c[r>>2]=(c[r>>2]|0)+a;a=Ul(c[r>>2]|0,x)|0;c[r>>2]=(c[r>>2]|0)+a;if((c[r>>2]|0)>>>0>(c[s>>2]|0)>>>0){c[u>>2]=267;D=c[u>>2]|0;i=A;return D|0}while(1){if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0){f=28;break}if(!((c[v>>2]|0)!=0?1:(c[w>>2]|0)!=0)){f=28;break}c[p>>2]=0;if(!(c[m>>2]|0)){f=c[r>>2]|0;if((d[c[r>>2]>>0]|0)&128)f=Vl(f,p)|0;else{c[p>>2]=d[f>>0];f=1}c[r>>2]=(c[r>>2]|0)+f}c[m>>2]=0;f=c[r>>2]|0;if((d[c[r>>2]>>0]|0)&128)f=Vl(f,q)|0;else{c[q>>2]=d[f>>0];f=1}c[r>>2]=(c[r>>2]|0)+f;if((c[p>>2]|0)<0|(c[q>>2]|0)<0){f=15;break}if(((c[r>>2]|0)+(c[q>>2]|0)|0)>>>0>(c[s>>2]|0)>>>0){f=15;break}if(((c[p>>2]|0)+(c[q>>2]|0)|0)>(c[n>>2]|0)){c[n>>2]=(c[p>>2]|0)+(c[q>>2]|0)<<1;c[t>>2]=Ld(c[z>>2]|0,c[n>>2]|0)|0;if(!(c[t>>2]|0)){f=18;break}c[z>>2]=c[t>>2]}iR((c[z>>2]|0)+(c[p>>2]|0)|0,c[r>>2]|0,c[q>>2]|0)|0;c[o>>2]=(c[p>>2]|0)+(c[q>>2]|0);c[r>>2]=(c[r>>2]|0)+(c[q>>2]|0);c[l>>2]=vQ(c[j>>2]|0,c[z>>2]|0,(c[o>>2]|0)>(c[k>>2]|0)?c[k>>2]|0:c[o>>2]|0)|0;do if(c[v>>2]|0){if((c[l>>2]|0)>=0){if(c[l>>2]|0)break;if((c[o>>2]|0)<=(c[k>>2]|0))break}a=x;B=c[a+4>>2]|0;D=c[v>>2]|0;c[D>>2]=c[a>>2];c[D+4>>2]=B;c[v>>2]=0}while(0);if((c[w>>2]|0)!=0&(c[l>>2]|0)<0){a=x;B=c[a+4>>2]|0;D=c[w>>2]|0;c[D>>2]=c[a>>2];c[D+4>>2]=B;c[w>>2]=0}B=x;B=gR(c[B>>2]|0,c[B+4>>2]|0,1,0)|0;D=x;c[D>>2]=B;c[D+4>>2]=C}if((f|0)==15)c[y>>2]=267;else if((f|0)==18)c[y>>2]=7;else if((f|0)==28){if(c[v>>2]|0){t=x;B=c[t+4>>2]|0;D=c[v>>2]|0;c[D>>2]=c[t>>2];c[D+4>>2]=B}if(c[w>>2]|0){B=c[x+4>>2]|0;D=c[w>>2]|0;c[D>>2]=c[x>>2];c[D+4>>2]=B}}Kd(c[z>>2]|0);c[u>>2]=c[y>>2];D=c[u>>2]|0;i=A;return D|0}function km(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+28|0;l=g+24|0;k=g+20|0;j=g+16|0;e=g+12|0;f=g+8|0;h=g+4|0;d=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=c[(c[c[m>>2]>>2]|0)+12>>2];c[j>>2]=c[(c[c[l>>2]>>2]|0)+12>>2];c[e>>2]=c[(c[c[m>>2]>>2]|0)+16>>2];c[f>>2]=c[(c[c[l>>2]>>2]|0)+16>>2];c[h>>2]=(c[e>>2]|0)<(c[f>>2]|0)?c[e>>2]|0:c[f>>2]|0;c[d>>2]=vQ(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;if(c[d>>2]|0){m=c[d>>2]|0;i=g;return m|0}c[d>>2]=(c[e>>2]|0)-(c[f>>2]|0);m=c[d>>2]|0;i=g;return m|0}function lm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;h=p+32|0;e=p+28|0;f=p+24|0;l=p+20|0;o=p+16|0;n=p+12|0;m=p+8|0;j=p+4|0;k=p;c[h>>2]=a;c[e>>2]=b;c[f>>2]=d;c[o>>2]=24274;c[n>>2]=24278;c[m>>2]=24283;c[j>>2]=-1;c[k>>2]=15;d=c[h>>2]|0;if((c[e>>2]|0)>6){je(d,24294,-1);i=p;return}if(pm(d,21347,c[c[f>>2]>>2]|0,l)|0){i=p;return}switch(c[e>>2]|0){case 6:{c[k>>2]=de(c[(c[f>>2]|0)+20>>2]|0)|0;g=6;break}case 5:{g=6;break}case 4:{g=7;break}case 3:{g=8;break}case 2:{g=9;break}default:{}}if((g|0)==6){c[j>>2]=de(c[(c[f>>2]|0)+16>>2]|0)|0;g=7}if((g|0)==7){c[m>>2]=ae(c[(c[f>>2]|0)+12>>2]|0)|0;g=8}if((g|0)==8){c[n>>2]=ae(c[(c[f>>2]|0)+8>>2]|0)|0;g=9}if((g|0)==9)c[o>>2]=ae(c[(c[f>>2]|0)+4>>2]|0)|0;if(!((c[m>>2]|0)!=0&(c[n>>2]|0)!=0&(c[o>>2]|0)!=0)){te(c[h>>2]|0);i=p;return}d=c[h>>2]|0;if(!(c[k>>2]|0)){ne(d,19266,-1,0);i=p;return}if(nn(d,c[l>>2]|0)|0){i=p;return}Sn(c[h>>2]|0,c[l>>2]|0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0,c[j>>2]|0,c[k>>2]|0);i=p;return}function mm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+12|0;h=g+4|0;f=g;c[e>>2]=a;c[g+8>>2]=b;c[h>>2]=d;if(pm(c[e>>2]|0,21355,c[c[h>>2]>>2]|0,f)|0){i=g;return}if(nn(c[e>>2]|0,c[f>>2]|0)|0){i=g;return}On(c[e>>2]|0,c[f>>2]|0);i=g;return}function nm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+20|0;k=j+12|0;h=j+8|0;f=j+4|0;g=j;c[e>>2]=a;c[j+16>>2]=b;c[k>>2]=d;if(pm(c[e>>2]|0,21373,c[c[k>>2]>>2]|0,g)|0){i=j;return}c[f>>2]=c[c[g>>2]>>2];c[h>>2]=Mn(c[f>>2]|0)|0;switch(c[h>>2]|0){case 0:{ne(c[e>>2]|0,24178,-1,0);i=j;return}case 101:{ne(c[e>>2]|0,24194,-1,0);i=j;return}default:{re(c[e>>2]|0,c[h>>2]|0);i=j;return}}}function om(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(pm(c[e>>2]|0,21363,c[c[g>>2]>>2]|0,h)|0){i=k;return}c[j>>2]=0;if((c[f>>2]|0)>1)c[j>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;qm(c[e>>2]|0,c[h>>2]|0,c[j>>2]|0);i=k;return}function pm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;n=p;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;o=p+4|0;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;if((fe(c[k>>2]|0)|0)==4?(be(c[k>>2]|0)|0)==4:0){d=$d(c[k>>2]|0)|0;a[m>>0]=a[d>>0]|0;a[m+1>>0]=a[d+1>>0]|0;a[m+2>>0]=a[d+2>>0]|0;a[m+3>>0]=a[d+3>>0]|0;c[c[l>>2]>>2]=c[m>>2];c[g>>2]=0;d=c[g>>2]|0;i=p;return d|0}c[n>>2]=c[j>>2];c[o>>2]=Od(24149,n)|0;je(c[h>>2]|0,c[o>>2]|0,-1);Kd(c[o>>2]|0);c[g>>2]=1;d=c[g>>2]|0;i=p;return d|0}function qm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;g=k+12|0;f=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[g>>2]=b;c[f>>2]=d;c[h>>2]=c[c[g>>2]>>2];if(c[f>>2]|0)c[j>>2]=c[f>>2];else c[j>>2]=24084;e=c[e>>2]|0;if(c[(c[g>>2]|0)+12>>2]|0){rm(e,c[g>>2]|0,c[j>>2]|0);sm(c[h>>2]|0);i=k;return}else{ge(e,19266,0,0);i=k;return}}function rm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+80|0;f=u+76|0;g=u+72|0;h=u+68|0;q=u;o=u+64|0;p=u+60|0;k=u+56|0;j=u+52|0;r=u+48|0;n=u+44|0;l=u+40|0;s=u+36|0;m=u+32|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[o>>2]=c[c[g>>2]>>2];c[p>>2]=0;c[k>>2]=0;c[j>>2]=0;c[r>>2]=0;c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[q+24>>2]=0;c[q+28>>2]=0;c[q>>2]=c[g>>2];c[q+4>>2]=c[(c[o>>2]|0)+24>>2];if((c[(c[g>>2]|0)+92>>2]|0)!=0?(yQ(c[(c[(c[g>>2]|0)+92>>2]|0)+12>>2]|0,c[h>>2]|0)|0)!=0:0){tm(c[(c[g>>2]|0)+92>>2]|0);c[(c[g>>2]|0)+92>>2]=0}if(!(c[(c[g>>2]|0)+92>>2]|0)){c[n>>2]=0;e=um(c[(c[g>>2]|0)+12>>2]|0)|0;c[(c[g>>2]|0)+20>>2]=e;c[q+8>>2]=c[(c[g>>2]|0)+20>>2];c[l>>2]=0;while(1){if(!(a[(c[h>>2]|0)+(c[l>>2]|0)>>0]|0))break;c[s>>2]=0;if(vm(c[o>>2]|0,a[(c[h>>2]|0)+(c[l>>2]|0)>>0]|0,s)|0){t=8;break}e=wm(q,a[(c[h>>2]|0)+(c[l>>2]|0)>>0]|0)|0;c[n>>2]=(c[n>>2]|0)+e;c[l>>2]=(c[l>>2]|0)+1}if((t|0)==8){je(c[f>>2]|0,c[s>>2]|0,-1);Kd(c[s>>2]|0);i=u;return}t=xm(c[n>>2]|0,c[h>>2]|0)|0;c[(c[g>>2]|0)+92>>2]=t;if(!(c[(c[g>>2]|0)+92>>2]|0))c[p>>2]=7;c[(c[g>>2]|0)+88>>2]=1;c[k>>2]=1}if((c[p>>2]|0)==0?(c[r>>2]=ym(c[(c[g>>2]|0)+92>>2]|0,j)|0,(c[r>>2]|0)==0):0)c[p>>2]=7;if((c[p>>2]|0)==0?(c[q+28>>2]=c[j>>2],c[q+8>>2]=c[(c[g>>2]|0)+20>>2],c[p>>2]=zm(c[g>>2]|0,c[k>>2]|0,q,c[h>>2]|0)|0,(c[k>>2]|0)!=0):0)Am(c[(c[g>>2]|0)+92>>2]|0);if(!(c[p>>2]|0)){c[m>>2]=c[(c[(c[g>>2]|0)+92>>2]|0)+4>>2]<<2;ge(c[f>>2]|0,c[j>>2]|0,c[m>>2]|0,c[r>>2]|0);i=u;return}re(c[f>>2]|0,c[p>>2]|0);if(!(c[r>>2]|0)){i=u;return}Qb[c[r>>2]&255](c[j>>2]|0);i=u;return}function sm(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Ve(c[(c[d>>2]|0)+244>>2]|0)|0;c[(c[d>>2]|0)+244>>2]=0;i=b;return}function tm(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;if(!(c[e>>2]|0)){i=f;return}a[c[e>>2]>>0]=0;if(d[c[e>>2]>>0]|0){i=f;return}if(d[(c[e>>2]|0)+1>>0]|0){i=f;return}if(d[(c[e>>2]|0)+2>>0]|0){i=f;return}Kd(c[e>>2]|0);i=f;return}function um(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=0;Hm(c[e>>2]|0,153,b)|0;i=d;return c[b>>2]|0}function vm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m;g=m+12|0;h=m+8|0;j=m+16|0;k=m+4|0;c[h>>2]=b;a[j>>0]=e;c[k>>2]=f;do if((a[j>>0]|0)!=112?(a[j>>0]|0)!=99:0){if((a[j>>0]|0)==110?(d[(c[h>>2]|0)+228>>0]|0)!=0:0)break;if((a[j>>0]|0)==97?(d[(c[h>>2]|0)+228>>0]|0)!=0:0)break;if((a[j>>0]|0)==108?(d[(c[h>>2]|0)+230>>0]|0)!=0:0)break;if((((a[j>>0]|0)!=115?(a[j>>0]|0)!=120:0)?(a[j>>0]|0)!=121:0)?(a[j>>0]|0)!=98:0){f=c[k>>2]|0;c[l>>2]=a[j>>0];zk(f,24114,l);c[g>>2]=1;l=c[g>>2]|0;i=m;return l|0}}while(0);c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}function wm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+4|0;h=g+8|0;f=g;c[e>>2]=b;a[h>>0]=d;switch(a[h>>0]|0){case 99:case 112:case 110:{c[f>>2]=1;break}case 115:case 108:case 97:{c[f>>2]=c[(c[e>>2]|0)+4>>2];break}case 121:{c[f>>2]=_(c[(c[e>>2]|0)+4>>2]|0,c[(c[e>>2]|0)+8>>2]|0)|0;break}case 98:{c[f>>2]=_(c[(c[e>>2]|0)+8>>2]|0,((c[(c[e>>2]|0)+4>>2]|0)+31|0)/32|0)|0;break}default:c[f>>2]=(_(c[(c[e>>2]|0)+4>>2]|0,c[(c[e>>2]|0)+8>>2]|0)|0)*3}i=g;return c[f>>2]|0}function xm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;j=k+8|0;g=k+4|0;h=k;c[e>>2]=b;c[f>>2]=d;c[g>>2]=((c[e>>2]<<1)+1<<2)+20;c[h>>2]=BQ(c[f>>2]|0)|0;c[j>>2]=Id((c[g>>2]|0)+(c[h>>2]|0)+1|0)|0;if(!(c[j>>2]|0)){d=c[j>>2]|0;i=k;return d|0}kR(c[j>>2]|0,0,c[g>>2]|0)|0;c[(c[j>>2]|0)+16>>2]=(c[j>>2]|0)+16+4-(c[j>>2]|0);c[(c[j>>2]|0)+16+(1+(c[e>>2]|0)<<2)>>2]=(c[(c[j>>2]|0)+16>>2]|0)+((c[e>>2]|0)+1<<2);c[(c[j>>2]|0)+4>>2]=c[e>>2];c[(c[j>>2]|0)+12>>2]=(c[j>>2]|0)+(c[g>>2]|0);iR(c[(c[j>>2]|0)+12>>2]|0,c[f>>2]|0,(c[h>>2]|0)+1|0)|0;a[c[j>>2]>>0]=1;d=c[j>>2]|0;i=k;return d|0}function ym(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[g>>2]=e;c[j>>2]=0;c[h>>2]=0;e=c[f>>2]|0;do if(d[(c[f>>2]|0)+1>>0]|0){b=c[f>>2]|0;if(!(d[e+2>>0]|0)){a[b+2>>0]=1;c[h>>2]=(c[f>>2]|0)+16+((c[(c[f>>2]|0)+4>>2]|0)+2<<2);c[j>>2]=152;break}c[h>>2]=Id(c[b+4>>2]<<2)|0;if((c[h>>2]|0)!=0?(c[j>>2]=148,(c[(c[f>>2]|0)+8>>2]|0)!=0):0)iR(c[h>>2]|0,(c[f>>2]|0)+16+4|0,c[(c[f>>2]|0)+4>>2]<<2|0)|0}else{a[e+1>>0]=1;c[h>>2]=(c[f>>2]|0)+16+4;c[j>>2]=152}while(0);c[c[g>>2]>>2]=c[h>>2];i=k;return c[j>>2]|0}function zm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+96|0;g=B+92|0;h=B+88|0;j=B+84|0;k=B+80|0;A=B+76|0;n=B+72|0;y=B+68|0;z=B+64|0;r=B+24|0;s=B+16|0;l=B+60|0;o=B+56|0;q=B+52|0;t=B+8|0;x=B+48|0;p=B+44|0;m=B+40|0;u=B;v=B+36|0;w=B+32|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[A>>2]=0;c[y>>2]=c[c[g>>2]>>2];c[z>>2]=0;c[n>>2]=0;while(1){if(c[A>>2]|0){g=31;break}if(!(a[(c[k>>2]|0)+(c[n>>2]|0)>>0]|0)){g=31;break}a[(c[j>>2]|0)+24>>0]=a[(c[k>>2]|0)+(c[n>>2]|0)>>0]|0;a:do switch(a[(c[k>>2]|0)+(c[n>>2]|0)>>0]|0){case 112:{if(c[h>>2]|0)c[c[(c[j>>2]|0)+28>>2]>>2]=c[(c[j>>2]|0)+8>>2];break}case 99:{if(c[h>>2]|0)c[c[(c[j>>2]|0)+28>>2]>>2]=c[(c[j>>2]|0)+4>>2];break}case 110:{if(c[h>>2]|0){f=r;c[f>>2]=0;c[f+4>>2]=0;c[A>>2]=Bm(c[y>>2]|0,z,r,0)|0;c[c[(c[j>>2]|0)+28>>2]>>2]=c[r>>2]}break}case 97:{if((c[h>>2]|0)!=0?(c[A>>2]=Bm(c[y>>2]|0,z,s,l)|0,(c[A>>2]|0)==0):0){c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[(c[j>>2]|0)+4>>2]|0))break a;f=Ul(c[l>>2]|0,t)|0;c[l>>2]=(c[l>>2]|0)+f;f=c[t>>2]|0;e=s;e=pR(c[e>>2]|0,c[e+4>>2]|0,2,0)|0;e=gR(f|0,0,e|0,C|0)|0;f=s;f=pR(e|0,C|0,c[f>>2]|0,c[f+4>>2]|0)|0;c[q>>2]=f;c[(c[(c[j>>2]|0)+28>>2]|0)+(c[o>>2]<<2)>>2]=c[q>>2];c[o>>2]=(c[o>>2]|0)+1}}break}case 108:{c[x>>2]=0;f=(c[g>>2]|0)+32|0;c[A>>2]=Cm(c[y>>2]|0,c[f>>2]|0,c[f+4>>2]|0,x)|0;b:do if(!(c[A>>2]|0)){c[m>>2]=Ae(c[x>>2]|0,0)|0;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[(c[j>>2]|0)+4>>2]|0))break b;f=Ul(c[m>>2]|0,u)|0;c[m>>2]=(c[m>>2]|0)+f;c[(c[(c[j>>2]|0)+28>>2]|0)+(c[p>>2]<<2)>>2]=c[u>>2];c[p>>2]=(c[p>>2]|0)+1}}while(0);Zd(c[x>>2]|0)|0;break}case 115:{c[A>>2]=Dm(c[g>>2]|0,0,0)|0;if(!(c[A>>2]|0))c[A>>2]=Em(c[g>>2]|0,c[j>>2]|0)|0;break}case 121:case 98:{c[v>>2]=(wm(c[j>>2]|0,a[(c[k>>2]|0)+(c[n>>2]|0)>>0]|0)|0)<<2;kR(c[(c[j>>2]|0)+28>>2]|0,0,c[v>>2]|0)|0;Fm(c[(c[g>>2]|0)+12>>2]|0,c[j>>2]|0);break}default:{c[w>>2]=c[(c[g>>2]|0)+12>>2];c[A>>2]=Dm(c[g>>2]|0,0,0)|0;if(!(c[A>>2]|0)){if(c[h>>2]|0){if((c[(c[g>>2]|0)+24>>2]|0)!=0?(c[A>>2]=Bm(c[y>>2]|0,z,(c[j>>2]|0)+16|0,0)|0,(c[A>>2]|0)!=0):0)break a;c[A>>2]=Hm(c[w>>2]|0,154,c[j>>2]|0)|0;Im(c[g>>2]|0,A)|0;if(c[A>>2]|0)break a}Hm(c[w>>2]|0,155,c[j>>2]|0)|0}}}while(0);e=wm(c[j>>2]|0,a[(c[k>>2]|0)+(c[n>>2]|0)>>0]|0)|0;f=(c[j>>2]|0)+28|0;c[f>>2]=(c[f>>2]|0)+(e<<2);c[n>>2]=(c[n>>2]|0)+1}if((g|0)==31){Zd(c[z>>2]|0)|0;i=B;return c[A>>2]|0}return 0}function Am(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+8>>2]=1;iR((c[d>>2]|0)+16+(2+(c[(c[d>>2]|0)+4>>2]|0)<<2)|0,(c[d>>2]|0)+16+4|0,c[(c[d>>2]|0)+4>>2]<<2|0)|0;i=b;return}function Bm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;f=p+36|0;g=p+32|0;h=p+28|0;j=p+24|0;k=p+20|0;n=p+16|0;l=p+12|0;m=p;o=p+8|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;if((c[c[h>>2]>>2]|0)==0?(c[o>>2]=Jn(c[g>>2]|0,c[h>>2]|0)|0,(c[o>>2]|0)!=0):0){c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}c[n>>2]=c[c[h>>2]>>2];c[l>>2]=Ae(c[n>>2]|0,0)|0;o=Ul(c[l>>2]|0,m)|0;c[l>>2]=(c[l>>2]|0)+o;o=m;if((c[o>>2]|0)==0&(c[o+4>>2]|0)==0){c[f>>2]=267;o=c[f>>2]|0;i=p;return o|0}o=c[j>>2]|0;c[o>>2]=c[m>>2];c[o+4>>2]=0;if(c[k>>2]|0)c[c[k>>2]>>2]=c[l>>2];c[f>>2]=0;o=c[f>>2]|0;i=p;return o|0}function Cm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;h=f+12|0;j=f;g=f+8|0;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=e;e=j;e=In(c[h>>2]|0,c[e>>2]|0,c[e+4>>2]|0,c[g>>2]|0)|0;i=f;return e|0}function Dm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+24|0;e=j+20|0;f=j+16|0;g=j+12|0;h=j;c[k>>2]=a;c[e>>2]=b;c[f>>2]=d;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h>>2]=c[k>>2];c[g>>2]=Hm(c[(c[k>>2]|0)+12>>2]|0,156,h)|0;if(c[e>>2]|0)c[c[e>>2]>>2]=c[h+4>>2];if(!(c[f>>2]|0)){k=c[g>>2]|0;i=j;return k|0}c[c[f>>2]>>2]=c[h+8>>2];k=c[g>>2]|0;i=j;return k|0}function Em(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;q=t+56|0;d=t+52|0;e=t+48|0;r=t+44|0;f=t+40|0;g=t+36|0;l=t+32|0;o=t+28|0;h=t+24|0;j=t+20|0;s=t+16|0;n=t+12|0;m=t+8|0;k=t+4|0;p=t;c[d>>2]=a;c[e>>2]=b;c[l>>2]=0;c[r>>2]=Id(c[(c[d>>2]|0)+20>>2]<<4)|0;if(!(c[r>>2]|0)){c[q>>2]=7;s=c[q>>2]|0;i=t;return s|0}kR(c[r>>2]|0,0,c[(c[d>>2]|0)+20>>2]<<4|0)|0;Hm(c[(c[d>>2]|0)+12>>2]|0,157,c[r>>2]|0)|0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+8>>2]|0))break;c[o>>2]=(c[r>>2]|0)+(c[f>>2]<<4);c[l>>2]=(c[l>>2]|0)-(c[(c[(c[c[o>>2]>>2]|0)+20>>2]|0)+64>>2]|0);c[(c[o>>2]|0)+4>>2]=c[l>>2];c[f>>2]=(c[f>>2]|0)+1}c[g>>2]=0;a:while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+4>>2]|0)){d=33;break}c[h>>2]=0;c[j>>2]=0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+8>>2]|0))break;c[n>>2]=(c[r>>2]|0)+(c[f>>2]<<4);c[s>>2]=Km(c[d>>2]|0,c[c[n>>2]>>2]|0,c[g>>2]|0,(c[n>>2]|0)+8|0)|0;if(c[s>>2]|0){d=11;break a}if(c[(c[n>>2]|0)+8>>2]|0){c[(c[n>>2]|0)+12>>2]=c[(c[n>>2]|0)+4>>2];Gn((c[r>>2]|0)+(c[f>>2]<<4)|0)|0;c[j>>2]=(c[j>>2]|0)+1}c[f>>2]=(c[f>>2]|0)+1}while(1){if((c[j>>2]|0)<=0)break;c[m>>2]=0;c[k>>2]=0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+8>>2]|0))break;c[p>>2]=(c[r>>2]|0)+(c[f>>2]<<4);if(c[(c[p>>2]|0)+8>>2]|0){if(!((c[m>>2]|0)!=0?(c[(c[p>>2]|0)+12>>2]|0)>=(c[(c[m>>2]|0)+12>>2]|0):0))c[m>>2]=c[p>>2];if((c[k>>2]|0)!=0?(c[(c[p>>2]|0)+12>>2]|0)!=(c[(c[p>>2]|0)+-16+12>>2]|0):0)c[k>>2]=1;else c[k>>2]=(c[k>>2]|0)+1;if((c[k>>2]|0)>(c[h>>2]|0))c[h>>2]=c[k>>2]}else c[k>>2]=0;c[f>>2]=(c[f>>2]|0)+1}if(!(Gn(c[m>>2]|0)|0))continue;c[j>>2]=(c[j>>2]|0)+-1}c[(c[(c[e>>2]|0)+28>>2]|0)+(c[g>>2]<<2)>>2]=c[h>>2];c[g>>2]=(c[g>>2]|0)+1}if((d|0)==11){c[q>>2]=c[s>>2];s=c[q>>2]|0;i=t;return s|0}else if((d|0)==33){Kd(c[r>>2]|0);c[q>>2]=0;s=c[q>>2]|0;i=t;return s|0}return 0}function Fm(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=b;if(d[(c[e>>2]|0)+32>>0]|0){i=g;return}b=(c[e>>2]|0)+24|0;a=(c[c[f>>2]>>2]|0)+32|0;if(!((c[b>>2]|0)==(c[a>>2]|0)?(c[b+4>>2]|0)==(c[a+4>>2]|0):0)){i=g;return}b=c[e>>2]|0;if(c[(c[e>>2]|0)+12>>2]|0){Fm(c[b+12>>2]|0,c[f>>2]|0);Fm(c[(c[e>>2]|0)+16>>2]|0,c[f>>2]|0);i=g;return}else{En(b,c[f>>2]|0);i=g;return}}function Gm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;g=e+12|0;h=e+8|0;j=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[f>>2]=c[j>>2];a=_((c[h>>2]|0)*3|0,c[(c[f>>2]|0)+4>>2]|0)|0;a=Bn(c[c[f>>2]>>2]|0,c[g>>2]|0,(c[(c[f>>2]|0)+28>>2]|0)+(a<<2)|0)|0;i=e;return a|0}function Hm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;g=e+8|0;f=e+4|0;h=e;c[j>>2]=a;c[g>>2]=b;c[f>>2]=d;c[h>>2]=0;b=An(c[j>>2]|0,h,c[g>>2]|0,c[f>>2]|0)|0;i=e;return b|0}function Im(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;c[g>>2]=c[c[e>>2]>>2];c[f>>2]=0;if(c[g>>2]|0){b=c[g>>2]|0;b=(b|0)==0;g=c[f>>2]|0;g=(g|0)!=0;g=b?g:0;g=g&1;i=h;return g|0}if((c[(c[d>>2]|0)+24>>2]|0)!=0?(c[g>>2]=nn(0,c[d>>2]|0)|0,(c[g>>2]|0)==0):0)c[g>>2]=on(c[d>>2]|0)|0;c[f>>2]=0==(pn(c[d>>2]|0,c[(c[d>>2]|0)+12>>2]|0,g)|0)&1;qn(c[d>>2]|0);c[c[e>>2]>>2]=c[g>>2];b=c[g>>2]|0;b=(b|0)==0;g=c[f>>2]|0;g=(g|0)!=0;g=b?g:0;g=g&1;i=h;return g|0}function Jm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;e=l+28|0;m=l+24|0;n=l+20|0;k=l+16|0;h=l+12|0;g=l+8|0;f=l+4|0;j=l;c[e>>2]=a;c[m>>2]=b;c[n>>2]=d;c[k>>2]=0;c[h>>2]=c[n>>2];c[g>>2]=(_(c[m>>2]|0,c[(c[h>>2]|0)+4>>2]|0)|0)*3;c[f>>2]=0;while(1){if(!((c[f>>2]|0)<(c[(c[h>>2]|0)+4>>2]|0)?(c[k>>2]|0)==0:0))break;c[k>>2]=Km(c[c[h>>2]>>2]|0,c[e>>2]|0,c[f>>2]|0,j)|0;if(c[j>>2]|0){n=Lm(j)|0;c[(c[(c[h>>2]|0)+28>>2]|0)+((c[g>>2]|0)+((c[f>>2]|0)*3|0)<<2)>>2]=n}else c[(c[(c[h>>2]|0)+28>>2]|0)+((c[g>>2]|0)+((c[f>>2]|0)*3|0)<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+1}i=l;return c[k>>2]|0}function Fp(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;ha=i;i=i+288|0;V=ha+40|0;U=ha+32|0;T=ha+24|0;q=ha+16|0;r=ha+8|0;p=ha;v=ha+280|0;w=ha+276|0;ia=ha+272|0;k=ha+268|0;x=ha+264|0;da=ha+260|0;y=ha+256|0;S=ha+252|0;ea=ha+248|0;ga=ha+244|0;E=ha+240|0;L=ha+236|0;F=ha+232|0;R=ha+228|0;M=ha+224|0;Z=ha+220|0;N=ha+216|0;P=ha+212|0;G=ha+208|0;z=ha+204|0;fa=ha+200|0;O=ha+196|0;A=ha+192|0;D=ha+188|0;C=ha+184|0;ba=ha+180|0;X=ha+176|0;ca=ha+172|0;Y=ha+168|0;_=ha+164|0;B=ha+160|0;Q=ha+156|0;s=ha+152|0;n=ha+148|0;t=ha+144|0;l=ha+80|0;m=ha+76|0;o=ha+72|0;H=ha+68|0;I=ha+64|0;W=ha+60|0;J=ha+56|0;K=ha+52|0;aa=ha+48|0;$=ha+44|0;c[v>>2]=b;c[w>>2]=d;c[ia>>2]=e;c[k>>2]=f;c[x>>2]=g;c[da>>2]=h;c[y>>2]=j;c[S>>2]=c[ia>>2];c[ea>>2]=0;c[ga>>2]=0;c[R>>2]=0;c[M>>2]=0;c[G>>2]=(a[(c[c[x>>2]>>2]|0)+3>>0]|0)==52&1;c[fa>>2]=0;c[O>>2]=0;c[A>>2]=0;c[D>>2]=0;c[C>>2]=0;c[ba>>2]=0;c[X>>2]=0;c[ca>>2]=0;c[Y>>2]=0;c[_>>2]=0;c[B>>2]=0;c[Q>>2]=0;c[N>>2]=(BQ(c[(c[x>>2]|0)+4>>2]|0)|0)+1;c[P>>2]=(BQ(c[(c[x>>2]|0)+8>>2]|0)|0)+1;c[L>>2]=(c[k>>2]|0)-2<<2;c[z>>2]=Id(c[L>>2]|0)|0;if(c[z>>2]|0){kR(c[z>>2]|0,0,c[L>>2]|0)|0;c[B>>2]=Id(c[L>>2]|0)|0}if(c[B>>2]|0)kR(c[B>>2]|0,0,c[L>>2]|0)|0;do if((c[z>>2]|0)!=0&(c[B>>2]|0)!=0){c[E>>2]=3;while(1){if(c[ga>>2]|0)break;if((c[E>>2]|0)>=(c[k>>2]|0))break;c[s>>2]=c[(c[x>>2]|0)+(c[E>>2]<<2)>>2];if((((c[fa>>2]|0)==0?(BQ(c[s>>2]|0)|0)>>>0>8:0)?0==(zd(c[s>>2]|0,24853,8)|0):0)?0==(Gp(a[(c[s>>2]|0)+8>>0]|0)|0):0)c[ga>>2]=Hp(c[S>>2]|0,(c[s>>2]|0)+9|0,fa,c[y>>2]|0)|0;else u=15;do if((u|0)==15){u=0;if((c[G>>2]|0)!=0?(Ip(c[s>>2]|0,n,t)|0)!=0:0){f=l;g=2100;d=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(d|0));if(!(c[t>>2]|0)){c[ga>>2]=7;break}c[m>>2]=0;while(1){if((c[m>>2]|0)>=8)break;c[o>>2]=l+(c[m>>2]<<3);if((c[n>>2]|0)==(c[(c[o>>2]|0)+4>>2]|0)?(zd(c[s>>2]|0,c[c[o>>2]>>2]|0,c[(c[o>>2]|0)+4>>2]|0)|0)==0:0)break;c[m>>2]=(c[m>>2]|0)+1}a:do if((c[m>>2]|0)==8){ia=c[y>>2]|0;c[p>>2]=c[s>>2];zk(ia,24862,p);c[ga>>2]=1}else switch(c[m>>2]|0){case 0:{if(!((BQ(c[t>>2]|0)|0)==4?(zd(c[t>>2]|0,21382,4)|0)==0:0)){ia=c[y>>2]|0;c[r>>2]=c[t>>2];zk(ia,24889,r);c[ga>>2]=1}c[D>>2]=1;break a}case 1:{Kd(c[ba>>2]|0);c[ba>>2]=c[t>>2];c[t>>2]=0;break a}case 2:{Kd(c[X>>2]|0);c[X>>2]=c[t>>2];c[t>>2]=0;break a}case 3:{Kd(c[ca>>2]|0);c[ca>>2]=c[t>>2];c[t>>2]=0;break a}case 4:{if(!((BQ(c[t>>2]|0)|0)==3?(zd(c[t>>2]|0,24916,3)|0)==0:0))u=36;do if((u|0)==36){u=0;if((BQ(c[t>>2]|0)|0)==4?(zd(c[t>>2]|0,24920,4)|0)==0:0)break;ia=c[y>>2]|0;c[q>>2]=c[t>>2];zk(ia,24925,q);c[ga>>2]=1}while(0);if((a[c[t>>2]>>0]|0)==100)f=1;else f=(a[c[t>>2]>>0]|0)==68;c[C>>2]=f&1;break a}case 5:{Kd(c[Y>>2]|0);c[Y>>2]=c[t>>2];c[t>>2]=0;break a}case 6:{Kd(c[_>>2]|0);c[_>>2]=c[t>>2];c[t>>2]=0;break a}case 7:{j=c[t>>2]|0;ia=c[Q>>2]|0;c[Q>>2]=ia+1;c[(c[B>>2]|0)+(ia<<2)>>2]=j;c[t>>2]=0;break a}default:break a}while(0);Kd(c[t>>2]|0);break}j=(BQ(c[s>>2]|0)|0)+1|0;c[R>>2]=(c[R>>2]|0)+j;j=c[s>>2]|0;ia=c[M>>2]|0;c[M>>2]=ia+1;c[(c[z>>2]|0)+(ia<<2)>>2]=j}while(0);c[E>>2]=(c[E>>2]|0)+1}b:do if(((c[ga>>2]|0)==0&(c[Y>>2]|0)!=0?(Kd(c[X>>2]|0),Kd(c[ca>>2]|0),c[X>>2]=0,c[ca>>2]=0,(c[M>>2]|0)==0):0)?(Kd(c[z>>2]|0),c[z>>2]=0,c[ga>>2]=Jp(c[w>>2]|0,c[(c[x>>2]|0)+4>>2]|0,c[Y>>2]|0,z,M,R,c[y>>2]|0)|0,(c[ga>>2]|0)==0&(c[_>>2]|0)!=0):0){c[H>>2]=0;while(1){if((c[H>>2]|0)>=(c[M>>2]|0))break b;ia=(Td(c[_>>2]|0,c[(c[z>>2]|0)+(c[H>>2]<<2)>>2]|0)|0)==0;f=c[H>>2]|0;if(ia)break;c[H>>2]=f+1}c[I>>2]=f;while(1){if((c[I>>2]|0)>=(c[M>>2]|0))break;c[(c[z>>2]|0)+(c[I>>2]<<2)>>2]=c[(c[z>>2]|0)+((c[I>>2]|0)+1<<2)>>2];c[I>>2]=(c[I>>2]|0)+1}c[M>>2]=(c[M>>2]|0)+-1}while(0);if(!(c[ga>>2]|0)){if(!(c[M>>2]|0)){c[c[z>>2]>>2]=24948;c[R>>2]=8;c[M>>2]=1}if((c[fa>>2]|0)==0?(c[ga>>2]=Hp(c[S>>2]|0,21308,fa,c[y>>2]|0)|0,(c[ga>>2]|0)!=0):0)break;c[ga>>2]=Kp(c[ba>>2]|0,O,A)|0;if((c[ga>>2]|0)==1){ia=c[y>>2]|0;c[T>>2]=c[ba>>2];zk(ia,24956,T)}if(!(c[ga>>2]|0)){c[L>>2]=280+(c[M>>2]<<2)+((c[O>>2]|0)*24|0)+(c[M>>2]|0)+(c[P>>2]|0)+(c[N>>2]|0)+(c[R>>2]|0);c[ea>>2]=Id(c[L>>2]|0)|0; -if(!(c[ea>>2]|0)){c[ga>>2]=7;break}kR(c[ea>>2]|0,0,c[L>>2]|0)|0;c[(c[ea>>2]|0)+12>>2]=c[w>>2];c[(c[ea>>2]|0)+24>>2]=c[M>>2];c[(c[ea>>2]|0)+260>>2]=0;c[(c[ea>>2]|0)+28>>2]=(c[ea>>2]|0)+280;c[(c[ea>>2]|0)+36>>2]=c[fa>>2];c[(c[ea>>2]|0)+256>>2]=1048576;a[(c[ea>>2]|0)+230>>0]=((c[G>>2]|0)!=0?(c[D>>2]|0)==0:0)&1;a[(c[ea>>2]|0)+229>>0]=c[G>>2];a[(c[ea>>2]|0)+228>>0]=c[G>>2];a[(c[ea>>2]|0)+231>>0]=c[C>>2];c[(c[ea>>2]|0)+48>>2]=255;c[(c[ea>>2]|0)+40>>2]=c[Y>>2];c[(c[ea>>2]|0)+44>>2]=c[_>>2];c[Y>>2]=0;c[_>>2]=0;c[(c[ea>>2]|0)+252>>2]=(c[(c[ea>>2]|0)+28>>2]|0)+(c[M>>2]<<2);iR(c[(c[ea>>2]|0)+252>>2]|0,c[A>>2]|0,(c[O>>2]|0)*24|0)|0;c[(c[ea>>2]|0)+248>>2]=c[O>>2];c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[O>>2]|0))break;ek((c[(c[ea>>2]|0)+252>>2]|0)+((c[E>>2]|0)*24|0)+4|0,1,1);c[E>>2]=(c[E>>2]|0)+1}c[(c[ea>>2]|0)+32>>2]=(c[(c[ea>>2]|0)+252>>2]|0)+((c[O>>2]|0)*24|0);c[Z>>2]=(c[(c[ea>>2]|0)+32>>2]|0)+(c[M>>2]|0);c[(c[ea>>2]|0)+20>>2]=c[Z>>2];iR(c[Z>>2]|0,c[(c[x>>2]|0)+8>>2]|0,c[P>>2]|0)|0;c[Z>>2]=(c[Z>>2]|0)+(c[P>>2]|0);c[(c[ea>>2]|0)+16>>2]=c[Z>>2];iR(c[Z>>2]|0,c[(c[x>>2]|0)+4>>2]|0,c[N>>2]|0)|0;c[Z>>2]=(c[Z>>2]|0)+(c[N>>2]|0);c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[M>>2]|0))break;c[J>>2]=0;c[W>>2]=Lp(c[(c[z>>2]|0)+(c[F>>2]<<2)>>2]|0,J)|0;iR(c[Z>>2]|0,c[W>>2]|0,c[J>>2]|0)|0;a[(c[Z>>2]|0)+(c[J>>2]|0)>>0]=0;Ik(c[Z>>2]|0);c[(c[(c[ea>>2]|0)+28>>2]|0)+(c[F>>2]<<2)>>2]=c[Z>>2];c[Z>>2]=(c[Z>>2]|0)+((c[J>>2]|0)+1);c[F>>2]=(c[F>>2]|0)+1}c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[M>>2]|0))break;c[K>>2]=BQ(c[(c[(c[ea>>2]|0)+28>>2]|0)+(c[F>>2]<<2)>>2]|0)|0;c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[Q>>2]|0))break;c[aa>>2]=c[(c[B>>2]|0)+(c[E>>2]<<2)>>2];if(((c[aa>>2]|0)!=0?(ia=c[K>>2]|0,(ia|0)==(BQ(c[aa>>2]|0)|0)):0)?0==(zd(c[(c[(c[ea>>2]|0)+28>>2]|0)+(c[F>>2]<<2)>>2]|0,c[aa>>2]|0,c[K>>2]|0)|0):0){a[(c[(c[ea>>2]|0)+32>>2]|0)+(c[F>>2]|0)>>0]=1;Kd(c[aa>>2]|0);c[(c[B>>2]|0)+(c[E>>2]<<2)>>2]=0}c[E>>2]=(c[E>>2]|0)+1}c[F>>2]=(c[F>>2]|0)+1}c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[Q>>2]|0))break;if(c[(c[B>>2]|0)+(c[E>>2]<<2)>>2]|0){ia=c[y>>2]|0;c[U>>2]=c[(c[B>>2]|0)+(c[E>>2]<<2)>>2];zk(ia,24991,U);c[ga>>2]=1}c[E>>2]=(c[E>>2]|0)+1}if((c[ga>>2]|0)==0?((c[X>>2]|0)==0|0)!=((c[ca>>2]|0)==0|0):0){c[$>>2]=(c[X>>2]|0)==0?25010:25019;c[ga>>2]=1;ia=c[y>>2]|0;c[V>>2]=c[$>>2];zk(ia,25030,V)}ia=Mp(c[ea>>2]|0,c[ca>>2]|0,ga)|0;c[(c[ea>>2]|0)+216>>2]=ia;ia=Np(c[ea>>2]|0,c[X>>2]|0,ga)|0;c[(c[ea>>2]|0)+220>>2]=ia;if(!(c[ga>>2]|0)){if(c[v>>2]|0)c[ga>>2]=Op(c[ea>>2]|0)|0;if(!((c[G>>2]|0)!=0|(c[v>>2]|0)!=0))a[(c[ea>>2]|0)+229>>0]=2;Pp(ga,c[ea>>2]|0);c[(c[ea>>2]|0)+224>>2]=(c[(c[ea>>2]|0)+236>>2]|0)-35;Qp(ga,c[ea>>2]|0)}}}}else c[ga>>2]=7;while(0);Kd(c[ba>>2]|0);Kd(c[A>>2]|0);Kd(c[X>>2]|0);Kd(c[ca>>2]|0);Kd(c[Y>>2]|0);Kd(c[_>>2]|0);c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[Q>>2]|0))break;Kd(c[(c[B>>2]|0)+(c[E>>2]<<2)>>2]|0);c[E>>2]=(c[E>>2]|0)+1}Kd(c[z>>2]|0);Kd(c[B>>2]|0);f=c[ea>>2]|0;if(!(c[ga>>2]|0)){c[c[da>>2]>>2]=f;ia=c[ga>>2]|0;i=ha;return ia|0}if(f){Mk(c[ea>>2]|0)|0;ia=c[ga>>2]|0;i=ha;return ia|0}if(!(c[fa>>2]|0)){ia=c[ga>>2]|0;i=ha;return ia|0}Tb[c[(c[c[fa>>2]>>2]|0)+8>>2]&255](c[fa>>2]|0)|0;ia=c[ga>>2]|0;i=ha;return ia|0}function Gp(b){b=b|0;var c=0,d=0;d=i;i=i+16|0;c=d;a[c>>0]=b;if(a[c>>0]&128){b=1;b=b&1;i=d;return b|0}b=(a[25712+(a[c>>0]|0)>>0]|0)!=0;b=b&1;i=d;return b|0}function Hp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=i;i=i+80|0;t=y+16|0;s=y+8|0;z=y;g=y+76|0;h=y+72|0;A=y+68|0;j=y+64|0;k=y+60|0;r=y+56|0;u=y+52|0;p=y+48|0;v=y+44|0;w=y+40|0;o=y+36|0;l=y+32|0;n=y+28|0;q=y+24|0;m=y+20|0;c[h>>2]=b;c[A>>2]=d;c[j>>2]=e;c[k>>2]=f;c[u>>2]=c[A>>2];c[p>>2]=0;c[z>>2]=c[A>>2];c[v>>2]=Od(19255,z)|0;if(!(c[v>>2]|0)){c[g>>2]=7;A=c[g>>2]|0;i=y;return A|0}A=BQ(c[v>>2]|0)|0;c[w>>2]=(c[v>>2]|0)+A;c[u>>2]=Lp(c[v>>2]|0,p)|0;if(!(c[u>>2]|0))c[u>>2]=c[v>>2];a[(c[u>>2]|0)+(c[p>>2]|0)>>0]=0;Ik(c[u>>2]|0);z=c[h>>2]|0;A=c[u>>2]|0;c[o>>2]=yk(z,A,(BQ(c[u>>2]|0)|0)+1|0)|0;if(c[o>>2]|0){c[l>>2]=0;c[n>>2]=0;c[u>>2]=(c[u>>2]|0)+((c[p>>2]|0)+1);while(1){if((c[u>>2]|0)>>>0>=(c[w>>2]|0)>>>0)break;A=Lp(c[u>>2]|0,p)|0;c[u>>2]=A;if(!A)break;c[q>>2]=(c[n>>2]|0)+1<<2;c[m>>2]=Ld(c[l>>2]|0,c[q>>2]|0)|0;if(!(c[m>>2]|0)){x=11;break}c[l>>2]=c[m>>2];z=c[u>>2]|0;A=c[n>>2]|0;c[n>>2]=A+1;c[(c[l>>2]|0)+(A<<2)>>2]=z;a[(c[u>>2]|0)+(c[p>>2]|0)>>0]=0;Ik(c[u>>2]|0);c[u>>2]=(c[u>>2]|0)+((c[p>>2]|0)+1)}if((x|0)==11){Kd(c[v>>2]|0);Kd(c[l>>2]|0);c[g>>2]=7;A=c[g>>2]|0;i=y;return A|0}c[r>>2]=Ob[c[(c[o>>2]|0)+4>>2]&255](c[n>>2]|0,c[l>>2]|0,c[j>>2]|0)|0;if(c[r>>2]|0)zk(c[k>>2]|0,25694,t);else c[c[c[j>>2]>>2]>>2]=c[o>>2];Kd(c[l>>2]|0)}else{A=c[k>>2]|0;c[s>>2]=c[u>>2];zk(A,21456,s);c[r>>2]=1}Kd(c[v>>2]|0);c[g>>2]=c[r>>2];A=c[g>>2]|0;i=y;return A|0}function Ip(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;k=o;f=o+24|0;g=o+20|0;h=o+16|0;j=o+12|0;m=o+8|0;l=o+4|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[l>>2]=c[g>>2];while(1){d=c[l>>2]|0;if((a[c[l>>2]>>0]|0)==61)break;if(!(a[d>>0]|0)){n=4;break}c[l>>2]=(c[l>>2]|0)+1}if((n|0)==4){c[f>>2]=0;n=c[f>>2]|0;i=o;return n|0}c[c[h>>2]>>2]=d-(c[g>>2]|0);c[k>>2]=(c[l>>2]|0)+1;c[m>>2]=Od(19255,k)|0;if(c[m>>2]|0)Ik(c[m>>2]|0);c[c[j>>2]>>2]=c[m>>2];c[f>>2]=1;n=c[f>>2]|0;i=o;return n|0}function Jp(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;A=i;i=i+96|0;w=A+8|0;B=A;j=A+80|0;C=A+76|0;D=A+72|0;k=A+68|0;l=A+64|0;m=A+60|0;n=A+56|0;v=A+52|0;z=A+48|0;u=A+44|0;o=A+40|0;s=A+36|0;r=A+32|0;p=A+28|0;x=A+24|0;t=A+20|0;y=A+16|0;q=A+12|0;c[j>>2]=a;c[C>>2]=b;c[D>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[v>>2]=0;c[u>>2]=0;d=c[D>>2]|0;c[B>>2]=c[C>>2];c[B+4>>2]=d;c[z>>2]=Od(25639,B)|0;if(c[z>>2]|0){c[v>>2]=cf(c[j>>2]|0,c[z>>2]|0,-1,u,0)|0;if(c[v>>2]|0){D=c[n>>2]|0;c[w>>2]=bf(c[j>>2]|0)|0;zk(D,19255,w)}}else c[v>>2]=7;Kd(c[z>>2]|0);if(c[v>>2]|0){D=c[v>>2]|0;i=A;return D|0}c[s>>2]=0;c[r>>2]=ye(c[u>>2]|0)|0;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[r>>2]|0))break;c[x>>2]=Ie(c[u>>2]|0,c[p>>2]|0)|0;D=(BQ(c[x>>2]|0)|0)+1|0;c[s>>2]=(c[s>>2]|0)+D;c[p>>2]=(c[p>>2]|0)+1}c[o>>2]=Id((c[r>>2]<<2)+(c[s>>2]|0)|0)|0;a:do if(!(c[o>>2]|0))c[v>>2]=7;else{c[t>>2]=(c[o>>2]|0)+(c[r>>2]<<2);c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[r>>2]|0))break a;c[y>>2]=Ie(c[u>>2]|0,c[p>>2]|0)|0;c[q>>2]=(BQ(c[y>>2]|0)|0)+1;iR(c[t>>2]|0,c[y>>2]|0,c[q>>2]|0)|0;c[(c[o>>2]|0)+(c[p>>2]<<2)>>2]=c[t>>2];c[t>>2]=(c[t>>2]|0)+(c[q>>2]|0);c[p>>2]=(c[p>>2]|0)+1}}while(0);Yd(c[u>>2]|0)|0;c[c[l>>2]>>2]=c[r>>2];c[c[m>>2]>>2]=c[s>>2];c[c[k>>2]>>2]=c[o>>2];D=c[v>>2]|0;i=A;return D|0}function Kp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+36|0;g=q+32|0;h=q+28|0;j=q+24|0;k=q+20|0;m=q+16|0;o=q+12|0;p=q+8|0;l=q+4|0;n=q;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[m>>2]=1;a:do if((c[g>>2]|0)!=0?(a[c[g>>2]>>0]|0)!=0:0){c[m>>2]=(c[m>>2]|0)+1;c[o>>2]=c[g>>2];while(1){if(!(a[c[o>>2]>>0]|0))break a;if((a[c[o>>2]>>0]|0)==44)c[m>>2]=(c[m>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+1}}while(0);c[k>>2]=Id((c[m>>2]|0)*24|0)|0;c[c[j>>2]>>2]=c[k>>2];if(!(c[k>>2]|0)){c[f>>2]=7;b=c[f>>2]|0;i=q;return b|0}kR(c[k>>2]|0,0,(c[m>>2]|0)*24|0)|0;b:do if(c[g>>2]|0){c[p>>2]=c[g>>2];c[l>>2]=1;while(1){if((c[l>>2]|0)>=(c[m>>2]|0))break b;c[n>>2]=0;if(Tp(p,n)|0)break;if(!(c[n>>2]|0)){c[m>>2]=(c[m>>2]|0)+-1;c[l>>2]=(c[l>>2]|0)+-1}else c[(c[k>>2]|0)+((c[l>>2]|0)*24|0)>>2]=c[n>>2];c[p>>2]=(c[p>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+1}c[f>>2]=1;b=c[f>>2]|0;i=q;return b|0}while(0);c[c[h>>2]>>2]=c[m>>2];c[f>>2]=0;b=c[f>>2]|0;i=q;return b|0}function Lp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;l=k+12|0;g=k+8|0;h=k+4|0;j=k;e=k+20|0;c[l>>2]=b;c[g>>2]=d;c[j>>2]=0;c[h>>2]=c[l>>2];a:while(1){if(c[j>>2]|0){d=21;break}a[e>>0]=a[c[h>>2]>>0]|0;switch(a[e>>0]|0){case 0:{d=4;break a}case 96:case 34:case 39:{c[j>>2]=c[h>>2];while(1){l=(c[j>>2]|0)+1|0;c[j>>2]=l;if(!(a[l>>0]|0))continue a;if((a[c[j>>2]>>0]|0)!=(a[e>>0]|0))continue;l=(c[j>>2]|0)+1|0;c[j>>2]=l;if((a[l>>0]|0)!=(a[e>>0]|0))continue a}}case 91:{c[j>>2]=(c[h>>2]|0)+1;while(1){if(a[c[j>>2]>>0]|0)b=(a[c[j>>2]>>0]|0)!=93;else b=0;d=c[j>>2]|0;if(!b)break;c[j>>2]=d+1}if(!(a[d>>0]|0))continue a;c[j>>2]=(c[j>>2]|0)+1;continue a}default:{l=(Gp(a[c[h>>2]>>0]|0)|0)!=0;d=(c[h>>2]|0)+1|0;if(!l){c[h>>2]=d;continue a}c[j>>2]=d;while(1){if(!(Gp(a[c[j>>2]>>0]|0)|0))continue a;c[j>>2]=(c[j>>2]|0)+1}}}}if((d|0)==4){c[f>>2]=0;l=c[f>>2]|0;i=k;return l|0}else if((d|0)==21){c[c[g>>2]>>2]=(c[j>>2]|0)-(c[h>>2]|0);c[f>>2]=c[h>>2];l=c[f>>2]|0;i=k;return l|0}return 0}function Mp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+96|0;r=t+56|0;l=t+48|0;k=t+40|0;n=t+32|0;m=t+24|0;j=t+8|0;h=t;q=t+92|0;e=t+88|0;f=t+84|0;s=t+80|0;o=t+76|0;p=t+72|0;g=t+68|0;c[q>>2]=a;c[e>>2]=b;c[f>>2]=d;c[s>>2]=0;c[o>>2]=0;if(c[(c[q>>2]|0)+40>>2]|0){Sp(c[f>>2]|0,s,25592,n);c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[q>>2]|0)+24>>2]|0))break;p=c[f>>2]|0;c[k>>2]=c[(c[(c[q>>2]|0)+28>>2]|0)+(c[g>>2]<<2)>>2];Sp(p,s,25598,k);c[g>>2]=(c[g>>2]|0)+1}if(c[(c[q>>2]|0)+44>>2]|0){p=c[f>>2]|0;c[l>>2]=c[(c[q>>2]|0)+44>>2];Sp(p,s,25578,l)}}else{if(c[e>>2]|0){b=Rp(c[e>>2]|0)|0;c[p>>2]=b;c[o>>2]=b}else c[p>>2]=19266;Sp(c[f>>2]|0,s,25557,h);c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[q>>2]|0)+24>>2]|0))break;b=c[f>>2]|0;l=c[g>>2]|0;n=c[(c[(c[q>>2]|0)+28>>2]|0)+(c[g>>2]<<2)>>2]|0;c[j>>2]=c[p>>2];c[j+4>>2]=l;c[j+8>>2]=n;Sp(b,s,25563,j);c[g>>2]=(c[g>>2]|0)+1}if(c[(c[q>>2]|0)+44>>2]|0){p=c[f>>2]|0;c[m>>2]=25585;Sp(p,s,25578,m)}Kd(c[o>>2]|0)}e=c[f>>2]|0;f=c[(c[q>>2]|0)+16>>2]|0;g=c[q>>2]|0;if(c[(c[q>>2]|0)+40>>2]|0){b=c[g+40>>2]|0;p=c[q>>2]|0;p=p+40|0;p=c[p>>2]|0;p=(p|0)!=0;p=p?19266:25607;c[r>>2]=f;q=r+4|0;c[q>>2]=b;q=r+8|0;c[q>>2]=p;Sp(e,s,25616,r);s=c[s>>2]|0;i=t;return s|0}else{b=c[g+20>>2]|0;p=c[q>>2]|0;p=p+40|0;p=c[p>>2]|0;p=(p|0)!=0;p=p?19266:25607;c[r>>2]=f;q=r+4|0;c[q>>2]=b;q=r+8|0;c[q>>2]=p;Sp(e,s,25616,r);s=c[s>>2]|0;i=t;return s|0}return 0}function Np(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;k=o+16|0;j=o+8|0;e=o+44|0;f=o+40|0;g=o+36|0;n=o+32|0;l=o+28|0;m=o+24|0;h=o+20|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[n>>2]=0;c[l>>2]=0;if(c[f>>2]|0){b=Rp(c[f>>2]|0)|0;c[m>>2]=b;c[l>>2]=b}else c[m>>2]=19266;Sp(c[g>>2]|0,n,21139,o);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[e>>2]|0)+24>>2]|0))break;b=c[g>>2]|0;c[j>>2]=c[m>>2];Sp(b,n,25541,j);c[h>>2]=(c[h>>2]|0)+1}if(!(c[(c[e>>2]|0)+44>>2]|0)){m=c[l>>2]|0;Kd(m);n=c[n>>2]|0;i=o;return n|0}Sp(c[g>>2]|0,n,25548,k);m=c[l>>2]|0;Kd(m);n=c[n>>2]|0;i=o;return n|0}function Op(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+112|0;m=r+64|0;k=r+56|0;j=r+48|0;h=r+32|0;n=r+24|0;l=r+8|0;d=r+96|0;g=r+92|0;f=r+88|0;e=r+84|0;q=r+80|0;p=r+76|0;o=r+72|0;c[d>>2]=b;c[g>>2]=0;c[e>>2]=c[(c[d>>2]|0)+12>>2];if(!(c[(c[d>>2]|0)+40>>2]|0)){c[q>>2]=c[(c[d>>2]|0)+44>>2];c[p>>2]=Od(25166,r)|0;c[f>>2]=0;while(1){if(!(c[p>>2]|0))break;if((c[f>>2]|0)>=(c[(c[d>>2]|0)+24>>2]|0))break;c[o>>2]=c[(c[(c[d>>2]|0)+28>>2]|0)+(c[f>>2]<<2)>>2];s=c[f>>2]|0;b=c[o>>2]|0;c[l>>2]=c[p>>2];c[l+4>>2]=s;c[l+8>>2]=b;c[p>>2]=Od(25192,l)|0;c[f>>2]=(c[f>>2]|0)+1}if((c[q>>2]|0)!=0&(c[p>>2]|0)!=0){s=c[q>>2]|0;c[n>>2]=c[p>>2];c[n+4>>2]=s;c[p>>2]=Od(25204,n)|0}if(!(c[p>>2]|0))c[g>>2]=7;s=c[e>>2]|0;o=c[(c[d>>2]|0)+20>>2]|0;q=c[p>>2]|0;c[h>>2]=c[(c[d>>2]|0)+16>>2];c[h+4>>2]=o;c[h+8>>2]=q;hl(g,s,25215,h);Kd(c[p>>2]|0)}s=c[e>>2]|0;q=c[(c[d>>2]|0)+20>>2]|0;c[j>>2]=c[(c[d>>2]|0)+16>>2];c[j+4>>2]=q;hl(g,s,25248,j);s=c[e>>2]|0;q=c[(c[d>>2]|0)+20>>2]|0;c[k>>2]=c[(c[d>>2]|0)+16>>2];c[k+4>>2]=q;hl(g,s,25320,k);if(a[(c[d>>2]|0)+230>>0]|0){s=c[e>>2]|0;q=c[(c[d>>2]|0)+20>>2]|0;c[m>>2]=c[(c[d>>2]|0)+16>>2];c[m+4>>2]=q;hl(g,s,25473,m)}if(!(a[(c[d>>2]|0)+229>>0]|0)){s=c[g>>2]|0;i=r;return s|0}Xo(g,c[d>>2]|0);s=c[g>>2]|0;i=r;return s|0}function Pp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;h=k;d=k+20|0;e=k+16|0;g=k+12|0;j=k+8|0;f=k+4|0;c[d>>2]=a;c[e>>2]=b;if(c[c[d>>2]>>2]|0){i=k;return}c[h>>2]=c[(c[e>>2]|0)+16>>2];c[j>>2]=Od(25146,h)|0;do if(c[j>>2]|0){c[g>>2]=cf(c[(c[e>>2]|0)+12>>2]|0,c[j>>2]|0,-1,f,0)|0;if(!(c[g>>2]|0)){ue(c[f>>2]|0)|0;h=De(c[f>>2]|0,0)|0;c[(c[e>>2]|0)+236>>2]=h;c[g>>2]=Yd(c[f>>2]|0)|0;break}if((c[g>>2]|0)==23){c[(c[e>>2]|0)+236>>2]=1024;c[g>>2]=0}}else c[g>>2]=7;while(0);Kd(c[j>>2]|0);c[c[d>>2]>>2]=c[g>>2];i=k;return}function Qp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+64|0;l=p+24|0;k=p+16|0;e=p+8|0;d=p;f=p+60|0;g=p+56|0;h=p+52|0;j=p+48|0;o=p+44|0;m=p+40|0;n=p+36|0;c[f>>2]=a;c[g>>2]=b;if(c[c[f>>2]>>2]|0){i=p;return}if(c[(c[g>>2]|0)+44>>2]|0)b=c[(c[g>>2]|0)+44>>2]|0;else b=25071;c[n>>2]=b;a=c[(c[g>>2]|0)+12>>2]|0;c[d>>2]=1;hf(a,1,d)|0;c[e>>2]=c[c[(c[g>>2]|0)+28>>2]>>2];c[m>>2]=Od(25080,e)|0;c[h>>2]=1;while(1){if(c[m>>2]|0)a=(c[h>>2]|0)<(c[(c[g>>2]|0)+24>>2]|0);else a=0;b=c[m>>2]|0;if(!a)break;e=c[(c[(c[g>>2]|0)+28>>2]|0)+(c[h>>2]<<2)>>2]|0;c[k>>2]=b;c[k+4>>2]=e;c[m>>2]=Od(25085,k)|0;c[h>>2]=(c[h>>2]|0)+1}k=c[(c[g>>2]|0)+20>>2]|0;n=c[n>>2]|0;c[l>>2]=b;c[l+4>>2]=k;c[l+8>>2]=n;c[o>>2]=Od(25092,l)|0;if((c[m>>2]|0)!=0&(c[o>>2]|0)!=0)c[j>>2]=ff(c[(c[g>>2]|0)+12>>2]|0,c[o>>2]|0)|0;else c[j>>2]=7;Kd(c[o>>2]|0);Kd(c[m>>2]|0);c[c[f>>2]>>2]=c[j>>2];i=p;return}function Rp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;d=h+16|0;j=h+12|0;g=h+8|0;e=h+4|0;f=h;c[d>>2]=b;c[j>>2]=2+((BQ(c[d>>2]|0)|0)<<1)+1;c[g>>2]=Id(c[j>>2]|0)|0;if(!(c[g>>2]|0)){j=c[g>>2]|0;i=h;return j|0}c[f>>2]=c[g>>2];j=c[f>>2]|0;c[f>>2]=j+1;a[j>>0]=34;c[e>>2]=0;while(1){if(!(a[(c[d>>2]|0)+(c[e>>2]|0)>>0]|0))break;if((a[(c[d>>2]|0)+(c[e>>2]|0)>>0]|0)==34){j=c[f>>2]|0;c[f>>2]=j+1;a[j>>0]=34}b=a[(c[d>>2]|0)+(c[e>>2]|0)>>0]|0;j=c[f>>2]|0;c[f>>2]=j+1;a[j>>0]=b;c[e>>2]=(c[e>>2]|0)+1}j=c[f>>2]|0;c[f>>2]=j+1;a[j>>0]=34;j=c[f>>2]|0;c[f>>2]=j+1;a[j>>0]=0;j=c[g>>2]|0;i=h;return j|0}function Sp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;k=n;f=n+40|0;g=n+36|0;h=n+32|0;j=n+16|0;l=n+12|0;m=n+8|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if(c[c[f>>2]>>2]|0){i=n;return}c[j>>2]=e;c[l>>2]=Nd(c[h>>2]|0,j)|0;if((c[l>>2]|0)!=0?(c[c[g>>2]>>2]|0)!=0:0){d=c[l>>2]|0;c[k>>2]=c[c[g>>2]>>2];c[k+4>>2]=d;c[m>>2]=Od(25552,k)|0;Kd(c[l>>2]|0);c[l>>2]=c[m>>2]}if(!(c[l>>2]|0))c[c[f>>2]>>2]=7;Kd(c[c[g>>2]>>2]|0);c[c[g>>2]>>2]=c[l>>2];i=n;return}function Tp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;g=l+12|0;j=l+4|0;h=l;c[f>>2]=b;c[g>>2]=d;c[l+8>>2]=1e7;c[h>>2]=0;c[j>>2]=c[c[f>>2]>>2];while(1){if((a[c[j>>2]>>0]|0)<48)break;if((a[c[j>>2]>>0]|0)>57)break;c[h>>2]=((c[h>>2]|0)*10|0)+((a[c[j>>2]>>0]|0)-48);if((c[h>>2]|0)>1e7){k=5;break}c[j>>2]=(c[j>>2]|0)+1}if((k|0)==5)c[h>>2]=0;if((c[j>>2]|0)==(c[c[f>>2]>>2]|0)){c[e>>2]=1;k=c[e>>2]|0;i=l;return k|0}else{c[c[g>>2]>>2]=c[h>>2];c[c[f>>2]>>2]=c[j>>2];c[e>>2]=0;k=c[e>>2]|0;i=l;return k|0}return 0}function Up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+48|0;j=m;e=m+32|0;n=m+28|0;o=m+24|0;g=m+20|0;h=m+16|0;l=m+12|0;f=m+8|0;k=m+4|0;c[e>>2]=a;c[n>>2]=b;c[o>>2]=d;c[h>>2]=0;c[g>>2]=ve(c[e>>2]|0)|0;c[l>>2]=ae(c[c[o>>2]>>2]|0)|0;c[f>>2]=(be(c[c[o>>2]>>2]|0)|0)+1;if((c[n>>2]|0)==2){je(c[e>>2]|0,25840,-1);i=m;return}if(c[l>>2]|0)c[h>>2]=yk(c[g>>2]|0,c[l>>2]|0,c[f>>2]|0)|0;if(c[h>>2]|0){ge(c[e>>2]|0,h,4,-1);i=m;return}else{c[j>>2]=c[l>>2];c[k>>2]=Od(21456,j)|0;je(c[e>>2]|0,c[k>>2]|0,-1);Kd(c[k>>2]|0);i=m;return}}function Vp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;d=c[c[g>>2]>>2]|0;if(c[(c[g>>2]|0)+4>>2]|0)c[c[(c[g>>2]|0)+4>>2]>>2]=d;else c[(c[f>>2]|0)+8>>2]=d;if(c[c[g>>2]>>2]|0)c[(c[c[g>>2]>>2]|0)+4>>2]=c[(c[g>>2]|0)+4>>2];c[j>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[h>>2]<<3);if((c[(c[j>>2]|0)+4>>2]|0)==(c[g>>2]|0))c[(c[j>>2]|0)+4>>2]=c[c[g>>2]>>2];h=c[j>>2]|0;c[h>>2]=(c[h>>2]|0)+-1;if((c[c[j>>2]>>2]|0)<=0)c[(c[j>>2]|0)+4>>2]=0;if((a[(c[f>>2]|0)+1>>0]|0)!=0?(c[(c[g>>2]|0)+12>>2]|0)!=0:0)kk(c[(c[g>>2]|0)+12>>2]|0);kk(c[g>>2]|0);j=(c[f>>2]|0)+4|0;c[j>>2]=(c[j>>2]|0)+-1;if((c[(c[f>>2]|0)+4>>2]|0)>0){i=k;return}jk(c[f>>2]|0);i=k;return}function Wp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;e=n+28|0;f=n+24|0;g=n+20|0;k=n+16|0;h=n+12|0;l=n+8|0;m=n+4|0;j=n;c[f>>2]=b;c[g>>2]=d;c[k>>2]=Xp(c[g>>2]<<3)|0;if(!(c[k>>2]|0)){c[e>>2]=1;m=c[e>>2]|0;i=n;return m|0}kk(c[(c[f>>2]|0)+16>>2]|0);c[(c[f>>2]|0)+16>>2]=c[k>>2];c[(c[f>>2]|0)+12>>2]=c[g>>2];c[m>>2]=Bk(a[c[f>>2]>>0]|0)|0;c[h>>2]=c[(c[f>>2]|0)+8>>2];c[(c[f>>2]|0)+8>>2]=0;while(1){if(!(c[h>>2]|0))break;b=Yb[c[m>>2]&255](c[(c[h>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+16>>2]|0)|0;c[j>>2]=b&(c[g>>2]|0)-1;c[l>>2]=c[c[h>>2]>>2];Yp(c[f>>2]|0,(c[k>>2]|0)+(c[j>>2]<<3)|0,c[h>>2]|0);c[h>>2]=c[l>>2]}c[e>>2]=0;m=c[e>>2]|0;i=n;return m|0}function Xp(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=Id(c[b>>2]|0)|0;if(!(c[d>>2]|0)){d=c[d>>2]|0;i=e;return d|0}kR(c[d>>2]|0,0,c[b>>2]|0)|0;d=c[d>>2]|0;i=e;return d|0}function Yp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=c[(c[f>>2]|0)+4>>2];if(!(c[h>>2]|0)){c[c[g>>2]>>2]=c[(c[e>>2]|0)+8>>2];if(c[(c[e>>2]|0)+8>>2]|0)c[(c[(c[e>>2]|0)+8>>2]|0)+4>>2]=c[g>>2];c[(c[g>>2]|0)+4>>2]=0;c[(c[e>>2]|0)+8>>2]=c[g>>2];h=c[f>>2]|0;e=c[h>>2]|0;e=e+1|0;c[h>>2]=e;g=c[g>>2]|0;h=c[f>>2]|0;h=h+4|0;c[h>>2]=g;i=j;return}c[c[g>>2]>>2]=c[h>>2];c[(c[g>>2]|0)+4>>2]=c[(c[h>>2]|0)+4>>2];b=c[g>>2]|0;if(c[(c[h>>2]|0)+4>>2]|0)c[c[(c[h>>2]|0)+4>>2]>>2]=b;else c[(c[e>>2]|0)+8>>2]=b;c[(c[h>>2]|0)+4>>2]=c[g>>2];h=c[f>>2]|0;e=c[h>>2]|0;e=e+1|0;c[h>>2]=e;g=c[g>>2]|0;h=c[f>>2]|0;h=h+4|0;c[h>>2]=g;i=j;return}function Zp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+32|0;e=h+16|0;f=h+4|0;g=h;c[h+12>>2]=a;c[h+8>>2]=b;c[f>>2]=d;c[g>>2]=Id(4)|0;if(!(c[g>>2]|0)){c[e>>2]=7;g=c[e>>2]|0;i=h;return g|0}else{c[c[g>>2]>>2]=0;c[c[f>>2]>>2]=c[g>>2];c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}return 0}function _p(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[d>>2]|0);i=b;return 0}function $p(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+20|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[l+16>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=Id(28)|0;if(!(c[k>>2]|0)){c[f>>2]=7;b=c[f>>2]|0;i=l;return b|0}c[(c[k>>2]|0)+4>>2]=c[g>>2];do if(c[g>>2]|0)if((c[h>>2]|0)<0){b=BQ(c[g>>2]|0)|0;c[(c[k>>2]|0)+8>>2]=b;break}else{c[(c[k>>2]|0)+8>>2]=c[h>>2];break}else c[(c[k>>2]|0)+8>>2]=0;while(0);c[(c[k>>2]|0)+12>>2]=0;c[(c[k>>2]|0)+16>>2]=0;c[(c[k>>2]|0)+20>>2]=0;c[(c[k>>2]|0)+24>>2]=0;c[c[j>>2]>>2]=c[k>>2];c[f>>2]=0;b=c[f>>2]|0;i=l;return b|0}function aq(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Kd(c[(c[d>>2]|0)+20>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function bq(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+64|0;j=w+48|0;x=w+44|0;k=w+40|0;l=w+36|0;m=w+32|0;n=w+28|0;o=w+24|0;p=w+20|0;u=w+16|0;r=w+12|0;q=w+8|0;s=w+4|0;t=w;c[x>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=c[x>>2];c[u>>2]=c[(c[p>>2]|0)+4>>2];do{if((c[(c[p>>2]|0)+12>>2]|0)>=(c[(c[p>>2]|0)+8>>2]|0)){v=23;break}while(1){if((c[(c[p>>2]|0)+12>>2]|0)<(c[(c[p>>2]|0)+8>>2]|0)?(x=a[(c[u>>2]|0)+(c[(c[p>>2]|0)+12>>2]|0)>>0]|0,c[q>>2]=x,(x&128|0)==0):0)if((c[q>>2]|0)<48)b=1;else b=(a[25909+((c[q>>2]|0)-48)>>0]|0)!=0^1;else b=0;g=(c[p>>2]|0)+12|0;h=c[g>>2]|0;if(!b)break;c[g>>2]=h+1}c[r>>2]=h;while(1){if((c[(c[p>>2]|0)+12>>2]|0)<(c[(c[p>>2]|0)+8>>2]|0)){x=a[(c[u>>2]|0)+(c[(c[p>>2]|0)+12>>2]|0)>>0]|0;c[q>>2]=x;if(!(x&128))if((c[q>>2]|0)<48)b=1;else b=(a[25909+((c[q>>2]|0)-48)>>0]|0)!=0^1;else b=0;b=b^1}else b=0;g=(c[p>>2]|0)+12|0;h=c[g>>2]|0;if(!b)break;c[g>>2]=h+1}}while((h|0)<=(c[r>>2]|0));if((v|0)==23){c[j>>2]=101;x=c[j>>2]|0;i=w;return x|0}c[s>>2]=(c[(c[p>>2]|0)+12>>2]|0)-(c[r>>2]|0);do if((c[s>>2]|0)>(c[(c[p>>2]|0)+24>>2]|0)){c[(c[p>>2]|0)+24>>2]=(c[s>>2]|0)+20;c[t>>2]=Ld(c[(c[p>>2]|0)+20>>2]|0,c[(c[p>>2]|0)+24>>2]|0)|0;if(c[t>>2]|0){c[(c[p>>2]|0)+20>>2]=c[t>>2];break}c[j>>2]=7;x=c[j>>2]|0;i=w;return x|0}while(0);cq((c[u>>2]|0)+(c[r>>2]|0)|0,c[s>>2]|0,c[(c[p>>2]|0)+20>>2]|0,c[l>>2]|0);c[c[k>>2]>>2]=c[(c[p>>2]|0)+20>>2];c[c[m>>2]>>2]=c[r>>2];c[c[n>>2]>>2]=c[(c[p>>2]|0)+12>>2];v=(c[p>>2]|0)+16|0;x=c[v>>2]|0;c[v>>2]=x+1;c[c[o>>2]>>2]=x;c[j>>2]=0;x=c[j>>2]|0;i=w;return x|0}function cq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+64|0;g=s+28|0;h=s+24|0;o=s+20|0;p=s+16|0;q=s+12|0;k=s+8|0;m=s+36|0;r=s+4|0;l=s;j=s+32|0;c[g>>2]=b;c[h>>2]=d;c[o>>2]=e;c[p>>2]=f;if((c[h>>2]|0)<3|(c[h>>2]|0)>=21){dq(c[g>>2]|0,c[h>>2]|0,c[o>>2]|0,c[p>>2]|0);i=s;return}c[q>>2]=0;c[k>>2]=22;while(1){if((c[q>>2]|0)>=(c[h>>2]|0))break;a[j>>0]=a[(c[g>>2]|0)+(c[q>>2]|0)>>0]|0;if((a[j>>0]|0)>=65?(a[j>>0]|0)<=90:0)a[m+(c[k>>2]|0)>>0]=(a[j>>0]|0)+97-65;else{if((a[j>>0]|0)<97){n=11;break}if((a[j>>0]|0)>122){n=11;break}a[m+(c[k>>2]|0)>>0]=a[j>>0]|0}c[q>>2]=(c[q>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+-1}if((n|0)==11){dq(c[g>>2]|0,c[h>>2]|0,c[o>>2]|0,c[p>>2]|0);i=s;return}n=m+23|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;c[r>>2]=m+((c[k>>2]|0)+1);if((((a[c[r>>2]>>0]|0)==115?(eq(r,25989,25994,0)|0)==0:0)?(eq(r,25997,26001,0)|0)==0:0)?(eq(r,25994,25994,0)|0)==0:0)c[r>>2]=(c[r>>2]|0)+1;c[l>>2]=c[r>>2];do if(!(eq(r,26003,26007,172)|0)){if((eq(r,26010,19266,173)|0)==0?(eq(r,26014,19266,173)|0)==0:0)break;if((((c[r>>2]|0)!=(c[l>>2]|0)?(eq(r,26017,26020,0)|0)==0:0)?(eq(r,26024,26027,0)|0)==0:0)?(eq(r,26031,26034,0)|0)==0:0){if((((hq(c[r>>2]|0)|0)!=0?(a[c[r>>2]>>0]|0)!=108:0)?(a[c[r>>2]>>0]|0)!=115:0)?(a[c[r>>2]>>0]|0)!=122:0){c[r>>2]=(c[r>>2]|0)+1;break}if((iq(c[r>>2]|0)|0)!=0?(jq(c[r>>2]|0)|0)!=0:0){n=(c[r>>2]|0)+-1|0;c[r>>2]=n;a[n>>0]=101}}}while(0);if((a[c[r>>2]>>0]|0)==121?(gq((c[r>>2]|0)+1|0)|0)!=0:0)a[c[r>>2]>>0]=105;switch(a[(c[r>>2]|0)+1>>0]|0){case 97:{if(!(eq(r,26038,26020,172)|0))eq(r,26046,26053,172)|0;break}case 99:{if(!(eq(r,26058,26063,172)|0))eq(r,26068,26073,172)|0;break}case 101:{eq(r,26078,26034,172)|0;break}case 103:{eq(r,26083,26088,172)|0;break}case 108:{if((((eq(r,26092,26027,172)|0)==0?(eq(r,26096,26101,172)|0)==0:0)?(eq(r,26104,26110,172)|0)==0:0)?(eq(r,26114,26118,172)|0)==0:0)eq(r,26120,26126,172)|0;break}case 111:{if((eq(r,26130,26034,172)|0)==0?(eq(r,26138,26020,172)|0)==0:0)eq(r,26144,26020,172)|0;break}case 115:{if(((eq(r,26149,26101,172)|0)==0?(eq(r,26155,26163,172)|0)==0:0)?(eq(r,26167,26175,172)|0)==0:0)eq(r,26179,26126,172)|0;break}case 116:{if((eq(r,26187,26101,172)|0)==0?(eq(r,26193,26163,172)|0)==0:0)eq(r,26199,26027,172)|0;break}default:{}}switch(a[c[r>>2]>>0]|0){case 101:{if((eq(r,26206,26212,172)|0)==0?(eq(r,26215,19266,172)|0)==0:0)eq(r,26221,26101,172)|0;break}case 105:{eq(r,26227,26212,172)|0;break}case 108:{if(!(eq(r,26233,26212,172)|0))eq(r,26238,19266,172)|0;break}case 115:{eq(r,26242,19266,172)|0;break}default:{}}a:do switch(a[(c[r>>2]|0)+1>>0]|0){case 97:{if((a[c[r>>2]>>0]|0)==108?(kq((c[r>>2]|0)+2|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+2;break}case 99:{if((a[c[r>>2]>>0]|0)==101?(a[(c[r>>2]|0)+2>>0]|0)==110:0){if((a[(c[r>>2]|0)+3>>0]|0)!=97?(a[(c[r>>2]|0)+3>>0]|0)!=101:0)break a;if(kq((c[r>>2]|0)+4|0)|0)c[r>>2]=(c[r>>2]|0)+4}break}case 101:{if((a[c[r>>2]>>0]|0)==114?(kq((c[r>>2]|0)+2|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+2;break}case 105:{if((a[c[r>>2]>>0]|0)==99?(kq((c[r>>2]|0)+2|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+2;break}case 108:{if((a[c[r>>2]>>0]|0)==101?(a[(c[r>>2]|0)+2>>0]|0)==98:0){if((a[(c[r>>2]|0)+3>>0]|0)!=97?(a[(c[r>>2]|0)+3>>0]|0)!=105:0)break a;if(kq((c[r>>2]|0)+4|0)|0)c[r>>2]=(c[r>>2]|0)+4}break}case 110:{if((a[c[r>>2]>>0]|0)==116){g=c[r>>2]|0;if((a[(c[r>>2]|0)+2>>0]|0)==97){if(!(kq(g+3|0)|0))break a;c[r>>2]=(c[r>>2]|0)+3;break a}if(((a[g+2>>0]|0)==101?(eq(r,26247,19266,174)|0)==0:0)?(eq(r,26253,19266,174)|0)==0:0)eq(r,26258,19266,174)|0}break}case 111:{g=c[r>>2]|0;if((a[c[r>>2]>>0]|0)==117){if(!(kq(g+2|0)|0))break a;c[r>>2]=(c[r>>2]|0)+2;break a}if((a[g+3>>0]|0)!=115?(a[(c[r>>2]|0)+3>>0]|0)!=116:0)break a;eq(r,26262,19266,174)|0;break}case 115:{if(((a[c[r>>2]>>0]|0)==109?(a[(c[r>>2]|0)+2>>0]|0)==105:0)?(kq((c[r>>2]|0)+3|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+3;break}case 116:{if(!(eq(r,26266,19266,174)|0))eq(r,26270,19266,174)|0;break}case 117:{if(((a[c[r>>2]>>0]|0)==115?(a[(c[r>>2]|0)+2>>0]|0)==111:0)?(kq((c[r>>2]|0)+3|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+3;break}case 122:case 118:{if(((a[c[r>>2]>>0]|0)==101?(a[(c[r>>2]|0)+2>>0]|0)==105:0)?(kq((c[r>>2]|0)+3|0)|0)!=0:0)c[r>>2]=(c[r>>2]|0)+3;break}default:{}}while(0);do if((a[c[r>>2]>>0]|0)==101){n=(kq((c[r>>2]|0)+1|0)|0)!=0;g=(c[r>>2]|0)+1|0;if(n){c[r>>2]=g;break}if((iq(g)|0)!=0?(jq((c[r>>2]|0)+1|0)|0)==0:0)c[r>>2]=(c[r>>2]|0)+1}while(0);if(((kq(c[r>>2]|0)|0)!=0?(a[c[r>>2]>>0]|0)==108:0)?(a[(c[r>>2]|0)+1>>0]|0)==108:0)c[r>>2]=(c[r>>2]|0)+1;n=BQ(c[r>>2]|0)|0;c[q>>2]=n;c[c[p>>2]>>2]=n;a[(c[o>>2]|0)+(c[q>>2]|0)>>0]=0;while(1){if(!(a[c[r>>2]>>0]|0))break;n=c[r>>2]|0;c[r>>2]=n+1;n=a[n>>0]|0;p=(c[q>>2]|0)+-1|0;c[q>>2]=p;a[(c[o>>2]|0)+p>>0]=n}i=s;return}function dq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+28|0;h=q+24|0;j=q+20|0;k=q+16|0;n=q+12|0;p=q+8|0;o=q+4|0;m=q;l=q+32|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[h>>2]|0))break;a[l>>0]=a[(c[g>>2]|0)+(c[n>>2]|0)>>0]|0;if((a[l>>0]|0)>=65?(a[l>>0]|0)<=90:0)a[(c[j>>2]|0)+(c[n>>2]|0)>>0]=(a[l>>0]|0)-65+97;else{if((a[l>>0]|0)>=48?(a[l>>0]|0)<=57:0)c[m>>2]=1;a[(c[j>>2]|0)+(c[n>>2]|0)>>0]=a[l>>0]|0}c[n>>2]=(c[n>>2]|0)+1}c[p>>2]=(c[m>>2]|0)!=0?3:10;if((c[h>>2]|0)<=(c[p>>2]<<1|0)){b=c[n>>2]|0;e=c[j>>2]|0;b=e+b|0;a[b>>0]=0;b=c[n>>2]|0;e=c[k>>2]|0;c[e>>2]=b;i=q;return}c[o>>2]=c[p>>2];c[n>>2]=(c[h>>2]|0)-(c[p>>2]|0);while(1){if((c[n>>2]|0)>=(c[h>>2]|0))break;a[(c[j>>2]|0)+(c[o>>2]|0)>>0]=a[(c[j>>2]|0)+(c[n>>2]|0)>>0]|0;c[n>>2]=(c[n>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+1}c[n>>2]=c[o>>2];b=c[n>>2]|0;e=c[j>>2]|0;b=e+b|0;a[b>>0]=0;b=c[n>>2]|0;e=c[k>>2]|0;c[e>>2]=b;i=q;return}function eq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=c[c[h>>2]>>2];while(1){if(!(a[c[j>>2]>>0]|0))break;if((a[c[j>>2]>>0]|0)!=(a[c[m>>2]>>0]|0))break;c[m>>2]=(c[m>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+1}if(a[c[j>>2]>>0]|0){c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}if((c[l>>2]|0)!=0?(Tb[c[l>>2]&255](c[m>>2]|0)|0)==0:0){c[g>>2]=1;e=c[g>>2]|0;i=n;return e|0}while(1){if(!(a[c[k>>2]>>0]|0))break;d=c[k>>2]|0;c[k>>2]=d+1;d=a[d>>0]|0;e=(c[m>>2]|0)+-1|0;c[m>>2]=e;a[e>>0]=d}c[c[h>>2]>>2]=c[m>>2];c[g>>2]=1;e=c[g>>2]|0;i=n;return e|0}function fq(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+4|0;e=f;c[e>>2]=b;while(1){g=(lq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(mq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}c[d>>2]=(a[b>>0]|0)!=0&1;g=c[d>>2]|0;i=f;return g|0}function gq(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e;c[d>>2]=b;while(1){f=(mq(c[d>>2]|0)|0)!=0;b=c[d>>2]|0;if(!f)break;c[d>>2]=b+1}i=e;return(a[b>>0]|0)!=0|0}function hq(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;if(!(mq(c[d>>2]|0)|0)){b=0;b=b&1;i=e;return b|0}b=(a[c[d>>2]>>0]|0)==(a[(c[d>>2]|0)+1>>0]|0);b=b&1;i=e;return b|0}function iq(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+4|0;e=f;c[e>>2]=b;while(1){g=(lq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(mq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(lq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=1;g=c[d>>2]|0;i=f;return g|0}while(1){g=(mq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}c[d>>2]=(a[b>>0]|0)==0&1;g=c[d>>2]|0;i=f;return g|0}function jq(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;if(((((mq(c[d>>2]|0)|0)!=0?(a[c[d>>2]>>0]|0)!=119:0)?(a[c[d>>2]>>0]|0)!=120:0)?(a[c[d>>2]>>0]|0)!=121:0)?(lq((c[d>>2]|0)+1|0)|0)!=0:0)d=(mq((c[d>>2]|0)+2|0)|0)!=0;else d=0;i=e;return d&1|0}function kq(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+4|0;e=f;c[e>>2]=b;while(1){g=(lq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(mq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(lq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}if(!(a[b>>0]|0)){c[d>>2]=0;g=c[d>>2]|0;i=f;return g|0}while(1){g=(mq(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!g)break;c[e>>2]=b+1}c[d>>2]=(a[b>>0]|0)!=0&1;g=c[d>>2]|0;i=f;return g|0}function lq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;e=h+4|0;f=h;g=h+12|0;c[e>>2]=b;a[g>>0]=a[c[e>>2]>>0]|0;if(!(a[g>>0]|0)){c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}c[f>>2]=a[26274+((a[g>>0]|0)-97)>>0];if((c[f>>2]|0)<2){c[d>>2]=1-(c[f>>2]|0);b=c[d>>2]|0;i=h;return b|0}else{c[d>>2]=mq((c[e>>2]|0)+1|0)|0;b=c[d>>2]|0;i=h;return b|0}return 0}function mq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h+8|0;d=h+4|0;e=h;f=h+12|0;c[d>>2]=b;a[f>>0]=a[c[d>>2]>>0]|0;if(!(a[f>>0]|0)){c[g>>2]=0;g=c[g>>2]|0;i=h;return g|0}c[e>>2]=a[26274+((a[f>>0]|0)-97)>>0];if((c[e>>2]|0)<2){c[g>>2]=c[e>>2];g=c[g>>2]|0;i=h;return g|0}if(!(a[(c[d>>2]|0)+1>>0]|0))d=1;else d=(lq((c[d>>2]|0)+1|0)|0)!=0;c[g>>2]=d&1;g=c[g>>2]|0;i=h;return g|0}function nq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+28|0;h=q+24|0;j=q+20|0;k=q+16|0;p=q+12|0;m=q+8|0;o=q+4|0;l=q+32|0;n=q;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[p>>2]=Id(132)|0;if(!(c[p>>2]|0)){c[g>>2]=7;p=c[g>>2]|0;i=q;return p|0}kR(c[p>>2]|0,0,132)|0;a:do if((c[h>>2]|0)>1){c[o>>2]=BQ(c[(c[j>>2]|0)+4>>2]|0)|0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[o>>2]|0))break a;a[l>>0]=a[(c[(c[j>>2]|0)+4>>2]|0)+(c[m>>2]|0)>>0]|0;if((d[l>>0]|0|0)>=128)break;a[(c[p>>2]|0)+4+(d[l>>0]|0)>>0]=1;c[m>>2]=(c[m>>2]|0)+1}Kd(c[p>>2]|0);c[g>>2]=1;p=c[g>>2]|0;i=q;return p|0}else{c[n>>2]=1;while(1){if((c[n>>2]|0)>=128)break a;f=(tq(c[n>>2]|0)|0)!=0^1;a[(c[p>>2]|0)+4+(c[n>>2]|0)>>0]=f?-1:0;c[n>>2]=(c[n>>2]|0)+1}}while(0);c[c[k>>2]>>2]=c[p>>2];c[g>>2]=0;p=c[g>>2]|0;i=q;return p|0}function oq(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[d>>2]|0);i=b;return 0}function pq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+20|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[l+16>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=Id(28)|0;if(!(c[k>>2]|0)){c[f>>2]=7;e=c[f>>2]|0;i=l;return e|0}c[(c[k>>2]|0)+4>>2]=c[g>>2];do if(c[g>>2]|0)if((c[h>>2]|0)<0){e=BQ(c[g>>2]|0)|0;c[(c[k>>2]|0)+8>>2]=e;break}else{c[(c[k>>2]|0)+8>>2]=c[h>>2];break}else c[(c[k>>2]|0)+8>>2]=0;while(0);c[(c[k>>2]|0)+12>>2]=0;c[(c[k>>2]|0)+16>>2]=0;c[(c[k>>2]|0)+20>>2]=0;c[(c[k>>2]|0)+24>>2]=0;c[c[j>>2]>>2]=c[k>>2];c[f>>2]=0;e=c[f>>2]|0;i=l;return e|0}function qq(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Kd(c[(c[d>>2]|0)+20>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function rq(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+64|0;n=z+52|0;A=z+48|0;o=z+44|0;p=z+40|0;q=z+36|0;r=z+32|0;s=z+28|0;t=z+24|0;l=z+20|0;y=z+16|0;w=z+12|0;v=z+8|0;x=z+4|0;k=z;u=z+56|0;c[A>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=c[A>>2];c[l>>2]=c[c[A>>2]>>2];c[y>>2]=c[(c[t>>2]|0)+4>>2];do{if((c[(c[t>>2]|0)+12>>2]|0)>=(c[(c[t>>2]|0)+8>>2]|0)){m=25;break}while(1){if((c[(c[t>>2]|0)+12>>2]|0)<(c[(c[t>>2]|0)+8>>2]|0))b=(sq(c[l>>2]|0,a[(c[y>>2]|0)+(c[(c[t>>2]|0)+12>>2]|0)>>0]|0)|0)!=0;else b=0;h=(c[t>>2]|0)+12|0;j=c[h>>2]|0;if(!b)break;c[h>>2]=j+1}c[w>>2]=j;while(1){if((c[(c[t>>2]|0)+12>>2]|0)<(c[(c[t>>2]|0)+8>>2]|0))b=(sq(c[l>>2]|0,a[(c[y>>2]|0)+(c[(c[t>>2]|0)+12>>2]|0)>>0]|0)|0)!=0^1;else b=0;h=(c[t>>2]|0)+12|0;j=c[h>>2]|0;if(!b)break;c[h>>2]=j+1}}while((j|0)<=(c[w>>2]|0));if((m|0)==25){c[n>>2]=101;A=c[n>>2]|0;i=z;return A|0}c[x>>2]=(c[(c[t>>2]|0)+12>>2]|0)-(c[w>>2]|0);do if((c[x>>2]|0)>(c[(c[t>>2]|0)+24>>2]|0)){c[(c[t>>2]|0)+24>>2]=(c[x>>2]|0)+20;c[k>>2]=Ld(c[(c[t>>2]|0)+20>>2]|0,c[(c[t>>2]|0)+24>>2]|0)|0;if(c[k>>2]|0){c[(c[t>>2]|0)+20>>2]=c[k>>2]; -break}c[n>>2]=7;A=c[n>>2]|0;i=z;return A|0}while(0);c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[x>>2]|0))break;a[u>>0]=a[(c[y>>2]|0)+((c[w>>2]|0)+(c[v>>2]|0))>>0]|0;if((d[u>>0]|0|0)>=65?(d[u>>0]|0|0)<=90:0)b=(d[u>>0]|0)-65+97|0;else b=d[u>>0]|0;a[(c[(c[t>>2]|0)+20>>2]|0)+(c[v>>2]|0)>>0]=b;c[v>>2]=(c[v>>2]|0)+1}c[c[o>>2]>>2]=c[(c[t>>2]|0)+20>>2];c[c[p>>2]>>2]=c[x>>2];c[c[q>>2]>>2]=c[w>>2];c[c[r>>2]>>2]=c[(c[t>>2]|0)+12>>2];y=(c[t>>2]|0)+16|0;A=c[y>>2]|0;c[y>>2]=A+1;c[c[s>>2]>>2]=A;c[n>>2]=0;A=c[n>>2]|0;i=z;return A|0}function sq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h;g=h+4|0;c[f>>2]=b;a[g>>0]=e;if((d[g>>0]|0)>=128){b=0;b=b&1;i=h;return b|0}b=(a[(c[f>>2]|0)+4+(d[g>>0]|0)>>0]|0)!=0;b=b&1;i=h;return b|0}function tq(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!((c[b>>2]|0)>=48&(c[b>>2]|0)<=57)?!((c[b>>2]|0)>=65&(c[b>>2]|0)<=90):0)b=(c[b>>2]|0)>=97?(c[b>>2]|0)<=122:0;else b=1;i=d;return b&1|0}function uq(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+64|0;t=w;h=w+56|0;j=w+52|0;k=w+44|0;l=w+40|0;m=w+36|0;n=w+32|0;u=w+28|0;v=w+24|0;p=w+20|0;q=w+16|0;o=w+12|0;s=w+8|0;r=w+4|0;c[j>>2]=a;c[w+48>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;do if(!((c[k>>2]|0)!=4&(c[k>>2]|0)!=5)){c[u>>2]=c[(c[l>>2]|0)+4>>2];c[p>>2]=BQ(c[u>>2]|0)|0;if((c[k>>2]|0)==5){if((c[p>>2]|0)!=4)break;if(zd(19536,c[u>>2]|0,4)|0)break;c[u>>2]=c[(c[l>>2]|0)+12>>2];c[p>>2]=BQ(c[u>>2]|0)|0;c[v>>2]=c[(c[l>>2]|0)+16>>2]}else c[v>>2]=c[(c[l>>2]|0)+12>>2];c[q>>2]=BQ(c[v>>2]|0)|0;c[s>>2]=ff(c[j>>2]|0,26310)|0;if(c[s>>2]|0){c[h>>2]=c[s>>2];v=c[h>>2]|0;i=w;return v|0}c[o>>2]=296+(c[p>>2]|0)+(c[q>>2]|0)+2;c[r>>2]=Id(c[o>>2]|0)|0;if(c[r>>2]|0){kR(c[r>>2]|0,0,c[o>>2]|0)|0;c[(c[r>>2]|0)+12>>2]=(c[r>>2]|0)+16;c[(c[(c[r>>2]|0)+12>>2]|0)+16>>2]=(c[(c[r>>2]|0)+12>>2]|0)+280;c[(c[(c[r>>2]|0)+12>>2]|0)+20>>2]=(c[(c[(c[r>>2]|0)+12>>2]|0)+16>>2]|0)+((c[p>>2]|0)+1);c[(c[(c[r>>2]|0)+12>>2]|0)+12>>2]=c[j>>2];c[(c[(c[r>>2]|0)+12>>2]|0)+248>>2]=1;iR(c[(c[(c[r>>2]|0)+12>>2]|0)+16>>2]|0,c[u>>2]|0,c[p>>2]|0)|0;iR(c[(c[(c[r>>2]|0)+12>>2]|0)+20>>2]|0,c[v>>2]|0,c[q>>2]|0)|0;Ik(c[(c[(c[r>>2]|0)+12>>2]|0)+20>>2]|0);c[c[m>>2]>>2]=c[r>>2];c[h>>2]=0;v=c[h>>2]|0;i=w;return v|0}else{c[h>>2]=7;v=c[h>>2]|0;i=w;return v|0}}while(0);zk(c[n>>2]|0,26379,t);c[h>>2]=1;v=c[h>>2]|0;i=w;return v|0}function vq(b,e){b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;k=q+32|0;f=q+28|0;l=q+24|0;m=q+20|0;o=q+16|0;n=q+12|0;p=q+8|0;j=q+4|0;g=q;c[q+36>>2]=b;c[k>>2]=e;c[l>>2]=-1;c[m>>2]=-1;c[o>>2]=-1;c[n>>2]=-1;c[p>>2]=1;if(((c[(c[k>>2]|0)+8>>2]|0)==1?(c[c[(c[k>>2]|0)+12>>2]>>2]|0)==0:0)?(d[(c[(c[k>>2]|0)+12>>2]|0)+4>>0]|0)==0:0)c[(c[k>>2]|0)+32>>2]=1;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[k>>2]>>2]|0))break;if(a[(c[(c[k>>2]|0)+4>>2]|0)+((c[f>>2]|0)*12|0)+5>>0]|0){c[j>>2]=d[(c[(c[k>>2]|0)+4>>2]|0)+((c[f>>2]|0)*12|0)+4>>0];c[g>>2]=c[(c[(c[k>>2]|0)+4>>2]|0)+((c[f>>2]|0)*12|0)>>2];if(!(c[g>>2]|0)){if((c[j>>2]|0)==2)c[l>>2]=c[f>>2];if((c[j>>2]|0)==16)c[o>>2]=c[f>>2];if((c[j>>2]|0)==8)c[o>>2]=c[f>>2];if((c[j>>2]|0)==4)c[m>>2]=c[f>>2];if((c[j>>2]|0)==32)c[m>>2]=c[f>>2]}if((c[g>>2]|0)==4&(c[j>>2]|0)==2)c[n>>2]=c[f>>2]}c[f>>2]=(c[f>>2]|0)+1}f=(c[k>>2]|0)+20|0;if((c[l>>2]|0)<0){c[f>>2]=0;h[(c[k>>2]|0)+40>>3]=2.0e4;if((c[m>>2]|0)>=0){l=(c[k>>2]|0)+20|0;c[l>>2]=(c[l>>2]|0)+2;l=c[p>>2]|0;c[p>>2]=l+1;c[(c[(c[k>>2]|0)+16>>2]|0)+(c[m>>2]<<3)>>2]=l;m=(c[k>>2]|0)+40|0;h[m>>3]=+h[m>>3]/2.0}if((c[o>>2]|0)>=0){m=(c[k>>2]|0)+20|0;c[m>>2]=(c[m>>2]|0)+4;m=c[p>>2]|0;c[p>>2]=m+1;c[(c[(c[k>>2]|0)+16>>2]|0)+(c[o>>2]<<3)>>2]=m;o=(c[k>>2]|0)+40|0;h[o>>3]=+h[o>>3]/2.0}}else{c[f>>2]=1;o=c[p>>2]|0;c[p>>2]=o+1;c[(c[(c[k>>2]|0)+16>>2]|0)+(c[l>>2]<<3)>>2]=o;h[(c[k>>2]|0)+40>>3]=5.0}if((c[n>>2]|0)<0){i=q;return 0}o=c[p>>2]|0;c[p>>2]=o+1;c[(c[(c[k>>2]|0)+16>>2]|0)+(c[n>>2]<<3)>>2]=o;p=(c[k>>2]|0)+40|0;h[p>>3]=+h[p>>3]+-1.0;i=q;return 0}function wq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+12|0;d=f+8|0;e=f+4|0;b=f;c[g>>2]=a;c[d>>2]=c[g>>2];c[e>>2]=c[(c[d>>2]|0)+12>>2];c[b>>2]=0;while(1){if((c[b>>2]|0)>=40)break;Yd(c[(c[e>>2]|0)+56+(c[b>>2]<<2)>>2]|0)|0;c[b>>2]=(c[b>>2]|0)+1}Kd(c[(c[e>>2]|0)+240>>2]|0);Kd(c[d>>2]|0);i=f;return 0}function xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+12|0;e=g+4|0;f=g;c[g+8>>2]=a;c[e>>2]=b;c[f>>2]=Id(120)|0;if(c[f>>2]|0){a=c[f>>2]|0;b=a+120|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));c[c[e>>2]>>2]=c[f>>2];c[d>>2]=0;f=c[d>>2]|0;i=g;return f|0}else{c[d>>2]=7;f=c[d>>2]|0;i=g;return f|0}return 0}function yq(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;f=b+8|0;e=b+4|0;d=b;c[f>>2]=a;c[e>>2]=c[(c[c[f>>2]>>2]|0)+12>>2];c[d>>2]=c[f>>2];sm(c[e>>2]|0);vl((c[d>>2]|0)+4|0);Kd(c[(c[d>>2]|0)+60>>2]|0);Kd(c[(c[d>>2]|0)+76>>2]|0);Kd(c[(c[d>>2]|0)+112>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function zq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+80|0;x=z+8|0;w=z;g=z+76|0;h=z+72|0;j=z+68|0;k=z+60|0;l=z+56|0;t=z+52|0;u=z+48|0;v=z+44|0;s=z+40|0;o=z+36|0;m=z+32|0;n=z+28|0;q=z+24|0;p=z+20|0;r=z+16|0;y=z+12|0;c[h>>2]=a;c[j>>2]=b;c[z+64>>2]=d;c[k>>2]=e;c[l>>2]=f;c[t>>2]=c[h>>2];c[u>>2]=c[(c[c[h>>2]>>2]|0)+12>>2];c[s>>2]=0;c[o>>2]=0;c[m>>2]=-1;c[n>>2]=-1;c[q>>2]=-1;c[p>>2]=-1;c[r>>2]=0;if((c[j>>2]|0)!=1){c[s>>2]=1;if(c[j>>2]&2){a=c[r>>2]|0;c[r>>2]=a+1;c[n>>2]=a}if(c[j>>2]&4){a=c[r>>2]|0;c[r>>2]=a+1;c[q>>2]=a}}else{a=c[r>>2]|0;c[r>>2]=a+1;c[m>>2]=a}if((c[r>>2]|0)<(c[k>>2]|0)){a=c[r>>2]|0;c[r>>2]=a+1;c[p>>2]=a}vl((c[t>>2]|0)+4|0);Kd(c[(c[t>>2]|0)+60>>2]|0);Kd(c[(c[t>>2]|0)+112>>2]|0);kR((c[t>>2]|0)+4|0,0,(c[t>>2]|0)+120-((c[t>>2]|0)+4)|0)|0;c[(c[t>>2]|0)+60+12>>2]=3;if(c[s>>2]|0){a=(c[t>>2]|0)+60+12|0;c[a>>2]=c[a>>2]|16}if(((c[m>>2]|0)>=0|(c[n>>2]|0)>=0?(c[y>>2]=ae(c[c[l>>2]>>2]|0)|0,(c[y>>2]|0)!=0):0)?(c[w>>2]=c[y>>2],y=Od(19255,w)|0,c[(c[t>>2]|0)+60>>2]=y,y=be(c[c[l>>2]>>2]|0)|0,c[(c[t>>2]|0)+60+4>>2]=y,(c[(c[t>>2]|0)+60>>2]|0)==0):0){c[g>>2]=7;y=c[g>>2]|0;i=z;return y|0}if((c[q>>2]|0)>=0?(c[x>>2]=ae(c[(c[l>>2]|0)+(c[q>>2]<<2)>>2]|0)|0,y=Od(19255,x)|0,c[(c[t>>2]|0)+76>>2]=y,y=be(c[(c[l>>2]|0)+(c[q>>2]<<2)>>2]|0)|0,c[(c[t>>2]|0)+80>>2]=y,(c[(c[t>>2]|0)+76>>2]|0)==0):0){c[g>>2]=7;y=c[g>>2]|0;i=z;return y|0}if((c[p>>2]|0)>=0){y=de(c[(c[l>>2]|0)+(c[p>>2]<<2)>>2]|0)|0;c[o>>2]=y;c[o>>2]=(c[o>>2]|0)<0?0:y}c[(c[t>>2]|0)+84>>2]=c[o>>2];c[v>>2]=kl(c[u>>2]|0,c[o>>2]|0,0,-2,c[(c[t>>2]|0)+60>>2]|0,c[(c[t>>2]|0)+60+4>>2]|0,0,c[s>>2]|0,(c[t>>2]|0)+4|0)|0;if(!(c[v>>2]|0))c[v>>2]=ol(c[u>>2]|0,(c[t>>2]|0)+4|0,(c[t>>2]|0)+60|0)|0;if(!(c[v>>2]|0))c[v>>2]=Aq(c[h>>2]|0)|0;c[g>>2]=c[v>>2];y=c[g>>2]|0;i=z;return y|0}function Aq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+64|0;d=q+52|0;r=q+48|0;m=q+44|0;b=q+40|0;n=q+36|0;g=q+32|0;l=q+28|0;e=q+24|0;h=q+20|0;f=q+16|0;k=q+12|0;j=q+8|0;o=q;c[r>>2]=a;c[m>>2]=c[r>>2];c[b>>2]=c[(c[c[r>>2]>>2]|0)+12>>2];a=(c[m>>2]|0)+96|0;r=a;r=gR(c[r>>2]|0,c[r+4>>2]|0,1,0)|0;c[a>>2]=r;c[a+4>>2]=C;a=(c[m>>2]|0)+104|0;c[a>>2]=(c[a>>2]|0)+1;while(1){if((c[(c[m>>2]|0)+104>>2]|0)>=(c[(c[m>>2]|0)+108>>2]|0))break;r=(c[(c[m>>2]|0)+112>>2]|0)+(c[(c[m>>2]|0)+104>>2]<<4)|0;a=c[r+4>>2]|0;if((a|0)>0|(a|0)==0&(c[r>>2]|0)>>>0>0){p=4;break}r=(c[m>>2]|0)+104|0;c[r>>2]=(c[r>>2]|0)+1}if((p|0)==4){c[d>>2]=0;r=c[d>>2]|0;i=q;return r|0}c[n>>2]=pl(c[b>>2]|0,(c[m>>2]|0)+4|0)|0;do if((c[n>>2]|0)==100){c[g>>2]=0;c[l>>2]=c[(c[m>>2]|0)+4+52>>2];c[e>>2]=c[(c[m>>2]|0)+4+48>>2];c[f>>2]=0;do if(c[(c[m>>2]|0)+76>>2]|0){a=c[m>>2]|0;if((c[(c[m>>2]|0)+80>>2]|0)<(c[(c[m>>2]|0)+4+44>>2]|0))a=c[a+80>>2]|0;else a=c[a+4+44>>2]|0;c[k>>2]=a;c[j>>2]=vQ(c[(c[m>>2]|0)+76>>2]|0,c[(c[m>>2]|0)+4+40>>2]|0,c[k>>2]|0)|0;if((c[j>>2]|0)>=0){if(c[j>>2]|0)break;if((c[(c[m>>2]|0)+4+44>>2]|0)<=(c[(c[m>>2]|0)+80>>2]|0))break}c[(c[m>>2]|0)+88>>2]=1;c[d>>2]=0;r=c[d>>2]|0;i=q;return r|0}while(0);if(Eq(c[m>>2]|0,2)|0){c[d>>2]=7;r=c[d>>2]|0;i=q;return r|0}kR(c[(c[m>>2]|0)+112>>2]|0,0,c[(c[m>>2]|0)+108>>2]<<4|0)|0;c[h>>2]=0;a:while(1){if((c[g>>2]|0)>=(c[l>>2]|0)){p=32;break}r=o;c[r>>2]=0;c[r+4>>2]=0;r=Ul((c[e>>2]|0)+(c[g>>2]|0)|0,o)|0;c[g>>2]=(c[g>>2]|0)+r;switch(c[f>>2]|0){case 0:{r=c[(c[m>>2]|0)+112>>2]|0;k=r;c[r>>2]=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[r+4>>2]=C;c[f>>2]=1;c[h>>2]=0;continue a}case 1:{r=o;k=c[r+4>>2]|0;if((k|0)>0|(k|0)==0&(c[r>>2]|0)>>>0>1){r=(c[(c[m>>2]|0)+112>>2]|0)+16|0;k=r;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[r>>2]=k;c[r+4>>2]=C}c[f>>2]=2;break}case 2:break;default:{c[h>>2]=c[o>>2];if(Eq(c[m>>2]|0,(c[h>>2]|0)+2|0)|0)break a;r=(c[(c[m>>2]|0)+112>>2]|0)+((c[h>>2]|0)+1<<4)|0;k=r;c[r>>2]=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[r+4>>2]=C;c[f>>2]=2;continue a}}r=o;if((c[r>>2]|0)==0&(c[r+4>>2]|0)==0){c[f>>2]=0;continue}r=o;if((c[r>>2]|0)==1&(c[r+4>>2]|0)==0){c[f>>2]=3;continue}else{r=(c[(c[m>>2]|0)+112>>2]|0)+((c[h>>2]|0)+1<<4)+8|0;k=r;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[r>>2]=k;c[r+4>>2]=C;r=(c[(c[m>>2]|0)+112>>2]|0)+8|0;k=r;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[r>>2]=k;c[r+4>>2]=C;continue}}if((p|0)==32){c[(c[m>>2]|0)+104>>2]=0;c[n>>2]=0;break}c[d>>2]=7;r=c[d>>2]|0;i=q;return r|0}else c[(c[m>>2]|0)+88>>2]=1;while(0);c[d>>2]=c[n>>2];r=c[d>>2]|0;i=q;return r|0}function Bq(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];i=d;return c[(c[b>>2]|0)+88>>2]|0}function Cq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;j=g+12|0;e=g+8|0;h=g+4|0;f=g;c[j>>2]=a;c[e>>2]=b;c[h>>2]=d;c[f>>2]=c[j>>2];switch(c[h>>2]|0){case 0:{ne(c[e>>2]|0,c[(c[f>>2]|0)+4+40>>2]|0,c[(c[f>>2]|0)+4+44>>2]|0,-1);i=g;return 0}case 1:{e=c[e>>2]|0;if(c[(c[f>>2]|0)+104>>2]|0){ke(e,(c[(c[f>>2]|0)+104>>2]|0)-1|0);i=g;return 0}else{ne(e,26308,-1,0);i=g;return 0}}case 2:{j=(c[(c[f>>2]|0)+112>>2]|0)+(c[(c[f>>2]|0)+104>>2]<<4)|0;le(c[e>>2]|0,c[j>>2]|0,c[j+4>>2]|0);i=g;return 0}case 3:{j=(c[(c[f>>2]|0)+112>>2]|0)+(c[(c[f>>2]|0)+104>>2]<<4)+8|0;le(c[e>>2]|0,c[j>>2]|0,c[j+4>>2]|0);i=g;return 0}default:{ke(c[e>>2]|0,c[(c[f>>2]|0)+84>>2]|0);i=g;return 0}}return 0}function Dq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=c[g>>2];e=(c[e>>2]|0)+96|0;a=c[e+4>>2]|0;b=c[f>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=a;i=d;return 0}function Eq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;do if((c[f>>2]|0)>(c[(c[e>>2]|0)+108>>2]|0)){c[g>>2]=Ld(c[(c[e>>2]|0)+112>>2]|0,c[f>>2]<<4)|0;if(c[g>>2]|0){kR((c[g>>2]|0)+(c[(c[e>>2]|0)+108>>2]<<4)|0,0,(c[f>>2]|0)-(c[(c[e>>2]|0)+108>>2]|0)<<4|0)|0;c[(c[e>>2]|0)+112>>2]=c[g>>2];c[(c[e>>2]|0)+108>>2]=c[f>>2];break}c[d>>2]=7;a=c[d>>2]|0;i=h;return a|0}while(0);c[d>>2]=0;a=c[d>>2]|0;i=h;return a|0}function Fq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;e=p+32|0;f=p+28|0;g=p+24|0;h=p+20|0;l=p+16|0;j=p+12|0;m=p+8|0;n=p+4|0;k=p;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[m>>2]=0;c[l>>2]=Id(16)|0;if(!(c[l>>2]|0)){c[e>>2]=7;o=c[e>>2]|0;i=p;return o|0}d=c[l>>2]|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[(c[l>>2]|0)+4>>2]=1;c[j>>2]=0;while(1){if(c[m>>2]|0)break;if((c[j>>2]|0)>=(c[f>>2]|0))break;c[n>>2]=c[(c[g>>2]|0)+(c[j>>2]<<2)>>2];c[k>>2]=BQ(c[n>>2]|0)|0;if((c[k>>2]|0)==19?(vQ(26585,c[n>>2]|0,19)|0)==0:0)c[(c[l>>2]|0)+4>>2]=1;else o=9;do if((o|0)==9){o=0;if((c[k>>2]|0)==19?(vQ(26605,c[n>>2]|0,19)|0)==0:0){c[(c[l>>2]|0)+4>>2]=0;break}if((c[k>>2]|0)>=11?(vQ(26625,c[n>>2]|0,11)|0)==0:0){c[m>>2]=Qq(c[l>>2]|0,1,(c[n>>2]|0)+11|0,(c[k>>2]|0)-11|0)|0;break}if((c[k>>2]|0)>=11?(vQ(26637,c[n>>2]|0,11)|0)==0:0){c[m>>2]=Qq(c[l>>2]|0,0,(c[n>>2]|0)+11|0,(c[k>>2]|0)-11|0)|0;break}c[m>>2]=1}while(0);c[j>>2]=(c[j>>2]|0)+1}if(c[m>>2]|0){Gq(c[l>>2]|0)|0;c[l>>2]=0}c[c[h>>2]>>2]=c[l>>2];c[e>>2]=c[m>>2];o=c[e>>2]|0;i=p;return o|0}function Gq(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(c[b>>2]|0)){i=e;return 0}c[d>>2]=c[b>>2];Kd(c[(c[d>>2]|0)+12>>2]|0);Kd(c[d>>2]|0);i=e;return 0}function Hq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+20|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[l+16>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=Id(28)|0;if(!(c[k>>2]|0)){c[f>>2]=7;e=c[f>>2]|0;i=l;return e|0}e=c[k>>2]|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[(c[k>>2]|0)+4>>2]=c[g>>2];do if(c[g>>2]|0)if((c[h>>2]|0)<0){e=BQ(c[g>>2]|0)|0;c[(c[k>>2]|0)+8>>2]=e;break}else{c[(c[k>>2]|0)+8>>2]=c[h>>2];break}else c[(c[k>>2]|0)+8>>2]=0;while(0);c[c[j>>2]>>2]=c[k>>2];c[f>>2]=0;e=c[f>>2]|0;i=l;return e|0}function Iq(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Kd(c[(c[d>>2]|0)+20>>2]|0);Kd(c[d>>2]|0);i=b;return 0}function Jq(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=i;i=i+80|0;p=A+64|0;B=A+60|0;q=A+56|0;r=A+52|0;s=A+48|0;t=A+44|0;u=A+40|0;v=A+36|0;m=A+32|0;k=A+28|0;y=A+24|0;w=A+20|0;z=A+16|0;x=A+12|0;o=A+8|0;l=A+4|0;n=A;c[B>>2]=b;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=j;c[v>>2]=c[B>>2];c[m>>2]=c[c[v>>2]>>2];c[k>>2]=0;c[w>>2]=(c[(c[v>>2]|0)+4>>2]|0)+(c[(c[v>>2]|0)+12>>2]|0);c[z>>2]=c[w>>2];c[o>>2]=(c[(c[v>>2]|0)+4>>2]|0)+(c[(c[v>>2]|0)+8>>2]|0);while(1){if((c[w>>2]|0)>>>0>=(c[o>>2]|0)>>>0)break;B=c[w>>2]|0;c[w>>2]=B+1;c[k>>2]=d[B>>0];do if((c[k>>2]|0)>=192){c[k>>2]=d[26420+((c[k>>2]|0)-192)>>0];while(1){if((c[w>>2]|0)!=(c[o>>2]|0))b=((d[c[w>>2]>>0]|0)&192|0)==128;else b=0;e=c[k>>2]|0;if(!b)break;B=c[w>>2]|0;c[w>>2]=B+1;c[k>>2]=(e<<6)+(63&(d[B>>0]|0))}if(((e|0)>=128?(c[k>>2]&-2048|0)!=55296:0)?(c[k>>2]&-2|0)!=65534:0)break;c[k>>2]=65533}while(0);if(Kq(c[m>>2]|0,c[k>>2]|0)|0)break;c[z>>2]=c[w>>2]}if((c[z>>2]|0)>>>0>=(c[o>>2]|0)>>>0){c[p>>2]=101;B=c[p>>2]|0;i=A;return B|0}c[y>>2]=c[(c[v>>2]|0)+20>>2];while(1){if(((c[y>>2]|0)-(c[(c[v>>2]|0)+20>>2]|0)|0)>=((c[(c[v>>2]|0)+24>>2]|0)-4|0)){c[n>>2]=Ld(c[(c[v>>2]|0)+20>>2]|0,(c[(c[v>>2]|0)+24>>2]|0)+64|0)|0;if(!(c[n>>2]|0)){b=20;break}c[y>>2]=(c[n>>2]|0)+((c[y>>2]|0)-(c[(c[v>>2]|0)+20>>2]|0));c[(c[v>>2]|0)+20>>2]=c[n>>2];B=(c[v>>2]|0)+24|0;c[B>>2]=(c[B>>2]|0)+64}c[x>>2]=c[w>>2];c[l>>2]=Lq(c[k>>2]|0,c[(c[m>>2]|0)+4>>2]|0)|0;do if(c[l>>2]|0){b=c[l>>2]|0;if((c[l>>2]|0)<128){B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=b;break}e=c[l>>2]|0;if((b|0)<2048){f=c[y>>2]|0;c[y>>2]=f+1;a[f>>0]=192+(e>>6&31);f=128+(c[l>>2]&63)&255;B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=f;break}b=c[l>>2]|0;if((e|0)<65536){B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=224+(b>>12&15);B=128+(c[l>>2]>>6&63)&255;f=c[y>>2]|0;c[y>>2]=f+1;a[f>>0]=B;f=128+(c[l>>2]&63)&255;B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=f;break}else{f=c[y>>2]|0;c[y>>2]=f+1;a[f>>0]=240+(b>>18&7);f=128+(c[l>>2]>>12&63)&255;B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=f;B=128+(c[l>>2]>>6&63)&255;f=c[y>>2]|0;c[y>>2]=f+1;a[f>>0]=B;f=128+(c[l>>2]&63)&255;B=c[y>>2]|0;c[y>>2]=B+1;a[B>>0]=f;break}}while(0);if((c[w>>2]|0)>>>0>=(c[o>>2]|0)>>>0){b=43;break}B=c[w>>2]|0;c[w>>2]=B+1;c[k>>2]=d[B>>0];do if((c[k>>2]|0)>=192){c[k>>2]=d[26420+((c[k>>2]|0)-192)>>0];while(1){if((c[w>>2]|0)!=(c[o>>2]|0))e=((d[c[w>>2]>>0]|0)&192|0)==128;else e=0;b=c[k>>2]|0;if(!e)break;B=c[w>>2]|0;c[w>>2]=B+1;c[k>>2]=(b<<6)+(63&(d[B>>0]|0))}if(((b|0)>=128?(c[k>>2]&-2048|0)!=55296:0)?(c[k>>2]&-2|0)!=65534:0)break;c[k>>2]=65533}while(0);if(Kq(c[m>>2]|0,c[k>>2]|0)|0)continue;if(!(Mq(c[k>>2]|0)|0)){b=43;break}}if((b|0)==20){c[p>>2]=7;B=c[p>>2]|0;i=A;return B|0}else if((b|0)==43){c[(c[v>>2]|0)+12>>2]=(c[w>>2]|0)-(c[(c[v>>2]|0)+4>>2]|0);c[c[q>>2]>>2]=c[(c[v>>2]|0)+20>>2];c[c[r>>2]>>2]=(c[y>>2]|0)-(c[(c[v>>2]|0)+20>>2]|0);c[c[s>>2]>>2]=(c[z>>2]|0)-(c[(c[v>>2]|0)+4>>2]|0);c[c[t>>2]>>2]=(c[x>>2]|0)-(c[(c[v>>2]|0)+4>>2]|0);z=(c[v>>2]|0)+16|0;B=c[z>>2]|0;c[z>>2]=B+1;c[c[u>>2]>>2]=B;c[p>>2]=0;B=c[p>>2]|0;i=A;return B|0}return 0}function Kq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Oq(c[e>>2]|0)|0;a=a^(Pq(c[f>>2]|0,c[e>>2]|0)|0);i=d;return a|0}function Lq(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;f=p+32|0;g=p+28|0;o=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;h=p+4|0;n=p;c[f>>2]=a;c[g>>2]=b;c[o>>2]=c[f>>2];b=c[f>>2]|0;if((c[f>>2]|0)<128){if(!((b|0)>=65&(c[f>>2]|0)<=90)){o=c[o>>2]|0;i=p;return o|0}c[o>>2]=(c[f>>2]|0)+32;o=c[o>>2]|0;i=p;return o|0}if((b|0)>=65536){if(!((c[f>>2]|0)>=66560&(c[f>>2]|0)<66600)){o=c[o>>2]|0;i=p;return o|0}c[o>>2]=(c[f>>2]|0)+40;o=c[o>>2]|0;i=p;return o|0}c[j>>2]=162;c[k>>2]=0;c[l>>2]=-1;while(1){if((c[j>>2]|0)<(c[k>>2]|0))break;c[m>>2]=((c[j>>2]|0)+(c[k>>2]|0)|0)/2|0;c[h>>2]=(c[f>>2]|0)-(e[10902+(c[m>>2]<<2)>>1]|0);b=c[m>>2]|0;if((c[h>>2]|0)>=0){c[l>>2]=b;c[k>>2]=(c[m>>2]|0)+1;continue}else{c[j>>2]=b-1;continue}}if(((c[l>>2]|0)>=0?(c[n>>2]=10902+(c[l>>2]<<2),(c[f>>2]|0)<((e[c[n>>2]>>1]|0)+(d[(c[n>>2]|0)+3>>0]|0)|0)):0)?0==(1&(d[(c[n>>2]|0)+2>>0]|0)&((e[c[n>>2]>>1]|0)^c[f>>2])|0):0)c[o>>2]=(c[f>>2]|0)+(e[11554+((d[(c[n>>2]|0)+2>>0]|0)>>1<<1)>>1]|0)&65535;if(!(c[g>>2]|0)){o=c[o>>2]|0;i=p;return o|0}c[o>>2]=Nq(c[o>>2]|0)|0;o=c[o>>2]|0;i=p;return o|0}function Mq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+12|0;b=g+8|0;d=g+4|0;e=g;c[b>>2]=a;c[d>>2]=134389727;c[e>>2]=221688;if((c[b>>2]|0)<768|(c[b>>2]|0)>817){c[f>>2]=0;f=c[f>>2]|0;i=g;return f|0}if((c[b>>2]|0)<800)b=c[d>>2]&1<<(c[b>>2]|0)-768;else b=c[e>>2]&1<<(c[b>>2]|0)-768-32;c[f>>2]=b;f=c[f>>2]|0;i=g;return f|0}function Nq(b){b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+336|0;g=p+20|0;j=p+24|0;h=p+226|0;o=p+16|0;m=p+12|0;k=p+8|0;l=p+4|0;n=p;c[g>>2]=b;iR(j|0,11708,202)|0;b=h;d=26484;f=b+101|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(f|0));c[o>>2]=c[g>>2]<<3|7;c[m>>2]=0;c[k>>2]=100;c[l>>2]=0;while(1){if((c[k>>2]|0)<(c[l>>2]|0))break;c[n>>2]=((c[k>>2]|0)+(c[l>>2]|0)|0)/2|0;b=c[n>>2]|0;if((c[o>>2]|0)>>>0>=(e[j+(c[n>>2]<<1)>>1]|0)>>>0){c[m>>2]=b;c[l>>2]=(c[n>>2]|0)+1;continue}else{c[k>>2]=b-1;continue}}if((c[g>>2]|0)>((e[j+(c[m>>2]<<1)>>1]>>3)+(e[j+(c[m>>2]<<1)>>1]&7)|0)){o=c[g>>2]|0;i=p;return o|0}else{o=a[h+(c[m>>2]|0)>>0]|0;i=p;return o|0}return 0}function Oq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+24|0;d=k+20|0;j=k+16|0;g=k+12|0;e=k+8|0;f=k+4|0;h=k;c[d>>2]=a;a=c[d>>2]|0;if((c[d>>2]|0)<128){c[b>>2]=(c[2340+(a>>5<<2)>>2]&1<<(c[d>>2]&31)|0)==0&1;j=c[b>>2]|0;i=k;return j|0}if((a|0)>=4194304){c[b>>2]=1;j=c[b>>2]|0;i=k;return j|0}c[j>>2]=c[d>>2]<<10|1023;c[g>>2]=0;c[e>>2]=405;c[f>>2]=0;while(1){if((c[e>>2]|0)<(c[f>>2]|0))break;c[h>>2]=((c[e>>2]|0)+(c[f>>2]|0)|0)/2|0;a=c[h>>2]|0;if((c[j>>2]|0)>>>0>=(c[2356+(c[h>>2]<<2)>>2]|0)>>>0){c[g>>2]=a;c[f>>2]=(c[h>>2]|0)+1;continue}else{c[e>>2]=a-1;continue}}c[b>>2]=(c[d>>2]|0)>>>0>=(((c[2356+(c[g>>2]<<2)>>2]|0)>>>10)+(c[2356+(c[g>>2]<<2)>>2]&1023)|0)>>>0&1;j=c[b>>2]|0;i=k;return j|0}function Pq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+24|0;d=l+20|0;f=l+16|0;g=l+12|0;j=l+8|0;h=l+4|0;k=l;c[d>>2]=a;c[f>>2]=b;a:do if((c[(c[d>>2]|0)+8>>2]|0)>0){c[g>>2]=c[(c[d>>2]|0)+12>>2];c[j>>2]=0;c[h>>2]=(c[(c[d>>2]|0)+8>>2]|0)-1;while(1){if((c[h>>2]|0)<(c[j>>2]|0))break a;c[k>>2]=((c[h>>2]|0)+(c[j>>2]|0)|0)/2|0;if((c[f>>2]|0)==(c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]|0))break;d=c[k>>2]|0;if((c[f>>2]|0)>(c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]|0)){c[j>>2]=d+1;continue}else{c[h>>2]=d-1;continue}}c[e>>2]=1;k=c[e>>2]|0;i=l;return k|0}while(0);c[e>>2]=0;k=c[e>>2]|0;i=l;return k|0}function Qq(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+64|0;j=t+48|0;k=t+44|0;l=t+40|0;g=t+36|0;u=t+32|0;r=t+28|0;s=t+24|0;o=t+20|0;h=t+16|0;m=t+12|0;q=t+8|0;n=t+4|0;p=t;c[k>>2]=a;c[l>>2]=b;c[g>>2]=e;c[u>>2]=f;c[r>>2]=c[g>>2];c[s>>2]=(c[r>>2]|0)+(c[u>>2]|0);c[h>>2]=0;while(1){if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;u=c[r>>2]|0;c[r>>2]=u+1;c[o>>2]=d[u>>0];do if((c[o>>2]|0)>=192){c[o>>2]=d[26420+((c[o>>2]|0)-192)>>0];while(1){if((c[r>>2]|0)!=(c[s>>2]|0))b=((d[c[r>>2]>>0]|0)&192|0)==128;else b=0;f=c[o>>2]|0;if(!b)break;u=c[r>>2]|0;c[r>>2]=u+1;c[o>>2]=(f<<6)+(63&(d[u>>0]|0))}if(((f|0)>=128?(c[o>>2]&-2048|0)!=55296:0)?(c[o>>2]&-2|0)!=65534:0)break;c[o>>2]=65533}while(0);u=Oq(c[o>>2]|0)|0;if((u|0)==(c[l>>2]|0))continue;if(Mq(c[o>>2]|0)|0)continue;c[h>>2]=(c[h>>2]|0)+1}if(c[h>>2]|0){c[m>>2]=Ld(c[(c[k>>2]|0)+12>>2]|0,(c[(c[k>>2]|0)+8>>2]|0)+(c[h>>2]|0)<<2)|0;if(!(c[m>>2]|0)){c[j>>2]=7;u=c[j>>2]|0;i=t;return u|0}c[q>>2]=c[(c[k>>2]|0)+8>>2];c[r>>2]=c[g>>2];while(1){if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0)break;u=c[r>>2]|0;c[r>>2]=u+1;c[o>>2]=d[u>>0];do if((c[o>>2]|0)>=192){c[o>>2]=d[26420+((c[o>>2]|0)-192)>>0];while(1){if((c[r>>2]|0)!=(c[s>>2]|0))b=((d[c[r>>2]>>0]|0)&192|0)==128;else b=0;f=c[o>>2]|0;if(!b)break;u=c[r>>2]|0;c[r>>2]=u+1;c[o>>2]=(f<<6)+(63&(d[u>>0]|0))}if(((f|0)>=128?(c[o>>2]&-2048|0)!=55296:0)?(c[o>>2]&-2|0)!=65534:0)break;c[o>>2]=65533}while(0);u=Oq(c[o>>2]|0)|0;if((u|0)==(c[l>>2]|0))continue;if(Mq(c[o>>2]|0)|0)continue;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[q>>2]|0))break;if((c[(c[m>>2]|0)+(c[n>>2]<<2)>>2]|0)>=(c[o>>2]|0))break;c[n>>2]=(c[n>>2]|0)+1}c[p>>2]=c[q>>2];while(1){if((c[p>>2]|0)<=(c[n>>2]|0))break;c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]=c[(c[m>>2]|0)+((c[p>>2]|0)-1<<2)>>2];c[p>>2]=(c[p>>2]|0)+-1}c[(c[m>>2]|0)+(c[n>>2]<<2)>>2]=c[o>>2];c[q>>2]=(c[q>>2]|0)+1}c[(c[k>>2]|0)+12>>2]=c[m>>2];c[(c[k>>2]|0)+8>>2]=c[q>>2]}c[j>>2]=0;u=c[j>>2]|0;i=t;return u|0}function Rq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;f=h+4|0;g=h;c[j>>2]=a;c[e>>2]=b;c[f>>2]=d;c[g>>2]=c[(c[j>>2]|0)+4>>2];kg(c[j>>2]|0);if(!((c[e>>2]|0)!=0?(c[(c[g>>2]|0)+48>>2]|0)==0:0)){j=c[g>>2]|0;j=j+48|0;j=c[j>>2]|0;i=h;return j|0}j=c[e>>2]|0;j=ph(0,j,((j|0)<0)<<31>>31)|0;c[(c[g>>2]|0)+48>>2]=j;c[(c[g>>2]|0)+52>>2]=c[f>>2];j=c[g>>2]|0;j=j+48|0;j=c[j>>2]|0;i=h;return j|0}function Sq(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[(c[b>>2]|0)+64>>0]|0|0)==2|0}function Tq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;a[c[h>>2]>>0]=0;f=Wb[c[(c[l>>2]|0)+36>>2]&255](c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;i=g;return f|0}function Uq(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=It(c[d>>2]|0)|0;if(!(a[c[e>>2]>>0]|0)){i=f;return}a[c[e>>2]>>0]=0;if((Jt(c[d>>2]|0)|0)<=1){i=f;return}Kt(c[e>>2]|0)|0;i=f;return}function Vq(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+112|0;s=L+96|0;t=L+92|0;u=L+88|0;v=L+84|0;w=L+80|0;l=L+76|0;x=L+72|0;y=L+68|0;o=L+64|0;D=L+60|0;E=L+56|0;H=L+52|0;B=L+48|0;F=L+44|0;m=L+40|0;J=L+36|0;C=L+32|0;I=L+28|0;p=L+24|0;G=L+20|0;r=L+16|0;n=L+12|0;q=L+8|0;z=L+4|0;A=L;c[t>>2]=d;c[u>>2]=e;c[v>>2]=f;c[w>>2]=g;c[l>>2]=h;c[x>>2]=j;c[y>>2]=k;c[D>>2]=0;c[E>>2]=0;c[H>>2]=0;c[B>>2]=0;c[F>>2]=0;c[J>>2]=0;c[C>>2]=0;c[I>>2]=(c[l>>2]&1|0)==0&1;c[p>>2]=it()|0;c[G>>2]=1024;c[r>>2]=0;c[n>>2]=0;f=c[(c[t>>2]|0)+4>>2]|0;if((f|0)>(Jr()|0))c[m>>2]=(c[(c[t>>2]|0)+4>>2]|0)+7&-8;else c[m>>2]=(Jr()|0)+7&-8;c[c[u>>2]>>2]=0;do if(((c[l>>2]&2|0)!=0?(c[B>>2]=1,(c[v>>2]|0)!=0):0)?(a[c[v>>2]>>0]|0)!=0:0){c[J>>2]=nh(0,c[v>>2]|0)|0;if(c[J>>2]|0){c[C>>2]=If(c[J>>2]|0)|0;c[v>>2]=0;break}c[s>>2]=7;K=c[s>>2]|0;i=L;return K|0}while(0);if((c[v>>2]|0)!=0?(a[c[v>>2]>>0]|0)!=0:0){c[C>>2]=(c[(c[t>>2]|0)+8>>2]|0)+1;f=c[C>>2]<<1;c[J>>2]=yh(0,f,((f|0)<0)<<31>>31)|0;if(!(c[J>>2]|0)){c[s>>2]=7;K=c[s>>2]|0;i=L;return K|0}a[c[J>>2]>>0]=0;c[E>>2]=Tq(c[t>>2]|0,c[v>>2]|0,c[C>>2]|0,c[J>>2]|0)|0;c[C>>2]=If(c[J>>2]|0)|0;f=(If(c[v>>2]|0)|0)+1|0;f=(c[v>>2]|0)+f|0;c[r>>2]=f;c[q>>2]=f;while(1){l=c[q>>2]|0;if(!(a[c[q>>2]>>0]|0))break;f=(If(l)|0)+1|0;c[q>>2]=(c[q>>2]|0)+f;f=(If(c[q>>2]|0)|0)+1|0;c[q>>2]=(c[q>>2]|0)+f}c[n>>2]=l+1-(c[r>>2]|0);if((c[E>>2]|0)==0?((c[C>>2]|0)+8|0)>(c[(c[t>>2]|0)+8>>2]|0):0)c[E>>2]=et(48375)|0;if(c[E>>2]|0){Sf(0,c[J>>2]|0);c[s>>2]=c[E>>2];K=c[s>>2]|0;i=L;return K|0}}c[o>>2]=ig(224+((c[p>>2]|0)+7&-8)+((c[(c[t>>2]|0)+4>>2]|0)+7&-8)+(c[m>>2]<<1)+(c[C>>2]|0)+1+(c[n>>2]|0)+(c[C>>2]|0)+8+2+(c[C>>2]|0)+4+2|0,0)|0;if(!(c[o>>2]|0)){Sf(0,c[J>>2]|0);c[s>>2]=7;K=c[s>>2]|0;i=L;return K|0}c[D>>2]=c[o>>2];q=(c[o>>2]|0)+224|0;c[o>>2]=q;c[(c[D>>2]|0)+212>>2]=q;q=(c[o>>2]|0)+((c[p>>2]|0)+7&-8)|0;c[o>>2]=q;c[(c[D>>2]|0)+64>>2]=q;q=(c[o>>2]|0)+((c[(c[t>>2]|0)+4>>2]|0)+7&-8)|0;c[o>>2]=q;c[(c[D>>2]|0)+72>>2]=q;q=(c[o>>2]|0)+(c[m>>2]|0)|0;c[o>>2]=q;c[(c[D>>2]|0)+68>>2]=q;q=(c[o>>2]|0)+(c[m>>2]|0)|0;c[o>>2]=q;c[(c[D>>2]|0)+176>>2]=q;if(c[J>>2]|0){q=(c[o>>2]|0)+((c[C>>2]|0)+1+(c[n>>2]|0))|0;c[o>>2]=q;c[(c[D>>2]|0)+180>>2]=q;iR(c[(c[D>>2]|0)+176>>2]|0,c[J>>2]|0,c[C>>2]|0)|0;if(c[n>>2]|0)iR((c[(c[D>>2]|0)+176>>2]|0)+((c[C>>2]|0)+1)|0,c[r>>2]|0,c[n>>2]|0)|0;iR(c[(c[D>>2]|0)+180>>2]|0,c[J>>2]|0,c[C>>2]|0)|0;l=(c[(c[D>>2]|0)+180>>2]|0)+(c[C>>2]|0)|0;h=26868;g=l+10|0;do{a[l>>0]=a[h>>0]|0;l=l+1|0;h=h+1|0}while((l|0)<(g|0));c[(c[D>>2]|0)+220>>2]=(c[(c[D>>2]|0)+180>>2]|0)+((c[C>>2]|0)+8+1);iR(c[(c[D>>2]|0)+220>>2]|0,c[J>>2]|0,c[C>>2]|0)|0;C=(c[(c[D>>2]|0)+220>>2]|0)+(c[C>>2]|0)|0;a[C>>0]=a[26878]|0;a[C+1>>0]=a[26879]|0;a[C+2>>0]=a[26880]|0;a[C+3>>0]=a[26881]|0;a[C+4>>0]=a[26882]|0;Sf(0,c[J>>2]|0)}c[c[D>>2]>>2]=c[t>>2];c[(c[D>>2]|0)+152>>2]=c[x>>2];do if((c[v>>2]|0)!=0?(a[c[v>>2]>>0]|0)!=0:0){c[z>>2]=0;c[E>>2]=Vr(c[t>>2]|0,c[(c[D>>2]|0)+176>>2]|0,c[(c[D>>2]|0)+64>>2]|0,c[x>>2]|0,z)|0;c[F>>2]=c[z>>2]&1;if(!(c[E>>2]|0)){c[A>>2]=Sr(c[(c[D>>2]|0)+64>>2]|0)|0;do if((c[F>>2]|0)==0?(Rr(c[D>>2]|0),(c[G>>2]|0)>>>0<(c[(c[D>>2]|0)+156>>2]|0)>>>0):0)if((c[(c[D>>2]|0)+156>>2]|0)>>>0>8192){c[G>>2]=8192;break}else{c[G>>2]=c[(c[D>>2]|0)+156>>2];break}while(0);J=(Hf(c[v>>2]|0,26884,0)|0)&255;a[(c[D>>2]|0)+14>>0]=J;if((c[A>>2]&8192|0)==0?(Hf(c[v>>2]|0,26891,0)|0)==0:0)break;c[x>>2]=c[x>>2]|1;K=39}}else K=39;while(0);if((K|0)==39){c[H>>2]=1;a[(c[D>>2]|0)+17>>0]=1;a[(c[D>>2]|0)+18>>0]=4;a[(c[D>>2]|0)+14>>0]=1;c[F>>2]=c[x>>2]&1}if(!(c[E>>2]|0))c[E>>2]=Qi(c[D>>2]|0,G,-1)|0;if(!(c[E>>2]|0)){c[w>>2]=(c[w>>2]|0)+7&-8;c[E>>2]=kt(c[G>>2]|0,c[w>>2]|0,((c[B>>2]|0)!=0^1)&1,(c[B>>2]|0)!=0^1?186:0,c[D>>2]|0,c[(c[D>>2]|0)+212>>2]|0)|0}if(c[E>>2]|0){hr(c[(c[D>>2]|0)+64>>2]|0)|0;Wi(c[(c[D>>2]|0)+208>>2]|0);Kd(c[D>>2]|0);c[s>>2]=c[E>>2];K=c[s>>2]|0;i=L;return K|0}a[(c[D>>2]|0)+6>>0]=c[I>>2];c[(c[D>>2]|0)+164>>2]=1073741823;a[(c[D>>2]|0)+13>>0]=c[H>>2];a[(c[D>>2]|0)+4>>0]=c[H>>2];a[(c[D>>2]|0)+19>>0]=a[(c[D>>2]|0)+13>>0]|0;a[(c[D>>2]|0)+16>>0]=c[B>>2];a[(c[D>>2]|0)+15>>0]=c[F>>2];a[(c[D>>2]|0)+7>>0]=a[(c[D>>2]|0)+13>>0]|0;if(!(a[(c[D>>2]|0)+7>>0]|0)){a[(c[D>>2]|0)+8>>0]=1;a[(c[D>>2]|0)+9>>0]=0;a[(c[D>>2]|0)+12>>0]=2;a[(c[D>>2]|0)+11>>0]=34;a[(c[D>>2]|0)+10>>0]=2}b[(c[D>>2]|0)+148>>1]=c[w>>2];K=(c[D>>2]|0)+168|0;c[K>>2]=-1;c[K+4>>2]=-1;Rr(c[D>>2]|0);if(c[I>>2]|0){if(c[B>>2]|0)a[(c[D>>2]|0)+5>>0]=4}else a[(c[D>>2]|0)+5>>0]=2;c[(c[D>>2]|0)+204>>2]=c[y>>2];c[c[u>>2]>>2]=c[D>>2];c[s>>2]=0;K=c[s>>2]|0;i=L;return K|0}function Wq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;b=g;d=c[b+4>>2]|0;a=(c[f>>2]|0)+136|0;c[a>>2]=c[b>>2];c[a+4>>2]=d;Xi(c[f>>2]|0);i=e;return}function Xq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=0;kR(c[g>>2]|0,0,c[f>>2]|0)|0;if(!(c[c[(c[e>>2]|0)+64>>2]>>2]|0)){h=c[h>>2]|0;i=j;return h|0}a=Wr(c[(c[e>>2]|0)+64>>2]|0,c[g>>2]|0,c[f>>2]|0,0,0)|0;c[h>>2]=a;c[h>>2]=(c[h>>2]|0)==522?0:a;h=c[h>>2]|0;i=j;return h|0}function Yq(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];a=ht((c[(c[d>>2]|0)+4>>2]|0)+448|0)|0;i=b;return a|0}function Zq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;e=g+12|0;j=g+8|0;h=g+4|0;f=g;c[e>>2]=a;c[j>>2]=b;c[h>>2]=d;c[(c[e>>2]|0)+184>>2]=c[j>>2];c[(c[e>>2]|0)+188>>2]=c[h>>2];if(!(c[c[(c[e>>2]|0)+64>>2]>>2]|0)){i=g;return}c[f>>2]=(c[e>>2]|0)+184;Js(c[(c[e>>2]|0)+64>>2]|0,15,c[f>>2]|0);i=g;return}function _q(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;i=e;return a[(c[d>>2]|0)+15>>0]|0}function $q(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[c[b>>2]>>0]|0)<<24|(d[(c[b>>2]|0)+1>>0]|0)<<16|(d[(c[b>>2]|0)+2>>0]|0)<<8|(d[(c[b>>2]|0)+3>>0]|0)|0}function ar(b){b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=c[(c[e>>2]|0)+208>>2];Sj();br(c[e>>2]|0);a[(c[e>>2]|0)+4>>0]=0;cr(c[(c[e>>2]|0)+216>>2]|0,d[(c[e>>2]|0)+10>>0]|0,c[(c[e>>2]|0)+160>>2]|0,c[f>>2]|0)|0;c[(c[e>>2]|0)+216>>2]=0;Ui(c[e>>2]|0);b=c[e>>2]|0;if(a[(c[e>>2]|0)+16>>0]|0)dr(b);else{if(c[c[b+68>>2]>>2]|0){b=c[e>>2]|0;fr(b,er(c[e>>2]|0)|0)|0}gr(c[e>>2]|0)}Tj();hr(c[(c[e>>2]|0)+68>>2]|0)|0;hr(c[(c[e>>2]|0)+64>>2]|0)|0;Wi(c[f>>2]|0);ir(c[(c[e>>2]|0)+212>>2]|0);Kd(c[e>>2]|0);i=g;return 0}function br(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;f=e+8|0;b=e+4|0;d=e;c[f>>2]=a;c[b>>2]=c[(c[f>>2]|0)+144>>2];while(1){if(!(c[b>>2]|0))break;c[d>>2]=c[(c[b>>2]|0)+12>>2];Kd(c[b>>2]|0);c[b>>2]=c[d>>2]}i=e;return}function cr(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;o=p+8|0;n=p+4|0;m=p;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[o>>2]=0;if(!(c[h>>2]|0)){g=c[o>>2]|0;i=p;return g|0}c[n>>2]=0;c[o>>2]=Hs(c[(c[h>>2]|0)+4>>2]|0,4)|0;do if(!(c[o>>2]|0)){if(!(d[(c[h>>2]|0)+43>>0]|0))a[(c[h>>2]|0)+43>>0]=1;c[o>>2]=Is(c[h>>2]|0,0,0,0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,0,0)|0;if(!(c[o>>2]|0)){c[m>>2]=-1;Js(c[(c[h>>2]|0)+4>>2]|0,10,m);if((c[m>>2]|0)!=1){c[n>>2]=1;break}g=(c[h>>2]|0)+16|0;e=c[g+4>>2]|0;if((e|0)>0|(e|0)==0&(c[g>>2]|0)>>>0>=0)Ks(c[h>>2]|0,0,0)}}while(0);Ls(c[h>>2]|0,c[n>>2]|0);hr(c[(c[h>>2]|0)+8>>2]|0)|0;if(c[n>>2]|0){Sj();qr(c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+108>>2]|0,0)|0;Tj()}Kd(c[(c[h>>2]|0)+32>>2]|0);Kd(c[h>>2]|0);g=c[o>>2]|0;i=p;return g|0}function dr(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+8|0;g=h+4|0;f=h;c[e>>2]=b;kj(c[(c[e>>2]|0)+60>>2]|0);c[(c[e>>2]|0)+60>>2]=0;lr(c[e>>2]|0);j=(sr(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!j){if(!(a[b+4>>0]|0)){if(c[c[(c[e>>2]|0)+64>>2]>>2]|0)b=Sr(c[(c[e>>2]|0)+64>>2]|0)|0;else b=0;c[f>>2]=b;if(!(0!=(c[f>>2]&2048|0)?1==(d[(c[e>>2]|0)+5>>0]&5|0):0))hr(c[(c[e>>2]|0)+68>>2]|0)|0;c[g>>2]=wr(c[e>>2]|0,0)|0;if((c[g>>2]|0)!=0?(d[(c[e>>2]|0)+17>>0]|0)==6:0)a[(c[e>>2]|0)+18>>0]=5;a[(c[e>>2]|0)+19>>0]=0;a[(c[e>>2]|0)+17>>0]=0}}else{Gs(c[b+216>>2]|0);a[(c[e>>2]|0)+17>>0]=0}if(!(c[(c[e>>2]|0)+44>>2]|0)){j=c[e>>2]|0;j=j+80|0;g=j;c[g>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+88|0;g=j;c[g>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+20|0;a[j>>0]=0;i=h;return}Ui(c[e>>2]|0);a[(c[e>>2]|0)+19>>0]=a[(c[e>>2]|0)+13>>0]|0;a[(c[e>>2]|0)+17>>0]=0;c[(c[e>>2]|0)+44>>2]=0;j=c[e>>2]|0;j=j+80|0;g=j;c[g>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+88|0;g=j;c[g>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+20|0;a[j>>0]=0;i=h;return}function er(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=0;if(!(a[(c[d>>2]|0)+7>>0]|0))c[e>>2]=or(c[(c[d>>2]|0)+68>>2]|0,2)|0;if(c[e>>2]|0){e=c[e>>2]|0;i=f;return e|0}c[e>>2]=Si(c[(c[d>>2]|0)+68>>2]|0,(c[d>>2]|0)+88|0)|0;e=c[e>>2]|0;i=f;return e|0}function fr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;f=g+4|0;h=g;c[e>>2]=b;c[f>>2]=d;c[h>>2]=c[f>>2]&255;if(!((c[h>>2]|0)==13|(c[h>>2]|0)==10)){h=c[f>>2]|0;i=g;return h|0}c[(c[e>>2]|0)+44>>2]=c[f>>2];a[(c[e>>2]|0)+17>>0]=6;h=c[f>>2]|0;i=g;return h|0}function gr(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;do if((d[(c[e>>2]|0)+17>>0]|0)!=6?(d[(c[e>>2]|0)+17>>0]|0)!=0:0){if((d[(c[e>>2]|0)+17>>0]|0)>=2){Sj();jr(c[e>>2]|0)|0;Tj();break}if(!(a[(c[e>>2]|0)+4>>0]|0))kr(c[e>>2]|0,0,0)|0}while(0);dr(c[e>>2]|0);i=f;return}function hr(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;if(!(c[c[b>>2]>>2]|0)){d=c[d>>2]|0;i=e;return d|0}c[d>>2]=Tb[c[(c[c[b>>2]>>2]|0)+4>>2]&255](c[b>>2]|0)|0;c[c[b>>2]>>2]=0;d=c[d>>2]|0;i=e;return d|0}function ir(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Qb[c[156>>2]&255](c[(c[d>>2]|0)+44>>2]|0);i=b;return}function jr(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;h=k+8|0;j=k+4|0;g=k;c[f>>2]=b;c[h>>2]=0;b=c[f>>2]|0;if((d[(c[f>>2]|0)+17>>0]|0)==6){c[e>>2]=c[b+44>>2];j=c[e>>2]|0;i=k;return j|0}if((d[b+17>>0]|0)<=1){c[e>>2]=0;j=c[e>>2]|0;i=k;return j|0}l=(sr(c[f>>2]|0)|0)!=0;b=c[f>>2]|0;do if(l){c[h>>2]=Kr(b,2,-1)|0;c[j>>2]=kr(c[f>>2]|0,d[(c[f>>2]|0)+20>>0]|0,0)|0;if(!(c[h>>2]|0))c[h>>2]=c[j>>2]}else{if((c[c[b+68>>2]>>2]|0)!=0?(d[(c[f>>2]|0)+17>>0]|0)!=2:0){ -c[h>>2]=Lr(c[f>>2]|0,0)|0;break}c[g>>2]=d[(c[f>>2]|0)+17>>0];c[h>>2]=kr(c[f>>2]|0,0,0)|0;if((c[g>>2]|0)>2?(a[(c[f>>2]|0)+16>>0]|0)==0:0){c[(c[f>>2]|0)+44>>2]=4;a[(c[f>>2]|0)+17>>0]=6;c[e>>2]=c[h>>2];l=c[e>>2]|0;i=k;return l|0}}while(0);c[e>>2]=fr(c[f>>2]|0,c[h>>2]|0)|0;l=c[e>>2]|0;i=k;return l|0}function kr(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;m=o+8|0;n=o+4|0;l=o;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;c[n>>2]=0;if((d[(c[h>>2]|0)+17>>0]|0)<2?(d[(c[h>>2]|0)+18>>0]|0)<2:0){c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}lr(c[h>>2]|0);a:do if(c[c[(c[h>>2]|0)+68>>2]>>2]|0){b=(mr(c[(c[h>>2]|0)+68>>2]|0)|0)!=0;f=c[h>>2]|0;if(b){hr(c[f+68>>2]|0)|0;break}e=c[h>>2]|0;if((d[f+5>>0]|0)==3){l=e+80|0;if(!((c[l>>2]|0)==0&(c[l+4>>2]|0)==0)){c[m>>2]=nr(c[(c[h>>2]|0)+68>>2]|0,0,0)|0;if((c[m>>2]|0)==0?(d[(c[h>>2]|0)+8>>0]|0)!=0:0)c[m>>2]=or(c[(c[h>>2]|0)+68>>2]|0,d[(c[h>>2]|0)+12>>0]|0)|0}else c[m>>2]=0;l=(c[h>>2]|0)+80|0;c[l>>2]=0;c[l+4>>2]=0;break}else{do if((d[e+5>>0]|0)!=1){if((d[(c[h>>2]|0)+4>>0]|0)!=0?(d[(c[h>>2]|0)+5>>0]|0)!=5:0)break;c[l>>2]=((a[(c[h>>2]|0)+13>>0]|0)!=0?0:1)&1;hr(c[(c[h>>2]|0)+68>>2]|0)|0;if(!(c[l>>2]|0))break a;c[m>>2]=qr(c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+180>>2]|0,d[(c[h>>2]|0)+9>>0]|0)|0;break a}while(0);c[m>>2]=pr(c[h>>2]|0,c[j>>2]|0)|0;l=(c[h>>2]|0)+80|0;c[l>>2]=0;c[l+4>>2]=0;break}}while(0);kj(c[(c[h>>2]|0)+60>>2]|0);c[(c[h>>2]|0)+60>>2]=0;c[(c[h>>2]|0)+48>>2]=0;rr(c[(c[h>>2]|0)+212>>2]|0);aj(c[(c[h>>2]|0)+212>>2]|0,c[(c[h>>2]|0)+28>>2]|0);if(!(sr(c[h>>2]|0)|0)){if((c[m>>2]|0)==0&(c[k>>2]|0)!=0?(c[(c[h>>2]|0)+36>>2]|0)>>>0>(c[(c[h>>2]|0)+28>>2]|0)>>>0:0)c[m>>2]=ur(c[h>>2]|0,c[(c[h>>2]|0)+28>>2]|0)|0}else c[n>>2]=tr(c[(c[h>>2]|0)+216>>2]|0)|0;if((c[m>>2]|0)==0&(c[k>>2]|0)!=0?(c[c[(c[h>>2]|0)+64>>2]>>2]|0)!=0:0){l=vi(c[(c[h>>2]|0)+64>>2]|0,22,0)|0;c[m>>2]=l;c[m>>2]=(c[m>>2]|0)==12?0:l}do if(!(a[(c[h>>2]|0)+4>>0]|0)){if((sr(c[h>>2]|0)|0)!=0?(vr(c[(c[h>>2]|0)+216>>2]|0,0)|0)==0:0)break;c[n>>2]=wr(c[h>>2]|0,1)|0;a[(c[h>>2]|0)+19>>0]=0}while(0);a[(c[h>>2]|0)+17>>0]=1;a[(c[h>>2]|0)+20>>0]=0;c[g>>2]=(c[m>>2]|0)==0?c[n>>2]|0:c[m>>2]|0;n=c[g>>2]|0;i=o;return n|0}function lr(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+104>>2]|0))break;kj(c[(c[(c[d>>2]|0)+100>>2]|0)+((c[e>>2]|0)*48|0)+16>>2]|0);c[e>>2]=(c[e>>2]|0)+1}if(!((a[(c[d>>2]|0)+4>>0]|0)!=0?(mr(c[(c[d>>2]|0)+72>>2]|0)|0)==0:0))hr(c[(c[d>>2]|0)+72>>2]|0)|0;Kd(c[(c[d>>2]|0)+100>>2]|0);c[(c[d>>2]|0)+100>>2]=0;c[(c[d>>2]|0)+104>>2]=0;c[(c[d>>2]|0)+56>>2]=0;i=f;return}function mr(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[c[b>>2]>>2]|0)==4836|0}function nr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a=g;a=Ob[c[(c[c[f>>2]>>2]|0)+16>>2]&255](c[f>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;i=e;return a|0}function or(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Yb[c[(c[c[f>>2]>>2]|0)+20>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function pr(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;f=l+24|0;g=l+20|0;j=l+16|0;h=l+8|0;k=l;c[f>>2]=b;c[g>>2]=e;c[j>>2]=0;b=(c[f>>2]|0)+80|0;if(!((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0)){k=c[j>>2]|0;i=l;return k|0}m=(c[f>>2]|0)+168|0;e=c[m+4>>2]|0;b=h;c[b>>2]=c[m>>2];c[b+4>>2]=e;b=h;e=c[(c[f>>2]|0)+68>>2]|0;if((c[g>>2]|0)!=0|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0)c[j>>2]=nr(e,0,0)|0;else c[j>>2]=Fg(e,26703,28,0,0)|0;if((c[j>>2]|0)==0?(a[(c[f>>2]|0)+7>>0]|0)==0:0)c[j>>2]=or(c[(c[f>>2]|0)+68>>2]|0,16|d[(c[f>>2]|0)+12>>0])|0;m=h;g=c[m+4>>2]|0;if(!((c[j>>2]|0)==0&((g|0)>0|(g|0)==0&(c[m>>2]|0)>>>0>0))){m=c[j>>2]|0;i=l;return m|0}c[j>>2]=Si(c[(c[f>>2]|0)+68>>2]|0,k)|0;if(c[j>>2]|0){m=c[j>>2]|0;i=l;return m|0}b=c[k+4>>2]|0;m=h;g=c[m+4>>2]|0;if(!((b|0)>(g|0)|((b|0)==(g|0)?(c[k>>2]|0)>>>0>(c[m>>2]|0)>>>0:0))){m=c[j>>2]|0;i=l;return m|0}m=h;c[j>>2]=nr(c[(c[f>>2]|0)+68>>2]|0,c[m>>2]|0,c[m+4>>2]|0)|0;m=c[j>>2]|0;i=l;return m|0}function qr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;b=Ob[c[(c[h>>2]|0)+28>>2]&255](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return b|0}function rr(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;while(1){a=c[c[b>>2]>>2]|0;c[d>>2]=a;if(!a)break;bj(c[d>>2]|0)}i=e;return}function sr(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[(c[b>>2]|0)+216>>2]|0)!=0|0}function tr(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;if(!(a[(c[d>>2]|0)+44>>0]|0)){i=e;return 0}Br(c[d>>2]|0,0,1);a[(c[d>>2]|0)+44>>0]=0;c[(c[d>>2]|0)+104>>2]=0;a[(c[d>>2]|0)+47>>0]=0;i=e;return 0}function ur(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+48|0;e=m+32|0;f=m+28|0;k=m+24|0;g=m+8|0;h=m;l=m+20|0;j=m+16|0;c[e>>2]=a;c[f>>2]=b;c[k>>2]=0;if(!(c[c[(c[e>>2]|0)+64>>2]>>2]|0)){l=c[k>>2]|0;i=m;return l|0}if((d[(c[e>>2]|0)+17>>0]|0|0)<4?(d[(c[e>>2]|0)+17>>0]|0|0)!=0:0){l=c[k>>2]|0;i=m;return l|0}c[l>>2]=c[(c[e>>2]|0)+160>>2];c[k>>2]=Si(c[(c[e>>2]|0)+64>>2]|0,g)|0;b=c[l>>2]|0;b=rR(b|0,((b|0)<0)<<31>>31|0,c[f>>2]|0,0)|0;a=h;c[a>>2]=b;c[a+4>>2]=C;if(c[k>>2]|0){l=c[k>>2]|0;i=m;return l|0}b=g;a=h;if(!((c[b>>2]|0)!=(c[a>>2]|0)?1:(c[b+4>>2]|0)!=(c[a+4>>2]|0))){l=c[k>>2]|0;i=m;return l|0}b=g;o=c[b+4>>2]|0;a=h;n=c[a+4>>2]|0;if(!((o|0)>(n|0)|((o|0)==(n|0)?(c[b>>2]|0)>>>0>(c[a>>2]|0)>>>0:0))){b=g;n=c[l>>2]|0;n=gR(c[b>>2]|0,c[b+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;b=C;o=h;a=c[o+4>>2]|0;if((b|0)<(a|0)|((b|0)==(a|0)?n>>>0<=(c[o>>2]|0)>>>0:0)){c[j>>2]=c[(c[e>>2]|0)+208>>2];kR(c[j>>2]|0,0,c[l>>2]|0)|0;a=c[(c[e>>2]|0)+64>>2]|0;j=c[j>>2]|0;n=c[l>>2]|0;o=c[l>>2]|0;o=fR(c[h>>2]|0,c[h+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;c[k>>2]=Fg(a,j,n,o,C)|0}}else{o=h;c[k>>2]=nr(c[(c[e>>2]|0)+64>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0}if(c[k>>2]|0){o=c[k>>2]|0;i=m;return o|0}c[(c[e>>2]|0)+36>>2]=c[f>>2];o=c[k>>2]|0;i=m;return o|0}function vr(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=e;c[h>>2]=f;if(c[h>>2]|0){f=c[g>>2]|0;if((c[h>>2]|0)>0){zr(f,3+(b[(c[g>>2]|0)+40>>1]|0)|0);a[(c[g>>2]|0)+43>>0]=1;c[j>>2]=1;j=c[j>>2]|0;i=k;return j|0}else{c[j>>2]=(d[f+43>>0]|0)==0&1;j=c[j>>2]|0;i=k;return j|0}}if(!(a[(c[g>>2]|0)+43>>0]|0)){c[j>>2]=0;j=c[j>>2]|0;i=k;return j|0}a[(c[g>>2]|0)+43>>0]=0;if(yr(c[g>>2]|0,3+(b[(c[g>>2]|0)+40>>1]|0)|0)|0)a[(c[g>>2]|0)+43>>0]=1;c[j>>2]=(d[(c[g>>2]|0)+43>>0]|0)==0&1;j=c[j>>2]|0;i=k;return j|0}function wr(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=e;c[h>>2]=0;if(!(c[c[(c[f>>2]|0)+64>>2]>>2]|0)){h=c[h>>2]|0;i=j;return h|0}if(d[(c[f>>2]|0)+14>>0]|0)e=0;else e=xr(c[(c[f>>2]|0)+64>>2]|0,c[g>>2]|0)|0;c[h>>2]=e;if((d[(c[f>>2]|0)+18>>0]|0|0)==5){h=c[h>>2]|0;i=j;return h|0}a[(c[f>>2]|0)+18>>0]=c[g>>2];h=c[h>>2]|0;i=j;return h|0}function xr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=Yb[c[(c[c[f>>2]>>2]|0)+32>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return b|0}function yr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;if(a[(c[f>>2]|0)+43>>0]|0){c[e>>2]=0;h=c[e>>2]|0;i=j;return h|0}else{c[h>>2]=Ar(c[(c[f>>2]|0)+4>>2]|0,c[g>>2]|0,1,6)|0;c[e>>2]=c[h>>2];h=c[e>>2]|0;i=j;return h|0}return 0}function zr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=d;if(a[(c[e>>2]|0)+43>>0]|0){i=g;return}Ar(c[(c[e>>2]|0)+4>>2]|0,c[f>>2]|0,1,5)|0;i=g;return}function Ar(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;b=Wb[c[(c[c[k>>2]>>2]|0)+56>>2]&255](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return b|0}function Br(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;if(a[(c[f>>2]|0)+43>>0]|0){i=j;return}Ar(c[(c[f>>2]|0)+4>>2]|0,c[g>>2]|0,c[h>>2]|0,9)|0;i=j;return}function Cr(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Fr(c[d>>2]|0,0,0)|0;i=b;return 0}function Dr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=i;i=i+64|0;t=r+52|0;s=r+48|0;n=r+44|0;o=r+8|0;p=r+40|0;m=r+36|0;l=r+32|0;g=r+28|0;q=r+24|0;h=r;j=r+20|0;k=r+16|0;c[t>>2]=a;c[s>>2]=b;c[n>>2]=d;d=o;c[d>>2]=e;c[d+4>>2]=f;c[p>>2]=c[t>>2];c[m>>2]=c[s>>2];c[l>>2]=c[n>>2];d=(c[p>>2]|0)+24|0;a=o;b=o;a:do if(((c[d>>2]|0)!=(c[a>>2]|0)?1:(c[d+4>>2]|0)!=(c[a+4>>2]|0))|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0){t=h;c[t>>2]=0;c[t+4>>2]=0;c[q>>2]=c[(c[p>>2]|0)+4>>2];while(1){if(!(c[q>>2]|0))break a;s=h;s=gR(c[s>>2]|0,c[s+4>>2]|0,1020,0)|0;a=C;t=o;b=c[t+4>>2]|0;if(!((a|0)<(b|0)|((a|0)==(b|0)?s>>>0<=(c[t>>2]|0)>>>0:0)))break a;s=h;s=gR(c[s>>2]|0,c[s+4>>2]|0,1020,0)|0;t=h;c[t>>2]=s;c[t+4>>2]=C;c[q>>2]=c[c[q>>2]>>2]}}else c[q>>2]=c[(c[p>>2]|0)+24+8>>2];while(0);t=o;t=qR(c[t>>2]|0,c[t+4>>2]|0,1020,0)|0;c[g>>2]=t;while(1){c[j>>2]=1020-(c[g>>2]|0);c[k>>2]=(c[l>>2]|0)<(1020-(c[g>>2]|0)|0)?c[l>>2]|0:1020-(c[g>>2]|0)|0;iR(c[m>>2]|0,(c[q>>2]|0)+4+(c[g>>2]|0)|0,c[k>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+(c[k>>2]|0);c[l>>2]=(c[l>>2]|0)-(c[j>>2]|0);c[g>>2]=0;if((c[l>>2]|0)<0){e=10;break}t=c[c[q>>2]>>2]|0;c[q>>2]=t;if(!((t|0)!=0&(c[l>>2]|0)>0)){e=10;break}}if((e|0)==10){t=o;s=c[n>>2]|0;s=gR(c[t>>2]|0,c[t+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;t=(c[p>>2]|0)+24|0;c[t>>2]=s;c[t+4>>2]=C;c[(c[p>>2]|0)+24+8>>2]=c[q>>2];i=r;return 0}return 0}function Er(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=i;i=i+64|0;o=p+48|0;s=p+44|0;q=p+40|0;r=p+36|0;k=p+32|0;j=p+28|0;n=p+24|0;l=p+20|0;g=p+16|0;h=p+12|0;m=p+8|0;c[s>>2]=a;c[q>>2]=b;c[r>>2]=d;b=p;c[b>>2]=e;c[b+4>>2]=f;c[k>>2]=c[s>>2];c[j>>2]=c[r>>2];c[n>>2]=c[q>>2];while(1){if((c[j>>2]|0)<=0){e=11;break}c[l>>2]=c[(c[k>>2]|0)+8+8>>2];s=(c[k>>2]|0)+8|0;s=qR(c[s>>2]|0,c[s+4>>2]|0,1020,0)|0;c[g>>2]=s;c[h>>2]=(c[j>>2]|0)<(1020-(c[g>>2]|0)|0)?c[j>>2]|0:1020-(c[g>>2]|0)|0;if(!(c[g>>2]|0)){c[m>>2]=Id(1024)|0;if(!(c[m>>2]|0)){e=5;break}c[c[m>>2]>>2]=0;e=c[m>>2]|0;if(c[l>>2]|0)c[c[l>>2]>>2]=e;else c[(c[k>>2]|0)+4>>2]=e;c[(c[k>>2]|0)+8+8>>2]=c[m>>2]}iR((c[(c[k>>2]|0)+8+8>>2]|0)+4+(c[g>>2]|0)|0,c[n>>2]|0,c[h>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+(c[h>>2]|0);c[j>>2]=(c[j>>2]|0)-(c[h>>2]|0);r=c[h>>2]|0;s=(c[k>>2]|0)+8|0;q=s;r=gR(c[q>>2]|0,c[q+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;c[s>>2]=r;c[s+4>>2]=C}if((e|0)==5){c[o>>2]=3082;s=c[o>>2]|0;i=p;return s|0}else if((e|0)==11){c[o>>2]=0;s=c[o>>2]|0;i=p;return s|0}return 0}function Fr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;e=h+20|0;j=h+16|0;f=h+12|0;g=h+8|0;c[e>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;c[j>>2]=c[e>>2];c[f>>2]=c[(c[j>>2]|0)+4>>2];while(1){if(!(c[f>>2]|0))break;c[g>>2]=c[f>>2];c[f>>2]=c[c[f>>2]>>2];Kd(c[g>>2]|0)}Ir(c[e>>2]|0);i=h;return 0}function Gr(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function Hr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=c[g>>2];e=(c[e>>2]|0)+8|0;a=c[e+4>>2]|0;b=c[f>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=a;i=d;return 0}function Ir(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];a=c[d>>2]|0;kR(a|0,0,Jr()|0)|0;c[c[d>>2]>>2]=4836;i=b;return}function Jr(){return 40}function Kr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;j=m+24|0;e=m+20|0;f=m+16|0;l=m+12|0;g=m+8|0;h=m+4|0;k=m;c[j>>2]=a;c[e>>2]=b;c[f>>2]=d;c[l>>2]=c[(c[j>>2]|0)+44>>2];if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}if((c[f>>2]|0)>=(c[(c[j>>2]|0)+104>>2]|0)){l=c[l>>2]|0;i=m;return l|0}c[h>>2]=(c[f>>2]|0)+((c[e>>2]|0)==1?0:1);c[g>>2]=c[h>>2];while(1){if((c[g>>2]|0)>=(c[(c[j>>2]|0)+104>>2]|0))break;kj(c[(c[(c[j>>2]|0)+100>>2]|0)+((c[g>>2]|0)*48|0)+16>>2]|0);c[g>>2]=(c[g>>2]|0)+1}c[(c[j>>2]|0)+104>>2]=c[h>>2];if((c[e>>2]|0)!=1){if((sr(c[j>>2]|0)|0)==0?(c[c[(c[j>>2]|0)+68>>2]>>2]|0)==0:0){l=c[l>>2]|0;i=m;return l|0}if(!(c[h>>2]|0))e=0;else e=(c[(c[j>>2]|0)+100>>2]|0)+(((c[h>>2]|0)-1|0)*48|0)|0;c[k>>2]=e;c[l>>2]=gs(c[j>>2]|0,c[k>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}if(c[h>>2]|0){l=c[l>>2]|0;i=m;return l|0}if(!(c[c[(c[j>>2]|0)+72>>2]>>2]|0)){l=c[l>>2]|0;i=m;return l|0}if(mr(c[(c[j>>2]|0)+72>>2]|0)|0)c[l>>2]=nr(c[(c[j>>2]|0)+72>>2]|0,0,0)|0;c[(c[j>>2]|0)+56>>2]=0;l=c[l>>2]|0;i=m;return l|0}function Lr(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;r=t+8|0;m=t+56|0;n=t+52|0;j=t+48|0;k=t;g=t+44|0;l=t+40|0;f=t+36|0;p=t+32|0;q=t+28|0;s=t+24|0;h=t+20|0;o=t+16|0;c[m>>2]=b;c[n>>2]=e;c[j>>2]=c[c[m>>2]>>2];c[f>>2]=0;c[q>>2]=1;c[s>>2]=0;c[o>>2]=0;c[p>>2]=Si(c[(c[m>>2]|0)+68>>2]|0,k)|0;a:do if(!(c[p>>2]|0)){c[s>>2]=c[(c[m>>2]|0)+208>>2];c[p>>2]=Mr(c[(c[m>>2]|0)+68>>2]|0,c[s>>2]|0,(c[(c[c[m>>2]>>2]|0)+8>>2]|0)+1|0)|0;if((c[p>>2]|0)==0?(a[c[s>>2]>>0]|0)!=0:0)c[p>>2]=Nr(c[j>>2]|0,c[s>>2]|0,0,q)|0;c[s>>2]=0;if((c[p>>2]|0)==0&(c[q>>2]|0)!=0){j=(c[m>>2]|0)+80|0;c[j>>2]=0;c[j+4>>2]=0;c[h>>2]=c[n>>2];b:while(1){j=k;c[p>>2]=Or(c[m>>2]|0,c[n>>2]|0,c[j>>2]|0,c[j+4>>2]|0,g,f)|0;if(c[p>>2]|0){e=8;break}if((c[g>>2]|0)==-1){b=k;b=fR(c[b>>2]|0,c[b+4>>2]|0,c[(c[m>>2]|0)+156>>2]|0,0)|0;j=(c[(c[m>>2]|0)+160>>2]|0)+8|0;j=pR(b|0,C|0,j|0,((j|0)<0)<<31>>31|0)|0;c[g>>2]=j}if(!((c[g>>2]|0)!=0|(c[n>>2]|0)!=0)?(b=(c[m>>2]|0)+88|0,b=gR(c[b>>2]|0,c[b+4>>2]|0,c[(c[m>>2]|0)+156>>2]|0,0)|0,j=(c[m>>2]|0)+80|0,(b|0)==(c[j>>2]|0)?(C|0)==(c[j+4>>2]|0):0):0){j=k;b=(c[m>>2]|0)+80|0;b=fR(c[j>>2]|0,c[j+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;j=(c[(c[m>>2]|0)+160>>2]|0)+8|0;j=pR(b|0,C|0,j|0,((j|0)<0)<<31>>31|0)|0;c[g>>2]=j}j=(c[m>>2]|0)+80|0;if((c[j+4>>2]|0)==0?(c[j>>2]|0)==(c[(c[m>>2]|0)+156>>2]|0):0){c[p>>2]=ur(c[m>>2]|0,c[f>>2]|0)|0;if(c[p>>2]|0)break a;c[(c[m>>2]|0)+28>>2]=c[f>>2]}c[l>>2]=0;while(1){if((c[l>>2]|0)>>>0>=(c[g>>2]|0)>>>0)continue b;if(c[h>>2]|0){Ui(c[m>>2]|0);c[h>>2]=0}c[p>>2]=Pr(c[m>>2]|0,(c[m>>2]|0)+80|0,0,1,0)|0;if(c[p>>2]|0)break;c[o>>2]=(c[o>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+1}if((c[p>>2]|0)!=101){e=26;break}e=k;b=c[e+4>>2]|0;j=(c[m>>2]|0)+80|0;c[j>>2]=c[e>>2];c[j+4>>2]=b}if((e|0)==8){if((c[p>>2]|0)!=101)break;c[p>>2]=0;break}else if((e|0)==26){if((c[p>>2]|0)!=522)break;c[p>>2]=0;break}}}while(0);a[(c[m>>2]|0)+19>>0]=a[(c[m>>2]|0)+13>>0]|0;if(!(c[p>>2]|0)){c[s>>2]=c[(c[m>>2]|0)+208>>2];c[p>>2]=Mr(c[(c[m>>2]|0)+68>>2]|0,c[s>>2]|0,(c[(c[c[m>>2]>>2]|0)+8>>2]|0)+1|0)|0}do if(!(c[p>>2]|0)){if((d[(c[m>>2]|0)+17>>0]|0)<4?(d[(c[m>>2]|0)+17>>0]|0)!=0:0)break;c[p>>2]=Hg(c[m>>2]|0,0)|0}while(0);if(!(c[p>>2]|0))c[p>>2]=kr(c[m>>2]|0,(a[c[s>>2]>>0]|0)!=0&1,0)|0;if((c[p>>2]|0)==0?(c[q>>2]|0)!=0?(a[c[s>>2]>>0]|0)!=0:0:0)c[p>>2]=Qr(c[m>>2]|0,c[s>>2]|0)|0;if(!((c[n>>2]|0)!=0&(c[o>>2]|0)!=0)){s=c[m>>2]|0;Rr(s);s=c[p>>2]|0;i=t;return s|0}s=c[(c[m>>2]|0)+180>>2]|0;c[r>>2]=c[o>>2];c[r+4>>2]=s;Rd(539,26731,r);s=c[m>>2]|0;Rr(s);s=c[p>>2]|0;i=t;return s|0}function Mr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+36|0;g=q+32|0;h=q+28|0;j=q+24|0;n=q+20|0;m=q+16|0;o=q;l=q+12|0;p=q+8|0;k=q+40|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;a[c[h>>2]>>0]=0;e=Si(c[g>>2]|0,o)|0;c[n>>2]=e;d=o;b=c[d+4>>2]|0;if((((((!(0!=(e|0)|((b|0)<0|(b|0)==0&(c[d>>2]|0)>>>0<16))?(b=c[g>>2]|0,d=o,d=fR(c[d>>2]|0,c[d+4>>2]|0,16,0)|0,d=Xr(b,d,C,m)|0,c[n>>2]=d,0==(d|0)):0)?!((c[m>>2]|0)==0?1:(c[m>>2]|0)>>>0>=(c[j>>2]|0)>>>0):0)?(b=c[g>>2]|0,d=o,d=fR(c[d>>2]|0,c[d+4>>2]|0,12,0)|0,d=Xr(b,d,C,l)|0,c[n>>2]=d,0==(d|0)):0)?(b=c[g>>2]|0,d=o,d=fR(c[d>>2]|0,c[d+4>>2]|0,8,0)|0,d=Wr(b,k,8,d,C)|0,c[n>>2]=d,0==(d|0)):0)?(vQ(k,26758,8)|0)==0:0)?(k=c[g>>2]|0,e=c[h>>2]|0,b=c[m>>2]|0,d=o,d=fR(c[d>>2]|0,c[d+4>>2]|0,16,0)|0,d=fR(d|0,C|0,c[m>>2]|0,0)|0,d=Wr(k,e,b,d,C)|0,c[n>>2]=d,0==(d|0)):0){c[p>>2]=0;while(1){if((c[p>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break;c[l>>2]=(c[l>>2]|0)-(a[(c[h>>2]|0)+(c[p>>2]|0)>>0]|0);c[p>>2]=(c[p>>2]|0)+1}if(c[l>>2]|0)c[m>>2]=0;a[(c[h>>2]|0)+(c[m>>2]|0)>>0]=0;c[f>>2]=0;d=c[f>>2]|0;i=q;return d|0}c[f>>2]=c[n>>2];d=c[f>>2]|0;i=q;return d|0}function Nr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;b=Wb[c[(c[k>>2]|0)+32>>2]&255](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return b|0}function Or(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+64|0;h=s+44|0;j=s+40|0;k=s+36|0;t=s+8|0;l=s+32|0;m=s+28|0;r=s+24|0;n=s+48|0;o=s;p=s+20|0;q=s+16|0;c[j>>2]=a;c[k>>2]=b;b=t;c[b>>2]=d;c[b+4>>2]=e;c[l>>2]=f;c[m>>2]=g;b=fs(c[j>>2]|0)|0;f=(c[j>>2]|0)+80|0;c[f>>2]=b;c[f+4>>2]=C;f=(c[j>>2]|0)+80|0;f=gR(c[f>>2]|0,c[f+4>>2]|0,c[(c[j>>2]|0)+156>>2]|0,0)|0;b=C;a=t;g=c[a+4>>2]|0;if((b|0)>(g|0)|((b|0)==(g|0)?f>>>0>(c[a>>2]|0)>>>0:0)){c[h>>2]=101;t=c[h>>2]|0;i=s;return t|0}f=(c[j>>2]|0)+80|0;a=c[f+4>>2]|0;t=o;c[t>>2]=c[f>>2];c[t+4>>2]=a;if(!((c[k>>2]|0)==0?(a=o,t=(c[j>>2]|0)+88|0,!((c[a>>2]|0)!=(c[t>>2]|0)?1:(c[a+4>>2]|0)!=(c[t+4>>2]|0))):0)){t=o;c[r>>2]=Wr(c[(c[j>>2]|0)+68>>2]|0,n,8,c[t>>2]|0,c[t+4>>2]|0)|0;if(c[r>>2]|0){c[h>>2]=c[r>>2];t=c[h>>2]|0;i=s;return t|0}if(vQ(n,26758,8)|0){c[h>>2]=101;t=c[h>>2]|0;i=s;return t|0}}a=c[(c[j>>2]|0)+68>>2]|0;t=o;t=gR(c[t>>2]|0,c[t+4>>2]|0,8,0)|0;t=Xr(a,t,C,c[l>>2]|0)|0;c[r>>2]=t;if((0==(t|0)?(a=c[(c[j>>2]|0)+68>>2]|0,t=o,t=gR(c[t>>2]|0,c[t+4>>2]|0,12,0)|0,t=Xr(a,t,C,(c[j>>2]|0)+52|0)|0,c[r>>2]=t,0==(t|0)):0)?(a=c[(c[j>>2]|0)+68>>2]|0,t=o,t=gR(c[t>>2]|0,c[t+4>>2]|0,16,0)|0,t=Xr(a,t,C,c[m>>2]|0)|0,c[r>>2]=t,0==(t|0)):0){t=(c[j>>2]|0)+80|0;do if((c[t>>2]|0)==0&(c[t+4>>2]|0)==0){a=c[(c[j>>2]|0)+68>>2]|0;t=o;t=gR(c[t>>2]|0,c[t+4>>2]|0,20,0)|0;t=Xr(a,t,C,q)|0;c[r>>2]=t;if(0==(t|0)?(a=c[(c[j>>2]|0)+68>>2]|0,t=o,t=gR(c[t>>2]|0,c[t+4>>2]|0,24,0)|0,t=Xr(a,t,C,p)|0,c[r>>2]=t,0==(t|0)):0){if(!(c[p>>2]|0))c[p>>2]=c[(c[j>>2]|0)+160>>2];if((!((c[p>>2]|0)>>>0<512|(c[q>>2]|0)>>>0<32|(c[p>>2]|0)>>>0>65536|(c[q>>2]|0)>>>0>65536)?((c[p>>2]|0)-1&c[p>>2]|0)==0:0)?((c[q>>2]|0)-1&c[q>>2]|0)==0:0){c[r>>2]=Qi(c[j>>2]|0,p,-1)|0;c[(c[j>>2]|0)+156>>2]=c[q>>2];break}c[h>>2]=101;t=c[h>>2]|0;i=s;return t|0}c[h>>2]=c[r>>2];t=c[h>>2]|0;i=s;return t|0}while(0);t=(c[j>>2]|0)+80|0;a=t;a=gR(c[a>>2]|0,c[a+4>>2]|0,c[(c[j>>2]|0)+156>>2]|0,0)|0;c[t>>2]=a;c[t+4>>2]=C;c[h>>2]=c[r>>2];t=c[h>>2]|0;i=s;return t|0}c[h>>2]=c[r>>2];t=c[h>>2]|0;i=s;return t|0}function Pr(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+64|0;y=B+60|0;o=B+56|0;p=B+52|0;l=B+48|0;q=B+44|0;r=B+40|0;A=B+36|0;z=B+32|0;v=B+28|0;m=B+24|0;s=B+20|0;n=B+16|0;t=B+12|0;u=B;x=B+8|0;c[o>>2]=f;c[p>>2]=g;c[l>>2]=h;c[q>>2]=j;c[r>>2]=k;c[s>>2]=c[(c[o>>2]|0)+208>>2];j=c[o>>2]|0;if(c[q>>2]|0)j=c[j+68>>2]|0;else j=c[j+72>>2]|0;c[n>>2]=j;f=c[p>>2]|0;c[A>>2]=Xr(c[n>>2]|0,c[f>>2]|0,c[f+4>>2]|0,v)|0;if(c[A>>2]|0){c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}k=c[n>>2]|0;h=c[s>>2]|0;g=c[(c[o>>2]|0)+160>>2]|0;f=c[p>>2]|0;f=gR(c[f>>2]|0,c[f+4>>2]|0,4,0)|0;c[A>>2]=Wr(k,h,g,f,C)|0;if(c[A>>2]|0){c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}g=(c[(c[o>>2]|0)+160>>2]|0)+4+(c[q>>2]<<2)|0;f=c[p>>2]|0;h=f;g=gR(c[h>>2]|0,c[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;c[f>>2]=g;c[f+4>>2]=C;if((c[v>>2]|0)!=0?(c[v>>2]|0)!=(((c[381]|0)/(c[(c[o>>2]|0)+160>>2]|0)|0)+1|0):0){if((c[v>>2]|0)>>>0<=(c[(c[o>>2]|0)+28>>2]|0)>>>0?(ij(c[l>>2]|0,c[v>>2]|0)|0)==0:0){if(c[q>>2]|0){f=c[n>>2]|0;n=c[p>>2]|0;n=fR(c[n>>2]|0,c[n+4>>2]|0,4,0)|0;c[A>>2]=Xr(f,n,C,m)|0;if(c[A>>2]|0){c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}if((c[r>>2]|0)==0?(n=Yr(c[o>>2]|0,c[s>>2]|0)|0,(n|0)!=(c[m>>2]|0)):0){c[y>>2]=101;A=c[y>>2]|0;i=B;return A|0}}if((c[l>>2]|0)!=0?(n=gj(c[l>>2]|0,c[v>>2]|0)|0,c[A>>2]=n,(n|0)!=0):0){c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}if((c[v>>2]|0)==1?(b[(c[o>>2]|0)+150>>1]|0)!=(d[(c[s>>2]|0)+20>>0]|0):0)b[(c[o>>2]|0)+150>>1]=d[(c[s>>2]|0)+20>>0]|0;if(sr(c[o>>2]|0)|0)c[z>>2]=0;else c[z>>2]=Zr(c[o>>2]|0,c[v>>2]|0)|0;if(c[q>>2]|0){if(d[(c[o>>2]|0)+7>>0]|0)j=1;else{n=c[p>>2]|0;l=c[n+4>>2]|0;j=(c[o>>2]|0)+88|0;m=c[j+4>>2]|0;j=(l|0)<(m|0)|((l|0)==(m|0)?(c[n>>2]|0)>>>0<=(c[j>>2]|0)>>>0:0)}c[t>>2]=j&1}else{if(!(c[z>>2]|0))j=1;else j=0==(e[(c[z>>2]|0)+24>>1]&8|0);c[t>>2]=j&1}do if(c[c[(c[o>>2]|0)+64>>2]>>2]|0){if((d[(c[o>>2]|0)+17>>0]|0)>=4){if(!(c[t>>2]|0)){w=44;break}}else if(!((c[t>>2]|0)!=0?(d[(c[o>>2]|0)+17>>0]|0)==0:0)){w=44;break}n=c[(c[o>>2]|0)+160>>2]|0;n=rR((c[v>>2]|0)-1|0,0,n|0,((n|0)<0)<<31>>31|0)|0;t=u;c[t>>2]=n;c[t+4>>2]=C;c[A>>2]=Fg(c[(c[o>>2]|0)+64>>2]|0,c[s>>2]|0,c[(c[o>>2]|0)+160>>2]|0,c[u>>2]|0,c[u+4>>2]|0)|0;if((c[v>>2]|0)>>>0>(c[(c[o>>2]|0)+36>>2]|0)>>>0)c[(c[o>>2]|0)+36>>2]=c[v>>2];if(c[(c[o>>2]|0)+96>>2]|0){_r(c[(c[o>>2]|0)+96>>2]|0,c[v>>2]|0,c[s>>2]|0);c[s>>2]=c[s>>2]}}else w=44;while(0);do if((w|0)==44?(c[q>>2]|0)==0&(c[z>>2]|0)==0:0){w=(c[o>>2]|0)+21|0;a[w>>0]=d[w>>0]|2;c[A>>2]=sg(c[o>>2]|0,c[v>>2]|0,z,1)|0;w=(c[o>>2]|0)+21|0;a[w>>0]=d[w>>0]&-3;if(!(c[A>>2]|0)){w=(c[z>>2]|0)+24|0;b[w>>1]=e[w>>1]&-17;$r(c[z>>2]|0);break}c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}while(0);if(c[z>>2]|0){c[x>>2]=c[(c[z>>2]|0)+4>>2];iR(c[x>>2]|0,c[s>>2]|0,c[(c[o>>2]|0)+160>>2]|0)|0;Qb[c[(c[o>>2]|0)+204>>2]&255](c[z>>2]|0);do if(c[q>>2]|0){if((c[r>>2]|0)!=0?(u=c[p>>2]|0,s=c[u+4>>2]|0,w=(c[o>>2]|0)+88|0,t=c[w+4>>2]|0,!((s|0)<(t|0)|((s|0)==(t|0)?(c[u>>2]|0)>>>0<=(c[w>>2]|0)>>>0:0))):0)break;bj(c[z>>2]|0)}while(0);if((c[v>>2]|0)==1){h=(c[o>>2]|0)+112|0;j=(c[x>>2]|0)+24|0;k=h+16|0;do{a[h>>0]=a[j>>0]|0;h=h+1|0;j=j+1|0}while((h|0)<(k|0))}as(c[z>>2]|0)}c[y>>2]=c[A>>2];A=c[y>>2]|0;i=B;return A|0}c[y>>2]=0;A=c[y>>2]|0;i=B;return A|0}c[y>>2]=101;A=c[y>>2]|0;i=B;return A|0}function Qr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=i;i=i+64|0;t=s+60|0;e=s+56|0;n=s+52|0;o=s+48|0;m=s+44|0;l=s+40|0;q=s+36|0;j=s;p=s+32|0;r=s+28|0;k=s+24|0;g=s+16|0;f=s+12|0;h=s+8|0;c[t>>2]=b;c[e>>2]=d;c[n>>2]=c[c[t>>2]>>2];c[q>>2]=0;d=c[(c[n>>2]|0)+4>>2]<<1;c[m>>2]=ig(d,((d|0)<0)<<31>>31)|0;c[l>>2]=(c[m>>2]|0)+(c[(c[n>>2]|0)+4>>2]|0);if(c[m>>2]|0){c[s+20>>2]=16385;c[o>>2]=Vr(c[n>>2]|0,c[e>>2]|0,c[m>>2]|0,16385,0)|0}else c[o>>2]=7;a:do if((c[o>>2]|0)==0?(c[o>>2]=Si(c[m>>2]|0,j)|0,(c[o>>2]|0)==0):0){c[k>>2]=(c[(c[n>>2]|0)+8>>2]|0)+1;d=j;t=c[k>>2]|0;t=gR(c[d>>2]|0,c[d+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;t=gR(t|0,C|0,1,0)|0;c[q>>2]=_f(t,C)|0;if(!(c[q>>2]|0)){c[o>>2]=7;break}t=j;t=gR(c[t>>2]|0,c[t+4>>2]|0,1,0)|0;c[r>>2]=(c[q>>2]|0)+t;c[o>>2]=Wr(c[m>>2]|0,c[q>>2]|0,c[j>>2]|0,0,0)|0;if(!(c[o>>2]|0)){a[(c[q>>2]|0)+(c[j>>2]|0)>>0]=0;c[p>>2]=c[q>>2];while(1){d=(c[p>>2]|0)-(c[q>>2]|0)|0;u=((d|0)<0)<<31>>31;t=j;b=c[t+4>>2]|0;if(!((u|0)<(b|0)|((u|0)==(b|0)?d>>>0<(c[t>>2]|0)>>>0:0)))break;c[o>>2]=Nr(c[n>>2]|0,c[p>>2]|0,0,g)|0;if(c[o>>2]|0)break a;if(c[g>>2]|0){c[h>>2]=2049;c[o>>2]=Vr(c[n>>2]|0,c[p>>2]|0,c[l>>2]|0,c[h>>2]|0,0)|0;if(c[o>>2]|0)break a;c[o>>2]=Mr(c[l>>2]|0,c[r>>2]|0,c[k>>2]|0)|0;hr(c[l>>2]|0)|0;if(c[o>>2]|0)break a;if(a[c[r>>2]>>0]|0)b=(yQ(c[r>>2]|0,c[e>>2]|0)|0)==0;else b=0;c[f>>2]=b&1;if(c[f>>2]|0)break a}u=(If(c[p>>2]|0)|0)+1|0;c[p>>2]=(c[p>>2]|0)+u}hr(c[m>>2]|0)|0;c[o>>2]=qr(c[n>>2]|0,c[e>>2]|0,0)|0}}while(0);Kd(c[q>>2]|0);if(!(c[m>>2]|0)){u=c[o>>2]|0;i=s;return u|0}hr(c[m>>2]|0)|0;Kd(c[m>>2]|0);u=c[o>>2]|0;i=s;return u|0}function Rr(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if((d[(c[b>>2]|0)+13>>0]|0|0)==0?((Sr(c[(c[b>>2]|0)+64>>2]|0)|0)&4096|0)==0:0){a=Tr(c[(c[b>>2]|0)+64>>2]|0)|0;c[(c[b>>2]|0)+156>>2]=a;i=e;return}c[(c[b>>2]|0)+156>>2]=512;i=e;return}function Sr(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Tb[c[(c[c[d>>2]>>2]|0)+48>>2]&255](c[d>>2]|0)|0;i=b;return a|0}function Tr(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=Ur(c[e>>2]|0)|0;if((c[b>>2]|0)>=32){if((c[b>>2]|0)>65536)c[b>>2]=65536}else c[b>>2]=512;i=d;return c[b>>2]|0}function Ur(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[(c[c[b>>2]>>2]|0)+44>>2];if(!(c[d>>2]|0)){d=4096;i=e;return d|0}d=Tb[c[d>>2]&255](c[b>>2]|0)|0;i=e;return d|0}function Vr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+20|0;m=h+16|0;l=h+12|0;k=h+8|0;j=h+4|0;g=h;c[n>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;c[g>>2]=Zb[c[(c[n>>2]|0)+24>>2]&255](c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,c[k>>2]&556927,c[j>>2]|0)|0;i=h;return c[g>>2]|0}function Wr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;k=g+16|0;j=g+12|0;h=g+8|0;l=g;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;b=l;c[b>>2]=e;c[b+4>>2]=f;b=l;b=Zb[c[(c[c[k>>2]>>2]|0)+8>>2]&255](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;i=g;return b|0}function Xr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;k=j+16|0;l=j;f=j+12|0;g=j+20|0;h=j+8|0;c[k>>2]=a;a=l;c[a>>2]=b;c[a+4>>2]=d;c[f>>2]=e;e=l;c[h>>2]=Wr(c[k>>2]|0,g,4,c[e>>2]|0,c[e+4>>2]|0)|0;if(c[h>>2]|0){l=c[h>>2]|0;i=j;return l|0}l=$q(g)|0;c[c[f>>2]>>2]=l;l=c[h>>2]|0;i=j;return l|0}function Yr(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;f=h+4|0;g=h;c[j>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[j>>2]|0)+52>>2];c[g>>2]=(c[(c[j>>2]|0)+160>>2]|0)-200;while(1){if((c[g>>2]|0)<=0)break;c[f>>2]=(c[f>>2]|0)+(d[(c[e>>2]|0)+(c[g>>2]|0)>>0]|0);c[g>>2]=(c[g>>2]|0)-200}i=h;return c[f>>2]|0}function Zr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=cs(c[(c[e>>2]|0)+212>>2]|0,c[f>>2]|0,0)|0;if(!(c[g>>2]|0)){c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}else{c[d>>2]=ds(c[(c[e>>2]|0)+212>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;b=c[d>>2]|0;i=h;return b|0}return 0}function _r(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(!(c[e>>2]|0)){i=h;return}bs(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0);i=h;return}function $r(a){a=a|0;var d=0,f=0;f=i;i=i+16|0;d=f;c[d>>2]=a;if(!((e[(c[d>>2]|0)+24>>1]|0)&33)){i=f;return}a=(c[d>>2]|0)+24|0;b[a>>1]=(e[a>>1]|0)&-33;if(!((e[(c[d>>2]|0)+24>>1]|0)&1)){i=f;return}a=(c[d>>2]|0)+24|0;b[a>>1]=(e[a>>1]|0)^3;cj(c[d>>2]|0,2);i=f;return}function as(a){a=a|0;var d=0,f=0,g=0;f=i;i=i+16|0;d=f;c[d>>2]=a;g=(c[(c[d>>2]|0)+28>>2]|0)+12|0;c[g>>2]=(c[g>>2]|0)+-1;g=(c[d>>2]|0)+26|0;a=(b[g>>1]|0)+-1<<16>>16;b[g>>1]=a;if(a<<16>>16){i=f;return}a=c[d>>2]|0;if((e[(c[d>>2]|0)+24>>1]|0)&1){dj(a);i=f;return}if(!(c[a+36>>2]|0)){i=f;return}cj(c[d>>2]|0,3);i=f;return}function bs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;do{if(((lg(c[(c[e>>2]|0)+28>>2]|0)|0)==0?(c[f>>2]|0)>>>0<(c[(c[e>>2]|0)+16>>2]|0)>>>0:0)?(c[h>>2]=ug(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0,1)|0,(c[h>>2]|0)!=0):0)c[(c[e>>2]|0)+28>>2]=c[h>>2];a=c[(c[e>>2]|0)+44>>2]|0;c[e>>2]=a}while((a|0)!=0);i=j;return}function cs(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;k=f+4|0;g=f;c[j>>2]=a;c[h>>2]=b;c[k>>2]=e;c[g>>2]=c[k>>2]&(d[(c[j>>2]|0)+33>>0]|0);b=Ob[c[140>>2]&255](c[(c[j>>2]|0)+44>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return b|0}function ds(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;l=k+12|0;g=k+8|0;h=k+4|0;j=k;c[l>>2]=a;c[g>>2]=d;c[h>>2]=e;c[j>>2]=c[(c[h>>2]|0)+4>>2];a=c[l>>2]|0;if(c[c[j>>2]>>2]|0){l=a+12|0;c[l>>2]=(c[l>>2]|0)+1;l=(c[j>>2]|0)+26|0;b[l>>1]=(b[l>>1]|0)+1<<16>>16;c[f>>2]=c[j>>2];l=c[f>>2]|0;i=k;return l|0}else{c[f>>2]=es(a,c[g>>2]|0,c[h>>2]|0)|0;l=c[f>>2]|0;i=k;return l|0}return 0}function es(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=d;c[h>>2]=e;c[j>>2]=c[(c[h>>2]|0)+4>>2];a=c[j>>2]|0;e=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(e|0));c[c[j>>2]>>2]=c[h>>2];c[(c[j>>2]|0)+4>>2]=c[c[h>>2]>>2];c[(c[j>>2]|0)+8>>2]=(c[j>>2]|0)+40;kR(c[(c[j>>2]|0)+8>>2]|0,0,c[(c[f>>2]|0)+28>>2]|0)|0;c[(c[j>>2]|0)+28>>2]=c[f>>2];c[(c[j>>2]|0)+20>>2]=c[g>>2];b[(c[j>>2]|0)+24>>1]=1;j=ds(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;i=k;return j|0}function fs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=i;i=i+32|0;b=f+16|0;e=f+8|0;d=f;c[b>>2]=a;h=e;c[h>>2]=0;c[h+4>>2]=0;h=(c[b>>2]|0)+80|0;g=c[h+4>>2]|0;a=d;c[a>>2]=c[h>>2];c[a+4>>2]=g;a=d;if(!((c[a>>2]|0)!=0|(c[a+4>>2]|0)!=0)){g=e;h=g;h=c[h>>2]|0;g=g+4|0;g=c[g>>2]|0;C=g;i=f;return h|0}h=d;h=fR(c[h>>2]|0,c[h+4>>2]|0,1,0)|0;h=pR(h|0,C|0,c[(c[b>>2]|0)+156>>2]|0,0)|0;h=gR(h|0,C|0,1,0)|0;h=rR(h|0,C|0,c[(c[b>>2]|0)+156>>2]|0,0)|0;g=e;c[g>>2]=h;c[g+4>>2]=C;g=e;h=g;h=c[h>>2]|0;g=g+4|0;g=c[g>>2]|0;C=g;i=f;return h|0}function gs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=i;i=i+64|0;e=s+56|0;f=s+52|0;g=s+48|0;q=s+16|0;j=s+8|0;p=s+44|0;o=s+40|0;k=s+36|0;m=s+32|0;h=s+28|0;l=s+24|0;n=s;c[f>>2]=b;c[g>>2]=d;c[p>>2]=0;c[o>>2]=0;if((c[g>>2]|0)!=0?(c[o>>2]=fj(c[(c[g>>2]|0)+20>>2]|0)|0,(c[o>>2]|0)==0):0){c[e>>2]=7;r=c[e>>2]|0;i=s;return r|0}if(c[g>>2]|0)b=c[(c[g>>2]|0)+20>>2]|0;else b=c[(c[f>>2]|0)+32>>2]|0;c[(c[f>>2]|0)+28>>2]=b;a[(c[f>>2]|0)+19>>0]=a[(c[f>>2]|0)+13>>0]|0;if((c[g>>2]|0)==0?(sr(c[f>>2]|0)|0)!=0:0){c[e>>2]=hs(c[f>>2]|0)|0;r=c[e>>2]|0;i=s;return r|0}t=(c[f>>2]|0)+80|0;b=c[t+4>>2]|0;d=q;c[d>>2]=c[t>>2];c[d+4>>2]=b;a:do if((c[g>>2]|0)!=0?(sr(c[f>>2]|0)|0)==0:0){t=(c[g>>2]|0)+8|0;if((c[t>>2]|0)!=0|(c[t+4>>2]|0)!=0){d=(c[g>>2]|0)+8|0;b=c[d>>2]|0;d=c[d+4>>2]|0}else{d=q;b=c[d>>2]|0;d=c[d+4>>2]|0}t=j;c[t>>2]=b;c[t+4>>2]=d;b=c[g>>2]|0;d=c[b+4>>2]|0;t=(c[f>>2]|0)+80|0;c[t>>2]=c[b>>2];c[t+4>>2]=d;while(1){if(c[p>>2]|0)break a;d=(c[f>>2]|0)+80|0;u=c[d+4>>2]|0;t=j;b=c[t+4>>2]|0;if(!((u|0)<(b|0)|((u|0)==(b|0)?(c[d>>2]|0)>>>0<(c[t>>2]|0)>>>0:0)))break a;c[p>>2]=Pr(c[f>>2]|0,(c[f>>2]|0)+80|0,c[o>>2]|0,1,1)|0}}else r=19;while(0);if((r|0)==19){u=(c[f>>2]|0)+80|0;c[u>>2]=0;c[u+4>>2]=0}b:while(1){if(c[p>>2]|0)break;t=(c[f>>2]|0)+80|0;j=c[t+4>>2]|0;u=q;r=c[u+4>>2]|0;if(!((j|0)<(r|0)|((j|0)==(r|0)?(c[t>>2]|0)>>>0<(c[u>>2]|0)>>>0:0)))break;c[m>>2]=0;u=q;c[p>>2]=Or(c[f>>2]|0,0,c[u>>2]|0,c[u+4>>2]|0,m,h)|0;if((c[m>>2]|0)==0?(t=(c[f>>2]|0)+88|0,t=gR(c[t>>2]|0,c[t+4>>2]|0,c[(c[f>>2]|0)+156>>2]|0,0)|0,u=(c[f>>2]|0)+80|0,(t|0)==(c[u>>2]|0)?(C|0)==(c[u+4>>2]|0):0):0){u=q;t=(c[f>>2]|0)+80|0;t=fR(c[u>>2]|0,c[u+4>>2]|0,c[t>>2]|0,c[t+4>>2]|0)|0;u=(c[(c[f>>2]|0)+160>>2]|0)+8|0;u=pR(t|0,C|0,u|0,((u|0)<0)<<31>>31|0)|0;c[m>>2]=u}c[k>>2]=0;while(1){if(c[p>>2]|0)continue b;if((c[k>>2]|0)>>>0>=(c[m>>2]|0)>>>0)continue b;t=(c[f>>2]|0)+80|0;j=c[t+4>>2]|0;u=q;r=c[u+4>>2]|0;if(!((j|0)<(r|0)|((j|0)==(r|0)?(c[t>>2]|0)>>>0<(c[u>>2]|0)>>>0:0)))continue b;c[p>>2]=Pr(c[f>>2]|0,(c[f>>2]|0)+80|0,c[o>>2]|0,1,1)|0;c[k>>2]=(c[k>>2]|0)+1}}c:do if(c[g>>2]|0){t=4+(c[(c[f>>2]|0)+160>>2]|0)|0;t=rR(c[(c[g>>2]|0)+24>>2]|0,0,t|0,((t|0)<0)<<31>>31|0)|0;u=n;c[u>>2]=t;c[u+4>>2]=C;if(sr(c[f>>2]|0)|0)c[p>>2]=is(c[(c[f>>2]|0)+216>>2]|0,(c[g>>2]|0)+28|0)|0;c[l>>2]=c[(c[g>>2]|0)+24>>2];while(1){if(c[p>>2]|0)break c;if((c[l>>2]|0)>>>0>=(c[(c[f>>2]|0)+56>>2]|0)>>>0)break c;c[p>>2]=Pr(c[f>>2]|0,n,c[o>>2]|0,0,1)|0;c[l>>2]=(c[l>>2]|0)+1}}while(0);kj(c[o>>2]|0);if(!(c[p>>2]|0)){r=q;t=c[r+4>>2]|0;u=(c[f>>2]|0)+80|0;c[u>>2]=c[r>>2];c[u+4>>2]=t}c[e>>2]=c[p>>2];u=c[e>>2]|0;i=s;return u|0}function hs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;f=g+8|0;d=g+4|0;e=g;c[b>>2]=a;c[(c[b>>2]|0)+28>>2]=c[(c[b>>2]|0)+32>>2];c[f>>2]=ps(c[(c[b>>2]|0)+216>>2]|0,187,c[b>>2]|0)|0;c[d>>2]=qs(c[(c[b>>2]|0)+212>>2]|0)|0;while(1){if(!((c[d>>2]|0)!=0?(c[f>>2]|0)==0:0))break;c[e>>2]=c[(c[d>>2]|0)+12>>2];c[f>>2]=os(c[b>>2]|0,c[(c[d>>2]|0)+20>>2]|0)|0;c[d>>2]=c[e>>2]}i=g;return c[f>>2]|0}function is(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;if((c[(c[e>>2]|0)+12>>2]|0)!=(c[(c[d>>2]|0)+112>>2]|0)){c[c[e>>2]>>2]=0;c[(c[e>>2]|0)+12>>2]=c[(c[d>>2]|0)+112>>2]}if((c[c[e>>2]>>2]|0)>>>0>=(c[(c[d>>2]|0)+52+16>>2]|0)>>>0){f=c[f>>2]|0;i=g;return f|0}c[(c[d>>2]|0)+52+16>>2]=c[c[e>>2]>>2];c[(c[d>>2]|0)+52+24>>2]=c[(c[e>>2]|0)+4>>2];c[(c[d>>2]|0)+52+24+4>>2]=c[(c[e>>2]|0)+8>>2];js(c[d>>2]|0);f=c[f>>2]|0;i=g;return f|0}function js(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+24|0;f=m+20|0;g=m+16|0;k=m+12|0;j=m+8|0;l=m+4|0;h=m;c[d>>2]=a;c[f>>2]=0;c[g>>2]=0;c[k>>2]=0;c[j>>2]=0;if(!(c[(c[d>>2]|0)+52+16>>2]|0)){i=m;return}a=c[d>>2]|0;ls(a,ks(c[(c[d>>2]|0)+52+16>>2]|0)|0,f,g,k)|0;c[j>>2]=(c[(c[d>>2]|0)+52+16>>2]|0)-(c[k>>2]|0);c[h>>2]=0;while(1){if((c[h>>2]|0)>=8192)break;if((e[(c[f>>2]|0)+(c[h>>2]<<1)>>1]|0|0)>(c[j>>2]|0))b[(c[f>>2]|0)+(c[h>>2]<<1)>>1]=0;c[h>>2]=(c[h>>2]|0)+1}c[l>>2]=(c[f>>2]|0)-((c[g>>2]|0)+((c[j>>2]|0)+1<<2)); -kR((c[g>>2]|0)+((c[j>>2]|0)+1<<2)|0,0,c[l>>2]|0)|0;i=m;return}function ks(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=(((c[e>>2]|0)+4096-4062-1|0)>>>0)/4096|0;i=d;return c[b>>2]|0}function ls(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;q=p+32|0;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;o=p+12|0;m=p+8|0;n=p+4|0;l=p;c[q>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[o>>2]=ms(c[q>>2]|0,c[g>>2]|0,m)|0;if(c[o>>2]|0){q=c[o>>2]|0;i=p;return q|0}c[l>>2]=(c[m>>2]|0)+16384;if(!(c[g>>2]|0)){c[m>>2]=(c[m>>2]|0)+136;c[n>>2]=0}else c[n>>2]=4062+((c[g>>2]|0)-1<<12);c[c[j>>2]>>2]=(c[m>>2]|0)+-4;c[c[h>>2]>>2]=c[l>>2];c[c[k>>2]>>2]=c[n>>2];q=c[o>>2]|0;i=p;return q|0}function ms(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;n=o+8|0;m=o+4|0;l=o;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[n>>2]=0;do if((c[(c[h>>2]|0)+24>>2]|0)<=(c[j>>2]|0)){c[m>>2]=(c[j>>2]|0)+1<<2;f=c[m>>2]|0;c[l>>2]=Md(c[(c[h>>2]|0)+32>>2]|0,f,((f|0)<0)<<31>>31)|0;if(c[l>>2]|0){kR((c[l>>2]|0)+(c[(c[h>>2]|0)+24>>2]<<2)|0,0,(c[j>>2]|0)+1-(c[(c[h>>2]|0)+24>>2]|0)<<2|0)|0;c[(c[h>>2]|0)+32>>2]=c[l>>2];c[(c[h>>2]|0)+24>>2]=(c[j>>2]|0)+1;break}c[c[k>>2]>>2]=0;c[g>>2]=7;n=c[g>>2]|0;i=o;return n|0}while(0);do if(!(c[(c[(c[h>>2]|0)+32>>2]|0)+(c[j>>2]<<2)>>2]|0))if((d[(c[h>>2]|0)+43>>0]|0|0)==2){f=ig(32768,0)|0;c[(c[(c[h>>2]|0)+32>>2]|0)+(c[j>>2]<<2)>>2]=f;if(c[(c[(c[h>>2]|0)+32>>2]|0)+(c[j>>2]<<2)>>2]|0)break;c[n>>2]=7;break}else{c[n>>2]=ns(c[(c[h>>2]|0)+4>>2]|0,c[j>>2]|0,32768,d[(c[h>>2]|0)+44>>0]|0,(c[(c[h>>2]|0)+32>>2]|0)+(c[j>>2]<<2)|0)|0;if((c[n>>2]|0)!=8)break;f=(c[h>>2]|0)+46|0;a[f>>0]=d[f>>0]|0|2;c[n>>2]=0;break}while(0);c[c[k>>2]>>2]=c[(c[(c[h>>2]|0)+32>>2]|0)+(c[j>>2]<<2)>>2];c[g>>2]=c[n>>2];n=c[g>>2]|0;i=o;return n|0}function ns(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;f=Zb[c[(c[c[m>>2]>>2]|0)+52>>2]&255](c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;i=g;return f|0}function os(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;k=h+20|0;j=h+16|0;g=h+12|0;e=h+8|0;f=h+4|0;d=h;c[k>>2]=a;c[j>>2]=b;c[g>>2]=0;c[e>>2]=c[k>>2];c[f>>2]=Zr(c[e>>2]|0,c[j>>2]|0)|0;do if(c[f>>2]|0){if((vs(c[f>>2]|0)|0)==1){ws(c[f>>2]|0);break}c[d>>2]=0;c[g>>2]=xs(c[(c[e>>2]|0)+216>>2]|0,c[(c[f>>2]|0)+20>>2]|0,d)|0;if(!(c[g>>2]|0))c[g>>2]=ys(c[f>>2]|0,c[d>>2]|0)|0;if(!(c[g>>2]|0))Qb[c[(c[e>>2]|0)+204>>2]&255](c[f>>2]|0);zs(c[f>>2]|0)}while(0);_i(c[(c[e>>2]|0)+96>>2]|0);i=h;return c[g>>2]|0}function ps(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;k=m+4|0;j=m;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[l>>2]=0;if(!(a[(c[f>>2]|0)+44>>0]|0)){l=c[l>>2]|0;i=m;return l|0}c[k>>2]=c[(c[f>>2]|0)+52+16>>2];e=(c[f>>2]|0)+52|0;b=ts(c[f>>2]|0)|0;d=e+48|0;do{a[e>>0]=a[b>>0]|0;e=e+1|0;b=b+1|0}while((e|0)<(d|0));c[j>>2]=(c[(c[f>>2]|0)+52+16>>2]|0)+1;while(1){if(c[l>>2]|0)break;if((c[j>>2]|0)>>>0>(c[k>>2]|0)>>>0)break;e=c[g>>2]|0;b=c[h>>2]|0;d=us(c[f>>2]|0,c[j>>2]|0)|0;c[l>>2]=Yb[e&255](b,d)|0;c[j>>2]=(c[j>>2]|0)+1}if((c[k>>2]|0)==(c[(c[f>>2]|0)+52+16>>2]|0)){l=c[l>>2]|0;i=m;return l|0}js(c[f>>2]|0);l=c[l>>2]|0;i=m;return l|0}function qs(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[c[b>>2]>>2];while(1){if(!(c[d>>2]|0))break;c[(c[d>>2]|0)+12>>2]=c[(c[d>>2]|0)+32>>2];c[d>>2]=c[(c[d>>2]|0)+32>>2]}a=rs(c[c[b>>2]>>2]|0)|0;i=e;return a|0}function rs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+144|0;d=j+136|0;f=j+8|0;h=j+4|0;g=j;c[d>>2]=a;a=f;b=a+128|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));while(1){if(!(c[d>>2]|0))break;c[h>>2]=c[d>>2];c[d>>2]=c[(c[h>>2]|0)+12>>2];c[(c[h>>2]|0)+12>>2]=0;c[g>>2]=0;while(1){if((c[g>>2]|0)>=31)break;if(!(c[f+(c[g>>2]<<2)>>2]|0)){e=6;break}c[h>>2]=ss(c[f+(c[g>>2]<<2)>>2]|0,c[h>>2]|0)|0;c[f+(c[g>>2]<<2)>>2]=0;c[g>>2]=(c[g>>2]|0)+1}if((e|0)==6){e=0;c[f+(c[g>>2]<<2)>>2]=c[h>>2]}if((c[g>>2]|0)!=31)continue;b=ss(c[f+(c[g>>2]<<2)>>2]|0,c[h>>2]|0)|0;c[f+(c[g>>2]<<2)>>2]=b}c[h>>2]=c[f>>2];c[g>>2]=1;while(1){a=c[h>>2]|0;if((c[g>>2]|0)>=32)break;c[h>>2]=ss(a,c[f+(c[g>>2]<<2)>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+1}i=j;return a|0}function ss(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+64|0;d=h+52|0;e=h+48|0;g=h+8|0;f=h;c[d>>2]=a;c[e>>2]=b;c[f>>2]=g;while(1){a=c[d>>2]|0;if(!((c[d>>2]|0)!=0?(c[e>>2]|0)!=0:0))break;if((c[a+20>>2]|0)>>>0<(c[(c[e>>2]|0)+20>>2]|0)>>>0){c[(c[f>>2]|0)+12>>2]=c[d>>2];c[f>>2]=c[d>>2];c[d>>2]=c[(c[d>>2]|0)+12>>2];continue}else{c[(c[f>>2]|0)+12>>2]=c[e>>2];c[f>>2]=c[e>>2];c[e>>2]=c[(c[e>>2]|0)+12>>2];continue}}if(a){c[(c[f>>2]|0)+12>>2]=c[d>>2];g=g+12|0;g=c[g>>2]|0;i=h;return g|0}if(c[e>>2]|0){c[(c[f>>2]|0)+12>>2]=c[e>>2];g=g+12|0;g=c[g>>2]|0;i=h;return g|0}else{c[(c[f>>2]|0)+12>>2]=0;g=g+12|0;g=c[g>>2]|0;i=h;return g|0}return 0}function ts(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[(c[b>>2]|0)+32>>2]>>2]|0}function us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;e=g+8|0;h=g+4|0;f=g;c[e>>2]=a;c[h>>2]=b;c[f>>2]=ks(c[h>>2]|0)|0;b=c[h>>2]|0;if(!(c[f>>2]|0)){c[d>>2]=c[(c[c[(c[e>>2]|0)+32>>2]>>2]|0)+(34+b-1<<2)>>2];h=c[d>>2]|0;i=g;return h|0}else{c[d>>2]=c[(c[(c[(c[e>>2]|0)+32>>2]|0)+(c[f>>2]<<2)>>2]|0)+((((b-1-4062|0)>>>0)%4096|0)<<2)>>2];h=c[d>>2]|0;i=g;return h|0}return 0}function vs(a){a=a|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;i=e;return b[(c[d>>2]|0)+26>>1]|0}function ws(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if((e[(c[b>>2]|0)+24>>1]|0)&2)cj(c[b>>2]|0,1);a=(c[(c[b>>2]|0)+28>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+-1;Ub[c[144>>2]&255](c[(c[(c[b>>2]|0)+28>>2]|0)+44>>2]|0,c[c[b>>2]>>2]|0,1);i=d;return}function xs(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+64|0;s=w+56|0;g=w+52|0;h=w+48|0;t=w+44|0;u=w+40|0;o=w+36|0;m=w+32|0;p=w+28|0;j=w+24|0;k=w+20|0;q=w+16|0;n=w+12|0;r=w+8|0;v=w+4|0;l=w;c[g>>2]=a;c[h>>2]=d;c[t>>2]=f;c[u>>2]=0;c[o>>2]=c[(c[g>>2]|0)+52+16>>2];if((c[o>>2]|0)!=0?(b[(c[g>>2]|0)+40>>1]|0)!=0:0){c[p>>2]=ks(c[(c[g>>2]|0)+100>>2]|0)|0;c[m>>2]=ks(c[o>>2]|0)|0;a:while(1){if(!((c[m>>2]|0)>=(c[p>>2]|0)?(c[u>>2]|0)==0:0)){g=18;break}c[v>>2]=ls(c[g>>2]|0,c[m>>2]|0,j,k,q)|0;if(c[v>>2]|0){g=7;break}c[r>>2]=8192;c[n>>2]=Es(c[h>>2]|0)|0;while(1){if(!(b[(c[j>>2]|0)+(c[n>>2]<<1)>>1]|0))break;c[l>>2]=(e[(c[j>>2]|0)+(c[n>>2]<<1)>>1]|0)+(c[q>>2]|0);if(((c[l>>2]|0)>>>0<=(c[o>>2]|0)>>>0?(c[l>>2]|0)>>>0>=(c[(c[g>>2]|0)+100>>2]|0)>>>0:0)?(c[(c[k>>2]|0)+(e[(c[j>>2]|0)+(c[n>>2]<<1)>>1]<<2)>>2]|0)==(c[h>>2]|0):0)c[u>>2]=c[l>>2];f=c[r>>2]|0;c[r>>2]=f+-1;if(!f){g=15;break a}c[n>>2]=Fs(c[n>>2]|0)|0}c[m>>2]=(c[m>>2]|0)+-1}if((g|0)==7){c[s>>2]=c[v>>2];v=c[s>>2]|0;i=w;return v|0}else if((g|0)==15){c[s>>2]=Lj(53690)|0;v=c[s>>2]|0;i=w;return v|0}else if((g|0)==18){c[c[t>>2]>>2]=c[u>>2];c[s>>2]=0;v=c[s>>2]|0;i=w;return v|0}}c[c[t>>2]>>2]=0;c[s>>2]=0;v=c[s>>2]|0;i=w;return v|0}function ys(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;e=n+32|0;f=n+28|0;h=n+24|0;j=n+20|0;m=n+16|0;k=n+12|0;g=n;l=n+8|0;c[e>>2]=b;c[f>>2]=d;c[h>>2]=c[(c[e>>2]|0)+16>>2];c[j>>2]=c[(c[e>>2]|0)+20>>2];c[m>>2]=0;c[k>>2]=c[(c[h>>2]|0)+160>>2];if(c[f>>2]|0)c[m>>2]=Ds(c[(c[h>>2]|0)+216>>2]|0,c[f>>2]|0,c[k>>2]|0,c[(c[e>>2]|0)+4>>2]|0)|0;else{d=c[(c[h>>2]|0)+160>>2]|0;d=rR((c[j>>2]|0)-1|0,0,d|0,((d|0)<0)<<31>>31|0)|0;b=g;c[b>>2]=d;c[b+4>>2]=C;b=g;k=Wr(c[(c[h>>2]|0)+64>>2]|0,c[(c[e>>2]|0)+4>>2]|0,c[k>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;c[m>>2]=k;c[m>>2]=(c[m>>2]|0)==522?0:k}if((c[j>>2]|0)!=1){m=c[m>>2]|0;i=n;return m|0}if(c[m>>2]|0){d=(c[h>>2]|0)+112|0;f=d+16|0;do{a[d>>0]=255;d=d+1|0}while((d|0)<(f|0));m=c[m>>2]|0;i=n;return m|0}else{c[l>>2]=(c[(c[e>>2]|0)+4>>2]|0)+24;d=(c[h>>2]|0)+112|0;e=c[l>>2]|0;f=d+16|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));m=c[m>>2]|0;i=n;return m|0}return 0}function zs(a){a=a|0;var b=0,d=0,f=0;d=i;i=i+16|0;f=d+4|0;b=d;c[f>>2]=a;c[b>>2]=c[(c[f>>2]|0)+16>>2];a=c[f>>2]|0;if((e[(c[f>>2]|0)+24>>1]|0)&64){As(a);f=c[b>>2]|0;Bs(f);i=d;return}else{as(a);f=c[b>>2]|0;Bs(f);i=d;return}}function As(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+4|0;f=b;c[d>>2]=a;c[f>>2]=c[(c[d>>2]|0)+16>>2];e=(c[f>>2]|0)+128|0;c[e>>2]=(c[e>>2]|0)+-1;c[(c[d>>2]|0)+12>>2]=c[(c[f>>2]|0)+144>>2];c[(c[f>>2]|0)+144>>2]=c[d>>2];e=c[(c[f>>2]|0)+64>>2]|0;a=c[(c[f>>2]|0)+160>>2]|0;a=rR((c[(c[d>>2]|0)+20>>2]|0)-1|0,0,a|0,((a|0)<0)<<31>>31|0)|0;Cs(e,a,C,c[(c[d>>2]|0)+4>>2]|0)|0;i=b;return}function Bs(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(c[(c[b>>2]|0)+128>>2]|0){i=d;return}if(Ri(c[(c[b>>2]|0)+212>>2]|0)|0){i=d;return}gr(c[b>>2]|0);i=d;return}function Cs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;i=i+16|0;c[f+12>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[f+8>>2]=e;i=f;return 0}function Ds(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;l=g+24|0;n=g+20|0;h=g+16|0;k=g+12|0;j=g+8|0;m=g;c[l>>2]=a;c[n>>2]=b;c[h>>2]=d;c[k>>2]=f;c[j>>2]=e[(c[l>>2]|0)+52+14>>1];c[j>>2]=(c[j>>2]&65024)+((c[j>>2]&1)<<16);f=(c[j>>2]|0)+24|0;f=rR((c[n>>2]|0)-1|0,0,f|0,((f|0)<0)<<31>>31|0)|0;f=gR(32,0,f|0,C|0)|0;f=gR(f|0,C|0,24,0)|0;a=m;c[a>>2]=f;c[a+4>>2]=C;a=m;a=Wr(c[(c[l>>2]|0)+8>>2]|0,c[k>>2]|0,(c[h>>2]|0)>(c[j>>2]|0)?c[j>>2]|0:c[h>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;i=g;return a|0}function Es(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)*383&8191|0}function Fs(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)+1&8191|0}function Gs(a){a=a|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;tr(c[d>>2]|0)|0;if((b[(c[d>>2]|0)+40>>1]|0)<0){i=e;return}zr(c[d>>2]|0,3+(b[(c[d>>2]|0)+40>>1]|0)|0);b[(c[d>>2]|0)+40>>1]=-1;i=e;return}function Hs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=Yb[c[(c[c[f>>2]>>2]|0)+28>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return b|0}function Is(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+64|0;z=A+52|0;v=A+48|0;w=A+44|0;m=A+40|0;n=A+36|0;o=A+32|0;p=A+28|0;q=A+24|0;r=A+20|0;s=A+16|0;y=A+12|0;t=A+8|0;x=A+4|0;u=A;c[v>>2]=b;c[w>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[r>>2]=k;c[s>>2]=l;c[t>>2]=0;c[x>>2]=c[w>>2];c[u>>2]=c[m>>2];if(a[(c[v>>2]|0)+46>>0]|0){c[z>>2]=8;z=c[z>>2]|0;i=A;return z|0}c[y>>2]=Ns(c[v>>2]|0,1,1)|0;if(c[y>>2]|0){c[z>>2]=c[y>>2];z=c[z>>2]|0;i=A;return z|0}a[(c[v>>2]|0)+45>>0]=1;do if(c[w>>2]|0){c[y>>2]=Os(c[v>>2]|0,c[m>>2]|0,c[n>>2]|0,0,1)|0;if(!(c[y>>2]|0)){a[(c[v>>2]|0)+44>>0]=1;break}if((c[y>>2]|0)==5){c[x>>2]=0;c[u>>2]=0;c[y>>2]=0}}while(0);if(((c[y>>2]|0)==0?(c[y>>2]=Ps(c[v>>2]|0,t)|0,(c[t>>2]|0)!=0):0)?(c[c[c[(c[v>>2]|0)+4>>2]>>2]>>2]|0)>=3:0)Cs(c[(c[v>>2]|0)+4>>2]|0,0,0,0)|0;if(!(c[y>>2]|0)){if((c[(c[v>>2]|0)+52+16>>2]|0)!=0?(j=Qs(c[v>>2]|0)|0,(j|0)!=(c[p>>2]|0)):0)c[y>>2]=Lj(54390)|0;else c[y>>2]=Rs(c[v>>2]|0,c[x>>2]|0,c[u>>2]|0,c[n>>2]|0,c[o>>2]|0,c[q>>2]|0)|0;if((c[y>>2]|0)==0|(c[y>>2]|0)==5){if(c[r>>2]|0)c[c[r>>2]>>2]=c[(c[v>>2]|0)+52+16>>2];if(c[s>>2]|0){j=c[(Ss(c[v>>2]|0)|0)>>2]|0;c[c[s>>2]>>2]=j}}}if(c[t>>2]|0){m=(c[v>>2]|0)+52|0;n=m+48|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(n|0))}tr(c[v>>2]|0)|0;Br(c[v>>2]|0,1,1);a[(c[v>>2]|0)+45>>0]=0;if((c[y>>2]|0)==0?(c[w>>2]|0)!=(c[x>>2]|0):0)m=5;else m=c[y>>2]|0;c[z>>2]=m;z=c[z>>2]|0;i=A;return z|0}function Js(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;Ob[c[(c[c[h>>2]>>2]|0)+40>>2]&255](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return}function Ks(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k+16|0;e=k+24|0;f=k+8|0;h=k;g=k+20|0;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;Sj();c[g>>2]=Si(c[(c[e>>2]|0)+8>>2]|0,h)|0;if((c[g>>2]|0)==0?(a=h,b=c[a+4>>2]|0,h=f,d=c[h+4>>2]|0,(b|0)>(d|0)|((b|0)==(d|0)?(c[a>>2]|0)>>>0>(c[h>>2]|0)>>>0:0)):0){h=f;c[g>>2]=nr(c[(c[e>>2]|0)+8>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0}Tj();if(!(c[g>>2]|0)){i=k;return}h=c[g>>2]|0;c[j>>2]=c[(c[e>>2]|0)+108>>2];Rd(h,26766,j);i=k;return}function Ls(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;if((d[(c[e>>2]|0)+43>>0]|0|0)!=2){Ms(c[(c[e>>2]|0)+4>>2]|0,c[f>>2]|0)|0;i=h;return}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+24>>2]|0))break;Kd(c[(c[(c[e>>2]|0)+32>>2]|0)+(c[g>>2]<<2)>>2]|0);c[(c[(c[e>>2]|0)+32>>2]|0)+(c[g>>2]<<2)>>2]=0;c[g>>2]=(c[g>>2]|0)+1}i=h;return}function Ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Yb[c[(c[c[f>>2]>>2]|0)+64>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function Ns(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if(a[(c[g>>2]|0)+43>>0]|0){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}else{c[k>>2]=Ar(c[(c[g>>2]|0)+4>>2]|0,c[h>>2]|0,c[j>>2]|0,10)|0;c[f>>2]=c[k>>2];k=c[f>>2]|0;i=l;return k|0}return 0}function Os(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;while(1){c[m>>2]=Ns(c[g>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;if(!((c[h>>2]|0)!=0&(c[m>>2]|0)==5)){g=4;break}if(!(Tb[c[h>>2]&255](c[j>>2]|0)|0)){g=4;break}}if((g|0)==4){i=n;return c[m>>2]|0}return 0}function Ps(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;j=m+4|0;k=m;c[g>>2]=b;c[h>>2]=e;c[l>>2]=ms(c[g>>2]|0,0,k)|0;if(c[l>>2]|0){c[f>>2]=c[l>>2];l=c[f>>2]|0;i=m;return l|0}if(c[k>>2]|0)e=ct(c[g>>2]|0,c[h>>2]|0)|0;else e=1;c[j>>2]=e;do if(c[j>>2]|0){e=c[g>>2]|0;if((d[(c[g>>2]|0)+46>>0]|0)&2){k=yr(e,0)|0;c[l>>2]=k;if(k)break;zr(c[g>>2]|0,0);c[l>>2]=264;break}b=Ns(e,0,1)|0;c[l>>2]=b;if(!b){a[(c[g>>2]|0)+44>>0]=1;k=ms(c[g>>2]|0,0,k)|0;c[l>>2]=k;if(0==(k|0)?(c[j>>2]=ct(c[g>>2]|0,c[h>>2]|0)|0,(c[j>>2]|0)!=0):0){c[l>>2]=dt(c[g>>2]|0)|0;c[c[h>>2]>>2]=1}a[(c[g>>2]|0)+44>>0]=0;Br(c[g>>2]|0,0,1)}}while(0);if((c[j>>2]|0)==0?(c[(c[g>>2]|0)+52>>2]|0)!=3007e3:0)c[l>>2]=et(53243)|0;c[f>>2]=c[l>>2];l=c[f>>2]|0;i=m;return l|0}function Qs(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return((e[(c[b>>2]|0)+52+14>>1]|0)&65024)+(((e[(c[b>>2]|0)+52+14>>1]|0)&1)<<16)|0}function Rs(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0;H=i;i=i+112|0;h=H+104|0;j=H+100|0;k=H+96|0;l=H+92|0;m=H+88|0;n=H+84|0;o=H+80|0;A=H+76|0;E=H+72|0;z=H+68|0;q=H+64|0;r=H+60|0;u=H+56|0;t=H+52|0;p=H+48|0;y=H+44|0;F=H+40|0;x=H+24|0;v=H+36|0;w=H+16|0;s=H+8|0;D=H;B=H+32|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[A>>2]=0;c[z>>2]=0;c[q>>2]=0;c[r>>2]=0;c[E>>2]=Qs(c[j>>2]|0)|0;c[y>>2]=Ss(c[j>>2]|0)|0;a:do if((c[c[y>>2]>>2]|0)>>>0<(c[(c[j>>2]|0)+52+16>>2]|0)>>>0){c[A>>2]=Ts(c[j>>2]|0,z)|0;if(c[A>>2]|0){c[h>>2]=c[A>>2];G=c[h>>2]|0;i=H;return G|0}c[u>>2]=c[(c[j>>2]|0)+52+16>>2];c[t>>2]=c[(c[j>>2]|0)+52+20>>2];c[p>>2]=1;while(1){if((c[p>>2]|0)>=5)break;c[F>>2]=c[(c[y>>2]|0)+4+(c[p>>2]<<2)>>2];do if((c[u>>2]|0)>>>0>(c[F>>2]|0)>>>0){c[A>>2]=Os(c[j>>2]|0,c[l>>2]|0,c[m>>2]|0,3+(c[p>>2]|0)|0,1)|0;if(!(c[A>>2]|0)){c[(c[y>>2]|0)+4+(c[p>>2]<<2)>>2]=(c[p>>2]|0)==1?c[u>>2]|0:-1;Br(c[j>>2]|0,3+(c[p>>2]|0)|0,1);break}if((c[A>>2]|0)!=5)break a;c[u>>2]=c[F>>2];c[l>>2]=0}while(0);c[p>>2]=(c[p>>2]|0)+1}if((c[c[y>>2]>>2]|0)>>>0<(c[u>>2]|0)>>>0?(G=Os(c[j>>2]|0,c[l>>2]|0,c[m>>2]|0,3,1)|0,c[A>>2]=G,(G|0)==0):0){c[v>>2]=c[c[y>>2]>>2];c[(c[y>>2]|0)+32>>2]=c[u>>2];if(c[n>>2]|0)c[A>>2]=or(c[(c[j>>2]|0)+8>>2]|0,c[n>>2]|0)|0;if(((c[A>>2]|0)==0?(g=c[E>>2]|0,g=rR(c[t>>2]|0,0,g|0,((g|0)<0)<<31>>31|0)|0,G=w,c[G>>2]=g,c[G+4>>2]=C,c[A>>2]=Si(c[(c[j>>2]|0)+4>>2]|0,x)|0,(c[A>>2]|0)==0):0)?(g=x,d=c[g+4>>2]|0,G=w,F=c[G+4>>2]|0,(d|0)<(F|0)|((d|0)==(F|0)?(c[g>>2]|0)>>>0<(c[G>>2]|0)>>>0:0)):0)Js(c[(c[j>>2]|0)+4>>2]|0,5,w);b:while(1){if(c[A>>2]|0)break;while(1){if(Us(c[z>>2]|0,q,r)|0)break b;if((c[r>>2]|0)>>>0<=(c[v>>2]|0)>>>0)continue b;if((c[r>>2]|0)>>>0>(c[u>>2]|0)>>>0)continue b;if((c[q>>2]|0)>>>0>(c[t>>2]|0)>>>0)continue b;g=(c[E>>2]|0)+24|0;g=rR((c[r>>2]|0)-1|0,0,g|0,((g|0)<0)<<31>>31|0)|0;g=gR(32,0,g|0,C|0)|0;g=gR(g|0,C|0,24,0)|0;G=s;c[G>>2]=g;c[G+4>>2]=C;G=s;c[A>>2]=Wr(c[(c[j>>2]|0)+8>>2]|0,c[o>>2]|0,c[E>>2]|0,c[G>>2]|0,c[G+4>>2]|0)|0;if(c[A>>2]|0)break b;g=c[E>>2]|0;g=rR((c[q>>2]|0)-1|0,0,g|0,((g|0)<0)<<31>>31|0)|0;G=s;c[G>>2]=g;c[G+4>>2]=C;G=s;c[A>>2]=Fg(c[(c[j>>2]|0)+4>>2]|0,c[o>>2]|0,c[E>>2]|0,c[G>>2]|0,c[G+4>>2]|0)|0;if(!((c[A>>2]|0)==0&(c[A>>2]|0)==0))break b}}if(!(c[A>>2]|0)){G=c[u>>2]|0;if((G|0)==(c[(ts(c[j>>2]|0)|0)+16>>2]|0)?(g=c[E>>2]|0,g=rR(c[(c[j>>2]|0)+52+20>>2]|0,0,g|0,((g|0)<0)<<31>>31|0)|0,G=D,c[G>>2]=g,c[G+4>>2]=C,G=D,c[A>>2]=nr(c[(c[j>>2]|0)+4>>2]|0,c[G>>2]|0,c[G+4>>2]|0)|0,(c[A>>2]|0)==0&(c[n>>2]|0)!=0):0)c[A>>2]=or(c[(c[j>>2]|0)+4>>2]|0,c[n>>2]|0)|0;if(!(c[A>>2]|0))c[c[y>>2]>>2]=c[u>>2]}Br(c[j>>2]|0,3,1)}if((c[A>>2]|0)==5){c[A>>2]=0;G=36}else G=36}else G=36;while(0);do if((G|0)==36?(c[A>>2]|0)==0&(c[k>>2]|0)!=0:0){if((c[c[y>>2]>>2]|0)>>>0<(c[(c[j>>2]|0)+52+16>>2]|0)>>>0){c[A>>2]=5;break}if((c[k>>2]|0)>=2?(Sd(4,B),c[A>>2]=Os(c[j>>2]|0,c[l>>2]|0,c[m>>2]|0,4,4)|0,(c[A>>2]|0)==0):0){if((c[k>>2]|0)==3){Vs(c[j>>2]|0,c[B>>2]|0);c[A>>2]=nr(c[(c[j>>2]|0)+8>>2]|0,0,0)|0}Br(c[j>>2]|0,4,4)}}while(0);Ws(c[z>>2]|0);c[h>>2]=c[A>>2];G=c[h>>2]|0;i=H;return G|0}function Ss(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[c[(c[b>>2]|0)+32>>2]>>2]|0)+96|0}function Ts(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+64|0;e=v+60|0;f=v+56|0;g=v+52|0;t=v+48|0;s=v+44|0;n=v+40|0;q=v+36|0;m=v+32|0;l=v+28|0;u=v+24|0;h=v+20|0;o=v+16|0;k=v+12|0;p=v+8|0;r=v+4|0;j=v;c[f>>2]=a;c[g>>2]=d;c[u>>2]=0;c[n>>2]=c[(c[f>>2]|0)+52+16>>2];c[s>>2]=(ks(c[n>>2]|0)|0)+1;c[q>>2]=28+(((c[s>>2]|0)-1|0)*20|0)+(c[n>>2]<<1);d=c[q>>2]|0;c[t>>2]=Jd(d,((d|0)<0)<<31>>31)|0;if(!(c[t>>2]|0)){c[e>>2]=7;u=c[e>>2]|0;i=v;return u|0}kR(c[t>>2]|0,0,c[q>>2]|0)|0;c[(c[t>>2]|0)+4>>2]=c[s>>2];c[l>>2]=Jd(((c[n>>2]|0)>>>0>4096?4096:c[n>>2]|0)<<1,0)|0;if(!(c[l>>2]|0))c[u>>2]=7;c[m>>2]=0;while(1){if(c[u>>2]|0)break;if((c[m>>2]|0)>=(c[s>>2]|0))break;c[u>>2]=ls(c[f>>2]|0,c[m>>2]|0,h,k,o)|0;if(!(c[u>>2]|0)){c[k>>2]=(c[k>>2]|0)+4;if(((c[m>>2]|0)+1|0)==(c[s>>2]|0))c[r>>2]=(c[n>>2]|0)-(c[o>>2]|0);else c[r>>2]=((c[h>>2]|0)-(c[k>>2]|0)|0)/4|0;c[j>>2]=(c[t>>2]|0)+8+((c[(c[t>>2]|0)+4>>2]|0)*20|0)+(c[o>>2]<<1);c[o>>2]=(c[o>>2]|0)+1;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[r>>2]|0))break;b[(c[j>>2]|0)+(c[p>>2]<<1)>>1]=c[p>>2];c[p>>2]=(c[p>>2]|0)+1}at(c[k>>2]|0,c[l>>2]|0,c[j>>2]|0,r);c[(c[t>>2]|0)+8+((c[m>>2]|0)*20|0)+16>>2]=c[o>>2];c[(c[t>>2]|0)+8+((c[m>>2]|0)*20|0)+12>>2]=c[r>>2];c[(c[t>>2]|0)+8+((c[m>>2]|0)*20|0)+4>>2]=c[j>>2];c[(c[t>>2]|0)+8+((c[m>>2]|0)*20|0)+8>>2]=c[k>>2]}c[m>>2]=(c[m>>2]|0)+1}Kd(c[l>>2]|0);if(c[u>>2]|0)Ws(c[t>>2]|0);c[c[g>>2]>>2]=c[t>>2];c[e>>2]=c[u>>2];u=c[e>>2]|0;i=v;return u|0}function Us(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;f=p+28|0;g=p+24|0;h=p+20|0;k=p+16|0;m=p+12|0;j=p+8|0;n=p+4|0;l=p;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[m>>2]=-1;c[k>>2]=c[c[f>>2]>>2];c[j>>2]=(c[(c[f>>2]|0)+4>>2]|0)-1;while(1){if((c[j>>2]|0)<0)break;c[n>>2]=(c[f>>2]|0)+8+((c[j>>2]|0)*20|0);while(1){if((c[c[n>>2]>>2]|0)>=(c[(c[n>>2]|0)+12>>2]|0))break;c[l>>2]=c[(c[(c[n>>2]|0)+8>>2]|0)+((e[(c[(c[n>>2]|0)+4>>2]|0)+(c[c[n>>2]>>2]<<1)>>1]|0)<<2)>>2];if((c[l>>2]|0)>>>0>(c[k>>2]|0)>>>0){o=6;break}b=c[n>>2]|0;c[b>>2]=(c[b>>2]|0)+1}if((o|0)==6?(o=0,(c[l>>2]|0)>>>0<(c[m>>2]|0)>>>0):0){c[m>>2]=c[l>>2];c[c[h>>2]>>2]=(c[(c[n>>2]|0)+16>>2]|0)+(e[(c[(c[n>>2]|0)+4>>2]|0)+(c[c[n>>2]>>2]<<1)>>1]|0)}c[j>>2]=(c[j>>2]|0)+-1}o=c[m>>2]|0;c[c[f>>2]>>2]=o;c[c[g>>2]>>2]=o;i=p;return(c[m>>2]|0)==-1|0}function Vs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;e=f+8|0;d=f+4|0;j=f;c[g>>2]=a;c[h>>2]=b;c[e>>2]=Ss(c[g>>2]|0)|0;c[j>>2]=(c[g>>2]|0)+52+32;b=(c[g>>2]|0)+112|0;c[b>>2]=(c[b>>2]|0)+1;c[(c[g>>2]|0)+52+16>>2]=0;b=c[j>>2]|0;Xs(b,1+($q(c[j>>2]|0)|0)|0);c[(c[g>>2]|0)+52+32+4>>2]=c[h>>2];Ys(c[g>>2]|0);c[c[e>>2]>>2]=0;c[(c[e>>2]|0)+32>>2]=0;c[(c[e>>2]|0)+4+4>>2]=0;c[d>>2]=2;while(1){if((c[d>>2]|0)>=5)break;c[(c[e>>2]|0)+4+(c[d>>2]<<2)>>2]=-1;c[d>>2]=(c[d>>2]|0)+1}i=f;return}function Ws(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[d>>2]|0);i=b;return}function Xs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;a[c[f>>2]>>0]=(c[g>>2]|0)>>>24;a[(c[f>>2]|0)+1>>0]=(c[g>>2]|0)>>>16;a[(c[f>>2]|0)+2>>0]=(c[g>>2]|0)>>>8;a[(c[f>>2]|0)+3>>0]=c[g>>2];i=e;return}function Ys(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h+8|0;g=h+4|0;c[f>>2]=b;c[g>>2]=ts(c[f>>2]|0)|0;c[h>>2]=40;a[(c[f>>2]|0)+52+12>>0]=1;c[(c[f>>2]|0)+52>>2]=3007e3;Zs(1,(c[f>>2]|0)+52|0,40,0,(c[f>>2]|0)+52+40|0);b=(c[g>>2]|0)+48|0;d=(c[f>>2]|0)+52|0;e=b+48|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(e|0));_s(c[f>>2]|0);b=c[g>>2]|0;d=(c[f>>2]|0)+52|0;e=b+48|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(e|0));i=h;return}function Zs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+48|0;g=o+32|0;q=o+28|0;p=o+24|0;h=o+20|0;j=o+16|0;m=o+12|0;n=o+8|0;k=o+4|0;l=o;c[g>>2]=a;c[q>>2]=b;c[p>>2]=d;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[q>>2];c[l>>2]=(c[q>>2]|0)+(c[p>>2]|0);if(c[h>>2]|0){c[m>>2]=c[c[h>>2]>>2];c[n>>2]=c[(c[h>>2]|0)+4>>2]}else{c[n>>2]=0;c[m>>2]=0}if(c[g>>2]|0){do{q=c[k>>2]|0;c[k>>2]=q+4;c[m>>2]=(c[m>>2]|0)+((c[q>>2]|0)+(c[n>>2]|0));q=c[k>>2]|0;c[k>>2]=q+4;c[n>>2]=(c[n>>2]|0)+((c[q>>2]|0)+(c[m>>2]|0))}while((c[k>>2]|0)>>>0<(c[l>>2]|0)>>>0);q=c[m>>2]|0;p=c[j>>2]|0;c[p>>2]=q;p=c[n>>2]|0;q=c[j>>2]|0;q=q+4|0;c[q>>2]=p;i=o;return}else{do{c[m>>2]=(c[m>>2]|0)+(((c[c[k>>2]>>2]&255)<<24)+((c[c[k>>2]>>2]&65280)<<8)+((c[c[k>>2]>>2]&16711680)>>>8)+((c[c[k>>2]>>2]&-16777216)>>>24)+(c[n>>2]|0));c[n>>2]=(c[n>>2]|0)+(((c[(c[k>>2]|0)+4>>2]&255)<<24)+((c[(c[k>>2]|0)+4>>2]&65280)<<8)+((c[(c[k>>2]|0)+4>>2]&16711680)>>>8)+((c[(c[k>>2]|0)+4>>2]&-16777216)>>>24)+(c[m>>2]|0));c[k>>2]=(c[k>>2]|0)+8}while((c[k>>2]|0)>>>0<(c[l>>2]|0)>>>0);q=c[m>>2]|0;p=c[j>>2]|0;c[p>>2]=q;p=c[n>>2]|0;q=c[j>>2]|0;q=q+4|0;c[q>>2]=p;i=o;return}}function _s(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if((d[(c[b>>2]|0)+43>>0]|0|0)==2){i=e;return}$s(c[(c[b>>2]|0)+4>>2]|0);i=e;return}function $s(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Qb[c[(c[c[d>>2]>>2]|0)+60>>2]&255](c[d>>2]|0);i=b;return}function at(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+160|0;f=s+144|0;g=s+140|0;h=s+136|0;j=s+132|0;o=s+128|0;p=s+124|0;k=s+120|0;m=s+116|0;n=s+112|0;l=s+8|0;q=s+4|0;r=s;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[o>>2]=c[c[j>>2]>>2];c[p>>2]=0;c[k>>2]=0;c[n>>2]=0;b=l;a=b+104|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[o>>2]|0))break;c[p>>2]=1;c[k>>2]=(c[h>>2]|0)+(c[m>>2]<<1);c[n>>2]=0;while(1){if(!(c[m>>2]&1<>2]))break;c[q>>2]=l+(c[n>>2]<<3);bt(c[f>>2]|0,c[(c[q>>2]|0)+4>>2]|0,c[c[q>>2]>>2]|0,k,p,c[g>>2]|0);c[n>>2]=(c[n>>2]|0)+1}c[l+(c[n>>2]<<3)+4>>2]=c[k>>2];c[l+(c[n>>2]<<3)>>2]=c[p>>2];c[m>>2]=(c[m>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1;while(1){if((c[n>>2]|0)>>>0>=13)break;if(c[o>>2]&1<>2]){c[r>>2]=l+(c[n>>2]<<3);bt(c[f>>2]|0,c[(c[r>>2]|0)+4>>2]|0,c[c[r>>2]>>2]|0,k,p,c[g>>2]|0)}c[n>>2]=(c[n>>2]|0)+1}c[c[j>>2]>>2]=c[p>>2];i=s;return}function bt(a,d,f,g,h,j){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+64|0;k=y+44|0;l=y+40|0;m=y+36|0;n=y+32|0;o=y+28|0;p=y+24|0;s=y+20|0;u=y+16|0;t=y+12|0;w=y+8|0;q=y+4|0;v=y+48|0;r=y;c[k>>2]=a;c[l>>2]=d;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[s>>2]=0;c[u>>2]=0;c[t>>2]=0;c[w>>2]=c[c[o>>2]>>2];c[q>>2]=c[c[n>>2]>>2];while(1){if((c[u>>2]|0)>=(c[w>>2]|0)?(c[s>>2]|0)>=(c[m>>2]|0):0)break;do if((c[s>>2]|0)<(c[m>>2]|0)){if((c[u>>2]|0)<(c[w>>2]|0)?(c[(c[k>>2]|0)+((e[(c[l>>2]|0)+(c[s>>2]<<1)>>1]|0)<<2)>>2]|0)>>>0>=(c[(c[k>>2]|0)+((e[(c[q>>2]|0)+(c[u>>2]<<1)>>1]|0)<<2)>>2]|0)>>>0:0){x=8;break}h=c[s>>2]|0;c[s>>2]=h+1;b[v>>1]=b[(c[l>>2]|0)+(h<<1)>>1]|0}else x=8;while(0);if((x|0)==8){x=0;h=c[u>>2]|0;c[u>>2]=h+1;b[v>>1]=b[(c[q>>2]|0)+(h<<1)>>1]|0}c[r>>2]=c[(c[k>>2]|0)+((e[v>>1]|0)<<2)>>2];g=b[v>>1]|0;h=c[t>>2]|0;c[t>>2]=h+1;b[(c[p>>2]|0)+(h<<1)>>1]=g;if((c[s>>2]|0)>=(c[m>>2]|0))continue;if((c[(c[k>>2]|0)+((e[(c[l>>2]|0)+(c[s>>2]<<1)>>1]|0)<<2)>>2]|0)!=(c[r>>2]|0))continue;c[s>>2]=(c[s>>2]|0)+1}c[c[n>>2]>>2]=c[l>>2];c[c[o>>2]>>2]=c[t>>2];iR(c[l>>2]|0,c[p>>2]|0,c[t>>2]<<1|0)|0;i=y;return}function ct(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+128|0;h=p+120|0;j=p+116|0;k=p+112|0;l=p+104|0;n=p+56|0;o=p+8|0;m=p;c[j>>2]=b;c[k>>2]=f;c[m>>2]=ts(c[j>>2]|0)|0;f=n;b=c[m>>2]|0;g=f+48|0;do{a[f>>0]=a[b>>0]|0;f=f+1|0;b=b+1|0}while((f|0)<(g|0));_s(c[j>>2]|0);f=o;b=(c[m>>2]|0)+48|0;g=f+48|0;do{a[f>>0]=a[b>>0]|0;f=f+1|0;b=b+1|0}while((f|0)<(g|0));if(vQ(n,o,48)|0){c[h>>2]=1;o=c[h>>2]|0;i=p;return o|0}if(!(d[n+12>>0]|0)){c[h>>2]=1;o=c[h>>2]|0;i=p;return o|0}Zs(1,n,40,0,l);if((c[l>>2]|0)==(c[n+40>>2]|0)?(c[l+4>>2]|0)==(c[n+40+4>>2]|0):0){if(vQ((c[j>>2]|0)+52|0,n,48)|0){c[c[k>>2]>>2]=1;f=(c[j>>2]|0)+52|0;b=n;g=f+48|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(g|0));c[(c[j>>2]|0)+36>>2]=((e[(c[j>>2]|0)+52+14>>1]|0)&65024)+(((e[(c[j>>2]|0)+52+14>>1]|0)&1)<<16)}c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}c[h>>2]=1;o=c[h>>2]|0;i=p;return o|0}function dt(e){e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0;E=i;i=i+144|0;B=E+16|0;g=E+96|0;h=E+92|0;y=E+88|0;u=E+8|0;m=E+80|0;p=E+76|0;t=E+72|0;j=E+104|0;l=E+68|0;z=E+64|0;k=E+60|0;o=E+56|0;q=E;A=E+52|0;s=E+48|0;D=E+44|0;r=E+40|0;x=E+36|0;v=E+32|0;w=E+28|0;n=E+24|0;c[h>>2]=e;c[m>>2]=0;c[m+4>>2]=0;c[p>>2]=1+(d[(c[h>>2]|0)+45>>0]|0);c[t>>2]=8-(c[p>>2]|0);c[y>>2]=Ns(c[h>>2]|0,c[p>>2]|0,c[t>>2]|0)|0;if(c[y>>2]|0){c[g>>2]=c[y>>2];D=c[g>>2]|0;i=E;return D|0}e=(c[h>>2]|0)+52|0;f=e+48|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));c[y>>2]=Si(c[(c[h>>2]|0)+8>>2]|0,u)|0;a:do if(!(c[y>>2]|0)){f=u;e=c[f+4>>2]|0;do if((e|0)>0|(e|0)==0&(c[f>>2]|0)>>>0>32){c[l>>2]=0;c[y>>2]=Wr(c[(c[h>>2]|0)+8>>2]|0,j,32,0,0)|0;if(c[y>>2]|0)break a;c[s>>2]=$q(j)|0;c[A>>2]=$q(j+8|0)|0;if((((c[s>>2]&-2|0)==931071618?!(((c[A>>2]|0)>65536?1:(c[A>>2]&(c[A>>2]|0)-1|0)!=0)|(c[A>>2]|0)<512):0)?(a[(c[h>>2]|0)+52+13>>0]=c[s>>2]&1,c[(c[h>>2]|0)+36>>2]=c[A>>2],s=$q(j+12|0)|0,c[(c[h>>2]|0)+112>>2]=s,s=(c[h>>2]|0)+52+32|0,f=j+16|0,a[s>>0]=a[f>>0]|0,a[s+1>>0]=a[f+1>>0]|0,a[s+2>>0]=a[f+2>>0]|0,a[s+3>>0]=a[f+3>>0]|0,a[s+4>>0]=a[f+4>>0]|0,a[s+5>>0]=a[f+5>>0]|0,a[s+6>>0]=a[f+6>>0]|0,a[s+7>>0]=a[f+7>>0]|0,Zs((d[(c[h>>2]|0)+52+13>>0]|0)==((a[960]|0)==0|0)&1,j,24,0,(c[h>>2]|0)+52+24|0),s=c[(c[h>>2]|0)+52+24>>2]|0,(s|0)==($q(j+24|0)|0)):0)?(s=c[(c[h>>2]|0)+52+24+4>>2]|0,(s|0)==($q(j+28|0)|0)):0){c[D>>2]=$q(j+4|0)|0;if((c[D>>2]|0)!=3007e3){c[y>>2]=et(52297)|0;break}c[z>>2]=(c[A>>2]|0)+24;D=c[z>>2]|0;c[l>>2]=Jd(D,((D|0)<0)<<31>>31)|0;if(!(c[l>>2]|0)){c[y>>2]=7;break a}c[k>>2]=(c[l>>2]|0)+24;c[o>>2]=0;D=q;c[D>>2]=32;c[D+4>>2]=0;while(1){f=q;s=c[z>>2]|0;s=gR(c[f>>2]|0,c[f+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;f=C;D=u;j=c[D+4>>2]|0;if(!((f|0)<(j|0)|((f|0)==(j|0)?s>>>0<=(c[D>>2]|0)>>>0:0)))break;c[o>>2]=(c[o>>2]|0)+1;D=q;c[y>>2]=Wr(c[(c[h>>2]|0)+8>>2]|0,c[l>>2]|0,c[z>>2]|0,c[D>>2]|0,c[D+4>>2]|0)|0;if(c[y>>2]|0)break;c[r>>2]=ft(c[h>>2]|0,x,v,c[k>>2]|0,c[l>>2]|0)|0;if(!(c[r>>2]|0))break;c[y>>2]=gt(c[h>>2]|0,c[o>>2]|0,c[x>>2]|0)|0;if(c[y>>2]|0)break;if(c[v>>2]|0){c[(c[h>>2]|0)+52+16>>2]=c[o>>2];c[(c[h>>2]|0)+52+20>>2]=c[v>>2];b[(c[h>>2]|0)+52+14>>1]=c[A>>2]&65280|c[A>>2]>>16;c[m>>2]=c[(c[h>>2]|0)+52+24>>2];c[m+4>>2]=c[(c[h>>2]|0)+52+24+4>>2]}s=c[z>>2]|0;D=q;s=gR(c[D>>2]|0,c[D+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;D=q;c[D>>2]=s;c[D+4>>2]=C}Kd(c[l>>2]|0)}}while(0);if(!(c[y>>2]|0)){c[(c[h>>2]|0)+52+24>>2]=c[m>>2];c[(c[h>>2]|0)+52+24+4>>2]=c[m+4>>2];Ys(c[h>>2]|0);c[w>>2]=Ss(c[h>>2]|0)|0;c[c[w>>2]>>2]=0;c[(c[w>>2]|0)+32>>2]=c[(c[h>>2]|0)+52+16>>2];c[(c[w>>2]|0)+4>>2]=0;c[n>>2]=1;while(1){if((c[n>>2]|0)>=5)break;c[(c[w>>2]|0)+4+(c[n>>2]<<2)>>2]=-1;c[n>>2]=(c[n>>2]|0)+1}if(c[(c[h>>2]|0)+52+16>>2]|0)c[(c[w>>2]|0)+4+4>>2]=c[(c[h>>2]|0)+52+16>>2];if(c[(c[h>>2]|0)+52+20>>2]|0){D=c[(c[h>>2]|0)+108>>2]|0;c[B>>2]=c[(c[h>>2]|0)+52+16>>2];c[B+4>>2]=D;Rd(283,26831,B)}}}while(0);Br(c[h>>2]|0,c[p>>2]|0,c[t>>2]|0);c[g>>2]=c[y>>2];D=c[g>>2]|0;i=E;return D|0}function et(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+8|0;c[e>>2]=a;e=c[e>>2]|0;a=(kf()|0)+20|0;c[d>>2]=e;c[d+4>>2]=a;Rd(14,26792,d);i=b;return 14}function ft(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;j=s+32|0;k=s+28|0;l=s+24|0;m=s+20|0;n=s+16|0;o=s+12|0;q=s+8|0;p=s+4|0;r=s;c[k>>2]=b;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=(c[k>>2]|0)+52+24;if(vQ((c[k>>2]|0)+52+32|0,(c[o>>2]|0)+8|0,8)|0){c[j>>2]=0;f=c[j>>2]|0;i=s;return f|0}c[r>>2]=$q(c[o>>2]|0)|0;if(!(c[r>>2]|0)){c[j>>2]=0;f=c[j>>2]|0;i=s;return f|0}c[q>>2]=(d[(c[k>>2]|0)+52+13>>0]|0)==((a[960]|0)==0|0)&1;Zs(c[q>>2]|0,c[o>>2]|0,8,c[p>>2]|0,c[p>>2]|0);Zs(c[q>>2]|0,c[n>>2]|0,c[(c[k>>2]|0)+36>>2]|0,c[p>>2]|0,c[p>>2]|0);f=c[c[p>>2]>>2]|0;if((f|0)==($q((c[o>>2]|0)+16|0)|0)?(f=c[(c[p>>2]|0)+4>>2]|0,(f|0)==($q((c[o>>2]|0)+20|0)|0)):0){c[c[l>>2]>>2]=c[r>>2];f=$q((c[o>>2]|0)+4|0)|0;c[c[m>>2]>>2]=f;c[j>>2]=1;f=c[j>>2]|0;i=s;return f|0}c[j>>2]=0;f=c[j>>2]|0;i=s;return f|0}function gt(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;f=t+44|0;g=t+40|0;h=t+36|0;j=t+32|0;r=t+28|0;n=t+24|0;l=t+20|0;k=t+16|0;m=t+12|0;o=t+8|0;q=t+4|0;p=t;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;c[n>>2]=0;c[l>>2]=0;c[k>>2]=0;a=c[g>>2]|0;c[r>>2]=ls(a,ks(c[h>>2]|0)|0,k,l,n)|0;do if(!(c[r>>2]|0)){c[o>>2]=(c[h>>2]|0)-(c[n>>2]|0);if((c[o>>2]|0)==1){c[p>>2]=(c[k>>2]|0)+16384-((c[l>>2]|0)+4);kR((c[l>>2]|0)+4|0,0,c[p>>2]|0)|0}if(c[(c[l>>2]|0)+(c[o>>2]<<2)>>2]|0)js(c[g>>2]|0);c[q>>2]=c[o>>2];c[m>>2]=Es(c[j>>2]|0)|0;while(1){if(!(b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]|0)){s=11;break}a=c[q>>2]|0;c[q>>2]=a+-1;if(!a)break;c[m>>2]=Fs(c[m>>2]|0)|0}if((s|0)==11){c[(c[l>>2]|0)+(c[o>>2]<<2)>>2]=c[j>>2];b[(c[k>>2]|0)+(c[m>>2]<<1)>>1]=c[o>>2];break}c[f>>2]=Lj(52166)|0;s=c[f>>2]|0;i=t;return s|0}while(0);c[f>>2]=c[r>>2];s=c[f>>2]|0;i=t;return s|0}function ht(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f+8|0;b=f+4|0;e=f;c[b>>2]=a;if(((c[b>>2]|0)!=0?(c[c[b>>2]>>2]|0)!=0:0)?(c[(c[b>>2]|0)+8>>2]|0)>=0:0){c[e>>2]=Yb[c[c[b>>2]>>2]&255](c[(c[b>>2]|0)+4>>2]|0,c[(c[b>>2]|0)+8>>2]|0)|0;b=(c[b>>2]|0)+8|0;if(!(c[e>>2]|0))c[b>>2]=-1;else c[b>>2]=(c[b>>2]|0)+1;c[d>>2]=c[e>>2];e=c[d>>2]|0;i=f;return e|0}c[d>>2]=0;e=c[d>>2]|0;i=f;return e|0}function it(){return 48}function jt(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+16|0;l=k+12|0;g=k+8|0;h=k+4|0;j=k;c[l>>2]=a;c[g>>2]=b;c[h>>2]=c[l>>2];c[j>>2]=0;if(c[(c[h>>2]|0)+44>>2]|0){c[f>>2]=0;l=c[f>>2]|0;i=k;return l|0}do if(d[(c[h>>2]|0)+21>>0]|0){if(((d[(c[h>>2]|0)+21>>0]|0)&3|0)==0?((e[(c[g>>2]|0)+24>>1]|0)&8|0)==0:0)break;c[f>>2]=0;l=c[f>>2]|0;i=k;return l|0}while(0);c[(c[g>>2]|0)+12>>2]=0;l=(sr(c[h>>2]|0)|0)!=0;a=c[g>>2]|0;if(l){c[j>>2]=lt(a)|0;if(!(c[j>>2]|0))c[j>>2]=mt(c[h>>2]|0,c[g>>2]|0,0,0)|0}else{if(!(((e[a+24>>1]|0)&8|0)==0?(d[(c[h>>2]|0)+17>>0]|0|0)!=3:0))c[j>>2]=nt(c[h>>2]|0,1)|0;if(!(c[j>>2]|0))c[j>>2]=ot(c[h>>2]|0,c[g>>2]|0)|0}if(!(c[j>>2]|0))bj(c[g>>2]|0);c[f>>2]=fr(c[h>>2]|0,c[j>>2]|0)|0;l=c[f>>2]|0;i=k;return l|0}function kt(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;n=p+4|0;o=p;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;e=c[o>>2]|0;h=e+48|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(h|0));c[(c[o>>2]|0)+24>>2]=1;c[(c[o>>2]|0)+28>>2]=c[k>>2];a[(c[o>>2]|0)+32>>0]=c[l>>2];a[(c[o>>2]|0)+33>>0]=2;c[(c[o>>2]|0)+36>>2]=c[m>>2];c[(c[o>>2]|0)+40>>2]=c[n>>2];c[(c[o>>2]|0)+16>>2]=100;c[(c[o>>2]|0)+20>>2]=1;o=Vi(c[o>>2]|0,c[j>>2]|0)|0;i=p;return o|0}function lt(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if(Dt(c[d>>2]|0)|0){c[b>>2]=Et(c[d>>2]|0)|0;a=c[b>>2]|0;i=e;return a|0}else{c[b>>2]=0;a=c[b>>2]|0;i=e;return a|0}return 0}function mt(a,b,e,f){ -a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+28|0;h=p+24|0;j=p+20|0;k=p+16|0;o=p+12|0;l=p+8|0;m=p+4|0;n=p;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;a:do if(c[k>>2]|0){c[n>>2]=h;c[l>>2]=0;c[m>>2]=c[h>>2];while(1){a=c[m>>2]|0;c[c[n>>2]>>2]=a;if(!a)break a;if((c[(c[m>>2]|0)+20>>2]|0)>>>0<=(c[j>>2]|0)>>>0){c[n>>2]=(c[m>>2]|0)+12;c[l>>2]=(c[l>>2]|0)+1}c[m>>2]=c[(c[m>>2]|0)+12>>2]}}else c[l>>2]=1;while(0);n=(c[g>>2]|0)+192+8|0;c[n>>2]=(c[n>>2]|0)+(c[l>>2]|0);if((c[(c[h>>2]|0)+20>>2]|0)==1)qt(c[h>>2]|0);c[o>>2]=wt(c[(c[g>>2]|0)+216>>2]|0,c[(c[g>>2]|0)+160>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,d[(c[g>>2]|0)+11>>0]|0)|0;if(c[o>>2]|0){o=c[o>>2]|0;i=p;return o|0}if(!(c[(c[g>>2]|0)+96>>2]|0)){o=c[o>>2]|0;i=p;return o|0}c[m>>2]=c[h>>2];while(1){if(!(c[m>>2]|0))break;_r(c[(c[g>>2]|0)+96>>2]|0,c[(c[m>>2]|0)+20>>2]|0,c[(c[m>>2]|0)+4>>2]|0);c[m>>2]=c[(c[m>>2]|0)+12>>2]}o=c[o>>2]|0;i=p;return o|0}function nt(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;f=o+24|0;g=o+20|0;h=o+16|0;m=o+12|0;k=o+8|0;l=o;j=o+40|0;n=o+28|0;c[g>>2]=b;c[h>>2]=e;c[m>>2]=rt(c[g>>2]|0)|0;if(c[m>>2]|0){c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}do if(!(a[(c[g>>2]|0)+7>>0]|0)){if((c[c[(c[g>>2]|0)+68>>2]>>2]|0)!=0?(d[(c[g>>2]|0)+5>>0]|0)!=4:0){c[k>>2]=Sr(c[(c[g>>2]|0)+64>>2]|0)|0;if(!(c[k>>2]&512)){a[n>>0]=a[26758]|0;a[n+1>>0]=a[26759]|0;a[n+2>>0]=a[26760]|0;a[n+3>>0]=a[26761]|0;a[n+4>>0]=a[26762]|0;a[n+5>>0]=a[26763]|0;a[n+6>>0]=a[26764]|0;a[n+7>>0]=a[26765]|0;Xs(n+8|0,c[(c[g>>2]|0)+48>>2]|0);e=fs(c[g>>2]|0)|0;b=l;c[b>>2]=e;c[b+4>>2]=C;b=l;c[m>>2]=Wr(c[(c[g>>2]|0)+68>>2]|0,j,8,c[b>>2]|0,c[b+4>>2]|0)|0;if((c[m>>2]|0)==0?0==(vQ(j,26758,8)|0):0){b=l;c[m>>2]=Fg(c[(c[g>>2]|0)+68>>2]|0,26901,1,c[b>>2]|0,c[b+4>>2]|0)|0}if((c[m>>2]|0)!=0&(c[m>>2]|0)!=522){c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}if(((d[(c[g>>2]|0)+8>>0]|0)!=0?0==(c[k>>2]&1024|0):0)?(c[m>>2]=or(c[(c[g>>2]|0)+68>>2]|0,d[(c[g>>2]|0)+12>>0]|0)|0,(c[m>>2]|0)!=0):0){c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}b=(c[g>>2]|0)+88|0;c[m>>2]=Fg(c[(c[g>>2]|0)+68>>2]|0,n,12,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[m>>2]|0){c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}}if(0==(c[k>>2]&1024|0)?(c[m>>2]=or(c[(c[g>>2]|0)+68>>2]|0,d[(c[g>>2]|0)+12>>0]|((d[(c[g>>2]|0)+12>>0]|0)==3?16:0))|0,(c[m>>2]|0)!=0):0){c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}e=(c[g>>2]|0)+80|0;b=c[e+4>>2]|0;n=(c[g>>2]|0)+88|0;c[n>>2]=c[e>>2];c[n+4>>2]=b;if(!(c[h>>2]|0))break;if(c[k>>2]&512)break;c[(c[g>>2]|0)+48>>2]=0;c[m>>2]=st(c[g>>2]|0)|0;if(!(c[m>>2]|0))break;c[f>>2]=c[m>>2];n=c[f>>2]|0;i=o;return n|0}b=(c[g>>2]|0)+80|0;m=c[b+4>>2]|0;n=(c[g>>2]|0)+88|0;c[n>>2]=c[b>>2];c[n+4>>2]=m}while(0);tt(c[(c[g>>2]|0)+212>>2]|0);a[(c[g>>2]|0)+17>>0]=4;c[f>>2]=0;n=c[f>>2]|0;i=o;return n|0}function ot(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;g=n+32|0;h=n+28|0;m=n+24|0;f=n+8|0;l=n+20|0;j=n;k=n+16|0;c[g>>2]=b;c[h>>2]=d;c[m>>2]=0;if(!(c[c[(c[g>>2]|0)+64>>2]>>2]|0))c[m>>2]=pt(c[g>>2]|0,c[(c[g>>2]|0)+64>>2]|0,c[(c[g>>2]|0)+152>>2]|0)|0;do if((c[m>>2]|0)==0?(c[(c[g>>2]|0)+40>>2]|0)>>>0<(c[(c[g>>2]|0)+28>>2]|0)>>>0:0){if((c[(c[h>>2]|0)+12>>2]|0)==0?(c[(c[h>>2]|0)+20>>2]|0)>>>0<=(c[(c[g>>2]|0)+40>>2]|0)>>>0:0)break;d=c[(c[g>>2]|0)+160>>2]|0;d=rR(d|0,((d|0)<0)<<31>>31|0,c[(c[g>>2]|0)+28>>2]|0,0)|0;b=f;c[b>>2]=d;c[b+4>>2]=C;Js(c[(c[g>>2]|0)+64>>2]|0,5,f);c[(c[g>>2]|0)+40>>2]=c[(c[g>>2]|0)+28>>2]}while(0);while(1){if(!((c[m>>2]|0)==0?(c[h>>2]|0)!=0:0))break;c[l>>2]=c[(c[h>>2]|0)+20>>2];if((c[l>>2]|0)>>>0<=(c[(c[g>>2]|0)+28>>2]|0)>>>0?0==((e[(c[h>>2]|0)+24>>1]|0)&32|0):0){b=c[(c[g>>2]|0)+160>>2]|0;b=rR((c[l>>2]|0)-1|0,0,b|0,((b|0)<0)<<31>>31|0)|0;f=j;c[f>>2]=b;c[f+4>>2]=C;if((c[(c[h>>2]|0)+20>>2]|0)==1)qt(c[h>>2]|0);c[k>>2]=c[(c[h>>2]|0)+4>>2];f=j;c[m>>2]=Fg(c[(c[g>>2]|0)+64>>2]|0,c[k>>2]|0,c[(c[g>>2]|0)+160>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;if((c[l>>2]|0)==1){d=(c[g>>2]|0)+112|0;b=(c[k>>2]|0)+24|0;f=d+16|0;do{a[d>>0]=a[b>>0]|0;d=d+1|0;b=b+1|0}while((d|0)<(f|0))}if((c[l>>2]|0)>>>0>(c[(c[g>>2]|0)+36>>2]|0)>>>0)c[(c[g>>2]|0)+36>>2]=c[l>>2];f=(c[g>>2]|0)+192+8|0;c[f>>2]=(c[f>>2]|0)+1;_r(c[(c[g>>2]|0)+96>>2]|0,c[l>>2]|0,c[(c[h>>2]|0)+4>>2]|0)}c[h>>2]=c[(c[h>>2]|0)+12>>2]}i=n;return c[m>>2]|0}function pt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;c[g>>2]=c[g>>2]|30;c[e>>2]=Vr(c[c[j>>2]>>2]|0,0,c[h>>2]|0,c[g>>2]|0,0)|0;i=f;return c[e>>2]|0}function qt(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=($q((c[(c[d>>2]|0)+16>>2]|0)+112|0)|0)+1;Xs((c[(c[d>>2]|0)+4>>2]|0)+24|0,c[e>>2]|0);Xs((c[(c[d>>2]|0)+4>>2]|0)+92|0,c[e>>2]|0);Xs((c[(c[d>>2]|0)+4>>2]|0)+96|0,3011e3);i=b;return}function rt(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+44>>2];if((c[d>>2]|0)==0?0==(sr(c[b>>2]|0)|0):0)c[d>>2]=ut(c[b>>2]|0,4)|0;i=e;return c[d>>2]|0}function st(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;f=l+20|0;k=l+16|0;j=l+12|0;g=l+8|0;h=l+4|0;e=l;c[f>>2]=b;c[k>>2]=0;c[j>>2]=c[(c[f>>2]|0)+208>>2];c[g>>2]=c[(c[f>>2]|0)+160>>2];if((c[g>>2]|0)>>>0>(c[(c[f>>2]|0)+156>>2]|0)>>>0)c[g>>2]=c[(c[f>>2]|0)+156>>2];c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[f>>2]|0)+104>>2]|0))break;b=(c[(c[f>>2]|0)+100>>2]|0)+((c[e>>2]|0)*48|0)+8|0;if((c[b>>2]|0)==0&(c[b+4>>2]|0)==0){n=(c[f>>2]|0)+80|0;m=c[n+4>>2]|0;b=(c[(c[f>>2]|0)+100>>2]|0)+((c[e>>2]|0)*48|0)+8|0;c[b>>2]=c[n>>2];c[b+4>>2]=m}c[e>>2]=(c[e>>2]|0)+1}b=fs(c[f>>2]|0)|0;m=C;n=(c[f>>2]|0)+80|0;c[n>>2]=b;c[n+4>>2]=m;n=(c[f>>2]|0)+88|0;c[n>>2]=b;c[n+4>>2]=m;if(((d[(c[f>>2]|0)+7>>0]|0|0)==0?(d[(c[f>>2]|0)+5>>0]|0|0)!=4:0)?((Sr(c[(c[f>>2]|0)+64>>2]|0)|0)&512|0)==0:0){e=c[j>>2]|0;b=e+12|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(b|0))}else{n=c[j>>2]|0;a[n>>0]=a[26758]|0;a[n+1>>0]=a[26759]|0;a[n+2>>0]=a[26760]|0;a[n+3>>0]=a[26761]|0;a[n+4>>0]=a[26762]|0;a[n+5>>0]=a[26763]|0;a[n+6>>0]=a[26764]|0;a[n+7>>0]=a[26765]|0;Xs((c[j>>2]|0)+8|0,-1)}Sd(4,(c[f>>2]|0)+52|0);Xs((c[j>>2]|0)+12|0,c[(c[f>>2]|0)+52>>2]|0);Xs((c[j>>2]|0)+16|0,c[(c[f>>2]|0)+32>>2]|0);Xs((c[j>>2]|0)+20|0,c[(c[f>>2]|0)+156>>2]|0);Xs((c[j>>2]|0)+24|0,c[(c[f>>2]|0)+160>>2]|0);kR((c[j>>2]|0)+28|0,0,(c[g>>2]|0)-28|0)|0;c[h>>2]=0;while(1){if(c[k>>2]|0){e=17;break}if((c[h>>2]|0)>>>0>=(c[(c[f>>2]|0)+156>>2]|0)>>>0){e=17;break}n=(c[f>>2]|0)+80|0;c[k>>2]=Fg(c[(c[f>>2]|0)+68>>2]|0,c[j>>2]|0,c[g>>2]|0,c[n>>2]|0,c[n+4>>2]|0)|0;n=(c[f>>2]|0)+80|0;m=n;m=gR(c[m>>2]|0,c[m+4>>2]|0,c[g>>2]|0,0)|0;c[n>>2]=m;c[n+4>>2]=C;c[h>>2]=(c[h>>2]|0)+(c[g>>2]|0)}if((e|0)==17){i=l;return c[k>>2]|0}return 0}function tt(a){a=a|0;var d=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;f=g;c[d>>2]=a;c[f>>2]=c[c[d>>2]>>2];while(1){if(!(c[f>>2]|0))break;a=(c[f>>2]|0)+24|0;b[a>>1]=(e[a>>1]|0)&-9;c[f>>2]=c[(c[f>>2]|0)+32>>2]}c[(c[d>>2]|0)+8>>2]=c[(c[d>>2]|0)+4>>2];i=g;return}function ut(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;while(1){c[f>>2]=vt(c[d>>2]|0,c[e>>2]|0)|0;if((c[f>>2]|0)!=5){d=4;break}if(!(Tb[c[(c[d>>2]|0)+184>>2]&255](c[(c[d>>2]|0)+188>>2]|0)|0)){d=4;break}}if((d|0)==4){i=g;return c[f>>2]|0}return 0}function vt(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=e;c[h>>2]=0;if((d[(c[f>>2]|0)+18>>0]|0|0)>=(c[g>>2]|0)?(d[(c[f>>2]|0)+18>>0]|0|0)!=5:0){h=c[h>>2]|0;i=j;return h|0}if(d[(c[f>>2]|0)+14>>0]|0)e=0;else e=Hs(c[(c[f>>2]|0)+64>>2]|0,c[g>>2]|0)|0;c[h>>2]=e;if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}if(!((c[g>>2]|0)==4?1:(d[(c[f>>2]|0)+18>>0]|0|0)!=5)){h=c[h>>2]|0;i=j;return h|0}a[(c[f>>2]|0)+18>>0]=c[g>>2];h=c[h>>2]|0;i=j;return h|0}function wt(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=i;i=i+176|0;u=M+128|0;v=M+124|0;w=M+120|0;x=M+116|0;y=M+112|0;z=M+108|0;A=M+104|0;H=M+100|0;B=M+96|0;F=M+92|0;G=M+88|0;E=M+84|0;K=M+80|0;D=M+40|0;L=M+16|0;p=M+76|0;o=M+72|0;n=M+136|0;m=M+64|0;s=M+60|0;r=M+56|0;q=M+8|0;t=M+52|0;I=M+48|0;J=M;c[v>>2]=f;c[w>>2]=g;c[x>>2]=h;c[y>>2]=j;c[z>>2]=k;c[A>>2]=l;c[G>>2]=0;c[E>>2]=0;c[p>>2]=0;c[o>>2]=ts(c[v>>2]|0)|0;if(vQ((c[v>>2]|0)+52|0,c[o>>2]|0,48)|0)c[p>>2]=(c[(c[o>>2]|0)+16>>2]|0)+1;g=xt(c[v>>2]|0)|0;c[H>>2]=g;if(g){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}c[B>>2]=c[(c[v>>2]|0)+52+16>>2];if(!(c[B>>2]|0)){Xs(n,931071618|(a[960]|0)==0);Xs(n+4|0,3007e3);Xs(n+8|0,c[w>>2]|0);Xs(n+12|0,c[(c[v>>2]|0)+112>>2]|0);if(!(c[(c[v>>2]|0)+112>>2]|0))Sd(8,(c[v>>2]|0)+52+32|0);g=n+16|0;l=(c[v>>2]|0)+52+32|0;a[g>>0]=a[l>>0]|0;a[g+1>>0]=a[l+1>>0]|0;a[g+2>>0]=a[l+2>>0]|0;a[g+3>>0]=a[l+3>>0]|0;a[g+4>>0]=a[l+4>>0]|0;a[g+5>>0]=a[l+5>>0]|0;a[g+6>>0]=a[l+6>>0]|0;a[g+7>>0]=a[l+7>>0]|0;Zs(1,n,24,0,m);Xs(n+24|0,c[m>>2]|0);Xs(n+28|0,c[m+4>>2]|0);c[(c[v>>2]|0)+36>>2]=c[w>>2];a[(c[v>>2]|0)+52+13>>0]=(a[960]|0)==0;c[(c[v>>2]|0)+52+24>>2]=c[m>>2];c[(c[v>>2]|0)+52+24+4>>2]=c[m+4>>2];a[(c[v>>2]|0)+47>>0]=1;c[H>>2]=Fg(c[(c[v>>2]|0)+8>>2]|0,n,32,0,0)|0;if(c[H>>2]|0){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}if(((c[A>>2]|0)!=0?(d[(c[v>>2]|0)+48>>0]|0)!=0:0)?(c[H>>2]=or(c[(c[v>>2]|0)+8>>2]|0,c[A>>2]&19)|0,(c[H>>2]|0)!=0):0){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}}c[L>>2]=c[v>>2];c[L+4>>2]=c[(c[v>>2]|0)+8>>2];l=L+8|0;c[l>>2]=0;c[l+4>>2]=0;c[L+16>>2]=c[A>>2];c[L+20>>2]=c[w>>2];l=(c[w>>2]|0)+24|0;l=rR((c[B>>2]|0)+1-1|0,0,l|0,((l|0)<0)<<31>>31|0)|0;l=gR(32,0,l|0,C|0)|0;g=D;c[g>>2]=l;c[g+4>>2]=C;c[K>>2]=(c[w>>2]|0)+24;c[F>>2]=c[x>>2];while(1){if(!(c[F>>2]|0)){m=30;break}if(((c[p>>2]|0)!=0?(c[z>>2]|0)==0?1:(c[(c[F>>2]|0)+12>>2]|0)!=0:0)?(c[r>>2]=0,xs(c[v>>2]|0,c[(c[F>>2]|0)+20>>2]|0,r)|0,(c[r>>2]|0)>>>0>=(c[p>>2]|0)>>>0):0){l=(c[w>>2]|0)+24|0;l=rR((c[r>>2]|0)-1|0,0,l|0,((l|0)<0)<<31>>31|0)|0;l=gR(32,0,l|0,C|0)|0;l=gR(l|0,C|0,24,0)|0;g=q;c[g>>2]=l;c[g+4>>2]=C;if(!((c[(c[v>>2]|0)+104>>2]|0)!=0?(c[r>>2]|0)>>>0>=(c[(c[v>>2]|0)+104>>2]|0)>>>0:0))c[(c[v>>2]|0)+104>>2]=c[r>>2];c[t>>2]=c[(c[F>>2]|0)+4>>2];g=q;c[H>>2]=Fg(c[(c[v>>2]|0)+8>>2]|0,c[t>>2]|0,c[w>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;if(c[H>>2]|0){m=22;break}g=(c[F>>2]|0)+24|0;b[g>>1]=e[g>>1]&-129}else{c[B>>2]=(c[B>>2]|0)+1;if(c[z>>2]|0)m=(c[(c[F>>2]|0)+12>>2]|0)==0?c[y>>2]|0:0;else m=0;c[s>>2]=m;g=D;c[H>>2]=yt(L,c[F>>2]|0,c[s>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;if(c[H>>2]|0){m=27;break}c[G>>2]=c[F>>2];l=c[K>>2]|0;g=D;l=gR(c[g>>2]|0,c[g+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;g=D;c[g>>2]=l;c[g+4>>2]=C;g=(c[F>>2]|0)+24|0;b[g>>1]=e[g>>1]|128}c[F>>2]=c[(c[F>>2]|0)+12>>2]}if((m|0)==22){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}else if((m|0)==27){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}else if((m|0)==30){if(((c[z>>2]|0)!=0?(c[(c[v>>2]|0)+104>>2]|0)!=0:0)?(c[H>>2]=zt(c[v>>2]|0,c[B>>2]|0)|0,(c[H>>2]|0)!=0):0){c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}a:do if((c[z>>2]|0)!=0?(c[A>>2]&32|0)!=0:0){if(!(a[(c[v>>2]|0)+49>>0]|0)){c[H>>2]=or(c[L+4>>2]|0,c[A>>2]&19)|0;break}c[I>>2]=Tr(c[(c[v>>2]|0)+8>>2]|0)|0;t=D;A=c[I>>2]|0;A=gR(c[t>>2]|0,c[t+4>>2]|0,A|0,((A|0)<0)<<31>>31|0)|0;A=fR(A|0,C|0,1,0)|0;t=c[I>>2]|0;t=pR(A|0,C|0,t|0,((t|0)<0)<<31>>31|0)|0;A=c[I>>2]|0;A=rR(t|0,C|0,A|0,((A|0)<0)<<31>>31|0)|0;I=L+8|0;c[I>>2]=A;c[I+4>>2]=C;while(1){A=D;s=c[A+4>>2]|0;I=L+8|0;t=c[I+4>>2]|0;if(!((s|0)<(t|0)|((s|0)==(t|0)?(c[A>>2]|0)>>>0<(c[I>>2]|0)>>>0:0)))break a;I=D;c[H>>2]=yt(L,c[G>>2]|0,c[y>>2]|0,c[I>>2]|0,c[I+4>>2]|0)|0;if(c[H>>2]|0)break;A=c[K>>2]|0;I=D;A=gR(c[I>>2]|0,c[I+4>>2]|0,A|0,((A|0)<0)<<31>>31|0)|0;I=D;c[I>>2]=A;c[I+4>>2]=C;c[E>>2]=(c[E>>2]|0)+1}c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}while(0);if(((c[z>>2]|0)!=0?(d[(c[v>>2]|0)+47>>0]|0)!=0:0)?(L=(c[v>>2]|0)+16|0,K=c[L+4>>2]|0,(K|0)>0|(K|0)==0&(c[L>>2]|0)>>>0>=0):0){L=(c[v>>2]|0)+16|0;D=c[L+4>>2]|0;K=J;c[K>>2]=c[L>>2];c[K+4>>2]=D;K=(c[w>>2]|0)+24|0;K=rR((c[B>>2]|0)+(c[E>>2]|0)+1-1|0,0,K|0,((K|0)<0)<<31>>31|0)|0;K=gR(32,0,K|0,C|0)|0;D=C;L=(c[v>>2]|0)+16|0;I=c[L+4>>2]|0;if((D|0)>(I|0)|((D|0)==(I|0)?K>>>0>(c[L>>2]|0)>>>0:0)){K=(c[w>>2]|0)+24|0;K=rR((c[B>>2]|0)+(c[E>>2]|0)+1-1|0,0,K|0,((K|0)<0)<<31>>31|0)|0;K=gR(32,0,K|0,C|0)|0;L=J;c[L>>2]=K;c[L+4>>2]=C}L=J;Ks(c[v>>2]|0,c[L>>2]|0,c[L+4>>2]|0);a[(c[v>>2]|0)+47>>0]=0}c[B>>2]=c[(c[v>>2]|0)+52+16>>2];c[F>>2]=c[x>>2];while(1){if(!((c[F>>2]|0)!=0?(c[H>>2]|0)==0:0))break;if(e[(c[F>>2]|0)+24>>1]&128){c[B>>2]=(c[B>>2]|0)+1;c[H>>2]=gt(c[v>>2]|0,c[B>>2]|0,c[(c[F>>2]|0)+20>>2]|0)|0}c[F>>2]=c[(c[F>>2]|0)+12>>2]}while(1){if(!((c[H>>2]|0)==0?(c[E>>2]|0)>0:0))break;c[B>>2]=(c[B>>2]|0)+1;c[E>>2]=(c[E>>2]|0)+-1;c[H>>2]=gt(c[v>>2]|0,c[B>>2]|0,c[(c[G>>2]|0)+20>>2]|0)|0}if(!(c[H>>2]|0)){b[(c[v>>2]|0)+52+14>>1]=c[w>>2]&65280|c[w>>2]>>16;c[(c[v>>2]|0)+52+16>>2]=c[B>>2];if(c[z>>2]|0){L=(c[v>>2]|0)+52+8|0;c[L>>2]=(c[L>>2]|0)+1;c[(c[v>>2]|0)+52+20>>2]=c[y>>2]}if(c[z>>2]|0){Ys(c[v>>2]|0);c[(c[v>>2]|0)+12>>2]=c[B>>2]}}c[u>>2]=c[H>>2];L=c[u>>2]|0;i=M;return L|0}return 0}function xt(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;e=l+20|0;j=l+16|0;f=l+12|0;h=l+8|0;k=l+4|0;g=l;c[e>>2]=a;c[j>>2]=0;if(!(b[(c[e>>2]|0)+40>>1]|0)){c[h>>2]=Ss(c[e>>2]|0)|0;do if((c[c[h>>2]>>2]|0)>>>0>0){Sd(4,k);c[j>>2]=Ns(c[e>>2]|0,4,4)|0;if(!(c[j>>2]|0)){Vs(c[e>>2]|0,c[k>>2]|0);Br(c[e>>2]|0,4,4);break}if((c[j>>2]|0)!=5){c[d>>2]=c[j>>2];k=c[d>>2]|0;i=l;return k|0}}while(0);zr(c[e>>2]|0,3);b[(c[e>>2]|0)+40>>1]=-1;c[f>>2]=0;do{a=c[e>>2]|0;k=(c[f>>2]|0)+1|0;c[f>>2]=k;c[j>>2]=Ct(a,g,1,k)|0}while((c[j>>2]|0)==-1)}c[d>>2]=c[j>>2];k=c[d>>2]|0;i=l;return k|0}function yt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+64|0;g=m+28|0;h=m+24|0;p=m+20|0;o=m+16|0;j=m;l=m+12|0;k=m+8|0;n=m+32|0;c[h>>2]=a;c[p>>2]=b;c[o>>2]=d;b=j;c[b>>2]=e;c[b+4>>2]=f;c[k>>2]=c[(c[p>>2]|0)+4>>2];At(c[c[h>>2]>>2]|0,c[(c[p>>2]|0)+20>>2]|0,c[o>>2]|0,c[k>>2]|0,n);b=j;c[l>>2]=Bt(c[h>>2]|0,n,24,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[l>>2]|0){c[g>>2]=c[l>>2];p=c[g>>2]|0;i=m;return p|0}else{b=c[h>>2]|0;n=c[k>>2]|0;o=c[(c[h>>2]|0)+20>>2]|0;p=j;p=gR(c[p>>2]|0,c[p+4>>2]|0,24,0)|0;c[l>>2]=Bt(b,n,o,p,C)|0;c[g>>2]=c[l>>2];p=c[g>>2]|0;i=m;return p|0}return 0}function zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+80|0;d=q+48|0;e=q+44|0;f=q+40|0;p=q+36|0;o=q+32|0;g=q+28|0;h=q+56|0;m=q+24|0;j=q+8|0;k=q;l=q+20|0;n=q+16|0;c[e>>2]=a;c[f>>2]=b;c[p>>2]=c[(c[e>>2]|0)+36>>2];c[o>>2]=0;c[g>>2]=Id((c[p>>2]|0)+24|0)|0;if(!(c[g>>2]|0)){c[d>>2]=7;p=c[d>>2]|0;i=q;return p|0}if((c[(c[e>>2]|0)+104>>2]|0)==1){a=j;c[a>>2]=24;c[a+4>>2]=0}else{b=(c[p>>2]|0)+24|0;b=rR((c[(c[e>>2]|0)+104>>2]|0)-1-1|0,0,b|0,((b|0)<0)<<31>>31|0)|0;b=gR(32,0,b|0,C|0)|0;b=gR(b|0,C|0,16,0)|0;a=j;c[a>>2]=b;c[a+4>>2]=C}a=j;c[o>>2]=Wr(c[(c[e>>2]|0)+8>>2]|0,c[g>>2]|0,8,c[a>>2]|0,c[a+4>>2]|0)|0;a=$q(c[g>>2]|0)|0;c[(c[e>>2]|0)+52+24>>2]=a;a=$q((c[g>>2]|0)+4|0)|0;c[(c[e>>2]|0)+52+24+4>>2]=a;c[m>>2]=c[(c[e>>2]|0)+104>>2];c[(c[e>>2]|0)+104>>2]=0;while(1){if(c[o>>2]|0)break;if((c[m>>2]|0)>>>0>(c[f>>2]|0)>>>0)break;b=(c[p>>2]|0)+24|0;b=rR((c[m>>2]|0)-1|0,0,b|0,((b|0)<0)<<31>>31|0)|0;b=gR(32,0,b|0,C|0)|0;a=k;c[a>>2]=b;c[a+4>>2]=C;a=k;c[o>>2]=Wr(c[(c[e>>2]|0)+8>>2]|0,c[g>>2]|0,(c[p>>2]|0)+24|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(!(c[o>>2]|0)){c[l>>2]=$q(c[g>>2]|0)|0;c[n>>2]=$q((c[g>>2]|0)+4|0)|0;At(c[e>>2]|0,c[l>>2]|0,c[n>>2]|0,(c[g>>2]|0)+24|0,h);a=k;c[o>>2]=Fg(c[(c[e>>2]|0)+8>>2]|0,h,24,c[a>>2]|0,c[a+4>>2]|0)|0}c[m>>2]=(c[m>>2]|0)+1}Kd(c[g>>2]|0);c[d>>2]=c[o>>2];p=c[d>>2]|0;i=q;return p|0}function At(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+32|0;j=o+24|0;q=o+20|0;p=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[j>>2]=b;c[q>>2]=e;c[p>>2]=f;c[k>>2]=g;c[l>>2]=h;c[m>>2]=(c[j>>2]|0)+52+24;Xs(c[l>>2]|0,c[q>>2]|0);Xs((c[l>>2]|0)+4|0,c[p>>2]|0);g=(c[l>>2]|0)+8|0;if(!(c[(c[j>>2]|0)+104>>2]|0)){q=(c[j>>2]|0)+52+32|0;a[g>>0]=a[q>>0]|0;a[g+1>>0]=a[q+1>>0]|0;a[g+2>>0]=a[q+2>>0]|0;a[g+3>>0]=a[q+3>>0]|0;a[g+4>>0]=a[q+4>>0]|0;a[g+5>>0]=a[q+5>>0]|0;a[g+6>>0]=a[q+6>>0]|0;a[g+7>>0]=a[q+7>>0]|0;c[n>>2]=(d[(c[j>>2]|0)+52+13>>0]|0)==((a[960]|0)==0|0)&1;Zs(c[n>>2]|0,c[l>>2]|0,8,c[m>>2]|0,c[m>>2]|0);Zs(c[n>>2]|0,c[k>>2]|0,c[(c[j>>2]|0)+36>>2]|0,c[m>>2]|0,c[m>>2]|0);Xs((c[l>>2]|0)+16|0,c[c[m>>2]>>2]|0);Xs((c[l>>2]|0)+20|0,c[(c[m>>2]|0)+4>>2]|0);i=o;return}else{h=g+16|0;do{a[g>>0]=0;g=g+1|0}while((g|0)<(h|0));i=o;return}}function Bt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+28|0;h=o+24|0;j=o+20|0;k=o+16|0;l=o;n=o+12|0;m=o+8|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;a=l;c[a>>2]=e;c[a+4>>2]=f;a=l;f=c[a+4>>2]|0;b=(c[h>>2]|0)+8|0;d=c[b+4>>2]|0;if((f|0)<(d|0)|((f|0)==(d|0)?(c[a>>2]|0)>>>0<(c[b>>2]|0)>>>0:0)?(f=l,a=c[k>>2]|0,a=gR(c[f>>2]|0,c[f+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0,f=C,b=(c[h>>2]|0)+8|0,d=c[b+4>>2]|0,(f|0)>(d|0)|((f|0)==(d|0)?a>>>0>=(c[b>>2]|0)>>>0:0)):0){a=(c[h>>2]|0)+8|0;b=l;b=fR(c[a>>2]|0,c[a+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;c[m>>2]=b;b=l;c[n>>2]=Fg(c[(c[h>>2]|0)+4>>2]|0,c[j>>2]|0,c[m>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[n>>2]|0){c[g>>2]=c[n>>2];n=c[g>>2]|0;i=o;return n|0}a=c[m>>2]|0;b=l;a=gR(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;b=l;c[b>>2]=a;c[b+4>>2]=C;c[k>>2]=(c[k>>2]|0)-(c[m>>2]|0);c[j>>2]=(c[j>>2]|0)+(c[m>>2]|0);c[n>>2]=or(c[(c[h>>2]|0)+4>>2]|0,c[(c[h>>2]|0)+16>>2]&19)|0;if((c[k>>2]|0)==0|(c[n>>2]|0)!=0){c[g>>2]=c[n>>2];n=c[g>>2]|0;i=o;return n|0}}b=l;c[n>>2]=Fg(c[(c[h>>2]|0)+4>>2]|0,c[j>>2]|0,c[k>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;c[g>>2]=c[n>>2];n=c[g>>2]|0;i=o;return n|0}function Ct(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+64|0;v=w+48|0;h=w+44|0;j=w+40|0;k=w+36|0;l=w+32|0;r=w+28|0;p=w+24|0;o=w+20|0;m=w+16|0;s=w+12|0;n=w+8|0;q=w+4|0;t=w;c[h>>2]=a;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[s>>2]=0;if((c[l>>2]|0)>5){c[q>>2]=1;if((c[l>>2]|0)>100){c[v>>2]=15;v=c[v>>2]|0;i=w;return v|0}if((c[l>>2]|0)>=10)c[q>>2]=(_((c[l>>2]|0)-9|0,(c[l>>2]|0)-9|0)|0)*39;ri(c[c[h>>2]>>2]|0,c[q>>2]|0)|0}if(!(c[k>>2]|0)){c[s>>2]=Ps(c[h>>2]|0,c[j>>2]|0)|0;do if((c[s>>2]|0)==5){if(!(c[c[(c[h>>2]|0)+32>>2]>>2]|0)){c[s>>2]=-1;break}f=yr(c[h>>2]|0,2)|0;c[s>>2]=f;if(!f){zr(c[h>>2]|0,2);c[s>>2]=-1;break}if((c[s>>2]|0)==5)c[s>>2]=261}while(0);if(c[s>>2]|0){c[v>>2]=c[s>>2];v=c[v>>2]|0;i=w;return v|0}}c[r>>2]=Ss(c[h>>2]|0)|0;do if((c[k>>2]|0)==0?(c[c[r>>2]>>2]|0)==(c[(c[h>>2]|0)+52+16>>2]|0):0){c[s>>2]=yr(c[h>>2]|0,3)|0;_s(c[h>>2]|0);if(c[s>>2]|0){if((c[s>>2]|0)==5)break;c[v>>2]=c[s>>2];v=c[v>>2]|0;i=w;return v|0}u=ts(c[h>>2]|0)|0;u=(vQ(u,(c[h>>2]|0)+52|0,48)|0)!=0;h=c[h>>2]|0;if(u){zr(h,3);c[v>>2]=-1;v=c[v>>2]|0;i=w;return v|0}else{b[h+40>>1]=0;c[v>>2]=0;v=c[v>>2]|0;i=w;return v|0}}while(0);c[p>>2]=0;c[o>>2]=0;c[n>>2]=c[(c[h>>2]|0)+52+16>>2];c[m>>2]=1;while(1){if((c[m>>2]|0)>=5)break;c[t>>2]=c[(c[r>>2]|0)+4+(c[m>>2]<<2)>>2];if((c[p>>2]|0)>>>0<=(c[t>>2]|0)>>>0?(c[t>>2]|0)>>>0<=(c[n>>2]|0)>>>0:0){c[p>>2]=c[t>>2];c[o>>2]=c[m>>2]}c[m>>2]=(c[m>>2]|0)+1}a:do if(((d[(c[h>>2]|0)+46>>0]|0)&2|0)==0?(c[o>>2]|0)==0?1:(c[p>>2]|0)>>>0<(c[n>>2]|0)>>>0:0){c[m>>2]=1;while(1){if((c[m>>2]|0)>=5)break a;c[s>>2]=Ns(c[h>>2]|0,3+(c[m>>2]|0)|0,1)|0;if(!(c[s>>2]|0)){u=36;break}if((c[s>>2]|0)!=5)break;c[m>>2]=(c[m>>2]|0)+1}if((u|0)==36){u=c[n>>2]|0;c[(c[r>>2]|0)+4+(c[m>>2]<<2)>>2]=u;c[p>>2]=u;c[o>>2]=c[m>>2];Br(c[h>>2]|0,3+(c[m>>2]|0)|0,1);break}c[v>>2]=c[s>>2];v=c[v>>2]|0;i=w;return v|0}while(0);if(!(c[o>>2]|0)){c[v>>2]=(c[s>>2]|0)==5?-1:520;v=c[v>>2]|0;i=w;return v|0}c[s>>2]=yr(c[h>>2]|0,3+(c[o>>2]|0)|0)|0;if(c[s>>2]|0){c[v>>2]=(c[s>>2]|0)==5?-1:c[s>>2]|0;v=c[v>>2]|0;i=w;return v|0}c[(c[h>>2]|0)+100>>2]=(c[c[r>>2]>>2]|0)+1;_s(c[h>>2]|0);if((c[(c[r>>2]|0)+4+(c[o>>2]<<2)>>2]|0)==(c[p>>2]|0)?(u=ts(c[h>>2]|0)|0,(vQ(u,(c[h>>2]|0)+52|0,48)|0)==0):0){b[(c[h>>2]|0)+40>>1]=c[o>>2];c[v>>2]=c[s>>2];v=c[v>>2]|0;i=w;return v|0}zr(c[h>>2]|0,3+(c[o>>2]|0)|0);c[v>>2]=-1;v=c[v>>2]|0;i=w;return v|0}function Dt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;g=h+20|0;j=h+16|0;e=h+12|0;d=h+8|0;f=h+4|0;b=h;c[j>>2]=a;c[e>>2]=c[(c[j>>2]|0)+16>>2];c[f>>2]=c[(c[j>>2]|0)+20>>2];c[b>>2]=0;while(1){if((c[b>>2]|0)>=(c[(c[e>>2]|0)+104>>2]|0)){b=7;break}c[d>>2]=(c[(c[e>>2]|0)+100>>2]|0)+((c[b>>2]|0)*48|0);if((c[(c[d>>2]|0)+20>>2]|0)>>>0>=(c[f>>2]|0)>>>0?0==(lj(c[(c[d>>2]|0)+16>>2]|0,c[f>>2]|0)|0):0){b=5;break}c[b>>2]=(c[b>>2]|0)+1}if((b|0)==5){c[g>>2]=1;j=c[g>>2]|0;i=h;return j|0}else if((b|0)==7){c[g>>2]=0;j=c[g>>2]|0;i=h;return j|0}return 0}function Et(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;b=k+24|0;j=k+20|0;h=k+16|0;f=k+12|0;e=k;g=k+8|0;c[b>>2]=a;c[j>>2]=0;c[h>>2]=c[(c[b>>2]|0)+16>>2];if(((d[(c[h>>2]|0)+5>>0]|0|0)!=2?(c[j>>2]=Ft(c[h>>2]|0)|0,(c[j>>2]|0)==0):0)?(c[f>>2]=c[(c[b>>2]|0)+4>>2],l=4+(c[(c[h>>2]|0)+160>>2]|0)|0,l=rR(c[(c[h>>2]|0)+56>>2]|0,0,l|0,((l|0)<0)<<31>>31|0)|0,a=e,c[a>>2]=l,c[a+4>>2]=C,c[g>>2]=c[f>>2],a=e,c[j>>2]=Gt(c[(c[h>>2]|0)+72>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[(c[b>>2]|0)+20>>2]|0)|0,(c[j>>2]|0)==0):0){f=c[(c[h>>2]|0)+72>>2]|0;g=c[g>>2]|0;a=c[(c[h>>2]|0)+160>>2]|0;l=e;l=gR(c[l>>2]|0,c[l+4>>2]|0,4,0)|0;c[j>>2]=Fg(f,g,a,l,C)|0}if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}l=(c[h>>2]|0)+56|0;c[l>>2]=(c[l>>2]|0)+1;c[j>>2]=Ht(c[h>>2]|0,c[(c[b>>2]|0)+20>>2]|0)|0;l=c[j>>2]|0;i=k;return l|0}function Ft(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[b>>2]=a;c[e>>2]=0;if(c[c[(c[b>>2]|0)+72>>2]>>2]|0){e=c[e>>2]|0;i=f;return e|0}if((d[(c[b>>2]|0)+5>>0]|0|0)!=4?(d[(c[b>>2]|0)+22>>0]|0|0)==0:0){c[e>>2]=pt(c[b>>2]|0,c[(c[b>>2]|0)+72>>2]|0,8192)|0;e=c[e>>2]|0;i=f;return e|0}Ir(c[(c[b>>2]|0)+72>>2]|0);e=c[e>>2]|0;i=f;return e|0}function Gt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;h=f+12|0;j=f;k=f+8|0;g=f+16|0;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;Xs(g,c[k>>2]|0);e=j;e=Fg(c[h>>2]|0,g,4,c[e>>2]|0,c[e+4>>2]|0)|0;i=f;return e|0}function Ht(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;h=j+4|0;g=j;c[d>>2]=a;c[e>>2]=b;c[h>>2]=0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[d>>2]|0)+104>>2]|0))break;c[g>>2]=(c[(c[d>>2]|0)+100>>2]|0)+((c[f>>2]|0)*48|0);if((c[e>>2]|0)>>>0<=(c[(c[g>>2]|0)+20>>2]|0)>>>0){b=gj(c[(c[g>>2]|0)+16>>2]|0,c[e>>2]|0)|0;c[h>>2]=c[h>>2]|b}c[f>>2]=(c[f>>2]|0)+1}i=j;return c[h>>2]|0}function It(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+8>>2]|0}function Jt(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=vs(c[d>>2]|0)|0;i=b;return a|0}function Kt(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+64|0;l=x+40|0;m=x+36|0;t=x+50|0;o=x+52|0;n=x+32|0;j=x+28|0;w=x+24|0;g=x+48|0;r=x+20|0;v=x+16|0;p=x+12|0;q=x+8|0;h=x+4|0;k=x;s=x+46|0;u=x+44|0;c[m>>2]=f;do if(!(a[c[m>>2]>>0]|0)){c[j>>2]=c[(c[m>>2]|0)+52>>2];a[o>>0]=a[(c[m>>2]|0)+5>>0]|0;c[n>>2]=c[(c[m>>2]|0)+56>>2];if(Lt(c[m>>2]|0,d[(c[n>>2]|0)+(d[o>>0]|0)>>0]|0)|0){c[l>>2]=Lj(57320)|0;w=c[l>>2]|0;i=x;return w|0}b[(c[m>>2]|0)+20>>1]=(c[(c[j>>2]|0)+32>>2]|0)-1;a[(c[m>>2]|0)+1>>0]=0;c[w>>2]=c[(c[j>>2]|0)+36>>2];f=(d[o>>0]|0)+8+(d[(c[m>>2]|0)+6>>0]|0)&65535;b[g>>1]=f;b[(c[m>>2]|0)+14>>1]=f;c[(c[m>>2]|0)+60>>2]=(c[n>>2]|0)+(c[w>>2]|0);c[(c[m>>2]|0)+64>>2]=(c[n>>2]|0)+(e[g>>1]|0);c[(c[m>>2]|0)+68>>2]=(c[n>>2]|0)+(d[(c[m>>2]|0)+6>>0]|0);c[v>>2]=((d[(c[n>>2]|0)+((d[o>>0]|0)+5)>>0]<<8|d[(c[n>>2]|0)+((d[o>>0]|0)+5)+1>>0])-1&65535)+1;b[(c[m>>2]|0)+18>>1]=d[(c[n>>2]|0)+((d[o>>0]|0)+3)>>0]<<8|d[(c[n>>2]|0)+((d[o>>0]|0)+3)+1>>0];if((e[(c[m>>2]|0)+18>>1]|0)>>>0>((((c[(c[j>>2]|0)+32>>2]|0)-8|0)>>>0)/6|0)>>>0){c[l>>2]=Lj(57338)|0;w=c[l>>2]|0;i=x;return w|0}c[p>>2]=(e[g>>1]|0)+(e[(c[m>>2]|0)+18>>1]<<1);c[q>>2]=(c[w>>2]|0)-4;do if(c[(c[(c[j>>2]|0)+4>>2]|0)+24>>2]&268435456){if(!(a[(c[m>>2]|0)+4>>0]|0))c[q>>2]=(c[q>>2]|0)+-1;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[(c[m>>2]|0)+18>>1]|0)){g=17;break}b[t>>1]=d[(c[n>>2]|0)+((e[g>>1]|0)+(c[h>>2]<<1))>>0]<<8|d[(c[n>>2]|0)+((e[g>>1]|0)+(c[h>>2]<<1))+1>>0];if((e[t>>1]|0)<(c[p>>2]|0)){g=13;break}if((e[t>>1]|0)>(c[q>>2]|0)){g=13;break}c[k>>2]=(Yb[c[(c[m>>2]|0)+76>>2]&255](c[m>>2]|0,(c[n>>2]|0)+(e[t>>1]|0)|0)|0)&65535;if(((e[t>>1]|0)+(c[k>>2]|0)|0)>(c[w>>2]|0)){g=15;break}c[h>>2]=(c[h>>2]|0)+1}if((g|0)==13){c[l>>2]=Lj(57366)|0;w=c[l>>2]|0;i=x;return w|0}else if((g|0)==15){c[l>>2]=Lj(57371)|0;w=c[l>>2]|0;i=x;return w|0}else if((g|0)==17){if(a[(c[m>>2]|0)+4>>0]|0)break;c[q>>2]=(c[q>>2]|0)+1;break}}while(0);b[t>>1]=d[(c[n>>2]|0)+((d[o>>0]|0)+1)>>0]<<8|d[(c[n>>2]|0)+((d[o>>0]|0)+1)+1>>0];c[r>>2]=(d[(c[n>>2]|0)+((d[o>>0]|0)+7)>>0]|0)+(c[v>>2]|0);while(1){if((e[t>>1]|0)<=0){g=29;break}if((e[t>>1]|0)<(c[p>>2]|0)){g=23;break}if((e[t>>1]|0)>(c[q>>2]|0)){g=23;break}b[s>>1]=d[(c[n>>2]|0)+(e[t>>1]|0)>>0]<<8|d[(c[n>>2]|0)+(e[t>>1]|0)+1>>0];b[u>>1]=d[(c[n>>2]|0)+((e[t>>1]|0)+2)>>0]<<8|d[(c[n>>2]|0)+((e[t>>1]|0)+2)+1>>0];if((e[s>>1]|0)>0?(e[s>>1]|0)<=((e[t>>1]|0)+(e[u>>1]|0)+3|0):0){g=27;break}if(((e[t>>1]|0)+(e[u>>1]|0)|0)>(c[w>>2]|0)){g=27;break}c[r>>2]=(c[r>>2]|0)+(e[u>>1]|0);b[t>>1]=b[s>>1]|0}if((g|0)==23){c[l>>2]=Lj(57391)|0;w=c[l>>2]|0;i=x;return w|0}else if((g|0)==27){c[l>>2]=Lj(57398)|0;w=c[l>>2]|0;i=x;return w|0}else if((g|0)==29){if((c[r>>2]|0)<=(c[w>>2]|0)){b[(c[m>>2]|0)+16>>1]=(c[r>>2]|0)-(c[p>>2]|0);a[c[m>>2]>>0]=1;break}c[l>>2]=Lj(57412)|0;w=c[l>>2]|0;i=x;return w|0}}while(0);c[l>>2]=0;w=c[l>>2]|0;i=x;return w|0}function Lt(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+12|0;j=l+8|0;g=l+4|0;k=l;c[j>>2]=e;c[g>>2]=f;a[(c[j>>2]|0)+4>>0]=c[g>>2]>>3;c[g>>2]=c[g>>2]&-9;a[(c[j>>2]|0)+6>>0]=4-(d[(c[j>>2]|0)+4>>0]<<2);c[(c[j>>2]|0)+76>>2]=188;c[k>>2]=c[(c[j>>2]|0)+52>>2];do if((c[g>>2]|0)==5){a[(c[j>>2]|0)+2>>0]=1;g=(c[j>>2]|0)+3|0;if(a[(c[j>>2]|0)+4>>0]|0){a[g>>0]=1;c[(c[j>>2]|0)+80>>2]=226}else{a[g>>0]=0;c[(c[j>>2]|0)+76>>2]=189;c[(c[j>>2]|0)+80>>2]=227}b[(c[j>>2]|0)+10>>1]=b[(c[k>>2]|0)+28>>1]|0;b[(c[j>>2]|0)+12>>1]=b[(c[k>>2]|0)+30>>1]|0}else{if((c[g>>2]|0)==2){a[(c[j>>2]|0)+2>>0]=0;a[(c[j>>2]|0)+3>>0]=0;c[(c[j>>2]|0)+80>>2]=228;b[(c[j>>2]|0)+10>>1]=b[(c[k>>2]|0)+24>>1]|0;b[(c[j>>2]|0)+12>>1]=b[(c[k>>2]|0)+26>>1]|0;break}c[h>>2]=Lj(57278)|0;k=c[h>>2]|0;i=l;return k|0}while(0);a[(c[j>>2]|0)+7>>0]=a[(c[k>>2]|0)+21>>0]|0;c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}function Mt(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;m=n+12|0;l=n+8|0;k=n+4|0;j=n;c[g>>2]=b;c[h>>2]=f;c[m>>2]=(c[h>>2]|0)+(d[(c[g>>2]|0)+6>>0]|0);c[k>>2]=d[c[m>>2]>>0];a:do if((c[k>>2]|0)>>>0>=128){c[l>>2]=(c[m>>2]|0)+8;c[k>>2]=c[k>>2]&127;do{f=c[k>>2]<<7;b=(c[m>>2]|0)+1|0;c[m>>2]=b;c[k>>2]=f|d[b>>0]&127;if((d[c[m>>2]>>0]|0)<128)break a}while((c[m>>2]|0)>>>0<(c[l>>2]|0)>>>0)}while(0);c[m>>2]=(c[m>>2]|0)+1;b:do if(a[(c[g>>2]|0)+2>>0]|0){c[l>>2]=(c[m>>2]|0)+9;do{b=c[m>>2]|0;c[m>>2]=b+1;if(!(d[b>>0]&128))break b}while((c[m>>2]|0)>>>0<(c[l>>2]|0)>>>0)}while(0);if((c[k>>2]|0)>>>0<=(e[(c[g>>2]|0)+10>>1]|0)>>>0){b=(c[k>>2]|0)+((c[m>>2]|0)-(c[h>>2]|0))|0;c[k>>2]=b;c[k>>2]=(c[k>>2]|0)>>>0<4?4:b;b=c[k>>2]|0;b=b&65535;i=n;return b|0}c[j>>2]=e[(c[g>>2]|0)+12>>1];c[k>>2]=(c[j>>2]|0)+((((c[k>>2]|0)-(c[j>>2]|0)|0)>>>0)%(((c[(c[(c[g>>2]|0)+52>>2]|0)+36>>2]|0)-4|0)>>>0)|0);if((c[k>>2]|0)>>>0>(e[(c[g>>2]|0)+10>>1]|0)>>>0)c[k>>2]=c[j>>2];c[k>>2]=(c[k>>2]|0)+(4+((c[m>>2]|0)-(c[h>>2]|0)&65535));b=c[k>>2]|0;b=b&65535;i=n;return b|0}function Nt(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;h=q+32|0;j=q+28|0;k=q+24|0;p=q+20|0;m=q+16|0;l=q;n=q+12|0;o=q+8|0;c[h>>2]=a;c[j>>2]=f;c[k>>2]=g;c[p>>2]=c[j>>2];c[m>>2]=d[c[p>>2]>>0];a:do if((c[m>>2]|0)>>>0>=128){c[n>>2]=(c[p>>2]|0)+8;c[m>>2]=c[m>>2]&127;do{g=c[m>>2]<<7;a=(c[p>>2]|0)+1|0;c[p>>2]=a;c[m>>2]=g|(d[a>>0]|0)&127;if((d[c[p>>2]>>0]|0|0)<128)break a}while((c[p>>2]|0)>>>0<(c[n>>2]|0)>>>0)}while(0);c[p>>2]=(c[p>>2]|0)+1;a=l;c[a>>2]=d[c[p>>2]>>0];c[a+4>>2]=0;a=l;g=c[a+4>>2]|0;b:do if(g>>>0>0|(g|0)==0&(c[a>>2]|0)>>>0>=128){c[o>>2]=(c[p>>2]|0)+7;a=l;c[a>>2]=c[l>>2]&127;c[a+4>>2]=0;do{n=l;n=lR(c[n>>2]|0,c[n+4>>2]|0,7)|0;g=(c[p>>2]|0)+1|0;c[p>>2]=g;g=(d[g>>0]|0)&127;a=l;c[a>>2]=n|g;c[a+4>>2]=C|((g|0)<0)<<31>>31;if((d[c[p>>2]>>0]|0|0)<128)break b}while((c[p>>2]|0)>>>0<(c[o>>2]|0)>>>0);o=l;o=lR(c[o>>2]|0,c[o+4>>2]|0,8)|0;g=(c[p>>2]|0)+1|0;c[p>>2]=g;a=l;c[a>>2]=o|(d[g>>0]|0);c[a+4>>2]=C}while(0);c[p>>2]=(c[p>>2]|0)+1;o=l;g=c[o+4>>2]|0;a=c[k>>2]|0;c[a>>2]=c[o>>2];c[a+4>>2]=g;c[(c[k>>2]|0)+12>>2]=c[m>>2];c[(c[k>>2]|0)+8>>2]=c[p>>2];if((c[m>>2]|0)>>>0>(e[(c[h>>2]|0)+10>>1]|0)>>>0){Rt(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0);i=q;return}b[(c[k>>2]|0)+18>>1]=(c[m>>2]|0)+((c[p>>2]|0)-(c[j>>2]|0)&65535);if((e[(c[k>>2]|0)+18>>1]|0|0)<4)b[(c[k>>2]|0)+18>>1]=4;b[(c[k>>2]|0)+16>>1]=c[m>>2];i=q;return}function Ot(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;g=h+4|0;f=h;c[h+12>>2]=a;c[e>>2]=b;c[g>>2]=(c[e>>2]|0)+4;c[f>>2]=(c[g>>2]|0)+9;do{a=c[g>>2]|0;c[g>>2]=a+1;if(!((d[a>>0]|0)&128))break}while((c[g>>2]|0)>>>0<(c[f>>2]|0)>>>0);i=h;return(c[g>>2]|0)-(c[e>>2]|0)&65535|0}function Pt(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;h=f+4|0;g=f;c[f+8>>2]=a;c[h>>2]=d;c[g>>2]=e;a=4+((St((c[h>>2]|0)+4|0,c[g>>2]|0)|0)&255)&65535;b[(c[g>>2]|0)+18>>1]=a;c[(c[g>>2]|0)+12>>2]=0;b[(c[g>>2]|0)+16>>1]=0;c[(c[g>>2]|0)+8>>2]=0;i=f;return}function Qt(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+20|0;j=o+16|0;k=o+12|0;n=o+8|0;l=o+4|0;m=o;c[h>>2]=a;c[j>>2]=f;c[k>>2]=g;c[n>>2]=(c[j>>2]|0)+(d[(c[h>>2]|0)+6>>0]|0);c[l>>2]=d[c[n>>2]>>0];a:do if((c[l>>2]|0)>>>0>=128){c[m>>2]=(c[n>>2]|0)+8;c[l>>2]=c[l>>2]&127;do{g=c[l>>2]<<7;a=(c[n>>2]|0)+1|0;c[n>>2]=a;c[l>>2]=g|(d[a>>0]|0)&127;if((d[c[n>>2]>>0]|0|0)<128)break a}while((c[n>>2]|0)>>>0<(c[m>>2]|0)>>>0)}while(0);c[n>>2]=(c[n>>2]|0)+1;a=c[k>>2]|0;c[a>>2]=c[l>>2];c[a+4>>2]=0;c[(c[k>>2]|0)+12>>2]=c[l>>2];c[(c[k>>2]|0)+8>>2]=c[n>>2];if((c[l>>2]|0)>>>0>(e[(c[h>>2]|0)+10>>1]|0)>>>0){Rt(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0);i=o;return}b[(c[k>>2]|0)+18>>1]=(c[l>>2]|0)+((c[n>>2]|0)-(c[j>>2]|0)&65535);if((e[(c[k>>2]|0)+18>>1]|0|0)<4)b[(c[k>>2]|0)+18>>1]=4;b[(c[k>>2]|0)+16>>1]=c[l>>2];i=o;return}function Rt(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;n=l+20|0;g=l+16|0;h=l+12|0;j=l+8|0;m=l+4|0;k=l;c[n>>2]=a;c[g>>2]=d;c[h>>2]=f;c[j>>2]=e[(c[n>>2]|0)+12>>1];c[m>>2]=e[(c[n>>2]|0)+10>>1];c[k>>2]=(c[j>>2]|0)+((((c[(c[h>>2]|0)+12>>2]|0)-(c[j>>2]|0)|0)>>>0)%(((c[(c[(c[n>>2]|0)+52>>2]|0)+36>>2]|0)-4|0)>>>0)|0);if((c[k>>2]|0)<=(c[m>>2]|0))b[(c[h>>2]|0)+16>>1]=c[k>>2];else b[(c[h>>2]|0)+16>>1]=c[j>>2];b[(c[h>>2]|0)+18>>1]=((c[(c[h>>2]|0)+8>>2]|0)+(e[(c[h>>2]|0)+16>>1]|0)-(c[g>>2]|0)&65535)+4;i=l;return}function tE(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=i;i=i+96|0;r=F+80|0;s=F+76|0;k=F+72|0;t=F+68|0;u=F+64|0;G=F+60|0;E=F+56|0;z=F+52|0;m=F+48|0;n=F+44|0;p=F+40|0;v=F+36|0;q=F+84|0;w=F+32|0;A=F+28|0;x=F+24|0;C=F+20|0;o=F+16|0;l=F+12|0;y=F+8|0;D=F+4|0;B=F;c[s>>2]=e;c[k>>2]=f;c[t>>2]=g;c[u>>2]=h;c[G>>2]=j;c[E>>2]=0;c[w>>2]=c[c[s>>2]>>2];c[A>>2]=0;if(!(vE(c[w>>2]|0,c[k>>2]|0,c[G>>2]|0,q)|0)){c[r>>2]=0;G=c[r>>2]|0;i=F;return G|0}c[n>>2]=c[(c[k>>2]|0)+20>>2];c[m>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+20>>2];if(((d[c[m>>2]>>0]|0)==152?((Nx(c[m>>2]|0)|0)<<24>>24|0)==66:0)?(d[(c[(c[m>>2]|0)+44>>2]|0)+42>>0]&16|0)==0:0){c[z>>2]=Tx(c[c[(c[n>>2]|0)+4>>2]>>2]|0)|0;c[x>>2]=d[c[z>>2]>>0];if((c[x>>2]|0)!=135){if((c[x>>2]|0)==97)c[E>>2]=c[(c[z>>2]|0)+8>>2]}else{c[o>>2]=c[(c[s>>2]|0)+480>>2];c[l>>2]=b[(c[z>>2]|0)+32>>1];c[A>>2]=wE(c[o>>2]|0,c[l>>2]|0,65)|0;if((c[A>>2]|0)!=0?(fe(c[A>>2]|0)|0)==3:0)c[E>>2]=ae(c[A>>2]|0)|0;xE(c[(c[s>>2]|0)+8>>2]|0,c[l>>2]|0)}do if(c[E>>2]|0){c[v>>2]=0;while(1){G=a[(c[E>>2]|0)+(c[v>>2]|0)>>0]|0;c[p>>2]=G;if(((G|0)!=0?(c[p>>2]|0)!=(a[q>>0]|0):0)?(c[p>>2]|0)!=(a[q+1>>0]|0):0)k=(c[p>>2]|0)!=(a[q+2>>0]|0);else k=0;l=c[v>>2]|0;if(!k)break;c[v>>2]=l+1}if((l|0)!=0?255!=(d[(c[E>>2]|0)+((c[v>>2]|0)-1)>>0]|0):0){if((c[p>>2]|0)==(a[q>>0]|0))k=(a[(c[E>>2]|0)+((c[v>>2]|0)+1)>>0]|0)==0;else k=0;c[c[u>>2]>>2]=k&1;c[y>>2]=Jv(c[w>>2]|0,97,c[E>>2]|0)|0;if(c[y>>2]|0)a[(c[(c[y>>2]|0)+8>>2]|0)+(c[v>>2]|0)>>0]=0;c[c[t>>2]>>2]=c[y>>2];if((c[x>>2]|0)!=135)break;c[D>>2]=c[(c[s>>2]|0)+8>>2];xE(c[D>>2]|0,b[(c[z>>2]|0)+32>>1]|0);if(!(c[c[u>>2]>>2]|0))break;if(!(a[(c[(c[z>>2]|0)+8>>2]|0)+1>>0]|0))break;c[B>>2]=Wz(c[s>>2]|0)|0;yA(c[s>>2]|0,c[z>>2]|0,c[B>>2]|0)|0;G=c[D>>2]|0;yE(G,(Bz(c[D>>2]|0)|0)-1|0,0);_z(c[s>>2]|0,c[B>>2]|0);break}c[E>>2]=0}while(0);c[C>>2]=(c[E>>2]|0)!=0&1;$g(c[A>>2]|0);c[r>>2]=c[C>>2];G=c[r>>2]|0;i=F;return G|0}c[r>>2]=0;G=c[r>>2]|0;i=F;return G|0; -}function uE(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+64|0;k=n+56|0;h=n+52|0;l=n+48|0;m=n+16|0;g=n+8|0;f=n+4|0;j=n;c[h>>2]=b;c[l>>2]=e;c[m>>2]=c[1570];c[m+4>>2]=c[1571];c[m+8>>2]=c[1572];c[m+12>>2]=c[1573];c[m+16>>2]=c[1574];c[m+20>>2]=c[1575];c[m+24>>2]=c[1576];c[m+28>>2]=c[1577];if((d[c[h>>2]>>0]|0|0)!=151){c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}c[g>>2]=c[(c[h>>2]|0)+20>>2];if((c[g>>2]|0)!=0?(c[c[g>>2]>>2]|0)==2:0){c[f>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+20>>2];if((d[c[f>>2]>>0]|0|0)==152?((d[(c[(c[f>>2]|0)+44>>2]|0)+42>>0]|0)&16|0)!=0:0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=4){f=14;break}e=(Td(c[(c[h>>2]|0)+8>>2]|0,c[m+(c[j>>2]<<3)>>2]|0)|0)==0;b=c[j>>2]|0;if(e){f=12;break}c[j>>2]=b+1}if((f|0)==12){a[c[l>>2]>>0]=a[m+(b<<3)+4>>0]|0;c[k>>2]=1;m=c[k>>2]|0;i=n;return m|0}else if((f|0)==14){c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}}c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}function vE(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;n=p+4|0;o=p;c[k>>2]=b;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;if(((d[c[l>>2]>>0]|0|0)==151?(c[(c[l>>2]|0)+20>>2]|0)!=0:0)?(c[c[(c[l>>2]|0)+20>>2]>>2]|0)==2:0){f=c[k>>2]|0;g=c[(c[l>>2]|0)+8>>2]|0;c[o>>2]=gi(f,g,If(c[(c[l>>2]|0)+8>>2]|0)|0,2,1,0)|0;if((c[o>>2]|0)!=0?((e[(c[o>>2]|0)+2>>1]|0)&4|0)!=0:0){g=c[n>>2]|0;f=c[(c[o>>2]|0)+4>>2]|0;a[g>>0]=a[f>>0]|0;a[g+1>>0]=a[f+1>>0]|0;a[g+2>>0]=a[f+2>>0]|0;c[c[m>>2]>>2]=((e[(c[o>>2]|0)+2>>1]|0)&8|0)==0&1;c[j>>2]=1;g=c[j>>2]|0;i=p;return g|0}c[j>>2]=0;g=c[j>>2]|0;i=p;return g|0}c[j>>2]=0;g=c[j>>2]|0;i=p;return g|0}function wE(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+16|0;h=n+12|0;j=n+8|0;k=n+20|0;l=n+4|0;m=n;c[h>>2]=b;c[j>>2]=d;a[k>>0]=f;if((c[h>>2]|0)!=0?(c[l>>2]=(c[(c[h>>2]|0)+60>>2]|0)+(((c[j>>2]|0)-1|0)*40|0),0==((e[(c[l>>2]|0)+8>>1]|0)&1|0)):0){c[m>>2]=Vh(c[c[h>>2]>>2]|0)|0;if(c[m>>2]|0){gh(c[m>>2]|0,c[l>>2]|0)|0;lx(c[m>>2]|0,a[k>>0]|0,1)}c[g>>2]=c[m>>2];b=c[g>>2]|0;i=n;return b|0}c[g>>2]=0;b=c[g>>2]|0;i=n;return b|0}function xE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if((c[e>>2]|0)>32){c[(c[d>>2]|0)+188>>2]=-1;i=f;return}else{a=(c[d>>2]|0)+188|0;c[a>>2]=c[a>>2]|1<<(c[e>>2]|0)-1;i=f;return}}function yE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[f>>2]=b;c[h>>2]=d;d=c[h>>2]|0;c[(Mz(c[g>>2]|0,c[f>>2]|0)|0)+12>>2]=d;i=e;return}function zE(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=b;b=c[g>>2]|0;if((e[(c[f>>2]|0)+18>>1]|0|0)!=1024){c[d>>2]=(b|0)==0?c[f>>2]|0:0;g=c[d>>2]|0;i=h;return g|0}if((b|0)<(c[(c[(c[f>>2]|0)+12>>2]|0)+12>>2]|0)){c[d>>2]=(c[(c[(c[f>>2]|0)+12>>2]|0)+20>>2]|0)+((c[g>>2]|0)*48|0);g=c[d>>2]|0;i=h;return g|0}else{c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}return 0}function AE(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;m=s+28|0;n=s+24|0;j=s+20|0;k=s+16|0;o=s+32|0;l=s+12|0;r=s+8|0;q=s+4|0;p=s;c[m>>2]=d;c[n>>2]=f;c[j>>2]=g;c[k>>2]=h;b[o>>1]=e[(c[j>>2]|0)+18>>1]|0|(e[(c[k>>2]|0)+18>>1]|0);if(!((e[(c[j>>2]|0)+18>>1]|0)&62)){i=s;return}if(!((e[(c[k>>2]|0)+18>>1]|0)&62)){i=s;return}if(((e[o>>1]|0)&26|0)!=(e[o>>1]|0|0)?((e[o>>1]|0)&38|0)!=(e[o>>1]|0|0):0){i=s;return}if(py(c[(c[c[j>>2]>>2]|0)+12>>2]|0,c[(c[c[k>>2]>>2]|0)+12>>2]|0,-1)|0){i=s;return}if(py(c[(c[c[j>>2]>>2]|0)+16>>2]|0,c[(c[c[k>>2]>>2]|0)+16>>2]|0,-1)|0){i=s;return}do if((e[o>>1]|0)&(e[o>>1]|0)-1)if((e[o>>1]|0)&24){b[o>>1]=8;break}else{b[o>>1]=32;break}while(0);c[l>>2]=c[c[c[c[n>>2]>>2]>>2]>>2];c[r>>2]=ny(c[l>>2]|0,c[c[j>>2]>>2]|0,0)|0;if(!(c[r>>2]|0)){i=s;return}c[q>>2]=79;while(1){j=c[q>>2]|0;if((e[o>>1]|0|0)==(2<<(c[q>>2]|0)-79|0))break;c[q>>2]=j+1}a[c[r>>2]>>0]=j;c[p>>2]=nE(c[n>>2]|0,c[r>>2]|0,3)|0;jE(c[m>>2]|0,c[n>>2]|0,c[p>>2]|0);i=s;return}function BE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;h=i;i=i+48|0;k=h+36|0;l=h+32|0;j=h+28|0;g=h;c[k>>2]=b;c[l>>2]=e;c[j>>2]=f;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;a[g+20>>0]=0;c[g+4>>2]=199;c[g+24>>2]=c[l>>2];by(g,c[k>>2]|0)|0;if(c[j>>2]|0){l=g+20|0;l=a[l>>0]|0;l=l<<24>>24!=0;l=l^1;l=l&1;i=h;return l|0}l=g+20|0;a[l>>0]=(d[l>>0]|0)&-3;l=g+20|0;l=a[l>>0]|0;l=l<<24>>24!=0;l=l^1;l=l&1;i=h;return l|0}function CE(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;l=n+8|0;k=n;f=n+28|0;g=n+24|0;h=n+20|0;m=n+16|0;j=n+12|0;c[f>>2]=a;c[g>>2]=d;c[h>>2]=e;a=c[c[f>>2]>>2]|0;d=c[c[h>>2]>>2]|0;if((b[(c[h>>2]|0)+32>>1]|0)>=0){h=c[(c[(c[h>>2]|0)+4>>2]|0)+((b[(c[h>>2]|0)+32>>1]|0)*24|0)>>2]|0;c[k>>2]=d;c[k+4>>2]=h;c[m>>2]=Bh(a,31016,k)|0;c[j>>2]=1555;h=c[f>>2]|0;k=c[j>>2]|0;l=c[g>>2]|0;m=c[m>>2]|0;bA(h,k,l,m,-1,2);i=n;return}else{c[l>>2]=d;c[m>>2]=Bh(a,36074,l)|0;c[j>>2]=2579;h=c[f>>2]|0;k=c[j>>2]|0;l=c[g>>2]|0;m=c[m>>2]|0;bA(h,k,l,m,-1,2);i=n;return}}function DE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;l=m+20|0;n=m+16|0;f=m+12|0;g=m+8|0;h=m+4|0;j=m;c[n>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;a:do if(c[(c[c[n>>2]>>2]|0)+24>>2]&524288){d=c[f>>2]|0;if(!(c[g>>2]|0)){if(Ex(d)|0)d=1;else d=(c[(c[f>>2]|0)+16>>2]|0)!=0;c[l>>2]=d&1;n=c[l>>2]|0;i=m;return n|0}c[j>>2]=c[d+16>>2];while(1){d=c[f>>2]|0;if(!(c[j>>2]|0))break;if(KC(d,c[j>>2]|0,c[g>>2]|0,c[h>>2]|0)|0){k=9;break}c[j>>2]=c[(c[j>>2]|0)+4>>2]}if((k|0)==9){c[l>>2]=1;n=c[l>>2]|0;i=m;return n|0}c[j>>2]=Ex(d)|0;while(1){if(!(c[j>>2]|0))break a;if(NC(c[f>>2]|0,c[j>>2]|0,c[g>>2]|0,c[h>>2]|0)|0)break;c[j>>2]=c[(c[j>>2]|0)+12>>2]}c[l>>2]=1;n=c[l>>2]|0;i=m;return n|0}while(0);c[l>>2]=0;n=c[l>>2]|0;i=m;return n|0}function EE(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=b;b=c[f>>2]|0;if(c[(c[f>>2]|0)+416>>2]|0)b=c[b+416>>2]|0;c[d>>2]=b;a[(c[d>>2]|0)+20>>0]=1;i=e;return}function FE(e,f,g,h,j,k,l,m,n,o,p){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+64|0;q=K+48|0;r=K+44|0;t=K+40|0;u=K+36|0;v=K+32|0;w=K+28|0;x=K+52|0;y=K+58|0;z=K+57|0;A=K+56|0;s=K+24|0;I=K+20|0;E=K+16|0;D=K+12|0;G=K+55|0;F=K+8|0;C=K+4|0;B=K;H=K+54|0;c[q>>2]=e;c[r>>2]=f;c[t>>2]=g;c[u>>2]=h;c[v>>2]=j;c[w>>2]=k;b[x>>1]=l;a[y>>0]=m;a[z>>0]=n;a[A>>0]=o;c[s>>2]=p;c[I>>2]=c[(c[q>>2]|0)+8>>2];c[E>>2]=0;c[D>>2]=Cz(c[I>>2]|0)|0;a[G>>0]=(d[(c[r>>2]|0)+42>>0]&32|0)==0?70:68;if(!(d[A>>0]|0))Eh(c[I>>2]|0,d[G>>0]|0,c[u>>2]|0,c[D>>2]|0,c[w>>2]|0,b[x>>1]|0)|0;g=(DE(c[q>>2]|0,c[r>>2]|0,0,0)|0)!=0;if(g|(c[t>>2]|0)!=0){c[F>>2]=HE(c[q>>2]|0,c[t>>2]|0,0,0,3,c[r>>2]|0,d[z>>0]|0)|0;g=IE(c[q>>2]|0,c[r>>2]|0)|0;c[F>>2]=c[F>>2]|g;c[E>>2]=(c[(c[q>>2]|0)+76>>2]|0)+1;g=(c[q>>2]|0)+76|0;c[g>>2]=(c[g>>2]|0)+(1+(b[(c[r>>2]|0)+34>>1]|0));Rw(c[I>>2]|0,30,c[w>>2]|0,c[E>>2]|0)|0;c[C>>2]=0;while(1){if((c[C>>2]|0)>=(b[(c[r>>2]|0)+34>>1]|0))break;if((c[F>>2]|0)!=-1){if((c[C>>2]|0)<=31?(c[F>>2]&1<>2]|0)!=0:0)J=9}else J=9;if((J|0)==9){J=0;tA(c[I>>2]|0,c[r>>2]|0,c[u>>2]|0,c[C>>2]|0,(c[E>>2]|0)+(c[C>>2]|0)+1|0)}c[C>>2]=(c[C>>2]|0)+1}c[B>>2]=Bz(c[I>>2]|0)|0;BC(c[q>>2]|0,c[t>>2]|0,109,0,1,c[r>>2]|0,c[E>>2]|0,d[z>>0]|0,c[D>>2]|0);J=c[B>>2]|0;if((J|0)<(Bz(c[I>>2]|0)|0))Eh(c[I>>2]|0,d[G>>0]|0,c[u>>2]|0,c[D>>2]|0,c[w>>2]|0,b[x>>1]|0)|0;GC(c[q>>2]|0,c[r>>2]|0,c[E>>2]|0,0,0,0)}if(c[(c[r>>2]|0)+12>>2]|0){e=c[q>>2]|0;H=c[r>>2]|0;G=c[E>>2]|0;JE(e,H,0,G,0,0);G=c[q>>2]|0;H=c[t>>2]|0;e=c[r>>2]|0;f=c[E>>2]|0;g=a[z>>0]|0;g=g&255;J=c[D>>2]|0;BC(G,H,109,0,2,e,f,g,J);I=c[I>>2]|0;J=c[D>>2]|0;Gz(I,J);i=K;return}a[H>>0]=0;GE(c[q>>2]|0,c[r>>2]|0,c[u>>2]|0,c[v>>2]|0,0,c[s>>2]|0);Rw(c[I>>2]|0,95,c[u>>2]|0,(d[y>>0]|0)!=0?1:0)|0;if(a[y>>0]|0)Ih(c[I>>2]|0,-1,c[c[r>>2]>>2]|0,0);if(d[A>>0]|0)Fh(c[I>>2]|0,4);if((c[s>>2]|0)>=0)xz(c[I>>2]|0,95,c[s>>2]|0)|0;if((d[A>>0]|0)==2)a[H>>0]=d[H>>0]|2;Fh(c[I>>2]|0,a[H>>0]|0);e=c[q>>2]|0;H=c[r>>2]|0;G=c[E>>2]|0;JE(e,H,0,G,0,0);G=c[q>>2]|0;H=c[t>>2]|0;e=c[r>>2]|0;f=c[E>>2]|0;g=a[z>>0]|0;g=g&255;J=c[D>>2]|0;BC(G,H,109,0,2,e,f,g,J);I=c[I>>2]|0;J=c[D>>2]|0;Gz(I,J);i=K;return}function GE(a,e,f,g,h,j){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+64|0;l=y+48|0;k=y+44|0;m=y+40|0;n=y+36|0;o=y+32|0;p=y+28|0;q=y+24|0;v=y+20|0;r=y+16|0;s=y+12|0;u=y+8|0;w=y+4|0;t=y;c[l>>2]=a;c[k>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[v>>2]=-1;c[u>>2]=0;c[w>>2]=c[(c[l>>2]|0)+8>>2];if(!((d[(c[k>>2]|0)+42>>0]|0)&32))h=0;else h=Ej(c[k>>2]|0)|0;c[t>>2]=h;c[q>>2]=0;c[s>>2]=c[(c[k>>2]|0)+8>>2];while(1){if(!(c[s>>2]|0))break;if(!((c[o>>2]|0)!=0?(c[(c[o>>2]|0)+(c[q>>2]<<2)>>2]|0)==0:0))x=7;if(((x|0)==7?(x=0,(c[s>>2]|0)!=(c[t>>2]|0)):0)?((c[n>>2]|0)+(c[q>>2]|0)|0)!=(c[p>>2]|0):0){c[v>>2]=Xz(c[l>>2]|0,c[s>>2]|0,c[m>>2]|0,0,1,r,c[u>>2]|0,c[v>>2]|0)|0;h=c[s>>2]|0;if((d[(c[s>>2]|0)+55>>0]|0)>>>3&1)h=b[h+50>>1]|0;else h=b[h+52>>1]|0;Vw(c[w>>2]|0,111,(c[n>>2]|0)+(c[q>>2]|0)|0,c[v>>2]|0,h&65535)|0;Yz(c[l>>2]|0,c[r>>2]|0);c[u>>2]=c[s>>2]}c[q>>2]=(c[q>>2]|0)+1;c[s>>2]=c[(c[s>>2]|0)+20>>2]}i=y;return}function HE(a,b,e,f,g,h,j){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+48|0;k=u+40|0;v=u+36|0;l=u+32|0;m=u+28|0;n=u+24|0;o=u+20|0;p=u+16|0;r=u+12|0;q=u+8|0;s=u+4|0;t=u;c[k>>2]=a;c[v>>2]=b;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[r>>2]=(c[l>>2]|0)!=0?110:109;c[q>>2]=0;c[s>>2]=c[v>>2];while(1){if(!(c[s>>2]|0))break;if((((d[(c[s>>2]|0)+8>>0]|0|0)==(c[r>>2]|0)?(c[n>>2]&(d[(c[s>>2]|0)+9>>0]|0)|0)!=0:0)?(MF(c[(c[s>>2]|0)+16>>2]|0,c[l>>2]|0)|0)!=0:0)?(c[t>>2]=ME(c[k>>2]|0,c[s>>2]|0,c[o>>2]|0,c[p>>2]|0)|0,(c[t>>2]|0)!=0):0)c[q>>2]=c[q>>2]|c[(c[t>>2]|0)+16+(c[m>>2]<<2)>>2];c[s>>2]=c[(c[s>>2]|0)+32>>2]}i=u;return c[q>>2]|0}function IE(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;j=m+12|0;k=m+8|0;h=m+4|0;l=m;c[f>>2]=a;c[g>>2]=d;c[j>>2]=0;if(!(c[(c[c[f>>2]>>2]|0)+24>>2]&524288)){l=c[j>>2]|0;i=m;return l|0}c[k>>2]=c[(c[g>>2]|0)+16>>2];while(1){if(!(c[k>>2]|0))break;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[k>>2]|0)+20>>2]|0))break;if((c[(c[k>>2]|0)+36+(c[h>>2]<<3)>>2]|0)>31)a=-1;else a=1<>2]|0)+36+(c[h>>2]<<3)>>2];c[j>>2]=c[j>>2]|a;c[h>>2]=(c[h>>2]|0)+1}c[k>>2]=c[(c[k>>2]|0)+4>>2]}c[k>>2]=Ex(c[g>>2]|0)|0;while(1){if(!(c[k>>2]|0))break;c[l>>2]=0;cC(c[f>>2]|0,c[g>>2]|0,c[k>>2]|0,l,0)|0;a:do if(c[l>>2]|0){c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[(c[l>>2]|0)+50>>1]|0))break a;if((b[(c[(c[l>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1]|0)>31)a=-1;else a=1<>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1];c[j>>2]=c[j>>2]|a;c[h>>2]=(c[h>>2]|0)+1}}while(0);c[k>>2]=c[(c[k>>2]|0)+12>>2]}l=c[j>>2]|0;i=m;return l|0}function JE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;h=r+28|0;j=r+24|0;k=r+20|0;l=r+16|0;m=r+12|0;n=r+8|0;p=r+4|0;o=r;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;if(!(c[(c[c[h>>2]>>2]|0)+24>>2]&524288)){i=r;return}c[p>>2]=Ex(c[j>>2]|0)|0;while(1){if(!(c[p>>2]|0))break;if(!((c[m>>2]|0)!=0?(NC(c[j>>2]|0,c[p>>2]|0,c[m>>2]|0,c[n>>2]|0)|0)==0:0))q=6;if((q|0)==6?(q=0,c[o>>2]=KE(c[h>>2]|0,c[j>>2]|0,c[p>>2]|0,c[k>>2]|0)|0,(c[o>>2]|0)!=0):0)LE(c[h>>2]|0,c[o>>2]|0,c[j>>2]|0,c[l>>2]|0,2,0);c[p>>2]=c[(c[p>>2]|0)+12>>2]}i=r;return}function KE(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=i;i=i+144|0;j=N+136|0;k=N+132|0;l=N+128|0;m=N+124|0;n=N+120|0;q=N+116|0;o=N+112|0;D=N+108|0;s=N+104|0;L=N+100|0;u=N+96|0;x=N+92|0;p=N+88|0;C=N+84|0;F=N+80|0;y=N+76|0;B=N+72|0;r=N+68|0;E=N+64|0;J=N+56|0;I=N+48|0;H=N+40|0;K=N+32|0;t=N+28|0;w=N+24|0;z=N+20|0;v=N+16|0;G=N+8|0;A=N;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[q>>2]=c[c[k>>2]>>2];c[s>>2]=(c[n>>2]|0)!=0&1;c[o>>2]=d[(c[m>>2]|0)+25+(c[s>>2]|0)>>0];c[D>>2]=c[(c[m>>2]|0)+28+(c[s>>2]<<2)>>2];if(!((c[o>>2]|0)==0|(c[D>>2]|0)!=0)){c[x>>2]=0;c[p>>2]=0;c[C>>2]=0;c[F>>2]=0;c[y>>2]=0;c[B>>2]=0;c[E>>2]=0;if(cC(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,x,p)|0){c[j>>2]=0;M=c[j>>2]|0;i=N;return M|0}c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[(c[m>>2]|0)+20>>2]|0))break;c[J>>2]=c[1578];c[J+4>>2]=c[1579];c[I>>2]=c[1580];c[I+4>>2]=c[1581];if(c[p>>2]|0)h=c[(c[p>>2]|0)+(c[r>>2]<<2)>>2]|0;else h=c[(c[m>>2]|0)+36>>2]|0;c[t>>2]=h;if(c[x>>2]|0)h=b[(c[(c[x>>2]|0)+4>>2]|0)+(c[r>>2]<<1)>>1]|0;else h=b[(c[l>>2]|0)+32>>1]|0;Cy(K,c[(c[(c[l>>2]|0)+4>>2]|0)+((h<<16>>16)*24|0)>>2]|0);Cy(H,c[(c[(c[c[m>>2]>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)>>2]|0);e=c[k>>2]|0;g=c[k>>2]|0;f=cz(c[q>>2]|0,27,J,0)|0;f=rv(g,122,f,cz(c[q>>2]|0,27,K,0)|0,0)|0;c[w>>2]=rv(e,79,f,cz(c[q>>2]|0,27,H,0)|0,0)|0;c[F>>2]=az(c[q>>2]|0,c[F>>2]|0,c[w>>2]|0)|0;if(c[n>>2]|0){h=c[k>>2]|0;e=c[k>>2]|0;g=cz(c[q>>2]|0,27,J,0)|0;g=rv(e,122,g,cz(c[q>>2]|0,27,K,0)|0,0)|0;e=c[k>>2]|0;f=cz(c[q>>2]|0,27,I,0)|0;c[w>>2]=rv(h,73,g,rv(e,122,f,cz(c[q>>2]|0,27,K,0)|0,0)|0,0)|0;c[E>>2]=az(c[q>>2]|0,c[E>>2]|0,c[w>>2]|0)|0}if((c[o>>2]|0)!=6?(c[o>>2]|0)!=9|(c[n>>2]|0)!=0:0){do if((c[o>>2]|0)!=9){if((c[o>>2]|0)!=8){c[z>>2]=rv(c[k>>2]|0,101,0,0,0)|0;break}c[v>>2]=c[(c[(c[c[m>>2]>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)+4>>2];if(c[v>>2]|0){c[z>>2]=ny(c[q>>2]|0,c[v>>2]|0,0)|0;break}else{c[z>>2]=rv(c[k>>2]|0,101,0,0,0)|0;break}}else{e=c[k>>2]|0;f=cz(c[q>>2]|0,27,I,0)|0;c[z>>2]=rv(e,122,f,cz(c[q>>2]|0,27,K,0)|0,0)|0}while(0);c[y>>2]=Gv(c[k>>2]|0,c[y>>2]|0,c[z>>2]|0)|0;Hv(c[k>>2]|0,c[y>>2]|0,H,0)}c[r>>2]=(c[r>>2]|0)+1}Sf(c[q>>2]|0,c[p>>2]|0);c[L>>2]=c[c[c[m>>2]>>2]>>2];c[u>>2]=If(c[L>>2]|0)|0;if((c[o>>2]|0)==6){c[G>>2]=c[L>>2];c[G+4>>2]=c[u>>2];c[A>>2]=Jv(c[q>>2]|0,57,36044)|0;if(c[A>>2]|0)a[(c[A>>2]|0)+1>>0]=2;I=c[k>>2]|0;J=Gv(c[k>>2]|0,0,c[A>>2]|0)|0;K=Nv(c[q>>2]|0,0,G,0)|0;c[B>>2]=Fv(I,J,K,c[F>>2]|0,0,0,0,0,0,0)|0;c[F>>2]=0}K=(c[q>>2]|0)+248|0;c[K>>2]=(c[K>>2]|0)+1;c[D>>2]=ph(c[q>>2]|0,72+(c[u>>2]|0)+1|0,0)|0;if((c[D>>2]|0)!=0?(K=(c[D>>2]|0)+36|0,c[(c[D>>2]|0)+28>>2]=K,c[C>>2]=K,c[(c[C>>2]|0)+12>>2]=(c[C>>2]|0)+36,iR(c[(c[C>>2]|0)+12>>2]|0,c[L>>2]|0,c[u>>2]|0)|0,L=ny(c[q>>2]|0,c[F>>2]|0,1)|0,c[(c[C>>2]|0)+16>>2]=L,L=vy(c[q>>2]|0,c[y>>2]|0,1)|0,c[(c[C>>2]|0)+20>>2]=L,L=Hx(c[q>>2]|0,c[B>>2]|0,1)|0,c[(c[C>>2]|0)+8>>2]=L,(c[E>>2]|0)!=0):0){c[E>>2]=rv(c[k>>2]|0,19,c[E>>2]|0,0,0)|0;L=ny(c[q>>2]|0,c[E>>2]|0,1)|0;c[(c[D>>2]|0)+12>>2]=L}L=(c[q>>2]|0)+248|0;c[L>>2]=(c[L>>2]|0)+-1;Zu(c[q>>2]|0,c[F>>2]|0);Zu(c[q>>2]|0,c[E>>2]|0);Vu(c[q>>2]|0,c[y>>2]|0);Wu(c[q>>2]|0,c[B>>2]|0);if((d[(c[q>>2]|0)+65>>0]|0|0)==1){LF(c[q>>2]|0,c[D>>2]|0);c[j>>2]=0;M=c[j>>2]|0;i=N;return M|0}switch(c[o>>2]|0){case 6:{a[c[C>>2]>>0]=119;break}case 9:{if(c[n>>2]|0)M=38;else a[c[C>>2]>>0]=109;break}default:M=38}if((M|0)==38)a[c[C>>2]>>0]=110;c[(c[C>>2]|0)+4>>2]=c[D>>2];c[(c[D>>2]|0)+20>>2]=c[(c[l>>2]|0)+64>>2];c[(c[D>>2]|0)+24>>2]=c[(c[l>>2]|0)+64>>2];c[(c[m>>2]|0)+28+(c[s>>2]<<2)>>2]=c[D>>2];a[(c[D>>2]|0)+8>>0]=(c[n>>2]|0)!=0?110:109}c[j>>2]=c[D>>2];M=c[j>>2]|0;i=N;return M|0}function LE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=i;i=i+48|0;j=p+32|0;h=p+28|0;r=p+24|0;k=p+20|0;q=p+16|0;l=p+12|0;o=p+8|0;n=p+4|0;m=p;c[j>>2]=a;c[h>>2]=b;c[r>>2]=d;c[k>>2]=e;c[q>>2]=f;c[l>>2]=g;c[o>>2]=Pw(c[j>>2]|0)|0;c[n>>2]=ME(c[j>>2]|0,c[h>>2]|0,c[r>>2]|0,c[q>>2]|0)|0;if(!(c[n>>2]|0)){i=p;return}if(c[c[h>>2]>>2]|0)h=0==(c[(c[c[j>>2]>>2]|0)+24>>2]&262144|0);else h=0;c[m>>2]=h&1;e=c[o>>2]|0;k=c[k>>2]|0;q=c[l>>2]|0;l=(c[j>>2]|0)+76|0;r=(c[l>>2]|0)+1|0;c[l>>2]=r;Uw(e,132,k,q,r,c[(c[n>>2]|0)+8>>2]|0,-18)|0;Fh(c[o>>2]|0,c[m>>2]&255);i=p;return}function ME(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;k=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;e=c[f>>2]|0;if(c[(c[f>>2]|0)+416>>2]|0)e=c[e+416>>2]|0;c[l>>2]=e;c[k>>2]=c[(c[l>>2]|0)+532>>2];while(1){if(!(c[k>>2]|0))break;if((c[c[k>>2]>>2]|0)==(c[g>>2]|0)?(c[(c[k>>2]|0)+12>>2]|0)==(c[j>>2]|0):0)break;c[k>>2]=c[(c[k>>2]|0)+4>>2]}if(c[k>>2]|0){l=c[k>>2]|0;i=m;return l|0}c[k>>2]=NE(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;l=c[k>>2]|0;i=m;return l|0}function NE(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+96|0;w=x;h=x+84|0;j=x+80|0;k=x+76|0;l=x+72|0;m=x+68|0;s=x+64|0;n=x+60|0;p=x+56|0;t=x+52|0;v=x+48|0;u=x+16|0;q=x+12|0;r=x+8|0;o=x+4|0;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;g=c[j>>2]|0;if(c[(c[j>>2]|0)+416>>2]|0)g=c[g+416>>2]|0;c[s>>2]=g;c[n>>2]=c[c[j>>2]>>2];c[t>>2]=0;c[q>>2]=0;c[o>>2]=0;c[p>>2]=ph(c[n>>2]|0,24,0)|0;if(!(c[p>>2]|0)){c[h>>2]=0;w=c[h>>2]|0;i=x;return w|0}c[(c[p>>2]|0)+4>>2]=c[(c[s>>2]|0)+532>>2];c[(c[s>>2]|0)+532>>2]=c[p>>2];e=ph(c[n>>2]|0,28,0)|0;c[q>>2]=e;c[(c[p>>2]|0)+8>>2]=e;if(!(c[q>>2]|0)){c[h>>2]=0;w=c[h>>2]|0;i=x;return w|0}OE(c[(c[s>>2]|0)+8>>2]|0,c[q>>2]|0);c[c[p>>2]>>2]=c[k>>2];c[(c[p>>2]|0)+12>>2]=c[m>>2];c[(c[p>>2]|0)+16>>2]=-1;c[(c[p>>2]|0)+16+4>>2]=-1;c[r>>2]=ph(c[n>>2]|0,544,0)|0;if(!(c[r>>2]|0)){c[h>>2]=0;w=c[h>>2]|0;i=x;return w|0}c[u>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[u+16>>2]=0;c[u+20>>2]=0;c[u+24>>2]=0;c[u+28>>2]=0;c[u>>2]=c[r>>2];c[c[r>>2]>>2]=c[n>>2];c[(c[r>>2]|0)+420>>2]=c[l>>2];c[(c[r>>2]|0)+416>>2]=c[s>>2];c[(c[r>>2]|0)+496>>2]=c[c[k>>2]>>2];a[(c[r>>2]|0)+440>>0]=a[(c[k>>2]|0)+8>>0]|0;c[(c[r>>2]|0)+428>>2]=c[(c[j>>2]|0)+428>>2];c[v>>2]=Pw(c[r>>2]|0)|0;if(c[v>>2]|0){e=c[v>>2]|0;l=c[n>>2]|0;c[w>>2]=c[c[k>>2]>>2];Ih(e,-1,Bh(l,35740,w)|0,-1);if(c[(c[k>>2]|0)+12>>2]|0){c[t>>2]=ny(c[n>>2]|0,c[(c[k>>2]|0)+12>>2]|0,0)|0;if(0==(fy(u,c[t>>2]|0)|0)?(d[(c[n>>2]|0)+65>>0]|0|0)==0:0){c[o>>2]=Cz(c[v>>2]|0)|0;LA(c[r>>2]|0,c[t>>2]|0,c[o>>2]|0,16)}Zu(c[n>>2]|0,c[t>>2]|0)}PE(c[r>>2]|0,c[(c[k>>2]|0)+28>>2]|0,c[m>>2]|0)|0;if(c[o>>2]|0)Gz(c[v>>2]|0,c[o>>2]|0);Yw(c[v>>2]|0,21)|0;QE(c[j>>2]|0,c[r>>2]|0);if(!(d[(c[n>>2]|0)+65>>0]|0)){w=RE(c[v>>2]|0,(c[q>>2]|0)+4|0,(c[s>>2]|0)+400|0)|0;c[c[q>>2]>>2]=w}c[(c[q>>2]|0)+8>>2]=c[(c[r>>2]|0)+76>>2];c[(c[q>>2]|0)+12>>2]=c[(c[r>>2]|0)+72>>2];c[(c[q>>2]|0)+16>>2]=c[(c[r>>2]|0)+84>>2];c[(c[q>>2]|0)+20>>2]=c[k>>2];c[(c[p>>2]|0)+16>>2]=c[(c[r>>2]|0)+432>>2];c[(c[p>>2]|0)+16+4>>2]=c[(c[r>>2]|0)+436>>2];Tu(c[v>>2]|0)}Lh(c[r>>2]|0);Sf(c[n>>2]|0,c[r>>2]|0);c[h>>2]=c[p>>2];w=c[h>>2]|0;i=x;return w|0}function OE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[(c[f>>2]|0)+24>>2]=c[(c[e>>2]|0)+192>>2];c[(c[e>>2]|0)+192>>2]=c[f>>2];i=d;return}function PE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;g=o+44|0;p=o+40|0;h=o+36|0;l=o+32|0;n=o+28|0;j=o+24|0;m=o+4|0;k=o;c[g>>2]=b;c[p>>2]=e;c[h>>2]=f;c[n>>2]=c[(c[g>>2]|0)+8>>2];c[j>>2]=c[c[g>>2]>>2];c[l>>2]=c[p>>2];while(1){if(!(c[l>>2]|0))break;if((c[h>>2]|0)==10)f=a[(c[l>>2]|0)+1>>0]|0;else f=c[h>>2]&255;a[(c[g>>2]|0)+441>>0]=f;switch(d[c[l>>2]>>0]|0|0){case 110:{b=c[g>>2]|0;e=KF(c[g>>2]|0,c[l>>2]|0)|0;p=vy(c[j>>2]|0,c[(c[l>>2]|0)+20>>2]|0,0)|0;Tv(b,e,p,ny(c[j>>2]|0,c[(c[l>>2]|0)+16>>2]|0,0)|0,d[(c[g>>2]|0)+441>>0]|0);break}case 108:{b=c[g>>2]|0;e=KF(c[g>>2]|0,c[l>>2]|0)|0;p=Hx(c[j>>2]|0,c[(c[l>>2]|0)+8>>2]|0,0)|0;Uv(b,e,p,nz(c[j>>2]|0,c[(c[l>>2]|0)+24>>2]|0)|0,d[(c[g>>2]|0)+441>>0]|0);break}case 109:{p=c[g>>2]|0;Rv(p,KF(c[g>>2]|0,c[l>>2]|0)|0,ny(c[j>>2]|0,c[(c[l>>2]|0)+16>>2]|0,0)|0);break}default:{c[k>>2]=Hx(c[j>>2]|0,c[(c[l>>2]|0)+8>>2]|0,0)|0;ZA(m,4,0);Cv(c[g>>2]|0,c[k>>2]|0,m)|0;Wu(c[j>>2]|0,c[k>>2]|0)}}if((d[c[l>>2]>>0]|0|0)!=119)Yw(c[n>>2]|0,98)|0;c[l>>2]=c[(c[l>>2]|0)+28>>2]}i=o;return 0}function QE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;b=c[e>>2]|0;if(!(c[(c[d>>2]|0)+68>>2]|0)){c[(c[d>>2]|0)+4>>2]=c[b+4>>2];c[(c[d>>2]|0)+68>>2]=c[(c[e>>2]|0)+68>>2];c[(c[d>>2]|0)+12>>2]=c[(c[e>>2]|0)+12>>2];i=f;return}else{Sf(c[b>>2]|0,c[(c[e>>2]|0)+4>>2]|0);i=f;return}}function RE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;j=f+4|0;e=f;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[e>>2]=c[(c[g>>2]|0)+4>>2];SE(c[g>>2]|0,c[j>>2]|0);c[c[h>>2]>>2]=c[(c[g>>2]|0)+32>>2];c[(c[g>>2]|0)+4>>2]=0;i=f;return c[e>>2]|0}function SE(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+28|0;h=r+24|0;k=r+20|0;m=r+16|0;o=r+12|0;p=r+8|0;j=r+4|0;n=r+32|0;l=r;c[g>>2]=e;c[h>>2]=f;c[m>>2]=c[c[h>>2]>>2];c[p>>2]=c[(c[g>>2]|0)+24>>2];c[j>>2]=c[(c[p>>2]|0)+120>>2];f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-65|64;f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-129;c[o>>2]=c[(c[g>>2]|0)+4>>2];c[k>>2]=(c[(c[g>>2]|0)+32>>2]|0)-1;while(1){if((c[k>>2]|0)<0)break;a[n>>0]=a[c[o>>2]>>0]|0;switch(d[n>>0]|0|0){case 2:{if(c[(c[o>>2]|0)+8>>2]|0){q=(c[g>>2]|0)+88|0;b[q>>1]=b[q>>1]&-65;q=6}else q=6;break}case 0:case 1:{q=6;break}case 9:case 10:case 8:{f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-65;f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-129|128;break}case 12:{if((c[(c[o>>2]|0)+8>>2]|0)>(c[m>>2]|0))c[m>>2]=c[(c[o>>2]|0)+8>>2];break}case 11:{c[l>>2]=c[(c[o>>2]|0)+-20+4>>2];if((c[l>>2]|0)>(c[m>>2]|0))c[m>>2]=c[l>>2];break}case 3:case 5:case 7:{c[(c[o>>2]|0)+16>>2]=200;a[(c[o>>2]|0)+1>>0]=-19;break}case 4:case 6:{c[(c[o>>2]|0)+16>>2]=201;a[(c[o>>2]|0)+1>>0]=-19;break}default:{}}if((q|0)==6){q=0;f=(c[g>>2]|0)+88|0;b[f>>1]=b[f>>1]&-129|128}a[(c[o>>2]|0)+2>>0]=a[35754+(d[n>>0]|0)>>0]|0;if(((d[(c[o>>2]|0)+2>>0]|0)&1|0)!=0?(c[(c[o>>2]|0)+8>>2]|0)<0:0)c[(c[o>>2]|0)+8>>2]=c[(c[j>>2]|0)+(-1-(c[(c[o>>2]|0)+8>>2]|0)<<2)>>2];c[k>>2]=(c[k>>2]|0)+-1;c[o>>2]=(c[o>>2]|0)+20}Sf(c[c[g>>2]>>2]|0,c[(c[p>>2]|0)+120>>2]|0);c[(c[p>>2]|0)+120>>2]=0;c[(c[p>>2]|0)+116>>2]=0;c[c[h>>2]>>2]=c[m>>2];i=r;return}function TE(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[j>>2]=f;c[k>>2]=g;b[(c[j>>2]|0)+16+18>>1]=0;f=(c[j>>2]|0)+64|0;a[f>>0]=d[f>>0]&-7;c[c[k>>2]>>2]=0;f=c[j>>2]|0;if((d[(c[j>>2]|0)+66>>0]|0)!=1){c[h>>2]=IF(f,c[k>>2]|0)|0;l=c[h>>2]|0;i=m;return l|0}c[l>>2]=c[(c[j>>2]|0)+120+(a[f+68>>0]<<2)>>2];f=(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)|0;g=(b[f>>1]|0)+1<<16>>16;b[f>>1]=g;if((g&65535|0)>=(e[(c[l>>2]|0)+18>>1]|0)){l=(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)|0;b[l>>1]=(b[l>>1]|0)+-1<<16>>16;c[h>>2]=IF(c[j>>2]|0,c[k>>2]|0)|0;l=c[h>>2]|0;i=m;return l|0}if(a[(c[l>>2]|0)+4>>0]|0){c[h>>2]=0;l=c[h>>2]|0;i=m;return l|0}else{c[h>>2]=JF(c[j>>2]|0)|0;l=c[h>>2]|0;i=m;return l|0}return 0}function UE(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+8|0;j=l+4|0;k=l;c[j>>2]=f;c[k>>2]=g;c[c[k>>2]>>2]=0;g=(c[j>>2]|0)+64|0;a[g>>0]=d[g>>0]&-15;b[(c[j>>2]|0)+16+18>>1]=0;if(((d[(c[j>>2]|0)+66>>0]|0)==1?(e[(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)>>1]|0)!=0:0)?(d[(c[(c[j>>2]|0)+120+(a[(c[j>>2]|0)+68>>0]<<2)>>2]|0)+4>>0]|0)!=0:0){g=(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)|0;b[g>>1]=(b[g>>1]|0)+-1<<16>>16;c[h>>2]=0;g=c[h>>2]|0;i=l;return g|0}c[h>>2]=VE(c[j>>2]|0,c[k>>2]|0)|0;g=c[h>>2]|0;i=l;return g|0}function VE(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;j=p+20|0;k=p+16|0;l=p+12|0;n=p+8|0;m=p+4|0;h=p;c[k>>2]=f;c[l>>2]=g;if((d[(c[k>>2]|0)+66>>0]|0)!=1){if((d[(c[k>>2]|0)+66>>0]|0)>=3)f=WE(c[k>>2]|0)|0;else f=0;c[n>>2]=f;if(c[n>>2]|0){c[j>>2]=c[n>>2];o=c[j>>2]|0;i=p;return o|0}if(!(d[(c[k>>2]|0)+66>>0]|0)){c[c[l>>2]>>2]=1;c[j>>2]=0;o=c[j>>2]|0;i=p;return o|0}if((c[(c[k>>2]|0)+60>>2]|0)!=0?(a[(c[k>>2]|0)+66>>0]=1,g=(c[(c[k>>2]|0)+60>>2]|0)<0,c[(c[k>>2]|0)+60>>2]=0,g):0){c[j>>2]=0;o=c[j>>2]|0;i=p;return o|0}}c[m>>2]=c[(c[k>>2]|0)+120+(a[(c[k>>2]|0)+68>>0]<<2)>>2];do if(a[(c[m>>2]|0)+4>>0]|0){while(1){f=a[(c[k>>2]|0)+68>>0]|0;if(e[(c[k>>2]|0)+80+(a[(c[k>>2]|0)+68>>0]<<1)>>1]|0)break;g=c[k>>2]|0;if(!f){o=17;break}ZE(g)}if((o|0)==17){a[g+66>>0]=0;c[c[l>>2]>>2]=1;c[j>>2]=0;o=c[j>>2]|0;i=p;return o|0}o=(c[k>>2]|0)+80+(f<<1)|0;b[o>>1]=(b[o>>1]|0)+-1<<16>>16;c[m>>2]=c[(c[k>>2]|0)+120+(a[(c[k>>2]|0)+68>>0]<<2)>>2];if((d[(c[m>>2]|0)+2>>0]|0)!=0?(a[(c[m>>2]|0)+4>>0]|0)==0:0){c[n>>2]=UE(c[k>>2]|0,c[l>>2]|0)|0;break}c[n>>2]=0}else{c[h>>2]=e[(c[k>>2]|0)+80+(a[(c[k>>2]|0)+68>>0]<<1)>>1];o=c[k>>2]|0;c[n>>2]=XE(o,$q((c[(c[m>>2]|0)+56>>2]|0)+(e[(c[m>>2]|0)+20>>1]&(d[(c[(c[m>>2]|0)+64>>2]|0)+(c[h>>2]<<1)>>0]<<8|d[(c[(c[m>>2]|0)+64>>2]|0)+(c[h>>2]<<1)+1>>0]))|0)|0)|0;if(!(c[n>>2]|0)){c[n>>2]=YE(c[k>>2]|0)|0;break}c[j>>2]=c[n>>2];o=c[j>>2]|0;i=p;return o|0}while(0);c[j>>2]=c[n>>2];o=c[j>>2]|0;i=p;return o|0}function WE(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;b=c[f>>2]|0;if((d[(c[f>>2]|0)+66>>0]|0|0)==4){c[e>>2]=c[b+60>>2];h=c[e>>2]|0;i=j;return h|0}a[b+66>>0]=0;b=(c[f>>2]|0)+40|0;c[g>>2]=bF(c[f>>2]|0,c[(c[f>>2]|0)+48>>2]|0,c[b>>2]|0,c[b+4>>2]|0,0,h)|0;if(((c[g>>2]|0)==0?(Kd(c[(c[f>>2]|0)+48>>2]|0),c[(c[f>>2]|0)+48>>2]=0,b=(c[f>>2]|0)+60|0,c[b>>2]=c[b>>2]|c[h>>2],(c[(c[f>>2]|0)+60>>2]|0)!=0):0)?(d[(c[f>>2]|0)+66>>0]|0|0)==1:0)a[(c[f>>2]|0)+66>>0]=2;c[e>>2]=c[g>>2];h=c[e>>2]|0;i=j;return h|0}function XE(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[(c[h>>2]|0)+4>>2];if((a[(c[h>>2]|0)+68>>0]|0)>=19){c[g>>2]=Lj(60332)|0;e=c[g>>2]|0;i=l;return e|0}else{b[(c[h>>2]|0)+16+18>>1]=0;e=(c[h>>2]|0)+64|0;a[e>>0]=d[e>>0]&-7;e=(c[h>>2]|0)+68|0;a[e>>0]=(a[e>>0]|0)+1<<24>>24;b[(c[h>>2]|0)+80+(a[(c[h>>2]|0)+68>>0]<<1)>>1]=0;c[g>>2]=_E(c[k>>2]|0,c[j>>2]|0,(c[h>>2]|0)+120+(a[(c[h>>2]|0)+68>>0]<<2)|0,c[h>>2]|0,d[(c[h>>2]|0)+65>>0]|0)|0;e=c[g>>2]|0;i=l;return e|0}return 0}function YE(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;k=n+16|0;l=n+12|0;j=n+8|0;m=n+4|0;h=n;c[l>>2]=f;c[m>>2]=0;c[h>>2]=0;while(1){f=c[(c[l>>2]|0)+120+(a[(c[l>>2]|0)+68>>0]<<2)>>2]|0;c[h>>2]=f;g=c[h>>2]|0;if(!((a[f+4>>0]|0)!=0^1)){f=5;break}c[j>>2]=$q((c[(c[h>>2]|0)+56>>2]|0)+((d[g+5>>0]|0)+8)|0)|0;b[(c[l>>2]|0)+80+(a[(c[l>>2]|0)+68>>0]<<1)>>1]=b[(c[h>>2]|0)+18>>1]|0;c[m>>2]=XE(c[l>>2]|0,c[j>>2]|0)|0;if(c[m>>2]|0){f=4;break}}if((f|0)==4){c[k>>2]=c[m>>2];m=c[k>>2]|0;i=n;return m|0}else if((f|0)==5){b[(c[l>>2]|0)+80+(a[(c[l>>2]|0)+68>>0]<<1)>>1]=(e[g+18>>1]|0)-1;c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}return 0}function ZE(e){e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f;c[g>>2]=e;b[(c[g>>2]|0)+16+18>>1]=0;h=(c[g>>2]|0)+64|0;a[h>>0]=(d[h>>0]|0)&-7;h=(c[g>>2]|0)+68|0;e=a[h>>0]|0;a[h>>0]=e+-1<<24>>24;sB(c[(c[g>>2]|0)+120+(e<<24>>24<<2)>>2]|0);i=f;return}function _E(b,f,g,h,j){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;k=s+28|0;l=s+24|0;m=s+20|0;n=s+16|0;o=s+12|0;p=s+8|0;r=s+4|0;q=s;c[l>>2]=b;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;g=c[m>>2]|0;a:do if(g>>>0<=($E(c[l>>2]|0)|0)>>>0){c[r>>2]=sg(c[c[l>>2]>>2]|0,c[m>>2]|0,q,c[p>>2]|0)|0;if(!(c[r>>2]|0)){g=It(c[q>>2]|0)|0;c[c[n>>2]>>2]=g;if((d[c[c[n>>2]>>2]>>0]|0|0)==0?(aF(c[q>>2]|0,c[m>>2]|0,c[l>>2]|0)|0,c[r>>2]=Kt(c[c[n>>2]>>2]|0)|0,(c[r>>2]|0)!=0):0){qB(c[c[n>>2]>>2]|0);break}do if(c[o>>2]|0){if((e[(c[c[n>>2]>>2]|0)+18>>1]|0|0)>=1?(d[(c[c[n>>2]>>2]|0)+2>>0]|0|0)==(d[(c[o>>2]|0)+69>>0]|0|0):0)break;c[r>>2]=Lj(57580)|0;qB(c[c[n>>2]>>2]|0);break a}while(0);c[k>>2]=0;r=c[k>>2]|0;i=s;return r|0}}else c[r>>2]=Lj(57558)|0;while(0);if(c[o>>2]|0){g=(c[o>>2]|0)+68|0;a[g>>0]=(a[g>>0]|0)+-1<<24>>24}c[k>>2]=c[r>>2];r=c[k>>2]|0;i=s;return r|0}function $E(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+44>>2]|0}function aF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=It(c[f>>2]|0)|0;if((c[g>>2]|0)==(c[(c[j>>2]|0)+84>>2]|0)){d=c[j>>2]|0;i=k;return d|0}d=tg(c[f>>2]|0)|0;c[(c[j>>2]|0)+56>>2]=d;c[(c[j>>2]|0)+72>>2]=c[f>>2];c[(c[j>>2]|0)+52>>2]=c[h>>2];c[(c[j>>2]|0)+84>>2]=c[g>>2];a[(c[j>>2]|0)+5>>0]=(c[g>>2]|0)==1?100:0;d=c[j>>2]|0;i=k;return d|0}function bF(a,b,d,f,g,h){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+240|0;j=s+36|0;k=s+32|0;l=s+28|0;m=s;n=s+24|0;o=s+20|0;r=s+16|0;q=s+12|0;p=s+8|0;c[k>>2]=a;c[l>>2]=b;b=m;c[b>>2]=d;c[b+4>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=0;if(c[l>>2]|0){c[q>>2]=cF(c[(c[k>>2]|0)+72>>2]|0,s+40|0,200,p)|0;if(!(c[q>>2]|0)){c[j>>2]=7;r=c[j>>2]|0;i=s;return r|0}dF(c[(c[k>>2]|0)+72>>2]|0,c[m>>2]|0,c[l>>2]|0,c[q>>2]|0);if(!(e[(c[q>>2]|0)+8>>1]|0)){Sf(c[(c[(c[k>>2]|0)+72>>2]|0)+12>>2]|0,c[p>>2]|0);c[j>>2]=Lj(56338)|0;r=c[j>>2]|0;i=s;return r|0}}else c[q>>2]=0;h=m;c[r>>2]=eF(c[k>>2]|0,c[q>>2]|0,c[h>>2]|0,c[h+4>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;if(c[p>>2]|0)Sf(c[(c[(c[k>>2]|0)+72>>2]|0)+12>>2]|0,c[p>>2]|0);c[j>>2]=c[r>>2];r=c[j>>2]|0;i=s;return r|0}function cF(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+32|0;h=p+28|0;j=p+24|0;k=p+20|0;q=p+16|0;l=p+12|0;o=p+8|0;n=p+4|0;m=p;c[j>>2]=a;c[k>>2]=d;c[q>>2]=f;c[l>>2]=g;c[n>>2]=8-(c[k>>2]&7)&7;c[m>>2]=16+(((e[(c[j>>2]|0)+6>>1]|0)+1|0)*40|0);if((c[m>>2]|0)>((c[q>>2]|0)+(c[n>>2]|0)|0)){q=c[m>>2]|0;c[o>>2]=yh(c[(c[j>>2]|0)+12>>2]|0,q,((q|0)<0)<<31>>31)|0;c[c[l>>2]>>2]=c[o>>2];if(!(c[o>>2]|0)){c[h>>2]=0;q=c[h>>2]|0;i=p;return q|0}}else{c[o>>2]=(c[k>>2]|0)+(c[n>>2]|0);c[c[l>>2]>>2]=0}c[(c[o>>2]|0)+4>>2]=(c[o>>2]|0)+16;c[c[o>>2]>>2]=c[j>>2];b[(c[o>>2]|0)+8>>1]=(e[(c[j>>2]|0)+6>>1]|0)+1;c[h>>2]=c[o>>2];q=c[h>>2]|0;i=p;return q|0}function dF(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+48|0;k=u+36|0;l=u+32|0;v=u+28|0;s=u+24|0;m=u+20|0;n=u+16|0;o=u+12|0;t=u+40|0;r=u+8|0;p=u+4|0;q=u;c[k>>2]=f;c[l>>2]=g;c[v>>2]=h;c[s>>2]=j;c[m>>2]=c[v>>2];c[p>>2]=c[(c[s>>2]|0)+4>>2];a[(c[s>>2]|0)+10>>0]=0;g=c[m>>2]|0;if((d[c[m>>2]>>0]|0|0)<128){c[r>>2]=d[g>>0];g=1}else g=(tF(g,r)|0)&255;c[o>>2]=g&255;c[n>>2]=c[r>>2];b[t>>1]=0;while(1){if((c[o>>2]|0)>>>0>=(c[r>>2]|0)>>>0){g=11;break}if((c[n>>2]|0)>(c[l>>2]|0)){g=11;break}g=(c[m>>2]|0)+(c[o>>2]|0)|0;if((d[(c[m>>2]|0)+(c[o>>2]|0)>>0]|0|0)<128){c[q>>2]=d[g>>0];g=1}else g=(tF(g,q)|0)&255;c[o>>2]=(c[o>>2]|0)+(g&255);a[(c[p>>2]|0)+10>>0]=a[(c[k>>2]|0)+4>>0]|0;c[(c[p>>2]|0)+32>>2]=c[(c[k>>2]|0)+12>>2];c[(c[p>>2]|0)+24>>2]=0;v=vF((c[m>>2]|0)+(c[n>>2]|0)|0,c[q>>2]|0,c[p>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+v;c[p>>2]=(c[p>>2]|0)+40;v=(b[t>>1]|0)+1<<16>>16;b[t>>1]=v;if((v&65535|0)>=(e[(c[s>>2]|0)+8>>1]|0|0)){g=11;break}}if((g|0)==11){b[(c[s>>2]|0)+8>>1]=b[t>>1]|0;i=u;return}}function eF(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+96|0;m=F+80|0;n=F+76|0;o=F+72|0;p=F+8|0;q=F+68|0;r=F+64|0;C=F+60|0;E=F+56|0;v=F+52|0;D=F+48|0;u=F+44|0;s=F+40|0;t=F+36|0;B=F+32|0;y=F+28|0;x=F;w=F+24|0;A=F+20|0;z=F+16|0;c[n>>2]=f;c[o>>2]=g;g=p;c[g>>2]=h;c[g+4>>2]=j;c[q>>2]=k;c[r>>2]=l;if(((d[(c[n>>2]|0)+66>>0]|0)==1?(d[(c[n>>2]|0)+64>>0]&2|0)!=0:0)?(d[(c[n>>2]|0)+69>>0]|0)!=0:0){g=(c[n>>2]|0)+16|0;l=p;if((c[g>>2]|0)==(c[l>>2]|0)?(c[g+4>>2]|0)==(c[l+4>>2]|0):0){c[c[r>>2]>>2]=0;c[m>>2]=0;E=c[m>>2]|0;i=F;return E|0}if((d[(c[n>>2]|0)+64>>0]&8|0)!=0?(g=(c[n>>2]|0)+16|0,k=c[g+4>>2]|0,l=p,f=c[l+4>>2]|0,(k|0)<(f|0)|((k|0)==(f|0)?(c[g>>2]|0)>>>0<(c[l>>2]|0)>>>0:0)):0){c[c[r>>2]>>2]=-1;c[m>>2]=0;E=c[m>>2]|0;i=F;return E|0}}if(c[o>>2]|0){c[E>>2]=fF(c[o>>2]|0)|0;a[(c[o>>2]|0)+11>>0]=0}else c[E>>2]=0;c[C>>2]=gF(c[n>>2]|0)|0;if(c[C>>2]|0){c[m>>2]=c[C>>2];E=c[m>>2]|0;i=F;return E|0}if(!(d[(c[n>>2]|0)+66>>0]|0)){c[c[r>>2]>>2]=-1;c[m>>2]=0;E=c[m>>2]|0;i=F;return E|0}a:do{c[B>>2]=c[(c[n>>2]|0)+120+(a[(c[n>>2]|0)+68>>0]<<2)>>2];c[v>>2]=0;c[D>>2]=(e[(c[B>>2]|0)+18>>1]|0)-1;c[u>>2]=c[D>>2]>>1-(c[q>>2]|0);b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[u>>2];b:do if(!(c[E>>2]|0)){while(1){c[y>>2]=(c[(c[B>>2]|0)+68>>2]|0)+(e[(c[B>>2]|0)+20>>1]&(d[(c[(c[B>>2]|0)+64>>2]|0)+(c[u>>2]<<1)>>0]<<8|d[(c[(c[B>>2]|0)+64>>2]|0)+(c[u>>2]<<1)+1>>0]));c:do if(a[(c[B>>2]|0)+3>>0]|0)while(1){l=c[y>>2]|0;c[y>>2]=l+1;if(128>(d[l>>0]|0))break c;if((c[y>>2]|0)>>>0>=(c[(c[B>>2]|0)+60>>2]|0)>>>0){j=20;break a}}while(0);St(c[y>>2]|0,x)|0;g=x;k=c[g+4>>2]|0;l=p;f=c[l+4>>2]|0;if((k|0)<(f|0)|((k|0)==(f|0)?(c[g>>2]|0)>>>0<(c[l>>2]|0)>>>0:0)){c[v>>2]=(c[u>>2]|0)+1;if((c[v>>2]|0)>(c[D>>2]|0)){j=23;break}}else{g=x;k=c[g+4>>2]|0;l=p;f=c[l+4>>2]|0;if(!((k|0)>(f|0)|((k|0)==(f|0)?(c[g>>2]|0)>>>0>(c[l>>2]|0)>>>0:0))){j=27;break}c[D>>2]=(c[u>>2]|0)-1;if((c[v>>2]|0)>(c[D>>2]|0)){j=26;break}}c[u>>2]=(c[v>>2]|0)+(c[D>>2]|0)>>1}if((j|0)==23){c[s>>2]=-1;j=51;break}else if((j|0)==26){c[s>>2]=1;j=51;break}else if((j|0)==27){j=0;f=(c[n>>2]|0)+64|0;a[f>>0]=d[f>>0]|2;f=x;g=c[f+4>>2]|0;l=(c[n>>2]|0)+16|0;c[l>>2]=c[f>>2];c[l+4>>2]=g;b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[u>>2]; -if(a[(c[B>>2]|0)+4>>0]|0){j=29;break a}c[v>>2]=c[u>>2];break}}else while(1){c[y>>2]=(c[(c[B>>2]|0)+68>>2]|0)+(e[(c[B>>2]|0)+20>>1]&(d[(c[(c[B>>2]|0)+64>>2]|0)+(c[u>>2]<<1)>>0]<<8|d[(c[(c[B>>2]|0)+64>>2]|0)+(c[u>>2]<<1)+1>>0]));c[w>>2]=d[c[y>>2]>>0];do if((c[w>>2]|0)<=(d[(c[B>>2]|0)+7>>0]|0))c[s>>2]=Ob[c[E>>2]&255](c[w>>2]|0,(c[y>>2]|0)+1|0,c[o>>2]|0)|0;else{if((d[(c[y>>2]|0)+1>>0]&128|0)==0?(l=((c[w>>2]&127)<<7)+(d[(c[y>>2]|0)+1>>0]|0)|0,c[w>>2]=l,(l|0)<=(e[(c[B>>2]|0)+10>>1]|0)):0){c[s>>2]=Ob[c[E>>2]&255](c[w>>2]|0,(c[y>>2]|0)+2|0,c[o>>2]|0)|0;break}c[z>>2]=(c[y>>2]|0)+(0-(d[(c[B>>2]|0)+6>>0]|0));Ub[c[(c[B>>2]|0)+80>>2]&255](c[B>>2]|0,c[z>>2]|0,(c[n>>2]|0)+16|0);c[w>>2]=c[(c[n>>2]|0)+16>>2];if((c[w>>2]|0)<2){j=37;break a}l=(c[w>>2]|0)+18|0;c[A>>2]=_f(l,((l|0)<0)<<31>>31)|0;if(!(c[A>>2]|0)){j=39;break a}b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[u>>2];c[C>>2]=hF(c[n>>2]|0,0,c[w>>2]|0,c[A>>2]|0,2)|0;if(c[C>>2]|0){j=41;break a}c[s>>2]=Ob[c[E>>2]&255](c[w>>2]|0,c[A>>2]|0,c[o>>2]|0)|0;Kd(c[A>>2]|0)}while(0);if((c[s>>2]|0)<0)c[v>>2]=(c[u>>2]|0)+1;else{if((c[s>>2]|0)<=0){j=47;break a}c[D>>2]=(c[u>>2]|0)-1}if((c[v>>2]|0)>(c[D>>2]|0)){j=51;break b}c[u>>2]=(c[v>>2]|0)+(c[D>>2]|0)>>1}while(0);if((j|0)==51?(j=0,(a[(c[B>>2]|0)+4>>0]|0)!=0):0){j=52;break}h=c[B>>2]|0;if((c[v>>2]|0)>=(e[(c[B>>2]|0)+18>>1]|0))c[t>>2]=$q((c[(c[B>>2]|0)+56>>2]|0)+((d[h+5>>0]|0)+8)|0)|0;else c[t>>2]=$q((c[h+56>>2]|0)+(e[(c[B>>2]|0)+20>>1]&(d[(c[(c[B>>2]|0)+64>>2]|0)+(c[v>>2]<<1)>>0]<<8|d[(c[(c[B>>2]|0)+64>>2]|0)+(c[v>>2]<<1)+1>>0]))|0)|0;b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[v>>2];c[C>>2]=XE(c[n>>2]|0,c[t>>2]|0)|0}while((c[C>>2]|0)==0);if((j|0)==20){c[m>>2]=Lj(60709)|0;E=c[m>>2]|0;i=F;return E|0}else if((j|0)==29){c[c[r>>2]>>2]=0;c[C>>2]=0}else if((j|0)==37)c[C>>2]=Lj(60782)|0;else if((j|0)==39)c[C>>2]=7;else if((j|0)==41)Kd(c[A>>2]|0);else if((j|0)==47){c[c[r>>2]>>2]=0;c[C>>2]=0;b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[u>>2];if(a[(c[o>>2]|0)+11>>0]|0)c[C>>2]=11}else if((j|0)==52){b[(c[n>>2]|0)+80+(a[(c[n>>2]|0)+68>>0]<<1)>>1]=c[u>>2];c[c[r>>2]>>2]=c[s>>2];c[C>>2]=0}b[(c[n>>2]|0)+16+18>>1]=0;E=(c[n>>2]|0)+64|0;a[E>>0]=d[E>>0]&-7;c[m>>2]=c[C>>2];E=c[m>>2]|0;i=F;return E|0}function fF(b){b=b|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=b;if(((e[(c[c[f>>2]>>2]|0)+6>>1]|0)+(e[(c[c[f>>2]>>2]|0)+8>>1]|0)|0)<=13){c[g>>2]=e[(c[(c[f>>2]|0)+4>>2]|0)+8>>1];b=(c[f>>2]|0)+12|0;if(a[c[(c[c[f>>2]>>2]|0)+16>>2]>>0]|0){a[b>>0]=1;a[(c[f>>2]|0)+13>>0]=-1}else{a[b>>0]=-1;a[(c[f>>2]|0)+13>>0]=1}if(c[g>>2]&4){c[d>>2]=160;g=c[d>>2]|0;i=h;return g|0}if((c[g>>2]&25|0)==0?(c[(c[c[f>>2]>>2]|0)+20>>2]|0)==0:0){c[d>>2]=161;g=c[d>>2]|0;i=h;return g|0}}c[d>>2]=162;g=c[d>>2]|0;i=h;return g|0}function gF(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[h>>2]=f;c[k>>2]=0;do if((d[(c[h>>2]|0)+66>>0]|0)>=3){f=c[h>>2]|0;if((d[(c[h>>2]|0)+66>>0]|0)!=4){pB(f);break}c[g>>2]=c[f+60>>2];l=c[g>>2]|0;i=m;return l|0}while(0);a:do if((a[(c[h>>2]|0)+68>>0]|0)>=0)while(1){if(!(a[(c[h>>2]|0)+68>>0]|0))break a;n=(c[h>>2]|0)+68|0;f=a[n>>0]|0;a[n>>0]=f+-1<<24>>24;sB(c[(c[h>>2]|0)+120+(f<<24>>24<<2)>>2]|0)}else{f=c[h>>2]|0;if(!(c[(c[h>>2]|0)+52>>2]|0)){a[f+66>>0]=0;c[g>>2]=0;n=c[g>>2]|0;i=m;return n|0}c[k>>2]=_E(c[(c[f>>2]|0)+4>>2]|0,c[(c[h>>2]|0)+52>>2]|0,(c[h>>2]|0)+120|0,0,d[(c[h>>2]|0)+65>>0]|0)|0;f=c[h>>2]|0;if(!(c[k>>2]|0)){a[f+68>>0]=0;a[(c[h>>2]|0)+69>>0]=a[(c[(c[h>>2]|0)+120>>2]|0)+2>>0]|0;break}a[f+66>>0]=0;c[g>>2]=c[k>>2];n=c[g>>2]|0;i=m;return n|0}while(0);c[j>>2]=c[(c[h>>2]|0)+120>>2];if((d[c[j>>2]>>0]|0)!=0?((c[(c[h>>2]|0)+72>>2]|0)==0|0)==(d[(c[j>>2]|0)+2>>0]|0):0){b[(c[h>>2]|0)+80>>1]=0;b[(c[h>>2]|0)+16+18>>1]=0;n=(c[h>>2]|0)+64|0;a[n>>0]=d[n>>0]&-15;do if((e[(c[j>>2]|0)+18>>1]|0)>0)a[(c[h>>2]|0)+66>>0]=1;else{if(a[(c[j>>2]|0)+4>>0]|0){a[(c[h>>2]|0)+66>>0]=0;break}if((c[(c[j>>2]|0)+84>>2]|0)==1){c[l>>2]=$q((c[(c[j>>2]|0)+56>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)+8)|0)|0;a[(c[h>>2]|0)+66>>0]=1;c[k>>2]=XE(c[h>>2]|0,c[l>>2]|0)|0;break}c[g>>2]=Lj(60470)|0;n=c[g>>2]|0;i=m;return n|0}while(0);c[g>>2]=c[k>>2];n=c[g>>2]|0;i=m;return n|0}c[g>>2]=Lj(60459)|0;n=c[g>>2]|0;i=m;return n|0}function hF(b,f,g,h,j){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+80|0;k=C+68|0;l=C+64|0;m=C+60|0;n=C+56|0;o=C+52|0;p=C+48|0;t=C+44|0;B=C+40|0;u=C+36|0;A=C+32|0;y=C+28|0;q=C+24|0;x=C+20|0;w=C+16|0;v=C+12|0;s=C+8|0;r=C+4|0;z=C;c[l>>2]=b;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[B>>2]=0;c[u>>2]=0;c[A>>2]=c[(c[l>>2]|0)+120+(a[(c[l>>2]|0)+68>>0]<<2)>>2];c[y>>2]=c[(c[l>>2]|0)+4>>2];iF(c[l>>2]|0);c[t>>2]=c[(c[l>>2]|0)+16+8>>2];if(((c[t>>2]|0)+(e[(c[l>>2]|0)+16+16>>1]|0)|0)>>>0>((c[(c[A>>2]|0)+56>>2]|0)+(c[(c[y>>2]|0)+36>>2]|0)|0)>>>0){c[k>>2]=Lj(60043)|0;B=c[k>>2]|0;i=C;return B|0}if((c[m>>2]|0)>>>0<(e[(c[l>>2]|0)+16+16>>1]|0)>>>0){c[q>>2]=c[n>>2];if(((c[q>>2]|0)+(c[m>>2]|0)|0)>>>0>(e[(c[l>>2]|0)+16+16>>1]|0)>>>0)c[q>>2]=(e[(c[l>>2]|0)+16+16>>1]|0)-(c[m>>2]|0);c[B>>2]=jF((c[t>>2]|0)+(c[m>>2]|0)|0,c[o>>2]|0,c[q>>2]|0,c[p>>2]&1,c[(c[A>>2]|0)+72>>2]|0)|0;c[m>>2]=0;c[o>>2]=(c[o>>2]|0)+(c[q>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[q>>2]|0)}else c[m>>2]=(c[m>>2]|0)-(e[(c[l>>2]|0)+16+16>>1]|0);a:do if((c[B>>2]|0)==0&(c[n>>2]|0)>>>0>0){c[x>>2]=(c[(c[y>>2]|0)+36>>2]|0)-4;c[w>>2]=$q((c[t>>2]|0)+(e[(c[l>>2]|0)+16+16>>1]|0)|0)|0;if((c[p>>2]|0)!=2?(d[(c[l>>2]|0)+64>>0]&4|0)==0:0){c[v>>2]=(((c[(c[l>>2]|0)+16+12>>2]|0)-(e[(c[l>>2]|0)+16+16>>1]|0)+(c[x>>2]|0)-1|0)>>>0)/((c[x>>2]|0)>>>0)|0;do if((c[v>>2]|0)>(c[(c[l>>2]|0)+56>>2]|0)){c[s>>2]=bg(c[(c[l>>2]|0)+12>>2]|0,c[v>>2]<<1<<2,0)|0;if(!(c[s>>2]|0)){c[B>>2]=7;break}else{c[(c[l>>2]|0)+56>>2]=c[v>>2]<<1;c[(c[l>>2]|0)+12>>2]=c[s>>2];break}}while(0);if(!(c[B>>2]|0)){kR(c[(c[l>>2]|0)+12>>2]|0,0,c[v>>2]<<2|0)|0;A=(c[l>>2]|0)+64|0;a[A>>0]=d[A>>0]|4}}if((d[(c[l>>2]|0)+64>>0]&4|0)!=0?(c[(c[(c[l>>2]|0)+12>>2]|0)+((((c[m>>2]|0)>>>0)/((c[x>>2]|0)>>>0)|0)<<2)>>2]|0)!=0:0){c[u>>2]=((c[m>>2]|0)>>>0)/((c[x>>2]|0)>>>0)|0;c[w>>2]=c[(c[(c[l>>2]|0)+12>>2]|0)+(c[u>>2]<<2)>>2];c[m>>2]=((c[m>>2]|0)>>>0)%((c[x>>2]|0)>>>0)|0}while(1){if(!((c[B>>2]|0)==0&(c[n>>2]|0)>>>0>0&(c[w>>2]|0)!=0))break a;if(d[(c[l>>2]|0)+64>>0]&4)c[(c[(c[l>>2]|0)+12>>2]|0)+(c[u>>2]<<2)>>2]=c[w>>2];if((c[m>>2]|0)>>>0>=(c[x>>2]|0)>>>0){if(c[(c[(c[l>>2]|0)+12>>2]|0)+((c[u>>2]|0)+1<<2)>>2]|0)c[w>>2]=c[(c[(c[l>>2]|0)+12>>2]|0)+((c[u>>2]|0)+1<<2)>>2];else c[B>>2]=kF(c[y>>2]|0,c[w>>2]|0,0,w)|0;c[m>>2]=(c[m>>2]|0)-(c[x>>2]|0)}else{c[r>>2]=c[n>>2];if(((c[r>>2]|0)+(c[m>>2]|0)|0)>>>0>(c[x>>2]|0)>>>0)c[r>>2]=(c[x>>2]|0)-(c[m>>2]|0);c[B>>2]=sg(c[c[y>>2]>>2]|0,c[w>>2]|0,z,(c[p>>2]&1|0)==0?2:0)|0;if(!(c[B>>2]|0)){c[t>>2]=tg(c[z>>2]|0)|0;c[w>>2]=$q(c[t>>2]|0)|0;c[B>>2]=jF((c[t>>2]|0)+((c[m>>2]|0)+4)|0,c[o>>2]|0,c[r>>2]|0,c[p>>2]&1,c[z>>2]|0)|0;vg(c[z>>2]|0);c[m>>2]=0}c[n>>2]=(c[n>>2]|0)-(c[r>>2]|0);c[o>>2]=(c[o>>2]|0)+(c[r>>2]|0)}c[u>>2]=(c[u>>2]|0)+1}}while(0);if((c[B>>2]|0)==0&(c[n>>2]|0)>>>0>0){c[k>>2]=Lj(60200)|0;B=c[k>>2]|0;i=C;return B|0}else{c[k>>2]=c[B>>2];B=c[k>>2]|0;i=C;return B|0}return 0}function iF(b){b=b|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;if(e[(c[f>>2]|0)+16+18>>1]|0){i=h;return}c[g>>2]=a[(c[f>>2]|0)+68>>0];b=(c[f>>2]|0)+64|0;a[b>>0]=d[b>>0]|2;oF(c[(c[f>>2]|0)+120+(c[g>>2]<<2)>>2]|0,e[(c[f>>2]|0)+80+(c[g>>2]<<1)>>1]|0,(c[f>>2]|0)+16|0);i=h;return}function jF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;g=n+24|0;h=n+20|0;j=n+16|0;k=n+12|0;o=n+8|0;l=n+4|0;m=n;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[o>>2]=e;c[l>>2]=f;do if(c[o>>2]|0){c[m>>2]=Dg(c[l>>2]|0)|0;if(!(c[m>>2]|0)){iR(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;break}c[g>>2]=c[m>>2];o=c[g>>2]|0;i=n;return o|0}else iR(c[j>>2]|0,c[h>>2]|0,c[k>>2]|0)|0;while(0);c[g>>2]=0;o=c[g>>2]|0;i=n;return o|0}function kF(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;h=s+32|0;j=s+28|0;q=s+24|0;k=s+20|0;n=s+16|0;o=s+12|0;r=s+8|0;p=s+4|0;m=s;l=s+36|0;c[h>>2]=b;c[j>>2]=e;c[q>>2]=f;c[k>>2]=g;c[n>>2]=0;c[o>>2]=0;c[r>>2]=0;if(a[(c[h>>2]|0)+17>>0]|0){c[m>>2]=(c[j>>2]|0)+1;while(1){f=lF(c[h>>2]|0,c[m>>2]|0)|0;if((f|0)==(c[m>>2]|0))b=1;else b=(c[m>>2]|0)==((((c[381]|0)>>>0)/((c[(c[h>>2]|0)+32>>2]|0)>>>0)|0)+1|0);e=c[m>>2]|0;if(!b)break;c[m>>2]=e+1}if(((e>>>0<=($E(c[h>>2]|0)|0)>>>0?(c[r>>2]=mF(c[h>>2]|0,c[m>>2]|0,l,p)|0,(c[r>>2]|0)==0):0)?(d[l>>0]|0)==4:0)?(c[p>>2]|0)==(c[j>>2]|0):0){c[n>>2]=c[m>>2];c[r>>2]=101}}if((c[r>>2]|0)==0?(c[r>>2]=nF(c[h>>2]|0,c[j>>2]|0,o,(c[q>>2]|0)==0?2:0)|0,(c[r>>2]|0)==0):0)c[n>>2]=$q(c[(c[o>>2]|0)+56>>2]|0)|0;c[c[k>>2]>>2]=c[n>>2];e=c[o>>2]|0;if(c[q>>2]|0){c[c[q>>2]>>2]=e;q=c[r>>2]|0;q=(q|0)==101;r=c[r>>2]|0;r=q?0:r;i=s;return r|0}else{qB(e);q=c[r>>2]|0;q=(q|0)==101;r=c[r>>2]|0;r=q?0:r;i=s;return r|0}return 0}function lF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+20|0;e=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)>>>0<2){c[d>>2]=0;j=c[d>>2]|0;i=k;return j|0}c[h>>2]=(((c[(c[e>>2]|0)+36>>2]|0)>>>0)/5|0)+1;c[g>>2]=(((c[f>>2]|0)-2|0)>>>0)/((c[h>>2]|0)>>>0)|0;c[j>>2]=(_(c[g>>2]|0,c[h>>2]|0)|0)+2;if((c[j>>2]|0)==((((c[381]|0)>>>0)/((c[(c[e>>2]|0)+32>>2]|0)>>>0)|0)+1|0))c[j>>2]=(c[j>>2]|0)+1;c[d>>2]=c[j>>2];j=c[d>>2]|0;i=k;return j|0}function mF(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;h=r+36|0;s=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;o=r+16|0;m=r+12|0;p=r+8|0;n=r+4|0;q=r;c[s>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[m>>2]=lF(c[s>>2]|0,c[j>>2]|0)|0;c[q>>2]=sg(c[c[s>>2]>>2]|0,c[m>>2]|0,o,0)|0;if(c[q>>2]|0){c[h>>2]=c[q>>2];s=c[h>>2]|0;i=r;return s|0}c[p>>2]=tg(c[o>>2]|0)|0;c[n>>2]=((c[j>>2]|0)-(c[m>>2]|0)-1|0)*5;if((c[n>>2]|0)<0){vg(c[o>>2]|0);c[h>>2]=Lj(56557)|0;s=c[h>>2]|0;i=r;return s|0}a[c[k>>2]>>0]=a[(c[p>>2]|0)+(c[n>>2]|0)>>0]|0;if(c[l>>2]|0){s=$q((c[p>>2]|0)+((c[n>>2]|0)+1)|0)|0;c[c[l>>2]>>2]=s}vg(c[o>>2]|0);if((d[c[k>>2]>>0]|0|0)>=1?(d[c[k>>2]>>0]|0|0)<=5:0){c[h>>2]=0;s=c[h>>2]|0;i=r;return s|0}c[h>>2]=Lj(56565)|0;s=c[h>>2]|0;i=r;return s|0}function nF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;f=m+24|0;g=m+20|0;h=m+16|0;j=m+12|0;n=m+8|0;l=m+4|0;k=m;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[n>>2]=e;c[l>>2]=sg(c[c[g>>2]>>2]|0,c[h>>2]|0,k,c[n>>2]|0)|0;if(c[l>>2]|0){c[f>>2]=c[l>>2];n=c[f>>2]|0;i=m;return n|0}else{n=aF(c[k>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;c[c[j>>2]>>2]=n;c[f>>2]=0;n=c[f>>2]|0;i=m;return n|0}return 0}function oF(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;i=i+16|0;k=g+8|0;j=g+4|0;h=g;c[k>>2]=a;c[j>>2]=b;c[h>>2]=f;Ub[c[(c[k>>2]|0)+80>>2]&255](c[k>>2]|0,(c[(c[k>>2]|0)+56>>2]|0)+((e[(c[k>>2]|0)+20>>1]|0)&((d[(c[(c[k>>2]|0)+64>>2]|0)+(c[j>>2]<<1)>>0]|0)<<8|(d[(c[(c[k>>2]|0)+64>>2]|0)+(c[j>>2]<<1)+1>>0]|0)))|0,c[h>>2]|0);i=g;return}function pF(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+64|0;n=s+52|0;o=s+48|0;p=s+44|0;q=s+40|0;h=s+36|0;t=s+32|0;r=s+28|0;m=s+24|0;l=s+16|0;k=s+8|0;j=s;c[o>>2]=b;c[p>>2]=f;c[q>>2]=g;c[h>>2]=(c[p>>2]|0)+(d[c[p>>2]>>0]&63);c[t>>2]=d[(c[p>>2]|0)+1>>0];b=c[(c[q>>2]|0)+4>>2]|0;f=c[b+4>>2]|0;g=k;c[g>>2]=c[b>>2];c[g+4>>2]=f;do switch(c[t>>2]|0){case 1:{m=a[c[h>>2]>>0]|0;t=j;c[t>>2]=m;c[t+4>>2]=((m|0)<0)<<31>>31;break}case 2:{m=a[c[h>>2]>>0]<<8|d[(c[h>>2]|0)+1>>0];t=j;c[t>>2]=m;c[t+4>>2]=((m|0)<0)<<31>>31;break}case 3:{m=a[c[h>>2]>>0]<<16|d[(c[h>>2]|0)+1>>0]<<8|d[(c[h>>2]|0)+2>>0];t=j;c[t>>2]=m;c[t+4>>2]=((m|0)<0)<<31>>31;break}case 4:{c[m>>2]=d[c[h>>2]>>0]<<24|d[(c[h>>2]|0)+1>>0]<<16|d[(c[h>>2]|0)+2>>0]<<8|d[(c[h>>2]|0)+3>>0];m=c[m>>2]|0;t=j;c[t>>2]=m;c[t+4>>2]=((m|0)<0)<<31>>31;break}case 5:{m=a[c[h>>2]>>0]<<8|d[(c[h>>2]|0)+1>>0];t=j;c[t>>2]=gR(d[(c[h>>2]|0)+2>>0]<<24|d[(c[h>>2]|0)+2+1>>0]<<16|d[(c[h>>2]|0)+2+2>>0]<<8|d[(c[h>>2]|0)+2+3>>0]|0,0,rR(0,1,m|0,((m|0)<0)<<31>>31|0)|0,C|0)|0;c[t+4>>2]=C;break}case 6:{t=l;c[t>>2]=d[c[h>>2]>>0]<<24|d[(c[h>>2]|0)+1>>0]<<16|d[(c[h>>2]|0)+2>>0]<<8|d[(c[h>>2]|0)+3>>0];c[t+4>>2]=0;t=c[l>>2]|0;m=l;c[m>>2]=d[(c[h>>2]|0)+4>>0]<<24|d[(c[h>>2]|0)+4+1>>0]<<16|d[(c[h>>2]|0)+4+2>>0]<<8|d[(c[h>>2]|0)+4+3>>0];c[m+4>>2]=t;m=c[l+4>>2]|0;t=j;c[t>>2]=c[l>>2];c[t+4>>2]=m;break}case 8:{t=j;c[t>>2]=0;c[t+4>>2]=0;break}case 9:{t=j;c[t>>2]=1;c[t+4>>2]=0;break}case 7:case 0:{c[n>>2]=rF(c[o>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;t=c[n>>2]|0;i=s;return t|0}default:{c[n>>2]=rF(c[o>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;t=c[n>>2]|0;i=s;return t|0}}while(0);m=k;g=c[m+4>>2]|0;t=j;l=c[t+4>>2]|0;do if(!((g|0)>(l|0)|((g|0)==(l|0)?(c[m>>2]|0)>>>0>(c[t>>2]|0)>>>0:0))){m=k;k=c[m+4>>2]|0;t=j;l=c[t+4>>2]|0;h=c[q>>2]|0;if((k|0)<(l|0)|((k|0)==(l|0)?(c[m>>2]|0)>>>0<(c[t>>2]|0)>>>0:0)){c[r>>2]=a[h+13>>0];break}if((e[h+8>>1]|0)>1){c[r>>2]=sF(c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,1)|0;break}else{c[r>>2]=a[(c[q>>2]|0)+10>>0];a[(c[q>>2]|0)+14>>0]=1;break}}else c[r>>2]=a[(c[q>>2]|0)+12>>0];while(0);c[n>>2]=c[r>>2];t=c[n>>2]|0;i=s;return t|0}function qF(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;q=s+36|0;j=s+32|0;k=s+28|0;l=s+24|0;m=s+20|0;h=s+16|0;r=s+12|0;n=s+8|0;o=s+4|0;p=s;c[j>>2]=b;c[k>>2]=f;c[l>>2]=g;c[m>>2]=c[k>>2];b=(c[m>>2]|0)+1|0;if((d[(c[m>>2]|0)+1>>0]|0)<128)c[h>>2]=d[b>>0];else tF(b,h)|0;do if((c[h>>2]|0)>=12){if(!(c[h>>2]&1)){c[r>>2]=a[(c[l>>2]|0)+13>>0];break}c[p>>2]=d[c[m>>2]>>0];c[o>>2]=((c[h>>2]|0)-12|0)/2|0;if(((c[p>>2]|0)+(c[o>>2]|0)|0)>(c[j>>2]|0)){r=(Lj(71970)|0)&255;a[(c[l>>2]|0)+11>>0]=r;c[q>>2]=0;r=c[q>>2]|0;i=s;return r|0}if((c[(c[(c[l>>2]|0)+4>>2]|0)+12>>2]|0)<(c[o>>2]|0))b=c[(c[(c[l>>2]|0)+4>>2]|0)+12>>2]|0;else b=c[o>>2]|0;c[n>>2]=b;c[r>>2]=vQ((c[m>>2]|0)+(c[p>>2]|0)|0,c[(c[(c[l>>2]|0)+4>>2]|0)+16>>2]|0,c[n>>2]|0)|0;if(c[r>>2]|0){b=c[l>>2]|0;if((c[r>>2]|0)>0){c[r>>2]=a[b+13>>0];break}else{c[r>>2]=a[b+12>>0];break}}c[r>>2]=(c[o>>2]|0)-(c[(c[(c[l>>2]|0)+4>>2]|0)+12>>2]|0);if(!(c[r>>2]|0))if((e[(c[l>>2]|0)+8>>1]|0)>1){c[r>>2]=sF(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,1)|0;break}else{c[r>>2]=a[(c[l>>2]|0)+10>>0];a[(c[l>>2]|0)+14>>0]=1;break}else{b=c[l>>2]|0;if((c[r>>2]|0)>0){c[r>>2]=a[b+13>>0];break}else{c[r>>2]=a[b+12>>0];break}}}else c[r>>2]=a[(c[l>>2]|0)+12>>0];while(0);c[q>>2]=c[r>>2];r=c[q>>2]|0;i=s;return r|0}function rF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;d=sF(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0,0)|0;i=e;return d|0}function sF(f,g,j,k){f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0;F=i;i=i+128|0;A=F+124|0;m=F+120|0;H=F+116|0;B=F+112|0;G=F+108|0;o=F+104|0;p=F+100|0;z=F+96|0;q=F+92|0;E=F+88|0;w=F+84|0;D=F+80|0;n=F+76|0;s=F+16|0;l=F+72|0;y=F+68|0;r=F+8|0;x=F;t=F+64|0;v=F+60|0;u=F+56|0;c[m>>2]=f;c[H>>2]=g;c[B>>2]=j;c[G>>2]=k;c[E>>2]=0;c[w>>2]=c[(c[B>>2]|0)+4>>2];c[D>>2]=c[c[B>>2]>>2];c[n>>2]=c[H>>2];f=c[n>>2]|0;do if(c[G>>2]|0){k=(c[n>>2]|0)+1|0;if((d[f+1>>0]|0)<128){c[l>>2]=d[k>>0];k=1}else k=(tF(k,l)|0)&255;c[q>>2]=1+(k&255);c[z>>2]=d[c[n>>2]>>0];H=c[z>>2]|0;c[o>>2]=H+(uF(c[l>>2]|0)|0);c[p>>2]=1;c[w>>2]=(c[w>>2]|0)+40}else{k=c[n>>2]|0;if((d[f>>0]|0)<128){c[z>>2]=d[k>>0];k=1}else k=(tF(k,z)|0)&255;c[q>>2]=k&255;c[o>>2]=c[z>>2];if((c[o>>2]|0)>>>0<=(c[m>>2]|0)>>>0){c[p>>2]=0;break}H=(Lj(71688)|0)&255;a[(c[B>>2]|0)+11>>0]=H;c[A>>2]=0;H=c[A>>2]|0;i=F;return H|0}while(0);a:while(1){do if(e[(c[w>>2]|0)+8>>1]&4){c[y>>2]=d[(c[n>>2]|0)+(c[q>>2]|0)>>0];if((c[y>>2]|0)>>>0>=10){c[E>>2]=1;break}if(!(c[y>>2]|0)){c[E>>2]=-1;break}if((c[y>>2]|0)==7){vF((c[n>>2]|0)+(c[o>>2]|0)|0,c[y>>2]|0,s)|0;H=c[w>>2]|0;c[E>>2]=0-(wF(c[H>>2]|0,c[H+4>>2]|0,+h[s>>3])|0);break}j=xF(c[y>>2]|0,(c[n>>2]|0)+(c[o>>2]|0)|0)|0;H=r;c[H>>2]=j;c[H+4>>2]=C;H=c[w>>2]|0;j=c[H+4>>2]|0;G=x;c[G>>2]=c[H>>2];c[G+4>>2]=j;G=r;j=c[G+4>>2]|0;H=x;l=c[H+4>>2]|0;if((j|0)<(l|0)|((j|0)==(l|0)?(c[G>>2]|0)>>>0<(c[H>>2]|0)>>>0:0)){c[E>>2]=-1;break}G=r;j=c[G+4>>2]|0;H=x;l=c[H+4>>2]|0;if((j|0)>(l|0)|((j|0)==(l|0)?(c[G>>2]|0)>>>0>(c[H>>2]|0)>>>0:0))c[E>>2]=1}else{if(e[(c[w>>2]|0)+8>>1]&8){c[y>>2]=d[(c[n>>2]|0)+(c[q>>2]|0)>>0];if((c[y>>2]|0)>>>0>=10){c[E>>2]=1;break}if(!(c[y>>2]|0)){c[E>>2]=-1;break}vF((c[n>>2]|0)+(c[o>>2]|0)|0,c[y>>2]|0,s)|0;if((c[y>>2]|0)!=7){H=s;c[E>>2]=wF(c[H>>2]|0,c[H+4>>2]|0,+h[c[w>>2]>>3])|0;break}if(+h[s>>3]<+h[c[w>>2]>>3]){c[E>>2]=-1;break}if(!(+h[s>>3]>+h[c[w>>2]>>3]))break;c[E>>2]=1;break}if(!(e[(c[w>>2]|0)+8>>1]&2)){k=d[(c[n>>2]|0)+(c[q>>2]|0)>>0]|0;if(!(e[(c[w>>2]|0)+8>>1]&16)){c[y>>2]=k;c[E>>2]=(c[y>>2]|0)!=0&1;break}f=(c[n>>2]|0)+(c[q>>2]|0)|0;if((k|0)<128)c[y>>2]=d[f>>0];else tF(f,y)|0;if((c[y>>2]|0)>>>0>=12?(c[y>>2]&1|0)==0:0){c[v>>2]=(((c[y>>2]|0)-12|0)>>>0)/2|0;if(((c[o>>2]|0)+(c[v>>2]|0)|0)>>>0>(c[m>>2]|0)>>>0){k=59;break a}if((c[v>>2]|0)<(c[(c[w>>2]|0)+12>>2]|0))k=c[v>>2]|0;else k=c[(c[w>>2]|0)+12>>2]|0;c[u>>2]=k;c[E>>2]=vQ((c[n>>2]|0)+(c[o>>2]|0)|0,c[(c[w>>2]|0)+16>>2]|0,c[u>>2]|0)|0;if(c[E>>2]|0)break;c[E>>2]=(c[v>>2]|0)-(c[(c[w>>2]|0)+12>>2]|0);break}c[E>>2]=-1;break}k=(c[n>>2]|0)+(c[q>>2]|0)|0;if((d[(c[n>>2]|0)+(c[q>>2]|0)>>0]|0)<128)c[y>>2]=d[k>>0];else tF(k,y)|0;if((c[y>>2]|0)>>>0<12){c[E>>2]=-1;break}if(!(c[y>>2]&1)){c[E>>2]=1;break}c[s+12>>2]=(((c[y>>2]|0)-12|0)>>>0)/2|0;if(((c[o>>2]|0)+(c[s+12>>2]|0)|0)>>>0>(c[m>>2]|0)>>>0){k=43;break a}if(c[(c[D>>2]|0)+20+(c[p>>2]<<2)>>2]|0){a[s+10>>0]=a[(c[D>>2]|0)+4>>0]|0;c[s+32>>2]=c[(c[D>>2]|0)+12>>2];b[s+8>>1]=2;c[s+16>>2]=(c[n>>2]|0)+(c[o>>2]|0);c[E>>2]=yF(s,c[w>>2]|0,c[(c[D>>2]|0)+20+(c[p>>2]<<2)>>2]|0,(c[B>>2]|0)+11|0)|0;break}if((c[s+12>>2]|0)<(c[(c[w>>2]|0)+12>>2]|0))k=c[s+12>>2]|0;else k=c[(c[w>>2]|0)+12>>2]|0;c[t>>2]=k;c[E>>2]=vQ((c[n>>2]|0)+(c[o>>2]|0)|0,c[(c[w>>2]|0)+16>>2]|0,c[t>>2]|0)|0;if(!(c[E>>2]|0))c[E>>2]=(c[s+12>>2]|0)-(c[(c[w>>2]|0)+12>>2]|0)}while(0);f=c[p>>2]|0;if(c[E>>2]|0){k=67;break}c[p>>2]=f+1;c[w>>2]=(c[w>>2]|0)+40;H=uF(c[y>>2]|0)|0;c[o>>2]=(c[o>>2]|0)+H;H=zF(c[y>>2]|0,0)|0;c[q>>2]=(c[q>>2]|0)+H;if((c[q>>2]|0)>>>0>=(c[z>>2]|0)>>>0){k=73;break}if((c[p>>2]|0)>=(e[(c[B>>2]|0)+8>>1]|0)){k=73;break}if((c[o>>2]|0)>>>0>(c[m>>2]|0)>>>0){k=73;break}}if((k|0)==43){H=(Lj(71763)|0)&255;a[(c[B>>2]|0)+11>>0]=H;c[A>>2]=0;H=c[A>>2]|0;i=F;return H|0}else if((k|0)==59){H=(Lj(71792)|0)&255;a[(c[B>>2]|0)+11>>0]=H;c[A>>2]=0;H=c[A>>2]|0;i=F;return H|0}else if((k|0)==67){if(a[(c[(c[D>>2]|0)+16>>2]|0)+f>>0]|0)c[E>>2]=0-(c[E>>2]|0);c[A>>2]=c[E>>2];H=c[A>>2]|0;i=F;return H|0}else if((k|0)==73){a[(c[B>>2]|0)+14>>0]=1;c[A>>2]=a[(c[B>>2]|0)+10>>0];H=c[A>>2]|0;i=F;return H|0}return 0}function tF(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+25|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;m=n;l=n+24|0;c[g>>2]=b;c[h>>2]=e;c[j>>2]=d[c[g>>2]>>0];c[g>>2]=(c[g>>2]|0)+1;c[k>>2]=d[c[g>>2]>>0];if(!(c[k>>2]&128)){c[j>>2]=c[j>>2]&127;c[j>>2]=c[j>>2]<<7;c[c[h>>2]>>2]=c[j>>2]|c[k>>2];a[f>>0]=2;m=a[f>>0]|0;i=n;return m|0}c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=c[j>>2]<<14;c[j>>2]=c[j>>2]|(d[c[g>>2]>>0]|0);if(!(c[j>>2]&128)){c[j>>2]=c[j>>2]&2080895;c[k>>2]=c[k>>2]&127;c[k>>2]=c[k>>2]<<7;c[c[h>>2]>>2]=c[j>>2]|c[k>>2];a[f>>0]=3;m=a[f>>0]|0;i=n;return m|0}c[g>>2]=(c[g>>2]|0)+-2;a[l>>0]=St(c[g>>2]|0,m)|0;e=m;if(0!=(c[e+4>>2]|0)?1:(c[m>>2]|0)!=(c[e>>2]|0))c[c[h>>2]>>2]=-1;else c[c[h>>2]>>2]=c[m>>2];a[f>>0]=a[l>>0]|0;m=a[f>>0]|0;i=n;return m|0}function uF(a){a=a|0;var b=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;f=e;c[f>>2]=a;a=c[f>>2]|0;if((c[f>>2]|0)>>>0>=128){c[b>>2]=((a-12|0)>>>0)/2|0;f=c[b>>2]|0;i=e;return f|0}else{c[b>>2]=d[35916+a>>0];f=c[b>>2]|0;i=e;return f|0}return 0}function vF(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;switch(c[k>>2]|0){case 0:case 11:case 10:{b[(c[l>>2]|0)+8>>1]=1;c[h>>2]=0;f=c[h>>2]|0;i=m;return f|0}case 1:{g=a[c[j>>2]>>0]|0;f=c[l>>2]|0;c[f>>2]=g;c[f+4>>2]=((g|0)<0)<<31>>31;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=1;f=c[h>>2]|0;i=m;return f|0}case 2:{g=a[c[j>>2]>>0]<<8|d[(c[j>>2]|0)+1>>0];f=c[l>>2]|0;c[f>>2]=g;c[f+4>>2]=((g|0)<0)<<31>>31;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=2;f=c[h>>2]|0;i=m;return f|0}case 3:{g=a[c[j>>2]>>0]<<16|d[(c[j>>2]|0)+1>>0]<<8|d[(c[j>>2]|0)+2>>0];f=c[l>>2]|0;c[f>>2]=g;c[f+4>>2]=((g|0)<0)<<31>>31;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=3;f=c[h>>2]|0;i=m;return f|0}case 4:{g=a[c[j>>2]>>0]<<24|d[(c[j>>2]|0)+1>>0]<<16|d[(c[j>>2]|0)+2>>0]<<8|d[(c[j>>2]|0)+3>>0];f=c[l>>2]|0;c[f>>2]=g;c[f+4>>2]=((g|0)<0)<<31>>31;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=4;f=c[h>>2]|0;i=m;return f|0}case 5:{f=d[(c[j>>2]|0)+2>>0]<<24|d[(c[j>>2]|0)+2+1>>0]<<16|d[(c[j>>2]|0)+2+2>>0]<<8|d[(c[j>>2]|0)+2+3>>0];g=a[c[j>>2]>>0]<<8|d[(c[j>>2]|0)+1>>0];g=gR(f|0,0,rR(0,1,g|0,((g|0)<0)<<31>>31|0)|0,C|0)|0;f=c[l>>2]|0;c[f>>2]=g;c[f+4>>2]=C;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=6;f=c[h>>2]|0;i=m;return f|0}case 7:case 6:{c[h>>2]=GF(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;f=c[h>>2]|0;i=m;return f|0}case 9:case 8:{f=c[l>>2]|0;c[f>>2]=(c[k>>2]|0)-8;c[f+4>>2]=0;b[(c[l>>2]|0)+8>>1]=4;c[h>>2]=0;f=c[h>>2]|0;i=m;return f|0}default:{c[(c[l>>2]|0)+16>>2]=c[j>>2];c[(c[l>>2]|0)+12>>2]=(((c[k>>2]|0)-12|0)>>>0)/2|0;b[(c[l>>2]|0)+8>>1]=b[15534+((c[k>>2]&1)<<1)>>1]|0;c[h>>2]=c[(c[l>>2]|0)+12>>2];f=c[h>>2]|0;i=m;return f|0}}return 0}function wF(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+48|0;e=l+32|0;f=l+24|0;g=l+16|0;k=l+8|0;j=l;m=f;c[m>>2]=a;c[m+4>>2]=b;h[g>>3]=d;if(+h[g>>3]<-9223372036854775808.0){c[e>>2]=1;m=c[e>>2]|0;i=l;return m|0}if(+h[g>>3]>9223372036854775808.0){c[e>>2]=-1;m=c[e>>2]|0;i=l;return m|0}d=+h[g>>3];n=+N(d)>=1.0?d>0.0?~~+$(+M(d/4294967296.0),4294967295.0)>>>0:~~+Z((d-+(~~d>>>0))/4294967296.0)>>>0:0;b=k;c[b>>2]=~~d>>>0;c[b+4>>2]=n;b=f;n=c[b+4>>2]|0;m=k;a=c[m+4>>2]|0;if((n|0)<(a|0)|((n|0)==(a|0)?(c[b>>2]|0)>>>0<(c[m>>2]|0)>>>0:0)){c[e>>2]=-1;n=c[e>>2]|0;i=l;return n|0}m=f;a=c[m+4>>2]|0;n=k;b=c[n+4>>2]|0;if((a|0)>(b|0)|((a|0)==(b|0)?(c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0:0)){n=k;if(((c[n>>2]|0)==0?(c[n+4>>2]|0)==-2147483648:0)&+h[g>>3]>0.0){c[e>>2]=-1;n=c[e>>2]|0;i=l;return n|0}else{c[e>>2]=1;n=c[e>>2]|0;i=l;return n|0}}n=f;h[j>>3]=+((c[n>>2]|0)>>>0)+4294967296.0*+(c[n+4>>2]|0);if(+h[j>>3]<+h[g>>3]){c[e>>2]=-1;n=c[e>>2]|0;i=l;return n|0}if(+h[j>>3]>+h[g>>3]){c[e>>2]=1;n=c[e>>2]|0;i=l;return n|0}else{c[e>>2]=0;n=c[e>>2]|0;i=l;return n|0}return 0}function xF(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+8|0;g=l+24|0;h=l+20|0;k=l+16|0;j=l;c[g>>2]=b;c[h>>2]=e;switch(c[g>>2]|0){case 1:case 0:{j=a[c[h>>2]>>0]|0;k=f;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;break}case 2:{j=a[c[h>>2]>>0]<<8|d[(c[h>>2]|0)+1>>0];k=f;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;break}case 3:{j=a[c[h>>2]>>0]<<16|d[(c[h>>2]|0)+1>>0]<<8|d[(c[h>>2]|0)+2>>0];k=f;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;break}case 4:{c[k>>2]=d[c[h>>2]>>0]<<24|d[(c[h>>2]|0)+1>>0]<<16|d[(c[h>>2]|0)+2>>0]<<8|d[(c[h>>2]|0)+3>>0];j=c[k>>2]|0;k=f;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;break}case 5:{b=d[(c[h>>2]|0)+2>>0]<<24|d[(c[h>>2]|0)+2+1>>0]<<16|d[(c[h>>2]|0)+2+2>>0]<<8|d[(c[h>>2]|0)+2+3>>0];j=a[c[h>>2]>>0]<<8|d[(c[h>>2]|0)+1>>0];k=f;c[k>>2]=gR(b|0,0,rR(0,1,j|0,((j|0)<0)<<31>>31|0)|0,C|0)|0;c[k+4>>2]=C;break}case 6:{k=j;c[k>>2]=d[c[h>>2]>>0]<<24|d[(c[h>>2]|0)+1>>0]<<16|d[(c[h>>2]|0)+2>>0]<<8|d[(c[h>>2]|0)+3>>0];c[k+4>>2]=0;k=c[j>>2]|0;b=j;c[b>>2]=d[(c[h>>2]|0)+4>>0]<<24|d[(c[h>>2]|0)+4+1>>0]<<16|d[(c[h>>2]|0)+4+2>>0]<<8|d[(c[h>>2]|0)+4+3>>0];c[b+4>>2]=k;b=j;j=c[b+4>>2]|0;k=f;c[k>>2]=c[b>>2];c[k+4>>2]=j;break}default:{k=f;c[k>>2]=(c[g>>2]|0)-8;c[k+4>>2]=0}}k=f;C=c[k+4>>2]|0;i=l;return c[k>>2]|0}function yF(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+128|0;h=u+116|0;j=u+112|0;k=u+108|0;l=u+104|0;m=u+100|0;r=u+96|0;s=u+92|0;t=u+88|0;p=u+84|0;q=u+80|0;n=u+40|0;o=u;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;if((d[(c[j>>2]|0)+10>>0]|0|0)==(d[(c[l>>2]|0)+4>>0]|0|0)){c[h>>2]=Zb[c[(c[l>>2]|0)+12>>2]&255](c[(c[l>>2]|0)+8>>2]|0,c[(c[j>>2]|0)+12>>2]|0,c[(c[j>>2]|0)+16>>2]|0,c[(c[k>>2]|0)+12>>2]|0,c[(c[k>>2]|0)+16>>2]|0)|0;t=c[h>>2]|0;i=u;return t|0}AF(n,c[(c[j>>2]|0)+32>>2]|0,1);AF(o,c[(c[j>>2]|0)+32>>2]|0,1);BF(n,c[j>>2]|0,4096);BF(o,c[k>>2]|0,4096);c[s>>2]=Wg(n,a[(c[l>>2]|0)+4>>0]|0)|0;c[p>>2]=(c[s>>2]|0)==0?0:c[n+12>>2]|0;c[t>>2]=Wg(o,a[(c[l>>2]|0)+4>>0]|0)|0;c[q>>2]=(c[t>>2]|0)==0?0:c[o+12>>2]|0;c[r>>2]=Zb[c[(c[l>>2]|0)+12>>2]&255](c[(c[l>>2]|0)+8>>2]|0,c[p>>2]|0,c[s>>2]|0,c[q>>2]|0,c[t>>2]|0)|0;if(((c[s>>2]|0)==0|(c[t>>2]|0)==0)&(c[m>>2]|0)!=0)a[c[m>>2]>>0]=7;Ug(n);Ug(o);c[h>>2]=c[r>>2];t=c[h>>2]|0;i=u;return t|0}function zF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f;e=f+8|0;g=d;c[g>>2]=a;c[g+4>>2]=b;c[e>>2]=1;while(1){b=d;b=hR(c[b>>2]|0,c[b+4>>2]|0,7)|0;g=C;a=d;c[a>>2]=b;c[a+4>>2]=g;a=c[e>>2]|0;if(!((b|0)!=0|(g|0)!=0))break;c[e>>2]=a+1}i=f;return a|0}function AF(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+4|0;h=f;j=f+8|0;c[g>>2]=a;c[h>>2]=d;b[j>>1]=e;b[(c[g>>2]|0)+8>>1]=b[j>>1]|0;c[(c[g>>2]|0)+32>>2]=c[h>>2];c[(c[g>>2]|0)+24>>2]=0;i=f;return}function BF(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=d;c[j>>2]=f;d=c[g>>2]|0;if((e[(c[g>>2]|0)+8>>1]|0)&9312){CF(d,c[h>>2]|0,c[j>>2]|0);i=k;return}f=c[h>>2]|0;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];if((e[(c[h>>2]|0)+8>>1]|0)&2048){i=k;return}h=(c[g>>2]|0)+8|0;b[h>>1]=(e[h>>1]|0)&-7169;h=(c[g>>2]|0)+8|0;b[h>>1]=e[h>>1]|0|c[j>>2];i=k;return}function CF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;DF(c[h>>2]|0);BF(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0);i=e;return}function DF(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=a;if((e[(c[f>>2]|0)+8>>1]|0)&8192)EF(c[f>>2]|0,c[c[f>>2]>>2]|0)|0;a=c[f>>2]|0;do if(!((e[(c[f>>2]|0)+8>>1]|0)&1024)){d=c[f>>2]|0;if((e[a+8>>1]|0)&32){FF(c[d>>2]|0);break}if((e[d+8>>1]|0)&64){c[g>>2]=c[c[f>>2]>>2];c[(c[g>>2]|0)+4>>2]=c[(c[c[g>>2]>>2]|0)+180>>2];c[(c[c[g>>2]>>2]|0)+180>>2]=c[g>>2]}}else Qb[c[a+36>>2]&255](c[(c[f>>2]|0)+16>>2]|0);while(0);b[(c[f>>2]|0)+8>>1]=1;i=h;return}function EF(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+96|0;f=k+80|0;g=k+76|0;j=k+72|0;h=k+40|0;e=k;c[f>>2]=a;c[g>>2]=d;c[j>>2]=0;if(!(c[g>>2]|0)){j=c[j>>2]|0;i=k;return j|0}if(!(c[(c[g>>2]|0)+16>>2]|0)){j=c[j>>2]|0;i=k;return j|0}c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+24>>2]=0;c[h+28>>2]=0;d=e;a=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));b[e+8>>1]=1;c[e+32>>2]=c[(c[f>>2]|0)+32>>2];c[h>>2]=e;c[h+8>>2]=c[f>>2];c[h+4>>2]=c[g>>2];Qb[c[(c[g>>2]|0)+16>>2]&255](h);if((c[(c[f>>2]|0)+24>>2]|0)>0)Sf(c[(c[f>>2]|0)+32>>2]|0,c[(c[f>>2]|0)+20>>2]|0);d=c[f>>2]|0;a=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(a|0));c[j>>2]=c[h+20>>2];j=c[j>>2]|0;i=k;return j|0}function FF(a){a=a|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=c[c[d>>2]>>2];while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[c[e>>2]>>2];Sf(c[(c[d>>2]|0)+4>>2]|0,c[e>>2]|0);c[e>>2]=c[f>>2]}c[c[d>>2]>>2]=0;b[(c[d>>2]|0)+24>>1]=0;c[(c[d>>2]|0)+8>>2]=0;c[(c[d>>2]|0)+12>>2]=0;c[(c[d>>2]|0)+20>>2]=0;b[(c[d>>2]|0)+26>>1]=1;i=g;return}function GF(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;n=k+20|0;l=k+16|0;g=k+12|0;j=k;m=k+8|0;c[n>>2]=a;c[l>>2]=e;c[g>>2]=f;f=j;c[f>>2]=(d[c[n>>2]>>0]|0)<<24|(d[(c[n>>2]|0)+1>>0]|0)<<16|(d[(c[n>>2]|0)+2>>0]|0)<<8|(d[(c[n>>2]|0)+3>>0]|0);c[f+4>>2]=0;c[m>>2]=(d[(c[n>>2]|0)+4>>0]|0)<<24|(d[(c[n>>2]|0)+4+1>>0]|0)<<16|(d[(c[n>>2]|0)+4+2>>0]|0)<<8|(d[(c[n>>2]|0)+4+3>>0]|0);f=gR(0,c[j>>2]|0,c[m>>2]|0,0)|0;e=j;c[e>>2]=f;c[e+4>>2]=C;if((c[l>>2]|0)==6){l=j;m=c[l+4>>2]|0;n=c[g>>2]|0;c[n>>2]=c[l>>2];c[n+4>>2]=m;b[(c[g>>2]|0)+8>>1]=4;i=k;return 8}else{n=c[g>>2]|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];n=(HF(+h[c[g>>2]>>3])|0)!=0;b[(c[g>>2]|0)+8>>1]=n?1:8;i=k;return 8}return 0}function HF(a){a=+a;var b=0,d=0,e=0,f=0,g=0;d=i;i=i+32|0;g=d+16|0;b=d+24|0;f=d+8|0;e=d;h[g>>3]=a;h[f>>3]=+h[g>>3];h[e>>3]=+h[f>>3];c[b>>2]=+h[f>>3]!=+h[e>>3]&1;i=d;return c[b>>2]|0}function IF(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+20|0;j=p+16|0;k=p+12|0;n=p+8|0;l=p+4|0;m=p;c[j>>2]=f;c[k>>2]=g;if((d[(c[j>>2]|0)+66>>0]|0)!=1){if((d[(c[j>>2]|0)+66>>0]|0)>=3)f=WE(c[j>>2]|0)|0;else f=0;c[n>>2]=f;if(c[n>>2]|0){c[h>>2]=c[n>>2];o=c[h>>2]|0;i=p;return o|0}if(!(d[(c[j>>2]|0)+66>>0]|0)){c[c[k>>2]>>2]=1;c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}if((c[(c[j>>2]|0)+60>>2]|0)!=0?(a[(c[j>>2]|0)+66>>0]=1,g=(c[(c[j>>2]|0)+60>>2]|0)>0,c[(c[j>>2]|0)+60>>2]=0,g):0){c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}}c[m>>2]=c[(c[j>>2]|0)+120+(a[(c[j>>2]|0)+68>>0]<<2)>>2];g=(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)|0;f=(b[g>>1]|0)+1<<16>>16;b[g>>1]=f;c[l>>2]=f&65535;f=(a[(c[m>>2]|0)+4>>0]|0)!=0;if((c[l>>2]|0)<(e[(c[m>>2]|0)+18>>1]|0))if(f){c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}else{c[h>>2]=JF(c[j>>2]|0)|0;o=c[h>>2]|0;i=p;return o|0}if(!f){o=c[j>>2]|0;c[n>>2]=XE(o,$q((c[(c[m>>2]|0)+56>>2]|0)+((d[(c[m>>2]|0)+5>>0]|0)+8)|0)|0)|0;if(c[n>>2]|0){c[h>>2]=c[n>>2];o=c[h>>2]|0;i=p;return o|0}else{c[h>>2]=JF(c[j>>2]|0)|0;o=c[h>>2]|0;i=p;return o|0}}do{if(!(a[(c[j>>2]|0)+68>>0]|0)){o=17;break}ZE(c[j>>2]|0);c[m>>2]=c[(c[j>>2]|0)+120+(a[(c[j>>2]|0)+68>>0]<<2)>>2]}while((e[(c[j>>2]|0)+80+(a[(c[j>>2]|0)+68>>0]<<1)>>1]|0)>=(e[(c[m>>2]|0)+18>>1]|0));if((o|0)==17){c[c[k>>2]>>2]=1;a[(c[j>>2]|0)+66>>0]=0;c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}if(a[(c[m>>2]|0)+2>>0]|0){c[h>>2]=TE(c[j>>2]|0,c[k>>2]|0)|0;o=c[h>>2]|0;i=p;return o|0}else{c[h>>2]=0;o=c[h>>2]|0;i=p;return o|0}return 0}function JF(b){b=b|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;h=k+8|0;j=k+4|0;g=k;c[f>>2]=b;c[j>>2]=0;while(1){if(c[j>>2]|0){f=5;break}b=c[(c[f>>2]|0)+120+(a[(c[f>>2]|0)+68>>0]<<2)>>2]|0;c[g>>2]=b;if(!((a[b+4>>0]|0)!=0^1)){f=5;break}c[h>>2]=$q((c[(c[g>>2]|0)+56>>2]|0)+(e[(c[g>>2]|0)+20>>1]&(d[(c[(c[g>>2]|0)+64>>2]|0)+(e[(c[f>>2]|0)+80+(a[(c[f>>2]|0)+68>>0]<<1)>>1]<<1)>>0]<<8|d[(c[(c[g>>2]|0)+64>>2]|0)+(e[(c[f>>2]|0)+80+(a[(c[f>>2]|0)+68>>0]<<1)>>1]<<1)+1>>0]))|0)|0;c[j>>2]=XE(c[f>>2]|0,c[h>>2]|0)|0}if((f|0)==5){i=k;return c[j>>2]|0}return 0}function KF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;j=h+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[j>>2]=a;c[d>>2]=b;c[e>>2]=c[c[j>>2]>>2];c[g>>2]=Nv(c[e>>2]|0,0,0,0)|0;if(!(c[g>>2]|0)){j=c[g>>2]|0;i=h;return j|0}j=nh(c[e>>2]|0,c[(c[d>>2]|0)+12>>2]|0)|0;c[(c[g>>2]|0)+8+(((c[c[g>>2]>>2]|0)-1|0)*72|0)+8>>2]=j;c[f>>2]=Dh(c[e>>2]|0,c[(c[(c[d>>2]|0)+4>>2]|0)+20>>2]|0)|0;if(!((c[f>>2]|0)==0|(c[f>>2]|0)>=2)){j=c[g>>2]|0;i=h;return j|0}j=nh(c[e>>2]|0,c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)>>2]|0)|0;c[(c[g>>2]|0)+8+(((c[c[g>>2]>>2]|0)-1|0)*72|0)+4>>2]=j;j=c[g>>2]|0;i=h;return j|0}function LF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=g;return}c[f>>2]=c[(c[e>>2]|0)+28>>2];Zu(c[d>>2]|0,c[(c[f>>2]|0)+16>>2]|0);Vu(c[d>>2]|0,c[(c[f>>2]|0)+20>>2]|0);Wu(c[d>>2]|0,c[(c[f>>2]|0)+8>>2]|0);Zu(c[d>>2]|0,c[(c[e>>2]|0)+12>>2]|0);Sf(c[d>>2]|0,c[e>>2]|0);i=g;return}function MF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h+12|0;d=h+8|0;e=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;if((c[d>>2]|0)==0|(c[e>>2]|0)==0){c[g>>2]=1;g=c[g>>2]|0;i=h;return g|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0)){d=8;break}if((Yy(c[d>>2]|0,c[(c[(c[e>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)+4>>2]|0)|0)>=0){d=6;break}c[f>>2]=(c[f>>2]|0)+1}if((d|0)==6){c[g>>2]=1;g=c[g>>2]|0;i=h;return g|0}else if((d|0)==8){c[g>>2]=0;g=c[g>>2]|0;i=h;return g|0}return 0}function NF(e,f){e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+16|0;g=j+4|0;h=j;c[g>>2]=e;c[h>>2]=f;if((d[c[h>>2]>>0]|0)!=152){i=j;return 0}if((b[(c[h>>2]|0)+32>>1]|0)<0){e=(c[g>>2]|0)+20|0;a[e>>0]=d[e>>0]|2;i=j;return 0}if((c[(c[(c[g>>2]|0)+24>>2]|0)+(b[(c[h>>2]|0)+32>>1]<<2)>>2]|0)<0){i=j;return 0}e=(c[g>>2]|0)+20|0;a[e>>0]=d[e>>0]|1;i=j;return 0}function OF(a,f){a=a|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+12|0;j=l+8|0;k=l+4|0;g=l;c[j>>2]=a;c[k>>2]=f;if((e[(c[j>>2]|0)+50>>1]|0)!=(e[(c[k>>2]|0)+50>>1]|0)){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}if((d[(c[j>>2]|0)+54>>0]|0)!=(d[(c[k>>2]|0)+54>>0]|0)){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(e[(c[k>>2]|0)+50>>1]|0)){g=17;break}if((b[(c[(c[k>>2]|0)+4>>2]|0)+(c[g>>2]<<1)>>1]|0)!=(b[(c[(c[j>>2]|0)+4>>2]|0)+(c[g>>2]<<1)>>1]|0)){g=8;break}if((b[(c[(c[k>>2]|0)+4>>2]|0)+(c[g>>2]<<1)>>1]|0)==-2?(py(c[(c[(c[(c[k>>2]|0)+40>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0,c[(c[(c[(c[j>>2]|0)+40>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0,-1)|0)!=0:0){ -g=11;break}if((d[(c[(c[k>>2]|0)+28>>2]|0)+(c[g>>2]|0)>>0]|0)!=(d[(c[(c[j>>2]|0)+28>>2]|0)+(c[g>>2]|0)>>0]|0)){g=13;break}if(Td(c[(c[(c[k>>2]|0)+32>>2]|0)+(c[g>>2]<<2)>>2]|0,c[(c[(c[j>>2]|0)+32>>2]|0)+(c[g>>2]<<2)>>2]|0)|0){g=15;break}c[g>>2]=(c[g>>2]|0)+1}if((g|0)==8){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else if((g|0)==11){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else if((g|0)==13){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else if((g|0)==15){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else if((g|0)==17)if(py(c[(c[k>>2]|0)+36>>2]|0,c[(c[j>>2]|0)+36>>2]|0,-1)|0){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else{c[h>>2]=1;k=c[h>>2]|0;i=l;return k|0}return 0}function PF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=d;c[(c[h>>2]|0)+4>>2]=c[f>>2];c[c[h>>2]>>2]=c[(c[f>>2]|0)+496>>2];c[(c[f>>2]|0)+496>>2]=c[g>>2];i=e;return}function QF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+64|0;f=p+48|0;g=p+44|0;h=p+40|0;j=p+36|0;l=p+16|0;o=p+12|0;n=p+8|0;k=p+4|0;m=p;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=c[c[f>>2]>>2];c[m>>2]=Dh(c[k>>2]|0,c[(c[g>>2]|0)+64>>2]|0)|0;c[h>>2]=ny(c[k>>2]|0,c[h>>2]|0,0)|0;c[n>>2]=Nv(c[k>>2]|0,0,0,0)|0;if(c[n>>2]|0){d=nh(c[k>>2]|0,c[c[g>>2]>>2]|0)|0;c[(c[n>>2]|0)+8+8>>2]=d;d=nh(c[k>>2]|0,c[(c[(c[k>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2]|0)|0;c[(c[n>>2]|0)+8+4>>2]=d}c[o>>2]=Fv(c[f>>2]|0,0,c[n>>2]|0,c[h>>2]|0,0,0,0,-32768,0,0)|0;ZA(l,12,c[j>>2]|0);Cv(c[f>>2]|0,c[o>>2]|0,l)|0;Wu(c[k>>2]|0,c[o>>2]|0);i=p;return}function RF(d,e,f,g,h,j,k,l){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;F=i;i=i+96|0;r=F+88|0;H=F+84|0;s=F+80|0;m=F+76|0;n=F+72|0;o=F+68|0;G=F+64|0;t=F+60|0;E=F+56|0;w=F+52|0;x=F+48|0;I=F+44|0;z=F+40|0;A=F+36|0;y=F+32|0;B=F+28|0;C=F+24|0;D=F+20|0;q=F+16|0;p=F+8|0;v=F+4|0;u=F;c[r>>2]=d;c[H>>2]=e;c[s>>2]=f;c[m>>2]=g;c[n>>2]=h;c[o>>2]=j;c[G>>2]=k;c[t>>2]=l;c[E>>2]=c[(c[r>>2]|0)+8>>2];c[I>>2]=c[c[r>>2]>>2];c[z>>2]=Ax(c[I>>2]|0,c[s>>2]|0)|0;c[y>>2]=2+(b[(c[s>>2]|0)+34>>1]|0);c[q>>2]=c[(c[H>>2]|0)+8+44>>2];f=(c[r>>2]|0)+72|0;k=c[f>>2]|0;c[f>>2]=k+1;c[w>>2]=k;c[u>>2]=Rw(c[E>>2]|0,57,c[w>>2]|0,c[y>>2]|0)|0;c[B>>2]=(c[(c[r>>2]|0)+76>>2]|0)+1;k=(c[r>>2]|0)+76|0;c[k>>2]=(c[k>>2]|0)+(c[y>>2]|0);k=(c[r>>2]|0)+76|0;f=(c[k>>2]|0)+1|0;c[k>>2]=f;c[C>>2]=f;f=(c[r>>2]|0)+76|0;k=(c[f>>2]|0)+1|0;c[f>>2]=k;c[D>>2]=k;c[A>>2]=RC(c[r>>2]|0,c[H>>2]|0,c[G>>2]|0,0,0,4,0)|0;if(!(c[A>>2]|0)){i=F;return}Rw(c[E>>2]|0,103,c[q>>2]|0,c[B>>2]|0)|0;if(c[n>>2]|0)xA(c[r>>2]|0,c[n>>2]|0,(c[B>>2]|0)+1|0);else Rw(c[E>>2]|0,103,c[q>>2]|0,(c[B>>2]|0)+1|0)|0;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(b[(c[s>>2]|0)+34>>1]|0))break;if((c[(c[o>>2]|0)+(c[x>>2]<<2)>>2]|0)>=0)xA(c[r>>2]|0,c[(c[(c[m>>2]|0)+4>>2]|0)+((c[(c[o>>2]|0)+(c[x>>2]<<2)>>2]|0)*20|0)>>2]|0,(c[B>>2]|0)+2+(c[x>>2]|0)|0);else Vw(c[E>>2]|0,153,c[q>>2]|0,c[x>>2]|0,(c[B>>2]|0)+2+(c[x>>2]|0)|0)|0;c[x>>2]=(c[x>>2]|0)+1}c[v>>2]=SF(c[A>>2]|0,p)|0;m=c[E>>2]|0;if(c[v>>2]|0){pA(m,c[u>>2]|0)|0;if(!(c[(c[r>>2]|0)+416>>2]|0))a[(c[r>>2]|0)+20>>0]=0}else{Vw(m,49,c[B>>2]|0,c[y>>2]|0,c[C>>2]|0)|0;Rw(c[E>>2]|0,74,c[w>>2]|0,c[D>>2]|0)|0;Vw(c[E>>2]|0,75,c[w>>2]|0,c[C>>2]|0,c[D>>2]|0)|0}a:do if(!(c[v>>2]|0)){SC(c[A>>2]|0);c[u>>2]=xz(c[E>>2]|0,108,c[w>>2]|0)|0;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[y>>2]|0))break a;Vw(c[E>>2]|0,47,c[w>>2]|0,c[x>>2]|0,(c[B>>2]|0)+(c[x>>2]|0)|0)|0;c[x>>2]=(c[x>>2]|0)+1}}while(0);EC(c[r>>2]|0,c[s>>2]|0);Uw(c[E>>2]|0,12,0,c[y>>2]|0,c[B>>2]|0,c[z>>2]|0,-10)|0;Fh(c[E>>2]|0,((c[t>>2]|0)==10?2:c[t>>2]|0)&255);Bx(c[r>>2]|0);if(!(c[v>>2]|0)){Rw(c[E>>2]|0,7,c[w>>2]|0,(c[u>>2]|0)+1|0)|0;Fz(c[E>>2]|0,c[u>>2]|0);Rw(c[E>>2]|0,61,c[w>>2]|0,0)|0;i=F;return}else{SC(c[A>>2]|0);i=F;return}}function SF(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f+4|0;g=f;c[e>>2]=a;c[g>>2]=b;a=c[g>>2]|0;b=(c[e>>2]|0)+60|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];i=f;return d[(c[e>>2]|0)+38>>0]|0|0}function TF(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[(c[b>>2]|0)+4>>2]|0)){i=d;return}c[(c[(c[b>>2]|0)+4>>2]|0)+496>>2]=c[c[b>>2]>>2];c[(c[b>>2]|0)+4>>2]=0;i=d;return}function UF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;k=p+32|0;f=p+28|0;l=p+24|0;m=p+20|0;n=p+16|0;o=p+12|0;j=p+8|0;g=p+4|0;h=p;c[f>>2]=a;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;do if(((c[c[l>>2]>>2]|0)+(c[m>>2]|0)|0)>>>0>(c[(c[l>>2]|0)+4>>2]|0)>>>0){c[g>>2]=(c[c[l>>2]>>2]|0)+(c[m>>2]|0);c[j>>2]=Ew(c[f>>2]|0,c[l>>2]|0,80+(((c[g>>2]|0)-1|0)*72|0)|0,0)|0;if(c[j>>2]|0){c[l>>2]=c[j>>2];c[h>>2]=(((($t(c[f>>2]|0,c[j>>2]|0)|0)-80|0)>>>0)/72|0)+1;c[(c[l>>2]|0)+4>>2]=c[h>>2];break}c[k>>2]=c[l>>2];o=c[k>>2]|0;i=p;return o|0}while(0);c[o>>2]=(c[c[l>>2]>>2]|0)-1;while(1){if((c[o>>2]|0)<(c[n>>2]|0))break;f=(c[l>>2]|0)+8+(((c[o>>2]|0)+(c[m>>2]|0)|0)*72|0)|0;a=(c[l>>2]|0)+8+((c[o>>2]|0)*72|0)|0;e=f+72|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(e|0));c[o>>2]=(c[o>>2]|0)+-1}b=c[l>>2]|0;c[b>>2]=(c[b>>2]|0)+(c[m>>2]|0);kR((c[l>>2]|0)+8+((c[n>>2]|0)*72|0)|0,0,(c[m>>2]|0)*72|0)|0;c[o>>2]=c[n>>2];while(1){if((c[o>>2]|0)>=((c[n>>2]|0)+(c[m>>2]|0)|0))break;c[(c[l>>2]|0)+8+((c[o>>2]|0)*72|0)+44>>2]=-1;c[o>>2]=(c[o>>2]|0)+1}c[k>>2]=c[l>>2];o=c[k>>2]|0;i=p;return o|0}function VF(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;h=j;f=j+20|0;g=j+16|0;m=j+12|0;l=j+8|0;k=j+4|0;c[g>>2]=a;c[m>>2]=b;c[l>>2]=e;c[k>>2]=d[c[m>>2]>>0];if((c[l>>2]|0)>1?(c[k>>2]|0)==10|(c[k>>2]|0)==11:0){Ah(c[g>>2]|0,36847,h);c[f>>2]=1;m=c[f>>2]|0;i=j;return m|0}c[f>>2]=0;m=c[f>>2]|0;i=j;return m|0}function WF(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+128|0;y=Q+112|0;u=Q+108|0;v=Q+104|0;z=Q+100|0;l=Q+96|0;A=Q+92|0;n=Q+88|0;I=Q+84|0;K=Q+80|0;L=Q+76|0;J=Q+72|0;M=Q+68|0;G=Q+64|0;D=Q+60|0;C=Q+56|0;O=Q+52|0;N=Q+48|0;B=Q+44|0;m=Q+40|0;p=Q+36|0;r=Q+32|0;o=Q+28|0;q=Q+24|0;s=Q+20|0;w=Q+16|0;x=Q+12|0;F=Q+8|0;E=Q+116|0;P=Q+4|0;H=Q;c[u>>2]=f;c[v>>2]=g;c[z>>2]=h;c[l>>2]=j;c[A>>2]=k;c[n>>2]=c[(c[u>>2]|0)+496>>2];c[B>>2]=c[c[u>>2]>>2];if(e[(c[B>>2]|0)+60>>1]&1){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}c[J>>2]=c[(c[v>>2]|0)+32>>2];c[N>>2]=(c[J>>2]|0)+8+((c[z>>2]|0)*72|0);c[D>>2]=c[(c[N>>2]|0)+44>>2];c[K>>2]=c[(c[N>>2]|0)+20>>2];do if(c[A>>2]|0){if(c[l>>2]|0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[c[J>>2]>>2]|0)>1){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(!((c[(c[v>>2]|0)+36>>2]|0)!=0?(c[(c[(c[v>>2]|0)+36>>2]|0)+4>>2]&2097152|0)!=0:0))t=10;if(((t|0)==10?((iz(c[c[v>>2]>>2]|0)|0)&2097152|0)==0:0)?((iz(c[(c[v>>2]|0)+48>>2]|0)|0)&2097152|0)==0:0)break;c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}while(0);c[M>>2]=c[(c[K>>2]|0)+32>>2];if((c[(c[K>>2]|0)+60>>2]|0)!=0?(c[(c[v>>2]|0)+60>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(c[(c[K>>2]|0)+64>>2]|0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((e[(c[v>>2]|0)+6>>1]&128|0)!=0?(c[(c[K>>2]|0)+60>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(!(c[c[M>>2]>>2]|0)){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(e[(c[K>>2]|0)+6>>1]&1){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[(c[K>>2]|0)+60>>2]|0)!=0?(c[l>>2]|0)!=0?1:(c[c[J>>2]>>2]|0)>1:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[A>>2]|0)!=0?(e[(c[v>>2]|0)+6>>1]&1|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[(c[v>>2]|0)+48>>2]|0)!=0?(c[(c[K>>2]|0)+48>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[l>>2]|0)!=0?(c[(c[K>>2]|0)+48>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[(c[K>>2]|0)+60>>2]|0)!=0?(c[(c[v>>2]|0)+36>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((c[(c[K>>2]|0)+60>>2]|0)!=0?(e[(c[v>>2]|0)+6>>1]&1|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(e[(c[K>>2]|0)+6>>1]&12288){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if((e[(c[v>>2]|0)+6>>1]&8192|0)!=0?(c[(c[K>>2]|0)+52>>2]|0)!=0:0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(d[(c[N>>2]|0)+36>>0]&32){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}a:do if(c[(c[K>>2]|0)+52>>2]|0){if(c[(c[K>>2]|0)+48>>2]|0){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}do if(!(c[l>>2]|0)){if(e[(c[v>>2]|0)+6>>1]&1)break;if((c[c[J>>2]>>2]|0)!=1)break;c[L>>2]=c[K>>2];while(1){if(!(c[L>>2]|0))break;if(e[(c[L>>2]|0)+6>>1]&9){t=62;break}if((c[(c[L>>2]|0)+52>>2]|0)!=0?(d[(c[L>>2]|0)+4>>0]|0)!=116:0){t=62;break}if((c[c[(c[L>>2]|0)+32>>2]>>2]|0)<1){t=62;break}c[L>>2]=c[(c[L>>2]|0)+52>>2]}if((t|0)==62){c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}if(!(c[(c[v>>2]|0)+48>>2]|0))break a;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[c[(c[v>>2]|0)+48>>2]>>2]|0))break a;if(!(e[(c[(c[(c[v>>2]|0)+48>>2]|0)+4>>2]|0)+((c[m>>2]|0)*20|0)+16>>1]|0))break;c[m>>2]=(c[m>>2]|0)+1}c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}while(0);c[y>>2]=0;P=c[y>>2]|0;i=Q;return P|0}while(0);c[(c[u>>2]|0)+496>>2]=c[(c[N>>2]|0)+8>>2];Mw(c[u>>2]|0,21,0,0,0)|0;c[(c[u>>2]|0)+496>>2]=c[n>>2];c[K>>2]=c[(c[K>>2]|0)+52>>2];while(1){if(!(c[K>>2]|0))break;c[r>>2]=c[(c[v>>2]|0)+48>>2];c[o>>2]=c[(c[v>>2]|0)+60>>2];c[q>>2]=c[(c[v>>2]|0)+64>>2];c[s>>2]=c[(c[v>>2]|0)+52>>2];c[(c[v>>2]|0)+48>>2]=0;c[(c[v>>2]|0)+32>>2]=0;c[(c[v>>2]|0)+52>>2]=0;c[(c[v>>2]|0)+60>>2]=0;c[(c[v>>2]|0)+64>>2]=0;c[p>>2]=Hx(c[B>>2]|0,c[v>>2]|0,0)|0;c[(c[v>>2]|0)+64>>2]=c[q>>2];c[(c[v>>2]|0)+60>>2]=c[o>>2];c[(c[v>>2]|0)+48>>2]=c[r>>2];c[(c[v>>2]|0)+32>>2]=c[J>>2];a[(c[v>>2]|0)+4>>0]=116;l=c[s>>2]|0;if(!(c[p>>2]|0))c[(c[v>>2]|0)+52>>2]=l;else{c[(c[p>>2]|0)+52>>2]=l;if(c[s>>2]|0)c[(c[s>>2]|0)+56>>2]=c[p>>2];c[(c[p>>2]|0)+56>>2]=c[v>>2];c[(c[v>>2]|0)+52>>2]=c[p>>2]}if(a[(c[B>>2]|0)+65>>0]|0){t=78;break}c[K>>2]=c[(c[K>>2]|0)+52>>2]}if((t|0)==78){c[y>>2]=1;P=c[y>>2]|0;i=Q;return P|0}t=c[(c[N>>2]|0)+20>>2]|0;c[L>>2]=t;c[K>>2]=t;Sf(c[B>>2]|0,c[(c[N>>2]|0)+4>>2]|0);Sf(c[B>>2]|0,c[(c[N>>2]|0)+8>>2]|0);Sf(c[B>>2]|0,c[(c[N>>2]|0)+12>>2]|0);c[(c[N>>2]|0)+4>>2]=0;c[(c[N>>2]|0)+8>>2]=0;c[(c[N>>2]|0)+12>>2]=0;c[(c[N>>2]|0)+20>>2]=0;if(c[(c[N>>2]|0)+16>>2]|0){c[w>>2]=c[(c[N>>2]|0)+16>>2];if((e[(c[w>>2]|0)+36>>1]|0)==1){l=c[u>>2]|0;if(c[(c[u>>2]|0)+416>>2]|0)l=c[l+416>>2]|0;c[x>>2]=l;c[(c[w>>2]|0)+68>>2]=c[(c[x>>2]|0)+528>>2];c[(c[x>>2]|0)+528>>2]=c[w>>2]}else{x=(c[w>>2]|0)+36|0;b[x>>1]=(b[x>>1]|0)+-1<<16>>16}c[(c[N>>2]|0)+16>>2]=0}c[I>>2]=c[v>>2];while(1){if(!(c[I>>2]|0))break;a[E>>0]=0;c[M>>2]=c[(c[K>>2]|0)+32>>2];c[F>>2]=c[c[M>>2]>>2];c[J>>2]=c[(c[I>>2]|0)+32>>2];if(!(c[J>>2]|0)){x=Nv(c[B>>2]|0,0,0,0)|0;c[(c[I>>2]|0)+32>>2]=x;c[J>>2]=x;if(!(c[J>>2]|0))break}else a[E>>0]=a[(c[N>>2]|0)+36>>0]|0;if((c[F>>2]|0)>1?(x=UF(c[B>>2]|0,c[J>>2]|0,(c[F>>2]|0)-1|0,(c[z>>2]|0)+1|0)|0,c[J>>2]=x,c[(c[I>>2]|0)+32>>2]=x,(a[(c[B>>2]|0)+65>>0]|0)!=0):0)break;c[C>>2]=0;while(1){if((c[C>>2]|0)>=(c[F>>2]|0))break;_u(c[B>>2]|0,c[(c[J>>2]|0)+8+(((c[C>>2]|0)+(c[z>>2]|0)|0)*72|0)+52>>2]|0);l=(c[J>>2]|0)+8+(((c[C>>2]|0)+(c[z>>2]|0)|0)*72|0)|0;h=(c[M>>2]|0)+8+((c[C>>2]|0)*72|0)|0;m=l+72|0;do{c[l>>2]=c[h>>2];l=l+4|0;h=h+4|0}while((l|0)<(m|0));l=(c[M>>2]|0)+8+((c[C>>2]|0)*72|0)|0;m=l+72|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));c[C>>2]=(c[C>>2]|0)+1}a[(c[J>>2]|0)+8+((c[z>>2]|0)*72|0)+36>>0]=a[E>>0]|0;c[G>>2]=c[c[I>>2]>>2];c[C>>2]=0;while(1){if((c[C>>2]|0)>=(c[c[G>>2]>>2]|0))break;if(!(c[(c[(c[G>>2]|0)+4>>2]|0)+((c[C>>2]|0)*20|0)+4>>2]|0)){c[P>>2]=nh(c[B>>2]|0,c[(c[(c[G>>2]|0)+4>>2]|0)+((c[C>>2]|0)*20|0)+8>>2]|0)|0;Jw(c[P>>2]|0)|0;c[(c[(c[G>>2]|0)+4>>2]|0)+((c[C>>2]|0)*20|0)+4>>2]=c[P>>2]}c[C>>2]=(c[C>>2]|0)+1}if(c[(c[K>>2]|0)+48>>2]|0){c[H>>2]=c[(c[K>>2]|0)+48>>2];c[C>>2]=0;while(1){if((c[C>>2]|0)>=(c[c[H>>2]>>2]|0))break;b[(c[(c[H>>2]|0)+4>>2]|0)+((c[C>>2]|0)*20|0)+16>>1]=0;c[C>>2]=(c[C>>2]|0)+1}c[(c[I>>2]|0)+48>>2]=c[H>>2];c[(c[K>>2]|0)+48>>2]=0}c[O>>2]=ny(c[B>>2]|0,c[(c[K>>2]|0)+36>>2]|0,0)|0;if(c[A>>2]|0){c[(c[I>>2]|0)+44>>2]=c[(c[I>>2]|0)+36>>2];c[(c[I>>2]|0)+36>>2]=c[O>>2];w=c[B>>2]|0;x=c[(c[I>>2]|0)+44>>2]|0;x=az(w,x,ny(c[B>>2]|0,c[(c[K>>2]|0)+44>>2]|0,0)|0)|0;c[(c[I>>2]|0)+44>>2]=x;x=vy(c[B>>2]|0,c[(c[K>>2]|0)+40>>2]|0,0)|0;c[(c[I>>2]|0)+40>>2]=x}else{x=az(c[B>>2]|0,c[(c[I>>2]|0)+36>>2]|0,c[O>>2]|0)|0;c[(c[I>>2]|0)+36>>2]=x}EG(c[B>>2]|0,c[I>>2]|0,c[D>>2]|0,c[c[K>>2]>>2]|0,0);x=(c[I>>2]|0)+6|0;b[x>>1]=e[x>>1]|e[(c[K>>2]|0)+6>>1]&1;if(c[(c[K>>2]|0)+60>>2]|0){c[(c[I>>2]|0)+60>>2]=c[(c[K>>2]|0)+60>>2];c[(c[K>>2]|0)+60>>2]=0}c[I>>2]=c[(c[I>>2]|0)+52>>2];c[K>>2]=c[(c[K>>2]|0)+52>>2]}Wu(c[B>>2]|0,c[L>>2]|0);c[y>>2]=1;P=c[y>>2]|0;i=Q;return P|0}function XF(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;aa=i;i=i+240|0;$=aa+8|0;j=aa;k=aa+220|0;l=aa+216|0;m=aa+212|0;n=aa+208|0;V=aa+204|0;S=aa+200|0;_=aa+196|0;u=aa+176|0;J=aa+172|0;t=aa+168|0;D=aa+164|0;E=aa+160|0;o=aa+156|0;H=aa+152|0;Y=aa+148|0;I=aa+224|0;T=aa+144|0;N=aa+140|0;Q=aa+136|0;p=aa+132|0;Z=aa+112|0;y=aa+108|0;w=aa+104|0;A=aa+100|0;K=aa+96|0;W=aa+92|0;X=aa+88|0;z=aa+84|0;x=aa+80|0;B=aa+76|0;O=aa+72|0;R=aa+68|0;q=aa+64|0;F=aa+44|0;U=aa+40|0;L=aa+36|0;v=aa+32|0;M=aa+28|0;P=aa+24|0;s=aa+20|0;G=aa+16|0;r=aa+12|0;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[V>>2]=0;c[J>>2]=0;c[D>>2]=0;c[E>>2]=0;c[t>>2]=c[c[l>>2]>>2];c[S>>2]=c[(c[m>>2]|0)+52>>2];f=c[n>>2]|0;c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];a:do if(!(c[(c[S>>2]|0)+48>>2]|0)){g=c[l>>2]|0;if(c[(c[S>>2]|0)+60>>2]|0){c[$>>2]=xy(d[(c[m>>2]|0)+4>>0]|0)|0;Ah(g,36704,$);c[V>>2]=1;break}c[_>>2]=Pw(g)|0;if((d[u>>0]|0|0)==12){Rw(c[_>>2]|0,57,c[u+4>>2]|0,c[c[c[m>>2]>>2]>>2]|0)|0;Fh(c[_>>2]|0,8);a[u>>0]=14}if((e[(c[m>>2]|0)+6>>1]|0)&512){c[V>>2]=GG(c[l>>2]|0,c[m>>2]|0,u)|0;break}b:do if((e[(c[m>>2]|0)+6>>1]|0)&8192)HG(c[l>>2]|0,c[m>>2]|0,u);else{if(c[(c[m>>2]|0)+48>>2]|0){c[k>>2]=IG(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;$=c[k>>2]|0;i=aa;return $|0}switch(d[(c[m>>2]|0)+4>>0]|0|0){case 116:{c[o>>2]=0;c[(c[S>>2]|0)+8>>2]=c[(c[m>>2]|0)+8>>2];c[(c[S>>2]|0)+12>>2]=c[(c[m>>2]|0)+12>>2];c[(c[S>>2]|0)+60>>2]=c[(c[m>>2]|0)+60>>2];c[(c[S>>2]|0)+64>>2]=c[(c[m>>2]|0)+64>>2];c[D>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[S>>2]|0,u)|0;c[(c[m>>2]|0)+60>>2]=0;c[(c[m>>2]|0)+64>>2]=0;if(c[V>>2]|0)break a;c[(c[m>>2]|0)+52>>2]=0;c[(c[m>>2]|0)+8>>2]=c[(c[S>>2]|0)+8>>2];c[(c[m>>2]|0)+12>>2]=c[(c[S>>2]|0)+12>>2];if((c[(c[m>>2]|0)+8>>2]|0)!=0?(c[o>>2]=xz(c[_>>2]|0,46,c[(c[m>>2]|0)+8>>2]|0)|0,(c[(c[m>>2]|0)+12>>2]|0)!=0):0)Vw(c[_>>2]|0,139,c[(c[m>>2]|0)+8>>2]|0,(c[(c[m>>2]|0)+12>>2]|0)+1|0,c[(c[m>>2]|0)+12>>2]|0)|0;c[E>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[m>>2]|0,u)|0;c[J>>2]=c[(c[m>>2]|0)+52>>2];c[(c[m>>2]|0)+52>>2]=c[S>>2];Z=(c[S>>2]|0)+24|0;$=(c[m>>2]|0)+24|0;Y=$;c[$>>2]=gR(c[Y>>2]|0,c[Y+4>>2]|0,c[Z>>2]|0,c[Z+4>>2]|0)|0;c[$+4>>2]=C;if(((c[(c[S>>2]|0)+60>>2]|0)!=0?($=(ky(c[(c[S>>2]|0)+60>>2]|0,H)|0)!=0,$&(c[H>>2]|0)>0):0)?(Z=(c[m>>2]|0)+24|0,X=c[Z+4>>2]|0,$=c[H>>2]|0,Y=(($|0)<0)<<31>>31,X>>>0>Y>>>0|((X|0)==(Y|0)?(c[Z>>2]|0)>>>0>$>>>0:0)):0){Z=c[H>>2]|0;$=(c[m>>2]|0)+24|0;c[$>>2]=Z;c[$+4>>2]=((Z|0)<0)<<31>>31}if(!(c[o>>2]|0))break b;Fz(c[_>>2]|0,c[o>>2]|0);break b}case 115:case 117:{a[I>>0]=0;c[T>>2]=1;if((d[u>>0]|0|0)==(c[T>>2]|0))c[Y>>2]=c[u+4>>2];else{X=(c[l>>2]|0)+72|0;$=c[X>>2]|0;c[X>>2]=$+1;c[Y>>2]=$;c[p>>2]=Rw(c[_>>2]|0,57,c[Y>>2]|0,0)|0;c[(c[m>>2]|0)+16>>2]=c[p>>2];$=(Sy(c[m>>2]|0)|0)+6|0;b[$>>1]=e[$>>1]|0|16}ZA(Z,c[T>>2]|0,c[Y>>2]|0);c[D>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[S>>2]|0,Z)|0;if(c[V>>2]|0)break a;if((d[(c[m>>2]|0)+4>>0]|0|0)==117)a[I>>0]=2;else a[I>>0]=1;c[(c[m>>2]|0)+52>>2]=0;c[N>>2]=c[(c[m>>2]|0)+60>>2];c[(c[m>>2]|0)+60>>2]=0;c[Q>>2]=c[(c[m>>2]|0)+64>>2];c[(c[m>>2]|0)+64>>2]=0;a[Z>>0]=a[I>>0]|0;c[E>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[m>>2]|0,Z)|0;Vu(c[t>>2]|0,c[(c[m>>2]|0)+48>>2]|0);c[J>>2]=c[(c[m>>2]|0)+52>>2];c[(c[m>>2]|0)+52>>2]=c[S>>2];c[(c[m>>2]|0)+48>>2]=0;if((d[(c[m>>2]|0)+4>>0]|0|0)==115){Z=(c[S>>2]|0)+24|0;$=(c[m>>2]|0)+24|0;X=$;Z=gR(c[X>>2]|0,c[X+4>>2]|0,c[Z>>2]|0,c[Z+4>>2]|0)|0;c[$>>2]=Z;c[$+4>>2]=C}Zu(c[t>>2]|0,c[(c[m>>2]|0)+60>>2]|0);c[(c[m>>2]|0)+60>>2]=c[N>>2];c[(c[m>>2]|0)+64>>2]=c[Q>>2];c[(c[m>>2]|0)+8>>2]=0;c[(c[m>>2]|0)+12>>2]=0;if((d[u>>0]|0|0)==(c[T>>2]|0))break b;if((d[u>>0]|0|0)==9){c[K>>2]=c[m>>2];while(1){if(!(c[(c[K>>2]|0)+52>>2]|0))break;c[K>>2]=c[(c[K>>2]|0)+52>>2]}uG(c[l>>2]|0,c[(c[K>>2]|0)+32>>2]|0,c[c[K>>2]>>2]|0)}c[w>>2]=Cz(c[_>>2]|0)|0;c[y>>2]=Cz(c[_>>2]|0)|0;aG(c[l>>2]|0,c[m>>2]|0,c[w>>2]|0);Rw(c[_>>2]|0,108,c[Y>>2]|0,c[w>>2]|0)|0;c[A>>2]=Bz(c[_>>2]|0)|0;hG(c[l>>2]|0,c[m>>2]|0,c[c[m>>2]>>2]|0,c[Y>>2]|0,0,0,u,c[y>>2]|0,c[w>>2]|0);Gz(c[_>>2]|0,c[y>>2]|0);Rw(c[_>>2]|0,7,c[Y>>2]|0,c[A>>2]|0)|0;Gz(c[_>>2]|0,c[w>>2]|0);Rw(c[_>>2]|0,61,c[Y>>2]|0,0)|0;break b}default:{$=(c[l>>2]|0)+72|0;Z=c[$>>2]|0;c[$>>2]=Z+1;c[W>>2]=Z;Z=(c[l>>2]|0)+72|0;$=c[Z>>2]|0;c[Z>>2]=$+1;c[X>>2]=$;c[q>>2]=Rw(c[_>>2]|0,57,c[W>>2]|0,0)|0;c[(c[m>>2]|0)+16>>2]=c[q>>2];$=(Sy(c[m>>2]|0)|0)+6|0;b[$>>1]=e[$>>1]|0|16;ZA(F,1,c[W>>2]|0);c[D>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[S>>2]|0,F)|0;if(c[V>>2]|0)break a;c[q>>2]=Rw(c[_>>2]|0,57,c[X>>2]|0,0)|0;c[(c[m>>2]|0)+16+4>>2]=c[q>>2];c[(c[m>>2]|0)+52>>2]=0;c[O>>2]=c[(c[m>>2]|0)+60>>2];c[(c[m>>2]|0)+60>>2]=0;c[R>>2]=c[(c[m>>2]|0)+64>>2];c[(c[m>>2]|0)+64>>2]=0;c[F+4>>2]=c[X>>2];c[E>>2]=c[(c[l>>2]|0)+472>>2];c[V>>2]=Cv(c[l>>2]|0,c[m>>2]|0,F)|0;c[J>>2]=c[(c[m>>2]|0)+52>>2];c[(c[m>>2]|0)+52>>2]=c[S>>2];Z=(c[m>>2]|0)+24|0;T=c[Z+4>>2]|0;$=(c[S>>2]|0)+24|0;Y=c[$+4>>2]|0;if(T>>>0>Y>>>0|((T|0)==(Y|0)?(c[Z>>2]|0)>>>0>(c[$>>2]|0)>>>0:0)){Y=(c[S>>2]|0)+24|0;Z=c[Y+4>>2]|0;$=(c[m>>2]|0)+24|0;c[$>>2]=c[Y>>2];c[$+4>>2]=Z}Zu(c[t>>2]|0,c[(c[m>>2]|0)+60>>2]|0);c[(c[m>>2]|0)+60>>2]=c[O>>2];c[(c[m>>2]|0)+64>>2]=c[R>>2];if((d[u>>0]|0|0)==9){c[L>>2]=c[m>>2];while(1){if(!(c[(c[L>>2]|0)+52>>2]|0))break;c[L>>2]=c[(c[L>>2]|0)+52>>2]}uG(c[l>>2]|0,c[(c[L>>2]|0)+32>>2]|0,c[c[L>>2]>>2]|0)}c[x>>2]=Cz(c[_>>2]|0)|0;c[z>>2]=Cz(c[_>>2]|0)|0;aG(c[l>>2]|0,c[m>>2]|0,c[x>>2]|0);Rw(c[_>>2]|0,108,c[W>>2]|0,c[x>>2]|0)|0;c[U>>2]=Wz(c[l>>2]|0)|0;c[B>>2]=Rw(c[_>>2]|0,101,c[W>>2]|0,c[U>>2]|0)|0;Eh(c[_>>2]|0,68,c[X>>2]|0,c[z>>2]|0,c[U>>2]|0,0)|0;_z(c[l>>2]|0,c[U>>2]|0);hG(c[l>>2]|0,c[m>>2]|0,c[c[m>>2]>>2]|0,c[W>>2]|0,0,0,u,c[z>>2]|0,c[x>>2]|0);Gz(c[_>>2]|0,c[z>>2]|0);Rw(c[_>>2]|0,7,c[W>>2]|0,c[B>>2]|0)|0;Gz(c[_>>2]|0,c[x>>2]|0);Rw(c[_>>2]|0,61,c[X>>2]|0,0)|0;Rw(c[_>>2]|0,61,c[W>>2]|0,0)|0;break b}}}while(0);JG(c[l>>2]|0,d[(c[m>>2]|0)+4>>0]|0,c[D>>2]|0,c[E>>2]|0,(d[(c[m>>2]|0)+4>>0]|0|0)!=116&1);if((e[(c[m>>2]|0)+6>>1]|0)&16){c[G>>2]=c[c[c[m>>2]>>2]>>2];c[M>>2]=Qz(c[t>>2]|0,c[G>>2]|0,1)|0;if(!(c[M>>2]|0)){c[V>>2]=7;break}c[v>>2]=0;c[s>>2]=(c[M>>2]|0)+20;while(1){if((c[v>>2]|0)>=(c[G>>2]|0))break;$=KG(c[l>>2]|0,c[m>>2]|0,c[v>>2]|0)|0;c[c[s>>2]>>2]=$;if(!(c[c[s>>2]>>2]|0))c[c[s>>2]>>2]=c[(c[t>>2]|0)+8>>2];c[v>>2]=(c[v>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+4}c[P>>2]=c[m>>2];while(1){if(!(c[P>>2]|0))break;c[v>>2]=0;while(1){if((c[v>>2]|0)>=2)break;c[r>>2]=c[(c[P>>2]|0)+16+(c[v>>2]<<2)>>2];if((c[r>>2]|0)<0)break;Lz(c[_>>2]|0,c[r>>2]|0,c[G>>2]|0);Z=c[_>>2]|0;$=c[r>>2]|0;Ih(Z,$,Vz(c[M>>2]|0)|0,-6);c[(c[P>>2]|0)+16+(c[v>>2]<<2)>>2]=-1;c[v>>2]=(c[v>>2]|0)+1}c[P>>2]=c[(c[P>>2]|0)+52>>2]}Rz(c[M>>2]|0)}}else{$=c[l>>2]|0;c[j>>2]=xy(d[(c[m>>2]|0)+4>>0]|0)|0;Ah($,36656,j);c[V>>2]=1}while(0);c[(c[n>>2]|0)+8>>2]=c[u+8>>2];c[(c[n>>2]|0)+12>>2]=c[u+12>>2];Wu(c[t>>2]|0,c[J>>2]|0);c[k>>2]=c[V>>2];$=c[k>>2]|0;i=aa;return $|0}function YF(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=0;gz(c[e>>2]|0,b);i=d;return c[b>>2]|0}function ZF(a,b,f,g){a=a|0;b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;o=p+4|0;n=p;c[j>>2]=a;c[k>>2]=b;c[l>>2]=f;c[m>>2]=g;c[n>>2]=0;if(!(c[l>>2]|0)){c[h>>2]=0;f=c[h>>2]|0;i=p;return f|0}if((e[(c[k>>2]|0)+6>>1]|0)&8200){c[h>>2]=0;f=c[h>>2]|0;i=p;return f|0}if(c[(c[k>>2]|0)+60>>2]|0){c[h>>2]=0;f=c[h>>2]|0;i=p;return f|0}while(1){if((d[c[l>>2]>>0]|0|0)!=72)break;f=ZF(c[j>>2]|0,c[k>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[m>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+f;c[l>>2]=c[(c[l>>2]|0)+12>>2]}if(c[(c[l>>2]|0)+4>>2]&1){c[h>>2]=0;f=c[h>>2]|0;i=p;return f|0}a:do if(ED(c[l>>2]|0,c[m>>2]|0)|0){c[n>>2]=(c[n>>2]|0)+1;while(1){if(!(c[k>>2]|0))break a;c[o>>2]=ny(c[j>>2]|0,c[l>>2]|0,0)|0;c[o>>2]=DG(c[j>>2]|0,c[o>>2]|0,c[m>>2]|0,c[c[k>>2]>>2]|0)|0;f=az(c[j>>2]|0,c[(c[k>>2]|0)+36>>2]|0,c[o>>2]|0)|0;c[(c[k>>2]|0)+36>>2]=f;c[k>>2]=c[(c[k>>2]|0)+52>>2]}}while(0);c[h>>2]=c[n>>2];f=c[h>>2]|0;i=p;return f|0}function _F(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+19>>0]=0;c[(c[e>>2]|0)+60>>2]=0;i=d;return}function $F(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+48|0;g=q+36|0;h=q+32|0;j=q+28|0;r=q+24|0;m=q+20|0;o=q+16|0;p=q+12|0;k=q+8|0;l=q+4|0;n=q;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[r>>2]=f;c[k>>2]=c[c[g>>2]>>2];c[m>>2]=c[c[h>>2]>>2];c[o>>2]=Qz(c[k>>2]|0,(c[m>>2]|0)-(c[j>>2]|0)|0,(c[r>>2]|0)+1|0)|0;if(!(c[o>>2]|0)){r=c[o>>2]|0;i=q;return r|0}c[l>>2]=c[j>>2];c[p>>2]=(c[(c[h>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0);while(1){if((c[l>>2]|0)>=(c[m>>2]|0))break;c[n>>2]=Ox(c[g>>2]|0,c[c[p>>2]>>2]|0)|0;if(!(c[n>>2]|0))c[n>>2]=c[(c[k>>2]|0)+8>>2];c[(c[o>>2]|0)+20+((c[l>>2]|0)-(c[j>>2]|0)<<2)>>2]=c[n>>2];a[(c[(c[o>>2]|0)+16>>2]|0)+((c[l>>2]|0)-(c[j>>2]|0))>>0]=a[(c[p>>2]|0)+12>>0]|0;c[l>>2]=(c[l>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+20}r=c[o>>2]|0;i=q;return r|0}function aG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;g=m+16|0;l=m+12|0;h=m+8|0;j=m+4|0;k=m;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[l>>2]=0;c[h>>2]=0;if(c[(c[f>>2]|0)+8>>2]|0){i=m;return}fC(c[e>>2]|0);if(!(c[(c[f>>2]|0)+60>>2]|0)){i=m;return}b=(c[e>>2]|0)+76|0;a=(c[b>>2]|0)+1|0;c[b>>2]=a;c[h>>2]=a;c[(c[f>>2]|0)+8>>2]=a;c[l>>2]=Pw(c[e>>2]|0)|0;do if(ky(c[(c[f>>2]|0)+60>>2]|0,k)|0){Rw(c[l>>2]|0,22,c[k>>2]|0,c[h>>2]|0)|0;if(!(c[k>>2]|0)){Ez(c[l>>2]|0,c[g>>2]|0)|0;break}if((c[k>>2]|0)>=0?(b=(c[f>>2]|0)+24|0,g=c[b+4>>2]|0,a=c[k>>2]|0,d=((a|0)<0)<<31>>31,g>>>0>d>>>0|((g|0)==(d|0)?(c[b>>2]|0)>>>0>a>>>0:0)):0){b=c[k>>2]|0;a=(c[f>>2]|0)+24|0;c[a>>2]=b;c[a+4>>2]=((b|0)<0)<<31>>31}}else{xA(c[e>>2]|0,c[(c[f>>2]|0)+60>>2]|0,c[h>>2]|0);xz(c[l>>2]|0,38,c[h>>2]|0)|0;Rw(c[l>>2]|0,46,c[h>>2]|0,c[g>>2]|0)|0}while(0);if(!(c[(c[f>>2]|0)+64>>2]|0)){i=m;return}b=(c[e>>2]|0)+76|0;a=(c[b>>2]|0)+1|0;c[b>>2]=a;c[j>>2]=a;c[(c[f>>2]|0)+12>>2]=a;a=(c[e>>2]|0)+76|0;c[a>>2]=(c[a>>2]|0)+1;xA(c[e>>2]|0,c[(c[f>>2]|0)+64>>2]|0,c[j>>2]|0);xz(c[l>>2]|0,38,c[j>>2]|0)|0;Vw(c[l>>2]|0,139,c[h>>2]|0,(c[j>>2]|0)+1|0,c[j>>2]|0)|0;i=m;return}function bG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;h=f+4|0;g=f;j=f+8|0;c[h>>2]=b;c[g>>2]=d;a[j>>0]=e;b=a[j>>0]|0;a[(Mz(c[h>>2]|0,c[g>>2]|0)|0)>>0]=b;i=f;return}function cG(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=aC(b[(c[e>>2]|0)+32>>1]|0)|0;i=d;return a|0}function dG(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+40>>0]|0|0}function eG(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;i=e;return a[(c[d>>2]|0)+36>>0]|0}function fG(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+48>>2]|0}function gG(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+52>>2]|0}function hG(b,f,g,h,j,k,l,m,n){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=i;i=i+144|0;P=V+124|0;Q=V+120|0;t=V+116|0;o=V+112|0;R=V+108|0;p=V+104|0;M=V+100|0;u=V+96|0;S=V+92|0;U=V+88|0;D=V+84|0;r=V+80|0;T=V+76|0;C=V+72|0;O=V+68|0;F=V+64|0;N=V+60|0;q=V+128|0;s=V+56|0;w=V+52|0;A=V+48|0;x=V+44|0;y=V+40|0;H=V+36|0;v=V+32|0;K=V+28|0;I=V+24|0;E=V+20|0;J=V+16|0;L=V+12|0;z=V+8|0;B=V+4|0;G=V;c[P>>2]=b;c[Q>>2]=f;c[t>>2]=g;c[o>>2]=h;c[R>>2]=j;c[p>>2]=k;c[M>>2]=l;c[u>>2]=m;c[S>>2]=n;c[U>>2]=c[(c[P>>2]|0)+8>>2];c[C>>2]=d[c[M>>2]>>0];c[O>>2]=c[(c[M>>2]|0)+4>>2];c[N>>2]=0;if(c[p>>2]|0)n=d[(c[p>>2]|0)+1>>0]|0;else n=0;c[r>>2]=n;if((c[R>>2]|0)!=0?(c[c[R>>2]>>2]|0)==0:0)c[R>>2]=0;if(!((c[R>>2]|0)!=0|(c[r>>2]|0)!=0))wG(c[U>>2]|0,c[(c[Q>>2]|0)+12>>2]|0,c[u>>2]|0);c[F>>2]=c[c[t>>2]>>2];if(c[(c[M>>2]|0)+8>>2]|0){if(((c[(c[M>>2]|0)+8>>2]|0)+(c[F>>2]|0)|0)>(c[(c[P>>2]|0)+76>>2]|0)){h=(c[P>>2]|0)+76|0;c[h>>2]=(c[h>>2]|0)+(c[F>>2]|0)}}else{if(c[R>>2]|0){c[N>>2]=c[c[c[R>>2]>>2]>>2];if(!((d[(c[R>>2]|0)+28>>0]|0)&1))c[N>>2]=(c[N>>2]|0)+1;h=(c[P>>2]|0)+76|0;c[h>>2]=(c[h>>2]|0)+(c[N>>2]|0)}c[(c[M>>2]|0)+8>>2]=(c[(c[P>>2]|0)+76>>2]|0)+1;h=(c[P>>2]|0)+76|0;c[h>>2]=(c[h>>2]|0)+(c[F>>2]|0)}c[(c[M>>2]|0)+12>>2]=c[F>>2];c[T>>2]=c[(c[M>>2]|0)+8>>2];a:do if((c[o>>2]|0)<0){if((c[C>>2]|0)!=3){if((c[C>>2]|0)==10|(c[C>>2]|0)==9|(c[C>>2]|0)==13)a[q>>0]=1;else a[q>>0]=0;GA(c[P>>2]|0,c[t>>2]|0,c[T>>2]|0,0,a[q>>0]|0)|0}}else{c[D>>2]=0;while(1){if((c[D>>2]|0)>=(c[F>>2]|0))break a;Vw(c[U>>2]|0,47,c[o>>2]|0,c[D>>2]|0,(c[T>>2]|0)+(c[D>>2]|0)|0)|0;c[D>>2]=(c[D>>2]|0)+1}}while(0);if(c[r>>2]|0){switch(d[(c[p>>2]|0)+1>>0]|0|0){case 2:{c[A>>2]=(c[(c[P>>2]|0)+76>>2]|0)+1;r=(c[P>>2]|0)+76|0;c[r>>2]=(c[r>>2]|0)+(c[F>>2]|0);pA(c[U>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0;c[s>>2]=Mz(c[U>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0;a[c[s>>2]>>0]=25;c[(c[s>>2]|0)+4>>2]=1;c[(c[s>>2]|0)+8>>2]=c[A>>2];c[w>>2]=(Bz(c[U>>2]|0)|0)+(c[F>>2]|0);c[D>>2]=0;while(1){if((c[D>>2]|0)>=(c[F>>2]|0))break;c[x>>2]=Ox(c[P>>2]|0,c[(c[(c[t>>2]|0)+4>>2]|0)+((c[D>>2]|0)*20|0)>>2]|0)|0;n=c[U>>2]|0;m=(c[T>>2]|0)+(c[D>>2]|0)|0;if((c[D>>2]|0)<((c[F>>2]|0)-1|0))Vw(n,78,m,c[w>>2]|0,(c[A>>2]|0)+(c[D>>2]|0)|0)|0;else Vw(n,79,m,c[u>>2]|0,(c[A>>2]|0)+(c[D>>2]|0)|0)|0;Ih(c[U>>2]|0,-1,c[x>>2]|0,-4);Fh(c[U>>2]|0,-128);c[D>>2]=(c[D>>2]|0)+1}Vw(c[U>>2]|0,30,c[T>>2]|0,c[A>>2]|0,(c[F>>2]|0)-1|0)|0;break}case 1:{pA(c[U>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0;break}default:xG(c[P>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[u>>2]|0,c[F>>2]|0,c[T>>2]|0)}if(!(c[R>>2]|0))wG(c[U>>2]|0,c[(c[Q>>2]|0)+12>>2]|0,c[u>>2]|0)}b:do switch(c[C>>2]|0){case 1:{c[y>>2]=Wz(c[P>>2]|0)|0;Vw(c[U>>2]|0,49,c[T>>2]|0,c[F>>2]|0,c[y>>2]|0)|0;Rw(c[U>>2]|0,110,c[O>>2]|0,c[y>>2]|0)|0;_z(c[P>>2]|0,c[y>>2]|0);break}case 2:{Vw(c[U>>2]|0,111,c[O>>2]|0,c[T>>2]|0,c[F>>2]|0)|0;break}case 12:case 14:case 6:case 5:{c[H>>2]=kA(c[P>>2]|0,(c[N>>2]|0)+1|0)|0;Vw(c[U>>2]|0,49,c[T>>2]|0,c[F>>2]|0,(c[H>>2]|0)+(c[N>>2]|0)|0)|0;if((c[C>>2]|0)==6){c[v>>2]=(Bz(c[U>>2]|0)|0)+4;Eh(c[U>>2]|0,69,(c[O>>2]|0)+1|0,c[v>>2]|0,c[H>>2]|0,0)|0;Rw(c[U>>2]|0,110,(c[O>>2]|0)+1|0,c[H>>2]|0)|0}n=c[P>>2]|0;if(c[R>>2]|0)CG(n,c[R>>2]|0,c[Q>>2]|0,(c[H>>2]|0)+(c[N>>2]|0)|0,c[T>>2]|0,1,c[N>>2]|0);else{c[K>>2]=Wz(n)|0;Rw(c[U>>2]|0,74,c[O>>2]|0,c[K>>2]|0)|0;Vw(c[U>>2]|0,75,c[O>>2]|0,c[H>>2]|0,c[K>>2]|0)|0;Fh(c[U>>2]|0,8);_z(c[P>>2]|0,c[K>>2]|0)}nA(c[P>>2]|0,c[H>>2]|0,(c[N>>2]|0)+1|0);break}case 11:{n=SA(c[c[(c[t>>2]|0)+4>>2]>>2]|0,a[(c[M>>2]|0)+1>>0]|0)|0;a[(c[M>>2]|0)+1>>0]=n;n=c[P>>2]|0;if(c[R>>2]|0){CG(n,c[R>>2]|0,c[Q>>2]|0,c[T>>2]|0,c[T>>2]|0,1,c[N>>2]|0);break b}else{c[I>>2]=Wz(n)|0;Uw(c[U>>2]|0,49,c[T>>2]|0,1,c[I>>2]|0,(c[M>>2]|0)+1|0,1)|0;CA(c[P>>2]|0,c[T>>2]|0,1);Rw(c[U>>2]|0,110,c[O>>2]|0,c[I>>2]|0)|0;_z(c[P>>2]|0,c[I>>2]|0);break b}}case 3:{Rw(c[U>>2]|0,22,1,c[O>>2]|0)|0;break}case 10:{if(c[R>>2]|0)CG(c[P>>2]|0,c[R>>2]|0,c[Q>>2]|0,c[T>>2]|0,c[T>>2]|0,1,c[N>>2]|0);break}case 9:case 13:{if(c[R>>2]|0){CG(c[P>>2]|0,c[R>>2]|0,c[Q>>2]|0,c[T>>2]|0,c[T>>2]|0,c[F>>2]|0,c[N>>2]|0);break b}n=c[U>>2]|0;if((c[C>>2]|0)==13){xz(n,18,c[(c[M>>2]|0)+4>>2]|0)|0;break b}else{Rw(n,33,c[T>>2]|0,c[F>>2]|0)|0;CA(c[P>>2]|0,c[T>>2]|0,c[F>>2]|0);break b}}case 7:case 8:{c[B>>2]=0;c[G>>2]=c[(c[M>>2]|0)+16>>2];c[E>>2]=c[c[G>>2]>>2];c[J>>2]=Wz(c[P>>2]|0)|0;c[L>>2]=kA(c[P>>2]|0,(c[E>>2]|0)+2|0)|0;c[z>>2]=(c[L>>2]|0)+(c[E>>2]|0)+1;if((c[C>>2]|0)==8)c[B>>2]=Eh(c[U>>2]|0,69,(c[O>>2]|0)+1|0,0,c[T>>2]|0,c[F>>2]|0)|0;Vw(c[U>>2]|0,49,c[T>>2]|0,c[F>>2]|0,c[z>>2]|0)|0;if((c[C>>2]|0)==8){Rw(c[U>>2]|0,110,(c[O>>2]|0)+1|0,c[z>>2]|0)|0;Fh(c[U>>2]|0,16)}c[D>>2]=0;while(1){n=c[U>>2]|0;if((c[D>>2]|0)>=(c[E>>2]|0))break;Rw(n,31,(c[T>>2]|0)+(e[(c[(c[G>>2]|0)+4>>2]|0)+((c[D>>2]|0)*20|0)+16>>1]|0)-1|0,(c[L>>2]|0)+(c[D>>2]|0)|0)|0;c[D>>2]=(c[D>>2]|0)+1}Rw(n,73,c[O>>2]|0,(c[L>>2]|0)+(c[E>>2]|0)|0)|0;Vw(c[U>>2]|0,49,c[L>>2]|0,(c[E>>2]|0)+2|0,c[J>>2]|0)|0;Rw(c[U>>2]|0,110,c[O>>2]|0,c[J>>2]|0)|0;if(c[B>>2]|0)Fz(c[U>>2]|0,c[B>>2]|0);_z(c[P>>2]|0,c[J>>2]|0);nA(c[P>>2]|0,c[L>>2]|0,(c[E>>2]|0)+2|0);break}default:{}}while(0);if(c[R>>2]|0){i=V;return}if(!(c[(c[Q>>2]|0)+8>>2]|0)){i=V;return}Rw(c[U>>2]|0,141,c[(c[Q>>2]|0)+8>>2]|0,c[S>>2]|0)|0;i=V;return}function iG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=h;return}c[g>>2]=c[(c[e>>2]|0)+4>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;jG(c[d>>2]|0,c[c[g>>2]>>2]|0);c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+20}i=h;return}function jG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+48|0;g=d+32|0;e=d+28|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+4>>2]=202;c[f+8>>2]=203;c[f+24>>2]=c[g>>2];by(f,c[e>>2]|0)|0;i=d;return}function kG(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;h=k;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;c[e>>2]=a;c[f>>2]=b;if((d[(c[e>>2]|0)+453>>0]|0|0)!=2){i=k;return}c[g>>2]=c[(c[e>>2]|0)+8>>2];b=c[c[e>>2]>>2]|0;c[h>>2]=c[f>>2];c[j>>2]=Bh(b,36633,h)|0;Uw(c[g>>2]|0,161,c[(c[e>>2]|0)+468>>2]|0,0,0,c[j>>2]|0,-1)|0;i=k;return}function lG(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+37>>0]|0|0}function mG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;k=f+4|0;g=f;c[j>>2]=a;c[h>>2]=b;c[k>>2]=d;c[g>>2]=e;Vw(c[(c[j>>2]|0)+8>>2]|0,29,c[h>>2]|0,c[k>>2]|0,c[g>>2]|0)|0;oA(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0);i=f;return}function nG(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+64|0;f=v+56|0;g=v+52|0;u=v+48|0;k=v+44|0;t=v+40|0;h=v+36|0;p=v+32|0;n=v+28|0;m=v+24|0;j=v+20|0;s=v+16|0;r=v+12|0;o=v+8|0;q=v+4|0;l=v;c[f>>2]=b;c[g>>2]=d;c[u>>2]=c[(c[f>>2]|0)+8>>2];c[t>>2]=0;c[h>>2]=0;a[c[g>>2]>>0]=1;c[k>>2]=0;c[p>>2]=c[(c[g>>2]|0)+40>>2];while(1){if((c[k>>2]|0)>=(c[(c[g>>2]|0)+44>>2]|0))break;c[j>>2]=0;c[r>>2]=c[(c[c[p>>2]>>2]|0)+20>>2];if(c[r>>2]|0){c[m>>2]=c[c[r>>2]>>2];c[s>>2]=kA(c[f>>2]|0,c[m>>2]|0)|0;GA(c[f>>2]|0,c[r>>2]|0,c[s>>2]|0,0,1)|0}else{c[m>>2]=0;c[s>>2]=0}if((c[(c[p>>2]|0)+12>>2]|0)>=0){c[j>>2]=Cz(c[u>>2]|0)|0;xG(c[f>>2]|0,c[(c[p>>2]|0)+12>>2]|0,c[j>>2]|0,1,c[s>>2]|0)}if((e[(c[(c[p>>2]|0)+4>>2]|0)+2>>1]|0)&32){c[o>>2]=0;c[l>>2]=0;c[q>>2]=c[(c[r>>2]|0)+4>>2];while(1){if(c[o>>2]|0)break;if((c[l>>2]|0)>=(c[m>>2]|0))break;c[o>>2]=Ox(c[f>>2]|0,c[c[q>>2]>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+20}if(!(c[o>>2]|0))c[o>>2]=c[(c[c[f>>2]>>2]|0)+8>>2];if((c[t>>2]|0)==0?(c[(c[g>>2]|0)+36>>2]|0)!=0:0){d=(c[f>>2]|0)+76|0;b=(c[d>>2]|0)+1|0;c[d>>2]=b;c[t>>2]=b}Uw(c[u>>2]|0,34,c[t>>2]|0,0,0,c[o>>2]|0,-4)|0}Uw(c[u>>2]|0,143,0,c[s>>2]|0,c[(c[p>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+4>>2]|0,-5)|0;Fh(c[u>>2]|0,c[m>>2]&255);CA(c[f>>2]|0,c[s>>2]|0,c[m>>2]|0);nA(c[f>>2]|0,c[s>>2]|0,c[m>>2]|0);if(c[j>>2]|0){Gz(c[u>>2]|0,c[j>>2]|0);fC(c[f>>2]|0)}c[k>>2]=(c[k>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+16}if(c[t>>2]|0)c[h>>2]=xz(c[u>>2]|0,45,c[t>>2]|0)|0;fC(c[f>>2]|0);c[k>>2]=0;c[n>>2]=c[(c[g>>2]|0)+28>>2];while(1){if((c[k>>2]|0)>=(c[(c[g>>2]|0)+36>>2]|0))break;xA(c[f>>2]|0,c[(c[n>>2]|0)+20>>2]|0,c[(c[n>>2]|0)+16>>2]|0);c[k>>2]=(c[k>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+24}a[c[g>>2]>>0]=0;fC(c[f>>2]|0);if(!(c[h>>2]|0)){i=v;return}Fz(c[u>>2]|0,c[h>>2]|0);i=v;return}function oG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+20|0;d=j+16|0;h=j+12|0;e=j+8|0;f=j+4|0;g=j;c[k>>2]=a;c[d>>2]=b;c[h>>2]=c[(c[k>>2]|0)+8>>2];c[e>>2]=0;c[f>>2]=c[(c[d>>2]|0)+40>>2];while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+44>>2]|0))break;c[g>>2]=c[(c[c[f>>2]>>2]|0)+20>>2];if(c[g>>2]|0)b=c[c[g>>2]>>2]|0;else b=0;Uw(c[h>>2]|0,145,c[(c[f>>2]|0)+8>>2]|0,b,0,c[(c[f>>2]|0)+4>>2]|0,-5)|0;c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)+16}i=j;return}function pG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+48|0;l=m;d=m+32|0;e=m+28|0;k=m+24|0;f=m+20|0;h=m+16|0;n=m+12|0;g=m+8|0;j=m+4|0;c[d>>2]=a;c[e>>2]=b;c[k>>2]=c[(c[d>>2]|0)+8>>2];c[n>>2]=(c[(c[e>>2]|0)+44>>2]|0)+(c[(c[e>>2]|0)+32>>2]|0);if(!(c[n>>2]|0)){i=m;return}Vw(c[k>>2]|0,25,0,c[(c[e>>2]|0)+16>>2]|0,c[(c[e>>2]|0)+20>>2]|0)|0; -c[h>>2]=c[(c[e>>2]|0)+40>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+44>>2]|0))break;do if((c[(c[h>>2]|0)+12>>2]|0)>=0){c[g>>2]=c[c[h>>2]>>2];if((c[(c[g>>2]|0)+20>>2]|0)!=0?(c[c[(c[g>>2]|0)+20>>2]>>2]|0)==1:0){c[j>>2]=$F(c[d>>2]|0,c[(c[g>>2]|0)+20>>2]|0,0,0)|0;Uw(c[k>>2]|0,57,c[(c[h>>2]|0)+12>>2]|0,0,0,c[j>>2]|0,-6)|0;break}Ah(c[d>>2]|0,36582,l);c[(c[h>>2]|0)+12>>2]=-1}while(0);c[f>>2]=(c[f>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+16}i=m;return}function qG(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;k=l+4|0;j=l;c[g>>2]=a;c[h>>2]=b;if((((c[(c[g>>2]|0)+36>>2]|0)==0?(c[c[c[g>>2]>>2]>>2]|0)==1:0)?(c[c[(c[g>>2]|0)+32>>2]>>2]|0)==1:0)?(c[(c[(c[g>>2]|0)+32>>2]|0)+8+20>>2]|0)==0:0){c[k>>2]=c[(c[(c[g>>2]|0)+32>>2]|0)+8+16>>2];c[j>>2]=c[c[(c[c[g>>2]>>2]|0)+4>>2]>>2];if((d[(c[k>>2]|0)+42>>0]|0)&16){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}if((d[c[j>>2]>>0]|0|0)!=153){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}if(!(c[(c[h>>2]|0)+44>>2]|0)){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}if(!((e[(c[(c[(c[h>>2]|0)+40>>2]|0)+4>>2]|0)+2>>1]|0)&256)){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}if(c[(c[j>>2]|0)+4>>2]&16){c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}else{c[f>>2]=c[k>>2];k=c[f>>2]|0;i=l;return k|0}}c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}function rG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;l=n;j=n+28|0;k=n+24|0;g=n+20|0;h=n+16|0;m=n+12|0;c[j>>2]=b;c[k>>2]=e;c[g>>2]=f;if((d[(c[j>>2]|0)+453>>0]|0|0)!=2){i=n;return}if(c[g>>2]|0)if(!((d[(c[k>>2]|0)+42>>0]|0)&32))f=1;else f=(a[(c[g>>2]|0)+55>>0]&3|0)==2^1;else f=0;c[h>>2]=f&1;b=c[c[j>>2]>>2]|0;e=(c[h>>2]|0)!=0?36541:19266;if(c[h>>2]|0)f=c[c[g>>2]>>2]|0;else f=19266;c[l>>2]=c[c[k>>2]>>2];c[l+4>>2]=e;c[l+8>>2]=f;c[m>>2]=Bh(b,36564,l)|0;Uw(c[(c[j>>2]|0)+8>>2]|0,161,c[(c[j>>2]|0)+468>>2]|0,0,0,c[m>>2]|0,-1)|0;i=n;return}function sG(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;g=l+12|0;j=l+8|0;h=l+4|0;k=l;c[e>>2]=a;c[f>>2]=b;c[g>>2]=0;c[c[f>>2]>>2]=0;do if((((c[(c[e>>2]|0)+44>>2]|0)==1?(c[j>>2]=c[c[(c[e>>2]|0)+40>>2]>>2],c[h>>2]=c[(c[j>>2]|0)+20>>2],(c[h>>2]|0)!=0):0)?(c[c[h>>2]>>2]|0)==1:0)?(d[c[c[(c[h>>2]|0)+4>>2]>>2]>>0]|0|0)==154:0){c[k>>2]=c[(c[j>>2]|0)+8>>2];if(!(Td(c[k>>2]|0,36533)|0)){c[g>>2]=1;c[c[f>>2]>>2]=c[h>>2];break}if(!(Td(c[k>>2]|0,36537)|0)){c[g>>2]=2;c[c[f>>2]>>2]=c[h>>2]}}while(0);i=l;return c[g>>2]&255|0}function tG(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+96|0;s=E+84|0;h=E+80|0;B=E+76|0;t=E+72|0;u=E+68|0;D=E+64|0;C=E+60|0;v=E+56|0;A=E+52|0;j=E+48|0;z=E+44|0;q=E+40|0;w=E+36|0;m=E+32|0;x=E+28|0;y=E+24|0;o=E+20|0;n=E+16|0;p=E+12|0;l=E+8|0;k=E+4|0;r=E;c[s>>2]=a;c[h>>2]=b;c[B>>2]=e;c[t>>2]=f;c[u>>2]=g;c[D>>2]=c[(c[s>>2]|0)+8>>2];c[C>>2]=c[(c[B>>2]|0)+24>>2];c[v>>2]=Cz(c[D>>2]|0)|0;c[j>>2]=0;c[q>>2]=c[c[B>>2]>>2];c[w>>2]=d[c[u>>2]>>0];c[m>>2]=c[(c[u>>2]|0)+4>>2];if(c[(c[B>>2]|0)+16>>2]|0){Rw(c[D>>2]|0,14,c[(c[B>>2]|0)+12>>2]|0,c[(c[B>>2]|0)+16>>2]|0)|0;Ez(c[D>>2]|0,c[C>>2]|0)|0;Gz(c[D>>2]|0,c[(c[B>>2]|0)+16>>2]|0)}c[z>>2]=c[(c[B>>2]|0)+8>>2];if((c[w>>2]|0)==9|(c[w>>2]|0)==13){c[y>>2]=0;c[x>>2]=c[(c[u>>2]|0)+8>>2];c[p>>2]=c[t>>2]}else{c[y>>2]=Wz(c[s>>2]|0)|0;c[x>>2]=Wz(c[s>>2]|0)|0;c[p>>2]=1}c[o>>2]=(c[c[q>>2]>>2]|0)-(c[(c[B>>2]|0)+4>>2]|0);if((d[(c[B>>2]|0)+28>>0]|0)&1){e=(c[s>>2]|0)+76|0;a=(c[e>>2]|0)+1|0;c[e>>2]=a;c[r>>2]=a;a=(c[s>>2]|0)+72|0;e=c[a>>2]|0;c[a>>2]=e+1;c[n>>2]=e;if(c[(c[B>>2]|0)+16>>2]|0)c[j>>2]=UA(c[s>>2]|0)|0;Vw(c[D>>2]|0,60,c[n>>2]|0,c[r>>2]|0,(c[o>>2]|0)+1+(c[p>>2]|0)|0)|0;if(c[j>>2]|0)Fz(c[D>>2]|0,c[j>>2]|0);c[A>>2]=1+(Rw(c[D>>2]|0,106,c[z>>2]|0,c[C>>2]|0)|0);wG(c[D>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[v>>2]|0);Vw(c[D>>2]|0,100,c[z>>2]|0,c[r>>2]|0,c[n>>2]|0)|0;c[k>>2]=0}else{c[A>>2]=1+(Rw(c[D>>2]|0,107,c[z>>2]|0,c[C>>2]|0)|0);wG(c[D>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[v>>2]|0);c[n>>2]=c[z>>2];c[k>>2]=1}c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[p>>2]|0))break;Vw(c[D>>2]|0,47,c[n>>2]|0,(c[o>>2]|0)+(c[k>>2]|0)+(c[l>>2]|0)|0,(c[x>>2]|0)+(c[l>>2]|0)|0)|0;c[l>>2]=(c[l>>2]|0)+1}a:do switch(c[w>>2]|0){case 12:{Rw(c[D>>2]|0,74,c[m>>2]|0,c[y>>2]|0)|0;Vw(c[D>>2]|0,75,c[m>>2]|0,c[x>>2]|0,c[y>>2]|0)|0;Fh(c[D>>2]|0,8);break}case 11:{Uw(c[D>>2]|0,49,c[x>>2]|0,1,c[y>>2]|0,(c[u>>2]|0)+1|0,1)|0;CA(c[s>>2]|0,c[x>>2]|0,1);Rw(c[D>>2]|0,110,c[m>>2]|0,c[y>>2]|0)|0;break}case 10:{mG(c[s>>2]|0,c[x>>2]|0,c[m>>2]|0,1);break}default:{h=c[D>>2]|0;j=c[u>>2]|0;if((c[w>>2]|0)==9){Rw(h,33,c[j+8>>2]|0,c[t>>2]|0)|0;CA(c[s>>2]|0,c[(c[u>>2]|0)+8>>2]|0,c[t>>2]|0);break a}else{xz(h,18,c[j+4>>2]|0)|0;break a}}}while(0);if(c[y>>2]|0){_z(c[s>>2]|0,c[x>>2]|0);_z(c[s>>2]|0,c[y>>2]|0)}Gz(c[D>>2]|0,c[v>>2]|0);k=c[D>>2]|0;j=c[z>>2]|0;h=c[A>>2]|0;if((d[(c[B>>2]|0)+28>>0]|0)&1)Rw(k,3,j,h)|0;else Rw(k,7,j,h)|0;if(!(c[(c[B>>2]|0)+12>>2]|0)){B=c[D>>2]|0;D=c[C>>2]|0;Gz(B,D);i=E;return}xz(c[D>>2]|0,15,c[(c[B>>2]|0)+12>>2]|0)|0;B=c[D>>2]|0;D=c[C>>2]|0;Gz(B,D);i=E;return}function uG(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+80|0;v=A+8|0;u=A;h=A+72|0;j=A+68|0;k=A+64|0;t=A+60|0;n=A+56|0;p=A+52|0;l=A+48|0;m=A+44|0;s=A+40|0;q=A+36|0;y=A+32|0;r=A+28|0;x=A+24|0;o=A+20|0;z=A+16|0;w=A+12|0;c[h>>2]=e;c[j>>2]=f;c[k>>2]=g;c[t>>2]=c[(c[h>>2]|0)+8>>2];c[l>>2]=c[c[h>>2]>>2];if(a[(c[h>>2]|0)+453>>0]|0){i=A;return}if(d[(c[h>>2]|0)+16>>0]|0){i=A;return}if(d[(c[l>>2]|0)+65>>0]|0){i=A;return}a[(c[h>>2]|0)+16>>0]=1;c[m>>2]=(c[(c[l>>2]|0)+24>>2]&4|0)!=0&1;c[s>>2]=(c[(c[l>>2]|0)+24>>2]&64|0)!=0&1;OB(c[t>>2]|0,c[c[k>>2]>>2]|0);c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[c[k>>2]>>2]|0))break;c[q>>2]=c[(c[(c[k>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)>>2];do if(c[q>>2]|0){if(c[(c[(c[k>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+4>>2]|0){c[y>>2]=c[(c[(c[k>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+4>>2];PB(c[t>>2]|0,c[n>>2]|0,0,c[y>>2]|0,-1)|0;break}if((d[c[q>>2]>>0]|0)!=152?(d[c[q>>2]>>0]|0)!=154:0){c[w>>2]=c[(c[(c[k>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+8>>2];g=c[l>>2]|0;if(!(c[w>>2]|0)){c[v>>2]=(c[n>>2]|0)+1;g=Bh(g,36524,v)|0}else g=nh(g,c[w>>2]|0)|0;c[w>>2]=g;PB(c[t>>2]|0,c[n>>2]|0,0,c[w>>2]|0,170)|0;break}c[o>>2]=b[(c[q>>2]|0)+32>>1];c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[c[j>>2]>>2]|0))break;if((c[(c[j>>2]|0)+8+((c[p>>2]|0)*72|0)+44>>2]|0)==(c[(c[q>>2]|0)+28>>2]|0))break;c[p>>2]=(c[p>>2]|0)+1}c[r>>2]=c[(c[j>>2]|0)+8+((c[p>>2]|0)*72|0)+16>>2];if((c[o>>2]|0)<0)c[o>>2]=b[(c[r>>2]|0)+32>>1];if((c[o>>2]|0)<0)c[x>>2]=25592;else c[x>>2]=c[(c[(c[r>>2]|0)+4>>2]|0)+((c[o>>2]|0)*24|0)>>2];if(!((c[s>>2]|0)!=0|(c[m>>2]|0)!=0)){e=c[t>>2]|0;f=c[n>>2]|0;PB(e,f,0,nh(c[l>>2]|0,c[(c[(c[k>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+8>>2]|0)|0,170)|0;break}if(c[m>>2]|0){c[z>>2]=0;f=c[l>>2]|0;e=c[x>>2]|0;c[u>>2]=c[c[r>>2]>>2];c[u+4>>2]=e;c[z>>2]=Bh(f,31016,u)|0;PB(c[t>>2]|0,c[n>>2]|0,0,c[z>>2]|0,170)|0;break}else{PB(c[t>>2]|0,c[n>>2]|0,0,c[x>>2]|0,-1)|0;break}}while(0);c[n>>2]=(c[n>>2]|0)+1}vG(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0);i=A;return}function vG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+64|0;m=l+56|0;n=l+52|0;e=l+48|0;j=l+44|0;f=l+40|0;h=l+8|0;g=l+4|0;k=l;c[m>>2]=a;c[n>>2]=b;c[e>>2]=d;c[j>>2]=c[(c[m>>2]|0)+8>>2];c[h+4>>2]=c[n>>2];c[h>>2]=c[m>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;c[g>>2]=c[(c[(c[e>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)>>2];c[k>>2]=Mx(h,c[g>>2]|0,0)|0;PB(c[j>>2]|0,c[f>>2]|0,1,c[k>>2]|0,-1)|0;c[f>>2]=(c[f>>2]|0)+1}i=l;return}function wG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if((c[f>>2]|0)<=0){i=h;return}Vw(c[e>>2]|0,138,c[f>>2]|0,c[g>>2]|0,1)|0;i=h;return}function xG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+32|0;j=g+24|0;k=g+20|0;o=g+16|0;m=g+12|0;n=g+8|0;l=g+4|0;h=g;c[j>>2]=a;c[k>>2]=b;c[o>>2]=d;c[m>>2]=e;c[n>>2]=f;c[l>>2]=c[(c[j>>2]|0)+8>>2];c[h>>2]=Wz(c[j>>2]|0)|0;Eh(c[l>>2]|0,69,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0)|0;Vw(c[l>>2]|0,49,c[n>>2]|0,c[m>>2]|0,c[h>>2]|0)|0;Rw(c[l>>2]|0,110,c[k>>2]|0,c[h>>2]|0)|0;_z(c[j>>2]|0,c[h>>2]|0);i=g;return}function yG(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+80|0;t=A+64|0;h=A+60|0;u=A+56|0;w=A+52|0;q=A+48|0;z=A+44|0;r=A+40|0;x=A+36|0;p=A+32|0;m=A+28|0;k=A+24|0;j=A+20|0;l=A+16|0;o=A+12|0;s=A+8|0;n=A+4|0;y=A;v=A+68|0;c[h>>2]=f;c[u>>2]=g;c[q>>2]=c[(c[h>>2]|0)+24>>2];c[z>>2]=c[c[q>>2]>>2];c[r>>2]=c[(c[q>>2]|0)+4>>2];c[x>>2]=c[(c[q>>2]|0)+12>>2];switch(d[c[u>>2]>>0]|0){case 152:case 154:{a:do if(c[r>>2]|0){c[p>>2]=(c[r>>2]|0)+8;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[c[r>>2]>>2]|0))break a;if((c[(c[u>>2]|0)+28>>2]|0)==(c[(c[p>>2]|0)+44>>2]|0))break;c[w>>2]=(c[w>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+72}c[m>>2]=c[(c[x>>2]|0)+28>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[(c[x>>2]|0)+32>>2]|0))break;if((c[(c[m>>2]|0)+4>>2]|0)==(c[(c[u>>2]|0)+28>>2]|0)?(c[(c[m>>2]|0)+8>>2]|0)==(b[(c[u>>2]|0)+32>>1]|0):0)break;c[k>>2]=(c[k>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+24}if((c[k>>2]|0)>=(c[(c[x>>2]|0)+32>>2]|0)?(y=AG(c[c[z>>2]>>2]|0,c[x>>2]|0)|0,c[k>>2]=y,(y|0)>=0):0){c[m>>2]=(c[(c[x>>2]|0)+28>>2]|0)+((c[k>>2]|0)*24|0);c[c[m>>2]>>2]=c[(c[u>>2]|0)+44>>2];c[(c[m>>2]|0)+4>>2]=c[(c[u>>2]|0)+28>>2];c[(c[m>>2]|0)+8>>2]=b[(c[u>>2]|0)+32>>1];y=(c[z>>2]|0)+76|0;z=(c[y>>2]|0)+1|0;c[y>>2]=z;c[(c[m>>2]|0)+16>>2]=z;c[(c[m>>2]|0)+12>>2]=-1;c[(c[m>>2]|0)+20>>2]=c[u>>2];b:do if(c[(c[x>>2]|0)+24>>2]|0){c[o>>2]=c[(c[x>>2]|0)+24>>2];c[s>>2]=c[(c[o>>2]|0)+4>>2];c[l>>2]=c[c[o>>2]>>2];c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[l>>2]|0))break b;c[n>>2]=c[c[s>>2]>>2];if(((d[c[n>>2]>>0]|0)==152?(c[(c[n>>2]|0)+28>>2]|0)==(c[(c[u>>2]|0)+28>>2]|0):0)?(b[(c[n>>2]|0)+32>>1]|0)==(b[(c[u>>2]|0)+32>>1]|0):0)break;c[j>>2]=(c[j>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+20}c[(c[m>>2]|0)+12>>2]=c[j>>2]}while(0);if((c[(c[m>>2]|0)+12>>2]|0)<0){y=(c[x>>2]|0)+12|0;z=c[y>>2]|0;c[y>>2]=z+1;c[(c[m>>2]|0)+12>>2]=z}}c[(c[u>>2]|0)+40>>2]=c[x>>2];a[c[u>>2]>>0]=-102;b[(c[u>>2]|0)+34>>1]=c[k>>2]}while(0);c[t>>2]=1;z=c[t>>2]|0;i=A;return z|0}case 153:{if((e[(c[q>>2]|0)+28>>1]&8|0)==0?(c[(c[h>>2]|0)+16>>2]|0)==(d[(c[u>>2]|0)+38>>0]|0):0){c[y>>2]=c[(c[x>>2]|0)+40>>2];c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[(c[x>>2]|0)+44>>2]|0))break;if(!(py(c[c[y>>2]>>2]|0,c[u>>2]|0,-1)|0))break;c[w>>2]=(c[w>>2]|0)+1;c[y>>2]=(c[y>>2]|0)+16}do if((c[w>>2]|0)>=(c[(c[x>>2]|0)+44>>2]|0)?(a[v>>0]=a[(c[c[z>>2]>>2]|0)+62>>0]|0,c[w>>2]=BG(c[c[z>>2]>>2]|0,c[x>>2]|0)|0,(c[w>>2]|0)>=0):0){c[y>>2]=(c[(c[x>>2]|0)+40>>2]|0)+(c[w>>2]<<4);c[c[y>>2]>>2]=c[u>>2];j=(c[z>>2]|0)+76|0;h=(c[j>>2]|0)+1|0;c[j>>2]=h;c[(c[y>>2]|0)+8>>2]=h;h=c[c[z>>2]>>2]|0;j=c[(c[u>>2]|0)+8>>2]|0;k=If(c[(c[u>>2]|0)+8>>2]|0)|0;if(c[(c[u>>2]|0)+20>>2]|0)l=c[c[(c[u>>2]|0)+20>>2]>>2]|0;else l=0;v=gi(h,j,k,l,a[v>>0]|0,0)|0;c[(c[y>>2]|0)+4>>2]=v;if(c[(c[u>>2]|0)+4>>2]&16){v=(c[z>>2]|0)+72|0;z=c[v>>2]|0;c[v>>2]=z+1;c[(c[y>>2]|0)+12>>2]=z;break}else{c[(c[y>>2]|0)+12>>2]=-1;break}}while(0);b[(c[u>>2]|0)+34>>1]=c[w>>2];c[(c[u>>2]|0)+40>>2]=c[x>>2];c[t>>2]=1;z=c[t>>2]|0;i=A;return z|0}c[t>>2]=0;z=c[t>>2]|0;i=A;return z|0}default:{c[t>>2]=0;z=c[t>>2]|0;i=A;return z|0}}return 0}function zG(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function AG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;b=rC(c[g>>2]|0,c[(c[f>>2]|0)+28>>2]|0,24,(c[f>>2]|0)+32|0,d)|0;c[(c[f>>2]|0)+28>>2]=b;i=e;return c[d>>2]|0}function BG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;b=rC(c[g>>2]|0,c[(c[f>>2]|0)+40>>2]|0,16,(c[f>>2]|0)+44|0,d)|0;c[(c[f>>2]|0)+40>>2]=b;i=e;return c[d>>2]|0}function CG(b,f,g,h,j,k,l){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+96|0;r=J+88|0;s=J+84|0;m=J+80|0;n=J+76|0;o=J+72|0;t=J+68|0;p=J+64|0;I=J+60|0;x=J+56|0;z=J+52|0;q=J+48|0;F=J+44|0;H=J+40|0;B=J+36|0;C=J+32|0;y=J+28|0;G=J+24|0;v=J+20|0;w=J+16|0;E=J+12|0;A=J+8|0;D=J+4|0;u=J;c[r>>2]=b;c[s>>2]=f;c[m>>2]=g;c[n>>2]=h;c[o>>2]=j;c[t>>2]=k;c[p>>2]=l;c[I>>2]=c[(c[r>>2]|0)+8>>2];c[x>>2]=(d[(c[s>>2]|0)+28>>0]&1|0)==0&1;c[z>>2]=c[c[c[s>>2]>>2]>>2];c[q>>2]=(c[z>>2]|0)+(c[x>>2]|0)+(c[t>>2]|0);h=(c[r>>2]|0)+76|0;j=(c[h>>2]|0)+1|0;c[h>>2]=j;c[H>>2]=j;c[B>>2]=c[(c[s>>2]|0)+4>>2];if(c[p>>2]|0)c[F>>2]=(c[n>>2]|0)-(c[z>>2]|0)-(c[x>>2]|0);else{c[F>>2]=(c[(c[r>>2]|0)+76>>2]|0)+1;j=(c[r>>2]|0)+76|0;c[j>>2]=(c[j>>2]|0)+(c[q>>2]|0)}k=c[m>>2]|0;if(c[(c[m>>2]|0)+12>>2]|0)k=(c[k+12>>2]|0)+1|0;else k=c[k+8>>2]|0;c[y>>2]=k;m=Cz(c[I>>2]|0)|0;c[(c[s>>2]|0)+24>>2]=m;GA(c[r>>2]|0,c[c[s>>2]>>2]|0,c[F>>2]|0,c[o>>2]|0,5)|0;if(c[x>>2]|0)Rw(c[I>>2]|0,73,c[(c[s>>2]|0)+8>>2]|0,(c[F>>2]|0)+(c[z>>2]|0)|0)|0;if(!(c[p>>2]|0))mG(c[r>>2]|0,c[n>>2]|0,(c[F>>2]|0)+(c[z>>2]|0)+(c[x>>2]|0)|0,c[t>>2]|0);Vw(c[I>>2]|0,49,(c[F>>2]|0)+(c[B>>2]|0)|0,(c[q>>2]|0)-(c[B>>2]|0)|0,c[H>>2]|0)|0;if((c[B>>2]|0)>0){c[G>>2]=(c[(c[r>>2]|0)+76>>2]|0)+1;k=(c[r>>2]|0)+76|0;c[k>>2]=(c[k>>2]|0)+(c[(c[s>>2]|0)+4>>2]|0);c[A>>2]=(c[z>>2]|0)-(c[(c[s>>2]|0)+4>>2]|0)+(c[x>>2]|0);k=c[I>>2]|0;if(c[x>>2]|0)c[v>>2]=xz(k,46,(c[F>>2]|0)+(c[z>>2]|0)|0)|0;else c[v>>2]=xz(k,59,c[(c[s>>2]|0)+8>>2]|0)|0;Vw(c[I>>2]|0,42,c[G>>2]|0,c[F>>2]|0,c[(c[s>>2]|0)+4>>2]|0)|0;c[E>>2]=Mz(c[I>>2]|0,c[(c[s>>2]|0)+20>>2]|0)|0;if(a[(c[c[r>>2]>>2]|0)+65>>0]|0){i=J;return}c[(c[E>>2]|0)+8>>2]=(c[A>>2]|0)+(c[t>>2]|0);c[D>>2]=c[(c[E>>2]|0)+16>>2];kR(c[(c[D>>2]|0)+16>>2]|0,0,e[(c[D>>2]|0)+6>>1]|0)|0;Ih(c[I>>2]|0,-1,c[D>>2]|0,-6);D=$F(c[r>>2]|0,c[c[s>>2]>>2]|0,c[B>>2]|0,(e[(c[D>>2]|0)+8>>1]|0)-1|0)|0;c[(c[E>>2]|0)+16>>2]=D;c[w>>2]=Bz(c[I>>2]|0)|0;Vw(c[I>>2]|0,43,(c[w>>2]|0)+1|0,0,(c[w>>2]|0)+1|0)|0;D=Cz(c[I>>2]|0)|0;c[(c[s>>2]|0)+16>>2]=D;D=(c[r>>2]|0)+76|0;E=(c[D>>2]|0)+1|0;c[D>>2]=E;c[(c[s>>2]|0)+12>>2]=E;Rw(c[I>>2]|0,14,c[(c[s>>2]|0)+12>>2]|0,c[(c[s>>2]|0)+16>>2]|0)|0;xz(c[I>>2]|0,120,c[(c[s>>2]|0)+8>>2]|0)|0;if(c[y>>2]|0)Rw(c[I>>2]|0,46,c[y>>2]|0,c[(c[s>>2]|0)+24>>2]|0)|0;Fz(c[I>>2]|0,c[v>>2]|0);mG(c[r>>2]|0,c[F>>2]|0,c[G>>2]|0,c[(c[s>>2]|0)+4>>2]|0);Fz(c[I>>2]|0,c[w>>2]|0)}if(d[(c[s>>2]|0)+28>>0]&1)c[C>>2]=109;else c[C>>2]=110;Rw(c[I>>2]|0,c[C>>2]|0,c[(c[s>>2]|0)+8>>2]|0,c[H>>2]|0)|0;if(!(c[y>>2]|0)){i=J;return}c[u>>2]=Vw(c[I>>2]|0,140,c[y>>2]|0,0,1)|0;xz(c[I>>2]|0,105,c[(c[s>>2]|0)+8>>2]|0)|0;xz(c[I>>2]|0,95,c[(c[s>>2]|0)+8>>2]|0)|0;Fz(c[I>>2]|0,c[u>>2]|0);i=J;return}function DG(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;m=q+20|0;j=q+16|0;n=q+12|0;o=q+8|0;p=q+4|0;k=q;c[j>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;if(!(c[n>>2]|0)){c[m>>2]=0;p=c[m>>2]|0;i=q;return p|0}do if((d[c[n>>2]>>0]|0)==152?(c[(c[n>>2]|0)+28>>2]|0)==(c[o>>2]|0):0)if((b[(c[n>>2]|0)+32>>1]|0)<0){a[c[n>>2]>>0]=101;break}else{c[k>>2]=ny(c[j>>2]|0,c[(c[(c[p>>2]|0)+4>>2]|0)+((b[(c[n>>2]|0)+32>>1]|0)*20|0)>>2]|0,0)|0;Zu(c[j>>2]|0,c[n>>2]|0);c[n>>2]=c[k>>2];break}else l=8;while(0);do if((l|0)==8){e=DG(c[j>>2]|0,c[(c[n>>2]|0)+12>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;c[(c[n>>2]|0)+12>>2]=e;e=DG(c[j>>2]|0,c[(c[n>>2]|0)+16>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;c[(c[n>>2]|0)+16>>2]=e;j=c[j>>2]|0;e=(c[n>>2]|0)+20|0;if(c[(c[n>>2]|0)+4>>2]&2048){EG(j,c[e>>2]|0,c[o>>2]|0,c[p>>2]|0,1);break}else{FG(j,c[e>>2]|0,c[o>>2]|0,c[p>>2]|0);break}}while(0);c[m>>2]=c[n>>2];p=c[m>>2]|0;i=q;return p|0}function EG(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;p=q+8|0;o=q+4|0;n=q;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;if(!(c[j>>2]|0)){i=q;return}while(1){FG(c[h>>2]|0,c[c[j>>2]>>2]|0,c[k>>2]|0,c[l>>2]|0);FG(c[h>>2]|0,c[(c[j>>2]|0)+40>>2]|0,c[k>>2]|0,c[l>>2]|0);FG(c[h>>2]|0,c[(c[j>>2]|0)+48>>2]|0,c[k>>2]|0,c[l>>2]|0);f=DG(c[h>>2]|0,c[(c[j>>2]|0)+44>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;c[(c[j>>2]|0)+44>>2]=f;f=DG(c[h>>2]|0,c[(c[j>>2]|0)+36>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;c[(c[j>>2]|0)+36>>2]=f;c[p>>2]=c[(c[j>>2]|0)+32>>2];c[n>>2]=c[c[p>>2]>>2];c[o>>2]=(c[p>>2]|0)+8;while(1){if((c[n>>2]|0)<=0)break;EG(c[h>>2]|0,c[(c[o>>2]|0)+20>>2]|0,c[k>>2]|0,c[l>>2]|0,1);if((d[(c[o>>2]|0)+36+1>>0]|0)>>>2&1)FG(c[h>>2]|0,c[(c[o>>2]|0)+64>>2]|0,c[k>>2]|0,c[l>>2]|0);c[n>>2]=(c[n>>2]|0)+-1;c[o>>2]=(c[o>>2]|0)+72}if(!(c[m>>2]|0)){h=9;break}f=c[(c[j>>2]|0)+52>>2]|0;c[j>>2]=f;if(!f){h=9;break}}if((h|0)==9){i=q;return}}function FG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if(!(c[g>>2]|0)){i=l;return}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[c[g>>2]>>2]|0))break;b=DG(c[f>>2]|0,c[(c[(c[g>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;c[(c[(c[g>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)>>2]=b;c[k>>2]=(c[k>>2]|0)+1}i=l;return}function GG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;g=l+12|0;j=l+8|0;h=l+4|0;k=l;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=1;c[k>>2]=0;while(1){if(!(c[(c[f>>2]|0)+52>>2]|0))break;c[f>>2]=c[(c[f>>2]|0)+52>>2];c[h>>2]=(c[h>>2]|0)+1}while(1){if(!(c[f>>2]|0)){e=7;break}c[j>>2]=c[(c[f>>2]|0)+52>>2];c[(c[f>>2]|0)+52>>2]=0;c[k>>2]=Cv(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;c[(c[f>>2]|0)+52>>2]=c[j>>2];if(c[k>>2]|0){e=7;break}d=c[h>>2]|0;a=(c[f>>2]|0)+24|0;c[a>>2]=d;c[a+4>>2]=((d|0)<0)<<31>>31;c[f>>2]=c[(c[f>>2]|0)+56>>2]}if((e|0)==7){i=l;return c[k>>2]|0}return 0}function HG(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+128|0;H=I;q=I+112|0;r=I+108|0;s=I+104|0;j=I+100|0;n=I+96|0;G=I+92|0;C=I+88|0;v=I+84|0;u=I+80|0;t=I+76|0;x=I+72|0;D=I+68|0;y=I+64|0;m=I+60|0;l=I+56|0;w=I+36|0;h=I+32|0;p=I+28|0;B=I+24|0;z=I+20|0;A=I+16|0;E=I+12|0;F=I+8|0;o=I+4|0;c[q>>2]=a;c[r>>2]=f;c[s>>2]=g;c[j>>2]=c[(c[r>>2]|0)+32>>2];c[n>>2]=c[c[c[r>>2]>>2]>>2];c[G>>2]=c[(c[q>>2]|0)+8>>2];c[C>>2]=c[(c[r>>2]|0)+52>>2];c[x>>2]=0;c[m>>2]=0;c[l>>2]=5;if(Mw(c[q>>2]|0,33,0,0,0)|0){i=I;return}c[t>>2]=Cz(c[G>>2]|0)|0;aG(c[q>>2]|0,c[r>>2]|0,c[t>>2]|0);c[z>>2]=c[(c[r>>2]|0)+60>>2];c[A>>2]=c[(c[r>>2]|0)+64>>2];c[E>>2]=c[(c[r>>2]|0)+8>>2];c[F>>2]=c[(c[r>>2]|0)+12>>2];c[(c[r>>2]|0)+64>>2]=0;c[(c[r>>2]|0)+60>>2]=0;c[(c[r>>2]|0)+12>>2]=0;c[(c[r>>2]|0)+8>>2]=0;c[B>>2]=c[(c[r>>2]|0)+48>>2];c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[c[j>>2]>>2]|0))break;f=c[h>>2]|0;if((d[(c[j>>2]|0)+8+((c[h>>2]|0)*72|0)+36+1>>0]|0)>>>5&1){k=5;break}c[h>>2]=f+1}if((k|0)==5)c[x>>2]=c[(c[j>>2]|0)+8+(f*72|0)+44>>2];k=(c[q>>2]|0)+72|0;f=c[k>>2]|0;c[k>>2]=f+1;c[y>>2]=f;f=(c[B>>2]|0)!=0;if((d[(c[r>>2]|0)+4>>0]|0|0)==115){c[l>>2]=f?8:6;j=(c[q>>2]|0)+72|0;k=c[j>>2]|0;c[j>>2]=k+1;c[m>>2]=k}else c[l>>2]=f?7:5;ZA(w,c[l>>2]|0,c[y>>2]|0);k=(c[q>>2]|0)+76|0;l=(c[k>>2]|0)+1|0;c[k>>2]=l;c[D>>2]=l;Vw(c[G>>2]|0,60,c[x>>2]|0,c[D>>2]|0,c[n>>2]|0)|0;if(c[B>>2]|0){c[o>>2]=LG(c[q>>2]|0,c[r>>2]|0,1)|0;Uw(c[G>>2]|0,57,c[y>>2]|0,(c[c[B>>2]>>2]|0)+2|0,0,c[o>>2]|0,-6)|0;c[w+16>>2]=c[B>>2]}else Rw(c[G>>2]|0,57,c[y>>2]|0,c[n>>2]|0)|0;if(c[m>>2]|0){o=Rw(c[G>>2]|0,57,c[m>>2]|0,0)|0;c[(c[r>>2]|0)+16>>2]=o;o=(c[r>>2]|0)+6|0;b[o>>1]=e[o>>1]|0|16}c[(c[r>>2]|0)+48>>2]=0;c[(c[C>>2]|0)+56>>2]=0;c[p>>2]=Cv(c[q>>2]|0,c[C>>2]|0,w)|0;c[(c[C>>2]|0)+56>>2]=c[r>>2];if(!(c[p>>2]|0)){c[v>>2]=Rw(c[G>>2]|0,108,c[y>>2]|0,c[t>>2]|0)|0;xz(c[G>>2]|0,104,c[x>>2]|0)|0;f=c[G>>2]|0;g=c[y>>2]|0;if(c[B>>2]|0)Vw(f,47,g,(c[c[B>>2]>>2]|0)+1|0,c[D>>2]|0)|0;else Rw(f,102,g,c[D>>2]|0)|0;xz(c[G>>2]|0,95,c[y>>2]|0)|0;c[u>>2]=Cz(c[G>>2]|0)|0;wG(c[G>>2]|0,c[F>>2]|0,c[u>>2]|0);hG(c[q>>2]|0,c[r>>2]|0,c[c[r>>2]>>2]|0,c[x>>2]|0,0,0,c[s>>2]|0,c[u>>2]|0,c[t>>2]|0);if(c[E>>2]|0)Rw(c[G>>2]|0,141,c[E>>2]|0,c[t>>2]|0)|0;Gz(c[G>>2]|0,c[u>>2]|0);if((e[(c[r>>2]|0)+6>>1]|0)&8)Ah(c[q>>2]|0,36805,H);else{c[(c[r>>2]|0)+52>>2]=0;Cv(c[q>>2]|0,c[r>>2]|0,w)|0;c[(c[r>>2]|0)+52>>2]=c[C>>2]}Ez(c[G>>2]|0,c[v>>2]|0)|0;Gz(c[G>>2]|0,c[t>>2]|0)}Vu(c[c[q>>2]>>2]|0,c[(c[r>>2]|0)+48>>2]|0);c[(c[r>>2]|0)+48>>2]=c[B>>2];c[(c[r>>2]|0)+60>>2]=c[z>>2];c[(c[r>>2]|0)+64>>2]=c[A>>2];i=I;return}function IG(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ca=i;i=i+224|0;q=ca+212|0;r=ca+208|0;s=ca+204|0;t=ca+200|0;j=ca+196|0;k=ca+192|0;T=ca+188|0;ba=ca+184|0;I=ca+164|0;J=ca+144|0;U=ca+140|0;V=ca+136|0;F=ca+132|0;G=ca+128|0;Y=ca+124|0;Z=ca+120|0;D=ca+116|0;E=ca+112|0;z=ca+108|0;A=ca+104|0;B=ca+100|0;y=ca+96|0;w=ca+92|0;x=ca+88|0;W=ca+84|0;X=ca+80|0;_=ca+76|0;$=ca+72|0;aa=ca+68|0;M=ca+64|0;N=ca+60|0;v=ca+56|0;P=ca+52|0;R=ca+48|0;S=ca+44|0;H=ca+40|0;p=ca+36|0;O=ca+32|0;u=ca+28|0;K=ca+24|0;L=ca+20|0;m=ca+16|0;o=ca+12|0;n=ca+8|0;l=ca+4|0;Q=ca;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[E>>2]=0;c[R>>2]=0;c[H>>2]=c[c[r>>2]>>2];c[ba>>2]=c[(c[r>>2]|0)+8>>2];c[N>>2]=Cz(c[ba>>2]|0)|0;c[M>>2]=Cz(c[ba>>2]|0)|0;c[P>>2]=d[(c[s>>2]|0)+4>>0];c[T>>2]=c[(c[s>>2]|0)+52>>2];c[p>>2]=c[(c[s>>2]|0)+48>>2];c[O>>2]=c[c[p>>2]>>2];a:do if((c[P>>2]|0)!=116){c[j>>2]=1;while(1){if(d[(c[H>>2]|0)+65>>0]|0)break a;if((c[j>>2]|0)>(c[c[c[s>>2]>>2]>>2]|0))break a;c[k>>2]=0;c[m>>2]=c[(c[p>>2]|0)+4>>2];while(1){if((c[k>>2]|0)>=(c[O>>2]|0))break;if((e[(c[m>>2]|0)+16>>1]|0|0)==(c[j>>2]|0))break;c[k>>2]=(c[k>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+20}if((c[k>>2]|0)==(c[O>>2]|0)){c[o>>2]=Jv(c[H>>2]|0,132,0)|0;if(!(c[o>>2]|0))break;f=(c[o>>2]|0)+4|0;c[f>>2]=c[f>>2]|1024;c[(c[o>>2]|0)+8>>2]=c[j>>2];c[p>>2]=Gv(c[r>>2]|0,c[p>>2]|0,c[o>>2]|0)|0;if(c[p>>2]|0){h=c[j>>2]&65535;f=c[O>>2]|0;c[O>>2]=f+1;b[(c[(c[p>>2]|0)+4>>2]|0)+(f*20|0)+16>>1]=h}}c[j>>2]=(c[j>>2]|0)+1}c[q>>2]=7;ba=c[q>>2]|0;i=ca;return ba|0}while(0);c[u>>2]=Fw(c[H>>2]|0,(c[O>>2]|0)+1<<2,0)|0;if(c[u>>2]|0){c[c[u>>2]>>2]=c[O>>2];c[j>>2]=1;c[n>>2]=c[(c[p>>2]|0)+4>>2];while(1){if((c[j>>2]|0)>(c[O>>2]|0))break;c[(c[u>>2]|0)+(c[j>>2]<<2)>>2]=(e[(c[n>>2]|0)+16>>1]|0)-1;c[j>>2]=(c[j>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+20}c[S>>2]=LG(c[r>>2]|0,c[s>>2]|0,1)|0}else c[S>>2]=0;c[(c[s>>2]|0)+48>>2]=c[p>>2];f=vy(c[c[r>>2]>>2]|0,c[p>>2]|0,0)|0;c[(c[T>>2]|0)+48>>2]=f;b:do if((c[P>>2]|0)!=116){c[l>>2]=c[c[c[s>>2]>>2]>>2];c[_>>2]=(c[(c[r>>2]|0)+76>>2]|0)+1;f=(c[r>>2]|0)+76|0;c[f>>2]=(c[f>>2]|0)+((c[l>>2]|0)+1);Rw(c[ba>>2]|0,22,0,c[_>>2]|0)|0;c[R>>2]=Qz(c[H>>2]|0,c[l>>2]|0,1)|0;if(c[R>>2]|0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[l>>2]|0))break b;f=KG(c[r>>2]|0,c[s>>2]|0,c[j>>2]|0)|0;c[(c[R>>2]|0)+20+(c[j>>2]<<2)>>2]=f;a[(c[(c[R>>2]|0)+16>>2]|0)+(c[j>>2]|0)>>0]=0;c[j>>2]=(c[j>>2]|0)+1}}}else c[_>>2]=0;while(0);c[(c[s>>2]|0)+52>>2]=0;c[(c[T>>2]|0)+56>>2]=0;yy(c[r>>2]|0,c[s>>2]|0,c[(c[s>>2]|0)+48>>2]|0,29962)|0;if(!(c[(c[T>>2]|0)+52>>2]|0))yy(c[r>>2]|0,c[T>>2]|0,c[(c[T>>2]|0)+48>>2]|0,29962)|0;aG(c[r>>2]|0,c[s>>2]|0,c[N>>2]|0);if((c[P>>2]|0)==116?(c[(c[s>>2]|0)+8>>2]|0)!=0:0){j=(c[r>>2]|0)+76|0;f=(c[j>>2]|0)+1|0;c[j>>2]=f;c[W>>2]=f;f=(c[r>>2]|0)+76|0;j=(c[f>>2]|0)+1|0;c[f>>2]=j;c[X>>2]=j;j=c[s>>2]|0;if(c[(c[s>>2]|0)+12>>2]|0)j=(c[j+12>>2]|0)+1|0;else j=c[j+8>>2]|0;Rw(c[ba>>2]|0,30,j,c[W>>2]|0)|0;Rw(c[ba>>2]|0,30,c[W>>2]|0,c[X>>2]|0)|0}else{c[X>>2]=0;c[W>>2]=0}Zu(c[H>>2]|0,c[(c[s>>2]|0)+60>>2]|0);c[(c[s>>2]|0)+60>>2]=0;Zu(c[H>>2]|0,c[(c[s>>2]|0)+64>>2]|0);c[(c[s>>2]|0)+64>>2]=0;f=(c[r>>2]|0)+76|0;p=(c[f>>2]|0)+1|0;c[f>>2]=p;c[U>>2]=p;p=(c[r>>2]|0)+76|0;f=(c[p>>2]|0)+1|0;c[p>>2]=f;c[V>>2]=f;f=(c[r>>2]|0)+76|0;p=(c[f>>2]|0)+1|0;c[f>>2]=p;c[Y>>2]=p;p=(c[r>>2]|0)+76|0;f=(c[p>>2]|0)+1|0;c[p>>2]=f;c[Z>>2]=f;ZA(I,13,c[U>>2]|0);ZA(J,13,c[V>>2]|0);c[F>>2]=(Bz(c[ba>>2]|0)|0)+1;c[v>>2]=Vw(c[ba>>2]|0,16,c[U>>2]|0,0,c[F>>2]|0)|0;c[(c[T>>2]|0)+8>>2]=c[W>>2];c[K>>2]=c[(c[r>>2]|0)+472>>2];Cv(c[r>>2]|0,c[T>>2]|0,I)|0;xC(c[ba>>2]|0,c[U>>2]|0);Fz(c[ba>>2]|0,c[v>>2]|0);c[G>>2]=(Bz(c[ba>>2]|0)|0)+1;c[v>>2]=Vw(c[ba>>2]|0,16,c[V>>2]|0,0,c[G>>2]|0)|0;c[$>>2]=c[(c[s>>2]|0)+8>>2];c[aa>>2]=c[(c[s>>2]|0)+12>>2];c[(c[s>>2]|0)+8>>2]=c[X>>2];c[(c[s>>2]|0)+12>>2]=0;c[L>>2]=c[(c[r>>2]|0)+472>>2];Cv(c[r>>2]|0,c[s>>2]|0,J)|0;c[(c[s>>2]|0)+8>>2]=c[$>>2];c[(c[s>>2]|0)+12>>2]=c[aa>>2];xC(c[ba>>2]|0,c[V>>2]|0);c[D>>2]=MG(c[r>>2]|0,c[s>>2]|0,I,c[t>>2]|0,c[Y>>2]|0,c[_>>2]|0,c[R>>2]|0,c[N>>2]|0)|0;if((c[P>>2]|0)==116|(c[P>>2]|0)==115)c[E>>2]=MG(c[r>>2]|0,c[s>>2]|0,J,c[t>>2]|0,c[Z>>2]|0,c[_>>2]|0,c[R>>2]|0,c[N>>2]|0)|0;Rz(c[R>>2]|0);if((c[P>>2]|0)==117|(c[P>>2]|0)==118){aa=c[N>>2]|0;c[z>>2]=aa;c[A>>2]=aa}else{c[z>>2]=Rw(c[ba>>2]|0,14,c[Z>>2]|0,c[E>>2]|0)|0;c[A>>2]=Rw(c[ba>>2]|0,18,c[V>>2]|0,c[N>>2]|0)|0;Ez(c[ba>>2]|0,c[z>>2]|0)|0;$=(c[T>>2]|0)+24|0;aa=(c[s>>2]|0)+24|0;_=aa;$=gR(c[_>>2]|0,c[_+4>>2]|0,c[$>>2]|0,c[$+4>>2]|0)|0;c[aa>>2]=$;c[aa+4>>2]=C}if((c[P>>2]|0)==118){c[B>>2]=c[z>>2];$=(c[s>>2]|0)+24|0;X=c[$+4>>2]|0;aa=(c[T>>2]|0)+24|0;_=c[aa+4>>2]|0;if(X>>>0>_>>>0|((X|0)==(_|0)?(c[$>>2]|0)>>>0>(c[aa>>2]|0)>>>0:0)){_=(c[T>>2]|0)+24|0;$=c[_+4>>2]|0;aa=(c[s>>2]|0)+24|0;c[aa>>2]=c[_>>2];c[aa+4>>2]=$}}else{c[B>>2]=Rw(c[ba>>2]|0,14,c[Y>>2]|0,c[D>>2]|0)|0;Rw(c[ba>>2]|0,18,c[U>>2]|0,c[N>>2]|0)|0;Ez(c[ba>>2]|0,c[B>>2]|0)|0}c[y>>2]=Rw(c[ba>>2]|0,14,c[Y>>2]|0,c[D>>2]|0)|0;Rw(c[ba>>2]|0,18,c[U>>2]|0,c[z>>2]|0)|0;Ez(c[ba>>2]|0,c[M>>2]|0)|0;do if((c[P>>2]|0)!=116)if((c[P>>2]|0)==118){c[w>>2]=c[y>>2];c[y>>2]=(c[y>>2]|0)+1;break}else{c[w>>2]=Rw(c[ba>>2]|0,18,c[U>>2]|0,c[z>>2]|0)|0;Ez(c[ba>>2]|0,c[M>>2]|0)|0;break}else c[w>>2]=c[y>>2];while(0);c[x>>2]=Bz(c[ba>>2]|0)|0;if((c[P>>2]|0)==116|(c[P>>2]|0)==115)Rw(c[ba>>2]|0,14,c[Z>>2]|0,c[E>>2]|0)|0;Rw(c[ba>>2]|0,18,c[V>>2]|0,c[B>>2]|0)|0;Ez(c[ba>>2]|0,c[M>>2]|0)|0;Fz(c[ba>>2]|0,c[v>>2]|0);Rw(c[ba>>2]|0,18,c[U>>2]|0,c[A>>2]|0)|0;Rw(c[ba>>2]|0,18,c[V>>2]|0,c[B>>2]|0)|0;Gz(c[ba>>2]|0,c[M>>2]|0);Uw(c[ba>>2]|0,41,0,0,0,c[u>>2]|0,-15)|0;Uw(c[ba>>2]|0,42,c[I+8>>2]|0,c[J+8>>2]|0,c[O>>2]|0,c[S>>2]|0,-6)|0;Fh(c[ba>>2]|0,1);Vw(c[ba>>2]|0,43,c[y>>2]|0,c[w>>2]|0,c[x>>2]|0)|0;Gz(c[ba>>2]|0,c[N>>2]|0);if((d[c[t>>2]>>0]|0|0)==9){c[Q>>2]=c[T>>2];while(1){if(!(c[(c[Q>>2]|0)+52>>2]|0))break;c[Q>>2]=c[(c[Q>>2]|0)+52>>2]}uG(c[r>>2]|0,c[(c[Q>>2]|0)+32>>2]|0,c[c[Q>>2]>>2]|0)}if(c[(c[s>>2]|0)+52>>2]|0)Wu(c[H>>2]|0,c[(c[s>>2]|0)+52>>2]|0);c[(c[s>>2]|0)+52>>2]=c[T>>2];c[(c[T>>2]|0)+56>>2]=c[s>>2];JG(c[r>>2]|0,d[(c[s>>2]|0)+4>>0]|0,c[K>>2]|0,c[L>>2]|0,0);c[q>>2]=(c[(c[r>>2]|0)+68>>2]|0)!=0&1;ba=c[q>>2]|0;i=ca;return ba|0}function JG(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;o=q;h=q+40|0;j=q+36|0;k=q+32|0;l=q+28|0;m=q+24|0;n=q+20|0;p=q+16|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;if((d[(c[h>>2]|0)+453>>0]|0|0)!=2){i=q;return}c[n>>2]=c[(c[h>>2]|0)+8>>2];a=c[c[h>>2]>>2]|0;g=c[k>>2]|0;e=c[l>>2]|0;f=(c[m>>2]|0)!=0?36749:19266;b=xy(c[j>>2]|0)|0;c[o>>2]=g;c[o+4>>2]=e;c[o+8>>2]=f;c[o+12>>2]=b;c[p>>2]=Bh(a,36768,o)|0;Uw(c[n>>2]|0,161,c[(c[h>>2]|0)+468>>2]|0,0,0,c[p>>2]|0,-1)|0;i=q;return}function KG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[(c[f>>2]|0)+52>>2]|0)c[h>>2]=KG(c[e>>2]|0,c[(c[f>>2]|0)+52>>2]|0,c[g>>2]|0)|0;else c[h>>2]=0;if(c[h>>2]|0){h=c[h>>2]|0;i=j;return h|0}if((c[g>>2]|0)>=(c[c[c[f>>2]>>2]>>2]|0)){h=c[h>>2]|0;i=j;return h|0}c[h>>2]=Ox(c[e>>2]|0,c[(c[(c[c[f>>2]>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0)|0;h=c[h>>2]|0;i=j;return h|0}function LG(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;g=r+40|0;h=r+36|0;s=r+32|0;o=r+28|0;l=r+24|0;j=r+20|0;p=r+16|0;k=r+12|0;n=r+8|0;q=r+4|0;m=r;c[g>>2]=b;c[h>>2]=d;c[s>>2]=f;c[o>>2]=c[(c[h>>2]|0)+48>>2];c[l>>2]=c[c[(c[h>>2]|0)+48>>2]>>2];c[j>>2]=c[c[g>>2]>>2];c[p>>2]=Qz(c[j>>2]|0,(c[l>>2]|0)+(c[s>>2]|0)|0,1)|0;if(!(c[p>>2]|0)){s=c[p>>2]|0;i=r;return s|0}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[l>>2]|0))break;c[n>>2]=(c[(c[o>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0);c[q>>2]=c[c[n>>2]>>2];f=c[g>>2]|0;if(c[(c[q>>2]|0)+4>>2]&256)c[m>>2]=Ox(f,c[q>>2]|0)|0;else{c[m>>2]=KG(f,c[h>>2]|0,(e[(c[n>>2]|0)+16>>1]|0)-1|0)|0;if(!(c[m>>2]|0))c[m>>2]=c[(c[j>>2]|0)+8>>2];s=By(c[g>>2]|0,c[q>>2]|0,c[c[m>>2]>>2]|0)|0;c[(c[(c[o>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)>>2]=s}c[(c[p>>2]|0)+20+(c[k>>2]<<2)>>2]=c[m>>2];a[(c[(c[p>>2]|0)+16>>2]|0)+(c[k>>2]|0)>>0]=a[(c[(c[o>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)+12>>0]|0;c[k>>2]=(c[k>>2]|0)+1}s=c[p>>2]|0;i=r;return s|0}function MG(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+80|0;m=D+64|0;n=D+60|0;o=D+56|0;p=D+52|0;q=D+48|0;r=D+44|0;s=D+40|0;t=D+36|0;u=D+32|0;C=D+28|0;y=D+24|0;v=D+20|0;w=D+16|0;x=D+12|0;z=D+8|0;B=D+4|0;A=D;c[n>>2]=b;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[u>>2]=l;c[C>>2]=c[(c[n>>2]|0)+8>>2];c[v>>2]=Bz(c[C>>2]|0)|0;c[y>>2]=Cz(c[C>>2]|0)|0;if(c[s>>2]|0){c[w>>2]=xz(c[C>>2]|0,46,c[s>>2]|0)|0;k=c[C>>2]|0;b=c[(c[p>>2]|0)+8>>2]|0;j=(c[s>>2]|0)+1|0;h=c[(c[p>>2]|0)+12>>2]|0;c[x>>2]=Uw(k,42,b,j,h,Vz(c[t>>2]|0)|0,-6)|0;Vw(c[C>>2]|0,43,(c[x>>2]|0)+2|0,c[y>>2]|0,(c[x>>2]|0)+2|0)|0;Fz(c[C>>2]|0,c[w>>2]|0);Vw(c[C>>2]|0,30,c[(c[p>>2]|0)+8>>2]|0,(c[s>>2]|0)+1|0,(c[(c[p>>2]|0)+12>>2]|0)-1|0)|0;Rw(c[C>>2]|0,22,1,c[s>>2]|0)|0}if(a[(c[c[n>>2]>>2]|0)+65>>0]|0){c[m>>2]=0;C=c[m>>2]|0;i=D;return C|0}wG(c[C>>2]|0,c[(c[o>>2]|0)+12>>2]|0,c[y>>2]|0);switch(d[c[q>>2]>>0]|0){case 12:{c[z>>2]=Wz(c[n>>2]|0)|0;c[B>>2]=Wz(c[n>>2]|0)|0;Vw(c[C>>2]|0,49,c[(c[p>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+12>>2]|0,c[z>>2]|0)|0;Rw(c[C>>2]|0,74,c[(c[q>>2]|0)+4>>2]|0,c[B>>2]|0)|0;Vw(c[C>>2]|0,75,c[(c[q>>2]|0)+4>>2]|0,c[z>>2]|0,c[B>>2]|0)|0;Fh(c[C>>2]|0,8);_z(c[n>>2]|0,c[B>>2]|0);_z(c[n>>2]|0,c[z>>2]|0);break}case 11:{h=SA(c[c[(c[c[o>>2]>>2]|0)+4>>2]>>2]|0,a[(c[q>>2]|0)+1>>0]|0)|0;a[(c[q>>2]|0)+1>>0]=h;c[A>>2]=Wz(c[n>>2]|0)|0;Uw(c[C>>2]|0,49,c[(c[p>>2]|0)+8>>2]|0,1,c[A>>2]|0,(c[q>>2]|0)+1|0,1)|0;CA(c[n>>2]|0,c[(c[p>>2]|0)+8>>2]|0,1);Rw(c[C>>2]|0,110,c[(c[q>>2]|0)+4>>2]|0,c[A>>2]|0)|0;_z(c[n>>2]|0,c[A>>2]|0);break}case 10:{mG(c[n>>2]|0,c[(c[p>>2]|0)+8>>2]|0,c[(c[q>>2]|0)+4>>2]|0,1);break}case 13:{if(!(c[(c[q>>2]|0)+8>>2]|0)){h=kA(c[n>>2]|0,c[(c[p>>2]|0)+12>>2]|0)|0;c[(c[q>>2]|0)+8>>2]=h;c[(c[q>>2]|0)+12>>2]=c[(c[p>>2]|0)+12>>2]}mG(c[n>>2]|0,c[(c[p>>2]|0)+8>>2]|0,c[(c[q>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+12>>2]|0);xz(c[C>>2]|0,18,c[(c[q>>2]|0)+4>>2]|0)|0;break}default:{Rw(c[C>>2]|0,33,c[(c[p>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+12>>2]|0)|0;CA(c[n>>2]|0,c[(c[p>>2]|0)+8>>2]|0,c[(c[p>>2]|0)+12>>2]|0)}}if(c[(c[o>>2]|0)+8>>2]|0)Rw(c[C>>2]|0,141,c[(c[o>>2]|0)+8>>2]|0,c[u>>2]|0)|0;Gz(c[C>>2]|0,c[y>>2]|0);xz(c[C>>2]|0,15,c[r>>2]|0)|0;c[m>>2]=c[v>>2];C=c[m>>2]|0;i=D;return C|0}function NG(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[c[g>>2]>>2];if(!(c[(c[k>>2]|0)+24>>2]&524288)){i=o;return}if((d[(c[j>>2]|0)+42>>0]|0)&16){i=o;return}if(c[(c[j>>2]|0)+12>>2]|0){i=o;return}c[l>>2]=0;c[n>>2]=Pw(c[g>>2]|0)|0;do if(!(Ex(c[j>>2]|0)|0)){c[m>>2]=c[(c[j>>2]|0)+16>>2];while(1){if(!(c[m>>2]|0))break;if(d[(c[m>>2]|0)+24>>0]|0)break;if(c[(c[k>>2]|0)+24>>2]&16777216)break;c[m>>2]=c[(c[m>>2]|0)+4>>2]}if(c[m>>2]|0){c[l>>2]=Cz(c[n>>2]|0)|0;Rw(c[n>>2]|0,136,1,c[l>>2]|0)|0;break}else{i=o;return}}while(0);a[(c[g>>2]|0)+442>>0]=1;f=c[g>>2]|0;Rv(f,lz(c[k>>2]|0,c[h>>2]|0,0)|0,0);a[(c[g>>2]|0)+442>>0]=0;if(!(c[(c[k>>2]|0)+24>>2]&16777216)){f=c[n>>2]|0;Rw(f,136,0,(Bz(c[n>>2]|0)|0)+2|0)|0;bA(c[g>>2]|0,787,2,0,-2,4)}if(!(c[l>>2]|0)){i=o;return}Gz(c[n>>2]|0,c[l>>2]|0);i=o;return}function OG(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r+8|0;p=r;g=r+48|0;h=r+44|0;j=r+40|0;k=r+36|0;o=r+32|0;l=r+28|0;n=r+24|0;m=r+20|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=c[c[g>>2]>>2];c[m>>2]=(c[(c[l>>2]|0)+16>>2]|0)+(c[j>>2]<<4);c[o>>2]=Pw(c[g>>2]|0)|0;ax(c[g>>2]|0,1,c[j>>2]|0);if((d[(c[h>>2]|0)+42>>0]|0)&16)Yw(c[o>>2]|0,149)|0;c[n>>2]=fx(c[g>>2]|0,c[h>>2]|0)|0;while(1){if(!(c[n>>2]|0))break;AB(c[g>>2]|0,c[n>>2]|0);c[n>>2]=c[(c[n>>2]|0)+32>>2]}if((d[(c[h>>2]|0)+42>>0]|0)&8){n=c[g>>2]|0;b=c[c[h>>2]>>2]|0;c[p>>2]=c[c[m>>2]>>2];c[p+4>>2]=b;Ow(n,37066,p)}p=c[g>>2]|0;b=(c[j>>2]|0)==1?20769:20788;n=c[c[h>>2]>>2]|0;c[q>>2]=c[c[m>>2]>>2];c[q+4>>2]=b;c[q+8>>2]=n;Ow(p,37111,q);if((c[k>>2]|0)==0?((d[(c[h>>2]|0)+42>>0]|0)&16|0)==0:0)PG(c[g>>2]|0,c[h>>2]|0);if(!((d[(c[h>>2]|0)+42>>0]|0)&16)){o=c[o>>2]|0;p=c[j>>2]|0;q=c[h>>2]|0;q=c[q>>2]|0;Uw(o,125,p,0,0,q,0)|0;q=c[g>>2]|0;p=c[j>>2]|0; -Qw(q,p);p=c[l>>2]|0;q=c[j>>2]|0;QG(p,q);i=r;return}Uw(c[o>>2]|0,151,c[j>>2]|0,0,0,c[c[h>>2]>>2]|0,0)|0;o=c[o>>2]|0;p=c[j>>2]|0;q=c[h>>2]|0;q=c[q>>2]|0;Uw(o,125,p,0,0,q,0)|0;q=c[g>>2]|0;p=c[j>>2]|0;Qw(q,p);p=c[l>>2]|0;q=c[j>>2]|0;QG(p,q);i=r;return}function PG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;d=n+28|0;e=n+24|0;k=n+20|0;g=n+16|0;l=n+12|0;j=n+8|0;h=n+4|0;f=n;c[d>>2]=a;c[e>>2]=b;c[k>>2]=c[(c[e>>2]|0)+28>>2];c[g>>2]=0;while(1){c[j>>2]=0;if(!((c[g>>2]|0)!=0?(c[k>>2]|0)>=(c[g>>2]|0):0))c[j>>2]=c[k>>2];c[l>>2]=c[(c[e>>2]|0)+8>>2];while(1){if(!(c[l>>2]|0))break;c[h>>2]=c[(c[l>>2]|0)+44>>2];if(!((c[g>>2]|0)!=0?(c[h>>2]|0)>=(c[g>>2]|0):0))m=9;if((m|0)==9?(m=0,(c[h>>2]|0)>(c[j>>2]|0)):0)c[j>>2]=c[h>>2];c[l>>2]=c[(c[l>>2]|0)+20>>2]}if(!(c[j>>2]|0))break;c[f>>2]=Dh(c[c[d>>2]>>2]|0,c[(c[e>>2]|0)+64>>2]|0)|0;qC(c[d>>2]|0,c[j>>2]|0,c[f>>2]|0);c[g>>2]=c[j>>2]}i=n;return}function QG(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=d;if(((e[(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+12>>2]|0)+78>>1]|0)&2|0)!=2){i=k;return}c[h>>2]=c[(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+12>>2]|0)+8+8>>2];while(1){if(!(c[h>>2]|0))break;c[j>>2]=c[(c[h>>2]|0)+8>>2];if(c[(c[j>>2]|0)+12>>2]|0){RG(c[f>>2]|0,c[j>>2]|0);c[(c[j>>2]|0)+4>>2]=0;b[(c[j>>2]|0)+34>>1]=0}c[h>>2]=c[c[h>>2]>>2]}j=(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+12>>2]|0)+78|0;b[j>>1]=(e[j>>1]|0)&-3;i=k;return}function RG(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=d;d=c[(c[f>>2]|0)+4>>2]|0;c[h>>2]=d;if(!d){i=j;return}c[g>>2]=0;while(1){a=c[e>>2]|0;if((c[g>>2]|0)>=(b[(c[f>>2]|0)+34>>1]|0))break;Sf(a,c[c[h>>2]>>2]|0);Zu(c[e>>2]|0,c[(c[h>>2]|0)+4>>2]|0);Sf(c[e>>2]|0,c[(c[h>>2]|0)+8>>2]|0);Sf(c[e>>2]|0,c[(c[h>>2]|0)+12>>2]|0);Sf(c[e>>2]|0,c[(c[h>>2]|0)+16>>2]|0);c[g>>2]=(c[g>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+24}Sf(a,c[(c[f>>2]|0)+4>>2]|0);i=j;return}function SG(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+144|0;h=p+128|0;j=p+124|0;k=p+120|0;l=p+116|0;m=p+112|0;o=p;n=p+80|0;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n+16>>2]=0;c[n+20>>2]=0;c[n+24>>2]=0;c[n+28>>2]=0;f=o;g=f+80|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[o>>2]=1;c[o+8+8>>2]=c[c[j>>2]>>2];c[o+8+16>>2]=c[j>>2];c[o+8+44>>2]=-1;c[n>>2]=c[h>>2];c[n+4>>2]=o;b[n+28>>1]=c[k>>2];o=(fy(n,c[l>>2]|0)|0)==0;if(!(o&(c[m>>2]|0)!=0)){i=p;return}gy(n,c[m>>2]|0)|0;i=p;return}function TG(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;b=c[e>>2]|0;if((d[c[e>>2]>>0]|0|0)==97){a[b>>0]=27;i=f;return}if((d[b>>0]|0|0)!=95){i=f;return}if((d[c[(c[e>>2]|0)+12>>2]>>0]|0|0)!=97){i=f;return}a[c[(c[e>>2]|0)+12>>2]>>0]=27;i=f;return}function UG(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k+12|0;f=k+8|0;g=k+4|0;h=k;c[f>>2]=a;c[g>>2]=d;c[h>>2]=e;while(1){e=c[g>>2]|0;c[g>>2]=e+-1;if((e|0)<=0){f=5;break}d=c[h>>2]|0;e=c[f>>2]|0;c[f>>2]=e+2;if((d|0)==(b[e>>1]|0)){f=4;break}}if((f|0)==4){c[j>>2]=1;j=c[j>>2]|0;i=k;return j|0}else if((f|0)==5){c[j>>2]=0;j=c[j>>2]|0;i=k;return j|0}return 0}function VG(a){a=a|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+12|0;j=l+8|0;h=l+4|0;g=l;k=l+16|0;c[f>>2]=a;c[j>>2]=0;c[g>>2]=c[(c[(c[f>>2]|0)+12>>2]|0)+4>>2];c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[(c[f>>2]|0)+52>>1]|0))break;b[k>>1]=b[(c[(c[f>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1]|0;if((b[k>>1]|0)<0)a=1;else a=d[(c[g>>2]|0)+((b[(c[(c[f>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1]|0)*24|0)+22>>0]|0;c[j>>2]=(c[j>>2]|0)+a;c[h>>2]=(c[h>>2]|0)+1}k=Hj(c[j>>2]<<2,0)|0;b[(c[f>>2]|0)+48>>1]=k;i=l;return}function WG(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=b;XG(c[e>>2]|0,c[f>>2]|0);Zu(c[e>>2]|0,c[(c[f>>2]|0)+36>>2]|0);Vu(c[e>>2]|0,c[(c[f>>2]|0)+40>>2]|0);Sf(c[e>>2]|0,c[(c[f>>2]|0)+16>>2]|0);if(!((d[(c[f>>2]|0)+55>>0]|0)>>>4&1)){a=c[e>>2]|0;b=c[f>>2]|0;Sf(a,b);i=g;return}Sf(c[e>>2]|0,c[(c[f>>2]|0)+32>>2]|0);a=c[e>>2]|0;b=c[f>>2]|0;Sf(a,b);i=g;return}function XG(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return}function YG(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;h=f;g=f+4|0;c[h>>2]=b;a[g>>0]=e;b=$A(c[h>>2]|0,4+(d[g>>0]|0)|0,0)|0;i=f;return b|0}function ZG(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+64|0;h=v+52|0;j=v+48|0;q=v+44|0;s=v+40|0;p=v+36|0;l=v+32|0;n=v+28|0;k=v+24|0;t=v+20|0;r=v+16|0;m=v+8|0;o=v;c[h>>2]=f;c[j>>2]=g;c[k>>2]=c[c[h>>2]>>2];c[t>>2]=c[(c[h>>2]|0)+8>>2];if(c[(c[h>>2]|0)+424>>2]|0)bG(c[t>>2]|0,c[(c[h>>2]|0)+424>>2]|0,121);f=c[j>>2]|0;do if((b[(c[j>>2]|0)+32>>1]|0)>=0){Cy(m,c[(c[(c[j>>2]|0)+4>>2]|0)+((b[f+32>>1]|0)*24|0)>>2]|0);t=c[h>>2]|0;c[r>>2]=Gv(t,0,cz(c[k>>2]|0,27,m,0)|0)|0;if(!(c[r>>2]|0)){i=v;return}a[(c[(c[r>>2]|0)+4>>2]|0)+12>>0]=a[(c[h>>2]|0)+452>>0]|0;c[s>>2]=vv(c[h>>2]|0,0,0,0,c[r>>2]|0,d[(c[j>>2]|0)+43>>0]|0,0,0,0,0)|0;if(!(c[s>>2]|0)){i=v;return}else{t=(c[s>>2]|0)+55|0;a[t>>0]=a[t>>0]&-4|2;b[(c[j>>2]|0)+32>>1]=-1;break}}else{c[s>>2]=Ej(f)|0;if(c[t>>2]|0)bG(c[t>>2]|0,c[(c[s>>2]|0)+44>>2]|0,13);c[n>>2]=1;c[l>>2]=1;while(1){if((c[l>>2]|0)>=(e[(c[s>>2]|0)+50>>1]|0))break;if(UG(c[(c[s>>2]|0)+4>>2]|0,c[n>>2]|0,b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)|0){t=(c[s>>2]|0)+52|0;b[t>>1]=(b[t>>1]|0)+-1<<16>>16}else{r=b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0;t=c[n>>2]|0;c[n>>2]=t+1;b[(c[(c[s>>2]|0)+4>>2]|0)+(t<<1)>>1]=r}c[l>>2]=(c[l>>2]|0)+1}b[(c[s>>2]|0)+50>>1]=c[n>>2]}while(0);t=(c[s>>2]|0)+55|0;a[t>>0]=a[t>>0]&-33|32;c[p>>2]=e[(c[s>>2]|0)+50>>1];if(!(a[(c[k>>2]|0)+140+7>>0]|0)){c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[p>>2]|0))break;a[(c[(c[j>>2]|0)+4>>2]|0)+((b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)*24|0)+20>>0]=2;c[l>>2]=(c[l>>2]|0)+1}t=(c[s>>2]|0)+55|0;a[t>>0]=a[t>>0]&-9|8}c[(c[s>>2]|0)+44>>2]=c[(c[j>>2]|0)+28>>2];c[q>>2]=c[(c[j>>2]|0)+8>>2];a:while(1){if(!(c[q>>2]|0))break;b:do if((a[(c[q>>2]|0)+55>>0]&3|0)!=2){c[o>>2]=0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[p>>2]|0))break;if(!(UG(c[(c[q>>2]|0)+4>>2]|0,e[(c[q>>2]|0)+50>>1]|0,b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)|0))c[o>>2]=(c[o>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+1}if(!(c[o>>2]|0)){b[(c[q>>2]|0)+52>>1]=b[(c[q>>2]|0)+50>>1]|0;break}if(cH(c[k>>2]|0,c[q>>2]|0,(e[(c[q>>2]|0)+50>>1]|0)+(c[o>>2]|0)|0)|0){u=46;break a}c[l>>2]=0;c[n>>2]=e[(c[q>>2]|0)+50>>1];while(1){if((c[l>>2]|0)>=(c[p>>2]|0))break b;if(!(UG(c[(c[q>>2]|0)+4>>2]|0,e[(c[q>>2]|0)+50>>1]|0,b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)|0)){b[(c[(c[q>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]=b[(c[(c[s>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0;c[(c[(c[q>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2]=c[(c[(c[s>>2]|0)+32>>2]|0)+(c[l>>2]<<2)>>2];c[n>>2]=(c[n>>2]|0)+1}c[l>>2]=(c[l>>2]|0)+1}}while(0);c[q>>2]=c[(c[q>>2]|0)+20>>2]}if((u|0)==46){i=v;return}if((c[p>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0)){b[(c[s>>2]|0)+52>>1]=b[(c[j>>2]|0)+34>>1]|0;i=v;return}if(cH(c[k>>2]|0,c[s>>2]|0,b[(c[j>>2]|0)+34>>1]|0)|0){i=v;return}c[l>>2]=0;c[n>>2]=c[p>>2];while(1){if((c[l>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0))break;if(!(UG(c[(c[s>>2]|0)+4>>2]|0,c[n>>2]|0,c[l>>2]|0)|0)){b[(c[(c[s>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]=c[l>>2];c[(c[(c[s>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2]=35690;c[n>>2]=(c[n>>2]|0)+1}c[l>>2]=(c[l>>2]|0)+1}i=v;return}function _G(a){a=a|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;h=j+8|0;g=j+4|0;f=j;c[e>>2]=a;c[h>>2]=0;c[f>>2]=b[(c[e>>2]|0)+34>>1];c[g>>2]=c[(c[e>>2]|0)+4>>2];while(1){if((c[f>>2]|0)<=0)break;c[h>>2]=(c[h>>2]|0)+(d[(c[g>>2]|0)+22>>0]|0);c[f>>2]=(c[f>>2]|0)+-1;c[g>>2]=(c[g>>2]|0)+24}if((b[(c[e>>2]|0)+32>>1]|0)>=0){g=c[h>>2]|0;g=g<<2;g=Hj(g,0)|0;h=c[e>>2]|0;h=h+40|0;b[h>>1]=g;i=j;return}c[h>>2]=(c[h>>2]|0)+1;g=c[h>>2]|0;g=g<<2;g=Hj(g,0)|0;h=c[e>>2]|0;h=h+40|0;b[h>>1]=g;i=j;return}function $G(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+80|0;q=w+16|0;p=w+8|0;g=w;h=w+68|0;f=w+64|0;j=w+60|0;k=w+56|0;l=w+52|0;n=w+48|0;u=w+44|0;s=w+40|0;t=w+36|0;r=w+32|0;o=w+28|0;m=w+24|0;v=w+20|0;c[f>>2]=d;c[j>>2]=e;c[n>>2]=0;c[o>>2]=c[(c[j>>2]|0)+4>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0))break;e=(aH(c[c[o>>2]>>2]|0)|0)+5|0;c[n>>2]=(c[n>>2]|0)+e;c[k>>2]=(c[k>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+24}e=aH(c[c[j>>2]>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+e;if((c[n>>2]|0)<50){c[s>>2]=19266;c[t>>2]=38266;c[r>>2]=35518}else{c[s>>2]=38268;c[t>>2]=38272;c[r>>2]=38277}c[n>>2]=(c[n>>2]|0)+(35+((b[(c[j>>2]|0)+34>>1]|0)*6|0));e=c[n>>2]|0;c[u>>2]=yh(0,e,((e|0)<0)<<31>>31)|0;if(!(c[u>>2]|0)){jh(c[f>>2]|0);c[h>>2]=0;v=c[h>>2]|0;i=w;return v|0}Qd(c[n>>2]|0,c[u>>2]|0,38280,g)|0;c[l>>2]=If(c[u>>2]|0)|0;bH(c[u>>2]|0,l,c[c[j>>2]>>2]|0);g=c[l>>2]|0;c[l>>2]=g+1;a[(c[u>>2]|0)+g>>0]=40;c[o>>2]=c[(c[j>>2]|0)+4>>2];c[k>>2]=0;while(1){f=(c[n>>2]|0)-(c[l>>2]|0)|0;d=(c[u>>2]|0)+(c[l>>2]|0)|0;if((c[k>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0))break;Qd(f,d,c[s>>2]|0,p)|0;g=If((c[u>>2]|0)+(c[l>>2]|0)|0)|0;c[l>>2]=(c[l>>2]|0)+g;c[s>>2]=c[t>>2];bH(c[u>>2]|0,l,c[c[o>>2]>>2]|0);c[v>>2]=c[6328+((a[(c[o>>2]|0)+21>>0]|0)-65<<2)>>2];c[m>>2]=If(c[v>>2]|0)|0;iR((c[u>>2]|0)+(c[l>>2]|0)|0,c[v>>2]|0,c[m>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+(c[m>>2]|0);c[k>>2]=(c[k>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+24}c[q>>2]=c[r>>2];Qd(f,d,19255,q)|0;c[h>>2]=c[u>>2];v=c[h>>2]|0;i=w;return v|0}function aH(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=0;while(1){if(!(a[c[d>>2]>>0]|0))break;if((a[c[d>>2]>>0]|0)==34)c[e>>2]=(c[e>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+1}i=f;return(c[e>>2]|0)+2|0}function bH(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;g=n+24|0;h=n+20|0;o=n+16|0;m=n+12|0;j=n+8|0;k=n+4|0;l=n;c[g>>2]=b;c[h>>2]=e;c[o>>2]=f;c[m>>2]=c[o>>2];c[j>>2]=c[c[h>>2]>>2];c[k>>2]=0;while(1){if(!(a[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0))break;if((d[19267+(d[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)>>0]&6|0)==0?(d[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)!=95:0)break;c[k>>2]=(c[k>>2]|0)+1}if(((d[19267+(d[c[m>>2]>>0]|0)>>0]&4|0)==0?(yi(c[m>>2]|0,c[k>>2]|0)|0)==27:0)?(d[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)==0:0)e=(c[k>>2]|0)==0;else e=1;c[l>>2]=e&1;if(c[l>>2]|0){o=c[j>>2]|0;c[j>>2]=o+1;a[(c[g>>2]|0)+o>>0]=34}c[k>>2]=0;while(1){if(!(a[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0))break;f=a[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0;o=c[j>>2]|0;c[j>>2]=o+1;a[(c[g>>2]|0)+o>>0]=f;if((d[(c[m>>2]|0)+(c[k>>2]|0)>>0]|0)==34){o=c[j>>2]|0;c[j>>2]=o+1;a[(c[g>>2]|0)+o>>0]=34}c[k>>2]=(c[k>>2]|0)+1}if(!(c[l>>2]|0)){m=c[j>>2]|0;o=c[g>>2]|0;m=o+m|0;a[m>>0]=0;m=c[j>>2]|0;o=c[h>>2]|0;c[o>>2]=m;i=n;return}m=c[j>>2]|0;c[j>>2]=m+1;a[(c[g>>2]|0)+m>>0]=34;m=c[j>>2]|0;o=c[g>>2]|0;m=o+m|0;a[m>>0]=0;m=c[j>>2]|0;o=c[h>>2]|0;c[o>>2]=m;i=n;return}function cH(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;c[j>>2]=d;c[k>>2]=f;c[l>>2]=g;if((e[(c[k>>2]|0)+52>>1]|0|0)>=(c[l>>2]|0)){c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}c[m>>2]=(c[l>>2]|0)*7;f=c[m>>2]|0;c[n>>2]=ph(c[j>>2]|0,f,((f|0)<0)<<31>>31)|0;if(!(c[n>>2]|0)){c[h>>2]=7;n=c[h>>2]|0;i=o;return n|0}else{iR(c[n>>2]|0,c[(c[k>>2]|0)+32>>2]|0,(e[(c[k>>2]|0)+52>>1]|0)<<2|0)|0;c[(c[k>>2]|0)+32>>2]=c[n>>2];c[n>>2]=(c[n>>2]|0)+(c[l>>2]<<2);iR(c[n>>2]|0,c[(c[k>>2]|0)+4>>2]|0,(e[(c[k>>2]|0)+52>>1]|0)<<1|0)|0;c[(c[k>>2]|0)+4>>2]=c[n>>2];c[n>>2]=(c[n>>2]|0)+(c[l>>2]<<1);iR(c[n>>2]|0,c[(c[k>>2]|0)+28>>2]|0,e[(c[k>>2]|0)+52>>1]|0|0)|0;c[(c[k>>2]|0)+28>>2]=c[n>>2];b[(c[k>>2]|0)+52>>1]=c[l>>2];n=(c[k>>2]|0)+55|0;a[n>>0]=a[n>>0]&-17|16;c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}return 0}function dH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;d=e+8|0;f=e+4|0;g=e;c[d>>2]=a;c[f>>2]=b;c[g>>2]=Pw(c[d>>2]|0)|0;yz(c[d>>2]|0,c[f>>2]|0,1,1,(c[f>>2]|0)==1?20769:20788);Eh(c[g>>2]|0,55,0,1,c[f>>2]|0,5)|0;if(c[(c[d>>2]|0)+72>>2]|0){i=e;return}c[(c[d>>2]|0)+72>>2]=1;i=e;return}function eH(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;b=j+16|0;e=j+12|0;h=j+8|0;f=j+4|0;g=j;c[b>>2]=a;c[h>>2]=Pw(c[b>>2]|0)|0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[b>>2]|0)+404>>2]|0))break;c[f>>2]=(c[(c[b>>2]|0)+408>>2]|0)+(c[e>>2]<<4);c[g>>2]=c[c[f>>2]>>2];Uw(c[h>>2]|0,148,c[g>>2]|0,c[(c[f>>2]|0)+4>>2]|0,d[(c[f>>2]|0)+8>>0]|0,c[(c[f>>2]|0)+12>>2]|0,-2)|0;c[e>>2]=(c[e>>2]|0)+1}i=j;return}function fH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;h=l+20|0;f=l+16|0;j=l+12|0;g=l+8|0;k=l+4|0;e=l;c[d>>2]=b;c[f>>2]=c[c[d>>2]>>2];c[k>>2]=c[(c[d>>2]|0)+8>>2];c[h>>2]=c[(c[d>>2]|0)+412>>2];while(1){if(!(c[h>>2]|0)){d=5;break}c[j>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[(c[h>>2]|0)+8>>2]<<4);c[g>>2]=c[(c[h>>2]|0)+12>>2];zz(c[d>>2]|0,0,c[(c[h>>2]|0)+8>>2]|0,c[(c[(c[j>>2]|0)+12>>2]|0)+72>>2]|0,54);Tw(c[k>>2]|0,(c[g>>2]|0)-1|0,c[c[(c[h>>2]|0)+4>>2]>>2]|0)|0;c[e>>2]=Gh(c[k>>2]|0,10,38456,0)|0;if(!(c[e>>2]|0)){d=5;break}c[(c[e>>2]|0)+8>>2]=c[g>>2];c[(c[e>>2]|0)+12>>2]=(c[g>>2]|0)+1;c[(c[e>>2]|0)+40+12>>2]=c[g>>2];c[(c[e>>2]|0)+60+4>>2]=(c[g>>2]|0)-1;c[(c[e>>2]|0)+60+12>>2]=c[g>>2];a[(c[e>>2]|0)+60+3>>0]=16;c[(c[e>>2]|0)+80+8>>2]=(c[g>>2]|0)+1;c[(c[e>>2]|0)+100+12>>2]=c[g>>2];c[(c[e>>2]|0)+160+8>>2]=c[g>>2];c[h>>2]=c[c[h>>2]>>2]}if((d|0)==5){i=l;return}}function gH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g;d=g+12|0;e=g+4|0;c[d>>2]=a;c[g+8>>2]=b;c[e>>2]=c[(c[d>>2]|0)+8>>2];a=c[d>>2]|0;c[a>>2]=(c[a>>2]|0)+-1;while(1){if((c[c[d>>2]>>2]|0)<0)break;$u(c[d>>2]|0)}Ah(c[e>>2]|0,38496,f);c[(c[d>>2]|0)+8>>2]=c[e>>2];i=g;return}function hH(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+4|0;c[e>>2]=a;c[d>>2]=c[e>>2];Rd(21,40353,d);i=b;return}function iH(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+96|0;G=I+16|0;s=I+8|0;n=I;C=I+92|0;u=I+88|0;p=I+84|0;v=I+80|0;l=I+76|0;w=I+72|0;q=I+68|0;D=I+64|0;H=I+60|0;F=I+56|0;x=I+52|0;m=I+48|0;o=I+44|0;t=I+40|0;r=I+36|0;y=I+32|0;z=I+28|0;A=I+24|0;E=I+20|0;c[C>>2]=b;c[u>>2]=e;c[p>>2]=f;c[v>>2]=g;c[l>>2]=h;c[w>>2]=j;c[q>>2]=k;c[H>>2]=0;c[F>>2]=0;c[D>>2]=ph(c[C>>2]|0,544,0)|0;if(!(c[D>>2]|0)){c[F>>2]=7;H=c[D>>2]|0;Lh(H);H=c[C>>2]|0;G=c[D>>2]|0;Sf(H,G);G=c[C>>2]|0;H=c[F>>2]|0;H=Rg(G,H)|0;c[F>>2]=H;H=c[F>>2]|0;i=I;return H|0}c[(c[D>>2]|0)+480>>2]=c[l>>2];c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[(c[C>>2]|0)+20>>2]|0))break;c[m>>2]=c[(c[(c[C>>2]|0)+16>>2]|0)+(c[x>>2]<<4)+4>>2];if((c[m>>2]|0)!=0?(c[F>>2]=jH(c[m>>2]|0)|0,(c[F>>2]|0)!=0):0){B=7;break}c[x>>2]=(c[x>>2]|0)+1}if((B|0)==7){c[o>>2]=c[(c[(c[C>>2]|0)+16>>2]|0)+(c[x>>2]<<4)>>2];G=c[C>>2]|0;H=c[F>>2]|0;c[n>>2]=c[o>>2];hg(G,H,40398,n);H=c[D>>2]|0;Lh(H);H=c[C>>2]|0;G=c[D>>2]|0;Sf(H,G);G=c[C>>2]|0;H=c[F>>2]|0;H=Rg(G,H)|0;c[F>>2]=H;H=c[F>>2]|0;i=I;return H|0}ju(c[C>>2]|0);c[c[D>>2]>>2]=c[C>>2];c[(c[D>>2]|0)+428>>2]=0;do if((c[p>>2]|0)>=0){if((c[p>>2]|0)!=0?(a[(c[u>>2]|0)+((c[p>>2]|0)-1)>>0]|0)==0:0){B=17;break}c[r>>2]=c[(c[C>>2]|0)+88+4>>2];l=c[C>>2]|0;if((c[p>>2]|0)>(c[r>>2]|0)){hg(l,18,40428,s);c[F>>2]=Rg(c[C>>2]|0,18)|0;H=c[D>>2]|0;Lh(H);H=c[C>>2]|0;G=c[D>>2]|0;Sf(H,G);G=c[C>>2]|0;H=c[F>>2]|0;H=Rg(G,H)|0;c[F>>2]=H;H=c[F>>2]|0;i=I;return H|0}s=c[p>>2]|0;c[t>>2]=Iw(l,c[u>>2]|0,s,((s|0)<0)<<31>>31)|0;if(c[t>>2]|0){Uh(c[D>>2]|0,c[t>>2]|0,H)|0;c[(c[D>>2]|0)+484>>2]=(c[u>>2]|0)+((c[(c[D>>2]|0)+484>>2]|0)-(c[t>>2]|0));Sf(c[C>>2]|0,c[t>>2]|0);break}else{c[(c[D>>2]|0)+484>>2]=(c[u>>2]|0)+(c[p>>2]|0);break}}else B=17;while(0);if((B|0)==17)Uh(c[D>>2]|0,c[u>>2]|0,H)|0;if((c[(c[D>>2]|0)+12>>2]|0)==101)c[(c[D>>2]|0)+12>>2]=0;if(a[(c[D>>2]|0)+17>>0]|0)kH(c[D>>2]|0);if(a[(c[C>>2]|0)+65>>0]|0)c[(c[D>>2]|0)+12>>2]=7;if(c[q>>2]|0)c[c[q>>2]>>2]=c[(c[D>>2]|0)+484>>2];c[F>>2]=c[(c[D>>2]|0)+12>>2];a:do if(((c[F>>2]|0)==0?(c[(c[D>>2]|0)+8>>2]|0)!=0:0)?(d[(c[D>>2]|0)+453>>0]|0)!=0:0){l=c[(c[D>>2]|0)+8>>2]|0;if((d[(c[D>>2]|0)+453>>0]|0)==2){OB(l,4);c[y>>2]=8;c[z>>2]=12}else{OB(l,8);c[y>>2]=0;c[z>>2]=8}c[x>>2]=c[y>>2];while(1){if((c[x>>2]|0)>=(c[z>>2]|0))break a;PB(c[(c[D>>2]|0)+8>>2]|0,(c[x>>2]|0)-(c[y>>2]|0)|0,0,c[6360+(c[x>>2]<<2)>>2]|0,0)|0;c[x>>2]=(c[x>>2]|0)+1}}while(0);if(!(d[(c[C>>2]|0)+140+5>>0]|0)){c[A>>2]=c[(c[D>>2]|0)+8>>2];lH(c[A>>2]|0,c[u>>2]|0,(c[(c[D>>2]|0)+484>>2]|0)-(c[u>>2]|0)|0,c[v>>2]|0)}do if(c[(c[D>>2]|0)+8>>2]|0){if((c[F>>2]|0)==0?(d[(c[C>>2]|0)+65>>0]|0)==0:0){B=41;break}Qg(c[(c[D>>2]|0)+8>>2]|0)|0}else B=41;while(0);if((B|0)==41)c[c[w>>2]>>2]=c[(c[D>>2]|0)+8>>2];l=c[C>>2]|0;b=c[F>>2]|0;if(c[H>>2]|0){c[G>>2]=c[H>>2];hg(l,b,19255,G);Sf(c[C>>2]|0,c[H>>2]|0)}else jg(l,b);while(1){if(!(c[(c[D>>2]|0)+532>>2]|0))break;c[E>>2]=c[(c[D>>2]|0)+532>>2];c[(c[D>>2]|0)+532>>2]=c[(c[E>>2]|0)+4>>2];Sf(c[C>>2]|0,c[E>>2]|0)}H=c[D>>2]|0;Lh(H);H=c[C>>2]|0;G=c[D>>2]|0;Sf(H,G);G=c[C>>2]|0;H=c[F>>2]|0;H=Rg(G,H)|0;c[F>>2]=H;H=c[F>>2]|0;i=I;return H|0}function jH(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;kg(c[e>>2]|0);c[b>>2]=mH(c[e>>2]|0,1,1)|0;i=d;return c[b>>2]|0}function kH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+24|0;e=k+20|0;f=k+16|0;j=k+12|0;d=k+8|0;g=k+4|0;h=k;c[b>>2]=a;c[e>>2]=c[c[b>>2]>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0)){b=14;break}c[g>>2]=0;c[h>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(c[h>>2]|0){if(!(og(c[h>>2]|0)|0)){c[j>>2]=mg(c[h>>2]|0,0)|0;if((c[j>>2]|0)==7|(c[j>>2]|0)==3082)jh(c[e>>2]|0);if(c[j>>2]|0){b=14;break}c[g>>2]=1}ng(c[h>>2]|0,1,d);if((c[d>>2]|0)!=(c[c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+12>>2]>>2]|0)){rj(c[e>>2]|0,c[f>>2]|0);c[(c[b>>2]|0)+12>>2]=17}if(c[g>>2]|0)Bj(c[h>>2]|0)|0}c[f>>2]=(c[f>>2]|0)+1}if((b|0)==14){i=k;return}}function lH(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[g>>2]=a;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;if(!(c[g>>2]|0)){i=l;return}d=c[j>>2]|0;d=Iw(c[c[g>>2]>>2]|0,c[h>>2]|0,d,((d|0)<0)<<31>>31)|0;c[(c[g>>2]|0)+168>>2]=d;d=(c[g>>2]|0)+88|0;b[d>>1]=b[d>>1]&-257|(c[k>>2]&1)<<8&65535;i=l;return}function mH(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;j=q+16|0;k=q+12|0;l=q+8|0;m=q+20|0;n=q+4|0;o=q;c[k>>2]=f;c[l>>2]=g;a[m>>0]=h;c[n>>2]=c[(c[k>>2]|0)+4>>2];if(!(a[(c[k>>2]|0)+9>>0]|0)){c[j>>2]=0;p=c[j>>2]|0;i=q;return p|0}if((c[(c[n>>2]|0)+76>>2]|0)!=(c[k>>2]|0)?(e[(c[n>>2]|0)+22>>1]&32|0)!=0:0){c[j>>2]=262;p=c[j>>2]|0;i=q;return p|0}c[o>>2]=c[(c[n>>2]|0)+72>>2];while(1){if(!(c[o>>2]|0)){p=15;break}if(((c[c[o>>2]>>2]|0)!=(c[k>>2]|0)?(c[(c[o>>2]|0)+4>>2]|0)==(c[l>>2]|0):0)?(d[(c[o>>2]|0)+8>>0]|0)!=(d[m>>0]|0):0)break;c[o>>2]=c[(c[o>>2]|0)+12>>2]}if((p|0)==15){c[j>>2]=0;p=c[j>>2]|0;i=q;return p|0}if((d[m>>0]|0)==2){p=(c[n>>2]|0)+22|0;b[p>>1]=e[p>>1]|64}c[j>>2]=262;p=c[j>>2]|0;i=q;return p|0}function nH(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;g=l+16|0;m=l+12|0;h=l+8|0;j=l+4|0;k=l;c[m>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[(c[m>>2]|0)+8>>2];while(1){if(!(c[k>>2]|0))break;if((c[k>>2]|0)!=(c[j>>2]|0)){if(!(c[h>>2]|0))break;if((c[(c[k>>2]|0)+52>>2]|0)==(c[h>>2]|0))break}c[k>>2]=c[(c[k>>2]|0)+8>>2]}if(c[k>>2]|0){c[g>>2]=oH(c[k>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;m=c[g>>2]|0;i=l;return m|0}if(c[j>>2]|0){m=(c[j>>2]|0)+64|0;a[m>>0]=(d[m>>0]|0)&-33}c[g>>2]=0;m=c[g>>2]|0;i=l;return m|0}function oH(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;j=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;k=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;a:while(1){do if((c[f>>2]|0)!=(c[h>>2]|0)){if(0!=(c[g>>2]|0)?(c[(c[f>>2]|0)+52>>2]|0)!=(c[g>>2]|0):0)break;if((d[(c[f>>2]|0)+66>>0]|0|0)!=1?(d[(c[f>>2]|0)+66>>0]|0|0)!=2:0){qH(c[f>>2]|0);break}c[k>>2]=pH(c[f>>2]|0)|0;if(c[k>>2]|0){f=8;break a}}while(0);c[f>>2]=c[(c[f>>2]|0)+8>>2];if(!(c[f>>2]|0)){f=11;break}}if((f|0)==8){c[j>>2]=c[k>>2];k=c[j>>2]|0;i=l;return k|0}else if((f|0)==11){c[j>>2]=0;k=c[j>>2]|0;i=l;return k|0}return 0}function pH(b){b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;b=c[e>>2]|0;if((d[(c[e>>2]|0)+66>>0]|0|0)==2)a[b+66>>0]=1;else c[b+60>>2]=0;c[f>>2]=rH(c[e>>2]|0)|0;if(!(c[f>>2]|0)){qH(c[e>>2]|0);a[(c[e>>2]|0)+66>>0]=3}e=(c[e>>2]|0)+64|0;a[e>>0]=(d[e>>0]|0)&-15;i=g;return c[f>>2]|0}function qH(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=0;while(1){if((c[e>>2]|0)>(a[(c[d>>2]|0)+68>>0]|0))break;qB(c[(c[d>>2]|0)+120+(c[e>>2]<<2)>>2]|0);c[(c[d>>2]|0)+120+(c[e>>2]<<2)>>2]=0;c[e>>2]=(c[e>>2]|0)+1}a[(c[d>>2]|0)+68>>0]=-1;i=f;return}function rH(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g+4|0;b=g;c[e>>2]=a;c[f>>2]=sH(c[e>>2]|0,(c[e>>2]|0)+40|0)|0;if(d[(c[e>>2]|0)+69>>0]|0){f=c[f>>2]|0;i=g;return f|0}a=(c[e>>2]|0)+40|0;c[b>>2]=_f(c[a>>2]|0,c[a+4>>2]|0)|0;if(!(c[b>>2]|0)){c[f>>2]=7;f=c[f>>2]|0;i=g;return f|0}c[f>>2]=tH(c[e>>2]|0,0,c[(c[e>>2]|0)+40>>2]|0,c[b>>2]|0)|0;a=c[b>>2]|0;if(!(c[f>>2]|0)){c[(c[e>>2]|0)+48>>2]=a;f=c[f>>2]|0;i=g;return f|0}else{Kd(a);f=c[f>>2]|0;i=g;return f|0}return 0}function sH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;iF(c[e>>2]|0);e=(c[e>>2]|0)+16|0;a=c[e+4>>2]|0;b=c[f>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=a;i=d;return 0}function tH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;a=hF(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0,0)|0;i=f;return a|0}function uH(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;kg(c[c[d>>2]>>2]|0);i=b;return}function vH(b){b=b|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=b;b=(c[f>>2]|0)+64|0;a[b>>0]=d[b>>0]|0|16;a[(c[c[f>>2]>>2]|0)+11>>0]=1;i=e;return}function wH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[f>>2]|0){g=c[f>>2]|0;i=h;return g|0}c[g>>2]=(c[g>>2]|0)+7&-8;d=c[g>>2]|0;a=c[e>>2]|0;if((c[g>>2]|0)<=(c[(c[e>>2]|0)+4>>2]|0)){g=a+4|0;c[g>>2]=(c[g>>2]|0)-d;c[f>>2]=(c[c[e>>2]>>2]|0)+(c[(c[e>>2]|0)+4>>2]|0);g=c[f>>2]|0;i=h;return g|0}else{g=a+8|0;c[g>>2]=(c[g>>2]|0)+d;g=c[f>>2]|0;i=h;return g|0}return 0}function xH(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;if(a[(c[h>>2]|0)+1>>0]|0){qA(c[c[g>>2]>>2]|0,a[(c[h>>2]|0)+1>>0]|0,c[(c[h>>2]|0)+16>>2]|0);a[(c[h>>2]|0)+1>>0]=0;c[(c[h>>2]|0)+16>>2]=0}if((c[k>>2]|0)<0){Ih(c[g>>2]|0,((c[h>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0)|0)/20|0,c[j>>2]|0,c[k>>2]|0);i=l;return}if(!(c[k>>2]|0))c[k>>2]=If(c[j>>2]|0)|0;e=c[k>>2]|0;e=Iw(c[c[g>>2]>>2]|0,c[j>>2]|0,e,((e|0)<0)<<31>>31)|0;c[(c[h>>2]|0)+16>>2]=e;a[(c[h>>2]|0)+1>>0]=-1;i=l;return}function yH(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;i=b;return}function zH(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+9>>0]|0|0}function AH(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;p=r;g=r+36|0;h=r+32|0;j=r+28|0;m=r+24|0;n=r+20|0;q=r+16|0;l=r+12|0;o=r+8|0;k=r+4|0;c[h>>2]=e;c[j>>2]=f;c[m>>2]=c[c[j>>2]>>2];c[q>>2]=0;c[k>>2]=c[c[h>>2]>>2];if(c[(c[j>>2]|0)+16>>2]|0){c[g>>2]=1;q=c[g>>2]|0;i=r;return q|0}if((c[(c[m>>2]|0)+4>>2]|0)!=0?(c[(c[m>>2]|0)+4>>2]|0)!=(c[(c[m>>2]|0)+8>>2]|0):0){c[g>>2]=0;q=c[g>>2]|0;i=r;return q|0}c[l>>2]=(If(c[(c[j>>2]|0)+4>>2]|0)|0)+1;c[n>>2]=ph(c[k>>2]|0,72+(c[l>>2]|0)|0,0)|0;if(!(c[n>>2]|0)){c[g>>2]=0;q=c[g>>2]|0;i=r;return q|0}c[(c[j>>2]|0)+16>>2]=c[n>>2];c[c[n>>2]>>2]=(c[n>>2]|0)+72;iR(c[c[n>>2]>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[l>>2]|0)|0;b[(c[n>>2]|0)+36>>1]=1;c[(c[n>>2]|0)+64>>2]=c[(c[(c[k>>2]|0)+16>>2]|0)+12>>2];e=(c[n>>2]|0)+42|0;a[e>>0]=d[e>>0]|0|16;c[(c[n>>2]|0)+48>>2]=0;b[(c[n>>2]|0)+32>>1]=-1;e=c[k>>2]|0;f=c[n>>2]|0;Lw(e,f,nh(c[k>>2]|0,c[c[n>>2]>>2]|0)|0);Lw(c[k>>2]|0,c[n>>2]|0,0);f=c[k>>2]|0;e=c[n>>2]|0;Lw(f,e,nh(c[k>>2]|0,c[c[n>>2]>>2]|0)|0);c[o>>2]=oz(c[k>>2]|0,c[n>>2]|0,c[j>>2]|0,c[(c[m>>2]|0)+8>>2]|0,q)|0;if(c[o>>2]|0){o=c[h>>2]|0;c[p>>2]=c[q>>2];Ah(o,19255,p);Sf(c[k>>2]|0,c[q>>2]|0);BH(c[k>>2]|0,c[j>>2]|0);c[g>>2]=0;q=c[g>>2]|0;i=r;return q|0}else{c[g>>2]=1;q=c[g>>2]|0;i=r;return q|0}return 0}function BH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[e>>2]|0)+16>>2];if(!(c[f>>2]|0)){i=g;return}RG(c[d>>2]|0,c[f>>2]|0);CH(c[d>>2]|0,c[f>>2]|0);Sf(c[d>>2]|0,c[f>>2]|0);c[(c[e>>2]|0)+16>>2]=0;i=g;return}function CH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!((c[d>>2]|0)!=0?(c[(c[d>>2]|0)+528>>2]|0)!=0:0))DH(0,c[e>>2]|0)|0;if(!(c[(c[e>>2]|0)+52>>2]|0)){i=g;return}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+48>>2]|0))break;if((c[f>>2]|0)!=1)Sf(c[d>>2]|0,c[(c[(c[e>>2]|0)+52>>2]|0)+(c[f>>2]<<2)>>2]|0);c[f>>2]=(c[f>>2]|0)+1}Sf(c[d>>2]|0,c[(c[e>>2]|0)+52>>2]|0);i=g;return}function DH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+20|0;e=k+16|0;h=k+12|0;j=k+8|0;f=k+4|0;g=k;c[d>>2]=a;c[e>>2]=b;c[h>>2]=0;c[j>>2]=c[(c[e>>2]|0)+56>>2];c[(c[e>>2]|0)+56>>2]=0;while(1){if(!(c[j>>2]|0))break;c[f>>2]=c[c[j>>2]>>2];c[g>>2]=c[(c[j>>2]|0)+24>>2];if((c[f>>2]|0)==(c[d>>2]|0)){c[h>>2]=c[j>>2];c[(c[e>>2]|0)+56>>2]=c[h>>2];c[(c[h>>2]|0)+24>>2]=0}else{c[(c[j>>2]|0)+24>>2]=c[(c[f>>2]|0)+336>>2];c[(c[f>>2]|0)+336>>2]=c[j>>2]}c[j>>2]=c[g>>2]}i=k;return c[h>>2]|0}function EH(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=d;Ug(c[e>>2]|0);d=c[e>>2]|0;a=c[f>>2]|0;e=d+40|0;do{c[d>>2]=c[a>>2];d=d+4|0;a=a+4|0}while((d|0)<(e|0));b[(c[f>>2]|0)+8>>1]=1;c[(c[f>>2]|0)+24>>2]=0;i=g;return}function FH(){return 312}function GH(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+224|0;g=f+220|0;h=f+216|0;l=f;k=f+212|0;j=f+208|0;c[g>>2]=a;c[h>>2]=d;iR(l|0,c[g>>2]|0,208)|0;iR(c[g>>2]|0,c[h>>2]|0,208)|0;iR(c[h>>2]|0,l|0,208)|0;c[k>>2]=c[(c[g>>2]|0)+52>>2];c[(c[g>>2]|0)+52>>2]=c[(c[h>>2]|0)+52>>2];c[(c[h>>2]|0)+52>>2]=c[k>>2];c[k>>2]=c[(c[g>>2]|0)+48>>2];c[(c[g>>2]|0)+48>>2]=c[(c[h>>2]|0)+48>>2];c[(c[h>>2]|0)+48>>2]=c[k>>2];c[j>>2]=c[(c[g>>2]|0)+168>>2];c[(c[g>>2]|0)+168>>2]=c[(c[h>>2]|0)+168>>2];c[(c[h>>2]|0)+168>>2]=c[j>>2];d=(c[h>>2]|0)+88|0;b[d>>1]=b[d>>1]&-257|((e[(c[g>>2]|0)+88>>1]|0)>>>8&1)<<8&65535;i=f;return}function HH(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+80>>2]=0;i=b;return}function IH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0.0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;g=j+8|0;f=j;c[d>>2]=a;c[e>>2]=b;if((c[c[d>>2]>>2]|0)>=2?(c[(c[d>>2]|0)+72>>2]|0)!=0:0){c[g>>2]=Yb[c[(c[d>>2]|0)+72>>2]&255](c[d>>2]|0,c[e>>2]|0)|0;g=c[g>>2]|0;i=j;return g|0}c[g>>2]=Yb[c[(c[d>>2]|0)+64>>2]&255](c[d>>2]|0,f)|0;k=+h[f>>3]*864.0e5;a=+N(k)>=1.0?k>0.0?~~+$(+M(k/4294967296.0),4294967295.0)>>>0:~~+Z((k-+(~~k>>>0))/4294967296.0)>>>0:0;f=c[e>>2]|0;c[f>>2]=~~k>>>0;c[f+4>>2]=a;g=c[g>>2]|0;i=j;return g|0}function JH(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=i;i=i+80|0;w=y+8|0;q=y;r=y+68|0;s=y+64|0;n=y+60|0;o=y+56|0;g=y+52|0;p=y+48|0;h=y+44|0;j=y+40|0;v=y+36|0;t=y+32|0;x=y+28|0;u=y+24|0;k=y+20|0;m=y+16|0;l=y+12|0;c[s>>2]=f;c[o>>2]=0;c[g>>2]=0;c[p>>2]=0;c[h>>2]=c[c[s>>2]>>2];c[v>>2]=0;c[t>>2]=(c[(c[s>>2]|0)+8>>2]|0)+40;oC(c[t>>2]|0,8);c[(c[s>>2]|0)+20>>2]=0;if((c[(c[s>>2]|0)+80>>2]|0)==7){jh(c[h>>2]|0);c[r>>2]=1;x=c[r>>2]|0;i=y;return x|0}c[n>>2]=c[(c[s>>2]|0)+32>>2];a:do if((b[(c[s>>2]|0)+88>>1]&3|0)==1){c[p>>2]=(c[(c[s>>2]|0)+8>>2]|0)+360;if(e[(c[p>>2]|0)+8>>1]&16){c[o>>2]=((c[(c[p>>2]|0)+12>>2]|0)>>>0)/4|0;c[g>>2]=c[(c[p>>2]|0)+16>>2]}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[o>>2]|0))break a;c[n>>2]=(c[n>>2]|0)+(c[(c[(c[g>>2]|0)+(c[j>>2]<<2)>>2]|0)+4>>2]|0);c[j>>2]=(c[j>>2]|0)+1}}while(0);do{z=(c[s>>2]|0)+76|0;f=c[z>>2]|0;c[z>>2]=f+1;c[j>>2]=f;if((c[j>>2]|0)>=(c[n>>2]|0))break;if((b[(c[s>>2]|0)+88>>1]&3|0)!=2)break}while((d[(c[(c[s>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)>>0]|0)!=161);do if((c[j>>2]|0)>=(c[n>>2]|0)){c[(c[s>>2]|0)+80>>2]=0;c[v>>2]=101}else{if(c[(c[h>>2]|0)+240>>2]|0){c[(c[s>>2]|0)+80>>2]=9;c[v>>2]=1;z=c[s>>2]|0;SH(z,ih(c[(c[s>>2]|0)+80>>2]|0)|0,q);break}if((c[j>>2]|0)<(c[(c[s>>2]|0)+32>>2]|0))c[u>>2]=(c[(c[s>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0);else{c[j>>2]=(c[j>>2]|0)-(c[(c[s>>2]|0)+32>>2]|0);c[k>>2]=0;while(1){if((c[j>>2]|0)<(c[(c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]|0)+4>>2]|0))break;c[j>>2]=(c[j>>2]|0)-(c[(c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]|0)+4>>2]|0);c[k>>2]=(c[k>>2]|0)+1}c[u>>2]=(c[c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]>>2]|0)+((c[j>>2]|0)*20|0)}if((b[(c[s>>2]|0)+88>>1]&3|0)==1?(b[(c[t>>2]|0)+8>>1]=4,q=c[j>>2]|0,z=c[t>>2]|0,c[z>>2]=q,c[z+4>>2]=((q|0)<0)<<31>>31,c[t>>2]=(c[t>>2]|0)+40,b[(c[t>>2]|0)+8>>1]=2562,z=mM(d[c[u>>2]>>0]|0)|0,c[(c[t>>2]|0)+16>>2]=z,z=If(c[(c[t>>2]|0)+16>>2]|0)|0,c[(c[t>>2]|0)+12>>2]=z,a[(c[t>>2]|0)+10>>0]=1,c[t>>2]=(c[t>>2]|0)+40,(a[(c[u>>2]|0)+1>>0]|0)==-18):0){c[m>>2]=(c[o>>2]|0)+1<<2;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[o>>2]|0))break;if((c[(c[g>>2]|0)+(c[l>>2]<<2)>>2]|0)==(c[(c[u>>2]|0)+16>>2]|0))break;c[l>>2]=(c[l>>2]|0)+1}if((c[l>>2]|0)==(c[o>>2]|0)?0==(ux(c[p>>2]|0,c[m>>2]|0,(c[o>>2]|0)!=0&1)|0):0){c[g>>2]=c[(c[p>>2]|0)+16>>2];q=c[(c[u>>2]|0)+16>>2]|0;z=c[o>>2]|0;c[o>>2]=z+1;c[(c[g>>2]|0)+(z<<2)>>2]=q;z=(c[p>>2]|0)+8|0;b[z>>1]=e[z>>1]|16;c[(c[p>>2]|0)+12>>2]=c[o>>2]<<2}}b[(c[t>>2]|0)+8>>1]=4;q=c[(c[u>>2]|0)+4>>2]|0;z=c[t>>2]|0;c[z>>2]=q;c[z+4>>2]=((q|0)<0)<<31>>31;c[t>>2]=(c[t>>2]|0)+40;b[(c[t>>2]|0)+8>>1]=4;z=c[(c[u>>2]|0)+8>>2]|0;q=c[t>>2]|0;c[q>>2]=z;c[q+4>>2]=((z|0)<0)<<31>>31;c[t>>2]=(c[t>>2]|0)+40;b[(c[t>>2]|0)+8>>1]=4;q=c[(c[u>>2]|0)+12>>2]|0;z=c[t>>2]|0;c[z>>2]=q;c[z+4>>2]=((q|0)<0)<<31>>31;c[t>>2]=(c[t>>2]|0)+40;if(tx(c[t>>2]|0,100)|0){c[r>>2]=1;z=c[r>>2]|0;i=y;return z|0}b[(c[t>>2]|0)+8>>1]=514;c[x>>2]=nM(c[u>>2]|0,c[(c[t>>2]|0)+16>>2]|0,c[(c[t>>2]|0)+24>>2]|0)|0;g=c[t>>2]|0;if((c[x>>2]|0)!=(c[(c[t>>2]|0)+16>>2]|0))dh(g,c[x>>2]|0,-1,1,0)|0;else{z=If(c[g+16>>2]|0)|0;c[(c[t>>2]|0)+12>>2]=z;a[(c[t>>2]|0)+10>>0]=1}c[t>>2]=(c[t>>2]|0)+40;do if((b[(c[s>>2]|0)+88>>1]&3|0)==1){if(!(tx(c[t>>2]|0,4)|0)){b[(c[t>>2]|0)+8>>1]=514;c[(c[t>>2]|0)+12>>2]=2;z=c[(c[t>>2]|0)+16>>2]|0;c[w>>2]=d[(c[u>>2]|0)+3>>0];Qd(3,z,43360,w)|0;a[(c[t>>2]|0)+10>>0]=1;c[t>>2]=(c[t>>2]|0)+40;b[(c[t>>2]|0)+8>>1]=1;break}c[r>>2]=1;z=c[r>>2]|0;i=y;return z|0}while(0);b[(c[s>>2]|0)+84>>1]=8-((b[(c[s>>2]|0)+88>>1]&3)-1<<2);c[(c[s>>2]|0)+20>>2]=(c[(c[s>>2]|0)+8>>2]|0)+40;c[(c[s>>2]|0)+80>>2]=0;c[v>>2]=100}while(0);c[r>>2]=c[v>>2];z=c[r>>2]|0;i=y;return z|0}function dJ(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+80|0;k=x+64|0;j=x+60|0;l=x+56|0;s=x+52|0;q=x+48|0;r=x+44|0;h=x+40|0;t=x+36|0;u=x+32|0;v=x+28|0;w=x+24|0;p=x+20|0;f=x+16|0;o=x+12|0;g=x+8|0;n=x+4|0;m=x;c[j>>2]=b;c[l>>2]=e;c[s>>2]=0;c[h>>2]=0;c[p>>2]=0;if(!(a[(c[l>>2]|0)+63>>0]|0)){xj(c[j>>2]|0,c[l>>2]|0,41344);c[k>>2]=1;w=c[k>>2]|0;i=x;return w|0}if((c[(c[l>>2]|0)+148>>2]|0)>1){xj(c[j>>2]|0,c[l>>2]|0,41384);c[k>>2]=1;w=c[k>>2]|0;i=x;return w|0}c[t>>2]=c[(c[l>>2]|0)+24>>2];c[u>>2]=c[(c[l>>2]|0)+80>>2];c[v>>2]=c[(c[l>>2]|0)+84>>2];c[w>>2]=c[(c[l>>2]|0)+176>>2];b=(c[l>>2]|0)+24|0;c[b>>2]=c[b>>2]|2107392;b=(c[l>>2]|0)+24|0;c[b>>2]=c[b>>2]&-655361;c[(c[l>>2]|0)+176>>2]=0;c[q>>2]=c[(c[(c[l>>2]|0)+16>>2]|0)+4>>2];c[f>>2]=DJ(Of(c[q>>2]|0)|0)|0;c[g>>2]=c[(c[l>>2]|0)+20>>2];if(Sq(c[l>>2]|0)|0)c[h>>2]=41427;else c[h>>2]=41459;c[s>>2]=EJ(c[l>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;if((c[(c[l>>2]|0)+20>>2]|0)>(c[g>>2]|0))c[p>>2]=(c[(c[l>>2]|0)+16>>2]|0)+((c[(c[l>>2]|0)+20>>2]|0)-1<<4);a:do if((((c[s>>2]|0)==0?(c[r>>2]=c[(c[(c[l>>2]|0)+16>>2]|0)+((c[(c[l>>2]|0)+20>>2]|0)-1<<4)+4>>2],Bj(c[r>>2]|0)|0,c[o>>2]=FJ(c[q>>2]|0)|0,c[s>>2]=EJ(c[l>>2]|0,c[j>>2]|0,41483)|0,(c[s>>2]|0)==0):0)?(c[s>>2]=EJ(c[l>>2]|0,c[j>>2]|0,41516)|0,(c[s>>2]|0)==0):0)?(c[s>>2]=mg(c[q>>2]|0,2)|0,(c[s>>2]|0)==0):0){if((qg(Of(c[q>>2]|0)|0)|0)==5)c[(c[l>>2]|0)+72>>2]=0;b=c[r>>2]|0;h=pg(c[q>>2]|0)|0;do if(!(xi(b,h,c[o>>2]|0,0)|0)){if((c[f>>2]|0)==0?(xi(c[r>>2]|0,c[(c[l>>2]|0)+72>>2]|0,c[o>>2]|0,0)|0)!=0:0)break;if(!(d[(c[l>>2]|0)+65>>0]|0)){e=c[r>>2]|0;if((a[(c[l>>2]|0)+68>>0]|0)>=0)f=a[(c[l>>2]|0)+68>>0]|0;else f=TB(c[q>>2]|0)|0;VB(e,f)|0;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,41523)|0;if(c[s>>2]|0)break a;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,41671)|0;if(c[s>>2]|0)break a;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,41775)|0;if(c[s>>2]|0)break a;h=(c[l>>2]|0)+24|0;c[h>>2]=c[h>>2]|134217728;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,41893)|0;h=(c[l>>2]|0)+24|0;c[h>>2]=c[h>>2]&-134217729;if(c[s>>2]|0)break a;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,42089)|0;if(c[s>>2]|0)break a;c[s>>2]=GJ(c[l>>2]|0,c[j>>2]|0,42202)|0;if(c[s>>2]|0)break a;c[s>>2]=EJ(c[l>>2]|0,c[j>>2]|0,42357)|0;if(c[s>>2]|0)break a;c[m>>2]=0;while(1){e=c[q>>2]|0;if((c[m>>2]|0)>=10)break; -ng(e,d[42541+(c[m>>2]|0)>>0]|0,n);c[s>>2]=yg(c[r>>2]|0,d[42541+(c[m>>2]|0)>>0]|0,(c[n>>2]|0)+(d[42541+((c[m>>2]|0)+1)>>0]|0)|0)|0;if(c[s>>2]|0)break a;c[m>>2]=(c[m>>2]|0)+2}c[s>>2]=HJ(e,c[r>>2]|0)|0;if(c[s>>2]|0)break a;c[s>>2]=Bj(c[r>>2]|0)|0;if(c[s>>2]|0)break a;n=c[q>>2]|0;VB(n,TB(c[r>>2]|0)|0)|0;n=c[q>>2]|0;r=pg(c[r>>2]|0)|0;c[s>>2]=xi(n,r,c[o>>2]|0,1)|0;break a}}while(0);c[s>>2]=7}while(0);c[(c[l>>2]|0)+24>>2]=c[t>>2];c[(c[l>>2]|0)+80>>2]=c[u>>2];c[(c[l>>2]|0)+84>>2]=c[v>>2];c[(c[l>>2]|0)+176>>2]=c[w>>2];xi(c[q>>2]|0,-1,-1,1)|0;a[(c[l>>2]|0)+63>>0]=1;if(c[p>>2]|0){lB(c[(c[p>>2]|0)+4>>2]|0)|0;c[(c[p>>2]|0)+4>>2]=0;c[(c[p>>2]|0)+12>>2]=0}zg(c[l>>2]|0);c[k>>2]=c[s>>2];w=c[k>>2]|0;i=x;return w|0}function eJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+20|0;h=j+16|0;g=j+12|0;f=j+8|0;e=j+4|0;d=j;c[k>>2]=b;c[g>>2]=c[(c[k>>2]|0)+4>>2];kg(c[k>>2]|0);if(!(a[(c[g>>2]|0)+17>>0]|0)){c[h>>2]=101;k=c[h>>2]|0;i=j;return k|0}c[f>>2]=$E(c[g>>2]|0)|0;c[e>>2]=$q((c[(c[(c[g>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0;c[d>>2]=qJ(c[g>>2]|0,c[f>>2]|0,c[e>>2]|0)|0;if((c[f>>2]|0)>>>0<(c[d>>2]|0)>>>0){c[h>>2]=Lj(59178)|0;k=c[h>>2]|0;i=j;return k|0}if((c[e>>2]|0)>>>0<=0){c[h>>2]=101;k=c[h>>2]|0;i=j;return k|0}c[h>>2]=nH(c[g>>2]|0,0,0)|0;if(!(c[h>>2]|0)){rJ(c[g>>2]|0);c[h>>2]=sJ(c[g>>2]|0,c[d>>2]|0,c[f>>2]|0,0)|0}if(c[h>>2]|0){k=c[h>>2]|0;i=j;return k|0}c[h>>2]=Dg(c[(c[(c[g>>2]|0)+12>>2]|0)+72>>2]|0)|0;Xs((c[(c[(c[g>>2]|0)+12>>2]|0)+56>>2]|0)+28|0,c[(c[g>>2]|0)+44>>2]|0);k=c[h>>2]|0;i=j;return k|0}function fJ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m+8|0;h=m+4|0;j=m+13|0;l=m;k=m+12|0;c[g>>2]=b;c[h>>2]=e;a[j>>0]=f;c[l>>2]=0;if(!(a[(c[g>>2]|0)+9>>0]|0)){l=c[l>>2]|0;i=m;return l|0}a[k>>0]=1+(d[j>>0]|0);kg(c[g>>2]|0);c[l>>2]=mH(c[g>>2]|0,c[h>>2]|0,a[k>>0]|0)|0;if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}c[l>>2]=pJ(c[g>>2]|0,c[h>>2]|0,a[k>>0]|0)|0;l=c[l>>2]|0;i=m;return l|0}function gJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+24|0;e=m+20|0;f=m+16|0;k=m+12|0;j=m+8|0;g=m+4|0;h=m;c[e>>2]=a;c[f>>2]=b;c[k>>2]=0;if((c[(c[e>>2]|0)+308>>2]|0)>0?(c[(c[e>>2]|0)+332>>2]|0)==0:0){c[d>>2]=6;l=c[d>>2]|0;i=m;return l|0}if(!(c[f>>2]|0)){c[d>>2]=0;l=c[d>>2]|0;i=m;return l|0}c[j>>2]=c[c[(c[f>>2]|0)+8>>2]>>2];if(c[(c[j>>2]|0)+56>>2]|0){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+308>>2]|0))break;if((c[(c[(c[e>>2]|0)+332>>2]|0)+(c[g>>2]<<2)>>2]|0)==(c[f>>2]|0)){l=10;break}c[g>>2]=(c[g>>2]|0)+1}if((l|0)==10){c[d>>2]=0;l=c[d>>2]|0;i=m;return l|0}c[k>>2]=nJ(c[e>>2]|0)|0;if(((c[k>>2]|0)==0?(c[k>>2]=Tb[c[(c[j>>2]|0)+56>>2]&255](c[(c[f>>2]|0)+8>>2]|0)|0,(c[k>>2]|0)==0):0)?(c[h>>2]=(c[(c[e>>2]|0)+504>>2]|0)+(c[(c[e>>2]|0)+500>>2]|0),oJ(c[e>>2]|0,c[f>>2]|0),(c[h>>2]|0)!=0):0)c[k>>2]=nI(c[e>>2]|0,0,(c[h>>2]|0)-1|0)|0}c[d>>2]=c[k>>2];l=c[d>>2]|0;i=m;return l|0}function hJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+48|0;l=n;f=n+32|0;o=n+28|0;p=n+24|0;g=n+20|0;k=n+16|0;j=n+12|0;h=n+8|0;m=n+4|0;c[f>>2]=a;c[o>>2]=b;c[p>>2]=d;c[g>>2]=e;c[k>>2]=0;c[j>>2]=pi(c[f>>2]|0,c[p>>2]|0,c[(c[(c[f>>2]|0)+16>>2]|0)+(c[o>>2]<<4)>>2]|0)|0;c[m>>2]=c[c[(c[j>>2]|0)+52>>2]>>2];c[h>>2]=nj((c[f>>2]|0)+312|0,c[m>>2]|0)|0;if(((c[h>>2]|0)!=0?(c[(c[c[h>>2]>>2]|0)+4>>2]|0)!=0:0)?(c[(c[c[h>>2]>>2]|0)+20>>2]|0)!=0:0)c[k>>2]=oz(c[f>>2]|0,c[j>>2]|0,c[h>>2]|0,c[(c[c[h>>2]>>2]|0)+4>>2]|0,c[g>>2]|0)|0;else{p=c[f>>2]|0;c[l>>2]=c[m>>2];p=Bh(p,31494,l)|0;c[c[g>>2]>>2]=p;c[k>>2]=1}if(c[k>>2]|0){p=c[k>>2]|0;i=n;return p|0}if(!(Ax(c[f>>2]|0,c[j>>2]|0)|0)){p=c[k>>2]|0;i=n;return p|0}c[k>>2]=nJ(c[f>>2]|0)|0;if(c[k>>2]|0){p=c[k>>2]|0;i=n;return p|0}p=c[f>>2]|0;oJ(p,Ax(c[f>>2]|0,c[j>>2]|0)|0);p=c[k>>2]|0;i=n;return p|0}function iJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;e=l+28|0;f=l+24|0;m=l+20|0;n=l+16|0;j=l+12|0;h=l+8|0;g=l+4|0;k=l;c[f>>2]=a;c[m>>2]=b;c[n>>2]=d;c[j>>2]=0;c[h>>2]=pi(c[f>>2]|0,c[n>>2]|0,c[(c[(c[f>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2]|0)|0;do if((c[h>>2]|0)!=0?(c[(c[h>>2]|0)+56>>2]|0)!=0:0){c[g>>2]=c[(c[h>>2]|0)+56>>2];while(1){if(!(c[g>>2]|0)){a=8;break}if((c[(c[(c[g>>2]|0)+8>>2]|0)+4>>2]|0)>0){a=6;break}c[g>>2]=c[(c[g>>2]|0)+24>>2]}if((a|0)==6){c[e>>2]=6;n=c[e>>2]|0;i=l;return n|0}else if((a|0)==8){c[g>>2]=DH(c[f>>2]|0,c[h>>2]|0)|0;c[k>>2]=c[(c[c[(c[g>>2]|0)+4>>2]>>2]|0)+20>>2];c[j>>2]=Tb[c[k>>2]&255](c[(c[g>>2]|0)+8>>2]|0)|0;if(c[j>>2]|0)break;c[(c[g>>2]|0)+8>>2]=0;c[(c[h>>2]|0)+56>>2]=0;hu(c[g>>2]|0);break}}while(0);c[e>>2]=c[j>>2];n=c[e>>2]|0;i=l;return n|0}function jJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;kg(c[g>>2]|0);c[d>>2]=mJ(c[c[(c[g>>2]|0)+4>>2]>>2]|0,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function kJ(f,g){f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+256|0;z=D+72|0;B=D+64|0;A=D+56|0;y=D+48|0;x=D+40|0;k=D+148|0;l=D+144|0;m=D+140|0;p=D+136|0;u=D+132|0;q=D+128|0;t=D+124|0;o=D+120|0;v=D+116|0;C=D+88|0;j=D+84|0;r=D+80|0;n=D+152|0;w=D;s=D+76|0;c[k>>2]=f;c[l>>2]=g;c[p>>2]=0;c[u>>2]=1;c[m>>2]=c[c[k>>2]>>2];cg(C,c[m>>2]|0,D+156|0,100,c[(c[m>>2]|0)+88>>2]|0);if((c[(c[m>>2]|0)+160>>2]|0)>1){while(1){if(!(a[c[l>>2]>>0]|0))break;c[j>>2]=c[l>>2];do{B=c[l>>2]|0;c[l>>2]=B+1;if((a[B>>0]|0)==10)break}while((a[c[l>>2]>>0]|0)!=0);aA(C,41310,3);aA(C,c[j>>2]|0,(c[l>>2]|0)-(c[j>>2]|0)|0)}C=eg(C)|0;i=D;return C|0}if(!(b[(c[k>>2]|0)+68>>1]|0)){B=c[l>>2]|0;aA(C,B,If(c[l>>2]|0)|0);C=eg(C)|0;i=D;return C|0}while(1){if(!(a[c[l>>2]>>0]|0)){f=33;break}c[q>>2]=lJ(c[l>>2]|0,t)|0;aA(C,c[l>>2]|0,c[q>>2]|0);c[l>>2]=(c[l>>2]|0)+(c[q>>2]|0);if(!(c[t>>2]|0)){f=33;break}do if((a[c[l>>2]>>0]|0)==63)if((c[t>>2]|0)>1){Li((c[l>>2]|0)+1|0,p)|0;break}else{c[p>>2]=c[u>>2];break}else c[p>>2]=vh(c[k>>2]|0,c[l>>2]|0,c[t>>2]|0)|0;while(0);c[l>>2]=(c[l>>2]|0)+(c[t>>2]|0);c[u>>2]=(c[p>>2]|0)+1;c[v>>2]=(c[(c[k>>2]|0)+60>>2]|0)+(((c[p>>2]|0)-1|0)*40|0);if(e[(c[v>>2]|0)+8>>1]&1){aA(C,40498,4);continue}g=c[v>>2]|0;if(e[(c[v>>2]|0)+8>>1]&4){f=g;g=c[f+4>>2]|0;j=x;c[j>>2]=c[f>>2];c[j+4>>2]=g;$z(C,29137,x);continue}f=c[v>>2]|0;if(e[g+8>>1]&8){h[y>>3]=+h[f>>3];$z(C,29142,y);continue}if(e[f+8>>1]&2){a[n>>0]=a[(c[m>>2]|0)+62>>0]|0;if((d[n>>0]|0)!=1){f=w;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[w+32>>2]=c[m>>2];dh(w,c[(c[v>>2]|0)+16>>2]|0,c[(c[v>>2]|0)+12>>2]|0,a[n>>0]|0,0)|0;Zt(w,1)|0;c[v>>2]=w}c[r>>2]=c[(c[v>>2]|0)+12>>2];j=c[(c[v>>2]|0)+16>>2]|0;c[A>>2]=c[r>>2];c[A+4>>2]=j;$z(C,41314,A);if((d[n>>0]|0)==1)continue;Ug(w);continue}if(e[(c[v>>2]|0)+8>>1]&16384){c[B>>2]=c[c[v>>2]>>2];$z(C,41321,B);continue}aA(C,41334,2);c[s>>2]=c[(c[v>>2]|0)+12>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[s>>2]|0))break;c[z>>2]=a[(c[(c[v>>2]|0)+16>>2]|0)+(c[o>>2]|0)>>0]&255;$z(C,41337,z);c[o>>2]=(c[o>>2]|0)+1}aA(C,41342,1)}if((f|0)==33){C=eg(C)|0;i=D;return C|0}return 0}function lJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+16|0;f=l+12|0;j=l+8|0;h=l+4|0;g=l;c[e>>2]=b;c[f>>2]=d;c[h>>2]=0;c[c[f>>2]>>2]=0;while(1){if(!(a[c[e>>2]>>0]|0)){k=6;break}c[g>>2]=Qu(c[e>>2]|0,j)|0;d=c[g>>2]|0;if((c[j>>2]|0)==135)break;c[h>>2]=(c[h>>2]|0)+d;c[e>>2]=(c[e>>2]|0)+(c[g>>2]|0)}if((k|0)==6){k=c[h>>2]|0;i=l;return k|0}c[c[f>>2]>>2]=d;k=c[h>>2]|0;i=l;return k|0}function mJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if((c[e>>2]|0)>0)c[(c[d>>2]|0)+164>>2]=c[e>>2];i=f;return c[(c[d>>2]|0)+164>>2]|0}function nJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+32|0;b=g+16|0;d=g+12|0;e=g+4|0;f=g;c[d>>2]=a;c[g+8>>2]=5;do if(!((c[(c[d>>2]|0)+308>>2]|0)%5|0)){c[f>>2]=(c[(c[d>>2]|0)+308>>2]|0)+5<<2;f=c[f>>2]|0;c[e>>2]=Ew(c[d>>2]|0,c[(c[d>>2]|0)+332>>2]|0,f,((f|0)<0)<<31>>31)|0;if(c[e>>2]|0){f=(c[e>>2]|0)+(c[(c[d>>2]|0)+308>>2]<<2)|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[(c[d>>2]|0)+332>>2]=c[e>>2];break}c[b>>2]=7;f=c[b>>2]|0;i=g;return f|0}while(0);c[b>>2]=0;f=c[b>>2]|0;i=g;return f|0}function oJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=c[e>>2]|0;g=(c[f>>2]|0)+308|0;b=c[g>>2]|0;c[g>>2]=b+1;c[(c[(c[f>>2]|0)+332>>2]|0)+(b<<2)>>2]=a;yH(c[e>>2]|0);i=d;return}function pJ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+20|0;h=p+16|0;j=p+12|0;k=p+24|0;l=p+8|0;n=p+4|0;m=p;c[h>>2]=b;c[j>>2]=e;a[k>>0]=f;c[l>>2]=c[(c[h>>2]|0)+4>>2];c[n>>2]=0;c[m>>2]=c[(c[l>>2]|0)+72>>2];while(1){if(!(c[m>>2]|0))break;if((c[(c[m>>2]|0)+4>>2]|0)==(c[j>>2]|0)?(c[c[m>>2]>>2]|0)==(c[h>>2]|0):0){o=5;break}c[m>>2]=c[(c[m>>2]|0)+12>>2]}if((o|0)==5)c[n>>2]=c[m>>2];do if(!(c[n>>2]|0)){c[n>>2]=ig(16,0)|0;if(c[n>>2]|0){c[(c[n>>2]|0)+4>>2]=c[j>>2];c[c[n>>2]>>2]=c[h>>2];c[(c[n>>2]|0)+12>>2]=c[(c[l>>2]|0)+72>>2];c[(c[l>>2]|0)+72>>2]=c[n>>2];break}c[g>>2]=7;o=c[g>>2]|0;i=p;return o|0}while(0);if((d[k>>0]|0|0)>(d[(c[n>>2]|0)+8>>0]|0|0))a[(c[n>>2]|0)+8>>0]=a[k>>0]|0;c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}function qJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;e=g+20|0;h=g+16|0;k=g+12|0;l=g+8|0;j=g+4|0;f=g;c[e>>2]=a;c[h>>2]=b;c[k>>2]=d;c[l>>2]=((c[(c[e>>2]|0)+36>>2]|0)>>>0)/5|0;a=(c[k>>2]|0)-(c[h>>2]|0)|0;a=a+(lF(c[e>>2]|0,c[h>>2]|0)|0)|0;c[j>>2]=((a+(c[l>>2]|0)|0)>>>0)/((c[l>>2]|0)>>>0)|0;c[f>>2]=(c[h>>2]|0)-(c[k>>2]|0)-(c[j>>2]|0);if((c[h>>2]|0)>>>0>((((c[381]|0)>>>0)/((c[(c[e>>2]|0)+32>>2]|0)>>>0)|0)+1|0)>>>0?(c[f>>2]|0)>>>0<((((c[381]|0)>>>0)/((c[(c[e>>2]|0)+32>>2]|0)>>>0)|0)+1|0)>>>0:0)c[f>>2]=(c[f>>2]|0)+-1;while(1){l=lF(c[e>>2]|0,c[f>>2]|0)|0;if((l|0)==(c[f>>2]|0))b=1;else b=(c[f>>2]|0)==((((c[381]|0)>>>0)/((c[(c[e>>2]|0)+32>>2]|0)>>>0)|0)+1|0);d=c[f>>2]|0;if(!b)break;c[f>>2]=d+-1}i=g;return d|0}function rJ(b){b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;g=f+4|0;e=f;c[g>>2]=b;c[e>>2]=c[(c[g>>2]|0)+8>>2];while(1){if(!(c[e>>2]|0))break;g=(c[e>>2]|0)+64|0;a[g>>0]=(d[g>>0]|0)&-5;c[e>>2]=c[(c[e>>2]|0)+8>>2]}i=f;return}function sJ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+64|0;h=z+52|0;j=z+48|0;k=z+44|0;l=z+40|0;m=z+36|0;t=z+32|0;x=z+28|0;o=z+57|0;s=z+24|0;p=z+20|0;u=z+16|0;q=z+12|0;w=z+8|0;n=z+56|0;r=z+4|0;v=z;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;b=lF(c[j>>2]|0,c[l>>2]|0)|0;do if((b|0)!=(c[l>>2]|0)?(c[l>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[j>>2]|0)+32>>2]|0)>>>0)|0)+1|0):0){c[t>>2]=$q((c[(c[(c[j>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0;if(!(c[t>>2]|0)){c[h>>2]=101;y=c[h>>2]|0;i=z;return y|0}c[x>>2]=mF(c[j>>2]|0,c[l>>2]|0,o,s)|0;if(c[x>>2]|0){c[h>>2]=c[x>>2];y=c[h>>2]|0;i=z;return y|0}if((d[o>>0]|0|0)==1){c[h>>2]=Lj(59063)|0;y=c[h>>2]|0;i=z;return y|0}if((d[o>>0]|0|0)==2){if(c[m>>2]|0)break;c[x>>2]=tJ(c[j>>2]|0,u,p,c[l>>2]|0,1)|0;if(!(c[x>>2]|0)){qB(c[u>>2]|0);break}c[h>>2]=c[x>>2];y=c[h>>2]|0;i=z;return y|0}a[n>>0]=0;c[r>>2]=0;c[x>>2]=nF(c[j>>2]|0,c[l>>2]|0,w,0)|0;if(c[x>>2]|0){c[h>>2]=c[x>>2];y=c[h>>2]|0;i=z;return y|0}if(!(c[m>>2]|0)){a[n>>0]=2;c[r>>2]=c[k>>2]}do{c[x>>2]=tJ(c[j>>2]|0,v,q,c[r>>2]|0,a[n>>0]|0)|0;if(c[x>>2]|0){y=19;break}qB(c[v>>2]|0);if(!(c[m>>2]|0))break}while((c[q>>2]|0)>>>0>(c[k>>2]|0)>>>0);if((y|0)==19){qB(c[w>>2]|0);c[h>>2]=c[x>>2];y=c[h>>2]|0;i=z;return y|0}c[x>>2]=uJ(c[j>>2]|0,c[w>>2]|0,a[o>>0]|0,c[s>>2]|0,c[q>>2]|0,c[m>>2]|0)|0;qB(c[w>>2]|0);if(c[x>>2]|0){c[h>>2]=c[x>>2];y=c[h>>2]|0;i=z;return y|0}}while(0);if(!(c[m>>2]|0)){while(1){c[l>>2]=(c[l>>2]|0)+-1;if((c[l>>2]|0)==((((c[381]|0)>>>0)/((c[(c[j>>2]|0)+32>>2]|0)>>>0)|0)+1|0))continue;y=lF(c[j>>2]|0,c[l>>2]|0)|0;if((y|0)!=(c[l>>2]|0))break}a[(c[j>>2]|0)+19>>0]=1;c[(c[j>>2]|0)+44>>2]=c[l>>2]}c[h>>2]=0;y=c[h>>2]|0;i=z;return y|0}function tJ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=i;i=i+112|0;H=L+96|0;m=L+92|0;n=L+88|0;o=L+84|0;p=L+80|0;q=L+102|0;F=L+76|0;K=L+72|0;B=L+68|0;z=L+64|0;J=L+60|0;I=L+56|0;A=L+52|0;y=L+48|0;G=L+101|0;C=L+44|0;k=L+100|0;E=L+40|0;w=L+36|0;s=L+32|0;x=L+28|0;r=L+24|0;v=L+20|0;u=L+16|0;t=L+12|0;D=L+8|0;j=L+4|0;l=L;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;a[q>>0]=h;c[J>>2]=0;c[I>>2]=0;c[F>>2]=c[(c[m>>2]|0)+12>>2];c[A>>2]=$E(c[m>>2]|0)|0;c[B>>2]=$q((c[(c[F>>2]|0)+56>>2]|0)+36|0)|0;if((c[B>>2]|0)>>>0>=(c[A>>2]|0)>>>0){c[H>>2]=Lj(61115)|0;K=c[H>>2]|0;i=L;return K|0}a:do if((c[B>>2]|0)>>>0>0){a[G>>0]=0;c[C>>2]=0;do if((d[q>>0]|0)==1){if((c[p>>2]|0)>>>0<=(c[A>>2]|0)>>>0){c[K>>2]=mF(c[m>>2]|0,c[p>>2]|0,k,0)|0;if(c[K>>2]|0){c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}else{if((d[k>>0]|0)!=2)break;a[G>>0]=1;break}}}else if((d[q>>0]|0)==2)a[G>>0]=1;while(0);c[K>>2]=Dg(c[(c[F>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0){c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}Xs((c[(c[F>>2]|0)+56>>2]|0)+36|0,(c[B>>2]|0)-1|0);b:while(1){c[I>>2]=c[J>>2];if(c[I>>2]|0)c[y>>2]=$q(c[(c[I>>2]|0)+56>>2]|0)|0;else c[y>>2]=$q((c[(c[F>>2]|0)+56>>2]|0)+32|0)|0;if((c[y>>2]|0)>>>0<=(c[A>>2]|0)>>>0?(e=c[C>>2]|0,c[C>>2]=e+1,e>>>0<=(c[B>>2]|0)>>>0):0)c[K>>2]=BJ(c[m>>2]|0,c[y>>2]|0,J,0)|0;else c[K>>2]=Lj(61171)|0;if(c[K>>2]|0){j=23;break}c[z>>2]=$q((c[(c[J>>2]|0)+56>>2]|0)+4|0)|0;c:do if((c[z>>2]|0)!=0|(a[G>>0]|0)!=0){if((c[z>>2]|0)>>>0>((((c[(c[m>>2]|0)+36>>2]|0)>>>0)/4|0)-2|0)>>>0){j=28;break b}do if(d[G>>0]|0){if((c[p>>2]|0)!=(c[y>>2]|0)){if((c[y>>2]|0)>>>0>=(c[p>>2]|0)>>>0)break;if((d[q>>0]|0)!=2)break}c[c[o>>2]>>2]=c[y>>2];c[c[n>>2]>>2]=c[J>>2];a[G>>0]=0;c[K>>2]=Dg(c[(c[J>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0)break a;do if(!(c[z>>2]|0)){if(!(c[I>>2]|0)){e=(c[(c[F>>2]|0)+56>>2]|0)+32|0;f=c[(c[J>>2]|0)+56>>2]|0;a[e>>0]=a[f>>0]|0;a[e+1>>0]=a[f+1>>0]|0;a[e+2>>0]=a[f+2>>0]|0;a[e+3>>0]=a[f+3>>0]|0;break}c[K>>2]=Dg(c[(c[I>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0)break a;e=c[(c[I>>2]|0)+56>>2]|0;f=c[(c[J>>2]|0)+56>>2]|0;a[e>>0]=a[f>>0]|0;a[e+1>>0]=a[f+1>>0]|0;a[e+2>>0]=a[f+2>>0]|0;a[e+3>>0]=a[f+3>>0]|0}else{c[w>>2]=$q((c[(c[J>>2]|0)+56>>2]|0)+8|0)|0;if((c[w>>2]|0)>>>0>(c[A>>2]|0)>>>0){j=40;break b}c[K>>2]=BJ(c[m>>2]|0,c[w>>2]|0,E,0)|0;if(c[K>>2]|0)break a;c[K>>2]=Dg(c[(c[E>>2]|0)+72>>2]|0)|0;h=c[E>>2]|0;if(c[K>>2]|0){j=43;break b}e=c[h+56>>2]|0;f=c[(c[J>>2]|0)+56>>2]|0;a[e>>0]=a[f>>0]|0;a[e+1>>0]=a[f+1>>0]|0;a[e+2>>0]=a[f+2>>0]|0;a[e+3>>0]=a[f+3>>0]|0;Xs((c[(c[E>>2]|0)+56>>2]|0)+4|0,(c[z>>2]|0)-1|0);iR((c[(c[E>>2]|0)+56>>2]|0)+8|0,(c[(c[J>>2]|0)+56>>2]|0)+12|0,(c[z>>2]|0)-1<<2|0)|0;qB(c[E>>2]|0);if(!(c[I>>2]|0)){Xs((c[(c[F>>2]|0)+56>>2]|0)+32|0,c[w>>2]|0);break}c[K>>2]=Dg(c[(c[I>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0)break a;Xs(c[(c[I>>2]|0)+56>>2]|0,c[w>>2]|0)}while(0);c[J>>2]=0;break c}while(0);if((c[z>>2]|0)>>>0>0){c[r>>2]=c[(c[J>>2]|0)+56>>2];e=(c[p>>2]|0)>>>0>0;c[s>>2]=0;d:do if(e)if((d[q>>0]|0)==2){c[v>>2]=0;while(1){if((c[v>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break d;c[x>>2]=$q((c[r>>2]|0)+(8+(c[v>>2]<<2))|0)|0;j=c[v>>2]|0;if((c[x>>2]|0)>>>0<=(c[p>>2]|0)>>>0)break;c[v>>2]=j+1}c[s>>2]=j;break}else{e=$q((c[r>>2]|0)+8|0)|0;c[u>>2]=yj(e-(c[p>>2]|0)|0)|0;c[v>>2]=1;while(1){if((c[v>>2]|0)>>>0>=(c[z>>2]|0)>>>0)break d;e=$q((c[r>>2]|0)+(8+(c[v>>2]<<2))|0)|0;c[t>>2]=yj(e-(c[p>>2]|0)|0)|0;if((c[t>>2]|0)<(c[u>>2]|0)){c[s>>2]=c[v>>2];c[u>>2]=c[t>>2]}c[v>>2]=(c[v>>2]|0)+1}}while(0);c[x>>2]=$q((c[r>>2]|0)+(8+(c[s>>2]<<2))|0)|0;if((c[x>>2]|0)>>>0>(c[A>>2]|0)>>>0){j=63;break b}if((a[G>>0]|0)!=0?(c[x>>2]|0)!=(c[p>>2]|0):0){if((c[x>>2]|0)>>>0>=(c[p>>2]|0)>>>0)break;if((d[q>>0]|0)!=2)break}c[c[o>>2]>>2]=c[x>>2];c[K>>2]=Dg(c[(c[J>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0)break a;if((c[s>>2]|0)>>>0<((c[z>>2]|0)-1|0)>>>0){e=(c[r>>2]|0)+(8+(c[s>>2]<<2))|0;f=(c[r>>2]|0)+(4+(c[z>>2]<<2))|0;a[e>>0]=a[f>>0]|0;a[e+1>>0]=a[f+1>>0]|0;a[e+2>>0]=a[f+2>>0]|0;a[e+3>>0]=a[f+3>>0]|0}Xs((c[r>>2]|0)+4|0,(c[z>>2]|0)-1|0);e=(CJ(c[m>>2]|0,c[c[o>>2]>>2]|0)|0)!=0^1;c[D>>2]=e?1:0;c[K>>2]=BJ(c[m>>2]|0,c[c[o>>2]>>2]|0,c[n>>2]|0,c[D>>2]|0)|0;do if(!(c[K>>2]|0)){c[K>>2]=Dg(c[(c[c[n>>2]>>2]|0)+72>>2]|0)|0;if(!(c[K>>2]|0))break;qB(c[c[n>>2]>>2]|0);c[c[n>>2]>>2]=0}while(0);a[G>>0]=0}}else{c[K>>2]=Dg(c[(c[J>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0)break a;c[c[o>>2]>>2]=c[y>>2];e=(c[(c[F>>2]|0)+56>>2]|0)+32|0;f=c[(c[J>>2]|0)+56>>2]|0;a[e>>0]=a[f>>0]|0;a[e+1>>0]=a[f+1>>0]|0;a[e+2>>0]=a[f+2>>0]|0;a[e+3>>0]=a[f+3>>0]|0;c[c[n>>2]>>2]=c[J>>2];c[J>>2]=0}while(0);qB(c[I>>2]|0);c[I>>2]=0;if(!(a[G>>0]|0))break a}if((j|0)==23){c[J>>2]=0;break}else if((j|0)==28){c[K>>2]=Lj(61200)|0;break}else if((j|0)==40){c[K>>2]=Lj(61234)|0;break}else if((j|0)==43){qB(h);break}else if((j|0)==63){c[K>>2]=Lj(61299)|0;break}}else{c[j>>2]=0==(d[(c[m>>2]|0)+19>>0]|0)?1:0;c[K>>2]=Dg(c[(c[(c[m>>2]|0)+12>>2]|0)+72>>2]|0)|0;if(c[K>>2]|0){c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}G=(c[m>>2]|0)+44|0;c[G>>2]=(c[G>>2]|0)+1;if((c[(c[m>>2]|0)+44>>2]|0)==((((c[381]|0)>>>0)/((c[(c[m>>2]|0)+32>>2]|0)>>>0)|0)+1|0)){G=(c[m>>2]|0)+44|0;c[G>>2]=(c[G>>2]|0)+1}do if((d[(c[m>>2]|0)+17>>0]|0)!=0?(G=lF(c[m>>2]|0,c[(c[m>>2]|0)+44>>2]|0)|0,(G|0)==(c[(c[m>>2]|0)+44>>2]|0)):0){c[l>>2]=0;c[K>>2]=BJ(c[m>>2]|0,c[(c[m>>2]|0)+44>>2]|0,l,c[j>>2]|0)|0;if(!(c[K>>2]|0)){c[K>>2]=Dg(c[(c[l>>2]|0)+72>>2]|0)|0;qB(c[l>>2]|0)}if(c[K>>2]|0){c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}else{G=(c[m>>2]|0)+44|0;c[G>>2]=(c[G>>2]|0)+1;if((c[(c[m>>2]|0)+44>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[m>>2]|0)+32>>2]|0)>>>0)|0)+1|0))break;G=(c[m>>2]|0)+44|0;c[G>>2]=(c[G>>2]|0)+1;break}}while(0);Xs((c[(c[(c[m>>2]|0)+12>>2]|0)+56>>2]|0)+28|0,c[(c[m>>2]|0)+44>>2]|0);c[c[o>>2]>>2]=c[(c[m>>2]|0)+44>>2];c[K>>2]=BJ(c[m>>2]|0,c[c[o>>2]>>2]|0,c[n>>2]|0,c[j>>2]|0)|0;if(c[K>>2]|0){c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}else{c[K>>2]=Dg(c[(c[c[n>>2]>>2]|0)+72>>2]|0)|0;if(!(c[K>>2]|0))break;qB(c[c[n>>2]>>2]|0);c[c[n>>2]>>2]=0;break}}while(0);qB(c[J>>2]|0);qB(c[I>>2]|0);c[H>>2]=c[K>>2];K=c[H>>2]|0;i=L;return K|0}function uJ(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=i;i=i+48|0;n=v+40|0;o=v+36|0;k=v+32|0;p=v+44|0;q=v+28|0;r=v+24|0;w=v+20|0;t=v+16|0;s=v+12|0;x=v+8|0;u=v+4|0;l=v;c[o>>2]=b;c[k>>2]=e;a[p>>0]=f;c[q>>2]=g;c[r>>2]=h;c[w>>2]=j;c[s>>2]=c[(c[k>>2]|0)+84>>2];c[x>>2]=c[c[o>>2]>>2];c[u>>2]=vJ(c[x>>2]|0,c[(c[k>>2]|0)+72>>2]|0,c[r>>2]|0,c[w>>2]|0)|0;if(c[u>>2]|0){c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}c[(c[k>>2]|0)+84>>2]=c[r>>2];if((d[p>>0]|0|0)!=5?(d[p>>0]|0|0)!=1:0){c[l>>2]=$q(c[(c[k>>2]|0)+56>>2]|0)|0;if((c[l>>2]|0)!=0?(xJ(c[o>>2]|0,c[l>>2]|0,4,c[r>>2]|0,u),(c[u>>2]|0)!=0):0){c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}}else m=5;if((m|0)==5?(c[u>>2]=wJ(c[k>>2]|0)|0,(c[u>>2]|0)!=0):0){c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}do if((d[p>>0]|0|0)!=1){c[u>>2]=nF(c[o>>2]|0,c[q>>2]|0,t,0)|0;if(c[u>>2]|0){c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}c[u>>2]=Dg(c[(c[t>>2]|0)+72>>2]|0)|0;k=c[t>>2]|0;if(c[u>>2]|0){qB(k);c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}else{c[u>>2]=yJ(k,c[s>>2]|0,c[r>>2]|0,a[p>>0]|0)|0;qB(c[t>>2]|0);if(c[u>>2]|0)break;xJ(c[o>>2]|0,c[r>>2]|0,a[p>>0]|0,c[q>>2]|0,u);break}}while(0);c[n>>2]=c[u>>2];x=c[n>>2]|0;i=v;return x|0}function vJ(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;k=t+36|0;l=t+32|0;m=t+28|0;n=t+24|0;j=t+20|0;r=t+16|0;o=t+12|0;s=t+8|0;p=t+4|0;q=t;c[l>>2]=d;c[m>>2]=f;c[n>>2]=g;c[j>>2]=h;c[o>>2]=0;if((a[(c[l>>2]|0)+16>>0]|0)!=0?(c[s>>2]=Dg(c[m>>2]|0)|0,(c[s>>2]|0)!=0):0){c[k>>2]=c[s>>2];s=c[k>>2]|0;i=t;return s|0}if((e[(c[m>>2]|0)+24>>1]&2|0)!=0?(g=lt(c[m>>2]|0)|0,c[s>>2]=g,0!=(g|0)):0){c[k>>2]=c[s>>2];s=c[k>>2]|0;i=t;return s|0}if(!((c[j>>2]|0)!=0?1:(e[(c[m>>2]|0)+24>>1]&8|0)==0))c[o>>2]=c[(c[m>>2]|0)+20>>2];g=(c[m>>2]|0)+24|0;b[g>>1]=e[g>>1]&-9;c[r>>2]=Zr(c[l>>2]|0,c[n>>2]|0)|0;do if(c[r>>2]|0){j=(c[m>>2]|0)+24|0;b[j>>1]=e[j>>1]|e[(c[r>>2]|0)+24>>1]&8;j=c[r>>2]|0;if(a[(c[l>>2]|0)+16>>0]|0){AJ(j,(c[(c[l>>2]|0)+28>>2]|0)+1|0);break}else{ws(j);break}}while(0);c[p>>2]=c[(c[m>>2]|0)+20>>2];AJ(c[m>>2]|0,c[n>>2]|0);$r(c[m>>2]|0);if(a[(c[l>>2]|0)+16>>0]|0){AJ(c[r>>2]|0,c[p>>2]|0);zs(c[r>>2]|0)}do if(c[o>>2]|0){c[s>>2]=sg(c[l>>2]|0,c[o>>2]|0,q,0)|0;if(!(c[s>>2]|0)){s=(c[q>>2]|0)+24|0;b[s>>1]=e[s>>1]|8;$r(c[q>>2]|0);zs(c[q>>2]|0);break}if((c[o>>2]|0)>>>0<=(c[(c[l>>2]|0)+32>>2]|0)>>>0)hj(c[(c[l>>2]|0)+60>>2]|0,c[o>>2]|0,c[(c[l>>2]|0)+208>>2]|0);c[k>>2]=c[s>>2];s=c[k>>2]|0;i=t;return s|0}while(0);c[k>>2]=0;s=c[k>>2]|0;i=t;return s|0}function wJ(b){b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+32|0;j=q+28|0;l=q+24|0;p=q+20|0;m=q+16|0;k=q+36|0;o=q+12|0;n=q+8|0;g=q+4|0;h=q;c[f>>2]=b;c[m>>2]=c[(c[f>>2]|0)+52>>2];a[k>>0]=a[c[f>>2]>>0]|0;c[o>>2]=c[(c[f>>2]|0)+84>>2];c[p>>2]=Kt(c[f>>2]|0)|0;if(c[p>>2]|0){n=a[k>>0]|0;o=c[f>>2]|0;a[o>>0]=n;p=c[p>>2]|0;i=q;return p|0}c[l>>2]=e[(c[f>>2]|0)+18>>1];c[j>>2]=0;while(1){b=c[f>>2]|0;if((c[j>>2]|0)>=(c[l>>2]|0))break;c[n>>2]=(c[b+56>>2]|0)+(e[(c[f>>2]|0)+20>>1]&(d[(c[(c[f>>2]|0)+64>>2]|0)+(c[j>>2]<<1)>>0]<<8|d[(c[(c[f>>2]|0)+64>>2]|0)+(c[j>>2]<<1)+1>>0]));zJ(c[f>>2]|0,c[n>>2]|0,p);if(!(a[(c[f>>2]|0)+4>>0]|0)){c[g>>2]=$q(c[n>>2]|0)|0;xJ(c[m>>2]|0,c[g>>2]|0,5,c[o>>2]|0,p)}c[j>>2]=(c[j>>2]|0)+1}if(a[b+4>>0]|0){n=a[k>>0]|0;o=c[f>>2]|0;a[o>>0]=n;p=c[p>>2]|0;i=q;return p|0}c[h>>2]=$q((c[(c[f>>2]|0)+56>>2]|0)+((d[(c[f>>2]|0)+5>>0]|0)+8)|0)|0;xJ(c[m>>2]|0,c[h>>2]|0,5,c[o>>2]|0,p);n=a[k>>0]|0;o=c[f>>2]|0;a[o>>0]=n;p=c[p>>2]|0;i=q;return p|0}function xJ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;j=t+32|0;k=t+28|0;l=t+36|0;m=t+24|0;n=t+20|0;q=t+16|0;r=t+12|0;o=t+8|0;p=t+4|0;s=t;c[j>>2]=b;c[k>>2]=e;a[l>>0]=f;c[m>>2]=g;c[n>>2]=h;if(c[c[n>>2]>>2]|0){i=t;return}if(!(c[k>>2]|0)){s=Lj(56501)|0;c[c[n>>2]>>2]=s;i=t;return}c[o>>2]=lF(c[j>>2]|0,c[k>>2]|0)|0;c[s>>2]=sg(c[c[j>>2]>>2]|0,c[o>>2]|0,q,0)|0;if(c[s>>2]|0){c[c[n>>2]>>2]=c[s>>2];i=t;return}c[p>>2]=((c[k>>2]|0)-(c[o>>2]|0)-1|0)*5;do if((c[p>>2]|0)>=0){c[r>>2]=tg(c[q>>2]|0)|0;if((d[l>>0]|0|0)==(d[(c[r>>2]|0)+(c[p>>2]|0)>>0]|0|0)?(g=$q((c[r>>2]|0)+((c[p>>2]|0)+1)|0)|0,(g|0)==(c[m>>2]|0)):0)break;g=Dg(c[q>>2]|0)|0;c[s>>2]=g;c[c[n>>2]>>2]=g;if(!(c[s>>2]|0)){a[(c[r>>2]|0)+(c[p>>2]|0)>>0]=a[l>>0]|0;Xs((c[r>>2]|0)+((c[p>>2]|0)+1)|0,c[m>>2]|0)}}else{s=Lj(56512)|0;c[c[n>>2]>>2]=s}while(0);vg(c[q>>2]|0);i=t;return}function yJ(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+64|0;j=v+52|0;k=v+48|0;l=v+44|0;m=v+40|0;n=v+57|0;q=v+56|0;o=v+36|0;r=v+32|0;t=v+28|0;s=v+24|0;p=v;c[k>>2]=b;c[l>>2]=f;c[m>>2]=g;a[n>>0]=h;h=c[k>>2]|0;do if((d[n>>0]|0|0)==4){u=$q(c[h+56>>2]|0)|0;if((u|0)==(c[l>>2]|0)){Xs(c[(c[k>>2]|0)+56>>2]|0,c[m>>2]|0);break}c[j>>2]=Lj(58893)|0;u=c[j>>2]|0;i=v;return u|0}else{a[q>>0]=a[h>>0]|0;c[t>>2]=Kt(c[k>>2]|0)|0;if(c[t>>2]|0){c[j>>2]=c[t>>2];u=c[j>>2]|0;i=v;return u|0}c[r>>2]=e[(c[k>>2]|0)+18>>1];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[r>>2]|0))break;c[s>>2]=(c[(c[k>>2]|0)+56>>2]|0)+((e[(c[k>>2]|0)+20>>1]|0)&((d[(c[(c[k>>2]|0)+64>>2]|0)+(c[o>>2]<<1)>>0]|0)<<8|(d[(c[(c[k>>2]|0)+64>>2]|0)+(c[o>>2]<<1)+1>>0]|0)));if((d[n>>0]|0|0)==3){Ub[c[(c[k>>2]|0)+80>>2]&255](c[k>>2]|0,c[s>>2]|0,p);if(((e[p+16>>1]|0)>>>0<(c[p+12>>2]|0)>>>0?((c[s>>2]|0)+(e[p+18>>1]|0)+-1|0)>>>0<=((c[(c[k>>2]|0)+56>>2]|0)+(e[(c[k>>2]|0)+20>>1]|0)|0)>>>0:0)?(t=c[l>>2]|0,(t|0)==($q((c[s>>2]|0)+(e[p+18>>1]|0)+-4|0)|0)):0){u=13;break}}else{t=$q(c[s>>2]|0)|0;if((t|0)==(c[l>>2]|0)){u=15;break}}c[o>>2]=(c[o>>2]|0)+1}if((u|0)==13)Xs((c[s>>2]|0)+(e[p+18>>1]|0)+-4|0,c[m>>2]|0);else if((u|0)==15)Xs(c[s>>2]|0,c[m>>2]|0);do if((c[o>>2]|0)==(c[r>>2]|0)){if((d[n>>0]|0|0)==5?(u=$q((c[(c[k>>2]|0)+56>>2]|0)+((d[(c[k>>2]|0)+5>>0]|0)+8)|0)|0,(u|0)==(c[l>>2]|0)):0){Xs((c[(c[k>>2]|0)+56>>2]|0)+((d[(c[k>>2]|0)+5>>0]|0)+8)|0,c[m>>2]|0);break}c[j>>2]=Lj(58929)|0;u=c[j>>2]|0;i=v;return u|0}while(0);a[c[k>>2]>>0]=a[q>>0]|0}while(0);c[j>>2]=0;u=c[j>>2]|0;i=v;return u|0}function zJ(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+48|0;f=l+36|0;g=l+32|0;h=l+28|0;j=l;k=l+24|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if(c[c[h>>2]>>2]|0){i=l;return}Ub[c[(c[f>>2]|0)+80>>2]&255](c[f>>2]|0,c[g>>2]|0,j);if((e[j+16>>1]|0)>>>0>=(c[j+12>>2]|0)>>>0){i=l;return}c[k>>2]=$q((c[g>>2]|0)+((e[j+18>>1]|0)-4)|0)|0;xJ(c[(c[f>>2]|0)+52>>2]|0,c[k>>2]|0,3,c[(c[f>>2]|0)+84>>2]|0,c[h>>2]|0);i=l;return}function AJ(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;h=f;c[d>>2]=a;c[g>>2]=b;c[h>>2]=c[(c[d>>2]|0)+28>>2];_b[c[148>>2]&255](c[(c[h>>2]|0)+44>>2]|0,c[c[d>>2]>>2]|0,c[(c[d>>2]|0)+20>>2]|0,c[g>>2]|0);c[(c[d>>2]|0)+20>>2]=c[g>>2];if(!((e[(c[d>>2]|0)+24>>1]|0)&2)){i=f;return}if(!((e[(c[d>>2]|0)+24>>1]|0)&8)){i=f;return}cj(c[d>>2]|0,3);i=f;return}function BJ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;g=k+20|0;n=k+16|0;m=k+12|0;h=k+8|0;l=k+4|0;j=k;c[n>>2]=b;c[m>>2]=d;c[h>>2]=e;c[l>>2]=f;c[j>>2]=nF(c[n>>2]|0,c[m>>2]|0,c[h>>2]|0,c[l>>2]|0)|0;f=c[h>>2]|0;do if(!(c[j>>2]|0)){n=(Jt(c[(c[f>>2]|0)+72>>2]|0)|0)>1;f=c[c[h>>2]>>2]|0;if(!n){a[f>>0]=0;break}qB(f);c[c[h>>2]>>2]=0;c[g>>2]=Lj(57630)|0;n=c[g>>2]|0;i=k;return n|0}else c[f>>2]=0;while(0);c[g>>2]=c[j>>2];n=c[g>>2]|0;i=k;return n|0}function CJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[d>>2]=b;c[e>>2]=c[(c[g>>2]|0)+60>>2];if(!(c[e>>2]|0)){g=0;g=g&1;i=f;return g|0}g=c[d>>2]|0;if(g>>>0>(jj(c[e>>2]|0)|0)>>>0){g=1;g=g&1;i=f;return g|0}g=(ij(c[e>>2]|0,c[d>>2]|0)|0)!=0;g=g&1;i=f;return g|0}function DJ(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+16>>0]|0|0}function EJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if(!(c[h>>2]|0)){c[e>>2]=7;d=c[e>>2]|0;i=k;return d|0}if(cf(c[f>>2]|0,c[h>>2]|0,-1,j,0)|0){b=c[g>>2]|0;d=c[f>>2]|0;xj(b,d,bf(c[f>>2]|0)|0);c[e>>2]=Cf(c[f>>2]|0)|0;d=c[e>>2]|0;i=k;return d|0}else{ue(c[j>>2]|0)|0;c[e>>2]=JJ(c[f>>2]|0,c[j>>2]|0,c[g>>2]|0)|0;d=c[e>>2]|0;i=k;return d|0}return 0}function FJ(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;kg(c[e>>2]|0);c[b>>2]=KJ(c[e>>2]|0)|0;i=d;return c[b>>2]|0}function GJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+20|0;f=k+16|0;g=k+12|0;l=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[l>>2]=d;c[j>>2]=cf(c[f>>2]|0,c[l>>2]|0,-1,h,0)|0;if(c[j>>2]|0){c[e>>2]=c[j>>2];l=c[e>>2]|0;i=k;return l|0}while(1){l=100==(ue(c[h>>2]|0)|0);a=c[f>>2]|0;if(!l){b=6;break}l=c[g>>2]|0;c[j>>2]=EJ(a,l,Fe(c[h>>2]|0,0)|0)|0;if(c[j>>2]|0){b=5;break}}if((b|0)==5){JJ(c[f>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;c[e>>2]=c[j>>2];l=c[e>>2]|0;i=k;return l|0}else if((b|0)==6){c[e>>2]=JJ(a,c[h>>2]|0,c[g>>2]|0)|0;l=c[e>>2]|0;i=k;return l|0}return 0}function HJ(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+80|0;h=m+68|0;j=m+64|0;l=m+60|0;g=m+56|0;k=m+8|0;f=m;c[h>>2]=a;c[j>>2]=d;kg(c[h>>2]|0);kg(c[j>>2]|0);c[g>>2]=Bg(Of(c[h>>2]|0)|0)|0;if((c[c[g>>2]>>2]|0)!=0?(d=pg(c[j>>2]|0)|0,d=rR(d|0,((d|0)<0)<<31>>31|0,rg(c[j>>2]|0)|0,0)|0,a=f,c[a>>2]=d,c[a+4>>2]=C,a=vi(c[g>>2]|0,11,f)|0,c[l>>2]=a,c[l>>2]=(c[l>>2]|0)==12?0:a,(c[l>>2]|0)!=0):0){l=c[l>>2]|0;i=m;return l|0}f=k;g=f+48|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[k+20>>2]=c[c[j>>2]>>2];c[k+24>>2]=c[j>>2];c[k+4>>2]=c[h>>2];c[k+16>>2]=1;Vd(k,2147483647)|0;c[l>>2]=Wd(k)|0;if(!(c[l>>2]|0)){k=(c[(c[h>>2]|0)+4>>2]|0)+22|0;b[k>>1]=(e[k>>1]|0)&-3;l=c[l>>2]|0;i=m;return l|0}else{IJ(Of(c[k+4>>2]|0)|0);l=c[l>>2]|0;i=m;return l|0}return 0}function IJ(b){b=b|0;var e=0,f=0;f=i;i=i+16|0;e=f;c[e>>2]=b;if(a[(c[e>>2]|0)+16>>0]|0){i=f;return}if(d[(c[e>>2]|0)+13>>0]|0){i=f;return}Ui(c[e>>2]|0);i=f;return}function JJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+12|0;j=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[j>>2]=b;c[f>>2]=d;c[g>>2]=Qg(c[j>>2]|0)|0;if(!(c[g>>2]|0)){j=c[g>>2]|0;i=h;return j|0}d=c[f>>2]|0;j=c[e>>2]|0;xj(d,j,bf(c[e>>2]|0)|0);j=c[g>>2]|0;i=h;return j|0}function KJ(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=(c[(c[(c[e>>2]|0)+4>>2]|0)+32>>2]|0)-(c[(c[(c[e>>2]|0)+4>>2]|0)+36>>2]|0);i=d;return c[b>>2]|0}function LJ(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+64|0;n=q+32|0;o=q+28|0;p=q+24|0;f=q+20|0;j=q+16|0;e=q+12|0;h=q+8|0;g=q+4|0;k=q;m=q+40|0;c[o>>2]=b;c[p>>2]=0;if((d[(c[o>>2]|0)+16>>0]|0)!=0?(c[(c[o>>2]|0)+44>>2]|0)!=0:0){c[n>>2]=c[(c[o>>2]|0)+44>>2];p=c[n>>2]|0;i=q;return p|0}do if((sr(c[o>>2]|0)|0)==0?(d[(c[o>>2]|0)+17>>0]|0)==0:0){c[f>>2]=1;c[p>>2]=ut(c[o>>2]|0,1)|0;if(!(c[p>>2]|0)){if((d[(c[o>>2]|0)+18>>0]|0)<=1)c[p>>2]=MJ(c[o>>2]|0,f)|0;if(!(c[p>>2]|0)){if(c[f>>2]|0){if(a[(c[o>>2]|0)+15>>0]|0){c[p>>2]=776;break}c[p>>2]=vt(c[o>>2]|0,4)|0;if(c[p>>2]|0)break;if((((c[c[(c[o>>2]|0)+68>>2]>>2]|0)==0?(c[j>>2]=c[c[o>>2]>>2],c[p>>2]=Nr(c[j>>2]|0,c[(c[o>>2]|0)+180>>2]|0,0,e)|0,(c[p>>2]|0)==0&(c[e>>2]|0)!=0):0)?(c[h>>2]=0,c[g>>2]=2050,c[p>>2]=Vr(c[j>>2]|0,c[(c[o>>2]|0)+180>>2]|0,c[(c[o>>2]|0)+68>>2]|0,c[g>>2]|0,h)|0,(c[p>>2]|0)==0):0)?(c[h>>2]&1|0)!=0:0){c[p>>2]=et(48855)|0;hr(c[(c[o>>2]|0)+68>>2]|0)|0}e=c[o>>2]|0;if(c[c[(c[o>>2]|0)+68>>2]>>2]|0){c[p>>2]=er(e)|0;if(!(c[p>>2]|0)){c[p>>2]=Lr(c[o>>2]|0,1)|0;a[(c[o>>2]|0)+17>>0]=0}}else if(!(a[e+4>>0]|0))wr(c[o>>2]|0,1)|0;if(c[p>>2]|0){fr(c[o>>2]|0,c[p>>2]|0)|0;break}}if((a[(c[o>>2]|0)+13>>0]|0)==0?(d[(c[o>>2]|0)+24>>0]|0)!=0:0){c[k>>2]=0;c[p>>2]=NJ(c[o>>2]|0,k)|0;if(c[p>>2]|0)break;if((c[k>>2]|0)>>>0>0){c[p>>2]=Wr(c[(c[o>>2]|0)+64>>2]|0,m,16,24,0)|0;if((c[p>>2]|0)!=0&(c[p>>2]|0)!=522)break}else{e=m;f=e+16|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0))}if(vQ((c[o>>2]|0)+112|0,m,16)|0)Ui(c[o>>2]|0)}c[p>>2]=OJ(c[o>>2]|0)|0;l=35}}}else l=35;while(0);if((l|0)==35){if(sr(c[o>>2]|0)|0)c[p>>2]=PJ(c[o>>2]|0)|0;if((c[p>>2]|0)==0?(d[(c[o>>2]|0)+17>>0]|0)==0:0)c[p>>2]=NJ(c[o>>2]|0,(c[o>>2]|0)+28|0)|0}e=c[o>>2]|0;if(c[p>>2]|0)dr(e);else{a[e+17>>0]=1;a[(c[o>>2]|0)+24>>0]=1}c[n>>2]=c[p>>2];p=c[n>>2]|0;i=q;return p|0}function MJ(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+32|0;g=q+28|0;o=q+24|0;p=q+20|0;h=q+16|0;l=q+12|0;m=q+8|0;n=q+4|0;j=q;k=q+36|0;c[f>>2]=b;c[g>>2]=e;c[o>>2]=c[c[f>>2]>>2];c[p>>2]=0;c[h>>2]=1;c[l>>2]=((c[c[(c[f>>2]|0)+68>>2]>>2]|0)!=0^1^1)&1;c[c[g>>2]>>2]=0;if(!(c[l>>2]|0))c[p>>2]=Nr(c[o>>2]|0,c[(c[f>>2]|0)+180>>2]|0,0,h)|0;if(!((c[p>>2]|0)==0&(c[h>>2]|0)!=0)){p=c[p>>2]|0;i=q;return p|0}c[m>>2]=0;c[p>>2]=WJ(c[(c[f>>2]|0)+64>>2]|0,m)|0;if((c[p>>2]|0)!=0|(c[m>>2]|0)!=0){p=c[p>>2]|0;i=q;return p|0}c[p>>2]=NJ(c[f>>2]|0,n)|0;if(c[p>>2]|0){p=c[p>>2]|0;i=q;return p|0}if(!((c[n>>2]|0)!=0|(c[l>>2]|0)!=0)){Sj();if((vt(c[f>>2]|0,2)|0)==0?(qr(c[o>>2]|0,c[(c[f>>2]|0)+180>>2]|0,0)|0,(a[(c[f>>2]|0)+4>>0]|0)==0):0)wr(c[f>>2]|0,1)|0;Tj();p=c[p>>2]|0;i=q;return p|0}if(!(c[l>>2]|0)){c[j>>2]=2049;c[p>>2]=Vr(c[o>>2]|0,c[(c[f>>2]|0)+180>>2]|0,c[(c[f>>2]|0)+68>>2]|0,c[j>>2]|0,j)|0}if(!(c[p>>2]|0)){a[k>>0]=0;o=Wr(c[(c[f>>2]|0)+68>>2]|0,k,1,0,0)|0;c[p>>2]=o;c[p>>2]=(c[p>>2]|0)==522?0:o;if(!(c[l>>2]|0))hr(c[(c[f>>2]|0)+68>>2]|0)|0;c[c[g>>2]>>2]=(d[k>>0]|0)!=0&1;p=c[p>>2]|0;i=q;return p|0}else{if((c[p>>2]|0)!=14){p=c[p>>2]|0;i=q;return p|0}c[c[g>>2]>>2]=1;c[p>>2]=0;p=c[p>>2]|0;i=q;return p|0}return 0}function NJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+24|0;e=k+20|0;f=k+16|0;h=k+12|0;g=k;j=k+8|0;c[e>>2]=a;c[f>>2]=b;c[h>>2]=VJ(c[(c[e>>2]|0)+216>>2]|0)|0;if(!(c[h>>2]|0)){b=g;c[b>>2]=0;c[b+4>>2]=0;if((c[c[(c[e>>2]|0)+64>>2]>>2]|0)!=0?(c[j>>2]=Si(c[(c[e>>2]|0)+64>>2]|0,g)|0,(c[j>>2]|0)!=0):0){c[d>>2]=c[j>>2];j=c[d>>2]|0;i=k;return j|0}j=g;b=c[(c[e>>2]|0)+160>>2]|0;b=gR(c[j>>2]|0,c[j+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;b=fR(b|0,C|0,1,0)|0;j=c[(c[e>>2]|0)+160>>2]|0;j=pR(b|0,C|0,j|0,((j|0)<0)<<31>>31|0)|0;c[h>>2]=j}if((c[h>>2]|0)>>>0>(c[(c[e>>2]|0)+164>>2]|0)>>>0)c[(c[e>>2]|0)+164>>2]=c[h>>2];c[c[f>>2]>>2]=c[h>>2];c[d>>2]=0;j=c[d>>2]|0;i=k;return j|0}function OJ(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;k=l+8|0;j=l+4|0;f=l;c[h>>2]=b;c[k>>2]=0;do if(!(a[(c[h>>2]|0)+13>>0]|0)){c[k>>2]=NJ(c[h>>2]|0,f)|0;if(c[k>>2]|0){c[g>>2]=c[k>>2];k=c[g>>2]|0;i=l;return k|0}b=c[c[h>>2]>>2]|0;e=c[(c[h>>2]|0)+220>>2]|0;if(!(c[f>>2]|0)){f=qr(b,e,0)|0;c[k>>2]=f;c[k>>2]=(c[k>>2]|0)==5898?0:f;c[j>>2]=0}else c[k>>2]=Nr(b,e,0,j)|0;if(!(c[k>>2]|0)){b=c[h>>2]|0;if(c[j>>2]|0){c[k>>2]=RJ(b,0)|0;break}if((d[b+5>>0]|0)==5)a[(c[h>>2]|0)+5>>0]=0}}while(0);c[g>>2]=c[k>>2];k=c[g>>2]|0;i=l;return k|0}function PJ(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+8|0;d=e+4|0;f=e;c[b>>2]=a;c[f>>2]=0;Gs(c[(c[b>>2]|0)+216>>2]|0);c[d>>2]=QJ(c[(c[b>>2]|0)+216>>2]|0,f)|0;if(!((c[d>>2]|0)!=0|(c[f>>2]|0)!=0)){ -f=c[d>>2]|0;i=e;return f|0}Ui(c[b>>2]|0);f=c[d>>2]|0;i=e;return f|0}function QJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;do{j=c[d>>2]|0;b=c[e>>2]|0;a=(c[f>>2]|0)+1|0;c[f>>2]=a;c[g>>2]=Ct(j,b,0,a)|0}while((c[g>>2]|0)==-1);i=h;return c[g>>2]|0}function RJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;e=k+12|0;f=k+8|0;g=k+4|0;h=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=0;do if((a[(c[f>>2]|0)+13>>0]|0)==0?(c[(c[f>>2]|0)+216>>2]|0)==0:0)if(aJ(c[f>>2]|0)|0){hr(c[(c[f>>2]|0)+68>>2]|0)|0;c[h>>2]=SJ(c[f>>2]|0)|0;if(c[h>>2]|0)break;a[(c[f>>2]|0)+5>>0]=5;a[(c[f>>2]|0)+17>>0]=0;break}else{c[e>>2]=14;j=c[e>>2]|0;i=k;return j|0}else j=7;while(0);if((j|0)==7)c[c[g>>2]>>2]=1;c[e>>2]=c[h>>2];j=c[e>>2]|0;i=k;return j|0}function SJ(b){b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=0;if(a[(c[e>>2]|0)+4>>0]|0)c[f>>2]=TJ(c[e>>2]|0)|0;if(c[f>>2]|0){b=c[e>>2]|0;Xi(b);f=c[f>>2]|0;i=g;return f|0}b=(c[e>>2]|0)+168|0;c[f>>2]=UJ(c[c[e>>2]>>2]|0,c[(c[e>>2]|0)+64>>2]|0,c[(c[e>>2]|0)+220>>2]|0,d[(c[e>>2]|0)+4>>0]|0,c[b>>2]|0,c[b+4>>2]|0,(c[e>>2]|0)+216|0)|0;b=c[e>>2]|0;Xi(b);f=c[f>>2]|0;i=g;return f|0}function TJ(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=vt(c[b>>2]|0,4)|0;if(!(c[d>>2]|0)){d=c[d>>2]|0;i=e;return d|0}wr(c[b>>2]|0,1)|0;d=c[d>>2]|0;i=e;return d|0}function UJ(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+48|0;l=w+44|0;m=w+40|0;n=w+36|0;o=w+32|0;p=w+28|0;q=w;r=w+24|0;v=w+20|0;u=w+16|0;s=w+12|0;t=w+8|0;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;f=q;c[f>>2]=h;c[f+4>>2]=j;c[r>>2]=k;c[c[r>>2]>>2]=0;c[u>>2]=ig(120+(c[(c[m>>2]|0)+4>>2]|0)|0,0)|0;if(!(c[u>>2]|0)){c[l>>2]=7;f=c[l>>2]|0;i=w;return f|0}c[c[u>>2]>>2]=c[m>>2];c[(c[u>>2]|0)+8>>2]=(c[u>>2]|0)+120;c[(c[u>>2]|0)+4>>2]=c[n>>2];b[(c[u>>2]|0)+40>>1]=-1;d=q;k=c[d+4>>2]|0;f=(c[u>>2]|0)+16|0;c[f>>2]=c[d>>2];c[f+4>>2]=k;c[(c[u>>2]|0)+108>>2]=c[o>>2];a[(c[u>>2]|0)+48>>0]=1;a[(c[u>>2]|0)+49>>0]=1;a[(c[u>>2]|0)+43>>0]=(c[p>>2]|0)!=0?2:0;c[s>>2]=524294;c[v>>2]=Vr(c[m>>2]|0,c[o>>2]|0,c[(c[u>>2]|0)+8>>2]|0,c[s>>2]|0,s)|0;if((c[v>>2]|0)==0?(c[s>>2]&1|0)!=0:0)a[(c[u>>2]|0)+46>>0]=1;if(c[v>>2]|0){Ls(c[u>>2]|0,0);hr(c[(c[u>>2]|0)+8>>2]|0)|0;Kd(c[u>>2]|0)}else{c[t>>2]=Sr(c[n>>2]|0)|0;if(c[t>>2]&1024)a[(c[u>>2]|0)+48>>0]=0;if(c[t>>2]&4096)a[(c[u>>2]|0)+49>>0]=0;c[c[r>>2]>>2]=c[u>>2]}c[l>>2]=c[v>>2];f=c[l>>2]|0;i=w;return f|0}function VJ(a){a=a|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[e>>2]=a;if((c[e>>2]|0)!=0?(b[(c[e>>2]|0)+40>>1]|0)>=0:0){c[d>>2]=c[(c[e>>2]|0)+52+20>>2];a=c[d>>2]|0;i=f;return a|0}c[d>>2]=0;a=c[d>>2]|0;i=f;return a|0}function WJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=Yb[c[(c[c[f>>2]>>2]|0)+36>>2]&255](c[f>>2]|0,c[e>>2]|0)|0;i=d;return b|0}function XJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+176|0;d=g+168|0;f=g+164|0;b=g+160|0;e=g;c[d>>2]=a;kR(e|0,0,160)|0;while(1){if(!(c[d>>2]|0))break;c[b>>2]=c[(c[d>>2]|0)+8>>2];c[(c[d>>2]|0)+8>>2]=0;c[f>>2]=0;while(1){if(!(c[e+(c[f>>2]<<2)>>2]|0))break;c[d>>2]=_J(c[e+(c[f>>2]<<2)>>2]|0,c[d>>2]|0)|0;c[e+(c[f>>2]<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+1}c[e+(c[f>>2]<<2)>>2]=c[d>>2];c[d>>2]=c[b>>2]}c[d>>2]=0;c[f>>2]=0;while(1){a=c[d>>2]|0;if((c[f>>2]|0)>>>0>=40)break;c[d>>2]=_J(a,c[e+(c[f>>2]<<2)>>2]|0)|0;c[f>>2]=(c[f>>2]|0)+1}i=g;return a|0}function YJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;d=g+8|0;e=g+4|0;f=g;c[b>>2]=a;c[e>>2]=c[b>>2];c[b>>2]=c[(c[e>>2]|0)+8>>2];c[(c[e>>2]|0)+8>>2]=0;c[(c[e>>2]|0)+12>>2]=0;c[d>>2]=1;while(1){a=c[e>>2]|0;if(!(c[b>>2]|0))break;c[f>>2]=a;c[e>>2]=c[b>>2];c[b>>2]=c[(c[e>>2]|0)+8>>2];c[(c[e>>2]|0)+12>>2]=c[f>>2];a=aK(b,c[d>>2]|0)|0;c[(c[e>>2]|0)+8>>2]=a;c[d>>2]=(c[d>>2]|0)+1}i=g;return a|0}function ZJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j+12|0;e=j+8|0;h=j+4|0;f=j;c[g>>2]=a;c[e>>2]=b;c[h>>2]=d;a=c[g>>2]|0;if(c[(c[g>>2]|0)+12>>2]|0){ZJ(c[a+12>>2]|0,c[e>>2]|0,f);c[(c[f>>2]|0)+8>>2]=c[g>>2]}else c[c[e>>2]>>2]=a;a=c[g>>2]|0;if(c[(c[g>>2]|0)+8>>2]|0){ZJ(c[a+8>>2]|0,(c[g>>2]|0)+8|0,c[h>>2]|0);i=j;return}else{c[c[h>>2]>>2]=a;i=j;return}}function _J(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;d=h+24|0;e=h+20|0;f=h;g=h+16|0;c[d>>2]=a;c[e>>2]=b;c[g>>2]=f;while(1){a=c[d>>2]|0;if(!((c[d>>2]|0)!=0?(c[e>>2]|0)!=0:0))break;k=c[a+4>>2]|0;b=c[e>>2]|0;j=c[b+4>>2]|0;if((k|0)<(j|0)|((k|0)==(j|0)?(c[a>>2]|0)>>>0<(c[b>>2]|0)>>>0:0)){c[(c[g>>2]|0)+8>>2]=c[d>>2];c[d>>2]=c[(c[d>>2]|0)+8>>2];c[g>>2]=c[(c[g>>2]|0)+8>>2];continue}j=c[e>>2]|0;a=c[j+4>>2]|0;k=c[d>>2]|0;b=c[k+4>>2]|0;if((a|0)<(b|0)|((a|0)==(b|0)?(c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0:0)){c[(c[g>>2]|0)+8>>2]=c[e>>2];c[e>>2]=c[(c[e>>2]|0)+8>>2];c[g>>2]=c[(c[g>>2]|0)+8>>2];continue}else{c[d>>2]=c[(c[d>>2]|0)+8>>2];continue}}if(a){c[(c[g>>2]|0)+8>>2]=c[d>>2];k=f+8|0;k=c[k>>2]|0;i=h;return k|0}else{c[(c[g>>2]|0)+8>>2]=c[e>>2];k=f+8|0;k=c[k>>2]|0;i=h;return k|0}return 0}function $J(a){a=a|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=a;do if(!(e[(c[f>>2]|0)+24>>1]|0)){c[g>>2]=Fw(c[(c[f>>2]|0)+4>>2]|0,1016,0)|0;if(c[g>>2]|0){c[c[g>>2]>>2]=c[c[f>>2]>>2];c[c[f>>2]>>2]=c[g>>2];c[(c[f>>2]|0)+16>>2]=(c[g>>2]|0)+8;b[(c[f>>2]|0)+24>>1]=63;break}c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}while(0);a=(c[f>>2]|0)+24|0;b[a>>1]=(b[a>>1]|0)+-1<<16>>16;a=(c[f>>2]|0)+16|0;g=c[a>>2]|0;c[a>>2]=g+16;c[d>>2]=g;g=c[d>>2]|0;i=h;return g|0}function aK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;e=j+16|0;f=j+12|0;g=j+8|0;h=j+4|0;d=j;c[f>>2]=a;c[g>>2]=b;if(!(c[c[f>>2]>>2]|0)){c[e>>2]=0;h=c[e>>2]|0;i=j;return h|0}b=c[f>>2]|0;if((c[g>>2]|0)==1){c[h>>2]=c[b>>2];c[c[f>>2]>>2]=c[(c[h>>2]|0)+8>>2];c[(c[h>>2]|0)+8>>2]=0;c[(c[h>>2]|0)+12>>2]=0;c[e>>2]=c[h>>2];h=c[e>>2]|0;i=j;return h|0}c[d>>2]=aK(b,(c[g>>2]|0)-1|0)|0;c[h>>2]=c[c[f>>2]>>2];b=c[d>>2]|0;if(!(c[h>>2]|0)){c[e>>2]=b;h=c[e>>2]|0;i=j;return h|0}else{c[(c[h>>2]|0)+12>>2]=b;c[c[f>>2]>>2]=c[(c[h>>2]|0)+8>>2];g=aK(c[f>>2]|0,(c[g>>2]|0)-1|0)|0;c[(c[h>>2]|0)+8>>2]=g;c[e>>2]=c[h>>2];h=c[e>>2]|0;i=j;return h|0}return 0}function bK(a){a=a|0;var d=0,f=0;f=i;i=i+16|0;d=f;c[d>>2]=a;if(!((e[(c[d>>2]|0)+26>>1]|0)&1)){a=XJ(c[(c[d>>2]|0)+8>>2]|0)|0;c[(c[d>>2]|0)+8>>2]=a}a=(c[d>>2]|0)+26|0;b[a>>1]=e[a>>1]|0|2;i=f;return}function cK(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g+12|0;k=g+8|0;h=g+4|0;f=g;c[j>>2]=a;c[k>>2]=d;c[h>>2]=e;c[f>>2]=c[k>>2];c[c[f>>2]>>2]=0;c[(c[f>>2]|0)+4>>2]=c[j>>2];c[(c[f>>2]|0)+8>>2]=0;c[(c[f>>2]|0)+12>>2]=0;c[(c[f>>2]|0)+20>>2]=0;c[(c[f>>2]|0)+16>>2]=(c[f>>2]|0)+32;b[(c[f>>2]|0)+24>>1]=(((c[h>>2]|0)-32|0)>>>0)/16|0;b[(c[f>>2]|0)+26>>1]=1;c[(c[f>>2]|0)+28>>2]=0;i=g;return c[f>>2]|0}function dK(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;h=f+4|0;g=f;c[h>>2]=b;c[g>>2]=e;b=(c[(c[h>>2]|0)+8>>2]|0)+(((c[g>>2]|0)>>>0)/8|0)|0;a[b>>0]=d[b>>0]|0|1<<(c[g>>2]&7);i=f;return}function eK(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+80|0;o=x+32|0;p=x+24|0;w=x+16|0;v=x;q=x+76|0;h=x+72|0;r=x+68|0;s=x+64|0;j=x+60|0;t=x+56|0;u=x+52|0;n=x+48|0;m=x+44|0;l=x+40|0;k=x+36|0;c[q>>2]=b;c[h>>2]=e;c[r>>2]=f;c[s>>2]=g;c[t>>2]=c[s>>2];c[u>>2]=c[r>>2];while(1){b=c[s>>2]|0;c[s>>2]=b+-1;if((b|0)<=0){g=25;break}if(!(c[(c[q>>2]|0)+16>>2]|0)){g=25;break}f=c[q>>2]|0;if((c[r>>2]|0)<1){g=5;break}if(jK(f,c[r>>2]|0)|0){g=25;break}if(sg(c[(c[q>>2]|0)+4>>2]|0,c[r>>2]|0,n,0)|0){g=8;break}c[m>>2]=tg(c[n>>2]|0)|0;do if(!(c[h>>2]|0)){if((c[s>>2]|0)>0?(d[(c[c[q>>2]>>2]|0)+17>>0]|0)!=0:0){c[j>>2]=$q(c[m>>2]|0)|0;fK(c[q>>2]|0,c[j>>2]|0,4,c[r>>2]|0)}}else{c[l>>2]=$q((c[m>>2]|0)+4|0)|0;if(a[(c[c[q>>2]>>2]|0)+17>>0]|0)fK(c[q>>2]|0,c[r>>2]|0,2,0);if((c[l>>2]|0)>(((c[(c[c[q>>2]>>2]|0)+36>>2]|0)/4|0)-2|0)){b=c[q>>2]|0;c[p>>2]=c[r>>2];iK(b,43167,p);c[s>>2]=(c[s>>2]|0)+-1;break}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[l>>2]|0))break;c[k>>2]=$q((c[m>>2]|0)+(8+(c[j>>2]<<2))|0)|0;if(a[(c[c[q>>2]>>2]|0)+17>>0]|0)fK(c[q>>2]|0,c[k>>2]|0,2,0);jK(c[q>>2]|0,c[k>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+1}c[s>>2]=(c[s>>2]|0)-(c[l>>2]|0)}while(0);c[r>>2]=$q(c[m>>2]|0)|0;vg(c[n>>2]|0);if(!(c[h>>2]|0))continue;if((c[s>>2]|0)>=((c[r>>2]|0)!=0|0))continue;iK(c[q>>2]|0,43206,o)}if((g|0)==5){t=c[t>>2]|0;w=c[u>>2]|0;c[v>>2]=(c[s>>2]|0)+1;c[v+4>>2]=t;c[v+8>>2]=w;iK(f,43088,v);i=x;return}else if((g|0)==8){v=c[q>>2]|0;c[w>>2]=c[r>>2];iK(v,43145,w);i=x;return}else if((g|0)==25){i=x;return}}function fK(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;q=r+8|0;p=r;h=r+44|0;j=r+40|0;k=r+49|0;l=r+36|0;o=r+32|0;m=r+48|0;n=r+28|0;c[h>>2]=b;c[j>>2]=e;a[k>>0]=f;c[l>>2]=g;c[o>>2]=mF(c[c[h>>2]>>2]|0,c[j>>2]|0,m,n)|0;if(c[o>>2]|0){if((c[o>>2]|0)==7|(c[o>>2]|0)==3082)c[(c[h>>2]|0)+24>>2]=1;q=c[h>>2]|0;c[p>>2]=c[j>>2];iK(q,43005,p);i=r;return}if((d[m>>0]|0|0)==(d[k>>0]|0|0)?(c[n>>2]|0)==(c[l>>2]|0):0){i=r;return}p=c[h>>2]|0;e=d[k>>0]|0;g=c[l>>2]|0;b=d[m>>0]|0;o=c[n>>2]|0;c[q>>2]=c[j>>2];c[q+4>>2]=e;c[q+8>>2]=g;c[q+12>>2]=b;c[q+16>>2]=o;iK(p,43034,q);i=r;return}function gK(b,f,g,h,j){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ca=i;i=i+256|0;Z=ca+96|0;Y=ca+88|0;X=ca+80|0;W=ca+72|0;$=ca+64|0;_=ca+48|0;m=ca+40|0;l=ca+32|0;n=ca+240|0;o=ca+236|0;p=ca+232|0;q=ca+228|0;r=ca+24|0;K=ca+224|0;A=ca+220|0;k=ca+216|0;w=ca+212|0;u=ca+208|0;M=ca+204|0;F=ca+200|0;y=ca+196|0;s=ca+192|0;E=ca+188|0;x=ca+184|0;D=ca+180|0;v=ca+176|0;I=ca+172|0;J=ca+168|0;H=ca+164|0;L=ca+160|0;V=ca+156|0;t=ca+152|0;z=ca+148|0;aa=ca+144|0;O=ca+140|0;S=ca+136|0;Q=ca+132|0;R=ca+128|0;P=ca+244|0;B=ca;G=ca+124|0;N=ca+120|0;T=ca+116|0;U=ca+112|0;C=ca+108|0;c[o>>2]=b;c[p>>2]=f;c[q>>2]=g;g=r;c[g>>2]=h;c[g+4>>2]=j;c[K>>2]=0;c[w>>2]=-1;c[x>>2]=1;c[D>>2]=1;c[z>>2]=0;c[O>>2]=0;c[S>>2]=c[(c[o>>2]|0)+28>>2];c[Q>>2]=c[(c[o>>2]|0)+32>>2];c[R>>2]=c[(c[o>>2]|0)+36>>2];a[P>>0]=0;c[H>>2]=c[c[o>>2]>>2];c[V>>2]=c[(c[H>>2]|0)+36>>2];if(!(c[p>>2]|0)){c[n>>2]=0;ba=c[n>>2]|0;i=ca;return ba|0}if(jK(c[o>>2]|0,c[p>>2]|0)|0){c[n>>2]=0;ba=c[n>>2]|0;i=ca;return ba|0}c[(c[o>>2]|0)+28>>2]=42625;c[(c[o>>2]|0)+32>>2]=c[p>>2];g=nF(c[H>>2]|0,c[p>>2]|0,K,0)|0;c[k>>2]=g;do if(!g){a[P>>0]=a[c[K>>2]>>0]|0;a[c[K>>2]>>0]=0;l=Kt(c[K>>2]|0)|0;c[k>>2]=l;if(l){ba=c[o>>2]|0;c[m>>2]=c[k>>2];iK(ba,42673,m);break}c[v>>2]=c[(c[K>>2]|0)+56>>2];c[y>>2]=d[(c[K>>2]|0)+5>>0];c[(c[o>>2]|0)+28>>2]=42711;c[t>>2]=((d[(c[v>>2]|0)+((c[y>>2]|0)+5)>>0]<<8|d[(c[v>>2]|0)+((c[y>>2]|0)+5)+1>>0])-1&65535)+1;c[E>>2]=d[(c[v>>2]|0)+((c[y>>2]|0)+3)>>0]<<8|d[(c[v>>2]|0)+((c[y>>2]|0)+3)+1>>0];c[s>>2]=(c[y>>2]|0)+12-(d[(c[K>>2]|0)+4>>0]<<2);c[J>>2]=(c[v>>2]|0)+((c[s>>2]|0)+((c[E>>2]|0)-1<<1));if(a[(c[K>>2]|0)+4>>0]|0){c[z>>2]=c[(c[o>>2]|0)+68>>2];c[c[z>>2]>>2]=0}else{c[M>>2]=$q((c[v>>2]|0)+((c[y>>2]|0)+8)|0)|0;if(a[(c[H>>2]|0)+17>>0]|0){c[(c[o>>2]|0)+28>>2]=42737;fK(c[o>>2]|0,c[M>>2]|0,5,c[p>>2]|0)}m=r;c[w>>2]=gK(c[o>>2]|0,c[M>>2]|0,r,c[m>>2]|0,c[m+4>>2]|0)|0;c[D>>2]=0}c[A>>2]=(c[E>>2]|0)-1;while(1){if((c[A>>2]|0)<0)break;if(!(c[(c[o>>2]|0)+16>>2]|0))break;c[(c[o>>2]|0)+36>>2]=c[A>>2];c[L>>2]=d[c[J>>2]>>0]<<8|d[(c[J>>2]|0)+1>>0];c[J>>2]=(c[J>>2]|0)+-2;do if((c[L>>2]|0)>>>0>=(c[t>>2]|0)>>>0?(c[L>>2]|0)>>>0<=((c[V>>2]|0)-4|0)>>>0:0){c[I>>2]=(c[v>>2]|0)+(c[L>>2]|0);Ub[c[(c[K>>2]|0)+80>>2]&255](c[K>>2]|0,c[I>>2]|0,B);if(((c[L>>2]|0)+(e[B+18>>1]|0)|0)>>>0>(c[V>>2]|0)>>>0){iK(c[o>>2]|0,42795,$);c[x>>2]=0;break}if(a[(c[K>>2]|0)+2>>0]|0){j=B;h=c[j>>2]|0;j=c[j+4>>2]|0;b=r;f=c[b>>2]|0;b=c[b+4>>2]|0;if(c[D>>2]|0){if((j|0)>(b|0)|(j|0)==(b|0)&h>>>0>f>>>0)ba=26}else if((j|0)>(b|0)|(j|0)==(b|0)&h>>>0>=f>>>0)ba=26;if((ba|0)==26){ba=0;m=c[o>>2]|0;g=B;k=c[g+4>>2]|0;l=W;c[l>>2]=c[g>>2];c[l+4>>2]=k;iK(m,42819,W)}k=B;l=c[k+4>>2]|0;m=r;c[m>>2]=c[k>>2];c[m+4>>2]=l}if((c[B+12>>2]|0)>>>0>(e[B+16>>1]|0)>>>0){c[G>>2]=(((c[B+12>>2]|0)-(e[B+16>>1]|0)+(c[V>>2]|0)-5|0)>>>0)/(((c[V>>2]|0)-4|0)>>>0)|0;c[N>>2]=$q((c[I>>2]|0)+((e[B+18>>1]|0)-4)|0)|0;if(a[(c[H>>2]|0)+17>>0]|0)fK(c[o>>2]|0,c[N>>2]|0,3,c[p>>2]|0);eK(c[o>>2]|0,0,c[N>>2]|0,c[G>>2]|0)}if(a[(c[K>>2]|0)+4>>0]|0){kK(c[z>>2]|0,c[L>>2]<<16|(c[L>>2]|0)+(e[B+18>>1]|0)-1);break}c[M>>2]=$q(c[I>>2]|0)|0;if(a[(c[H>>2]|0)+17>>0]|0)fK(c[o>>2]|0,c[M>>2]|0,5,c[p>>2]|0);m=r;c[u>>2]=gK(c[o>>2]|0,c[M>>2]|0,r,c[m>>2]|0,c[m+4>>2]|0)|0;c[D>>2]=0;if((c[u>>2]|0)!=(c[w>>2]|0)){iK(c[o>>2]|0,42843,X);c[w>>2]=c[u>>2]}}else ba=19;while(0);if((ba|0)==19){ba=0;m=c[o>>2]|0;k=c[t>>2]|0;l=(c[V>>2]|0)-4|0;c[_>>2]=c[L>>2];c[_+4>>2]=k;c[_+8>>2]=l;iK(m,42765,_);c[x>>2]=0}c[A>>2]=(c[A>>2]|0)+-1}X=r;_=c[X+4>>2]|0;$=c[q>>2]|0;c[$>>2]=c[X>>2];c[$+4>>2]=_;c[(c[o>>2]|0)+28>>2]=0;if((c[x>>2]|0)!=0?(c[(c[o>>2]|0)+16>>2]|0)>0:0){a:do if(!(a[(c[K>>2]|0)+4>>0]|0)){c[z>>2]=c[(c[o>>2]|0)+68>>2];c[c[z>>2]>>2]=0;c[A>>2]=(c[E>>2]|0)-1;while(1){if((c[A>>2]|0)<0)break a;c[L>>2]=d[(c[v>>2]|0)+((c[s>>2]|0)+(c[A>>2]<<1))>>0]<<8|d[(c[v>>2]|0)+((c[s>>2]|0)+(c[A>>2]<<1))+1>>0];c[T>>2]=(Yb[c[(c[K>>2]|0)+76>>2]&255](c[K>>2]|0,(c[v>>2]|0)+(c[L>>2]|0)|0)|0)&65535;kK(c[z>>2]|0,c[L>>2]<<16|(c[L>>2]|0)+(c[T>>2]|0)-1);c[A>>2]=(c[A>>2]|0)+-1}}while(0);c[A>>2]=d[(c[v>>2]|0)+((c[y>>2]|0)+1)>>0]<<8|d[(c[v>>2]|0)+((c[y>>2]|0)+1)+1>>0];while(1){if((c[A>>2]|0)<=0)break;c[U>>2]=d[(c[v>>2]|0)+((c[A>>2]|0)+2)>>0]<<8|d[(c[v>>2]|0)+((c[A>>2]|0)+2)+1>>0];kK(c[z>>2]|0,c[A>>2]<<16|(c[A>>2]|0)+(c[U>>2]|0)-1);c[C>>2]=d[(c[v>>2]|0)+(c[A>>2]|0)>>0]<<8|d[(c[v>>2]|0)+(c[A>>2]|0)+1>>0];c[A>>2]=c[C>>2]}c[F>>2]=0;c[O>>2]=(c[t>>2]|0)-1;while(1){if(!(lK(c[z>>2]|0,aa)|0))break;if((c[O>>2]&65535)>>>0>=(c[aa>>2]|0)>>>16>>>0){ba=51;break}c[F>>2]=(c[F>>2]|0)+(((c[aa>>2]|0)>>>16)-(c[O>>2]&65535)-1);c[O>>2]=c[aa>>2]}if((ba|0)==51){ba=c[o>>2]|0;$=c[p>>2]|0;c[Y>>2]=(c[aa>>2]|0)>>>16;c[Y+4>>2]=$;iK(ba,42868,Y)}c[F>>2]=(c[F>>2]|0)+((c[V>>2]|0)-(c[O>>2]&65535)-1);if((c[c[z>>2]>>2]|0)==0?(c[F>>2]|0)!=(d[(c[v>>2]|0)+((c[y>>2]|0)+7)>>0]|0):0){ba=c[o>>2]|0;$=d[(c[v>>2]|0)+((c[y>>2]|0)+7)>>0]|0;aa=c[p>>2]|0;c[Z>>2]=c[F>>2];c[Z+4>>2]=$;c[Z+8>>2]=aa;iK(ba,42905,Z)}}}else{ba=c[o>>2]|0;c[l>>2]=c[k>>2];iK(ba,42635,l)}while(0);if(!(c[x>>2]|0))a[c[K>>2]>>0]=a[P>>0]|0;qB(c[K>>2]|0);c[(c[o>>2]|0)+28>>2]=c[S>>2];c[(c[o>>2]|0)+32>>2]=c[Q>>2];c[(c[o>>2]|0)+36>>2]=c[R>>2];c[n>>2]=(c[w>>2]|0)+1;ba=c[n>>2]|0;i=ca;return ba|0}function hK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g+4|0;e=g;c[f>>2]=a;c[e>>2]=b;i=g;return(d[(c[(c[f>>2]|0)+8>>2]|0)+(((c[e>>2]|0)>>>0)/8|0)>>0]|0)&1<<(c[e>>2]&7)|0}function iK(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k;f=k+28|0;g=k+24|0;h=k+8|0;c[f>>2]=a;c[g>>2]=b;if(!(c[(c[f>>2]|0)+16>>2]|0)){i=k;return}b=(c[f>>2]|0)+16|0;c[b>>2]=(c[b>>2]|0)+-1;b=(c[f>>2]|0)+20|0;c[b>>2]=(c[b>>2]|0)+1;c[h>>2]=e;if(c[(c[f>>2]|0)+40+12>>2]|0)aA((c[f>>2]|0)+40|0,42623,1);if(c[(c[f>>2]|0)+28>>2]|0){e=(c[f>>2]|0)+40|0;b=c[(c[f>>2]|0)+28>>2]|0;a=c[(c[f>>2]|0)+36>>2]|0;c[j>>2]=c[(c[f>>2]|0)+32>>2];c[j+4>>2]=a;$z(e,b,j)}dg((c[f>>2]|0)+40|0,c[g>>2]|0,h);if((d[(c[f>>2]|0)+40+24>>0]|0|0)!=1){i=k;return}c[(c[f>>2]|0)+24>>2]=1;i=k;return}function jK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;h=j+8|0;e=j;g=j+20|0;d=j+16|0;f=j+12|0;c[d>>2]=a;c[f>>2]=b;do if(c[f>>2]|0){b=c[d>>2]|0;a=c[f>>2]|0;if((c[f>>2]|0)>>>0>(c[(c[d>>2]|0)+12>>2]|0)>>>0){c[e>>2]=a;iK(b,42957,e);c[g>>2]=1;break}e=(hK(b,a)|0)!=0;a=c[d>>2]|0;b=c[f>>2]|0;if(e){c[h>>2]=b;iK(a,42980,h);c[g>>2]=1;break}else{dK(a,b);c[g>>2]=0;break}}else c[g>>2]=1;while(0);i=j;return c[g>>2]|0}function kK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[d>>2]=a;c[e>>2]=b;a=c[d>>2]|0;b=(c[a>>2]|0)+1|0;c[a>>2]=b;c[f>>2]=b;c[(c[d>>2]|0)+(c[f>>2]<<2)>>2]=c[e>>2];while(1){b=((c[f>>2]|0)>>>0)/2|0;c[g>>2]=b;if(b>>>0<=0){d=5;break}if((c[(c[d>>2]|0)+(c[g>>2]<<2)>>2]|0)>>>0<=(c[(c[d>>2]|0)+(c[f>>2]<<2)>>2]|0)>>>0){d=5;break}c[e>>2]=c[(c[d>>2]|0)+(c[g>>2]<<2)>>2];c[(c[d>>2]|0)+(c[g>>2]<<2)>>2]=c[(c[d>>2]|0)+(c[f>>2]<<2)>>2];c[(c[d>>2]|0)+(c[f>>2]<<2)>>2]=c[e>>2];c[f>>2]=c[g>>2]}if((d|0)==5){i=h;return}}function lK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+20|0;e=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;b=c[c[e>>2]>>2]|0;c[j>>2]=b;if(!b){c[d>>2]=0;j=c[d>>2]|0;i=k;return j|0}c[c[f>>2]>>2]=c[(c[e>>2]|0)+4>>2];c[(c[e>>2]|0)+4>>2]=c[(c[e>>2]|0)+(c[j>>2]<<2)>>2];c[(c[e>>2]|0)+(c[j>>2]<<2)>>2]=-1;b=c[e>>2]|0;c[b>>2]=(c[b>>2]|0)+-1;c[g>>2]=1;while(1){b=c[g>>2]<<1;c[h>>2]=b;if(b>>>0>(c[c[e>>2]>>2]|0)>>>0)break;if((c[(c[e>>2]|0)+(c[h>>2]<<2)>>2]|0)>>>0>(c[(c[e>>2]|0)+((c[h>>2]|0)+1<<2)>>2]|0)>>>0)c[h>>2]=(c[h>>2]|0)+1;if((c[(c[e>>2]|0)+(c[g>>2]<<2)>>2]|0)>>>0<(c[(c[e>>2]|0)+(c[h>>2]<<2)>>2]|0)>>>0)break;c[j>>2]=c[(c[e>>2]|0)+(c[g>>2]<<2)>>2];c[(c[e>>2]|0)+(c[g>>2]<<2)>>2]=c[(c[e>>2]|0)+(c[h>>2]<<2)>>2];c[(c[e>>2]|0)+(c[h>>2]<<2)>>2]=c[j>>2];c[g>>2]=c[h>>2]}c[d>>2]=1;j=c[d>>2]|0;i=k;return j|0}function mK(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(c[b>>2]|0)){a=c[b>>2]|0;Kd(a);i=e;return}c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[c[b>>2]>>2]|0))break;qK((c[(c[b>>2]|0)+12>>2]|0)+((c[d>>2]|0)*56|0)|0);c[d>>2]=(c[d>>2]|0)+1}a=c[b>>2]|0;Kd(a);i=e;return}function nK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=a;c[d>>2]=b;Sf(c[f>>2]|0,c[(c[d>>2]|0)+12>>2]|0);oK(0,c[(c[d>>2]|0)+16>>2]|0);if(c[(c[d>>2]|0)+40>>2]|0)pK(c[(c[d>>2]|0)+40>>2]|0)|0;if(!(c[(c[d>>2]|0)+56>>2]|0)){d=c[d>>2]|0;a=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));i=e;return}pK(c[(c[d>>2]|0)+56>>2]|0)|0;d=c[d>>2]|0;a=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));i=e;return}function oK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;h=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[h>>2]=b;c[e>>2]=c[h>>2];while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[(c[e>>2]|0)+4>>2];Sf(c[d>>2]|0,c[e>>2]|0);c[e>>2]=c[f>>2]}i=g;return}function pK(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=0;c[b>>2]=hr(c[e>>2]|0)|0;Kd(c[e>>2]|0);i=d;return c[b>>2]|0}function qK(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;Kd(c[(c[b>>2]|0)+28>>2]|0);Kd(c[(c[b>>2]|0)+36>>2]|0);if(c[(c[b>>2]|0)+44>>2]|0)Cs(c[(c[b>>2]|0)+24>>2]|0,0,0,c[(c[b>>2]|0)+44>>2]|0)|0;rK(c[(c[b>>2]|0)+48>>2]|0);b=c[b>>2]|0;a=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));i=d;return}function rK(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(!(c[b>>2]|0)){i=d;return}mK(c[(c[b>>2]|0)+4>>2]|0);Kd(c[b>>2]|0);i=d;return}function sK(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;h=m+16|0;j=m;k=m+12|0;l=m+8|0;c[h>>2]=b;b=j;c[b>>2]=e;c[b+4>>2]=f;c[k>>2]=g;if(!(d[(c[h>>2]|0)+11>>0]|0)){i=m;return}a[(c[h>>2]|0)+11>>0]=0;c[l>>2]=c[(c[(c[h>>2]|0)+4>>2]|0)+8>>2];while(1){if(!(c[l>>2]|0))break;do if((d[(c[l>>2]|0)+64>>0]|0)&16){a[(c[h>>2]|0)+11>>0]=1;if((c[k>>2]|0)==0?(g=(c[l>>2]|0)+16|0,b=j,!((c[g>>2]|0)==(c[b>>2]|0)?(c[g+4>>2]|0)==(c[b+4>>2]|0):0)):0)break;a[(c[l>>2]|0)+66>>0]=0}while(0);c[l>>2]=c[(c[l>>2]|0)+8>>2]}i=m;return}function tK(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;p=u+36|0;k=u+32|0;j=u+28|0;q=u+24|0;l=u+20|0;s=u+16|0;t=u+12|0;n=u+8|0;m=u+4|0;r=u;o=u+40|0;c[k>>2]=b;c[j>>2]=f;c[q>>2]=g;c[l>>2]=h;h=c[j>>2]|0;if(h>>>0>($E(c[k>>2]|0)|0)>>>0){c[p>>2]=Lj(64010)|0;t=c[p>>2]|0;i=u;return t|0}c[t>>2]=_E(c[k>>2]|0,c[j>>2]|0,s,0,0)|0;if(c[t>>2]|0){c[p>>2]=c[t>>2];t=c[p>>2]|0;i=u;return t|0}a:do if(!(a[(c[s>>2]|0)+8>>0]|0)){a[(c[s>>2]|0)+8>>0]=1;c[r>>2]=d[(c[s>>2]|0)+5>>0];c[m>>2]=0;while(1){j=c[s>>2]|0;if((c[m>>2]|0)>=(e[(c[s>>2]|0)+18>>1]|0))break;c[n>>2]=(c[j+56>>2]|0)+(e[(c[s>>2]|0)+20>>1]&(d[(c[(c[s>>2]|0)+64>>2]|0)+(c[m>>2]<<1)>>0]<<8|d[(c[(c[s>>2]|0)+64>>2]|0)+(c[m>>2]<<1)+1>>0]));if((a[(c[s>>2]|0)+4>>0]|0)==0?(f=c[k>>2]|0,h=$q(c[n>>2]|0)|0,c[t>>2]=tK(f,h,1,c[l>>2]|0)|0,(c[t>>2]|0)!=0):0)break a;c[t>>2]=uK(c[s>>2]|0,c[n>>2]|0,o)|0;if(c[t>>2]|0)break a;c[m>>2]=(c[m>>2]|0)+1}if(a[j+4>>0]|0){if(c[l>>2]|0){o=c[l>>2]|0;c[o>>2]=(c[o>>2]|0)+(e[(c[s>>2]|0)+18>>1]|0)}}else{n=c[k>>2]|0;o=$q((c[(c[s>>2]|0)+56>>2]|0)+((c[r>>2]|0)+8)|0)|0;c[t>>2]=tK(n,o,1,c[l>>2]|0)|0;if(c[t>>2]|0)break}j=c[s>>2]|0;if(c[q>>2]|0){vK(j,t);break}q=Dg(c[j+72>>2]|0)|0;c[t>>2]=q;if(!q)wK(c[s>>2]|0,d[(c[(c[s>>2]|0)+56>>2]|0)+(c[r>>2]|0)>>0]|8)}else c[t>>2]=Lj(64015)|0;while(0);a[(c[s>>2]|0)+8>>0]=0;qB(c[s>>2]|0);c[p>>2]=c[t>>2];t=c[p>>2]|0;i=u;return t|0}function uK(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+80|0;g=t+64|0;h=t+60|0;j=t+56|0;u=t+52|0;p=t+48|0;l=t;o=t+44|0;r=t+40|0;m=t+36|0;n=t+32|0;k=t+28|0;q=t+24|0;c[h>>2]=a;c[j>>2]=d;c[u>>2]=f;c[p>>2]=c[(c[h>>2]|0)+52>>2];Ub[c[(c[h>>2]|0)+80>>2]&255](c[h>>2]|0,c[j>>2]|0,l);b[c[u>>2]>>1]=b[l+18>>1]|0;if((e[l+16>>1]|0|0)==(c[l+12>>2]|0)){c[g>>2]=0;u=c[g>>2]|0;i=t;return u|0}if(((c[j>>2]|0)+(e[l+18>>1]|0)+-1|0)>>>0>((c[(c[h>>2]|0)+56>>2]|0)+(e[(c[h>>2]|0)+20>>1]|0)|0)>>>0){c[g>>2]=Lj(61571)|0;u=c[g>>2]|0;i=t;return u|0}c[o>>2]=$q((c[j>>2]|0)+(e[l+18>>1]|0)+-4|0)|0;c[n>>2]=(c[(c[p>>2]|0)+36>>2]|0)-4;c[m>>2]=(((c[l+12>>2]|0)-(e[l+16>>1]|0)+(c[n>>2]|0)-1|0)>>>0)/((c[n>>2]|0)>>>0)|0;while(1){u=c[m>>2]|0;c[m>>2]=u+-1;if(!u){s=23;break}c[k>>2]=0;c[q>>2]=0;if((c[o>>2]|0)>>>0<2){s=9;break}u=c[o>>2]|0;if(u>>>0>($E(c[p>>2]|0)|0)>>>0){s=9;break}if((c[m>>2]|0)!=0?(c[r>>2]=kF(c[p>>2]|0,c[o>>2]|0,q,k)|0,(c[r>>2]|0)!=0):0){s=12;break}if((c[q>>2]|0)==0?(u=zK(c[p>>2]|0,c[o>>2]|0)|0,c[q>>2]=u,(u|0)==0):0)s=17;else if((Jt(c[(c[q>>2]|0)+72>>2]|0)|0)!=1)c[r>>2]=Lj(61607)|0;else s=17;if((s|0)==17){s=0;c[r>>2]=xK(c[p>>2]|0,c[q>>2]|0,c[o>>2]|0)|0}if(c[q>>2]|0)vg(c[(c[q>>2]|0)+72>>2]|0);if(c[r>>2]|0){s=21;break}c[o>>2]=c[k>>2]}if((s|0)==9){c[g>>2]=Lj(61587)|0;u=c[g>>2]|0;i=t;return u|0}else if((s|0)==12){c[g>>2]=c[r>>2];u=c[g>>2]|0;i=t;return u|0}else if((s|0)==21){c[g>>2]=c[r>>2];u=c[g>>2]|0;i=t;return u|0}else if((s|0)==23){c[g>>2]=0;u=c[g>>2]|0;i=t;return u|0}return 0}function vK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(c[c[e>>2]>>2]|0){i=f;return}b=xK(c[(c[d>>2]|0)+52>>2]|0,c[d>>2]|0,c[(c[d>>2]|0)+84>>2]|0)|0;c[c[e>>2]>>2]=b;i=f;return}function wK(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+12|0;j=o+8|0;k=o+4|0;n=o;m=o+18|0;l=o+16|0;c[h>>2]=f;c[j>>2]=g;c[k>>2]=c[(c[h>>2]|0)+56>>2];c[n>>2]=c[(c[h>>2]|0)+52>>2];a[m>>0]=a[(c[h>>2]|0)+5>>0]|0;if((e[(c[n>>2]|0)+22>>1]|0)&4)kR((c[k>>2]|0)+(d[m>>0]|0)|0,0,(c[(c[n>>2]|0)+36>>2]|0)-(d[m>>0]|0)|0)|0;a[(c[k>>2]|0)+(d[m>>0]|0)>>0]=c[j>>2];b[l>>1]=(d[m>>0]|0)+((c[j>>2]&8|0)==0?12:8);f=(c[k>>2]|0)+((d[m>>0]|0)+1)|0;a[f>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=0;a[(c[k>>2]|0)+((d[m>>0]|0)+7)>>0]=0;a[(c[k>>2]|0)+((d[m>>0]|0)+5)>>0]=(c[(c[n>>2]|0)+36>>2]|0)>>>8;a[(c[k>>2]|0)+((d[m>>0]|0)+5)+1>>0]=c[(c[n>>2]|0)+36>>2];b[(c[h>>2]|0)+16>>1]=(c[(c[n>>2]|0)+36>>2]|0)-(e[l>>1]|0);Lt(c[h>>2]|0,c[j>>2]|0)|0;b[(c[h>>2]|0)+14>>1]=b[l>>1]|0;c[(c[h>>2]|0)+60>>2]=(c[k>>2]|0)+(c[(c[n>>2]|0)+36>>2]|0);c[(c[h>>2]|0)+64>>2]=(c[k>>2]|0)+(e[l>>1]|0);c[(c[h>>2]|0)+68>>2]=(c[k>>2]|0)+(d[(c[h>>2]|0)+6>>0]|0);a[(c[h>>2]|0)+1>>0]=0;b[(c[h>>2]|0)+20>>1]=(c[(c[n>>2]|0)+32>>2]|0)-1;b[(c[h>>2]|0)+18>>1]=0;a[c[h>>2]>>0]=1;i=o;return}function xK(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;g=s+40|0;h=s+36|0;j=s+32|0;k=s+28|0;q=s+24|0;l=s+20|0;p=s+16|0;o=s+12|0;r=s+8|0;m=s+4|0;n=s;c[h>>2]=b;c[j>>2]=d;c[k>>2]=f;c[q>>2]=0;c[l>>2]=0;c[p>>2]=c[(c[h>>2]|0)+12>>2];if((c[k>>2]|0)>>>0<2){c[g>>2]=Lj(61425)|0;r=c[g>>2]|0;i=s;return r|0}if(c[j>>2]|0){c[o>>2]=c[j>>2];yK(c[(c[o>>2]|0)+72>>2]|0)}else c[o>>2]=zK(c[h>>2]|0,c[k>>2]|0)|0;c[r>>2]=Dg(c[(c[p>>2]|0)+72>>2]|0)|0;do if(!(c[r>>2]|0)){c[m>>2]=$q((c[(c[p>>2]|0)+56>>2]|0)+36|0)|0;Xs((c[(c[p>>2]|0)+56>>2]|0)+36|0,(c[m>>2]|0)+1|0);if(e[(c[h>>2]|0)+22>>1]&4){if((c[o>>2]|0)==0?(d=nF(c[h>>2]|0,c[k>>2]|0,o,0)|0,c[r>>2]=d,(d|0)!=0):0)break;d=Dg(c[(c[o>>2]|0)+72>>2]|0)|0;c[r>>2]=d;if(d)break;kR(c[(c[o>>2]|0)+56>>2]|0,0,c[(c[(c[o>>2]|0)+52>>2]|0)+32>>2]|0)|0}if((a[(c[h>>2]|0)+17>>0]|0)!=0?(xJ(c[h>>2]|0,c[k>>2]|0,2,0,r),(c[r>>2]|0)!=0):0)break;if(c[m>>2]|0){c[l>>2]=$q((c[(c[p>>2]|0)+56>>2]|0)+32|0)|0;c[r>>2]=nF(c[h>>2]|0,c[l>>2]|0,q,0)|0;if(c[r>>2]|0)break;c[n>>2]=$q((c[(c[q>>2]|0)+56>>2]|0)+4|0)|0;if((c[n>>2]|0)>>>0>((((c[(c[h>>2]|0)+36>>2]|0)>>>0)/4|0)-2|0)>>>0){c[r>>2]=Lj(61478)|0;break}if((c[n>>2]|0)>>>0<((((c[(c[h>>2]|0)+36>>2]|0)>>>0)/4|0)-8|0)>>>0){c[r>>2]=Dg(c[(c[q>>2]|0)+72>>2]|0)|0;if(c[r>>2]|0)break;Xs((c[(c[q>>2]|0)+56>>2]|0)+4|0,(c[n>>2]|0)+1|0);Xs((c[(c[q>>2]|0)+56>>2]|0)+(8+(c[n>>2]<<2))|0,c[k>>2]|0);if((c[o>>2]|0)!=0?(e[(c[h>>2]|0)+22>>1]&4|0)==0:0)AK(c[(c[o>>2]|0)+72>>2]|0);c[r>>2]=BK(c[h>>2]|0,c[k>>2]|0)|0;break}}if((c[o>>2]|0)==0?(d=nF(c[h>>2]|0,c[k>>2]|0,o,0)|0,c[r>>2]=d,0!=(d|0)):0)break;c[r>>2]=Dg(c[(c[o>>2]|0)+72>>2]|0)|0;if(!(c[r>>2]|0)){Xs(c[(c[o>>2]|0)+56>>2]|0,c[l>>2]|0);Xs((c[(c[o>>2]|0)+56>>2]|0)+4|0,0);Xs((c[(c[p>>2]|0)+56>>2]|0)+32|0,c[k>>2]|0)}}while(0);if(c[o>>2]|0)a[c[o>>2]>>0]=0;qB(c[o>>2]|0);qB(c[q>>2]|0);c[g>>2]=c[r>>2];r=c[g>>2]|0;i=s;return r|0}function yK(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;CK(c[d>>2]|0);i=b;return}function zK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=Zr(c[c[e>>2]>>2]|0,c[f>>2]|0)|0;if(c[g>>2]|0){c[d>>2]=aF(c[g>>2]|0,c[f>>2]|0,c[e>>2]|0)|0;b=c[d>>2]|0;i=h;return b|0}else{c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}return 0}function AK(a){a=a|0;var d=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;f=g;c[d>>2]=a;c[f>>2]=c[(c[d>>2]|0)+16>>2];if(!((e[(c[d>>2]|0)+24>>1]|0)&2)){i=g;return}if(c[(c[f>>2]|0)+104>>2]|0){i=g;return}a=(c[d>>2]|0)+24|0;b[a>>1]=e[a>>1]|0|32;a=(c[d>>2]|0)+24|0;b[a>>1]=(e[a>>1]|0)&-5;i=g;return}function BK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;if((c[(c[d>>2]|0)+60>>2]|0)==0?(b=fj(c[(c[d>>2]|0)+44>>2]|0)|0,c[(c[d>>2]|0)+60>>2]=b,(c[(c[d>>2]|0)+60>>2]|0)==0):0)c[f>>2]=7;if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}b=c[e>>2]|0;if(b>>>0>(jj(c[(c[d>>2]|0)+60>>2]|0)|0)>>>0){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=gj(c[(c[d>>2]|0)+60>>2]|0,c[e>>2]|0)|0;f=c[f>>2]|0;i=g;return f|0}function CK(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=(c[e>>2]|0)+26|0;b[a>>1]=(b[a>>1]|0)+1<<16>>16;a=(c[(c[e>>2]|0)+28>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;i=d;return}function DK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;f=p+32|0;g=p+28|0;h=p+24|0;j=p+20|0;o=p+16|0;n=p+12|0;l=p+8|0;k=p+4|0;m=p;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[n>>2]=0;c[l>>2]=c[(c[g>>2]|0)+4>>2];if(c[(c[l>>2]|0)+8>>2]|0){c[f>>2]=262;o=c[f>>2]|0;i=p;return o|0}if((c[h>>2]|0)>>>0<2){c[f>>2]=Lj(64136)|0;o=c[f>>2]|0;i=p;return o|0}c[o>>2]=nF(c[l>>2]|0,c[h>>2]|0,n,0)|0;if(c[o>>2]|0){c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}c[o>>2]=QI(c[g>>2]|0,c[h>>2]|0,0)|0;if(c[o>>2]|0){qB(c[n>>2]|0);c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}c[c[j>>2]>>2]=0;if(a[(c[l>>2]|0)+17>>0]|0){ng(c[g>>2]|0,4,k);d=c[n>>2]|0;do if((c[h>>2]|0)==(c[k>>2]|0)){vK(d,o);qB(c[n>>2]|0);if(c[o>>2]|0){c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}}else{qB(d);c[o>>2]=nF(c[l>>2]|0,c[k>>2]|0,m,0)|0;if(c[o>>2]|0){c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}c[o>>2]=uJ(c[l>>2]|0,c[m>>2]|0,1,0,c[h>>2]|0,0)|0;qB(c[m>>2]|0);if(c[o>>2]|0){c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}c[m>>2]=0;c[o>>2]=nF(c[l>>2]|0,c[k>>2]|0,m,0)|0;vK(c[m>>2]|0,o);qB(c[m>>2]|0);if(!(c[o>>2]|0)){c[c[j>>2]>>2]=c[k>>2];break}c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}while(0);c[k>>2]=(c[k>>2]|0)+-1;while(1){if((c[k>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[l>>2]|0)+32>>2]|0)>>>0)|0)+1|0)?(n=lF(c[l>>2]|0,c[k>>2]|0)|0,(n|0)!=(c[k>>2]|0)):0)break;c[k>>2]=(c[k>>2]|0)+-1}c[o>>2]=yg(c[g>>2]|0,4,c[k>>2]|0)|0}else{vK(c[n>>2]|0,o);qB(c[n>>2]|0)}c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}function EK(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+56>>0]=1;b=FK((c[e>>2]|0)+64|0,(c[e>>2]|0)+36|0)|0;i=d;return b|0}function FK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+64|0;e=l+60|0;f=l+56|0;d=l+52|0;j=l+48|0;k=l;g=l+44|0;h=l+40|0;c[e>>2]=a;c[f>>2]=b;c[d>>2]=c[(c[(c[e>>2]|0)+8>>2]|0)+24>>2];c[j>>2]=0;b=k;a=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(a|0));if(!(c[(c[e>>2]|0)+40>>2]|0))c[j>>2]=GK(c[d>>2]|0,0,0,(c[e>>2]|0)+40|0)|0;if(!(c[j>>2]|0))c[j>>2]=HK(c[e>>2]|0,c[f>>2]|0)|0;if(c[j>>2]|0){k=c[j>>2]|0;i=l;return k|0}c[h>>2]=0;d=(c[e>>2]|0)+40+8|0;IK(c[(c[e>>2]|0)+40>>2]|0,k,c[(c[(c[e>>2]|0)+8>>2]|0)+12>>2]|0,c[d>>2]|0,c[d+4>>2]|0);d=(c[e>>2]|0)+28|0;c[d>>2]=(c[d>>2]|0)+1;d=c[(c[f>>2]|0)+8>>2]|0;JK(k,d,((d|0)<0)<<31>>31);c[g>>2]=c[c[f>>2]>>2];while(1){b=c[g>>2]|0;if(!(c[g>>2]|0))break;c[h>>2]=c[b+4>>2];d=c[c[g>>2]>>2]|0;JK(k,d,((d|0)<0)<<31>>31);KK(k,(c[g>>2]|0)+8|0,c[c[g>>2]>>2]|0);if(!(c[(c[f>>2]|0)+4>>2]|0))Kd(c[g>>2]|0);c[g>>2]=c[h>>2]}c[c[f>>2]>>2]=b;c[j>>2]=LK(k,(c[e>>2]|0)+40+8|0)|0;k=c[j>>2]|0;i=l;return k|0}function GK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+28|0;g=l+24|0;h=l+20|0;k=l+16|0;j=l;c[g>>2]=a;a=l+8|0;c[a>>2]=b;c[a+4>>2]=d;c[h>>2]=e;if(wi(202)|0){c[f>>2]=3338;k=c[f>>2]|0;i=l;return k|0}c[k>>2]=TK(c[c[g>>2]>>2]|0,0,c[h>>2]|0,4126,k)|0;if(!(c[k>>2]|0)){e=j;c[e>>2]=0;c[e+4>>2]=0;Js(c[c[h>>2]>>2]|0,18,j)}c[f>>2]=c[k>>2];k=c[f>>2]|0;i=l;return k|0}function HK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+28|0;g=n+24|0;h=n+20|0;k=n+16|0;j=n+12|0;l=n+8|0;e=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[e>>2]=MK(c[g>>2]|0)|0;if(c[e>>2]|0){c[f>>2]=c[e>>2];m=c[f>>2]|0;i=n;return m|0}c[l>>2]=c[c[h>>2]>>2];e=NK(c[(c[g>>2]|0)+8>>2]|0)|0;c[(c[g>>2]|0)+32>>2]=e;c[j>>2]=ig(256,0)|0;if(!(c[j>>2]|0)){c[f>>2]=7;m=c[f>>2]|0;i=n;return m|0}while(1){if(!(c[l>>2]|0))break;b=c[l>>2]|0;do if(c[(c[h>>2]|0)+4>>2]|0)if((b|0)==(c[(c[h>>2]|0)+4>>2]|0)){c[m>>2]=0;break}else{c[m>>2]=(c[(c[h>>2]|0)+4>>2]|0)+(c[(c[l>>2]|0)+4>>2]|0);break}else c[m>>2]=c[b+4>>2];while(0);c[(c[l>>2]|0)+4>>2]=0;c[k>>2]=0;while(1){if(!(c[(c[j>>2]|0)+(c[k>>2]<<2)>>2]|0))break;OK(c[g>>2]|0,c[l>>2]|0,c[(c[j>>2]|0)+(c[k>>2]<<2)>>2]|0,l);c[(c[j>>2]|0)+(c[k>>2]<<2)>>2]=0;c[k>>2]=(c[k>>2]|0)+1}c[(c[j>>2]|0)+(c[k>>2]<<2)>>2]=c[l>>2];c[l>>2]=c[m>>2]}c[l>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>=64)break;OK(c[g>>2]|0,c[l>>2]|0,c[(c[j>>2]|0)+(c[k>>2]<<2)>>2]|0,l);c[k>>2]=(c[k>>2]|0)+1}c[c[h>>2]>>2]=c[l>>2];Kd(c[j>>2]|0);c[f>>2]=d[(c[(c[g>>2]|0)+12>>2]|0)+11>>0];m=c[f>>2]|0;i=n;return m|0}function IK(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l+8|0;k=l;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;a=k;c[a>>2]=e;c[a+4>>2]=f;e=c[h>>2]|0;f=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));a=c[j>>2]|0;a=_f(a,((a|0)<0)<<31>>31)|0;c[(c[h>>2]|0)+4>>2]=a;if(c[(c[h>>2]|0)+4>>2]|0){b=k;a=c[j>>2]|0;a=qR(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;c[(c[h>>2]|0)+12>>2]=a;c[(c[h>>2]|0)+16>>2]=a;a=c[(c[h>>2]|0)+12>>2]|0;a=fR(c[k>>2]|0,c[k+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;k=(c[h>>2]|0)+24|0;c[k>>2]=a;c[k+4>>2]=C;c[(c[h>>2]|0)+8>>2]=c[j>>2];c[(c[h>>2]|0)+32>>2]=c[g>>2];i=l;return}else{c[c[h>>2]>>2]=7;i=l;return}}function JK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e+12|0;j=e;f=e+8|0;g=e+16|0;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;a=j;c[f>>2]=kI(g,c[a>>2]|0,c[a+4>>2]|0)|0;KK(c[h>>2]|0,g,c[f>>2]|0);i=e;return}function KK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=c[g>>2];while(1){if((c[j>>2]|0)<=0){e=9;break}if(c[c[e>>2]>>2]|0){e=9;break}c[h>>2]=c[j>>2];if((c[h>>2]|0)>((c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+16>>2]|0)|0))c[h>>2]=(c[(c[e>>2]|0)+8>>2]|0)-(c[(c[e>>2]|0)+16>>2]|0);iR((c[(c[e>>2]|0)+4>>2]|0)+(c[(c[e>>2]|0)+16>>2]|0)|0,(c[f>>2]|0)+((c[g>>2]|0)-(c[j>>2]|0))|0,c[h>>2]|0)|0;b=(c[e>>2]|0)+16|0;c[b>>2]=(c[b>>2]|0)+(c[h>>2]|0);if((c[(c[e>>2]|0)+16>>2]|0)==(c[(c[e>>2]|0)+8>>2]|0)){l=c[(c[e>>2]|0)+32>>2]|0;d=(c[(c[e>>2]|0)+4>>2]|0)+(c[(c[e>>2]|0)+12>>2]|0)|0;b=(c[(c[e>>2]|0)+16>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0)|0;m=(c[e>>2]|0)+24|0;a=c[(c[e>>2]|0)+12>>2]|0;a=gR(c[m>>2]|0,c[m+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=Fg(l,d,b,a,C)|0;c[c[e>>2]>>2]=a;c[(c[e>>2]|0)+16>>2]=0;c[(c[e>>2]|0)+12>>2]=0;a=c[(c[e>>2]|0)+8>>2]|0;b=(c[e>>2]|0)+24|0;d=b;a=gR(c[d>>2]|0,c[d+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0; -c[b>>2]=a;c[b+4>>2]=C}c[j>>2]=(c[j>>2]|0)-(c[h>>2]|0)}if((e|0)==9){i=k;return}}function LK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(((c[c[d>>2]>>2]|0)==0?(c[(c[d>>2]|0)+4>>2]|0)!=0:0)?(c[(c[d>>2]|0)+16>>2]|0)>(c[(c[d>>2]|0)+12>>2]|0):0){j=c[(c[d>>2]|0)+32>>2]|0;h=(c[(c[d>>2]|0)+4>>2]|0)+(c[(c[d>>2]|0)+12>>2]|0)|0;a=(c[(c[d>>2]|0)+16>>2]|0)-(c[(c[d>>2]|0)+12>>2]|0)|0;k=(c[d>>2]|0)+24|0;b=c[(c[d>>2]|0)+12>>2]|0;b=gR(c[k>>2]|0,c[k+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;b=Fg(j,h,a,b,C)|0;c[c[d>>2]>>2]=b}j=(c[d>>2]|0)+24|0;k=c[(c[d>>2]|0)+16>>2]|0;k=gR(c[j>>2]|0,c[j+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;e=c[e>>2]|0;c[e>>2]=k;c[e+4>>2]=C;Kd(c[(c[d>>2]|0)+4>>2]|0);c[f>>2]=c[c[d>>2]>>2];d=c[d>>2]|0;e=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));i=g;return c[f>>2]|0}function MK(d){d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=d;do if(!(c[(c[f>>2]|0)+12>>2]|0)){d=cF(c[(c[(c[f>>2]|0)+8>>2]|0)+28>>2]|0,0,0,g)|0;c[(c[f>>2]|0)+12>>2]=d;if(c[g>>2]|0){b[(c[(c[f>>2]|0)+12>>2]|0)+8>>1]=b[(c[(c[(c[f>>2]|0)+8>>2]|0)+28>>2]|0)+6>>1]|0;a[(c[(c[f>>2]|0)+12>>2]|0)+11>>0]=0;break}c[e>>2]=7;d=c[e>>2]|0;i=h;return d|0}while(0);c[e>>2]=0;d=c[e>>2]|0;i=h;return d|0}function NK(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[e>>2]=a;do if((d[(c[e>>2]|0)+60>>0]|0|0)!=1)if((d[(c[e>>2]|0)+60>>0]|0|0)==2){c[b>>2]=139;break}else{c[b>>2]=140;break}else c[b>>2]=138;while(0);i=f;return c[b>>2]|0}function OK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;f=o+28|0;g=o+24|0;h=o+20|0;j=o+16|0;l=o+12|0;m=o+8|0;k=o+4|0;n=o;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[l>>2]=0;c[m>>2]=l;c[k>>2]=0;while(1){if(!((c[g>>2]|0)!=0?(c[h>>2]|0)!=0:0))break;c[n>>2]=Sb[c[(c[f>>2]|0)+32>>2]&255](c[f>>2]|0,k,(c[g>>2]|0)+8|0,c[c[g>>2]>>2]|0,(c[h>>2]|0)+8|0,c[c[h>>2]>>2]|0)|0;if((c[n>>2]|0)<=0){c[c[m>>2]>>2]=c[g>>2];c[m>>2]=(c[g>>2]|0)+4;c[g>>2]=c[(c[g>>2]|0)+4>>2];continue}else{c[c[m>>2]>>2]=c[h>>2];c[m>>2]=(c[h>>2]|0)+4;c[h>>2]=c[(c[h>>2]|0)+4>>2];c[k>>2]=0;continue}}c[c[m>>2]>>2]=(c[g>>2]|0)!=0?c[g>>2]|0:c[h>>2]|0;c[c[j>>2]>>2]=c[l>>2];i=o;return}function PK(b,f,g,h,j,k){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;x=i;i=i+64|0;q=x+52|0;r=x+48|0;s=x+44|0;t=x+40|0;u=x+36|0;v=x+32|0;z=x+28|0;y=x+24|0;m=x+20|0;n=x+16|0;o=x+12|0;p=x+8|0;w=x+4|0;l=x;c[q>>2]=b;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=j;c[v>>2]=k;c[z>>2]=c[s>>2];c[y>>2]=c[u>>2];c[m>>2]=d[(c[z>>2]|0)+1>>0];c[n>>2]=d[(c[y>>2]|0)+1>>0];c[o>>2]=(c[z>>2]|0)+(d[c[z>>2]>>0]|0);c[p>>2]=(c[y>>2]|0)+(d[c[y>>2]>>0]|0);h=c[m>>2]|0;k=c[n>>2]|0;a:do if(!((c[m>>2]|0)>7&(c[n>>2]|0)>7)){if((h|0)==(k|0)){if((d[c[o>>2]>>0]^d[c[p>>2]>>0])&128){c[w>>2]=(d[c[o>>2]>>0]&128|0)!=0?-1:1;break}c[w>>2]=0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(d[43245+(c[m>>2]|0)>>0]|0))break a;z=(d[(c[o>>2]|0)+(c[l>>2]|0)>>0]|0)-(d[(c[p>>2]|0)+(c[l>>2]|0)>>0]|0)|0;c[w>>2]=z;if(z)break a;c[l>>2]=(c[l>>2]|0)+1}}do if((c[n>>2]|0)<=7)if((c[m>>2]|0)>7){c[w>>2]=-1;break}else{c[w>>2]=(c[m>>2]|0)-(c[n>>2]|0);break}else c[w>>2]=1;while(0);if((c[w>>2]|0)>0){if(!(d[c[o>>2]>>0]&128))break;c[w>>2]=-1;break}else{if(!(d[c[p>>2]>>0]&128))break;c[w>>2]=1;break}}else c[w>>2]=h-k;while(0);h=c[(c[(c[q>>2]|0)+8>>2]|0)+28>>2]|0;if(!(c[w>>2]|0)){if((e[h+6>>1]|0)<=1){z=c[w>>2]|0;i=x;return z|0}c[w>>2]=SK(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;z=c[w>>2]|0;i=x;return z|0}else{if(!(a[c[h+16>>2]>>0]|0)){z=c[w>>2]|0;i=x;return z|0}c[w>>2]=_(c[w>>2]|0,-1)|0;z=c[w>>2]|0;i=x;return z|0}return 0}function QK(b,f,g,h,j,k){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+64|0;q=x+48|0;r=x+44|0;s=x+40|0;t=x+36|0;u=x+32|0;v=x+28|0;y=x+24|0;n=x+20|0;o=x+16|0;p=x+12|0;l=x+8|0;m=x+4|0;w=x;c[q>>2]=b;c[r>>2]=f;c[s>>2]=g;c[t>>2]=h;c[u>>2]=j;c[v>>2]=k;c[y>>2]=c[s>>2];c[n>>2]=c[u>>2];c[o>>2]=(c[y>>2]|0)+(d[c[y>>2]>>0]|0);c[p>>2]=(c[n>>2]|0)+(d[c[n>>2]>>0]|0);h=(c[y>>2]|0)+1|0;if((d[(c[y>>2]|0)+1>>0]|0)<128)c[l>>2]=d[h>>0];else tF(h,l)|0;c[l>>2]=((c[l>>2]|0)-13|0)/2|0;h=(c[n>>2]|0)+1|0;if((d[(c[n>>2]|0)+1>>0]|0)<128)c[m>>2]=d[h>>0];else tF(h,m)|0;c[m>>2]=((c[m>>2]|0)-13|0)/2|0;c[w>>2]=vQ(c[o>>2]|0,c[p>>2]|0,(c[l>>2]|0)<(c[m>>2]|0)?c[l>>2]|0:c[m>>2]|0)|0;if(!(c[w>>2]|0))c[w>>2]=(c[l>>2]|0)-(c[m>>2]|0);h=c[(c[(c[q>>2]|0)+8>>2]|0)+28>>2]|0;if(!(c[w>>2]|0)){if((e[h+6>>1]|0)<=1){y=c[w>>2]|0;i=x;return y|0}c[w>>2]=SK(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;y=c[w>>2]|0;i=x;return y|0}else{if(!(a[c[h+16>>2]>>0]|0)){y=c[w>>2]|0;i=x;return y|0}c[w>>2]=_(c[w>>2]|0,-1)|0;y=c[w>>2]|0;i=x;return y|0}return 0}function RK(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;n=p+4|0;o=p;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[(c[h>>2]|0)+12>>2];if(c[c[j>>2]>>2]|0){a=c[l>>2]|0;b=c[k>>2]|0;o=c[o>>2]|0;o=rF(a,b,o)|0;i=p;return o|0}dF(c[(c[(c[h>>2]|0)+8>>2]|0)+28>>2]|0,c[n>>2]|0,c[m>>2]|0,c[o>>2]|0);c[c[j>>2]>>2]=1;a=c[l>>2]|0;b=c[k>>2]|0;o=c[o>>2]|0;o=rF(a,b,o)|0;i=p;return o|0}function SK(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;n=p+4|0;o=p;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[(c[h>>2]|0)+12>>2];if(c[c[j>>2]>>2]|0){a=c[l>>2]|0;b=c[k>>2]|0;o=c[o>>2]|0;o=sF(a,b,o,1)|0;i=p;return o|0}dF(c[(c[(c[h>>2]|0)+8>>2]|0)+28>>2]|0,c[n>>2]|0,c[m>>2]|0,c[o>>2]|0);c[c[j>>2]>>2]=1;a=c[l>>2]|0;b=c[k>>2]|0;o=c[o>>2]|0;o=sF(a,b,o,1)|0;i=p;return o|0}function TK(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;m=o+16|0;j=o+12|0;k=o+8|0;n=o+4|0;l=o;c[g>>2]=a;c[h>>2]=b;c[m>>2]=d;c[j>>2]=e;c[k>>2]=f;c[n>>2]=7;b=c[(c[g>>2]|0)+4>>2]|0;c[l>>2]=ig(b,((b|0)<0)<<31>>31)|0;if(!(c[l>>2]|0)){n=c[n>>2]|0;i=o;return n|0}c[n>>2]=Vr(c[g>>2]|0,c[h>>2]|0,c[l>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;g=c[l>>2]|0;if(c[n>>2]|0){Kd(g);n=c[n>>2]|0;i=o;return n|0}else{c[c[m>>2]>>2]=g;n=c[n>>2]|0;i=o;return n|0}return 0}function UK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;e=q+36|0;f=q+32|0;o=q+28|0;j=q+24|0;n=q+20|0;h=q+16|0;l=q+12|0;m=q+8|0;g=q+4|0;k=q;c[e>>2]=a;c[f>>2]=b;c[j>>2]=c[(c[(c[e>>2]|0)+8>>2]|0)+4>>2];c[n>>2]=c[(c[e>>2]|0)+4>>2];c[o>>2]=VK((c[(c[e>>2]|0)+12>>2]|0)+((c[j>>2]|0)*56|0)|0)|0;if(!(c[o>>2]|0)){c[g>>2]=0;c[l>>2]=(c[(c[e>>2]|0)+12>>2]|0)+((c[j>>2]&65534)*56|0);c[m>>2]=(c[(c[e>>2]|0)+12>>2]|0)+((c[j>>2]|1)*56|0);c[h>>2]=((c[c[e>>2]>>2]|0)+(c[j>>2]|0)|0)/2|0;while(1){if((c[h>>2]|0)<=0)break;do if(c[(c[l>>2]|0)+24>>2]|0)if(!(c[(c[m>>2]|0)+24>>2]|0)){c[k>>2]=-1;break}else{c[k>>2]=Sb[c[(c[n>>2]|0)+32>>2]&255](c[n>>2]|0,g,c[(c[l>>2]|0)+32>>2]|0,c[(c[l>>2]|0)+20>>2]|0,c[(c[m>>2]|0)+32>>2]|0,c[(c[m>>2]|0)+20>>2]|0)|0;break}else c[k>>2]=1;while(0);do if((c[k>>2]|0)<0)p=12;else{if((c[k>>2]|0)==0?(c[l>>2]|0)>>>0<(c[m>>2]|0)>>>0:0){p=12;break}if(c[(c[l>>2]|0)+24>>2]|0)c[g>>2]=0;c[(c[(c[e>>2]|0)+8>>2]|0)+(c[h>>2]<<2)>>2]=((c[m>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0)|0)/56|0;c[l>>2]=(c[(c[e>>2]|0)+12>>2]|0)+((c[(c[(c[e>>2]|0)+8>>2]|0)+((c[h>>2]^1)<<2)>>2]|0)*56|0)}while(0);if((p|0)==12){p=0;c[(c[(c[e>>2]|0)+8>>2]|0)+(c[h>>2]<<2)>>2]=((c[l>>2]|0)-(c[(c[e>>2]|0)+12>>2]|0)|0)/56|0;c[m>>2]=(c[(c[e>>2]|0)+12>>2]|0)+((c[(c[(c[e>>2]|0)+8>>2]|0)+((c[h>>2]^1)<<2)>>2]|0)*56|0);c[g>>2]=0}c[h>>2]=(c[h>>2]|0)/2|0}c[c[f>>2]>>2]=(c[(c[(c[e>>2]|0)+12>>2]|0)+((c[(c[(c[e>>2]|0)+8>>2]|0)+4>>2]|0)*56|0)+24>>2]|0)==0&1}if(!(c[o>>2]|0)){p=d[(c[(c[n>>2]|0)+12>>2]|0)+11>>0]|0;i=q;return p|0}else{p=c[o>>2]|0;i=q;return p|0}return 0}function VK(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;b=j+24|0;d=j+20|0;h=j+16|0;f=j;g=j+12|0;e=j+8|0;c[d>>2]=a;c[h>>2]=0;k=f;c[k>>2]=0;c[k+4>>2]=0;k=c[d>>2]|0;m=c[k+4>>2]|0;a=(c[d>>2]|0)+8|0;l=c[a+4>>2]|0;if((m|0)>(l|0)|((m|0)==(l|0)?(c[k>>2]|0)>>>0>=(c[a>>2]|0)>>>0:0)){c[g>>2]=c[(c[d>>2]|0)+48>>2];c[e>>2]=1;if(((c[g>>2]|0)!=0?(c[h>>2]=WK(c[g>>2]|0)|0,(c[h>>2]|0)==0):0)?(c[(c[g>>2]|0)+20>>2]|0)==0:0){m=(c[g>>2]|0)+8|0;c[h>>2]=XK(c[c[g>>2]>>2]|0,c[d>>2]|0,(c[g>>2]|0)+32|0,c[m>>2]|0,c[m+4>>2]|0)|0;c[e>>2]=0}if(c[e>>2]|0){qK(c[d>>2]|0);c[b>>2]=c[h>>2];m=c[b>>2]|0;i=j;return m|0}}if(!(c[h>>2]|0))c[h>>2]=YK(c[d>>2]|0,f)|0;if(!(c[h>>2]|0)){c[(c[d>>2]|0)+20>>2]=c[f>>2];c[h>>2]=ZK(c[d>>2]|0,c[f>>2]|0,(c[d>>2]|0)+32|0)|0}c[b>>2]=c[h>>2];m=c[b>>2]|0;i=j;return m|0}function WK(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;c[d>>2]=aL(c[b>>2]|0)|0;f=(c[b>>2]|0)+32|0;a=(c[b>>2]|0)+32+16|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];f=(c[b>>2]|0)+32+8|0;a=(c[b>>2]|0)+8|0;if(!((c[f>>2]|0)==(c[a>>2]|0)?(c[f+4>>2]|0)==(c[a+4>>2]|0):0)){f=c[d>>2]|0;i=e;return f|0}c[(c[b>>2]|0)+20>>2]=1;f=c[d>>2]|0;i=e;return f|0}function XK(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+36|0;h=q+32|0;j=q+28|0;k=q+24|0;l=q;p=q+20|0;o=q+16|0;m=q+12|0;n=q+8|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;a=l;c[a>>2]=e;c[a+4>>2]=f;c[p>>2]=0;if(wi(201)|0){c[g>>2]=266;p=c[g>>2]|0;i=q;return p|0}if(c[(c[j>>2]|0)+44>>2]|0){Cs(c[(c[j>>2]|0)+24>>2]|0,0,0,c[(c[j>>2]|0)+44>>2]|0)|0;c[(c[j>>2]|0)+44>>2]=0}a=l;b=c[a+4>>2]|0;d=c[j>>2]|0;c[d>>2]=c[a>>2];c[d+4>>2]=b;d=(c[k>>2]|0)+8|0;b=c[d+4>>2]|0;a=(c[j>>2]|0)+8|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;c[(c[j>>2]|0)+24>>2]=c[c[k>>2]>>2];c[p>>2]=_K(c[h>>2]|0,c[k>>2]|0,(c[j>>2]|0)+44|0)|0;if((c[p>>2]|0)==0?(c[(c[j>>2]|0)+44>>2]|0)==0:0){c[o>>2]=c[(c[(c[h>>2]|0)+8>>2]|0)+12>>2];b=c[j>>2]|0;a=c[o>>2]|0;a=qR(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;c[m>>2]=a;if(!(c[(c[j>>2]|0)+36>>2]|0)){a=c[o>>2]|0;a=_f(a,((a|0)<0)<<31>>31)|0;c[(c[j>>2]|0)+36>>2]=a;if(!(c[(c[j>>2]|0)+36>>2]|0))c[p>>2]=7;c[(c[j>>2]|0)+40>>2]=c[o>>2]}if((c[p>>2]|0)==0&(c[m>>2]|0)!=0){c[n>>2]=(c[o>>2]|0)-(c[m>>2]|0);d=c[j>>2]|0;a=c[n>>2]|0;a=gR(c[d>>2]|0,c[d+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;d=C;o=(c[j>>2]|0)+8|0;b=c[o+4>>2]|0;if((d|0)>(b|0)|((d|0)==(b|0)?a>>>0>(c[o>>2]|0)>>>0:0)){a=(c[j>>2]|0)+8|0;o=c[j>>2]|0;o=fR(c[a>>2]|0,c[a+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[n>>2]=o}o=c[j>>2]|0;c[p>>2]=Wr(c[(c[j>>2]|0)+24>>2]|0,(c[(c[j>>2]|0)+36>>2]|0)+(c[m>>2]|0)|0,c[n>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0}}c[g>>2]=c[p>>2];p=c[g>>2]|0;i=q;return p|0}function YK(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;f=p+24|0;g=p+20|0;h=p+16|0;m=p+12|0;k=p+32|0;j=p+8|0;l=p+4|0;n=p;c[g>>2]=b;c[h>>2]=e;e=c[g>>2]|0;b=c[e>>2]|0;e=c[e+4>>2]|0;do if(c[(c[g>>2]|0)+44>>2]|0){n=(St((c[(c[g>>2]|0)+44>>2]|0)+b|0,c[h>>2]|0)|0)&255;o=c[g>>2]|0;m=o;n=gR(c[m>>2]|0,c[m+4>>2]|0,n|0,0)|0;c[o>>2]=n;c[o+4>>2]=C}else{q=c[(c[g>>2]|0)+40>>2]|0;e=qR(b|0,e|0,q|0,((q|0)<0)<<31>>31|0)|0;c[m>>2]=e;if((c[m>>2]|0)!=0?((c[(c[g>>2]|0)+40>>2]|0)-(c[m>>2]|0)|0)>=9:0){o=(St((c[(c[g>>2]|0)+36>>2]|0)+(c[m>>2]|0)|0,c[h>>2]|0)|0)&255;q=c[g>>2]|0;n=q;o=gR(c[n>>2]|0,c[n+4>>2]|0,o|0,0)|0;c[q>>2]=o;c[q+4>>2]=C;break}c[l>>2]=0;while(1){c[n>>2]=ZK(c[g>>2]|0,1,j)|0;if(c[n>>2]|0)break;m=a[c[j>>2]>>0]|0;q=c[l>>2]|0;c[l>>2]=q+1;a[k+(q&15)>>0]=m;if(!((d[c[j>>2]>>0]|0)&128)){o=10;break}}if((o|0)==10){St(k,c[h>>2]|0)|0;break}c[f>>2]=c[n>>2];q=c[f>>2]|0;i=p;return q|0}while(0);c[f>>2]=0;q=c[f>>2]|0;i=p;return q|0}function ZK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=i;i=i+64|0;g=u+52|0;h=u+48|0;j=u+44|0;k=u+40|0;n=u+36|0;o=u+32|0;e=u+28|0;f=u+24|0;r=u+20|0;l=u+16|0;q=u+12|0;s=u+8|0;p=u+4|0;m=u;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;a=c[h>>2]|0;b=c[a>>2]|0;a=c[a+4>>2]|0;if(c[(c[h>>2]|0)+44>>2]|0){c[c[k>>2]>>2]=(c[(c[h>>2]|0)+44>>2]|0)+b;s=c[j>>2]|0;t=c[h>>2]|0;r=t;s=gR(c[r>>2]|0,c[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;c[t>>2]=s;c[t+4>>2]=C;c[g>>2]=0;t=c[g>>2]|0;i=u;return t|0}d=c[(c[h>>2]|0)+40>>2]|0;d=qR(b|0,a|0,d|0,((d|0)<0)<<31>>31|0)|0;c[n>>2]=d;if(!(c[n>>2]|0)){w=(c[h>>2]|0)+8|0;a=c[h>>2]|0;a=fR(c[w>>2]|0,c[w+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;w=C;d=c[(c[h>>2]|0)+40>>2]|0;v=((d|0)<0)<<31>>31;b=c[h>>2]|0;if((w|0)>(v|0)|(w|0)==(v|0)&a>>>0>d>>>0)c[e>>2]=c[b+40>>2];else{v=b+8|0;w=c[h>>2]|0;w=fR(c[v>>2]|0,c[v+4>>2]|0,c[w>>2]|0,c[w+4>>2]|0)|0;c[e>>2]=w}w=c[h>>2]|0;c[f>>2]=Wr(c[(c[h>>2]|0)+24>>2]|0,c[(c[h>>2]|0)+36>>2]|0,c[e>>2]|0,c[w>>2]|0,c[w+4>>2]|0)|0;if(c[f>>2]|0){c[g>>2]=c[f>>2];w=c[g>>2]|0;i=u;return w|0}}c[o>>2]=(c[(c[h>>2]|0)+40>>2]|0)-(c[n>>2]|0);do if((c[j>>2]|0)<=(c[o>>2]|0)){c[c[k>>2]>>2]=(c[(c[h>>2]|0)+36>>2]|0)+(c[n>>2]|0);v=c[j>>2]|0;w=c[h>>2]|0;t=w;v=gR(c[t>>2]|0,c[t+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;c[w>>2]=v;c[w+4>>2]=C}else{do if((c[(c[h>>2]|0)+16>>2]|0)<(c[j>>2]|0)){if(128>(c[(c[h>>2]|0)+16>>2]<<1|0))b=128;else b=c[(c[h>>2]|0)+16>>2]<<1;c[q>>2]=b;while(1){if((c[j>>2]|0)<=(c[q>>2]|0))break;c[q>>2]=c[q>>2]<<1}w=c[q>>2]|0;c[l>>2]=bg(c[(c[h>>2]|0)+28>>2]|0,w,((w|0)<0)<<31>>31)|0;if(c[l>>2]|0){c[(c[h>>2]|0)+16>>2]=c[q>>2];c[(c[h>>2]|0)+28>>2]=c[l>>2];break}c[g>>2]=7;w=c[g>>2]|0;i=u;return w|0}while(0);iR(c[(c[h>>2]|0)+28>>2]|0,(c[(c[h>>2]|0)+36>>2]|0)+(c[n>>2]|0)|0,c[o>>2]|0)|0;v=c[o>>2]|0;w=c[h>>2]|0;q=w;v=gR(c[q>>2]|0,c[q+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;c[w>>2]=v;c[w+4>>2]=C;c[r>>2]=(c[j>>2]|0)-(c[o>>2]|0);while(1){if((c[r>>2]|0)<=0){t=27;break}c[p>>2]=c[r>>2];if((c[r>>2]|0)>(c[(c[h>>2]|0)+40>>2]|0))c[p>>2]=c[(c[h>>2]|0)+40>>2];c[s>>2]=ZK(c[h>>2]|0,c[p>>2]|0,m)|0;if(c[s>>2]|0)break;iR((c[(c[h>>2]|0)+28>>2]|0)+((c[j>>2]|0)-(c[r>>2]|0))|0,c[m>>2]|0,c[p>>2]|0)|0;c[r>>2]=(c[r>>2]|0)-(c[p>>2]|0)}if((t|0)==27){c[c[k>>2]>>2]=c[(c[h>>2]|0)+28>>2];break}c[g>>2]=c[s>>2];w=c[g>>2]|0;i=u;return w|0}while(0);c[g>>2]=0;w=c[g>>2]|0;i=u;return w|0}function _K(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;l=j+16|0;e=j+12|0;f=j+8|0;h=j+4|0;g=j;c[l>>2]=a;c[e>>2]=b;c[f>>2]=d;c[h>>2]=0;a=(c[e>>2]|0)+8|0;k=c[a+4>>2]|0;d=c[(c[(c[(c[l>>2]|0)+8>>2]|0)+24>>2]|0)+136>>2]|0;b=((d|0)<0)<<31>>31;if(!((k|0)<(b|0)|((k|0)==(b|0)?(c[a>>2]|0)>>>0<=d>>>0:0))){l=c[h>>2]|0;i=j;return l|0}c[g>>2]=c[c[e>>2]>>2];if((c[c[c[g>>2]>>2]>>2]|0)<3){l=c[h>>2]|0;i=j;return l|0}c[h>>2]=$K(c[g>>2]|0,0,0,c[(c[e>>2]|0)+8>>2]|0,c[f>>2]|0)|0;l=c[h>>2]|0;i=j;return l|0}function $K(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;i=i+32|0;h=g+8|0;c[g+16>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;c[g+12>>2]=e;c[h>>2]=f;c[c[h>>2]>>2]=0;i=g;return 0}function aL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+96|0;b=o+88|0;l=o+84|0;m=o+80|0;f=o+48|0;j=o+76|0;p=o+72|0;h=o+68|0;n=o+8|0;d=o+64|0;k=o+60|0;g=o+56|0;e=o;c[b>>2]=a;c[l>>2]=0;r=(c[b>>2]|0)+8|0;q=c[r+4>>2]|0;a=f;c[a>>2]=c[r>>2];c[a+4>>2]=q;c[j>>2]=(c[b>>2]|0)+32+16;c[p>>2]=c[c[b>>2]>>2];c[h>>2]=c[(c[b>>2]|0)+4>>2];a=f;IK(c[c[j>>2]>>2]|0,n,c[(c[(c[p>>2]|0)+8>>2]|0)+12>>2]|0,c[a>>2]|0,c[a+4>>2]|0);while(1){if(c[l>>2]|0)break;c[k>>2]=(c[(c[h>>2]|0)+12>>2]|0)+((c[(c[(c[h>>2]|0)+8>>2]|0)+4>>2]|0)*56|0);c[g>>2]=c[(c[k>>2]|0)+20>>2];r=n+24|0;q=c[n+16>>2]|0;q=gR(c[r>>2]|0,c[r+4>>2]|0,q|0,((q|0)<0)<<31>>31|0)|0;r=e;c[r>>2]=q;c[r+4>>2]=C;if(!(c[(c[k>>2]|0)+24>>2]|0))break;a=e;p=c[g>>2]|0;p=gR(c[a>>2]|0,c[a+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;a=C;q=c[g>>2]|0;q=zF(q,((q|0)<0)<<31>>31)|0;q=gR(p|0,a|0,q|0,((q|0)<0)<<31>>31|0)|0;a=C;p=f;r=c[(c[b>>2]|0)+16>>2]|0;r=gR(c[p>>2]|0,c[p+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;p=C;if((a|0)>(p|0)|(a|0)==(p|0)&q>>>0>r>>>0)break;r=c[g>>2]|0;JK(n,r,((r|0)<0)<<31>>31);KK(n,c[(c[k>>2]|0)+32>>2]|0,c[g>>2]|0);c[l>>2]=UK(c[(c[b>>2]|0)+4>>2]|0,d)|0}c[m>>2]=LK(n,(c[j>>2]|0)+8|0)|0;if(c[l>>2]|0){r=c[l>>2]|0;i=o;return r|0}c[l>>2]=c[m>>2];r=c[l>>2]|0;i=o;return r|0}function bL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;f=g+8|0;e=g+4|0;d=g;c[b>>2]=a;c[e>>2]=(c[b>>2]|0)+64;c[d>>2]=0;c[f>>2]=cL(c[b>>2]|0,d)|0;if(!(c[f>>2]|0)){c[f>>2]=dL(c[e>>2]|0,c[d>>2]|0,0)|0;c[(c[b>>2]|0)+20>>2]=c[d>>2];c[d>>2]=0}if(!(c[f>>2]|0)){f=c[f>>2]|0;i=g;return f|0}mK(c[d>>2]|0);f=c[f>>2]|0;i=g;return f|0}function cL(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+64|0;e=s+52|0;f=s+48|0;n=s+44|0;r=s+40|0;k=s+36|0;q=s+32|0;p=s+28|0;l=s+24|0;h=s;g=s+20|0;j=s+16|0;o=s+12|0;m=s+8|0;c[e>>2]=a;c[f>>2]=b;c[n>>2]=0;c[r>>2]=0;c[k>>2]=0;while(1){if(c[r>>2]|0)break;if((c[k>>2]|0)>=(d[(c[e>>2]|0)+59>>0]|0|0))break;c[q>>2]=(c[e>>2]|0)+64+((c[k>>2]|0)*72|0);c[p>>2]=0;c[l>>2]=hL(c[(c[q>>2]|0)+28>>2]|0)|0;b=h;c[b>>2]=0;c[b+4>>2]=0;a:do if((c[(c[q>>2]|0)+28>>2]|0)<=16)c[r>>2]=iL(c[q>>2]|0,c[(c[q>>2]|0)+28>>2]|0,h,p)|0;else{c[j>>2]=0;c[p>>2]=jL(16)|0;if(!(c[p>>2]|0))c[r>>2]=7;c[g>>2]=0;while(1){if(!((c[g>>2]|0)<(c[(c[q>>2]|0)+28>>2]|0)?(c[r>>2]|0)==0:0))break a;c[o>>2]=0;if(((c[(c[q>>2]|0)+28>>2]|0)-(c[g>>2]|0)|0)<16)a=(c[(c[q>>2]|0)+28>>2]|0)-(c[g>>2]|0)|0;else a=16;c[m>>2]=a;c[r>>2]=iL(c[q>>2]|0,c[m>>2]|0,h,o)|0;if(!(c[r>>2]|0)){t=c[q>>2]|0;a=c[l>>2]|0;b=c[j>>2]|0;c[j>>2]=b+1;c[r>>2]=kL(t,a,b,c[p>>2]|0,c[o>>2]|0)|0}c[g>>2]=(c[g>>2]|0)+16}}while(0);a=c[p>>2]|0;if(!(c[r>>2]|0))c[n>>2]=a;else mK(a);c[k>>2]=(c[k>>2]|0)+1}if(!(c[r>>2]|0)){q=c[n>>2]|0;t=c[f>>2]|0;c[t>>2]=q;t=c[r>>2]|0;i=s;return t|0}mK(c[n>>2]|0);c[n>>2]=0;q=c[n>>2]|0;t=c[f>>2]|0;c[t>>2]=q;t=c[r>>2]|0;i=s;return t|0}function dL(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+24|0;g=n+20|0;h=n+16|0;l=n+8|0;j=n+4|0;k=n;c[g>>2]=a;c[h>>2]=b;c[n+12>>2]=e;c[l>>2]=0;c[k>>2]=c[c[h>>2]>>2];c[(c[h>>2]|0)+4>>2]=c[g>>2];c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[k>>2]|0))break;c[l>>2]=eL((c[(c[h>>2]|0)+12>>2]|0)+((c[j>>2]|0)*56|0)|0,0)|0;if(c[l>>2]|0){m=4;break}c[j>>2]=(c[j>>2]|0)+1}if((m|0)==4){c[f>>2]=c[l>>2];m=c[f>>2]|0;i=n;return m|0}c[j>>2]=(c[c[h>>2]>>2]|0)-1;while(1){if((c[j>>2]|0)<=0)break;fL(c[h>>2]|0,c[j>>2]|0);c[j>>2]=(c[j>>2]|0)+-1}c[f>>2]=d[(c[(c[g>>2]|0)+12>>2]|0)+11>>0];m=c[f>>2]|0;i=n;return m|0}function eL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;e=g+8|0;h=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[h>>2]=c[(c[d>>2]|0)+48>>2];c[f>>2]=0;if(!(c[h>>2]|0)){h=c[f>>2]|0;i=g;return h|0}c[f>>2]=gL(c[d>>2]|0,c[e>>2]|0)|0;h=c[f>>2]|0;i=g;return h|0}function fL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;d=o+36|0;e=o+32|0;g=o+28|0;h=o+24|0;j=o+20|0;k=o+16|0;l=o+12|0;m=o+8|0;f=o+4|0;n=o;c[d>>2]=a;c[e>>2]=b;b=c[e>>2]|0;if((c[e>>2]|0)>=((c[c[d>>2]>>2]|0)/2|0|0)){c[g>>2]=b-((c[c[d>>2]>>2]|0)/2|0)<<1;c[h>>2]=(c[g>>2]|0)+1}else{c[g>>2]=c[(c[(c[d>>2]|0)+8>>2]|0)+(b<<1<<2)>>2];c[h>>2]=c[(c[(c[d>>2]|0)+8>>2]|0)+((c[e>>2]<<1)+1<<2)>>2]}c[k>>2]=(c[(c[d>>2]|0)+12>>2]|0)+((c[g>>2]|0)*56|0);c[l>>2]=(c[(c[d>>2]|0)+12>>2]|0)+((c[h>>2]|0)*56|0);do if(c[(c[k>>2]|0)+24>>2]|0){if(!(c[(c[l>>2]|0)+24>>2]|0)){c[j>>2]=c[g>>2];break}c[m>>2]=c[(c[d>>2]|0)+4>>2];c[f>>2]=0;c[n>>2]=Sb[c[(c[m>>2]|0)+32>>2]&255](c[m>>2]|0,f,c[(c[k>>2]|0)+32>>2]|0,c[(c[k>>2]|0)+20>>2]|0,c[(c[l>>2]|0)+32>>2]|0,c[(c[l>>2]|0)+20>>2]|0)|0;if((c[n>>2]|0)<=0){c[j>>2]=c[g>>2];break}else{c[j>>2]=c[h>>2];break}}else c[j>>2]=c[h>>2];while(0);c[(c[(c[d>>2]|0)+8>>2]|0)+(c[e>>2]<<2)>>2]=c[j>>2];i=o;return}function gL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;d=k+24|0;l=k+20|0;j=k+16|0;g=k+12|0;h=k+8|0;e=k+4|0;f=k;c[d>>2]=a;c[l>>2]=b;c[j>>2]=0;c[g>>2]=c[(c[d>>2]|0)+48>>2];c[h>>2]=c[c[g>>2]>>2];c[e>>2]=c[(c[(c[h>>2]|0)+8>>2]|0)+24>>2];c[j>>2]=dL(c[h>>2]|0,c[(c[g>>2]|0)+4>>2]|0,c[l>>2]|0)|0;if(!(c[j>>2]|0)){c[f>>2]=c[(c[g>>2]|0)+16>>2];if(!(c[(c[h>>2]|0)+56>>2]|0)){l=(c[h>>2]|0)+56+8|0;c[j>>2]=GK(c[e>>2]|0,c[l>>2]|0,c[l+4>>2]|0,(c[h>>2]|0)+56|0)|0;l=(c[h>>2]|0)+56+8|0;c[l>>2]=0;c[l+4>>2]=0}if(!(c[j>>2]|0)){c[(c[g>>2]|0)+32+16>>2]=c[(c[h>>2]|0)+56>>2];b=(c[h>>2]|0)+56+8|0;l=c[b+4>>2]|0;a=(c[g>>2]|0)+8|0;c[a>>2]=c[b>>2];c[a+4>>2]=l;a=c[f>>2]|0;l=(c[h>>2]|0)+56+8|0;h=l;h=gR(c[h>>2]|0,c[h+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;c[l>>2]=h;c[l+4>>2]=C}}if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}c[j>>2]=VK(c[d>>2]|0)|0;l=c[j>>2]|0;i=k;return l|0}function hL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;b=f+12|0;d=f+8|0;e=f;c[b>>2]=a;c[d>>2]=0;a=e;c[a>>2]=16;c[a+4>>2]=0;while(1){g=e;j=c[g+4>>2]|0;a=c[b>>2]|0;h=((a|0)<0)<<31>>31;if(!((j|0)<(h|0)|((j|0)==(h|0)?(c[g>>2]|0)>>>0>>0:0)))break;h=e;h=rR(c[h>>2]|0,c[h+4>>2]|0,16,0)|0;j=e;c[j>>2]=h;c[j+4>>2]=C;c[d>>2]=(c[d>>2]|0)+1}i=f;return c[d>>2]|0}function iL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+44|0;g=q+40|0;h=q+36|0;j=q+32|0;n=q+28|0;l=q+8|0;k=q+24|0;p=q+20|0;m=q;o=q+16|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;a=c[h>>2]|0;d=c[a+4>>2]|0;e=l;c[e>>2]=c[a>>2];c[e+4>>2]=d;c[p>>2]=0;e=jL(c[g>>2]|0)|0;c[n>>2]=e;c[c[j>>2]>>2]=e;if(!(c[n>>2]|0))c[p>>2]=7;c[k>>2]=0;while(1){if(!((c[k>>2]|0)<(c[g>>2]|0)?(c[p>>2]|0)==0:0))break;c[o>>2]=(c[(c[n>>2]|0)+12>>2]|0)+((c[k>>2]|0)*56|0);a=l;c[p>>2]=mL(c[f>>2]|0,(c[f>>2]|0)+40|0,c[a>>2]|0,c[a+4>>2]|0,c[o>>2]|0,m)|0;a=(c[o>>2]|0)+8|0;d=c[a+4>>2]|0;e=l;c[e>>2]=c[a>>2];c[e+4>>2]=d;c[k>>2]=(c[k>>2]|0)+1}if(!(c[p>>2]|0)){d=l;o=d;o=c[o>>2]|0;d=d+4|0;d=c[d>>2]|0;e=c[h>>2]|0;a=e;c[a>>2]=o;e=e+4|0;c[e>>2]=d;p=c[p>>2]|0;i=q;return p|0}mK(c[n>>2]|0);c[c[j>>2]>>2]=0;d=l;o=d;o=c[o>>2]|0;d=d+4|0;d=c[d>>2]|0;e=c[h>>2]|0;a=e;c[a>>2]=o;e=e+4|0;c[e>>2]=d;p=c[p>>2]|0;i=q;return p|0}function jL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;e=g+8|0;d=g+4|0;f=g;c[b>>2]=a;c[e>>2]=2;while(1){a=c[e>>2]|0;if((c[e>>2]|0)>=(c[b>>2]|0))break;c[e>>2]=(c[e>>2]|0)+a}c[d>>2]=16+(a*60|0);if(wi(100)|0)a=0;else{a=c[d>>2]|0;a=ig(a,((a|0)<0)<<31>>31)|0}c[f>>2]=a;if(!(c[f>>2]|0)){f=c[f>>2]|0;i=g;return f|0}c[c[f>>2]>>2]=c[e>>2];c[(c[f>>2]|0)+4>>2]=0;c[(c[f>>2]|0)+12>>2]=(c[f>>2]|0)+16;c[(c[f>>2]|0)+8>>2]=(c[(c[f>>2]|0)+12>>2]|0)+((c[e>>2]|0)*56|0);f=c[f>>2]|0;i=g;return f|0}function kL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=i;i=i+64|0;g=s+48|0;h=s+44|0;p=s+40|0;u=s+36|0;t=s+32|0;r=s+28|0;l=s+24|0;j=s+20|0;q=s+16|0;m=s+12|0;k=s+8|0;o=s+4|0;n=s;c[g>>2]=a;c[h>>2]=b;c[p>>2]=d;c[u>>2]=e;c[t>>2]=f;c[r>>2]=0;c[l>>2]=1;c[q>>2]=c[u>>2];c[r>>2]=lL(c[g>>2]|0,c[t>>2]|0,m)|0;c[j>>2]=1;while(1){if((c[j>>2]|0)>=(c[h>>2]|0))break;c[l>>2]=c[l>>2]<<4;c[j>>2]=(c[j>>2]|0)+1}c[j>>2]=1;while(1){if(!((c[j>>2]|0)<(c[h>>2]|0)?(c[r>>2]|0)==0:0))break;c[k>>2]=((c[p>>2]|0)/(c[l>>2]|0)|0|0)%16|0;c[o>>2]=(c[(c[q>>2]|0)+12>>2]|0)+((c[k>>2]|0)*56|0);do if(!(c[(c[o>>2]|0)+48>>2]|0)){c[n>>2]=jL(16)|0;if(!(c[n>>2]|0)){c[r>>2]=7;break}else{c[r>>2]=lL(c[g>>2]|0,c[n>>2]|0,(c[o>>2]|0)+48|0)|0;break}}while(0);if(!(c[r>>2]|0)){c[q>>2]=c[(c[(c[o>>2]|0)+48>>2]|0)+4>>2];c[l>>2]=(c[l>>2]|0)/16|0}c[j>>2]=(c[j>>2]|0)+1}g=c[m>>2]|0;if(!(c[r>>2]|0)){c[(c[(c[q>>2]|0)+12>>2]|0)+(((c[p>>2]|0)%16|0)*56|0)+48>>2]=g;u=c[r>>2]|0;i=s;return u|0}else{rK(g);u=c[r>>2]|0;i=s;return u|0}return 0}function lL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;g=k+16|0;e=k+12|0;f=k+8|0;j=k+4|0;h=k;c[g>>2]=a;c[e>>2]=b;c[f>>2]=d;c[j>>2]=0;if(wi(100)|0)b=0;else b=ig(64,0)|0;c[c[f>>2]>>2]=b;c[h>>2]=b;b=c[e>>2]|0;if(!(c[h>>2]|0)){mK(b);c[j>>2]=7;j=c[j>>2]|0;i=k;return j|0}c[(c[h>>2]|0)+4>>2]=b;c[c[h>>2]>>2]=c[g>>2];b=c[(c[g>>2]|0)+8>>2]|0;if(((c[(c[(c[g>>2]|0)+8>>2]|0)+8>>2]|0)+9|0)>((c[(c[(c[g>>2]|0)+8>>2]|0)+4>>2]|0)/2|0|0))b=(c[b+8>>2]|0)+9|0;else b=(c[b+4>>2]|0)/2|0;c[(c[h>>2]|0)+16>>2]=b;f=c[(c[h>>2]|0)+16>>2]|0;h=(c[g>>2]|0)+56+8|0;g=h;g=gR(c[g>>2]|0,c[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;c[h>>2]=g;c[h+4>>2]=C;j=c[j>>2]|0;i=k;return j|0}function mL(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+48|0;o=m+32|0;n=m+28|0;p=m+8|0;h=m+24|0;j=m+20|0;l=m+16|0;k=m;c[o>>2]=a;c[n>>2]=b;a=p;c[a>>2]=d;c[a+4>>2]=e;c[h>>2]=f;c[j>>2]=g;g=p;c[l>>2]=XK(c[o>>2]|0,c[h>>2]|0,c[n>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;if(!(c[l>>2]|0)){o=k;c[o>>2]=0;c[o+4>>2]=0;c[l>>2]=YK(c[h>>2]|0,k)|0;o=c[h>>2]|0;p=k;p=gR(c[o>>2]|0,c[o+4>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0;o=(c[h>>2]|0)+8|0;c[o>>2]=p;c[o+4>>2]=C;o=k;p=c[j>>2]|0;n=p;o=gR(c[n>>2]|0,c[n+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[p>>2]=o;c[p+4>>2]=C}if(c[l>>2]|0){p=c[l>>2]|0;i=m;return p|0}c[l>>2]=VK(c[h>>2]|0)|0;p=c[l>>2]|0;i=m;return p|0}function nL(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[(c[b>>2]|0)+66>>0]|0|0)!=1|0}function oL(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=b;c[e>>2]=pL(c[(c[d>>2]|0)+16>>2]|0,g)|0;c[(c[d>>2]|0)+56>>2]=0;if(!(c[g>>2]|0)){g=c[e>>2]|0;i=f;return g|0}a[(c[d>>2]|0)+2>>0]=1;g=c[e>>2]|0;i=f;return g|0}function pL(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j+12|0;h=j+8|0;e=j+4|0;f=j;c[h>>2]=a;c[e>>2]=b;if((d[(c[h>>2]|0)+66>>0]|0|0)>=3)a=WE(c[h>>2]|0)|0;else a=0;c[f>>2]=a;if(c[f>>2]|0){c[c[e>>2]>>2]=1;c[g>>2]=c[f>>2];h=c[g>>2]|0;i=j;return h|0}a=c[e>>2]|0;if((d[(c[h>>2]|0)+66>>0]|0|0)!=1)c[a>>2]=1;else c[a>>2]=0;c[g>>2]=0;h=c[g>>2]|0;i=j;return h|0}function qL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=b;c[f>>2]=d;b=c[e>>2]|0;if(a[(c[e>>2]|0)+56>>0]|0){c[h>>2]=(c[(c[(c[e>>2]|0)+20>>2]|0)+12>>2]|0)+((c[(c[(c[b+20>>2]|0)+8>>2]|0)+4>>2]|0)*56|0);c[c[f>>2]>>2]=c[(c[h>>2]|0)+20>>2];c[g>>2]=c[(c[h>>2]|0)+32>>2];h=c[g>>2]|0;i=j;return h|0}else{c[c[f>>2]>>2]=c[c[b+36>>2]>>2];c[g>>2]=(c[(c[e>>2]|0)+36>>2]|0)+8;h=c[g>>2]|0;i=j;return h|0}return 0}function rL(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;k=t+32|0;l=t+28|0;m=t+24|0;n=t+20|0;q=t+16|0;o=t+12|0;r=t+8|0;s=t+4|0;p=t;c[k>>2]=f;c[l>>2]=g;c[m>>2]=h;c[n>>2]=j;if(c[c[n>>2]>>2]|0){i=t;return}c[o>>2]=c[(c[k>>2]|0)+56>>2];c[r>>2]=(c[(c[k>>2]|0)+64>>2]|0)+(c[l>>2]<<1);c[q>>2]=(d[c[r>>2]>>0]|0)<<8|(d[(c[r>>2]|0)+1>>0]|0);c[p>>2]=d[(c[k>>2]|0)+5>>0];if((c[q>>2]|0)>>>0>=((d[(c[o>>2]|0)+((c[p>>2]|0)+5)>>0]|0)<<8|(d[(c[o>>2]|0)+((c[p>>2]|0)+5)+1>>0]|0))>>>0?((c[q>>2]|0)+(c[m>>2]|0)|0)>>>0<=(c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2]|0)>>>0:0){c[s>>2]=IL(c[k>>2]|0,c[q>>2]&65535,c[m>>2]&65535)|0;if(c[s>>2]|0){c[c[n>>2]>>2]=c[s>>2];i=t;return}h=(c[k>>2]|0)+18|0;b[h>>1]=(b[h>>1]|0)+-1<<16>>16;if(!(e[(c[k>>2]|0)+18>>1]|0)){h=(c[o>>2]|0)+((c[p>>2]|0)+1)|0;a[h>>0]=0;a[h+1>>0]=0;a[h+2>>0]=0;a[h+3>>0]=0;a[(c[o>>2]|0)+((c[p>>2]|0)+7)>>0]=0;a[(c[o>>2]|0)+((c[p>>2]|0)+5)>>0]=(c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2]|0)>>>8;a[(c[o>>2]|0)+((c[p>>2]|0)+5)+1>>0]=c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2];b[(c[k>>2]|0)+16>>1]=(c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2]|0)-(d[(c[k>>2]|0)+5>>0]|0)-(d[(c[k>>2]|0)+6>>0]|0)-8;i=t;return}else{jR(c[r>>2]|0,(c[r>>2]|0)+2|0,(e[(c[k>>2]|0)+18>>1]|0)-(c[l>>2]|0)<<1|0)|0;a[(c[o>>2]|0)+((c[p>>2]|0)+3)>>0]=(e[(c[k>>2]|0)+18>>1]|0)>>8;a[(c[o>>2]|0)+((c[p>>2]|0)+3)+1>>0]=b[(c[k>>2]|0)+18>>1];h=(c[k>>2]|0)+16|0;b[h>>1]=(e[h>>1]|0)+2;i=t;return}}h=Lj(61841)|0;c[c[n>>2]>>2]=h;i=t;return}function sL(f,g,h,j,k,l,m){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+48|0;n=z+44|0;o=z+40|0;p=z+36|0;q=z+32|0;r=z+28|0;s=z+24|0;t=z+20|0;v=z+16|0;w=z+12|0;u=z+8|0;x=z+4|0;y=z;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[r>>2]=k;c[s>>2]=l;c[t>>2]=m;c[v>>2]=0;if(c[c[t>>2]>>2]|0){i=z;return}if((d[(c[n>>2]|0)+1>>0]|0)==0?((c[q>>2]|0)+2|0)<=(e[(c[n>>2]|0)+16>>1]|0):0){c[y>>2]=Dg(c[(c[n>>2]|0)+72>>2]|0)|0;if(c[y>>2]|0){c[c[t>>2]>>2]=c[y>>2];i=z;return}c[u>>2]=c[(c[n>>2]|0)+56>>2];c[y>>2]=KL(c[n>>2]|0,c[q>>2]|0,v)|0;if(c[y>>2]|0){c[c[t>>2]>>2]=c[y>>2];i=z;return}j=(c[n>>2]|0)+16|0;b[j>>1]=(e[j>>1]|0)-(2+(c[q>>2]|0)&65535);iR((c[u>>2]|0)+(c[v>>2]|0)|0,c[p>>2]|0,c[q>>2]|0)|0;if(c[s>>2]|0)Xs((c[u>>2]|0)+(c[v>>2]|0)|0,c[s>>2]|0);c[x>>2]=(c[(c[n>>2]|0)+64>>2]|0)+(c[o>>2]<<1);jR((c[x>>2]|0)+2|0,c[x>>2]|0,(e[(c[n>>2]|0)+18>>1]|0)-(c[o>>2]|0)<<1|0)|0;a[c[x>>2]>>0]=c[v>>2]>>8;a[(c[x>>2]|0)+1>>0]=c[v>>2];y=(c[n>>2]|0)+18|0;b[y>>1]=(b[y>>1]|0)+1<<16>>16;y=(c[u>>2]|0)+((d[(c[n>>2]|0)+5>>0]|0)+4)|0;j=(a[y>>0]|0)+1<<24>>24;a[y>>0]=j;if(!(j&255)){j=(c[u>>2]|0)+((d[(c[n>>2]|0)+5>>0]|0)+3)|0;a[j>>0]=(a[j>>0]|0)+1<<24>>24}if(!(a[(c[(c[n>>2]|0)+52>>2]|0)+17>>0]|0)){i=z;return}zJ(c[n>>2]|0,c[p>>2]|0,c[t>>2]|0);i=z;return}if(c[r>>2]|0){iR(c[r>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;c[p>>2]=c[r>>2]}if(c[s>>2]|0)Xs(c[p>>2]|0,c[s>>2]|0);y=(c[n>>2]|0)+1|0;j=a[y>>0]|0;a[y>>0]=j+1<<24>>24;c[w>>2]=j&255;c[(c[n>>2]|0)+32+(c[w>>2]<<2)>>2]=c[p>>2];b[(c[n>>2]|0)+22+(c[w>>2]<<1)>>1]=c[o>>2];i=z;return}function tL(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+64|0;g=r+32|0;q=r+28|0;l=r+24|0;h=r+36|0;m=r+20|0;k=r+16|0;n=r+12|0;o=r+8|0;j=r+4|0;p=r;c[g>>2]=f;c[q>>2]=0;c[l>>2]=(c[(c[(c[g>>2]|0)+4>>2]|0)+36>>2]<<1>>>0)/3|0;c[m>>2]=0;do{c[k>>2]=a[(c[g>>2]|0)+68>>0];c[n>>2]=c[(c[g>>2]|0)+120+(c[k>>2]<<2)>>2];f=a[(c[n>>2]|0)+1>>0]|0;if(!(c[k>>2]|0)){if(!(f<<24>>24))break;c[q>>2]=uL(c[n>>2]|0,(c[g>>2]|0)+120+4|0)|0;if(!(c[q>>2]|0)){a[(c[g>>2]|0)+68>>0]=1;b[(c[g>>2]|0)+80>>1]=0;b[(c[g>>2]|0)+80+2>>1]=0}}else{if((f&255|0)==0?(e[(c[n>>2]|0)+16>>1]|0)<=(c[l>>2]|0):0)break;c[o>>2]=c[(c[g>>2]|0)+120+((c[k>>2]|0)-1<<2)>>2];c[j>>2]=e[(c[g>>2]|0)+80+((c[k>>2]|0)-1<<1)>>1];c[q>>2]=Dg(c[(c[o>>2]|0)+72>>2]|0)|0;do if(!(c[q>>2]|0)){if(((((d[(c[n>>2]|0)+3>>0]|0)!=0?(d[(c[n>>2]|0)+1>>0]|0)==1:0)?(e[(c[n>>2]|0)+22>>1]|0)==(e[(c[n>>2]|0)+18>>1]|0):0)?(c[(c[o>>2]|0)+84>>2]|0)!=1:0)?(e[(c[o>>2]|0)+18>>1]|0)==(c[j>>2]|0):0){c[q>>2]=vL(c[o>>2]|0,c[n>>2]|0,h)|0;break}c[p>>2]=Ti(c[(c[(c[g>>2]|0)+4>>2]|0)+32>>2]|0)|0;c[q>>2]=wL(c[o>>2]|0,c[j>>2]|0,c[p>>2]|0,(c[k>>2]|0)==1&1,d[(c[g>>2]|0)+67>>0]&1)|0;if(c[m>>2]|0)Wi(c[m>>2]|0);c[m>>2]=c[p>>2]}while(0);a[(c[n>>2]|0)+1>>0]=0;qB(c[n>>2]|0);f=(c[g>>2]|0)+68|0;a[f>>0]=(a[f>>0]|0)+-1<<24>>24}}while((c[q>>2]|0)==0);if(!(c[m>>2]|0)){q=c[q>>2]|0;i=r;return q|0}Wi(c[m>>2]|0);q=c[q>>2]|0;i=r;return q|0}function uL(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;f=n+24|0;g=n+20|0;h=n+16|0;m=n+12|0;k=n+8|0;l=n+4|0;j=n;c[g>>2]=b;c[h>>2]=e;c[k>>2]=0;c[l>>2]=0;c[j>>2]=c[(c[g>>2]|0)+52>>2];c[m>>2]=Dg(c[(c[g>>2]|0)+72>>2]|0)|0;if((c[m>>2]|0)==0?(c[m>>2]=tJ(c[j>>2]|0,k,l,c[(c[g>>2]|0)+84>>2]|0,0)|0,BL(c[g>>2]|0,c[k>>2]|0,m),(a[(c[j>>2]|0)+17>>0]|0)!=0):0)xJ(c[j>>2]|0,c[l>>2]|0,5,c[(c[g>>2]|0)+84>>2]|0,m);if(c[m>>2]|0){c[c[h>>2]>>2]=0;qB(c[k>>2]|0);c[f>>2]=c[m>>2];m=c[f>>2]|0;i=n;return m|0}else{iR((c[k>>2]|0)+22|0,(c[g>>2]|0)+22|0,d[(c[g>>2]|0)+1>>0]<<1|0)|0;iR((c[k>>2]|0)+32|0,(c[g>>2]|0)+32|0,d[(c[g>>2]|0)+1>>0]<<2|0)|0;a[(c[k>>2]|0)+1>>0]=a[(c[g>>2]|0)+1>>0]|0;wK(c[g>>2]|0,d[c[(c[k>>2]|0)+56>>2]>>0]&-9);Xs((c[(c[g>>2]|0)+56>>2]|0)+((d[(c[g>>2]|0)+5>>0]|0)+8)|0,c[l>>2]|0);c[c[h>>2]>>2]=c[k>>2];c[f>>2]=0;m=c[f>>2]|0;i=n;return m|0}return 0}function vL(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+48|0;j=v+40|0;k=v+36|0;l=v+32|0;m=v+28|0;n=v+24|0;p=v+20|0;t=v+16|0;s=v+12|0;q=v+8|0;o=v+4|0;u=v+44|0;r=v;c[k>>2]=f;c[l>>2]=g;c[m>>2]=h;c[n>>2]=c[(c[l>>2]|0)+52>>2];if(!(e[(c[l>>2]|0)+18>>1]|0)){c[j>>2]=Lj(62338)|0;u=c[j>>2]|0;i=v;return u|0}c[t>>2]=tJ(c[n>>2]|0,p,s,0,0)|0;if(!(c[t>>2]|0)){c[q>>2]=(c[m>>2]|0)+4;c[o>>2]=c[(c[l>>2]|0)+32>>2];b[u>>1]=Yb[c[(c[l>>2]|0)+76>>2]&255](c[l>>2]|0,c[o>>2]|0)|0;wK(c[p>>2]|0,13);c[t>>2]=GL(c[p>>2]|0,1,o,u)|0;if(c[t>>2]|0){c[j>>2]=c[t>>2];u=c[j>>2]|0;i=v;return u|0}b[(c[p>>2]|0)+16>>1]=(c[(c[n>>2]|0)+36>>2]|0)-(e[(c[p>>2]|0)+14>>1]|0)-2-(e[u>>1]|0);if((a[(c[n>>2]|0)+17>>0]|0)!=0?(xJ(c[n>>2]|0,c[s>>2]|0,5,c[(c[k>>2]|0)+84>>2]|0,t),(e[u>>1]|0)>(e[(c[p>>2]|0)+12>>1]|0)):0)zJ(c[p>>2]|0,c[o>>2]|0,t);c[o>>2]=(c[(c[l>>2]|0)+56>>2]|0)+(e[(c[l>>2]|0)+20>>1]&(d[(c[(c[l>>2]|0)+64>>2]|0)+((e[(c[l>>2]|0)+18>>1]|0)-1<<1)>>0]<<8|d[(c[(c[l>>2]|0)+64>>2]|0)+((e[(c[l>>2]|0)+18>>1]|0)-1<<1)+1>>0]));c[r>>2]=(c[o>>2]|0)+9;do{u=c[o>>2]|0;c[o>>2]=u+1;if(!(d[u>>0]&128))break}while((c[o>>2]|0)>>>0<(c[r>>2]|0)>>>0);c[r>>2]=(c[o>>2]|0)+9;do{u=c[o>>2]|0;c[o>>2]=u+1;u=a[u>>0]|0;h=c[q>>2]|0;c[q>>2]=h+1;a[h>>0]=u;if(!(u&128))break}while((c[o>>2]|0)>>>0<(c[r>>2]|0)>>>0);sL(c[k>>2]|0,e[(c[k>>2]|0)+18>>1]|0,c[m>>2]|0,(c[q>>2]|0)-(c[m>>2]|0)|0,0,c[(c[l>>2]|0)+84>>2]|0,t);Xs((c[(c[k>>2]|0)+56>>2]|0)+((d[(c[k>>2]|0)+5>>0]|0)+8)|0,c[s>>2]|0);qB(c[p>>2]|0)}c[j>>2]=c[t>>2];u=c[j>>2]|0;i=v;return u|0}function wL(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0; -Da=i;i=i+448|0;ga=Da+412|0;ha=Da+408|0;l=Da+404|0;Q=Da+400|0;ia=Da+396|0;C=Da+392|0;za=Da+388|0;t=Da+384|0;wa=Da+380|0;ya=Da+376|0;pa=Da+372|0;Y=Da+368|0;H=Da+364|0;Z=Da+360|0;Aa=Da+356|0;ua=Da+430|0;va=Da+352|0;Ca=Da+348|0;L=Da+344|0;q=Da+340|0;W=Da+336|0;A=Da+332|0;la=Da+320|0;ka=Da+300|0;K=Da+296|0;p=Da+288|0;na=Da+264|0;oa=Da+244|0;Ba=Da+224|0;o=Da+220|0;M=Da+216|0;ja=Da+432|0;S=Da+196|0;E=Da+176|0;D=Da+420|0;ma=Da+160|0;m=Da+152|0;v=Da+148|0;r=Da+144|0;n=Da+140|0;s=Da+418|0;x=Da+136|0;y=Da+132|0;z=Da+416|0;w=Da+128|0;u=Da+124|0;B=Da+120|0;P=Da+116|0;O=Da+112|0;N=Da+108|0;F=Da+104|0;I=Da+100|0;G=Da+96|0;J=Da+92|0;aa=Da+88|0;R=Da+84|0;T=Da+80|0;fa=Da+76|0;U=Da+72|0;V=Da+68|0;_=Da+64|0;ca=Da+60|0;$=Da+56|0;da=Da+52|0;ea=Da+48|0;ba=Da+44|0;X=Da;sa=Da+40|0;qa=Da+36|0;ra=Da+32|0;xa=Da+28|0;ta=Da+24|0;c[ha>>2]=f;c[l>>2]=g;c[Q>>2]=h;c[ia>>2]=j;c[C>>2]=k;c[t>>2]=0;c[wa>>2]=0;c[Aa>>2]=0;c[q>>2]=0;c[W>>2]=0;a[ja>>0]=0;a[ja+1>>0]=0;a[ja+2>>0]=0;a[ja+3>>0]=0;a[ja+4>>0]=0;c[ma>>2]=0;c[ma+8>>2]=0;c[za>>2]=c[(c[ha>>2]|0)+52>>2];if(!(c[Q>>2]|0)){c[ga>>2]=7;Ca=c[ga>>2]|0;i=Da;return Ca|0}c[pa>>2]=(d[(c[ha>>2]|0)+1>>0]|0)+(e[(c[ha>>2]|0)+18>>1]|0);if((c[pa>>2]|0)<2)c[Z>>2]=0;else{do if(c[l>>2]|0)if((c[l>>2]|0)==(c[pa>>2]|0)){c[Z>>2]=(c[pa>>2]|0)-2+(c[C>>2]|0);break}else{c[Z>>2]=(c[l>>2]|0)-1;break}else c[Z>>2]=0;while(0);c[pa>>2]=2-(c[C>>2]|0)}c[ya>>2]=(c[pa>>2]|0)+1;l=c[ha>>2]|0;if(((c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)|0)==(e[(c[ha>>2]|0)+18>>1]|0))c[K>>2]=(c[(c[ha>>2]|0)+56>>2]|0)+((d[l+5>>0]|0)+8);else c[K>>2]=(c[l+56>>2]|0)+(e[(c[ha>>2]|0)+20>>1]&(d[(c[(c[ha>>2]|0)+64>>2]|0)+((c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)<<1)>>0]<<8|d[(c[(c[ha>>2]|0)+64>>2]|0)+((c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)<<1)+1>>0]));c[M>>2]=$q(c[K>>2]|0)|0;while(1){c[Aa>>2]=_E(c[za>>2]|0,c[M>>2]|0,la+(c[pa>>2]<<2)|0,0,0)|0;if(c[Aa>>2]|0){h=16;break}c[t>>2]=(c[t>>2]|0)+(1+(e[(c[la+(c[pa>>2]<<2)>>2]|0)+18>>1]|0)+(d[(c[la+(c[pa>>2]<<2)>>2]|0)+1>>0]|0));f=c[pa>>2]|0;c[pa>>2]=f+-1;if(!f){h=26;break}if(((c[pa>>2]|0)+(c[Z>>2]|0)|0)==(e[(c[ha>>2]|0)+22>>1]|0)?(d[(c[ha>>2]|0)+1>>0]|0)!=0:0){c[p+(c[pa>>2]<<2)>>2]=c[(c[ha>>2]|0)+32>>2];c[M>>2]=$q(c[p+(c[pa>>2]<<2)>>2]|0)|0;f=(Yb[c[(c[ha>>2]|0)+76>>2]&255](c[ha>>2]|0,c[p+(c[pa>>2]<<2)>>2]|0)|0)&65535;c[Ba+(c[pa>>2]<<2)>>2]=f;a[(c[ha>>2]|0)+1>>0]=0;continue}c[p+(c[pa>>2]<<2)>>2]=(c[(c[ha>>2]|0)+56>>2]|0)+(e[(c[ha>>2]|0)+20>>1]&(d[(c[(c[ha>>2]|0)+64>>2]|0)+((c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)<<1)>>0]<<8|d[(c[(c[ha>>2]|0)+64>>2]|0)+((c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)<<1)+1>>0]));c[M>>2]=$q(c[p+(c[pa>>2]<<2)>>2]|0)|0;f=(Yb[c[(c[ha>>2]|0)+76>>2]&255](c[ha>>2]|0,c[p+(c[pa>>2]<<2)>>2]|0)|0)&65535;c[Ba+(c[pa>>2]<<2)>>2]=f;if(e[(c[za>>2]|0)+22>>1]&4){c[m>>2]=(c[p+(c[pa>>2]<<2)>>2]|0)-(c[(c[ha>>2]|0)+56>>2]|0);if(((c[m>>2]|0)+(c[Ba+(c[pa>>2]<<2)>>2]|0)|0)>(c[(c[za>>2]|0)+36>>2]|0)){h=23;break}iR((c[Q>>2]|0)+(c[m>>2]|0)|0,c[p+(c[pa>>2]<<2)>>2]|0,c[Ba+(c[pa>>2]<<2)>>2]|0)|0;c[p+(c[pa>>2]<<2)>>2]=(c[Q>>2]|0)+((c[p+(c[pa>>2]<<2)>>2]|0)-(c[(c[ha>>2]|0)+56>>2]|0))}rL(c[ha>>2]|0,(c[pa>>2]|0)+(c[Z>>2]|0)-(d[(c[ha>>2]|0)+1>>0]|0)|0,c[Ba+(c[pa>>2]<<2)>>2]|0,Aa)}a:do if((h|0)==16)kR(la|0,0,(c[pa>>2]|0)+1<<2|0)|0;else if((h|0)==23){c[Aa>>2]=Lj(62677)|0;kR(la|0,0,(c[pa>>2]|0)+1<<2|0)|0}else if((h|0)==26){c[t>>2]=(c[t>>2]|0)+3&-4;c[A>>2]=(c[t>>2]<<2)+(c[t>>2]<<1)+(c[(c[za>>2]|0)+32>>2]|0);c[ma+8>>2]=zi(c[A>>2]|0)|0;if(!(c[ma+8>>2]|0)){c[Aa>>2]=7;break}c[ma+12>>2]=(c[ma+8>>2]|0)+(c[t>>2]<<2);c[o>>2]=(c[ma+12>>2]|0)+(c[t>>2]<<1);c[ma+4>>2]=c[la>>2];b[ua>>1]=d[(c[ma+4>>2]|0)+4>>0]<<2;c[va>>2]=d[(c[ma+4>>2]|0)+3>>0];c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[ya>>2]|0))break;c[v>>2]=c[la+(c[pa>>2]<<2)>>2];c[r>>2]=e[(c[v>>2]|0)+18>>1];c[n>>2]=c[(c[v>>2]|0)+56>>2];b[s>>1]=b[(c[v>>2]|0)+20>>1]|0;c[x>>2]=(c[n>>2]|0)+(e[(c[v>>2]|0)+14>>1]|0);if((d[c[(c[v>>2]|0)+56>>2]>>0]|0)!=(d[c[(c[la>>2]|0)+56>>2]>>0]|0)){h=31;break}kR((c[ma+12>>2]|0)+(c[ma>>2]<<1)|0,0,(c[r>>2]|0)+(d[(c[v>>2]|0)+1>>0]|0)<<1|0)|0;b:do if((d[(c[v>>2]|0)+1>>0]|0)>0){c[r>>2]=e[(c[v>>2]|0)+22>>1];c[Y>>2]=0;while(1){if((c[Y>>2]|0)>=(c[r>>2]|0))break;c[(c[ma+8>>2]|0)+(c[ma>>2]<<2)>>2]=(c[n>>2]|0)+(e[s>>1]&(d[c[x>>2]>>0]<<8|d[(c[x>>2]|0)+1>>0]));c[x>>2]=(c[x>>2]|0)+2;c[ma>>2]=(c[ma>>2]|0)+1;c[Y>>2]=(c[Y>>2]|0)+1}c[H>>2]=0;while(1){if((c[H>>2]|0)>=(d[(c[v>>2]|0)+1>>0]|0))break b;c[(c[ma+8>>2]|0)+(c[ma>>2]<<2)>>2]=c[(c[v>>2]|0)+32+(c[H>>2]<<2)>>2];c[ma>>2]=(c[ma>>2]|0)+1;c[H>>2]=(c[H>>2]|0)+1}}while(0);c[y>>2]=(c[n>>2]|0)+(e[(c[v>>2]|0)+14>>1]|0)+(e[(c[v>>2]|0)+18>>1]<<1);while(1){if((c[x>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break;c[(c[ma+8>>2]|0)+(c[ma>>2]<<2)>>2]=(c[n>>2]|0)+(e[s>>1]&(d[c[x>>2]>>0]<<8|d[(c[x>>2]|0)+1>>0]));c[x>>2]=(c[x>>2]|0)+2;c[ma>>2]=(c[ma>>2]|0)+1}c[oa+(c[pa>>2]<<2)>>2]=c[ma>>2];if(!((c[va>>2]|0)!=0?1:(c[pa>>2]|0)>=((c[ya>>2]|0)-1|0))){b[z>>1]=c[Ba+(c[pa>>2]<<2)>>2];b[(c[ma+12>>2]|0)+(c[ma>>2]<<1)>>1]=b[z>>1]|0;c[w>>2]=(c[o>>2]|0)+(c[q>>2]|0);c[q>>2]=(c[q>>2]|0)+(e[z>>1]|0);iR(c[w>>2]|0,c[p+(c[pa>>2]<<2)>>2]|0,e[z>>1]|0)|0;c[(c[ma+8>>2]|0)+(c[ma>>2]<<2)>>2]=(c[w>>2]|0)+(e[ua>>1]|0);b[(c[ma+12>>2]|0)+(c[ma>>2]<<1)>>1]=(e[(c[ma+12>>2]|0)+(c[ma>>2]<<1)>>1]|0)-(e[ua>>1]|0);c:do if(a[(c[v>>2]|0)+4>>0]|0)while(1){if((e[(c[ma+12>>2]|0)+(c[ma>>2]<<1)>>1]|0)>=4)break c;A=c[q>>2]|0;c[q>>2]=A+1;a[(c[o>>2]|0)+A>>0]=0;A=(c[ma+12>>2]|0)+(c[ma>>2]<<1)|0;b[A>>1]=(b[A>>1]|0)+1<<16>>16}else{A=c[(c[ma+8>>2]|0)+(c[ma>>2]<<2)>>2]|0;t=(c[(c[v>>2]|0)+56>>2]|0)+8|0;a[A>>0]=a[t>>0]|0;a[A+1>>0]=a[t+1>>0]|0;a[A+2>>0]=a[t+2>>0]|0;a[A+3>>0]=a[t+3>>0]|0}while(0);c[ma>>2]=(c[ma>>2]|0)+1}c[pa>>2]=(c[pa>>2]|0)+1}if((h|0)==31){c[Aa>>2]=Lj(62744)|0;break}c[Ca>>2]=(c[(c[za>>2]|0)+36>>2]|0)-12+(e[ua>>1]|0);c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[ya>>2]|0))break;c[u>>2]=c[la+(c[pa>>2]<<2)>>2];c[Ba+(c[pa>>2]<<2)>>2]=(c[Ca>>2]|0)-(e[(c[u>>2]|0)+16>>1]|0);if((c[Ba+(c[pa>>2]<<2)>>2]|0)<0){h=52;break}c[Y>>2]=0;while(1){if((c[Y>>2]|0)>=(d[(c[u>>2]|0)+1>>0]|0))break;z=2+((Yb[c[(c[u>>2]|0)+76>>2]&255](c[u>>2]|0,c[(c[u>>2]|0)+32+(c[Y>>2]<<2)>>2]|0)|0)&65535)|0;A=Ba+(c[pa>>2]<<2)|0;c[A>>2]=(c[A>>2]|0)+z;c[Y>>2]=(c[Y>>2]|0)+1}c[na+(c[pa>>2]<<2)>>2]=c[oa+(c[pa>>2]<<2)>>2];c[pa>>2]=(c[pa>>2]|0)+1}if((h|0)==52){c[Aa>>2]=Lj(62842)|0;break}c[H>>2]=c[ya>>2];c[pa>>2]=0;d:while(1){if((c[pa>>2]|0)>=(c[H>>2]|0)){h=83;break}while(1){if((c[Ba+(c[pa>>2]<<2)>>2]|0)<=(c[Ca>>2]|0))break;if(((c[pa>>2]|0)+1|0)>=(c[H>>2]|0)){c[H>>2]=(c[pa>>2]|0)+2;if((c[H>>2]|0)>5){h=62;break d}c[Ba+((c[H>>2]|0)-1<<2)>>2]=0;c[na+((c[H>>2]|0)-1<<2)>>2]=c[ma>>2]}c[B>>2]=2+((xL(ma,(c[na+(c[pa>>2]<<2)>>2]|0)-1|0)|0)&65535);A=Ba+(c[pa>>2]<<2)|0;c[A>>2]=(c[A>>2]|0)-(c[B>>2]|0);do if(!(c[va>>2]|0))if((c[na+(c[pa>>2]<<2)>>2]|0)<(c[ma>>2]|0)){c[B>>2]=2+((xL(ma,c[na+(c[pa>>2]<<2)>>2]|0)|0)&65535);break}else{c[B>>2]=0;break}while(0);A=Ba+((c[pa>>2]|0)+1<<2)|0;c[A>>2]=(c[A>>2]|0)+(c[B>>2]|0);A=na+(c[pa>>2]<<2)|0;c[A>>2]=(c[A>>2]|0)+-1}while(1){if((c[na+(c[pa>>2]<<2)>>2]|0)>=(c[ma>>2]|0))break;c[B>>2]=2+((xL(ma,c[na+(c[pa>>2]<<2)>>2]|0)|0)&65535);if(((c[Ba+(c[pa>>2]<<2)>>2]|0)+(c[B>>2]|0)|0)>(c[Ca>>2]|0))break;A=Ba+(c[pa>>2]<<2)|0;c[A>>2]=(c[A>>2]|0)+(c[B>>2]|0);A=na+(c[pa>>2]<<2)|0;c[A>>2]=(c[A>>2]|0)+1;do if(!(c[va>>2]|0))if((c[na+(c[pa>>2]<<2)>>2]|0)<(c[ma>>2]|0)){c[B>>2]=2+((xL(ma,c[na+(c[pa>>2]<<2)>>2]|0)|0)&65535);break}else{c[B>>2]=0;break}while(0);A=Ba+((c[pa>>2]|0)+1<<2)|0;c[A>>2]=(c[A>>2]|0)-(c[B>>2]|0)}l=c[pa>>2]|0;if((c[na+(c[pa>>2]<<2)>>2]|0)<(c[ma>>2]|0)){if((c[pa>>2]|0)>0)h=c[na+((c[pa>>2]|0)-1<<2)>>2]|0;else h=0;if((c[na+(l<<2)>>2]|0)<=(h|0)){h=81;break}}else c[H>>2]=l+1;c[pa>>2]=(c[pa>>2]|0)+1}if((h|0)==62){c[Aa>>2]=Lj(62854)|0;break}else if((h|0)==81){c[Aa>>2]=Lj(62887)|0;break}else if((h|0)==83){c[pa>>2]=(c[H>>2]|0)-1;while(1){if((c[pa>>2]|0)<=0)break;c[P>>2]=c[Ba+(c[pa>>2]<<2)>>2];c[O>>2]=c[Ba+((c[pa>>2]|0)-1<<2)>>2];c[N>>2]=(c[na+((c[pa>>2]|0)-1<<2)>>2]|0)-1;c[F>>2]=(c[N>>2]|0)+1-(c[va>>2]|0);xL(ma,c[F>>2]|0)|0;do{xL(ma,c[N>>2]|0)|0;if(c[P>>2]|0){if(c[C>>2]|0)break;if(((c[P>>2]|0)+(e[(c[ma+12>>2]|0)+(c[F>>2]<<1)>>1]|0)+2|0)>((c[O>>2]|0)-((e[(c[ma+12>>2]|0)+(c[N>>2]<<1)>>1]|0)+2)|0))break}c[P>>2]=(c[P>>2]|0)+((e[(c[ma+12>>2]|0)+(c[F>>2]<<1)>>1]|0)+2);c[O>>2]=(c[O>>2]|0)-((e[(c[ma+12>>2]|0)+(c[N>>2]<<1)>>1]|0)+2);c[na+((c[pa>>2]|0)-1<<2)>>2]=c[N>>2];c[N>>2]=(c[N>>2]|0)+-1;c[F>>2]=(c[F>>2]|0)+-1}while((c[N>>2]|0)>=0);c[Ba+(c[pa>>2]<<2)>>2]=c[P>>2];c[Ba+((c[pa>>2]|0)-1<<2)>>2]=c[O>>2];if((c[pa>>2]|0)>1)l=c[na+((c[pa>>2]|0)-2<<2)>>2]|0;else l=0;if((c[na+((c[pa>>2]|0)-1<<2)>>2]|0)<=(l|0)){h=93;break}c[pa>>2]=(c[pa>>2]|0)+-1}if((h|0)==93){c[Aa>>2]=Lj(62929)|0;break}c[L>>2]=d[c[(c[la>>2]|0)+56>>2]>>0];c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[H>>2]|0))break;if((c[pa>>2]|0)<(c[ya>>2]|0)){P=c[la+(c[pa>>2]<<2)>>2]|0;c[ka+(c[pa>>2]<<2)>>2]=P;c[I>>2]=P;c[la+(c[pa>>2]<<2)>>2]=0;c[Aa>>2]=Dg(c[(c[I>>2]|0)+72>>2]|0)|0;c[wa>>2]=(c[wa>>2]|0)+1;if(c[Aa>>2]|0)break a}else{c[Aa>>2]=tJ(c[za>>2]|0,I,M,(c[C>>2]|0)!=0?1:c[M>>2]|0,0)|0;if(c[Aa>>2]|0)break a;wK(c[I>>2]|0,c[L>>2]|0);c[ka+(c[pa>>2]<<2)>>2]=c[I>>2];c[wa>>2]=(c[wa>>2]|0)+1;c[oa+(c[pa>>2]<<2)>>2]=c[ma>>2];if((a[(c[za>>2]|0)+17>>0]|0)!=0?(xJ(c[za>>2]|0,c[(c[I>>2]|0)+84>>2]|0,5,c[(c[ha>>2]|0)+84>>2]|0,Aa),(c[Aa>>2]|0)!=0):0)break a}c[pa>>2]=(c[pa>>2]|0)+1}c[pa>>2]=0;e:while(1){if((c[pa>>2]|0)>=(c[wa>>2]|0))break;P=c[(c[ka+(c[pa>>2]<<2)>>2]|0)+84>>2]|0;c[S+(c[pa>>2]<<2)>>2]=P;c[E+(c[pa>>2]<<2)>>2]=P;b[D+(c[pa>>2]<<1)>>1]=b[(c[(c[ka+(c[pa>>2]<<2)>>2]|0)+72>>2]|0)+24>>1]|0;c[Y>>2]=0;while(1){if((c[Y>>2]|0)>=(c[pa>>2]|0))break;if((c[S+(c[Y>>2]<<2)>>2]|0)==(c[S+(c[pa>>2]<<2)>>2]|0)){h=108;break e}c[Y>>2]=(c[Y>>2]|0)+1}c[pa>>2]=(c[pa>>2]|0)+1}if((h|0)==108){c[Aa>>2]=Lj(63003)|0;break}c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[wa>>2]|0))break;c[G>>2]=0;c[Y>>2]=1;while(1){if((c[Y>>2]|0)>=(c[wa>>2]|0))break;if((c[E+(c[Y>>2]<<2)>>2]|0)>>>0<(c[E+(c[G>>2]<<2)>>2]|0)>>>0)c[G>>2]=c[Y>>2];c[Y>>2]=(c[Y>>2]|0)+1}c[M>>2]=c[E+(c[G>>2]<<2)>>2];c[E+(c[G>>2]<<2)>>2]=-1;if((c[G>>2]|0)!=(c[pa>>2]|0)){if((c[G>>2]|0)>(c[pa>>2]|0))yL(c[(c[ka+(c[G>>2]<<2)>>2]|0)+72>>2]|0,(c[(c[za>>2]|0)+44>>2]|0)+(c[G>>2]|0)+1|0,0);yL(c[(c[ka+(c[pa>>2]<<2)>>2]|0)+72>>2]|0,c[M>>2]|0,b[D+(c[G>>2]<<1)>>1]|0);c[(c[ka+(c[pa>>2]<<2)>>2]|0)+84>>2]=c[M>>2]}c[pa>>2]=(c[pa>>2]|0)+1}Xs(c[K>>2]|0,c[(c[ka+((c[wa>>2]|0)-1<<2)>>2]|0)+84>>2]|0);if((c[L>>2]&8|0)==0?(c[ya>>2]|0)!=(c[wa>>2]|0):0){c[J>>2]=c[((c[wa>>2]|0)>(c[ya>>2]|0)?ka:la)+((c[ya>>2]|0)-1<<2)>>2];P=(c[(c[ka+((c[wa>>2]|0)-1<<2)>>2]|0)+56>>2]|0)+8|0;O=(c[(c[J>>2]|0)+56>>2]|0)+8|0;a[P>>0]=a[O>>0]|0;a[P+1>>0]=a[O+1>>0]|0;a[P+2>>0]=a[O+2>>0]|0;a[P+3>>0]=a[O+3>>0]|0}f:do if(a[(c[za>>2]|0)+17>>0]|0){c[aa>>2]=c[ka>>2];c[R>>2]=c[(c[aa>>2]|0)+56>>2];c[T>>2]=(e[(c[aa>>2]|0)+18>>1]|0)+(d[(c[aa>>2]|0)+1>>0]|0);c[fa>>2]=c[(c[za>>2]|0)+36>>2];c[U>>2]=0;c[V>>2]=0;c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[ma>>2]|0))break f;c[_>>2]=c[(c[ma+8>>2]|0)+(c[pa>>2]<<2)>>2];if((c[pa>>2]|0)==(c[T>>2]|0)){P=(c[V>>2]|0)+1|0;c[V>>2]=P;l=c[V>>2]|0;if((P|0)<(c[wa>>2]|0))l=c[ka+(l<<2)>>2]|0;else l=c[la+(l<<2)>>2]|0;c[ca>>2]=l;c[T>>2]=(c[T>>2]|0)+((e[(c[ca>>2]|0)+18>>1]|0)+(d[(c[ca>>2]|0)+1>>0]|0)+(((c[va>>2]|0)!=0^1)&1));c[R>>2]=c[(c[ca>>2]|0)+56>>2]}if(!((c[pa>>2]|0)==(c[na+(c[U>>2]<<2)>>2]|0)?(P=(c[U>>2]|0)+1|0,c[U>>2]=P,c[aa>>2]=c[ka+(P<<2)>>2],(c[va>>2]|0)==0):0))h=136;do if((h|0)==136){h=0;if((((c[V>>2]|0)<(c[wa>>2]|0)?(c[(c[aa>>2]|0)+84>>2]|0)==(c[S+(c[V>>2]<<2)>>2]|0):0)?(c[_>>2]|0)>>>0>=(c[R>>2]|0)>>>0:0)?(c[_>>2]|0)>>>0<((c[R>>2]|0)+(c[fa>>2]|0)|0)>>>0:0)break;if(!(b[ua>>1]|0)){O=c[za>>2]|0;P=$q(c[_>>2]|0)|0;xJ(O,P,5,c[(c[aa>>2]|0)+84>>2]|0,Aa)}P=(xL(ma,c[pa>>2]|0)|0)&65535;if((P|0)>(e[(c[aa>>2]|0)+12>>1]|0))zJ(c[aa>>2]|0,c[_>>2]|0,Aa);if(c[Aa>>2]|0)break a}while(0);c[pa>>2]=(c[pa>>2]|0)+1}}while(0);c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=((c[wa>>2]|0)-1|0))break;c[ba>>2]=c[ka+(c[pa>>2]<<2)>>2];c[Y>>2]=c[na+(c[pa>>2]<<2)>>2];c[$>>2]=c[(c[ma+8>>2]|0)+(c[Y>>2]<<2)>>2];c[ea>>2]=(e[(c[ma+12>>2]|0)+(c[Y>>2]<<1)>>1]|0)+(e[ua>>1]|0);c[da>>2]=(c[Q>>2]|0)+(c[W>>2]|0);do if(a[(c[ba>>2]|0)+4>>0]|0){if(c[va>>2]|0){c[Y>>2]=(c[Y>>2]|0)+-1;Ub[c[(c[ba>>2]|0)+80>>2]&255](c[ba>>2]|0,c[(c[ma+8>>2]|0)+(c[Y>>2]<<2)>>2]|0,X);c[$>>2]=c[da>>2];fa=X;c[ea>>2]=4+(kI((c[$>>2]|0)+4|0,c[fa>>2]|0,c[fa+4>>2]|0)|0);c[da>>2]=0;break}c[$>>2]=(c[$>>2]|0)+-4;if((e[(c[ma+12>>2]|0)+(c[Y>>2]<<1)>>1]|0)==4)c[ea>>2]=(Yb[c[(c[ha>>2]|0)+76>>2]&255](c[ha>>2]|0,c[$>>2]|0)|0)&65535}else{fa=(c[(c[ba>>2]|0)+56>>2]|0)+8|0;ca=c[$>>2]|0;a[fa>>0]=a[ca>>0]|0;a[fa+1>>0]=a[ca+1>>0]|0;a[fa+2>>0]=a[ca+2>>0]|0;a[fa+3>>0]=a[ca+3>>0]|0}while(0);c[W>>2]=(c[W>>2]|0)+(c[ea>>2]|0);sL(c[ha>>2]|0,(c[Z>>2]|0)+(c[pa>>2]|0)|0,c[$>>2]|0,c[ea>>2]|0,c[da>>2]|0,c[(c[ba>>2]|0)+84>>2]|0,Aa);if(c[Aa>>2]|0)break a;c[pa>>2]=(c[pa>>2]|0)+1}c[pa>>2]=1-(c[wa>>2]|0);while(1){if((c[pa>>2]|0)>=(c[wa>>2]|0))break;fa=c[pa>>2]|0;c[sa>>2]=(c[pa>>2]|0)<0?0-fa|0:fa;do if(!(a[ja+(c[sa>>2]|0)>>0]|0)){if((c[pa>>2]|0)<0?(c[oa+((c[sa>>2]|0)-1<<2)>>2]|0)<(c[na+((c[sa>>2]|0)-1<<2)>>2]|0):0)break;if(!(c[sa>>2]|0)){c[ra>>2]=0;c[qa>>2]=0;c[xa>>2]=c[na>>2]}else{if((c[sa>>2]|0)<(c[ya>>2]|0))l=(c[oa+((c[sa>>2]|0)-1<<2)>>2]|0)+(((c[va>>2]|0)!=0^1)&1)|0;else l=c[ma>>2]|0;c[ra>>2]=l;c[qa>>2]=(c[na+((c[sa>>2]|0)-1<<2)>>2]|0)+(((c[va>>2]|0)!=0^1)&1);c[xa>>2]=(c[na+(c[sa>>2]<<2)>>2]|0)-(c[qa>>2]|0)}c[Aa>>2]=zL(c[ka+(c[sa>>2]<<2)>>2]|0,c[ra>>2]|0,c[qa>>2]|0,c[xa>>2]|0,ma)|0;if(c[Aa>>2]|0)break a;fa=ja+(c[sa>>2]|0)|0;a[fa>>0]=(a[fa>>0]|0)+1<<24>>24;b[(c[ka+(c[sa>>2]<<2)>>2]|0)+16>>1]=(c[Ca>>2]|0)-(c[Ba+(c[sa>>2]<<2)>>2]|0)}while(0);c[pa>>2]=(c[pa>>2]|0)+1}if(((c[ia>>2]|0)!=0?(e[(c[ha>>2]|0)+18>>1]|0)==0:0)?(d[(c[ha>>2]|0)+5>>0]|0)<=(e[(c[ka>>2]|0)+16>>1]|0):0){c[Aa>>2]=AL(c[ka>>2]|0)|0;BL(c[ka>>2]|0,c[ha>>2]|0,Aa);vK(c[ka>>2]|0,Aa)}else h=174;g:do if((h|0)==174?!((b[ua>>1]|0)!=0?1:(d[(c[za>>2]|0)+17>>0]|0)==0):0){c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[wa>>2]|0))break g;c[ta>>2]=$q((c[(c[ka+(c[pa>>2]<<2)>>2]|0)+56>>2]|0)+8|0)|0;xJ(c[za>>2]|0,c[ta>>2]|0,5,c[(c[ka+(c[pa>>2]<<2)>>2]|0)+84>>2]|0,Aa);c[pa>>2]=(c[pa>>2]|0)+1}}while(0);c[pa>>2]=c[wa>>2];while(1){if((c[pa>>2]|0)>=(c[ya>>2]|0))break a;vK(c[la+(c[pa>>2]<<2)>>2]|0,Aa);c[pa>>2]=(c[pa>>2]|0)+1}}}while(0);Ai(c[ma+8>>2]|0);c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[ya>>2]|0))break;qB(c[la+(c[pa>>2]<<2)>>2]|0);c[pa>>2]=(c[pa>>2]|0)+1}c[pa>>2]=0;while(1){if((c[pa>>2]|0)>=(c[wa>>2]|0))break;qB(c[ka+(c[pa>>2]<<2)>>2]|0);c[pa>>2]=(c[pa>>2]|0)+1}c[ga>>2]=c[Aa>>2];Ca=c[ga>>2]|0;i=Da;return Ca|0}function xL(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=d;if(b[(c[(c[f>>2]|0)+12>>2]|0)+(c[g>>2]<<1)>>1]|0){b[e>>1]=b[(c[(c[f>>2]|0)+12>>2]|0)+(c[g>>2]<<1)>>1]|0;a=b[e>>1]|0;i=h;return a|0}else{b[e>>1]=JL(c[f>>2]|0,c[g>>2]|0)|0;a=b[e>>1]|0;i=h;return a|0}return 0}function yL(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;h=f+4|0;g=f;j=f+8|0;c[h>>2]=a;c[g>>2]=d;b[j>>1]=e;b[(c[h>>2]|0)+24>>1]=b[j>>1]|0;AJ(c[h>>2]|0,c[g>>2]|0);i=f;return}function zL(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+80|0;o=D+68|0;p=D+64|0;q=D+60|0;r=D+56|0;s=D+52|0;t=D+48|0;u=D+44|0;v=D+40|0;A=D+36|0;z=D+32|0;C=D+28|0;B=D+24|0;w=D+20|0;m=D+16|0;l=D+12|0;n=D+8|0;y=D+4|0;x=D;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[u>>2]=c[(c[p>>2]|0)+56>>2];c[v>>2]=d[(c[p>>2]|0)+5>>0];c[A>>2]=(c[(c[p>>2]|0)+64>>2]|0)+(c[s>>2]<<1);c[z>>2]=e[(c[p>>2]|0)+18>>1];c[m>>2]=(c[q>>2]|0)+(e[(c[p>>2]|0)+18>>1]|0)+(d[(c[p>>2]|0)+1>>0]|0);c[l>>2]=(c[r>>2]|0)+(c[s>>2]|0);if((c[q>>2]|0)<(c[r>>2]|0)){c[n>>2]=DL(c[p>>2]|0,c[q>>2]|0,(c[r>>2]|0)-(c[q>>2]|0)|0,c[t>>2]|0)|0;jR(c[(c[p>>2]|0)+64>>2]|0,(c[(c[p>>2]|0)+64>>2]|0)+(c[n>>2]<<1)|0,c[z>>2]<<1|0)|0;c[z>>2]=(c[z>>2]|0)-(c[n>>2]|0)}if((c[l>>2]|0)<(c[m>>2]|0)){f=DL(c[p>>2]|0,c[l>>2]|0,(c[m>>2]|0)-(c[l>>2]|0)|0,c[t>>2]|0)|0;c[z>>2]=(c[z>>2]|0)-f}c[C>>2]=(c[u>>2]|0)+((((d[(c[u>>2]|0)+((c[v>>2]|0)+5)>>0]|0)<<8|(d[(c[u>>2]|0)+((c[v>>2]|0)+5)+1>>0]|0))-1&65535)+1);a:do if((c[C>>2]|0)>>>0>=(c[A>>2]|0)>>>0){if((c[r>>2]|0)<(c[q>>2]|0)){if((c[s>>2]|0)<((c[q>>2]|0)-(c[r>>2]|0)|0))h=c[s>>2]|0;else h=(c[q>>2]|0)-(c[r>>2]|0)|0;c[y>>2]=h;c[B>>2]=c[(c[p>>2]|0)+64>>2];jR((c[B>>2]|0)+(c[y>>2]<<1)|0,c[B>>2]|0,c[z>>2]<<1|0)|0;if(EL(c[p>>2]|0,c[A>>2]|0,C,c[B>>2]|0,c[r>>2]|0,c[y>>2]|0,c[t>>2]|0)|0)break;c[z>>2]=(c[z>>2]|0)+(c[y>>2]|0)}c[w>>2]=0;while(1){if((c[w>>2]|0)>=(d[(c[p>>2]|0)+1>>0]|0|0))break;c[x>>2]=(c[q>>2]|0)+(e[(c[p>>2]|0)+22+(c[w>>2]<<1)>>1]|0)-(c[r>>2]|0);if(((c[x>>2]|0)>=0?(c[x>>2]|0)<(c[s>>2]|0):0)?(c[B>>2]=(c[(c[p>>2]|0)+64>>2]|0)+(c[x>>2]<<1),jR((c[B>>2]|0)+2|0,c[B>>2]|0,(c[z>>2]|0)-(c[x>>2]|0)<<1|0)|0,c[z>>2]=(c[z>>2]|0)+1,(EL(c[p>>2]|0,c[A>>2]|0,C,c[B>>2]|0,(c[x>>2]|0)+(c[r>>2]|0)|0,1,c[t>>2]|0)|0)!=0):0)break a;c[w>>2]=(c[w>>2]|0)+1}c[B>>2]=(c[(c[p>>2]|0)+64>>2]|0)+(c[z>>2]<<1);if(!(EL(c[p>>2]|0,c[A>>2]|0,C,c[B>>2]|0,(c[r>>2]|0)+(c[z>>2]|0)|0,(c[s>>2]|0)-(c[z>>2]|0)|0,c[t>>2]|0)|0)){b[(c[p>>2]|0)+18>>1]=c[s>>2];a[(c[p>>2]|0)+1>>0]=0;a[(c[u>>2]|0)+((c[v>>2]|0)+3)>>0]=(e[(c[p>>2]|0)+18>>1]|0)>>8;a[(c[u>>2]|0)+((c[v>>2]|0)+3)+1>>0]=b[(c[p>>2]|0)+18>>1];a[(c[u>>2]|0)+((c[v>>2]|0)+5)>>0]=(c[C>>2]|0)-(c[u>>2]|0)>>8;a[(c[u>>2]|0)+((c[v>>2]|0)+5)+1>>0]=(c[C>>2]|0)-(c[u>>2]|0);c[o>>2]=0;C=c[o>>2]|0;i=D;return C|0}}while(0);FL(c[t>>2]|0,c[r>>2]|0,c[s>>2]|0);c[o>>2]=GL(c[p>>2]|0,c[s>>2]|0,(c[(c[t>>2]|0)+8>>2]|0)+(c[r>>2]<<2)|0,(c[(c[t>>2]|0)+12>>2]|0)+(c[r>>2]<<1)|0)|0;C=c[o>>2]|0;i=D;return C|0}function AL(b){b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+80|0;f=y+64|0;g=y+60|0;m=y+56|0;r=y+52|0;l=y+48|0;s=y+44|0;v=y+40|0;j=y+36|0;h=y+32|0;p=y+28|0;k=y+24|0;u=y+20|0;t=y+16|0;n=y+12|0;o=y+8|0;q=y+4|0;w=y;c[g>>2]=b;c[u>>2]=0;b=c[(c[g>>2]|0)+56>>2]|0;c[k>>2]=b;c[t>>2]=b;c[l>>2]=d[(c[g>>2]|0)+5>>0];c[j>>2]=e[(c[g>>2]|0)+14>>1];c[p>>2]=e[(c[g>>2]|0)+18>>1];c[v>>2]=c[(c[(c[g>>2]|0)+52>>2]|0)+36>>2];c[h>>2]=c[v>>2];c[n>>2]=(c[j>>2]|0)+(c[p>>2]<<1);c[o>>2]=(c[v>>2]|0)-4;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[p>>2]|0)){x=14;break}c[q>>2]=(c[k>>2]|0)+((c[j>>2]|0)+(c[m>>2]<<1));c[r>>2]=(d[c[q>>2]>>0]|0)<<8|(d[(c[q>>2]|0)+1>>0]|0);if((c[r>>2]|0)<(c[n>>2]|0)){x=5;break}if((c[r>>2]|0)>(c[o>>2]|0)){x=5;break}c[s>>2]=(Yb[c[(c[g>>2]|0)+76>>2]&255](c[g>>2]|0,(c[t>>2]|0)+(c[r>>2]|0)|0)|0)&65535;c[h>>2]=(c[h>>2]|0)-(c[s>>2]|0);if((c[h>>2]|0)<(c[n>>2]|0)){x=8;break}if(((c[r>>2]|0)+(c[s>>2]|0)|0)>(c[v>>2]|0)){x=8;break}a[c[q>>2]>>0]=c[h>>2]>>8;a[(c[q>>2]|0)+1>>0]=c[h>>2];if(!(c[u>>2]|0)){if((c[h>>2]|0)!=(c[r>>2]|0)){c[u>>2]=CL(c[c[(c[g>>2]|0)+52>>2]>>2]|0)|0;c[w>>2]=(d[(c[k>>2]|0)+((c[l>>2]|0)+5)>>0]|0)<<8|(d[(c[k>>2]|0)+((c[l>>2]|0)+5)+1>>0]|0);iR((c[u>>2]|0)+(c[w>>2]|0)|0,(c[k>>2]|0)+(c[w>>2]|0)|0,(c[h>>2]|0)+(c[s>>2]|0)-(c[w>>2]|0)|0)|0;c[t>>2]=c[u>>2];x=12}}else x=12;if((x|0)==12){x=0;iR((c[k>>2]|0)+(c[h>>2]|0)|0,(c[t>>2]|0)+(c[r>>2]|0)|0,c[s>>2]|0)|0}c[m>>2]=(c[m>>2]|0)+1}if((x|0)==5){c[f>>2]=Lj(56934)|0;x=c[f>>2]|0;i=y;return x|0}else if((x|0)==8){c[f>>2]=Lj(56940)|0;x=c[f>>2]|0;i=y;return x|0}else if((x|0)==14){a[(c[k>>2]|0)+((c[l>>2]|0)+5)>>0]=c[h>>2]>>8;a[(c[k>>2]|0)+((c[l>>2]|0)+5)+1>>0]=c[h>>2];a[(c[k>>2]|0)+((c[l>>2]|0)+1)>>0]=0;a[(c[k>>2]|0)+((c[l>>2]|0)+2)>>0]=0;a[(c[k>>2]|0)+((c[l>>2]|0)+7)>>0]=0;kR((c[k>>2]|0)+(c[n>>2]|0)|0,0,(c[h>>2]|0)-(c[n>>2]|0)|0)|0;if(((c[h>>2]|0)-(c[n>>2]|0)|0)!=(e[(c[g>>2]|0)+16>>1]|0|0)){c[f>>2]=Lj(56964)|0;x=c[f>>2]|0;i=y;return x|0}else{c[f>>2]=0;x=c[f>>2]|0;i=y;return x|0}}return 0}function BL(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;h=s+36|0;j=s+32|0;k=s+28|0;q=s+24|0;l=s+20|0;m=s+16|0;o=s+12|0;p=s+8|0;r=s+4|0;n=s;c[h>>2]=b;c[j>>2]=f;c[k>>2]=g;if(c[c[k>>2]>>2]|0){i=s;return}c[q>>2]=c[(c[h>>2]|0)+52>>2];c[l>>2]=c[(c[h>>2]|0)+56>>2];c[m>>2]=c[(c[j>>2]|0)+56>>2];c[o>>2]=d[(c[h>>2]|0)+5>>0];c[p>>2]=(c[(c[j>>2]|0)+84>>2]|0)==1?100:0;c[n>>2]=d[(c[l>>2]|0)+((c[o>>2]|0)+5)>>0]<<8|d[(c[l>>2]|0)+((c[o>>2]|0)+5)+1>>0];iR((c[m>>2]|0)+(c[n>>2]|0)|0,(c[l>>2]|0)+(c[n>>2]|0)|0,(c[(c[q>>2]|0)+36>>2]|0)-(c[n>>2]|0)|0)|0;iR((c[m>>2]|0)+(c[p>>2]|0)|0,(c[l>>2]|0)+(c[o>>2]|0)|0,(e[(c[h>>2]|0)+14>>1]|0)+(e[(c[h>>2]|0)+18>>1]<<1)|0)|0;a[c[j>>2]>>0]=0;c[r>>2]=Kt(c[j>>2]|0)|0;if(c[r>>2]|0){c[c[k>>2]>>2]=c[r>>2];i=s;return}if(!(a[(c[q>>2]|0)+17>>0]|0)){i=s;return}r=wJ(c[j>>2]|0)|0;c[c[k>>2]>>2]=r;i=s;return}function CL(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+208>>2]|0}function DL(a,b,f,g){a=a|0;b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=i;i=i+64|0;h=w+56|0;j=w+52|0;x=w+48|0;y=w+44|0;k=w+40|0;l=w+36|0;q=w+32|0;s=w+28|0;o=w+24|0;m=w+20|0;n=w+16|0;r=w+12|0;u=w+8|0;p=w+4|0;t=w;c[j>>2]=a;c[x>>2]=b;c[y>>2]=f;c[k>>2]=g;c[l>>2]=c[(c[j>>2]|0)+56>>2];c[q>>2]=(c[l>>2]|0)+(c[(c[(c[j>>2]|0)+52>>2]|0)+36>>2]|0);c[s>>2]=(c[l>>2]|0)+((d[(c[j>>2]|0)+5>>0]|0)+8+(d[(c[j>>2]|0)+6>>0]|0));c[o>>2]=0;c[n>>2]=(c[x>>2]|0)+(c[y>>2]|0);c[r>>2]=0;c[u>>2]=0;c[m>>2]=c[x>>2];while(1){if((c[m>>2]|0)>=(c[n>>2]|0))break;c[p>>2]=c[(c[(c[k>>2]|0)+8>>2]|0)+(c[m>>2]<<2)>>2];if((c[p>>2]|0)>>>0>=(c[s>>2]|0)>>>0?(c[p>>2]|0)>>>0<(c[q>>2]|0)>>>0:0){c[t>>2]=e[(c[(c[k>>2]|0)+12>>2]|0)+(c[m>>2]<<1)>>1];if((c[r>>2]|0)!=((c[p>>2]|0)+(c[t>>2]|0)|0)){if(c[r>>2]|0)IL(c[j>>2]|0,(c[r>>2]|0)-(c[l>>2]|0)&65535,c[u>>2]&65535)|0;c[r>>2]=c[p>>2];c[u>>2]=c[t>>2];if(((c[r>>2]|0)+(c[t>>2]|0)|0)>>>0>(c[q>>2]|0)>>>0){v=9;break}}else{c[r>>2]=c[p>>2];c[u>>2]=(c[u>>2]|0)+(c[t>>2]|0)}c[o>>2]=(c[o>>2]|0)+1}c[m>>2]=(c[m>>2]|0)+1}if((v|0)==9){c[h>>2]=0;y=c[h>>2]|0;i=w;return y|0}if(c[r>>2]|0)IL(c[j>>2]|0,(c[r>>2]|0)-(c[l>>2]|0)&65535,c[u>>2]&65535)|0;c[h>>2]=c[o>>2];y=c[h>>2]|0;i=w;return y|0}function EL(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;y=i;i=i+64|0;l=y+56|0;m=y+52|0;n=y+48|0;o=y+44|0;p=y+40|0;z=y+36|0;A=y+32|0;q=y+28|0;s=y+24|0;r=y+20|0;u=y+16|0;t=y+12|0;x=y+8|0;w=y+4|0;v=y;c[m>>2]=b;c[n>>2]=e;c[o>>2]=f;c[p>>2]=g;c[z>>2]=h;c[A>>2]=j;c[q>>2]=k;c[r>>2]=c[(c[m>>2]|0)+56>>2];c[u>>2]=c[c[o>>2]>>2];c[t>>2]=(c[z>>2]|0)+(c[A>>2]|0);c[s>>2]=c[z>>2];while(1){if((c[s>>2]|0)>=(c[t>>2]|0)){h=10;break}c[x>>2]=(xL(c[q>>2]|0,c[s>>2]|0)|0)&65535;if((d[(c[r>>2]|0)+1>>0]|0|0)==0?(d[(c[r>>2]|0)+2>>0]|0|0)==0:0)h=6;else h=5;if((h|0)==5?(h=0,A=HL(c[m>>2]|0,c[x>>2]|0,w)|0,c[v>>2]=A,(A|0)==0):0)h=6;if((h|0)==6){c[u>>2]=(c[u>>2]|0)+(0-(c[x>>2]|0));if((c[u>>2]|0)>>>0<(c[n>>2]|0)>>>0){h=7;break}c[v>>2]=c[u>>2]}jR(c[v>>2]|0,c[(c[(c[q>>2]|0)+8>>2]|0)+(c[s>>2]<<2)>>2]|0,c[x>>2]|0)|0;a[c[p>>2]>>0]=(c[v>>2]|0)-(c[r>>2]|0)>>8;a[(c[p>>2]|0)+1>>0]=(c[v>>2]|0)-(c[r>>2]|0);c[p>>2]=(c[p>>2]|0)+2;c[s>>2]=(c[s>>2]|0)+1}if((h|0)==7){c[l>>2]=1;A=c[l>>2]|0;i=y;return A|0}else if((h|0)==10){c[c[o>>2]>>2]=c[u>>2];c[l>>2]=0;A=c[l>>2]|0;i=y;return A|0}return 0}function FL(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=d;c[j>>2]=f;while(1){if((c[j>>2]|0)<=0)break;if(!(e[(c[(c[g>>2]|0)+12>>2]|0)+(c[h>>2]<<1)>>1]|0)){a=Yb[c[(c[(c[g>>2]|0)+4>>2]|0)+76>>2]&255](c[(c[g>>2]|0)+4>>2]|0,c[(c[(c[g>>2]|0)+8>>2]|0)+(c[h>>2]<<2)>>2]|0)|0;b[(c[(c[g>>2]|0)+12>>2]|0)+(c[h>>2]<<1)>>1]=a}c[h>>2]=(c[h>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+-1}i=k;return}function GL(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+64|0;r=x+52|0;s=x+48|0;t=x+44|0;k=x+40|0;l=x+36|0;v=x+32|0;u=x+28|0;y=x+24|0;p=x+20|0;m=x+16|0;o=x+12|0;q=x+8|0;w=x+4|0;n=x;c[s>>2]=f;c[t>>2]=g;c[k>>2]=h;c[l>>2]=j;c[v>>2]=d[(c[s>>2]|0)+5>>0];c[u>>2]=c[(c[s>>2]|0)+56>>2];c[y>>2]=c[(c[(c[s>>2]|0)+52>>2]|0)+36>>2];c[p>>2]=(c[u>>2]|0)+(c[y>>2]|0);c[o>>2]=c[(c[s>>2]|0)+64>>2];c[q>>2]=CL(c[c[(c[s>>2]|0)+52>>2]>>2]|0)|0;c[m>>2]=(d[(c[u>>2]|0)+((c[v>>2]|0)+5)>>0]|0)<<8|(d[(c[u>>2]|0)+((c[v>>2]|0)+5)+1>>0]|0);iR((c[q>>2]|0)+(c[m>>2]|0)|0,(c[u>>2]|0)+(c[m>>2]|0)|0,(c[y>>2]|0)-(c[m>>2]|0)|0)|0;c[w>>2]=c[p>>2];c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[t>>2]|0)){k=9;break}c[n>>2]=c[(c[k>>2]|0)+(c[m>>2]<<2)>>2];if((c[n>>2]|0)>>>0>=(c[u>>2]|0)>>>0?(c[n>>2]|0)>>>0<(c[p>>2]|0)>>>0:0)c[n>>2]=(c[q>>2]|0)+((c[n>>2]|0)-(c[u>>2]|0));c[w>>2]=(c[w>>2]|0)+(0-(e[(c[l>>2]|0)+(c[m>>2]<<1)>>1]|0));a[c[o>>2]>>0]=(c[w>>2]|0)-(c[u>>2]|0)>>8;a[(c[o>>2]|0)+1>>0]=(c[w>>2]|0)-(c[u>>2]|0);c[o>>2]=(c[o>>2]|0)+2;if((c[w>>2]|0)>>>0<(c[o>>2]|0)>>>0){k=7;break}iR(c[w>>2]|0,c[n>>2]|0,e[(c[l>>2]|0)+(c[m>>2]<<1)>>1]|0|0)|0;c[m>>2]=(c[m>>2]|0)+1}if((k|0)==7){c[r>>2]=Lj(62048)|0;y=c[r>>2]|0;i=x;return y|0}else if((k|0)==9){b[(c[s>>2]|0)+18>>1]=c[t>>2];a[(c[s>>2]|0)+1>>0]=0;a[(c[u>>2]|0)+((c[v>>2]|0)+1)>>0]=0;a[(c[u>>2]|0)+((c[v>>2]|0)+1)+1>>0]=0;a[(c[u>>2]|0)+((c[v>>2]|0)+3)>>0]=(e[(c[s>>2]|0)+18>>1]|0)>>8;a[(c[u>>2]|0)+((c[v>>2]|0)+3)+1>>0]=b[(c[s>>2]|0)+18>>1];a[(c[u>>2]|0)+((c[v>>2]|0)+5)>>0]=(c[w>>2]|0)-(c[u>>2]|0)>>8;a[(c[u>>2]|0)+((c[v>>2]|0)+5)+1>>0]=(c[w>>2]|0)-(c[u>>2]|0);a[(c[u>>2]|0)+((c[v>>2]|0)+7)>>0]=0;c[r>>2]=0;y=c[r>>2]|0;i=x;return y|0}return 0}function HL(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;j=t+40|0;k=t+36|0;h=t+32|0;l=t+28|0;n=t+24|0;m=t+20|0;o=t+16|0;p=t+12|0;s=t+8|0;r=t+4|0;q=t;c[k>>2]=b;c[h>>2]=f;c[l>>2]=g;c[n>>2]=d[(c[k>>2]|0)+5>>0];c[m>>2]=c[(c[k>>2]|0)+56>>2];c[o>>2]=(c[n>>2]|0)+1;c[p>>2]=(d[(c[m>>2]|0)+(c[o>>2]|0)>>0]|0)<<8|(d[(c[m>>2]|0)+(c[o>>2]|0)+1>>0]|0);c[r>>2]=c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2];while(1){if((c[p>>2]|0)>((c[r>>2]|0)-4|0)){f=4;break}if((c[p>>2]|0)<((c[o>>2]|0)+4|0)){f=4;break}c[q>>2]=(d[(c[m>>2]|0)+((c[p>>2]|0)+2)>>0]|0)<<8|(d[(c[m>>2]|0)+((c[p>>2]|0)+2)+1>>0]|0);g=(c[q>>2]|0)-(c[h>>2]|0)|0;c[s>>2]=g;b=c[p>>2]|0;if((g|0)>=0){f=6;break}c[o>>2]=b;c[p>>2]=(d[(c[m>>2]|0)+(c[p>>2]|0)>>0]|0)<<8|(d[(c[m>>2]|0)+(c[p>>2]|0)+1>>0]|0);if(!(c[p>>2]|0)){f=16;break}}if((f|0)==4){s=Lj(56997)|0;c[c[l>>2]>>2]=s;c[j>>2]=0;s=c[j>>2]|0;i=t;return s|0}else if((f|0)==6){if((b|0)>=((e[(c[k>>2]|0)+14>>1]|0)+((e[(c[k>>2]|0)+18>>1]|0)<<1)|0)?((c[q>>2]|0)+(c[p>>2]|0)|0)<=(c[r>>2]|0):0){do if((c[s>>2]|0)<4){if((d[(c[m>>2]|0)+((c[n>>2]|0)+7)>>0]|0|0)<=57){r=(c[m>>2]|0)+(c[o>>2]|0)|0;q=(c[m>>2]|0)+(c[p>>2]|0)|0;a[r>>0]=a[q>>0]|0;a[r+1>>0]=a[q+1>>0]|0;r=(c[m>>2]|0)+((c[n>>2]|0)+7)|0;a[r>>0]=(d[r>>0]|0)+(c[s>>2]&255);break}c[j>>2]=0;s=c[j>>2]|0;i=t;return s|0}else{a[(c[m>>2]|0)+((c[p>>2]|0)+2)>>0]=c[s>>2]>>8;a[(c[m>>2]|0)+((c[p>>2]|0)+2)+1>>0]=c[s>>2]}while(0);c[j>>2]=(c[m>>2]|0)+((c[p>>2]|0)+(c[s>>2]|0));s=c[j>>2]|0;i=t;return s|0}s=Lj(57008)|0;c[c[l>>2]>>2]=s;c[j>>2]=0;s=c[j>>2]|0;i=t;return s|0}else if((f|0)==16){c[j>>2]=0;s=c[j>>2]|0;i=t;return s|0}return 0}function IL(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+48|0;j=x+20|0;k=x+16|0;l=x+32|0;m=x+30|0;t=x+28|0;q=x+26|0;o=x+35|0;v=x+34|0;s=x+24|0;r=x+12|0;p=x+8|0;n=x+4|0;u=x;c[k>>2]=f;b[l>>1]=g;b[m>>1]=h;a[v>>0]=0;b[s>>1]=b[m>>1]|0;c[r>>2]=(c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2]|0)-4;c[p>>2]=(e[l>>1]|0)+(e[m>>1]|0);c[n>>2]=c[(c[k>>2]|0)+56>>2];if((e[(c[(c[k>>2]|0)+52>>2]|0)+22>>1]|0)&4)kR((c[n>>2]|0)+(e[l>>1]|0)|0,0,e[m>>1]|0|0)|0;a[o>>0]=a[(c[k>>2]|0)+5>>0]|0;b[t>>1]=(d[o>>0]|0)+1;if((d[(c[n>>2]|0)+((e[t>>1]|0)+1)>>0]|0|0)==0?(d[(c[n>>2]|0)+(e[t>>1]|0)>>0]|0|0)==0:0)b[q>>1]=0;else w=6;do if((w|0)==6){while(1){w=0;f=((d[(c[n>>2]|0)+(e[t>>1]|0)>>0]|0)<<8|(d[(c[n>>2]|0)+(e[t>>1]|0)+1>>0]|0))&65535;b[q>>1]=f;if((f&65535|0)>0)h=(e[q>>1]|0|0)<(e[l>>1]|0|0);else h=0;g=e[q>>1]|0;if(!h)break;if((g|0)<((e[t>>1]|0)+4|0)){w=10;break}b[t>>1]=b[q>>1]|0;w=6}if((w|0)==10){c[j>>2]=Lj(57169)|0;w=c[j>>2]|0;i=x;return w|0}if(g>>>0>(c[r>>2]|0)>>>0){c[j>>2]=Lj(57172)|0;w=c[j>>2]|0;i=x;return w|0}do if((e[q>>1]|0|0)!=0?((c[p>>2]|0)+3|0)>>>0>=(e[q>>1]|0)>>>0:0){a[v>>0]=(e[q>>1]|0)-(c[p>>2]|0);if((c[p>>2]|0)>>>0>(e[q>>1]|0)>>>0){c[j>>2]=Lj(57183)|0;w=c[j>>2]|0;i=x;return w|0}c[p>>2]=(e[q>>1]|0)+((d[(c[n>>2]|0)+((e[q>>1]|0)+2)>>0]|0)<<8|(d[(c[n>>2]|0)+((e[q>>1]|0)+2)+1>>0]|0));if((c[p>>2]|0)>>>0<=(c[(c[(c[k>>2]|0)+52>>2]|0)+36>>2]|0)>>>0){b[m>>1]=(c[p>>2]|0)-(e[l>>1]|0);b[q>>1]=(d[(c[n>>2]|0)+(e[q>>1]|0)>>0]|0)<<8|(d[(c[n>>2]|0)+(e[q>>1]|0)+1>>0]|0);break}c[j>>2]=Lj(57185)|0;w=c[j>>2]|0;i=x;return w|0}while(0);do if((e[t>>1]|0|0)>((d[o>>0]|0)+1|0)?(c[u>>2]=(e[t>>1]|0)+((d[(c[n>>2]|0)+((e[t>>1]|0)+2)>>0]|0)<<8|(d[(c[n>>2]|0)+((e[t>>1]|0)+2)+1>>0]|0)),((c[u>>2]|0)+3|0)>=(e[l>>1]|0|0)):0){if((c[u>>2]|0)<=(e[l>>1]|0|0)){a[v>>0]=(d[v>>0]|0)+((e[l>>1]|0)-(c[u>>2]|0));b[m>>1]=(c[p>>2]|0)-(e[t>>1]|0);b[l>>1]=b[t>>1]|0;break}c[j>>2]=Lj(57197)|0;w=c[j>>2]|0;i=x;return w|0}while(0);if((d[v>>0]|0|0)<=(d[(c[n>>2]|0)+((d[o>>0]|0)+7)>>0]|0|0)){w=(c[n>>2]|0)+((d[o>>0]|0)+7)|0;a[w>>0]=(d[w>>0]|0)-(d[v>>0]|0);break}c[j>>2]=Lj(57203)|0;w=c[j>>2]|0;i=x;return w|0}while(0);do if((e[l>>1]|0|0)==((d[(c[n>>2]|0)+((d[o>>0]|0)+5)>>0]|0)<<8|(d[(c[n>>2]|0)+((d[o>>0]|0)+5)+1>>0]|0)|0)){if((e[t>>1]|0|0)==((d[o>>0]|0)+1|0)){a[(c[n>>2]|0)+((d[o>>0]|0)+1)>>0]=(e[q>>1]|0)>>8;a[(c[n>>2]|0)+((d[o>>0]|0)+1)+1>>0]=b[q>>1];a[(c[n>>2]|0)+((d[o>>0]|0)+5)>>0]=(c[p>>2]|0)>>>8;a[(c[n>>2]|0)+((d[o>>0]|0)+5)+1>>0]=c[p>>2];break}c[j>>2]=Lj(57210)|0;w=c[j>>2]|0;i=x;return w|0}else{a[(c[n>>2]|0)+(e[t>>1]|0)>>0]=(e[l>>1]|0)>>8;a[(c[n>>2]|0)+(e[t>>1]|0)+1>>0]=b[l>>1];a[(c[n>>2]|0)+(e[l>>1]|0)>>0]=(e[q>>1]|0)>>8;a[(c[n>>2]|0)+(e[l>>1]|0)+1>>0]=b[q>>1];a[(c[n>>2]|0)+((e[l>>1]|0)+2)>>0]=(e[m>>1]|0)>>8;a[(c[n>>2]|0)+((e[l>>1]|0)+2)+1>>0]=b[m>>1]}while(0);w=(c[k>>2]|0)+16|0;b[w>>1]=(e[w>>1]|0)+(e[s>>1]|0);c[j>>2]=0;w=c[j>>2]|0;i=x;return w|0}function JL(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g+4|0;e=g;c[f>>2]=a;c[e>>2]=d;a=Yb[c[(c[(c[f>>2]|0)+4>>2]|0)+76>>2]&255](c[(c[f>>2]|0)+4>>2]|0,c[(c[(c[f>>2]|0)+8>>2]|0)+(c[e>>2]<<2)>>2]|0)|0;b[(c[(c[f>>2]|0)+12>>2]|0)+(c[e>>2]<<1)>>1]=a;i=g;return b[(c[(c[f>>2]|0)+12>>2]|0)+(c[e>>2]<<1)>>1]|0}function KL(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+36|0;j=t+32|0;k=t+28|0;l=t+24|0;o=t+20|0;m=t+16|0;r=t+12|0;q=t+8|0;n=t+4|0;p=t;c[j>>2]=b;c[k>>2]=f;c[l>>2]=g;c[o>>2]=d[(c[j>>2]|0)+5>>0];c[m>>2]=c[(c[j>>2]|0)+56>>2];c[q>>2]=0;c[n>>2]=(e[(c[j>>2]|0)+14>>1]|0)+((e[(c[j>>2]|0)+18>>1]|0)<<1);c[r>>2]=(d[(c[m>>2]|0)+((c[o>>2]|0)+5)>>0]|0)<<8|(d[(c[m>>2]|0)+((c[o>>2]|0)+5)+1>>0]|0);do if((c[n>>2]|0)>(c[r>>2]|0)){if((c[r>>2]|0)==0?(c[(c[(c[j>>2]|0)+52>>2]|0)+36>>2]|0)==65536:0){c[r>>2]=65536;break}c[h>>2]=Lj(57075)|0;s=c[h>>2]|0;i=t;return s|0}while(0);if(!((d[(c[m>>2]|0)+((c[o>>2]|0)+2)>>0]|0|0)==0?(d[(c[m>>2]|0)+((c[o>>2]|0)+1)>>0]|0|0)==0:0))s=8;if((s|0)==8?((c[n>>2]|0)+2|0)<=(c[r>>2]|0):0){c[p>>2]=HL(c[j>>2]|0,c[k>>2]|0,q)|0;if(c[p>>2]|0){c[c[l>>2]>>2]=(c[p>>2]|0)-(c[m>>2]|0);c[h>>2]=0;s=c[h>>2]|0;i=t;return s|0}if(c[q>>2]|0){c[h>>2]=c[q>>2];s=c[h>>2]|0;i=t;return s|0}}do if(((c[n>>2]|0)+2+(c[k>>2]|0)|0)>(c[r>>2]|0)){c[q>>2]=AL(c[j>>2]|0)|0;if(!(c[q>>2]|0)){c[r>>2]=(((d[(c[m>>2]|0)+((c[o>>2]|0)+5)>>0]|0)<<8|(d[(c[m>>2]|0)+((c[o>>2]|0)+5)+1>>0]|0))-1&65535)+1;break}c[h>>2]=c[q>>2];s=c[h>>2]|0;i=t;return s|0}while(0);c[r>>2]=(c[r>>2]|0)-(c[k>>2]|0);a[(c[m>>2]|0)+((c[o>>2]|0)+5)>>0]=c[r>>2]>>8;a[(c[m>>2]|0)+((c[o>>2]|0)+5)+1>>0]=c[r>>2];c[c[l>>2]>>2]=c[r>>2];c[h>>2]=0;s=c[h>>2]|0;i=t;return s|0}function LL(b,f,g,h,j,k,l,m,n){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;M=i;i=i+112|0;J=M+96|0;p=M+92|0;q=M+88|0;r=M+84|0;s=M;t=M+80|0;u=M+76|0;N=M+72|0;o=M+68|0;z=M+64|0;F=M+60|0;A=M+56|0;x=M+52|0;L=M+48|0;I=M+44|0;C=M+40|0;K=M+36|0;E=M+32|0;D=M+28|0;B=M+24|0;G=M+20|0;y=M+16|0;w=M+12|0;H=M+8|0;v=M+100|0;c[p>>2]=b;c[q>>2]=f;c[r>>2]=g;b=s;c[b>>2]=h;c[b+4>>2]=j;c[t>>2]=k;c[u>>2]=l;c[N>>2]=m;c[o>>2]=n;c[C>>2]=0;c[K>>2]=0;c[B>>2]=c[(c[p>>2]|0)+52>>2];c[G>>2]=0;c[y>>2]=d[(c[p>>2]|0)+6>>0];c[z>>2]=(c[u>>2]|0)+(c[N>>2]|0);if(a[(c[p>>2]|0)+3>>0]|0){if((c[z>>2]|0)>>>0<128){a[(c[q>>2]|0)+(c[y>>2]|0)>>0]=c[z>>2];h=1}else{h=c[z>>2]|0;h=kI((c[q>>2]|0)+(c[y>>2]|0)|0,h,((h|0)<0)<<31>>31)|0}c[y>>2]=(c[y>>2]|0)+(h&255)}N=s;N=kI((c[q>>2]|0)+(c[y>>2]|0)|0,c[N>>2]|0,c[N+4>>2]|0)|0;c[y>>2]=(c[y>>2]|0)+N;if(a[(c[p>>2]|0)+2>>0]|0){c[F>>2]=c[t>>2];c[A>>2]=c[u>>2];c[u>>2]=0}else{c[z>>2]=c[s>>2];c[F>>2]=c[r>>2];c[A>>2]=c[s>>2]}if((c[z>>2]|0)<=(e[(c[p>>2]|0)+10>>1]|0)){N=(c[y>>2]|0)+(c[z>>2]|0)|0;c[x>>2]=N;c[x>>2]=(c[x>>2]|0)<4?4:N; -c[c[o>>2]>>2]=c[x>>2];c[I>>2]=c[z>>2];c[E>>2]=c[q>>2]}else{c[w>>2]=e[(c[p>>2]|0)+12>>1];c[x>>2]=(c[w>>2]|0)+((((c[z>>2]|0)-(c[w>>2]|0)|0)>>>0)%(((c[(c[(c[p>>2]|0)+52>>2]|0)+36>>2]|0)-4|0)>>>0)|0);if((c[x>>2]|0)>(e[(c[p>>2]|0)+10>>1]|0))c[x>>2]=c[w>>2];c[I>>2]=c[x>>2];c[c[o>>2]>>2]=(c[x>>2]|0)+(c[y>>2]|0)+4;c[E>>2]=(c[q>>2]|0)+((c[y>>2]|0)+(c[x>>2]|0))}c[D>>2]=(c[q>>2]|0)+(c[y>>2]|0);while(1){if((c[z>>2]|0)<=0){h=35;break}if(!(c[I>>2]|0)){c[H>>2]=c[G>>2];if(a[(c[B>>2]|0)+17>>0]|0)while(1){c[G>>2]=(c[G>>2]|0)+1;N=lF(c[B>>2]|0,c[G>>2]|0)|0;if((N|0)==(c[G>>2]|0))continue;if((c[G>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[B>>2]|0)+32>>2]|0)>>>0)|0)+1|0))break}c[L>>2]=tJ(c[B>>2]|0,C,G,c[G>>2]|0,0)|0;if(((c[L>>2]|0)==0?(d[(c[B>>2]|0)+17>>0]|0)!=0:0)?(a[v>>0]=(c[H>>2]|0)!=0?4:3,xJ(c[B>>2]|0,c[G>>2]|0,a[v>>0]|0,c[H>>2]|0,L),(c[L>>2]|0)!=0):0)qB(c[C>>2]|0);if(c[L>>2]|0){h=24;break}Xs(c[E>>2]|0,c[G>>2]|0);qB(c[K>>2]|0);c[K>>2]=c[C>>2];c[E>>2]=c[(c[C>>2]|0)+56>>2];Xs(c[E>>2]|0,0);c[D>>2]=(c[(c[C>>2]|0)+56>>2]|0)+4;c[I>>2]=(c[(c[B>>2]|0)+36>>2]|0)-4}c[x>>2]=c[z>>2];if((c[x>>2]|0)>(c[I>>2]|0))c[x>>2]=c[I>>2];if((c[A>>2]|0)>0){if((c[x>>2]|0)>(c[A>>2]|0))c[x>>2]=c[A>>2];iR(c[D>>2]|0,c[F>>2]|0,c[x>>2]|0)|0}else kR(c[D>>2]|0,0,c[x>>2]|0)|0;c[z>>2]=(c[z>>2]|0)-(c[x>>2]|0);c[D>>2]=(c[D>>2]|0)+(c[x>>2]|0);c[F>>2]=(c[F>>2]|0)+(c[x>>2]|0);c[A>>2]=(c[A>>2]|0)-(c[x>>2]|0);c[I>>2]=(c[I>>2]|0)-(c[x>>2]|0);if(c[A>>2]|0)continue;c[A>>2]=c[u>>2];c[F>>2]=c[t>>2]}if((h|0)==24){qB(c[K>>2]|0);c[J>>2]=c[L>>2];N=c[J>>2]|0;i=M;return N|0}else if((h|0)==35){qB(c[K>>2]|0);c[J>>2]=0;N=c[J>>2]|0;i=M;return N|0}return 0}function ML(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[e>>2]|0)+16>>2];if(!(c[f>>2]|0)){i=g;return}RI(c[d>>2]|0,c[f>>2]|0);Kd(c[(c[f>>2]|0)+36+4>>2]|0);Sf(c[d>>2]|0,c[f>>2]|0);c[(c[e>>2]|0)+16>>2]=0;i=g;return}function NL(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;g=u+44|0;h=u+40|0;j=u+36|0;k=u+32|0;n=u+28|0;p=u+24|0;r=u+20|0;t=u+16|0;s=u+12|0;q=u+8|0;o=u+4|0;l=u+48|0;m=u;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[n>>2]=c[(c[h>>2]|0)+4>>2];f=c[n>>2]|0;if(a[(c[n>>2]|0)+17>>0]|0){rJ(f);ng(c[h>>2]|0,4,r);c[r>>2]=(c[r>>2]|0)+1;while(1){e=c[r>>2]|0;if((e|0)!=(lF(c[n>>2]|0,c[r>>2]|0)|0)?(c[r>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[n>>2]|0)+32>>2]|0)>>>0)|0)+1|0):0)break;c[r>>2]=(c[r>>2]|0)+1}c[t>>2]=tJ(c[n>>2]|0,o,q,c[r>>2]|0,1)|0;if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}if((c[q>>2]|0)!=(c[r>>2]|0)){a[l>>0]=0;c[m>>2]=0;c[t>>2]=nH(c[n>>2]|0,0,0)|0;qB(c[o>>2]|0);if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=nF(c[n>>2]|0,c[r>>2]|0,p,0)|0;if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=mF(c[n>>2]|0,c[r>>2]|0,l,m)|0;if(!((d[l>>0]|0)!=1?(d[l>>0]|0)!=2:0))c[t>>2]=Lj(63920)|0;if(c[t>>2]|0){qB(c[p>>2]|0);c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=uJ(c[n>>2]|0,c[p>>2]|0,a[l>>0]|0,c[m>>2]|0,c[q>>2]|0,0)|0;qB(c[p>>2]|0);if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=nF(c[n>>2]|0,c[r>>2]|0,p,0)|0;if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=Dg(c[(c[p>>2]|0)+72>>2]|0)|0;if(c[t>>2]|0){qB(c[p>>2]|0);c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}}else c[p>>2]=c[o>>2];xJ(c[n>>2]|0,c[r>>2]|0,1,0,t);if(c[t>>2]|0){qB(c[p>>2]|0);c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}c[t>>2]=yg(c[h>>2]|0,4,c[r>>2]|0)|0;if(c[t>>2]|0){qB(c[p>>2]|0);c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}}else{c[t>>2]=tJ(f,p,r,1,0)|0;if(c[t>>2]|0){c[g>>2]=c[t>>2];t=c[g>>2]|0;i=u;return t|0}}if(c[k>>2]&1)c[s>>2]=13;else c[s>>2]=10;wK(c[p>>2]|0,c[s>>2]|0);vg(c[(c[p>>2]|0)+72>>2]|0);c[c[j>>2]>>2]=c[r>>2];c[g>>2]=0;t=c[g>>2]|0;i=u;return t|0}function OL(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;j=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;n=r+12|0;o=r+8|0;p=r+4|0;q=r;c[k>>2]=b;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=c[(c[k>>2]|0)+4>>2];if((c[m>>2]|0)!=0?(PL(c[p>>2]|0),(c[(c[p>>2]|0)+80>>2]|0)==0):0){c[j>>2]=7;f=c[j>>2]|0;i=r;return f|0}if((c[l>>2]|0)==1?($E(c[p>>2]|0)|0)==0:0)c[l>>2]=0;c[(c[o>>2]|0)+52>>2]=c[l>>2];a[(c[o>>2]|0)+68>>0]=-1;c[(c[o>>2]|0)+72>>2]=c[n>>2];c[c[o>>2]>>2]=c[k>>2];c[(c[o>>2]|0)+4>>2]=c[p>>2];a[(c[o>>2]|0)+64>>0]=(c[m>>2]|0)!=0?1:0;a[(c[o>>2]|0)+65>>0]=(c[m>>2]|0)!=0?0:2;c[q>>2]=c[(c[p>>2]|0)+8>>2];while(1){if(!(c[q>>2]|0))break;if((c[(c[q>>2]|0)+52>>2]|0)==(c[l>>2]|0)){f=(c[q>>2]|0)+64|0;a[f>>0]=d[f>>0]|0|32;f=(c[o>>2]|0)+64|0;a[f>>0]=d[f>>0]|0|32}c[q>>2]=c[(c[q>>2]|0)+8>>2]}c[(c[o>>2]|0)+8>>2]=c[(c[p>>2]|0)+8>>2];c[(c[p>>2]|0)+8>>2]=c[o>>2];a[(c[o>>2]|0)+66>>0]=0;c[j>>2]=0;f=c[j>>2]|0;i=r;return f|0}function PL(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;if(c[(c[d>>2]|0)+80>>2]|0){i=e;return}b=Ti(c[(c[d>>2]|0)+32>>2]|0)|0;c[(c[d>>2]|0)+80>>2]=b;if(!(c[(c[d>>2]|0)+80>>2]|0)){i=e;return}b=c[(c[d>>2]|0)+80>>2]|0;a[b>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;a[b+4>>0]=0;a[b+5>>0]=0;a[b+6>>0]=0;a[b+7>>0]=0;b=(c[d>>2]|0)+80|0;c[b>>2]=(c[b>>2]|0)+4;i=e;return}function QL(){return 200}function RL(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;a=c[b>>2]|0;b=a+68|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));i=d;return}function SL(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=b;if((c[g>>2]|0)>(c[(c[f>>2]|0)+104>>2]|0)?(d[(c[f>>2]|0)+6>>0]|0|0)!=0:0){c[e>>2]=TL(c[f>>2]|0,c[g>>2]|0)|0;a=c[e>>2]|0;i=h;return a|0}c[e>>2]=0;a=c[e>>2]|0;i=h;return a|0}function TL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;j=l+24|0;d=l+20|0;e=l+16|0;k=l+12|0;h=l+8|0;g=l+4|0;f=l;c[d>>2]=a;c[e>>2]=b;c[k>>2]=0;c[h>>2]=c[(c[d>>2]|0)+104>>2];c[f>>2]=bg(c[(c[d>>2]|0)+100>>2]|0,(c[e>>2]|0)*48|0,0)|0;if(!(c[f>>2]|0)){c[j>>2]=7;k=c[j>>2]|0;i=l;return k|0}kR((c[f>>2]|0)+((c[h>>2]|0)*48|0)|0,0,((c[e>>2]|0)-(c[h>>2]|0)|0)*48|0)|0;c[(c[d>>2]|0)+100>>2]=c[f>>2];c[g>>2]=c[h>>2];while(1){if((c[g>>2]|0)>=(c[e>>2]|0)){d=14;break}c[(c[f>>2]|0)+((c[g>>2]|0)*48|0)+20>>2]=c[(c[d>>2]|0)+28>>2];if((c[c[(c[d>>2]|0)+68>>2]>>2]|0)!=0?(a=(c[d>>2]|0)+80|0,b=c[a+4>>2]|0,(b|0)>0|(b|0)==0&(c[a>>2]|0)>>>0>0):0){h=(c[d>>2]|0)+80|0;b=c[h+4>>2]|0;a=(c[f>>2]|0)+((c[g>>2]|0)*48|0)|0;c[a>>2]=c[h>>2];c[a+4>>2]=b}else{a=(c[f>>2]|0)+((c[g>>2]|0)*48|0)|0;c[a>>2]=c[(c[d>>2]|0)+156>>2];c[a+4>>2]=0}c[(c[f>>2]|0)+((c[g>>2]|0)*48|0)+24>>2]=c[(c[d>>2]|0)+56>>2];a=fj(c[(c[d>>2]|0)+28>>2]|0)|0;c[(c[f>>2]|0)+((c[g>>2]|0)*48|0)+16>>2]=a;if(!(c[(c[f>>2]|0)+((c[g>>2]|0)*48|0)+16>>2]|0)){d=10;break}if(sr(c[d>>2]|0)|0)UL(c[(c[d>>2]|0)+216>>2]|0,(c[f>>2]|0)+((c[g>>2]|0)*48|0)+28|0);c[(c[d>>2]|0)+104>>2]=(c[g>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+1}if((d|0)==10){c[j>>2]=7;k=c[j>>2]|0;i=l;return k|0}else if((d|0)==14){c[j>>2]=c[k>>2];k=c[j>>2]|0;i=l;return k|0}return 0}function UL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[c[e>>2]>>2]=c[(c[f>>2]|0)+52+16>>2];c[(c[e>>2]|0)+4>>2]=c[(c[f>>2]|0)+52+24>>2];c[(c[e>>2]|0)+8>>2]=c[(c[f>>2]|0)+52+24+4>>2];c[(c[e>>2]|0)+12>>2]=c[(c[f>>2]|0)+112>>2];i=d;return}function VL(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;j=n+16|0;k=n+12|0;m=n+8|0;l=n+4|0;g=n;c[k>>2]=f;if((c[(c[k>>2]|0)+44>>2]|0)>>>0>0){c[j>>2]=0;m=c[j>>2]|0;i=n;return m|0}c[m>>2]=c[(c[k>>2]|0)+12>>2];c[l>>2]=c[(c[m>>2]|0)+56>>2];c[g>>2]=Dg(c[(c[m>>2]|0)+72>>2]|0)|0;if(c[g>>2]|0){c[j>>2]=c[g>>2];m=c[j>>2]|0;i=n;return m|0}else{f=c[l>>2]|0;g=43252;h=f+16|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));a[(c[l>>2]|0)+16>>0]=(c[(c[k>>2]|0)+32>>2]|0)>>>8;a[(c[l>>2]|0)+17>>0]=(c[(c[k>>2]|0)+32>>2]|0)>>>16;a[(c[l>>2]|0)+18>>0]=1;a[(c[l>>2]|0)+19>>0]=1;a[(c[l>>2]|0)+20>>0]=(c[(c[k>>2]|0)+32>>2]|0)-(c[(c[k>>2]|0)+36>>2]|0);a[(c[l>>2]|0)+21>>0]=64;a[(c[l>>2]|0)+22>>0]=32;a[(c[l>>2]|0)+23>>0]=32;f=(c[l>>2]|0)+24|0;h=f+76|0;do{a[f>>0]=0;f=f+1|0}while((f|0)<(h|0));wK(c[m>>2]|0,13);m=(c[k>>2]|0)+22|0;b[m>>1]=e[m>>1]|0|2;Xs((c[l>>2]|0)+52|0,d[(c[k>>2]|0)+17>>0]|0);Xs((c[l>>2]|0)+64|0,d[(c[k>>2]|0)+18>>0]|0);c[(c[k>>2]|0)+44>>2]=1;a[(c[l>>2]|0)+31>>0]=1;c[j>>2]=0;m=c[j>>2]|0;i=n;return m|0}return 0}function WL(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;g=o+24|0;h=o+20|0;j=o;l=o+16|0;m=o+12|0;n=o+8|0;k=o+28|0;c[h>>2]=b;b=j;c[b>>2]=e;c[b+4>>2]=f;if(0!=0?1:(c[j+4>>2]&-16777216|0)!=0){a[(c[h>>2]|0)+8>>0]=c[j>>2];n=j;n=hR(c[n>>2]|0,c[n+4>>2]|0,8)|0;b=j;c[b>>2]=n;c[b+4>>2]=C;c[l>>2]=7;while(1){if((c[l>>2]|0)<0)break;a[(c[h>>2]|0)+(c[l>>2]|0)>>0]=c[j>>2]&127|128;n=j;n=hR(c[n>>2]|0,c[n+4>>2]|0,7)|0;b=j;c[b>>2]=n;c[b+4>>2]=C;c[l>>2]=(c[l>>2]|0)+-1}c[g>>2]=9;b=c[g>>2]|0;i=o;return b|0}c[n>>2]=0;do{b=(c[j>>2]&127|128)&255;f=c[n>>2]|0;c[n>>2]=f+1;a[k+f>>0]=b;f=j;f=hR(c[f>>2]|0,c[f+4>>2]|0,7)|0;b=j;c[b>>2]=f;c[b+4>>2]=C;b=j}while((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0);a[k>>0]=(d[k>>0]|0)&127;c[l>>2]=0;c[m>>2]=(c[n>>2]|0)-1;while(1){if((c[m>>2]|0)<0)break;a[(c[h>>2]|0)+(c[l>>2]|0)>>0]=a[k+(c[m>>2]|0)>>0]|0;c[m>>2]=(c[m>>2]|0)+-1;c[l>>2]=(c[l>>2]|0)+1}c[g>>2]=c[n>>2];b=c[g>>2]|0;i=o;return b|0}function XL(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;n=p+4|0;o=p;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;b[(c[n>>2]|0)+8>>1]=1;h=tx(c[n>>2]|0,(c[l>>2]|0)+2|0)|0;c[o>>2]=h;if(h){o=c[o>>2]|0;i=p;return o|0}e=c[j>>2]|0;j=c[k>>2]|0;f=c[l>>2]|0;g=c[(c[n>>2]|0)+16>>2]|0;if(c[m>>2]|0)c[o>>2]=tH(e,j,f,g)|0;else c[o>>2]=Mh(e,j,f,g)|0;if(!(c[o>>2]|0)){a[(c[(c[n>>2]|0)+16>>2]|0)+(c[l>>2]|0)>>0]=0;a[(c[(c[n>>2]|0)+16>>2]|0)+((c[l>>2]|0)+1)>>0]=0;b[(c[n>>2]|0)+8>>1]=528;c[(c[n>>2]|0)+12>>2]=c[l>>2];o=c[o>>2]|0;i=p;return o|0}else{Ug(c[n>>2]|0);o=c[o>>2]|0;i=p;return o|0}return 0}function YL(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;c[h>>2]=(c[(c[(c[f>>2]|0)+120+(a[(c[f>>2]|0)+68>>0]<<2)>>2]|0)+60>>2]|0)-(c[(c[f>>2]|0)+16+8>>2]|0);if((e[(c[f>>2]|0)+16+16>>1]|0)>>>0<(c[h>>2]|0)>>>0)c[h>>2]=e[(c[f>>2]|0)+16+16>>1];c[c[g>>2]>>2]=c[h>>2];i=j;return c[(c[f>>2]|0)+16+8>>2]|0}function ZL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;g=h+4|0;f=h;c[e>>2]=b;b=(c[e>>2]|0)+40|0;c[f>>2]=eF(c[(c[e>>2]|0)+16>>2]|0,0,c[b>>2]|0,c[b+4>>2]|0,0,g)|0;if(c[f>>2]|0){c[d>>2]=c[f>>2];g=c[d>>2]|0;i=h;return g|0}if(c[g>>2]|0){c[d>>2]=Lj(70762)|0;g=c[d>>2]|0;i=h;return g|0}else{a[(c[e>>2]|0)+3>>0]=0;c[(c[e>>2]|0)+56>>2]=0;c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}return 0}function _L(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;if((c[(c[e>>2]|0)+12>>2]|0)>(c[(c[f>>2]|0)+12>>2]|0))a=c[(c[f>>2]|0)+12>>2]|0;else a=c[(c[e>>2]|0)+12>>2]|0;c[g>>2]=vQ(c[(c[e>>2]|0)+16>>2]|0,c[(c[f>>2]|0)+16>>2]|0,a)|0;if(c[g>>2]|0){c[d>>2]=c[g>>2];g=c[d>>2]|0;i=h;return g|0}else{c[d>>2]=(c[(c[e>>2]|0)+12>>2]|0)-(c[(c[f>>2]|0)+12>>2]|0);g=c[d>>2]|0;i=h;return g|0}return 0}function $L(d){d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[f>>2]=d;if(!(Ky(c[(c[f>>2]|0)+16>>2]|0,c[f>>2]|0,c[(c[f>>2]|0)+12>>2]|0,a[(c[f>>2]|0)+10>>0]|0)|0)){b[e>>1]=0;d=b[e>>1]|0;i=g;return d|0}if(!(Hi(c[(c[f>>2]|0)+16>>2]|0,c[f>>2]|0,c[(c[f>>2]|0)+12>>2]|0,a[(c[f>>2]|0)+10>>0]|0)|0)){b[e>>1]=4;d=b[e>>1]|0;i=g;return d|0}else{b[e>>1]=8;d=b[e>>1]|0;i=g;return d|0}return 0}function aM(d){d=d|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[g>>2]=d;if(ux(c[g>>2]|0,(c[(c[g>>2]|0)+12>>2]|0)+2|0,1)|0){c[f>>2]=7;d=c[f>>2]|0;i=h;return d|0}else{a[(c[(c[g>>2]|0)+16>>2]|0)+(c[(c[g>>2]|0)+12>>2]|0)>>0]=0;a[(c[(c[g>>2]|0)+16>>2]|0)+((c[(c[g>>2]|0)+12>>2]|0)+1)>>0]=0;d=(c[g>>2]|0)+8|0;b[d>>1]=e[d>>1]|0|512;c[f>>2]=0;d=c[f>>2]|0;i=h;return d|0}return 0}function bM(a){a=a|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;fh(c[d>>2]|0);b[(c[d>>2]|0)+8>>1]=4;i=e;return c[d>>2]|0}function cM(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f+8|0;b=f+4|0;e=f;c[d>>2]=a;if(c[(c[d>>2]|0)+176>>2]|0){c[b>>2]=c[(c[d>>2]|0)+176>>2];while(1){a=c[b>>2]|0;if(!(c[(c[b>>2]|0)+4>>2]|0))break;c[b>>2]=c[a+4>>2]}RH(a)|0;c[(c[d>>2]|0)+176>>2]=0;c[(c[d>>2]|0)+184>>2]=0}kM(c[d>>2]|0);if(c[(c[d>>2]|0)+8>>2]|0)oC((c[(c[d>>2]|0)+8>>2]|0)+40|0,c[(c[d>>2]|0)+28>>2]|0);while(1){a=c[d>>2]|0;if(!(c[(c[d>>2]|0)+180>>2]|0))break;c[e>>2]=c[a+180>>2];c[(c[d>>2]|0)+180>>2]=c[(c[e>>2]|0)+4>>2];lM(c[e>>2]|0)}if(!(c[a+204>>2]|0)){i=f;return}bI(c[d>>2]|0,-1,0);i=f;return}function dM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0;H=i;i=i+144|0;z=H+32|0;B=H+24|0;A=H+16|0;y=H+8|0;d=H+128|0;e=H+124|0;I=H+120|0;f=H+116|0;j=H+112|0;v=H+108|0;l=H+104|0;n=H+100|0;o=H+96|0;p=H+92|0;u=H+88|0;k=H+84|0;F=H+80|0;E=H+76|0;t=H+72|0;m=H;w=H+68|0;x=H+64|0;h=H+60|0;g=H+56|0;q=H+52|0;D=H+48|0;r=H+44|0;s=H+40|0;c[e>>2]=a;c[I>>2]=b;c[j>>2]=0;c[v>>2]=0;c[l>>2]=0;c[v>>2]=eM(c[e>>2]|0,c[I>>2]|0)|0;c[f>>2]=0;while(1){if(c[v>>2]|0)break;if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[n>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(bi(c[n>>2]|0)|0){c[l>>2]=1;if((c[f>>2]|0)!=1)c[j>>2]=(c[j>>2]|0)+1;kg(c[n>>2]|0);c[v>>2]=rt(Of(c[n>>2]|0)|0)|0}c[f>>2]=(c[f>>2]|0)+1}if(c[v>>2]|0){c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}if(((c[l>>2]|0)!=0?(c[(c[e>>2]|0)+196>>2]|0)!=0:0)?(c[v>>2]=Tb[c[(c[e>>2]|0)+196>>2]&255](c[(c[e>>2]|0)+192>>2]|0)|0,(c[v>>2]|0)!=0):0){c[d>>2]=531;I=c[d>>2]|0;i=H;return I|0}I=0==(If(Di(c[(c[(c[e>>2]|0)+16>>2]|0)+4>>2]|0)|0)|0);if(I|(c[j>>2]|0)<=1){c[f>>2]=0;while(1){if(c[v>>2]|0)break;if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[o>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(c[o>>2]|0)c[v>>2]=Kg(c[o>>2]|0,0)|0;c[f>>2]=(c[f>>2]|0)+1}c[f>>2]=0;while(1){if(c[v>>2]|0)break;if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[p>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(c[p>>2]|0)c[v>>2]=Jg(c[p>>2]|0,0)|0;c[f>>2]=(c[f>>2]|0)+1}if(!(c[v>>2]|0))fM(c[e>>2]|0)|0}else{c[u>>2]=c[c[e>>2]>>2];c[k>>2]=0;c[F>>2]=0;c[E>>2]=Di(c[(c[(c[e>>2]|0)+16>>2]|0)+4>>2]|0)|0;c[t>>2]=0;I=m;c[I>>2]=0;c[I+4>>2]=0;c[x>>2]=0;c[h>>2]=If(c[E>>2]|0)|0;I=c[e>>2]|0;c[y>>2]=c[E>>2];c[F>>2]=Bh(I,43268,y)|0;if(!(c[F>>2]|0)){c[d>>2]=7;I=c[d>>2]|0;i=H;return I|0}do{if(c[x>>2]|0){if((c[x>>2]|0)>100){G=34;break}if((c[x>>2]|0)==1){c[B>>2]=c[F>>2];Rd(13,43298,B)}}c[x>>2]=(c[x>>2]|0)+1;Sd(4,g);I=(c[F>>2]|0)+(c[h>>2]|0)|0;E=c[g>>2]&255;c[z>>2]=(c[g>>2]|0)>>>8&16777215;c[z+4>>2]=E;Qd(13,I,43313,z)|0;c[v>>2]=Nr(c[u>>2]|0,c[F>>2]|0,0,w)|0}while((c[v>>2]|0)==0?(c[w>>2]|0)!=0:0);if((G|0)==34){c[A>>2]=c[F>>2];Rd(13,43284,A);qr(c[u>>2]|0,c[F>>2]|0,0)|0}if(!(c[v>>2]|0))c[v>>2]=TK(c[u>>2]|0,c[F>>2]|0,t,16406,0)|0;if(c[v>>2]|0){Sf(c[e>>2]|0,c[F>>2]|0);c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[q>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if((bi(c[q>>2]|0)|0)!=0?(c[D>>2]=gM(c[q>>2]|0)|0,(c[D>>2]|0)!=0):0){if((c[k>>2]|0)==0?(hM(c[q>>2]|0)|0)==0:0)c[k>>2]=1;A=c[t>>2]|0;B=c[D>>2]|0;I=(If(c[D>>2]|0)|0)+1|0;E=m;c[v>>2]=Fg(A,B,I,c[E>>2]|0,c[E+4>>2]|0)|0;E=(If(c[D>>2]|0)|0)+1|0;I=m;E=gR(c[I>>2]|0,c[I+4>>2]|0,E|0,((E|0)<0)<<31>>31|0)|0;I=m;c[I>>2]=E;c[I+4>>2]=C;if(c[v>>2]|0){G=50;break}}c[f>>2]=(c[f>>2]|0)+1}if((G|0)==50){pK(c[t>>2]|0)|0;qr(c[u>>2]|0,c[F>>2]|0,0)|0;Sf(c[e>>2]|0,c[F>>2]|0);c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}if(((c[k>>2]|0)!=0?0==((Sr(c[t>>2]|0)|0)&1024|0):0)?(I=or(c[t>>2]|0,2)|0,c[v>>2]=I,0!=(I|0)):0){pK(c[t>>2]|0)|0;qr(c[u>>2]|0,c[F>>2]|0,0)|0;Sf(c[e>>2]|0,c[F>>2]|0);c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}c[f>>2]=0;while(1){if(c[v>>2]|0)break;if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[r>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(c[r>>2]|0)c[v>>2]=Kg(c[r>>2]|0,c[F>>2]|0)|0;c[f>>2]=(c[f>>2]|0)+1}pK(c[t>>2]|0)|0;if(c[v>>2]|0){Sf(c[e>>2]|0,c[F>>2]|0);c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}c[v>>2]=qr(c[u>>2]|0,c[F>>2]|0,c[k>>2]|0)|0;Sf(c[e>>2]|0,c[F>>2]|0);c[F>>2]=0;if(c[v>>2]|0){c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}Sj();c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[s>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if(c[s>>2]|0)Jg(c[s>>2]|0,1)|0;c[f>>2]=(c[f>>2]|0)+1}Tj();fM(c[e>>2]|0)|0}c[d>>2]=c[v>>2];I=c[d>>2]|0;i=H;return I|0}function eM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;h=l+24|0;d=l+20|0;e=l+16|0;k=l+12|0;j=l+8|0;g=l+4|0;f=l;c[h>>2]=a;c[d>>2]=b;c[k>>2]=0;c[j>>2]=c[(c[h>>2]|0)+332>>2];c[(c[h>>2]|0)+332>>2]=0;c[e>>2]=0;while(1){if(c[k>>2]|0){d=8;break}if((c[e>>2]|0)>=(c[(c[h>>2]|0)+308>>2]|0)){d=8;break}c[f>>2]=c[(c[(c[j>>2]|0)+(c[e>>2]<<2)>>2]|0)+8>>2];if((c[f>>2]|0)!=0?(b=c[(c[c[f>>2]>>2]|0)+60>>2]|0,c[g>>2]=b,(b|0)!=0):0){c[k>>2]=Tb[c[g>>2]&255](c[f>>2]|0)|0;GI(c[d>>2]|0,c[f>>2]|0)}c[e>>2]=(c[e>>2]|0)+1}if((d|0)==8){c[(c[h>>2]|0)+332>>2]=c[j>>2];i=l;return c[k>>2]|0}return 0}function fM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;gu(c[d>>2]|0,64);i=b;return 0}function gM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=jM(c[c[(c[d>>2]|0)+4>>2]>>2]|0)|0;i=b;return a|0}function hM(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;e=d+4|0;b=d;c[f>>2]=a;c[e>>2]=c[(c[f>>2]|0)+4>>2];kg(c[f>>2]|0);c[b>>2]=iM(c[c[e>>2]>>2]|0)|0;i=d;return c[b>>2]|0}function iM(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+7>>0]|0|0}function jM(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+180>>2]|0}function kM(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;if(!(c[(c[b>>2]|0)+56>>2]|0)){i=f;return}c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+36>>2]|0))break;c[e>>2]=c[(c[(c[b>>2]|0)+56>>2]|0)+(c[d>>2]<<2)>>2];if(c[e>>2]|0){yI(c[b>>2]|0,c[e>>2]|0);c[(c[(c[b>>2]|0)+56>>2]|0)+(c[d>>2]<<2)>>2]=0}c[d>>2]=(c[d>>2]|0)+1}i=f;return}function lM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;f=g+8|0;d=g+4|0;e=g;c[b>>2]=a;c[d>>2]=(c[b>>2]|0)+80;c[e>>2]=(c[d>>2]|0)+((c[(c[b>>2]|0)+60>>2]|0)*40|0);c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[b>>2]|0)+64>>2]|0))break;yI(c[c[b>>2]>>2]|0,c[(c[e>>2]|0)+(c[f>>2]<<2)>>2]|0);c[f>>2]=(c[f>>2]|0)+1}oC(c[d>>2]|0,c[(c[b>>2]|0)+60>>2]|0);Sf(c[c[c[b>>2]>>2]>>2]|0,c[b>>2]|0);i=g;return}function mM(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[6424+(c[b>>2]<<2)>>2]|0}function nM(f,g,j){f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;L=i;i=i+192|0;y=L+88|0;x=L+80|0;w=L+72|0;I=L+64|0;H=L+56|0;v=L+48|0;u=L+40|0;t=L+32|0;A=L+24|0;z=L+16|0;E=L+8|0;s=L;k=L+176|0;l=L+172|0;M=L+168|0;K=L+164|0;J=L+136|0;B=L+132|0;D=L+128|0;C=L+124|0;F=L+120|0;p=L+116|0;q=L+112|0;G=L+108|0;r=L+104|0;n=L+100|0;m=L+96|0;o=L+92|0;c[k>>2]=f;c[l>>2]=g;c[M>>2]=j;c[K>>2]=c[l>>2];cg(J,0,c[l>>2]|0,c[M>>2]|0,0);a:do switch(a[(c[k>>2]|0)+1>>0]|0){case-6:{c[D>>2]=c[(c[k>>2]|0)+16>>2];c[s>>2]=e[(c[D>>2]|0)+6>>1];$z(J,43365,s);c[B>>2]=0;while(1){if((c[B>>2]|0)>=(e[(c[D>>2]|0)+6>>1]|0))break;c[C>>2]=c[(c[D>>2]|0)+20+(c[B>>2]<<2)>>2];if(c[C>>2]|0)k=c[c[C>>2]>>2]|0;else k=19266;c[F>>2]=k;M=(yQ(c[F>>2]|0,35690)|0)==0;c[F>>2]=M?43370:k;M=c[F>>2]|0;c[E>>2]=(d[(c[(c[D>>2]|0)+16>>2]|0)+(c[B>>2]|0)>>0]|0)!=0?29135:19266;c[E+4>>2]=M;$z(J,43372,E);c[B>>2]=(c[B>>2]|0)+1}aA(J,35518,1);break}case-4:{c[p>>2]=c[(c[k>>2]|0)+16>>2];c[z>>2]=c[c[p>>2]>>2];$z(J,43378,z);break}case-5:{c[q>>2]=c[(c[k>>2]|0)+16>>2];M=b[c[q>>2]>>1]|0;c[A>>2]=c[(c[q>>2]|0)+20>>2];c[A+4>>2]=M;$z(J,43386,A);break}case-13:{H=c[(c[k>>2]|0)+16>>2]|0;I=c[H+4>>2]|0;M=t;c[M>>2]=c[H>>2];c[M+4>>2]=I;$z(J,29137,t);break}case-14:{c[u>>2]=c[(c[k>>2]|0)+16>>2];$z(J,43393,u);break}case-12:{h[v>>3]=+h[c[(c[k>>2]|0)+16>>2]>>3];$z(J,43396,v);break}case-8:{c[G>>2]=c[(c[k>>2]|0)+16>>2];k=c[G>>2]|0;if(e[(c[G>>2]|0)+8>>1]&2){c[K>>2]=c[k+16>>2];break a}l=c[G>>2]|0;if(e[k+8>>1]&4){G=l;I=c[G+4>>2]|0;M=H;c[M>>2]=c[G>>2];c[M+4>>2]=I;$z(J,29137,H);break a}k=c[G>>2]|0;if(e[l+8>>1]&8){h[I>>3]=+h[k>>3];$z(J,43396,I);break a}if(e[k+8>>1]&1){c[K>>2]=40498;break a}else{c[K>>2]=43402;break a}}case-10:{c[r>>2]=c[(c[(c[k>>2]|0)+16>>2]|0)+8>>2];c[w>>2]=c[r>>2];$z(J,43409,w);break}case-15:{c[m>>2]=c[(c[k>>2]|0)+16>>2];c[o>>2]=c[c[m>>2]>>2];c[n>>2]=1;while(1){if((c[n>>2]|0)>=(c[o>>2]|0))break;c[x>>2]=c[(c[m>>2]|0)+(c[n>>2]<<2)>>2];$z(J,43417,x);c[n>>2]=(c[n>>2]|0)+1}a[c[l>>2]>>0]=91;aA(J,43421,1);break}case-18:{$z(J,43423,y);break}case-19:{a[c[l>>2]>>0]=0;break}default:{c[K>>2]=c[(c[k>>2]|0)+16>>2];if(!(c[K>>2]|0)){c[K>>2]=c[l>>2];a[c[l>>2]>>0]=0}}}while(0);eg(J)|0;i=L;return c[K>>2]|0}function oM(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f+8|0;h=f;c[g>>2]=a;a=h;c[a>>2]=d;c[a+4>>2]=e;fh(c[g>>2]|0);d=h;e=c[d+4>>2]|0;a=c[g>>2]|0;c[a>>2]=c[d>>2];c[a+4>>2]=e;b[(c[g>>2]|0)+8>>1]=4;i=f;return}function pM(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;g=m+4|0;l=m;k=m+10|0;h=m+9|0;j=m+8|0;c[g>>2]=f;c[l>>2]=0;a[k>>0]=0;if((c[(c[g>>2]|0)+12>>2]|0)>1){a[h>>0]=a[c[(c[g>>2]|0)+16>>2]>>0]|0;a[j>>0]=a[(c[(c[g>>2]|0)+16>>2]|0)+1>>0]|0;if((d[h>>0]|0)==254?(d[j>>0]|0)==255:0)a[k>>0]=3;if((d[h>>0]|0)==255?(d[j>>0]|0)==254:0)a[k>>0]=2}if(!(a[k>>0]|0)){l=c[l>>2]|0;i=m;return l|0}c[l>>2]=_g(c[g>>2]|0)|0;if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}f=(c[g>>2]|0)+12|0;c[f>>2]=(c[f>>2]|0)-2;jR(c[(c[g>>2]|0)+16>>2]|0,(c[(c[g>>2]|0)+16>>2]|0)+2|0,c[(c[g>>2]|0)+12>>2]|0)|0;a[(c[(c[g>>2]|0)+16>>2]|0)+(c[(c[g>>2]|0)+12>>2]|0)>>0]=0;a[(c[(c[g>>2]|0)+16>>2]|0)+((c[(c[g>>2]|0)+12>>2]|0)+1)>>0]=0;f=(c[g>>2]|0)+8|0;b[f>>1]=e[f>>1]|512;a[(c[g>>2]|0)+10>>0]=a[k>>0]|0;l=c[l>>2]|0;i=m;return l|0}function qM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f;g=f+4|0;c[e>>2]=b;a[g>>0]=d;if(!(rM(c[e>>2]|0,a[g>>0]|0)|0)){g=0;i=f;return g|0}g=c[(c[e>>2]|0)+12>>2]|0;i=f;return g|0}function rM(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+4|0;j=l;k=l+8|0;c[j>>2]=f;a[k>>0]=g;g=c[j>>2]|0;if((e[(c[j>>2]|0)+8>>1]|0)&18){f=g+8|0;b[f>>1]=e[f>>1]|0|2;if((e[(c[j>>2]|0)+8>>1]|0)&16384)Vg(c[j>>2]|0)|0;if((d[(c[j>>2]|0)+10>>0]|0|0)!=((d[k>>0]|0)&-9|0))Zt(c[j>>2]|0,(d[k>>0]|0)&-9)|0;if((((d[k>>0]|0)&8|0)!=0?1==(1&c[(c[j>>2]|0)+16>>2]|0):0)?(_g(c[j>>2]|0)|0)!=0:0){c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}YH(c[j>>2]|0)|0}else sx(g,a[k>>0]|0,0)|0;if((d[(c[j>>2]|0)+10>>0]|0|0)==((d[k>>0]|0)&-9|0)){c[h>>2]=c[(c[j>>2]|0)+16>>2];k=c[h>>2]|0;i=l;return k|0}else{c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}return 0}function sM(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if((e[(c[b>>2]|0)+8>>1]|0)&9312)DF(c[b>>2]|0);if(!(c[(c[b>>2]|0)+24>>2]|0)){a=c[b>>2]|0;a=a+16|0;c[a>>2]=0;i=d;return}Sf(c[(c[b>>2]|0)+32>>2]|0,c[(c[b>>2]|0)+20>>2]|0);c[(c[b>>2]|0)+24>>2]=0;a=c[b>>2]|0;a=a+16|0;c[a>>2]=0;i=d;return}function tM(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=c[c[d>>2]>>2];Sf(c[e>>2]|0,c[(c[d>>2]|0)+44>>2]|0);c[(c[d>>2]|0)+44>>2]=0;c[(c[d>>2]|0)+20>>2]=0;i=b;return}function uM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;li(c[d>>2]|0);jg(c[d>>2]|0,7);i=b;return 7}function vM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;kj(c[(c[d>>2]|0)+60>>2]|0);c[(c[d>>2]|0)+60>>2]=0;i=b;return}function wM(b){b=b|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;f=g+4|0;h=g;c[e>>2]=b;c[f>>2]=c[(c[e>>2]|0)+4>>2];c[h>>2]=c[c[e>>2]>>2];a[(c[f>>2]|0)+19>>0]=0;if((d[(c[e>>2]|0)+8>>0]|0|0)>0?(c[(c[h>>2]|0)+152>>2]|0)>1:0){xM(c[e>>2]|0);a[(c[e>>2]|0)+8>>0]=1;i=g;return}if((d[(c[e>>2]|0)+8>>0]|0|0)!=0?(yM(c[e>>2]|0),h=(c[f>>2]|0)+40|0,c[h>>2]=(c[h>>2]|0)+-1,0==(c[(c[f>>2]|0)+40>>2]|0)):0)a[(c[f>>2]|0)+20>>0]=0;a[(c[e>>2]|0)+8>>0]=0;rB(c[f>>2]|0);i=g;return}function xM(d){d=d|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+8|0;f=h+4|0;g=h;c[j>>2]=d;c[f>>2]=c[(c[j>>2]|0)+4>>2];if((c[(c[f>>2]|0)+76>>2]|0)!=(c[j>>2]|0)){i=h;return}c[(c[f>>2]|0)+76>>2]=0;j=(c[f>>2]|0)+22|0;b[j>>1]=(e[j>>1]|0)&-97;c[g>>2]=c[(c[f>>2]|0)+72>>2];while(1){if(!(c[g>>2]|0))break;a[(c[g>>2]|0)+8>>0]=1;c[g>>2]=c[(c[g>>2]|0)+12>>2]}i=h;return}function yM(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j+12|0;h=j+8|0;f=j+4|0;d=j;c[g>>2]=a;c[h>>2]=c[(c[g>>2]|0)+4>>2];c[f>>2]=(c[h>>2]|0)+72;while(1){if(!(c[c[f>>2]>>2]|0))break;c[d>>2]=c[c[f>>2]>>2];a=(c[d>>2]|0)+12|0;if((c[c[d>>2]>>2]|0)!=(c[g>>2]|0)){c[f>>2]=a;continue}c[c[f>>2]>>2]=c[a>>2];if((c[(c[d>>2]|0)+4>>2]|0)==1)continue;Kd(c[d>>2]|0)}a=c[h>>2]|0;if((c[(c[h>>2]|0)+76>>2]|0)==(c[g>>2]|0)){c[a+76>>2]=0;h=(c[h>>2]|0)+22|0;b[h>>1]=(e[h>>1]|0)&-97;i=j;return}if((c[a+40>>2]|0)!=2){i=j;return}h=(c[h>>2]|0)+22|0;b[h>>1]=(e[h>>1]|0)&-65;i=j;return}function zM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+28|0;e=m+24|0;l=m+20|0;k=m+16|0;g=m+12|0;h=m+8|0;f=m+4|0;j=m;c[e>>2]=b;c[l>>2]=0;c[k>>2]=c[c[e>>2]>>2];rJ(c[e>>2]|0);do if(!(a[(c[e>>2]|0)+18>>0]|0)){c[j>>2]=$E(c[e>>2]|0)|0;b=lF(c[e>>2]|0,c[j>>2]|0)|0;if((b|0)!=(c[j>>2]|0)?(c[j>>2]|0)!=((((c[381]|0)>>>0)/((c[(c[e>>2]|0)+32>>2]|0)>>>0)|0)+1|0):0){c[h>>2]=$q((c[(c[(c[e>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0;c[g>>2]=qJ(c[e>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;if((c[g>>2]|0)>>>0>(c[j>>2]|0)>>>0){c[d>>2]=Lj(59231)|0;l=c[d>>2]|0;i=m;return l|0}if((c[g>>2]|0)>>>0<(c[j>>2]|0)>>>0)c[l>>2]=nH(c[e>>2]|0,0,0)|0;c[f>>2]=c[j>>2];while(1){if(!((c[f>>2]|0)>>>0>(c[g>>2]|0)>>>0?(c[l>>2]|0)==0:0))break;c[l>>2]=sJ(c[e>>2]|0,c[g>>2]|0,c[f>>2]|0,1)|0;c[f>>2]=(c[f>>2]|0)+-1}if(((c[l>>2]|0)==101|(c[l>>2]|0)==0)&(c[h>>2]|0)>>>0>0){c[l>>2]=Dg(c[(c[(c[e>>2]|0)+12>>2]|0)+72>>2]|0)|0;Xs((c[(c[(c[e>>2]|0)+12>>2]|0)+56>>2]|0)+32|0,0);Xs((c[(c[(c[e>>2]|0)+12>>2]|0)+56>>2]|0)+36|0,0);Xs((c[(c[(c[e>>2]|0)+12>>2]|0)+56>>2]|0)+28|0,c[g>>2]|0);a[(c[e>>2]|0)+19>>0]=1;c[(c[e>>2]|0)+44>>2]=c[g>>2]}if(!(c[l>>2]|0))break;jr(c[k>>2]|0)|0;break}c[d>>2]=Lj(59226)|0;l=c[d>>2]|0;i=m;return l|0}while(0);c[d>>2]=c[l>>2];l=c[d>>2]|0;i=m;return l|0}function AM(b){b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=0;b=c[f>>2]|0;if(c[(c[f>>2]|0)+44>>2]|0){c[e>>2]=c[b+44>>2];g=c[e>>2]|0;i=h;return g|0}if(((d[b+17>>0]|0|0)==2?(d[(c[f>>2]|0)+4>>0]|0|0)!=0:0)?(d[(c[f>>2]|0)+5>>0]|0|0)==1:0){a[(c[f>>2]|0)+17>>0]=1;c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}b=(c[f>>2]|0)+108|0;c[b>>2]=(c[b>>2]|0)+1;c[g>>2]=kr(c[f>>2]|0,d[(c[f>>2]|0)+20>>0]|0,1)|0;c[e>>2]=fr(c[f>>2]|0,c[g>>2]|0)|0;g=c[e>>2]|0;i=h;return g|0}function BM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;g=h+4|0;f=h;c[e>>2]=b;c[h+8>>2]=d;c[g>>2]=0;if(a[(c[e>>2]|0)+19>>0]|0){g=c[g>>2]|0;i=h;return g|0}if((c[(c[e>>2]|0)+28>>2]|0)>>>0<=0){g=c[g>>2]|0;i=h;return g|0}c[g>>2]=sg(c[e>>2]|0,1,f,0)|0;if(!(c[g>>2]|0))c[g>>2]=Dg(c[f>>2]|0)|0;if(!(c[g>>2]|0)){qt(c[f>>2]|0);a[(c[e>>2]|0)+19>>0]=1}vg(c[f>>2]|0);g=c[g>>2]|0;i=h;return g|0}function CM(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+48|0;f=o+36|0;g=o+32|0;h=o+28|0;n=o+24|0;m=o+20|0;k=o+8|0;l=o;j=o+16|0;c[g>>2]=b;c[h>>2]=e;c[j>>2]=0;if(((c[h>>2]|0)!=0?(d[(c[g>>2]|0)+5>>0]|0)!=4:0)?(c[c[(c[g>>2]|0)+68>>2]>>2]|0)!=0:0){a[(c[g>>2]|0)+20>>0]=1;c[m>>2]=0;while(1){if(!(a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0))break;c[j>>2]=(c[j>>2]|0)+(a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0);c[m>>2]=(c[m>>2]|0)+1}if(a[(c[g>>2]|0)+8>>0]|0){b=fs(c[g>>2]|0)|0;e=(c[g>>2]|0)+80|0;c[e>>2]=b;c[e+4>>2]=C}p=(c[g>>2]|0)+80|0;b=c[p+4>>2]|0;e=k;c[e>>2]=c[p>>2];c[e+4>>2]=b;e=k;e=Gt(c[(c[g>>2]|0)+68>>2]|0,c[e>>2]|0,c[e+4>>2]|0,((c[381]|0)/(c[(c[g>>2]|0)+160>>2]|0)|0)+1|0)|0;c[n>>2]=e;if((((0==(e|0)?(q=c[(c[g>>2]|0)+68>>2]|0,b=c[h>>2]|0,e=c[m>>2]|0,p=k,p=gR(c[p>>2]|0,c[p+4>>2]|0,4,0)|0,p=Fg(q,b,e,p,C)|0,c[n>>2]=p,0==(p|0)):0)?(p=c[(c[g>>2]|0)+68>>2]|0,e=k,e=gR(c[e>>2]|0,c[e+4>>2]|0,4,0)|0,q=c[m>>2]|0,q=gR(e|0,C|0,q|0,((q|0)<0)<<31>>31|0)|0,q=Gt(p,q,C,c[m>>2]|0)|0,c[n>>2]=q,0==(q|0)):0)?(p=c[(c[g>>2]|0)+68>>2]|0,e=k,e=gR(c[e>>2]|0,c[e+4>>2]|0,4,0)|0,q=c[m>>2]|0,q=gR(e|0,C|0,q|0,((q|0)<0)<<31>>31|0)|0,q=gR(q|0,C|0,4,0)|0,q=Gt(p,q,C,c[j>>2]|0)|0,c[n>>2]=q,0==(q|0)):0)?(p=c[(c[g>>2]|0)+68>>2]|0,e=k,e=gR(c[e>>2]|0,c[e+4>>2]|0,4,0)|0,q=c[m>>2]|0,q=gR(e|0,C|0,q|0,((q|0)<0)<<31>>31|0)|0,q=gR(q|0,C|0,8,0)|0,q=Fg(p,26758,8,q,C)|0,c[n>>2]=q,0==(q|0)):0){p=(c[m>>2]|0)+20|0;q=(c[g>>2]|0)+80|0;e=q;p=gR(c[e>>2]|0,c[e+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;c[q>>2]=p;c[q+4>>2]=C;q=Si(c[(c[g>>2]|0)+68>>2]|0,l)|0;c[n>>2]=q;if(0==(q|0)?(p=l,b=c[p+4>>2]|0,q=(c[g>>2]|0)+80|0,e=c[q+4>>2]|0,(b|0)>(e|0)|((b|0)==(e|0)?(c[p>>2]|0)>>>0>(c[q>>2]|0)>>>0:0)):0){q=(c[g>>2]|0)+80|0;c[n>>2]=nr(c[(c[g>>2]|0)+68>>2]|0,c[q>>2]|0,c[q+4>>2]|0)|0}c[f>>2]=c[n>>2];q=c[f>>2]|0;i=o;return q|0}c[f>>2]=c[n>>2];q=c[f>>2]|0;i=o;return q|0}c[f>>2]=0;q=c[f>>2]|0;i=o;return q|0}function DM(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;g=u+44|0;s=u+40|0;k=u+36|0;r=u+32|0;j=u+28|0;h=u+24|0;m=u+20|0;p=u+16|0;l=u+12|0;q=u+8|0;n=u+4|0;o=u;c[g>>2]=f;c[s>>2]=0;c[j>>2]=0;c[m>>2]=0;c[p>>2]=c[(c[g>>2]|0)+16>>2];c[l>>2]=((c[(c[p>>2]|0)+156>>2]|0)>>>0)/((c[(c[p>>2]|0)+160>>2]|0)>>>0)|0;f=(c[p>>2]|0)+21|0;a[f>>0]=d[f>>0]|0|4;c[r>>2]=((c[(c[g>>2]|0)+20>>2]|0)-1&~((c[l>>2]|0)-1))+1;c[k>>2]=c[(c[p>>2]|0)+28>>2];do if((c[(c[g>>2]|0)+20>>2]|0)>>>0<=(c[k>>2]|0)>>>0)if(((c[r>>2]|0)+(c[l>>2]|0)-1|0)>>>0>(c[k>>2]|0)>>>0){c[j>>2]=(c[k>>2]|0)+1-(c[r>>2]|0);break}else{c[j>>2]=c[l>>2];break}else c[j>>2]=(c[(c[g>>2]|0)+20>>2]|0)-(c[r>>2]|0)+1;while(0);c[h>>2]=0;while(1){if(!((c[h>>2]|0)<(c[j>>2]|0)?(c[s>>2]|0)==0:0))break;c[q>>2]=(c[r>>2]|0)+(c[h>>2]|0);if((c[q>>2]|0)!=(c[(c[g>>2]|0)+20>>2]|0)?(ij(c[(c[p>>2]|0)+60>>2]|0,c[q>>2]|0)|0)!=0:0){f=Zr(c[p>>2]|0,c[q>>2]|0)|0;c[n>>2]=f;if(f){if((e[(c[n>>2]|0)+24>>1]|0)&8)c[m>>2]=1;zs(c[n>>2]|0)}}else t=10;if(((t|0)==10?(t=0,(c[q>>2]|0)!=(((c[381]|0)/(c[(c[p>>2]|0)+160>>2]|0)|0)+1|0)):0)?(c[s>>2]=sg(c[p>>2]|0,c[q>>2]|0,n,0)|0,(c[s>>2]|0)==0):0){c[s>>2]=EM(c[n>>2]|0)|0;if((e[(c[n>>2]|0)+24>>1]|0)&8)c[m>>2]=1;zs(c[n>>2]|0)}c[h>>2]=(c[h>>2]|0)+1}if(!((c[s>>2]|0)==0&(c[m>>2]|0)!=0)){t=c[p>>2]|0;t=t+21|0;r=a[t>>0]|0;r=r&255;r=r&-5;r=r&255;a[t>>0]=r;t=c[s>>2]|0;i=u;return t|0}c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[j>>2]|0))break;c[o>>2]=Zr(c[p>>2]|0,(c[r>>2]|0)+(c[h>>2]|0)|0)|0;if(c[o>>2]|0){t=(c[o>>2]|0)+24|0;b[t>>1]=e[t>>1]|0|8;zs(c[o>>2]|0)}c[h>>2]=(c[h>>2]|0)+1}t=c[p>>2]|0;t=t+21|0;r=a[t>>0]|0;r=r&255;r=r&-5;r=r&255;a[t>>0]=r;t=c[s>>2]|0;i=u;return t|0}function EM(a){a=a|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=c[(c[g>>2]|0)+16>>2];c[j>>2]=0;if((d[(c[h>>2]|0)+17>>0]|0|0)==2?(c[j>>2]=FM(c[h>>2]|0)|0,(c[j>>2]|0)!=0):0){c[f>>2]=c[j>>2];j=c[f>>2]|0;i=k;return j|0}$r(c[g>>2]|0);do if((c[(c[h>>2]|0)+60>>2]|0)!=0?(lj(c[(c[h>>2]|0)+60>>2]|0,c[(c[g>>2]|0)+20>>2]|0)|0)==0:0){if((c[(c[g>>2]|0)+20>>2]|0)>>>0>(c[(c[h>>2]|0)+32>>2]|0)>>>0){if((d[(c[h>>2]|0)+17>>0]|0|0)==4)break;a=(c[g>>2]|0)+24|0;b[a>>1]=e[a>>1]|0|8;break}c[j>>2]=GM(c[g>>2]|0)|0;if(c[j>>2]|0){c[f>>2]=c[j>>2];j=c[f>>2]|0;i=k;return j|0}}while(0);a=(c[g>>2]|0)+24|0;b[a>>1]=e[a>>1]|0|4;if((c[(c[h>>2]|0)+104>>2]|0)>0)c[j>>2]=lt(c[g>>2]|0)|0;if((c[(c[h>>2]|0)+28>>2]|0)>>>0<(c[(c[g>>2]|0)+20>>2]|0)>>>0)c[(c[h>>2]|0)+28>>2]=c[(c[g>>2]|0)+20>>2];c[f>>2]=c[j>>2];j=c[f>>2]|0;i=k;return j|0}function FM(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;g=k+16|0;h=k+12|0;j=k+8|0;f=k+4|0;e=k;c[h>>2]=b;c[j>>2]=0;c[f>>2]=c[c[h>>2]>>2];b=c[h>>2]|0;if(c[(c[h>>2]|0)+44>>2]|0){c[g>>2]=c[b+44>>2];j=c[g>>2]|0;i=k;return j|0}if((sr(b)|0)==0?(d[(c[h>>2]|0)+5>>0]|0|0)!=2:0){b=fj(c[(c[h>>2]|0)+28>>2]|0)|0;c[(c[h>>2]|0)+60>>2]=b;if(!(c[(c[h>>2]|0)+60>>2]|0)){c[g>>2]=7;j=c[g>>2]|0;i=k;return j|0}do if(!(c[c[(c[h>>2]|0)+68>>2]>>2]|0)){b=c[h>>2]|0;if((d[(c[h>>2]|0)+5>>0]|0|0)==4){Ir(c[b+68>>2]|0);break}c[e>>2]=6|((d[b+13>>0]|0|0)!=0?4104:2048);c[j>>2]=HM(c[h>>2]|0)|0;if(!(c[j>>2]|0))c[j>>2]=Vr(c[f>>2]|0,c[(c[h>>2]|0)+180>>2]|0,c[(c[h>>2]|0)+68>>2]|0,c[e>>2]|0,0)|0}while(0);if(!(c[j>>2]|0)){c[(c[h>>2]|0)+48>>2]=0;f=(c[h>>2]|0)+80|0;c[f>>2]=0;c[f+4>>2]=0;a[(c[h>>2]|0)+20>>0]=0;f=(c[h>>2]|0)+88|0;c[f>>2]=0;c[f+4>>2]=0;c[j>>2]=st(c[h>>2]|0)|0}}b=c[h>>2]|0;if(c[j>>2]|0){kj(c[b+60>>2]|0);c[(c[h>>2]|0)+60>>2]=0}else a[b+17>>0]=3;c[g>>2]=c[j>>2];j=c[g>>2]|0;i=k;return j|0}function GM(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+32|0;d=m+28|0;f=m+24|0;k=m+20|0;l=m+16|0;g=m+12|0;j=m+8|0;h=m;c[f>>2]=a;c[k>>2]=c[(c[f>>2]|0)+16>>2];o=(c[k>>2]|0)+80|0;n=c[o+4>>2]|0;a=h;c[a>>2]=c[o>>2];c[a+4>>2]=n;c[j>>2]=c[(c[f>>2]|0)+4>>2];c[g>>2]=Yr(c[k>>2]|0,c[j>>2]|0)|0;a=(c[f>>2]|0)+24|0;b[a>>1]=e[a>>1]|0|8;a=h;c[l>>2]=Gt(c[(c[k>>2]|0)+68>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[(c[f>>2]|0)+20>>2]|0)|0; -if(c[l>>2]|0){c[d>>2]=c[l>>2];o=c[d>>2]|0;i=m;return o|0}p=c[(c[k>>2]|0)+68>>2]|0;a=c[j>>2]|0;n=c[(c[k>>2]|0)+160>>2]|0;o=h;o=gR(c[o>>2]|0,c[o+4>>2]|0,4,0)|0;c[l>>2]=Fg(p,a,n,o,C)|0;if(c[l>>2]|0){c[d>>2]=c[l>>2];p=c[d>>2]|0;i=m;return p|0}o=c[(c[k>>2]|0)+68>>2]|0;n=h;p=c[(c[k>>2]|0)+160>>2]|0;p=gR(c[n>>2]|0,c[n+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;p=gR(p|0,C|0,4,0)|0;c[l>>2]=Gt(o,p,C,c[g>>2]|0)|0;if(c[l>>2]|0){c[d>>2]=c[l>>2];p=c[d>>2]|0;i=m;return p|0}else{o=8+(c[(c[k>>2]|0)+160>>2]|0)|0;p=(c[k>>2]|0)+80|0;n=p;o=gR(c[n>>2]|0,c[n+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;c[p>>2]=o;c[p+4>>2]=C;p=(c[k>>2]|0)+48|0;c[p>>2]=(c[p>>2]|0)+1;c[l>>2]=gj(c[(c[k>>2]|0)+60>>2]|0,c[(c[f>>2]|0)+20>>2]|0)|0;p=Ht(c[k>>2]|0,c[(c[f>>2]|0)+20>>2]|0)|0;c[l>>2]=c[l>>2]|p;c[d>>2]=c[l>>2];p=c[d>>2]|0;i=m;return p|0}return 0}function HM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=b;c[f>>2]=0;if(a[(c[e>>2]|0)+13>>0]|0){c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}if(!(c[(c[e>>2]|0)+28>>2]|0)){c[d>>2]=0;g=c[d>>2]|0;i=h;return g|0}c[g>>2]=vi(c[(c[e>>2]|0)+64>>2]|0,20,f)|0;if((c[g>>2]|0)!=12){if((c[g>>2]|0)==0&(c[f>>2]|0)!=0)c[g>>2]=1032}else c[g>>2]=0;c[d>>2]=c[g>>2];g=c[d>>2]|0;i=h;return g|0}function IM(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;m=o+4|0;n=o;c[j>>2]=a;c[k>>2]=d;c[l>>2]=f;c[m>>2]=g;f=c[j>>2]|0;do if(c[(c[j>>2]|0)+144>>2]|0){g=c[f+144>>2]|0;c[n>>2]=g;c[c[m>>2]>>2]=g;c[(c[j>>2]|0)+144>>2]=c[(c[n>>2]|0)+12>>2];c[(c[n>>2]|0)+12>>2]=0;kR(c[(c[n>>2]|0)+8>>2]|0,0,e[(c[j>>2]|0)+148>>1]|0|0)|0}else{g=ig(40+(e[f+148>>1]|0)|0,0)|0;c[n>>2]=g;c[c[m>>2]>>2]=g;if(c[n>>2]|0){c[(c[n>>2]|0)+8>>2]=(c[n>>2]|0)+40;b[(c[n>>2]|0)+24>>1]=64;b[(c[n>>2]|0)+26>>1]=1;c[(c[n>>2]|0)+16>>2]=c[j>>2];break}m=c[(c[j>>2]|0)+64>>2]|0;n=c[(c[j>>2]|0)+160>>2]|0;n=rR((c[k>>2]|0)-1|0,0,n|0,((n|0)<0)<<31>>31|0)|0;Cs(m,n,C,c[l>>2]|0)|0;c[h>>2]=7;n=c[h>>2]|0;i=o;return n|0}while(0);c[(c[n>>2]|0)+20>>2]=c[k>>2];c[(c[n>>2]|0)+4>>2]=c[l>>2];n=(c[j>>2]|0)+128|0;c[n>>2]=(c[n>>2]|0)+1;c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}function JM(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;m=o+4|0;n=o;c[j>>2]=a;c[k>>2]=f;c[l>>2]=g;if((d[(c[j>>2]|0)+33>>0]|0)==2){c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}g=KM(c[j>>2]|0)|0;if((g|0)>(c[(c[j>>2]|0)+20>>2]|0)){c[m>>2]=c[(c[j>>2]|0)+8>>2];while(1){if(!(c[m>>2]|0))break;if((b[(c[m>>2]|0)+26>>1]|0)==0?(e[(c[m>>2]|0)+24>>1]&8|0)==0:0)break;c[m>>2]=c[(c[m>>2]|0)+36>>2]}c[(c[j>>2]|0)+8>>2]=c[m>>2];a:do if(!(c[m>>2]|0)){c[m>>2]=c[(c[j>>2]|0)+4>>2];while(1){if(!(c[m>>2]|0))break a;if(!(b[(c[m>>2]|0)+26>>1]|0))break a;c[m>>2]=c[(c[m>>2]|0)+36>>2]}}while(0);if((c[m>>2]|0)!=0?(c[n>>2]=Yb[c[(c[j>>2]|0)+36>>2]&255](c[(c[j>>2]|0)+40>>2]|0,c[m>>2]|0)|0,(c[n>>2]|0)!=0&(c[n>>2]|0)!=5):0){c[h>>2]=c[n>>2];n=c[h>>2]|0;i=o;return n|0}}n=Ob[c[140>>2]&255](c[(c[j>>2]|0)+44>>2]|0,c[k>>2]|0,2)|0;c[c[l>>2]>>2]=n;c[h>>2]=(c[c[l>>2]>>2]|0)==0?7:0;n=c[h>>2]|0;i=o;return n|0}function KM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Tb[c[136>>2]&255](c[(c[d>>2]|0)+44>>2]|0)|0;i=b;return a|0}function LM(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+108>>2]|0}function MM(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;n=r+40|0;o=r+36|0;l=r+32|0;q=r+28|0;p=r+24|0;h=r+20|0;k=r+12|0;m=r+8|0;j=r+4|0;g=r;c[o>>2]=f;c[h>>2]=0;c[l>>2]=LJ(c[c[o>>2]>>2]|0)|0;if(c[l>>2]|0){c[n>>2]=c[l>>2];q=c[n>>2]|0;i=r;return q|0}c[l>>2]=nF(c[o>>2]|0,1,q,0)|0;if(c[l>>2]|0){c[n>>2]=c[l>>2];q=c[n>>2]|0;i=r;return q|0}f=$q((c[(c[q>>2]|0)+56>>2]|0)+28|0)|0;c[r+16>>2]=f;c[p>>2]=f;Cg(c[c[o>>2]>>2]|0,h);if(!((c[p>>2]|0)!=0?(vQ((c[(c[q>>2]|0)+56>>2]|0)+24|0,(c[(c[q>>2]|0)+56>>2]|0)+92|0,4)|0)==0:0))c[p>>2]=c[h>>2];a:do if((c[p>>2]|0)>0){c[j>>2]=c[(c[q>>2]|0)+56>>2];c[l>>2]=26;b:do if(!(vQ(c[j>>2]|0,43252,16)|0)){if((d[(c[j>>2]|0)+18>>0]|0|0)>2){f=(c[o>>2]|0)+22|0;b[f>>1]=e[f>>1]|0|1}if((d[(c[j>>2]|0)+19>>0]|0|0)<=2){do if((d[(c[j>>2]|0)+19>>0]|0|0)==2?((e[(c[o>>2]|0)+22>>1]|0)&16|0)==0:0){c[g>>2]=0;c[l>>2]=RJ(c[c[o>>2]>>2]|0,g)|0;if(c[l>>2]|0)break b;if(c[g>>2]|0){c[l>>2]=26;break}qB(c[q>>2]|0);c[n>>2]=0;q=c[n>>2]|0;i=r;return q|0}while(0);if((vQ((c[j>>2]|0)+21|0,45492,3)|0)==0?(c[k>>2]=(d[(c[j>>2]|0)+16>>0]|0)<<8|(d[(c[j>>2]|0)+17>>0]|0)<<16,!(((c[k>>2]|0)>>>0>65536?1:((c[k>>2]|0)-1&c[k>>2]|0)!=0)|(c[k>>2]|0)>>>0<=256)):0){c[m>>2]=(c[k>>2]|0)-(d[(c[j>>2]|0)+20>>0]|0);if((c[k>>2]|0)!=(c[(c[o>>2]|0)+32>>2]|0)){qB(c[q>>2]|0);c[(c[o>>2]|0)+36>>2]=c[m>>2];c[(c[o>>2]|0)+32>>2]=c[k>>2];Pi(c[o>>2]|0);c[l>>2]=Qi(c[c[o>>2]>>2]|0,(c[o>>2]|0)+32|0,(c[k>>2]|0)-(c[m>>2]|0)|0)|0;c[n>>2]=c[l>>2];q=c[n>>2]|0;i=r;return q|0}if((c[(c[(c[o>>2]|0)+4>>2]|0)+24>>2]&65536|0)==0?(c[p>>2]|0)>(c[h>>2]|0):0){c[l>>2]=Lj(58503)|0;break}if((c[m>>2]|0)>>>0>=480){c[(c[o>>2]|0)+32>>2]=c[k>>2];c[(c[o>>2]|0)+36>>2]=c[m>>2];m=($q((c[j>>2]|0)+52|0)|0)!=0;a[(c[o>>2]|0)+17>>0]=m?1:0;m=($q((c[j>>2]|0)+64|0)|0)!=0;a[(c[o>>2]|0)+18>>0]=m?1:0;break a}}}}while(0);qB(c[q>>2]|0);c[(c[o>>2]|0)+12>>2]=0;c[n>>2]=c[l>>2];q=c[n>>2]|0;i=r;return q|0}while(0);b[(c[o>>2]|0)+24>>1]=(((c[(c[o>>2]|0)+36>>2]|0)-12<<6>>>0)/255|0)-23;b[(c[o>>2]|0)+26>>1]=(((c[(c[o>>2]|0)+36>>2]|0)-12<<5>>>0)/255|0)-23;b[(c[o>>2]|0)+28>>1]=(c[(c[o>>2]|0)+36>>2]|0)-35;b[(c[o>>2]|0)+30>>1]=(((c[(c[o>>2]|0)+36>>2]|0)-12<<5>>>0)/255|0)-23;g=c[o>>2]|0;if((e[(c[o>>2]|0)+24>>1]|0|0)>127)a[g+21>>0]=127;else a[(c[o>>2]|0)+21>>0]=b[g+24>>1];c[(c[o>>2]|0)+12>>2]=c[q>>2];c[(c[o>>2]|0)+44>>2]=c[p>>2];c[n>>2]=0;q=c[n>>2]|0;i=r;return q|0}function NM(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;h=m+16|0;j=m+12|0;k=m+8|0;g=m+4|0;l=m;c[j>>2]=b;c[k>>2]=e;c[g>>2]=f;c[l>>2]=0;if(c[(c[j>>2]|0)+44>>2]|0){c[h>>2]=c[(c[j>>2]|0)+44>>2];l=c[h>>2]|0;i=m;return l|0}a[(c[j>>2]|0)+22>>0]=c[g>>2];if((d[(c[j>>2]|0)+17>>0]|0|0)==1){f=(sr(c[j>>2]|0)|0)!=0;g=c[j>>2]|0;if(!f){c[l>>2]=vt(g,2)|0;if((c[l>>2]|0)==0&(c[k>>2]|0)!=0)c[l>>2]=ut(c[j>>2]|0,4)|0}else{do if((d[g+4>>0]|0|0)!=0?(vr(c[(c[j>>2]|0)+216>>2]|0,-1)|0)!=0:0){c[l>>2]=vt(c[j>>2]|0,4)|0;if(!(c[l>>2]|0)){vr(c[(c[j>>2]|0)+216>>2]|0,1)|0;break}c[h>>2]=c[l>>2];l=c[h>>2]|0;i=m;return l|0}while(0);c[l>>2]=OM(c[(c[j>>2]|0)+216>>2]|0)|0}if(!(c[l>>2]|0)){a[(c[j>>2]|0)+17>>0]=2;c[(c[j>>2]|0)+40>>2]=c[(c[j>>2]|0)+28>>2];c[(c[j>>2]|0)+36>>2]=c[(c[j>>2]|0)+28>>2];c[(c[j>>2]|0)+32>>2]=c[(c[j>>2]|0)+28>>2];k=(c[j>>2]|0)+80|0;c[k>>2]=0;c[k+4>>2]=0}}c[h>>2]=c[l>>2];l=c[h>>2]|0;i=m;return l|0}function OM(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[e>>2]=b;if(a[(c[e>>2]|0)+46>>0]|0){c[d>>2]=8;f=c[d>>2]|0;i=g;return f|0}c[f>>2]=Ns(c[e>>2]|0,0,1)|0;if(c[f>>2]|0){c[d>>2]=c[f>>2];f=c[d>>2]|0;i=g;return f|0}a[(c[e>>2]|0)+44>>0]=1;b=(c[e>>2]|0)+52|0;if(vQ(b,ts(c[e>>2]|0)|0,48)|0){Br(c[e>>2]|0,0,1);a[(c[e>>2]|0)+44>>0]=0;c[f>>2]=517}c[d>>2]=c[f>>2];f=c[d>>2]|0;i=g;return f|0}function PM(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;fh(c[d>>2]|0);i=b;return}function QM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=i;i=i+624|0;g=H+92|0;h=H+88|0;j=H+84|0;k=H+80|0;l=H+76|0;m=H+72|0;z=H+68|0;p=H+64|0;x=H+60|0;o=H+56|0;w=H+52|0;B=H+48|0;n=H+44|0;t=H+40|0;s=H+36|0;r=H+32|0;v=H+28|0;u=H+24|0;C=H+20|0;F=H+96|0;E=H+16|0;A=H+12|0;y=H+8|0;D=H+4|0;q=H;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[z>>2]=c[k>>2];c[p>>2]=-1;c[x>>2]=0;c[o>>2]=c[l>>2]&-256;c[B>>2]=0;c[n>>2]=0;c[t>>2]=c[l>>2]&16;c[s>>2]=c[l>>2]&8;c[r>>2]=c[l>>2]&4;c[v>>2]=c[l>>2]&1;c[u>>2]=c[l>>2]&2;if(c[r>>2]|0)if((c[o>>2]|0)==16384|(c[o>>2]|0)==2048)e=1;else e=(c[o>>2]|0)==524288;else e=0;c[C>>2]=e&1;c[E>>2]=c[j>>2];b=c[1926]|0;if((b|0)!=(LQ()|0)){c[1926]=LQ()|0;Sd(0,0)}e=c[z>>2]|0;d=e+44|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(d|0));e=c[E>>2]|0;do if((c[o>>2]|0)!=256){if(!e){c[B>>2]=FN(c[(c[h>>2]|0)+8>>2]|0,F)|0;if(!(c[B>>2]|0)){c[E>>2]=F;break}c[g>>2]=c[B>>2];G=c[g>>2]|0;i=H;return G|0}}else{c[A>>2]=WN(e,c[l>>2]|0)|0;if(!(c[A>>2]|0)){c[A>>2]=Jd(12,0)|0;if(!(c[A>>2]|0)){c[g>>2]=7;G=c[g>>2]|0;i=H;return G|0}}else c[p>>2]=c[c[A>>2]>>2];c[(c[z>>2]|0)+28>>2]=c[A>>2]}while(0);if(c[v>>2]|0)c[x>>2]=c[x>>2];if(c[u>>2]|0)c[x>>2]=c[x>>2]|2;if(c[r>>2]|0)c[x>>2]=c[x>>2]|64;if(c[t>>2]|0)c[x>>2]=c[x>>2]|131200;c[x>>2]=c[x>>2];do if((c[p>>2]|0)<0){c[B>>2]=XN(c[E>>2]|0,c[l>>2]|0,y,D,q)|0;if(c[B>>2]|0){c[g>>2]=c[B>>2];G=c[g>>2]|0;i=H;return G|0}c[p>>2]=BN(c[E>>2]|0,c[x>>2]|0,c[y>>2]|0)|0;if((c[p>>2]|0)<0?(F=(c[(SP()|0)>>2]|0)!=21,F&(c[u>>2]|0)!=0):0){c[l>>2]=c[l>>2]&-7;c[x>>2]=c[x>>2]&-67;c[l>>2]=c[l>>2]|1;c[x>>2]=c[x>>2];c[v>>2]=1;c[p>>2]=BN(c[E>>2]|0,c[x>>2]|0,c[y>>2]|0)|0}if((c[p>>2]|0)<0){F=et(33050)|0;c[B>>2]=xN(F,45571,c[E>>2]|0,33050)|0;break}if(c[l>>2]&526336){YN(c[p>>2]|0,c[D>>2]|0,c[q>>2]|0)|0;G=34}else G=34}else G=34;while(0);if((G|0)==34){if(c[m>>2]|0)c[c[m>>2]>>2]=c[l>>2];if(c[(c[z>>2]|0)+28>>2]|0){c[c[(c[z>>2]|0)+28>>2]>>2]=c[p>>2];c[(c[(c[z>>2]|0)+28>>2]|0)+4>>2]=c[l>>2]}if(c[s>>2]|0)Tb[c[7464>>2]&255](c[E>>2]|0)|0;c[w>>2]=(c[o>>2]|0)!=256&1;if(c[s>>2]|0)c[n>>2]=c[n>>2]|32;if(c[v>>2]|0)c[n>>2]=c[n>>2]|2;if(c[w>>2]|0)c[n>>2]=c[n>>2]|128;if(c[C>>2]|0)c[n>>2]=c[n>>2]|8;if(c[l>>2]&64)c[n>>2]=c[n>>2]|64;c[B>>2]=ZN(c[h>>2]|0,c[p>>2]|0,c[k>>2]|0,c[j>>2]|0,c[n>>2]|0)|0}if(c[B>>2]|0)Kd(c[(c[z>>2]|0)+28>>2]|0);c[g>>2]=c[B>>2];G=c[g>>2]|0;i=H;return G|0}function RM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+20|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[k+16>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=0;if((Tb[c[7464>>2]&255](c[f>>2]|0)|0)==-1){if((c[(SP()|0)>>2]|0)==2)c[j>>2]=5898;else c[j>>2]=xN(2570,45668,c[f>>2]|0,33178)|0;c[e>>2]=c[j>>2];b=c[e>>2]|0;i=k;return b|0}do if(c[g>>2]&1){c[j>>2]=Yb[c[7476>>2]&255](c[f>>2]|0,h)|0;if(c[j>>2]|0){c[j>>2]=0;break}if(MN(c[h>>2]|0,0,0)|0)c[j>>2]=xN(1290,45902,c[f>>2]|0,33188)|0;wN(0,c[h>>2]|0,33190)}while(0);c[e>>2]=c[j>>2];b=c[e>>2]|0;i=k;return b|0}function SM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+96|0;f=j+84|0;k=j+80|0;g=j+76|0;h=j;c[j+88>>2]=a;c[f>>2]=b;c[k>>2]=d;c[g>>2]=e;if(!(c[k>>2]|0)){k=0==(Yb[c[7320>>2]&255](c[f>>2]|0,h)|0);c[c[g>>2]>>2]=(k?(c[h+36>>2]|0)>0:0)&1;i=j;return 0}else{k=(Yb[c[7296>>2]&255](c[f>>2]|0,6)|0)==0&1;c[c[g>>2]>>2]=k;i=j;return 0}return 0}function TM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+128|0;s=r+112|0;g=r+108|0;h=r+104|0;p=r+100|0;m=r+96|0;n=r+92|0;o=r+88|0;q=r+84|0;j=r+80|0;k=r+4|0;l=r;c[r+116>>2]=b;c[s>>2]=d;c[g>>2]=e;c[h>>2]=f;c[p>>2]=0;c[n>>2]=1;c[o>>2]=c[s>>2];c[q>>2]=0;while(1){c[j>>2]=0;if(Yb[c[7596>>2]&255](c[o>>2]|0,k)|0){if((c[(SP()|0)>>2]|0)!=2){s=et(33302)|0;c[p>>2]=xN(s,45756,c[o>>2]|0,33302)|0}}else c[j>>2]=(c[k+12>>2]&61440|0)==40960&1;if(c[j>>2]|0){if(!(c[q>>2]|0)){c[q>>2]=Id(c[g>>2]|0)|0;if(!(c[q>>2]|0))c[p>>2]=7}else{s=(c[n>>2]|0)+1|0;c[n>>2]=s;if((s|0)>100)c[p>>2]=et(33313)|0}do if(!(c[p>>2]|0)){c[m>>2]=Ob[c[7584>>2]&255](c[o>>2]|0,c[q>>2]|0,(c[g>>2]|0)-1|0)|0;if((c[m>>2]|0)<0){s=et(33319)|0;c[p>>2]=xN(s,45747,c[o>>2]|0,33319)|0;break}do if((a[c[q>>2]>>0]|0)!=47){c[l>>2]=If(c[o>>2]|0)|0;while(1){if((c[l>>2]|0)<=0)break;if((a[(c[o>>2]|0)+((c[l>>2]|0)-1)>>0]|0)==47)break;c[l>>2]=(c[l>>2]|0)+-1}if(((c[m>>2]|0)+(c[l>>2]|0)+1|0)>(c[g>>2]|0)){c[p>>2]=et(33325)|0;break}else{jR((c[q>>2]|0)+(c[l>>2]|0)|0,c[q>>2]|0,(c[m>>2]|0)+1|0)|0;iR(c[q>>2]|0,c[o>>2]|0,c[l>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+(c[l>>2]|0);break}}while(0);a[(c[q>>2]|0)+(c[m>>2]|0)>>0]=0}while(0);c[o>>2]=c[q>>2]}if((c[p>>2]|0)==0?(c[o>>2]|0)!=(c[h>>2]|0):0)c[p>>2]=VN(c[o>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;if(!(c[j>>2]|0)){g=30;break}c[o>>2]=c[h>>2];if(c[p>>2]|0){g=30;break}}if((g|0)==30){Kd(c[q>>2]|0);i=r;return c[p>>2]|0}return 0}function UM(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[l+20>>2]=b;c[f>>2]=d;c[g>>2]=e;kR(c[g>>2]|0,0,c[f>>2]|0)|0;c[1926]=LQ()|0;c[h>>2]=BN(45889,0,0)|0;if((c[h>>2]|0)<0){Fb(k|0)|0;e=c[g>>2]|0;a[e>>0]=a[k>>0]|0;a[e+1>>0]=a[k+1>>0]|0;a[e+2>>0]=a[k+2>>0]|0;a[e+3>>0]=a[k+3>>0]|0;e=(c[g>>2]|0)+4|0;a[e>>0]=a[7704]|0;a[e+1>>0]=a[7705]|0;a[e+2>>0]=a[7706]|0;a[e+3>>0]=a[7707]|0;c[f>>2]=8;e=c[f>>2]|0;i=l;return e|0}do{c[j>>2]=Ob[c[7368>>2]&255](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;if((c[j>>2]|0)>=0)break}while((c[(SP()|0)>>2]|0)==4);wN(0,c[h>>2]|0,33449);e=c[f>>2]|0;i=l;return e|0}function VM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[e+8>>2]=a;c[f>>2]=b;c[d>>2]=((c[f>>2]|0)+999999|0)/1e6|0;QQ(c[d>>2]|0)|0;i=e;return(c[d>>2]|0)*1e6|0}function WM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+32|0;f=e+12|0;g=e;d=e+8|0;c[e+16>>2]=a;c[f>>2]=b;b=g;c[b>>2]=0;c[b+4>>2]=0;c[d>>2]=YM(0,g)|0;b=g;h[c[f>>2]>>3]=(+((c[b>>2]|0)>>>0)+4294967296.0*+(c[b+4>>2]|0))/864.0e5;i=e;return c[d>>2]|0}function XM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;i=i+16|0;c[e+8>>2]=a;c[e+4>>2]=b;c[e>>2]=d;i=e;return 0}function YM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+32|0;f=e+12|0;d=e+8|0;g=e;c[e+16>>2]=a;c[f>>2]=b;c[d>>2]=0;Hb(g|0,0)|0;b=c[g>>2]|0;b=rR(1e3,0,b|0,((b|0)<0)<<31>>31|0)|0;b=gR(1045635584,49096,b|0,C|0)|0;a=(c[g+4>>2]|0)/1e3|0;a=gR(b|0,C|0,a|0,((a|0)<0)<<31>>31|0)|0;b=c[f>>2]|0;c[b>>2]=a;c[b+4>>2]=C;i=e;return c[d>>2]|0}function ZM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+12|0;f=k+8|0;g=k+4|0;h=k;c[k+16>>2]=a;c[e>>2]=b;c[f>>2]=d;c[h>>2]=12;if(!(c[e>>2]|0)){c[h>>2]=0;c[g>>2]=0;while(1){if((c[g>>2]|0)>>>0>=28)break;if(c[7268+((c[g>>2]|0)*12|0)+8>>2]|0)c[7268+((c[g>>2]|0)*12|0)+4>>2]=c[7268+((c[g>>2]|0)*12|0)+8>>2];c[g>>2]=(c[g>>2]|0)+1}j=c[h>>2]|0;i=k;return j|0}c[g>>2]=0;while(1){if((c[g>>2]|0)>>>0>=28){j=16;break}b=(yQ(c[e>>2]|0,c[7268+((c[g>>2]|0)*12|0)>>2]|0)|0)==0;d=c[g>>2]|0;if(b)break;c[g>>2]=d+1}if((j|0)==16){j=c[h>>2]|0;i=k;return j|0}if(!(c[7268+(d*12|0)+8>>2]|0))c[7268+((c[g>>2]|0)*12|0)+8>>2]=c[7268+((c[g>>2]|0)*12|0)+4>>2];c[h>>2]=0;if(!(c[f>>2]|0))c[f>>2]=c[7268+((c[g>>2]|0)*12|0)+8>>2];c[7268+((c[g>>2]|0)*12|0)+4>>2]=c[f>>2];j=c[h>>2]|0;i=k;return j|0}function _M(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+12|0;d=g+4|0;e=g;c[g+8>>2]=a;c[d>>2]=b;c[e>>2]=0;while(1){if((c[e>>2]|0)>>>0>=28){a=6;break}a=(yQ(c[d>>2]|0,c[7268+((c[e>>2]|0)*12|0)>>2]|0)|0)==0;b=c[e>>2]|0;if(a){a=4;break}c[e>>2]=b+1}if((a|0)==4){c[f>>2]=c[7268+(b*12|0)+4>>2];f=c[f>>2]|0;i=g;return f|0}else if((a|0)==6){c[f>>2]=0;f=c[f>>2]|0;i=g;return f|0}return 0}function $M(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+12|0;d=g+4|0;e=g;c[g+8>>2]=a;c[d>>2]=b;c[e>>2]=-1;a:do if(c[d>>2]|0){c[e>>2]=0;while(1){if((c[e>>2]|0)>=27)break a;if(!(yQ(c[d>>2]|0,c[7268+((c[e>>2]|0)*12|0)>>2]|0)|0))break a;c[e>>2]=(c[e>>2]|0)+1}}while(0);c[e>>2]=(c[e>>2]|0)+1;while(1){if((c[e>>2]|0)>=28){d=11;break}a=c[e>>2]|0;if(c[7268+((c[e>>2]|0)*12|0)+4>>2]|0){d=9;break}c[e>>2]=a+1}if((d|0)==9){c[f>>2]=c[7268+(a*12|0)>>2];f=c[f>>2]|0;i=g;return f|0}else if((d|0)==11){c[f>>2]=0;f=c[f>>2]|0;i=g;return f|0}return 0}function aN(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 7192}function bN(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=c[d>>2];iN(c[d>>2]|0,0)|0;Kd(c[(c[e>>2]|0)+24>>2]|0);a=PN(c[d>>2]|0)|0;i=b;return a|0}function cN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;g=m+28|0;o=m+24|0;h=m+20|0;j=m+16|0;n=m;l=m+12|0;k=m+8|0;c[o>>2]=a;c[h>>2]=b;c[j>>2]=d;b=n;c[b>>2]=e;c[b+4>>2]=f;c[l>>2]=c[o>>2];b=n;c[k>>2]=ON(c[l>>2]|0,c[b>>2]|0,c[b+4>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;if((c[k>>2]|0)==(c[j>>2]|0)){c[g>>2]=0;o=c[g>>2]|0;i=m;return o|0}if((c[k>>2]|0)<0){c[g>>2]=266;o=c[g>>2]|0;i=m;return o|0}else{KN(c[l>>2]|0,0);kR((c[h>>2]|0)+(c[k>>2]|0)|0,0,(c[j>>2]|0)-(c[k>>2]|0)|0)|0;c[g>>2]=522;o=c[g>>2]|0;i=m;return o|0}return 0}function dN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;g=n+28|0;o=n+24|0;h=n+20|0;j=n+16|0;k=n;l=n+12|0;m=n+8|0;c[o>>2]=a;c[h>>2]=b;c[j>>2]=d;b=k;c[b>>2]=e;c[b+4>>2]=f;c[l>>2]=c[o>>2];c[m>>2]=0;while(1){o=k;o=IN(c[l>>2]|0,c[o>>2]|0,c[o+4>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;c[m>>2]=o;if(!((o|0)<(c[j>>2]|0)?(c[m>>2]|0)>0:0))break;c[j>>2]=(c[j>>2]|0)-(c[m>>2]|0);b=c[m>>2]|0;o=k;b=gR(c[o>>2]|0,c[o+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;o=k;c[o>>2]=b;c[o+4>>2]=C;c[h>>2]=(c[h>>2]|0)+(c[m>>2]|0)}if((c[j>>2]|0)<=(c[m>>2]|0)){c[g>>2]=0;o=c[g>>2]|0;i=n;return o|0}if((c[m>>2]|0)<0?(c[(c[l>>2]|0)+20>>2]|0)!=28:0){c[g>>2]=778;o=c[g>>2]|0;i=n;return o|0}KN(c[l>>2]|0,0);c[g>>2]=13;o=c[g>>2]|0;i=n;return o|0}function eN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+20|0;k=j+16|0;f=j;g=j+12|0;h=j+8|0;c[k>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=c[k>>2];if((c[(c[g>>2]|0)+40>>2]|0)>0){k=f;a=c[(c[g>>2]|0)+40>>2]|0;a=gR(c[k>>2]|0,c[k+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=fR(a|0,C|0,1,0)|0;k=c[(c[g>>2]|0)+40>>2]|0;k=pR(a|0,C|0,k|0,((k|0)<0)<<31>>31|0)|0;a=c[(c[g>>2]|0)+40>>2]|0;a=rR(k|0,C|0,a|0,((a|0)<0)<<31>>31|0)|0;k=f;c[k>>2]=a;c[k+4>>2]=C}k=f;c[h>>2]=NN(c[(c[g>>2]|0)+12>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;if(c[h>>2]|0){k=c[g>>2]|0;KN(k,c[(SP()|0)>>2]|0);c[e>>2]=xN(1546,45594,c[(c[g>>2]|0)+32>>2]|0,30893)|0;k=c[e>>2]|0;i=j;return k|0}else{c[e>>2]=0;k=c[e>>2]|0;i=j;return k|0}return 0}function fN(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;k=i;i=i+32|0;f=k+28|0;o=k+24|0;n=k+20|0;j=k+16|0;h=k+12|0;l=k+8|0;m=k+4|0;g=k;c[o>>2]=a;c[n>>2]=d;c[h>>2]=c[o>>2];c[l>>2]=c[n>>2]&16;c[m>>2]=(c[n>>2]&15|0)==3&1;c[j>>2]=MN(c[(c[h>>2]|0)+12>>2]|0,c[m>>2]|0,c[l>>2]|0)|0;d=c[h>>2]|0;if(c[j>>2]|0){KN(d,c[(SP()|0)>>2]|0);c[f>>2]=xN(1034,45878,c[(c[h>>2]|0)+32>>2]|0,30848)|0;o=c[f>>2]|0;i=k;return o|0}if((e[d+18>>1]|0)&8){c[j>>2]=Yb[c[7476>>2]&255](c[(c[h>>2]|0)+32>>2]|0,g)|0;if(!(c[j>>2]|0)){MN(c[g>>2]|0,0,0)|0;wN(c[h>>2]|0,c[g>>2]|0,30862)}else c[j>>2]=0;o=(c[h>>2]|0)+18|0;b[o>>1]=(e[o>>1]|0)&-9}c[f>>2]=c[j>>2];o=c[f>>2]|0;i=k;return o|0}function gN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+96|0;d=h+88|0;e=h+84|0;f=h+80|0;j=h+76|0;g=h;c[e>>2]=a;c[f>>2]=b;c[j>>2]=Yb[c[7332>>2]&255](c[(c[e>>2]|0)+12>>2]|0,g)|0;if(c[j>>2]|0){j=c[e>>2]|0;KN(j,c[(SP()|0)>>2]|0);c[d>>2]=1802;j=c[d>>2]|0;i=h;return j|0}b=c[g+36>>2]|0;j=c[f>>2]|0;c[j>>2]=b;c[j+4>>2]=((b|0)<0)<<31>>31;j=c[f>>2]|0;if((c[j>>2]|0)==1&(c[j+4>>2]|0)==0){j=c[f>>2]|0;c[j>>2]=0;c[j+4>>2]=0}c[d>>2]=0;j=c[d>>2]|0;i=h;return j|0}function hN(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;f=m+24|0;n=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;j=m+4|0;k=m;c[n>>2]=b;c[g>>2]=e;c[h>>2]=c[n>>2];c[l>>2]=c[(c[h>>2]|0)+24>>2];c[j>>2]=0;if((d[(c[h>>2]|0)+16>>0]|0|0)>0){a[(c[h>>2]|0)+16>>0]=c[g>>2];Ha(c[l>>2]|0,0)|0;c[f>>2]=0;n=c[f>>2]|0;i=m;return n|0}c[j>>2]=Yb[c[7488>>2]&255](c[l>>2]|0,511)|0;if((c[j>>2]|0)>=0){a[(c[h>>2]|0)+16>>0]=c[g>>2];c[f>>2]=c[j>>2];n=c[f>>2]|0;i=m;return n|0}c[k>>2]=c[(SP()|0)>>2];if(17!=(c[k>>2]|0)){c[j>>2]=LN(c[k>>2]|0,3850)|0;if((c[j>>2]|0)!=5)KN(c[h>>2]|0,c[k>>2]|0)}else c[j>>2]=5;c[f>>2]=c[j>>2];n=c[f>>2]|0;i=m;return n|0}function iN(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;f=m+24|0;n=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;j=m+4|0;k=m;c[n>>2]=b;c[g>>2]=e;c[h>>2]=c[n>>2];c[l>>2]=c[(c[h>>2]|0)+24>>2];if((d[(c[h>>2]|0)+16>>0]|0|0)==(c[g>>2]|0)){c[f>>2]=0;n=c[f>>2]|0;i=m;return n|0}if((c[g>>2]|0)==1){a[(c[h>>2]|0)+16>>0]=1;c[f>>2]=0;n=c[f>>2]|0;i=m;return n|0}c[j>>2]=Tb[c[7500>>2]&255](c[l>>2]|0)|0;if((c[j>>2]|0)>=0){a[(c[h>>2]|0)+16>>0]=0;c[f>>2]=0;n=c[f>>2]|0;i=m;return n|0}c[k>>2]=c[(SP()|0)>>2];if((c[k>>2]|0)==2)c[j>>2]=0;else{c[j>>2]=2058;KN(c[h>>2]|0,c[k>>2]|0)}c[f>>2]=c[j>>2];n=c[f>>2]|0;i=m;return n|0}function jN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;j=e+16|0;f=e+12|0;d=e+8|0;g=e+4|0;h=e;c[j>>2]=a;c[f>>2]=b;c[d>>2]=0;c[g>>2]=0;c[h>>2]=c[j>>2];c[g>>2]=(Yb[c[7296>>2]&255](c[(c[h>>2]|0)+24>>2]|0,0)|0)==0&1;c[c[f>>2]>>2]=c[g>>2];i=e;return c[d>>2]|0}function kN(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;k=m;f=m+28|0;o=m+24|0;n=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;c[o>>2]=a;c[n>>2]=b;c[g>>2]=e;c[h>>2]=c[o>>2];do switch(c[n>>2]|0){case 1:{c[c[g>>2]>>2]=d[(c[h>>2]|0)+16>>0];c[f>>2]=0;break}case 4:{c[c[g>>2]>>2]=c[(c[h>>2]|0)+20>>2];c[f>>2]=0;break}case 6:{c[(c[h>>2]|0)+40>>2]=c[c[g>>2]>>2];c[f>>2]=0;break}case 5:{o=c[g>>2]|0;c[j>>2]=DN(c[h>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[f>>2]=c[j>>2];break}case 10:{EN(c[h>>2]|0,4,c[g>>2]|0);c[f>>2]=0;break}case 13:{EN(c[h>>2]|0,16,c[g>>2]|0);c[f>>2]=0;break}case 12:{c[k>>2]=c[(c[(c[h>>2]|0)+4>>2]|0)+16>>2];o=Od(19255,k)|0;c[c[g>>2]>>2]=o;c[f>>2]=0;break}case 16:{o=c[(c[(c[h>>2]|0)+4>>2]|0)+8>>2]|0;c[l>>2]=Jd(o,((o|0)<0)<<31>>31)|0;if(c[l>>2]|0){FN(c[(c[(c[h>>2]|0)+4>>2]|0)+8>>2]|0,c[l>>2]|0)|0;c[c[g>>2]>>2]=c[l>>2]}c[f>>2]=0;break}case 20:{o=GN(c[h>>2]|0)|0;c[c[g>>2]>>2]=o;c[f>>2]=0;break}default:c[f>>2]=12}while(0);i=m;return c[f>>2]|0}function lN(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return 4096}function mN(a){a=a|0;var b=0,d=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;b=d;c[g>>2]=a;c[f>>2]=c[g>>2];c[b>>2]=0;if(!((e[(c[f>>2]|0)+18>>1]|0)&16)){g=c[b>>2]|0;i=d;return g|0}c[b>>2]=c[b>>2]|4096;g=c[b>>2]|0;i=d;return g|0}function nN(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+48|0;v=u+32|0;h=u+28|0;j=u+24|0;k=u+20|0;p=u+16|0;o=u+12|0;r=u+8|0;q=u+4|0;s=u;n=u+40|0;l=u+38|0;m=u+36|0;c[v>>2]=a;c[h>>2]=d;c[j>>2]=f;c[k>>2]=g;c[p>>2]=c[v>>2];c[o>>2]=c[(c[p>>2]|0)+36>>2];c[q>>2]=c[c[o>>2]>>2];c[s>>2]=0;b[n>>1]=(1<<(c[h>>2]|0)+(c[j>>2]|0))-(1<>2]);if(c[k>>2]&1){b[l>>1]=0;c[r>>2]=c[(c[q>>2]|0)+32>>2];while(1){if(!(c[r>>2]|0))break;if((c[r>>2]|0)!=(c[o>>2]|0))b[l>>1]=e[l>>1]|0|(e[(c[r>>2]|0)+10>>1]|0);c[r>>2]=c[(c[r>>2]|0)+4>>2]}if(!((e[n>>1]|0)&(e[l>>1]|0)))c[s>>2]=CN(c[p>>2]|0,2,(c[h>>2]|0)+120|0,c[j>>2]|0)|0;else c[s>>2]=0;if(c[s>>2]|0){v=c[s>>2]|0;i=u;return v|0}v=(c[o>>2]|0)+12|0;b[v>>1]=(e[v>>1]|0)&~(e[n>>1]|0);v=(c[o>>2]|0)+10|0;b[v>>1]=(e[v>>1]|0)&~(e[n>>1]|0);v=c[s>>2]|0;i=u;return v|0}if(!(c[k>>2]&4)){c[r>>2]=c[(c[q>>2]|0)+32>>2];while(1){if(!(c[r>>2]|0))break;if((e[(c[r>>2]|0)+12>>1]|0)&(e[n>>1]|0)){t=28;break}if((e[(c[r>>2]|0)+10>>1]|0)&(e[n>>1]|0)){t=28;break}c[r>>2]=c[(c[r>>2]|0)+4>>2]}if((t|0)==28)c[s>>2]=5;if(c[s>>2]|0){v=c[s>>2]|0;i=u;return v|0}c[s>>2]=CN(c[p>>2]|0,1,(c[h>>2]|0)+120|0,c[j>>2]|0)|0;if(c[s>>2]|0){v=c[s>>2]|0;i=u;return v|0}v=(c[o>>2]|0)+12|0;b[v>>1]=e[v>>1]|0|(e[n>>1]|0);v=c[s>>2]|0;i=u;return v|0}b[m>>1]=0;c[r>>2]=c[(c[q>>2]|0)+32>>2];while(1){if(!(c[r>>2]|0))break;if((e[(c[r>>2]|0)+12>>1]|0)&(e[n>>1]|0)){t=16;break}b[m>>1]=e[m>>1]|0|(e[(c[r>>2]|0)+10>>1]|0);c[r>>2]=c[(c[r>>2]|0)+4>>2]}if((t|0)==16)c[s>>2]=5;do if(!(c[s>>2]|0))if(!((e[m>>1]|0)&(e[n>>1]|0))){c[s>>2]=CN(c[p>>2]|0,0,(c[h>>2]|0)+120|0,c[j>>2]|0)|0;break}else{c[s>>2]=0;break}while(0);if(c[s>>2]|0){v=c[s>>2]|0;i=u;return v|0}v=(c[o>>2]|0)+10|0;b[v>>1]=e[v>>1]|0|(e[n>>1]|0);v=c[s>>2]|0;i=u;return v|0}function oN(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;sN();uN();i=b;return}function pN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;d=k+24|0;l=k+20|0;e=k+16|0;f=k+12|0;h=k+8|0;j=k+4|0;g=k;c[l>>2]=a;c[e>>2]=b;c[g>>2]=c[l>>2];c[f>>2]=c[(c[g>>2]|0)+36>>2];if(!(c[f>>2]|0)){c[d>>2]=0;l=c[d>>2]|0;i=k;return l|0}c[h>>2]=c[c[f>>2]>>2];c[j>>2]=(c[h>>2]|0)+32;while(1){if((c[c[j>>2]>>2]|0)==(c[f>>2]|0))break;c[j>>2]=(c[c[j>>2]>>2]|0)+4}c[c[j>>2]>>2]=c[(c[f>>2]|0)+4>>2];Kd(c[f>>2]|0);c[(c[g>>2]|0)+36>>2]=0;sN();l=(c[h>>2]|0)+28|0;c[l>>2]=(c[l>>2]|0)+-1;if(!(c[(c[h>>2]|0)+28>>2]|0)){if((c[e>>2]|0)!=0?(c[(c[h>>2]|0)+12>>2]|0)>=0:0)Tb[c[7464>>2]&255](c[(c[h>>2]|0)+8>>2]|0)|0;tN(c[g>>2]|0)}uN();c[d>>2]=0;l=c[d>>2]|0;i=k;return l|0}function qN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;i=i+32|0;h=g+8|0;c[g+16>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;c[g+12>>2]=e;c[h>>2]=f;c[c[h>>2]>>2]=0;i=g;return 0}function rN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;i=i+16|0;c[f+12>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[f+8>>2]=e;i=f;return 0}function sN(){return}function tN(a){a=a|0;var b=0,d=0,f=0,g=0,h=0;h=i;i=i+16|0;b=h+12|0;g=h+8|0;f=h+4|0;d=h;c[b>>2]=a;c[g>>2]=c[(c[(c[b>>2]|0)+8>>2]|0)+20>>2];if(!(c[g>>2]|0)){i=h;return}if(c[(c[g>>2]|0)+28>>2]|0){i=h;return}c[f>>2]=vN()|0;c[d>>2]=0;while(1){a=c[g>>2]|0;if((c[d>>2]|0)>=(e[(c[g>>2]|0)+20>>1]|0|0))break;if((c[a+12>>2]|0)>=0)Yb[c[7548>>2]&255](c[(c[(c[g>>2]|0)+24>>2]|0)+(c[d>>2]<<2)>>2]|0,c[(c[g>>2]|0)+16>>2]|0)|0;else Kd(c[(c[(c[g>>2]|0)+24>>2]|0)+(c[d>>2]<<2)>>2]|0);c[d>>2]=(c[d>>2]|0)+(c[f>>2]|0)}Kd(c[a+24>>2]|0);if((c[(c[g>>2]|0)+12>>2]|0)>=0){wN(c[b>>2]|0,c[(c[g>>2]|0)+12>>2]|0,31469);c[(c[g>>2]|0)+12>>2]=-1}c[(c[c[g>>2]>>2]|0)+20>>2]=0;Kd(c[g>>2]|0);i=h;return}function uN(){return}function vN(){var a=0,b=0,d=0,e=0;e=i;i=i+16|0;a=e+8|0;d=e+4|0;b=e;c[d>>2]=32768;c[b>>2]=Pb[c[7572>>2]&255]()|0;if((c[b>>2]|0)<(c[d>>2]|0)){c[a>>2]=1;d=c[a>>2]|0;i=e;return d|0}else{c[a>>2]=(c[b>>2]|0)/(c[d>>2]|0)|0;d=c[a>>2]|0;i=e;return d|0}return 0}function wN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;h=g+4|0;f=g;c[e>>2]=a;c[h>>2]=b;c[f>>2]=d;if(!(Tb[c[7284>>2]&255](c[h>>2]|0)|0)){i=g;return}if(c[e>>2]|0)e=c[(c[e>>2]|0)+32>>2]|0;else e=0;xN(4106,45534,e,c[f>>2]|0)|0;i=g;return}function xN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;l=n;f=n+40|0;g=n+36|0;h=n+32|0;j=n+28|0;m=n+24|0;k=n+20|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=c[(SP()|0)>>2];c[m>>2]=TP(c[k>>2]|0)|0;if(!(c[h>>2]|0))c[h>>2]=19266;d=c[f>>2]|0;a=c[k>>2]|0;k=c[g>>2]|0;e=c[h>>2]|0;b=c[m>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=a;c[l+8>>2]=k;c[l+12>>2]=e;c[l+16>>2]=b;Rd(d,45540,l);i=n;return c[f>>2]|0}function yN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e;j=e+12|0;h=e+8|0;g=e+4|0;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;d=c[j>>2]|0;a=c[h>>2]|0;c[f>>2]=c[g>>2];a=VP(d,a,f)|0;i=e;return a|0}function zN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+544|0;l=k;e=k+20|0;m=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k+24|0;c[m>>2]=b;c[f>>2]=d;c[g>>2]=-1;c[l>>2]=c[m>>2];Qd(512,j,19255,l)|0;c[h>>2]=BQ(j)|0;while(1){if((c[h>>2]|0)<=0)break;if((a[j+(c[h>>2]|0)>>0]|0)==47)break;c[h>>2]=(c[h>>2]|0)+-1}if((c[h>>2]|0)>0)a[j+(c[h>>2]|0)>>0]=0;else{if((a[j>>0]|0)!=47)a[j>>0]=46;a[j+1>>0]=0}c[g>>2]=BN(j,0,0)|0;c[c[f>>2]>>2]=c[g>>2];if((c[g>>2]|0)>=0){c[e>>2]=0;m=c[e>>2]|0;i=k;return m|0}else{c[e>>2]=xN(et(30807)|0,45675,j,30807)|0;m=c[e>>2]|0;i=k;return m|0}return 0}function AN(){return ib(30)|0}function BN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+112|0;l=m;e=m+100|0;f=m+96|0;g=m+92|0;h=m+88|0;j=m+84|0;k=m+8|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=(c[g>>2]|0)!=0?c[g>>2]|0:420;while(1){c[h>>2]=Ob[c[7272>>2]&255](c[e>>2]|0,c[f>>2]|524288,c[j>>2]|0)|0;if((c[h>>2]|0)<0)if((c[(SP()|0)>>2]|0)==4)continue;else break;if((c[h>>2]|0)>=3)break;Tb[c[7284>>2]&255](c[h>>2]|0)|0;a=c[h>>2]|0;c[l>>2]=c[e>>2];c[l+4>>2]=a;Rd(28,45762,l);c[h>>2]=-1;if((Ob[c[7272>>2]&255](45805,c[f>>2]|0,c[g>>2]|0)|0)<0)break}if(!((c[h>>2]|0)>=0&(c[g>>2]|0)!=0)){a=c[h>>2]|0;i=m;return a|0}if(Yb[c[7332>>2]&255](c[h>>2]|0,k)|0){a=c[h>>2]|0;i=m;return a|0}if(c[k+36>>2]|0){a=c[h>>2]|0;i=m;return a|0}if((c[k+12>>2]&511|0)==(c[g>>2]|0)){a=c[h>>2]|0;i=m;return a|0}Yb[c[7440>>2]&255](c[h>>2]|0,c[g>>2]|0)|0;a=c[h>>2]|0;i=m;return a|0}function CN(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;n=o;p=o+40|0;g=o+36|0;h=o+32|0;j=o+28|0;l=o+24|0;k=o+8|0;m=o+4|0;c[p>>2]=a;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[m>>2]=0;c[l>>2]=c[(c[(c[p>>2]|0)+8>>2]|0)+20>>2];if((c[(c[l>>2]|0)+12>>2]|0)<0){p=c[m>>2]|0;i=o;return p|0}c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;b[k>>1]=c[g>>2];b[k+2>>1]=0;c[k+4>>2]=c[h>>2];c[k+8>>2]=c[j>>2];a=c[1839]|0;p=c[(c[l>>2]|0)+12>>2]|0;c[n>>2]=k;c[m>>2]=Ob[a&255](p,13,n)|0;c[m>>2]=(c[m>>2]|0)!=-1?0:5;p=c[m>>2]|0;i=o;return p|0}function DN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+128|0;e=n+112|0;f=n+108|0;g=n+16|0;l=n+8|0;h=n+32|0;k=n+28|0;m=n+24|0;j=n;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a:do if((c[(c[f>>2]|0)+40>>2]|0)>0){if(Yb[c[7332>>2]&255](c[(c[f>>2]|0)+12>>2]|0,h)|0){c[e>>2]=1802;a=c[e>>2]|0;i=n;return a|0}b=c[(c[f>>2]|0)+40>>2]|0;b=gR(c[g>>2]|0,c[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;b=fR(b|0,C|0,1,0)|0;g=c[(c[f>>2]|0)+40>>2]|0;g=pR(b|0,C|0,g|0,((g|0)<0)<<31>>31|0)|0;b=c[(c[f>>2]|0)+40>>2]|0;b=rR(g|0,C|0,b|0,((b|0)<0)<<31>>31|0)|0;g=l;c[g>>2]=b;c[g+4>>2]=C;g=l;b=c[g+4>>2]|0;a=c[h+36>>2]|0;d=((a|0)<0)<<31>>31;if((b|0)>(d|0)|((b|0)==(d|0)?(c[g>>2]|0)>>>0>a>>>0:0)){c[k>>2]=c[h+40>>2];c[m>>2]=0;h=_((c[h+36>>2]|0)/(c[k>>2]|0)|0,c[k>>2]|0)|0;h=h+(c[k>>2]|0)-1|0;a=j;c[a>>2]=h;c[a+4>>2]=((h|0)<0)<<31>>31;while(1){d=j;h=c[d>>2]|0;d=c[d+4>>2]|0;g=l;a=c[k>>2]|0;a=gR(c[g>>2]|0,c[g+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=fR(a|0,C|0,1,0)|0;g=C;if(!((d|0)<(g|0)|(d|0)==(g|0)&h>>>0>>0))break a;h=j;d=c[h+4>>2]|0;a=l;g=c[a+4>>2]|0;if((d|0)>(g|0)|((d|0)==(g|0)?(c[h>>2]|0)>>>0>=(c[a>>2]|0)>>>0:0)){h=l;h=fR(c[h>>2]|0,c[h+4>>2]|0,1,0)|0;a=j;c[a>>2]=h;c[a+4>>2]=C}a=j;c[m>>2]=IN(c[f>>2]|0,c[a>>2]|0,c[a+4>>2]|0,19266,1)|0;if((c[m>>2]|0)!=1)break;h=c[k>>2]|0;a=j;h=gR(c[a>>2]|0,c[a+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0;a=j;c[a>>2]=h;c[a+4>>2]=C}c[e>>2]=778;a=c[e>>2]|0;i=n;return a|0}}while(0);c[e>>2]=0;a=c[e>>2]|0;i=n;return a|0}function EN(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;m=i;i=i+16|0;k=m+4|0;j=m+8|0;l=m;c[k>>2]=f;a[j>>0]=g;c[l>>2]=h;if((c[c[l>>2]>>2]|0)<0){c[c[l>>2]>>2]=((e[(c[k>>2]|0)+18>>1]|0)&(d[j>>0]|0)|0)!=0&1;i=m;return}j=d[j>>0]|0;if(!(c[c[l>>2]>>2]|0)){l=(c[k>>2]|0)+18|0;b[l>>1]=(e[l>>1]|0)&~j;i=m;return}else{l=(c[k>>2]|0)+18|0;b[l>>1]=e[l>>1]|0|j;i=m;return}}function FN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+64|0;j=m+8|0;l=m+48|0;e=m+44|0;f=m+40|0;k=m+36|0;g=m+32|0;h=m;c[e>>2]=b;c[f>>2]=d;c[g>>2]=0;c[k>>2]=HN()|0;while(1){Sd(8,h);a[(c[f>>2]|0)+((c[e>>2]|0)-2)>>0]=0;b=c[e>>2]|0;d=c[f>>2]|0;o=h;p=c[o>>2]|0;o=c[o+4>>2]|0;c[j>>2]=c[k>>2];n=j+8|0;c[n>>2]=p;c[n+4>>2]=o;c[j+16>>2]=0;Qd(b,d,45815,j)|0;if(a[(c[f>>2]|0)+((c[e>>2]|0)-2)>>0]|0){e=4;break}p=c[g>>2]|0;c[g>>2]=p+1;if((p|0)>10){e=4;break}if(Yb[c[7296>>2]&255](c[f>>2]|0,0)|0){e=6;break}}if((e|0)==4){c[l>>2]=1;p=c[l>>2]|0;i=m;return p|0}else if((e|0)==6){c[l>>2]=0;p=c[l>>2]|0;i=m;return p|0}return 0}function GN(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+80|0;b=e+76|0;d=e;c[b>>2]=a;if(!(c[(c[b>>2]|0)+8>>2]|0)){a=0;a=a&1;i=e;return a|0}if(Yb[c[7320>>2]&255](c[(c[b>>2]|0)+32>>2]|0,d)|0){a=1;a=a&1;i=e;return a|0}a=(c[d+72>>2]|0)!=(c[(c[(c[b>>2]|0)+8>>2]|0)+4>>2]|0);a=a&1;i=e;return a|0}function HN(){var a=0,b=0,d=0,e=0,f=0;e=i;i=i+96|0;b=e+80|0;a=e+4|0;d=e;c[d>>2]=c[241];if(!(c[1901]|0))c[1901]=rb(45832)|0;if(!(c[1902]|0))c[1902]=rb(45846)|0;c[b>>2]=0;while(1){if((c[b>>2]|0)>>>0>=6){a=12;break}if((((c[d>>2]|0)!=0?(Yb[c[7320>>2]&255](c[d>>2]|0,a)|0)==0:0)?(c[a+12>>2]&61440|0)==16384:0)?(Yb[c[7296>>2]&255](c[d>>2]|0,7)|0)==0:0){a=12;break}f=c[b>>2]|0;c[b>>2]=f+1;c[d>>2]=c[7604+(f<<2)>>2]}if((a|0)==12){i=e;return c[d>>2]|0}return 0}function IN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;h=g+16|0;l=g;k=g+12|0;j=g+8|0;c[h>>2]=a;a=l;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;c[j>>2]=f;e=l;e=JN(c[(c[h>>2]|0)+12>>2]|0,c[e>>2]|0,c[e+4>>2]|0,c[k>>2]|0,c[j>>2]|0,(c[h>>2]|0)+20|0)|0;i=g;return e|0}function JN(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;h=q+32|0;j=q+8|0;k=q+28|0;l=q+24|0;m=q+20|0;o=q+16|0;n=q;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[o>>2]=0;c[l>>2]=c[l>>2]&131071;do{e=MQ(c[h>>2]|0,c[j>>2]|0,0)|0;g=n;c[g>>2]=e;c[g+4>>2]=((e|0)<0)<<31>>31;if((c[n+4>>2]|0)<0){p=3;break}c[o>>2]=Ob[c[7404>>2]&255](c[h>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;if((c[o>>2]|0)>=0)break}while((c[(SP()|0)>>2]|0)==4);if((p|0)==3)c[o>>2]=-1;if((c[o>>2]|0)>=0){p=c[o>>2]|0;i=q;return p|0}p=c[(SP()|0)>>2]|0;c[c[m>>2]>>2]=p;p=c[o>>2]|0;i=q;return p|0}function KN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[(c[e>>2]|0)+20>>2]=c[f>>2];i=d;return}function LN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[g>>2]=a;c[e>>2]=b;switch(c[g>>2]|0){ -case 37:case 4:case 16:case 110:case 11:case 13:{c[d>>2]=5;break}case 1:{c[d>>2]=3;break}default:c[d>>2]=c[e>>2]}i=f;return c[d>>2]|0}function MN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+16|0;g=f+12|0;e=f;c[g>>2]=a;c[f+8>>2]=b;c[f+4>>2]=d;c[e>>2]=HQ(c[g>>2]|0)|0;i=f;return c[e>>2]|0}function NN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h;g=h+8|0;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;while(1){c[g>>2]=Yb[c[7344>>2]&255](c[e>>2]|0,c[f>>2]|0)|0;if((c[g>>2]|0)>=0){b=4;break}if((c[(SP()|0)>>2]|0)!=4){b=4;break}}if((b|0)==4){i=h;return c[g>>2]|0}return 0}function ON(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+36|0;h=q+32|0;j=q+8|0;k=q+28|0;l=q+24|0;m=q+20|0;o=q+16|0;n=q;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;c[l>>2]=f;c[o>>2]=0;do{a=MQ(c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,0)|0;e=n;c[e>>2]=a;c[e+4>>2]=((a|0)<0)<<31>>31;if((c[n+4>>2]|0)<0){p=3;break}c[m>>2]=Ob[c[7368>>2]&255](c[(c[h>>2]|0)+12>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;if((c[m>>2]|0)==(c[l>>2]|0))break;if((c[m>>2]|0)>=0){if((c[m>>2]|0)>0){c[l>>2]=(c[l>>2]|0)-(c[m>>2]|0);a=c[m>>2]|0;e=j;a=gR(c[e>>2]|0,c[e+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;e=j;c[e>>2]=a;c[e+4>>2]=C;c[o>>2]=(c[o>>2]|0)+(c[m>>2]|0);c[k>>2]=(c[k>>2]|0)+(c[m>>2]|0)}}else{if((c[(SP()|0)>>2]|0)!=4){p=8;break}c[m>>2]=1}}while((c[m>>2]|0)>0);if((p|0)==3){p=c[h>>2]|0;KN(p,c[(SP()|0)>>2]|0);c[g>>2]=-1;p=c[g>>2]|0;i=q;return p|0}else if((p|0)==8){c[o>>2]=0;p=c[h>>2]|0;KN(p,c[(SP()|0)>>2]|0)}c[g>>2]=(c[m>>2]|0)+(c[o>>2]|0);p=c[g>>2]|0;i=q;return p|0}function PN(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];if((c[(c[b>>2]|0)+12>>2]|0)>=0){wN(c[b>>2]|0,c[(c[b>>2]|0)+12>>2]|0,29216);c[(c[b>>2]|0)+12>>2]=-1}Kd(c[(c[b>>2]|0)+28>>2]|0);a=c[b>>2]|0;b=a+44|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));i=d;return 0}function QN(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 7628}function RN(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=PN(c[d>>2]|0)|0;i=b;return a|0}function SN(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function TN(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function UN(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[d+4>>2]=a;c[e>>2]=b;c[c[e>>2]>>2]=0;i=d;return 0}function VN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;m=n;f=n+24|0;g=n+20|0;h=n+16|0;j=n+12|0;l=n+8|0;k=n+4|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[l>>2]=If(c[g>>2]|0)|0;c[k>>2]=0;do if((a[c[g>>2]>>0]|0)!=47){if(Yb[c[7308>>2]&255](c[h>>2]|0,(c[j>>2]|0)-2|0)|0){c[k>>2]=If(c[h>>2]|0)|0;b=c[k>>2]|0;c[k>>2]=b+1;a[(c[h>>2]|0)+b>>0]=47;break}b=et(33245)|0;c[f>>2]=xN(b,45576,c[g>>2]|0,33245)|0;b=c[f>>2]|0;i=n;return b|0}while(0);if(((c[k>>2]|0)+(c[l>>2]|0)+1|0)>(c[j>>2]|0)){a[(c[h>>2]|0)+(c[k>>2]|0)>>0]=0;c[f>>2]=et(33254)|0;b=c[f>>2]|0;i=n;return b|0}else{d=(c[j>>2]|0)-(c[k>>2]|0)|0;b=(c[h>>2]|0)+(c[k>>2]|0)|0;c[m>>2]=c[g>>2];Qd(d,b,19255,m)|0;c[f>>2]=0;b=c[f>>2]|0;i=n;return b|0}return 0}function WN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+96|0;k=j+92|0;d=j+88|0;f=j+84|0;h=j+8|0;e=j+4|0;g=j;c[k>>2]=a;c[d>>2]=b;c[f>>2]=0;if(Yb[c[7320>>2]&255](c[k>>2]|0,h)|0){k=c[f>>2]|0;i=j;return k|0}sN();c[e>>2]=c[1946];while(1){if(c[e>>2]|0)if((c[c[e>>2]>>2]|0)!=(c[h>>2]|0))a=1;else a=(c[(c[e>>2]|0)+4>>2]|0)!=(c[h+72>>2]|0);else a=0;b=c[e>>2]|0;if(!a)break;c[e>>2]=c[b+32>>2]}if(b){c[g>>2]=(c[e>>2]|0)+28;while(1){if(!(c[c[g>>2]>>2]|0))break;if((c[(c[c[g>>2]>>2]|0)+4>>2]|0)==(c[d>>2]|0))break;c[g>>2]=(c[c[g>>2]>>2]|0)+8}c[f>>2]=c[c[g>>2]>>2];if(c[f>>2]|0)c[c[g>>2]>>2]=c[(c[f>>2]|0)+8>>2]}uN();k=c[f>>2]|0;i=j;return k|0}function XN(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+624|0;h=r+100|0;j=r+96|0;k=r+92|0;l=r+88|0;m=r+84|0;o=r+80|0;q=r+104|0;n=r+76|0;p=r;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[o>>2]=0;c[c[k>>2]>>2]=0;c[c[l>>2]>>2]=0;c[c[m>>2]>>2]=0;if(!(c[j>>2]&526336)){if(!(c[j>>2]&8)){b=c[o>>2]|0;i=r;return b|0}c[c[k>>2]>>2]=384;b=c[o>>2]|0;i=r;return b|0}c[n>>2]=(If(c[h>>2]|0)|0)-1;while(1){if((a[(c[h>>2]|0)+(c[n>>2]|0)>>0]|0)==45)break;c[n>>2]=(c[n>>2]|0)+-1}iR(q|0,c[h>>2]|0,c[n>>2]|0)|0;a[q+(c[n>>2]|0)>>0]=0;if(!(Yb[c[7320>>2]&255](q,p)|0)){c[c[k>>2]>>2]=c[p+12>>2]&511;c[c[l>>2]>>2]=c[p+20>>2];c[c[m>>2]>>2]=c[p+24>>2];b=c[o>>2]|0;i=r;return b|0}else{c[o>>2]=1802;b=c[o>>2]|0;i=r;return b|0}return 0}function YN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(Pb[c[7524>>2]&255]()|0){b=0;i=h;return b|0}b=Ob[c[7512>>2]&255](c[e>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;i=h;return b|0}function ZN(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+48|0;r=t;j=t+40|0;k=t+36|0;u=t+32|0;l=t+28|0;m=t+24|0;o=t+20|0;p=t+16|0;q=t+12|0;s=t+8|0;n=t+4|0;c[j>>2]=a;c[k>>2]=d;c[u>>2]=f;c[l>>2]=g;c[m>>2]=h;c[p>>2]=c[u>>2];c[q>>2]=0;c[(c[p>>2]|0)+12>>2]=c[k>>2];c[(c[p>>2]|0)+4>>2]=c[j>>2];c[(c[p>>2]|0)+32>>2]=c[l>>2];b[(c[p>>2]|0)+18>>1]=c[m>>2]&255;if(Hf((c[m>>2]&64|0)!=0?c[l>>2]|0:0,45908,1)|0){u=(c[p>>2]|0)+18|0;b[u>>1]=e[u>>1]|0|16}if(!(yQ(c[(c[j>>2]|0)+16>>2]|0,45524)|0)){u=(c[p>>2]|0)+18|0;b[u>>1]=e[u>>1]|0|1}if(c[m>>2]&128)c[o>>2]=7628;else c[o>>2]=Yb[c[c[(c[j>>2]|0)+20>>2]>>2]&255](c[l>>2]|0,c[p>>2]|0)|0;if((c[o>>2]|0)!=7708){if((c[o>>2]|0)==7192){c[n>>2]=(BQ(c[l>>2]|0)|0)+6;u=c[n>>2]|0;c[s>>2]=Jd(u,((u|0)<0)<<31>>31)|0;if(!(c[s>>2]|0))c[q>>2]=7;else{g=c[n>>2]|0;u=c[s>>2]|0;c[r>>2]=c[l>>2];Qd(g,u,45913,r)|0}c[(c[p>>2]|0)+24>>2]=c[s>>2]}}else{sN();c[q>>2]=_N(c[p>>2]|0,(c[p>>2]|0)+8|0)|0;if(c[q>>2]|0){wN(c[p>>2]|0,c[k>>2]|0,32585);c[k>>2]=-1}uN()}KN(c[p>>2]|0,0);if(!(c[q>>2]|0)){c[c[p>>2]>>2]=c[o>>2];$N(c[p>>2]|0);u=c[q>>2]|0;i=t;return u|0}if((c[k>>2]|0)<0){u=c[q>>2]|0;i=t;return u|0}wN(c[p>>2]|0,c[k>>2]|0,32670);u=c[q>>2]|0;i=t;return u|0}function _N(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+112|0;f=k+104|0;d=k+100|0;g=k+96|0;l=k+92|0;m=k+88|0;h=k+80|0;e=k+4|0;j=k;c[d>>2]=a;c[g>>2]=b;c[j>>2]=0;c[m>>2]=c[(c[d>>2]|0)+12>>2];c[l>>2]=Yb[c[7332>>2]&255](c[m>>2]|0,e)|0;if(c[l>>2]|0){m=c[d>>2]|0;KN(m,c[(SP()|0)>>2]|0);if((c[(c[d>>2]|0)+20>>2]|0)==75){c[f>>2]=22;m=c[f>>2]|0;i=k;return m|0}else{c[f>>2]=10;m=c[f>>2]|0;i=k;return m|0}}c[h>>2]=0;c[h+4>>2]=0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+72>>2];c[j>>2]=c[1946];while(1){if(c[j>>2]|0)a=(vQ(h,c[j>>2]|0,8)|0)!=0;else a=0;d=c[j>>2]|0;if(!a)break;c[j>>2]=c[d+32>>2]}if(!d){c[j>>2]=Jd(40,0)|0;if(!(c[j>>2]|0)){c[f>>2]=7;m=c[f>>2]|0;i=k;return m|0}d=c[j>>2]|0;a=d+40|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));m=c[j>>2]|0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[(c[j>>2]|0)+16>>2]=1;c[(c[j>>2]|0)+32>>2]=c[1946];c[(c[j>>2]|0)+36>>2]=0;if(c[1946]|0)c[(c[1946]|0)+36>>2]=c[j>>2];c[1946]=c[j>>2]}else{m=(c[j>>2]|0)+16|0;c[m>>2]=(c[m>>2]|0)+1}c[c[g>>2]>>2]=c[j>>2];c[f>>2]=0;m=c[f>>2]|0;i=k;return m|0}function $N(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+112|0;j=k+24|0;h=k+16|0;d=k+8|0;b=k;f=k+108|0;g=k+32|0;l=k+28|0;c[f>>2]=a;c[l>>2]=Yb[c[7332>>2]&255](c[(c[f>>2]|0)+12>>2]|0,g)|0;if(c[l>>2]|0){c[b>>2]=c[(c[f>>2]|0)+32>>2];Rd(28,45921,b);i=k;return}if((c[g+16>>2]|0)==0?((e[(c[f>>2]|0)+18>>1]|0)&32|0)==0:0){c[d>>2]=c[(c[f>>2]|0)+32>>2];Rd(28,45945,d);i=k;return}a=c[f>>2]|0;if((c[g+16>>2]|0)>>>0>1){c[h>>2]=c[a+32>>2];Rd(28,45974,h);i=k;return}if(!(GN(a)|0)){i=k;return}c[j>>2]=c[(c[f>>2]|0)+32>>2];Rd(28,46001,j);i=k;return}function aO(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f+4|0;d=f;c[b>>2]=a;c[e>>2]=0;c[d>>2]=c[b>>2];$N(c[d>>2]|0);cO(c[b>>2]|0,0)|0;sN();if((c[(c[d>>2]|0)+8>>2]|0)!=0?(c[(c[(c[d>>2]|0)+8>>2]|0)+24>>2]|0)!=0:0)jO(c[d>>2]|0);kO(c[d>>2]|0);c[e>>2]=PN(c[b>>2]|0)|0;uN();i=f;return c[e>>2]|0}function bO(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;k=p+44|0;q=p+40|0;l=p+36|0;o=p+32|0;m=p+28|0;n=p+24|0;h=p+8|0;j=p;c[q>>2]=e;c[l>>2]=f;c[o>>2]=0;c[m>>2]=c[q>>2];c[j>>2]=0;if((d[(c[m>>2]|0)+16>>0]|0|0)>=(c[l>>2]|0)){c[k>>2]=0;q=c[k>>2]|0;i=p;return q|0}sN();c[n>>2]=c[(c[m>>2]|0)+8>>2];if((d[(c[m>>2]|0)+16>>0]|0|0)!=(d[(c[n>>2]|0)+12>>0]|0|0)?(c[l>>2]|0)>1?1:(d[(c[n>>2]|0)+12>>0]|0|0)>=3:0)c[o>>2]=5;else g=6;a:do if((g|0)==6){do if((c[l>>2]|0)==1){if((d[(c[n>>2]|0)+12>>0]|0|0)!=1?(d[(c[n>>2]|0)+12>>0]|0|0)!=2:0)break;a[(c[m>>2]|0)+16>>0]=1;q=(c[n>>2]|0)+8|0;c[q>>2]=(c[q>>2]|0)+1;q=(c[n>>2]|0)+24|0;c[q>>2]=(c[q>>2]|0)+1;break a}while(0);c[h+8>>2]=1;b[h+2>>1]=0;if((c[l>>2]|0)!=1){if((c[l>>2]|0)==4?(d[(c[m>>2]|0)+16>>0]|0|0)<3:0)g=13}else g=13;if((g|0)==13?(b[h>>1]=(c[l>>2]|0)==1?0:1,c[h+4>>2]=c[381],(hO(c[m>>2]|0,h)|0)!=0):0){c[j>>2]=c[(SP()|0)>>2];c[o>>2]=LN(c[j>>2]|0,3850)|0;if((c[o>>2]|0)==5)break;KN(c[m>>2]|0,c[j>>2]|0);break}do if((c[l>>2]|0)!=1){if((c[l>>2]|0)==4?(c[(c[n>>2]|0)+8>>2]|0)>1:0){c[o>>2]=5;break}b[h>>1]=1;f=c[381]|0;if((c[l>>2]|0)==2){c[h+4>>2]=f+1;c[h+8>>2]=1}else{c[h+4>>2]=f+2;c[h+8>>2]=510}if((hO(c[m>>2]|0,h)|0)!=0?(c[j>>2]=c[(SP()|0)>>2],c[o>>2]=LN(c[j>>2]|0,3850)|0,(c[o>>2]|0)!=5):0)KN(c[m>>2]|0,c[j>>2]|0)}else{c[h+4>>2]=(c[381]|0)+2;c[h+8>>2]=510;if(hO(c[m>>2]|0,h)|0){c[j>>2]=c[(SP()|0)>>2];c[o>>2]=LN(c[j>>2]|0,3850)|0}c[h+4>>2]=c[381];c[h+8>>2]=1;b[h>>1]=2;q=(hO(c[m>>2]|0,h)|0)!=0;if(q&(c[o>>2]|0)==0){c[j>>2]=c[(SP()|0)>>2];c[o>>2]=2058}if(!(c[o>>2]|0)){a[(c[m>>2]|0)+16>>0]=1;q=(c[n>>2]|0)+24|0;c[q>>2]=(c[q>>2]|0)+1;c[(c[n>>2]|0)+8>>2]=1;break}if((c[o>>2]|0)==5)break a;KN(c[m>>2]|0,c[j>>2]|0);break a}while(0);f=c[l>>2]|0;if(!(c[o>>2]|0)){a[(c[m>>2]|0)+16>>0]=f;a[(c[n>>2]|0)+12>>0]=c[l>>2];break}if((f|0)==4){a[(c[m>>2]|0)+16>>0]=3;a[(c[n>>2]|0)+12>>0]=3}}while(0);uN();c[k>>2]=c[o>>2];q=c[k>>2]|0;i=p;return q|0}function cO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=gO(c[f>>2]|0,c[e>>2]|0,0)|0;i=d;return a|0}function dO(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+48|0;m=n;o=n+40|0;g=n+36|0;k=n+32|0;l=n+28|0;j=n+24|0;h=n+8|0;c[o>>2]=e;c[g>>2]=f;c[k>>2]=0;c[l>>2]=0;c[j>>2]=c[o>>2];sN();if((d[(c[(c[j>>2]|0)+8>>2]|0)+12>>0]|0)>1)c[l>>2]=1;do if((c[l>>2]|0)==0?(a[(c[(c[j>>2]|0)+8>>2]|0)+13>>0]|0)==0:0){b[h+2>>1]=0;c[h+4>>2]=(c[381]|0)+1;c[h+8>>2]=1;b[h>>1]=1;f=c[1839]|0;o=c[(c[j>>2]|0)+12>>2]|0;c[m>>2]=h;if(Ob[f&255](o,12,m)|0){c[k>>2]=3594;o=c[j>>2]|0;KN(o,c[(SP()|0)>>2]|0);break}if((b[h>>1]|0)!=2)c[l>>2]=1}while(0);uN();c[c[g>>2]>>2]=c[l>>2];i=n;return c[k>>2]|0}function eO(a,f,g,h,j){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=i;i=i+160|0;z=E+152|0;F=E+148|0;A=E+144|0;k=E+140|0;l=E+136|0;B=E+132|0;u=E+128|0;t=E+124|0;C=E+120|0;D=E+116|0;s=E+112|0;r=E+108|0;m=E+104|0;p=E+100|0;w=E+24|0;o=E+20|0;x=E+16|0;y=E+12|0;q=E+8|0;n=E+4|0;v=E;c[F>>2]=a;c[A>>2]=f;c[k>>2]=g;c[l>>2]=h;c[B>>2]=j;c[u>>2]=c[F>>2];c[D>>2]=0;c[s>>2]=vN()|0;if((c[(c[u>>2]|0)+36>>2]|0)==0?(c[D>>2]=fO(c[u>>2]|0)|0,(c[D>>2]|0)!=0):0){c[z>>2]=c[D>>2];F=c[z>>2]|0;i=E;return F|0}c[t>>2]=c[(c[u>>2]|0)+36>>2];c[C>>2]=c[c[t>>2]>>2];c[r>>2]=_(((c[A>>2]|0)+(c[s>>2]|0)|0)/(c[s>>2]|0)|0,c[s>>2]|0)|0;a:do if((e[(c[C>>2]|0)+20>>1]|0|0)<(c[r>>2]|0)){c[p>>2]=_(c[r>>2]|0,c[k>>2]|0)|0;c[(c[C>>2]|0)+16>>2]=c[k>>2];b:do if((c[(c[C>>2]|0)+12>>2]|0)>=0){if(Yb[c[7332>>2]&255](c[(c[C>>2]|0)+12>>2]|0,w)|0){c[D>>2]=4874;break a}if((c[w+36>>2]|0)<(c[p>>2]|0)){if(!(c[l>>2]|0))break a;c[o>>2]=(c[w+36>>2]|0)/4096|0;while(1){if((c[o>>2]|0)>=((c[p>>2]|0)/4096|0|0))break b;c[x>>2]=0;F=(c[o>>2]<<12)+4096-1|0;if((JN(c[(c[C>>2]|0)+12>>2]|0,F,((F|0)<0)<<31>>31,19266,1,x)|0)!=1)break;c[o>>2]=(c[o>>2]|0)+1}c[y>>2]=c[(c[C>>2]|0)+8>>2];c[D>>2]=xN(4874,45629,c[y>>2]|0,31732)|0;break a}}while(0);c[m>>2]=Ld(c[(c[C>>2]|0)+24>>2]|0,c[r>>2]<<2)|0;if(!(c[m>>2]|0)){c[D>>2]=3082;break}c[(c[C>>2]|0)+24>>2]=c[m>>2];while(1){if((e[(c[C>>2]|0)+20>>1]|0|0)>=(c[r>>2]|0))break a;c[q>>2]=_(c[k>>2]|0,c[s>>2]|0)|0;if((c[(c[C>>2]|0)+12>>2]|0)>=0){w=c[1884]|0;g=c[q>>2]|0;x=(d[(c[C>>2]|0)+22>>0]|0|0)!=0?1:3;y=c[(c[C>>2]|0)+12>>2]|0;F=c[k>>2]|0;F=rR(F|0,((F|0)<0)<<31>>31|0,e[(c[C>>2]|0)+20>>1]|0|0,0)|0;c[v>>2]=Sb[w&255](0,g,x,1,y,F)|0;if((c[v>>2]|0)==(-1|0)){k=21;break}}else{F=c[k>>2]|0;c[v>>2]=Jd(F,((F|0)<0)<<31>>31)|0;if(!(c[v>>2]|0)){k=23;break}kR(c[v>>2]|0,0,c[k>>2]|0)|0}c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[s>>2]|0))break;F=_(c[k>>2]|0,c[n>>2]|0)|0;c[(c[(c[C>>2]|0)+24>>2]|0)+((e[(c[C>>2]|0)+20>>1]|0)+(c[n>>2]|0)<<2)>>2]=(c[v>>2]|0)+F;c[n>>2]=(c[n>>2]|0)+1}F=(c[C>>2]|0)+20|0;b[F>>1]=(e[F>>1]|0)+(c[s>>2]|0)}if((k|0)==21){c[D>>2]=xN(5386,45716,c[(c[C>>2]|0)+8>>2]|0,31759)|0;break}else if((k|0)==23){c[D>>2]=7;break}}while(0);if((e[(c[C>>2]|0)+20>>1]|0|0)>(c[A>>2]|0))c[c[B>>2]>>2]=c[(c[(c[C>>2]|0)+24>>2]|0)+(c[A>>2]<<2)>>2];else c[c[B>>2]>>2]=0;if((c[D>>2]|0)==0?(d[(c[C>>2]|0)+22>>0]|0|0)!=0:0)c[D>>2]=8;c[z>>2]=c[D>>2];F=c[z>>2]|0;i=E;return F|0}function fO(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+128|0;o=r;e=r+116|0;f=r+112|0;j=r+108|0;l=r+104|0;m=r+100|0;k=r+96|0;q=r+92|0;g=r+88|0;n=r+12|0;p=r+8|0;h=r+4|0;c[f>>2]=b;c[j>>2]=0;c[j>>2]=Jd(16,0)|0;if(!(c[j>>2]|0)){c[e>>2]=7;q=c[e>>2]|0;i=r;return q|0}b=c[j>>2]|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;sN();c[k>>2]=c[(c[f>>2]|0)+8>>2];c[l>>2]=c[(c[k>>2]|0)+20>>2];a:do if(!(c[l>>2]|0)){c[p>>2]=c[(c[f>>2]|0)+32>>2];do if(!(Yb[c[7332>>2]&255](c[(c[f>>2]|0)+12>>2]|0,n)|0)){c[g>>2]=6+(BQ(c[p>>2]|0)|0);c[l>>2]=Jd(36+(c[g>>2]|0)|0,0)|0;if(!(c[l>>2]|0)){c[m>>2]=7;break}kR(c[l>>2]|0,0,36+(c[g>>2]|0)|0)|0;b=(c[l>>2]|0)+36|0;c[(c[l>>2]|0)+8>>2]=b;c[q>>2]=b;g=c[g>>2]|0;b=c[q>>2]|0;c[o>>2]=c[p>>2];Qd(g,b,46029,o)|0;c[(c[l>>2]|0)+12>>2]=-1;c[(c[(c[f>>2]|0)+8>>2]|0)+20>>2]=c[l>>2];c[c[l>>2]>>2]=c[(c[f>>2]|0)+8>>2];c[(c[l>>2]|0)+4>>2]=8;if(!(c[(c[l>>2]|0)+4>>2]|0)){c[m>>2]=7;break}if(d[(c[k>>2]|0)+13>>0]|0)break a;c[h>>2]=66;if(Hf(c[(c[f>>2]|0)+32>>2]|0,46036,0)|0){c[h>>2]=0;a[(c[l>>2]|0)+22>>0]=1}p=BN(c[q>>2]|0,c[h>>2]|0,c[n+12>>2]&511)|0;c[(c[l>>2]|0)+12>>2]=p;if((c[(c[l>>2]|0)+12>>2]|0)<0){p=et(31584)|0;c[m>>2]=xN(p,45571,c[q>>2]|0,31584)|0;break}YN(c[(c[l>>2]|0)+12>>2]|0,c[n+20>>2]|0,c[n+24>>2]|0)|0;c[m>>2]=0;if((CN(c[f>>2]|0,1,128,1)|0)==0?(NN(c[(c[l>>2]|0)+12>>2]|0,0,0)|0)!=0:0)c[m>>2]=xN(4618,45594,c[q>>2]|0,31600)|0;if(!(c[m>>2]|0))c[m>>2]=CN(c[f>>2]|0,0,128,1)|0;if(!(c[m>>2]|0))break a}else c[m>>2]=1802;while(0);tN(c[f>>2]|0);Kd(c[j>>2]|0);uN();c[e>>2]=c[m>>2];q=c[e>>2]|0;i=r;return q|0}while(0);c[c[j>>2]>>2]=c[l>>2];q=(c[l>>2]|0)+28|0;c[q>>2]=(c[q>>2]|0)+1;c[(c[f>>2]|0)+36>>2]=c[j>>2];uN();c[(c[j>>2]|0)+4>>2]=c[(c[l>>2]|0)+32>>2];c[(c[l>>2]|0)+32>>2]=c[j>>2];c[e>>2]=0;q=c[e>>2]|0;i=r;return q|0}function gO(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+48|0;h=p+44|0;q=p+40|0;j=p+36|0;l=p+28|0;m=p+24|0;k=p+8|0;n=p;c[q>>2]=e;c[j>>2]=f;c[p+32>>2]=g;c[l>>2]=c[q>>2];c[n>>2]=0;if((d[(c[l>>2]|0)+16>>0]|0|0)<=(c[j>>2]|0)){c[h>>2]=0;q=c[h>>2]|0;i=p;return q|0}sN();c[m>>2]=c[(c[l>>2]|0)+8>>2];do if((d[(c[l>>2]|0)+16>>0]|0|0)>1){if((c[j>>2]|0)==1?(b[k>>1]=0,b[k+2>>1]=0,c[k+4>>2]=(c[381]|0)+2,c[k+8>>2]=510,(hO(c[l>>2]|0,k)|0)!=0):0){c[n>>2]=2314;q=c[l>>2]|0;KN(q,c[(SP()|0)>>2]|0);break}b[k>>1]=2;b[k+2>>1]=0;c[k+4>>2]=c[381];c[k+8>>2]=2;if(!(hO(c[l>>2]|0,k)|0)){a[(c[m>>2]|0)+12>>0]=1;o=10;break}else{c[n>>2]=2058;q=c[l>>2]|0;KN(q,c[(SP()|0)>>2]|0);break}}else o=10;while(0);if((o|0)==10?(c[j>>2]|0)==0:0){q=(c[m>>2]|0)+8|0;c[q>>2]=(c[q>>2]|0)+-1;do if(!(c[(c[m>>2]|0)+8>>2]|0)){b[k>>1]=2;b[k+2>>1]=0;c[k+8>>2]=0;c[k+4>>2]=0;if(!(hO(c[l>>2]|0,k)|0)){a[(c[m>>2]|0)+12>>0]=0;break}else{c[n>>2]=2058;q=c[l>>2]|0;KN(q,c[(SP()|0)>>2]|0);a[(c[m>>2]|0)+12>>0]=0;a[(c[l>>2]|0)+16>>0]=0;break}}while(0);q=(c[m>>2]|0)+24|0;c[q>>2]=(c[q>>2]|0)+-1;if(!(c[(c[m>>2]|0)+24>>2]|0))iO(c[l>>2]|0)}uN();if(!(c[n>>2]|0))a[(c[l>>2]|0)+16>>0]=c[j>>2];c[h>>2]=c[n>>2];q=c[h>>2]|0;i=p;return q|0}function hO(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+64|0;p=q+8|0;o=q;h=q+48|0;j=q+44|0;k=q+40|0;n=q+36|0;m=q+32|0;l=q+16|0;c[j>>2]=f;c[k>>2]=g;c[m>>2]=c[(c[j>>2]|0)+8>>2];do if(((e[(c[j>>2]|0)+18>>1]|0)&3|0)==1){if(d[(c[m>>2]|0)+13>>0]|0){c[n>>2]=0;break}b[l+2>>1]=0;c[l+4>>2]=(c[381]|0)+2;c[l+8>>2]=510;b[l>>1]=1;g=c[1839]|0;p=c[(c[j>>2]|0)+12>>2]|0;c[o>>2]=l;c[n>>2]=Ob[g&255](p,13,o)|0;if((c[n>>2]|0)>=0){a[(c[m>>2]|0)+13>>0]=1;p=(c[m>>2]|0)+24|0;c[p>>2]=(c[p>>2]|0)+1;break}c[h>>2]=c[n>>2];p=c[h>>2]|0;i=q;return p|0}else{g=c[1839]|0;o=c[(c[j>>2]|0)+12>>2]|0;c[p>>2]=c[k>>2];c[n>>2]=Ob[g&255](o,13,p)|0}while(0);c[h>>2]=c[n>>2];p=c[h>>2]|0;i=q;return p|0}function iO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;e=g+8|0;d=g+4|0;f=g;c[b>>2]=a;c[e>>2]=c[(c[b>>2]|0)+8>>2];c[d>>2]=c[(c[e>>2]|0)+28>>2];while(1){if(!(c[d>>2]|0))break;c[f>>2]=c[(c[d>>2]|0)+8>>2];wN(c[b>>2]|0,c[c[d>>2]>>2]|0,28492);Kd(c[d>>2]|0);c[d>>2]=c[f>>2]}c[(c[e>>2]|0)+28>>2]=0;i=g;return}function jO(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+8|0;e=b+4|0;f=b;c[d>>2]=a;c[e>>2]=c[(c[d>>2]|0)+8>>2];c[f>>2]=c[(c[d>>2]|0)+28>>2];c[(c[f>>2]|0)+8>>2]=c[(c[e>>2]|0)+28>>2];c[(c[e>>2]|0)+28>>2]=c[f>>2];c[(c[d>>2]|0)+12>>2]=-1;c[(c[d>>2]|0)+28>>2]=0;i=b;return}function kO(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+8>>2];if(!(c[d>>2]|0)){i=e;return}a=(c[d>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+-1;if(c[(c[d>>2]|0)+16>>2]|0){i=e;return}iO(c[b>>2]|0);b=c[(c[d>>2]|0)+32>>2]|0;if(c[(c[d>>2]|0)+36>>2]|0)c[(c[(c[d>>2]|0)+36>>2]|0)+32>>2]=b;else c[1946]=b;if(c[(c[d>>2]|0)+32>>2]|0)c[(c[(c[d>>2]|0)+32>>2]|0)+36>>2]=c[(c[d>>2]|0)+36>>2];Kd(c[d>>2]|0);i=e;return}function lO(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 7708}function mO(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e;d=e+8|0;c[d>>2]=a;if((c[c[d>>2]>>2]|0)<=(c[(c[d>>2]|0)+4>>2]|0)){d=b;c[d>>2]=0;c[d+4>>2]=0;d=b;a=d;a=c[a>>2]|0;d=d+4|0;d=c[d>>2]|0;C=d;i=e;return a|0}else{f=(c[d>>2]|0)+4|0;a=c[f>>2]|0;c[f>>2]=a+1;a=ee(c[(c[(c[d>>2]|0)+8>>2]|0)+(a<<2)>>2]|0)|0;d=b;c[d>>2]=a;c[d+4>>2]=C;d=b;a=d;a=c[a>>2]|0;d=d+4|0;d=c[d>>2]|0;C=d;i=e;return a|0}return 0}function nO(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0;e=i;i=i+16|0;b=e;d=e+8|0;c[d>>2]=a;if((c[c[d>>2]>>2]|0)<=(c[(c[d>>2]|0)+4>>2]|0)){h[b>>3]=0.0;f=+h[b>>3];i=e;return+f}else{g=(c[d>>2]|0)+4|0;a=c[g>>2]|0;c[g>>2]=a+1;h[b>>3]=+ce(c[(c[(c[d>>2]|0)+8>>2]|0)+(a<<2)>>2]|0);f=+h[b>>3];i=e;return+f}return 0.0}function oO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;g=l+12|0;k=l+8|0;j=l;c[f>>2]=b;c[g>>2]=d;if((c[c[g>>2]>>2]|0)<=0){a[e>>0]=48;b=a[e>>0]|0;i=l;return b|0}else{b=c[g>>2]|0;c[b>>2]=(c[b>>2]|0)+-1;c[k>>2]=~~+h[c[f>>2]>>3];h[j>>3]=+(c[k>>2]|0);c[k>>2]=(c[k>>2]|0)+48;h[c[f>>2]>>3]=(+h[c[f>>2]>>3]-+h[j>>3])*10.0;a[e>>0]=c[k>>2];b=a[e>>0]|0;i=l;return b|0}return 0}function pO(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if((c[c[d>>2]>>2]|0)<=(c[(c[d>>2]|0)+4>>2]|0)){c[b>>2]=0;a=c[b>>2]|0;i=e;return a|0}else{f=(c[d>>2]|0)+4|0;a=c[f>>2]|0;c[f>>2]=a+1;c[b>>2]=ae(c[(c[(c[d>>2]|0)+8>>2]|0)+(a<<2)>>2]|0)|0;a=c[b>>2]|0;i=e;return a|0}return 0}function qO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+4|0;g=j;h=j+8|0;c[f>>2]=b;c[g>>2]=d;a[h>>0]=e;b=c[g>>2]|0;b=gR(c[(c[f>>2]|0)+12>>2]|0,0,b|0,((b|0)<0)<<31>>31|0)|0;e=C;if((e|0)>0|((e|0)==0?b>>>0>=(c[(c[f>>2]|0)+16>>2]|0)>>>0:0)?(b=dA(c[f>>2]|0,c[g>>2]|0)|0,c[g>>2]=b,(b|0)<=0):0){i=j;return}while(1){b=c[g>>2]|0;c[g>>2]=b+-1;if((b|0)<=0)break;e=a[h>>0]|0;d=(c[f>>2]|0)+12|0;b=c[d>>2]|0;c[d>>2]=b+1;a[(c[(c[f>>2]|0)+8>>2]|0)+b>>0]=e}i=j;return}function rO(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d;c[b>>2]=a;a=288;e=c[a+4>>2]|0;if((e|0)<0|(e|0)==0&(c[a>>2]|0)>>>0<=0){i=d;return}Fd(c[b>>2]|0)|0;i=d;return}function sO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;j=h+20|0;d=h+16|0;e=h+12|0;g=h+8|0;f=h;c[j>>2]=a;c[d>>2]=b;c[e>>2]=Tb[c[60>>2]&255](c[j>>2]|0)|0;Mi(5,c[j>>2]|0);b=288;a=c[b+4>>2]|0;do if((a|0)>0|(a|0)==0&(c[b>>2]|0)>>>0>0){b=Zf(0)|0;a=f;c[a>>2]=b;c[a+4>>2]=C;a=f;b=c[a>>2]|0;a=c[a+4>>2]|0;f=288;j=c[e>>2]|0;j=fR(c[f>>2]|0,c[f+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0;f=C;if((a|0)>(f|0)|(a|0)==(f|0)&b>>>0>=j>>>0){c[77]=1;rO(c[e>>2]|0);break}else{c[77]=0;break}}while(0);c[g>>2]=Tb[c[44>>2]&255](c[e>>2]|0)|0;if(!(c[g>>2]|0)){b=c[g>>2]|0;j=c[d>>2]|0;c[j>>2]=b;j=c[e>>2]|0;i=h;return j|0}c[e>>2]=$f(c[g>>2]|0)|0;Ni(0,c[e>>2]|0);Ni(9,1);b=c[g>>2]|0;j=c[d>>2]|0;c[j>>2]=b;j=c[e>>2]|0;i=h;return j|0}function tO(){var a=0,b=0,d=0,e=0;e=i;i=i+16|0;b=e+8|0;d=e+4|0;a=e;c[d>>2]=1080;c[a>>2]=9708;c[b>>2]=0;while(1){if((c[b>>2]|0)>=8)break;Yt(c[d>>2]|0,(c[a>>2]|0)+(c[b>>2]<<5)|0);c[b>>2]=(c[b>>2]|0)+1}i=e;return}function uO(){var a=0,b=0,d=0,e=0;e=i;i=i+16|0;b=e+8|0;d=e+4|0;a=e;c[d>>2]=1080;c[a>>2]=9612;c[b>>2]=0;while(1){if((c[b>>2]|0)>=3)break;Yt(c[d>>2]|0,(c[a>>2]|0)+(c[b>>2]<<5)|0);c[b>>2]=(c[b>>2]|0)+1}i=e;return}function vO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+64|0;l=r;f=r+60|0;s=r+52|0;o=r+48|0;p=r+44|0;k=r+40|0;j=r+32|0;m=r+28|0;h=r+24|0;n=r+20|0;g=r+16|0;c[f>>2]=b;c[r+56>>2]=d;c[s>>2]=e;c[o>>2]=ae(c[c[s>>2]>>2]|0)|0;c[p>>2]=ae(c[(c[s>>2]|0)+4>>2]|0)|0;c[m>>2]=c[o>>2];c[h>>2]=0;c[g>>2]=we(c[f>>2]|0)|0;if(!(c[o>>2]|0)){i=r;return}do{if(!(a[c[m>>2]>>0]|0)){q=7;break}c[j>>2]=c[m>>2];c[j+4>>2]=c[h>>2];do{c[m>>2]=(c[m>>2]|0)+(c[h>>2]|0);c[h>>2]=Qu(c[m>>2]|0,k)|0}while((c[k>>2]|0)==159)}while((c[k>>2]|0)!=22?(c[k>>2]|0)!=125:0);if((q|0)==7){i=r;return}s=c[g>>2]|0;m=c[o>>2]|0;p=c[p>>2]|0;q=(c[j>>2]|0)+(c[j+4>>2]|0)|0;c[l>>2]=(c[j>>2]|0)-(c[o>>2]|0);c[l+4>>2]=m;c[l+8>>2]=p;c[l+12>>2]=q;c[n>>2]=Bh(s,46327,l)|0;ne(c[f>>2]|0,c[n>>2]|0,-1,170);i=r;return}function wO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+80|0;m=s;f=s+68|0;t=s+60|0;p=s+56|0;q=s+52|0;l=s+48|0;k=s+40|0;h=s+32|0;n=s+28|0;j=s+24|0;o=s+20|0;g=s+16|0;c[f>>2]=b;c[s+64>>2]=d;c[t>>2]=e;c[p>>2]=ae(c[c[t>>2]>>2]|0)|0;c[q>>2]=ae(c[(c[t>>2]|0)+4>>2]|0)|0;c[h>>2]=3;c[n>>2]=c[p>>2];c[j>>2]=0;c[g>>2]=we(c[f>>2]|0)|0;if(!(c[p>>2]|0)){i=s;return}while(1){if(!(a[c[n>>2]>>0]|0)){r=8;break}c[k>>2]=c[n>>2];c[k+4>>2]=c[j>>2];do{c[n>>2]=(c[n>>2]|0)+(c[j>>2]|0);c[j>>2]=Qu(c[n>>2]|0,l)|0}while((c[l>>2]|0)==159);t=(c[h>>2]|0)+1|0;c[h>>2]=t;c[h>>2]=(c[l>>2]|0)==122|(c[l>>2]|0)==107?0:t;if((c[h>>2]|0)!=2)continue;if(!((c[l>>2]|0)!=137&(c[l>>2]|0)!=46&(c[l>>2]|0)!=5))break}if((r|0)==8){i=s;return}t=c[g>>2]|0;n=c[p>>2]|0;q=c[q>>2]|0;r=(c[k>>2]|0)+(c[k+4>>2]|0)|0;c[m>>2]=(c[k>>2]|0)-(c[p>>2]|0);c[m+4>>2]=n;c[m+8>>2]=q;c[m+12>>2]=r;c[o>>2]=Bh(t,46327,m)|0;ne(c[f>>2]|0,c[o>>2]|0,-1,170);i=s;return}function xO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+80|0;l=u+16|0;k=u;f=u+76|0;v=u+68|0;g=u+64|0;r=u+60|0;t=u+56|0;n=u+52|0;p=u+48|0;o=u+44|0;m=u+40|0;h=u+36|0;j=u+32|0;s=u+28|0;q=u+24|0;c[f>>2]=b;c[u+72>>2]=d;c[v>>2]=e;c[g>>2]=we(c[f>>2]|0)|0;c[r>>2]=0;c[n>>2]=ae(c[c[v>>2]>>2]|0)|0;c[p>>2]=ae(c[(c[v>>2]|0)+4>>2]|0)|0;c[o>>2]=ae(c[(c[v>>2]|0)+8>>2]|0)|0;if((c[n>>2]|0)==0|(c[p>>2]|0)==0){i=u;return}c[m>>2]=c[n>>2];while(1){if(!(a[c[m>>2]>>0]|0))break;c[h>>2]=Qu(c[m>>2]|0,j)|0;if((c[j>>2]|0)==105){do{c[m>>2]=(c[m>>2]|0)+(c[h>>2]|0);c[h>>2]=Qu(c[m>>2]|0,j)|0}while((c[j>>2]|0)==159);if((c[j>>2]|0)==160)break;v=c[h>>2]|0;c[s>>2]=Iw(c[g>>2]|0,c[m>>2]|0,v,((v|0)<0)<<31>>31)|0;if(!(c[s>>2]|0))break;Jw(c[s>>2]|0)|0;if(!(Td(c[p>>2]|0,c[s>>2]|0)|0)){v=c[g>>2]|0;d=(c[m>>2]|0)-(c[n>>2]|0)|0;e=c[n>>2]|0;b=c[o>>2]|0;c[k>>2]=(c[r>>2]|0)!=0?c[r>>2]|0:19266;c[k+4>>2]=d;c[k+8>>2]=e;c[k+12>>2]=b;c[q>>2]=Bh(v,46316,k)|0;Sf(c[g>>2]|0,c[r>>2]|0);c[r>>2]=c[q>>2];c[n>>2]=(c[m>>2]|0)+(c[h>>2]|0)}Sf(c[g>>2]|0,c[s>>2]|0)}c[m>>2]=(c[m>>2]|0)+(c[h>>2]|0)}v=c[g>>2]|0;s=c[n>>2]|0;c[l>>2]=(c[r>>2]|0)!=0?c[r>>2]|0:19266;c[l+4>>2]=s;c[t>>2]=Bh(v,25552,l)|0;ne(c[f>>2]|0,c[t>>2]|0,-1,170);Sf(c[g>>2]|0,c[r>>2]|0);i=u;return}function yO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+64|0;e=g+56|0;j=g+52|0;h=g+48|0;f=g;c[e>>2]=a;c[j>>2]=b;c[h>>2]=d;if(GO(c[e>>2]|0,c[j>>2]|0,c[h>>2]|0,f)|0){i=g;return}HO(f);j=f;ie(c[e>>2]|0,(+((c[j>>2]|0)>>>0)+4294967296.0*+(c[j+4>>2]|0))/864.0e5);i=g;return}function zO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+176|0;f=j+48|0;e=j+68|0;l=j+64|0;k=j+60|0;g=j;h=j+72|0;c[e>>2]=a;c[l>>2]=b;c[k>>2]=d;if(GO(c[e>>2]|0,c[l>>2]|0,c[k>>2]|0,g)|0){i=j;return}JO(g);k=c[g+12>>2]|0;l=c[g+16>>2]|0;c[f>>2]=c[g+8>>2];c[f+4>>2]=k;c[f+8>>2]=l;Qd(100,h,46623,f)|0;ne(c[e>>2]|0,h,-1,-1);i=j;return}function AO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;k=i;i=i+176|0;f=k+48|0;e=k+68|0;m=k+64|0;l=k+60|0;g=k;j=k+72|0;c[e>>2]=a;c[m>>2]=b;c[l>>2]=d;if(GO(c[e>>2]|0,c[m>>2]|0,c[l>>2]|0,g)|0){i=k;return}KO(g);l=c[g+24>>2]|0;m=~~+h[g+32>>3];c[f>>2]=c[g+20>>2];c[f+4>>2]=l;c[f+8>>2]=m;Qd(100,j,46608,f)|0;ne(c[e>>2]|0,j,-1,-1);i=k;return}function BO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;k=i;i=i+192|0;f=k+48|0;e=k+80|0;m=k+76|0;l=k+72|0;g=k;j=k+84|0;c[e>>2]=a;c[m>>2]=b;c[l>>2]=d;if(GO(c[e>>2]|0,c[m>>2]|0,c[l>>2]|0,g)|0){i=k;return}IO(g);b=c[g+12>>2]|0;d=c[g+16>>2]|0;a=c[g+20>>2]|0;l=c[g+24>>2]|0;m=~~+h[g+32>>3];c[f>>2]=c[g+8>>2];c[f+4>>2]=b;c[f+8>>2]=d;c[f+12>>2]=a;c[f+16>>2]=l;c[f+20>>2]=m;Qd(100,j,46578,f)|0;ne(c[e>>2]|0,j,-1,-1);i=k;return}function CO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+336|0;z=J+192|0;y=J+184|0;x=J+176|0;w=J+168|0;v=J+160|0;u=J+152|0;t=J+144|0;B=J+136|0;A=J+128|0;s=J+120|0;r=J+112|0;m=J+232|0;f=J+228|0;g=J+224|0;E=J+64|0;k=J+56|0;n=J+220|0;o=J+216|0;G=J+212|0;j=J+208|0;I=J+204|0;H=J+236|0;q=J+48|0;p=J+200|0;F=J;D=J+196|0;c[m>>2]=b;c[f>>2]=d;c[g>>2]=e;if(!(c[f>>2]|0)){i=J;return}c[I>>2]=ae(c[c[g>>2]>>2]|0)|0;if(!(c[I>>2]|0)){i=J;return}if(GO(c[m>>2]|0,(c[f>>2]|0)-1|0,(c[g>>2]|0)+4|0,E)|0){i=J;return}c[j>>2]=we(c[m>>2]|0)|0;c[n>>2]=0;b=k;c[b>>2]=1;c[b+4>>2]=0;a:while(1){if(!(a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0))break;if((a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0)==37){switch(a[(c[I>>2]|0)+((c[n>>2]|0)+1)>>0]|0){case 87:case 83:case 77:case 109:case 72:case 100:{e=k;b=k;c[b>>2]=gR(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;c[b+4>>2]=C;break}case 37:case 119:break;case 102:{e=k;b=k;c[b>>2]=gR(c[e>>2]|0,c[e+4>>2]|0,8,0)|0;c[b+4>>2]=C;break}case 106:{e=k;b=k;c[b>>2]=gR(c[e>>2]|0,c[e+4>>2]|0,3,0)|0;c[b+4>>2]=C;break}case 89:{e=k;b=k;c[b>>2]=gR(c[e>>2]|0,c[e+4>>2]|0,8,0)|0;c[b+4>>2]=C;break}case 74:case 115:{e=k;b=k;c[b>>2]=gR(c[e>>2]|0,c[e+4>>2]|0,50,0)|0;c[b+4>>2]=C;break}default:{l=44;break a}}c[n>>2]=(c[n>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1;e=k;e=gR(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;b=k;c[b>>2]=e;c[b+4>>2]=C}if((l|0)==44){i=J;return}l=k;b=c[l+4>>2]|0;if(!(b>>>0<0|(b|0)==0&(c[l>>2]|0)>>>0<100)){b=k;d=c[b+4>>2]|0;l=c[(c[j>>2]|0)+88>>2]|0;e=((l|0)<0)<<31>>31;if(d>>>0>e>>>0|((d|0)==(e|0)?(c[b>>2]|0)>>>0>l>>>0:0)){se(c[m>>2]|0);i=J;return}l=c[k>>2]|0;c[G>>2]=Fw(c[j>>2]|0,l,((l|0)<0)<<31>>31)|0;if(!(c[G>>2]|0)){te(c[m>>2]|0);i=J;return}}else c[G>>2]=H;HO(E);IO(E);c[o>>2]=0;c[n>>2]=0;while(1){if(!(a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0))break;f=c[n>>2]|0;b:do if((a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0)!=37){k=a[(c[I>>2]|0)+f>>0]|0;l=c[o>>2]|0;c[o>>2]=l+1;a[(c[G>>2]|0)+l>>0]=k}else{c[n>>2]=f+1;do switch(a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0){case 100:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[r>>2]=c[E+16>>2];Qd(3,l,46420,r)|0;c[o>>2]=(c[o>>2]|0)+2;break b}case 102:{h[q>>3]=+h[E+32>>3];if(+h[q>>3]>59.999)h[q>>3]=59.999;l=(c[G>>2]|0)+(c[o>>2]|0)|0;h[s>>3]=+h[q>>3];Qd(7,l,46425,s)|0;c[o>>2]=(If((c[G>>2]|0)+(c[o>>2]|0)|0)|0)+(c[o>>2]|0);break b}case 72:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[A>>2]=c[E+20>>2];Qd(3,l,46420,A)|0;c[o>>2]=(c[o>>2]|0)+2;break b}case 106:case 87:{f=F;g=E;d=f+48|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(d|0));a[F+42>>0]=0;c[F+12>>2]=1;c[F+16>>2]=1;HO(F);k=E;l=F;c[p>>2]=pR(gR(fR(c[k>>2]|0,c[k+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0,C|0,432e5,0)|0,C|0,864e5,0)|0;if((a[(c[I>>2]|0)+(c[n>>2]|0)>>0]|0)==87){l=E;l=gR(c[l>>2]|0,c[l+4>>2]|0,432e5,0)|0;l=pR(l|0,C|0,864e5,0)|0;l=qR(l|0,C|0,7,0)|0;c[D>>2]=l;l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[B>>2]=((c[p>>2]|0)+7-(c[D>>2]|0)|0)/7|0;Qd(3,l,46420,B)|0;c[o>>2]=(c[o>>2]|0)+2;break b}else{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[t>>2]=(c[p>>2]|0)+1;Qd(4,l,46432,t)|0;c[o>>2]=(c[o>>2]|0)+3;break b}}case 74:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;k=E;h[u>>3]=(+((c[k>>2]|0)>>>0)+4294967296.0*+(c[k+4>>2]|0))/864.0e5;Qd(20,l,43396,u)|0;c[o>>2]=(If((c[G>>2]|0)+(c[o>>2]|0)|0)|0)+(c[o>>2]|0);break b}case 109:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[v>>2]=c[E+12>>2];Qd(3,l,46420,v)|0;c[o>>2]=(c[o>>2]|0)+2;break b}case 77:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[w>>2]=c[E+24>>2];Qd(3,l,46420,w)|0;c[o>>2]=(c[o>>2]|0)+2;break b}case 115:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;j=E;k=x;c[k>>2]=fR(pR(c[j>>2]|0,c[j+4>>2]|0,1e3,0)|0,C|0,413362496,49)|0;c[k+4>>2]=C;Qd(30,l,29137,x)|0;c[o>>2]=(If((c[G>>2]|0)+(c[o>>2]|0)|0)|0)+(c[o>>2]|0);break b}case 83:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[y>>2]=~~+h[E+32>>3];Qd(3,l,46420,y)|0;c[o>>2]=(c[o>>2]|0)+2;break b}case 119:{k=E;k=qR(pR(gR(c[k>>2]|0,c[k+4>>2]|0,1296e5,0)|0,C|0,864e5,0)|0,C|0,7,0)|0;l=c[o>>2]|0;c[o>>2]=l+1;a[(c[G>>2]|0)+l>>0]=((k&255)<<24>>24)+48;break b}case 89:{l=(c[G>>2]|0)+(c[o>>2]|0)|0;c[z>>2]=c[E+8>>2];Qd(5,l,46437,z)|0;c[o>>2]=(If((c[G>>2]|0)+(c[o>>2]|0)|0)|0)+(c[o>>2]|0);break b}default:{l=c[o>>2]|0;c[o>>2]=l+1;a[(c[G>>2]|0)+l>>0]=37;break b}}while(0)}while(0);c[n>>2]=(c[n>>2]|0)+1}a[(c[G>>2]|0)+(c[o>>2]|0)>>0]=0;ne(c[m>>2]|0,c[G>>2]|0,-1,(c[G>>2]|0)==(H|0)?-1:170);i=J;return}function DO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;AO(c[f>>2]|0,0,0);i=e;return}function EO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;BO(c[f>>2]|0,0,0);i=e;return}function FO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;zO(c[f>>2]|0,0,0);i=e;return}function GO(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;p=i;i=i+32|0;o=p+28|0;g=p+24|0;h=p+20|0;j=p+16|0;k=p+12|0;m=p+8|0;n=p+4|0;l=p;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;d=c[k>>2]|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));if(!(c[h>>2]|0)){c[o>>2]=LO(c[g>>2]|0,c[k>>2]|0)|0;o=c[o>>2]|0;i=p;return o|0}f=fe(c[c[j>>2]>>2]|0)|0;c[l>>2]=f;d=c[c[j>>2]>>2]|0;do if((f|0)==2|(c[l>>2]|0)==1){q=+ce(d)*864.0e5+.5;f=+N(q)>=1.0?q>0.0?~~+$(+M(q/4294967296.0),4294967295.0)>>>0:~~+Z((q-+(~~q>>>0))/4294967296.0)>>>0:0;l=c[k>>2]|0;c[l>>2]=~~q>>>0;c[l+4>>2]=f;a[(c[k>>2]|0)+42>>0]=1}else{c[n>>2]=ae(d)|0;if((c[n>>2]|0)!=0?(MO(c[g>>2]|0,c[n>>2]|0,c[k>>2]|0)|0)==0:0)break;c[o>>2]=1;o=c[o>>2]|0;i=p;return o|0}while(0);c[m>>2]=1;while(1){if((c[m>>2]|0)>=(c[h>>2]|0)){d=14;break}c[n>>2]=ae(c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0)|0;if(!(c[n>>2]|0)){d=12;break}if(NO(c[g>>2]|0,c[n>>2]|0,c[k>>2]|0)|0){d=12;break}c[m>>2]=(c[m>>2]|0)+1}if((d|0)==12){c[o>>2]=1;o=c[o>>2]|0;i=p;return o|0}else if((d|0)==14){c[o>>2]=0;o=c[o>>2]|0;i=p;return o|0}return 0}function HO(b){b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0.0;n=i;i=i+32|0;d=n+28|0;m=n+24|0;j=n+20|0;g=n+16|0;e=n+12|0;f=n+8|0;k=n+4|0;l=n;c[d>>2]=b;if(a[(c[d>>2]|0)+42>>0]|0){i=n;return}if(a[(c[d>>2]|0)+40>>0]|0){c[m>>2]=c[(c[d>>2]|0)+8>>2];c[j>>2]=c[(c[d>>2]|0)+12>>2];c[g>>2]=c[(c[d>>2]|0)+16>>2]}else{c[m>>2]=2e3;c[j>>2]=1;c[g>>2]=1}if((c[j>>2]|0)<=2){c[m>>2]=(c[m>>2]|0)+-1;c[j>>2]=(c[j>>2]|0)+12}c[e>>2]=(c[m>>2]|0)/100|0;c[f>>2]=2-(c[e>>2]|0)+((c[e>>2]|0)/4|0);c[k>>2]=(((c[m>>2]|0)+4716|0)*36525|0)/100|0;c[l>>2]=(((c[j>>2]|0)+1|0)*306001|0)/1e4|0;o=(+((c[k>>2]|0)+(c[l>>2]|0)+(c[g>>2]|0)+(c[f>>2]|0)|0)-1524.5)*864.0e5;m=+N(o)>=1.0?o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0:0;b=c[d>>2]|0;c[b>>2]=~~o>>>0;c[b+4>>2]=m;a[(c[d>>2]|0)+42>>0]=1;if(!(a[(c[d>>2]|0)+41>>0]|0)){i=n;return}m=_(c[(c[d>>2]|0)+20>>2]|0,36e5)|0;m=m+((c[(c[d>>2]|0)+24>>2]|0)*6e4|0)|0;o=+h[(c[d>>2]|0)+32>>3]*1.0e3;m=gR(m|0,((m|0)<0)<<31>>31|0,~~o>>>0|0,(+N(o)>=1.0?o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0:0)|0)|0;b=c[d>>2]|0;l=b;m=gR(c[l>>2]|0,c[l+4>>2]|0,m|0,C|0)|0;c[b>>2]=m;c[b+4>>2]=C;if(!(a[(c[d>>2]|0)+43>>0]|0)){i=n;return}m=(c[(c[d>>2]|0)+28>>2]|0)*6e4|0;b=c[d>>2]|0;l=b;m=fR(c[l>>2]|0,c[l+4>>2]|0,m|0,((m|0)<0)<<31>>31|0)|0; -c[b>>2]=m;c[b+4>>2]=C;a[(c[d>>2]|0)+40>>0]=0;a[(c[d>>2]|0)+41>>0]=0;a[(c[d>>2]|0)+43>>0]=0;i=n;return}function IO(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;JO(c[d>>2]|0);KO(c[d>>2]|0);i=b;return}function JO(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+28|0;l=m+24|0;e=m+20|0;f=m+16|0;g=m+12|0;h=m+8|0;j=m+4|0;k=m;c[d>>2]=b;if(a[(c[d>>2]|0)+40>>0]|0){i=m;return}b=c[d>>2]|0;if(a[(c[d>>2]|0)+42>>0]|0){b=gR(c[b>>2]|0,c[b+4>>2]|0,432e5,0)|0;b=pR(b|0,C|0,864e5,0)|0;c[l>>2]=b;c[e>>2]=~~((+(c[l>>2]|0)-1867216.25)/36524.25);c[e>>2]=(c[l>>2]|0)+1+(c[e>>2]|0)-((c[e>>2]|0)/4|0);c[f>>2]=(c[e>>2]|0)+1524;c[g>>2]=~~((+(c[f>>2]|0)-122.1)/365.25);c[h>>2]=((c[g>>2]&32767)*36525|0)/100|0;c[j>>2]=~~(+((c[f>>2]|0)-(c[h>>2]|0)|0)/30.6001);c[k>>2]=~~(+(c[j>>2]|0)*30.6001);c[(c[d>>2]|0)+16>>2]=(c[f>>2]|0)-(c[h>>2]|0)-(c[k>>2]|0);l=c[j>>2]|0;c[(c[d>>2]|0)+12>>2]=(c[j>>2]|0)<14?l-1|0:l-13|0;l=c[g>>2]|0;c[(c[d>>2]|0)+8>>2]=(c[(c[d>>2]|0)+12>>2]|0)>2?l-4716|0:l-4715|0}else{c[b+8>>2]=2e3;c[(c[d>>2]|0)+12>>2]=1;c[(c[d>>2]|0)+16>>2]=1}a[(c[d>>2]|0)+40>>0]=1;i=m;return}function KO(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;if(a[(c[d>>2]|0)+41>>0]|0){i=f;return}HO(c[d>>2]|0);b=c[d>>2]|0;b=gR(c[b>>2]|0,c[b+4>>2]|0,432e5,0)|0;b=qR(b|0,C|0,864e5,0)|0;c[e>>2]=b;h[(c[d>>2]|0)+32>>3]=+(c[e>>2]|0)/1.0e3;c[e>>2]=~~+h[(c[d>>2]|0)+32>>3];b=(c[d>>2]|0)+32|0;h[b>>3]=+h[b>>3]-+(c[e>>2]|0);c[(c[d>>2]|0)+20>>2]=(c[e>>2]|0)/3600|0;c[e>>2]=(c[e>>2]|0)-((c[(c[d>>2]|0)+20>>2]|0)*3600|0);c[(c[d>>2]|0)+24>>2]=(c[e>>2]|0)/60|0;b=(c[d>>2]|0)+32|0;h[b>>3]=+h[b>>3]+ +((c[e>>2]|0)-((c[(c[d>>2]|0)+24>>2]|0)*60|0)|0);a[(c[d>>2]|0)+41>>0]=1;i=f;return}function LO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;h=g+4|0;f=g;c[h>>2]=b;c[f>>2]=d;b=VO(c[h>>2]|0)|0;d=c[f>>2]|0;c[d>>2]=b;c[d+4>>2]=C;d=c[f>>2]|0;b=c[d+4>>2]|0;if((b|0)>0|(b|0)==0&(c[d>>2]|0)>>>0>0){a[(c[f>>2]|0)+42>>0]=1;c[e>>2]=0;h=c[e>>2]|0;i=g;return h|0}else{c[e>>2]=1;h=c[e>>2]|0;i=g;return h|0}return 0}function MO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;j=m+12|0;k=m+8|0;l=m;c[g>>2]=b;c[j>>2]=d;c[k>>2]=e;if(!(UO(c[j>>2]|0,c[k>>2]|0)|0)){c[f>>2]=0;d=c[f>>2]|0;i=m;return d|0}if(!(QO(c[j>>2]|0,c[k>>2]|0)|0)){c[f>>2]=0;d=c[f>>2]|0;i=m;return d|0}if(!(Td(c[j>>2]|0,46562)|0)){c[f>>2]=LO(c[g>>2]|0,c[k>>2]|0)|0;d=c[f>>2]|0;i=m;return d|0}d=c[j>>2]|0;if(Ky(d,l,If(c[j>>2]|0)|0,1)|0){n=+h[l>>3]*864.0e5+.5;l=+N(n)>=1.0?n>0.0?~~+$(+M(n/4294967296.0),4294967295.0)>>>0:~~+Z((n-+(~~n>>>0))/4294967296.0)>>>0:0;d=c[k>>2]|0;c[d>>2]=~~n>>>0;c[d+4>>2]=l;a[(c[k>>2]|0)+42>>0]=1;c[f>>2]=0;d=c[f>>2]|0;i=m;return d|0}else{c[f>>2]=1;d=c[f>>2]|0;i=m;return d|0}return 0}function NO(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=i;i=i+160|0;g=z+124|0;j=z+120|0;w=z+116|0;x=z+112|0;m=z+108|0;n=z+80|0;y=z+104|0;l=z+72|0;k=z+64|0;o=z+56|0;v=z+100|0;u=z+8|0;t=z;p=z+96|0;q=z+92|0;r=z+88|0;c[g>>2]=b;c[j>>2]=e;c[w>>2]=f;c[x>>2]=1;c[y>>2]=z+128;c[m>>2]=0;while(1){if((c[m>>2]|0)<29)b=(a[(c[j>>2]|0)+(c[m>>2]|0)>>0]|0)!=0;else b=0;f=c[m>>2]|0;if(!b)break;a[(c[y>>2]|0)+(c[m>>2]|0)>>0]=a[18477+(d[(c[j>>2]|0)+f>>0]|0)>>0]|0;c[m>>2]=(c[m>>2]|0)+1}a[(c[y>>2]|0)+f>>0]=0;switch(a[c[y>>2]>>0]|0){case 108:{if(yQ(c[y>>2]|0,46442)|0){y=c[x>>2]|0;i=z;return y|0}HO(c[w>>2]|0);v=OO(c[w>>2]|0,c[g>>2]|0,x)|0;y=c[w>>2]|0;u=y;c[y>>2]=gR(c[u>>2]|0,c[u+4>>2]|0,v|0,C|0)|0;c[y+4>>2]=C;PO(c[w>>2]|0);y=c[x>>2]|0;i=z;return y|0}case 117:{if((yQ(c[y>>2]|0,46452)|0)==0?(a[(c[w>>2]|0)+42>>0]|0)!=0:0){v=c[w>>2]|0;v=gR(c[v>>2]|0,c[v+4>>2]|0,43200,0)|0;v=pR(v|0,C|0,86400,0)|0;v=gR(v|0,C|0,1045635584,49096)|0;y=c[w>>2]|0;c[y>>2]=v;c[y+4>>2]=C;PO(c[w>>2]|0);c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}if(yQ(c[y>>2]|0,46462)|0){y=c[x>>2]|0;i=z;return y|0}if(a[(c[w>>2]|0)+44>>0]|0){c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}HO(c[w>>2]|0);y=l;c[y>>2]=OO(c[w>>2]|0,c[g>>2]|0,x)|0;c[y+4>>2]=C;if(!(c[x>>2]|0)){u=l;y=c[w>>2]|0;v=y;u=fR(c[v>>2]|0,c[v+4>>2]|0,c[u>>2]|0,c[u+4>>2]|0)|0;c[y>>2]=u;c[y+4>>2]=C;PO(c[w>>2]|0);y=l;u=c[y>>2]|0;y=c[y+4>>2]|0;v=OO(c[w>>2]|0,c[g>>2]|0,x)|0;v=fR(u|0,y|0,v|0,C|0)|0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,v|0,C|0)|0;c[y>>2]=v;c[y+4>>2]=C}a[(c[w>>2]|0)+44>>0]=1;y=c[x>>2]|0;i=z;return y|0}case 119:{if(CQ(c[y>>2]|0,46466,8)|0){y=c[x>>2]|0;i=z;return y|0}if(!(Ky((c[y>>2]|0)+8|0,n,If((c[y>>2]|0)+8|0)|0,1)|0)){y=c[x>>2]|0;i=z;return y|0}y=~~+h[n>>3];c[m>>2]=y;if(!(((c[m>>2]|0)>=0?+(y|0)==+h[n>>3]:0)&+h[n>>3]<7.0)){y=c[x>>2]|0;i=z;return y|0}IO(c[w>>2]|0);a[(c[w>>2]|0)+43>>0]=0;a[(c[w>>2]|0)+42>>0]=0;HO(c[w>>2]|0);t=c[w>>2]|0;v=k;c[v>>2]=qR(pR(gR(c[t>>2]|0,c[t+4>>2]|0,1296e5,0)|0,C|0,864e5,0)|0,C|0,7,0)|0;c[v+4>>2]=C;v=k;t=c[v+4>>2]|0;y=c[m>>2]|0;u=((y|0)<0)<<31>>31;if((t|0)>(u|0)|((t|0)==(u|0)?(c[v>>2]|0)>>>0>y>>>0:0)){v=k;v=fR(c[v>>2]|0,c[v+4>>2]|0,7,0)|0;y=k;c[y>>2]=v;c[y+4>>2]=C}y=c[m>>2]|0;v=k;v=rR(fR(y|0,((y|0)<0)<<31>>31|0,c[v>>2]|0,c[v+4>>2]|0)|0,C|0,864e5,0)|0;y=c[w>>2]|0;u=y;c[y>>2]=gR(c[u>>2]|0,c[u+4>>2]|0,v|0,C|0)|0;c[y+4>>2]=C;PO(c[w>>2]|0);c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}case 115:{if(CQ(c[y>>2]|0,46475,9)|0){y=c[x>>2]|0;i=z;return y|0}c[y>>2]=(c[y>>2]|0)+9;JO(c[w>>2]|0);a[(c[w>>2]|0)+41>>0]=1;c[(c[w>>2]|0)+24>>2]=0;c[(c[w>>2]|0)+20>>2]=0;h[(c[w>>2]|0)+32>>3]=0.0;a[(c[w>>2]|0)+43>>0]=0;a[(c[w>>2]|0)+42>>0]=0;if(!(yQ(c[y>>2]|0,46485)|0)){c[(c[w>>2]|0)+16>>2]=1;c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}if(!(yQ(c[y>>2]|0,46491)|0)){JO(c[w>>2]|0);c[(c[w>>2]|0)+12>>2]=1;c[(c[w>>2]|0)+16>>2]=1;c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}if(yQ(c[y>>2]|0,46496)|0){y=c[x>>2]|0;i=z;return y|0}c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:case 45:case 43:{c[m>>2]=1;while(1){if(!(a[(c[y>>2]|0)+(c[m>>2]|0)>>0]|0))break;if((a[(c[y>>2]|0)+(c[m>>2]|0)>>0]|0)==58)break;if(!((d[19267+(d[(c[y>>2]|0)+(c[m>>2]|0)>>0]|0)>>0]&1|0)!=0^1))break;c[m>>2]=(c[m>>2]|0)+1}if(!(Ky(c[y>>2]|0,n,c[m>>2]|0,1)|0)){c[x>>2]=1;y=c[x>>2]|0;i=z;return y|0}if((a[(c[y>>2]|0)+(c[m>>2]|0)>>0]|0)==58){c[v>>2]=c[y>>2];if(!(d[19267+(d[c[v>>2]>>0]|0)>>0]&4))c[v>>2]=(c[v>>2]|0)+1;f=u;b=f+48|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(b|0));if(QO(c[v>>2]|0,u)|0){y=c[x>>2]|0;i=z;return y|0}HO(u);v=u;v=fR(c[v>>2]|0,c[v+4>>2]|0,432e5,0)|0;s=u;c[s>>2]=v;c[s+4>>2]=C;s=u;s=pR(c[s>>2]|0,c[s+4>>2]|0,864e5,0)|0;v=t;c[v>>2]=s;c[v+4>>2]=C;t=rR(c[t>>2]|0,c[t+4>>2]|0,864e5,0)|0;v=u;t=fR(c[v>>2]|0,c[v+4>>2]|0,t|0,C|0)|0;v=u;c[v>>2]=t;c[v+4>>2]=C;if((a[c[y>>2]>>0]|0)==45){v=u;v=fR(0,0,c[v>>2]|0,c[v+4>>2]|0)|0;y=u;c[y>>2]=v;c[y+4>>2]=C}HO(c[w>>2]|0);PO(c[w>>2]|0);v=u;y=c[w>>2]|0;w=y;w=gR(c[w>>2]|0,c[w+4>>2]|0,c[v>>2]|0,c[v+4>>2]|0)|0;c[y>>2]=w;c[y+4>>2]=C;c[x>>2]=0;y=c[x>>2]|0;i=z;return y|0}c[y>>2]=(c[y>>2]|0)+(c[m>>2]|0);while(1){f=c[y>>2]|0;if(!(d[19267+(d[c[y>>2]>>0]|0)>>0]&1))break;c[y>>2]=f+1}c[m>>2]=If(f)|0;if((c[m>>2]|0)>10|(c[m>>2]|0)<3){y=c[x>>2]|0;i=z;return y|0}if((a[(c[y>>2]|0)+((c[m>>2]|0)-1)>>0]|0)==115){a[(c[y>>2]|0)+((c[m>>2]|0)-1)>>0]=0;c[m>>2]=(c[m>>2]|0)+-1}HO(c[w>>2]|0);c[x>>2]=0;h[o>>3]=+h[n>>3]<0.0?-.5:.5;if((c[m>>2]|0)==3?(yQ(c[y>>2]|0,46496)|0)==0:0){A=+h[n>>3]*864.0e5+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C}else s=54;do if((s|0)==54){if((c[m>>2]|0)==4?(yQ(c[y>>2]|0,46500)|0)==0:0){A=+h[n>>3]*36.0e5+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C;break}if((c[m>>2]|0)==6?(yQ(c[y>>2]|0,46505)|0)==0:0){A=+h[n>>3]*6.0e4+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C;break}if((c[m>>2]|0)==6?(yQ(c[y>>2]|0,46512)|0)==0:0){A=+h[n>>3]*1.0e3+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C;break}if((c[m>>2]|0)==5?(yQ(c[y>>2]|0,46485)|0)==0:0){IO(c[w>>2]|0);y=(c[w>>2]|0)+12|0;c[y>>2]=(c[y>>2]|0)+~~+h[n>>3];y=c[(c[w>>2]|0)+12>>2]|0;c[p>>2]=(((c[(c[w>>2]|0)+12>>2]|0)>0?y-1|0:y-12|0)|0)/12|0;y=(c[w>>2]|0)+8|0;c[y>>2]=(c[y>>2]|0)+(c[p>>2]|0);y=(c[w>>2]|0)+12|0;c[y>>2]=(c[y>>2]|0)-((c[p>>2]|0)*12|0);a[(c[w>>2]|0)+42>>0]=0;HO(c[w>>2]|0);c[q>>2]=~~+h[n>>3];if(!(+(c[q>>2]|0)!=+h[n>>3]))break;A=(+h[n>>3]-+(c[q>>2]|0))*30.0*864.0e5+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C;break}if((c[m>>2]|0)==4?(yQ(c[y>>2]|0,46491)|0)==0:0){c[r>>2]=~~+h[n>>3];IO(c[w>>2]|0);y=(c[w>>2]|0)+8|0;c[y>>2]=(c[y>>2]|0)+(c[r>>2]|0);a[(c[w>>2]|0)+42>>0]=0;HO(c[w>>2]|0);if(!(+(c[r>>2]|0)!=+h[n>>3]))break;A=(+h[n>>3]-+(c[r>>2]|0))*365.0*864.0e5+ +h[o>>3];v=+N(A)>=1.0?A>0.0?~~+$(+M(A/4294967296.0),4294967295.0)>>>0:~~+Z((A-+(~~A>>>0))/4294967296.0)>>>0:0;y=c[w>>2]|0;u=y;v=gR(c[u>>2]|0,c[u+4>>2]|0,~~A>>>0|0,v|0)|0;c[y>>2]=v;c[y+4>>2]=C;break}c[x>>2]=1}while(0);PO(c[w>>2]|0);y=c[x>>2]|0;i=z;return y|0}default:{y=c[x>>2]|0;i=z;return y|0}}return 0}function OO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+176|0;g=q+96|0;f=q+164|0;j=q+160|0;k=q+156|0;o=q+48|0;p=q;n=q+152|0;m=q+108|0;l=q+104|0;c[f>>2]=b;c[j>>2]=d;c[k>>2]=e;d=m;e=d+44|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=o;b=c[f>>2]|0;e=d+48|0;do{c[d>>2]=c[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(e|0));IO(o);if((c[o+8>>2]|0)>=1971?(c[o+8>>2]|0)<2038:0){c[l>>2]=~~(+h[o+32>>3]+.5);h[o+32>>3]=+(c[l>>2]|0)}else{c[o+8>>2]=2e3;c[o+12>>2]=1;c[o+16>>2]=1;c[o+20>>2]=0;c[o+24>>2]=0;h[o+32>>3]=0.0}c[o+28>>2]=0;a[o+42>>0]=0;HO(o);l=o;l=pR(c[l>>2]|0,c[l+4>>2]|0,1e3,0)|0;l=fR(l|0,C|0,413362496,49)|0;c[n>>2]=l;if(TO(n,m)|0){je(c[j>>2]|0,46539,-1);c[c[k>>2]>>2]=1;o=g;c[o>>2]=0;c[o+4>>2]=0;o=g;p=o;p=c[p>>2]|0;o=o+4|0;o=c[o>>2]|0;C=o;i=q;return p|0}else{c[p+8>>2]=(c[m+20>>2]|0)+1900;c[p+12>>2]=(c[m+16>>2]|0)+1;c[p+16>>2]=c[m+12>>2];c[p+20>>2]=c[m+8>>2];c[p+24>>2]=c[m+4>>2];h[p+32>>3]=+(c[m>>2]|0);a[p+40>>0]=1;a[p+41>>0]=1;a[p+42>>0]=0;a[p+43>>0]=0;HO(p);c[c[k>>2]>>2]=0;n=p;p=o;p=fR(c[n>>2]|0,c[n+4>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0;o=g;c[o>>2]=p;c[o+4>>2]=C;o=g;p=o;p=c[p>>2]|0;o=o+4|0;o=c[o>>2]|0;C=o;i=q;return p|0}return 0}function PO(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+40>>0]=0;a[(c[e>>2]|0)+41>>0]=0;a[(c[e>>2]|0)+43>>0]=0;i=d;return}function QO(b,e){b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+64|0;p=q+24|0;r=q+16|0;f=q+48|0;g=q+44|0;j=q+40|0;k=q+36|0;l=q+32|0;o=q+28|0;m=q+8|0;n=q;c[g>>2]=b;c[j>>2]=e;h[m>>3]=0.0;b=c[g>>2]|0;c[r>>2]=k;c[r+4>>2]=l;if((RO(b,46519,r)|0)!=2){c[f>>2]=1;r=c[f>>2]|0;i=q;return r|0}c[g>>2]=(c[g>>2]|0)+5;if((a[c[g>>2]>>0]|0)==58){c[g>>2]=(c[g>>2]|0)+1;r=c[g>>2]|0;c[p>>2]=o;if((RO(r,46527,p)|0)!=1){c[f>>2]=1;r=c[f>>2]|0;i=q;return r|0}c[g>>2]=(c[g>>2]|0)+2;if((a[c[g>>2]>>0]|0)==46?(d[19267+(d[(c[g>>2]|0)+1>>0]|0)>>0]&4|0)!=0:0){h[n>>3]=1.0;c[g>>2]=(c[g>>2]|0)+1;while(1){if(!(d[19267+(d[c[g>>2]>>0]|0)>>0]&4))break;h[m>>3]=+h[m>>3]*10.0+ +(a[c[g>>2]>>0]|0)-48.0;h[n>>3]=+h[n>>3]*10.0;c[g>>2]=(c[g>>2]|0)+1}h[m>>3]=+h[m>>3]/+h[n>>3]}}else c[o>>2]=0;a[(c[j>>2]|0)+42>>0]=0;a[(c[j>>2]|0)+41>>0]=1;c[(c[j>>2]|0)+20>>2]=c[k>>2];c[(c[j>>2]|0)+24>>2]=c[l>>2];h[(c[j>>2]|0)+32>>3]=+(c[o>>2]|0)+ +h[m>>3];if(SO(c[g>>2]|0,c[j>>2]|0)|0){c[f>>2]=1;r=c[f>>2]|0;i=q;return r|0}else{a[(c[j>>2]|0)+43>>0]=(c[(c[j>>2]|0)+28>>2]|0)!=0?1:0;c[f>>2]=0;r=c[f>>2]|0;i=q;return r|0}return 0}function RO(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;j=s+28|0;k=s+24|0;m=s+8|0;r=s+4|0;p=s+36|0;l=s+35|0;o=s+34|0;q=s;n=s+32|0;c[j>>2]=f;c[k>>2]=g;c[r>>2]=0;c[m>>2]=h;a:while(1){a[l>>0]=(a[c[k>>2]>>0]|0)-48;a[o>>0]=(a[(c[k>>2]|0)+1>>0]|0)-48;c[q>>2]=0;b[n>>1]=b[17286+((a[(c[k>>2]|0)+2>>0]|0)-97<<1)>>1]|0;a[p>>0]=a[(c[k>>2]|0)+3>>0]|0;c[q>>2]=0;while(1){g=a[l>>0]|0;a[l>>0]=g+-1<<24>>24;if(!(g<<24>>24))break;if(!(d[19267+(d[c[j>>2]>>0]|0)>>0]&4)){j=11;break a}c[q>>2]=((c[q>>2]|0)*10|0)+(a[c[j>>2]>>0]|0)-48;c[j>>2]=(c[j>>2]|0)+1}if((c[q>>2]|0)<(a[o>>0]|0)){j=11;break}if((c[q>>2]|0)>(e[n>>1]|0)){j=11;break}if((a[p>>0]|0)!=0?(a[p>>0]|0)!=(a[c[j>>2]>>0]|0):0){j=11;break}f=c[q>>2]|0;h=(c[m>>2]|0)+(4-1)&~(4-1);g=c[h>>2]|0;c[m>>2]=h+4;c[g>>2]=f;c[j>>2]=(c[j>>2]|0)+1;c[r>>2]=(c[r>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+4;if(!(a[p>>0]|0)){j=11;break}}if((j|0)==11){i=s;return c[r>>2]|0}return 0}function SO(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;n=p;f=p+32|0;g=p+28|0;h=p+24|0;m=p+20|0;k=p+16|0;l=p+12|0;j=p+8|0;c[g>>2]=b;c[h>>2]=e;c[m>>2]=0;while(1){if(!(d[19267+(d[c[g>>2]>>0]|0)>>0]&1))break;c[g>>2]=(c[g>>2]|0)+1}c[(c[h>>2]|0)+28>>2]=0;c[j>>2]=a[c[g>>2]>>0];do if((c[j>>2]|0)==45){c[m>>2]=-1;o=11}else{if((c[j>>2]|0)==43){c[m>>2]=1;o=11;break}if((c[j>>2]|0)==90|(c[j>>2]|0)==122){c[g>>2]=(c[g>>2]|0)+1;break}c[f>>2]=(c[j>>2]|0)!=0&1;o=c[f>>2]|0;i=p;return o|0}while(0);do if((o|0)==11){c[g>>2]=(c[g>>2]|0)+1;o=c[g>>2]|0;c[n>>2]=k;c[n+4>>2]=l;if((RO(o,46531,n)|0)==2){c[g>>2]=(c[g>>2]|0)+5;o=_(c[m>>2]|0,(c[l>>2]|0)+((c[k>>2]|0)*60|0)|0)|0;c[(c[h>>2]|0)+28>>2]=o;break}c[f>>2]=1;o=c[f>>2]|0;i=p;return o|0}while(0);while(1){if(!(d[19267+(d[c[g>>2]>>0]|0)>>0]&1))break;c[g>>2]=(c[g>>2]|0)+1}a[(c[h>>2]|0)+44>>0]=1;c[f>>2]=(a[c[g>>2]>>0]|0)!=0&1;o=c[f>>2]|0;i=p;return o|0}function TO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;d=g+8|0;f=g+4|0;e=g;c[h>>2]=a;c[d>>2]=b;a=Kb(c[h>>2]|0)|0;c[e>>2]=a;c[e>>2]=(c[69]|0)!=0?0:a;if(c[e>>2]|0){d=c[d>>2]|0;b=c[e>>2]|0;a=d+44|0;do{c[d>>2]=c[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(a|0))}c[f>>2]=(c[e>>2]|0)==0&1;i=g;return c[f>>2]|0}function UO(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;f=o;g=o+36|0;h=o+32|0;j=o+28|0;m=o+24|0;l=o+20|0;k=o+16|0;n=o+12|0;c[h>>2]=b;c[j>>2]=e;if((a[c[h>>2]>>0]|0)==45){c[h>>2]=(c[h>>2]|0)+1;c[n>>2]=1}else c[n>>2]=0;b=c[h>>2]|0;c[f>>2]=m;c[f+4>>2]=l;c[f+8>>2]=k;if((RO(b,46566,f)|0)!=3){c[g>>2]=1;n=c[g>>2]|0;i=o;return n|0}c[h>>2]=(c[h>>2]|0)+10;while(1){if(d[19267+(d[c[h>>2]>>0]|0)>>0]&1)f=1;else f=84==(d[c[h>>2]>>0]|0);e=c[h>>2]|0;if(!f)break;c[h>>2]=e+1}do if(QO(e,c[j>>2]|0)|0){if(!(a[c[h>>2]>>0]|0)){a[(c[j>>2]|0)+41>>0]=0;break}c[g>>2]=1;n=c[g>>2]|0;i=o;return n|0}while(0);a[(c[j>>2]|0)+42>>0]=0;a[(c[j>>2]|0)+40>>0]=1;m=c[m>>2]|0;c[(c[j>>2]|0)+8>>2]=(c[n>>2]|0)!=0?0-m|0:m;c[(c[j>>2]|0)+12>>2]=c[l>>2];c[(c[j>>2]|0)+16>>2]=c[k>>2];if(a[(c[j>>2]|0)+43>>0]|0)HO(c[j>>2]|0);c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}function VO(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f+4|0;d=f;c[b>>2]=a;c[d>>2]=(c[(c[b>>2]|0)+12>>2]|0)+136;a=c[d>>2]|0;if((c[a>>2]|0)==0&(c[a+4>>2]|0)==0?(c[e>>2]=IH(c[c[(c[c[b>>2]>>2]|0)+32>>2]>>2]|0,c[d>>2]|0)|0,(c[e>>2]|0)!=0):0){e=c[d>>2]|0;c[e>>2]=0;c[e+4>>2]=0}e=c[d>>2]|0;C=c[e+4>>2]|0;i=f;return c[e>>2]|0}function WO(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+64|0;g=v+52|0;h=v+48|0;j=v+44|0;u=v+40|0;t=v+36|0;r=v+32|0;m=v+28|0;n=v+24|0;k=v+20|0;l=v+16|0;q=v+12|0;s=v+8|0;o=v+4|0;p=v;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=0;c[l>>2]=0;if((fe(c[c[j>>2]>>2]|0)|0)==5){i=v;return}c[u>>2]=ae(c[c[j>>2]>>2]|0)|0;if(!(c[u>>2]|0)){i=v;return}c[r>>2]=be(c[c[j>>2]>>2]|0)|0;a:do if((c[h>>2]|0)!=1){b=ae(c[(c[j>>2]|0)+4>>2]|0)|0;c[t>>2]=b;if(!b){i=v;return}c[s>>2]=c[t>>2];c[q>>2]=0;while(1){if(!(a[c[s>>2]>>0]|0))break;b=c[s>>2]|0;c[s>>2]=b+1;b:do if((d[b>>0]|0)>=192)while(1){if((d[c[s>>2]>>0]&192|0)!=128)break b;c[s>>2]=(c[s>>2]|0)+1}while(0);c[q>>2]=(c[q>>2]|0)+1}if((c[q>>2]|0)>0){f=c[g>>2]|0;b=c[q>>2]|0;b=rR(b|0,((b|0)<0)<<31>>31|0,5,0)|0;c[l>>2]=GP(f,b,C)|0;if(!(c[l>>2]|0)){i=v;return}c[k>>2]=(c[l>>2]|0)+(c[q>>2]<<2);c[s>>2]=c[t>>2];c[q>>2]=0;while(1){if(!(a[c[s>>2]>>0]|0))break a;c[(c[l>>2]|0)+(c[q>>2]<<2)>>2]=c[s>>2];b=c[s>>2]|0;c[s>>2]=b+1;c:do if((d[b>>0]|0)>=192)while(1){if((d[c[s>>2]>>0]&192|0)!=128)break c;c[s>>2]=(c[s>>2]|0)+1}while(0);a[(c[k>>2]|0)+(c[q>>2]|0)>>0]=(c[s>>2]|0)-(c[(c[l>>2]|0)+(c[q>>2]<<2)>>2]|0);c[q>>2]=(c[q>>2]|0)+1}}}else{c[q>>2]=1;c[k>>2]=47041;c[l>>2]=9964;c[t>>2]=0}while(0);if((c[q>>2]|0)>0){c[m>>2]=ve(c[g>>2]|0)|0;d:do if((c[m>>2]&1|0)!=0&(c[r>>2]|0)>0)do{c[o>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[q>>2]|0))break;c[o>>2]=d[(c[k>>2]|0)+(c[n>>2]|0)>>0];if((c[o>>2]|0)<=(c[r>>2]|0)?(vQ(c[u>>2]|0,c[(c[l>>2]|0)+(c[n>>2]<<2)>>2]|0,c[o>>2]|0)|0)==0:0)break;c[n>>2]=(c[n>>2]|0)+1}if((c[n>>2]|0)>=(c[q>>2]|0))break d;c[u>>2]=(c[u>>2]|0)+(c[o>>2]|0);c[r>>2]=(c[r>>2]|0)-(c[o>>2]|0)}while((c[r>>2]|0)>0);while(0);e:do if((c[m>>2]&2|0)!=0&(c[r>>2]|0)>0)do{c[p>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[q>>2]|0))break;c[p>>2]=d[(c[k>>2]|0)+(c[n>>2]|0)>>0];if((c[p>>2]|0)<=(c[r>>2]|0)?(vQ((c[u>>2]|0)+((c[r>>2]|0)-(c[p>>2]|0))|0,c[(c[l>>2]|0)+(c[n>>2]<<2)>>2]|0,c[p>>2]|0)|0)==0:0)break;c[n>>2]=(c[n>>2]|0)+1}if((c[n>>2]|0)>=(c[q>>2]|0))break e;c[r>>2]=(c[r>>2]|0)-(c[p>>2]|0)}while((c[r>>2]|0)>0);while(0);if(c[t>>2]|0)Kd(c[l>>2]|0)}ne(c[g>>2]|0,c[u>>2]|0,c[r>>2]|0,-1);i=v;return}function XO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;e=n+24|0;f=n+20|0;g=n+16|0;h=n+12|0;k=n+8|0;j=n+4|0;l=n;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;a=(ve(c[e>>2]|0)|0)==0;c[k>>2]=a?0:-1;c[l>>2]=HP(c[e>>2]|0)|0;c[j>>2]=0;if((fe(c[c[g>>2]>>2]|0)|0)==5){i=n;return}c[h>>2]=1;while(1){if((c[h>>2]|0)>=(c[f>>2]|0))break;if((fe(c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0)|0)==5){m=9;break}a=cI(c[(c[g>>2]|0)+(c[j>>2]<<2)>>2]|0,c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]|0,c[l>>2]|0)|0;if((a^c[k>>2]|0)>=0)c[j>>2]=c[h>>2];c[h>>2]=(c[h>>2]|0)+1}if((m|0)==9){i=n;return}pe(c[e>>2]|0,c[(c[g>>2]|0)+(c[j>>2]<<2)>>2]|0);i=n;return}function YO(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+28|0;f=n+20|0;k=n+16|0;l=n+12|0;j=n+8|0;h=n+4|0;m=n;c[g>>2]=a;c[n+24>>2]=d;c[f>>2]=e;c[k>>2]=c[c[f>>2]>>2];c[l>>2]=xe(c[g>>2]|0,40)|0;if(!(c[l>>2]|0)){i=n;return}a=(fe(c[c[f>>2]>>2]|0)|0)==5;f=(b[(c[l>>2]|0)+8>>1]|0)!=0;if(a){if(!f){i=n;return}IP(c[g>>2]|0);i=n;return}d=c[g>>2]|0;if(!f){m=we(d)|0;c[(c[l>>2]|0)+32>>2]=m;gh(c[l>>2]|0,c[k>>2]|0)|0;i=n;return}c[m>>2]=HP(d)|0;c[j>>2]=(ve(c[g>>2]|0)|0)!=0&1;c[h>>2]=cI(c[l>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;if(!((c[j>>2]|0)!=0&(c[h>>2]|0)<0)?!((c[j>>2]|0)==0&(c[h>>2]|0)>0):0){IP(c[g>>2]|0);i=n;return}gh(c[l>>2]|0,c[k>>2]|0)|0;i=n;return}function ZO(a){a=a|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=xe(c[d>>2]|0,0)|0;if(!(c[e>>2]|0)){i=f;return}if(b[(c[e>>2]|0)+8>>1]|0)pe(c[d>>2]|0,c[e>>2]|0);Ug(c[e>>2]|0);i=f;return}function _O(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+12|0;h=g+4|0;f=g;c[e>>2]=a;c[g+8>>2]=b;c[h>>2]=d;c[f>>2]=0;switch(fe(c[c[h>>2]>>2]|0)|0){case 1:{c[f>>2]=40517;break}case 3:{c[f>>2]=47031;break}case 2:{c[f>>2]=40512;break}case 4:{c[f>>2]=47036;break}default:c[f>>2]=40525}ne(c[e>>2]|0,c[f>>2]|0,-1,0);i=g;return}function $O(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+8|0;j=l+4|0;k=l;c[g>>2]=b;c[l+12>>2]=e;c[h>>2]=f;switch(fe(c[c[h>>2]>>2]|0)|0){case 2:case 1:case 4:{ke(c[g>>2]|0,be(c[c[h>>2]>>2]|0)|0);i=l;return}case 3:{c[k>>2]=ae(c[c[h>>2]>>2]|0)|0;if(!(c[k>>2]|0)){i=l;return}c[j>>2]=0;a:while(1){if(!(a[c[k>>2]>>0]|0))break;c[j>>2]=(c[j>>2]|0)+1;b=c[k>>2]|0;c[k>>2]=b+1;if((d[b>>0]|0)<192)continue;while(1){if((d[c[k>>2]>>0]&192|0)!=128)continue a;c[k>>2]=(c[k>>2]|0)+1}}ke(c[g>>2]|0,c[j>>2]|0);i=l;return}default:{me(c[g>>2]|0);i=l;return}}}function aP(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;f=q+40|0;g=q+32|0;o=q+28|0;p=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;h=q+4|0;j=q;c[f>>2]=a;c[q+36>>2]=b;c[g>>2]=e;c[h>>2]=1;c[m>>2]=fe(c[c[g>>2]>>2]|0)|0;c[n>>2]=fe(c[(c[g>>2]|0)+4>>2]|0)|0;if((c[m>>2]|0)==5|(c[n>>2]|0)==5){i=q;return}c[k>>2]=be(c[c[g>>2]>>2]|0)|0;c[l>>2]=be(c[(c[g>>2]|0)+4>>2]|0)|0;b=c[c[g>>2]>>2]|0;if((c[m>>2]|0)==4&(c[n>>2]|0)==4){c[o>>2]=$d(b)|0;c[p>>2]=$d(c[(c[g>>2]|0)+4>>2]|0)|0;c[j>>2]=0}else{c[o>>2]=ae(b)|0;c[p>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;c[j>>2]=1}a:while(1){if((c[l>>2]|0)>(c[k>>2]|0))break;if(!(vQ(c[o>>2]|0,c[p>>2]|0,c[l>>2]|0)|0))break;c[h>>2]=(c[h>>2]|0)+1;while(1){c[k>>2]=(c[k>>2]|0)+-1;c[o>>2]=(c[o>>2]|0)+1;if(!(c[j>>2]|0))continue a;if(((d[c[o>>2]>>0]|0)&192|0)!=128)continue a}}if((c[l>>2]|0)>(c[k>>2]|0))c[h>>2]=0;ke(c[f>>2]|0,c[h>>2]|0);i=q;return}function bP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;m=r+44|0;g=r+40|0;h=r+36|0;p=r+32|0;q=r+28|0;j=r+24|0;l=r+20|0;n=r+8|0;o=r;k=r+16|0;c[m>>2]=b;c[g>>2]=e;c[h>>2]=f;c[k>>2]=0;if((fe(c[(c[h>>2]|0)+4>>2]|0)|0)==5){i=r;return}if((c[g>>2]|0)==3?(fe(c[(c[h>>2]|0)+8>>2]|0)|0)==5:0){i=r;return}c[l>>2]=fe(c[c[h>>2]>>2]|0)|0;b=de(c[(c[h>>2]|0)+4>>2]|0)|0;e=n;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;e=c[c[h>>2]>>2]|0;a:do if((c[l>>2]|0)==4){c[j>>2]=be(e)|0;c[p>>2]=$d(c[c[h>>2]>>2]|0)|0;if(!(c[p>>2]|0)){i=r;return}}else{c[p>>2]=ae(e)|0;if(!(c[p>>2]|0)){i=r;return}c[j>>2]=0;if((c[n+4>>2]|0)<0){c[q>>2]=c[p>>2];while(1){if(!(a[c[q>>2]>>0]|0))break a;b=c[q>>2]|0;c[q>>2]=b+1;b:do if((d[b>>0]|0)>=192)while(1){if((d[c[q>>2]>>0]&192|0)!=128)break b;c[q>>2]=(c[q>>2]|0)+1}while(0);c[j>>2]=(c[j>>2]|0)+1}}}while(0);if((c[g>>2]|0)==3){g=de(c[(c[h>>2]|0)+8>>2]|0)|0;h=o;c[h>>2]=g;c[h+4>>2]=((g|0)<0)<<31>>31;if((c[o+4>>2]|0)<0){g=o;g=fR(0,0,c[g>>2]|0,c[g+4>>2]|0)|0;h=o;c[h>>2]=g;c[h+4>>2]=C;c[k>>2]=1}}else{g=c[(we(c[m>>2]|0)|0)+88>>2]|0;h=o;c[h>>2]=g;c[h+4>>2]=((g|0)<0)<<31>>31}do if((c[n+4>>2]|0)<0){g=c[j>>2]|0;h=n;g=gR(c[h>>2]|0,c[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;h=n;c[h>>2]=g;c[h+4>>2]=C;if((c[n+4>>2]|0)<0){f=n;g=o;f=gR(c[g>>2]|0,c[g+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;g=C;b=o;c[b>>2]=f;c[b+4>>2]=g;b=(c[o+4>>2]|0)<0;h=o;c[h>>2]=b?0:f;c[h+4>>2]=b?0:g;h=n;c[h>>2]=0;c[h+4>>2]=0}}else{h=n;g=c[h+4>>2]|0;if((g|0)>0|(g|0)==0&(c[h>>2]|0)>>>0>0){g=n;g=gR(c[g>>2]|0,c[g+4>>2]|0,-1,-1)|0;h=n;c[h>>2]=g;c[h+4>>2]=C;break}h=o;g=c[h+4>>2]|0;if((g|0)>0|(g|0)==0&(c[h>>2]|0)>>>0>0){g=o;g=gR(c[g>>2]|0,c[g+4>>2]|0,-1,-1)|0;h=o;c[h>>2]=g;c[h+4>>2]=C}}while(0);if((c[k>>2]|0)!=0?(h=o,k=n,h=fR(c[k>>2]|0,c[k+4>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0,k=n,c[k>>2]=h,c[k+4>>2]=C,(c[n+4>>2]|0)<0):0){h=n;k=o;h=gR(c[k>>2]|0,c[k+4>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0;k=o;c[k>>2]=h;c[k+4>>2]=C;k=n;c[k>>2]=0;c[k+4>>2]=0}if((c[l>>2]|0)==4){h=n;l=o;l=gR(c[h>>2]|0,c[h+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0;h=C;q=c[j>>2]|0;k=((q|0)<0)<<31>>31;if((h|0)>(k|0)|(h|0)==(k|0)&l>>>0>q>>>0){l=c[j>>2]|0;j=n;j=fR(l|0,((l|0)<0)<<31>>31|0,c[j>>2]|0,c[j+4>>2]|0)|0;l=C;k=o;c[k>>2]=j;c[k+4>>2]=l;k=(c[o+4>>2]|0)<0;q=o;c[q>>2]=k?0:j;c[q+4>>2]=k?0:l}q=o;he(c[m>>2]|0,(c[p>>2]|0)+(c[n>>2]|0)|0,c[q>>2]|0,c[q+4>>2]|0,-1);i=r;return}while(1){l=n;e=c[p>>2]|0;if(!((d[c[p>>2]>>0]|0)!=0?(c[l>>2]|0)!=0|(c[l+4>>2]|0)!=0:0))break;c[p>>2]=e+1;c:do if((d[e>>0]|0)>=192)while(1){if((d[c[p>>2]>>0]&192|0)!=128)break c;c[p>>2]=(c[p>>2]|0)+1}while(0);k=n;k=gR(c[k>>2]|0,c[k+4>>2]|0,-1,-1)|0;l=n;c[l>>2]=k;c[l+4>>2]=C}c[q>>2]=e;while(1){n=o;if(!((d[c[q>>2]>>0]|0)!=0?(c[n>>2]|0)!=0|(c[n+4>>2]|0)!=0:0))break;n=c[q>>2]|0;c[q>>2]=n+1;d:do if((d[n>>0]|0)>=192)while(1){if((d[c[q>>2]>>0]&192|0)!=128)break d;c[q>>2]=(c[q>>2]|0)+1}while(0);l=o;l=gR(c[l>>2]|0,c[l+4>>2]|0,-1,-1)|0;n=o;c[n>>2]=l;c[n+4>>2]=C}q=(c[q>>2]|0)-(c[p>>2]|0)|0;oe(c[m>>2]|0,c[p>>2]|0,q,((q|0)<0)<<31>>31,-1,1);i=r;return}function cP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+80|0;m=p;f=p+64|0;g=p+60|0;h=p+56|0;n=p+44|0;l=p+16|0;o=p+12|0;k=p+8|0;j=p+4|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=we(c[f>>2]|0)|0;if((c[g>>2]|0)<1){i=p;return}b=ae(c[c[h>>2]>>2]|0)|0;c[o>>2]=b;if(!b){i=p;return}c[n>>2]=(c[g>>2]|0)-1;c[n+4>>2]=0;c[n+8>>2]=(c[h>>2]|0)+4;cg(l,c[j>>2]|0,0,0,c[(c[j>>2]|0)+88>>2]|0);a[l+25>>0]=2;o=c[o>>2]|0;c[m>>2]=n;$z(l,o,m);c[k>>2]=c[l+12>>2];n=c[f>>2]|0;o=eg(l)|0;ne(n,o,c[k>>2]|0,170);i=p;return}function dP(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;f=h+12|0;j=h+4|0;g=h;c[f>>2]=a;c[h+8>>2]=b;c[j>>2]=e;c[g>>2]=ae(c[c[j>>2]>>2]|0)|0;if(!(c[g>>2]|0)){i=h;return}if(!(d[c[g>>2]>>0]|0)){i=h;return}j=c[f>>2]|0;ke(j,jC(g)|0);i=h;return}function eP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;f=o+32|0;g=o+28|0;h=o+24|0;m=o+20|0;n=o+16|0;k=o+12|0;l=o;j=o+8|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;b=(c[g>>2]<<2)+1|0;b=Jd(b,((b|0)<0)<<31>>31)|0;c[m>>2]=b;c[n>>2]=b;if(!(c[m>>2]|0)){te(c[f>>2]|0);i=o;return}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[g>>2]|0))break;p=ee(c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)|0;b=C;e=l;c[e>>2]=p;c[e+4>>2]=b;e=l;d=c[e+4>>2]|0;e=(c[l+4>>2]|0)<0|((d|0)>0|(d|0)==0&(c[e>>2]|0)>>>0>1114111);d=l;c[d>>2]=e?65533:p;c[d+4>>2]=e?0:b;c[j>>2]=c[l>>2]&2097151;d=c[j>>2]|0;do if((c[j>>2]|0)>>>0>=128){e=c[j>>2]|0;if(d>>>0<2048){b=c[n>>2]|0;c[n>>2]=b+1;a[b>>0]=192+(e>>>6&31);b=128+(c[j>>2]&63)&255;p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=b;break}d=c[j>>2]|0;if(e>>>0<65536){p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=224+(d>>>12&15);p=128+((c[j>>2]|0)>>>6&63)&255;b=c[n>>2]|0;c[n>>2]=b+1;a[b>>0]=p;b=128+(c[j>>2]&63)&255;p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=b;break}else{b=c[n>>2]|0;c[n>>2]=b+1;a[b>>0]=240+(d>>>18&7);b=128+((c[j>>2]|0)>>>12&63)&255;p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=b;p=128+((c[j>>2]|0)>>>6&63)&255;b=c[n>>2]|0;c[n>>2]=b+1;a[b>>0]=p;b=128+(c[j>>2]&63)&255;p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=b;break}}else{p=c[n>>2]|0;c[n>>2]=p+1;a[p>>0]=d}while(0);c[k>>2]=(c[k>>2]|0)+1}p=(c[n>>2]|0)-(c[m>>2]|0)|0;oe(c[f>>2]|0,c[m>>2]|0,p,((p|0)<0)<<31>>31,148,1);i=o;return}function fP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0;k=i;i=i+32|0;e=k+24|0;f=k+16|0;g=k+8|0;j=k;c[e>>2]=a;c[k+20>>2]=b;c[f>>2]=d;switch(fe(c[c[f>>2]>>2]|0)|0){case 1:{j=g;c[j>>2]=ee(c[c[f>>2]>>2]|0)|0;c[j+4>>2]=C;do if((c[g+4>>2]|0)<0){j=g;if(!((c[j>>2]|0)==0?(c[j+4>>2]|0)==-2147483648:0)){a=g;a=fR(0,0,c[a>>2]|0,c[a+4>>2]|0)|0;j=g;c[j>>2]=a;c[j+4>>2]=C;break}je(c[e>>2]|0,46986,-1);i=k;return}while(0);j=g;le(c[e>>2]|0,c[j>>2]|0,c[j+4>>2]|0);i=k;return}case 5:{me(c[e>>2]|0);i=k;return}default:{h[j>>3]=+ce(c[c[f>>2]>>2]|0);if(+h[j>>3]<0.0)h[j>>3]=-+h[j>>3];ie(c[e>>2]|0,+h[j>>3]);i=k;return}}}function gP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0.0;m=i;i=i+48|0;k=m+8|0;e=m+40|0;n=m+36|0;f=m+32|0;g=m+28|0;j=m;l=m+24|0;c[e>>2]=a;c[n>>2]=b;c[f>>2]=d;c[g>>2]=0;do if((c[n>>2]|0)==2)if(5==(fe(c[(c[f>>2]|0)+4>>2]|0)|0)){i=m;return}else{n=de(c[(c[f>>2]|0)+4>>2]|0)|0;c[g>>2]=n;n=(c[g>>2]|0)>30?30:n;c[g>>2]=n;c[g>>2]=(c[g>>2]|0)<0?0:n;break}while(0);if((fe(c[c[f>>2]>>2]|0)|0)==5){i=m;return}h[j>>3]=+ce(c[c[f>>2]>>2]|0);do if((c[g>>2]|0)==0&+h[j>>3]>=0.0&+h[j>>3]<9223372036854775808.0){o=+h[j>>3]+.5;h[j>>3]=+(~~o>>>0>>>0)+4294967296.0*+((+N(o)>=1.0?o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0:0)|0)}else{if((c[g>>2]|0)==0&+h[j>>3]<0.0?-+h[j>>3]<9223372036854775808.0:0){o=-+h[j>>3]+.5;h[j>>3]=-(+(~~o>>>0>>>0)+4294967296.0*+((+N(o)>=1.0?o>0.0?~~+$(+M(o/4294967296.0),4294967295.0)>>>0:~~+Z((o-+(~~o>>>0))/4294967296.0)>>>0:0)|0));break}o=+h[j>>3];c[k>>2]=c[g>>2];h[k+8>>3]=o;c[l>>2]=Od(47026,k)|0;if(c[l>>2]|0){n=c[l>>2]|0;Ky(n,j,If(c[l>>2]|0)|0,1)|0;Kd(c[l>>2]|0);break}te(c[e>>2]|0);i=m;return}while(0);ie(c[e>>2]|0,+h[j>>3]);i=m;return}function hP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;g=m+24|0;n=m+16|0;k=m+12|0;l=m+8|0;h=m+4|0;j=m;c[g>>2]=b;c[m+20>>2]=e;c[n>>2]=f;c[l>>2]=ae(c[c[n>>2]>>2]|0)|0;c[j>>2]=be(c[c[n>>2]>>2]|0)|0;if(!(c[l>>2]|0)){i=m;return}b=c[g>>2]|0;n=c[j>>2]|0;n=gR(n|0,((n|0)<0)<<31>>31|0,1,0)|0;c[k>>2]=GP(b,n,C)|0;if(!(c[k>>2]|0)){i=m;return}c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[j>>2]|0))break;a[(c[k>>2]|0)+(c[h>>2]|0)>>0]=a[(c[l>>2]|0)+(c[h>>2]|0)>>0]&~(d[19267+(d[(c[l>>2]|0)+(c[h>>2]|0)>>0]|0)>>0]&32);c[h>>2]=(c[h>>2]|0)+1}ne(c[g>>2]|0,c[k>>2]|0,c[j>>2]|0,148);i=m;return}function iP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;g=m+24|0;n=m+16|0;k=m+12|0;l=m+8|0;h=m+4|0;j=m;c[g>>2]=b;c[m+20>>2]=e;c[n>>2]=f;c[l>>2]=ae(c[c[n>>2]>>2]|0)|0;c[j>>2]=be(c[c[n>>2]>>2]|0)|0;if(!(c[l>>2]|0)){i=m;return}b=c[g>>2]|0;n=c[j>>2]|0;n=gR(n|0,((n|0)<0)<<31>>31|0,1,0)|0;c[k>>2]=GP(b,n,C)|0;if(!(c[k>>2]|0)){i=m;return}c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[j>>2]|0))break;a[(c[k>>2]|0)+(c[h>>2]|0)>>0]=a[18477+(d[(c[l>>2]|0)+(c[h>>2]|0)>>0]|0)>>0]|0;c[h>>2]=(c[h>>2]|0)+1}ne(c[g>>2]|0,c[k>>2]|0,c[j>>2]|0,148);i=m;return}function jP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;a=c[f>>2]|0;ne(a,jf()|0,-1,0);i=e;return}function kP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;g=o+28|0;p=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;n=o+4|0;m=o;h=o+32|0;c[g>>2]=b;c[o+24>>2]=e;c[p>>2]=f;c[l>>2]=$d(c[c[p>>2]>>2]|0)|0;c[k>>2]=be(c[c[p>>2]>>2]|0)|0;f=c[g>>2]|0;b=c[k>>2]|0;b=rR(b|0,((b|0)<0)<<31>>31|0,2,0)|0;b=gR(b|0,C|0,1,0)|0;b=GP(f,b,C)|0;c[n>>2]=b;c[m>>2]=b;if(!(c[n>>2]|0)){i=o;return}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[k>>2]|0))break;a[h>>0]=a[c[l>>2]>>0]|0;p=a[47010+((d[h>>0]|0)>>4&15)>>0]|0;b=c[m>>2]|0;c[m>>2]=b+1;a[b>>0]=p;b=a[47010+((d[h>>0]|0)&15)>>0]|0;p=c[m>>2]|0;c[m>>2]=p+1;a[p>>0]=b;c[j>>2]=(c[j>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+1}a[c[m>>2]>>0]=0;ne(c[g>>2]|0,c[n>>2]|0,c[k>>2]<<1,148);i=o;return}function lP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+32|0;e=g+16|0;f=g;c[e>>2]=a;c[g+12>>2]=b;c[g+8>>2]=d;Sd(8,f);if((c[f+4>>2]|0)<0){d=f;d=fR(0,0,c[d>>2]|0,c[d+4>>2]&2147483647|0)|0;a=f;c[a>>2]=d;c[a+4>>2]=C}le(c[e>>2]|0,c[f>>2]|0,c[f+4>>2]|0);i=g;return}function mP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;e=h+16|0;j=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[h+12>>2]=b;c[j>>2]=d;a=de(c[c[j>>2]>>2]|0)|0;c[f>>2]=a;c[f>>2]=(c[f>>2]|0)<1?1:a;a=c[f>>2]|0;c[g>>2]=GP(c[e>>2]|0,a,((a|0)<0)<<31>>31)|0;if(!(c[g>>2]|0)){i=h;return}Sd(c[f>>2]|0,c[g>>2]|0);ge(c[e>>2]|0,c[g>>2]|0,c[f>>2]|0,148);i=h;return}function nP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+12|0;f=g+4|0;h=g;c[e>>2]=a;c[g+8>>2]=b;c[f>>2]=d;c[h>>2]=HP(c[e>>2]|0)|0;if(!(cI(c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+4>>2]|0,c[h>>2]|0)|0)){i=g;return}pe(c[e>>2]|0,c[c[f>>2]>>2]|0);i=g;return}function oP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;a=c[f>>2]|0;ne(a,kf()|0,-1,0);i=e;return}function pP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e;g=e+4|0;c[e+12>>2]=a;c[e+8>>2]=b;c[g>>2]=d;a=de(c[c[g>>2]>>2]|0)|0;c[f>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;Rd(a,19255,f);i=e;return}function qP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+12|0;h=g+4|0;f=g;c[e>>2]=a;c[g+8>>2]=b;c[h>>2]=d;a=ae(c[c[h>>2]>>2]|0)|0;c[f>>2]=a;if(!a){i=g;return}h=c[e>>2]|0;ke(h,yd(c[f>>2]|0)|0);i=g;return}function rP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+12|0;h=e+4|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[h>>2]=d;c[f>>2]=de(c[c[h>>2]>>2]|0)|0;a=c[g>>2]|0;ne(a,Ad(c[f>>2]|0)|0,-1,0);i=e;return}function sP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+144|0;s=y+32|0;r=y+24|0;g=y+80|0;j=y+72|0;p=y+16|0;q=y+8|0;w=y+84|0;x=y+68|0;v=y+64|0;o=y+60|0;k=y+56|0;l=y+52|0;m=y+48|0;n=y;u=y+44|0;t=y+40|0;c[g>>2]=b;c[y+76>>2]=e;c[j>>2]=f;switch(fe(c[c[j>>2]>>2]|0)|0){case 2:{h[p>>3]=+ce(c[c[j>>2]>>2]|0);h[r>>3]=+h[p>>3];Qd(50,w,29142,r)|0;Ky(w,q,20,1)|0;if(+h[p>>3]!=+h[q>>3]){h[s>>3]=+h[p>>3];Qd(50,w,47003,s)|0}ne(c[g>>2]|0,w,-1,-1);i=y;return}case 1:{pe(c[g>>2]|0,c[c[j>>2]>>2]|0);i=y;return}case 4:{c[x>>2]=0;c[v>>2]=$d(c[c[j>>2]>>2]|0)|0;c[o>>2]=be(c[c[j>>2]>>2]|0)|0;u=c[g>>2]|0;w=c[o>>2]|0;c[x>>2]=GP(u,gR(rR(2,0,w|0,((w|0)<0)<<31>>31|0)|0,C|0,4,0)|0,C)|0;if(!(c[x>>2]|0)){i=y;return}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[o>>2]|0))break;a[(c[x>>2]|0)+((c[k>>2]<<1)+2)>>0]=a[47010+(a[(c[v>>2]|0)+(c[k>>2]|0)>>0]>>4&15)>>0]|0;a[(c[x>>2]|0)+((c[k>>2]<<1)+3)>>0]=a[47010+(a[(c[v>>2]|0)+(c[k>>2]|0)>>0]&15)>>0]|0;c[k>>2]=(c[k>>2]|0)+1}a[(c[x>>2]|0)+((c[o>>2]<<1)+2)>>0]=39;a[(c[x>>2]|0)+((c[o>>2]<<1)+3)>>0]=0; -a[c[x>>2]>>0]=88;a[(c[x>>2]|0)+1>>0]=39;ne(c[g>>2]|0,c[x>>2]|0,-1,-1);Kd(c[x>>2]|0);i=y;return}case 3:{c[u>>2]=ae(c[c[j>>2]>>2]|0)|0;if(!(c[u>>2]|0)){i=y;return}c[l>>2]=0;x=n;c[x>>2]=0;c[x+4>>2]=0;while(1){if(!(a[(c[u>>2]|0)+(c[l>>2]|0)>>0]|0))break;if((d[(c[u>>2]|0)+(c[l>>2]|0)>>0]|0)==39){w=n;w=gR(c[w>>2]|0,c[w+4>>2]|0,1,0)|0;x=n;c[x>>2]=w;c[x+4>>2]=C}c[l>>2]=(c[l>>2]|0)+1}w=c[g>>2]|0;v=c[l>>2]|0;x=n;x=gR(v|0,((v|0)<0)<<31>>31|0,c[x>>2]|0,c[x+4>>2]|0)|0;x=gR(x|0,C|0,3,0)|0;c[t>>2]=GP(w,x,C)|0;if(!(c[t>>2]|0)){i=y;return}a[c[t>>2]>>0]=39;c[l>>2]=0;c[m>>2]=1;while(1){if(!(a[(c[u>>2]|0)+(c[l>>2]|0)>>0]|0))break;w=a[(c[u>>2]|0)+(c[l>>2]|0)>>0]|0;x=c[m>>2]|0;c[m>>2]=x+1;a[(c[t>>2]|0)+x>>0]=w;if((d[(c[u>>2]|0)+(c[l>>2]|0)>>0]|0)==39){x=c[m>>2]|0;c[m>>2]=x+1;a[(c[t>>2]|0)+x>>0]=39}c[l>>2]=(c[l>>2]|0)+1}x=c[m>>2]|0;c[m>>2]=x+1;a[(c[t>>2]|0)+x>>0]=39;a[(c[t>>2]|0)+(c[m>>2]|0)>>0]=0;ne(c[g>>2]|0,c[t>>2]|0,c[m>>2]|0,148);i=y;return}default:{ne(c[g>>2]|0,40498,4,0);i=y;return}}}function tP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[e+4>>2]=d;c[f>>2]=we(c[g>>2]|0)|0;d=c[g>>2]|0;a=of(c[f>>2]|0)|0;le(d,a,C);i=e;return}function uP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[e+4>>2]=d;c[f>>2]=we(c[g>>2]|0)|0;a=c[g>>2]|0;ke(a,pf(c[f>>2]|0)|0);i=e;return}function vP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[e+4>>2]=d;c[f>>2]=we(c[g>>2]|0)|0;a=c[g>>2]|0;ke(a,qf(c[f>>2]|0)|0);i=e;return}function wP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+80|0;p=w+64|0;g=w+56|0;v=w+52|0;n=w+48|0;o=w+44|0;u=w+40|0;s=w+36|0;l=w+32|0;m=w+28|0;k=w;j=w+24|0;q=w+20|0;r=w+16|0;t=w+12|0;h=w+8|0;c[p>>2]=b;c[w+60>>2]=e;c[g>>2]=f;c[v>>2]=ae(c[c[g>>2]>>2]|0)|0;if(!(c[v>>2]|0)){i=w;return}c[s>>2]=be(c[c[g>>2]>>2]|0)|0;c[n>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;if(!(c[n>>2]|0)){i=w;return}if(!(d[c[n>>2]>>0]|0)){pe(c[p>>2]|0,c[c[g>>2]>>2]|0);i=w;return}c[l>>2]=be(c[(c[g>>2]|0)+4>>2]|0)|0;c[o>>2]=ae(c[(c[g>>2]|0)+8>>2]|0)|0;if(!(c[o>>2]|0)){i=w;return}c[m>>2]=be(c[(c[g>>2]|0)+8>>2]|0)|0;f=(c[s>>2]|0)+1|0;b=k;c[b>>2]=f;c[b+4>>2]=((f|0)<0)<<31>>31;b=k;c[u>>2]=GP(c[p>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(!(c[u>>2]|0)){i=w;return}c[j>>2]=(c[s>>2]|0)-(c[l>>2]|0);c[r>>2]=0;c[q>>2]=0;while(1){if((c[q>>2]|0)>(c[j>>2]|0)){g=18;break}if((d[(c[v>>2]|0)+(c[q>>2]|0)>>0]|0|0)==(d[c[n>>2]>>0]|0|0)?(vQ((c[v>>2]|0)+(c[q>>2]|0)|0,c[n>>2]|0,c[l>>2]|0)|0)==0:0){c[h>>2]=we(c[p>>2]|0)|0;g=(c[m>>2]|0)-(c[l>>2]|0)|0;f=k;g=gR(c[f>>2]|0,c[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;f=k;c[f>>2]=g;c[f+4>>2]=C;f=k;f=fR(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;g=C;b=c[(c[h>>2]|0)+88>>2]|0;e=((b|0)<0)<<31>>31;if((g|0)>(e|0)|(g|0)==(e|0)&f>>>0>b>>>0){g=13;break}c[t>>2]=c[u>>2];b=c[k>>2]|0;c[u>>2]=Md(c[u>>2]|0,b,((b|0)<0)<<31>>31)|0;if(!(c[u>>2]|0)){g=15;break}iR((c[u>>2]|0)+(c[r>>2]|0)|0,c[o>>2]|0,c[m>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+(c[m>>2]|0);c[q>>2]=(c[q>>2]|0)+((c[l>>2]|0)-1)}else{f=a[(c[v>>2]|0)+(c[q>>2]|0)>>0]|0;b=c[r>>2]|0;c[r>>2]=b+1;a[(c[u>>2]|0)+b>>0]=f}c[q>>2]=(c[q>>2]|0)+1}if((g|0)==13){se(c[p>>2]|0);Kd(c[u>>2]|0);i=w;return}else if((g|0)==15){te(c[p>>2]|0);Kd(c[t>>2]|0);i=w;return}else if((g|0)==18){iR((c[u>>2]|0)+(c[r>>2]|0)|0,(c[v>>2]|0)+(c[q>>2]|0)|0,(c[s>>2]|0)-(c[q>>2]|0)|0)|0;c[r>>2]=(c[r>>2]|0)+((c[s>>2]|0)-(c[q>>2]|0));a[(c[u>>2]|0)+(c[r>>2]|0)>>0]=0;ne(c[p>>2]|0,c[u>>2]|0,c[r>>2]|0,148);i=w;return}}function xP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+32|0;e=g+20|0;j=g+12|0;h=g;f=g+8|0;c[e>>2]=a;c[g+16>>2]=b;c[j>>2]=d;j=ee(c[c[j>>2]>>2]|0)|0;d=C;b=h;c[b>>2]=j;c[b+4>>2]=d;b=(c[h+4>>2]|0)<0;a=h;c[a>>2]=b?0:j;c[a+4>>2]=b?0:d;a=h;c[f>>2]=qe(c[e>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(!(c[f>>2]|0)){i=g;return}re(c[e>>2]|0,c[f>>2]|0);i=g;return}function yP(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0.0;m=i;i=i+32|0;n=m+24|0;g=m+16|0;j=m+12|0;k=m+8|0;l=m;c[n>>2]=b;c[m+20>>2]=e;c[g>>2]=f;c[j>>2]=xe(c[n>>2]|0,32)|0;c[k>>2]=Te(c[c[g>>2]>>2]|0)|0;if(!((c[j>>2]|0)!=0&(c[k>>2]|0)!=5)){i=m;return}n=(c[j>>2]|0)+16|0;b=n;b=gR(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[n>>2]=b;c[n+4>>2]=C;g=c[c[g>>2]>>2]|0;if((c[k>>2]|0)!=1){o=+ce(g);n=c[j>>2]|0;h[n>>3]=+h[n>>3]+o;a[(c[j>>2]|0)+25>>0]=1;i=m;return}n=ee(g)|0;k=l;c[k>>2]=n;c[k+4>>2]=C;k=l;n=c[j>>2]|0;h[n>>3]=+h[n>>3]+(+((c[k>>2]|0)>>>0)+4294967296.0*+(c[k+4>>2]|0));if(d[(c[j>>2]|0)+25>>0]|0|(d[(c[j>>2]|0)+24>>0]|0)){i=m;return}n=l;if(!(_H((c[j>>2]|0)+8|0,c[n>>2]|0,c[n+4>>2]|0)|0)){i=m;return}a[(c[j>>2]|0)+24>>0]=1;i=m;return}function zP(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=xe(c[d>>2]|0,0)|0;if(!(c[e>>2]|0)){i=f;return}b=(c[e>>2]|0)+16|0;g=c[b+4>>2]|0;if(!((g|0)>0|(g|0)==0&(c[b>>2]|0)>>>0>0)){i=f;return}if(a[(c[e>>2]|0)+24>>0]|0){je(c[d>>2]|0,46986,-1);i=f;return}d=c[d>>2]|0;b=c[e>>2]|0;if(a[(c[e>>2]|0)+25>>0]|0){ie(d,+h[b>>3]);i=f;return}else{g=b+8|0;le(d,c[g>>2]|0,c[g+4>>2]|0);i=f;return}}function AP(a){a=a|0;var b=0,d=0,e=0,f=0.0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=xe(c[e>>2]|0,0)|0;a=c[e>>2]|0;if(!(c[b>>2]|0)){f=0.0;ie(a,f);i=d;return}f=+h[c[b>>2]>>3];ie(a,f);i=d;return}function BP(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=xe(c[b>>2]|0,0)|0;if(!(c[d>>2]|0)){i=e;return}a=(c[d>>2]|0)+16|0;f=c[a+4>>2]|0;if(!((f|0)>0|(f|0)==0&(c[a>>2]|0)>>>0>0)){i=e;return}f=(c[d>>2]|0)+16|0;ie(c[b>>2]|0,+h[c[d>>2]>>3]/(+((c[f>>2]|0)>>>0)+4294967296.0*+(c[f+4>>2]|0)));i=e;return}function CP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;j=g+12|0;h=g+8|0;e=g+4|0;f=g;c[j>>2]=a;c[h>>2]=b;c[e>>2]=d;c[f>>2]=xe(c[j>>2]|0,8)|0;if(!(c[h>>2]|0)){if(!(c[f>>2]|0)){i=g;return}}else{j=5!=(fe(c[c[e>>2]>>2]|0)|0);if(!(j&(c[f>>2]|0)!=0)){i=g;return}}j=c[f>>2]|0;h=j;h=gR(c[h>>2]|0,c[h+4>>2]|0,1,0)|0;c[j>>2]=h;c[j+4>>2]=C;i=g;return}function DP(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=xe(c[e>>2]|0,0)|0;a=c[e>>2]|0;if(!(c[b>>2]|0)){b=0;e=0;le(a,b,e);i=d;return}e=c[b>>2]|0;b=c[e>>2]|0;e=c[e+4>>2]|0;le(a,b,e);i=d;return}function EP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;e=p+36|0;f=p+32|0;g=p+28|0;o=p+24|0;m=p+20|0;n=p+16|0;l=p+12|0;k=p+8|0;h=p+4|0;j=p;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if((fe(c[c[g>>2]>>2]|0)|0)==5){i=p;return}c[m>>2]=xe(c[e>>2]|0,28)|0;if(!(c[m>>2]|0)){i=p;return}c[h>>2]=we(c[e>>2]|0)|0;c[j>>2]=(c[(c[m>>2]|0)+20>>2]|0)==0&1;c[(c[m>>2]|0)+20>>2]=c[(c[h>>2]|0)+88>>2];if(!(c[j>>2]|0)){if((c[f>>2]|0)==2){c[n>>2]=ae(c[(c[g>>2]|0)+4>>2]|0)|0;c[k>>2]=be(c[(c[g>>2]|0)+4>>2]|0)|0}else{c[n>>2]=38266;c[k>>2]=1}if(c[k>>2]|0)aA(c[m>>2]|0,c[n>>2]|0,c[k>>2]|0)}c[o>>2]=ae(c[c[g>>2]>>2]|0)|0;c[l>>2]=be(c[c[g>>2]>>2]|0)|0;if(!(c[o>>2]|0)){i=p;return}aA(c[m>>2]|0,c[o>>2]|0,c[l>>2]|0);i=p;return}function FP(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[b>>2]=a;c[e>>2]=xe(c[b>>2]|0,0)|0;if(!(c[e>>2]|0)){i=f;return}if((d[(c[e>>2]|0)+24>>0]|0|0)==2){se(c[b>>2]|0);i=f;return}b=c[b>>2]|0;if((d[(c[e>>2]|0)+24>>0]|0|0)==1){te(b);i=f;return}else{ne(b,eg(c[e>>2]|0)|0,-1,148);i=f;return}}function GP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;e=h+16|0;f=h;g=h+12|0;k=h+8|0;c[e>>2]=a;j=f;c[j>>2]=b;c[j+4>>2]=d;c[k>>2]=we(c[e>>2]|0)|0;d=f;j=c[d+4>>2]|0;a=c[(c[k>>2]|0)+88>>2]|0;b=((a|0)<0)<<31>>31;if((j|0)>(b|0)|((j|0)==(b|0)?(c[d>>2]|0)>>>0>a>>>0:0)){se(c[e>>2]|0);c[g>>2]=0;k=c[g>>2]|0;i=h;return k|0}k=f;c[g>>2]=_f(c[k>>2]|0,c[k+4>>2]|0)|0;if(c[g>>2]|0){k=c[g>>2]|0;i=h;return k|0}te(c[e>>2]|0);k=c[g>>2]|0;i=h;return k|0}function HP(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=(c[(c[(c[e>>2]|0)+12>>2]|0)+4>>2]|0)+(((c[(c[e>>2]|0)+16>>2]|0)-1|0)*20|0);i=d;return c[(c[b>>2]|0)+16>>2]|0}function IP(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+24>>0]=1;i=d;return}function JP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;a=$t(c[e>>2]|0,c[f>>2]|0)|0;b=c[(c[e>>2]|0)+528>>2]|0;c[b>>2]=(c[b>>2]|0)+a;i=d;return}function KP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;if(!(c[g>>2]|0)){e=c[f>>2]|0;j=c[g>>2]|0;Sf(e,j);i=k;return}c[j>>2]=c[g>>2];while(1){if((c[j>>2]|0)>>>0>=((c[g>>2]|0)+((c[h>>2]|0)*20|0)|0)>>>0)break;if(a[(c[j>>2]|0)+1>>0]|0)qA(c[f>>2]|0,a[(c[j>>2]|0)+1>>0]|0,c[(c[j>>2]|0)+16>>2]|0);c[j>>2]=(c[j>>2]|0)+20}e=c[f>>2]|0;j=c[g>>2]|0;Sf(e,j);i=k;return}function LP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;d=k+20|0;e=k+16|0;g=k+12|0;h=k+8|0;f=k+4|0;j=k;c[d>>2]=a;c[e>>2]=b;c[g>>2]=c[(c[e>>2]|0)+16>>2];while(1){if(!(c[g>>2]|0))break;if(!((c[d>>2]|0)!=0?(c[(c[d>>2]|0)+528>>2]|0)!=0:0)){a=c[(c[g>>2]|0)+12>>2]|0;if(c[(c[g>>2]|0)+16>>2]|0)c[(c[(c[g>>2]|0)+16>>2]|0)+12>>2]=a;else{c[f>>2]=a;a=c[g>>2]|0;if(c[f>>2]|0)a=c[(c[a+12>>2]|0)+8>>2]|0;else a=c[a+8>>2]|0;c[j>>2]=a;Oj((c[(c[e>>2]|0)+64>>2]|0)+56|0,c[j>>2]|0,c[f>>2]|0)|0}if(c[(c[g>>2]|0)+12>>2]|0)c[(c[(c[g>>2]|0)+12>>2]|0)+16>>2]=c[(c[g>>2]|0)+16>>2]}LF(c[d>>2]|0,c[(c[g>>2]|0)+28>>2]|0);LF(c[d>>2]|0,c[(c[g>>2]|0)+28+4>>2]|0);c[h>>2]=c[(c[g>>2]|0)+4>>2];Sf(c[d>>2]|0,c[g>>2]|0);c[g>>2]=c[h>>2]}i=k;return}function MP(a){a=a|0;return((a|32)+-97|0)>>>0<26|0}function NP(a){a=a|0;return((a|0)==32|(a|0)==9)&1|0}function OP(a){a=a|0;return(a+-97|0)>>>0<26|0}function PP(a){a=a|0;return(a+-65|0)>>>0<26|0}function QP(a){a=a|0;var b=0;b=(PP(a)|0)==0;return(b?a:a|32)|0}function RP(a){a=a|0;var b=0;b=(OP(a)|0)==0;return(b?a:a&95)|0}function SP(){var a=0;if(!(c[2492]|0))a=10016;else a=c[(qb()|0)+60>>2]|0;return a|0}function TP(b){b=b|0;var c=0,e=0;c=0;while(1){if((d[47177+c>>0]|0)==(b|0)){e=2;break}c=c+1|0;if((c|0)==87){c=87;b=47265;e=5;break}}if((e|0)==2)if(!c)b=47265;else{b=47265;e=5}if((e|0)==5)while(1){e=b;while(1){b=e+1|0;if(!(a[e>>0]|0))break;else e=b}c=c+-1|0;if(!c)break;else e=5}return b|0}function UP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+192|0;j=s+152|0;h=s+136|0;r=s+120|0;q=s+104|0;p=s+96|0;m=s+80|0;l=s+64|0;f=s+48|0;n=s+32|0;g=s+16|0;e=s;t=s+176|0;k=s+168|0;c[t>>2]=d;d=(c[t>>2]|0)+(4-1)&~(4-1);o=c[d>>2]|0;c[t>>2]=d+4;o=(b|0)==4?o|32768:o;a:do switch(b|0){case 14:{c[e>>2]=a;c[e+4>>2]=14;c[e+8>>2]=o;d=XP(mb(221,e|0)|0)|0;break}case 9:{c[g>>2]=a;c[g+4>>2]=16;c[g+8>>2]=k;d=mb(221,g|0)|0;switch(d|0){case-22:{c[n>>2]=a;c[n+4>>2]=9;c[n+8>>2]=o;d=mb(221,n|0)|0;break a}case 0:{d=c[k+4>>2]|0;d=(c[k>>2]|0)==2?0-d|0:d;break a}default:{d=XP(d)|0;break a}}}case 1030:{c[f>>2]=a;c[f+4>>2]=1030;c[f+8>>2]=o;d=mb(221,f|0)|0;if((d|0)!=-22){if((d|0)>-1){c[l>>2]=d;c[l+4>>2]=2;c[l+8>>2]=1;mb(221,l|0)|0}d=XP(d)|0;break a}c[m>>2]=a;c[m+4>>2]=1030;c[m+8>>2]=0;d=mb(221,m|0)|0;if((d|0)==-22){c[q>>2]=a;c[q+4>>2]=0;c[q+8>>2]=o;d=mb(221,q|0)|0;if((d|0)>-1){c[r>>2]=d;c[r+4>>2]=2;c[r+8>>2]=1;mb(221,r|0)|0}d=XP(d)|0;break a}else{if((d|0)>-1){c[p>>2]=d;Cb(6,p|0)|0}d=XP(-22)|0;break a}}default:if((b+-12|0)>>>0<5){c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=o;d=XP(mb(221,h|0)|0)|0;break a}else{c[j>>2]=a;c[j+4>>2]=b;c[j+8>>2]=o;d=XP(mb(221,j|0)|0)|0;break a}}while(0);i=s;return d|0}function VP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;f=e;g=e+16|0;c[g>>2]=d;h=(c[g>>2]|0)+(4-1)&~(4-1);d=c[h>>2]|0;c[g>>2]=h+4;c[f>>2]=a;c[f+4>>2]=b|32768;c[f+8>>2]=d;d=XP(Db(5,f|0)|0)|0;i=e;return d|0}function WP(b,c){b=b|0;c=c|0;var d=0,e=0;d=0;while(1){a[b+d>>0]=a[49069+d>>0]|0;if((d|0)==14)break;else d=d+1|0}if(!c){a[b+14>>0]=48;a[b+15>>0]=0}else{d=14;e=c;while(1){d=d+1|0;if(e>>>0<10)break;else e=(e>>>0)/10|0}a[b+d>>0]=0;while(1){d=d+-1|0;a[b+d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}}return}function XP(a){a=a|0;if(a>>>0>4294963200){c[(SP()|0)>>2]=0-a;a=-1}return a|0}function YP(a){a=+a;return+(+X(+(a+-1416.0996898839683))*2247116418577894884661631.0e283*2247116418577894884661631.0e283)}function ZP(a){a=+a;var b=0;h[k>>3]=a;b=hR(c[k>>2]|0,c[k+4>>2]|0,52)|0;b=b&2047;do if(b>>>0>=1024)if(b>>>0<1049){a=+Y(+(a*2.0-1.0/(+O(+(a*a+-1.0))+a)));break}else{a=+Y(+a)+.6931471805599453;break}else{a=a+-1.0;a=+dQ(a+ +O(+(a*a+a*2.0)))}while(0);return+a}function _P(a){a=+a;var b=0,d=0,e=0,f=0.0;h[k>>3]=a;e=c[k>>2]|0;d=c[k+4>>2]|0;b=hR(e|0,d|0,52)|0;b=b&2047;c[k>>2]=e;c[k+4>>2]=d&2147483647;a=+h[k>>3];do if(b>>>0<=1048){if(b>>>0>1023){a=+Y(+(a*2.0+1.0/(a+ +O(+(a*a+1.0)))));break}if(b>>>0>996){f=a*a;a=+dQ(a+f/(+O(+(f+1.0))+1.0))}}else a=+Y(+a)+.6931471805599453;while(0);return+((d|0)<0?-a:a)}function $P(a){a=+a;var b=0,d=0,e=0,f=0.0;h[k>>3]=a;e=c[k>>2]|0;d=c[k+4>>2]|0;b=hR(e|0,d|0,52)|0;b=b&2047;c[k>>2]=e;c[k+4>>2]=d&2147483647;a=+h[k>>3];if(b>>>0<1022){if(b>>>0>=991){f=a*2.0;a=+dQ(f+a*f/(1.0-a))*.5}}else a=+dQ(a/(1.0-a)*2.0)*.5;return+((d|0)<0?-a:a)}function aQ(a){a=+a;var b=0;h[k>>3]=a;b=c[k+4>>2]&2147483647;c[k>>2]=c[k>>2];c[k+4>>2]=b;a=+h[k>>3];do if(b>>>0<1072049730)if(b>>>0<1045430272)a=1.0;else{a=+bQ(a);a=a*a/((a+1.0)*2.0)+1.0}else if(b>>>0<1082535490){a=+X(+a);a=(a+1.0/a)*.5;break}else{a=+YP(a);break}while(0);return+a}function bQ(a){a=+a;var b=0.0,d=0.0,e=0,f=0,g=0,i=0,j=0.0,l=0,m=0.0;h[k>>3]=a;e=c[k>>2]|0;f=c[k+4>>2]|0;g=f&2147483647;i=hR(e|0,f|0,63)|0;do if(g>>>0>1078159481){g=f&2147483647;if(!(g>>>0>2146435072|(g|0)==2146435072&e>>>0>0))if(!i)if(a>709.782712893384)a=a*8988465674311579538646525.0e283;else l=11;else a=-1.0}else{if(g>>>0<=1071001154)if(g>>>0<1016070144)break;else{j=0.0;g=0;l=14;break}if(g>>>0<1072734898)if(!i){b=a+-.6931471803691238;e=1;d=1.9082149292705877e-10;l=12;break}else{b=a+.6931471803691238;e=-1;d=-1.9082149292705877e-10;l=12;break}else l=11}while(0);if((l|0)==11){e=~~(a*1.4426950408889634+((i|0)!=0?-.5:.5));d=+(e|0);b=a-d*.6931471803691238;d=d*1.9082149292705877e-10;l=12}if((l|0)==12){j=b-d;a=j;j=b-j-d;g=e;l=14}a:do if((l|0)==14){d=a*.5;b=a*d;m=b*(b*(b*(b*(4.008217827329362e-06-b*2.0109921818362437e-07)+-7.93650757867488e-05)+1.5873015872548146e-03)+-.03333333333333313)+1.0;d=3.0-d*m;d=b*((m-d)/(6.0-a*d));if(!g){a=a-(a*d-b);break}b=a*(d-j)-j-b;switch(g|0){case-1:{a=(a-b)*.5+-.5;break a}case 1:if(a<-.25){a=(b-(a+.5))*-2.0;break a}else{a=(a-b)*2.0+1.0;break a}default:{i=lR(g+1023|0,0,52)|0;l=C;c[k>>2]=i;c[k+4>>2]=l;d=+h[k>>3];if(g>>>0>56){a=a-b+1.0;a=((g|0)==1024?a*2.0*8988465674311579538646525.0e283:d*a)+-1.0;break a}e=lR(1023-g|0,0,52)|0;f=C;if((g|0)<20){c[k>>2]=e;c[k+4>>2]=f;a=1.0-+h[k>>3]+(a-b)}else{c[k>>2]=e;c[k+4>>2]=f;a=a-(+h[k>>3]+b)+1.0}a=d*a;break a}}}while(0);return+a}function cQ(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,l=0.0,m=0.0;h[k>>3]=a;d=c[k>>2]|0;b=c[k+4>>2]|0;e=(b|0)<0;do if(e|b>>>0<1048576){if((d|0)==0&(b&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[k>>3]=a*18014398509481984.0;b=c[k+4>>2]|0;e=c[k>>2]|0;d=-1077;f=9;break}}else if(b>>>0<=2146435071)if((d|0)==0&0==0&(b|0)==1072693248)a=0.0;else{e=d;d=-1023;f=9}while(0);if((f|0)==9){f=b+614242|0;c[k>>2]=e;c[k+4>>2]=(f&1048575)+1072079006;m=+h[k>>3]+-1.0;a=m*(m*.5);j=m/(m+2.0);l=j*j;i=l*l;h[k>>3]=m-a;e=c[k+4>>2]|0;c[k>>2]=0;c[k+4>>2]=e;g=+h[k>>3];a=j*(a+(i*(i*(i*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(i*(i*(i*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)))+(m-g-a);m=g*.4342944818781689;i=+(d+(f>>>20)|0);l=i*.30102999566361177;j=l+m;a=j+(m+(l-j)+(a*.4342944818781689+(i*3.694239077158931e-13+(g+a)*2.5082946711645275e-11)))}return+a}function dQ(a){a=+a;var b=0,d=0.0,e=0.0,f=0,g=0,i=0.0,j=0.0,l=0.0,m=0.0;h[k>>3]=a;b=c[k+4>>2]|0;do if((b|0)<0|b>>>0<1071284858)if(b>>>0<=3220176895){g=lR(b|0,0,1)|0;if(g>>>0<2034237440)break;if(b>>>0<3218259653){e=0.0;d=0.0;f=11;break}else{f=8;break}}else{if(a==-1.0){a=-s;break}a=(a-a)/0.0;break}else if(b>>>0<=2146435071)f=8;while(0);if((f|0)==8){d=a+1.0;h[k>>3]=d;b=(c[k+4>>2]|0)+614242|0;f=(b>>>20)+-1023|0;if((f|0)<54)a=((f|0)>1?1.0-(d-a):a-(d+-1.0))/d;else a=0.0;c[k>>2]=c[k>>2];c[k+4>>2]=(b&1048575)+1072079006;e=a;a=+h[k>>3]+-1.0;d=+(f|0);f=11}if((f|0)==11){i=a*(a*.5);m=a/(a+2.0);l=m*m;j=l*l;a=d*.6931471803691238+(a+(e+d*1.9082149292705877e-10+m*(i+(j*(j*(j*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(j*(j*(j*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)))-i))}return+a}function eQ(a){a=+a;var b=0.0,d=0.0,e=0;h[k>>3]=a;e=c[k+4>>2]|0;d=(e|0)<0?-.5:.5;e=e&2147483647;c[k>>2]=c[k>>2];c[k+4>>2]=e;b=+h[k>>3];do if(e>>>0<1082535490){b=+bQ(b);if(e>>>0>=1072693248){a=d*(b+b/(b+1.0));break}if(e>>>0>=1045430272)a=d*(b*2.0-b*b/(b+1.0))}else a=d*2.0*+YP(b);while(0);return+a}function fQ(a){a=+a;var b=0,d=0;h[k>>3]=a;d=c[k+4>>2]|0;b=d&2147483647;c[k>>2]=c[k>>2];c[k+4>>2]=b;a=+h[k>>3];do if(b>>>0>1071748074)if(b>>>0>1077149696){a=1.0-0.0/a;break}else{a=1.0-2.0/(+bQ(a*2.0)+2.0);break}else{if(b>>>0>1070618798){a=+bQ(a*2.0);a=a/(a+2.0);break}if(b>>>0>1048575){a=+bQ(a*-2.0);a=-a/(a+2.0)}}while(0);return+((d|0)<0?-a:a)}function gQ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0;k=i;i=i+32|0;h=k;do if((g&4095|0)==0&(((g|0)<0)<<31>>31&-4096|0)==0){if(b>>>0>2147483646){c[(SP()|0)>>2]=12;f=-1;break}j=(e&16|0)!=0;if(j)XQ(-1);c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=d;c[h+12>>2]=e;c[h+16>>2]=f;c[h+20>>2]=g>>12;f=XP(cb(192,h|0)|0)|0;if(j)YQ()}else{c[(SP()|0)>>2]=22;f=-1}while(0);i=k;return f|0}function hQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;XQ(-1);c[e>>2]=a;c[e+4>>2]=b;a=XP(Xa(91,e|0)|0)|0;YQ();i=d;return a|0}function iQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+64|0;g=h+16|0;f=h+8|0;d=h;e=h+24|0;c[d>>2]=a;c[d+4>>2]=b;d=jb(94,d|0)|0;if((d|0)==-9?(c[f>>2]=a,c[f+4>>2]=1,(mb(221,f|0)|0)>=0):0){WP(e,a);c[g>>2]=e;c[g+4>>2]=b;d=XP(wb(15,g|0)|0)|0}else d=XP(d)|0;i=h;return d|0}function jQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+64|0;g=h+16|0;f=h+8|0;d=h;e=h+24|0;c[d>>2]=a;c[d+4>>2]=b;d=db(197,d|0)|0;if((d|0)==-9?(c[f>>2]=a,c[f+4>>2]=1,(mb(221,f|0)|0)>=0):0){WP(e,a);c[g>>2]=e;c[g+4>>2]=b;d=XP(fb(195,g|0)|0)|0}else d=XP(d)|0;i=h;return d|0}function kQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;a=XP(eb(196,e|0)|0)|0;i=d;return a|0}function lQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;a=XP(Za(39,e|0)|0)|0;i=d;return a|0}function mQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;a=XP(fb(195,e|0)|0)|0;i=d;return a|0}function nQ(a){a=a|0;return 0}function oQ(a){a=a|0;return}function pQ(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=c[a+60>>2];a=XP(Cb(6,d|0)|0)|0;i=b;return a|0}function qQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((XP(vb(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;i=f;return a|0}function rQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;n=q+16|0;m=q;e=q+32|0;o=a+28|0;f=c[o>>2]|0;c[e>>2]=f;p=a+20|0;f=(c[p>>2]|0)-f|0;c[e+4>>2]=f;c[e+8>>2]=b;c[e+12>>2]=d;k=a+60|0;l=a+44|0;b=2;f=f+d|0;while(1){if(!(c[2492]|0)){c[n>>2]=c[k>>2];c[n+4>>2]=e;c[n+8>>2]=b;h=XP(Mb(146,n|0)|0)|0}else{La(154,a|0);c[m>>2]=c[k>>2];c[m+4>>2]=e;c[m+8>>2]=b;h=XP(Mb(146,m|0)|0)|0;Da(0)}if((f|0)==(h|0)){f=6;break}if((h|0)<0){f=8;break}f=f-h|0;g=c[e+4>>2]|0;if(h>>>0<=g>>>0)if((b|0)==2){c[o>>2]=(c[o>>2]|0)+h;j=g;b=2}else j=g;else{j=c[l>>2]|0;c[o>>2]=j;c[p>>2]=j;j=c[e+12>>2]|0;h=h-g|0;e=e+8|0;b=b+-1|0}c[e>>2]=(c[e>>2]|0)+h;c[e+4>>2]=j-h}if((f|0)==6){n=c[l>>2]|0;c[a+16>>2]=n+(c[a+48>>2]|0);a=n;c[o>>2]=a;c[p>>2]=a}else if((f|0)==8){c[a+16>>2]=0;c[o>>2]=0;c[p>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[e+4>>2]|0)|0}i=q;return d|0}function sQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+80|0;f=g;c[b+36>>2]=163;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21505,c[f+8>>2]=g+12,(Ka(54,f|0)|0)!=0):0)a[b+75>>0]=-1;f=rQ(b,d,e)|0;i=g;return f|0}function tQ(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=UQ(a)|0;break}d=(nQ(a)|0)==0;b=UQ(a)|0;if(!d)oQ(a)}else{if(!(c[2503]|0))b=0;else b=tQ(c[2503]|0)|0;Bb(9996);a=c[2498]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=nQ(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=UQ(a)|0|b;if(d)oQ(a);a=c[a+56>>2]|0}while((a|0)!=0);ub(9996)}while(0);return b|0}function uQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+208|0;o=r+8|0;p=r;f=_(d,b)|0;n=p;c[n>>2]=1;c[n+4>>2]=0;if(f){j=f-d|0;c[o+4>>2]=d;c[o>>2]=d;g=d;b=d;h=2;while(1){b=b+d+g|0;c[o+(h<<2)>>2]=b;if(b>>>0>>0){n=g;g=b;h=h+1|0;b=n}else break}n=0-d|0;k=a+j|0;m=p+4|0;if((j|0)>0){j=k;f=1;h=1;while(1){do if((f&3|0)==3){VQ(a,d,e,h,o);l=c[m>>2]|0;b=l<<30|(c[p>>2]|0)>>>2;c[p>>2]=b;c[m>>2]=l>>>2;h=h+2|0}else{b=h+-1|0;if((c[o+(b<<2)>>2]|0)>>>0<(j-a|0)>>>0)VQ(a,d,e,h,o);else WQ(a,d,e,p,h,0,o);if((h|0)==1){b=c[p>>2]|0;c[m>>2]=b>>>31|c[m>>2]<<1;b=b<<1;c[p>>2]=b;h=0;break}if(b>>>0>31){f=c[p>>2]|0;c[m>>2]=f;c[p>>2]=0;b=h+-33|0;g=0}else{f=c[m>>2]|0;g=c[p>>2]|0}c[m>>2]=g>>>(32-b|0)|f<>2]=b;h=1}while(0);f=b|1;c[p>>2]=f;b=a+d|0;if(b>>>0>=k>>>0){f=b;break}else a=b}}else{f=a;h=1}WQ(f,d,e,p,h,0,o);l=p+4|0;b=c[p>>2]|0;if(!((h|0)==1&(b|0)==1&(c[l>>2]|0)==0)){g=f;while(1){if((h|0)<2){f=b+-1|0;do if(f){if(!(f&1)){j=f;f=0;do{f=f+1|0;j=j>>>1}while((j&1|0)==0);if(!f)q=24}else q=24;if((q|0)==24){q=0;k=c[m>>2]|0;if(!k){f=64;q=30;break}if(!(k&1)){j=k;f=0}else{a=0;j=k;f=0;break}while(1){a=f+1|0;j=j>>>1;if(j&1){j=a;break}else f=a}if(!j){a=0;j=k;f=0;break}else f=f+33|0}if(f>>>0>31)q=30;else{a=f;j=c[m>>2]|0}}else{f=32;q=30}while(0);if((q|0)==30){q=0;b=c[m>>2]|0;c[p>>2]=b;c[m>>2]=0;a=f+-32|0;j=0}c[p>>2]=j<<32-a|b>>>a;c[m>>2]=j>>>a;g=g+n|0;f=f+h|0}else{a=b>>>30;k=a|c[m>>2]<<2;f=h+-2|0;c[p>>2]=(b<<1&2147483646|a<<31)^3;c[m>>2]=k>>>1;WQ(g+(0-((c[o+(f<<2)>>2]|0)+d))|0,d,e,p,h+-1|0,1,o);k=c[p>>2]|0;c[m>>2]=k>>>31|c[m>>2]<<1;c[p>>2]=k<<1|1;g=g+n|0;WQ(g,d,e,p,f,1,o)}b=c[p>>2]|0;if((f|0)==1&(b|0)==1&(c[l>>2]|0)==0)break;else h=f}}}i=r;return}function vQ(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)d=0;else{f=d;e=b;while(1){b=a[e>>0]|0;d=a[c>>0]|0;if(b<<24>>24!=d<<24>>24)break;f=f+-1|0;if(!f){d=0;break a}else{e=e+1|0;c=c+1|0}}d=(b&255)-(d&255)|0}while(0);return d|0}function wQ(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function xQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;do if(!((g^b)&3)){f=(e|0)!=0;a:do if(f&(g&3|0)!=0)while(1){g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0;if(!(f&(d&3|0)!=0)){h=5;break}}else h=5;while(0);if((h|0)==5)if(!f){e=0;break}if(a[d>>0]|0){b:do if(e>>>0>3)do{f=c[d>>2]|0;if((f&-2139062144^-2139062144)&f+-16843009)break b;c[b>>2]=f;e=e+-4|0;d=d+4|0;b=b+4|0}while(e>>>0>3);while(0);h=11}}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);kR(b|0,0,e|0)|0;return b|0}function yQ(b,c){b=b|0;c=c|0;var d=0,e=0;e=a[b>>0]|0;d=a[c>>0]|0;if(e<<24>>24==0?1:e<<24>>24!=d<<24>>24)c=e;else{do{b=b+1|0;c=c+1|0;e=a[b>>0]|0;d=a[c>>0]|0}while(!(e<<24>>24==0?1:e<<24>>24!=d<<24>>24));c=e}return(c&255)-(d&255)|0}function zQ(a,b){a=a|0;b=b|0;wQ(a,b)|0;return a|0}function AQ(a){a=a|0;var b=0,c=0;c=(BQ(a)|0)+1|0;b=_Q(c)|0;if(!b)b=0;else iR(b|0,a|0,c|0)|0;return b|0}function BQ(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=b;b=f;while(1){if(!(a[d>>0]|0))break a;d=d+1|0;b=d;if(!(b&3)){b=d;e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function CQ(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e)c=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(f<<24>>24==g<<24>>24&((e|0)!=0&g<<24>>24!=0)))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);c=(f&255)-(d[c>>0]|0)|0}return c|0}function DQ(a,b,c){a=a|0;b=b|0;c=c|0;xQ(a,b,c)|0;return a|0}function EQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;a=XP(sb(33,e|0)|0)|0;i=d;return a|0}function FQ(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Cb(6,d|0)|0;a=XP((a|0)==-4?-115:a)|0;i=b;return a|0}function GQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+64|0;h=j+24|0;g=j+16|0;e=j;f=j+36|0;c[e>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;e=Lb(207,e|0)|0;if((e|0)==-9?(c[g>>2]=a,c[g+4>>2]=1,(mb(221,g|0)|0)>=0):0){WP(f,a);c[h>>2]=f;c[h+4>>2]=b;c[h+8>>2]=d;e=XP(hb(212,h|0)|0)|0}else e=XP(e)|0;i=j;return e|0}function HQ(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=XP(Oa(118,d|0)|0)|0;i=b;return a|0}function IQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[e+4>>2]=0;c[e+8>>2]=b;c[e+12>>2]=((b|0)<0)<<31>>31;b=XP(gb(194,e|0)|0)|0;i=d;return b|0}function JQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+4112|0;e=g;d=g+8|0;if(a)if(!b){c[(SP()|0)>>2]=22;a=0}else f=4;else{b=4096;a=d;f=4}if((f|0)==4){c[e>>2]=a;c[e+4>>2]=b;if((XP(Ra(183,e|0)|0)|0)>=0){if((a|0)==(d|0))a=AQ(d)|0}else a=0}i=g;return a|0}function KQ(){var a=0,b=0;b=i;i=i+16|0;a=pb(201,b|0)|0;i=b;return a|0}function LQ(){var a=0,b=0;b=i;i=i+16|0;a=Qa(20,b|0)|0;i=b;return a|0}function MQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+32|0;g=f;e=f+20|0;c[g>>2]=a;c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;d=(XP(vb(140,g|0)|0)|0)!=0;i=f;return(d?-1:c[e>>2]|0)|0}function NQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;a=XP(Ab(3,f|0)|0)|0;i=e;return a|0}function OQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;a=XP(Ea(85,f|0)|0)|0;i=e;return a|0}function PQ(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=XP(Na(40,d|0)|0)|0;i=b;return a|0}function QQ(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;c[b+4>>2]=0;a=(kb(b|0,b|0)|0)==0;i=d;return(a?0:c[b>>2]|0)|0}function RQ(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=XP(yb(10,d|0)|0)|0;i=b;return a|0}function SQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;a=XP(Eb(4,f|0)|0)|0;i=e;return a|0}function TQ(a){a=a|0;if(!(c[a+68>>2]|0))oQ(a);return}function UQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;g=a+28|0;if((c[b>>2]|0)>>>0>(c[g>>2]|0)>>>0?(Ob[c[a+36>>2]&255](a,0,0)|0,(c[b>>2]|0)==0):0)b=-1;else{h=a+4|0;d=c[h>>2]|0;e=a+8|0;f=c[e>>2]|0;if(d>>>0>>0)Ob[c[a+40>>2]&255](a,d-f|0,1)|0;c[a+16>>2]=0;c[g>>2]=0;c[b>>2]=0;c[e>>2]=0;c[h>>2]=0;b=0}return b|0}function VQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+240|0;o=p;c[o>>2]=a;a:do if((e|0)>1){n=0-b|0;g=e;h=a;k=a;l=1;while(1){a=h+n|0;m=g+-2|0;j=h+(0-((c[f+(m<<2)>>2]|0)+b))|0;if((Yb[d&255](k,j)|0)>-1?(Yb[d&255](k,a)|0)>-1:0){e=l;break a}e=l+1|0;h=o+(l<<2)|0;if((Yb[d&255](j,a)|0)>-1){c[h>>2]=j;a=j;g=g+-1|0}else{c[h>>2]=a;g=m}if((g|0)<=1)break a;h=a;k=c[o>>2]|0;l=e}}else e=1;while(0);ZQ(b,o,e);i=p;return}function WQ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+240|0;p=r;k=c[e>>2]|0;e=c[e+4>>2]|0;c[p>>2]=a;o=0-b|0;a:do if((e|0)!=0|(k|0)!=1?(j=a+(0-(c[h+(f<<2)>>2]|0))|0,(Yb[d&255](j,a)|0)>=1):0){g=(g|0)==0;n=j;l=k;m=e;j=1;while(1){if(g&(f|0)>1){e=c[h+(f+-2<<2)>>2]|0;if((Yb[d&255](a+o|0,n)|0)>-1){g=f;e=j;q=20;break a}if((Yb[d&255](a+(0-(e+b))|0,n)|0)>-1){g=f;e=j;q=20;break a}}e=j+1|0;c[p+(j<<2)>>2]=n;g=l+-1|0;do if(g){if(!(g&1)){a=g;g=0;do{g=g+1|0;a=a>>>1}while((a&1|0)==0);if(!g)q=11}else q=11;if((q|0)==11){q=0;if(!m){g=64;q=16;break}if(!(m&1)){a=m;g=0}else{k=0;a=l;j=m;g=0;break}while(1){j=g+1|0;a=a>>>1;if(a&1){a=j;break}else g=j}if(!a){k=0;a=l;j=m;g=0;break}else g=g+33|0}if(g>>>0>31)q=16;else{k=g;a=l;j=m}}else{g=32;q=16}while(0);if((q|0)==16){q=0;k=g+-32|0;a=m;j=0}l=j<<32-k|a>>>k;m=j>>>k;g=g+f|0;if(!((m|0)!=0|(l|0)!=1)){a=n;q=20;break a}a=n+(0-(c[h+(g<<2)>>2]|0))|0;if((Yb[d&255](a,c[p>>2]|0)|0)<1){a=n;f=g;g=0;q=19;break}else{k=n;f=g;g=1;n=a;j=e;a=k}}}else{e=1;q=19}while(0);if((q|0)==19?(g|0)==0:0){g=f;q=20}if((q|0)==20){ZQ(b,p,e);VQ(a,b,d,g,h)}i=r;return}function XQ(a){a=a|0;return}function YQ(){return}function ZQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,(a|0)!=0):0)while(1){f=a>>>0>256?256:a;iR(e|0,c[b>>2]|0,f|0)|0;e=0;do{j=b+(e<<2)|0;e=e+1|0;iR(c[j>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[j>>2]=(c[j>>2]|0)+f}while((e|0)!=(d|0));if((a|0)==(f|0))break a;a=a-f|0;e=c[g>>2]|0}while(0);i=h;return}function _Q(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;i=c[2533]|0;d=i>>>a;if(d&3){a=(d&1^1)+a|0;e=a<<1;d=10172+(e<<2)|0;e=10172+(e+2<<2)|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[2537]|0)>>>0)Ma();b=h+12|0;if((c[b>>2]|0)==(f|0)){c[b>>2]=d;c[e>>2]=h;break}else Ma()}else c[2533]=i&~(1<>2]=M|3;M=f+(M|4)|0;c[M>>2]=c[M>>2]|1;M=g;return M|0}h=c[2535]|0;if(o>>>0>h>>>0){if(d){e=2<>>12&16;e=e>>>j;f=e>>>5&8;e=e>>>f;g=e>>>2&4;e=e>>>g;d=e>>>1&2;e=e>>>d;a=e>>>1&1;a=(f|j|g|d|a)+(e>>>a)|0;e=a<<1;d=10172+(e<<2)|0;e=10172+(e+2<<2)|0;g=c[e>>2]|0;j=g+8|0;f=c[j>>2]|0;do if((d|0)!=(f|0)){if(f>>>0<(c[2537]|0)>>>0)Ma();b=f+12|0;if((c[b>>2]|0)==(g|0)){c[b>>2]=d;c[e>>2]=f;k=c[2535]|0;break}else Ma()}else{c[2533]=i&~(1<>2]=o|3;i=g+o|0;c[g+(o|4)>>2]=h|1;c[g+M>>2]=h;if(k){f=c[2538]|0;d=k>>>3;b=d<<1;e=10172+(b<<2)|0;a=c[2533]|0;d=1<>2]|0;if(b>>>0<(c[2537]|0)>>>0)Ma();else{l=a;m=b}}else{c[2533]=a|d;l=10172+(b+2<<2)|0;m=e}c[l>>2]=f;c[m+12>>2]=f;c[f+8>>2]=m;c[f+12>>2]=e}c[2535]=h;c[2538]=i;M=j;return M|0}a=c[2534]|0;if(a){d=(a&0-a)+-1|0;L=d>>>12&16;d=d>>>L;K=d>>>5&8;d=d>>>K;M=d>>>2&4;d=d>>>M;a=d>>>1&2;d=d>>>a;e=d>>>1&1;e=c[10436+((K|L|M|a|e)+(d>>>e)<<2)>>2]|0;d=(c[e+4>>2]&-8)-o|0;a=e;while(1){b=c[a+16>>2]|0;if(!b){b=c[a+20>>2]|0;if(!b){j=d;break}}a=(c[b+4>>2]&-8)-o|0;M=a>>>0>>0;d=M?a:d;a=b;e=M?b:e}g=c[2537]|0;if(e>>>0>>0)Ma();i=e+o|0;if(e>>>0>=i>>>0)Ma();h=c[e+24>>2]|0;d=c[e+12>>2]|0;do if((d|0)==(e|0)){a=e+20|0;b=c[a>>2]|0;if(!b){a=e+16|0;b=c[a>>2]|0;if(!b){n=0;break}}while(1){d=b+20|0;f=c[d>>2]|0;if(f){b=f;a=d;continue}d=b+16|0;f=c[d>>2]|0;if(!f)break;else{b=f;a=d}}if(a>>>0>>0)Ma();else{c[a>>2]=0;n=b;break}}else{f=c[e+8>>2]|0;if(f>>>0>>0)Ma();b=f+12|0;if((c[b>>2]|0)!=(e|0))Ma();a=d+8|0;if((c[a>>2]|0)==(e|0)){c[b>>2]=d;c[a>>2]=f;n=d;break}else Ma()}while(0);do if(h){b=c[e+28>>2]|0;a=10436+(b<<2)|0;if((e|0)==(c[a>>2]|0)){c[a>>2]=n;if(!n){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();b=h+16|0;if((c[b>>2]|0)==(e|0))c[b>>2]=n;else c[h+20>>2]=n;if(!n)break}a=c[2537]|0;if(n>>>0>>0)Ma();c[n+24>>2]=h;b=c[e+16>>2]|0;do if(b)if(b>>>0>>0)Ma();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);b=c[e+20>>2]|0;if(b)if(b>>>0<(c[2537]|0)>>>0)Ma();else{c[n+20>>2]=b;c[b+24>>2]=n;break}}while(0);if(j>>>0<16){M=j+o|0;c[e+4>>2]=M|3;M=e+(M+4)|0;c[M>>2]=c[M>>2]|1}else{c[e+4>>2]=o|3;c[e+(o|4)>>2]=j|1;c[e+(j+o)>>2]=j;b=c[2535]|0;if(b){g=c[2538]|0;d=b>>>3;b=d<<1;f=10172+(b<<2)|0;a=c[2533]|0;d=1<>2]|0;if(a>>>0<(c[2537]|0)>>>0)Ma();else{p=b;q=a}}else{c[2533]=a|d;p=10172+(b+2<<2)|0;q=f}c[p>>2]=g;c[q+12>>2]=g;c[g+8>>2]=q;c[g+12>>2]=f}c[2535]=j;c[2538]=i}M=e+8|0;return M|0}else q=o}else q=o}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;l=c[2534]|0;if(l){d=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)k=31;else{q=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;k=14-(p|q|k)+(v<>>15)|0;k=m>>>(k+7|0)&1|k<<1}else k=0;a=c[10436+(k<<2)>>2]|0;a:do if(!a){f=0;a=0;v=86}else{h=d;f=0;i=m<<((k|0)==31?0:25-(k>>>1)|0);j=a;a=0;while(1){g=c[j+4>>2]&-8;d=g-m|0;if(d>>>0>>0)if((g|0)==(m|0)){g=j;a=j;v=90;break a}else a=j;else d=h;v=c[j+20>>2]|0;j=c[j+16+(i>>>31<<2)>>2]|0;f=(v|0)==0|(v|0)==(j|0)?f:v; -if(!j){v=86;break}else{h=d;i=i<<1}}}while(0);if((v|0)==86){if((f|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>n;l=a>>>5&8;a=a>>>l;p=a>>>2&4;a=a>>>p;q=a>>>1&2;a=a>>>q;f=a>>>1&1;f=c[10436+((l|n|p|q|f)+(a>>>f)<<2)>>2]|0;a=0}if(!f){i=d;j=a}else{g=f;v=90}}if((v|0)==90)while(1){v=0;q=(c[g+4>>2]&-8)-m|0;f=q>>>0>>0;d=f?q:d;a=f?g:a;f=c[g+16>>2]|0;if(f){g=f;v=90;continue}g=c[g+20>>2]|0;if(!g){i=d;j=a;break}else v=90}if((j|0)!=0?i>>>0<((c[2535]|0)-m|0)>>>0:0){f=c[2537]|0;if(j>>>0>>0)Ma();h=j+m|0;if(j>>>0>=h>>>0)Ma();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){o=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0>>0)Ma();else{c[a>>2]=0;o=b;break}}else{e=c[j+8>>2]|0;if(e>>>0>>0)Ma();b=e+12|0;if((c[b>>2]|0)!=(j|0))Ma();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;o=d;break}else Ma()}while(0);do if(g){b=c[j+28>>2]|0;a=10436+(b<<2)|0;if((j|0)==(c[a>>2]|0)){c[a>>2]=o;if(!o){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();b=g+16|0;if((c[b>>2]|0)==(j|0))c[b>>2]=o;else c[g+20>>2]=o;if(!o)break}a=c[2537]|0;if(o>>>0>>0)Ma();c[o+24>>2]=g;b=c[j+16>>2]|0;do if(b)if(b>>>0>>0)Ma();else{c[o+16>>2]=b;c[b+24>>2]=o;break}while(0);b=c[j+20>>2]|0;if(b)if(b>>>0<(c[2537]|0)>>>0)Ma();else{c[o+20>>2]=b;c[b+24>>2]=o;break}}while(0);b:do if(i>>>0>=16){c[j+4>>2]=m|3;c[j+(m|4)>>2]=i|1;c[j+(i+m)>>2]=i;b=i>>>3;if(i>>>0<256){a=b<<1;e=10172+(a<<2)|0;d=c[2533]|0;b=1<>2]|0;if(a>>>0<(c[2537]|0)>>>0)Ma();else{s=b;t=a}}else{c[2533]=d|b;s=10172+(a+2<<2)|0;t=e}c[s>>2]=h;c[t+12>>2]=h;c[j+(m+8)>>2]=t;c[j+(m+12)>>2]=e;break}b=i>>>8;if(b)if(i>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=i>>>(e+7|0)&1|e<<1}else e=0;b=10436+(e<<2)|0;c[j+(m+28)>>2]=e;c[j+(m+20)>>2]=0;c[j+(m+16)>>2]=0;a=c[2534]|0;d=1<>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break}b=c[b>>2]|0;c:do if((c[b+4>>2]&-8|0)!=(i|0)){e=i<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(i|0)){y=d;break c}else{e=e<<1;b=d}}if(a>>>0<(c[2537]|0)>>>0)Ma();else{c[a>>2]=h;c[j+(m+24)>>2]=b;c[j+(m+12)>>2]=h;c[j+(m+8)>>2]=h;break b}}else y=b;while(0);b=y+8|0;a=c[b>>2]|0;M=c[2537]|0;if(a>>>0>=M>>>0&y>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[j+(m+8)>>2]=a;c[j+(m+12)>>2]=y;c[j+(m+24)>>2]=0;break}else Ma()}else{M=i+m|0;c[j+4>>2]=M|3;M=j+(M+4)|0;c[M>>2]=c[M>>2]|1}while(0);M=j+8|0;return M|0}else q=m}else q=m}else q=-1;while(0);d=c[2535]|0;if(d>>>0>=q>>>0){b=d-q|0;a=c[2538]|0;if(b>>>0>15){c[2538]=a+q;c[2535]=b;c[a+(q+4)>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=q|3}else{c[2535]=0;c[2538]=0;c[a+4>>2]=d|3;M=a+(d+4)|0;c[M>>2]=c[M>>2]|1}M=a+8|0;return M|0}a=c[2536]|0;if(a>>>0>q>>>0){L=a-q|0;c[2536]=L;M=c[2539]|0;c[2539]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}do if(!(c[2651]|0)){a=ib(30)|0;if(!(a+-1&a)){c[2653]=a;c[2652]=a;c[2654]=-1;c[2655]=-1;c[2656]=0;c[2644]=0;c[2651]=(Fb(0)|0)&-16^1431655768;break}else Ma()}while(0);j=q+48|0;i=c[2653]|0;k=q+47|0;h=i+k|0;i=0-i|0;l=h&i;if(l>>>0<=q>>>0){M=0;return M|0}a=c[2643]|0;if((a|0)!=0?(t=c[2641]|0,y=t+l|0,y>>>0<=t>>>0|y>>>0>a>>>0):0){M=0;return M|0}d:do if(!(c[2644]&4)){a=c[2539]|0;e:do if(a){f=10580;while(1){d=c[f>>2]|0;if(d>>>0<=a>>>0?(r=f+4|0,(d+(c[r>>2]|0)|0)>>>0>a>>>0):0){g=f;a=r;break}f=c[f+8>>2]|0;if(!f){v=174;break e}}d=h-(c[2536]|0)&i;if(d>>>0<2147483647){f=bb(d|0)|0;y=(f|0)==((c[g>>2]|0)+(c[a>>2]|0)|0);a=y?d:0;if(y){if((f|0)!=(-1|0)){w=f;p=a;v=194;break d}}else v=184}else a=0}else v=174;while(0);do if((v|0)==174){g=bb(0)|0;if((g|0)!=(-1|0)){a=g;d=c[2652]|0;f=d+-1|0;if(!(f&a))d=l;else d=l-a+(f+a&0-d)|0;a=c[2641]|0;f=a+d|0;if(d>>>0>q>>>0&d>>>0<2147483647){y=c[2643]|0;if((y|0)!=0?f>>>0<=a>>>0|f>>>0>y>>>0:0){a=0;break}f=bb(d|0)|0;y=(f|0)==(g|0);a=y?d:0;if(y){w=g;p=a;v=194;break d}else v=184}else a=0}else a=0}while(0);f:do if((v|0)==184){g=0-d|0;do if(j>>>0>d>>>0&(d>>>0<2147483647&(f|0)!=(-1|0))?(u=c[2653]|0,u=k-d+u&0-u,u>>>0<2147483647):0)if((bb(u|0)|0)==(-1|0)){bb(g|0)|0;break f}else{d=u+d|0;break}while(0);if((f|0)!=(-1|0)){w=f;p=d;v=194;break d}}while(0);c[2644]=c[2644]|4;v=191}else{a=0;v=191}while(0);if((((v|0)==191?l>>>0<2147483647:0)?(w=bb(l|0)|0,x=bb(0)|0,w>>>0>>0&((w|0)!=(-1|0)&(x|0)!=(-1|0))):0)?(z=x-w|0,A=z>>>0>(q+40|0)>>>0,A):0){p=A?z:a;v=194}if((v|0)==194){a=(c[2641]|0)+p|0;c[2641]=a;if(a>>>0>(c[2642]|0)>>>0)c[2642]=a;h=c[2539]|0;g:do if(h){g=10580;do{a=c[g>>2]|0;d=g+4|0;f=c[d>>2]|0;if((w|0)==(a+f|0)){B=a;C=d;D=f;E=g;v=204;break}g=c[g+8>>2]|0}while((g|0)!=0);if(((v|0)==204?(c[E+12>>2]&8|0)==0:0)?h>>>0>>0&h>>>0>=B>>>0:0){c[C>>2]=D+p;M=(c[2536]|0)+p|0;L=h+8|0;L=(L&7|0)==0?0:0-L&7;K=M-L|0;c[2539]=h+L;c[2536]=K;c[h+(L+4)>>2]=K|1;c[h+(M+4)>>2]=40;c[2540]=c[2655];break}a=c[2537]|0;if(w>>>0>>0){c[2537]=w;a=w}d=w+p|0;g=10580;while(1){if((c[g>>2]|0)==(d|0)){f=g;d=g;v=212;break}g=c[g+8>>2]|0;if(!g){d=10580;break}}if((v|0)==212)if(!(c[d+12>>2]&8)){c[f>>2]=w;n=d+4|0;c[n>>2]=(c[n>>2]|0)+p;n=w+8|0;n=(n&7|0)==0?0:0-n&7;k=w+(p+8)|0;k=(k&7|0)==0?0:0-k&7;b=w+(k+p)|0;m=n+q|0;o=w+m|0;l=b-(w+n)-q|0;c[w+(n+4)>>2]=q|3;h:do if((b|0)!=(h|0)){if((b|0)==(c[2538]|0)){M=(c[2535]|0)+l|0;c[2535]=M;c[2538]=o;c[w+(m+4)>>2]=M|1;c[w+(M+m)>>2]=M;break}i=p+4|0;d=c[w+(i+k)>>2]|0;if((d&3|0)==1){j=d&-8;g=d>>>3;i:do if(d>>>0>=256){h=c[w+((k|24)+p)>>2]|0;e=c[w+(p+12+k)>>2]|0;do if((e|0)==(b|0)){f=k|16;e=w+(i+f)|0;d=c[e>>2]|0;if(!d){e=w+(f+p)|0;d=c[e>>2]|0;if(!d){J=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Ma();else{c[e>>2]=0;J=d;break}}else{f=c[w+((k|8)+p)>>2]|0;if(f>>>0>>0)Ma();a=f+12|0;if((c[a>>2]|0)!=(b|0))Ma();d=e+8|0;if((c[d>>2]|0)==(b|0)){c[a>>2]=e;c[d>>2]=f;J=e;break}else Ma()}while(0);if(!h)break;a=c[w+(p+28+k)>>2]|0;d=10436+(a<<2)|0;do if((b|0)!=(c[d>>2]|0)){if(h>>>0<(c[2537]|0)>>>0)Ma();a=h+16|0;if((c[a>>2]|0)==(b|0))c[a>>2]=J;else c[h+20>>2]=J;if(!J)break i}else{c[d>>2]=J;if(J)break;c[2534]=c[2534]&~(1<>>0>>0)Ma();c[J+24>>2]=h;b=k|16;a=c[w+(b+p)>>2]|0;do if(a)if(a>>>0>>0)Ma();else{c[J+16>>2]=a;c[a+24>>2]=J;break}while(0);b=c[w+(i+b)>>2]|0;if(!b)break;if(b>>>0<(c[2537]|0)>>>0)Ma();else{c[J+20>>2]=b;c[b+24>>2]=J;break}}else{e=c[w+((k|8)+p)>>2]|0;f=c[w+(p+12+k)>>2]|0;d=10172+(g<<1<<2)|0;do if((e|0)!=(d|0)){if(e>>>0>>0)Ma();if((c[e+12>>2]|0)==(b|0))break;Ma()}while(0);if((f|0)==(e|0)){c[2533]=c[2533]&~(1<>>0>>0)Ma();a=f+8|0;if((c[a>>2]|0)==(b|0)){F=a;break}Ma()}while(0);c[e+12>>2]=f;c[F>>2]=e}while(0);b=w+((j|k)+p)|0;f=j+l|0}else f=l;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[w+(m+4)>>2]=f|1;c[w+(f+m)>>2]=f;b=f>>>3;if(f>>>0<256){a=b<<1;e=10172+(a<<2)|0;d=c[2533]|0;b=1<>2]|0;if(a>>>0>=(c[2537]|0)>>>0){K=b;L=a;break}Ma()}while(0);c[K>>2]=o;c[L+12>>2]=o;c[w+(m+8)>>2]=L;c[w+(m+12)>>2]=e;break}b=f>>>8;do if(!b)e=0;else{if(f>>>0>16777215){e=31;break}K=(b+1048320|0)>>>16&8;L=b<>>16&4;L=L<>>16&2;e=14-(J|K|e)+(L<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);b=10436+(e<<2)|0;c[w+(m+28)>>2]=e;c[w+(m+20)>>2]=0;c[w+(m+16)>>2]=0;a=c[2534]|0;d=1<>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break}b=c[b>>2]|0;j:do if((c[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(f|0)){M=d;break j}else{e=e<<1;b=d}}if(a>>>0<(c[2537]|0)>>>0)Ma();else{c[a>>2]=o;c[w+(m+24)>>2]=b;c[w+(m+12)>>2]=o;c[w+(m+8)>>2]=o;break h}}else M=b;while(0);b=M+8|0;a=c[b>>2]|0;L=c[2537]|0;if(a>>>0>=L>>>0&M>>>0>=L>>>0){c[a+12>>2]=o;c[b>>2]=o;c[w+(m+8)>>2]=a;c[w+(m+12)>>2]=M;c[w+(m+24)>>2]=0;break}else Ma()}else{M=(c[2536]|0)+l|0;c[2536]=M;c[2539]=o;c[w+(m+4)>>2]=M|1}while(0);M=w+(n|8)|0;return M|0}else d=10580;while(1){a=c[d>>2]|0;if(a>>>0<=h>>>0?(b=c[d+4>>2]|0,e=a+b|0,e>>>0>h>>>0):0)break;d=c[d+8>>2]|0}f=a+(b+-39)|0;a=a+(b+-47+((f&7|0)==0?0:0-f&7))|0;f=h+16|0;a=a>>>0>>0?h:a;b=a+8|0;d=w+8|0;d=(d&7|0)==0?0:0-d&7;M=p+-40-d|0;c[2539]=w+d;c[2536]=M;c[w+(d+4)>>2]=M|1;c[w+(p+-36)>>2]=40;c[2540]=c[2655];d=a+4|0;c[d>>2]=27;c[b>>2]=c[2645];c[b+4>>2]=c[2646];c[b+8>>2]=c[2647];c[b+12>>2]=c[2648];c[2645]=w;c[2646]=p;c[2648]=0;c[2647]=b;b=a+28|0;c[b>>2]=7;if((a+32|0)>>>0>>0)do{M=b;b=b+4|0;c[b>>2]=7}while((M+8|0)>>>0>>0);if((a|0)!=(h|0)){g=a-h|0;c[d>>2]=c[d>>2]&-2;c[h+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){a=b<<1;e=10172+(a<<2)|0;d=c[2533]|0;b=1<>2]|0;if(a>>>0<(c[2537]|0)>>>0)Ma();else{G=b;H=a}}else{c[2533]=d|b;G=10172+(a+2<<2)|0;H=e}c[G>>2]=h;c[H+12>>2]=h;c[h+8>>2]=H;c[h+12>>2]=e;break}b=g>>>8;if(b)if(g>>>0>16777215)e=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;e=14-(K|L|e)+(M<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=10436+(e<<2)|0;c[h+28>>2]=e;c[h+20>>2]=0;c[f>>2]=0;b=c[2534]|0;a=1<>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}b=c[d>>2]|0;k:do if((c[b+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){a=b+16+(e>>>31<<2)|0;d=c[a>>2]|0;if(!d)break;if((c[d+4>>2]&-8|0)==(g|0)){I=d;break k}else{e=e<<1;b=d}}if(a>>>0<(c[2537]|0)>>>0)Ma();else{c[a>>2]=h;c[h+24>>2]=b;c[h+12>>2]=h;c[h+8>>2]=h;break g}}else I=b;while(0);b=I+8|0;a=c[b>>2]|0;M=c[2537]|0;if(a>>>0>=M>>>0&I>>>0>=M>>>0){c[a+12>>2]=h;c[b>>2]=h;c[h+8>>2]=a;c[h+12>>2]=I;c[h+24>>2]=0;break}else Ma()}}else{M=c[2537]|0;if((M|0)==0|w>>>0>>0)c[2537]=w;c[2645]=w;c[2646]=p;c[2648]=0;c[2542]=c[2651];c[2541]=-1;b=0;do{M=b<<1;L=10172+(M<<2)|0;c[10172+(M+3<<2)>>2]=L;c[10172+(M+2<<2)>>2]=L;b=b+1|0}while((b|0)!=32);M=w+8|0;M=(M&7|0)==0?0:0-M&7;L=p+-40-M|0;c[2539]=w+M;c[2536]=L;c[w+(M+4)>>2]=L|1;c[w+(p+-36)>>2]=40;c[2540]=c[2655]}while(0);b=c[2536]|0;if(b>>>0>q>>>0){L=b-q|0;c[2536]=L;M=c[2539]|0;c[2539]=M+q;c[M+(q+4)>>2]=L|1;c[M+4>>2]=q|3;M=M+8|0;return M|0}}c[(SP()|0)>>2]=12;M=0;return M|0}function $Q(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!a)return;b=a+-8|0;i=c[2537]|0;if(b>>>0>>0)Ma();d=c[a+-4>>2]|0;e=d&3;if((e|0)==1)Ma();o=d&-8;q=a+(o+-8)|0;do if(!(d&1)){b=c[b>>2]|0;if(!e)return;j=-8-b|0;l=a+j|0;m=b+o|0;if(l>>>0>>0)Ma();if((l|0)==(c[2538]|0)){b=a+(o+-4)|0;d=c[b>>2]|0;if((d&3|0)!=3){u=l;g=m;break}c[2535]=m;c[b>>2]=d&-2;c[a+(j+4)>>2]=m|1;c[q>>2]=m;return}f=b>>>3;if(b>>>0<256){e=c[a+(j+8)>>2]|0;d=c[a+(j+12)>>2]|0;b=10172+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0>>0)Ma();if((c[e+12>>2]|0)!=(l|0))Ma()}if((d|0)==(e|0)){c[2533]=c[2533]&~(1<>>0>>0)Ma();b=d+8|0;if((c[b>>2]|0)==(l|0))h=b;else Ma()}else h=d+8|0;c[e+12>>2]=d;c[h>>2]=e;u=l;g=m;break}h=c[a+(j+24)>>2]|0;e=c[a+(j+12)>>2]|0;do if((e|0)==(l|0)){d=a+(j+20)|0;b=c[d>>2]|0;if(!b){d=a+(j+16)|0;b=c[d>>2]|0;if(!b){k=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0>>0)Ma();else{c[d>>2]=0;k=b;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Ma();b=f+12|0;if((c[b>>2]|0)!=(l|0))Ma();d=e+8|0;if((c[d>>2]|0)==(l|0)){c[b>>2]=e;c[d>>2]=f;k=e;break}else Ma()}while(0);if(h){b=c[a+(j+28)>>2]|0;d=10436+(b<<2)|0;if((l|0)==(c[d>>2]|0)){c[d>>2]=k;if(!k){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();b=h+16|0;if((c[b>>2]|0)==(l|0))c[b>>2]=k;else c[h+20>>2]=k;if(!k){u=l;g=m;break}}d=c[2537]|0;if(k>>>0>>0)Ma();c[k+24>>2]=h;b=c[a+(j+16)>>2]|0;do if(b)if(b>>>0>>0)Ma();else{c[k+16>>2]=b;c[b+24>>2]=k;break}while(0);b=c[a+(j+20)>>2]|0;if(b)if(b>>>0<(c[2537]|0)>>>0)Ma();else{c[k+20>>2]=b;c[b+24>>2]=k;u=l;g=m;break}else{u=l;g=m}}else{u=l;g=m}}else{u=b;g=o}while(0);if(u>>>0>=q>>>0)Ma();b=a+(o+-4)|0;d=c[b>>2]|0;if(!(d&1))Ma();if(!(d&2)){if((q|0)==(c[2539]|0)){t=(c[2536]|0)+g|0;c[2536]=t;c[2539]=u;c[u+4>>2]=t|1;if((u|0)!=(c[2538]|0))return;c[2538]=0;c[2535]=0;return}if((q|0)==(c[2538]|0)){t=(c[2535]|0)+g|0;c[2535]=t;c[2538]=u;c[u+4>>2]=t|1;c[u+t>>2]=t;return}g=(d&-8)+g|0;f=d>>>3;do if(d>>>0>=256){h=c[a+(o+16)>>2]|0;b=c[a+(o|4)>>2]|0;do if((b|0)==(q|0)){d=a+(o+12)|0;b=c[d>>2]|0;if(!b){d=a+(o+8)|0;b=c[d>>2]|0;if(!b){p=0;break}}while(1){e=b+20|0;f=c[e>>2]|0;if(f){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0<(c[2537]|0)>>>0)Ma();else{c[d>>2]=0;p=b;break}}else{d=c[a+o>>2]|0;if(d>>>0<(c[2537]|0)>>>0)Ma();e=d+12|0;if((c[e>>2]|0)!=(q|0))Ma();f=b+8|0;if((c[f>>2]|0)==(q|0)){c[e>>2]=b;c[f>>2]=d;p=b;break}else Ma()}while(0);if(h){b=c[a+(o+20)>>2]|0;d=10436+(b<<2)|0;if((q|0)==(c[d>>2]|0)){c[d>>2]=p;if(!p){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();b=h+16|0;if((c[b>>2]|0)==(q|0))c[b>>2]=p;else c[h+20>>2]=p;if(!p)break}d=c[2537]|0;if(p>>>0>>0)Ma();c[p+24>>2]=h;b=c[a+(o+8)>>2]|0;do if(b)if(b>>>0>>0)Ma();else{c[p+16>>2]=b;c[b+24>>2]=p;break}while(0);b=c[a+(o+12)>>2]|0;if(b)if(b>>>0<(c[2537]|0)>>>0)Ma();else{c[p+20>>2]=b;c[b+24>>2]=p;break}}}else{e=c[a+o>>2]|0;d=c[a+(o|4)>>2]|0;b=10172+(f<<1<<2)|0;if((e|0)!=(b|0)){if(e>>>0<(c[2537]|0)>>>0)Ma();if((c[e+12>>2]|0)!=(q|0))Ma()}if((d|0)==(e|0)){c[2533]=c[2533]&~(1<>>0<(c[2537]|0)>>>0)Ma();b=d+8|0;if((c[b>>2]|0)==(q|0))n=b;else Ma()}else n=d+8|0;c[e+12>>2]=d;c[n>>2]=e}while(0);c[u+4>>2]=g|1;c[u+g>>2]=g;if((u|0)==(c[2538]|0)){c[2535]=g;return}}else{c[b>>2]=d&-2;c[u+4>>2]=g|1;c[u+g>>2]=g}b=g>>>3;if(g>>>0<256){d=b<<1;f=10172+(d<<2)|0;e=c[2533]|0;b=1<>2]|0;if(d>>>0<(c[2537]|0)>>>0)Ma();else{r=b;s=d}}else{c[2533]=e|b;r=10172+(d+2<<2)|0;s=f}c[r>>2]=u;c[s+12>>2]=u;c[u+8>>2]=s;c[u+12>>2]=f;return}b=g>>>8;if(b)if(g>>>0>16777215)f=31;else{r=(b+1048320|0)>>>16&8;s=b<>>16&4;s=s<>>16&2;f=14-(q|r|f)+(s<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;b=10436+(f<<2)|0;c[u+28>>2]=f;c[u+20>>2]=0;c[u+16>>2]=0;d=c[2534]|0;e=1<>2]|0;b:do if((c[b+4>>2]&-8|0)!=(g|0)){f=g<<((f|0)==31?0:25-(f>>>1)|0);while(1){d=b+16+(f>>>31<<2)|0;e=c[d>>2]|0;if(!e)break;if((c[e+4>>2]&-8|0)==(g|0)){t=e;break b}else{f=f<<1;b=e}}if(d>>>0<(c[2537]|0)>>>0)Ma();else{c[d>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u;break a}}else t=b;while(0);b=t+8|0;d=c[b>>2]|0;s=c[2537]|0;if(d>>>0>=s>>>0&t>>>0>=s>>>0){c[d+12>>2]=u;c[b>>2]=u;c[u+8>>2]=d;c[u+12>>2]=t;c[u+24>>2]=0;break}else Ma()}else{c[2534]=d|e;c[b>>2]=u;c[u+24>>2]=b;c[u+12>>2]=u;c[u+8>>2]=u}while(0);u=(c[2541]|0)+-1|0;c[2541]=u;if(!u)b=10588;else return;while(1){b=c[b>>2]|0;if(!b)break;else b=b+8|0}c[2541]=-1;return}function aR(a,b){a=a|0;b=b|0;var d=0;if(a){d=_(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;b=_Q(d)|0;if(!b)return b|0;if(!(c[b+-4>>2]&3))return b|0;kR(b|0,0,d|0)|0;return b|0}function bR(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){a=_Q(b)|0;return a|0}if(b>>>0>4294967231){c[(SP()|0)>>2]=12;a=0;return a|0}d=cR(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d){a=d+8|0;return a|0}d=_Q(b)|0;if(!d){a=0;return a|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;iR(d|0,a|0,(e>>>0>>0?e:b)|0)|0;$Q(a);a=d;return a|0}function cR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=a+4|0;p=c[o>>2]|0;j=p&-8;l=a+j|0;i=c[2537]|0;d=p&3;if(!((d|0)!=1&a>>>0>=i>>>0&a>>>0>>0))Ma();e=a+(j|4)|0;f=c[e>>2]|0;if(!(f&1))Ma();if(!d){if(b>>>0<256){a=0;return a|0}if(j>>>0>=(b+4|0)>>>0?(j-b|0)>>>0<=c[2653]<<1>>>0:0)return a|0;a=0;return a|0}if(j>>>0>=b>>>0){d=j-b|0;if(d>>>0<=15)return a|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|3;c[e>>2]=c[e>>2]|1;dR(a+b|0,d);return a|0}if((l|0)==(c[2539]|0)){d=(c[2536]|0)+j|0;if(d>>>0<=b>>>0){a=0;return a|0}n=d-b|0;c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|1;c[2539]=a+b;c[2536]=n;return a|0}if((l|0)==(c[2538]|0)){e=(c[2535]|0)+j|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=d|1;c[a+e>>2]=d;e=a+(e+4)|0;c[e>>2]=c[e>>2]&-2;e=a+b|0}else{c[o>>2]=p&1|e|2;e=a+(e+4)|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[2535]=d;c[2538]=e;return a|0}if(f&2){a=0;return a|0}m=(f&-8)+j|0;if(m>>>0>>0){a=0;return a|0}n=m-b|0;g=f>>>3;do if(f>>>0>=256){h=c[a+(j+24)>>2]|0;g=c[a+(j+12)>>2]|0;do if((g|0)==(l|0)){e=a+(j+20)|0;d=c[e>>2]|0;if(!d){e=a+(j+16)|0;d=c[e>>2]|0;if(!d){k=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Ma();else{c[e>>2]=0;k=d;break}}else{f=c[a+(j+8)>>2]|0;if(f>>>0>>0)Ma();d=f+12|0;if((c[d>>2]|0)!=(l|0))Ma();e=g+8|0;if((c[e>>2]|0)==(l|0)){c[d>>2]=g;c[e>>2]=f;k=g;break}else Ma()}while(0);if(h){d=c[a+(j+28)>>2]|0;e=10436+(d<<2)|0;if((l|0)==(c[e>>2]|0)){c[e>>2]=k;if(!k){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();d=h+16|0;if((c[d>>2]|0)==(l|0))c[d>>2]=k;else c[h+20>>2]=k;if(!k)break}e=c[2537]|0;if(k>>>0>>0)Ma();c[k+24>>2]=h;d=c[a+(j+16)>>2]|0;do if(d)if(d>>>0>>0)Ma();else{c[k+16>>2]=d;c[d+24>>2]=k;break}while(0);d=c[a+(j+20)>>2]|0;if(d)if(d>>>0<(c[2537]|0)>>>0)Ma();else{c[k+20>>2]=d;c[d+24>>2]=k;break}}}else{f=c[a+(j+8)>>2]|0;e=c[a+(j+12)>>2]|0;d=10172+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Ma();if((c[f+12>>2]|0)!=(l|0))Ma()}if((e|0)==(f|0)){c[2533]=c[2533]&~(1<>>0>>0)Ma();d=e+8|0;if((c[d>>2]|0)==(l|0))h=d;else Ma()}else h=e+8|0;c[f+12>>2]=e;c[h>>2]=f}while(0);if(n>>>0<16){c[o>>2]=m|p&1|2;b=a+(m|4)|0;c[b>>2]=c[b>>2]|1;return a|0}else{c[o>>2]=p&1|b|2;c[a+(b+4)>>2]=n|3;p=a+(m|4)|0;c[p>>2]=c[p>>2]|1;dR(a+b|0,n);return a|0}return 0}function dR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){k=c[a>>2]|0;if(!(d&3))return;n=a+(0-k)|0;m=k+b|0;j=c[2537]|0;if(n>>>0>>0)Ma();if((n|0)==(c[2538]|0)){e=a+(b+4)|0;d=c[e>>2]|0;if((d&3|0)!=3){t=n;h=m;break}c[2535]=m;c[e>>2]=d&-2;c[a+(4-k)>>2]=m|1;c[q>>2]=m;return}g=k>>>3;if(k>>>0<256){f=c[a+(8-k)>>2]|0;e=c[a+(12-k)>>2]|0;d=10172+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Ma();if((c[f+12>>2]|0)!=(n|0))Ma()}if((e|0)==(f|0)){c[2533]=c[2533]&~(1<>>0>>0)Ma();d=e+8|0;if((c[d>>2]|0)==(n|0))i=d;else Ma()}else i=e+8|0;c[f+12>>2]=e;c[i>>2]=f;t=n;h=m;break}i=c[a+(24-k)>>2]|0;f=c[a+(12-k)>>2]|0;do if((f|0)==(n|0)){f=16-k|0;e=a+(f+4)|0;d=c[e>>2]|0;if(!d){e=a+f|0;d=c[e>>2]|0;if(!d){l=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Ma();else{c[e>>2]=0;l=d;break}}else{g=c[a+(8-k)>>2]|0;if(g>>>0>>0)Ma();d=g+12|0;if((c[d>>2]|0)!=(n|0))Ma();e=f+8|0;if((c[e>>2]|0)==(n|0)){c[d>>2]=f;c[e>>2]=g;l=f;break}else Ma()}while(0);if(i){d=c[a+(28-k)>>2]|0;e=10436+(d<<2)|0;if((n|0)==(c[e>>2]|0)){c[e>>2]=l;if(!l){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();d=i+16|0;if((c[d>>2]|0)==(n|0))c[d>>2]=l;else c[i+20>>2]=l;if(!l){t=n;h=m;break}}f=c[2537]|0;if(l>>>0>>0)Ma();c[l+24>>2]=i;d=16-k|0;e=c[a+d>>2]|0;do if(e)if(e>>>0>>0)Ma();else{c[l+16>>2]=e;c[e+24>>2]=l;break}while(0);d=c[a+(d+4)>>2]|0;if(d)if(d>>>0<(c[2537]|0)>>>0)Ma();else{c[l+20>>2]=d;c[d+24>>2]=l;t=n;h=m;break}else{t=n;h=m}}else{t=n;h=m}}else{t=a;h=b}while(0);j=c[2537]|0;if(q>>>0>>0)Ma();d=a+(b+4)|0;e=c[d>>2]|0;if(!(e&2)){if((q|0)==(c[2539]|0)){s=(c[2536]|0)+h|0;c[2536]=s;c[2539]=t;c[t+4>>2]=s|1;if((t|0)!=(c[2538]|0))return;c[2538]=0;c[2535]=0;return}if((q|0)==(c[2538]|0)){s=(c[2535]|0)+h|0;c[2535]=s;c[2538]=t;c[t+4>>2]=s|1;c[t+s>>2]=s;return}h=(e&-8)+h|0;g=e>>>3;do if(e>>>0>=256){i=c[a+(b+24)>>2]|0;f=c[a+(b+12)>>2]|0;do if((f|0)==(q|0)){e=a+(b+20)|0;d=c[e>>2]|0;if(!d){e=a+(b+16)|0;d=c[e>>2]|0;if(!d){p=0;break}}while(1){f=d+20|0;g=c[f>>2]|0;if(g){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Ma();else{c[e>>2]=0;p=d;break}}else{g=c[a+(b+8)>>2]|0;if(g>>>0>>0)Ma();d=g+12|0;if((c[d>>2]|0)!=(q|0))Ma();e=f+8|0;if((c[e>>2]|0)==(q|0)){c[d>>2]=f;c[e>>2]=g;p=f;break}else Ma()}while(0);if(i){d=c[a+(b+28)>>2]|0;e=10436+(d<<2)|0;if((q|0)==(c[e>>2]|0)){c[e>>2]=p;if(!p){c[2534]=c[2534]&~(1<>>0<(c[2537]|0)>>>0)Ma();d=i+16|0;if((c[d>>2]|0)==(q|0))c[d>>2]=p;else c[i+20>>2]=p;if(!p)break}e=c[2537]|0;if(p>>>0>>0)Ma();c[p+24>>2]=i;d=c[a+(b+16)>>2]|0;do if(d)if(d>>>0>>0)Ma();else{c[p+16>>2]=d;c[d+24>>2]=p;break}while(0);d=c[a+(b+20)>>2]|0;if(d)if(d>>>0<(c[2537]|0)>>>0)Ma();else{c[p+20>>2]=d;c[d+24>>2]=p;break}}}else{f=c[a+(b+8)>>2]|0;e=c[a+(b+12)>>2]|0;d=10172+(g<<1<<2)|0;if((f|0)!=(d|0)){if(f>>>0>>0)Ma();if((c[f+12>>2]|0)!=(q|0))Ma()}if((e|0)==(f|0)){c[2533]=c[2533]&~(1<>>0>>0)Ma();d=e+8|0;if((c[d>>2]|0)==(q|0))o=d;else Ma()}else o=e+8|0;c[f+12>>2]=e;c[o>>2]=f}while(0);c[t+4>>2]=h|1;c[t+h>>2]=h;if((t|0)==(c[2538]|0)){c[2535]=h;return}}else{c[d>>2]=e&-2;c[t+4>>2]=h|1;c[t+h>>2]=h}d=h>>>3;if(h>>>0<256){e=d<<1;g=10172+(e<<2)|0;f=c[2533]|0;d=1<>2]|0;if(e>>>0<(c[2537]|0)>>>0)Ma();else{r=d;s=e}}else{c[2533]=f|d;r=10172+(e+2<<2)|0;s=g}c[r>>2]=t;c[s+12>>2]=t;c[t+8>>2]=s;c[t+12>>2]=g;return}d=h>>>8;if(d)if(h>>>0>16777215)g=31;else{r=(d+1048320|0)>>>16&8;s=d<>>16&4;s=s<>>16&2;g=14-(q|r|g)+(s<>>15)|0;g=h>>>(g+7|0)&1|g<<1}else g=0;d=10436+(g<<2)|0;c[t+28>>2]=g;c[t+20>>2]=0;c[t+16>>2]=0;e=c[2534]|0;f=1<>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}d=c[d>>2]|0;a:do if((c[d+4>>2]&-8|0)!=(h|0)){g=h<<((g|0)==31?0:25-(g>>>1)|0);while(1){e=d+16+(g>>>31<<2)|0;f=c[e>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(h|0)){d=f;break a}else{g=g<<1;d=f}}if(e>>>0<(c[2537]|0)>>>0)Ma();c[e>>2]=t;c[t+24>>2]=d;c[t+12>>2]=t;c[t+8>>2]=t;return}while(0);e=d+8|0;f=c[e>>2]|0;s=c[2537]|0;if(!(f>>>0>=s>>>0&d>>>0>=s>>>0))Ma();c[f+12>>2]=t;c[e>>2]=t;c[t+8>>2]=f;c[t+12>>2]=d;c[t+24>>2]=0;return}function eR(){}function fR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return(C=d,a-c>>>0|0)|0}function gR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return(C=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function hR(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>>c;return a>>>c|(b&(1<>>c-32|0}function iR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return lb(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function jR(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else iR(b,c,d)|0;return b|0}function kR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function lR(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b<>>32-c;return a<>c;return a>>>c|(b&(1<>c-32|0}function nR(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)>>0]|0)+24|0}function oR(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=_(e,f)|0;d=a>>>16;a=(c>>>16)+(_(e,d)|0)|0;e=b>>>16;b=_(e,f)|0;return(C=(a>>>16)+(_(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function pR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=fR(j^a,i^b,j,i)|0;g=C;a=f^j;b=e^i;return fR((uR(h,g,fR(f^c,e^d,f,e)|0,C,0)|0)^a,C^b,a,b)|0}function qR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+16|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=fR(h^a,g^b,h,g)|0;b=C;uR(a,b,fR(l^d,k^e,l,k)|0,C,j)|0;e=fR(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;d=C;i=f;return(C=d,e)|0}function rR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=oR(e,f)|0;a=C;return(C=(_(b,f)|0)+(_(d,e)|0)+a|a&0,c|0|0)|0}function sR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return uR(a,b,c,d,0)|0}function tR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g|0;uR(a,b,d,e,f)|0;i=g;return(C=c[f+4>>2]|0,c[f>>2]|0)|0}function Km(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0;G=i;i=i+96|0;z=G+80|0;p=G+76|0;h=G+72|0;A=G+68|0;B=G+64|0;x=G+60|0;n=G+56|0;E=G+52|0;D=G+48|0;u=G;o=G+44|0;q=G+40|0;k=G+36|0;l=G+85|0;v=G+32|0;m=G+28|0;s=G+24|0;j=G+20|0;r=G+84|0;y=G+16|0;w=G+12|0;t=G+8|0;c[p>>2]=b;c[h>>2]=e;c[A>>2]=f;c[B>>2]=g;c[x>>2]=c[(c[h>>2]|0)+20>>2];c[n>>2]=c[c[p>>2]>>2];c[c[B>>2]>>2]=0;if((c[(c[x>>2]|0)+68>>2]|0)<(c[(c[n>>2]|0)+24>>2]|0)?(c[(c[x>>2]|0)+68>>2]|0)!=(c[A>>2]|0):0){c[z>>2]=0;F=c[z>>2]|0;i=G;return F|0}b=(c[h>>2]|0)+24|0;g=c[b+4>>2]|0;e=u;c[e>>2]=c[b>>2];c[e+4>>2]=g;c[E>>2]=c[(c[x>>2]|0)+28>>2];e=u;g=(c[p>>2]|0)+32|0;if(!(!((c[e>>2]|0)!=(c[g>>2]|0)?1:(c[e+4>>2]|0)!=(c[g+4>>2]|0))?(d[(c[h>>2]|0)+32>>0]|0)==0:0))F=6;do if((F|0)==6){c[o>>2]=0;c[q>>2]=d[(c[n>>2]|0)+231>>0];c[k>>2]=0;a[l>>0]=0;c[m>>2]=c[h>>2];c[v>>2]=c[(c[h>>2]|0)+8>>2];while(1){if(!(c[v>>2]|0))break;if((c[c[v>>2]>>2]|0)==4)c[k>>2]=1;if((c[c[v>>2]>>2]|0)==1)c[m>>2]=c[v>>2];if(a[(c[v>>2]|0)+32>>0]|0)a[l>>0]=1;c[v>>2]=c[(c[v>>2]|0)+8>>2]}if(!(c[k>>2]|0)){c[z>>2]=0;F=c[z>>2]|0;i=G;return F|0}a:do if(c[(c[x>>2]|0)+40>>2]|0){c[j>>2]=d[(c[m>>2]|0)+32>>0];Mm(c[p>>2]|0,c[m>>2]|0,o);b:while(1){if(c[o>>2]|0)break a;while(1){if(!((a[(c[m>>2]|0)+32>>0]|0)!=0^1))break a;Nm(c[p>>2]|0,c[m>>2]|0,o);if(c[j>>2]|0)continue b;n=(c[m>>2]|0)+24|0;g=u;if(!(((c[n>>2]|0)!=(c[g>>2]|0)?1:(c[n+4>>2]|0)!=(c[g+4>>2]|0))&(c[o>>2]|0)==0))break a}}}while(0);c:do if((a[l>>0]|0)!=0&(c[o>>2]|0)==0)do{if(!((a[(c[m>>2]|0)+32>>0]|0)!=0^1))break c;Nm(c[p>>2]|0,c[m>>2]|0,o)}while((c[o>>2]|0)==0);while(0);if(c[o>>2]|0){c[z>>2]=c[o>>2];F=c[z>>2]|0;i=G;return F|0}c[s>>2]=1;c[v>>2]=c[m>>2];while(1){if(!(c[v>>2]|0))break;a[r>>0]=0;c[y>>2]=c[v>>2];if((c[c[y>>2]>>2]|0)==1)c[y>>2]=c[(c[y>>2]|0)+16>>2];c[w>>2]=c[(c[y>>2]|0)+20>>2];c[E>>2]=c[(c[w>>2]|0)+48>>2];g=(c[w>>2]|0)+56|0;o=c[g+4>>2]|0;h=u;c[h>>2]=c[g>>2];c[h+4>>2]=o;h=(c[(c[w>>2]|0)+4>>2]|0)!=0;d:do if((d[(c[p>>2]|0)+52>>0]|0)==(c[q>>2]|0)){if(h)h=(c[E>>2]|0)>>>0>=((c[c[w>>2]>>2]|0)+(c[(c[w>>2]|0)+4>>2]|0)|0)>>>0;else h=1;a[r>>0]=h&1;while(1){if((c[E>>2]|0)!=0?(g=(c[q>>2]|0)!=0?-1:1,n=u,o=(c[p>>2]|0)+32|0,o=fR(c[n>>2]|0,c[n+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0,rR(g|0,((g|0)<0)<<31>>31|0,o|0,C|0)|0,(C|0)>=0):0)break d;if(d[r>>0]|0)break d;Om(c[q>>2]|0,c[c[w>>2]>>2]|0,c[(c[w>>2]|0)+4>>2]|0,E,u,r)}}else{if(h)if(c[E>>2]|0)h=(c[E>>2]|0)>>>0<=(c[c[w>>2]>>2]|0)>>>0;else h=0;else h=1;a[r>>0]=h&1;while(1){if((c[E>>2]|0)!=0?(g=(c[q>>2]|0)!=0?-1:1,n=u,o=(c[p>>2]|0)+32|0,o=fR(c[n>>2]|0,c[n+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0,o=rR(g|0,((g|0)<0)<<31>>31|0,o|0,C|0)|0,g=C,!((g|0)>0|(g|0)==0&o>>>0>0)):0)break d;if(d[r>>0]|0)break d;Wl(c[q>>2]|0,c[c[w>>2]>>2]|0,c[(c[w>>2]|0)+4>>2]|0,E,u,t,r)}}while(0);c[(c[w>>2]|0)+48>>2]=c[E>>2];n=u;g=c[n+4>>2]|0;o=(c[w>>2]|0)+56|0;c[o>>2]=c[n>>2];c[o+4>>2]=g;if(!((d[r>>0]|0)==0?(g=u,o=(c[p>>2]|0)+32|0,!((c[g>>2]|0)!=(c[o>>2]|0)?1:(c[g+4>>2]|0)!=(c[o+4>>2]|0))):0))c[s>>2]=0;c[v>>2]=c[(c[v>>2]|0)+12>>2]}if(c[s>>2]|0){c[E>>2]=c[(c[x>>2]|0)+48>>2];break}else{c[E>>2]=0;break}}while(0);if(!(c[E>>2]|0)){c[z>>2]=0;F=c[z>>2]|0;i=G;return F|0}if((a[c[E>>2]>>0]|0)==1){c[E>>2]=(c[E>>2]|0)+1;h=c[E>>2]|0;if(d[c[E>>2]>>0]&128)h=Vl(h,D)|0;else{c[D>>2]=d[h>>0];h=1}c[E>>2]=(c[E>>2]|0)+h}else c[D>>2]=0;while(1){if((c[D>>2]|0)>=(c[A>>2]|0))break;Tl(0,E);if(!(a[c[E>>2]>>0]|0)){F=65;break}c[E>>2]=(c[E>>2]|0)+1;h=c[E>>2]|0;if(d[c[E>>2]>>0]&128)h=Vl(h,D)|0;else{c[D>>2]=d[h>>0];h=1}c[E>>2]=(c[E>>2]|0)+h}if((F|0)==65){c[z>>2]=0;F=c[z>>2]|0;i=G;return F|0}if(!(a[c[E>>2]>>0]|0))c[E>>2]=0;c[c[B>>2]>>2]=(c[A>>2]|0)==(c[D>>2]|0)?c[E>>2]|0:0;c[z>>2]=0;F=c[z>>2]|0;i=G;return F|0}function Lm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;g=h+4|0;e=h+12|0;f=h;c[d>>2]=b;c[g>>2]=c[c[d>>2]>>2];a[e>>0]=0;c[f>>2]=0;while(1){b=c[g>>2]|0;if(!(254&(a[c[g>>2]>>0]|a[e>>0])))break;c[g>>2]=b+1;a[e>>0]=a[b>>0]&128;if(a[e>>0]|0)continue;c[f>>2]=(c[f>>2]|0)+1}c[c[d>>2]>>2]=b;i=h;return c[f>>2]|0}function Mm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;k=m+8|0;j=m+4|0;l=m;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;if(!(c[g>>2]|0)){i=m;return}if(c[c[h>>2]>>2]|0){i=m;return}c[k>>2]=c[(c[g>>2]|0)+20>>2];if(c[k>>2]|0){Pm(c[k>>2]|0);if(c[(c[k>>2]|0)+40>>2]|0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[(c[k>>2]|0)+64>>2]|0))break;c[l>>2]=(c[k>>2]|0)+72+((c[j>>2]|0)*24|0);if(c[(c[l>>2]|0)+20>>2]|0)Ym(c[(c[l>>2]|0)+20>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+1}l=Zm(c[f>>2]|0,0,c[k>>2]|0)|0;c[c[h>>2]>>2]=l}c[(c[k>>2]|0)+8>>2]=0;l=(c[k>>2]|0)+16|0;c[l>>2]=0;c[l+4>>2]=0;c[(c[k>>2]|0)+48>>2]=0}l=(c[g>>2]|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;a[(c[g>>2]|0)+32>>0]=0;a[(c[g>>2]|0)+33>>0]=0;Mm(c[f>>2]|0,c[(c[g>>2]|0)+12>>2]|0,c[h>>2]|0);Mm(c[f>>2]|0,c[(c[g>>2]|0)+16>>2]|0,c[h>>2]|0);i=m;return}function Nm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+80|0;p=x+64|0;w=x+60|0;q=x+56|0;r=x+52|0;u=x+48|0;v=x+44|0;m=x+8|0;s=x+40|0;t=x+36|0;n=x+32|0;o=x+28|0;l=x;g=x+24|0;j=x+20|0;h=x+16|0;c[p>>2]=b;c[w>>2]=e;c[q>>2]=f;if(c[c[q>>2]>>2]|0){i=x;return}c[r>>2]=d[(c[p>>2]|0)+52>>0];a[(c[w>>2]|0)+33>>0]=1;switch(c[c[w>>2]>>2]|0){case 3:case 1:{c[u>>2]=c[(c[w>>2]|0)+12>>2];c[v>>2]=c[(c[w>>2]|0)+16>>2];if(a[(c[u>>2]|0)+34>>0]|0){Nm(c[p>>2]|0,c[v>>2]|0,c[q>>2]|0);s=(c[v>>2]|0)+24|0;t=c[s+4>>2]|0;u=(c[w>>2]|0)+24|0;c[u>>2]=c[s>>2];c[u+4>>2]=t;a[(c[w>>2]|0)+32>>0]=a[(c[v>>2]|0)+32>>0]|0;i=x;return}o=(a[(c[v>>2]|0)+34>>0]|0)!=0;Nm(c[p>>2]|0,c[u>>2]|0,c[q>>2]|0);if(o){s=(c[u>>2]|0)+24|0;t=c[s+4>>2]|0;v=(c[w>>2]|0)+24|0;c[v>>2]=c[s>>2];c[v+4>>2]=t;a[(c[w>>2]|0)+32>>0]=a[(c[u>>2]|0)+32>>0]|0;i=x;return}Nm(c[p>>2]|0,c[v>>2]|0,c[q>>2]|0);while(1){if(a[(c[u>>2]|0)+32>>0]|0)break;if(a[(c[v>>2]|0)+32>>0]|0)break;if(c[c[q>>2]>>2]|0)break;o=(c[r>>2]|0)!=0?-1:1;l=(c[u>>2]|0)+24|0;n=(c[v>>2]|0)+24|0;n=fR(c[l>>2]|0,c[l+4>>2]|0,c[n>>2]|0,c[n+4>>2]|0)|0;n=rR(o|0,((o|0)<0)<<31>>31|0,n|0,C|0)|0;o=m;c[o>>2]=n;c[o+4>>2]=C;o=m;if((c[o>>2]|0)==0&(c[o+4>>2]|0)==0)break;b=c[p>>2]|0;if((c[m+4>>2]|0)<0){Nm(b,c[u>>2]|0,c[q>>2]|0);continue}else{Nm(b,c[v>>2]|0,c[q>>2]|0);continue}}n=(c[u>>2]|0)+24|0;o=c[n+4>>2]|0;r=(c[w>>2]|0)+24|0;c[r>>2]=c[n>>2];c[r+4>>2]=o;if(d[(c[u>>2]|0)+32>>0]|0)b=1;else b=(d[(c[v>>2]|0)+32>>0]|0)!=0;a[(c[w>>2]|0)+32>>0]=b&1;if((c[c[w>>2]>>2]|0)!=1){i=x;return}if(!(d[(c[w>>2]|0)+32>>0]|0)){i=x;return}a:do if((c[(c[v>>2]|0)+20>>2]|0)!=0?(c[c[(c[v>>2]|0)+20>>2]>>2]|0)!=0:0){c[s>>2]=c[(c[v>>2]|0)+20>>2];while(1){if(c[c[q>>2]>>2]|0)break a;if(d[(c[v>>2]|0)+32>>0]|0)break a;kR(c[(c[s>>2]|0)+28>>2]|0,0,c[(c[s>>2]|0)+32>>2]|0)|0;Nm(c[p>>2]|0,c[v>>2]|0,c[q>>2]|0)}}while(0);if(!(c[(c[u>>2]|0)+20>>2]|0)){i=x;return}if(!(c[c[(c[u>>2]|0)+20>>2]>>2]|0)){i=x;return}c[t>>2]=c[(c[u>>2]|0)+20>>2];while(1){if(c[c[q>>2]>>2]|0){k=53;break}if(d[(c[u>>2]|0)+32>>0]|0){k=53;break}kR(c[(c[t>>2]|0)+28>>2]|0,0,c[(c[t>>2]|0)+32>>2]|0)|0;Nm(c[p>>2]|0,c[u>>2]|0,c[q>>2]|0)}if((k|0)==53){i=x;return}break}case 4:{c[n>>2]=c[(c[w>>2]|0)+12>>2];c[o>>2]=c[(c[w>>2]|0)+16>>2];v=(c[r>>2]|0)!=0?-1:1;t=(c[n>>2]|0)+24|0;u=(c[o>>2]|0)+24|0;u=fR(c[t>>2]|0,c[t+4>>2]|0,c[u>>2]|0,c[u+4>>2]|0)|0;u=rR(v|0,((v|0)<0)<<31>>31|0,u|0,C|0)|0;v=l;c[v>>2]=u;c[v+4>>2]=C;do if((d[(c[o>>2]|0)+32>>0]|0)==0?!((c[l+4>>2]|0)<0?(d[(c[n>>2]|0)+32>>0]|0)==0:0):0){if((d[(c[n>>2]|0)+32>>0]|0)==0?(v=l,u=c[v+4>>2]|0,!((d[(c[o>>2]|0)+32>>0]|0)==0&((u|0)>0|(u|0)==0&(c[v>>2]|0)>>>0>0))):0){Nm(c[p>>2]|0,c[n>>2]|0,c[q>>2]|0);Nm(c[p>>2]|0,c[o>>2]|0,c[q>>2]|0);break}Nm(c[p>>2]|0,c[o>>2]|0,c[q>>2]|0)}else k=33;while(0);if((k|0)==33)Nm(c[p>>2]|0,c[n>>2]|0,c[q>>2]|0); -if(d[(c[n>>2]|0)+32>>0]|0)b=(d[(c[o>>2]|0)+32>>0]|0)!=0;else b=0;a[(c[w>>2]|0)+32>>0]=b&1;v=(c[r>>2]|0)!=0?-1:1;t=(c[n>>2]|0)+24|0;u=(c[o>>2]|0)+24|0;u=fR(c[t>>2]|0,c[t+4>>2]|0,c[u>>2]|0,c[u+4>>2]|0)|0;u=rR(v|0,((v|0)<0)<<31>>31|0,u|0,C|0)|0;v=l;c[v>>2]=u;c[v+4>>2]=C;if((d[(c[o>>2]|0)+32>>0]|0)==0?!((c[l+4>>2]|0)<0?(d[(c[n>>2]|0)+32>>0]|0)==0:0):0){u=(c[o>>2]|0)+24|0;v=c[u+4>>2]|0;w=(c[w>>2]|0)+24|0;c[w>>2]=c[u>>2];c[w+4>>2]=v;i=x;return}u=(c[n>>2]|0)+24|0;v=c[u+4>>2]|0;w=(c[w>>2]|0)+24|0;c[w>>2]=c[u>>2];c[w+4>>2]=v;i=x;return}case 2:{c[g>>2]=c[(c[w>>2]|0)+12>>2];c[j>>2]=c[(c[w>>2]|0)+16>>2];if(!(d[(c[j>>2]|0)+33>>0]|0))Nm(c[p>>2]|0,c[j>>2]|0,c[q>>2]|0);Nm(c[p>>2]|0,c[g>>2]|0,c[q>>2]|0);b:do if(!(d[(c[g>>2]|0)+32>>0]|0))while(1){if(c[c[q>>2]>>2]|0)break b;if(a[(c[j>>2]|0)+32>>0]|0)break b;u=(c[r>>2]|0)!=0?-1:1;t=(c[g>>2]|0)+24|0;v=(c[j>>2]|0)+24|0;v=fR(c[t>>2]|0,c[t+4>>2]|0,c[v>>2]|0,c[v+4>>2]|0)|0;v=rR(u|0,((u|0)<0)<<31>>31|0,v|0,C|0)|0;u=C;if(!((u|0)>0|(u|0)==0&v>>>0>0))break b;Nm(c[p>>2]|0,c[j>>2]|0,c[q>>2]|0)}while(0);t=(c[g>>2]|0)+24|0;u=c[t+4>>2]|0;v=(c[w>>2]|0)+24|0;c[v>>2]=c[t>>2];c[v+4>>2]=u;a[(c[w>>2]|0)+32>>0]=a[(c[g>>2]|0)+32>>0]|0;i=x;return}default:{c[h>>2]=c[(c[w>>2]|0)+20>>2];Pm(c[h>>2]|0);u=Qm(c[p>>2]|0,c[h>>2]|0,(c[w>>2]|0)+32|0)|0;c[c[q>>2]>>2]=u;u=(c[h>>2]|0)+16|0;v=c[u+4>>2]|0;w=(c[w>>2]|0)+24|0;c[w>>2]=c[u>>2];c[w+4>>2]=v;i=x;return}}}function Om(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;j=r+32|0;k=r+28|0;l=r+24|0;m=r+20|0;n=r+16|0;o=r+12|0;q=r+8|0;p=r;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[q>>2]=c[c[m>>2]>>2];if(!(c[q>>2]|0)){c[q>>2]=c[k>>2];p=Ul(c[q>>2]|0,c[n>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+p;p=c[q>>2]|0;q=c[m>>2]|0;c[q>>2]=p;i=r;return}Zl(0,q);while(1){if((c[q>>2]|0)>>>0<((c[k>>2]|0)+(c[l>>2]|0)|0)>>>0)b=(a[c[q>>2]>>0]|0)==0;else b=0;d=c[q>>2]|0;if(!b)break;c[q>>2]=d+1}if(d>>>0>=((c[k>>2]|0)+(c[l>>2]|0)|0)>>>0){a[c[o>>2]>>0]=1;p=c[q>>2]|0;q=c[m>>2]|0;c[q>>2]=p;i=r;return}else{l=Ul(c[q>>2]|0,p)|0;c[q>>2]=(c[q>>2]|0)+l;l=(c[j>>2]|0)!=0?-1:1;o=p;o=rR(l|0,((l|0)<0)<<31>>31|0,c[o>>2]|0,c[o+4>>2]|0)|0;p=c[n>>2]|0;n=p;o=gR(c[n>>2]|0,c[n+4>>2]|0,o|0,C|0)|0;c[p>>2]=o;c[p+4>>2]=C;p=c[q>>2]|0;q=c[m>>2]|0;c[q>>2]=p;i=r;return}}function Pm(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(c[(c[b>>2]|0)+24>>2]|0)Kd(c[(c[b>>2]|0)+28>>2]|0);c[(c[b>>2]|0)+28>>2]=0;c[(c[b>>2]|0)+32>>2]=0;c[(c[b>>2]|0)+24>>2]=0;i=d;return}function Qm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+20|0;f=l+16|0;g=l+12|0;k=l+8|0;h=l+4|0;j=l;c[m>>2]=a;c[f>>2]=b;c[g>>2]=e;c[k>>2]=0;c[h>>2]=c[f>>2];c[j>>2]=c[c[m>>2]>>2];b=c[m>>2]|0;if(c[(c[f>>2]|0)+40>>2]|0){c[k>>2]=Rm(b,c[f>>2]|0,c[g>>2]|0)|0;m=c[k>>2]|0;i=l;return m|0}if((d[b+52>>0]|0|0)!=(d[(c[j>>2]|0)+231>>0]|0|0)?(c[(c[h>>2]|0)+4>>2]|0)!=0:0){Wl(d[(c[j>>2]|0)+231>>0]|0,c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+4>>2]|0,(c[h>>2]|0)+8|0,(c[h>>2]|0)+16|0,(c[h>>2]|0)+32|0,c[g>>2]|0);c[(c[h>>2]|0)+28>>2]=c[(c[h>>2]|0)+8>>2];m=c[k>>2]|0;i=l;return m|0}Sm(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0);m=c[k>>2]|0;i=l;return m|0}function Rm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0;E=i;i=i+192|0;h=E+172|0;g=E+168|0;j=E+164|0;k=E+160|0;A=E+156|0;v=E+152|0;z=E+148|0;o=E+176|0;n=E+144|0;l=E+8|0;p=E+140|0;r=E;q=E+136|0;u=E+132|0;s=E+128|0;m=E+124|0;w=E+120|0;y=E+116|0;x=E+112|0;t=E+108|0;B=E+104|0;c[g>>2]=b;c[j>>2]=e;c[k>>2]=f;c[A>>2]=0;c[v>>2]=c[j>>2];c[z>>2]=c[c[g>>2]>>2];a[o>>0]=0;if((c[(c[j>>2]|0)+64>>2]|0)==1?(c[(c[j>>2]|0)+40>>2]|0)!=0:0){c[A>>2]=Tm(c[z>>2]|0,c[(c[j>>2]|0)+72+20>>2]|0,(c[v>>2]|0)+16|0,(c[v>>2]|0)+28|0,(c[v>>2]|0)+32|0)|0;if(!(c[(c[v>>2]|0)+28>>2]|0))a[o>>0]=1}else D=5;a:do if((D|0)==5){c[n>>2]=d[(c[g>>2]|0)+52>>0];g=l;e=g+96|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(e|0));while(1){if(d[o>>0]|0)break a;c[p>>2]=0;f=r;c[f>>2]=0;c[f+4>>2]=0;c[q>>2]=0;while(1){if(c[A>>2]|0)break;if((c[q>>2]|0)>=(c[(c[j>>2]|0)+64>>2]|0))break;if(d[o>>0]|0)break;c[A>>2]=Um(c[z>>2]|0,c[j>>2]|0,c[q>>2]|0,l+((c[q>>2]|0)*24|0)|0,o)|0;do if(!(c[l+((c[q>>2]|0)*24|0)>>2]|0)){if((c[p>>2]|0)!=0?(b=(c[n>>2]|0)!=0?-1:1,e=r,f=l+((c[q>>2]|0)*24|0)+8|0,f=fR(c[e>>2]|0,c[e+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0,rR(b|0,((b|0)<0)<<31>>31|0,f|0,C|0)|0,(C|0)>=0):0)break;e=l+((c[q>>2]|0)*24|0)+8|0;b=c[e+4>>2]|0;f=r;c[f>>2]=c[e>>2];c[f+4>>2]=b;c[p>>2]=1}while(0);c[q>>2]=(c[q>>2]|0)+1}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[j>>2]|0)+64>>2]|0))break;while(1){if(c[A>>2]|0)break;if(d[o>>0]|0)break;if(c[l+((c[q>>2]|0)*24|0)>>2]|0)break;b=(c[n>>2]|0)!=0?-1:1;e=l+((c[q>>2]|0)*24|0)+8|0;f=r;f=fR(c[e>>2]|0,c[e+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;rR(b|0,((b|0)<0)<<31>>31|0,f|0,C|0)|0;if((C|0)>=0)break;c[A>>2]=Um(c[z>>2]|0,c[j>>2]|0,c[q>>2]|0,l+((c[q>>2]|0)*24|0)|0,o)|0;b=(c[n>>2]|0)!=0?-1:1;e=l+((c[q>>2]|0)*24|0)+8|0;f=r;f=fR(c[e>>2]|0,c[e+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;f=rR(b|0,((b|0)<0)<<31>>31|0,f|0,C|0)|0;b=C;if(!((b|0)>0|(b|0)==0&f>>>0>0))continue;e=l+((c[q>>2]|0)*24|0)+8|0;b=c[e+4>>2]|0;f=r;c[f>>2]=c[e>>2];c[f+4>>2]=b;c[q>>2]=0}c[q>>2]=(c[q>>2]|0)+1}if(d[o>>0]|0)continue;c[u>>2]=0;c[s>>2]=c[l+(((c[(c[j>>2]|0)+64>>2]|0)-1|0)*24|0)+20>>2];c[m>>2]=Id((c[s>>2]|0)+1|0)|0;if(!(c[m>>2]|0))break;iR(c[m>>2]|0,c[l+(((c[(c[j>>2]|0)+64>>2]|0)-1|0)*24|0)+16>>2]|0,(c[s>>2]|0)+1|0)|0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=((c[(c[j>>2]|0)+64>>2]|0)-1|0))break;if(!(c[l+((c[q>>2]|0)*24|0)>>2]|0)){c[w>>2]=c[l+((c[q>>2]|0)*24|0)+16>>2];c[y>>2]=c[m>>2];c[x>>2]=c[m>>2];c[t>>2]=(c[(c[j>>2]|0)+64>>2]|0)-1-(c[q>>2]|0);c[B>>2]=Vm(x,c[t>>2]|0,0,1,w,y)|0;if(!(c[B>>2]|0))break;c[u>>2]=(c[x>>2]|0)-(c[m>>2]|0)}c[q>>2]=(c[q>>2]|0)+1}if((c[q>>2]|0)==((c[(c[j>>2]|0)+64>>2]|0)-1|0)){D=35;break}Kd(c[m>>2]|0)}if((D|0)==35){z=r;B=c[z+4>>2]|0;D=(c[v>>2]|0)+16|0;c[D>>2]=c[z>>2];c[D+4>>2]=B;c[(c[v>>2]|0)+28>>2]=c[m>>2];c[(c[v>>2]|0)+32>>2]=c[u>>2];c[(c[v>>2]|0)+24>>2]=1;break}c[h>>2]=7;D=c[h>>2]|0;i=E;return D|0}while(0);a[c[k>>2]>>0]=a[o>>0]|0;c[h>>2]=c[A>>2];D=c[h>>2]|0;i=E;return D|0}function Sm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+24|0;j=n+20|0;k=n+16|0;m=n+12|0;l=n+8|0;h=n;c[g>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0);e=c[j>>2]|0;if(c[(c[j>>2]|0)+8>>2]|0)c[m>>2]=c[e+8>>2];else c[m>>2]=c[e>>2];if((c[m>>2]|0)>>>0>=(c[l>>2]|0)>>>0){a[c[k>>2]>>0]=1;i=n;return}f=Ul(c[m>>2]|0,h)|0;c[m>>2]=(c[m>>2]|0)+f;if((d[(c[g>>2]|0)+231>>0]|0)!=0?(c[(c[j>>2]|0)+8>>2]|0)!=0:0){g=h;h=(c[j>>2]|0)+16|0;f=h;g=fR(c[f>>2]|0,c[f+4>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;c[h>>2]=g;c[h+4>>2]=C}else{g=h;h=(c[j>>2]|0)+16|0;f=h;g=gR(c[f>>2]|0,c[f+4>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;c[h>>2]=g;c[h+4>>2]=C}c[(c[j>>2]|0)+28>>2]=c[m>>2];Zl(0,m);c[(c[j>>2]|0)+32>>2]=(c[m>>2]|0)-(c[(c[j>>2]|0)+28>>2]|0);while(1){if((c[m>>2]|0)>>>0<(c[l>>2]|0)>>>0)b=(a[c[m>>2]>>0]|0)==0;else b=0;e=c[m>>2]|0;if(!b)break;c[m>>2]=e+1}c[(c[j>>2]|0)+8>>2]=e;a[c[k>>2]>>0]=0;i=n;return}function Tm(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+64|0;p=x+60|0;h=x+56|0;j=x+52|0;q=x+48|0;r=x+44|0;s=x+40|0;m=x+36|0;k=x+32|0;o=x+28|0;n=x+24|0;w=x+20|0;v=x+16|0;u=x+12|0;l=x+8|0;t=x;c[h>>2]=a;c[j>>2]=b;c[q>>2]=e;c[r>>2]=f;c[s>>2]=g;c[m>>2]=c[(c[j>>2]|0)+8>>2];c[k>>2]=c[c[j>>2]>>2];c[o>>2]=(d[(c[h>>2]|0)+231>>0]|0|0)!=0?182:183;if(!(c[m>>2]|0)){c[c[r>>2]>>2]=0;c[p>>2]=0;w=c[p>>2]|0;i=x;return w|0}while(1){c[n>>2]=c[c[c[j>>2]>>2]>>2];if(!(c[(c[n>>2]|0)+80>>2]|0)){h=4;break}f=(c[c[k>>2]>>2]|0)+88|0;e=c[f+4>>2]|0;g=t;c[g>>2]=c[f>>2];c[g+4>>2]=e;c[w>>2]=Ql(c[h>>2]|0,c[c[k>>2]>>2]|0,v,u)|0;c[l>>2]=1;while(1){if(c[w>>2]|0)break;if((c[l>>2]|0)>=(c[m>>2]|0))break;if(!(c[(c[(c[k>>2]|0)+(c[l>>2]<<2)>>2]|0)+80>>2]|0))break;e=(c[(c[k>>2]|0)+(c[l>>2]<<2)>>2]|0)+88|0;g=t;if(!((c[e>>2]|0)==(c[g>>2]|0)?(c[e+4>>2]|0)==(c[g+4>>2]|0):0))break;c[w>>2]=Ql(c[h>>2]|0,c[(c[k>>2]|0)+(c[l>>2]<<2)>>2]|0,0,0)|0;c[l>>2]=(c[l>>2]|0)+1}if(c[w>>2]|0){h=12;break}Nl(c[c[j>>2]>>2]|0,c[m>>2]|0,c[l>>2]|0,c[o>>2]|0);if((c[u>>2]|0)>0?(c[(c[c[k>>2]>>2]|0)+56>>2]|0)!=0:0){c[w>>2]=Ol(c[j>>2]|0,c[v>>2]|0,(c[u>>2]|0)+1|0)|0;if(c[w>>2]|0){h=16;break}c[v>>2]=c[(c[j>>2]|0)+16>>2]}if((c[(c[j>>2]|0)+24>>2]|0)>=0)Rl(c[(c[j>>2]|0)+24>>2]|0,1,v,u);if((c[u>>2]|0)>0){h=21;break}}if((h|0)==4)c[c[r>>2]>>2]=0;else if((h|0)==12){c[p>>2]=c[w>>2];w=c[p>>2]|0;i=x;return w|0}else if((h|0)==16){c[p>>2]=c[w>>2];w=c[p>>2]|0;i=x;return w|0}else if((h|0)==21){c[c[r>>2]>>2]=c[v>>2];v=c[t+4>>2]|0;w=c[q>>2]|0;c[w>>2]=c[t>>2];c[w+4>>2]=v;c[c[s>>2]>>2]=c[u>>2]}c[p>>2]=0;w=c[p>>2]|0;i=x;return w|0}function Um(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;h=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;o=p+4|0;n=p;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[o>>2]=0;if((c[(c[j>>2]|0)+44>>2]|0)==(c[k>>2]|0)){Sm(c[h>>2]|0,c[j>>2]|0,c[m>>2]|0);c[(c[l>>2]|0)+16>>2]=c[(c[j>>2]|0)+28>>2];c[(c[l>>2]|0)+20>>2]=c[(c[j>>2]|0)+32>>2];b=(c[j>>2]|0)+16|0;n=c[b+4>>2]|0;g=(c[l>>2]|0)+8|0;c[g>>2]=c[b>>2];c[g+4>>2]=n;o=c[o>>2]|0;i=p;return o|0}c[n>>2]=(c[j>>2]|0)+72+((c[k>>2]|0)*24|0);if(!(c[(c[n>>2]|0)+20>>2]|0)){c[c[l>>2]>>2]=1;o=c[o>>2]|0;i=p;return o|0}c[o>>2]=Tm(c[h>>2]|0,c[(c[n>>2]|0)+20>>2]|0,(c[l>>2]|0)+8|0,(c[l>>2]|0)+16|0,(c[l>>2]|0)+20|0)|0;if(c[(c[l>>2]|0)+16>>2]|0){o=c[o>>2]|0;i=p;return o|0}a[c[m>>2]>>0]=1;o=c[o>>2]|0;i=p;return o|0}function Vm(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0;D=i;i=i+96|0;k=D+80|0;l=D+76|0;m=D+72|0;n=D+68|0;o=D+64|0;p=D+60|0;q=D+56|0;x=D+52|0;y=D+48|0;z=D+44|0;r=D+40|0;s=D+36|0;A=D+32|0;v=D+24|0;t=D+16|0;u=D+8|0;w=D;c[l>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[x>>2]=c[c[l>>2]>>2];c[y>>2]=c[c[p>>2]>>2];c[z>>2]=c[c[q>>2]>>2];c[r>>2]=0;c[s>>2]=0;if((a[c[y>>2]>>0]|0)==1){c[y>>2]=(c[y>>2]|0)+1;g=c[y>>2]|0;if(d[c[y>>2]>>0]&128)g=Vl(g,r)|0;else{c[r>>2]=d[g>>0];g=1}c[y>>2]=(c[y>>2]|0)+g}if((a[c[z>>2]>>0]|0)==1){c[z>>2]=(c[z>>2]|0)+1;g=c[z>>2]|0;if(d[c[z>>2]>>0]&128)g=Vl(g,s)|0;else{c[s>>2]=d[g>>0];g=1}c[z>>2]=(c[z>>2]|0)+g}while(1){if((c[r>>2]|0)!=(c[s>>2]|0))if((c[r>>2]|0)<(c[s>>2]|0)){Tl(0,y);if(!(a[c[y>>2]>>0]|0))break;c[y>>2]=(c[y>>2]|0)+1;g=c[y>>2]|0;if(d[c[y>>2]>>0]&128)g=Vl(g,r)|0;else{c[r>>2]=d[g>>0];g=1}c[y>>2]=(c[y>>2]|0)+g;continue}else{Tl(0,z);if(!(a[c[z>>2]>>0]|0))break;c[z>>2]=(c[z>>2]|0)+1;g=c[z>>2]|0;if(d[c[z>>2]>>0]&128)g=Vl(g,s)|0;else{c[s>>2]=d[g>>0];g=1}c[z>>2]=(c[z>>2]|0)+g;continue}c[A>>2]=c[x>>2];j=v;c[j>>2]=0;c[j+4>>2]=0;j=t;c[j>>2]=0;c[j+4>>2]=0;j=u;c[j>>2]=0;c[j+4>>2]=0;if(c[r>>2]|0){j=c[x>>2]|0;c[x>>2]=j+1;a[j>>0]=1;j=c[r>>2]|0;j=El(c[x>>2]|0,j,((j|0)<0)<<31>>31)|0;c[x>>2]=(c[x>>2]|0)+j}Wm(y,t);j=t;j=fR(c[j>>2]|0,c[j+4>>2]|0,2,0)|0;h=t;c[h>>2]=j;c[h+4>>2]=C;Wm(z,u);h=u;h=fR(c[h>>2]|0,c[h+4>>2]|0,2,0)|0;j=u;c[j>>2]=h;c[j+4>>2]=C;while(1){j=u;b=c[j>>2]|0;j=c[j+4>>2]|0;e=t;h=c[m>>2]|0;h=gR(c[e>>2]|0,c[e+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0;if(!((b|0)==(h|0)&(j|0)==(C|0))){if(((c[o>>2]|0)==0?(h=u,e=c[h+4>>2]|0,j=t,b=c[j+4>>2]|0,(e|0)>(b|0)|((e|0)==(b|0)?(c[h>>2]|0)>>>0>(c[j>>2]|0)>>>0:0)):0)?(e=u,h=c[e>>2]|0,e=c[e+4>>2]|0,b=t,j=c[m>>2]|0,j=gR(c[b>>2]|0,c[b+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,b=C,(e|0)<(b|0)|(e|0)==(b|0)&h>>>0<=j>>>0):0)B=19}else B=19;if((B|0)==19){B=0;f=(c[n>>2]|0)!=0;e=t;b=u;j=f?c[e+4>>2]|0:c[b+4>>2]|0;h=w;c[h>>2]=f?c[e>>2]|0:c[b>>2]|0;c[h+4>>2]=j;h=w;h=gR(c[h>>2]|0,c[h+4>>2]|0,2,0)|0;Xm(x,v,h,C);h=v;h=fR(c[h>>2]|0,c[h+4>>2]|0,2,0)|0;j=v;c[j>>2]=h;c[j+4>>2]=C;c[A>>2]=0}if(!((c[n>>2]|0)==0?(e=u,h=c[e>>2]|0,e=c[e+4>>2]|0,b=t,j=c[m>>2]|0,j=gR(c[b>>2]|0,c[b+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,b=C,(e|0)<(b|0)|(e|0)==(b|0)&h>>>0<=j>>>0):0))B=22;if((B|0)==22?(B=0,h=u,e=c[h+4>>2]|0,j=t,b=c[j+4>>2]|0,!((e|0)<(b|0)|((e|0)==(b|0)?(c[h>>2]|0)>>>0<=(c[j>>2]|0)>>>0:0))):0){if(!(a[c[y>>2]>>0]&254))break;Wm(y,t);h=t;h=fR(c[h>>2]|0,c[h+4>>2]|0,2,0)|0;j=t;c[j>>2]=h;c[j+4>>2]=C;continue}if(!(a[c[z>>2]>>0]&254))break;Wm(z,u);h=u;h=fR(c[h>>2]|0,c[h+4>>2]|0,2,0)|0;j=u;c[j>>2]=h;c[j+4>>2]=C}if(c[A>>2]|0)c[x>>2]=c[A>>2];Tl(0,y);Tl(0,z);if(!(a[c[y>>2]>>0]|0))break;if(!(a[c[z>>2]>>0]|0))break;c[y>>2]=(c[y>>2]|0)+1;g=c[y>>2]|0;if(d[c[y>>2]>>0]&128)g=Vl(g,r)|0;else{c[r>>2]=d[g>>0];g=1}c[y>>2]=(c[y>>2]|0)+g;c[z>>2]=(c[z>>2]|0)+1;g=c[z>>2]|0;if(d[c[z>>2]>>0]&128)g=Vl(g,s)|0;else{c[s>>2]=d[g>>0];g=1}c[z>>2]=(c[z>>2]|0)+g}Zl(0,z);Zl(0,y);c[c[p>>2]>>2]=c[y>>2];c[c[q>>2]>>2]=c[z>>2];if((c[c[l>>2]>>2]|0)==(c[x>>2]|0)){c[k>>2]=0;B=c[k>>2]|0;i=D;return B|0}else{B=c[x>>2]|0;c[x>>2]=B+1;a[B>>0]=0;c[c[l>>2]>>2]=c[x>>2];c[k>>2]=1;B=c[k>>2]|0;i=D;return B|0}return 0}function Wm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+12|0;e=d+8|0;f=d;c[g>>2]=a;c[e>>2]=b;a=Ul(c[c[g>>2]>>2]|0,f)|0;b=c[g>>2]|0;c[b>>2]=(c[b>>2]|0)+a;b=f;a=c[e>>2]|0;e=a;b=gR(c[e>>2]|0,c[e+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;c[a>>2]=b;c[a+4>>2]=C;i=d;return}function Xm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;g=f+8|0;h=f;c[j>>2]=a;c[g>>2]=b;a=h;c[a>>2]=d;c[a+4>>2]=e;e=c[c[j>>2]>>2]|0;a=h;b=c[g>>2]|0;b=fR(c[a>>2]|0,c[a+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;b=El(e,b,C)|0;e=c[j>>2]|0;c[e>>2]=(c[e>>2]|0)+b;e=h;b=c[e+4>>2]|0;a=c[g>>2]|0;c[a>>2]=c[e>>2];c[a+4>>2]=b;i=f;return}function Ym(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[(c[b>>2]|0)+8>>2]=0;c[(c[b>>2]|0)+28>>2]=1;c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+4>>2]|0))break;c[(c[(c[c[b>>2]>>2]|0)+(c[d>>2]<<2)>>2]|0)+80>>2]=0;c[(c[(c[c[b>>2]>>2]|0)+(c[d>>2]<<2)>>2]|0)+84>>2]=0;a=(c[(c[c[b>>2]>>2]|0)+(c[d>>2]<<2)>>2]|0)+88|0;c[a>>2]=0;c[a+4>>2]=0;c[d>>2]=(c[d>>2]|0)+1}i=e;return 0}function Zm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;f=s+44|0;t=s+40|0;l=s+36|0;p=s+32|0;r=s+28|0;m=s+24|0;g=s+20|0;h=s+16|0;j=s+12|0;n=s+8|0;q=s+4|0;o=s;c[f>>2]=a;c[t>>2]=b;c[l>>2]=e;c[p>>2]=c[c[f>>2]>>2];c[r>>2]=0;c[g>>2]=0;if(((c[t>>2]|0)!=0?(d[(c[f>>2]|0)+52>>0]|0|0)==(d[(c[p>>2]|0)+231>>0]|0|0):0)?(c[(c[l>>2]|0)+64>>2]|0)<=4:0)b=(c[(c[l>>2]|0)+64>>2]|0)>0;else b=0;c[h>>2]=b&1;c[m>>2]=0;while(1){if((c[h>>2]|0)!=1)break;if((c[m>>2]|0)>=(c[(c[l>>2]|0)+64>>2]|0))break;c[j>>2]=(c[l>>2]|0)+72+((c[m>>2]|0)*24|0);if(!(c[(c[j>>2]|0)+12>>2]|0)){if((c[(c[j>>2]|0)+20>>2]|0)!=0?(c[(c[(c[j>>2]|0)+20>>2]|0)+36>>2]|0)==0:0)k=11}else k=11;if((k|0)==11){k=0;c[h>>2]=0}if(c[(c[j>>2]|0)+20>>2]|0)c[g>>2]=1;c[m>>2]=(c[m>>2]|0)+1}if(!((c[h>>2]|0)!=0&(c[g>>2]|0)!=0)){c[r>>2]=$m(c[f>>2]|0,c[l>>2]|0)|0;c[(c[l>>2]|0)+40>>2]=0;t=c[r>>2]|0;i=s;return t|0}if((c[(c[l>>2]|0)+68>>2]|0)>=(c[(c[p>>2]|0)+24>>2]|0))b=-1;else b=c[(c[l>>2]|0)+68>>2]|0;c[n>>2]=b;c[m>>2]=0;while(1){if(c[r>>2]|0)break;if((c[m>>2]|0)>=(c[(c[l>>2]|0)+64>>2]|0))break;c[q>>2]=(c[l>>2]|0)+72+((c[m>>2]|0)*24|0);c[o>>2]=c[(c[q>>2]|0)+20>>2];if(c[o>>2]|0)c[r>>2]=_m(c[p>>2]|0,c[o>>2]|0,c[n>>2]|0,c[c[q>>2]>>2]|0,c[(c[q>>2]|0)+4>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+1}c[(c[l>>2]|0)+40>>2]=1;t=c[r>>2]|0;i=s;return t|0}function _m(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;n=t+40|0;h=t+36|0;o=t+32|0;p=t+28|0;j=t+24|0;k=t+20|0;q=t+16|0;r=t+12|0;l=t+8|0;s=t+4|0;m=t;c[h>>2]=a;c[o>>2]=b;c[p>>2]=e;c[j>>2]=f;c[k>>2]=g;c[l>>2]=c[(c[o>>2]|0)+4>>2];c[s>>2]=(d[(c[h>>2]|0)+231>>0]|0|0)!=0?182:183;c[r>>2]=bm(c[h>>2]|0,c[o>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;if(c[r>>2]|0){c[n>>2]=c[r>>2];s=c[n>>2]|0;i=t;return s|0}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[l>>2]|0))break;c[m>>2]=c[(c[c[o>>2]>>2]|0)+(c[q>>2]<<2)>>2];if(!(c[(c[m>>2]|0)+40>>2]|0))break;if(cm(c[m>>2]|0,c[j>>2]|0,c[k>>2]|0)|0)break;c[q>>2]=(c[q>>2]|0)+1}c[(c[o>>2]|0)+8>>2]=c[q>>2];c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[o>>2]|0)+8>>2]|0)){h=13;break}c[r>>2]=Pl(c[h>>2]|0,c[(c[c[o>>2]>>2]|0)+(c[q>>2]<<2)>>2]|0)|0;if(c[r>>2]|0){h=11;break}c[q>>2]=(c[q>>2]|0)+1}if((h|0)==11){c[n>>2]=c[r>>2];s=c[n>>2]|0;i=t;return s|0}else if((h|0)==13){Nl(c[c[o>>2]>>2]|0,c[q>>2]|0,c[q>>2]|0,c[s>>2]|0);c[(c[o>>2]|0)+24>>2]=c[p>>2];c[n>>2]=0;s=c[n>>2]|0;i=t;return s|0}return 0}function $m(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+28|0;d=l+24|0;g=l+20|0;e=l+16|0;k=l+12|0;j=l+8|0;f=l+4|0;h=l;c[m>>2]=a;c[d>>2]=b;c[g>>2]=c[c[m>>2]>>2];c[k>>2]=0;c[e>>2]=0;while(1){if(c[k>>2]|0){d=8;break}if((c[e>>2]|0)>=(c[(c[d>>2]|0)+64>>2]|0)){d=8;break}c[j>>2]=(c[d>>2]|0)+72+((c[e>>2]|0)*24|0);if((c[(c[j>>2]|0)+20>>2]|0)!=0?(c[f>>2]=0,c[h>>2]=0,c[k>>2]=an(c[g>>2]|0,c[j>>2]|0,c[(c[d>>2]|0)+68>>2]|0,f,h)|0,(c[k>>2]|0)==0):0)c[k>>2]=bn(c[g>>2]|0,c[d>>2]|0,c[e>>2]|0,c[h>>2]|0,c[f>>2]|0)|0;c[e>>2]=(c[e>>2]|0)+1}if((d|0)==8){i=l;return c[k>>2]|0}return 0}function an(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+192|0;g=r+176|0;h=r+172|0;j=r+168|0;k=r+164|0;l=r+160|0;p=r+156|0;o=r+152|0;q=r+24|0;m=r+8|0;n=r;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[o>>2]=c[(c[h>>2]|0)+20>>2];d=q;a=d+128|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));c[m+12>>2]=3|((c[(c[h>>2]|0)+8>>2]|0)!=0?8:0)|((c[(c[h>>2]|0)+12>>2]|0)!=0?32:0)|((c[j>>2]|0)<(c[(c[g>>2]|0)+24>>2]|0)?4:0);c[m+8>>2]=c[j>>2];c[m>>2]=c[c[h>>2]>>2];c[m+4>>2]=c[(c[h>>2]|0)+4>>2];c[p>>2]=ol(c[g>>2]|0,c[o>>2]|0,m)|0;while(1){if(c[p>>2]|0)break;m=pl(c[g>>2]|0,c[o>>2]|0)|0;c[p>>2]=m;if(100!=(m|0))break;c[p>>2]=fn(c[g>>2]|0,q,c[(c[o>>2]|0)+48>>2]|0,c[(c[o>>2]|0)+52>>2]|0)|0}if(!(c[p>>2]|0))c[p>>2]=gn(c[g>>2]|0,q)|0;if(!(c[p>>2]|0)){c[c[l>>2]>>2]=c[q>>2];c[c[k>>2]>>2]=c[q+64>>2];q=c[o>>2]|0;hn(q);q=c[h>>2]|0;q=q+20|0;c[q>>2]=0;q=c[p>>2]|0;i=r;return q|0}c[n>>2]=0;while(1){if((c[n>>2]|0)>=16)break;Kd(c[q+(c[n>>2]<<2)>>2]|0);c[n>>2]=(c[n>>2]|0)+1}q=c[o>>2]|0;hn(q);q=c[h>>2]|0;q=q+20|0;c[q>>2]=0;q=c[p>>2]|0;i=r;return q|0}function bn(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+40|0;j=t+36|0;k=t+32|0;l=t+28|0;m=t+24|0;s=t+20|0;q=t+16|0;r=t+12|0;o=t+8|0;p=t+4|0;n=t;c[h>>2]=a;c[j>>2]=b;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[s>>2]=0;e=c[j>>2]|0;do if(!(c[l>>2]|0)){Kd(c[e>>2]|0);c[c[j>>2]>>2]=0;c[(c[j>>2]|0)+4>>2]=0}else{if((c[e+44>>2]|0)<0){c[c[j>>2]>>2]=c[l>>2];c[(c[j>>2]|0)+4>>2]=c[m>>2];break}if(!(c[c[j>>2]>>2]|0)){Kd(c[l>>2]|0);break}e=c[c[j>>2]>>2]|0;if((c[(c[j>>2]|0)+44>>2]|0)<(c[k>>2]|0)){c[q>>2]=e;c[o>>2]=c[(c[j>>2]|0)+4>>2];c[r>>2]=c[l>>2];c[p>>2]=c[m>>2];c[n>>2]=(c[k>>2]|0)-(c[(c[j>>2]|0)+44>>2]|0)}else{c[r>>2]=e;c[p>>2]=c[(c[j>>2]|0)+4>>2];c[q>>2]=c[l>>2];c[o>>2]=c[m>>2];c[n>>2]=(c[(c[j>>2]|0)+44>>2]|0)-(c[k>>2]|0)}c[s>>2]=cn(d[(c[h>>2]|0)+231>>0]|0,c[n>>2]|0,c[q>>2]|0,c[o>>2]|0,r,p)|0;Kd(c[q>>2]|0);c[c[j>>2]>>2]=c[r>>2];c[(c[j>>2]|0)+4>>2]=c[p>>2]}while(0);if((c[k>>2]|0)<=(c[(c[j>>2]|0)+44>>2]|0)){s=c[s>>2]|0;i=t;return s|0}c[(c[j>>2]|0)+44>>2]=c[k>>2];s=c[s>>2]|0;i=t;return s|0}function cn(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0;D=i;i=i+112|0;h=D+104|0;j=D+100|0;k=D+96|0;E=D+92|0;F=D+88|0;l=D+84|0;m=D+80|0;r=D+32|0;s=D+24|0;u=D+16|0;o=D+76|0;z=D+72|0;A=D+68|0;x=D+64|0;y=D+60|0;w=D+56|0;p=D+52|0;n=D+48|0;t=D+8|0;B=D+44|0;v=D;q=D+40|0;c[j>>2]=a;c[k>>2]=b;c[E>>2]=d;c[F>>2]=e;c[l>>2]=f;c[m>>2]=g;g=r;c[g>>2]=0;c[g+4>>2]=0;g=s;c[g>>2]=0;c[g+4>>2]=0;g=u;c[g>>2]=0;c[g+4>>2]=0;c[o>>2]=c[c[l>>2]>>2];c[z>>2]=(c[E>>2]|0)+(c[F>>2]|0);c[A>>2]=(c[o>>2]|0)+(c[c[m>>2]>>2]|0);c[x>>2]=c[E>>2];c[y>>2]=c[o>>2];c[p>>2]=0;if(c[j>>2]|0){c[n>>2]=Id((c[c[m>>2]>>2]|0)+10|0)|0;if(!(c[n>>2]|0)){c[h>>2]=7;F=c[h>>2]|0;i=D;return F|0}}else c[n>>2]=c[o>>2];c[w>>2]=c[n>>2];dn(x,c[z>>2]|0,0,r);dn(y,c[A>>2]|0,0,s);while(1){if(!((c[x>>2]|0)!=0?(c[y>>2]|0)!=0:0))break;F=(c[j>>2]|0)!=0?-1:1;g=r;E=s;E=fR(c[g>>2]|0,c[g+4>>2]|0,c[E>>2]|0,c[E+4>>2]|0)|0;E=rR(F|0,((F|0)<0)<<31>>31|0,E|0,C|0)|0;F=t;c[F>>2]=E;c[F+4>>2]=C;F=t;if(!((c[F>>2]|0)==0&(c[F+4>>2]|0)==0))if((c[t+4>>2]|0)<0){Zl(0,x);dn(x,c[z>>2]|0,c[j>>2]|0,r);continue}else{Zl(0,y);dn(y,c[A>>2]|0,c[j>>2]|0,s);continue}else{c[B>>2]=c[w>>2];g=u;E=c[g+4>>2]|0;F=v;c[F>>2]=c[g>>2];c[F+4>>2]=E;c[q>>2]=c[p>>2];F=r;en(w,c[j>>2]|0,u,p,c[F>>2]|0,c[F+4>>2]|0);if(!(Vm(w,c[k>>2]|0,0,1,x,y)|0)){c[w>>2]=c[B>>2];g=v;E=c[g+4>>2]|0;F=u;c[F>>2]=c[g>>2];c[F+4>>2]=E;c[p>>2]=c[q>>2]}dn(x,c[z>>2]|0,c[j>>2]|0,r);dn(y,c[A>>2]|0,c[j>>2]|0,s);continue}}c[c[m>>2]>>2]=(c[w>>2]|0)-(c[n>>2]|0);if(c[j>>2]|0){Kd(c[o>>2]|0);c[c[l>>2]>>2]=c[n>>2]}c[h>>2]=0;F=c[h>>2]|0;i=D;return F|0}function dn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+20|0;l=k+16|0;j=k+12|0;h=k+8|0;g=k;c[f>>2]=a;c[l>>2]=b;c[j>>2]=d;c[h>>2]=e;d=c[f>>2]|0;if((c[c[f>>2]>>2]|0)>>>0>=(c[l>>2]|0)>>>0){c[d>>2]=0;i=k;return}a=Ul(c[d>>2]|0,g)|0;f=c[f>>2]|0;c[f>>2]=(c[f>>2]|0)+a;f=g;a=c[f>>2]|0;f=c[f+4>>2]|0;d=c[h>>2]|0;e=d;b=c[e>>2]|0;e=c[e+4>>2]|0;if(c[j>>2]|0){j=fR(b|0,e|0,a|0,f|0)|0;l=d;c[l>>2]=j;c[l+4>>2]=C;i=k;return}else{j=gR(b|0,e|0,a|0,f|0)|0;l=d;c[l>>2]=j;c[l+4>>2]=C;i=k;return}}function en(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;h=n+28|0;o=n+24|0;j=n+20|0;k=n+16|0;l=n+8|0;m=n;c[h>>2]=a;c[o>>2]=b;c[j>>2]=d;c[k>>2]=e;a=l;c[a>>2]=f;c[a+4>>2]=g;if((c[o>>2]|0)!=0?(c[c[k>>2]>>2]|0)!=0:0){o=c[j>>2]|0;a=l;a=fR(c[o>>2]|0,c[o+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;o=m;c[o>>2]=a;c[o+4>>2]=C}else{o=l;a=c[j>>2]|0;a=fR(c[o>>2]|0,c[o+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;o=m;c[o>>2]=a;c[o+4>>2]=C}a=m;a=El(c[c[h>>2]>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;d=c[h>>2]|0;c[d>>2]=(c[d>>2]|0)+a;d=l;a=c[d+4>>2]|0;o=c[j>>2]|0;c[o>>2]=c[d>>2];c[o+4>>2]=a;c[c[k>>2]>>2]=1;i=n;return}function fn(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+40|0;j=t+36|0;k=t+32|0;l=t+28|0;g=t+24|0;m=t+20|0;p=t+16|0;o=t+12|0;n=t+8|0;q=t+4|0;r=t;c[j>>2]=a;c[k>>2]=b;c[l>>2]=e;c[g>>2]=f;a:do if(!(c[c[k>>2]>>2]|0)){s=Id((c[g>>2]|0)+10+1|0)|0;c[c[k>>2]>>2]=s;c[(c[k>>2]|0)+64>>2]=c[g>>2];if(c[c[k>>2]>>2]|0){iR(c[c[k>>2]>>2]|0,c[l>>2]|0,c[g>>2]|0)|0;break}c[h>>2]=7;s=c[h>>2]|0;i=t;return s|0}else{c[m>>2]=c[l>>2];c[p>>2]=c[g>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=16)break a;if(!(c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]|0)){s=8;break}c[r>>2]=jn(d[(c[j>>2]|0)+231>>0]|0,c[m>>2]|0,c[p>>2]|0,c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]|0,c[(c[k>>2]|0)+64+(c[o>>2]<<2)>>2]|0,n,q)|0;g=(c[m>>2]|0)!=(c[l>>2]|0);if(c[r>>2]|0)break;if(g)Kd(c[m>>2]|0);Kd(c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]|0);c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]=0;c[m>>2]=c[n>>2];c[p>>2]=c[q>>2];if(((c[o>>2]|0)+1|0)==16){c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]=c[m>>2];c[(c[k>>2]|0)+64+(c[o>>2]<<2)>>2]=c[p>>2]}c[o>>2]=(c[o>>2]|0)+1}if((s|0)==8){c[(c[k>>2]|0)+(c[o>>2]<<2)>>2]=c[m>>2];c[(c[k>>2]|0)+64+(c[o>>2]<<2)>>2]=c[p>>2];break}if(g)Kd(c[m>>2]|0);c[h>>2]=c[r>>2];s=c[h>>2]|0;i=t;return s|0}while(0);c[h>>2]=0;s=c[h>>2]|0;i=t;return s|0}function gn(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;j=o+32|0;e=o+28|0;k=o+24|0;l=o+20|0;m=o+16|0;g=o+12|0;h=o+8|0;f=o+4|0;n=o;c[e>>2]=a;c[k>>2]=b;c[l>>2]=0;c[m>>2]=0;c[g>>2]=0;a:while(1){if((c[g>>2]|0)>=16){e=10;break}do if(c[(c[k>>2]|0)+(c[g>>2]<<2)>>2]|0){if(!(c[l>>2]|0)){c[l>>2]=c[(c[k>>2]|0)+(c[g>>2]<<2)>>2];c[m>>2]=c[(c[k>>2]|0)+64+(c[g>>2]<<2)>>2];c[(c[k>>2]|0)+(c[g>>2]<<2)>>2]=0;break}c[n>>2]=jn(d[(c[e>>2]|0)+231>>0]|0,c[(c[k>>2]|0)+(c[g>>2]<<2)>>2]|0,c[(c[k>>2]|0)+64+(c[g>>2]<<2)>>2]|0,c[l>>2]|0,c[m>>2]|0,f,h)|0;if(c[n>>2]|0){e=7;break a}Kd(c[(c[k>>2]|0)+(c[g>>2]<<2)>>2]|0);Kd(c[l>>2]|0);c[(c[k>>2]|0)+(c[g>>2]<<2)>>2]=0;c[l>>2]=c[f>>2];c[m>>2]=c[h>>2]}while(0);c[g>>2]=(c[g>>2]|0)+1}if((e|0)==7){Kd(c[l>>2]|0);c[j>>2]=c[n>>2];n=c[j>>2]|0;i=o;return n|0}else if((e|0)==10){c[c[k>>2]>>2]=c[l>>2];c[(c[k>>2]|0)+64>>2]=c[m>>2];c[j>>2]=0;n=c[j>>2]|0;i=o;return n|0}return 0}function hn(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;vl(c[d>>2]|0);Kd(c[d>>2]|0);i=b;return}function jn(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0;y=i;i=i+96|0;j=y+88|0;k=y+84|0;D=y+80|0;A=y+76|0;B=y+72|0;z=y+68|0;l=y+64|0;m=y+60|0;p=y+24|0;q=y+16|0;s=y+8|0;w=y+56|0;x=y+52|0;u=y+48|0;v=y+44|0;t=y+40|0;n=y+36|0;o=y+32|0;r=y;c[k>>2]=a;c[D>>2]=b;c[A>>2]=d;c[B>>2]=e;c[z>>2]=f;c[l>>2]=g;c[m>>2]=h;h=p;c[h>>2]=0;c[h+4>>2]=0;h=q;c[h>>2]=0;c[h+4>>2]=0;h=s;c[h>>2]=0;c[h+4>>2]=0;c[w>>2]=(c[D>>2]|0)+(c[A>>2]|0);c[x>>2]=(c[B>>2]|0)+(c[z>>2]|0);c[u>>2]=c[D>>2];c[v>>2]=c[B>>2];c[o>>2]=0;c[c[l>>2]>>2]=0;c[c[m>>2]>>2]=0;c[n>>2]=Id((c[A>>2]|0)+(c[z>>2]|0)+10-1|0)|0;if(!(c[n>>2]|0)){c[j>>2]=7;D=c[j>>2]|0;i=y;return D|0}c[t>>2]=c[n>>2];dn(u,c[w>>2]|0,0,p);dn(v,c[x>>2]|0,0,q);while(1){if(!((c[u>>2]|0)!=0?1:(c[v>>2]|0)!=0))break;D=(c[k>>2]|0)!=0?-1:1;A=p;B=q;B=fR(c[A>>2]|0,c[A+4>>2]|0,c[B>>2]|0,c[B+4>>2]|0)|0;B=rR(D|0,((D|0)<0)<<31>>31|0,B|0,C|0)|0;D=r;c[D>>2]=B;c[D+4>>2]=C;D=r;if((c[v>>2]|0)!=0&(c[u>>2]|0)!=0&((c[D>>2]|0)==0&(c[D+4>>2]|0)==0)){D=p;en(t,c[k>>2]|0,s,o,c[D>>2]|0,c[D+4>>2]|0);kn(t,u,v);dn(u,c[w>>2]|0,c[k>>2]|0,p);dn(v,c[x>>2]|0,c[k>>2]|0,q);continue}if((c[v>>2]|0)!=0?!((c[u>>2]|0)!=0&(c[r+4>>2]|0)<0):0){D=q;en(t,c[k>>2]|0,s,o,c[D>>2]|0,c[D+4>>2]|0);Zl(t,v);dn(v,c[x>>2]|0,c[k>>2]|0,q);continue}D=p;en(t,c[k>>2]|0,s,o,c[D>>2]|0,c[D+4>>2]|0);Zl(t,u);dn(u,c[w>>2]|0,c[k>>2]|0,p)}c[c[l>>2]>>2]=c[n>>2];c[c[m>>2]>>2]=(c[t>>2]|0)-(c[n>>2]|0);c[j>>2]=0;D=c[j>>2]|0;i=y;return D|0}function kn(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+64|0;g=t+56|0;h=t+52|0;j=t+48|0;q=t+44|0;r=t+40|0;s=t+36|0;m=t+32|0;n=t+28|0;k=t+16|0;l=t+8|0;o=t;p=t+24|0;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[q>>2]=c[c[g>>2]>>2];c[r>>2]=c[c[h>>2]>>2];c[s>>2]=c[c[j>>2]>>2];a:while(1){if((a[c[r>>2]>>0]|0)==0?(a[c[s>>2]>>0]|0)==0:0)break;b=c[r>>2]|0;do if((a[c[r>>2]>>0]|0)==1){e=(c[r>>2]|0)+1|0;if(d[b+1>>0]&128){Vl(e,m)|0;break}else{c[m>>2]=d[e>>0];break}}else if(!(a[b>>0]|0)){c[m>>2]=2147483647;break}else{c[m>>2]=0;break}while(0);b=c[s>>2]|0;do if((a[c[s>>2]>>0]|0)==1){e=(c[s>>2]|0)+1|0;if(d[b+1>>0]&128){Vl(e,n)|0;break}else{c[n>>2]=d[e>>0];break}}else if(!(a[b>>0]|0)){c[n>>2]=2147483647;break}else{c[n>>2]=0;break}while(0);if((c[m>>2]|0)!=(c[n>>2]|0))if((c[m>>2]|0)<(c[n>>2]|0)){f=ln(q,c[m>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+f;Tl(q,r);continue}else{f=ln(q,c[n>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+f;Tl(q,s);continue}f=k;c[f>>2]=0;c[f+4>>2]=0;f=l;c[f>>2]=0;c[f+4>>2]=0;f=o;c[f>>2]=0;c[f+4>>2]=0;c[p>>2]=ln(q,c[m>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+(c[p>>2]|0);c[s>>2]=(c[s>>2]|0)+(c[p>>2]|0);Wm(r,k);Wm(s,l);while(1){e=k;u=c[e+4>>2]|0;b=l;f=c[b+4>>2]|0;b=(u|0)<(f|0)|((u|0)==(f|0)?(c[e>>2]|0)>>>0<(c[b>>2]|0)>>>0:0);e=k;f=l;Xm(q,o,b?c[e>>2]|0:c[f>>2]|0,b?c[e+4>>2]|0:c[f+4>>2]|0);f=o;f=fR(c[f>>2]|0,c[f+4>>2]|0,2,0)|0;e=o;c[e>>2]=f;c[e+4>>2]=C;e=k;f=l;do if(!((c[e>>2]|0)==(c[f>>2]|0)?(c[e+4>>2]|0)==(c[f+4>>2]|0):0)){f=k;b=c[f+4>>2]|0;u=l;e=c[u+4>>2]|0;if((b|0)<(e|0)|((b|0)==(e|0)?(c[f>>2]|0)>>>0<(c[u>>2]|0)>>>0:0)){mn(r,k);break}else{mn(s,l);break}}else{mn(r,k);mn(s,l)}while(0);f=k;u=l;if(!((c[f>>2]|0)!=2147483647|(c[f+4>>2]|0)!=0?1:(c[u>>2]|0)!=2147483647|(c[u+4>>2]|0)!=0))continue a}}u=c[q>>2]|0;c[q>>2]=u+1;a[u>>0]=0;c[c[g>>2]>>2]=c[q>>2];c[c[h>>2]>>2]=(c[r>>2]|0)+1;c[c[j>>2]>>2]=(c[s>>2]|0)+1;i=t;return}function ln(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=b;c[f>>2]=d;c[g>>2]=0;if(!(c[f>>2]|0)){b=c[g>>2]|0;i=j;return b|0}c[h>>2]=c[c[e>>2]>>2];b=c[f>>2]|0;c[g>>2]=1+(El((c[h>>2]|0)+1|0,b,((b|0)<0)<<31>>31)|0);a[c[h>>2]>>0]=1;c[c[e>>2]>>2]=(c[h>>2]|0)+(c[g>>2]|0);b=c[g>>2]|0;i=j;return b|0}function mn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=d;if(a[c[c[e>>2]>>2]>>0]&254){Wm(c[e>>2]|0,c[f>>2]|0);b=c[f>>2]|0;d=b;d=fR(c[d>>2]|0,c[d+4>>2]|0,2,0)|0;c[b>>2]=d;c[b+4>>2]=C;i=g;return}else{b=c[f>>2]|0;c[b>>2]=2147483647;c[b+4>>2]=0;i=g;return}}function nn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[g>>2]=d;c[j>>2]=0;if((a[(c[g>>2]|0)+7>>0]|0)!=0?(c[h>>2]=0,c[j>>2]=zn(c[g>>2]|0,h)|0,(c[j>>2]|0)==0):0){h=(c[g>>2]|0)+32|0;Me(c[(c[g>>2]|0)+8>>2]|0,1,c[h>>2]|0,c[h+4>>2]|0)|0;a[(c[g>>2]|0)+7>>0]=0;if(100==(ue(c[(c[g>>2]|0)+8>>2]|0)|0)){c[e>>2]=0;j=c[e>>2]|0;i=k;return j|0}c[j>>2]=Zd(c[(c[g>>2]|0)+8>>2]|0)|0;if((c[j>>2]|0)==0?(c[(c[c[g>>2]>>2]|0)+40>>2]|0)==0:0){c[j>>2]=267;a[(c[g>>2]|0)+6>>0]=1}}if((c[j>>2]|0)!=0&(c[f>>2]|0)!=0)re(c[f>>2]|0,c[j>>2]|0);c[e>>2]=c[j>>2];j=c[e>>2]|0;i=k;return j|0}function on(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;v=i;i=i+80|0;b=v+64|0;r=v+60|0;e=v+56|0;f=v;m=v+52|0;l=v+48|0;p=v+44|0;n=v+40|0;s=v+36|0;q=v+32|0;t=v+28|0;k=v+24|0;g=v+20|0;h=v+16|0;j=v+12|0;o=v+8|0;c[b>>2]=a;c[r>>2]=0;if(!(c[(c[b>>2]|0)+24>>2]|0)){u=c[r>>2]|0;i=v;return u|0}c[l>>2]=c[c[b>>2]>>2];c[p>>2]=c[(c[l>>2]|0)+36>>2];c[n>>2]=c[c[p>>2]>>2];w=Ee(c[(c[b>>2]|0)+8>>2]|0,0)|0;a=f;c[a>>2]=w;c[a+4>>2]=C;c[e>>2]=0;while(1){if(!((c[e>>2]|0)<(c[(c[l>>2]|0)+24>>2]|0)?(c[r>>2]|0)==0:0))break;if(!(d[(c[(c[l>>2]|0)+32>>2]|0)+(c[e>>2]|0)>>0]|0)){c[s>>2]=Fe(c[(c[b>>2]|0)+8>>2]|0,(c[e>>2]|0)+1|0)|0;c[q>>2]=0;c[r>>2]=wn(c[p>>2]|0,c[(c[b>>2]|0)+16>>2]|0,c[s>>2]|0,-1,q)|0;a:while(1){if(c[r>>2]|0)break;c[k>>2]=0;c[g>>2]=0;c[h>>2]=0;c[j>>2]=0;c[r>>2]=Sb[c[(c[n>>2]|0)+20>>2]&255](c[q>>2]|0,t,k,g,h,j)|0;c[m>>2]=c[(c[b>>2]|0)+24>>2];while(1){if(!((c[m>>2]|0)!=0?(c[r>>2]|0)==0:0))continue a;c[o>>2]=c[c[m>>2]>>2];if(!((c[(c[m>>2]|0)+4>>2]|0)<(c[(c[l>>2]|0)+24>>2]|0)?(c[(c[m>>2]|0)+4>>2]|0)!=(c[e>>2]|0):0))u=11;do if((u|0)==11?(u=0,(c[j>>2]|0)==0?1:(c[(c[o>>2]|0)+12>>2]|0)==0):0){if((c[(c[o>>2]|0)+4>>2]|0)!=(c[k>>2]|0)){if(!(c[(c[o>>2]|0)+8>>2]|0))break;if((c[(c[o>>2]|0)+4>>2]|0)>=(c[k>>2]|0))break}if(!(vQ(c[t>>2]|0,c[c[o>>2]>>2]|0,c[(c[o>>2]|0)+4>>2]|0)|0)){x=f;a=c[e>>2]|0;w=c[j>>2]|0;xn((c[m>>2]|0)+12|0,c[x>>2]|0,c[x+4>>2]|0,a,((a|0)<0)<<31>>31,w,((w|0)<0)<<31>>31,r)|0}}while(0);c[m>>2]=c[(c[m>>2]|0)+8>>2]}}if(c[q>>2]|0)Tb[c[(c[n>>2]|0)+16>>2]&255](c[q>>2]|0)|0;if((c[r>>2]|0)==101)c[r>>2]=0}c[e>>2]=(c[e>>2]|0)+1}c[m>>2]=c[(c[b>>2]|0)+24>>2];while(1){if(!((c[m>>2]|0)!=0?(c[r>>2]|0)==0:0))break;if(c[(c[m>>2]|0)+12>>2]|0)c[r>>2]=yn((c[m>>2]|0)+12|0,0,0)|0;c[m>>2]=c[(c[m>>2]|0)+8>>2]}x=c[r>>2]|0;i=v;return x|0}function pn(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+28|0;l=p+24|0;g=p+20|0;o=p+16|0;n=p+12|0;h=p+8|0;j=p+4|0;k=p;c[m>>2]=b;c[l>>2]=e;c[g>>2]=f;c[o>>2]=1;if(c[c[g>>2]>>2]|0){o=c[o>>2]|0;i=p;return o|0}switch(c[c[l>>2]>>2]|0){case 3:case 1:{if((pn(c[m>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[g>>2]|0)|0)!=0?(pn(c[m>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[g>>2]|0)|0)!=0:0)g=(rn(c[l>>2]|0,c[g>>2]|0)|0)!=0;else g=0;c[o>>2]=g&1;if(c[o>>2]|0){o=c[o>>2]|0;i=p;return o|0}if((c[c[l>>2]>>2]|0)!=1){o=c[o>>2]|0;i=p;return o|0}if((c[(c[l>>2]|0)+8>>2]|0)!=0?(c[c[(c[l>>2]|0)+8>>2]>>2]|0)==1:0){o=c[o>>2]|0;i=p;return o|0}c[n>>2]=c[l>>2];while(1){g=c[n>>2]|0;if(c[(c[n>>2]|0)+20>>2]|0)break;f=(c[g+16>>2]|0)+24|0;l=(c[m>>2]|0)+32|0;if((c[f>>2]|0)==(c[l>>2]|0)?(c[f+4>>2]|0)==(c[l+4>>2]|0):0)Pm(c[(c[(c[n>>2]|0)+16>>2]|0)+20>>2]|0);c[n>>2]=c[(c[n>>2]|0)+12>>2]}l=g+24|0;m=(c[m>>2]|0)+32|0;if(!((c[l>>2]|0)==(c[m>>2]|0)?(c[l+4>>2]|0)==(c[m+4>>2]|0):0)){o=c[o>>2]|0;i=p;return o|0}Pm(c[(c[n>>2]|0)+20>>2]|0);o=c[o>>2]|0;i=p;return o|0}case 4:{c[h>>2]=pn(c[m>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[g>>2]|0)|0;c[j>>2]=pn(c[m>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[g>>2]|0)|0;c[o>>2]=((c[h>>2]|0)!=0?1:(c[j>>2]|0)!=0)&1;o=c[o>>2]|0;i=p;return o|0}case 2:{if(pn(c[m>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[g>>2]|0)|0)g=(pn(c[m>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[g>>2]|0)|0)!=0^1;else g=0;c[o>>2]=g&1;o=c[o>>2]|0;i=p;return o|0}default:{do if(c[(c[m>>2]|0)+24>>2]|0){f=(c[l>>2]|0)+24|0;n=(c[m>>2]|0)+32|0;if(!((c[f>>2]|0)==(c[n>>2]|0)?(c[f+4>>2]|0)==(c[n+4>>2]|0):0)?(d[(c[l>>2]|0)+34>>0]|0)==0:0)break;c[k>>2]=c[(c[l>>2]|0)+20>>2];if(a[(c[l>>2]|0)+34>>0]|0)Pm(c[k>>2]|0);f=sn(c[m>>2]|0,c[k>>2]|0)|0;c[c[g>>2]>>2]=f;c[o>>2]=(c[(c[k>>2]|0)+28>>2]|0)!=0&1;f=(c[m>>2]|0)+32|0;m=c[f+4>>2]|0;n=(c[l>>2]|0)+24|0;c[n>>2]=c[f>>2];c[n+4>>2]=m;o=c[o>>2]|0;i=p;return o|0}while(0);if(!(d[(c[l>>2]|0)+32>>0]|0)){n=(c[l>>2]|0)+24|0;g=(c[m>>2]|0)+32|0;g=(c[n>>2]|0)==(c[g>>2]|0)?(c[n+4>>2]|0)==(c[g+4>>2]|0):0}else g=0;c[o>>2]=g&1;o=c[o>>2]|0;i=p;return o|0; -}}return 0}function qn(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[(c[e>>2]|0)+24>>2];while(1){if(!(c[b>>2]|0))break;el(c[(c[b>>2]|0)+12>>2]|0);c[(c[b>>2]|0)+12>>2]=0;c[b>>2]=c[(c[b>>2]|0)+8>>2]}i=d;return}function rn(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;e=r+44|0;f=r+40|0;q=r+36|0;o=r+32|0;h=r+28|0;l=r+24|0;k=r+20|0;n=r+16|0;j=r+12|0;g=r+8|0;m=r+4|0;p=r;c[e>>2]=a;c[f>>2]=b;c[q>>2]=1;if(c[c[f>>2]>>2]|0){q=c[q>>2]|0;i=r;return q|0}if((c[c[e>>2]>>2]|0)!=1){q=c[q>>2]|0;i=r;return q|0}if(d[(c[e>>2]|0)+32>>0]|0){q=c[q>>2]|0;i=r;return q|0}if((c[(c[e>>2]|0)+8>>2]|0)!=0?(c[c[(c[e>>2]|0)+8>>2]>>2]|0)==1:0){q=c[q>>2]|0;i=r;return q|0}c[h>>2]=0;c[o>>2]=c[e>>2];while(1){a=c[o>>2]|0;if(!(c[(c[o>>2]|0)+12>>2]|0))break;c[h>>2]=(c[h>>2]|0)+(c[(c[(c[a+16>>2]|0)+20>>2]|0)+32>>2]|0);c[o>>2]=c[(c[o>>2]|0)+12>>2]}c[h>>2]=(c[h>>2]|0)+(c[(c[a+20>>2]|0)+32>>2]|0);if(!(c[h>>2]|0)){c[q>>2]=0;q=c[q>>2]|0;i=r;return q|0}c[l>>2]=Id(c[h>>2]<<1)|0;a:do if(c[l>>2]|0){c[k>>2]=c[(c[(c[o>>2]|0)+20>>2]|0)+28>>2];c[n>>2]=c[(c[(c[o>>2]|0)+20>>2]|0)+64>>2];c[o>>2]=c[(c[o>>2]|0)+8>>2];while(1){if(!((c[q>>2]|0)!=0&(c[o>>2]|0)!=0))break;if((c[c[o>>2]>>2]|0)!=1)break;c[j>>2]=c[(c[(c[o>>2]|0)+16>>2]|0)+20>>2];c[g>>2]=c[(c[o>>2]|0)+4>>2];c[q>>2]=un(c[g>>2]|0,c[l>>2]|0,k,n,c[j>>2]|0)|0;c[o>>2]=c[(c[o>>2]|0)+8>>2]}c[k>>2]=c[(c[(c[(c[e>>2]|0)+16>>2]|0)+20>>2]|0)+28>>2];c[n>>2]=c[(c[(c[(c[e>>2]|0)+16>>2]|0)+20>>2]|0)+64>>2];c[o>>2]=c[(c[e>>2]|0)+12>>2];while(1){if(!((c[o>>2]|0)!=0?(c[q>>2]|0)!=0:0))break a;c[m>>2]=c[(c[(c[o>>2]|0)+8>>2]|0)+4>>2];a=c[o>>2]|0;if((c[c[o>>2]>>2]|0)==1)a=c[(c[a+16>>2]|0)+20>>2]|0;else a=c[a+20>>2]|0;c[p>>2]=a;c[q>>2]=un(c[m>>2]|0,c[l>>2]|0,k,n,c[p>>2]|0)|0;c[o>>2]=c[(c[o>>2]|0)+12>>2]}}else{c[c[f>>2]>>2]=7;c[q>>2]=0}while(0);Kd(c[l>>2]|0);q=c[q>>2]|0;i=r;return q|0}function sn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+80|0;m=y+76|0;n=y+72|0;o=y+68|0;e=y+64|0;q=y+60|0;u=y+56|0;r=y+52|0;l=y+48|0;j=y+44|0;k=y+40|0;f=y+36|0;x=y+32|0;d=y+28|0;g=y+24|0;h=y+20|0;t=y+16|0;s=y+12|0;v=y+8|0;w=y+4|0;p=y;c[n>>2]=a;c[o>>2]=b;c[q>>2]=0;c[u>>2]=0;c[r>>2]=-1;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[o>>2]|0)+64>>2]|0)){a=14;break}c[l>>2]=(c[o>>2]|0)+72+((c[e>>2]|0)*24|0);c[j>>2]=c[(c[l>>2]|0)+16>>2];if(c[j>>2]|0){c[x>>2]=tn(c[j>>2]|0,k,f)|0;if(c[x>>2]|0){a=5;break}b=c[q>>2]|0;if(!(c[k>>2]|0)){a=7;break}a=c[k>>2]|0;if(b){c[d>>2]=a;c[g>>2]=c[q>>2];c[h>>2]=c[d>>2];Vm(d,(c[e>>2]|0)-(c[r>>2]|0)|0,0,1,g,h)|0;Kd(c[q>>2]|0);c[q>>2]=c[k>>2];c[u>>2]=(c[d>>2]|0)-(c[q>>2]|0);if(!(c[u>>2]|0)){a=11;break}}else{c[q>>2]=a;c[u>>2]=c[f>>2]}c[r>>2]=c[e>>2]}c[e>>2]=(c[e>>2]|0)+1}if((a|0)==5){c[m>>2]=c[x>>2];x=c[m>>2]|0;i=y;return x|0}else if((a|0)==7){Kd(b);c[(c[o>>2]|0)+28>>2]=0;c[(c[o>>2]|0)+32>>2]=0;c[m>>2]=0;x=c[m>>2]|0;i=y;return x|0}else if((a|0)==11){Kd(c[q>>2]|0);c[(c[o>>2]|0)+28>>2]=0;c[(c[o>>2]|0)+32>>2]=0;c[m>>2]=0;x=c[m>>2]|0;i=y;return x|0}else if((a|0)==14){do if((c[r>>2]|0)>=0){c[t>>2]=c[(c[o>>2]|0)+44>>2];if((c[t>>2]|0)<0){c[(c[o>>2]|0)+28>>2]=c[q>>2];c[(c[o>>2]|0)+32>>2]=c[u>>2];v=(c[n>>2]|0)+32|0;w=c[v+4>>2]|0;x=(c[o>>2]|0)+16|0;c[x>>2]=c[v>>2];c[x+4>>2]=w;c[(c[o>>2]|0)+24>>2]=1;break}if((c[t>>2]|0)>(c[r>>2]|0)){c[v>>2]=c[q>>2];c[w>>2]=c[(c[o>>2]|0)+28>>2];c[s>>2]=(c[t>>2]|0)-(c[r>>2]|0)}else{c[v>>2]=c[(c[o>>2]|0)+28>>2];c[w>>2]=c[q>>2];c[s>>2]=(c[r>>2]|0)-(c[t>>2]|0)}c[p>>2]=Id((c[u>>2]|0)+8|0)|0;if(!(c[p>>2]|0)){Kd(c[q>>2]|0);c[m>>2]=7;x=c[m>>2]|0;i=y;return x|0}c[(c[o>>2]|0)+28>>2]=c[p>>2];if(Vm(p,c[s>>2]|0,0,1,v,w)|0){c[(c[o>>2]|0)+24>>2]=1;c[(c[o>>2]|0)+32>>2]=(c[p>>2]|0)-(c[(c[o>>2]|0)+28>>2]|0)}else{Kd(c[p>>2]|0);c[(c[o>>2]|0)+28>>2]=0;c[(c[o>>2]|0)+32>>2]=0}Kd(c[q>>2]|0)}while(0);c[m>>2]=0;x=c[m>>2]|0;i=y;return x|0}return 0}function tn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+28|0;f=l+24|0;g=l+20|0;h=l+16|0;k=l+12|0;j=l+8|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[c[g>>2]>>2]=0;c[c[h>>2]>>2]=0;if(!(c[(c[f>>2]|0)+12>>2]|0)){c[e>>2]=0;b=c[e>>2]|0;i=l;return b|0}c[k>>2]=Id(c[c[(c[f>>2]|0)+12>>2]>>2]|0)|0;if(c[k>>2]|0){c[j>>2]=Ul(c[(c[(c[f>>2]|0)+12>>2]|0)+4>>2]|0,l)|0;c[c[h>>2]>>2]=(c[c[(c[f>>2]|0)+12>>2]>>2]|0)-(c[j>>2]|0);c[c[g>>2]>>2]=c[k>>2];iR(c[k>>2]|0,(c[(c[(c[f>>2]|0)+12>>2]|0)+4>>2]|0)+(c[j>>2]|0)|0,c[c[h>>2]>>2]|0)|0;c[e>>2]=0;b=c[e>>2]|0;i=l;return b|0}else{c[e>>2]=7;b=c[e>>2]|0;i=l;return b|0}return 0}function un(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=i;i=i+48|0;s=n+40|0;r=n+36|0;g=n+32|0;h=n+28|0;j=n+24|0;q=n+20|0;p=n+16|0;k=n+12|0;o=n+8|0;l=n+4|0;m=n;c[s>>2]=a;c[r>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[q>>2]=(c[s>>2]|0)+(c[(c[j>>2]|0)+64>>2]|0);c[p>>2]=(c[s>>2]|0)+(c[c[h>>2]>>2]|0);e=c[(c[j>>2]|0)+28>>2]|0;c[l>>2]=e;c[o>>2]=e;c[m>>2]=vn(l,c[r>>2]|0,c[q>>2]|0,c[p>>2]|0,c[g>>2]|0,o)|0;if(!(c[m>>2]|0)){s=c[m>>2]|0;i=n;return s|0}c[k>>2]=(c[l>>2]|0)-(c[(c[j>>2]|0)+28>>2]|0)-1;kR((c[(c[j>>2]|0)+28>>2]|0)+(c[k>>2]|0)|0,0,(c[(c[j>>2]|0)+32>>2]|0)-(c[k>>2]|0)|0)|0;c[(c[j>>2]|0)+32>>2]=c[k>>2];c[c[g>>2]>>2]=c[(c[j>>2]|0)+28>>2];c[c[h>>2]>>2]=c[(c[j>>2]|0)+64>>2];s=c[m>>2]|0;i=n;return s|0}function vn(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;o=i;i=i+48|0;h=o+44|0;j=o+40|0;u=o+36|0;r=o+32|0;p=o+28|0;q=o+24|0;t=o+20|0;s=o+16|0;l=o+12|0;m=o+8|0;k=o+4|0;n=o;c[h>>2]=a;c[j>>2]=b;c[u>>2]=d;c[r>>2]=e;c[p>>2]=f;c[q>>2]=g;c[t>>2]=c[c[p>>2]>>2];c[s>>2]=c[c[q>>2]>>2];c[l>>2]=c[j>>2];c[n>>2]=1;Vm(l,c[u>>2]|0,0,0,c[p>>2]|0,c[q>>2]|0)|0;g=c[l>>2]|0;c[m>>2]=g;c[k>>2]=g;c[c[p>>2]>>2]=c[t>>2];c[c[q>>2]>>2]=c[s>>2];Vm(m,c[r>>2]|0,1,0,c[q>>2]|0,c[p>>2]|0)|0;if((c[l>>2]|0)!=(c[j>>2]|0)?(c[m>>2]|0)!=(c[k>>2]|0):0){kn(c[h>>2]|0,j,k);u=c[n>>2]|0;i=o;return u|0}if((c[l>>2]|0)!=(c[j>>2]|0)){Zl(c[h>>2]|0,j);u=c[n>>2]|0;i=o;return u|0}if((c[m>>2]|0)!=(c[k>>2]|0)){Zl(c[h>>2]|0,k);u=c[n>>2]|0;i=o;return u|0}else{c[n>>2]=0;u=c[n>>2]|0;i=o;return u|0}return 0}function wn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;g=n+28|0;h=n+24|0;p=n+20|0;o=n+16|0;j=n+12|0;l=n+8|0;k=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[p>>2]=d;c[o>>2]=e;c[j>>2]=f;c[l>>2]=c[c[g>>2]>>2];c[k>>2]=0;c[m>>2]=Wb[c[(c[l>>2]|0)+12>>2]&255](c[g>>2]|0,c[p>>2]|0,c[o>>2]|0,k)|0;if(((c[m>>2]|0)==0?(c[c[k>>2]>>2]=c[g>>2],(c[c[l>>2]>>2]|0)>=1):0)?(c[m>>2]=Yb[c[(c[l>>2]|0)+24>>2]&255](c[k>>2]|0,c[h>>2]|0)|0,(c[m>>2]|0)!=0):0){Tb[c[(c[l>>2]|0)+16>>2]&255](c[k>>2]|0)|0;c[k>>2]=0}c[c[j>>2]>>2]=c[k>>2];i=n;return c[m>>2]|0}function xn(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;m=u+48|0;n=u+44|0;o=u+24|0;p=u+16|0;k=u+8|0;l=u+40|0;r=u+36|0;s=u+32|0;q=u;c[n>>2]=a;a=o;c[a>>2]=b;c[a+4>>2]=d;a=p;c[a>>2]=e;c[a+4>>2]=f;a=k;c[a>>2]=g;c[a+4>>2]=h;c[l>>2]=j;c[r>>2]=c[c[n>>2]>>2];c[s>>2]=0;if((c[r>>2]|0)!=0?(j=(c[r>>2]|0)+16|0,a=o,!((c[j>>2]|0)!=(c[a>>2]|0)?1:(c[j+4>>2]|0)!=(c[a+4>>2]|0))):0)t=9;else{b=o;if(c[r>>2]|0){e=(c[r>>2]|0)+16|0;d=c[e>>2]|0;e=c[e+4>>2]|0}else{d=0;e=0}j=fR(c[b>>2]|0,c[b+4>>2]|0,d|0,e|0)|0;a=q;c[a>>2]=j;c[a+4>>2]=C;if(c[r>>2]|0){a=c[r>>2]|0;c[a>>2]=(c[a>>2]|0)+1}q=yn(r,c[q>>2]|0,c[q+4>>2]|0)|0;c[s>>2]=q;if(!q){q=(c[r>>2]|0)+24|0;c[q>>2]=-1;c[q+4>>2]=-1;q=(c[r>>2]|0)+32|0;c[q>>2]=0;c[q+4>>2]=0;q=c[o+4>>2]|0;t=(c[r>>2]|0)+16|0;c[t>>2]=c[o>>2];c[t+4>>2]=q;t=9}}do if((t|0)==9){t=p;q=c[t+4>>2]|0;if((q|0)>0|(q|0)==0&(c[t>>2]|0)>>>0>0?(q=(c[r>>2]|0)+24|0,t=p,(c[q>>2]|0)!=(c[t>>2]|0)?1:(c[q+4>>2]|0)!=(c[t+4>>2]|0)):0){t=yn(r,1,0)|0;c[s>>2]=t;if(t)break;t=p;t=yn(r,c[t>>2]|0,c[t+4>>2]|0)|0;c[s>>2]=t;if(t)break;o=p;q=c[o+4>>2]|0;t=(c[r>>2]|0)+24|0;c[t>>2]=c[o>>2];c[t+4>>2]=q;t=(c[r>>2]|0)+32|0;c[t>>2]=0;c[t+4>>2]=0}t=p;q=c[t+4>>2]|0;if((q|0)>0|(q|0)==0&(c[t>>2]|0)>>>0>=0?(q=k,q=gR(2,0,c[q>>2]|0,c[q+4>>2]|0)|0,t=(c[r>>2]|0)+32|0,t=fR(q|0,C|0,c[t>>2]|0,c[t+4>>2]|0)|0,c[s>>2]=yn(r,t,C)|0,(c[s>>2]|0)==0):0){p=k;q=c[p+4>>2]|0;t=(c[r>>2]|0)+32|0;c[t>>2]=c[p>>2];c[t+4>>2]=q}}while(0);c[c[l>>2]>>2]=c[s>>2];if((c[r>>2]|0)!=(c[c[n>>2]>>2]|0)){c[c[n>>2]>>2]=c[r>>2];c[m>>2]=1;t=c[m>>2]|0;i=u;return t|0}else{c[m>>2]=0;t=c[m>>2]|0;i=u;return t|0}return 0}function yn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+20|0;g=l+16|0;h=l;k=l+12|0;j=l+8|0;c[g>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;c[k>>2]=c[c[g>>2]>>2];do if(c[k>>2]|0){if(((c[c[k>>2]>>2]|0)+10+1|0)>(c[(c[k>>2]|0)+8>>2]|0)){c[j>>2]=c[(c[k>>2]|0)+8>>2]<<1;c[k>>2]=Ld(c[k>>2]|0,40+(c[j>>2]|0)|0)|0;if(c[k>>2]|0){c[(c[k>>2]|0)+8>>2]=c[j>>2];c[(c[k>>2]|0)+4>>2]=(c[k>>2]|0)+40;break}Kd(c[c[g>>2]>>2]|0);c[c[g>>2]>>2]=0;c[f>>2]=7;b=c[f>>2]|0;i=l;return b|0}}else{c[k>>2]=Id(140)|0;if(c[k>>2]|0){c[(c[k>>2]|0)+8>>2]=100;c[(c[k>>2]|0)+4>>2]=(c[k>>2]|0)+40;c[c[k>>2]>>2]=0;break}c[f>>2]=7;b=c[f>>2]|0;i=l;return b|0}while(0);j=h;j=El((c[(c[k>>2]|0)+4>>2]|0)+(c[c[k>>2]>>2]|0)|0,c[j>>2]|0,c[j+4>>2]|0)|0;b=c[k>>2]|0;c[b>>2]=(c[b>>2]|0)+j;a[(c[(c[k>>2]|0)+4>>2]|0)+(c[c[k>>2]>>2]|0)>>0]=0;c[c[g>>2]>>2]=c[k>>2];c[f>>2]=0;b=c[f>>2]|0;i=l;return b|0}function zn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;j=l;d=l+24|0;e=l+20|0;f=l+16|0;h=l+12|0;g=l+8|0;k=l+4|0;c[e>>2]=a;c[f>>2]=b;c[h>>2]=0;do if(!(c[(c[e>>2]|0)+8>>2]|0)){c[g>>2]=c[c[e>>2]>>2];c[j>>2]=c[(c[g>>2]|0)+216>>2];c[k>>2]=Od(24088,j)|0;if(c[k>>2]|0){c[h>>2]=af(c[(c[g>>2]|0)+12>>2]|0,c[k>>2]|0,-1,(c[e>>2]|0)+8|0,0)|0;Kd(c[k>>2]|0);break}c[d>>2]=7;k=c[d>>2]|0;i=l;return k|0}while(0);c[c[f>>2]>>2]=c[(c[e>>2]|0)+8>>2];c[d>>2]=c[h>>2];k=c[d>>2]|0;i=l;return k|0}function An(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;k=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=c[c[f>>2]>>2];if((c[k>>2]|0)==5){c[l>>2]=Ob[c[h>>2]&255](c[f>>2]|0,c[c[g>>2]>>2]|0,c[j>>2]|0)|0;d=c[g>>2]|0;c[d>>2]=(c[d>>2]|0)+1;d=c[l>>2]|0;i=m;return d|0}c[l>>2]=An(c[(c[f>>2]|0)+12>>2]|0,c[g>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;if(!((c[l>>2]|0)==0&(c[k>>2]|0)!=2)){d=c[l>>2]|0;i=m;return d|0}c[l>>2]=An(c[(c[f>>2]|0)+16>>2]|0,c[g>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;d=c[l>>2]|0;i=m;return d|0}function Bn(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;k=m+8|0;l=m+4|0;j=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;c[k>>2]=c[c[f>>2]>>2];c[l>>2]=0;if((d[(c[g>>2]|0)+34>>0]|0|0)!=0?(c[c[(c[g>>2]|0)+8>>2]>>2]|0)!=1:0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[(c[k>>2]|0)+24>>2]|0))break;c[(c[h>>2]|0)+(((c[j>>2]|0)*3|0)+1<<2)>>2]=c[(c[f>>2]|0)+64>>2];c[(c[h>>2]|0)+(((c[j>>2]|0)*3|0)+2<<2)>>2]=c[(c[f>>2]|0)+64>>2];c[j>>2]=(c[j>>2]|0)+1}l=c[l>>2]|0;i=m;return l|0}c[l>>2]=Cn(c[f>>2]|0,c[g>>2]|0)|0;if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[(c[k>>2]|0)+24>>2]|0))break;c[(c[h>>2]|0)+(((c[j>>2]|0)*3|0)+1<<2)>>2]=c[(c[(c[g>>2]|0)+40>>2]|0)+(((c[j>>2]|0)*3|0)+1<<2)>>2];c[(c[h>>2]|0)+(((c[j>>2]|0)*3|0)+2<<2)>>2]=c[(c[(c[g>>2]|0)+40>>2]|0)+(((c[j>>2]|0)*3|0)+2<<2)>>2];c[j>>2]=(c[j>>2]|0)+1}l=c[l>>2]|0;i=m;return l|0}function Cn(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+64|0;g=s+44|0;h=s+40|0;f=s+36|0;q=s+32|0;p=s+28|0;o=s+24|0;m=s+20|0;l=s+8|0;k=s;j=s+48|0;n=s+16|0;c[h>>2]=b;c[f>>2]=e;c[q>>2]=0;do if(!(c[(c[f>>2]|0)+40>>2]|0)){c[p>>2]=c[c[h>>2]>>2];t=(c[h>>2]|0)+32|0;b=c[t+4>>2]|0;e=l;c[e>>2]=c[t>>2];c[e+4>>2]=b;c[o>>2]=c[f>>2];while(1){if(c[(c[o>>2]|0)+8>>2]|0)f=(c[c[(c[o>>2]|0)+8>>2]>>2]|0)==1;else f=0;b=c[o>>2]|0;if(!f)break;c[o>>2]=c[b+8>>2]}b=b+24|0;e=c[b+4>>2]|0;t=k;c[t>>2]=c[b>>2];c[t+4>>2]=e;a[j>>0]=a[(c[o>>2]|0)+32>>0]|0;c[m>>2]=c[o>>2];while(1){if(!(c[m>>2]|0))break;f=c[m>>2]|0;if((c[c[m>>2]>>2]|0)!=5)f=c[f+16>>2]|0;c[n>>2]=f;t=Id((c[(c[p>>2]|0)+24>>2]|0)*3<<2)|0;c[(c[n>>2]|0)+40>>2]=t;if(!(c[(c[n>>2]|0)+40>>2]|0)){r=12;break}kR(c[(c[n>>2]|0)+40>>2]|0,0,(c[(c[p>>2]|0)+24>>2]|0)*3<<2|0)|0;c[m>>2]=c[(c[m>>2]|0)+12>>2]}if((r|0)==12){c[g>>2]=7;t=c[g>>2]|0;i=s;return t|0}Mm(c[h>>2]|0,c[o>>2]|0,q);while(1){if(!((d[(c[h>>2]|0)+6>>0]|0)==0?(c[q>>2]|0)==0:0))break;do{if(!(d[(c[h>>2]|0)+7>>0]|0))Zd(c[(c[h>>2]|0)+8>>2]|0)|0;Nm(c[h>>2]|0,c[o>>2]|0,q);a[(c[h>>2]|0)+6>>0]=a[(c[o>>2]|0)+32>>0]|0;a[(c[h>>2]|0)+7>>0]=1;c[(c[h>>2]|0)+88>>2]=1;p=(c[o>>2]|0)+24|0;r=c[p+4>>2]|0;t=(c[h>>2]|0)+32|0;c[t>>2]=c[p>>2];c[t+4>>2]=r;if(d[(c[h>>2]|0)+6>>0]|0)break;if((c[c[o>>2]>>2]|0)!=1)break}while((Im(c[h>>2]|0,q)|0)!=0);if(c[q>>2]|0)continue;if(d[(c[h>>2]|0)+6>>0]|0)continue;Dn(c[o>>2]|0)}a[(c[h>>2]|0)+6>>0]=0;p=l;r=c[p+4>>2]|0;t=(c[h>>2]|0)+32|0;c[t>>2]=c[p>>2];c[t+4>>2]=r;if(a[j>>0]|0){a[(c[o>>2]|0)+32>>0]=a[j>>0]|0;break}Mm(c[h>>2]|0,c[o>>2]|0,q);do{Nm(c[h>>2]|0,c[o>>2]|0,q);r=(c[o>>2]|0)+24|0;t=k}while(((c[r>>2]|0)!=(c[t>>2]|0)?1:(c[r+4>>2]|0)!=(c[t+4>>2]|0))?(c[q>>2]|0)==0:0)}while(0);c[g>>2]=c[q>>2];t=c[g>>2]|0;i=s;return t|0}function Dn(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;e=l+12|0;j=l+8|0;k=l+4|0;g=l+20|0;h=l;c[f>>2]=b;if(!(c[f>>2]|0)){i=l;return}c[e>>2]=c[(c[f>>2]|0)+20>>2];a:do if((c[e>>2]|0)!=0?(c[(c[e>>2]|0)+28>>2]|0)!=0:0){c[j>>2]=0;c[k>>2]=c[(c[e>>2]|0)+28>>2];while(1){a[g>>0]=0;c[h>>2]=0;while(1){if(!(254&(a[c[k>>2]>>0]|d[g>>0])))break;if(!(d[g>>0]&128))c[h>>2]=(c[h>>2]|0)+1;e=c[k>>2]|0;c[k>>2]=e+1;a[g>>0]=a[e>>0]&128}e=(c[(c[f>>2]|0)+40>>2]|0)+(((c[j>>2]|0)*3|0)+1<<2)|0;c[e>>2]=(c[e>>2]|0)+(c[h>>2]|0);e=(c[(c[f>>2]|0)+40>>2]|0)+(((c[j>>2]|0)*3|0)+2<<2)|0;c[e>>2]=(c[e>>2]|0)+((c[h>>2]|0)>0&1);if(!(a[c[k>>2]>>0]|0))break a;c[k>>2]=(c[k>>2]|0)+1;b=c[k>>2]|0;if(d[c[k>>2]>>0]&128)b=Vl(b,j)|0;else{c[j>>2]=d[b>>0];b=1}c[k>>2]=(c[k>>2]|0)+b}}while(0);Dn(c[(c[f>>2]|0)+12>>2]|0);Dn(c[(c[f>>2]|0)+16>>2]|0);i=l;return}function En(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+32|0;p=o+28|0;f=o+24|0;m=o+20|0;h=o+16|0;l=o+12|0;k=o+8|0;g=o+4|0;j=o;c[p>>2]=b;c[f>>2]=e;c[m>>2]=c[c[c[f>>2]>>2]>>2];c[l>>2]=c[(c[p>>2]|0)+20>>2];c[k>>2]=c[(c[l>>2]|0)+28>>2];c[g>>2]=0;e=c[(c[p>>2]|0)+36>>2]|0;b=c[(c[f>>2]|0)+4>>2]|0;if((a[(c[f>>2]|0)+24>>0]|0)==121)c[h>>2]=_(e,b)|0;else c[h>>2]=_(e,(b+31|0)/32|0)|0;while(1){c[j>>2]=Lm(k)|0;if(!((c[(c[l>>2]|0)+68>>2]|0)<(c[(c[m>>2]|0)+24>>2]|0)?(c[(c[l>>2]|0)+68>>2]|0)!=(c[g>>2]|0):0))n=6;do if((n|0)==6){n=0;e=c[j>>2]|0;if((a[(c[f>>2]|0)+24>>0]|0)==121){c[(c[(c[f>>2]|0)+28>>2]|0)+((c[h>>2]|0)+(c[g>>2]|0)<<2)>>2]=e;break}if(e){p=(c[(c[f>>2]|0)+28>>2]|0)+((c[h>>2]|0)+(((c[g>>2]|0)+1|0)/32|0)<<2)|0;c[p>>2]=c[p>>2]|1<<(c[g>>2]&31)}}while(0);if((a[c[k>>2]>>0]|0)!=1)break;c[k>>2]=(c[k>>2]|0)+1;e=c[k>>2]|0;if(d[c[k>>2]>>0]&128)e=Vl(e,g)|0;else{c[g>>2]=d[e>>0];e=1}c[k>>2]=(c[k>>2]|0)+e}i=o;return}function Fn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;h=e+12|0;f=e+8|0;j=e+4|0;g=e;c[h>>2]=a;c[f>>2]=b;c[j>>2]=d;c[g>>2]=c[j>>2];c[(c[g>>2]|0)+(c[f>>2]<<4)>>2]=c[h>>2];i=e;return 0}function Gn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+32|0;b=g+16|0;e=g+12|0;d=g;f=g+8|0;c[b>>2]=a;c[e>>2]=c[(c[b>>2]|0)+8>>2];c[f>>2]=0;h=Ul(c[e>>2]|0,d)|0;c[e>>2]=(c[e>>2]|0)+h;h=d;a=d;if((c[h>>2]|0)==0&(c[h+4>>2]|0)==0|(c[a>>2]|0)==1&(c[a+4>>2]|0)==0){c[e>>2]=0;c[f>>2]=1;e=c[e>>2]|0;h=c[b>>2]|0;h=h+8|0;c[h>>2]=e;h=c[f>>2]|0;i=g;return h|0}else{a=d;a=fR(c[a>>2]|0,c[a+4>>2]|0,2,0)|0;h=(c[b>>2]|0)+12|0;c[h>>2]=(c[h>>2]|0)+a;e=c[e>>2]|0;h=c[b>>2]|0;h=h+8|0;c[h>>2]=e;h=c[f>>2]|0;i=g;return h|0}return 0}function Hn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;k=f+20|0;j=f+12|0;e=f+8|0;g=f+4|0;h=f;c[k>>2]=a;c[f+16>>2]=b;c[j>>2]=d;c[e>>2]=0;c[g>>2]=c[(c[k>>2]|0)+20>>2];c[h>>2]=c[j>>2];a=(c[h>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)+1;a=(c[h>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)+(c[(c[g>>2]|0)+64>>2]|0);i=f;return c[e>>2]|0}function In(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;f=k;g=k+16|0;h=k+12|0;j=k+8|0;c[l>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=e;c[h>>2]=0;c[j>>2]=jl(c[l>>2]|0,21,h,0)|0;do if(!(c[j>>2]|0)){l=f;Me(c[h>>2]|0,1,c[l>>2]|0,c[l+4>>2]|0)|0;c[j>>2]=ue(c[h>>2]|0)|0;if((c[j>>2]|0)==100?(He(c[h>>2]|0,0)|0)==4:0){c[j>>2]=0;break}l=Zd(c[h>>2]|0)|0;c[j>>2]=l;c[j>>2]=(c[j>>2]|0)==0?267:l;c[h>>2]=0}while(0);c[c[g>>2]>>2]=c[h>>2];i=k;return c[j>>2]|0}function Jn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;d=g+8|0;e=g+4|0;f=g;c[h>>2]=a;c[d>>2]=b;c[e>>2]=0;c[f>>2]=jl(c[h>>2]|0,22,e,0)|0;do if(!(c[f>>2]|0)){Le(c[e>>2]|0,1,0)|0;if((ue(c[e>>2]|0)|0)==100?(He(c[e>>2]|0,0)|0)==4:0)break;h=Zd(c[e>>2]|0)|0;c[f>>2]=h;c[f>>2]=(c[f>>2]|0)==0?267:h;c[e>>2]=0}while(0);c[c[d>>2]>>2]=c[e>>2];i=g;return c[f>>2]|0}function Kn(b){b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;g=f+4|0;e=f;c[g>>2]=b;c[e>>2]=(c[g>>2]|0)+(0-(c[(c[g>>2]|0)+-4>>2]|0));b=c[e>>2]|0;if((c[g>>2]|0)==((c[e>>2]|0)+16+4|0))a[b+1>>0]=0;else a[b+2>>0]=0;if(d[c[e>>2]>>0]|0){i=f;return}if(d[(c[e>>2]|0)+1>>0]|0){i=f;return}if(d[(c[e>>2]|0)+2>>0]|0){i=f;return}Kd(c[e>>2]|0);i=f;return}function Ln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;a=c[h>>2]|0;c[a>>2]=(c[a>>2]|0)+1;c[(c[f>>2]|0)+36>>2]=c[g>>2];i=e;return 0}function Mn(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=$e(c[(c[b>>2]|0)+12>>2]|0,24216,0,0,0)|0;do if(!(c[d>>2]|0)){c[d>>2]=Nn(c[b>>2]|0,1)|0;a=c[(c[b>>2]|0)+12>>2]|0;if(!((c[d>>2]|0)==0|(c[d>>2]|0)==101)){$e(a,24244,0,0,0)|0;$e(c[(c[b>>2]|0)+12>>2]|0,24231,0,0,0)|0;break}c[e>>2]=$e(a,24231,0,0,0)|0;if(c[e>>2]|0)c[d>>2]=c[e>>2]}while(0);sm(c[b>>2]|0);i=f;return c[d>>2]|0}function Nn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+28|0;e=m+24|0;f=m+20|0;k=m+16|0;j=m+12|0;l=m+8|0;g=m+4|0;h=m;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;c[j>>2]=0;c[k>>2]=jl(c[d>>2]|0,27,j,0)|0;if(!(c[k>>2]|0)){Le(c[j>>2]|0,1,c[(c[d>>2]|0)+272>>2]|0)|0;Le(c[j>>2]|0,2,c[(c[d>>2]|0)+248>>2]|0)|0;a:while(1){a=(ue(c[j>>2]|0)|0)==100;b=c[j>>2]|0;if(!a)break;c[h>>2]=De(b,0)|0;c[g>>2]=0;while(1){if(c[k>>2]|0)continue a;if((c[g>>2]|0)>=(c[(c[d>>2]|0)+248>>2]|0))continue a;c[k>>2]=il(c[d>>2]|0,c[h>>2]|0,c[g>>2]|0,-2)|0;if((c[k>>2]|0)==101){c[f>>2]=1;c[k>>2]=0}c[g>>2]=(c[g>>2]|0)+1}}c[l>>2]=Zd(b)|0;if(!(c[k>>2]|0))c[k>>2]=c[l>>2]}sm(c[d>>2]|0);dl(c[d>>2]|0);i=m;return((c[k>>2]|0)==0&(c[e>>2]|0)!=0&(c[f>>2]|0)!=0?101:c[k>>2]|0)|0}function On(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+208|0;y=C+32|0;e=C+132|0;f=C+128|0;v=C+124|0;t=C+120|0;A=C+116|0;r=C+112|0;l=C+108|0;B=C+96|0;x=C;s=C+92|0;h=C+88|0;g=C+84|0;p=C+80|0;n=C+76|0;m=C+72|0;z=C+68|0;q=C+64|0;k=C+60|0;o=C+56|0;w=C+52|0;u=C+48|0;j=C+136|0;c[e>>2]=b;c[f>>2]=d;c[v>>2]=c[c[f>>2]>>2];c[t>>2]=c[c[(c[v>>2]|0)+36>>2]>>2];c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;if(!(c[(c[f>>2]|0)+12>>2]|0)){ne(c[e>>2]|0,19266,0,0);i=C;return}c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;c[x+16>>2]=0;c[x+20>>2]=0;c[x+24>>2]=0;c[x+28>>2]=0;c[A>>2]=Dm(c[f>>2]|0,0,r)|0;a:do if(!(c[A>>2]|0)){c[x+24>>2]=Id((c[r>>2]|0)*12|0)|0;if(!(c[x+24>>2]|0)){c[A>>2]=7;break}D=(c[f>>2]|0)+32|0;d=c[D+4>>2]|0;b=x+16|0;c[b>>2]=c[D>>2];c[b+4>>2]=d;c[x>>2]=c[f>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[(c[v>>2]|0)+24>>2]|0))break a;c[g>>2]=0;c[p>>2]=0;c[n>>2]=0;c[m>>2]=0;c[x+4>>2]=c[l>>2];c[x+8>>2]=0;Hm(c[(c[f>>2]|0)+12>>2]|0,158,x)|0;c[z>>2]=Fe(c[(c[f>>2]|0)+8>>2]|0,(c[l>>2]|0)+1|0)|0;c[q>>2]=Be(c[(c[f>>2]|0)+8>>2]|0,(c[l>>2]|0)+1|0)|0;if(!(c[z>>2]|0)){if((He(c[(c[f>>2]|0)+8>>2]|0,(c[l>>2]|0)+1|0)|0)!=5)break}else{c[A>>2]=wn(c[(c[v>>2]|0)+36>>2]|0,c[(c[f>>2]|0)+16>>2]|0,c[z>>2]|0,c[q>>2]|0,s)|0;if(c[A>>2]|0)break a;c[A>>2]=Sb[c[(c[t>>2]|0)+20>>2]&255](c[s>>2]|0,h,g,p,n,m)|0;while(1){if(c[A>>2]|0)break;c[o>>2]=2147483647;c[w>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[r>>2]|0))break;c[u>>2]=(c[x+24>>2]|0)+((c[k>>2]|0)*12|0);if((c[c[u>>2]>>2]|0)!=0?((c[(c[u>>2]|0)+4>>2]|0)-(c[(c[u>>2]|0)+8>>2]|0)|0)<(c[o>>2]|0):0){c[o>>2]=(c[(c[u>>2]|0)+4>>2]|0)-(c[(c[u>>2]|0)+8>>2]|0);c[w>>2]=c[u>>2]}c[k>>2]=(c[k>>2]|0)+1}if(!(c[w>>2]|0)){c[A>>2]=101;continue}d=c[w>>2]|0;if(!(254&a[c[c[w>>2]>>2]>>0]))c[d>>2]=0;else Qn(d,(c[w>>2]|0)+4|0);while(1){if(c[A>>2]|0)break;if((c[m>>2]|0)>=(c[o>>2]|0))break;c[A>>2]=Sb[c[(c[t>>2]|0)+20>>2]&255](c[s>>2]|0,h,g,p,n,m)|0}if(!(c[A>>2]|0)){d=((c[w>>2]|0)-(c[x+24>>2]|0)|0)/12|0;b=c[p>>2]|0;D=(c[n>>2]|0)-(c[p>>2]|0)|0;c[y>>2]=c[l>>2];c[y+4>>2]=d;c[y+8>>2]=b;c[y+12>>2]=D;Qd(64,j,24261,y)|0;c[A>>2]=Rn(B,j,-1)|0;continue}if((c[A>>2]|0)!=101)continue;if(c[(c[v>>2]|0)+40>>2]|0)continue;c[A>>2]=267}if((c[A>>2]|0)==101)c[A>>2]=0;Tb[c[(c[t>>2]|0)+16>>2]&255](c[s>>2]|0)|0;if(c[A>>2]|0)break a}c[l>>2]=(c[l>>2]|0)+1}c[A>>2]=7}while(0);Kd(c[x+24>>2]|0);sm(c[v>>2]|0);d=c[e>>2]|0;if(c[A>>2]|0){re(d,c[A>>2]|0);Kd(c[B>>2]|0);i=C;return}else{ne(d,c[B>>2]|0,(c[B+4>>2]|0)-1|0,148);i=C;return}}function Pn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+48|0;n=m+36|0;o=m+28|0;h=m+24|0;g=m+20|0;f=m+16|0;j=m+12|0;e=m+8|0;l=m+4|0;k=m;c[n>>2]=a;c[m+32>>2]=b;c[o>>2]=d;c[h>>2]=c[o>>2];c[e>>2]=0;c[l>>2]=Km(c[c[h>>2]>>2]|0,c[n>>2]|0,c[(c[h>>2]|0)+4>>2]|0,j)|0;c[g>>2]=c[(c[(c[n>>2]|0)+20>>2]|0)+64>>2];if(c[j>>2]|0)Qn(j,e);c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[g>>2]|0))break;n=(c[h>>2]|0)+8|0;o=c[n>>2]|0;c[n>>2]=o+1;c[k>>2]=(c[(c[h>>2]|0)+24>>2]|0)+(o*12|0);c[(c[k>>2]|0)+8>>2]=(c[g>>2]|0)-(c[f>>2]|0)-1;c[c[k>>2]>>2]=c[j>>2];c[(c[k>>2]|0)+4>>2]=c[e>>2];c[f>>2]=(c[f>>2]|0)+1}i=m;return c[l>>2]|0}function Qn(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;b=c[c[e>>2]>>2]|0;if((d[c[c[e>>2]>>2]>>0]|0)&128)b=Vl(b,g)|0;else{c[g>>2]=d[b>>0];b=1}e=c[e>>2]|0;c[e>>2]=(c[e>>2]|0)+b;f=c[f>>2]|0;c[f>>2]=(c[f>>2]|0)+((c[g>>2]|0)-2);i=h;return}function Rn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if((c[j>>2]|0)<0)c[j>>2]=BQ(c[h>>2]|0)|0;do if(((c[(c[g>>2]|0)+4>>2]|0)+(c[j>>2]|0)+1|0)>=(c[(c[g>>2]|0)+8>>2]|0)){c[k>>2]=(c[(c[g>>2]|0)+8>>2]|0)+(c[j>>2]|0)+100;c[l>>2]=Ld(c[c[g>>2]>>2]|0,c[k>>2]|0)|0;if(c[l>>2]|0){c[c[g>>2]>>2]=c[l>>2];c[(c[g>>2]|0)+8>>2]=c[k>>2];break}c[f>>2]=7;l=c[f>>2]|0;i=m;return l|0}while(0);iR((c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0)|0,c[h>>2]|0,c[j>>2]|0)|0;l=(c[g>>2]|0)+4|0;c[l>>2]=(c[l>>2]|0)+(c[j>>2]|0);a[(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0)>>0]=0;c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}function Sn(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+224|0;j=G+212|0;k=G+208|0;l=G+204|0;m=G+200|0;n=G+196|0;o=G+192|0;p=G+188|0;B=G+184|0;E=G+180|0;r=G+176|0;F=G+164|0;z=G+160|0;q=G+40|0;y=G+156|0;v=G+152|0;w=G+32|0;x=G+24|0;s=G+148|0;t=G+144|0;A=G+140|0;C=G;u=G+136|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[B>>2]=c[c[k>>2]>>2];c[E>>2]=0;c[F>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[z>>2]=0;c[y>>2]=-1;if(!(c[(c[k>>2]|0)+12>>2]|0)){ne(c[j>>2]|0,19266,0,0);i=G;return}c[z>>2]=1;a:while(1){g=w;c[g>>2]=0;c[g+4>>2]=0;g=x;c[g>>2]=0;c[g+4>>2]=0;g=c[p>>2]|0;if((c[p>>2]|0)>=0)c[y>>2]=(g+(c[z>>2]|0)-1|0)/(c[z>>2]|0)|0;else c[y>>2]=_(-1,g)|0;c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[z>>2]|0))break;c[s>>2]=-1;c[A>>2]=q+((c[v>>2]|0)*24|0);d=c[A>>2]|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[(c[B>>2]|0)+24>>2]|0))break;c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;c[C+12>>2]=0;c[C+16>>2]=0;c[C+20>>2]=0;c[u>>2]=0;if(!((c[o>>2]|0)>=0?(c[t>>2]|0)!=(c[o>>2]|0):0)){d=w;c[E>>2]=Tn(c[y>>2]|0,c[k>>2]|0,c[t>>2]|0,c[d>>2]|0,c[d+4>>2]|0,x,C,u)|0;if(c[E>>2]|0)break a;if((c[u>>2]|0)>(c[s>>2]|0)){d=c[A>>2]|0;c[d>>2]=c[C>>2];c[d+4>>2]=c[C+4>>2];c[d+8>>2]=c[C+8>>2];c[d+12>>2]=c[C+12>>2];c[d+16>>2]=c[C+16>>2];c[d+20>>2]=c[C+20>>2];c[s>>2]=c[u>>2]}}c[t>>2]=(c[t>>2]|0)+1}f=(c[A>>2]|0)+8|0;a=w;e=c[a+4>>2]|c[f+4>>2];d=w;c[d>>2]=c[a>>2]|c[f>>2];c[d+4>>2]=e;c[v>>2]=(c[v>>2]|0)+1}e=x;d=w;if(((c[e>>2]|0)==(c[d>>2]|0)?(c[e+4>>2]|0)==(c[d+4>>2]|0):0)|(c[z>>2]|0)==4){D=20;break}c[z>>2]=(c[z>>2]|0)+1}b:do if((D|0)==20){c[r>>2]=0;while(1){if(!((c[r>>2]|0)<(c[z>>2]|0)?(c[E>>2]|0)==0:0))break b;c[E>>2]=Un(c[k>>2]|0,q+((c[r>>2]|0)*24|0)|0,c[r>>2]|0,(c[r>>2]|0)==((c[z>>2]|0)-1|0)&1,c[y>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,F)|0;c[r>>2]=(c[r>>2]|0)+1}}while(0);sm(c[B>>2]|0);g=c[j>>2]|0;if(c[E>>2]|0){re(g,c[E>>2]|0);Kd(c[F>>2]|0);i=G;return}else{ne(g,c[F>>2]|0,-1,148);i=G;return}}function Tn(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0;D=i;i=i+112|0;k=D+104|0;l=D+100|0;m=D+96|0;n=D+92|0;o=D+16|0;p=D+88|0;q=D+84|0;r=D+80|0;A=D+76|0;z=D+72|0;B=D+48|0;y=D+40|0;t=D+36|0;s=D+32|0;u=D+28|0;v=D+24|0;w=D+8|0;x=D;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;b=o;c[b>>2]=e;c[b+4>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=j;c[t>>2]=-1;c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[B+12>>2]=0;c[B+16>>2]=0;c[B+20>>2]=0;c[A>>2]=Dm(c[m>>2]|0,z,0)|0;if(c[A>>2]|0){c[k>>2]=c[A>>2];B=c[k>>2]|0;i=D;return B|0}c[y>>2]=(c[z>>2]|0)*24;c[B+16>>2]=Id(c[y>>2]|0)|0;if(!(c[B+16>>2]|0)){c[k>>2]=7;B=c[k>>2]|0;i=D;return B|0}kR(c[B+16>>2]|0,0,c[y>>2]|0)|0;c[B>>2]=c[m>>2];c[B+4>>2]=c[n>>2];c[B+8>>2]=c[l>>2];c[B+12>>2]=c[z>>2];c[B+20>>2]=-1;c[A>>2]=Hm(c[(c[m>>2]|0)+12>>2]|0,159,B)|0;if(!(c[A>>2]|0)){c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[z>>2]|0))break;if(c[(c[B+16>>2]|0)+((c[s>>2]|0)*24|0)+12>>2]|0){h=lR(1,0,c[s>>2]|0)|0;g=c[p>>2]|0;b=g;j=c[b+4>>2]|C;c[g>>2]=c[b>>2]|h;c[g+4>>2]=j}c[s>>2]=(c[s>>2]|0)+1}c[c[q>>2]>>2]=c[n>>2];while(1){if(!((Xn(B)|0)!=0^1))break;g=o;Yn(B,c[g>>2]|0,c[g+4>>2]|0,u,v,w,x);if((c[v>>2]|0)<=(c[t>>2]|0))continue;c[(c[q>>2]|0)+4>>2]=c[u>>2];g=x;j=c[g+4>>2]|0;h=(c[q>>2]|0)+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=j;h=w;j=c[h+4>>2]|0;g=(c[q>>2]|0)+8|0;c[g>>2]=c[h>>2];c[g+4>>2]=j;c[t>>2]=c[v>>2]}c[c[r>>2]>>2]=c[t>>2]}Kd(c[B+16>>2]|0);c[k>>2]=c[A>>2];B=c[k>>2]|0;i=D;return B|0}function Un(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;N=i;i=i+128|0;l=N+112|0;m=N+108|0;P=N+104|0;n=N+100|0;o=N+96|0;p=N+92|0;q=N+88|0;r=N+84|0;s=N+80|0;t=N+76|0;J=N+72|0;K=N+68|0;L=N+64|0;G=N+60|0;y=N+56|0;z=N+52|0;E=N+48|0;B=N+44|0;w=N;O=N+40|0;I=N+36|0;H=N+32|0;v=N+28|0;u=N+24|0;x=N+20|0;A=N+16|0;D=N+12|0;F=N+8|0;c[m>>2]=a;c[P>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[J>>2]=c[c[m>>2]>>2];c[y>>2]=0;c[z>>2]=0;c[E>>2]=0;c[B>>2]=c[(c[P>>2]|0)+4>>2];g=(c[P>>2]|0)+16|0;e=c[g+4>>2]|0;d=w;c[d>>2]=c[g>>2];c[d+4>>2]=e;c[O>>2]=(c[c[P>>2]>>2]|0)+1;c[L>>2]=Fe(c[(c[m>>2]|0)+8>>2]|0,c[O>>2]|0)|0;d=c[(c[m>>2]|0)+8>>2]|0;e=c[O>>2]|0;if(!(c[L>>2]|0))if((He(d,e)|0)!=5){c[l>>2]=7;P=c[l>>2]|0;i=N;return P|0}else{c[l>>2]=0;P=c[l>>2]|0;i=N;return P|0}c[G>>2]=Be(d,e)|0;c[I>>2]=c[c[(c[J>>2]|0)+36>>2]>>2];c[K>>2]=wn(c[(c[J>>2]|0)+36>>2]|0,c[(c[m>>2]|0)+16>>2]|0,c[L>>2]|0,c[G>>2]|0,H)|0;if(c[K>>2]|0){c[l>>2]=c[K>>2];P=c[l>>2]|0;i=N;return P|0}while(1){if(c[K>>2]|0)break;c[u>>2]=-1;c[x>>2]=0;c[A>>2]=0;c[D>>2]=0;c[K>>2]=Sb[c[(c[I>>2]|0)+20>>2]&255](c[H>>2]|0,v,u,x,A,y)|0;if(c[K>>2]|0){M=9;break}if((c[y>>2]|0)<(c[B>>2]|0))continue;if(!(c[E>>2]|0)){c[F>>2]=(c[G>>2]|0)-(c[x>>2]|0);c[K>>2]=Vn(c[J>>2]|0,c[(c[m>>2]|0)+16>>2]|0,c[p>>2]|0,(c[L>>2]|0)+(c[x>>2]|0)|0,c[F>>2]|0,B,w)|0;c[E>>2]=1;do if(!(c[K>>2]|0)){if((c[B>>2]|0)>0|(c[n>>2]|0)>0){c[K>>2]=Rn(c[t>>2]|0,c[s>>2]|0,-1)|0;break}if(c[x>>2]|0)c[K>>2]=Rn(c[t>>2]|0,c[L>>2]|0,c[x>>2]|0)|0}while(0);if(c[K>>2]|0)continue;if((c[y>>2]|0)<(c[B>>2]|0))continue}if((c[y>>2]|0)>=((c[B>>2]|0)+(c[p>>2]|0)|0)){M=21;break}P=w;g=c[P>>2]|0;P=c[P+4>>2]|0;O=lR(1,0,(c[y>>2]|0)-(c[B>>2]|0)|0)|0;c[D>>2]=((g&O|0)!=0|(P&C|0)!=0)&1;if((c[y>>2]|0)>(c[B>>2]|0))c[K>>2]=Rn(c[t>>2]|0,(c[L>>2]|0)+(c[z>>2]|0)|0,(c[x>>2]|0)-(c[z>>2]|0)|0)|0;if((c[K>>2]|0)==0&(c[D>>2]|0)!=0)c[K>>2]=Rn(c[t>>2]|0,c[q>>2]|0,-1)|0;if(!(c[K>>2]|0))c[K>>2]=Rn(c[t>>2]|0,(c[L>>2]|0)+(c[x>>2]|0)|0,(c[A>>2]|0)-(c[x>>2]|0)|0)|0;if((c[K>>2]|0)==0&(c[D>>2]|0)!=0)c[K>>2]=Rn(c[t>>2]|0,c[r>>2]|0,-1)|0;c[z>>2]=c[A>>2]}if((M|0)==9){if((c[K>>2]|0)==101)c[K>>2]=Rn(c[t>>2]|0,(c[L>>2]|0)+(c[z>>2]|0)|0,-1)|0}else if((M|0)==21?(c[o>>2]|0)!=0:0)c[K>>2]=Rn(c[t>>2]|0,c[s>>2]|0,-1)|0;Tb[c[(c[I>>2]|0)+16>>2]&255](c[H>>2]|0)|0;c[l>>2]=c[K>>2];P=c[l>>2]|0;i=N;return P|0}function Vn(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0;F=i;i=i+96|0;w=F+84|0;j=F+80|0;k=F+76|0;x=F+72|0;l=F+68|0;m=F+64|0;y=F+60|0;z=F+56|0;A=F;s=F+52|0;t=F+48|0;r=F+44|0;D=F+40|0;B=F+36|0;E=F+32|0;v=F+28|0;u=F+24|0;q=F+20|0;n=F+16|0;o=F+12|0;p=F+8|0;c[j>>2]=a;c[k>>2]=b;c[x>>2]=d;c[l>>2]=e;c[m>>2]=f;c[y>>2]=g;c[z>>2]=h;a=c[z>>2]|0;g=c[a+4>>2]|0;e=A;c[e>>2]=c[a>>2];c[e+4>>2]=g;e=A;do if((c[e>>2]|0)!=0|(c[e+4>>2]|0)!=0){c[s>>2]=0;while(1){e=A;a=c[e>>2]|0;e=c[e+4>>2]|0;g=lR(1,0,c[s>>2]|0)|0;if(!(((a&g|0)!=0|(e&C|0)!=0)^1))break;c[s>>2]=(c[s>>2]|0)+1}c[t>>2]=0;while(1){e=A;a=c[e>>2]|0;e=c[e+4>>2]|0;g=lR(1,0,(c[x>>2]|0)-1-(c[t>>2]|0)|0)|0;if(!(((a&g|0)!=0|(e&C|0)!=0)^1))break;c[t>>2]=(c[t>>2]|0)+1}c[r>>2]=((c[s>>2]|0)-(c[t>>2]|0)|0)/2|0;if((c[r>>2]|0)>0){c[B>>2]=0;c[v>>2]=c[c[(c[j>>2]|0)+36>>2]>>2];c[E>>2]=wn(c[(c[j>>2]|0)+36>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,u)|0;if(c[E>>2]|0){c[w>>2]=c[E>>2];E=c[w>>2]|0;i=F;return E|0}while(1){if(c[E>>2]|0)break;if((c[B>>2]|0)>=((c[x>>2]|0)+(c[r>>2]|0)|0))break;c[n>>2]=0;c[o>>2]=0;c[p>>2]=0;c[E>>2]=Sb[c[(c[v>>2]|0)+20>>2]&255](c[u>>2]|0,q,n,o,p,B)|0}Tb[c[(c[v>>2]|0)+16>>2]&255](c[u>>2]|0)|0;j=c[E>>2]|0;if((c[E>>2]|0)!=0&(c[E>>2]|0)!=101){c[w>>2]=j;E=c[w>>2]|0;i=F;return E|0}else{c[D>>2]=((j|0)==101&1)+(c[B>>2]|0)-(c[x>>2]|0);if((c[D>>2]|0)<=0)break;E=c[y>>2]|0;c[E>>2]=(c[E>>2]|0)+(c[D>>2]|0);E=A;D=hR(c[E>>2]|0,c[E+4>>2]|0,c[D>>2]|0)|0;E=c[z>>2]|0;c[E>>2]=D;c[E+4>>2]=C;break}}}while(0);c[w>>2]=0;E=c[w>>2]|0;i=F;return E|0}function Wn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;l=j+28|0;m=j+24|0;n=j+20|0;k=j+16|0;g=j+12|0;f=j+8|0;h=j+4|0;e=j;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[k>>2]=c[n>>2];c[g>>2]=(c[(c[k>>2]|0)+16>>2]|0)+((c[m>>2]|0)*24|0);c[c[g>>2]>>2]=c[(c[(c[l>>2]|0)+20>>2]|0)+64>>2];c[h>>2]=Km(c[c[k>>2]>>2]|0,c[l>>2]|0,c[(c[k>>2]|0)+4>>2]|0,f)|0;if(!(c[f>>2]|0)){n=c[h>>2]|0;i=j;return n|0}c[e>>2]=0;c[(c[g>>2]|0)+4>>2]=c[f>>2];Qn(f,e);c[(c[g>>2]|0)+12>>2]=c[f>>2];c[(c[g>>2]|0)+20>>2]=c[f>>2];c[(c[g>>2]|0)+8>>2]=c[e>>2];c[(c[g>>2]|0)+16>>2]=c[e>>2];n=c[h>>2]|0;i=j;return n|0}function Xn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;b=l+28|0;d=l+24|0;e=l+20|0;h=l+16|0;g=l+12|0;f=l+8|0;j=l+4|0;k=l;c[d>>2]=a;a:do if((c[(c[d>>2]|0)+20>>2]|0)<0){c[(c[d>>2]|0)+20>>2]=0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+12>>2]|0))break a;c[h>>2]=(c[(c[d>>2]|0)+16>>2]|0)+((c[e>>2]|0)*24|0);Zn((c[h>>2]|0)+12|0,(c[h>>2]|0)+8|0,c[(c[d>>2]|0)+8>>2]|0);c[e>>2]=(c[e>>2]|0)+1}}else{c[f>>2]=2147483647;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+12>>2]|0))break;c[j>>2]=(c[(c[d>>2]|0)+16>>2]|0)+((c[e>>2]|0)*24|0);if((c[(c[j>>2]|0)+12>>2]|0)!=0?(c[(c[j>>2]|0)+8>>2]|0)<(c[f>>2]|0):0)c[f>>2]=c[(c[j>>2]|0)+8>>2];c[e>>2]=(c[e>>2]|0)+1}if((c[f>>2]|0)==2147483647){c[b>>2]=1;k=c[b>>2]|0;i=l;return k|0}j=(c[f>>2]|0)-(c[(c[d>>2]|0)+8>>2]|0)+1|0;c[g>>2]=j;c[(c[d>>2]|0)+20>>2]=j;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+12>>2]|0))break a;c[k>>2]=(c[(c[d>>2]|0)+16>>2]|0)+((c[e>>2]|0)*24|0);Zn((c[k>>2]|0)+12|0,(c[k>>2]|0)+8|0,(c[f>>2]|0)+1|0);Zn((c[k>>2]|0)+20|0,(c[k>>2]|0)+16|0,c[g>>2]|0);c[e>>2]=(c[e>>2]|0)+1}}while(0);c[b>>2]=0;k=c[b>>2]|0;i=l;return k|0}function Yn(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+96|0;k=B+84|0;l=B+32|0;m=B+80|0;n=B+76|0;o=B+72|0;p=B+68|0;t=B+64|0;s=B+60|0;q=B+56|0;v=B+24|0;w=B+16|0;A=B+52|0;z=B+48|0;r=B+44|0;u=B+40|0;x=B+8|0;y=B;c[k>>2]=b;b=l;c[b>>2]=d;c[b+4>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[p>>2]=j;c[t>>2]=c[(c[k>>2]|0)+20>>2];c[s>>2]=0;j=v;c[j>>2]=0;c[j+4>>2]=0;j=w;c[j>>2]=0;c[j+4>>2]=0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[k>>2]|0)+12>>2]|0))break;c[A>>2]=(c[(c[k>>2]|0)+16>>2]|0)+((c[q>>2]|0)*24|0); -a:do if(c[(c[A>>2]|0)+20>>2]|0){c[z>>2]=c[(c[A>>2]|0)+20>>2];c[r>>2]=c[(c[A>>2]|0)+16>>2];while(1){if((c[r>>2]|0)>=((c[t>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0)|0))break a;f=lR(1,0,c[q>>2]|0)|0;h=x;c[h>>2]=f;c[h+4>>2]=C;h=lR(1,0,(c[r>>2]|0)-(c[t>>2]|0)|0)|0;f=y;c[f>>2]=h;c[f+4>>2]=C;f=v;h=l;j=x;d=c[s>>2]|0;if(((c[f>>2]|c[h>>2])&c[j>>2]|0)!=0?1:((c[f+4>>2]|c[h+4>>2])&c[j+4>>2]|0)!=0)c[s>>2]=d+1;else c[s>>2]=d+1e3;f=x;g=v;h=c[g+4>>2]|c[f+4>>2];j=v;c[j>>2]=c[g>>2]|c[f>>2];c[j+4>>2]=h;c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[c[A>>2]>>2]|0))break;f=y;f=hR(c[f>>2]|0,c[f+4>>2]|0,c[u>>2]|0)|0;g=w;h=c[g+4>>2]|C;j=w;c[j>>2]=c[g>>2]|f;c[j+4>>2]=h;c[u>>2]=(c[u>>2]|0)+1}if(!(a[c[z>>2]>>0]&254))break a;Qn(z,r)}}while(0);c[q>>2]=(c[q>>2]|0)+1}c[c[m>>2]>>2]=c[t>>2];c[c[n>>2]>>2]=c[s>>2];A=v;z=c[A+4>>2]|0;y=c[o>>2]|0;c[y>>2]=c[A>>2];c[y+4>>2]=z;y=w;z=c[y+4>>2]|0;A=c[p>>2]|0;c[A>>2]=c[y>>2];c[A+4>>2]=z;i=B;return}function Zn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+16|0;g=m+12|0;h=m+8|0;k=m+4|0;j=m;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[k>>2]=c[c[f>>2]>>2];if(!(c[k>>2]|0)){i=m;return}c[j>>2]=c[c[g>>2]>>2];while(1){if((c[j>>2]|0)>=(c[h>>2]|0))break;if(!(a[c[k>>2]>>0]&254)){l=5;break}Qn(k,j)}if((l|0)==5){c[j>>2]=-1;c[k>>2]=0}c[c[g>>2]>>2]=c[j>>2];c[c[f>>2]>>2]=c[k>>2];i=m;return}function _n(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;j=h+16|0;d=h+12|0;g=h+8|0;e=h+4|0;f=h;c[j>>2]=a;c[d>>2]=b;c[e>>2]=0;c[f>>2]=0;c[g>>2]=jl(c[j>>2]|0,36,f,0)|0;if(c[g>>2]|0){b=c[e>>2]|0;j=c[d>>2]|0;c[j>>2]=b;j=c[g>>2]|0;i=h;return j|0}if(100==(ue(c[f>>2]|0)|0))c[e>>2]=De(c[f>>2]|0,0)|0;c[g>>2]=Zd(c[f>>2]|0)|0;b=c[e>>2]|0;j=c[d>>2]|0;c[j>>2]=b;j=c[g>>2]|0;i=h;return j|0}function $n(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0;D=i;i=i+128|0;f=D+112|0;g=D+108|0;E=D+104|0;h=D+100|0;A=D+96|0;u=D+92|0;w=D+88|0;x=D+84|0;z=D+80|0;v=D+76|0;n=D+16|0;m=D+64|0;j=D+60|0;t=D+8|0;y=D+52|0;l=D+48|0;p=D+44|0;q=D+40|0;o=D;r=D+36|0;k=D+32|0;B=D+28|0;s=D+24|0;c[g>>2]=a;c[E>>2]=b;c[h>>2]=e;c[u>>2]=c[E>>2];c[v>>2]=0;a=n;c[a>>2]=0;c[a+4>>2]=0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[j>>2]=0;c[D+56>>2]=640;c[z>>2]=Id(640)|0;if(!(c[z>>2]|0)){c[f>>2]=7;E=c[f>>2]|0;i=D;return E|0}c[x>>2]=(c[z>>2]|0)+568;c[w>>2]=(c[x>>2]|0)+16;c[A>>2]=ao(c[g>>2]|0,m)|0;while(1){if(!((c[A>>2]|0)==0?(c[u>>2]|0)>0:0))break;a=c[(c[g>>2]|0)+248>>2]<<10;E=t;c[E>>2]=a;c[E+4>>2]=((a|0)<0)<<31>>31;c[y>>2]=0;c[l>>2]=0;c[p>>2]=0;c[A>>2]=jl(c[g>>2]|0,28,y,0)|0;Le(c[y>>2]|0,1,c[h>>2]|0)|0;if((ue(c[y>>2]|0)|0)==100){a=Ee(c[y>>2]|0,0)|0;E=n;c[E>>2]=a;c[E+4>>2]=C;c[v>>2]=c[h>>2]}else c[v>>2]=-1;c[A>>2]=Zd(c[y>>2]|0)|0;do if((c[A>>2]|0)==0?(c[m+4>>2]|0)!=0:0){c[q>>2]=c[m+4>>2];E=o;c[E>>2]=0;c[E+4>>2]=0;c[r>>2]=0;c[A>>2]=bo(m,o,r)|0;if((c[v>>2]|0)>=0?(b=n,a=t,a=qR(c[b>>2]|0,c[b+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0,b=C,e=o,E=t,E=qR(c[e>>2]|0,c[e+4>>2]|0,c[E>>2]|0,c[E+4>>2]|0)|0,e=C,!((b|0)>(e|0)|(b|0)==(e|0)&a>>>0>=E>>>0)):0){c[m+4>>2]=c[q>>2];break}e=o;a=c[e+4>>2]|0;E=n;c[E>>2]=c[e>>2];c[E+4>>2]=a;c[v>>2]=c[r>>2];c[l>>2]=1;c[j>>2]=1}while(0);if((c[v>>2]|0)<0)break;kR(c[z>>2]|0,0,640)|0;c[(c[x>>2]|0)+12>>2]=1;do if(!(c[A>>2]|0)){E=n;c[A>>2]=co(c[g>>2]|0,c[E>>2]|0,c[E+4>>2]|0,p)|0;if((c[p>>2]|0)!=0?!((c[l>>2]|0)!=0&(c[p>>2]|0)==1):0)break;c[k>>2]=0;a=c[g>>2]|0;E=n;E=gR(c[E>>2]|0,c[E+4>>2]|0,1,0)|0;c[A>>2]=eo(a,E,C,k)|0;if(c[k>>2]|0){E=(c[x>>2]|0)+12|0;c[E>>2]=c[E>>2]|2}}while(0);if(!(c[A>>2]|0)){E=n;c[A>>2]=fo(c[g>>2]|0,c[E>>2]|0,c[E+4>>2]|0,c[v>>2]|0,c[w>>2]|0)|0}if(((0==(c[A>>2]|0)?(c[(c[w>>2]|0)+4>>2]|0)==(c[v>>2]|0):0)?(E=ol(c[g>>2]|0,c[w>>2]|0,c[x>>2]|0)|0,c[A>>2]=E,0==(E|0)):0)?(E=pl(c[g>>2]|0,c[w>>2]|0)|0,c[A>>2]=E,100==(E|0)):0){if((c[l>>2]|0)!=0&(c[p>>2]|0)>0){c[B>>2]=c[(c[w>>2]|0)+40>>2];c[s>>2]=c[(c[w>>2]|0)+44>>2];E=n;c[A>>2]=go(c[g>>2]|0,c[E>>2]|0,c[E+4>>2]|0,(c[p>>2]|0)-1|0,c[B>>2]|0,c[s>>2]|0,c[z>>2]|0)|0}else{E=n;c[A>>2]=ho(c[g>>2]|0,c[E>>2]|0,c[E+4>>2]|0,c[p>>2]|0,c[w>>2]|0,c[z>>2]|0)|0}if((c[A>>2]|0)==0?(c[c[z>>2]>>2]|0)!=0:0){do{c[A>>2]=io(c[g>>2]|0,c[z>>2]|0,c[w>>2]|0)|0;if(!(c[A>>2]|0))c[A>>2]=pl(c[g>>2]|0,c[w>>2]|0)|0;if((c[A>>2]|0)==100?(c[(c[z>>2]|0)+4>>2]|0)>=(c[u>>2]|0):0)c[A>>2]=0}while((c[A>>2]|0)==100);if((c[A>>2]|0)==0?(c[u>>2]=(c[u>>2]|0)-(1+(c[(c[z>>2]|0)+4>>2]|0)),E=n,c[A>>2]=jo(c[g>>2]|0,c[E>>2]|0,c[E+4>>2]|0,c[w>>2]|0,v)|0,(c[v>>2]|0)!=0):0){c[j>>2]=1;E=n;ko(m,c[E>>2]|0,c[E+4>>2]|0,c[v>>2]|0,A)}}if(c[v>>2]|0){a=(c[z>>2]|0)+40|0;a=rR(c[a>>2]|0,c[a+4>>2]|0,-1,-1)|0;E=(c[z>>2]|0)+40|0;c[E>>2]=a;c[E+4>>2]=C}lo(c[g>>2]|0,c[z>>2]|0,A);if((c[v>>2]|0)==0?(d[(c[z>>2]|0)+48>>0]|0|0)==0:0){e=c[g>>2]|0;a=n;a=gR(c[a>>2]|0,c[a+4>>2]|0,1,0)|0;E=(c[z>>2]|0)+40|0;tl(e,a,C,c[E>>2]|0,c[E+4>>2]|0)|0}}vl(c[w>>2]|0)}if((c[j>>2]|0)!=0&(c[A>>2]|0)==0)c[A>>2]=mo(c[g>>2]|0,m)|0;Kd(c[z>>2]|0);Kd(c[m>>2]|0);c[f>>2]=c[A>>2];E=c[f>>2]|0;i=D;return E|0}function ao(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+24|0;d=k+20|0;g=k+16|0;h=k+12|0;j=k+8|0;e=k+4|0;f=k;c[l>>2]=a;c[d>>2]=b;c[g>>2]=0;c[(c[d>>2]|0)+4>>2]=0;c[h>>2]=jl(c[l>>2]|0,22,g,0)|0;if(c[h>>2]|0){l=c[h>>2]|0;i=k;return l|0}Le(c[g>>2]|0,1,1)|0;if((100==(ue(c[g>>2]|0)|0)?(c[e>>2]=Ae(c[g>>2]|0,0)|0,c[f>>2]=Be(c[g>>2]|0,0)|0,(c[e>>2]|0)!=0):0)?(no(c[d>>2]|0,c[f>>2]|0,h),(c[h>>2]|0)==0):0){iR(c[c[d>>2]>>2]|0,c[e>>2]|0,c[f>>2]|0)|0;c[(c[d>>2]|0)+4>>2]=c[f>>2]}c[j>>2]=Zd(c[g>>2]|0)|0;if(c[h>>2]|0){l=c[h>>2]|0;i=k;return l|0}c[h>>2]=c[j>>2];l=c[h>>2]|0;i=k;return l|0}function bo(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;k=n+20|0;h=n+16|0;g=n+12|0;j=n+8|0;m=n+4|0;l=n;c[h>>2]=b;c[g>>2]=e;c[j>>2]=f;c[m>>2]=c[(c[h>>2]|0)+4>>2];c[l>>2]=(c[(c[h>>2]|0)+4>>2]|0)-2;while(1){if((c[l>>2]|0)<=0)break;if(!(a[(c[c[h>>2]>>2]|0)+((c[l>>2]|0)-1)>>0]&128))break;c[l>>2]=(c[l>>2]|0)+-1}while(1){if((c[l>>2]|0)>0)e=(a[(c[c[h>>2]>>2]|0)+((c[l>>2]|0)-1)>>0]&128|0)!=0;else e=0;b=c[l>>2]|0;if(!e)break;c[l>>2]=b+-1}c[(c[h>>2]|0)+4>>2]=b;b=Ul((c[c[h>>2]>>2]|0)+(c[l>>2]|0)|0,c[g>>2]|0)|0;c[l>>2]=(c[l>>2]|0)+b;b=(c[c[h>>2]>>2]|0)+(c[l>>2]|0)|0;if(d[(c[c[h>>2]>>2]|0)+(c[l>>2]|0)>>0]&128)b=Vl(b,c[j>>2]|0)|0;else{c[c[j>>2]>>2]=d[b>>0];b=1}c[l>>2]=(c[l>>2]|0)+b;if((c[l>>2]|0)!=(c[m>>2]|0)){c[k>>2]=267;m=c[k>>2]|0;i=n;return m|0}else{c[k>>2]=0;m=c[k>>2]|0;i=n;return m|0}return 0}function co(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;f=k;g=k+16|0;j=k+12|0;h=k+8|0;c[l>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=e;c[h>>2]=0;c[j>>2]=jl(c[l>>2]|0,8,h,0)|0;if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}e=c[h>>2]|0;l=f;l=gR(c[l>>2]|0,c[l+4>>2]|0,1,0)|0;Me(e,1,l,C)|0;ue(c[h>>2]|0)|0;l=De(c[h>>2]|0,0)|0;c[c[g>>2]>>2]=l;c[j>>2]=Zd(c[h>>2]|0)|0;l=c[j>>2]|0;i=k;return l|0}function eo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;f=l+24|0;m=l+20|0;g=l;h=l+16|0;j=l+12|0;k=l+8|0;c[m>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;c[h>>2]=e;c[k>>2]=jl(c[m>>2]|0,15,j,0)|0;if(c[k>>2]|0){c[f>>2]=c[k>>2];m=c[f>>2]|0;i=l;return m|0}m=c[j>>2]|0;k=g;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;Me(m,1,k,C)|0;k=c[j>>2]|0;m=g;m=pR(c[m>>2]|0,c[m+4>>2]|0,1024,0)|0;m=gR(m|0,C|0,1,0)|0;m=rR(m|0,C|0,1024,0)|0;Me(k,2,m,C)|0;c[c[h>>2]>>2]=0;if(100==(ue(c[j>>2]|0)|0)){m=(He(c[j>>2]|0,0)|0)==5&1;c[c[h>>2]>>2]=m}c[f>>2]=Zd(c[j>>2]|0)|0;m=c[f>>2]|0;i=l;return m|0}function fo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+48|0;g=q+36|0;h=q;j=q+32|0;k=q+28|0;o=q+24|0;n=q+20|0;m=q+16|0;l=q+12|0;p=q+8|0;c[g>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;c[j>>2]=e;c[k>>2]=f;c[n>>2]=0;b=c[k>>2]|0;d=b+56|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));c[m>>2]=c[j>>2]<<2;f=Id(c[m>>2]|0)|0;c[c[k>>2]>>2]=f;if(!(c[c[k>>2]>>2]|0))c[o>>2]=7;else{kR(c[c[k>>2]>>2]|0,0,c[m>>2]|0)|0;c[o>>2]=jl(c[g>>2]|0,12,n,0)|0}if(c[o>>2]|0){p=c[o>>2]|0;i=q;return p|0}m=h;Me(c[n>>2]|0,1,c[m>>2]|0,c[m+4>>2]|0)|0;c[l>>2]=0;while(1){if(c[o>>2]|0)break;if((ue(c[n>>2]|0)|0)!=100)break;if((c[l>>2]|0)>=(c[j>>2]|0))break;r=c[l>>2]|0;b=Ee(c[n>>2]|0,1)|0;d=C;e=Ee(c[n>>2]|0,2)|0;a=C;f=Ee(c[n>>2]|0,3)|0;g=C;h=Ae(c[n>>2]|0,4)|0;m=Be(c[n>>2]|0,4)|0;c[o>>2]=im(r,0,b,d,e,a,f,g,h,m,(c[c[k>>2]>>2]|0)+(c[l>>2]<<2)|0)|0;m=(c[k>>2]|0)+4|0;c[m>>2]=(c[m>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+1}c[p>>2]=Zd(c[n>>2]|0)|0;if(c[o>>2]|0){r=c[o>>2]|0;i=q;return r|0}c[o>>2]=c[p>>2];r=c[o>>2]|0;i=q;return r|0}function go(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+208|0;y=K+200|0;z=K+196|0;k=K+120|0;l=K+192|0;m=K+188|0;n=K+184|0;A=K+180|0;H=K+176|0;G=K+172|0;s=K+112|0;r=K+104|0;q=K+96|0;v=K+168|0;x=K+164|0;I=K+160|0;p=K+156|0;o=K+152|0;t=K+148|0;u=K+48|0;D=K+144|0;w=K+140|0;F=K+136|0;J=K;B=K+132|0;E=K+128|0;c[z>>2]=b;b=k;c[b>>2]=d;c[b+4>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[A>>2]=j;c[G>>2]=0;c[H>>2]=jl(c[z>>2]|0,32,G,0)|0;if(!(c[H>>2]|0)){d=s;c[d>>2]=0;c[d+4>>2]=0;d=r;c[d>>2]=0;c[d+4>>2]=0;d=q;c[d>>2]=0;c[d+4>>2]=0;c[v>>2]=0;c[x>>2]=0;c[p>>2]=0;d=c[G>>2]|0;g=k;g=gR(c[g>>2]|0,c[g+4>>2]|0,1,0)|0;Me(d,1,g,C)|0;Le(c[G>>2]|0,2,c[l>>2]|0)|0;g=(ue(c[G>>2]|0)|0)==100;d=c[G>>2]|0;if(!g){c[y>>2]=Zd(d)|0;J=c[y>>2]|0;i=K;return J|0}g=Ee(d,1)|0;j=s;c[j>>2]=g;c[j+4>>2]=C;j=Ee(c[G>>2]|0,2)|0;g=r;c[g>>2]=j;c[g+4>>2]=C;yl(c[G>>2]|0,3,q,(c[A>>2]|0)+40|0);if((c[(c[A>>2]|0)+40+4>>2]|0)<0){j=(c[A>>2]|0)+40|0;j=rR(c[j>>2]|0,c[j+4>>2]|0,-1,-1)|0;g=(c[A>>2]|0)+40|0;c[g>>2]=j;c[g+4>>2]=C}g=(c[A>>2]|0)+40|0;a[(c[A>>2]|0)+48>>0]=(c[g>>2]|0)==0&(c[g+4>>2]|0)==0&1;c[x>>2]=Be(c[G>>2]|0,4)|0;c[v>>2]=Ae(c[G>>2]|0,4)|0;g=q;c[H>>2]=zo(c[z>>2]|0,c[g>>2]|0,c[g+4>>2]|0,p)|0;if((c[H>>2]|0)==0&(c[p>>2]|0)!=0){c[o>>2]=0;c[t>>2]=0;c[H>>2]=am(c[z>>2]|0,c[r>>2]|0,c[r+4>>2]|0,o,t,0)|0;if(!(c[H>>2]|0)){c[H>>2]=so(u,c[o>>2]|0,c[t>>2]|0)|0;while(1){if(!((c[H>>2]|0)==0?(c[u>>2]|0)!=0:0))break;c[H>>2]=wo(u)|0}if((to(c[m>>2]|0,c[n>>2]|0,c[u+24>>2]|0,c[u+24+4>>2]|0)|0)<=0)c[p>>2]=0;xo(u)}Kd(c[o>>2]|0)}a:do if((c[H>>2]|0)==0&(c[p>>2]|0)!=0){c[w>>2]=a[c[v>>2]>>0];u=q;t=s;t=fR(c[u>>2]|0,c[u+4>>2]|0,c[t>>2]|0,c[t+4>>2]|0)|0;t=gR(t|0,C|0,1,0)|0;c[c[A>>2]>>2]=(t|0)/16|0;t=c[s+4>>2]|0;u=(c[A>>2]|0)+24|0;c[u>>2]=c[s>>2];c[u+4>>2]=t;u=q;t=c[u+4>>2]|0;s=(c[A>>2]|0)+32|0;c[s>>2]=c[u>>2];c[s+4>>2]=t;s=k;t=c[s+4>>2]|0;u=(c[A>>2]|0)+8|0;c[u>>2]=c[s>>2];c[u+4>>2]=t;c[(c[A>>2]|0)+16>>2]=c[l>>2];c[D>>2]=(c[w>>2]|0)+1;while(1){if((c[D>>2]|0)>=16)break;u=(c[A>>2]|0)+24|0;t=_(c[D>>2]|0,c[c[A>>2]>>2]|0)|0;t=gR(c[u>>2]|0,c[u+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;u=(c[A>>2]|0)+56+(c[D>>2]<<5)|0;c[u>>2]=t;c[u+4>>2]=C;c[D>>2]=(c[D>>2]|0)+1}c[F>>2]=(c[A>>2]|0)+56+(c[w>>2]<<5);u=(c[A>>2]|0)+24|0;t=_(c[c[A>>2]>>2]|0,c[w>>2]|0)|0;t=gR(c[u>>2]|0,c[u+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;u=c[F>>2]|0;c[u>>2]=t;c[u+4>>2]=C;if((c[x>>2]|0)>(c[(c[z>>2]|0)+224>>2]|0))d=c[x>>2]|0;else d=c[(c[z>>2]|0)+224>>2]|0;no((c[F>>2]|0)+20|0,d,H);if(!(c[H>>2]|0)){iR(c[(c[F>>2]|0)+20>>2]|0,c[v>>2]|0,c[x>>2]|0)|0;c[(c[F>>2]|0)+20+4>>2]=c[x>>2]}c[D>>2]=c[w>>2];while(1){if(!((c[D>>2]|0)>=0?(c[H>>2]|0)==0:0))break a;c[F>>2]=(c[A>>2]|0)+56+(c[D>>2]<<5);c[H>>2]=so(J,c[(c[F>>2]|0)+20>>2]|0,c[(c[F>>2]|0)+20+4>>2]|0)|0;while(1){if(!((c[J>>2]|0)!=0?(c[H>>2]|0)==0:0))break;c[H>>2]=wo(J)|0}no((c[F>>2]|0)+8|0,c[J+24+4>>2]|0,H);if((c[H>>2]|0)==0?(iR(c[(c[F>>2]|0)+8>>2]|0,c[J+24>>2]|0,c[J+24+4>>2]|0)|0,c[(c[F>>2]|0)+8+4>>2]=c[J+24+4>>2],(c[D>>2]|0)>0):0){c[B>>2]=0;c[E>>2]=0;c[F>>2]=(c[A>>2]|0)+56+((c[D>>2]|0)-1<<5);v=J+16|0;w=c[v+4>>2]|0;x=c[F>>2]|0;c[x>>2]=c[v>>2];c[x+4>>2]=w;x=J+16|0;c[H>>2]=am(c[z>>2]|0,c[x>>2]|0,c[x+4>>2]|0,B,E,0)|0;if((c[E>>2]|0)>(c[(c[z>>2]|0)+224>>2]|0))d=c[E>>2]|0;else d=c[(c[z>>2]|0)+224>>2]|0;no((c[F>>2]|0)+20|0,d,H);if(!(c[H>>2]|0)){iR(c[(c[F>>2]|0)+20>>2]|0,c[B>>2]|0,c[E>>2]|0)|0;c[(c[F>>2]|0)+20+4>>2]=c[E>>2]}Kd(c[B>>2]|0)}xo(J);c[D>>2]=(c[D>>2]|0)+-1}}while(0);c[I>>2]=Zd(c[G>>2]|0)|0;if(!(c[H>>2]|0))c[H>>2]=c[I>>2]}c[y>>2]=c[H>>2];J=c[y>>2]|0;i=K;return J|0}function ho(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+44|0;j=t+40|0;k=t;l=t+36|0;m=t+32|0;n=t+28|0;s=t+24|0;o=t+20|0;p=t+16|0;r=t+12|0;q=t+8|0;c[j>>2]=a;a=k;c[a>>2]=b;c[a+4>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[p>>2]=0;c[r>>2]=0;c[q>>2]=0;c[s>>2]=jl(c[j>>2]|0,29,r,0)|0;if(!(c[s>>2]|0)){g=k;Me(c[r>>2]|0,1,c[g>>2]|0,c[g+4>>2]|0)|0;g=c[(c[m>>2]|0)+4>>2]|0;Me(c[r>>2]|0,2,g,((g|0)<0)<<31>>31)|0;if(100==(ue(c[r>>2]|0)|0))c[p>>2]=De(c[r>>2]|0,0)|0;c[s>>2]=Zd(c[r>>2]|0)|0}if(c[s>>2]|0){c[h>>2]=c[s>>2];s=c[h>>2]|0;i=t;return s|0}c[s>>2]=jl(c[j>>2]|0,10,q,0)|0;if(!(c[s>>2]|0)){if(100==(ue(c[q>>2]|0)|0)){r=Ee(c[q>>2]|0,0)|0;g=(c[n>>2]|0)+24|0;c[g>>2]=r;c[g+4>>2]=C;g=(c[n>>2]|0)+24|0;g=fR(c[g>>2]|0,c[g+4>>2]|0,1,0)|0;r=(c[n>>2]|0)+32|0;c[r>>2]=g;c[r+4>>2]=C;r=c[p>>2]<<4;g=(c[n>>2]|0)+32|0;f=g;r=gR(c[f>>2]|0,c[f+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;c[g>>2]=r;c[g+4>>2]=C}c[s>>2]=Zd(c[q>>2]|0)|0}if(c[s>>2]|0){c[h>>2]=c[s>>2];s=c[h>>2]|0;i=t;return s|0}g=(c[n>>2]|0)+32|0;c[s>>2]=zl(c[j>>2]|0,c[g>>2]|0,c[g+4>>2]|0,0,0)|0;if(c[s>>2]|0){c[h>>2]=c[s>>2];s=c[h>>2]|0;i=t;return s|0}r=k;g=c[r+4>>2]|0;s=(c[n>>2]|0)+8|0;c[s>>2]=c[r>>2];c[s+4>>2]=g;c[c[n>>2]>>2]=c[p>>2];c[(c[n>>2]|0)+16>>2]=c[l>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=16)break;s=(c[n>>2]|0)+24|0;g=_(c[o>>2]|0,c[c[n>>2]>>2]|0)|0;g=gR(c[s>>2]|0,c[s+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;s=(c[n>>2]|0)+56+(c[o>>2]<<5)|0;c[s>>2]=g;c[s+4>>2]=C;c[o>>2]=(c[o>>2]|0)+1}c[h>>2]=0;s=c[h>>2]|0;i=t;return s|0}function io(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;f=r+44|0;g=r+40|0;s=r+36|0;q=r+32|0;n=r+28|0;h=r+24|0;j=r+20|0;p=r+16|0;l=r+12|0;k=r+8|0;m=r+4|0;o=r;c[f>>2]=b;c[g>>2]=d;c[s>>2]=e;c[q>>2]=c[(c[s>>2]|0)+40>>2];c[n>>2]=c[(c[s>>2]|0)+44>>2];c[h>>2]=c[(c[s>>2]|0)+48>>2];c[j>>2]=c[(c[s>>2]|0)+52>>2];c[p>>2]=0;c[o>>2]=(c[g>>2]|0)+56;c[k>>2]=Gl(c[(c[o>>2]|0)+8>>2]|0,c[(c[o>>2]|0)+8+4>>2]|0,c[q>>2]|0,c[n>>2]|0)|0;c[m>>2]=(c[n>>2]|0)-(c[k>>2]|0);d=c[k>>2]|0;c[l>>2]=Dl(d,((d|0)<0)<<31>>31)|0;d=c[m>>2]|0;d=Dl(d,((d|0)<0)<<31>>31)|0;c[l>>2]=(c[l>>2]|0)+(d+(c[m>>2]|0));d=c[j>>2]|0;d=Dl(d,((d|0)<0)<<31>>31)|0;c[l>>2]=(c[l>>2]|0)+(d+(c[j>>2]|0));if((c[(c[o>>2]|0)+20+4>>2]|0)>0?((c[(c[o>>2]|0)+20+4>>2]|0)+(c[l>>2]|0)|0)>(c[(c[f>>2]|0)+224>>2]|0):0){s=c[o>>2]|0;c[p>>2]=zl(c[f>>2]|0,c[s>>2]|0,c[s+4>>2]|0,c[(c[o>>2]|0)+20>>2]|0,c[(c[o>>2]|0)+20+4>>2]|0)|0;s=(c[g>>2]|0)+4|0;c[s>>2]=(c[s>>2]|0)+1;if(!(c[p>>2]|0))c[p>>2]=yo(c[f>>2]|0,c[g>>2]|0,c[q>>2]|0,(c[k>>2]|0)+1|0)|0;s=c[o>>2]|0;d=s;d=gR(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;c[s>>2]=d;c[s+4>>2]=C;c[(c[o>>2]|0)+8+4>>2]=0;c[(c[o>>2]|0)+20+4>>2]=0;c[m>>2]=c[n>>2];c[l>>2]=1;s=c[m>>2]|0;s=Dl(s,((s|0)<0)<<31>>31)|0;c[l>>2]=(c[l>>2]|0)+(s+(c[m>>2]|0));s=c[j>>2]|0;s=Dl(s,((s|0)<0)<<31>>31)|0;c[l>>2]=(c[l>>2]|0)+(s+(c[j>>2]|0))}d=c[l>>2]|0;s=(c[g>>2]|0)+40|0;e=s;d=gR(c[e>>2]|0,c[e+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;c[s>>2]=d;c[s+4>>2]=C;no((c[o>>2]|0)+20|0,(c[(c[o>>2]|0)+20+4>>2]|0)+(c[l>>2]|0)|0,p);if(c[p>>2]|0){s=c[p>>2]|0;i=r;return s|0}if(!(c[(c[o>>2]|0)+20+4>>2]|0)){c[(c[o>>2]|0)+20+4>>2]=1;a[c[(c[o>>2]|0)+20>>2]>>0]=0}c[p>>2]=vo((c[o>>2]|0)+20|0,(c[o>>2]|0)+8|0,c[q>>2]|0,c[n>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;s=c[p>>2]|0;i=r;return s|0}function jo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;g=s+44|0;h=s;j=s+40|0;k=s+36|0;l=s+32|0;n=s+28|0;q=s+24|0;p=s+20|0;m=s+16|0;r=s+12|0;o=s+8|0;c[g>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;c[j>>2]=e;c[k>>2]=f;c[n>>2]=0;c[q>>2]=0;c[l>>2]=(c[(c[j>>2]|0)+4>>2]|0)-1;while(1){if(!((c[l>>2]|0)>=0?(c[q>>2]|0)==0:0))break;c[p>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[j>>2]|0)+4>>2]|0))break;c[p>>2]=c[(c[c[j>>2]>>2]|0)+(c[m>>2]<<2)>>2];if((c[c[p>>2]>>2]|0)==(c[l>>2]|0))break;c[m>>2]=(c[m>>2]|0)+1}if(!(c[(c[p>>2]|0)+40>>2]|0)){c[q>>2]=Fl(c[g>>2]|0,c[p>>2]|0)|0;if(!(c[q>>2]|0)){f=h;c[q>>2]=oo(c[g>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[c[p>>2]>>2]|0)|0}c[c[k>>2]>>2]=0}else{c[r>>2]=c[(c[p>>2]|0)+64>>2];c[o>>2]=c[(c[p>>2]|0)+60>>2];f=h;c[q>>2]=po(c[g>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[c[p>>2]>>2]|0,c[r>>2]|0,c[o>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+1}c[l>>2]=(c[l>>2]|0)+-1}if(c[q>>2]|0){f=c[n>>2]|0;r=c[k>>2]|0;c[r>>2]=f;r=c[q>>2]|0;i=s;return r|0}if((c[n>>2]|0)==(c[(c[j>>2]|0)+4>>2]|0)){f=c[n>>2]|0;r=c[k>>2]|0;c[r>>2]=f;r=c[q>>2]|0;i=s;return r|0}f=h;c[q>>2]=qo(c[g>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;f=c[n>>2]|0;r=c[k>>2]|0;c[r>>2]=f;r=c[q>>2]|0;i=s;return r|0}function ko(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;g=k+16|0;h=k;j=k+12|0;l=k+8|0;c[g>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;c[j>>2]=e;c[l>>2]=f;no(c[g>>2]|0,(c[(c[g>>2]|0)+4>>2]|0)+20|0,c[l>>2]|0);if(c[c[l>>2]>>2]|0){i=k;return}l=h;l=El((c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0)|0,c[l>>2]|0,c[l+4>>2]|0)|0;f=(c[g>>2]|0)+4|0;c[f>>2]=(c[f>>2]|0)+l;f=c[j>>2]|0;f=El((c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0)|0,f,((f|0)<0)<<31>>31)|0;l=(c[g>>2]|0)+4|0;c[l>>2]=(c[l>>2]|0)+f;i=k;return}function lo(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+36|0;n=r+32|0;o=r+28|0;h=r+24|0;j=r+20|0;p=r+16|0;q=r+12|0;l=r+8|0;k=r+4|0;m=r;c[g>>2]=b;c[n>>2]=e;c[o>>2]=f;c[q>>2]=c[c[o>>2]>>2];c[j>>2]=15;while(1){if((c[j>>2]|0)<0)break;c[l>>2]=(c[n>>2]|0)+56+(c[j>>2]<<5);if((c[(c[l>>2]|0)+20+4>>2]|0)>0)break;Kd(c[(c[l>>2]|0)+20>>2]|0);Kd(c[(c[l>>2]|0)+8>>2]|0);c[j>>2]=(c[j>>2]|0)+-1}if((c[j>>2]|0)<0){i=r;return}if(!(c[j>>2]|0)){c[k>>2]=(c[n>>2]|0)+56+32+20;no(c[k>>2]|0,11,q);if(!(c[q>>2]|0)){a[c[c[k>>2]>>2]>>0]=1;e=(c[n>>2]|0)+56|0;e=1+(El((c[c[k>>2]>>2]|0)+1|0,c[e>>2]|0,c[e+4>>2]|0)|0)|0;c[(c[k>>2]|0)+4>>2]=e}c[j>>2]=1}c[p>>2]=(c[n>>2]|0)+56+(c[j>>2]<<5);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[j>>2]|0))break;c[m>>2]=(c[n>>2]|0)+56+(c[h>>2]<<5);if((c[q>>2]|0)==0?(c[(c[m>>2]|0)+20+4>>2]|0)>0:0){e=c[m>>2]|0;c[q>>2]=zl(c[g>>2]|0,c[e>>2]|0,c[e+4>>2]|0,c[(c[m>>2]|0)+20>>2]|0,c[(c[m>>2]|0)+20+4>>2]|0)|0}Kd(c[(c[m>>2]|0)+20>>2]|0);Kd(c[(c[m>>2]|0)+8>>2]|0);c[h>>2]=(c[h>>2]|0)+1}if(!(c[q>>2]|0)){m=c[g>>2]|0;g=(c[n>>2]|0)+8|0;g=gR(c[g>>2]|0,c[g+4>>2]|0,1,0)|0;h=(c[n>>2]|0)+24|0;j=(c[n>>2]|0)+56|0;b=(c[n>>2]|0)+32|0;if(!(d[(c[n>>2]|0)+48>>0]|0)){l=(c[n>>2]|0)+40|0;k=c[l>>2]|0;l=c[l+4>>2]|0}else{k=0;l=0}c[q>>2]=Bl(m,g,C,c[(c[n>>2]|0)+16>>2]|0,c[h>>2]|0,c[h+4>>2]|0,c[j>>2]|0,c[j+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0,k,l,c[(c[p>>2]|0)+20>>2]|0,c[(c[p>>2]|0)+20+4>>2]|0)|0}Kd(c[(c[p>>2]|0)+20>>2]|0);Kd(c[(c[p>>2]|0)+8>>2]|0);c[c[o>>2]>>2]=c[q>>2];i=r;return}function mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;d=g+8|0;e=g+4|0;f=g;c[h>>2]=a;c[d>>2]=b;c[e>>2]=0;c[f>>2]=jl(c[h>>2]|0,23,e,0)|0;if(c[f>>2]|0){h=c[f>>2]|0;i=g;return h|0}Le(c[e>>2]|0,1,1)|0;Je(c[e>>2]|0,2,c[c[d>>2]>>2]|0,c[(c[d>>2]|0)+4>>2]|0,0)|0;ue(c[e>>2]|0)|0;c[f>>2]=Zd(c[e>>2]|0)|0;h=c[f>>2]|0;i=g;return h|0}function no(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[c[g>>2]>>2]|0){i=k;return}if((c[f>>2]|0)<=(c[(c[e>>2]|0)+8>>2]|0)){i=k;return}c[j>>2]=c[f>>2];c[h>>2]=Ld(c[c[e>>2]>>2]|0,c[j>>2]|0)|0;if(c[h>>2]|0){c[(c[e>>2]|0)+8>>2]=c[j>>2];c[c[e>>2]>>2]=c[h>>2];i=k;return}else{c[c[g>>2]>>2]=7;i=k;return}}function oo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+20|0;f=k;g=k+16|0;j=k+12|0;h=k+8|0;c[l>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=e;c[h>>2]=0;c[j>>2]=jl(c[l>>2]|0,30,h,0)|0;if(c[j>>2]|0){l=c[j>>2]|0;i=k;return l|0}l=f;Me(c[h>>2]|0,1,c[l>>2]|0,c[l+4>>2]|0)|0;Le(c[h>>2]|0,2,c[g>>2]|0)|0;ue(c[h>>2]|0)|0;c[j>>2]=Zd(c[h>>2]|0)|0;l=c[j>>2]|0;i=k;return l|0}function po(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+112|0;h=B+104|0;j=B+24|0;k=B+100|0;l=B+96|0;m=B+92|0;y=B+88|0;A=B+76|0;p=B+64|0;q=B+16|0;r=B+8|0;s=B;x=B+60|0;z=B+56|0;o=B+52|0;u=B+48|0;n=B+44|0;t=B+40|0;w=B+36|0;v=B+32|0;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[y>>2]=0;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;f=q;c[f>>2]=0;c[f+4>>2]=0;f=r;c[f>>2]=0;c[f+4>>2]=0;f=s;c[f>>2]=0;c[f+4>>2]=0;c[x>>2]=0;c[y>>2]=jl(c[h>>2]|0,32,x,0)|0;if(!(c[y>>2]|0)){f=j;Me(c[x>>2]|0,1,c[f>>2]|0,c[f+4>>2]|0)|0;Le(c[x>>2]|0,2,c[k>>2]|0)|0;if(100==(ue(c[x>>2]|0)|0)){c[o>>2]=Ae(c[x>>2]|0,4)|0;c[u>>2]=Be(c[x>>2]|0,4)|0;a=Ee(c[x>>2]|0,1)|0;f=s;c[f>>2]=a;c[f+4>>2]=C;c[y>>2]=ro(c[o>>2]|0,c[u>>2]|0,A,c[l>>2]|0,c[m>>2]|0,q)|0}c[z>>2]=Zd(c[x>>2]|0)|0;if(!(c[y>>2]|0))c[y>>2]=c[z>>2]}while(1){f=q;if(!((c[y>>2]|0)==0?(c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0:0))break;c[n>>2]=0;c[t>>2]=0;x=q;z=c[x+4>>2]|0;f=r;c[f>>2]=c[x>>2];c[f+4>>2]=z;f=q;c[y>>2]=am(c[h>>2]|0,c[f>>2]|0,c[f+4>>2]|0,n,t,0)|0;if(!(c[y>>2]|0))c[y>>2]=ro(c[n>>2]|0,c[t>>2]|0,p,c[l>>2]|0,c[m>>2]|0,q)|0;if(!(c[y>>2]|0)){f=r;c[y>>2]=zl(c[h>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0}Kd(c[n>>2]|0)}f=r;if((c[y>>2]|0)==0&((c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0)?(c[w>>2]=0,c[y>>2]=jl(c[h>>2]|0,17,w,0)|0,(c[y>>2]|0)==0):0){z=s;Me(c[w>>2]|0,1,c[z>>2]|0,c[z+4>>2]|0)|0;z=c[w>>2]|0;f=r;f=fR(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;Me(z,2,f,C)|0;ue(c[w>>2]|0)|0;c[y>>2]=Zd(c[w>>2]|0)|0}if(c[y>>2]|0){f=c[A>>2]|0;Kd(f);f=c[p>>2]|0;Kd(f);f=c[y>>2]|0;i=B;return f|0}c[v>>2]=0;c[y>>2]=jl(c[h>>2]|0,33,v,0)|0;if(c[y>>2]|0){f=c[A>>2]|0;Kd(f);f=c[p>>2]|0;Kd(f);f=c[y>>2]|0;i=B;return f|0}f=r;Me(c[v>>2]|0,1,c[f>>2]|0,c[f+4>>2]|0)|0;Je(c[v>>2]|0,2,c[A>>2]|0,c[A+4>>2]|0,0)|0;f=j;Me(c[v>>2]|0,3,c[f>>2]|0,c[f+4>>2]|0)|0;Le(c[v>>2]|0,4,c[k>>2]|0)|0;ue(c[v>>2]|0)|0;c[y>>2]=Zd(c[v>>2]|0)|0;f=c[A>>2]|0;Kd(f);f=c[p>>2]|0;Kd(f);f=c[y>>2]|0;i=B;return f|0}function qo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;f=s+44|0;g=s;p=s+40|0;h=s+36|0;m=s+32|0;l=s+28|0;k=s+24|0;n=s+20|0;o=s+16|0;q=s+12|0;j=s+8|0;c[f>>2]=b;b=g;c[b>>2]=d;c[b+4>>2]=e;c[h>>2]=0;c[m>>2]=0;c[l>>2]=0;c[n>>2]=0;c[o>>2]=0;c[p>>2]=jl(c[f>>2]|0,35,n,0)|0;if(!(c[p>>2]|0)){b=g;Me(c[n>>2]|0,1,c[b>>2]|0,c[b+4>>2]|0)|0;while(1){if(100!=(ue(c[n>>2]|0)|0))break;if((c[m>>2]|0)>=(c[l>>2]|0)){c[l>>2]=(c[l>>2]|0)+16;c[j>>2]=Ld(c[h>>2]|0,c[l>>2]<<2)|0;if(!(c[j>>2]|0)){r=6;break}c[h>>2]=c[j>>2]}e=De(c[n>>2]|0,0)|0;b=c[m>>2]|0;c[m>>2]=b+1;c[(c[h>>2]|0)+(b<<2)>>2]=e}if((r|0)==6)c[p>>2]=7;c[q>>2]=Zd(c[n>>2]|0)|0;if(!(c[p>>2]|0))c[p>>2]=c[q>>2]}if(!(c[p>>2]|0))c[p>>2]=jl(c[f>>2]|0,31,o,0)|0;if(!(c[p>>2]|0)){r=g;Me(c[o>>2]|0,2,c[r>>2]|0,c[r+4>>2]|0)|0}a[(c[f>>2]|0)+232>>0]=1;c[k>>2]=0;while(1){if(c[p>>2]|0){r=21;break}if((c[k>>2]|0)>=(c[m>>2]|0)){r=21;break}if((c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)!=(c[k>>2]|0)){Le(c[o>>2]|0,3,c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)|0;Le(c[o>>2]|0,1,c[k>>2]|0)|0;ue(c[o>>2]|0)|0;c[p>>2]=Zd(c[o>>2]|0)|0}c[k>>2]=(c[k>>2]|0)+1}if((r|0)==21){a[(c[f>>2]|0)+232>>0]=0;Kd(c[h>>2]|0);i=s;return c[p>>2]|0}return 0}function ro(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+112|0;j=w+96|0;k=w+92|0;l=w+88|0;m=w+84|0;n=w+80|0;o=w+76|0;p=w+72|0;t=w;r=w+60|0;s=w+56|0;q=w+52|0;u=w+48|0;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[r>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[s>>2]=0;c[q>>2]=(a[c[k>>2]>>0]|0)==0&1;no(c[m>>2]|0,c[l>>2]|0,s);if(c[s>>2]|0){c[j>>2]=c[s>>2];v=c[j>>2]|0;i=w;return v|0}c[(c[m>>2]|0)+4>>2]=0;c[s>>2]=so(t,c[k>>2]|0,c[l>>2]|0)|0;while(1){if(!((c[s>>2]|0)==0?(c[t>>2]|0)!=0:0))break;if(!(c[(c[m>>2]|0)+4>>2]|0)){c[u>>2]=to(c[t+24>>2]|0,c[t+24+4>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;if((c[u>>2]|0)>=0?!((c[q>>2]|0)==0&(c[u>>2]|0)==0):0){h=t+16|0;uo(c[m>>2]|0,a[c[k>>2]>>0]|0,c[h>>2]|0,c[h+4>>2]|0);h=t+16|0;f=c[h+4>>2]|0;v=c[p>>2]|0;c[v>>2]=c[h>>2];c[v+4>>2]=f;v=9}}else v=9;if((v|0)==9?(v=0,c[s>>2]=vo(c[m>>2]|0,r,c[t+24>>2]|0,c[t+24+4>>2]|0,c[t+36>>2]|0,c[t+40>>2]|0)|0,(c[s>>2]|0)!=0):0)break;c[s>>2]=wo(t)|0}if(!(c[(c[m>>2]|0)+4>>2]|0)){u=t+16|0;uo(c[m>>2]|0,a[c[k>>2]>>0]|0,c[u>>2]|0,c[u+4>>2]|0);u=t+16|0;f=c[u+4>>2]|0;v=c[p>>2]|0;c[v>>2]=c[u>>2];c[v+4>>2]=f}xo(t);Kd(c[r>>2]|0);c[j>>2]=c[s>>2];v=c[j>>2]|0;i=w;return v|0}function so(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;h=j+8|0;f=j+4|0;g=j;c[h>>2]=b;c[f>>2]=d;c[g>>2]=e;d=c[h>>2]|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[c[h>>2]>>2]=c[f>>2];c[(c[h>>2]|0)+4>>2]=c[g>>2];d=c[h>>2]|0;if(a[c[c[h>>2]>>2]>>0]|0){g=1+(Ul((c[d>>2]|0)+1|0,(c[h>>2]|0)+16|0)|0)|0;c[(c[h>>2]|0)+8>>2]=g;h=c[h>>2]|0;h=wo(h)|0;i=j;return h|0}else{c[d+8>>2]=1;h=c[h>>2]|0;h=wo(h)|0;i=j;return h|0}return 0}function to(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;m=j+20|0;f=j+16|0;l=j+12|0;g=j+8|0;k=j+4|0;h=j;c[m>>2]=a;c[f>>2]=b;c[l>>2]=d;c[g>>2]=e;c[k>>2]=(c[f>>2]|0)<(c[g>>2]|0)?c[f>>2]|0:c[g>>2]|0;c[h>>2]=vQ(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0)|0;if(c[h>>2]|0){m=c[h>>2]|0;i=j;return m|0}c[h>>2]=(c[f>>2]|0)-(c[g>>2]|0);m=c[h>>2]|0;i=j;return m|0}function uo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;j=i;i=i+16|0;g=j+12|0;k=j+8|0;h=j;c[g>>2]=b;c[k>>2]=d;b=h;c[b>>2]=e;c[b+4>>2]=f;a[c[c[g>>2]>>2]>>0]=c[k>>2];b=h;e=c[g>>2]|0;if((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0){k=h;k=1+(El((c[e>>2]|0)+1|0,c[k>>2]|0,c[k+4>>2]|0)|0)|0;c[(c[g>>2]|0)+4>>2]=k;i=j;return}else{c[e+4>>2]=1;i=j;return}}function vo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;h=t+40|0;j=t+36|0;k=t+32|0;l=t+28|0;m=t+24|0;n=t+20|0;o=t+16|0;s=t+12|0;p=t+8|0;q=t+4|0;r=t;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[s>>2]=0;c[p>>2]=(c[(c[k>>2]|0)+4>>2]|0)==0&1;no(c[k>>2]|0,c[m>>2]|0,s);if(c[s>>2]|0){c[h>>2]=c[s>>2];d=c[h>>2]|0;i=t;return d|0}c[q>>2]=Gl(c[c[k>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;c[r>>2]=(c[m>>2]|0)-(c[q>>2]|0);iR(c[c[k>>2]>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;c[(c[k>>2]|0)+4>>2]=c[m>>2];if(!(c[p>>2]|0)){s=c[q>>2]|0;s=El((c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0)|0,s,((s|0)<0)<<31>>31)|0;d=(c[j>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+s}s=c[r>>2]|0;s=El((c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0)|0,s,((s|0)<0)<<31>>31)|0;d=(c[j>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+s;iR((c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0)|0,(c[l>>2]|0)+(c[q>>2]|0)|0,c[r>>2]|0)|0;d=(c[j>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+(c[r>>2]|0);if(c[n>>2]|0){s=c[o>>2]|0;s=El((c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0)|0,s,((s|0)<0)<<31>>31)|0;d=(c[j>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+s;iR((c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0)|0,c[n>>2]|0,c[o>>2]|0)|0;d=(c[j>>2]|0)+4|0;c[d>>2]=(c[d>>2]|0)+(c[o>>2]|0)}c[h>>2]=0;d=c[h>>2]|0;i=t;return d|0}function wo(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;g=j+16|0;b=j+12|0;e=j+8|0;f=j+4|0;h=j;c[g>>2]=a;c[b>>2]=(c[(c[g>>2]|0)+24+4>>2]|0)==0&1;c[e>>2]=0;c[f>>2]=0;c[h>>2]=0;a=(c[g>>2]|0)+16|0;if(((c[a>>2]|0)!=0|(c[a+4>>2]|0)!=0)&(c[b>>2]|0)==0){a=(c[g>>2]|0)+16|0;k=a;k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;c[a>>2]=k;c[a+4>>2]=C}if((c[(c[g>>2]|0)+8>>2]|0)>=(c[(c[g>>2]|0)+4>>2]|0)){c[c[g>>2]>>2]=0;k=c[h>>2]|0;i=j;return k|0}if(!(c[b>>2]|0)){b=(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)|0;if((d[(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)>>0]|0)&128)b=Vl(b,e)|0;else{c[e>>2]=d[b>>0];b=1}k=(c[g>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+b}b=(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)|0;if((d[(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)>>0]|0)&128)b=Vl(b,f)|0;else{c[f>>2]=d[b>>0];b=1}k=(c[g>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+b;no((c[g>>2]|0)+24|0,(c[e>>2]|0)+(c[f>>2]|0)|0,h);if(c[h>>2]|0){k=c[h>>2]|0;i=j;return k|0}iR((c[(c[g>>2]|0)+24>>2]|0)+(c[e>>2]|0)|0,(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)|0,c[f>>2]|0)|0;c[(c[g>>2]|0)+24+4>>2]=(c[e>>2]|0)+(c[f>>2]|0);k=(c[g>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+(c[f>>2]|0);k=(c[g>>2]|0)+16|0;if(!((c[k>>2]|0)==0&(c[k+4>>2]|0)==0)){k=c[h>>2]|0;i=j;return k|0}b=(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)|0;if((d[(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0)>>0]|0)&128)b=Vl(b,(c[g>>2]|0)+40|0)|0;else{c[(c[g>>2]|0)+40>>2]=d[b>>0];b=1}k=(c[g>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+b;c[(c[g>>2]|0)+36>>2]=(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+8>>2]|0);k=(c[g>>2]|0)+8|0;c[k>>2]=(c[k>>2]|0)+(c[(c[g>>2]|0)+40>>2]|0);k=c[h>>2]|0;i=j;return k|0}function xo(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kd(c[(c[d>>2]|0)+24>>2]|0);i=b;return}function yo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+64|0;t=v+60|0;g=v+56|0;h=v+52|0;j=v+48|0;k=v+44|0;n=v+8|0;l=v+40|0;m=v;s=v+36|0;u=v+32|0;o=v+28|0;q=v+24|0;p=v+20|0;r=v+16|0;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;b=(c[h>>2]|0)+56|0;d=c[b+4>>2]|0;e=n;c[e>>2]=c[b>>2];c[e+4>>2]=d;c[l>>2]=1;while(1){if((c[l>>2]|0)>=16){g=16;break}e=m;c[e>>2]=0;c[e+4>>2]=0;c[s>>2]=(c[h>>2]|0)+56+(c[l>>2]<<5);c[u>>2]=0;c[o>>2]=Gl(c[(c[s>>2]|0)+8>>2]|0,c[(c[s>>2]|0)+8+4>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[q>>2]=(c[k>>2]|0)-(c[o>>2]|0);e=c[o>>2]|0;c[p>>2]=Dl(e,((e|0)<0)<<31>>31)|0;e=c[q>>2]|0;e=Dl(e,((e|0)<0)<<31>>31)|0;c[p>>2]=(c[p>>2]|0)+(e+(c[q>>2]|0));if((c[(c[s>>2]|0)+8+4>>2]|0)!=0?((c[(c[s>>2]|0)+20+4>>2]|0)+(c[p>>2]|0)|0)>(c[(c[g>>2]|0)+224>>2]|0):0){d=c[s>>2]|0;c[u>>2]=zl(c[g>>2]|0,c[d>>2]|0,c[d+4>>2]|0,c[(c[s>>2]|0)+20>>2]|0,c[(c[s>>2]|0)+20+4>>2]|0)|0;a[c[(c[s>>2]|0)+20>>2]>>0]=c[l>>2];d=(c[(c[s>>2]|0)+20>>2]|0)+1|0;b=n;b=gR(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;b=1+(El(d,b,C)|0)|0;c[(c[s>>2]|0)+20+4>>2]=b;b=c[s>>2]|0;d=c[b+4>>2]|0;e=m;c[e>>2]=c[b>>2];c[e+4>>2]=d;e=c[s>>2]|0;d=e;d=gR(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;c[e>>2]=d;c[e+4>>2]=C;c[(c[s>>2]|0)+8+4>>2]=0}else{c[r>>2]=(c[s>>2]|0)+20;if((c[(c[r>>2]|0)+4>>2]|0)==0?(no(c[r>>2]|0,c[(c[g>>2]|0)+224>>2]|0,u),(c[u>>2]|0)==0):0){a[c[c[r>>2]>>2]>>0]=c[l>>2];e=n;e=1+(El((c[c[r>>2]>>2]|0)+1|0,c[e>>2]|0,c[e+4>>2]|0)|0)|0;c[(c[r>>2]|0)+4>>2]=e}no(c[r>>2]|0,(c[(c[r>>2]|0)+4>>2]|0)+(c[p>>2]|0)|0,u);no((c[s>>2]|0)+8|0,c[k>>2]|0,u);if(!(c[u>>2]|0)){if(c[(c[s>>2]|0)+8+4>>2]|0){d=c[o>>2]|0;d=El((c[c[r>>2]>>2]|0)+(c[(c[r>>2]|0)+4>>2]|0)|0,d,((d|0)<0)<<31>>31)|0;e=(c[r>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+d}d=c[q>>2]|0;d=El((c[c[r>>2]>>2]|0)+(c[(c[r>>2]|0)+4>>2]|0)|0,d,((d|0)<0)<<31>>31)|0;e=(c[r>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+d;iR((c[c[r>>2]>>2]|0)+(c[(c[r>>2]|0)+4>>2]|0)|0,(c[j>>2]|0)+(c[o>>2]|0)|0,c[q>>2]|0)|0;e=(c[r>>2]|0)+4|0;c[e>>2]=(c[e>>2]|0)+(c[q>>2]|0);iR(c[(c[s>>2]|0)+8>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;c[(c[s>>2]|0)+8+4>>2]=c[k>>2]}}e=m;if((c[u>>2]|0)!=0|(c[e>>2]|0)==0&(c[e+4>>2]|0)==0){g=14;break}b=m;d=c[b+4>>2]|0;e=n;c[e>>2]=c[b>>2];c[e+4>>2]=d;c[l>>2]=(c[l>>2]|0)+1}if((g|0)==14){c[t>>2]=c[u>>2];u=c[t>>2]|0;i=v;return u|0}else if((g|0)==16){c[t>>2]=0;u=c[t>>2]|0;i=v;return u|0}return 0}function zo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+24|0;f=l;g=l+20|0;h=l+16|0;j=l+12|0;k=l+8|0;c[m>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=e;c[h>>2]=0;c[j>>2]=0;c[k>>2]=jl(c[m>>2]|0,34,j,0)|0;if(c[k>>2]|0){e=c[h>>2]|0;m=c[g>>2]|0;c[m>>2]=e;m=c[k>>2]|0;i=l;return m|0}m=f;Me(c[j>>2]|0,1,c[m>>2]|0,c[m+4>>2]|0)|0;if(100==(ue(c[j>>2]|0)|0))c[h>>2]=1;c[k>>2]=Zd(c[j>>2]|0)|0;e=c[h>>2]|0;m=c[g>>2]|0;c[m>>2]=e;m=c[k>>2]|0;i=l;return m|0}function Ao(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+64|0;u=t+48|0;g=t+44|0;h=t+40|0;j=t+36|0;q=t+32|0;s=t+28|0;o=t+24|0;l=t+20|0;k=t+16|0;p=t+12|0;m=t+8|0;r=t+4|0;n=t;c[u>>2]=b;c[g>>2]=d;c[h>>2]=e;c[j>>2]=f;c[q>>2]=c[u>>2];c[s>>2]=0;c[o>>2]=0;c[l>>2]=0;c[k>>2]=0;c[p>>2]=0;c[m>>2]=0;if(((c[g>>2]|0)>1?(fe(c[c[h>>2]>>2]|0)|0)==5:0)?(fe(c[(c[h>>2]|0)+((c[(c[q>>2]|0)+24>>2]|0)+2<<2)>>2]|0)|0)!=5:0){c[s>>2]=Bo(c[q>>2]|0,c[(c[h>>2]|0)+((c[(c[q>>2]|0)+24>>2]|0)+2<<2)>>2]|0)|0;u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}if((c[g>>2]|0)>1?(de(c[(c[h>>2]|0)+(2+(c[(c[q>>2]|0)+24>>2]|0)+2<<2)>>2]|0)|0)<0:0){c[s>>2]=19;u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}c[k>>2]=Id((c[(c[q>>2]|0)+24>>2]|0)+1<<2<<1)|0;if(!(c[k>>2]|0)){c[s>>2]=7;u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}c[l>>2]=(c[k>>2]|0)+((c[(c[q>>2]|0)+24>>2]|0)+1<<2);kR(c[k>>2]|0,0,(c[(c[q>>2]|0)+24>>2]|0)+1<<2<<1|0)|0;c[s>>2]=Co(c[q>>2]|0)|0;if(c[s>>2]|0){u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}do if((c[g>>2]|0)>1?(c[(c[q>>2]|0)+40>>2]|0)==0:0){c[r>>2]=c[(c[h>>2]|0)+(3+(c[(c[q>>2]|0)+24>>2]|0)<<2)>>2];if((fe(c[r>>2]|0)|0)==5)c[r>>2]=c[(c[h>>2]|0)+4>>2];if((fe(c[r>>2]|0)|0)!=5){if((fe(c[c[h>>2]>>2]|0)|0)!=5?(f=ee(c[c[h>>2]>>2]|0)|0, -u=C,b=ee(c[r>>2]|0)|0,!((f|0)!=(b|0)|(u|0)!=(C|0))):0)break;u=(gf(c[(c[q>>2]|0)+12>>2]|0)|0)==5;e=c[q>>2]|0;if(u){c[s>>2]=Do(e,c[r>>2]|0,p,c[k>>2]|0)|0;break}else{c[s>>2]=Eo(e,c[h>>2]|0,c[j>>2]|0)|0;c[m>>2]=1;break}}}while(0);if(c[s>>2]|0){u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}if((fe(c[c[h>>2]>>2]|0)|0)!=5){c[s>>2]=Do(c[q>>2]|0,c[c[h>>2]>>2]|0,p,c[k>>2]|0)|0;c[o>>2]=1}if((c[g>>2]|0)>1&(c[s>>2]|0)==0){c[n>>2]=de(c[(c[h>>2]|0)+(2+(c[(c[q>>2]|0)+24>>2]|0)+2<<2)>>2]|0)|0;if(((c[m>>2]|0)==0?(c[s>>2]=Eo(c[q>>2]|0,c[h>>2]|0,c[j>>2]|0)|0,(c[s>>2]|0)==19):0)?(c[(c[q>>2]|0)+40>>2]|0)==0:0)c[s>>2]=267;do if(!(c[s>>2]|0)){if((c[o>>2]|0)!=0?(r=c[j>>2]|0,u=(c[q>>2]|0)+264|0,!((c[r>>2]|0)!=(c[u>>2]|0)?1:(c[r+4>>2]|0)!=(c[u+4>>2]|0))):0)break;u=c[j>>2]|0;c[s>>2]=Fo(c[q>>2]|0,0,c[n>>2]|0,c[u>>2]|0,c[u+4>>2]|0)|0}while(0);if(!(c[s>>2]|0))c[s>>2]=Go(c[q>>2]|0,c[n>>2]|0,c[h>>2]|0,c[l>>2]|0)|0;if(a[(c[q>>2]|0)+230>>0]|0)Ho(s,c[q>>2]|0,c[l>>2]|0);c[p>>2]=(c[p>>2]|0)+1}if(!(a[(c[q>>2]|0)+228>>0]|0)){u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}Io(s,c[q>>2]|0,c[l>>2]|0,c[k>>2]|0,c[p>>2]|0);u=c[k>>2]|0;Kd(u);u=c[q>>2]|0;sm(u);u=c[s>>2]|0;i=t;return u|0}function Bo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;d=k+20|0;e=k+16|0;l=k+12|0;g=k+8|0;h=k+4|0;f=k;c[e>>2]=a;c[l>>2]=b;c[h>>2]=ae(c[l>>2]|0)|0;c[f>>2]=be(c[l>>2]|0)|0;if(!(c[h>>2]|0)){c[d>>2]=7;l=c[d>>2]|0;i=k;return l|0}if((c[f>>2]|0)==8?0==(zd(c[h>>2]|0,21373,8)|0):0)c[g>>2]=Nn(c[e>>2]|0,0)|0;else j=6;do if((j|0)==6){if((c[f>>2]|0)==7?0==(zd(c[h>>2]|0,24342,7)|0):0){c[g>>2]=So(c[e>>2]|0)|0;break}if((c[f>>2]|0)==15?0==(zd(c[h>>2]|0,24350,15)|0):0){c[g>>2]=To(c[e>>2]|0)|0;break}if((c[f>>2]|0)>6?0==(zd(c[h>>2]|0,24366,6)|0):0){c[g>>2]=Uo(c[e>>2]|0,(c[h>>2]|0)+6|0)|0;break}if((c[f>>2]|0)>10?0==(zd(c[h>>2]|0,24373,10)|0):0){c[g>>2]=Vo(c[e>>2]|0,(c[h>>2]|0)+10|0)|0;break}c[g>>2]=1}while(0);c[d>>2]=c[g>>2];l=c[d>>2]|0;i=k;return l|0}function Co(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;e=f+4|0;d=f;c[b>>2]=a;c[e>>2]=0;if((c[(c[b>>2]|0)+260>>2]|0)==0?(c[e>>2]=jl(c[b>>2]|0,16,d,0)|0,(c[e>>2]|0)==0):0){Ne(c[d>>2]|0,1)|0;ue(c[d>>2]|0)|0;c[e>>2]=Zd(c[d>>2]|0)|0}i=f;return c[e>>2]|0}function Do(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;g=n+24|0;h=n+20|0;j=n+16|0;k=n+12|0;m=n+8|0;o=n+4|0;l=n;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;c[o>>2]=0;No(m,c[g>>2]|0,c[h>>2]|0,c[k>>2]|0,o);if(!((c[o>>2]|0)!=0&(c[m>>2]|0)==0)){o=c[m>>2]|0;i=n;return o|0}c[l>>2]=0;c[m>>2]=Oo(c[g>>2]|0,c[h>>2]|0,l)|0;if(c[m>>2]|0){o=c[m>>2]|0;i=n;return o|0}if(c[l>>2]|0){c[m>>2]=Po(c[g>>2]|0,1)|0;c[c[j>>2]>>2]=0;kR(c[k>>2]|0,0,(c[(c[g>>2]|0)+24>>2]|0)+1<<2<<1|0)|0;o=c[m>>2]|0;i=n;return o|0}c[c[j>>2]>>2]=(c[c[j>>2]>>2]|0)-1;if(!(c[(c[g>>2]|0)+40>>2]|0))Qo(m,c[g>>2]|0,0,h);if(!(a[(c[g>>2]|0)+230>>0]|0)){o=c[m>>2]|0;i=n;return o|0}Qo(m,c[g>>2]|0,19,h);o=c[m>>2]|0;i=n;return o|0}function Eo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;g=m+16|0;h=m+12|0;l=m+8|0;j=m+4|0;k=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;b=c[f>>2]|0;if(c[(c[f>>2]|0)+40>>2]|0){c[k>>2]=c[(c[g>>2]|0)+((c[b+24>>2]|0)+3<<2)>>2];if((fe(c[k>>2]|0)|0)==5)c[k>>2]=c[(c[g>>2]|0)+4>>2];if((fe(c[k>>2]|0)|0)!=1){c[e>>2]=19;l=c[e>>2]|0;i=m;return l|0}else{k=ee(c[k>>2]|0)|0;l=c[h>>2]|0;c[l>>2]=k;c[l+4>>2]=C;c[e>>2]=0;l=c[e>>2]|0;i=m;return l|0}}c[l>>2]=jl(b,18,j,(c[g>>2]|0)+4|0)|0;if((c[l>>2]|0)==0?(c[(c[f>>2]|0)+44>>2]|0)!=0:0){d=c[j>>2]|0;k=(c[(c[f>>2]|0)+24>>2]|0)+2|0;c[l>>2]=Le(d,k,de(c[(c[g>>2]|0)+((c[(c[f>>2]|0)+24>>2]|0)+4<<2)>>2]|0)|0)|0}if(c[l>>2]|0){c[e>>2]=c[l>>2];l=c[e>>2]|0;i=m;return l|0}if(5!=(fe(c[(c[g>>2]|0)+(3+(c[(c[f>>2]|0)+24>>2]|0)<<2)>>2]|0)|0)){if(5==(fe(c[c[g>>2]>>2]|0)|0)?5!=(fe(c[(c[g>>2]|0)+4>>2]|0)|0):0){c[e>>2]=1;l=c[e>>2]|0;i=m;return l|0}c[l>>2]=Pe(c[j>>2]|0,1,c[(c[g>>2]|0)+(3+(c[(c[f>>2]|0)+24>>2]|0)<<2)>>2]|0)|0;if(c[l>>2]|0){c[e>>2]=c[l>>2];l=c[e>>2]|0;i=m;return l|0}}ue(c[j>>2]|0)|0;c[l>>2]=Zd(c[j>>2]|0)|0;j=of(c[(c[f>>2]|0)+12>>2]|0)|0;k=c[h>>2]|0;c[k>>2]=j;c[k+4>>2]=C;c[e>>2]=c[l>>2];l=c[e>>2]|0;i=m;return l|0}function Fo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o;m=o+8|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;d=l;c[d>>2]=e;c[d+4>>2]=f;d=l;f=c[d+4>>2]|0;a=(c[h>>2]|0)+264|0;b=c[a+4>>2]|0;do if(!((f|0)<(b|0)|((f|0)==(b|0)?(c[d>>2]|0)>>>0<(c[a>>2]|0)>>>0:0))){d=l;a=(c[h>>2]|0)+264|0;if(((c[d>>2]|0)==(c[a>>2]|0)?(c[d+4>>2]|0)==(c[a+4>>2]|0):0)?(c[(c[h>>2]|0)+276>>2]|0)==0:0){n=6;break}if(!((c[(c[h>>2]|0)+272>>2]|0)==(c[k>>2]|0)?(c[(c[h>>2]|0)+260>>2]|0)<=(c[(c[h>>2]|0)+256>>2]|0):0))n=6}else n=6;while(0);if((n|0)==6?(c[m>>2]=gl(c[h>>2]|0)|0,(c[m>>2]|0)!=0):0){c[g>>2]=c[m>>2];n=c[g>>2]|0;i=o;return n|0}a=l;m=c[a+4>>2]|0;n=(c[h>>2]|0)+264|0;c[n>>2]=c[a>>2];c[n+4>>2]=m;c[(c[h>>2]|0)+272>>2]=c[k>>2];c[(c[h>>2]|0)+276>>2]=c[j>>2];c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}function Go(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;o=q+32|0;g=q+28|0;h=q+24|0;j=q+20|0;k=q+16|0;l=q+12|0;m=q+8|0;n=q+4|0;p=q;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=2;while(1){if((c[l>>2]|0)>=((c[(c[g>>2]|0)+24>>2]|0)+2|0)){g=8;break}c[m>>2]=(c[l>>2]|0)-2;if(!(d[(c[(c[g>>2]|0)+32>>2]|0)+(c[m>>2]|0)>>0]|0)){c[n>>2]=ae(c[(c[j>>2]|0)+(c[l>>2]<<2)>>2]|0)|0;c[p>>2]=Lo(c[g>>2]|0,c[h>>2]|0,c[n>>2]|0,c[m>>2]|0,(c[k>>2]|0)+(c[m>>2]<<2)|0)|0;if(c[p>>2]|0){g=5;break}b=be(c[(c[j>>2]|0)+(c[l>>2]<<2)>>2]|0)|0;a=(c[k>>2]|0)+(c[(c[g>>2]|0)+24>>2]<<2)|0;c[a>>2]=(c[a>>2]|0)+b}c[l>>2]=(c[l>>2]|0)+1}if((g|0)==5){c[o>>2]=c[p>>2];p=c[o>>2]|0;i=q;return p|0}else if((g|0)==8){c[o>>2]=0;p=c[o>>2]|0;i=q;return p|0}return 0}function Ho(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;g=m+16|0;j=m+12|0;h=m+8|0;k=m+4|0;l=m;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[c[e>>2]>>2]|0){i=m;return}c[j>>2]=Id((c[(c[f>>2]|0)+24>>2]|0)*10|0)|0;if(!(c[j>>2]|0)){c[c[e>>2]>>2]=7;i=m;return}Ko(c[(c[f>>2]|0)+24>>2]|0,c[g>>2]|0,c[j>>2]|0,h);c[l>>2]=jl(c[f>>2]|0,20,k,0)|0;if(c[l>>2]|0){Kd(c[j>>2]|0);c[c[e>>2]>>2]=c[l>>2];i=m;return}else{l=(c[f>>2]|0)+264|0;Me(c[k>>2]|0,1,c[l>>2]|0,c[l+4>>2]|0)|0;Je(c[k>>2]|0,2,c[j>>2]|0,c[h>>2]|0,148)|0;ue(c[k>>2]|0)|0;l=Zd(c[k>>2]|0)|0;c[c[e>>2]>>2]=l;i=m;return}}function Io(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;g=u+48|0;h=u+44|0;j=u+40|0;k=u+36|0;l=u+32|0;q=u+28|0;o=u+24|0;m=u+20|0;r=u+16|0;n=u+12|0;s=u+8|0;p=u+4|0;t=u;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[p>>2]=(c[(c[h>>2]|0)+24>>2]|0)+2;if(c[c[g>>2]>>2]|0){i=u;return}c[m>>2]=Id((c[p>>2]|0)*14|0)|0;if(!(c[m>>2]|0)){c[c[g>>2]>>2]=7;i=u;return}c[q>>2]=(c[m>>2]|0)+(c[p>>2]<<2);c[s>>2]=jl(c[h>>2]|0,22,r,0)|0;if(c[s>>2]|0){Kd(c[m>>2]|0);c[c[g>>2]>>2]=c[s>>2];i=u;return}Le(c[r>>2]|0,1,0)|0;if((ue(c[r>>2]|0)|0)==100){f=c[p>>2]|0;b=c[m>>2]|0;a=Ae(c[r>>2]|0,0)|0;Jo(f,b,a,Be(c[r>>2]|0,0)|0)}else kR(c[m>>2]|0,0,c[p>>2]<<2|0)|0;c[s>>2]=Zd(c[r>>2]|0)|0;if(c[s>>2]|0){Kd(c[m>>2]|0);c[c[g>>2]>>2]=c[s>>2];i=u;return}if((c[l>>2]|0)<0?(c[c[m>>2]>>2]|0)>>>0<(0-(c[l>>2]|0)|0)>>>0:0)c[c[m>>2]>>2]=0;else{a=c[m>>2]|0;c[a>>2]=(c[a>>2]|0)+(c[l>>2]|0)}c[n>>2]=0;while(1){if((c[n>>2]|0)>=((c[(c[h>>2]|0)+24>>2]|0)+1|0))break;c[t>>2]=c[(c[m>>2]|0)+((c[n>>2]|0)+1<<2)>>2];if(((c[t>>2]|0)+(c[(c[j>>2]|0)+(c[n>>2]<<2)>>2]|0)|0)>>>0<(c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]|0)>>>0)c[t>>2]=0;else c[t>>2]=(c[t>>2]|0)+(c[(c[j>>2]|0)+(c[n>>2]<<2)>>2]|0)-(c[(c[k>>2]|0)+(c[n>>2]<<2)>>2]|0);c[(c[m>>2]|0)+((c[n>>2]|0)+1<<2)>>2]=c[t>>2];c[n>>2]=(c[n>>2]|0)+1}Ko(c[p>>2]|0,c[m>>2]|0,c[q>>2]|0,o);c[s>>2]=jl(c[h>>2]|0,23,r,0)|0;if(c[s>>2]|0){Kd(c[m>>2]|0);c[c[g>>2]>>2]=c[s>>2];i=u;return}else{Le(c[r>>2]|0,1,0)|0;Je(c[r>>2]|0,2,c[q>>2]|0,c[o>>2]|0,0)|0;ue(c[r>>2]|0)|0;t=Zd(c[r>>2]|0)|0;c[c[g>>2]>>2]=t;Kd(c[m>>2]|0);i=u;return}}function Jo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+28|0;g=m+24|0;h=m+20|0;j=m+12|0;k=m+8|0;l=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[m+16>>2]=e;c[k>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[f>>2]|0))break;d=Ul((c[h>>2]|0)+(c[k>>2]|0)|0,l)|0;c[k>>2]=(c[k>>2]|0)+d;c[(c[g>>2]|0)+(c[j>>2]<<2)>>2]=c[l>>2];c[j>>2]=(c[j>>2]|0)+1}i=m;return}function Ko(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[l>>2]=0;c[k>>2]=0;while(1){a=c[l>>2]|0;if((c[k>>2]|0)>=(c[f>>2]|0))break;d=El((c[h>>2]|0)+a|0,c[(c[g>>2]|0)+(c[k>>2]<<2)>>2]|0,0)|0;c[l>>2]=(c[l>>2]|0)+d;c[k>>2]=(c[k>>2]|0)+1}c[c[j>>2]>>2]=a;i=m;return}function Lo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+80|0;g=B+72|0;h=B+68|0;j=B+64|0;k=B+60|0;l=B+56|0;m=B+52|0;x=B+48|0;q=B+44|0;o=B+40|0;p=B+36|0;s=B+32|0;z=B+28|0;r=B+24|0;w=B+20|0;v=B+16|0;t=B+12|0;y=B+8|0;n=B+4|0;u=B;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[q>>2]=0;c[o>>2]=0;c[p>>2]=0;c[s>>2]=0;c[r>>2]=0;c[w>>2]=c[(c[h>>2]|0)+36>>2];c[v>>2]=c[c[w>>2]>>2];if(!(c[k>>2]|0)){c[c[m>>2]>>2]=0;c[g>>2]=0;A=c[g>>2]|0;i=B;return A|0}c[x>>2]=wn(c[w>>2]|0,c[j>>2]|0,c[k>>2]|0,-1,t)|0;if(c[x>>2]|0){c[g>>2]=c[x>>2];A=c[g>>2]|0;i=B;return A|0}c[y>>2]=c[(c[v>>2]|0)+20>>2];a:while(1){if(c[x>>2]|0)break;d=Sb[c[y>>2]&255](c[t>>2]|0,z,r,q,o,p)|0;c[x>>2]=d;if(d)break;if((c[p>>2]|0)>=(c[s>>2]|0))c[s>>2]=(c[p>>2]|0)+1;if((c[p>>2]|0)>=0&(c[z>>2]|0)!=0^1|(c[r>>2]|0)<=0){A=11;break}c[x>>2]=Mo(c[h>>2]|0,c[l>>2]|0,c[p>>2]|0,(c[(c[h>>2]|0)+252>>2]|0)+4|0,c[z>>2]|0,c[r>>2]|0)|0;c[n>>2]=1;while(1){if(c[x>>2]|0)continue a;if((c[n>>2]|0)>=(c[(c[h>>2]|0)+248>>2]|0))continue a;c[u>>2]=(c[(c[h>>2]|0)+252>>2]|0)+((c[n>>2]|0)*24|0);if((c[r>>2]|0)>=(c[c[u>>2]>>2]|0))c[x>>2]=Mo(c[h>>2]|0,c[l>>2]|0,c[p>>2]|0,(c[u>>2]|0)+4|0,c[z>>2]|0,c[c[u>>2]>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+1}}if((A|0)==11)c[x>>2]=1;Tb[c[(c[v>>2]|0)+16>>2]&255](c[t>>2]|0)|0;A=c[m>>2]|0;c[A>>2]=(c[A>>2]|0)+(c[s>>2]|0);c[g>>2]=(c[x>>2]|0)==101?0:c[x>>2]|0;A=c[g>>2]|0;i=B;return A|0}function Mo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;o=q+4|0;p=q;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[p>>2]=0;c[o>>2]=yk(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;if(c[o>>2]|0){f=(c[h>>2]|0)+260|0;c[f>>2]=(c[f>>2]|0)-((c[c[o>>2]>>2]|0)+(c[n>>2]|0)+20)}a=(c[h>>2]|0)+264|0;e=c[j>>2]|0;f=c[k>>2]|0;if((xn(o,c[a>>2]|0,c[a+4>>2]|0,e,((e|0)<0)<<31>>31,f,((f|0)<0)<<31>>31,p)|0)!=0?(f=c[o>>2]|0,(f|0)==(fk(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0)):0){Kd(c[o>>2]|0);c[p>>2]=7}if(c[p>>2]|0){f=c[p>>2]|0;i=q;return f|0}f=(c[h>>2]|0)+260|0;c[f>>2]=(c[f>>2]|0)+((c[c[o>>2]>>2]|0)+(c[n>>2]|0)+20);f=c[p>>2]|0;i=q;return f|0}function No(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;j=u+48|0;k=u+44|0;h=u+40|0;l=u+36|0;m=u+32|0;s=u+28|0;r=u+24|0;n=u+20|0;q=u+16|0;p=u;o=u+12|0;t=u+8|0;c[j>>2]=a;c[k>>2]=b;c[h>>2]=e;c[l>>2]=f;c[m>>2]=g;if(c[c[j>>2]>>2]|0){i=u;return}c[s>>2]=jl(c[k>>2]|0,7,r,h)|0;h=c[r>>2]|0;if(!(c[s>>2]|0)){do if(100==(ue(h)|0)){c[q>>2]=Ro(c[k>>2]|0,c[r>>2]|0)|0;e=Ee(c[r>>2]|0,0)|0;g=p;c[g>>2]=e;c[g+4>>2]=C;c[s>>2]=Fo(c[k>>2]|0,1,c[q>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0;c[n>>2]=1;while(1){if(c[s>>2]|0)break;if((c[n>>2]|0)>(c[(c[k>>2]|0)+24>>2]|0))break;c[o>>2]=(c[n>>2]|0)-1;if(!(d[(c[(c[k>>2]|0)+32>>2]|0)+(c[o>>2]|0)>>0]|0)){c[t>>2]=Fe(c[r>>2]|0,c[n>>2]|0)|0;c[s>>2]=Lo(c[k>>2]|0,c[q>>2]|0,c[t>>2]|0,-1,(c[l>>2]|0)+(c[o>>2]<<2)|0)|0;g=Be(c[r>>2]|0,c[n>>2]|0)|0;p=(c[l>>2]|0)+(c[(c[k>>2]|0)+24>>2]<<2)|0;c[p>>2]=(c[p>>2]|0)+g}c[n>>2]=(c[n>>2]|0)+1}if(!(c[s>>2]|0)){c[c[m>>2]>>2]=1;break}Zd(c[r>>2]|0)|0;c[c[j>>2]>>2]=c[s>>2];i=u;return}while(0);c[s>>2]=Zd(c[r>>2]|0)|0}else Zd(h)|0;c[c[j>>2]>>2]=c[s>>2];i=u;return}function Oo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[(c[e>>2]|0)+40>>2]|0){c[c[g>>2]>>2]=0;c[j>>2]=0;j=c[j>>2]|0;i=k;return j|0}c[j>>2]=jl(c[e>>2]|0,1,h,f)|0;if(c[j>>2]|0){j=c[j>>2]|0;i=k;return j|0}if(100==(ue(c[h>>2]|0)|0)){d=De(c[h>>2]|0,0)|0;c[c[g>>2]>>2]=d}c[j>>2]=Zd(c[h>>2]|0)|0;j=c[j>>2]|0;i=k;return j|0}function Po(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;h=g+4|0;f=g;c[e>>2]=b;c[h>>2]=d;c[f>>2]=0;dl(c[e>>2]|0);if(c[h>>2]|0)Qo(f,c[e>>2]|0,2,0);Qo(f,c[e>>2]|0,3,0);Qo(f,c[e>>2]|0,4,0);if(a[(c[e>>2]|0)+230>>0]|0)Qo(f,c[e>>2]|0,5,0);if(!(a[(c[e>>2]|0)+229>>0]|0)){h=c[f>>2]|0;i=g;return h|0}Qo(f,c[e>>2]|0,6,0);h=c[f>>2]|0;i=g;return h|0}function Qo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if(c[c[f>>2]>>2]|0){i=m;return}c[l>>2]=jl(c[g>>2]|0,c[h>>2]|0,k,c[j>>2]|0)|0;if(!(c[l>>2]|0)){ue(c[k>>2]|0)|0;c[l>>2]=Zd(c[k>>2]|0)|0}c[c[f>>2]>>2]=c[l>>2];i=m;return}function Ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;if(!(c[(c[d>>2]|0)+44>>2]|0)){b=c[f>>2]|0;i=g;return b|0}c[f>>2]=De(c[e>>2]|0,(c[(c[d>>2]|0)+24>>2]|0)+1|0)|0;b=c[f>>2]|0;i=g;return b|0}function So(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;f=t;h=t+52|0;q=t+48|0;j=t+44|0;l=t+40|0;k=t+36|0;p=t+32|0;o=t+28|0;g=t+24|0;e=t+20|0;m=t+16|0;n=t+12|0;s=t+8|0;r=t+4|0;c[h>>2]=b;c[q>>2]=Po(c[h>>2]|0,0)|0;if(c[q>>2]|0){s=c[q>>2]|0;i=t;return s|0}c[j>>2]=0;c[l>>2]=0;c[k>>2]=0;c[p>>2]=0;c[o>>2]=0;c[f>>2]=c[(c[h>>2]|0)+216>>2];c[g>>2]=Od(24461,f)|0;if(c[g>>2]|0){c[q>>2]=af(c[(c[h>>2]|0)+12>>2]|0,c[g>>2]|0,-1,p,0)|0;Kd(c[g>>2]|0)}else c[q>>2]=7;do if(!(c[q>>2]|0)){c[e>>2]=((c[(c[h>>2]|0)+24>>2]|0)+1<<2)*3;c[j>>2]=Id(c[e>>2]|0)|0;if(!(c[j>>2]|0)){c[q>>2]=7;break}else{kR(c[j>>2]|0,0,c[e>>2]|0)|0;c[l>>2]=(c[j>>2]|0)+((c[(c[h>>2]|0)+24>>2]|0)+1<<2);c[k>>2]=(c[l>>2]|0)+((c[(c[h>>2]|0)+24>>2]|0)+1<<2);break}}while(0);a:while(1){if(!(c[q>>2]|0))e=100==(ue(c[p>>2]|0)|0);else e=0;b=c[h>>2]|0;if(!e)break;c[n>>2]=Ro(b,c[p>>2]|0)|0;b=c[h>>2]|0;f=c[n>>2]|0;g=Ee(c[p>>2]|0,0)|0;c[q>>2]=Fo(b,0,f,g,C)|0;kR(c[j>>2]|0,0,(c[(c[h>>2]|0)+24>>2]|0)+1<<2|0)|0;c[m>>2]=0;while(1){if(c[q>>2]|0)break;if((c[m>>2]|0)>=(c[(c[h>>2]|0)+24>>2]|0))break;if(!(d[(c[(c[h>>2]|0)+32>>2]|0)+(c[m>>2]|0)>>0]|0)){c[s>>2]=Fe(c[p>>2]|0,(c[m>>2]|0)+1|0)|0;c[q>>2]=Lo(c[h>>2]|0,c[n>>2]|0,c[s>>2]|0,c[m>>2]|0,(c[j>>2]|0)+(c[m>>2]<<2)|0)|0;f=Be(c[p>>2]|0,(c[m>>2]|0)+1|0)|0;g=(c[j>>2]|0)+(c[(c[h>>2]|0)+24>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)+f}c[m>>2]=(c[m>>2]|0)+1}if(a[(c[h>>2]|0)+230>>0]|0)Ho(q,c[h>>2]|0,c[j>>2]|0);if(c[q>>2]|0){Yd(c[p>>2]|0)|0;c[p>>2]=0;continue}c[o>>2]=(c[o>>2]|0)+1;c[m>>2]=0;while(1){if((c[m>>2]|0)>(c[(c[h>>2]|0)+24>>2]|0))continue a;g=(c[l>>2]|0)+(c[m>>2]<<2)|0;c[g>>2]=(c[g>>2]|0)+(c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0);c[m>>2]=(c[m>>2]|0)+1}}if(a[b+228>>0]|0)Io(q,c[h>>2]|0,c[l>>2]|0,c[k>>2]|0,c[o>>2]|0);Kd(c[j>>2]|0);if(!(c[p>>2]|0)){s=c[q>>2]|0;i=t;return s|0}c[r>>2]=Yd(c[p>>2]|0)|0;if(c[q>>2]|0){s=c[q>>2]|0;i=t;return s|0}c[q>>2]=c[r>>2];s=c[q>>2]|0;i=t;return s|0}function To(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;b=d+4|0;e=d;c[f>>2]=a;c[e>>2]=0;a=Yo(c[f>>2]|0,e)|0;c[b>>2]=a;c[b>>2]=(c[b>>2]|0)==0&(c[e>>2]|0)==0?267:a;i=d;return c[b>>2]|0}function Uo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+20|0;l=k+16|0;h=k+12|0;g=k+8|0;f=k+4|0;j=k;c[e>>2]=b;c[l>>2]=d;c[g>>2]=8;c[f>>2]=0;c[j>>2]=c[l>>2];c[f>>2]=Wo(j)|0;if((a[c[j>>2]>>0]|0)==44?(a[(c[j>>2]|0)+1>>0]|0)!=0:0){c[j>>2]=(c[j>>2]|0)+1;c[g>>2]=Wo(j)|0}if((c[g>>2]|0)<2?1:(a[c[j>>2]>>0]|0)!=0){c[h>>2]=1;l=c[h>>2]|0;i=k;return l|0}c[h>>2]=0;if(!(a[(c[e>>2]|0)+229>>0]|0))Xo(h,c[e>>2]|0);if(!(c[h>>2]|0))c[h>>2]=$n(c[e>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;sm(c[e>>2]|0);l=c[h>>2]|0;i=k;return l|0}function Vo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+16|0;f=j+12|0;k=j+8|0;h=j+4|0;g=j;c[f>>2]=b;c[k>>2]=d;c[h>>2]=0;c[g>>2]=0;d=Wo(k)|0;c[(c[f>>2]|0)+48>>2]=d;if(!((c[(c[f>>2]|0)+48>>2]|0)!=1?(c[(c[f>>2]|0)+48>>2]|0)<=16:0))c[(c[f>>2]|0)+48>>2]=8;if((a[(c[f>>2]|0)+229>>0]|0)==0?(Xo(h,c[f>>2]|0),(c[h>>2]|0)!=0):0){c[e>>2]=c[h>>2];k=c[e>>2]|0;i=j;return k|0}c[h>>2]=jl(c[f>>2]|0,23,g,0)|0;if(c[h>>2]|0){c[e>>2]=c[h>>2];k=c[e>>2]|0;i=j;return k|0}else{Le(c[g>>2]|0,1,2)|0;Le(c[g>>2]|0,2,c[(c[f>>2]|0)+48>>2]|0)|0;ue(c[g>>2]|0)|0;c[h>>2]=Zd(c[g>>2]|0)|0;c[e>>2]=c[h>>2];k=c[e>>2]|0;i=j;return k|0}return 0}function Wo(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+8|0;f=g+4|0;e=g;c[d>>2]=b;c[f>>2]=c[c[d>>2]>>2];c[e>>2]=0;while(1){if((a[c[f>>2]>>0]|0)<48){b=5;break}if((a[c[f>>2]>>0]|0)>57){b=5;break}h=(c[e>>2]|0)*10|0;b=c[f>>2]|0;c[f>>2]=b+1;c[e>>2]=h+(a[b>>0]|0)-48}if((b|0)==5){c[c[d>>2]>>2]=c[f>>2];i=g;return c[e>>2]|0}return 0}function Xo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;h=f;g=f+12|0;e=f+8|0;c[g>>2]=b;c[e>>2]=d;d=c[g>>2]|0;b=c[(c[e>>2]|0)+12>>2]|0;j=c[(c[e>>2]|0)+20>>2]|0;c[h>>2]=c[(c[e>>2]|0)+16>>2];c[h+4>>2]=j;hl(d,b,24384,h);if(c[c[g>>2]>>2]|0){i=f;return}a[(c[e>>2]|0)+229>>0]=1;i=f;return}function Yo(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0;F=i;i=i+112|0;j=F+24|0;l=F+108|0;m=F+104|0;B=F+100|0;n=F+16|0;o=F+8|0;g=F+96|0;h=F+92|0;f=F+88|0;e=F+84|0;y=F+80|0;z=F+76|0;k=F+72|0;r=F;u=F+68|0;q=F+64|0;D=F+60|0;w=F+56|0;A=F+52|0;E=F+48|0;x=F+44|0;s=F+40|0;t=F+36|0;v=F+32|0;p=F+28|0;c[l>>2]=a;c[m>>2]=b;c[B>>2]=0;b=n;c[b>>2]=0;c[b+4>>2]=0;b=o;c[b>>2]=0;c[b+4>>2]=0;c[g>>2]=0;c[B>>2]=jl(c[l>>2]|0,27,g,0)|0;if(!(c[B>>2]|0)){Le(c[g>>2]|0,1,c[(c[l>>2]|0)+272>>2]|0)|0;Le(c[g>>2]|0,2,c[(c[l>>2]|0)+248>>2]|0)|0;a:while(1){if(!(c[B>>2]|0))a=(ue(c[g>>2]|0)|0)==100;else a=0;b=c[g>>2]|0;if(!a)break;c[f>>2]=De(b,0)|0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[l>>2]|0)+248>>2]|0))continue a;a=n;H=c[a>>2]|0;a=c[a+4>>2]|0;G=Zo(c[l>>2]|0,c[f>>2]|0,c[e>>2]|0,B)|0;b=n;c[b>>2]=H^G;c[b+4>>2]=a^C;c[e>>2]=(c[e>>2]|0)+1}}c[h>>2]=Zd(b)|0;if(!(c[B>>2]|0))c[B>>2]=c[h>>2]}if(c[B>>2]|0){E=n;D=E;D=c[D>>2]|0;E=E+4|0;E=c[E>>2]|0;G=o;H=G;H=c[H>>2]|0;G=G+4|0;G=c[G>>2]|0;H=(D|0)==(H|0);G=(E|0)==(G|0);G=H&G;G=G&1;H=c[m>>2]|0;c[H>>2]=G;H=c[B>>2]|0;i=F;return H|0}c[y>>2]=c[c[(c[l>>2]|0)+36>>2]>>2];c[z>>2]=0;c[j>>2]=c[(c[l>>2]|0)+216>>2];c[k>>2]=Od(24461,j)|0;if(c[k>>2]|0){c[B>>2]=af(c[(c[l>>2]|0)+12>>2]|0,c[k>>2]|0,-1,z,0)|0;Kd(c[k>>2]|0)}else c[B>>2]=7;b:while(1){if(!(c[B>>2]|0))a=100==(ue(c[z>>2]|0)|0);else a=0;b=c[z>>2]|0;if(!a)break;G=Ee(b,0)|0;H=r;c[H>>2]=G;c[H+4>>2]=C;c[u>>2]=Ro(c[l>>2]|0,c[z>>2]|0)|0;c[q>>2]=0;while(1){if(c[B>>2]|0)continue b;if((c[q>>2]|0)>=(c[(c[l>>2]|0)+24>>2]|0))continue b;if(!(d[(c[(c[l>>2]|0)+32>>2]|0)+(c[q>>2]|0)>>0]|0)){c[D>>2]=Fe(c[z>>2]|0,(c[q>>2]|0)+1|0)|0;c[w>>2]=Be(c[z>>2]|0,(c[q>>2]|0)+1|0)|0;c[A>>2]=0;c[B>>2]=wn(c[(c[l>>2]|0)+36>>2]|0,c[u>>2]|0,c[D>>2]|0,c[w>>2]|0,A)|0;c:while(1){if(c[B>>2]|0)break;c[x>>2]=0;c[s>>2]=0;c[t>>2]=0;c[v>>2]=0;c[B>>2]=Sb[c[(c[y>>2]|0)+20>>2]&255](c[A>>2]|0,E,x,s,t,v)|0;if(c[B>>2]|0)continue;G=o;j=c[G>>2]|0;G=c[G+4>>2]|0;k=r;k=_o(c[E>>2]|0,c[x>>2]|0,c[u>>2]|0,0,c[k>>2]|0,c[k+4>>2]|0,c[q>>2]|0,c[v>>2]|0)|0;H=o;c[H>>2]=j^k;c[H+4>>2]=G^C;c[p>>2]=1;while(1){if((c[p>>2]|0)>=(c[(c[l>>2]|0)+248>>2]|0))continue c;if((c[(c[(c[l>>2]|0)+252>>2]|0)+((c[p>>2]|0)*24|0)>>2]|0)<=(c[x>>2]|0)){G=o;j=c[G>>2]|0;G=c[G+4>>2]|0;k=r;k=_o(c[E>>2]|0,c[(c[(c[l>>2]|0)+252>>2]|0)+((c[p>>2]|0)*24|0)>>2]|0,c[u>>2]|0,c[p>>2]|0,c[k>>2]|0,c[k+4>>2]|0,c[q>>2]|0,c[v>>2]|0)|0;H=o;c[H>>2]=j^k;c[H+4>>2]=G^C}c[p>>2]=(c[p>>2]|0)+1}}if(c[A>>2]|0)Tb[c[(c[y>>2]|0)+16>>2]&255](c[A>>2]|0)|0;if((c[B>>2]|0)==101)c[B>>2]=0}c[q>>2]=(c[q>>2]|0)+1}}Yd(b)|0;E=n;D=E;D=c[D>>2]|0;E=E+4|0;E=c[E>>2]|0;G=o;H=G;H=c[H>>2]|0;G=G+4|0;G=c[G>>2]|0;H=(D|0)==(H|0);G=(E|0)==(G|0);G=H&G;G=G&1;H=c[m>>2]|0;c[H>>2]=G;H=c[B>>2]|0;i=F;return H|0}function Zo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+144|0;g=u+140|0;h=u+136|0;j=u+132|0;k=u+128|0;f=u+112|0;m=u+56|0;t=u+48|0;l=u+32|0;r=u+44|0;s=u+40|0;o=u+24|0;n=u+16|0;p=u+8|0;q=u;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;d=l;c[d>>2]=0;c[d+4>>2]=0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;d=m;b=d+56|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(b|0));c[f+12>>2]=3;e=f+12|0;c[e>>2]=c[e>>2]|16;c[t>>2]=kl(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,-2,0,0,0,1,m)|0;if(!(c[t>>2]|0))c[t>>2]=ol(c[g>>2]|0,m,f)|0;if(c[t>>2]|0){vl(m);t=c[t>>2]|0;s=c[k>>2]|0;c[s>>2]=t;s=l;t=s;t=c[t>>2]|0;s=s+4|0;s=c[s>>2]|0;C=s;i=u;return t|0}a:while(1){f=pl(c[g>>2]|0,m)|0;c[t>>2]=f;if(100!=(f|0))break;c[r>>2]=c[m+48>>2];c[s>>2]=(c[r>>2]|0)+(c[m+52>>2]|0);f=o;c[f>>2]=0;c[f+4>>2]=0;f=n;c[f>>2]=0;c[f+4>>2]=0;f=p;c[f>>2]=0;c[f+4>>2]=0;f=Ul(c[r>>2]|0,o)|0;c[r>>2]=(c[r>>2]|0)+f;while(1){if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0)continue a;f=q;c[f>>2]=0;c[f+4>>2]=0;f=Ul(c[r>>2]|0,q)|0;c[r>>2]=(c[r>>2]|0)+f;if((c[r>>2]|0)>>>0>=(c[s>>2]|0)>>>0)continue;e=q;f=q;if(!((c[e>>2]|0)==0&(c[e+4>>2]|0)==0|(c[f>>2]|0)==1&(c[f+4>>2]|0)==0)){b=q;b=fR(c[b>>2]|0,c[b+4>>2]|0,2,0)|0;e=p;b=gR(c[e>>2]|0,c[e+4>>2]|0,b|0,C|0)|0;e=p;c[e>>2]=b;c[e+4>>2]=C;e=l;b=c[e>>2]|0;e=c[e+4>>2]|0;a=o;a=_o(c[m+40>>2]|0,c[m+44>>2]|0,c[h>>2]|0,c[j>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[n>>2]|0,c[p>>2]|0)|0;f=l;c[f>>2]=b^a;c[f+4>>2]=e^C;continue}f=n;c[f>>2]=0;c[f+4>>2]=0;f=p;c[f>>2]=0;c[f+4>>2]=0;f=q;d=c[r>>2]|0;if((c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0){f=Ul(d,n)|0;c[r>>2]=(c[r>>2]|0)+f;continue}else{e=Ul(d,q)|0;c[r>>2]=(c[r>>2]|0)+e;e=q;f=o;e=gR(c[f>>2]|0,c[f+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;f=o;c[f>>2]=e;c[f+4>>2]=C;continue}}}vl(m);t=c[t>>2]|0;s=c[k>>2]|0;c[s>>2]=t;s=l;t=s;t=c[t>>2]|0;s=s+4|0;s=c[s>>2]|0;C=s;i=u;return t|0}function _o(b,d,e,f,g,h,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;p=i;i=i+48|0;l=p+40|0;m=p+36|0;t=p+32|0;s=p+28|0;u=p+8|0;r=p+24|0;q=p+20|0;n=p+16|0;o=p;c[l>>2]=b;c[m>>2]=d;c[t>>2]=e;c[s>>2]=f;d=u;c[d>>2]=g;c[d+4>>2]=h;c[r>>2]=j;c[q>>2]=k;k=u;d=c[k+4>>2]|0;b=o;c[b>>2]=c[k>>2];c[b+4>>2]=d;b=o;b=lR(c[b>>2]|0,c[b+4>>2]|0,3)|0;d=c[t>>2]|0;d=gR(b|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;b=o;d=gR(c[b>>2]|0,c[b+4>>2]|0,d|0,C|0)|0;b=o;c[b>>2]=d;c[b+4>>2]=C;b=o;b=lR(c[b>>2]|0,c[b+4>>2]|0,3)|0;d=c[s>>2]|0;d=gR(b|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;b=o;d=gR(c[b>>2]|0,c[b+4>>2]|0,d|0,C|0)|0;b=o;c[b>>2]=d;c[b+4>>2]=C;b=o;b=lR(c[b>>2]|0,c[b+4>>2]|0,3)|0;d=c[r>>2]|0;d=gR(b|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;b=o;d=gR(c[b>>2]|0,c[b+4>>2]|0,d|0,C|0)|0;b=o;c[b>>2]=d;c[b+4>>2]=C;b=o;b=lR(c[b>>2]|0,c[b+4>>2]|0,3)|0;d=c[q>>2]|0;d=gR(b|0,C|0,d|0,((d|0)<0)<<31>>31|0)|0;b=o;d=gR(c[b>>2]|0,c[b+4>>2]|0,d|0,C|0)|0;b=o;c[b>>2]=d;c[b+4>>2]=C;c[n>>2]=0;while(1){h=o;g=c[h>>2]|0;h=c[h+4>>2]|0;if((c[n>>2]|0)>=(c[m>>2]|0))break;u=lR(g|0,h|0,3)|0;t=a[(c[l>>2]|0)+(c[n>>2]|0)>>0]|0;t=gR(u|0,C|0,t|0,((t|0)<0)<<31>>31|0)|0;u=o;t=gR(c[u>>2]|0,c[u+4>>2]|0,t|0,C|0)|0;u=o;c[u>>2]=t;c[u+4>>2]=C;c[n>>2]=(c[n>>2]|0)+1}C=h;i=p;return g|0}function $o(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;e=h+8|0;g=h+4|0;f=h;c[e>>2]=b;c[g>>2]=0;c[f>>2]=c[(c[e>>2]|0)+12>>2];a:do if(!(c[f>>2]|0))a[(c[e>>2]|0)+6>>0]=1;else do{if(!(d[(c[e>>2]|0)+7>>0]|0))Zd(c[(c[e>>2]|0)+8>>2]|0)|0;Nm(c[e>>2]|0,c[f>>2]|0,g);a[(c[e>>2]|0)+6>>0]=a[(c[f>>2]|0)+32>>0]|0;a[(c[e>>2]|0)+7>>0]=1;c[(c[e>>2]|0)+88>>2]=1;k=(c[f>>2]|0)+24|0;j=c[k+4>>2]|0;b=(c[e>>2]|0)+32|0;c[b>>2]=c[k>>2];c[b+4>>2]=j;if(d[(c[e>>2]|0)+6>>0]|0)break a}while((Im(c[e>>2]|0,g)|0)!=0);while(0);if(c[g>>2]|0){k=c[g>>2]|0;i=h;return k|0}if(!((d[(c[e>>2]|0)+52>>0]|0|0)==0?(j=(c[e>>2]|0)+32|0,b=c[j+4>>2]|0,k=(c[e>>2]|0)+80|0,f=c[k+4>>2]|0,(b|0)>(f|0)|((b|0)==(f|0)?(c[j>>2]|0)>>>0>(c[k>>2]|0)>>>0:0)):0)){if(!(d[(c[e>>2]|0)+52>>0]|0)){k=c[g>>2]|0;i=h;return k|0}j=(c[e>>2]|0)+32|0;b=c[j+4>>2]|0;k=(c[e>>2]|0)+72|0;f=c[k+4>>2]|0;if(!((b|0)<(f|0)|((b|0)==(f|0)?(c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0:0))){k=c[g>>2]|0;i=h;return k|0}}a[(c[e>>2]|0)+6>>0]=1;k=c[g>>2]|0;i=h;return k|0}function ap(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;f=e+8|0;b=e+4|0;d=e;c[f>>2]=a;c[b>>2]=c[f>>2];while(1){if(!(c[b>>2]|0))break;if((c[(c[b>>2]|0)+12>>2]|0)==0?(c[(c[b>>2]|0)+16>>2]|0)==0:0)break;a=c[b>>2]|0;if(c[(c[b>>2]|0)+12>>2]|0)a=c[a+12>>2]|0;else a=c[a+16>>2]|0;c[b>>2]=a}a:while(1){if(!(c[b>>2]|0))break;c[d>>2]=c[(c[b>>2]|0)+8>>2];Ap(c[b>>2]|0);if(((c[d>>2]|0)!=0?(c[b>>2]|0)==(c[(c[d>>2]|0)+12>>2]|0):0)?(c[(c[d>>2]|0)+16>>2]|0)!=0:0){c[b>>2]=c[(c[d>>2]|0)+16>>2];while(1){if(!(c[b>>2]|0))continue a;if((c[(c[b>>2]|0)+12>>2]|0)==0?(c[(c[b>>2]|0)+16>>2]|0)==0:0)continue a;a=c[b>>2]|0;if(c[(c[b>>2]|0)+12>>2]|0)a=c[a+12>>2]|0;else a=c[a+16>>2]|0;c[b>>2]=a}}c[b>>2]=c[d>>2]}i=e;return}function bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;e=j+8|0;f=j+20|0;g=j;h=j+16|0;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;if((c[f>>2]|0)!=0?(c[h>>2]=Te(c[f>>2]|0)|0,(c[h>>2]|0)==1):0){a=ee(c[f>>2]|0)|0;h=e;c[h>>2]=a;c[h+4>>2]=C;h=e;a=h;a=c[a>>2]|0;h=h+4|0;h=c[h>>2]|0;C=h;i=j;return a|0}a=c[g+4>>2]|0;h=e;c[h>>2]=c[g>>2];c[h+4>>2]=a;h=e;a=h;a=c[a>>2]|0;h=h+4|0;h=c[h>>2]|0;C=h;i=j;return a|0}function cp(a,b,d,e,f,g,h,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;s=i;i=i+64|0;r=s+8|0;q=s;z=s+52|0;y=s+48|0;x=s+44|0;w=s+40|0;v=s+36|0;u=s+32|0;m=s+28|0;t=s+24|0;n=s+20|0;o=s+16|0;p=s+12|0;c[z>>2]=a;c[y>>2]=b;c[x>>2]=d;c[w>>2]=e;c[v>>2]=f;c[u>>2]=g;c[m>>2]=h;c[t>>2]=j;c[n>>2]=k;c[o>>2]=l;c[p>>2]=op(c[z>>2]|0,c[y>>2]|0,c[x>>2]|0,c[w>>2]|0,c[v>>2]|0,c[u>>2]|0,c[m>>2]|0,c[t>>2]|0,c[n>>2]|0)|0;if(((c[p>>2]|0)==0?(c[c[n>>2]>>2]|0)!=0:0)?(c[p>>2]=pp(c[n>>2]|0,12)|0,(c[p>>2]|0)==0):0)c[p>>2]=qp(c[c[n>>2]>>2]|0,12)|0;if(!(c[p>>2]|0)){z=c[p>>2]|0;i=s;return z|0}ap(c[c[n>>2]>>2]|0);c[c[n>>2]>>2]=0;if((c[p>>2]|0)==18){z=c[o>>2]|0;c[q>>2]=12;zk(z,24570,q);c[p>>2]=1;z=c[p>>2]|0;i=s;return z|0}if((c[p>>2]|0)!=1){z=c[p>>2]|0;i=s;return z|0}z=c[o>>2]|0;c[r>>2]=c[m>>2];zk(z,24622,r);z=c[p>>2]|0;i=s;return z|0}function dp(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+48|0;b=n+36|0;o=n+32|0;m=n+28|0;j=n+24|0;h=n+20|0;e=n+16|0;f=n+12|0;g=n+8|0;k=n+4|0;l=n;c[b>>2]=a;c[o>>2]=c[c[b>>2]>>2];c[m>>2]=0;c[j>>2]=0;c[h>>2]=0;ep(c[b>>2]|0,c[(c[b>>2]|0)+12>>2]|0,j,h,m);do if((c[m>>2]|0)==0&(c[j>>2]|0)>1?(d[(c[o>>2]|0)+228>>0]|0|0)!=0:0){c[e>>2]=Id(((c[j>>2]|0)*24|0)+(c[h>>2]<<2<<1)|0)|0;c[f>>2]=(c[e>>2]|0)+((c[j>>2]|0)*24|0);if(!(c[e>>2]|0)){c[m>>2]=7;break}c[k>>2]=c[e>>2];c[l>>2]=c[f>>2];fp(c[b>>2]|0,0,c[(c[b>>2]|0)+12>>2]|0,k,l,m);c[j>>2]=((c[k>>2]|0)-(c[e>>2]|0)|0)/24|0;c[h>>2]=((c[l>>2]|0)-(c[f>>2]|0)|0)/4|0;a:do if(!(c[m>>2]|0)){c[m>>2]=gp(c[b>>2]|0,0,c[e>>2]|0,c[j>>2]|0)|0;c[g>>2]=0;while(1){if(c[m>>2]|0)break a;if((c[g>>2]|0)>=(c[h>>2]|0))break a;c[m>>2]=gp(c[b>>2]|0,c[(c[f>>2]|0)+(c[g>>2]<<2)>>2]|0,c[e>>2]|0,c[j>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+1}}while(0);Kd(c[e>>2]|0)}while(0);hp(c[b>>2]|0,c[(c[b>>2]|0)+12>>2]|0,m);i=n;return c[m>>2]|0}function ep(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+32|0;n=q+28|0;h=q+24|0;j=q+20|0;o=q+16|0;k=q+12|0;l=q+8|0;m=q+4|0;p=q;c[g>>2]=a;c[n>>2]=b;c[h>>2]=d;c[j>>2]=e;c[o>>2]=f;if(!(c[n>>2]|0)){i=q;return}if(c[c[o>>2]>>2]|0){i=q;return}a=c[n>>2]|0;if((c[c[n>>2]>>2]|0)!=5){p=c[j>>2]|0;c[p>>2]=(c[p>>2]|0)+((c[a>>2]|0)==4&1);ep(c[g>>2]|0,c[(c[n>>2]|0)+12>>2]|0,c[h>>2]|0,c[j>>2]|0,c[o>>2]|0);ep(c[g>>2]|0,c[(c[n>>2]|0)+16>>2]|0,c[h>>2]|0,c[j>>2]|0,c[o>>2]|0);i=q;return}c[l>>2]=c[(c[a+20>>2]|0)+64>>2];j=c[h>>2]|0;c[j>>2]=(c[j>>2]|0)+(c[l>>2]|0);c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[l>>2]|0)){a=9;break}c[m>>2]=(c[(c[n>>2]|0)+20>>2]|0)+72+((c[k>>2]|0)*24|0);c[p>>2]=mp(c[g>>2]|0,c[c[m>>2]>>2]|0,c[(c[m>>2]|0)+4>>2]|0,c[(c[m>>2]|0)+8>>2]|0,(c[m>>2]|0)+20|0)|0;if(c[p>>2]|0){a=7;break}c[k>>2]=(c[k>>2]|0)+1}if((a|0)==7){c[c[o>>2]>>2]=c[p>>2];i=q;return}else if((a|0)==9){c[(c[(c[n>>2]|0)+20>>2]|0)+44>>2]=-1;i=q;return}}function fp(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;l=r+32|0;m=r+28|0;n=r+24|0;o=r+20|0;p=r+16|0;q=r+12|0;j=r+8|0;h=r+4|0;k=r;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;if(c[c[q>>2]>>2]|0){i=r;return}d=c[n>>2]|0;if((c[c[n>>2]>>2]|0)==5){c[j>>2]=c[d+20>>2];c[h>>2]=0;while(1){if(c[c[q>>2]>>2]|0){a=13;break}if((c[h>>2]|0)>=(c[(c[j>>2]|0)+64>>2]|0)){a=13;break}n=c[o>>2]|0;p=c[n>>2]|0;c[n>>2]=p+24;c[k>>2]=p;c[c[k>>2]>>2]=c[j>>2];c[(c[k>>2]|0)+4>>2]=c[h>>2];c[(c[k>>2]|0)+12>>2]=c[m>>2];c[(c[k>>2]|0)+8>>2]=(c[j>>2]|0)+72+((c[h>>2]|0)*24|0);c[(c[k>>2]|0)+20>>2]=c[(c[j>>2]|0)+68>>2];p=lp(c[l>>2]|0,c[(c[(c[k>>2]|0)+8>>2]|0)+20>>2]|0,(c[k>>2]|0)+16|0)|0;c[c[q>>2]>>2]=p;c[h>>2]=(c[h>>2]|0)+1}if((a|0)==13){i=r;return}}if((c[d>>2]|0)==2){i=r;return}if((c[c[n>>2]>>2]|0)==4){c[m>>2]=c[(c[n>>2]|0)+12>>2];c[c[c[p>>2]>>2]>>2]=c[m>>2];k=c[p>>2]|0;c[k>>2]=(c[k>>2]|0)+4}fp(c[l>>2]|0,c[m>>2]|0,c[(c[n>>2]|0)+12>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0);if((c[c[n>>2]>>2]|0)==4){c[m>>2]=c[(c[n>>2]|0)+16>>2];c[c[c[p>>2]>>2]>>2]=c[m>>2];k=c[p>>2]|0;c[k>>2]=(c[k>>2]|0)+4}fp(c[l>>2]|0,c[m>>2]|0,c[(c[n>>2]|0)+16>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0);i=r;return}function gp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+80|0;f=B+76|0;g=B+72|0;h=B+68|0;j=B+64|0;k=B+60|0;w=B+56|0;o=B+52|0;z=B+48|0;m=B+44|0;s=B+40|0;t=B+36|0;r=B+32|0;q=B+28|0;l=B+24|0;v=B+20|0;x=B+16|0;y=B+12|0;p=B+8|0;u=B+4|0;n=B;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[w>>2]=c[c[g>>2]>>2];c[o>>2]=0;c[z>>2]=0;c[s>>2]=0;c[t>>2]=0;c[r>>2]=0;c[q>>2]=1;if(c[(c[w>>2]|0)+40>>2]|0){c[f>>2]=0;A=c[f>>2]|0;i=B;return A|0}c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[k>>2]|0))break;if((c[(c[j>>2]|0)+((c[m>>2]|0)*24|0)+12>>2]|0)==(c[h>>2]|0)){c[s>>2]=(c[s>>2]|0)+(c[(c[j>>2]|0)+((c[m>>2]|0)*24|0)+16>>2]|0);c[t>>2]=(c[t>>2]|0)+1}c[m>>2]=(c[m>>2]|0)+1}if((c[s>>2]|0)==0|(c[t>>2]|0)<2){c[f>>2]=0;A=c[f>>2]|0;i=B;return A|0}c[z>>2]=ip(c[g>>2]|0,o)|0;c[m>>2]=0;while(1){if(!((c[m>>2]|0)<(c[t>>2]|0)?(c[z>>2]|0)==0:0))break;c[v>>2]=0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[k>>2]|0))break;do if((c[(c[j>>2]|0)+((c[l>>2]|0)*24|0)+8>>2]|0)!=0?(c[(c[j>>2]|0)+((c[l>>2]|0)*24|0)+12>>2]|0)==(c[h>>2]|0):0){if((c[v>>2]|0)!=0?(c[(c[j>>2]|0)+((c[l>>2]|0)*24|0)+16>>2]|0)>=(c[(c[v>>2]|0)+16>>2]|0):0)break;c[v>>2]=(c[j>>2]|0)+((c[l>>2]|0)*24|0)}while(0);c[l>>2]=(c[l>>2]|0)+1}if((c[m>>2]|0)!=0?(c[(c[v>>2]|0)+16>>2]|0)>=(_(((c[r>>2]|0)+((c[q>>2]|0)/4|0)-1|0)/((c[q>>2]|0)/4|0|0)|0,c[o>>2]|0)|0):0){c[x>>2]=c[(c[v>>2]|0)+8>>2];c[z>>2]=jp(c[g>>2]|0,c[x>>2]|0,c[(c[v>>2]|0)+20>>2]|0)|0;hn(c[(c[x>>2]|0)+20>>2]|0);c[(c[x>>2]|0)+20>>2]=0}else A=23;do if((A|0)==23){A=0;if((c[m>>2]|0)<12)c[q>>2]=c[q>>2]<<2;if(c[m>>2]|0){if((c[(c[c[v>>2]>>2]|0)+64>>2]|0)<=1)break;if((c[m>>2]|0)==((c[t>>2]|0)-1|0))break}c[y>>2]=c[(c[v>>2]|0)+8>>2];c[p>>2]=0;c[u>>2]=0;c[z>>2]=an(c[w>>2]|0,c[y>>2]|0,c[(c[v>>2]|0)+20>>2]|0,p,u)|0;if(!(c[z>>2]|0))c[z>>2]=bn(c[w>>2]|0,c[c[v>>2]>>2]|0,c[(c[v>>2]|0)+4>>2]|0,c[u>>2]|0,c[p>>2]|0)|0;if(!(c[z>>2]|0)){c[n>>2]=kp(c[c[c[v>>2]>>2]>>2]|0,c[(c[c[v>>2]>>2]|0)+4>>2]|0)|0;if((c[m>>2]|0)!=0?(c[n>>2]|0)>=(c[r>>2]|0):0)break;c[r>>2]=c[n>>2]}}while(0);c[(c[v>>2]|0)+8>>2]=0;c[m>>2]=(c[m>>2]|0)+1}c[f>>2]=c[z>>2];A=c[f>>2]|0;i=B;return A|0}function hp(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;l=m+12|0;h=m+8|0;k=m+4|0;j=m;c[g>>2]=b;c[l>>2]=e;c[h>>2]=f;if(!(c[l>>2]|0)){i=m;return}if(c[c[h>>2]>>2]|0){i=m;return}if((c[c[l>>2]>>2]|0)!=5){hp(c[g>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[h>>2]|0);hp(c[g>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[h>>2]|0);if(d[(c[(c[l>>2]|0)+12>>2]|0)+34>>0]|0)g=(d[(c[(c[l>>2]|0)+16>>2]|0)+34>>0]|0|0)!=0;else g=0;a[(c[l>>2]|0)+34>>0]=g&1;i=m;return}c[k>>2]=c[(c[(c[l>>2]|0)+20>>2]|0)+64>>2];if(c[k>>2]|0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[k>>2]|0))break;if(!(c[(c[(c[l>>2]|0)+20>>2]|0)+72+((c[j>>2]|0)*24|0)+16>>2]|0))break;c[j>>2]=(c[j>>2]|0)+1}a[(c[l>>2]|0)+34>>0]=(c[j>>2]|0)==(c[k>>2]|0)}l=Zm(c[g>>2]|0,1,c[(c[l>>2]|0)+20>>2]|0)|0;c[c[h>>2]>>2]=l;i=m;return}function ip(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0; -o=i;i=i+48|0;d=o+44|0;e=o+40|0;f=o+36|0;n=o+32|0;k=o+28|0;m=o+24|0;j=o+8|0;h=o;l=o+20|0;g=o+16|0;c[e>>2]=a;c[f>>2]=b;if(!(c[(c[e>>2]|0)+60>>2]|0)){c[k>>2]=c[c[e>>2]>>2];b=j;c[b>>2]=0;c[b+4>>2]=0;b=h;c[b>>2]=0;c[b+4>>2]=0;c[n>>2]=Jn(c[k>>2]|0,m)|0;if(c[n>>2]|0){c[d>>2]=c[n>>2];n=c[d>>2]|0;i=o;return n|0}c[g>>2]=Ae(c[m>>2]|0,0)|0;b=Be(c[m>>2]|0,0)|0;c[l>>2]=(c[g>>2]|0)+b;b=Ul(c[g>>2]|0,j)|0;c[g>>2]=(c[g>>2]|0)+b;while(1){if((c[g>>2]|0)>>>0>=(c[l>>2]|0)>>>0)break;b=Ul(c[g>>2]|0,h)|0;c[g>>2]=(c[g>>2]|0)+b}l=j;b=h;if((c[l>>2]|0)==0&(c[l+4>>2]|0)==0|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0){Zd(c[m>>2]|0)|0;c[d>>2]=267;n=c[d>>2]|0;i=o;return n|0}a=j;b=c[a+4>>2]|0;l=(c[e>>2]|0)+64|0;c[l>>2]=c[a>>2];c[l+4>>2]=b;l=h;b=j;b=pR(c[l>>2]|0,c[l+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;l=c[(c[k>>2]|0)+236>>2]|0;l=gR(b|0,C|0,l|0,((l|0)<0)<<31>>31|0)|0;b=c[(c[k>>2]|0)+236>>2]|0;b=pR(l|0,C|0,b|0,((b|0)<0)<<31>>31|0)|0;c[(c[e>>2]|0)+60>>2]=b;c[n>>2]=Zd(c[m>>2]|0)|0;if(c[n>>2]|0){c[d>>2]=c[n>>2];n=c[d>>2]|0;i=o;return n|0}}c[c[f>>2]>>2]=c[(c[e>>2]|0)+60>>2];c[d>>2]=0;n=c[d>>2]|0;i=o;return n|0}function jp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=Id(16)|0;if(c[j>>2]|0){b=c[j>>2]|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[c[j>>2]>>2]=c[g>>2];c[(c[j>>2]|0)+8>>2]=c[(c[f>>2]|0)+24>>2];c[(c[j>>2]|0)+4>>2]=c[h>>2];c[(c[f>>2]|0)+24>>2]=c[j>>2];c[(c[g>>2]|0)+16>>2]=c[j>>2];c[e>>2]=0;b=c[e>>2]|0;i=k;return b|0}else{c[e>>2]=7;b=c[e>>2]|0;i=k;return b|0}return 0}function kp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k;c[e>>2]=b;c[f>>2]=d;c[h>>2]=0;if(!(c[e>>2]|0)){j=c[h>>2]|0;i=k;return j|0}c[g>>2]=(c[e>>2]|0)+(c[f>>2]|0);c[j>>2]=c[e>>2];while(1){if((c[j>>2]|0)>>>0>=(c[g>>2]|0)>>>0)break;c[h>>2]=(c[h>>2]|0)+1;do{d=c[j>>2]|0;c[j>>2]=d+1}while((a[d>>0]&128|0)!=0);Zl(0,j)}j=c[h>>2]|0;i=k;return j|0}function lp(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+48|0;r=q+44|0;f=q+40|0;n=q+36|0;k=q+32|0;o=q+28|0;g=q+24|0;p=q+20|0;m=q+16|0;l=q+12|0;h=q;j=q+8|0;c[r>>2]=a;c[f>>2]=b;c[n>>2]=e;c[k>>2]=c[c[r>>2]>>2];c[o>>2]=0;c[p>>2]=0;c[m>>2]=c[(c[k>>2]|0)+236>>2];c[g>>2]=0;while(1){if(c[p>>2]|0){f=13;break}if((c[g>>2]|0)>=(c[(c[f>>2]|0)+4>>2]|0)){f=13;break}c[l>>2]=c[(c[c[f>>2]>>2]|0)+(c[g>>2]<<2)>>2];a:do if((c[(c[l>>2]|0)+56>>2]|0)==0?(d[(c[l>>2]|0)+5>>0]|0|0)==0:0){b=(c[l>>2]|0)+8|0;e=c[b+4>>2]|0;r=h;c[r>>2]=c[b>>2];c[r+4>>2]=e;while(1){e=h;a=c[e+4>>2]|0;r=(c[l>>2]|0)+16|0;b=c[r+4>>2]|0;if(!((a|0)<(b|0)|((a|0)==(b|0)?(c[e>>2]|0)>>>0<=(c[r>>2]|0)>>>0:0)))break a;r=h;c[p>>2]=am(c[k>>2]|0,c[r>>2]|0,c[r+4>>2]|0,0,j,0)|0;if(c[p>>2]|0)break a;if(((c[j>>2]|0)+35|0)>(c[m>>2]|0))c[o>>2]=(c[o>>2]|0)+(((c[j>>2]|0)+34|0)/(c[m>>2]|0)|0);e=h;e=gR(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;r=h;c[r>>2]=e;c[r+4>>2]=C}}while(0);c[g>>2]=(c[g>>2]|0)+1}if((f|0)==13){c[c[n>>2]>>2]=c[o>>2];i=q;return c[p>>2]|0}return 0}function mp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r+36|0;h=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;p=r+16|0;q=r+12|0;n=r+8|0;m=r+4|0;o=r;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[q>>2]=7;c[p>>2]=Id(56)|0;if(!(c[p>>2]|0)){f=c[p>>2]|0;b=c[l>>2]|0;c[b>>2]=f;b=c[q>>2]|0;i=r;return b|0}c[m>>2]=0;c[o>>2]=c[c[g>>2]>>2];a:do if(c[k>>2]|0){c[n>>2]=1;while(1){if(c[m>>2]|0)break;if((c[n>>2]|0)>=(c[(c[o>>2]|0)+248>>2]|0))break;if((c[(c[(c[o>>2]|0)+252>>2]|0)+((c[n>>2]|0)*24|0)>>2]|0)==(c[j>>2]|0)){c[m>>2]=1;c[q>>2]=kl(c[o>>2]|0,c[(c[g>>2]|0)+16>>2]|0,c[n>>2]|0,-2,c[h>>2]|0,c[j>>2]|0,0,0,c[p>>2]|0)|0;c[(c[p>>2]|0)+36>>2]=1}c[n>>2]=(c[n>>2]|0)+1}c[n>>2]=1;while(1){if(c[m>>2]|0)break a;if((c[n>>2]|0)>=(c[(c[o>>2]|0)+248>>2]|0))break a;if((c[(c[(c[o>>2]|0)+252>>2]|0)+((c[n>>2]|0)*24|0)>>2]|0)==((c[j>>2]|0)+1|0)?(c[m>>2]=1,c[q>>2]=kl(c[o>>2]|0,c[(c[g>>2]|0)+16>>2]|0,c[n>>2]|0,-2,c[h>>2]|0,c[j>>2]|0,1,0,c[p>>2]|0)|0,(c[q>>2]|0)==0):0)c[q>>2]=np(c[o>>2]|0,c[(c[g>>2]|0)+16>>2]|0,c[h>>2]|0,c[j>>2]|0,c[p>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+1}}while(0);if(c[m>>2]|0){f=c[p>>2]|0;b=c[l>>2]|0;c[b>>2]=f;b=c[q>>2]|0;i=r;return b|0}c[q>>2]=kl(c[o>>2]|0,c[(c[g>>2]|0)+16>>2]|0,0,-2,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,0,c[p>>2]|0)|0;c[(c[p>>2]|0)+36>>2]=((c[k>>2]|0)!=0^1)&1;f=c[p>>2]|0;b=c[l>>2]|0;c[b>>2]=f;b=c[q>>2]|0;i=r;return b|0}function np(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;d=dm(c[m>>2]|0,c[l>>2]|0,0,-2,c[k>>2]|0,c[j>>2]|0,0,0,c[h>>2]|0)|0;i=g;return d|0}function op(a,b,d,e,f,g,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+96|0;l=y+80|0;m=y+76|0;n=y+72|0;o=y+68|0;p=y+64|0;q=y+60|0;r=y+56|0;s=y+52|0;t=y+48|0;u=y+44|0;v=y+40|0;w=y+36|0;x=y;c[m>>2]=a;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=j;c[u>>2]=k;d=x;e=d+36|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[x>>2]=c[m>>2];c[x+4>>2]=c[n>>2];c[x+8>>2]=c[o>>2];c[x+16>>2]=c[q>>2];c[x+20>>2]=c[r>>2];c[x+12>>2]=c[p>>2];if(!(c[s>>2]|0)){c[c[u>>2]>>2]=0;c[l>>2]=0;x=c[l>>2]|0;i=y;return x|0}if((c[t>>2]|0)<0)c[t>>2]=BQ(c[s>>2]|0)|0;c[w>>2]=rp(x,c[s>>2]|0,c[t>>2]|0,c[u>>2]|0,v)|0;if((c[w>>2]|0)==0?(c[x+32>>2]|0)!=0:0)c[w>>2]=1;c[l>>2]=c[w>>2];x=c[l>>2]|0;i=y;return x|0}function pp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;f=t+52|0;g=t+48|0;r=t+44|0;q=t+40|0;o=t+36|0;j=t+32|0;h=t+28|0;k=t+24|0;m=t+20|0;l=t+16|0;p=t+12|0;n=t+8|0;d=t+4|0;e=t;c[f>>2]=a;c[g>>2]=b;c[r>>2]=0;c[q>>2]=c[c[f>>2]>>2];c[o>>2]=0;c[j>>2]=c[c[q>>2]>>2];if(!(c[g>>2]|0))c[r>>2]=1;do if(!(c[r>>2]|0)){if(!((c[j>>2]|0)==3|(c[j>>2]|0)==4)){if((c[j>>2]|0)!=2)break;c[d>>2]=c[(c[q>>2]|0)+12>>2];c[e>>2]=c[(c[q>>2]|0)+16>>2];c[(c[q>>2]|0)+12>>2]=0;c[(c[q>>2]|0)+16>>2]=0;c[(c[d>>2]|0)+8>>2]=0;c[(c[e>>2]|0)+8>>2]=0;c[r>>2]=pp(d,(c[g>>2]|0)-1|0)|0;if(!(c[r>>2]|0))c[r>>2]=pp(e,(c[g>>2]|0)-1|0)|0;if(c[r>>2]|0){ap(c[e>>2]|0);ap(c[d>>2]|0);break}else{c[(c[q>>2]|0)+12>>2]=c[d>>2];c[(c[d>>2]|0)+8>>2]=c[q>>2];c[(c[q>>2]|0)+16>>2]=c[e>>2];c[(c[e>>2]|0)+8>>2]=c[q>>2];break}}c[h>>2]=Id(c[g>>2]<<2)|0;if(!(c[h>>2]|0))c[r>>2]=7;else kR(c[h>>2]|0,0,c[g>>2]<<2|0)|0;if(!(c[r>>2]|0)){c[m>>2]=c[q>>2];while(1){if((c[c[m>>2]>>2]|0)!=(c[j>>2]|0))break;c[m>>2]=c[(c[m>>2]|0)+12>>2]}while(1){c[p>>2]=c[(c[m>>2]|0)+8>>2];c[(c[m>>2]|0)+8>>2]=0;if(c[p>>2]|0)c[(c[p>>2]|0)+12>>2]=0;else c[q>>2]=0;c[r>>2]=pp(m,(c[g>>2]|0)-1|0)|0;if(c[r>>2]|0)break;c[l>>2]=0;while(1){if(!(c[m>>2]|0))break;if((c[l>>2]|0)>=(c[g>>2]|0))break;if(!(c[(c[h>>2]|0)+(c[l>>2]<<2)>>2]|0)){c[(c[h>>2]|0)+(c[l>>2]<<2)>>2]=c[m>>2];c[m>>2]=0}else{c[(c[o>>2]|0)+12>>2]=c[(c[h>>2]|0)+(c[l>>2]<<2)>>2];c[(c[o>>2]|0)+16>>2]=c[m>>2];c[(c[(c[o>>2]|0)+12>>2]|0)+8>>2]=c[o>>2];c[(c[(c[o>>2]|0)+16>>2]|0)+8>>2]=c[o>>2];c[m>>2]=c[o>>2];c[o>>2]=c[(c[o>>2]|0)+8>>2];c[(c[m>>2]|0)+8>>2]=0;c[(c[h>>2]|0)+(c[l>>2]<<2)>>2]=0}c[l>>2]=(c[l>>2]|0)+1}if(c[m>>2]|0){s=24;break}if(!(c[p>>2]|0))break;c[m>>2]=c[(c[p>>2]|0)+16>>2];while(1){if((c[c[m>>2]>>2]|0)!=(c[j>>2]|0))break;c[m>>2]=c[(c[m>>2]|0)+12>>2]}c[(c[(c[p>>2]|0)+16>>2]|0)+8>>2]=c[(c[p>>2]|0)+8>>2];b=c[(c[p>>2]|0)+16>>2]|0;if(c[(c[p>>2]|0)+8>>2]|0)c[(c[(c[p>>2]|0)+8>>2]|0)+12>>2]=b;else c[q>>2]=b;c[(c[p>>2]|0)+8>>2]=c[o>>2];c[o>>2]=c[p>>2]}if((s|0)==24){ap(c[m>>2]|0);c[r>>2]=18}a:do if(!(c[r>>2]|0)){c[m>>2]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[g>>2]|0))break;do if(c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)if(!(c[m>>2]|0)){c[m>>2]=c[(c[h>>2]|0)+(c[k>>2]<<2)>>2];c[(c[m>>2]|0)+8>>2]=0;break}else{c[(c[o>>2]|0)+16>>2]=c[m>>2];c[(c[o>>2]|0)+12>>2]=c[(c[h>>2]|0)+(c[k>>2]<<2)>>2];c[(c[(c[o>>2]|0)+12>>2]|0)+8>>2]=c[o>>2];c[(c[(c[o>>2]|0)+16>>2]|0)+8>>2]=c[o>>2];c[m>>2]=c[o>>2];c[o>>2]=c[(c[o>>2]|0)+8>>2];c[(c[m>>2]|0)+8>>2]=0;break}while(0);c[k>>2]=(c[k>>2]|0)+1}c[q>>2]=c[m>>2]}else{c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[g>>2]|0))break;ap(c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0);c[k>>2]=(c[k>>2]|0)+1}while(1){s=c[o>>2]|0;c[n>>2]=s;if(!s)break a;c[o>>2]=c[(c[n>>2]|0)+8>>2];Kd(c[n>>2]|0)}}while(0);Kd(c[h>>2]|0)}}while(0);if(!(c[r>>2]|0)){q=c[q>>2]|0;s=c[f>>2]|0;c[s>>2]=q;s=c[r>>2]|0;i=t;return s|0}ap(c[q>>2]|0);c[q>>2]=0;q=c[q>>2]|0;s=c[f>>2]|0;c[s>>2]=q;s=c[r>>2]|0;i=t;return s|0}function qp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;do if(c[d>>2]|0){if((c[e>>2]|0)<0){c[f>>2]=18;break}c[f>>2]=qp(c[(c[d>>2]|0)+12>>2]|0,(c[e>>2]|0)-1|0)|0;if(!(c[f>>2]|0))c[f>>2]=qp(c[(c[d>>2]|0)+16>>2]|0,(c[e>>2]|0)-1|0)|0}while(0);i=g;return c[f>>2]|0}function rp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+80|0;g=x+64|0;y=x+60|0;o=x+56|0;p=x+52|0;q=x+48|0;v=x+44|0;m=x+40|0;u=x+36|0;s=x+32|0;n=x+28|0;w=x+24|0;r=x+20|0;t=x+16|0;k=x+12|0;j=x+8|0;h=x+4|0;l=x;c[g>>2]=a;c[y>>2]=b;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[v>>2]=0;c[m>>2]=0;c[u>>2]=0;c[s>>2]=c[o>>2];c[n>>2]=c[y>>2];c[w>>2]=0;c[r>>2]=1;while(1){if(c[w>>2]|0){d=25;break}c[t>>2]=0;c[k>>2]=0;c[w>>2]=sp(c[g>>2]|0,c[n>>2]|0,c[s>>2]|0,t,k)|0;if((c[w>>2]|0)==0&(c[t>>2]|0)!=0){c[h>>2]=c[c[t>>2]>>2];if((c[h>>2]|0)==5)d=1;else d=(c[(c[t>>2]|0)+12>>2]|0)!=0;c[j>>2]=d&1;if((c[j>>2]|0)==0&(c[r>>2]|0)!=0){d=7;break}if(!((c[j>>2]|0)==0|(c[r>>2]|0)!=0)){c[l>>2]=tp(48)|0;if(!(c[l>>2]|0)){d=10;break}c[c[l>>2]>>2]=3;up(v,c[m>>2]|0,c[l>>2]|0);c[m>>2]=c[l>>2]}if(c[m>>2]|0){if(!((c[h>>2]|0)!=1|(c[j>>2]|0)!=0)?(c[c[m>>2]>>2]|0)!=5:0){d=17;break}if((c[h>>2]|0)!=5&(c[j>>2]|0)!=0?(c[c[m>>2]>>2]|0)==1:0){d=17;break}}do if(c[j>>2]|0){d=c[t>>2]|0;if(c[v>>2]|0){c[(c[m>>2]|0)+16>>2]=d;c[(c[t>>2]|0)+8>>2]=c[m>>2];break}else{c[v>>2]=d;break}}else up(v,c[m>>2]|0,c[t>>2]|0);while(0);c[r>>2]=((c[j>>2]|0)!=0^1)&1;c[m>>2]=c[t>>2]}c[s>>2]=(c[s>>2]|0)-(c[k>>2]|0);c[n>>2]=(c[n>>2]|0)+(c[k>>2]|0)}if((d|0)==7){ap(c[t>>2]|0);c[w>>2]=1}else if((d|0)==10){ap(c[t>>2]|0);c[w>>2]=7}else if((d|0)==17){ap(c[t>>2]|0);c[w>>2]=1}else if((d|0)==25){if((c[w>>2]|0)==101&(c[v>>2]|0)!=0&(c[r>>2]|0)!=0)c[w>>2]=1;if((c[w>>2]|0)==101)c[w>>2]=0;c[c[q>>2]>>2]=(c[o>>2]|0)-(c[s>>2]|0)}if(!(c[w>>2]|0)){v=c[v>>2]|0;y=c[p>>2]|0;c[y>>2]=v;y=c[w>>2]|0;i=x;return y|0}ap(c[v>>2]|0);ap(c[u>>2]|0);c[v>>2]=0;v=c[v>>2]|0;y=c[p>>2]|0;c[y>>2]=v;y=c[w>>2]|0;i=x;return y|0}function sp(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+80|0;p=E+72|0;q=E+68|0;r=E+64|0;s=E+60|0;t=E+56|0;u=E+52|0;x=E+48|0;v=E+44|0;w=E+40|0;A=E+36|0;o=E+32|0;B=E+28|0;y=E+24|0;n=E+20|0;m=E+16|0;l=E+12|0;j=E+76|0;k=E+8|0;C=E+4|0;z=E;c[q>>2]=b;c[r>>2]=e;c[s>>2]=f;c[t>>2]=g;c[u>>2]=h;c[o>>2]=0;c[B>>2]=c[r>>2];c[y>>2]=c[s>>2];c[(c[q>>2]|0)+24>>2]=0;while(1){if((c[y>>2]|0)>0)b=(wp(a[c[B>>2]>>0]|0)|0)!=0;else b=0;f=c[y>>2]|0;if(!b)break;c[y>>2]=f+-1;c[B>>2]=(c[B>>2]|0)+1}if(!f){c[p>>2]=101;D=c[p>>2]|0;i=E;return D|0}c[x>>2]=0;while(1){if((c[x>>2]|0)>=4)break;c[n>>2]=2068+(c[x>>2]<<3);if(((d[(c[n>>2]|0)+5>>0]&-2|0)==0?(c[y>>2]|0)>=(d[(c[n>>2]|0)+4>>0]|0):0)?0==(vQ(c[B>>2]|0,c[c[n>>2]>>2]|0,d[(c[n>>2]|0)+4>>0]|0)|0):0){c[m>>2]=10;c[l>>2]=d[(c[n>>2]|0)+4>>0];a:do if((((d[(c[n>>2]|0)+6>>0]|0)==1?(a[(c[B>>2]|0)+4>>0]|0)==47:0)?(a[(c[B>>2]|0)+5>>0]|0)>=48:0)?(a[(c[B>>2]|0)+5>>0]|0)<=57:0){c[m>>2]=0;c[l>>2]=5;while(1){if((a[(c[B>>2]|0)+(c[l>>2]|0)>>0]|0)<48)break a;if((a[(c[B>>2]|0)+(c[l>>2]|0)>>0]|0)>57)break a;c[m>>2]=((c[m>>2]|0)*10|0)+((a[(c[B>>2]|0)+(c[l>>2]|0)>>0]|0)-48);c[l>>2]=(c[l>>2]|0)+1}}while(0);a[j>>0]=a[(c[B>>2]|0)+(c[l>>2]|0)>>0]|0;if(wp(a[j>>0]|0)|0){D=26;break}if((a[j>>0]|0)==34){D=26;break}if((a[j>>0]|0)==40){D=26;break}if((a[j>>0]|0)==41){D=26;break}if(!(a[j>>0]|0)){D=26;break}}c[x>>2]=(c[x>>2]|0)+1}if((D|0)==26){c[o>>2]=tp(48)|0;if(c[o>>2]|0){c[c[o>>2]>>2]=d[(c[n>>2]|0)+6>>0];c[(c[o>>2]|0)+4>>2]=c[m>>2];c[c[t>>2]>>2]=c[o>>2];c[c[u>>2]>>2]=(c[B>>2]|0)-(c[r>>2]|0)+(c[l>>2]|0);c[p>>2]=0;D=c[p>>2]|0;i=E;return D|0}else{c[p>>2]=7;D=c[p>>2]|0;i=E;return D|0}}if((a[c[B>>2]>>0]|0)==34){c[x>>2]=1;while(1){if((c[x>>2]|0)>=(c[y>>2]|0))break;if((a[(c[B>>2]|0)+(c[x>>2]|0)>>0]|0)==34)break;c[x>>2]=(c[x>>2]|0)+1}c[c[u>>2]>>2]=(c[B>>2]|0)-(c[r>>2]|0)+(c[x>>2]|0)+1;if((c[x>>2]|0)==(c[y>>2]|0)){c[p>>2]=1;D=c[p>>2]|0;i=E;return D|0}else{c[p>>2]=xp(c[q>>2]|0,(c[B>>2]|0)+1|0,(c[x>>2]|0)-1|0,c[t>>2]|0)|0;D=c[p>>2]|0;i=E;return D|0}}if((a[c[B>>2]>>0]|0)==40){c[k>>2]=0;D=(c[q>>2]|0)+32|0;c[D>>2]=(c[D>>2]|0)+1;c[A>>2]=rp(c[q>>2]|0,(c[B>>2]|0)+1|0,(c[y>>2]|0)-1|0,c[t>>2]|0,k)|0;if((c[A>>2]|0)==0?(c[c[t>>2]>>2]|0)==0:0)c[A>>2]=101;c[c[u>>2]>>2]=(c[B>>2]|0)-(c[r>>2]|0)+1+(c[k>>2]|0);c[p>>2]=c[A>>2];D=c[p>>2]|0;i=E;return D|0}f=c[q>>2]|0;if((a[c[B>>2]>>0]|0)==41){D=f+32|0;c[D>>2]=(c[D>>2]|0)+-1;c[c[u>>2]>>2]=(c[B>>2]|0)-(c[r>>2]|0)+1;c[c[t>>2]>>2]=0;c[p>>2]=101;D=c[p>>2]|0;i=E;return D|0}c[v>>2]=c[f+20>>2];c[w>>2]=0;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[(c[q>>2]|0)+16>>2]|0))break;c[C>>2]=c[(c[(c[q>>2]|0)+8>>2]|0)+(c[x>>2]<<2)>>2];c[z>>2]=BQ(c[C>>2]|0)|0;if(((c[y>>2]|0)>(c[z>>2]|0)?(a[(c[B>>2]|0)+(c[z>>2]|0)>>0]|0)==58:0)?(zd(c[C>>2]|0,c[B>>2]|0,c[z>>2]|0)|0)==0:0){D=50;break}c[x>>2]=(c[x>>2]|0)+1}if((D|0)==50){c[v>>2]=c[x>>2];c[w>>2]=(c[B>>2]|0)-(c[r>>2]|0)+(c[z>>2]|0)+1}c[A>>2]=yp(c[q>>2]|0,c[v>>2]|0,(c[r>>2]|0)+(c[w>>2]|0)|0,(c[s>>2]|0)-(c[w>>2]|0)|0,c[t>>2]|0,c[u>>2]|0)|0;D=c[u>>2]|0;c[D>>2]=(c[D>>2]|0)+(c[w>>2]|0);c[p>>2]=c[A>>2];D=c[p>>2]|0;i=E;return D|0}function tp(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=Id(c[b>>2]|0)|0;if(!(c[d>>2]|0)){d=c[d>>2]|0;i=e;return d|0}kR(c[d>>2]|0,0,c[b>>2]|0)|0;d=c[d>>2]|0;i=e;return d|0}function up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;e=h+12|0;j=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[j>>2]=b;c[f>>2]=d;c[g>>2]=c[j>>2];while(1){if(c[(c[g>>2]|0)+8>>2]|0){d=vp(c[(c[g>>2]|0)+8>>2]|0)|0;d=(d|0)<=(vp(c[f>>2]|0)|0)}else d=0;b=c[(c[g>>2]|0)+8>>2]|0;if(!d)break;c[g>>2]=b}d=c[f>>2]|0;if(b){c[(c[(c[g>>2]|0)+8>>2]|0)+16>>2]=d;c[(c[f>>2]|0)+8>>2]=c[(c[g>>2]|0)+8>>2];e=c[g>>2]|0;j=c[f>>2]|0;j=j+12|0;c[j>>2]=e;f=c[f>>2]|0;j=c[g>>2]|0;j=j+8|0;c[j>>2]=f;i=h;return}else{c[c[e>>2]>>2]=d;e=c[g>>2]|0;j=c[f>>2]|0;j=j+12|0;c[j>>2]=e;f=c[f>>2]|0;j=c[g>>2]|0;j=j+8|0;c[j>>2]=f;i=h;return}}function vp(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[b>>2]>>2]|0}function wp(b){b=b|0;var c=0,d=0;d=i;i=i+16|0;c=d;a[c>>0]=b;if(((((a[c>>0]|0)!=32?(a[c>>0]|0)!=9:0)?(a[c>>0]|0)!=10:0)?(a[c>>0]|0)!=13:0)?(a[c>>0]|0)!=11:0)c=(a[c>>0]|0)==12;else c=1;i=d;return c&1|0}function xp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=i;i=i+96|0;g=D+88|0;h=D+84|0;j=D+80|0;k=D+76|0;l=D+72|0;E=D+68|0;w=D+64|0;y=D+60|0;u=D+56|0;v=D+52|0;B=D+48|0;s=D+44|0;t=D+36|0;p=D+32|0;A=D+28|0;r=D+24|0;m=D+20|0;n=D+16|0;o=D+12|0;x=D+8|0;q=D+4|0;z=D;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[E>>2]=c[c[h>>2]>>2];c[w>>2]=c[c[E>>2]>>2];c[u>>2]=0;c[v>>2]=0;c[B>>2]=0;c[s>>2]=0;c[D+40>>2]=144;c[t>>2]=0;c[y>>2]=wn(c[E>>2]|0,c[(c[h>>2]|0)+4>>2]|0,c[j>>2]|0,c[k>>2]|0,v)|0;a:do if(!(c[y>>2]|0)){c[p>>2]=0;while(1){if(c[y>>2]|0)break;c[r>>2]=0;c[m>>2]=0;c[n>>2]=0;c[o>>2]=0;c[y>>2]=Sb[c[(c[w>>2]|0)+20>>2]&255](c[v>>2]|0,A,r,m,n,o)|0;if(!(c[y>>2]|0)){c[u>>2]=zp(c[u>>2]|0,144+((c[p>>2]|0)*24|0)|0)|0;if(!(c[u>>2]|0))break a;c[B>>2]=zp(c[B>>2]|0,(c[s>>2]|0)+(c[r>>2]|0)|0)|0;if(!(c[B>>2]|0))break a;c[x>>2]=(c[u>>2]|0)+48+72+((c[p>>2]|0)*24|0);E=c[x>>2]|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;c[E+16>>2]=0;c[E+20>>2]=0;iR((c[B>>2]|0)+(c[s>>2]|0)|0,c[A>>2]|0,c[r>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+(c[r>>2]|0);c[(c[x>>2]|0)+4>>2]=c[r>>2];if((c[n>>2]|0)<(c[k>>2]|0))e=(a[(c[j>>2]|0)+(c[n>>2]|0)>>0]|0)==42;else e=0;c[(c[x>>2]|0)+8>>2]=e&1;if((c[m>>2]|0)>0)e=(a[(c[j>>2]|0)+((c[m>>2]|0)-1)>>0]|0)==94;else e=0;c[(c[x>>2]|0)+12>>2]=e&1;c[t>>2]=(c[p>>2]|0)+1}c[p>>2]=(c[p>>2]|0)+1}Tb[c[(c[w>>2]|0)+16>>2]&255](c[v>>2]|0)|0;c[v>>2]=0;C=14}else C=14;while(0);do if((C|0)==14){if((c[y>>2]|0)==101){c[z>>2]=0;c[u>>2]=zp(c[u>>2]|0,144+((c[t>>2]|0)*24|0)+(c[s>>2]|0)|0)|0;if(!(c[u>>2]|0))break;kR(c[u>>2]|0,0,(c[u>>2]|0)+48+72-(c[u>>2]|0)|0)|0;c[c[u>>2]>>2]=5;c[(c[u>>2]|0)+20>>2]=(c[u>>2]|0)+48;c[(c[(c[u>>2]|0)+20>>2]|0)+68>>2]=c[(c[h>>2]|0)+20>>2];c[(c[(c[u>>2]|0)+20>>2]|0)+64>>2]=c[t>>2];c[z>>2]=(c[(c[u>>2]|0)+20>>2]|0)+72+((c[t>>2]|0)*24|0);if(c[B>>2]|0){iR(c[z>>2]|0,c[B>>2]|0,c[s>>2]|0)|0;Kd(c[B>>2]|0)}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[(c[u>>2]|0)+20>>2]|0)+64>>2]|0))break;c[(c[(c[u>>2]|0)+20>>2]|0)+72+((c[q>>2]|0)*24|0)>>2]=c[z>>2];c[z>>2]=(c[z>>2]|0)+(c[(c[(c[u>>2]|0)+20>>2]|0)+72+((c[q>>2]|0)*24|0)+4>>2]|0);c[q>>2]=(c[q>>2]|0)+1}c[y>>2]=0}c[c[l>>2]>>2]=c[u>>2];c[g>>2]=c[y>>2];E=c[g>>2]|0;i=D;return E|0}while(0);if(c[v>>2]|0)Tb[c[(c[w>>2]|0)+16>>2]&255](c[v>>2]|0)|0;Kd(c[B>>2]|0);Kd(c[u>>2]|0);c[c[l>>2]>>2]=0;c[g>>2]=7;E=c[g>>2]|0;i=D;return E|0}function yp(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+80|0;j=B+68|0;k=B+64|0;l=B+60|0;m=B+56|0;n=B+52|0;o=B+48|0;y=B+44|0;w=B+40|0;z=B+36|0;v=B+32|0;x=B+28|0;p=B+24|0;A=B+20|0;u=B+16|0;s=B+12|0;q=B+8|0;r=B+4|0;t=B;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[y>>2]=c[c[j>>2]>>2];c[w>>2]=c[c[y>>2]>>2];c[x>>2]=0;c[p>>2]=0;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[m>>2]|0))break;if((a[(c[l>>2]|0)+(c[p>>2]|0)>>0]|0)==40)break;if((a[(c[l>>2]|0)+(c[p>>2]|0)>>0]|0)==41)break;if((a[(c[l>>2]|0)+(c[p>>2]|0)>>0]|0)==34)break;c[p>>2]=(c[p>>2]|0)+1}c[c[o>>2]>>2]=c[p>>2];c[z>>2]=wn(c[y>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[l>>2]|0,c[p>>2]|0,v)|0;if(c[z>>2]|0){e=c[x>>2]|0;A=c[n>>2]|0;c[A>>2]=e;A=c[z>>2]|0;i=B;return A|0}c[u>>2]=0;c[s>>2]=0;c[q>>2]=0;c[r>>2]=0;c[z>>2]=Sb[c[(c[w>>2]|0)+20>>2]&255](c[v>>2]|0,A,u,s,q,r)|0;if(c[z>>2]|0){if((c[p>>2]|0)!=0&(c[z>>2]|0)==101)c[z>>2]=0}else{c[t>>2]=144+(c[u>>2]|0);c[x>>2]=tp(c[t>>2]|0)|0;a:do if(c[x>>2]|0){c[c[x>>2]>>2]=5;c[(c[x>>2]|0)+20>>2]=(c[x>>2]|0)+48;c[(c[(c[x>>2]|0)+20>>2]|0)+64>>2]=1;c[(c[(c[x>>2]|0)+20>>2]|0)+68>>2]=c[k>>2];c[(c[(c[x>>2]|0)+20>>2]|0)+72+4>>2]=c[u>>2];c[(c[(c[x>>2]|0)+20>>2]|0)+72>>2]=(c[(c[x>>2]|0)+20>>2]|0)+96;iR(c[(c[(c[x>>2]|0)+20>>2]|0)+72>>2]|0,c[A>>2]|0,c[u>>2]|0)|0;if((c[q>>2]|0)<(c[m>>2]|0)?(a[(c[l>>2]|0)+(c[q>>2]|0)>>0]|0)==42:0){c[(c[(c[x>>2]|0)+20>>2]|0)+72+8>>2]=1;c[q>>2]=(c[q>>2]|0)+1}while(1){if(!((c[s>>2]|0)>0?(c[(c[j>>2]|0)+12>>2]|0)!=0:0))break a;if((a[(c[l>>2]|0)+((c[s>>2]|0)-1)>>0]|0)!=94)break a;c[(c[(c[x>>2]|0)+20>>2]|0)+72+12>>2]=1;c[s>>2]=(c[s>>2]|0)+-1}}else c[z>>2]=7;while(0);c[c[o>>2]>>2]=c[q>>2]}Tb[c[(c[w>>2]|0)+16>>2]&255](c[v>>2]|0)|0;e=c[x>>2]|0;A=c[n>>2]|0;c[A>>2]=e;A=c[z>>2]|0;i=B;return A|0}function zp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=Ld(c[d>>2]|0,c[g>>2]|0)|0;if(c[e>>2]|0){g=c[e>>2]|0;i=f;return g|0}Kd(c[d>>2]|0);g=c[e>>2]|0;i=f;return g|0}function Ap(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Bp(c[(c[d>>2]|0)+20>>2]|0);Kd(c[(c[d>>2]|0)+40>>2]|0);Kd(c[d>>2]|0);i=b;return}function Bp(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;if(!(c[d>>2]|0)){i=f;return}Kd(c[c[d>>2]>>2]|0);Pm(c[d>>2]|0);a=c[d>>2]|0;b=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+64>>2]|0))break;hn(c[(c[d>>2]|0)+72+((c[e>>2]|0)*24|0)+20>>2]|0);c[(c[d>>2]|0)+72+((c[e>>2]|0)*24|0)+20>>2]=0;c[e>>2]=(c[e>>2]|0)+1}i=f;return}function Cp(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+24>>2];while(1){if(!(c[d>>2]|0))break;c[e>>2]=c[(c[d>>2]|0)+8>>2];el(c[(c[d>>2]|0)+12>>2]|0);Kd(c[d>>2]|0);c[d>>2]=c[e>>2]}c[(c[b>>2]|0)+24>>2]=0;i=f;return}function Dp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+8|0;f=g;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;if((lf()|0)<3008002){i=g;return}d=f;f=c[d+4>>2]|0;a=(c[e>>2]|0)+48|0;c[a>>2]=c[d>>2];c[a+4>>2]=f;i=g;return}function Ep(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if((lf()|0)<3008012){i=d;return}a=(c[b>>2]|0)+56|0;c[a>>2]=c[a>>2]|1;i=d;return}function Uv(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0;ra=i;i=i+304|0;F=ra+32|0;E=ra+16|0;D=ra;I=ra+288|0;J=ra+284|0;K=ra+280|0;L=ra+276|0;M=ra+272|0;S=ra+268|0;fa=ra+264|0;n=ra+260|0;m=ra+256|0;U=ra+252|0;aa=ra+248|0;Y=ra+244|0;qa=ra+240|0;da=ra+236|0;ba=ra+232|0;ca=ra+228|0;V=ra+224|0;W=ra+220|0;Z=ra+216|0;T=ra+212|0;oa=ra+208|0;Q=ra+204|0;P=ra+200|0;s=ra+180|0;t=ra+176|0;l=ra+172|0;pa=ra+295|0;R=ra+294|0;G=ra+293|0;r=ra+292|0;ea=ra+168|0;ka=ra+164|0;ia=ra+160|0;ma=ra+156|0;la=ra+152|0;na=ra+148|0;ja=ra+144|0;N=ra+140|0;$=ra+136|0;ga=ra+132|0;C=ra+128|0;A=ra+124|0;q=ra+120|0;w=ra+116|0;y=ra+112|0;z=ra+108|0;p=ra+104|0;B=ra+72|0;u=ra+68|0;x=ra+64|0;o=ra+60|0;v=ra+56|0;O=ra+52|0;X=ra+48|0;ha=ra+44|0;_=ra+40|0;c[I>>2]=f;c[J>>2]=g;c[K>>2]=h;c[L>>2]=j;c[M>>2]=k;c[ca>>2]=0;c[V>>2]=0;c[W>>2]=0;c[Z>>2]=-1;c[oa>>2]=0;c[Q>>2]=0;c[P>>2]=0;a[pa>>0]=0;a[R>>0]=0;c[ea>>2]=0;c[ka>>2]=0;c[ia>>2]=0;c[ma>>2]=0;c[N>>2]=0;c[S>>2]=c[c[I>>2]>>2];c[s>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;a:do if((c[(c[I>>2]|0)+68>>2]|0)==0?(d[(c[S>>2]|0)+65>>0]|0)==0:0){if(((c[K>>2]|0)!=0?(e[(c[K>>2]|0)+6>>1]&256|0)!=0:0)?(c[(c[K>>2]|0)+52>>2]|0)==0:0){c[ea>>2]=c[c[K>>2]>>2];c[c[K>>2]>>2]=0;Wu(c[S>>2]|0,c[K>>2]|0);c[K>>2]=0}c[n>>2]=c[(c[J>>2]|0)+8+8>>2];if((((((c[n>>2]|0)!=0?(c[fa>>2]=DB(c[I>>2]|0,c[J>>2]|0)|0,(c[fa>>2]|0)!=0):0)?(c[t>>2]=Dh(c[S>>2]|0,c[(c[fa>>2]|0)+64>>2]|0)|0,c[l>>2]=(c[(c[S>>2]|0)+16>>2]|0)+(c[t>>2]<<4),c[m>>2]=c[c[l>>2]>>2],(Mw(c[I>>2]|0,18,c[c[fa>>2]>>2]|0,0,c[m>>2]|0)|0)==0):0)?(a[G>>0]=((d[(c[fa>>2]|0)+42>>0]&32|0)==0^1)&1,c[ga>>2]=sC(c[I>>2]|0,c[fa>>2]|0,108,0,C)|0,c[$>>2]=(c[(c[fa>>2]|0)+12>>2]|0)!=0&1,(zx(c[I>>2]|0,c[fa>>2]|0)|0)==0):0)?(tC(c[I>>2]|0,c[fa>>2]|0,c[C>>2]|0)|0)==0:0)?(c[qa>>2]=Pw(c[I>>2]|0)|0,(c[qa>>2]|0)!=0):0){if(!(d[(c[I>>2]|0)+18>>0]|0))uC(c[qa>>2]|0);ax(c[I>>2]|0,((c[K>>2]|0)!=0?1:(c[ga>>2]|0)!=0)&1,c[t>>2]|0);if(!((c[L>>2]|0)==0?(vC(c[I>>2]|0,c[fa>>2]|0,c[K>>2]|0,c[M>>2]|0,c[t>>2]|0)|0)!=0:0))H=17;b:do if((H|0)==17){c[ia>>2]=wC(c[I>>2]|0,c[t>>2]|0,c[fa>>2]|0)|0;n=(c[(c[I>>2]|0)+76>>2]|0)+1|0;c[la>>2]=n;c[na>>2]=n;n=(c[I>>2]|0)+76|0;c[n>>2]=(c[n>>2]|0)+((b[(c[fa>>2]|0)+34>>1]|0)+1);if(d[(c[fa>>2]|0)+42>>0]&16){c[na>>2]=(c[na>>2]|0)+1;n=(c[I>>2]|0)+76|0;c[n>>2]=(c[n>>2]|0)+1}c[ja>>2]=(c[na>>2]|0)+1;a[r>>0]=(d[(c[fa>>2]|0)+42>>0]&128|0)==0;c:do if(c[L>>2]|0){c[U>>2]=0;while(1){if((c[U>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0))break;c[(c[c[L>>2]>>2]|0)+(c[U>>2]<<3)+4>>2]=-1;c[U>>2]=(c[U>>2]|0)+1}c[U>>2]=0;while(1){if((c[U>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0))break c;c[aa>>2]=0;while(1){if((c[aa>>2]|0)>=(b[(c[fa>>2]|0)+34>>1]|0))break;n=(Td(c[(c[c[L>>2]>>2]|0)+(c[U>>2]<<3)>>2]|0,c[(c[(c[fa>>2]|0)+4>>2]|0)+((c[aa>>2]|0)*24|0)>>2]|0)|0)==0;k=c[aa>>2]|0;if(n){H=28;break}c[aa>>2]=k+1}do if((H|0)==28){H=0;c[(c[c[L>>2]>>2]|0)+(c[U>>2]<<3)+4>>2]=k;if((c[U>>2]|0)!=(c[aa>>2]|0))a[r>>0]=0;if((c[aa>>2]|0)!=(b[(c[fa>>2]|0)+32>>1]|0))break;c[Z>>2]=c[U>>2]}while(0);if((c[aa>>2]|0)>=(b[(c[fa>>2]|0)+34>>1]|0)){n=(qi(c[(c[c[L>>2]>>2]|0)+(c[U>>2]<<3)>>2]|0)|0)==0;if(n|(a[G>>0]|0)!=0)break;c[Z>>2]=c[U>>2];a[r>>0]=0}c[U>>2]=(c[U>>2]|0)+1}qa=c[I>>2]|0;pa=c[(c[c[L>>2]>>2]|0)+(c[U>>2]<<3)>>2]|0;c[D>>2]=c[J>>2];c[D+4>>2]=0;c[D+8>>2]=pa;Ah(qa,35073,D);a[(c[I>>2]|0)+17>>0]=1;break a}while(0);do if(!(c[K>>2]|0)){c[B>>2]=0;c[B+4>>2]=0;c[B+8>>2]=0;c[B+12>>2]=0;c[B+16>>2]=0;c[B+20>>2]=0;c[B+24>>2]=0;c[B+28>>2]=0;c[B>>2]=c[I>>2];c[oa>>2]=-1;if(c[ea>>2]|0){c[ba>>2]=c[c[ea>>2]>>2];if(gy(B,c[ea>>2]|0)|0)break a;else break}else{c[ba>>2]=0;break}}else{B=(c[I>>2]|0)+76|0;D=(c[B>>2]|0)+1|0;c[B>>2]=D;c[A>>2]=D;c[q>>2]=(Bz(c[qa>>2]|0)|0)+1;Vw(c[qa>>2]|0,16,c[A>>2]|0,0,c[q>>2]|0)|0;ZA(s,13,c[A>>2]|0);c[s+8>>2]=(d[r>>0]|0)!=0?c[ja>>2]|0:0;c[s+12>>2]=b[(c[fa>>2]|0)+34>>1];c[w>>2]=Cv(c[I>>2]|0,c[K>>2]|0,s)|0;c[ka>>2]=c[s+8>>2];if(c[w>>2]|0)break a;if(d[(c[S>>2]|0)+65>>0]|0)break a;if(c[(c[I>>2]|0)+68>>2]|0)break a;xC(c[qa>>2]|0,c[A>>2]|0);Fz(c[qa>>2]|0,(c[q>>2]|0)-1|0);c[ba>>2]=c[c[c[K>>2]>>2]>>2];if(!((c[ga>>2]|0)==0?(yC(c[I>>2]|0,c[t>>2]|0,c[fa>>2]|0)|0)==0:0))a[pa>>0]=1;if(!(a[pa>>0]|0))break;B=(c[I>>2]|0)+72|0;D=c[B>>2]|0;c[B>>2]=D+1;c[oa>>2]=D;c[y>>2]=Wz(c[I>>2]|0)|0;c[z>>2]=Wz(c[I>>2]|0)|0;Rw(c[qa>>2]|0,57,c[oa>>2]|0,c[ba>>2]|0)|0;c[p>>2]=xz(c[qa>>2]|0,18,c[s+4>>2]|0)|0;Vw(c[qa>>2]|0,49,c[ka>>2]|0,c[ba>>2]|0,c[y>>2]|0)|0;Rw(c[qa>>2]|0,74,c[oa>>2]|0,c[z>>2]|0)|0;Vw(c[qa>>2]|0,75,c[oa>>2]|0,c[y>>2]|0,c[z>>2]|0)|0;Ez(c[qa>>2]|0,c[p>>2]|0)|0;Fz(c[qa>>2]|0,c[p>>2]|0);_z(c[I>>2]|0,c[y>>2]|0);_z(c[I>>2]|0,c[z>>2]|0)}while(0);if((c[L>>2]|0)==0&(c[ba>>2]|0)>0)c[Z>>2]=b[(c[fa>>2]|0)+32>>1];c[U>>2]=0;while(1){if((c[U>>2]|0)>=(b[(c[fa>>2]|0)+34>>1]|0))break;c[ca>>2]=(c[ca>>2]|0)+((d[(c[(c[fa>>2]|0)+4>>2]|0)+((c[U>>2]|0)*24|0)+23>>0]&2|0)!=0?1:0);c[U>>2]=(c[U>>2]|0)+1}if((c[L>>2]|0)==0&(c[ba>>2]|0)!=0?(c[ba>>2]|0)!=((b[(c[fa>>2]|0)+34>>1]|0)-(c[ca>>2]|0)|0):0){qa=c[I>>2]|0;oa=(b[(c[fa>>2]|0)+34>>1]|0)-(c[ca>>2]|0)|0;pa=c[ba>>2]|0;c[E>>2]=c[J>>2];c[E+4>>2]=0;c[E+8>>2]=oa;c[E+12>>2]=pa;Ah(qa,35105,E);break a}do if(c[L>>2]|0){if((c[ba>>2]|0)==(c[(c[L>>2]|0)+4>>2]|0))break;qa=c[I>>2]|0;pa=c[(c[L>>2]|0)+4>>2]|0;c[F>>2]=c[ba>>2];c[F+4>>2]=pa;Ah(qa,35157,F);break a}while(0);if(c[(c[S>>2]|0)+24>>2]&128){E=(c[I>>2]|0)+76|0;F=(c[E>>2]|0)+1|0;c[E>>2]=F;c[ma>>2]=F;Rw(c[qa>>2]|0,22,0,c[ma>>2]|0)|0}d:do if(!(c[$>>2]|0)){c[u>>2]=gC(c[I>>2]|0,c[fa>>2]|0,55,0,-1,0,V,W)|0;c[N>>2]=Fw(c[S>>2]|0,(c[u>>2]|0)+1<<2,0)|0;if(!(c[N>>2]|0))break a;c[U>>2]=0;while(1){if((c[U>>2]|0)>=(c[u>>2]|0))break d;E=(c[I>>2]|0)+76|0;F=(c[E>>2]|0)+1|0;c[E>>2]=F;c[(c[N>>2]|0)+(c[U>>2]<<2)>>2]=F;c[U>>2]=(c[U>>2]|0)+1}}while(0);do if(a[pa>>0]|0){c[Q>>2]=xz(c[qa>>2]|0,108,c[oa>>2]|0)|0;c[P>>2]=Bz(c[qa>>2]|0)|0}else{if(!(c[K>>2]|0))break;F=xz(c[qa>>2]|0,18,c[s+4>>2]|0)|0;c[P>>2]=F;c[Q>>2]=F}while(0);c[T>>2]=Cz(c[qa>>2]|0)|0;if(c[C>>2]&1){c[x>>2]=kA(c[I>>2]|0,(b[(c[fa>>2]|0)+34>>1]|0)+1|0)|0;if((c[Z>>2]|0)<0)Rw(c[qa>>2]|0,22,-1,c[x>>2]|0)|0;else{if(a[pa>>0]|0)Vw(c[qa>>2]|0,47,c[oa>>2]|0,c[Z>>2]|0,c[x>>2]|0)|0;else xA(c[I>>2]|0,c[(c[(c[ea>>2]|0)+4>>2]|0)+((c[Z>>2]|0)*20|0)>>2]|0,c[x>>2]|0);c[o>>2]=xz(c[qa>>2]|0,77,c[x>>2]|0)|0;Rw(c[qa>>2]|0,22,-1,c[x>>2]|0)|0;Fz(c[qa>>2]|0,c[o>>2]|0);xz(c[qa>>2]|0,38,c[x>>2]|0)|0}c[aa>>2]=0;c[U>>2]=0;while(1){if((c[U>>2]|0)>=(b[(c[fa>>2]|0)+34>>1]|0))break;e:do if(c[L>>2]|0){c[aa>>2]=0;while(1){if((c[aa>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0))break e;if((c[(c[c[L>>2]>>2]|0)+(c[aa>>2]<<3)+4>>2]|0)==(c[U>>2]|0))break e;c[aa>>2]=(c[aa>>2]|0)+1}}while(0);do if((a[pa>>0]|0)!=0|(c[ea>>2]|0)!=0){if((c[L>>2]|0)!=0?(c[aa>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0):0){H=90;break}if(a[pa>>0]|0){Vw(c[qa>>2]|0,47,c[oa>>2]|0,c[aa>>2]|0,(c[x>>2]|0)+(c[U>>2]|0)+1|0)|0;break}else{zC(c[I>>2]|0,c[(c[(c[ea>>2]|0)+4>>2]|0)+((c[aa>>2]|0)*20|0)>>2]|0,(c[x>>2]|0)+(c[U>>2]|0)+1|0);break}}else H=90;while(0);if((H|0)==90){H=0;xA(c[I>>2]|0,c[(c[(c[fa>>2]|0)+4>>2]|0)+((c[U>>2]|0)*24|0)+4>>2]|0,(c[x>>2]|0)+(c[U>>2]|0)+1|0)}if(!(c[L>>2]|0))c[aa>>2]=(c[aa>>2]|0)+1;c[U>>2]=(c[U>>2]|0)+1}if(!(c[$>>2]|0))AC(c[qa>>2]|0,c[fa>>2]|0,(c[x>>2]|0)+1|0);BC(c[I>>2]|0,c[ga>>2]|0,108,0,1,c[fa>>2]|0,(c[x>>2]|0)-(b[(c[fa>>2]|0)+34>>1]|0)-1|0,c[M>>2]|0,c[T>>2]|0);nA(c[I>>2]|0,c[x>>2]|0,(b[(c[fa>>2]|0)+34>>1]|0)+1|0)}do if(!(c[$>>2]|0)){if(d[(c[fa>>2]|0)+42>>0]&16)Rw(c[qa>>2]|0,25,0,c[la>>2]|0)|0;f:do if((c[Z>>2]|0)>=0){do if(a[pa>>0]|0)Vw(c[qa>>2]|0,47,c[oa>>2]|0,c[Z>>2]|0,c[na>>2]|0)|0;else{if(c[K>>2]|0){Rw(c[qa>>2]|0,30,(c[ka>>2]|0)+(c[Z>>2]|0)|0,c[na>>2]|0)|0;break}xA(c[I>>2]|0,c[(c[(c[ea>>2]|0)+4>>2]|0)+((c[Z>>2]|0)*20|0)>>2]|0,c[na>>2]|0);c[v>>2]=Mz(c[qa>>2]|0,-1)|0;if(!(c[v>>2]|0))break;if((d[c[v>>2]>>0]|0)!=25)break;if(d[(c[fa>>2]|0)+42>>0]&16)break;a[R>>0]=1;a[c[v>>2]>>0]=74;c[(c[v>>2]|0)+4>>2]=c[V>>2];c[(c[v>>2]|0)+8>>2]=c[na>>2];c[(c[v>>2]|0)+12>>2]=c[ia>>2]}while(0);if(a[R>>0]|0)break;k=c[qa>>2]|0;if(d[(c[fa>>2]|0)+42>>0]&16){c[O>>2]=Bz(k)|0;Rw(c[qa>>2]|0,76,c[na>>2]|0,(c[O>>2]|0)+2|0)|0}else{c[O>>2]=xz(k,77,c[na>>2]|0)|0;Vw(c[qa>>2]|0,74,c[V>>2]|0,c[na>>2]|0,c[ia>>2]|0)|0;Fz(c[qa>>2]|0,c[O>>2]|0)}xz(c[qa>>2]|0,38,c[na>>2]|0)|0}else{do if(!(d[(c[fa>>2]|0)+42>>0]&16)){if(d[G>>0]|0)break;Vw(c[qa>>2]|0,74,c[V>>2]|0,c[na>>2]|0,c[ia>>2]|0)|0;a[R>>0]=1;break f}while(0);Rw(c[qa>>2]|0,25,0,c[na>>2]|0)|0}while(0);CC(c[I>>2]|0,c[ia>>2]|0,c[na>>2]|0);c[ca>>2]=0;c[U>>2]=0;while(1){if((c[U>>2]|0)>=(b[(c[fa>>2]|0)+34>>1]|0))break;c[X>>2]=(c[na>>2]|0)+1+(c[U>>2]|0);g:do if((c[U>>2]|0)==(b[(c[fa>>2]|0)+32>>1]|0))xz(c[qa>>2]|0,26,c[X>>2]|0)|0;else{h:do if(!(c[L>>2]|0))if(d[(c[(c[fa>>2]|0)+4>>2]|0)+((c[U>>2]|0)*24|0)+23>>0]&2){c[aa>>2]=-1;c[ca>>2]=(c[ca>>2]|0)+1;break}else{c[aa>>2]=(c[U>>2]|0)-(c[ca>>2]|0);break}else{c[aa>>2]=0;while(1){if((c[aa>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0))break h;if((c[(c[c[L>>2]>>2]|0)+(c[aa>>2]<<3)+4>>2]|0)==(c[U>>2]|0))break h;c[aa>>2]=(c[aa>>2]|0)+1}}while(0);do if(!((c[aa>>2]|0)<0|(c[ba>>2]|0)==0)){if((c[L>>2]|0)!=0?(c[aa>>2]|0)>=(c[(c[L>>2]|0)+4>>2]|0):0)break;if(a[pa>>0]|0){Vw(c[qa>>2]|0,47,c[oa>>2]|0,c[aa>>2]|0,c[X>>2]|0)|0;break g}if(!(c[K>>2]|0)){xA(c[I>>2]|0,c[(c[(c[ea>>2]|0)+4>>2]|0)+((c[aa>>2]|0)*20|0)>>2]|0,c[X>>2]|0);break g}if((c[ka>>2]|0)==(c[ja>>2]|0))break g;Rw(c[qa>>2]|0,31,(c[ka>>2]|0)+(c[aa>>2]|0)|0,c[X>>2]|0)|0;break g}while(0);DC(c[I>>2]|0,c[(c[(c[fa>>2]|0)+4>>2]|0)+((c[U>>2]|0)*24|0)+4>>2]|0,c[X>>2]|0)}while(0);c[U>>2]=(c[U>>2]|0)+1}if(d[(c[fa>>2]|0)+42>>0]&16){c[ha>>2]=Ax(c[S>>2]|0,c[fa>>2]|0)|0;EC(c[I>>2]|0,c[fa>>2]|0);Uw(c[qa>>2]|0,12,1,(b[(c[fa>>2]|0)+34>>1]|0)+2|0,c[la>>2]|0,c[ha>>2]|0,-10)|0;Fh(c[qa>>2]|0,((c[M>>2]|0)==10?2:c[M>>2]|0)&255);Bx(c[I>>2]|0);break}else{FC(c[I>>2]|0,c[fa>>2]|0,c[N>>2]|0,c[V>>2]|0,c[W>>2]|0,c[la>>2]|0,0,(c[Z>>2]|0)>=0&255,c[M>>2]&255,c[T>>2]|0,_,0);GC(c[I>>2]|0,c[fa>>2]|0,0,c[la>>2]|0,0,0);HC(c[I>>2]|0,c[fa>>2]|0,c[V>>2]|0,c[W>>2]|0,c[la>>2]|0,c[N>>2]|0,0,d[R>>0]|0,(c[_>>2]|0)==0&1);break}}while(0);if(c[(c[S>>2]|0)+24>>2]&128)Rw(c[qa>>2]|0,37,c[ma>>2]|0,1)|0;if(c[ga>>2]|0)BC(c[I>>2]|0,c[ga>>2]|0,108,0,2,c[fa>>2]|0,(c[ja>>2]|0)-2-(b[(c[fa>>2]|0)+34>>1]|0)|0,c[M>>2]|0,c[T>>2]|0);Gz(c[qa>>2]|0,c[T>>2]|0);do if(a[pa>>0]|0){Rw(c[qa>>2]|0,7,c[oa>>2]|0,c[P>>2]|0)|0;Fz(c[qa>>2]|0,c[Q>>2]|0);xz(c[qa>>2]|0,61,c[oa>>2]|0)|0}else{if(!(c[K>>2]|0))break;Ez(c[qa>>2]|0,c[P>>2]|0)|0;Fz(c[qa>>2]|0,c[Q>>2]|0)}while(0);if((c[$>>2]|0)!=0?1:(d[(c[fa>>2]|0)+42>>0]&16|0)!=0)break;if((c[V>>2]|0)<(c[W>>2]|0))xz(c[qa>>2]|0,61,c[V>>2]|0)|0;c[Y>>2]=0;c[da>>2]=c[(c[fa>>2]|0)+8>>2];while(1){if(!(c[da>>2]|0))break b;xz(c[qa>>2]|0,61,(c[Y>>2]|0)+(c[W>>2]|0)|0)|0;c[da>>2]=c[(c[da>>2]|0)+20>>2];c[Y>>2]=(c[Y>>2]|0)+1}}while(0);if((d[(c[I>>2]|0)+18>>0]|0)==0?(c[(c[I>>2]|0)+420>>2]|0)==0:0)IC(c[I>>2]|0);if(((c[(c[S>>2]|0)+24>>2]&128|0)!=0?(a[(c[I>>2]|0)+18>>0]|0)==0:0)?(c[(c[I>>2]|0)+420>>2]|0)==0:0){Rw(c[qa>>2]|0,33,c[ma>>2]|0,1)|0;OB(c[qa>>2]|0,1);PB(c[qa>>2]|0,0,0,35182,0)|0}}}while(0);Yu(c[S>>2]|0,c[J>>2]|0);Vu(c[S>>2]|0,c[ea>>2]|0);Wu(c[S>>2]|0,c[K>>2]|0);_u(c[S>>2]|0,c[L>>2]|0);Sf(c[S>>2]|0,c[N>>2]|0);i=ra;return}function Vv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;f=k+16|0;e=k+12|0;g=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[g>>2]=b;c[h>>2]=d;if((c[g>>2]|0)==0?(c[g>>2]=ph(c[e>>2]|0,8,0)|0,(c[g>>2]|0)==0):0){c[f>>2]=0;j=c[f>>2]|0;i=k;return j|0}d=rC(c[e>>2]|0,c[c[g>>2]>>2]|0,8,(c[g>>2]|0)+4|0,j)|0;c[c[g>>2]>>2]=d;e=c[e>>2]|0;if((c[j>>2]|0)<0){_u(e,c[g>>2]|0);c[f>>2]=0;j=c[f>>2]|0;i=k;return j|0}else{h=Dw(e,c[h>>2]|0)|0;c[(c[c[g>>2]>>2]|0)+(c[j>>2]<<3)>>2]=h;c[f>>2]=c[g>>2];j=c[f>>2]|0;i=k;return j|0}return 0}function Wv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=d;c[(c[f>>2]|0)+4>>2]=c[c[h>>2]>>2];c[(c[f>>2]|0)+8>>2]=(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0);i=e;return}function Xv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;p=t+16|0;o=t+8|0; -f=t+44|0;g=t+40|0;k=t+36|0;r=t+32|0;q=t+50|0;n=t+28|0;l=t;j=t+24|0;m=t+48|0;h=t+20|0;c[f>>2]=d;c[g>>2]=e;c[k>>2]=c[c[f>>2]>>2];if(!(c[g>>2]|0)){i=t;return}c[r>>2]=c[(c[g>>2]|0)+8>>2];do if(a[(c[r>>2]|0)+1>>0]|0){b[q>>1]=0;c[n>>2]=If(c[r>>2]|0)|0;if((a[c[r>>2]>>0]|0)==63){c[j>>2]=0==(Hi((c[r>>2]|0)+1|0,l,(c[n>>2]|0)-1|0,1)|0)&1;s=c[l>>2]&65535;b[q>>1]=s;b[(c[g>>2]|0)+32>>1]=s;s=l;d=c[s+4>>2]|0;if(!(!((c[j>>2]|0)==0|((d|0)<0|(d|0)==0&(c[s>>2]|0)>>>0<1))?(d=l,m=c[d+4>>2]|0,s=c[(c[k>>2]|0)+88+36>>2]|0,e=((s|0)<0)<<31>>31,!((m|0)>(e|0)|((m|0)==(e|0)?(c[d>>2]|0)>>>0>s>>>0:0))):0)){s=c[f>>2]|0;c[o>>2]=c[(c[k>>2]|0)+88+36>>2];Ah(s,35007,o);b[q>>1]=0}o=l;e=c[o+4>>2]|0;s=b[(c[f>>2]|0)+444>>1]|0;d=((s|0)<0)<<31>>31;if((e|0)>(d|0)|((e|0)==(d|0)?(c[o>>2]|0)>>>0>s>>>0:0))b[(c[f>>2]|0)+444>>1]=c[l>>2]}else{b[m>>1]=0;while(1){if((b[m>>1]|0)>=(c[(c[f>>2]|0)+448>>2]|0))break;if((c[(c[(c[f>>2]|0)+476>>2]|0)+(b[m>>1]<<2)>>2]|0)!=0?(yQ(c[(c[(c[f>>2]|0)+476>>2]|0)+(b[m>>1]<<2)>>2]|0,c[r>>2]|0)|0)==0:0){s=14;break}b[m>>1]=(b[m>>1]|0)+1<<16>>16}if((s|0)==14){s=(b[m>>1]|0)+1&65535;b[q>>1]=s;b[(c[g>>2]|0)+32>>1]=s}if(!(b[q>>1]|0)){o=(c[f>>2]|0)+444|0;s=(b[o>>1]|0)+1<<16>>16;b[o>>1]=s;b[(c[g>>2]|0)+32>>1]=s;b[q>>1]=s}}if((b[q>>1]|0)>0){do if((b[q>>1]|0)>(c[(c[f>>2]|0)+448>>2]|0)){c[h>>2]=Ew(c[k>>2]|0,c[(c[f>>2]|0)+476>>2]|0,b[q>>1]<<2,0)|0;if(!(c[h>>2]|0)){i=t;return}else{c[(c[f>>2]|0)+476>>2]=c[h>>2];kR((c[h>>2]|0)+(c[(c[f>>2]|0)+448>>2]<<2)|0,0,(b[q>>1]|0)-(c[(c[f>>2]|0)+448>>2]|0)<<2|0)|0;c[(c[f>>2]|0)+448>>2]=b[q>>1];break}}while(0);if((a[c[r>>2]>>0]|0)==63?(c[(c[(c[f>>2]|0)+476>>2]|0)+((b[q>>1]|0)-1<<2)>>2]|0)!=0:0)break;Sf(c[k>>2]|0,c[(c[(c[f>>2]|0)+476>>2]|0)+((b[q>>1]|0)-1<<2)>>2]|0);s=Iw(c[k>>2]|0,c[r>>2]|0,c[n>>2]|0,0)|0;c[(c[(c[f>>2]|0)+476>>2]|0)+((b[q>>1]|0)-1<<2)>>2]=s}}else{r=(c[f>>2]|0)+444|0;s=(b[r>>1]|0)+1<<16>>16;b[r>>1]=s;b[(c[g>>2]|0)+32>>1]=s}while(0);if(c[(c[f>>2]|0)+68>>2]|0){i=t;return}if((b[(c[f>>2]|0)+444>>1]|0)<=(c[(c[k>>2]|0)+88+36>>2]|0)){i=t;return}Ah(c[f>>2]|0,35050,p);i=t;return}function Yv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if((c[(c[h>>2]|0)+4>>2]|0)>>>0<=0){a=c[g>>2]|0;i=l;return a|0}c[k>>2]=cz(c[c[f>>2]>>2]|0,95,c[h>>2]|0,c[j>>2]|0)|0;if(!(c[k>>2]|0)){a=c[g>>2]|0;i=l;return a|0}c[(c[k>>2]|0)+12>>2]=c[g>>2];a=(c[k>>2]|0)+4|0;c[a>>2]=c[a>>2]|4352;c[g>>2]=c[k>>2];a=c[g>>2]|0;i=l;return a|0}function Zv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+20|0;f=k+16|0;g=k+12|0;l=k+8|0;j=k+4|0;h=k;c[f>>2]=a;c[g>>2]=b;c[l>>2]=d;c[h>>2]=c[c[f>>2]>>2];c[j>>2]=cz(c[h>>2]|0,151,c[l>>2]|0,1)|0;if(!(c[j>>2]|0)){Vu(c[h>>2]|0,c[g>>2]|0);c[e>>2]=0;l=c[e>>2]|0;i=k;return l|0}else{c[(c[j>>2]|0)+20>>2]=c[g>>2];dw(c[f>>2]|0,c[j>>2]|0);c[e>>2]=c[j>>2];l=c[e>>2]|0;i=k;return l|0}return 0}function _v(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+16|0;m=g+12|0;l=g+8|0;k=g+4|0;j=g;c[h>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;f=rv(c[m>>2]|0,c[l>>2]|0,c[c[k>>2]>>2]|0,c[c[j>>2]>>2]|0,0)|0;c[c[h>>2]>>2]=f;c[(c[h>>2]|0)+4>>2]=c[(c[k>>2]|0)+4>>2];c[(c[h>>2]|0)+8>>2]=c[(c[j>>2]|0)+8>>2];i=g;return}function $v(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;h=g+4|0;f=g;c[e>>2]=a;c[h>>2]=b;c[f>>2]=d;if(!(c[h>>2]|0)){i=g;return}h=rv(c[e>>2]|0,19,c[c[f>>2]>>2]|0,0,0)|0;c[c[f>>2]>>2]=h;i=g;return}function aw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+16|0;m=g+12|0;l=g+8|0;k=g+4|0;j=g;c[h>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;f=rv(c[m>>2]|0,c[l>>2]|0,c[c[k>>2]>>2]|0,0,0)|0;c[c[h>>2]>>2]=f;c[(c[h>>2]|0)+4>>2]=c[(c[k>>2]|0)+4>>2];c[(c[h>>2]|0)+8>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0);i=g;return}function bw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;n=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[n>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=g;c[l>>2]=c[c[n>>2]>>2];if(!((c[j>>2]|0)!=0&(c[h>>2]|0)!=0)){i=m;return}if((d[c[h>>2]>>0]|0|0)!=101){i=m;return}a[c[j>>2]>>0]=c[k>>2];Zu(c[l>>2]|0,c[(c[j>>2]|0)+16>>2]|0);c[(c[j>>2]|0)+16>>2]=0;i=m;return}function cw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+16|0;m=g+12|0;l=g+8|0;j=g+4|0;k=g;c[h>>2]=a;c[m>>2]=b;c[l>>2]=d;c[j>>2]=e;c[k>>2]=f;f=rv(c[m>>2]|0,c[l>>2]|0,c[c[j>>2]>>2]|0,0,0)|0;c[c[h>>2]>>2]=f;c[(c[h>>2]|0)+4>>2]=c[c[k>>2]>>2];c[(c[h>>2]|0)+8>>2]=c[(c[j>>2]|0)+8>>2];i=g;return}function dw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(c[(c[d>>2]|0)+68>>2]|0){i=f;return}ez(c[e>>2]|0);Ey(c[d>>2]|0,c[(c[e>>2]|0)+24>>2]|0)|0;i=f;return}function ew(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+32|0;l=m;h=m+28|0;p=m+24|0;j=m+20|0;o=m+16|0;n=m+12|0;k=m+8|0;c[h>>2]=a;c[p>>2]=b;c[j>>2]=e;c[o>>2]=f;c[n>>2]=g;c[k>>2]=Gv(c[h>>2]|0,c[p>>2]|0,0)|0;if((c[o>>2]|0)!=0|(c[n>>2]|0)!=-1?(d[(c[c[h>>2]>>2]|0)+140+5>>0]|0|0)==0:0){p=c[h>>2]|0;o=c[c[j>>2]>>2]|0;c[l>>2]=c[(c[j>>2]|0)+4>>2];c[l+4>>2]=o;Ah(p,34967,l)}Hv(c[h>>2]|0,c[k>>2]|0,c[j>>2]|0,1);i=m;return c[k>>2]|0}function fw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+80|0;m=u+16|0;l=u+8|0;t=u;p=u+68|0;q=u+64|0;r=u+60|0;h=u+56|0;k=u+52|0;s=u+48|0;g=u+44|0;f=u+40|0;j=u+36|0;n=u+32|0;o=u+28|0;c[p>>2]=b;c[q>>2]=d;c[r>>2]=e;c[s>>2]=c[c[p>>2]>>2];if(a[(c[s>>2]|0)+65>>0]|0){s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}if(pz(c[p>>2]|0)|0){s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}c[h>>2]=Fj(c[s>>2]|0,c[(c[q>>2]|0)+8+8>>2]|0,c[(c[q>>2]|0)+8+4>>2]|0)|0;if(!(c[h>>2]|0)){f=c[p>>2]|0;g=c[q>>2]|0;if(c[r>>2]|0)zB(f,c[g+8+4>>2]|0);else{c[t>>2]=g;c[t+4>>2]=0;Ah(f,34757,t)}a[(c[p>>2]|0)+17>>0]=1;s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}if(a[(c[h>>2]|0)+55>>0]&3){t=c[p>>2]|0;c[l>>2]=0;Ah(t,34775,l);s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}c[g>>2]=Dh(c[s>>2]|0,c[(c[h>>2]|0)+24>>2]|0)|0;c[f>>2]=10;c[j>>2]=c[(c[h>>2]|0)+12>>2];c[n>>2]=c[(c[(c[s>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2];c[o>>2]=(c[g>>2]|0)==1?20769:20788;if(Mw(c[p>>2]|0,9,c[o>>2]|0,0,c[n>>2]|0)|0){s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}if(c[g>>2]|0)c[f>>2]=12;if(Mw(c[p>>2]|0,c[f>>2]|0,c[c[h>>2]>>2]|0,c[c[j>>2]>>2]|0,c[n>>2]|0)|0){s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}c[k>>2]=Pw(c[p>>2]|0)|0;if(!(c[k>>2]|0)){s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}ax(c[p>>2]|0,1,c[g>>2]|0);t=c[p>>2]|0;o=(c[g>>2]|0)==1?20769:20788;r=c[c[h>>2]>>2]|0;c[m>>2]=c[(c[(c[s>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2];c[m+4>>2]=o;c[m+8>>2]=r;Ow(t,34848,m);pC(c[p>>2]|0,c[g>>2]|0,31725,c[c[h>>2]>>2]|0);Qw(c[p>>2]|0,c[g>>2]|0);qC(c[p>>2]|0,c[(c[h>>2]|0)+44>>2]|0,c[g>>2]|0);Uw(c[k>>2]|0,126,c[g>>2]|0,0,0,c[c[h>>2]>>2]|0,0)|0;s=c[s>>2]|0;t=c[q>>2]|0;Yu(s,t);i=u;return}function gw(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=Pw(c[e>>2]|0)|0;if(!(c[b>>2]|0)){i=d;return}Rw(c[b>>2]|0,10,0,0)|0;Hh(c[b>>2]|0,0);i=d;return}function hw(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0;ac=i;i=i+800|0;Ia=ac+264|0;Sb=ac+256|0;Rb=ac+248|0;db=ac+240|0;Aa=ac+208|0;za=ac+200|0;ya=ac+184|0;xa=ac+160|0;Qb=ac+144|0;Pb=ac+128|0;wa=ac+112|0;va=ac+96|0;cb=ac+72|0;ua=ac+64|0;ta=ac+56|0;sa=ac+48|0;r=ac+40|0;p=ac+32|0;Xb=ac+792|0;l=ac+788|0;s=ac+784|0;n=ac+780|0;o=ac+776|0;_b=ac+772|0;$b=ac+768|0;fb=ac+764|0;m=ac+760|0;q=ac+744|0;Wb=ac+736|0;X=ac+732|0;ra=ac+728|0;Y=ac+724|0;la=ac+720|0;Zb=ac+716|0;Fa=ac+712|0;Yb=ac+708|0;Hb=ac+704|0;v=ac+700|0;na=ac+696|0;$=ac+692|0;Ga=ac+688|0;aa=ac+684|0;B=ac+680|0;T=ac+676|0;Pa=ac+672|0;Da=ac+668|0;E=ac+664|0;ga=ac+660|0;U=ac+656|0;F=ac+652|0;V=ac+648|0;Ba=ac+644|0;Z=ac+640|0;ha=ac+636|0;R=ac+24|0;ba=ac+632|0;D=ac+628|0;y=ac+624|0;N=ac+620|0;S=ac+616|0;z=ac+612|0;oa=ac+608|0;pa=ac+604|0;qa=ac+16|0;ma=ac+600|0;Q=ac+596|0;Ea=ac+592|0;Za=ac+588|0;Ma=ac+584|0;Ra=ac+580|0;Ta=ac+576|0;Ua=ac+572|0;Ya=ac+568|0;ea=ac+564|0;H=ac+560|0;ia=ac+556|0;Db=ac+552|0;Jb=ac+548|0;lb=ac+544|0;Bb=ac+540|0;kb=ac+796|0;fa=ac+536|0;ja=ac+532|0;I=ac+528|0;A=ac+516|0;J=ac+512|0;K=ac+508|0;_=ac+504|0;ca=ac+500|0;da=ac+496|0;ka=ac+492|0;L=ac+488|0;W=ac+484|0;Va=ac+480|0;_a=ac+476|0;Xa=ac+472|0;Wa=ac+468|0;Na=ac+464|0;Qa=ac+460|0;Sa=ac+456|0;eb=ac+452|0;ab=ac+448|0;$a=ac+444|0;bb=ac+440|0;Ka=ac+436|0;Ja=ac+432|0;La=ac+428|0;Oa=ac+424|0;mb=ac+420|0;rb=ac+416|0;hb=ac+412|0;Cb=ac+408|0;qb=ac+404|0;Tb=ac+400|0;Mb=ac+396|0;jb=ac+392|0;Kb=ac+388|0;Eb=ac+384|0;Lb=ac+380|0;Fb=ac+376|0;Gb=ac+372|0;Ib=ac+368|0;Ab=ac+364|0;ob=ac+360|0;pb=ac+356|0;Nb=ac+352|0;Ub=ac+348|0;sb=ac+344|0;ub=ac+340|0;tb=ac+336|0;vb=ac+332|0;wb=ac+328|0;xb=ac+324|0;ib=ac+320|0;Ob=ac+316|0;yb=ac+312|0;zb=ac+308|0;nb=ac+304|0;gb=ac+300|0;Ha=ac+296|0;P=ac+292|0;w=ac+288|0;x=ac+284|0;M=ac+280|0;Ca=ac+276|0;O=ac+272|0;G=ac+268|0;t=ac+8|0;u=ac;c[Xb>>2]=f;c[l>>2]=g;c[s>>2]=h;c[n>>2]=j;c[o>>2]=k;c[_b>>2]=0;c[$b>>2]=0;c[fb>>2]=0;c[Y>>2]=0;c[Zb>>2]=c[c[Xb>>2]>>2];c[Yb>>2]=Pw(c[Xb>>2]|0)|0;if(!(c[Yb>>2]|0)){i=ac;return}KB(c[Yb>>2]|0);c[(c[Xb>>2]|0)+76>>2]=2;c[Wb>>2]=tz(c[Xb>>2]|0,c[l>>2]|0,c[s>>2]|0,m)|0;if((c[Wb>>2]|0)<0){i=ac;return}c[Fa>>2]=(c[(c[Zb>>2]|0)+16>>2]|0)+(c[Wb>>2]<<4);if((c[Wb>>2]|0)==1?(cx(c[Xb>>2]|0)|0)!=0:0){i=ac;return}c[_b>>2]=Dw(c[Zb>>2]|0,c[m>>2]|0)|0;if(!(c[_b>>2]|0)){i=ac;return}k=c[Zb>>2]|0;l=c[n>>2]|0;if(c[o>>2]|0){c[p>>2]=l;c[$b>>2]=Bh(k,32915,p)|0}else c[$b>>2]=Dw(k,l)|0;if((c[(c[s>>2]|0)+4>>2]|0)>>>0>0)l=c[c[Fa>>2]>>2]|0;else l=0;c[fb>>2]=l;a:do if(!(Mw(c[Xb>>2]|0,19,c[_b>>2]|0,c[$b>>2]|0,c[fb>>2]|0)|0)){c[q>>2]=0;c[q+4>>2]=c[_b>>2];c[q+8>>2]=c[$b>>2];c[q+12>>2]=0;c[(c[Zb>>2]|0)+448+8>>2]=0;c[la>>2]=Ff(c[Zb>>2]|0,c[fb>>2]|0,14,q)|0;if(!(c[la>>2]|0)){LB(c[Yb>>2]|0,32919,c[q>>2]|0);Kd(c[q>>2]|0);break}if((c[la>>2]|0)!=12){if(c[q>>2]|0){Yb=c[Xb>>2]|0;c[r>>2]=c[q>>2];Ah(Yb,19255,r);Kd(c[q>>2]|0)}Yb=(c[Xb>>2]|0)+68|0;c[Yb>>2]=(c[Yb>>2]|0)+1;c[(c[Xb>>2]|0)+12>>2]=c[la>>2];break}c[X>>2]=0;c[ra>>2]=57;while(1){if((c[X>>2]|0)>(c[ra>>2]|0))break;c[Y>>2]=((c[X>>2]|0)+(c[ra>>2]|0)|0)/2|0;c[la>>2]=Td(c[_b>>2]|0,c[5312+((c[Y>>2]|0)*12|0)>>2]|0)|0;if(!(c[la>>2]|0))break;l=c[Y>>2]|0;if((c[la>>2]|0)<0){c[ra>>2]=l-1;continue}else{c[X>>2]=l+1;continue}}if((c[X>>2]|0)<=(c[ra>>2]|0)){c[Hb>>2]=5312+((c[Y>>2]|0)*12|0);if((d[(c[Hb>>2]|0)+5>>0]&1|0)!=0?(pz(c[Xb>>2]|0)|0)!=0:0)break;do switch(d[(c[Hb>>2]|0)+4>>0]|0){case 11:{Hh(c[Yb>>2]|0,c[Wb>>2]|0);if(c[$b>>2]|0){c[na>>2]=yj(Ki(c[$b>>2]|0)|0)|0;ax(c[Xb>>2]|0,0,c[Wb>>2]|0);Vw(c[Yb>>2]|0,52,c[Wb>>2]|0,3,c[na>>2]|0)|0;c[(c[(c[Fa>>2]|0)+12>>2]|0)+80>>2]=c[na>>2];zj(c[(c[Fa>>2]|0)+4>>2]|0,c[(c[(c[Fa>>2]|0)+12>>2]|0)+80>>2]|0)|0;break a}else{MB(c[Yb>>2]|0,32926);Xb=(c[Xb>>2]|0)+76|0;c[Xb>>2]=(c[Xb>>2]|0)+2;c[v>>2]=Gh(c[Yb>>2]|0,9,32937,0)|0;c[(c[v>>2]|0)+4>>2]=c[Wb>>2];c[(c[v>>2]|0)+20+4>>2]=c[Wb>>2];c[(c[v>>2]|0)+120+4>>2]=2e3;break a}}case 25:{c[$>>2]=c[(c[Fa>>2]|0)+4>>2];if(c[$b>>2]|0){Yb=Ki(c[$b>>2]|0)|0;c[(c[Zb>>2]|0)+72>>2]=Yb;if(7!=(xi(c[$>>2]|0,c[(c[Zb>>2]|0)+72>>2]|0,-1,0)|0))break a;jh(c[Zb>>2]|0);break a}if(c[$>>2]|0)l=pg(c[$>>2]|0)|0;else l=0;c[Ga>>2]=l;Xb=c[Ga>>2]|0;NB(c[Yb>>2]|0,32973,Xb,((Xb|0)<0)<<31>>31);break a}case 26:{c[aa>>2]=c[(c[Fa>>2]|0)+4>>2];c[B>>2]=-1;if(c[$b>>2]|0)c[B>>2]=(Bi(c[$b>>2]|0,0)|0)&255;b:do if((c[B>>2]|0)>=0?(c[(c[s>>2]|0)+4>>2]|0)==0:0){c[T>>2]=0;while(1){if((c[T>>2]|0)>=(c[(c[Zb>>2]|0)+20>>2]|0))break b;vB(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[T>>2]<<4)+4>>2]|0,c[B>>2]|0)|0;c[T>>2]=(c[T>>2]|0)+1}}while(0);c[B>>2]=vB(c[aa>>2]|0,c[B>>2]|0)|0;Xb=c[B>>2]|0;NB(c[Yb>>2]|0,32983,Xb,((Xb|0)<0)<<31>>31);break a}case 23:{bx(c[Xb>>2]|0,c[Wb>>2]|0);l=(c[Xb>>2]|0)+76|0;m=(c[l>>2]|0)+1|0;c[l>>2]=m;c[Pa>>2]=m;m=c[Yb>>2]|0;l=c[Wb>>2]|0;k=c[Pa>>2]|0;if((d[18477+(d[c[_b>>2]>>0]|0)>>0]|0)==112)Rw(m,156,l,k)|0;else Vw(m,157,l,k,yj(Ki(c[$b>>2]|0)|0)|0)|0;Rw(c[Yb>>2]|0,33,c[Pa>>2]|0,1)|0;OB(c[Yb>>2]|0,1);PB(c[Yb>>2]|0,0,0,c[_b>>2]|0,-1)|0;break a}case 22:{c[Da>>2]=32997;c[E>>2]=QB(c[$b>>2]|0)|0;if((c[E>>2]|0)==-1?(c[(c[s>>2]|0)+4>>2]|0)==0:0)c[E>>2]=d[(c[Zb>>2]|0)+67>>0];else{if(!(c[(c[s>>2]|0)+4>>2]|0)){c[U>>2]=2;while(1){if((c[U>>2]|0)>=(c[(c[Zb>>2]|0)+20>>2]|0))break;c[ga>>2]=Of(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[U>>2]<<4)+4>>2]|0)|0;uB(c[ga>>2]|0,c[E>>2]|0)|0;c[U>>2]=(c[U>>2]|0)+1}a[(c[Zb>>2]|0)+67>>0]=c[E>>2]}c[ga>>2]=Of(c[(c[Fa>>2]|0)+4>>2]|0)|0;c[E>>2]=uB(c[ga>>2]|0,c[E>>2]|0)|0}if((c[E>>2]|0)==1)c[Da>>2]=33004;LB(c[Yb>>2]|0,33014,c[Da>>2]|0);break a}case 19:{MB(c[Yb>>2]|0,33027);if(c[$b>>2]|0){c[Z>>2]=If(c[$b>>2]|0)|0;c[F>>2]=0;while(1){Xb=RB(c[F>>2]|0)|0;c[Ba>>2]=Xb;if(!Xb)break;if(!(zd(c[$b>>2]|0,c[Ba>>2]|0,c[Z>>2]|0)|0))break;c[F>>2]=(c[F>>2]|0)+1}if(!(c[Ba>>2]|0))c[F>>2]=-1}else c[F>>2]=-1;if((c[F>>2]|0)==-1?(c[(c[s>>2]|0)+4>>2]|0)==0:0){c[Wb>>2]=0;c[(c[s>>2]|0)+4>>2]=1}c[V>>2]=(c[(c[Zb>>2]|0)+20>>2]|0)-1;while(1){if((c[V>>2]|0)<0)break;do if(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[V>>2]<<4)+4>>2]|0){if((c[V>>2]|0)!=(c[Wb>>2]|0)?(c[(c[s>>2]|0)+4>>2]|0)!=0:0)break;Hh(c[Yb>>2]|0,c[V>>2]|0);Vw(c[Yb>>2]|0,9,c[V>>2]|0,1,c[F>>2]|0)|0}while(0);c[V>>2]=(c[V>>2]|0)+-1}Rw(c[Yb>>2]|0,33,1,1)|0;break a}case 20:{c[ha>>2]=Of(c[(c[Fa>>2]|0)+4>>2]|0)|0;Xb=R;c[Xb>>2]=-2;c[Xb+4>>2]=-1;if((c[$b>>2]|0)!=0?(Ci(c[$b>>2]|0,R)|0,Xb=R,Wb=c[Xb+4>>2]|0,(Wb|0)<-1|(Wb|0)==-1&(c[Xb>>2]|0)>>>0<4294967295):0){Xb=R;c[Xb>>2]=-1;c[Xb+4>>2]=-1}Wb=R;Wb=SB(c[ha>>2]|0,c[Wb>>2]|0,c[Wb+4>>2]|0)|0;Xb=R;c[Xb>>2]=Wb;c[Xb+4>>2]=C;Xb=R;NB(c[Yb>>2]|0,33040,c[Xb>>2]|0,c[Xb+4>>2]|0);break a}case 1:{c[ba>>2]=c[(c[Fa>>2]|0)+4>>2];if(!(c[$b>>2]|0)){Xb=c[Yb>>2]|0;Yb=TB(c[ba>>2]|0)|0;NB(Xb,33059,Yb,((Yb|0)<0)<<31>>31);break a}c[D>>2]=UB(c[$b>>2]|0)|0;a[(c[Zb>>2]|0)+68>>0]=c[D>>2];c[la>>2]=VB(c[ba>>2]|0,c[D>>2]|0)|0;if(c[la>>2]|0)break a;if(!((c[D>>2]|0)==1|(c[D>>2]|0)==2))break a;c[N>>2]=Bz(c[Yb>>2]|0)|0;c[y>>2]=Gh(c[Yb>>2]|0,5,33071,0)|0;c[(c[y>>2]|0)+4>>2]=c[Wb>>2];c[(c[y>>2]|0)+20+4>>2]=c[Wb>>2];c[(c[y>>2]|0)+40+8>>2]=(c[N>>2]|0)+4;c[(c[y>>2]|0)+80+4>>2]=c[Wb>>2];c[(c[y>>2]|0)+80+12>>2]=(c[D>>2]|0)-1;Hh(c[Yb>>2]|0,c[Wb>>2]|0);break a}case 15:{if(!((c[$b>>2]|0)!=0?(Vb=(Li(c[$b>>2]|0,S)|0)==0,!(Vb|(c[S>>2]|0)<=0)):0))c[S>>2]=2147483647;ax(c[Xb>>2]|0,0,c[Wb>>2]|0);Rw(c[Yb>>2]|0,22,c[S>>2]|0,1)|0;c[z>>2]=xz(c[Yb>>2]|0,146,c[Wb>>2]|0)|0;xz(c[Yb>>2]|0,33,1)|0;Rw(c[Yb>>2]|0,37,1,-1)|0;Rw(c[Yb>>2]|0,138,1,c[z>>2]|0)|0;Fz(c[Yb>>2]|0,c[z>>2]|0);break a}case 4:if(c[$b>>2]|0){c[oa>>2]=Ki(c[$b>>2]|0)|0;c[(c[(c[Fa>>2]|0)+12>>2]|0)+80>>2]=c[oa>>2];zj(c[(c[Fa>>2]|0)+4>>2]|0,c[(c[(c[Fa>>2]|0)+12>>2]|0)+80>>2]|0)|0;break a}else{Xb=c[(c[(c[Fa>>2]|0)+12>>2]|0)+80>>2]|0;NB(c[Yb>>2]|0,32926,Xb,((Xb|0)<0)<<31>>31);break a}case 5:{if(!(c[$b>>2]|0)){k=c[Yb>>2]|0;if(!(c[(c[Zb>>2]|0)+24>>2]&32))l=0;else l=WB(c[(c[Fa>>2]|0)+4>>2]|0,0)|0;NB(k,33091,l,((l|0)<0)<<31>>31);break a}c[pa>>2]=1;if(Li(c[$b>>2]|0,pa)|0)WB(c[(c[Fa>>2]|0)+4>>2]|0,c[pa>>2]|0)|0;Yb=(Bi(c[$b>>2]|0,(c[pa>>2]|0)!=0&255)|0)<<24>>24!=0;l=(c[Zb>>2]|0)+24|0;k=c[l>>2]|0;if(Yb)c[l>>2]=k|32;else c[l>>2]=k&-33;XB(c[Zb>>2]|0);break a}case 24:{Wb=qa;c[Wb>>2]=0;c[Wb+4>>2]=0;c[la>>2]=0;if(!(c[la>>2]|0)){Xb=qa;NB(c[Yb>>2]|0,33103,c[Xb>>2]|0,c[Xb+4>>2]|0);break a}if((c[la>>2]|0)==12)break a;Yb=(c[Xb>>2]|0)+68|0;c[Yb>>2]=(c[Yb>>2]|0)+1;c[(c[Xb>>2]|0)+12>>2]=c[la>>2];break a}case 32:if(c[$b>>2]|0){YB(c[Xb>>2]|0,c[$b>>2]|0)|0;break a}else{NB(c[Yb>>2]|0,33113,d[(c[Zb>>2]|0)+64>>0]|0,0);break a}case 33:{if(!(c[$b>>2]|0)){LB(c[Yb>>2]|0,33124,c[241]|0);break a}if((a[c[$b>>2]>>0]|0)!=0?(c[la>>2]=Nr(c[c[Zb>>2]>>2]|0,c[$b>>2]|0,1,ma)|0,(c[la>>2]|0)!=0|(c[ma>>2]|0)==0):0){Ah(c[Xb>>2]|0,33145,sa);break a}if((d[(c[Zb>>2]|0)+64>>0]|0)<=1)ZB(c[Xb>>2]|0)|0;Kd(c[241]|0);if(a[c[$b>>2]>>0]|0){c[ta>>2]=c[$b>>2];c[241]=Od(19255,ta)|0;break a}else{c[241]=0;break a}}case 30:{if(!(c[$b>>2]|0)){Xb=(d[(c[Fa>>2]|0)+8>>0]|0)-1|0;NB(c[Yb>>2]|0,33170,Xb,((Xb|0)<0)<<31>>31);break a}if(a[(c[Zb>>2]|0)+63>>0]|0){Yb=((Ji(c[$b>>2]|0,0,1)|0)&255)+1&7;c[Q>>2]=Yb;c[Q>>2]=(c[Q>>2]|0)==0?1:Yb;a[(c[Fa>>2]|0)+8>>0]=c[Q>>2];XB(c[Zb>>2]|0);break a}else{Ah(c[Xb>>2]|0,33182,ua);break a}}case 2:{if(!(c[$b>>2]|0)){Xb=(c[(c[Zb>>2]|0)+24>>2]&c[(c[Hb>>2]|0)+8>>2]|0)!=0&1;NB(c[Yb>>2]|0,c[c[Hb>>2]>>2]|0,Xb,((Xb|0)<0)<<31>>31);break a}c[Ea>>2]=c[(c[Hb>>2]|0)+8>>2];if(!(d[(c[Zb>>2]|0)+63>>0]|0))c[Ea>>2]=c[Ea>>2]&-524289;Xb=(Bi(c[$b>>2]|0,0)|0)<<24>>24!=0;l=c[Ea>>2]|0;if(!Xb){Xb=(c[Zb>>2]|0)+24|0;c[Xb>>2]=c[Xb>>2]&~l;if((c[Ea>>2]|0)==16777216){Xb=(c[Zb>>2]|0)+520|0;c[Xb>>2]=0;c[Xb+4>>2]=0}}else{Xb=(c[Zb>>2]|0)+24|0;c[Xb>>2]=c[Xb>>2]|l}Rw(c[Yb>>2]|0,147,0,0)|0;XB(c[Zb>>2]|0);break a}case 31:{if(!(c[$b>>2]|0))break a;c[Za>>2]=pi(c[Zb>>2]|0,c[$b>>2]|0,c[fb>>2]|0)|0;if(!(c[Za>>2]|0))break a;c[Ta>>2]=0;c[Ya>>2]=Ej(c[Za>>2]|0)|0;c[(c[Xb>>2]|0)+76>>2]=6;bx(c[Xb>>2]|0,c[Wb>>2]|0);_B(c[Yb>>2]|0,6,6008);zx(c[Xb>>2]|0,c[Za>>2]|0)|0;c[Ma>>2]=0;c[Ua>>2]=c[(c[Za>>2]|0)+4>>2];while(1){if((c[Ma>>2]|0)>=(b[(c[Za>>2]|0)+34>>1]|0))break a;if(d[(c[Ua>>2]|0)+23>>0]&2)c[Ta>>2]=(c[Ta>>2]|0)+1;else{c:do if(!(d[(c[Ua>>2]|0)+23>>0]&1))c[Ra>>2]=0;else{Xb=(c[Ya>>2]|0)==0;c[Ra>>2]=1;if(Xb)break;while(1){if((c[Ra>>2]|0)>(b[(c[Za>>2]|0)+34>>1]|0))break c;if((b[(c[(c[Ya>>2]|0)+4>>2]|0)+((c[Ra>>2]|0)-1<<1)>>1]|0)==(c[Ma>>2]|0))break c;c[Ra>>2]=(c[Ra>>2]|0)+1}}while(0);l=c[Yb>>2]|0;k=c[c[Ua>>2]>>2]|0;if(c[(c[Ua>>2]|0)+12>>2]|0)m=c[(c[Ua>>2]|0)+12>>2]|0;else m=19266;Vb=(d[(c[Ua>>2]|0)+20>>0]|0)!=0?1:0;Wb=c[(c[Ua>>2]|0)+8>>2]|0;Xb=c[Ra>>2]|0;c[cb>>2]=(c[Ma>>2]|0)-(c[Ta>>2]|0);c[cb+4>>2]=k;c[cb+8>>2]=m;c[cb+12>>2]=Vb;c[cb+16>>2]=Wb;c[cb+20>>2]=Xb;$B(l,1,33235,cb);Rw(c[Yb>>2]|0,33,1,6)|0}c[Ma>>2]=(c[Ma>>2]|0)+1;c[Ua>>2]=(c[Ua>>2]|0)+24}}case 29:{c[Yb>>2]=Pw(c[Xb>>2]|0)|0;c[(c[Xb>>2]|0)+76>>2]=4;bx(c[Xb>>2]|0,c[Wb>>2]|0);_B(c[Yb>>2]|0,4,6032);c[H>>2]=c[(c[(c[Fa>>2]|0)+12>>2]|0)+8+8>>2];while(1){if(!(c[H>>2]|0))break a;c[ia>>2]=c[(c[H>>2]|0)+8>>2];Xb=c[Yb>>2]|0;Ub=c[c[ia>>2]>>2]|0;Vb=aC(b[(c[ia>>2]|0)+40>>1]|0)|0;Wb=aC(b[(c[ia>>2]|0)+38>>1]|0)|0;c[va>>2]=Ub;c[va+4>>2]=0;c[va+8>>2]=Vb;c[va+12>>2]=Wb;$B(Xb,1,33242,va);Rw(c[Yb>>2]|0,33,1,4)|0;c[ea>>2]=c[(c[ia>>2]|0)+8>>2];while(1){if(!(c[ea>>2]|0))break;Xb=c[Yb>>2]|0;Ub=c[c[ea>>2]>>2]|0;Vb=aC(b[(c[ea>>2]|0)+48>>1]|0)|0;Wb=aC(b[c[(c[ea>>2]|0)+8>>2]>>1]|0)|0;c[wa>>2]=Ub;c[wa+4>>2]=Vb;c[wa+8>>2]=Wb;$B(Xb,2,33247,wa);Rw(c[Yb>>2]|0,33,1,4)|0;c[ea>>2]=c[(c[ea>>2]|0)+20>>2]}c[H>>2]=c[c[H>>2]>>2]}}case 16:{if(!(c[$b>>2]|0))break a;c[Db>>2]=Fj(c[Zb>>2]|0,c[$b>>2]|0,c[fb>>2]|0)|0;if(!(c[Db>>2]|0))break a;l=c[Db>>2]|0;if(c[(c[Hb>>2]|0)+8>>2]|0){c[Bb>>2]=e[l+52>>1];c[(c[Xb>>2]|0)+76>>2]=6}else{c[Bb>>2]=e[l+50>>1];c[(c[Xb>>2]|0)+76>>2]=3}c[Jb>>2]=c[(c[Db>>2]|0)+12>>2];bx(c[Xb>>2]|0,c[Wb>>2]|0);_B(c[Yb>>2]|0,c[(c[Xb>>2]|0)+76>>2]|0,6048);c[lb>>2]=0;while(1){if((c[lb>>2]|0)>=(c[Bb>>2]|0))break a;b[kb>>1]=b[(c[(c[Db>>2]|0)+4>>2]|0)+(c[lb>>2]<<1)>>1]|0;l=c[Yb>>2]|0;k=b[kb>>1]|0;if((b[kb>>1]|0)<0)m=0;else m=c[(c[(c[Jb>>2]|0)+4>>2]|0)+((b[kb>>1]|0)*24|0)>>2]|0;c[Pb>>2]=c[lb>>2];c[Pb+4>>2]=k;c[Pb+8>>2]=m;$B(l,1,33251,Pb);if(c[(c[Hb>>2]|0)+8>>2]|0){Wb=c[Yb>>2]|0;Ub=c[(c[(c[Db>>2]|0)+32>>2]|0)+(c[lb>>2]<<2)>>2]|0;Vb=(c[lb>>2]|0)<(e[(c[Db>>2]|0)+50>>1]|0)&1;c[Qb>>2]=d[(c[(c[Db>>2]|0)+28>>2]|0)+(c[lb>>2]|0)>>0];c[Qb+4>>2]=Ub;c[Qb+8>>2]=Vb;$B(Wb,4,33255,Qb)}Rw(c[Yb>>2]|0,33,1,c[(c[Xb>>2]|0)+76>>2]|0)|0;c[lb>>2]=(c[lb>>2]|0)+1}}case 17:{if(!(c[$b>>2]|0))break a;c[ja>>2]=pi(c[Zb>>2]|0,c[$b>>2]|0,c[fb>>2]|0)|0;if(!(c[ja>>2]|0))break a;c[Yb>>2]=Pw(c[Xb>>2]|0)|0;c[(c[Xb>>2]|0)+76>>2]=5;bx(c[Xb>>2]|0,c[Wb>>2]|0);_B(c[Yb>>2]|0,5,6072);c[fa>>2]=c[(c[ja>>2]|0)+8>>2];c[I>>2]=0;while(1){if(!(c[fa>>2]|0))break a;c[A>>2]=c[1523];c[A+4>>2]=c[1524];c[A+8>>2]=c[1525];Xb=c[Yb>>2]|0;Tb=c[c[fa>>2]>>2]|0;Ub=(d[(c[fa>>2]|0)+54>>0]|0)!=0&1;Vb=c[A+((a[(c[fa>>2]|0)+55>>0]&3)<<2)>>2]|0;Wb=(c[(c[fa>>2]|0)+36>>2]|0)!=0&1;c[xa>>2]=c[I>>2];c[xa+4>>2]=Tb;c[xa+8>>2]=Ub;c[xa+12>>2]=Vb;c[xa+16>>2]=Wb;$B(Xb,1,33259,xa);Rw(c[Yb>>2]|0,33,1,5)|0;c[fa>>2]=c[(c[fa>>2]|0)+20>>2];c[I>>2]=(c[I>>2]|0)+1}}case 10:{c[(c[Xb>>2]|0)+76>>2]=3;_B(c[Yb>>2]|0,3,6104);c[J>>2]=0;while(1){if((c[J>>2]|0)>=(c[(c[Zb>>2]|0)+20>>2]|0))break a;if(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[J>>2]<<4)+4>>2]|0){Xb=c[Yb>>2]|0;Ub=c[J>>2]|0;Vb=c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[J>>2]<<4)>>2]|0;Wb=Di(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[J>>2]<<4)+4>>2]|0)|0;c[ya>>2]=Ub;c[ya+4>>2]=Vb;c[ya+8>>2]=Wb;$B(Xb,1,33265,ya);Rw(c[Yb>>2]|0,33,1,3)|0}c[J>>2]=(c[J>>2]|0)+1}}case 7:{c[K>>2]=0;c[(c[Xb>>2]|0)+76>>2]=2;_B(c[Yb>>2]|0,2,6116);c[_>>2]=c[(c[Zb>>2]|0)+432+8>>2];while(1){if(!(c[_>>2]|0))break a;c[ca>>2]=c[(c[_>>2]|0)+8>>2];Xb=c[Yb>>2]|0;Vb=c[K>>2]|0;c[K>>2]=Vb+1;Wb=c[c[ca>>2]>>2]|0;c[za>>2]=Vb;c[za+4>>2]=Wb;$B(Xb,1,33269,za);Rw(c[Yb>>2]|0,33,1,2)|0;c[_>>2]=c[c[_>>2]>>2]}}case 14:{if(!(c[$b>>2]|0))break a;c[ka>>2]=pi(c[Zb>>2]|0,c[$b>>2]|0,c[fb>>2]|0)|0;if(!(c[ka>>2]|0))break a;c[Yb>>2]=Pw(c[Xb>>2]|0)|0;c[da>>2]=c[(c[ka>>2]|0)+16>>2];if(!(c[da>>2]|0))break a;c[L>>2]=0;c[(c[Xb>>2]|0)+76>>2]=8;bx(c[Xb>>2]|0,c[Wb>>2]|0);_B(c[Yb>>2]|0,8,6124);while(1){if(!(c[da>>2]|0))break a;c[W>>2]=0;while(1){if((c[W>>2]|0)>=(c[(c[da>>2]|0)+20>>2]|0))break;Xb=c[Yb>>2]|0;Qb=c[L>>2]|0;Rb=c[W>>2]|0;Sb=c[(c[da>>2]|0)+8>>2]|0;Tb=c[(c[(c[ka>>2]|0)+4>>2]|0)+((c[(c[da>>2]|0)+36+(c[W>>2]<<3)>>2]|0)*24|0)>>2]|0;Ub=c[(c[da>>2]|0)+36+(c[W>>2]<<3)+4>>2]|0;Vb=bC(a[(c[da>>2]|0)+25+1>>0]|0)|0;Wb=bC(a[(c[da>>2]|0)+25>>0]|0)|0;c[Aa>>2]=Qb;c[Aa+4>>2]=Rb;c[Aa+8>>2]=Sb;c[Aa+12>>2]=Tb;c[Aa+16>>2]=Ub;c[Aa+20>>2]=Vb;c[Aa+24>>2]=Wb;c[Aa+28>>2]=33281;$B(Xb,1,33272,Aa);Rw(c[Yb>>2]|0,33,1,8)|0;c[W>>2]=(c[W>>2]|0)+1}c[L>>2]=(c[L>>2]|0)+1;c[da>>2]=c[(c[da>>2]|0)+4>>2]}}case 13:{c[ab>>2]=(c[(c[Xb>>2]|0)+76>>2]|0)+1;Ub=(c[Xb>>2]|0)+76|0;c[Ub>>2]=(c[Ub>>2]|0)+4;Ub=(c[Xb>>2]|0)+76|0;Tb=(c[Ub>>2]|0)+1|0;c[Ub>>2]=Tb;c[$a>>2]=Tb;Tb=(c[Xb>>2]|0)+76|0;Ub=(c[Tb>>2]|0)+1|0;c[Tb>>2]=Ub;c[bb>>2]=Ub;c[Yb>>2]=Pw(c[Xb>>2]|0)|0;_B(c[Yb>>2]|0,4,6156);bx(c[Xb>>2]|0,c[Wb>>2]|0);c[Sa>>2]=c[(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[Wb>>2]<<4)+12>>2]|0)+8+8>>2];while(1){if(!(c[Sa>>2]|0))break a;if(c[$b>>2]|0){c[_a>>2]=zh(c[Xb>>2]|0,0,c[$b>>2]|0,c[fb>>2]|0)|0;c[Sa>>2]=0}else{c[_a>>2]=c[(c[Sa>>2]|0)+8>>2];c[Sa>>2]=c[c[Sa>>2]>>2]}if(!(c[_a>>2]|0))continue;if(!(c[(c[_a>>2]|0)+16>>2]|0))continue;yz(c[Xb>>2]|0,c[Wb>>2]|0,c[(c[_a>>2]|0)+28>>2]|0,0,c[c[_a>>2]>>2]|0);if(((b[(c[_a>>2]|0)+34>>1]|0)+(c[bb>>2]|0)|0)>(c[(c[Xb>>2]|0)+76>>2]|0))c[(c[Xb>>2]|0)+76>>2]=(b[(c[_a>>2]|0)+34>>1]|0)+(c[bb>>2]|0);zz(c[Xb>>2]|0,0,c[Wb>>2]|0,c[_a>>2]|0,54);Tw(c[Yb>>2]|0,c[ab>>2]|0,c[c[_a>>2]>>2]|0)|0;c[Na>>2]=1;c[Va>>2]=c[(c[_a>>2]|0)+16>>2];d:while(1){if(!(c[Va>>2]|0))break;c[Xa>>2]=pi(c[Zb>>2]|0,c[(c[Va>>2]|0)+8>>2]|0,c[fb>>2]|0)|0;do if(c[Xa>>2]|0){c[Wa>>2]=0;yz(c[Xb>>2]|0,c[Wb>>2]|0,c[(c[Xa>>2]|0)+28>>2]|0,0,c[c[Xa>>2]>>2]|0);c[eb>>2]=cC(c[Xb>>2]|0,c[Xa>>2]|0,c[Va>>2]|0,Wa,0)|0;if(c[eb>>2]|0){Vb=207;break d}if(!(c[Wa>>2]|0)){zz(c[Xb>>2]|0,c[Na>>2]|0,c[Wb>>2]|0,c[Xa>>2]|0,54);break}else{Vw(c[Yb>>2]|0,54,c[Na>>2]|0,c[(c[Wa>>2]|0)+44>>2]|0,c[Wb>>2]|0)|0;Az(c[Xb>>2]|0,c[Wa>>2]|0);break}}while(0);c[Na>>2]=(c[Na>>2]|0)+1;c[Va>>2]=c[(c[Va>>2]|0)+4>>2]}if((Vb|0)==207){Vb=0;c[Sa>>2]=0}if(c[Va>>2]|0)break a;if((c[(c[Xb>>2]|0)+72>>2]|0)<(c[Na>>2]|0))c[(c[Xb>>2]|0)+72>>2]=c[Na>>2];c[Ka>>2]=xz(c[Yb>>2]|0,108,0)|0;c[Na>>2]=1;c[Va>>2]=c[(c[_a>>2]|0)+16>>2];while(1){if(!(c[Va>>2]|0))break;c[Xa>>2]=pi(c[Zb>>2]|0,c[(c[Va>>2]|0)+8>>2]|0,c[fb>>2]|0)|0;c[Wa>>2]=0;c[La>>2]=0;if(c[Xa>>2]|0)c[eb>>2]=cC(c[Xb>>2]|0,c[Xa>>2]|0,c[Va>>2]|0,Wa,La)|0;c[Ja>>2]=Cz(c[Yb>>2]|0)|0;do if((c[Xa>>2]|0)!=0&(c[Wa>>2]|0)==0){c[Oa>>2]=c[(c[Va>>2]|0)+36>>2];l=c[Yb>>2]|0;if((c[Oa>>2]|0)!=(b[(c[_a>>2]|0)+32>>1]|0)){Vw(l,47,0,c[Oa>>2]|0,c[bb>>2]|0)|0;vA(c[Yb>>2]|0,c[_a>>2]|0,c[Oa>>2]|0,c[bb>>2]|0);Rw(c[Yb>>2]|0,76,c[bb>>2]|0,c[Ja>>2]|0)|0;Tb=c[Yb>>2]|0;Ub=c[bb>>2]|0;Rw(Tb,38,Ub,(Bz(c[Yb>>2]|0)|0)+3|0)|0}else Rw(l,103,0,c[bb>>2]|0)|0;Vw(c[Yb>>2]|0,70,c[Na>>2]|0,0,c[bb>>2]|0)|0;Ez(c[Yb>>2]|0,c[Ja>>2]|0)|0;Ub=c[Yb>>2]|0;Fz(Ub,(Bz(c[Yb>>2]|0)|0)-2|0)}else{c[Qa>>2]=0;while(1){if((c[Qa>>2]|0)>=(c[(c[Va>>2]|0)+20>>2]|0))break;l=c[Qa>>2]|0;if(c[La>>2]|0)l=c[(c[La>>2]|0)+(l<<2)>>2]|0;else l=c[(c[Va>>2]|0)+36+(l<<3)>>2]|0;tA(c[Yb>>2]|0,c[_a>>2]|0,0,l,(c[bb>>2]|0)+(c[Qa>>2]|0)|0);Rw(c[Yb>>2]|0,76,(c[bb>>2]|0)+(c[Qa>>2]|0)|0,c[Ja>>2]|0)|0;c[Qa>>2]=(c[Qa>>2]|0)+1}if(!(c[Xa>>2]|0))break;Qb=c[Yb>>2]|0;Rb=c[bb>>2]|0;Sb=c[(c[Va>>2]|0)+20>>2]|0;Tb=c[$a>>2]|0;Ub=dC(c[Zb>>2]|0,c[Wa>>2]|0)|0;Uw(Qb,49,Rb,Sb,Tb,Ub,c[(c[Va>>2]|0)+20>>2]|0)|0;Eh(c[Yb>>2]|0,69,c[Na>>2]|0,c[Ja>>2]|0,c[$a>>2]|0,0)|0}while(0);Rw(c[Yb>>2]|0,103,0,(c[ab>>2]|0)+1|0)|0;Tb=c[Yb>>2]|0;Ub=(c[ab>>2]|0)+2|0;Sb=(c[Na>>2]|0)-1|0;c[db>>2]=c[(c[Va>>2]|0)+8>>2];c[db+4>>2]=Sb;$B(Tb,Ub,33286,db);Rw(c[Yb>>2]|0,33,c[ab>>2]|0,4)|0;Gz(c[Yb>>2]|0,c[Ja>>2]|0);Sf(c[Zb>>2]|0,c[La>>2]|0);c[Na>>2]=(c[Na>>2]|0)+1;c[Va>>2]=c[(c[Va>>2]|0)+4>>2]}Rw(c[Yb>>2]|0,7,0,(c[Ka>>2]|0)+1|0)|0;Fz(c[Yb>>2]|0,c[Ka>>2]|0)}}case 6:{if(!(c[$b>>2]|0))break a;Yb=c[Zb>>2]|0;eC(Yb,(Bi(c[$b>>2]|0,0)|0)&255);break a}case 18:{c[qb>>2]=(d[18477+(d[c[_b>>2]>>0]|0)>>0]|0)==113&1;if(!(c[c[s>>2]>>2]|0))c[Wb>>2]=-1;c[(c[Xb>>2]|0)+76>>2]=6;MB(c[Yb>>2]|0,33289);c[Cb>>2]=100;if((c[$b>>2]|0)!=0?(Li(c[$b>>2]|0,Cb)|0,(c[Cb>>2]|0)<=0):0)c[Cb>>2]=100;Rw(c[Yb>>2]|0,22,c[Cb>>2]|0,1)|0;c[mb>>2]=0;while(1){if((c[mb>>2]|0)>=(c[(c[Zb>>2]|0)+20>>2]|0))break;c[jb>>2]=0;if(!((c[Wb>>2]|0)>=0?(c[mb>>2]|0)!=(c[Wb>>2]|0):0))Vb=242;e:do if((Vb|0)==242){Vb=0;bx(c[Xb>>2]|0,c[mb>>2]|0);c[hb>>2]=xz(c[Yb>>2]|0,138,1)|0;Rw(c[Yb>>2]|0,21,0,0)|0;Fz(c[Yb>>2]|0,c[hb>>2]|0);c[Mb>>2]=(c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[mb>>2]<<4)+12>>2]|0)+8;c[Tb>>2]=c[(c[Mb>>2]|0)+8>>2];while(1){if(!(c[Tb>>2]|0))break;c[Kb>>2]=c[(c[Tb>>2]|0)+8>>2];if(!(d[(c[Kb>>2]|0)+42>>0]&32)){Rw(c[Yb>>2]|0,22,c[(c[Kb>>2]|0)+28>>2]|0,2+(c[jb>>2]|0)|0)|0;c[jb>>2]=(c[jb>>2]|0)+1}c[Eb>>2]=c[(c[Kb>>2]|0)+8>>2];while(1){if(!(c[Eb>>2]|0))break;Rw(c[Yb>>2]|0,22,c[(c[Eb>>2]|0)+44>>2]|0,2+(c[jb>>2]|0)|0)|0;c[jb>>2]=(c[jb>>2]|0)+1;c[Eb>>2]=c[(c[Eb>>2]|0)+20>>2]}c[Tb>>2]=c[c[Tb>>2]>>2]}if((c[(c[Xb>>2]|0)+76>>2]|0)>((c[jb>>2]|0)+8|0))l=c[(c[Xb>>2]|0)+76>>2]|0;else l=(c[jb>>2]|0)+8|0;c[(c[Xb>>2]|0)+76>>2]=l;Vw(c[Yb>>2]|0,128,2,c[jb>>2]|0,1)|0;Fh(c[Yb>>2]|0,c[mb>>2]&255);c[hb>>2]=xz(c[Yb>>2]|0,76,2)|0;Pb=c[Yb>>2]|0;Qb=c[Zb>>2]|0;c[Rb>>2]=c[(c[(c[Zb>>2]|0)+16>>2]|0)+(c[mb>>2]<<4)>>2];Uw(Pb,97,0,3,0,Bh(Qb,33305,Rb)|0,-1)|0;Vw(c[Yb>>2]|0,29,2,4,1)|0;Vw(c[Yb>>2]|0,94,4,3,2)|0;Rw(c[Yb>>2]|0,33,2,1)|0;Fz(c[Yb>>2]|0,c[hb>>2]|0);c[Tb>>2]=c[(c[Mb>>2]|0)+8>>2];while(1){if(!(c[Tb>>2]|0))break e;if(!((c[qb>>2]|0)!=0^1))break e;c[Lb>>2]=c[(c[Tb>>2]|0)+8>>2];c[Ib>>2]=0;c[Nb>>2]=-1;f:do if(c[(c[Lb>>2]|0)+8>>2]|0){if(!(d[(c[Lb>>2]|0)+42>>0]&32))l=0;else l=Ej(c[Lb>>2]|0)|0;c[Gb>>2]=l;c[hb>>2]=xz(c[Yb>>2]|0,138,1)|0;Rw(c[Yb>>2]|0,21,0,0)|0;Fz(c[Yb>>2]|0,c[hb>>2]|0);fC(c[Xb>>2]|0);gC(c[Xb>>2]|0,c[Lb>>2]|0,54,0,1,0,ob,pb)|0;Rw(c[Yb>>2]|0,22,0,7)|0;c[rb>>2]=0;c[Fb>>2]=c[(c[Lb>>2]|0)+8>>2];while(1){if(!(c[Fb>>2]|0))break;Rw(c[Yb>>2]|0,22,0,8+(c[rb>>2]|0)|0)|0;c[Fb>>2]=c[(c[Fb>>2]|0)+20>>2];c[rb>>2]=(c[rb>>2]|0)+1}if((c[(c[Xb>>2]|0)+76>>2]|0)>(8+(c[rb>>2]|0)|0))l=c[(c[Xb>>2]|0)+76>>2]|0;else l=8+(c[rb>>2]|0)|0;c[(c[Xb>>2]|0)+76>>2]=l;Rw(c[Yb>>2]|0,108,c[ob>>2]|0,0)|0;c[Ab>>2]=Rw(c[Yb>>2]|0,37,7,1)|0;c[rb>>2]=0;while(1){if((c[rb>>2]|0)>=(b[(c[Lb>>2]|0)+34>>1]|0))break;do if((c[rb>>2]|0)!=(b[(c[Lb>>2]|0)+32>>1]|0)){if(!(d[(c[(c[Lb>>2]|0)+4>>2]|0)+((c[rb>>2]|0)*24|0)+20>>0]|0))break;tA(c[Yb>>2]|0,c[Lb>>2]|0,c[ob>>2]|0,c[rb>>2]|0,3);Fh(c[Yb>>2]|0,-128);c[sb>>2]=xz(c[Yb>>2]|0,77,3)|0;Rw(c[Yb>>2]|0,37,1,-1)|0;Qb=c[Zb>>2]|0;Pb=c[(c[(c[Lb>>2]|0)+4>>2]|0)+((c[rb>>2]|0)*24|0)>>2]|0;c[Sb>>2]=c[c[Lb>>2]>>2];c[Sb+4>>2]=Pb;c[Ub>>2]=Bh(Qb,33329,Sb)|0;Uw(c[Yb>>2]|0,97,0,3,0,c[Ub>>2]|0,-1)|0;Rw(c[Yb>>2]|0,33,3,1)|0;c[ub>>2]=xz(c[Yb>>2]|0,138,1)|0;Yw(c[Yb>>2]|0,21)|0;Fz(c[Yb>>2]|0,c[sb>>2]|0);Fz(c[Yb>>2]|0,c[ub>>2]|0)}while(0);c[rb>>2]=(c[rb>>2]|0)+1}c[rb>>2]=0;c[Fb>>2]=c[(c[Lb>>2]|0)+8>>2];while(1){l=c[Yb>>2]|0;if(!(c[Fb>>2]|0))break;c[ib>>2]=Cz(l)|0;if((c[Gb>>2]|0)!=(c[Fb>>2]|0)){c[Nb>>2]=Xz(c[Xb>>2]|0,c[Fb>>2]|0,c[ob>>2]|0,0,0,vb,c[Ib>>2]|0,c[Nb>>2]|0)|0;c[Ib>>2]=c[Fb>>2];Rw(c[Yb>>2]|0,37,8+(c[rb>>2]|0)|0,1)|0;c[tb>>2]=Eh(c[Yb>>2]|0,69,(c[pb>>2]|0)+(c[rb>>2]|0)|0,c[ib>>2]|0,c[Nb>>2]|0,e[(c[Fb>>2]|0)+52>>1]|0)|0;Rw(c[Yb>>2]|0,37,1,-1)|0;Tw(c[Yb>>2]|0,3,33349)|0;Vw(c[Yb>>2]|0,94,7,3,3)|0;Tw(c[Yb>>2]|0,4,33354)|0;Vw(c[Yb>>2]|0,94,4,3,3)|0;c[xb>>2]=Tw(c[Yb>>2]|0,4,c[c[Fb>>2]>>2]|0)|0;Vw(c[Yb>>2]|0,94,4,3,3)|0;Rw(c[Yb>>2]|0,33,3,1)|0;c[wb>>2]=xz(c[Yb>>2]|0,138,1)|0;Yw(c[Yb>>2]|0,21)|0;Fz(c[Yb>>2]|0,c[tb>>2]|0);if(d[(c[Fb>>2]|0)+54>>0]|0){c[Ob>>2]=Cz(c[Yb>>2]|0)|0;c[zb>>2]=0;while(1){if((c[zb>>2]|0)>=(e[(c[Fb>>2]|0)+50>>1]|0))break;c[nb>>2]=b[(c[(c[Fb>>2]|0)+4>>2]|0)+(c[zb>>2]<<1)>>1];if(!((c[nb>>2]|0)>=0?(d[(c[(c[Lb>>2]|0)+4>>2]|0)+((c[nb>>2]|0)*24|0)+20>>0]|0)!=0:0))Rw(c[Yb>>2]|0,76,(c[Nb>>2]|0)+(c[zb>>2]|0)|0,c[Ob>>2]|0)|0;c[zb>>2]=(c[zb>>2]|0)+1}c[yb>>2]=xz(c[Yb>>2]|0,7,(c[pb>>2]|0)+(c[rb>>2]|0)|0)|0;Ez(c[Yb>>2]|0,c[Ob>>2]|0)|0;Fz(c[Yb>>2]|0,c[yb>>2]|0);Eh(c[Yb>>2]|0,115,(c[pb>>2]|0)+(c[rb>>2]|0)|0,c[Ob>>2]|0,c[Nb>>2]|0,e[(c[Fb>>2]|0)+50>>1]|0)|0;Rw(c[Yb>>2]|0,37,1,-1)|0;Tw(c[Yb>>2]|0,3,33375)|0;Ez(c[Yb>>2]|0,c[xb>>2]|0)|0;Gz(c[Yb>>2]|0,c[Ob>>2]|0)}Fz(c[Yb>>2]|0,c[wb>>2]|0);Yz(c[Xb>>2]|0,c[vb>>2]|0)}c[Fb>>2]=c[(c[Fb>>2]|0)+20>>2];c[rb>>2]=(c[rb>>2]|0)+1}Rw(l,7,c[ob>>2]|0,c[Ab>>2]|0)|0;Fz(c[Yb>>2]|0,(c[Ab>>2]|0)-1|0);Tw(c[Yb>>2]|0,2,33402)|0;c[rb>>2]=0;c[Fb>>2]=c[(c[Lb>>2]|0)+8>>2];while(1){if(!(c[Fb>>2]|0))break f;if((c[Gb>>2]|0)!=(c[Fb>>2]|0)){c[hb>>2]=Bz(c[Yb>>2]|0)|0;Rw(c[Yb>>2]|0,138,1,(c[hb>>2]|0)+2|0)|0;Rw(c[Yb>>2]|0,21,0,0)|0;Rw(c[Yb>>2]|0,50,(c[pb>>2]|0)+(c[rb>>2]|0)|0,3)|0;Vw(c[Yb>>2]|0,79,8+(c[rb>>2]|0)|0,(c[hb>>2]|0)+8|0,3)|0;Fh(c[Yb>>2]|0,-112);Rw(c[Yb>>2]|0,37,1,-1)|0;Tw(c[Yb>>2]|0,3,c[c[Fb>>2]>>2]|0)|0;Vw(c[Yb>>2]|0,94,3,2,7)|0;Rw(c[Yb>>2]|0,33,7,1)|0}c[Fb>>2]=c[(c[Fb>>2]|0)+20>>2];c[rb>>2]=(c[rb>>2]|0)+1}}while(0);c[Tb>>2]=c[c[Tb>>2]>>2]}}while(0);c[mb>>2]=(c[mb>>2]|0)+1}c[gb>>2]=Gh(c[Yb>>2]|0,4,33431,0)|0;if(!(c[gb>>2]|0))break a;c[(c[gb>>2]|0)+8>>2]=0-(c[Cb>>2]|0);a[(c[gb>>2]|0)+40+1>>0]=-2;c[(c[gb>>2]|0)+40+16>>2]=33447;break a}case 12:{if(!(c[$b>>2]|0)){if(pz(c[Xb>>2]|0)|0)break a;LB(c[Yb>>2]|0,33450,c[6172+(d[(c[c[Xb>>2]>>2]|0)+62>>0]<<3)>>2]|0);break a}if((e[(c[(c[(c[Zb>>2]|0)+16>>2]|0)+12>>2]|0)+78>>1]&1|0)==1?(e[(c[(c[(c[Zb>>2]|0)+16>>2]|0)+12>>2]|0)+78>>1]&4|0)!=4:0)break a;c[Ha>>2]=6172;while(1){if(!(c[c[Ha>>2]>>2]|0))break;Yb=0==(Td(c[$b>>2]|0,c[c[Ha>>2]>>2]|0)|0);l=c[Ha>>2]|0;if(Yb){Vb=301;break}c[Ha>>2]=l+8}if((Vb|0)==301){if(d[l+4>>0]|0)l=d[(c[Ha>>2]|0)+4>>0]|0;else l=(a[960]|0)==0?3:2;Yb=l&255;a[(c[Zb>>2]|0)+62>>0]=Yb;a[(c[(c[(c[Zb>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]=Yb}if(c[c[Ha>>2]>>2]|0)break a;Yb=c[Xb>>2]|0;c[Ia>>2]=c[$b>>2];Ah(Yb,33459,Ia);break a}case 0:{c[P>>2]=c[(c[Hb>>2]|0)+8>>2];Hh(c[Yb>>2]|0,c[Wb>>2]|0);if((c[$b>>2]|0)!=0?(d[(c[Hb>>2]|0)+5>>0]&2|0)==0:0){c[w>>2]=Gh(c[Yb>>2]|0,2,33484,0)|0;c[(c[w>>2]|0)+4>>2]=c[Wb>>2];c[(c[w>>2]|0)+20+4>>2]=c[Wb>>2];c[(c[w>>2]|0)+20+8>>2]=c[P>>2];Yb=Ki(c[$b>>2]|0)|0;c[(c[w>>2]|0)+20+12>>2]=Yb;break a}c[x>>2]=Gh(c[Yb>>2]|0,3,33492,0)|0;c[(c[x>>2]|0)+4>>2]=c[Wb>>2];c[(c[x>>2]|0)+20+4>>2]=c[Wb>>2];c[(c[x>>2]|0)+20+12>>2]=c[P>>2];OB(c[Yb>>2]|0,1);PB(c[Yb>>2]|0,0,0,c[_b>>2]|0,-1)|0;break a}case 8:{c[M>>2]=0;c[(c[Xb>>2]|0)+76>>2]=1;MB(c[Yb>>2]|0,33504);while(1){Xb=c[M>>2]|0;c[M>>2]=Xb+1;Xb=Ad(Xb)|0;c[Ca>>2]=Xb;if(!Xb)break a;Tw(c[Yb>>2]|0,1,c[Ca>>2]|0)|0;Rw(c[Yb>>2]|0,33,1,1)|0}}case 36:{c[O>>2]=(c[c[s>>2]>>2]|0)!=0?c[Wb>>2]|0:10;c[G>>2]=0;do if(c[$b>>2]|0){if(!(Td(c[$b>>2]|0,33519)|0)){c[G>>2]=1;break}if(!(Td(c[$b>>2]|0,33524)|0)){c[G>>2]=2;break}if(!(Td(c[$b>>2]|0,33532)|0))c[G>>2]=3}while(0);_B(c[Yb>>2]|0,3,6244);c[(c[Xb>>2]|0)+76>>2]=3;Vw(c[Yb>>2]|0,8,c[O>>2]|0,c[G>>2]|0,1)|0; -Rw(c[Yb>>2]|0,33,1,3)|0;break a}case 35:{if(c[$b>>2]|0){Xb=c[Zb>>2]|0;yf(Xb,Ki(c[$b>>2]|0)|0)|0}if((c[(c[Zb>>2]|0)+216>>2]|0)==139)l=c[(c[Zb>>2]|0)+220>>2]|0;else l=0;NB(c[Yb>>2]|0,33541,l,((l|0)<0)<<31>>31);break a}case 27:{nf(c[Zb>>2]|0)|0;break a}case 28:{if((c[$b>>2]|0)!=0?(Ci(c[$b>>2]|0,t)|0)==0:0){Xb=t;Gd(c[Xb>>2]|0,c[Xb+4>>2]|0)|0}Xb=c[Yb>>2]|0;Yb=Gd(-1,-1)|0;NB(Xb,33568,Yb,C);break a}case 34:{if((c[$b>>2]|0)!=0?(Vb=(Ci(c[$b>>2]|0,u)|0)==0,Xb=u,Wb=c[Xb+4>>2]|0,Vb&((Wb|0)>0|(Wb|0)==0&(c[Xb>>2]|0)>>>0>=0)):0)Df(c[Zb>>2]|0,11,c[u>>2]&2147483647)|0;Xb=c[Yb>>2]|0;Yb=Df(c[Zb>>2]|0,11,-1)|0;NB(Xb,33584,Yb,((Yb|0)<0)<<31>>31);break a}default:{if(c[$b>>2]|0){Xb=c[Zb>>2]|0;uf(Xb,Ki(c[$b>>2]|0)|0)|0}Xb=c[(c[Zb>>2]|0)+496>>2]|0;NB(c[Yb>>2]|0,33560,Xb,((Xb|0)<0)<<31>>31);break a}}while(0)}}while(0);Sf(c[Zb>>2]|0,c[_b>>2]|0);Sf(c[Zb>>2]|0,c[$b>>2]|0);i=ac;return}function iw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+112|0;t=w+24|0;s=w;f=w+108|0;g=w+104|0;h=w+100|0;p=w+96|0;v=w+92|0;j=w+88|0;q=w+64|0;k=w+56|0;l=w+48|0;r=w+44|0;u=w+40|0;n=w+36|0;m=w+32|0;o=w+28|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[p>>2]=c[(c[f>>2]|0)+492>>2];c[j>>2]=c[c[f>>2]>>2];c[(c[f>>2]|0)+492>>2]=0;do if((c[p>>2]|0)!=0?(c[(c[f>>2]|0)+68>>2]|0)==0:0){c[v>>2]=c[c[p>>2]>>2];c[k>>2]=Dh(c[c[f>>2]>>2]|0,c[(c[p>>2]|0)+20>>2]|0)|0;c[(c[p>>2]|0)+28>>2]=c[g>>2];while(1){e=c[p>>2]|0;if(!(c[g>>2]|0))break;c[(c[g>>2]|0)+4>>2]=e;c[g>>2]=c[(c[g>>2]|0)+28>>2]}Cy(l,c[e>>2]|0);EB(q,c[f>>2]|0,c[k>>2]|0,19528,l);if((JB(q,c[(c[p>>2]|0)+28>>2]|0)|0)==0?(HB(q,c[(c[p>>2]|0)+12>>2]|0)|0)==0:0){if(!(a[(c[j>>2]|0)+140+5>>0]|0)){c[r>>2]=Pw(c[f>>2]|0)|0;if(!(c[r>>2]|0))break;ax(c[f>>2]|0,0,c[k>>2]|0);c[u>>2]=Iw(c[j>>2]|0,c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+4>>2]|0,0)|0;q=c[f>>2]|0;b=(c[k>>2]|0)==1?20769:20788;d=c[v>>2]|0;h=c[(c[p>>2]|0)+4>>2]|0;l=c[u>>2]|0;c[s>>2]=c[(c[(c[j>>2]|0)+16>>2]|0)+(c[k>>2]<<4)>>2];c[s+4>>2]=b;c[s+8>>2]=d;c[s+12>>2]=h;c[s+16>>2]=l;Ow(q,32822,s);Sf(c[j>>2]|0,c[u>>2]|0);Qw(c[f>>2]|0,c[k>>2]|0);r=c[r>>2]|0;s=c[k>>2]|0;u=c[j>>2]|0;c[t>>2]=c[v>>2];Sw(r,s,Bh(u,32886,t)|0)}if(a[(c[j>>2]|0)+140+5>>0]|0){c[n>>2]=c[p>>2];c[m>>2]=(c[(c[(c[j>>2]|0)+16>>2]|0)+(c[k>>2]<<4)+12>>2]|0)+40;c[p>>2]=Oj(c[m>>2]|0,c[v>>2]|0,c[p>>2]|0)|0;if(c[p>>2]|0){jh(c[j>>2]|0);break}if((c[(c[n>>2]|0)+20>>2]|0)==(c[(c[n>>2]|0)+24>>2]|0)){c[o>>2]=nj((c[(c[n>>2]|0)+24>>2]|0)+8|0,c[(c[n>>2]|0)+4>>2]|0)|0;c[(c[n>>2]|0)+32>>2]=c[(c[o>>2]|0)+60>>2];c[(c[o>>2]|0)+60>>2]=c[n>>2]}}}}while(0);Pf(c[j>>2]|0,c[p>>2]|0);bv(c[j>>2]|0,c[g>>2]|0);i=w;return}function jw(b,e,f,g,h,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+160|0;v=Q+48|0;u=Q+32|0;t=Q+24|0;F=Q+16|0;s=Q+8|0;r=Q;I=Q+156|0;o=Q+152|0;p=Q+148|0;x=Q+144|0;y=Q+140|0;J=Q+136|0;K=Q+132|0;L=Q+128|0;z=Q+124|0;A=Q+120|0;O=Q+116|0;E=Q+112|0;P=Q+108|0;M=Q+104|0;N=Q+100|0;D=Q+96|0;q=Q+72|0;C=Q+68|0;B=Q+64|0;G=Q+60|0;H=Q+56|0;c[I>>2]=b;c[o>>2]=e;c[p>>2]=f;c[x>>2]=g;c[y>>2]=h;c[J>>2]=j;c[K>>2]=k;c[L>>2]=l;c[z>>2]=m;c[A>>2]=n;c[O>>2]=0;c[P>>2]=0;c[M>>2]=c[c[I>>2]>>2];do if(c[z>>2]|0)if((c[(c[p>>2]|0)+4>>2]|0)>>>0<=0){c[N>>2]=1;c[D>>2]=c[o>>2];if(c[K>>2]|0){w=6;break}else break}else{Ah(c[I>>2]|0,32505,r);break}else{c[N>>2]=tz(c[I>>2]|0,c[o>>2]|0,c[p>>2]|0,D)|0;if((c[N>>2]|0)>=0&(c[K>>2]|0)!=0)w=6}while(0);do if((w|0)==6?(d[(c[M>>2]|0)+65>>0]|0)==0:0){if((c[N>>2]|0)!=1?(d[(c[M>>2]|0)+140+5>>0]|0)!=0:0){Sf(c[M>>2]|0,c[(c[K>>2]|0)+8+4>>2]|0);c[(c[K>>2]|0)+8+4>>2]=0}c[E>>2]=DB(c[I>>2]|0,c[K>>2]|0)|0;if(((d[(c[M>>2]|0)+140+5>>0]|0)==0?(c[E>>2]|0)!=0?(c[(c[p>>2]|0)+4>>2]|0)==0:0:0)?(c[(c[E>>2]|0)+64>>2]|0)==(c[(c[(c[M>>2]|0)+16>>2]|0)+16+12>>2]|0):0)c[N>>2]=1;if((a[(c[M>>2]|0)+65>>0]|0)==0?(EB(q,c[I>>2]|0,c[N>>2]|0,19528,c[D>>2]|0),(FB(q,c[K>>2]|0)|0)==0):0){c[E>>2]=DB(c[I>>2]|0,c[K>>2]|0)|0;if(!(c[E>>2]|0)){if((d[(c[M>>2]|0)+140+4>>0]|0)!=1)break;a[(c[M>>2]|0)+140+6>>0]=1;break}if(d[(c[E>>2]|0)+42>>0]&16){Ah(c[I>>2]|0,32551,s);break}c[P>>2]=Dw(c[M>>2]|0,c[D>>2]|0)|0;if((c[P>>2]|0)!=0?0==(yx(c[I>>2]|0,c[P>>2]|0)|0):0){if(nj((c[(c[(c[M>>2]|0)+16>>2]|0)+(c[N>>2]<<4)+12>>2]|0)+40|0,c[P>>2]|0)|0){o=c[I>>2]|0;if(c[A>>2]|0){bx(o,c[N>>2]|0);break}else{c[F>>2]=c[D>>2];Ah(o,32592,F);break}}if(!(zd(c[c[E>>2]>>2]|0,28715,7)|0)){Ah(c[I>>2]|0,32618,t);break}if((c[x>>2]|0)!=49?(c[(c[E>>2]|0)+12>>2]|0)!=0:0){N=c[I>>2]|0;H=c[K>>2]|0;c[u>>2]=(c[x>>2]|0)==35?32656:32663;c[u+4>>2]=H;c[u+8>>2]=0;Ah(N,32669,u);break}if((c[x>>2]|0)==49?(c[(c[E>>2]|0)+12>>2]|0)==0:0){N=c[I>>2]|0;c[v>>2]=c[K>>2];c[v+4>>2]=0;Ah(N,32706,v);break}c[C>>2]=Dh(c[M>>2]|0,c[(c[E>>2]|0)+64>>2]|0)|0;c[B>>2]=7;c[G>>2]=c[(c[(c[M>>2]|0)+16>>2]|0)+(c[C>>2]<<4)>>2];if(c[z>>2]|0)o=c[(c[(c[M>>2]|0)+16>>2]|0)+16>>2]|0;else o=c[G>>2]|0;c[H>>2]=o;if((c[C>>2]|0)==1|(c[z>>2]|0)!=0)c[B>>2]=5;if((Mw(c[I>>2]|0,c[B>>2]|0,c[P>>2]|0,c[c[E>>2]>>2]|0,c[H>>2]|0)|0)==0?(Mw(c[I>>2]|0,18,(c[C>>2]|0)==1?20769:20788,0,c[G>>2]|0)|0)==0:0){if((c[x>>2]|0)==49)c[x>>2]=35;c[O>>2]=ph(c[M>>2]|0,36,0)|0;if(!(c[O>>2]|0))break;c[c[O>>2]>>2]=c[P>>2];c[P>>2]=0;H=nh(c[M>>2]|0,c[(c[K>>2]|0)+8+8>>2]|0)|0;c[(c[O>>2]|0)+4>>2]=H;c[(c[O>>2]|0)+20>>2]=c[(c[(c[M>>2]|0)+16>>2]|0)+(c[N>>2]<<4)+12>>2];c[(c[O>>2]|0)+24>>2]=c[(c[E>>2]|0)+64>>2];a[(c[O>>2]|0)+8>>0]=c[y>>2];a[(c[O>>2]|0)+9>>0]=(c[x>>2]|0)==35?1:2;N=ny(c[M>>2]|0,c[L>>2]|0,1)|0;c[(c[O>>2]|0)+12>>2]=N;N=nz(c[M>>2]|0,c[J>>2]|0)|0;c[(c[O>>2]|0)+16>>2]=N;c[(c[I>>2]|0)+492>>2]=c[O>>2]}}}}while(0);Sf(c[M>>2]|0,c[P>>2]|0);Yu(c[M>>2]|0,c[K>>2]|0);_u(c[M>>2]|0,c[J>>2]|0);Zu(c[M>>2]|0,c[L>>2]|0);if(c[(c[I>>2]|0)+492>>2]|0){i=Q;return}Pf(c[M>>2]|0,c[O>>2]|0);i=Q;return}function kw(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;h=n+16|0;o=n+12|0;j=n+8|0;k=n+4|0;l=n+20|0;m=n;c[h>>2]=b;c[o>>2]=d;c[j>>2]=e;c[k>>2]=f;a[l>>0]=g;c[m>>2]=CB(c[h>>2]|0,110,c[o>>2]|0)|0;if(c[m>>2]|0){o=vy(c[h>>2]|0,c[j>>2]|0,1)|0;c[(c[m>>2]|0)+20>>2]=o;o=ny(c[h>>2]|0,c[k>>2]|0,1)|0;c[(c[m>>2]|0)+16>>2]=o;a[(c[m>>2]|0)+1>>0]=a[l>>0]|0}Vu(c[h>>2]|0,c[j>>2]|0);Zu(c[h>>2]|0,c[k>>2]|0);i=n;return c[m>>2]|0}function lw(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;h=n+16|0;o=n+12|0;j=n+8|0;k=n+4|0;l=n+20|0;m=n;c[h>>2]=b;c[o>>2]=d;c[j>>2]=e;c[k>>2]=f;a[l>>0]=g;c[m>>2]=CB(c[h>>2]|0,108,c[o>>2]|0)|0;b=c[h>>2]|0;if(c[m>>2]|0){o=Hx(b,c[k>>2]|0,1)|0;c[(c[m>>2]|0)+8>>2]=o;c[(c[m>>2]|0)+24>>2]=c[j>>2];a[(c[m>>2]|0)+1>>0]=a[l>>0]|0;l=c[h>>2]|0;o=c[k>>2]|0;Wu(l,o);o=c[m>>2]|0;i=n;return o|0}else{_u(b,c[j>>2]|0);l=c[h>>2]|0;o=c[k>>2]|0;Wu(l,o);o=c[m>>2]|0;i=n;return o|0}return 0}function mw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;f=j+12|0;k=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[k>>2]=d;c[g>>2]=e;c[h>>2]=CB(c[f>>2]|0,109,c[k>>2]|0)|0;if(c[h>>2]|0){k=ny(c[f>>2]|0,c[g>>2]|0,1)|0;c[(c[h>>2]|0)+16>>2]=k;a[(c[h>>2]|0)+1>>0]=10}Zu(c[f>>2]|0,c[g>>2]|0);i=j;return c[h>>2]|0}function nw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=b;c[g>>2]=d;c[h>>2]=ph(c[f>>2]|0,36,0)|0;if(!(c[h>>2]|0)){Wu(c[f>>2]|0,c[g>>2]|0);c[e>>2]=0;h=c[e>>2]|0;i=j;return h|0}else{a[c[h>>2]>>0]=119;c[(c[h>>2]|0)+8>>2]=c[g>>2];a[(c[h>>2]|0)+1>>0]=10;c[e>>2]=c[h>>2];h=c[e>>2]|0;i=j;return h|0}return 0}function ow(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;p=r;l=r+40|0;m=r+36|0;n=r+32|0;h=r+28|0;f=r+24|0;q=r+20|0;j=r+16|0;o=r+12|0;g=r+8|0;c[l>>2]=b;c[m>>2]=d;c[n>>2]=e;c[h>>2]=0;c[o>>2]=c[c[l>>2]>>2];if(a[(c[o>>2]|0)+65>>0]|0){p=c[o>>2]|0;q=c[m>>2]|0;Yu(p,q);i=r;return}if(pz(c[l>>2]|0)|0){p=c[o>>2]|0;q=c[m>>2]|0;Yu(p,q);i=r;return}c[q>>2]=c[(c[m>>2]|0)+8+4>>2];c[j>>2]=c[(c[m>>2]|0)+8+8>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[o>>2]|0)+20>>2]|0))break;b=c[f>>2]|0;c[g>>2]=(c[f>>2]|0)<2?b^1:b;if(!((c[q>>2]|0)!=0?(Td(c[(c[(c[o>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2]|0,c[q>>2]|0)|0)!=0:0))k=7;if((k|0)==7?(k=0,c[h>>2]=nj((c[(c[(c[o>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+12>>2]|0)+40|0,c[j>>2]|0)|0,(c[h>>2]|0)!=0):0)break;c[f>>2]=(c[f>>2]|0)+1}if(c[h>>2]|0){AB(c[l>>2]|0,c[h>>2]|0);p=c[o>>2]|0;q=c[m>>2]|0;Yu(p,q);i=r;return}f=c[l>>2]|0;if(c[n>>2]|0)zB(f,c[q>>2]|0);else{c[p>>2]=c[m>>2];c[p+4>>2]=0;Ah(f,32434,p)}a[(c[l>>2]|0)+17>>0]=1;p=c[o>>2]|0;q=c[m>>2]|0;Yu(p,q);i=r;return}function pw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;iB(c[k>>2]|0,24,5280,c[j>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0);i=f;return}function qw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;iB(c[f>>2]|0,25,5248,c[e>>2]|0,0,0,c[e>>2]|0);i=d;return}function rw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;t=u;q=u+48|0;f=u+44|0;g=u+40|0;j=u+36|0;m=u+32|0;o=u+28|0;l=u+24|0;s=u+20|0;r=u+16|0;h=u+12|0;k=u+8|0;n=u+4|0;c[q>>2]=b;c[f>>2]=d;c[g>>2]=e;c[h>>2]=c[c[q>>2]>>2];if(pz(c[q>>2]|0)|0){i=u;return}if(!(c[f>>2]|0)){Sz(c[q>>2]|0,0);i=u;return}if(!((c[g>>2]|0)!=0?(c[c[g>>2]>>2]|0)!=0:0))p=6;do if((p|0)==6){c[n>>2]=Dw(c[c[q>>2]>>2]|0,c[f>>2]|0)|0;if(!(c[n>>2]|0)){i=u;return}c[j>>2]=Mj(c[h>>2]|0,a[(c[h>>2]|0)+62>>0]|0,c[n>>2]|0,0)|0;if(!(c[j>>2]|0)){Sf(c[h>>2]|0,c[n>>2]|0);break}Sz(c[q>>2]|0,c[n>>2]|0);Sf(c[h>>2]|0,c[n>>2]|0);i=u;return}while(0);c[r>>2]=tz(c[q>>2]|0,c[f>>2]|0,c[g>>2]|0,k)|0;if((c[r>>2]|0)<0){i=u;return}c[m>>2]=Dw(c[h>>2]|0,c[k>>2]|0)|0;if(!(c[m>>2]|0)){i=u;return}c[o>>2]=c[(c[(c[h>>2]|0)+16>>2]|0)+(c[r>>2]<<4)>>2];c[l>>2]=pi(c[h>>2]|0,c[m>>2]|0,c[o>>2]|0)|0;if(c[l>>2]|0){Tz(c[q>>2]|0,c[l>>2]|0,0);Sf(c[h>>2]|0,c[m>>2]|0);i=u;return}c[s>>2]=Fj(c[h>>2]|0,c[m>>2]|0,c[o>>2]|0)|0;Sf(c[h>>2]|0,c[m>>2]|0);f=c[q>>2]|0;if(c[s>>2]|0){ax(f,0,c[r>>2]|0);Uz(c[q>>2]|0,c[s>>2]|0,-1);i=u;return}else{Ah(f,31878,t);i=u;return}}function sw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;l=r+44|0;e=r+40|0;f=r+36|0;m=r+32|0;h=r+28|0;g=r+24|0;q=r+20|0;k=r+16|0;o=r+12|0;n=r+8|0;j=r+4|0;p=r;c[l>>2]=a;c[e>>2]=b;c[f>>2]=d;c[m>>2]=c[c[l>>2]>>2];if(pz(c[l>>2]|0)|0){i=r;return}a:do if(c[e>>2]|0){if(c[(c[f>>2]|0)+4>>2]|0){c[h>>2]=tz(c[l>>2]|0,c[e>>2]|0,c[f>>2]|0,j)|0;if((c[h>>2]|0)<0)break;c[k>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2];c[q>>2]=Dw(c[m>>2]|0,c[j>>2]|0)|0;if(!(c[q>>2]|0))break;j=Fj(c[m>>2]|0,c[q>>2]|0,c[k>>2]|0)|0;c[n>>2]=j;e=c[l>>2]|0;if(!j){n=zh(e,0,c[q>>2]|0,c[k>>2]|0)|0;c[o>>2]=n;if(n)sz(c[l>>2]|0,c[o>>2]|0,0)}else sz(e,c[(c[n>>2]|0)+12>>2]|0,c[n>>2]|0);Sf(c[m>>2]|0,c[q>>2]|0);break}c[h>>2]=rz(c[m>>2]|0,c[e>>2]|0)|0;if((c[h>>2]|0)>=0){qz(c[l>>2]|0,c[h>>2]|0);break}c[q>>2]=Dw(c[m>>2]|0,c[e>>2]|0)|0;if(c[q>>2]|0){k=Fj(c[m>>2]|0,c[q>>2]|0,0)|0;c[n>>2]=k;e=c[l>>2]|0;if(!k){n=zh(e,0,c[q>>2]|0,0)|0;c[o>>2]=n;if(n)sz(c[l>>2]|0,c[o>>2]|0,0)}else sz(e,c[(c[n>>2]|0)+12>>2]|0,c[n>>2]|0);Sf(c[m>>2]|0,c[q>>2]|0)}}else{c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[m>>2]|0)+20>>2]|0))break a;if((c[g>>2]|0)!=1)qz(c[l>>2]|0,c[g>>2]|0);c[g>>2]=(c[g>>2]|0)+1}}while(0);c[p>>2]=Pw(c[l>>2]|0)|0;if(!(c[p>>2]|0)){i=r;return}Yw(c[p>>2]|0,147)|0;i=r;return}function tw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+176|0;y=E+96|0;x=E+80|0;w=E+40|0;z=E+16|0;v=E+8|0;h=E;j=E+172|0;k=E+168|0;g=E+164|0;n=E+160|0;A=E+156|0;r=E+152|0;B=E+148|0;l=E+144|0;o=E+140|0;C=E+136|0;u=E+132|0;D=E+128|0;s=E+124|0;t=E+120|0;m=E+116|0;p=E+112|0;q=E+108|0;c[j>>2]=b;c[k>>2]=e;c[g>>2]=f;c[B>>2]=0;c[l>>2]=c[c[j>>2]>>2];c[D>>2]=0;c[s>>2]=0;c[t>>2]=c[(c[l>>2]|0)+24>>2];do if(((a[(c[l>>2]|0)+65>>0]|0)==0?(c[r>>2]=_w(c[j>>2]|0,0,(c[k>>2]|0)+8|0)|0,(c[r>>2]|0)!=0):0)?(c[n>>2]=Dh(c[c[j>>2]>>2]|0,c[(c[r>>2]|0)+64>>2]|0)|0,c[A>>2]=c[(c[(c[l>>2]|0)+16>>2]|0)+(c[n>>2]<<4)>>2],e=(c[l>>2]|0)+24|0,c[e>>2]=c[e>>2]|2097152,c[B>>2]=Dw(c[l>>2]|0,c[g>>2]|0)|0,(c[B>>2]|0)!=0):0){if((pi(c[l>>2]|0,c[B>>2]|0,c[A>>2]|0)|0)==0?(Fj(c[l>>2]|0,c[B>>2]|0,c[A>>2]|0)|0)==0:0){if($w(c[j>>2]|0,c[c[r>>2]>>2]|0)|0)break;if(yx(c[j>>2]|0,c[B>>2]|0)|0)break;g=c[j>>2]|0;if(c[(c[r>>2]|0)+12>>2]|0){c[v>>2]=c[c[r>>2]>>2];Ah(g,29208,v);break}if(Mw(g,26,c[A>>2]|0,c[c[r>>2]>>2]|0,0)|0)break;if(zx(c[j>>2]|0,c[r>>2]|0)|0)break;if((d[(c[r>>2]|0)+42>>0]&16|0)!=0?(c[s>>2]=Ax(c[l>>2]|0,c[r>>2]|0)|0,(c[(c[c[(c[s>>2]|0)+8>>2]>>2]|0)+76>>2]|0)==0):0)c[s>>2]=0;c[u>>2]=Pw(c[j>>2]|0)|0;if(!(c[u>>2]|0))break;ax(c[j>>2]|0,(c[s>>2]|0)!=0&1,c[n>>2]|0);Qw(c[j>>2]|0,c[n>>2]|0);if(c[s>>2]|0){h=(c[j>>2]|0)+76|0;v=(c[h>>2]|0)+1|0;c[h>>2]=v;c[m>>2]=v;Tw(c[u>>2]|0,c[m>>2]|0,c[B>>2]|0)|0;Uw(c[u>>2]|0,155,c[m>>2]|0,0,0,c[s>>2]|0,-10)|0;Bx(c[j>>2]|0)}c[C>>2]=c[c[r>>2]>>2];c[o>>2]=Cx(c[C>>2]|0,-1)|0;if((c[(c[l>>2]|0)+24>>2]&524288|0)!=0?(v=Dx(c[j>>2]|0,c[r>>2]|0)|0,c[D>>2]=v,(v|0)!=0):0){v=c[j>>2]|0;h=(c[n>>2]|0)==1?20769:20788;m=c[C>>2]|0;s=c[B>>2]|0;u=c[D>>2]|0;c[z>>2]=c[A>>2];c[z+4>>2]=h;c[z+8>>2]=m;c[z+12>>2]=s;c[z+16>>2]=u;Ow(v,29235,z);Sf(c[l>>2]|0,c[D>>2]|0)}z=c[j>>2]|0;e=(c[n>>2]|0)==1?20769:20788;h=c[B>>2]|0;m=c[B>>2]|0;n=c[B>>2]|0;s=c[B>>2]|0;u=c[B>>2]|0;v=c[o>>2]|0;C=c[C>>2]|0;c[w>>2]=c[A>>2];c[w+4>>2]=e;c[w+8>>2]=h;c[w+12>>2]=m;c[w+16>>2]=n;c[w+20>>2]=s;c[w+24>>2]=u;c[w+28>>2]=v;c[w+32>>2]=C;Ow(z,29304,w);if(pi(c[l>>2]|0,29688,c[A>>2]|0)|0){C=c[j>>2]|0;w=c[B>>2]|0;z=c[c[r>>2]>>2]|0;c[x>>2]=c[A>>2];c[x+4>>2]=w;c[x+8>>2]=z;Ow(C,29704,x)}C=gx(c[j>>2]|0,c[r>>2]|0)|0;c[D>>2]=C;if(C){C=c[j>>2]|0;z=c[B>>2]|0;A=c[D>>2]|0;c[y>>2]=c[B>>2];c[y+4>>2]=z;c[y+8>>2]=A;Ow(C,29762,y);Sf(c[l>>2]|0,c[D>>2]|0)}a:do if(c[(c[l>>2]|0)+24>>2]&524288){c[p>>2]=Ex(c[r>>2]|0)|0;while(1){if(!(c[p>>2]|0))break a;c[q>>2]=c[c[p>>2]>>2];if((c[q>>2]|0)!=(c[r>>2]|0))ex(c[j>>2]|0,c[c[p>>2]>>2]|0,c[c[q>>2]>>2]|0);c[p>>2]=c[(c[p>>2]|0)+12>>2]}}while(0);ex(c[j>>2]|0,c[r>>2]|0,c[B>>2]|0);break}D=c[j>>2]|0;c[h>>2]=c[B>>2];Ah(D,29149,h)}while(0);Yu(c[l>>2]|0,c[k>>2]|0);Sf(c[l>>2]|0,c[B>>2]|0);c[(c[l>>2]|0)+24>>2]=c[t>>2];i=E;return}function uw(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+128|0;v=D+40|0;u=D+32|0;y=D+24|0;x=D+16|0;w=D+8|0;t=D;g=D+124|0;h=D+120|0;n=D+116|0;o=D+112|0;k=D+108|0;A=D+104|0;C=D+100|0;z=D+96|0;l=D+92|0;m=D+88|0;j=D+84|0;s=D+80|0;p=D+76|0;q=D+72|0;B=D+68|0;r=D+64|0;c[g>>2]=e;c[h>>2]=f;c[s>>2]=c[(c[g>>2]|0)+8>>2];c[j>>2]=c[c[g>>2]>>2];if(c[(c[g>>2]|0)+68>>2]|0){i=D;return}if(d[(c[j>>2]|0)+65>>0]|0){i=D;return}c[n>>2]=c[(c[g>>2]|0)+488>>2];c[k>>2]=Dh(c[j>>2]|0,c[(c[n>>2]|0)+64>>2]|0)|0;c[A>>2]=c[(c[(c[j>>2]|0)+16>>2]|0)+(c[k>>2]<<4)>>2];c[C>>2]=(c[c[n>>2]>>2]|0)+16;c[l>>2]=(c[(c[n>>2]|0)+4>>2]|0)+(((b[(c[n>>2]|0)+34>>1]|0)-1|0)*24|0);c[m>>2]=c[(c[l>>2]|0)+4>>2];c[o>>2]=pi(c[j>>2]|0,c[C>>2]|0,c[A>>2]|0)|0;if(Mw(c[g>>2]|0,26,c[A>>2]|0,c[c[o>>2]>>2]|0,0)|0){i=D;return}if((c[m>>2]|0)!=0?(d[c[m>>2]>>0]|0)==101:0)c[m>>2]=0;if(d[(c[l>>2]|0)+23>>0]&1){Ah(c[g>>2]|0,28751,t);i=D;return}if(c[(c[n>>2]|0)+8>>2]|0){Ah(c[g>>2]|0,28783,w);i=D;return}if((c[(c[j>>2]|0)+24>>2]&524288|0)!=0?(c[m>>2]|0)!=0?(c[(c[n>>2]|0)+16>>2]|0)!=0:0:0){Ah(c[g>>2]|0,28810,x);i=D;return}if(!((c[m>>2]|0)!=0?1:(d[(c[l>>2]|0)+20>>0]|0)==0)){Ah(c[g>>2]|0,28869,y);i=D;return}do if(c[m>>2]|0){c[p>>2]=0;c[q>>2]=dx(c[j>>2]|0,c[m>>2]|0,1,65,p)|0;if(c[q>>2]|0){i=D;return}if(c[p>>2]|0){$g(c[p>>2]|0);break}Ah(c[g>>2]|0,28922,u);i=D;return}while(0);c[z>>2]=Iw(c[j>>2]|0,c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+4>>2]|0,0)|0;if(c[z>>2]|0){c[B>>2]=(c[z>>2]|0)+((c[(c[h>>2]|0)+4>>2]|0)-1);c[r>>2]=c[(c[j>>2]|0)+24>>2];while(1){if((c[B>>2]|0)>>>0<=(c[z>>2]|0)>>>0)break;if((a[c[B>>2]>>0]|0)!=59?(d[19267+(d[c[B>>2]>>0]|0)>>0]&1|0)==0:0)break;y=c[B>>2]|0;c[B>>2]=y+-1;a[y>>0]=0}B=(c[j>>2]|0)+24|0;c[B>>2]=c[B>>2]|2097152;B=c[g>>2]|0;u=(c[k>>2]|0)==1?20769:20788;w=c[(c[n>>2]|0)+44>>2]|0;x=c[z>>2]|0;y=(c[(c[n>>2]|0)+44>>2]|0)+1|0;C=c[C>>2]|0;c[v>>2]=c[A>>2];c[v+4>>2]=u;c[v+8>>2]=w;c[v+12>>2]=x;c[v+16>>2]=y;c[v+20>>2]=C;Ow(B,28968,v);Sf(c[j>>2]|0,c[z>>2]|0);c[(c[j>>2]|0)+24>>2]=c[r>>2]}Vw(c[s>>2]|0,52,c[k>>2]|0,2,4)|0;ex(c[g>>2]|0,c[o>>2]|0,c[c[o>>2]>>2]|0);i=D;return}function vw(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+64|0;t=u+16|0;s=u+8|0;g=u;h=u+56|0;j=u+52|0;p=u+48|0;q=u+44|0;r=u+40|0;m=u+36|0;l=u+32|0;n=u+28|0;k=u+24|0;o=u+20|0;c[h>>2]=e;c[j>>2]=f;c[k>>2]=c[c[h>>2]>>2];do if((a[(c[k>>2]|0)+65>>0]|0)==0?(c[q>>2]=_w(c[h>>2]|0,0,(c[j>>2]|0)+8|0)|0,(c[q>>2]|0)!=0):0){if(d[(c[q>>2]|0)+42>>0]&16){Ah(c[h>>2]|0,28562,g);break}e=c[h>>2]|0;if(c[(c[q>>2]|0)+12>>2]|0){Ah(e,28596,s);break}if(((0==($w(e,c[c[q>>2]>>2]|0)|0)?(c[m>>2]=Dh(c[k>>2]|0,c[(c[q>>2]|0)+64>>2]|0)|0,c[p>>2]=ph(c[k>>2]|0,72,0)|0,(c[p>>2]|0)!=0):0)?(c[(c[h>>2]|0)+488>>2]=c[p>>2],b[(c[p>>2]|0)+36>>1]=1,b[(c[p>>2]|0)+34>>1]=b[(c[q>>2]|0)+34>>1]|0,c[n>>2]=((((b[(c[p>>2]|0)+34>>1]|0)-1|0)/8|0)<<3)+8,s=ph(c[k>>2]|0,(c[n>>2]|0)*24|0,0)|0,c[(c[p>>2]|0)+4>>2]=s,s=c[k>>2]|0,c[t>>2]=c[c[q>>2]>>2],t=Bh(s,28626,t)|0,c[c[p>>2]>>2]=t,(c[(c[p>>2]|0)+4>>2]|0)!=0):0)?(c[c[p>>2]>>2]|0)!=0:0){iR(c[(c[p>>2]|0)+4>>2]|0,c[(c[q>>2]|0)+4>>2]|0,(b[(c[p>>2]|0)+34>>1]|0)*24|0)|0;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(b[(c[p>>2]|0)+34>>1]|0))break;c[o>>2]=(c[(c[p>>2]|0)+4>>2]|0)+((c[l>>2]|0)*24|0);t=nh(c[k>>2]|0,c[c[o>>2]>>2]|0)|0;c[c[o>>2]>>2]=t;c[(c[o>>2]|0)+16>>2]=0;c[(c[o>>2]|0)+12>>2]=0;c[(c[o>>2]|0)+4>>2]=0;c[(c[o>>2]|0)+8>>2]=0;c[l>>2]=(c[l>>2]|0)+1}c[(c[p>>2]|0)+64>>2]=c[(c[(c[k>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2];c[(c[p>>2]|0)+44>>2]=c[(c[q>>2]|0)+44>>2];b[(c[p>>2]|0)+36>>1]=1;ax(c[h>>2]|0,0,c[m>>2]|0);c[r>>2]=Pw(c[h>>2]|0)|0;if(c[r>>2]|0)Qw(c[h>>2]|0,c[m>>2]|0)}}while(0);Yu(c[k>>2]|0,c[j>>2]|0);i=u;return}function ww(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+96|0;q=u+32|0;p=u+8|0;o=u;e=u+80|0;f=u+76|0;m=u+72|0;g=u+68|0;s=u+64|0;t=u+60|0;h=u+56|0;j=u+52|0;n=u+48|0;k=u+44|0;l=u+40|0;r=u+36|0;c[e>>2]=b;c[f>>2]=d;c[m>>2]=c[(c[e>>2]|0)+488>>2];c[g>>2]=c[c[e>>2]>>2];if(!(c[m>>2]|0)){i=u;return}Kw(c[e>>2]|0);c[(c[e>>2]|0)+516>>2]=0;if((c[(c[m>>2]|0)+48>>2]|0)<1){i=u;return}if(!(a[(c[g>>2]|0)+140+5>>0]|0)){if(c[f>>2]|0)c[(c[e>>2]|0)+500+4>>2]=(c[c[f>>2]>>2]|0)-(c[(c[e>>2]|0)+500>>2]|0)+(c[(c[f>>2]|0)+4>>2]|0);r=c[g>>2]|0;c[o>>2]=(c[e>>2]|0)+500;c[s>>2]=Bh(r,28423,o)|0;c[h>>2]=Dh(c[g>>2]|0,c[(c[m>>2]|0)+64>>2]|0)|0;r=c[e>>2]|0;d=(c[h>>2]|0)==1?20769:20788;k=c[c[m>>2]>>2]|0;b=c[c[m>>2]>>2]|0;l=c[s>>2]|0;o=c[(c[e>>2]|0)+392>>2]|0;c[p>>2]=c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2];c[p+4>>2]=d;c[p+8>>2]=k;c[p+12>>2]=b;c[p+16>>2]=l;c[p+20>>2]=o;Ow(r,28447,p);Sf(c[g>>2]|0,c[s>>2]|0);c[n>>2]=Pw(c[e>>2]|0)|0;Qw(c[e>>2]|0,c[h>>2]|0);Rw(c[n>>2]|0,147,0,0)|0;s=c[g>>2]|0;c[q>>2]=c[c[m>>2]>>2];c[t>>2]=Bh(s,28535,q)|0;Sw(c[n>>2]|0,c[h>>2]|0,c[t>>2]|0);s=(c[e>>2]|0)+76|0;t=(c[s>>2]|0)+1|0;c[s>>2]=t;c[j>>2]=t;Tw(c[n>>2]|0,c[j>>2]|0,c[c[m>>2]>>2]|0)|0;Rw(c[n>>2]|0,150,c[h>>2]|0,c[j>>2]|0)|0;i=u;return}c[l>>2]=c[(c[m>>2]|0)+64>>2];c[r>>2]=c[c[m>>2]>>2];c[k>>2]=Oj((c[l>>2]|0)+8|0,c[r>>2]|0,c[m>>2]|0)|0;if(c[k>>2]|0){jh(c[g>>2]|0);i=u;return}else{c[(c[e>>2]|0)+488>>2]=0;i=u;return}}function xw(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+32|0;j=o+28|0;r=o+24|0;q=o+20|0;k=o+16|0;p=o+12|0;m=o+8|0;n=o+4|0;l=o;c[j>>2]=b;c[r>>2]=e;c[q>>2]=f;c[k>>2]=g;c[p>>2]=h;lv(c[j>>2]|0,c[r>>2]|0,c[q>>2]|0,0,0,1,c[p>>2]|0);c[n>>2]=c[(c[j>>2]|0)+488>>2];if(!(c[n>>2]|0)){i=o;return}c[l>>2]=c[c[j>>2]>>2];c[m>>2]=Dh(c[l>>2]|0,c[(c[n>>2]|0)+64>>2]|0)|0;r=(c[n>>2]|0)+42|0;a[r>>0]=d[r>>0]|0|16;c[(c[n>>2]|0)+48>>2]=0;r=c[l>>2]|0;q=c[n>>2]|0;Lw(r,q,Dw(c[l>>2]|0,c[k>>2]|0)|0);Lw(c[l>>2]|0,c[n>>2]|0,0);q=c[l>>2]|0;r=c[n>>2]|0;Lw(q,r,nh(c[l>>2]|0,c[c[n>>2]>>2]|0)|0);c[(c[j>>2]|0)+500+4>>2]=(c[c[k>>2]>>2]|0)+(c[(c[k>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+500>>2]|0);if(!(c[(c[n>>2]|0)+52>>2]|0)){i=o;return}Mw(c[j>>2]|0,29,c[c[n>>2]>>2]|0,c[c[(c[n>>2]|0)+52>>2]>>2]|0,c[(c[(c[c[j>>2]>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2]|0)|0;i=o;return}function yw(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Kw(c[d>>2]|0);c[(c[d>>2]|0)+516>>2]=0;c[(c[d>>2]|0)+516+4>>2]=0;i=b;return}function zw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[d>>2]=b;c[e>>2]=(c[g>>2]|0)+516;b=c[d>>2]|0;if(!(c[c[e>>2]>>2]|0)){c[c[e>>2]>>2]=c[b>>2];c[(c[e>>2]|0)+4>>2]=c[(c[d>>2]|0)+4>>2];i=f;return}else{c[(c[e>>2]|0)+4>>2]=(c[c[d>>2]>>2]|0)+(c[b+4>>2]|0)-(c[c[e>>2]>>2]|0);i=f;return}}function Aw(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;q=s;h=s+40|0;j=s+36|0;t=s+32|0;k=s+28|0;l=s+24|0;m=s+20|0;p=s+16|0;r=s+12|0;n=s+8|0;o=s+4|0;c[h>>2]=b;c[j>>2]=d;c[t>>2]=e;c[k>>2]=f;c[l>>2]=g;c[m>>2]=c[c[h>>2]>>2];c[r>>2]=Dw(c[c[h>>2]>>2]|0,c[t>>2]|0)|0;a:do if((c[r>>2]|0)!=0&(c[j>>2]|0)!=0){c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[c[j>>2]>>2]|0))break a;if(!(Td(c[r>>2]|0,c[(c[j>>2]|0)+8+(c[n>>2]<<4)>>2]|0)|0)){t=c[h>>2]|0;c[q>>2]=c[r>>2];Ah(t,28355,q)}c[n>>2]=(c[n>>2]|0)+1}}while(0);if(c[j>>2]|0){c[o>>2]=24+(c[c[j>>2]>>2]<<4);t=c[o>>2]|0;c[p>>2]=Ew(c[m>>2]|0,c[j>>2]|0,t,((t|0)<0)<<31>>31)|0}else c[p>>2]=ph(c[m>>2]|0,24,0)|0;if(a[(c[m>>2]|0)+65>>0]|0){Vu(c[m>>2]|0,c[k>>2]|0);Wu(c[m>>2]|0,c[l>>2]|0);Sf(c[m>>2]|0,c[r>>2]|0);c[p>>2]=c[j>>2];t=c[p>>2]|0;i=s;return t|0}else{c[(c[p>>2]|0)+8+(c[c[p>>2]>>2]<<4)+8>>2]=c[l>>2];c[(c[p>>2]|0)+8+(c[c[p>>2]>>2]<<4)+4>>2]=c[k>>2];c[(c[p>>2]|0)+8+(c[c[p>>2]>>2]<<4)>>2]=c[r>>2];c[(c[p>>2]|0)+8+(c[c[p>>2]>>2]<<4)+12>>2]=0;t=c[p>>2]|0;c[t>>2]=(c[t>>2]|0)+1;t=c[p>>2]|0;i=s;return t|0}return 0}function Bw(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;j=i;i=i+16|0;l=j+4|0;k=j+8|0;h=j;c[l>>2]=f;a[k>>0]=g;c[h>>2]=b[11910+(c[l>>2]<<1)>>1];c[h>>2]=(c[h>>2]|0)+(d[k>>0]|0);i=j;return e[12532+(c[h>>2]<<1)>>1]|0}function Cw(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+8>>2];while(1){if((c[c[b>>2]>>2]|0)<0)break;$u(c[b>>2]|0)}c[(c[b>>2]|0)+8>>2]=c[d>>2];i=e;return}function Dw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(c[e>>2]|0){c[f>>2]=Iw(c[d>>2]|0,c[c[e>>2]>>2]|0,c[(c[e>>2]|0)+4>>2]|0,0)|0;Jw(c[f>>2]|0)|0;f=c[f>>2]|0;i=g;return f|0}else{c[f>>2]=0;f=c[f>>2]|0;i=g;return f|0}return 0}function Ew(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l+8|0;k=l;c[h>>2]=a;c[j>>2]=b;b=k;c[b>>2]=d;c[b+4>>2]=f;d=c[h>>2]|0;if(!(c[j>>2]|0)){c[g>>2]=Fw(d,c[k>>2]|0,c[k+4>>2]|0)|0;k=c[g>>2]|0;i=l;return k|0}if((au(d,c[j>>2]|0)|0)!=0?(b=k,a=c[b+4>>2]|0,a>>>0<0|((a|0)==0?(c[b>>2]|0)>>>0<=(e[(c[h>>2]|0)+248+4>>1]|0)>>>0:0)):0){c[g>>2]=c[j>>2];k=c[g>>2]|0;i=l;return k|0}c[g>>2]=Gw(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;k=c[g>>2]|0;i=l;return k|0}function Fw(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l+12|0;j=l;k=l+8|0;c[h>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=f;do if(c[(c[h>>2]|0)+248>>2]|0){if(a[(c[h>>2]|0)+65>>0]|0){c[g>>2]=0;k=c[g>>2]|0;i=l;return k|0}}else{b=j;f=c[b+4>>2]|0;d=(c[h>>2]|0)+248|0;if(f>>>0>0|((f|0)==0?(c[b>>2]|0)>>>0>(e[(c[h>>2]|0)+248+4>>1]|0)>>>0:0)){k=d+16+4|0;c[k>>2]=(c[k>>2]|0)+1;break}b=c[d+28>>2]|0;c[k>>2]=b;if(!b){k=(c[h>>2]|0)+248+16+8|0;c[k>>2]=(c[k>>2]|0)+1;break}c[(c[h>>2]|0)+248+28>>2]=c[c[k>>2]>>2];j=(c[h>>2]|0)+248+8|0;c[j>>2]=(c[j>>2]|0)+1;j=(c[h>>2]|0)+248+16|0;c[j>>2]=(c[j>>2]|0)+1;if((c[(c[h>>2]|0)+248+8>>2]|0)>(c[(c[h>>2]|0)+248+12>>2]|0))c[(c[h>>2]|0)+248+12>>2]=c[(c[h>>2]|0)+248+8>>2];c[g>>2]=c[k>>2];k=c[g>>2]|0;i=l;return k|0}while(0);k=j;c[g>>2]=Hw(c[h>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;k=c[g>>2]|0;i=l;return k|0}function Gw(a,b,f,g){a=a|0;b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;h=m+16|0;j=m+12|0;k=m;l=m+8|0;c[h>>2]=a;c[j>>2]=b;b=k;c[b>>2]=f;c[b+4>>2]=g;c[l>>2]=0;if(d[(c[h>>2]|0)+65>>0]|0){l=c[l>>2]|0;i=m;return l|0}if(au(c[h>>2]|0,c[j>>2]|0)|0){b=k;c[l>>2]=Fw(c[h>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(!(c[l>>2]|0)){l=c[l>>2]|0;i=m;return l|0}iR(c[l>>2]|0,c[j>>2]|0,e[(c[h>>2]|0)+248+4>>1]|0|0)|0;Sf(c[h>>2]|0,c[j>>2]|0);l=c[l>>2]|0;i=m;return l|0}else{b=k;c[l>>2]=Md(c[j>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}jh(c[h>>2]|0);l=c[l>>2]|0;i=m;return l|0}return 0}function Hw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+12|0;h=g;f=g+8|0;c[e>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;a=h;c[f>>2]=_f(c[a>>2]|0,c[a+4>>2]|0)|0;if(c[f>>2]|0){h=c[f>>2]|0;i=g;return h|0}jh(c[e>>2]|0);h=c[f>>2]|0;i=g;return h|0}function Iw(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+20|0;h=m+16|0;j=m+12|0;k=m;l=m+8|0;c[h>>2]=b;c[j>>2]=d;d=k;c[d>>2]=e;c[d+4>>2]=f;if(!(c[j>>2]|0)){c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}b=c[h>>2]|0;d=k;d=gR(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;c[l>>2]=Fw(b,d,C)|0;if(c[l>>2]|0){iR(c[l>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;a[(c[l>>2]|0)+(c[k>>2]|0)>>0]=0}c[g>>2]=c[l>>2];l=c[g>>2]|0;i=m;return l|0}function Jw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;d=j+12|0;e=j+8|0;h=j+16|0;f=j+4|0;g=j;c[e>>2]=b;if(!(c[e>>2]|0)){c[d>>2]=-1;h=c[d>>2]|0;i=j;return h|0}a[h>>0]=a[c[e>>2]>>0]|0;switch(a[h>>0]|0){case 96:case 34:case 39:break;case 91:{a[h>>0]=93;break}default:{c[d>>2]=-1;h=c[d>>2]|0;i=j;return h|0}}c[f>>2]=1;c[g>>2]=0;while(1){b=c[f>>2]|0;if((a[(c[e>>2]|0)+(c[f>>2]|0)>>0]|0)==(a[h>>0]|0)){if((a[(c[e>>2]|0)+(b+1)>>0]|0)!=(a[h>>0]|0))break;k=a[h>>0]|0;b=c[g>>2]|0;c[g>>2]=b+1;a[(c[e>>2]|0)+b>>0]=k;c[f>>2]=(c[f>>2]|0)+1}else{b=a[(c[e>>2]|0)+b>>0]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[(c[e>>2]|0)+k>>0]=b}c[f>>2]=(c[f>>2]|0)+1}a[(c[e>>2]|0)+(c[g>>2]|0)>>0]=0;c[d>>2]=c[g>>2];k=c[d>>2]|0;i=j;return k|0}function Kw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;b=g+12|0;f=g+8|0;e=g+4|0;d=g;c[b>>2]=a;if(!(c[(c[b>>2]|0)+516>>2]|0)){i=g;return}if(!(c[(c[b>>2]|0)+488>>2]|0)){i=g;return}c[f>>2]=c[(c[b>>2]|0)+516>>2];c[e>>2]=c[(c[b>>2]|0)+516+4>>2];c[d>>2]=c[c[b>>2]>>2];h=c[d>>2]|0;b=c[(c[b>>2]|0)+488>>2]|0;a=c[e>>2]|0;Lw(h,b,Iw(c[d>>2]|0,c[f>>2]|0,a,((a|0)<0)<<31>>31)|0);i=g;return}function Lw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;e=k+20|0;f=k+16|0;g=k+12|0;l=k+8|0;h=k+4|0;j=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[l>>2]=2+(c[(c[f>>2]|0)+48>>2]|0)<<2;d=c[l>>2]|0;c[h>>2]=Ew(c[e>>2]|0,c[(c[f>>2]|0)+52>>2]|0,d,((d|0)<0)<<31>>31)|0;if(!(c[h>>2]|0)){Sf(c[e>>2]|0,c[g>>2]|0);i=k;return}else{d=(c[f>>2]|0)+48|0;l=c[d>>2]|0;c[d>>2]=l+1;c[j>>2]=l;c[(c[h>>2]|0)+(c[j>>2]<<2)>>2]=c[g>>2];c[(c[h>>2]|0)+((c[j>>2]|0)+1<<2)>>2]=0;c[(c[f>>2]|0)+52>>2]=c[h>>2];i=k;return}}function Mw(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r;h=r+32|0;j=r+28|0;k=r+24|0;l=r+20|0;m=r+16|0;n=r+12|0;o=r+8|0;p=r+4|0;c[j>>2]=a;c[k>>2]=b;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[c[j>>2]>>2];if((d[(c[o>>2]|0)+140+5>>0]|0|0)==0?(d[(c[j>>2]|0)+454>>0]|0|0)==0:0){if(!(c[(c[o>>2]|0)+288>>2]|0)){c[h>>2]=0;g=c[h>>2]|0;i=r;return g|0}c[p>>2]=Sb[c[(c[o>>2]|0)+288>>2]&255](c[(c[o>>2]|0)+292>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[(c[j>>2]|0)+496>>2]|0)|0;if((c[p>>2]|0)!=1){if((c[p>>2]|0)!=0&(c[p>>2]|0)!=2){c[p>>2]=1;Nw(c[j>>2]|0)}}else{Ah(c[j>>2]|0,28385,q);c[(c[j>>2]|0)+12>>2]=23}c[h>>2]=c[p>>2];g=c[h>>2]|0;i=r;return g|0}c[h>>2]=0;g=c[h>>2]|0;i=r;return g|0}function Nw(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b+4|0;c[d>>2]=a;Ah(c[d>>2]|0,28400,b);c[(c[d>>2]|0)+12>>2]=1;i=b;return}function Ow(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+144|0;j=o+36|0;g=o+32|0;h=o+16|0;n=o+8|0;m=o+4|0;k=o;l=o+40|0;c[j>>2]=d;c[g>>2]=e;c[m>>2]=0;c[k>>2]=c[c[j>>2]>>2];if(c[(c[j>>2]|0)+68>>2]|0){i=o;return}c[h>>2]=f;c[n>>2]=Zw(c[k>>2]|0,c[g>>2]|0,h)|0;if(!(c[n>>2]|0)){i=o;return}g=(c[j>>2]|0)+18|0;a[g>>0]=(a[g>>0]|0)+1<<24>>24;g=l;h=(c[j>>2]|0)+444|0;d=g+100|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(d|0));g=(c[j>>2]|0)+444|0;d=g+100|0;do{b[g>>1]=0;g=g+2|0}while((g|0)<(d|0));Uh(c[j>>2]|0,c[n>>2]|0,m)|0;Sf(c[k>>2]|0,c[m>>2]|0);Sf(c[k>>2]|0,c[n>>2]|0);g=(c[j>>2]|0)+444|0;h=l;d=g+100|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(d|0));n=(c[j>>2]|0)+18|0;a[n>>0]=(a[n>>0]|0)+-1<<24>>24;i=o;return}function Pw(b){b=b|0;var d=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;f=g;c[d>>2]=b;c[f>>2]=c[(c[d>>2]|0)+8>>2];if(!(c[f>>2]|0)){b=Ch(c[d>>2]|0)|0;c[(c[d>>2]|0)+8>>2]=b;c[f>>2]=b;if(c[f>>2]|0)Yw(c[f>>2]|0,158)|0;if((c[(c[d>>2]|0)+416>>2]|0)==0?((e[(c[c[d>>2]>>2]|0)+60>>1]|0)&8|0)==0:0)a[(c[d>>2]|0)+23>>0]=1}i=g;return c[f>>2]|0}function Qw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;h=d+12|0;e=d+8|0;f=d+4|0;g=d;c[h>>2]=a;c[e>>2]=b;c[f>>2]=c[c[h>>2]>>2];c[g>>2]=c[(c[h>>2]|0)+8>>2];Vw(c[g>>2]|0,52,c[e>>2]|0,1,(c[c[(c[(c[f>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+12>>2]>>2]|0)+1|0)|0;i=d;return}function Rw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;e=Vw(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0,0)|0;i=f;return e|0}function Sw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;e=g+12|0;j=g+8|0;h=g+4|0;f=g;c[e>>2]=a;c[j>>2]=b;c[h>>2]=d;Uw(c[e>>2]|0,123,c[j>>2]|0,0,0,c[h>>2]|0,-1)|0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[c[e>>2]>>2]|0)+20>>2]|0))break;Hh(c[e>>2]|0,c[f>>2]|0);c[f>>2]=(c[f>>2]|0)+1}i=g;return}function Tw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;d=Uw(c[h>>2]|0,97,0,c[g>>2]|0,0,c[f>>2]|0,0)|0;i=e;return d|0}function Uw(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;i=i+32|0;n=k+28|0;r=k+24|0;q=k+20|0;p=k+16|0;o=k+12|0;m=k+8|0;l=k+4|0;j=k;c[n>>2]=a;c[r>>2]=b;c[q>>2]=d;c[p>>2]=e;c[o>>2]=f;c[m>>2]=g;c[l>>2]=h;c[j>>2]=Vw(c[n>>2]|0,c[r>>2]|0,c[q>>2]|0,c[p>>2]|0,c[o>>2]|0)|0;Ih(c[n>>2]|0,c[j>>2]|0,c[m>>2]|0,c[l>>2]|0);i=k;return c[j>>2]|0}function Vw(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;o=q+4|0;p=q;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=c[(c[j>>2]|0)+32>>2];d=c[j>>2]|0;if((c[(c[(c[j>>2]|0)+24>>2]|0)+88>>2]|0)<=(c[o>>2]|0)){c[h>>2]=Ww(d,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;p=c[h>>2]|0;i=q;return p|0}else{g=d+32|0;c[g>>2]=(c[g>>2]|0)+1;c[p>>2]=(c[(c[j>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0);a[c[p>>2]>>0]=c[k>>2];a[(c[p>>2]|0)+3>>0]=0;c[(c[p>>2]|0)+4>>2]=c[l>>2];c[(c[p>>2]|0)+8>>2]=c[m>>2];c[(c[p>>2]|0)+12>>2]=c[n>>2];c[(c[p>>2]|0)+16>>2]=0;a[(c[p>>2]|0)+1>>0]=0;c[h>>2]=c[o>>2];p=c[h>>2]|0;i=q;return p|0}return 0}function Ww(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;if(Xw(c[h>>2]|0,1)|0){c[g>>2]=1;f=c[g>>2]|0;i=n;return f|0}else{c[g>>2]=Vw(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;f=c[g>>2]|0;i=n;return f|0}return 0}function Xw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;d=h+16|0;g=h+8|0;f=h+4|0;e=h;c[d>>2]=a;c[h+12>>2]=b;c[f>>2]=c[(c[d>>2]|0)+24>>2];if(c[(c[f>>2]|0)+88>>2]|0)b=c[(c[f>>2]|0)+88>>2]<<1;else b=51;c[e>>2]=b;c[g>>2]=Ew(c[c[f>>2]>>2]|0,c[(c[d>>2]|0)+4>>2]|0,(c[e>>2]|0)*20|0,0)|0;if(!(c[g>>2]|0)){g=c[g>>2]|0;g=(g|0)!=0;g=g?0:7;i=h;return g|0}e=$t(c[c[f>>2]>>2]|0,c[g>>2]|0)|0;c[(c[f>>2]|0)+92>>2]=e;c[(c[f>>2]|0)+88>>2]=((c[(c[f>>2]|0)+92>>2]|0)>>>0)/20|0;c[(c[d>>2]|0)+4>>2]=c[g>>2];g=c[g>>2]|0;g=(g|0)!=0;g=g?0:7;i=h;return g|0}function Yw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Vw(c[f>>2]|0,c[e>>2]|0,0,0,0)|0;i=d;return a|0}function Zw(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+128|0;g=j+40|0;m=j+36|0;l=j+32|0;h=j+28|0;k=j;c[g>>2]=b;c[m>>2]=e;c[l>>2]=f;cg(k,c[g>>2]|0,j+44|0,70,c[(c[g>>2]|0)+88>>2]|0);a[k+25>>0]=1;dg(k,c[m>>2]|0,c[l>>2]|0);c[h>>2]=eg(k)|0;if((d[k+24>>0]|0|0)!=1){m=c[h>>2]|0;i=j;return m|0}jh(c[g>>2]|0);m=c[h>>2]|0;i=j;return m|0}function _w(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;if(c[c[g>>2]>>2]|0){c[h>>2]=Dh(c[c[e>>2]>>2]|0,c[c[g>>2]>>2]|0)|0;c[j>>2]=c[(c[(c[c[e>>2]>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2]}else c[j>>2]=c[(c[g>>2]|0)+4>>2];j=zh(c[e>>2]|0,c[f>>2]|0,c[(c[g>>2]|0)+8>>2]|0,c[j>>2]|0)|0; -i=k;return j|0}function $w(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;g=h;d=h+12|0;e=h+8|0;f=h+4|0;c[e>>2]=a;c[f>>2]=b;if((If(c[f>>2]|0)|0)>6?0==(zd(c[f>>2]|0,28715,7)|0):0){b=c[e>>2]|0;c[g>>2]=c[f>>2];Ah(b,28723,g);c[d>>2]=1;b=c[d>>2]|0;i=h;return b|0}c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}function ax(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;f=c[g>>2]|0;if(c[(c[g>>2]|0)+416>>2]|0)f=c[f+416>>2]|0;c[k>>2]=f;bx(c[g>>2]|0,c[j>>2]|0);g=(c[k>>2]|0)+336|0;c[g>>2]=c[g>>2]|1<>2];k=(c[k>>2]|0)+20|0;a[k>>0]=d[k>>0]|0|c[h>>2];i=l;return}function bx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;d=g+8|0;f=g+4|0;e=g;c[h>>2]=a;c[d>>2]=b;b=c[h>>2]|0;if(c[(c[h>>2]|0)+416>>2]|0)b=c[b+416>>2]|0;c[f>>2]=b;c[e>>2]=c[c[f>>2]>>2];if((c[(c[f>>2]|0)+340>>2]&1<>2]|0)!=0|0){i=g;return}h=(c[f>>2]|0)+340|0;c[h>>2]=c[h>>2]|1<>2];c[(c[f>>2]|0)+344+(c[d>>2]<<2)>>2]=c[c[(c[(c[e>>2]|0)+16>>2]|0)+(c[d>>2]<<4)+12>>2]>>2];if((c[d>>2]|0)!=1){i=g;return}cx(c[f>>2]|0)|0;i=g;return}function cx(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k;d=k+20|0;e=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;c[e>>2]=b;c[f>>2]=c[c[e>>2]>>2];if((c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]|0)==0?(a[(c[e>>2]|0)+453>>0]|0)==0:0){c[h>>2]=Xj(c[c[f>>2]>>2]|0,0,c[f>>2]|0,g,0,542)|0;if(c[h>>2]|0){Ah(c[e>>2]|0,28645,j);c[(c[e>>2]|0)+12>>2]=c[h>>2];c[d>>2]=1;j=c[d>>2]|0;i=k;return j|0}c[(c[(c[f>>2]|0)+16>>2]|0)+16+4>>2]=c[g>>2];if(7==(xi(c[g>>2]|0,c[(c[f>>2]|0)+72>>2]|0,-1,0)|0)){jh(c[f>>2]|0);c[d>>2]=1;j=c[d>>2]|0;i=k;return j|0}}c[d>>2]=0;j=c[d>>2]|0;i=k;return j|0}function dx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+16|0;n=h+8|0;m=h+4|0;l=h+13|0;k=h+12|0;j=h;c[n>>2]=b;c[m>>2]=d;a[l>>0]=e;a[k>>0]=f;c[j>>2]=g;g=ix(c[n>>2]|0,c[m>>2]|0,a[l>>0]|0,a[k>>0]|0,c[j>>2]|0,0)|0;i=h;return g|0}function ex(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;m=o;e=o+32|0;f=o+28|0;g=o+24|0;l=o+20|0;n=o+16|0;h=o+12|0;k=o+8|0;j=o+4|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[l>>2]=Pw(c[e>>2]|0)|0;if(!(c[l>>2]|0)){i=o;return}c[h>>2]=Dh(c[c[e>>2]>>2]|0,c[(c[f>>2]|0)+64>>2]|0)|0;c[k>>2]=fx(c[e>>2]|0,c[f>>2]|0)|0;while(1){if(!(c[k>>2]|0))break;c[j>>2]=Dh(c[c[e>>2]>>2]|0,c[(c[k>>2]|0)+20>>2]|0)|0;Uw(c[l>>2]|0,127,c[j>>2]|0,0,0,c[c[k>>2]>>2]|0,0)|0;c[k>>2]=c[(c[k>>2]|0)+32>>2]}Uw(c[l>>2]|0,125,c[h>>2]|0,0,0,c[c[f>>2]>>2]|0,0)|0;d=c[c[e>>2]>>2]|0;c[m>>2]=c[g>>2];c[n>>2]=Bh(d,29077,m)|0;if(!(c[n>>2]|0)){i=o;return}Sw(c[l>>2]|0,c[h>>2]|0,c[n>>2]|0);d=gx(c[e>>2]|0,c[f>>2]|0)|0;c[n>>2]=d;if(!d){i=o;return}Sw(c[l>>2]|0,1,c[n>>2]|0);i=o;return}function fx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;k=l+24|0;m=l+20|0;f=l+16|0;e=l+12|0;h=l+8|0;g=l+4|0;j=l;c[m>>2]=b;c[f>>2]=d;c[e>>2]=c[(c[(c[c[m>>2]>>2]|0)+16>>2]|0)+16+12>>2];c[h>>2]=0;if(a[(c[m>>2]|0)+442>>0]|0){c[k>>2]=0;m=c[k>>2]|0;i=l;return m|0}a:do if((c[e>>2]|0)!=(c[(c[f>>2]|0)+64>>2]|0)){c[g>>2]=c[(c[e>>2]|0)+40+8>>2];while(1){if(!(c[g>>2]|0))break a;c[j>>2]=c[(c[g>>2]|0)+8>>2];if((c[(c[j>>2]|0)+24>>2]|0)==(c[(c[f>>2]|0)+64>>2]|0)?0==(Td(c[(c[j>>2]|0)+4>>2]|0,c[c[f>>2]>>2]|0)|0):0){if(c[h>>2]|0)b=c[h>>2]|0;else b=c[(c[f>>2]|0)+60>>2]|0;c[(c[j>>2]|0)+32>>2]=b;c[h>>2]=c[j>>2]}c[g>>2]=c[c[g>>2]>>2]}}while(0);if(c[h>>2]|0)b=c[h>>2]|0;else b=c[(c[f>>2]|0)+60>>2]|0;c[k>>2]=b;m=c[k>>2]|0;i=l;return m|0}function gx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;j=m;d=m+28|0;e=m+24|0;h=m+20|0;l=m+16|0;g=m+12|0;f=m+8|0;k=m+4|0;c[d>>2]=a;c[e>>2]=b;c[l>>2]=0;c[g>>2]=c[(c[(c[c[d>>2]>>2]|0)+16>>2]|0)+16+12>>2];a:do if((c[(c[e>>2]|0)+64>>2]|0)!=(c[g>>2]|0)){c[f>>2]=c[c[d>>2]>>2];c[h>>2]=fx(c[d>>2]|0,c[e>>2]|0)|0;while(1){if(!(c[h>>2]|0))break a;if((c[(c[h>>2]|0)+20>>2]|0)==(c[g>>2]|0))c[l>>2]=hx(c[f>>2]|0,c[l>>2]|0,c[c[h>>2]>>2]|0)|0;c[h>>2]=c[(c[h>>2]|0)+32>>2]}}while(0);if(!(c[l>>2]|0)){l=c[l>>2]|0;i=m;return l|0}h=c[c[d>>2]>>2]|0;c[j>>2]=c[l>>2];c[k>>2]=Bh(h,29089,j)|0;Sf(c[c[d>>2]>>2]|0,c[l>>2]|0);c[l>>2]=c[k>>2];l=c[l>>2]|0;i=m;return l|0}function hx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;j=l+8|0;h=l;e=l+28|0;f=l+24|0;g=l+20|0;k=l+16|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;a=c[e>>2]|0;if(c[f>>2]|0){h=c[g>>2]|0;c[j>>2]=c[f>>2];c[j+4>>2]=h;c[k>>2]=Bh(a,29121,j)|0;Sf(c[e>>2]|0,c[f>>2]|0);k=c[k>>2]|0;i=l;return k|0}else{c[h>>2]=c[g>>2];c[k>>2]=Bh(a,29113,h)|0;k=c[k>>2]|0;i=l;return k|0}return 0}function ix(f,g,j,k,l,m){f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0;E=i;i=i+64|0;t=E;z=E+52|0;v=E+48|0;n=E+44|0;x=E+58|0;y=E+57|0;A=E+40|0;o=E+36|0;s=E+32|0;w=E+28|0;B=E+24|0;r=E+20|0;u=E+16|0;D=E+12|0;p=E+56|0;q=E+8|0;c[v>>2]=f;c[n>>2]=g;a[x>>0]=j;a[y>>0]=k;c[A>>2]=l;c[o>>2]=m;c[w>>2]=0;c[B>>2]=0;c[r>>2]=1;c[u>>2]=19266;c[D>>2]=0;if(!(c[n>>2]|0)){c[c[A>>2]>>2]=0;c[z>>2]=0;D=c[z>>2]|0;i=E;return D|0}while(1){l=d[c[n>>2]>>0]|0;c[s>>2]=l;if((l|0)!=156)break;c[n>>2]=c[(c[n>>2]|0)+12>>2]}if((c[s>>2]|0)==157)c[s>>2]=d[(c[n>>2]|0)+38>>0];if((c[s>>2]|0)==38){a[p>>0]=jx(c[(c[n>>2]|0)+8>>2]|0,0)|0;c[D>>2]=ix(c[v>>2]|0,c[(c[n>>2]|0)+12>>2]|0,a[x>>0]|0,a[p>>0]|0,c[A>>2]|0,c[o>>2]|0)|0;if(c[c[A>>2]>>2]|0){kx(c[c[A>>2]>>2]|0,a[p>>0]|0,1);lx(c[c[A>>2]>>2]|0,a[y>>0]|0,1)}c[z>>2]=c[D>>2];D=c[z>>2]|0;i=E;return D|0}do if((c[s>>2]|0)==155){if((d[c[(c[n>>2]|0)+12>>2]>>0]|0|0)!=132?(d[c[(c[n>>2]|0)+12>>2]>>0]|0|0)!=133:0)break;c[n>>2]=c[(c[n>>2]|0)+12>>2];c[s>>2]=d[c[n>>2]>>0];c[r>>2]=-1;c[u>>2]=29135}while(0);do if((c[s>>2]|0)==97|(c[s>>2]|0)==133|(c[s>>2]|0)==132){c[B>>2]=mx(c[v>>2]|0,c[o>>2]|0)|0;if(c[B>>2]|0){if(c[(c[n>>2]|0)+4>>2]&1024){v=c[B>>2]|0;u=c[(c[n>>2]|0)+8>>2]|0;w=c[r>>2]|0;w=rR(u|0,((u|0)<0)<<31>>31|0,w|0,((w|0)<0)<<31>>31|0)|0;eh(v,w,C)}else{l=c[v>>2]|0;g=c[(c[n>>2]|0)+8>>2]|0;c[t>>2]=c[u>>2];c[t+4>>2]=g;c[w>>2]=Bh(l,25552,t)|0;if(!(c[w>>2]|0)){n=43;break}Wh(c[B>>2]|0,-1,c[w>>2]|0,1,170)}if((c[s>>2]|0)==132|(c[s>>2]|0)==133?(d[y>>0]|0|0)==65:0)lx(c[B>>2]|0,67,1);else lx(c[B>>2]|0,a[y>>0]|0,1);if((e[(c[B>>2]|0)+8>>1]|0)&12){y=(c[B>>2]|0)+8|0;b[y>>1]=(e[y>>1]|0)&-3}if((d[x>>0]|0|0)!=1){c[D>>2]=Zt(c[B>>2]|0,d[x>>0]|0)|0;n=42}else n=42}else n=43}else{if((c[s>>2]|0)!=155){if((c[s>>2]|0)==101){c[B>>2]=mx(c[v>>2]|0,c[o>>2]|0)|0;if(!(c[B>>2]|0)){n=43;break}else{n=42;break}}if((c[s>>2]|0)!=134){n=42;break}c[B>>2]=mx(c[v>>2]|0,c[o>>2]|0)|0;if(!(c[B>>2]|0)){n=43;break}c[w>>2]=(c[(c[n>>2]|0)+8>>2]|0)+2;c[q>>2]=(If(c[w>>2]|0)|0)-1;y=c[B>>2]|0;n=ox(c[v>>2]|0,c[w>>2]|0,c[q>>2]|0)|0;dh(y,n,(c[q>>2]|0)/2|0,0,170)|0;n=42;break}w=0==(dx(c[v>>2]|0,c[(c[n>>2]|0)+12>>2]|0,a[x>>0]|0,a[y>>0]|0,B)|0);if(w&(c[B>>2]|0)!=0){nx(c[B>>2]|0)|0;n=c[B>>2]|0;do if(!((e[(c[B>>2]|0)+8>>1]|0)&8)){w=n;n=c[B>>2]|0;if((c[w>>2]|0)==0?(c[w+4>>2]|0)==-2147483648:0){h[n>>3]=9223372036854775808.0;b[(c[B>>2]|0)+8>>1]=(e[(c[B>>2]|0)+8>>1]|0)&-49664|8;break}else{v=n;v=fR(0,0,c[v>>2]|0,c[v+4>>2]|0)|0;w=c[B>>2]|0;c[w>>2]=v;c[w+4>>2]=C;break}}else h[c[B>>2]>>3]=-+h[n>>3];while(0);lx(c[B>>2]|0,a[y>>0]|0,a[x>>0]|0);n=42}else n=42}while(0);if((n|0)==42){c[c[A>>2]>>2]=c[B>>2];c[z>>2]=c[D>>2];D=c[z>>2]|0;i=E;return D|0}else if((n|0)==43){jh(c[v>>2]|0);Sf(c[v>>2]|0,c[w>>2]|0);$g(c[B>>2]|0);c[z>>2]=7;D=c[z>>2]|0;i=E;return D|0}return 0}function jx(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;f=o+21|0;g=o+16|0;h=o+12|0;k=o+8|0;j=o+20|0;m=o+4|0;l=o;c[g>>2]=b;c[h>>2]=e;c[k>>2]=0;a[j>>0]=67;c[m>>2]=0;if(!(c[g>>2]|0)){a[f>>0]=a[j>>0]|0;n=a[f>>0]|0;i=o;return n|0}a:while(1){if(!(a[c[g>>2]>>0]|0))break;c[k>>2]=(c[k>>2]<<8)+(d[18477+(a[c[g>>2]>>0]&255)>>0]|0);c[g>>2]=(c[g>>2]|0)+1;if((c[k>>2]|0)==1667785074){a[j>>0]=66;c[m>>2]=c[g>>2];continue}if((c[k>>2]|0)==1668050786){a[j>>0]=66;continue}if((c[k>>2]|0)==1952807028){a[j>>0]=66;continue}do if((c[k>>2]|0)==1651273570){if((a[j>>0]|0)!=67?(a[j>>0]|0)!=69:0)break;a[j>>0]=65;if((a[c[g>>2]>>0]|0)!=40)continue a;c[m>>2]=c[g>>2];continue a}while(0);if((c[k>>2]|0)==1919246700?(a[j>>0]|0)==67:0){a[j>>0]=69;continue}if((c[k>>2]|0)==1718382433?(a[j>>0]|0)==67:0){a[j>>0]=69;continue}if((c[k>>2]|0)==1685026146?(a[j>>0]|0)==67:0){a[j>>0]=69;continue}if((c[k>>2]&16777215|0)==6909556){n=25;break}}if((n|0)==25)a[j>>0]=68;b:do if((c[h>>2]|0)!=0?(a[c[h>>2]>>0]=1,(a[j>>0]|0)<67):0){if(!(c[m>>2]|0)){a[c[h>>2]>>0]=5;break}while(1){if(!(a[c[m>>2]>>0]|0))break b;if(d[19267+(d[c[m>>2]>>0]|0)>>0]&4)break;c[m>>2]=(c[m>>2]|0)+1}c[l>>2]=0;Li(c[m>>2]|0,l)|0;n=((c[l>>2]|0)/4|0)+1|0;c[l>>2]=n;c[l>>2]=(c[l>>2]|0)>255?255:n;a[c[h>>2]>>0]=c[l>>2]}while(0);a[f>>0]=a[j>>0]|0;n=a[f>>0]|0;i=o;return n|0}function kx(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;m=i;i=i+16|0;k=m;j=m+5|0;l=m+4|0;c[k>>2]=f;a[j>>0]=g;a[l>>0]=h;if((e[(c[k>>2]|0)+8>>1]|0)&1){i=m;return}switch(d[j>>0]|0|0){case 65:{j=c[k>>2]|0;if(!((e[(c[k>>2]|0)+8>>1]|0)&16)){lx(j,66,a[l>>0]|0);b[(c[k>>2]|0)+8>>1]=(e[(c[k>>2]|0)+8>>1]|0)&-49664|16;i=m;return}else{l=j+8|0;b[l>>1]=(e[l>>1]|0)&-33264;i=m;return}}case 67:{nx(c[k>>2]|0)|0;i=m;return}case 68:{wx(c[k>>2]|0)|0;i=m;return}case 69:{xx(c[k>>2]|0)|0;i=m;return}default:{f=(c[k>>2]|0)+8|0;b[f>>1]=e[f>>1]|0|((e[(c[k>>2]|0)+8>>1]|0)&16)>>3;lx(c[k>>2]|0,66,a[l>>0]|0);l=(c[k>>2]|0)+8|0;b[l>>1]=(e[l>>1]|0)&-16413;i=m;return}}}function lx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f;h=f+5|0;g=f+4|0;c[j>>2]=b;a[h>>0]=d;a[g>>0]=e;rx(c[j>>2]|0,a[h>>0]|0,a[g>>0]|0);i=f;return}function mx(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d+4|0;c[e>>2]=a;c[d>>2]=b;b=Vh(c[e>>2]|0)|0;i=d;return b|0}function nx(d){d=d|0;var f=0,g=0,j=0,k=0.0;g=i;i=i+16|0;f=g;c[f>>2]=d;do if(!((e[(c[f>>2]|0)+8>>1]|0)&13)){j=0==(Hi(c[(c[f>>2]|0)+16>>2]|0,c[f>>2]|0,c[(c[f>>2]|0)+12>>2]|0,a[(c[f>>2]|0)+10>>0]|0)|0);d=c[f>>2]|0;if(j){b[(c[f>>2]|0)+8>>1]=(e[d+8>>1]|0)&-49664|4;break}else{k=+Yg(d);h[c[f>>2]>>3]=k;b[(c[f>>2]|0)+8>>1]=(e[(c[f>>2]|0)+8>>1]|0)&-49664|8;px(c[f>>2]|0);break}}while(0);j=(c[f>>2]|0)+8|0;b[j>>1]=(e[j>>1]|0)&-19;i=g;return 0}function ox(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;l=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[l>>2]=b;c[f>>2]=d;c[g>>2]=e;d=((c[g>>2]|0)/2|0)+1|0;c[j>>2]=Fw(c[l>>2]|0,d,((d|0)<0)<<31>>31)|0;c[g>>2]=(c[g>>2]|0)+-1;if(!(c[j>>2]|0)){l=c[j>>2]|0;i=k;return l|0}c[h>>2]=0;while(1){b=c[h>>2]|0;if((c[h>>2]|0)>=(c[g>>2]|0))break;l=((Gi(a[(c[f>>2]|0)+b>>0]|0)|0)&255)<<4;l=(l|(Gi(a[(c[f>>2]|0)+((c[h>>2]|0)+1)>>0]|0)|0)&255)&255;a[(c[j>>2]|0)+((c[h>>2]|0)/2|0)>>0]=l;c[h>>2]=(c[h>>2]|0)+2}a[(c[j>>2]|0)+((b|0)/2|0)>>0]=0;l=c[j>>2]|0;i=k;return l|0}function px(a){a=a|0;var d=0,f=0,g=0,j=0,k=0,l=0,m=0;g=i;i=i+16|0;d=g+8|0;f=g;c[d>>2]=a;k=qx(+h[c[d>>2]>>3])|0;m=f;c[m>>2]=k;c[m+4>>2]=C;m=f;k=f;l=c[k+4>>2]|0;a=f;j=c[a+4>>2]|0;if(!(+h[c[d>>2]>>3]==+((c[m>>2]|0)>>>0)+4294967296.0*+(c[m+4>>2]|0)&((l|0)>-2147483648|(l|0)==-2147483648&(c[k>>2]|0)>>>0>0)&((j|0)<2147483647|(j|0)==2147483647&(c[a>>2]|0)>>>0<4294967295))){i=g;return}k=f;l=c[k+4>>2]|0;m=c[d>>2]|0;c[m>>2]=c[k>>2];c[m+4>>2]=l;b[(c[d>>2]|0)+8>>1]=(e[(c[d>>2]|0)+8>>1]|0)&-49664|4;i=g;return}function qx(a){a=+a;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;b=e+8|0;d=e;h[d>>3]=a;do if(!(+h[d>>3]<=-9223372036854775808.0))if(+h[d>>3]>=9223372036854775808.0){d=b;c[d>>2]=-1;c[d+4>>2]=2147483647;break}else{a=+h[d>>3];f=+N(a)>=1.0?a>0.0?~~+$(+M(a/4294967296.0),4294967295.0)>>>0:~~+Z((a-+(~~a>>>0))/4294967296.0)>>>0:0;d=b;c[d>>2]=~~a>>>0;c[d+4>>2]=f;break}else{f=b;c[f>>2]=0;c[f+4>>2]=-2147483648}while(0);f=b;C=c[f+4>>2]|0;i=e;return c[f>>2]|0}function rx(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l;h=l+5|0;j=l+4|0;c[k>>2]=d;a[h>>0]=f;a[j>>0]=g;if((a[h>>0]|0)<67){if((a[h>>0]|0)!=66){i=l;return}if(0==(e[(c[k>>2]|0)+8>>1]&2|0)?(e[(c[k>>2]|0)+8>>1]&12|0)!=0:0)sx(c[k>>2]|0,a[j>>0]|0,1)|0;k=(c[k>>2]|0)+8|0;b[k>>1]=e[k>>1]&-13;i=l;return}if(e[(c[k>>2]|0)+8>>1]&4){i=l;return}h=c[k>>2]|0;if(e[(c[k>>2]|0)+8>>1]&8){px(h);i=l;return}if(!(e[h+8>>1]&2)){i=l;return}xh(c[k>>2]|0,1);i=l;return}function sx(f,g,j){f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r+8|0;p=r;k=r+28|0;l=r+24|0;m=r+33|0;n=r+32|0;o=r+20|0;c[l>>2]=f;a[m>>0]=g;a[n>>0]=j;c[o>>2]=e[(c[l>>2]|0)+8>>1];c[r+16>>2]=32;if(tx(c[l>>2]|0,32)|0){c[k>>2]=7;q=c[k>>2]|0;i=r;return q|0}j=c[(c[l>>2]|0)+16>>2]|0;g=c[l>>2]|0;if(c[o>>2]&4){f=g;o=c[f+4>>2]|0;q=p;c[q>>2]=c[f>>2];c[q+4>>2]=o;Qd(32,j,29137,p)|0}else{h[q>>3]=+h[g>>3];Qd(32,j,29142,q)|0}q=If(c[(c[l>>2]|0)+16>>2]|0)|0;c[(c[l>>2]|0)+12>>2]=q;a[(c[l>>2]|0)+10>>0]=1;q=(c[l>>2]|0)+8|0;b[q>>1]=e[q>>1]|514;if(a[n>>0]|0){q=(c[l>>2]|0)+8|0;b[q>>1]=e[q>>1]&-13}Zt(c[l>>2]|0,d[m>>0]|0)|0;c[k>>2]=0;q=c[k>>2]|0;i=r;return q|0}function tx(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[g>>2]=a;c[h>>2]=d;a=c[g>>2]|0;if((c[(c[g>>2]|0)+24>>2]|0)<(c[h>>2]|0)){c[f>>2]=ux(a,c[h>>2]|0,0)|0;h=c[f>>2]|0;i=j;return h|0}else{c[(c[g>>2]|0)+16>>2]=c[a+20>>2];h=(c[g>>2]|0)+8|0;b[h>>1]=(e[h>>1]|0)&13;c[f>>2]=0;h=c[f>>2]|0;i=j;return h|0}return 0}function ux(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+12|0;j=l+8|0;g=l+4|0;k=l;c[j>>2]=a;c[g>>2]=d;c[k>>2]=f;do if((c[(c[j>>2]|0)+24>>2]|0)<(c[g>>2]|0)){if((c[g>>2]|0)<32)c[g>>2]=32;if(((c[k>>2]|0)!=0?(c[(c[j>>2]|0)+24>>2]|0)>0:0)?(c[(c[j>>2]|0)+16>>2]|0)==(c[(c[j>>2]|0)+20>>2]|0):0){a=c[g>>2]|0;a=vx(c[(c[j>>2]|0)+32>>2]|0,c[(c[j>>2]|0)+16>>2]|0,a,((a|0)<0)<<31>>31)|0;c[(c[j>>2]|0)+20>>2]=a;c[(c[j>>2]|0)+16>>2]=a;c[k>>2]=0}else{if((c[(c[j>>2]|0)+24>>2]|0)>0)Sf(c[(c[j>>2]|0)+32>>2]|0,c[(c[j>>2]|0)+20>>2]|0);a=c[g>>2]|0;a=yh(c[(c[j>>2]|0)+32>>2]|0,a,((a|0)<0)<<31>>31)|0;c[(c[j>>2]|0)+20>>2]=a}g=c[j>>2]|0;if(c[(c[j>>2]|0)+20>>2]|0){a=$t(c[g+32>>2]|0,c[(c[j>>2]|0)+20>>2]|0)|0;c[(c[j>>2]|0)+24>>2]=a;break}fh(g);c[(c[j>>2]|0)+16>>2]=0;c[(c[j>>2]|0)+24>>2]=0;c[h>>2]=7;k=c[h>>2]|0;i=l;return k|0}while(0);if(((c[k>>2]|0)!=0?(c[(c[j>>2]|0)+16>>2]|0)!=0:0)?(c[(c[j>>2]|0)+16>>2]|0)!=(c[(c[j>>2]|0)+20>>2]|0):0)iR(c[(c[j>>2]|0)+20>>2]|0,c[(c[j>>2]|0)+16>>2]|0,c[(c[j>>2]|0)+12>>2]|0)|0;if((e[(c[j>>2]|0)+8>>1]|0)&1024)Qb[c[(c[j>>2]|0)+36>>2]&255](c[(c[j>>2]|0)+16>>2]|0);c[(c[j>>2]|0)+16>>2]=c[(c[j>>2]|0)+20>>2];k=(c[j>>2]|0)+8|0;b[k>>1]=(e[k>>1]|0)&-7169;c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}function vx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;f=j+16|0;g=j+12|0;k=j;h=j+8|0;c[f>>2]=a;c[g>>2]=b;b=k;c[b>>2]=d;c[b+4>>2]=e;b=k;c[h>>2]=Ew(c[f>>2]|0,c[g>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[h>>2]|0){k=c[h>>2]|0;i=j;return k|0}Sf(c[f>>2]|0,c[g>>2]|0);k=c[h>>2]|0;i=j;return k|0}function wx(a){a=a|0;var d=0,f=0,g=0;d=i;i=i+16|0;f=d;c[f>>2]=a;g=Zg(c[f>>2]|0)|0;a=c[f>>2]|0;c[a>>2]=g;c[a+4>>2]=C;b[(c[f>>2]|0)+8>>1]=(e[(c[f>>2]|0)+8>>1]|0)&-49664|4;i=d;return 0}function xx(a){a=a|0;var d=0,f=0,g=0.0;d=i;i=i+16|0;f=d;c[f>>2]=a;g=+Yg(c[f>>2]|0);h[c[f>>2]>>3]=g;b[(c[f>>2]|0)+8>>1]=(e[(c[f>>2]|0)+8>>1]|0)&-49664|8;i=d;return 0}function yx(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;j=k;f=k+12|0;g=k+8|0;h=k+4|0;c[g>>2]=b;c[h>>2]=e;if((((a[(c[c[g>>2]>>2]|0)+140+5>>0]|0)==0?(d[(c[g>>2]|0)+18>>0]|0)==0:0)?(c[(c[c[g>>2]>>2]|0)+24>>2]&2048|0)==0:0)?0==(zd(c[h>>2]|0,28715,7)|0):0){e=c[g>>2]|0;c[j>>2]=c[h>>2];Ah(e,31646,j);c[f>>2]=1;e=c[f>>2]|0;i=k;return e|0}c[f>>2]=0;e=c[f>>2]|0;i=k;return e|0}function zx(a,f){a=a|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;g=r;h=r+36|0;j=r+32|0;k=r+28|0;p=r+24|0;o=r+20|0;n=r+16|0;m=r+12|0;l=r+8|0;q=r+4|0;c[j>>2]=a;c[k>>2]=f;c[n>>2]=0;c[l>>2]=c[c[j>>2]>>2];if(Fx(c[j>>2]|0,c[k>>2]|0)|0){c[h>>2]=1;q=c[h>>2]|0;i=r;return q|0}if(d[(c[k>>2]|0)+42>>0]&16){c[h>>2]=0;q=c[h>>2]|0;i=r;return q|0}if((b[(c[k>>2]|0)+34>>1]|0)>0){c[h>>2]=0;q=c[h>>2]|0;i=r;return q|0}if((b[(c[k>>2]|0)+34>>1]|0)<0){q=c[j>>2]|0;c[g>>2]=c[c[k>>2]>>2];Ah(q,29854,g);c[h>>2]=1;q=c[h>>2]|0;i=r;return q|0}a=c[l>>2]|0;do if(c[(c[k>>2]|0)+24>>2]|0){q=a+248|0;c[q>>2]=(c[q>>2]|0)+1;Gx(c[j>>2]|0,c[(c[k>>2]|0)+24>>2]|0,(c[k>>2]|0)+34|0,(c[k>>2]|0)+4|0)|0;q=(c[l>>2]|0)+248|0;c[q>>2]=(c[q>>2]|0)+-1}else{c[o>>2]=Hx(a,c[(c[k>>2]|0)+12>>2]|0,0)|0;if(!(c[o>>2]|0)){c[n>>2]=(c[n>>2]|0)+1;break}c[m>>2]=c[(c[j>>2]|0)+72>>2];Ix(c[j>>2]|0,c[(c[o>>2]|0)+32>>2]|0);b[(c[k>>2]|0)+34>>1]=-1;g=(c[l>>2]|0)+248|0;c[g>>2]=(c[g>>2]|0)+1;c[q>>2]=c[(c[l>>2]|0)+288>>2];c[(c[l>>2]|0)+288>>2]=0;c[p>>2]=Jx(c[j>>2]|0,c[o>>2]|0)|0;c[(c[l>>2]|0)+288>>2]=c[q>>2];q=(c[l>>2]|0)+248|0;c[q>>2]=(c[q>>2]|0)+-1;c[(c[j>>2]|0)+72>>2]=c[m>>2];if(c[p>>2]|0){b[(c[k>>2]|0)+34>>1]=b[(c[p>>2]|0)+34>>1]|0;c[(c[k>>2]|0)+4>>2]=c[(c[p>>2]|0)+4>>2];b[(c[p>>2]|0)+34>>1]=0;c[(c[p>>2]|0)+4>>2]=0;Qf(c[l>>2]|0,c[p>>2]|0)}else{b[(c[k>>2]|0)+34>>1]=0;c[n>>2]=(c[n>>2]|0)+1}Wu(c[l>>2]|0,c[o>>2]|0)}while(0);q=(c[(c[k>>2]|0)+64>>2]|0)+78|0;b[q>>1]=e[q>>1]|2;c[h>>2]=c[n>>2];q=c[h>>2]|0;i=r;return q|0}function Ax(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=c[(c[g>>2]|0)+56>>2];while(1){if(!(c[e>>2]|0)){d=5;break}if((c[c[e>>2]>>2]|0)==(c[d>>2]|0)){d=5;break}c[e>>2]=c[(c[e>>2]|0)+24>>2]}if((d|0)==5){i=f;return c[e>>2]|0}return 0}function Bx(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=b;b=c[f>>2]|0;if(c[(c[f>>2]|0)+416>>2]|0)b=c[b+416>>2]|0;c[d>>2]=b;a[(c[d>>2]|0)+21>>0]=1;i=e;return}function Cx(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+16|0;e=j+12|0;h=j+8|0;f=j+4|0;g=j;c[k>>2]=a;c[e>>2]=b;c[h>>2]=0;c[f>>2]=c[k>>2];if((c[e>>2]|0)>=0)c[g>>2]=(c[f>>2]|0)+(c[e>>2]|0);else c[g>>2]=-1;while(1){if(!(d[c[f>>2]>>0]|0)){e=10;break}if((c[f>>2]|0)>>>0>=(c[g>>2]|0)>>>0){e=10;break}k=c[f>>2]|0;c[f>>2]=k+1;a:do if((d[k>>0]|0|0)>=192)while(1){if(((d[c[f>>2]>>0]|0)&192|0)!=128)break a;c[f>>2]=(c[f>>2]|0)+1}while(0);c[h>>2]=(c[h>>2]|0)+1}if((e|0)==10){i=j;return c[h>>2]|0}return 0}function Dx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;d=g+12|0;h=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[h>>2]=b;c[f>>2]=0;c[e>>2]=Ex(c[h>>2]|0)|0;while(1){if(!(c[e>>2]|0))break;c[f>>2]=hx(c[c[d>>2]>>2]|0,c[f>>2]|0,c[c[c[e>>2]>>2]>>2]|0)|0;c[e>>2]=c[(c[e>>2]|0)+12>>2]}i=g;return c[f>>2]|0}function Ex(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=nj((c[(c[d>>2]|0)+64>>2]|0)+56|0,c[c[d>>2]>>2]|0)|0;i=b;return a|0}function Fx(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;m=q+8|0;l=q;e=q+44|0;f=q+40|0;g=q+36|0;h=q+32|0;o=q+28|0;j=q+24|0;k=q+20|0;p=q+16|0;n=q+12|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[c[f>>2]>>2];if(((d[(c[g>>2]|0)+42>>0]|0)&16|0)!=0?(Ax(c[h>>2]|0,c[g>>2]|0)|0)==0:0){c[o>>2]=c[c[(c[g>>2]|0)+52>>2]>>2];c[j>>2]=nj((c[h>>2]|0)+312|0,c[o>>2]|0)|0;if(c[j>>2]|0){c[n>>2]=0;c[k>>2]=oz(c[h>>2]|0,c[g>>2]|0,c[j>>2]|0,c[(c[c[j>>2]>>2]|0)+8>>2]|0,n)|0;if(c[k>>2]|0){p=c[f>>2]|0;c[m>>2]=c[n>>2];Ah(p,19255,m)}Sf(c[h>>2]|0,c[n>>2]|0)}else{c[p>>2]=c[c[(c[g>>2]|0)+52>>2]>>2];o=c[f>>2]|0;c[l>>2]=c[p>>2];Ah(o,31494,l);c[k>>2]=1}c[e>>2]=c[k>>2];p=c[e>>2]|0;i=q;return p|0}c[e>>2]=0;p=c[e>>2]|0;i=q;return p|0}function Gx(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=i;i=i+112|0;u=D+8|0;t=D;w=D+104|0;E=D+100|0;j=D+96|0;x=D+92|0;y=D+88|0;A=D+84|0;B=D+80|0;C=D+76|0;k=D+72|0;z=D+68|0;q=D+64|0;n=D+60|0;p=D+56|0;v=D+52|0;o=D+48|0;l=D+32|0;r=D+28|0;s=D+24|0;m=D+20|0;c[E>>2]=e;c[j>>2]=f;c[x>>2]=g;c[y>>2]=h;c[A>>2]=c[c[E>>2]>>2];uj(l);if(c[j>>2]|0){c[n>>2]=c[c[j>>2]>>2];c[z>>2]=ph(c[A>>2]|0,(c[n>>2]|0)*24|0,0)|0}else{c[n>>2]=0;c[z>>2]=0}b[c[x>>2]>>1]=c[n>>2];c[c[y>>2]>>2]=c[z>>2];c[B>>2]=0;c[q>>2]=c[z>>2];while(1){if((c[B>>2]|0)>=(c[n>>2]|0))break;if(!((a[(c[A>>2]|0)+65>>0]|0)!=0^1))break;c[p>>2]=Tx(c[(c[(c[j>>2]|0)+4>>2]|0)+((c[B>>2]|0)*20|0)>>2]|0)|0;E=c[(c[(c[j>>2]|0)+4>>2]|0)+((c[B>>2]|0)*20|0)+4>>2]|0;c[v>>2]=E;do if(!E){c[r>>2]=c[p>>2];while(1){f=c[r>>2]|0;if((d[c[r>>2]>>0]|0)!=122)break;c[r>>2]=c[f+16>>2]}if((d[f>>0]|0)==152?(c[(c[r>>2]|0)+44>>2]|0)!=0:0){c[m>>2]=b[(c[r>>2]|0)+32>>1];c[s>>2]=c[(c[r>>2]|0)+44>>2];if((c[m>>2]|0)<0)c[m>>2]=b[(c[s>>2]|0)+32>>1];if((c[m>>2]|0)>=0)f=c[(c[(c[s>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)>>2]|0;else f=25592;c[v>>2]=f;break}if((d[c[r>>2]>>0]|0)==27){c[v>>2]=c[(c[r>>2]|0)+8>>2];break}else{c[v>>2]=c[(c[(c[j>>2]|0)+4>>2]|0)+((c[B>>2]|0)*20|0)+8>>2];break}}while(0);E=c[A>>2]|0;c[t>>2]=c[v>>2];c[v>>2]=Bh(E,19255,t)|0;c[k>>2]=0;while(1){if(c[v>>2]|0)e=(nj(l,c[v>>2]|0)|0)!=0;else e=0;f=c[v>>2]|0;if(!e)break;c[o>>2]=If(f)|0;if((c[o>>2]|0)>0){c[C>>2]=(c[o>>2]|0)-1;while(1){if((c[C>>2]|0)<=0)break;if(!(d[19267+(d[(c[v>>2]|0)+(c[C>>2]|0)>>0]|0)>>0]&4))break;c[C>>2]=(c[C>>2]|0)+-1}if((a[(c[v>>2]|0)+(c[C>>2]|0)>>0]|0)==58)c[o>>2]=c[C>>2]}E=c[A>>2]|0;e=c[o>>2]|0;h=c[v>>2]|0;g=(c[k>>2]|0)+1|0;c[k>>2]=g;c[u>>2]=e;c[u+4>>2]=h;c[u+8>>2]=g;c[v>>2]=Bh(E,31486,u)|0;if((c[k>>2]|0)>>>0<=3)continue;Sd(4,k)}c[c[q>>2]>>2]=f;if((c[v>>2]|0)!=0?(E=Oj(l,c[v>>2]|0,c[q>>2]|0)|0,(E|0)==(c[q>>2]|0)):0)jh(c[A>>2]|0);c[B>>2]=(c[B>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+24}vj(l);if(!(a[(c[A>>2]|0)+65>>0]|0)){c[w>>2]=0;E=c[w>>2]|0;i=D;return E|0}c[C>>2]=0;while(1){f=c[A>>2]|0;if((c[C>>2]|0)>=(c[B>>2]|0))break;Sf(f,c[(c[z>>2]|0)+((c[C>>2]|0)*24|0)>>2]|0);c[C>>2]=(c[C>>2]|0)+1}Sf(f,c[z>>2]|0);c[c[y>>2]>>2]=0;b[c[x>>2]>>1]=0;c[w>>2]=7;E=c[w>>2]|0;i=D;return E|0}function Hx(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;m=o+4|0;n=o;c[j>>2]=d;c[k>>2]=f;c[l>>2]=g;if(!(c[k>>2]|0)){c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}c[m>>2]=Fw(c[j>>2]|0,72,0)|0;if(!(c[m>>2]|0)){c[h>>2]=0;n=c[h>>2]|0;i=o;return n|0}f=vy(c[j>>2]|0,c[c[k>>2]>>2]|0,c[l>>2]|0)|0;c[c[m>>2]>>2]=f;f=lz(c[j>>2]|0,c[(c[k>>2]|0)+32>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+32>>2]=f;f=ny(c[j>>2]|0,c[(c[k>>2]|0)+36>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+36>>2]=f;f=vy(c[j>>2]|0,c[(c[k>>2]|0)+40>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+40>>2]=f;f=ny(c[j>>2]|0,c[(c[k>>2]|0)+44>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+44>>2]=f;f=vy(c[j>>2]|0,c[(c[k>>2]|0)+48>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+48>>2]=f;a[(c[m>>2]|0)+4>>0]=a[(c[k>>2]|0)+4>>0]|0;f=Hx(c[j>>2]|0,c[(c[k>>2]|0)+52>>2]|0,c[l>>2]|0)|0;c[n>>2]=f;c[(c[m>>2]|0)+52>>2]=f;if(c[n>>2]|0)c[(c[n>>2]|0)+56>>2]=c[m>>2];c[(c[m>>2]|0)+56>>2]=0;g=ny(c[j>>2]|0,c[(c[k>>2]|0)+60>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+60>>2]=g;g=ny(c[j>>2]|0,c[(c[k>>2]|0)+64>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+64>>2]=g;c[(c[m>>2]|0)+8>>2]=0;c[(c[m>>2]|0)+12>>2]=0;b[(c[m>>2]|0)+6>>1]=(e[(c[k>>2]|0)+6>>1]|0)&-17;c[(c[m>>2]|0)+16>>2]=-1;c[(c[m>>2]|0)+16+4>>2]=-1;g=(c[k>>2]|0)+24|0;f=c[g+4>>2]|0;n=(c[m>>2]|0)+24|0;c[n>>2]=c[g>>2];c[n+4>>2]=f;n=mz(c[j>>2]|0,c[(c[k>>2]|0)+68>>2]|0)|0;c[(c[m>>2]|0)+68>>2]=n;c[h>>2]=c[m>>2];n=c[h>>2]|0;i=o;return n|0}function Ix(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=h;return}c[f>>2]=0;c[g>>2]=(c[e>>2]|0)+8;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0)){d=8;break}if((c[(c[g>>2]|0)+44>>2]|0)>=0){d=8;break}b=(c[d>>2]|0)+72|0;a=c[b>>2]|0;c[b>>2]=a+1;c[(c[g>>2]|0)+44>>2]=a;if(c[(c[g>>2]|0)+20>>2]|0)Ix(c[d>>2]|0,c[(c[(c[g>>2]|0)+20>>2]|0)+32>>2]|0);c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+72}if((d|0)==8){i=h;return}}function Jx(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;k=m+8|0;j=m+4|0;l=m;c[g>>2]=d;c[h>>2]=e;c[j>>2]=c[c[g>>2]>>2];c[l>>2]=c[(c[j>>2]|0)+24>>2];e=(c[j>>2]|0)+24|0;c[e>>2]=c[e>>2]&-5;e=(c[j>>2]|0)+24|0;c[e>>2]=c[e>>2]|64;Kx(c[g>>2]|0,c[h>>2]|0,0);if(c[(c[g>>2]|0)+68>>2]|0){c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}while(1){if(!(c[(c[h>>2]|0)+52>>2]|0))break;c[h>>2]=c[(c[h>>2]|0)+52>>2]}c[(c[j>>2]|0)+24>>2]=c[l>>2];c[k>>2]=ph(c[j>>2]|0,72,0)|0;if(!(c[k>>2]|0)){c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}b[(c[k>>2]|0)+36>>1]=1;c[c[k>>2]>>2]=0;b[(c[k>>2]|0)+38>>1]=200;Gx(c[g>>2]|0,c[c[h>>2]>>2]|0,(c[k>>2]|0)+34|0,(c[k>>2]|0)+4|0)|0;Lx(c[g>>2]|0,c[k>>2]|0,c[h>>2]|0);b[(c[k>>2]|0)+32>>1]=-1;if(a[(c[j>>2]|0)+65>>0]|0){Qf(c[j>>2]|0,c[k>>2]|0);c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}else{c[f>>2]=c[k>>2];l=c[f>>2]|0;i=m;return l|0}return 0}function Kx(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;m=i;i=i+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[h>>2]=b;c[j>>2]=f;c[k>>2]=g;if(!(c[j>>2]|0)){i=m;return}c[l>>2]=c[c[h>>2]>>2];if(a[(c[l>>2]|0)+65>>0]|0){i=m;return}if(e[(c[j>>2]|0)+6>>1]&64){i=m;return}Ux(c[h>>2]|0,c[j>>2]|0);if(c[(c[h>>2]|0)+68>>2]|0){i=m;return}if(d[(c[l>>2]|0)+65>>0]|0){i=m;return}Vx(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0);if(c[(c[h>>2]|0)+68>>2]|0){i=m;return}if(d[(c[l>>2]|0)+65>>0]|0){i=m;return}Wx(c[h>>2]|0,c[j>>2]|0);i=m;return}function Lx(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+80|0;h=t+76|0;j=t+72|0;k=t+68|0;m=t+64|0;r=t+32|0;p=t+24|0;q=t+20|0;n=t+16|0;o=t+12|0;l=t+8|0;s=t;c[h>>2]=e;c[j>>2]=f;c[k>>2]=g;c[m>>2]=c[c[h>>2]>>2];f=s;c[f>>2]=0;c[f+4>>2]=0;if(a[(c[m>>2]|0)+65>>0]|0){i=t;return}c[r>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=0;c[r+24>>2]=0;c[r+28>>2]=0;c[r+4>>2]=c[(c[k>>2]|0)+32>>2];c[l>>2]=c[(c[c[k>>2]>>2]|0)+4>>2];c[n>>2]=0;c[p>>2]=c[(c[j>>2]|0)+4>>2];while(1){if((c[n>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0))break;c[o>>2]=c[(c[l>>2]|0)+((c[n>>2]|0)*20|0)>>2];if(!(c[(c[p>>2]|0)+12>>2]|0)){f=c[m>>2]|0;f=nh(f,Mx(r,c[o>>2]|0,(c[p>>2]|0)+22|0)|0)|0;c[(c[p>>2]|0)+12>>2]=f}g=s;g=gR(c[g>>2]|0,c[g+4>>2]|0,d[(c[p>>2]|0)+22>>0]|0,0)|0;f=s;c[f>>2]=g;c[f+4>>2]=C;f=Nx(c[o>>2]|0)|0;a[(c[p>>2]|0)+21>>0]=f;if(!(a[(c[p>>2]|0)+21>>0]|0))a[(c[p>>2]|0)+21>>0]=65;c[q>>2]=Ox(c[h>>2]|0,c[o>>2]|0)|0;if((c[q>>2]|0)!=0?(c[(c[p>>2]|0)+16>>2]|0)==0:0){f=nh(c[m>>2]|0,c[c[q>>2]>>2]|0)|0;c[(c[p>>2]|0)+16>>2]=f}c[n>>2]=(c[n>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+24}s=rR(c[s>>2]|0,c[s+4>>2]|0,4,0)|0;s=Hj(s,C)|0;b[(c[j>>2]|0)+40>>1]=s;i=t;return}function Mx(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+128|0;h=x+112|0;j=x+108|0;k=x+104|0;w=x+100|0;n=x+96|0;l=x+116|0;s=x+92|0;q=x+88|0;m=x+84|0;t=x+80|0;u=x+48|0;o=x+40|0;v=x+8|0;r=x+4|0;p=x;c[h>>2]=e;c[j>>2]=f;c[k>>2]=g;c[w>>2]=0;a[l>>0]=1;a:do switch(d[c[j>>2]>>0]|0){case 152:case 154:{c[s>>2]=0;c[q>>2]=0;c[m>>2]=b[(c[j>>2]|0)+32>>1];while(1){if(!(c[h>>2]|0))break;if(!((c[s>>2]|0)!=0^1))break;c[t>>2]=c[(c[h>>2]|0)+4>>2];c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[c[t>>2]>>2]|0))break;if((c[(c[t>>2]|0)+8+((c[n>>2]|0)*72|0)+44>>2]|0)==(c[(c[j>>2]|0)+28>>2]|0))break;c[n>>2]=(c[n>>2]|0)+1}if((c[n>>2]|0)<(c[c[t>>2]>>2]|0)){c[s>>2]=c[(c[t>>2]|0)+8+((c[n>>2]|0)*72|0)+16>>2];c[q>>2]=c[(c[t>>2]|0)+8+((c[n>>2]|0)*72|0)+20>>2];continue}else{c[h>>2]=c[(c[h>>2]|0)+16>>2];continue}}if(c[s>>2]|0){if(c[q>>2]|0){if((c[m>>2]|0)<0)break a;if((c[m>>2]|0)>=(c[c[c[q>>2]>>2]>>2]|0))break a;c[o>>2]=c[(c[(c[c[q>>2]>>2]|0)+4>>2]|0)+((c[m>>2]|0)*20|0)>>2];c[u+4>>2]=c[(c[q>>2]|0)+32>>2];c[u+16>>2]=c[h>>2];c[u>>2]=c[c[h>>2]>>2];c[w>>2]=Mx(u,c[o>>2]|0,l)|0;break a}if(c[(c[s>>2]|0)+64>>2]|0){if((c[m>>2]|0)<0)c[m>>2]=b[(c[s>>2]|0)+32>>1];if((c[m>>2]|0)<0){c[w>>2]=19623;break a}else{c[w>>2]=c[(c[(c[s>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+12>>2];a[l>>0]=a[(c[(c[s>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+22>>0]|0;break a}}}break}case 119:{c[r>>2]=c[(c[j>>2]|0)+20>>2];c[p>>2]=c[c[(c[c[r>>2]>>2]|0)+4>>2]>>2];c[v+4>>2]=c[(c[r>>2]|0)+32>>2];c[v+16>>2]=c[h>>2];c[v>>2]=c[c[h>>2]>>2];c[w>>2]=Mx(v,c[p>>2]|0,l)|0;break}default:{}}while(0);if(!(c[k>>2]|0)){w=c[w>>2]|0;i=x;return w|0}a[c[k>>2]>>0]=a[l>>0]|0;w=c[w>>2]|0;i=x;return w|0}function Nx(e){e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[g>>2]=e;c[g>>2]=Tx(c[g>>2]|0)|0;if(c[(c[g>>2]|0)+4>>2]&512){a[f>>0]=0;e=a[f>>0]|0;i=k;return e|0}c[j>>2]=d[c[g>>2]>>0];if((c[j>>2]|0)==119){a[f>>0]=Nx(c[c[(c[c[(c[g>>2]|0)+20>>2]>>2]|0)+4>>2]>>2]|0)|0;e=a[f>>0]|0;i=k;return e|0}if((c[j>>2]|0)==38){a[f>>0]=jx(c[(c[g>>2]|0)+8>>2]|0,0)|0;e=a[f>>0]|0;i=k;return e|0}if((c[j>>2]|0)==154|(c[j>>2]|0)==152|(c[j>>2]|0)==157?(c[(c[g>>2]|0)+44>>2]|0)!=0:0){c[h>>2]=b[(c[g>>2]|0)+32>>1];if((c[h>>2]|0)<0){a[f>>0]=68;e=a[f>>0]|0;i=k;return e|0}else{a[f>>0]=a[(c[(c[(c[g>>2]|0)+44>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)+21>>0]|0;e=a[f>>0]|0;i=k;return e|0}}a[f>>0]=a[(c[g>>2]|0)+1>>0]|0;e=a[f>>0]|0;i=k;return e|0}function Ox(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+48|0;g=r+36|0;s=r+32|0;h=r+28|0;n=r+24|0;m=r+20|0;l=r+16|0;k=r+12|0;p=r+8|0;o=r+4|0;j=r;c[g>>2]=e;c[s>>2]=f;c[h>>2]=c[c[g>>2]>>2];c[n>>2]=0;c[m>>2]=c[s>>2];while(1){if(!(c[m>>2]|0))break;c[l>>2]=d[c[m>>2]>>0];if(c[(c[m>>2]|0)+4>>2]&512)break;if((c[l>>2]|0)==38|(c[l>>2]|0)==156){c[m>>2]=c[(c[m>>2]|0)+12>>2];continue}if((c[l>>2]|0)==95){q=9;break}if((c[l>>2]|0)==157?(d[(c[m>>2]|0)+38>>0]|0)==95:0){q=9;break}if((c[l>>2]|0)==154|(c[l>>2]|0)==152|(c[l>>2]|0)==157|(c[l>>2]|0)==62?(c[(c[m>>2]|0)+44>>2]|0)!=0:0){q=12;break}if(!(c[(c[m>>2]|0)+4>>2]&256))break;if((c[(c[m>>2]|0)+12>>2]|0)!=0?(c[(c[(c[m>>2]|0)+12>>2]|0)+4>>2]&256|0)!=0:0){c[m>>2]=c[(c[m>>2]|0)+12>>2];continue}c[o>>2]=c[(c[m>>2]|0)+16>>2];a:do if((c[(c[m>>2]|0)+20>>2]|0)!=0?(c[(c[m>>2]|0)+4>>2]&2048|0)==0:0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[(c[m>>2]|0)+20>>2]>>2]|0))break a;f=c[j>>2]|0;if(c[(c[(c[(c[(c[m>>2]|0)+20>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)>>2]|0)+4>>2]&256)break;c[j>>2]=f+1}c[o>>2]=c[(c[(c[(c[m>>2]|0)+20>>2]|0)+4>>2]|0)+(f*20|0)>>2]}while(0);c[m>>2]=c[o>>2]}if((q|0)==9)c[n>>2]=Px(c[g>>2]|0,a[(c[h>>2]|0)+62>>0]|0,0,c[(c[m>>2]|0)+8>>2]|0)|0;else if((q|0)==12?(c[k>>2]=b[(c[m>>2]|0)+32>>1],(c[k>>2]|0)>=0):0){c[p>>2]=c[(c[(c[(c[m>>2]|0)+44>>2]|0)+4>>2]|0)+((c[k>>2]|0)*24|0)+16>>2];c[n>>2]=Mj(c[h>>2]|0,a[(c[h>>2]|0)+62>>0]|0,c[p>>2]|0,0)|0}if(!(Qx(c[g>>2]|0,c[n>>2]|0)|0)){s=c[n>>2]|0;i=r;return s|0}c[n>>2]=0;s=c[n>>2]|0;i=r;return s|0}function Px(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+32|0;n=o;h=o+20|0;j=o+24|0;p=o+16|0;k=o+12|0;m=o+8|0;l=o+4|0;c[h>>2]=b;a[j>>0]=e;c[p>>2]=f;c[k>>2]=g;c[l>>2]=c[c[h>>2]>>2];c[m>>2]=c[p>>2];if(!(c[m>>2]|0))c[m>>2]=Mj(c[l>>2]|0,a[j>>0]|0,c[k>>2]|0,0)|0;if(!((c[m>>2]|0)!=0?(c[(c[m>>2]|0)+12>>2]|0)!=0:0)){Rx(c[l>>2]|0,d[j>>0]|0,c[k>>2]|0);c[m>>2]=Mj(c[l>>2]|0,a[j>>0]|0,c[k>>2]|0,0)|0}if(((c[m>>2]|0)!=0?(c[(c[m>>2]|0)+12>>2]|0)==0:0)?(Sx(c[l>>2]|0,c[m>>2]|0)|0)!=0:0)c[m>>2]=0;if(c[m>>2]|0){p=c[m>>2]|0;i=o;return p|0}p=c[h>>2]|0;c[n>>2]=c[k>>2];Ah(p,29884,n);p=c[m>>2]|0;i=o;return p|0}function Qx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;g=l+12|0;k=l+8|0;h=l+4|0;j=l;c[f>>2]=b;c[g>>2]=d;if((c[g>>2]|0)!=0?(c[k>>2]=c[c[g>>2]>>2],c[h>>2]=c[c[f>>2]>>2],c[j>>2]=Px(c[f>>2]|0,a[(c[h>>2]|0)+62>>0]|0,c[g>>2]|0,c[k>>2]|0)|0,(c[j>>2]|0)==0):0){c[e>>2]=1;k=c[e>>2]|0;i=l;return k|0}c[e>>2]=0;k=c[e>>2]|0;i=l;return k|0}function Rx(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;l=n+8|0;m=n+4|0;k=n;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;do if(c[(c[g>>2]|0)+224>>2]|0){c[l>>2]=nh(c[g>>2]|0,c[j>>2]|0)|0;if(c[l>>2]|0){_b[c[(c[g>>2]|0)+224>>2]&255](c[(c[g>>2]|0)+232>>2]|0,c[g>>2]|0,c[h>>2]|0,c[l>>2]|0);Sf(c[g>>2]|0,c[l>>2]|0);break}else{i=n;return}}while(0);if(!(c[(c[g>>2]|0)+228>>2]|0)){i=n;return}c[k>>2]=Vh(c[g>>2]|0)|0;Wh(c[k>>2]|0,-1,c[j>>2]|0,1,0);c[m>>2]=Wg(c[k>>2]|0,((a[960]|0)==0?3:2)&255)|0;if(c[m>>2]|0)_b[c[(c[g>>2]|0)+228>>2]&255](c[(c[g>>2]|0)+232>>2]|0,c[g>>2]|0,d[(c[g>>2]|0)+62>>0]|0,c[m>>2]|0);$g(c[k>>2]|0);i=n;return}function Sx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;h=l+20|0;e=l+16|0;j=l+12|0;k=l+8|0;g=l+4|0;f=l;c[e>>2]=b;c[j>>2]=d;c[g>>2]=c[c[j>>2]>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=3){e=6;break}c[k>>2]=Mj(c[e>>2]|0,a[29915+(c[f>>2]|0)>>0]|0,c[g>>2]|0,0)|0;if(c[(c[k>>2]|0)+12>>2]|0){e=4;break}c[f>>2]=(c[f>>2]|0)+1}if((e|0)==4){g=c[j>>2]|0;k=c[k>>2]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[g+16>>2]=c[k+16>>2];c[(c[j>>2]|0)+16>>2]=0;c[h>>2]=0;k=c[h>>2]|0;i=l;return k|0}else if((e|0)==6){c[h>>2]=1;k=c[h>>2]|0;i=l;return k|0}return 0}function Tx(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;while(1){if(c[d>>2]|0)a=(c[(c[d>>2]|0)+4>>2]&4096|0)!=0;else a=0;b=c[d>>2]|0;if(!a)break;a=c[d>>2]|0;if(c[b+4>>2]&262144){c[d>>2]=c[c[(c[a+20>>2]|0)+4>>2]>>2];continue}else{c[d>>2]=c[a+12>>2];continue}}i=e;return b|0}function Ux(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0;h=i;i=i+48|0;j=h+32|0;f=h+28|0;g=h;c[j>>2]=b;c[f>>2]=d;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0; -c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+4>>2]=190;c[g>>2]=c[j>>2];if(a[(c[j>>2]|0)+22>>0]|0){c[g+8>>2]=191;Zx(g,c[f>>2]|0)|0}c[g+8>>2]=192;if(e[(c[f>>2]|0)+6>>1]&512){j=c[f>>2]|0;Zx(g,j)|0;i=h;return}c[g+12>>2]=132;j=c[f>>2]|0;Zx(g,j)|0;i=h;return}function Vx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;j=e+36|0;f=e+32|0;h=e+28|0;g=e;c[j>>2]=a;c[f>>2]=b;c[h>>2]=d;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+4>>2]=193;c[g+8>>2]=194;c[g>>2]=c[j>>2];c[g+24>>2]=c[h>>2];Zx(g,c[f>>2]|0)|0;i=e;return}function Wx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+48|0;g=d+32|0;e=d+28|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+12>>2]=133;c[f+4>>2]=190;c[f>>2]=c[g>>2];Zx(f,c[e>>2]|0)|0;i=d;return}function Xx(a,f){a=a|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;p=n+28|0;o=n+24|0;j=n+20|0;g=n+16|0;m=n+12|0;h=n+8|0;l=n+4|0;k=n;c[p>>2]=a;c[o>>2]=f;a=(c[o>>2]|0)+6|0;b[a>>1]=e[a>>1]|0|64;c[j>>2]=c[c[p>>2]>>2];c[m>>2]=c[(c[o>>2]|0)+32>>2];c[g>>2]=0;c[h>>2]=(c[m>>2]|0)+8;while(1){if((c[g>>2]|0)>=(c[c[m>>2]>>2]|0))break;c[l>>2]=c[(c[h>>2]|0)+16>>2];if(((d[(c[l>>2]|0)+42>>0]|0)&2|0)!=0?(c[k>>2]=c[(c[h>>2]|0)+20>>2],(c[k>>2]|0)!=0):0){while(1){if(!(c[(c[k>>2]|0)+52>>2]|0))break;c[k>>2]=c[(c[k>>2]|0)+52>>2]}Lx(c[j>>2]|0,c[l>>2]|0,c[k>>2]|0)}c[g>>2]=(c[g>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+72}i=n;return}function Yx(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function Zx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h+8|0;d=h+4|0;g=h;c[f>>2]=a;c[d>>2]=b;do if(c[d>>2]|0){if((c[(c[f>>2]|0)+8>>2]|0)==0?(c[(c[f>>2]|0)+12>>2]|0)==0:0)break;c[g>>2]=0;a=(c[f>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+1;while(1){if(!(c[d>>2]|0)){d=15;break}if((c[(c[f>>2]|0)+8>>2]|0)!=0?(c[g>>2]=Yb[c[(c[f>>2]|0)+8>>2]&255](c[f>>2]|0,c[d>>2]|0)|0,(c[g>>2]|0)!=0):0){d=15;break}if(_x(c[f>>2]|0,c[d>>2]|0)|0){d=11;break}if($x(c[f>>2]|0,c[d>>2]|0)|0){d=11;break}if(c[(c[f>>2]|0)+12>>2]|0)Rb[c[(c[f>>2]|0)+12>>2]&255](c[f>>2]|0,c[d>>2]|0);c[d>>2]=c[(c[d>>2]|0)+52>>2]}if((d|0)==11){g=(c[f>>2]|0)+16|0;c[g>>2]=(c[g>>2]|0)+-1;c[e>>2]=2;g=c[e>>2]|0;i=h;return g|0}else if((d|0)==15){f=(c[f>>2]|0)+16|0;c[f>>2]=(c[f>>2]|0)+-1;c[e>>2]=c[g>>2]&2;g=c[e>>2]|0;i=h;return g|0}}while(0);c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}function _x(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=b;do if(!(ay(c[e>>2]|0,c[c[f>>2]>>2]|0)|0)){if(by(c[e>>2]|0,c[(c[f>>2]|0)+36>>2]|0)|0){c[d>>2]=2;break}if(ay(c[e>>2]|0,c[(c[f>>2]|0)+40>>2]|0)|0){c[d>>2]=2;break}if(by(c[e>>2]|0,c[(c[f>>2]|0)+44>>2]|0)|0){c[d>>2]=2;break}if(ay(c[e>>2]|0,c[(c[f>>2]|0)+48>>2]|0)|0){c[d>>2]=2;break}if(by(c[e>>2]|0,c[(c[f>>2]|0)+60>>2]|0)|0){c[d>>2]=2;break}if(by(c[e>>2]|0,c[(c[f>>2]|0)+64>>2]|0)|0){c[d>>2]=2;break}else{c[d>>2]=0;break}}else c[d>>2]=2;while(0);i=g;return c[d>>2]|0}function $x(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;j=k+20|0;e=k+16|0;l=k+12|0;h=k+8|0;f=k+4|0;g=k;c[e>>2]=a;c[l>>2]=b;c[h>>2]=c[(c[l>>2]|0)+32>>2];a:do if(c[h>>2]|0){c[f>>2]=c[c[h>>2]>>2];c[g>>2]=(c[h>>2]|0)+8;while(1){if((c[f>>2]|0)<=0)break a;if(Zx(c[e>>2]|0,c[(c[g>>2]|0)+20>>2]|0)|0){e=5;break}if(((d[(c[g>>2]|0)+36+1>>0]|0)>>>2&1|0)!=0?(ay(c[e>>2]|0,c[(c[g>>2]|0)+64>>2]|0)|0)!=0:0){e=8;break}c[f>>2]=(c[f>>2]|0)+-1;c[g>>2]=(c[g>>2]|0)+72}if((e|0)==5){c[j>>2]=2;l=c[j>>2]|0;i=k;return l|0}else if((e|0)==8){c[j>>2]=2;l=c[j>>2]|0;i=k;return l|0}}while(0);c[j>>2]=0;l=c[j>>2]|0;i=k;return l|0}function ay(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;a:do if(c[f>>2]|0){c[g>>2]=c[c[f>>2]>>2];c[h>>2]=c[(c[f>>2]|0)+4>>2];while(1){if((c[g>>2]|0)<=0)break a;if(by(c[e>>2]|0,c[c[h>>2]>>2]|0)|0)break;c[g>>2]=(c[g>>2]|0)+-1;c[h>>2]=(c[h>>2]|0)+20}c[d>>2]=2;a=c[d>>2]|0;i=j;return a|0}while(0);c[d>>2]=0;a=c[d>>2]|0;i=j;return a|0}function by(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){a=0;i=f;return a|0}a=cy(c[d>>2]|0,c[e>>2]|0)|0;i=f;return a|0}function cy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;d=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[f>>2]=b;c[g>>2]=Yb[c[(c[d>>2]|0)+4>>2]&255](c[d>>2]|0,c[f>>2]|0)|0;do if((c[g>>2]|0)==0?(c[(c[f>>2]|0)+4>>2]&16384|0)==0:0){if(by(c[d>>2]|0,c[(c[f>>2]|0)+12>>2]|0)|0){c[e>>2]=2;g=c[e>>2]|0;i=h;return g|0}if(by(c[d>>2]|0,c[(c[f>>2]|0)+16>>2]|0)|0){c[e>>2]=2;g=c[e>>2]|0;i=h;return g|0}d=c[d>>2]|0;b=(c[f>>2]|0)+20|0;if(c[(c[f>>2]|0)+4>>2]&2048){if(!(Zx(d,c[b>>2]|0)|0))break;c[e>>2]=2;g=c[e>>2]|0;i=h;return g|0}else{if(!(ay(d,c[b>>2]|0)|0))break;c[e>>2]=2;g=c[e>>2]|0;i=h;return g|0}}while(0);c[e>>2]=c[g>>2]&2;g=c[e>>2]|0;i=h;return g|0}function dy(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+128|0;C=J+32|0;E=J+24|0;D=J+16|0;B=J+8|0;A=J;I=J+116|0;n=J+112|0;o=J+108|0;x=J+104|0;z=J+100|0;k=J+96|0;m=J+92|0;l=J+88|0;j=J+84|0;w=J+80|0;s=J+76|0;u=J+72|0;F=J+68|0;r=J+64|0;p=J+60|0;t=J+56|0;G=J+52|0;v=J+48|0;q=J+120|0;y=J+44|0;h=J+40|0;c[n>>2]=f;c[o>>2]=g;c[x>>2]=c[(c[n>>2]|0)+24>>2];c[z>>2]=c[c[x>>2]>>2];if(c[(c[o>>2]|0)+4>>2]&4){c[I>>2]=1;I=c[I>>2]|0;i=J;return I|0}f=(c[o>>2]|0)+4|0;c[f>>2]=c[f>>2]|4;switch(d[c[o>>2]>>0]|0){case 27:{c[I>>2]=Fy(c[z>>2]|0,0,0,c[(c[o>>2]|0)+8>>2]|0,c[x>>2]|0,c[o>>2]|0)|0;I=c[I>>2]|0;i=J;return I|0}case 122:{Gy(c[z>>2]|0,c[x>>2]|0,30424,32);c[j>>2]=c[(c[o>>2]|0)+16>>2];if((d[c[j>>2]>>0]|0)==27){c[l>>2]=0;c[m>>2]=c[(c[(c[o>>2]|0)+12>>2]|0)+8>>2];c[k>>2]=c[(c[j>>2]|0)+8>>2]}else{c[l>>2]=c[(c[(c[o>>2]|0)+12>>2]|0)+8>>2];c[m>>2]=c[(c[(c[j>>2]|0)+12>>2]|0)+8>>2];c[k>>2]=c[(c[(c[j>>2]|0)+16>>2]|0)+8>>2]}c[I>>2]=Fy(c[z>>2]|0,c[l>>2]|0,c[m>>2]|0,c[k>>2]|0,c[x>>2]|0,c[o>>2]|0)|0;I=c[I>>2]|0;i=J;return I|0}case 151:{c[w>>2]=c[(c[o>>2]|0)+20>>2];if(c[w>>2]|0)h=c[c[w>>2]>>2]|0;else h=0;c[s>>2]=h;c[u>>2]=0;c[F>>2]=0;c[r>>2]=0;a[q>>0]=a[(c[c[z>>2]>>2]|0)+62>>0]|0;Gy(c[z>>2]|0,c[x>>2]|0,30441,16);c[G>>2]=c[(c[o>>2]|0)+8>>2];c[t>>2]=If(c[G>>2]|0)|0;c[v>>2]=gi(c[c[z>>2]>>2]|0,c[G>>2]|0,c[t>>2]|0,c[s>>2]|0,a[q>>0]|0,0)|0;do if(!(c[v>>2]|0)){c[v>>2]=gi(c[c[z>>2]>>2]|0,c[G>>2]|0,c[t>>2]|0,-2,a[q>>0]|0,0)|0;if(!(c[v>>2]|0)){c[u>>2]=1;break}else{c[F>>2]=1;break}}else{c[r>>2]=(c[(c[v>>2]|0)+16>>2]|0)!=0&1;do if(e[(c[v>>2]|0)+2>>1]&1024){q=(c[o>>2]|0)+4|0;c[q>>2]=c[q>>2]|266240;if((c[s>>2]|0)!=2){c[(c[o>>2]|0)+28>>2]=(a[c[(c[v>>2]|0)+20>>2]>>0]|0)==117?8388608:125829120;break}s=Hy(c[(c[(c[w>>2]|0)+4>>2]|0)+20>>2]|0)|0;c[(c[o>>2]|0)+28>>2]=s;if((c[(c[o>>2]|0)+28>>2]|0)<0){Ah(c[z>>2]|0,30451,A);A=(c[x>>2]|0)+24|0;c[A>>2]=(c[A>>2]|0)+1}}while(0);c[p>>2]=Mw(c[z>>2]|0,31,0,c[(c[v>>2]|0)+20>>2]|0,0)|0;if(c[p>>2]|0){if((c[p>>2]|0)==1){H=c[z>>2]|0;c[B>>2]=c[(c[v>>2]|0)+20>>2];Ah(H,30522,B);H=(c[x>>2]|0)+24|0;c[H>>2]=(c[H>>2]|0)+1}a[c[o>>2]>>0]=101;c[I>>2]=1;I=c[I>>2]|0;i=J;return I|0}else{if(e[(c[v>>2]|0)+2>>1]&10240){B=(c[o>>2]|0)+4|0;c[B>>2]=c[B>>2]|524288}if(e[(c[v>>2]|0)+2>>1]&2048)break;Gy(c[z>>2]|0,c[x>>2]|0,30557,32);break}}while(0);if((c[r>>2]|0)!=0?(e[(c[x>>2]|0)+28>>1]&1|0)==0:0){F=c[z>>2]|0;G=c[G>>2]|0;c[D>>2]=c[t>>2];c[D+4>>2]=G;Ah(F,30585,D);G=(c[x>>2]|0)+24|0;c[G>>2]=(c[G>>2]|0)+1;c[r>>2]=0}else H=31;do if((H|0)==31){if((c[u>>2]|0)!=0?(d[(c[c[z>>2]>>2]|0)+140+5>>0]|0)==0:0){H=c[z>>2]|0;G=c[G>>2]|0;c[E>>2]=c[t>>2];c[E+4>>2]=G;Ah(H,30621,E);H=(c[x>>2]|0)+24|0;c[H>>2]=(c[H>>2]|0)+1;break}if(c[F>>2]|0){H=c[z>>2]|0;G=c[G>>2]|0;c[C>>2]=c[t>>2];c[C+4>>2]=G;Ah(H,30644,C);H=(c[x>>2]|0)+24|0;c[H>>2]=(c[H>>2]|0)+1}}while(0);if(c[r>>2]|0){H=(c[x>>2]|0)+28|0;b[H>>1]=e[H>>1]&-2}ay(c[n>>2]|0,c[w>>2]|0)|0;if(c[r>>2]|0){c[y>>2]=c[x>>2];a[c[o>>2]>>0]=-103;a[(c[o>>2]|0)+38>>0]=0;while(1){if(!(c[y>>2]|0))break;if(!((Iy(c[o>>2]|0,c[(c[y>>2]|0)+4>>2]|0)|0)!=0^1))break;H=(c[o>>2]|0)+38|0;a[H>>0]=(a[H>>0]|0)+1<<24>>24;c[y>>2]=c[(c[y>>2]|0)+16>>2]}if(c[y>>2]|0){H=(c[y>>2]|0)+28|0;b[H>>1]=e[H>>1]|(2|e[(c[v>>2]|0)+2>>1]&4096)}H=(c[x>>2]|0)+28|0;b[H>>1]=e[H>>1]|1}c[I>>2]=1;I=c[I>>2]|0;i=J;return I|0}case 75:case 20:case 119:{if((c[(c[o>>2]|0)+4>>2]&2048|0)!=0?(c[h>>2]=c[(c[x>>2]|0)+20>>2],Gy(c[z>>2]|0,c[x>>2]|0,30689,52),Zx(c[n>>2]|0,c[(c[o>>2]|0)+20>>2]|0)|0,(c[h>>2]|0)!=(c[(c[x>>2]|0)+20>>2]|0)):0){H=(c[o>>2]|0)+4|0;c[H>>2]=c[H>>2]|32}break}case 135:{Gy(c[z>>2]|0,c[x>>2]|0,30700,52);break}default:{}}if(c[(c[z>>2]|0)+68>>2]|0)h=1;else h=(d[(c[c[z>>2]>>2]|0)+65>>0]|0)!=0;c[I>>2]=h?2:0;I=c[I>>2]|0;i=J;return I|0}function ey(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+128|0;C=E+8|0;B=E;D=E+116|0;h=E+112|0;x=E+108|0;s=E+104|0;v=E+72|0;y=E+68|0;l=E+64|0;A=E+60|0;k=E+56|0;n=E+52|0;z=E+48|0;j=E+44|0;t=E+40|0;o=E+36|0;r=E+32|0;m=E+28|0;w=E+24|0;p=E+20|0;u=E+16|0;q=E+12|0;c[h>>2]=f;c[x>>2]=g;if(e[(c[x>>2]|0)+6>>1]&4){c[D>>2]=1;D=c[D>>2]|0;i=E;return D|0}c[s>>2]=c[(c[h>>2]|0)+24>>2];c[A>>2]=c[c[h>>2]>>2];c[j>>2]=c[c[A>>2]>>2];if(!(e[(c[x>>2]|0)+6>>1]&32)){Kx(c[A>>2]|0,c[x>>2]|0,c[s>>2]|0);if(c[(c[A>>2]|0)+68>>2]|0)h=1;else h=(d[(c[j>>2]|0)+65>>0]|0)!=0;c[D>>2]=h?2:1;D=c[D>>2]|0;i=E;return D|0}c[y>>2]=(c[(c[x>>2]|0)+52>>2]|0)!=0&1;c[l>>2]=0;c[z>>2]=c[x>>2];a:while(1){if(!(c[x>>2]|0)){h=68;break}f=(c[x>>2]|0)+6|0;b[f>>1]=e[f>>1]|4;c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;c[v+16>>2]=0;c[v+20>>2]=0;c[v+24>>2]=0;c[v+28>>2]=0;c[v>>2]=c[A>>2];if(fy(v,c[(c[x>>2]|0)+60>>2]|0)|0){h=11;break}if(fy(v,c[(c[x>>2]|0)+64>>2]|0)|0){h=11;break}if(e[(c[x>>2]|0)+6>>1]&16384){c[t>>2]=c[(c[(c[x>>2]|0)+32>>2]|0)+8+20>>2];c[(c[t>>2]|0)+48>>2]=c[(c[x>>2]|0)+48>>2];c[(c[x>>2]|0)+48>>2]=0}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[c[(c[x>>2]|0)+32>>2]>>2]|0))break;c[o>>2]=(c[(c[x>>2]|0)+32>>2]|0)+8+((c[k>>2]|0)*72|0);if(c[(c[o>>2]|0)+20>>2]|0){c[m>>2]=0;c[w>>2]=c[(c[A>>2]|0)+496>>2];c[r>>2]=c[s>>2];while(1){if(!(c[r>>2]|0))break;c[m>>2]=(c[m>>2]|0)+(c[(c[r>>2]|0)+20>>2]|0);c[r>>2]=c[(c[r>>2]|0)+16>>2]}if(c[(c[o>>2]|0)+8>>2]|0)c[(c[A>>2]|0)+496>>2]=c[(c[o>>2]|0)+8>>2];Vx(c[A>>2]|0,c[(c[o>>2]|0)+20>>2]|0,c[s>>2]|0);c[(c[A>>2]|0)+496>>2]=c[w>>2];if(c[(c[A>>2]|0)+68>>2]|0){h=24;break a}if(d[(c[j>>2]|0)+65>>0]|0){h=24;break a}c[r>>2]=c[s>>2];while(1){if(!(c[r>>2]|0))break;c[m>>2]=(c[m>>2]|0)-(c[(c[r>>2]|0)+20>>2]|0);c[r>>2]=c[(c[r>>2]|0)+16>>2]}f=(c[o>>2]|0)+36+1|0;a[f>>0]=a[f>>0]&-9|((c[m>>2]|0)!=0&1)<<3&255}c[k>>2]=(c[k>>2]|0)+1}b[v+28>>1]=1;c[v+4>>2]=c[(c[x>>2]|0)+32>>2];c[v+16>>2]=c[s>>2];if(gy(v,c[c[x>>2]>>2]|0)|0){h=31;break}c[n>>2]=c[(c[x>>2]|0)+40>>2];if((c[n>>2]|0)==0?(e[v+28>>1]&2|0)==0:0){f=v+28|0;b[f>>1]=e[f>>1]&-2}else{f=(c[x>>2]|0)+6|0;b[f>>1]=e[f>>1]|(8|e[v+28>>1]&4096)}if(!((c[n>>2]|0)!=0?1:(c[(c[x>>2]|0)+44>>2]|0)==0)){h=37;break}c[v+8>>2]=c[c[x>>2]>>2];if(fy(v,c[(c[x>>2]|0)+44>>2]|0)|0){h=39;break}if(fy(v,c[(c[x>>2]|0)+36>>2]|0)|0){h=41;break}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[c[(c[x>>2]|0)+32>>2]>>2]|0))break;c[p>>2]=(c[(c[x>>2]|0)+32>>2]|0)+8+((c[k>>2]|0)*72|0);if(((d[(c[p>>2]|0)+36+1>>0]|0)>>>2&1|0)!=0?(gy(v,c[(c[p>>2]|0)+64>>2]|0)|0)!=0:0){h=46;break a}c[k>>2]=(c[k>>2]|0)+1}c[v+16>>2]=0;f=v+28|0;b[f>>1]=e[f>>1]|1;if(e[(c[x>>2]|0)+6>>1]&16384){c[u>>2]=c[(c[(c[x>>2]|0)+32>>2]|0)+8+20>>2];c[(c[x>>2]|0)+48>>2]=c[(c[u>>2]|0)+48>>2];c[(c[u>>2]|0)+48>>2]=0}if((c[y>>2]|0)<=(c[l>>2]|0)?(hy(v,c[x>>2]|0,c[(c[x>>2]|0)+48>>2]|0,29962)|0)!=0:0){h=52;break}if(a[(c[j>>2]|0)+65>>0]|0){h=54;break}b:do if(c[n>>2]|0){if(hy(v,c[x>>2]|0,c[n>>2]|0,29968)|0){h=58;break a}if(d[(c[j>>2]|0)+65>>0]|0){h=58;break a}c[k>>2]=0;c[q>>2]=c[(c[n>>2]|0)+4>>2];while(1){if((c[k>>2]|0)>=(c[c[n>>2]>>2]|0))break b;if(c[(c[c[q>>2]>>2]|0)+4>>2]&2){h=62;break a}c[k>>2]=(c[k>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+20}}while(0);if((c[(c[x>>2]|0)+56>>2]|0)!=0?(c[c[c[x>>2]>>2]>>2]|0)!=(c[c[c[(c[x>>2]|0)+56>>2]>>2]>>2]|0):0){h=66;break}c[x>>2]=c[(c[x>>2]|0)+52>>2];c[l>>2]=(c[l>>2]|0)+1}switch(h|0){case 11:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 24:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 31:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 37:{Ah(c[A>>2]|0,29918,B);c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 39:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 41:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 46:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 52:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 54:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 58:{c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 62:{Ah(c[A>>2]|0,29974,C);c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 66:{iy(c[A>>2]|0,c[(c[x>>2]|0)+56>>2]|0);c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}case 68:{if((c[y>>2]|0)!=0?(jy(c[A>>2]|0,c[z>>2]|0)|0)!=0:0){c[D>>2]=2;D=c[D>>2]|0;i=E;return D|0}c[D>>2]=1;D=c[D>>2]|0;i=E;return D|0}}return 0}function fy(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+48|0;g=n+40|0;h=n+36|0;j=n+32|0;l=n+44|0;m=n+4|0;k=n;c[h>>2]=d;c[j>>2]=f;if(!(c[j>>2]|0)){c[g>>2]=0;m=c[g>>2]|0;i=n;return m|0}c[k>>2]=c[c[h>>2]>>2];if(Ey(c[k>>2]|0,(c[(c[j>>2]|0)+24>>2]|0)+(c[(c[c[h>>2]>>2]|0)+464>>2]|0)|0)|0){c[g>>2]=1;m=c[g>>2]|0;i=n;return m|0}k=(c[k>>2]|0)+464|0;c[k>>2]=(c[k>>2]|0)+(c[(c[j>>2]|0)+24>>2]|0);b[l>>1]=(e[(c[h>>2]|0)+28>>1]|0)&4098;k=(c[h>>2]|0)+28|0;b[k>>1]=(e[k>>1]|0)&-4099;c[m>>2]=c[c[h>>2]>>2];c[m+4>>2]=193;c[m+8>>2]=194;c[m+12>>2]=0;c[m+16>>2]=0;a[m+20>>0]=0;c[m+24>>2]=c[h>>2];by(m,c[j>>2]|0)|0;k=(c[c[h>>2]>>2]|0)+464|0;c[k>>2]=(c[k>>2]|0)-(c[(c[j>>2]|0)+24>>2]|0);if(!((c[(c[h>>2]|0)+24>>2]|0)<=0?(c[(c[m>>2]|0)+68>>2]|0)<=0:0)){m=(c[j>>2]|0)+4|0;c[m>>2]=c[m>>2]|8}if((e[(c[h>>2]|0)+28>>1]|0)&2){m=(c[j>>2]|0)+4|0;c[m>>2]=c[m>>2]|2}m=(c[h>>2]|0)+28|0;b[m>>1]=e[m>>1]|0|(e[l>>1]|0);c[g>>2]=(c[(c[j>>2]|0)+4>>2]&8|0)!=0&1;m=c[g>>2]|0;i=n;return m|0}function gy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;a:do if(c[f>>2]|0){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[c[f>>2]>>2]|0))break a;if(fy(c[e>>2]|0,c[(c[(c[f>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0)|0)break;c[g>>2]=(c[g>>2]|0)+1}c[d>>2]=2;a=c[d>>2]|0;i=h;return a|0}while(0);c[d>>2]=0;a=c[d>>2]|0;i=h;return a|0}function hy(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+64|0;h=w+48|0;j=w+44|0;k=w+40|0;l=w+36|0;m=w+32|0;n=w+28|0;p=w+24|0;o=w+20|0;t=w+16|0;u=w+12|0;q=w+8|0;r=w+4|0;s=w;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;if(!(c[l>>2]|0)){c[h>>2]=0;v=c[h>>2]|0;i=w;return v|0}c[q>>2]=c[c[c[k>>2]>>2]>>2];c[u>>2]=c[c[j>>2]>>2];c[n>>2]=0;c[t>>2]=c[(c[l>>2]|0)+4>>2];a:while(1){if((c[n>>2]|0)>=(c[c[l>>2]>>2]|0)){v=20;break}c[r>>2]=c[c[t>>2]>>2];c[s>>2]=Tx(c[r>>2]|0)|0;if((a[c[m>>2]>>0]|0)!=71?(c[o>>2]=my(c[u>>2]|0,c[c[k>>2]>>2]|0,c[s>>2]|0)|0,(c[o>>2]|0)>0):0)b[(c[t>>2]|0)+16>>1]=c[o>>2];else v=8;b:do if((v|0)==8){v=0;if(ky(c[s>>2]|0,o)|0){if((c[o>>2]|0)<1|(c[o>>2]|0)>65535){v=10;break a}b[(c[t>>2]|0)+16>>1]=c[o>>2];break}b[(c[t>>2]|0)+16>>1]=0;if(fy(c[j>>2]|0,c[r>>2]|0)|0){v=13;break a}c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[c[c[k>>2]>>2]>>2]|0))break b;if(!(py(c[r>>2]|0,c[(c[(c[c[k>>2]>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)>>2]|0,-1)|0))b[(c[t>>2]|0)+16>>1]=(c[p>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+1}}while(0);c[n>>2]=(c[n>>2]|0)+1;c[t>>2]=(c[t>>2]|0)+20}if((v|0)==10){ly(c[u>>2]|0,c[m>>2]|0,(c[n>>2]|0)+1|0,c[q>>2]|0);c[h>>2]=1;v=c[h>>2]|0;i=w;return v|0}else if((v|0)==13){c[h>>2]=1;v=c[h>>2]|0;i=w;return v|0}else if((v|0)==20){c[h>>2]=yy(c[u>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;v=c[h>>2]|0;i=w;return v|0}return 0}function iy(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0;h=i;i=i+32|0;g=h+8|0;j=h+16|0;f=h+12|0;c[j>>2]=a;c[f>>2]=b;b=c[j>>2]|0;if((e[(c[f>>2]|0)+6>>1]|0)&256){Ah(b,30184,h);i=h;return}else{c[g>>2]=xy(d[(c[f>>2]|0)+4>>0]|0)|0;Ah(b,30230,g);i=h;return}}function jy(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+80|0;v=w+8|0;q=w+64|0;r=w+60|0;g=w+56|0;s=w+52|0;u=w+48|0;t=w+44|0;h=w+40|0;k=w+36|0;n=w+32|0;j=w+28|0;m=w+24|0;l=w+20|0;o=w+16|0;p=w+12|0;c[r>>2]=e;c[g>>2]=f;c[k>>2]=1;c[u>>2]=c[(c[g>>2]|0)+48>>2];if(!(c[u>>2]|0)){c[q>>2]=0;v=c[q>>2]|0;i=w;return v|0}c[h>>2]=c[c[r>>2]>>2];if((c[c[u>>2]>>2]|0)>(c[(c[h>>2]|0)+88+8>>2]|0)){Ah(c[r>>2]|0,30033,w);c[q>>2]=1;v=c[q>>2]|0;i=w;return v|0}c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[c[u>>2]>>2]|0))break;f=(c[(c[u>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)+13|0;a[f>>0]=a[f>>0]&-2;c[s>>2]=(c[s>>2]|0)+1}c[(c[g>>2]|0)+56>>2]=0;while(1){if(!(c[(c[g>>2]|0)+52>>2]|0))break;c[(c[(c[g>>2]|0)+52>>2]|0)+56>>2]=c[g>>2];c[g>>2]=c[(c[g>>2]|0)+52>>2]}a:while(1){if(!((c[g>>2]|0)!=0?(c[k>>2]|0)!=0:0)){g=36;break}c[k>>2]=0;c[t>>2]=c[c[g>>2]>>2];c[s>>2]=0;c[n>>2]=c[(c[u>>2]|0)+4>>2];while(1){if((c[s>>2]|0)>=(c[c[u>>2]>>2]|0))break;c[j>>2]=-1;do if(!(a[(c[n>>2]|0)+13>>0]&1)){c[m>>2]=Tx(c[c[n>>2]>>2]|0)|0;if(ky(c[m>>2]|0,j)|0){if((c[j>>2]|0)<=0){g=18;break a}if((c[j>>2]|0)>(c[c[t>>2]>>2]|0)){g=18;break a}}else{c[j>>2]=my(c[r>>2]|0,c[t>>2]|0,c[m>>2]|0)|0;if(!(c[j>>2]|0)){c[l>>2]=ny(c[h>>2]|0,c[m>>2]|0,0)|0;if(!(a[(c[h>>2]|0)+65>>0]|0))c[j>>2]=oy(c[r>>2]|0,c[g>>2]|0,c[l>>2]|0)|0;Zu(c[h>>2]|0,c[l>>2]|0)}}if((c[j>>2]|0)<=0){c[k>>2]=1;break}c[o>>2]=Jv(c[h>>2]|0,132,0)|0;if(!(c[o>>2]|0)){g=25;break a}f=(c[o>>2]|0)+4|0;c[f>>2]=c[f>>2]|1024;c[(c[o>>2]|0)+8>>2]=c[j>>2];if((c[c[n>>2]>>2]|0)==(c[m>>2]|0))c[c[n>>2]>>2]=c[o>>2];else{c[p>>2]=c[c[n>>2]>>2];while(1){if((d[c[(c[p>>2]|0)+12>>2]>>0]|0)!=95)break;c[p>>2]=c[(c[p>>2]|0)+12>>2]}c[(c[p>>2]|0)+12>>2]=c[o>>2]}Zu(c[h>>2]|0,c[m>>2]|0);b[(c[n>>2]|0)+16>>1]=c[j>>2];f=(c[n>>2]|0)+13|0;a[f>>0]=a[f>>0]&-2|1}while(0);c[s>>2]=(c[s>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+20}c[g>>2]=c[(c[g>>2]|0)+56>>2]}if((g|0)==18){ly(c[r>>2]|0,29962,(c[s>>2]|0)+1|0,c[c[t>>2]>>2]|0);c[q>>2]=1;v=c[q>>2]|0;i=w;return v|0}else if((g|0)==25){c[q>>2]=1;v=c[q>>2]|0;i=w;return v|0}else if((g|0)==36){c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[c[u>>2]>>2]|0)){g=41;break}if(!(a[(c[(c[u>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)+13>>0]&1)){g=39;break}c[s>>2]=(c[s>>2]|0)+1}if((g|0)==39){u=c[r>>2]|0;c[v>>2]=(c[s>>2]|0)+1;Ah(u,30067,v);c[q>>2]=1;v=c[q>>2]|0;i=w;return v|0}else if((g|0)==41){c[q>>2]=0;v=c[q>>2]|0;i=w;return v|0}}return 0}function ky(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=a;c[g>>2]=b;c[h>>2]=0;a=c[f>>2]|0;if(c[(c[f>>2]|0)+4>>2]&1024){c[c[g>>2]>>2]=c[a+8>>2];c[e>>2]=1;j=c[e>>2]|0;i=k;return j|0}switch(d[a>>0]|0|0){case 156:{c[h>>2]=ky(c[(c[f>>2]|0)+12>>2]|0,c[g>>2]|0)|0;break}case 155:{if(ky(c[(c[f>>2]|0)+12>>2]|0,j)|0){c[c[g>>2]>>2]=0-(c[j>>2]|0);c[h>>2]=1}break}default:{}}c[e>>2]=c[h>>2];j=c[e>>2]|0;i=k;return j|0}function ly(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f;l=f+24|0;k=f+20|0;h=f+16|0;j=f+12|0;c[l>>2]=a;c[k>>2]=b;c[h>>2]=d;c[j>>2]=e;b=c[l>>2]|0;e=c[k>>2]|0;a=c[j>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=e;c[g+8>>2]=a;Ah(b,30128,g);i=f;return}function my(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+24|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;k=m;c[m+20>>2]=a;c[g>>2]=b;c[h>>2]=e;a:do if((d[c[h>>2]>>0]|0|0)==27){c[l>>2]=c[(c[h>>2]|0)+8>>2];c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[g>>2]>>2]|0))break a;c[k>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)+4>>2];if((c[k>>2]|0)!=0?(Td(c[k>>2]|0,c[l>>2]|0)|0)==0:0)break;c[j>>2]=(c[j>>2]|0)+1}c[f>>2]=(c[j>>2]|0)+1;l=c[f>>2]|0;i=m;return l|0}while(0);c[f>>2]=0;l=c[f>>2]|0;i=m;return l|0}function ny(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;b=ry(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0,0)|0;i=e;return b|0}function oy(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+80|0;k=l+60|0;q=l+56|0;r=l+52|0;g=l+48|0;h=l+44|0;j=l+40|0;p=l+8|0;n=l+4|0;m=l;o=l+64|0;c[q>>2]=d;c[r>>2]=e;c[g>>2]=f;c[j>>2]=c[c[r>>2]>>2];c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;c[p+20>>2]=0;c[p+24>>2]=0;c[p+28>>2]=0;c[p>>2]=c[q>>2];c[p+4>>2]=c[(c[r>>2]|0)+32>>2];c[p+8>>2]=c[j>>2];b[p+28>>1]=1;c[p+24>>2]=0;c[n>>2]=c[c[q>>2]>>2];a[o>>0]=a[(c[n>>2]|0)+69>>0]|0;a[(c[n>>2]|0)+69>>0]=1;c[m>>2]=fy(p,c[g>>2]|0)|0;a[(c[n>>2]|0)+69>>0]=a[o>>0]|0;if(c[m>>2]|0){c[k>>2]=0;r=c[k>>2]|0;i=l;return r|0}c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[c[j>>2]>>2]|0)){f=8;break}r=(py(c[(c[(c[j>>2]|0)+4>>2]|0)+((c[h>>2]|0)*20|0)>>2]|0,c[g>>2]|0,-1)|0)<2;d=(c[h>>2]|0)+1|0;if(r){f=6;break}c[h>>2]=d}if((f|0)==6){c[k>>2]=d;r=c[k>>2]|0;i=l;return r|0}else if((f|0)==8){c[k>>2]=0;r=c[k>>2]|0;i=l;return r|0}return 0}function py(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[h>>2]=a;c[j>>2]=e;c[k>>2]=f;if((c[h>>2]|0)==0|(c[j>>2]|0)==0){c[g>>2]=(c[j>>2]|0)==(c[h>>2]|0)?0:2;l=c[g>>2]|0;i=m;return l|0}c[l>>2]=c[(c[h>>2]|0)+4>>2]|c[(c[j>>2]|0)+4>>2];f=c[h>>2]|0;if(c[l>>2]&1024){if((c[f+4>>2]&c[(c[j>>2]|0)+4>>2]&1024|0)!=0?(c[(c[h>>2]|0)+8>>2]|0)==(c[(c[j>>2]|0)+8>>2]|0):0){c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}a=d[c[h>>2]>>0]|0;if((d[f>>0]|0)!=(d[c[j>>2]>>0]|0)){if((a|0)==95?(py(c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0,c[k>>2]|0)|0)<2:0){c[g>>2]=1;l=c[g>>2]|0;i=m;return l|0}if((d[c[j>>2]>>0]|0)==95?(py(c[h>>2]|0,c[(c[j>>2]|0)+12>>2]|0,c[k>>2]|0)|0)<2:0){c[g>>2]=1;l=c[g>>2]|0;i=m;return l|0}c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}do if(((a|0)!=152?(d[c[h>>2]>>0]|0)!=154:0)?(c[(c[h>>2]|0)+8>>2]|0)!=0:0){f=c[(c[h>>2]|0)+8>>2]|0;a=c[(c[j>>2]|0)+8>>2]|0;if((d[c[h>>2]>>0]|0)==151){if(!(Td(f,a)|0))break;c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}else{if(!(yQ(f,a)|0))break;c[g>>2]=(d[c[h>>2]>>0]|0)==95?1:2;l=c[g>>2]|0;i=m;return l|0}}while(0);if((c[(c[h>>2]|0)+4>>2]&16|0)!=(c[(c[j>>2]|0)+4>>2]&16|0)){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}do if(!(c[l>>2]&16384)){if(c[l>>2]&2048){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}if(py(c[(c[h>>2]|0)+12>>2]|0,c[(c[j>>2]|0)+12>>2]|0,c[k>>2]|0)|0){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}if(py(c[(c[h>>2]|0)+16>>2]|0,c[(c[j>>2]|0)+16>>2]|0,c[k>>2]|0)|0){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}if(qy(c[(c[h>>2]|0)+20>>2]|0,c[(c[j>>2]|0)+20>>2]|0,c[k>>2]|0)|0){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}if((c[l>>2]&8192|0)==0?(d[c[h>>2]>>0]|0)!=97:0){if((b[(c[h>>2]|0)+32>>1]|0)!=(b[(c[j>>2]|0)+32>>1]|0)){c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}if((c[(c[h>>2]|0)+28>>2]|0)!=(c[(c[j>>2]|0)+28>>2]|0)){if((c[(c[h>>2]|0)+28>>2]|0)==(c[k>>2]|0)?(c[(c[j>>2]|0)+28>>2]|0)<0:0)break;c[g>>2]=2;l=c[g>>2]|0;i=m;return l|0}}}while(0);c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}function qy(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;m=n+24|0;f=n+20|0;g=n+16|0;h=n+12|0;j=n+8|0;k=n+4|0;l=n;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;if((c[f>>2]|0)==0&(c[g>>2]|0)==0){c[m>>2]=0;m=c[m>>2]|0;i=n;return m|0}if((c[f>>2]|0)==0|(c[g>>2]|0)==0){c[m>>2]=1;m=c[m>>2]|0;i=n;return m|0}if((c[c[f>>2]>>2]|0)!=(c[c[g>>2]>>2]|0)){c[m>>2]=1;m=c[m>>2]|0;i=n;return m|0}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[f>>2]>>2]|0)){f=14;break}c[k>>2]=c[(c[(c[f>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)>>2];c[l>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)>>2];if((d[(c[(c[f>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)+12>>0]|0|0)!=(d[(c[(c[g>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)+12>>0]|0|0)){f=10;break}if(py(c[k>>2]|0,c[l>>2]|0,c[h>>2]|0)|0){f=12;break}c[j>>2]=(c[j>>2]|0)+1}if((f|0)==10){c[m>>2]=1;m=c[m>>2]|0;i=n;return m|0}else if((f|0)==12){c[m>>2]=1;m=c[m>>2]|0;i=n;return m|0}else if((f|0)==14){c[m>>2]=0;m=c[m>>2]|0;i=n;return m|0}return 0}function ry(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+64|0;n=t+48|0;o=t+44|0;p=t+40|0;q=t+36|0;r=t+32|0;m=t+28|0;s=t+24|0;k=t+20|0;h=t+16|0;f=t+12|0;j=t+8|0;g=t+4|0;l=t;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[q>>2]=e;c[r>>2]=0;if(!(c[o>>2]|0)){s=c[r>>2]|0;i=t;return s|0}c[m>>2]=c[p>>2]&1;c[k>>2]=0;if(c[q>>2]|0){c[s>>2]=c[c[q>>2]>>2];c[k>>2]=32768}else{b=c[n>>2]|0;e=sy(c[o>>2]|0,c[p>>2]|0)|0;c[s>>2]=Fw(b,e,((e|0)<0)<<31>>31)|0}c[r>>2]=c[s>>2];if(!(c[r>>2]|0)){s=c[r>>2]|0;i=t;return s|0}c[h>>2]=ty(c[o>>2]|0,c[p>>2]|0)|0;c[f>>2]=c[h>>2]&4095;if((c[(c[o>>2]|0)+4>>2]&1024|0)==0?(c[(c[o>>2]|0)+8>>2]|0)!=0:0)c[j>>2]=(If(c[(c[o>>2]|0)+8>>2]|0)|0)+1;else c[j>>2]=0;if(!(c[m>>2]|0)){c[g>>2]=uy(c[o>>2]|0)|0;iR(c[s>>2]|0,c[o>>2]|0,c[g>>2]|0)|0;if((c[g>>2]|0)>>>0<48)kR((c[s>>2]|0)+(c[g>>2]|0)|0,0,48-(c[g>>2]|0)|0)|0}else iR(c[s>>2]|0,c[o>>2]|0,c[f>>2]|0)|0;e=(c[r>>2]|0)+4|0;c[e>>2]=c[e>>2]&-122881;e=(c[r>>2]|0)+4|0;c[e>>2]=c[e>>2]|c[h>>2]&24576;e=(c[r>>2]|0)+4|0;c[e>>2]=c[e>>2]|c[k>>2];if(c[j>>2]|0){k=(c[s>>2]|0)+(c[f>>2]|0)|0;c[(c[r>>2]|0)+8>>2]=k;c[l>>2]=k;iR(c[l>>2]|0,c[(c[o>>2]|0)+8>>2]|0,c[j>>2]|0)|0}do if(!((c[(c[o>>2]|0)+4>>2]|c[(c[r>>2]|0)+4>>2])&16384)){d=c[n>>2]|0;a=(c[o>>2]|0)+20|0;if(c[(c[o>>2]|0)+4>>2]&2048){m=Hx(d,c[a>>2]|0,c[m>>2]|0)|0;c[(c[r>>2]|0)+20>>2]=m;break}else{m=vy(d,c[a>>2]|0,c[m>>2]|0)|0;c[(c[r>>2]|0)+20>>2]=m;break}}while(0);a=c[o>>2]|0;if(!(c[(c[r>>2]|0)+4>>2]&24576)){if(c[a+4>>2]&16384){s=c[r>>2]|0;i=t;return s|0}s=ny(c[n>>2]|0,c[(c[o>>2]|0)+12>>2]|0,0)|0;c[(c[r>>2]|0)+12>>2]=s;s=ny(c[n>>2]|0,c[(c[o>>2]|0)+16>>2]|0,0)|0;c[(c[r>>2]|0)+16>>2]=s;s=c[r>>2]|0;i=t;return s|0}p=wy(a,c[p>>2]|0)|0;c[s>>2]=(c[s>>2]|0)+p;if(c[(c[r>>2]|0)+4>>2]&8192){p=ry(c[n>>2]|0,c[(c[o>>2]|0)+12>>2]|0,1,s)|0;c[(c[r>>2]|0)+12>>2]=p;p=ry(c[n>>2]|0,c[(c[o>>2]|0)+16>>2]|0,1,s)|0;c[(c[r>>2]|0)+16>>2]=p}if(!(c[q>>2]|0)){s=c[r>>2]|0;i=t;return s|0}c[c[q>>2]>>2]=c[s>>2];s=c[r>>2]|0;i=t;return s|0}function sy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;if(!(c[d>>2]|0)){a=c[f>>2]|0;i=g;return a|0}c[f>>2]=wy(c[d>>2]|0,c[e>>2]|0)|0;if(!(c[e>>2]&1)){a=c[f>>2]|0;i=g;return a|0}a=sy(c[(c[d>>2]|0)+12>>2]|0,c[e>>2]|0)|0;a=a+(sy(c[(c[d>>2]|0)+16>>2]|0,c[e>>2]|0)|0)|0;c[f>>2]=(c[f>>2]|0)+a;a=c[f>>2]|0;i=g;return a|0}function ty(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;do if(!(c[g>>2]&1))c[e>>2]=48;else{if((c[(c[d>>2]|0)+12>>2]|0)==0?(c[(c[d>>2]|0)+20>>2]|0)==0:0){c[e>>2]=16396;break}c[e>>2]=8220}while(0);i=f;return c[e>>2]|0}function uy(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;do if(!(c[(c[d>>2]|0)+4>>2]&16384))if(c[(c[d>>2]|0)+4>>2]&8192){c[b>>2]=28;break}else{c[b>>2]=48;break}else c[b>>2]=12;while(0);i=e;return c[b>>2]|0}function vy(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+48|0;g=q+32|0;h=q+28|0;j=q+24|0;k=q+20|0;n=q+16|0;m=q+12|0;p=q+8|0;l=q+4|0;o=q;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;if(!(c[j>>2]|0)){c[g>>2]=0;p=c[g>>2]|0;i=q;return p|0}c[n>>2]=Fw(c[h>>2]|0,8,0)|0;if(!(c[n>>2]|0)){c[g>>2]=0;p=c[g>>2]|0;i=q;return p|0}e=c[c[j>>2]>>2]|0;c[l>>2]=e;c[c[n>>2]>>2]=e;a:do if(!(c[k>>2]&1)){c[l>>2]=1;while(1){if((c[l>>2]|0)>=(c[c[j>>2]>>2]|0))break a;c[l>>2]=(c[l>>2]|0)+(c[l>>2]|0)}}while(0);e=Fw(c[h>>2]|0,(c[l>>2]|0)*20|0,0)|0;c[m>>2]=e;c[(c[n>>2]|0)+4>>2]=e;if(!(c[m>>2]|0)){Sf(c[h>>2]|0,c[n>>2]|0);c[g>>2]=0;p=c[g>>2]|0;i=q;return p|0}c[p>>2]=c[(c[j>>2]|0)+4>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[c[j>>2]>>2]|0))break;c[o>>2]=c[c[p>>2]>>2];e=ny(c[h>>2]|0,c[o>>2]|0,c[k>>2]|0)|0;c[c[m>>2]>>2]=e;e=nh(c[h>>2]|0,c[(c[p>>2]|0)+4>>2]|0)|0;c[(c[m>>2]|0)+4>>2]=e;e=nh(c[h>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0;c[(c[m>>2]|0)+8>>2]=e;a[(c[m>>2]|0)+12>>0]=a[(c[p>>2]|0)+12>>0]|0;e=(c[m>>2]|0)+13|0;a[e>>0]=a[e>>0]&-2;e=(c[m>>2]|0)+13|0;a[e>>0]=a[e>>0]&-3|((d[(c[p>>2]|0)+13>>0]|0)>>>1&1)<<1&255;c[(c[m>>2]|0)+16>>2]=c[(c[p>>2]|0)+16>>2];c[l>>2]=(c[l>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+20;c[p>>2]=(c[p>>2]|0)+20}c[g>>2]=c[n>>2];p=c[g>>2]|0;i=q;return p|0}function wy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=(ty(c[d>>2]|0,c[g>>2]|0)|0)&4095;if((c[(c[d>>2]|0)+4>>2]&1024|0)==0?(c[(c[d>>2]|0)+8>>2]|0)!=0:0){g=(If(c[(c[d>>2]|0)+8>>2]|0)|0)+1|0;c[e>>2]=(c[e>>2]|0)+g}i=f;return(c[e>>2]|0)+7&-8|0}function xy(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;switch(c[e>>2]|0){case 116:{c[b>>2]=30312;break}case 118:{c[b>>2]=30322;break}case 117:{c[b>>2]=30332;break}default:c[b>>2]=30339}i=d;return c[b>>2]|0}function yy(a,f,g,h){a=a|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;l=t;p=t+36|0;m=t+32|0;j=t+28|0;n=t+24|0;q=t+20|0;r=t+16|0;k=t+12|0;s=t+8|0;o=t+4|0;c[m>>2]=a;c[j>>2]=f;c[n>>2]=g;c[q>>2]=h;c[k>>2]=c[c[m>>2]>>2];if((c[n>>2]|0)!=0?(d[(c[c[m>>2]>>2]|0)+65>>0]|0)==0:0){if((c[c[n>>2]>>2]|0)>(c[(c[k>>2]|0)+88+8>>2]|0)){s=c[m>>2]|0;c[l>>2]=c[q>>2];Ah(s,30345,l);c[p>>2]=1;s=c[p>>2]|0;i=t;return s|0}c[s>>2]=c[c[j>>2]>>2];c[r>>2]=0;c[o>>2]=c[(c[n>>2]|0)+4>>2];while(1){if((c[r>>2]|0)>=(c[c[n>>2]>>2]|0)){j=13;break}if(b[(c[o>>2]|0)+16>>1]|0){k=c[m>>2]|0;if((e[(c[o>>2]|0)+16>>1]|0)>(c[c[s>>2]>>2]|0)){j=10;break}zy(k,c[s>>2]|0,(e[(c[o>>2]|0)+16>>1]|0)-1|0,c[c[o>>2]>>2]|0,c[q>>2]|0,0)}c[r>>2]=(c[r>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+20}if((j|0)==10){ly(k,c[q>>2]|0,(c[r>>2]|0)+1|0,c[c[s>>2]>>2]|0);c[p>>2]=1;s=c[p>>2]|0;i=t;return s|0}else if((j|0)==13){c[p>>2]=0;s=c[p>>2]|0;i=t;return s|0}}c[p>>2]=0;s=c[p>>2]|0;i=t;return s|0}function zy(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=i;i=i+48|0;k=q+32|0;t=q+28|0;s=q+24|0;n=q+20|0;l=q+16|0;m=q+12|0;r=q+8|0;p=q+4|0;o=q;c[k>>2]=b;c[t>>2]=e;c[s>>2]=f;c[n>>2]=g;c[l>>2]=h;c[m>>2]=j;c[r>>2]=c[(c[(c[t>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2];c[o>>2]=c[c[k>>2]>>2];c[p>>2]=ny(c[o>>2]|0,c[r>>2]|0,0)|0;if(!(c[p>>2]|0)){i=q;return}if((a[c[l>>2]>>0]|0)!=71)Ay(c[p>>2]|0,c[m>>2]|0);if((d[c[n>>2]>>0]|0)==95)c[p>>2]=By(c[k>>2]|0,c[p>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0;k=(c[p>>2]|0)+4|0;c[k>>2]=c[k>>2]|4194304;k=(c[n>>2]|0)+4|0;c[k>>2]=c[k>>2]|32768;Zu(c[o>>2]|0,c[n>>2]|0);k=c[n>>2]|0;l=c[p>>2]|0;m=k+48|0;do{c[k>>2]=c[l>>2];k=k+4|0;l=l+4|0}while((k|0)<(m|0));if((c[(c[n>>2]|0)+4>>2]&1024|0)==0?(c[(c[n>>2]|0)+8>>2]|0)!=0:0){t=nh(c[o>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0;c[(c[n>>2]|0)+8>>2]=t;t=(c[n>>2]|0)+4|0;c[t>>2]=c[t>>2]|65536}Sf(c[o>>2]|0,c[p>>2]|0);i=q;return}function Ay(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+48|0;d=g+32|0;e=g+28|0;f=g;c[d>>2]=a;c[e>>2]=b;if((c[e>>2]|0)<=0){i=g;return}c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+4>>2]=195;c[f+24>>2]=c[e>>2];by(f,c[d>>2]|0)|0;i=g;return}function By(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e+16|0;g=e+12|0;j=e+8|0;f=e;c[h>>2]=a;c[g>>2]=b;c[j>>2]=d;Cy(f,c[j>>2]|0);d=Yv(c[h>>2]|0,c[g>>2]|0,f,0)|0;i=e;return d|0}function Cy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[c[e>>2]>>2]=c[f>>2];b=If(c[f>>2]|0)|0;c[(c[e>>2]|0)+4>>2]=b;i=d;return}function Dy(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=e;if((d[c[g>>2]>>0]|0|0)!=153){i=h;return 0}b=(c[g>>2]|0)+38|0;a[b>>0]=(d[b>>0]|0)+(c[(c[f>>2]|0)+24>>2]|0);i=h;return 0}function Ey(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;g=h;d=h+16|0;j=h+12|0;f=h+8|0;e=h+4|0;c[d>>2]=a;c[j>>2]=b;c[f>>2]=0;c[e>>2]=c[(c[c[d>>2]>>2]|0)+88+12>>2];if((c[j>>2]|0)<=(c[e>>2]|0)){j=c[f>>2]|0;i=h;return j|0}j=c[d>>2]|0;c[g>>2]=c[e>>2];Ah(j,30376,g);c[f>>2]=1;j=c[f>>2]|0;i=h;return j|0}function Fy(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;X=i;i=i+176|0;W=X+40|0;V=X+24|0;D=X+8|0;B=X;I=X+164|0;J=X+160|0;m=X+156|0;K=X+152|0;L=X+148|0;M=X+144|0;N=X+140|0;q=X+136|0;s=X+132|0;O=X+128|0;o=X+124|0;t=X+120|0;P=X+116|0;x=X+112|0;S=X+108|0;U=X+104|0;T=X+100|0;Q=X+96|0;A=X+92|0;v=X+88|0;w=X+84|0;z=X+80|0;p=X+76|0;F=X+72|0;u=X+68|0;r=X+64|0;E=X+60|0;y=X+56|0;H=X+52|0;R=X+48|0;c[J>>2]=f;c[m>>2]=g;c[K>>2]=h;c[L>>2]=j;c[M>>2]=k;c[N>>2]=l;c[O>>2]=0;c[o>>2]=0;c[t>>2]=0;c[P>>2]=c[c[J>>2]>>2];c[S>>2]=0;c[U>>2]=c[M>>2];c[T>>2]=0;c[Q>>2]=0;c[A>>2]=0;c[(c[N>>2]|0)+28>>2]=-1;c[(c[N>>2]|0)+44>>2]=0;a:do if(c[m>>2]|0){if(e[(c[M>>2]|0)+28>>1]&20){c[m>>2]=0;break}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[P>>2]|0)+20>>2]|0))break a;h=(Td(c[(c[(c[P>>2]|0)+16>>2]|0)+(c[q>>2]<<4)>>2]|0,c[m>>2]|0)|0)==0;l=c[q>>2]|0;if(h)break;c[q>>2]=l+1}c[T>>2]=c[(c[(c[P>>2]|0)+16>>2]|0)+(l<<4)+12>>2]}while(0);b:while(1){if(!((c[M>>2]|0)!=0?(c[O>>2]|0)==0:0)){G=89;break}c[z>>2]=c[(c[M>>2]|0)+4>>2];if(c[z>>2]|0){c[q>>2]=0;c[x>>2]=(c[z>>2]|0)+8;while(1){if((c[q>>2]|0)>=(c[c[z>>2]>>2]|0))break; -c[A>>2]=c[(c[x>>2]|0)+16>>2];if((c[(c[x>>2]|0)+20>>2]|0)!=0?(e[(c[(c[x>>2]|0)+20>>2]|0)+6>>1]&1024|0)!=0:0){c[p>>2]=0;c[w>>2]=c[c[(c[x>>2]|0)+20>>2]>>2];c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[c[w>>2]>>2]|0))break;if(Ly(c[(c[(c[w>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)+8>>2]|0,c[L>>2]|0,c[K>>2]|0,c[m>>2]|0)|0){c[O>>2]=(c[O>>2]|0)+1;c[o>>2]=2;c[S>>2]=c[x>>2];b[(c[N>>2]|0)+32>>1]=c[s>>2];c[p>>2]=1}c[s>>2]=(c[s>>2]|0)+1}if(!((c[p>>2]|0)!=0|(c[K>>2]|0)==0))G=21}else G=21;c:do if((G|0)==21){G=0;if((c[m>>2]|0)!=0?(c[(c[A>>2]|0)+64>>2]|0)!=(c[T>>2]|0):0)break;if(c[K>>2]|0){if(c[(c[x>>2]|0)+12>>2]|0)l=c[(c[x>>2]|0)+12>>2]|0;else l=c[c[A>>2]>>2]|0;c[F>>2]=l;if(Td(c[F>>2]|0,c[K>>2]|0)|0)break}h=c[o>>2]|0;c[o>>2]=h+1;if(!h)c[S>>2]=c[x>>2];c[s>>2]=0;c[v>>2]=c[(c[A>>2]|0)+4>>2];while(1){if((c[s>>2]|0)>=(b[(c[A>>2]|0)+34>>1]|0))break c;if(!(Td(c[c[v>>2]>>2]|0,c[L>>2]|0)|0)){if((c[O>>2]|0)!=1)break;if((d[(c[x>>2]|0)+36>>0]&4|0)==0?(My(c[(c[x>>2]|0)+52>>2]|0,c[L>>2]|0)|0)==0:0)break}c[s>>2]=(c[s>>2]|0)+1;c[v>>2]=(c[v>>2]|0)+24}c[O>>2]=(c[O>>2]|0)+1;c[S>>2]=c[x>>2];if((c[s>>2]|0)==(b[(c[A>>2]|0)+32>>1]|0))l=-1;else l=(c[s>>2]&65535)<<16>>16;b[(c[N>>2]|0)+32>>1]=l}while(0);c[q>>2]=(c[q>>2]|0)+1;c[x>>2]=(c[x>>2]|0)+72}if(c[S>>2]|0){c[(c[N>>2]|0)+28>>2]=c[(c[S>>2]|0)+44>>2];c[(c[N>>2]|0)+44>>2]=c[(c[S>>2]|0)+16>>2];if(d[(c[S>>2]|0)+36>>0]&8){h=(c[N>>2]|0)+4|0;c[h>>2]=c[h>>2]|1048576}c[T>>2]=c[(c[(c[N>>2]|0)+44>>2]|0)+64>>2]}}if((c[m>>2]|0)==0&(c[K>>2]|0)!=0&(c[o>>2]|0)==0?(c[(c[J>>2]|0)+420>>2]|0)!=0:0){c[u>>2]=d[(c[J>>2]|0)+440>>0];if((c[u>>2]|0)!=109?(Td(30795,c[K>>2]|0)|0)==0:0){c[(c[N>>2]|0)+28>>2]=1;c[A>>2]=c[(c[J>>2]|0)+420>>2]}else G=50;do if((G|0)==50){G=0;if((c[u>>2]|0)!=108?(Td(30799,c[K>>2]|0)|0)==0:0){c[(c[N>>2]|0)+28>>2]=0;c[A>>2]=c[(c[J>>2]|0)+420>>2];break}c[A>>2]=0}while(0);if(c[A>>2]|0){c[T>>2]=c[(c[A>>2]|0)+64>>2];c[o>>2]=(c[o>>2]|0)+1;c[r>>2]=0;c[v>>2]=c[(c[A>>2]|0)+4>>2];while(1){if((c[r>>2]|0)>=(b[(c[A>>2]|0)+34>>1]|0))break;h=(Td(c[c[v>>2]>>2]|0,c[L>>2]|0)|0)==0;n=c[r>>2]|0;if(h){G=58;break}c[r>>2]=n+1;c[v>>2]=(c[v>>2]|0)+24}if((G|0)==58?(G=0,(n|0)==(b[(c[A>>2]|0)+32>>1]|0)):0)c[r>>2]=-1;if(((c[r>>2]|0)>=(b[(c[A>>2]|0)+34>>1]|0)?(qi(c[L>>2]|0)|0)!=0:0)?(d[(c[A>>2]|0)+42>>0]&64|0)==0:0)c[r>>2]=-1;if((c[r>>2]|0)<(b[(c[A>>2]|0)+34>>1]|0)){c[O>>2]=(c[O>>2]|0)+1;l=c[N>>2]|0;do if((c[r>>2]|0)>=0){k=(c[r>>2]|0)>=32?-1:1<>2];f=c[J>>2]|0;if(!(c[l+28>>2]|0)){h=f+432|0;c[h>>2]=c[h>>2]|k;break}else{h=f+436|0;c[h>>2]=c[h>>2]|k;break}}else a[l+1>>0]=68;while(0);b[(c[N>>2]|0)+32>>1]=c[r>>2];c[(c[N>>2]|0)+44>>2]=c[A>>2];c[Q>>2]=1}}}if((((c[O>>2]|0)==0&(c[o>>2]|0)==1&(c[S>>2]|0)!=0?(e[(c[M>>2]|0)+28>>1]&32|0)==0:0)?(qi(c[L>>2]|0)|0)!=0:0)?(d[(c[(c[S>>2]|0)+16>>2]|0)+42>>0]&64|0)==0:0){c[O>>2]=1;b[(c[N>>2]|0)+32>>1]=-1;a[(c[N>>2]|0)+1>>0]=68}h=c[(c[M>>2]|0)+8>>2]|0;c[w>>2]=h;d:do if((h|0)!=0&(c[K>>2]|0)==0&(c[O>>2]|0)==0){c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[c[w>>2]>>2]|0))break d;c[E>>2]=c[(c[(c[w>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)+4>>2];if((c[E>>2]|0)!=0?(Td(c[E>>2]|0,c[L>>2]|0)|0)==0:0){G=82;break b}c[s>>2]=(c[s>>2]|0)+1}}while(0);if(c[O>>2]|0)continue;c[M>>2]=c[(c[M>>2]|0)+16>>2];c[t>>2]=(c[t>>2]|0)+1}if((G|0)==82){c[y>>2]=c[(c[(c[w>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2];if((e[(c[M>>2]|0)+28>>1]&1|0)==0?(c[(c[y>>2]|0)+4>>2]&2|0)!=0:0){W=c[J>>2]|0;c[B>>2]=c[E>>2];Ah(W,30803,B);c[I>>2]=2;W=c[I>>2]|0;i=X;return W|0}zy(c[J>>2]|0,c[w>>2]|0,c[s>>2]|0,c[N>>2]|0,19266,c[t>>2]|0);c[O>>2]=1;c[S>>2]=0}else if((G|0)==89){if((c[O>>2]|0)==0&(c[K>>2]|0)==0?(c[(c[N>>2]|0)+4>>2]&64|0)!=0:0){a[c[N>>2]>>0]=97;c[(c[N>>2]|0)+44>>2]=0;c[I>>2]=1;W=c[I>>2]|0;i=X;return W|0}if((c[O>>2]|0)!=1){c[H>>2]=(c[O>>2]|0)==0?30834:30849;do if(!(c[m>>2]|0)){k=c[J>>2]|0;l=c[H>>2]|0;if(c[K>>2]|0){K=c[K>>2]|0;W=c[L>>2]|0;c[V>>2]=l;c[V+4>>2]=K;c[V+8>>2]=W;Ah(k,30884,V);break}else{V=c[L>>2]|0;c[W>>2]=l;c[W+4>>2]=V;Ah(k,30894,W);break}}else{W=c[J>>2]|0;G=c[m>>2]|0;K=c[K>>2]|0;V=c[L>>2]|0;c[D>>2]=c[H>>2];c[D+4>>2]=G;c[D+8>>2]=K;c[D+12>>2]=V;Ah(W,30871,D)}while(0);a[(c[J>>2]|0)+17>>0]=1;W=(c[U>>2]|0)+24|0;c[W>>2]=(c[W>>2]|0)+1}if((c[S>>2]|0)!=0?(b[(c[N>>2]|0)+32>>1]|0)>=0:0){W=b[(c[N>>2]|0)+32>>1]|0;c[R>>2]=W;c[R>>2]=(c[R>>2]|0)>=64?63:W;R=lR(1,0,c[R>>2]|0)|0;W=(c[S>>2]|0)+56|0;S=W;V=c[S+4>>2]|C;c[W>>2]=c[S>>2]|R;c[W+4>>2]=V}Zu(c[P>>2]|0,c[(c[N>>2]|0)+12>>2]|0);c[(c[N>>2]|0)+12>>2]=0;Zu(c[P>>2]|0,c[(c[N>>2]|0)+16>>2]|0);c[(c[N>>2]|0)+16>>2]=0;a[c[N>>2]>>0]=(c[Q>>2]|0)!=0?62:152}if((c[O>>2]|0)!=1){c[I>>2]=2;W=c[I>>2]|0;i=X;return W|0}if(!(c[(c[N>>2]|0)+4>>2]&4194304))Ny(c[J>>2]|0,c[N>>2]|0,c[T>>2]|0,c[(c[M>>2]|0)+4>>2]|0);while(1){W=(c[U>>2]|0)+20|0;c[W>>2]=(c[W>>2]|0)+1;if((c[U>>2]|0)==(c[M>>2]|0))break;c[U>>2]=c[(c[U>>2]|0)+16>>2]}c[I>>2]=1;W=c[I>>2]|0;i=X;return W|0}function Gy(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;k=m;g=m+24|0;h=m+20|0;j=m+16|0;n=m+12|0;l=m+8|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[n>>2]=f;if(!((e[(c[h>>2]|0)+28>>1]|0)&c[n>>2])){i=m;return}c[l>>2]=30711;if(!((e[(c[h>>2]|0)+28>>1]|0)&32)){if((e[(c[h>>2]|0)+28>>1]|0)&4)c[l>>2]=30757}else c[l>>2]=30739;n=c[g>>2]|0;d=c[l>>2]|0;c[k>>2]=c[j>>2];c[k+4>>2]=d;Ah(n,30775,k);i=m;return}function Hy(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+12|0;e=g+8|0;f=g;c[e>>2]=a;h[f>>3]=-1.0;if((d[c[e>>2]>>0]|0|0)!=133){c[b>>2]=-1;f=c[b>>2]|0;i=g;return f|0}a=c[(c[e>>2]|0)+8>>2]|0;Ky(a,f,If(c[(c[e>>2]|0)+8>>2]|0)|0,1)|0;if(+h[f>>3]>1.0){c[b>>2]=-1;f=c[b>>2]|0;i=g;return f|0}else{c[b>>2]=~~(+h[f>>3]*134217728.0);f=c[b>>2]|0;i=g;return f|0}return 0}function Iy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+48|0;f=e+44|0;h=e+40|0;g=e+12|0;d=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=0;c[g+4>>2]=196;c[g+24>>2]=d;c[d>>2]=c[h>>2];c[d+4>>2]=0;c[d+8>>2]=0;ay(g,c[(c[f>>2]|0)+20>>2]|0)|0;i=e;return((c[d+4>>2]|0)>0?1:(c[d+8>>2]|0)==0)&1|0}function Jy(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+20|0;f=l+16|0;j=l+12|0;g=l+8|0;h=l+4|0;k=l;c[e>>2]=a;c[f>>2]=b;if((d[c[f>>2]>>0]|0|0)!=152?(d[c[f>>2]>>0]|0|0)!=154:0){i=l;return 0}c[g>>2]=c[(c[e>>2]|0)+24>>2];c[h>>2]=c[c[g>>2]>>2];if(c[h>>2]|0)e=c[c[h>>2]>>2]|0;else e=0;c[k>>2]=e;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[k>>2]|0))break;if((c[(c[f>>2]|0)+28>>2]|0)==(c[(c[h>>2]|0)+8+((c[j>>2]|0)*72|0)+44>>2]|0))break;c[j>>2]=(c[j>>2]|0)+1}e=c[g>>2]|0;if((c[j>>2]|0)<(c[k>>2]|0)){k=e+4|0;c[k>>2]=(c[k>>2]|0)+1;i=l;return 0}else{k=e+8|0;c[k>>2]=(c[k>>2]|0)+1;i=l;return 0}return 0}function Ky(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0;G=i;i=i+96|0;F=G+76|0;w=G+72|0;x=G+68|0;j=G+64|0;m=G+80|0;r=G+60|0;E=G+56|0;u=G+52|0;t=G+16|0;p=G+48|0;z=G+44|0;q=G+40|0;y=G+36|0;D=G+8|0;A=G+32|0;B=G+28|0;n=G+24|0;v=G;c[w>>2]=b;c[x>>2]=e;c[j>>2]=f;a[m>>0]=g;c[E>>2]=(c[w>>2]|0)+(c[j>>2]|0);c[u>>2]=1;b=t;c[b>>2]=0;c[b+4>>2]=0;c[p>>2]=0;c[z>>2]=1;c[q>>2]=0;c[y>>2]=1;c[A>>2]=0;c[B>>2]=0;h[c[x>>2]>>3]=0.0;if((d[m>>0]|0)==1)c[r>>2]=1;else{c[r>>2]=2;c[n>>2]=3-(d[m>>0]|0);while(1){if((c[n>>2]|0)>=(c[j>>2]|0))break;if(a[(c[w>>2]|0)+(c[n>>2]|0)>>0]|0)break;c[n>>2]=(c[n>>2]|0)+2}c[B>>2]=(c[n>>2]|0)<(c[j>>2]|0)&1;c[E>>2]=(c[w>>2]|0)+(c[n>>2]|0)+(d[m>>0]|0)+-3;c[w>>2]=(c[w>>2]|0)+(d[m>>0]&1)}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break;if(!(d[19267+(d[c[w>>2]>>0]|0)>>0]&1))break;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0){c[F>>2]=0;F=c[F>>2]|0;i=G;return F|0}if((a[c[w>>2]>>0]|0)!=45){if((a[c[w>>2]>>0]|0)==43)c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}else{c[u>>2]=-1;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break;if((a[c[w>>2]>>0]|0)!=48)break;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[A>>2]=(c[A>>2]|0)+1}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break;b=t;e=c[b+4>>2]|0;if(!((d[19267+(d[c[w>>2]>>0]|0)>>0]&4|0)!=0&((e|0)<214748364|(e|0)==214748364&(c[b>>2]|0)>>>0<3435973835)))break;b=t;b=rR(c[b>>2]|0,c[b+4>>2]|0,10,0)|0;e=(a[c[w>>2]>>0]|0)-48|0;e=gR(b|0,C|0,e|0,((e|0)<0)<<31>>31|0)|0;b=t;c[b>>2]=e;c[b+4>>2]=C;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[A>>2]=(c[A>>2]|0)+1}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break;if(!(d[19267+(d[c[w>>2]>>0]|0)>>0]&4))break;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[A>>2]=(c[A>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+1}a:do if((c[w>>2]|0)>>>0<(c[E>>2]|0)>>>0){b:do if((a[c[w>>2]>>0]|0)==46){c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break;b=t;e=c[b+4>>2]|0;if(!((d[19267+(d[c[w>>2]>>0]|0)>>0]&4|0)!=0&((e|0)<214748364|(e|0)==214748364&(c[b>>2]|0)>>>0<3435973835)))break;b=t;b=rR(c[b>>2]|0,c[b+4>>2]|0,10,0)|0;e=(a[c[w>>2]>>0]|0)-48|0;e=gR(b|0,C|0,e|0,((e|0)<0)<<31>>31|0)|0;b=t;c[b>>2]=e;c[b+4>>2]=C;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[A>>2]=(c[A>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+-1}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break b;if(!(d[19267+(d[c[w>>2]>>0]|0)>>0]&4))break b;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[A>>2]=(c[A>>2]|0)+1}}while(0);if((c[w>>2]|0)>>>0<(c[E>>2]|0)>>>0){if(!((a[c[w>>2]>>0]|0)!=101?(a[c[w>>2]>>0]|0)!=69:0))o=38;c:do if((o|0)==38){c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[y>>2]=0;if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break a;if((a[c[w>>2]>>0]|0)!=45){if((a[c[w>>2]>>0]|0)==43)c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}else{c[z>>2]=-1;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break c;if(!(d[19267+(d[c[w>>2]>>0]|0)>>0]&4))break c;if((c[q>>2]|0)<1e4)j=((c[q>>2]|0)*10|0)+((a[c[w>>2]>>0]|0)-48)|0;else j=1e4;c[q>>2]=j;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0);c[y>>2]=1}}while(0);if((c[A>>2]|0)!=0&(c[y>>2]|0)!=0)while(1){if((c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0)break a;if(!(d[19267+(d[c[w>>2]>>0]|0)>>0]&1))break a;c[w>>2]=(c[w>>2]|0)+(c[r>>2]|0)}}}while(0);r=_(c[q>>2]|0,c[z>>2]|0)|0;c[q>>2]=r+(c[p>>2]|0);if((c[q>>2]|0)<0){c[z>>2]=-1;c[q>>2]=_(c[q>>2]|0,-1)|0}else c[z>>2]=1;r=t;do if((c[r>>2]|0)!=0|(c[r+4>>2]|0)!=0){d:do if((c[z>>2]|0)>0)while(1){r=t;p=c[r+4>>2]|0;if(!((p|0)<214748364|(p|0)==214748364&(c[r>>2]|0)>>>0<3435973836?(c[q>>2]|0)>0:0))break d;c[q>>2]=(c[q>>2]|0)+-1;p=t;p=rR(c[p>>2]|0,c[p+4>>2]|0,10,0)|0;r=t;c[r>>2]=p;c[r+4>>2]=C}else while(1){r=t;r=qR(c[r>>2]|0,c[r+4>>2]|0,10,0)|0;if(!((r|0)!=0|(C|0)!=0?0:(c[q>>2]|0)>0))break d;c[q>>2]=(c[q>>2]|0)+-1;p=t;p=pR(c[p>>2]|0,c[p+4>>2]|0,10,0)|0;r=t;c[r>>2]=p;c[r+4>>2]=C}while(0);p=(c[u>>2]|0)<0;r=t;o=c[r>>2]|0;r=c[r+4>>2]|0;b=fR(0,0,o|0,r|0)|0;u=t;c[u>>2]=p?b:o;c[u+4>>2]=p?C:r;if(!(c[q>>2]|0)){z=t;h[D>>3]=+((c[z>>2]|0)>>>0)+4294967296.0*+(c[z+4>>2]|0);break}h[v>>3]=1.0;if((c[q>>2]|0)>307&(c[q>>2]|0)<342){while(1){if(!((c[q>>2]|0)%308|0))break;h[v>>3]=+h[v>>3]*10.0;c[q>>2]=(c[q>>2]|0)-1}u=t;l=+((c[u>>2]|0)>>>0)+4294967296.0*+(c[u+4>>2]|0);k=+h[v>>3];if((c[z>>2]|0)<0){h[D>>3]=l/k;h[D>>3]=+h[D>>3]/1.e+308;break}else{h[D>>3]=l*k;h[D>>3]=+h[D>>3]*1.e+308;break}}if((c[q>>2]|0)>=342){v=t;k=+((c[v>>2]|0)>>>0)+4294967296.0*+(c[v+4>>2]|0);if((c[z>>2]|0)<0){h[D>>3]=0.0*k;break}else{h[D>>3]=s*k;break}}while(1){if(!((c[q>>2]|0)%22|0))break;h[v>>3]=+h[v>>3]*10.0;c[q>>2]=(c[q>>2]|0)-1}while(1){if((c[q>>2]|0)<=0)break;h[v>>3]=+h[v>>3]*1.0e22;c[q>>2]=(c[q>>2]|0)-22}u=t;l=+((c[u>>2]|0)>>>0)+4294967296.0*+(c[u+4>>2]|0);k=+h[v>>3];if((c[z>>2]|0)<0){h[D>>3]=l/k;break}else{h[D>>3]=l*k;break}}else h[D>>3]=((c[u>>2]|0)<0?(c[A>>2]|0)!=0:0)?-0.0:0.0;while(0);h[c[x>>2]>>3]=+h[D>>3];if(((c[A>>2]|0)>0?(c[w>>2]|0)>>>0>=(c[E>>2]|0)>>>0:0)&(c[y>>2]|0)!=0)j=(c[B>>2]|0)==0;else j=0;c[F>>2]=j&1;F=c[F>>2]|0;i=G;return F|0}function Ly(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=0;while(1){if(!(a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0))break;if((a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0)==46)break;c[m>>2]=(c[m>>2]|0)+1}do if(c[l>>2]|0){if((zd(c[h>>2]|0,c[l>>2]|0,c[m>>2]|0)|0)==0?(a[(c[l>>2]|0)+(c[m>>2]|0)>>0]|0)==0:0)break;c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}while(0);c[h>>2]=(c[h>>2]|0)+((c[m>>2]|0)+1);c[m>>2]=0;while(1){if(!(a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0))break;if((a[(c[h>>2]|0)+(c[m>>2]|0)>>0]|0)==46)break;c[m>>2]=(c[m>>2]|0)+1}do if(c[k>>2]|0){if((zd(c[h>>2]|0,c[k>>2]|0,c[m>>2]|0)|0)==0?(a[(c[k>>2]|0)+(c[m>>2]|0)>>0]|0)==0:0)break;c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}while(0);c[h>>2]=(c[h>>2]|0)+((c[m>>2]|0)+1);if((c[j>>2]|0)!=0?(Td(c[h>>2]|0,c[j>>2]|0)|0)!=0:0){c[g>>2]=0;e=c[g>>2]|0;i=n;return e|0}c[g>>2]=1;e=c[g>>2]|0;i=n;return e|0}function My(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[e>>2]=a;c[f>>2]=b;a:do if(c[e>>2]|0){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+4>>2]|0))break a;if(!(Td(c[(c[c[e>>2]>>2]|0)+(c[g>>2]<<3)>>2]|0,c[f>>2]|0)|0))break;c[g>>2]=(c[g>>2]|0)+1}c[d>>2]=1;b=c[d>>2]|0;i=h;return b|0}while(0);c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}function Ny(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;k=s+36|0;l=s+32|0;j=s+28|0;m=s+24|0;t=s+20|0;q=s+16|0;r=s+12|0;p=s+8|0;o=s+4|0;n=s;c[k>>2]=e;c[l>>2]=f;c[j>>2]=g;c[m>>2]=h;c[t>>2]=c[c[k>>2]>>2];c[q>>2]=0;if(!(c[(c[t>>2]|0)+288>>2]|0)){i=s;return}c[o>>2]=Dh(c[c[k>>2]>>2]|0,c[j>>2]|0)|0;if((c[o>>2]|0)<0){i=s;return}a:do if((d[c[l>>2]>>0]|0)==62)c[q>>2]=c[(c[k>>2]|0)+420>>2];else{c[p>>2]=0;while(1){if((c[p>>2]|0)>=(c[c[m>>2]>>2]|0))break a;j=c[p>>2]|0;if((c[(c[l>>2]|0)+28>>2]|0)==(c[(c[m>>2]|0)+8+((c[p>>2]|0)*72|0)+44>>2]|0))break;c[p>>2]=j+1}c[q>>2]=c[(c[m>>2]|0)+8+(j*72|0)+16>>2]}while(0);c[n>>2]=b[(c[l>>2]|0)+32>>1];if(!(c[q>>2]|0)){i=s;return}do if((c[n>>2]|0)<0)if((b[(c[q>>2]|0)+32>>1]|0)>=0){c[r>>2]=c[(c[(c[q>>2]|0)+4>>2]|0)+((b[(c[q>>2]|0)+32>>1]|0)*24|0)>>2];break}else{c[r>>2]=20759;break}else c[r>>2]=c[(c[(c[q>>2]|0)+4>>2]|0)+((c[n>>2]|0)*24|0)>>2];while(0);if(2!=(Oy(c[k>>2]|0,c[c[q>>2]>>2]|0,c[r>>2]|0,c[o>>2]|0)|0)){i=s;return}a[c[l>>2]>>0]=101;i=s;return}function Oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+64|0;n=p+16|0;m=p;f=p+48|0;g=p+44|0;h=p+40|0;j=p+36|0;k=p+32|0;o=p+28|0;l=p+24|0;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=c[c[f>>2]>>2];c[o>>2]=c[(c[(c[k>>2]|0)+16>>2]|0)+(c[j>>2]<<4)>>2];c[l>>2]=Sb[c[(c[k>>2]|0)+288>>2]&255](c[(c[k>>2]|0)+292>>2]|0,20,c[g>>2]|0,c[h>>2]|0,c[o>>2]|0,c[(c[f>>2]|0)+496>>2]|0)|0;if((c[l>>2]|0)!=1){if(!((c[l>>2]|0)!=2&(c[l>>2]|0)!=0)){o=c[l>>2]|0;i=p;return o|0}Nw(c[f>>2]|0);o=c[l>>2]|0;i=p;return o|0}e=c[f>>2]|0;if((c[j>>2]|0)!=0?1:(c[(c[k>>2]|0)+20>>2]|0)>2){k=c[g>>2]|0;n=c[h>>2]|0;c[m>>2]=c[o>>2];c[m+4>>2]=k;c[m+8>>2]=n;Ah(e,30901,m)}else{o=c[h>>2]|0;c[n>>2]=c[g>>2];c[n+4>>2]=o;Ah(e,30934,n)}c[(c[f>>2]|0)+12>>2]=23;o=c[l>>2]|0;i=p;return o|0}function St(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=b;c[h>>2]=e;c[j>>2]=d[c[g>>2]>>0];if(!(c[j>>2]&128)){l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=0;a[f>>0]=1;l=a[f>>0]|0;i=m;return l|0}c[g>>2]=(c[g>>2]|0)+1;c[k>>2]=d[c[g>>2]>>0];if(!(c[k>>2]&128)){c[j>>2]=c[j>>2]&127;c[j>>2]=c[j>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=0;a[f>>0]=2;l=a[f>>0]|0;i=m;return l|0}c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=c[j>>2]<<14;c[j>>2]=c[j>>2]|(d[c[g>>2]>>0]|0);e=(c[j>>2]&128|0)!=0;c[j>>2]=c[j>>2]&2080895;if(!e){c[k>>2]=c[k>>2]&127;c[k>>2]=c[k>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=0;a[f>>0]=3;l=a[f>>0]|0;i=m;return l|0}c[g>>2]=(c[g>>2]|0)+1;c[k>>2]=c[k>>2]<<14;c[k>>2]=c[k>>2]|(d[c[g>>2]>>0]|0);e=(c[k>>2]&128|0)!=0;c[k>>2]=c[k>>2]&2080895;b=c[j>>2]|0;if(!e){c[j>>2]=b<<7;c[j>>2]=c[j>>2]|c[k>>2];l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=0;a[f>>0]=4;l=a[f>>0]|0;i=m;return l|0}c[l>>2]=b;c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=c[j>>2]<<14;c[j>>2]=c[j>>2]|(d[c[g>>2]>>0]|0);if(!(c[j>>2]&128)){c[k>>2]=c[k>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];c[l>>2]=(c[l>>2]|0)>>>18;k=c[l>>2]|0;l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;a[f>>0]=5;l=a[f>>0]|0;i=m;return l|0}c[l>>2]=c[l>>2]<<7;c[l>>2]=c[l>>2]|c[k>>2];c[g>>2]=(c[g>>2]|0)+1;c[k>>2]=c[k>>2]<<14;c[k>>2]=c[k>>2]|(d[c[g>>2]>>0]|0);if(!(c[k>>2]&128)){c[j>>2]=c[j>>2]&2080895;c[j>>2]=c[j>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];c[l>>2]=(c[l>>2]|0)>>>18;k=c[l>>2]|0;l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;a[f>>0]=6;l=a[f>>0]|0;i=m;return l|0}c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=c[j>>2]<<14;c[j>>2]=c[j>>2]|(d[c[g>>2]>>0]|0);b=c[j>>2]|0;if(!(c[j>>2]&128)){c[j>>2]=b&-266354561;c[k>>2]=c[k>>2]&2080895;c[k>>2]=c[k>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];c[l>>2]=(c[l>>2]|0)>>>11;k=c[l>>2]|0;l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;a[f>>0]=7;l=a[f>>0]|0;i=m;return l|0}c[j>>2]=b&2080895;c[g>>2]=(c[g>>2]|0)+1;c[k>>2]=c[k>>2]<<14;c[k>>2]=c[k>>2]|(d[c[g>>2]>>0]|0);if(c[k>>2]&128){c[g>>2]=(c[g>>2]|0)+1;c[j>>2]=c[j>>2]<<15;c[j>>2]=c[j>>2]|(d[c[g>>2]>>0]|0);c[k>>2]=c[k>>2]&2080895;c[k>>2]=c[k>>2]<<8;c[j>>2]=c[j>>2]|c[k>>2];c[l>>2]=c[l>>2]<<4;c[k>>2]=d[(c[g>>2]|0)+-4>>0];c[k>>2]=c[k>>2]&127;c[k>>2]=(c[k>>2]|0)>>>3;c[l>>2]=c[l>>2]|c[k>>2];k=c[l>>2]|0;l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;a[f>>0]=9;l=a[f>>0]|0;i=m;return l|0}else{c[k>>2]=c[k>>2]&-266354561;c[j>>2]=c[j>>2]<<7;c[j>>2]=c[j>>2]|c[k>>2];c[l>>2]=(c[l>>2]|0)>>>4;k=c[l>>2]|0;l=c[h>>2]|0;c[l>>2]=c[j>>2];c[l+4>>2]=k;a[f>>0]=8;l=a[f>>0]|0;i=m;return l|0}return 0}function Tt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=d;while(1){if((c[f>>2]|0)>0)b=(a[(c[e>>2]|0)+((c[f>>2]|0)-1)>>0]|0)==32;else b=0;d=c[f>>2]|0;if(!b)break;c[f>>2]=d+-1}i=g;return(d|0)==0|0}function Ut(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;m=n+4|0;l=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[m>>2]=0;if(!(c[g>>2]|0)){m=c[m>>2]|0;i=n;return m|0}c[l>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);if(d[(c[l>>2]|0)+20>>0]|0){c[m>>2]=6;m=c[m>>2]|0;i=n;return m|0}else{c[m>>2]=Vt(c[c[l>>2]>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;m=c[m>>2]|0;i=n;return m|0}return 0}function Vt(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=0;if(!(c[(c[g>>2]|0)+216>>2]|0)){l=c[l>>2]|0;i=m;return l|0}if(!(c[h>>2]|0))b=0;else b=c[(c[g>>2]|0)+184>>2]|0;c[l>>2]=Is(c[(c[g>>2]|0)+216>>2]|0,c[h>>2]|0,b,c[(c[g>>2]|0)+188>>2]|0,d[(c[g>>2]|0)+10>>0]|0,c[(c[g>>2]|0)+160>>2]|0,c[(c[g>>2]|0)+208>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;l=c[l>>2]|0;i=m;return l|0}function Wt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;j=l+20|0;n=l+16|0;m=l+12|0;g=l+8|0;h=l+4|0;k=l;c[n>>2]=b;c[m>>2]=d;c[g>>2]=e;c[h>>2]=f;c[k>>2]=c[(c[n>>2]|0)+(c[m>>2]<<2)>>2];while(1){if(!(c[k>>2]|0)){g=7;break}if((zd(c[(c[k>>2]|0)+20>>2]|0,c[g>>2]|0,c[h>>2]|0)|0)==0?(a[(c[(c[k>>2]|0)+20>>2]|0)+(c[h>>2]|0)>>0]|0)==0:0){g=5;break}c[k>>2]=c[(c[k>>2]|0)+24>>2]}if((g|0)==5){c[j>>2]=c[k>>2];n=c[j>>2]|0;i=l;return n|0}else if((g|0)==7){c[j>>2]=0;n=c[j>>2]|0;i=l;return n|0}return 0}function Xt(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;j=o+12|0;k=o+8|0;l=o+4|0;m=o+16|0;n=o;c[k>>2]=f;c[l>>2]=g;a[m>>0]=h;h=c[k>>2]|0;if((c[l>>2]|0)==-2){c[j>>2]=(c[h+12>>2]|0)==0?0:6;n=c[j>>2]|0;i=o;return n|0}if((b[h>>1]|0)!=(c[l>>2]|0)?(b[c[k>>2]>>1]|0)>=0:0){c[j>>2]=0;n=c[j>>2]|0;i=o;return n|0}if((b[c[k>>2]>>1]|0)==(c[l>>2]|0))c[n>>2]=4;else c[n>>2]=1;if((d[m>>0]|0)!=(e[(c[k>>2]|0)+2>>1]&3|0)){if(d[m>>0]&e[(c[k>>2]|0)+2>>1]&2)c[n>>2]=(c[n>>2]|0)+1}else c[n>>2]=(c[n>>2]|0)+2;c[j>>2]=c[n>>2];n=c[j>>2]|0;i=o;return n|0}function Yt(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;f=k+16|0;g=k+12|0;j=k+8|0;l=k+4|0;m=k+20|0;h=k;c[f>>2]=b;c[g>>2]=e;c[l>>2]=If(c[(c[g>>2]|0)+20>>2]|0)|0;a[m>>0]=a[c[(c[g>>2]|0)+20>>2]>>0]|0;c[h>>2]=((d[18477+(d[m>>0]|0)>>0]|0)+(c[l>>2]|0)|0)%23|0;c[j>>2]=Wt(c[f>>2]|0,c[h>>2]|0,c[(c[g>>2]|0)+20>>2]|0,c[l>>2]|0)|0;if(c[j>>2]|0){c[(c[g>>2]|0)+8>>2]=c[(c[j>>2]|0)+8>>2];c[(c[j>>2]|0)+8>>2]=c[g>>2];i=k;return}else{c[(c[g>>2]|0)+8>>2]=0;c[(c[g>>2]|0)+24>>2]=c[(c[f>>2]|0)+(c[h>>2]<<2)>>2];c[(c[f>>2]|0)+(c[h>>2]<<2)>>2]=c[g>>2];i=k;return}}function Zt(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=b;if(((e[(c[g>>2]|0)+8>>1]|0)&2|0)!=0?(d[(c[g>>2]|0)+10>>0]|0|0)!=(c[h>>2]|0):0){c[j>>2]=_t(c[g>>2]|0,c[h>>2]&255)|0;c[f>>2]=c[j>>2];j=c[f>>2]|0;i=k;return j|0}c[f>>2]=0;j=c[f>>2]|0;i=k;return j|0}function _t(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+48|0;n=v+40|0;o=v+36|0;p=v+45|0;k=v+32|0;t=v+28|0;s=v+24|0;u=v+20|0;r=v+16|0;q=v+12|0;j=v+44|0;h=v+8|0;l=v+4|0;m=v;c[o>>2]=f;a[p>>0]=g;if((d[(c[o>>2]|0)+10>>0]|0|0)!=1?(d[p>>0]|0|0)!=1:0){c[h>>2]=_g(c[o>>2]|0)|0;if(c[h>>2]|0){c[n>>2]=7;u=c[n>>2]|0;i=v;return u|0}c[s>>2]=c[(c[o>>2]|0)+16>>2];c[u>>2]=(c[s>>2]|0)+(c[(c[o>>2]|0)+12>>2]&-2);while(1){if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break;a[j>>0]=a[c[s>>2]>>0]|0;a[c[s>>2]>>0]=a[(c[s>>2]|0)+1>>0]|0;c[s>>2]=(c[s>>2]|0)+1;r=a[j>>0]|0;t=c[s>>2]|0;c[s>>2]=t+1;a[t>>0]=r}a[(c[o>>2]|0)+10>>0]=a[p>>0]|0}else{g=(c[o>>2]|0)+12|0;f=c[g>>2]|0;if((d[p>>0]|0|0)==1){c[g>>2]=f&-2;c[k>>2]=(c[(c[o>>2]|0)+12>>2]<<1)+1}else c[k>>2]=(f<<1)+2;c[s>>2]=c[(c[o>>2]|0)+16>>2];c[u>>2]=(c[s>>2]|0)+(c[(c[o>>2]|0)+12>>2]|0);k=c[k>>2]|0;c[t>>2]=yh(c[(c[o>>2]|0)+32>>2]|0,k,((k|0)<0)<<31>>31)|0;if(!(c[t>>2]|0)){c[n>>2]=7;u=c[n>>2]|0;i=v;return u|0}c[r>>2]=c[t>>2];if((d[(c[o>>2]|0)+10>>0]|0|0)==1){a:do if((d[p>>0]|0|0)==2)while(1){if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break a;m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=d[m>>0];do if((c[q>>2]|0)>>>0>=192){c[q>>2]=d[26420+((c[q>>2]|0)-192)>>0];while(1){if((c[s>>2]|0)!=(c[u>>2]|0))f=((d[c[s>>2]>>0]|0)&192|0)==128;else f=0;g=c[q>>2]|0;if(!f)break;m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=(g<<6)+(63&(d[m>>0]|0))}if((g>>>0>=128?(c[q>>2]&-2048|0)!=55296:0)?(c[q>>2]&-2|0)!=65534:0)break;c[q>>2]=65533}while(0);g=c[q>>2]|0;if((c[q>>2]|0)>>>0<=65535){l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=g;l=(c[q>>2]|0)>>>8&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;continue}else{m=(g>>>10&63)+(((c[q>>2]|0)-65536|0)>>>10&192)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=m;l=216+(((c[q>>2]|0)-65536|0)>>>18&3)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;m=c[q>>2]&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=m;l=220+((c[q>>2]|0)>>>8&3)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;continue}}else while(1){if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break a;m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=d[m>>0];do if((c[q>>2]|0)>>>0>=192){c[q>>2]=d[26420+((c[q>>2]|0)-192)>>0];while(1){if((c[s>>2]|0)!=(c[u>>2]|0))f=((d[c[s>>2]>>0]|0)&192|0)==128;else f=0;g=c[q>>2]|0;if(!f)break;m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=(g<<6)+(63&(d[m>>0]|0))}if((g>>>0>=128?(c[q>>2]&-2048|0)!=55296:0)?(c[q>>2]&-2|0)!=65534:0)break;c[q>>2]=65533}while(0);g=c[q>>2]|0;if((c[q>>2]|0)>>>0<=65535){l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=g>>>8;l=c[q>>2]&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;continue}else{l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=216+((g-65536|0)>>>18&3);l=((c[q>>2]|0)>>>10&63)+(((c[q>>2]|0)-65536|0)>>>10&192)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;m=220+((c[q>>2]|0)>>>8&3)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=m;l=c[q>>2]&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=l;continue}}while(0);c[(c[o>>2]|0)+12>>2]=(c[r>>2]|0)-(c[t>>2]|0);u=c[r>>2]|0;c[r>>2]=u+1;a[u>>0]=0}else{b:do if((d[(c[o>>2]|0)+10>>0]|0|0)==2)while(1){if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break b;m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=d[m>>0];m=c[s>>2]|0;c[s>>2]=m+1;c[q>>2]=(c[q>>2]|0)+((d[m>>0]|0)<<8);if((c[q>>2]|0)>>>0>=55296&(c[q>>2]|0)>>>0<57344?(c[s>>2]|0)>>>0<(c[u>>2]|0)>>>0:0){m=c[s>>2]|0;c[s>>2]=m+1;c[l>>2]=d[m>>0];m=c[s>>2]|0;c[s>>2]=m+1;c[l>>2]=(c[l>>2]|0)+((d[m>>0]|0)<<8);c[q>>2]=(c[l>>2]&1023)+((c[q>>2]&63)<<10)+((c[q>>2]&960)+64<<10)}g=c[q>>2]|0;if((c[q>>2]|0)>>>0<128){m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=g;continue}f=c[q>>2]|0;if(g>>>0<2048){k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=192+(f>>>6&31);k=128+(c[q>>2]&63)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=k;continue}g=c[q>>2]|0;if(f>>>0<65536){m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=224+(g>>>12&15);m=128+((c[q>>2]|0)>>>6&63)&255;k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=m;k=128+(c[q>>2]&63)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=k;continue}else{k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=240+(g>>>18&7);k=128+((c[q>>2]|0)>>>12&63)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=k;m=128+((c[q>>2]|0)>>>6&63)&255;k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=m;k=128+(c[q>>2]&63)&255;m=c[r>>2]|0;c[r>>2]=m+1;a[m>>0]=k;continue}}else while(1){if((c[s>>2]|0)>>>0>=(c[u>>2]|0)>>>0)break b;l=c[s>>2]|0;c[s>>2]=l+1;c[q>>2]=(d[l>>0]|0)<<8;l=c[s>>2]|0;c[s>>2]=l+1;c[q>>2]=(c[q>>2]|0)+(d[l>>0]|0);if((c[q>>2]|0)>>>0>=55296&(c[q>>2]|0)>>>0<57344?(c[s>>2]|0)>>>0<(c[u>>2]|0)>>>0:0){l=c[s>>2]|0;c[s>>2]=l+1;c[m>>2]=(d[l>>0]|0)<<8;l=c[s>>2]|0;c[s>>2]=l+1;c[m>>2]=(c[m>>2]|0)+(d[l>>0]|0);c[q>>2]=(c[m>>2]&1023)+((c[q>>2]&63)<<10)+((c[q>>2]&960)+64<<10)}g=c[q>>2]|0;if((c[q>>2]|0)>>>0<128){l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=g;continue}f=c[q>>2]|0;if(g>>>0<2048){k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=192+(f>>>6&31);k=128+(c[q>>2]&63)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=k;continue}g=c[q>>2]|0;if(f>>>0<65536){l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=224+(g>>>12&15);l=128+((c[q>>2]|0)>>>6&63)&255;k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=l;k=128+(c[q>>2]&63)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=k;continue}else{k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=240+(g>>>18&7);k=128+((c[q>>2]|0)>>>12&63)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=k;l=128+((c[q>>2]|0)>>>6&63)&255;k=c[r>>2]|0;c[r>>2]=k+1;a[k>>0]=l;k=128+(c[q>>2]&63)&255;l=c[r>>2]|0;c[r>>2]=l+1;a[l>>0]=k;continue}}while(0);c[(c[o>>2]|0)+12>>2]=(c[r>>2]|0)-(c[t>>2]|0)}a[c[r>>2]>>0]=0;c[q>>2]=e[(c[o>>2]|0)+8>>1];Ug(c[o>>2]|0);b[(c[o>>2]|0)+8>>1]=514|c[q>>2]&32799;a[(c[o>>2]|0)+10>>0]=a[p>>0]|0;c[(c[o>>2]|0)+16>>2]=c[t>>2];c[(c[o>>2]|0)+20>>2]=c[(c[o>>2]|0)+16>>2];u=$t(c[(c[o>>2]|0)+32>>2]|0,c[(c[o>>2]|0)+16>>2]|0)|0;c[(c[o>>2]|0)+24>>2]=u}c[n>>2]=0;u=c[n>>2]|0;i=v;return u|0}function $t(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=b;if((c[f>>2]|0)!=0?(au(c[f>>2]|0,c[g>>2]|0)|0)!=0:0){c[d>>2]=e[(c[f>>2]|0)+248+4>>1];b=c[d>>2]|0;i=h;return b|0}c[d>>2]=Tb[c[56>>2]&255](c[g>>2]|0)|0;b=c[d>>2]|0;i=h;return b|0}function au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if((c[e>>2]|0)>>>0<(c[(c[d>>2]|0)+248+32>>2]|0)>>>0){b=0;b=b&1;i=f;return b|0}b=(c[e>>2]|0)>>>0<(c[(c[d>>2]|0)+248+36>>2]|0)>>>0;b=b&1;i=f;return b|0}function bu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;e=f;c[d>>2]=a;c[g>>2]=b;c[e>>2]=c[(c[g>>2]|0)+28>>2];if(!(c[e>>2]|0)){i=f;return}g=c[e>>2]|0;c[g>>2]=(c[g>>2]|0)+-1;if(c[c[e>>2]>>2]|0){i=f;return}Qb[c[(c[e>>2]|0)+4>>2]&255](c[(c[e>>2]|0)+8>>2]|0);Sf(c[d>>2]|0,c[e>>2]|0);i=f;return}function cu(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+20|0;e=k+16|0;f=k+12|0;h=k+8|0;j=k+4|0;g=k;c[b>>2]=a;Nf(c[b>>2]|0);c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[h>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+12>>2];a:do if(c[(c[(c[b>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+12>>2]|0){c[f>>2]=c[(c[h>>2]|0)+8+8>>2];while(1){if(!(c[f>>2]|0))break a;c[j>>2]=c[(c[f>>2]|0)+8>>2];if((d[(c[j>>2]|0)+42>>0]|0)&16)iu(c[b>>2]|0,c[j>>2]|0);c[f>>2]=c[c[f>>2]>>2]}}while(0);c[e>>2]=(c[e>>2]|0)+1}c[f>>2]=c[(c[b>>2]|0)+312+8>>2];while(1){if(!(c[f>>2]|0))break;c[g>>2]=c[(c[f>>2]|0)+8>>2];if(c[(c[g>>2]|0)+16>>2]|0)iu(c[b>>2]|0,c[(c[g>>2]|0)+16>>2]|0);c[f>>2]=c[c[f>>2]>>2]}ju(c[b>>2]|0);i=k;return}function du(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;gu(c[d>>2]|0,68);i=b;return 0}function eu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=i;i=i+16|0;f=g+12|0;b=g+8|0;d=g+4|0;e=g;c[b>>2]=a;if(c[(c[b>>2]|0)+4>>2]|0){c[f>>2]=1;f=c[f>>2]|0;i=g;return f|0}c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0)){b=9;break}c[e>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)+4>>2];if((c[e>>2]|0)!=0?(fu(c[e>>2]|0)|0)!=0:0){b=7;break}c[d>>2]=(c[d>>2]|0)+1}if((b|0)==7){c[f>>2]=1;f=c[f>>2]|0;i=g;return f|0}else if((b|0)==9){c[f>>2]=0;f=c[f>>2]|0;i=g;return f|0}return 0}function fu(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[(c[b>>2]|0)+16>>2]|0)!=0|0}function gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;d=l+24|0;e=l+20|0;g=l+16|0;f=l+12|0;j=l+8|0;h=l+4|0;k=l;c[d>>2]=a;c[e>>2]=b;if(!(c[(c[d>>2]|0)+332>>2]|0)){i=l;return}c[f>>2]=c[(c[d>>2]|0)+332>>2];c[(c[d>>2]|0)+332>>2]=0;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[d>>2]|0)+308>>2]|0))break;c[j>>2]=c[(c[f>>2]|0)+(c[g>>2]<<2)>>2];c[h>>2]=c[(c[j>>2]|0)+8>>2];if((c[h>>2]|0)!=0?(c[k>>2]=c[(c[c[h>>2]>>2]|0)+(c[e>>2]|0)>>2],(c[k>>2]|0)!=0):0)Tb[c[k>>2]&255](c[h>>2]|0)|0;c[(c[j>>2]|0)+20>>2]=0;hu(c[j>>2]|0);c[g>>2]=(c[g>>2]|0)+1}Sf(c[d>>2]|0,c[f>>2]|0);c[(c[d>>2]|0)+308>>2]=0;i=l;return}function hu(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=c[c[b>>2]>>2];a=(c[b>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+-1;if(c[(c[b>>2]|0)+12>>2]|0){i=f;return}c[e>>2]=c[(c[b>>2]|0)+8>>2];if(c[e>>2]|0)Tb[c[(c[c[e>>2]>>2]|0)+16>>2]&255](c[e>>2]|0)|0;Sf(c[d>>2]|0,c[b>>2]|0);i=f;return}function iu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;d=h+12|0;j=h+8|0;f=h+4|0;e=h;c[d>>2]=a;c[j>>2]=b;c[f>>2]=(c[j>>2]|0)+56;while(1){if(!(c[c[f>>2]>>2]|0)){g=6;break}a=c[c[f>>2]>>2]|0;if((c[c[c[f>>2]>>2]>>2]|0)==(c[d>>2]|0))break;c[f>>2]=a+24}if((g|0)==6){i=h;return}c[e>>2]=a;c[c[f>>2]>>2]=c[(c[e>>2]|0)+24>>2];hu(c[e>>2]|0);i=h;return}function ju(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;b=f+8|0;d=f+4|0;e=f;c[b>>2]=a;c[d>>2]=c[(c[b>>2]|0)+336>>2];c[(c[b>>2]|0)+336>>2]=0;if(!(c[d>>2]|0)){i=f;return}Oh(c[b>>2]|0);do{c[e>>2]=c[(c[d>>2]|0)+24>>2];hu(c[d>>2]|0);c[d>>2]=c[e>>2]}while((c[d>>2]|0)!=0);i=f;return}function ku(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Qb[c[160>>2]&255](c[(c[d>>2]|0)+44>>2]|0);i=b;return}function lu(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;c[d>>2]=a;a=1584;b=a+100|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));c[410]=(c[53]|0)==0&1;if((c[410]|0)!=0&(c[55]|0)!=0&(c[53]|0)==0){c[411]=c[55];c[399]=10;c[409]=1;i=d;return 0}else{c[411]=0;c[399]=10;c[409]=1;i=d;return 0}return 0}function mu(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;c[d>>2]=a;a=1584;b=a+100|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));i=d;return}function nu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;g=m+20|0;h=m+16|0;j=m+12|0;k=m+8|0;l=m+4|0;n=m;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[n>>2]=60+((c[410]|0)*52|0);b=c[n>>2]|0;c[k>>2]=ig(b,((b|0)<0)<<31>>31)|0;if(!(c[k>>2]|0)){n=c[k>>2]|0;i=m;return n|0}if(c[410]|0){c[l>>2]=(c[k>>2]|0)+60;c[(c[l>>2]|0)+12>>2]=10}else c[l>>2]=1584;if(!(d[(c[l>>2]|0)+20+14>>0]|0)){a[(c[l>>2]|0)+20+14>>0]=1;n=(c[l>>2]|0)+20|0;c[(c[l>>2]|0)+20+24>>2]=n;c[(c[l>>2]|0)+20+28>>2]=n}c[c[k>>2]>>2]=c[l>>2];c[(c[k>>2]|0)+4>>2]=c[g>>2];c[(c[k>>2]|0)+8>>2]=c[h>>2];c[(c[k>>2]|0)+12>>2]=(c[g>>2]|0)+(c[h>>2]|0)+32;c[(c[k>>2]|0)+16>>2]=(c[j>>2]|0)!=0?1:0;Eu(c[k>>2]|0);if(c[j>>2]|0){c[(c[k>>2]|0)+20>>2]=10;n=(c[l>>2]|0)+8|0;c[n>>2]=(c[n>>2]|0)+(c[(c[k>>2]|0)+20>>2]|0);c[(c[l>>2]|0)+12>>2]=(c[(c[l>>2]|0)+4>>2]|0)+10-(c[(c[l>>2]|0)+8>>2]|0)}if(c[(c[k>>2]|0)+44>>2]|0){n=c[k>>2]|0;i=m;return n|0}uu(c[k>>2]|0);c[k>>2]=0;n=c[k>>2]|0;i=m;return n|0}function ou(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+16|0;h=g+12|0;d=g+8|0;e=g+4|0;f=g;c[h>>2]=a;c[d>>2]=b;c[e>>2]=c[h>>2];if(!(c[(c[e>>2]|0)+16>>2]|0)){i=g;return}c[f>>2]=c[c[e>>2]>>2];h=(c[f>>2]|0)+4|0;c[h>>2]=(c[h>>2]|0)+((c[d>>2]|0)-(c[(c[e>>2]|0)+24>>2]|0));c[(c[f>>2]|0)+12>>2]=(c[(c[f>>2]|0)+4>>2]|0)+10-(c[(c[f>>2]|0)+8>>2]|0);c[(c[e>>2]|0)+24>>2]=c[d>>2];c[(c[e>>2]|0)+28>>2]=(((c[(c[e>>2]|0)+24>>2]|0)*9|0)>>>0)/10|0;wu(c[e>>2]|0);i=g;return}function pu(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;b=d+4|0;e=d;c[f>>2]=a;c[e>>2]=c[f>>2];c[b>>2]=c[(c[e>>2]|0)+40>>2];i=d;return c[b>>2]|0}function qu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;a=Bu(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return a|0}function ru(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;n=k+24|0;m=k+20|0;l=k+16|0;f=k+12|0;h=k+8|0;g=k+4|0;j=k;c[n>>2]=b;c[m>>2]=d;c[l>>2]=e;c[f>>2]=c[n>>2];c[h>>2]=c[m>>2];c[g>>2]=c[c[f>>2]>>2];if((c[l>>2]|0)==0?(c[(c[g>>2]|0)+16>>2]|0)>>>0<=(c[(c[g>>2]|0)+4>>2]|0)>>>0:0){c[j>>2]=(c[g>>2]|0)+20+24;c[(c[h>>2]|0)+28>>2]=(c[g>>2]|0)+20;m=c[h>>2]|0;n=c[c[j>>2]>>2]|0;c[(c[h>>2]|0)+24>>2]=n;c[n+28>>2]=m;c[c[j>>2]>>2]=c[h>>2];n=(c[f>>2]|0)+36|0;c[n>>2]=(c[n>>2]|0)+1;a[(c[h>>2]|0)+12>>0]=0;i=k;return}yu(c[h>>2]|0,1); -i=k;return}function su(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+32|0;o=l+28|0;n=l+24|0;m=l+20|0;f=l+16|0;h=l+12|0;j=l+8|0;k=l+4|0;g=l;c[o>>2]=a;c[n>>2]=b;c[m>>2]=d;c[f>>2]=e;c[h>>2]=c[o>>2];c[j>>2]=c[n>>2];c[g>>2]=((c[m>>2]|0)>>>0)%((c[(c[h>>2]|0)+44>>2]|0)>>>0)|0;c[k>>2]=(c[(c[h>>2]|0)+48>>2]|0)+(c[g>>2]<<2);while(1){if((c[c[k>>2]>>2]|0)==(c[j>>2]|0))break;c[k>>2]=(c[c[k>>2]>>2]|0)+16}c[c[k>>2]>>2]=c[(c[j>>2]|0)+16>>2];c[g>>2]=((c[f>>2]|0)>>>0)%((c[(c[h>>2]|0)+44>>2]|0)>>>0)|0;c[(c[j>>2]|0)+8>>2]=c[f>>2];c[(c[j>>2]|0)+16>>2]=c[(c[(c[h>>2]|0)+48>>2]|0)+(c[g>>2]<<2)>>2];c[(c[(c[h>>2]|0)+48>>2]|0)+(c[g>>2]<<2)>>2]=c[j>>2];if((c[f>>2]|0)>>>0<=(c[(c[h>>2]|0)+32>>2]|0)>>>0){i=l;return}c[(c[h>>2]|0)+32>>2]=c[f>>2];i=l;return}function tu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[d>>2]=b;c[e>>2]=c[g>>2];if((c[d>>2]|0)>>>0>(c[(c[e>>2]|0)+32>>2]|0)>>>0){i=f;return}Au(c[e>>2]|0,c[d>>2]|0);c[(c[e>>2]|0)+32>>2]=(c[d>>2]|0)-1;i=f;return}function uu(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;f=b+8|0;d=b+4|0;e=b;c[f>>2]=a;c[d>>2]=c[f>>2];c[e>>2]=c[c[d>>2]>>2];Au(c[d>>2]|0,0);a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[(c[d>>2]|0)+24>>2]|0);a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)-(c[(c[d>>2]|0)+20>>2]|0);c[(c[e>>2]|0)+12>>2]=(c[(c[e>>2]|0)+4>>2]|0)+10-(c[(c[e>>2]|0)+8>>2]|0);wu(c[d>>2]|0);Kd(c[(c[d>>2]|0)+56>>2]|0);Kd(c[(c[d>>2]|0)+48>>2]|0);Kd(c[d>>2]|0);i=b;return}function vu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+12|0;b=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[b>>2]=c[g>>2];if(!(c[(c[b>>2]|0)+16>>2]|0)){i=f;return}c[d>>2]=c[c[b>>2]>>2];c[e>>2]=c[(c[d>>2]|0)+4>>2];c[(c[d>>2]|0)+4>>2]=0;wu(c[b>>2]|0);c[(c[d>>2]|0)+4>>2]=c[e>>2];i=f;return}function wu(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+8|0;f=g+4|0;e=g;c[b>>2]=a;c[f>>2]=c[c[b>>2]>>2];while(1){if((c[(c[f>>2]|0)+16>>2]|0)>>>0<=(c[(c[f>>2]|0)+4>>2]|0)>>>0)break;a=c[(c[f>>2]|0)+20+28>>2]|0;c[e>>2]=a;if(d[a+14>>0]|0)break;xu(c[e>>2]|0)|0;yu(c[e>>2]|0,1)}if(c[(c[b>>2]|0)+40>>2]|0){i=g;return}if(!(c[(c[b>>2]|0)+56>>2]|0)){i=g;return}Kd(c[(c[b>>2]|0)+56>>2]|0);c[(c[b>>2]|0)+52>>2]=0;c[(c[b>>2]|0)+56>>2]=0;i=g;return}function xu(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e+4|0;f=e;c[d>>2]=b;c[f>>2]=c[(c[d>>2]|0)+20>>2];c[(c[(c[d>>2]|0)+28>>2]|0)+24>>2]=c[(c[d>>2]|0)+24>>2];c[(c[(c[d>>2]|0)+24>>2]|0)+28>>2]=c[(c[d>>2]|0)+28>>2];c[(c[d>>2]|0)+24>>2]=0;c[(c[d>>2]|0)+28>>2]=0;a[(c[d>>2]|0)+12>>0]=1;b=(c[f>>2]|0)+36|0;c[b>>2]=(c[b>>2]|0)+-1;i=e;return c[d>>2]|0}function yu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;h=i;i=i+32|0;d=h+16|0;e=h+12|0;j=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[d>>2]|0)+20>>2];c[j>>2]=((c[(c[d>>2]|0)+8>>2]|0)>>>0)%((c[(c[f>>2]|0)+44>>2]|0)>>>0)|0;c[g>>2]=(c[(c[f>>2]|0)+48>>2]|0)+(c[j>>2]<<2);while(1){b=(c[c[g>>2]>>2]|0)+16|0;if((c[c[g>>2]>>2]|0)==(c[d>>2]|0))break;c[g>>2]=b}c[c[g>>2]>>2]=c[b>>2];j=(c[f>>2]|0)+40|0;c[j>>2]=(c[j>>2]|0)+-1;if(!(c[e>>2]|0)){i=h;return}zu(c[d>>2]|0);i=h;return}function zu(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;c[e>>2]=c[(c[d>>2]|0)+20>>2];if(a[(c[d>>2]|0)+13>>0]|0){c[(c[d>>2]|0)+16>>2]=c[(c[e>>2]|0)+52>>2];c[(c[e>>2]|0)+52>>2]=c[d>>2]}else Yi(c[c[d>>2]>>2]|0);if(!(c[(c[e>>2]|0)+16>>2]|0)){i=f;return}e=(c[c[e>>2]>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+-1;i=f;return}function Au(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=b;c[f>>2]=d;c[g>>2]=0;while(1){if((c[g>>2]|0)>>>0>=(c[(c[e>>2]|0)+44>>2]|0)>>>0)break;c[j>>2]=(c[(c[e>>2]|0)+48>>2]|0)+(c[g>>2]<<2);while(1){b=c[c[j>>2]>>2]|0;c[h>>2]=b;if(!b)break;if((c[(c[h>>2]|0)+8>>2]|0)>>>0<(c[f>>2]|0)>>>0){c[j>>2]=(c[h>>2]|0)+16;continue}b=(c[e>>2]|0)+40|0;c[b>>2]=(c[b>>2]|0)+-1;c[c[j>>2]>>2]=c[(c[h>>2]|0)+16>>2];if(!(a[(c[h>>2]|0)+12>>0]|0))xu(c[h>>2]|0)|0;zu(c[h>>2]|0)}c[g>>2]=(c[g>>2]|0)+1}i=k;return}function Bu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;j=l+20|0;m=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;k=l;c[m>>2]=b;c[f>>2]=d;c[g>>2]=e;c[h>>2]=c[m>>2];c[k>>2]=0;c[k>>2]=c[(c[(c[h>>2]|0)+48>>2]|0)+((((c[f>>2]|0)>>>0)%((c[(c[h>>2]|0)+44>>2]|0)>>>0)|0)<<2)>>2];while(1){if(c[k>>2]|0)d=(c[(c[k>>2]|0)+8>>2]|0)!=(c[f>>2]|0);else d=0;e=c[k>>2]|0;if(!d)break;c[k>>2]=c[e+16>>2]}if(e){e=c[k>>2]|0;if(a[(c[k>>2]|0)+12>>0]|0){c[j>>2]=e;m=c[j>>2]|0;i=l;return m|0}else{c[j>>2]=xu(e)|0;m=c[j>>2]|0;i=l;return m|0}}else if(c[g>>2]|0){c[j>>2]=Cu(c[h>>2]|0,c[f>>2]|0,c[g>>2]|0)|0;m=c[j>>2]|0;i=l;return m|0}else{c[j>>2]=0;m=c[j>>2]|0;i=l;return m|0}return 0}function Cu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;f=p+32|0;g=p+28|0;h=p+24|0;j=p+20|0;l=p+16|0;m=p+12|0;o=p+8|0;n=p+4|0;k=p;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[m>>2]=c[c[g>>2]>>2];c[o>>2]=0;c[l>>2]=(c[(c[g>>2]|0)+40>>2]|0)-(c[(c[g>>2]|0)+36>>2]|0);do if((c[j>>2]|0)==1){if((c[l>>2]|0)>>>0<(c[(c[m>>2]|0)+12>>2]|0)>>>0?(c[l>>2]|0)>>>0<(c[(c[g>>2]|0)+28>>2]|0)>>>0:0){if(!(Du(c[g>>2]|0)|0))break;if((c[(c[g>>2]|0)+36>>2]|0)>>>0>=(c[l>>2]|0)>>>0)break}c[f>>2]=0;o=c[f>>2]|0;i=p;return o|0}while(0);if((c[(c[g>>2]|0)+40>>2]|0)>>>0>=(c[(c[g>>2]|0)+44>>2]|0)>>>0)Eu(c[g>>2]|0);do if((c[(c[g>>2]|0)+16>>2]|0)!=0?(a[(c[(c[m>>2]|0)+20+28>>2]|0)+14>>0]|0)==0:0){if(((c[(c[g>>2]|0)+40>>2]|0)+1|0)>>>0<(c[(c[g>>2]|0)+24>>2]|0)>>>0?(Du(c[g>>2]|0)|0)==0:0)break;c[o>>2]=c[(c[m>>2]|0)+20+28>>2];yu(c[o>>2]|0,0);xu(c[o>>2]|0)|0;c[n>>2]=c[(c[o>>2]|0)+20>>2];if((c[(c[n>>2]|0)+12>>2]|0)!=(c[(c[g>>2]|0)+12>>2]|0)){zu(c[o>>2]|0);c[o>>2]=0;break}else{m=(c[m>>2]|0)+16|0;c[m>>2]=(c[m>>2]|0)-((c[(c[n>>2]|0)+16>>2]|0)-(c[(c[g>>2]|0)+16>>2]|0));break}}while(0);if(!(c[o>>2]|0))c[o>>2]=Fu(c[g>>2]|0,(c[j>>2]|0)==1&1)|0;if((c[o>>2]|0)!=0?(c[k>>2]=((c[h>>2]|0)>>>0)%((c[(c[g>>2]|0)+44>>2]|0)>>>0)|0,n=(c[g>>2]|0)+40|0,c[n>>2]=(c[n>>2]|0)+1,c[(c[o>>2]|0)+8>>2]=c[h>>2],c[(c[o>>2]|0)+16>>2]=c[(c[(c[g>>2]|0)+48>>2]|0)+(c[k>>2]<<2)>>2],c[(c[o>>2]|0)+20>>2]=c[g>>2],c[(c[o>>2]|0)+28>>2]=0,c[(c[o>>2]|0)+24>>2]=0,a[(c[o>>2]|0)+12>>0]=1,c[c[(c[o>>2]|0)+4>>2]>>2]=0,c[(c[(c[g>>2]|0)+48>>2]|0)+(c[k>>2]<<2)>>2]=c[o>>2],(c[h>>2]|0)>>>0>(c[(c[g>>2]|0)+32>>2]|0)>>>0):0)c[(c[g>>2]|0)+32>>2]=c[h>>2];c[f>>2]=c[o>>2];o=c[f>>2]|0;i=p;return o|0}function Du(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[e>>2]=a;if((c[413]|0)!=0?((c[(c[e>>2]|0)+4>>2]|0)+(c[(c[e>>2]|0)+8>>2]|0)|0)<=(c[412]|0):0){c[b>>2]=c[420];e=c[b>>2]|0;i=d;return e|0}c[b>>2]=Hu()|0;e=c[b>>2]|0;i=d;return e|0}function Eu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;b=k+24|0;d=k+20|0;g=k+16|0;f=k+12|0;j=k+8|0;h=k+4|0;e=k;c[b>>2]=a;a=c[(c[b>>2]|0)+44>>2]<<1;c[g>>2]=a;c[g>>2]=(c[g>>2]|0)>>>0<256?256:a;if(c[(c[b>>2]|0)+44>>2]|0)Sj();c[d>>2]=ig(c[g>>2]<<2,0)|0;if(c[(c[b>>2]|0)+44>>2]|0)Tj();if(!(c[d>>2]|0)){i=k;return}c[f>>2]=0;while(1){if((c[f>>2]|0)>>>0>=(c[(c[b>>2]|0)+44>>2]|0)>>>0)break;c[h>>2]=c[(c[(c[b>>2]|0)+48>>2]|0)+(c[f>>2]<<2)>>2];while(1){a=c[h>>2]|0;c[j>>2]=a;if(!a)break;c[e>>2]=((c[(c[j>>2]|0)+8>>2]|0)>>>0)%((c[g>>2]|0)>>>0)|0;c[h>>2]=c[(c[j>>2]|0)+16>>2];c[(c[j>>2]|0)+16>>2]=c[(c[d>>2]|0)+(c[e>>2]<<2)>>2];c[(c[d>>2]|0)+(c[e>>2]<<2)>>2]=c[j>>2]}c[f>>2]=(c[f>>2]|0)+1}Kd(c[(c[b>>2]|0)+48>>2]|0);c[(c[b>>2]|0)+48>>2]=c[d>>2];c[(c[b>>2]|0)+44>>2]=c[g>>2];i=k;return}function Fu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;e=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;j=l;c[f>>2]=b;c[g>>2]=d;c[h>>2]=0;do if(c[(c[f>>2]|0)+52>>2]|0)k=4;else{if((c[(c[f>>2]|0)+40>>2]|0)==0?(Gu(c[f>>2]|0)|0)!=0:0){k=4;break}if(c[g>>2]|0)Sj();c[j>>2]=ej(c[(c[f>>2]|0)+12>>2]|0)|0;c[h>>2]=(c[j>>2]|0)+(c[(c[f>>2]|0)+4>>2]|0);if(c[g>>2]|0)Tj();if(c[j>>2]|0){c[c[h>>2]>>2]=c[j>>2];c[(c[h>>2]|0)+4>>2]=(c[h>>2]|0)+32;a[(c[h>>2]|0)+13>>0]=0;a[(c[h>>2]|0)+14>>0]=0;break}c[e>>2]=0;k=c[e>>2]|0;i=l;return k|0}while(0);if((k|0)==4){c[h>>2]=c[(c[f>>2]|0)+52>>2];c[(c[f>>2]|0)+52>>2]=c[(c[h>>2]|0)+16>>2];c[(c[h>>2]|0)+16>>2]=0}if(c[(c[f>>2]|0)+16>>2]|0){k=(c[c[f>>2]>>2]|0)+16|0;c[k>>2]=(c[k>>2]|0)+1}c[e>>2]=c[h>>2];k=c[e>>2]|0;i=l;return k|0}function Gu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+32|0;d=l+28|0;e=l+24|0;j=l;k=l+20|0;g=l+16|0;f=l+12|0;h=l+8|0;c[e>>2]=b;if(!(c[411]|0)){c[d>>2]=0;k=c[d>>2]|0;i=l;return k|0}if((c[(c[e>>2]|0)+24>>2]|0)>>>0<3){c[d>>2]=0;k=c[d>>2]|0;i=l;return k|0}Sj();if((c[411]|0)>0){b=c[(c[e>>2]|0)+12>>2]|0;m=c[411]|0;m=rR(b|0,((b|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;b=j;c[b>>2]=m;c[b+4>>2]=C}else{b=c[411]|0;b=rR(-1024,-1,b|0,((b|0)<0)<<31>>31|0)|0;m=j;c[m>>2]=b;c[m+4>>2]=C}o=j;b=c[o>>2]|0;o=c[o+4>>2]|0;m=c[(c[e>>2]|0)+12>>2]|0;m=rR(m|0,((m|0)<0)<<31>>31|0,c[(c[e>>2]|0)+24>>2]|0,0)|0;n=C;if((o|0)>(n|0)|(o|0)==(n|0)&b>>>0>m>>>0){o=j;c[o>>2]=_(c[(c[e>>2]|0)+12>>2]|0,c[(c[e>>2]|0)+24>>2]|0)|0;c[o+4>>2]=0}o=j;o=_f(c[o>>2]|0,c[o+4>>2]|0)|0;c[(c[e>>2]|0)+56>>2]=o;c[k>>2]=o;Tj();a:do if(c[k>>2]|0){o=$f(c[k>>2]|0)|0;c[g>>2]=(o|0)/(c[(c[e>>2]|0)+12>>2]|0)|0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[g>>2]|0))break a;c[h>>2]=(c[k>>2]|0)+(c[(c[e>>2]|0)+4>>2]|0);c[c[h>>2]>>2]=c[k>>2];c[(c[h>>2]|0)+4>>2]=(c[h>>2]|0)+32;a[(c[h>>2]|0)+13>>0]=1;a[(c[h>>2]|0)+14>>0]=0;c[(c[h>>2]|0)+16>>2]=c[(c[e>>2]|0)+52>>2];c[(c[e>>2]|0)+52>>2]=c[h>>2];c[k>>2]=(c[k>>2]|0)+(c[(c[e>>2]|0)+12>>2]|0);c[f>>2]=(c[f>>2]|0)+1}}while(0);c[d>>2]=(c[(c[e>>2]|0)+52>>2]|0)!=0&1;o=c[d>>2]|0;i=l;return o|0}function Hu(){return c[77]|0}function Iu(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;d=e;f=e+8|0;b=e+4|0;c[f>>2]=a;c[f>>2]=(c[f>>2]|0)+7&-8;c[b>>2]=_Q((c[f>>2]|0)+8|0)|0;a=c[f>>2]|0;if(c[b>>2]|0){f=c[b>>2]|0;c[f>>2]=a;c[f+4>>2]=((a|0)<0)<<31>>31;c[b>>2]=(c[b>>2]|0)+8;f=c[b>>2]|0;i=e;return f|0}else{c[d>>2]=a;Rd(7,27278,d);f=c[b>>2]|0;i=e;return f|0}return 0}function Ju(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];c[d>>2]=(c[d>>2]|0)+-8;$Q(c[d>>2]|0);i=b;return}function Ku(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;d=h+16|0;e=h+12|0;f=h+8|0;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[d>>2];c[f>>2]=(c[f>>2]|0)+-8;c[f>>2]=bR(c[f>>2]|0,(c[e>>2]|0)+8|0)|0;if(c[f>>2]|0){a=c[e>>2]|0;g=c[f>>2]|0;c[g>>2]=a;c[g+4>>2]=((a|0)<0)<<31>>31;c[f>>2]=(c[f>>2]|0)+8;g=c[f>>2]|0;i=h;return g|0}else{b=Lu(c[d>>2]|0)|0;a=c[e>>2]|0;c[g>>2]=b;c[g+4>>2]=a;Rd(7,27242,g);g=c[f>>2]|0;i=h;return g|0}return 0}function Lu(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=c[e>>2];c[b>>2]=(c[b>>2]|0)+-8;i=d;return c[c[b>>2]>>2]|0}function Mu(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)+7&-8|0}function Nu(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return 0}function Ou(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return}function Pu(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=Yb[c[e>>2]&255](1612,0)|0;if(!(c[b>>2]|0)){e=c[b>>2]|0;i=d;return e|0}c[c[b>>2]>>2]=-1;e=c[b>>2]|0;i=d;return e|0}function Qu(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;n=o+24|0;m=o+20|0;h=o+16|0;l=o+12|0;j=o+8|0;f=o+4|0;g=o;c[m>>2]=b;c[h>>2]=e;a:do switch(d[40089+(d[c[m>>2]>>0]|0)>>0]|0){case 7:{c[l>>2]=1;while(1){if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&1))break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=159;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}case 11:{if((d[(c[m>>2]|0)+1>>0]|0)!=45){c[c[h>>2]>>2]=90;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}c[l>>2]=2;while(1){k=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=k;if(!((k|0)!=0?(c[j>>2]|0)!=10:0))break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=159;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}case 17:{c[c[h>>2]>>2]=22;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 18:{c[c[h>>2]>>2]=23;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 19:{c[c[h>>2]>>2]=1;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 20:{c[c[h>>2]>>2]=89;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 21:{c[c[h>>2]>>2]=91;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 16:{if((d[(c[m>>2]|0)+1>>0]|0)==42?(d[(c[m>>2]|0)+2>>0]|0)!=0:0){c[l>>2]=3;c[j>>2]=d[(c[m>>2]|0)+2>>0];while(1){if((c[j>>2]|0)==42?(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)==47:0)break;k=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=k;if(!k)break;c[l>>2]=(c[l>>2]|0)+1}if(c[j>>2]|0)c[l>>2]=(c[l>>2]|0)+1;c[c[h>>2]>>2]=159;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}c[c[h>>2]>>2]=92;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 22:{c[c[h>>2]>>2]=93;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 14:{c[c[h>>2]>>2]=79;c[n>>2]=1+((d[(c[m>>2]|0)+1>>0]|0)==61&1);n=c[n>>2]|0;i=o;return n|0}case 12:{m=d[(c[m>>2]|0)+1>>0]|0;c[j>>2]=m;if((m|0)==61){c[c[h>>2]>>2]=81;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}if((c[j>>2]|0)==62){c[c[h>>2]>>2]=78;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}f=c[h>>2]|0;if((c[j>>2]|0)==60){c[f>>2]=87;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=82;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}}case 13:{m=d[(c[m>>2]|0)+1>>0]|0;c[j>>2]=m;if((m|0)==61){c[c[h>>2]>>2]=83;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}f=c[h>>2]|0;if((c[j>>2]|0)==62){c[f>>2]=88;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=80;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}}case 15:{f=c[h>>2]|0;if((d[(c[m>>2]|0)+1>>0]|0)!=61){c[f>>2]=160;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=78;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}}case 10:{f=c[h>>2]|0;if((d[(c[m>>2]|0)+1>>0]|0)!=124){c[f>>2]=86;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=94;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}}case 23:{c[c[h>>2]>>2]=26;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 24:{c[c[h>>2]>>2]=85;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 25:{c[c[h>>2]>>2]=96;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}case 8:{c[f>>2]=d[c[m>>2]>>0];c[l>>2]=1;while(1){k=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=k;if(!k)break;if((c[j>>2]|0)==(c[f>>2]|0)){if((d[(c[m>>2]|0)+((c[l>>2]|0)+1)>>0]|0)!=(c[f>>2]|0))break;c[l>>2]=(c[l>>2]|0)+1}c[l>>2]=(c[l>>2]|0)+1}if((c[j>>2]|0)==39){c[c[h>>2]>>2]=97;c[n>>2]=(c[l>>2]|0)+1;n=c[n>>2]|0;i=o;return n|0}f=c[h>>2]|0;if(c[j>>2]|0){c[f>>2]=27;c[n>>2]=(c[l>>2]|0)+1;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=160;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}}case 26:{if(d[19267+(d[(c[m>>2]|0)+1>>0]|0)>>0]&4)k=64;else{c[c[h>>2]>>2]=122;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}break}case 3:{k=64;break}case 9:{c[l>>2]=1;c[j>>2]=d[c[m>>2]>>0];while(1){if((c[j>>2]|0)==93)break;k=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=k;if(!k)break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=(c[j>>2]|0)==93?27:160;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}case 6:{c[c[h>>2]>>2]=135;c[l>>2]=1;while(1){f=c[l>>2]|0;if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&4))break;c[l>>2]=f+1}c[n>>2]=f;n=c[n>>2]|0;i=o;return n|0}case 5:case 4:{c[g>>2]=0;c[c[h>>2]>>2]=135;c[l>>2]=1;while(1){b=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=b;if(!b)break;if(d[19267+(c[j>>2]&255)>>0]&70)c[g>>2]=(c[g>>2]|0)+1;else{if((c[j>>2]|0)==40&(c[g>>2]|0)>0){k=107;break}if((c[j>>2]|0)!=58)break;if((d[(c[m>>2]|0)+((c[l>>2]|0)+1)>>0]|0)!=58)break;c[l>>2]=(c[l>>2]|0)+1}c[l>>2]=(c[l>>2]|0)+1}do if((k|0)==107){while(1){c[l>>2]=(c[l>>2]|0)+1;k=d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0;c[j>>2]=k;if(!k)break;if((c[j>>2]|0)!=41?(d[19267+(c[j>>2]&255)>>0]&1|0)==0:0)k=107;else break}if((c[j>>2]|0)==41){c[l>>2]=(c[l>>2]|0)+1;break}else{c[c[h>>2]>>2]=160;break}}while(0);if(!(c[g>>2]|0))c[c[h>>2]>>2]=160;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}case 1:{c[l>>2]=1;while(1){f=c[l>>2]|0;if((d[40089+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]|0)>1)break;c[l>>2]=f+1}if(d[19267+(d[(c[m>>2]|0)+f>>0]|0)>>0]&70){c[l>>2]=(c[l>>2]|0)+1;break a}c[c[h>>2]>>2]=27;c[n>>2]=Oi(c[m>>2]|0,c[l>>2]|0,c[h>>2]|0)|0;n=c[n>>2]|0;i=o;return n|0}case 0:{if((d[(c[m>>2]|0)+1>>0]|0)==39){c[c[h>>2]>>2]=134;c[l>>2]=2;while(1){f=c[l>>2]|0;if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&8))break;c[l>>2]=f+1}if(!((d[(c[m>>2]|0)+f>>0]|0)==39?((c[l>>2]|0)%2|0|0)==0:0))k=131;b:do if((k|0)==131){c[c[h>>2]>>2]=160;while(1){if(!(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0))break b;if((d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)==39)break b;c[l>>2]=(c[l>>2]|0)+1}}while(0);if(a[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)c[l>>2]=(c[l>>2]|0)+1;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}else k=138;break}case 2:{k=138;break}default:{c[c[h>>2]>>2]=160;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}}while(0);if((k|0)==64){c[c[h>>2]>>2]=132;do if((d[c[m>>2]>>0]|0)==48){if((d[(c[m>>2]|0)+1>>0]|0)!=120?(d[(c[m>>2]|0)+1>>0]|0)!=88:0)break;if(d[19267+(d[(c[m>>2]|0)+2>>0]|0)>>0]&8){c[l>>2]=3;while(1){f=c[l>>2]|0;if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&8))break;c[l>>2]=f+1}c[n>>2]=f;n=c[n>>2]|0;i=o;return n|0}}while(0);c[l>>2]=0;while(1){f=c[l>>2]|0;if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&4))break;c[l>>2]=f+1}if((d[(c[m>>2]|0)+f>>0]|0)==46){c[l>>2]=(c[l>>2]|0)+1;while(1){if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&4))break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=133}if(!((d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)!=101?(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)!=69:0))k=82;do if((k|0)==82){if(!(d[19267+(d[(c[m>>2]|0)+((c[l>>2]|0)+1)>>0]|0)>>0]&4)){if((d[(c[m>>2]|0)+((c[l>>2]|0)+1)>>0]|0)!=43?(d[(c[m>>2]|0)+((c[l>>2]|0)+1)>>0]|0)!=45:0)break;if(!(d[19267+(d[(c[m>>2]|0)+((c[l>>2]|0)+2)>>0]|0)>>0]&4))break}c[l>>2]=(c[l>>2]|0)+2;while(1){if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&4))break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=133}while(0);while(1){if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&70))break;c[c[h>>2]>>2]=160;c[l>>2]=(c[l>>2]|0)+1}c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}else if((k|0)==138)c[l>>2]=1;while(1){if(!(d[19267+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&70))break;c[l>>2]=(c[l>>2]|0)+1}c[c[h>>2]>>2]=27;c[n>>2]=c[l>>2];n=c[n>>2]|0;i=o;return n|0}function Ru(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;m=o+32|0;p=o+28|0;j=o+24|0;h=o+20|0;l=o+8|0;k=o+4|0;n=o;c[p>>2]=d;c[j>>2]=e;c[h>>2]=g;c[n>>2]=c[p>>2];if((c[c[n>>2]>>2]|0)<0){c[c[n>>2]>>2]=0;c[(c[n>>2]|0)+4>>2]=-1;b[(c[n>>2]|0)+12>>1]=0;a[(c[n>>2]|0)+12+2>>0]=0}c[l>>2]=c[f>>2];c[l+4>>2]=c[f+4>>2];c[(c[n>>2]|0)+8>>2]=c[h>>2];while(1){c[k>>2]=cv(c[n>>2]|0,c[j>>2]&255)|0;h=c[k>>2]|0;do if((c[k>>2]|0)>976){g=c[n>>2]|0;if((h|0)<=1304){ev(g,(c[k>>2]|0)-977|0);break}else{p=c[j>>2]|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];fv(g,p,m);av(c[n>>2]|0,c[j>>2]&255,l);c[j>>2]=253;break}}else{if((h|0)>435)c[k>>2]=(c[k>>2]|0)+328;dv(c[n>>2]|0,c[k>>2]|0,c[j>>2]|0,l);p=(c[n>>2]|0)+4|0;c[p>>2]=(c[p>>2]|0)+-1;c[j>>2]=253}while(0);if((c[j>>2]|0)==253){h=13;break}if((c[c[n>>2]>>2]|0)<0){h=13;break}}if((h|0)==13){i=o;return}}function Su(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;g=f+8|0;d=f+4|0;e=f;c[g>>2]=a;c[d>>2]=b;c[e>>2]=c[g>>2];while(1){if((c[c[e>>2]>>2]|0)<0)break;$u(c[e>>2]|0)}Qb[c[d>>2]&255](c[e>>2]|0);i=f;return}function Tu(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(!(c[b>>2]|0)){i=e;return}c[d>>2]=c[c[b>>2]>>2];Rf(c[d>>2]|0,c[b>>2]|0);a=c[(c[b>>2]|0)+52>>2]|0;if(c[(c[b>>2]|0)+48>>2]|0)c[(c[(c[b>>2]|0)+48>>2]|0)+52>>2]=a;else c[(c[d>>2]|0)+4>>2]=a;if(c[(c[b>>2]|0)+52>>2]|0)c[(c[(c[b>>2]|0)+52>>2]|0)+48>>2]=c[(c[b>>2]|0)+48>>2];c[(c[b>>2]|0)+40>>2]=-1241070648;c[c[b>>2]>>2]=0;Sf(c[d>>2]|0,c[b>>2]|0);i=e;return}function Uu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=h;return}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;c[g>>2]=(c[e>>2]|0)+8+(c[f>>2]<<4);Vu(c[d>>2]|0,c[(c[g>>2]|0)+4>>2]|0);Wu(c[d>>2]|0,c[(c[g>>2]|0)+8>>2]|0);Sf(c[d>>2]|0,c[c[g>>2]>>2]|0);c[f>>2]=(c[f>>2]|0)+1}Sf(c[d>>2]|0,c[e>>2]|0);i=h;return}function Vu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;d=h+12|0;e=h+8|0;f=h+4|0;g=h;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=h;return}c[g>>2]=c[(c[e>>2]|0)+4>>2];c[f>>2]=0;while(1){a=c[d>>2]|0;if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;Zu(a,c[c[g>>2]>>2]|0);Sf(c[d>>2]|0,c[(c[g>>2]|0)+4>>2]|0);Sf(c[d>>2]|0,c[(c[g>>2]|0)+8>>2]|0);c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+20}Sf(a,c[(c[e>>2]|0)+4>>2]|0);Sf(c[d>>2]|0,c[e>>2]|0);i=h;return}function Wu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;Xu(c[f>>2]|0,c[e>>2]|0,1);i=d;return}function Xu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;while(1){if(!(c[f>>2]|0))break;c[h>>2]=c[(c[f>>2]|0)+52>>2];Vu(c[e>>2]|0,c[c[f>>2]>>2]|0);Yu(c[e>>2]|0,c[(c[f>>2]|0)+32>>2]|0);Zu(c[e>>2]|0,c[(c[f>>2]|0)+36>>2]|0);Vu(c[e>>2]|0,c[(c[f>>2]|0)+40>>2]|0);Zu(c[e>>2]|0,c[(c[f>>2]|0)+44>>2]|0);Vu(c[e>>2]|0,c[(c[f>>2]|0)+48>>2]|0);Zu(c[e>>2]|0,c[(c[f>>2]|0)+60>>2]|0);Zu(c[e>>2]|0,c[(c[f>>2]|0)+64>>2]|0);Uu(c[e>>2]|0,c[(c[f>>2]|0)+68>>2]|0);if(c[g>>2]|0)Sf(c[e>>2]|0,c[f>>2]|0);c[f>>2]=c[h>>2];c[g>>2]=1}i=j;return}function Yu(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=j;return}c[h>>2]=(c[f>>2]|0)+8;c[g>>2]=0;while(1){a=c[e>>2]|0;if((c[g>>2]|0)>=(c[c[f>>2]>>2]|0))break;Sf(a,c[(c[h>>2]|0)+4>>2]|0);Sf(c[e>>2]|0,c[(c[h>>2]|0)+8>>2]|0);Sf(c[e>>2]|0,c[(c[h>>2]|0)+12>>2]|0);if((d[(c[h>>2]|0)+36+1>>0]|0)>>>1&1)Sf(c[e>>2]|0,c[(c[h>>2]|0)+64>>2]|0);if((d[(c[h>>2]|0)+36+1>>0]|0)>>>2&1)Vu(c[e>>2]|0,c[(c[h>>2]|0)+64>>2]|0);Qf(c[e>>2]|0,c[(c[h>>2]|0)+16>>2]|0);Wu(c[e>>2]|0,c[(c[h>>2]|0)+20>>2]|0);Zu(c[e>>2]|0,c[(c[h>>2]|0)+48>>2]|0);_u(c[e>>2]|0,c[(c[h>>2]|0)+52>>2]|0);c[g>>2]=(c[g>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+72}Sf(a,c[f>>2]|0);i=j;return}function Zu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=f;return}do if(!(c[(c[e>>2]|0)+4>>2]&16384)){Zu(c[d>>2]|0,c[(c[e>>2]|0)+12>>2]|0);Zu(c[d>>2]|0,c[(c[e>>2]|0)+16>>2]|0);if(c[(c[e>>2]|0)+4>>2]&65536)Sf(c[d>>2]|0,c[(c[e>>2]|0)+8>>2]|0);a=c[d>>2]|0;b=(c[e>>2]|0)+20|0;if(c[(c[e>>2]|0)+4>>2]&2048){Wu(a,c[b>>2]|0);break}else{Vu(a,c[b>>2]|0);break}}while(0);if(c[(c[e>>2]|0)+4>>2]&32768){i=f;return}Sf(c[d>>2]|0,c[e>>2]|0);i=f;return}function _u(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=g;return}c[f>>2]=0;while(1){a=c[d>>2]|0;if((c[f>>2]|0)>=(c[(c[e>>2]|0)+4>>2]|0))break;Sf(a,c[(c[c[e>>2]>>2]|0)+(c[f>>2]<<3)>>2]|0);c[f>>2]=(c[f>>2]|0)+1}Sf(a,c[c[e>>2]>>2]|0);Sf(c[d>>2]|0,c[e>>2]|0);i=g;return}function $u(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=b;g=c[f>>2]|0;b=c[g>>2]|0;c[g>>2]=b+-1;c[e>>2]=(c[f>>2]|0)+12+(b<<4);av(c[f>>2]|0,a[(c[e>>2]|0)+2>>0]|0,(c[e>>2]|0)+4|0);i=d;return}function av(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;j=i;i=i+16|0;l=j+8|0;k=j+12|0;g=j+4|0;h=j;c[l>>2]=b;a[k>>0]=e;c[g>>2]=f;c[h>>2]=c[(c[l>>2]|0)+8>>2];do switch(d[k>>0]|0|0){case 208:case 197:case 196:case 163:{Wu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 175:case 174:{Zu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 227:case 220:case 211:case 210:case 209:case 206:case 204:case 201:case 189:case 188:case 179:{Vu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 214:case 213:case 202:case 195:{Yu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 251:case 198:{Uu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 242:case 237:case 228:case 226:case 217:case 205:case 203:{Zu(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 222:case 219:case 218:{_u(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 238:case 233:{bv(c[c[h>>2]>>2]|0,c[c[g>>2]>>2]|0);i=j;return}case 235:{_u(c[c[h>>2]>>2]|0,c[(c[g>>2]|0)+4>>2]|0);i=j;return}default:{i=j;return}}while(0)}function bv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[e>>2];c[e>>2]=c[(c[e>>2]|0)+28>>2];Zu(c[d>>2]|0,c[(c[f>>2]|0)+16>>2]|0);Vu(c[d>>2]|0,c[(c[f>>2]|0)+20>>2]|0);Wu(c[d>>2]|0,c[(c[f>>2]|0)+8>>2]|0);_u(c[d>>2]|0,c[(c[f>>2]|0)+24>>2]|0);Sf(c[d>>2]|0,c[f>>2]|0)}i=g;return}function cv(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+32|0;h=p+16|0;q=p+12|0;j=p+21|0;k=p+8|0;n=p+4|0;l=p+20|0;m=p;c[q>>2]=f;a[j>>0]=g;c[n>>2]=e[(c[q>>2]|0)+12+(c[c[q>>2]>>2]<<4)>>1];if((c[n>>2]|0)>=977){c[h>>2]=c[n>>2];q=c[h>>2]|0;i=p;return q|0}while(1){c[k>>2]=b[15538+(c[n>>2]<<1)>>1];if((c[k>>2]|0)==-89){o=4;break}c[k>>2]=(c[k>>2]|0)+(d[j>>0]|0);if(!((c[k>>2]|0)<0|(c[k>>2]|0)>=1501)?(d[38518+(c[k>>2]|0)>>0]|0)==(d[j>>0]|0):0){o=15;break}if((d[j>>0]|0)<=0)break;if((d[j>>0]|0)>>>0>=70){o=11;break}q=a[40019+(d[j>>0]|0)>>0]|0;a[l>>0]=q;if(!(q&255)){o=11;break}a[j>>0]=a[l>>0]|0}if((o|0)==4){c[h>>2]=e[16410+(c[n>>2]<<1)>>1];q=c[h>>2]|0;i=p;return q|0}else if((o|0)==11){c[m>>2]=(c[k>>2]|0)-(d[j>>0]|0)+70;if((c[m>>2]|0)>=0&(c[m>>2]|0)<1501?(d[38518+(c[m>>2]|0)>>0]|0)==70:0){c[h>>2]=e[12532+(c[m>>2]<<1)>>1];q=c[h>>2]|0;i=p;return q|0}}else if((o|0)==15){c[h>>2]=e[12532+(c[k>>2]<<1)>>1];q=c[h>>2]|0;i=p;return q|0}c[h>>2]=e[16410+(c[n>>2]<<1)>>1];q=c[h>>2]|0;i=p;return q|0}function dv(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;f=c[h>>2]|0;c[f>>2]=(c[f>>2]|0)+1;f=c[h>>2]|0;if((c[c[h>>2]>>2]|0)>=100){gH(f,c[l>>2]|0);i=n;return}else{c[m>>2]=(c[h>>2]|0)+12+(c[f>>2]<<4);b[c[m>>2]>>1]=c[j>>2];a[(c[m>>2]|0)+2>>0]=c[k>>2];m=(c[m>>2]|0)+4|0;l=c[l>>2]|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];i=n;return}}function ev(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;$=i;i=i+256|0;M=$+40|0;L=$+32|0;O=$+24|0;N=$+16|0;R=$+8|0;K=$;U=$+248|0;V=$+244|0;X=$+240|0;W=$+236|0;Y=$+224|0;Z=$+220|0;_=$+216|0;T=$+212|0;I=$+200|0;J=$+188|0;j=$+168|0;k=$+164|0;y=$+160|0;r=$+156|0;o=$+152|0;P=$+144|0;z=$+136|0;p=$+132|0;l=$+128|0;A=$+124|0;q=$+120|0;n=$+116|0;v=$+112|0;w=$+108|0;B=$+104|0;C=$+100|0;E=$+96|0;D=$+92|0;F=$+88|0;G=$+84|0;H=$+80|0;s=$+76|0;t=$+72|0;u=$+68|0;x=$+64|0;Q=$+60|0;m=$+56|0;h=$+48|0;c[U>>2]=f;c[V>>2]=g;c[T>>2]=c[(c[U>>2]|0)+8>>2];c[Z>>2]=(c[U>>2]|0)+12+(c[c[U>>2]>>2]<<4);c[Y>>2]=c[1265];c[Y+4>>2]=c[1266];c[Y+8>>2]=c[1267];a:do switch(c[V>>2]|0){case 6:{a[(c[T>>2]|0)+453>>0]=1;break}case 7:{a[(c[T>>2]|0)+453>>0]=2;break}case 8:{gv(c[T>>2]|0);break}case 9:{hv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 13:{c[Y>>2]=7;break}case 117:case 115:case 16:case 15:case 14:{c[Y>>2]=d[(c[Z>>2]|0)+2>>0];break}case 18:case 17:{iv(c[T>>2]|0);break}case 19:{jv(c[T>>2]|0);break}case 22:{kv(c[T>>2]|0,0,(c[Z>>2]|0)+4|0);break}case 23:{kv(c[T>>2]|0,1,(c[Z>>2]|0)+4|0);break}case 24:{kv(c[T>>2]|0,2,(c[Z>>2]|0)+4|0);break}case 26:{lv(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0,c[(c[Z>>2]|0)+-64+4>>2]|0,0,0,c[(c[Z>>2]|0)+-32+4>>2]|0);break}case 27:{mv(c[T>>2]|0);T=(c[Z>>2]|0)+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];break}case 247:case 222:case 219:case 124:case 108:case 97:case 85:case 83:case 81:case 68:case 34:case 31:case 28:{c[Y>>2]=0;break}case 248:case 223:case 220:case 107:case 84:case 69:case 30:case 29:{c[Y>>2]=1;break}case 32:{nv(c[T>>2]|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+-16+4|0,c[(c[Z>>2]|0)+4>>2]&255,0);break}case 33:{nv(c[T>>2]|0,0,0,0,c[(c[Z>>2]|0)+4>>2]|0);Wu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 35:{if((c[(c[Z>>2]|0)+4+4>>2]|0)==5?(zd(c[(c[Z>>2]|0)+4>>2]|0,25592,5)|0)==0:0){c[Y>>2]=96;break a}c[Y>>2]=0;T=c[T>>2]|0;S=c[(c[Z>>2]|0)+4>>2]|0;c[K>>2]=c[(c[Z>>2]|0)+4+4>>2];c[K+4>>2]=S;Ah(T,27365,K);break}case 38:{c[Y>>2]=c[(c[Z>>2]|0)+-32+4>>2];c[Y+4>>2]=(c[(c[T>>2]|0)+508>>2]|0)-(c[(c[Z>>2]|0)+-32+4>>2]|0)+(c[(c[T>>2]|0)+508+4>>2]|0);break}case 39:{ov(c[T>>2]|0,(c[Z>>2]|0)+4|0);S=(c[Z>>2]|0)+4|0;c[Y>>2]=c[S>>2];c[Y+4>>2]=c[S+4>>2];c[(c[T>>2]|0)+328+4>>2]=0;break}case 280:case 264:case 263:case 262:case 261:case 260:case 259:case 258:case 257:case 151:case 142:case 131:case 130:case 48:case 45:case 42:case 41:case 40:{T=(c[Z>>2]|0)+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];break}case 44:{pv(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 46:{c[Y>>2]=c[(c[Z>>2]|0)+-48+4>>2];c[Y+4>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0)-(c[(c[Z>>2]|0)+-48+4>>2]|0);break}case 47:{c[Y>>2]=c[(c[Z>>2]|0)+-80+4>>2];c[Y+4>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0)-(c[(c[Z>>2]|0)+-80+4>>2]|0);break}case 49:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];c[Y+4>>2]=(c[(c[Z>>2]|0)+4+4>>2]|0)+((c[(c[Z>>2]|0)+4>>2]|0)-(c[(c[Z>>2]|0)+-16+4>>2]|0));break}case 92:case 54:{T=(c[T>>2]|0)+328|0;S=(c[Z>>2]|0)+4|0;c[T>>2]=c[S>>2];c[T+4>>2]=c[S+4>>2];break}case 57:case 55:{qv(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 56:{qv(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0);break}case 58:{c[I>>2]=rv(c[T>>2]|0,155,c[(c[Z>>2]|0)+4>>2]|0,0,0)|0;c[I+4>>2]=c[(c[Z>>2]|0)+-16+4>>2];c[I+8>>2]=c[(c[Z>>2]|0)+4+8>>2];qv(c[T>>2]|0,I);break}case 59:{sv(J,c[T>>2]|0,97,(c[Z>>2]|0)+4|0);qv(c[T>>2]|0,J);break}case 61:{tv(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 62:{uv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0);break}case 63:{vv(c[T>>2]|0,0,0,0,0,c[(c[Z>>2]|0)+4>>2]|0,0,0,0,0)|0;break}case 64:{wv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 65:{xv(c[T>>2]|0,0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 66:{yv(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 67:{zv(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 70:{c[Y>>2]=0;break}case 71:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2]&~c[(c[Z>>2]|0)+4+4>>2]|c[(c[Z>>2]|0)+4>>2];break}case 73:case 72:{c[Y>>2]=0;c[Y+4>>2]=0;break}case 74:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];c[Y+4>>2]=255;break}case 75:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2]<<8;c[Y+4>>2]=65280;break}case 76:{c[Y>>2]=7;break}case 77:{c[Y>>2]=8;break}case 78:{c[Y>>2]=9;break}case 79:{c[Y>>2]=6;break}case 80:{c[Y>>2]=0;break}case 178:case 103:case 102:case 100:case 98:case 82:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 86:{c[Y+4>>2]=0;c[Y>>2]=0;break}case 87:{T=(c[Z>>2]|0)+-16+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];break}case 90:{c[(c[T>>2]|0)+328+4>>2]=0;break}case 93:{uv(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,0);break}case 94:{vv(c[T>>2]|0,0,0,0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,0,0,0,0)|0;break}case 95:{wv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0);break}case 96:{xv(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,(c[Z>>2]|0)+-48+4|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);yv(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 101:case 99:{c[Y>>2]=10;break}case 104:{c[Y>>2]=4;break}case 179:case 105:{c[Y>>2]=5;break}case 106:{Av(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 109:{Bv(c[T>>2]|0,(c[Z>>2]|0)+-128+4|0,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+-48+4|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-112+4>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0);break}case 110:{Av(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,1,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 111:{c[j>>2]=c[1268];c[j+4>>2]=c[1269];c[j+8>>2]=c[1270];c[j+12>>2]=c[1271];c[j+16>>2]=c[1272];Cv(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,j)|0;Wu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 112:{c[k>>2]=c[(c[Z>>2]|0)+4>>2];if(c[k>>2]|0){c[(c[k>>2]|0)+68>>2]=c[(c[Z>>2]|0)+-16+4>>2];Dv(c[T>>2]|0,c[k>>2]|0)}else Uu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);c[Y>>2]=c[k>>2];break}case 119:case 113:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 114:{c[y>>2]=c[(c[Z>>2]|0)+4>>2];c[r>>2]=c[(c[Z>>2]|0)+-32+4>>2];if((c[y>>2]|0)!=0?(c[(c[y>>2]|0)+52>>2]|0)!=0:0){c[P+4>>2]=0;Dv(c[T>>2]|0,c[y>>2]|0);c[o>>2]=Ev(c[T>>2]|0,0,0,0,P,c[y>>2]|0,0,0)|0;c[y>>2]=Fv(c[T>>2]|0,0,c[o>>2]|0,0,0,0,0,0,0,0)|0}if(c[y>>2]|0){a[(c[y>>2]|0)+4>>0]=c[(c[Z>>2]|0)+-16+4>>2];c[(c[y>>2]|0)+52>>2]=c[r>>2];if(c[r>>2]|0){S=(c[r>>2]|0)+6|0;b[S>>1]=e[S>>1]&-513}S=(c[y>>2]|0)+6|0;b[S>>1]=e[S>>1]&-513;if((c[(c[Z>>2]|0)+-16+4>>2]|0)!=116)a[(c[T>>2]|0)+22>>0]=1}else Wu(c[c[T>>2]>>2]|0,c[r>>2]|0);c[Y>>2]=c[y>>2];break}case 116:{c[Y>>2]=116;break}case 118:{c[Y>>2]=Fv(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+-112+4>>2]&65535,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+4+4>>2]|0)|0;break}case 120:{c[Y>>2]=Fv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,0,0,0,0,0,256,0,0)|0;break}case 121:{c[p>>2]=c[(c[Z>>2]|0)+-64+4>>2];c[z>>2]=Fv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,0,0,0,0,0,768,0,0)|0;if(c[p>>2]|0){T=(c[p>>2]|0)+6|0;b[T>>1]=e[T>>1]&-513}if(c[z>>2]|0){a[(c[z>>2]|0)+4>>0]=116;c[p>>2]=c[(c[Z>>2]|0)+-64+4>>2];c[(c[z>>2]|0)+52>>2]=c[p>>2];c[Y>>2]=c[z>>2];break a}else{c[Y>>2]=c[p>>2];break a}}case 122:{c[Y>>2]=1;break}case 123: -{c[Y>>2]=2;break}case 244:case 125:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];break}case 243:case 237:case 162:case 155:case 126:{c[Y>>2]=0;break}case 127:{c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;if((c[(c[Z>>2]|0)+4+4>>2]|0)>>>0>0)Hv(c[T>>2]|0,c[Y>>2]|0,(c[Z>>2]|0)+4|0,1);Iv(c[T>>2]|0,c[Y>>2]|0,(c[Z>>2]|0)+-16+4|0);break}case 128:{c[l>>2]=Jv(c[c[T>>2]>>2]|0,158,0)|0;c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[l>>2]|0)|0;break}case 129:{c[A>>2]=rv(c[T>>2]|0,158,0,0,(c[Z>>2]|0)+4|0)|0;c[q>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+-32+4|0)|0;c[n>>2]=rv(c[T>>2]|0,122,c[q>>2]|0,c[A>>2]|0,0)|0;c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,c[n>>2]|0)|0;break}case 132:{c[Y+4>>2]=0;break}case 133:{c[Y>>2]=ph(c[c[T>>2]>>2]|0,80,0)|0;break}case 134:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];Kv(c[Y>>2]|0);break}case 135:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];if((c[Y>>2]|0)!=0?(c[c[Y>>2]>>2]|0)>0:0)a[(c[Y>>2]|0)+8+(((c[c[Y>>2]>>2]|0)-1|0)*72|0)+36>>0]=c[(c[Z>>2]|0)+4>>2];break}case 136:{c[Y>>2]=0;break}case 137:{c[Y>>2]=Ev(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,(c[Z>>2]|0)+-80+4|0,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+-48+4|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;Lv(c[T>>2]|0,c[Y>>2]|0,(c[Z>>2]|0)+-32+4|0);break}case 138:{c[Y>>2]=Ev(c[T>>2]|0,c[(c[Z>>2]|0)+-128+4>>2]|0,(c[Z>>2]|0)+-112+4|0,(c[Z>>2]|0)+-96+4|0,(c[Z>>2]|0)+-32+4|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;Mv(c[T>>2]|0,c[Y>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0);break}case 139:{c[Y>>2]=Ev(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,0,0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 140:{if((((c[(c[Z>>2]|0)+-96+4>>2]|0)==0?(c[(c[Z>>2]|0)+-32+4+4>>2]|0)==0:0)?(c[(c[Z>>2]|0)+-16+4>>2]|0)==0:0)?(c[(c[Z>>2]|0)+4>>2]|0)==0:0){c[Y>>2]=c[(c[Z>>2]|0)+-64+4>>2];break a}if((c[c[(c[Z>>2]|0)+-64+4>>2]>>2]|0)!=1){Kv(c[(c[Z>>2]|0)+-64+4>>2]|0);c[B>>2]=Fv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-64+4>>2]|0,0,0,0,0,1024,0,0)|0;c[Y>>2]=Ev(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,0,0,(c[Z>>2]|0)+-32+4|0,c[B>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break a}c[Y>>2]=Ev(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,0,0,(c[Z>>2]|0)+-32+4|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;if(c[Y>>2]|0){c[v>>2]=(c[Y>>2]|0)+8+(((c[c[Y>>2]>>2]|0)-1|0)*72|0);c[w>>2]=(c[(c[Z>>2]|0)+-64+4>>2]|0)+8;c[(c[v>>2]|0)+8>>2]=c[(c[w>>2]|0)+8>>2];c[(c[v>>2]|0)+4>>2]=c[(c[w>>2]|0)+4>>2];c[(c[v>>2]|0)+20>>2]=c[(c[w>>2]|0)+20>>2];c[(c[w>>2]|0)+4>>2]=0;c[(c[w>>2]|0)+8>>2]=0;c[(c[w>>2]|0)+20>>2]=0}Yu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0);break}case 150:case 141:{c[Y>>2]=0;c[Y+4>>2]=0;break}case 143:{c[Y>>2]=Nv(c[c[T>>2]>>2]|0,0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0)|0;break}case 144:{c[Y>>2]=1;break}case 145:{c[Y>>2]=Ov(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0,0,0)|0;break}case 146:{c[Y>>2]=Ov(c[T>>2]|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+-16+4|0,0)|0;break}case 147:{c[Y>>2]=Ov(c[T>>2]|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+-16+4|0)|0;break}case 234:case 232:case 172:case 165:case 148:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 235:case 233:case 171:case 164:case 149:{c[Y>>2]=0;break}case 152:{c[Y>>2]=0;c[Y+4>>2]=1;break}case 181:case 153:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];break}case 180:case 154:{c[Y>>2]=0;break}case 236:case 163:case 156:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 157:{c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;Pv(c[Y>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 158:{c[Y>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;Pv(c[Y>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 159:{c[Y>>2]=0;break}case 160:{c[Y>>2]=1;break}case 161:{c[Y>>2]=-1;break}case 166:{c[Y>>2]=0;c[Y+4>>2]=0;break}case 167:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];c[Y+4>>2]=0;break}case 168:{c[Y>>2]=c[(c[Z>>2]|0)+-32+4>>2];c[Y+4>>2]=c[(c[Z>>2]|0)+4>>2];break}case 169:{c[Y+4>>2]=c[(c[Z>>2]|0)+-32+4>>2];c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 170:{Qv(c[T>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0,1);Lv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,(c[Z>>2]|0)+-16+4|0);Rv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 173:{Qv(c[T>>2]|0,c[(c[Z>>2]|0)+-112+4>>2]|0,1);Lv(c[T>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,(c[Z>>2]|0)+-48+4|0);Sv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,27392);Tv(c[T>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0);break}case 174:{c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;Hv(c[T>>2]|0,c[Y>>2]|0,(c[Z>>2]|0)+-32+4|0,1);break}case 175:{c[Y>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+4>>2]|0)|0;Hv(c[T>>2]|0,c[Y>>2]|0,(c[Z>>2]|0)+-32+4|0,1);break}case 176:{Qv(c[T>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0,1);Uv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0);break}case 177:{Qv(c[T>>2]|0,c[(c[Z>>2]|0)+-96+4>>2]|0,1);Uv(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]|0);break}case 182:{c[Y>>2]=Vv(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,(c[Z>>2]|0)+4|0)|0;break}case 183:{c[Y>>2]=Vv(c[c[T>>2]>>2]|0,0,(c[Z>>2]|0)+4|0)|0;break}case 184:{T=(c[Z>>2]|0)+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];c[Y+8>>2]=c[T+8>>2];break}case 185:{c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];Wv(Y,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0);break}case 192:case 191:case 186:{sv(Y,c[T>>2]|0,d[(c[Z>>2]|0)+2>>0]|0,(c[Z>>2]|0)+4|0);break}case 188:case 187:{sv(Y,c[T>>2]|0,27,(c[Z>>2]|0)+4|0);break}case 189:{c[C>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+-32+4|0)|0;c[E>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+4|0)|0;c[Y>>2]=rv(c[T>>2]|0,122,c[C>>2]|0,c[E>>2]|0,0)|0;Wv(Y,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0);break}case 190:{c[D>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+-64+4|0)|0;c[F>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+-32+4|0)|0;c[G>>2]=rv(c[T>>2]|0,27,0,0,(c[Z>>2]|0)+4|0)|0;c[H>>2]=rv(c[T>>2]|0,122,c[F>>2]|0,c[G>>2]|0,0)|0;c[Y>>2]=rv(c[T>>2]|0,122,c[D>>2]|0,c[H>>2]|0,0)|0;Wv(Y,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+4|0);break}case 193:{do if(((c[(c[Z>>2]|0)+4+4>>2]|0)>>>0>=2?(a[c[(c[Z>>2]|0)+4>>2]>>0]|0)==35:0)?(d[19267+(d[(c[(c[Z>>2]|0)+4>>2]|0)+1>>0]|0)>>0]&4|0)!=0:0){h=c[T>>2]|0;j=(c[Z>>2]|0)+4|0;if(!(d[(c[T>>2]|0)+18>>0]|0)){c[R>>2]=j;Ah(h,27341,R);c[Y>>2]=0;break}c[Y>>2]=rv(h,157,0,0,j)|0;if(c[Y>>2]|0)Li((c[(c[Z>>2]|0)+4>>2]|0)+1|0,(c[Y>>2]|0)+28|0)|0}else S=161;while(0);if((S|0)==161){sv(Y,c[T>>2]|0,135,(c[Z>>2]|0)+4|0);Xv(c[T>>2]|0,c[Y>>2]|0)}Wv(Y,(c[Z>>2]|0)+4|0,(c[Z>>2]|0)+4|0);break}case 194:{c[Y>>2]=Yv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,(c[Z>>2]|0)+4|0,1)|0;c[Y+4>>2]=c[(c[Z>>2]|0)+-32+4+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 195:{c[Y>>2]=rv(c[T>>2]|0,38,c[(c[Z>>2]|0)+-48+4>>2]|0,0,(c[Z>>2]|0)+-16+4|0)|0;Wv(Y,(c[Z>>2]|0)+-80+4|0,(c[Z>>2]|0)+4|0);break}case 196:{if((c[(c[Z>>2]|0)+-16+4>>2]|0)!=0?(c[c[(c[Z>>2]|0)+-16+4>>2]>>2]|0)>(c[(c[c[T>>2]>>2]|0)+88+24>>2]|0):0){S=c[T>>2]|0;c[N>>2]=(c[Z>>2]|0)+-64+4;Ah(S,27401,N)}c[Y>>2]=Zv(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,(c[Z>>2]|0)+-64+4|0)|0;Wv(Y,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+4|0);if((c[(c[Z>>2]|0)+-32+4>>2]|0)==1?(c[Y>>2]|0)!=0:0){T=(c[Y>>2]|0)+4|0;c[T>>2]=c[T>>2]|16}break}case 197:{c[Y>>2]=Zv(c[T>>2]|0,0,(c[Z>>2]|0)+-48+4|0)|0;Wv(Y,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+4|0);break}case 198:{c[Y>>2]=Zv(c[T>>2]|0,0,(c[Z>>2]|0)+4|0)|0;Wv(Y,(c[Z>>2]|0)+4|0,(c[Z>>2]|0)+4|0);break}case 206:case 205:case 204:case 203:case 202:case 201:case 200:case 199:{_v(Y,c[T>>2]|0,d[(c[Z>>2]|0)+-16+2>>0]|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0);break}case 207:{T=(c[Z>>2]|0)+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];c[Y+8>>2]=0;break}case 208:{T=(c[Z>>2]|0)+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];c[Y+8>>2]=1;break}case 209:{c[s>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+4>>2]|0)|0;c[s>>2]=Gv(c[T>>2]|0,c[s>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0)|0;c[Y>>2]=Zv(c[T>>2]|0,c[s>>2]|0,(c[Z>>2]|0)+-16+4|0)|0;$v(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4+8>>2]|0,Y);c[Y+4>>2]=c[(c[Z>>2]|0)+-32+4+4>>2];c[Y+8>>2]=c[(c[Z>>2]|0)+4+8>>2];if(c[Y>>2]|0){T=(c[Y>>2]|0)+4|0;c[T>>2]=c[T>>2]|128}break}case 210:{c[t>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-32+4>>2]|0)|0;c[t>>2]=Gv(c[T>>2]|0,c[t>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0)|0;c[t>>2]=Gv(c[T>>2]|0,c[t>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;c[Y>>2]=Zv(c[T>>2]|0,c[t>>2]|0,(c[Z>>2]|0)+-48+4|0)|0;$v(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4+8>>2]|0,Y);c[Y+4>>2]=c[(c[Z>>2]|0)+-64+4+4>>2];c[Y+8>>2]=c[(c[Z>>2]|0)+4+8>>2];if(c[Y>>2]|0){T=(c[Y>>2]|0)+4|0;c[T>>2]=c[T>>2]|128}break}case 211:{aw(Y,c[T>>2]|0,d[(c[Z>>2]|0)+2>>0]|0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0);break}case 212:{aw(Y,c[T>>2]|0,77,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0);break}case 213:{_v(Y,c[T>>2]|0,73,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0);bw(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[Y>>2]|0,76);break}case 214:{_v(Y,c[T>>2]|0,148,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+4|0);bw(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[Y>>2]|0,77);break}case 216:case 215:{cw(Y,c[T>>2]|0,d[(c[Z>>2]|0)+-16+2>>0]|0,(c[Z>>2]|0)+4|0,(c[Z>>2]|0)+-16+4|0);break}case 217:{cw(Y,c[T>>2]|0,155,(c[Z>>2]|0)+4|0,(c[Z>>2]|0)+-16+4|0);break}case 218:{cw(Y,c[T>>2]|0,156,(c[Z>>2]|0)+4|0,(c[Z>>2]|0)+-16+4|0);break}case 221:{c[u>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-32+4>>2]|0)|0;c[u>>2]=Gv(c[T>>2]|0,c[u>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;c[Y>>2]=rv(c[T>>2]|0,74,c[(c[Z>>2]|0)+-64+4>>2]|0,0,0)|0;if(c[Y>>2]|0)c[(c[Y>>2]|0)+20>>2]=c[u>>2];else Vu(c[c[T>>2]>>2]|0,c[u>>2]|0);$v(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,Y);c[Y+4>>2]=c[(c[Z>>2]|0)+-64+4+4>>2];c[Y+8>>2]=c[(c[Z>>2]|0)+4+8>>2];break}case 224:{do if(!(c[(c[Z>>2]|0)+-16+4>>2]|0)){c[Y>>2]=rv(c[T>>2]|0,132,0,0,5092+(c[(c[Z>>2]|0)+-48+4>>2]<<3)|0)|0;Zu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0)}else{if((c[c[(c[Z>>2]|0)+-16+4>>2]>>2]|0)==1){c[x>>2]=c[c[(c[(c[Z>>2]|0)+-16+4>>2]|0)+4>>2]>>2];c[c[(c[(c[Z>>2]|0)+-16+4>>2]|0)+4>>2]>>2]=0;Vu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);if(c[x>>2]|0){S=(c[x>>2]|0)+4|0;c[S>>2]=c[S>>2]&-257;S=(c[x>>2]|0)+4|0;c[S>>2]=c[S>>2]|512}c[Y>>2]=rv(c[T>>2]|0,(c[(c[Z>>2]|0)+-48+4>>2]|0)!=0?78:79,c[(c[Z>>2]|0)+-64+4>>2]|0,c[x>>2]|0,0)|0;break}c[Y>>2]=rv(c[T>>2]|0,75,c[(c[Z>>2]|0)+-64+4>>2]|0,0,0)|0;if(c[Y>>2]|0){c[(c[Y>>2]|0)+20>>2]=c[(c[Z>>2]|0)+-16+4>>2];dw(c[T>>2]|0,c[Y>>2]|0)}else Vu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);$v(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,Y)}while(0);c[Y+4>>2]=c[(c[Z>>2]|0)+-64+4+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 225:{c[Y>>2]=rv(c[T>>2]|0,119,0,0,0)|0;if(c[Y>>2]|0){c[(c[Y>>2]|0)+20>>2]=c[(c[Z>>2]|0)+-16+4>>2];S=(c[Y>>2]|0)+4|0;c[S>>2]=c[S>>2]|2099200;dw(c[T>>2]|0,c[Y>>2]|0)}else Wu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);c[Y+4>>2]=c[(c[Z>>2]|0)+-32+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 226:{c[Y>>2]=rv(c[T>>2]|0,75,c[(c[Z>>2]|0)+-64+4>>2]|0,0,0)|0;if(c[Y>>2]|0){c[(c[Y>>2]|0)+20>>2]=c[(c[Z>>2]|0)+-16+4>>2];S=(c[Y>>2]|0)+4|0;c[S>>2]=c[S>>2]|2099200;dw(c[T>>2]|0,c[Y>>2]|0)}else Wu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);$v(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,Y);c[Y+4>>2]=c[(c[Z>>2]|0)+-64+4+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 227:{c[Q>>2]=Nv(c[c[T>>2]>>2]|0,0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0)|0;c[Y>>2]=rv(c[T>>2]|0,75,c[(c[Z>>2]|0)+-48+4>>2]|0,0,0)|0;h=c[T>>2]|0;if(c[Y>>2]|0){S=Fv(h,0,c[Q>>2]|0,0,0,0,0,0,0,0)|0;c[(c[Y>>2]|0)+20>>2]=S;S=(c[Y>>2]|0)+4|0;c[S>>2]=c[S>>2]|2099200;dw(c[T>>2]|0,c[Y>>2]|0)}else Yu(c[h>>2]|0,c[Q>>2]|0);$v(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,Y);c[Y+4>>2]=c[(c[Z>>2]|0)+-48+4+4>>2];h=c[Z>>2]|0;if(c[(c[Z>>2]|0)+4>>2]|0)h=(c[(c[Z>>2]|0)+4>>2]|0)+(c[h+4+4>>2]|0)|0;else h=(c[(c[Z>>2]|0)+-16+4>>2]|0)+(c[h+-16+4+4>>2]|0)|0;c[Y+8>>2]=h;break}case 228:{S=rv(c[T>>2]|0,20,0,0,0)|0;c[Y>>2]=S;c[m>>2]=S;if(c[m>>2]|0){c[(c[m>>2]|0)+20>>2]=c[(c[Z>>2]|0)+-16+4>>2];S=(c[m>>2]|0)+4|0;c[S>>2]=c[S>>2]|2099200;dw(c[T>>2]|0,c[m>>2]|0)}else Wu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);c[Y+4>>2]=c[(c[Z>>2]|0)+-48+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 229:{c[Y>>2]=rv(c[T>>2]|0,136,c[(c[Z>>2]|0)+-48+4>>2]|0,0,0)|0;if(c[Y>>2]|0){if(c[(c[Z>>2]|0)+-16+4>>2]|0)h=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;else h=c[(c[Z>>2]|0)+-32+4>>2]|0;c[(c[Y>>2]|0)+20>>2]=h;dw(c[T>>2]|0,c[Y>>2]|0)}else{Vu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0);Zu(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)}c[Y+4>>2]=c[(c[Z>>2]|0)+-64+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 230:{c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0)|0;c[Y>>2]=Gv(c[T>>2]|0,c[Y>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 231:{c[Y>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+-32+4>>2]|0)|0;c[Y>>2]=Gv(c[T>>2]|0,c[Y>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 238:{c[Y>>2]=Gv(c[T>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 239:{c[Y>>2]=Gv(c[T>>2]|0,0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 240:{vv(c[T>>2]|0,(c[Z>>2]|0)+-112+4|0,(c[Z>>2]|0)+-96+4|0,Nv(c[c[T>>2]>>2]|0,0,(c[Z>>2]|0)+-64+4|0,0)|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+-160+4>>2]|0,(c[Z>>2]|0)+-176+4|0,c[(c[Z>>2]|0)+4>>2]|0,0,c[(c[Z>>2]|0)+-128+4>>2]|0)|0;break}case 292:case 241:{c[Y>>2]=2;break}case 242:{c[Y>>2]=0;break}case 245:{c[Y>>2]=ew(c[T>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 246:{c[Y>>2]=ew(c[T>>2]|0,0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 249:{fw(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 251:case 250:{gw(c[T>>2]|0);break}case 252:{hw(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0,0,0);break}case 253:{hw(c[T>>2]|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0,0);break}case 254:{hw(c[T>>2]|0,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-16+4|0,0);break}case 255:{hw(c[T>>2]|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0,1);break}case 256:{hw(c[T>>2]|0,(c[Z>>2]|0)+-64+4|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-16+4|0,1);break}case 265:{c[h>>2]=c[(c[Z>>2]|0)+-48+4>>2];c[h+4>>2]=(c[(c[Z>>2]|0)+4>>2]|0)-(c[(c[Z>>2]|0)+-48+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);iw(c[T>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,h);break}case 266:{jw(c[T>>2]|0,(c[Z>>2]|0)+-112+4|0,(c[Z>>2]|0)+-96+4|0,c[(c[Z>>2]|0)+-80+4>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-64+4+4>>2]|0,c[(c[Z>>2]|0)+-32+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-160+4>>2]|0,c[(c[Z>>2]|0)+-128+4>>2]|0);h=c[Z>>2]|0;if(!(c[(c[Z>>2]|0)+-96+4+4>>2]|0)){T=h+-112+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];break a}else{T=h+-96+4|0;c[Y>>2]=c[T>>2];c[Y+4>>2]=c[T+4>>2];break a}}case 270:case 267:{c[Y>>2]=35;break}case 268:{c[Y>>2]=31;break}case 269:{c[Y>>2]=49;break}case 272:case 271:{c[Y>>2]=d[(c[Z>>2]|0)+2>>0];c[Y+4>>2]=0;break}case 273:{c[Y>>2]=110;c[Y+4>>2]=c[(c[Z>>2]|0)+4>>2];break}case 297:case 276:{c[Y>>2]=0;break}case 298:case 277:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 278:{c[(c[(c[(c[Z>>2]|0)+-32+4>>2]|0)+32>>2]|0)+28>>2]=c[(c[Z>>2]|0)+-16+4>>2];c[(c[(c[Z>>2]|0)+-32+4>>2]|0)+32>>2]=c[(c[Z>>2]|0)+-16+4>>2];c[Y>>2]=c[(c[Z>>2]|0)+-32+4>>2];break}case 279:{c[(c[(c[Z>>2]|0)+-16+4>>2]|0)+32>>2]=c[(c[Z>>2]|0)+-16+4>>2];c[Y>>2]=c[(c[Z>>2]|0)+-16+4>>2];break}case 281:{S=(c[Z>>2]|0)+4|0;c[Y>>2]=c[S>>2];c[Y+4>>2]=c[S+4>>2];Ah(c[T>>2]|0,27435,O);break}case 283:{Ah(c[T>>2]|0,27530,L);break}case 284:{Ah(c[T>>2]|0,27614,M);break}case 285:{c[Y>>2]=kw(c[c[T>>2]>>2]|0,(c[Z>>2]|0)+-64+4|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-80+4>>2]&255)|0;break}case 286:{c[Y>>2]=lw(c[c[T>>2]>>2]|0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-64+4>>2]&255)|0;break}case 287:{c[Y>>2]=mw(c[c[T>>2]>>2]|0,(c[Z>>2]|0)+-32+4|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 288:{c[Y>>2]=nw(c[c[T>>2]>>2]|0,c[(c[Z>>2]|0)+4>>2]|0)|0;break}case 289:{c[Y>>2]=rv(c[T>>2]|0,57,0,0,0)|0;if(c[Y>>2]|0)a[(c[Y>>2]|0)+1>>0]=4;c[Y+4>>2]=c[(c[Z>>2]|0)+-48+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 290:{c[Y>>2]=rv(c[T>>2]|0,57,0,0,(c[Z>>2]|0)+-16+4|0)|0;if(c[Y>>2]|0)a[(c[Y>>2]|0)+1>>0]=c[(c[Z>>2]|0)+-48+4>>2];c[Y+4>>2]=c[(c[Z>>2]|0)+-80+4>>2];c[Y+8>>2]=(c[(c[Z>>2]|0)+4>>2]|0)+(c[(c[Z>>2]|0)+4+4>>2]|0);break}case 291:{c[Y>>2]=1;break}case 293:{c[Y>>2]=3;break}case 294:{ow(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0);break}case 295:{pw(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 296:{qw(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 301:{rw(c[T>>2]|0,0,0);break}case 302:{rw(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0);break}case 303:{sw(c[T>>2]|0,0,0);break}case 304:{sw(c[T>>2]|0,(c[Z>>2]|0)+-16+4|0,(c[Z>>2]|0)+4|0);break}case 305:{tw(c[T>>2]|0,c[(c[Z>>2]|0)+-48+4>>2]|0,(c[Z>>2]|0)+4|0);break}case 306:{uw(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 307:{mv(c[T>>2]|0);vw(c[T>>2]|0,c[(c[Z>>2]|0)+4>>2]|0);break}case 310:{ww(c[T>>2]|0,0);break}case 311:{ww(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 312:{xw(c[T>>2]|0,(c[Z>>2]|0)+-48+4|0,(c[Z>>2]|0)+-32+4|0,(c[Z>>2]|0)+4|0,c[(c[Z>>2]|0)+-64+4>>2]|0);break}case 315:{yw(c[T>>2]|0);break}case 319:case 318:case 317:{zw(c[T>>2]|0,(c[Z>>2]|0)+4|0);break}case 323:{c[Y>>2]=0;break}case 325:case 324:{c[Y>>2]=c[(c[Z>>2]|0)+4>>2];break}case 326:{c[Y>>2]=Aw(c[T>>2]|0,0,(c[Z>>2]|0)+-80+4|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;break}case 327:{c[Y>>2]=Aw(c[T>>2]|0,c[(c[Z>>2]|0)+-112+4>>2]|0,(c[Z>>2]|0)+-80+4|0,c[(c[Z>>2]|0)+-64+4>>2]|0,c[(c[Z>>2]|0)+-16+4>>2]|0)|0;break}default:{}}while(0);c[X>>2]=d[27699+(c[V>>2]<<1)>>0];c[_>>2]=d[27699+(c[V>>2]<<1)+1>>0];V=c[U>>2]|0;c[V>>2]=(c[V>>2]|0)-(c[_>>2]|0);c[W>>2]=Bw(e[(c[Z>>2]|0)+(0-(c[_>>2]|0)<<4)>>1]|0,c[X>>2]&255)|0;if((c[W>>2]|0)>976){Cw(c[U>>2]|0);i=$;return}if((c[W>>2]|0)>435)c[W>>2]=(c[W>>2]|0)+328;h=c[U>>2]|0;if(c[_>>2]|0){c[h>>2]=(c[h>>2]|0)+1;c[Z>>2]=(c[Z>>2]|0)+(0-((c[_>>2]|0)-1)<<4);b[c[Z>>2]>>1]=c[W>>2];a[(c[Z>>2]|0)+2>>0]=c[X>>2];_=(c[Z>>2]|0)+4|0;c[_>>2]=c[Y>>2];c[_+4>>2]=c[Y+4>>2];c[_+8>>2]=c[Y+8>>2];i=$;return}else{dv(h,c[W>>2]|0,c[X>>2]|0,Y);i=$;return}}function fv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e;f=e+12|0;g=e+4|0;c[f>>2]=a;c[e+8>>2]=b;c[g>>2]=c[(c[f>>2]|0)+8>>2];a=c[g>>2]|0;c[h>>2]=d;Ah(a,27341,h);c[(c[f>>2]|0)+8>>2]=c[g>>2];i=e;return}function gv(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;k=m+16|0;h=m+12|0;g=m+8|0;l=m+4|0;j=m;c[e>>2]=b;c[f>>2]=c[c[e>>2]>>2];if(a[(c[e>>2]|0)+18>>0]|0){i=m;return}if((d[(c[f>>2]|0)+65>>0]|0)==0?(c[(c[e>>2]|0)+68>>2]|0)==0:0){c[k>>2]=Pw(c[e>>2]|0)|0;do if(c[k>>2]|0){do{}while((mA(c[k>>2]|0,61)|0)!=0);Yw(c[k>>2]|0,21)|0;if(!(d[(c[f>>2]|0)+65>>0]|0)){if((c[(c[e>>2]|0)+340>>2]|0)==0?(c[(c[e>>2]|0)+324>>2]|0)==0:0)break;Fz(c[k>>2]|0,0);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;if(((c[(c[e>>2]|0)+340>>2]&1<>2]|0)!=0|0)!=0?(Hh(c[k>>2]|0,c[h>>2]|0),Eh(c[k>>2]|0,2,c[h>>2]|0,(c[(c[e>>2]|0)+336>>2]&1<>2]|0)!=0&1,c[(c[e>>2]|0)+344+(c[h>>2]<<2)>>2]|0,c[(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+12>>2]|0)+4>>2]|0)|0,(d[(c[f>>2]|0)+140+5>>0]|0)==0):0)Fh(c[k>>2]|0,1);c[h>>2]=(c[h>>2]|0)+1}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+456>>2]|0))break;c[l>>2]=Ax(c[f>>2]|0,c[(c[(c[e>>2]|0)+524>>2]|0)+(c[g>>2]<<2)>>2]|0)|0;Uw(c[k>>2]|0,149,0,0,0,c[l>>2]|0,-10)|0;c[g>>2]=(c[g>>2]|0)+1}c[(c[e>>2]|0)+456>>2]=0;eH(c[e>>2]|0);fH(c[e>>2]|0);a:do if(c[(c[e>>2]|0)+324>>2]|0){c[j>>2]=c[(c[e>>2]|0)+324>>2];a[(c[e>>2]|0)+23>>0]=0;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[c[j>>2]>>2]|0))break a;xA(c[e>>2]|0,c[(c[(c[j>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0,c[(c[(c[j>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)+16>>2]|0);c[g>>2]=(c[g>>2]|0)+1}}while(0);Ez(c[k>>2]|0,1)|0}}while(0);if(((c[k>>2]|0)!=0?(c[(c[e>>2]|0)+68>>2]|0)==0:0)?(a[(c[f>>2]|0)+65>>0]|0)==0:0){if((c[(c[e>>2]|0)+412>>2]|0)!=0?(c[(c[e>>2]|0)+72>>2]|0)==0:0)c[(c[e>>2]|0)+72>>2]=1;Jh(c[k>>2]|0,c[e>>2]|0);c[(c[e>>2]|0)+12>>2]=101;i=m;return}c[(c[e>>2]|0)+12>>2]=1;i=m;return}if(c[(c[e>>2]|0)+12>>2]|0){i=m;return}c[(c[e>>2]|0)+12>>2]=1;i=m;return}function hv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;d=j+16|0;e=j+12|0;f=j+8|0;h=j+4|0;g=j;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[c[d>>2]>>2];if(Mw(c[d>>2]|0,22,38426,0,0)|0){i=j;return}c[h>>2]=Pw(c[d>>2]|0)|0;if(!(c[h>>2]|0)){i=j;return}a:do if((c[e>>2]|0)!=7){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break a;Rw(c[h>>2]|0,2,c[g>>2]|0,((c[e>>2]|0)==9&1)+1|0)|0;Hh(c[h>>2]|0,c[g>>2]|0);c[g>>2]=(c[g>>2]|0)+1}}while(0);Yw(c[h>>2]|0,1)|0;i=j;return}function iv(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(Mw(c[b>>2]|0,22,38449,0,0)|0){i=e;return}c[d>>2]=Pw(c[b>>2]|0)|0;if(!(c[d>>2]|0)){i=e;return}xz(c[d>>2]|0,1,1)|0;i=e;return}function jv(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;if(Mw(c[b>>2]|0,22,38440,0,0)|0){i=e;return}c[d>>2]=Pw(c[b>>2]|0)|0;if(!(c[d>>2]|0)){i=e;return}Rw(c[d>>2]|0,1,1,1)|0;i=e;return}function kv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+16|0;f=j+12|0;k=j+8|0;h=j+4|0;g=j;c[e>>2]=a;c[f>>2]=b;c[k>>2]=d;c[h>>2]=Dw(c[c[e>>2]>>2]|0,c[k>>2]|0)|0;if(!(c[h>>2]|0)){i=j;return}c[g>>2]=Pw(c[e>>2]|0)|0;if((c[g>>2]|0)!=0?(Mw(c[e>>2]|0,32,c[6348+(c[f>>2]<<2)>>2]|0,c[h>>2]|0,0)|0)==0:0){Uw(c[g>>2]|0,0,c[f>>2]|0,0,0,c[h>>2]|0,-1)|0;i=j;return}Sf(c[c[e>>2]>>2]|0,c[h>>2]|0);i=j;return}function lv(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=i;i=i+112|0;t=J+16|0;G=J+8|0;s=J;w=J+96|0;m=J+92|0;n=J+88|0;o=J+84|0;x=J+80|0;y=J+76|0;z=J+72|0;r=J+68|0;H=J+64|0;A=J+60|0;F=J+56|0;I=J+52|0;B=J+48|0;u=J+44|0;v=J+40|0;p=J+36|0;q=J+32|0;C=J+28|0;D=J+24|0;E=J+20|0;c[w>>2]=e;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[x>>2]=j;c[y>>2]=k;c[z>>2]=l;c[H>>2]=0;c[A>>2]=c[c[w>>2]>>2];if((d[(c[A>>2]|0)+140+5>>0]|0)!=0?(c[(c[A>>2]|0)+140>>2]|0)==1:0){c[I>>2]=d[(c[A>>2]|0)+140+4>>0];c[H>>2]=nh(c[A>>2]|0,(c[I>>2]|0)==1?20769:20788)|0;c[B>>2]=c[m>>2]}else{c[I>>2]=tz(c[w>>2]|0,c[m>>2]|0,c[n>>2]|0,B)|0;if((c[I>>2]|0)<0){i=J;return}if((c[o>>2]|0)!=0?(c[I>>2]|0)!=1?(c[(c[n>>2]|0)+4>>2]|0)>>>0>0:0:0){Ah(c[w>>2]|0,38316,s);i=J;return}if(c[o>>2]|0)c[I>>2]=1;c[H>>2]=Dw(c[A>>2]|0,c[B>>2]|0)|0}s=(c[w>>2]|0)+500|0;e=c[B>>2]|0;c[s>>2]=c[e>>2];c[s+4>>2]=c[e+4>>2];if(!(c[H>>2]|0)){i=J;return}a:do if(!(yx(c[w>>2]|0,c[H>>2]|0)|0)){if((d[(c[A>>2]|0)+140+4>>0]|0)==1)c[o>>2]=1;c[u>>2]=c[(c[(c[A>>2]|0)+16>>2]|0)+(c[I>>2]<<4)>>2];if(!(Mw(c[w>>2]|0,18,(c[o>>2]|0)==1?20769:20788,0,c[u>>2]|0)|0)){if((c[y>>2]|0)==0?(Mw(c[w>>2]|0,d[38357+((c[o>>2]|0)+(c[x>>2]<<1))>>0]|0,c[H>>2]|0,0,c[u>>2]|0)|0)!=0:0)break;do if(!(a[(c[w>>2]|0)+454>>0]|0)){c[v>>2]=c[(c[(c[A>>2]|0)+16>>2]|0)+(c[I>>2]<<4)>>2];if(pz(c[w>>2]|0)|0)break a;c[r>>2]=pi(c[A>>2]|0,c[H>>2]|0,c[v>>2]|0)|0;if(!(c[r>>2]|0)){if(!(Fj(c[A>>2]|0,c[H>>2]|0,c[v>>2]|0)|0))break;I=c[w>>2]|0;c[t>>2]=c[H>>2];Ah(I,38385,t);break a}m=c[w>>2]|0;if(c[z>>2]|0){bx(m,c[I>>2]|0);break a}else{c[G>>2]=c[B>>2];Ah(m,38361,G);break a}}while(0);c[r>>2]=ph(c[A>>2]|0,72,0)|0;if(!(c[r>>2]|0)){c[(c[w>>2]|0)+12>>2]=7;I=(c[w>>2]|0)+68|0;c[I>>2]=(c[I>>2]|0)+1;break}c[c[r>>2]>>2]=c[H>>2];b[(c[r>>2]|0)+32>>1]=-1;c[(c[r>>2]|0)+64>>2]=c[(c[(c[A>>2]|0)+16>>2]|0)+(c[I>>2]<<4)+12>>2];b[(c[r>>2]|0)+36>>1]=1;b[(c[r>>2]|0)+38>>1]=200;c[(c[w>>2]|0)+488>>2]=c[r>>2];if((a[(c[w>>2]|0)+18>>0]|0)==0?(yQ(c[H>>2]|0,29688)|0)==0:0)c[(c[(c[r>>2]|0)+64>>2]|0)+72>>2]=c[r>>2];if(a[(c[A>>2]|0)+140+5>>0]|0){i=J;return}H=Pw(c[w>>2]|0)|0;c[F>>2]=H;if(!H){i=J;return}ax(c[w>>2]|0,1,c[I>>2]|0);if(c[y>>2]|0)Yw(c[F>>2]|0,149)|0;H=(c[w>>2]|0)+76|0;m=(c[H>>2]|0)+1|0;c[H>>2]=m;c[(c[w>>2]|0)+392>>2]=m;c[C>>2]=m;m=(c[w>>2]|0)+76|0;H=(c[m>>2]|0)+1|0;c[m>>2]=H;c[(c[w>>2]|0)+396>>2]=H;c[D>>2]=H;H=(c[w>>2]|0)+76|0;m=(c[H>>2]|0)+1|0;c[H>>2]=m;c[E>>2]=m;Vw(c[F>>2]|0,51,c[I>>2]|0,c[E>>2]|0,2)|0;Hh(c[F>>2]|0,c[I>>2]|0);c[p>>2]=xz(c[F>>2]|0,45,c[E>>2]|0)|0;c[q>>2]=(c[(c[A>>2]|0)+24>>2]&32768|0)!=0?1:4;Vw(c[F>>2]|0,52,c[I>>2]|0,2,c[q>>2]|0)|0;Vw(c[F>>2]|0,52,c[I>>2]|0,5,d[(c[A>>2]|0)+62>>0]|0)|0;Fz(c[F>>2]|0,c[p>>2]|0);m=c[F>>2]|0;if((c[x>>2]|0)!=0|(c[y>>2]|0)!=0)Rw(m,22,0,c[D>>2]|0)|0;else{H=Rw(m,122,c[I>>2]|0,c[D>>2]|0)|0;c[(c[w>>2]|0)+424>>2]=H}dH(c[w>>2]|0,c[I>>2]|0);Rw(c[F>>2]|0,74,0,c[C>>2]|0)|0;Uw(c[F>>2]|0,27,6,c[E>>2]|0,0,38420,-2)|0;Vw(c[F>>2]|0,75,0,c[E>>2]|0,c[C>>2]|0)|0;Fh(c[F>>2]|0,8);Yw(c[F>>2]|0,61)|0;i=J;return}}while(0);Sf(c[A>>2]|0,c[H>>2]|0);i=J;return}function mv(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;b=(c[e>>2]|0)+24|0;a[b>>0]=(a[b>>0]|0)+1<<24>>24;b=(c[c[e>>2]>>2]|0)+248|0;c[b>>2]=(c[b>>2]|0)+1;i=d;return}function nv(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=i;i=i+208|0;K=R+72|0;I=R+64|0;M=R+32|0;L=R+16|0;J=R+8|0;H=R;k=R+192|0;l=R+188|0;m=R+184|0;n=R+196|0;o=R+180|0;w=R+176|0;r=R+172|0;t=R+168|0;z=R+164|0;u=R+160|0;G=R+156|0;P=R+152|0;Q=R+148|0;O=R+144|0;s=R+124|0;F=R+120|0;q=R+116|0;D=R+112|0;E=R+108|0;p=R+104|0;C=R+100|0;y=R+96|0;x=R+92|0;A=R+88|0;B=R+84|0;N=R+80|0;v=R+76|0;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;a[n>>0]=h;c[o>>2]=j;c[r>>2]=c[c[k>>2]>>2];if((c[m>>2]|0)==0&(c[o>>2]|0)==0){i=R;return}c[w>>2]=c[(c[k>>2]|0)+488>>2];if(!(c[w>>2]|0)){i=R;return}if((a[(c[r>>2]|0)+140+5>>0]|0)!=0?(c[(c[w>>2]|0)+28>>2]=c[(c[r>>2]|0)+140>>2],(c[(c[w>>2]|0)+28>>2]|0)==1):0){h=(c[w>>2]|0)+42|0;a[h>>0]=d[h>>0]|1}do if(d[n>>0]&32){if(d[(c[w>>2]|0)+42>>0]&8){Ah(c[k>>2]|0,37995,H);i=R;return}if(!(d[(c[w>>2]|0)+42>>0]&4)){H=c[k>>2]|0;c[J>>2]=c[c[w>>2]>>2];Ah(H,38045,J);break}else{J=(c[w>>2]|0)+42|0;a[J>>0]=d[J>>0]|96;ZG(c[k>>2]|0,c[w>>2]|0);break}}while(0);c[t>>2]=Dh(c[r>>2]|0,c[(c[w>>2]|0)+64>>2]|0)|0;if(c[(c[w>>2]|0)+24>>2]|0)SG(c[k>>2]|0,c[w>>2]|0,4,0,c[(c[w>>2]|0)+24>>2]|0);_G(c[w>>2]|0);c[z>>2]=c[(c[w>>2]|0)+8>>2];while(1){if(!(c[z>>2]|0))break;VG(c[z>>2]|0);c[z>>2]=c[(c[z>>2]|0)+20>>2]}if(!(a[(c[r>>2]|0)+140+5>>0]|0)){c[G>>2]=Pw(c[k>>2]|0)|0;if(!(c[G>>2]|0)){i=R;return}xz(c[G>>2]|0,61,0)|0;if(!(c[(c[w>>2]|0)+12>>2]|0)){c[P>>2]=33805;c[Q>>2]=38077}else{c[P>>2]=36955;c[Q>>2]=38083}do if(c[o>>2]|0){H=(c[k>>2]|0)+76|0;J=(c[H>>2]|0)+1|0;c[H>>2]=J;c[F>>2]=J;J=(c[k>>2]|0)+76|0;H=(c[J>>2]|0)+1|0;c[J>>2]=H;c[D>>2]=H;H=(c[k>>2]|0)+76|0;J=(c[H>>2]|0)+1|0;c[H>>2]=J;c[E>>2]=J;Bx(c[k>>2]|0);Vw(c[G>>2]|0,55,1,c[(c[k>>2]|0)+396>>2]|0,c[t>>2]|0)|0;Fh(c[G>>2]|0,16);c[(c[k>>2]|0)+72>>2]=2;c[q>>2]=(Bz(c[G>>2]|0)|0)+1;Vw(c[G>>2]|0,16,c[F>>2]|0,0,c[q>>2]|0)|0;ZA(s,13,c[F>>2]|0);Cv(c[k>>2]|0,c[o>>2]|0,s)|0;xC(c[G>>2]|0,c[F>>2]|0);Fz(c[G>>2]|0,(c[q>>2]|0)-1|0);if(c[(c[k>>2]|0)+68>>2]|0){i=R;return}c[C>>2]=Jx(c[k>>2]|0,c[o>>2]|0)|0;if(!(c[C>>2]|0)){i=R;return}else{b[(c[w>>2]|0)+34>>1]=b[(c[C>>2]|0)+34>>1]|0;c[(c[w>>2]|0)+4>>2]=c[(c[C>>2]|0)+4>>2];b[(c[C>>2]|0)+34>>1]=0;c[(c[C>>2]|0)+4>>2]=0;Qf(c[r>>2]|0,c[C>>2]|0);c[p>>2]=xz(c[G>>2]|0,18,c[s+4>>2]|0)|0;Vw(c[G>>2]|0,49,c[s+8>>2]|0,c[s+12>>2]|0,c[D>>2]|0)|0;AC(c[G>>2]|0,c[w>>2]|0,0);Rw(c[G>>2]|0,74,1,c[E>>2]|0)|0;Vw(c[G>>2]|0,75,1,c[D>>2]|0,c[E>>2]|0)|0;Ez(c[G>>2]|0,c[p>>2]|0)|0;Fz(c[G>>2]|0,c[p>>2]|0);xz(c[G>>2]|0,61,1)|0;break}}while(0);if(c[o>>2]|0)c[O>>2]=$G(c[r>>2]|0,c[w>>2]|0)|0;else{c[y>>2]=(d[n>>0]|0)!=0?(c[k>>2]|0)+508|0:c[m>>2]|0;c[u>>2]=(c[c[y>>2]>>2]|0)-(c[(c[k>>2]|0)+500>>2]|0);if((a[c[c[y>>2]>>2]>>0]|0)!=59)c[u>>2]=(c[u>>2]|0)+(c[(c[y>>2]|0)+4>>2]|0);J=c[r>>2]|0;h=c[u>>2]|0;H=c[(c[k>>2]|0)+500>>2]|0;c[L>>2]=c[Q>>2];c[L+4>>2]=h;c[L+8>>2]=H;c[O>>2]=Bh(J,38088,L)|0}Q=c[k>>2]|0;E=(c[t>>2]|0)==1?20769:20788;F=c[P>>2]|0;h=c[c[w>>2]>>2]|0;H=c[c[w>>2]>>2]|0;J=c[(c[k>>2]|0)+396>>2]|0;L=c[O>>2]|0;P=c[(c[k>>2]|0)+392>>2]|0;c[M>>2]=c[(c[(c[r>>2]|0)+16>>2]|0)+(c[t>>2]<<4)>>2];c[M+4>>2]=E;c[M+8>>2]=F;c[M+12>>2]=h;c[M+16>>2]=H;c[M+20>>2]=J;c[M+24>>2]=L;c[M+28>>2]=P;Ow(Q,38103,M);Sf(c[r>>2]|0,c[O>>2]|0);Qw(c[k>>2]|0,c[t>>2]|0);if((d[(c[w>>2]|0)+42>>0]&8|0)!=0?(c[x>>2]=(c[(c[r>>2]|0)+16>>2]|0)+(c[t>>2]<<4),(c[(c[(c[x>>2]|0)+12>>2]|0)+72>>2]|0)==0):0){Q=c[k>>2]|0;c[I>>2]=c[c[x>>2]>>2];Ow(Q,38190,I)}O=c[G>>2]|0;P=c[t>>2]|0;Q=c[r>>2]|0;c[K>>2]=c[c[w>>2]>>2];Sw(O,P,Bh(Q,38232,K)|0)}if(!(a[(c[r>>2]|0)+140+5>>0]|0)){i=R;return}c[B>>2]=c[(c[w>>2]|0)+64>>2];c[A>>2]=Oj((c[B>>2]|0)+8|0,c[c[w>>2]>>2]|0,c[w>>2]|0)|0;if(c[A>>2]|0){jh(c[r>>2]|0);i=R;return}c[(c[k>>2]|0)+488>>2]=0;Q=(c[r>>2]|0)+24|0;c[Q>>2]=c[Q>>2]|2;if(c[(c[w>>2]|0)+12>>2]|0){i=R;return}c[N>>2]=c[(c[k>>2]|0)+500>>2];if(!(c[c[l>>2]>>2]|0))c[l>>2]=c[m>>2];c[v>>2]=(c[c[l>>2]>>2]|0)-(c[N>>2]|0);Q=13+(Cx(c[N>>2]|0,c[v>>2]|0)|0)|0;c[(c[w>>2]|0)+44>>2]=Q;i=R;return}function ov(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;o=r+8|0;n=r;f=r+40|0;g=r+36|0;l=r+32|0;k=r+28|0;p=r+24|0;m=r+20|0;j=r+16|0;h=r+12|0;c[f>>2]=d;c[g>>2]=e;c[j>>2]=c[c[f>>2]>>2];d=c[(c[f>>2]|0)+488>>2]|0;c[l>>2]=d;if(!d){i=r;return}if(((b[(c[l>>2]|0)+34>>1]|0)+1|0)>(c[(c[j>>2]|0)+88+8>>2]|0)){q=c[f>>2]|0;c[n>>2]=c[c[l>>2]>>2];Ah(q,37946,n);i=r;return}c[p>>2]=Dw(c[j>>2]|0,c[g>>2]|0)|0;if(!(c[p>>2]|0)){i=r;return}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(b[(c[l>>2]|0)+34>>1]|0))break;if(!(Td(c[p>>2]|0,c[(c[(c[l>>2]|0)+4>>2]|0)+((c[k>>2]|0)*24|0)>>2]|0)|0)){q=8;break}c[k>>2]=(c[k>>2]|0)+1}if((q|0)==8){q=c[f>>2]|0;c[o>>2]=c[p>>2];Ah(q,37969,o);Sf(c[j>>2]|0,c[p>>2]|0);i=r;return}do if(!(b[(c[l>>2]|0)+34>>1]&7)){c[h>>2]=Ew(c[j>>2]|0,c[(c[l>>2]|0)+4>>2]|0,((b[(c[l>>2]|0)+34>>1]|0)+8|0)*24|0,0)|0;if(c[h>>2]|0){c[(c[l>>2]|0)+4>>2]=c[h>>2];break}Sf(c[j>>2]|0,c[p>>2]|0);i=r;return}while(0);c[m>>2]=(c[(c[l>>2]|0)+4>>2]|0)+((b[(c[l>>2]|0)+34>>1]|0)*24|0);q=c[m>>2]|0;c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[c[m>>2]>>2]=c[p>>2];a[(c[m>>2]|0)+21>>0]=65;a[(c[m>>2]|0)+22>>0]=1;q=(c[l>>2]|0)+34|0;b[q>>1]=(b[q>>1]|0)+1<<16>>16;i=r;return}function pv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=d;c[g>>2]=e;c[h>>2]=c[(c[f>>2]|0)+488>>2];if(!(c[h>>2]|0)){i=k;return}if((b[(c[h>>2]|0)+34>>1]|0)<1){i=k;return}c[j>>2]=(c[(c[h>>2]|0)+4>>2]|0)+(((b[(c[h>>2]|0)+34>>1]|0)-1|0)*24|0);Sf(c[c[f>>2]>>2]|0,c[(c[j>>2]|0)+12>>2]|0);e=Dw(c[c[f>>2]>>2]|0,c[g>>2]|0)|0;c[(c[j>>2]|0)+12>>2]=e;e=jx(c[(c[j>>2]|0)+12>>2]|0,(c[j>>2]|0)+22|0)|0;a[(c[j>>2]|0)+21>>0]=e;i=k;return}function qv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;l=m;f=m+20|0;g=m+16|0;j=m+12|0;k=m+8|0;h=m+4|0;c[f>>2]=d;c[g>>2]=e;c[h>>2]=c[c[f>>2]>>2];c[j>>2]=c[(c[f>>2]|0)+488>>2];if(!(c[j>>2]|0)){e=c[h>>2]|0;l=c[g>>2]|0;l=c[l>>2]|0;Zu(e,l);i=m;return}c[k>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(((b[(c[j>>2]|0)+34>>1]|0)-1|0)*24|0);if(YG(c[c[g>>2]>>2]|0,a[(c[h>>2]|0)+140+5>>0]|0)|0){Zu(c[h>>2]|0,c[(c[k>>2]|0)+4>>2]|0);e=ny(c[h>>2]|0,c[c[g>>2]>>2]|0,1)|0;c[(c[k>>2]|0)+4>>2]=e;Sf(c[h>>2]|0,c[(c[k>>2]|0)+8>>2]|0);e=(c[(c[g>>2]|0)+8>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0)|0;e=Iw(c[h>>2]|0,c[(c[g>>2]|0)+4>>2]|0,e,((e|0)<0)<<31>>31)|0;c[(c[k>>2]|0)+8>>2]=e;e=c[h>>2]|0;l=c[g>>2]|0;l=c[l>>2]|0;Zu(e,l);i=m;return}else{e=c[f>>2]|0;c[l>>2]=c[c[k>>2]>>2];Ah(e,37901,l);e=c[h>>2]|0;l=c[g>>2]|0;l=c[l>>2]|0;Zu(e,l);i=m;return}}function rv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;if((c[h>>2]|0)==72?(c[(c[g>>2]|0)+68>>2]|0)==0:0)c[m>>2]=az(c[c[g>>2]>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;else{c[m>>2]=cz(c[c[g>>2]>>2]|0,c[h>>2]&255,c[l>>2]|0,1)|0;dz(c[c[g>>2]>>2]|0,c[m>>2]|0,c[j>>2]|0,c[k>>2]|0)}if(!(c[m>>2]|0)){f=c[m>>2]|0;i=n;return f|0}Ey(c[g>>2]|0,c[(c[m>>2]|0)+24>>2]|0)|0;f=c[m>>2]|0;i=n;return f|0}function sv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;k=f+8|0;j=f+4|0;h=f;c[g>>2]=a;c[k>>2]=b;c[j>>2]=d;c[h>>2]=e;e=rv(c[k>>2]|0,c[j>>2]|0,0,0,c[h>>2]|0)|0;c[c[g>>2]>>2]=e;c[(c[g>>2]|0)+4>>2]=c[c[h>>2]>>2];c[(c[g>>2]|0)+8>>2]=(c[c[h>>2]>>2]|0)+(c[(c[h>>2]|0)+4>>2]|0);i=f;return}function tv(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+8|0;f=h+4|0;g=h;c[j>>2]=d;c[f>>2]=e;c[g>>2]=c[(c[j>>2]|0)+488>>2];if(!(c[g>>2]|0)){i=h;return}if((b[(c[g>>2]|0)+34>>1]|0)<1){i=h;return}a[(c[(c[g>>2]|0)+4>>2]|0)+(((b[(c[g>>2]|0)+34>>1]|0)-1|0)*24|0)+20>>0]=c[f>>2];i=h;return}function uv(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+64|0;y=z+8|0;k=z;s=z+60|0;t=z+56|0; -u=z+52|0;v=z+48|0;w=z+44|0;p=z+40|0;r=z+36|0;m=z+32|0;l=z+28|0;n=z+24|0;o=z+20|0;q=z+16|0;x=z+12|0;c[s>>2]=e;c[t>>2]=f;c[u>>2]=g;c[v>>2]=h;c[w>>2]=j;c[p>>2]=c[(c[s>>2]|0)+488>>2];c[r>>2]=0;c[m>>2]=-1;if(!(c[p>>2]|0)){x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}if(d[(c[s>>2]|0)+454>>0]|0){x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}if(d[(c[p>>2]|0)+42>>0]&4){x=c[s>>2]|0;c[k>>2]=c[c[p>>2]>>2];Ah(x,37804,k);x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}k=(c[p>>2]|0)+42|0;a[k>>0]=d[k>>0]|4;a:do if(!(c[t>>2]|0)){c[m>>2]=(b[(c[p>>2]|0)+34>>1]|0)-1;q=(c[(c[p>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+23|0;a[q>>0]=d[q>>0]|1;c[r>>2]=c[(c[(c[p>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+12>>2];c[n>>2]=1}else{c[n>>2]=c[c[t>>2]>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[n>>2]|0))break a;c[o>>2]=Tx(c[(c[(c[t>>2]|0)+4>>2]|0)+((c[l>>2]|0)*20|0)>>2]|0)|0;TG(c[o>>2]|0);b:do if((d[c[o>>2]>>0]|0)==27){c[q>>2]=c[(c[o>>2]|0)+8>>2];c[m>>2]=0;while(1){if((c[m>>2]|0)>=(b[(c[p>>2]|0)+34>>1]|0))break b;k=(Td(c[q>>2]|0,c[(c[(c[p>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)>>2]|0)|0)==0;h=c[m>>2]|0;if(k)break;c[m>>2]=h+1}k=(c[(c[p>>2]|0)+4>>2]|0)+(h*24|0)+23|0;a[k>>0]=d[k>>0]|1;c[r>>2]=c[(c[(c[p>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+12>>2]}while(0);c[l>>2]=(c[l>>2]|0)+1}}while(0);if((c[n>>2]|0)==1&(c[r>>2]|0)!=0?(r=(Td(c[r>>2]|0,19623)|0)==0,r&(c[w>>2]|0)!=1):0){b[(c[p>>2]|0)+32>>1]=c[m>>2];a[(c[p>>2]|0)+43>>0]=c[u>>2];y=(c[p>>2]|0)+42|0;a[y>>0]=d[y>>0]|c[v>>2]<<3;if(!(c[t>>2]|0)){x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}a[(c[s>>2]|0)+452>>0]=a[(c[(c[t>>2]|0)+4>>2]|0)+12>>0]|0;x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}h=c[s>>2]|0;if(c[v>>2]|0){Ah(h,37845,y);x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}c[x>>2]=vv(h,0,0,0,c[t>>2]|0,c[u>>2]|0,0,0,c[w>>2]|0,0)|0;if(c[x>>2]|0){y=(c[x>>2]|0)+55|0;a[y>>0]=a[y>>0]&-4|2}c[t>>2]=0;x=c[s>>2]|0;x=c[x>>2]|0;y=c[t>>2]|0;Vu(x,y);i=z;return}function vv(f,g,h,j,k,l,m,n,o,p){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;ya=i;i=i+352|0;ea=ya+112|0;da=ya+88|0;ca=ya+72|0;ba=ya+64|0;aa=ya+56|0;B=ya+48|0;$=ya+40|0;A=ya+32|0;z=ya+24|0;D=ya+16|0;C=ya+8|0;y=ya;F=ya+336|0;q=ya+332|0;r=ya+328|0;ra=ya+324|0;sa=ya+320|0;la=ya+316|0;G=ya+312|0;ta=ya+308|0;s=ya+304|0;H=ya+300|0;wa=ya+296|0;oa=ya+292|0;va=ya+288|0;xa=ya+284|0;Q=ya+280|0;I=ya+276|0;K=ya+272|0;x=ya+248|0;Z=ya+240|0;ua=ya+236|0;T=ya+232|0;ma=ya+228|0;W=ya+224|0;V=ya+220|0;O=ya+216|0;P=ya+212|0;ja=ya+208|0;X=ya+204|0;t=ya+200|0;v=ya+196|0;E=ya+192|0;w=ya+184|0;u=ya+180|0;R=ya+176|0;Y=ya+172|0;ia=ya+168|0;S=ya+164|0;N=ya+160|0;fa=ya+156|0;U=ya+152|0;L=ya+148|0;ga=ya+144|0;ha=ya+140|0;na=ya+136|0;_=ya+132|0;ka=ya+128|0;J=ya+124|0;M=ya+120|0;pa=ya+116|0;c[F>>2]=f;c[q>>2]=g;c[r>>2]=h;c[ra>>2]=j;c[sa>>2]=k;c[la>>2]=l;c[G>>2]=m;c[ta>>2]=n;c[s>>2]=o;c[H>>2]=p;c[wa>>2]=0;c[oa>>2]=0;c[va>>2]=0;c[xa>>2]=0;c[ua>>2]=c[c[F>>2]>>2];c[W>>2]=0;c[O>>2]=0;c[ja>>2]=0;c[X>>2]=0;a:do if((((d[(c[ua>>2]|0)+65>>0]|0)==0?(d[(c[F>>2]|0)+454>>0]|0)==0:0)?(c[(c[F>>2]|0)+68>>2]|0)<=0:0)?0==(pz(c[F>>2]|0)|0):0){p=c[F>>2]|0;if(c[ra>>2]|0){c[ma>>2]=tz(p,c[q>>2]|0,c[r>>2]|0,W)|0;if((c[ma>>2]|0)<0)break;if(((a[(c[ua>>2]|0)+140+5>>0]|0)==0?(c[oa>>2]=DB(c[F>>2]|0,c[ra>>2]|0)|0,(c[oa>>2]|0)!=0?(c[(c[r>>2]|0)+4>>2]|0)==0:0):0)?(c[(c[oa>>2]|0)+64>>2]|0)==(c[(c[(c[ua>>2]|0)+16>>2]|0)+16+12>>2]|0):0)c[ma>>2]=1;EB(x,c[F>>2]|0,c[ma>>2]|0,33970,c[W>>2]|0);FB(x,c[ra>>2]|0)|0;c[oa>>2]=_w(c[F>>2]|0,0,(c[ra>>2]|0)+8|0)|0;if(!(c[oa>>2]|0))break;if((c[ma>>2]|0)==1?(c[(c[(c[ua>>2]|0)+16>>2]|0)+(c[ma>>2]<<4)+12>>2]|0)!=(c[(c[oa>>2]|0)+64>>2]|0):0){qa=c[F>>2]|0;c[y>>2]=c[c[oa>>2]>>2];Ah(qa,37370,y);break}if(d[(c[oa>>2]|0)+42>>0]&32)c[X>>2]=Ej(c[oa>>2]|0)|0}else{c[oa>>2]=c[p+488>>2];if(!(c[oa>>2]|0))break;c[ma>>2]=Dh(c[ua>>2]|0,c[(c[oa>>2]|0)+64>>2]|0)|0}c[T>>2]=(c[(c[ua>>2]|0)+16>>2]|0)+(c[ma>>2]<<4);if(((zd(c[c[oa>>2]>>2]|0,28715,7)|0)==0?(d[(c[ua>>2]|0)+140+5>>0]|0)==0:0)?(zd((c[c[oa>>2]>>2]|0)+7|0,37420,9)|0)!=0:0){qa=c[F>>2]|0;c[C>>2]=c[c[oa>>2]>>2];Ah(qa,37430,C);break}if(c[(c[oa>>2]|0)+12>>2]|0){Ah(c[F>>2]|0,37458,D);break}if(d[(c[oa>>2]|0)+42>>0]&16){Ah(c[F>>2]|0,37483,z);break}if(c[W>>2]|0){c[xa>>2]=Dw(c[ua>>2]|0,c[W>>2]|0)|0;if(!(c[xa>>2]|0))break;if(yx(c[F>>2]|0,c[xa>>2]|0)|0)break;if((a[(c[ua>>2]|0)+140+5>>0]|0)==0?(pi(c[ua>>2]|0,c[xa>>2]|0,0)|0)!=0:0){qa=c[F>>2]|0;c[A>>2]=c[xa>>2];Ah(qa,37517,A);break}if(Fj(c[ua>>2]|0,c[xa>>2]|0,c[c[T>>2]>>2]|0)|0){p=c[F>>2]|0;if(c[H>>2]|0){bx(p,c[ma>>2]|0);break}else{c[$>>2]=c[xa>>2];Ah(p,37551,$);break}}}else{c[v>>2]=c[(c[oa>>2]|0)+8>>2];c[t>>2]=1;while(1){if(!(c[v>>2]|0))break;c[v>>2]=c[(c[v>>2]|0)+20>>2];c[t>>2]=(c[t>>2]|0)+1}$=c[ua>>2]|0;H=c[t>>2]|0;c[B>>2]=c[c[oa>>2]>>2];c[B+4>>2]=H;c[xa>>2]=Bh($,37575,B)|0;if(!(c[xa>>2]|0))break}c[E>>2]=c[c[T>>2]>>2];if((Mw(c[F>>2]|0,18,(c[ma>>2]|0)==1?20769:20788,0,c[E>>2]|0)|0)==0?(c[I>>2]=1,c[I>>2]=(c[ma>>2]|0)==1?3:1,(Mw(c[F>>2]|0,c[I>>2]|0,c[xa>>2]|0,c[c[oa>>2]>>2]|0,c[E>>2]|0)|0)==0):0){if(!(c[sa>>2]|0)){Cy(w,c[(c[(c[oa>>2]|0)+4>>2]|0)+(((b[(c[oa>>2]|0)+34>>1]|0)-1|0)*24|0)>>2]|0);$=c[F>>2]|0;c[sa>>2]=Gv($,0,cz(c[ua>>2]|0,27,w,0)|0)|0;if(!(c[sa>>2]|0))break;Pv(c[sa>>2]|0,c[s>>2]|0)}else Sv(c[F>>2]|0,c[sa>>2]|0,33970);c[I>>2]=0;while(1){if((c[I>>2]|0)>=(c[c[sa>>2]>>2]|0))break;c[u>>2]=c[(c[(c[sa>>2]|0)+4>>2]|0)+((c[I>>2]|0)*20|0)>>2];if((d[c[u>>2]>>0]|0)==95){$=1+(If(c[(c[u>>2]|0)+8>>2]|0)|0)|0;c[O>>2]=(c[O>>2]|0)+$}c[I>>2]=(c[I>>2]|0)+1}c[Q>>2]=If(c[xa>>2]|0)|0;if(c[X>>2]|0)p=e[(c[X>>2]|0)+50>>1]|0;else p=1;c[P>>2]=p;c[va>>2]=HD(c[ua>>2]|0,(c[c[sa>>2]>>2]|0)+(c[P>>2]|0)&65535,(c[Q>>2]|0)+(c[O>>2]|0)+1|0,ja)|0;if(!(a[(c[ua>>2]|0)+65>>0]|0)){c[c[va>>2]>>2]=c[ja>>2];c[ja>>2]=(c[ja>>2]|0)+((c[Q>>2]|0)+1);iR(c[c[va>>2]>>2]|0,c[xa>>2]|0,(c[Q>>2]|0)+1|0)|0;c[(c[va>>2]|0)+12>>2]=c[oa>>2];a[(c[va>>2]|0)+54>>0]=c[la>>2];$=(c[va>>2]|0)+55|0;a[$>>0]=a[$>>0]&-9|((c[la>>2]|0)!=0&1)<<3&255;$=(c[va>>2]|0)+55|0;a[$>>0]=a[$>>0]&-4|((c[W>>2]|0)!=0?0:1)&3;c[(c[va>>2]|0)+24>>2]=c[(c[(c[ua>>2]|0)+16>>2]|0)+(c[ma>>2]<<4)+12>>2];b[(c[va>>2]|0)+50>>1]=c[c[sa>>2]>>2];if(c[ta>>2]|0){SG(c[F>>2]|0,c[oa>>2]|0,16,c[ta>>2]|0,0);c[(c[va>>2]|0)+36>>2]=c[ta>>2];c[ta>>2]=0}if((d[(c[(c[T>>2]|0)+12>>2]|0)+76>>0]|0)>=4)c[Z>>2]=-1;else c[Z>>2]=0;c[I>>2]=0;c[V>>2]=c[(c[sa>>2]|0)+4>>2];while(1){if((c[I>>2]|0)>=(c[c[sa>>2]>>2]|0))break;TG(c[c[V>>2]>>2]|0);SG(c[F>>2]|0,c[oa>>2]|0,32,c[c[V>>2]>>2]|0,0);if(c[(c[F>>2]|0)+68>>2]|0)break a;c[R>>2]=Tx(c[c[V>>2]>>2]|0)|0;if((d[c[R>>2]>>0]|0)!=152){if((c[oa>>2]|0)==(c[(c[F>>2]|0)+488>>2]|0)){qa=65;break}do if(!(c[(c[va>>2]|0)+40>>2]|0)){c[S>>2]=vy(c[ua>>2]|0,c[sa>>2]|0,0)|0;c[(c[va>>2]|0)+40>>2]=c[S>>2];if(a[(c[ua>>2]|0)+65>>0]|0)break;c[V>>2]=(c[(c[S>>2]|0)+4>>2]|0)+((c[I>>2]|0)*20|0)}while(0);c[K>>2]=-2;b[(c[(c[va>>2]|0)+4>>2]|0)+(c[I>>2]<<1)>>1]=-2;$=(c[va>>2]|0)+55|0;a[$>>0]=a[$>>0]&-9}else{c[K>>2]=b[(c[R>>2]|0)+32>>1];do if((c[K>>2]|0)<0)c[K>>2]=b[(c[oa>>2]|0)+32>>1];else{if(d[(c[(c[oa>>2]|0)+4>>2]|0)+((c[K>>2]|0)*24|0)+20>>0]|0)break;$=(c[va>>2]|0)+55|0;a[$>>0]=a[$>>0]&-9}while(0);b[(c[(c[va>>2]|0)+4>>2]|0)+(c[I>>2]<<1)>>1]=c[K>>2]}c[ia>>2]=0;do if((d[c[c[V>>2]>>2]>>0]|0)==95){c[ia>>2]=c[(c[c[V>>2]>>2]|0)+8>>2];c[N>>2]=(If(c[ia>>2]|0)|0)+1;iR(c[ja>>2]|0,c[ia>>2]|0,c[N>>2]|0)|0;c[ia>>2]=c[ja>>2];c[ja>>2]=(c[ja>>2]|0)+(c[N>>2]|0);c[O>>2]=(c[O>>2]|0)-(c[N>>2]|0)}else{if((c[K>>2]|0)<0)break;c[ia>>2]=c[(c[(c[oa>>2]|0)+4>>2]|0)+((c[K>>2]|0)*24|0)+16>>2]}while(0);if(!(c[ia>>2]|0))c[ia>>2]=35690;if((a[(c[ua>>2]|0)+140+5>>0]|0)==0?(Dz(c[F>>2]|0,c[ia>>2]|0)|0)==0:0)break a;c[(c[(c[va>>2]|0)+32>>2]|0)+(c[I>>2]<<2)>>2]=c[ia>>2];c[Y>>2]=d[(c[V>>2]|0)+12>>0]&c[Z>>2];a[(c[(c[va>>2]|0)+28>>2]|0)+(c[I>>2]|0)>>0]=c[Y>>2];c[I>>2]=(c[I>>2]|0)+1;c[V>>2]=(c[V>>2]|0)+20}if((qa|0)==65){Ah(c[F>>2]|0,37598,aa);break}b:do if(c[X>>2]|0){c[K>>2]=0;while(1){if((c[K>>2]|0)>=(e[(c[X>>2]|0)+50>>1]|0))break b;c[fa>>2]=b[(c[(c[X>>2]|0)+4>>2]|0)+(c[K>>2]<<1)>>1];if(UG(c[(c[va>>2]|0)+4>>2]|0,e[(c[va>>2]|0)+50>>1]|0,c[fa>>2]|0)|0){ja=(c[va>>2]|0)+52|0;b[ja>>1]=(b[ja>>1]|0)+-1<<16>>16}else{b[(c[(c[va>>2]|0)+4>>2]|0)+(c[I>>2]<<1)>>1]=c[fa>>2];c[(c[(c[va>>2]|0)+32>>2]|0)+(c[I>>2]<<2)>>2]=c[(c[(c[X>>2]|0)+32>>2]|0)+(c[K>>2]<<2)>>2];a[(c[(c[va>>2]|0)+28>>2]|0)+(c[I>>2]|0)>>0]=a[(c[(c[X>>2]|0)+28>>2]|0)+(c[K>>2]|0)>>0]|0;c[I>>2]=(c[I>>2]|0)+1}c[K>>2]=(c[K>>2]|0)+1}}else{b[(c[(c[va>>2]|0)+4>>2]|0)+(c[I>>2]<<1)>>1]=-1;c[(c[(c[va>>2]|0)+32>>2]|0)+(c[I>>2]<<2)>>2]=35690}while(0);Cj(c[va>>2]|0);if(!(c[(c[F>>2]|0)+488>>2]|0))VG(c[va>>2]|0);c:do if((c[oa>>2]|0)==(c[(c[F>>2]|0)+488>>2]|0)){c[U>>2]=c[(c[oa>>2]|0)+8>>2];while(1){if(!(c[U>>2]|0))break c;if((e[(c[U>>2]|0)+50>>1]|0)==(e[(c[va>>2]|0)+50>>1]|0)){c[L>>2]=0;while(1){if((c[L>>2]|0)>=(e[(c[U>>2]|0)+50>>1]|0))break;if((b[(c[(c[U>>2]|0)+4>>2]|0)+(c[L>>2]<<1)>>1]|0)!=(b[(c[(c[va>>2]|0)+4>>2]|0)+(c[L>>2]<<1)>>1]|0))break;c[ga>>2]=c[(c[(c[U>>2]|0)+32>>2]|0)+(c[L>>2]<<2)>>2];c[ha>>2]=c[(c[(c[va>>2]|0)+32>>2]|0)+(c[L>>2]<<2)>>2];if((c[ga>>2]|0)!=(c[ha>>2]|0)?(Td(c[ga>>2]|0,c[ha>>2]|0)|0)!=0:0)break;c[L>>2]=(c[L>>2]|0)+1}if((c[L>>2]|0)==(e[(c[U>>2]|0)+50>>1]|0))break}c[U>>2]=c[(c[U>>2]|0)+20>>2]}do if((d[(c[U>>2]|0)+54>>0]|0)!=(d[(c[va>>2]|0)+54>>0]|0)){do if((d[(c[U>>2]|0)+54>>0]|0)!=10){if((d[(c[va>>2]|0)+54>>0]|0)==10)break;qa=c[F>>2]|0;c[ba>>2]=0;Ah(qa,37659,ba)}while(0);if((d[(c[U>>2]|0)+54>>0]|0)!=10)break;a[(c[U>>2]|0)+54>>0]=a[(c[va>>2]|0)+54>>0]|0}while(0);c[wa>>2]=c[U>>2];break a}while(0);do if(a[(c[ua>>2]|0)+140+5>>0]|0){c[na>>2]=Oj((c[(c[va>>2]|0)+24>>2]|0)+24|0,c[c[va>>2]>>2]|0,c[va>>2]|0)|0;p=c[ua>>2]|0;if(c[na>>2]|0){jh(p);break a}na=p+24|0;c[na>>2]=c[na>>2]|2;if(!(c[ra>>2]|0))break;c[(c[va>>2]|0)+44>>2]=c[(c[ua>>2]|0)+140>>2]}else{if(!((c[ra>>2]|0)!=0?1:(d[(c[oa>>2]|0)+42>>0]&32|0)==0))break;ja=(c[F>>2]|0)+76|0;na=(c[ja>>2]|0)+1|0;c[ja>>2]=na;c[J>>2]=na;c[_>>2]=Pw(c[F>>2]|0)|0;if(!(c[_>>2]|0))break a;ax(c[F>>2]|0,1,c[ma>>2]|0);na=Yw(c[_>>2]|0,160)|0;c[(c[va>>2]|0)+44>>2]=na;Rw(c[_>>2]|0,121,c[ma>>2]|0,c[J>>2]|0)|0;if(c[G>>2]|0){c[M>>2]=(c[(c[F>>2]|0)+508>>2]|0)-(c[c[W>>2]>>2]|0)+(c[(c[F>>2]|0)+508+4>>2]|0);if((a[(c[c[W>>2]>>2]|0)+((c[M>>2]|0)-1)>>0]|0)==59)c[M>>2]=(c[M>>2]|0)+-1;na=c[ua>>2]|0;ia=c[M>>2]|0;ja=c[c[W>>2]>>2]|0;c[ca>>2]=(c[la>>2]|0)==0?19266:37701;c[ca+4>>2]=ia;c[ca+8>>2]=ja;c[ka>>2]=Bh(na,37709,ca)|0}else c[ka>>2]=0;na=c[F>>2]|0;fa=(c[ma>>2]|0)==1?20769:20788;ga=c[c[va>>2]>>2]|0;ha=c[c[oa>>2]>>2]|0;ia=c[J>>2]|0;ja=c[ka>>2]|0;c[da>>2]=c[(c[(c[ua>>2]|0)+16>>2]|0)+(c[ma>>2]<<4)>>2];c[da+4>>2]=fa;c[da+8>>2]=ga;c[da+12>>2]=ha;c[da+16>>2]=ia;c[da+20>>2]=ja;Ow(na,37729,da);Sf(c[ua>>2]|0,c[ka>>2]|0);if(c[ra>>2]|0){Uz(c[F>>2]|0,c[va>>2]|0,c[J>>2]|0);Qw(c[F>>2]|0,c[ma>>2]|0);ka=c[_>>2]|0;ma=c[ma>>2]|0;na=c[ua>>2]|0;c[ea>>2]=c[c[va>>2]>>2];Sw(ka,ma,Bh(na,37777,ea)|0);xz(c[_>>2]|0,147,0)|0}Fz(c[_>>2]|0,c[(c[va>>2]|0)+44>>2]|0)}while(0);if(!((c[ra>>2]|0)==0?1:(d[(c[ua>>2]|0)+140+5>>0]|0)!=0))break;do if((c[la>>2]|0)!=5)qa=132;else{if(!(c[(c[oa>>2]|0)+8>>2]|0)){qa=132;break}if((d[(c[(c[oa>>2]|0)+8>>2]|0)+54>>0]|0)==5){qa=132;break}c[pa>>2]=c[(c[oa>>2]|0)+8>>2];while(1){if(c[(c[pa>>2]|0)+20>>2]|0)l=(d[(c[(c[pa>>2]|0)+20>>2]|0)+54>>0]|0)!=5;else l=0;p=c[(c[pa>>2]|0)+20>>2]|0;if(!l)break;c[pa>>2]=p}c[(c[va>>2]|0)+20>>2]=p;c[(c[pa>>2]|0)+20>>2]=c[va>>2]}while(0);if((qa|0)==132){c[(c[va>>2]|0)+20>>2]=c[(c[oa>>2]|0)+8>>2];c[(c[oa>>2]|0)+8>>2]=c[va>>2]}c[wa>>2]=c[va>>2];c[va>>2]=0}}}while(0);if(!(c[va>>2]|0)){qa=c[ua>>2]|0;va=c[ta>>2]|0;Zu(qa,va);va=c[ua>>2]|0;ta=c[sa>>2]|0;Vu(va,ta);ta=c[ua>>2]|0;va=c[ra>>2]|0;Yu(ta,va);va=c[ua>>2]|0;xa=c[xa>>2]|0;Sf(va,xa);xa=c[wa>>2]|0;i=ya;return xa|0}WG(c[ua>>2]|0,c[va>>2]|0);qa=c[ua>>2]|0;va=c[ta>>2]|0;Zu(qa,va);va=c[ua>>2]|0;ta=c[sa>>2]|0;Vu(va,ta);ta=c[ua>>2]|0;va=c[ra>>2]|0;Yu(ta,va);va=c[ua>>2]|0;xa=c[xa>>2]|0;Sf(va,xa);xa=c[wa>>2]|0;i=ya;return xa|0}function wv(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[f>>2]=b;c[g>>2]=e;c[j>>2]=c[(c[f>>2]|0)+488>>2];c[h>>2]=c[c[f>>2]>>2];if(((c[j>>2]|0)!=0?(a[(c[f>>2]|0)+454>>0]|0)==0:0)?(Ei(c[(c[(c[h>>2]|0)+16>>2]|0)+(d[(c[h>>2]|0)+140+4>>0]<<4)+4>>2]|0)|0)==0:0){b=Gv(c[f>>2]|0,c[(c[j>>2]|0)+24>>2]|0,c[g>>2]|0)|0;c[(c[j>>2]|0)+24>>2]=b;if(!(c[(c[f>>2]|0)+328+4>>2]|0)){i=k;return}Hv(c[f>>2]|0,c[(c[j>>2]|0)+24>>2]|0,(c[f>>2]|0)+328|0,1);i=k;return}Zu(c[c[f>>2]>>2]|0,c[g>>2]|0);i=k;return}function xv(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+96|0;B=E+16|0;o=E+8|0;n=E;p=E+80|0;q=E+76|0;k=E+72|0;r=E+68|0;s=E+64|0;t=E+60|0;z=E+56|0;A=E+52|0;y=E+48|0;m=E+44|0;u=E+40|0;x=E+36|0;C=E+32|0;l=E+28|0;v=E+24|0;w=E+20|0;c[p>>2]=e;c[q>>2]=f;c[k>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=c[c[p>>2]>>2];c[z>>2]=0;c[y>>2]=c[(c[p>>2]|0)+488>>2];a:do if((c[y>>2]|0)!=0?(d[(c[p>>2]|0)+454>>0]|0)==0:0){if(!(c[q>>2]|0)){c[l>>2]=(b[(c[y>>2]|0)+34>>1]|0)-1;if((c[l>>2]|0)<0)break;if((c[r>>2]|0)!=0?(c[c[r>>2]>>2]|0)!=1:0){D=c[p>>2]|0;C=c[k>>2]|0;c[n>>2]=c[(c[(c[y>>2]|0)+4>>2]|0)+((c[l>>2]|0)*24|0)>>2];c[n+4>>2]=C;Ah(D,37167,n);break}c[x>>2]=1}else{if((c[r>>2]|0)!=0?(c[c[r>>2]>>2]|0)!=(c[c[q>>2]>>2]|0):0){Ah(c[p>>2]|0,37230,o);break}c[x>>2]=c[c[q>>2]>>2]}c[m>>2]=44+((c[x>>2]|0)-1<<3)+(c[(c[k>>2]|0)+4>>2]|0)+1;b:do if(c[r>>2]|0){c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[c[r>>2]>>2]|0))break b;o=(If(c[(c[(c[r>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+4>>2]|0)|0)+1|0;c[m>>2]=(c[m>>2]|0)+o;c[u>>2]=(c[u>>2]|0)+1}}while(0);o=c[m>>2]|0;c[z>>2]=ph(c[t>>2]|0,o,((o|0)<0)<<31>>31)|0;if(c[z>>2]|0){c[c[z>>2]>>2]=c[y>>2];c[(c[z>>2]|0)+4>>2]=c[(c[y>>2]|0)+16>>2];c[C>>2]=(c[z>>2]|0)+36+(c[x>>2]<<3);c[(c[z>>2]|0)+8>>2]=c[C>>2];iR(c[C>>2]|0,c[c[k>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0)|0;a[(c[C>>2]|0)+(c[(c[k>>2]|0)+4>>2]|0)>>0]=0;Jw(c[C>>2]|0)|0;c[C>>2]=(c[C>>2]|0)+((c[(c[k>>2]|0)+4>>2]|0)+1);c[(c[z>>2]|0)+20>>2]=c[x>>2];c:do if(!(c[q>>2]|0))c[(c[z>>2]|0)+36>>2]=(b[(c[y>>2]|0)+34>>1]|0)-1;else{c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[x>>2]|0))break c;c[v>>2]=0;while(1){if((c[v>>2]|0)>=(b[(c[y>>2]|0)+34>>1]|0))break;o=(Td(c[(c[(c[y>>2]|0)+4>>2]|0)+((c[v>>2]|0)*24|0)>>2]|0,c[(c[(c[q>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+4>>2]|0)|0)==0;k=c[v>>2]|0;if(o){D=25;break}c[v>>2]=k+1}if((D|0)==25){D=0;c[(c[z>>2]|0)+36+(c[u>>2]<<3)>>2]=k}if((c[v>>2]|0)>=(b[(c[y>>2]|0)+34>>1]|0))break;c[u>>2]=(c[u>>2]|0)+1}D=c[p>>2]|0;c[B>>2]=c[(c[(c[q>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+4>>2];Ah(D,37324,B);break a}while(0);d:do if(c[r>>2]|0){c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[x>>2]|0))break d;c[w>>2]=If(c[(c[(c[r>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+4>>2]|0)|0;c[(c[z>>2]|0)+36+(c[u>>2]<<3)+4>>2]=c[C>>2];iR(c[C>>2]|0,c[(c[(c[r>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+4>>2]|0,c[w>>2]|0)|0;a[(c[C>>2]|0)+(c[w>>2]|0)>>0]=0;c[C>>2]=(c[C>>2]|0)+((c[w>>2]|0)+1);c[u>>2]=(c[u>>2]|0)+1}}while(0);a[(c[z>>2]|0)+24>>0]=0;a[(c[z>>2]|0)+25>>0]=c[s>>2];a[(c[z>>2]|0)+25+1>>0]=c[s>>2]>>8;c[A>>2]=Oj((c[(c[y>>2]|0)+64>>2]|0)+56|0,c[(c[z>>2]|0)+8>>2]|0,c[z>>2]|0)|0;if((c[A>>2]|0)==(c[z>>2]|0)){jh(c[t>>2]|0);break}if(c[A>>2]|0){c[(c[z>>2]|0)+12>>2]=c[A>>2];c[(c[A>>2]|0)+16>>2]=c[z>>2]}c[(c[y>>2]|0)+16>>2]=c[z>>2];c[z>>2]=0}}while(0);Sf(c[t>>2]|0,c[z>>2]|0);Vu(c[t>>2]|0,c[q>>2]|0);Vu(c[t>>2]|0,c[r>>2]|0);i=E;return}function yv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;j=h+12|0;e=h+8|0;g=h+4|0;f=h;c[j>>2]=b;c[e>>2]=d;b=c[(c[j>>2]|0)+488>>2]|0;c[g>>2]=b;if(!b){i=h;return}j=c[(c[g>>2]|0)+16>>2]|0;c[f>>2]=j;if(!j){i=h;return}a[(c[f>>2]|0)+24>>0]=c[e>>2];i=h;return}function zv(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;e=m+24|0;f=m+20|0;j=m+16|0;h=m+12|0;l=m+8|0;g=m+4|0;k=m;c[e>>2]=a;c[f>>2]=d;d=c[(c[e>>2]|0)+488>>2]|0;c[j>>2]=d;if(!d){i=m;return}c[h>>2]=(b[(c[j>>2]|0)+34>>1]|0)-1;c[g>>2]=c[c[e>>2]>>2];c[l>>2]=Dw(c[g>>2]|0,c[f>>2]|0)|0;if(!(c[l>>2]|0)){i=m;return}d=(Dz(c[e>>2]|0,c[l>>2]|0)|0)!=0;e=c[g>>2]|0;if(!d){Sf(e,c[l>>2]|0);i=m;return}Sf(e,c[(c[(c[j>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)+16>>2]|0);c[(c[(c[j>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)+16>>2]=c[l>>2];c[k>>2]=c[(c[j>>2]|0)+8>>2];while(1){if(!(c[k>>2]|0))break;if((b[c[(c[k>>2]|0)+4>>2]>>1]|0)==(c[h>>2]|0))c[c[(c[k>>2]|0)+32>>2]>>2]=c[(c[(c[j>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)+16>>2];c[k>>2]=c[(c[k>>2]|0)+20>>2]}i=m;return}function Av(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+80|0;t=x+16|0;s=x+8|0;r=x;h=x+64|0;j=x+60|0;k=x+56|0;l=x+52|0;p=x+48|0;q=x+44|0;n=x+40|0;o=x+36|0;m=x+32|0;w=x+28|0;v=x+24|0;u=x+20|0;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[n>>2]=c[c[h>>2]>>2];do if((a[(c[n>>2]|0)+65>>0]|0)==0?(pz(c[h>>2]|0)|0)==0:0){if(c[l>>2]|0){b=(c[n>>2]|0)+69|0;a[b>>0]=(a[b>>0]|0)+1<<24>>24}c[p>>2]=_w(c[h>>2]|0,c[k>>2]|0,(c[j>>2]|0)+8|0)|0;if(c[l>>2]|0){b=(c[n>>2]|0)+69|0;a[b>>0]=(a[b>>0]|0)+-1<<24>>24}if(!(c[p>>2]|0)){if(!(c[l>>2]|0))break;zB(c[h>>2]|0,c[(c[j>>2]|0)+8+4>>2]|0);break}c[o>>2]=Dh(c[n>>2]|0,c[(c[p>>2]|0)+64>>2]|0)|0;if((d[(c[p>>2]|0)+42>>0]&16|0)!=0?(zx(c[h>>2]|0,c[p>>2]|0)|0)!=0:0)break;c[w>>2]=(c[o>>2]|0)==1?20769:20788;c[v>>2]=c[(c[(c[n>>2]|0)+16>>2]|0)+(c[o>>2]<<4)>>2];c[u>>2]=0;if(!(Mw(c[h>>2]|0,9,c[w>>2]|0,0,c[v>>2]|0)|0)){do if(c[k>>2]|0)if((c[o>>2]|0)==1){c[m>>2]=15;break}else{c[m>>2]=17;break}else{if(d[(c[p>>2]|0)+42>>0]&16){c[m>>2]=30;c[u>>2]=c[(c[(Ax(c[n>>2]|0,c[p>>2]|0)|0)+4>>2]|0)+4>>2];break}if((c[o>>2]|0)==1){c[m>>2]=13;break}else{c[m>>2]=11;break}}while(0);if((Mw(c[h>>2]|0,c[m>>2]|0,c[c[p>>2]>>2]|0,c[u>>2]|0,c[v>>2]|0)|0)==0?(Mw(c[h>>2]|0,9,c[c[p>>2]>>2]|0,0,c[v>>2]|0)|0)==0:0){if((zd(c[c[p>>2]>>2]|0,28715,7)|0)==0?(zd(c[c[p>>2]>>2]|0,36960,11)|0)!=0:0){w=c[h>>2]|0;c[r>>2]=c[c[p>>2]>>2];Ah(w,36972,r);break}if((c[k>>2]|0)!=0?(c[(c[p>>2]|0)+12>>2]|0)==0:0){w=c[h>>2]|0;c[s>>2]=c[c[p>>2]>>2];Ah(w,37e3,s);break}if((c[k>>2]|0)==0?(c[(c[p>>2]|0)+12>>2]|0)!=0:0){w=c[h>>2]|0;c[t>>2]=c[c[p>>2]>>2];Ah(w,37034,t);break}c[q>>2]=Pw(c[h>>2]|0)|0;if(c[q>>2]|0){ax(c[h>>2]|0,1,c[o>>2]|0);pC(c[h>>2]|0,c[o>>2]|0,31729,c[c[p>>2]>>2]|0);NG(c[h>>2]|0,c[j>>2]|0,c[p>>2]|0);OG(c[h>>2]|0,c[p>>2]|0,c[o>>2]|0,c[k>>2]|0)}}}}while(0);Yu(c[n>>2]|0,c[j>>2]|0);i=x;return}function Bv(e,f,g,h,j,k,l,m){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+96|0;w=D+88|0;n=D+84|0;o=D+80|0;p=D+76|0;x=D+72|0;y=D+68|0;q=D+64|0;r=D+60|0;t=D+56|0;A=D+52|0;C=D+48|0;B=D+40|0;v=D+16|0;u=D+12|0;s=D+8|0;z=D+4|0;c[w>>2]=e;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;c[x>>2]=j;c[y>>2]=k;c[q>>2]=l;c[r>>2]=m;c[u>>2]=0;c[z>>2]=c[c[w>>2]>>2];l=c[w>>2]|0;if((b[(c[w>>2]|0)+444>>1]|0)<=0){lv(l,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,1,0,c[r>>2]|0);c[t>>2]=c[(c[w>>2]|0)+488>>2];if((((c[t>>2]|0)!=0?(c[(c[w>>2]|0)+68>>2]|0)==0:0)?(tz(c[w>>2]|0,c[o>>2]|0,c[p>>2]|0,u)|0,c[s>>2]=Dh(c[z>>2]|0,c[(c[t>>2]|0)+64>>2]|0)|0,EB(v,c[w>>2]|0,c[s>>2]|0,36955,c[u>>2]|0),(GB(v,c[y>>2]|0)|0)==0):0)?(v=Hx(c[z>>2]|0,c[y>>2]|0,1)|0,c[(c[t>>2]|0)+12>>2]=v,v=vy(c[z>>2]|0,c[x>>2]|0,1)|0,c[(c[t>>2]|0)+24>>2]=v,(a[(c[z>>2]|0)+65>>0]|0)==0):0){v=(c[w>>2]|0)+508|0;c[B>>2]=c[v>>2];c[B+4>>2]=c[v+4>>2];if((a[c[B>>2]>>0]|0)!=59)c[B>>2]=(c[B>>2]|0)+(c[B+4>>2]|0);c[B+4>>2]=0;c[A>>2]=(c[B>>2]|0)-(c[c[n>>2]>>2]|0);c[C>>2]=c[c[n>>2]>>2];while(1){l=c[A>>2]|0;if(!(d[19267+(d[(c[C>>2]|0)+((c[A>>2]|0)-1)>>0]|0)>>0]&1))break;c[A>>2]=l+-1}c[B>>2]=(c[C>>2]|0)+(l-1);c[B+4>>2]=1;nv(c[w>>2]|0,0,B,0,0)}}else Ah(l,36919,D);Wu(c[z>>2]|0,c[y>>2]|0);Vu(c[z>>2]|0,c[x>>2]|0);i=D;return}function Cv(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;Da=i;i=i+432|0;w=Da;O=Da+412|0;P=Da+408|0;Q=Da+404|0;R=Da+400|0;$=Da+396|0;ga=Da+392|0;qa=Da+388|0;Ca=Da+384|0;l=Da+380|0;la=Da+376|0;pa=Da+372|0;M=Da+368|0;ma=Da+364|0;na=Da+360|0;sa=Da+356|0;ya=Da+344|0;za=Da+312|0;xa=Da+264|0;da=Da+256|0;Z=Da+252|0;ea=Da+248|0;o=Da+244|0;r=Da+240|0;m=Da+236|0;t=Da+232|0;p=Da+228|0;k=Da+208|0;s=Da+204|0;j=Da+200|0;v=Da+196|0;n=Da+192|0;u=Da+188|0;q=Da+184|0;x=Da+416|0;N=Da+152|0;aa=Da+148|0;ca=Da+144|0;fa=Da+140|0;ba=Da+136|0;_=Da+132|0;T=Da+128|0;Ba=Da+124|0;Aa=Da+120|0;ja=Da+116|0;z=Da+112|0;A=Da+108|0;oa=Da+104|0;S=Da+100|0;U=Da+96|0;ua=Da+92|0;W=Da+88|0;Y=Da+84|0;X=Da+80|0;V=Da+76|0;wa=Da+72|0;ta=Da+68|0;va=Da+64|0;ha=Da+60|0;ia=Da+56|0;ka=Da+52|0;ra=Da+48|0;H=Da+44|0;L=Da+40|0;E=Da+36|0;D=Da+32|0;I=Da+28|0;J=Da+24|0;G=Da+20|0;F=Da+16|0;K=Da+12|0;B=Da+418|0;c[P>>2]=f;c[Q>>2]=g;c[R>>2]=h;c[la>>2]=0;c[sa>>2]=1;c[ea>>2]=c[(c[P>>2]|0)+468>>2];h=(c[P>>2]|0)+472|0;f=c[h>>2]|0;c[h>>2]=f+1;c[(c[P>>2]|0)+468>>2]=f;c[Z>>2]=c[c[P>>2]>>2];if(((c[Q>>2]|0)!=0?(d[(c[Z>>2]|0)+65>>0]|0)==0:0)?(c[(c[P>>2]|0)+68>>2]|0)==0:0){if(Mw(c[P>>2]|0,21,0,0,0)|0){c[O>>2]=1;Ca=c[O>>2]|0;i=Da;return Ca|0}g=xa;h=g+48|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));if((d[c[R>>2]>>0]|0)<=8){Vu(c[Z>>2]|0,c[(c[Q>>2]|0)+48>>2]|0);c[(c[Q>>2]|0)+48>>2]=0;f=(c[Q>>2]|0)+6|0;b[f>>1]=e[f>>1]&-2}Kx(c[P>>2]|0,c[Q>>2]|0,0);c[za>>2]=0;c[za+4>>2]=0;c[za+8>>2]=0;c[za+12>>2]=0;c[za+16>>2]=0;c[za+20>>2]=0;c[za+24>>2]=0;c[za+28>>2]=0;c[za>>2]=c[(c[Q>>2]|0)+48>>2];c[pa>>2]=c[(c[Q>>2]|0)+32>>2];a:do if(((c[(c[P>>2]|0)+68>>2]|0)==0?(d[(c[Z>>2]|0)+65>>0]|0)==0:0)?(c[l>>2]=(e[(c[Q>>2]|0)+6>>1]&8|0)!=0&1,(VF(c[P>>2]|0,c[R>>2]|0,c[c[c[Q>>2]>>2]>>2]|0)|0)==0):0){c[$>>2]=0;while(1){if(c[(c[Q>>2]|0)+52>>2]|0)break;if((c[$>>2]|0)>=(c[c[pa>>2]>>2]|0))break;c[o>>2]=(c[pa>>2]|0)+8+((c[$>>2]|0)*72|0);c[r>>2]=c[(c[o>>2]|0)+20>>2];c[t>>2]=c[(c[o>>2]|0)+16>>2];if(c[r>>2]|0){if((b[(c[t>>2]|0)+34>>1]|0)!=(c[c[c[r>>2]>>2]>>2]|0)){y=17;break}c[m>>2]=(e[(c[r>>2]|0)+6>>1]&8|0)!=0&1;if(WF(c[P>>2]|0,c[Q>>2]|0,c[$>>2]|0,c[l>>2]|0,c[m>>2]|0)|0){if(c[m>>2]|0){c[l>>2]=1;f=(c[Q>>2]|0)+6|0;b[f>>1]=e[f>>1]|8}c[$>>2]=-1}c[pa>>2]=c[(c[Q>>2]|0)+32>>2];if(a[(c[Z>>2]|0)+65>>0]|0)break a;if((d[c[R>>2]>>0]|0)>8)c[za>>2]=c[(c[Q>>2]|0)+48>>2]}c[$>>2]=(c[$>>2]|0)+1}if((y|0)==17){Ca=c[P>>2]|0;Aa=c[c[t>>2]>>2]|0;Ba=c[c[c[r>>2]>>2]>>2]|0;c[w>>2]=b[(c[t>>2]|0)+34>>1];c[w+4>>2]=Aa;c[w+8>>2]=Ba;Ah(Ca,36434,w);break}c[Ca>>2]=Pw(c[P>>2]|0)|0;if(c[Ca>>2]|0){if(c[(c[Q>>2]|0)+52>>2]|0){c[sa>>2]=XF(c[P>>2]|0,c[Q>>2]|0,c[R>>2]|0)|0;c[(c[P>>2]|0)+468>>2]=c[ea>>2];c[O>>2]=c[sa>>2];Ca=c[O>>2]|0;i=Da;return Ca|0}c[$>>2]=0;while(1){if((c[$>>2]|0)>=(c[c[pa>>2]>>2]|0))break;c[p>>2]=(c[pa>>2]|0)+8+((c[$>>2]|0)*72|0);c[s>>2]=c[(c[p>>2]|0)+20>>2];do if(c[s>>2]|0){if(c[(c[p>>2]|0)+24>>2]|0){if((d[(c[p>>2]|0)+36+1>>0]|0)>>>4&1)break;Rw(c[Ca>>2]|0,14,c[(c[p>>2]|0)+28>>2]|0,c[(c[p>>2]|0)+24>>2]|0)|0;break}t=YF(c[Q>>2]|0)|0;w=(c[P>>2]|0)+464|0;c[w>>2]=(c[w>>2]|0)+t;if(!(d[(c[p>>2]|0)+36>>0]&32))ZF(c[Z>>2]|0,c[s>>2]|0,c[(c[Q>>2]|0)+36>>2]|0,c[(c[p>>2]|0)+44>>2]|0)|0;do if((c[c[pa>>2]>>2]|0)==1){if(e[(c[Q>>2]|0)+6>>1]&2){y=41;break}if(e[(c[Z>>2]|0)+60>>1]&256){y=41;break}c[j>>2]=(Bz(c[Ca>>2]|0)|0)+1;t=(c[P>>2]|0)+76|0;w=(c[t>>2]|0)+1|0;c[t>>2]=w;c[(c[p>>2]|0)+28>>2]=w;Vw(c[Ca>>2]|0,16,c[(c[p>>2]|0)+28>>2]|0,0,c[j>>2]|0)|0;c[(c[p>>2]|0)+24>>2]=c[j>>2];ZA(k,13,c[(c[p>>2]|0)+28>>2]|0);a[(c[p>>2]|0)+40>>0]=c[(c[P>>2]|0)+472>>2];Cv(c[P>>2]|0,c[s>>2]|0,k)|0;w=(c[s>>2]|0)+24|0;w=Hj(c[w>>2]|0,c[w+4>>2]|0)|0;b[(c[(c[p>>2]|0)+16>>2]|0)+38>>1]=w;w=(c[p>>2]|0)+36+1|0;a[w>>0]=a[w>>0]&-17|16;c[(c[p>>2]|0)+32>>2]=c[k+8>>2];xC(c[Ca>>2]|0,c[(c[p>>2]|0)+28>>2]|0);Fz(c[Ca>>2]|0,(c[j>>2]|0)-1|0);_F(c[P>>2]|0)}else y=41;while(0);if((y|0)==41){y=0;c[n>>2]=0;t=(c[P>>2]|0)+76|0;w=(c[t>>2]|0)+1|0;c[t>>2]=w;c[(c[p>>2]|0)+28>>2]=w;c[v>>2]=Rw(c[Ca>>2]|0,22,0,c[(c[p>>2]|0)+28>>2]|0)|0;c[(c[p>>2]|0)+24>>2]=(c[v>>2]|0)+1;if(!((d[(c[p>>2]|0)+36+1>>0]|0)>>>3&1))c[n>>2]=UA(c[P>>2]|0)|0;ZA(k,12,c[(c[p>>2]|0)+44>>2]|0);a[(c[p>>2]|0)+40>>0]=c[(c[P>>2]|0)+472>>2];Cv(c[P>>2]|0,c[s>>2]|0,k)|0;w=(c[s>>2]|0)+24|0;w=Hj(c[w>>2]|0,c[w+4>>2]|0)|0;b[(c[(c[p>>2]|0)+16>>2]|0)+38>>1]=w;if(c[n>>2]|0)Fz(c[Ca>>2]|0,c[n>>2]|0);c[u>>2]=xz(c[Ca>>2]|0,15,c[(c[p>>2]|0)+28>>2]|0)|0;wD(c[Ca>>2]|0,c[v>>2]|0,c[u>>2]|0);_F(c[P>>2]|0)}if(a[(c[Z>>2]|0)+65>>0]|0)break a;t=YF(c[Q>>2]|0)|0;w=(c[P>>2]|0)+464|0;c[w>>2]=(c[w>>2]|0)-t}while(0);c[$>>2]=(c[$>>2]|0)+1}c[la>>2]=c[c[Q>>2]>>2];c[M>>2]=c[(c[Q>>2]|0)+36>>2];c[ma>>2]=c[(c[Q>>2]|0)+40>>2];c[na>>2]=c[(c[Q>>2]|0)+44>>2];a[ya>>0]=(e[(c[Q>>2]|0)+6>>1]&1|0)!=0;if((e[(c[Q>>2]|0)+6>>1]&9|0)==1?(qy(c[za>>2]|0,c[la>>2]|0,-1)|0)==0:0){y=(c[Q>>2]|0)+6|0;b[y>>1]=e[y>>1]&-2;y=vy(c[Z>>2]|0,c[la>>2]|0,0)|0;c[(c[Q>>2]|0)+40>>2]=y;c[ma>>2]=y}if(c[za>>2]|0){c[q>>2]=$F(c[P>>2]|0,c[za>>2]|0,0,c[c[la>>2]>>2]|0)|0;w=(c[P>>2]|0)+72|0;y=c[w>>2]|0;c[w>>2]=y+1;c[za+8>>2]=y;c[za+20>>2]=Uw(c[Ca>>2]|0,57,c[za+8>>2]|0,(c[c[za>>2]>>2]|0)+1+(c[c[la>>2]>>2]|0)|0,0,c[q>>2]|0,-6)|0}else c[za+20>>2]=-1;if((d[c[R>>2]>>0]|0)==12)Rw(c[Ca>>2]|0,57,c[(c[R>>2]|0)+4>>2]|0,c[c[la>>2]>>2]|0)|0;c[da>>2]=Cz(c[Ca>>2]|0)|0;y=(c[Q>>2]|0)+24|0;c[y>>2]=-1;c[y+4>>2]=2147483647;aG(c[P>>2]|0,c[Q>>2]|0,c[da>>2]|0);if((c[(c[Q>>2]|0)+8>>2]|0)==0?(c[za+20>>2]|0)>=0:0){bG(c[Ca>>2]|0,c[za+20>>2]|0,58);y=za+28|0;a[y>>0]=d[y>>0]|1}if(e[(c[Q>>2]|0)+6>>1]&1){y=(c[P>>2]|0)+72|0;w=c[y>>2]|0;c[y>>2]=w+1;c[ya+4>>2]=w;w=c[Ca>>2]|0;y=c[ya+4>>2]|0;c[ya+8>>2]=Uw(w,57,y,0,0,$F(c[P>>2]|0,c[c[Q>>2]>>2]|0,0,0)|0,-6)|0;Fh(c[Ca>>2]|0,8);a[ya+1>>0]=3}else a[ya+1>>0]=0;if((c[l>>2]|0)==0&(c[ma>>2]|0)==0){b[x>>1]=(d[ya>>0]|0)!=0?1024:0;c[qa>>2]=RC(c[P>>2]|0,c[pa>>2]|0,c[M>>2]|0,c[za>>2]|0,c[c[Q>>2]>>2]|0,b[x>>1]|0,0)|0;if(!(c[qa>>2]|0))break;Aa=cG(c[qa>>2]|0)|0;va=C;Ba=(c[Q>>2]|0)+24|0;wa=c[Ba+4>>2]|0;if(va>>>0>>0|((va|0)==(wa|0)?Aa>>>0<(c[Ba>>2]|0)>>>0:0)){Aa=cG(c[qa>>2]|0)|0;Ba=(c[Q>>2]|0)+24|0;c[Ba>>2]=Aa;c[Ba+4>>2]=C}do if(d[ya>>0]|0){if(!(dG(c[qa>>2]|0)|0))break;a[ya+1>>0]=dG(c[qa>>2]|0)|0}while(0);do if(c[za>>2]|0){c[za+4>>2]=eG(c[qa>>2]|0)|0;if((c[za+4>>2]|0)!=(c[c[za>>2]>>2]|0))break;c[za>>2]=0}while(0);do if((c[za+20>>2]|0)>=0){if(c[za>>2]|0)break;pA(c[Ca>>2]|0,c[za+20>>2]|0)|0}while(0);ua=c[P>>2]|0;va=c[Q>>2]|0;wa=c[la>>2]|0;Aa=c[R>>2]|0;Ba=fG(c[qa>>2]|0)|0;hG(ua,va,wa,-1,za,ya,Aa,Ba,gG(c[qa>>2]|0)|0);SC(c[qa>>2]|0)}else{c[Ba>>2]=0;c[Aa>>2]=0;c[ja>>2]=0;g=c[Q>>2]|0;do if(c[ma>>2]|0){c[z>>2]=c[c[g>>2]>>2];c[A>>2]=c[(c[c[Q>>2]>>2]|0)+4>>2];while(1){if((c[z>>2]|0)<=0)break;b[(c[A>>2]|0)+16+2>>1]=0;c[z>>2]=(c[z>>2]|0)+-1;c[A>>2]=(c[A>>2]|0)+20}c[z>>2]=c[c[ma>>2]>>2];c[A>>2]=c[(c[ma>>2]|0)+4>>2];while(1){if((c[z>>2]|0)<=0)break;b[(c[A>>2]|0)+16+2>>1]=0;c[z>>2]=(c[z>>2]|0)+-1;c[A>>2]=(c[A>>2]|0)+20}A=(c[Q>>2]|0)+24|0;z=c[A+4>>2]|0;if(!(z>>>0>0|(z|0)==0&(c[A>>2]|0)>>>0>100))break;A=(c[Q>>2]|0)+24|0;c[A>>2]=100;c[A+4>>2]=0}else{A=g+24|0;c[A>>2]=1;c[A+4>>2]=0}while(0);if(!(qy(c[ma>>2]|0,c[za>>2]|0,-1)|0))c[ja>>2]=1;c[T>>2]=Cz(c[Ca>>2]|0)|0;c[N>>2]=0;c[N+4>>2]=0;c[N+8>>2]=0;c[N+12>>2]=0;c[N+16>>2]=0;c[N+20>>2]=0;c[N+24>>2]=0;c[N+28>>2]=0;c[N>>2]=c[P>>2];c[N+4>>2]=c[pa>>2];c[N+12>>2]=xa;c[xa+16>>2]=(c[(c[P>>2]|0)+76>>2]|0)+1;if(c[ma>>2]|0)g=c[c[ma>>2]>>2]|0;else g=0;c[xa+12>>2]=g;c[xa+24>>2]=c[ma>>2];iG(N,c[la>>2]|0);iG(N,c[za>>2]|0);if(c[na>>2]|0)jG(N,c[na>>2]|0);c[xa+36>>2]=c[xa+32>>2];c[$>>2]=0;while(1){if((c[$>>2]|0)>=(c[xa+44>>2]|0))break;A=N+28|0;b[A>>1]=e[A>>1]|8;iG(N,c[(c[(c[xa+40>>2]|0)+(c[$>>2]<<4)>>2]|0)+20>>2]|0);A=N+28|0;b[A>>1]=e[A>>1]&-9;c[$>>2]=(c[$>>2]|0)+1}c[xa+20>>2]=c[(c[P>>2]|0)+76>>2];if(a[(c[Z>>2]|0)+65>>0]|0)break;if(c[ma>>2]|0){L=(c[P>>2]|0)+72|0;N=c[L>>2]|0;c[L>>2]=N+1;c[xa+4>>2]=N;c[oa>>2]=$F(c[P>>2]|0,c[ma>>2]|0,0,c[xa+32>>2]|0)|0;c[X>>2]=Uw(c[Ca>>2]|0,58,c[xa+4>>2]|0,c[xa+12>>2]|0,0,c[oa>>2]|0,-6)|0;N=(c[P>>2]|0)+76|0;L=(c[N>>2]|0)+1|0;c[N>>2]=L;c[fa>>2]=L;L=(c[P>>2]|0)+76|0;N=(c[L>>2]|0)+1|0;c[L>>2]=N;c[ba>>2]=N;N=(c[P>>2]|0)+76|0;L=(c[N>>2]|0)+1|0;c[N>>2]=L;c[ua>>2]=L;c[U>>2]=Cz(c[Ca>>2]|0)|0;L=(c[P>>2]|0)+76|0;N=(c[L>>2]|0)+1|0;c[L>>2]=N;c[wa>>2]=N;c[V>>2]=Cz(c[Ca>>2]|0)|0;c[aa>>2]=(c[(c[P>>2]|0)+76>>2]|0)+1;N=(c[P>>2]|0)+76|0;c[N>>2]=(c[N>>2]|0)+(c[c[ma>>2]>>2]|0);c[ca>>2]=(c[(c[P>>2]|0)+76>>2]|0)+1;N=(c[P>>2]|0)+76|0;c[N>>2]=(c[N>>2]|0)+(c[c[ma>>2]>>2]|0);Rw(c[Ca>>2]|0,22,0,c[ba>>2]|0)|0;Rw(c[Ca>>2]|0,22,0,c[fa>>2]|0)|0;Vw(c[Ca>>2]|0,25,0,c[aa>>2]|0,(c[aa>>2]|0)+(c[c[ma>>2]>>2]|0)-1|0)|0;Rw(c[Ca>>2]|0,14,c[wa>>2]|0,c[V>>2]|0)|0;c[qa>>2]=RC(c[P>>2]|0,c[pa>>2]|0,c[M>>2]|0,c[ma>>2]|0,0,(256|((c[ja>>2]|0)!=0?2048:0))&65535,0)|0;if(!(c[qa>>2]|0))break;N=eG(c[qa>>2]|0)|0;if((N|0)==(c[c[ma>>2]>>2]|0))c[_>>2]=0;else{if(d[ya>>0]|0)g=(e[(c[Q>>2]|0)+6>>1]&1|0)==0;else g=0;kG(c[P>>2]|0,g?36474:36483);c[_>>2]=1;c[ia>>2]=c[c[ma>>2]>>2];c[ha>>2]=c[ia>>2];c[ga>>2]=c[ia>>2];c[$>>2]=0;while(1){if((c[$>>2]|0)>=(c[xa+32>>2]|0))break;if((c[(c[xa+28>>2]|0)+((c[$>>2]|0)*24|0)+12>>2]|0)>=(c[ga>>2]|0)){c[ha>>2]=(c[ha>>2]|0)+1;c[ga>>2]=(c[ga>>2]|0)+1}c[$>>2]=(c[$>>2]|0)+1}c[ta>>2]=kA(c[P>>2]|0,c[ha>>2]|0)|0;fC(c[P>>2]|0);GA(c[P>>2]|0,c[ma>>2]|0,c[ta>>2]|0,0,0)|0;c[ga>>2]=c[ia>>2];c[$>>2]=0;while(1){if((c[$>>2]|0)>=(c[xa+32>>2]|0))break;c[ka>>2]=(c[xa+28>>2]|0)+((c[$>>2]|0)*24|0);if((c[(c[ka>>2]|0)+12>>2]|0)>=(c[ga>>2]|0)){c[ra>>2]=(c[ga>>2]|0)+(c[ta>>2]|0);vD(c[P>>2]|0,c[c[ka>>2]>>2]|0,c[(c[ka>>2]|0)+8>>2]|0,c[(c[ka>>2]|0)+4>>2]|0,c[ra>>2]|0);c[ga>>2]=(c[ga>>2]|0)+1}c[$>>2]=(c[$>>2]|0)+1}c[va>>2]=Wz(c[P>>2]|0)|0;Vw(c[Ca>>2]|0,49,c[ta>>2]|0,c[ha>>2]|0,c[va>>2]|0)|0;Rw(c[Ca>>2]|0,109,c[xa+4>>2]|0,c[va>>2]|0)|0;_z(c[P>>2]|0,c[va>>2]|0);nA(c[P>>2]|0,c[ta>>2]|0,c[ha>>2]|0);SC(c[qa>>2]|0);ta=(c[P>>2]|0)+72|0;va=c[ta>>2]|0;c[ta>>2]=va+1;c[Ba>>2]=va;c[xa+8>>2]=va;c[Aa>>2]=Wz(c[P>>2]|0)|0;Vw(c[Ca>>2]|0,60,c[Ba>>2]|0,c[Aa>>2]|0,c[ha>>2]|0)|0;Rw(c[Ca>>2]|0,106,c[xa+4>>2]|0,c[T>>2]|0)|0;a[xa+1>>0]=1;fC(c[P>>2]|0)}do if(c[ja>>2]|0){if(e[(c[Z>>2]|0)+60>>1]&4)break;if((c[_>>2]|0)==0?(lG(c[qa>>2]|0)|0)==0:0)break;c[za>>2]=0;pA(c[Ca>>2]|0,c[za+20>>2]|0)|0}while(0);c[Y>>2]=Bz(c[Ca>>2]|0)|0;fC(c[P>>2]|0);if(c[_>>2]|0)Vw(c[Ca>>2]|0,100,c[xa+4>>2]|0,c[Aa>>2]|0,c[Ba>>2]|0)|0;c[ga>>2]=0;while(1){if((c[ga>>2]|0)>=(c[c[ma>>2]>>2]|0))break;if(c[_>>2]|0)Vw(c[Ca>>2]|0,47,c[Ba>>2]|0,c[ga>>2]|0,(c[ca>>2]|0)+(c[ga>>2]|0)|0)|0;else{a[xa>>0]=1;xA(c[P>>2]|0,c[(c[(c[ma>>2]|0)+4>>2]|0)+((c[ga>>2]|0)*20|0)>>2]|0,(c[ca>>2]|0)+(c[ga>>2]|0)|0)}c[ga>>2]=(c[ga>>2]|0)+1}ta=c[Ca>>2]|0;va=c[aa>>2]|0;Aa=c[ca>>2]|0;Ba=c[c[ma>>2]>>2]|0;Uw(ta,42,va,Aa,Ba,Vz(c[oa>>2]|0)|0,-6)|0;c[S>>2]=Bz(c[Ca>>2]|0)|0;Vw(c[Ca>>2]|0,43,(c[S>>2]|0)+1|0,0,(c[S>>2]|0)+1|0)|0;mG(c[P>>2]|0,c[ca>>2]|0,c[aa>>2]|0,c[c[ma>>2]>>2]|0);Rw(c[Ca>>2]|0,14,c[ua>>2]|0,c[U>>2]|0)|0;Rw(c[Ca>>2]|0,138,c[ba>>2]|0,c[T>>2]|0)|0;Rw(c[Ca>>2]|0,14,c[wa>>2]|0,c[V>>2]|0)|0;Fz(c[Ca>>2]|0,c[S>>2]|0);nG(c[P>>2]|0,xa);Rw(c[Ca>>2]|0,22,1,c[fa>>2]|0)|0;if(c[_>>2]|0)Rw(c[Ca>>2]|0,3,c[xa+4>>2]|0,c[Y>>2]|0)|0;else{SC(c[qa>>2]|0);pA(c[Ca>>2]|0,c[X>>2]|0)|0}Rw(c[Ca>>2]|0,14,c[ua>>2]|0,c[U>>2]|0)|0;Ez(c[Ca>>2]|0,c[T>>2]|0)|0;c[W>>2]=Bz(c[Ca>>2]|0)|0;Rw(c[Ca>>2]|0,22,1,c[ba>>2]|0)|0;xz(c[Ca>>2]|0,15,c[ua>>2]|0)|0;Gz(c[Ca>>2]|0,c[U>>2]|0);c[U>>2]=Bz(c[Ca>>2]|0)|0;Rw(c[Ca>>2]|0,138,c[fa>>2]|0,(c[U>>2]|0)+2|0)|0;xz(c[Ca>>2]|0,15,c[ua>>2]|0)|0;oG(c[P>>2]|0,xa);LA(c[P>>2]|0,c[na>>2]|0,(c[U>>2]|0)+1|0,16);hG(c[P>>2]|0,c[Q>>2]|0,c[c[Q>>2]>>2]|0,-1,za,ya,c[R>>2]|0,(c[U>>2]|0)+1|0,c[W>>2]|0);xz(c[Ca>>2]|0,15,c[ua>>2]|0)|0;Gz(c[Ca>>2]|0,c[V>>2]|0);pG(c[P>>2]|0,xa);xz(c[Ca>>2]|0,15,c[wa>>2]|0)|0}else{c[H>>2]=0;Ba=qG(c[Q>>2]|0,xa)|0;c[L>>2]=Ba;if(Ba){c[E>>2]=Dh(c[c[P>>2]>>2]|0,c[(c[L>>2]|0)+64>>2]|0)|0;Aa=(c[P>>2]|0)+72|0;Ba=c[Aa>>2]|0;c[Aa>>2]=Ba+1;c[D>>2]=Ba;c[J>>2]=0;c[G>>2]=0;c[F>>2]=c[(c[L>>2]|0)+28>>2];bx(c[P>>2]|0,c[E>>2]|0);yz(c[P>>2]|0,c[E>>2]|0,c[(c[L>>2]|0)+28>>2]|0,0,c[c[L>>2]>>2]|0);if(d[(c[L>>2]|0)+42>>0]&32)c[G>>2]=Ej(c[L>>2]|0)|0;c[I>>2]=c[(c[L>>2]|0)+8>>2];while(1){if(!(c[I>>2]|0))break;do if(!((d[(c[I>>2]|0)+55>>0]|0)>>>2&1)){if((b[(c[I>>2]|0)+48>>1]|0)>=(b[(c[L>>2]|0)+40>>1]|0))break;if(c[(c[I>>2]|0)+36>>2]|0)break;if((c[G>>2]|0)!=0?(b[(c[I>>2]|0)+48>>1]|0)>=(b[(c[G>>2]|0)+48>>1]|0):0)break;c[G>>2]=c[I>>2]}while(0);c[I>>2]=c[(c[I>>2]|0)+20>>2]}if(c[G>>2]|0){c[F>>2]=c[(c[G>>2]|0)+44>>2];c[J>>2]=Pz(c[P>>2]|0,c[G>>2]|0)|0}Eh(c[Ca>>2]|0,54,c[D>>2]|0,c[F>>2]|0,c[E>>2]|0,1)|0;if(c[J>>2]|0)Ih(c[Ca>>2]|0,-1,c[J>>2]|0,-6); -Rw(c[Ca>>2]|0,50,c[D>>2]|0,c[(c[xa+40>>2]|0)+8>>2]|0)|0;xz(c[Ca>>2]|0,61,c[D>>2]|0)|0;rG(c[P>>2]|0,c[L>>2]|0,c[G>>2]|0)}else{c[K>>2]=0;a[B>>0]=0;if(!(c[(c[Q>>2]|0)+44>>2]|0))a[B>>0]=sG(xa,K)|0;do if(a[B>>0]|0){c[K>>2]=vy(c[Z>>2]|0,c[K>>2]|0,0)|0;c[H>>2]=c[K>>2];if(a[(c[Z>>2]|0)+65>>0]|0)break;a[(c[(c[K>>2]|0)+4>>2]|0)+12>>0]=(d[B>>0]|0)!=1?1:0;a[c[c[(c[K>>2]|0)+4>>2]>>2]>>0]=-104}while(0);pG(c[P>>2]|0,xa);c[qa>>2]=RC(c[P>>2]|0,c[pa>>2]|0,c[M>>2]|0,c[K>>2]|0,0,d[B>>0]|0,0)|0;if(!(c[qa>>2]|0)){Vu(c[Z>>2]|0,c[H>>2]|0);break}nG(c[P>>2]|0,xa);if((eG(c[qa>>2]|0)|0)>0){Ba=c[Ca>>2]|0;Ez(Ba,gG(c[qa>>2]|0)|0)|0}SC(c[qa>>2]|0);oG(c[P>>2]|0,xa)}c[za>>2]=0;LA(c[P>>2]|0,c[na>>2]|0,c[T>>2]|0,16);hG(c[P>>2]|0,c[Q>>2]|0,c[c[Q>>2]>>2]|0,-1,0,0,c[R>>2]|0,c[T>>2]|0,c[T>>2]|0);Vu(c[Z>>2]|0,c[H>>2]|0)}Gz(c[Ca>>2]|0,c[T>>2]|0)}if((d[ya+1>>0]|0)==3)kG(c[P>>2]|0,36474);if(c[za>>2]|0){kG(c[P>>2]|0,(c[za+4>>2]|0)>0?36492:36515);tG(c[P>>2]|0,c[Q>>2]|0,za,c[c[la>>2]>>2]|0,c[R>>2]|0)}Gz(c[Ca>>2]|0,c[da>>2]|0);c[sa>>2]=(c[(c[P>>2]|0)+68>>2]|0)>0&1}}while(0);c[(c[P>>2]|0)+468>>2]=c[ea>>2];if((c[sa>>2]|0)==0?(d[c[R>>2]>>0]|0)==9:0)uG(c[P>>2]|0,c[pa>>2]|0,c[la>>2]|0);Sf(c[Z>>2]|0,c[xa+28>>2]|0);Sf(c[Z>>2]|0,c[xa+40>>2]|0);c[O>>2]=c[sa>>2];Ca=c[O>>2]|0;i=Da;return Ca|0}c[O>>2]=1;Ca=c[O>>2]|0;i=Da;return Ca|0}function Dv(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;m=n;f=n+24|0;g=n+20|0;l=n+16|0;k=n+12|0;j=n+8|0;h=n+4|0;c[f>>2]=a;c[g>>2]=d;if(!(c[(c[g>>2]|0)+52>>2]|0)){i=n;return}c[l>>2]=0;c[h>>2]=0;c[k>>2]=c[g>>2];while(1){if(!(c[k>>2]|0))break;c[(c[k>>2]|0)+56>>2]=c[l>>2];a=(c[k>>2]|0)+6|0;b[a>>1]=e[a>>1]|0|128;c[l>>2]=c[k>>2];c[k>>2]=c[(c[k>>2]|0)+52>>2];c[h>>2]=(c[h>>2]|0)+1}if((e[(c[g>>2]|0)+6>>1]|0)&512){i=n;return}a=c[(c[c[f>>2]>>2]|0)+88+16>>2]|0;c[j>>2]=a;if((a|0)<=0){i=n;return}if((c[h>>2]|0)<=(c[j>>2]|0)){i=n;return}Ah(c[f>>2]|0,36400,m);i=n;return}function Ev(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+48|0;v=x;k=x+44|0;l=x+40|0;m=x+36|0;n=x+32|0;o=x+28|0;p=x+24|0;q=x+20|0;r=x+16|0;s=x+12|0;u=x+8|0;t=x+4|0;c[l>>2]=a;c[m>>2]=b;c[n>>2]=d;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=c[c[l>>2]>>2];if((c[m>>2]|0)==0?(c[r>>2]|0)!=0|(c[s>>2]|0)!=0:0){j=c[l>>2]|0;c[v>>2]=(c[r>>2]|0)!=0?36355:36358;Ah(j,36364,v)}else w=4;if(((w|0)==4?(c[m>>2]=Nv(c[t>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0,(c[m>>2]|0)!=0):0)?(c[c[m>>2]>>2]|0)!=0:0){c[u>>2]=(c[m>>2]|0)+8+(((c[c[m>>2]>>2]|0)-1|0)*72|0);if(c[(c[p>>2]|0)+4>>2]|0){w=Dw(c[t>>2]|0,c[p>>2]|0)|0;c[(c[u>>2]|0)+12>>2]=w}c[(c[u>>2]|0)+20>>2]=c[q>>2];c[(c[u>>2]|0)+48>>2]=c[r>>2];c[(c[u>>2]|0)+52>>2]=c[s>>2];c[k>>2]=c[m>>2];w=c[k>>2]|0;i=x;return w|0}Zu(c[t>>2]|0,c[r>>2]|0);_u(c[t>>2]|0,c[s>>2]|0);Wu(c[t>>2]|0,c[q>>2]|0);c[k>>2]=0;w=c[k>>2]|0;i=x;return w|0}function Fv(d,e,f,g,h,j,k,l,m,n){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+128|0;o=B+112|0;p=B+108|0;q=B+104|0;r=B+100|0;s=B+96|0;t=B+92|0;u=B+88|0;v=B+116|0;w=B+84|0;x=B+80|0;z=B+76|0;A=B;y=B+72|0;c[o>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[s>>2]=h;c[t>>2]=j;c[u>>2]=k;b[v>>1]=l;c[w>>2]=m;c[x>>2]=n;c[y>>2]=c[c[o>>2]>>2];l=Fw(c[y>>2]|0,72,0)|0;c[z>>2]=l;c[z>>2]=(c[z>>2]|0)==0?A:l;if(!(c[p>>2]|0)){l=c[o>>2]|0;c[p>>2]=Gv(l,0,Jv(c[y>>2]|0,158,0)|0)|0}c[c[z>>2]>>2]=c[p>>2];a[(c[z>>2]|0)+4>>0]=119;b[(c[z>>2]|0)+6>>1]=b[v>>1]|0;c[(c[z>>2]|0)+8>>2]=0;c[(c[z>>2]|0)+12>>2]=0;c[(c[z>>2]|0)+16>>2]=-1;c[(c[z>>2]|0)+16+4>>2]=-1;l=(c[z>>2]|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;if(!(c[q>>2]|0))c[q>>2]=ph(c[y>>2]|0,80,0)|0;c[(c[z>>2]|0)+32>>2]=c[q>>2];c[(c[z>>2]|0)+36>>2]=c[r>>2];c[(c[z>>2]|0)+40>>2]=c[s>>2];c[(c[z>>2]|0)+44>>2]=c[t>>2];c[(c[z>>2]|0)+48>>2]=c[u>>2];c[(c[z>>2]|0)+52>>2]=0;c[(c[z>>2]|0)+56>>2]=0;c[(c[z>>2]|0)+60>>2]=c[w>>2];c[(c[z>>2]|0)+64>>2]=c[x>>2];c[(c[z>>2]|0)+68>>2]=0;if(!(a[(c[y>>2]|0)+65>>0]|0)){A=c[z>>2]|0;i=B;return A|0}Xu(c[y>>2]|0,c[z>>2]|0,(c[z>>2]|0)!=(A|0)&1);c[z>>2]=0;A=c[z>>2]|0;i=B;return A|0}function Gv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;f=l+24|0;m=l+20|0;g=l+16|0;h=l+12|0;j=l+8|0;e=l+4|0;k=l;c[m>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=c[c[m>>2]>>2];if(!(c[g>>2]|0)){c[g>>2]=Fw(c[j>>2]|0,8,0)|0;if((c[g>>2]|0)!=0?(c[c[g>>2]>>2]=0,m=Fw(c[j>>2]|0,20,0)|0,c[(c[g>>2]|0)+4>>2]=m,(c[(c[g>>2]|0)+4>>2]|0)!=0):0)e=7;else e=8}else if(!(c[c[g>>2]>>2]&(c[c[g>>2]>>2]|0)-1)){c[e>>2]=Ew(c[j>>2]|0,c[(c[g>>2]|0)+4>>2]|0,(c[c[g>>2]>>2]<<1)*20|0,0)|0;if(!(c[e>>2]|0))e=8;else{c[(c[g>>2]|0)+4>>2]=c[e>>2];e=7}}else e=7;if((e|0)==7){j=c[g>>2]|0;m=c[j>>2]|0;c[j>>2]=m+1;c[k>>2]=(c[(c[g>>2]|0)+4>>2]|0)+(m*20|0);m=c[k>>2]|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[c[k>>2]>>2]=c[h>>2];c[f>>2]=c[g>>2];m=c[f>>2]|0;i=l;return m|0}else if((e|0)==8){Zu(c[j>>2]|0,c[h>>2]|0);Vu(c[j>>2]|0,c[g>>2]|0);c[f>>2]=0;m=c[f>>2]|0;i=l;return m|0}return 0}function Hv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;j=l+4|0;k=l;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if(!(c[g>>2]|0)){i=l;return}c[k>>2]=(c[(c[g>>2]|0)+4>>2]|0)+(((c[c[g>>2]>>2]|0)-1|0)*20|0);a=Iw(c[c[f>>2]>>2]|0,c[c[h>>2]>>2]|0,c[(c[h>>2]|0)+4>>2]|0,0)|0;c[(c[k>>2]|0)+4>>2]=a;if(!(c[j>>2]|0)){i=l;return}if(!(c[(c[k>>2]|0)+4>>2]|0)){i=l;return}Jw(c[(c[k>>2]|0)+4>>2]|0)|0;i=l;return}function Iv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;k=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c[k>>2]=a;c[e>>2]=b;c[f>>2]=d;c[g>>2]=c[c[k>>2]>>2];if(!(c[e>>2]|0)){i=j;return}c[h>>2]=(c[(c[e>>2]|0)+4>>2]|0)+(((c[c[e>>2]>>2]|0)-1|0)*20|0);Sf(c[g>>2]|0,c[(c[h>>2]|0)+8>>2]|0);k=(c[(c[f>>2]|0)+8>>2]|0)-(c[(c[f>>2]|0)+4>>2]|0)|0;k=Iw(c[g>>2]|0,c[(c[f>>2]|0)+4>>2]|0,k,((k|0)<0)<<31>>31)|0;c[(c[h>>2]|0)+8>>2]=k;i=j;return}function Jv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+32|0;f=j+16|0;g=j+12|0;e=j+8|0;h=j;c[f>>2]=a;c[g>>2]=b;c[e>>2]=d;c[h>>2]=c[e>>2];if(c[e>>2]|0)e=If(c[e>>2]|0)|0;else e=0;c[h+4>>2]=e;h=cz(c[f>>2]|0,c[g>>2]|0,h,0)|0;i=j;return h|0}function Kv(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;if(!(c[d>>2]|0)){i=f;return}c[e>>2]=(c[c[d>>2]>>2]|0)-1;while(1){if((c[e>>2]|0)<=0)break;a[(c[d>>2]|0)+8+((c[e>>2]|0)*72|0)+36>>0]=a[(c[d>>2]|0)+8+(((c[e>>2]|0)-1|0)*72|0)+36>>0]|0;c[e>>2]=(c[e>>2]|0)+-1}a[(c[d>>2]|0)+8+36>>0]=0;i=f;return}function Lv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;if(!(c[g>>2]|0)){i=k;return}if((c[c[g>>2]>>2]|0)<=0){i=k;return}c[j>>2]=(c[g>>2]|0)+8+(((c[c[g>>2]>>2]|0)-1|0)*72|0);if((c[(c[h>>2]|0)+4>>2]|0)==1?(c[c[h>>2]>>2]|0)==0:0){b=(c[j>>2]|0)+36+1|0;a[b>>0]=a[b>>0]&-2|1;i=k;return}b=Dw(c[c[f>>2]>>2]|0,c[h>>2]|0)|0;c[(c[j>>2]|0)+64>>2]=b;b=(c[j>>2]|0)+36+1|0;a[b>>0]=a[b>>0]&-3|((c[(c[j>>2]|0)+64>>2]|0)!=0&1)<<1&255;i=k;return}function Mv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;if(c[g>>2]|0){c[j>>2]=(c[g>>2]|0)+8+(((c[c[g>>2]>>2]|0)-1|0)*72|0);c[(c[j>>2]|0)+64>>2]=c[h>>2];b=(c[j>>2]|0)+36+1|0;a[b>>0]=a[b>>0]&-5|4;i=k;return}else{Vu(c[c[f>>2]>>2]|0,c[h>>2]|0);i=k;return}}function Nv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+24|0;h=o+20|0;j=o+16|0;k=o+12|0;l=o+8|0;m=o+4|0;n=o;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;do if(!(c[j>>2]|0)){c[j>>2]=Fw(c[h>>2]|0,80,0)|0;if(c[j>>2]|0){c[(c[j>>2]|0)+4>>2]=1;c[c[j>>2]>>2]=0;break}c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}while(0);c[j>>2]=UF(c[h>>2]|0,c[j>>2]|0,1,c[c[j>>2]>>2]|0)|0;if(a[(c[h>>2]|0)+65>>0]|0){Yu(c[h>>2]|0,c[j>>2]|0);c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}c[m>>2]=(c[j>>2]|0)+8+(((c[c[j>>2]>>2]|0)-1|0)*72|0);if((c[l>>2]|0)!=0?(c[c[l>>2]>>2]|0)==0:0)c[l>>2]=0;if(c[l>>2]|0){c[n>>2]=c[l>>2];c[l>>2]=c[k>>2];c[k>>2]=c[n>>2]}n=Dw(c[h>>2]|0,c[k>>2]|0)|0;c[(c[m>>2]|0)+8>>2]=n;n=Dw(c[h>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+4>>2]=n;c[g>>2]=c[j>>2];n=c[g>>2]|0;i=o;return n|0}function Ov(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+80|0;r=u+16|0;q=u;g=u+64|0;h=u+60|0;j=u+56|0;k=u+52|0;o=u+48|0;l=u+36|0;p=u+32|0;m=u+28|0;n=u+24|0;s=u+20|0;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;c[o>>2]=0;c[l>>2]=c[h>>2];c[l+4>>2]=c[j>>2];c[l+8>>2]=c[k>>2];c[m>>2]=0;while(1){if((c[m>>2]|0)>=3)break;if(!(c[l+(c[m>>2]<<2)>>2]|0))break;c[p>>2]=c[l+(c[m>>2]<<2)>>2];c[n>>2]=0;while(1){if((c[n>>2]|0)>=7)break;if((c[(c[p>>2]|0)+4>>2]|0)==(d[36199+((c[n>>2]|0)*3|0)+1>>0]|0|0)?(zd(c[c[p>>2]>>2]|0,36220+(d[36199+((c[n>>2]|0)*3|0)>>0]|0)|0,c[(c[p>>2]|0)+4>>2]|0)|0)==0:0){t=8;break}c[n>>2]=(c[n>>2]|0)+1}if((t|0)==8){t=0;c[o>>2]=c[o>>2]|(d[36199+((c[n>>2]|0)*3|0)+2>>0]|0)}if((c[n>>2]|0)>=7){t=11;break}c[m>>2]=(c[m>>2]|0)+1}if((t|0)==11)c[o>>2]=c[o>>2]|64;if((c[o>>2]&33|0)!=33?(c[o>>2]&64|0)==0:0){if(!(c[o>>2]&32)){t=c[o>>2]|0;i=u;return t|0}if((c[o>>2]&24|0)==8){t=c[o>>2]|0;i=u;return t|0}Ah(c[g>>2]|0,36300,r);c[o>>2]=1;t=c[o>>2]|0;i=u;return t|0}c[s>>2]=36254;if(!(c[k>>2]|0))c[s>>2]=(c[s>>2]|0)+1;t=c[g>>2]|0;a=c[j>>2]|0;r=c[s>>2]|0;s=c[k>>2]|0;c[q>>2]=c[h>>2];c[q+4>>2]=a;c[q+8>>2]=r;c[q+12>>2]=s;Ah(t,36256,q);c[o>>2]=1;t=c[o>>2]|0;i=u;return t|0}function Pv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=d;if((c[e>>2]|0)==0|(c[f>>2]|0)<0){i=g;return}a[(c[(c[e>>2]|0)+4>>2]|0)+(((c[c[e>>2]>>2]|0)-1|0)*20|0)+12>>0]=c[f>>2];i=g;return}function Qv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+4|0;g=j;h=j+8|0;c[f>>2]=b;c[g>>2]=d;a[h>>0]=e;if(!(c[g>>2]|0)){i=j;return}c[(c[g>>2]|0)+4>>2]=c[(c[f>>2]|0)+536>>2];c[(c[f>>2]|0)+536>>2]=c[g>>2];if(!(a[h>>0]|0)){i=j;return}c[(c[f>>2]|0)+540>>2]=c[g>>2];i=j;return}function Rv(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=i;i=i+192|0;H=Y+180|0;I=Y+176|0;J=Y+172|0;X=Y+168|0;V=Y+164|0;t=Y+160|0;N=Y+156|0;G=Y+152|0;T=Y+148|0;n=Y+144|0;O=Y+140|0;Q=Y+136|0;o=Y+132|0;M=Y+128|0;W=Y+120|0;r=Y+88|0;l=Y+84|0;S=Y+80|0;q=Y+76|0;z=Y+72|0;w=Y+64|0;K=Y+60|0;U=Y+56|0;m=Y+52|0;p=Y+188|0;B=Y+48|0;D=Y+186|0;P=Y+44|0;C=Y+40|0;v=Y+36|0;L=Y+32|0;j=Y+28|0;R=Y+24|0;E=Y+20|0;x=Y+16|0;s=Y+184|0;k=Y+12|0;F=Y+8|0;y=Y+4|0;A=Y;c[H>>2]=f;c[I>>2]=g;c[J>>2]=h;c[O>>2]=0;c[Q>>2]=0;c[S>>2]=-1;c[K>>2]=0;c[m>>2]=0;b[p>>1]=1;c[P>>2]=0;c[C>>2]=0;c[v>>2]=0;c[L>>2]=0;c[j>>2]=0;c[W>>2]=0;c[W+4>>2]=0;c[M>>2]=c[c[H>>2]>>2];a:do if(((c[(c[H>>2]|0)+68>>2]|0)==0?(d[(c[M>>2]|0)+65>>0]|0)==0:0)?(c[V>>2]=DB(c[H>>2]|0,c[I>>2]|0)|0,(c[V>>2]|0)!=0):0){c[E>>2]=sC(c[H>>2]|0,c[V>>2]|0,109,0,0)|0;c[R>>2]=(c[(c[V>>2]|0)+12>>2]|0)!=0&1;if(c[E>>2]|0)f=1;else f=(DE(c[H>>2]|0,c[V>>2]|0,0,0)|0)!=0;c[x>>2]=f&1;if(((zx(c[H>>2]|0,c[V>>2]|0)|0)==0?(tC(c[H>>2]|0,c[V>>2]|0,(c[E>>2]|0)!=0?1:0)|0)==0:0)?(c[l>>2]=Dh(c[M>>2]|0,c[(c[V>>2]|0)+64>>2]|0)|0,c[t>>2]=c[(c[(c[M>>2]|0)+16>>2]|0)+(c[l>>2]<<4)>>2],c[q>>2]=Mw(c[H>>2]|0,9,c[c[V>>2]>>2]|0,0,c[t>>2]|0)|0,(c[q>>2]|0)!=1):0){h=(c[H>>2]|0)+72|0;t=c[h>>2]|0;c[h>>2]=t+1;c[(c[I>>2]|0)+8+44>>2]=t;c[n>>2]=t;c[o>>2]=0;c[T>>2]=c[(c[V>>2]|0)+8>>2];while(1){if(!(c[T>>2]|0))break;t=(c[H>>2]|0)+72|0;c[t>>2]=(c[t>>2]|0)+1;c[T>>2]=c[(c[T>>2]|0)+20>>2];c[o>>2]=(c[o>>2]|0)+1}if(c[R>>2]|0)PF(c[H>>2]|0,W,c[c[V>>2]>>2]|0);c[X>>2]=Pw(c[H>>2]|0)|0;if(c[X>>2]|0){if(!(d[(c[H>>2]|0)+18>>0]|0))uC(c[X>>2]|0);ax(c[H>>2]|0,1,c[l>>2]|0);if(c[R>>2]|0){QF(c[H>>2]|0,c[V>>2]|0,c[J>>2]|0,c[n>>2]|0);t=c[n>>2]|0;c[Q>>2]=t;c[O>>2]=t}c[r>>2]=0;c[r+4>>2]=0;c[r+8>>2]=0;c[r+12>>2]=0;c[r+16>>2]=0;c[r+20>>2]=0;c[r+24>>2]=0;c[r+28>>2]=0;c[r>>2]=c[H>>2];c[r+4>>2]=c[I>>2];if(!(fy(r,c[J>>2]|0)|0)){if(c[(c[M>>2]|0)+24>>2]&128){r=(c[H>>2]|0)+76|0;t=(c[r>>2]|0)+1|0;c[r>>2]=t;c[S>>2]=t;Rw(c[X>>2]|0,22,0,c[S>>2]|0)|0}b:do if(!((c[q>>2]|0)==0&(c[J>>2]|0)==0^1|(c[x>>2]|0)!=0)?(d[(c[V>>2]|0)+42>>0]&16|0)==0:0){yz(c[H>>2]|0,c[l>>2]|0,c[(c[V>>2]|0)+28>>2]|0,1,c[c[V>>2]>>2]|0);if(!(d[(c[V>>2]|0)+42>>0]&32))Uw(c[X>>2]|0,119,c[(c[V>>2]|0)+28>>2]|0,c[l>>2]|0,c[S>>2]|0,c[c[V>>2]>>2]|0,-2)|0;c[T>>2]=c[(c[V>>2]|0)+8>>2];while(1){if(!(c[T>>2]|0))break b;Rw(c[X>>2]|0,119,c[(c[T>>2]|0)+44>>2]|0,c[l>>2]|0)|0;c[T>>2]=c[(c[T>>2]|0)+20>>2]}}else u=29;while(0);c:do if((u|0)==29){b[s>>1]=12;b[s>>1]=e[s>>1]|((c[x>>2]|0)!=0?0:8192);if(!(d[(c[V>>2]|0)+42>>0]&32)){c[U>>2]=0;b[p>>1]=1;t=(c[H>>2]|0)+76|0;u=(c[t>>2]|0)+1|0;c[t>>2]=u;c[C>>2]=u;Rw(c[X>>2]|0,25,0,c[C>>2]|0)|0}else{c[U>>2]=Ej(c[V>>2]|0)|0;b[p>>1]=b[(c[U>>2]|0)+50>>1]|0;c[m>>2]=(c[(c[H>>2]|0)+76>>2]|0)+1;t=(c[H>>2]|0)+76|0;c[t>>2]=(c[t>>2]|0)+(b[p>>1]|0);t=(c[H>>2]|0)+72|0;u=c[t>>2]|0;c[t>>2]=u+1;c[P>>2]=u;c[j>>2]=Rw(c[X>>2]|0,57,c[P>>2]|0,b[p>>1]|0)|0;Az(c[H>>2]|0,c[U>>2]|0)}c[G>>2]=RC(c[H>>2]|0,c[I>>2]|0,c[J>>2]|0,0,0,b[s>>1]|0,(c[n>>2]|0)+1|0)|0;if(!(c[G>>2]|0))break a;c[z>>2]=SF(c[G>>2]|0,w)|0;if(c[(c[M>>2]|0)+24>>2]&128)Rw(c[X>>2]|0,37,c[S>>2]|0,1)|0;do if(c[U>>2]|0){c[N>>2]=0;while(1){if((c[N>>2]|0)>=(b[p>>1]|0))break;tA(c[X>>2]|0,c[V>>2]|0,c[n>>2]|0,b[(c[(c[U>>2]|0)+4>>2]|0)+(c[N>>2]<<1)>>1]|0,(c[m>>2]|0)+(c[N>>2]|0)|0);c[N>>2]=(c[N>>2]|0)+1}c[B>>2]=c[m>>2]}else{c[B>>2]=(c[(c[H>>2]|0)+76>>2]|0)+1;c[B>>2]=zA(c[H>>2]|0,c[V>>2]|0,-1,c[n>>2]|0,c[B>>2]|0,0)|0;if((c[B>>2]|0)<=(c[(c[H>>2]|0)+76>>2]|0))break;c[(c[H>>2]|0)+76>>2]=c[B>>2]}while(0);do if(!(c[z>>2]|0))if(c[U>>2]|0){r=(c[H>>2]|0)+76|0;q=(c[r>>2]|0)+1|0;c[r>>2]=q;c[B>>2]=q;b[D>>1]=0;q=c[X>>2]|0;r=c[m>>2]|0;s=b[p>>1]|0;t=c[B>>2]|0;u=dC(c[c[H>>2]>>2]|0,c[U>>2]|0)|0;Uw(q,49,r,s,t,u,b[p>>1]|0)|0;Rw(c[X>>2]|0,110,c[P>>2]|0,c[B>>2]|0)|0;break}else{b[D>>1]=1;Rw(c[X>>2]|0,129,c[C>>2]|0,c[B>>2]|0)|0;break}else{b[D>>1]=b[p>>1]|0;u=(c[o>>2]|0)+2|0;c[K>>2]=Fw(c[M>>2]|0,u,((u|0)<0)<<31>>31)|0;if(!(c[K>>2]|0)){SC(c[G>>2]|0);break a}kR(c[K>>2]|0,1,(c[o>>2]|0)+1|0)|0;a[(c[K>>2]|0)+((c[o>>2]|0)+1)>>0]=0;if((c[w>>2]|0)>=0)a[(c[K>>2]|0)+((c[w>>2]|0)-(c[n>>2]|0))>>0]=0;if((c[w+4>>2]|0)>=0)a[(c[K>>2]|0)+((c[w+4>>2]|0)-(c[n>>2]|0))>>0]=0;if(!(c[j>>2]|0))break;pA(c[X>>2]|0,c[j>>2]|0)|0}while(0);if(c[z>>2]|0)c[v>>2]=Cz(c[X>>2]|0)|0;else SC(c[G>>2]|0);do if(!(c[R>>2]|0)){c[k>>2]=0;if((c[z>>2]|0)==2)c[k>>2]=UA(c[H>>2]|0)|0;gC(c[H>>2]|0,c[V>>2]|0,55,8,c[n>>2]|0,c[K>>2]|0,O,Q)|0;if((c[z>>2]|0)!=2)break;Fz(c[X>>2]|0,c[k>>2]|0)}while(0);do if(!(c[z>>2]|0)){f=c[X>>2]|0;if(c[U>>2]|0){c[L>>2]=xz(f,108,c[P>>2]|0)|0;Rw(c[X>>2]|0,101,c[P>>2]|0,c[B>>2]|0)|0;break}else{c[L>>2]=Vw(f,130,c[C>>2]|0,0,c[B>>2]|0)|0;break}}else{if(d[(c[V>>2]|0)+42>>0]&16)break;if(!(d[(c[K>>2]|0)+((c[O>>2]|0)-(c[n>>2]|0))>>0]|0))break;Eh(c[X>>2]|0,68,c[O>>2]|0,c[v>>2]|0,c[B>>2]|0,b[D>>1]|0)|0}while(0);do if(d[(c[V>>2]|0)+42>>0]&16){c[F>>2]=Ax(c[M>>2]|0,c[V>>2]|0)|0;EC(c[H>>2]|0,c[V>>2]|0);Uw(c[X>>2]|0,12,0,1,c[B>>2]|0,c[F>>2]|0,-10)|0;Fh(c[X>>2]|0,2);Bx(c[H>>2]|0);if((c[z>>2]|0)!=1)break;if(c[(c[H>>2]|0)+416>>2]|0)break;a[(c[H>>2]|0)+20>>0]=0}else{c[y>>2]=(d[(c[H>>2]|0)+18>>0]|0)==0&1;c[A>>2]=-1;do if(!(c[x>>2]|0)){if((c[w+4>>2]|0)==(c[O>>2]|0))break;c[A>>2]=c[w+4>>2]}while(0);FE(c[H>>2]|0,c[V>>2]|0,c[E>>2]|0,c[O>>2]|0,c[Q>>2]|0,c[B>>2]|0,b[D>>1]|0,c[y>>2]&255,10,c[z>>2]&255,c[A>>2]|0)}while(0);do if(!(c[z>>2]|0)){f=c[X>>2]|0;if(c[U>>2]|0){Rw(f,7,c[P>>2]|0,(c[L>>2]|0)+1|0)|0;Fz(c[X>>2]|0,c[L>>2]|0);break}else{Ez(f,c[L>>2]|0)|0;Fz(c[X>>2]|0,c[L>>2]|0);break}}else{Gz(c[X>>2]|0,c[v>>2]|0);SC(c[G>>2]|0)}while(0);if(c[R>>2]|0)break;if(d[(c[V>>2]|0)+42>>0]&16)break;if(!(c[U>>2]|0))xz(c[X>>2]|0,61,c[O>>2]|0)|0;c[N>>2]=0;c[T>>2]=c[(c[V>>2]|0)+8>>2];while(1){if(!(c[T>>2]|0))break c;xz(c[X>>2]|0,61,(c[Q>>2]|0)+(c[N>>2]|0)|0)|0;c[N>>2]=(c[N>>2]|0)+1;c[T>>2]=c[(c[T>>2]|0)+20>>2]}}while(0);if((d[(c[H>>2]|0)+18>>0]|0)==0?(c[(c[H>>2]|0)+420>>2]|0)==0:0)IC(c[H>>2]|0);if(((c[(c[M>>2]|0)+24>>2]&128|0)!=0?(a[(c[H>>2]|0)+18>>0]|0)==0:0)?(c[(c[H>>2]|0)+420>>2]|0)==0:0){Rw(c[X>>2]|0,33,c[S>>2]|0,1)|0;OB(c[X>>2]|0,1);PB(c[X>>2]|0,0,0,36186,0)|0}}}}}while(0);TF(W);Yu(c[M>>2]|0,c[I>>2]|0);Zu(c[M>>2]|0,c[J>>2]|0);Sf(c[M>>2]|0,c[K>>2]|0);i=Y;return}function Sv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;j=k;e=k+16|0;f=k+12|0;g=k+8|0;h=k+4|0;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=c[(c[c[e>>2]>>2]|0)+88+8>>2];if(!(c[f>>2]|0)){i=k;return}if((c[c[f>>2]>>2]|0)<=(c[h>>2]|0)){i=k;return}d=c[e>>2]|0;c[j>>2]=c[g>>2];Ah(d,36163,j);i=k;return}function Tv(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;oa=i;i=i+256|0;q=oa;X=oa+244|0;Y=oa+240|0;Z=oa+236|0;_=oa+232|0;K=oa+228|0;da=oa+224|0;C=oa+220|0;ka=oa+216|0;ba=oa+212|0;x=oa+208|0;na=oa+204|0;ia=oa+200|0;ja=oa+196|0;v=oa+192|0;t=oa+188|0;ea=oa+184|0;ga=oa+180|0;ca=oa+176|0;L=oa+172|0;aa=oa+168|0;$=oa+164|0;y=oa+254|0;B=oa+253|0;O=oa+252|0;z=oa+160|0;ma=oa+152|0;p=oa+120|0;l=oa+112|0;R=oa+108|0;P=oa+104|0;ha=oa+100|0;W=oa+96|0;H=oa+92|0;S=oa+88|0;G=oa+84|0;D=oa+80|0;fa=oa+76|0;Q=oa+72|0;s=oa+64|0;la=oa+56|0;V=oa+52|0;U=oa+48|0;I=oa+44|0;F=oa+40|0;A=oa+36|0;T=oa+32|0;n=oa+28|0;o=oa+24|0;m=oa+250|0;u=oa+20|0;w=oa+248|0;r=oa+16|0;E=oa+12|0;M=oa+8|0;N=oa+4|0;c[X>>2]=f;c[Y>>2]=g;c[Z>>2]=h;c[_>>2]=j;c[K>>2]=k;c[ba>>2]=0;c[L>>2]=0;c[aa>>2]=0;c[z>>2]=0;c[fa>>2]=0;c[Q>>2]=0;c[la>>2]=0;c[V>>2]=0;c[U>>2]=0;c[I>>2]=0;c[F>>2]=0;c[A>>2]=0;c[T>>2]=0;c[ma>>2]=0;c[ma+4>>2]=0;c[ca>>2]=c[c[X>>2]>>2];if(c[(c[X>>2]|0)+68>>2]|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(d[(c[ca>>2]|0)+65>>0]|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}c[ka>>2]=DB(c[X>>2]|0,c[Y>>2]|0)|0;if(!(c[ka>>2]|0)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}c[l>>2]=Dh(c[c[X>>2]>>2]|0,c[(c[ka>>2]|0)+64>>2]|0)|0;c[S>>2]=sC(c[X>>2]|0,c[ka>>2]|0,110,c[Z>>2]|0,G)|0;c[H>>2]=(c[(c[ka>>2]|0)+12>>2]|0)!=0&1;if(zx(c[X>>2]|0,c[ka>>2]|0)|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(tC(c[X>>2]|0,c[ka>>2]|0,c[G>>2]|0)|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}g=(c[X>>2]|0)+72|0;j=c[g>>2]|0;c[g>>2]=j+1;c[ea>>2]=j;c[t>>2]=j;c[(c[Y>>2]|0)+8+44>>2]=j;c[ga>>2]=(c[ea>>2]|0)+1;if(!(d[(c[ka>>2]|0)+42>>0]&32))k=0;else k=Ej(c[ka>>2]|0)|0;c[ja>>2]=k;c[v>>2]=0;c[ia>>2]=c[(c[ka>>2]|0)+8>>2];while(1){if(!(c[ia>>2]|0))break;if((c[ja>>2]|0)!=0?(a[(c[ia>>2]|0)+55>>0]&3|0)==2:0){c[ea>>2]=c[(c[X>>2]|0)+72>>2];c[(c[Y>>2]|0)+8+44>>2]=c[ea>>2]}j=(c[X>>2]|0)+72|0;c[j>>2]=(c[j>>2]|0)+1;c[ia>>2]=c[(c[ia>>2]|0)+20>>2];c[v>>2]=(c[v>>2]|0)+1}c[aa>>2]=Fw(c[ca>>2]|0,((b[(c[ka>>2]|0)+34>>1]|0)+(c[v>>2]|0)<<2)+(c[v>>2]|0)+2|0,0)|0;if(!(c[aa>>2]|0)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}c[L>>2]=(c[aa>>2]|0)+(b[(c[ka>>2]|0)+34>>1]<<2);c[$>>2]=(c[L>>2]|0)+(c[v>>2]<<2);kR(c[$>>2]|0,1,(c[v>>2]|0)+1|0)|0;a[(c[$>>2]|0)+((c[v>>2]|0)+1)>>0]=0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0))break;c[(c[aa>>2]|0)+(c[da>>2]<<2)>>2]=-1;c[da>>2]=(c[da>>2]|0)+1}c[p>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;c[p+20>>2]=0;c[p+24>>2]=0;c[p+28>>2]=0;c[p>>2]=c[X>>2];c[p+4>>2]=c[Y>>2];a[y>>0]=0;a[B>>0]=0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(c[c[Z>>2]>>2]|0)){J=41;break}if(fy(p,c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)>>2]|0)|0){J=185;break}c[C>>2]=0;while(1){if((c[C>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0))break;j=(Td(c[(c[(c[ka>>2]|0)+4>>2]|0)+((c[C>>2]|0)*24|0)>>2]|0,c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)+4>>2]|0)|0)==0;k=c[C>>2]|0;if(j){J=23;break}c[C>>2]=k+1}if((J|0)==23){J=0;if((k|0)!=(b[(c[ka>>2]|0)+32>>1]|0)){if((c[ja>>2]|0)!=0?(d[(c[(c[ka>>2]|0)+4>>2]|0)+((c[C>>2]|0)*24|0)+23>>0]&1|0)!=0:0)a[y>>0]=1}else{a[B>>0]=1;c[z>>2]=c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)>>2]}c[(c[aa>>2]|0)+(c[C>>2]<<2)>>2]=c[da>>2]}if((c[C>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0)){if(c[ja>>2]|0){J=34;break}if(!(qi(c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)+4>>2]|0)|0)){J=34;break}c[C>>2]=-1;a[B>>0]=1;c[z>>2]=c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)>>2]}if((c[C>>2]|0)<0)k=20759;else k=c[(c[(c[ka>>2]|0)+4>>2]|0)+((c[C>>2]|0)*24|0)>>2]|0;c[n>>2]=Mw(c[X>>2]|0,23,c[c[ka>>2]>>2]|0,k,c[(c[(c[ca>>2]|0)+16>>2]|0)+(c[l>>2]<<4)>>2]|0)|0;if((c[n>>2]|0)==1){J=185;break}if((c[n>>2]|0)==2)c[(c[aa>>2]|0)+(c[C>>2]<<2)>>2]=-1;c[da>>2]=(c[da>>2]|0)+1}if((J|0)==34){na=c[X>>2]|0;c[q>>2]=c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[da>>2]|0)*20|0)+4>>2];Ah(na,24991,q);a[(c[X>>2]|0)+17>>0]=1;TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}else if((J|0)==41){a[O>>0]=(d[B>>0]|0)+(d[y>>0]|0);n=(d[(c[ka>>2]|0)+42>>0]&16|0)!=0;q=(c[Y>>2]|0)+8+56|0;c[q>>2]=n?-1:0;c[q+4>>2]=n?-1:0;c[P>>2]=DE(c[X>>2]|0,c[ka>>2]|0,c[aa>>2]|0,d[O>>0]|0)|0;c[C>>2]=0;c[ia>>2]=c[(c[ka>>2]|0)+8>>2];while(1){if(!(c[ia>>2]|0))break;a:do if((!((d[O>>0]|0)!=0|(c[P>>2]|0)!=0)?(c[(c[ia>>2]|0)+36>>2]|0)==0:0)?(c[ia>>2]|0)!=(c[ja>>2]|0):0){c[o>>2]=0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(e[(c[ia>>2]|0)+50>>1]|0))break a;b[m>>1]=b[(c[(c[ia>>2]|0)+4>>2]|0)+(c[da>>2]<<1)>>1]|0;if((b[m>>1]|0)<0)break;if((c[(c[aa>>2]|0)+(b[m>>1]<<2)>>2]|0)>=0)break;c[da>>2]=(c[da>>2]|0)+1}n=(c[X>>2]|0)+76|0;q=(c[n>>2]|0)+1|0;c[n>>2]=q;c[o>>2]=q}else J=46;while(0);if((J|0)==46){J=0;n=(c[X>>2]|0)+76|0;q=(c[n>>2]|0)+1|0;c[n>>2]=q;c[o>>2]=q}if(!(c[o>>2]|0))a[(c[$>>2]|0)+((c[C>>2]|0)+1)>>0]=0;c[(c[L>>2]|0)+(c[C>>2]<<2)>>2]=c[o>>2];c[ia>>2]=c[(c[ia>>2]|0)+20>>2];c[C>>2]=(c[C>>2]|0)+1}c[na>>2]=Pw(c[X>>2]|0)|0;if(!(c[na>>2]|0)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(!(d[(c[X>>2]|0)+18>>0]|0))uC(c[na>>2]|0);ax(c[X>>2]|0,1,c[l>>2]|0);if(!(d[(c[ka>>2]|0)+42>>0]&16)){q=(c[X>>2]|0)+76|0;o=(c[q>>2]|0)+1|0;c[q>>2]=o;c[A>>2]=o;o=(c[X>>2]|0)+76|0;q=(c[o>>2]|0)+1|0;c[o>>2]=q;c[U>>2]=q;c[V>>2]=q;if((d[y>>0]|0)!=0|(c[S>>2]|0)!=0|(c[P>>2]|0)!=0){c[F>>2]=(c[(c[X>>2]|0)+76>>2]|0)+1;q=(c[X>>2]|0)+76|0;c[q>>2]=(c[q>>2]|0)+(b[(c[ka>>2]|0)+34>>1]|0)}if((d[O>>0]|0)!=0|(c[S>>2]|0)!=0|(c[P>>2]|0)!=0){o=(c[X>>2]|0)+76|0;q=(c[o>>2]|0)+1|0;c[o>>2]=q;c[U>>2]=q}c[I>>2]=(c[(c[X>>2]|0)+76>>2]|0)+1;q=(c[X>>2]|0)+76|0;c[q>>2]=(c[q>>2]|0)+(b[(c[ka>>2]|0)+34>>1]|0)}if(c[H>>2]|0)PF(c[X>>2]|0,ma,c[c[ka>>2]>>2]|0);if(c[H>>2]|0)QF(c[X>>2]|0,c[ka>>2]|0,c[_>>2]|0,c[ea>>2]|0);if(fy(p,c[_>>2]|0)|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(d[(c[ka>>2]|0)+42>>0]&16){RF(c[X>>2]|0,c[Y>>2]|0,c[ka>>2]|0,c[Z>>2]|0,c[z>>2]|0,c[aa>>2]|0,c[_>>2]|0,c[K>>2]|0);TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(!(d[(c[ka>>2]|0)+42>>0]&32)){Vw(c[na>>2]|0,25,0,c[A>>2]|0,c[V>>2]|0)|0;c[x>>2]=RC(c[X>>2]|0,c[Y>>2]|0,c[_>>2]|0,0,0,4,c[ga>>2]|0)|0;if(!(c[x>>2]|0)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}c[R>>2]=SF(c[x>>2]|0,s)|0;Rw(c[na>>2]|0,103,c[ea>>2]|0,c[V>>2]|0)|0;if(!(c[R>>2]|0))Rw(c[na>>2]|0,129,c[A>>2]|0,c[V>>2]|0)|0;SC(c[x>>2]|0)}else{b[w>>1]=b[(c[ja>>2]|0)+50>>1]|0;c[u>>2]=(c[(c[X>>2]|0)+76>>2]|0)+1;q=(c[X>>2]|0)+76|0;c[q>>2]=(c[q>>2]|0)+(b[w>>1]|0);q=(c[X>>2]|0)+76|0;p=(c[q>>2]|0)+1|0;c[q>>2]=p;c[T>>2]=p;p=(c[X>>2]|0)+72|0;q=c[p>>2]|0;c[p>>2]=q+1;c[fa>>2]=q;Rw(c[na>>2]|0,25,0,c[u>>2]|0)|0;c[r>>2]=Rw(c[na>>2]|0,57,c[fa>>2]|0,b[w>>1]|0)|0;Az(c[X>>2]|0,c[ja>>2]|0);c[x>>2]=RC(c[X>>2]|0,c[Y>>2]|0,c[_>>2]|0,0,0,4,c[ga>>2]|0)|0;if(!(c[x>>2]|0)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}c[R>>2]=SF(c[x>>2]|0,s)|0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(b[w>>1]|0))break;tA(c[na>>2]|0,c[ka>>2]|0,c[ea>>2]|0,b[(c[(c[ja>>2]|0)+4>>2]|0)+(c[da>>2]<<1)>>1]|0,(c[u>>2]|0)+(c[da>>2]|0)|0);c[da>>2]=(c[da>>2]|0)+1}k=c[na>>2]|0;if(c[R>>2]|0){pA(k,c[r>>2]|0)|0;c[Q>>2]=b[w>>1];c[T>>2]=c[u>>2]}else{p=c[u>>2]|0;q=b[w>>1]|0;r=c[T>>2]|0;u=dC(c[ca>>2]|0,c[ja>>2]|0)|0;Uw(k,49,p,q,r,u,b[w>>1]|0)|0;Rw(c[na>>2]|0,110,c[fa>>2]|0,c[T>>2]|0)|0}SC(c[x>>2]|0)}if((c[(c[ca>>2]|0)+24>>2]&128|0)!=0?(c[(c[X>>2]|0)+420>>2]|0)==0:0){w=(c[X>>2]|0)+76|0;x=(c[w>>2]|0)+1|0;c[w>>2]=x;c[la>>2]=x;Rw(c[na>>2]|0,22,0,c[la>>2]|0)|0}c[ha>>2]=Cz(c[na>>2]|0)|0;if(!(c[H>>2]|0)){b:do if((c[K>>2]|0)==5)kR(c[$>>2]|0,1,(c[v>>2]|0)+1|0)|0;else{c[ia>>2]=c[(c[ka>>2]|0)+8>>2];while(1){if(!(c[ia>>2]|0))break b;if((d[(c[ia>>2]|0)+54>>0]|0)==5)break;c[ia>>2]=c[(c[ia>>2]|0)+20>>2]}kR(c[$>>2]|0,1,(c[v>>2]|0)+1|0)|0}while(0);do if(c[R>>2]|0){if((c[s>>2]|0)>=0)a[(c[$>>2]|0)+((c[s>>2]|0)-(c[t>>2]|0))>>0]=0;if((c[s+4>>2]|0)<0)break;a[(c[$>>2]|0)+((c[s+4>>2]|0)-(c[t>>2]|0))>>0]=0}while(0);gC(c[X>>2]|0,c[ka>>2]|0,55,0,c[t>>2]|0,c[$>>2]|0,0,0)|0}do if(!(c[R>>2]|0)){k=c[na>>2]|0;if(c[ja>>2]|0){c[W>>2]=Cz(k)|0;Rw(c[na>>2]|0,108,c[fa>>2]|0,c[ha>>2]|0)|0;c[ba>>2]=Rw(c[na>>2]|0,101,c[fa>>2]|0,c[T>>2]|0)|0;Eh(c[na>>2]|0,68,c[ea>>2]|0,c[W>>2]|0,c[T>>2]|0,0)|0;break}else{c[W>>2]=Vw(k,130,c[A>>2]|0,c[ha>>2]|0,c[V>>2]|0)|0;Vw(c[na>>2]|0,70,c[ea>>2]|0,c[W>>2]|0,c[V>>2]|0)|0;break}}else{if(!((c[H>>2]|0)!=0?1:(d[(c[$>>2]|0)+((c[ea>>2]|0)-(c[t>>2]|0))>>0]|0)==0))Eh(c[na>>2]|0,68,c[ea>>2]|0,c[ha>>2]|0,c[T>>2]|0,c[Q>>2]|0)|0;c[W>>2]=c[ha>>2];Rw(c[na>>2]|0,76,(c[ja>>2]|0)!=0?c[T>>2]|0:c[V>>2]|0,c[ha>>2]|0)|0}while(0);if(a[B>>0]|0){xA(c[X>>2]|0,c[z>>2]|0,c[U>>2]|0);xz(c[na>>2]|0,38,c[U>>2]|0)|0}do if((d[y>>0]|0)!=0|(c[P>>2]|0)!=0|(c[S>>2]|0)!=0){if(c[P>>2]|0)k=IE(c[X>>2]|0,c[ka>>2]|0)|0;else k=0;c[E>>2]=k;A=HE(c[X>>2]|0,c[S>>2]|0,c[Z>>2]|0,0,3,c[ka>>2]|0,c[K>>2]|0)|0;c[E>>2]=c[E>>2]|A;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0))break;do if((c[E>>2]|0)==-1)J=120;else{if((c[da>>2]|0)<32?(c[E>>2]&1<>2]|0)!=0:0){J=120;break}if(d[(c[(c[ka>>2]|0)+4>>2]|0)+((c[da>>2]|0)*24|0)+23>>0]&1){J=120;break}Rw(c[na>>2]|0,25,0,(c[F>>2]|0)+(c[da>>2]|0)|0)|0}while(0);if((J|0)==120){J=0;tA(c[na>>2]|0,c[ka>>2]|0,c[ea>>2]|0,c[da>>2]|0,(c[F>>2]|0)+(c[da>>2]|0)|0)}c[da>>2]=(c[da>>2]|0)+1}if(!((d[B>>0]|0)==0&(c[ja>>2]|0)==0))break;Rw(c[na>>2]|0,30,c[V>>2]|0,c[U>>2]|0)|0}while(0);c[D>>2]=HE(c[X>>2]|0,c[S>>2]|0,c[Z>>2]|0,1,1,c[ka>>2]|0,c[K>>2]|0)|0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0))break;c:do if((c[da>>2]|0)==(b[(c[ka>>2]|0)+32>>1]|0))Rw(c[na>>2]|0,25,0,(c[I>>2]|0)+(c[da>>2]|0)|0)|0;else{c[C>>2]=c[(c[aa>>2]|0)+(c[da>>2]<<2)>>2];if((c[C>>2]|0)>=0){xA(c[X>>2]|0,c[(c[(c[Z>>2]|0)+4>>2]|0)+((c[C>>2]|0)*20|0)>>2]|0,(c[I>>2]|0)+(c[da>>2]|0)|0);break}do if(!((c[da>>2]|0)>31?1:0==(c[G>>2]&1|0))){if(c[D>>2]&1<>2])break;Rw(c[na>>2]|0,25,0,(c[I>>2]|0)+(c[da>>2]|0)|0)|0;break c}while(0);vD(c[X>>2]|0,c[ka>>2]|0,c[da>>2]|0,c[ea>>2]|0,(c[I>>2]|0)+(c[da>>2]|0)|0)}while(0);c[da>>2]=(c[da>>2]|0)+1}d:do if(c[G>>2]&1){AC(c[na>>2]|0,c[ka>>2]|0,c[I>>2]|0);BC(c[X>>2]|0,c[S>>2]|0,110,c[Z>>2]|0,1,c[ka>>2]|0,c[V>>2]|0,c[K>>2]|0,c[W>>2]|0);k=c[na>>2]|0;h=c[ea>>2]|0;f=c[W>>2]|0;if(c[ja>>2]|0)Eh(k,68,h,f,c[T>>2]|0,c[Q>>2]|0)|0;else Vw(k,70,h,f,c[V>>2]|0)|0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(b[(c[ka>>2]|0)+34>>1]|0))break d;do if((c[(c[aa>>2]|0)+(c[da>>2]<<2)>>2]|0)<0){if((c[da>>2]|0)==(b[(c[ka>>2]|0)+32>>1]|0))break;tA(c[na>>2]|0,c[ka>>2]|0,c[ea>>2]|0,c[da>>2]|0,(c[I>>2]|0)+(c[da>>2]|0)|0)}while(0);c[da>>2]=(c[da>>2]|0)+1}}while(0);do if(!(c[H>>2]|0)){c[M>>2]=0;c[N>>2]=0;FC(c[X>>2]|0,c[ka>>2]|0,c[L>>2]|0,c[ea>>2]|0,c[ga>>2]|0,c[U>>2]|0,c[V>>2]|0,a[O>>0]|0,c[K>>2]&255,c[W>>2]|0,N,c[aa>>2]|0);if(c[P>>2]|0)GC(c[X>>2]|0,c[ka>>2]|0,c[V>>2]|0,0,c[aa>>2]|0,d[O>>0]|0);if(!((c[N>>2]|0)==0?(d[O>>0]|0)==0:0))J=151;do if((J|0)==151){k=c[na>>2]|0;h=c[ea>>2]|0;if(c[ja>>2]|0){c[M>>2]=Eh(k,68,h,0,c[T>>2]|0,c[Q>>2]|0)|0;break}else{c[M>>2]=Vw(k,70,h,0,c[V>>2]|0)|0;break}}while(0);GE(c[X>>2]|0,c[ka>>2]|0,c[ea>>2]|0,c[ga>>2]|0,c[L>>2]|0,-1);if(!((c[P>>2]|0)==0?!((d[O>>0]|0)!=0|(c[ja>>2]|0)!=0):0))Rw(c[na>>2]|0,95,c[ea>>2]|0,0)|0;if(!((c[N>>2]|0)==0?(d[O>>0]|0)==0:0))Fz(c[na>>2]|0,c[M>>2]|0);if(c[P>>2]|0)GC(c[X>>2]|0,c[ka>>2]|0,0,c[U>>2]|0,c[aa>>2]|0,d[O>>0]|0);HC(c[X>>2]|0,c[ka>>2]|0,c[ea>>2]|0,c[ga>>2]|0,c[U>>2]|0,c[L>>2]|0,1,0,0);if(!(c[P>>2]|0))break;JE(c[X>>2]|0,c[ka>>2]|0,c[Z>>2]|0,c[V>>2]|0,c[aa>>2]|0,d[O>>0]|0)}while(0);do if(c[(c[ca>>2]|0)+24>>2]&128){if(c[(c[X>>2]|0)+420>>2]|0)break;Rw(c[na>>2]|0,37,c[la>>2]|0,1)|0}while(0);BC(c[X>>2]|0,c[S>>2]|0,110,c[Z>>2]|0,2,c[ka>>2]|0,c[V>>2]|0,c[K>>2]|0,c[W>>2]|0);do if(!(c[R>>2]|0)){h=c[na>>2]|0;k=c[W>>2]|0;if(c[ja>>2]|0){Gz(h,k);Rw(c[na>>2]|0,7,c[fa>>2]|0,c[ba>>2]|0)|0;break}else{Ez(h,k)|0;break}}while(0);Gz(c[na>>2]|0,c[ha>>2]|0);c[da>>2]=0;c[ia>>2]=c[(c[ka>>2]|0)+8>>2];while(1){if(!(c[ia>>2]|0))break;if(a[(c[$>>2]|0)+((c[da>>2]|0)+1)>>0]|0)Rw(c[na>>2]|0,61,(c[ga>>2]|0)+(c[da>>2]|0)|0,0)|0;c[ia>>2]=c[(c[ia>>2]|0)+20>>2];c[da>>2]=(c[da>>2]|0)+1}if((c[ea>>2]|0)<(c[ga>>2]|0))Rw(c[na>>2]|0,61,c[ea>>2]|0,0)|0;do if(!(d[(c[X>>2]|0)+18>>0]|0)){if(c[(c[X>>2]|0)+420>>2]|0)break;IC(c[X>>2]|0)}while(0);if(!(c[(c[ca>>2]|0)+24>>2]&128)){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(c[(c[X>>2]|0)+420>>2]|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}if(a[(c[X>>2]|0)+18>>0]|0){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}Rw(c[na>>2]|0,33,c[la>>2]|0,1)|0;OB(c[na>>2]|0,1);PB(c[na>>2]|0,0,0,36150,0)|0;TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}else if((J|0)==185){TF(ma);na=c[ca>>2]|0;ma=c[aa>>2]|0;Sf(na,ma);ma=c[ca>>2]|0;na=c[Y>>2]|0;Yu(ma,na);na=c[ca>>2]|0;ma=c[Z>>2]|0;Vu(na,ma);ma=c[ca>>2]|0;na=c[_>>2]|0;Zu(ma,na);i=oa;return}}function LC(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=i;i=i+96|0;o=K+84|0;p=K+80|0;q=K+76|0;r=K+72|0;s=K+68|0;t=K+64|0;u=K+60|0;v=K+56|0;w=K+52|0;x=K+48|0;J=K+44|0;z=K+40|0;C=K+36|0;E=K+32|0;B=K+28|0;H=K+24|0;F=K+20|0;I=K+16|0;G=K+12|0;A=K+8|0;y=K+4|0;D=K;c[o>>2]=e;c[p>>2]=f;c[q>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[u>>2]=l;c[v>>2]=m;c[w>>2]=n;c[J>>2]=Pw(c[o>>2]|0)|0;c[z>>2]=(c[(c[o>>2]|0)+72>>2]|0)-1;c[C>>2]=Cz(c[J>>2]|0)|0;if((c[v>>2]|0)<0)Rw(c[J>>2]|0,136,d[(c[s>>2]|0)+24>>0]|0,c[C>>2]|0)|0;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[(c[s>>2]|0)+20>>2]|0))break;c[E>>2]=(c[(c[t>>2]|0)+(c[x>>2]<<2)>>2]|0)+(c[u>>2]|0)+1;Rw(c[J>>2]|0,76,c[E>>2]|0,c[C>>2]|0)|0;c[x>>2]=(c[x>>2]|0)+1}do if(!(c[w>>2]|0)){if(!(c[r>>2]|0)){c[H>>2]=Wz(c[o>>2]|0)|0;Rw(c[J>>2]|0,31,(c[c[t>>2]>>2]|0)+1+(c[u>>2]|0)|0,c[H>>2]|0)|0;c[B>>2]=Rw(c[J>>2]|0,38,c[H>>2]|0,0)|0;if((c[v>>2]|0)==1?(c[q>>2]|0)==(c[c[s>>2]>>2]|0):0){Vw(c[J>>2]|0,79,c[u>>2]|0,c[C>>2]|0,c[H>>2]|0)|0;Fh(c[J>>2]|0,-112)}zz(c[o>>2]|0,c[z>>2]|0,c[p>>2]|0,c[q>>2]|0,54);Vw(c[J>>2]|0,70,c[z>>2]|0,0,c[H>>2]|0)|0;Ez(c[J>>2]|0,c[C>>2]|0)|0;I=c[J>>2]|0;Fz(I,(Bz(c[J>>2]|0)|0)-2|0);Fz(c[J>>2]|0,c[B>>2]|0); -_z(c[o>>2]|0,c[H>>2]|0);break}c[F>>2]=c[(c[s>>2]|0)+20>>2];c[I>>2]=kA(c[o>>2]|0,c[F>>2]|0)|0;c[G>>2]=Wz(c[o>>2]|0)|0;Vw(c[J>>2]|0,54,c[z>>2]|0,c[(c[r>>2]|0)+44>>2]|0,c[p>>2]|0)|0;Az(c[o>>2]|0,c[r>>2]|0);c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[F>>2]|0))break;Rw(c[J>>2]|0,30,(c[(c[t>>2]|0)+(c[x>>2]<<2)>>2]|0)+1+(c[u>>2]|0)|0,(c[I>>2]|0)+(c[x>>2]|0)|0)|0;c[x>>2]=(c[x>>2]|0)+1}if((c[v>>2]|0)==1?(c[q>>2]|0)==(c[c[s>>2]>>2]|0):0){H=Bz(c[J>>2]|0)|0;c[A>>2]=H+(c[F>>2]|0)+1;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[F>>2]|0))break;c[y>>2]=(c[(c[t>>2]|0)+(c[x>>2]<<2)>>2]|0)+1+(c[u>>2]|0);c[D>>2]=(b[(c[(c[r>>2]|0)+4>>2]|0)+(c[x>>2]<<1)>>1]|0)+1+(c[u>>2]|0);if((b[(c[(c[r>>2]|0)+4>>2]|0)+(c[x>>2]<<1)>>1]|0)==(b[(c[q>>2]|0)+32>>1]|0))c[D>>2]=c[u>>2];Vw(c[J>>2]|0,78,c[y>>2]|0,c[A>>2]|0,c[D>>2]|0)|0;Fh(c[J>>2]|0,16);c[x>>2]=(c[x>>2]|0)+1}Ez(c[J>>2]|0,c[C>>2]|0)|0}h=c[J>>2]|0;e=c[I>>2]|0;g=c[F>>2]|0;l=c[G>>2]|0;H=dC(c[c[o>>2]>>2]|0,c[r>>2]|0)|0;Uw(h,49,e,g,l,H,c[F>>2]|0)|0;Eh(c[J>>2]|0,69,c[z>>2]|0,c[C>>2]|0,c[G>>2]|0,0)|0;_z(c[o>>2]|0,c[G>>2]|0);nA(c[o>>2]|0,c[I>>2]|0,c[F>>2]|0)}while(0);if((((a[(c[s>>2]|0)+24>>0]|0)==0?(c[(c[c[o>>2]>>2]|0)+24>>2]&16777216|0)==0:0)?(c[(c[o>>2]|0)+416>>2]|0)==0:0)?(a[(c[o>>2]|0)+20>>0]|0)==0:0){bA(c[o>>2]|0,787,2,0,-2,4);H=c[J>>2]|0;I=c[C>>2]|0;Gz(H,I);I=c[J>>2]|0;J=c[z>>2]|0;xz(I,61,J)|0;i=K;return}if((c[v>>2]|0)>0?(d[(c[s>>2]|0)+24>>0]|0)==0:0)Bx(c[o>>2]|0);Rw(c[J>>2]|0,135,d[(c[s>>2]|0)+24>>0]|0,c[v>>2]|0)|0;H=c[J>>2]|0;I=c[C>>2]|0;Gz(H,I);I=c[J>>2]|0;J=c[z>>2]|0;xz(I,61,J)|0;i=K;return}function MC(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+16|0;k=j+12|0;f=j+8|0;h=j+4|0;g=j;c[k>>2]=a;c[f>>2]=b;b=c[k>>2]|0;if(c[(c[k>>2]|0)+416>>2]|0)b=c[b+416>>2]|0;c[h>>2]=b;do if(c[(c[h>>2]|0)+532>>2]|0){c[g>>2]=c[c[(c[h>>2]|0)+532>>2]>>2];if(!((c[g>>2]|0)==(c[(c[f>>2]|0)+28>>2]|0)?(d[(c[f>>2]|0)+25>>0]|0|0)==7:0)){if((c[g>>2]|0)!=(c[(c[f>>2]|0)+28+4>>2]|0))break;if((d[(c[f>>2]|0)+25+1>>0]|0|0)!=7)break}c[e>>2]=1;k=c[e>>2]|0;i=j;return k|0}while(0);c[e>>2]=0;k=c[e>>2]|0;i=j;return k|0}function NC(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;h=s+32|0;j=s+28|0;k=s+24|0;l=s+20|0;m=s+16|0;n=s+12|0;q=s+8|0;o=s+4|0;p=s;c[j>>2]=a;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=0;a:while(1){if((c[n>>2]|0)>=(c[(c[k>>2]|0)+20>>2]|0)){r=14;break}c[q>>2]=c[(c[k>>2]|0)+36+(c[n>>2]<<3)+4>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(b[(c[j>>2]|0)+34>>1]|0))break;if(!((c[(c[l>>2]|0)+(c[o>>2]<<2)>>2]|0)<0?!((c[m>>2]|0)!=0?(c[o>>2]|0)==(b[(c[j>>2]|0)+32>>1]|0):0):0))r=7;do if((r|0)==7){r=0;c[p>>2]=(c[(c[j>>2]|0)+4>>2]|0)+((c[o>>2]|0)*24|0);f=c[p>>2]|0;if(c[q>>2]|0)if(!(Td(c[f>>2]|0,c[q>>2]|0)|0)){r=9;break a}else break;else if(d[f+23>>0]&1){r=11;break a}else break}while(0);c[o>>2]=(c[o>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1}if((r|0)==9){c[h>>2]=1;r=c[h>>2]|0;i=s;return r|0}else if((r|0)==11){c[h>>2]=1;r=c[h>>2]|0;i=s;return r|0}else if((r|0)==14){c[h>>2]=0;r=c[h>>2]|0;i=s;return r|0}return 0}function OC(a,f,g,h,j,k,l,m){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+144|0;n=O+128|0;o=O+124|0;p=O+120|0;q=O+116|0;r=O+112|0;s=O+108|0;t=O+104|0;u=O+100|0;v=O+96|0;w=O+92|0;K=O+88|0;L=O+56|0;J=O+48|0;z=O+44|0;M=O+40|0;D=O+36|0;H=O+32|0;B=O+28|0;x=O+134|0;N=O+24|0;F=O+20|0;E=O+16|0;I=O+12|0;C=O+8|0;A=O+4|0;G=O;y=O+132|0;c[n>>2]=a;c[o>>2]=f;c[p>>2]=g;c[q>>2]=h;c[r>>2]=j;c[s>>2]=k;c[t>>2]=l;c[u>>2]=m;c[v>>2]=c[c[n>>2]>>2];c[K>>2]=0;c[z>>2]=0;c[M>>2]=Pw(c[n>>2]|0)|0;if((c[u>>2]|0)<0)c[z>>2]=Rw(c[M>>2]|0,136,d[(c[r>>2]|0)+24>>0]|0,0)|0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[(c[r>>2]|0)+20>>2]|0))break;if(c[q>>2]|0)k=b[(c[(c[q>>2]|0)+4>>2]|0)+(c[w>>2]<<1)>>1]|0;else k=-1;b[x>>1]=k;c[D>>2]=PC(c[n>>2]|0,c[p>>2]|0,c[t>>2]|0,b[x>>1]|0)|0;if(c[s>>2]|0)k=c[(c[s>>2]|0)+(c[w>>2]<<2)>>2]|0;else k=c[(c[r>>2]|0)+36>>2]|0;b[x>>1]=k;c[N>>2]=c[(c[(c[c[r>>2]>>2]|0)+4>>2]|0)+((b[x>>1]|0)*24|0)>>2];c[H>>2]=Jv(c[v>>2]|0,27,c[N>>2]|0)|0;c[B>>2]=rv(c[n>>2]|0,79,c[D>>2]|0,c[H>>2]|0,0)|0;c[K>>2]=az(c[v>>2]|0,c[K>>2]|0,c[B>>2]|0)|0;c[w>>2]=(c[w>>2]|0)+1}if((c[u>>2]|0)>0?(c[p>>2]|0)==(c[c[r>>2]>>2]|0):0){if(!(d[(c[p>>2]|0)+42>>0]&32)){c[E>>2]=PC(c[n>>2]|0,c[p>>2]|0,c[t>>2]|0,-1)|0;c[I>>2]=QC(c[v>>2]|0,c[p>>2]|0,c[(c[o>>2]|0)+8+44>>2]|0,-1)|0;c[F>>2]=rv(c[n>>2]|0,78,c[E>>2]|0,c[I>>2]|0,0)|0}else{c[A>>2]=0;c[G>>2]=Ej(c[p>>2]|0)|0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(e[(c[G>>2]|0)+50>>1]|0))break;b[y>>1]=b[(c[(c[q>>2]|0)+4>>2]|0)+(c[w>>2]<<1)>>1]|0;c[E>>2]=PC(c[n>>2]|0,c[p>>2]|0,c[t>>2]|0,b[y>>1]|0)|0;c[I>>2]=QC(c[v>>2]|0,c[p>>2]|0,c[(c[o>>2]|0)+8+44>>2]|0,b[y>>1]|0)|0;c[C>>2]=rv(c[n>>2]|0,79,c[E>>2]|0,c[I>>2]|0,0)|0;c[A>>2]=az(c[v>>2]|0,c[A>>2]|0,c[C>>2]|0)|0;c[w>>2]=(c[w>>2]|0)+1}c[F>>2]=rv(c[n>>2]|0,19,c[A>>2]|0,0,0)|0}c[K>>2]=az(c[v>>2]|0,c[K>>2]|0,c[F>>2]|0)|0}c[L>>2]=0;c[L+4>>2]=0;c[L+8>>2]=0;c[L+12>>2]=0;c[L+16>>2]=0;c[L+20>>2]=0;c[L+24>>2]=0;c[L+28>>2]=0;c[L+4>>2]=c[o>>2];c[L>>2]=c[n>>2];fy(L,c[K>>2]|0)|0;c[J>>2]=RC(c[n>>2]|0,c[o>>2]|0,c[K>>2]|0,0,0,0,0)|0;Rw(c[M>>2]|0,135,d[(c[r>>2]|0)+24>>0]|0,c[u>>2]|0)|0;if(c[J>>2]|0)SC(c[J>>2]|0);Zu(c[v>>2]|0,c[K>>2]|0);if(!(c[z>>2]|0)){i=O;return}Fz(c[M>>2]|0,c[z>>2]|0);i=O;return}function PC(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+24|0;j=q+20|0;k=q+16|0;l=q+28|0;o=q+12|0;n=q+8|0;p=q+4|0;m=q;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;b[l>>1]=g;c[m>>2]=c[c[h>>2]>>2];c[o>>2]=Jv(c[m>>2]|0,157,0)|0;if(!(c[o>>2]|0)){p=c[o>>2]|0;i=q;return p|0}if((b[l>>1]|0)>=0?(b[l>>1]|0)!=(b[(c[j>>2]|0)+32>>1]|0):0){c[n>>2]=(c[(c[j>>2]|0)+4>>2]|0)+((b[l>>1]|0)*24|0);c[(c[o>>2]|0)+28>>2]=(c[k>>2]|0)+(b[l>>1]|0)+1;a[(c[o>>2]|0)+1>>0]=a[(c[n>>2]|0)+21>>0]|0;c[p>>2]=c[(c[n>>2]|0)+16>>2];if(!(c[p>>2]|0))c[p>>2]=c[c[(c[m>>2]|0)+8>>2]>>2];c[o>>2]=By(c[h>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;p=c[o>>2]|0;i=q;return p|0}c[(c[o>>2]|0)+28>>2]=c[k>>2];a[(c[o>>2]|0)+1>>0]=68;p=c[o>>2]|0;i=q;return p|0}function QC(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;m=l+12|0;g=l+8|0;h=l+4|0;j=l+16|0;k=l;c[m>>2]=a;c[g>>2]=d;c[h>>2]=e;b[j>>1]=f;c[k>>2]=Jv(c[m>>2]|0,152,0)|0;if(!(c[k>>2]|0)){m=c[k>>2]|0;i=l;return m|0}c[(c[k>>2]|0)+44>>2]=c[g>>2];c[(c[k>>2]|0)+28>>2]=c[h>>2];b[(c[k>>2]|0)+32>>1]=b[j>>1]|0;m=c[k>>2]|0;i=l;return m|0}function RC(f,g,h,j,k,l,m){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ca=i;i=i+192|0;n=ca+24|0;q=ca+180|0;r=ca+176|0;s=ca+172|0;o=ca+168|0;t=ca+164|0;u=ca+160|0;v=ca+184|0;w=ca+156|0;p=ca+152|0;I=ca+148|0;W=ca+144|0;_=ca+140|0;J=ca+16|0;Y=ca+120|0;R=ca+116|0;P=ca+112|0;Q=ca+108|0;G=ca+104|0;B=ca+100|0;X=ca+96|0;z=ca+186|0;Z=ca+8|0;U=ca+92|0;M=ca+88|0;$=ca+84|0;A=ca+80|0;S=ca+76|0;E=ca+72|0;T=ca+68|0;V=ca+64|0;D=ca+60|0;K=ca+56|0;y=ca;H=ca+52|0;N=ca+48|0;F=ca+44|0;L=ca+40|0;O=ca+36|0;x=ca+32|0;aa=ca+28|0;c[r>>2]=f;c[s>>2]=g;c[o>>2]=h;c[t>>2]=j;c[u>>2]=k;b[v>>1]=l;c[w>>2]=m;c[_>>2]=c[(c[r>>2]|0)+8>>2];a[z>>0]=0;c[B>>2]=c[c[r>>2]>>2];c[Y>>2]=0;c[Y+4>>2]=0;c[Y+8>>2]=0;c[Y+12>>2]=0;c[Y+16>>2]=0;if((c[t>>2]|0)!=0?(c[c[t>>2]>>2]|0)>=64:0)c[t>>2]=0;c[Y+8>>2]=c[t>>2];if(e[(c[B>>2]|0)+60>>1]&32)b[v>>1]=e[v>>1]&-1025;if((c[c[s>>2]>>2]|0)>64){ba=c[r>>2]|0;c[n>>2]=64;Ah(ba,35216,n);c[q>>2]=0;ba=c[q>>2]|0;i=ca;return ba|0}if(e[v>>1]&64)m=1;else m=c[c[s>>2]>>2]|0;c[I>>2]=m;c[p>>2]=816+(((c[I>>2]|0)-1|0)*80|0)+7&-8;c[W>>2]=ph(c[B>>2]|0,(c[p>>2]|0)+72|0,0)|0;a:do if(!(a[(c[B>>2]|0)+65>>0]|0)){c[(c[W>>2]|0)+60+4>>2]=-1;c[(c[W>>2]|0)+60>>2]=-1;a[(c[W>>2]|0)+41>>0]=c[I>>2];c[c[W>>2]>>2]=c[r>>2];c[(c[W>>2]|0)+4>>2]=c[s>>2];c[(c[W>>2]|0)+8>>2]=c[t>>2];c[(c[W>>2]|0)+12>>2]=c[u>>2];l=Cz(c[_>>2]|0)|0;c[(c[W>>2]|0)+48>>2]=l;c[(c[W>>2]|0)+52>>2]=l;b[(c[W>>2]|0)+34>>1]=b[v>>1]|0;c[(c[W>>2]|0)+56>>2]=c[(c[r>>2]|0)+428>>2];c[R>>2]=(c[W>>2]|0)+68;c[Y>>2]=c[W>>2];c[Y+4>>2]=(c[W>>2]|0)+328;c[Y+12>>2]=(c[W>>2]|0)+(c[p>>2]|0);ZC(c[Y+12>>2]|0);c[c[R>>2]>>2]=0;aD((c[W>>2]|0)+328|0,c[W>>2]|0);bD((c[W>>2]|0)+328|0,c[o>>2]|0,72);c[G>>2]=0;while(1){m=(c[I>>2]|0)==0;if((c[G>>2]|0)>=(c[(c[Y+4>>2]|0)+12>>2]|0))break;if(!(!m?(dB(c[(c[(c[Y+4>>2]|0)+20>>2]|0)+((c[G>>2]|0)*48|0)>>2]|0)|0)==0:0)){LA(c[r>>2]|0,c[(c[(c[Y+4>>2]|0)+20>>2]|0)+((c[G>>2]|0)*48|0)>>2]|0,c[(c[W>>2]|0)+52>>2]|0,16);p=(c[(c[Y+4>>2]|0)+20>>2]|0)+((c[G>>2]|0)*48|0)+20|0;b[p>>1]=e[p>>1]|4}c[G>>2]=(c[G>>2]|0)+1}if(m){if(c[t>>2]|0)a[(c[W>>2]|0)+36>>0]=c[c[t>>2]>>2];if(e[v>>1]&1024)a[(c[W>>2]|0)+40>>0]=1}c[G>>2]=0;while(1){if((c[G>>2]|0)>=(c[c[s>>2]>>2]|0))break;cD(c[R>>2]|0,c[(c[s>>2]|0)+8+((c[G>>2]|0)*72|0)+44>>2]|0);dD(c[r>>2]|0,(c[s>>2]|0)+8+((c[G>>2]|0)*72|0)|0,(c[W>>2]|0)+328|0);c[G>>2]=(c[G>>2]|0)+1}eD(c[s>>2]|0,(c[W>>2]|0)+328|0);if(!(a[(c[B>>2]|0)+65>>0]|0)){do if(e[v>>1]&1024){if(fD(c[r>>2]|0,c[s>>2]|0,(c[W>>2]|0)+328|0,c[u>>2]|0)|0){a[(c[W>>2]|0)+40>>0]=1;break}if(!(c[t>>2]|0)){t=(c[W>>2]|0)+34|0;b[t>>1]=e[t>>1]|512;c[(c[W>>2]|0)+8>>2]=c[u>>2]}}while(0);if(!((c[I>>2]|0)==1?(gD(Y)|0)!=0:0)){c[X>>2]=hD(Y)|0;if(c[X>>2]|0)break;iD(c[W>>2]|0,0)|0;if(a[(c[B>>2]|0)+65>>0]|0)break;if((c[(c[W>>2]|0)+8>>2]|0)!=0?(iD(c[W>>2]|0,(b[(c[W>>2]|0)+32>>1]|0)+1&65535)|0,(a[(c[B>>2]|0)+65>>0]|0)!=0):0)break}if((c[(c[W>>2]|0)+8>>2]|0)==0?(c[(c[B>>2]|0)+24>>2]&131072|0)!=0:0){X=(c[W>>2]|0)+24|0;c[X>>2]=-1;c[X+4>>2]=-1}if((c[(c[r>>2]|0)+68>>2]|0)==0?(d[(c[B>>2]|0)+65>>0]|0)==0:0){b:do if(((c[u>>2]|0)!=0?(d[(c[W>>2]|0)+41>>0]|0)>=2:0)?(e[(c[B>>2]|0)+60>>1]&1024|0)==0:0){u=jD(c[R>>2]|0,c[u>>2]|0)|0;X=Z;c[X>>2]=u;c[X+4>>2]=C;if(c[Y+8>>2]|0){u=jD(c[R>>2]|0,c[Y+8>>2]|0)|0;t=Z;R=c[t+4>>2]|C;X=Z;c[X>>2]=c[t>>2]|u;c[X+4>>2]=R}while(1){if((d[(c[W>>2]|0)+41>>0]|0)<2)break b;c[Q>>2]=c[(c[W>>2]|0)+736+(((d[(c[W>>2]|0)+41>>0]|0)-1|0)*80|0)+64>>2];if(!(d[(c[(c[W>>2]|0)+4>>2]|0)+8+((d[(c[Q>>2]|0)+16>>0]|0)*72|0)+36>>0]&8))break b;if((e[v>>1]&1024|0)==0?(c[(c[Q>>2]|0)+36>>2]&4096|0)==0:0)break b;R=Z;X=(c[Q>>2]|0)+8|0;if((c[R>>2]&c[X>>2]|0)!=0?1:(c[R+4>>2]&c[X+4>>2]|0)!=0)break b;c[M>>2]=(c[(c[Y+4>>2]|0)+20>>2]|0)+((c[(c[Y+4>>2]|0)+12>>2]|0)*48|0);c[U>>2]=c[(c[Y+4>>2]|0)+20>>2];while(1){if((c[U>>2]|0)>>>0>=(c[M>>2]|0)>>>0)break;R=(c[U>>2]|0)+40|0;X=(c[Q>>2]|0)+8|0;if(((c[R>>2]&c[X>>2]|0)!=0?1:(c[R+4>>2]&c[X+4>>2]|0)!=0)?(c[(c[c[U>>2]>>2]|0)+4>>2]&1|0)==0:0)break;c[U>>2]=(c[U>>2]|0)+48}if((c[U>>2]|0)>>>0<(c[M>>2]|0)>>>0)break b;X=(c[W>>2]|0)+41|0;a[X>>0]=(a[X>>0]|0)+-1<<24>>24;c[I>>2]=(c[I>>2]|0)+-1}}while(0);Z=(c[c[W>>2]>>2]|0)+428|0;c[Z>>2]=(c[Z>>2]|0)+(b[(c[W>>2]|0)+32>>1]|0);do if(e[v>>1]&4){c[$>>2]=c[(c[(c[W>>2]|0)+736+64>>2]|0)+36>>2];c[A>>2]=(c[$>>2]&4096|0)!=0&1;if(!(c[A>>2]|0)){if(!(e[v>>1]&8192))break;if(c[$>>2]&1024)break}a[(c[W>>2]|0)+38>>0]=(c[A>>2]|0)!=0?1:2;if((d[(c[(c[s>>2]|0)+8+16>>2]|0)+42>>0]&32|0)==0?(c[$>>2]&64|0)!=0:0){if(e[v>>1]&8192)a[z>>0]=8;c[(c[(c[W>>2]|0)+736+64>>2]|0)+36>>2]=c[$>>2]&-65}}while(0);c[G>>2]=0;c[P>>2]=(c[W>>2]|0)+736;while(1){if((c[G>>2]|0)>=(c[I>>2]|0))break;c[T>>2]=(c[s>>2]|0)+8+((d[(c[P>>2]|0)+44>>0]|0)*72|0);c[S>>2]=c[(c[T>>2]|0)+16>>2];c[E>>2]=Dh(c[B>>2]|0,c[(c[S>>2]|0)+64>>2]|0)|0;c[Q>>2]=c[(c[P>>2]|0)+64>>2];c:do if((d[(c[S>>2]|0)+42>>0]&2|0)==0?(c[(c[S>>2]|0)+12>>2]|0)==0:0){if(c[(c[Q>>2]|0)+36>>2]&1024){c[V>>2]=Ax(c[B>>2]|0,c[S>>2]|0)|0;c[D>>2]=c[(c[T>>2]|0)+44>>2];Uw(c[_>>2]|0,152,c[D>>2]|0,0,0,c[V>>2]|0,-10)|0;break}if(d[(c[S>>2]|0)+42>>0]&16)break;do if(!(c[(c[Q>>2]|0)+36>>2]&64)){if(e[v>>1]&16)break;c[K>>2]=54;if(d[(c[W>>2]|0)+38>>0]|0){c[K>>2]=55;c[(c[W>>2]|0)+60>>2]=c[(c[T>>2]|0)+44>>2]}zz(c[r>>2]|0,c[(c[T>>2]|0)+44>>2]|0,c[E>>2]|0,c[S>>2]|0,c[K>>2]|0);do if(!(d[(c[W>>2]|0)+38>>0]|0)){if((b[(c[S>>2]|0)+34>>1]|0)>=64)break;if(d[(c[S>>2]|0)+42>>0]&32)break;Y=(c[T>>2]|0)+56|0;Z=c[Y+4>>2]|0;$=y;c[$>>2]=c[Y>>2];c[$+4>>2]=Z;c[H>>2]=0;while(1){$=y;if(!((c[$>>2]|0)!=0|(c[$+4>>2]|0)!=0))break;Z=y;Z=hR(c[Z>>2]|0,c[Z+4>>2]|0,1)|0;$=y;c[$>>2]=Z;c[$+4>>2]=C;c[H>>2]=(c[H>>2]|0)+1}Ih(c[_>>2]|0,-1,c[H>>2]|0,-14)}while(0);Fh(c[_>>2]|0,a[z>>0]|0);break c}while(0);yz(c[r>>2]|0,c[E>>2]|0,c[(c[S>>2]|0)+28>>2]|0,0,c[c[S>>2]>>2]|0)}while(0);do if(c[(c[Q>>2]|0)+36>>2]&512){c[N>>2]=c[(c[Q>>2]|0)+24+4>>2];c[L>>2]=54;do if(!(d[(c[S>>2]|0)+42>>0]&32))ba=93;else{if((a[(c[N>>2]|0)+55>>0]&3|0)!=2){ba=93;break}if(!(e[v>>1]&64)){ba=93;break}c[F>>2]=c[(c[P>>2]|0)+4>>2];c[L>>2]=0}while(0);d:do if((ba|0)==93){ba=0;if(d[(c[W>>2]|0)+38>>0]|0){c[O>>2]=c[(c[(c[T>>2]|0)+16>>2]|0)+8>>2];c[F>>2]=c[w>>2];while(1){if(!(c[O>>2]|0))break;if((c[O>>2]|0)==(c[N>>2]|0))break;c[F>>2]=(c[F>>2]|0)+1;c[O>>2]=c[(c[O>>2]|0)+20>>2]}c[L>>2]=55;c[(c[W>>2]|0)+60+4>>2]=c[F>>2];break}else{do if(c[w>>2]|0){if(!(e[v>>1]&64))break;c[F>>2]=c[w>>2];if(!(e[v>>1]&4096))break d;c[L>>2]=53;break d}while(0);Z=(c[r>>2]|0)+72|0;$=c[Z>>2]|0;c[Z>>2]=$+1;c[F>>2]=$;break}}while(0);c[(c[P>>2]|0)+8>>2]=c[F>>2];if(!(c[L>>2]|0))break;Vw(c[_>>2]|0,c[L>>2]|0,c[F>>2]|0,c[(c[N>>2]|0)+44>>2]|0,c[E>>2]|0)|0;Az(c[r>>2]|0,c[N>>2]|0);if(!(c[(c[Q>>2]|0)+36>>2]&15))break;if(c[(c[Q>>2]|0)+36>>2]&32770)break;if(e[(c[W>>2]|0)+34>>1]&1)break;Fh(c[_>>2]|0,2)}while(0);if((c[E>>2]|0)>=0)bx(c[r>>2]|0,c[E>>2]|0);c[G>>2]=(c[G>>2]|0)+1;c[P>>2]=(c[P>>2]|0)+80}ba=Bz(c[_>>2]|0)|0;c[(c[W>>2]|0)+44>>2]=ba;if(!(a[(c[B>>2]|0)+65>>0]|0)){ba=J;c[ba>>2]=-1;c[ba+4>>2]=-1;c[G>>2]=0;while(1){if((c[G>>2]|0)>=(c[I>>2]|0))break;c[P>>2]=(c[W>>2]|0)+736+((c[G>>2]|0)*80|0);c[aa>>2]=c[(c[(c[P>>2]|0)+64>>2]|0)+36>>2];if((c[(c[(c[P>>2]|0)+64>>2]|0)+36>>2]&16384|0)!=0?(ba=J,kD(c[r>>2]|0,(c[W>>2]|0)+328|0,(c[s>>2]|0)+8+((d[(c[P>>2]|0)+44>>0]|0)*72|0)|0,c[ba>>2]|0,c[ba+4>>2]|0,c[P>>2]|0),(a[(c[B>>2]|0)+65>>0]|0)!=0):0)break a;c[x>>2]=lD(c[r>>2]|0,c[s>>2]|0,c[P>>2]|0,c[G>>2]|0,d[(c[P>>2]|0)+44>>0]|0,b[v>>1]|0)|0;$=Bz(c[_>>2]|0)|0;c[(c[P>>2]|0)+32>>2]=$;$=J;$=mD(c[W>>2]|0,c[G>>2]|0,c[$>>2]|0,c[$+4>>2]|0)|0;ba=J;c[ba>>2]=$;c[ba+4>>2]=C;c[(c[W>>2]|0)+48>>2]=c[(c[P>>2]|0)+24>>2];do if((c[aa>>2]&8192|0)==0?(e[v>>1]&64|0)!=0:0)break;while(0);c[G>>2]=(c[G>>2]|0)+1}c[q>>2]=c[W>>2];ba=c[q>>2]|0;i=ca;return ba|0}}}}else{Sf(c[B>>2]|0,c[W>>2]|0);c[W>>2]=0}while(0);if(c[W>>2]|0){c[(c[r>>2]|0)+428>>2]=c[(c[W>>2]|0)+56>>2];UC(c[B>>2]|0,c[W>>2]|0)}c[q>>2]=0;ba=c[q>>2]|0;i=ca;return ba|0}function SC(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=i;i=i+96|0;m=E+80|0;v=E+76|0;A=E+72|0;o=E+68|0;s=E+64|0;t=E+60|0;z=E+56|0;n=E+52|0;h=E+48|0;l=E+44|0;j=E+40|0;k=E+36|0;p=E+32|0;q=E+28|0;u=E+24|0;r=E+20|0;y=E+16|0;x=E+12|0;B=E+8|0;C=E+4|0;w=E;c[m>>2]=f;c[v>>2]=c[c[m>>2]>>2];c[A>>2]=c[(c[v>>2]|0)+8>>2];c[z>>2]=c[(c[m>>2]|0)+4>>2];c[n>>2]=c[c[v>>2]>>2];fC(c[v>>2]|0);c[o>>2]=(d[(c[m>>2]|0)+41>>0]|0)-1;while(1){if((c[o>>2]|0)<0)break;c[s>>2]=(c[m>>2]|0)+736+((c[o>>2]|0)*80|0);c[t>>2]=c[(c[s>>2]|0)+64>>2];Gz(c[A>>2]|0,c[(c[s>>2]|0)+24>>2]|0);if((d[(c[s>>2]|0)+45>>0]|0)!=160){Vw(c[A>>2]|0,d[(c[s>>2]|0)+45>>0]|0,c[(c[s>>2]|0)+48>>2]|0,c[(c[s>>2]|0)+52>>2]|0,d[(c[s>>2]|0)+46>>0]|0)|0;Fh(c[A>>2]|0,a[(c[s>>2]|0)+47>>0]|0)}a:do if((c[(c[t>>2]|0)+36>>2]&2048|0)!=0?(c[(c[s>>2]|0)+56>>2]|0)>0:0){Gz(c[A>>2]|0,c[(c[s>>2]|0)+16>>2]|0);c[j>>2]=c[(c[s>>2]|0)+56>>2];c[l>>2]=(c[(c[s>>2]|0)+56+4>>2]|0)+(((c[j>>2]|0)-1|0)*12|0);while(1){if((c[j>>2]|0)<=0)break a;Fz(c[A>>2]|0,(c[(c[l>>2]|0)+4>>2]|0)+1|0);Rw(c[A>>2]|0,d[(c[l>>2]|0)+8>>0]|0,c[c[l>>2]>>2]|0,c[(c[l>>2]|0)+4>>2]|0)|0;Fz(c[A>>2]|0,(c[(c[l>>2]|0)+4>>2]|0)-1|0);c[j>>2]=(c[j>>2]|0)+-1;c[l>>2]=(c[l>>2]|0)+-12}}while(0);Gz(c[A>>2]|0,c[(c[s>>2]|0)+12>>2]|0);if(c[(c[s>>2]|0)+20>>2]|0){Ez(c[A>>2]|0,c[(c[s>>2]|0)+20>>2]|0)|0;Fz(c[A>>2]|0,c[(c[s>>2]|0)+20>>2]|0);Fz(c[A>>2]|0,(c[(c[s>>2]|0)+20>>2]|0)-2|0)}if(c[(c[s>>2]|0)+40>>2]|0){if(c[(Mz(c[A>>2]|0,(c[(c[s>>2]|0)+40>>2]|0)-1|0)|0)+4>>2]|0)c[k>>2]=141;else c[k>>2]=142;Rw(c[A>>2]|0,c[k>>2]|0,c[(c[s>>2]|0)+36>>2]|0,c[(c[s>>2]|0)+40>>2]|0)|0}if(c[c[s>>2]>>2]|0){c[h>>2]=xz(c[A>>2]|0,138,c[c[s>>2]>>2]|0)|0;if(!(c[(c[t>>2]|0)+36>>2]&64))xz(c[A>>2]|0,104,c[(c[z>>2]|0)+8+((c[o>>2]|0)*72|0)+44>>2]|0)|0;if(c[(c[t>>2]|0)+36>>2]&512)xz(c[A>>2]|0,104,c[(c[s>>2]|0)+8>>2]|0)|0;f=c[A>>2]|0;g=c[s>>2]|0;if((d[(c[s>>2]|0)+45>>0]|0)==15)Rw(f,14,c[g+48>>2]|0,c[(c[s>>2]|0)+28>>2]|0)|0;else Ez(f,c[g+28>>2]|0)|0;Fz(c[A>>2]|0,c[h>>2]|0)}c[o>>2]=(c[o>>2]|0)+-1}Gz(c[A>>2]|0,c[(c[m>>2]|0)+52>>2]|0);c[o>>2]=0;c[s>>2]=(c[m>>2]|0)+736;while(1){if((c[o>>2]|0)>=(d[(c[m>>2]|0)+41>>0]|0))break;c[r>>2]=0;c[y>>2]=(c[z>>2]|0)+8+((d[(c[s>>2]|0)+44>>0]|0)*72|0);c[x>>2]=c[(c[y>>2]|0)+16>>2];c[t>>2]=c[(c[s>>2]|0)+64>>2];if(((d[(c[y>>2]|0)+36+1>>0]|0)>>>4&1|0)!=0?(a[(c[n>>2]|0)+65>>0]|0)==0:0)TC(c[A>>2]|0,c[(c[s>>2]|0)+32>>2]|0,c[(c[s>>2]|0)+4>>2]|0,c[(c[y>>2]|0)+32>>2]|0,0);else D=32;b:do if((D|0)==32){D=0;if(((d[(c[x>>2]|0)+42>>0]&2|0)==0?(c[(c[x>>2]|0)+12>>2]|0)==0:0)?(e[(c[m>>2]|0)+34>>1]&16|0)==0:0){c[B>>2]=c[(c[t>>2]|0)+36>>2];if((d[(c[m>>2]|0)+38>>0]|0)==0?(c[B>>2]&64|0)==0:0)xz(c[A>>2]|0,61,c[(c[y>>2]|0)+44>>2]|0)|0;if(((c[B>>2]&512|0)!=0?(c[B>>2]&16640|0)==0:0)?(c[(c[s>>2]|0)+8>>2]|0)!=(c[(c[m>>2]|0)+60+4>>2]|0):0)xz(c[A>>2]|0,61,c[(c[s>>2]|0)+8>>2]|0)|0}f=c[t>>2]|0;if(!(c[(c[t>>2]|0)+36>>2]&576)){if(c[f+36>>2]&8192)c[r>>2]=c[(c[s>>2]|0)+56>>2]}else c[r>>2]=c[f+24+4>>2];if(c[r>>2]|0){if((d[(c[m>>2]|0)+38>>0]|0)!=0?(d[(c[(c[r>>2]|0)+12>>2]|0)+42>>0]&32|0)==0:0)break;if(!(a[(c[n>>2]|0)+65>>0]|0)){c[q>>2]=Bz(c[A>>2]|0)|0;c[p>>2]=c[(c[s>>2]|0)+32>>2];c[u>>2]=Mz(c[A>>2]|0,c[p>>2]|0)|0;while(1){if((c[p>>2]|0)>=(c[q>>2]|0))break b;do if((c[(c[u>>2]|0)+4>>2]|0)==(c[(c[s>>2]|0)+4>>2]|0)){f=c[u>>2]|0;if((d[c[u>>2]>>0]|0)!=47){if((d[f>>0]|0)!=103)break;c[(c[u>>2]|0)+4>>2]=c[(c[s>>2]|0)+8>>2];a[c[u>>2]>>0]=113;break}c[C>>2]=c[f+8>>2];if(d[(c[x>>2]|0)+42>>0]&32){c[w>>2]=Ej(c[x>>2]|0)|0;c[C>>2]=b[(c[(c[w>>2]|0)+4>>2]|0)+(c[C>>2]<<1)>>1]}c[C>>2]=(uA(c[r>>2]|0,c[C>>2]&65535)|0)<<16>>16;if((c[C>>2]|0)>=0){c[(c[u>>2]|0)+8>>2]=c[C>>2];c[(c[u>>2]|0)+4>>2]=c[(c[s>>2]|0)+8>>2]}}while(0);c[p>>2]=(c[p>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+20}}}}while(0);c[o>>2]=(c[o>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+80}c[(c[v>>2]|0)+428>>2]=c[(c[m>>2]|0)+56>>2];UC(c[n>>2]|0,c[m>>2]|0);i=E;return}function TC(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+32|0;q=p+24|0;j=p+20|0;k=p+16|0;l=p+12|0;m=p+8|0;o=p+4|0;n=p;c[q>>2]=b;c[j>>2]=e;c[k>>2]=f;c[l>>2]=g;c[m>>2]=h;c[o>>2]=Mz(c[q>>2]|0,c[j>>2]|0)|0;c[n>>2]=Bz(c[q>>2]|0)|0;while(1){if((c[j>>2]|0)>=(c[n>>2]|0))break;do if((c[(c[o>>2]|0)+4>>2]|0)==(c[k>>2]|0)){h=c[o>>2]|0;if((d[c[o>>2]>>0]|0|0)==47){a[h>>0]=30;c[(c[o>>2]|0)+4>>2]=(c[(c[o>>2]|0)+8>>2]|0)+(c[l>>2]|0);c[(c[o>>2]|0)+8>>2]=c[(c[o>>2]|0)+12>>2];c[(c[o>>2]|0)+12>>2]=0;break}if((d[h>>0]|0|0)==103){h=c[o>>2]|0;if(c[m>>2]|0){a[h>>0]=37;c[(c[o>>2]|0)+4>>2]=c[(c[o>>2]|0)+8>>2];c[(c[o>>2]|0)+8>>2]=1;break}else{a[h>>0]=25;c[(c[o>>2]|0)+4>>2]=0;c[(c[o>>2]|0)+12>>2]=0;break}}}while(0);c[j>>2]=(c[j>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+20}i=p;return}function UC(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=k;return}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(d[(c[f>>2]|0)+41>>0]|0|0))break;c[j>>2]=(c[f>>2]|0)+736+((c[g>>2]|0)*80|0);if((c[(c[j>>2]|0)+64>>2]|0)!=0?(c[(c[(c[j>>2]|0)+64>>2]|0)+36>>2]&2048|0)!=0:0)Sf(c[e>>2]|0,c[(c[j>>2]|0)+56+4>>2]|0);c[g>>2]=(c[g>>2]|0)+1}VC((c[f>>2]|0)+328|0);while(1){if(!(c[(c[f>>2]|0)+16>>2]|0))break;c[h>>2]=c[(c[f>>2]|0)+16>>2];c[(c[f>>2]|0)+16>>2]=c[(c[h>>2]|0)+52>>2];WC(c[e>>2]|0,c[h>>2]|0)}Sf(c[e>>2]|0,c[f>>2]|0);i=k;return}function VC(a){a=a|0;var b=0,d=0,f=0,g=0,h=0;h=i;i=i+16|0;b=h+12|0;g=h+8|0;d=h+4|0;f=h;c[b>>2]=a;c[f>>2]=c[c[c[c[b>>2]>>2]>>2]>>2];c[g>>2]=(c[(c[b>>2]|0)+12>>2]|0)-1;c[d>>2]=c[(c[b>>2]|0)+20>>2];while(1){if((c[g>>2]|0)<0)break;if((e[(c[d>>2]|0)+20>>1]|0)&1)Zu(c[f>>2]|0,c[c[d>>2]>>2]|0);if(!((e[(c[d>>2]|0)+20>>1]|0)&16)){if((e[(c[d>>2]|0)+20>>1]|0)&32)$C(c[f>>2]|0,c[(c[d>>2]|0)+12>>2]|0)}else _C(c[f>>2]|0,c[(c[d>>2]|0)+12>>2]|0);c[g>>2]=(c[g>>2]|0)+-1;c[d>>2]=(c[d>>2]|0)+48}if((c[(c[b>>2]|0)+20>>2]|0)==((c[b>>2]|0)+24|0)){i=h;return}Sf(c[f>>2]|0,c[(c[b>>2]|0)+20>>2]|0);i=h;return}function WC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;XC(c[f>>2]|0,c[e>>2]|0);Sf(c[f>>2]|0,c[e>>2]|0);i=d;return}function XC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=a;c[e>>2]=b;if((c[(c[e>>2]|0)+48>>2]|0)!=((c[e>>2]|0)+56|0))Sf(c[d>>2]|0,c[(c[e>>2]|0)+48>>2]|0);YC(c[d>>2]|0,c[e>>2]|0);ZC(c[e>>2]|0);i=f;return}function YC(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=b;c[g>>2]=e;if(!(c[(c[g>>2]|0)+36>>2]&17408)){i=h;return}if((c[(c[g>>2]|0)+36>>2]&1024|0)!=0?(d[(c[g>>2]|0)+24+4>>0]|0|0)!=0:0){Kd(c[(c[g>>2]|0)+24+8>>2]|0);a[(c[g>>2]|0)+24+4>>0]=0;c[(c[g>>2]|0)+24+8>>2]=0;i=h;return}if(!(c[(c[g>>2]|0)+36>>2]&16384)){i=h;return}if(!(c[(c[g>>2]|0)+24+4>>2]|0)){i=h;return}Sf(c[f>>2]|0,c[(c[(c[g>>2]|0)+24+4>>2]|0)+16>>2]|0);Sf(c[f>>2]|0,c[(c[g>>2]|0)+24+4>>2]|0);c[(c[g>>2]|0)+24+4>>2]=0;i=h;return}function ZC(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[(c[e>>2]|0)+48>>2]=(c[e>>2]|0)+56;b[(c[e>>2]|0)+40>>1]=0;b[(c[e>>2]|0)+44>>1]=3;c[(c[e>>2]|0)+36>>2]=0;i=d;return}function _C(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;VC(c[e>>2]|0);Sf(c[f>>2]|0,c[e>>2]|0);i=d;return}function $C(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;VC(c[e>>2]|0);Sf(c[f>>2]|0,c[e>>2]|0);i=d;return}function aD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[c[e>>2]>>2]=c[f>>2];c[(c[e>>2]|0)+4>>2]=0;c[(c[e>>2]|0)+12>>2]=0;c[(c[e>>2]|0)+16>>2]=8;c[(c[e>>2]|0)+20>>2]=(c[e>>2]|0)+24;i=d;return}function bD(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;g=l+8|0;h=l+4|0;j=l+12|0;k=l;c[g>>2]=b;c[h>>2]=e;a[j>>0]=f;c[k>>2]=Tx(c[h>>2]|0)|0;a[(c[g>>2]|0)+8>>0]=a[j>>0]|0;if(!(c[k>>2]|0)){i=l;return}f=c[g>>2]|0;if((d[c[k>>2]>>0]|0|0)!=(d[j>>0]|0|0)){nE(f,c[h>>2]|0,0)|0;i=l;return}else{bD(f,c[(c[k>>2]|0)+12>>2]|0,a[j>>0]|0);bD(c[g>>2]|0,c[(c[k>>2]|0)+16>>2]|0,a[j>>0]|0);i=l;return}}function cD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=c[f>>2]|0;f=c[e>>2]|0;a=c[f>>2]|0;c[f>>2]=a+1;c[(c[e>>2]|0)+4+(a<<2)>>2]=b;i=d;return}function dD(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;q=r;g=r+40|0;h=r+36|0;j=r+32|0;p=r+28|0;o=r+24|0;k=r+20|0;l=r+16|0;m=r+12|0;n=r+8|0;c[g>>2]=a;c[h>>2]=e;c[j>>2]=f;if(!((d[(c[h>>2]|0)+36+1>>0]|0)>>>2&1)){i=r;return}c[p>>2]=c[(c[h>>2]|0)+16>>2];c[l>>2]=c[(c[h>>2]|0)+64>>2];if(!(c[l>>2]|0)){i=r;return}c[k>>2]=0;c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[c[l>>2]>>2]|0)){e=13;break}while(1){if((c[k>>2]|0)<(b[(c[p>>2]|0)+34>>1]|0))e=(d[(c[(c[p>>2]|0)+4>>2]|0)+((c[k>>2]|0)*24|0)+23>>0]&2|0)==0;else e=0;a=c[k>>2]|0;if(!e)break;c[k>>2]=a+1}f=c[g>>2]|0;if((a|0)>=(b[(c[p>>2]|0)+34>>1]|0)){e=10;break}c[m>>2]=rv(f,152,0,0,0)|0;if(!(c[m>>2]|0)){e=13;break}c[(c[m>>2]|0)+28>>2]=c[(c[h>>2]|0)+44>>2];a=c[k>>2]|0;c[k>>2]=a+1;b[(c[m>>2]|0)+32>>1]=a;c[(c[m>>2]|0)+44>>2]=c[p>>2];a=c[g>>2]|0;f=c[m>>2]|0;c[n>>2]=rv(a,79,f,ny(c[c[g>>2]>>2]|0,c[(c[(c[l>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)>>2]|0,0)|0,0)|0;nE(c[j>>2]|0,c[n>>2]|0,1)|0;c[o>>2]=(c[o>>2]|0)+1}if((e|0)==10){o=c[o>>2]|0;c[q>>2]=c[c[p>>2]>>2];c[q+4>>2]=o;Ah(f,35704,q);i=r;return}else if((e|0)==13){i=r;return}}function eD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;c[f>>2]=(c[(c[e>>2]|0)+12>>2]|0)-1;while(1){if((c[f>>2]|0)<0)break;jE(c[d>>2]|0,c[e>>2]|0,c[f>>2]|0);c[f>>2]=(c[f>>2]|0)+-1}i=g;return}function fD(a,f,g,h){a=a|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;j=u+36|0;k=u+32|0;l=u+28|0;m=u+24|0;n=u+20|0;s=u+16|0;r=u+12|0;o=u+8|0;p=u+4|0;q=u;c[k>>2]=a;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;if((c[c[l>>2]>>2]|0)!=1){c[j>>2]=0;t=c[j>>2]|0;i=u;return t|0}c[p>>2]=c[(c[l>>2]|0)+8+44>>2];c[s>>2]=c[(c[l>>2]|0)+8+16>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[c[n>>2]>>2]|0))break;c[q>>2]=Tx(c[(c[(c[n>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)>>2]|0)|0;if(((d[c[q>>2]>>0]|0)==152?(c[(c[q>>2]|0)+28>>2]|0)==(c[p>>2]|0):0)?(b[(c[q>>2]|0)+32>>1]|0)<0:0){t=8;break}c[o>>2]=(c[o>>2]|0)+1}if((t|0)==8){c[j>>2]=1;t=c[j>>2]|0;i=u;return t|0}c[r>>2]=c[(c[s>>2]|0)+8>>2];while(1){if(!(c[r>>2]|0)){t=22;break}if(d[(c[r>>2]|0)+54>>0]|0){c[o>>2]=0;while(1){if((c[o>>2]|0)>=(e[(c[r>>2]|0)+50>>1]|0))break;if(!(xD(c[m>>2]|0,c[p>>2]|0,c[o>>2]|0,-1,-1,2,c[r>>2]|0)|0)){if((iE(c[k>>2]|0,c[n>>2]|0,c[p>>2]|0,c[r>>2]|0,c[o>>2]|0)|0)<0)break;if(!(bE(c[r>>2]|0,c[o>>2]|0)|0))break}c[o>>2]=(c[o>>2]|0)+1}if((c[o>>2]|0)==(e[(c[r>>2]|0)+50>>1]|0)){t=20;break}}c[r>>2]=c[(c[r>>2]|0)+20>>2]}if((t|0)==20){c[j>>2]=1;t=c[j>>2]|0;i=u;return t|0}else if((t|0)==22){c[j>>2]=0;t=c[j>>2]|0;i=u;return t|0}return 0}function gD(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;g=t+44|0;h=t+40|0;s=t+36|0;n=t+32|0;r=t+28|0;q=t+24|0;o=t+20|0;j=t+16|0;k=t+12|0;p=t+8|0;m=t+4|0;l=t;c[h>>2]=f;c[s>>2]=c[c[h>>2]>>2];if((e[(c[s>>2]|0)+34>>1]|0)&32){c[g>>2]=0;s=c[g>>2]|0;i=t;return s|0}c[n>>2]=(c[(c[s>>2]|0)+4>>2]|0)+8;c[p>>2]=c[(c[n>>2]|0)+16>>2];if((d[(c[p>>2]|0)+42>>0]|0)&16){c[g>>2]=0;s=c[g>>2]|0;i=t;return s|0}if((d[(c[n>>2]|0)+36+1>>0]|0)>>>1&1){c[g>>2]=0;s=c[g>>2]|0;i=t;return s|0}c[j>>2]=c[(c[n>>2]|0)+44>>2];c[r>>2]=(c[s>>2]|0)+328;c[o>>2]=c[(c[h>>2]|0)+12>>2];c[(c[o>>2]|0)+36>>2]=0;b[(c[o>>2]|0)+42>>1]=0;c[q>>2]=xD(c[r>>2]|0,c[j>>2]|0,-1,0,0,130,0)|0;a:do if(c[q>>2]|0){c[(c[o>>2]|0)+36>>2]=4353;c[c[(c[o>>2]|0)+48>>2]>>2]=c[q>>2];b[(c[o>>2]|0)+40>>1]=1;b[(c[o>>2]|0)+24>>1]=1;b[(c[o>>2]|0)+20>>1]=33}else{c[m>>2]=c[(c[p>>2]|0)+8>>2];while(1){if(!(c[m>>2]|0))break a;if(((d[(c[m>>2]|0)+54>>0]|0|0)!=0?(c[(c[m>>2]|0)+36>>2]|0)==0:0)?(e[(c[m>>2]|0)+50>>1]|0|0)<=3:0){c[l>>2]=((d[(c[m>>2]|0)+55>>0]|0)>>>3&1|0)!=0?130:2;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(e[(c[m>>2]|0)+50>>1]|0|0))break;c[q>>2]=xD(c[r>>2]|0,c[j>>2]|0,c[k>>2]|0,0,0,c[l>>2]|0,c[m>>2]|0)|0;if(!(c[q>>2]|0))break;c[(c[(c[o>>2]|0)+48>>2]|0)+(c[k>>2]<<2)>>2]=c[q>>2];c[k>>2]=(c[k>>2]|0)+1}if((c[k>>2]|0)==(e[(c[m>>2]|0)+50>>1]|0|0))break}c[m>>2]=c[(c[m>>2]|0)+20>>2]}c[(c[o>>2]|0)+36>>2]=4609;if(!(((d[(c[m>>2]|0)+55>>0]|0)>>>5&1|0)==0?(r=(c[n>>2]|0)+56|0,p=c[r>>2]|0,r=c[r+4>>2]|0,q=$D(c[m>>2]|0)|0,!((p&~q|0)==0&(r&~C|0)==0)):0)){r=(c[o>>2]|0)+36|0;c[r>>2]=c[r>>2]|64}b[(c[o>>2]|0)+40>>1]=c[k>>2];b[(c[o>>2]|0)+24>>1]=c[k>>2];c[(c[o>>2]|0)+24+4>>2]=c[m>>2];b[(c[o>>2]|0)+20>>1]=39}while(0);if(!(c[(c[o>>2]|0)+36>>2]|0)){c[g>>2]=0;s=c[g>>2]|0;i=t;return s|0}b[(c[o>>2]|0)+22>>1]=1;c[(c[s>>2]|0)+736+64>>2]=c[o>>2];q=nD((c[s>>2]|0)+68|0,c[j>>2]|0)|0;r=(c[o>>2]|0)+8|0;c[r>>2]=q;c[r+4>>2]=C;c[(c[s>>2]|0)+736+4>>2]=c[j>>2];b[(c[s>>2]|0)+32>>1]=1;if(c[(c[s>>2]|0)+8>>2]|0)a[(c[s>>2]|0)+36>>0]=c[c[(c[s>>2]|0)+8>>2]>>2];if((e[(c[s>>2]|0)+34>>1]|0)&1024)a[(c[s>>2]|0)+40>>0]=1;c[g>>2]=1;s=c[g>>2]|0;i=t;return s|0}function hD(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=i;i=i+80|0;e=s+60|0;n=s+56|0;g=s+16|0;h=s+8|0;f=s+52|0;t=s+48|0;m=s+44|0;l=s+40|0;p=s+36|0;r=s+32|0;q=s+28|0;o=s+64|0;j=s;k=s+24|0;c[e>>2]=b;c[n>>2]=c[c[e>>2]>>2];b=g;c[b>>2]=0;c[b+4>>2]=0;b=h;c[b>>2]=0;c[b+4>>2]=0;c[t>>2]=c[(c[n>>2]|0)+4>>2];c[l>>2]=(c[t>>2]|0)+8+((d[(c[n>>2]|0)+41>>0]|0)*72|0);c[p>>2]=c[c[c[n>>2]>>2]>>2];c[r>>2]=0;a[o>>0]=0;c[q>>2]=c[(c[e>>2]|0)+12>>2];ZC(c[q>>2]|0);c[f>>2]=0;c[m>>2]=(c[t>>2]|0)+8;while(1){if((c[m>>2]|0)>>>0>=(c[l>>2]|0)>>>0){e=19;break}b=j;c[b>>2]=0;c[b+4>>2]=0;a[(c[q>>2]|0)+16>>0]=c[f>>2];b=nD((c[n>>2]|0)+68|0,c[(c[m>>2]|0)+44>>2]|0)|0;t=(c[q>>2]|0)+8|0;c[t>>2]=b;c[t+4>>2]=C;if((d[(c[m>>2]|0)+36>>0]|0|(d[o>>0]|0))&10){u=h;b=c[u+4>>2]|0;t=g;c[t>>2]=c[u>>2];c[t+4>>2]=b}a[o>>0]=a[(c[m>>2]|0)+36>>0]|0;if((d[(c[(c[m>>2]|0)+16>>2]|0)+42>>0]|0)&16){c[k>>2]=(c[m>>2]|0)+72;while(1){if((c[k>>2]|0)>>>0>=(c[l>>2]|0)>>>0)break;u=j;if(!(!((c[u>>2]|0)!=0|(c[u+4>>2]|0)!=0)?((d[(c[k>>2]|0)+36>>0]|0)&10|0)==0:0)){b=nD((c[n>>2]|0)+68|0,c[(c[k>>2]|0)+44>>2]|0)|0;v=j;t=c[v+4>>2]|C;u=j;c[u>>2]=c[v>>2]|b;c[u+4>>2]=t}c[k>>2]=(c[k>>2]|0)+72}u=g;v=j;c[r>>2]=OD(c[e>>2]|0,c[u>>2]|0,c[u+4>>2]|0,c[v>>2]|0,c[v+4>>2]|0)|0}else{v=g;c[r>>2]=PD(c[e>>2]|0,c[v>>2]|0,c[v+4>>2]|0)|0}if(!(c[r>>2]|0)){u=g;v=j;c[r>>2]=QD(c[e>>2]|0,c[u>>2]|0,c[u+4>>2]|0,c[v>>2]|0,c[v+4>>2]|0)|0}t=(c[q>>2]|0)+8|0;b=h;u=c[b+4>>2]|c[t+4>>2];v=h;c[v>>2]=c[b>>2]|c[t>>2];c[v+4>>2]=u;if(c[r>>2]|0){e=19;break}if(d[(c[p>>2]|0)+65>>0]|0){e=19;break}c[f>>2]=(c[f>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+72}if((e|0)==19){XC(c[p>>2]|0,c[q>>2]|0);i=s;return c[r>>2]|0}return 0}function iD(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;U=i;i=i+160|0;E=U+32|0;M=U+132|0;N=U+128|0;G=U+146|0;r=U+124|0;P=U+120|0;z=U+116|0;O=U+112|0;H=U+108|0;n=U+104|0;p=U+100|0;t=U+96|0;w=U+92|0;s=U+144|0;u=U+142|0;y=U+88|0;v=U+84|0;k=U+80|0;m=U+76|0;R=U+72|0;A=U+68|0;K=U+64|0;j=U+60|0;l=U+56|0;S=U+52|0;h=U+48|0;x=U+140|0;B=U+138|0;C=U+136|0;o=U+148|0;q=U+24|0;D=U+16|0;J=U+44|0;I=U+8|0;L=U+40|0;T=U;Q=U+36|0;c[N>>2]=f;b[G>>1]=g;c[t>>2]=0;b[s>>1]=0;b[u>>1]=0;c[l>>2]=0;c[z>>2]=c[c[N>>2]>>2];c[O>>2]=c[c[z>>2]>>2];c[P>>2]=d[(c[N>>2]|0)+41>>0];if((c[P>>2]|0)<=1)g=1;else g=(c[P>>2]|0)==2?5:10;c[r>>2]=g;if((c[(c[N>>2]|0)+8>>2]|0)!=0?(b[G>>1]|0)!=0:0)c[w>>2]=c[c[(c[N>>2]|0)+8>>2]>>2];else c[w>>2]=0;c[h>>2]=(_(32+(c[P>>2]<<2)|0,c[r>>2]|0)|0)<<1;c[h>>2]=(c[h>>2]|0)+(c[w>>2]<<1);h=c[h>>2]|0;c[S>>2]=Fw(c[O>>2]|0,h,((h|0)<0)<<31>>31)|0;if(!(c[S>>2]|0)){c[M>>2]=7;T=c[M>>2]|0;i=U;return T|0}c[m>>2]=c[S>>2];c[k>>2]=(c[m>>2]|0)+(c[r>>2]<<5);h=c[k>>2]|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0;c[h+24>>2]=0;c[h+28>>2]=0;c[j>>2]=(c[k>>2]|0)+(c[r>>2]<<5);c[n>>2]=c[r>>2]<<1;c[R>>2]=c[m>>2];while(1){if((c[n>>2]|0)<=0)break;c[(c[R>>2]|0)+24>>2]=c[j>>2];c[n>>2]=(c[n>>2]|0)+-1;c[R>>2]=(c[R>>2]|0)+32;c[j>>2]=(c[j>>2]|0)+(c[P>>2]<<2)}if(c[w>>2]|0){c[l>>2]=c[j>>2];kR(c[l>>2]|0,0,c[w>>2]<<1|0)|0}if((c[(c[z>>2]|0)+428>>2]|0)>>>0<48)g=c[(c[z>>2]|0)+428>>2]|0;else g=48;b[(c[k>>2]|0)+16>>1]=g;c[v>>2]=1;if(c[w>>2]|0)a[(c[k>>2]|0)+22>>0]=(c[P>>2]|0)>0?-1:c[w>>2]|0;c[H>>2]=0;while(1){if((c[H>>2]|0)>=(c[P>>2]|0))break;c[y>>2]=0;c[n>>2]=0;c[R>>2]=c[k>>2];while(1){if((c[n>>2]|0)>=(c[v>>2]|0))break;c[K>>2]=c[(c[N>>2]|0)+16>>2];while(1){if(!(c[K>>2]|0))break;a[o>>0]=a[(c[R>>2]|0)+22>>0]|0;h=D;c[h>>2]=0;c[h+4>>2]=0;h=c[K>>2]|0;j=c[R>>2]|0;a:do if(!((c[h>>2]&~c[j>>2]|0)!=0?1:(c[h+4>>2]&~c[j+4>>2]|0)!=0)?(h=(c[K>>2]|0)+8|0,j=c[R>>2]|0,!((c[h>>2]&c[j>>2]|0)!=0?1:(c[h+4>>2]&c[j+4>>2]|0)!=0)):0){b[C>>1]=KD(b[(c[K>>2]|0)+18>>1]|0,(b[(c[K>>2]|0)+20>>1]|0)+(b[(c[R>>2]|0)+16>>1]|0)&65535)|0;b[C>>1]=KD(b[C>>1]|0,b[(c[R>>2]|0)+20>>1]|0)|0;b[x>>1]=(b[(c[R>>2]|0)+16>>1]|0)+(b[(c[K>>2]|0)+22>>1]|0);g=c[R>>2]|0;f=(c[K>>2]|0)+8|0;h=c[g+4>>2]|c[f+4>>2];j=q;c[j>>2]=c[g>>2]|c[f>>2];c[j+4>>2]=h;if((a[o>>0]|0)<0)a[o>>0]=LD(c[N>>2]|0,c[(c[N>>2]|0)+8>>2]|0,c[R>>2]|0,b[(c[N>>2]|0)+34>>1]|0,c[H>>2]&65535,c[K>>2]|0,D)|0;else{f=(c[R>>2]|0)+8|0;h=c[f+4>>2]|0;j=D;c[j>>2]=c[f>>2];c[j+4>>2]=h}if((a[o>>0]|0)>=0?(a[o>>0]|0)<(c[w>>2]|0):0){if(!(b[(c[l>>2]|0)+(a[o>>0]<<1)>>1]|0)){j=MD(b[G>>1]|0,c[w>>2]|0,a[o>>0]|0)|0;b[(c[l>>2]|0)+(a[o>>0]<<1)>>1]=j}b[B>>1]=KD(b[C>>1]|0,b[(c[l>>2]|0)+(a[o>>0]<<1)>>1]|0)|0}else b[B>>1]=b[C>>1]|0;c[p>>2]=0;c[A>>2]=c[m>>2];while(1){if((c[p>>2]|0)>=(c[y>>2]|0))break;h=c[A>>2]|0;j=q;if(((c[h>>2]|0)==(c[j>>2]|0)?(c[h+4>>2]|0)==(c[j+4>>2]|0):0)?((a[(c[A>>2]|0)+22>>0]^a[o>>0])&128|0)==0:0)break;c[p>>2]=(c[p>>2]|0)+1;c[A>>2]=(c[A>>2]|0)+32}do if((c[p>>2]|0)<(c[y>>2]|0)){if((b[(c[A>>2]|0)+18>>1]|0)<(b[B>>1]|0))break a;if((b[(c[A>>2]|0)+18>>1]|0)!=(b[B>>1]|0))break;if((b[(c[A>>2]|0)+16>>1]|0)<=(b[x>>1]|0))break a}else{do if((c[y>>2]|0)>=(c[r>>2]|0)){if((b[B>>1]|0)>(b[s>>1]|0))break a;if((b[B>>1]|0)!=(b[s>>1]|0))break;if((b[C>>1]|0)>=(b[u>>1]|0))break a}while(0);if((c[y>>2]|0)<(c[r>>2]|0)){j=c[y>>2]|0;c[y>>2]=j+1;c[p>>2]=j}else c[p>>2]=c[t>>2];c[A>>2]=(c[m>>2]|0)+(c[p>>2]<<5)}while(0);g=c[R>>2]|0;j=(c[K>>2]|0)+8|0;h=c[g+4>>2]|c[j+4>>2];f=c[A>>2]|0;c[f>>2]=c[g>>2]|c[j>>2];c[f+4>>2]=h;f=D;h=c[f+4>>2]|0;j=(c[A>>2]|0)+8|0;c[j>>2]=c[f>>2];c[j+4>>2]=h;b[(c[A>>2]|0)+16>>1]=b[x>>1]|0; -b[(c[A>>2]|0)+18>>1]=b[B>>1]|0;b[(c[A>>2]|0)+20>>1]=b[C>>1]|0;a[(c[A>>2]|0)+22>>0]=a[o>>0]|0;iR(c[(c[A>>2]|0)+24>>2]|0,c[(c[R>>2]|0)+24>>2]|0,c[H>>2]<<2|0)|0;c[(c[(c[A>>2]|0)+24>>2]|0)+(c[H>>2]<<2)>>2]=c[K>>2];if((c[y>>2]|0)>=(c[r>>2]|0)){c[t>>2]=0;b[s>>1]=b[(c[m>>2]|0)+18>>1]|0;b[u>>1]=b[(c[m>>2]|0)+16>>1]|0;c[p>>2]=1;c[A>>2]=(c[m>>2]|0)+32;while(1){if((c[p>>2]|0)>=(c[r>>2]|0))break a;do if((b[(c[A>>2]|0)+18>>1]|0)<=(b[s>>1]|0)){if((b[(c[A>>2]|0)+18>>1]|0)!=(b[s>>1]|0))break;if((b[(c[A>>2]|0)+20>>1]|0)>(b[u>>1]|0))F=58}else F=58;while(0);if((F|0)==58){F=0;b[s>>1]=b[(c[A>>2]|0)+18>>1]|0;b[u>>1]=b[(c[A>>2]|0)+20>>1]|0;c[t>>2]=c[p>>2]}c[p>>2]=(c[p>>2]|0)+1;c[A>>2]=(c[A>>2]|0)+32}}}while(0);c[K>>2]=c[(c[K>>2]|0)+52>>2]}c[n>>2]=(c[n>>2]|0)+1;c[R>>2]=(c[R>>2]|0)+32}c[R>>2]=c[m>>2];c[m>>2]=c[k>>2];c[k>>2]=c[R>>2];c[v>>2]=c[y>>2];c[H>>2]=(c[H>>2]|0)+1}if(!(c[v>>2]|0)){Ah(c[z>>2]|0,35564,E);Sf(c[O>>2]|0,c[S>>2]|0);c[M>>2]=1;T=c[M>>2]|0;i=U;return T|0}c[R>>2]=c[k>>2];c[n>>2]=1;while(1){if((c[n>>2]|0)>=(c[v>>2]|0))break;if((b[(c[R>>2]|0)+18>>1]|0)>(b[(c[k>>2]|0)+(c[n>>2]<<5)+18>>1]|0))c[R>>2]=(c[k>>2]|0)+(c[n>>2]<<5);c[n>>2]=(c[n>>2]|0)+1}c[H>>2]=0;while(1){g=c[N>>2]|0;if((c[H>>2]|0)>=(c[P>>2]|0))break;c[J>>2]=g+736+((c[H>>2]|0)*80|0);F=c[(c[(c[R>>2]|0)+24>>2]|0)+(c[H>>2]<<2)>>2]|0;c[K>>2]=F;c[(c[J>>2]|0)+64>>2]=F;a[(c[J>>2]|0)+44>>0]=a[(c[K>>2]|0)+16>>0]|0;c[(c[J>>2]|0)+4>>2]=c[(c[(c[N>>2]|0)+4>>2]|0)+8+((d[(c[J>>2]|0)+44>>0]|0)*72|0)+44>>2];c[H>>2]=(c[H>>2]|0)+1}if(((((e[g+34>>1]&1024|0)!=0?(e[(c[N>>2]|0)+34>>1]&512|0)==0:0)?(d[(c[N>>2]|0)+40>>0]|0)==0:0)?(b[G>>1]|0)!=0:0)?(c[L>>2]=(LD(c[N>>2]|0,c[(c[N>>2]|0)+12>>2]|0,c[R>>2]|0,512,(c[P>>2]|0)-1&65535,c[(c[(c[R>>2]|0)+24>>2]|0)+((c[P>>2]|0)-1<<2)>>2]|0,I)|0)<<24>>24,(c[L>>2]|0)==(c[c[(c[N>>2]|0)+12>>2]>>2]|0)):0)a[(c[N>>2]|0)+40>>0]=2;if(c[(c[N>>2]|0)+8>>2]|0){g=a[(c[R>>2]|0)+22>>0]|0;if(e[(c[N>>2]|0)+34>>1]&512){if((g<<24>>24|0)==(c[c[(c[N>>2]|0)+8>>2]>>2]|0))a[(c[N>>2]|0)+40>>0]=2}else{a[(c[N>>2]|0)+36>>0]=g;if((a[(c[N>>2]|0)+36>>0]|0)<0)a[(c[N>>2]|0)+36>>0]=0;J=(c[R>>2]|0)+8|0;K=c[J+4>>2]|0;L=(c[N>>2]|0)+24|0;c[L>>2]=c[J>>2];c[L+4>>2]=K}if(((e[(c[N>>2]|0)+34>>1]&2048|0)!=0?(c[P>>2]|0)>0?(a[(c[N>>2]|0)+36>>0]|0)==(c[c[(c[N>>2]|0)+8>>2]>>2]|0):0:0)?(L=T,c[L>>2]=0,c[L+4>>2]=0,c[Q>>2]=(LD(c[N>>2]|0,c[(c[N>>2]|0)+8>>2]|0,c[R>>2]|0,0,(c[P>>2]|0)-1&65535,c[(c[(c[R>>2]|0)+24>>2]|0)+((c[P>>2]|0)-1<<2)>>2]|0,T)|0)<<24>>24,(c[Q>>2]|0)==(c[c[(c[N>>2]|0)+8>>2]>>2]|0)):0){a[(c[N>>2]|0)+37>>0]=1;P=T;Q=c[P+4>>2]|0;T=(c[N>>2]|0)+24|0;c[T>>2]=c[P>>2];c[T+4>>2]=Q}}b[(c[N>>2]|0)+32>>1]=b[(c[R>>2]|0)+16>>1]|0;Sf(c[O>>2]|0,c[S>>2]|0);c[M>>2]=0;T=c[M>>2]|0;i=U;return T|0}function jD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+32|0;d=h+16|0;e=h+12|0;f=h+8|0;g=h;c[d>>2]=a;c[e>>2]=b;a=g;c[a>>2]=0;c[a+4>>2]=0;if(!(c[e>>2]|0)){b=g;a=b;a=c[a>>2]|0;b=b+4|0;b=c[b>>2]|0;C=b;i=h;return a|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[e>>2]>>2]|0))break;j=ID(c[d>>2]|0,c[(c[(c[e>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)>>2]|0)|0;k=g;b=c[k+4>>2]|C;a=g;c[a>>2]=c[k>>2]|j;c[a+4>>2]=b;c[f>>2]=(c[f>>2]|0)+1}j=g;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;C=j;i=h;return k|0}function kD(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=i;i=i+176|0;q=Y+40|0;N=Y+160|0;t=Y+156|0;u=Y+152|0;v=Y+32|0;O=Y+148|0;E=Y+144|0;J=Y+140|0;K=Y+136|0;G=Y+132|0;X=Y+128|0;Q=Y+124|0;I=Y+120|0;R=Y+116|0;W=Y+112|0;S=Y+108|0;y=Y+104|0;D=Y+100|0;F=Y+96|0;H=Y+92|0;s=Y+88|0;B=Y+24|0;x=Y+16|0;p=Y+164|0;T=Y+84|0;A=Y+80|0;U=Y+76|0;P=Y+72|0;V=Y+68|0;o=Y+64|0;n=Y+60|0;m=Y+8|0;z=Y+56|0;w=Y;L=Y+52|0;M=Y+48|0;c[N>>2]=f;c[t>>2]=g;c[u>>2]=h;g=v;c[g>>2]=j;c[g+4>>2]=k;c[O>>2]=l;a[p>>0]=0;c[T>>2]=0;c[A>>2]=0;c[P>>2]=0;c[X>>2]=c[(c[N>>2]|0)+8>>2];c[Q>>2]=UA(c[N>>2]|0)|0;c[E>>2]=0;c[I>>2]=c[(c[u>>2]|0)+16>>2];c[K>>2]=(c[(c[t>>2]|0)+20>>2]|0)+((c[(c[t>>2]|0)+12>>2]|0)*48|0);c[H>>2]=c[(c[O>>2]|0)+64>>2];g=B;c[g>>2]=0;c[g+4>>2]=0;c[J>>2]=c[(c[t>>2]|0)+20>>2];while(1){if((c[J>>2]|0)>>>0>=(c[K>>2]|0)>>>0)break;c[o>>2]=c[c[J>>2]>>2];g=c[H>>2]|0;if((((c[g>>2]|0)==0&(c[g+4>>2]|0)==0?(e[(c[J>>2]|0)+20>>1]&2|0)==0:0)?(c[(c[o>>2]|0)+4>>2]&1|0)==0:0)?(ED(c[o>>2]|0,c[(c[u>>2]|0)+44>>2]|0)|0)!=0:0){h=c[c[N>>2]>>2]|0;g=c[T>>2]|0;c[T>>2]=az(h,g,ny(c[c[N>>2]>>2]|0,c[o>>2]|0,0)|0)|0}g=v;if(FD(c[J>>2]|0,c[u>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0){c[n>>2]=c[(c[J>>2]|0)+12>>2];if((c[n>>2]|0)>=64){j=0;k=-2147483648}else{j=lR(1,0,c[n>>2]|0)|0;k=C}g=m;c[g>>2]=j;c[g+4>>2]=k;if(!(a[p>>0]|0)){g=c[(c[(c[I>>2]|0)+4>>2]|0)+((c[n>>2]|0)*24|0)>>2]|0;c[q>>2]=c[c[I>>2]>>2];c[q+4>>2]=g;Rd(284,35527,q);a[p>>0]=1}h=B;g=m;if((c[h>>2]&c[g>>2]|0)==0?(c[h+4>>2]&c[g+4>>2]|0)==0:0){if(GD(c[c[N>>2]>>2]|0,c[H>>2]|0,(c[E>>2]|0)+1|0)|0){r=57;break}l=c[J>>2]|0;f=c[E>>2]|0;c[E>>2]=f+1;c[(c[(c[H>>2]|0)+48>>2]|0)+(f<<2)>>2]=l;f=m;l=B;h=c[l+4>>2]|c[f+4>>2];g=B;c[g>>2]=c[l>>2]|c[f>>2];c[g+4>>2]=h}}c[J>>2]=(c[J>>2]|0)+48}if((r|0)==57){W=c[N>>2]|0;W=c[W>>2]|0;X=c[T>>2]|0;Zu(W,X);i=Y;return}o=c[E>>2]&65535;b[(c[H>>2]|0)+40>>1]=o;b[(c[H>>2]|0)+24>>1]=o;c[(c[H>>2]|0)+36>>2]=16961;o=(c[u>>2]|0)+56|0;p=B;q=c[o+4>>2]&(~c[p+4>>2]|-2147483648);r=x;c[r>>2]=c[o>>2]&~c[p>>2];c[r+4>>2]=q;if(63<(b[(c[I>>2]|0)+34>>1]|0))j=63;else j=b[(c[I>>2]|0)+34>>1]|0;c[D>>2]=j;c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[D>>2]|0))break;r=x;p=c[r>>2]|0;r=c[r+4>>2]|0;q=lR(1,0,c[y>>2]|0)|0;if((p&q|0)!=0|(r&C|0)!=0)c[E>>2]=(c[E>>2]|0)+1;c[y>>2]=(c[y>>2]|0)+1}if(0!=0?1:(c[(c[u>>2]|0)+56+4>>2]&-2147483648|0)!=0)c[E>>2]=(c[E>>2]|0)+((b[(c[I>>2]|0)+34>>1]|0)-64+1);c[G>>2]=HD(c[c[N>>2]>>2]|0,(c[E>>2]|0)+1&65535,0,s)|0;if(!(c[G>>2]|0)){W=c[N>>2]|0;W=c[W>>2]|0;X=c[T>>2]|0;Zu(W,X);i=Y;return}c[(c[H>>2]|0)+24+4>>2]=c[G>>2];c[c[G>>2]>>2]=35553;c[(c[G>>2]|0)+12>>2]=c[I>>2];c[S>>2]=0;s=B;c[s>>2]=0;c[s+4>>2]=0;c[J>>2]=c[(c[t>>2]|0)+20>>2];while(1){if((c[J>>2]|0)>>>0>=(c[K>>2]|0)>>>0)break;s=v;if(FD(c[J>>2]|0,c[u>>2]|0,c[s>>2]|0,c[s+4>>2]|0)|0){c[z>>2]=c[(c[J>>2]|0)+12>>2];if((c[z>>2]|0)>=64){j=0;k=-2147483648}else{j=lR(1,0,c[z>>2]|0)|0;k=C}r=w;c[r>>2]=j;c[r+4>>2]=k;r=B;s=w;if((c[r>>2]&c[s>>2]|0)==0?(c[r+4>>2]&c[s+4>>2]|0)==0:0){c[L>>2]=c[c[J>>2]>>2];q=w;p=B;r=c[p+4>>2]|c[q+4>>2];s=B;c[s>>2]=c[p>>2]|c[q>>2];c[s+4>>2]=r;b[(c[(c[G>>2]|0)+4>>2]|0)+(c[S>>2]<<1)>>1]=c[(c[J>>2]|0)+12>>2];c[F>>2]=VA(c[N>>2]|0,c[(c[L>>2]|0)+12>>2]|0,c[(c[L>>2]|0)+16>>2]|0)|0;if(c[F>>2]|0)j=c[c[F>>2]>>2]|0;else j=35690;c[(c[(c[G>>2]|0)+32>>2]|0)+(c[S>>2]<<2)>>2]=j;c[S>>2]=(c[S>>2]|0)+1}}c[J>>2]=(c[J>>2]|0)+48}c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[D>>2]|0))break;L=x;J=c[L>>2]|0;L=c[L+4>>2]|0;K=lR(1,0,c[y>>2]|0)|0;if((J&K|0)!=0|(L&C|0)!=0){b[(c[(c[G>>2]|0)+4>>2]|0)+(c[S>>2]<<1)>>1]=c[y>>2];c[(c[(c[G>>2]|0)+32>>2]|0)+(c[S>>2]<<2)>>2]=35690;c[S>>2]=(c[S>>2]|0)+1}c[y>>2]=(c[y>>2]|0)+1}a:do if(0!=0?1:(c[(c[u>>2]|0)+56+4>>2]&-2147483648|0)!=0){c[y>>2]=63;while(1){if((c[y>>2]|0)>=(b[(c[I>>2]|0)+34>>1]|0))break a;b[(c[(c[G>>2]|0)+4>>2]|0)+(c[S>>2]<<1)>>1]=c[y>>2];c[(c[(c[G>>2]|0)+32>>2]|0)+(c[S>>2]<<2)>>2]=35690;c[S>>2]=(c[S>>2]|0)+1;c[y>>2]=(c[y>>2]|0)+1}}while(0);b[(c[(c[G>>2]|0)+4>>2]|0)+(c[S>>2]<<1)>>1]=-1;c[(c[(c[G>>2]|0)+32>>2]|0)+(c[S>>2]<<2)>>2]=35690;K=(c[N>>2]|0)+72|0;L=c[K>>2]|0;c[K>>2]=L+1;c[(c[O>>2]|0)+8>>2]=L;Rw(c[X>>2]|0,56,c[(c[O>>2]|0)+8>>2]|0,(c[E>>2]|0)+1|0)|0;Az(c[N>>2]|0,c[G>>2]|0);iA(c[N>>2]|0);c[U>>2]=(c[(c[c[t>>2]>>2]|0)+4>>2]|0)+8+((d[(c[O>>2]|0)+44>>0]|0)*72|0);if((d[(c[U>>2]|0)+36+1>>0]|0)>>>4&1){c[M>>2]=c[(c[U>>2]|0)+28>>2];c[P>>2]=Rw(c[X>>2]|0,22,0,0)|0;Vw(c[X>>2]|0,16,c[M>>2]|0,0,c[(c[U>>2]|0)+24>>2]|0)|0;c[R>>2]=xz(c[X>>2]|0,18,c[M>>2]|0)|0}else c[R>>2]=xz(c[X>>2]|0,108,c[(c[O>>2]|0)+4>>2]|0)|0;if(c[T>>2]|0){c[A>>2]=Cz(c[X>>2]|0)|0;LA(c[N>>2]|0,c[T>>2]|0,c[A>>2]|0,16);M=(c[H>>2]|0)+36|0;c[M>>2]=c[M>>2]|131072}c[W>>2]=Wz(c[N>>2]|0)|0;c[V>>2]=Xz(c[N>>2]|0,c[G>>2]|0,c[(c[O>>2]|0)+4>>2]|0,c[W>>2]|0,0,0,0,0)|0;Rw(c[X>>2]|0,110,c[(c[O>>2]|0)+8>>2]|0,c[W>>2]|0)|0;Fh(c[X>>2]|0,16);if(c[T>>2]|0)Gz(c[X>>2]|0,c[A>>2]|0);j=c[X>>2]|0;if((d[(c[U>>2]|0)+36+1>>0]|0)>>>4&1){Lz(j,c[P>>2]|0,(c[V>>2]|0)+(c[S>>2]|0)|0);TC(c[X>>2]|0,c[R>>2]|0,c[(c[O>>2]|0)+4>>2]|0,c[(c[U>>2]|0)+32>>2]|0,1);Ez(c[X>>2]|0,c[R>>2]|0)|0;V=(c[U>>2]|0)+36+1|0;a[V>>0]=a[V>>0]&-17}else Rw(j,7,c[(c[O>>2]|0)+4>>2]|0,(c[R>>2]|0)+1|0)|0;Fh(c[X>>2]|0,3);Fz(c[X>>2]|0,c[R>>2]|0);_z(c[N>>2]|0,c[W>>2]|0);gA(c[N>>2]|0);Fz(c[X>>2]|0,c[Q>>2]|0);W=c[N>>2]|0;W=c[W>>2]|0;X=c[T>>2]|0;Zu(W,X);i=Y;return}function lD(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=i;i=i+256|0;H=O+40|0;G=O+32|0;J=O+24|0;I=O+16|0;F=O+8|0;E=O;s=O+144|0;m=O+140|0;n=O+136|0;o=O+132|0;t=O+128|0;u=O+124|0;p=O+148|0;B=O+120|0;z=O+116|0;D=O+112|0;q=O+108|0;w=O+104|0;x=O+100|0;A=O+96|0;v=O+92|0;L=O+88|0;C=O+60|0;r=O+152|0;K=O+56|0;y=O+52|0;M=O+48|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;c[t>>2]=j;c[u>>2]=k;b[p>>1]=l;c[B>>2]=0;do if((d[(c[m>>2]|0)+453>>0]|0|0)==2){c[z>>2]=(c[n>>2]|0)+8+((d[(c[o>>2]|0)+44>>0]|0)*72|0);c[D>>2]=c[(c[m>>2]|0)+8>>2];c[q>>2]=c[c[m>>2]>>2];c[w>>2]=c[(c[m>>2]|0)+468>>2];c[A>>2]=c[(c[o>>2]|0)+64>>2];c[v>>2]=c[(c[A>>2]|0)+36>>2];if((c[v>>2]&8192|0)==0?((e[p>>1]|0)&64|0)==0:0){do if(c[v>>2]&48)m=1;else{if((c[v>>2]&1024|0)==0?(e[(c[A>>2]|0)+24>>1]|0|0)>0:0){m=1;break}m=((e[p>>1]|0)&3|0)!=0}while(0);c[x>>2]=m&1;cg(C,c[q>>2]|0,r,100,1e9);AD(C,(c[x>>2]|0)!=0?35264:35271);m=c[z>>2]|0;if(c[(c[z>>2]|0)+20>>2]|0){c[E>>2]=d[m+40>>0];$z(C,35276,E)}else{c[F>>2]=c[m+8>>2];$z(C,35289,F)}if(c[(c[z>>2]|0)+12>>2]|0){c[I>>2]=c[(c[z>>2]|0)+12>>2];$z(C,35299,I)}do if(!(c[v>>2]&1280)){c[K>>2]=0;c[y>>2]=c[(c[A>>2]|0)+24+4>>2];if(((d[(c[(c[z>>2]|0)+16>>2]|0)+42>>0]|0)&32|0)!=0?(a[(c[y>>2]|0)+55>>0]&3|0)==2:0){if(c[x>>2]|0)c[K>>2]=35306}else N=19;do if((N|0)==19){if(c[v>>2]&131072){c[K>>2]=35318;break}if(c[v>>2]&16384){c[K>>2]=35351;break}if(c[v>>2]&64){c[K>>2]=35376;break}else{c[K>>2]=35394;break}}while(0);if(c[K>>2]|0){aA(C,35403,7);N=c[K>>2]|0;c[J>>2]=c[c[y>>2]>>2];$z(C,N,J);BD(C,c[A>>2]|0)}}else{if((c[v>>2]&256|0)!=0?(c[v>>2]&15|0)!=0:0){do if(!(c[v>>2]&5)){if((c[v>>2]&48|0)==48){c[M>>2]=35413;break}if(c[v>>2]&32){c[M>>2]=35427;break}else{c[M>>2]=35429;break}}else c[M>>2]=35411;while(0);c[G>>2]=c[M>>2];$z(C,35431,G);break}if(c[v>>2]&1024){N=c[(c[A>>2]|0)+24+8>>2]|0;c[H>>2]=c[(c[A>>2]|0)+24>>2];c[H+4>>2]=N;$z(C,35469,H)}}while(0);c[L>>2]=eg(C)|0;c[B>>2]=Uw(c[D>>2]|0,161,c[w>>2]|0,c[t>>2]|0,c[u>>2]|0,c[L>>2]|0,-1)|0;break}c[s>>2]=0;N=c[s>>2]|0;i=O;return N|0}while(0);c[s>>2]=c[B>>2];N=c[s>>2]|0;i=O;return N|0}function mD(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0;Za=i;i=i+368|0;Ia=Za+8|0;Ja=Za+352|0;Z=Za+348|0;Ka=Za;Oa=Za+344|0;Ha=Za+340|0;Na=Za+336|0;F=Za+332|0;N=Za+328|0;Fa=Za+324|0;Ta=Za+320|0;Ga=Za+316|0;Wa=Za+312|0;Va=Za+308|0;Ua=Za+304|0;Ma=Za+300|0;Ya=Za+296|0;E=Za+292|0;v=Za+288|0;La=Za+284|0;K=Za+280|0;l=Za+276|0;k=Za+272|0;A=Za+268|0;z=Za+264|0;D=Za+260|0;B=Za+256|0;u=Za+252|0;t=Za+248|0;m=Za+244|0;o=Za+240|0;n=Za+236|0;p=Za+232|0;r=Za+228|0;s=Za+224|0;q=Za+220|0;M=Za+358|0;V=Za+216|0;S=Za+212|0;R=Za+208|0;W=Za+204|0;J=Za+200|0;X=Za+196|0;L=Za+192|0;P=Za+188|0;ba=Za+184|0;w=Za+180|0;O=Za+176|0;Y=Za+172|0;I=Za+363|0;G=Za+362|0;H=Za+361|0;x=Za+168|0;y=Za+360|0;T=Za+164|0;U=Za+160|0;Q=Za+156|0;sa=Za+152|0;qa=Za+148|0;na=Za+144|0;aa=Za+140|0;za=Za+136|0;Ba=Za+132|0;Aa=Za+128|0;ca=Za+124|0;ea=Za+120|0;Ca=Za+116|0;ha=Za+112|0;Da=Za+356|0;ma=Za+108|0;xa=Za+104|0;ja=Za+100|0;la=Za+96|0;ta=Za+92|0;ga=Za+88|0;oa=Za+84|0;ra=Za+80|0;wa=Za+76|0;pa=Za+72|0;ia=Za+68|0;va=Za+64|0;_=Za+60|0;ya=Za+56|0;fa=Za+52|0;ua=Za+48|0;ka=Za+44|0;da=Za+40|0;$=Za+36|0;Qa=Za+32|0;Xa=Za+28|0;Ra=Za+24|0;Sa=Za+20|0;Pa=Za+16|0;c[Ja>>2]=f;c[Z>>2]=g;g=Ka;c[g>>2]=h;c[g+4>>2]=j;c[K>>2]=0;c[l>>2]=0;c[Ua>>2]=c[c[Ja>>2]>>2];c[Ya>>2]=c[(c[Ua>>2]|0)+8>>2];c[Wa>>2]=(c[Ja>>2]|0)+328;c[Ma>>2]=c[c[Ua>>2]>>2];c[Ta>>2]=(c[Ja>>2]|0)+736+((c[Z>>2]|0)*80|0);c[Ga>>2]=c[(c[Ta>>2]|0)+64>>2];c[E>>2]=(c[(c[Ja>>2]|0)+4>>2]|0)+8+((d[(c[Ta>>2]|0)+44>>0]|0)*72|0);c[Na>>2]=c[(c[E>>2]|0)+44>>2];g=Ka;h=c[g>>2]|0;g=c[g+4>>2]|0;j=nD((c[Ja>>2]|0)+68|0,c[Na>>2]|0)|0;f=(c[Ta>>2]|0)+72|0;c[f>>2]=h&~j;c[f+4>>2]=g&~C;f=(c[Ja>>2]|0)+24|0;f=hR(c[f>>2]|0,c[f+4>>2]|0,c[Z>>2]|0)|0;c[Fa>>2]=f&1;if(c[(c[Ga>>2]|0)+36>>2]&64)h=(e[(c[Ja>>2]|0)+34>>1]&32|0)==0;else h=0;c[N>>2]=h&1;f=Cz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+16>>2]=f;c[(c[Ta>>2]|0)+12>>2]=f;c[v>>2]=f;f=Cz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+24>>2]=f;c[La>>2]=f;if((d[(c[Ta>>2]|0)+44>>0]|0)>0?(d[(c[E>>2]|0)+36>>0]&8|0)!=0:0){g=(c[Ua>>2]|0)+76|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[c[Ta>>2]>>2]=f;Rw(c[Ya>>2]|0,22,0,c[c[Ta>>2]>>2]|0)|0}do if(!((d[(c[E>>2]|0)+36+1>>0]|0)>>>4&1)){h=c[Ga>>2]|0;if(c[(c[Ga>>2]|0)+36>>2]&1024){c[D>>2]=e[h+40>>1];iA(c[Ua>>2]|0);c[A>>2]=kA(c[Ua>>2]|0,(c[D>>2]|0)+2|0)|0;c[z>>2]=c[(c[Ta>>2]|0)+12>>2];c[Oa>>2]=0;while(1){if((c[Oa>>2]|0)>=(c[D>>2]|0))break;c[B>>2]=(c[A>>2]|0)+(c[Oa>>2]|0)+2;c[Va>>2]=c[(c[(c[Ga>>2]|0)+48>>2]|0)+(c[Oa>>2]<<2)>>2];do if(c[Va>>2]|0){h=c[Ua>>2]|0;j=c[Va>>2]|0;if(e[(c[Va>>2]|0)+18>>1]&1){oD(h,j,c[Ta>>2]|0,c[Oa>>2]|0,c[Fa>>2]|0,c[B>>2]|0)|0;c[z>>2]=c[(c[Ta>>2]|0)+16>>2];break}else{xA(h,c[(c[j>>2]|0)+16>>2]|0,c[B>>2]|0);break}}while(0);c[Oa>>2]=(c[Oa>>2]|0)+1}Rw(c[Ya>>2]|0,22,c[(c[Ga>>2]|0)+24>>2]|0,c[A>>2]|0)|0;Rw(c[Ya>>2]|0,22,c[D>>2]|0,(c[A>>2]|0)+1|0)|0;Uw(c[Ya>>2]|0,11,c[Na>>2]|0,c[z>>2]|0,c[A>>2]|0,c[(c[Ga>>2]|0)+24+8>>2]|0,(d[(c[Ga>>2]|0)+24+4>>0]|0)!=0?-11:-2)|0;a[(c[Ga>>2]|0)+24+4>>0]=0;c[Oa>>2]=0;while(1){if(!((c[Oa>>2]|0)<(c[D>>2]|0)?(c[Oa>>2]|0)<16:0))break;if(e[(c[Ga>>2]|0)+24+6>>1]>>c[Oa>>2]&1)pD(c[Ta>>2]|0,c[(c[(c[Ga>>2]|0)+48>>2]|0)+(c[Oa>>2]<<2)>>2]|0);c[Oa>>2]=(c[Oa>>2]|0)+1}c[(c[Ta>>2]|0)+48>>2]=c[Na>>2];a[(c[Ta>>2]|0)+45>>0]=(d[(c[Ja>>2]|0)+38>>0]|0)!=0?160:154;Ha=Bz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+52>>2]=Ha;nA(c[Ua>>2]|0,c[A>>2]|0,(c[D>>2]|0)+2|0);gA(c[Ua>>2]|0);break}if((c[h+36>>2]&256|0)!=0?(c[(c[Ga>>2]|0)+36>>2]&5|0)!=0:0){c[Va>>2]=c[c[(c[Ga>>2]|0)+48>>2]>>2];Ga=(c[Ua>>2]|0)+76|0;Ha=(c[Ga>>2]|0)+1|0;c[Ga>>2]=Ha;c[l>>2]=Ha;c[K>>2]=oD(c[Ua>>2]|0,c[Va>>2]|0,c[Ta>>2]|0,0,c[Fa>>2]|0,c[l>>2]|0)|0;if((c[K>>2]|0)!=(c[l>>2]|0))_z(c[Ua>>2]|0,c[l>>2]|0);c[F>>2]=c[(c[Ta>>2]|0)+16>>2];Rw(c[Ya>>2]|0,38,c[K>>2]|0,c[F>>2]|0)|0;Vw(c[Ya>>2]|0,70,c[Na>>2]|0,c[F>>2]|0,c[K>>2]|0)|0;CA(c[Ua>>2]|0,c[K>>2]|0,1);gB(c[Ua>>2]|0,c[Na>>2]|0,-1,c[K>>2]|0);a[(c[Ta>>2]|0)+45>>0]=-96;break}if((c[(c[Ga>>2]|0)+36>>2]&256|0)!=0?(c[(c[Ga>>2]|0)+36>>2]&2|0)!=0:0){c[u>>2]=160;c[m>>2]=0;c[Oa>>2]=0;c[n>>2]=0;c[o>>2]=0;if(c[(c[Ga>>2]|0)+36>>2]&32){Ha=c[Oa>>2]|0;c[Oa>>2]=Ha+1;c[o>>2]=c[(c[(c[Ga>>2]|0)+48>>2]|0)+(Ha<<2)>>2]}if(c[(c[Ga>>2]|0)+36>>2]&16){Ha=c[Oa>>2]|0;c[Oa>>2]=Ha+1;c[n>>2]=c[(c[(c[Ga>>2]|0)+48>>2]|0)+(Ha<<2)>>2]}if(c[Fa>>2]|0){c[Va>>2]=c[o>>2];c[o>>2]=c[n>>2];c[n>>2]=c[Va>>2]}if(c[o>>2]|0){c[p>>2]=c[c[o>>2]>>2];c[r>>2]=DA(c[Ua>>2]|0,c[(c[p>>2]|0)+16>>2]|0,s)|0;Vw(c[Ya>>2]|0,d[35244+((d[c[p>>2]>>0]|0)-80)>>0]|0,c[Na>>2]|0,c[v>>2]|0,c[r>>2]|0)|0;CA(c[Ua>>2]|0,c[r>>2]|0,1);_z(c[Ua>>2]|0,c[s>>2]|0);pD(c[Ta>>2]|0,c[o>>2]|0)}else Rw(c[Ya>>2]|0,(c[Fa>>2]|0)!=0?105:108,c[Na>>2]|0,c[v>>2]|0)|0;if(c[n>>2]|0){c[q>>2]=c[c[n>>2]>>2];Ga=(c[Ua>>2]|0)+76|0;Ha=(c[Ga>>2]|0)+1|0;c[Ga>>2]=Ha;c[m>>2]=Ha;xA(c[Ua>>2]|0,c[(c[q>>2]|0)+16>>2]|0,c[m>>2]|0);if((d[c[q>>2]>>0]|0)!=82?(d[c[q>>2]>>0]|0)!=80:0)c[u>>2]=(c[Fa>>2]|0)!=0?82:80;else c[u>>2]=(c[Fa>>2]|0)!=0?81:83;pD(c[Ta>>2]|0,c[n>>2]|0)}c[t>>2]=Bz(c[Ya>>2]|0)|0;a[(c[Ta>>2]|0)+45>>0]=(c[Fa>>2]|0)!=0?6:7;c[(c[Ta>>2]|0)+48>>2]=c[Na>>2];c[(c[Ta>>2]|0)+52>>2]=c[t>>2];if((c[u>>2]|0)==160)break;Ga=(c[Ua>>2]|0)+76|0;Ha=(c[Ga>>2]|0)+1|0;c[Ga>>2]=Ha;c[K>>2]=Ha;Rw(c[Ya>>2]|0,103,c[Na>>2]|0,c[K>>2]|0)|0;gB(c[Ua>>2]|0,c[Na>>2]|0,-1,c[K>>2]|0);Vw(c[Ya>>2]|0,c[u>>2]|0,c[m>>2]|0,c[v>>2]|0,c[K>>2]|0)|0;Fh(c[Ya>>2]|0,83);break}h=c[Ga>>2]|0;if(c[(c[Ga>>2]|0)+36>>2]&512){b[M>>1]=b[h+24>>1]|0;c[S>>2]=0;c[R>>2]=0;c[w>>2]=0;a[I>>0]=0;a[G>>0]=0;a[H>>0]=0;c[P>>2]=c[(c[Ga>>2]|0)+24+4>>2];c[ba>>2]=c[(c[Ta>>2]|0)+8>>2];if(((e[(c[Ja>>2]|0)+34>>1]&1|0)!=0?(a[(c[Ja>>2]|0)+36>>0]|0)>0:0)?(e[(c[P>>2]|0)+50>>1]|0)>(e[M>>1]|0):0){a[G>>0]=1;c[w>>2]=1}c[Oa>>2]=e[M>>1];if(c[(c[Ga>>2]|0)+36>>2]&32){Ea=c[Oa>>2]|0;c[Oa>>2]=Ea+1;c[S>>2]=c[(c[(c[Ga>>2]|0)+48>>2]|0)+(Ea<<2)>>2];c[w>>2]=1}if(c[(c[Ga>>2]|0)+36>>2]&16){Ea=c[Oa>>2]|0;c[Oa>>2]=Ea+1;c[R>>2]=c[(c[(c[Ga>>2]|0)+48>>2]|0)+(Ea<<2)>>2];c[w>>2]=1;if(e[(c[R>>2]|0)+20>>1]&256){Da=(c[Ua>>2]|0)+76|0;Ea=(c[Da>>2]|0)+1|0;c[Da>>2]=Ea;c[(c[Ta>>2]|0)+36>>2]=Ea;Rw(c[Ya>>2]|0,22,c[Fa>>2]^(d[(c[(c[P>>2]|0)+28>>2]|0)+(e[M>>1]|0)>>0]|0)==1,c[(c[Ta>>2]|0)+36>>2]|0)|0;Ea=Bz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+40>>2]=Ea}if(((c[S>>2]|0)==0?(Ea=b[(c[(c[P>>2]|0)+4>>2]|0)+(e[M>>1]<<1)>>1]|0,c[Oa>>2]=Ea,(Ea|0)>=0):0)?(d[(c[(c[(c[P>>2]|0)+12>>2]|0)+4>>2]|0)+((c[Oa>>2]|0)*24|0)+20>>0]|0)==0:0)a[G>>0]=1}if((e[M>>1]|0)<(e[(c[P>>2]|0)+50>>1]|0)?(c[Fa>>2]|0)==((d[(c[(c[P>>2]|0)+28>>2]|0)+(e[M>>1]|0)>>0]|0)==0|0):0)Ea=64;else Ea=62;if(((Ea|0)==62?(c[Fa>>2]|0)!=0:0)?(e[(c[P>>2]|0)+50>>1]|0)==(e[M>>1]|0):0)Ea=64;if((Ea|0)==64){c[x>>2]=c[R>>2];c[R>>2]=c[S>>2];c[S>>2]=c[x>>2];a[y>>0]=a[G>>0]|0;a[G>>0]=a[H>>0]|0;a[H>>0]=a[y>>0]|0}c[V>>2]=qD(c[Ua>>2]|0,c[Ta>>2]|0,c[Fa>>2]|0,c[w>>2]|0,Y)|0;if(c[Y>>2]|0)a[I>>0]=a[(c[Y>>2]|0)+(e[M>>1]|0)>>0]|0;c[F>>2]=c[(c[Ta>>2]|0)+16>>2];if(c[S>>2]|0)h=(e[(c[S>>2]|0)+18>>1]&40|0)!=0;else h=1;c[W>>2]=h&1;if(c[R>>2]|0)h=(e[(c[R>>2]|0)+18>>1]&40|0)!=0;else h=1;c[J>>2]=h&1;if(c[S>>2]|0)h=1;else h=(e[M>>1]|0)>0;c[X>>2]=h&1;c[L>>2]=e[M>>1];if(!(c[S>>2]|0)){if(a[G>>0]|0){Rw(c[Ya>>2]|0,25,0,(c[V>>2]|0)+(e[M>>1]|0)|0)|0;c[L>>2]=(c[L>>2]|0)+1;c[W>>2]=0;c[X>>2]=1}}else{c[T>>2]=c[(c[c[S>>2]>>2]|0)+16>>2];xA(c[Ua>>2]|0,c[T>>2]|0,(c[V>>2]|0)+(e[M>>1]|0)|0);rD(c[Ya>>2]|0,c[Ta>>2]|0,c[S>>2]|0);do if(!(e[(c[S>>2]|0)+20>>1]&0)){if(!(RA(c[T>>2]|0)|0))break;Rw(c[Ya>>2]|0,76,(c[V>>2]|0)+(e[M>>1]|0)|0,c[F>>2]|0)|0}while(0);do if(c[Y>>2]|0){if(((SA(c[T>>2]|0,a[(c[Y>>2]|0)+(e[M>>1]|0)>>0]|0)|0)<<24>>24|0)==65)a[(c[Y>>2]|0)+(e[M>>1]|0)>>0]=65;if(!(sD(c[T>>2]|0,a[(c[Y>>2]|0)+(e[M>>1]|0)>>0]|0)|0))break;a[(c[Y>>2]|0)+(e[M>>1]|0)>>0]=65}while(0);c[L>>2]=(c[L>>2]|0)+1}tD(c[Ua>>2]|0,c[V>>2]|0,(c[L>>2]|0)-(d[G>>0]|0)|0,c[Y>>2]|0);c[O>>2]=d[35248+((c[X>>2]<<2)+(c[W>>2]<<1)+(c[Fa>>2]|0))>>0];Eh(c[Ya>>2]|0,c[O>>2]|0,c[ba>>2]|0,c[F>>2]|0,c[V>>2]|0,c[L>>2]|0)|0;c[L>>2]=e[M>>1];do if(c[R>>2]|0){c[U>>2]=c[(c[c[R>>2]>>2]|0)+16>>2];oA(c[Ua>>2]|0,(c[V>>2]|0)+(e[M>>1]|0)|0,1);xA(c[Ua>>2]|0,c[U>>2]|0,(c[V>>2]|0)+(e[M>>1]|0)|0);rD(c[Ya>>2]|0,c[Ta>>2]|0,c[R>>2]|0);do if(!(e[(c[R>>2]|0)+20>>1]&0)){if(!(RA(c[U>>2]|0)|0))break;Rw(c[Ya>>2]|0,76,(c[V>>2]|0)+(e[M>>1]|0)|0,c[F>>2]|0)|0}while(0);do if(((SA(c[U>>2]|0,a[I>>0]|0)|0)<<24>>24|0)!=65){if(sD(c[U>>2]|0,a[I>>0]|0)|0)break;tD(c[Ua>>2]|0,(c[V>>2]|0)+(e[M>>1]|0)|0,1,I)}while(0);c[L>>2]=(c[L>>2]|0)+1}else{if(!(a[H>>0]|0))break;Rw(c[Ya>>2]|0,25,0,(c[V>>2]|0)+(e[M>>1]|0)|0)|0;c[J>>2]=0;c[L>>2]=(c[L>>2]|0)+1}while(0);Sf(c[Ma>>2]|0,c[Y>>2]|0);Ea=Bz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+52>>2]=Ea;if(c[L>>2]|0){c[O>>2]=d[35256+((c[Fa>>2]<<1)+(c[J>>2]|0))>>0];Eh(c[Ya>>2]|0,c[O>>2]|0,c[ba>>2]|0,c[F>>2]|0,c[V>>2]|0,c[L>>2]|0)|0}pD(c[Ta>>2]|0,c[S>>2]|0);pD(c[Ta>>2]|0,c[R>>2]|0);do if(!(c[N>>2]|0)){if(!(d[(c[(c[P>>2]|0)+12>>2]|0)+42>>0]&32))if(d[(c[Ja>>2]|0)+38>>0]|0){Ea=(c[Ua>>2]|0)+76|0;Ha=(c[Ea>>2]|0)+1|0;c[Ea>>2]=Ha;c[K>>2]=Ha;Rw(c[Ya>>2]|0,113,c[ba>>2]|0,c[K>>2]|0)|0;gB(c[Ua>>2]|0,c[Na>>2]|0,-1,c[K>>2]|0);Vw(c[Ya>>2]|0,70,c[Na>>2]|0,0,c[K>>2]|0)|0;break}else{uD(c[Ja>>2]|0,c[P>>2]|0,c[Na>>2]|0,c[ba>>2]|0);break}if((c[Na>>2]|0)==(c[ba>>2]|0))break;c[Q>>2]=Ej(c[(c[P>>2]|0)+12>>2]|0)|0;c[K>>2]=kA(c[Ua>>2]|0,e[(c[Q>>2]|0)+50>>1]|0)|0;c[Oa>>2]=0;while(1){if((c[Oa>>2]|0)>=(e[(c[Q>>2]|0)+50>>1]|0))break;c[Ha>>2]=(uA(c[P>>2]|0,b[(c[(c[Q>>2]|0)+4>>2]|0)+(c[Oa>>2]<<1)>>1]|0)|0)<<16>>16;Vw(c[Ya>>2]|0,47,c[ba>>2]|0,c[Ha>>2]|0,(c[K>>2]|0)+(c[Oa>>2]|0)|0)|0;c[Oa>>2]=(c[Oa>>2]|0)+1}Eh(c[Ya>>2]|0,68,c[Na>>2]|0,c[La>>2]|0,c[K>>2]|0,e[(c[Q>>2]|0)+50>>1]|0)|0}while(0);do if(!(c[(c[Ga>>2]|0)+36>>2]&4096)){h=(c[Ta>>2]|0)+45|0;if(c[Fa>>2]|0){a[h>>0]=6;break}else{a[h>>0]=7;break}}else a[(c[Ta>>2]|0)+45>>0]=-96;while(0);c[(c[Ta>>2]|0)+48>>2]=c[ba>>2];a[(c[Ta>>2]|0)+46>>0]=(c[(c[Ga>>2]|0)+36>>2]&65536|0)!=0?1:0;if(c[(c[Ga>>2]|0)+36>>2]&15)break;a[(c[Ta>>2]|0)+47>>0]=1;break}if(!(c[h+36>>2]&8192))if((d[(c[E>>2]|0)+36+1>>0]|0)>>>5&1){a[(c[Ta>>2]|0)+45>>0]=-96;break}else{a[(c[Ta>>2]|0)+45>>0]=a[35260+(c[Fa>>2]|0)>>0]|0;c[(c[Ta>>2]|0)+48>>2]=c[Na>>2];Ha=1+(Rw(c[Ya>>2]|0,d[35262+(c[Fa>>2]|0)>>0]|0,c[Na>>2]|0,c[v>>2]|0)|0)|0;c[(c[Ta>>2]|0)+52>>2]=Ha;a[(c[Ta>>2]|0)+47>>0]=1;break}c[na>>2]=0;h=(c[Ua>>2]|0)+72|0;Fa=c[h>>2]|0;c[h>>2]=Fa+1;c[aa>>2]=Fa;Fa=(c[Ua>>2]|0)+76|0;h=(c[Fa>>2]|0)+1|0;c[Fa>>2]=h;c[za>>2]=h;c[Ba>>2]=0;c[Aa>>2]=0;c[ca>>2]=Cz(c[Ya>>2]|0)|0;c[Ca>>2]=0;c[ma>>2]=0;c[xa>>2]=c[(c[E>>2]|0)+16>>2];c[Va>>2]=c[c[(c[Ga>>2]|0)+48>>2]>>2];c[sa>>2]=c[(c[Va>>2]|0)+12>>2];a[(c[Ta>>2]|0)+45>>0]=15;c[(c[Ta>>2]|0)+48>>2]=c[za>>2];h=c[Ja>>2]|0;a:do if((d[(c[Ja>>2]|0)+41>>0]|0)>1){c[ja>>2]=(d[h+41>>0]|0)-(c[Z>>2]|0)-1;c[qa>>2]=yh(c[Ma>>2]|0,80+((c[ja>>2]|0)*72|0)|0,0)|0;if(!(c[qa>>2]|0)){Wa=Ka;Ya=c[Wa+4>>2]|0;Xa=Ia;c[Xa>>2]=c[Wa>>2];c[Xa+4>>2]=Ya;Xa=Ia;Ya=Xa;Ya=c[Ya>>2]|0;Xa=Xa+4|0;Xa=c[Xa>>2]|0;C=Xa;i=Za;return Ya|0}c[(c[qa>>2]|0)+4>>2]=(c[ja>>2]|0)+1&255;c[c[qa>>2]>>2]=c[(c[qa>>2]|0)+4>>2];g=(c[qa>>2]|0)+8|0;h=c[E>>2]|0;j=g+72|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));c[la>>2]=(c[(c[Ja>>2]|0)+4>>2]|0)+8;c[Ha>>2]=1;while(1){if((c[Ha>>2]|0)>(c[ja>>2]|0))break a;g=(c[qa>>2]|0)+8+((c[Ha>>2]|0)*72|0)|0;h=(c[la>>2]|0)+((d[(c[Ta>>2]|0)+((c[Ha>>2]|0)*80|0)+44>>0]|0)*72|0)|0;j=g+72|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));c[Ha>>2]=(c[Ha>>2]|0)+1}}else c[qa>>2]=c[h+4>>2];while(0);if(!(e[(c[Ja>>2]|0)+34>>1]&8)){if(!(d[(c[xa>>2]|0)+42>>0]&32)){Ga=(c[Ua>>2]|0)+76|0;Ha=(c[Ga>>2]|0)+1|0;c[Ga>>2]=Ha;c[Ba>>2]=Ha;Rw(c[Ya>>2]|0,25,0,c[Ba>>2]|0)|0}else{c[ta>>2]=Ej(c[xa>>2]|0)|0;Ga=(c[Ua>>2]|0)+72|0;Ha=c[Ga>>2]|0;c[Ga>>2]=Ha+1;c[Ba>>2]=Ha;Rw(c[Ya>>2]|0,57,c[Ba>>2]|0,e[(c[ta>>2]|0)+50>>1]|0)|0;Az(c[Ua>>2]|0,c[ta>>2]|0)}Ga=(c[Ua>>2]|0)+76|0;Ha=(c[Ga>>2]|0)+1|0;c[Ga>>2]=Ha;c[Aa>>2]=Ha}c[ea>>2]=Rw(c[Ya>>2]|0,22,0,c[za>>2]|0)|0;if((c[(c[Wa>>2]|0)+12>>2]|0)>1){c[ga>>2]=0;while(1){if((c[ga>>2]|0)>=(c[(c[Wa>>2]|0)+12>>2]|0))break;c[oa>>2]=c[(c[(c[Wa>>2]|0)+20>>2]|0)+((c[ga>>2]|0)*48|0)>>2];if(((((c[(c[Wa>>2]|0)+20>>2]|0)+((c[ga>>2]|0)*48|0)|0)!=(c[Va>>2]|0)?(c[(c[oa>>2]|0)+4>>2]&1|0)==0:0)?(e[(c[(c[Wa>>2]|0)+20>>2]|0)+((c[ga>>2]|0)*48|0)+20>>1]&6|0)==0:0)?(e[(c[(c[Wa>>2]|0)+20>>2]|0)+((c[ga>>2]|0)*48|0)+18>>1]&8191|0)!=0:0){c[oa>>2]=ny(c[Ma>>2]|0,c[oa>>2]|0,0)|0;c[ma>>2]=az(c[Ma>>2]|0,c[ma>>2]|0,c[oa>>2]|0)|0}c[ga>>2]=(c[ga>>2]|0)+1}if(c[ma>>2]|0)c[ma>>2]=rv(c[Ua>>2]|0,328,0,c[ma>>2]|0,0)|0}b[Da>>1]=240;c[ha>>2]=0;while(1){if((c[ha>>2]|0)>=(c[(c[sa>>2]|0)+12>>2]|0))break;c[ra>>2]=(c[(c[sa>>2]|0)+20>>2]|0)+((c[ha>>2]|0)*48|0);if(!((c[(c[ra>>2]|0)+8>>2]|0)!=(c[Na>>2]|0)?(e[(c[ra>>2]|0)+18>>1]&1024|0)==0:0)){c[pa>>2]=c[c[ra>>2]>>2];c[ia>>2]=0;if((c[ma>>2]|0)!=0?(c[(c[pa>>2]|0)+4>>2]&1|0)==0:0){c[(c[ma>>2]|0)+12>>2]=c[pa>>2];c[pa>>2]=c[ma>>2]}c[wa>>2]=RC(c[Ua>>2]|0,c[qa>>2]|0,c[pa>>2]|0,0,0,b[Da>>1]|0,c[aa>>2]|0)|0;if(c[wa>>2]|0){c[_>>2]=lD(c[Ua>>2]|0,c[qa>>2]|0,(c[wa>>2]|0)+736|0,c[Z>>2]|0,d[(c[Ta>>2]|0)+44>>0]|0,0)|0;do if(!(e[(c[Ja>>2]|0)+34>>1]&8)){c[fa>>2]=(c[ha>>2]|0)==((c[(c[sa>>2]|0)+12>>2]|0)-1|0)?-1:c[ha>>2]|0;if(!(d[(c[xa>>2]|0)+42>>0]&32)){c[ya>>2]=zA(c[Ua>>2]|0,c[xa>>2]|0,-1,c[Na>>2]|0,c[Aa>>2]|0,0)|0;c[ia>>2]=Eh(c[Ya>>2]|0,131,c[Ba>>2]|0,0,c[ya>>2]|0,c[fa>>2]|0)|0;break}c[ua>>2]=Ej(c[xa>>2]|0)|0;c[ka>>2]=e[(c[ua>>2]|0)+50>>1];c[ya>>2]=kA(c[Ua>>2]|0,c[ka>>2]|0)|0;c[da>>2]=0;while(1){if((c[da>>2]|0)>=(c[ka>>2]|0))break;c[$>>2]=b[(c[(c[ua>>2]|0)+4>>2]|0)+(c[da>>2]<<1)>>1];vD(c[Ua>>2]|0,c[xa>>2]|0,c[$>>2]|0,c[Na>>2]|0,(c[ya>>2]|0)+(c[da>>2]|0)|0);c[da>>2]=(c[da>>2]|0)+1}if(c[fa>>2]|0)c[ia>>2]=Eh(c[Ya>>2]|0,69,c[Ba>>2]|0,0,c[ya>>2]|0,c[ka>>2]|0)|0;do if((c[fa>>2]|0)>=0){Vw(c[Ya>>2]|0,49,c[ya>>2]|0,c[ka>>2]|0,c[Aa>>2]|0)|0;Vw(c[Ya>>2]|0,110,c[Ba>>2]|0,c[Aa>>2]|0,0)|0;if(!(c[fa>>2]|0))break;Fh(c[Ya>>2]|0,16)}while(0);nA(c[Ua>>2]|0,c[ya>>2]|0,c[ka>>2]|0)}while(0);Rw(c[Ya>>2]|0,14,c[za>>2]|0,c[ca>>2]|0)|0;if(c[ia>>2]|0)Fz(c[Ya>>2]|0,c[ia>>2]|0);if(a[(c[wa>>2]|0)+39>>0]|0)c[Ca>>2]=1;c[va>>2]=c[(c[wa>>2]|0)+736+64>>2];do if(c[(c[va>>2]|0)+36>>2]&512){if((c[ha>>2]|0)!=0?(c[(c[va>>2]|0)+24+4>>2]|0)!=(c[na>>2]|0):0){Ea=168;break}if((d[(c[xa>>2]|0)+42>>0]&32|0)!=0?(a[(c[(c[va>>2]|0)+24+4>>2]|0)+55>>0]&3|0)==2:0){Ea=168;break}c[na>>2]=c[(c[va>>2]|0)+24+4>>2];b[Da>>1]=e[Da>>1]|4096}else Ea=168;while(0);if((Ea|0)==168){Ea=0;c[na>>2]=0}SC(c[wa>>2]|0)}}c[ha>>2]=(c[ha>>2]|0)+1}c[(c[Ta>>2]|0)+56>>2]=c[na>>2];if(c[na>>2]|0)c[(c[Ta>>2]|0)+8>>2]=c[aa>>2];if(c[ma>>2]|0){c[(c[ma>>2]|0)+12>>2]=0;Zu(c[Ma>>2]|0,c[ma>>2]|0)}Ga=c[Ya>>2]|0;Ha=c[ea>>2]|0;wD(Ga,Ha,Bz(c[Ya>>2]|0)|0);Ez(c[Ya>>2]|0,c[(c[Ta>>2]|0)+12>>2]|0)|0;Gz(c[Ya>>2]|0,c[ca>>2]|0);if((d[(c[Ja>>2]|0)+41>>0]|0)>1)Sf(c[Ma>>2]|0,c[qa>>2]|0);if(!(c[Ca>>2]|0))pD(c[Ta>>2]|0,c[Va>>2]|0)}else{c[k>>2]=c[(c[E>>2]|0)+28>>2];Vw(c[Ya>>2]|0,16,c[k>>2]|0,0,c[(c[E>>2]|0)+24>>2]|0)|0;Ha=Rw(c[Ya>>2]|0,18,c[k>>2]|0,c[v>>2]|0)|0;c[(c[Ta>>2]|0)+52>>2]=Ha;a[(c[Ta>>2]|0)+45>>0]=13}while(0);c[Va>>2]=c[(c[Wa>>2]|0)+20>>2];c[Oa>>2]=c[(c[Wa>>2]|0)+12>>2];while(1){if((c[Oa>>2]|0)<=0)break;c[Xa>>2]=0;do if(!(e[(c[Va>>2]|0)+20>>1]&6)){Ga=(c[Va>>2]|0)+40|0;Ha=(c[Ta>>2]|0)+72|0;if((c[Ga>>2]&c[Ha>>2]|0)!=0?1:(c[Ga+4>>2]&c[Ha+4>>2]|0)!=0){a[(c[Ja>>2]|0)+39>>0]=1;break}c[Qa>>2]=c[c[Va>>2]>>2];if((c[c[Ta>>2]>>2]|0)!=0?(c[(c[Qa>>2]|0)+4>>2]&1|0)==0:0)break;if(e[(c[Va>>2]|0)+20>>1]&512)c[Xa>>2]=xz(c[Ya>>2]|0,46,c[(c[Ta>>2]|0)+36>>2]|0)|0;LA(c[Ua>>2]|0,c[Qa>>2]|0,c[La>>2]|0,16);if(c[Xa>>2]|0)Fz(c[Ya>>2]|0,c[Xa>>2]|0);Ha=(c[Va>>2]|0)+20|0;b[Ha>>1]=e[Ha>>1]|4}while(0);c[Oa>>2]=(c[Oa>>2]|0)+-1;c[Va>>2]=(c[Va>>2]|0)+48}c[Va>>2]=c[(c[Wa>>2]|0)+20>>2];c[Oa>>2]=c[(c[Wa>>2]|0)+12>>2];while(1){if((c[Oa>>2]|0)<=0)break;if((((((((e[(c[Va>>2]|0)+20>>1]&6|0)==0?(e[(c[Va>>2]|0)+18>>1]&130|0)!=0:0)?(e[(c[Va>>2]|0)+18>>1]&2048|0)!=0:0)?(c[(c[Va>>2]|0)+8>>2]|0)==(c[Na>>2]|0):0)?(c[c[Ta>>2]>>2]|0)==0:0)?(c[Ra>>2]=c[c[Va>>2]>>2],Xa=Ka,c[Pa>>2]=xD(c[Wa>>2]|0,c[Na>>2]|0,c[(c[Va>>2]|0)+12>>2]|0,c[Xa>>2]|0,c[Xa+4>>2]|0,131,0)|0,(c[Pa>>2]|0)!=0):0)?(e[(c[Pa>>2]|0)+20>>1]&4|0)==0:0)?(c[Sa>>2]=yh(c[Ma>>2]|0,48,0)|0,(c[Sa>>2]|0)!=0):0){g=c[Sa>>2]|0;h=c[c[Pa>>2]>>2]|0;j=g+48|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0));c[(c[Sa>>2]|0)+12>>2]=c[(c[Ra>>2]|0)+12>>2];LA(c[Ua>>2]|0,c[Sa>>2]|0,c[La>>2]|0,16);Sf(c[Ma>>2]|0,c[Sa>>2]|0)}c[Oa>>2]=(c[Oa>>2]|0)+-1;c[Va>>2]=(c[Va>>2]|0)+48}b:do if(c[c[Ta>>2]>>2]|0){Xa=Bz(c[Ya>>2]|0)|0;c[(c[Ta>>2]|0)+28>>2]=Xa;Rw(c[Ya>>2]|0,22,1,c[c[Ta>>2]>>2]|0)|0;fC(c[Ua>>2]|0);c[Va>>2]=c[(c[Wa>>2]|0)+20>>2];c[Oa>>2]=0;while(1){if((c[Oa>>2]|0)>=(c[(c[Wa>>2]|0)+12>>2]|0))break b;if((e[(c[Va>>2]|0)+20>>1]&6|0)==0?(Xa=(c[Va>>2]|0)+40|0,Ya=(c[Ta>>2]|0)+72|0,!((c[Xa>>2]&c[Ya>>2]|0)!=0?1:(c[Xa+4>>2]&c[Ya+4>>2]|0)!=0)):0){LA(c[Ua>>2]|0,c[c[Va>>2]>>2]|0,c[La>>2]|0,16);Ya=(c[Va>>2]|0)+20|0;b[Ya>>1]=e[Ya>>1]|4}c[Oa>>2]=(c[Oa>>2]|0)+1;c[Va>>2]=(c[Va>>2]|0)+48}}while(0);Wa=(c[Ta>>2]|0)+72|0;Ya=c[Wa+4>>2]|0;Xa=Ia;c[Xa>>2]=c[Wa>>2];c[Xa+4>>2]=Ya;Xa=Ia;Ya=Xa;Ya=c[Ya>>2]|0;Xa=Xa+4|0;Xa=c[Xa>>2]|0;C=Xa;i=Za;return Ya|0}function nD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;g=h;d=h+16|0;e=h+12|0;f=h+8|0;c[d>>2]=a;c[e>>2]=b;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[d>>2]>>2]|0)){b=6;break}a=c[f>>2]|0;if((c[(c[d>>2]|0)+4+(c[f>>2]<<2)>>2]|0)==(c[e>>2]|0)){b=4;break}c[f>>2]=a+1}if((b|0)==4){e=lR(1,0,a|0)|0;f=g;c[f>>2]=e;c[f+4>>2]=C;f=g;g=f;g=c[g>>2]|0;f=f+4|0;f=c[f>>2]|0;C=f;i=h;return g|0}else if((b|0)==6){f=g;c[f>>2]=0;c[f+4>>2]=0;f=g;g=f;g=c[g>>2]|0;f=f+4|0;f=c[f>>2]|0;C=f;i=h;return g|0}return 0}function oD(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+64|0;k=x+48|0;q=x+44|0;r=x+40|0;l=x+36|0;s=x+32|0;m=x+28|0;o=x+24|0;w=x+20|0;u=x+16|0;t=x+12|0;p=x+8|0;v=x+4|0;n=x;c[k>>2]=b;c[q>>2]=e;c[r>>2]=f;c[l>>2]=g;c[s>>2]=h;c[m>>2]=j;c[o>>2]=c[c[q>>2]>>2];c[w>>2]=c[(c[k>>2]|0)+8>>2];if((d[c[o>>2]>>0]|0|0)!=79?(d[c[o>>2]>>0]|0|0)!=73:0){if((d[c[o>>2]>>0]|0|0)==76){c[u>>2]=c[m>>2];Rw(c[w>>2]|0,25,0,c[u>>2]|0)|0;v=c[r>>2]|0;w=c[q>>2]|0;pD(v,w);w=c[u>>2]|0;i=x;return w|0}c[n>>2]=c[(c[r>>2]|0)+64>>2];if(((c[(c[n>>2]|0)+36>>2]&1024|0)==0?(c[(c[n>>2]|0)+24+4>>2]|0)!=0:0)?(d[(c[(c[(c[n>>2]|0)+24+4>>2]|0)+28>>2]|0)+(c[l>>2]|0)>>0]|0|0)!=0:0)c[s>>2]=((c[s>>2]|0)!=0^1)&1;c[u>>2]=c[m>>2];c[t>>2]=PA(c[k>>2]|0,c[o>>2]|0,4,0)|0;if((c[t>>2]|0)==4)c[s>>2]=((c[s>>2]|0)!=0^1)&1;c[p>>2]=c[(c[o>>2]|0)+28>>2];Rw(c[w>>2]|0,(c[s>>2]|0)!=0?105:108,c[p>>2]|0,0)|0;o=(c[n>>2]|0)+36|0;c[o>>2]=c[o>>2]|2048;if(!(c[(c[r>>2]|0)+56>>2]|0)){o=Cz(c[w>>2]|0)|0;c[(c[r>>2]|0)+16>>2]=o}o=(c[r>>2]|0)+56|0;c[o>>2]=(c[o>>2]|0)+1;k=vx(c[c[k>>2]>>2]|0,c[(c[r>>2]|0)+56+4>>2]|0,(c[(c[r>>2]|0)+56>>2]|0)*12|0,0)|0;c[(c[r>>2]|0)+56+4>>2]=k;c[v>>2]=c[(c[r>>2]|0)+56+4>>2];k=(c[r>>2]|0)+56|0;if(!(c[v>>2]|0)){c[k>>2]=0;v=c[r>>2]|0;w=c[q>>2]|0;pD(v,w);w=c[u>>2]|0;i=x;return w|0}c[v>>2]=(c[v>>2]|0)+(((c[k>>2]|0)-1|0)*12|0);c[c[v>>2]>>2]=c[p>>2];m=c[w>>2]|0;k=c[p>>2]|0;l=c[u>>2]|0;if((c[t>>2]|0)==1){t=Rw(m,103,k,l)|0;c[(c[v>>2]|0)+4>>2]=t}else{t=Vw(m,47,k,0,l)|0;c[(c[v>>2]|0)+4>>2]=t}a[(c[v>>2]|0)+8>>0]=(c[s>>2]|0)!=0?4:5;xz(c[w>>2]|0,76,c[u>>2]|0)|0;v=c[r>>2]|0;w=c[q>>2]|0;pD(v,w);w=c[u>>2]|0;i=x;return w|0}c[u>>2]=yA(c[k>>2]|0,c[(c[o>>2]|0)+16>>2]|0,c[m>>2]|0)|0;v=c[r>>2]|0;w=c[q>>2]|0;pD(v,w);w=c[u>>2]|0;i=x;return w|0}function pD(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;l=i;i=i+16|0;h=l+8|0;j=l+4|0;k=l;c[h>>2]=f;c[j>>2]=g;c[k>>2]=0;while(1){if(!(c[j>>2]|0)){h=14;break}if((e[(c[j>>2]|0)+20>>1]|0)&4){h=14;break}if((c[c[h>>2]>>2]|0)!=0?(c[(c[c[j>>2]>>2]|0)+4>>2]&1|0)==0:0){h=14;break}f=(c[h>>2]|0)+72|0;g=(c[j>>2]|0)+40|0;if(!((c[f>>2]&c[g>>2]|0)==0?(c[f+4>>2]&c[g+4>>2]|0)==0:0)){h=14;break}if((c[k>>2]|0)!=0?((e[(c[j>>2]|0)+20>>1]|0)&1024|0)!=0:0){g=(c[j>>2]|0)+20|0;b[g>>1]=e[g>>1]|0|512}else{g=(c[j>>2]|0)+20|0;b[g>>1]=e[g>>1]|0|4}if((c[(c[j>>2]|0)+4>>2]|0)<0){h=14;break}c[j>>2]=(c[(c[(c[j>>2]|0)+24>>2]|0)+20>>2]|0)+((c[(c[j>>2]|0)+4>>2]|0)*48|0);g=(c[j>>2]|0)+22|0;a[g>>0]=(a[g>>0]|0)+-1<<24>>24;if(d[(c[j>>2]|0)+22>>0]|0){h=14;break}c[k>>2]=(c[k>>2]|0)+1}if((h|0)==14){i=l;return}}function qD(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;A=i;i=i+80|0;k=A+60|0;l=A+56|0;m=A+52|0;C=A+48|0;n=A+44|0;q=A+66|0;s=A+64|0;y=A+40|0;B=A+36|0;v=A+32|0;t=A+28|0;p=A+24|0;x=A+20|0;r=A+16|0;z=A+12|0;o=A+8|0;w=A+4|0;u=A;c[k>>2]=d;c[l>>2]=f;c[m>>2]=g;c[C>>2]=h;c[n>>2]=j;c[y>>2]=c[(c[k>>2]|0)+8>>2];c[t>>2]=c[(c[l>>2]|0)+64>>2];b[q>>1]=b[(c[t>>2]|0)+24>>1]|0;b[s>>1]=b[(c[t>>2]|0)+42>>1]|0;c[B>>2]=c[(c[t>>2]|0)+24+4>>2];c[x>>2]=(c[(c[k>>2]|0)+76>>2]|0)+1;c[r>>2]=(e[(c[t>>2]|0)+24>>1]|0)+(c[C>>2]|0);j=(c[k>>2]|0)+76|0;c[j>>2]=(c[j>>2]|0)+(c[r>>2]|0);j=c[c[k>>2]>>2]|0;c[z>>2]=nh(j,dC(c[c[k>>2]>>2]|0,c[B>>2]|0)|0)|0;a:do if(b[s>>1]|0){c[o>>2]=c[(c[l>>2]|0)+8>>2];xz(c[y>>2]|0,(c[m>>2]|0)!=0?105:108,c[o>>2]|0)|0;c[p>>2]=Yw(c[y>>2]|0,13)|0;C=Eh(c[y>>2]|0,(c[m>>2]|0)!=0?63:66,c[o>>2]|0,0,c[x>>2]|0,e[s>>1]|0)|0;c[(c[l>>2]|0)+20>>2]=C;Fz(c[y>>2]|0,c[p>>2]|0);c[p>>2]=0;while(1){if((c[p>>2]|0)>=(e[s>>1]|0))break a;Vw(c[y>>2]|0,47,c[o>>2]|0,c[p>>2]|0,(c[x>>2]|0)+(c[p>>2]|0)|0)|0;c[p>>2]=(c[p>>2]|0)+1}}while(0);c[p>>2]=e[s>>1];while(1){if((c[p>>2]|0)>=(e[q>>1]|0))break;c[v>>2]=c[(c[(c[t>>2]|0)+48>>2]|0)+(c[p>>2]<<2)>>2];c[w>>2]=oD(c[k>>2]|0,c[v>>2]|0,c[l>>2]|0,c[p>>2]|0,c[m>>2]|0,(c[x>>2]|0)+(c[p>>2]|0)|0)|0;do if((c[w>>2]|0)!=((c[x>>2]|0)+(c[p>>2]|0)|0))if((c[r>>2]|0)==1){_z(c[k>>2]|0,c[x>>2]|0);c[x>>2]=c[w>>2];break}else{Rw(c[y>>2]|0,31,c[w>>2]|0,(c[x>>2]|0)+(c[p>>2]|0)|0)|0;break}while(0);if(!(e[(c[v>>2]|0)+18>>1]&257)){ -c[u>>2]=c[(c[c[v>>2]>>2]|0)+16>>2];if((e[(c[v>>2]|0)+20>>1]&2048|0)==0?(RA(c[u>>2]|0)|0)!=0:0)Rw(c[y>>2]|0,76,(c[x>>2]|0)+(c[p>>2]|0)|0,c[(c[l>>2]|0)+12>>2]|0)|0;if(c[z>>2]|0){if(((SA(c[u>>2]|0,a[(c[z>>2]|0)+(c[p>>2]|0)>>0]|0)|0)<<24>>24|0)==65)a[(c[z>>2]|0)+(c[p>>2]|0)>>0]=65;if(sD(c[u>>2]|0,a[(c[z>>2]|0)+(c[p>>2]|0)>>0]|0)|0)a[(c[z>>2]|0)+(c[p>>2]|0)>>0]=65}}c[p>>2]=(c[p>>2]|0)+1}c[c[n>>2]>>2]=c[z>>2];i=A;return c[x>>2]|0}function rD(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;g=k+12|0;h=k+8|0;l=k+4|0;j=k;c[g>>2]=b;c[h>>2]=d;c[l>>2]=f;if(!((e[(c[l>>2]|0)+20>>1]|0)&256)){i=k;return}c[j>>2]=Mz(c[g>>2]|0,-1)|0;c[(c[j>>2]|0)+12>>2]=c[(c[h>>2]|0)+36>>2];a[(c[j>>2]|0)+3>>0]=1;i=k;return}function sD(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+16|0;k=l+4|0;g=l;h=l+9|0;j=l+8|0;c[g>>2]=e;a[h>>0]=f;a:do if((a[h>>0]|0)==65)c[k>>2]=1;else{while(1){if((d[c[g>>2]>>0]|0)==156)e=1;else e=(d[c[g>>2]>>0]|0)==155;f=c[g>>2]|0;if(!e)break;c[g>>2]=c[f+12>>2]}a[j>>0]=a[f>>0]|0;if((d[j>>0]|0)==157)a[j>>0]=a[(c[g>>2]|0)+38>>0]|0;switch(d[j>>0]|0){case 132:{if((a[h>>0]|0)==68)f=1;else f=(a[h>>0]|0)==67;c[k>>2]=f&1;break a}case 133:{if((a[h>>0]|0)==69)f=1;else f=(a[h>>0]|0)==67;c[k>>2]=f&1;break a}case 97:{c[k>>2]=(a[h>>0]|0)==66&1;break a}case 134:{c[k>>2]=1;break a}case 152:{if((b[(c[g>>2]|0)+32>>1]|0)<0)if((a[h>>0]|0)==68)f=1;else f=(a[h>>0]|0)==67;else f=0;c[k>>2]=f&1;break a}default:{c[k>>2]=0;break a}}}while(0);i=l;return c[k>>2]|0}function tD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=f;c[l>>2]=c[(c[g>>2]|0)+8>>2];if(!(c[k>>2]|0)){i=m;return}while(1){if((c[j>>2]|0)<=0)break;if((a[c[k>>2]>>0]|0)!=65)break;c[j>>2]=(c[j>>2]|0)+-1;c[h>>2]=(c[h>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+1}while(1){if((c[j>>2]|0)>1)e=(a[(c[k>>2]|0)+((c[j>>2]|0)-1)>>0]|0)==65;else e=0;d=c[j>>2]|0;if(!e)break;c[j>>2]=d+-1}if((d|0)<=0){i=m;return}Uw(c[l>>2]|0,48,c[h>>2]|0,c[j>>2]|0,0,c[k>>2]|0,c[j>>2]|0)|0;CA(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0);i=m;return}function uD(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+48|0;p=o+32|0;h=o+28|0;q=o+24|0;r=o+20|0;l=o+16|0;n=o+12|0;k=o+8|0;m=o+4|0;j=o;c[p>>2]=a;c[h>>2]=d;c[q>>2]=f;c[r>>2]=g;c[l>>2]=c[c[p>>2]>>2];c[n>>2]=c[(c[l>>2]|0)+8>>2];Vw(c[n>>2]|0,112,c[r>>2]|0,0,c[q>>2]|0)|0;if(!(e[(c[p>>2]|0)+34>>1]&32)){i=o;return}f=c[l>>2]|0;if(c[(c[l>>2]|0)+416>>2]|0)f=c[f+416>>2]|0;if(c[f+336>>2]|0){i=o;return}c[m>>2]=c[(c[h>>2]|0)+12>>2];c[j>>2]=ph(c[c[l>>2]>>2]|0,(b[(c[m>>2]|0)+34>>1]|0)+1<<2,0)|0;if(!(c[j>>2]|0)){i=o;return}c[c[j>>2]>>2]=b[(c[m>>2]|0)+34>>1];c[k>>2]=0;while(1){if((c[k>>2]|0)>=((e[(c[h>>2]|0)+52>>1]|0)-1|0))break;if((b[(c[(c[h>>2]|0)+4>>2]|0)+(c[k>>2]<<1)>>1]|0)>=0)c[(c[j>>2]|0)+((b[(c[(c[h>>2]|0)+4>>2]|0)+(c[k>>2]<<1)>>1]|0)+1<<2)>>2]=(c[k>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+1}Ih(c[n>>2]|0,-1,c[j>>2]|0,-15);i=o;return}function vD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;g=k+20|0;n=k+16|0;m=k+12|0;l=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[n>>2]=b;c[m>>2]=d;c[l>>2]=e;c[h>>2]=f;c[j>>2]=zA(c[g>>2]|0,c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,c[h>>2]|0,0)|0;if((c[j>>2]|0)==(c[h>>2]|0)){i=k;return}Rw(c[(c[g>>2]|0)+8>>2]|0,31,c[j>>2]|0,c[h>>2]|0)|0;i=k;return}function wD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[f>>2]=b;c[h>>2]=d;d=c[h>>2]|0;c[(Mz(c[g>>2]|0,c[f>>2]|0)|0)+4>>2]=d;i=e;return}function xD(a,b,d,f,g,h,j){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;q=i;i=i+144|0;n=q+132|0;u=q+128|0;t=q+124|0;s=q+120|0;k=q;l=q+116|0;r=q+112|0;p=q+108|0;o=q+104|0;m=q+8|0;c[u>>2]=a;c[t>>2]=b;c[s>>2]=d;a=k;c[a>>2]=f;c[a+4>>2]=g;c[l>>2]=h;c[r>>2]=j;c[p>>2]=0;c[o>>2]=yD(m,c[u>>2]|0,c[t>>2]|0,c[s>>2]|0,c[l>>2]|0,c[r>>2]|0)|0;c[l>>2]=c[l>>2]&130;while(1){if(!(c[o>>2]|0)){f=10;break}t=(c[o>>2]|0)+32|0;u=k;if((c[t>>2]&c[u>>2]|0)==0?(c[t+4>>2]&c[u+4>>2]|0)==0:0){u=(c[o>>2]|0)+32|0;if((c[u>>2]|0)==0&(c[u+4>>2]|0)==0?((e[(c[o>>2]|0)+18>>1]|0)&c[l>>2]|0)!=0:0){f=6;break}if(!(c[p>>2]|0))c[p>>2]=c[o>>2]}c[o>>2]=zD(m)|0}if((f|0)==6){c[n>>2]=c[o>>2];u=c[n>>2]|0;i=q;return u|0}else if((f|0)==10){c[n>>2]=c[p>>2];u=c[n>>2]|0;i=q;return u|0}return 0}function yD(d,e,f,g,h,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+32|0;k=q+24|0;r=q+20|0;l=q+16|0;m=q+12|0;n=q+8|0;o=q+4|0;p=q;c[k>>2]=d;c[r>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[o>>2]=j;c[p>>2]=0;c[c[k>>2]>>2]=c[r>>2];c[(c[k>>2]|0)+4>>2]=c[r>>2];c[(c[k>>2]|0)+12>>2]=0;if((c[o>>2]|0)!=0?(c[p>>2]=c[m>>2],c[m>>2]=b[(c[(c[o>>2]|0)+4>>2]|0)+(c[p>>2]<<1)>>1],(c[m>>2]|0)==-2):0)c[(c[k>>2]|0)+12>>2]=c[(c[(c[(c[o>>2]|0)+40>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)>>2];if((c[o>>2]|0)!=0&(c[m>>2]|0)>=0){a[(c[k>>2]|0)+16>>0]=a[(c[(c[(c[o>>2]|0)+12>>2]|0)+4>>2]|0)+((c[m>>2]|0)*24|0)+21>>0]|0;c[(c[k>>2]|0)+8>>2]=c[(c[(c[o>>2]|0)+32>>2]|0)+(c[p>>2]<<2)>>2]}else{a[(c[k>>2]|0)+16>>0]=0;c[(c[k>>2]|0)+8>>2]=0}c[(c[k>>2]|0)+20>>2]=c[n>>2];c[(c[k>>2]|0)+24>>2]=0;c[(c[k>>2]|0)+28>>2]=c[l>>2];b[(c[k>>2]|0)+72>>1]=c[m>>2];a[(c[k>>2]|0)+17>>0]=1;a[(c[k>>2]|0)+18>>0]=1;r=zD(c[k>>2]|0)|0;i=q;return r|0}function zD(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;o=s+36|0;p=s+32|0;h=s+28|0;g=s+40|0;n=s+24|0;m=s+20|0;r=s+16|0;q=s+12|0;j=s+8|0;k=s+4|0;l=s;c[p>>2]=f;c[q>>2]=c[(c[p>>2]|0)+24>>2];a:while(1){if((d[(c[p>>2]|0)+18>>0]|0)>(d[(c[p>>2]|0)+17>>0]|0)){g=40;break}c[h>>2]=c[(c[p>>2]|0)+28+((d[(c[p>>2]|0)+18>>0]|0)-1<<2)>>2];b[g>>1]=b[(c[p>>2]|0)+72+((d[(c[p>>2]|0)+18>>0]|0)-1<<1)>>1]|0;if((b[g>>1]|0)==-2?(c[(c[p>>2]|0)+12>>2]|0)==0:0){g=5;break}while(1){f=c[(c[p>>2]|0)+4>>2]|0;c[m>>2]=f;if(!f)break;c[r>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[q>>2]|0)*48|0);while(1){if((c[q>>2]|0)>=(c[(c[m>>2]|0)+12>>2]|0))break;do if((c[(c[r>>2]|0)+8>>2]|0)==(c[h>>2]|0)?(c[(c[r>>2]|0)+12>>2]|0)==(b[g>>1]|0):0){if((b[g>>1]|0)==-2?(py(c[(c[c[r>>2]>>2]|0)+12>>2]|0,c[(c[p>>2]|0)+12>>2]|0,c[h>>2]|0)|0)!=0:0)break;if((d[(c[p>>2]|0)+18>>0]|0)>1?(c[(c[c[r>>2]>>2]|0)+4>>2]&1|0)!=0:0)break;if(((e[(c[r>>2]|0)+18>>1]&2048|0)!=0?(d[(c[p>>2]|0)+17>>0]|0)<11:0)?(f=Tx(c[(c[c[r>>2]>>2]|0)+16>>2]|0)|0,c[n>>2]=f,(d[f>>0]|0)==152):0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(d[(c[p>>2]|0)+17>>0]|0))break;if((c[(c[p>>2]|0)+28+(c[j>>2]<<2)>>2]|0)==(c[(c[n>>2]|0)+28>>2]|0)?(b[(c[p>>2]|0)+72+(c[j>>2]<<1)>>1]|0)==(b[(c[n>>2]|0)+32>>1]|0):0)break;c[j>>2]=(c[j>>2]|0)+1}if((c[j>>2]|0)==(d[(c[p>>2]|0)+17>>0]|0)){c[(c[p>>2]|0)+28+(c[j>>2]<<2)>>2]=c[(c[n>>2]|0)+28>>2];b[(c[p>>2]|0)+72+(c[j>>2]<<1)>>1]=b[(c[n>>2]|0)+32>>1]|0;f=(c[p>>2]|0)+17|0;a[f>>0]=(a[f>>0]|0)+1<<24>>24}}if(e[(c[r>>2]|0)+18>>1]&c[(c[p>>2]|0)+20>>2]){if((c[(c[p>>2]|0)+8>>2]|0)!=0?(e[(c[r>>2]|0)+18>>1]&256|0)==0:0){c[l>>2]=c[c[c[m>>2]>>2]>>2];c[n>>2]=c[c[r>>2]>>2];if(!(WA(c[n>>2]|0,a[(c[p>>2]|0)+16>>0]|0)|0))break;c[k>>2]=VA(c[l>>2]|0,c[(c[n>>2]|0)+12>>2]|0,c[(c[n>>2]|0)+16>>2]|0)|0;if(!(c[k>>2]|0))c[k>>2]=c[(c[c[l>>2]>>2]|0)+8>>2];if(Td(c[c[k>>2]>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0)break}if(!(e[(c[r>>2]|0)+18>>1]&130)){g=36;break a}f=c[(c[c[r>>2]>>2]|0)+16>>2]|0;c[n>>2]=f;if((d[f>>0]|0)!=152){g=36;break a}if((c[(c[n>>2]|0)+28>>2]|0)!=(c[(c[p>>2]|0)+28>>2]|0)){g=36;break a}if((b[(c[n>>2]|0)+32>>1]|0)!=(b[(c[p>>2]|0)+72>>1]|0)){g=36;break a}}}while(0);c[q>>2]=(c[q>>2]|0)+1;c[r>>2]=(c[r>>2]|0)+48}c[(c[p>>2]|0)+4>>2]=c[(c[(c[p>>2]|0)+4>>2]|0)+4>>2];c[q>>2]=0}c[(c[p>>2]|0)+4>>2]=c[c[p>>2]>>2];c[q>>2]=0;f=(c[p>>2]|0)+18|0;a[f>>0]=(a[f>>0]|0)+1<<24>>24}if((g|0)==5){c[o>>2]=0;r=c[o>>2]|0;i=s;return r|0}else if((g|0)==36){c[(c[p>>2]|0)+24>>2]=(c[q>>2]|0)+1;c[o>>2]=c[r>>2];r=c[o>>2]|0;i=s;return r|0}else if((g|0)==40){c[o>>2]=0;r=c[o>>2]|0;i=s;return r|0}return 0}function AD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=c[f>>2]|0;b=c[e>>2]|0;aA(a,b,If(c[e>>2]|0)|0);i=d;return}function BD(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;n=r;f=r+32|0;g=r+28|0;m=r+24|0;k=r+38|0;l=r+36|0;h=r+20|0;j=r+16|0;o=r+12|0;p=r+8|0;q=r+4|0;c[f>>2]=a;c[g>>2]=d;c[m>>2]=c[(c[g>>2]|0)+24+4>>2];b[k>>1]=b[(c[g>>2]|0)+24>>1]|0;b[l>>1]=b[(c[g>>2]|0)+42>>1]|0;if((e[k>>1]|0|0)==0?(c[(c[g>>2]|0)+36>>2]&48|0)==0:0){i=r;return}aA(c[f>>2]|0,35496,2);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[k>>1]|0|0))break;c[o>>2]=CD(c[m>>2]|0,c[h>>2]|0)|0;if(c[h>>2]|0)aA(c[f>>2]|0,35499,5);d=c[f>>2]|0;a=(c[h>>2]|0)>=(e[l>>1]|0|0)?35505:35510;c[n>>2]=c[o>>2];$z(d,a,n);c[h>>2]=(c[h>>2]|0)+1}c[j>>2]=c[h>>2];if(c[(c[g>>2]|0)+36>>2]&32){c[p>>2]=CD(c[m>>2]|0,c[h>>2]|0)|0;n=c[f>>2]|0;o=c[h>>2]|0;c[h>>2]=o+1;DD(n,o,c[p>>2]|0,35427)}if(c[(c[g>>2]|0)+36>>2]&16){c[q>>2]=CD(c[m>>2]|0,c[j>>2]|0)|0;DD(c[f>>2]|0,c[h>>2]|0,c[q>>2]|0,35429)}aA(c[f>>2]|0,35518,1);i=r;return}function CD(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=d;c[g>>2]=b[(c[(c[f>>2]|0)+4>>2]|0)+(c[g>>2]<<1)>>1];if((c[g>>2]|0)==-2){c[e>>2]=35520;a=c[e>>2]|0;i=h;return a|0}if((c[g>>2]|0)==-1){c[e>>2]=25592;a=c[e>>2]|0;i=h;return a|0}else{c[e>>2]=c[(c[(c[(c[f>>2]|0)+12>>2]|0)+4>>2]|0)+((c[g>>2]|0)*24|0)>>2];a=c[e>>2]|0;i=h;return a|0}return 0}function DD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;f=j+12|0;k=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[k>>2]=b;c[g>>2]=d;c[h>>2]=e;if(c[k>>2]|0)aA(c[f>>2]|0,35499,5);AD(c[f>>2]|0,c[g>>2]|0);aA(c[f>>2]|0,c[h>>2]|0,1);aA(c[f>>2]|0,21139,1);i=j;return}function ED(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=$A(c[f>>2]|0,3,c[e>>2]|0)|0;i=d;return a|0}function FD(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n;m=n+20|0;c[j>>2]=b;c[k>>2]=d;b=l;c[b>>2]=f;c[b+4>>2]=g;if((c[(c[j>>2]|0)+8>>2]|0)!=(c[(c[k>>2]|0)+44>>2]|0)){c[h>>2]=0;b=c[h>>2]|0;i=n;return b|0}if(!((e[(c[j>>2]|0)+18>>1]|0)&130)){c[h>>2]=0;b=c[h>>2]|0;i=n;return b|0}d=(c[j>>2]|0)+32|0;b=l;if((c[d>>2]&c[b>>2]|0)!=0?1:(c[d+4>>2]&c[b+4>>2]|0)!=0){c[h>>2]=0;b=c[h>>2]|0;i=n;return b|0}if((c[(c[j>>2]|0)+12>>2]|0)<0){c[h>>2]=0;b=c[h>>2]|0;i=n;return b|0}a[m>>0]=a[(c[(c[(c[k>>2]|0)+16>>2]|0)+4>>2]|0)+((c[(c[j>>2]|0)+12>>2]|0)*24|0)+21>>0]|0;if(WA(c[c[j>>2]>>2]|0,a[m>>0]|0)|0){c[h>>2]=1;b=c[h>>2]|0;i=n;return b|0}else{c[h>>2]=0;b=c[h>>2]|0;i=n;return b|0}return 0}function GD(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;k=m+4|0;l=m;c[h>>2]=a;c[j>>2]=d;c[k>>2]=f;if((e[(c[j>>2]|0)+44>>1]|0|0)>=(c[k>>2]|0)){c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}c[k>>2]=(c[k>>2]|0)+7&-8;c[l>>2]=Fw(c[h>>2]|0,c[k>>2]<<2,0)|0;if(!(c[l>>2]|0)){c[g>>2]=7;l=c[g>>2]|0;i=m;return l|0}iR(c[l>>2]|0,c[(c[j>>2]|0)+48>>2]|0,(e[(c[j>>2]|0)+44>>1]|0)<<2|0)|0;if((c[(c[j>>2]|0)+48>>2]|0)!=((c[j>>2]|0)+56|0))Sf(c[h>>2]|0,c[(c[j>>2]|0)+48>>2]|0);c[(c[j>>2]|0)+48>>2]=c[l>>2];b[(c[j>>2]|0)+44>>1]=c[k>>2];c[g>>2]=0;l=c[g>>2]|0;i=m;return l|0}function HD(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;n=m+20|0;g=m+24|0;o=m+16|0;h=m+12|0;k=m+8|0;j=m+4|0;l=m;c[n>>2]=a;b[g>>1]=d;c[o>>2]=e;c[h>>2]=f;c[j>>2]=56+((b[g>>1]<<2)+7&-8)+(((b[g>>1]|0)+1<<1)+(b[g>>1]<<1)+(b[g>>1]|0)+7&-8);f=(c[j>>2]|0)+(c[o>>2]|0)|0;c[k>>2]=ph(c[n>>2]|0,f,((f|0)<0)<<31>>31)|0;if(!(c[k>>2]|0)){o=c[k>>2]|0;i=m;return o|0}c[l>>2]=(c[k>>2]|0)+56;c[(c[k>>2]|0)+32>>2]=c[l>>2];c[l>>2]=(c[l>>2]|0)+((b[g>>1]<<2)+7&-8);c[(c[k>>2]|0)+8>>2]=c[l>>2];c[l>>2]=(c[l>>2]|0)+((b[g>>1]|0)+1<<1);c[(c[k>>2]|0)+4>>2]=c[l>>2];c[l>>2]=(c[l>>2]|0)+(b[g>>1]<<1);c[(c[k>>2]|0)+28>>2]=c[l>>2];b[(c[k>>2]|0)+52>>1]=b[g>>1]|0;b[(c[k>>2]|0)+50>>1]=(b[g>>1]|0)-1;c[c[h>>2]>>2]=(c[k>>2]|0)+(c[j>>2]|0);o=c[k>>2]|0;i=m;return o|0}function ID(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;f=j+8|0;e=j+20|0;g=j+16|0;h=j;c[e>>2]=a;c[g>>2]=b;a=h;c[a>>2]=0;c[a+4>>2]=0;if(!(c[g>>2]|0)){g=f;c[g>>2]=0;c[g+4>>2]=0;g=f;h=g;h=c[h>>2]|0;g=g+4|0;g=c[g>>2]|0;C=g;i=j;return h|0}b=c[e>>2]|0;a=c[g>>2]|0;if((d[c[g>>2]>>0]|0|0)==152){g=nD(b,c[a+28>>2]|0)|0;e=h;c[e>>2]=g;c[e+4>>2]=C;e=h;h=c[e+4>>2]|0;g=f;c[g>>2]=c[e>>2];c[g+4>>2]=h;g=f;h=g;h=c[h>>2]|0;g=g+4|0;g=c[g>>2]|0;C=g;i=j;return h|0}l=ID(b,c[a+16>>2]|0)|0;k=h;c[k>>2]=l;c[k+4>>2]=C;k=ID(c[e>>2]|0,c[(c[g>>2]|0)+12>>2]|0)|0;l=h;a=c[l+4>>2]|C;b=h;c[b>>2]=c[l>>2]|k;c[b+4>>2]=a;b=c[e>>2]|0;a=(c[g>>2]|0)+20|0;if(c[(c[g>>2]|0)+4>>2]&2048){g=JD(b,c[a>>2]|0)|0;e=h;k=c[e+4>>2]|C;l=h;c[l>>2]=c[e>>2]|g;c[l+4>>2]=k}else{g=jD(b,c[a>>2]|0)|0;e=h;k=c[e+4>>2]|C;l=h;c[l>>2]=c[e>>2]|g;c[l+4>>2]=k}l=c[h+4>>2]|0;k=f;c[k>>2]=c[h>>2];c[k+4>>2]=l;k=f;l=k;l=c[l>>2]|0;k=k+4|0;k=c[k>>2]|0;C=k;i=j;return l|0}function JD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;d=j+20|0;e=j+16|0;g=j;h=j+12|0;f=j+8|0;c[d>>2]=a;c[e>>2]=b;b=g;c[b>>2]=0;c[b+4>>2]=0;while(1){if(!(c[e>>2]|0))break;c[h>>2]=c[(c[e>>2]|0)+32>>2];k=jD(c[d>>2]|0,c[c[e>>2]>>2]|0)|0;l=g;a=c[l+4>>2]|C;b=g;c[b>>2]=c[l>>2]|k;c[b+4>>2]=a;b=jD(c[d>>2]|0,c[(c[e>>2]|0)+40>>2]|0)|0;a=g;k=c[a+4>>2]|C;l=g;c[l>>2]=c[a>>2]|b;c[l+4>>2]=k;l=jD(c[d>>2]|0,c[(c[e>>2]|0)+48>>2]|0)|0;k=g;b=c[k+4>>2]|C;a=g;c[a>>2]=c[k>>2]|l;c[a+4>>2]=b;a=ID(c[d>>2]|0,c[(c[e>>2]|0)+36>>2]|0)|0;b=g;l=c[b+4>>2]|C;k=g;c[k>>2]=c[b>>2]|a;c[k+4>>2]=l;k=ID(c[d>>2]|0,c[(c[e>>2]|0)+44>>2]|0)|0;l=g;a=c[l+4>>2]|C;b=g;c[b>>2]=c[l>>2]|k;c[b+4>>2]=a;a:do if(c[h>>2]|0){c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[h>>2]>>2]|0))break a;k=JD(c[d>>2]|0,c[(c[h>>2]|0)+8+((c[f>>2]|0)*72|0)+20>>2]|0)|0;l=g;a=c[l+4>>2]|C;b=g;c[b>>2]=c[l>>2]|k;c[b+4>>2]=a;b=ID(c[d>>2]|0,c[(c[h>>2]|0)+8+((c[f>>2]|0)*72|0)+48>>2]|0)|0;a=g;k=c[a+4>>2]|C;l=g;c[l>>2]=c[a>>2]|b;c[l+4>>2]=k;c[f>>2]=(c[f>>2]|0)+1}}while(0);c[e>>2]=c[(c[e>>2]|0)+52>>2]}l=g;C=c[l+4>>2]|0;i=j;return c[l>>2]|0}function KD(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+4|0;f=h+2|0;g=h;b[f>>1]=a;b[g>>1]=c;if((b[f>>1]|0)>=(b[g>>1]|0)){a=b[f>>1]|0;if((b[f>>1]|0)>((b[g>>1]|0)+49|0)){b[e>>1]=a;g=b[e>>1]|0;i=h;return g|0}c=b[f>>1]|0;if((a<<16>>16|0)>((b[g>>1]|0)+31|0)){b[e>>1]=c+1;g=b[e>>1]|0;i=h;return g|0}else{b[e>>1]=c+(d[35582+((b[f>>1]|0)-(b[g>>1]|0))>>0]|0);g=b[e>>1]|0;i=h;return g|0}}else{a=b[g>>1]|0;if((b[g>>1]|0)>((b[f>>1]|0)+49|0)){b[e>>1]=a;g=b[e>>1]|0;i=h;return g|0}c=b[g>>1]|0;if((a<<16>>16|0)>((b[f>>1]|0)+31|0)){b[e>>1]=c+1;g=b[e>>1]|0;i=h;return g|0}else{b[e>>1]=c+(d[35582+((b[g>>1]|0)-(b[f>>1]|0))>>0]|0);g=b[e>>1]|0;i=h;return g|0}}return 0}function LD(f,g,h,j,k,l,m){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;$=i;i=i+144|0;W=$+141|0;n=$+120|0;o=$+116|0;p=$+112|0;q=$+132|0;r=$+130|0;s=$+108|0;t=$+104|0;T=$+140|0;R=$+139|0;S=$+138|0;B=$+137|0;w=$+136|0;A=$+135|0;G=$+128|0;F=$+126|0;H=$+124|0;z=$+100|0;X=$+96|0;D=$+92|0;y=$+88|0;x=$+84|0;N=$+80|0;P=$+76|0;O=$+72|0;L=$+68|0;M=$+64|0;v=$+60|0;Z=$+40|0;I=$+32|0;J=$+24|0;Q=$+16|0;U=$+56|0;V=$+52|0;u=$+134|0;K=$+48|0;E=$+8|0;Y=$;c[n>>2]=f;c[o>>2]=g;c[p>>2]=h;b[q>>1]=j;b[r>>1]=k;c[s>>2]=l;c[t>>2]=m;c[N>>2]=0;c[v>>2]=c[c[c[n>>2]>>2]>>2];j=Z;c[j>>2]=0;c[j+4>>2]=0;if((e[r>>1]|0)!=0?(e[(c[v>>2]|0)+60>>1]&128|0)!=0:0){a[W>>0]=0;_=a[W>>0]|0;i=$;return _|0}b[H>>1]=c[c[o>>2]>>2];if((e[H>>1]|0)>63){a[W>>0]=0;_=a[W>>0]|0;i=$;return _|0}a[B>>0]=1;f=lR(1,0,e[H>>1]|0)|0;f=fR(f|0,C|0,1,0)|0;j=I;c[j>>2]=f;c[j+4>>2]=C;j=J;c[j>>2]=0;c[j+4>>2]=0;j=Q;c[j>>2]=0;c[j+4>>2]=0;c[z>>2]=0;while(1){if(!(d[B>>0]|0))break;f=Z;h=c[f+4>>2]|0;j=I;m=c[j+4>>2]|0;if(!(h>>>0>>0|((h|0)==(m|0)?(c[f>>2]|0)>>>0<(c[j>>2]|0)>>>0:0)))break;if((c[z>>2]|0)>(e[r>>1]|0))break;if((c[z>>2]|0)>0){m=(c[N>>2]|0)+8|0;h=Q;f=c[h+4>>2]|c[m+4>>2];j=Q;c[j>>2]=c[h>>2]|c[m>>2];c[j+4>>2]=f}if((c[z>>2]|0)<(e[r>>1]|0))k=c[(c[(c[p>>2]|0)+24>>2]|0)+(c[z>>2]<<2)>>2]|0;else k=c[s>>2]|0;c[N>>2]=k;k=c[N>>2]|0;if(c[(c[N>>2]|0)+36>>2]&1024){_=16;break}c[y>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+8+((d[k+16>>0]|0)*72|0)+44>>2];c[X>>2]=0;while(1){if((c[X>>2]|0)>=(e[H>>1]|0))break;f=lR(1,0,c[X>>2]|0)|0;j=Z;do if(((!((f&c[j>>2]|0)!=0?1:(C&c[j+4>>2]|0)!=0)?(c[O>>2]=Tx(c[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)>>2]|0)|0,(d[c[O>>2]>>0]|0)==152):0)?(c[(c[O>>2]|0)+28>>2]|0)==(c[y>>2]|0):0)?(j=Q,c[P>>2]=xD((c[n>>2]|0)+328|0,c[y>>2]|0,b[(c[O>>2]|0)+32>>1]|0,~c[j>>2],~c[j+4>>2],386,0)|0,(c[P>>2]|0)!=0):0){if((e[(c[P>>2]|0)+18>>1]&130|0)!=0?(b[(c[O>>2]|0)+32>>1]|0)>=0:0){c[L>>2]=Ox(c[c[n>>2]>>2]|0,c[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)>>2]|0)|0;if(!(c[L>>2]|0))c[L>>2]=c[(c[v>>2]|0)+8>>2];c[U>>2]=c[c[L>>2]>>2];c[L>>2]=Ox(c[c[n>>2]>>2]|0,c[c[P>>2]>>2]|0)|0;if(!(c[L>>2]|0))c[L>>2]=c[(c[v>>2]|0)+8>>2];c[V>>2]=c[c[L>>2]>>2];if(Td(c[U>>2]|0,c[V>>2]|0)|0)break}m=lR(1,0,c[X>>2]|0)|0;h=Z;f=c[h+4>>2]|C;j=Z;c[j>>2]=c[h>>2]|m;c[j+4>>2]=f}while(0);c[X>>2]=(c[X>>2]|0)+1}if(!(c[(c[N>>2]|0)+36>>2]&4096)){if(c[(c[N>>2]|0)+36>>2]&256){c[M>>2]=0;b[G>>1]=0;b[F>>1]=1}else{j=c[(c[N>>2]|0)+24+4>>2]|0;c[M>>2]=j;if(!j){_=38;break}if((d[(c[M>>2]|0)+55>>0]|0)>>>2&1){_=38;break}b[G>>1]=b[(c[M>>2]|0)+50>>1]|0;b[F>>1]=b[(c[M>>2]|0)+52>>1]|0;a[B>>0]=(d[(c[M>>2]|0)+54>>0]|0)!=0}a[T>>0]=0;a[R>>0]=0;a[w>>0]=0;c[D>>2]=0;while(1){if((c[D>>2]|0)>=(e[F>>1]|0))break;if(((c[D>>2]|0)<(e[(c[N>>2]|0)+24>>1]|0)?(e[(c[N>>2]|0)+42>>1]|0)==0:0)?(j=e[(c[(c[(c[N>>2]|0)+48>>2]|0)+(c[D>>2]<<2)>>2]|0)+18>>1]|0,c[X>>2]=j,(j&386|0)!=0):0){if(c[X>>2]&256)a[B>>0]=0}else{if(c[M>>2]|0){c[x>>2]=b[(c[(c[M>>2]|0)+4>>2]|0)+(c[D>>2]<<1)>>1];a[S>>0]=a[(c[(c[M>>2]|0)+28>>2]|0)+(c[D>>2]|0)>>0]|0;if((c[x>>2]|0)==(b[(c[(c[M>>2]|0)+12>>2]|0)+32>>1]|0))c[x>>2]=-1}else{c[x>>2]=-1;a[S>>0]=0}do if((d[B>>0]|0)!=0&(c[x>>2]|0)>=0?(c[D>>2]|0)>=(e[(c[N>>2]|0)+24>>1]|0):0){if(d[(c[(c[(c[M>>2]|0)+12>>2]|0)+4>>2]|0)+((c[x>>2]|0)*24|0)+20>>0]|0)break;a[B>>0]=0}while(0);a[u>>0]=1;a[A>>0]=0;c[X>>2]=0;a:while(1){if(!(d[u>>0]|0))break;if((c[X>>2]|0)>=(e[H>>1]|0))break;f=lR(1,0,c[X>>2]|0)|0;j=Z;do if(!((f&c[j>>2]|0)!=0?1:(C&c[j+4>>2]|0)!=0)){c[O>>2]=Tx(c[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)>>2]|0)|0;if(!(e[q>>1]&768))a[u>>0]=0;k=c[O>>2]|0;if((c[x>>2]|0)>=-1){if((d[k>>0]|0)!=152)break;if((c[(c[O>>2]|0)+28>>2]|0)!=(c[y>>2]|0))break;if((b[(c[O>>2]|0)+32>>1]|0)!=(c[x>>2]|0))break}else if(py(k,c[(c[(c[(c[M>>2]|0)+40>>2]|0)+4>>2]|0)+((c[D>>2]|0)*20|0)>>2]|0,c[y>>2]|0)|0)break;if((c[x>>2]|0)<0){_=70;break a}c[L>>2]=Ox(c[c[n>>2]>>2]|0,c[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)>>2]|0)|0;if(!(c[L>>2]|0))c[L>>2]=c[(c[v>>2]|0)+8>>2];if(!(Td(c[c[L>>2]>>2]|0,c[(c[(c[M>>2]|0)+32>>2]|0)+(c[D>>2]<<2)>>2]|0)|0)){_=70;break a}}while(0);c[X>>2]=(c[X>>2]|0)+1}if((_|0)==70){_=0;a[A>>0]=1}do if(d[A>>0]|0){if(e[q>>1]&256)break;if(a[T>>0]|0){if((d[R>>0]^d[S>>0]|0)==(d[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)+12>>0]|0))break;a[A>>0]=0;break}a[R>>0]=d[S>>0]^d[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)+12>>0];if(a[R>>0]|0){m=lR(1,0,c[z>>2]|0)|0;j=c[t>>2]|0;h=j;f=c[h+4>>2]|C;c[j>>2]=c[h>>2]|m;c[j+4>>2]=f}a[T>>0]=1}while(0);if(!(a[A>>0]|0)){_=84;break}if((c[x>>2]|0)<0)a[w>>0]=1;m=lR(1,0,c[X>>2]|0)|0;h=Z;f=c[h+4>>2]|C;j=Z;c[j>>2]=c[h>>2]|m;c[j+4>>2]=f}c[D>>2]=(c[D>>2]|0)+1}do if((_|0)==84){_=0;if((c[D>>2]|0)!=0?(c[D>>2]|0)>=(e[G>>1]|0):0)break;a[B>>0]=0}while(0);if(a[w>>0]|0)a[B>>0]=1}b:do if(a[B>>0]|0){m=(c[N>>2]|0)+8|0;h=J;f=c[h+4>>2]|c[m+4>>2];j=J;c[j>>2]=c[h>>2]|c[m>>2];c[j+4>>2]=f;c[X>>2]=0;while(1){if((c[X>>2]|0)>=(e[H>>1]|0))break b;f=lR(1,0,c[X>>2]|0)|0;j=Z;do if(!((f&c[j>>2]|0)!=0?1:(C&c[j+4>>2]|0)!=0)){c[K>>2]=c[(c[(c[o>>2]|0)+4>>2]|0)+((c[X>>2]|0)*20|0)>>2];f=ID((c[n>>2]|0)+68|0,c[K>>2]|0)|0;j=E;c[j>>2]=f;c[j+4>>2]=C;j=E;if((c[j>>2]|0)==0&(c[j+4>>2]|0)==0?(FA(c[K>>2]|0)|0)==0:0)break;f=E;j=J;if((c[f>>2]&~c[j>>2]|0)==0?(c[f+4>>2]&~c[j+4>>2]|0)==0:0){m=lR(1,0,c[X>>2]|0)|0;h=Z;f=c[h+4>>2]|C;j=Z;c[j>>2]=c[h>>2]|m;c[j+4>>2]=f}}while(0);c[X>>2]=(c[X>>2]|0)+1}}while(0);c[z>>2]=(c[z>>2]|0)+1}if((_|0)==16){if(a[k+24+5>>0]|0){U=I;V=c[U+4>>2]|0;_=Z;c[_>>2]=c[U>>2];c[_+4>>2]=V}}else if((_|0)==38){a[W>>0]=0;_=a[W>>0]|0;i=$;return _|0}V=Z;_=I;if((c[V>>2]|0)==(c[_>>2]|0)?(c[V+4>>2]|0)==(c[_+4>>2]|0):0){a[W>>0]=b[H>>1];_=a[W>>0]|0;i=$;return _|0}if(a[B>>0]|0){a[W>>0]=-1;_=a[W>>0]|0;i=$;return _|0}c[X>>2]=(e[H>>1]|0)-1;while(1){if((c[X>>2]|0)<=0){_=108;break}V=lR(1,0,c[X>>2]|0)|0;V=fR(V|0,C|0,1,0)|0;U=Y;c[U>>2]=V;c[U+4>>2]=C;U=Z;V=Y;_=Y;k=c[X>>2]|0;if((c[U>>2]&c[V>>2]|0)==(c[_>>2]|0)?(c[U+4>>2]&c[V+4>>2]|0)==(c[_+4>>2]|0):0){_=106;break}c[X>>2]=k+-1}if((_|0)==106){a[W>>0]=k;_=a[W>>0]|0;i=$;return _|0}else if((_|0)==108){a[W>>0]=0;_=a[W>>0]|0;i=$;return _|0}return 0}function MD(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;j=g+12|0;k=g+4|0;l=g;h=g+10|0;f=g+8|0;b[j>>1]=a;c[k>>2]=d;c[l>>2]=e;e=(((c[k>>2]|0)-(c[l>>2]|0)|0)*100|0)/(c[k>>2]|0)|0;b[h>>1]=((Hj(e,((e|0)<0)<<31>>31)|0)<<16>>16)-66;e=b[j>>1]|0;e=e+((ND(b[j>>1]|0)|0)<<16>>16)|0;b[f>>1]=e+(b[h>>1]|0)+16;i=g;return b[f>>1]|0}function ND(a){a=a|0;var c=0,d=0;d=i;i=i+16|0;c=d;b[c>>1]=a;if((b[c>>1]|0)<=10){a=0;a=a&65535;i=d;return a|0}a=b[c>>1]|0;a=((Hj(a,((a|0)<0)<<31>>31)|0)<<16>>16)-33|0;a=a&65535;i=d;return a|0}function OD(f,g,j,k,l){f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;K=i;i=i+112|0;I=K+16|0;m=K+104|0;n=K+100|0;o=K+8|0;L=K;M=K+96|0;z=K+92|0;E=K+88|0;A=K+84|0;B=K+80|0;p=K+76|0;x=K+72|0;w=K+68|0;D=K+64|0;C=K+60|0;q=K+56|0;t=K+52|0;s=K+48|0;u=K+44|0;v=K+40|0;G=K+36|0;H=K+32|0;r=K+28|0;y=K+24|0;F=K+20|0;c[n>>2]=f;f=o;c[f>>2]=g;c[f+4>>2]=j;f=L;c[f>>2]=k;c[f+4>>2]=l;c[G>>2]=0;c[H>>2]=0;c[F>>2]=0;c[M>>2]=c[c[n>>2]>>2];c[z>>2]=c[c[M>>2]>>2];c[p>>2]=c[c[z>>2]>>2];c[E>>2]=c[(c[n>>2]|0)+4>>2];c[y>>2]=c[(c[n>>2]|0)+12>>2];c[A>>2]=(c[(c[M>>2]|0)+4>>2]|0)+8+((d[(c[y>>2]|0)+16>>0]|0)*72|0);c[B>>2]=c[(c[A>>2]|0)+16>>2];f=L;c[x>>2]=fE(c[z>>2]|0,c[E>>2]|0,c[f>>2]|0,c[f+4>>2]|0,c[A>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0;if(!(c[x>>2]|0)){c[m>>2]=7;M=c[m>>2]|0;i=K;return M|0}M=c[y>>2]|0;c[M>>2]=0;c[M+4>>2]=0;b[(c[y>>2]|0)+18>>1]=0;c[(c[y>>2]|0)+36>>2]=1024;b[(c[y>>2]|0)+40>>1]=0;a[(c[y>>2]|0)+24+4>>0]=0;c[D>>2]=c[(c[x>>2]|0)+16>>2];c[v>>2]=c[c[x>>2]>>2];if(GD(c[p>>2]|0,c[y>>2]|0,c[v>>2]|0)|0){Sf(c[p>>2]|0,c[x>>2]|0);c[m>>2]=7;M=c[m>>2]|0;i=K;return M|0}c[r>>2]=0;a:while(1){if((c[r>>2]|0)>3)break;if(((c[G>>2]|0)==0?(c[r>>2]&1|0)!=0:0)?(c[r>>2]=(c[r>>2]|0)+1,(c[r>>2]|0)>3):0)break;if((c[H>>2]|0)==0&(c[r>>2]|0)>1)break;c[w>>2]=c[(c[x>>2]|0)+4>>2];c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[c[x>>2]>>2]|0))break;c[t>>2]=c[(c[w>>2]|0)+8>>2];c[C>>2]=(c[(c[E>>2]|0)+20>>2]|0)+((c[t>>2]|0)*48|0);b:do switch(c[r>>2]|0){case 0:{a[(c[w>>2]|0)+5>>0]=0;if(e[(c[C>>2]|0)+18>>1]&1)c[G>>2]=1;L=(c[C>>2]|0)+32|0;M=o;if((c[L>>2]&~c[M>>2]|0)!=0?1:(c[L+4>>2]&~c[M+4>>2]|0)!=0){c[H>>2]=1;break b}if(!(e[(c[C>>2]|0)+18>>1]&1))a[(c[w>>2]|0)+5>>0]=1;break}case 1:{L=(c[C>>2]|0)+32|0;M=o;a[(c[w>>2]|0)+5>>0]=((c[L>>2]&~c[M>>2]|0)==0?(c[L+4>>2]&~c[M+4>>2]|0)==0:0)&1;break}case 2:{a[(c[w>>2]|0)+5>>0]=(e[(c[C>>2]|0)+18>>1]&1|0)==0;break}default:a[(c[w>>2]|0)+5>>0]=1}while(0);c[q>>2]=(c[q>>2]|0)+1;c[w>>2]=(c[w>>2]|0)+12}kR(c[D>>2]|0,0,c[c[x>>2]>>2]<<3|0)|0;if(c[(c[x>>2]|0)+28>>2]|0)Kd(c[(c[x>>2]|0)+24>>2]|0);c[(c[x>>2]|0)+24>>2]=0;c[(c[x>>2]|0)+20>>2]=0;c[(c[x>>2]|0)+28>>2]=0;c[(c[x>>2]|0)+32>>2]=0;h[(c[x>>2]|0)+40>>3]=5.e+98;f=(c[x>>2]|0)+48|0;c[f>>2]=25;c[f+4>>2]=0;c[(c[x>>2]|0)+56>>2]=0;f=(c[A>>2]|0)+56|0;L=c[f+4>>2]|0;M=(c[x>>2]|0)+64|0;c[M>>2]=c[f>>2];c[M+4>>2]=L;c[F>>2]=gE(c[z>>2]|0,c[B>>2]|0,c[x>>2]|0)|0;if(c[F>>2]|0)break;c[w>>2]=c[(c[x>>2]|0)+4>>2];f=o;L=c[f+4>>2]|0;M=c[y>>2]|0;c[M>>2]=c[f>>2];c[M+4>>2]=L;c[u>>2]=-1;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[v>>2]|0))break;c[(c[(c[y>>2]|0)+48>>2]|0)+(c[q>>2]<<2)>>2]=0;c[q>>2]=(c[q>>2]|0)+1}b[(c[y>>2]|0)+24+6>>1]=0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[v>>2]|0))break;M=(c[(c[D>>2]|0)+(c[q>>2]<<3)>>2]|0)-1|0;c[s>>2]=M;if((M|0)>=0){c[t>>2]=c[(c[w>>2]|0)+8>>2];if((c[t>>2]|0)<0?1:(c[s>>2]|0)>=(c[v>>2]|0)){J=36;break a}if((c[t>>2]|0)>=(c[(c[E>>2]|0)+12>>2]|0)){J=36;break a}if(c[(c[(c[y>>2]|0)+48>>2]|0)+(c[s>>2]<<2)>>2]|0){J=36;break a}c[C>>2]=(c[(c[E>>2]|0)+20>>2]|0)+((c[t>>2]|0)*48|0);f=(c[C>>2]|0)+32|0;M=c[y>>2]|0;l=M;L=c[l+4>>2]|c[f+4>>2];c[M>>2]=c[l>>2]|c[f>>2];c[M+4>>2]=L;c[(c[(c[y>>2]|0)+48>>2]|0)+(c[s>>2]<<2)>>2]=c[C>>2];if((c[s>>2]|0)>(c[u>>2]|0))c[u>>2]=c[s>>2];if((c[s>>2]|0)<16?(d[(c[D>>2]|0)+(c[q>>2]<<3)+4>>0]|0)!=0:0){M=(c[y>>2]|0)+24+6|0;b[M>>1]=e[M>>1]|1<>2]}if(e[(c[C>>2]|0)+18>>1]&1){if(!(d[(c[D>>2]|0)+(c[q>>2]<<3)+4>>0]|0))break;c[(c[x>>2]|0)+32>>2]=0;M=(c[x>>2]|0)+56|0;c[M>>2]=c[M>>2]&-2}}c[q>>2]=(c[q>>2]|0)+1;c[w>>2]=(c[w>>2]|0)+12}if((c[q>>2]|0)>=(c[v>>2]|0)){b[(c[y>>2]|0)+40>>1]=(c[u>>2]|0)+1;c[(c[y>>2]|0)+24>>2]=c[(c[x>>2]|0)+20>>2];a[(c[y>>2]|0)+24+4>>0]=c[(c[x>>2]|0)+28>>2];c[(c[x>>2]|0)+28>>2]=0;c[(c[y>>2]|0)+24+8>>2]=c[(c[x>>2]|0)+24>>2];if(c[(c[x>>2]|0)+32>>2]|0)g=c[(c[x>>2]|0)+8>>2]|0;else g=0;a[(c[y>>2]|0)+24+5>>0]=g;b[(c[y>>2]|0)+18>>1]=0;g=hE(+h[(c[x>>2]|0)+40>>3])|0;b[(c[y>>2]|0)+20>>1]=g;g=(c[x>>2]|0)+48|0;g=Hj(c[g>>2]|0,c[g+4>>2]|0)|0;b[(c[y>>2]|0)+22>>1]=g;g=(c[y>>2]|0)+36|0;j=c[g>>2]|0;if(c[(c[x>>2]|0)+56>>2]&1)c[g>>2]=j|4096;else c[g>>2]=j&-4097;TD(c[n>>2]|0,c[y>>2]|0)|0;if(a[(c[y>>2]|0)+24+4>>0]|0){Kd(c[(c[y>>2]|0)+24+8>>2]|0);a[(c[y>>2]|0)+24+4>>0]=0}}c[r>>2]=(c[r>>2]|0)+1}if((J|0)==36){c[F>>2]=1;M=c[z>>2]|0;c[I>>2]=c[c[B>>2]>>2];Ah(M,35614,I)}if(c[(c[x>>2]|0)+28>>2]|0)Kd(c[(c[x>>2]|0)+24>>2]|0);Sf(c[p>>2]|0,c[x>>2]|0);c[m>>2]=c[F>>2];M=c[m>>2]|0;i=K;return M|0}function PD(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0;E=i;i=i+144|0;j=E+128|0;k=E+8|0;y=E+124|0;s=E+120|0;B=E+64|0;m=E+140|0;l=E+136|0;F=E+56|0;t=E+52|0;r=E+48|0;D=E+44|0;o=E+40|0;n=E+36|0;A=E+134|0;z=E+132|0;w=E+32|0;u=E+28|0;q=E+24|0;v=E+20|0;x=E+16|0;p=E;c[j>>2]=f;f=k;c[f>>2]=g;c[f+4>>2]=h;b[l>>1]=-1;c[D>>2]=0;c[o>>2]=1;c[r>>2]=c[(c[j>>2]|0)+12>>2];c[y>>2]=c[c[j>>2]>>2];c[F>>2]=c[(c[y>>2]|0)+4>>2];c[t>>2]=(c[F>>2]|0)+8+((d[(c[r>>2]|0)+16>>0]|0)*72|0);c[u>>2]=c[(c[t>>2]|0)+16>>2];c[w>>2]=c[(c[j>>2]|0)+4>>2];do if(c[(c[t>>2]|0)+68>>2]|0)c[s>>2]=c[(c[t>>2]|0)+68>>2];else{if(d[(c[u>>2]|0)+42>>0]&32){c[s>>2]=c[(c[u>>2]|0)+8>>2];break}g=B;h=g+56|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));b[B+50>>1]=1;b[B+52>>1]=1;c[B+4>>2]=l;c[B+8>>2]=m;a[B+54>>0]=5;c[B+12>>2]=c[u>>2];b[B+48>>1]=b[(c[u>>2]|0)+40>>1]|0;b[m>>1]=b[(c[u>>2]|0)+38>>1]|0;b[m+2>>1]=0;c[q>>2]=c[(c[(c[t>>2]|0)+16>>2]|0)+8>>2];if(!(a[(c[t>>2]|0)+36+1>>0]&1))c[B+20>>2]=c[q>>2];c[s>>2]=B}while(0);b[A>>1]=b[(c[u>>2]|0)+38>>1]|0;b[z>>1]=ND(b[A>>1]|0)|0;a:do if((((((((c[(c[j>>2]|0)+16>>2]|0)==0?(e[(c[y>>2]|0)+34>>1]&128|0)==0:0)?(c[(c[c[c[y>>2]>>2]>>2]|0)+24>>2]&1048576|0)!=0:0)?(c[(c[t>>2]|0)+68>>2]|0)==0:0)?(a[(c[t>>2]|0)+36+1>>0]&1|0)==0:0)?(d[(c[u>>2]|0)+42>>0]&32|0)==0:0)?((d[(c[t>>2]|0)+36+1>>0]|0)>>>3&1|0)==0:0)?((d[(c[t>>2]|0)+36+1>>0]|0)>>>5&1|0)==0:0){c[x>>2]=(c[(c[w>>2]|0)+20>>2]|0)+((c[(c[w>>2]|0)+12>>2]|0)*48|0);c[v>>2]=c[(c[w>>2]|0)+20>>2];while(1){if(c[D>>2]|0)break a;if((c[v>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break a;B=(c[v>>2]|0)+32|0;F=(c[r>>2]|0)+8|0;if(!((c[B>>2]&c[F>>2]|0)!=0?1:(c[B+4>>2]&c[F+4>>2]|0)!=0)?(FD(c[v>>2]|0,c[t>>2]|0,0,0)|0)!=0:0){b[(c[r>>2]|0)+24>>1]=1;b[(c[r>>2]|0)+42>>1]=0;c[(c[r>>2]|0)+24+4>>2]=0;b[(c[r>>2]|0)+40>>1]=1;c[c[(c[r>>2]|0)+48>>2]>>2]=c[v>>2];b[(c[r>>2]|0)+18>>1]=(b[z>>1]|0)+(b[A>>1]|0)+4;if((c[(c[u>>2]|0)+12>>2]|0)==0?(d[(c[u>>2]|0)+42>>0]&2|0)==0:0){F=(c[r>>2]|0)+18|0;b[F>>1]=(b[F>>1]|0)+24}b[(c[r>>2]|0)+22>>1]=43;m=KD(b[z>>1]|0,b[(c[r>>2]|0)+22>>1]|0)|0;b[(c[r>>2]|0)+20>>1]=m;c[(c[r>>2]|0)+36>>2]=16384;m=k;q=(c[v>>2]|0)+32|0;B=c[m+4>>2]|c[q+4>>2];F=c[r>>2]|0;c[F>>2]=c[m>>2]|c[q>>2];c[F+4>>2]=B;c[D>>2]=TD(c[j>>2]|0,c[r>>2]|0)|0}c[v>>2]=(c[v>>2]|0)+48}}while(0);b:while(1){if(!((c[D>>2]|0)==0?(c[s>>2]|0)!=0:0)){g=46;break}if(!((c[(c[s>>2]|0)+36>>2]|0)!=0?(YD(c[(c[t>>2]|0)+44>>2]|0,c[w>>2]|0,c[(c[s>>2]|0)+36>>2]|0)|0)==0:0)){b[A>>1]=b[c[(c[s>>2]|0)+8>>2]>>1]|0;b[(c[r>>2]|0)+24>>1]=0;b[(c[r>>2]|0)+42>>1]=0;b[(c[r>>2]|0)+40>>1]=0;a[(c[r>>2]|0)+17>>0]=0;b[(c[r>>2]|0)+18>>1]=0;z=k;B=c[z+4>>2]|0;F=c[r>>2]|0;c[F>>2]=c[z>>2];c[F+4>>2]=B;b[(c[r>>2]|0)+22>>1]=b[A>>1]|0;c[(c[r>>2]|0)+24+4>>2]=c[s>>2];c[n>>2]=ZD(c[j>>2]|0,c[s>>2]|0,c[(c[t>>2]|0)+44>>2]|0)|0;do if((c[(c[s>>2]|0)+44>>2]|0)<=0){c[(c[r>>2]|0)+36>>2]=256;a[(c[r>>2]|0)+17>>0]=(c[n>>2]|0)!=0?c[o>>2]|0:0;b[(c[r>>2]|0)+20>>1]=(b[A>>1]|0)+16;_D(c[w>>2]|0,c[r>>2]|0,b[A>>1]|0);c[D>>2]=TD(c[j>>2]|0,c[r>>2]|0)|0;b[(c[r>>2]|0)+22>>1]=b[A>>1]|0;if(c[D>>2]|0){g=46;break b}}else{if((d[(c[s>>2]|0)+55>>0]|0)>>>5&1){c[(c[r>>2]|0)+36>>2]=576;F=p;c[F>>2]=0;c[F+4>>2]=0}else{B=(c[t>>2]|0)+56|0;x=c[B>>2]|0;B=c[B+4>>2]|0;z=$D(c[s>>2]|0)|0;F=p;c[F>>2]=x&~z;c[F+4>>2]=B&~C;F=p;c[(c[r>>2]|0)+36>>2]=(c[F>>2]|0)==0&(c[F+4>>2]|0)==0?576:512}if((c[n>>2]|0)==0?(d[(c[u>>2]|0)+42>>0]&32|0)==0:0){F=p;if(!((c[F>>2]|0)==0&(c[F+4>>2]|0)==0))break;if((d[(c[s>>2]|0)+55>>0]|0)>>>2&1)break;if((b[(c[s>>2]|0)+48>>1]|0)>=(b[(c[u>>2]|0)+40>>1]|0))break;if(!((c[6]|0)!=0?(e[(c[y>>2]|0)+34>>1]&4|0)==0:0))break;if(e[(c[c[c[y>>2]>>2]>>2]|0)+60>>1]&64)break}a[(c[r>>2]|0)+17>>0]=(c[n>>2]|0)!=0?c[o>>2]|0:0;b[(c[r>>2]|0)+20>>1]=(b[A>>1]|0)+1+(((b[(c[s>>2]|0)+48>>1]|0)*15|0)/(b[(c[u>>2]|0)+40>>1]|0)|0);F=p;if((c[F>>2]|0)!=0|(c[F+4>>2]|0)!=0){F=KD(b[(c[r>>2]|0)+20>>1]|0,(b[A>>1]|0)+16&65535)|0;b[(c[r>>2]|0)+20>>1]=F}_D(c[w>>2]|0,c[r>>2]|0,b[A>>1]|0);c[D>>2]=TD(c[j>>2]|0,c[r>>2]|0)|0;b[(c[r>>2]|0)+22>>1]=b[A>>1]|0;if(c[D>>2]|0){g=46;break b}}while(0);c[D>>2]=aE(c[j>>2]|0,c[t>>2]|0,c[s>>2]|0,0)|0;if(c[(c[t>>2]|0)+68>>2]|0){g=46;break}}c[s>>2]=c[(c[s>>2]|0)+20>>2];c[o>>2]=(c[o>>2]|0)+1}if((g|0)==46){i=E;return c[D>>2]|0}return 0}function QD(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=i;i=i+672|0;m=I+668|0;n=I+584|0;o=I+576|0;l=I+664|0;z=I+660|0;u=I+656|0;y=I+652|0;A=I+648|0;B=I+644|0;q=I+640|0;G=I+168|0;E=I+620|0;F=I+112|0;C=I+56|0;t=I+616|0;w=I+612|0;x=I+608|0;v=I+604|0;s=I+600|0;p=I+596|0;r=I+592|0;D=I;c[m>>2]=f;f=n;c[f>>2]=g;c[f+4>>2]=h;g=o;c[g>>2]=j;c[g+4>>2]=k;c[l>>2]=c[c[m>>2]>>2];c[B>>2]=0;c[z>>2]=c[(c[m>>2]|0)+4>>2];c[A>>2]=(c[(c[z>>2]|0)+20>>2]|0)+((c[(c[z>>2]|0)+12>>2]|0)*48|0);c[u>>2]=c[(c[m>>2]|0)+12>>2];g=F;h=g+56|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[t>>2]=(c[(c[l>>2]|0)+4>>2]|0)+8+((d[(c[u>>2]|0)+16>>0]|0)*72|0);c[q>>2]=c[(c[t>>2]|0)+44>>2];c[y>>2]=c[(c[z>>2]|0)+20>>2];while(1){if(!((c[y>>2]|0)>>>0<(c[A>>2]|0)>>>0?(c[B>>2]|0)==0:0))break;a:do if((e[(c[y>>2]|0)+18>>1]&512|0)!=0?(f=(c[(c[y>>2]|0)+12>>2]|0)+408|0,l=(c[u>>2]|0)+8|0,(c[f>>2]&c[l>>2]|0)!=0?1:(c[f+4>>2]&c[l+4>>2]|0)!=0):0){c[w>>2]=c[(c[y>>2]|0)+12>>2];c[x>>2]=(c[(c[w>>2]|0)+20>>2]|0)+((c[(c[w>>2]|0)+12>>2]|0)*48|0);c[s>>2]=1;l=c[m>>2]|0;c[E>>2]=c[l>>2];c[E+4>>2]=c[l+4>>2];c[E+8>>2]=c[l+8>>2];c[E+12>>2]=c[l+12>>2];c[E+16>>2]=c[l+16>>2];c[E+8>>2]=0;c[E+16>>2]=C;c[v>>2]=c[(c[w>>2]|0)+20>>2];b:while(1){if((c[v>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break;g=c[v>>2]|0;if(!(e[(c[v>>2]|0)+18>>1]&1024)){if((c[g+8>>2]|0)==(c[q>>2]|0)){c[G>>2]=c[c[z>>2]>>2];c[G+4>>2]=c[z>>2];a[G+8>>0]=72;c[G+12>>2]=1;c[G+20>>2]=c[v>>2];c[E+4>>2]=G;H=11}}else{c[E+4>>2]=c[g+12>>2];H=11}c:do if((H|0)==11){H=0;b[C>>1]=0;h=n;g=c[h>>2]|0;h=c[h+4>>2]|0;if(d[(c[(c[t>>2]|0)+16>>2]|0)+42>>0]&16){l=o;c[B>>2]=OD(E,g,h,c[l>>2]|0,c[l+4>>2]|0)|0}else c[B>>2]=PD(E,g,h)|0;if(!(c[B>>2]|0)){f=n;l=o;c[B>>2]=QD(E,c[f>>2]|0,c[f+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0}if(!(e[C>>1]|0)){H=17;break b}if(c[s>>2]|0){RD(F,C);c[s>>2]=0;break}RD(D,F);b[F>>1]=0;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(e[D>>1]|0))break c;c[r>>2]=0;while(1){g=c[p>>2]|0;if((c[r>>2]|0)>=(e[C>>1]|0))break;l=D+8+(g<<4)|0;f=C+8+(c[r>>2]<<4)|0;k=c[l>>2]|c[f>>2];f=c[l+4>>2]|c[f+4>>2];l=KD(b[D+8+(c[p>>2]<<4)+8>>1]|0,b[C+8+(c[r>>2]<<4)+8>>1]|0)|0;SD(F,k,f,l,KD(b[D+8+(c[p>>2]<<4)+10>>1]|0,b[C+8+(c[r>>2]<<4)+10>>1]|0)|0)|0;c[r>>2]=(c[r>>2]|0)+1}c[p>>2]=g+1}}while(0);c[v>>2]=(c[v>>2]|0)+48}if((H|0)==17){H=0;b[F>>1]=0}b[(c[u>>2]|0)+40>>1]=1;c[c[(c[u>>2]|0)+48>>2]>>2]=c[y>>2];c[(c[u>>2]|0)+36>>2]=8192;b[(c[u>>2]|0)+18>>1]=0;a[(c[u>>2]|0)+17>>0]=0;l=(c[u>>2]|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[p>>2]=0;while(1){if(c[B>>2]|0)break a;if((c[p>>2]|0)>=(e[F>>1]|0))break a;b[(c[u>>2]|0)+20>>1]=(b[F+8+(c[p>>2]<<4)+8>>1]|0)+1;b[(c[u>>2]|0)+22>>1]=b[F+8+(c[p>>2]<<4)+10>>1]|0; -k=F+8+(c[p>>2]<<4)|0;f=c[k+4>>2]|0;l=c[u>>2]|0;c[l>>2]=c[k>>2];c[l+4>>2]=f;c[B>>2]=TD(c[m>>2]|0,c[u>>2]|0)|0;c[p>>2]=(c[p>>2]|0)+1}}while(0);c[y>>2]=(c[y>>2]|0)+48}i=I;return c[B>>2]|0}function RD(a,d){a=a|0;d=d|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f+4|0;h=f;c[g>>2]=a;c[h>>2]=d;b[c[g>>2]>>1]=b[c[h>>2]>>1]|0;iR((c[g>>2]|0)+8|0,(c[h>>2]|0)+8|0,(e[c[g>>2]>>1]|0)<<4|0)|0;i=f;return}function SD(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+32|0;k=r+16|0;l=r+12|0;m=r;n=r+24|0;o=r+22|0;p=r+20|0;q=r+8|0;c[l>>2]=a;a=m;c[a>>2]=d;c[a+4>>2]=f;b[n>>1]=g;b[o>>1]=h;b[p>>1]=b[c[l>>2]>>1]|0;c[q>>2]=(c[l>>2]|0)+8;while(1){if((e[p>>1]|0)<=0){j=9;break}if((b[n>>1]|0)<=(b[(c[q>>2]|0)+8>>1]|0)?(h=m,a=c[q>>2]|0,g=m,(c[h>>2]&c[a>>2]|0)==(c[g>>2]|0)?(c[h+4>>2]&c[a+4>>2]|0)==(c[g+4>>2]|0):0):0)break;if((b[(c[q>>2]|0)+8>>1]|0)<=(b[n>>1]|0)?(h=c[q>>2]|0,a=m,g=c[q>>2]|0,(c[h>>2]&c[a>>2]|0)==(c[g>>2]|0)?(c[h+4>>2]&c[a+4>>2]|0)==(c[g+4>>2]|0):0):0){j=7;break}b[p>>1]=(b[p>>1]|0)+-1<<16>>16;c[q>>2]=(c[q>>2]|0)+16}if((j|0)==7){c[k>>2]=0;q=c[k>>2]|0;i=r;return q|0}do if((j|0)==9){d=c[l>>2]|0;if((e[c[l>>2]>>1]|0)<3){p=b[d>>1]|0;b[d>>1]=p+1<<16>>16;c[q>>2]=(c[l>>2]|0)+8+((p&65535)<<4);b[(c[q>>2]|0)+10>>1]=b[o>>1]|0;break}c[q>>2]=d+8;b[p>>1]=1;while(1){d=b[(c[q>>2]|0)+8>>1]|0;if((e[p>>1]|0)>=(e[c[l>>2]>>1]|0))break;if((d|0)>(b[(c[l>>2]|0)+8+(e[p>>1]<<4)+8>>1]|0))c[q>>2]=(c[l>>2]|0)+8+(e[p>>1]<<4);b[p>>1]=(b[p>>1]|0)+1<<16>>16}if((d|0)<=(b[n>>1]|0)){c[k>>2]=0;q=c[k>>2]|0;i=r;return q|0}}while(0);l=m;m=c[l+4>>2]|0;p=c[q>>2]|0;c[p>>2]=c[l>>2];c[p+4>>2]=m;b[(c[q>>2]|0)+8>>1]=b[n>>1]|0;if((b[(c[q>>2]|0)+10>>1]|0)>(b[o>>1]|0))b[(c[q>>2]|0)+10>>1]=b[o>>1]|0;c[k>>2]=1;q=c[k>>2]|0;i=r;return q|0}function TD(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;e=p+36|0;f=p+32|0;g=p+28|0;n=p+24|0;j=p+20|0;m=p+16|0;h=p+12|0;o=p+8|0;l=p+4|0;k=p;c[f>>2]=a;c[g>>2]=d;c[m>>2]=c[c[f>>2]>>2];c[h>>2]=c[c[c[m>>2]>>2]>>2];if(c[(c[f>>2]|0)+16>>2]|0){if(b[(c[g>>2]|0)+40>>1]|0){o=c[g>>2]|0;SD(c[(c[f>>2]|0)+16>>2]|0,c[o>>2]|0,c[o+4>>2]|0,b[(c[g>>2]|0)+20>>1]|0,b[(c[g>>2]|0)+22>>1]|0)|0}c[e>>2]=0;o=c[e>>2]|0;i=p;return o|0}UD(c[(c[m>>2]|0)+16>>2]|0,c[g>>2]|0);c[n>>2]=VD((c[m>>2]|0)+16|0,c[g>>2]|0)|0;if(!(c[n>>2]|0)){c[e>>2]=0;o=c[e>>2]|0;i=p;return o|0}c[j>>2]=c[c[n>>2]>>2];a:do if(!(c[j>>2]|0)){o=Fw(c[h>>2]|0,72,0)|0;c[j>>2]=o;c[c[n>>2]>>2]=o;if(c[j>>2]|0){ZC(c[j>>2]|0);c[(c[j>>2]|0)+52>>2]=0;break}c[e>>2]=7;o=c[e>>2]|0;i=p;return o|0}else{c[o>>2]=(c[j>>2]|0)+52;while(1){if(!(c[c[o>>2]>>2]|0))break a;c[o>>2]=VD(c[o>>2]|0,c[g>>2]|0)|0;if(!(c[o>>2]|0))break a;c[l>>2]=c[c[o>>2]>>2];if(!(c[l>>2]|0))break a;c[c[o>>2]>>2]=c[(c[l>>2]|0)+52>>2];WC(c[h>>2]|0,c[l>>2]|0)}}while(0);WD(c[h>>2]|0,c[j>>2]|0,c[g>>2]|0)|0;if(((c[(c[j>>2]|0)+36>>2]&1024|0)==0?(c[k>>2]=c[(c[j>>2]|0)+24+4>>2],(c[k>>2]|0)!=0):0)?(c[(c[k>>2]|0)+44>>2]|0)==0:0)c[(c[j>>2]|0)+24+4>>2]=0;c[e>>2]=0;o=c[e>>2]|0;i=p;return o|0}function UD(a,e){a=a|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=e;if(!((c[f>>2]|0)!=0?(c[(c[g>>2]|0)+36>>2]&512|0)!=0:0)){i=h;return}do{do if((d[(c[f>>2]|0)+16>>0]|0)==(d[(c[g>>2]|0)+16>>0]|0)?(c[(c[f>>2]|0)+36>>2]&512|0)!=0:0){if(XD(c[f>>2]|0,c[g>>2]|0)|0){b[(c[g>>2]|0)+20>>1]=b[(c[f>>2]|0)+20>>1]|0;b[(c[g>>2]|0)+22>>1]=(b[(c[f>>2]|0)+22>>1]|0)-1;break}if(XD(c[g>>2]|0,c[f>>2]|0)|0){b[(c[g>>2]|0)+20>>1]=b[(c[f>>2]|0)+20>>1]|0;b[(c[g>>2]|0)+22>>1]=(b[(c[f>>2]|0)+22>>1]|0)+1}}while(0);c[f>>2]=c[(c[f>>2]|0)+52>>2]}while((c[f>>2]|0)!=0);i=h;return}function VD(a,f){a=a|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;j=l+12|0;k=l+8|0;g=l+4|0;h=l;c[k>>2]=a;c[g>>2]=f;c[h>>2]=c[c[k>>2]>>2];while(1){if(!(c[h>>2]|0)){g=19;break}if((d[(c[h>>2]|0)+16>>0]|0)==(d[(c[g>>2]|0)+16>>0]|0)?(d[(c[h>>2]|0)+17>>0]|0)==(d[(c[g>>2]|0)+17>>0]|0):0){if(((((c[(c[h>>2]|0)+36>>2]&16384|0)!=0?(e[(c[g>>2]|0)+42>>1]|0)==0:0)?(c[(c[g>>2]|0)+36>>2]&512|0)!=0:0)?(c[(c[g>>2]|0)+36>>2]&1|0)!=0:0)?(m=c[h>>2]|0,f=c[g>>2]|0,a=c[g>>2]|0,(c[m>>2]&c[f>>2]|0)==(c[a>>2]|0)?(c[m+4>>2]&c[f+4>>2]|0)==(c[a+4>>2]|0):0):0){g=19;break}f=c[h>>2]|0;a=c[g>>2]|0;m=c[h>>2]|0;if(((((c[f>>2]&c[a>>2]|0)==(c[m>>2]|0)?(c[f+4>>2]&c[a+4>>2]|0)==(c[m+4>>2]|0):0)?(b[(c[h>>2]|0)+18>>1]|0)<=(b[(c[g>>2]|0)+18>>1]|0):0)?(b[(c[h>>2]|0)+20>>1]|0)<=(b[(c[g>>2]|0)+20>>1]|0):0)?(b[(c[h>>2]|0)+22>>1]|0)<=(b[(c[g>>2]|0)+22>>1]|0):0){g=14;break}f=c[h>>2]|0;a=c[g>>2]|0;m=c[g>>2]|0;if((((c[f>>2]&c[a>>2]|0)==(c[m>>2]|0)?(c[f+4>>2]&c[a+4>>2]|0)==(c[m+4>>2]|0):0)?(b[(c[h>>2]|0)+20>>1]|0)>=(b[(c[g>>2]|0)+20>>1]|0):0)?(b[(c[h>>2]|0)+22>>1]|0)>=(b[(c[g>>2]|0)+22>>1]|0):0){g=19;break}}c[k>>2]=(c[h>>2]|0)+52;c[h>>2]=c[c[k>>2]>>2]}if((g|0)==14){c[j>>2]=0;m=c[j>>2]|0;i=l;return m|0}else if((g|0)==19){c[j>>2]=c[k>>2];m=c[j>>2]|0;i=l;return m|0}return 0}function WD(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;h=k+12|0;l=k+8|0;g=k+4|0;j=k;c[l>>2]=b;c[g>>2]=d;c[j>>2]=f;YC(c[l>>2]|0,c[g>>2]|0);d=(GD(c[l>>2]|0,c[g>>2]|0,e[(c[j>>2]|0)+40>>1]|0)|0)!=0;b=c[g>>2]|0;if(d){l=b+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[h>>2]=7;l=c[h>>2]|0;i=k;return l|0}f=c[j>>2]|0;d=b+44|0;do{c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((b|0)<(d|0));iR(c[(c[g>>2]|0)+48>>2]|0,c[(c[j>>2]|0)+48>>2]|0,(e[(c[g>>2]|0)+40>>1]|0)<<2|0)|0;b=c[j>>2]|0;if(!(c[(c[j>>2]|0)+36>>2]&1024)){if(c[b+36>>2]&16384)c[(c[j>>2]|0)+24+4>>2]=0}else a[b+24+4>>0]=0;c[h>>2]=0;l=c[h>>2]|0;i=k;return l|0}function XD(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;k=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;j=l;c[f>>2]=a;c[g>>2]=d;if(((e[(c[f>>2]|0)+40>>1]|0)-(e[(c[f>>2]|0)+42>>1]|0)|0)>=((e[(c[g>>2]|0)+40>>1]|0)-(e[(c[g>>2]|0)+42>>1]|0)|0)){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}if((e[(c[g>>2]|0)+42>>1]|0)>(e[(c[f>>2]|0)+42>>1]|0)){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}if((b[(c[f>>2]|0)+20>>1]|0)>=(b[(c[g>>2]|0)+20>>1]|0)){if((b[(c[f>>2]|0)+20>>1]|0)>(b[(c[g>>2]|0)+20>>1]|0)){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}if((b[(c[f>>2]|0)+22>>1]|0)>(b[(c[g>>2]|0)+22>>1]|0)){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}}c[h>>2]=(e[(c[f>>2]|0)+40>>1]|0)-1;while(1){if((c[h>>2]|0)<0){f=20;break}if(c[(c[(c[f>>2]|0)+48>>2]|0)+(c[h>>2]<<2)>>2]|0){c[j>>2]=(e[(c[g>>2]|0)+40>>1]|0)-1;while(1){if((c[j>>2]|0)<0)break;if((c[(c[(c[g>>2]|0)+48>>2]|0)+(c[j>>2]<<2)>>2]|0)==(c[(c[(c[f>>2]|0)+48>>2]|0)+(c[h>>2]<<2)>>2]|0))break;c[j>>2]=(c[j>>2]|0)+-1}if((c[j>>2]|0)<0){f=18;break}}c[h>>2]=(c[h>>2]|0)+-1}if((f|0)==18){c[k>>2]=0;k=c[k>>2]|0;i=l;return k|0}else if((f|0)==20){c[k>>2]=1;k=c[k>>2]|0;i=l;return k|0}return 0}function YD(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+24|0;h=p+20|0;j=p+16|0;k=p+12|0;l=p+8|0;n=p+4|0;m=p;c[h>>2]=a;c[j>>2]=e;c[k>>2]=f;while(1){if((d[c[k>>2]>>0]|0)!=72)break;if(!(YD(c[h>>2]|0,c[j>>2]|0,c[(c[k>>2]|0)+12>>2]|0)|0)){o=4;break}c[k>>2]=c[(c[k>>2]|0)+16>>2]}if((o|0)==4){c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}c[l>>2]=0;c[n>>2]=c[(c[j>>2]|0)+20>>2];while(1){if((c[l>>2]|0)>=(c[(c[j>>2]|0)+12>>2]|0)){o=13;break}c[m>>2]=c[c[n>>2]>>2];if(eE(c[m>>2]|0,c[k>>2]|0,c[h>>2]|0)|0){if(!(c[(c[m>>2]|0)+4>>2]&1)){o=11;break}if((b[(c[m>>2]|0)+36>>1]|0)==(c[h>>2]|0)){o=11;break}}c[l>>2]=(c[l>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+48}if((o|0)==11){c[g>>2]=1;o=c[g>>2]|0;i=p;return o|0}else if((o|0)==13){c[g>>2]=0;o=c[g>>2]|0;i=p;return o|0}return 0}function ZD(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;h=s+32|0;j=s+28|0;k=s+24|0;l=s+20|0;q=s+16|0;m=s+12|0;n=s+8|0;o=s+4|0;p=s;c[j>>2]=a;c[k>>2]=f;c[l>>2]=g;if((d[(c[k>>2]|0)+55>>0]|0)>>>2&1){c[h>>2]=0;r=c[h>>2]|0;i=s;return r|0}f=c[(c[c[j>>2]>>2]|0)+8>>2]|0;c[q>>2]=f;if(!f){c[h>>2]=0;r=c[h>>2]|0;i=s;return r|0}c[n>>2]=0;a:while(1){if((c[n>>2]|0)>=(c[c[q>>2]>>2]|0)){r=24;break}c[p>>2]=Tx(c[(c[(c[q>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)>>2]|0)|0;b:do if((d[c[p>>2]>>0]|0)==152?(c[(c[p>>2]|0)+28>>2]|0)==(c[l>>2]|0):0){if((b[(c[p>>2]|0)+32>>1]|0)<0){r=10;break a}c[o>>2]=0;while(1){if((c[o>>2]|0)>=(e[(c[k>>2]|0)+50>>1]|0))break b;if((b[(c[p>>2]|0)+32>>1]|0)==(b[(c[(c[k>>2]|0)+4>>2]|0)+(c[o>>2]<<1)>>1]|0)){r=14;break a}c[o>>2]=(c[o>>2]|0)+1}}else r=16;while(0);c:do if((r|0)==16?(r=0,f=c[(c[k>>2]|0)+40>>2]|0,c[m>>2]=f,(f|0)!=0):0){c[o>>2]=0;while(1){if((c[o>>2]|0)>=(e[(c[k>>2]|0)+50>>1]|0))break c;if((b[(c[(c[k>>2]|0)+4>>2]|0)+(c[o>>2]<<1)>>1]|0)==-2?(py(c[p>>2]|0,c[(c[(c[m>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)>>2]|0,c[l>>2]|0)|0)==0:0){r=21;break a}c[o>>2]=(c[o>>2]|0)+1}}while(0);c[n>>2]=(c[n>>2]|0)+1}if((r|0)==10){c[h>>2]=1;r=c[h>>2]|0;i=s;return r|0}else if((r|0)==14){c[h>>2]=1;r=c[h>>2]|0;i=s;return r|0}else if((r|0)==21){c[h>>2]=1;r=c[h>>2]|0;i=s;return r|0}else if((r|0)==24){c[h>>2]=0;r=c[h>>2]|0;i=s;return r|0}return 0}function _D(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;g=s+36|0;h=s+32|0;j=s+42|0;q=s+28|0;r=s+24|0;o=s;k=s+20|0;m=s+16|0;n=s+12|0;l=s+40|0;p=s+8|0;c[g>>2]=a;c[h>>2]=d;b[j>>1]=f;t=c[h>>2]|0;f=(c[h>>2]|0)+8|0;d=~(c[t+4>>2]|c[f+4>>2]);a=o;c[a>>2]=~(c[t>>2]|c[f>>2]);c[a+4>>2]=d;b[l>>1]=0;c[k>>2]=c[(c[g>>2]|0)+12>>2];c[q>>2]=c[(c[g>>2]|0)+20>>2];while(1){if((c[k>>2]|0)<=0)break;if(e[(c[q>>2]|0)+20>>1]&2)break;a=(c[q>>2]|0)+40|0;t=(c[h>>2]|0)+8|0;do if(!((c[a>>2]&c[t>>2]|0)==0?(c[a+4>>2]&c[t+4>>2]|0)==0:0)?(a=(c[q>>2]|0)+40|0,t=o,!((c[a>>2]&c[t>>2]|0)!=0?1:(c[a+4>>2]&c[t+4>>2]|0)!=0)):0){c[m>>2]=(e[(c[h>>2]|0)+40>>1]|0)-1;while(1){if((c[m>>2]|0)<0)break;c[r>>2]=c[(c[(c[h>>2]|0)+48>>2]|0)+(c[m>>2]<<2)>>2];if(c[r>>2]|0){if((c[r>>2]|0)==(c[q>>2]|0))break;if((c[(c[r>>2]|0)+4>>2]|0)>=0?((c[(c[g>>2]|0)+20>>2]|0)+((c[(c[r>>2]|0)+4>>2]|0)*48|0)|0)==(c[q>>2]|0):0)break}c[m>>2]=(c[m>>2]|0)+-1}if((c[m>>2]|0)<0){if((b[(c[q>>2]|0)+16>>1]|0)<=0){t=(c[h>>2]|0)+22|0;b[t>>1]=(b[t>>1]|0)+(b[(c[q>>2]|0)+16>>1]|0);break}t=(c[h>>2]|0)+22|0;b[t>>1]=(b[t>>1]|0)+-1<<16>>16;if(e[(c[q>>2]|0)+18>>1]&130){c[p>>2]=c[(c[c[q>>2]>>2]|0)+16>>2];t=(ky(c[p>>2]|0,n)|0)!=0;if(t&(c[n>>2]|0)>=-1&(c[n>>2]|0)<=1)c[n>>2]=10;else c[n>>2]=20;if((b[l>>1]|0)<(c[n>>2]|0))b[l>>1]=c[n>>2]}}}while(0);c[k>>2]=(c[k>>2]|0)+-1;c[q>>2]=(c[q>>2]|0)+48}if((b[(c[h>>2]|0)+22>>1]|0)<=((b[j>>1]|0)-(b[l>>1]|0)|0)){i=s;return}b[(c[h>>2]|0)+22>>1]=(b[j>>1]|0)-(b[l>>1]|0);i=s;return}function $D(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;d=j+16|0;g=j;f=j+12|0;h=j+8|0;c[d>>2]=a;a=g;c[a>>2]=0;c[a+4>>2]=0;c[f>>2]=(e[(c[d>>2]|0)+52>>1]|0)-1;while(1){if((c[f>>2]|0)<0)break;c[h>>2]=b[(c[(c[d>>2]|0)+4>>2]|0)+(c[f>>2]<<1)>>1];if((c[h>>2]|0)>=0&(c[h>>2]|0)<63){l=lR(1,0,c[h>>2]|0)|0;m=g;k=c[m+4>>2]|C;a=g;c[a>>2]=c[m>>2]|l;c[a+4>>2]=k}c[f>>2]=(c[f>>2]|0)+-1}m=g;C=c[m+4>>2]|0;i=j;return c[m>>2]|0}function aE(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;O=i;i=i+208|0;l=O+172|0;m=O+168|0;n=O+164|0;o=O+160|0;p=O+196|0;P=O+156|0;A=O+152|0;q=O+148|0;z=O+144|0;B=O+140|0;k=O+136|0;N=O+40|0;L=O;I=O+194|0;H=O+192|0;K=O+190|0;M=O+36|0;J=O+188|0;G=O+32|0;F=O+186|0;E=O+184|0;C=O+28|0;x=O+24|0;r=O+182|0;D=O+180|0;w=O+178|0;u=O+20|0;y=O+16|0;s=O+12|0;t=O+8|0;v=O+176|0;c[m>>2]=f;c[n>>2]=g;c[o>>2]=h;b[p>>1]=j;c[P>>2]=c[c[m>>2]>>2];c[A>>2]=c[c[P>>2]>>2];c[q>>2]=c[c[A>>2]>>2];c[G>>2]=0;c[C>>2]=0;c[x>>2]=0;c[z>>2]=c[(c[m>>2]|0)+12>>2];if(a[(c[q>>2]|0)+65>>0]|0){c[l>>2]=7;P=c[l>>2]|0;i=O;return P|0}do if(!(c[(c[z>>2]|0)+36>>2]&32))if(d[(c[n>>2]|0)+36>>0]&8){c[k>>2]=63;break}else{c[k>>2]=447;break}else c[k>>2]=24;while(0);if((d[(c[o>>2]|0)+55>>0]|0)>>>2&1)c[k>>2]=c[k>>2]&-61;b[H>>1]=b[(c[z>>2]|0)+24>>1]|0;b[K>>1]=b[(c[z>>2]|0)+42>>1]|0;b[I>>1]=b[(c[z>>2]|0)+40>>1]|0;c[M>>2]=c[(c[z>>2]|0)+36>>2];h=c[z>>2]|0;g=c[h+4>>2]|0;P=L;c[P>>2]=c[h>>2];c[P+4>>2]=g;b[J>>1]=b[(c[z>>2]|0)+22>>1]|0;c[B>>2]=yD(N,c[(c[m>>2]|0)+4>>2]|0,c[(c[n>>2]|0)+44>>2]|0,e[H>>1]|0,c[k>>2]|0,c[o>>2]|0)|0;b[(c[z>>2]|0)+18>>1]=0;b[F>>1]=b[c[(c[o>>2]|0)+8>>2]>>1]|0;b[E>>1]=ND(b[F>>1]|0)|0;a:while(1){if(!((c[G>>2]|0)==0?(c[B>>2]|0)!=0:0))break;b[r>>1]=b[(c[B>>2]|0)+18>>1]|0;c[u>>2]=0;if((e[r>>1]|0)!=256?(e[(c[B>>2]|0)+20>>1]&0|0)==0:0)j=15;else j=14;if((j|0)==14?(j=0,(bE(c[o>>2]|0,e[H>>1]|0)|0)==0):0)j=15;do if((j|0)==15?(0,g=(c[B>>2]|0)+32|0,P=(c[z>>2]|0)+8|0,!((c[g>>2]&c[P>>2]|0)!=0?1:(c[g+4>>2]&c[P+4>>2]|0)!=0)):0){if((e[(c[B>>2]|0)+20>>1]&256|0)!=0?(e[(c[B>>2]|0)+18>>1]|0)==16:0)break;c[(c[z>>2]|0)+36>>2]=c[M>>2];b[(c[z>>2]|0)+24>>1]=b[H>>1]|0;b[(c[z>>2]|0)+40>>1]=b[I>>1]|0;if(GD(c[q>>2]|0,c[z>>2]|0,(e[(c[z>>2]|0)+40>>1]|0)+1|0)|0)break a;f=c[B>>2]|0;h=(c[z>>2]|0)+40|0;k=b[h>>1]|0;b[h>>1]=k+1<<16>>16;c[(c[(c[z>>2]|0)+48>>2]|0)+((k&65535)<<2)>>2]=f;k=L;f=(c[B>>2]|0)+32|0;h=(c[z>>2]|0)+8|0;g=(c[k+4>>2]|c[f+4>>2])&~c[h+4>>2];P=c[z>>2]|0;c[P>>2]=(c[k>>2]|c[f>>2])&~c[h>>2];c[P+4>>2]=g;do if(e[r>>1]&1){c[y>>2]=c[c[B>>2]>>2];P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|4;if(c[(c[y>>2]|0)+4>>2]&2048){c[u>>2]=46;break}if((c[(c[y>>2]|0)+20>>2]|0)!=0?(c[c[(c[y>>2]|0)+20>>2]>>2]|0)!=0:0){P=c[c[(c[y>>2]|0)+20>>2]>>2]|0;c[u>>2]=(Hj(P,((P|0)<0)<<31>>31)|0)<<16>>16}}else{if(e[r>>1]&130){c[s>>2]=b[(c[(c[o>>2]|0)+4>>2]|0)+(e[H>>1]<<1)>>1];P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|1;if((c[s>>2]|0)!=-1){if((c[s>>2]|0)<=0)break;if(b[p>>1]|0)break;if((e[H>>1]|0)!=((e[(c[o>>2]|0)+50>>1]|0)-1|0))break}if((c[s>>2]|0)>=0?((d[(c[o>>2]|0)+55>>0]|0)>>>3&1|0)==0:0){P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|65536;break}P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|4096;break}if(e[r>>1]&256){P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|8;break}j=(c[z>>2]|0)+36|0;k=c[j>>2]|0;if(e[r>>1]&36){c[j>>2]=k|34;c[x>>2]=c[B>>2];c[C>>2]=0;if(!(e[(c[B>>2]|0)+20>>1]&256))break;c[C>>2]=(c[B>>2]|0)+48;if(GD(c[q>>2]|0,c[z>>2]|0,(e[(c[z>>2]|0)+40>>1]|0)+1|0)|0)break a;g=c[C>>2]|0;h=(c[z>>2]|0)+40|0;P=b[h>>1]|0;b[h>>1]=P+1<<16>>16;c[(c[(c[z>>2]|0)+48>>2]|0)+((P&65535)<<2)>>2]=g;P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|16;break}else{c[j>>2]=k|18;c[C>>2]=c[B>>2];if(c[(c[z>>2]|0)+36>>2]&32)j=c[(c[(c[z>>2]|0)+48>>2]|0)+((e[(c[z>>2]|0)+40>>1]|0)-2<<2)>>2]|0;else j=0;c[x>>2]=j;break}}while(0);do if(!(c[(c[z>>2]|0)+36>>2]&2)){g=(c[z>>2]|0)+24|0;P=(b[g>>1]|0)+1<<16>>16;b[g>>1]=P;c[t>>2]=P&65535;if((b[(c[B>>2]|0)+16>>1]|0)<=0?(b[(c[(c[o>>2]|0)+4>>2]|0)+(e[H>>1]<<1)>>1]|0)>=0:0){P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+(b[(c[B>>2]|0)+16>>1]|0);P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)-(c[u>>2]|0);break}P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+((b[(c[(c[o>>2]|0)+8>>2]|0)+(c[t>>2]<<1)>>1]|0)-(b[(c[(c[o>>2]|0)+8>>2]|0)+((c[t>>2]|0)-1<<1)>>1]|0));if(e[r>>1]&256){P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+10}}else cE(c[A>>2]|0,c[m>>2]|0,c[x>>2]|0,c[C>>2]|0,c[z>>2]|0)|0;while(0);b[D>>1]=(b[(c[z>>2]|0)+22>>1]|0)+1+(((b[(c[o>>2]|0)+48>>1]|0)*15|0)/(b[(c[(c[n>>2]|0)+16>>2]|0)+40>>1]|0)|0);P=KD(b[E>>1]|0,b[D>>1]|0)|0;b[(c[z>>2]|0)+20>>1]=P;if(!(c[(c[z>>2]|0)+36>>2]&320)){P=KD(b[(c[z>>2]|0)+20>>1]|0,(b[(c[z>>2]|0)+22>>1]|0)+16&65535)|0;b[(c[z>>2]|0)+20>>1]=P}b[w>>1]=b[(c[z>>2]|0)+22>>1]|0;P=(c[z>>2]|0)+20|0;b[P>>1]=(b[P>>1]|0)+((b[p>>1]|0)+(c[u>>2]|0));P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+((b[p>>1]|0)+(c[u>>2]|0));_D(c[(c[m>>2]|0)+4>>2]|0,c[z>>2]|0,b[F>>1]|0);c[G>>2]=TD(c[m>>2]|0,c[z>>2]|0)|0;if(c[(c[z>>2]|0)+36>>2]&2)b[(c[z>>2]|0)+22>>1]=b[J>>1]|0;else b[(c[z>>2]|0)+22>>1]=b[w>>1]|0;if((c[(c[z>>2]|0)+36>>2]&16|0)==0?(e[(c[z>>2]|0)+24>>1]|0)<(e[(c[o>>2]|0)+52>>1]|0):0)aE(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,(b[p>>1]|0)+(c[u>>2]|0)&65535)|0;b[(c[z>>2]|0)+22>>1]=b[J>>1]|0}while(0);c[B>>2]=zD(N)|0}N=c[L+4>>2]|0;P=c[z>>2]|0;c[P>>2]=c[L>>2];c[P+4>>2]=N;b[(c[z>>2]|0)+24>>1]=b[H>>1]|0;b[(c[z>>2]|0)+42>>1]=b[K>>1]|0;c[(c[z>>2]|0)+36>>2]=c[M>>2];b[(c[z>>2]|0)+22>>1]=b[J>>1]|0;b[(c[z>>2]|0)+40>>1]=b[I>>1]|0;if(((((e[H>>1]|0)==(e[K>>1]|0)?((e[H>>1]|0)+1|0)<(e[(c[o>>2]|0)+50>>1]|0):0)?((d[(c[o>>2]|0)+55>>0]|0)>>>6&1|0)==0:0)?(b[(c[(c[o>>2]|0)+8>>2]|0)+((e[H>>1]|0)+1<<1)>>1]|0)>=42:0)?(P=GD(c[q>>2]|0,c[z>>2]|0,(e[(c[z>>2]|0)+40>>1]|0)+1|0)|0,c[G>>2]=P,(P|0)==0):0){N=(c[z>>2]|0)+24|0;b[N>>1]=(b[N>>1]|0)+1<<16>>16;N=(c[z>>2]|0)+42|0;b[N>>1]=(b[N>>1]|0)+1<<16>>16;N=(c[z>>2]|0)+40|0;P=b[N>>1]|0;b[N>>1]=P+1<<16>>16;c[(c[(c[z>>2]|0)+48>>2]|0)+((P&65535)<<2)>>2]=0;P=(c[z>>2]|0)+36|0;c[P>>2]=c[P>>2]|32768;b[v>>1]=(b[(c[(c[o>>2]|0)+8>>2]|0)+(e[H>>1]<<1)>>1]|0)-(b[(c[(c[o>>2]|0)+8>>2]|0)+((e[H>>1]|0)+1<<1)>>1]|0);P=(c[z>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)-(b[v>>1]|0);b[v>>1]=(b[v>>1]|0)+5;aE(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,(b[v>>1]|0)+(b[p>>1]|0)&65535)|0;b[(c[z>>2]|0)+22>>1]=b[J>>1]|0;b[(c[z>>2]|0)+24>>1]=b[H>>1]|0;b[(c[z>>2]|0)+42>>1]=b[K>>1]|0;c[(c[z>>2]|0)+36>>2]=c[M>>2]}c[l>>2]=c[G>>2];P=c[l>>2]|0;i=O;return P|0}function bE(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;f=h+12|0;g=h+8|0;k=h+4|0;j=h;c[g>>2]=a;c[k>>2]=e;c[j>>2]=b[(c[(c[g>>2]|0)+4>>2]|0)+(c[k>>2]<<1)>>1];e=c[j>>2]|0;if((c[j>>2]|0)>=0){c[f>>2]=d[(c[(c[(c[g>>2]|0)+12>>2]|0)+4>>2]|0)+(e*24|0)+20>>0];k=c[f>>2]|0;i=h;return k|0}if((e|0)==-1){c[f>>2]=1;k=c[f>>2]|0;i=h;return k|0}else{c[f>>2]=0;k=c[f>>2]|0;i=h;return k|0}return 0}function cE(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;h=o+16|0;j=o+12|0;k=o+8|0;n=o+4|0;m=o;l=o+28|0;c[o+24>>2]=a;c[o+20>>2]=d;c[h>>2]=e;c[j>>2]=f;c[k>>2]=g;c[n>>2]=0;c[m>>2]=b[(c[k>>2]|0)+22>>1];b[l>>1]=dE(c[h>>2]|0,c[m>>2]&65535)|0;b[l>>1]=dE(c[j>>2]|0,b[l>>1]|0)|0;if(((c[h>>2]|0)!=0?(c[j>>2]|0)!=0?(b[(c[h>>2]|0)+16>>1]|0)>0:0:0)?(b[(c[j>>2]|0)+16>>1]|0)>0:0)b[l>>1]=(b[l>>1]|0)-20;c[m>>2]=(c[m>>2]|0)-(((c[h>>2]|0)!=0&1)+((c[j>>2]|0)!=0&1));if((b[l>>1]|0)<10)b[l>>1]=10;if((b[l>>1]|0)>=(c[m>>2]|0)){a=c[m>>2]|0;a=a&65535;f=c[k>>2]|0;f=f+22|0;b[f>>1]=a;n=c[n>>2]|0;i=o;return n|0}c[m>>2]=b[l>>1];a=c[m>>2]|0;a=a&65535;f=c[k>>2]|0;f=f+22|0;b[f>>1]=a;n=c[n>>2]|0;i=o;return n|0}function dE(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;f=h;j=h+6|0;g=h+4|0;c[f>>2]=a;b[j>>1]=d;b[g>>1]=b[j>>1]|0;do if(c[f>>2]|0){d=c[f>>2]|0;if((b[(c[f>>2]|0)+16>>1]|0)<=0){b[g>>1]=(b[g>>1]|0)+(b[d+16>>1]|0);break}if(!(e[d+20>>1]&0))b[g>>1]=(b[g>>1]|0)-20}while(0);i=h;return b[g>>1]|0}function eE(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[g>>2]=a;c[h>>2]=b;c[j>>2]=e;if(!(py(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0)|0)){c[f>>2]=1;b=c[f>>2]|0;i=k;return b|0}do if((d[c[h>>2]>>0]|0|0)==71){if((eE(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0)|0)==0?(eE(c[g>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[j>>2]|0)|0)==0:0)break;c[f>>2]=1;b=c[f>>2]|0;i=k;return b|0}while(0);if((((d[c[h>>2]>>0]|0|0)==77?(py(c[(c[g>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[j>>2]|0)|0)==0:0)?(d[c[g>>2]>>0]|0|0)!=76:0)?(d[c[g>>2]>>0]|0|0)!=73:0){c[f>>2]=1;b=c[f>>2]|0;i=k;return b|0}c[f>>2]=0;b=c[f>>2]|0;i=k;return b|0}function fE(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+96|0;F=G+8|0;m=G+76|0;n=G+72|0;o=G+68|0;p=G;q=G+64|0;r=G+60|0;s=G+56|0;t=G+52|0;w=G+48|0;A=G+44|0;C=G+40|0;E=G+36|0;D=G+32|0;v=G+28|0;B=G+24|0;u=G+20|0;y=G+16|0;x=G+80|0;z=G+12|0;c[n>>2]=f;c[o>>2]=g;g=p;c[g>>2]=h;c[g+4>>2]=j;c[q>>2]=k;c[r>>2]=l;c[w>>2]=0;c[s>>2]=0;c[D>>2]=c[(c[o>>2]|0)+20>>2];while(1){if((c[s>>2]|0)>=(c[(c[o>>2]|0)+12>>2]|0))break;if((((c[(c[D>>2]|0)+8>>2]|0)==(c[(c[q>>2]|0)+44>>2]|0)?(k=(c[D>>2]|0)+32|0,g=p,!((c[k>>2]&c[g>>2]|0)!=0?1:(c[k+4>>2]&c[g+4>>2]|0)!=0)):0)?(e[(c[D>>2]|0)+18>>1]&-2433|0)!=0:0)?(e[(c[D>>2]|0)+20>>1]&0|0)==0:0)c[w>>2]=(c[w>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+1;c[D>>2]=(c[D>>2]|0)+48}c[v>>2]=0;if(c[r>>2]|0){c[u>>2]=c[c[r>>2]>>2];c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[u>>2]|0))break;c[y>>2]=c[(c[(c[r>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2];if((d[c[y>>2]>>0]|0)!=152)break;if((c[(c[y>>2]|0)+28>>2]|0)!=(c[(c[q>>2]|0)+44>>2]|0))break;c[s>>2]=(c[s>>2]|0)+1}if((c[s>>2]|0)==(c[u>>2]|0))c[v>>2]=c[u>>2]}c[B>>2]=ph(c[c[n>>2]>>2]|0,72+((c[w>>2]|0)*20|0)+(c[v>>2]<<3)|0,0)|0;if(!(c[B>>2]|0)){Ah(c[n>>2]|0,32392,F);c[m>>2]=0;F=c[m>>2]|0;i=G;return F|0}c[A>>2]=(c[B>>2]|0)+72;c[C>>2]=(c[A>>2]|0)+((c[w>>2]|0)*12|0);c[E>>2]=(c[C>>2]|0)+(c[v>>2]<<3);c[c[B>>2]>>2]=c[w>>2];c[(c[B>>2]|0)+8>>2]=c[v>>2];c[(c[B>>2]|0)+4>>2]=c[A>>2];c[(c[B>>2]|0)+12>>2]=c[C>>2];c[(c[B>>2]|0)+16>>2]=c[E>>2];c[t>>2]=0;c[s>>2]=0;c[D>>2]=c[(c[o>>2]|0)+20>>2];while(1){if((c[s>>2]|0)>=(c[(c[o>>2]|0)+12>>2]|0))break;if((((c[(c[D>>2]|0)+8>>2]|0)==(c[(c[q>>2]|0)+44>>2]|0)?(g=(c[D>>2]|0)+32|0,F=p,!((c[g>>2]&c[F>>2]|0)!=0?1:(c[g+4>>2]&c[F+4>>2]|0)!=0)):0)?(e[(c[D>>2]|0)+18>>1]&-2433|0)!=0:0)?(e[(c[D>>2]|0)+20>>1]&0|0)==0:0){c[(c[A>>2]|0)+((c[t>>2]|0)*12|0)>>2]=c[(c[D>>2]|0)+12>>2];c[(c[A>>2]|0)+((c[t>>2]|0)*12|0)+8>>2]=c[s>>2];F=b[(c[D>>2]|0)+18>>1]&255;a[x>>0]=F;a[x>>0]=(d[x>>0]|0)==1?2:F;if((d[x>>0]|0)==64)a[x>>0]=a[(c[D>>2]|0)+23>>0]|0;a[(c[A>>2]|0)+((c[t>>2]|0)*12|0)+4>>0]=a[x>>0]|0;c[t>>2]=(c[t>>2]|0)+1}c[s>>2]=(c[s>>2]|0)+1;c[D>>2]=(c[D>>2]|0)+48}c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[v>>2]|0))break;c[z>>2]=c[(c[(c[r>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2];c[(c[C>>2]|0)+(c[s>>2]<<3)>>2]=b[(c[z>>2]|0)+32>>1];a[(c[C>>2]|0)+(c[s>>2]<<3)+4>>0]=a[(c[(c[r>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)+12>>0]|0;c[s>>2]=(c[s>>2]|0)+1}c[m>>2]=c[B>>2];F=c[m>>2]|0;i=G;return F|0}function gE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;o=p+16|0;n=p+8|0;m=p;f=p+40|0;g=p+36|0;h=p+32|0;k=p+28|0;j=p+24|0;l=p+20|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=e;c[k>>2]=c[(Ax(c[c[f>>2]>>2]|0,c[g>>2]|0)|0)+8>>2];c[l>>2]=Yb[c[(c[c[k>>2]>>2]|0)+12>>2]&255](c[k>>2]|0,c[h>>2]|0)|0;do if(c[l>>2]|0){if((c[l>>2]|0)==7){jh(c[c[f>>2]>>2]|0);break}e=c[f>>2]|0;if(c[(c[k>>2]|0)+8>>2]|0){c[n>>2]=c[(c[k>>2]|0)+8>>2];Ah(e,19255,n);break}else{c[m>>2]=ih(c[l>>2]|0)|0;Ah(e,19255,m);break}}while(0);Kd(c[(c[k>>2]|0)+8>>2]|0);c[(c[k>>2]|0)+8>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[c[h>>2]>>2]|0))break;if((a[(c[(c[h>>2]|0)+4>>2]|0)+((c[j>>2]|0)*12|0)+5>>0]|0)==0?(c[(c[(c[h>>2]|0)+16>>2]|0)+(c[j>>2]<<3)>>2]|0)>0:0){n=c[f>>2]|0;c[o>>2]=c[c[g>>2]>>2];Ah(n,35642,o)}c[j>>2]=(c[j>>2]|0)+1}i=p;return c[(c[f>>2]|0)+68>>2]|0}function hE(a){a=+a;var d=0,e=0,f=0,g=0,j=0;j=i;i=i+32|0;d=j+18|0;e=j+8|0;f=j;g=j+16|0;h[e>>3]=a;if(+h[e>>3]<=1.0){b[d>>1]=0;g=b[d>>1]|0;i=j;return g|0}if(+h[e>>3]<=2.0e9){a=+h[e>>3];b[d>>1]=Hj(~~a>>>0,+N(a)>=1.0?a>0.0?~~+$(+M(a/4294967296.0),4294967295.0)>>>0:~~+Z((a-+(~~a>>>0))/4294967296.0)>>>0:0)|0;g=b[d>>1]|0;i=j;return g|0}else{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];f=hR(c[f>>2]|0,c[f+4>>2]|0,52)|0;f=fR(f|0,C|0,1022,0)|0;b[g>>1]=f;b[d>>1]=(b[g>>1]|0)*10;g=b[d>>1]|0;i=j;return g|0}return 0}function iE(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;r=t+36|0;j=t+32|0;k=t+28|0;l=t+24|0;m=t+20|0;n=t+16|0;s=t+12|0;q=t+8|0;o=t+4|0;p=t;c[j>>2]=a;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[q>>2]=c[(c[(c[m>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2];c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[c[k>>2]>>2]|0)){j=10;break}c[o>>2]=Tx(c[(c[(c[k>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2]|0)|0;if(((((d[c[o>>2]>>0]|0)==152?(b[(c[o>>2]|0)+32>>1]|0)==(b[(c[(c[m>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]|0):0)?(c[(c[o>>2]|0)+28>>2]|0)==(c[l>>2]|0):0)?(c[p>>2]=Ox(c[j>>2]|0,c[(c[(c[k>>2]|0)+4>>2]|0)+((c[s>>2]|0)*20|0)>>2]|0)|0,(c[p>>2]|0)!=0):0)?0==(Td(c[c[p>>2]>>2]|0,c[q>>2]|0)|0):0){j=8;break}c[s>>2]=(c[s>>2]|0)+1}if((j|0)==8){c[r>>2]=c[s>>2];s=c[r>>2]|0;i=t;return s|0}else if((j|0)==10){c[r>>2]=-1;s=c[r>>2]|0;i=t;return s|0}return 0}function jE(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;ga=i;i=i+224|0;l=ga+196|0;m=ga+192|0;n=ga+188|0;j=ga+184|0;$=ga+180|0;P=ga+176|0;K=ga+172|0;da=ga+40|0;aa=ga+32|0;t=ga+24|0;Z=ga+168|0;E=ga+164|0;F=ga+160|0;G=ga+156|0;W=ga+152|0;q=ga+148|0;s=ga+208|0;k=ga+16|0;x=ga+144|0;w=ga+140|0;L=ga+136|0;X=ga+132|0;H=ga+204|0;Q=ga+128|0;J=ga+124|0;r=ga+202|0;y=ga+120|0;O=ga+116|0;u=ga+112|0;R=ga+108|0;z=ga+104|0;M=ga+100|0;_=ga+96|0;S=ga+92|0;T=ga+88|0;A=ga+84|0;B=ga+80|0;fa=ga+76|0;ea=ga+200|0;v=ga+72|0;o=ga+207|0;p=ga+206|0;I=ga+68|0;D=ga+64|0;Y=ga+60|0;N=ga+56|0;V=ga+52|0;ba=ga+8|0;ca=ga;U=ga+48|0;c[l>>2]=f;c[m>>2]=g;c[n>>2]=h;c[j>>2]=c[c[m>>2]>>2];g=t;c[g>>2]=0;c[g+4>>2]=0;c[Z>>2]=0;c[E>>2]=0;c[F>>2]=0;c[W>>2]=c[c[j>>2]>>2];c[q>>2]=c[c[W>>2]>>2];if(a[(c[q>>2]|0)+65>>0]|0){i=ga;return}c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0);c[P>>2]=(c[j>>2]|0)+68;c[K>>2]=c[c[$>>2]>>2];g=ID(c[P>>2]|0,c[(c[K>>2]|0)+12>>2]|0)|0;j=da;c[j>>2]=g;c[j+4>>2]=C;c[G>>2]=d[c[K>>2]>>0];do if((c[G>>2]|0)==75){h=c[P>>2]|0;f=(c[K>>2]|0)+20|0;if(c[(c[K>>2]|0)+4>>2]&2048){g=JD(h,c[f>>2]|0)|0;j=(c[$>>2]|0)+32|0;c[j>>2]=g;c[j+4>>2]=C;break}else{g=jD(h,c[f>>2]|0)|0;j=(c[$>>2]|0)+32|0;c[j>>2]=g;c[j+4>>2]=C;break}}else if((c[G>>2]|0)==76){j=(c[$>>2]|0)+32|0;c[j>>2]=0;c[j+4>>2]=0;break}else{g=ID(c[P>>2]|0,c[(c[K>>2]|0)+16>>2]|0)|0;j=(c[$>>2]|0)+32|0;c[j>>2]=g;c[j+4>>2]=C;break}while(0);g=ID(c[P>>2]|0,c[K>>2]|0)|0;j=aa;c[j>>2]=g;c[j+4>>2]=C;if(c[(c[K>>2]|0)+4>>2]&1){h=nD(c[P>>2]|0,b[(c[K>>2]|0)+36>>1]|0)|0;f=k;c[f>>2]=h;c[f+4>>2]=C;f=k;h=aa;g=c[h+4>>2]|c[f+4>>2];j=aa;c[j>>2]=c[h>>2]|c[f>>2];c[j+4>>2]=g;j=k;j=fR(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;k=t;c[k>>2]=j;c[k+4>>2]=C}j=aa;h=c[j+4>>2]|0;k=(c[$>>2]|0)+40|0;c[k>>2]=c[j>>2];c[k+4>>2]=h;c[(c[$>>2]|0)+8>>2]=-1;c[(c[$>>2]|0)+4>>2]=-1;b[(c[$>>2]|0)+18>>1]=0;k=(kE(c[G>>2]|0)|0)!=0;h=c[K>>2]|0;a:do if(k){c[L>>2]=Tx(c[h+12>>2]|0)|0;c[X>>2]=Tx(c[(c[K>>2]|0)+16>>2]|0)|0;O=(c[$>>2]|0)+32|0;R=da;b[H>>1]=((c[O>>2]&c[R>>2]|0)==0?(c[O+4>>2]&c[R+4>>2]|0)==0:0)?8191:2048;R=da;if(lE(c[l>>2]|0,c[R>>2]|0,c[R+4>>2]|0,c[L>>2]|0,x,w)|0){c[(c[$>>2]|0)+8>>2]=c[x>>2];c[(c[$>>2]|0)+12>>2]=c[w>>2];R=(mE(c[G>>2]|0)|0)&65535;b[(c[$>>2]|0)+18>>1]=R&e[H>>1]}if((c[G>>2]|0)==73){R=(c[$>>2]|0)+20|0;b[R>>1]=e[R>>1]|2048}if((c[X>>2]|0)!=0?(R=(c[$>>2]|0)+32|0,(lE(c[l>>2]|0,c[R>>2]|0,c[R+4>>2]|0,c[X>>2]|0,x,w)|0)!=0):0){b[r>>1]=0;if((c[(c[$>>2]|0)+8>>2]|0)>=0){c[J>>2]=ny(c[q>>2]|0,c[K>>2]|0,0)|0;if(a[(c[q>>2]|0)+65>>0]|0){Zu(c[q>>2]|0,c[J>>2]|0);i=ga;return}c[y>>2]=nE(c[m>>2]|0,c[J>>2]|0,3)|0;if(!(c[y>>2]|0)){i=ga;return}c[Q>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[y>>2]|0)*48|0);oE(c[m>>2]|0,c[y>>2]|0,c[n>>2]|0);if((c[G>>2]|0)==73){X=(c[Q>>2]|0)+20|0;b[X>>1]=e[X>>1]|2048}c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0);X=(c[$>>2]|0)+20|0;b[X>>1]=e[X>>1]|8;if(pE(c[W>>2]|0,c[J>>2]|0)|0){X=(c[$>>2]|0)+18|0;b[X>>1]=e[X>>1]|2048;b[r>>1]=2048}}else{c[J>>2]=c[K>>2];c[Q>>2]=c[$>>2]}qE(c[W>>2]|0,c[J>>2]|0);c[(c[Q>>2]|0)+8>>2]=c[x>>2];c[(c[Q>>2]|0)+12>>2]=c[w>>2];O=da;R=t;da=c[O+4>>2]|c[R+4>>2];X=(c[Q>>2]|0)+32|0;c[X>>2]=c[O>>2]|c[R>>2];c[X+4>>2]=da;X=aa;aa=c[X+4>>2]|0;da=(c[Q>>2]|0)+40|0;c[da>>2]=c[X>>2];c[da+4>>2]=aa;da=(mE(d[c[J>>2]>>0]|0)|0)&65535;b[(c[Q>>2]|0)+18>>1]=da+(e[r>>1]|0)&e[H>>1]}}else{if((d[h>>0]|0)==74?(d[(c[m>>2]|0)+8>>0]|0)==72:0){c[O>>2]=c[(c[K>>2]|0)+20>>2];c[u>>2]=0;while(1){if((c[u>>2]|0)>=2)break a;X=c[W>>2]|0;aa=d[35688+(c[u>>2]|0)>>0]|0;da=ny(c[q>>2]|0,c[(c[K>>2]|0)+12>>2]|0,0)|0;c[R>>2]=rv(X,aa,da,ny(c[q>>2]|0,c[(c[(c[O>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)>>2]|0,0)|0,0)|0;rE(c[R>>2]|0,c[K>>2]|0);c[z>>2]=nE(c[m>>2]|0,c[R>>2]|0,3)|0;jE(c[l>>2]|0,c[m>>2]|0,c[z>>2]|0);c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0);oE(c[m>>2]|0,c[z>>2]|0,c[n>>2]|0);c[u>>2]=(c[u>>2]|0)+1}}if((d[c[K>>2]>>0]|0)==71){sE(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0);c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0)}}while(0);if((d[(c[m>>2]|0)+8>>0]|0)==72?(tE(c[W>>2]|0,c[K>>2]|0,Z,E,F)|0)!=0:0){b[ea>>1]=259;c[M>>2]=c[(c[(c[(c[K>>2]|0)+20>>2]|0)+4>>2]|0)+20>>2];c[_>>2]=ny(c[q>>2]|0,c[Z>>2]|0,0)|0;b:do if((c[F>>2]|0)!=0?(a[(c[c[W>>2]>>2]|0)+65>>0]|0)==0:0){ea=(c[$>>2]|0)+20|0;b[ea>>1]=e[ea>>1]|1024;c[v>>2]=0;while(1){ea=a[(c[(c[Z>>2]|0)+8>>2]|0)+(c[v>>2]|0)>>0]|0;a[o>>0]=ea;if(!(ea<<24>>24))break b;a[(c[(c[Z>>2]|0)+8>>2]|0)+(c[v>>2]|0)>>0]=a[o>>0]&~(d[19267+(d[o>>0]|0)>>0]&32);a[(c[(c[_>>2]|0)+8>>2]|0)+(c[v>>2]|0)>>0]=a[18477+(d[o>>0]|0)>>0]|0;c[v>>2]=(c[v>>2]|0)+1}}while(0);if(!(a[(c[q>>2]|0)+65>>0]|0)){ea=(If(c[(c[_>>2]|0)+8>>2]|0)|0)-1|0;c[I>>2]=(c[(c[_>>2]|0)+8>>2]|0)+ea;a[p>>0]=a[c[I>>2]>>0]|0;if(c[F>>2]|0){if((d[p>>0]|0)==64)c[E>>2]=0;a[p>>0]=a[18477+(d[p>>0]|0)>>0]|0}a[c[I>>2]>>0]=(d[p>>0]|0)+1}c[fa>>2]=(c[F>>2]|0)!=0?21290:35690;c[S>>2]=ny(c[q>>2]|0,c[M>>2]|0,0)|0;da=c[W>>2]|0;ea=By(c[W>>2]|0,c[S>>2]|0,c[fa>>2]|0)|0;c[S>>2]=rv(da,83,ea,c[Z>>2]|0,0)|0;rE(c[S>>2]|0,c[K>>2]|0);c[A>>2]=nE(c[m>>2]|0,c[S>>2]|0,259)|0;jE(c[l>>2]|0,c[m>>2]|0,c[A>>2]|0);c[T>>2]=ny(c[q>>2]|0,c[M>>2]|0,0)|0;ea=c[W>>2]|0;fa=By(c[W>>2]|0,c[T>>2]|0,c[fa>>2]|0)|0;c[T>>2]=rv(ea,82,fa,c[_>>2]|0,0)|0;rE(c[T>>2]|0,c[K>>2]|0);c[B>>2]=nE(c[m>>2]|0,c[T>>2]|0,259)|0;jE(c[l>>2]|0,c[m>>2]|0,c[B>>2]|0);c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0);if(c[E>>2]|0){oE(c[m>>2]|0,c[A>>2]|0,c[n>>2]|0);oE(c[m>>2]|0,c[B>>2]|0,c[n>>2]|0)}}if((uE(c[K>>2]|0,s)|0)!=0?(c[Y>>2]=c[c[(c[(c[K>>2]|0)+20>>2]|0)+4>>2]>>2],c[N>>2]=c[(c[(c[(c[K>>2]|0)+20>>2]|0)+4>>2]|0)+20>>2],ea=ID(c[P>>2]|0,c[Y>>2]|0)|0,fa=ca,c[fa>>2]=ea,c[fa+4>>2]=C,fa=ID(c[P>>2]|0,c[N>>2]|0)|0,ea=ba,c[ea>>2]=fa,c[ea+4>>2]=C,ea=ca,fa=ba,(c[ea>>2]&c[fa>>2]|0)==0?(c[ea+4>>2]&c[fa+4>>2]|0)==0:0):0){fa=c[W>>2]|0;c[U>>2]=rv(fa,51,0,ny(c[q>>2]|0,c[Y>>2]|0,0)|0,0)|0;c[D>>2]=nE(c[m>>2]|0,c[U>>2]|0,3)|0;c[V>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[D>>2]|0)*48|0);fa=ca;ea=c[fa+4>>2]|0;da=(c[V>>2]|0)+32|0;c[da>>2]=c[fa>>2];c[da+4>>2]=ea;c[(c[V>>2]|0)+8>>2]=c[(c[N>>2]|0)+28>>2];c[(c[V>>2]|0)+12>>2]=b[(c[N>>2]|0)+32>>1];b[(c[V>>2]|0)+18>>1]=64;a[(c[V>>2]|0)+23>>0]=a[s>>0]|0;oE(c[m>>2]|0,c[D>>2]|0,c[n>>2]|0);c[$>>2]=(c[(c[m>>2]|0)+20>>2]|0)+((c[n>>2]|0)*48|0);da=(c[$>>2]|0)+20|0;b[da>>1]=e[da>>1]|8;da=(c[$>>2]|0)+40|0;ea=c[da+4>>2]|0;fa=(c[V>>2]|0)+40|0;c[fa>>2]=c[da>>2];c[fa+4>>2]=ea}da=t;fa=(c[$>>2]|0)+32|0;ca=fa;ea=c[ca+4>>2]|c[da+4>>2];c[fa>>2]=c[ca>>2]|c[da>>2];c[fa+4>>2]=ea;i=ga;return}function kE(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if((c[b>>2]|0)!=75?!((c[b>>2]|0)>=79&(c[b>>2]|0)<=83|(c[b>>2]|0)==76):0)b=(c[b>>2]|0)==73;else b=1;i=d;return b&1|0}function lE(a,f,g,h,j,k){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=i;i=i+48|0;q=u+36|0;l=u+32|0;m=u;n=u+28|0;r=u+24|0;s=u+20|0;p=u+16|0;o=u+12|0;t=u+8|0;c[l>>2]=a;a=m;c[a>>2]=f;c[a+4>>2]=g;c[n>>2]=h;c[r>>2]=j;c[s>>2]=k;if((d[c[n>>2]>>0]|0)==152){c[c[r>>2]>>2]=c[(c[n>>2]|0)+28>>2];c[c[s>>2]>>2]=b[(c[n>>2]|0)+32>>1];c[q>>2]=1;t=c[q>>2]|0;i=u;return t|0}j=m;if((c[j>>2]|0)==0&(c[j+4>>2]|0)==0){c[q>>2]=0;t=c[q>>2]|0;i=u;return t|0}j=m;a=c[j>>2]|0;j=c[j+4>>2]|0;k=m;k=fR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0;if((a&k|0)!=0|(j&C|0)!=0){c[q>>2]=0;t=c[q>>2]|0;i=u;return t|0}c[o>>2]=0;while(1){j=m;k=c[j+4>>2]|0;f=c[o>>2]|0;if(!(k>>>0>0|(k|0)==0&(c[j>>2]|0)>>>0>1))break;c[o>>2]=f+1;k=m;k=hR(c[k>>2]|0,c[k+4>>2]|0,1)|0;j=m;c[j>>2]=k;c[j+4>>2]=C}c[t>>2]=c[(c[l>>2]|0)+8+(f*72|0)+44>>2];c[p>>2]=c[(c[(c[l>>2]|0)+8+((c[o>>2]|0)*72|0)+16>>2]|0)+8>>2];a:while(1){if(!(c[p>>2]|0)){f=20;break}b:do if(c[(c[p>>2]|0)+40>>2]|0){c[o>>2]=0;while(1){if((c[o>>2]|0)>=(e[(c[p>>2]|0)+50>>1]|0))break b;if((b[(c[(c[p>>2]|0)+4>>2]|0)+(c[o>>2]<<1)>>1]|0)==-2?(py(c[n>>2]|0,c[(c[(c[(c[p>>2]|0)+40>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)>>2]|0,c[t>>2]|0)|0)==0:0){f=17;break a}c[o>>2]=(c[o>>2]|0)+1}}while(0);c[p>>2]=c[(c[p>>2]|0)+20>>2]}if((f|0)==17){c[c[r>>2]>>2]=c[t>>2];c[c[s>>2]>>2]=-2;c[q>>2]=1;t=c[q>>2]|0;i=u;return t|0}else if((f|0)==20){c[q>>2]=0;t=c[q>>2]|0;i=u;return t|0}return 0}function mE(a){a=a|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f;e=f+4|0;c[d>>2]=a;do if((c[d>>2]|0)!=75){if((c[d>>2]|0)==76){b[e>>1]=256;break}if((c[d>>2]|0)==73){b[e>>1]=128;break}else{b[e>>1]=2<<(c[d>>2]|0)-79;break}}else b[e>>1]=1;while(0);i=f;return b[e>>1]|0}function nE(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;g=p+24|0;h=p+20|0;j=p+16|0;k=p+28|0;o=p+12|0;m=p+8|0;n=p+4|0;l=p;c[h>>2]=a;c[j>>2]=d;b[k>>1]=f;do if((c[(c[h>>2]|0)+12>>2]|0)>=(c[(c[h>>2]|0)+16>>2]|0)){c[n>>2]=c[(c[h>>2]|0)+20>>2];c[l>>2]=c[c[c[c[h>>2]>>2]>>2]>>2];f=Fw(c[l>>2]|0,(c[(c[h>>2]|0)+16>>2]|0)*48<<1,0)|0;c[(c[h>>2]|0)+20>>2]=f;if(c[(c[h>>2]|0)+20>>2]|0){iR(c[(c[h>>2]|0)+20>>2]|0,c[n>>2]|0,(c[(c[h>>2]|0)+12>>2]|0)*48|0)|0;if((c[n>>2]|0)!=((c[h>>2]|0)+24|0))Sf(c[l>>2]|0,c[n>>2]|0);f=(($t(c[l>>2]|0,c[(c[h>>2]|0)+20>>2]|0)|0)>>>0)/48|0;c[(c[h>>2]|0)+16>>2]=f;kR((c[(c[h>>2]|0)+20>>2]|0)+((c[(c[h>>2]|0)+12>>2]|0)*48|0)|0,0,((c[(c[h>>2]|0)+16>>2]|0)-(c[(c[h>>2]|0)+12>>2]|0)|0)*48|0)|0; -break}if((e[k>>1]|0)&1)Zu(c[l>>2]|0,c[j>>2]|0);c[(c[h>>2]|0)+20>>2]=c[n>>2];c[g>>2]=0;f=c[g>>2]|0;i=p;return f|0}while(0);a=(c[h>>2]|0)+12|0;f=c[a>>2]|0;c[a>>2]=f+1;c[m>>2]=f;c[o>>2]=(c[(c[h>>2]|0)+20>>2]|0)+(f*48|0);if((c[j>>2]|0)!=0?(c[(c[j>>2]|0)+4>>2]&262144|0)!=0:0){f=c[(c[j>>2]|0)+28>>2]|0;f=((Hj(f,((f|0)<0)<<31>>31)|0)<<16>>16)-270&65535;b[(c[o>>2]|0)+16>>1]=f}else b[(c[o>>2]|0)+16>>1]=1;f=Tx(c[j>>2]|0)|0;c[c[o>>2]>>2]=f;b[(c[o>>2]|0)+20>>1]=b[k>>1]|0;c[(c[o>>2]|0)+24>>2]=c[h>>2];c[(c[o>>2]|0)+4>>2]=-1;c[g>>2]=c[m>>2];f=c[g>>2]|0;i=p;return f|0}function oE(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g+8|0;k=g+4|0;h=g;c[j>>2]=d;c[k>>2]=e;c[h>>2]=f;c[(c[(c[j>>2]|0)+20>>2]|0)+((c[k>>2]|0)*48|0)+4>>2]=c[h>>2];b[(c[(c[j>>2]|0)+20>>2]|0)+((c[k>>2]|0)*48|0)+16>>1]=b[(c[(c[j>>2]|0)+20>>2]|0)+((c[h>>2]|0)*48|0)+16>>1]|0;d=(c[(c[j>>2]|0)+20>>2]|0)+((c[h>>2]|0)*48|0)+22|0;a[d>>0]=(a[d>>0]|0)+1<<24>>24;i=g;return}function pE(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;m=p+20|0;j=p+16|0;k=p+12|0;g=p+25|0;h=p+24|0;l=p+8|0;n=p+4|0;o=p;c[j>>2]=b;c[k>>2]=f;if(e[(c[c[j>>2]>>2]|0)+60>>1]&512){c[m>>2]=0;o=c[m>>2]|0;i=p;return o|0}if((d[c[k>>2]>>0]|0)!=79?(d[c[k>>2]>>0]|0)!=73:0){c[m>>2]=0;o=c[m>>2]|0;i=p;return o|0}if(c[(c[k>>2]|0)+4>>2]&1){c[m>>2]=0;o=c[m>>2]|0;i=p;return o|0}a[g>>0]=Nx(c[(c[k>>2]|0)+12>>2]|0)|0;a[h>>0]=Nx(c[(c[k>>2]|0)+16>>2]|0)|0;do if((a[g>>0]|0)!=(a[h>>0]|0)){if((a[g>>0]|0)>=67?(a[h>>0]|0)>=67:0)break;c[m>>2]=0;o=c[m>>2]|0;i=p;return o|0}while(0);c[l>>2]=VA(c[j>>2]|0,c[(c[k>>2]|0)+12>>2]|0,c[(c[k>>2]|0)+16>>2]|0)|0;if((c[l>>2]|0)!=0?(Td(c[c[l>>2]>>2]|0,35690)|0)!=0:0){c[l>>2]=Ox(c[j>>2]|0,c[(c[k>>2]|0)+12>>2]|0)|0;if(c[l>>2]|0)g=c[c[l>>2]>>2]|0;else g=0;c[n>>2]=g;c[l>>2]=Ox(c[j>>2]|0,c[(c[k>>2]|0)+16>>2]|0)|0;if(c[l>>2]|0)g=c[c[l>>2]>>2]|0;else g=0;c[o>>2]=g;c[m>>2]=(Td(c[n>>2]|0,c[o>>2]|0)|0)==0&1;o=c[m>>2]|0;i=p;return o|0}c[m>>2]=1;o=c[m>>2]|0;i=p;return o|0}function qE(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;h=m+8|0;j=m+4|0;k=m+14|0;n=m+12|0;l=m;c[h>>2]=f;c[j>>2]=g;b[k>>1]=c[(c[(c[j>>2]|0)+16>>2]|0)+4>>2]&256;b[n>>1]=c[(c[(c[j>>2]|0)+12>>2]|0)+4>>2]&256;do if((e[k>>1]|0)==(e[n>>1]|0)){if(b[k>>1]|0){n=(c[(c[j>>2]|0)+16>>2]|0)+4|0;c[n>>2]=c[n>>2]&-257;break}if(Ox(c[h>>2]|0,c[(c[j>>2]|0)+12>>2]|0)|0){n=(c[(c[j>>2]|0)+12>>2]|0)+4|0;c[n>>2]=c[n>>2]|256}}while(0);c[l>>2]=c[(c[j>>2]|0)+16>>2];c[(c[j>>2]|0)+16>>2]=c[(c[j>>2]|0)+12>>2];c[(c[j>>2]|0)+12>>2]=c[l>>2];if((d[c[j>>2]>>0]|0)<80){i=m;return}a[c[j>>2]>>0]=((d[c[j>>2]>>0]|0)-80^2)+80;i=m;return}function rE(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=d;if(!(c[e>>2]|0)){i=g;return}a=(c[e>>2]|0)+4|0;c[a>>2]=c[a>>2]|c[(c[f>>2]|0)+4>>2]&1;b[(c[e>>2]|0)+36>>1]=b[(c[f>>2]|0)+36>>1]|0;i=g;return}function sE(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;V=i;i=i+160|0;w=V+156|0;x=V+152|0;y=V+148|0;T=V+144|0;R=V+140|0;D=V+136|0;S=V+132|0;L=V+128|0;E=V+124|0;Q=V+120|0;P=V+116|0;t=V+112|0;B=V+24|0;n=V+16|0;p=V+108|0;r=V+104|0;q=V+100|0;o=V+96|0;j=V+8|0;k=V;u=V+92|0;l=V+88|0;s=V+84|0;m=V+80|0;v=V+76|0;J=V+72|0;F=V+68|0;G=V+64|0;I=V+60|0;z=V+56|0;A=V+52|0;K=V+48|0;N=V+44|0;M=V+40|0;O=V+36|0;H=V+32|0;c[w>>2]=f;c[x>>2]=g;c[y>>2]=h;c[T>>2]=c[c[x>>2]>>2];c[R>>2]=c[c[T>>2]>>2];c[D>>2]=c[c[R>>2]>>2];c[S>>2]=(c[(c[x>>2]|0)+20>>2]|0)+((c[y>>2]|0)*48|0);c[L>>2]=c[c[S>>2]>>2];g=ph(c[D>>2]|0,416,0)|0;c[t>>2]=g;c[(c[S>>2]|0)+12>>2]=g;if(!(c[t>>2]|0)){i=V;return}g=(c[S>>2]|0)+20|0;b[g>>1]=e[g>>1]|16;c[Q>>2]=c[t>>2];aD(c[Q>>2]|0,c[T>>2]|0);bD(c[Q>>2]|0,c[L>>2]|0,71);eD(c[w>>2]|0,c[Q>>2]|0);if(a[(c[D>>2]|0)+65>>0]|0){i=V;return}g=n;c[g>>2]=-1;c[g+4>>2]=-1;g=B;c[g>>2]=-1;c[g+4>>2]=-1;c[E>>2]=(c[(c[Q>>2]|0)+12>>2]|0)-1;c[P>>2]=c[(c[Q>>2]|0)+20>>2];while(1){g=n;if(!((c[E>>2]|0)>=0?(c[g>>2]|0)!=0|(c[g+4>>2]|0)!=0:0))break;do if(!(e[(c[P>>2]|0)+18>>1]&511)){g=B;c[g>>2]=0;c[g+4>>2]=0;c[p>>2]=Fw(c[D>>2]|0,408,0)|0;if(c[p>>2]|0){g=j;c[g>>2]=0;c[g+4>>2]=0;c[(c[P>>2]|0)+12>>2]=c[p>>2];g=(c[P>>2]|0)+20|0;b[g>>1]=e[g>>1]|32;b[(c[P>>2]|0)+18>>1]=1024;c[r>>2]=c[p>>2];aD(c[r>>2]|0,c[c[x>>2]>>2]|0);bD(c[r>>2]|0,c[c[P>>2]>>2]|0,72);eD(c[w>>2]|0,c[r>>2]|0);c[(c[r>>2]|0)+4>>2]=c[x>>2];a:do if(!(a[(c[D>>2]|0)+65>>0]|0)){c[o>>2]=0;c[q>>2]=c[(c[r>>2]|0)+20>>2];while(1){if((c[o>>2]|0)>=(c[(c[r>>2]|0)+12>>2]|0))break a;if(kE(d[c[c[q>>2]>>2]>>0]|0)|0){h=nD((c[T>>2]|0)+68|0,c[(c[q>>2]|0)+8>>2]|0)|0;W=j;f=c[W+4>>2]|C;g=j;c[g>>2]=c[W>>2]|h;c[g+4>>2]=f}c[o>>2]=(c[o>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+48}}while(0);f=j;h=n;g=c[h+4>>2]&c[f+4>>2];W=n;c[W>>2]=c[h>>2]&c[f>>2];c[W+4>>2]=g}}else if(!(e[(c[P>>2]|0)+20>>1]&8)){g=nD((c[T>>2]|0)+68|0,c[(c[P>>2]|0)+8>>2]|0)|0;W=k;c[W>>2]=g;c[W+4>>2]=C;if(e[(c[P>>2]|0)+20>>1]&2){c[u>>2]=(c[(c[Q>>2]|0)+20>>2]|0)+((c[(c[P>>2]|0)+4>>2]|0)*48|0);f=nD((c[T>>2]|0)+68|0,c[(c[u>>2]|0)+8>>2]|0)|0;h=k;g=c[h+4>>2]|C;W=k;c[W>>2]=c[h>>2]|f;c[W+4>>2]=g}f=k;h=n;g=c[h+4>>2]&c[f+4>>2];W=n;c[W>>2]=c[h>>2]&c[f>>2];c[W+4>>2]=g;if(!(e[(c[P>>2]|0)+18>>1]&2)){W=B;c[W>>2]=0;c[W+4>>2]=0;break}else{f=k;h=B;g=c[h+4>>2]&c[f+4>>2];W=B;c[W>>2]=c[h>>2]&c[f>>2];c[W+4>>2]=g;break}}while(0);c[E>>2]=(c[E>>2]|0)+-1;c[P>>2]=(c[P>>2]|0)+48}f=n;g=c[f+4>>2]|0;W=(c[t>>2]|0)+408|0;c[W>>2]=c[f>>2];c[W+4>>2]=g;W=n;b[(c[S>>2]|0)+18>>1]=(c[W>>2]|0)==0&(c[W+4>>2]|0)==0?0:512;W=n;b:do if((c[W>>2]|0)!=0|(c[W+4>>2]|0)!=0?(c[(c[Q>>2]|0)+12>>2]|0)==2:0){c[l>>2]=0;c:while(1){g=c[(c[Q>>2]|0)+20>>2]|0;W=c[l>>2]|0;c[l>>2]=W+1;W=zE(g,W)|0;c[s>>2]=W;if(!W)break b;c[m>>2]=0;while(1){g=(c[(c[Q>>2]|0)+20>>2]|0)+48|0;W=c[m>>2]|0;c[m>>2]=W+1;W=zE(g,W)|0;c[v>>2]=W;if(!W)continue c;AE(c[w>>2]|0,c[x>>2]|0,c[s>>2]|0,c[v>>2]|0)}}}while(0);W=B;if(!((c[W>>2]|0)!=0|(c[W+4>>2]|0)!=0)){i=V;return}c[J>>2]=0;c[F>>2]=-1;c[G>>2]=-1;c[I>>2]=0;c[I>>2]=0;while(1){if((c[I>>2]|0)>=2)break;if(!((c[J>>2]|0)!=0^1))break;c[P>>2]=c[(c[Q>>2]|0)+20>>2];c[E>>2]=(c[(c[Q>>2]|0)+12>>2]|0)-1;while(1){if((c[E>>2]|0)<0)break;W=(c[P>>2]|0)+20|0;b[W>>1]=e[W>>1]&-65;if((c[(c[P>>2]|0)+8>>2]|0)!=(c[G>>2]|0)?(W=B,v=c[W>>2]|0,W=c[W+4>>2]|0,g=nD((c[T>>2]|0)+68|0,c[(c[P>>2]|0)+8>>2]|0)|0,!((v&g|0)==0&(W&C|0)==0)):0){U=36;break}c[E>>2]=(c[E>>2]|0)+-1;c[P>>2]=(c[P>>2]|0)+48}if((U|0)==36){U=0;c[F>>2]=c[(c[P>>2]|0)+12>>2];c[G>>2]=c[(c[P>>2]|0)+8>>2]}if((c[E>>2]|0)<0)break;c[J>>2]=1;while(1){if(!((c[E>>2]|0)>=0?(c[J>>2]|0)!=0:0))break;j=c[P>>2]|0;do if((c[(c[P>>2]|0)+8>>2]|0)!=(c[G>>2]|0)){W=j+20|0;b[W>>1]=e[W>>1]&-65}else{if((c[j+12>>2]|0)!=(c[F>>2]|0)){c[J>>2]=0;break}c[A>>2]=(Nx(c[(c[c[P>>2]>>2]|0)+16>>2]|0)|0)<<24>>24;c[z>>2]=(Nx(c[(c[c[P>>2]>>2]|0)+12>>2]|0)|0)<<24>>24;if((c[A>>2]|0)!=0?(c[A>>2]|0)!=(c[z>>2]|0):0){c[J>>2]=0;break}W=(c[P>>2]|0)+20|0;b[W>>1]=e[W>>1]|64}while(0);c[E>>2]=(c[E>>2]|0)+-1;c[P>>2]=(c[P>>2]|0)+48}c[I>>2]=(c[I>>2]|0)+1}if(!(c[J>>2]|0)){i=V;return}c[N>>2]=0;c[M>>2]=0;c[E>>2]=(c[(c[Q>>2]|0)+12>>2]|0)-1;c[P>>2]=c[(c[Q>>2]|0)+20>>2];while(1){if((c[E>>2]|0)<0)break;if(e[(c[P>>2]|0)+20>>1]&64){c[K>>2]=ny(c[D>>2]|0,c[(c[c[P>>2]>>2]|0)+16>>2]|0,0)|0;c[N>>2]=Gv(c[c[T>>2]>>2]|0,c[N>>2]|0,c[K>>2]|0)|0;c[M>>2]=c[(c[c[P>>2]>>2]|0)+12>>2]}c[E>>2]=(c[E>>2]|0)+-1;c[P>>2]=(c[P>>2]|0)+48}c[K>>2]=ny(c[D>>2]|0,c[M>>2]|0,0)|0;c[O>>2]=rv(c[R>>2]|0,75,c[K>>2]|0,0,0)|0;if(c[O>>2]|0){rE(c[O>>2]|0,c[L>>2]|0);c[(c[O>>2]|0)+20>>2]=c[N>>2];c[H>>2]=nE(c[x>>2]|0,c[O>>2]|0,3)|0;jE(c[w>>2]|0,c[x>>2]|0,c[H>>2]|0);c[S>>2]=(c[(c[x>>2]|0)+20>>2]|0)+((c[y>>2]|0)*48|0);oE(c[x>>2]|0,c[H>>2]|0,c[y>>2]|0)}else Vu(c[D>>2]|0,c[N>>2]|0);b[(c[S>>2]|0)+18>>1]=4096;i=V;return}function KH(f){f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Pb=0,Qb=0,Sb=0,Vb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0.0,Af=0;xf=i;i=i+1824|0;Qe=xf+496|0;Pe=xf+488|0;Oe=xf+480|0;Ne=xf+472|0;Me=xf+456|0;Le=xf+448|0;Ke=xf+440|0;Je=xf+432|0;Ie=xf+424|0;He=xf+416|0;Ge=xf+400|0;Fe=xf+392|0;Ee=xf+384|0;De=xf+376|0;Ce=xf+368|0;Be=xf+360|0;Ae=xf+352|0;uf=xf+336|0;tf=xf+328|0;sf=xf+320|0;ze=xf+312|0;lf=xf+1612|0;n=xf+1608|0;pf=xf+1604|0;rf=xf+1600|0;mf=xf+1596|0;fe=xf+1819|0;H=xf+1818|0;fa=xf+1592|0;of=xf+1588|0;db=xf+1584|0;l=xf+1580|0;Oc=xf+1576|0;Pc=xf+1572|0;Qc=xf+1568|0;id=xf+1564|0;o=xf+1560|0;nf=xf+304|0;g=xf+1556|0;dc=xf+1552|0;Gd=xf+1548|0;wf=xf+1544|0;vf=xf+1540|0;Gc=xf+1536|0;qf=xf+1532|0;B=xf+1528|0;jb=xf+1626|0;vd=xf+1524|0;Ha=xf+1520|0;pb=xf+1516|0;tb=xf+1512|0;Ia=xf+1508|0;Wc=xf+1504|0;S=xf+1500|0;Qa=xf+296|0;x=xf+1817|0;L=xf+1624|0;re=xf+1622|0;se=xf+1620|0;ba=xf+288|0;da=xf+280|0;Od=xf+272|0;Pd=xf+264|0;Ja=xf+1496|0;mc=xf+1492|0;X=xf+1488|0;nc=xf+1484|0;ca=xf+256|0;te=xf+248|0;ea=xf+240|0;nb=xf+1816|0;Qd=xf+1480|0;s=xf+1815|0;O=xf+1618|0;P=xf+1616|0;Ma=xf+1476|0;Y=xf+1472|0;sb=xf+1468|0;ub=xf+1464|0;Sc=xf+1460|0;wa=xf+1456|0;ec=xf+1452|0;y=xf+1448|0;ve=xf+1444|0;we=xf+1440|0;z=xf+1436|0;Fd=xf+232|0;vb=xf+1432|0;Cb=xf+1428|0;fc=xf+1424|0;m=xf+1420|0;Fa=xf+1416|0;U=xf+1412|0;Dc=xf+1408|0;je=xf+192|0;Ye=xf+1404|0;bf=xf+1400|0;_e=xf+1396|0;lb=xf+1392|0;mb=xf+184|0;w=xf+1388|0;ne=xf+1384|0;nd=xf+1380|0;We=xf+1376|0;A=xf+1814|0;ff=xf+1372|0;md=xf+1368|0;Ua=xf+176|0;_a=xf+1364|0;Ra=xf+168|0;gb=xf+160|0;fb=xf+1360|0;me=xf+1356|0;zc=xf+1352|0;Vc=xf+1348|0;Xa=xf+1344|0;Xe=xf+1340|0;K=xf+1336|0;W=xf+1332|0;Da=xf+1328|0;Ga=xf+1324|0;Va=xf+152|0;gc=xf+1320|0;rb=xf+1316|0;ef=xf+1312|0;cb=xf+1308|0;hd=xf+1304|0;pd=xf+1300|0;rd=xf+1296|0;ua=xf+1292|0;xa=xf+1288|0;Ba=xf+1284|0;Aa=xf+1280|0;E=xf+1276|0;ta=xf+1272|0;yb=xf+1268|0;pa=xf+1264|0;la=xf+1260|0;qa=xf+1256|0;ha=xf+1252|0;ga=xf+1248|0;Ac=xf+1244|0;Ya=xf+1240|0;Tc=xf+1236|0;wb=xf+1232|0;ia=xf+1228|0;Se=xf+1224|0;Dd=xf+1220|0;qc=xf+1216|0;Bc=xf+1212|0;vc=xf+1208|0;Uc=xf+1204|0;Hd=xf+1200|0;wc=xf+1196|0;Db=xf+1192|0;xc=xf+1188|0;Wd=xf+1184|0;kb=xf+1180|0;Eb=xf+1176|0;Kd=xf+1160|0;Za=xf+1152|0;ma=xf+144|0;I=xf+1148|0;t=xf+1144|0;qe=xf+1140|0;ya=xf+1136|0;Fb=xf+1132|0;Xd=xf+1128|0;Lc=xf+1124|0;Mc=xf+1120|0;Ld=xf+1104|0;r=xf+1631|0;Gb=xf+1100|0;hc=xf+1096|0;Yd=xf+1092|0;na=xf+136|0;ue=xf+128|0;Hb=xf+1088|0;Zd=xf+1084|0;D=xf+1080|0;Xc=xf+1076|0;Hc=xf+1072|0;yc=xf+1068|0;Rc=xf+1064|0;oa=xf+120|0;Ib=xf+1060|0;hb=xf+1056|0;le=xf+1052|0;Ze=xf+1048|0;jf=xf+1044|0;ob=xf+1040|0;Jb=xf+1036|0;R=xf+1630|0;Kb=xf+1032|0;_d=xf+1028|0;ab=xf+1024|0;Lb=xf+1020|0;Mb=xf+1016|0;ic=xf+1012|0;Ka=xf+1008|0;La=xf+112|0;Nb=xf+1004|0;xe=xf+104|0;wd=xf+1e3|0;ad=xf+996|0;Pb=xf+992|0;Qb=xf+988|0;jc=xf+984|0;$d=xf+980|0;Sb=xf+976|0;kc=xf+972|0;be=xf+968|0;Vb=xf+964|0;ce=xf+960|0;_b=xf+956|0;$a=xf+952|0;cf=xf+948|0;$b=xf+944|0;lc=xf+940|0;de=xf+936|0;Md=xf+920|0;ac=xf+916|0;qd=xf+912|0;ge=xf+96|0;bc=xf+908|0;ee=xf+904|0;Nd=xf+888|0;ra=xf+884|0;ja=xf+880|0;Ta=xf+876|0;cc=xf+872|0;Id=xf+868|0;Q=xf+864|0;Cc=xf+860|0;ka=xf+856|0;df=xf+852|0;gf=xf+848|0;za=xf+832|0;eb=xf+828|0;q=xf+824|0;Ea=xf+820|0;Wa=xf+816|0;Te=xf+812|0;Jd=xf+808|0;ye=xf+88|0;va=xf+804|0;J=xf+800|0;bb=xf+796|0;Sa=xf+792|0;od=xf+788|0;Yc=xf+784|0;Fc=xf+780|0;Ic=xf+776|0;kd=xf+772|0;oe=xf+768|0;Jc=xf+764|0;Nc=xf+760|0;Kc=xf+756|0;Na=xf+752|0;oc=xf+748|0;_=xf+744|0;pc=xf+740|0;Zc=xf+736|0;pe=xf+48|0;_c=xf+732|0;aa=xf+728|0;p=xf+716|0;$c=xf+712|0;Ab=xf+708|0;jd=xf+704|0;F=xf+700|0;G=xf+696|0;af=xf+692|0;Bb=xf+688|0;Ca=xf+1629|0;qb=xf+684|0;Ue=xf+680|0;ud=xf+676|0;ke=xf+8|0;hf=xf+672|0;rc=xf+668|0;sd=xf+664|0;xd=xf+660|0;bd=xf+656|0;Oa=xf+652|0;sa=xf+648|0;cd=xf+644|0;ld=xf+640|0;xb=xf+636|0;td=xf+632|0;yd=xf+628|0;sc=xf+624|0;Ud=xf+620|0;T=xf+616|0;u=xf+612|0;zd=xf+608|0;dd=xf+604|0;Ec=xf+600|0;ie=xf+568|0;tc=xf+564|0;Ad=xf+560|0;ed=xf+556|0;Vd=xf+552|0;uc=xf+548|0;Bd=xf+544|0;gd=xf+540|0;Cd=xf+536|0;fd=xf+532|0;Pa=xf+528|0;V=xf+524|0;he=xf;v=xf+520|0;Ed=xf+516|0;Re=xf+1628|0;ib=xf+512|0;zb=xf+508|0;kf=xf+504|0;Ve=xf+500|0;c[lf>>2]=f;c[n>>2]=c[(c[lf>>2]|0)+4>>2];c[pf>>2]=c[n>>2];c[rf>>2]=0;c[mf>>2]=c[c[lf>>2]>>2];a[fe>>0]=0;a[H>>0]=a[(c[mf>>2]|0)+62>>0]|0;c[fa>>2]=0;c[of>>2]=0;c[db>>2]=0;c[l>>2]=c[(c[lf>>2]|0)+8>>2];c[Oc>>2]=0;c[Pc>>2]=0;c[Qc>>2]=0;c[id>>2]=0;c[o>>2]=0;yf=(c[mf>>2]|0)+32|0;f=c[yf+4>>2]|0;j=nf;c[j>>2]=c[yf>>2];c[j+4>>2]=f;PH(c[lf>>2]|0);a:do if((c[(c[lf>>2]|0)+80>>2]|0)==7)k=860;else{c[(c[lf>>2]|0)+80>>2]=0;yf=(c[lf>>2]|0)+136|0;c[yf>>2]=0;c[yf+4>>2]=0;c[(c[lf>>2]|0)+20>>2]=0;c[(c[mf>>2]|0)+448+8>>2]=0;b:do if(!(c[(c[mf>>2]|0)+240>>2]|0)){if(c[(c[mf>>2]|0)+296>>2]|0){c[g>>2]=c[(c[lf>>2]|0)+108+16>>2];c[db>>2]=(c[(c[mf>>2]|0)+304>>2]|0)-(((c[g>>2]|0)>>>0)%((c[(c[mf>>2]|0)+304>>2]|0)>>>0)|0)}c[pf>>2]=(c[n>>2]|0)+((c[(c[lf>>2]|0)+76>>2]|0)*20|0);c:while(1){if(c[rf>>2]|0)break a;c[of>>2]=(c[of>>2]|0)+1;d:do switch(d[c[pf>>2]>>0]|0){case 13:{k=8;break}case 14:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);b[(c[Oc>>2]|0)+8>>1]=4;yf=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;k=c[Oc>>2]|0;c[k>>2]=yf;c[k+4>>2]=((yf|0)<0)<<31>>31;k=15;break}case 15:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[pf>>2]=(c[n>>2]|0)+((c[c[Oc>>2]>>2]|0)*20|0);b[(c[Oc>>2]|0)+8>>1]=128;break}case 16:{c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);j=(c[(c[pf>>2]|0)+12>>2]|0)-1|0;yf=c[id>>2]|0;c[yf>>2]=j;c[yf+4>>2]=((j|0)<0)<<31>>31;b[(c[id>>2]|0)+8>>1]=4;if(c[(c[pf>>2]|0)+8>>2]|0)k=15;break}case 17:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[dc>>2]=(c[n>>2]|0)+((c[c[Oc>>2]>>2]|0)*20|0);c[pf>>2]=(c[n>>2]|0)+(((c[(c[dc>>2]|0)+8>>2]|0)-1|0)*20|0);b[(c[Oc>>2]|0)+8>>1]=128;break}case 18:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);b[(c[Oc>>2]|0)+8>>1]=4;c[Gd>>2]=c[c[Oc>>2]>>2];j=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;yf=c[Oc>>2]|0;c[yf>>2]=j;c[yf+4>>2]=((j|0)<0)<<31>>31;c[pf>>2]=(c[n>>2]|0)+((c[Gd>>2]|0)*20|0);break}case 20:{c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if(e[(c[Qc>>2]|0)+8>>1]&1)k=21;break}case 21:{k=21;break}case 22:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;j=c[(c[pf>>2]|0)+4>>2]|0;yf=c[id>>2]|0;c[yf>>2]=j;c[yf+4>>2]=((j|0)<0)<<31>>31;break}case 23:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;f=c[(c[pf>>2]|0)+16>>2]|0;j=c[f+4>>2]|0;yf=c[id>>2]|0;c[yf>>2]=c[f>>2];c[yf+4>>2]=j;break}case 133:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;b[(c[id>>2]|0)+8>>1]=8;h[c[id>>2]>>3]=+h[c[(c[pf>>2]|0)+16>>2]>>3];break}case 97:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;a[c[pf>>2]>>0]=24;yf=If(c[(c[pf>>2]|0)+16>>2]|0)|0;c[(c[pf>>2]|0)+4>>2]=yf;if((d[H>>0]|0)!=1){c[rf>>2]=dh(c[id>>2]|0,c[(c[pf>>2]|0)+16>>2]|0,-1,1,0)|0;if((c[rf>>2]|0)==18){k=859;break c}if(Zt(c[id>>2]|0,d[H>>0]|0)|0){k=860;break a}c[(c[id>>2]|0)+24>>2]=0;yf=(c[id>>2]|0)+8|0;b[yf>>1]=e[yf>>1]|2048;if((a[(c[pf>>2]|0)+1>>0]|0)==-1)Sf(c[mf>>2]|0,c[(c[pf>>2]|0)+16>>2]|0);a[(c[pf>>2]|0)+1>>0]=-1;c[(c[pf>>2]|0)+16>>2]=c[(c[id>>2]|0)+16>>2];c[(c[pf>>2]|0)+4>>2]=c[(c[id>>2]|0)+12>>2]}if((c[(c[pf>>2]|0)+4>>2]|0)>(c[(c[mf>>2]|0)+88>>2]|0)){k=859;break c}else k=50;break}case 24:{k=50;break}case 25:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[B>>2]=(c[(c[pf>>2]|0)+12>>2]|0)-(c[(c[pf>>2]|0)+8>>2]|0);yf=((c[(c[pf>>2]|0)+4>>2]|0)!=0?257:1)&65535;b[jb>>1]=yf;b[(c[id>>2]|0)+8>>1]=yf;while(1){if((c[B>>2]|0)<=0)break d;c[id>>2]=(c[id>>2]|0)+40;fh(c[id>>2]|0);b[(c[id>>2]|0)+8>>1]=b[jb>>1]|0;c[B>>2]=(c[B>>2]|0)+-1}}case 26:{c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);b[(c[id>>2]|0)+8>>1]=(e[(c[id>>2]|0)+8>>1]|1)&-129;break}case 27:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;dh(c[id>>2]|0,c[(c[pf>>2]|0)+16>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,0,0)|0;a[(c[id>>2]|0)+10>>0]=a[H>>0]|0;break}case 28:{c[vd>>2]=(c[(c[lf>>2]|0)+60>>2]|0)+(((c[(c[pf>>2]|0)+4>>2]|0)-1|0)*40|0);if(VH(c[vd>>2]|0)|0){k=859;break c}c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;BF(c[id>>2]|0,c[vd>>2]|0,2048);break}case 29:{c[Ha>>2]=c[(c[pf>>2]|0)+12>>2];c[pb>>2]=c[(c[pf>>2]|0)+4>>2];c[tb>>2]=c[(c[pf>>2]|0)+8>>2];c[Oc>>2]=(c[l>>2]|0)+((c[pb>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[tb>>2]|0)*40|0);do{EH(c[id>>2]|0,c[Oc>>2]|0);if((e[(c[id>>2]|0)+8>>1]&4096|0)!=0?(_g(c[id>>2]|0)|0)!=0:0){k=860;break a}c[Oc>>2]=(c[Oc>>2]|0)+40;c[id>>2]=(c[id>>2]|0)+40;yf=(c[Ha>>2]|0)+-1|0;c[Ha>>2]=yf}while((yf|0)!=0);break}case 30:{c[Ia>>2]=c[(c[pf>>2]|0)+12>>2];c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);while(1){BF(c[id>>2]|0,c[Oc>>2]|0,4096);if((e[(c[id>>2]|0)+8>>1]&4096|0)!=0?(_g(c[id>>2]|0)|0)!=0:0){k=860;break a}yf=c[Ia>>2]|0;c[Ia>>2]=yf+-1;if(!yf)break d;c[id>>2]=(c[id>>2]|0)+40;c[Oc>>2]=(c[Oc>>2]|0)+40}}case 31:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);BF(c[id>>2]|0,c[Oc>>2]|0,4096);break}case 32:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);yf=c[Oc>>2]|0;eh(c[id>>2]|0,c[yf>>2]|0,c[yf+4>>2]|0);break}case 33:{if(((c[(c[mf>>2]|0)+296>>2]|0)!=0?(c[of>>2]|0)>>>0>=(c[db>>2]|0)>>>0:0)?(Tb[c[(c[mf>>2]|0)+296>>2]&255](c[(c[mf>>2]|0)+300>>2]|0)|0)!=0:0){k=74;break c}yf=WH(c[lf>>2]|0,0)|0;c[rf>>2]=yf;if(0==(yf|0)?(c[rf>>2]=XH(c[lf>>2]|0,1)|0,(c[rf>>2]|0)==0):0){k=77;break c}break}case 94:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if((e[(c[Oc>>2]|0)+8>>1]|e[(c[Pc>>2]|0)+8>>1])&1){fh(c[id>>2]|0);break d}if((e[(c[Oc>>2]|0)+8>>1]&16384|0)!=0?(Vg(c[Oc>>2]|0)|0)!=0:0){k=860;break a}if((e[(c[Pc>>2]|0)+8>>1]&16384|0)!=0?(Vg(c[Pc>>2]|0)|0)!=0:0){k=860;break a}if((e[(c[Oc>>2]|0)+8>>1]&18|0)==0?(sx(c[Oc>>2]|0,a[H>>0]|0,0)|0)!=0:0){k=860;break a}if((e[(c[Pc>>2]|0)+8>>1]&18|0)==0?(sx(c[Pc>>2]|0,a[H>>0]|0,0)|0)!=0:0){k=860;break a}g=(c[(c[Oc>>2]|0)+12>>2]|0)+(c[(c[Pc>>2]|0)+12>>2]|0)|0;j=Qa;c[j>>2]=g;c[j+4>>2]=((g|0)<0)<<31>>31;j=Qa;g=c[j+4>>2]|0;yf=c[(c[mf>>2]|0)+88>>2]|0;f=((yf|0)<0)<<31>>31;if((g|0)>(f|0)|((g|0)==(f|0)?(c[j>>2]|0)>>>0>yf>>>0:0)){k=859;break c}if(ux(c[id>>2]|0,(c[Qa>>2]|0)+2|0,(c[id>>2]|0)==(c[Pc>>2]|0)&1)|0){k=860;break a}b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|2;if((c[id>>2]|0)!=(c[Pc>>2]|0))iR(c[(c[id>>2]|0)+16>>2]|0,c[(c[Pc>>2]|0)+16>>2]|0,c[(c[Pc>>2]|0)+12>>2]|0)|0;iR((c[(c[id>>2]|0)+16>>2]|0)+(c[(c[Pc>>2]|0)+12>>2]|0)|0,c[(c[Oc>>2]|0)+16>>2]|0,c[(c[Oc>>2]|0)+12>>2]|0)|0;a[(c[(c[id>>2]|0)+16>>2]|0)+(c[Qa>>2]|0)>>0]=0;yf=Qa;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,1,0)|0;a[(c[(c[id>>2]|0)+16>>2]|0)+yf>>0]=0;yf=(c[id>>2]|0)+8|0;b[yf>>1]=e[yf>>1]|512;c[(c[id>>2]|0)+12>>2]=c[Qa>>2];a[(c[id>>2]|0)+10>>0]=a[H>>0]|0;break}case 93:case 92:case 91:case 90:case 89:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);b[re>>1]=ZH(c[Oc>>2]|0)|0;c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);b[se>>1]=ZH(c[Pc>>2]|0)|0;c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);b[L>>1]=e[(c[Oc>>2]|0)+8>>1]|e[(c[Pc>>2]|0)+8>>1];e:do if(!(e[L>>1]&1)){f:do if(e[re>>1]&e[se>>1]&4){yf=c[Oc>>2]|0;j=c[yf+4>>2]|0;f=ba;c[f>>2]=c[yf>>2];c[f+4>>2]=j;f=c[Pc>>2]|0;j=c[f+4>>2]|0;yf=da;c[yf>>2]=c[f>>2];c[yf+4>>2]=j;a[x>>0]=1;switch(d[c[pf>>2]>>0]|0){case 89:{yf=ba;if(_H(da,c[yf>>2]|0,c[yf+4>>2]|0)|0)break f;break}case 90:{yf=ba;if($H(da,c[yf>>2]|0,c[yf+4>>2]|0)|0)break f;break}case 91:{yf=ba;if(aI(da,c[yf>>2]|0,c[yf+4>>2]|0)|0)break f;break}case 92:{yf=ba;if((c[yf>>2]|0)==0&(c[yf+4>>2]|0)==0)break e;j=ba;yf=da;if(((c[j>>2]|0)==-1?(c[j+4>>2]|0)==-1:0)&((c[yf>>2]|0)==0?(c[yf+4>>2]|0)==-2147483648:0))break f;j=ba;f=da;yf=da;c[yf>>2]=pR(c[f>>2]|0,c[f+4>>2]|0,c[j>>2]|0,c[j+4>>2]|0)|0;c[yf+4>>2]=C;break}default:{yf=ba;if((c[yf>>2]|0)==0&(c[yf+4>>2]|0)==0)break e;yf=ba;if((c[yf>>2]|0)==-1?(c[yf+4>>2]|0)==-1:0){yf=ba;c[yf>>2]=1;c[yf+4>>2]=0}j=ba;f=da;yf=da;c[yf>>2]=qR(c[f>>2]|0,c[f+4>>2]|0,c[j>>2]|0,c[j+4>>2]|0)|0;c[yf+4>>2]=C}}f=da;j=c[f+4>>2]|0;yf=c[id>>2]|0;c[yf>>2]=c[f>>2];c[yf+4>>2]=j;b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|4;break d}else a[x>>0]=0;while(0);h[Od>>3]=+Yg(c[Oc>>2]|0);h[Pd>>3]=+Yg(c[Pc>>2]|0);switch(d[c[pf>>2]>>0]|0){case 89:{h[Pd>>3]=+h[Pd>>3]+ +h[Od>>3];break}case 90:{h[Pd>>3]=+h[Pd>>3]-+h[Od>>3];break}case 91:{h[Pd>>3]=+h[Pd>>3]*+h[Od>>3];break}case 92:{if(+h[Od>>3]==0.0)break e;h[Pd>>3]=+h[Pd>>3]/+h[Od>>3];break}default:{zf=+h[Od>>3];yf=+N(zf)>=1.0?zf>0.0?~~+$(+M(zf/4294967296.0),4294967295.0)>>>0:~~+Z((zf-+(~~zf>>>0))/4294967296.0)>>>0:0;j=ba;c[j>>2]=~~zf>>>0;c[j+4>>2]=yf;zf=+h[Pd>>3];j=+N(zf)>=1.0?zf>0.0?~~+$(+M(zf/4294967296.0),4294967295.0)>>>0:~~+Z((zf-+(~~zf>>>0))/4294967296.0)>>>0:0;yf=da;c[yf>>2]=~~zf>>>0;c[yf+4>>2]=j;yf=ba;if((c[yf>>2]|0)==0&(c[yf+4>>2]|0)==0)break e;yf=ba;if((c[yf>>2]|0)==-1?(c[yf+4>>2]|0)==-1:0){yf=ba;c[yf>>2]=1;c[yf+4>>2]=0}j=da;yf=ba;h[Pd>>3]=+((qR(c[j>>2]|0,c[j+4>>2]|0,c[yf>>2]|0,c[yf+4>>2]|0)|0)>>>0)+4294967296.0*+(C|0)}}if(!(HF(+h[Pd>>3])|0)){h[c[id>>2]>>3]=+h[Pd>>3];b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|8;if((a[x>>0]|0)!=0?1:((e[re>>1]|e[se>>1])&8|0)!=0)break d;px(c[id>>2]|0);break d}}while(0);fh(c[id>>2]|0);break}case 34:{if(c[(c[pf>>2]|0)+4>>2]|0)eh((c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0)|0,0,0);break}case 35:{c[Ja>>2]=d[(c[pf>>2]|0)+3>>0];c[mc>>2]=Fw(c[mf>>2]|0,32+((c[Ja>>2]|0)-1<<2)|0,0)|0;if(!(c[mc>>2]|0)){k=860;break a}c[c[mc>>2]>>2]=0;c[(c[mc>>2]|0)+4>>2]=c[(c[pf>>2]|0)+16>>2];c[(c[mc>>2]|0)+16>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;c[(c[mc>>2]|0)+12>>2]=c[lf>>2];a[(c[mc>>2]|0)+26>>0]=c[Ja>>2];a[(c[pf>>2]|0)+1>>0]=-20;c[(c[pf>>2]|0)+16>>2]=c[mc>>2];a[c[pf>>2]>>0]=36;k=132;break}case 36:{k=132;break}case 88:case 87:case 86:case 85:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if((e[(c[Oc>>2]|0)+8>>1]|e[(c[Pc>>2]|0)+8>>1])&1){fh(c[id>>2]|0);break d}yf=Zg(c[Pc>>2]|0)|0;j=ca;c[j>>2]=yf;c[j+4>>2]=C;j=Zg(c[Oc>>2]|0)|0;yf=ea;c[yf>>2]=j;c[yf+4>>2]=C;a[nb>>0]=a[c[pf>>2]>>0]|0;do if((d[nb>>0]|0)!=85){f=ea;g=c[f>>2]|0;f=c[f+4>>2]|0;if((d[nb>>0]|0)==86){Af=ca;j=c[Af+4>>2]|f;yf=ca;c[yf>>2]=c[Af>>2]|g;c[yf+4>>2]=j;break}if((g|0)!=0|(f|0)!=0){if((c[ea+4>>2]|0)<0){a[nb>>0]=175-(d[nb>>0]|0);yf=ea;j=c[yf+4>>2]|0;yf=(j|0)>-1|(j|0)==-1&(c[yf>>2]|0)>>>0>4294967232;j=ea;j=fR(0,0,c[j>>2]|0,c[j+4>>2]|0)|0;Af=ea;c[Af>>2]=yf?j:64;c[Af+4>>2]=yf?C:0}Af=ea;yf=c[Af+4>>2]|0;if((yf|0)>0|(yf|0)==0&(c[Af>>2]|0)>>>0>=64){Af=ca;yf=c[Af+4>>2]|0;if((yf|0)>0|(yf|0)==0&(c[Af>>2]|0)>>>0>=0)g=1;else g=(d[nb>>0]|0)==87;yf=g?0:-1;Af=ca;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;break}c[te>>2]=c[ca>>2];c[te+4>>2]=c[ca+4>>2];g=c[ea>>2]|0;j=te;f=c[j>>2]|0;j=c[j+4>>2]|0;if((d[nb>>0]|0)!=87){yf=hR(f|0,j|0,g|0)|0;Af=te;c[Af>>2]=yf;c[Af+4>>2]=C;if((c[ca+4>>2]|0)<0){j=ea;j=fR(64,0,c[j>>2]|0,c[j+4>>2]|0)|0;j=lR(-1,-1,j|0)|0;f=te;yf=c[f+4>>2]|C;Af=te;c[Af>>2]=c[f>>2]|j;c[Af+4>>2]=yf}}else{yf=lR(f|0,j|0,g|0)|0;Af=te;c[Af>>2]=yf;c[Af+4>>2]=C}c[ca>>2]=c[te>>2];c[ca+4>>2]=c[te+4>>2]}}else{j=ea;f=ca;yf=c[f+4>>2]&c[j+4>>2];Af=ca;c[Af>>2]=c[f>>2]&c[j>>2];c[Af+4>>2]=yf}while(0);j=ca;yf=c[j+4>>2]|0;Af=c[id>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|4;break}case 37:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);wx(c[Oc>>2]|0)|0;yf=c[(c[pf>>2]|0)+8>>2]|0;Af=c[Oc>>2]|0;j=Af;yf=gR(c[j>>2]|0,c[j+4>>2]|0,yf|0,((yf|0)<0)<<31>>31|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C;break}case 38:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if((e[(c[Oc>>2]|0)+8>>1]&4|0)==0?(rx(c[Oc>>2]|0,67,a[H>>0]|0),(e[(c[Oc>>2]|0)+8>>1]&4|0)==0):0)if(!(c[(c[pf>>2]|0)+8>>2]|0)){k=165;break c}else{k=15;break d}b[(c[Oc>>2]|0)+8>>1]=e[(c[Oc>>2]|0)+8>>1]&-49664|4;break}case 39:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(e[(c[Oc>>2]|0)+8>>1]&4)xx(c[Oc>>2]|0)|0;break}case 40:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(e[(c[Oc>>2]|0)+8>>1]&16384)g=Vg(c[Oc>>2]|0)|0;else g=0;c[rf>>2]=g;kx(c[Oc>>2]|0,c[(c[pf>>2]|0)+8>>2]&255,a[H>>0]|0);break}case 83:case 80:case 81:case 82:case 78:case 79:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);b[O>>1]=b[(c[Oc>>2]|0)+8>>1]|0;b[P>>1]=b[(c[Qc>>2]|0)+8>>1]|0;g=d[(c[pf>>2]|0)+3>>0]|0;do if((e[O>>1]|e[P>>1])&1){if(!(g&128)){g=c[pf>>2]|0;if(!(d[(c[pf>>2]|0)+3>>0]&32))if(d[g+3>>0]&16){k=15;break d}else break d;else{c[id>>2]=(c[l>>2]|0)+((c[g+8>>2]|0)*40|0);b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|1;break d}}if(((e[O>>1]&1|0)!=0?(e[P>>1]&1|0)!=0:0)?(e[P>>1]&256|0)==0:0){c[Qd>>2]=0;break}c[Qd>>2]=1}else{a[s>>0]=g&71;if((a[s>>0]|0)>=67){if((e[O>>1]&14|0)==2)xh(c[Oc>>2]|0,0);if((e[P>>1]&14|0)==2)xh(c[Qc>>2]|0,0)}else if((a[s>>0]|0)==66){if((e[O>>1]&2|0)==0?(e[O>>1]&12|0)!=0:0){sx(c[Oc>>2]|0,a[H>>0]|0,1)|0;b[O>>1]=e[(c[Oc>>2]|0)+8>>1]&-33280|e[O>>1]&33279}if((e[P>>1]&2|0)==0?(e[P>>1]&12|0)!=0:0){sx(c[Qc>>2]|0,a[H>>0]|0,1)|0;b[P>>1]=e[(c[Qc>>2]|0)+8>>1]&-33280|e[P>>1]&33279}}if(e[O>>1]&16384){Vg(c[Oc>>2]|0)|0;b[O>>1]=e[O>>1]&-16385}if(e[P>>1]&16384){Vg(c[Qc>>2]|0)|0;b[P>>1]=e[P>>1]&-16385}c[Qd>>2]=cI(c[Qc>>2]|0,c[Oc>>2]|0,c[(c[pf>>2]|0)+16>>2]|0)|0}while(0);switch(d[c[pf>>2]>>0]|0){case 79:{c[Qd>>2]=(c[Qd>>2]|0)==0&1;break}case 78:{c[Qd>>2]=(c[Qd>>2]|0)!=0&1;break}case 82:{c[Qd>>2]=(c[Qd>>2]|0)<0&1;break}case 81:{c[Qd>>2]=(c[Qd>>2]|0)<=0&1;break}case 80:{c[Qd>>2]=(c[Qd>>2]|0)>0&1;break}default:c[Qd>>2]=(c[Qd>>2]|0)>=0&1}b[(c[Oc>>2]|0)+8>>1]=b[O>>1]|0;b[(c[Qc>>2]|0)+8>>1]=b[P>>1]|0;if(!(d[(c[pf>>2]|0)+3>>0]&32))if(c[Qd>>2]|0){k=15;break d}else break d;else{c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|4;yf=c[Qd>>2]|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;break d}}case 41:{c[o>>2]=(c[(c[pf>>2]|0)+16>>2]|0)+4;break}case 42:{if(!(d[(c[pf>>2]|0)+3>>0]&1))c[o>>2]=0;c[Ma>>2]=c[(c[pf>>2]|0)+12>>2];c[Sc>>2]=c[(c[pf>>2]|0)+16>>2];c[sb>>2]=c[(c[pf>>2]|0)+4>>2];c[ub>>2]=c[(c[pf>>2]|0)+8>>2];c[Y>>2]=0;while(1){if((c[Y>>2]|0)>=(c[Ma>>2]|0))break;g=c[Y>>2]|0;if(c[o>>2]|0)g=c[(c[o>>2]|0)+(g<<2)>>2]|0;c[wa>>2]=g;c[ec>>2]=c[(c[Sc>>2]|0)+20+(c[Y>>2]<<2)>>2];c[y>>2]=d[(c[(c[Sc>>2]|0)+16>>2]|0)+(c[Y>>2]|0)>>0];c[fa>>2]=cI((c[l>>2]|0)+(((c[sb>>2]|0)+(c[wa>>2]|0)|0)*40|0)|0,(c[l>>2]|0)+(((c[ub>>2]|0)+(c[wa>>2]|0)|0)*40|0)|0,c[ec>>2]|0)|0;if(c[fa>>2]|0){k=217;break}c[Y>>2]=(c[Y>>2]|0)+1}if((k|0)==217?(k=0,(c[y>>2]|0)!=0):0)c[fa>>2]=0-(c[fa>>2]|0);c[o>>2]=0;break}case 43:{if((c[fa>>2]|0)<0){c[pf>>2]=(c[n>>2]|0)+(((c[(c[pf>>2]|0)+4>>2]|0)-1|0)*20|0);break d}g=c[pf>>2]|0;if(!(c[fa>>2]|0)){c[pf>>2]=(c[n>>2]|0)+(((c[g+8>>2]|0)-1|0)*20|0);break d}else{c[pf>>2]=(c[n>>2]|0)+(((c[g+12>>2]|0)-1|0)*20|0);break d}}case 71:case 72:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(e[(c[Oc>>2]|0)+8>>1]&1)c[ve>>2]=2;else{Af=Zg(c[Oc>>2]|0)|0;c[ve>>2]=((Af|0)!=0|(C|0)!=0)&1}c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);if(e[(c[Pc>>2]|0)+8>>1]&1)c[we>>2]=2;else{Af=Zg(c[Pc>>2]|0)|0;c[we>>2]=((Af|0)!=0|(C|0)!=0)&1}g=((c[ve>>2]|0)*3|0)+(c[we>>2]|0)|0;if((d[c[pf>>2]>>0]|0)==72)c[ve>>2]=d[40716+g>>0];else c[ve>>2]=d[40725+g>>0];c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if((c[ve>>2]|0)==2){b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|1;break d}else{yf=c[ve>>2]|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|4;break d}}case 19:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);fh(c[id>>2]|0);if(!(e[(c[Oc>>2]|0)+8>>1]&1)){b[(c[id>>2]|0)+8>>1]=4;yf=Zg(c[Oc>>2]|0)|0;yf=(((yf|0)!=0|(C|0)!=0)^1)&1;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31}break}case 96:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);fh(c[id>>2]|0);if(!(e[(c[Oc>>2]|0)+8>>1]&1)){b[(c[id>>2]|0)+8>>1]=4;yf=Zg(c[Oc>>2]|0)|0;Af=c[id>>2]|0;c[Af>>2]=~yf;c[Af+4>>2]=~C}break}case 44:{if(a[(c[(c[lf>>2]|0)+200>>2]|0)+(c[(c[pf>>2]|0)+4>>2]|0)>>0]|0)k=15;else a[(c[(c[lf>>2]|0)+200>>2]|0)+(c[(c[pf>>2]|0)+4>>2]|0)>>0]=1;break}case 46:case 45:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(!(e[(c[Oc>>2]|0)+8>>1]&1)){c[z>>2]=+Yg(c[Oc>>2]|0)!=0.0&1;if((d[c[pf>>2]>>0]|0)==46)c[z>>2]=((c[z>>2]|0)!=0^1)&1}else c[z>>2]=c[(c[pf>>2]|0)+12>>2];if(c[z>>2]|0)k=15;break}case 76:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(e[(c[Oc>>2]|0)+8>>1]&1)k=15;break}case 77:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if(!(e[(c[Oc>>2]|0)+8>>1]&1))k=15;break}case 47:{c[Cb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[vb>>2]=c[(c[pf>>2]|0)+8>>2];c[rf>>2]=dI(Cb,vb)|0;c[Dc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[m>>2]=c[(c[Cb>>2]|0)+76>>2];c[fc>>2]=c[(c[Cb>>2]|0)+16>>2];if(c[rf>>2]|0){k=861;break c}g=c[Cb>>2]|0;do if((c[(c[Cb>>2]|0)+56>>2]|0)!=(c[(c[lf>>2]|0)+72>>2]|0)){f=c[Cb>>2]|0;do if(a[g+2>>0]|0)if((d[f>>0]|0)==3){c[nd>>2]=(c[l>>2]|0)+((c[(c[Cb>>2]|0)+16>>2]|0)*40|0);Af=c[(c[nd>>2]|0)+12>>2]|0;c[w>>2]=Af;c[(c[Cb>>2]|0)+64>>2]=Af;c[(c[Cb>>2]|0)+60>>2]=Af;c[(c[Cb>>2]|0)+72>>2]=c[(c[nd>>2]|0)+16>>2];break}else{fh(c[Dc>>2]|0);break d}else{g=c[fc>>2]|0;if(!(d[f+4>>0]|0)){sH(g,Fd)|0;Af=eI(c[fc>>2]|0,w)|0;c[(c[Cb>>2]|0)+72>>2]=Af;c[(c[Cb>>2]|0)+60>>2]=c[Fd>>2]}else{fI(g,(c[Cb>>2]|0)+60|0)|0;Af=gI(c[fc>>2]|0,w)|0;c[(c[Cb>>2]|0)+72>>2]=Af}g=c[(c[Cb>>2]|0)+60>>2]|0;if((c[(c[Cb>>2]|0)+60>>2]|0)>>>0<=(c[w>>2]|0)>>>0){c[(c[Cb>>2]|0)+64>>2]=g;break}if(g>>>0>(c[(c[mf>>2]|0)+88>>2]|0)>>>0){k=859;break c}c[(c[Cb>>2]|0)+64>>2]=c[w>>2]}while(0);c[(c[Cb>>2]|0)+56>>2]=c[(c[lf>>2]|0)+72>>2];g=c[(c[Cb>>2]|0)+72>>2]|0;if((d[c[(c[Cb>>2]|0)+72>>2]>>0]|0)<128){c[lb>>2]=d[g>>0];g=1}else g=(tF(g,lb)|0)&255;c[(c[Cb>>2]|0)+68>>2]=g&255;b[(c[Cb>>2]|0)+14>>1]=0;c[c[m>>2]>>2]=c[lb>>2];if((c[w>>2]|0)>>>0<(c[lb>>2]|0)>>>0){c[(c[Cb>>2]|0)+72>>2]=0;c[(c[Cb>>2]|0)+64>>2]=0;if((c[lb>>2]|0)>>>0<=98307?(c[lb>>2]|0)>>>0<=(c[(c[Cb>>2]|0)+60>>2]|0)>>>0:0){k=272;break}c[rf>>2]=Lj(76686)|0;break d}else k=272}else if((e[g+14>>1]|0)<=(c[vb>>2]|0))k=272;else c[ne>>2]=c[(c[Cb>>2]|0)+80+(c[vb>>2]<<2)>>2];while(0);if((k|0)==272){k=0;do if((c[(c[Cb>>2]|0)+68>>2]|0)>>>0<(c[c[m>>2]>>2]|0)>>>0){if(!(c[(c[Cb>>2]|0)+72>>2]|0)){g=je;f=g+40|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(f|0));c[rf>>2]=hI(c[fc>>2]|0,0,c[c[m>>2]>>2]|0,((a[(c[Cb>>2]|0)+4>>0]|0)!=0^1)&1,je)|0;if(c[rf>>2]|0)break d;c[Ye>>2]=c[je+16>>2]}else c[Ye>>2]=c[(c[Cb>>2]|0)+72>>2];c[U>>2]=e[(c[Cb>>2]|0)+14>>1];Af=mb;c[Af>>2]=c[(c[m>>2]|0)+(c[U>>2]<<2)>>2];c[Af+4>>2]=0;c[bf>>2]=(c[Ye>>2]|0)+(c[(c[Cb>>2]|0)+68>>2]|0);c[_e>>2]=(c[Ye>>2]|0)+(c[c[m>>2]>>2]|0);do{Af=d[c[bf>>2]>>0]|0;c[ne>>2]=Af;g=c[bf>>2]|0;if(Af>>>0<128){c[bf>>2]=g+1;yf=(iI(c[ne>>2]&255)|0)&255;Af=mb;yf=gR(c[Af>>2]|0,c[Af+4>>2]|0,yf|0,0)|0;Af=mb;c[Af>>2]=yf;c[Af+4>>2]=C}else{yf=(tF(g,ne)|0)&255;c[bf>>2]=(c[bf>>2]|0)+yf;yf=uF(c[ne>>2]|0)|0;Af=mb;yf=gR(c[Af>>2]|0,c[Af+4>>2]|0,yf|0,0)|0;Af=mb;c[Af>>2]=yf;c[Af+4>>2]=C}yf=c[ne>>2]|0;Af=c[U>>2]|0;c[U>>2]=Af+1;c[(c[Cb>>2]|0)+80+(Af<<2)>>2]=yf;c[(c[m>>2]|0)+(c[U>>2]<<2)>>2]=c[mb>>2];if((c[U>>2]|0)>(c[vb>>2]|0))break}while((c[bf>>2]|0)>>>0<(c[_e>>2]|0)>>>0);b[(c[Cb>>2]|0)+14>>1]=c[U>>2];c[(c[Cb>>2]|0)+68>>2]=(c[bf>>2]|0)-(c[Ye>>2]|0);if(!(c[(c[Cb>>2]|0)+72>>2]|0))Ug(je); -if((c[bf>>2]|0)>>>0>=(c[_e>>2]|0)>>>0){if((c[bf>>2]|0)>>>0<=(c[_e>>2]|0)>>>0?(Af=mb,!((c[Af+4>>2]|0)!=0?1:(c[Af>>2]|0)!=(c[(c[Cb>>2]|0)+60>>2]|0))):0)k=288}else k=288;if((k|0)==288?(k=0,Af=mb,yf=c[Af+4>>2]|0,!(yf>>>0>0|((yf|0)==0?(c[Af>>2]|0)>>>0>(c[(c[Cb>>2]|0)+60>>2]|0)>>>0:0))):0)break;c[rf>>2]=Lj(76747)|0;break d}else c[ne>>2]=0;while(0);if((e[(c[Cb>>2]|0)+14>>1]|0)<=(c[vb>>2]|0)){g=c[Dc>>2]|0;if((a[(c[pf>>2]|0)+1>>0]|0)==-8){BF(g,c[(c[pf>>2]|0)+16>>2]|0,2048);break d}else{fh(g);break d}}}if(e[(c[Dc>>2]|0)+8>>1]&9312)fh(c[Dc>>2]|0);a[(c[Dc>>2]|0)+10>>0]=a[H>>0]|0;if((c[(c[Cb>>2]|0)+64>>2]|0)>>>0>=(c[(c[m>>2]|0)+((c[vb>>2]|0)+1<<2)>>2]|0)>>>0){c[Ye>>2]=(c[(c[Cb>>2]|0)+72>>2]|0)+(c[(c[m>>2]|0)+(c[vb>>2]<<2)>>2]|0);if((c[ne>>2]|0)>>>0<12){vF(c[Ye>>2]|0,c[ne>>2]|0,c[Dc>>2]|0)|0;break d}g=(((c[ne>>2]|0)-12|0)>>>0)/2|0;c[Fa>>2]=g;c[(c[Dc>>2]|0)+12>>2]=g;g=c[Dc>>2]|0;if((c[(c[Dc>>2]|0)+24>>2]|0)<((c[Fa>>2]|0)+2|0)){b[g+8>>1]=1;if(ux(c[Dc>>2]|0,(c[Fa>>2]|0)+2|0,0)|0){k=860;break a}}else c[(c[Dc>>2]|0)+16>>2]=c[g+20>>2];iR(c[(c[Dc>>2]|0)+16>>2]|0,c[Ye>>2]|0,c[Fa>>2]|0)|0;a[(c[(c[Dc>>2]|0)+16>>2]|0)+(c[Fa>>2]|0)>>0]=0;a[(c[(c[Dc>>2]|0)+16>>2]|0)+((c[Fa>>2]|0)+1)>>0]=0;b[(c[Dc>>2]|0)+8>>1]=b[17282+((c[ne>>2]&1)<<1)>>1]|0;break d}do if(d[(c[pf>>2]|0)+3>>0]&192){if((c[ne>>2]|0)>>>0>=12?(c[ne>>2]&1|0)==0:0)break;if(!(d[(c[pf>>2]|0)+3>>0]&128))k=309}else k=309;while(0);if((k|0)==309?(k=0,Af=uF(c[ne>>2]|0)|0,c[Fa>>2]=Af,(Af|0)!=0):0){c[rf>>2]=hI(c[fc>>2]|0,c[(c[m>>2]|0)+(c[vb>>2]<<2)>>2]|0,c[Fa>>2]|0,((a[(c[Cb>>2]|0)+4>>0]|0)!=0^1)&1,c[Dc>>2]|0)|0;if(c[rf>>2]|0)break d;vF(c[(c[Dc>>2]|0)+16>>2]|0,c[ne>>2]|0,c[Dc>>2]|0)|0;Af=(c[Dc>>2]|0)+8|0;b[Af>>1]=e[Af>>1]&-4097;break d}vF(40734,c[ne>>2]|0,c[Dc>>2]|0)|0;break}case 48:{c[We>>2]=c[(c[pf>>2]|0)+16>>2];c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);while(1){Af=c[We>>2]|0;c[We>>2]=Af+1;Af=a[Af>>0]|0;a[A>>0]=Af;if(!(Af<<24>>24))break d;rx(c[Oc>>2]|0,a[A>>0]|0,a[H>>0]|0);c[Oc>>2]=(c[Oc>>2]|0)+40}}case 49:{Af=Ua;c[Af>>2]=0;c[Af+4>>2]=0;c[_a>>2]=0;Af=gb;c[Af>>2]=0;c[Af+4>>2]=0;c[Xa>>2]=c[(c[pf>>2]|0)+4>>2];c[Xe>>2]=c[(c[pf>>2]|0)+16>>2];c[zc>>2]=(c[l>>2]|0)+((c[Xa>>2]|0)*40|0);c[Xa>>2]=c[(c[pf>>2]|0)+8>>2];c[Vc>>2]=(c[zc>>2]|0)+(((c[Xa>>2]|0)-1|0)*40|0);c[K>>2]=d[(c[lf>>2]|0)+87>>0];c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if(c[Xe>>2]|0){c[md>>2]=c[zc>>2];do{yf=c[md>>2]|0;c[md>>2]=yf+40;Af=c[Xe>>2]|0;c[Xe>>2]=Af+1;rx(yf,a[Af>>0]|0,a[H>>0]|0)}while((a[c[Xe>>2]>>0]|0)!=0)}c[md>>2]=c[Vc>>2];do{Af=jI(c[md>>2]|0,c[K>>2]|0,Ga)|0;c[me>>2]=Af;c[(c[md>>2]|0)+28>>2]=Af;do if(e[(c[md>>2]|0)+8>>1]&16384){Af=Ua;g=c[md>>2]|0;if((c[Af>>2]|0)!=0|(c[Af+4>>2]|0)!=0)if(Vg(g)|0){k=860;break a}else break;else{yf=c[g>>2]|0;Af=gb;yf=gR(c[Af>>2]|0,c[Af+4>>2]|0,yf|0,((yf|0)<0)<<31>>31|0)|0;Af=gb;c[Af>>2]=yf;c[Af+4>>2]=C;c[Ga>>2]=(c[Ga>>2]|0)-(c[c[md>>2]>>2]|0);break}}while(0);yf=Ua;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,c[Ga>>2]|0,0)|0;Af=Ua;c[Af>>2]=yf;c[Af+4>>2]=C;if((c[me>>2]|0)>>>0<=127)g=1;else g=zF(c[me>>2]|0,0)|0;c[_a>>2]=(c[_a>>2]|0)+g;Af=(c[md>>2]|0)+-40|0;c[md>>2]=Af}while(Af>>>0>=(c[zc>>2]|0)>>>0);g=c[_a>>2]|0;if((c[_a>>2]|0)>126){c[fb>>2]=zF(g,((g|0)<0)<<31>>31)|0;c[_a>>2]=(c[_a>>2]|0)+(c[fb>>2]|0);yf=c[fb>>2]|0;Af=c[_a>>2]|0;if((yf|0)<(zF(Af,((Af|0)<0)<<31>>31)|0))c[_a>>2]=(c[_a>>2]|0)+1}else c[_a>>2]=g+1;f=c[_a>>2]|0;yf=Ua;yf=gR(f|0,((f|0)<0)<<31>>31|0,c[yf>>2]|0,c[yf+4>>2]|0)|0;f=Ra;c[f>>2]=yf;c[f+4>>2]=C;f=Ra;yf=gb;yf=gR(c[f>>2]|0,c[f+4>>2]|0,c[yf>>2]|0,c[yf+4>>2]|0)|0;f=C;Af=c[(c[mf>>2]|0)+88>>2]|0;j=((Af|0)<0)<<31>>31;if((f|0)>(j|0)|(f|0)==(j|0)&yf>>>0>Af>>>0){k=859;break c}if(tx(c[id>>2]|0,c[Ra>>2]|0)|0){k=860;break a}c[ff>>2]=c[(c[id>>2]|0)+16>>2];if((c[_a>>2]|0)>>>0<128){a[c[ff>>2]>>0]=c[_a>>2];g=1}else{g=c[_a>>2]|0;g=kI(c[ff>>2]|0,g,((g|0)<0)<<31>>31)|0}c[W>>2]=g&255;c[Da>>2]=c[_a>>2];c[md>>2]=c[zc>>2];do{c[me>>2]=c[(c[md>>2]|0)+28>>2];if((c[me>>2]|0)>>>0<128){a[(c[ff>>2]|0)+(c[W>>2]|0)>>0]=c[me>>2];g=1}else g=kI((c[ff>>2]|0)+(c[W>>2]|0)|0,c[me>>2]|0,0)|0;c[W>>2]=(c[W>>2]|0)+(g&255);Af=lI((c[ff>>2]|0)+(c[Da>>2]|0)|0,c[md>>2]|0,c[me>>2]|0)|0;c[Da>>2]=(c[Da>>2]|0)+Af;Af=(c[md>>2]|0)+40|0;c[md>>2]=Af}while(Af>>>0<=(c[Vc>>2]|0)>>>0);c[(c[id>>2]|0)+12>>2]=c[Ra>>2];b[(c[id>>2]|0)+8>>1]=16;Af=gb;if((c[Af>>2]|0)!=0|(c[Af+4>>2]|0)!=0){c[c[id>>2]>>2]=c[gb>>2];Af=(c[id>>2]|0)+8|0;b[Af>>1]=e[Af>>1]|16384}a[(c[id>>2]|0)+10>>0]=1;break}case 50:{c[gc>>2]=c[(c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2]|0)+16>>2];j=Va;c[j>>2]=0;c[j+4>>2]=0;c[rf>>2]=mI(c[gc>>2]|0,Va)|0;c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;j=Va;yf=c[j+4>>2]|0;Af=c[id>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;break}case 0:{c[rb>>2]=c[(c[pf>>2]|0)+4>>2];c[ef>>2]=c[(c[pf>>2]|0)+16>>2];if(!(c[rb>>2]|0)){if((c[(c[mf>>2]|0)+156>>2]|0)>0){SH(c[lf>>2]|0,40742,Be);c[rf>>2]=5;break d}c[cb>>2]=If(c[ef>>2]|0)|0;c[rf>>2]=nI(c[mf>>2]|0,0,(c[(c[mf>>2]|0)+504>>2]|0)+(c[(c[mf>>2]|0)+500>>2]|0)|0)|0;if(c[rf>>2]|0){k=861;break c}c[hd>>2]=Fw(c[mf>>2]|0,32+(c[cb>>2]|0)+1|0,0)|0;if(!(c[hd>>2]|0))break d;c[c[hd>>2]>>2]=(c[hd>>2]|0)+32;iR(c[c[hd>>2]>>2]|0,c[ef>>2]|0,(c[cb>>2]|0)+1|0)|0;g=c[mf>>2]|0;if(a[(c[mf>>2]|0)+63>>0]|0){a[g+63>>0]=0;a[(c[mf>>2]|0)+71>>0]=1}else{Af=g+500|0;c[Af>>2]=(c[Af>>2]|0)+1}c[(c[hd>>2]|0)+24>>2]=c[(c[mf>>2]|0)+492>>2];c[(c[mf>>2]|0)+492>>2]=c[hd>>2];Af=(c[mf>>2]|0)+512|0;yf=c[Af+4>>2]|0;j=(c[hd>>2]|0)+8|0;c[j>>2]=c[Af>>2];c[j+4>>2]=yf;j=(c[mf>>2]|0)+520|0;yf=c[j+4>>2]|0;Af=(c[hd>>2]|0)+16|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;break d}c[ua>>2]=0;c[pd>>2]=c[(c[mf>>2]|0)+492>>2];while(1){if(!(c[pd>>2]|0))break;if(!(Td(c[c[pd>>2]>>2]|0,c[ef>>2]|0)|0))break;c[ua>>2]=(c[ua>>2]|0)+1;c[pd>>2]=c[(c[pd>>2]|0)+24>>2]}if(!(c[pd>>2]|0)){Af=c[lf>>2]|0;c[Ce>>2]=c[ef>>2];SH(Af,40793,Ce);c[rf>>2]=1;break d}if((c[rb>>2]|0)==1?(c[(c[mf>>2]|0)+156>>2]|0)>0:0){SH(c[lf>>2]|0,40815,De);c[rf>>2]=5;break d}if(!(c[(c[pd>>2]|0)+24>>2]|0))g=(d[(c[mf>>2]|0)+71>>0]|0)!=0;else g=0;c[Ba>>2]=g&1;if(!((c[Ba>>2]|0)!=0&(c[rb>>2]|0)==1)){c[ua>>2]=(c[(c[mf>>2]|0)+500>>2]|0)-(c[ua>>2]|0)-1;g:do if((c[rb>>2]|0)==2){c[Aa>>2]=(c[(c[mf>>2]|0)+24>>2]&2|0)!=0&1;c[xa>>2]=0;while(1){if((c[xa>>2]|0)>=(c[(c[mf>>2]|0)+20>>2]|0))break g;c[rf>>2]=oI(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[xa>>2]<<4)+4>>2]|0,516,(c[Aa>>2]|0)==0&1)|0;if(c[rf>>2]|0){k=861;break c}c[xa>>2]=(c[xa>>2]|0)+1}}else c[Aa>>2]=0;while(0);c[xa>>2]=0;while(1){if((c[xa>>2]|0)>=(c[(c[mf>>2]|0)+20>>2]|0))break;c[rf>>2]=pI(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[xa>>2]<<4)+4>>2]|0,c[rb>>2]|0,c[ua>>2]|0)|0;if(c[rf>>2]|0){k=861;break c}c[xa>>2]=(c[xa>>2]|0)+1}if(c[Aa>>2]|0){Oh(c[mf>>2]|0);zg(c[mf>>2]|0);c[(c[mf>>2]|0)+24>>2]=c[(c[mf>>2]|0)+24>>2]|2}}else{Af=WH(c[lf>>2]|0,1)|0;c[rf>>2]=Af;if(Af){k=858;break c}a[(c[mf>>2]|0)+63>>0]=1;if((TH(c[lf>>2]|0)|0)==5){k=367;break c}a[(c[mf>>2]|0)+71>>0]=0;c[rf>>2]=c[(c[lf>>2]|0)+80>>2]}while(1){if((c[(c[mf>>2]|0)+492>>2]|0)==(c[pd>>2]|0))break;c[rd>>2]=c[(c[mf>>2]|0)+492>>2];c[(c[mf>>2]|0)+492>>2]=c[(c[rd>>2]|0)+24>>2];Sf(c[mf>>2]|0,c[rd>>2]|0);Af=(c[mf>>2]|0)+500|0;c[Af>>2]=(c[Af>>2]|0)+-1}g=c[pd>>2]|0;if((c[rb>>2]|0)==1){c[(c[mf>>2]|0)+492>>2]=c[g+24>>2];Sf(c[mf>>2]|0,c[pd>>2]|0);if(!(c[Ba>>2]|0)){Af=(c[mf>>2]|0)+500|0;c[Af>>2]=(c[Af>>2]|0)+-1}}else{Af=g+8|0;yf=c[Af+4>>2]|0;j=(c[mf>>2]|0)+512|0;c[j>>2]=c[Af>>2];c[j+4>>2]=yf;j=(c[pd>>2]|0)+16|0;yf=c[j+4>>2]|0;Af=(c[mf>>2]|0)+520|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}if((c[Ba>>2]|0)==0|(c[rb>>2]|0)==2?(c[rf>>2]=nI(c[mf>>2]|0,c[rb>>2]|0,c[ua>>2]|0)|0,(c[rf>>2]|0)!=0):0){k=861;break c}break}case 1:{c[E>>2]=c[(c[pf>>2]|0)+4>>2];c[ta>>2]=c[(c[pf>>2]|0)+8>>2];if((c[E>>2]|0)==(d[(c[mf>>2]|0)+63>>0]|0)){if(c[E>>2]|0)g=(c[ta>>2]|0)!=0?40924:40967;else g=41008;SH(c[lf>>2]|0,g,Fe);c[rf>>2]=1;break d}if(c[ta>>2]|0){k=391;break c}if(!(c[E>>2]|0)){k=395;break c}if((c[(c[mf>>2]|0)+156>>2]|0)<=0){k=395;break c}SH(c[lf>>2]|0,40869,Ee);c[rf>>2]=5;break}case 2:{if((c[(c[pf>>2]|0)+8>>2]|0)!=0?(c[(c[mf>>2]|0)+24>>2]&33554432|0)!=0:0){k=407;break c}c[yb>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+4>>2];if(c[yb>>2]|0){c[rf>>2]=mg(c[yb>>2]|0,c[(c[pf>>2]|0)+8>>2]|0)|0;if((c[rf>>2]&255|0)==5){k=410;break c}if(c[rf>>2]|0){k=861;break c}do if((c[(c[pf>>2]|0)+8>>2]|0)!=0?((e[(c[lf>>2]|0)+88>>1]|0)>>>5&1|0)!=0:0){if((d[(c[mf>>2]|0)+63>>0]|0)!=0?(c[(c[mf>>2]|0)+152>>2]|0)<=1:0)break;if(!(c[(c[lf>>2]|0)+104>>2]|0)){Af=(c[mf>>2]|0)+504|0;c[Af>>2]=(c[Af>>2]|0)+1;c[(c[lf>>2]|0)+104>>2]=(c[(c[mf>>2]|0)+500>>2]|0)+(c[(c[mf>>2]|0)+504>>2]|0)}c[rf>>2]=nI(c[mf>>2]|0,0,(c[(c[lf>>2]|0)+104>>2]|0)-1|0)|0;if(!(c[rf>>2]|0))c[rf>>2]=sI(c[yb>>2]|0,c[(c[lf>>2]|0)+104>>2]|0)|0;Af=(c[mf>>2]|0)+512|0;yf=c[Af+4>>2]|0;j=(c[lf>>2]|0)+152|0;c[j>>2]=c[Af>>2];c[j+4>>2]=yf;j=(c[mf>>2]|0)+520|0;yf=c[j+4>>2]|0;Af=(c[lf>>2]|0)+160|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}while(0);ng(c[yb>>2]|0,1,pa);c[la>>2]=c[(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+12>>2]|0)+4>>2]}else{c[pa>>2]=0;c[la>>2]=0}if(d[(c[pf>>2]|0)+3>>0]|0){if((c[pa>>2]|0)==(c[(c[pf>>2]|0)+12>>2]|0)?(c[la>>2]|0)==(c[(c[pf>>2]|0)+16>>2]|0):0)break d;Sf(c[mf>>2]|0,c[(c[lf>>2]|0)+44>>2]|0);Af=nh(c[mf>>2]|0,41056)|0;c[(c[lf>>2]|0)+44>>2]=Af;if((c[c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+12>>2]>>2]|0)!=(c[pa>>2]|0))rj(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0);Af=(c[lf>>2]|0)+88|0;b[Af>>1]=b[Af>>1]&-9|8;c[rf>>2]=17}break}case 51:{c[ha>>2]=c[(c[pf>>2]|0)+4>>2];c[ga>>2]=c[(c[pf>>2]|0)+12>>2];ng(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[ha>>2]<<4)+4>>2]|0,c[ga>>2]|0,qa);c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;yf=c[qa>>2]|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;break}case 52:{c[Ac>>2]=(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4);c[rf>>2]=yg(c[(c[Ac>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+8>>2]|0,c[(c[pf>>2]|0)+12>>2]|0)|0;g=c[pf>>2]|0;if((c[(c[pf>>2]|0)+8>>2]|0)!=1){if((c[g+8>>2]|0)==2)a[(c[(c[Ac>>2]|0)+12>>2]|0)+76>>0]=c[(c[pf>>2]|0)+12>>2]}else{c[c[(c[Ac>>2]|0)+12>>2]>>2]=c[g+12>>2];Af=(c[mf>>2]|0)+24|0;c[Af>>2]=c[Af>>2]|2}if((c[(c[pf>>2]|0)+4>>2]|0)==1){Oh(c[mf>>2]|0);Af=(c[lf>>2]|0)+88|0;b[Af>>1]=b[Af>>1]&-9}break}case 53:{c[qc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];if((c[qc>>2]|0)!=0?(c[(c[qc>>2]|0)+8>>2]|0)==(c[(c[pf>>2]|0)+8>>2]|0):0)k=453;else k=438;break}case 55:case 54:{k=438;break}case 57:case 56:{c[vc>>2]=tI(c[lf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+8>>2]|0,-1,0)|0;if(!(c[vc>>2]|0)){k=860;break a}a[(c[vc>>2]|0)+2>>0]=1;Af=(c[vc>>2]|0)+5|0;a[Af>>0]=a[Af>>0]&-2|1;c[rf>>2]=Xj(c[c[mf>>2]>>2]|0,0,c[mf>>2]|0,(c[vc>>2]|0)+20|0,5|d[(c[pf>>2]|0)+3>>0],1054)|0;if(!(c[rf>>2]|0))c[rf>>2]=mg(c[(c[vc>>2]|0)+20>>2]|0,1)|0;do if(!(c[rf>>2]|0)){Af=c[(c[pf>>2]|0)+16>>2]|0;c[Uc>>2]=Af;g=c[(c[vc>>2]|0)+20>>2]|0;if(!Af){c[rf>>2]=uI(g,1,4,0,c[(c[vc>>2]|0)+16>>2]|0)|0;a[(c[vc>>2]|0)+4>>0]=1;break}c[rf>>2]=wI(g,Hd,2|d[(c[pf>>2]|0)+3>>0])|0;if(!(c[rf>>2]|0)){c[(c[vc>>2]|0)+24>>2]=c[Uc>>2];c[rf>>2]=uI(c[(c[vc>>2]|0)+20>>2]|0,c[Hd>>2]|0,4,c[Uc>>2]|0,c[(c[vc>>2]|0)+16>>2]|0)|0}a[(c[vc>>2]|0)+4>>0]=0}while(0);Af=(c[vc>>2]|0)+5|0;a[Af>>0]=a[Af>>0]&-5|((d[(c[pf>>2]|0)+3>>0]|0)!=8&1)<<2&255;break}case 58:{c[wc>>2]=tI(c[lf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+8>>2]|0,-1,1)|0;if(!(c[wc>>2]|0)){k=860;break a}c[(c[wc>>2]|0)+24>>2]=c[(c[pf>>2]|0)+16>>2];c[rf>>2]=xI(c[mf>>2]|0,c[(c[pf>>2]|0)+12>>2]|0,c[wc>>2]|0)|0;break}case 59:{c[Db>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];j=(c[Db>>2]|0)+32|0;Af=j;yf=c[Af>>2]|0;Af=c[Af+4>>2]|0;f=gR(yf|0,Af|0,1,0)|0;c[j>>2]=f;c[j+4>>2]=C;if((yf|0)==0&(Af|0)==0)k=15;break}case 60:{c[xc>>2]=tI(c[lf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+12>>2]|0,-1,3)|0;if(!(c[xc>>2]|0)){k=860;break a}a[(c[xc>>2]|0)+2>>0]=1;c[(c[xc>>2]|0)+16>>2]=c[(c[pf>>2]|0)+8>>2];a[(c[xc>>2]|0)+4>>0]=1;break}case 61:{yI(c[lf>>2]|0,c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2]|0);c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2]=0;break}case 66:case 65:case 64:case 63:{c[Eb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[kb>>2]=d[c[pf>>2]>>0];c[I>>2]=0;a[(c[Eb>>2]|0)+2>>0]=0;if(a[(c[Eb>>2]|0)+4>>0]|0){c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if((e[(c[Qc>>2]|0)+8>>1]&14|0)==2)xh(c[Qc>>2]|0,0);yf=Zg(c[Qc>>2]|0)|0;Af=ma;c[Af>>2]=yf;c[Af+4>>2]=C;do if(!(e[(c[Qc>>2]|0)+8>>1]&4)){if(!(e[(c[Qc>>2]|0)+8>>1]&8)){k=15;break d}Af=ma;if(+h[c[Qc>>2]>>3]<+((c[Af>>2]|0)>>>0)+4294967296.0*+(c[Af+4>>2]|0)){if(c[kb>>2]&1)break;c[kb>>2]=(c[kb>>2]|0)+-1;break}Af=ma;if(+h[c[Qc>>2]>>3]>+((c[Af>>2]|0)>>>0)+4294967296.0*+(c[Af+4>>2]|0)?(c[kb>>2]&1|0)==1:0)c[kb>>2]=(c[kb>>2]|0)+1}while(0);k=ma;c[rf>>2]=eF(c[(c[Eb>>2]|0)+16>>2]|0,0,c[k>>2]|0,c[k+4>>2]|0,0,Wd)|0;k=ma;yf=c[k+4>>2]|0;Af=(c[Eb>>2]|0)+40|0;c[Af>>2]=c[k>>2];c[Af+4>>2]=yf;if(c[rf>>2]|0){k=861;break c}else k=489}else{if(zI(c[(c[Eb>>2]|0)+16>>2]|0,2)|0)c[I>>2]=1;c[Za>>2]=c[(c[pf>>2]|0)+16>>2];c[Kd>>2]=c[(c[Eb>>2]|0)+24>>2];b[Kd+8>>1]=c[Za>>2];a[Kd+10>>0]=(1&(c[kb>>2]|0)-63|0)!=0?-1:1;c[Kd+4>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if(e[(c[Kd+4>>2]|0)+8>>1]&16384)Vg(c[Kd+4>>2]|0)|0;a[Kd+14>>0]=0;c[rf>>2]=eF(c[(c[Eb>>2]|0)+16>>2]|0,Kd,0,0,0,Wd)|0;if(c[rf>>2]|0){k=861;break c}if(!((c[I>>2]|0)!=0?(d[Kd+14>>0]|0)==0:0))k=489}do if((k|0)==489){k=0;a[(c[Eb>>2]|0)+3>>0]=0;c[(c[Eb>>2]|0)+56>>2]=0;g=c[Wd>>2]|0;if((c[kb>>2]|0)>=65){if((g|0)>=0?!((c[Wd>>2]|0)==0&(c[kb>>2]|0)==66):0){c[Wd>>2]=0;break}c[Wd>>2]=0;c[rf>>2]=TE(c[(c[Eb>>2]|0)+16>>2]|0,Wd)|0;if(c[rf>>2]|0){k=861;break c}else break}else{if((g|0)<=0?!((c[Wd>>2]|0)==0&(c[kb>>2]|0)==63):0){c[Wd>>2]=AI(c[(c[Eb>>2]|0)+16>>2]|0)|0;break}c[Wd>>2]=0;c[rf>>2]=UE(c[(c[Eb>>2]|0)+16>>2]|0,Wd)|0;if(c[rf>>2]|0){k=861;break c}else break}}while(0);if(!(c[Wd>>2]|0)){if(c[I>>2]|0)c[pf>>2]=(c[pf>>2]|0)+20}else k=15;break}case 69:case 68:case 67:{c[Fb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[Lc>>2]=0;g=c[(c[Fb>>2]|0)+24>>2]|0;if((c[(c[pf>>2]|0)+16>>2]|0)>0){c[Ld>>2]=g;b[Ld+8>>1]=c[(c[pf>>2]|0)+16>>2];c[Ld+4>>2]=c[Qc>>2];c[ya>>2]=0;while(1){if((c[ya>>2]|0)>=(e[Ld+8>>1]|0))break;if(e[(c[Ld+4>>2]|0)+((c[ya>>2]|0)*40|0)+8>>1]&16384)Vg((c[Ld+4>>2]|0)+((c[ya>>2]|0)*40|0)|0)|0;c[ya>>2]=(c[ya>>2]|0)+1}c[Mc>>2]=Ld}else{c[Mc>>2]=cF(g,r,183,Lc)|0;if(!(c[Mc>>2]|0)){k=860;break a}if(e[(c[Qc>>2]|0)+8>>1]&16384)Vg(c[Qc>>2]|0)|0;dF(c[(c[Fb>>2]|0)+24>>2]|0,c[(c[Qc>>2]|0)+12>>2]|0,c[(c[Qc>>2]|0)+16>>2]|0,c[Mc>>2]|0)}a[(c[Mc>>2]|0)+10>>0]=0;c[qe>>2]=0;h:do if((d[c[pf>>2]>>0]|0)==67){c[ya>>2]=0;while(1){if((c[ya>>2]|0)>=(e[(c[Mc>>2]|0)+8>>1]|0))break h;if(e[(c[(c[Mc>>2]|0)+4>>2]|0)+((c[ya>>2]|0)*40|0)+8>>1]&1)break;c[ya>>2]=(c[ya>>2]|0)+1}c[qe>>2]=1}while(0);c[rf>>2]=eF(c[(c[Fb>>2]|0)+16>>2]|0,c[Mc>>2]|0,0,0,0,Xd)|0;Sf(c[mf>>2]|0,c[Lc>>2]|0);if(!(c[rf>>2]|0)){c[(c[Fb>>2]|0)+28>>2]=c[Xd>>2];c[t>>2]=(c[Xd>>2]|0)==0&1;a[(c[Fb>>2]|0)+2>>0]=1-(c[t>>2]|0);a[(c[Fb>>2]|0)+3>>0]=0;c[(c[Fb>>2]|0)+56>>2]=0;if((d[c[pf>>2]>>0]|0)==69)if(c[t>>2]|0){k=15;break d}else break d;else if((c[qe>>2]|0)==0&(c[t>>2]|0)!=0)break d;else{k=15;break d}}break}case 70:{c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[Gb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[hc>>2]=c[(c[Gb>>2]|0)+16>>2];c[Yd>>2]=0;Af=c[Qc>>2]|0;yf=c[Af+4>>2]|0;j=na;c[j>>2]=c[Af>>2];c[j+4>>2]=yf;j=na;c[rf>>2]=eF(c[hc>>2]|0,0,c[j>>2]|0,c[j+4>>2]|0,0,Yd)|0;j=na;yf=c[j+4>>2]|0;Af=(c[Gb>>2]|0)+40|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;a[(c[Gb>>2]|0)+2>>0]=0;c[(c[Gb>>2]|0)+56>>2]=0;a[(c[Gb>>2]|0)+3>>0]=0;c[(c[Gb>>2]|0)+28>>2]=c[Yd>>2];if(c[Yd>>2]|0)if(!(c[(c[pf>>2]|0)+8>>2]|0))c[rf>>2]=Lj(78267)|0;else k=15;break}case 73:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;Af=(c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2]|0)+32|0;yf=Af;j=c[yf>>2]|0;yf=c[yf+4>>2]|0;f=gR(j|0,yf|0,1,0)|0;c[Af>>2]=f;c[Af+4>>2]=C;Af=c[id>>2]|0;c[Af>>2]=j;c[Af+4>>2]=yf;break}case 74:{Af=ue;c[Af>>2]=0;c[Af+4>>2]=0;c[Zd>>2]=0;c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[Hb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];do if(!((d[(c[Hb>>2]|0)+5>>0]|0)>>>1&1)){c[rf>>2]=BI(c[(c[Hb>>2]|0)+16>>2]|0,Zd)|0;if(c[rf>>2]|0){k=861;break c}if(c[Zd>>2]|0){Af=ue;c[Af>>2]=1;c[Af+4>>2]=0;break}c[rf>>2]=sH(c[(c[Hb>>2]|0)+16>>2]|0,ue)|0;Af=ue;yf=c[Af+4>>2]|0;if((yf|0)>2147483647|(yf|0)==2147483647&(c[Af>>2]|0)>>>0>=4294967295){Af=(c[Hb>>2]|0)+5|0;a[Af>>0]=a[Af>>0]&-3|2;break}else{yf=ue;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,1,0)|0;Af=ue;c[Af>>2]=yf;c[Af+4>>2]=C;break}}while(0);if(c[(c[pf>>2]|0)+12>>2]|0){if(c[(c[lf>>2]|0)+176>>2]|0){c[Hc>>2]=c[(c[lf>>2]|0)+176>>2];while(1){if(!(c[(c[Hc>>2]|0)+4>>2]|0))break;c[Hc>>2]=c[(c[Hc>>2]|0)+4>>2]}c[Xc>>2]=(c[(c[Hc>>2]|0)+16>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0)}else c[Xc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);wx(c[Xc>>2]|0)|0;Af=c[Xc>>2]|0;if((c[Af>>2]|0)==-1?(c[Af+4>>2]|0)==2147483647:0){k=542;break c}if((d[(c[Hb>>2]|0)+5>>0]|0)>>>1&1){k=542;break c}f=ue;yf=c[f>>2]|0;f=c[f+4>>2]|0;Af=c[Xc>>2]|0;Af=gR(c[Af>>2]|0,c[Af+4>>2]|0,1,0)|0;j=C;if((f|0)<(j|0)|(f|0)==(j|0)&yf>>>0>>0){yf=c[Xc>>2]|0;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,1,0)|0;Af=ue;c[Af>>2]=yf;c[Af+4>>2]=C}j=ue;yf=c[j+4>>2]|0;Af=c[Xc>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}if((d[(c[Hb>>2]|0)+5>>0]|0)>>>1&1){c[D>>2]=0;do{Sd(8,ue);j=ue;Af=c[j+4>>2]&1073741823;yf=ue;c[yf>>2]=c[j>>2];c[yf+4>>2]=Af;yf=ue;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,1,0)|0;Af=ue;c[Af>>2]=yf;c[Af+4>>2]=C;Af=ue;Af=eF(c[(c[Hb>>2]|0)+16>>2]|0,0,c[Af>>2]|0,c[Af+4>>2]|0,0,Zd)|0;c[rf>>2]=Af;if(!((Af|0)==0&(c[Zd>>2]|0)==0))break;Af=(c[D>>2]|0)+1|0;c[D>>2]=Af}while((Af|0)<100);if((c[rf>>2]|0)==0&(c[Zd>>2]|0)==0){k=551;break c}}a[(c[Hb>>2]|0)+3>>0]=0;c[(c[Hb>>2]|0)+56>>2]=0;j=ue;yf=c[j+4>>2]|0;Af=c[id>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;break}case 84:case 75:{c[yc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[Ib>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];g=c[(c[pf>>2]|0)+12>>2]|0;if((d[c[pf>>2]>>0]|0)==75){c[Rc>>2]=(c[l>>2]|0)+(g*40|0);j=c[Rc>>2]|0;yf=c[j+4>>2]|0;Af=oa;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}else{Af=oa;c[Af>>2]=g;c[Af+4>>2]=((g|0)<0)<<31>>31}if(d[(c[pf>>2]|0)+3>>0]&1){Af=(c[lf>>2]|0)+92|0;c[Af>>2]=(c[Af>>2]|0)+1}if(d[(c[pf>>2]|0)+3>>0]&2){yf=oa;j=c[yf>>2]|0;yf=c[yf+4>>2]|0;Af=nf;c[Af>>2]=j;c[Af+4>>2]=yf;Af=(c[mf>>2]|0)+32|0;c[Af>>2]=j;c[Af+4>>2]=yf}if(e[(c[yc>>2]|0)+8>>1]&1){c[(c[yc>>2]|0)+16>>2]=0;c[(c[yc>>2]|0)+12>>2]=0}if(d[(c[pf>>2]|0)+3>>0]&16)g=c[(c[Ib>>2]|0)+28>>2]|0;else g=0;c[le>>2]=g;if(e[(c[yc>>2]|0)+8>>1]&16384)c[hb>>2]=c[c[yc>>2]>>2];else c[hb>>2]=0;Af=oa;c[rf>>2]=CI(c[(c[Ib>>2]|0)+16>>2]|0,0,c[Af>>2]|0,c[Af+4>>2]|0,c[(c[yc>>2]|0)+16>>2]|0,c[(c[yc>>2]|0)+12>>2]|0,c[hb>>2]|0,(d[(c[pf>>2]|0)+3>>0]&8|0)!=0&1,c[le>>2]|0)|0;a[(c[Ib>>2]|0)+3>>0]=0;c[(c[Ib>>2]|0)+56>>2]=0;if(((c[rf>>2]|0)==0?(c[(c[mf>>2]|0)+212>>2]|0)!=0:0)?(c[(c[pf>>2]|0)+16>>2]|0)!=0:0){c[Ze>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(a[(c[Ib>>2]|0)+1>>0]<<4)>>2];c[jf>>2]=c[(c[pf>>2]|0)+16>>2];c[ob>>2]=(d[(c[pf>>2]|0)+3>>0]&4|0)!=0?23:18;Af=oa;Xb[c[(c[mf>>2]|0)+212>>2]&255](c[(c[mf>>2]|0)+208>>2]|0,c[ob>>2]|0,c[Ze>>2]|0,c[jf>>2]|0,c[Af>>2]|0,c[Af+4>>2]|0)}break}case 95:{c[Jb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];if((c[(c[mf>>2]|0)+212>>2]|0)!=0?(c[(c[pf>>2]|0)+16>>2]|0)!=0:0)g=(d[(c[Jb>>2]|0)+4>>0]|0)!=0;else g=0;a[R>>0]=g&1;if((d[(c[pf>>2]|0)+3>>0]|0)!=0?(d[R>>0]|0)!=0:0)sH(c[(c[Jb>>2]|0)+16>>2]|0,(c[Jb>>2]|0)+40|0)|0;c[rf>>2]=DI(c[(c[Jb>>2]|0)+16>>2]|0,a[(c[pf>>2]|0)+3>>0]|0)|0;c[(c[Jb>>2]|0)+56>>2]=0;if((c[rf>>2]|0)==0?(d[R>>0]|0)!=0:0){Af=(c[Jb>>2]|0)+40|0;Xb[c[(c[mf>>2]|0)+212>>2]&255](c[(c[mf>>2]|0)+208>>2]|0,9,c[(c[(c[mf>>2]|0)+16>>2]|0)+(a[(c[Jb>>2]|0)+1>>0]<<4)>>2]|0,c[(c[pf>>2]|0)+16>>2]|0,c[Af>>2]|0,c[Af+4>>2]|0)}if(c[(c[pf>>2]|0)+8>>2]&1){Af=(c[lf>>2]|0)+92|0;c[Af>>2]=(c[Af>>2]|0)+1}break}case 98:{QH(c[mf>>2]|0,c[(c[lf>>2]|0)+92>>2]|0);c[(c[lf>>2]|0)+92>>2]=0;break}case 99:{c[Kb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[ab>>2]=c[(c[pf>>2]|0)+16>>2];c[_d>>2]=0;c[rf>>2]=EI(c[Kb>>2]|0,c[Qc>>2]|0,c[ab>>2]|0,_d)|0;if(c[_d>>2]|0)k=15;break}case 100:{c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[Lb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[rf>>2]=FI(c[Lb>>2]|0,c[id>>2]|0)|0;c[(c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+12>>2]<<2)>>2]|0)+56>>2]=0;break}case 102:case 101:{c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[Mb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[ic>>2]=c[(c[Mb>>2]|0)+16>>2];g=c[ic>>2]|0;if(d[(c[Mb>>2]|0)+4>>0]|0){fI(g,Ka)|0;if((c[Ka>>2]|0)>>>0>(c[(c[mf>>2]|0)+88>>2]|0)>>>0){k=859;break c}}else{sH(g,La)|0;yf=La;f=c[yf+4>>2]|0;Af=c[(c[mf>>2]|0)+88>>2]|0;j=((Af|0)<0)<<31>>31;if((f|0)>(j|0)|((f|0)==(j|0)?(c[yf>>2]|0)>>>0>Af>>>0:0)){k=859;break c}c[Ka>>2]=c[La>>2]}if(tx(c[id>>2]|0,(c[Ka>>2]|0)>>>0>32?c[Ka>>2]|0:32)|0){k=860;break a}c[(c[id>>2]|0)+12>>2]=c[Ka>>2];b[(c[id>>2]|0)+8>>1]=e[(c[id>>2]|0)+8>>1]&-49664|16;g=c[ic>>2]|0;f=c[Ka>>2]|0;j=c[(c[id>>2]|0)+16>>2]|0;if(!(d[(c[Mb>>2]|0)+4>>0]|0))c[rf>>2]=tH(g,0,f,j)|0;else c[rf>>2]=Mh(g,0,f,j)|0;a[(c[id>>2]|0)+10>>0]=1;break}case 103:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[Nb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];if(a[(c[Nb>>2]|0)+2>>0]|0){b[(c[id>>2]|0)+8>>1]=1;break d}g=c[Nb>>2]|0;do if(!(a[(c[Nb>>2]|0)+3>>0]|0)){f=c[Nb>>2]|0;if((d[g>>0]|0)==2){c[wd>>2]=c[c[f+16>>2]>>2];c[ad>>2]=c[c[wd>>2]>>2];c[rf>>2]=Yb[c[(c[ad>>2]|0)+48>>2]&255](c[(c[Nb>>2]|0)+16>>2]|0,xe)|0;GI(c[lf>>2]|0,c[wd>>2]|0);break}c[rf>>2]=HI(f)|0;if(c[rf>>2]|0){k=861;break c}if(a[(c[Nb>>2]|0)+2>>0]|0){b[(c[id>>2]|0)+8>>1]=1;break d}else{c[rf>>2]=sH(c[(c[Nb>>2]|0)+16>>2]|0,xe)|0;break}}else{j=g+40|0;yf=c[j+4>>2]|0;Af=xe;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}while(0);j=xe;yf=c[j+4>>2]|0;Af=c[id>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;break}case 104:{c[Pb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];a[(c[Pb>>2]|0)+2>>0]=1;c[(c[Pb>>2]|0)+56>>2]=0;if(!(d[c[Pb>>2]>>0]|0))pB(c[(c[Pb>>2]|0)+16>>2]|0);break}case 105:{c[Qb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[jc>>2]=c[(c[Qb>>2]|0)+16>>2];c[$d>>2]=0;c[rf>>2]=BI(c[jc>>2]|0,$d)|0;a[(c[Qb>>2]|0)+2>>0]=c[$d>>2];a[(c[Qb>>2]|0)+3>>0]=0;c[(c[Qb>>2]|0)+56>>2]=0;c[(c[Qb>>2]|0)+28>>2]=c[(c[pf>>2]|0)+12>>2];if((c[$d>>2]|0)!=0?(c[(c[pf>>2]|0)+8>>2]|0)>0:0)k=15;break}case 107:case 106:{k=(c[lf>>2]|0)+108+8|0;c[k>>2]=(c[k>>2]|0)+1;k=609;break}case 108:{k=609;break}case 3:{c[Vb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[ce>>2]=0;c[rf>>2]=KI(c[mf>>2]|0,c[Vb>>2]|0,ce)|0;k=616;break}case 5:case 4:{if(c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2]|0)k=615;break}case 7:case 6:{k=615;break}case 110:case 109:{c[_b>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);if(d[(c[pf>>2]|0)+3>>0]&1){Af=(c[lf>>2]|0)+92|0;c[Af>>2]=(c[Af>>2]|0)+1}if(e[(c[Pc>>2]|0)+8>>1]&16384)g=Vg(c[Pc>>2]|0)|0;else g=0;c[rf>>2]=g;if(!(c[rf>>2]|0)){if((d[c[pf>>2]>>0]|0)==109){c[rf>>2]=LI(c[_b>>2]|0,c[Pc>>2]|0)|0;break d}c[$a>>2]=c[(c[Pc>>2]|0)+12>>2];c[cf>>2]=c[(c[Pc>>2]|0)+16>>2];g=c[$a>>2]|0;if(d[(c[pf>>2]|0)+3>>0]&16)f=c[(c[_b>>2]|0)+28>>2]|0;else f=0;c[rf>>2]=CI(c[(c[_b>>2]|0)+16>>2]|0,c[cf>>2]|0,g,((g|0)<0)<<31>>31,19266,0,0,c[(c[pf>>2]|0)+12>>2]|0,f)|0;c[(c[_b>>2]|0)+56>>2]=0}break}case 111:{c[$b>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[lc>>2]=c[(c[$b>>2]|0)+16>>2];c[Md>>2]=c[(c[$b>>2]|0)+24>>2];b[Md+8>>1]=c[(c[pf>>2]|0)+12>>2];a[Md+10>>0]=0;c[Md+4>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);c[rf>>2]=eF(c[lc>>2]|0,Md,0,0,0,de)|0;if((c[rf>>2]|0)==0&(c[de>>2]|0)==0)c[rf>>2]=DI(c[lc>>2]|0,4)|0;c[(c[$b>>2]|0)+56>>2]=0;break}case 113:case 112:{c[ac>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[rf>>2]=HI(c[ac>>2]|0)|0;if(c[rf>>2]|0){k=861;break c}if(a[(c[ac>>2]|0)+2>>0]|0){fh((c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0)|0);break d}Af=ge;c[Af>>2]=0;c[Af+4>>2]=0;c[rf>>2]=MI(c[mf>>2]|0,c[(c[ac>>2]|0)+16>>2]|0,ge)|0;if(c[rf>>2]|0){k=861;break c}if((d[c[pf>>2]>>0]|0)==112){c[qd>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+12>>2]<<2)>>2];a[(c[qd>>2]|0)+2>>0]=0;j=ge;yf=c[j+4>>2]|0;Af=(c[qd>>2]|0)+40|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;a[(c[qd>>2]|0)+3>>0]=1;c[(c[qd>>2]|0)+52>>2]=c[(c[pf>>2]|0)+16>>2];c[(c[qd>>2]|0)+48>>2]=c[ac>>2];break d}else{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;j=ge;yf=c[j+4>>2]|0;Af=c[id>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;b[(c[id>>2]|0)+8>>1]=4;break d}}case 117:case 116:case 115:case 114:{c[bc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[Nd>>2]=c[(c[bc>>2]|0)+24>>2];b[Nd+8>>1]=c[(c[pf>>2]|0)+16>>2];g=Nd+10|0;if((d[c[pf>>2]>>0]|0)<116)a[g>>0]=-1;else a[g>>0]=0;c[Nd+4>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[ee>>2]=0;c[rf>>2]=NI(c[mf>>2]|0,c[bc>>2]|0,Nd,ee)|0;g=c[ee>>2]|0;if(!(d[c[pf>>2]>>0]&1))c[ee>>2]=0-g;else c[ee>>2]=g+1;if((c[ee>>2]|0)>0)k=15;break}case 118:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;b[(c[id>>2]|0)+8>>1]=1;if((c[(c[mf>>2]|0)+152>>2]|0)>((c[(c[mf>>2]|0)+164>>2]|0)+1|0)){c[rf>>2]=6;a[(c[lf>>2]|0)+86>>0]=2;break d}c[ja>>2]=c[(c[pf>>2]|0)+12>>2];c[ra>>2]=0;c[rf>>2]=OI(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[ja>>2]<<4)+4>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,ra)|0;b[(c[id>>2]|0)+8>>1]=4;yf=c[ra>>2]|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;if((c[rf>>2]|0)==0&(c[ra>>2]|0)!=0){PI(c[mf>>2]|0,c[ja>>2]|0,c[ra>>2]|0,c[(c[pf>>2]|0)+4>>2]|0);a[fe>>0]=(c[ja>>2]|0)+1}break}case 119:{c[Ta>>2]=0;c[rf>>2]=QI(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+8>>2]<<4)+4>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,(c[(c[pf>>2]|0)+12>>2]|0)!=0?Ta:0)|0;if((c[(c[pf>>2]|0)+12>>2]|0)!=0?(Af=(c[lf>>2]|0)+92|0,c[Af>>2]=(c[Af>>2]|0)+(c[Ta>>2]|0),(c[(c[pf>>2]|0)+12>>2]|0)>0):0){yf=c[Ta>>2]|0;Af=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0)|0;j=Af;yf=gR(c[j>>2]|0,c[j+4>>2]|0,yf|0,((yf|0)<0)<<31>>31|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C}break}case 120:{c[cc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];if((d[c[cc>>2]>>0]|0)==1){RI(c[mf>>2]|0,c[(c[cc>>2]|0)+16>>2]|0);break d}else{c[rf>>2]=SI(c[(c[cc>>2]|0)+16>>2]|0)|0;break d}}case 122:case 121:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[Id>>2]=0;c[Cc>>2]=(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4);if((d[c[pf>>2]>>0]|0)==122)c[Q>>2]=1;else c[Q>>2]=2;c[rf>>2]=wI(c[(c[Cc>>2]|0)+4>>2]|0,Id,c[Q>>2]|0)|0;yf=c[Id>>2]|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;break}case 123:{c[ka>>2]=c[(c[pf>>2]|0)+4>>2];c[df>>2]=(c[ka>>2]|0)==1?20769:20788;c[za>>2]=c[mf>>2];c[za+8>>2]=c[(c[pf>>2]|0)+4>>2];c[za+4>>2]=(c[lf>>2]|0)+44;Af=c[mf>>2]|0;j=c[df>>2]|0;yf=c[(c[pf>>2]|0)+16>>2]|0;c[Ge>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[ka>>2]<<4)>>2];c[Ge+4>>2]=j;c[Ge+8>>2]=yf;c[gf>>2]=Bh(Af,41084,Ge)|0;if(!(c[gf>>2]|0))c[rf>>2]=7;else{a[(c[mf>>2]|0)+140+5>>0]=1;c[za+12>>2]=0;c[rf>>2]=$e(c[mf>>2]|0,c[gf>>2]|0,140,za,0)|0;if(!(c[rf>>2]|0))c[rf>>2]=c[za+12>>2];Sf(c[mf>>2]|0,c[gf>>2]|0);a[(c[mf>>2]|0)+140+5>>0]=0}if(c[rf>>2]|0)zg(c[mf>>2]|0);if((c[rf>>2]|0)==7){k=860;break a}break}case 124:{c[rf>>2]=Aj(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0)|0;break}case 125:{TI(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+16>>2]|0);break}case 126:{UI(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+16>>2]|0);break}case 127:{VI(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+16>>2]|0);break}case 128:{c[eb>>2]=c[(c[pf>>2]|0)+8>>2];c[q>>2]=Fw(c[mf>>2]|0,(c[eb>>2]|0)+1<<2,0)|0;if(!(c[q>>2]|0)){k=860;break a}c[Jd>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Ea>>2]=0;while(1){g=c[Ea>>2]|0;if((c[Ea>>2]|0)>=(c[eb>>2]|0))break;Af=Zg((c[Oc>>2]|0)+(g*40|0)|0)|0;c[(c[q>>2]|0)+(c[Ea>>2]<<2)>>2]=Af;c[Ea>>2]=(c[Ea>>2]|0)+1}c[(c[q>>2]|0)+(g<<2)>>2]=0;c[Te>>2]=WI(c[(c[(c[mf>>2]|0)+16>>2]|0)+(d[(c[pf>>2]|0)+3>>0]<<4)+4>>2]|0,c[q>>2]|0,c[eb>>2]|0,c[c[Jd>>2]>>2]|0,Wa)|0;Sf(c[mf>>2]|0,c[q>>2]|0);yf=c[Wa>>2]|0;Af=c[Jd>>2]|0;j=Af;yf=fR(c[j>>2]|0,c[j+4>>2]|0,yf|0,((yf|0)<0)<<31>>31|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C;fh(c[Oc>>2]|0);if(c[Wa>>2]|0){if(!(c[Te>>2]|0)){k=860;break a}dh(c[Oc>>2]|0,c[Te>>2]|0,-1,1,148)|0}Zt(c[Oc>>2]|0,d[H>>0]|0)|0;break}case 129:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);if((e[(c[Oc>>2]|0)+8>>1]&32|0)==0?(XI(c[Oc>>2]|0),(e[(c[Oc>>2]|0)+8>>1]&32|0)==0):0){k=860;break a}Af=c[Pc>>2]|0;YI(c[c[Oc>>2]>>2]|0,c[Af>>2]|0,c[Af+4>>2]|0);break}case 130:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);if((e[(c[Oc>>2]|0)+8>>1]&32|0)!=0?(ZI(c[c[Oc>>2]>>2]|0,ye)|0)!=0:0){k=ye;eh((c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0)|0,c[k>>2]|0,c[k+4>>2]|0);k=9;break d}fh(c[Oc>>2]|0);k=8;break}case 131:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[va>>2]=c[(c[pf>>2]|0)+16>>2];if((e[(c[Oc>>2]|0)+8>>1]&32|0)==0?(XI(c[Oc>>2]|0),(e[(c[Oc>>2]|0)+8>>1]&32|0)==0):0){k=860;break a}if((c[va>>2]|0)!=0?(Af=c[Qc>>2]|0,c[J>>2]=_I(c[c[Oc>>2]>>2]|0,c[va>>2]|0,c[Af>>2]|0,c[Af+4>>2]|0)|0,(c[J>>2]|0)!=0):0){k=15;break d}if((c[va>>2]|0)>=0){Af=c[Qc>>2]|0;YI(c[c[Oc>>2]>>2]|0,c[Af>>2]|0,c[Af+4>>2]|0)}break}case 132:{c[kd>>2]=c[(c[pf>>2]|0)+16>>2];c[od>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if(a[(c[pf>>2]|0)+3>>0]|0){c[oe>>2]=c[(c[kd>>2]|0)+20>>2];c[Ic>>2]=c[(c[lf>>2]|0)+176>>2];while(1){if(!(c[Ic>>2]|0))break;if((c[(c[Ic>>2]|0)+28>>2]|0)==(c[oe>>2]|0))break;c[Ic>>2]=c[(c[Ic>>2]|0)+4>>2]}if(c[Ic>>2]|0)break d}if((c[(c[lf>>2]|0)+184>>2]|0)>=(c[(c[mf>>2]|0)+88+40>>2]|0)){c[rf>>2]=1;SH(c[lf>>2]|0,41148,He);break d}i:do if(!(e[(c[od>>2]|0)+8>>1]&64)){c[bb>>2]=(c[(c[kd>>2]|0)+8>>2]|0)+(c[(c[kd>>2]|0)+12>>2]|0);c[Sa>>2]=80+((c[bb>>2]|0)*40|0)+(c[(c[kd>>2]|0)+12>>2]<<2)+(c[(c[kd>>2]|0)+16>>2]|0);Af=c[Sa>>2]|0;c[Ic>>2]=ph(c[mf>>2]|0,Af,((Af|0)<0)<<31>>31)|0;if(!(c[Ic>>2]|0)){k=860;break a}Ug(c[od>>2]|0);b[(c[od>>2]|0)+8>>1]=64;c[c[od>>2]>>2]=c[Ic>>2];c[c[Ic>>2]>>2]=c[lf>>2];c[(c[Ic>>2]|0)+60>>2]=c[bb>>2];c[(c[Ic>>2]|0)+64>>2]=c[(c[kd>>2]|0)+12>>2];c[(c[Ic>>2]|0)+44>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;c[(c[Ic>>2]|0)+16>>2]=c[(c[lf>>2]|0)+8>>2];c[(c[Ic>>2]|0)+52>>2]=c[(c[lf>>2]|0)+28>>2];c[(c[Ic>>2]|0)+24>>2]=c[(c[lf>>2]|0)+56>>2];c[(c[Ic>>2]|0)+40>>2]=c[(c[lf>>2]|0)+36>>2];c[(c[Ic>>2]|0)+8>>2]=c[(c[lf>>2]|0)+4>>2];c[(c[Ic>>2]|0)+48>>2]=c[(c[lf>>2]|0)+32>>2];c[(c[Ic>>2]|0)+28>>2]=c[(c[kd>>2]|0)+20>>2];c[(c[Ic>>2]|0)+20>>2]=c[(c[lf>>2]|0)+200>>2];c[(c[Ic>>2]|0)+56>>2]=c[(c[lf>>2]|0)+196>>2];c[Fc>>2]=(c[Ic>>2]|0)+80+((c[(c[Ic>>2]|0)+60>>2]|0)*40|0);c[Yc>>2]=(c[Ic>>2]|0)+80;while(1){if((c[Yc>>2]|0)==(c[Fc>>2]|0))break i;b[(c[Yc>>2]|0)+8>>1]=128;c[(c[Yc>>2]|0)+32>>2]=c[mf>>2];c[Yc>>2]=(c[Yc>>2]|0)+40}}else c[Ic>>2]=c[c[od>>2]>>2];while(0);j=(c[lf>>2]|0)+184|0;c[j>>2]=(c[j>>2]|0)+1;c[(c[Ic>>2]|0)+4>>2]=c[(c[lf>>2]|0)+176>>2];j=nf;yf=c[j+4>>2]|0;Af=(c[Ic>>2]|0)+32|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;c[(c[Ic>>2]|0)+68>>2]=c[(c[lf>>2]|0)+92>>2];c[(c[Ic>>2]|0)+72>>2]=c[(c[c[lf>>2]>>2]|0)+80>>2];c[(c[lf>>2]|0)+92>>2]=0;c[(c[lf>>2]|0)+176>>2]=c[Ic>>2];Af=(c[Ic>>2]|0)+80+-40|0;c[l>>2]=Af;c[(c[lf>>2]|0)+8>>2]=Af;c[(c[lf>>2]|0)+28>>2]=c[(c[Ic>>2]|0)+60>>2];c[(c[lf>>2]|0)+36>>2]=c[(c[Ic>>2]|0)+64>>2]&65535;c[(c[lf>>2]|0)+56>>2]=(c[l>>2]|0)+(((c[(c[lf>>2]|0)+28>>2]|0)+1|0)*40|0);Af=c[c[kd>>2]>>2]|0;c[n>>2]=Af;c[(c[lf>>2]|0)+4>>2]=Af;c[(c[lf>>2]|0)+32>>2]=c[(c[kd>>2]|0)+4>>2];c[(c[lf>>2]|0)+200>>2]=(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[lf>>2]|0)+36>>2]<<2);c[(c[lf>>2]|0)+196>>2]=c[(c[kd>>2]|0)+16>>2];c[pf>>2]=(c[n>>2]|0)+-20;kR(c[(c[lf>>2]|0)+200>>2]|0,0,c[(c[lf>>2]|0)+196>>2]|0)|0;break}case 134:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[Jc>>2]=c[(c[lf>>2]|0)+176>>2];c[Nc>>2]=(c[(c[Jc>>2]|0)+16>>2]|0)+(((c[(c[pf>>2]|0)+4>>2]|0)+(c[(c[(c[Jc>>2]|0)+8>>2]|0)+((c[(c[Jc>>2]|0)+44>>2]|0)*20|0)+4>>2]|0)|0)*40|0);BF(c[id>>2]|0,c[Nc>>2]|0,4096);break}case 135:{g=c[pf>>2]|0;if(c[(c[mf>>2]|0)+24>>2]&16777216){yf=c[g+8>>2]|0;Af=(c[mf>>2]|0)+520|0;j=Af;yf=gR(c[j>>2]|0,c[j+4>>2]|0,yf|0,((yf|0)<0)<<31>>31|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C;break d}f=c[(c[pf>>2]|0)+8>>2]|0;j=((f|0)<0)<<31>>31;if(c[g+4>>2]|0){Af=(c[mf>>2]|0)+512|0;yf=Af;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,f|0,j|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C;break d}else{Af=(c[lf>>2]|0)+144|0;yf=Af;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,f|0,j|0)|0;c[Af>>2]=yf;c[Af+4>>2]=C;break d}}case 136:if(c[(c[pf>>2]|0)+4>>2]|0){Af=(c[mf>>2]|0)+512|0;if(!((c[Af>>2]|0)==0&(c[Af+4>>2]|0)==0))break d;Af=(c[mf>>2]|0)+520|0; -if((c[Af>>2]|0)==0&(c[Af+4>>2]|0)==0){k=15;break d}else break d}else{Af=(c[lf>>2]|0)+144|0;if(!((c[Af>>2]|0)==0&(c[Af+4>>2]|0)==0))break d;Af=(c[mf>>2]|0)+520|0;if((c[Af>>2]|0)==0&(c[Af+4>>2]|0)==0){k=15;break d}else break d}case 137:{if(c[(c[lf>>2]|0)+176>>2]|0){c[Kc>>2]=c[(c[lf>>2]|0)+176>>2];while(1){if(!(c[(c[Kc>>2]|0)+4>>2]|0))break;c[Kc>>2]=c[(c[Kc>>2]|0)+4>>2]}c[Oc>>2]=(c[(c[Kc>>2]|0)+16>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0)}else c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);wx(c[Oc>>2]|0)|0;c[Pc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0);wx(c[Pc>>2]|0)|0;yf=c[Oc>>2]|0;f=c[yf+4>>2]|0;Af=c[Pc>>2]|0;j=c[Af+4>>2]|0;if((f|0)<(j|0)|((f|0)==(j|0)?(c[yf>>2]|0)>>>0<(c[Af>>2]|0)>>>0:0)){j=c[Pc>>2]|0;yf=c[j+4>>2]|0;Af=c[Oc>>2]|0;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf}break}case 138:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);Af=c[Oc>>2]|0;yf=c[Af+4>>2]|0;if((yf|0)>0|(yf|0)==0&(c[Af>>2]|0)>>>0>0){Af=c[(c[pf>>2]|0)+12>>2]|0;k=c[Oc>>2]|0;yf=k;Af=fR(c[yf>>2]|0,c[yf+4>>2]|0,Af|0,((Af|0)<0)<<31>>31|0)|0;c[k>>2]=Af;c[k+4>>2]=C;k=15}break}case 139:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;Af=c[Oc>>2]|0;yf=c[Af+4>>2]|0;if((yf|0)<0|(yf|0)==0&(c[Af>>2]|0)>>>0<=0){g=-1;f=-1}else{g=c[Oc>>2]|0;Af=c[Qc>>2]|0;yf=c[Af+4>>2]|0;if((yf|0)>0|(yf|0)==0&(c[Af>>2]|0)>>>0>0){j=c[Qc>>2]|0;f=c[j>>2]|0;j=c[j+4>>2]|0}else{f=0;j=0}g=gR(c[g>>2]|0,c[g+4>>2]|0,f|0,j|0)|0;f=C}Af=c[id>>2]|0;c[Af>>2]=g;c[Af+4>>2]=f;break}case 140:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);Af=c[Oc>>2]|0;if((c[Af>>2]|0)!=0|(c[Af+4>>2]|0)!=0){Af=c[(c[pf>>2]|0)+12>>2]|0;k=c[Oc>>2]|0;yf=k;Af=fR(c[yf>>2]|0,c[yf+4>>2]|0,Af|0,((Af|0)<0)<<31>>31|0)|0;c[k>>2]=Af;c[k+4>>2]=C;k=15}break}case 141:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);Af=c[Oc>>2]|0;yf=Af;yf=gR(c[yf>>2]|0,c[yf+4>>2]|0,-1,-1)|0;c[Af>>2]=yf;c[Af+4>>2]=C;Af=c[Oc>>2]|0;if((c[Af>>2]|0)==0&(c[Af+4>>2]|0)==0)k=15;break}case 142:{c[Oc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);j=c[Oc>>2]|0;Af=j;yf=c[Af>>2]|0;Af=c[Af+4>>2]|0;f=gR(yf|0,Af|0,1,0)|0;c[j>>2]=f;c[j+4>>2]=C;if((yf|0)==0&(Af|0)==0)k=15;break}case 143:{c[Na>>2]=d[(c[pf>>2]|0)+3>>0];c[oc>>2]=Fw(c[mf>>2]|0,32+((c[Na>>2]|0)-1<<2)|0,0)|0;if(!(c[oc>>2]|0)){k=860;break a}c[(c[oc>>2]|0)+8>>2]=0;c[(c[oc>>2]|0)+4>>2]=c[(c[pf>>2]|0)+16>>2];c[(c[oc>>2]|0)+16>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;c[(c[oc>>2]|0)+12>>2]=c[lf>>2];a[(c[oc>>2]|0)+26>>0]=c[Na>>2];a[(c[pf>>2]|0)+1>>0]=-20;c[(c[pf>>2]|0)+16>>2]=c[oc>>2];a[c[pf>>2]>>0]=-112;k=740;break}case 144:{k=740;break}case 145:{c[_c>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[rf>>2]=EF(c[_c>>2]|0,c[(c[pf>>2]|0)+16>>2]|0)|0;if(c[rf>>2]|0){Af=c[lf>>2]|0;c[Je>>2]=ae(c[_c>>2]|0)|0;SH(Af,19255,Je)}Zt(c[_c>>2]|0,d[H>>0]|0)|0;if(VH(c[_c>>2]|0)|0){k=859;break c}break}case 8:{c[p>>2]=0;c[p+8>>2]=-1;c[p+4>>2]=-1;c[rf>>2]=ki(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+8>>2]|0,p+4|0,p+8|0)|0;if((c[rf>>2]|0)==5){c[rf>>2]=0;c[p>>2]=1}c[aa>>2]=0;c[$c>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);while(1){if((c[aa>>2]|0)>=3)break d;Af=c[p+(c[aa>>2]<<2)>>2]|0;eh(c[$c>>2]|0,Af,((Af|0)<0)<<31>>31);c[aa>>2]=(c[aa>>2]|0)+1;c[$c>>2]=(c[$c>>2]|0)+40}}case 9:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[F>>2]=c[(c[pf>>2]|0)+12>>2];c[Ab>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+4>>2];c[jd>>2]=Of(c[Ab>>2]|0)|0;c[G>>2]=qg(c[jd>>2]|0)|0;if((c[F>>2]|0)==-1)c[F>>2]=c[G>>2];if(!($I(c[jd>>2]|0)|0))c[F>>2]=c[G>>2];c[af>>2]=Fi(c[jd>>2]|0,1)|0;do if((c[F>>2]|0)==5){if((If(c[af>>2]|0)|0)!=0?(aJ(c[jd>>2]|0)|0)!=0:0)break;c[F>>2]=c[G>>2]}while(0);do if((c[F>>2]|0)!=(c[G>>2]|0)?(c[G>>2]|0)==5|(c[F>>2]|0)==5:0){if((a[(c[mf>>2]|0)+63>>0]|0)!=0?(c[(c[mf>>2]|0)+152>>2]|0)<=1:0){if((c[G>>2]|0)==5){c[rf>>2]=bJ(c[jd>>2]|0)|0;if(!(c[rf>>2]|0))cJ(c[jd>>2]|0,c[F>>2]|0)|0}else if((c[G>>2]|0)==4)cJ(c[jd>>2]|0,2)|0;if(c[rf>>2]|0)break;c[rf>>2]=Ag(c[Ab>>2]|0,(c[F>>2]|0)==5?2:1)|0;break}c[rf>>2]=1;Af=c[lf>>2]|0;c[Ke>>2]=(c[F>>2]|0)==5?41185:41190;SH(Af,41197,Ke);break d}while(0);if(c[rf>>2]|0)c[F>>2]=c[G>>2];c[F>>2]=cJ(c[jd>>2]|0,c[F>>2]|0)|0;b[(c[id>>2]|0)+8>>1]=2562;Af=RB(c[F>>2]|0)|0;c[(c[id>>2]|0)+16>>2]=Af;Af=If(c[(c[id>>2]|0)+16>>2]|0)|0;c[(c[id>>2]|0)+12>>2]=Af;a[(c[id>>2]|0)+10>>0]=1;Zt(c[id>>2]|0,d[H>>0]|0)|0;break}case 10:{c[rf>>2]=dJ((c[lf>>2]|0)+44|0,c[mf>>2]|0)|0;break}case 146:{c[Bb>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+4>>2];c[rf>>2]=eJ(c[Bb>>2]|0)|0;if((c[rf>>2]|0)==101){c[rf>>2]=0;k=15}break}case 147:if(c[(c[pf>>2]|0)+4>>2]|0){Af=(c[lf>>2]|0)+88|0;b[Af>>1]=b[Af>>1]&-9|8;break d}else{Oh(c[mf>>2]|0);break d}case 148:{a[Ca>>0]=c[(c[pf>>2]|0)+12>>2];if((d[Ca>>0]|0)==0?0!=(c[(c[mf>>2]|0)+24>>2]&16384|0):0)break d;c[qb>>2]=c[(c[pf>>2]|0)+4>>2];c[rf>>2]=fJ(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[qb>>2]<<4)+4>>2]|0,c[(c[pf>>2]|0)+8>>2]|0,a[Ca>>0]|0)|0;if((c[rf>>2]&255|0)==6){c[Ue>>2]=c[(c[pf>>2]|0)+16>>2];Af=c[lf>>2]|0;c[Le>>2]=c[Ue>>2];SH(Af,41249,Le)}break}case 149:{c[ud>>2]=c[(c[pf>>2]|0)+16>>2];c[rf>>2]=gJ(c[mf>>2]|0,c[ud>>2]|0)|0;if(c[ud>>2]|0)GI(c[lf>>2]|0,c[(c[ud>>2]|0)+8>>2]|0);break}case 150:{g=ke;f=g+40|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(f|0));c[ke+32>>2]=c[mf>>2];c[rf>>2]=gh(ke,(c[l>>2]|0)+((c[(c[pf>>2]|0)+8>>2]|0)*40|0)|0)|0;c[hf>>2]=ae(ke)|0;if(c[hf>>2]|0)c[rf>>2]=hJ(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[hf>>2]|0,(c[lf>>2]|0)+44|0)|0;Ug(ke);break}case 151:{Af=(c[mf>>2]|0)+164|0;c[Af>>2]=(c[Af>>2]|0)+1;c[rf>>2]=iJ(c[mf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[(c[pf>>2]|0)+16>>2]|0)|0;Af=(c[mf>>2]|0)+164|0;c[Af>>2]=(c[Af>>2]|0)+-1;break}case 152:{c[rc>>2]=0;c[sd>>2]=0;c[xd>>2]=c[(c[(c[pf>>2]|0)+16>>2]|0)+8>>2];if((c[xd>>2]|0)!=0?(c[c[xd>>2]>>2]|0)!=0:0){c[bd>>2]=c[c[xd>>2]>>2];c[rf>>2]=Yb[c[(c[bd>>2]|0)+24>>2]&255](c[xd>>2]|0,sd)|0;GI(c[lf>>2]|0,c[xd>>2]|0);if(c[rf>>2]|0)break d;c[c[sd>>2]>>2]=c[xd>>2];c[rc>>2]=tI(c[lf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,0,-1,2)|0;if(!(c[rc>>2]|0)){k=804;break c}c[(c[rc>>2]|0)+16>>2]=c[sd>>2];Af=(c[xd>>2]|0)+4|0;c[Af>>2]=(c[Af>>2]|0)+1;break d}c[rf>>2]=6;break}case 11:{c[ld>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[xb>>2]=(c[ld>>2]|0)+40;c[sc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[td>>2]=c[(c[sc>>2]|0)+16>>2];c[yd>>2]=c[c[td>>2]>>2];c[cd>>2]=c[c[yd>>2]>>2];c[Oa>>2]=c[c[xb>>2]>>2];c[sa>>2]=c[c[ld>>2]>>2];c[Ud>>2]=0;c[u>>2]=c[(c[lf>>2]|0)+12>>2];c[T>>2]=0;while(1){if((c[T>>2]|0)>=(c[Oa>>2]|0))break;c[(c[u>>2]|0)+(c[T>>2]<<2)>>2]=(c[xb>>2]|0)+(((c[T>>2]|0)+1|0)*40|0);c[T>>2]=(c[T>>2]|0)+1}c[rf>>2]=Zb[c[(c[cd>>2]|0)+32>>2]&255](c[td>>2]|0,c[sa>>2]|0,c[(c[pf>>2]|0)+16>>2]|0,c[Oa>>2]|0,c[u>>2]|0)|0;GI(c[lf>>2]|0,c[yd>>2]|0);if(!(c[rf>>2]|0))c[Ud>>2]=Tb[c[(c[cd>>2]|0)+40>>2]&255](c[td>>2]|0)|0;a[(c[sc>>2]|0)+2>>0]=0;if(c[Ud>>2]|0)k=15;break}case 153:{c[tc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[Ec>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);if(a[(c[tc>>2]|0)+2>>0]|0){fh(c[Ec>>2]|0);break d}c[zd>>2]=c[c[(c[tc>>2]|0)+16>>2]>>2];c[dd>>2]=c[c[zd>>2]>>2];c[ie>>2]=0;c[ie+4>>2]=0;c[ie+8>>2]=0;c[ie+12>>2]=0;c[ie+16>>2]=0;c[ie+20>>2]=0;c[ie+24>>2]=0;c[ie+28>>2]=0;c[ie>>2]=c[Ec>>2];b[(c[Ec>>2]|0)+8>>1]=e[(c[Ec>>2]|0)+8>>1]&-49664|1;c[rf>>2]=Ob[c[(c[dd>>2]|0)+44>>2]&255](c[(c[tc>>2]|0)+16>>2]|0,ie,c[(c[pf>>2]|0)+8>>2]|0)|0;GI(c[lf>>2]|0,c[zd>>2]|0);if(c[ie+20>>2]|0)c[rf>>2]=c[ie+20>>2];Zt(c[Ec>>2]|0,d[H>>0]|0)|0;if(VH(c[Ec>>2]|0)|0){k=859;break c}break}case 154:{c[Vd>>2]=0;c[uc>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];if(!(a[(c[uc>>2]|0)+2>>0]|0)){c[Ad>>2]=c[c[(c[uc>>2]|0)+16>>2]>>2];c[ed>>2]=c[c[Ad>>2]>>2];c[rf>>2]=Tb[c[(c[ed>>2]|0)+36>>2]&255](c[(c[uc>>2]|0)+16>>2]|0)|0;GI(c[lf>>2]|0,c[Ad>>2]|0);if(!(c[rf>>2]|0))c[Vd>>2]=Tb[c[(c[ed>>2]|0)+40>>2]&255](c[(c[uc>>2]|0)+16>>2]|0)|0;if(c[Vd>>2]|0)k=9;else k=8}break}case 155:{c[Bd>>2]=c[(c[(c[pf>>2]|0)+16>>2]|0)+8>>2];c[gd>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0);c[rf>>2]=Zt(c[gd>>2]|0,1)|0;if(!(c[rf>>2]|0)){c[rf>>2]=Yb[c[(c[c[Bd>>2]>>2]|0)+76>>2]&255](c[Bd>>2]|0,c[(c[gd>>2]|0)+16>>2]|0)|0;GI(c[lf>>2]|0,c[Bd>>2]|0);Af=(c[lf>>2]|0)+88|0;b[Af>>1]=b[Af>>1]&-9}break}case 12:{c[Cd>>2]=c[(c[(c[pf>>2]|0)+16>>2]|0)+8>>2];if((c[Cd>>2]|0)!=0?(c[c[Cd>>2]>>2]|0)!=0:0){c[fd>>2]=c[c[Cd>>2]>>2];c[Pa>>2]=c[(c[pf>>2]|0)+8>>2];if(!(c[(c[fd>>2]|0)+52>>2]|0))break d;a[Re>>0]=a[(c[mf>>2]|0)+70>>0]|0;c[v>>2]=c[(c[lf>>2]|0)+12>>2];c[Ed>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);c[V>>2]=0;while(1){if((c[V>>2]|0)>=(c[Pa>>2]|0))break;c[(c[v>>2]|0)+(c[V>>2]<<2)>>2]=c[Ed>>2];c[Ed>>2]=(c[Ed>>2]|0)+40;c[V>>2]=(c[V>>2]|0)+1}a[(c[mf>>2]|0)+70>>0]=a[(c[pf>>2]|0)+3>>0]|0;c[rf>>2]=Wb[c[(c[fd>>2]|0)+52>>2]&255](c[Cd>>2]|0,c[Pa>>2]|0,c[v>>2]|0,he)|0;a[(c[mf>>2]|0)+70>>0]=a[Re>>0]|0;GI(c[lf>>2]|0,c[Cd>>2]|0);if((c[rf>>2]|0)==0?(c[(c[pf>>2]|0)+4>>2]|0)!=0:0){yf=he;j=c[yf>>2]|0;yf=c[yf+4>>2]|0;Af=nf;c[Af>>2]=j;c[Af+4>>2]=yf;Af=(c[mf>>2]|0)+32|0;c[Af>>2]=j;c[Af+4>>2]=yf}if((c[rf>>2]&255|0)==19?(d[(c[(c[pf>>2]|0)+16>>2]|0)+16>>0]|0)!=0:0){if((d[(c[pf>>2]|0)+3>>0]|0)==4){c[rf>>2]=0;break d}if((d[(c[pf>>2]|0)+3>>0]|0)==5)g=2;else g=d[(c[pf>>2]|0)+3>>0]|0;a[(c[lf>>2]|0)+86>>0]=g;break d}Af=(c[lf>>2]|0)+92|0;c[Af>>2]=(c[Af>>2]|0)+1;break d}c[rf>>2]=6;break}case 156:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;yf=rg(c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+4>>2]|0)|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=0;break}case 157:{c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;c[zb>>2]=c[(c[(c[mf>>2]|0)+16>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<4)+4>>2];c[ib>>2]=0;if((c[(c[pf>>2]|0)+12>>2]|0)!=0?(c[ib>>2]=rg(c[zb>>2]|0)|0,(c[ib>>2]|0)>>>0<(c[(c[pf>>2]|0)+12>>2]|0)>>>0):0)c[ib>>2]=c[(c[pf>>2]|0)+12>>2];yf=jJ(c[zb>>2]|0,c[ib>>2]|0)|0;Af=c[id>>2]|0;c[Af>>2]=yf;c[Af+4>>2]=((yf|0)<0)<<31>>31;break}case 158:{if((c[(c[mf>>2]|0)+176>>2]|0)!=0?((e[(c[lf>>2]|0)+88>>1]|0)>>>9&1|0)==0:0){if(c[(c[pf>>2]|0)+16>>2]|0)g=c[(c[pf>>2]|0)+16>>2]|0;else g=c[(c[lf>>2]|0)+168>>2]|0;c[kf>>2]=g;if(g){c[Ve>>2]=kJ(c[lf>>2]|0,c[kf>>2]|0)|0;Rb[c[(c[mf>>2]|0)+176>>2]&255](c[(c[mf>>2]|0)+180>>2]|0,c[Ve>>2]|0);Sf(c[mf>>2]|0,c[Ve>>2]|0)}}if(c[(c[pf>>2]|0)+8>>2]|0)k=15;break}default:{}}while(0);do if((k|0)==21){k=0;c[qf>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;if(c[(c[pf>>2]|0)+4>>2]|0){k=26;break c}if(!(c[(c[lf>>2]|0)+176>>2]|0)){k=26;break c}c[Gc>>2]=c[(c[lf>>2]|0)+176>>2];c[(c[lf>>2]|0)+176>>2]=c[(c[Gc>>2]|0)+4>>2];j=(c[lf>>2]|0)+184|0;c[j>>2]=(c[j>>2]|0)+-1;QH(c[mf>>2]|0,c[(c[lf>>2]|0)+92>>2]|0);c[qf>>2]=RH(c[Gc>>2]|0)|0;j=(c[mf>>2]|0)+32|0;yf=c[j+4>>2]|0;Af=nf;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;if((c[(c[pf>>2]|0)+8>>2]|0)==4)c[qf>>2]=(c[(c[(c[lf>>2]|0)+4>>2]|0)+((c[qf>>2]|0)*20|0)+8>>2]|0)-1;c[n>>2]=c[(c[lf>>2]|0)+4>>2];c[l>>2]=c[(c[lf>>2]|0)+8>>2];c[pf>>2]=(c[n>>2]|0)+((c[qf>>2]|0)*20|0)}else if((k|0)==50){k=0;c[id>>2]=UH(c[lf>>2]|0,c[pf>>2]|0)|0;b[(c[id>>2]|0)+8>>1]=2562;c[(c[id>>2]|0)+16>>2]=c[(c[pf>>2]|0)+16>>2];c[(c[id>>2]|0)+12>>2]=c[(c[pf>>2]|0)+4>>2];a[(c[id>>2]|0)+10>>0]=a[H>>0]|0;if((a[(c[pf>>2]|0)+3>>0]|0)!=0?(c[Qc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0),Af=c[Qc>>2]|0,(c[Af>>2]|0)!=0|(c[Af+4>>2]|0)!=0):0)b[(c[id>>2]|0)+8>>1]=2576}else if((k|0)==132){k=0;c[nc>>2]=c[(c[pf>>2]|0)+16>>2];c[id>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);j:do if((c[c[nc>>2]>>2]|0)!=(c[id>>2]|0)){c[c[nc>>2]>>2]=c[id>>2];c[X>>2]=(d[(c[nc>>2]|0)+26>>0]|0)-1;while(1){if((c[X>>2]|0)<0)break j;c[(c[nc>>2]|0)+28+(c[X>>2]<<2)>>2]=(c[l>>2]|0)+(((c[(c[pf>>2]|0)+8>>2]|0)+(c[X>>2]|0)|0)*40|0);c[X>>2]=(c[X>>2]|0)+-1}}while(0);b[(c[c[nc>>2]>>2]|0)+8>>1]=e[(c[c[nc>>2]>>2]|0)+8>>1]&-49664|1;a[(c[nc>>2]|0)+25>>0]=0;Af=nf;yf=c[Af+4>>2]|0;j=(c[mf>>2]|0)+32|0;c[j>>2]=c[Af>>2];c[j+4>>2]=yf;Ub[c[(c[(c[nc>>2]|0)+4>>2]|0)+12>>2]&255](c[nc>>2]|0,d[(c[nc>>2]|0)+26>>0]|0,(c[nc>>2]|0)+28|0);j=(c[mf>>2]|0)+32|0;yf=c[j+4>>2]|0;Af=nf;c[Af>>2]=c[j>>2];c[Af+4>>2]=yf;if(a[(c[nc>>2]|0)+25>>0]|0){if(c[(c[nc>>2]|0)+20>>2]|0){Af=c[lf>>2]|0;c[Ae>>2]=ae(c[c[nc>>2]>>2]|0)|0;SH(Af,19255,Ae);c[rf>>2]=c[(c[nc>>2]|0)+20>>2]}bI(c[lf>>2]|0,c[(c[nc>>2]|0)+16>>2]|0,c[(c[pf>>2]|0)+4>>2]|0)}if((e[(c[id>>2]|0)+8>>1]&18|0)!=0?(Zt(c[c[nc>>2]>>2]|0,d[H>>0]|0)|0,(VH(c[c[nc>>2]>>2]|0)|0)!=0):0){k=859;break c}}else if((k|0)==438){k=0;if((e[(c[lf>>2]|0)+88>>1]|0)>>>3&1){c[rf>>2]=516;break}c[Ya>>2]=0;c[Tc>>2]=0;c[wb>>2]=c[(c[pf>>2]|0)+8>>2];c[ia>>2]=c[(c[pf>>2]|0)+12>>2];c[Bc>>2]=(c[(c[mf>>2]|0)+16>>2]|0)+(c[ia>>2]<<4);c[Dd>>2]=c[(c[Bc>>2]|0)+4>>2];if((d[c[pf>>2]>>0]|0)==55){c[Se>>2]=4|d[(c[pf>>2]|0)+3>>0]&8;if((d[(c[(c[Bc>>2]|0)+12>>2]|0)+76>>0]|0)<(d[(c[lf>>2]|0)+87>>0]|0))a[(c[lf>>2]|0)+87>>0]=a[(c[(c[Bc>>2]|0)+12>>2]|0)+76>>0]|0}else c[Se>>2]=0;if((d[(c[pf>>2]|0)+3>>0]&16|0)!=0?(c[Pc>>2]=(c[l>>2]|0)+((c[wb>>2]|0)*40|0),wx(c[Pc>>2]|0)|0,c[wb>>2]=c[c[Pc>>2]>>2],(c[wb>>2]|0)<2):0){k=446;break c}g=c[pf>>2]|0;if((a[(c[pf>>2]|0)+1>>0]|0)!=-6){if((a[g+1>>0]|0)==-14)c[Ya>>2]=c[(c[pf>>2]|0)+16>>2]}else{c[Tc>>2]=c[g+16>>2];c[Ya>>2]=(e[(c[Tc>>2]|0)+6>>1]|0)+(e[(c[Tc>>2]|0)+8>>1]|0)}c[qc>>2]=tI(c[lf>>2]|0,c[(c[pf>>2]|0)+4>>2]|0,c[Ya>>2]|0,c[ia>>2]|0,0)|0;if(!(c[qc>>2]|0)){k=860;break a}a[(c[qc>>2]|0)+2>>0]=1;k=(c[qc>>2]|0)+5|0;a[k>>0]=a[k>>0]&-5|4;c[(c[qc>>2]|0)+8>>2]=c[wb>>2];c[rf>>2]=uI(c[Dd>>2]|0,c[wb>>2]|0,c[Se>>2]|0,c[Tc>>2]|0,c[(c[qc>>2]|0)+16>>2]|0)|0;c[(c[qc>>2]|0)+24>>2]=c[Tc>>2];a[(c[qc>>2]|0)+4>>0]=(a[(c[pf>>2]|0)+1>>0]|0)!=-6;k=453}else if((k|0)==609){k=0;c[Sb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[be>>2]=1;g=c[Sb>>2]|0;if((d[c[Sb>>2]>>0]|0)==1)c[rf>>2]=II(g,be)|0;else{c[kc>>2]=c[g+16>>2];c[rf>>2]=JI(c[kc>>2]|0,be)|0;a[(c[Sb>>2]|0)+3>>0]=0;c[(c[Sb>>2]|0)+56>>2]=0}a[(c[Sb>>2]|0)+2>>0]=c[be>>2];if(c[be>>2]|0)k=15}else if((k|0)==615){c[Vb>>2]=c[(c[(c[lf>>2]|0)+56>>2]|0)+(c[(c[pf>>2]|0)+4>>2]<<2)>>2];c[ce>>2]=c[(c[pf>>2]|0)+12>>2];c[rf>>2]=Yb[c[(c[pf>>2]|0)+16>>2]&255](c[(c[Vb>>2]|0)+16>>2]|0,ce)|0;k=616}else if((k|0)==740){k=0;c[pc>>2]=c[(c[pf>>2]|0)+16>>2];c[Zc>>2]=(c[l>>2]|0)+((c[(c[pf>>2]|0)+12>>2]|0)*40|0);k:do if((c[(c[pc>>2]|0)+8>>2]|0)!=(c[Zc>>2]|0)){c[(c[pc>>2]|0)+8>>2]=c[Zc>>2];c[_>>2]=(d[(c[pc>>2]|0)+26>>0]|0)-1;while(1){if((c[_>>2]|0)<0)break k;c[(c[pc>>2]|0)+28+(c[_>>2]<<2)>>2]=(c[l>>2]|0)+(((c[(c[pf>>2]|0)+8>>2]|0)+(c[_>>2]|0)|0)*40|0);c[_>>2]=(c[_>>2]|0)+-1}}while(0);Af=(c[Zc>>2]|0)+12|0;c[Af>>2]=(c[Af>>2]|0)+1;AF(pe,c[mf>>2]|0,1);c[c[pc>>2]>>2]=pe;a[(c[pc>>2]|0)+25>>0]=0;a[(c[pc>>2]|0)+24>>0]=0;Ub[c[(c[(c[pc>>2]|0)+4>>2]|0)+12>>2]&255](c[pc>>2]|0,d[(c[pc>>2]|0)+26>>0]|0,(c[pc>>2]|0)+28|0);if(a[(c[pc>>2]|0)+25>>0]|0){if(c[(c[pc>>2]|0)+20>>2]|0){Af=c[lf>>2]|0;c[Ie>>2]=ae(pe)|0;SH(Af,19255,Ie);c[rf>>2]=c[(c[pc>>2]|0)+20>>2]}Ug(pe)}if((a[(c[pc>>2]|0)+24>>0]|0)!=0?(c[_>>2]=c[(c[pf>>2]|0)+-20+4>>2],(c[_>>2]|0)!=0):0)eh((c[l>>2]|0)+((c[_>>2]|0)*40|0)|0,1,0)}while(0);do if((k|0)==15){k=0;c[pf>>2]=(c[n>>2]|0)+(((c[(c[pf>>2]|0)+8>>2]|0)-1|0)*20|0)}else if((k|0)==453){k=0;vI(c[(c[qc>>2]|0)+16>>2]|0,d[(c[pf>>2]|0)+3>>0]&3)}else if((k|0)==616){c[(c[Vb>>2]|0)+56>>2]=0;g=(c[Vb>>2]|0)+2|0;if(!(c[ce>>2]|0)){a[g>>0]=0;k=(c[lf>>2]|0)+108+(d[(c[pf>>2]|0)+3>>0]<<2)|0;c[k>>2]=(c[k>>2]|0)+1;k=8;break}else{a[g>>0]=1;k=9;break}}while(0);if((k|0)==8){c[pf>>2]=(c[n>>2]|0)+(((c[(c[pf>>2]|0)+8>>2]|0)-1|0)*20|0);k=9}if((k|0)==9){k=0;if(c[(c[mf>>2]|0)+240>>2]|0)break b;if(((c[(c[mf>>2]|0)+296>>2]|0)!=0?(c[of>>2]|0)>>>0>=(c[db>>2]|0)>>>0:0)?(c[db>>2]=(c[of>>2]|0)+(c[(c[mf>>2]|0)+304>>2]|0)-(((c[of>>2]|0)>>>0)%((c[(c[mf>>2]|0)+304>>2]|0)>>>0)|0),(Tb[c[(c[mf>>2]|0)+296>>2]&255](c[(c[mf>>2]|0)+300>>2]|0)|0)!=0):0){k=13;break}}c[pf>>2]=(c[pf>>2]|0)+20}switch(k|0){case 13:{c[rf>>2]=9;break a}case 26:{c[(c[lf>>2]|0)+80>>2]=c[(c[pf>>2]|0)+4>>2];a[(c[lf>>2]|0)+86>>0]=c[(c[pf>>2]|0)+8>>2];c[(c[lf>>2]|0)+76>>2]=c[qf>>2];if(c[(c[lf>>2]|0)+80>>2]|0){if(a[(c[pf>>2]|0)+3>>0]|0)c[wf>>2]=c[6408+((d[(c[pf>>2]|0)+3>>0]|0)-1<<2)>>2];else c[wf>>2]=0;c[vf>>2]=40646;if((c[wf>>2]|0)!=0?(c[(c[pf>>2]|0)+16>>2]|0)!=0:0){Af=c[lf>>2]|0;yf=c[(c[pf>>2]|0)+16>>2]|0;c[ze>>2]=c[wf>>2];c[ze+4>>2]=yf;SH(Af,40670,ze)}else k=33;do if((k|0)==33){g=c[lf>>2]|0;if(c[(c[pf>>2]|0)+16>>2]|0){c[sf>>2]=c[(c[pf>>2]|0)+16>>2];SH(g,19255,sf);break}else{c[tf>>2]=c[wf>>2];SH(g,40695,tf);break}}while(0);yf=c[(c[pf>>2]|0)+4>>2]|0;Af=c[vf>>2]|0;vf=c[(c[lf>>2]|0)+168>>2]|0;wf=c[(c[lf>>2]|0)+44>>2]|0;c[uf>>2]=c[qf>>2];c[uf+4>>2]=vf;c[uf+8>>2]=wf;Rd(yf,Af,uf)}c[rf>>2]=TH(c[lf>>2]|0)|0;if((c[rf>>2]|0)==5){c[rf>>2]=5;c[(c[lf>>2]|0)+80>>2]=5;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}else{c[rf>>2]=(c[(c[lf>>2]|0)+80>>2]|0)!=0?1:101;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}}case 74:{c[rf>>2]=9;break a}case 77:{c[(c[lf>>2]|0)+72>>2]=(c[(c[lf>>2]|0)+72>>2]|0)+2|1;Af=(c[l>>2]|0)+((c[(c[pf>>2]|0)+4>>2]|0)*40|0)|0;c[(c[lf>>2]|0)+20>>2]=Af;c[Wc>>2]=Af;c[S>>2]=0;while(1){if((c[S>>2]|0)>=(c[(c[pf>>2]|0)+8>>2]|0))break;if((e[(c[Wc>>2]|0)+((c[S>>2]|0)*40|0)+8>>1]&4096|0)!=0?(_g((c[Wc>>2]|0)+((c[S>>2]|0)*40|0)|0)|0)!=0:0){k=860;break a}YH((c[Wc>>2]|0)+((c[S>>2]|0)*40|0)|0)|0;c[S>>2]=(c[S>>2]|0)+1}if(a[(c[mf>>2]|0)+65>>0]|0){k=860;break a}c[(c[lf>>2]|0)+76>>2]=(((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0)+1;c[rf>>2]=100;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}case 165:{c[rf>>2]=20;k=861;break}case 367:{c[(c[lf>>2]|0)+76>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;a[(c[mf>>2]|0)+63>>0]=0;c[rf>>2]=5;c[(c[lf>>2]|0)+80>>2]=5;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}case 391:{qI(c[mf>>2]|0,516);a[(c[mf>>2]|0)+63>>0]=1;break}case 395:{Af=WH(c[lf>>2]|0,1)|0;c[rf>>2]=Af;if(Af){Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}else{a[(c[mf>>2]|0)+63>>0]=c[E>>2];break}}case 407:{c[rf>>2]=8;k=861;break}case 410:{c[(c[lf>>2]|0)+76>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;c[(c[lf>>2]|0)+80>>2]=c[rf>>2];Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}case 446:{c[rf>>2]=Lj(77597)|0;k=861;break}case 542:{c[rf>>2]=13;k=861;break}case 551:{c[rf>>2]=13;k=861;break}case 804:{Tb[c[(c[bd>>2]|0)+28>>2]&255](c[sd>>2]|0)|0;k=860;break a}case 858:{Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}case 859:{SH(c[lf>>2]|0,19034,Ne);c[rf>>2]=18;break a}}if((k|0)==861){if(a[(c[mf>>2]|0)+65>>0]|0)c[rf>>2]=7;if((c[rf>>2]|0)==3082)break a;Af=c[lf>>2]|0;c[Pe>>2]=ih(c[rf>>2]|0)|0;SH(Af,19255,Pe);break a}if((TH(c[lf>>2]|0)|0)==5){c[(c[lf>>2]|0)+76>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;a[(c[mf>>2]|0)+63>>0]=1-(c[E>>2]|0);c[rf>>2]=5;c[(c[lf>>2]|0)+80>>2]=5;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}rI(c[mf>>2]|0);if(!(c[(c[lf>>2]|0)+80>>2]|0)){c[rf>>2]=101;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}else{c[rf>>2]=1;Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}}while(0);c[rf>>2]=(d[(c[mf>>2]|0)+65>>0]|0)!=0?7:9;c[(c[lf>>2]|0)+80>>2]=c[rf>>2];Af=c[lf>>2]|0;c[Qe>>2]=ih(c[rf>>2]|0)|0;SH(Af,19255,Qe)}while(0);if((k|0)==860){jh(c[mf>>2]|0);SH(c[lf>>2]|0,32392,Oe);c[rf>>2]=7}c[(c[lf>>2]|0)+80>>2]=c[rf>>2];Af=c[rf>>2]|0;wf=c[(c[lf>>2]|0)+168>>2]|0;yf=c[(c[lf>>2]|0)+44>>2]|0;c[Me>>2]=((c[pf>>2]|0)-(c[n>>2]|0)|0)/20|0;c[Me+4>>2]=wf;c[Me+8>>2]=yf;Rd(Af,41278,Me);TH(c[lf>>2]|0)|0;if((c[rf>>2]|0)==3082)jh(c[mf>>2]|0);c[rf>>2]=1;if((d[fe>>0]|0)<=0){Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}rj(c[mf>>2]|0,(d[fe>>0]|0)-1|0);Af=nf;vf=Af;vf=c[vf>>2]|0;Af=Af+4|0;Af=c[Af>>2]|0;yf=c[mf>>2]|0;yf=yf+32|0;wf=yf;c[wf>>2]=vf;yf=yf+4|0;c[yf>>2]=Af;yf=c[of>>2]|0;Af=c[lf>>2]|0;Af=Af+108|0;Af=Af+16|0;wf=c[Af>>2]|0;yf=wf+yf|0;c[Af>>2]=yf;Af=c[rf>>2]|0;i=xf;return Af|0}function LH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;b=h+16|0;g=h+12|0;d=h+8|0;f=h+4|0;e=h;c[b>>2]=a;c[g>>2]=0;c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[f>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)+4>>2];if((c[f>>2]|0)!=0?(kg(c[f>>2]|0),c[e>>2]=NH(Of(c[f>>2]|0)|0)|0,((c[e>>2]|0)>0?(c[(c[b>>2]|0)+216>>2]|0)!=0:0)&(c[g>>2]|0)==0):0)c[g>>2]=Wb[c[(c[b>>2]|0)+216>>2]&255](c[(c[b>>2]|0)+220>>2]|0,c[b>>2]|0,c[(c[(c[b>>2]|0)+16>>2]|0)+(c[d>>2]<<4)>>2]|0,c[e>>2]|0)|0;c[d>>2]=(c[d>>2]|0)+1}i=h;return c[g>>2]|0}function MH(b){b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=b;c[e>>2]=c[c[d>>2]>>2];c[f>>2]=c[(c[d>>2]|0)+80>>2];b=c[e>>2]|0;if(!(c[(c[d>>2]|0)+44>>2]|0)){jg(b,c[f>>2]|0);f=c[f>>2]|0;i=g;return f|0}b=b+66|0;a[b>>0]=(a[b>>0]|0)+1<<24>>24;Sj();if(!(c[(c[e>>2]|0)+236>>2]|0)){b=Vh(c[e>>2]|0)|0;c[(c[e>>2]|0)+236>>2]=b}Wh(c[(c[e>>2]|0)+236>>2]|0,-1,c[(c[d>>2]|0)+44>>2]|0,1,-1);Tj();d=(c[e>>2]|0)+66|0;a[d>>0]=(a[d>>0]|0)+-1<<24>>24;c[(c[e>>2]|0)+52>>2]=c[f>>2];f=c[f>>2]|0;i=g;return f|0}function NH(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=OH(c[(c[d>>2]|0)+216>>2]|0)|0;i=b;return a|0}function OH(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[b>>2]=a;c[d>>2]=0;if(!(c[b>>2]|0)){d=c[d>>2]|0;i=e;return d|0}c[d>>2]=c[(c[b>>2]|0)+12>>2];c[(c[b>>2]|0)+12>>2]=0;d=c[d>>2]|0;i=e;return d|0}function PH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=i;i=i+32|0;b=h+16|0;f=h+12|0;e=h+8|0;d=h+4|0;g=h;c[b>>2]=a;if(!(c[(c[b>>2]|0)+100>>2]|0)){i=h;return}c[e>>2]=c[c[b>>2]>>2];c[d>>2]=c[(c[e>>2]|0)+16>>2];c[g>>2]=c[(c[e>>2]|0)+20>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[g>>2]|0))break;if(((c[f>>2]|0)!=1?(c[(c[b>>2]|0)+100>>2]&1<>2]|0)!=0:0)?(c[(c[d>>2]|0)+(c[f>>2]<<4)+4>>2]|0)!=0:0)kg(c[(c[d>>2]|0)+(c[f>>2]<<4)+4>>2]|0);c[f>>2]=(c[f>>2]|0)+1}i=h;return}function QH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[(c[f>>2]|0)+80>>2]=c[e>>2];b=(c[f>>2]|0)+84|0;c[b>>2]=(c[b>>2]|0)+(c[e>>2]|0);i=d;return}function RH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=i;i=i+16|0;b=d+4|0;e=d;c[b>>2]=a;c[e>>2]=c[c[b>>2]>>2];kM(c[e>>2]|0);c[(c[e>>2]|0)+200>>2]=c[(c[b>>2]|0)+20>>2];c[(c[e>>2]|0)+196>>2]=c[(c[b>>2]|0)+56>>2];c[(c[e>>2]|0)+4>>2]=c[(c[b>>2]|0)+8>>2];c[(c[e>>2]|0)+32>>2]=c[(c[b>>2]|0)+48>>2];c[(c[e>>2]|0)+8>>2]=c[(c[b>>2]|0)+16>>2];c[(c[e>>2]|0)+28>>2]=c[(c[b>>2]|0)+52>>2];c[(c[e>>2]|0)+56>>2]=c[(c[b>>2]|0)+24>>2];c[(c[e>>2]|0)+36>>2]=c[(c[b>>2]|0)+40>>2];g=(c[b>>2]|0)+32|0;f=c[g+4>>2]|0;a=(c[c[e>>2]>>2]|0)+32|0;c[a>>2]=c[g>>2];c[a+4>>2]=f;c[(c[e>>2]|0)+92>>2]=c[(c[b>>2]|0)+68>>2];c[(c[c[e>>2]>>2]|0)+80>>2]=c[(c[b>>2]|0)+72>>2];i=d;return c[(c[b>>2]|0)+44>>2]|0}function SH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;f=e+20|0;h=e+16|0;g=e;c[f>>2]=a;c[h>>2]=b;Sf(c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+44>>2]|0);c[g>>2]=d;b=Zw(c[c[f>>2]>>2]|0,c[h>>2]|0,g)|0;c[(c[f>>2]|0)+44>>2]=b;i=e;return}function TH(b){b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;k=o+24|0;l=o+20|0;h=o+16|0;m=o+12|0;g=o+8|0;n=o+4|0;f=o;c[l>>2]=b;c[m>>2]=c[c[l>>2]>>2];if(a[(c[m>>2]|0)+65>>0]|0)c[(c[l>>2]|0)+80>>2]=7;if(c[(c[l>>2]|0)+200>>2]|0)kR(c[(c[l>>2]|0)+200>>2]|0,0,c[(c[l>>2]|0)+196>>2]|0)|0;cM(c[l>>2]|0);if((c[(c[l>>2]|0)+40>>2]|0)!=-1108210269){c[k>>2]=0;n=c[k>>2]|0;i=o;return n|0}if((c[(c[l>>2]|0)+76>>2]|0)>=0?((e[(c[l>>2]|0)+88>>1]|0)>>>7&1|0)!=0:0){c[n>>2]=0;PH(c[l>>2]|0);c[g>>2]=c[(c[l>>2]|0)+80>>2]&255;if((c[g>>2]|0)==7|(c[g>>2]|0)==10|(c[g>>2]|0)==9)b=1;else b=(c[g>>2]|0)==13;c[f>>2]=b&1;do if((c[f>>2]|0)!=0?(c[g>>2]|0)!=9?1:((e[(c[l>>2]|0)+88>>1]|0)>>>6&1|0)==0:0){if((c[g>>2]|0)==7|(c[g>>2]|0)==13?((e[(c[l>>2]|0)+88>>1]|0)>>>5&1|0)!=0:0){c[n>>2]=2;break}qI(c[m>>2]|0,516);rI(c[m>>2]|0);a[(c[m>>2]|0)+63>>0]=1;c[(c[l>>2]|0)+92>>2]=0}while(0);if(!(c[(c[l>>2]|0)+80>>2]|0))WH(c[l>>2]|0,0)|0;if((c[(c[m>>2]|0)+308>>2]|0)>0?(c[(c[m>>2]|0)+332>>2]|0)==0:0)j=38;else if((d[(c[m>>2]|0)+63>>0]|0)!=0?(c[(c[m>>2]|0)+156>>2]|0)==(((e[(c[l>>2]|0)+88>>1]|0)>>>6&1|0)==0|0):0){if((c[(c[l>>2]|0)+80>>2]|0)!=0?(c[f>>2]|0)!=0?1:(d[(c[l>>2]|0)+86>>0]|0)!=3:0){qI(c[m>>2]|0,0);c[(c[l>>2]|0)+92>>2]=0}else j=25;do if((j|0)==25){c[h>>2]=WH(c[l>>2]|0,1)|0;do if(c[h>>2]|0){if(!((e[(c[l>>2]|0)+88>>1]|0)>>>6&1)){c[h>>2]=787;break}c[k>>2]=1;n=c[k>>2]|0;i=o;return n|0}else c[h>>2]=dM(c[m>>2]|0,c[l>>2]|0)|0;while(0);if((c[h>>2]|0)==5?((e[(c[l>>2]|0)+88>>1]|0)>>>6&1|0)!=0:0){c[k>>2]=5;n=c[k>>2]|0;i=o;return n|0}if(c[h>>2]|0){c[(c[l>>2]|0)+80>>2]=c[h>>2];qI(c[m>>2]|0,0);c[(c[l>>2]|0)+92>>2]=0;break}else{g=(c[m>>2]|0)+512|0;c[g>>2]=0;c[g+4>>2]=0;g=(c[m>>2]|0)+520|0;c[g>>2]=0;c[g+4>>2]=0;g=(c[m>>2]|0)+24|0;c[g>>2]=c[g>>2]&-16777217;sj(c[m>>2]|0);break}}while(0);c[(c[m>>2]|0)+504>>2]=0}else j=38;do if((j|0)==38?(c[n>>2]|0)==0:0){if((c[(c[l>>2]|0)+80>>2]|0)!=0?(d[(c[l>>2]|0)+86>>0]|0)!=3:0)if((d[(c[l>>2]|0)+86>>0]|0)==2){c[n>>2]=2;break}else{qI(c[m>>2]|0,516);rI(c[m>>2]|0);a[(c[m>>2]|0)+63>>0]=1;c[(c[l>>2]|0)+92>>2]=0;break}c[n>>2]=1}while(0);if((c[n>>2]|0)!=0?(c[h>>2]=XH(c[l>>2]|0,c[n>>2]|0)|0,(c[h>>2]|0)!=0):0){if(!((c[(c[l>>2]|0)+80>>2]|0)!=0?(c[(c[l>>2]|0)+80>>2]&255|0)!=19:0)){c[(c[l>>2]|0)+80>>2]=c[h>>2];Sf(c[m>>2]|0,c[(c[l>>2]|0)+44>>2]|0);c[(c[l>>2]|0)+44>>2]=0}qI(c[m>>2]|0,516);rI(c[m>>2]|0);a[(c[m>>2]|0)+63>>0]=1;c[(c[l>>2]|0)+92>>2]=0}if((e[(c[l>>2]|0)+88>>1]|0)>>>2&1){b=c[m>>2]|0;if((c[n>>2]|0)!=2)QH(b,c[(c[l>>2]|0)+92>>2]|0);else QH(b,0);c[(c[l>>2]|0)+92>>2]=0}}if((c[(c[l>>2]|0)+76>>2]|0)>=0){n=(c[m>>2]|0)+148|0;c[n>>2]=(c[n>>2]|0)+-1;if(!((e[(c[l>>2]|0)+88>>1]|0)>>>6&1)){n=(c[m>>2]|0)+156|0;c[n>>2]=(c[n>>2]|0)+-1}if((e[(c[l>>2]|0)+88>>1]|0)>>>7&1){n=(c[m>>2]|0)+152|0;c[n>>2]=(c[n>>2]|0)+-1}}c[(c[l>>2]|0)+40>>2]=1369188723;if(a[(c[m>>2]|0)+65>>0]|0)c[(c[l>>2]|0)+80>>2]=7;c[k>>2]=(c[(c[l>>2]|0)+80>>2]|0)==5?5:0;n=c[k>>2]|0;i=o;return n|0}function UH(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;f=h+12|0;k=h+8|0;j=h+4|0;g=h;c[k>>2]=a;c[j>>2]=d;c[g>>2]=(c[(c[k>>2]|0)+8>>2]|0)+((c[(c[j>>2]|0)+8>>2]|0)*40|0);a=c[g>>2]|0;if((e[(c[g>>2]|0)+8>>1]|0)&9312){c[f>>2]=bM(a)|0;k=c[f>>2]|0;i=h;return k|0}else{b[a+8>>1]=4;c[f>>2]=c[g>>2];k=c[f>>2]|0;i=h;return k|0}return 0}function VH(a){a=a|0;var b=0,d=0,f=0,g=0;g=i;i=i+16|0;b=g+8|0;d=g+4|0;f=g;c[d>>2]=a;if(!((e[(c[d>>2]|0)+8>>1]|0)&18)){c[b>>2]=0;a=c[b>>2]|0;i=g;return a|0}c[f>>2]=c[(c[d>>2]|0)+12>>2];if((e[(c[d>>2]|0)+8>>1]|0)&16384)c[f>>2]=(c[f>>2]|0)+(c[c[d>>2]>>2]|0);c[b>>2]=(c[f>>2]|0)>(c[(c[(c[d>>2]|0)+32>>2]|0)+88>>2]|0)&1;a=c[b>>2]|0;i=g;return a|0}function WH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;j=l;e=l+16|0;f=l+12|0;g=l+8|0;h=l+4|0;c[f>>2]=b;c[g>>2]=d;c[h>>2]=c[c[f>>2]>>2];if(!((c[g>>2]|0)!=0?(d=(c[h>>2]|0)+512|0,b=(c[h>>2]|0)+520|0,b=gR(c[d>>2]|0,c[d+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0,d=C,(d|0)>0|(d|0)==0&b>>>0>0):0))k=3;do if((k|0)==3){if((c[g>>2]|0)==0?(k=(c[f>>2]|0)+144|0,b=c[k+4>>2]|0,(b|0)>0|(b|0)==0&(c[k>>2]|0)>>>0>0):0)break;c[e>>2]=0;k=c[e>>2]|0;i=l;return k|0}while(0);c[(c[f>>2]|0)+80>>2]=787;a[(c[f>>2]|0)+86>>0]=2;SH(c[f>>2]|0,36044,j);c[e>>2]=1;k=c[e>>2]|0;i=l;return k|0}function XH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;d=m+28|0;e=m+24|0;f=m+20|0;k=m+16|0;g=m+12|0;h=m+8|0;l=m+4|0;j=m;c[d>>2]=a;c[e>>2]=b;c[f>>2]=c[c[d>>2]>>2];c[k>>2]=0;if(!(c[(c[f>>2]|0)+504>>2]|0)){l=c[k>>2]|0;i=m;return l|0}if(!(c[(c[d>>2]|0)+104>>2]|0)){l=c[k>>2]|0;i=m;return l|0}c[h>>2]=(c[(c[d>>2]|0)+104>>2]|0)-1;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;c[l>>2]=0;c[j>>2]=c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+4>>2];if(c[j>>2]|0){if((c[e>>2]|0)==2)c[l>>2]=pI(c[j>>2]|0,2,c[h>>2]|0)|0;if(!(c[l>>2]|0))c[l>>2]=pI(c[j>>2]|0,1,c[h>>2]|0)|0;if(!(c[k>>2]|0))c[k>>2]=c[l>>2]}c[g>>2]=(c[g>>2]|0)+1}l=(c[f>>2]|0)+504|0;c[l>>2]=(c[l>>2]|0)+-1;c[(c[d>>2]|0)+104>>2]=0;if(!(c[k>>2]|0)){if((c[e>>2]|0)==2)c[k>>2]=nI(c[f>>2]|0,2,c[h>>2]|0)|0;if(!(c[k>>2]|0))c[k>>2]=nI(c[f>>2]|0,1,c[h>>2]|0)|0}if((c[e>>2]|0)!=2){l=c[k>>2]|0;i=m;return l|0}l=(c[d>>2]|0)+152|0;j=c[l+4>>2]|0;a=(c[f>>2]|0)+512|0;c[a>>2]=c[l>>2];c[a+4>>2]=j;a=(c[d>>2]|0)+160|0;j=c[a+4>>2]|0;l=(c[f>>2]|0)+520|0;c[l>>2]=c[a>>2];c[l+4>>2]=j;l=c[k>>2]|0;i=m;return l|0}function YH(a){a=a|0;var b=0,d=0,f=0;f=i;i=i+16|0;b=f+4|0;d=f;c[d>>2]=a;if(((e[(c[d>>2]|0)+8>>1]|0)&514|0)!=2){c[b>>2]=0;a=c[b>>2]|0;i=f;return a|0}else{c[b>>2]=aM(c[d>>2]|0)|0;a=c[b>>2]|0;i=f;return a|0}return 0}function ZH(a){a=a|0;var d=0,f=0,g=0;g=i;i=i+16|0;d=g+4|0;f=g;c[f>>2]=a;a=e[(c[f>>2]|0)+8>>1]|0;do if(!((e[(c[f>>2]|0)+8>>1]|0)&12))if(a&18){b[d>>1]=$L(c[f>>2]|0)|0;break}else{b[d>>1]=0;break}else b[d>>1]=a&12;while(0);i=g;return b[d>>1]|0}function _H(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;e=j+20|0;f=j+16|0;g=j+8|0;h=j;c[f>>2]=a;k=g;c[k>>2]=b;c[k+4>>2]=d;b=c[f>>2]|0;k=c[b+4>>2]|0;a=h;c[a>>2]=c[b>>2];c[a+4>>2]=k;a=g;k=c[a+4>>2]|0;b=h;d=c[b+4>>2]|0;if((k|0)>0|(k|0)==0&(c[a>>2]|0)>>>0>=0){if((d|0)>0|(d|0)==0&(c[b>>2]|0)>>>0>0?(h,h=fR(-1,2147483647,c[h>>2]|0,c[h+4>>2]|0)|0,d=C,k=g,a=c[k+4>>2]|0,(d|0)<(a|0)|((d|0)==(a|0)?h>>>0<(c[k>>2]|0)>>>0:0)):0){c[e>>2]=1;k=c[e>>2]|0;i=j;return k|0}}else if((d|0)<0?(h,h=gR(c[h>>2]|0,c[h+4>>2]|0,-1,2147483647)|0,h=fR(0,0,h|0,C|0)|0,d=C,k=g,k=gR(c[k>>2]|0,c[k+4>>2]|0,1,0)|0,a=C,(d|0)>(a|0)|(d|0)==(a|0)&h>>>0>k>>>0):0){c[e>>2]=1;k=c[e>>2]|0;i=j;return k|0}h=g;k=c[f>>2]|0;g=k;h=gR(c[g>>2]|0,c[g+4>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0;c[k>>2]=h;c[k+4>>2]=C;c[e>>2]=0;k=c[e>>2]|0;i=j;return k|0}function $H(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;e=h+12|0;f=h+8|0;g=h;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a=g;b=c[f>>2]|0;if(!((c[a>>2]|0)==0?(c[a+4>>2]|0)==-2147483648:0)){g=fR(0,0,c[g>>2]|0,c[g+4>>2]|0)|0;c[e>>2]=_H(b,g,C)|0;g=c[e>>2]|0;i=h;return g|0}a=b;d=c[a+4>>2]|0;if((d|0)>0|(d|0)==0&(c[a>>2]|0)>>>0>=0){c[e>>2]=1;g=c[e>>2]|0;i=h;return g|0}else{a=g;g=c[f>>2]|0;f=g;f=fR(c[f>>2]|0,c[f+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;c[g>>2]=f;c[g+4>>2]=C;c[e>>2]=0;g=c[e>>2]|0;i=h;return g|0}return 0}function aI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+64|0;e=n+60|0;f=n+56|0;g=n+48|0;o=n+40|0;j=n+32|0;h=n+24|0;l=n+16|0;k=n+8|0;m=n;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=c[f>>2]|0;b=c[d+4>>2]|0;a=o;c[a>>2]=c[d>>2];c[a+4>>2]=b;a=o;a=pR(c[a>>2]|0,c[a+4>>2]|0,0,1)|0;b=j;c[b>>2]=a;c[b+4>>2]=C;b=o;b=qR(c[b>>2]|0,c[b+4>>2]|0,0,1)|0;a=h;c[a>>2]=b;c[a+4>>2]=C;a=g;a=pR(c[a>>2]|0,c[a+4>>2]|0,0,1)|0;b=l;c[b>>2]=a;c[b+4>>2]=C;b=g;b=qR(c[b>>2]|0,c[b+4>>2]|0,0,1)|0;a=k;c[a>>2]=b;c[a+4>>2]=C;a=j;b=l;b=(c[b>>2]|0)==0&(c[b+4>>2]|0)==0;do if((c[a>>2]|0)==0&(c[a+4>>2]|0)==0){if(!b){o=h;l=rR(c[o>>2]|0,c[o+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0;o=m;c[o>>2]=l;c[o+4>>2]=C;break}m=g;o=c[f>>2]|0;l=o;m=rR(c[l>>2]|0,c[l+4>>2]|0,c[m>>2]|0,c[m+4>>2]|0)|0;c[o>>2]=m;c[o+4>>2]=C;c[e>>2]=0;o=c[e>>2]|0;i=n;return o|0}else{if(b){o=j;l=k;l=rR(c[o>>2]|0,c[o+4>>2]|0,c[l>>2]|0,c[l+4>>2]|0)|0;o=m;c[o>>2]=l;c[o+4>>2]=C;break}c[e>>2]=1; -o=c[e>>2]|0;i=n;return o|0}while(0);j=m;g=c[j+4>>2]|0;o=m;l=c[o+4>>2]|0;if((g|0)<-1|(g|0)==-1&(c[j>>2]|0)>>>0<2147483648|((l|0)>0|(l|0)==0&(c[o>>2]|0)>>>0>=2147483648)){c[e>>2]=1;o=c[e>>2]|0;i=n;return o|0}o=m;o=rR(c[o>>2]|0,c[o+4>>2]|0,0,1)|0;l=m;c[l>>2]=o;c[l+4>>2]=C;l=h;o=k;o=rR(c[l>>2]|0,c[l+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;if(_H(m,o,C)|0){c[e>>2]=1;o=c[e>>2]|0;i=n;return o|0}else{l=m;m=c[l+4>>2]|0;o=c[f>>2]|0;c[o>>2]=c[l>>2];c[o+4>>2]=m;c[e>>2]=0;o=c[e>>2]|0;i=n;return o|0}return 0}function bI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[j>>2]=(c[e>>2]|0)+204;a:while(1){if(!(c[c[j>>2]>>2]|0))break;c[h>>2]=c[c[j>>2]>>2];do if((c[f>>2]|0)>=0){if((c[c[h>>2]>>2]|0)==(c[f>>2]|0)){if((c[(c[h>>2]|0)+4>>2]|0)>31)break;if(!(c[g>>2]&1<>2]|0)+4>>2]))break}c[j>>2]=(c[h>>2]|0)+16;continue a}while(0);if(c[(c[h>>2]|0)+12>>2]|0)Qb[c[(c[h>>2]|0)+12>>2]&255](c[(c[h>>2]|0)+8>>2]|0);c[c[j>>2]>>2]=c[(c[h>>2]|0)+16>>2];Sf(c[c[e>>2]>>2]|0,c[h>>2]|0)}i=k;return}function cI(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;f=o+24|0;g=o+20|0;j=o+16|0;k=o+12|0;m=o+8|0;n=o+4|0;l=o;c[g>>2]=a;c[j>>2]=b;c[k>>2]=d;c[m>>2]=e[(c[g>>2]|0)+8>>1];c[n>>2]=e[(c[j>>2]|0)+8>>1];c[l>>2]=c[m>>2]|c[n>>2];do if(!(c[l>>2]&1)){if(!(c[l>>2]&12)){if(c[l>>2]&2){if(!(c[m>>2]&2)){c[f>>2]=1;break}if(!(c[n>>2]&2)){c[f>>2]=-1;break}if(c[k>>2]|0){c[f>>2]=yF(c[g>>2]|0,c[j>>2]|0,c[k>>2]|0,0)|0;break}}c[f>>2]=_L(c[g>>2]|0,c[j>>2]|0)|0;break}if(c[m>>2]&c[n>>2]&4){a=c[g>>2]|0;n=c[a+4>>2]|0;b=c[j>>2]|0;d=c[b+4>>2]|0;if((n|0)<(d|0)|((n|0)==(d|0)?(c[a>>2]|0)>>>0<(c[b>>2]|0)>>>0:0)){c[f>>2]=-1;break}a=c[g>>2]|0;n=c[a+4>>2]|0;b=c[j>>2]|0;d=c[b+4>>2]|0;if((n|0)>(d|0)|((n|0)==(d|0)?(c[a>>2]|0)>>>0>(c[b>>2]|0)>>>0:0)){c[f>>2]=1;break}else{c[f>>2]=0;break}}if(c[m>>2]&c[n>>2]&8){if(+h[c[g>>2]>>3]<+h[c[j>>2]>>3]){c[f>>2]=-1;break}if(+h[c[g>>2]>>3]>+h[c[j>>2]>>3]){c[f>>2]=1;break}else{c[f>>2]=0;break}}if(c[m>>2]&4)if(c[n>>2]&8){b=c[g>>2]|0;c[f>>2]=wF(c[b>>2]|0,c[b+4>>2]|0,+h[c[j>>2]>>3])|0;break}else{c[f>>2]=-1;break}if(!(c[m>>2]&8)){c[f>>2]=1;break}if(c[n>>2]&4){b=c[j>>2]|0;c[f>>2]=0-(wF(c[b>>2]|0,c[b+4>>2]|0,+h[c[g>>2]>>3])|0);break}else{c[f>>2]=-1;break}}else c[f>>2]=(c[n>>2]&1)-(c[m>>2]&1);while(0);i=o;return c[f>>2]|0}function dI(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+16|0;g=l+12|0;h=l+8|0;k=l+4|0;j=l;c[g>>2]=b;c[h>>2]=e;c[k>>2]=c[c[g>>2]>>2];do if(!(d[c[k>>2]>>0]|0)){e=c[k>>2]|0;if(!(a[(c[k>>2]|0)+3>>0]|0)){if(!(nL(c[e+16>>2]|0)|0))break;c[f>>2]=oL(c[k>>2]|0)|0;k=c[f>>2]|0;i=l;return k|0}if((c[e+52>>2]|0)!=0?(b=c[(c[(c[k>>2]|0)+52>>2]|0)+(1+(c[c[h>>2]>>2]|0)<<2)>>2]|0,c[j>>2]=b,(b|0)>0):0){c[c[g>>2]>>2]=c[(c[k>>2]|0)+48>>2];c[c[h>>2]>>2]=(c[j>>2]|0)-1;c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}c[f>>2]=ZL(c[k>>2]|0)|0;k=c[f>>2]|0;i=l;return k|0}while(0);c[f>>2]=0;k=c[f>>2]|0;i=l;return k|0}function eI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=YL(c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function fI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;iF(c[f>>2]|0);c[c[e>>2]>>2]=c[(c[f>>2]|0)+16+12>>2];i=d;return 0}function gI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=YL(c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function hI(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;h=q+28|0;j=q+24|0;k=q+20|0;l=q+16|0;m=q+12|0;p=q+8|0;n=q+4|0;o=q;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[n>>2]=0;c[o>>2]=0;e=c[h>>2]|0;if(c[l>>2]|0)c[p>>2]=eI(e,n)|0;else c[p>>2]=gI(e,n)|0;if(((c[j>>2]|0)+(c[k>>2]|0)|0)>>>0<=(c[n>>2]|0)>>>0){c[(c[m>>2]|0)+16>>2]=(c[p>>2]|0)+(c[j>>2]|0);b[(c[m>>2]|0)+8>>1]=4112;c[(c[m>>2]|0)+12>>2]=c[k>>2];p=c[o>>2]|0;i=q;return p|0}else{c[o>>2]=XL(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;p=c[o>>2]|0;i=q;return p|0}return 0}function iI(b){b=b|0;var c=0,e=0;e=i;i=i+16|0;c=e;a[c>>0]=b;i=e;return a[35916+(d[c>>0]|0)>>0]|0}function jI(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+48|0;n=o+36|0;f=o+32|0;k=o+28|0;j=o+24|0;g=o+20|0;h=o+16|0;l=o+8|0;m=o;c[f>>2]=a;c[k>>2]=b;c[j>>2]=d;c[g>>2]=e[(c[f>>2]|0)+8>>1];if(c[g>>2]&1){c[c[j>>2]>>2]=0;c[n>>2]=0;n=c[n>>2]|0;i=o;return n|0}if(!(c[g>>2]&4)){if(c[g>>2]&8){c[c[j>>2]>>2]=8;c[n>>2]=7;n=c[n>>2]|0;i=o;return n|0}c[h>>2]=c[(c[f>>2]|0)+12>>2];if(c[g>>2]&16384)c[h>>2]=(c[h>>2]|0)+(c[c[f>>2]>>2]|0);c[c[j>>2]>>2]=c[h>>2];c[n>>2]=(c[h>>2]<<1)+12+((c[g>>2]&2|0)!=0&1);n=c[n>>2]|0;i=o;return n|0}a=c[f>>2]|0;f=c[a+4>>2]|0;b=l;c[b>>2]=c[a>>2];c[b+4>>2]=f;b=l;f=c[b>>2]|0;b=c[b+4>>2]|0;if((c[l+4>>2]|0)<0){a=m;c[a>>2]=~f;c[a+4>>2]=~b}else{a=m;c[a>>2]=f;c[a+4>>2]=b}a=m;d=c[a+4>>2]|0;if(d>>>0<0|(d|0)==0&(c[a>>2]|0)>>>0<=127){a=l;f=c[j>>2]|0;if((0==(c[a+4>>2]|0)?(c[l>>2]&1|0)==(c[a>>2]|0):0)&(c[k>>2]|0)>=4){c[f>>2]=0;c[n>>2]=8+(c[m>>2]|0);n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=1;c[n>>2]=1;n=c[n>>2]|0;i=o;return n|0}}l=m;k=c[l+4>>2]|0;if(k>>>0<0|(k|0)==0&(c[l>>2]|0)>>>0<=32767){c[c[j>>2]>>2]=2;c[n>>2]=2;n=c[n>>2]|0;i=o;return n|0}l=m;k=c[l+4>>2]|0;if(k>>>0<0|(k|0)==0&(c[l>>2]|0)>>>0<=8388607){c[c[j>>2]>>2]=3;c[n>>2]=3;n=c[n>>2]|0;i=o;return n|0}l=m;k=c[l+4>>2]|0;if(k>>>0<0|(k|0)==0&(c[l>>2]|0)>>>0<=2147483647){c[c[j>>2]>>2]=4;c[n>>2]=4;n=c[n>>2]|0;i=o;return n|0}l=c[m+4>>2]|0;f=c[j>>2]|0;if(l>>>0<32767|(l|0)==32767&(c[m>>2]|0)>>>0<=4294967295){c[f>>2]=6;c[n>>2]=5;n=c[n>>2]|0;i=o;return n|0}else{c[f>>2]=8;c[n>>2]=6;n=c[n>>2]|0;i=o;return n|0}return 0}function kI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;f=j+12|0;g=j+8|0;h=j;c[g>>2]=b;b=h;c[b>>2]=d;c[b+4>>2]=e;b=h;k=c[b+4>>2]|0;e=h;d=c[e>>2]|0;e=c[e+4>>2]|0;if(k>>>0<0|(k|0)==0&(c[b>>2]|0)>>>0<=127){a[c[g>>2]>>0]=d&127;c[f>>2]=1;k=c[f>>2]|0;i=j;return k|0}if(e>>>0<0|(e|0)==0&d>>>0<=16383){k=h;k=hR(c[k>>2]|0,c[k+4>>2]|0,7)|0;a[c[g>>2]>>0]=k&127|128;a[(c[g>>2]|0)+1>>0]=c[h>>2]&127;c[f>>2]=2;k=c[f>>2]|0;i=j;return k|0}else{k=h;c[f>>2]=WL(c[g>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;k=c[f>>2]|0;i=j;return k|0}return 0}function lI(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+28|0;h=o+24|0;j=o+20|0;k=o+16|0;m=o+12|0;n=o;l=o+8|0;c[h>>2]=b;c[j>>2]=e;c[k>>2]=f;b=c[k>>2]|0;if((c[k>>2]|0)>>>0<=7&(c[k>>2]|0)>>>0>0){if((b|0)==7){j=c[j>>2]|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2]}else{e=c[j>>2]|0;f=c[e+4>>2]|0;j=n;c[j>>2]=c[e>>2];c[j+4>>2]=f}k=d[35916+(c[k>>2]|0)>>0]|0;c[l>>2]=k;c[m>>2]=k;do{k=c[n>>2]&255;j=(c[l>>2]|0)+-1|0;c[l>>2]=j;a[(c[h>>2]|0)+j>>0]=k;j=n;j=hR(c[j>>2]|0,c[j+4>>2]|0,8)|0;k=n;c[k>>2]=j;c[k+4>>2]=C}while((c[l>>2]|0)!=0);c[g>>2]=c[m>>2];n=c[g>>2]|0;i=o;return n|0}else{if(b>>>0<12){c[g>>2]=0;n=c[g>>2]|0;i=o;return n|0}c[m>>2]=c[(c[j>>2]|0)+12>>2];if((c[m>>2]|0)>>>0>0)iR(c[h>>2]|0,c[(c[j>>2]|0)+16>>2]|0,c[m>>2]|0)|0;c[g>>2]=c[m>>2];n=c[g>>2]|0;i=o;return n|0}return 0}function mI(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;k=p+28|0;l=p+24|0;m=p+20|0;n=p;o=p+16|0;h=p+12|0;j=p+8|0;c[l>>2]=f;c[m>>2]=g;g=n;c[g>>2]=0;c[g+4>>2]=0;if(!(c[(c[l>>2]|0)+52>>2]|0)){o=c[m>>2]|0;c[o>>2]=0;c[o+4>>2]=0;c[k>>2]=0;o=c[k>>2]|0;i=p;return o|0}c[o>>2]=gF(c[l>>2]|0)|0;a:while(1){if(c[o>>2]|0){f=16;break}c[j>>2]=c[(c[l>>2]|0)+120+(a[(c[l>>2]|0)+68>>0]<<2)>>2];if(!((d[(c[j>>2]|0)+4>>0]|0)==0?(a[(c[j>>2]|0)+2>>0]|0)!=0:0)){f=n;f=gR(c[f>>2]|0,c[f+4>>2]|0,e[(c[j>>2]|0)+18>>1]|0,0)|0;g=n;c[g>>2]=f;c[g+4>>2]=C}if(a[(c[j>>2]|0)+4>>0]|0){do{if(!(a[(c[l>>2]|0)+68>>0]|0)){f=10;break a}ZE(c[l>>2]|0)}while((e[(c[l>>2]|0)+80+(a[(c[l>>2]|0)+68>>0]<<1)>>1]|0)>=(e[(c[(c[l>>2]|0)+120+(a[(c[l>>2]|0)+68>>0]<<2)>>2]|0)+18>>1]|0));g=(c[l>>2]|0)+80+(a[(c[l>>2]|0)+68>>0]<<1)|0;b[g>>1]=(b[g>>1]|0)+1<<16>>16;c[j>>2]=c[(c[l>>2]|0)+120+(a[(c[l>>2]|0)+68>>0]<<2)>>2]}c[h>>2]=e[(c[l>>2]|0)+80+(a[(c[l>>2]|0)+68>>0]<<1)>>1];f=c[l>>2]|0;g=c[j>>2]|0;if((c[h>>2]|0)==(e[(c[j>>2]|0)+18>>1]|0)){c[o>>2]=XE(f,$q((c[(c[j>>2]|0)+56>>2]|0)+((d[g+5>>0]|0)+8)|0)|0)|0;continue}else{c[o>>2]=XE(f,$q((c[g+56>>2]|0)+(e[(c[j>>2]|0)+20>>1]&(d[(c[(c[j>>2]|0)+64>>2]|0)+(c[h>>2]<<1)>>0]<<8|d[(c[(c[j>>2]|0)+64>>2]|0)+(c[h>>2]<<1)+1>>0]))|0)|0)|0;continue}}if((f|0)==10){j=n;n=c[j+4>>2]|0;o=c[m>>2]|0;c[o>>2]=c[j>>2];c[o+4>>2]=n;c[k>>2]=gF(c[l>>2]|0)|0;o=c[k>>2]|0;i=p;return o|0}else if((f|0)==16){c[k>>2]=c[o>>2];o=c[k>>2]|0;i=p;return o|0}return 0}function nI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;e=n+28|0;f=n+24|0;g=n+20|0;m=n+16|0;h=n+12|0;k=n+8|0;j=n+4|0;l=n;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[m>>2]=0;if(!(c[(c[e>>2]|0)+332>>2]|0)){m=c[m>>2]|0;i=n;return m|0}c[h>>2]=0;while(1){if(c[m>>2]|0){e=15;break}if((c[h>>2]|0)>=(c[(c[e>>2]|0)+308>>2]|0)){e=15;break}c[k>>2]=c[(c[(c[e>>2]|0)+332>>2]|0)+(c[h>>2]<<2)>>2];c[j>>2]=c[c[(c[k>>2]|0)+4>>2]>>2];if((c[(c[k>>2]|0)+8>>2]|0)!=0?(c[c[j>>2]>>2]|0)>=2:0){switch(c[f>>2]|0){case 0:{c[l>>2]=c[(c[j>>2]|0)+80>>2];c[(c[k>>2]|0)+20>>2]=(c[g>>2]|0)+1;break}case 2:{c[l>>2]=c[(c[j>>2]|0)+88>>2];break}default:c[l>>2]=c[(c[j>>2]|0)+84>>2]}if((c[l>>2]|0)!=0?(c[(c[k>>2]|0)+20>>2]|0)>(c[g>>2]|0):0)c[m>>2]=Yb[c[l>>2]&255](c[(c[k>>2]|0)+8>>2]|0,c[g>>2]|0)|0}c[h>>2]=(c[h>>2]|0)+1}if((e|0)==15){m=c[m>>2]|0;i=n;return m|0}return 0}function oI(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;g=o+20|0;h=o+16|0;j=o+12|0;l=o+8|0;m=o+4|0;k=o;c[g>>2]=b;c[h>>2]=e;c[j>>2]=f;c[m>>2]=0;if(!(c[g>>2]|0)){n=c[m>>2]|0;i=o;return n|0}kg(c[g>>2]|0);c[l>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+8>>2];a:while(1){if(!(c[l>>2]|0)){n=15;break}do if((c[j>>2]|0)!=0?(d[(c[l>>2]|0)+64>>0]&1|0)==0:0){if((d[(c[l>>2]|0)+66>>0]|0)!=1?(d[(c[l>>2]|0)+66>>0]|0)!=2:0)break;c[m>>2]=pH(c[l>>2]|0)|0;if(c[m>>2]|0)break a}else n=10;while(0);if((n|0)==10){n=0;pB(c[l>>2]|0);a[(c[l>>2]|0)+66>>0]=4;c[(c[l>>2]|0)+60>>2]=c[h>>2]}c[k>>2]=0;while(1){if((c[k>>2]|0)>(a[(c[l>>2]|0)+68>>0]|0))break;qB(c[(c[l>>2]|0)+120+(c[k>>2]<<2)>>2]|0);c[(c[l>>2]|0)+120+(c[k>>2]<<2)>>2]=0;c[k>>2]=(c[k>>2]|0)+1}c[l>>2]=c[(c[l>>2]|0)+8>>2]}if((n|0)==15){n=c[m>>2]|0;i=o;return n|0}oI(c[g>>2]|0,c[m>>2]|0,0)|0;n=c[m>>2]|0;i=o;return n|0}function pI(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;k=m;c[g>>2]=a;c[h>>2]=b;c[j>>2]=f;c[l>>2]=0;if(!(c[g>>2]|0)){l=c[l>>2]|0;i=m;return l|0}if((d[(c[g>>2]|0)+8>>0]|0|0)!=2){l=c[l>>2]|0;i=m;return l|0}c[k>>2]=c[(c[g>>2]|0)+4>>2];kg(c[g>>2]|0);c[l>>2]=Kr(c[c[k>>2]>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;if(c[l>>2]|0){l=c[l>>2]|0;i=m;return l|0}if((c[j>>2]|0)<0?((e[(c[k>>2]|0)+22>>1]|0)&8|0)!=0:0)c[(c[k>>2]|0)+44>>2]=0;c[l>>2]=VL(c[k>>2]|0)|0;a=$q((c[(c[(c[k>>2]|0)+12>>2]|0)+56>>2]|0)+28|0)|0;c[(c[k>>2]|0)+44>>2]=a;l=c[l>>2]|0;i=m;return l|0}function qI(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;f=m+20|0;g=m+16|0;h=m+12|0;j=m+8|0;l=m+4|0;k=m;c[f>>2]=b;c[g>>2]=e;c[j>>2]=0;Sj();Nf(c[f>>2]|0);if(c[(c[f>>2]|0)+24>>2]&2)b=(d[(c[f>>2]|0)+140+5>>0]|0)==0;else b=0;c[l>>2]=b&1;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;c[k>>2]=c[(c[(c[f>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+4>>2];if(c[k>>2]|0){if(bi(c[k>>2]|0)|0)c[j>>2]=1;Mg(c[k>>2]|0,c[g>>2]|0,((c[l>>2]|0)!=0^1)&1)|0}c[h>>2]=(c[h>>2]|0)+1}du(c[f>>2]|0)|0;Tj();if((c[(c[f>>2]|0)+24>>2]&2|0)!=0?(d[(c[f>>2]|0)+140+5>>0]|0)==0:0){Oh(c[f>>2]|0);zg(c[f>>2]|0)}l=(c[f>>2]|0)+512|0;c[l>>2]=0;c[l+4>>2]=0;l=(c[f>>2]|0)+520|0;c[l>>2]=0;c[l+4>>2]=0;l=(c[f>>2]|0)+24|0;c[l>>2]=c[l>>2]&-16777217;if(!(c[(c[f>>2]|0)+204>>2]|0)){i=m;return}if((c[j>>2]|0)==0?(a[(c[f>>2]|0)+63>>0]|0)!=0:0){i=m;return}Qb[c[(c[f>>2]|0)+204>>2]&255](c[(c[f>>2]|0)+200>>2]|0);i=m;return}function rI(b){b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;d=f+4|0;e=f;c[d>>2]=b;while(1){b=c[d>>2]|0;if(!(c[(c[d>>2]|0)+492>>2]|0))break;c[e>>2]=c[b+492>>2];c[(c[d>>2]|0)+492>>2]=c[(c[e>>2]|0)+24>>2];Sf(c[d>>2]|0,c[e>>2]|0)}c[b+500>>2]=0;c[(c[d>>2]|0)+504>>2]=0;a[(c[d>>2]|0)+71>>0]=0;i=f;return}function sI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+12|0;f=e+8|0;d=e+4|0;g=e;c[h>>2]=a;c[f>>2]=b;c[g>>2]=c[(c[h>>2]|0)+4>>2];kg(c[h>>2]|0);c[d>>2]=SL(c[c[g>>2]>>2]|0,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function tI(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;k=s+24|0;l=s+20|0;n=s+16|0;o=s+12|0;p=s+28|0;r=s+8|0;m=s+4|0;q=s;c[k>>2]=e;c[l>>2]=f;c[n>>2]=g;c[o>>2]=h;a[p>>0]=j;c[r>>2]=(c[(c[k>>2]|0)+8>>2]|0)+(((c[(c[k>>2]|0)+28>>2]|0)-(c[l>>2]|0)|0)*40|0);c[q>>2]=0;j=88+(c[n>>2]<<3)|0;if(!(d[p>>0]|0))f=QL()|0;else f=0;c[m>>2]=j+f;if(c[(c[(c[k>>2]|0)+56>>2]|0)+(c[l>>2]<<2)>>2]|0){yI(c[k>>2]|0,c[(c[(c[k>>2]|0)+56>>2]|0)+(c[l>>2]<<2)>>2]|0);c[(c[(c[k>>2]|0)+56>>2]|0)+(c[l>>2]<<2)>>2]=0}if(tx(c[r>>2]|0,c[m>>2]|0)|0){r=c[q>>2]|0;i=s;return r|0}j=c[(c[r>>2]|0)+16>>2]|0;c[q>>2]=j;c[(c[(c[k>>2]|0)+56>>2]|0)+(c[l>>2]<<2)>>2]=j;j=c[q>>2]|0;f=j+88|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(f|0));a[c[q>>2]>>0]=a[p>>0]|0;a[(c[q>>2]|0)+1>>0]=c[o>>2];b[(c[q>>2]|0)+12>>1]=c[n>>2];c[(c[q>>2]|0)+76>>2]=(c[q>>2]|0)+80+(c[n>>2]<<2);if(d[p>>0]|0){r=c[q>>2]|0;i=s;return r|0}c[(c[q>>2]|0)+16>>2]=(c[(c[r>>2]|0)+16>>2]|0)+(88+(c[n>>2]<<3));RL(c[(c[q>>2]|0)+16>>2]|0);r=c[q>>2]|0;i=s;return r|0}function uI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+32|0;g=n+20|0;h=n+16|0;j=n+12|0;k=n+8|0;l=n+4|0;m=n;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;if((c[h>>2]|0)<1){c[m>>2]=Lj(59722)|0;d=c[m>>2]|0;i=n;return d|0}else{kg(c[g>>2]|0);c[m>>2]=OL(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;d=c[m>>2]|0;i=n;return d|0}return 0}function vI(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;a[(c[f>>2]|0)+67>>0]=c[g>>2];i=e;return}function wI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;kg(c[j>>2]|0);c[e>>2]=NL(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return c[e>>2]|0}function xI(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+64|0;r=w+48|0;j=w+44|0;k=w+40|0;u=w+36|0;l=w+32|0;m=w+28|0;t=w+24|0;s=w+20|0;p=w+16|0;o=w+12|0;v=w+8|0;n=w+4|0;q=w;c[r>>2]=f;c[j>>2]=g;c[k>>2]=h;c[v>>2]=0;c[p>>2]=24+((e[(c[(c[k>>2]|0)+24>>2]|0)+6>>1]|0)-1<<2);c[o>>2]=136;h=(c[o>>2]|0)+(c[p>>2]|0)|0;c[t>>2]=ph(c[r>>2]|0,h,((h|0)<0)<<31>>31)|0;c[(c[k>>2]|0)+16>>2]=c[t>>2];if(!(c[t>>2]|0)){c[v>>2]=7;v=c[v>>2]|0;i=w;return v|0}o=(c[t>>2]|0)+(c[o>>2]|0)|0;c[s>>2]=o;c[(c[t>>2]|0)+28>>2]=o;iR(c[s>>2]|0,c[(c[k>>2]|0)+24>>2]|0,c[p>>2]|0)|0;c[(c[s>>2]|0)+12>>2]=0;if(c[j>>2]|0){p=(c[s>>2]|0)+8|0;b[p>>1]=(e[p>>1]|0)+((e[(c[s>>2]|0)+6>>1]|0)-(c[j>>2]|0));b[(c[s>>2]|0)+6>>1]=c[j>>2]}p=pg(c[(c[(c[r>>2]|0)+16>>2]|0)+4>>2]|0)|0;c[u>>2]=p;c[(c[t>>2]|0)+12>>2]=p;a[(c[t>>2]|0)+59>>0]=1;a[(c[t>>2]|0)+58>>0]=-1;a[(c[t>>2]|0)+57>>0]=(d[(c[t>>2]|0)+59>>0]|0|0)>1;c[(c[t>>2]|0)+24>>2]=c[r>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(d[(c[t>>2]|0)+59>>0]|0|0))break;c[n>>2]=(c[t>>2]|0)+64+((c[l>>2]|0)*72|0);c[(c[n>>2]|0)+8>>2]=c[t>>2];c[l>>2]=(c[l>>2]|0)+1}if(!(Sq(c[r>>2]|0)|0)){c[q>>2]=c[58];p=_(c[q>>2]|0,c[u>>2]|0)|0;c[c[t>>2]>>2]=p;c[m>>2]=c[(c[(c[(c[r>>2]|0)+16>>2]|0)+12>>2]|0)+80>>2];if((c[m>>2]|0)<(c[q>>2]|0))c[m>>2]=c[q>>2];p=c[m>>2]|0;q=c[u>>2]|0;q=rR(p|0,((p|0)<0)<<31>>31|0,q|0,((q|0)<0)<<31>>31|0)|0;p=C;if((p|0)<0|(p|0)==0&q>>>0<536870912){q=c[m>>2]|0;j=c[u>>2]|0;j=rR(q|0,((q|0)<0)<<31>>31|0,j|0,((j|0)<0)<<31>>31|0)|0}else j=536870912;c[(c[t>>2]|0)+4>>2]=j;if((c[50]|0)==0?(c[(c[t>>2]|0)+52>>2]=c[u>>2],u=c[u>>2]|0,u=_f(u,((u|0)<0)<<31>>31)|0,c[(c[t>>2]|0)+36+4>>2]=u,(c[(c[t>>2]|0)+36+4>>2]|0)==0):0)c[v>>2]=7}if(((e[(c[s>>2]|0)+6>>1]|0)+(e[(c[s>>2]|0)+8>>1]|0)|0)>=13){v=c[v>>2]|0;i=w;return v|0}if((c[(c[s>>2]|0)+20>>2]|0)!=0?(c[(c[s>>2]|0)+20>>2]|0)!=(c[(c[r>>2]|0)+8>>2]|0):0){v=c[v>>2]|0;i=w;return v|0}a[(c[t>>2]|0)+60>>0]=3;v=c[v>>2]|0;i=w;return v|0}function yI(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;e=j+12|0;h=j+8|0;g=j+4|0;f=j;c[e>>2]=a;c[h>>2]=b;if(!(c[h>>2]|0)){i=j;return}switch(d[c[h>>2]>>0]|0|0){case 1:{ML(c[c[e>>2]>>2]|0,c[h>>2]|0);i=j;return}case 0:{e=c[h>>2]|0;if(c[(c[h>>2]|0)+20>>2]|0){lB(c[e+20>>2]|0)|0;i=j;return}else{nB(c[e+16>>2]|0)|0;i=j;return}}case 2:{c[g>>2]=c[(c[h>>2]|0)+16>>2];c[f>>2]=c[c[c[g>>2]>>2]>>2];h=(c[c[g>>2]>>2]|0)+4|0;c[h>>2]=(c[h>>2]|0)+-1;Tb[c[(c[f>>2]|0)+28>>2]&255](c[g>>2]|0)|0;i=j;return}default:{i=j;return}}}function zI(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g+4|0;e=g;c[f>>2]=a;c[e>>2]=b;i=g;return((d[(c[f>>2]|0)+67>>0]|0)&c[e>>2]|0)!=0|0}function AI(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return 1!=(d[(c[b>>2]|0)+66>>0]|0|0)|0}function BI(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k+12|0;g=k+8|0;f=k+4|0;j=k;c[g>>2]=b;c[f>>2]=e;if(1==(d[(c[g>>2]|0)+66>>0]|0|0)?((d[(c[g>>2]|0)+64>>0]|0)&8|0)!=0:0){c[h>>2]=0;j=c[h>>2]|0;i=k;return j|0}c[j>>2]=gF(c[g>>2]|0)|0;do if(!(c[j>>2]|0)){f=c[f>>2]|0;if(!(d[(c[g>>2]|0)+66>>0]|0)){c[f>>2]=1;break}c[f>>2]=0;c[j>>2]=YE(c[g>>2]|0)|0;f=(c[g>>2]|0)+64|0;b=d[f>>0]|0;if(!(c[j>>2]|0)){a[f>>0]=b|8;break}else{a[f>>0]=b&-9;break}}while(0);c[h>>2]=c[j>>2];j=c[h>>2]|0;i=k;return j|0}function CI(f,g,h,j,k,l,m,n,o){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;I=i;i=i+80|0;p=I+72|0;q=I+68|0;r=I+64|0;s=I;t=I+60|0;u=I+56|0;v=I+52|0;w=I+48|0;J=I+44|0;F=I+40|0;y=I+36|0;G=I+32|0;x=I+28|0;E=I+24|0;B=I+20|0;D=I+16|0;A=I+12|0;z=I+8|0;H=I+76|0;c[q>>2]=f;c[r>>2]=g;g=s;c[g>>2]=h;c[g+4>>2]=j;c[t>>2]=k;c[u>>2]=l;c[v>>2]=m;c[w>>2]=n;c[J>>2]=o;c[y>>2]=c[J>>2];c[G>>2]=0;c[B>>2]=c[c[q>>2]>>2];c[D>>2]=c[(c[B>>2]|0)+4>>2];c[z>>2]=0;h=c[q>>2]|0;if((d[(c[q>>2]|0)+66>>0]|0)==4){c[p>>2]=c[h+60>>2];J=c[p>>2]|0;i=I;return J|0}if((d[h+64>>0]&32|0)!=0?(c[F>>2]=nH(c[D>>2]|0,c[(c[q>>2]|0)+52>>2]|0,c[q>>2]|0)|0,(c[F>>2]|0)!=0):0){c[p>>2]=c[F>>2];J=c[p>>2]|0;i=I;return J|0}do if(!(c[(c[q>>2]|0)+72>>2]|0)){J=s;sK(c[B>>2]|0,c[J>>2]|0,c[J+4>>2]|0,0);J=s;B=c[J+4>>2]|0;if((d[(c[q>>2]|0)+64>>0]&2|0)!=0&((B|0)>0|(B|0)==0&(c[J>>2]|0)>>>0>0)?(J=(c[q>>2]|0)+16|0,o=c[J>>2]|0,J=c[J+4>>2]|0,B=s,B=fR(c[B>>2]|0,c[B+4>>2]|0,1,0)|0,(o|0)==(B|0)&(J|0)==(C|0)):0){c[y>>2]=-1;break}if((c[y>>2]|0)==0?(J=s,c[F>>2]=eF(c[q>>2]|0,0,c[J>>2]|0,c[J+4>>2]|0,c[w>>2]|0,y)|0,(c[F>>2]|0)!=0):0){c[p>>2]=c[F>>2];J=c[p>>2]|0;i=I;return J|0}}else if((c[y>>2]|0)==0?(J=s,c[F>>2]=bF(c[q>>2]|0,c[r>>2]|0,c[J>>2]|0,c[J+4>>2]|0,c[w>>2]|0,y)|0,(c[F>>2]|0)!=0):0){c[p>>2]=c[F>>2];J=c[p>>2]|0;i=I;return J|0}while(0);c[E>>2]=c[(c[q>>2]|0)+120+(a[(c[q>>2]|0)+68>>0]<<2)>>2];c[z>>2]=c[(c[D>>2]|0)+80>>2];J=s;c[F>>2]=LL(c[E>>2]|0,c[z>>2]|0,c[r>>2]|0,c[J>>2]|0,c[J+4>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,G)|0;do if(!(c[F>>2]|0)){c[x>>2]=e[(c[q>>2]|0)+80+(a[(c[q>>2]|0)+68>>0]<<1)>>1];if(!(c[y>>2]|0)){c[F>>2]=Dg(c[(c[E>>2]|0)+72>>2]|0)|0;if(c[F>>2]|0)break;c[A>>2]=(c[(c[E>>2]|0)+56>>2]|0)+(e[(c[E>>2]|0)+20>>1]&(d[(c[(c[E>>2]|0)+64>>2]|0)+(c[x>>2]<<1)>>0]<<8|d[(c[(c[E>>2]|0)+64>>2]|0)+(c[x>>2]<<1)+1>>0]));if(!(a[(c[E>>2]|0)+4>>0]|0)){J=c[z>>2]|0;D=c[A>>2]|0;a[J>>0]=a[D>>0]|0;a[J+1>>0]=a[D+1>>0]|0;a[J+2>>0]=a[D+2>>0]|0;a[J+3>>0]=a[D+3>>0]|0}c[F>>2]=uK(c[E>>2]|0,c[A>>2]|0,H)|0;rL(c[E>>2]|0,c[x>>2]|0,e[H>>1]|0,F);if(c[F>>2]|0)break}else if((c[y>>2]|0)<0?(e[(c[E>>2]|0)+18>>1]|0)>0:0){H=(c[q>>2]|0)+80+(a[(c[q>>2]|0)+68>>0]<<1)|0;J=(b[H>>1]|0)+1<<16>>16;b[H>>1]=J;c[x>>2]=J&65535}sL(c[E>>2]|0,c[x>>2]|0,c[z>>2]|0,c[G>>2]|0,0,0,F);b[(c[q>>2]|0)+16+18>>1]=0;if((c[F>>2]|0)==0?(d[(c[E>>2]|0)+1>>0]|0)!=0:0){J=(c[q>>2]|0)+64|0;a[J>>0]=d[J>>0]&-3;c[F>>2]=tL(c[q>>2]|0)|0;a[(c[(c[q>>2]|0)+120+(a[(c[q>>2]|0)+68>>0]<<2)>>2]|0)+1>>0]=0;a[(c[q>>2]|0)+66>>0]=0}}while(0);c[p>>2]=c[F>>2];J=c[p>>2]|0;i=I;return J|0}function DI(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+64|0;t=z+56|0;u=z+52|0;A=z+63|0;l=z+48|0;m=z+44|0;y=z+40|0;x=z+36|0;n=z+32|0;w=z+28|0;v=z+24|0;q=z+60|0;s=z+20|0;r=z+62|0;k=z+16|0;o=z+12|0;j=z+8|0;h=z+4|0;p=z;c[u>>2]=f;a[A>>0]=g;c[l>>2]=c[c[u>>2]>>2];c[m>>2]=c[(c[l>>2]|0)+4>>2];c[s>>2]=0;a[r>>0]=d[A>>0]&2;c[v>>2]=a[(c[u>>2]|0)+68>>0];c[w>>2]=e[(c[u>>2]|0)+80+(c[v>>2]<<1)>>1];c[x>>2]=c[(c[u>>2]|0)+120+(c[v>>2]<<2)>>2];c[n>>2]=(c[(c[x>>2]|0)+56>>2]|0)+(e[(c[x>>2]|0)+20>>1]&(d[(c[(c[x>>2]|0)+64>>2]|0)+(c[w>>2]<<1)>>0]<<8|d[(c[(c[x>>2]|0)+64>>2]|0)+(c[w>>2]<<1)+1>>0]));if((a[(c[x>>2]|0)+4>>0]|0)==0?(c[k>>2]=0,c[y>>2]=UE(c[u>>2]|0,k)|0,(c[y>>2]|0)!=0):0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}if((d[(c[u>>2]|0)+64>>0]&32|0)!=0?(c[y>>2]=nH(c[m>>2]|0,c[(c[u>>2]|0)+52>>2]|0,c[u>>2]|0)|0,(c[y>>2]|0)!=0):0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}if(!(c[(c[u>>2]|0)+72>>2]|0)){A=(c[u>>2]|0)+16|0;sK(c[l>>2]|0,c[A>>2]|0,c[A+4>>2]|0,0)}do if(a[r>>0]|0){if((a[(c[x>>2]|0)+4>>0]|0)!=0?(A=e[(c[x>>2]|0)+16>>1]|0,A=A+((Mt(c[x>>2]|0,c[n>>2]|0)|0)&65535)+2|0,(A|0)<=((c[(c[m>>2]|0)+36>>2]<<1>>>0)/3|0|0)):0){c[s>>2]=1;break}c[y>>2]=rH(c[u>>2]|0)|0;if(c[y>>2]|0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}}while(0);c[y>>2]=Dg(c[(c[x>>2]|0)+72>>2]|0)|0;if(c[y>>2]|0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}c[y>>2]=uK(c[x>>2]|0,c[n>>2]|0,q)|0;rL(c[x>>2]|0,c[w>>2]|0,e[q>>1]|0,y);if(c[y>>2]|0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}if(!(a[(c[x>>2]|0)+4>>0]|0)){c[o>>2]=c[(c[u>>2]|0)+120+(a[(c[u>>2]|0)+68>>0]<<2)>>2];c[h>>2]=c[(c[(c[u>>2]|0)+120+((c[v>>2]|0)+1<<2)>>2]|0)+84>>2];c[n>>2]=(c[(c[o>>2]|0)+56>>2]|0)+(e[(c[o>>2]|0)+20>>1]&(d[(c[(c[o>>2]|0)+64>>2]|0)+((e[(c[o>>2]|0)+18>>1]|0)-1<<1)>>0]<<8|d[(c[(c[o>>2]|0)+64>>2]|0)+((e[(c[o>>2]|0)+18>>1]|0)-1<<1)+1>>0]));if((c[n>>2]|0)>>>0<((c[(c[o>>2]|0)+56>>2]|0)+4|0)>>>0){c[t>>2]=Lj(63773)|0;A=c[t>>2]|0;i=z;return A|0}c[j>>2]=(Yb[c[(c[o>>2]|0)+76>>2]&255](c[o>>2]|0,c[n>>2]|0)|0)&65535;c[p>>2]=c[(c[m>>2]|0)+80>>2];c[y>>2]=Dg(c[(c[o>>2]|0)+72>>2]|0)|0;sL(c[x>>2]|0,c[w>>2]|0,(c[n>>2]|0)+-4|0,(c[j>>2]|0)+4|0,c[p>>2]|0,c[h>>2]|0,y);rL(c[o>>2]|0,(e[(c[o>>2]|0)+18>>1]|0)-1|0,c[j>>2]|0,y);if(c[y>>2]|0){c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}}c[y>>2]=tL(c[u>>2]|0)|0;if((c[y>>2]|0)==0?(a[(c[u>>2]|0)+68>>0]|0)>(c[v>>2]|0):0){while(1){g=c[u>>2]|0;if((a[(c[u>>2]|0)+68>>0]|0)<=(c[v>>2]|0))break;q=g+68|0;A=a[q>>0]|0;a[q>>0]=A+-1<<24>>24;qB(c[(c[u>>2]|0)+120+(A<<24>>24<<2)>>2]|0)}c[y>>2]=tL(g)|0}do if(!(c[y>>2]|0)){g=c[u>>2]|0;if(!(c[s>>2]|0)){c[y>>2]=gF(g)|0;if(!(a[r>>0]|0))break;a[(c[u>>2]|0)+66>>0]=3;break}a[g+66>>0]=2;g=(c[u>>2]|0)+60|0;if((c[w>>2]|0)>=(e[(c[x>>2]|0)+18>>1]|0)){c[g>>2]=-1;b[(c[u>>2]|0)+80+(c[v>>2]<<1)>>1]=(e[(c[x>>2]|0)+18>>1]|0)-1;break}else{c[g>>2]=1;break}}while(0);c[t>>2]=c[y>>2];A=c[t>>2]|0;i=z;return A|0}function EI(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;o=s+44|0;t=s+40|0;p=s+36|0;h=s+32|0;q=s+28|0;n=s+24|0;r=s+20|0;m=s+16|0;j=s+12|0;l=s+8|0;k=s+4|0;c[t>>2]=a;c[p>>2]=d;c[h>>2]=f;c[q>>2]=g;c[n>>2]=c[(c[t>>2]|0)+16>>2];c[r>>2]=c[(c[n>>2]|0)+32>>2];c[m>>2]=c[(c[t>>2]|0)+24>>2];do if(!(c[r>>2]|0)){t=cF(c[m>>2]|0,0,0,s)|0;c[(c[n>>2]|0)+32>>2]=t;c[r>>2]=t;if(c[r>>2]|0){b[(c[r>>2]|0)+8>>1]=c[h>>2];break}c[o>>2]=7;t=c[o>>2]|0;i=s;return t|0}while(0);c[l>>2]=qL(c[n>>2]|0,k)|0;dF(c[m>>2]|0,c[k>>2]|0,c[l>>2]|0,c[r>>2]|0);c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[h>>2]|0)){h=10;break}if((e[(c[(c[r>>2]|0)+4>>2]|0)+((c[j>>2]|0)*40|0)+8>>1]|0)&1){h=8;break}c[j>>2]=(c[j>>2]|0)+1}if((h|0)==8){c[c[q>>2]>>2]=-1;c[o>>2]=0;t=c[o>>2]|0;i=s;return t|0}else if((h|0)==10){t=rF(c[(c[p>>2]|0)+12>>2]|0,c[(c[p>>2]|0)+16>>2]|0,c[r>>2]|0)|0;c[c[q>>2]>>2]=t;c[o>>2]=0;t=c[o>>2]|0;i=s;return t|0}return 0}function FI(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;f=k+20|0;m=k+16|0;g=k+12|0;l=k+8|0;j=k+4|0;h=k;c[m>>2]=a;c[g>>2]=d;c[l>>2]=c[(c[m>>2]|0)+16>>2];c[j>>2]=qL(c[l>>2]|0,h)|0;if(tx(c[g>>2]|0,c[h>>2]|0)|0){c[f>>2]=7;m=c[f>>2]|0;i=k;return m|0}else{c[(c[g>>2]|0)+12>>2]=c[h>>2];b[(c[g>>2]|0)+8>>1]=(e[(c[g>>2]|0)+8>>1]|0)&-49664|16;iR(c[(c[g>>2]|0)+16>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;c[f>>2]=0;m=c[f>>2]|0;i=k;return m|0}return 0}function GI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;d=g+8|0;e=g+4|0;f=g;c[d>>2]=a;c[e>>2]=b;if(!(c[(c[e>>2]|0)+8>>2]|0)){i=g;return}c[f>>2]=c[c[d>>2]>>2];Sf(c[f>>2]|0,c[(c[d>>2]|0)+44>>2]|0);b=nh(c[f>>2]|0,c[(c[e>>2]|0)+8>>2]|0)|0;c[(c[d>>2]|0)+44>>2]=b;Kd(c[(c[e>>2]|0)+8>>2]|0);c[(c[e>>2]|0)+8>>2]=0;i=g;return}function HI(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;b=e+4|0;d=e;c[d>>2]=a;if(nL(c[(c[d>>2]|0)+16>>2]|0)|0){c[b>>2]=oL(c[d>>2]|0)|0;a=c[b>>2]|0;i=e;return a|0}else{c[b>>2]=0;a=c[b>>2]|0;i=e;return a|0}return 0}function II(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;f=j+16|0;k=j+12|0;e=j+8|0;g=j+4|0;h=j;c[k>>2]=a;c[e>>2]=b;c[h>>2]=0;c[g>>2]=c[(c[k>>2]|0)+16>>2];b=c[g>>2]|0;if(d[(c[g>>2]|0)+56>>0]|0){c[h>>2]=EK(b)|0;c[h>>2]=c[h>>2];if(!(c[h>>2]|0)){c[h>>2]=bL(c[g>>2]|0)|0;c[c[e>>2]>>2]=0}c[f>>2]=c[h>>2];k=c[f>>2]|0;i=j;return k|0}a=c[e>>2]|0;if(c[b+36>>2]|0){c[a>>2]=0;c[h>>2]=HK((c[g>>2]|0)+64|0,(c[g>>2]|0)+36|0)|0}else c[a>>2]=1;c[f>>2]=c[h>>2];k=c[f>>2]|0;i=j;return k|0}function JI(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h+8|0;e=h+4|0;g=h;c[f>>2]=a;c[e>>2]=b;c[g>>2]=gF(c[f>>2]|0)|0;do if(!(c[g>>2]|0)){e=c[e>>2]|0;if(!(d[(c[f>>2]|0)+66>>0]|0)){c[e>>2]=1;break}else{c[e>>2]=0;c[g>>2]=JF(c[f>>2]|0)|0;break}}while(0);i=h;return c[g>>2]|0}function KI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;f=l+20|0;m=l+16|0;g=l+12|0;j=l+8|0;k=l+4|0;h=l;c[f>>2]=b;c[m>>2]=d;c[g>>2]=e;c[j>>2]=c[(c[m>>2]|0)+16>>2];b=c[j>>2]|0;if(a[(c[j>>2]|0)+56>>0]|0){c[k>>2]=UK(c[b+20>>2]|0,c[g>>2]|0)|0;m=c[k>>2]|0;i=l;return m|0}c[h>>2]=c[b+36>>2];c[(c[j>>2]|0)+36>>2]=c[(c[h>>2]|0)+4>>2];c[(c[h>>2]|0)+4>>2]=0;if(!(c[(c[j>>2]|0)+36+4>>2]|0))oK(c[f>>2]|0,c[h>>2]|0);c[c[g>>2]>>2]=((c[(c[j>>2]|0)+36>>2]|0)!=0^1)&1;c[k>>2]=0;m=c[k>>2]|0;i=l;return m|0}function LI(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=i;i=i+64|0;j=t+52|0;u=t+48|0;k=t+44|0;r=t+40|0;s=t+36|0;q=t+32|0;g=t+28|0;p=t+24|0;h=t+20|0;f=t+16|0;n=t+12|0;l=t+8|0;m=t+4|0;o=t;c[u>>2]=b;c[k>>2]=e;c[s>>2]=0;c[r>>2]=c[(c[u>>2]|0)+16>>2];b=(c[(c[k>>2]|0)+16>>2]|0)+1|0;if((d[(c[(c[k>>2]|0)+16>>2]|0)+1>>0]|0|0)<128)c[f>>2]=d[b>>0];else tF(b,f)|0;do if((c[f>>2]|0)>0&(c[f>>2]|0)<10&(c[f>>2]|0)!=7){u=(c[r>>2]|0)+60|0;a[u>>0]=(d[u>>0]|0)&1}else{if((c[f>>2]|0)>10?(c[f>>2]&1|0)!=0:0){u=(c[r>>2]|0)+60|0;a[u>>0]=(d[u>>0]|0)&2;break}a[(c[r>>2]|0)+60>>0]=0}while(0);c[p>>2]=(c[(c[k>>2]|0)+12>>2]|0)+8;f=c[(c[k>>2]|0)+12>>2]|0;u=c[(c[k>>2]|0)+12>>2]|0;c[h>>2]=f+(zF(u,((u|0)<0)<<31>>31)|0);if(c[(c[r>>2]|0)+4>>2]|0){b=c[r>>2]|0;if(c[(c[r>>2]|0)+36+4>>2]|0){if(c[b+48>>2]|0)b=((c[(c[r>>2]|0)+48>>2]|0)+(c[p>>2]|0)|0)>(c[(c[r>>2]|0)+4>>2]|0);else b=0;c[g>>2]=b&1}else{if((c[b+36+8>>2]|0)<=(c[(c[r>>2]|0)+4>>2]|0))if((c[(c[r>>2]|0)+36+8>>2]|0)>(c[c[r>>2]>>2]|0))b=(Hu()|0)!=0;else b=0;else b=1;c[g>>2]=b&1}if(c[g>>2]|0){c[s>>2]=EK(c[r>>2]|0)|0;c[(c[r>>2]|0)+36+8>>2]=0;c[(c[r>>2]|0)+48>>2]=0}}u=(c[r>>2]|0)+36+8|0;c[u>>2]=(c[u>>2]|0)+(c[h>>2]|0);if((c[h>>2]|0)>(c[(c[r>>2]|0)+8>>2]|0))c[(c[r>>2]|0)+8>>2]=c[h>>2];do if(c[(c[r>>2]|0)+36+4>>2]|0){c[n>>2]=(c[(c[r>>2]|0)+48>>2]|0)+(c[p>>2]|0);do if((c[n>>2]|0)>(c[(c[r>>2]|0)+52>>2]|0)){c[m>>2]=(c[(c[r>>2]|0)+36>>2]|0)-(c[(c[r>>2]|0)+36+4>>2]|0);c[o>>2]=c[(c[r>>2]|0)+52>>2]<<1;while(1){b=c[o>>2]|0;if((c[o>>2]|0)>=(c[n>>2]|0))break;c[o>>2]=b<<1}if((b|0)>(c[(c[r>>2]|0)+4>>2]|0))c[o>>2]=c[(c[r>>2]|0)+4>>2];if((c[o>>2]|0)<(c[n>>2]|0))c[o>>2]=c[n>>2];u=c[o>>2]|0;c[l>>2]=bg(c[(c[r>>2]|0)+36+4>>2]|0,u,((u|0)<0)<<31>>31)|0;if(c[l>>2]|0){c[(c[r>>2]|0)+36>>2]=(c[l>>2]|0)+(c[m>>2]|0);c[(c[r>>2]|0)+36+4>>2]=c[l>>2];c[(c[r>>2]|0)+52>>2]=c[o>>2];break}c[j>>2]=7;u=c[j>>2]|0;i=t;return u|0}while(0);c[q>>2]=(c[(c[r>>2]|0)+36+4>>2]|0)+(c[(c[r>>2]|0)+48>>2]|0);u=(c[r>>2]|0)+48|0;c[u>>2]=(c[u>>2]|0)+((c[p>>2]|0)+7&-8);if(c[(c[r>>2]|0)+36>>2]|0)c[(c[q>>2]|0)+4>>2]=(c[(c[r>>2]|0)+36>>2]|0)-(c[(c[r>>2]|0)+36+4>>2]|0)}else{u=c[p>>2]|0;c[q>>2]=_f(u,((u|0)<0)<<31>>31)|0;if(c[q>>2]|0){c[(c[q>>2]|0)+4>>2]=c[(c[r>>2]|0)+36>>2];break}c[j>>2]=7;u=c[j>>2]|0;i=t;return u|0}while(0);iR((c[q>>2]|0)+8|0,c[(c[k>>2]|0)+16>>2]|0,c[(c[k>>2]|0)+12>>2]|0)|0;c[c[q>>2]>>2]=c[(c[k>>2]|0)+12>>2];c[(c[r>>2]|0)+36>>2]=c[q>>2];c[j>>2]=c[s>>2];u=c[j>>2]|0;i=t;return u|0}function MI(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+128|0;g=o+116|0;r=o+112|0;q=o+108|0;h=o+104|0;p=o+80|0;f=o+100|0;l=o+96|0;m=o+92|0;j=o+88|0;k=o+40|0;n=o;c[r>>2]=a;c[q>>2]=b;c[h>>2]=e;e=p;c[e>>2]=0;c[e+4>>2]=0;sH(c[q>>2]|0,p)|0;AF(k,c[r>>2]|0,0);c[f>>2]=hI(c[q>>2]|0,0,c[p>>2]|0,1,k)|0;if(c[f>>2]|0){c[g>>2]=c[f>>2];r=c[g>>2]|0;i=o;return r|0}a=c[k+16>>2]|0;if((d[c[k+16>>2]>>0]|0|0)<128)c[l>>2]=d[a>>0];else tF(a,l)|0;if((c[l>>2]|0)>>>0>=3?(c[l>>2]|0)<=(c[k+12>>2]|0):0){a=(c[k+16>>2]|0)+((c[l>>2]|0)-1)|0;if((d[(c[k+16>>2]|0)+((c[l>>2]|0)-1)>>0]|0|0)<128)c[m>>2]=d[a>>0];else tF(a,m)|0;if(!((c[m>>2]|0)>>>0<1|(c[m>>2]|0)>>>0>9|(c[m>>2]|0)==7)?(c[j>>2]=d[35916+(c[m>>2]|0)>>0],(c[k+12>>2]|0)>>>0>=((c[l>>2]|0)+(c[j>>2]|0)|0)>>>0):0){vF((c[k+16>>2]|0)+((c[k+12>>2]|0)-(c[j>>2]|0))|0,c[m>>2]|0,n)|0;p=n;q=c[p+4>>2]|0;r=c[h>>2]|0;c[r>>2]=c[p>>2];c[r+4>>2]=q;Ug(k);c[g>>2]=0;r=c[g>>2]|0;i=o;return r|0}}Ug(k);c[g>>2]=Lj(72119)|0;r=c[g>>2]|0;i=o;return r|0}function NI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+80|0;f=o+72|0;g=o+68|0;p=o+64|0;h=o+60|0;j=o+56|0;l=o+40|0;n=o+52|0;m=o+48|0;k=o;c[g>>2]=a;c[p>>2]=b;c[h>>2]=d;c[j>>2]=e;b=l;c[b>>2]=0;c[b+4>>2]=0;c[m>>2]=c[(c[p>>2]|0)+16>>2];sH(c[m>>2]|0,l)|0;b=l;a=c[b+4>>2]|0;e=l;d=c[e+4>>2]|0;if((a|0)<0|(a|0)==0&(c[b>>2]|0)>>>0<=0|((d|0)>0|(d|0)==0&(c[e>>2]|0)>>>0>2147483647)){c[c[j>>2]>>2]=0;c[f>>2]=Lj(72153)|0;p=c[f>>2]|0;i=o;return p|0}AF(k,c[g>>2]|0,0);c[n>>2]=hI(c[m>>2]|0,0,c[l>>2]|0,1,k)|0;if(c[n>>2]|0){c[f>>2]=c[n>>2];p=c[f>>2]|0;i=o;return p|0}else{p=rF(c[k+12>>2]|0,c[k+16>>2]|0,c[h>>2]|0)|0;c[c[j>>2]>>2]=p;Ug(k);c[f>>2]=0;p=c[f>>2]|0;i=o;return p|0}return 0}function OI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;kg(c[j>>2]|0);c[e>>2]=DK(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return c[e>>2]|0}function PI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+48|0;p=n+32|0;o=n+28|0;f=n+24|0;g=n+20|0;j=n+16|0;k=n+12|0;h=n+8|0;m=n+4|0;l=n;c[p>>2]=a;c[o>>2]=b;c[f>>2]=d;c[g>>2]=e;c[h>>2]=(c[(c[p>>2]|0)+16>>2]|0)+(c[o>>2]<<4);c[k>>2]=(c[(c[h>>2]|0)+12>>2]|0)+8;c[j>>2]=c[(c[k>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;c[m>>2]=c[(c[j>>2]|0)+8>>2];if((c[(c[m>>2]|0)+28>>2]|0)==(c[f>>2]|0))c[(c[m>>2]|0)+28>>2]=c[g>>2];c[j>>2]=c[c[j>>2]>>2]}c[k>>2]=(c[(c[h>>2]|0)+12>>2]|0)+24;c[j>>2]=c[(c[k>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;c[l>>2]=c[(c[j>>2]|0)+8>>2];if((c[(c[l>>2]|0)+44>>2]|0)==(c[f>>2]|0))c[(c[l>>2]|0)+44>>2]=c[g>>2];c[j>>2]=c[c[j>>2]>>2]}i=n;return}function QI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;e=k+16|0;f=k+12|0;g=k+8|0;j=k+4|0;h=k;c[e>>2]=a;c[f>>2]=b;c[g>>2]=d;c[h>>2]=c[(c[e>>2]|0)+4>>2];kg(c[e>>2]|0);c[j>>2]=nH(c[h>>2]|0,c[f>>2]|0,0)|0;if(c[j>>2]|0){j=c[j>>2]|0;i=k;return j|0}sK(c[e>>2]|0,0,0,1);c[j>>2]=tK(c[h>>2]|0,c[f>>2]|0,0,c[g>>2]|0)|0;j=c[j>>2]|0;i=k;return j|0}function RI(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;f=k+12|0;g=k+8|0;h=k+4|0;j=k;c[f>>2]=b;c[g>>2]=e;mK(c[(c[g>>2]|0)+20>>2]|0);c[(c[g>>2]|0)+20>>2]=0;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(d[(c[g>>2]|0)+59>>0]|0|0))break;c[j>>2]=(c[g>>2]|0)+64+((c[h>>2]|0)*72|0);nK(c[f>>2]|0,c[j>>2]|0);c[(c[j>>2]|0)+8>>2]=c[g>>2];c[h>>2]=(c[h>>2]|0)+1}if(!(c[(c[g>>2]|0)+36+4>>2]|0))oK(0,c[(c[g>>2]|0)+36>>2]|0);c[(c[g>>2]|0)+36>>2]=0;c[(c[g>>2]|0)+36+8>>2]=0;a[(c[g>>2]|0)+56>>0]=0;c[(c[g>>2]|0)+48>>2]=0;c[(c[g>>2]|0)+8>>2]=0;Sf(c[f>>2]|0,c[(c[g>>2]|0)+32>>2]|0);c[(c[g>>2]|0)+32>>2]=0;i=k;return}function SI(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=QI(c[c[d>>2]>>2]|0,c[(c[d>>2]|0)+52>>2]|0,0)|0;i=b;return a|0}function TI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e+16|0;k=e+12|0;h=e+8|0;g=e+4|0;j=e;c[f>>2]=a;c[k>>2]=b;c[h>>2]=d;c[j>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[k>>2]<<4);c[g>>2]=Oj((c[(c[j>>2]|0)+12>>2]|0)+8|0,c[h>>2]|0,0)|0;Qf(c[f>>2]|0,c[g>>2]|0);d=(c[f>>2]|0)+24|0;c[d>>2]=c[d>>2]|2;i=e; -return}function UI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;h=i;i=i+32|0;e=h+20|0;l=h+16|0;j=h+12|0;g=h+8|0;k=h+4|0;f=h;c[e>>2]=a;c[l>>2]=b;c[j>>2]=d;c[k>>2]=(c[(c[(c[e>>2]|0)+16>>2]|0)+(c[l>>2]<<4)+12>>2]|0)+24;c[g>>2]=Oj(c[k>>2]|0,c[j>>2]|0,0)|0;if(!(c[g>>2]|0)){l=c[e>>2]|0;l=l+24|0;k=c[l>>2]|0;k=k|2;c[l>>2]=k;i=h;return}a=c[g>>2]|0;if((c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]|0)!=(c[g>>2]|0)){c[f>>2]=c[(c[a+12>>2]|0)+8>>2];while(1){if(c[f>>2]|0)b=(c[(c[f>>2]|0)+20>>2]|0)!=(c[g>>2]|0);else b=0;a=c[f>>2]|0;if(!b)break;c[f>>2]=c[a+20>>2]}if((a|0)!=0?(c[(c[f>>2]|0)+20>>2]|0)==(c[g>>2]|0):0)c[(c[f>>2]|0)+20>>2]=c[(c[g>>2]|0)+20>>2]}else c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]=c[a+20>>2];WG(c[e>>2]|0,c[g>>2]|0);l=c[e>>2]|0;l=l+24|0;k=c[l>>2]|0;k=k|2;c[l>>2]=k;i=h;return}function VI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;f=j+24|0;m=j+20|0;k=j+16|0;g=j+12|0;l=j+8|0;e=j+4|0;h=j;c[f>>2]=a;c[m>>2]=b;c[k>>2]=d;c[l>>2]=(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2]|0)+40;c[g>>2]=Oj(c[l>>2]|0,c[k>>2]|0,0)|0;if(!(c[g>>2]|0)){i=j;return}if((c[(c[g>>2]|0)+20>>2]|0)==(c[(c[g>>2]|0)+24>>2]|0)){c[e>>2]=BB(c[g>>2]|0)|0;c[h>>2]=(c[e>>2]|0)+60;while(1){a=(c[c[h>>2]>>2]|0)+32|0;if((c[c[h>>2]>>2]|0)==(c[g>>2]|0))break;c[h>>2]=a}c[c[h>>2]>>2]=c[a>>2]}Pf(c[f>>2]|0,c[g>>2]|0);m=(c[f>>2]|0)+24|0;c[m>>2]=c[m>>2]|2;i=j;return}function WI(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;t=i;i=i+240|0;s=t+16|0;r=t+8|0;v=t+124|0;j=t+120|0;k=t+116|0;u=t+112|0;l=t+108|0;m=t+104|0;p=t+32|0;o=t+24|0;q=t+20|0;n=t;c[v>>2]=b;c[j>>2]=e;c[k>>2]=f;c[u>>2]=g;c[l>>2]=h;c[o>>2]=c[(c[v>>2]|0)+4>>2];c[q>>2]=c[(c[(c[o>>2]|0)+4>>2]|0)+24>>2];kg(c[v>>2]|0);c[p>>2]=c[o>>2];c[p+4>>2]=c[c[o>>2]>>2];c[p+12>>2]=$E(c[p>>2]|0)|0;c[p+16>>2]=c[u>>2];c[p+20>>2]=0;c[p+24>>2]=0;c[p+28>>2]=0;c[p+32>>2]=0;c[p+36>>2]=0;c[p+8>>2]=0;c[p+68>>2]=0;cg(p+40|0,0,t+128|0,100,1e9);a[p+40+25>>0]=1;a:do if(c[p+12>>2]|0){c[p+8>>2]=ig((((c[p+12>>2]|0)>>>0)/8|0)+1|0,0)|0;if(!(c[p+8>>2]|0)){c[p+24>>2]=1;break}c[p+68>>2]=Ti(c[(c[o>>2]|0)+32>>2]|0)|0;if(!(c[p+68>>2]|0)){c[p+24>>2]=1;break}c[m>>2]=(((c[381]|0)>>>0)/((c[(c[o>>2]|0)+32>>2]|0)>>>0)|0)+1;if((c[m>>2]|0)>>>0<=(c[p+12>>2]|0)>>>0)dK(p,c[m>>2]|0);c[p+28>>2]=42551;v=$q((c[(c[(c[o>>2]|0)+12>>2]|0)+56>>2]|0)+32|0)|0;eK(p,1,v,$q((c[(c[(c[o>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0);c[p+28>>2]=0;v=(c[(c[o>>2]|0)+4>>2]|0)+24|0;c[v>>2]=c[v>>2]&-268435457;c[m>>2]=0;while(1){if(!((c[m>>2]|0)<(c[k>>2]|0)?(c[p+16>>2]|0)!=0:0))break;if(c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0){if((d[(c[o>>2]|0)+17>>0]|0)!=0?(c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0)>1:0)fK(p,c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0,1,0);gK(p,c[(c[j>>2]|0)+(c[m>>2]<<2)>>2]|0,n,-1,2147483647)|0}c[m>>2]=(c[m>>2]|0)+1}c[(c[(c[o>>2]|0)+4>>2]|0)+24>>2]=c[q>>2];c[m>>2]=1;while(1){if(!((c[m>>2]|0)>>>0<=(c[p+12>>2]|0)>>>0?(c[p+16>>2]|0)!=0:0))break a;do if(!(hK(p,c[m>>2]|0)|0)){v=lF(c[o>>2]|0,c[m>>2]|0)|0;if((v|0)==(c[m>>2]|0)?(a[(c[o>>2]|0)+17>>0]|0)!=0:0)break;c[r>>2]=c[m>>2];iK(p,42567,r)}while(0);if(((hK(p,c[m>>2]|0)|0)!=0?(v=lF(c[o>>2]|0,c[m>>2]|0)|0,(v|0)==(c[m>>2]|0)):0)?(d[(c[o>>2]|0)+17>>0]|0)!=0:0){c[s>>2]=c[m>>2];iK(p,42589,s)}c[m>>2]=(c[m>>2]|0)+1}}while(0);Wi(c[p+68>>2]|0);Kd(c[p+8>>2]|0);if(c[p+24>>2]|0){fA(p+40|0);v=p+20|0;c[v>>2]=(c[v>>2]|0)+1}c[c[l>>2]>>2]=c[p+20>>2];if(c[p+20>>2]|0){v=p+40|0;v=eg(v)|0;i=t;return v|0}fA(p+40|0);v=p+40|0;v=eg(v)|0;i=t;return v|0}function XI(d){d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=d;c[f>>2]=c[(c[e>>2]|0)+32>>2];Ug(c[e>>2]|0);d=Fw(c[f>>2]|0,64,0)|0;c[(c[e>>2]|0)+20>>2]=d;if(a[(c[f>>2]|0)+65>>0]|0){b[(c[e>>2]|0)+8>>1]=1;c[(c[e>>2]|0)+24>>2]=0;i=g;return}else{d=$t(c[f>>2]|0,c[(c[e>>2]|0)+20>>2]|0)|0;c[(c[e>>2]|0)+24>>2]=d;d=cK(c[f>>2]|0,c[(c[e>>2]|0)+20>>2]|0,c[(c[e>>2]|0)+24>>2]|0)|0;c[c[e>>2]>>2]=d;b[(c[e>>2]|0)+8>>1]=32;i=g;return}}function YI(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;g=l+16|0;h=l;j=l+12|0;k=l+8|0;c[g>>2]=a;a=h;c[a>>2]=d;c[a+4>>2]=f;c[j>>2]=$J(c[g>>2]|0)|0;if(!(c[j>>2]|0)){i=l;return}d=h;f=c[d+4>>2]|0;a=c[j>>2]|0;c[a>>2]=c[d>>2];c[a+4>>2]=f;c[(c[j>>2]|0)+8>>2]=0;c[k>>2]=c[(c[g>>2]|0)+12>>2];if(c[k>>2]|0){if(((e[(c[g>>2]|0)+26>>1]|0)&1|0)!=0?(h,d=c[h+4>>2]|0,a=c[k>>2]|0,f=c[a+4>>2]|0,(d|0)<(f|0)|((d|0)==(f|0)?(c[h>>2]|0)>>>0<=(c[a>>2]|0)>>>0:0)):0){a=(c[g>>2]|0)+26|0;b[a>>1]=(e[a>>1]|0)&-2}c[(c[k>>2]|0)+8>>2]=c[j>>2]}else c[(c[g>>2]|0)+8>>2]=c[j>>2];c[(c[g>>2]|0)+12>>2]=c[j>>2];i=l;return}function ZI(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;d=h+8|0;f=h+4|0;g=h;c[f>>2]=a;c[g>>2]=b;if(!((e[(c[f>>2]|0)+26>>1]|0)&2))bK(c[f>>2]|0);if(!(c[(c[f>>2]|0)+8>>2]|0)){c[d>>2]=0;b=c[d>>2]|0;i=h;return b|0}j=c[(c[f>>2]|0)+8>>2]|0;a=c[j+4>>2]|0;b=c[g>>2]|0;c[b>>2]=c[j>>2];c[b+4>>2]=a;c[(c[f>>2]|0)+8>>2]=c[(c[(c[f>>2]|0)+8>>2]|0)+8>>2];if(!(c[(c[f>>2]|0)+8>>2]|0))FF(c[f>>2]|0);c[d>>2]=1;j=c[d>>2]|0;i=h;return j|0}function _I(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+48|0;o=s+36|0;h=s+32|0;j=s+28|0;p=s;q=s+24|0;r=s+20|0;m=s+16|0;k=s+12|0;l=s+8|0;c[h>>2]=a;c[j>>2]=d;a=p;c[a>>2]=f;c[a+4>>2]=g;if((c[j>>2]|0)!=(c[(c[h>>2]|0)+28>>2]|0)){c[q>>2]=c[(c[h>>2]|0)+8>>2];if(c[q>>2]|0){c[m>>2]=(c[h>>2]|0)+20;if(!((e[(c[h>>2]|0)+26>>1]|0)&1))c[q>>2]=XJ(c[q>>2]|0)|0;c[r>>2]=c[(c[h>>2]|0)+20>>2];while(1){if(!(c[r>>2]|0))break;c[m>>2]=(c[r>>2]|0)+8;if(!(c[(c[r>>2]|0)+12>>2]|0)){n=8;break}ZJ(c[(c[r>>2]|0)+12>>2]|0,k,l);c[(c[r>>2]|0)+12>>2]=0;c[q>>2]=_J(c[k>>2]|0,c[q>>2]|0)|0;c[r>>2]=c[(c[r>>2]|0)+8>>2]}if((n|0)==8){n=YJ(c[q>>2]|0)|0;c[(c[r>>2]|0)+12>>2]=n}if((c[r>>2]|0)==0?(n=$J(c[h>>2]|0)|0,c[r>>2]=n,c[c[m>>2]>>2]=n,(c[r>>2]|0)!=0):0){n=c[r>>2]|0;c[n>>2]=0;c[n+4>>2]=0;c[(c[r>>2]|0)+8>>2]=0;n=YJ(c[q>>2]|0)|0;c[(c[r>>2]|0)+12>>2]=n}c[(c[h>>2]|0)+8>>2]=0;c[(c[h>>2]|0)+12>>2]=0;n=(c[h>>2]|0)+26|0;b[n>>1]=e[n>>1]|0|1}c[(c[h>>2]|0)+28>>2]=c[j>>2]}c[r>>2]=c[(c[h>>2]|0)+20>>2];a:while(1){if(!(c[r>>2]|0)){n=25;break}c[q>>2]=c[(c[r>>2]|0)+12>>2];while(1){if(!(c[q>>2]|0))break;m=c[q>>2]|0;a=c[m+4>>2]|0;n=p;l=c[n+4>>2]|0;f=c[q>>2]|0;if((a|0)<(l|0)|((a|0)==(l|0)?(c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0:0)){c[q>>2]=c[f+8>>2];continue}m=f;a=c[m+4>>2]|0;n=p;l=c[n+4>>2]|0;if(!((a|0)>(l|0)|((a|0)==(l|0)?(c[m>>2]|0)>>>0>(c[n>>2]|0)>>>0:0))){n=23;break a}c[q>>2]=c[(c[q>>2]|0)+12>>2]}c[r>>2]=c[(c[r>>2]|0)+8>>2]}if((n|0)==23){c[o>>2]=1;r=c[o>>2]|0;i=s;return r|0}else if((n|0)==25){c[o>>2]=0;r=c[o>>2]|0;i=s;return r|0}return 0}function $I(a){a=a|0;var b=0,e=0,f=0;f=i;i=i+16|0;b=f+4|0;e=f;c[e>>2]=a;if((d[(c[e>>2]|0)+17>>0]|0|0)>=3){c[b>>2]=0;a=c[b>>2]|0;i=f;return a|0}if((c[c[(c[e>>2]|0)+68>>2]>>2]|0)!=0?(a=(c[e>>2]|0)+80|0,e=c[a+4>>2]|0,(e|0)>0|(e|0)==0&(c[a>>2]|0)>>>0>0):0){c[b>>2]=0;a=c[b>>2]|0;i=f;return a|0}c[b>>2]=1;a=c[b>>2]|0;i=f;return a|0}function aJ(a){a=a|0;var b=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;b=e;c[f>>2]=a;c[b>>2]=c[c[(c[f>>2]|0)+64>>2]>>2];if(d[(c[f>>2]|0)+4>>0]|0){f=1;f=f&1;i=e;return f|0}if((c[c[b>>2]>>2]|0)<2){f=0;f=f&1;i=e;return f|0}f=(c[(c[b>>2]|0)+52>>2]|0)!=0;f=f&1;i=e;return f|0}function bJ(a){a=a|0;var b=0,e=0,f=0,g=0;g=i;i=i+16|0;b=g+8|0;f=g+4|0;e=g;c[b>>2]=a;c[f>>2]=0;if(!(c[(c[b>>2]|0)+216>>2]|0)){c[e>>2]=0;c[f>>2]=vt(c[b>>2]|0,1)|0;if(!(c[f>>2]|0))c[f>>2]=Nr(c[c[b>>2]>>2]|0,c[(c[b>>2]|0)+220>>2]|0,0,e)|0;if((c[f>>2]|0)==0&(c[e>>2]|0)!=0)c[f>>2]=SJ(c[b>>2]|0)|0}if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}if(!(c[(c[b>>2]|0)+216>>2]|0)){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=TJ(c[b>>2]|0)|0;if(c[f>>2]|0){f=c[f>>2]|0;i=g;return f|0}c[f>>2]=cr(c[(c[b>>2]|0)+216>>2]|0,d[(c[b>>2]|0)+10>>0]|0,c[(c[b>>2]|0)+160>>2]|0,c[(c[b>>2]|0)+208>>2]|0)|0;c[(c[b>>2]|0)+216>>2]=0;Xi(c[b>>2]|0);f=c[f>>2]|0;i=g;return f|0}function cJ(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+32|0;f=l+12|0;g=l+8|0;h=l+16|0;j=l+4|0;k=l;c[f>>2]=b;c[g>>2]=e;a[h>>0]=a[(c[f>>2]|0)+5>>0]|0;if((a[(c[f>>2]|0)+16>>0]|0)!=0?(c[g>>2]|0)!=4&(c[g>>2]|0)!=2:0)c[g>>2]=d[h>>0];do if((c[g>>2]|0)!=(d[h>>0]|0)){a[(c[f>>2]|0)+5>>0]=c[g>>2];if(((a[(c[f>>2]|0)+4>>0]|0)==0?(d[h>>0]&5|0)==1:0)?(c[g>>2]&1|0)==0:0){hr(c[(c[f>>2]|0)+68>>2]|0)|0;if((d[(c[f>>2]|0)+18>>0]|0)>=2){qr(c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+180>>2]|0,0)|0;break}c[j>>2]=0;c[k>>2]=d[(c[f>>2]|0)+17>>0];if(!(c[k>>2]|0))c[j>>2]=LJ(c[f>>2]|0)|0;if((d[(c[f>>2]|0)+17>>0]|0)==1)c[j>>2]=vt(c[f>>2]|0,2)|0;if(!(c[j>>2]|0))qr(c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+180>>2]|0,0)|0;if((c[j>>2]|0)==0&(c[k>>2]|0)==1){wr(c[f>>2]|0,1)|0;break}if(c[k>>2]|0)break;dr(c[f>>2]|0);break}if((c[g>>2]|0)==2)hr(c[(c[f>>2]|0)+68>>2]|0)|0}while(0);i=l;return d[(c[f>>2]|0)+5>>0]|0}function uR(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return(C=n,f)|0}else{if(!g){n=0;f=0;return(C=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return(C=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(aa(i|0)|0)-(aa(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return(C=n,f)|0}g=h-1|0;if(g&h){i=(aa(h|0)|0)+33-(aa(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return(C=o,p)|0}else{p=nR(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return(C=o,p)|0}}else{if(g){if(f){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return(C=o,p)|0}if(!l){if(f){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return(C=o,p)|0}g=i-1|0;if(!(g&i)){if(f){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((nR(i|0)|0)>>>0);return(C=o,p)|0}g=(aa(i|0)|0)-(aa(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return(C=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=gR(m|0,l|0,-1,-1)|0;d=C;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;fR(k,d,e,n)|0;p=C;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=fR(e,n,o&m,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l)|0;b=C;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return(C=o,p)|0}function vR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ob[a&255](b|0,c|0,d|0)|0}function wR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(0,a|0,b|0,c|0)|0}function xR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(1,a|0,b|0,c|0)|0}function yR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(2,a|0,b|0,c|0)|0}function zR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(3,a|0,b|0,c|0)|0}function AR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(4,a|0,b|0,c|0)|0}function BR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(5,a|0,b|0,c|0)|0}function CR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(6,a|0,b|0,c|0)|0}function DR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(7,a|0,b|0,c|0)|0}function ER(a,b,c){a=a|0;b=b|0;c=c|0;return ea(8,a|0,b|0,c|0)|0}function FR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(9,a|0,b|0,c|0)|0}function GR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(10,a|0,b|0,c|0)|0}function HR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(11,a|0,b|0,c|0)|0}function IR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(12,a|0,b|0,c|0)|0}function JR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(13,a|0,b|0,c|0)|0}function KR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(14,a|0,b|0,c|0)|0}function LR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(15,a|0,b|0,c|0)|0}function MR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(16,a|0,b|0,c|0)|0}function NR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(17,a|0,b|0,c|0)|0}function OR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(18,a|0,b|0,c|0)|0}function PR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(19,a|0,b|0,c|0)|0}function QR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(20,a|0,b|0,c|0)|0}function RR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(21,a|0,b|0,c|0)|0}function SR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(22,a|0,b|0,c|0)|0}function TR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(23,a|0,b|0,c|0)|0}function UR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(24,a|0,b|0,c|0)|0}function VR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(25,a|0,b|0,c|0)|0}function WR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(26,a|0,b|0,c|0)|0}function XR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(27,a|0,b|0,c|0)|0}function YR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(28,a|0,b|0,c|0)|0}function ZR(a,b,c){a=a|0;b=b|0;c=c|0;return ea(29,a|0,b|0,c|0)|0}function _R(a,b,c){a=a|0;b=b|0;c=c|0;return ea(30,a|0,b|0,c|0)|0}function $R(a,b,c){a=a|0;b=b|0;c=c|0;return ea(31,a|0,b|0,c|0)|0}function aS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(32,a|0,b|0,c|0)|0}function bS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(33,a|0,b|0,c|0)|0}function cS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(34,a|0,b|0,c|0)|0}function dS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(35,a|0,b|0,c|0)|0}function eS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(36,a|0,b|0,c|0)|0}function fS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(37,a|0,b|0,c|0)|0}function gS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(38,a|0,b|0,c|0)|0}function hS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(39,a|0,b|0,c|0)|0}function iS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(40,a|0,b|0,c|0)|0}function jS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(41,a|0,b|0,c|0)|0}function kS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(42,a|0,b|0,c|0)|0}function lS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(43,a|0,b|0,c|0)|0}function mS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(44,a|0,b|0,c|0)|0}function nS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(45,a|0,b|0,c|0)|0}function oS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(46,a|0,b|0,c|0)|0}function pS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(47,a|0,b|0,c|0)|0}function qS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(48,a|0,b|0,c|0)|0}function rS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(49,a|0,b|0,c|0)|0}function sS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(50,a|0,b|0,c|0)|0}function tS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(51,a|0,b|0,c|0)|0}function uS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(52,a|0,b|0,c|0)|0}function vS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(53,a|0,b|0,c|0)|0}function wS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(54,a|0,b|0,c|0)|0}function xS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(55,a|0,b|0,c|0)|0}function yS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(56,a|0,b|0,c|0)|0}function zS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(57,a|0,b|0,c|0)|0}function AS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(58,a|0,b|0,c|0)|0}function BS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(59,a|0,b|0,c|0)|0}function CS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(60,a|0,b|0,c|0)|0}function DS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(61,a|0,b|0,c|0)|0}function ES(a,b,c){a=a|0;b=b|0;c=c|0;return ea(62,a|0,b|0,c|0)|0}function FS(a,b,c){a=a|0;b=b|0;c=c|0;return ea(63,a|0,b|0,c|0)|0}function GS(a){a=a|0;return Pb[a&255]()|0}function HS(){return ga(0)|0}function IS(){return ga(1)|0}function JS(){return ga(2)|0}function KS(){return ga(3)|0}function LS(){return ga(4)|0}function MS(){return ga(5)|0}function NS(){return ga(6)|0}function OS(){return ga(7)|0}function PS(){return ga(8)|0}function QS(){return ga(9)|0}function RS(){return ga(10)|0}function SS(){return ga(11)|0}function TS(){return ga(12)|0}function US(){return ga(13)|0}function VS(){return ga(14)|0}function WS(){return ga(15)|0}function XS(){return ga(16)|0}function YS(){return ga(17)|0}function ZS(){return ga(18)|0}function _S(){return ga(19)|0}function $S(){return ga(20)|0}function aT(){return ga(21)|0}function bT(){return ga(22)|0}function cT(){return ga(23)|0}function dT(){return ga(24)|0}function eT(){return ga(25)|0}function fT(){return ga(26)|0}function gT(){return ga(27)|0}function hT(){return ga(28)|0}function iT(){return ga(29)|0}function jT(){return ga(30)|0}function kT(){return ga(31)|0}function lT(){return ga(32)|0}function mT(){return ga(33)|0}function nT(){return ga(34)|0}function oT(){return ga(35)|0}function pT(){return ga(36)|0}function qT(){return ga(37)|0}function rT(){return ga(38)|0}function sT(){return ga(39)|0}function tT(){return ga(40)|0}function uT(){return ga(41)|0}function vT(){return ga(42)|0}function wT(){return ga(43)|0}function xT(){return ga(44)|0}function yT(){return ga(45)|0}function zT(){return ga(46)|0}function AT(){return ga(47)|0}function BT(){return ga(48)|0}function CT(){return ga(49)|0}function DT(){return ga(50)|0}function ET(){return ga(51)|0}function FT(){return ga(52)|0}function GT(){return ga(53)|0}function HT(){return ga(54)|0}function IT(){return ga(55)|0}function JT(){return ga(56)|0}function KT(){return ga(57)|0}function LT(){return ga(58)|0}function MT(){return ga(59)|0}function NT(){return ga(60)|0}function OT(){return ga(61)|0}function PT(){return ga(62)|0}function QT(){return ga(63)|0}function RT(a,b){a=a|0;b=b|0;Qb[a&255](b|0)}function ST(a){a=a|0;ia(0,a|0)}function TT(a){a=a|0;ia(1,a|0)}function UT(a){a=a|0;ia(2,a|0)}function VT(a){a=a|0;ia(3,a|0)}function WT(a){a=a|0;ia(4,a|0)}function XT(a){a=a|0;ia(5,a|0)}function YT(a){a=a|0;ia(6,a|0)}function ZT(a){a=a|0;ia(7,a|0)}function _T(a){a=a|0;ia(8,a|0)}function $T(a){a=a|0;ia(9,a|0)}function aU(a){a=a|0;ia(10,a|0)}function bU(a){a=a|0;ia(11,a|0)}function cU(a){a=a|0;ia(12,a|0)}function dU(a){a=a|0;ia(13,a|0)}function eU(a){a=a|0;ia(14,a|0)}function fU(a){a=a|0;ia(15,a|0)}function gU(a){a=a|0;ia(16,a|0)}function hU(a){a=a|0;ia(17,a|0)}function iU(a){a=a|0;ia(18,a|0)}function jU(a){a=a|0;ia(19,a|0)}function kU(a){a=a|0;ia(20,a|0)}function lU(a){a=a|0;ia(21,a|0)}function mU(a){a=a|0;ia(22,a|0)}function nU(a){a=a|0;ia(23,a|0)}function oU(a){a=a|0;ia(24,a|0)}function pU(a){a=a|0;ia(25,a|0)}function qU(a){a=a|0;ia(26,a|0)}function rU(a){a=a|0;ia(27,a|0)}function sU(a){a=a|0;ia(28,a|0)}function tU(a){a=a|0;ia(29,a|0)}function uU(a){a=a|0;ia(30,a|0)}function vU(a){a=a|0;ia(31,a|0)}function wU(a){a=a|0;ia(32,a|0)}function xU(a){a=a|0;ia(33,a|0)}function yU(a){a=a|0;ia(34,a|0)}function zU(a){a=a|0;ia(35,a|0)}function AU(a){a=a|0;ia(36,a|0)}function BU(a){a=a|0;ia(37,a|0)}function CU(a){a=a|0;ia(38,a|0)}function DU(a){a=a|0;ia(39,a|0)}function EU(a){a=a|0;ia(40,a|0)}function FU(a){a=a|0;ia(41,a|0)}function GU(a){a=a|0;ia(42,a|0)}function HU(a){a=a|0;ia(43,a|0)}function IU(a){a=a|0;ia(44,a|0)}function JU(a){a=a|0;ia(45,a|0)}function KU(a){a=a|0;ia(46,a|0)}function LU(a){a=a|0;ia(47,a|0)}function MU(a){a=a|0;ia(48,a|0)}function NU(a){a=a|0;ia(49,a|0)}function OU(a){a=a|0;ia(50,a|0)}function PU(a){a=a|0;ia(51,a|0)}function QU(a){a=a|0;ia(52,a|0)}function RU(a){a=a|0;ia(53,a|0)}function SU(a){a=a|0;ia(54,a|0)}function TU(a){a=a|0;ia(55,a|0)}function UU(a){a=a|0;ia(56,a|0)}function VU(a){a=a|0;ia(57,a|0)}function WU(a){a=a|0;ia(58,a|0)}function XU(a){a=a|0;ia(59,a|0)}function YU(a){a=a|0;ia(60,a|0)}function ZU(a){a=a|0;ia(61,a|0)}function _U(a){a=a|0;ia(62,a|0)}function $U(a){a=a|0;ia(63,a|0)}function aV(a,b,c){a=a|0;b=b|0;c=c|0;Rb[a&255](b|0,c|0)}function bV(a,b){a=a|0;b=b|0;ka(0,a|0,b|0)}function cV(a,b){a=a|0;b=b|0;ka(1,a|0,b|0)}function dV(a,b){a=a|0;b=b|0;ka(2,a|0,b|0)}function eV(a,b){a=a|0;b=b|0;ka(3,a|0,b|0)}function fV(a,b){a=a|0;b=b|0;ka(4,a|0,b|0)}function gV(a,b){a=a|0;b=b|0;ka(5,a|0,b|0)}function hV(a,b){a=a|0;b=b|0;ka(6,a|0,b|0)}function iV(a,b){a=a|0;b=b|0;ka(7,a|0,b|0)}function jV(a,b){a=a|0;b=b|0;ka(8,a|0,b|0)}function kV(a,b){a=a|0;b=b|0;ka(9,a|0,b|0)}function lV(a,b){a=a|0;b=b|0;ka(10,a|0,b|0)}function mV(a,b){a=a|0;b=b|0;ka(11,a|0,b|0)}function nV(a,b){a=a|0;b=b|0;ka(12,a|0,b|0)}function oV(a,b){a=a|0;b=b|0;ka(13,a|0,b|0)}function pV(a,b){a=a|0;b=b|0;ka(14,a|0,b|0)}function qV(a,b){a=a|0;b=b|0;ka(15,a|0,b|0)}function rV(a,b){a=a|0;b=b|0;ka(16,a|0,b|0)}function sV(a,b){a=a|0;b=b|0;ka(17,a|0,b|0)}function tV(a,b){a=a|0;b=b|0;ka(18,a|0,b|0)}function uV(a,b){a=a|0;b=b|0;ka(19,a|0,b|0)}function vV(a,b){a=a|0;b=b|0;ka(20,a|0,b|0)}function wV(a,b){a=a|0;b=b|0;ka(21,a|0,b|0)}function xV(a,b){a=a|0;b=b|0;ka(22,a|0,b|0)}function yV(a,b){a=a|0;b=b|0;ka(23,a|0,b|0)}function zV(a,b){a=a|0;b=b|0;ka(24,a|0,b|0)}function AV(a,b){a=a|0;b=b|0;ka(25,a|0,b|0)}function BV(a,b){a=a|0;b=b|0;ka(26,a|0,b|0)}function CV(a,b){a=a|0;b=b|0;ka(27,a|0,b|0)}function DV(a,b){a=a|0;b=b|0;ka(28,a|0,b|0)}function EV(a,b){a=a|0;b=b|0;ka(29,a|0,b|0)}function FV(a,b){a=a|0;b=b|0;ka(30,a|0,b|0)}function GV(a,b){a=a|0;b=b|0;ka(31,a|0,b|0)}function HV(a,b){a=a|0;b=b|0;ka(32,a|0,b|0)}function IV(a,b){a=a|0;b=b|0;ka(33,a|0,b|0)}function JV(a,b){a=a|0;b=b|0;ka(34,a|0,b|0)}function KV(a,b){a=a|0;b=b|0;ka(35,a|0,b|0)}function LV(a,b){a=a|0;b=b|0;ka(36,a|0,b|0)}function MV(a,b){a=a|0;b=b|0;ka(37,a|0,b|0)}function NV(a,b){a=a|0;b=b|0;ka(38,a|0,b|0)}function OV(a,b){a=a|0;b=b|0;ka(39,a|0,b|0)}function PV(a,b){a=a|0;b=b|0;ka(40,a|0,b|0)}function QV(a,b){a=a|0;b=b|0;ka(41,a|0,b|0)}function RV(a,b){a=a|0;b=b|0;ka(42,a|0,b|0)}function SV(a,b){a=a|0;b=b|0;ka(43,a|0,b|0)}function TV(a,b){a=a|0;b=b|0;ka(44,a|0,b|0)}function UV(a,b){a=a|0;b=b|0;ka(45,a|0,b|0)}function VV(a,b){a=a|0;b=b|0;ka(46,a|0,b|0)}function WV(a,b){a=a|0;b=b|0;ka(47,a|0,b|0)}function XV(a,b){a=a|0;b=b|0;ka(48,a|0,b|0)}function YV(a,b){a=a|0;b=b|0;ka(49,a|0,b|0)}function ZV(a,b){a=a|0;b=b|0;ka(50,a|0,b|0)}function _V(a,b){a=a|0;b=b|0;ka(51,a|0,b|0)}function $V(a,b){a=a|0;b=b|0;ka(52,a|0,b|0)}function aW(a,b){a=a|0;b=b|0;ka(53,a|0,b|0)}function bW(a,b){a=a|0;b=b|0;ka(54,a|0,b|0)}function cW(a,b){a=a|0;b=b|0;ka(55,a|0,b|0)}function dW(a,b){a=a|0;b=b|0;ka(56,a|0,b|0)}function eW(a,b){a=a|0;b=b|0;ka(57,a|0,b|0)}function fW(a,b){a=a|0;b=b|0;ka(58,a|0,b|0)}function gW(a,b){a=a|0;b=b|0;ka(59,a|0,b|0)}function hW(a,b){a=a|0;b=b|0;ka(60,a|0,b|0)}function iW(a,b){a=a|0;b=b|0;ka(61,a|0,b|0)}function jW(a,b){a=a|0;b=b|0;ka(62,a|0,b|0)}function kW(a,b){a=a|0;b=b|0;ka(63,a|0,b|0)}function lW(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Sb[a&255](b|0,c|0,d|0,e|0,f|0,g|0)|0}function mW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(0,a|0,b|0,c|0,d|0,e|0,f|0)|0}function nW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(1,a|0,b|0,c|0,d|0,e|0,f|0)|0}function oW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(2,a|0,b|0,c|0,d|0,e|0,f|0)|0}function pW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(3,a|0,b|0,c|0,d|0,e|0,f|0)|0}function qW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(4,a|0,b|0,c|0,d|0,e|0,f|0)|0}function rW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(5,a|0,b|0,c|0,d|0,e|0,f|0)|0}function sW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(6,a|0,b|0,c|0,d|0,e|0,f|0)|0}function tW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(7,a|0,b|0,c|0,d|0,e|0,f|0)|0}function uW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(8,a|0,b|0,c|0,d|0,e|0,f|0)|0}function vW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(9,a|0,b|0,c|0,d|0,e|0,f|0)|0}function wW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(10,a|0,b|0,c|0,d|0,e|0,f|0)|0}function xW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(11,a|0,b|0,c|0,d|0,e|0,f|0)|0}function yW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(12,a|0,b|0,c|0,d|0,e|0,f|0)|0}function zW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(13,a|0,b|0,c|0,d|0,e|0,f|0)|0}function AW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(14,a|0,b|0,c|0,d|0,e|0,f|0)|0}function BW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(15,a|0,b|0,c|0,d|0,e|0,f|0)|0}function CW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(16,a|0,b|0,c|0,d|0,e|0,f|0)|0}function DW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(17,a|0,b|0,c|0,d|0,e|0,f|0)|0}function EW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(18,a|0,b|0,c|0,d|0,e|0,f|0)|0}function FW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(19,a|0,b|0,c|0,d|0,e|0,f|0)|0}function GW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(20,a|0,b|0,c|0,d|0,e|0,f|0)|0}function HW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(21,a|0,b|0,c|0,d|0,e|0,f|0)|0}function IW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(22,a|0,b|0,c|0,d|0,e|0,f|0)|0}function JW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(23,a|0,b|0,c|0,d|0,e|0,f|0)|0}function KW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(24,a|0,b|0,c|0,d|0,e|0,f|0)|0}function LW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(25,a|0,b|0,c|0,d|0,e|0,f|0)|0}function MW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(26,a|0,b|0,c|0,d|0,e|0,f|0)|0}function NW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(27,a|0,b|0,c|0,d|0,e|0,f|0)|0}function OW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(28,a|0,b|0,c|0,d|0,e|0,f|0)|0}function PW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(29,a|0,b|0,c|0,d|0,e|0,f|0)|0}function QW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(30,a|0,b|0,c|0,d|0,e|0,f|0)|0}function RW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(31,a|0,b|0,c|0,d|0,e|0,f|0)|0}function SW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(32,a|0,b|0,c|0,d|0,e|0,f|0)|0}function TW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(33,a|0,b|0,c|0,d|0,e|0,f|0)|0}function UW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(34,a|0,b|0,c|0,d|0,e|0,f|0)|0}function VW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(35,a|0,b|0,c|0,d|0,e|0,f|0)|0}function WW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(36,a|0,b|0,c|0,d|0,e|0,f|0)|0}function XW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(37,a|0,b|0,c|0,d|0,e|0,f|0)|0}function YW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(38,a|0,b|0,c|0,d|0,e|0,f|0)|0}function ZW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(39,a|0,b|0,c|0,d|0,e|0,f|0)|0}function _W(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(40,a|0,b|0,c|0,d|0,e|0,f|0)|0}function $W(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(41,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(42,a|0,b|0,c|0,d|0,e|0,f|0)|0}function bX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(43,a|0,b|0,c|0,d|0,e|0,f|0)|0}function cX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(44,a|0,b|0,c|0,d|0,e|0,f|0)|0}function dX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(45,a|0,b|0,c|0,d|0,e|0,f|0)|0}function eX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(46,a|0,b|0,c|0,d|0,e|0,f|0)|0}function fX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(47,a|0,b|0,c|0,d|0,e|0,f|0)|0}function gX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(48,a|0,b|0,c|0,d|0,e|0,f|0)|0}function hX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(49,a|0,b|0,c|0,d|0,e|0,f|0)|0}function iX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(50,a|0,b|0,c|0,d|0,e|0,f|0)|0}function jX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(51,a|0,b|0,c|0,d|0,e|0,f|0)|0}function kX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(52,a|0,b|0,c|0,d|0,e|0,f|0)|0}function lX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(53,a|0,b|0,c|0,d|0,e|0,f|0)|0}function mX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(54,a|0,b|0,c|0,d|0,e|0,f|0)|0}function nX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(55,a|0,b|0,c|0,d|0,e|0,f|0)|0}function oX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(56,a|0,b|0,c|0,d|0,e|0,f|0)|0}function pX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(57,a|0,b|0,c|0,d|0,e|0,f|0)|0}function qX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(58,a|0,b|0,c|0,d|0,e|0,f|0)|0}function rX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(59,a|0,b|0,c|0,d|0,e|0,f|0)|0}function sX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(60,a|0,b|0,c|0,d|0,e|0,f|0)|0}function tX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(61,a|0,b|0,c|0,d|0,e|0,f|0)|0}function uX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(62,a|0,b|0,c|0,d|0,e|0,f|0)|0}function vX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ma(63,a|0,b|0,c|0,d|0,e|0,f|0)|0}function wX(a,b){a=a|0;b=b|0;return Tb[a&255](b|0)|0}function xX(a){a=a|0;return oa(0,a|0)|0}function yX(a){a=a|0;return oa(1,a|0)|0}function zX(a){a=a|0;return oa(2,a|0)|0}function AX(a){a=a|0;return oa(3,a|0)|0}function BX(a){a=a|0;return oa(4,a|0)|0}function CX(a){a=a|0;return oa(5,a|0)|0}function DX(a){a=a|0;return oa(6,a|0)|0}function EX(a){a=a|0;return oa(7,a|0)|0}function FX(a){a=a|0;return oa(8,a|0)|0}function GX(a){a=a|0;return oa(9,a|0)|0}function HX(a){a=a|0;return oa(10,a|0)|0}function IX(a){a=a|0;return oa(11,a|0)|0}function JX(a){a=a|0;return oa(12,a|0)|0}function KX(a){a=a|0;return oa(13,a|0)|0}function LX(a){a=a|0;return oa(14,a|0)|0}function MX(a){a=a|0;return oa(15,a|0)|0}function NX(a){a=a|0;return oa(16,a|0)|0}function OX(a){a=a|0;return oa(17,a|0)|0}function PX(a){a=a|0;return oa(18,a|0)|0}function QX(a){a=a|0;return oa(19,a|0)|0}function RX(a){a=a|0;return oa(20,a|0)|0}function SX(a){a=a|0;return oa(21,a|0)|0}function TX(a){a=a|0;return oa(22,a|0)|0}function UX(a){a=a|0;return oa(23,a|0)|0}function VX(a){a=a|0;return oa(24,a|0)|0}function WX(a){a=a|0;return oa(25,a|0)|0}function XX(a){a=a|0;return oa(26,a|0)|0}function YX(a){a=a|0;return oa(27,a|0)|0}function ZX(a){a=a|0;return oa(28,a|0)|0}function _X(a){a=a|0;return oa(29,a|0)|0}function $X(a){a=a|0;return oa(30,a|0)|0}function aY(a){a=a|0;return oa(31,a|0)|0}function bY(a){a=a|0;return oa(32,a|0)|0}function cY(a){a=a|0;return oa(33,a|0)|0}function dY(a){a=a|0;return oa(34,a|0)|0}function eY(a){a=a|0;return oa(35,a|0)|0}function fY(a){a=a|0;return oa(36,a|0)|0}function gY(a){a=a|0;return oa(37,a|0)|0}function hY(a){a=a|0;return oa(38,a|0)|0}function iY(a){a=a|0;return oa(39,a|0)|0}function jY(a){a=a|0;return oa(40,a|0)|0}function kY(a){a=a|0;return oa(41,a|0)|0}function lY(a){a=a|0;return oa(42,a|0)|0}function mY(a){a=a|0;return oa(43,a|0)|0}function nY(a){a=a|0;return oa(44,a|0)|0}function oY(a){a=a|0;return oa(45,a|0)|0}function pY(a){a=a|0;return oa(46,a|0)|0}function qY(a){a=a|0;return oa(47,a|0)|0}function rY(a){a=a|0;return oa(48,a|0)|0}function sY(a){a=a|0;return oa(49,a|0)|0}function tY(a){a=a|0;return oa(50,a|0)|0}function uY(a){a=a|0;return oa(51,a|0)|0}function vY(a){a=a|0;return oa(52,a|0)|0}function wY(a){a=a|0;return oa(53,a|0)|0}function xY(a){a=a|0;return oa(54,a|0)|0}function yY(a){a=a|0;return oa(55,a|0)|0}function zY(a){a=a|0;return oa(56,a|0)|0}function AY(a){a=a|0;return oa(57,a|0)|0}function BY(a){a=a|0;return oa(58,a|0)|0}function CY(a){a=a|0;return oa(59,a|0)|0}function DY(a){a=a|0;return oa(60,a|0)|0}function EY(a){a=a|0;return oa(61,a|0)|0}function FY(a){a=a|0;return oa(62,a|0)|0}function GY(a){a=a|0;return oa(63,a|0)|0}function HY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ub[a&255](b|0,c|0,d|0)}function IY(a,b,c){a=a|0;b=b|0;c=c|0;qa(0,a|0,b|0,c|0)}function JY(a,b,c){a=a|0;b=b|0;c=c|0;qa(1,a|0,b|0,c|0)}function KY(a,b,c){a=a|0;b=b|0;c=c|0;qa(2,a|0,b|0,c|0)}function LY(a,b,c){a=a|0;b=b|0;c=c|0;qa(3,a|0,b|0,c|0)}function MY(a,b,c){a=a|0;b=b|0;c=c|0;qa(4,a|0,b|0,c|0)}function NY(a,b,c){a=a|0;b=b|0;c=c|0;qa(5,a|0,b|0,c|0)}function OY(a,b,c){a=a|0;b=b|0;c=c|0;qa(6,a|0,b|0,c|0)}function PY(a,b,c){a=a|0;b=b|0;c=c|0;qa(7,a|0,b|0,c|0)}function QY(a,b,c){a=a|0;b=b|0;c=c|0;qa(8,a|0,b|0,c|0)}function RY(a,b,c){a=a|0;b=b|0;c=c|0;qa(9,a|0,b|0,c|0)}function SY(a,b,c){a=a|0;b=b|0;c=c|0;qa(10,a|0,b|0,c|0)}function TY(a,b,c){a=a|0;b=b|0;c=c|0;qa(11,a|0,b|0,c|0)}function UY(a,b,c){a=a|0;b=b|0;c=c|0;qa(12,a|0,b|0,c|0)}function VY(a,b,c){a=a|0;b=b|0;c=c|0;qa(13,a|0,b|0,c|0)}function WY(a,b,c){a=a|0;b=b|0;c=c|0;qa(14,a|0,b|0,c|0)}function XY(a,b,c){a=a|0;b=b|0;c=c|0;qa(15,a|0,b|0,c|0)}function YY(a,b,c){a=a|0;b=b|0;c=c|0;qa(16,a|0,b|0,c|0)}function ZY(a,b,c){a=a|0;b=b|0;c=c|0;qa(17,a|0,b|0,c|0)}function _Y(a,b,c){a=a|0;b=b|0;c=c|0;qa(18,a|0,b|0,c|0)}function $Y(a,b,c){a=a|0;b=b|0;c=c|0;qa(19,a|0,b|0,c|0)}function aZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(20,a|0,b|0,c|0)}function bZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(21,a|0,b|0,c|0)}function cZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(22,a|0,b|0,c|0)}function dZ(a,b,c){ -a=a|0;b=b|0;c=c|0;qa(23,a|0,b|0,c|0)}function eZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(24,a|0,b|0,c|0)}function fZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(25,a|0,b|0,c|0)}function gZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(26,a|0,b|0,c|0)}function hZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(27,a|0,b|0,c|0)}function iZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(28,a|0,b|0,c|0)}function jZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(29,a|0,b|0,c|0)}function kZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(30,a|0,b|0,c|0)}function lZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(31,a|0,b|0,c|0)}function mZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(32,a|0,b|0,c|0)}function nZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(33,a|0,b|0,c|0)}function oZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(34,a|0,b|0,c|0)}function pZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(35,a|0,b|0,c|0)}function qZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(36,a|0,b|0,c|0)}function rZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(37,a|0,b|0,c|0)}function sZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(38,a|0,b|0,c|0)}function tZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(39,a|0,b|0,c|0)}function uZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(40,a|0,b|0,c|0)}function vZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(41,a|0,b|0,c|0)}function wZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(42,a|0,b|0,c|0)}function xZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(43,a|0,b|0,c|0)}function yZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(44,a|0,b|0,c|0)}function zZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(45,a|0,b|0,c|0)}function AZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(46,a|0,b|0,c|0)}function BZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(47,a|0,b|0,c|0)}function CZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(48,a|0,b|0,c|0)}function DZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(49,a|0,b|0,c|0)}function EZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(50,a|0,b|0,c|0)}function FZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(51,a|0,b|0,c|0)}function GZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(52,a|0,b|0,c|0)}function HZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(53,a|0,b|0,c|0)}function IZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(54,a|0,b|0,c|0)}function JZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(55,a|0,b|0,c|0)}function KZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(56,a|0,b|0,c|0)}function LZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(57,a|0,b|0,c|0)}function MZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(58,a|0,b|0,c|0)}function NZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(59,a|0,b|0,c|0)}function OZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(60,a|0,b|0,c|0)}function PZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(61,a|0,b|0,c|0)}function QZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(62,a|0,b|0,c|0)}function RZ(a,b,c){a=a|0;b=b|0;c=c|0;qa(63,a|0,b|0,c|0)}function SZ(a){a=a|0;Vb[a&255]()}function TZ(){sa(0)}function UZ(){sa(1)}function VZ(){sa(2)}function WZ(){sa(3)}function XZ(){sa(4)}function YZ(){sa(5)}function ZZ(){sa(6)}function _Z(){sa(7)}function $Z(){sa(8)}function a_(){sa(9)}function b_(){sa(10)}function c_(){sa(11)}function d_(){sa(12)}function e_(){sa(13)}function f_(){sa(14)}function g_(){sa(15)}function h_(){sa(16)}function i_(){sa(17)}function j_(){sa(18)}function k_(){sa(19)}function l_(){sa(20)}function m_(){sa(21)}function n_(){sa(22)}function o_(){sa(23)}function p_(){sa(24)}function q_(){sa(25)}function r_(){sa(26)}function s_(){sa(27)}function t_(){sa(28)}function u_(){sa(29)}function v_(){sa(30)}function w_(){sa(31)}function x_(){sa(32)}function y_(){sa(33)}function z_(){sa(34)}function A_(){sa(35)}function B_(){sa(36)}function C_(){sa(37)}function D_(){sa(38)}function E_(){sa(39)}function F_(){sa(40)}function G_(){sa(41)}function H_(){sa(42)}function I_(){sa(43)}function J_(){sa(44)}function K_(){sa(45)}function L_(){sa(46)}function M_(){sa(47)}function N_(){sa(48)}function O_(){sa(49)}function P_(){sa(50)}function Q_(){sa(51)}function R_(){sa(52)}function S_(){sa(53)}function T_(){sa(54)}function U_(){sa(55)}function V_(){sa(56)}function W_(){sa(57)}function X_(){sa(58)}function Y_(){sa(59)}function Z_(){sa(60)}function __(){sa(61)}function $_(){sa(62)}function a$(){sa(63)}function b$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Wb[a&255](b|0,c|0,d|0,e|0)|0}function c$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(0,a|0,b|0,c|0,d|0)|0}function d$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(1,a|0,b|0,c|0,d|0)|0}function e$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(2,a|0,b|0,c|0,d|0)|0}function f$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(3,a|0,b|0,c|0,d|0)|0}function g$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(4,a|0,b|0,c|0,d|0)|0}function h$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(5,a|0,b|0,c|0,d|0)|0}function i$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(6,a|0,b|0,c|0,d|0)|0}function j$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(7,a|0,b|0,c|0,d|0)|0}function k$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(8,a|0,b|0,c|0,d|0)|0}function l$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(9,a|0,b|0,c|0,d|0)|0}function m$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(10,a|0,b|0,c|0,d|0)|0}function n$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(11,a|0,b|0,c|0,d|0)|0}function o$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(12,a|0,b|0,c|0,d|0)|0}function p$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(13,a|0,b|0,c|0,d|0)|0}function q$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(14,a|0,b|0,c|0,d|0)|0}function r$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(15,a|0,b|0,c|0,d|0)|0}function s$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(16,a|0,b|0,c|0,d|0)|0}function t$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(17,a|0,b|0,c|0,d|0)|0}function u$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(18,a|0,b|0,c|0,d|0)|0}function v$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(19,a|0,b|0,c|0,d|0)|0}function w$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(20,a|0,b|0,c|0,d|0)|0}function x$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(21,a|0,b|0,c|0,d|0)|0}function y$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(22,a|0,b|0,c|0,d|0)|0}function z$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(23,a|0,b|0,c|0,d|0)|0}function A$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(24,a|0,b|0,c|0,d|0)|0}function B$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(25,a|0,b|0,c|0,d|0)|0}function C$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(26,a|0,b|0,c|0,d|0)|0}function D$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(27,a|0,b|0,c|0,d|0)|0}function E$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(28,a|0,b|0,c|0,d|0)|0}function F$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(29,a|0,b|0,c|0,d|0)|0}function G$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(30,a|0,b|0,c|0,d|0)|0}function H$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(31,a|0,b|0,c|0,d|0)|0}function I$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(32,a|0,b|0,c|0,d|0)|0}function J$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(33,a|0,b|0,c|0,d|0)|0}function K$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(34,a|0,b|0,c|0,d|0)|0}function L$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(35,a|0,b|0,c|0,d|0)|0}function M$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(36,a|0,b|0,c|0,d|0)|0}function N$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(37,a|0,b|0,c|0,d|0)|0}function O$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(38,a|0,b|0,c|0,d|0)|0}function P$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(39,a|0,b|0,c|0,d|0)|0}function Q$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(40,a|0,b|0,c|0,d|0)|0}function R$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(41,a|0,b|0,c|0,d|0)|0}function S$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(42,a|0,b|0,c|0,d|0)|0}function T$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(43,a|0,b|0,c|0,d|0)|0}function U$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(44,a|0,b|0,c|0,d|0)|0}function V$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(45,a|0,b|0,c|0,d|0)|0}function W$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(46,a|0,b|0,c|0,d|0)|0}function X$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(47,a|0,b|0,c|0,d|0)|0}function Y$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(48,a|0,b|0,c|0,d|0)|0}function Z$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(49,a|0,b|0,c|0,d|0)|0}function _$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(50,a|0,b|0,c|0,d|0)|0}function $$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(51,a|0,b|0,c|0,d|0)|0}function a0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(52,a|0,b|0,c|0,d|0)|0}function b0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(53,a|0,b|0,c|0,d|0)|0}function c0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(54,a|0,b|0,c|0,d|0)|0}function d0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(55,a|0,b|0,c|0,d|0)|0}function e0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(56,a|0,b|0,c|0,d|0)|0}function f0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(57,a|0,b|0,c|0,d|0)|0}function g0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(58,a|0,b|0,c|0,d|0)|0}function h0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(59,a|0,b|0,c|0,d|0)|0}function i0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(60,a|0,b|0,c|0,d|0)|0}function j0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(61,a|0,b|0,c|0,d|0)|0}function k0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(62,a|0,b|0,c|0,d|0)|0}function l0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua(63,a|0,b|0,c|0,d|0)|0}function m0(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Xb[a&255](b|0,c|0,d|0,e|0,f|0,g|0)}function n0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(0,a|0,b|0,c|0,d|0,e|0,f|0)}function o0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(1,a|0,b|0,c|0,d|0,e|0,f|0)}function p0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(2,a|0,b|0,c|0,d|0,e|0,f|0)}function q0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(3,a|0,b|0,c|0,d|0,e|0,f|0)}function r0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(4,a|0,b|0,c|0,d|0,e|0,f|0)}function s0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(5,a|0,b|0,c|0,d|0,e|0,f|0)}function t0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(6,a|0,b|0,c|0,d|0,e|0,f|0)}function u0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(7,a|0,b|0,c|0,d|0,e|0,f|0)}function v0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(8,a|0,b|0,c|0,d|0,e|0,f|0)}function w0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(9,a|0,b|0,c|0,d|0,e|0,f|0)}function x0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(10,a|0,b|0,c|0,d|0,e|0,f|0)}function y0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(11,a|0,b|0,c|0,d|0,e|0,f|0)}function z0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(12,a|0,b|0,c|0,d|0,e|0,f|0)}function A0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(13,a|0,b|0,c|0,d|0,e|0,f|0)}function B0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(14,a|0,b|0,c|0,d|0,e|0,f|0)}function C0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(15,a|0,b|0,c|0,d|0,e|0,f|0)}function D0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(16,a|0,b|0,c|0,d|0,e|0,f|0)}function E0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(17,a|0,b|0,c|0,d|0,e|0,f|0)}function F0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(18,a|0,b|0,c|0,d|0,e|0,f|0)}function G0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(19,a|0,b|0,c|0,d|0,e|0,f|0)}function H0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(20,a|0,b|0,c|0,d|0,e|0,f|0)}function I0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(21,a|0,b|0,c|0,d|0,e|0,f|0)}function J0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(22,a|0,b|0,c|0,d|0,e|0,f|0)}function K0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(23,a|0,b|0,c|0,d|0,e|0,f|0)}function L0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(24,a|0,b|0,c|0,d|0,e|0,f|0)}function M0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(25,a|0,b|0,c|0,d|0,e|0,f|0)}function N0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(26,a|0,b|0,c|0,d|0,e|0,f|0)}function O0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(27,a|0,b|0,c|0,d|0,e|0,f|0)}function P0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(28,a|0,b|0,c|0,d|0,e|0,f|0)}function Q0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(29,a|0,b|0,c|0,d|0,e|0,f|0)}function R0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(30,a|0,b|0,c|0,d|0,e|0,f|0)}function S0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(31,a|0,b|0,c|0,d|0,e|0,f|0)}function T0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(32,a|0,b|0,c|0,d|0,e|0,f|0)}function U0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(33,a|0,b|0,c|0,d|0,e|0,f|0)}function V0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(34,a|0,b|0,c|0,d|0,e|0,f|0)}function W0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(35,a|0,b|0,c|0,d|0,e|0,f|0)}function X0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(36,a|0,b|0,c|0,d|0,e|0,f|0)}function Y0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(37,a|0,b|0,c|0,d|0,e|0,f|0)}function Z0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(38,a|0,b|0,c|0,d|0,e|0,f|0)}function _0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(39,a|0,b|0,c|0,d|0,e|0,f|0)}function $0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(40,a|0,b|0,c|0,d|0,e|0,f|0)}function a1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(41,a|0,b|0,c|0,d|0,e|0,f|0)}function b1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(42,a|0,b|0,c|0,d|0,e|0,f|0)}function c1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(43,a|0,b|0,c|0,d|0,e|0,f|0)}function d1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(44,a|0,b|0,c|0,d|0,e|0,f|0)}function e1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(45,a|0,b|0,c|0,d|0,e|0,f|0)}function f1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(46,a|0,b|0,c|0,d|0,e|0,f|0)}function g1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(47,a|0,b|0,c|0,d|0,e|0,f|0)}function h1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(48,a|0,b|0,c|0,d|0,e|0,f|0)}function i1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(49,a|0,b|0,c|0,d|0,e|0,f|0)}function j1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(50,a|0,b|0,c|0,d|0,e|0,f|0)}function k1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(51,a|0,b|0,c|0,d|0,e|0,f|0)}function l1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(52,a|0,b|0,c|0,d|0,e|0,f|0)}function m1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(53,a|0,b|0,c|0,d|0,e|0,f|0)}function n1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(54,a|0,b|0,c|0,d|0,e|0,f|0)}function o1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(55,a|0,b|0,c|0,d|0,e|0,f|0)}function p1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(56,a|0,b|0,c|0,d|0,e|0,f|0)}function q1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(57,a|0,b|0,c|0,d|0,e|0,f|0)}function r1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(58,a|0,b|0,c|0,d|0,e|0,f|0)}function s1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(59,a|0,b|0,c|0,d|0,e|0,f|0)}function t1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(60,a|0,b|0,c|0,d|0,e|0,f|0)}function u1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(61,a|0,b|0,c|0,d|0,e|0,f|0)}function v1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(62,a|0,b|0,c|0,d|0,e|0,f|0)}function w1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;wa(63,a|0,b|0,c|0,d|0,e|0,f|0)}function x1(a,b,c){a=a|0;b=b|0;c=c|0;return Yb[a&255](b|0,c|0)|0}function y1(a,b){a=a|0;b=b|0;return ya(0,a|0,b|0)|0}function z1(a,b){a=a|0;b=b|0;return ya(1,a|0,b|0)|0}function A1(a,b){a=a|0;b=b|0;return ya(2,a|0,b|0)|0}function B1(a,b){a=a|0;b=b|0;return ya(3,a|0,b|0)|0}function C1(a,b){a=a|0;b=b|0;return ya(4,a|0,b|0)|0}function D1(a,b){a=a|0;b=b|0;return ya(5,a|0,b|0)|0}function E1(a,b){a=a|0;b=b|0;return ya(6,a|0,b|0)|0}function F1(a,b){a=a|0;b=b|0;return ya(7,a|0,b|0)|0}function G1(a,b){a=a|0;b=b|0;return ya(8,a|0,b|0)|0}function H1(a,b){a=a|0;b=b|0;return ya(9,a|0,b|0)|0}function I1(a,b){a=a|0;b=b|0;return ya(10,a|0,b|0)|0}function J1(a,b){a=a|0;b=b|0;return ya(11,a|0,b|0)|0}function K1(a,b){a=a|0;b=b|0;return ya(12,a|0,b|0)|0}function L1(a,b){a=a|0;b=b|0;return ya(13,a|0,b|0)|0}function M1(a,b){a=a|0;b=b|0;return ya(14,a|0,b|0)|0}function N1(a,b){a=a|0;b=b|0;return ya(15,a|0,b|0)|0}function O1(a,b){a=a|0;b=b|0;return ya(16,a|0,b|0)|0}function P1(a,b){a=a|0;b=b|0;return ya(17,a|0,b|0)|0}function Q1(a,b){a=a|0;b=b|0;return ya(18,a|0,b|0)|0}function R1(a,b){a=a|0;b=b|0;return ya(19,a|0,b|0)|0}function S1(a,b){a=a|0;b=b|0;return ya(20,a|0,b|0)|0}function T1(a,b){a=a|0;b=b|0;return ya(21,a|0,b|0)|0}function U1(a,b){a=a|0;b=b|0;return ya(22,a|0,b|0)|0}function V1(a,b){a=a|0;b=b|0;return ya(23,a|0,b|0)|0}function W1(a,b){a=a|0;b=b|0;return ya(24,a|0,b|0)|0}function X1(a,b){a=a|0;b=b|0;return ya(25,a|0,b|0)|0}function Y1(a,b){a=a|0;b=b|0;return ya(26,a|0,b|0)|0}function Z1(a,b){a=a|0;b=b|0;return ya(27,a|0,b|0)|0}function _1(a,b){a=a|0;b=b|0;return ya(28,a|0,b|0)|0}function $1(a,b){a=a|0;b=b|0;return ya(29,a|0,b|0)|0}function a2(a,b){a=a|0;b=b|0;return ya(30,a|0,b|0)|0}function b2(a,b){a=a|0;b=b|0;return ya(31,a|0,b|0)|0}function c2(a,b){a=a|0;b=b|0;return ya(32,a|0,b|0)|0}function d2(a,b){a=a|0;b=b|0;return ya(33,a|0,b|0)|0}function e2(a,b){a=a|0;b=b|0;return ya(34,a|0,b|0)|0}function f2(a,b){a=a|0;b=b|0;return ya(35,a|0,b|0)|0}function g2(a,b){a=a|0;b=b|0;return ya(36,a|0,b|0)|0}function h2(a,b){a=a|0;b=b|0;return ya(37,a|0,b|0)|0}function i2(a,b){a=a|0;b=b|0;return ya(38,a|0,b|0)|0}function j2(a,b){a=a|0;b=b|0;return ya(39,a|0,b|0)|0}function k2(a,b){a=a|0;b=b|0;return ya(40,a|0,b|0)|0}function l2(a,b){a=a|0;b=b|0;return ya(41,a|0,b|0)|0}function m2(a,b){a=a|0;b=b|0;return ya(42,a|0,b|0)|0}function n2(a,b){a=a|0;b=b|0;return ya(43,a|0,b|0)|0}function o2(a,b){a=a|0;b=b|0;return ya(44,a|0,b|0)|0}function p2(a,b){a=a|0;b=b|0;return ya(45,a|0,b|0)|0}function q2(a,b){a=a|0;b=b|0;return ya(46,a|0,b|0)|0}function r2(a,b){a=a|0;b=b|0;return ya(47,a|0,b|0)|0}function s2(a,b){a=a|0;b=b|0;return ya(48,a|0,b|0)|0}function t2(a,b){a=a|0;b=b|0;return ya(49,a|0,b|0)|0}function u2(a,b){a=a|0;b=b|0;return ya(50,a|0,b|0)|0}function v2(a,b){a=a|0;b=b|0;return ya(51,a|0,b|0)|0}function w2(a,b){a=a|0;b=b|0;return ya(52,a|0,b|0)|0}function x2(a,b){a=a|0;b=b|0;return ya(53,a|0,b|0)|0}function y2(a,b){a=a|0;b=b|0;return ya(54,a|0,b|0)|0}function z2(a,b){a=a|0;b=b|0;return ya(55,a|0,b|0)|0}function A2(a,b){a=a|0;b=b|0;return ya(56,a|0,b|0)|0}function B2(a,b){a=a|0;b=b|0;return ya(57,a|0,b|0)|0}function C2(a,b){a=a|0;b=b|0;return ya(58,a|0,b|0)|0}function D2(a,b){a=a|0;b=b|0;return ya(59,a|0,b|0)|0}function E2(a,b){a=a|0;b=b|0;return ya(60,a|0,b|0)|0}function F2(a,b){a=a|0;b=b|0;return ya(61,a|0,b|0)|0}function G2(a,b){a=a|0;b=b|0;return ya(62,a|0,b|0)|0}function H2(a,b){a=a|0;b=b|0;return ya(63,a|0,b|0)|0}function I2(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Zb[a&255](b|0,c|0,d|0,e|0,f|0)|0}function J2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(0,a|0,b|0,c|0,d|0,e|0)|0}function K2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(1,a|0,b|0,c|0,d|0,e|0)|0}function L2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(2,a|0,b|0,c|0,d|0,e|0)|0}function M2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(3,a|0,b|0,c|0,d|0,e|0)|0}function N2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(4,a|0,b|0,c|0,d|0,e|0)|0}function O2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(5,a|0,b|0,c|0,d|0,e|0)|0}function P2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(6,a|0,b|0,c|0,d|0,e|0)|0}function Q2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(7,a|0,b|0,c|0,d|0,e|0)|0}function R2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(8,a|0,b|0,c|0,d|0,e|0)|0}function S2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(9,a|0,b|0,c|0,d|0,e|0)|0}function T2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(10,a|0,b|0,c|0,d|0,e|0)|0}function U2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(11,a|0,b|0,c|0,d|0,e|0)|0}function V2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(12,a|0,b|0,c|0,d|0,e|0)|0}function W2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(13,a|0,b|0,c|0,d|0,e|0)|0}function X2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(14,a|0,b|0,c|0,d|0,e|0)|0}function Y2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(15,a|0,b|0,c|0,d|0,e|0)|0}function Z2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(16,a|0,b|0,c|0,d|0,e|0)|0}function _2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(17,a|0,b|0,c|0,d|0,e|0)|0}function $2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(18,a|0,b|0,c|0,d|0,e|0)|0}function a3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(19,a|0,b|0,c|0,d|0,e|0)|0}function b3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(20,a|0,b|0,c|0,d|0,e|0)|0}function c3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(21,a|0,b|0,c|0,d|0,e|0)|0}function d3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(22,a|0,b|0,c|0,d|0,e|0)|0}function e3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(23,a|0,b|0,c|0,d|0,e|0)|0}function f3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(24,a|0,b|0,c|0,d|0,e|0)|0}function g3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(25,a|0,b|0,c|0,d|0,e|0)|0}function h3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(26,a|0,b|0,c|0,d|0,e|0)|0}function i3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(27,a|0,b|0,c|0,d|0,e|0)|0}function j3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(28,a|0,b|0,c|0,d|0,e|0)|0}function k3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(29,a|0,b|0,c|0,d|0,e|0)|0}function l3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(30,a|0,b|0,c|0,d|0,e|0)|0}function m3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(31,a|0,b|0,c|0,d|0,e|0)|0}function n3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(32,a|0,b|0,c|0,d|0,e|0)|0}function o3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(33,a|0,b|0,c|0,d|0,e|0)|0}function p3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(34,a|0,b|0,c|0,d|0,e|0)|0}function q3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(35,a|0,b|0,c|0,d|0,e|0)|0}function r3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(36,a|0,b|0,c|0,d|0,e|0)|0}function s3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(37,a|0,b|0,c|0,d|0,e|0)|0}function t3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(38,a|0,b|0,c|0,d|0,e|0)|0}function u3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(39,a|0,b|0,c|0,d|0,e|0)|0}function v3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(40,a|0,b|0,c|0,d|0,e|0)|0}function w3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(41,a|0,b|0,c|0,d|0,e|0)|0}function x3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(42,a|0,b|0,c|0,d|0,e|0)|0}function y3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(43,a|0,b|0,c|0,d|0,e|0)|0}function z3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(44,a|0,b|0,c|0,d|0,e|0)|0}function A3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(45,a|0,b|0,c|0,d|0,e|0)|0}function B3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(46,a|0,b|0,c|0,d|0,e|0)|0}function C3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(47,a|0,b|0,c|0,d|0,e|0)|0}function D3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(48,a|0,b|0,c|0,d|0,e|0)|0}function E3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(49,a|0,b|0,c|0,d|0,e|0)|0}function F3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(50,a|0,b|0,c|0,d|0,e|0)|0}function G3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(51,a|0,b|0,c|0,d|0,e|0)|0}function H3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(52,a|0,b|0,c|0,d|0,e|0)|0}function I3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(53,a|0,b|0,c|0,d|0,e|0)|0}function J3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(54,a|0,b|0,c|0,d|0,e|0)|0}function K3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(55,a|0,b|0,c|0,d|0,e|0)|0}function L3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(56,a|0,b|0,c|0,d|0,e|0)|0}function M3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(57,a|0,b|0,c|0,d|0,e|0)|0}function N3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(58,a|0,b|0,c|0,d|0,e|0)|0}function O3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(59,a|0,b|0,c|0,d|0,e|0)|0}function P3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(60,a|0,b|0,c|0,d|0,e|0)|0}function Q3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(61,a|0,b|0,c|0,d|0,e|0)|0}function R3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(62,a|0,b|0,c|0,d|0,e|0)|0}function S3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Aa(63,a|0,b|0,c|0,d|0,e|0)|0}function T3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;_b[a&255](b|0,c|0,d|0,e|0)}function U3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(0,a|0,b|0,c|0,d|0)}function V3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(1,a|0,b|0,c|0,d|0)}function W3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(2,a|0,b|0,c|0,d|0)}function X3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(3,a|0,b|0,c|0,d|0)}function Y3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(4,a|0,b|0,c|0,d|0)}function Z3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(5,a|0,b|0,c|0,d|0)}function _3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(6,a|0,b|0,c|0,d|0)}function $3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(7,a|0,b|0,c|0,d|0)}function a4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(8,a|0,b|0,c|0,d|0)}function b4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(9,a|0,b|0,c|0,d|0)}function c4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(10,a|0,b|0,c|0,d|0)}function d4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(11,a|0,b|0,c|0,d|0)}function e4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(12,a|0,b|0,c|0,d|0)}function f4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(13,a|0,b|0,c|0,d|0)}function g4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(14,a|0,b|0,c|0,d|0)}function h4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(15,a|0,b|0,c|0,d|0)}function i4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(16,a|0,b|0,c|0,d|0)}function j4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(17,a|0,b|0,c|0,d|0)}function k4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(18,a|0,b|0,c|0,d|0)}function l4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(19,a|0,b|0,c|0,d|0)}function m4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(20,a|0,b|0,c|0,d|0)}function n4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(21,a|0,b|0,c|0,d|0)}function o4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(22,a|0,b|0,c|0,d|0)}function p4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(23,a|0,b|0,c|0,d|0)}function q4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(24,a|0,b|0,c|0,d|0)}function r4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(25,a|0,b|0,c|0,d|0)}function s4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(26,a|0,b|0,c|0,d|0)}function t4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(27,a|0,b|0,c|0,d|0)}function u4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(28,a|0,b|0,c|0,d|0)}function v4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(29,a|0,b|0,c|0,d|0)}function w4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(30,a|0,b|0,c|0,d|0)}function x4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(31,a|0,b|0,c|0,d|0)}function y4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(32,a|0,b|0,c|0,d|0)}function z4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(33,a|0,b|0,c|0,d|0)}function A4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(34,a|0,b|0,c|0,d|0)}function B4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(35,a|0,b|0,c|0,d|0)}function C4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(36,a|0,b|0,c|0,d|0)}function D4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(37,a|0,b|0,c|0,d|0)}function E4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(38,a|0,b|0,c|0,d|0)}function F4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(39,a|0,b|0,c|0,d|0)}function G4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(40,a|0,b|0,c|0,d|0)}function H4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(41,a|0,b|0,c|0,d|0)}function I4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(42,a|0,b|0,c|0,d|0)}function J4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(43,a|0,b|0,c|0,d|0)}function K4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(44,a|0,b|0,c|0,d|0)}function L4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(45,a|0,b|0,c|0,d|0)}function M4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(46,a|0,b|0,c|0,d|0)}function N4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(47,a|0,b|0,c|0,d|0)}function O4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(48,a|0,b|0,c|0,d|0)}function P4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(49,a|0,b|0,c|0,d|0)}function Q4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(50,a|0,b|0,c|0,d|0)}function R4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(51,a|0,b|0,c|0,d|0)}function S4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(52,a|0,b|0,c|0,d|0)}function T4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(53,a|0,b|0,c|0,d|0)}function U4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(54,a|0,b|0,c|0,d|0)}function V4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(55,a|0,b|0,c|0,d|0)}function W4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(56,a|0,b|0,c|0,d|0)}function X4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(57,a|0,b|0,c|0,d|0)}function Y4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(58,a|0,b|0,c|0,d|0)}function Z4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(59,a|0,b|0,c|0,d|0)}function _4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(60,a|0,b|0,c|0,d|0)}function $4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(61,a|0,b|0,c|0,d|0)}function a5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(62,a|0,b|0,c|0,d|0)}function b5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ca(63,a|0,b|0,c|0,d|0)}function c5(a,b,c){a=a|0;b=b|0;c=c|0;ba(0);return 0}function d5(){ba(1);return 0}function e5(a){a=a|0;ba(2)}function f5(a,b){a=a|0;b=b|0;ba(3)}function g5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ba(4);return 0}function h5(a){a=a|0;ba(5);return 0}function i5(a,b,c){a=a|0;b=b|0;c=c|0;ba(6)}function j5(){ba(7)}function k5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ba(8);return 0}function l5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ba(9)}function m5(a,b){a=a|0;b=b|0;ba(10);return 0}function n5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ba(11);return 0}function o5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ba(12)}var Ob=[c5,c5,wR,c5,xR,c5,yR,c5,zR,c5,AR,c5,BR,c5,CR,c5,DR,c5,ER,c5,FR,c5,GR,c5,HR,c5,IR,c5,JR,c5,KR,c5,LR,c5,MR,c5,NR,c5,OR,c5,PR,c5,QR,c5,RR,c5,SR,c5,TR,c5,UR,c5,VR,c5,WR,c5,XR,c5,YR,c5,ZR,c5,_R,c5,$R,c5,aS,c5,bS,c5,cS,c5,dS,c5,eS,c5,fS,c5,gS,c5,hS,c5,iS,c5,jS,c5,kS,c5,lS,c5,mS,c5,nS,c5,oS,c5,pS,c5,qS,c5,rS,c5,sS,c5,tS,c5,uS,c5,vS,c5,wS,c5,xS,c5,yS,c5,zS,c5,AS,c5,BS,c5,CS,c5,DS,c5,ES,c5,FS,c5,RM,UM,XM,ZM,Tk,tk,Zp,nq,Cq,Fq,Fr,nu,qu,eN,kN,yN,UP,NQ,SQ,GQ,OQ,sQ,qQ,Ln,Gm,Jm,Hn,Fn,Pn,Wn,pF,qF,rF,rQ,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5,c5];var Pb=[d5,d5,HS,d5,IS,d5,JS,d5,KS,d5,LS,d5,MS,d5,NS,d5,OS,d5,PS,d5,QS,d5,RS,d5,SS,d5,TS,d5,US,d5,VS,d5,WS,d5,XS,d5,YS,d5,ZS,d5,_S,d5,$S,d5,aT,d5,bT,d5,cT,d5,dT,d5,eT,d5,fT,d5,gT,d5,hT,d5,iT,d5,jT,d5,kT,d5,lT,d5,mT,d5,nT,d5,oT,d5,pT,d5,qT,d5,rT,d5,sT,d5,tT,d5,uT,d5,vT,d5,wT,d5,xT,d5,yT,d5,zT,d5,AT,d5,BT,d5,CT,d5,DT,d5,ET,d5,FT,d5,GT,d5,HT,d5,IT,d5,JT,d5,KT,d5,LT,d5,MT,d5,NT,d5,OT,d5,PT,d5,QT,d5,KQ,AN,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5,d5];var Qb=[e5,e5,ST,e5,TT,e5,UT,e5,VT,e5,WT,e5,XT,e5,YT,e5,ZT,e5,_T,e5,$T,e5,aU,e5,bU,e5,cU,e5,dU,e5,eU,e5,fU,e5,gU,e5,hU,e5,iU,e5,jU,e5,kU,e5,lU,e5,mU,e5,nU,e5,oU,e5,pU,e5,qU,e5,rU,e5,sU,e5,tU,e5,uU,e5,vU,e5,wU,e5,xU,e5,yU,e5,zU,e5,AU,e5,BU,e5,CU,e5,DU,e5,EU,e5,FU,e5,GU,e5,HU,e5,IU,e5,JU,e5,KU,e5,LU,e5,MU,e5,NU,e5,OU,e5,PU,e5,QU,e5,RU,e5,SU,e5,TU,e5,UU,e5,VU,e5,WU,e5,XU,e5,YU,e5,ZU,e5,_U,e5,$U,e5,Wc,Xc,Zc,_c,$c,ad,mu,uu,vu,Ju,Ou,oN,ZO,zP,AP,BP,DP,FP,Kd,Uq,tj,hk,Kn,Oz,TQ,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5,e5];var Rb=[f5,f5,bV,f5,cV,f5,dV,f5,eV,f5,fV,f5,gV,f5,hV,f5,iV,f5,jV,f5,kV,f5,lV,f5,mV,f5,nV,f5,oV,f5,pV,f5,qV,f5,rV,f5,sV,f5,tV,f5,uV,f5,vV,f5,wV,f5,xV,f5,yV,f5,zV,f5,AV,f5,BV,f5,CV,f5,DV,f5,EV,f5,FV,f5,GV,f5,HV,f5,IV,f5,JV,f5,KV,f5,LV,f5,MV,f5,NV,f5,OV,f5,PV,f5,QV,f5,RV,f5,SV,f5,TV,f5,UV,f5,VV,f5,WV,f5,XV,f5,YV,f5,ZV,f5,_V,f5,$V,f5,aW,f5,bW,f5,cW,f5,dW,f5,eW,f5,fW,f5,gW,f5,hW,f5,iW,f5,jW,f5,kW,f5,ou,tu,Ry,Xx,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5,f5]; -var Sb=[g5,g5,mW,g5,nW,g5,oW,g5,pW,g5,qW,g5,rW,g5,sW,g5,tW,g5,uW,g5,vW,g5,wW,g5,xW,g5,yW,g5,zW,g5,AW,g5,BW,g5,CW,g5,DW,g5,EW,g5,FW,g5,GW,g5,HW,g5,IW,g5,JW,g5,KW,g5,LW,g5,MW,g5,NW,g5,OW,g5,PW,g5,QW,g5,RW,g5,SW,g5,TW,g5,UW,g5,VW,g5,WW,g5,XW,g5,YW,g5,ZW,g5,_W,g5,$W,g5,aX,g5,bX,g5,cX,g5,dX,g5,eX,g5,fX,g5,gX,g5,hX,g5,iX,g5,jX,g5,kX,g5,lX,g5,mX,g5,nX,g5,oX,g5,pX,g5,qX,g5,rX,g5,sX,g5,tX,g5,uX,g5,vX,g5,Jk,Kk,lk,bq,rq,uq,Jq,gQ,PK,QK,RK,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5,g5];var Tb=[h5,h5,xX,h5,yX,h5,zX,h5,AX,h5,BX,h5,CX,h5,DX,h5,EX,h5,FX,h5,GX,h5,HX,h5,IX,h5,JX,h5,KX,h5,LX,h5,MX,h5,NX,h5,OX,h5,PX,h5,QX,h5,RX,h5,SX,h5,TX,h5,UX,h5,VX,h5,WX,h5,XX,h5,YX,h5,ZX,h5,_X,h5,$X,h5,aY,h5,bY,h5,cY,h5,dY,h5,eY,h5,fY,h5,gY,h5,hY,h5,iY,h5,jY,h5,kY,h5,lY,h5,mY,h5,nY,h5,oY,h5,pY,h5,qY,h5,rY,h5,sY,h5,tY,h5,uY,h5,vY,h5,wY,h5,xY,h5,yY,h5,zY,h5,AY,h5,BY,h5,CY,h5,DY,h5,EY,h5,FY,h5,GY,h5,Mk,Nk,Pk,Rk,Sk,Wk,Xk,Yk,Zk,nk,pk,rk,sk,_p,aq,oq,qq,wq,yq,Aq,Bq,Gq,Iq,Cr,lu,pu,Iu,Lu,Mu,Nu,bN,lN,mN,FQ,RQ,PQ,RN,aO,pQ,ae,$f,Yq,fq,gq,kq,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5,h5];var Ub=[i5,i5,IY,i5,JY,i5,KY,i5,LY,i5,MY,i5,NY,i5,OY,i5,PY,i5,QY,i5,RY,i5,SY,i5,TY,i5,UY,i5,VY,i5,WY,i5,XY,i5,YY,i5,ZY,i5,_Y,i5,$Y,i5,aZ,i5,bZ,i5,cZ,i5,dZ,i5,eZ,i5,fZ,i5,gZ,i5,hZ,i5,iZ,i5,jZ,i5,kZ,i5,lZ,i5,mZ,i5,nZ,i5,oZ,i5,pZ,i5,qZ,i5,rZ,i5,sZ,i5,tZ,i5,uZ,i5,vZ,i5,wZ,i5,xZ,i5,yZ,i5,zZ,i5,AZ,i5,BZ,i5,CZ,i5,DZ,i5,EZ,i5,FZ,i5,GZ,i5,HZ,i5,IZ,i5,JZ,i5,KZ,i5,LZ,i5,MZ,i5,NZ,i5,OZ,i5,PZ,i5,QZ,i5,RZ,i5,jc,kc,lc,mc,nc,oc,pc,qc,rc,sc,tc,uc,vc,wc,xc,yc,zc,Ac,Bc,Cc,Dc,Ec,Fc,Gc,Hc,Ic,Jc,Kc,Lc,Mc,Nc,Oc,Pc,Qc,Rc,Sc,Tc,Uc,Vc,Yc,lm,mm,nm,om,ru,Nz,Jz,Iz,kB,tB,WO,XO,YO,_O,$O,aP,bP,cP,dP,eP,fP,gP,hP,iP,jP,kP,lP,mP,nP,oP,pP,qP,rP,sP,tP,uP,vP,wP,xP,yP,CP,EP,hC,vO,wO,xO,yO,zO,AO,BO,CO,DO,EO,FO,hi,Up,Nt,Pt,Qt,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5,i5];var Vb=[j5,j5,TZ,j5,UZ,j5,VZ,j5,WZ,j5,XZ,j5,YZ,j5,ZZ,j5,_Z,j5,$Z,j5,a_,j5,b_,j5,c_,j5,d_,j5,e_,j5,f_,j5,g_,j5,h_,j5,i_,j5,j_,j5,k_,j5,l_,j5,m_,j5,n_,j5,o_,j5,p_,j5,q_,j5,r_,j5,s_,j5,t_,j5,u_,j5,v_,j5,w_,j5,x_,j5,y_,j5,z_,j5,A_,j5,B_,j5,C_,j5,D_,j5,E_,j5,F_,j5,G_,j5,H_,j5,I_,j5,J_,j5,K_,j5,L_,j5,M_,j5,N_,j5,O_,j5,P_,j5,Q_,j5,R_,j5,S_,j5,T_,j5,U_,j5,V_,j5,W_,j5,X_,j5,Y_,j5,Z_,j5,__,j5,$_,j5,a$,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5,j5];var Wb=[k5,k5,c$,k5,d$,k5,e$,k5,f$,k5,g$,k5,h$,k5,i$,k5,j$,k5,k$,k5,l$,k5,m$,k5,n$,k5,o$,k5,p$,k5,q$,k5,r$,k5,s$,k5,t$,k5,u$,k5,v$,k5,w$,k5,x$,k5,y$,k5,z$,k5,A$,k5,B$,k5,C$,k5,D$,k5,E$,k5,F$,k5,G$,k5,H$,k5,I$,k5,J$,k5,K$,k5,L$,k5,M$,k5,N$,k5,O$,k5,P$,k5,Q$,k5,R$,k5,S$,k5,T$,k5,U$,k5,V$,k5,W$,k5,X$,k5,Y$,k5,Z$,k5,_$,k5,$$,k5,a0,k5,b0,k5,c0,k5,d0,k5,e0,k5,f0,k5,g0,k5,h0,k5,i0,k5,j0,k5,k0,k5,l0,k5,SM,TM,Vk,$p,pq,Hq,nN,rN,Mh,ii,wj,Dj,Ek,Fk,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5,k5];var Xb=[l5,l5,n0,l5,o0,l5,p0,l5,q0,l5,r0,l5,s0,l5,t0,l5,u0,l5,v0,l5,w0,l5,x0,l5,y0,l5,z0,l5,A0,l5,B0,l5,C0,l5,D0,l5,E0,l5,F0,l5,G0,l5,H0,l5,I0,l5,J0,l5,K0,l5,L0,l5,M0,l5,N0,l5,O0,l5,P0,l5,Q0,l5,R0,l5,S0,l5,T0,l5,U0,l5,V0,l5,W0,l5,X0,l5,Y0,l5,Z0,l5,_0,l5,$0,l5,a1,l5,b1,l5,c1,l5,d1,l5,e1,l5,f1,l5,g1,l5,h1,l5,i1,l5,j1,l5,k1,l5,l1,l5,m1,l5,n1,l5,o1,l5,p1,l5,q1,l5,r1,l5,s1,l5,t1,l5,u1,l5,v1,l5,w1,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5,l5];var Yb=[m5,m5,y1,m5,z1,m5,A1,m5,B1,m5,C1,m5,D1,m5,E1,m5,F1,m5,G1,m5,H1,m5,I1,m5,J1,m5,K1,m5,L1,m5,M1,m5,N1,m5,O1,m5,P1,m5,Q1,m5,R1,m5,S1,m5,T1,m5,U1,m5,V1,m5,W1,m5,X1,m5,Y1,m5,Z1,m5,_1,m5,$1,m5,a2,m5,b2,m5,c2,m5,d2,m5,e2,m5,f2,m5,g2,m5,h2,m5,i2,m5,j2,m5,k2,m5,l2,m5,m2,m5,n2,m5,o2,m5,p2,m5,q2,m5,r2,m5,s2,m5,t2,m5,u2,m5,v2,m5,w2,m5,x2,m5,y2,m5,z2,m5,A2,m5,B2,m5,C2,m5,D2,m5,E2,m5,F2,m5,G2,m5,H2,m5,VM,WM,YM,_M,$M,Lk,Ok,Uk,$k,al,bl,cl,mk,ok,uk,vq,xq,Dq,Gr,Hr,Ku,lO,QN,aN,fN,gN,hN,iN,jN,pN,EQ,JQ,mQ,jQ,IQ,iQ,zN,lQ,hQ,kQ,SN,TN,UN,bO,cO,dO,kd,ld,ei,_f,Gk,Hk,Il,Jl,Ml,km,jt,os,Mt,Ot,Yx,Py,Qy,dy,ey,Dy,Jy,aB,bB,NF,TE,UE,yG,zG,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5,m5];var Zb=[n5,n5,J2,n5,K2,n5,L2,n5,M2,n5,N2,n5,O2,n5,P2,n5,Q2,n5,R2,n5,S2,n5,T2,n5,U2,n5,V2,n5,W2,n5,X2,n5,Y2,n5,Z2,n5,_2,n5,$2,n5,a3,n5,b3,n5,c3,n5,d3,n5,e3,n5,f3,n5,g3,n5,h3,n5,i3,n5,j3,n5,k3,n5,l3,n5,m3,n5,n3,n5,o3,n5,p3,n5,q3,n5,r3,n5,s3,n5,t3,n5,u3,n5,v3,n5,w3,n5,x3,n5,y3,n5,z3,n5,A3,n5,B3,n5,C3,n5,D3,n5,E3,n5,F3,n5,G3,n5,H3,n5,I3,n5,J3,n5,K3,n5,L3,n5,M3,n5,N3,n5,O3,n5,P3,n5,Q3,n5,R3,n5,S3,n5,QM,Qk,_k,qk,zq,Dr,Er,cN,dN,qN,eO,Uj,Vj,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5,n5];var _b=[o5,o5,U3,o5,V3,o5,W3,o5,X3,o5,Y3,o5,Z3,o5,_3,o5,$3,o5,a4,o5,b4,o5,c4,o5,d4,o5,e4,o5,f4,o5,g4,o5,h4,o5,i4,o5,j4,o5,k4,o5,l4,o5,m4,o5,n4,o5,o4,o5,p4,o5,q4,o5,r4,o5,s4,o5,t4,o5,u4,o5,v4,o5,w4,o5,x4,o5,y4,o5,z4,o5,A4,o5,B4,o5,C4,o5,D4,o5,E4,o5,F4,o5,G4,o5,H4,o5,I4,o5,J4,o5,K4,o5,L4,o5,M4,o5,N4,o5,O4,o5,P4,o5,Q4,o5,R4,o5,S4,o5,T4,o5,U4,o5,V4,o5,W4,o5,X4,o5,Y4,o5,Z4,o5,_4,o5,$4,o5,a5,o5,b5,o5,su,vd,xd,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5,o5];return{_sqlite3_value_blob:$d,_sqlite3_column_name:Ie,_sqlite3_reset:Zd,_sqlite3_column_type:He,_sqlite3_exec:$e,_sqlite3_result_null:me,_sqlite3_step:ue,_bitshift64Lshr:hR,_sqlite3_prepare_v2:af,_sqlite3_close_v2:sf,_sqlite3_open:Ef,_bitshift64Shl:lR,_sqlite3_result_text:ne,_fflush:tQ,_sqlite3_column_bytes:Be,_sqlite3_bind_int:Le,_sqlite3_bind_blob:Je,_memset:kR,_sqlite3_value_double:ce,_memcpy:iR,_sqlite3_result_double:ie,_sqlite3_value_text:ae,_sqlite3_changes:pf,_sqlite3_column_blob:Ae,_sqlite3_bind_parameter_index:Se,_sqlite3_value_type:fe,_i64Subtract:fR,_sqlite3_column_text:Fe,_i64Add:gR,_sqlite3_value_bytes:be,_sqlite3_finalize:Yd,_sqlite3_column_double:Ce,_sqlite3_create_function_v2:wf,_sqlite3_free:Kd,_sqlite3_value_int:de,_sqlite3_data_count:ze,_sqlite3_bind_text:Oe,_sqlite3_bind_double:Ke,___errno_location:SP,_RegisterExtensionFunctions:ic,_free:$Q,_memmove:jR,_sqlite3_errmsg:bf,_sqlite3_clear_bindings:_d,_malloc:_Q,runPostSets:eR,stackAlloc:$b,stackSave:ac,stackRestore:bc,establishStackSpace:cc,setThrew:dc,setTempRet0:gc,getTempRet0:hc,dynCall_iiii:vR,dynCall_i:GS,dynCall_vi:RT,dynCall_vii:aV,dynCall_iiiiiii:lW,dynCall_ii:wX,dynCall_viii:HY,dynCall_v:SZ,dynCall_iiiii:b$,dynCall_viiiiii:m0,dynCall_iii:x1,dynCall_iiiiii:I2,dynCall_viiii:T3}}(f.mb,f.nb,buffer);f._sqlite3_value_blob=W._sqlite3_value_blob;f._sqlite3_column_name=W._sqlite3_column_name;f._sqlite3_reset=W._sqlite3_reset;f._sqlite3_column_type=W._sqlite3_column_type;f._sqlite3_exec=W._sqlite3_exec;f._sqlite3_result_null=W._sqlite3_result_null;f._sqlite3_step=W._sqlite3_step;var Tc=f._bitshift64Lshr=W._bitshift64Lshr;f._sqlite3_prepare_v2=W._sqlite3_prepare_v2;f._sqlite3_close_v2=W._sqlite3_close_v2;f._sqlite3_open=W._sqlite3_open;var bd=f._bitshift64Shl=W._bitshift64Shl;f._sqlite3_result_text=W._sqlite3_result_text;f._fflush=W._fflush;f._sqlite3_column_bytes=W._sqlite3_column_bytes;f._sqlite3_bind_int=W._sqlite3_bind_int;f._sqlite3_bind_blob=W._sqlite3_bind_blob;var ad=f._memset=W._memset;f._sqlite3_value_double=W._sqlite3_value_double;var Yc=f._memcpy=W._memcpy;f._sqlite3_result_double=W._sqlite3_result_double;f._sqlite3_value_text=W._sqlite3_value_text;f._sqlite3_changes=W._sqlite3_changes;f._sqlite3_column_blob=W._sqlite3_column_blob;f._sqlite3_bind_parameter_index=W._sqlite3_bind_parameter_index;f._sqlite3_value_type=W._sqlite3_value_type;var zb=f._i64Subtract=W._i64Subtract;f._sqlite3_column_text=W._sqlite3_column_text;var Ab=f._i64Add=W._i64Add;f._sqlite3_value_bytes=W._sqlite3_value_bytes;f._sqlite3_finalize=W._sqlite3_finalize;f._sqlite3_column_double=W._sqlite3_column_double;f._sqlite3_create_function_v2=W._sqlite3_create_function_v2;f._sqlite3_free=W._sqlite3_free;f._sqlite3_value_int=W._sqlite3_value_int;f._sqlite3_data_count=W._sqlite3_data_count;f._sqlite3_bind_text=W._sqlite3_bind_text;f._sqlite3_bind_double=W._sqlite3_bind_double;f.___errno_location=W.___errno_location;f._RegisterExtensionFunctions=W._RegisterExtensionFunctions;var Pa=f._free=W._free;f.runPostSets=W.runPostSets;var Zc=f._memmove=W._memmove;f._sqlite3_errmsg=W._sqlite3_errmsg;f._sqlite3_clear_bindings=W._sqlite3_clear_bindings;var Ga=f._malloc=W._malloc;f.dynCall_iiii=W.dynCall_iiii;f.dynCall_i=W.dynCall_i;f.dynCall_vi=W.dynCall_vi;f.dynCall_vii=W.dynCall_vii;f.dynCall_iiiiiii=W.dynCall_iiiiiii;f.dynCall_ii=W.dynCall_ii;f.dynCall_viii=W.dynCall_viii;f.dynCall_v=W.dynCall_v;f.dynCall_iiiii=W.dynCall_iiiii;f.dynCall_viiiiii=W.dynCall_viiiiii;f.dynCall_iii=W.dynCall_iii;f.dynCall_iiiiii=W.dynCall_iiiiii;f.dynCall_viiii=W.dynCall_viiii;l.R=W.stackAlloc;l.qa=W.stackSave;l.ga=W.stackRestore;l.we=W.establishStackSpace;l.Qb=W.setTempRet0;l.Ab=W.getTempRet0;function ka(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}ka.prototype=Error();ka.prototype.constructor=ka;var Vd=null,vb=function Wd(){f.calledRun||Xd();f.calledRun||(vb=Wd)};f.callMain=f.te=function(a){function b(){for(var a=0;3>a;a++)d.push(0)}assert(0==tb,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(0==bb.length,"cannot call main when preRun functions remain to be called");a=a||[];Ja||(Ja=!0,ab(cb));var c=a.length+1,d=[z(B(f.thisProgram),"i8",0)];b();for(var e=0;eg;a=0<=g?++c:--c)e[a]=u[d+a];return e};a.prototype.get=function(a){var c,d,e;null!=a&&this.bind(a)&&this.step();e=[];a=c=0;for(d=te(this.u);0<=d?cd;a=0<=d?++c:--c)switch(re(this.u,a)){case X.gb:case X.FLOAT:e.push(this.yb(a));break;case X.ib:e.push(this.zb(a));break;case X.cb:e.push(this.getBlob(a));break;default:e.push(null)}return e};a.prototype.getColumnNames=function(){var a,c,d,e;e=[];a=c=0;for(d=te(this.u);0<=d?cd;a=0<=d?++c:--c)e.push(pe(this.u,a));return e};a.prototype.getAsObject=function(a){var c,d,e,g,h,m;m=this.get(a);g=this.getColumnNames();h={};a=c=0;for(d=g.length;c>>0);null!=a&&Gc("/",this.filename,a,!0,!0);this.handleError(xe(this.filename,Z));this.db=y(Z,"i32");be(this.db);this.ra={}}a.prototype.run=function(a,c){var d;if(!this.db)throw"Database closed";c?(d=this.prepare(a,c),d.step(),d.free()):this.handleError(ve(this.db,a,0,0,Z));return this};a.prototype.exec=function(a){var c,d,e,g,h;if(!this.db)throw"Database closed";g=l.qa();d=l.R(a.length<<3);wa(a,d);a=l.R(4);for(e=[];y(d,"i8")!==ae;)if(ya(Z,0,"i32"),ya(a,0,"i32"),this.handleError(ze(this.db,d,-1,Z,a)),c=y(Z,"i32"),d=y(a,"i32"),c!==ae){h=new ce(c,this);for(c=null;h.step();)null===c&&(c={columns:h.getColumnNames(),values:[]},e.push(c)),c.values.push(h.get());h.free()}l.ga(g);return e};a.prototype.each=function(a,c,d,e){"function"===typeof c&&(e=d,d=c,c=void 0);for(a=this.prepare(a,c);a.step();)d(a.getAsObject());a.free();if("function"===typeof e)return e()};a.prototype.prepare=function(a,c){var d,e;ya(Z,0,"i32");this.handleError(ye(this.db,a,-1,Z,ae));d=y(Z,"i32");if(d===ae)throw"Nothing to prepare";e=new ce(d,this);null!=c&&e.bind(c);return this.ra[d]=e};a.prototype["export"]=function(){var a,c,d,e;d=this.ra;for(a in d)e=d[a],e.free();this.handleError(le(this.db));e=this.filename;a=a={encoding:"binary"};a.flags=a.flags||"r";a.encoding=a.encoding||"binary";if("utf8"!==a.encoding&&"binary"!==a.encoding)throw Error('Invalid encoding type "'+a.encoding+'"');d=wc(e,a.flags);e=rc(e).size;var g=new Uint8Array(e);Ac(d,g,0,e,0);"utf8"===a.encoding?c=La(g,0):"binary"===a.encoding&&(c=g);yc(d);this.handleError(xe(this.filename,Z));this.db=y(Z,"i32");return c};a.prototype.close=function(){var a,c,d;c=this.ra;for(a in c)d=c[a],d.free();this.handleError(le(this.db));qc("/"+this.filename);return this.db=null};a.prototype.handleError=function(a){if(a===X.ka)return null;a=ue(this.db);throw Error(a)};a.prototype.getRowsModified=function(){return je(this.db)};a.prototype.create_function=function(a,c){var d;d=l.La(function(a,b,d){var m,t,r,x,v;t=[];for(m=r=0;0<=b?r<=b:r>=b;m=0<=b?++r:--r)x=y(d+4*m,"i32"),v=Ke(x),m=function(){switch(!1){case 1!==v:return Ie;case 2!==v:return He;case 3!==v:return Je;case 4!==v:return function(a){var b,c,d,e;e=Ge(a);b=Fe(a);a=new Uint8Array(e);for(c=d=0;0<=e?de;c=0<=e?++d:--d)a[c]=u[b+c];return a};default:return function(){return null}}}(),m=m(x),t.push(m);if(b=c.apply(null,t))switch(typeof b){case"number":return Be(a,b);case"string":return De(a,b,-1,-1)}else return Ce(a)});this.handleError(se(this.db,a,c.length,X.jb,0,d,0,0,0));return this};return a}();xe=f.cwrap("sqlite3_open","number",["string","number"]);le=f.cwrap("sqlite3_close_v2","number",["number"]);ve=f.cwrap("sqlite3_exec","number",["number","string","number","number","number"]);f.cwrap("sqlite3_free","",["number"]);je=f.cwrap("sqlite3_changes","number",["number"]);ye=f.cwrap("sqlite3_prepare_v2","number",["number","string","number","number","number"]);ze=f.cwrap("sqlite3_prepare_v2","number",["number","number","number","number","number"]);ie=f.cwrap("sqlite3_bind_text","number",["number","number","number","number","number"]);ee=f.cwrap("sqlite3_bind_blob","number",["number","number","number","number","number"]);fe=f.cwrap("sqlite3_bind_double","number",["number","number","number"]);ge=f.cwrap("sqlite3_bind_int","number",["number","number","number"]);he=f.cwrap("sqlite3_bind_parameter_index","number",["number","string"]);Ee=f.cwrap("sqlite3_step","number",["number"]);ue=f.cwrap("sqlite3_errmsg","string",["number"]);te=f.cwrap("sqlite3_data_count","number",["number"]);oe=f.cwrap("sqlite3_column_double","number",["number","number"]);qe=f.cwrap("sqlite3_column_text","string",["number","number"]);me=f.cwrap("sqlite3_column_blob","number",["number","number"]);ne=f.cwrap("sqlite3_column_bytes","number",["number","number"]);re=f.cwrap("sqlite3_column_type","number",["number","number"]);pe=f.cwrap("sqlite3_column_name","string",["number","number"]);Ae=f.cwrap("sqlite3_reset","number",["number"]);ke=f.cwrap("sqlite3_clear_bindings","number",["number"]);we=f.cwrap("sqlite3_finalize","number",["number"]);se=f.cwrap("sqlite3_create_function_v2","number","number string number number number number number number number".split(" "));Ke=f.cwrap("sqlite3_value_type","number",["number"]);Ge=f.cwrap("sqlite3_value_bytes","number",["number"]);Je=f.cwrap("sqlite3_value_text","string",["number"]);Ie=f.cwrap("sqlite3_value_int","number",["number"]);Fe=f.cwrap("sqlite3_value_blob","number",["number"]);He=f.cwrap("sqlite3_value_double","number",["number"]);Be=f.cwrap("sqlite3_result_double","",["number","number"]);Ce=f.cwrap("sqlite3_result_null","",["number"]);De=f.cwrap("sqlite3_result_text","",["number","string","number","number"]);be=f.cwrap("RegisterExtensionFunctions","number",["number"]);this.SQL={Database:Database};for(de in this.SQL)f[de]=this.SQL[de];ae=0;X.ka=0;X.ERROR=1;X.$d=2;X.je=3;X.Ub=4;X.Wb=5;X.ce=6;X.NOMEM=7;X.me=8;X.ae=9;X.be=10;X.Zb=11;X.NOTFOUND=12;X.Yd=13;X.Xb=14;X.ke=15;X.EMPTY=16;X.ne=17;X.pe=18;X.Yb=19;X.de=20;X.ee=21;X.fe=22;X.Vb=23;X.Xd=24;X.le=25;X.ge=26;X.he=27;X.qe=28;X.hb=100;X.DONE=101;X.gb=1;X.FLOAT=2;X.ib=3;X.cb=4;X.ie=5;X.jb=1;return this["SQL"]}();if(typeof module!=="undefined")module.exports=SQL;if(typeof define==="function")define(SQL)}).call(this,require("_process"),require("buffer").Buffer,"/node_modules/sql.js/js")},{_process:"/data/github/geopackage-node/node_modules/browserify/node_modules/process/browser.js",buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js",crypto:"/data/github/geopackage-node/node_modules/browserify/node_modules/crypto-browserify/index.js",fs:"/data/github/geopackage-node/node_modules/browserify/lib/_empty.js",path:"/data/github/geopackage-node/node_modules/browserify/node_modules/path-browserify/index.js"}],"/data/github/geopackage-node/node_modules/wkx/lib/binaryreader.js":[function(require,module,exports){(function(Buffer){module.exports=BinaryReader;function BinaryReader(buffer,isBigEndian){this.buffer=buffer;this.position=0;this.isBigEndian=isBigEndian||false}function _read(readLE,readBE,size){return function(){var value;if(this.isBigEndian)value=readBE.call(this.buffer,this.position);else value=readLE.call(this.buffer,this.position);this.position+=size;return value}}BinaryReader.prototype.readUInt8=_read(Buffer.prototype.readUInt8,Buffer.prototype.readUInt8,1);BinaryReader.prototype.readUInt16=_read(Buffer.prototype.readUInt16LE,Buffer.prototype.readUInt16BE,2);BinaryReader.prototype.readUInt32=_read(Buffer.prototype.readUInt32LE,Buffer.prototype.readUInt32BE,4);BinaryReader.prototype.readInt8=_read(Buffer.prototype.readInt8,Buffer.prototype.readInt8,1);BinaryReader.prototype.readInt16=_read(Buffer.prototype.readInt16LE,Buffer.prototype.readInt16BE,2);BinaryReader.prototype.readInt32=_read(Buffer.prototype.readInt32LE,Buffer.prototype.readInt32BE,4);BinaryReader.prototype.readFloat=_read(Buffer.prototype.readFloatLE,Buffer.prototype.readFloatBE,4);BinaryReader.prototype.readDouble=_read(Buffer.prototype.readDoubleLE,Buffer.prototype.readDoubleBE,8);BinaryReader.prototype.readVarInt=function(){var nextByte,result=0,bytesRead=0;do{nextByte=this.buffer[this.position+bytesRead];result+=(nextByte&127)<<7*bytesRead;bytesRead++}while(nextByte>=128);this.position+=bytesRead;return result}}).call(this,require("buffer").Buffer)},{buffer:"/data/github/geopackage-node/node_modules/browserify/node_modules/buffer/index.js"}],"/data/github/geopackage-node/node_modules/wkx/lib/binarywriter.js":[function(require,module,exports){(function(Buffer){module.exports=BinaryWriter;function BinaryWriter(size,allowResize){this.buffer=new Buffer(size);this.position=0;this.allowResize=allowResize}function _write(write,size){return function(value,noAssert){this.ensureSize(size);write.call(this.buffer,value,this.position,noAssert);this.position+=size}}BinaryWriter.prototype.writeUInt8=_write(Buffer.prototype.writeUInt8,1);BinaryWriter.prototype.writeUInt16LE=_write(Buffer.prototype.writeUInt16LE,2);BinaryWriter.prototype.writeUInt16BE=_write(Buffer.prototype.writeUInt16BE,2);BinaryWriter.prototype.writeUInt32LE=_write(Buffer.prototype.writeUInt32LE,4);BinaryWriter.prototype.writeUInt32BE=_write(Buffer.prototype.writeUInt32BE,4);BinaryWriter.prototype.writeInt8=_write(Buffer.prototype.writeInt8,1);BinaryWriter.prototype.writeInt16LE=_write(Buffer.prototype.writeInt16LE,2);BinaryWriter.prototype.writeInt16BE=_write(Buffer.prototype.writeInt16BE,2);BinaryWriter.prototype.writeInt32LE=_write(Buffer.prototype.writeInt32LE,4);BinaryWriter.prototype.writeInt32BE=_write(Buffer.prototype.writeInt32BE,4);BinaryWriter.prototype.writeFloatLE=_write(Buffer.prototype.writeFloatLE,4);BinaryWriter.prototype.writeFloatBE=_write(Buffer.prototype.writeFloatBE,4);BinaryWriter.prototype.writeDoubleLE=_write(Buffer.prototype.writeDoubleLE,8);BinaryWriter.prototype.writeDoubleBE=_write(Buffer.prototype.writeDoubleBE,8);BinaryWriter.prototype.writeBuffer=function(buffer){this.ensureSize(buffer.length);buffer.copy(this.buffer,this.position,0,buffer.length);this.position+=buffer.length};BinaryWriter.prototype.writeVarInt=function(value){var length=1;while((value&4294967168)!==0){this.writeUInt8(value&127|128);value>>>=7;length++}this.writeUInt8(value&127);return length};BinaryWriter.prototype.ensureSize=function(size){if(this.buffer.length=1e3&&wkbType<2e3){options.hasZ=true;geometryType=wkbType-1e3}else if(wkbType>=2e3&&wkbType<3e3){options.hasM=true;geometryType=wkbType-2e3}else if(wkbType>=3e3&&wkbType<4e3){options.hasZ=true;options.hasM=true;geometryType=wkbType-3e3}else{geometryType=wkbType}}else{if(wkbType&2147483648)options.hasZ=true;if(wkbType&1073741824)options.hasM=true;geometryType=wkbType&15}switch(geometryType){case Types.wkb.Point:return Point._parseWkb(binaryReader,options);case Types.wkb.LineString:return LineString._parseWkb(binaryReader,options);case Types.wkb.Polygon:return Polygon._parseWkb(binaryReader,options);case Types.wkb.MultiPoint:return MultiPoint._parseWkb(binaryReader,options);case Types.wkb.MultiLineString:return MultiLineString._parseWkb(binaryReader,options);case Types.wkb.MultiPolygon:return MultiPolygon._parseWkb(binaryReader,options);case Types.wkb.GeometryCollection:return GeometryCollection._parseWkb(binaryReader,options);default:throw new Error("GeometryType "+geometryType+" not supported")}};Geometry.parseTwkb=function(value){var binaryReader,options={};if(value instanceof BinaryReader)binaryReader=value;else binaryReader=new BinaryReader(value);var type=binaryReader.readUInt8();var metadataHeader=binaryReader.readUInt8();var geometryType=type&15;options.precision=ZigZag.decode(type>>4);options.precisionFactor=Math.pow(10,options.precision);options.hasBoundingBox=metadataHeader>>0&1;options.hasSizeAttribute=metadataHeader>>1&1;options.hasIdList=metadataHeader>>2&1;options.hasExtendedPrecision=metadataHeader>>3&1;options.isEmpty=metadataHeader>>4&1;if(options.hasExtendedPrecision){var extendedPrecision=binaryReader.readUInt8();options.hasZ=(extendedPrecision&1)===1;options.hasM=(extendedPrecision&2)===2;options.zPrecision=ZigZag.decode((extendedPrecision&28)>>2);options.zPrecisionFactor=Math.pow(10,options.zPrecision);options.mPrecision=ZigZag.decode((extendedPrecision&224)>>5);options.mPrecisionFactor=Math.pow(10,options.mPrecision)}else{options.hasZ=false;options.hasM=false}if(options.hasSizeAttribute)binaryReader.readVarInt();if(options.hasBoundingBox){var dimensions=2;if(options.hasZ)dimensions++;if(options.hasM)dimensions++;for(var i=0;i0)geometryCollection.hasZ=geometryCollection.geometries[0].hasZ;return geometryCollection};GeometryCollection.prototype.toWkt=function(){if(this.geometries.length===0)return this._getWktType(Types.wkt.GeometryCollection,true);var wkt=this._getWktType(Types.wkt.GeometryCollection,false)+"(";for(var i=0;i0){twkb.writeVarInt(this.geometries.length);for(var i=0;i0){this.hasZ=this.points[0].hasZ;this.hasM=this.points[0].hasM}}util.inherits(LineString,Geometry);LineString.Z=function(points){var lineString=new LineString(points);lineString.hasZ=true;return lineString};LineString.M=function(points){var lineString=new LineString(points);lineString.hasM=true;return lineString};LineString.ZM=function(points){var lineString=new LineString(points);lineString.hasZ=true;lineString.hasM=true;return lineString};LineString._parseWkt=function(value,options){var lineString=new LineString;lineString.srid=options.srid;lineString.hasZ=options.hasZ;lineString.hasM=options.hasM;if(value.isMatch(["EMPTY"]))return lineString;value.expectGroupStart();lineString.points.push.apply(lineString.points,value.matchCoordinates(options));value.expectGroupEnd();return lineString};LineString._parseWkb=function(value,options){var lineString=new LineString;lineString.srid=options.srid;lineString.hasZ=options.hasZ;lineString.hasM=options.hasM;var pointCount=value.readUInt32();for(var i=0;i0)lineString.hasZ=value.coordinates[0].length>2;for(var i=0;i0){twkb.writeVarInt(this.points.length);var previousPoint=new Point(0,0,0,0);for(var i=0;i0&&value.coordinates[0].length>0)multiLineString.hasZ=value.coordinates[0][0].length>2;for(var i=0;i0){twkb.writeVarInt(this.lineStrings.length);var previousPoint=new Point(0,0,0,0);for(var i=0;i0)multiPoint.hasZ=value.coordinates[0].length>2;for(var i=0;i0){twkb.writeVarInt(this.points.length);var previousPoint=new Point(0,0,0,0);for(var i=0;i0&&value.coordinates[0].length>0&&value.coordinates[0][0].length>0)multiPolygon.hasZ=value.coordinates[0][0][0].length>2;for(var i=0;i0){twkb.writeVarInt(this.polygons.length);var previousPoint=new Point(0,0,0,0);for(var i=0;i2)return new Point(coordinates[0],coordinates[1],coordinates[2]);return new Point(coordinates[0],coordinates[1])};Point.prototype.toWkt=function(){if(typeof this.x==="undefined"&&typeof this.y==="undefined"&&typeof this.z==="undefined"&&typeof this.m==="undefined")return this._getWktType(Types.wkt.Point,true);return this._getWktType(Types.wkt.Point,false)+"("+this._getWktCoordinate(this)+")"};Point.prototype.toWkb=function(parentOptions){var wkb=new BinaryWriter(this._getWkbSize());wkb.writeInt8(1);if(typeof this.x==="undefined"&&typeof this.y==="undefined"){this._writeWkbType(wkb,Types.wkb.MultiPoint,parentOptions);wkb.writeUInt32LE(0)}else{this._writeWkbType(wkb,Types.wkb.Point,parentOptions);this._writeWkbPoint(wkb)}return wkb.buffer};Point.prototype._writeWkbPoint=function(wkb){wkb.writeDoubleLE(this.x);wkb.writeDoubleLE(this.y);if(this.hasZ)wkb.writeDoubleLE(this.z);if(this.hasM)wkb.writeDoubleLE(this.m)};Point.prototype.toTwkb=function(){var twkb=new BinaryWriter(0,true);var precision=Geometry.getTwkbPrecision(5,0,0);var isEmpty=typeof this.x==="undefined"&&typeof this.y==="undefined";this._writeTwkbHeader(twkb,Types.wkb.Point,precision,isEmpty);if(!isEmpty)this._writeTwkbPoint(twkb,precision,new Point(0,0,0,0));return twkb.buffer};Point.prototype._writeTwkbPoint=function(twkb,precision,previousPoint){var x=this.x*precision.xyFactor;var y=this.y*precision.xyFactor;var z=this.z*precision.zFactor;var m=this.m*precision.mFactor;twkb.writeVarInt(ZigZag.encode(x-previousPoint.x));twkb.writeVarInt(ZigZag.encode(y-previousPoint.y));if(this.hasZ)twkb.writeVarInt(ZigZag.encode(z-previousPoint.z));if(this.hasM)twkb.writeVarInt(ZigZag.encode(m-previousPoint.m));previousPoint.x=x;previousPoint.y=y;previousPoint.z=z;previousPoint.m=m};Point.prototype._getWkbSize=function(){if(typeof this.x==="undefined"&&typeof this.y==="undefined")return 1+4+4;var size=1+4+8+8;if(this.hasZ)size+=8;if(this.hasM)size+=8;return size};Point.prototype.toGeoJSON=function(options){var geoJSON=Geometry.prototype.toGeoJSON.call(this,options);geoJSON.type=Types.geoJSON.Point;if(typeof this.x==="undefined"&&typeof this.y==="undefined")geoJSON.coordinates=[];else if(typeof this.z!=="undefined")geoJSON.coordinates=[this.x,this.y,this.z];else geoJSON.coordinates=[this.x,this.y];return geoJSON}},{"./binarywriter":"/data/github/geopackage-node/node_modules/wkx/lib/binarywriter.js","./geometry":"/data/github/geopackage-node/node_modules/wkx/lib/geometry.js","./types":"/data/github/geopackage-node/node_modules/wkx/lib/types.js","./zigzag.js":"/data/github/geopackage-node/node_modules/wkx/lib/zigzag.js",util:"/data/github/geopackage-node/node_modules/browserify/node_modules/util/util.js"}],"/data/github/geopackage-node/node_modules/wkx/lib/polygon.js":[function(require,module,exports){module.exports=Polygon;var util=require("util"); -var Geometry=require("./geometry");var Types=require("./types");var Point=require("./point");var BinaryWriter=require("./binarywriter");var ZigZag=require("./zigzag");function Polygon(exteriorRing,interiorRings){Geometry.call(this);this.exteriorRing=exteriorRing||[];this.interiorRings=interiorRings||[];if(this.exteriorRing.length>0){this.hasZ=this.exteriorRing[0].hasZ;this.hasM=this.exteriorRing[0].hasM}}util.inherits(Polygon,Geometry);Polygon.Z=function(exteriorRing,interiorRings){var polygon=new Polygon(exteriorRing,interiorRings);polygon.hasZ=true;return polygon};Polygon.M=function(exteriorRing,interiorRings){var polygon=new Polygon(exteriorRing,interiorRings);polygon.hasM=true;return polygon};Polygon.ZM=function(exteriorRing,interiorRings){var polygon=new Polygon(exteriorRing,interiorRings);polygon.hasZ=true;polygon.hasM=true;return polygon};Polygon._parseWkt=function(value,options){var polygon=new Polygon;polygon.srid=options.srid;polygon.hasZ=options.hasZ;polygon.hasM=options.hasM;if(value.isMatch(["EMPTY"]))return polygon;value.expectGroupStart();value.expectGroupStart();polygon.exteriorRing.push.apply(polygon.exteriorRing,value.matchCoordinates(options));value.expectGroupEnd();while(value.isMatch([","])){value.expectGroupStart();polygon.interiorRings.push(value.matchCoordinates(options));value.expectGroupEnd()}value.expectGroupEnd();return polygon};Polygon._parseWkb=function(value,options){var polygon=new Polygon;polygon.srid=options.srid;polygon.hasZ=options.hasZ;polygon.hasM=options.hasM;var ringCount=value.readUInt32();if(ringCount>0){var exteriorRingCount=value.readUInt32();for(var i=0;i0&&value.coordinates[0].length>0)polygon.hasZ=value.coordinates[0][0].length>2;for(var i=0;i0)polygon.interiorRings.push([]);for(var j=0;j0){wkb.writeUInt32LE(1+this.interiorRings.length);wkb.writeUInt32LE(this.exteriorRing.length)}else{wkb.writeUInt32LE(0)}for(var i=0;i0){twkb.writeVarInt(1+this.interiorRings.length);twkb.writeVarInt(this.exteriorRing.length);var previousPoint=new Point(0,0,0,0);for(var i=0;i0)size+=4+this.exteriorRing.length*coordinateSize;for(var i=0;i0){var exteriorRing=[];for(var i=0;i>31},decode:function(value){return value>>1^-(value&1)}}},{}]},{},["/data/github/geopackage-node/index.js"])("/data/github/geopackage-node/index.js")}); \ No newline at end of file diff --git a/libs/potree/lazylibs/sql.js/AUTHORS b/libs/potree/lazylibs/sql.js/AUTHORS deleted file mode 100644 index ae6cbb6..0000000 --- a/libs/potree/lazylibs/sql.js/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -Ophir LOJKINE (https://github.com/lovasoa) -@kripken -@hankinsoft -@firien -@dinedal -@taytay diff --git a/libs/potree/lazylibs/sql.js/LICENSE b/libs/potree/lazylibs/sql.js/LICENSE deleted file mode 100644 index d5c3c98..0000000 --- a/libs/potree/lazylibs/sql.js/LICENSE +++ /dev/null @@ -1,44 +0,0 @@ -MIT license -=========== - -Copyright (c) 2017 sql.js authors (see AUTHORS) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - -# Some portions of the Makefile taken from: -Copyright 2017 Ryusei Yamaguchi - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/libs/potree/lazylibs/sql.js/README.md b/libs/potree/lazylibs/sql.js/README.md deleted file mode 100644 index 0824c93..0000000 --- a/libs/potree/lazylibs/sql.js/README.md +++ /dev/null @@ -1,283 +0,0 @@ -# SQLite compiled to javascript -[![Build Status](https://travis-ci.org/kripken/sql.js.svg?branch=master)](http://travis-ci.org/kripken/sql.js) [![CDNJS version](https://img.shields.io/cdnjs/v/sql.js.svg)](https://cdnjs.com/libraries/sql.js) - -For the impatients, try the demo here: http://kripken.github.io/sql.js/examples/GUI - -*sql.js* is a port of [SQLite](http://sqlite.org/about.html) to Webassembly, by compiling the SQLite C code with [Emscripten](http://kripken.github.io/emscripten-site/docs/introducing_emscripten/about_emscripten.html). It uses a [virtual database file stored in memory](https://kripken.github.io/emscripten-site/docs/porting/files/file_systems_overview.html), and thus **doesn't persist the changes** made to the database. However, it allows you to **import** any existing sqlite file, and to **export** the created database as a [javascript typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays). - -There are no C bindings or node-gyp compilation here, sql.js is a simple javascript file, that can be used like any traditional javascript library. If you are building a native application in javascript (using Electron for instance), or are working in node.js, you will likely prefer to use [a native binding of SQLite to javascript](https://www.npmjs.com/package/sqlite3). - -SQLite is public domain, sql.js is MIT licensed. - -Sql.js predates WebAssembly, and thus started as an [asm.js](https://en.wikipedia.org/wiki/Asm.js) project. It still supports asm.js for backwards compatability. - -## Version of binaries -Sql.js was last built with: -Emscripten version 1.38.30 (2019-04-16) [Release History](https://emscripten.org/docs/introducing_emscripten/release_notes.html) -SqlLite version: 3.28.0 (2019-04-16) [Release History](https://www.sqlite.org/changes.html) - -## Documentation -A [full documentation](http://kripken.github.io/sql.js/documentation/#http://kripken.github.io/sql.js/documentation/class/Database.html) generated from comments inside the source code, is available. - -## Usage - -```javascript -var initSqlJs = require('sql-wasm.js'); -// or if you are in a browser: -//var initSqlJs = window.initSqlJs; - -initSqlJs().then(function(SQL){ - - // Create a database - var db = new SQL.Database(); - // NOTE: You can also use new SQL.Database(data) where - // data is an Uint8Array representing an SQLite database file - - // Execute some sql - sqlstr = "CREATE TABLE hello (a int, b char);"; - sqlstr += "INSERT INTO hello VALUES (0, 'hello');" - sqlstr += "INSERT INTO hello VALUES (1, 'world');" - db.run(sqlstr); // Run the query without returning anything - - var res = db.exec("SELECT * FROM hello"); - /* - [ - {columns:['a','b'], values:[[0,'hello'],[1,'world']]} - ] - */ - - // Prepare an sql statement - var stmt = db.prepare("SELECT * FROM hello WHERE a=:aval AND b=:bval"); - - // Bind values to the parameters and fetch the results of the query - var result = stmt.getAsObject({':aval' : 1, ':bval' : 'world'}); - console.log(result); // Will print {a:1, b:'world'} - - // Bind other values - stmt.bind([0, 'hello']); - while (stmt.step()) console.log(stmt.get()); // Will print [0, 'hello'] - - // You can also use javascript functions inside your SQL code - // Create the js function you need - function add(a, b) {return a+b;} - // Specifies the SQL function's name, the number of it's arguments, and the js function to use - db.create_function("add_js", add); - // Run a query in which the function is used - db.run("INSERT INTO hello VALUES (add_js(7, 3), add_js('Hello ', 'world'));"); // Inserts 10 and 'Hello world' - - // free the memory used by the statement - stmt.free(); - // You can not use your statement anymore once it has been freed. - // But not freeing your statements causes memory leaks. You don't want that. - - // Export the database to an Uint8Array containing the SQLite database file - var binaryArray = db.export(); -}); - -``` - -## Demo -There are a few examples [available here](https://kripken.github.io/sql.js/index.html). The most full-featured is the [Sqlite Interpreter](https://kripken.github.io/sql.js/examples/GUI/index.html). - -## Examples -The test files provide up to date example of the use of the api. -### Inside the browser -#### Example **HTML** file: -```html - - - - - - Output is in Javscript console - - -``` - -#### Creating a database from a file choosen by the user -`SQL.Database` constructor takes an array of integer representing a database file as an optional parameter. -The following code uses an HTML input as the source for loading a database: -```javascript -dbFileElm.onchange = () => { - var f = dbFileElm.files[0]; - var r = new FileReader(); - r.onload = function() { - var Uints = new Uint8Array(r.result); - db = new SQL.Database(Uints); - } - r.readAsArrayBuffer(f); -} -``` -See : http://kripken.github.io/sql.js/examples/GUI/gui.js - -#### Loading a database from a server - -```javascript -var xhr = new XMLHttpRequest(); -// For example: https://github.com/lerocha/chinook-database/raw/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite -xhr.open('GET', '/path/to/database.sqlite', true); -xhr.responseType = 'arraybuffer'; - -xhr.onload = e => { - var uInt8Array = new Uint8Array(this.response); - var db = new SQL.Database(uInt8Array); - var contents = db.exec("SELECT * FROM my_table"); - // contents is now [{columns:['col1','col2',...], values:[[first row], [second row], ...]}] -}; -xhr.send(); -``` -See: https://github.com/kripken/sql.js/wiki/Load-a-database-from-the-server - - -### Use from node.js - -`sql.js` is [hosted on npm](https://www.npmjs.org/package/sql.js). To install it, you can simply run `npm install sql.js`. -Alternatively, you can simply download `sql-wasm.js` and `sql-wasm.wasm`, from the download link below. - -#### read a database from the disk: -```javascript -var fs = require('fs'); -var initSqlJs = require('sql-wasm.js'); -var filebuffer = fs.readFileSync('test.sqlite'); - -initSqlJs().then(function(SQL){ - // Load the db - var db = new SQL.Database(filebuffer); -}); - -``` - -#### write a database to the disk -You need to convert the result of `db.export` to a buffer -```javascript -var fs = require("fs"); -// [...] (create the database) -var data = db.export(); -var buffer = new Buffer(data); -fs.writeFileSync("filename.sqlite", buffer); -``` - -See : https://github.com/kripken/sql.js/blob/master/test/test_node_file.js - -### Use as web worker -If you don't want to run CPU-intensive SQL queries in your main application thread, -you can use the *more limited* WebWorker API. - -You will need to download [dist/worker.sql-wasm.js](dist/worker.sql-wasm.js) [dist/worker.sql-wasm.wasm](dist/worker.sql-wasm.wasm). - -Example: -```html - -``` - -See [examples/GUI/gui.js](examples/GUI/gui.js) for a full working example. - -## Flavors/versions Targets/Downloads - -This library includes both WebAssembly and asm.js versions of Sqlite. (WebAssembly is the newer, preferred way to compile to Javascript, and has superceded asm.js. It produces smaller, faster code.) Asm.js versions are included for compatibility. - -## Upgrading from 0.x to 1.x - -Version 1.0 of sql.js must be loaded asynchronously, whereas asm.js was able to be loaded synchronously. - -So in the past, you would: -```html - - -``` -or: -```javascript -var SQL = require('sql.js'); -var db = new QL.Database(); -//... -``` - -Version 1.x: -```html - - -``` -or: -```javascript -var initSqlJs = require('sql-wasm.js'); -initSqlJs().then(function(SQL){ - var db = new SQL.Database(); - //... -}); -``` - -`NOTHING` is now a reserved word in SQLite, whereas previously it was not. This could cause errors like `Error: near "nothing": syntax error` - -### Downloading/Using: ### -Although asm.js files were distributed as a single Javascript file, WebAssembly libraries are most efficiently distributed as a pair of files, the `.js` loader and the `.wasm` file, like [dist/sql-wasm.js]([dist/sql-wasm.js]) and [dist/sql-wasm.wasm]([dist/sql-wasm.wasm]). The `.js` file is reponsible for wrapping/loading the `.wasm` file. - - - - -## Versions of sql.js included in `dist/` - - `sql-wasm.js` : The Web Assembly version of Sql.js. Minified and suitable for production. Use this. If you use this, you will need to include/ship `sql-wasm.wasm` as well. - - `sql-wasm-debug.js` : The Web Assembly, Debug version of Sql.js. Larger, with assertions turned on. Useful for local development. You will need to include/ship `sql-wasm-debug.wasm` if you use this. - - `sql-asm.js` : The older asm.js version of Sql.js. Slower and larger. Provided for compatiblity reasons. - - `sql-asm-memory-growth.js` : Asm.js doesn't allow for memory to grow by default, because it is slower and de-optimizes. If you are using sql-asm.js and you see this error (`Cannot enlarge memory arrays`), use this file. - - `sql-asm-debug.js` : The _Debug_ asm.js version of Sql.js. Use this for local development. - - `worker.*` - Web Worker versions of the above libraries. More limited API. See [examples/GUI/gui.js](examples/GUI/gui.js) for a good example of this. - -## Compiling - -- Install the EMSDK, [as described here](https://kripken.github.io/emscripten-site/docs/getting_started/downloads.html) -- Run `npm run rebuild` - diff --git a/libs/potree/lazylibs/sql.js/sql-wasm.js b/libs/potree/lazylibs/sql.js/sql-wasm.js deleted file mode 100644 index f75abd4..0000000 --- a/libs/potree/lazylibs/sql.js/sql-wasm.js +++ /dev/null @@ -1,209 +0,0 @@ - -// We are modularizing this manually because the current modularize setting in Emscripten has some issues: -// https://github.com/kripken/emscripten/issues/5820 -// In addition, When you use emcc's modularization, it still expects to export a global object called `Module`, -// which is able to be used/called before the WASM is loaded. -// The modularization below exports a promise that loads and resolves to the actual sql.js module. -// That way, this module can't be used before the WASM is finished loading. - -// We are going to define a function that a user will call to start loading initializing our Sql.js library -// However, that function might be called multiple times, and on subsequent calls, we don't actually want it to instantiate a new instance of the Module -// Instead, we want to return the previously loaded module - -// TODO: Make this not declare a global if used in the browser -var initSqlJsPromise = undefined; - -var initSqlJs = function (moduleConfig) { - - if (initSqlJsPromise){ - return initSqlJsPromise; - } - // If we're here, we've never called this function before - initSqlJsPromise = new Promise((resolveModule, reject) => { - - // We are modularizing this manually because the current modularize setting in Emscripten has some issues: - // https://github.com/kripken/emscripten/issues/5820 - - // The way to affect the loading of emcc compiled modules is to create a variable called `Module` and add - // properties to it, like `preRun`, `postRun`, etc - // We are using that to get notified when the WASM has finished loading. - // Only then will we return our promise - - // If they passed in a moduleConfig object, use that - // Otherwise, initialize Module to the empty object - var Module = typeof moduleConfig !== 'undefined' ? moduleConfig : {}; - - // EMCC only allows for a single onAbort function (not an array of functions) - // So if the user defined their own onAbort function, we remember it and call it - var originalOnAbortFunction = Module['onAbort']; - Module['onAbort'] = function (errorThatCausedAbort) { - reject(new Error(errorThatCausedAbort)); - if (originalOnAbortFunction){ - originalOnAbortFunction(errorThatCausedAbort); - } - }; - - Module['postRun'] = Module['postRun'] || []; - Module['postRun'].push(function () { - // When Emscripted calls postRun, this promise resolves with the built Module - resolveModule(Module); - }); - - // There is a section of code in the emcc-generated code below that looks like this: - // (Note that this is lowercase `module`) - // if (typeof module !== 'undefined') { - // module['exports'] = Module; - // } - // When that runs, it's going to overwrite our own modularization export efforts in shell-post.js! - // The only way to tell emcc not to emit it is to pass the MODULARIZE=1 or MODULARIZE_INSTANCE=1 flags, - // but that carries with it additional unnecessary baggage/bugs we don't want either. - // So, we have three options: - // 1) We undefine `module` - // 2) We remember what `module['exports']` was at the beginning of this function and we restore it later - // 3) We write a script to remove those lines of code as part of the Make process. - // - // Since those are the only lines of code that care about module, we will undefine it. It's the most straightforward - // of the options, and has the side effect of reducing emcc's efforts to modify the module if its output were to change in the future. - // That's a nice side effect since we're handling the modularization efforts ourselves - module = undefined; - - // The emcc-generated code and shell-post.js code goes below, - // meaning that all of it runs inside of this promise. If anything throws an exception, our promise will abort -var aa;var f;f||(f=typeof Module !== 'undefined' ? Module : {}); -var va=function(){var a;var b=h(4);var c={};var d=function(){function a(a,b){this.fb=a;this.db=b;this.nb=1;this.Eb=[]}a.prototype.bind=function(a){if(!this.fb)throw"Statement closed";this.reset();return Array.isArray(a)?this.lc(a):this.mc(a)};a.prototype.step=function(){var a;if(!this.fb)throw"Statement closed";this.nb=1;switch(a=Tb(this.fb)){case c.hc:return!0;case c.DONE:return!1;default:return this.db.handleError(a)}};a.prototype.sc=function(a){null==a&&(a=this.nb++);return Ub(this.fb,a)};a.prototype.tc= -function(a){null==a&&(a=this.nb++);return Vb(this.fb,a)};a.prototype.getBlob=function(a){var b;null==a&&(a=this.nb++);var c=Wb(this.fb,a);var d=Xb(this.fb,a);var e=new Uint8Array(c);for(a=b=0;0<=c?bc;a=0<=c?++b:--b)e[a]=l[d+a];return e};a.prototype.get=function(a){var b,d;null!=a&&this.bind(a)&&this.step();var e=[];a=b=0;for(d=ib(this.fb);0<=d?bd;a=0<=d?++b:--b)switch(Yb(this.fb,a)){case c.fc:case c.FLOAT:e.push(this.sc(a));break;case c.ic:e.push(this.tc(a));break;case c.Zb:e.push(this.getBlob(a)); -break;default:e.push(null)}return e};a.prototype.getColumnNames=function(){var a,b;var c=[];var d=a=0;for(b=ib(this.fb);0<=b?ab;d=0<=b?++a:--a)c.push(Zb(this.fb,d));return c};a.prototype.getAsObject=function(a){var b,c;var d=this.get(a);var e=this.getColumnNames();var g={};a=b=0;for(c=e.length;b>>0);if(null!=a){var c=this.filename,d=c?n("/",c):"/";c=ia(!0,!0);d=ja(d,(void 0!==c?c:438)&4095|32768,0);if(a){if("string"===typeof a){for(var e=Array(a.length),k=0,m=a.length;kc;e=0<=c?++g:--g){var m=q(d+4*e,"i32");var z=jc(m);e=function(){switch(!1){case 1!==z:return kc; -case 2!==z:return lc;case 3!==z:return mc;case 4!==z:return function(a){var b,c;var d=nc(a);var e=oc(a);a=new Uint8Array(d);for(b=c=0;0<=d?cd;b=0<=d?++c:--c)a[b]=l[e+b];return a};default:return function(){return null}}}();e=e(m);k.push(e)}if(c=b.apply(null,k))switch(typeof c){case "number":return pc(a,c);case "string":return qc(a,c,-1,-1)}else return rc(a)});this.handleError(sc(this.db,a,b.length,c.jc,0,d,0,0,0));return this};return a}();var g=f.cwrap("sqlite3_open","number",["string","number"]); -var k=f.cwrap("sqlite3_close_v2","number",["number"]);var m=f.cwrap("sqlite3_exec","number",["number","string","number","number","number"]);f.cwrap("sqlite3_free","",["number"]);var y=f.cwrap("sqlite3_changes","number",["number"]);var z=f.cwrap("sqlite3_prepare_v2","number",["number","string","number","number","number"]);var fa=f.cwrap("sqlite3_prepare_v2","number",["number","number","number","number","number"]);var ca=f.cwrap("sqlite3_bind_text","number",["number","number","number","number","number"]); -var Ia=f.cwrap("sqlite3_bind_blob","number",["number","number","number","number","number"]);var ac=f.cwrap("sqlite3_bind_double","number",["number","number","number"]);var $b=f.cwrap("sqlite3_bind_int","number",["number","number","number"]);var bc=f.cwrap("sqlite3_bind_parameter_index","number",["number","string"]);var Tb=f.cwrap("sqlite3_step","number",["number"]);var hc=f.cwrap("sqlite3_errmsg","string",["number"]);var ib=f.cwrap("sqlite3_data_count","number",["number"]);var Ub=f.cwrap("sqlite3_column_double", -"number",["number","number"]);var Vb=f.cwrap("sqlite3_column_text","string",["number","number"]);var Xb=f.cwrap("sqlite3_column_blob","number",["number","number"]);var Wb=f.cwrap("sqlite3_column_bytes","number",["number","number"]);var Yb=f.cwrap("sqlite3_column_type","number",["number","number"]);var Zb=f.cwrap("sqlite3_column_name","string",["number","number"]);var dc=f.cwrap("sqlite3_reset","number",["number"]);var cc=f.cwrap("sqlite3_clear_bindings","number",["number"]);var ec=f.cwrap("sqlite3_finalize", -"number",["number"]);var sc=f.cwrap("sqlite3_create_function_v2","number","number string number number number number number number number".split(" "));var jc=f.cwrap("sqlite3_value_type","number",["number"]);var nc=f.cwrap("sqlite3_value_bytes","number",["number"]);var mc=f.cwrap("sqlite3_value_text","string",["number"]);var kc=f.cwrap("sqlite3_value_int","number",["number"]);var oc=f.cwrap("sqlite3_value_blob","number",["number"]);var lc=f.cwrap("sqlite3_value_double","number",["number"]);var pc= -f.cwrap("sqlite3_result_double","",["number","number"]);var rc=f.cwrap("sqlite3_result_null","",["number"]);var qc=f.cwrap("sqlite3_result_text","",["number","string","number","number"]);var fc=f.cwrap("RegisterExtensionFunctions","number",["number"]);this.SQL={Database:e};for(a in this.SQL)f[a]=this.SQL[a];var da=0;c.xb=0;c.we=1;c.Pe=2;c.Ze=3;c.Cc=4;c.Ec=5;c.Se=6;c.NOMEM=7;c.bf=8;c.Qe=9;c.Re=10;c.Hc=11;c.NOTFOUND=12;c.Oe=13;c.Fc=14;c.$e=15;c.EMPTY=16;c.cf=17;c.df=18;c.Gc=19;c.Te=20;c.Ue=21;c.Ve= -22;c.Dc=23;c.Ne=24;c.af=25;c.We=26;c.Xe=27;c.ef=28;c.hc=100;c.DONE=101;c.fc=1;c.FLOAT=2;c.ic=3;c.Zb=4;c.Ye=5;c.jc=1}.bind(this);f.preRun=f.preRun||[];f.preRun.push(va);var wa={},u;for(u in f)f.hasOwnProperty(u)&&(wa[u]=f[u]);f.arguments=[];f.thisProgram="./this.program";f.quit=function(a,b){throw b;};f.preRun=[];f.postRun=[];var v=!1,w=!1,x=!1,xa=!1;v="object"===typeof window;w="function"===typeof importScripts;x="object"===typeof process&&"function"===typeof require&&!v&&!w;xa=!v&&!x&&!w;var A=""; -if(x){A=__dirname+"/";var ya,za;f.read=function(a,b){ya||(ya=require("fs"));za||(za=require("path"));a=za.normalize(a);a=ya.readFileSync(a);return b?a:a.toString()};f.readBinary=function(a){a=f.read(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a};1>2];a=b+a+15&-16;if(a<=Da())D[Ca>>2]=a;else if(!Ea(a))return 0;return b} -var Fa={"f64-rem":function(a,b){return a%b},"debugger":function(){debugger}},Ga=1,E=Array(64);function ua(a){for(var b=0;64>b;b++)if(!E[b])return E[b]=a,Ga+b;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.";}"object"!==typeof WebAssembly&&C("no native wasm support detected"); -function q(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return l[a>>0];case "i8":return l[a>>0];case "i16":return Ha[a>>1];case "i32":return D[a>>2];case "i64":return D[a>>2];case "float":return Ja[a>>2];case "double":return Ka[a>>3];default:B("invalid type for getValue: "+b)}return null}var La,Ma=!1;function assert(a,b){a||B("Assertion failed: "+b)}function Na(a){var b=f["_"+a];assert(b,"Cannot call unknown function "+a+", make sure it is exported");return b} -function Oa(a,b,c,d){var e={string:function(a){var b=0;if(null!==a&&void 0!==a&&0!==a){var c=(a.length<<2)+1;b=h(c);r(a,F,b,c)}return b},array:function(a){var b=h(a.length);l.set(a,b);return b}},g=Na(a),k=[];a=0;if(d)for(var m=0;m>0]=0;break;case "i8":l[a>>0]=0;break;case "i16":Ha[a>>1]=0;break;case "i32":D[a>>2]=0;break;case "i64":aa=[0,1<=+Pa(0)?~~+Qa(0)>>>0:0];D[a>>2]=aa[0];D[a+4>>2]=aa[1];break;case "float":Ja[a>>2]=0;break;case "double":Ka[a>>3]=0;break;default:B("invalid type for setValue: "+b)}}var Ra=0,Sa=3; -function ea(a){var b=Ra;if("number"===typeof a){var c=!0;var d=a}else c=!1,d=a.length;b=b==Sa?e:[Ta,h,Ba][b](Math.max(d,1));if(c){var e=b;assert(0==(b&3));for(a=b+(d&-4);e>2]=0;for(a=b+d;e>0]=0;return b}a.subarray||a.slice?F.set(a,b):F.set(new Uint8Array(a),b);return b}var Ua="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0; -function t(a,b,c){var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}function G(a){return a?t(F,a,void 0):""} -function r(a,b,c,d){if(!(0=k){var m=a.charCodeAt(++g);k=65536+((k&1023)<<10)|m&1023}if(127>=k){if(c>=d)break;b[c++]=k}else{if(2047>=k){if(c+1>=d)break;b[c++]=192|k>>6}else{if(65535>=k){if(c+2>=d)break;b[c++]=224|k>>12}else{if(c+3>=d)break;b[c++]=240|k>>18;b[c++]=128|k>>12&63}b[c++]=128|k>>6&63}b[c++]=128|k&63}}b[c]=0;return c-e} -function oa(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");function Va(a){return a.replace(/__Z[\w\d_]+/g,function(a){return a===a?a:a+" ["+a+"]"})}function Wa(a){0Ya&&C("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+Ya+"! (TOTAL_STACK=5242880)"); -f.buffer?buffer=f.buffer:"object"===typeof WebAssembly&&"function"===typeof WebAssembly.Memory?(La=new WebAssembly.Memory({initial:Ya/65536}),buffer=La.buffer):buffer=new ArrayBuffer(Ya);Xa();D[Ca>>2]=5303264;function Za(a){for(;0>2];var c=D[b>>2]}else ob.rb=!0,J.USER=J.LOGNAME="web_user",J.PATH="/",J.PWD="/",J.HOME="/home/web_user",J.LANG="C.UTF-8",J._=f.thisProgram,c=db?Ta(1024):Ba(1024),b=db?Ta(256):Ba(256),D[b>>2]=c,D[a>>2]=b;a=[];var d=0,e;for(e in J)if("string"===typeof J[e]){var g=e+"="+J[e];a.push(g);d+=g.length}if(1024>0]=d.charCodeAt(m);l[k>>0]=0;D[b+ -4*e>>2]=c;c+=g.length+1}D[b+4*a.length>>2]=0}function pb(a){f.___errno_location&&(D[f.___errno_location()>>2]=a);return a}function qb(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}function rb(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=qb(a.split("/").filter(function(a){return!!a}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a} -function sb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function tb(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function ub(){var a=Array.prototype.slice.call(arguments,0);return rb(a.join("/"))}function n(a,b){return rb(a+"/"+b)} -function vb(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=qb(a.split("/").filter(function(a){return!!a}),!b).join("/");return(b?"/":"")+a||"."}var wb=[];function xb(a,b){wb[a]={input:[],output:[],ub:b};yb(a,zb)} -var zb={open:function(a){var b=wb[a.node.rdev];if(!b)throw new K(L.Cb);a.tty=b;a.seekable=!1},close:function(a){a.tty.ub.flush(a.tty)},flush:function(a){a.tty.ub.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.ub.Xb)throw new K(L.Ob);for(var e=0,g=0;g=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.bb,a.bb=new Uint8Array(b),0b)a.bb.length=b;else for(;a.bb.length=a.node.gb)return 0;a=Math.min(a.node.gb-e,d);if(8b)throw new K(L.ib);return b},Pb:function(a,b,c){M.Tb(a.node,b+c);a.node.gb=Math.max(a.node.gb,b+c)},zb:function(a,b,c,d,e,g,k){if(32768!== -(a.node.mode&61440))throw new K(L.Cb);c=a.node.bb;if(k&2||c.buffer!==b&&c.buffer!==b.buffer){if(0>2)}catch(c){if(!c.code)throw c; -throw new K(L[c.code]);}return b.mode},kb:function(a){for(var b=[];a.parent!==a;)b.push(a.name),a=a.parent;b.push(a.jb.Hb.root);b.reverse();return ub.apply(null,b)},qc:function(a){a&=-2656257;var b=0,c;for(c in P.Ub)a&c&&(b|=P.Ub[c],a^=c);if(a)throw new K(L.ib);return b},ab:{lb:function(a){a=P.kb(a);try{var b=fs.lstatSync(a)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}P.yb&&!b.pb&&(b.pb=4096);P.yb&&!b.blocks&&(b.blocks=(b.size+b.pb-1)/b.pb|0);return{dev:b.dev,ino:b.ino,mode:b.mode,nlink:b.nlink, -uid:b.uid,gid:b.gid,rdev:b.rdev,size:b.size,atime:b.atime,mtime:b.mtime,ctime:b.ctime,pb:b.pb,blocks:b.blocks}},hb:function(a,b){var c=P.kb(a);try{void 0!==b.mode&&(fs.chmodSync(c,b.mode),a.mode=b.mode),void 0!==b.size&&fs.truncateSync(c,b.size)}catch(d){if(!d.code)throw d;throw new K(L[d.code]);}},lookup:function(a,b){var c=n(P.kb(a),b);c=P.Wb(c);return P.createNode(a,b,c)},vb:function(a,b,c,d){a=P.createNode(a,b,c,d);b=P.kb(a);try{N(a.mode)?fs.mkdirSync(b,a.mode):fs.writeFileSync(b,"",{mode:a.mode})}catch(e){if(!e.code)throw e; -throw new K(L[e.code]);}return a},rename:function(a,b,c){a=P.kb(a);b=n(P.kb(b),c);try{fs.renameSync(a,b)}catch(d){if(!d.code)throw d;throw new K(L[d.code]);}},unlink:function(a,b){a=n(P.kb(a),b);try{fs.unlinkSync(a)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}},rmdir:function(a,b){a=n(P.kb(a),b);try{fs.rmdirSync(a)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}},readdir:function(a){a=P.kb(a);try{return fs.readdirSync(a)}catch(b){if(!b.code)throw b;throw new K(L[b.code]);}},symlink:function(a, -b,c){a=n(P.kb(a),b);try{fs.symlinkSync(c,a)}catch(d){if(!d.code)throw d;throw new K(L[d.code]);}},readlink:function(a){var b=P.kb(a);try{return b=fs.readlinkSync(b),b=Fb.relative(Fb.resolve(a.jb.Hb.root),b)}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}}},cb:{open:function(a){var b=P.kb(a.node);try{32768===(a.node.mode&61440)&&(a.wb=fs.openSync(b,P.qc(a.flags)))}catch(c){if(!c.code)throw c;throw new K(L[c.code]);}},close:function(a){try{32768===(a.node.mode&61440)&&a.wb&&fs.closeSync(a.wb)}catch(b){if(!b.code)throw b; -throw new K(L[b.code]);}},read:function(a,b,c,d,e){if(0===d)return 0;try{return fs.readSync(a.wb,P.Rb(b.buffer),c,d,e)}catch(g){throw new K(L[g.code]);}},write:function(a,b,c,d,e){try{return fs.writeSync(a.wb,P.Rb(b.buffer),c,d,e)}catch(g){throw new K(L[g.code]);}},ob:function(a,b,c){if(1===c)b+=a.position;else if(2===c&&32768===(a.node.mode&61440))try{b+=fs.fstatSync(a.wb).size}catch(d){throw new K(L[d.code]);}if(0>b)throw new K(L.ib);return b}}},Gb=null,Hb={},Q=[],Ib=1,R=null,Jb=!0,S={},K=null, -Eb={};function T(a,b){a=vb("/",a);b=b||{};if(!a)return{path:"",node:null};var c={Vb:!0,Jb:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8>>0)%R.length}function Nb(a){var b=Mb(a.parent.id,a.name);a.tb=R[b];R[b]=a}function Ob(a){var b=Mb(a.parent.id,a.name);if(R[b]===a)R[b]=a.tb;else for(b=R[b];b;){if(b.tb===a){b.tb=a.tb;break}b=b.tb}} -function O(a,b){var c;if(c=(c=Pb(a,"x"))?c:a.ab.lookup?0:13)throw new K(c,a);for(c=R[Mb(a.id,b)];c;c=c.tb){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.ab.lookup(a,b)} -function Db(a,b,c,d){Qb||(Qb=function(a,b,c,d){a||(a=this);this.parent=a;this.jb=a.jb;this.sb=null;this.id=Ib++;this.name=b;this.mode=c;this.ab={};this.cb={};this.rdev=d},Qb.prototype={},Object.defineProperties(Qb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}}));a=new Qb(a,b,c,d);Nb(a);return a} -function N(a){return 16384===(a&61440)}var Rb={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function ic(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Pb(a,b){if(Jb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 13}else return 13;return 0}function tc(a,b){try{return O(a,b),17}catch(c){}return Pb(a,"wx")} -function uc(a,b,c){try{var d=O(a,b)}catch(e){return e.eb}if(a=Pb(a,"wx"))return a;if(c){if(!N(d.mode))return 20;if(d===d.parent||"/"===Lb(d))return 16}else if(N(d.mode))return 21;return 0}function vc(a){var b=4096;for(a=a||0;a<=b;a++)if(!Q[a])return a;throw new K(24);} -function wc(a,b){xc||(xc=function(){},xc.prototype={},Object.defineProperties(xc.prototype,{object:{get:function(){return this.node},set:function(a){this.node=a}}}));var c=new xc,d;for(d in a)c[d]=a[d];a=c;b=vc(b);a.fd=b;return Q[b]=a}var Cb={open:function(a){a.cb=Hb[a.node.rdev].cb;a.cb.open&&a.cb.open(a)},ob:function(){throw new K(29);}};function yb(a,b){Hb[a]={cb:b}} -function yc(a,b){var c="/"===b,d=!b;if(c&&Gb)throw new K(16);if(!c&&!d){var e=T(b,{Vb:!1});b=e.path;e=e.node;if(e.sb)throw new K(16);if(!N(e.mode))throw new K(20);}b={type:a,Hb:{},Yb:b,wc:[]};a=a.jb(b);a.jb=b;b.root=a;c?Gb=a:e&&(e.sb=b,e.jb&&e.jb.wc.push(b))}function ja(a,b,c){var d=T(a,{parent:!0}).node;a=tb(a);if(!a||"."===a||".."===a)throw new K(22);var e=tc(d,a);if(e)throw new K(e);if(!d.ab.vb)throw new K(1);return d.ab.vb(d,a,b,c)}function U(a,b){ja(a,(void 0!==b?b:511)&1023|16384,0)} -function zc(a,b,c){"undefined"===typeof c&&(c=b,b=438);ja(a,b|8192,c)}function Ac(a,b){if(!vb(a))throw new K(2);var c=T(b,{parent:!0}).node;if(!c)throw new K(2);b=tb(b);var d=tc(c,b);if(d)throw new K(d);if(!c.ab.symlink)throw new K(1);c.ab.symlink(c,b,a)} -function ta(a){var b=T(a,{parent:!0}).node,c=tb(a),d=O(b,c),e=uc(b,c,!1);if(e)throw new K(e);if(!b.ab.unlink)throw new K(1);if(d.sb)throw new K(16);try{S.willDeletePath&&S.willDeletePath(a)}catch(g){console.log("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+g.message)}b.ab.unlink(b,c);Ob(d);try{if(S.onDeletePath)S.onDeletePath(a)}catch(g){console.log("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+g.message)}} -function Kb(a){a=T(a).node;if(!a)throw new K(2);if(!a.ab.readlink)throw new K(22);return vb(Lb(a.parent),a.ab.readlink(a))}function ra(a,b){a=T(a,{qb:!b}).node;if(!a)throw new K(2);if(!a.ab.lb)throw new K(1);return a.ab.lb(a)}function Bc(a){return ra(a,!0)}function ka(a,b){var c;"string"===typeof a?c=T(a,{qb:!0}).node:c=a;if(!c.ab.hb)throw new K(1);c.ab.hb(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})} -function Cc(a){var b;"string"===typeof a?b=T(a,{qb:!0}).node:b=a;if(!b.ab.hb)throw new K(1);b.ab.hb(b,{timestamp:Date.now()})}function Dc(a,b){if(0>b)throw new K(22);var c;"string"===typeof a?c=T(a,{qb:!0}).node:c=a;if(!c.ab.hb)throw new K(1);if(N(c.mode))throw new K(21);if(32768!==(c.mode&61440))throw new K(22);if(a=Pb(c,"w"))throw new K(a);c.ab.hb(c,{size:b,timestamp:Date.now()})} -function p(a,b,c,d){if(""===a)throw new K(2);if("string"===typeof b){var e=Rb[b];if("undefined"===typeof e)throw Error("Unknown file open mode: "+b);b=e}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;if("object"===typeof a)var g=a;else{a=rb(a);try{g=T(a,{qb:!(b&131072)}).node}catch(k){}}e=!1;if(b&64)if(g){if(b&128)throw new K(17);}else g=ja(a,c,0),e=!0;if(!g)throw new K(2);8192===(g.mode&61440)&&(b&=-513);if(b&65536&&!N(g.mode))throw new K(20);if(!e&&(c=g?40960===(g.mode&61440)?40:N(g.mode)&& -("r"!==ic(b)||b&512)?21:Pb(g,ic(b)):2))throw new K(c);b&512&&Dc(g,0);b&=-641;d=wc({node:g,path:Lb(g),flags:b,seekable:!0,position:0,cb:g.cb,Bc:[],error:!1},d);d.cb.open&&d.cb.open(d);!f.logReadFiles||b&1||(Ec||(Ec={}),a in Ec||(Ec[a]=1,console.log("FS.trackingDelegate error on read file: "+a)));try{S.onOpenFile&&(g=0,1!==(b&2097155)&&(g|=1),0!==(b&2097155)&&(g|=2),S.onOpenFile(a,g))}catch(k){console.log("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+k.message)}return d} -function ma(a){if(null===a.fd)throw new K(9);a.Gb&&(a.Gb=null);try{a.cb.close&&a.cb.close(a)}catch(b){throw b;}finally{Q[a.fd]=null}a.fd=null}function Fc(a,b,c){if(null===a.fd)throw new K(9);if(!a.seekable||!a.cb.ob)throw new K(29);if(0!=c&&1!=c&&2!=c)throw new K(22);a.position=a.cb.ob(a,b,c);a.Bc=[]} -function sa(a,b,c,d,e){if(0>d||0>e)throw new K(22);if(null===a.fd)throw new K(9);if(1===(a.flags&2097155))throw new K(9);if(N(a.node.mode))throw new K(21);if(!a.cb.read)throw new K(22);var g="undefined"!==typeof e;if(!g)e=a.position;else if(!a.seekable)throw new K(29);b=a.cb.read(a,b,c,d,e);g||(a.position+=b);return b} -function la(a,b,c,d,e,g){if(0>d||0>e)throw new K(22);if(null===a.fd)throw new K(9);if(0===(a.flags&2097155))throw new K(9);if(N(a.node.mode))throw new K(21);if(!a.cb.write)throw new K(22);a.flags&1024&&Fc(a,0,2);var k="undefined"!==typeof e;if(!k)e=a.position;else if(!a.seekable)throw new K(29);b=a.cb.write(a,b,c,d,e,g);k||(a.position+=b);try{if(a.path&&S.onWriteToFile)S.onWriteToFile(a.path)}catch(m){console.log("FS.trackingDelegate['onWriteToFile']('"+a.path+"') threw an exception: "+m.message)}return b} -function Gc(){K||(K=function(a,b){this.node=b;this.zc=function(a){this.eb=a};this.zc(a);this.message="FS error";this.stack&&Object.defineProperty(this,"stack",{value:Error().stack,writable:!0})},K.prototype=Error(),K.prototype.constructor=K,[2].forEach(function(a){Eb[a]=new K(a);Eb[a].stack=""}))}var Hc;function ia(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c} -function Ic(a,b,c){a=n("/dev",a);var d=ia(!!b,!!c);Jc||(Jc=64);var e=Jc++<<8|0;yb(e,{open:function(a){a.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(a,c,d,e){for(var g=0,k=0;k>2]=d.dev;D[c+4>>2]=0;D[c+8>>2]=d.ino;D[c+12>>2]=d.mode;D[c+16>>2]=d.nlink;D[c+20>>2]=d.uid;D[c+24>>2]=d.gid;D[c+28>>2]=d.rdev;D[c+32>>2]=0;D[c+36>>2]=d.size;D[c+40>>2]=4096;D[c+44>>2]=d.blocks;D[c+48>>2]=d.atime.getTime()/1E3|0;D[c+52>>2]=0;D[c+56>>2]=d.mtime.getTime()/1E3|0;D[c+60>>2]=0;D[c+64>>2]=d.ctime.getTime()/1E3|0;D[c+68>>2]=0;D[c+72>>2]=d.ino;return 0}var W=0; -function X(){W+=4;return D[W-4>>2]}function Y(){return G(X())}function Z(){var a=Q[X()];if(!a)throw new K(L.Kb);return a}function Da(){return l.length}function Ea(a){if(2147418112=b?b=Wa(2*b):b=Math.min(Wa((3*b+2147483648)/4),2147418112);a=Wa(b);var c=buffer.byteLength;try{var d=-1!==La.grow((a-c)/65536)?buffer=La.buffer:null}catch(e){d=null}if(!d||d.byteLength!=b)return!1;Xa();return!0} -function Mc(a){if(0===a)return 0;a=G(a);if(!J.hasOwnProperty(a))return 0;Mc.rb&&ha(Mc.rb);a=J[a];var b=oa(a)+1,c=Ta(b);c&&r(a,l,c,b);Mc.rb=c;return Mc.rb}r("GMT",F,60272,4); -function Nc(){function a(a){return(a=a.toTimeString().match(/\(([A-Za-z ]+)\)$/))?a[1]:"GMT"}if(!Oc){Oc=!0;D[Pc()>>2]=60*(new Date).getTimezoneOffset();var b=new Date(2E3,0,1),c=new Date(2E3,6,1);D[Qc()>>2]=Number(b.getTimezoneOffset()!=c.getTimezoneOffset());var d=a(b),e=a(c);d=ea(ba(d));e=ea(ba(e));c.getTimezoneOffset()>2]=d,D[Rc()+4>>2]=e):(D[Rc()>>2]=e,D[Rc()+4>>2]=d)}}var Oc; -function Sc(a){a/=1E3;if((v||w)&&self.performance&&self.performance.now)for(var b=self.performance.now();self.performance.now()-b>2]=c.position;c.Gb&&0===d&&0===g&&(c.Gb=null);return 0}catch(k){return"undefined"!==typeof V&&k instanceof K||B(k),-k.eb}},ca:function(a,b){W=b;try{var c=Y(),d=X();ka(c,d);return 0}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},ba:function(a,b){W=b;try{var c=X(),d=X();if(0===d)return-L.ib;if(dd?-L.ib:p(c.path,c.flags,0,d).fd;case 1:case 2:return 0; -case 3:return c.flags;case 4:return d=X(),c.flags|=d,0;case 12:return d=X(),Ha[d+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-L.ib;case 9:return pb(L.ib),-1;default:return-L.ib}}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},U:function(a,b){W=b;try{var c=Z(),d=X(),e=X();return sa(c,l,d,e)}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},T:function(a,b){W=b;try{var c=Y();var d=X();if(d&-8)var e=-L.ib;else{var g=T(c,{qb:!0}).node;a="";d&4&&(a+="r"); -d&2&&(a+="w");d&1&&(a+="x");e=a&&Pb(g,a)?-L.$b:0}return e}catch(k){return"undefined"!==typeof V&&k instanceof K||B(k),-k.eb}},S:function(a,b){W=b;try{var c=Y(),d=X();a=c;a=rb(a);"/"===a[a.length-1]&&(a=a.substr(0,a.length-1));U(a,d);return 0}catch(e){return"undefined"!==typeof V&&e instanceof K||B(e),-e.eb}},R:function(a,b){W=b;try{var c=Z(),d=X(),e=X();return la(c,l,d,e)}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},Q:function(a,b){W=b;try{var c=Y(),d=T(c,{parent:!0}).node, -e=tb(c),g=O(d,e),k=uc(d,e,!0);if(k)throw new K(k);if(!d.ab.rmdir)throw new K(1);if(g.sb)throw new K(16);try{S.willDeletePath&&S.willDeletePath(c)}catch(m){console.log("FS.trackingDelegate['willDeletePath']('"+c+"') threw an exception: "+m.message)}d.ab.rmdir(d,e);Ob(g);try{if(S.onDeletePath)S.onDeletePath(c)}catch(m){console.log("FS.trackingDelegate['onDeletePath']('"+c+"') threw an exception: "+m.message)}return 0}catch(m){return"undefined"!==typeof V&&m instanceof K||B(m),-m.eb}},P:function(a,b){W= -b;try{var c=Y(),d=X(),e=X();return p(c,d,e).fd}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},s:function(a,b){W=b;try{var c=Z();ma(c);return 0}catch(d){return"undefined"!==typeof V&&d instanceof K||B(d),-d.eb}},O:function(a,b){W=b;try{var c=Y(),d=X();var e=X();if(0>=e)var g=-L.ib;else{var k=Kb(c),m=Math.min(e,oa(k)),y=l[d+m];r(k,F,d,e+1);l[d+m]=y;g=m}return g}catch(z){return"undefined"!==typeof V&&z instanceof K||B(z),-z.eb}},N:function(a,b){W=b;try{var c=X(),d=X(),e=Kc[c];if(!e)return 0; -if(d===e.uc){var g=Q[e.fd],k=e.flags,m=new Uint8Array(F.subarray(c,c+d));g&&g.cb.Ab&&g.cb.Ab(g,m,0,d,k);Kc[c]=null;e.Db&&ha(e.vc)}return 0}catch(y){return"undefined"!==typeof V&&y instanceof K||B(y),-y.eb}},M:function(a,b){W=b;try{var c=X(),d=X(),e=Q[c];if(!e)throw new K(9);ka(e.node,d);return 0}catch(g){return"undefined"!==typeof V&&g instanceof K||B(g),-g.eb}},L:Da,K:function(a,b,c){F.set(F.subarray(b,b+c),a)},J:Ea,r:Mc,q:function(a){var b=Date.now();D[a>>2]=b/1E3|0;D[a+4>>2]=b%1E3*1E3|0;return 0}, -I:function(a){return Math.log(a)/Math.LN10},p:function(){B("trap!")},H:function(a){Nc();a=new Date(1E3*D[a>>2]);D[15056]=a.getSeconds();D[15057]=a.getMinutes();D[15058]=a.getHours();D[15059]=a.getDate();D[15060]=a.getMonth();D[15061]=a.getFullYear()-1900;D[15062]=a.getDay();var b=new Date(a.getFullYear(),0,1);D[15063]=(a.getTime()-b.getTime())/864E5|0;D[15065]=-(60*a.getTimezoneOffset());var c=(new Date(2E3,6,1)).getTimezoneOffset();b=b.getTimezoneOffset();a=(c!=b&&a.getTimezoneOffset()==Math.min(b, -c))|0;D[15064]=a;a=D[Rc()+(a?4:0)>>2];D[15066]=a;return 60224},G:function(a,b){var c=D[a>>2];a=D[a+4>>2];0!==b&&(D[b>>2]=0,D[b+4>>2]=0);return Sc(1E6*c+a/1E3)},F:function(a){switch(a){case 30:return 16384;case 85:return 131068;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809; -case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32; -case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}pb(22);return-1}, -E:function(a){var b=Date.now()/1E3|0;a&&(D[a>>2]=b);return b},D:function(a,b){if(b){var c=1E3*D[b+8>>2];c+=D[b+12>>2]/1E3}else c=Date.now();a=G(a);try{b=c;var d=T(a,{qb:!0}).node;d.ab.hb(d,{timestamp:Math.max(b,c)});return 0}catch(e){a=e;if(!(a instanceof K)){a+=" : ";a:{d=Error();if(!d.stack){try{throw Error(0);}catch(g){d=g}if(!d.stack){d="(no stack trace available)";break a}}d=d.stack.toString()}f.extraStackTrace&&(d+="\n"+f.extraStackTrace());d=Va(d);throw a+d;}pb(a.eb);return-1}},C:function(){B("OOM")}, -a:Ca},buffer);f.asm=Vc;f._RegisterExtensionFunctions=function(){return f.asm.ha.apply(null,arguments)};var nb=f.___emscripten_environ_constructor=function(){return f.asm.ia.apply(null,arguments)};f.___errno_location=function(){return f.asm.ja.apply(null,arguments)}; -var Qc=f.__get_daylight=function(){return f.asm.ka.apply(null,arguments)},Pc=f.__get_timezone=function(){return f.asm.la.apply(null,arguments)},Rc=f.__get_tzname=function(){return f.asm.ma.apply(null,arguments)},ha=f._free=function(){return f.asm.na.apply(null,arguments)},Ta=f._malloc=function(){return f.asm.oa.apply(null,arguments)},Tc=f._memalign=function(){return f.asm.pa.apply(null,arguments)},Uc=f._memset=function(){return f.asm.qa.apply(null,arguments)}; -f._sqlite3_bind_blob=function(){return f.asm.ra.apply(null,arguments)};f._sqlite3_bind_double=function(){return f.asm.sa.apply(null,arguments)};f._sqlite3_bind_int=function(){return f.asm.ta.apply(null,arguments)};f._sqlite3_bind_parameter_index=function(){return f.asm.ua.apply(null,arguments)};f._sqlite3_bind_text=function(){return f.asm.va.apply(null,arguments)};f._sqlite3_changes=function(){return f.asm.wa.apply(null,arguments)};f._sqlite3_clear_bindings=function(){return f.asm.xa.apply(null,arguments)}; -f._sqlite3_close_v2=function(){return f.asm.ya.apply(null,arguments)};f._sqlite3_column_blob=function(){return f.asm.za.apply(null,arguments)};f._sqlite3_column_bytes=function(){return f.asm.Aa.apply(null,arguments)};f._sqlite3_column_double=function(){return f.asm.Ba.apply(null,arguments)};f._sqlite3_column_name=function(){return f.asm.Ca.apply(null,arguments)};f._sqlite3_column_text=function(){return f.asm.Da.apply(null,arguments)};f._sqlite3_column_type=function(){return f.asm.Ea.apply(null,arguments)}; -f._sqlite3_create_function_v2=function(){return f.asm.Fa.apply(null,arguments)};f._sqlite3_data_count=function(){return f.asm.Ga.apply(null,arguments)};f._sqlite3_errmsg=function(){return f.asm.Ha.apply(null,arguments)};f._sqlite3_exec=function(){return f.asm.Ia.apply(null,arguments)};f._sqlite3_finalize=function(){return f.asm.Ja.apply(null,arguments)};f._sqlite3_free=function(){return f.asm.Ka.apply(null,arguments)};f._sqlite3_open=function(){return f.asm.La.apply(null,arguments)}; -f._sqlite3_prepare_v2=function(){return f.asm.Ma.apply(null,arguments)};f._sqlite3_reset=function(){return f.asm.Na.apply(null,arguments)};f._sqlite3_result_double=function(){return f.asm.Oa.apply(null,arguments)};f._sqlite3_result_null=function(){return f.asm.Pa.apply(null,arguments)};f._sqlite3_result_text=function(){return f.asm.Qa.apply(null,arguments)};f._sqlite3_step=function(){return f.asm.Ra.apply(null,arguments)};f._sqlite3_value_blob=function(){return f.asm.Sa.apply(null,arguments)}; -f._sqlite3_value_bytes=function(){return f.asm.Ta.apply(null,arguments)};f._sqlite3_value_double=function(){return f.asm.Ua.apply(null,arguments)};f._sqlite3_value_int=function(){return f.asm.Va.apply(null,arguments)};f._sqlite3_value_text=function(){return f.asm.Wa.apply(null,arguments)};f._sqlite3_value_type=function(){return f.asm.Xa.apply(null,arguments)}; -var h=f.stackAlloc=function(){return f.asm.Za.apply(null,arguments)},qa=f.stackRestore=function(){return f.asm._a.apply(null,arguments)},na=f.stackSave=function(){return f.asm.$a.apply(null,arguments)};f.dynCall_vi=function(){return f.asm.Ya.apply(null,arguments)};f.asm=Vc;f.cwrap=function(a,b,c,d){c=c||[];var e=c.every(function(a){return"number"===a});return"string"!==b&&e&&!d?Na(a):function(){return Oa(a,b,c,arguments)}};f.stackSave=na;f.stackRestore=qa;f.stackAlloc=h; -function Wc(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}Wc.prototype=Error();Wc.prototype.constructor=Wc;gb=function Xc(){f.calledRun||Yc();f.calledRun||(gb=Xc)}; -function Yc(){function a(){if(!f.calledRun&&(f.calledRun=!0,!Ma)){db||(db=!0,f.noFSInit||Hc||(Hc=!0,Gc(),f.stdin=f.stdin,f.stdout=f.stdout,f.stderr=f.stderr,f.stdin?Ic("stdin",f.stdin):Ac("/dev/tty","/dev/stdin"),f.stdout?Ic("stdout",null,f.stdout):Ac("/dev/tty","/dev/stdout"),f.stderr?Ic("stderr",null,f.stderr):Ac("/dev/tty1","/dev/stderr"),p("/dev/stdin","r"),p("/dev/stdout","w"),p("/dev/stderr","w")),Za(ab));Jb=!1;Za(bb);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for("function"== -typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;){var a=f.postRun.shift();cb.unshift(a)}Za(cb)}}if(!(02&huzyoEav; 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

        IbsY-~g+Osb8%J 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Ǵ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ޯ`x#}oImq(?5WM^RtVA1>l-1+U`%UE2Rl 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

        Nj(Ca$cWF^KE1KeRyqzuxLjq*u0Bub+i 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

        00thGJox890Ufbl-<|d;d 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[@sF%ydm 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 PHh^;|(lM *{ - margin: 4px 20px; -} - -.ui-slider { - margin-top: 5px; - margin-bottom: 10px; - background-color: var(--color-1) !important; - background: none; - border: 1px solid black; -} - -.ui-selectmenu-button.ui-button{ - width: 100% !important; -} - -.pv-menu-list > li > .ui-slider{ - background-color: var(--color-1) !important; - background: none; - border: 1px solid black; -} - -.pv-menu-list .ui-slider{ - background-color: var(--color-1) !important; - background: none; - border: 1px solid black !important; -} - -.ui-slider-handle{ - border: 1px solid black !important; -} - -.ui-widget{ - box-sizing:border-box -} - -.panel-body > li > .ui-slider{ - background-color: var(--color-1) !important; - background: none; - border: 1px solid black; -} - -.panel-body > div > li > .ui-slider{ - background-color: var(--color-1) !important; - background: none; - border: 1px solid black; -} - -.pv-select-label{ - margin: 1px; - font-size: 90%; - font-weight: 100; -} - -.button-icon:hover{ - /*background-color: #09181C;*/ - filter: drop-shadow(0px 0px 4px white); -} - -.ui-widget-content{ - /*color: var(--font-color) !important;*/ -} - -.accordion > h3{ - background-color: var(--bg-color-2) !important; - background: #f6f6f6 50% 50% repeat-x; - border: 1px solid black; - color: var(--font-color-2); - cursor: pointer; - margin: 2px 0 0 0; - padding: 4px 10px 4px 30px; - box-shadow: 0px 3px 3px #111; - text-shadow: 1px 1px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; - font-size: 1em; -} - -.accordion > h3:hover{ - filter: brightness(125%); -} - -.accordion-content{ - padding: 0px 0px !important; - border: none !important; -} - -.icon-bar{ - height: 4px !important; - border: 1px solid black; - background-color: white; - border-radius: 2px; -} - -.canvas{ - -webkit-transition: top .35s, left .35s, bottom .35s, right .35s, width .35s; - transition: top .35s, left .35s, bottom .35s, right .35s, width .35s; -} - -#profile_window{ - background-color: var(--bg-color); -} - -#profile_titlebar{ - background-color: var(--bg-color-2); - color: var(--font-color-2); - text-shadow: 1px 1px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; - font-size: 1em; - font-weight: bold; -} - -#profile_window_title{ - position: absolute; - margin: 5px; -} - -.profile-container-button{ - cursor: pointer; -} - -.profile-button:hover{ - background-color: #0000CC; -} - -.unselectable{ - user-select: none; -} - -.selectable{ - user-select: text; -} - - - -.divider { - display: block; - text-align: center; - overflow: hidden; - white-space: nowrap; - font-weight: bold; - font-size: 90%; - letter-spacing: 1px; - margin-left: 0px; - margin-right: 0px; - margin-top: 1px; - margin-bottom: 1px; - padding: 1px !important; -} - -.divider > span { - position: relative; - display: inline-block; -} - -.divider > span:before, -.divider > span:after { - content: ""; - position: absolute; - top: 50%; - width: 9999px; - height: 1px; - background: #b2b2b2; -} - -.divider > span:before { - right: 100%; - margin-right: 5px; -} - -.divider > span:after { - left: 100%; - margin-left: 5px; -} - - - - - - - - - - - -.ol-dragbox { - background-color: rgba(255,255,255,0.4); - border-color: rgba(100,150,0,1); - border: 1px solid red; -} - -.text-icon{ - opacity: 0.5; - height: 24px; -} - -.text-icon:hover{ - opacity: 1.0; -} - -.input-grid-cell{ - flex-grow: 1; margin: 0px 3px 0px 3px; -} - -.input-grid-label{ - flex-grow: 1; - margin: 0px 3px 0px 3px; - text-align:center; - font-weight: bold; -} - -.input-grid-cell > input{ - width: 100% -} - -.invalid_value{ - color: #e05e5e; -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** - * OVERRIDES - */ - - -.ui-spinner-input{ - color: black; -} - -.jstree-themeicon-custom{ - background-size: 16px !important; -} - -.jstree-default .jstree-clicked{ - /*background-color: #ffffff !important;*/ - background-color: #34494f !important; -} - -.jstree-default .jstree-hovered{ - background-color: #34494f !important; -} - -.jstree-anchor{ - width: 100% !important; -} - -.ui-state-default{ - background: #a6a9aa !important; - border: 1px solid black; - color: black; -} - -.ui-state-active{ - background: #c6c9ca !important; - color: black !important; -} - -.cesium-viewer .cesium-viewer-cesiumWidgetContainer{ - position: absolute; - height: 100%; - width: 100%; -} - - - - -.zs_widget{ - padding: 2px; - height: 4em; - user-select: none; -} -.zs_core{ - overflow: hidden; - position: relative; - height: 100%; -} -.zs_handle{ - position: absolute; - top: 0px; - bottom: 0px; - border: 1px solid black; - border-radius: 3px; - background-color: rgb(166, 169, 170); - width: 8px; - user-select: none; - width: 1.2em; - height: 1.2em; - top: calc(50% - 0.6em); -} -.zs_stretch{ - position: absolute; - top: 0px; - bottom: 0px; - border: 1px solid black; - border-radius: 3px; - background-color: rgb(166, 169, 170); - width: 8px; - user-select: none; - width: 1.2em; - height: 1.2em; - top: calc(50% - 0.6em); - color: black; - font-weight: bold; - font-size: 1.2em; - font-family: arial; -} -.zs_handle:hover{ - background-color: lightgreen; -} -.zs_inside{ - position: absolute !important; - width: 100%; - border: 1px solid black; - background-color: white; - top: calc(50% - 0.326em); - height: 0.652em; - cursor: zoom-in; -} -.zs_outside{ - position: absolute !important; - width: 100%; - background-color: var(--color-1) !important; - top: calc(50% - 0.326em); - height: 0.652em; - cursor: zoom-in; -} -.zs_visible_range_label{ - position: absolute; - bottom: 0px; - pointer-events:none; -} -.zs_visible_range_label_left{ - left: 0px; -} -.zs_visible_range_label_right{ - right: 0px; -} -.zs_chosen_range_label{ - position: absolute; - pointer-events:none; -} - -#potree_sidebar_container{ - scrollbar-color: var(--color-1) var(--bg-color); - scrollbar-width: thin; -} - - - -::-webkit-scrollbar { - width: 6px; - background-color: var(--bg-color); -} - -::-webkit-scrollbar-track { - -} - -::-webkit-scrollbar-thumb { - background-color: var(--color-1); -} - -.propertypanel_content .heading{ - font-weight: bold; - padding-top: 0.6em; - padding-bottom: 0.1em; -} \ No newline at end of file diff --git a/libs/potree/potree.js b/libs/potree/potree.js deleted file mode 100644 index b44b953..0000000 --- a/libs/potree/potree.js +++ /dev/null @@ -1,33293 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = global || self, factory(global.Potree = {})); -}(this, (function (exports) { 'use strict'; - - /** - * @author mrdoob / http://mrdoob.com/ https://github.com/mrdoob/eventdispatcher.js - * - * with slight modifications by mschuetz, http://potree.org - * - */ - - // The MIT License - // - // Copyright (c) 2011 Mr.doob - // - // Permission is hereby granted, free of charge, to any person obtaining a copy - // of this software and associated documentation files (the "Software"), to deal - // in the Software without restriction, including without limitation the rights - // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - // copies of the Software, and to permit persons to whom the Software is - // furnished to do so, subject to the following conditions: - // - // The above copyright notice and this permission notice shall be included in - // all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - // THE SOFTWARE. - - - - - - class EventDispatcher{ - - constructor(){ - this._listeners = {}; - } - - addEventListener(type, listener){ - - const listeners = this._listeners; - - if(listeners[type] === undefined){ - listeners[type] = []; - } - - if(listeners[type].indexOf(listener) === - 1){ - listeners[type].push( listener ); - } - - } - - hasEventListener(type, listener){ - - const listeners = this._listeners; - - return listeners[type] !== undefined && listeners[type].indexOf(listener) !== - 1; - } - - removeEventListener(type, listener){ - - let listeners = this._listeners; - let listenerArray = listeners[type]; - - if (listenerArray !== undefined){ - - let index = listenerArray.indexOf(listener); - - if(index !== - 1){ - listenerArray.splice(index, 1); - } - } - - } - - removeEventListeners(type){ - if(this._listeners[type] !== undefined){ - delete this._listeners[type]; - } - }; - - dispatchEvent(event){ - - let listeners = this._listeners; - let listenerArray = listeners[event.type]; - - if ( listenerArray !== undefined ) { - event.target = this; - - for(let listener of listenerArray.slice(0)){ - listener.call(this, event); - } - } - - } - - } - - class Action extends EventDispatcher { - constructor (args = {}) { - super(); - - this.icon = args.icon || ''; - this.tooltip = args.tooltip; - - if (args.onclick !== undefined) { - this.onclick = args.onclick; - } - } - - onclick (event) { - - } - - pairWith (object) { - - } - - setIcon (newIcon) { - let oldIcon = this.icon; - - if (newIcon === oldIcon) { - return; - } - - this.icon = newIcon; - - this.dispatchEvent({ - type: 'icon_changed', - action: this, - icon: newIcon, - oldIcon: oldIcon - }); - } - }; - - //Potree.Actions = {}; - // - //Potree.Actions.ToggleAnnotationVisibility = class ToggleAnnotationVisibility extends Potree.Action { - // constructor (args = {}) { - // super(args); - // - // this.icon = Potree.resourcePath + '/icons/eye.svg'; - // this.showIn = 'sidebar'; - // this.tooltip = 'toggle visibility'; - // } - // - // pairWith (annotation) { - // if (annotation.visible) { - // this.setIcon(Potree.resourcePath + '/icons/eye.svg'); - // } else { - // this.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg'); - // } - // - // annotation.addEventListener('visibility_changed', e => { - // let annotation = e.annotation; - // - // if (annotation.visible) { - // this.setIcon(Potree.resourcePath + '/icons/eye.svg'); - // } else { - // this.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg'); - // } - // }); - // } - // - // onclick (event) { - // let annotation = event.annotation; - // - // annotation.visible = !annotation.visible; - // - // if (annotation.visible) { - // this.setIcon(Potree.resourcePath + '/icons/eye.svg'); - // } else { - // this.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg'); - // } - // } - //}; - - class PathAnimation{ - - constructor(path, start, end, speed, callback){ - this.path = path; - this.length = this.path.spline.getLength(); - this.speed = speed; - this.callback = callback; - this.tween = null; - this.startPoint = Math.max(start, 0); - this.endPoint = Math.min(end, this.length); - this.t = 0.0; - } - - start(resume = false){ - if(this.tween){ - this.tween.stop(); - this.tween = null; - } - - let tStart; - if(resume){ - tStart = this.t; - }else { - tStart = this.startPoint / this.length; - } - let tEnd = this.endPoint / this.length; - let animationDuration = (tEnd - tStart) * this.length * 1000 / this.speed; - - let progress = {t: tStart}; - this.tween = new TWEEN.Tween(progress).to({t: tEnd}, animationDuration); - this.tween.easing(TWEEN.Easing.Linear.None); - this.tween.onUpdate((e) => { - this.t = progress.t; - this.callback(progress.t); - }); - this.tween.onComplete(() => { - if(this.repeat){ - this.start(); - } - }); - - setTimeout(() => { - this.tween.start(); - }, 0); - } - - stop(){ - if(!this.tween){ - return; - } - this.tween.stop(); - this.tween = null; - this.t = 0; - } - - pause(){ - if(!this.tween){ - return; - } - - this.tween.stop(); - TWEEN.remove(this.tween); - this.tween = null; - } - - resume(){ - this.start(true); - } - - getPoint(t){ - return this.path.spline.getPoint(t); - } - - } - - class AnimationPath{ - constructor (points = []) { - this.points = points; - this.spline = new THREE.CatmullRomCurve3(points); - //this.spline.reparametrizeByArcLength(1 / this.spline.getLength().total); - } - - get (t) { - return this.spline.getPoint(t); - } - - getLength () { - return this.spline.getLength(); - } - - animate (start, end, speed, callback) { - let animation = new PathAnimation(this, start, end, speed, callback); - animation.start(); - - return animation; - } - - pause () { - if (this.tween) { - this.tween.stop(); - } - } - - resume () { - if (this.tween) { - this.tween.start(); - } - } - - getGeometry () { - let geometry = new THREE.Geometry(); - - let samples = 500; - let i = 0; - for (let u = 0; u <= 1; u += 1 / samples) { - let position = this.spline.getPoint(u); - geometry.vertices[i] = new THREE.Vector3(position.x, position.y, position.z); - - i++; - } - - if(this.closed){ - let position = this.spline.getPoint(0); - geometry.vertices[i] = new THREE.Vector3(position.x, position.y, position.z); - } - - return geometry; - } - - get closed(){ - return this.spline.closed; - } - - set closed(value){ - this.spline.closed = value; - } - - } - - /* - { - let target = new THREE.Vector3(589854.34, 231411.19, 692.77); - let points = [ - new THREE.Vector3(589815.52, 231738.31, 959.48 ), - new THREE.Vector3(589604.73, 231615.00, 968.10 ), - new THREE.Vector3(589579.11, 231354.41, 1010.06), - new THREE.Vector3(589723.00, 231169.95, 1015.57), - new THREE.Vector3(589960.76, 231116.87, 978.60 ), - new THREE.Vector3(590139.29, 231268.71, 972.33 ) - ]; - - let path = new Potree.AnimationPath(points); - - let geometry = path.getGeometry(); - let material = new THREE.LineBasicMaterial(); - let line = new THREE.Line(geometry, material); - viewer.scene.scene.add(line); - - let [start, end, speed] = [0, path.getLength(), 10]; - path.animate(start, end, speed, t => { - viewer.scene.view.position.copy(path.spline.getPoint(t)); - }); - - } - */ - - const XHRFactory = { - config: { - withCredentials: false, - customHeaders: [ - { header: null, value: null } - ] - }, - - createXMLHttpRequest: function () { - let xhr = new XMLHttpRequest(); - - if (this.config.customHeaders && - Array.isArray(this.config.customHeaders) && - this.config.customHeaders.length > 0) { - let baseOpen = xhr.open; - let customHeaders = this.config.customHeaders; - xhr.open = function () { - baseOpen.apply(this, [].slice.call(arguments)); - customHeaders.forEach(function (customHeader) { - if (!!customHeader.header && !!customHeader.value) { - xhr.setRequestHeader(customHeader.header, customHeader.value); - } - }); - }; - } - - return xhr; - } - }; - - // /** - // * adapted from http://stemkoski.github.io/Three.js/Sprite-Text-Labels.html - // */ - - // let vs2D = ` - // // precision mediump float; - // // precision mediump int; - - // // attribute vec3 position; - // // attribute vec4 color; - // // attribute vec2 uv; - - // // uniform mat4 modelViewMatrix; - // // uniform mat4 projectionMatrix; - // // uniform mat3 uvTransform; - - // uniform vec2 uPosition; - // uniform vec2 uScale; - - // varying vec2 vUv; - - - // void main(){ - - // vec2 pos = position.xy * uScale; - - // gl_Position = vec4(pos, 0.0, 1.0); - - // vUv = uv; - - - - // } - - // `; - - // let fs2D = ` - // precision mediump float; - // precision mediump int; - - // uniform sampler2D map; - - // // varying vec3 vPosition; - // // varying vec4 vColor; - // varying vec2 vUv; - - - // void main() { - - // gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); - - // gl_FragColor = vec4(vUv, 0.0, 1.0); - - // vec4 texelColor = texture2D( map, vUv ); - // //texelColor = mapTexelToLinear( texelColor ); - - // gl_FragColor = vec4(texelColor.xyz, 1.0); - - - // } - - // `; - - // function getRawMaterial(map){ - // let material = new THREE.ShaderMaterial( { - // uniforms: { - // map: { type: "t", value: map }, - // uPosition: {type: "vec2", value: [0, 0]}, - // uScale: {type: "vec2", value: [1, 1]}, - // }, - // vertexShader: vs2D, - // fragmentShader: fs2D, - // side: THREE.DoubleSide, - // transparent: false, - - // } ); - - // return material; - // } - - - class TextSprite extends THREE.Object3D{ - - constructor(text){ - super(); - - let texture = new THREE.Texture(); - texture.minFilter = THREE.LinearFilter; - texture.magFilter = THREE.LinearFilter; - let spriteMaterial = new THREE.SpriteMaterial({ - map: texture, - depthTest: false, - depthWrite: false}); - - this.texture = texture; - - this.material = spriteMaterial; - //this.material = getRawMaterial(texture); - this.sprite = new THREE.Sprite(this.material); - this.add(this.sprite); - - this.borderThickness = 4; - this.fontface = 'Arial'; - this.fontsize = 28; - this.borderColor = { r: 0, g: 0, b: 0, a: 1.0 }; - this.backgroundColor = { r: 255, g: 255, b: 255, a: 1.0 }; - this.textColor = {r: 255, g: 255, b: 255, a: 1.0}; - this.text = ''; - - this.setText(text); - } - - setText(text){ - if (this.text !== text){ - this.text = text; - - this.update(); - } - } - - setTextColor(color){ - this.textColor = color; - - this.update(); - } - - setBorderColor(color){ - this.borderColor = color; - - this.update(); - } - - setBackgroundColor(color){ - this.backgroundColor = color; - - this.update(); - } - - update(){ - let canvas = document.createElement('canvas'); - let context = canvas.getContext('2d'); - context.font = 'Bold ' + this.fontsize + 'px ' + this.fontface; - - // get size data (height depends only on font size) - let metrics = context.measureText(this.text); - let textWidth = metrics.width; - let margin = 5; - let spriteWidth = 2 * margin + textWidth + 2 * this.borderThickness; - let spriteHeight = this.fontsize * 1.4 + 2 * this.borderThickness; - - context.canvas.width = spriteWidth; - context.canvas.height = spriteHeight; - context.font = 'Bold ' + this.fontsize + 'px ' + this.fontface; - - // background color - context.fillStyle = 'rgba(' + this.backgroundColor.r + ',' + this.backgroundColor.g + ',' + - this.backgroundColor.b + ',' + this.backgroundColor.a + ')'; - // border color - context.strokeStyle = 'rgba(' + this.borderColor.r + ',' + this.borderColor.g + ',' + - this.borderColor.b + ',' + this.borderColor.a + ')'; - - context.lineWidth = this.borderThickness; - this.roundRect(context, this.borderThickness / 2, this.borderThickness / 2, - textWidth + this.borderThickness + 2 * margin, this.fontsize * 1.4 + this.borderThickness, 6); - - // text color - context.strokeStyle = 'rgba(0, 0, 0, 1.0)'; - context.strokeText(this.text, this.borderThickness + margin, this.fontsize + this.borderThickness); - - context.fillStyle = 'rgba(' + this.textColor.r + ',' + this.textColor.g + ',' + - this.textColor.b + ',' + this.textColor.a + ')'; - context.fillText(this.text, this.borderThickness + margin, this.fontsize + this.borderThickness); - - let texture = new THREE.Texture(canvas); - texture.minFilter = THREE.LinearFilter; - texture.magFilter = THREE.LinearFilter; - texture.needsUpdate = true; - //this.material.needsUpdate = true; - - // { // screen-space sprite - // let [screenWidth, screenHeight] = [1620, 937]; - - // let uniforms = this.sprite.material.uniforms; - // let aspect = spriteHeight / spriteWidth; - // let factor = 0.5; - - // let w = spriteWidth / screenWidth; - // let h = spriteHeight / screenHeight; - - // uniforms.uScale.value = [2 * w, 2 * h]; - // //uniforms.uScale.value = [factor * 1, factor * aspect]; - // this.sprite.material.uniforms.map.value = texture; - // } - - this.sprite.material.map = texture; - this.texture = texture; - - this.sprite.scale.set(spriteWidth * 0.01, spriteHeight * 0.01, 1.0); - } - - roundRect(ctx, x, y, w, h, r){ - ctx.beginPath(); - ctx.moveTo(x + r, y); - ctx.lineTo(x + w - r, y); - ctx.quadraticCurveTo(x + w, y, x + w, y + r); - ctx.lineTo(x + w, y + h - r); - ctx.quadraticCurveTo(x + w, y + h, x + w - r, y + h); - ctx.lineTo(x + r, y + h); - ctx.quadraticCurveTo(x, y + h, x, y + h - r); - ctx.lineTo(x, y + r); - ctx.quadraticCurveTo(x, y, x + r, y); - ctx.closePath(); - ctx.fill(); - ctx.stroke(); - } - - } - - class Volume extends THREE.Object3D { - constructor (args = {}) { - super(); - - if(this.constructor.name === "Volume"){ - console.warn("Can't create object of class Volume directly. Use classes BoxVolume or SphereVolume instead."); - } - - //console.log(this); - //console.log(this.constructor); - //console.log(this.constructor.name); - - this._clip = args.clip || false; - this._visible = true; - this.showVolumeLabel = true; - this._modifiable = args.modifiable || true; - - this.label = new TextSprite('0'); - this.label.setBorderColor({r: 0, g: 255, b: 0, a: 0.0}); - this.label.setBackgroundColor({r: 0, g: 255, b: 0, a: 0.0}); - this.label.material.depthTest = false; - this.label.material.depthWrite = false; - this.label.material.transparent = true; - this.label.position.y -= 0.5; - this.add(this.label); - - this.label.updateMatrixWorld = () => { - let volumeWorldPos = new THREE.Vector3(); - volumeWorldPos.setFromMatrixPosition(this.matrixWorld); - this.label.position.copy(volumeWorldPos); - this.label.updateMatrix(); - this.label.matrixWorld.copy(this.label.matrix); - this.label.matrixWorldNeedsUpdate = false; - - for (let i = 0, l = this.label.children.length; i < l; i++) { - this.label.children[ i ].updateMatrixWorld(true); - } - }; - - { // event listeners - this.addEventListener('select', e => {}); - this.addEventListener('deselect', e => {}); - } - - } - - get visible(){ - return this._visible; - } - - set visible(value){ - if(this._visible !== value){ - this._visible = value; - - this.dispatchEvent({type: "visibility_changed", object: this}); - } - } - - getVolume () { - console.warn("override this in subclass"); - } - - update () { - - }; - - raycast (raycaster, intersects) { - - } - - get clip () { - return this._clip; - } - - set clip (value) { - - if(this._clip !== value){ - this._clip = value; - - this.update(); - - this.dispatchEvent({ - type: "clip_changed", - object: this - }); - } - - } - - get modifieable () { - return this._modifiable; - } - - set modifieable (value) { - this._modifiable = value; - - this.update(); - } - }; - - - class BoxVolume extends Volume{ - - constructor(args = {}){ - super(args); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - this.name = 'box_' + this.constructor.counter; - - let boxGeometry = new THREE.BoxGeometry(1, 1, 1); - boxGeometry.computeBoundingBox(); - - let boxFrameGeometry = new THREE.Geometry(); - { - let Vector3 = THREE.Vector3; - - boxFrameGeometry.vertices.push( - - // bottom - new Vector3(-0.5, -0.5, 0.5), - new Vector3(0.5, -0.5, 0.5), - new Vector3(0.5, -0.5, 0.5), - new Vector3(0.5, -0.5, -0.5), - new Vector3(0.5, -0.5, -0.5), - new Vector3(-0.5, -0.5, -0.5), - new Vector3(-0.5, -0.5, -0.5), - new Vector3(-0.5, -0.5, 0.5), - // top - new Vector3(-0.5, 0.5, 0.5), - new Vector3(0.5, 0.5, 0.5), - new Vector3(0.5, 0.5, 0.5), - new Vector3(0.5, 0.5, -0.5), - new Vector3(0.5, 0.5, -0.5), - new Vector3(-0.5, 0.5, -0.5), - new Vector3(-0.5, 0.5, -0.5), - new Vector3(-0.5, 0.5, 0.5), - // sides - new Vector3(-0.5, -0.5, 0.5), - new Vector3(-0.5, 0.5, 0.5), - new Vector3(0.5, -0.5, 0.5), - new Vector3(0.5, 0.5, 0.5), - new Vector3(0.5, -0.5, -0.5), - new Vector3(0.5, 0.5, -0.5), - new Vector3(-0.5, -0.5, -0.5), - new Vector3(-0.5, 0.5, -0.5), - - ); - - } - - this.material = new THREE.MeshBasicMaterial({ - color: 0x00ff00, - transparent: true, - opacity: 0.3, - depthTest: true, - depthWrite: false}); - this.box = new THREE.Mesh(boxGeometry, this.material); - this.box.geometry.computeBoundingBox(); - this.boundingBox = this.box.geometry.boundingBox; - this.add(this.box); - - this.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000})); - // this.frame.mode = THREE.Lines; - this.add(this.frame); - - this.update(); - } - - update(){ - this.boundingBox = this.box.geometry.boundingBox; - this.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere()); - - if (this._clip) { - this.box.visible = false; - this.label.visible = false; - } else { - this.box.visible = true; - this.label.visible = this.showVolumeLabel; - } - } - - raycast (raycaster, intersects) { - let is = []; - this.box.raycast(raycaster, is); - - if (is.length > 0) { - let I = is[0]; - intersects.push({ - distance: I.distance, - object: this, - point: I.point.clone() - }); - } - } - - getVolume(){ - return Math.abs(this.scale.x * this.scale.y * this.scale.z); - } - - }; - - class SphereVolume extends Volume{ - - constructor(args = {}){ - super(args); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - this.name = 'sphere_' + this.constructor.counter; - - let sphereGeometry = new THREE.SphereGeometry(1, 32, 32); - sphereGeometry.computeBoundingBox(); - - this.material = new THREE.MeshBasicMaterial({ - color: 0x00ff00, - transparent: true, - opacity: 0.3, - depthTest: true, - depthWrite: false}); - this.sphere = new THREE.Mesh(sphereGeometry, this.material); - this.sphere.visible = false; - this.sphere.geometry.computeBoundingBox(); - this.boundingBox = this.sphere.geometry.boundingBox; - this.add(this.sphere); - - this.label.visible = false; - - - let frameGeometry = new THREE.Geometry(); - { - let steps = 64; - let uSegments = 8; - let vSegments = 5; - let r = 1; - - for(let uSegment = 0; uSegment < uSegments; uSegment++){ - - let alpha = (uSegment / uSegments) * Math.PI * 2; - let dirx = Math.cos(alpha); - let diry = Math.sin(alpha); - - for(let i = 0; i <= steps; i++){ - let v = (i / steps) * Math.PI * 2; - let vNext = v + 2 * Math.PI / steps; - - let height = Math.sin(v); - let xyAmount = Math.cos(v); - - let heightNext = Math.sin(vNext); - let xyAmountNext = Math.cos(vNext); - - let vertex = new THREE.Vector3(dirx * xyAmount, diry * xyAmount, height); - frameGeometry.vertices.push(vertex); - - let vertexNext = new THREE.Vector3(dirx * xyAmountNext, diry * xyAmountNext, heightNext); - frameGeometry.vertices.push(vertexNext); - } - } - - // creates rings at poles, just because it's easier to implement - for(let vSegment = 0; vSegment <= vSegments + 1; vSegment++){ - - //let height = (vSegment / (vSegments + 1)) * 2 - 1; // -1 to 1 - let uh = (vSegment / (vSegments + 1)); // -1 to 1 - uh = (1 - uh) * (-Math.PI / 2) + uh *(Math.PI / 2); - let height = Math.sin(uh); - - console.log(uh, height); - - for(let i = 0; i <= steps; i++){ - let u = (i / steps) * Math.PI * 2; - let uNext = u + 2 * Math.PI / steps; - - let dirx = Math.cos(u); - let diry = Math.sin(u); - - let dirxNext = Math.cos(uNext); - let diryNext = Math.sin(uNext); - - let xyAmount = Math.sqrt(1 - height * height); - - let vertex = new THREE.Vector3(dirx * xyAmount, diry * xyAmount, height); - frameGeometry.vertices.push(vertex); - - let vertexNext = new THREE.Vector3(dirxNext * xyAmount, diryNext * xyAmount, height); - frameGeometry.vertices.push(vertexNext); - } - } - } - - this.frame = new THREE.LineSegments(frameGeometry, new THREE.LineBasicMaterial({color: 0x000000})); - this.add(this.frame); - - let frameMaterial = new THREE.MeshBasicMaterial({wireframe: true, color: 0x000000}); - this.frame = new THREE.Mesh(sphereGeometry, frameMaterial); - //this.add(this.frame); - - //this.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000})); - // this.frame.mode = THREE.Lines; - //this.add(this.frame); - - this.update(); - } - - update(){ - this.boundingBox = this.sphere.geometry.boundingBox; - this.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere()); - - //if (this._clip) { - // this.sphere.visible = false; - // this.label.visible = false; - //} else { - // this.sphere.visible = true; - // this.label.visible = this.showVolumeLabel; - //} - } - - raycast (raycaster, intersects) { - let is = []; - this.sphere.raycast(raycaster, is); - - if (is.length > 0) { - let I = is[0]; - intersects.push({ - distance: I.distance, - object: this, - point: I.point.clone() - }); - } - } - - // see https://en.wikipedia.org/wiki/Ellipsoid#Volume - getVolume(){ - return (4 / 3) * Math.PI * this.scale.x * this.scale.y * this.scale.z; - } - - }; - - class Profile extends THREE.Object3D{ - - constructor () { - super(); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - - this.name = 'Profile_' + this.constructor.counter; - this.points = []; - this.spheres = []; - this.edges = []; - this.boxes = []; - this.width = 1; - this.height = 20; - this._modifiable = true; - - this.sphereGeometry = new THREE.SphereGeometry(0.4, 10, 10); - this.color = new THREE.Color(0xff0000); - this.lineColor = new THREE.Color(0xff0000); - } - - createSphereMaterial () { - let sphereMaterial = new THREE.MeshLambertMaterial({ - //shading: THREE.SmoothShading, - color: 0xff0000, - depthTest: false, - depthWrite: false} - ); - - return sphereMaterial; - }; - - getSegments () { - let segments = []; - - for (let i = 0; i < this.points.length - 1; i++) { - let start = this.points[i].clone(); - let end = this.points[i + 1].clone(); - segments.push({start: start, end: end}); - } - - return segments; - } - - getSegmentMatrices () { - let segments = this.getSegments(); - let matrices = []; - - for (let segment of segments) { - let {start, end} = segment; - - let box = new THREE.Object3D(); - - let length = start.clone().setZ(0).distanceTo(end.clone().setZ(0)); - box.scale.set(length, 10000, this.width); - box.up.set(0, 0, 1); - - let center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5); - let diff = new THREE.Vector3().subVectors(end, start); - let target = new THREE.Vector3(diff.y, -diff.x, 0); - - box.position.set(0, 0, 0); - box.lookAt(target); - box.position.copy(center); - - box.updateMatrixWorld(); - matrices.push(box.matrixWorld); - } - - return matrices; - } - - addMarker (point) { - this.points.push(point); - - let sphere = new THREE.Mesh(this.sphereGeometry, this.createSphereMaterial()); - - this.add(sphere); - this.spheres.push(sphere); - - // edges & boxes - if (this.points.length > 1) { - let lineGeometry = new THREE.Geometry(); - lineGeometry.vertices.push(new THREE.Vector3(), new THREE.Vector3()); - lineGeometry.colors.push(this.lineColor, this.lineColor, this.lineColor); - let lineMaterial = new THREE.LineBasicMaterial({ - vertexColors: THREE.VertexColors, - linewidth: 2, - transparent: true, - opacity: 0.4 - }); - lineMaterial.depthTest = false; - let edge = new THREE.Line(lineGeometry, lineMaterial); - edge.visible = false; - - this.add(edge); - this.edges.push(edge); - - let boxGeometry = new THREE.BoxGeometry(1, 1, 1); - let boxMaterial = new THREE.MeshBasicMaterial({color: 0xff0000, transparent: true, opacity: 0.2}); - let box = new THREE.Mesh(boxGeometry, boxMaterial); - box.visible = false; - - this.add(box); - this.boxes.push(box); - } - - { // event listeners - let drag = (e) => { - let I = Utils.getMousePointCloudIntersection( - e.drag.end, - e.viewer.scene.getActiveCamera(), - e.viewer, - e.viewer.scene.pointclouds); - - if (I) { - let i = this.spheres.indexOf(e.drag.object); - if (i !== -1) { - this.setPosition(i, I.location); - //this.dispatchEvent({ - // 'type': 'marker_moved', - // 'profile': this, - // 'index': i - //}); - } - } - }; - - let drop = e => { - let i = this.spheres.indexOf(e.drag.object); - if (i !== -1) { - this.dispatchEvent({ - 'type': 'marker_dropped', - 'profile': this, - 'index': i - }); - } - }; - - let mouseover = (e) => e.object.material.emissive.setHex(0x888888); - let mouseleave = (e) => e.object.material.emissive.setHex(0x000000); - - sphere.addEventListener('drag', drag); - sphere.addEventListener('drop', drop); - sphere.addEventListener('mouseover', mouseover); - sphere.addEventListener('mouseleave', mouseleave); - } - - let event = { - type: 'marker_added', - profile: this, - sphere: sphere - }; - this.dispatchEvent(event); - - this.setPosition(this.points.length - 1, point); - } - - removeMarker (index) { - this.points.splice(index, 1); - - this.remove(this.spheres[index]); - - let edgeIndex = (index === 0) ? 0 : (index - 1); - this.remove(this.edges[edgeIndex]); - this.edges.splice(edgeIndex, 1); - this.remove(this.boxes[edgeIndex]); - this.boxes.splice(edgeIndex, 1); - - this.spheres.splice(index, 1); - - this.update(); - - this.dispatchEvent({ - 'type': 'marker_removed', - 'profile': this - }); - } - - setPosition (index, position) { - let point = this.points[index]; - point.copy(position); - - let event = { - type: 'marker_moved', - profile: this, - index: index, - position: point.clone() - }; - this.dispatchEvent(event); - - this.update(); - } - - setWidth (width) { - this.width = width; - - let event = { - type: 'width_changed', - profile: this, - width: width - }; - this.dispatchEvent(event); - - this.update(); - } - - getWidth () { - return this.width; - } - - update () { - if (this.points.length === 0) { - return; - } else if (this.points.length === 1) { - let point = this.points[0]; - this.spheres[0].position.copy(point); - - return; - } - - let min = this.points[0].clone(); - let max = this.points[0].clone(); - let centroid = new THREE.Vector3(); - let lastIndex = this.points.length - 1; - for (let i = 0; i <= lastIndex; i++) { - let point = this.points[i]; - let sphere = this.spheres[i]; - let leftIndex = (i === 0) ? lastIndex : i - 1; - // let rightIndex = (i === lastIndex) ? 0 : i + 1; - let leftVertex = this.points[leftIndex]; - // let rightVertex = this.points[rightIndex]; - let leftEdge = this.edges[leftIndex]; - let rightEdge = this.edges[i]; - let leftBox = this.boxes[leftIndex]; - // rightBox = this.boxes[i]; - - // let leftEdgeLength = point.distanceTo(leftVertex); - // let rightEdgeLength = point.distanceTo(rightVertex); - // let leftEdgeCenter = new THREE.Vector3().addVectors(leftVertex, point).multiplyScalar(0.5); - // let rightEdgeCenter = new THREE.Vector3().addVectors(point, rightVertex).multiplyScalar(0.5); - - sphere.position.copy(point); - - if (this._modifiable) { - sphere.visible = true; - } else { - sphere.visible = false; - } - - if (leftEdge) { - leftEdge.geometry.vertices[1].copy(point); - leftEdge.geometry.verticesNeedUpdate = true; - leftEdge.geometry.computeBoundingSphere(); - } - - if (rightEdge) { - rightEdge.geometry.vertices[0].copy(point); - rightEdge.geometry.verticesNeedUpdate = true; - rightEdge.geometry.computeBoundingSphere(); - } - - if (leftBox) { - let start = leftVertex; - let end = point; - let length = start.clone().setZ(0).distanceTo(end.clone().setZ(0)); - leftBox.scale.set(length, 1000000, this.width); - leftBox.up.set(0, 0, 1); - - let center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5); - let diff = new THREE.Vector3().subVectors(end, start); - let target = new THREE.Vector3(diff.y, -diff.x, 0); - - leftBox.position.set(0, 0, 0); - leftBox.lookAt(target); - leftBox.position.copy(center); - } - - centroid.add(point); - min.min(point); - max.max(point); - } - centroid.multiplyScalar(1 / this.points.length); - - for (let i = 0; i < this.boxes.length; i++) { - let box = this.boxes[i]; - - box.position.z = min.z + (max.z - min.z) / 2; - } - } - - raycast (raycaster, intersects) { - for (let i = 0; i < this.points.length; i++) { - let sphere = this.spheres[i]; - - sphere.raycast(raycaster, intersects); - } - - // recalculate distances because they are not necessarely correct - // for scaled objects. - // see https://github.com/mrdoob/three.js/issues/5827 - // TODO: remove this once the bug has been fixed - for (let i = 0; i < intersects.length; i++) { - let I = intersects[i]; - I.distance = raycaster.ray.origin.distanceTo(I.point); - } - intersects.sort(function (a, b) { return a.distance - b.distance; }); - }; - - get modifiable () { - return this._modifiable; - } - - set modifiable (value) { - this._modifiable = value; - this.update(); - } - - } - - function createHeightLine(){ - let lineGeometry = new THREE.LineGeometry(); - - lineGeometry.setPositions([ - 0, 0, 0, - 0, 0, 0, - ]); - - let lineMaterial = new THREE.LineMaterial({ - color: 0x00ff00, - dashSize: 5, - gapSize: 2, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - lineMaterial.depthTest = false; - const heightEdge = new THREE.Line2(lineGeometry, lineMaterial); - heightEdge.visible = false; - - //this.add(this.heightEdge); - - return heightEdge; - } - - function createHeightLabel(){ - const heightLabel = new TextSprite(''); - - heightLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0}); - heightLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - heightLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - heightLabel.fontsize = 16; - heightLabel.material.depthTest = false; - heightLabel.material.opacity = 1; - heightLabel.visible = false; - - return heightLabel; - } - - function createAreaLabel(){ - const areaLabel = new TextSprite(''); - - areaLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0}); - areaLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - areaLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - areaLabel.fontsize = 16; - areaLabel.material.depthTest = false; - areaLabel.material.opacity = 1; - areaLabel.visible = false; - - return areaLabel; - } - - function createCircleRadiusLabel(){ - const circleRadiusLabel = new TextSprite(""); - - circleRadiusLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0}); - circleRadiusLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - circleRadiusLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - circleRadiusLabel.fontsize = 16; - circleRadiusLabel.material.depthTest = false; - circleRadiusLabel.material.opacity = 1; - circleRadiusLabel.visible = false; - - return circleRadiusLabel; - } - - function createCircleRadiusLine(){ - const lineGeometry = new THREE.LineGeometry(); - - lineGeometry.setPositions([ - 0, 0, 0, - 0, 0, 0, - ]); - - const lineMaterial = new THREE.LineMaterial({ - color: 0xff0000, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - gapSize: 1, - dashed: true, - }); - - lineMaterial.depthTest = false; - - const circleRadiusLine = new THREE.Line2(lineGeometry, lineMaterial); - circleRadiusLine.visible = false; - - return circleRadiusLine; - } - - function createCircleLine(){ - const coordinates = []; - - let n = 128; - for(let i = 0; i <= n; i++){ - let u0 = 2 * Math.PI * (i / n); - let u1 = 2 * Math.PI * (i + 1) / n; - - let p0 = new THREE.Vector3( - Math.cos(u0), - Math.sin(u0), - 0 - ); - - let p1 = new THREE.Vector3( - Math.cos(u1), - Math.sin(u1), - 0 - ); - - coordinates.push( - ...p0.toArray(), - ...p1.toArray(), - ); - } - - const geometry = new THREE.LineGeometry(); - geometry.setPositions(coordinates); - - const material = new THREE.LineMaterial({ - color: 0xff0000, - dashSize: 5, - gapSize: 2, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - material.depthTest = false; - - const circleLine = new THREE.Line2(geometry, material); - circleLine.visible = false; - circleLine.computeLineDistances(); - - return circleLine; - } - - function createCircleCenter(){ - const sg = new THREE.SphereGeometry(1, 32, 32); - const sm = new THREE.MeshNormalMaterial(); - - const circleCenter = new THREE.Mesh(sg, sm); - circleCenter.visible = false; - - return circleCenter; - } - - function createLine(){ - const geometry = new THREE.LineGeometry(); - - geometry.setPositions([ - 0, 0, 0, - 0, 0, 0, - ]); - - const material = new THREE.LineMaterial({ - color: 0xff0000, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - gapSize: 1, - dashed: true, - }); - - material.depthTest = false; - - const line = new THREE.Line2(geometry, material); - - return line; - } - - function createCircle(){ - - const coordinates = []; - - let n = 128; - for(let i = 0; i <= n; i++){ - let u0 = 2 * Math.PI * (i / n); - let u1 = 2 * Math.PI * (i + 1) / n; - - let p0 = new THREE.Vector3( - Math.cos(u0), - Math.sin(u0), - 0 - ); - - let p1 = new THREE.Vector3( - Math.cos(u1), - Math.sin(u1), - 0 - ); - - coordinates.push( - ...p0.toArray(), - ...p1.toArray(), - ); - } - - const geometry = new THREE.LineGeometry(); - geometry.setPositions(coordinates); - - const material = new THREE.LineMaterial({ - color: 0xff0000, - dashSize: 5, - gapSize: 2, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - material.depthTest = false; - - const line = new THREE.Line2(geometry, material); - line.computeLineDistances(); - - return line; - - } - - function createAzimuth(){ - - const azimuth = { - label: null, - center: null, - target: null, - north: null, - centerToNorth: null, - centerToTarget: null, - centerToTargetground: null, - targetgroundToTarget: null, - circle: null, - - node: null, - }; - - const sg = new THREE.SphereGeometry(1, 32, 32); - const sm = new THREE.MeshNormalMaterial(); - - { - const label = new TextSprite(""); - - label.setTextColor({r: 140, g: 250, b: 140, a: 1.0}); - label.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - label.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - label.fontsize = 16; - label.material.depthTest = false; - label.material.opacity = 1; - - azimuth.label = label; - } - - azimuth.center = new THREE.Mesh(sg, sm); - azimuth.target = new THREE.Mesh(sg, sm); - azimuth.north = new THREE.Mesh(sg, sm); - azimuth.centerToNorth = createLine(); - azimuth.centerToTarget = createLine(); - azimuth.centerToTargetground = createLine(); - azimuth.targetgroundToTarget = createLine(); - azimuth.circle = createCircle(); - - azimuth.node = new THREE.Object3D(); - azimuth.node.add( - azimuth.centerToNorth, - azimuth.centerToTarget, - azimuth.centerToTargetground, - azimuth.targetgroundToTarget, - azimuth.circle, - azimuth.label, - azimuth.center, - azimuth.target, - azimuth.north, - ); - - return azimuth; - } - - class Measure extends THREE.Object3D { - constructor () { - super(); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - - this.name = 'Measure_' + this.constructor.counter; - this.points = []; - this._showDistances = true; - this._showCoordinates = false; - this._showArea = false; - this._closed = true; - this._showAngles = false; - this._showCircle = false; - this._showHeight = false; - this._showEdges = true; - this._showAzimuth = false; - this.maxMarkers = Number.MAX_SAFE_INTEGER; - - this.sphereGeometry = new THREE.SphereGeometry(0.4, 10, 10); - this.color = new THREE.Color(0xff0000); - - this.spheres = []; - this.edges = []; - this.sphereLabels = []; - this.edgeLabels = []; - this.angleLabels = []; - this.coordinateLabels = []; - - this.heightEdge = createHeightLine(); - this.heightLabel = createHeightLabel(); - this.areaLabel = createAreaLabel(); - this.circleRadiusLabel = createCircleRadiusLabel(); - this.circleRadiusLine = createCircleRadiusLine(); - this.circleLine = createCircleLine(); - this.circleCenter = createCircleCenter(); - - this.azimuth = createAzimuth(); - - this.add(this.heightEdge); - this.add(this.heightLabel); - this.add(this.areaLabel); - this.add(this.circleRadiusLabel); - this.add(this.circleRadiusLine); - this.add(this.circleLine); - this.add(this.circleCenter); - - this.add(this.azimuth.node); - - } - - createSphereMaterial () { - let sphereMaterial = new THREE.MeshLambertMaterial({ - //shading: THREE.SmoothShading, - color: this.color, - depthTest: false, - depthWrite: false} - ); - - return sphereMaterial; - }; - - addMarker (point) { - if (point instanceof THREE.Vector3) { - point = {position: point}; - }else if(point instanceof Array){ - point = {position: new THREE.Vector3(...point)}; - } - this.points.push(point); - - // sphere - let sphere = new THREE.Mesh(this.sphereGeometry, this.createSphereMaterial()); - - this.add(sphere); - this.spheres.push(sphere); - - { // edges - let lineGeometry = new THREE.LineGeometry(); - lineGeometry.setPositions( [ - 0, 0, 0, - 0, 0, 0, - ]); - - let lineMaterial = new THREE.LineMaterial({ - color: 0xff0000, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - lineMaterial.depthTest = false; - - let edge = new THREE.Line2(lineGeometry, lineMaterial); - edge.visible = true; - - this.add(edge); - this.edges.push(edge); - } - - { // edge labels - let edgeLabel = new TextSprite(); - edgeLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - edgeLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - edgeLabel.material.depthTest = false; - edgeLabel.visible = false; - edgeLabel.fontsize = 16; - this.edgeLabels.push(edgeLabel); - this.add(edgeLabel); - } - - { // angle labels - let angleLabel = new TextSprite(); - angleLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - angleLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - angleLabel.fontsize = 16; - angleLabel.material.depthTest = false; - angleLabel.material.opacity = 1; - angleLabel.visible = false; - this.angleLabels.push(angleLabel); - this.add(angleLabel); - } - - { // coordinate labels - let coordinateLabel = new TextSprite(); - coordinateLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0}); - coordinateLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0}); - coordinateLabel.fontsize = 16; - coordinateLabel.material.depthTest = false; - coordinateLabel.material.opacity = 1; - coordinateLabel.visible = false; - this.coordinateLabels.push(coordinateLabel); - this.add(coordinateLabel); - } - - { // Event Listeners - let drag = (e) => { - let I = Utils.getMousePointCloudIntersection( - e.drag.end, - e.viewer.scene.getActiveCamera(), - e.viewer, - e.viewer.scene.pointclouds, - {pickClipped: true}); - - if (I) { - let i = this.spheres.indexOf(e.drag.object); - if (i !== -1) { - let point = this.points[i]; - for (let key of Object.keys(I.point).filter(e => e !== 'position')) { - point[key] = I.point[key]; - } - - this.setPosition(i, I.location); - } - } - }; - - let drop = e => { - let i = this.spheres.indexOf(e.drag.object); - if (i !== -1) { - this.dispatchEvent({ - 'type': 'marker_dropped', - 'measurement': this, - 'index': i - }); - } - }; - - let mouseover = (e) => e.object.material.emissive.setHex(0x888888); - let mouseleave = (e) => e.object.material.emissive.setHex(0x000000); - - sphere.addEventListener('drag', drag); - sphere.addEventListener('drop', drop); - sphere.addEventListener('mouseover', mouseover); - sphere.addEventListener('mouseleave', mouseleave); - } - - let event = { - type: 'marker_added', - measurement: this, - sphere: sphere - }; - this.dispatchEvent(event); - - this.setMarker(this.points.length - 1, point); - }; - - removeMarker (index) { - this.points.splice(index, 1); - - this.remove(this.spheres[index]); - - let edgeIndex = (index === 0) ? 0 : (index - 1); - this.remove(this.edges[edgeIndex]); - this.edges.splice(edgeIndex, 1); - - this.remove(this.edgeLabels[edgeIndex]); - this.edgeLabels.splice(edgeIndex, 1); - this.coordinateLabels.splice(index, 1); - - this.remove(this.angleLabels[index]); - this.angleLabels.splice(index, 1); - - this.spheres.splice(index, 1); - - this.update(); - - this.dispatchEvent({type: 'marker_removed', measurement: this}); - }; - - setMarker (index, point) { - this.points[index] = point; - - let event = { - type: 'marker_moved', - measure: this, - index: index, - position: point.position.clone() - }; - this.dispatchEvent(event); - - this.update(); - } - - setPosition (index, position) { - let point = this.points[index]; - point.position.copy(position); - - let event = { - type: 'marker_moved', - measure: this, - index: index, - position: position.clone() - }; - this.dispatchEvent(event); - - this.update(); - }; - - getArea () { - let area = 0; - let j = this.points.length - 1; - - for (let i = 0; i < this.points.length; i++) { - let p1 = this.points[i].position; - let p2 = this.points[j].position; - area += (p2.x + p1.x) * (p1.y - p2.y); - j = i; - } - - return Math.abs(area / 2); - }; - - getTotalDistance () { - if (this.points.length === 0) { - return 0; - } - - let distance = 0; - - for (let i = 1; i < this.points.length; i++) { - let prev = this.points[i - 1].position; - let curr = this.points[i].position; - let d = prev.distanceTo(curr); - - distance += d; - } - - if (this.closed && this.points.length > 1) { - let first = this.points[0].position; - let last = this.points[this.points.length - 1].position; - let d = last.distanceTo(first); - - distance += d; - } - - return distance; - } - - getAngleBetweenLines (cornerPoint, point1, point2) { - let v1 = new THREE.Vector3().subVectors(point1.position, cornerPoint.position); - let v2 = new THREE.Vector3().subVectors(point2.position, cornerPoint.position); - - // avoid the error printed by threejs if denominator is 0 - const denominator = Math.sqrt( v1.lengthSq() * v2.lengthSq() ); - if(denominator === 0){ - return 0; - }else { - return v1.angleTo(v2); - } - }; - - getAngle (index) { - if (this.points.length < 3 || index >= this.points.length) { - return 0; - } - - let previous = (index === 0) ? this.points[this.points.length - 1] : this.points[index - 1]; - let point = this.points[index]; - let next = this.points[(index + 1) % (this.points.length)]; - - return this.getAngleBetweenLines(point, previous, next); - } - - // updateAzimuth(){ - // // if(this.points.length !== 2){ - // // return; - // // } - - // // const azimuth = this.azimuth; - - // // const [p0, p1] = this.points; - - // // const r = p0.position.distanceTo(p1.position); - - // } - - update () { - if (this.points.length === 0) { - return; - } else if (this.points.length === 1) { - let point = this.points[0]; - let position = point.position; - this.spheres[0].position.copy(position); - - { // coordinate labels - let coordinateLabel = this.coordinateLabels[0]; - - let msg = position.toArray().map(p => Utils.addCommas(p.toFixed(2))).join(" / "); - coordinateLabel.setText(msg); - - coordinateLabel.visible = this.showCoordinates; - } - - return; - } - - let lastIndex = this.points.length - 1; - - let centroid = new THREE.Vector3(); - for (let i = 0; i <= lastIndex; i++) { - let point = this.points[i]; - centroid.add(point.position); - } - centroid.divideScalar(this.points.length); - - for (let i = 0; i <= lastIndex; i++) { - let index = i; - let nextIndex = (i + 1 > lastIndex) ? 0 : i + 1; - let previousIndex = (i === 0) ? lastIndex : i - 1; - - let point = this.points[index]; - let nextPoint = this.points[nextIndex]; - let previousPoint = this.points[previousIndex]; - - let sphere = this.spheres[index]; - - // spheres - sphere.position.copy(point.position); - sphere.material.color = this.color; - - { // edges - let edge = this.edges[index]; - - edge.material.color = this.color; - - edge.position.copy(point.position); - - edge.geometry.setPositions([ - 0, 0, 0, - ...nextPoint.position.clone().sub(point.position).toArray(), - ]); - - edge.geometry.verticesNeedUpdate = true; - edge.geometry.computeBoundingSphere(); - edge.computeLineDistances(); - edge.visible = index < lastIndex || this.closed; - - if(!this.showEdges){ - edge.visible = false; - } - } - - { // edge labels - let edgeLabel = this.edgeLabels[i]; - - let center = new THREE.Vector3().add(point.position); - center.add(nextPoint.position); - center = center.multiplyScalar(0.5); - let distance = point.position.distanceTo(nextPoint.position); - - edgeLabel.position.copy(center); - - let suffix = ""; - if(this.lengthUnit != null && this.lengthUnitDisplay != null){ - distance = distance / this.lengthUnit.unitspermeter * this.lengthUnitDisplay.unitspermeter; //convert to meters then to the display unit - suffix = this.lengthUnitDisplay.code; - } - - let txtLength = Utils.addCommas(distance.toFixed(2)); - edgeLabel.setText(`${txtLength} ${suffix}`); - edgeLabel.visible = this.showDistances && (index < lastIndex || this.closed) && this.points.length >= 2 && distance > 0; - } - - { // angle labels - let angleLabel = this.angleLabels[i]; - let angle = this.getAngleBetweenLines(point, previousPoint, nextPoint); - - let dir = nextPoint.position.clone().sub(previousPoint.position); - dir.multiplyScalar(0.5); - dir = previousPoint.position.clone().add(dir).sub(point.position).normalize(); - - let dist = Math.min(point.position.distanceTo(previousPoint.position), point.position.distanceTo(nextPoint.position)); - dist = dist / 9; - - let labelPos = point.position.clone().add(dir.multiplyScalar(dist)); - angleLabel.position.copy(labelPos); - - let msg = Utils.addCommas((angle * (180.0 / Math.PI)).toFixed(1)) + '\u00B0'; - angleLabel.setText(msg); - - angleLabel.visible = this.showAngles && (index < lastIndex || this.closed) && this.points.length >= 3 && angle > 0; - } - } - - { // update height stuff - let heightEdge = this.heightEdge; - heightEdge.visible = this.showHeight; - this.heightLabel.visible = this.showHeight; - - if (this.showHeight) { - let sorted = this.points.slice().sort((a, b) => a.position.z - b.position.z); - let lowPoint = sorted[0].position.clone(); - let highPoint = sorted[sorted.length - 1].position.clone(); - let min = lowPoint.z; - let max = highPoint.z; - let height = max - min; - - let start = new THREE.Vector3(highPoint.x, highPoint.y, min); - let end = new THREE.Vector3(highPoint.x, highPoint.y, max); - - heightEdge.position.copy(lowPoint); - - heightEdge.geometry.setPositions([ - 0, 0, 0, - ...start.clone().sub(lowPoint).toArray(), - ...start.clone().sub(lowPoint).toArray(), - ...end.clone().sub(lowPoint).toArray(), - ]); - - heightEdge.geometry.verticesNeedUpdate = true; - // heightEdge.geometry.computeLineDistances(); - // heightEdge.geometry.lineDistancesNeedUpdate = true; - heightEdge.geometry.computeBoundingSphere(); - heightEdge.computeLineDistances(); - - // heightEdge.material.dashSize = height / 40; - // heightEdge.material.gapSize = height / 40; - - let heightLabelPosition = start.clone().add(end).multiplyScalar(0.5); - this.heightLabel.position.copy(heightLabelPosition); - - let suffix = ""; - if(this.lengthUnit != null && this.lengthUnitDisplay != null){ - height = height / this.lengthUnit.unitspermeter * this.lengthUnitDisplay.unitspermeter; //convert to meters then to the display unit - suffix = this.lengthUnitDisplay.code; - } - - let txtHeight = Utils.addCommas(height.toFixed(2)); - let msg = `${txtHeight} ${suffix}`; - this.heightLabel.setText(msg); - } - } - - { // update circle stuff - const circleRadiusLabel = this.circleRadiusLabel; - const circleRadiusLine = this.circleRadiusLine; - const circleLine = this.circleLine; - const circleCenter = this.circleCenter; - - const circleOkay = this.points.length === 3; - - circleRadiusLabel.visible = this.showCircle && circleOkay; - circleRadiusLine.visible = this.showCircle && circleOkay; - circleLine.visible = this.showCircle && circleOkay; - circleCenter.visible = this.showCircle && circleOkay; - - if(this.showCircle && circleOkay){ - - const A = this.points[0].position; - const B = this.points[1].position; - const C = this.points[2].position; - const AB = B.clone().sub(A); - const AC = C.clone().sub(A); - const N = AC.clone().cross(AB).normalize(); - - const center = Potree.Utils.computeCircleCenter(A, B, C); - const radius = center.distanceTo(A); - - - const scale = radius / 20; - circleCenter.position.copy(center); - circleCenter.scale.set(scale, scale, scale); - - //circleRadiusLine.geometry.vertices[0].set(0, 0, 0); - //circleRadiusLine.geometry.vertices[1].copy(B.clone().sub(center)); - - circleRadiusLine.geometry.setPositions( [ - 0, 0, 0, - ...B.clone().sub(center).toArray() - ] ); - - circleRadiusLine.geometry.verticesNeedUpdate = true; - circleRadiusLine.geometry.computeBoundingSphere(); - circleRadiusLine.position.copy(center); - circleRadiusLine.computeLineDistances(); - - const target = center.clone().add(N); - circleLine.position.copy(center); - circleLine.scale.set(radius, radius, radius); - circleLine.lookAt(target); - - circleRadiusLabel.visible = true; - circleRadiusLabel.position.copy(center.clone().add(B).multiplyScalar(0.5)); - circleRadiusLabel.setText(`${radius.toFixed(3)}`); - - } - } - - { // update area label - this.areaLabel.position.copy(centroid); - this.areaLabel.visible = this.showArea && this.points.length >= 3; - let area = this.getArea(); - - let suffix = ""; - if(this.lengthUnit != null && this.lengthUnitDisplay != null){ - area = area / Math.pow(this.lengthUnit.unitspermeter, 2) * Math.pow(this.lengthUnitDisplay.unitspermeter, 2); //convert to square meters then to the square display unit - suffix = this.lengthUnitDisplay.code; - } - - let txtArea = Utils.addCommas(area.toFixed(1)); - let msg = `${txtArea} ${suffix}\u00B2`; - this.areaLabel.setText(msg); - } - - // this.updateAzimuth(); - }; - - raycast (raycaster, intersects) { - for (let i = 0; i < this.points.length; i++) { - let sphere = this.spheres[i]; - - sphere.raycast(raycaster, intersects); - } - - // recalculate distances because they are not necessarely correct - // for scaled objects. - // see https://github.com/mrdoob/three.js/issues/5827 - // TODO: remove this once the bug has been fixed - for (let i = 0; i < intersects.length; i++) { - let I = intersects[i]; - I.distance = raycaster.ray.origin.distanceTo(I.point); - } - intersects.sort(function (a, b) { return a.distance - b.distance; }); - }; - - get showCoordinates () { - return this._showCoordinates; - } - - set showCoordinates (value) { - this._showCoordinates = value; - this.update(); - } - - get showAngles () { - return this._showAngles; - } - - set showAngles (value) { - this._showAngles = value; - this.update(); - } - - get showCircle () { - return this._showCircle; - } - - set showCircle (value) { - this._showCircle = value; - this.update(); - } - - get showAzimuth(){ - return this._showAzimuth; - } - - set showAzimuth(value){ - this._showAzimuth = value; - this.update(); - } - - get showEdges () { - return this._showEdges; - } - - set showEdges (value) { - this._showEdges = value; - this.update(); - } - - get showHeight () { - return this._showHeight; - } - - set showHeight (value) { - this._showHeight = value; - this.update(); - } - - get showArea () { - return this._showArea; - } - - set showArea (value) { - this._showArea = value; - this.update(); - } - - get closed () { - return this._closed; - } - - set closed (value) { - this._closed = value; - this.update(); - } - - get showDistances () { - return this._showDistances; - } - - set showDistances (value) { - this._showDistances = value; - this.update(); - } - - } - - class PolygonClipVolume extends THREE.Object3D{ - - constructor(camera){ - super(); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - this.name = "polygon_clip_volume_" + this.constructor.counter; - - this.camera = camera.clone(); - this.camera.rotation.set(...camera.rotation.toArray()); // [r85] workaround because camera.clone() doesn't work on rotation - this.camera.rotation.order = camera.rotation.order; - this.camera.updateMatrixWorld(); - this.camera.updateProjectionMatrix(); - this.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld); - - this.viewMatrix = this.camera.matrixWorldInverse.clone(); - this.projMatrix = this.camera.projectionMatrix.clone(); - - // projected markers - this.markers = []; - this.initialized = false; - } - - addMarker() { - - let marker = new THREE.Mesh(); - - let cancel; - - let drag = e => { - let size = e.viewer.renderer.getSize(new THREE.Vector2()); - let projectedPos = new THREE.Vector3( - 2.0 * (e.drag.end.x / size.width) - 1.0, - -2.0 * (e.drag.end.y / size.height) + 1.0, - 0 - ); - - marker.position.copy(projectedPos); - }; - - let drop = e => { - cancel(); - }; - - cancel = e => { - marker.removeEventListener("drag", drag); - marker.removeEventListener("drop", drop); - }; - - marker.addEventListener("drag", drag); - marker.addEventListener("drop", drop); - - - this.markers.push(marker); - } - - removeLastMarker() { - if(this.markers.length > 0) { - this.markers.splice(this.markers.length - 1, 1); - } - } - - }; - - class Utils { - static async loadShapefileFeatures (file, callback) { - let features = []; - - let handleFinish = () => { - callback(features); - }; - - let source = await shapefile.open(file); - - while(true){ - let result = await source.read(); - - if (result.done) { - handleFinish(); - break; - } - - if (result.value && result.value.type === 'Feature' && result.value.geometry !== undefined) { - features.push(result.value); - } - } - - } - - static toString (value) { - if (value instanceof THREE.Vector3) { - return value.x.toFixed(2) + ', ' + value.y.toFixed(2) + ', ' + value.z.toFixed(2); - } else { - return '' + value + ''; - } - } - - static normalizeURL (url) { - let u = new URL(url); - - return u.protocol + '//' + u.hostname + u.pathname.replace(/\/+/g, '/'); - }; - - static pathExists (url) { - let req = XHRFactory.createXMLHttpRequest(); - req.open('GET', url, false); - req.send(null); - if (req.status !== 200) { - return false; - } - return true; - }; - - static debugSphere(parent, position, scale, color){ - let geometry = new THREE.SphereGeometry(1, 8, 8); - let material; - - if(color !== undefined){ - material = new THREE.MeshBasicMaterial({color: color}); - }else { - material = new THREE.MeshNormalMaterial(); - } - let sphere = new THREE.Mesh(geometry, material); - sphere.position.copy(position); - sphere.scale.set(scale, scale, scale); - parent.add(sphere); - } - - static debugLine(parent, start, end, color){ - - let material = new THREE.LineBasicMaterial({ color: color }); - let geometry = new THREE.Geometry(); - - const p1 = new THREE.Vector3(0, 0, 0); - const p2 = end.clone().sub(start); - - geometry.vertices.push(p1, p2); - - let tl = new THREE.Line( geometry, material ); - tl.position.copy(start); - - parent.add(tl); - } - - static debugCircle(parent, center, radius, normal, color){ - let material = new THREE.LineBasicMaterial({ color: color }); - - let geometry = new THREE.Geometry(); - - let n = 32; - for(let i = 0; i <= n; i++){ - let u0 = 2 * Math.PI * (i / n); - let u1 = 2 * Math.PI * (i + 1) / n; - - let p0 = new THREE.Vector3( - Math.cos(u0), - Math.sin(u0), - 0 - ); - - let p1 = new THREE.Vector3( - Math.cos(u1), - Math.sin(u1), - 0 - ); - - geometry.vertices.push(p0, p1); - } - - let tl = new THREE.Line( geometry, material ); - tl.position.copy(center); - tl.scale.set(radius, radius, radius); - - parent.add(tl); - } - - static debugBox(parent, box, transform = new THREE.Matrix4(), color = 0xFFFF00){ - - let vertices = [ - [box.min.x, box.min.y, box.min.z], - [box.min.x, box.min.y, box.max.z], - [box.min.x, box.max.y, box.min.z], - [box.min.x, box.max.y, box.max.z], - - [box.max.x, box.min.y, box.min.z], - [box.max.x, box.min.y, box.max.z], - [box.max.x, box.max.y, box.min.z], - [box.max.x, box.max.y, box.max.z], - ].map(v => new THREE.Vector3(...v)); - - let edges = [ - [0, 4], [4, 5], [5, 1], [1, 0], - [2, 6], [6, 7], [7, 3], [3, 2], - [0, 2], [4, 6], [5, 7], [1, 3] - ]; - - let center = box.getCenter(new THREE.Vector3()); - - let centroids = [ - {position: [box.min.x, center.y, center.z], color: 0xFF0000}, - {position: [box.max.x, center.y, center.z], color: 0x880000}, - - {position: [center.x, box.min.y, center.z], color: 0x00FF00}, - {position: [center.x, box.max.y, center.z], color: 0x008800}, - - {position: [center.x, center.y, box.min.z], color: 0x0000FF}, - {position: [center.x, center.y, box.max.z], color: 0x000088}, - ]; - - for(let vertex of vertices){ - let pos = vertex.clone().applyMatrix4(transform); - - Utils.debugSphere(parent, pos, 0.1, 0xFF0000); - } - - for(let edge of edges){ - let start = vertices[edge[0]].clone().applyMatrix4(transform); - let end = vertices[edge[1]].clone().applyMatrix4(transform); - - Utils.debugLine(parent, start, end, color); - } - - for(let centroid of centroids){ - let pos = new THREE.Vector3(...centroid.position).applyMatrix4(transform); - - Utils.debugSphere(parent, pos, 0.1, centroid.color); - } - } - - static debugPlane(parent, plane, size = 1, color = 0x0000FF){ - - let planehelper = new THREE.PlaneHelper(plane, size, color); - - parent.add(planehelper); - - } - - /** - * adapted from mhluska at https://github.com/mrdoob/three.js/issues/1561 - */ - static computeTransformedBoundingBox (box, transform) { - let vertices = [ - new THREE.Vector3(box.min.x, box.min.y, box.min.z).applyMatrix4(transform), - new THREE.Vector3(box.min.x, box.min.y, box.min.z).applyMatrix4(transform), - new THREE.Vector3(box.max.x, box.min.y, box.min.z).applyMatrix4(transform), - new THREE.Vector3(box.min.x, box.max.y, box.min.z).applyMatrix4(transform), - new THREE.Vector3(box.min.x, box.min.y, box.max.z).applyMatrix4(transform), - new THREE.Vector3(box.min.x, box.max.y, box.max.z).applyMatrix4(transform), - new THREE.Vector3(box.max.x, box.max.y, box.min.z).applyMatrix4(transform), - new THREE.Vector3(box.max.x, box.min.y, box.max.z).applyMatrix4(transform), - new THREE.Vector3(box.max.x, box.max.y, box.max.z).applyMatrix4(transform) - ]; - - let boundingBox = new THREE.Box3(); - boundingBox.setFromPoints(vertices); - - return boundingBox; - }; - - /** - * add separators to large numbers - * - * @param nStr - * @returns - */ - static addCommas (nStr) { - nStr += ''; - let x = nStr.split('.'); - let x1 = x[0]; - let x2 = x.length > 1 ? '.' + x[1] : ''; - let rgx = /(\d+)(\d{3})/; - while (rgx.test(x1)) { - x1 = x1.replace(rgx, '$1' + ',' + '$2'); - } - return x1 + x2; - }; - - static removeCommas (str) { - return str.replace(/,/g, ''); - } - - /** - * create worker from a string - * - * code from http://stackoverflow.com/questions/10343913/how-to-create-a-web-worker-from-a-string - */ - static createWorker (code) { - let blob = new Blob([code], {type: 'application/javascript'}); - let worker = new Worker(URL.createObjectURL(blob)); - - return worker; - }; - - static moveTo(scene, endPosition, endTarget){ - - let view = scene.view; - let camera = scene.getActiveCamera(); - let animationDuration = 500; - let easing = TWEEN.Easing.Quartic.Out; - - { // animate camera position - let tween = new TWEEN.Tween(view.position).to(endPosition, animationDuration); - tween.easing(easing); - tween.start(); - } - - { // animate camera target - let camTargetDistance = camera.position.distanceTo(endTarget); - let target = new THREE.Vector3().addVectors( - camera.position, - camera.getWorldDirection(new THREE.Vector3()).clone().multiplyScalar(camTargetDistance) - ); - let tween = new TWEEN.Tween(target).to(endTarget, animationDuration); - tween.easing(easing); - tween.onUpdate(() => { - view.lookAt(target); - }); - tween.onComplete(() => { - view.lookAt(target); - }); - tween.start(); - } - - } - - static loadSkybox (path) { - let camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 100000); - camera.up.set(0, 0, 1); - let scene = new THREE.Scene(); - - let format = '.jpg'; - let urls = [ - path + 'px' + format, path + 'nx' + format, - path + 'py' + format, path + 'ny' + format, - path + 'pz' + format, path + 'nz' + format - ]; - - let materialArray = []; - { - for (let i = 0; i < 6; i++) { - let material = new THREE.MeshBasicMaterial({ - map: null, - side: THREE.BackSide, - depthTest: false, - depthWrite: false, - color: 0x424556 - }); - - materialArray.push(material); - - let loader = new THREE.TextureLoader(); - loader.load(urls[i], - function loaded (texture) { - material.map = texture; - material.needsUpdate = true; - material.color.setHex(0xffffff); - }, function progress (xhr) { - // console.log( (xhr.loaded / xhr.total * 100) + '% loaded' ); - }, function error (xhr) { - console.log('An error happened', xhr); - } - ); - } - } - - let skyGeometry = new THREE.CubeGeometry(5000, 5000, 5000); - let skybox = new THREE.Mesh(skyGeometry, materialArray); - - scene.add(skybox); - - // z up - scene.rotation.x = Math.PI / 2; - - return {'camera': camera, 'scene': scene}; - }; - - static createGrid (width, length, spacing, color) { - let material = new THREE.LineBasicMaterial({ - color: color || 0x888888 - }); - - let geometry = new THREE.Geometry(); - for (let i = 0; i <= length; i++) { - geometry.vertices.push(new THREE.Vector3(-(spacing * width) / 2, i * spacing - (spacing * length) / 2, 0)); - geometry.vertices.push(new THREE.Vector3(+(spacing * width) / 2, i * spacing - (spacing * length) / 2, 0)); - } - - for (let i = 0; i <= width; i++) { - geometry.vertices.push(new THREE.Vector3(i * spacing - (spacing * width) / 2, -(spacing * length) / 2, 0)); - geometry.vertices.push(new THREE.Vector3(i * spacing - (spacing * width) / 2, +(spacing * length) / 2, 0)); - } - - let line = new THREE.LineSegments(geometry, material, THREE.LinePieces); - line.receiveShadow = true; - return line; - } - - static createBackgroundTexture (width, height) { - function gauss (x, y) { - return (1 / (2 * Math.PI)) * Math.exp(-(x * x + y * y) / 2); - }; - - // map.magFilter = THREE.NearestFilter; - let size = width * height; - let data = new Uint8Array(3 * size); - - let chroma = [1, 1.5, 1.7]; - let max = gauss(0, 0); - - for (let x = 0; x < width; x++) { - for (let y = 0; y < height; y++) { - let u = 2 * (x / width) - 1; - let v = 2 * (y / height) - 1; - - let i = x + width * y; - let d = gauss(2 * u, 2 * v) / max; - let r = (Math.random() + Math.random() + Math.random()) / 3; - r = (d * 0.5 + 0.5) * r * 0.03; - r = r * 0.4; - - // d = Math.pow(d, 0.6); - - data[3 * i + 0] = 255 * (d / 15 + 0.05 + r) * chroma[0]; - data[3 * i + 1] = 255 * (d / 15 + 0.05 + r) * chroma[1]; - data[3 * i + 2] = 255 * (d / 15 + 0.05 + r) * chroma[2]; - } - } - - let texture = new THREE.DataTexture(data, width, height, THREE.RGBFormat); - texture.needsUpdate = true; - - return texture; - } - - static getMousePointCloudIntersection (mouse, camera, viewer, pointclouds, params = {}) { - - let renderer = viewer.renderer; - - let nmouse = { - x: (mouse.x / renderer.domElement.clientWidth) * 2 - 1, - y: -(mouse.y / renderer.domElement.clientHeight) * 2 + 1 - }; - - let pickParams = {}; - - if(params.pickClipped){ - pickParams.pickClipped = params.pickClipped; - } - - pickParams.x = mouse.x; - pickParams.y = renderer.domElement.clientHeight - mouse.y; - - let raycaster = new THREE.Raycaster(); - raycaster.setFromCamera(nmouse, camera); - let ray = raycaster.ray; - - let selectedPointcloud = null; - let closestDistance = Infinity; - let closestIntersection = null; - let closestPoint = null; - - for(let pointcloud of pointclouds){ - let point = pointcloud.pick(viewer, camera, ray, pickParams); - - if(!point){ - continue; - } - - let distance = camera.position.distanceTo(point.position); - - if (distance < closestDistance) { - closestDistance = distance; - selectedPointcloud = pointcloud; - closestIntersection = point.position; - closestPoint = point; - } - } - - if (selectedPointcloud) { - return { - location: closestIntersection, - distance: closestDistance, - pointcloud: selectedPointcloud, - point: closestPoint - }; - } else { - return null; - } - } - - static pixelsArrayToImage (pixels, width, height) { - let canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - - let context = canvas.getContext('2d'); - - pixels = new pixels.constructor(pixels); - - for (let i = 0; i < pixels.length; i++) { - pixels[i * 4 + 3] = 255; - } - - let imageData = context.createImageData(width, height); - imageData.data.set(pixels); - context.putImageData(imageData, 0, 0); - - let img = new Image(); - img.src = canvas.toDataURL(); - // img.style.transform = "scaleY(-1)"; - - return img; - } - - static pixelsArrayToDataUrl(pixels, width, height) { - let canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - - let context = canvas.getContext('2d'); - - pixels = new pixels.constructor(pixels); - - for (let i = 0; i < pixels.length; i++) { - pixels[i * 4 + 3] = 255; - } - - let imageData = context.createImageData(width, height); - imageData.data.set(pixels); - context.putImageData(imageData, 0, 0); - - let dataURL = canvas.toDataURL(); - - return dataURL; - } - - static pixelsArrayToCanvas(pixels, width, height){ - let canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - - let context = canvas.getContext('2d'); - - pixels = new pixels.constructor(pixels); - - //for (let i = 0; i < pixels.length; i++) { - // pixels[i * 4 + 3] = 255; - //} - - // flip vertically - let bytesPerLine = width * 4; - for(let i = 0; i < parseInt(height / 2); i++){ - let j = height - i - 1; - - let lineI = pixels.slice(i * bytesPerLine, i * bytesPerLine + bytesPerLine); - let lineJ = pixels.slice(j * bytesPerLine, j * bytesPerLine + bytesPerLine); - pixels.set(lineJ, i * bytesPerLine); - pixels.set(lineI, j * bytesPerLine); - } - - let imageData = context.createImageData(width, height); - imageData.data.set(pixels); - context.putImageData(imageData, 0, 0); - - return canvas; - } - - static removeListeners(dispatcher, type){ - if (dispatcher._listeners === undefined) { - return; - } - - if (dispatcher._listeners[ type ]) { - delete dispatcher._listeners[ type ]; - } - } - - static mouseToRay(mouse, camera, width, height){ - - let normalizedMouse = { - x: (mouse.x / width) * 2 - 1, - y: -(mouse.y / height) * 2 + 1 - }; - - let vector = new THREE.Vector3(normalizedMouse.x, normalizedMouse.y, 0.5); - let origin = camera.position.clone(); - vector.unproject(camera); - let direction = new THREE.Vector3().subVectors(vector, origin).normalize(); - - let ray = new THREE.Ray(origin, direction); - - return ray; - } - - static projectedRadius(radius, camera, distance, screenWidth, screenHeight){ - if(camera instanceof THREE.OrthographicCamera){ - return Utils.projectedRadiusOrtho(radius, camera.projectionMatrix, screenWidth, screenHeight); - }else if(camera instanceof THREE.PerspectiveCamera){ - return Utils.projectedRadiusPerspective(radius, camera.fov * Math.PI / 180, distance, screenHeight); - }else { - throw new Error("invalid parameters"); - } - } - - static projectedRadiusPerspective(radius, fov, distance, screenHeight) { - let projFactor = (1 / Math.tan(fov / 2)) / distance; - projFactor = projFactor * screenHeight / 2; - - return radius * projFactor; - } - - static projectedRadiusOrtho(radius, proj, screenWidth, screenHeight) { - let p1 = new THREE.Vector4(0); - let p2 = new THREE.Vector4(radius); - - p1.applyMatrix4(proj); - p2.applyMatrix4(proj); - p1 = new THREE.Vector3(p1.x, p1.y, p1.z); - p2 = new THREE.Vector3(p2.x, p2.y, p2.z); - p1.x = (p1.x + 1.0) * 0.5 * screenWidth; - p1.y = (p1.y + 1.0) * 0.5 * screenHeight; - p2.x = (p2.x + 1.0) * 0.5 * screenWidth; - p2.y = (p2.y + 1.0) * 0.5 * screenHeight; - return p1.distanceTo(p2); - } - - - static topView(camera, node){ - camera.position.set(0, 1, 0); - camera.rotation.set(-Math.PI / 2, 0, 0); - camera.zoomTo(node, 1); - } - - static frontView (camera, node) { - camera.position.set(0, 0, 1); - camera.rotation.set(0, 0, 0); - camera.zoomTo(node, 1); - } - - static leftView (camera, node) { - camera.position.set(-1, 0, 0); - camera.rotation.set(0, -Math.PI / 2, 0); - camera.zoomTo(node, 1); - } - - static rightView (camera, node) { - camera.position.set(1, 0, 0); - camera.rotation.set(0, Math.PI / 2, 0); - camera.zoomTo(node, 1); - } - - - static findClosestGpsTime(target, viewer){ - const start = performance.now(); - - const nodes = []; - for(const pc of viewer.scene.pointclouds){ - nodes.push(pc.root); - - for(const child of pc.root.children){ - if(child){ - nodes.push(child); - } - } - } - - let closestNode = null; - let closestIndex = Infinity; - let closestDistance = Infinity; - let closestValue = 0; - - for(const node of nodes){ - - const isOkay = node.geometryNode != null - && node.geometryNode.geometry != null - && node.sceneNode != null; - - if(!isOkay){ - continue; - } - - let geometry = node.geometryNode.geometry; - let gpsTime = geometry.attributes["gps-time"]; - let range = gpsTime.potree.range; - - for(let i = 0; i < gpsTime.array.length; i++){ - let value = gpsTime.array[i]; - value = value * (range[1] - range[0]) + range[0]; - const distance = Math.abs(target - value); - - if(distance < closestDistance){ - closestIndex = i; - closestDistance = distance; - closestValue = value; - closestNode = node; - //console.log("found a closer one: " + value); - } - } - } - - const geometry = closestNode.geometryNode.geometry; - const position = new THREE.Vector3( - geometry.attributes.position.array[3 * closestIndex + 0], - geometry.attributes.position.array[3 * closestIndex + 1], - geometry.attributes.position.array[3 * closestIndex + 2], - ); - - position.applyMatrix4(closestNode.sceneNode.matrixWorld); - - const end = performance.now(); - const duration = (end - start); - console.log(`duration: ${duration.toFixed(3)}ms`); - - return { - node: closestNode, - index: closestIndex, - position: position, - }; - } - - /** - * - * 0: no intersection - * 1: intersection - * 2: fully inside - */ - static frustumSphereIntersection (frustum, sphere) { - let planes = frustum.planes; - let center = sphere.center; - let negRadius = -sphere.radius; - - let minDistance = Number.MAX_VALUE; - - for (let i = 0; i < 6; i++) { - let distance = planes[ i ].distanceToPoint(center); - - if (distance < negRadius) { - return 0; - } - - minDistance = Math.min(minDistance, distance); - } - - return (minDistance >= sphere.radius) ? 2 : 1; - } - - // code taken from three.js - // ImageUtils - generateDataTexture() - static generateDataTexture (width, height, color) { - let size = width * height; - let data = new Uint8Array(4 * width * height); - - let r = Math.floor(color.r * 255); - let g = Math.floor(color.g * 255); - let b = Math.floor(color.b * 255); - - for (let i = 0; i < size; i++) { - data[ i * 3 ] = r; - data[ i * 3 + 1 ] = g; - data[ i * 3 + 2 ] = b; - } - - let texture = new THREE.DataTexture(data, width, height, THREE.RGBAFormat); - texture.needsUpdate = true; - texture.magFilter = THREE.NearestFilter; - - return texture; - } - - // from http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript - static getParameterByName (name) { - name = name.replace(/[[]/, '\\[').replace(/[\]]/, '\\]'); - let regex = new RegExp('[\\?&]' + name + '=([^&#]*)'); - let results = regex.exec(document.location.search); - return results === null ? null : decodeURIComponent(results[1].replace(/\+/g, ' ')); - } - - static setParameter (name, value) { - // value = encodeURIComponent(value); - - name = name.replace(/[[]/, '\\[').replace(/[\]]/, '\\]'); - let regex = new RegExp('([\\?&])(' + name + '=([^&#]*))'); - let results = regex.exec(document.location.search); - - let url = window.location.href; - if (results === null) { - if (window.location.search.length === 0) { - url = url + '?'; - } else { - url = url + '&'; - } - - url = url + name + '=' + value; - } else { - let newValue = name + '=' + value; - url = url.replace(results[2], newValue); - } - window.history.replaceState({}, '', url); - } - - static createChildAABB(aabb, index){ - let min = aabb.min.clone(); - let max = aabb.max.clone(); - let size = new THREE.Vector3().subVectors(max, min); - - if ((index & 0b0001) > 0) { - min.z += size.z / 2; - } else { - max.z -= size.z / 2; - } - - if ((index & 0b0010) > 0) { - min.y += size.y / 2; - } else { - max.y -= size.y / 2; - } - - if ((index & 0b0100) > 0) { - min.x += size.x / 2; - } else { - max.x -= size.x / 2; - } - - return new THREE.Box3(min, max); - } - - // see https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript - static clipboardCopy(text){ - let textArea = document.createElement("textarea"); - - textArea.style.position = 'fixed'; - textArea.style.top = 0; - textArea.style.left = 0; - - textArea.style.width = '2em'; - textArea.style.height = '2em'; - - textArea.style.padding = 0; - - textArea.style.border = 'none'; - textArea.style.outline = 'none'; - textArea.style.boxShadow = 'none'; - - textArea.style.background = 'transparent'; - - textArea.value = text; - - document.body.appendChild(textArea); - - textArea.select(); - - try { - let success = document.execCommand('copy'); - if(success){ - console.log("copied text to clipboard"); - }else { - console.log("copy to clipboard failed"); - } - } catch (err) { - console.log("error while trying to copy to clipboard"); - } - - document.body.removeChild(textArea); - - } - - static getMeasurementIcon(measurement){ - if (measurement instanceof Measure) { - if (measurement.showDistances && !measurement.showArea && !measurement.showAngles) { - return `${Potree.resourcePath}/icons/distance.svg`; - } else if (measurement.showDistances && measurement.showArea && !measurement.showAngles) { - return `${Potree.resourcePath}/icons/area.svg`; - } else if (measurement.maxMarkers === 1) { - return `${Potree.resourcePath}/icons/point.svg`; - } else if (!measurement.showDistances && !measurement.showArea && measurement.showAngles) { - return `${Potree.resourcePath}/icons/angle.png`; - } else if (measurement.showHeight) { - return `${Potree.resourcePath}/icons/height.svg`; - } else { - return `${Potree.resourcePath}/icons/distance.svg`; - } - } else if (measurement instanceof Profile) { - return `${Potree.resourcePath}/icons/profile.svg`; - } else if (measurement instanceof Volume) { - return `${Potree.resourcePath}/icons/volume.svg`; - } else if (measurement instanceof PolygonClipVolume) { - return `${Potree.resourcePath}/icons/clip-polygon.svg`; - } - } - - static lineToLineIntersection(P0, P1, P2, P3){ - - const P = [P0, P1, P2, P3]; - - const d = (m, n, o, p) => { - let result = - (P[m].x - P[n].x) * (P[o].x - P[p].x) - + (P[m].y - P[n].y) * (P[o].y - P[p].y) - + (P[m].z - P[n].z) * (P[o].z - P[p].z); - - return result; - }; - - - const mua = (d(0, 2, 3, 2) * d(3, 2, 1, 0) - d(0, 2, 1, 0) * d(3, 2, 3, 2)) - /**-----------------------------------------------------------------**/ / - (d(1, 0, 1, 0) * d(3, 2, 3, 2) - d(3, 2, 1, 0) * d(3, 2, 1, 0)); - - - const mub = (d(0, 2, 3, 2) + mua * d(3, 2, 1, 0)) - /**--------------------------------------**/ / - d(3, 2, 3, 2); - - - const P01 = P1.clone().sub(P0); - const P23 = P3.clone().sub(P2); - - const Pa = P0.clone().add(P01.multiplyScalar(mua)); - const Pb = P2.clone().add(P23.multiplyScalar(mub)); - - const center = Pa.clone().add(Pb).multiplyScalar(0.5); - - return center; - } - - static computeCircleCenter(A, B, C){ - const AB = B.clone().sub(A); - const AC = C.clone().sub(A); - - const N = AC.clone().cross(AB).normalize(); - - const ab_dir = AB.clone().cross(N).normalize(); - const ac_dir = AC.clone().cross(N).normalize(); - - const ab_origin = A.clone().add(B).multiplyScalar(0.5); - const ac_origin = A.clone().add(C).multiplyScalar(0.5); - - const P0 = ab_origin; - const P1 = ab_origin.clone().add(ab_dir); - - const P2 = ac_origin; - const P3 = ac_origin.clone().add(ac_dir); - - const center = Utils.lineToLineIntersection(P0, P1, P2, P3); - - return center; - - // Potree.Utils.debugLine(viewer.scene.scene, P0, P1, 0x00ff00); - // Potree.Utils.debugLine(viewer.scene.scene, P2, P3, 0x0000ff); - - // Potree.Utils.debugSphere(viewer.scene.scene, center, 0.03, 0xff00ff); - - // const radius = center.distanceTo(A); - // Potree.Utils.debugCircle(viewer.scene.scene, center, radius, new THREE.Vector3(0, 0, 1), 0xff00ff); - } - - static getNorthVec(p1, distance, projection){ - if(projection){ - // if there is a projection, transform coordinates to WGS84 - // and compute angle to north there - - proj4.defs("pointcloud", projection); - const transform = proj4("pointcloud", "WGS84"); - - const llP1 = transform.forward(p1.toArray()); - let llP2 = transform.forward([p1.x, p1.y + distance]); - const polarRadius = Math.sqrt((llP2[0] - llP1[0]) ** 2 + (llP2[1] - llP1[1]) ** 2); - llP2 = [llP1[0], llP1[1] + polarRadius]; - - const northVec = transform.inverse(llP2); - - return new THREE.Vector3(...northVec, p1.z).sub(p1); - }else { - // if there is no projection, assume [0, 1, 0] as north direction - - const vec = new THREE.Vector3(0, 1, 0).multiplyScalar(distance); - - return vec; - } - } - - static computeAzimuth(p1, p2, projection){ - - let azimuth = 0; - - if(projection){ - // if there is a projection, transform coordinates to WGS84 - // and compute angle to north there - - let transform; - - if (projection.includes('EPSG')) { - transform = proj4(projection, "WGS84"); - } else { - proj4.defs("pointcloud", projection); - transform = proj4("pointcloud", "WGS84"); - } - - const llP1 = transform.forward(p1.toArray()); - const llP2 = transform.forward(p2.toArray()); - const dir = [ - llP2[0] - llP1[0], - llP2[1] - llP1[1], - ]; - azimuth = Math.atan2(dir[1], dir[0]) - Math.PI / 2; - }else { - // if there is no projection, assume [0, 1, 0] as north direction - - const dir = [p2.x - p1.x, p2.y - p1.y]; - azimuth = Math.atan2(dir[1], dir[0]) - Math.PI / 2; - } - - // make clockwise - azimuth = -azimuth; - - return azimuth; - } - - static async loadScript(url){ - - return new Promise( resolve => { - - const element = document.getElementById(url); - - if(element){ - resolve(); - }else { - const script = document.createElement("script"); - - script.id = url; - - script.onload = () => { - resolve(); - }; - script.src = url; - - document.body.appendChild(script); - } - }); - } - - static createSvgGradient(scheme){ - - // this is what we are creating: - // - // - // - // - // - // ... - // - // - // - // - // - // - - - const gradientId = `${Math.random()}_${Date.now()}`; - - const svgn = "http://www.w3.org/2000/svg"; - const svg = document.createElementNS(svgn, "svg"); - svg.setAttributeNS(null, "width", "2em"); - svg.setAttributeNS(null, "height", "3em"); - - { // - const defs = document.createElementNS(svgn, "defs"); - - const linearGradient = document.createElementNS(svgn, "linearGradient"); - linearGradient.setAttributeNS(null, "id", gradientId); - linearGradient.setAttributeNS(null, "gradientTransform", "rotate(90)"); - - for(let i = scheme.length - 1; i >= 0; i--){ - const stopVal = scheme[i]; - const percent = parseInt(100 - stopVal[0] * 100); - const [r, g, b] = stopVal[1].toArray().map(v => parseInt(v * 255)); - - const stop = document.createElementNS(svgn, "stop"); - stop.setAttributeNS(null, "offset", `${percent}%`); - stop.setAttributeNS(null, "stop-color", `rgb(${r}, ${g}, ${b})`); - - linearGradient.appendChild(stop); - } - - defs.appendChild(linearGradient); - svg.appendChild(defs); - } - - const rect = document.createElementNS(svgn, "rect"); - rect.setAttributeNS(null, "width", `100%`); - rect.setAttributeNS(null, "height", `100%`); - rect.setAttributeNS(null, "fill", `url("#${gradientId}")`); - rect.setAttributeNS(null, "stroke", `black`); - rect.setAttributeNS(null, "stroke-width", `0.1em`); - - svg.appendChild(rect); - - return svg; - } - - static async waitAny(promises){ - - return new Promise( (resolve) => { - - promises.map( promise => { - promise.then( () => { - resolve(); - }); - }); - - }); - - } - - } - - Utils.screenPass = new function () { - this.screenScene = new THREE.Scene(); - this.screenQuad = new THREE.Mesh(new THREE.PlaneBufferGeometry(2, 2, 0)); - this.screenQuad.material.depthTest = true; - this.screenQuad.material.depthWrite = true; - this.screenQuad.material.transparent = true; - this.screenScene.add(this.screenQuad); - this.camera = new THREE.Camera(); - - this.render = function (renderer, material, target) { - this.screenQuad.material = material; - - if (typeof target === 'undefined') { - renderer.render(this.screenScene, this.camera); - } else { - renderer.render(this.screenScene, this.camera, target); - } - }; - }(); - - class Annotation extends EventDispatcher { - constructor (args = {}) { - super(); - - this.scene = null; - this._title = args.title || 'No Title'; - this._description = args.description || ''; - this.offset = new THREE.Vector3(); - this.uuid = THREE.Math.generateUUID(); - - if (!args.position) { - this.position = null; - } else if (args.position instanceof THREE.Vector3) { - this.position = args.position; - } else { - this.position = new THREE.Vector3(...args.position); - } - - this.cameraPosition = (args.cameraPosition instanceof Array) - ? new THREE.Vector3().fromArray(args.cameraPosition) : args.cameraPosition; - this.cameraTarget = (args.cameraTarget instanceof Array) - ? new THREE.Vector3().fromArray(args.cameraTarget) : args.cameraTarget; - this.radius = args.radius; - this.view = args.view || null; - this.keepOpen = false; - this.descriptionVisible = false; - this.showDescription = true; - this.actions = args.actions || []; - this.isHighlighted = false; - this._visible = true; - this.__visible = true; - this._display = true; - this._expand = false; - this.collapseThreshold = [args.collapseThreshold, 100].find(e => e !== undefined); - - this.children = []; - this.parent = null; - this.boundingBox = new THREE.Box3(); - - let iconClose = exports.resourcePath + '/icons/close.svg'; - - this.domElement = $(` -

        - `); - - this.elTitlebar = this.domElement.find('.annotation-titlebar'); - this.elTitle = this.elTitlebar.find('.annotation-label'); - this.elTitle.append(this._title); - this.elDescription = this.domElement.find('.annotation-description'); - this.elDescriptionClose = this.elDescription.find('.annotation-description-close'); - // this.elDescriptionContent = this.elDescription.find(".annotation-description-content"); - - this.clickTitle = () => { - if(this.hasView()){ - this.moveHere(this.scene.getActiveCamera()); - } - this.dispatchEvent({type: 'click', target: this}); - }; - - this.elTitle.click(this.clickTitle); - - this.actions = this.actions.map(a => { - if (a instanceof Action) { - return a; - } else { - return new Action(a); - } - }); - - for (let action of this.actions) { - action.pairWith(this); - } - - let actions = this.actions.filter( - a => a.showIn === undefined || a.showIn.includes('scene')); - - for (let action of actions) { - let elButton = $(``); - this.elTitlebar.append(elButton); - elButton.click(() => action.onclick({annotation: this})); - } - - this.elDescriptionClose.hover( - e => this.elDescriptionClose.css('opacity', '1'), - e => this.elDescriptionClose.css('opacity', '0.5') - ); - this.elDescriptionClose.click(e => this.setHighlighted(false)); - // this.elDescriptionContent.html(this._description); - - this.domElement.mouseenter(e => this.setHighlighted(true)); - this.domElement.mouseleave(e => this.setHighlighted(false)); - - this.domElement.on('touchstart', e => { - this.setHighlighted(!this.isHighlighted); - }); - - this.display = false; - //this.display = true; - - } - - installHandles(viewer){ - if(this.handles !== undefined){ - return; - } - - let domElement = $(` -
        - - - - - -
        - `); - - let svg = domElement.find("svg")[0]; - let elLine = domElement.find("line")[0]; - let elStart = domElement.find("circle")[0]; - let elEnd = domElement.find("circle")[1]; - - let setCoordinates = (start, end) => { - elStart.setAttribute("cx", `${start.x}`); - elStart.setAttribute("cy", `${start.y}`); - - elEnd.setAttribute("cx", `${end.x}`); - elEnd.setAttribute("cy", `${end.y}`); - - elLine.setAttribute("x1", start.x); - elLine.setAttribute("y1", start.y); - elLine.setAttribute("x2", end.x); - elLine.setAttribute("y2", end.y); - - let box = svg.getBBox(); - svg.setAttribute("width", `${box.width}`); - svg.setAttribute("height", `${box.height}`); - svg.setAttribute("viewBox", `${box.x} ${box.y} ${box.width} ${box.height}`); - - let ya = start.y - end.y; - let xa = start.x - end.x; - - if(ya > 0){ - start.y = start.y - ya; - } - if(xa > 0){ - start.x = start.x - xa; - } - - domElement.css("left", `${start.x}px`); - domElement.css("top", `${start.y}px`); - - }; - - $(viewer.renderArea).append(domElement); - - - let annotationStartPos = this.position.clone(); - let annotationStartOffset = this.offset.clone(); - - $(this.domElement).draggable({ - start: (event, ui) => { - annotationStartPos = this.position.clone(); - annotationStartOffset = this.offset.clone(); - $(this.domElement).find(".annotation-titlebar").css("pointer-events", "none"); - - console.log($(this.domElement).find(".annotation-titlebar")); - }, - stop: () => { - $(this.domElement).find(".annotation-titlebar").css("pointer-events", ""); - }, - drag: (event, ui ) => { - let renderAreaWidth = viewer.renderer.getSize(new THREE.Vector2()).width; - //let renderAreaHeight = viewer.renderer.getSize().height; - - let diff = { - x: ui.originalPosition.left - ui.position.left, - y: ui.originalPosition.top - ui.position.top - }; - - let nDiff = { - x: -(diff.x / renderAreaWidth) * 2, - y: (diff.y / renderAreaWidth) * 2 - }; - - let camera = viewer.scene.getActiveCamera(); - let oldScreenPos = new THREE.Vector3() - .addVectors(annotationStartPos, annotationStartOffset) - .project(camera); - - let newScreenPos = oldScreenPos.clone(); - newScreenPos.x += nDiff.x; - newScreenPos.y += nDiff.y; - - let newPos = newScreenPos.clone(); - newPos.unproject(camera); - - let newOffset = new THREE.Vector3().subVectors(newPos, this.position); - this.offset.copy(newOffset); - } - }); - - let updateCallback = () => { - let position = this.position; - let scene = viewer.scene; - - const renderAreaSize = viewer.renderer.getSize(new THREE.Vector2()); - let renderAreaWidth = renderAreaSize.width; - let renderAreaHeight = renderAreaSize.height; - - let start = this.position.clone(); - let end = new THREE.Vector3().addVectors(this.position, this.offset); - - let toScreen = (position) => { - let camera = scene.getActiveCamera(); - let screenPos = new THREE.Vector3(); - - let worldView = new THREE.Matrix4().multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); - let ndc = new THREE.Vector4(position.x, position.y, position.z, 1.0).applyMatrix4(worldView); - // limit w to small positive value, in case position is behind the camera - ndc.w = Math.max(ndc.w, 0.1); - ndc.divideScalar(ndc.w); - - screenPos.copy(ndc); - screenPos.x = renderAreaWidth * (screenPos.x + 1) / 2; - screenPos.y = renderAreaHeight * (1 - (screenPos.y + 1) / 2); - - return screenPos; - }; - - start = toScreen(start); - end = toScreen(end); - - setCoordinates(start, end); - - }; - - viewer.addEventListener("update", updateCallback); - - this.handles = { - domElement: domElement, - setCoordinates: setCoordinates, - updateCallback: updateCallback - }; - } - - removeHandles(viewer){ - if(this.handles === undefined){ - return; - } - - //$(viewer.renderArea).remove(this.handles.domElement); - this.handles.domElement.remove(); - viewer.removeEventListener("update", this.handles.updateCallback); - - delete this.handles; - } - - get visible () { - return this._visible; - } - - set visible (value) { - if (this._visible === value) { - return; - } - - this._visible = value; - - //this.traverse(node => { - // node.display = value; - //}); - - this.dispatchEvent({ - type: 'visibility_changed', - annotation: this - }); - } - - get display () { - return this._display; - } - - set display (display) { - if (this._display === display) { - return; - } - - this._display = display; - - if (display) { - // this.domElement.fadeIn(200); - this.domElement.show(); - } else { - // this.domElement.fadeOut(200); - this.domElement.hide(); - } - } - - get expand () { - return this._expand; - } - - set expand (expand) { - if (this._expand === expand) { - return; - } - - if (expand) { - this.display = false; - } else { - this.display = true; - this.traverseDescendants(node => { - node.display = false; - }); - } - - this._expand = expand; - } - - get title () { - return this._title; - } - - set title (title) { - if (this._title === title) { - return; - } - - this._title = title; - this.elTitle.empty(); - this.elTitle.append(this._title); - - this.dispatchEvent({ - type: "annotation_changed", - annotation: this, - }); - } - - get description () { - return this._description; - } - - set description (description) { - if (this._description === description) { - return; - } - - this._description = description; - - const elDescriptionContent = this.elDescription.find(".annotation-description-content"); - elDescriptionContent.empty(); - elDescriptionContent.append(this._description); - - this.dispatchEvent({ - type: "annotation_changed", - annotation: this, - }); - } - - add (annotation) { - if (!this.children.includes(annotation)) { - this.children.push(annotation); - annotation.parent = this; - - let descendants = []; - annotation.traverse(a => { descendants.push(a); }); - - for (let descendant of descendants) { - let c = this; - while (c !== null) { - c.dispatchEvent({ - 'type': 'annotation_added', - 'annotation': descendant - }); - c = c.parent; - } - } - } - } - - level () { - if (this.parent === null) { - return 0; - } else { - return this.parent.level() + 1; - } - } - - hasChild(annotation) { - return this.children.includes(annotation); - } - - remove (annotation) { - if (this.hasChild(annotation)) { - annotation.removeAllChildren(); - annotation.dispose(); - this.children = this.children.filter(e => e !== annotation); - annotation.parent = null; - } - } - - removeAllChildren() { - this.children.forEach((child) => { - if (child.children.length > 0) { - child.removeAllChildren(); - } - - this.remove(child); - }); - } - - updateBounds () { - let box = new THREE.Box3(); - - if (this.position) { - box.expandByPoint(this.position); - } - - for (let child of this.children) { - child.updateBounds(); - - box.union(child.boundingBox); - } - - this.boundingBox.copy(box); - } - - traverse (handler) { - let expand = handler(this); - - if (expand === undefined || expand === true) { - for (let child of this.children) { - child.traverse(handler); - } - } - } - - traverseDescendants (handler) { - for (let child of this.children) { - child.traverse(handler); - } - } - - flatten () { - let annotations = []; - - this.traverse(annotation => { - annotations.push(annotation); - }); - - return annotations; - } - - descendants () { - let annotations = []; - - this.traverse(annotation => { - if (annotation !== this) { - annotations.push(annotation); - } - }); - - return annotations; - } - - setHighlighted (highlighted) { - if (highlighted) { - this.domElement.css('opacity', '0.8'); - this.elTitlebar.css('box-shadow', '0 0 5px #fff'); - this.domElement.css('z-index', '1000'); - - if (this._description) { - this.descriptionVisible = true; - this.elDescription.fadeIn(200); - this.elDescription.css('position', 'relative'); - } - } else { - this.domElement.css('opacity', '0.5'); - this.elTitlebar.css('box-shadow', ''); - this.domElement.css('z-index', '100'); - this.descriptionVisible = false; - this.elDescription.css('display', 'none'); - } - - this.isHighlighted = highlighted; - } - - hasView () { - let hasPosTargetView = this.cameraTarget instanceof THREE.Vector3; - hasPosTargetView = hasPosTargetView && this.cameraPosition instanceof THREE.Vector3; - - let hasRadiusView = this.radius !== undefined; - - let hasView = hasPosTargetView || hasRadiusView; - - return hasView; - }; - - moveHere (camera) { - if (!this.hasView()) { - return; - } - - let view = this.scene.view; - let animationDuration = 500; - let easing = TWEEN.Easing.Quartic.Out; - - let endTarget; - if (this.cameraTarget) { - endTarget = this.cameraTarget; - } else if (this.position) { - endTarget = this.position; - } else { - endTarget = this.boundingBox.getCenter(new THREE.Vector3()); - } - - if (this.cameraPosition) { - let endPosition = this.cameraPosition; - - Utils.moveTo(this.scene, endPosition, endTarget); - } else if (this.radius) { - let direction = view.direction; - let endPosition = endTarget.clone().add(direction.multiplyScalar(-this.radius)); - let startRadius = view.radius; - let endRadius = this.radius; - - { // animate camera position - let tween = new TWEEN.Tween(view.position).to(endPosition, animationDuration); - tween.easing(easing); - tween.start(); - } - - { // animate radius - let t = {x: 0}; - - let tween = new TWEEN.Tween(t) - .to({x: 1}, animationDuration) - .onUpdate(function () { - view.radius = this.x * endRadius + (1 - this.x) * startRadius; - }); - tween.easing(easing); - tween.start(); - } - } - }; - - dispose () { - if (this.domElement.parentElement) { - this.domElement.parentElement.removeChild(this.domElement); - } - }; - - toString () { - return 'Annotation: ' + this._title; - } - }; - - class EnumItem{ - constructor(object){ - for(let key of Object.keys(object)){ - this[key] = object[key]; - } - } - - inspect(){ - return `Enum(${this.name}: ${this.value})`; - } - }; - - class Enum{ - - constructor(object){ - this.object = object; - - for(let key of Object.keys(object)){ - let value = object[key]; - - if(typeof value === "object"){ - value.name = key; - }else { - value = {name: key, value: value}; - } - - this[key] = new EnumItem(value); - } - } - - fromValue(value){ - for(let key of Object.keys(this.object)){ - if(this[key].value === value){ - return this[key]; - } - } - - throw new Error(`No enum for value: ${value}`); - } - - }; - - const CameraMode = { - ORTHOGRAPHIC: 0, - PERSPECTIVE: 1, - VR: 2, - }; - - const ClipTask = { - NONE: 0, - HIGHLIGHT: 1, - SHOW_INSIDE: 2, - SHOW_OUTSIDE: 3 - }; - - const ClipMethod = { - INSIDE_ANY: 0, - INSIDE_ALL: 1 - }; - - const ElevationGradientRepeat = { - CLAMP: 0, - REPEAT: 1, - MIRRORED_REPEAT: 2, - }; - - const MOUSE = { - LEFT: 0b0001, - RIGHT: 0b0010, - MIDDLE: 0b0100 - }; - - const PointSizeType = { - FIXED: 0, - ATTENUATED: 1, - ADAPTIVE: 2 - }; - - const PointShape = { - SQUARE: 0, - CIRCLE: 1, - PARABOLOID: 2 - }; - - const TreeType = { - OCTREE: 0, - KDTREE: 1 - }; - - const LengthUnits = { - METER: {code: 'm', unitspermeter: 1.0}, - FEET: {code: 'ft', unitspermeter: 3.28084}, - INCH: {code: '\u2033', unitspermeter: 39.3701} - }; - - let ftCanvas = document.createElement('canvas'); - - const Features = (function () { - - let gl = ftCanvas.getContext('webgl') || ftCanvas.getContext('experimental-webgl'); - if (gl === null){ - return null; - } - - // -- code taken from THREE.WebGLRenderer -- - let _vertexShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT); - let _vertexShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT); - // Unused: let _vertexShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT); - - let _fragmentShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT); - let _fragmentShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT); - // Unused: let _fragmentShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT); - - let highpAvailable = _vertexShaderPrecisionHighpFloat.precision > 0 && _fragmentShaderPrecisionHighpFloat.precision > 0; - let mediumpAvailable = _vertexShaderPrecisionMediumpFloat.precision > 0 && _fragmentShaderPrecisionMediumpFloat.precision > 0; - // ----------------------------------------- - - let precision; - if (highpAvailable) { - precision = 'highp'; - } else if (mediumpAvailable) { - precision = 'mediump'; - } else { - precision = 'lowp'; - } - - return { - SHADER_INTERPOLATION: { - isSupported: function () { - let supported = true; - - supported = supported && gl.getExtension('EXT_frag_depth'); - supported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8; - - return supported; - } - }, - SHADER_SPLATS: { - isSupported: function () { - let supported = true; - - supported = supported && gl.getExtension('EXT_frag_depth'); - supported = supported && gl.getExtension('OES_texture_float'); - supported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8; - - return supported; - } - - }, - SHADER_EDL: { - isSupported: function () { - let supported = true; - - //supported = supported && gl.getExtension('EXT_frag_depth'); - supported = supported && gl.getExtension('OES_texture_float'); - supported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8; - - //supported = supported || (gl instanceof WebGL2RenderingContext); - - return supported; - } - - }, - //WEBGL2: { - // isSupported: function(){ - // return gl instanceof WebGL2RenderingContext; - // } - //}, - precision: precision - }; - }()); - - const KeyCodes = { - - LEFT: 37, - UP: 38, - RIGHT: 39, - BOTTOM: 40, - DELETE: 46, - - A: 'A'.charCodeAt(0), - S: 'S'.charCodeAt(0), - D: 'D'.charCodeAt(0), - W: 'W'.charCodeAt(0), - Q: 'Q'.charCodeAt(0), - E: 'E'.charCodeAt(0), - R: 'R'.charCodeAt(0), - F: 'F'.charCodeAt(0) - - }; - - class LRUItem{ - - constructor(node){ - this.previous = null; - this.next = null; - this.node = node; - } - - } - - /** - * - * @class A doubly-linked-list of the least recently used elements. - */ - class LRU{ - - constructor(){ - // the least recently used item - this.first = null; - // the most recently used item - this.last = null; - // a list of all items in the lru list - this.items = {}; - this.elements = 0; - this.numPoints = 0; - } - - size(){ - return this.elements; - } - - contains(node){ - return this.items[node.id] == null; - } - - touch(node){ - if (!node.loaded) { - return; - } - - let item; - if (this.items[node.id] == null) { - // add to list - item = new LRUItem(node); - item.previous = this.last; - this.last = item; - if (item.previous !== null) { - item.previous.next = item; - } - - this.items[node.id] = item; - this.elements++; - - if (this.first === null) { - this.first = item; - } - this.numPoints += node.numPoints; - } else { - // update in list - item = this.items[node.id]; - if (item.previous === null) { - // handle touch on first element - if (item.next !== null) { - this.first = item.next; - this.first.previous = null; - item.previous = this.last; - item.next = null; - this.last = item; - item.previous.next = item; - } - } else if (item.next === null) { - // handle touch on last element - } else { - // handle touch on any other element - item.previous.next = item.next; - item.next.previous = item.previous; - item.previous = this.last; - item.next = null; - this.last = item; - item.previous.next = item; - } - } - } - - remove(node){ - let lruItem = this.items[node.id]; - if (lruItem) { - if (this.elements === 1) { - this.first = null; - this.last = null; - } else { - if (!lruItem.previous) { - this.first = lruItem.next; - this.first.previous = null; - } - if (!lruItem.next) { - this.last = lruItem.previous; - this.last.next = null; - } - if (lruItem.previous && lruItem.next) { - lruItem.previous.next = lruItem.next; - lruItem.next.previous = lruItem.previous; - } - } - - delete this.items[node.id]; - this.elements--; - this.numPoints -= node.numPoints; - } - } - - getLRUItem(){ - if (this.first === null) { - return null; - } - let lru = this.first; - - return lru.node; - } - - toString(){ - let string = '{ '; - let curr = this.first; - while (curr !== null) { - string += curr.node.id; - if (curr.next !== null) { - string += ', '; - } - curr = curr.next; - } - string += '}'; - string += '(' + this.size() + ')'; - return string; - } - - freeMemory(){ - if (this.elements <= 1) { - return; - } - - while (this.numPoints > Potree.pointLoadLimit) { - let element = this.first; - let node = element.node; - this.disposeDescendants(node); - } - } - - disposeDescendants(node){ - let stack = []; - stack.push(node); - while (stack.length > 0) { - let current = stack.pop(); - - // console.log(current); - - current.dispose(); - this.remove(current); - - for (let key in current.children) { - if (current.children.hasOwnProperty(key)) { - let child = current.children[key]; - if (child.loaded) { - stack.push(current.children[key]); - } - } - } - } - } - - } - - class PointCloudTreeNode extends EventDispatcher{ - - constructor(){ - super(); - this.needsTransformUpdate = true; - } - - getChildren () { - throw new Error('override function'); - } - - getBoundingBox () { - throw new Error('override function'); - } - - isLoaded () { - throw new Error('override function'); - } - - isGeometryNode () { - throw new Error('override function'); - } - - isTreeNode () { - throw new Error('override function'); - } - - getLevel () { - throw new Error('override function'); - } - - getBoundingSphere () { - throw new Error('override function'); - } - }; - - class PointCloudTree extends THREE.Object3D { - constructor () { - super(); - } - - initialized () { - return this.root !== null; - } - }; - - /** - * Some types of possible point attribute data formats - * - * @class - */ - const PointAttributeTypes = { - DATA_TYPE_DOUBLE: {ordinal: 0, name: "double", size: 8}, - DATA_TYPE_FLOAT: {ordinal: 1, name: "float", size: 4}, - DATA_TYPE_INT8: {ordinal: 2, name: "int8", size: 1}, - DATA_TYPE_UINT8: {ordinal: 3, name: "uint8", size: 1}, - DATA_TYPE_INT16: {ordinal: 4, name: "int16", size: 2}, - DATA_TYPE_UINT16: {ordinal: 5, name: "uint16", size: 2}, - DATA_TYPE_INT32: {ordinal: 6, name: "int32", size: 4}, - DATA_TYPE_UINT32: {ordinal: 7, name: "uint32", size: 4}, - DATA_TYPE_INT64: {ordinal: 8, name: "int64", size: 8}, - DATA_TYPE_UINT64: {ordinal: 9, name: "uint64", size: 8} - }; - - let i = 0; - for (let obj in PointAttributeTypes) { - PointAttributeTypes[i] = PointAttributeTypes[obj]; - i++; - } - - - class PointAttribute{ - - constructor(name, type, numElements){ - this.name = name; - this.type = type; - this.numElements = numElements; - this.byteSize = this.numElements * this.type.size; - this.description = ""; - this.range = [Infinity, -Infinity]; - } - - }; - - PointAttribute.POSITION_CARTESIAN = new PointAttribute( - "POSITION_CARTESIAN", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - - PointAttribute.RGBA_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 4); - - PointAttribute.COLOR_PACKED = PointAttribute.RGBA_PACKED; - - PointAttribute.RGB_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 3); - - PointAttribute.NORMAL_FLOATS = new PointAttribute( - "NORMAL_FLOATS", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - - PointAttribute.INTENSITY = new PointAttribute( - "INTENSITY", PointAttributeTypes.DATA_TYPE_UINT16, 1); - - PointAttribute.CLASSIFICATION = new PointAttribute( - "CLASSIFICATION", PointAttributeTypes.DATA_TYPE_UINT8, 1); - - PointAttribute.NORMAL_SPHEREMAPPED = new PointAttribute( - "NORMAL_SPHEREMAPPED", PointAttributeTypes.DATA_TYPE_UINT8, 2); - - PointAttribute.NORMAL_OCT16 = new PointAttribute( - "NORMAL_OCT16", PointAttributeTypes.DATA_TYPE_UINT8, 2); - - PointAttribute.NORMAL = new PointAttribute( - "NORMAL", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - - PointAttribute.RETURN_NUMBER = new PointAttribute( - "RETURN_NUMBER", PointAttributeTypes.DATA_TYPE_UINT8, 1); - - PointAttribute.NUMBER_OF_RETURNS = new PointAttribute( - "NUMBER_OF_RETURNS", PointAttributeTypes.DATA_TYPE_UINT8, 1); - - PointAttribute.SOURCE_ID = new PointAttribute( - "SOURCE_ID", PointAttributeTypes.DATA_TYPE_UINT16, 1); - - PointAttribute.INDICES = new PointAttribute( - "INDICES", PointAttributeTypes.DATA_TYPE_UINT32, 1); - - PointAttribute.SPACING = new PointAttribute( - "SPACING", PointAttributeTypes.DATA_TYPE_FLOAT, 1); - - PointAttribute.GPS_TIME = new PointAttribute( - "GPS_TIME", PointAttributeTypes.DATA_TYPE_DOUBLE, 1); - - class PointAttributes{ - - constructor(pointAttributes){ - this.attributes = []; - this.byteSize = 0; - this.size = 0; - this.vectors = []; - - if (pointAttributes != null) { - for (let i = 0; i < pointAttributes.length; i++) { - let pointAttributeName = pointAttributes[i]; - let pointAttribute = PointAttribute[pointAttributeName]; - this.attributes.push(pointAttribute); - this.byteSize += pointAttribute.byteSize; - this.size++; - } - } - } - - - add(pointAttribute){ - this.attributes.push(pointAttribute); - this.byteSize += pointAttribute.byteSize; - this.size++; - }; - - addVector(vector){ - this.vectors.push(vector); - } - - hasColors(){ - for (let name in this.attributes) { - let pointAttribute = this.attributes[name]; - if (pointAttribute.name === PointAttributeNames.COLOR_PACKED) { - return true; - } - } - - return false; - }; - - hasNormals(){ - for (let name in this.attributes) { - let pointAttribute = this.attributes[name]; - if ( - pointAttribute === PointAttribute.NORMAL_SPHEREMAPPED || - pointAttribute === PointAttribute.NORMAL_FLOATS || - pointAttribute === PointAttribute.NORMAL || - pointAttribute === PointAttribute.NORMAL_OCT16) { - return true; - } - } - - return false; - }; - - } - - class U { - static toVector3(v, offset) { - return new THREE.Vector3().fromArray(v, offset || 0); - } - - static toBox3(b) { - return new THREE.Box3(U.toVector3(b), U.toVector3(b, 3)); - }; - - static findDim(schema, name) { - var dim = schema.find((dim) => dim.name == name); - if (!dim) throw new Error('Failed to find ' + name + ' in schema'); - return dim; - } - - static sphereFrom(b) { - return b.getBoundingSphere(new THREE.Sphere()); - } - }; - - class PointCloudEptGeometry { - constructor(url, info) { - let version = info.version; - let schema = info.schema; - let bounds = info.bounds; - let boundsConforming = info.boundsConforming; - - let xyz = [ - U.findDim(schema, 'X'), - U.findDim(schema, 'Y'), - U.findDim(schema, 'Z') - ]; - let scale = xyz.map((d) => d.scale || 1); - let offset = xyz.map((d) => d.offset || 0); - this.eptScale = U.toVector3(scale); - this.eptOffset = U.toVector3(offset); - - this.url = url; - this.info = info; - this.type = 'ept'; - - this.schema = schema; - this.span = info.span || info.ticks; - this.boundingBox = U.toBox3(bounds); - this.tightBoundingBox = U.toBox3(boundsConforming); - this.offset = U.toVector3([0, 0, 0]); - this.boundingSphere = U.sphereFrom(this.boundingBox); - this.tightBoundingSphere = U.sphereFrom(this.tightBoundingBox); - this.version = new Potree.Version('1.7'); - - this.projection = null; - this.fallbackProjection = null; - - if (info.srs && info.srs.horizontal) { - this.projection = info.srs.authority + ':' + info.srs.horizontal; - } - - if (info.srs.wkt) { - if (!this.projection) this.projection = info.srs.wkt; - else this.fallbackProjection = info.srs.wkt; - } - - { - // TODO [mschuetz]: named projections that proj4 can't handle seem to cause problems. - // remove them for now - - try{ - proj4(this.projection); - }catch(e){ - this.projection = null; - } - - - - } - - - { - const attributes = new PointAttributes(); - - attributes.add(PointAttribute.POSITION_CARTESIAN); - attributes.add(new PointAttribute("rgba", PointAttributeTypes.DATA_TYPE_UINT8, 4)); - attributes.add(new PointAttribute("intensity", PointAttributeTypes.DATA_TYPE_UINT16, 1)); - attributes.add(new PointAttribute("classification", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("gps-time", PointAttributeTypes.DATA_TYPE_DOUBLE, 1)); - attributes.add(new PointAttribute("returnNumber", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("number of returns", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("return number", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("source id", PointAttributeTypes.DATA_TYPE_UINT16, 1)); - - this.pointAttributes = attributes; - } - - - - this.spacing = - (this.boundingBox.max.x - this.boundingBox.min.x) / this.span; - - let hierarchyType = info.hierarchyType || 'json'; - - const dataType = info.dataType; - if (dataType == 'laszip') { - this.loader = new Potree.EptLaszipLoader(); - } - else if (dataType == 'binary') { - this.loader = new Potree.EptBinaryLoader(); - } - else if (dataType == 'zstandard') { - this.loader = new Potree.EptZstandardLoader(); - } - else { - throw new Error('Could not read data type: ' + dataType); - } - } - }; - - class EptKey { - constructor(ept, b, d, x, y, z) { - this.ept = ept; - this.b = b; - this.d = d; - this.x = x || 0; - this.y = y || 0; - this.z = z || 0; - } - - name() { - return this.d + '-' + this.x + '-' + this.y + '-' + this.z; - } - - step(a, b, c) { - let min = this.b.min.clone(); - let max = this.b.max.clone(); - let dst = new THREE.Vector3().subVectors(max, min); - - if (a) min.x += dst.x / 2; - else max.x -= dst.x / 2; - - if (b) min.y += dst.y / 2; - else max.y -= dst.y / 2; - - if (c) min.z += dst.z / 2; - else max.z -= dst.z / 2; - - return new Potree.EptKey( - this.ept, - new THREE.Box3(min, max), - this.d + 1, - this.x * 2 + a, - this.y * 2 + b, - this.z * 2 + c); - } - - children() { - var result = []; - for (var a = 0; a < 2; ++a) { - for (var b = 0; b < 2; ++b) { - for (var c = 0; c < 2; ++c) { - var add = this.step(a, b, c).name(); - if (!result.includes(add)) result = result.concat(add); - } - } - } - return result; - } - } - - class PointCloudEptGeometryNode extends PointCloudTreeNode { - constructor(ept, b, d, x, y, z) { - super(); - - this.ept = ept; - this.key = new Potree.EptKey( - this.ept, - b || this.ept.boundingBox, - d || 0, - x, - y, - z); - - this.id = PointCloudEptGeometryNode.IDCount++; - this.geometry = null; - this.boundingBox = this.key.b; - this.tightBoundingBox = this.boundingBox; - this.spacing = this.ept.spacing / Math.pow(2, this.key.d); - this.boundingSphere = U.sphereFrom(this.boundingBox); - - // These are set during hierarchy loading. - this.hasChildren = false; - this.children = { }; - this.numPoints = -1; - - this.level = this.key.d; - this.loaded = false; - this.loading = false; - this.oneTimeDisposeHandlers = []; - - let k = this.key; - this.name = this.toPotreeName(k.d, k.x, k.y, k.z); - this.index = parseInt(this.name.charAt(this.name.length - 1)); - } - - isGeometryNode() { return true; } - getLevel() { return this.level; } - isTreeNode() { return false; } - isLoaded() { return this.loaded; } - getBoundingSphere() { return this.boundingSphere; } - getBoundingBox() { return this.boundingBox; } - url() { return this.ept.url + 'ept-data/' + this.filename(); } - getNumPoints() { return this.numPoints; } - - filename() { return this.key.name(); } - - getChildren() { - let children = []; - - for (let i = 0; i < 8; i++) { - if (this.children[i]) { - children.push(this.children[i]); - } - } - - return children; - } - - addChild(child) { - this.children[child.index] = child; - child.parent = this; - } - - load() { - if (this.loaded || this.loading) return; - if (Potree.numNodesLoading >= Potree.maxNodesLoading) return; - - this.loading = true; - ++Potree.numNodesLoading; - - if (this.numPoints == -1) this.loadHierarchy(); - this.loadPoints(); - } - - loadPoints(){ - this.ept.loader.load(this); - } - - async loadHierarchy() { - let nodes = { }; - nodes[this.filename()] = this; - this.hasChildren = false; - - let eptHierarchyFile = - `${this.ept.url}ept-hierarchy/${this.filename()}.json`; - - let response = await fetch(eptHierarchyFile); - let hier = await response.json(); - - // Since we want to traverse top-down, and 10 comes - // lexicographically before 9 (for example), do a deep sort. - var keys = Object.keys(hier).sort((a, b) => { - let [da, xa, ya, za] = a.split('-').map((n) => parseInt(n, 10)); - let [db, xb, yb, zb] = b.split('-').map((n) => parseInt(n, 10)); - if (da < db) return -1; if (da > db) return 1; - if (xa < xb) return -1; if (xa > xb) return 1; - if (ya < yb) return -1; if (ya > yb) return 1; - if (za < zb) return -1; if (za > zb) return 1; - return 0; - }); - - keys.forEach((v) => { - let [d, x, y, z] = v.split('-').map((n) => parseInt(n, 10)); - let a = x & 1, b = y & 1, c = z & 1; - let parentName = - (d - 1) + '-' + (x >> 1) + '-' + (y >> 1) + '-' + (z >> 1); - - let parentNode = nodes[parentName]; - if (!parentNode) return; - parentNode.hasChildren = true; - - let key = parentNode.key.step(a, b, c); - - let node = new Potree.PointCloudEptGeometryNode( - this.ept, - key.b, - key.d, - key.x, - key.y, - key.z); - - node.level = d; - node.numPoints = hier[v]; - - parentNode.addChild(node); - nodes[key.name()] = node; - }); - } - - doneLoading(bufferGeometry, tightBoundingBox, np, mean) { - bufferGeometry.boundingBox = this.boundingBox; - this.geometry = bufferGeometry; - this.tightBoundingBox = tightBoundingBox; - this.numPoints = np; - this.mean = mean; - this.loaded = true; - this.loading = false; - --Potree.numNodesLoading; - } - - toPotreeName(d, x, y, z) { - var name = 'r'; - - for (var i = 0; i < d; ++i) { - var shift = d - i - 1; - var mask = 1 << shift; - var step = 0; - - if (x & mask) step += 4; - if (y & mask) step += 2; - if (z & mask) step += 1; - - name += step; - } - - return name; - } - - dispose() { - if (this.geometry && this.parent != null) { - this.geometry.dispose(); - this.geometry = null; - this.loaded = false; - - // this.dispatchEvent( { type: 'dispose' } ); - for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) { - let handler = this.oneTimeDisposeHandlers[i]; - handler(); - } - this.oneTimeDisposeHandlers = []; - } - } - } - - PointCloudEptGeometryNode.IDCount = 0; - - class PointCloudOctreeGeometry{ - - constructor(){ - this.url = null; - this.octreeDir = null; - this.spacing = 0; - this.boundingBox = null; - this.root = null; - this.nodes = null; - this.pointAttributes = null; - this.hierarchyStepSize = -1; - this.loader = null; - } - - } - - class PointCloudOctreeGeometryNode extends PointCloudTreeNode{ - - constructor(name, pcoGeometry, boundingBox){ - super(); - - this.id = PointCloudOctreeGeometryNode.IDCount++; - this.name = name; - this.index = parseInt(name.charAt(name.length - 1)); - this.pcoGeometry = pcoGeometry; - this.geometry = null; - this.boundingBox = boundingBox; - this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere()); - this.children = {}; - this.numPoints = 0; - this.level = null; - this.loaded = false; - this.oneTimeDisposeHandlers = []; - } - - isGeometryNode(){ - return true; - } - - getLevel(){ - return this.level; - } - - isTreeNode(){ - return false; - } - - isLoaded(){ - return this.loaded; - } - - getBoundingSphere(){ - return this.boundingSphere; - } - - getBoundingBox(){ - return this.boundingBox; - } - - getChildren(){ - let children = []; - - for (let i = 0; i < 8; i++) { - if (this.children[i]) { - children.push(this.children[i]); - } - } - - return children; - } - - getBoundingBox(){ - return this.boundingBox; - } - - getURL(){ - let url = ''; - - let version = this.pcoGeometry.loader.version; - - if (version.equalOrHigher('1.5')) { - url = this.pcoGeometry.octreeDir + '/' + this.getHierarchyPath() + '/' + this.name; - } else if (version.equalOrHigher('1.4')) { - url = this.pcoGeometry.octreeDir + '/' + this.name; - } else if (version.upTo('1.3')) { - url = this.pcoGeometry.octreeDir + '/' + this.name; - } - - return url; - } - - getHierarchyPath(){ - let path = 'r/'; - - let hierarchyStepSize = this.pcoGeometry.hierarchyStepSize; - let indices = this.name.substr(1); - - let numParts = Math.floor(indices.length / hierarchyStepSize); - for (let i = 0; i < numParts; i++) { - path += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/'; - } - - path = path.slice(0, -1); - - return path; - } - - addChild(child) { - this.children[child.index] = child; - child.parent = this; - } - - load(){ - if (this.loading === true || this.loaded === true || Potree.numNodesLoading >= Potree.maxNodesLoading) { - return; - } - - this.loading = true; - - Potree.numNodesLoading++; - - if (this.pcoGeometry.loader.version.equalOrHigher('1.5')) { - if ((this.level % this.pcoGeometry.hierarchyStepSize) === 0 && this.hasChildren) { - this.loadHierachyThenPoints(); - } else { - this.loadPoints(); - } - } else { - this.loadPoints(); - } - } - - loadPoints(){ - this.pcoGeometry.loader.load(this); - } - - loadHierachyThenPoints(){ - let node = this; - - // load hierarchy - let callback = function (node, hbuffer) { - - let tStart = performance.now(); - - let view = new DataView(hbuffer); - - let stack = []; - let children = view.getUint8(0); - let numPoints = view.getUint32(1, true); - node.numPoints = numPoints; - stack.push({children: children, numPoints: numPoints, name: node.name}); - - let decoded = []; - - let offset = 5; - while (stack.length > 0) { - let snode = stack.shift(); - let mask = 1; - for (let i = 0; i < 8; i++) { - if ((snode.children & mask) !== 0) { - let childName = snode.name + i; - - let childChildren = view.getUint8(offset); - let childNumPoints = view.getUint32(offset + 1, true); - - stack.push({children: childChildren, numPoints: childNumPoints, name: childName}); - - decoded.push({children: childChildren, numPoints: childNumPoints, name: childName}); - - offset += 5; - } - - mask = mask * 2; - } - - if (offset === hbuffer.byteLength) { - break; - } - } - - // console.log(decoded); - - let nodes = {}; - nodes[node.name] = node; - let pco = node.pcoGeometry; - - for (let i = 0; i < decoded.length; i++) { - let name = decoded[i].name; - let decodedNumPoints = decoded[i].numPoints; - let index = parseInt(name.charAt(name.length - 1)); - let parentName = name.substring(0, name.length - 1); - let parentNode = nodes[parentName]; - let level = name.length - 1; - let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index); - - let currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox); - currentNode.level = level; - currentNode.numPoints = decodedNumPoints; - currentNode.hasChildren = decoded[i].children > 0; - currentNode.spacing = pco.spacing / Math.pow(2, level); - parentNode.addChild(currentNode); - nodes[name] = currentNode; - } - - let duration = performance.now() - tStart; - if(duration > 5){ - let msg = `duration: ${duration}ms, numNodes: ${decoded.length}`; - console.log(msg); - } - - node.loadPoints(); - }; - if ((node.level % node.pcoGeometry.hierarchyStepSize) === 0) { - // let hurl = node.pcoGeometry.octreeDir + "/../hierarchy/" + node.name + ".hrc"; - let hurl = node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc'; - - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', hurl, true); - xhr.responseType = 'arraybuffer'; - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - xhr.onreadystatechange = () => { - if (xhr.readyState === 4) { - if (xhr.status === 200 || xhr.status === 0) { - let hbuffer = xhr.response; - callback(node, hbuffer); - } else { - console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl); - Potree.numNodesLoading--; - } - } - }; - try { - xhr.send(null); - } catch (e) { - console.log('fehler beim laden der punktwolke: ' + e); - } - } - } - - getNumPoints(){ - return this.numPoints; - } - - dispose(){ - if (this.geometry && this.parent != null) { - this.geometry.dispose(); - this.geometry = null; - this.loaded = false; - - this.dispatchEvent( { type: 'dispose' } ); - - for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) { - let handler = this.oneTimeDisposeHandlers[i]; - handler(); - } - this.oneTimeDisposeHandlers = []; - } - } - - } - - PointCloudOctreeGeometryNode.IDCount = 0; - - // ------------------------------------------- - // to get a ready to use gradient array from a chroma.js gradient: - // http://gka.github.io/chroma.js/ - // ------------------------------------------- - // - // let stops = []; - // for(let i = 0; i <= 10; i++){ - // let range = chroma.scale(['yellow', 'navy']).mode('lch').domain([10,0])(i)._rgb - // .slice(0, 3) - // .map(v => (v / 255).toFixed(4)) - // .join(", "); - // - // let line = `[${i / 10}, new THREE.Color(${range})],`; - // - // stops.push(line); - // } - // stops.join("\n"); - // - // - // - // ------------------------------------------- - // to get a ready to use gradient array from matplotlib: - // ------------------------------------------- - // import matplotlib.pyplot as plt - // import matplotlib.colors as colors - // - // norm = colors.Normalize(vmin=0,vmax=1) - // cmap = plt.cm.viridis - // - // for i in range(0,11): - // u = i / 10 - // rgb = cmap(norm(u))[0:3] - // rgb = ["{0:.3f}".format(v) for v in rgb] - // rgb = "[" + str(u) + ", new THREE.Color(" + ", ".join(rgb) + ")]," - // print(rgb) - - let Gradients = { - // From chroma spectral http://gka.github.io/chroma.js/ - SPECTRAL: [ - [0, new THREE.Color(0.3686, 0.3098, 0.6353)], - [0.1, new THREE.Color(0.1961, 0.5333, 0.7412)], - [0.2, new THREE.Color(0.4000, 0.7608, 0.6471)], - [0.3, new THREE.Color(0.6706, 0.8667, 0.6431)], - [0.4, new THREE.Color(0.9020, 0.9608, 0.5961)], - [0.5, new THREE.Color(1.0000, 1.0000, 0.7490)], - [0.6, new THREE.Color(0.9961, 0.8784, 0.5451)], - [0.7, new THREE.Color(0.9922, 0.6824, 0.3804)], - [0.8, new THREE.Color(0.9569, 0.4275, 0.2627)], - [0.9, new THREE.Color(0.8353, 0.2431, 0.3098)], - [1, new THREE.Color(0.6196, 0.0039, 0.2588)] - ], - PLASMA: [ - [0.0, new THREE.Color(0.241, 0.015, 0.610)], - [0.1, new THREE.Color(0.387, 0.001, 0.654)], - [0.2, new THREE.Color(0.524, 0.025, 0.653)], - [0.3, new THREE.Color(0.651, 0.125, 0.596)], - [0.4, new THREE.Color(0.752, 0.227, 0.513)], - [0.5, new THREE.Color(0.837, 0.329, 0.431)], - [0.6, new THREE.Color(0.907, 0.435, 0.353)], - [0.7, new THREE.Color(0.963, 0.554, 0.272)], - [0.8, new THREE.Color(0.992, 0.681, 0.195)], - [0.9, new THREE.Color(0.987, 0.822, 0.144)], - [1.0, new THREE.Color(0.940, 0.975, 0.131)] - ], - YELLOW_GREEN: [ - [0, new THREE.Color(0.1647, 0.2824, 0.3451)], - [0.1, new THREE.Color(0.1338, 0.3555, 0.4227)], - [0.2, new THREE.Color(0.0610, 0.4319, 0.4864)], - [0.3, new THREE.Color(0.0000, 0.5099, 0.5319)], - [0.4, new THREE.Color(0.0000, 0.5881, 0.5569)], - [0.5, new THREE.Color(0.1370, 0.6650, 0.5614)], - [0.6, new THREE.Color(0.2906, 0.7395, 0.5477)], - [0.7, new THREE.Color(0.4453, 0.8099, 0.5201)], - [0.8, new THREE.Color(0.6102, 0.8748, 0.4850)], - [0.9, new THREE.Color(0.7883, 0.9323, 0.4514)], - [1, new THREE.Color(0.9804, 0.9804, 0.4314)] - ], - VIRIDIS: [ - [0.0, new THREE.Color(0.267, 0.005, 0.329)], - [0.1, new THREE.Color(0.283, 0.141, 0.458)], - [0.2, new THREE.Color(0.254, 0.265, 0.530)], - [0.3, new THREE.Color(0.207, 0.372, 0.553)], - [0.4, new THREE.Color(0.164, 0.471, 0.558)], - [0.5, new THREE.Color(0.128, 0.567, 0.551)], - [0.6, new THREE.Color(0.135, 0.659, 0.518)], - [0.7, new THREE.Color(0.267, 0.749, 0.441)], - [0.8, new THREE.Color(0.478, 0.821, 0.318)], - [0.9, new THREE.Color(0.741, 0.873, 0.150)], - [1.0, new THREE.Color(0.993, 0.906, 0.144)] - ], - INFERNO: [ - [0.0, new THREE.Color(0.077, 0.042, 0.206)], - [0.1, new THREE.Color(0.225, 0.036, 0.388)], - [0.2, new THREE.Color(0.373, 0.074, 0.432)], - [0.3, new THREE.Color(0.522, 0.128, 0.420)], - [0.4, new THREE.Color(0.665, 0.182, 0.370)], - [0.5, new THREE.Color(0.797, 0.255, 0.287)], - [0.6, new THREE.Color(0.902, 0.364, 0.184)], - [0.7, new THREE.Color(0.969, 0.516, 0.063)], - [0.8, new THREE.Color(0.988, 0.683, 0.072)], - [0.9, new THREE.Color(0.961, 0.859, 0.298)], - [1.0, new THREE.Color(0.988, 0.998, 0.645)] - ], - GRAYSCALE: [ - [0, new THREE.Color(0, 0, 0)], - [1, new THREE.Color(1, 1, 1)] - ], - // 16 samples of the TURBU color scheme - // values taken from: https://gist.github.com/mikhailov-work/ee72ba4191942acecc03fe6da94fc73f - // original file licensed under Apache-2.0 - TURBO: [ - [0.00, new THREE.Color(0.18995, 0.07176, 0.23217)], - [0.07, new THREE.Color(0.25107, 0.25237, 0.63374)], - [0.13, new THREE.Color(0.27628, 0.42118, 0.89123)], - [0.20, new THREE.Color(0.25862, 0.57958, 0.99876)], - [0.27, new THREE.Color(0.15844, 0.73551, 0.92305)], - [0.33, new THREE.Color(0.09267, 0.86554, 0.7623)], - [0.40, new THREE.Color(0.19659, 0.94901, 0.59466)], - [0.47, new THREE.Color(0.42778, 0.99419, 0.38575)], - [0.53, new THREE.Color(0.64362, 0.98999, 0.23356)], - [0.60, new THREE.Color(0.80473, 0.92452, 0.20459)], - [0.67, new THREE.Color(0.93301, 0.81236, 0.22667)], - [0.73, new THREE.Color(0.99314, 0.67408, 0.20348)], - [0.80, new THREE.Color(0.9836, 0.49291, 0.12849)], - [0.87, new THREE.Color(0.92105, 0.31489, 0.05475)], - [0.93, new THREE.Color(0.81608, 0.18462, 0.01809)], - [1.00, new THREE.Color(0.66449, 0.08436, 0.00424)], - ], - RAINBOW: [ - [0, new THREE.Color(0.278, 0, 0.714)], - [1 / 6, new THREE.Color(0, 0, 1)], - [2 / 6, new THREE.Color(0, 1, 1)], - [3 / 6, new THREE.Color(0, 1, 0)], - [4 / 6, new THREE.Color(1, 1, 0)], - [5 / 6, new THREE.Color(1, 0.64, 0)], - [1, new THREE.Color(1, 0, 0)] - ], - CONTOUR: [ - [0.00, new THREE.Color(0, 0, 0)], - [0.03, new THREE.Color(0, 0, 0)], - [0.04, new THREE.Color(1, 1, 1)], - [1.00, new THREE.Color(1, 1, 1)] - ], - }; - - let Shaders = {}; - - Shaders["pointcloud.vs"] = ` -precision highp float; -precision highp int; - -#define max_clip_polygons 8 -#define PI 3.141592653589793 - -attribute vec3 position; -attribute vec3 color; -attribute float intensity; -attribute float classification; -attribute float returnNumber; -attribute float numberOfReturns; -attribute float pointSourceID; -attribute vec4 indices; -attribute float spacing; -attribute float gpsTime; -attribute vec3 normal; -attribute float aExtra; - -uniform mat4 modelMatrix; -uniform mat4 modelViewMatrix; -uniform mat4 projectionMatrix; -uniform mat4 viewMatrix; -uniform mat4 uViewInv; - -uniform float uScreenWidth; -uniform float uScreenHeight; -uniform float fov; -uniform float near; -uniform float far; - -uniform bool uDebug; - -uniform bool uUseOrthographicCamera; -uniform float uOrthoWidth; -uniform float uOrthoHeight; - -#define CLIPTASK_NONE 0 -#define CLIPTASK_HIGHLIGHT 1 -#define CLIPTASK_SHOW_INSIDE 2 -#define CLIPTASK_SHOW_OUTSIDE 3 - -#define CLIPMETHOD_INSIDE_ANY 0 -#define CLIPMETHOD_INSIDE_ALL 1 - -uniform int clipTask; -uniform int clipMethod; -#if defined(num_clipboxes) && num_clipboxes > 0 - uniform mat4 clipBoxes[num_clipboxes]; -#endif - -#if defined(num_clipspheres) && num_clipspheres > 0 - uniform mat4 uClipSpheres[num_clipspheres]; -#endif - -#if defined(num_clippolygons) && num_clippolygons > 0 - uniform int uClipPolygonVCount[num_clippolygons]; - uniform vec3 uClipPolygonVertices[num_clippolygons * 8]; - uniform mat4 uClipPolygonWVP[num_clippolygons]; -#endif - - -uniform float size; -uniform float minSize; -uniform float maxSize; - -uniform float uPCIndex; -uniform float uOctreeSpacing; -uniform float uNodeSpacing; -uniform float uOctreeSize; -uniform vec3 uBBSize; -uniform float uLevel; -uniform float uVNStart; -uniform bool uIsLeafNode; - -uniform vec3 uColor; -uniform float uOpacity; - -uniform vec2 elevationRange; -uniform vec2 intensityRange; - -uniform vec2 uFilterReturnNumberRange; -uniform vec2 uFilterNumberOfReturnsRange; -uniform vec2 uFilterPointSourceIDClipRange; -uniform vec2 uFilterGPSTimeClipRange; -uniform float uGpsScale; -uniform float uGpsOffset; - -uniform vec2 uNormalizedGpsBufferRange; - -uniform vec3 uIntensity_gbc; -uniform vec3 uRGB_gbc; -uniform vec3 uExtra_gbc; - -uniform float uTransition; -uniform float wRGB; -uniform float wIntensity; -uniform float wElevation; -uniform float wClassification; -uniform float wReturnNumber; -uniform float wSourceID; - -uniform vec2 uExtraNormalizedRange; -uniform vec2 uExtraRange; -uniform float uExtraScale; -uniform float uExtraOffset; - -uniform vec3 uShadowColor; - -uniform sampler2D visibleNodes; -uniform sampler2D gradient; -uniform sampler2D classificationLUT; - -#if defined(color_type_matcap) -uniform sampler2D matcapTextureUniform; -#endif -uniform bool backfaceCulling; - -#if defined(num_shadowmaps) && num_shadowmaps > 0 -uniform sampler2D uShadowMap[num_shadowmaps]; -uniform mat4 uShadowWorldView[num_shadowmaps]; -uniform mat4 uShadowProj[num_shadowmaps]; -#endif - -varying vec3 vColor; -varying float vLogDepth; -varying vec3 vViewPosition; -varying float vRadius; -varying float vPointSize; - - -float round(float number){ - return floor(number + 0.5); -} - -// -// ### ######## ### ######## ######## #### ## ## ######## ###### #### ######## ######## ###### -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## ######## ## ## ## ## ###### ###### ## ## ###### ###### -// ######### ## ## ######### ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ######## ## ## ## ## #### ### ######## ###### #### ######## ######## ###### -// - - -// --------------------- -// OCTREE -// --------------------- - -#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_octree) -/** - * number of 1-bits up to inclusive index position - * number is treated as if it were an integer in the range 0-255 - * - */ -int numberOfOnes(int number, int index){ - int numOnes = 0; - int tmp = 128; - for(int i = 7; i >= 0; i--){ - - if(number >= tmp){ - number = number - tmp; - - if(i <= index){ - numOnes++; - } - } - - tmp = tmp / 2; - } - - return numOnes; -} - - -/** - * checks whether the bit at index is 1 - * number is treated as if it were an integer in the range 0-255 - * - */ -bool isBitSet(int number, int index){ - - // weird multi else if due to lack of proper array, int and bitwise support in WebGL 1.0 - int powi = 1; - if(index == 0){ - powi = 1; - }else if(index == 1){ - powi = 2; - }else if(index == 2){ - powi = 4; - }else if(index == 3){ - powi = 8; - }else if(index == 4){ - powi = 16; - }else if(index == 5){ - powi = 32; - }else if(index == 6){ - powi = 64; - }else if(index == 7){ - powi = 128; - }else{ - return false; - } - - int ndp = number / powi; - - return mod(float(ndp), 2.0) != 0.0; -} - - -/** - * find the LOD at the point position - */ -float getLOD(){ - - vec3 offset = vec3(0.0, 0.0, 0.0); - int iOffset = int(uVNStart); - float depth = uLevel; - for(float i = 0.0; i <= 30.0; i++){ - float nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0); - - vec3 index3d = (position-offset) / nodeSizeAtLevel; - index3d = floor(index3d + 0.5); - int index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z)); - - vec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0)); - int mask = int(round(value.r * 255.0)); - - if(isBitSet(mask, index)){ - // there are more visible child nodes at this position - int advanceG = int(round(value.g * 255.0)) * 256; - int advanceB = int(round(value.b * 255.0)); - int advanceChild = numberOfOnes(mask, index - 1); - int advance = advanceG + advanceB + advanceChild; - - iOffset = iOffset + advance; - - depth++; - }else{ - // no more visible child nodes at this position - //return value.a * 255.0; - - float lodOffset = (255.0 * value.a) / 10.0 - 10.0; - - return depth + lodOffset; - } - - offset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d; - } - - return depth; -} - -float getSpacing(){ - vec3 offset = vec3(0.0, 0.0, 0.0); - int iOffset = int(uVNStart); - float depth = uLevel; - float spacing = uNodeSpacing; - for(float i = 0.0; i <= 30.0; i++){ - float nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0); - - vec3 index3d = (position-offset) / nodeSizeAtLevel; - index3d = floor(index3d + 0.5); - int index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z)); - - vec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0)); - int mask = int(round(value.r * 255.0)); - float spacingFactor = value.a; - - if(i > 0.0){ - spacing = spacing / (255.0 * spacingFactor); - } - - - if(isBitSet(mask, index)){ - // there are more visible child nodes at this position - int advanceG = int(round(value.g * 255.0)) * 256; - int advanceB = int(round(value.b * 255.0)); - int advanceChild = numberOfOnes(mask, index - 1); - int advance = advanceG + advanceB + advanceChild; - - iOffset = iOffset + advance; - - //spacing = spacing / (255.0 * spacingFactor); - //spacing = spacing / 3.0; - - depth++; - }else{ - // no more visible child nodes at this position - return spacing; - } - - offset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d; - } - - return spacing; -} - -float getPointSizeAttenuation(){ - return pow(2.0, getLOD()); -} - - -#endif - - -// --------------------- -// KD-TREE -// --------------------- - -#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_kdtree) - -float getLOD(){ - vec3 offset = vec3(0.0, 0.0, 0.0); - float iOffset = 0.0; - float depth = 0.0; - - - vec3 size = uBBSize; - vec3 pos = position; - - for(float i = 0.0; i <= 1000.0; i++){ - - vec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0)); - - int children = int(value.r * 255.0); - float next = value.g * 255.0; - int split = int(value.b * 255.0); - - if(next == 0.0){ - return depth; - } - - vec3 splitv = vec3(0.0, 0.0, 0.0); - if(split == 1){ - splitv.x = 1.0; - }else if(split == 2){ - splitv.y = 1.0; - }else if(split == 4){ - splitv.z = 1.0; - } - - iOffset = iOffset + next; - - float factor = length(pos * splitv / size); - if(factor < 0.5){ - // left - if(children == 0 || children == 2){ - return depth; - } - }else{ - // right - pos = pos - size * splitv * 0.5; - if(children == 0 || children == 1){ - return depth; - } - if(children == 3){ - iOffset = iOffset + 1.0; - } - } - size = size * ((1.0 - (splitv + 1.0) / 2.0) + 0.5); - - depth++; - } - - - return depth; -} - -float getPointSizeAttenuation(){ - return 0.5 * pow(1.3, getLOD()); -} - -#endif - - - -// -// ### ######## ######## ######## #### ######## ## ## ######## ######## ###### -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ######## ## ######## ## ## ## ###### ###### -// ######### ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## -// ## ## ## ## ## ## #### ######## ####### ## ######## ###### -// - - - -// formula adapted from: http://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/image-processing-algorithms-part-5-contrast-adjustment/ -float getContrastFactor(float contrast){ - return (1.0158730158730156 * (contrast + 1.0)) / (1.0158730158730156 - contrast); -} - -vec3 getRGB(){ - vec3 rgb = color; - - rgb = pow(rgb, vec3(uRGB_gbc.x)); - rgb = rgb + uRGB_gbc.y; - rgb = (rgb - 0.5) * getContrastFactor(uRGB_gbc.z) + 0.5; - rgb = clamp(rgb, 0.0, 1.0); - - return rgb; -} - -float getIntensity(){ - float w = (intensity - intensityRange.x) / (intensityRange.y - intensityRange.x); - w = pow(w, uIntensity_gbc.x); - w = w + uIntensity_gbc.y; - w = (w - 0.5) * getContrastFactor(uIntensity_gbc.z) + 0.5; - w = clamp(w, 0.0, 1.0); - - return w; -} - -vec3 getGpsTime(){ - - float w = (gpsTime + uGpsOffset) * uGpsScale; - - - vec3 c = texture2D(gradient, vec2(w, 1.0 - w)).rgb; - - - // vec2 r = uNormalizedGpsBufferRange; - // float w = gpsTime * (r.y - r.x) + r.x; - // w = clamp(w, 0.0, 1.0); - // vec3 c = texture2D(gradient, vec2(w,1.0-w)).rgb; - - return c; -} - -vec3 getElevation(){ - vec4 world = modelMatrix * vec4( position, 1.0 ); - float w = (world.z - elevationRange.x) / (elevationRange.y - elevationRange.x); - vec3 cElevation = texture2D(gradient, vec2(w,1.0-w)).rgb; - - return cElevation; -} - -vec4 getClassification(){ - vec2 uv = vec2(classification / 255.0, 0.5); - vec4 classColor = texture2D(classificationLUT, uv); - - return classColor; -} - -vec3 getReturns(){ - - // 0b 00_000_111 - float rn = mod(returnNumber, 8.0); - // 0b 00_111_000 - float nr = mod(returnNumber / 8.0, 8.0); - - if(nr <= 1.0){ - return vec3(1.0, 0.0, 0.0); - }else{ - return vec3(0.0, 1.0, 0.0); - } - - // return vec3(nr / 4.0, 0.0, 0.0); - - // if(nr == 1.0){ - // return vec3(1.0, 1.0, 0.0); - // }else{ - // if(rn == 1.0){ - // return vec3(1.0, 0.0, 0.0); - // }else if(rn == nr){ - // return vec3(0.0, 0.0, 1.0); - // }else{ - // return vec3(0.0, 1.0, 0.0); - // } - // } - - // if(numberOfReturns == 1.0){ - // return vec3(1.0, 1.0, 0.0); - // }else{ - // if(returnNumber == 1.0){ - // return vec3(1.0, 0.0, 0.0); - // }else if(returnNumber == numberOfReturns){ - // return vec3(0.0, 0.0, 1.0); - // }else{ - // return vec3(0.0, 1.0, 0.0); - // } - // } -} - -vec3 getReturnNumber(){ - if(numberOfReturns == 1.0){ - return vec3(1.0, 1.0, 0.0); - }else{ - if(returnNumber == 1.0){ - return vec3(1.0, 0.0, 0.0); - }else if(returnNumber == numberOfReturns){ - return vec3(0.0, 0.0, 1.0); - }else{ - return vec3(0.0, 1.0, 0.0); - } - } -} - -vec3 getNumberOfReturns(){ - float value = numberOfReturns; - - float w = value / 6.0; - - vec3 color = texture2D(gradient, vec2(w, 1.0 - w)).rgb; - - return color; -} - -vec3 getSourceID(){ - float w = mod(pointSourceID, 10.0) / 10.0; - return texture2D(gradient, vec2(w,1.0 - w)).rgb; -} - -vec3 getCompositeColor(){ - vec3 c; - float w; - - c += wRGB * getRGB(); - w += wRGB; - - c += wIntensity * getIntensity() * vec3(1.0, 1.0, 1.0); - w += wIntensity; - - c += wElevation * getElevation(); - w += wElevation; - - c += wReturnNumber * getReturnNumber(); - w += wReturnNumber; - - c += wSourceID * getSourceID(); - w += wSourceID; - - vec4 cl = wClassification * getClassification(); - c += cl.a * cl.rgb; - w += wClassification * cl.a; - - c = c / w; - - if(w == 0.0){ - //c = color; - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - } - - return c; -} - - -vec3 getNormal(){ - //vec3 n_hsv = vec3( modelMatrix * vec4( normal, 0.0 )) * 0.5 + 0.5; // (n_world.xyz + vec3(1.,1.,1.)) / 2.; - vec3 n_view = normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) ); - return n_view; -} -bool applyBackfaceCulling() { - // Black not facing vertices / Backface culling - vec3 e = normalize(vec3(modelViewMatrix * vec4( position, 1. ))); - vec3 n = getNormal(); // normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) ); - - if((uUseOrthographicCamera && n.z <= 0.) || (!uUseOrthographicCamera && dot( n, e ) >= 0.)) { - return true; - } else { - return false; - } -} - -#if defined(color_type_matcap) -// Matcap Material -vec3 getMatcap(){ - vec3 eye = normalize( vec3( modelViewMatrix * vec4( position, 1. ) ) ); - if(uUseOrthographicCamera) { - eye = vec3(0., 0., -1.); - } - vec3 r_en = reflect( eye, getNormal() ); // or r_en = e - 2. * dot( n, e ) * n; - float m = 2. * sqrt(pow( r_en.x, 2. ) + pow( r_en.y, 2. ) + pow( r_en.z + 1., 2. )); - vec2 vN = r_en.xy / m + .5; - return texture2D(matcapTextureUniform, vN).rgb; -} -#endif - -vec3 getExtra(){ - - float w = (aExtra + uExtraOffset) * uExtraScale; - w = clamp(w, 0.0, 1.0); - - vec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb; - - // vec2 r = uExtraNormalizedRange; - - // float w = aExtra * (r.y - r.x) + r.x; - - // w = (w - uExtraRange.x) / (uExtraRange.y - uExtraRange.x); - - // w = clamp(w, 0.0, 1.0); - - // vec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb; - - return color; -} - -vec3 getColor(){ - vec3 color; - - #ifdef color_type_rgba - color = getRGB(); - #elif defined color_type_height || defined color_type_elevation - color = getElevation(); - #elif defined color_type_rgb_height - vec3 cHeight = getElevation(); - color = (1.0 - uTransition) * getRGB() + uTransition * cHeight; - #elif defined color_type_depth - float linearDepth = gl_Position.w; - float expDepth = (gl_Position.z / gl_Position.w) * 0.5 + 0.5; - color = vec3(linearDepth, expDepth, 0.0); - //color = vec3(1.0, 0.5, 0.3); - #elif defined color_type_intensity - float w = getIntensity(); - color = vec3(w, w, w); - #elif defined color_type_gps_time - color = getGpsTime(); - #elif defined color_type_intensity_gradient - float w = getIntensity(); - color = texture2D(gradient, vec2(w,1.0-w)).rgb; - #elif defined color_type_color - color = uColor; - #elif defined color_type_level_of_detail - float depth = getLOD(); - float w = depth / 10.0; - color = texture2D(gradient, vec2(w,1.0-w)).rgb; - #elif defined color_type_indices - color = indices.rgb; - #elif defined color_type_classification - vec4 cl = getClassification(); - color = cl.rgb; - #elif defined color_type_return_number - color = getReturnNumber(); - #elif defined color_type_returns - color = getReturns(); - #elif defined color_type_number_of_returns - color = getNumberOfReturns(); - #elif defined color_type_source_id - color = getSourceID(); - #elif defined color_type_point_source_id - color = getSourceID(); - #elif defined color_type_normal - color = (modelMatrix * vec4(normal, 0.0)).xyz; - #elif defined color_type_phong - color = color; - #elif defined color_type_composite - color = getCompositeColor(); - #elif defined color_type_matcap - color = getMatcap(); - #else - color = getExtra(); - #endif - - if (backfaceCulling && applyBackfaceCulling()) { - color = vec3(0.); - } - - return color; -} - -float getPointSize(){ - float pointSize = 1.0; - - float slope = tan(fov / 2.0); - float projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z); - - float r = uOctreeSpacing * 1.7; - vRadius = r; - #if defined fixed_point_size - pointSize = size; - #elif defined attenuated_point_size - if(uUseOrthographicCamera){ - pointSize = size; - }else{ - pointSize = size * spacing * projFactor; - //pointSize = pointSize * projFactor; - } - #elif defined adaptive_point_size - if(uUseOrthographicCamera) { - float worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation(); - pointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth; - } else { - - // float leafSpacing = 0.122069092 * 8.0; - - // bool isLeafNode = getLOD() == 1000.0; - // if(isLeafNode){ - // // pointSize = size * spacing * projFactor; - - // float worldSpaceSize = size * leafSpacing; - // pointSize = worldSpaceSize * projFactor; - // }else{ - float worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation(); - - // minimum world space size - // worldSpaceSize = max(worldSpaceSize, leafSpacing); - - pointSize = worldSpaceSize * projFactor; - // } - } - #endif - - pointSize = max(minSize, pointSize); - pointSize = min(maxSize, pointSize); - - vRadius = pointSize / projFactor; - - return pointSize; -} - -#if defined(num_clippolygons) && num_clippolygons > 0 -bool pointInClipPolygon(vec3 point, int polyIdx) { - - mat4 wvp = uClipPolygonWVP[polyIdx]; - //vec4 screenClipPos = uClipPolygonVP[polyIdx] * modelMatrix * vec4(point, 1.0); - //screenClipPos.xy = screenClipPos.xy / screenClipPos.w * 0.5 + 0.5; - - vec4 pointNDC = wvp * vec4(point, 1.0); - pointNDC.xy = pointNDC.xy / pointNDC.w; - - int j = uClipPolygonVCount[polyIdx] - 1; - bool c = false; - for(int i = 0; i < 8; i++) { - if(i == uClipPolygonVCount[polyIdx]) { - break; - } - - //vec4 verti = wvp * vec4(uClipPolygonVertices[polyIdx * 8 + i], 1); - //vec4 vertj = wvp * vec4(uClipPolygonVertices[polyIdx * 8 + j], 1); - - //verti.xy = verti.xy / verti.w; - //vertj.xy = vertj.xy / vertj.w; - - //verti.xy = verti.xy / verti.w * 0.5 + 0.5; - //vertj.xy = vertj.xy / vertj.w * 0.5 + 0.5; - - vec3 verti = uClipPolygonVertices[polyIdx * 8 + i]; - vec3 vertj = uClipPolygonVertices[polyIdx * 8 + j]; - - if( ((verti.y > pointNDC.y) != (vertj.y > pointNDC.y)) && - (pointNDC.x < (vertj.x-verti.x) * (pointNDC.y-verti.y) / (vertj.y-verti.y) + verti.x) ) { - c = !c; - } - j = i; - } - - return c; -} -#endif - -void doClipping(){ - - { - vec4 cl = getClassification(); - if(cl.a == 0.0){ - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - - return; - } - } - - #if defined(clip_return_number_enabled) - { // return number filter - vec2 range = uFilterReturnNumberRange; - if(returnNumber < range.x || returnNumber > range.y){ - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - - return; - } - } - #endif - - #if defined(clip_number_of_returns_enabled) - { // number of return filter - vec2 range = uFilterNumberOfReturnsRange; - if(numberOfReturns < range.x || numberOfReturns > range.y){ - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - - return; - } - } - #endif - - #if defined(clip_gps_enabled) - { // GPS time filter - float time = (gpsTime + uGpsOffset) * uGpsScale; - vec2 range = uFilterGPSTimeClipRange; - - if(time < range.x || time > range.y){ - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - - return; - } - } - #endif - - #if defined(clip_point_source_id_enabled) - { // point source id filter - vec2 range = uFilterPointSourceIDClipRange; - if(pointSourceID < range.x || pointSourceID > range.y){ - gl_Position = vec4(100.0, 100.0, 100.0, 0.0); - - return; - } - } - #endif - - int clipVolumesCount = 0; - int insideCount = 0; - - #if defined(num_clipboxes) && num_clipboxes > 0 - for(int i = 0; i < num_clipboxes; i++){ - vec4 clipPosition = clipBoxes[i] * modelMatrix * vec4( position, 1.0 ); - bool inside = -0.5 <= clipPosition.x && clipPosition.x <= 0.5; - inside = inside && -0.5 <= clipPosition.y && clipPosition.y <= 0.5; - inside = inside && -0.5 <= clipPosition.z && clipPosition.z <= 0.5; - - insideCount = insideCount + (inside ? 1 : 0); - clipVolumesCount++; - } - #endif - - #if defined(num_clippolygons) && num_clippolygons > 0 - for(int i = 0; i < num_clippolygons; i++) { - bool inside = pointInClipPolygon(position, i); - - insideCount = insideCount + (inside ? 1 : 0); - clipVolumesCount++; - } - #endif - - bool insideAny = insideCount > 0; - bool insideAll = (clipVolumesCount > 0) && (clipVolumesCount == insideCount); - - if(clipMethod == CLIPMETHOD_INSIDE_ANY){ - if(insideAny && clipTask == CLIPTASK_HIGHLIGHT){ - vColor.r += 0.5; - }else if(!insideAny && clipTask == CLIPTASK_SHOW_INSIDE){ - gl_Position = vec4(100.0, 100.0, 100.0, 1.0); - }else if(insideAny && clipTask == CLIPTASK_SHOW_OUTSIDE){ - gl_Position = vec4(100.0, 100.0, 100.0, 1.0); - } - }else if(clipMethod == CLIPMETHOD_INSIDE_ALL){ - if(insideAll && clipTask == CLIPTASK_HIGHLIGHT){ - vColor.r += 0.5; - }else if(!insideAll && clipTask == CLIPTASK_SHOW_INSIDE){ - gl_Position = vec4(100.0, 100.0, 100.0, 1.0); - }else if(insideAll && clipTask == CLIPTASK_SHOW_OUTSIDE){ - gl_Position = vec4(100.0, 100.0, 100.0, 1.0); - } - } -} - - - -// -// ## ## ### #### ## ## -// ### ### ## ## ## ### ## -// #### #### ## ## ## #### ## -// ## ### ## ## ## ## ## ## ## -// ## ## ######### ## ## #### -// ## ## ## ## ## ## ### -// ## ## ## ## #### ## ## -// - -void main() { - vec4 mvPosition = modelViewMatrix * vec4(position, 1.0 ); - vViewPosition = mvPosition.xyz; - gl_Position = projectionMatrix * mvPosition; - vLogDepth = log2(-mvPosition.z); - - // POINT SIZE - float pointSize = getPointSize(); - gl_PointSize = pointSize; - vPointSize = pointSize; - - // COLOR - vColor = getColor(); - - //gl_Position = vec4(0.0, 0.0, 0.0, 1.0); - //gl_Position = vec4(position.xzy / 1000.0, 1.0 ); - - //gl_PointSize = 5.0; - //vColor = vec3(1.0, 1.0, 1.0); - - // only for "replacing" approaches - // if(getLOD() != uLevel){ - // gl_Position = vec4(10.0, 10.0, 10.0, 1.0); - // } - - - #if defined hq_depth_pass - float originalDepth = gl_Position.w; - float adjustedDepth = originalDepth + 2.0 * vRadius; - float adjust = adjustedDepth / originalDepth; - - mvPosition.xyz = mvPosition.xyz * adjust; - gl_Position = projectionMatrix * mvPosition; - #endif - - - // CLIPPING - doClipping(); - - #if defined(num_clipspheres) && num_clipspheres > 0 - for(int i = 0; i < num_clipspheres; i++){ - vec4 sphereLocal = uClipSpheres[i] * mvPosition; - - float distance = length(sphereLocal.xyz); - - if(distance < 1.0){ - float w = distance; - vec3 cGradient = texture2D(gradient, vec2(w, 1.0 - w)).rgb; - - vColor = cGradient; - //vColor = cGradient * 0.7 + vColor * 0.3; - } - } - #endif - - #if defined(num_shadowmaps) && num_shadowmaps > 0 - - const float sm_near = 0.1; - const float sm_far = 10000.0; - - for(int i = 0; i < num_shadowmaps; i++){ - vec3 viewPos = (uShadowWorldView[i] * vec4(position, 1.0)).xyz; - float distanceToLight = abs(viewPos.z); - - vec4 projPos = uShadowProj[i] * uShadowWorldView[i] * vec4(position, 1); - vec3 nc = projPos.xyz / projPos.w; - - float u = nc.x * 0.5 + 0.5; - float v = nc.y * 0.5 + 0.5; - - vec2 sampleStep = vec2(1.0 / (2.0*1024.0), 1.0 / (2.0*1024.0)) * 1.5; - vec2 sampleLocations[9]; - sampleLocations[0] = vec2(0.0, 0.0); - sampleLocations[1] = sampleStep; - sampleLocations[2] = -sampleStep; - sampleLocations[3] = vec2(sampleStep.x, -sampleStep.y); - sampleLocations[4] = vec2(-sampleStep.x, sampleStep.y); - - sampleLocations[5] = vec2(0.0, sampleStep.y); - sampleLocations[6] = vec2(0.0, -sampleStep.y); - sampleLocations[7] = vec2(sampleStep.x, 0.0); - sampleLocations[8] = vec2(-sampleStep.x, 0.0); - - float visibleSamples = 0.0; - float numSamples = 0.0; - - float bias = vRadius * 2.0; - - for(int j = 0; j < 9; j++){ - vec4 depthMapValue = texture2D(uShadowMap[i], vec2(u, v) + sampleLocations[j]); - - float linearDepthFromSM = depthMapValue.x + bias; - float linearDepthFromViewer = distanceToLight; - - if(linearDepthFromSM > linearDepthFromViewer){ - visibleSamples += 1.0; - } - - numSamples += 1.0; - } - - float visibility = visibleSamples / numSamples; - - if(u < 0.0 || u > 1.0 || v < 0.0 || v > 1.0 || nc.x < -1.0 || nc.x > 1.0 || nc.y < -1.0 || nc.y > 1.0 || nc.z < -1.0 || nc.z > 1.0){ - //vColor = vec3(0.0, 0.0, 0.2); - }else{ - //vColor = vec3(1.0, 1.0, 1.0) * visibility + vec3(1.0, 1.0, 1.0) * vec3(0.5, 0.0, 0.0) * (1.0 - visibility); - vColor = vColor * visibility + vColor * uShadowColor * (1.0 - visibility); - } - - - } - - #endif -} -`; - - Shaders["pointcloud.fs"] = ` -#if defined paraboloid_point_shape - #extension GL_EXT_frag_depth : enable -#endif - -precision highp float; -precision highp int; - -uniform mat4 viewMatrix; -uniform mat4 uViewInv; -uniform mat4 uProjInv; -uniform vec3 cameraPosition; - - -uniform mat4 projectionMatrix; -uniform float uOpacity; - -uniform float blendHardness; -uniform float blendDepthSupplement; -uniform float fov; -uniform float uSpacing; -uniform float near; -uniform float far; -uniform float uPCIndex; -uniform float uScreenWidth; -uniform float uScreenHeight; - -varying vec3 vColor; -varying float vLogDepth; -varying vec3 vViewPosition; -varying float vRadius; -varying float vPointSize; -varying vec3 vPosition; - - -float specularStrength = 1.0; - -void main() { - - vec3 color = vColor; - float depth = gl_FragCoord.z; - - #if defined(circle_point_shape) || defined(paraboloid_point_shape) - float u = 2.0 * gl_PointCoord.x - 1.0; - float v = 2.0 * gl_PointCoord.y - 1.0; - #endif - - #if defined(circle_point_shape) - float cc = u*u + v*v; - if(cc > 1.0){ - discard; - } - #endif - - #if defined color_type_indices - gl_FragColor = vec4(color, uPCIndex / 255.0); - #else - gl_FragColor = vec4(color, uOpacity); - #endif - - #if defined paraboloid_point_shape - float wi = 0.0 - ( u*u + v*v); - vec4 pos = vec4(vViewPosition, 1.0); - pos.z += wi * vRadius; - float linearDepth = -pos.z; - pos = projectionMatrix * pos; - pos = pos / pos.w; - float expDepth = pos.z; - depth = (pos.z + 1.0) / 2.0; - gl_FragDepthEXT = depth; - - #if defined(color_type_depth) - color.r = linearDepth; - color.g = expDepth; - #endif - - #if defined(use_edl) - gl_FragColor.a = log2(linearDepth); - #endif - - #else - #if defined(use_edl) - gl_FragColor.a = vLogDepth; - #endif - #endif - - #if defined(weighted_splats) - float distance = 2.0 * length(gl_PointCoord.xy - 0.5); - float weight = max(0.0, 1.0 - distance); - weight = pow(weight, 1.5); - - gl_FragColor.a = weight; - gl_FragColor.xyz = gl_FragColor.xyz * weight; - #endif - - //gl_FragColor = vec4(0.0, 0.7, 0.0, 1.0); - -} - - -`; - - Shaders["pointcloud_sm.vs"] = ` -precision mediump float; -precision mediump int; - -attribute vec3 position; -attribute vec3 color; - -uniform mat4 modelMatrix; -uniform mat4 modelViewMatrix; -uniform mat4 projectionMatrix; -uniform mat4 viewMatrix; - -uniform float uScreenWidth; -uniform float uScreenHeight; -uniform float near; -uniform float far; - -uniform float uSpacing; -uniform float uOctreeSize; -uniform float uLevel; -uniform float uVNStart; - -uniform sampler2D visibleNodes; - -varying float vLinearDepth; -varying vec3 vColor; - -#define PI 3.141592653589793 - - - -// --------------------- -// OCTREE -// --------------------- - -#if defined(adaptive_point_size) -/** - * number of 1-bits up to inclusive index position - * number is treated as if it were an integer in the range 0-255 - * - */ -float numberOfOnes(float number, float index){ - float tmp = mod(number, pow(2.0, index + 1.0)); - float numOnes = 0.0; - for(float i = 0.0; i < 8.0; i++){ - if(mod(tmp, 2.0) != 0.0){ - numOnes++; - } - tmp = floor(tmp / 2.0); - } - return numOnes; -} - - -/** - * checks whether the bit at index is 1 - * number is treated as if it were an integer in the range 0-255 - * - */ -bool isBitSet(float number, float index){ - return mod(floor(number / pow(2.0, index)), 2.0) != 0.0; -} - - -/** - * find the LOD at the point position - */ -float getLOD(){ - - vec3 offset = vec3(0.0, 0.0, 0.0); - float iOffset = uVNStart; - float depth = uLevel; - for(float i = 0.0; i <= 30.0; i++){ - float nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0); - - vec3 index3d = (position-offset) / nodeSizeAtLevel; - index3d = floor(index3d + 0.5); - float index = 4.0 * index3d.x + 2.0 * index3d.y + index3d.z; - - vec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0)); - float mask = value.r * 255.0; - if(isBitSet(mask, index)){ - // there are more visible child nodes at this position - iOffset = iOffset + value.g * 255.0 * 256.0 + value.b * 255.0 + numberOfOnes(mask, index - 1.0); - depth++; - }else{ - // no more visible child nodes at this position - return depth; - } - - offset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d; - } - - return depth; -} - -#endif - -float getPointSize(){ - float pointSize = 1.0; - - float slope = tan(fov / 2.0); - float projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z); - - float r = uOctreeSpacing * 1.5; - vRadius = r; - #if defined fixed_point_size - pointSize = size; - #elif defined attenuated_point_size - if(uUseOrthographicCamera){ - pointSize = size; - }else{ - pointSize = pointSize * projFactor; - } - #elif defined adaptive_point_size - if(uUseOrthographicCamera) { - float worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation(); - pointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth; - } else { - float worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation(); - pointSize = worldSpaceSize * projFactor; - } - #endif - - pointSize = max(minSize, pointSize); - pointSize = min(maxSize, pointSize); - - vRadius = pointSize / projFactor; - - return pointSize; -} - - -void main() { - - vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); - vLinearDepth = gl_Position.w; - - float pointSize = getPointSize(); - gl_PointSize = pointSize; - -} -`; - - Shaders["pointcloud_sm.fs"] = ` -precision mediump float; -precision mediump int; - -varying vec3 vColor; -varying float vLinearDepth; - -void main() { - - //gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); - //gl_FragColor = vec4(vColor, 1.0); - //gl_FragColor = vec4(vLinearDepth, pow(vLinearDepth, 2.0), 0.0, 1.0); - gl_FragColor = vec4(vLinearDepth, vLinearDepth / 30.0, vLinearDepth / 30.0, 1.0); - -} - - -`; - - Shaders["normalize.vs"] = ` -precision mediump float; -precision mediump int; - -attribute vec3 position; -attribute vec2 uv; - -uniform mat4 projectionMatrix; -uniform mat4 modelViewMatrix; - -varying vec2 vUv; - -void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0); -}`; - - Shaders["normalize.fs"] = ` -#extension GL_EXT_frag_depth : enable - -precision mediump float; -precision mediump int; - -uniform sampler2D uWeightMap; -uniform sampler2D uDepthMap; - -varying vec2 vUv; - -void main() { - float depth = texture2D(uDepthMap, vUv).r; - - if(depth >= 1.0){ - discard; - } - - gl_FragColor = vec4(depth, 1.0, 0.0, 1.0); - - vec4 color = texture2D(uWeightMap, vUv); - color = color / color.w; - - gl_FragColor = vec4(color.xyz, 1.0); - - gl_FragDepthEXT = depth; - - -}`; - - Shaders["normalize_and_edl.fs"] = ` -#extension GL_EXT_frag_depth : enable - -// -// adapted from the EDL shader code from Christian Boucheny in cloud compare: -// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL -// - -precision mediump float; -precision mediump int; - -uniform sampler2D uWeightMap; -uniform sampler2D uEDLMap; -uniform sampler2D uDepthMap; - -uniform float screenWidth; -uniform float screenHeight; -uniform vec2 neighbours[NEIGHBOUR_COUNT]; -uniform float edlStrength; -uniform float radius; - -varying vec2 vUv; - -float response(float depth){ - vec2 uvRadius = radius / vec2(screenWidth, screenHeight); - - float sum = 0.0; - - for(int i = 0; i < NEIGHBOUR_COUNT; i++){ - vec2 uvNeighbor = vUv + uvRadius * neighbours[i]; - - float neighbourDepth = texture2D(uEDLMap, uvNeighbor).a; - - if(neighbourDepth != 0.0){ - if(depth == 0.0){ - sum += 100.0; - }else{ - sum += max(0.0, depth - neighbourDepth); - } - } - } - - return sum / float(NEIGHBOUR_COUNT); -} - -void main() { - - float edlDepth = texture2D(uEDLMap, vUv).a; - float res = response(edlDepth); - float shade = exp(-res * 300.0 * edlStrength); - - float depth = texture2D(uDepthMap, vUv).r; - if(depth >= 1.0 && res == 0.0){ - discard; - } - - vec4 color = texture2D(uWeightMap, vUv); - color = color / color.w; - color = color * shade; - - gl_FragColor = vec4(color.xyz, 1.0); - - gl_FragDepthEXT = depth; -}`; - - Shaders["edl.vs"] = ` -precision mediump float; -precision mediump int; - -attribute vec3 position; -attribute vec2 uv; - -uniform mat4 projectionMatrix; -uniform mat4 modelViewMatrix; - -varying vec2 vUv; - -void main() { - vUv = uv; - - vec4 mvPosition = modelViewMatrix * vec4(position,1.0); - - gl_Position = projectionMatrix * mvPosition; -}`; - - Shaders["edl.fs"] = ` -#extension GL_EXT_frag_depth : enable - -// -// adapted from the EDL shader code from Christian Boucheny in cloud compare: -// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL -// - -precision mediump float; -precision mediump int; - -uniform float screenWidth; -uniform float screenHeight; -uniform vec2 neighbours[NEIGHBOUR_COUNT]; -uniform float edlStrength; -uniform float radius; -uniform float opacity; - -uniform float uNear; -uniform float uFar; - -uniform mat4 uProj; - -uniform sampler2D uEDLColor; -uniform sampler2D uEDLDepth; - -varying vec2 vUv; - -float response(float depth){ - vec2 uvRadius = radius / vec2(screenWidth, screenHeight); - - float sum = 0.0; - - for(int i = 0; i < NEIGHBOUR_COUNT; i++){ - vec2 uvNeighbor = vUv + uvRadius * neighbours[i]; - - float neighbourDepth = texture2D(uEDLColor, uvNeighbor).a; - neighbourDepth = (neighbourDepth == 1.0) ? 0.0 : neighbourDepth; - - if(neighbourDepth != 0.0){ - if(depth == 0.0){ - sum += 100.0; - }else{ - sum += max(0.0, depth - neighbourDepth); - } - } - } - - return sum / float(NEIGHBOUR_COUNT); -} - -void main(){ - vec4 cEDL = texture2D(uEDLColor, vUv); - - float depth = cEDL.a; - depth = (depth == 1.0) ? 0.0 : depth; - float res = response(depth); - float shade = exp(-res * 300.0 * edlStrength); - - gl_FragColor = vec4(cEDL.rgb * shade, opacity); - - { // write regular hyperbolic depth values to depth buffer - float dl = pow(2.0, depth); - - vec4 dp = uProj * vec4(0.0, 0.0, -dl, 1.0); - float pz = dp.z / dp.w; - float fragDepth = (pz + 1.0) / 2.0; - - gl_FragDepthEXT = fragDepth; - } - - if(depth == 0.0){ - discard; - } - -} -`; - - Shaders["blur.vs"] = ` -varying vec2 vUv; - -void main() { - vUv = uv; - - gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0); -}`; - - Shaders["blur.fs"] = ` -uniform mat4 projectionMatrix; - -uniform float screenWidth; -uniform float screenHeight; -uniform float near; -uniform float far; - -uniform sampler2D map; - -varying vec2 vUv; - -void main() { - - float dx = 1.0 / screenWidth; - float dy = 1.0 / screenHeight; - - vec3 color = vec3(0.0, 0.0, 0.0); - color += texture2D(map, vUv + vec2(-dx, -dy)).rgb; - color += texture2D(map, vUv + vec2( 0, -dy)).rgb; - color += texture2D(map, vUv + vec2(+dx, -dy)).rgb; - color += texture2D(map, vUv + vec2(-dx, 0)).rgb; - color += texture2D(map, vUv + vec2( 0, 0)).rgb; - color += texture2D(map, vUv + vec2(+dx, 0)).rgb; - color += texture2D(map, vUv + vec2(-dx, dy)).rgb; - color += texture2D(map, vUv + vec2( 0, dy)).rgb; - color += texture2D(map, vUv + vec2(+dx, dy)).rgb; - - color = color / 9.0; - - gl_FragColor = vec4(color, 1.0); -}`; - - const ClassificationScheme = { - - DEFAULT: { - 0: { visible: true, name: 'never classified' , color: [0.5, 0.5, 0.5, 1.0] }, - 1: { visible: true, name: 'unclassified' , color: [0.5, 0.5, 0.5, 1.0] }, - 2: { visible: true, name: 'ground' , color: [0.63, 0.32, 0.18, 1.0] }, - 3: { visible: true, name: 'low vegetation' , color: [0.0, 1.0, 0.0, 1.0] }, - 4: { visible: true, name: 'medium vegetation' , color: [0.0, 0.8, 0.0, 1.0] }, - 5: { visible: true, name: 'high vegetation' , color: [0.0, 0.6, 0.0, 1.0] }, - 6: { visible: true, name: 'building' , color: [1.0, 0.66, 0.0, 1.0] }, - 7: { visible: true, name: 'low point(noise)' , color: [1.0, 0.0, 1.0, 1.0] }, - 8: { visible: true, name: 'key-point' , color: [1.0, 0.0, 0.0, 1.0] }, - 9: { visible: true, name: 'water' , color: [0.0, 0.0, 1.0, 1.0] }, - 12: { visible: true, name: 'overlap' , color: [1.0, 1.0, 0.0, 1.0] }, - DEFAULT: { visible: true, name: 'default' , color: [0.3, 0.6, 0.6, 0.5] }, - } - }; - - Object.defineProperty(ClassificationScheme, 'RANDOM', { - get: function() { - - let scheme = {}; - - for(let i = 0; i <= 255; i++){ - scheme[i] = new THREE.Vector4(Math.random(), Math.random(), Math.random()); - } - - scheme["DEFAULT"] = new THREE.Vector4(Math.random(), Math.random(), Math.random()); - - return scheme; - } - }); - - // - // how to calculate the radius of a projected sphere in screen space - // http://stackoverflow.com/questions/21648630/radius-of-projected-sphere-in-screen-space - // http://stackoverflow.com/questions/3717226/radius-of-projected-sphere - // - - - class PointCloudMaterial extends THREE.RawShaderMaterial { - constructor (parameters = {}) { - super(); - - this.visibleNodesTexture = Utils.generateDataTexture(2048, 1, new THREE.Color(0xffffff)); - this.visibleNodesTexture.minFilter = THREE.NearestFilter; - this.visibleNodesTexture.magFilter = THREE.NearestFilter; - - let getValid = (a, b) => { - if(a !== undefined){ - return a; - }else { - return b; - } - }; - - let pointSize = getValid(parameters.size, 1.0); - let minSize = getValid(parameters.minSize, 2.0); - let maxSize = getValid(parameters.maxSize, 50.0); - let treeType = getValid(parameters.treeType, TreeType.OCTREE); - - this._pointSizeType = PointSizeType.FIXED; - this._shape = PointShape.SQUARE; - this._useClipBox = false; - this.clipBoxes = []; - this.clipPolygons = []; - this._weighted = false; - this._gradient = Gradients.SPECTRAL; - this.gradientTexture = PointCloudMaterial.generateGradientTexture(this._gradient); - this._matcap = "matcap.jpg"; - this.matcapTexture = Potree.PointCloudMaterial.generateMatcapTexture(this._matcap); - this.lights = false; - this.fog = false; - this._treeType = treeType; - this._useEDL = false; - this.defines = new Map(); - - this.ranges = new Map(); - - this._activeAttributeName = null; - - this._defaultIntensityRangeChanged = false; - this._defaultElevationRangeChanged = false; - - { - const [width, height] = [256, 1]; - let data = new Uint8Array(width * 4); - let texture = new THREE.DataTexture(data, width, height, THREE.RGBAFormat); - texture.magFilter = THREE.NearestFilter; - texture.needsUpdate = true; - - this.classificationTexture = texture; - } - - this.attributes = { - position: { type: 'fv', value: [] }, - color: { type: 'fv', value: [] }, - normal: { type: 'fv', value: [] }, - intensity: { type: 'f', value: [] }, - classification: { type: 'f', value: [] }, - returnNumber: { type: 'f', value: [] }, - numberOfReturns: { type: 'f', value: [] }, - pointSourceID: { type: 'f', value: [] }, - indices: { type: 'fv', value: [] } - }; - - this.uniforms = { - level: { type: "f", value: 0.0 }, - vnStart: { type: "f", value: 0.0 }, - spacing: { type: "f", value: 1.0 }, - blendHardness: { type: "f", value: 2.0 }, - blendDepthSupplement: { type: "f", value: 0.0 }, - fov: { type: "f", value: 1.0 }, - screenWidth: { type: "f", value: 1.0 }, - screenHeight: { type: "f", value: 1.0 }, - near: { type: "f", value: 0.1 }, - far: { type: "f", value: 1.0 }, - uColor: { type: "c", value: new THREE.Color( 0xffffff ) }, - uOpacity: { type: "f", value: 1.0 }, - size: { type: "f", value: pointSize }, - minSize: { type: "f", value: minSize }, - maxSize: { type: "f", value: maxSize }, - octreeSize: { type: "f", value: 0 }, - bbSize: { type: "fv", value: [0, 0, 0] }, - elevationRange: { type: "2fv", value: [0, 0] }, - - clipBoxCount: { type: "f", value: 0 }, - //clipSphereCount: { type: "f", value: 0 }, - clipPolygonCount: { type: "i", value: 0 }, - clipBoxes: { type: "Matrix4fv", value: [] }, - //clipSpheres: { type: "Matrix4fv", value: [] }, - clipPolygons: { type: "3fv", value: [] }, - clipPolygonVCount: { type: "iv", value: [] }, - clipPolygonVP: { type: "Matrix4fv", value: [] }, - - visibleNodes: { type: "t", value: this.visibleNodesTexture }, - pcIndex: { type: "f", value: 0 }, - gradient: { type: "t", value: this.gradientTexture }, - classificationLUT: { type: "t", value: this.classificationTexture }, - uHQDepthMap: { type: "t", value: null }, - toModel: { type: "Matrix4f", value: [] }, - diffuse: { type: "fv", value: [1, 1, 1] }, - transition: { type: "f", value: 0.5 }, - - intensityRange: { type: "fv", value: [Infinity, -Infinity] }, - - intensity_gbc: { type: "fv", value: [1, 0, 0]}, - uRGB_gbc: { type: "fv", value: [1, 0, 0]}, - // intensityGamma: { type: "f", value: 1 }, - // intensityContrast: { type: "f", value: 0 }, - // intensityBrightness:{ type: "f", value: 0 }, - // rgbGamma: { type: "f", value: 1 }, - // rgbContrast: { type: "f", value: 0 }, - // rgbBrightness: { type: "f", value: 0 }, - wRGB: { type: "f", value: 1 }, - wIntensity: { type: "f", value: 0 }, - wElevation: { type: "f", value: 0 }, - wClassification: { type: "f", value: 0 }, - wReturnNumber: { type: "f", value: 0 }, - wSourceID: { type: "f", value: 0 }, - useOrthographicCamera: { type: "b", value: false }, - elevationGradientRepat: { type: "i", value: ElevationGradientRepeat.CLAMP }, - clipTask: { type: "i", value: 1 }, - clipMethod: { type: "i", value: 1 }, - uShadowColor: { type: "3fv", value: [0, 0, 0] }, - - uExtraScale: { type: "f", value: 1}, - uExtraOffset: { type: "f", value: 0}, - uExtraRange: { type: "2fv", value: [0, 1] }, - uExtraGammaBrightContr: { type: "3fv", value: [1, 0, 0] }, - - uFilterReturnNumberRange: { type: "fv", value: [0, 7]}, - uFilterNumberOfReturnsRange: { type: "fv", value: [0, 7]}, - uFilterGPSTimeClipRange: { type: "fv", value: [0, 7]}, - uFilterPointSourceIDClipRange: { type: "fv", value: [0, 65535]}, - matcapTextureUniform: { type: "t", value: this.matcapTexture }, - backfaceCulling: { type: "b", value: false }, - }; - - this.classification = ClassificationScheme.DEFAULT; - - this.defaultAttributeValues.normal = [0, 0, 0]; - this.defaultAttributeValues.classification = [0, 0, 0]; - this.defaultAttributeValues.indices = [0, 0, 0, 0]; - - this.vertexShader = Shaders['pointcloud.vs']; - this.fragmentShader = Shaders['pointcloud.fs']; - - this.vertexColors = THREE.VertexColors; - - this.updateShaderSource(); - } - - setDefine(key, value){ - if(value !== undefined && value !== null){ - if(this.defines.get(key) !== value){ - this.defines.set(key, value); - this.updateShaderSource(); - } - }else { - this.removeDefine(key); - } - } - - removeDefine(key){ - this.defines.delete(key); - } - - updateShaderSource () { - - let vs = Shaders['pointcloud.vs']; - let fs = Shaders['pointcloud.fs']; - let definesString = this.getDefines(); - - let vsVersionIndex = vs.indexOf("#version "); - let fsVersionIndex = fs.indexOf("#version "); - - if(vsVersionIndex >= 0){ - vs = vs.replace(/(#version .*)/, `$1\n${definesString}`); - }else { - vs = `${definesString}\n${vs}`; - } - - if(fsVersionIndex >= 0){ - fs = fs.replace(/(#version .*)/, `$1\n${definesString}`); - }else { - fs = `${definesString}\n${fs}`; - } - - this.vertexShader = vs; - this.fragmentShader = fs; - - if (this.opacity === 1.0) { - this.blending = THREE.NoBlending; - this.transparent = false; - this.depthTest = true; - this.depthWrite = true; - this.depthFunc = THREE.LessEqualDepth; - } else if (this.opacity < 1.0 && !this.useEDL) { - this.blending = THREE.AdditiveBlending; - this.transparent = true; - this.depthTest = false; - this.depthWrite = true; - this.depthFunc = THREE.AlwaysDepth; - } - - if (this.weighted) { - this.blending = THREE.AdditiveBlending; - this.transparent = true; - this.depthTest = true; - this.depthWrite = false; - } - - this.needsUpdate = true; - } - - getDefines () { - let defines = []; - - if (this.pointSizeType === PointSizeType.FIXED) { - defines.push('#define fixed_point_size'); - } else if (this.pointSizeType === PointSizeType.ATTENUATED) { - defines.push('#define attenuated_point_size'); - } else if (this.pointSizeType === PointSizeType.ADAPTIVE) { - defines.push('#define adaptive_point_size'); - } - - if (this.shape === PointShape.SQUARE) { - defines.push('#define square_point_shape'); - } else if (this.shape === PointShape.CIRCLE) { - defines.push('#define circle_point_shape'); - } else if (this.shape === PointShape.PARABOLOID) { - defines.push('#define paraboloid_point_shape'); - } - - if (this._useEDL) { - defines.push('#define use_edl'); - } - - if(this.activeAttributeName){ - let attributeName = this.activeAttributeName.replace(/[^a-zA-Z0-9]/g, '_'); - - defines.push(`#define color_type_${attributeName}`); - } - - if(this._treeType === TreeType.OCTREE){ - defines.push('#define tree_type_octree'); - }else if(this._treeType === TreeType.KDTREE){ - defines.push('#define tree_type_kdtree'); - } - - if (this.weighted) { - defines.push('#define weighted_splats'); - } - - for(let [key, value] of this.defines){ - defines.push(value); - } - - return defines.join("\n"); - } - - setClipBoxes (clipBoxes) { - if (!clipBoxes) { - return; - } - - let doUpdate = (this.clipBoxes.length !== clipBoxes.length) && (clipBoxes.length === 0 || this.clipBoxes.length === 0); - - this.uniforms.clipBoxCount.value = this.clipBoxes.length; - this.clipBoxes = clipBoxes; - - if (doUpdate) { - this.updateShaderSource(); - } - - this.uniforms.clipBoxes.value = new Float32Array(this.clipBoxes.length * 16); - - for (let i = 0; i < this.clipBoxes.length; i++) { - let box = clipBoxes[i]; - - this.uniforms.clipBoxes.value.set(box.inverse.elements, 16 * i); - } - - for (let i = 0; i < this.uniforms.clipBoxes.value.length; i++) { - if (Number.isNaN(this.uniforms.clipBoxes.value[i])) { - this.uniforms.clipBoxes.value[i] = Infinity; - } - } - } - - setClipPolygons(clipPolygons, maxPolygonVertices) { - if(!clipPolygons){ - return; - } - - this.clipPolygons = clipPolygons; - - let doUpdate = (this.clipPolygons.length !== clipPolygons.length); - - if(doUpdate){ - this.updateShaderSource(); - } - } - - get gradient(){ - return this._gradient; - } - - set gradient (value) { - if (this._gradient !== value) { - this._gradient = value; - this.gradientTexture = PointCloudMaterial.generateGradientTexture(this._gradient); - this.uniforms.gradient.value = this.gradientTexture; - } - } - - get matcap(){ - return this._matcap; - } - - set matcap (value) { - if (this._matcap !== value) { - this._matcap = value; - this.matcapTexture = Potree.PointCloudMaterial.generateMatcapTexture(this._matcap); - this.uniforms.matcapTextureUniform.value = this.matcapTexture; - } - } - get useOrthographicCamera() { - return this.uniforms.useOrthographicCamera.value; - } - - set useOrthographicCamera(value) { - if(this.uniforms.useOrthographicCamera.value !== value){ - this.uniforms.useOrthographicCamera.value = value; - } - } - get backfaceCulling() { - return this.uniforms.backfaceCulling.value; - } - - set backfaceCulling(value) { - if(this.uniforms.backfaceCulling.value !== value){ - this.uniforms.backfaceCulling.value = value; - this.dispatchEvent({type: 'backface_changed', target: this}); - } - } - - recomputeClassification () { - const classification = this.classification; - const data = this.classificationTexture.image.data; - - let width = 256; - const black = [1, 1, 1, 1]; - - let valuesChanged = false; - - for (let i = 0; i < width; i++) { - - let color; - let visible = true; - - if (classification[i]) { - color = classification[i].color; - visible = classification[i].visible; - } else if (classification[i % 32]) { - color = classification[i % 32].color; - visible = classification[i % 32].visible; - } else if(classification.DEFAULT) { - color = classification.DEFAULT.color; - visible = classification.DEFAULT.visible; - }else { - color = black; - } - - const r = parseInt(255 * color[0]); - const g = parseInt(255 * color[1]); - const b = parseInt(255 * color[2]); - const a = visible ? parseInt(255 * color[3]) : 0; - - - if(data[4 * i + 0] !== r){ - data[4 * i + 0] = r; - valuesChanged = true; - } - - if(data[4 * i + 1] !== g){ - data[4 * i + 1] = g; - valuesChanged = true; - } - - if(data[4 * i + 2] !== b){ - data[4 * i + 2] = b; - valuesChanged = true; - } - - if(data[4 * i + 3] !== a){ - data[4 * i + 3] = a; - valuesChanged = true; - } - } - - if(valuesChanged){ - this.classificationTexture.needsUpdate = true; - - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get spacing () { - return this.uniforms.spacing.value; - } - - set spacing (value) { - if (this.uniforms.spacing.value !== value) { - this.uniforms.spacing.value = value; - } - } - - get useClipBox () { - return this._useClipBox; - } - - set useClipBox (value) { - if (this._useClipBox !== value) { - this._useClipBox = value; - this.updateShaderSource(); - } - } - - get clipTask(){ - return this.uniforms.clipTask.value; - } - - set clipTask(mode){ - this.uniforms.clipTask.value = mode; - } - - get elevationGradientRepat(){ - return this.uniforms.elevationGradientRepat.value; - } - - set elevationGradientRepat(mode){ - this.uniforms.elevationGradientRepat.value = mode; - } - - get clipMethod(){ - return this.uniforms.clipMethod.value; - } - - set clipMethod(mode){ - this.uniforms.clipMethod.value = mode; - } - - get weighted(){ - return this._weighted; - } - - set weighted (value) { - if (this._weighted !== value) { - this._weighted = value; - this.updateShaderSource(); - } - } - - get fov () { - return this.uniforms.fov.value; - } - - set fov (value) { - if (this.uniforms.fov.value !== value) { - this.uniforms.fov.value = value; - // this.updateShaderSource(); - } - } - - get screenWidth () { - return this.uniforms.screenWidth.value; - } - - set screenWidth (value) { - if (this.uniforms.screenWidth.value !== value) { - this.uniforms.screenWidth.value = value; - // this.updateShaderSource(); - } - } - - get screenHeight () { - return this.uniforms.screenHeight.value; - } - - set screenHeight (value) { - if (this.uniforms.screenHeight.value !== value) { - this.uniforms.screenHeight.value = value; - // this.updateShaderSource(); - } - } - - get near () { - return this.uniforms.near.value; - } - - set near (value) { - if (this.uniforms.near.value !== value) { - this.uniforms.near.value = value; - } - } - - get far () { - return this.uniforms.far.value; - } - - set far (value) { - if (this.uniforms.far.value !== value) { - this.uniforms.far.value = value; - } - } - - get opacity(){ - return this.uniforms.uOpacity.value; - } - - set opacity (value) { - if (this.uniforms && this.uniforms.uOpacity) { - if (this.uniforms.uOpacity.value !== value) { - this.uniforms.uOpacity.value = value; - this.updateShaderSource(); - this.dispatchEvent({ - type: 'opacity_changed', - target: this - }); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - } - - get activeAttributeName(){ - return this._activeAttributeName; - } - - set activeAttributeName(value){ - if (this._activeAttributeName !== value) { - this._activeAttributeName = value; - - this.updateShaderSource(); - this.dispatchEvent({ - type: 'active_attribute_changed', - target: this - }); - - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get pointSizeType () { - return this._pointSizeType; - } - - set pointSizeType (value) { - if (this._pointSizeType !== value) { - this._pointSizeType = value; - this.updateShaderSource(); - this.dispatchEvent({ - type: 'point_size_type_changed', - target: this - }); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get useEDL(){ - return this._useEDL; - } - - set useEDL (value) { - if (this._useEDL !== value) { - this._useEDL = value; - this.updateShaderSource(); - } - } - - get color () { - return this.uniforms.uColor.value; - } - - set color (value) { - if (!this.uniforms.uColor.value.equals(value)) { - this.uniforms.uColor.value.copy(value); - - this.dispatchEvent({ - type: 'color_changed', - target: this - }); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get shape () { - return this._shape; - } - - set shape (value) { - if (this._shape !== value) { - this._shape = value; - this.updateShaderSource(); - this.dispatchEvent({type: 'point_shape_changed', target: this}); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get treeType () { - return this._treeType; - } - - set treeType (value) { - if (this._treeType !== value) { - this._treeType = value; - this.updateShaderSource(); - } - } - - get bbSize () { - return this.uniforms.bbSize.value; - } - - set bbSize (value) { - this.uniforms.bbSize.value = value; - } - - get size () { - return this.uniforms.size.value; - } - - set size (value) { - if (this.uniforms.size.value !== value) { - this.uniforms.size.value = value; - - this.dispatchEvent({ - type: 'point_size_changed', - target: this - }); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get minSize(){ - return this.uniforms.minSize.value; - } - - set minSize(value){ - if (this.uniforms.minSize.value !== value) { - this.uniforms.minSize.value = value; - - this.dispatchEvent({ - type: 'point_size_changed', - target: this - }); - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get elevationRange () { - return this.uniforms.elevationRange.value; - } - - set elevationRange (value) { - let changed = this.uniforms.elevationRange.value[0] !== value[0] - || this.uniforms.elevationRange.value[1] !== value[1]; - - if(changed){ - this.uniforms.elevationRange.value = value; - - this._defaultElevationRangeChanged = true; - - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get heightMin () { - return this.uniforms.elevationRange.value[0]; - } - - set heightMin (value) { - this.elevationRange = [value, this.elevationRange[1]]; - } - - get heightMax () { - return this.uniforms.elevationRange.value[1]; - } - - set heightMax (value) { - this.elevationRange = [this.elevationRange[0], value]; - } - - get transition () { - return this.uniforms.transition.value; - } - - set transition (value) { - this.uniforms.transition.value = value; - } - - get intensityRange () { - return this.uniforms.intensityRange.value; - } - - set intensityRange (value) { - if (!(value instanceof Array && value.length === 2)) { - return; - } - - if (value[0] === this.uniforms.intensityRange.value[0] && - value[1] === this.uniforms.intensityRange.value[1]) { - return; - } - - this.uniforms.intensityRange.value = value; - - this._defaultIntensityRangeChanged = true; - - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - - get intensityGamma () { - return this.uniforms.intensity_gbc.value[0]; - } - - set intensityGamma (value) { - if (this.uniforms.intensity_gbc.value[0] !== value) { - this.uniforms.intensity_gbc.value[0] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get intensityContrast () { - return this.uniforms.intensity_gbc.value[2]; - } - - set intensityContrast (value) { - if (this.uniforms.intensity_gbc.value[2] !== value) { - this.uniforms.intensity_gbc.value[2] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get intensityBrightness () { - return this.uniforms.intensity_gbc.value[1]; - } - - set intensityBrightness (value) { - if (this.uniforms.intensity_gbc.value[1] !== value) { - this.uniforms.intensity_gbc.value[1] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get rgbGamma () { - return this.uniforms.uRGB_gbc.value[0]; - } - - set rgbGamma (value) { - if (this.uniforms.uRGB_gbc.value[0] !== value) { - this.uniforms.uRGB_gbc.value[0] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get rgbContrast () { - return this.uniforms.uRGB_gbc.value[2]; - } - - set rgbContrast (value) { - if (this.uniforms.uRGB_gbc.value[2] !== value) { - this.uniforms.uRGB_gbc.value[2] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get rgbBrightness () { - return this.uniforms.uRGB_gbc.value[1]; - } - - set rgbBrightness (value) { - if (this.uniforms.uRGB_gbc.value[1] !== value) { - this.uniforms.uRGB_gbc.value[1] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - - get extraGamma () { - return this.uniforms.uExtraGammaBrightContr.value[0]; - } - - set extraGamma (value) { - if (this.uniforms.uExtraGammaBrightContr.value[0] !== value) { - this.uniforms.uExtraGammaBrightContr.value[0] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get extraBrightness () { - return this.uniforms.uExtraGammaBrightContr.value[1]; - } - - set extraBrightness (value) { - if (this.uniforms.uExtraGammaBrightContr.value[1] !== value) { - this.uniforms.uExtraGammaBrightContr.value[1] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get extraContrast () { - return this.uniforms.uExtraGammaBrightContr.value[2]; - } - - set extraContrast (value) { - if (this.uniforms.uExtraGammaBrightContr.value[2] !== value) { - this.uniforms.uExtraGammaBrightContr.value[2] = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - getRange(attributeName){ - return this.ranges.get(attributeName); - } - - setRange(attributeName, newRange){ - - let rangeChanged = false; - - let oldRange = this.ranges.get(attributeName); - - if(oldRange != null && newRange != null){ - rangeChanged = oldRange[0] !== newRange[0] || oldRange[1] !== newRange[1]; - }else { - rangeChanged = true; - } - - this.ranges.set(attributeName, newRange); - - if(rangeChanged){ - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get extraRange () { - return this.uniforms.uExtraRange.value; - } - - set extraRange (value) { - if (!(value instanceof Array && value.length === 2)) { - return; - } - - if (value[0] === this.uniforms.uExtraRange.value[0] && - value[1] === this.uniforms.uExtraRange.value[1]) { - return; - } - - this.uniforms.uExtraRange.value = value; - - this._defaultExtraRangeChanged = true; - - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - - get weightRGB () { - return this.uniforms.wRGB.value; - } - - set weightRGB (value) { - if(this.uniforms.wRGB.value !== value){ - this.uniforms.wRGB.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get weightIntensity () { - return this.uniforms.wIntensity.value; - } - - set weightIntensity (value) { - if(this.uniforms.wIntensity.value !== value){ - this.uniforms.wIntensity.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get weightElevation () { - return this.uniforms.wElevation.value; - } - - set weightElevation (value) { - if(this.uniforms.wElevation.value !== value){ - this.uniforms.wElevation.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get weightClassification () { - return this.uniforms.wClassification.value; - } - - set weightClassification (value) { - if(this.uniforms.wClassification.value !== value){ - this.uniforms.wClassification.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get weightReturnNumber () { - return this.uniforms.wReturnNumber.value; - } - - set weightReturnNumber (value) { - if(this.uniforms.wReturnNumber.value !== value){ - this.uniforms.wReturnNumber.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - get weightSourceID () { - return this.uniforms.wSourceID.value; - } - - set weightSourceID (value) { - if(this.uniforms.wSourceID.value !== value){ - this.uniforms.wSourceID.value = value; - this.dispatchEvent({ - type: 'material_property_changed', - target: this - }); - } - } - - static generateGradientTexture (gradient) { - let size = 64; - - // create canvas - let canvas = document.createElement('canvas'); - canvas.width = size; - canvas.height = size; - - // get context - let context = canvas.getContext('2d'); - - // draw gradient - context.rect(0, 0, size, size); - let ctxGradient = context.createLinearGradient(0, 0, size, size); - - for (let i = 0; i < gradient.length; i++) { - let step = gradient[i]; - - ctxGradient.addColorStop(step[0], '#' + step[1].getHexString()); - } - - context.fillStyle = ctxGradient; - context.fill(); - - //let texture = new THREE.Texture(canvas); - let texture = new THREE.CanvasTexture(canvas); - texture.needsUpdate = true; - - texture.minFilter = THREE.LinearFilter; - texture.wrap = THREE.RepeatWrapping; - texture.repeat = 2; - // textureImage = texture.image; - - return texture; - } - - static generateMatcapTexture (matcap) { - var url = new URL(Potree.resourcePath + "/textures/matcap/" + matcap).href; - let texture = new THREE.TextureLoader().load( url ); - texture.magFilter = texture.minFilter = THREE.LinearFilter; - texture.needsUpdate = true; - // PotreeConverter_1.6_2018_07_29_windows_x64\PotreeConverter.exe autzen_xyzrgbXYZ_ascii.xyz -f xyzrgbXYZ -a RGB NORMAL -o autzen_xyzrgbXYZ_ascii_a -p index --overwrite - // Switch matcap texture on the fly : viewer.scene.pointclouds[0].material.matcap = 'matcap1.jpg'; - // For non power of 2, use LinearFilter and dont generate mipmaps, For power of 2, use NearestFilter and generate mipmaps : matcap2.jpg 1 2 8 11 12 13 - return texture; - } - - static generateMatcapTexture (matcap) { - var url = new URL(Potree.resourcePath + "/textures/matcap/" + matcap).href; - let texture = new THREE.TextureLoader().load( url ); - texture.magFilter = texture.minFilter = THREE.LinearFilter; - texture.needsUpdate = true; - // PotreeConverter_1.6_2018_07_29_windows_x64\PotreeConverter.exe autzen_xyzrgbXYZ_ascii.xyz -f xyzrgbXYZ -a RGB NORMAL -o autzen_xyzrgbXYZ_ascii_a -p index --overwrite - // Switch matcap texture on the fly : viewer.scene.pointclouds[0].material.matcap = 'matcap1.jpg'; - // For non power of 2, use LinearFilter and dont generate mipmaps, For power of 2, use NearestFilter and generate mipmaps : matcap2.jpg 1 2 8 11 12 13 - return texture; - } - - disableEvents(){ - if(this._hiddenListeners === undefined){ - this._hiddenListeners = this._listeners; - this._listeners = {}; - } - }; - - enableEvents(){ - this._listeners = this._hiddenListeners; - this._hiddenListeners = undefined; - }; - - // copyFrom(from){ - - // var a = 10; - - // for(let name of Object.keys(this.uniforms)){ - // this.uniforms[name].value = from.uniforms[name].value; - // } - // } - - // copy(from){ - // this.copyFrom(from); - // } - - } - - class PointCloudOctreeNode extends PointCloudTreeNode { - constructor () { - super(); - - //this.children = {}; - this.children = []; - this.sceneNode = null; - this.octree = null; - } - - getNumPoints () { - return this.geometryNode.numPoints; - } - - isLoaded () { - return true; - } - - isTreeNode () { - return true; - } - - isGeometryNode () { - return false; - } - - getLevel () { - return this.geometryNode.level; - } - - getBoundingSphere () { - return this.geometryNode.boundingSphere; - } - - getBoundingBox () { - return this.geometryNode.boundingBox; - } - - getChildren () { - let children = []; - - for (let i = 0; i < 8; i++) { - if (this.children[i]) { - children.push(this.children[i]); - } - } - - return children; - } - - getPointsInBox(boxNode){ - - if(!this.sceneNode){ - return null; - } - - let buffer = this.geometryNode.buffer; - - let posOffset = buffer.offset("position"); - let stride = buffer.stride; - let view = new DataView(buffer.data); - - let worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld); - let objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, this.sceneNode.matrixWorld); - - let inBox = []; - - let pos = new THREE.Vector4(); - for(let i = 0; i < buffer.numElements; i++){ - let x = view.getFloat32(i * stride + posOffset + 0, true); - let y = view.getFloat32(i * stride + posOffset + 4, true); - let z = view.getFloat32(i * stride + posOffset + 8, true); - - pos.set(x, y, z, 1); - pos.applyMatrix4(objectToBox); - - if(-0.5 < pos.x && pos.x < 0.5){ - if(-0.5 < pos.y && pos.y < 0.5){ - if(-0.5 < pos.z && pos.z < 0.5){ - pos.set(x, y, z, 1).applyMatrix4(this.sceneNode.matrixWorld); - inBox.push(new THREE.Vector3(pos.x, pos.y, pos.z)); - } - } - } - } - - return inBox; - } - - get name () { - return this.geometryNode.name; - } - }; - - class PointCloudOctree extends PointCloudTree { - constructor (geometry, material) { - super(); - - this.pointBudget = Infinity; - this.pcoGeometry = geometry; - this.boundingBox = this.pcoGeometry.boundingBox; - this.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere()); - this.material = material || new PointCloudMaterial(); - this.visiblePointsTarget = 2 * 1000 * 1000; - this.minimumNodePixelSize = 150; - this.level = 0; - this.position.copy(geometry.offset); - this.updateMatrix(); - - { - let attributeName = "rgba"; - if(this.pcoGeometry.pointAttributes.attributes.length > 1){ - attributeName = this.pcoGeometry.pointAttributes.attributes[1].name; - } - this.material.activeAttributeName = attributeName; - } - - this.showBoundingBox = false; - this.boundingBoxNodes = []; - this.loadQueue = []; - this.visibleBounds = new THREE.Box3(); - this.visibleNodes = []; - this.visibleGeometry = []; - this.generateDEM = false; - this.profileRequests = []; - this.name = ''; - this._visible = true; - - { - let box = [this.pcoGeometry.tightBoundingBox, this.getBoundingBoxWorld()] - .find(v => v !== undefined); - - this.updateMatrixWorld(true); - box = Utils.computeTransformedBoundingBox(box, this.matrixWorld); - - let bMin = box.min.z; - let bMax = box.max.z; - this.material.heightMin = bMin; - this.material.heightMax = bMax; - } - - // TODO read projection from file instead - this.projection = geometry.projection; - this.fallbackProjection = geometry.fallbackProjection; - - this.root = this.pcoGeometry.root; - } - - setName (name) { - if (this.name !== name) { - this.name = name; - this.dispatchEvent({type: 'name_changed', name: name, pointcloud: this}); - } - } - - getName () { - return this.name; - } - - getAttribute(name){ - - const attribute = this.pcoGeometry.pointAttributes.attributes.find(a => a.name === name); - - if(attribute){ - return attribute; - }else { - return null; - } - } - - getAttributes(){ - return this.pcoGeometry.pointAttributes; - } - - toTreeNode (geometryNode, parent) { - let node = new PointCloudOctreeNode(); - - // if(geometryNode.name === "r40206"){ - // console.log("creating node for r40206"); - // } - let sceneNode = new THREE.Points(geometryNode.geometry, this.material); - sceneNode.name = geometryNode.name; - sceneNode.position.copy(geometryNode.boundingBox.min); - sceneNode.frustumCulled = false; - sceneNode.onBeforeRender = (_this, scene, camera, geometry, material, group) => { - if (material.program) { - _this.getContext().useProgram(material.program.program); - - if (material.program.getUniforms().map.level) { - let level = geometryNode.getLevel(); - material.uniforms.level.value = level; - material.program.getUniforms().map.level.setValue(_this.getContext(), level); - } - - if (this.visibleNodeTextureOffsets && material.program.getUniforms().map.vnStart) { - let vnStart = this.visibleNodeTextureOffsets.get(node); - material.uniforms.vnStart.value = vnStart; - material.program.getUniforms().map.vnStart.setValue(_this.getContext(), vnStart); - } - - if (material.program.getUniforms().map.pcIndex) { - let i = node.pcIndex ? node.pcIndex : this.visibleNodes.indexOf(node); - material.uniforms.pcIndex.value = i; - material.program.getUniforms().map.pcIndex.setValue(_this.getContext(), i); - } - } - }; - - // { // DEBUG - // let sg = new THREE.SphereGeometry(1, 16, 16); - // let sm = new THREE.MeshNormalMaterial(); - // let s = new THREE.Mesh(sg, sm); - // s.scale.set(5, 5, 5); - // s.position.copy(geometryNode.mean) - // .add(this.position) - // .add(geometryNode.boundingBox.min); - // - // viewer.scene.scene.add(s); - // } - - node.geometryNode = geometryNode; - node.sceneNode = sceneNode; - node.pointcloud = this; - node.children = []; - //for (let key in geometryNode.children) { - // node.children[key] = geometryNode.children[key]; - //} - for(let i = 0; i < 8; i++){ - node.children[i] = geometryNode.children[i]; - } - - if (!parent) { - this.root = node; - this.add(sceneNode); - } else { - let childIndex = parseInt(geometryNode.name[geometryNode.name.length - 1]); - parent.sceneNode.add(sceneNode); - parent.children[childIndex] = node; - } - - let disposeListener = function () { - let childIndex = parseInt(geometryNode.name[geometryNode.name.length - 1]); - parent.sceneNode.remove(node.sceneNode); - parent.children[childIndex] = geometryNode; - }; - geometryNode.oneTimeDisposeHandlers.push(disposeListener); - - return node; - } - - updateVisibleBounds () { - let leafNodes = []; - for (let i = 0; i < this.visibleNodes.length; i++) { - let node = this.visibleNodes[i]; - let isLeaf = true; - - for (let j = 0; j < node.children.length; j++) { - let child = node.children[j]; - if (child instanceof PointCloudOctreeNode) { - isLeaf = isLeaf && !child.sceneNode.visible; - } else if (child instanceof PointCloudOctreeGeometryNode) { - isLeaf = true; - } - } - - if (isLeaf) { - leafNodes.push(node); - } - } - - this.visibleBounds.min = new THREE.Vector3(Infinity, Infinity, Infinity); - this.visibleBounds.max = new THREE.Vector3(-Infinity, -Infinity, -Infinity); - for (let i = 0; i < leafNodes.length; i++) { - let node = leafNodes[i]; - - this.visibleBounds.expandByPoint(node.getBoundingBox().min); - this.visibleBounds.expandByPoint(node.getBoundingBox().max); - } - } - - updateMaterial (material, visibleNodes, camera, renderer) { - material.fov = camera.fov * (Math.PI / 180); - material.screenWidth = renderer.domElement.clientWidth; - material.screenHeight = renderer.domElement.clientHeight; - material.spacing = this.pcoGeometry.spacing * Math.max(this.scale.x, this.scale.y, this.scale.z); - material.near = camera.near; - material.far = camera.far; - material.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x; - } - - computeVisibilityTextureData(nodes, camera){ - - if(Potree.measureTimings) performance.mark("computeVisibilityTextureData-start"); - - let data = new Uint8Array(nodes.length * 4); - let visibleNodeTextureOffsets = new Map(); - - // copy array - nodes = nodes.slice(); - - // sort by level and index, e.g. r, r0, r3, r4, r01, r07, r30, ... - let sort = function (a, b) { - let na = a.geometryNode.name; - let nb = b.geometryNode.name; - if (na.length !== nb.length) return na.length - nb.length; - if (na < nb) return -1; - if (na > nb) return 1; - return 0; - }; - nodes.sort(sort); - - // code sample taken from three.js src/math/Ray.js - let v1 = new THREE.Vector3(); - let intersectSphereBack = (ray, sphere) => { - v1.subVectors( sphere.center, ray.origin ); - let tca = v1.dot( ray.direction ); - let d2 = v1.dot( v1 ) - tca * tca; - let radius2 = sphere.radius * sphere.radius; - - if(d2 > radius2){ - return null; - } - - let thc = Math.sqrt( radius2 - d2 ); - - // t1 = second intersect point - exit point on back of sphere - let t1 = tca + thc; - - if(t1 < 0 ){ - return null; - } - - return t1; - }; - - let lodRanges = new Map(); - let leafNodeLodRanges = new Map(); - - let bBox = new THREE.Box3(); - let bSphere = new THREE.Sphere(); - let worldDir = new THREE.Vector3(); - let cameraRay = new THREE.Ray(camera.position, camera.getWorldDirection(worldDir)); - - let nodeMap = new Map(); - let offsetsToChild = new Array(nodes.length).fill(Infinity); - - for(let i = 0; i < nodes.length; i++){ - let node = nodes[i]; - - nodeMap.set(node.name, node); - visibleNodeTextureOffsets.set(node, i); - - if(i > 0){ - let index = parseInt(node.name.slice(-1)); - let parentName = node.name.slice(0, -1); - let parent = nodeMap.get(parentName); - let parentOffset = visibleNodeTextureOffsets.get(parent); - - let parentOffsetToChild = (i - parentOffset); - - offsetsToChild[parentOffset] = Math.min(offsetsToChild[parentOffset], parentOffsetToChild); - - data[parentOffset * 4 + 0] = data[parentOffset * 4 + 0] | (1 << index); - data[parentOffset * 4 + 1] = (offsetsToChild[parentOffset] >> 8); - data[parentOffset * 4 + 2] = (offsetsToChild[parentOffset] % 256); - } - - // data[i * 4 + 3] = node.geometryNode.nodeType === 1 ? 1 : 0; - // data[i * 4 + 3] = node.name.length - 1; - - let density = node.geometryNode.density; - - if(typeof density === "number"){ - let lodOffset = Math.log2(density) / 2 - 1.5; - - let offsetUint8 = (lodOffset + 10) * 10; - - data[i * 4 + 3] = offsetUint8; - }else { - data[i * 4 + 3] = 100; - } - - } - - var a = 10; - - if(Potree.measureTimings){ - performance.mark("computeVisibilityTextureData-end"); - performance.measure("render.computeVisibilityTextureData", "computeVisibilityTextureData-start", "computeVisibilityTextureData-end"); - } - - return { - data: data, - offsets: visibleNodeTextureOffsets - }; - } - - nodeIntersectsProfile (node, profile) { - let bbWorld = node.boundingBox.clone().applyMatrix4(this.matrixWorld); - let bsWorld = bbWorld.getBoundingSphere(new THREE.Sphere()); - - let intersects = false; - - for (let i = 0; i < profile.points.length - 1; i++) { - - let start = new THREE.Vector3(profile.points[i + 0].x, profile.points[i + 0].y, bsWorld.center.z); - let end = new THREE.Vector3(profile.points[i + 1].x, profile.points[i + 1].y, bsWorld.center.z); - - let closest = new THREE.Line3(start, end).closestPointToPoint(bsWorld.center, true, new THREE.Vector3()); - let distance = closest.distanceTo(bsWorld.center); - - intersects = intersects || (distance < (bsWorld.radius + profile.width)); - } - - //console.log(`${node.name}: ${intersects}`); - - return intersects; - } - - deepestNodeAt(position){ - - const toObjectSpace = new THREE.Matrix4().getInverse(this.matrixWorld); - - const objPos = position.clone().applyMatrix4(toObjectSpace); - - let current = this.root; - while(true){ - - let containingChild = null; - - for(const child of current.children){ - - if(child !== undefined){ - if(child.getBoundingBox().containsPoint(objPos)){ - containingChild = child; - } - } - } - - if(containingChild !== null && containingChild instanceof PointCloudOctreeNode){ - current = containingChild; - }else { - break; - } - } - - const deepest = current; - - return deepest; - } - - nodesOnRay (nodes, ray) { - let nodesOnRay = []; - - let _ray = ray.clone(); - for (let i = 0; i < nodes.length; i++) { - let node = nodes[i]; - // let inverseWorld = new THREE.Matrix4().getInverse(node.matrixWorld); - // let sphere = node.getBoundingSphere().clone().applyMatrix4(node.sceneNode.matrixWorld); - let sphere = node.getBoundingSphere().clone().applyMatrix4(this.matrixWorld); - - if (_ray.intersectsSphere(sphere)) { - nodesOnRay.push(node); - } - } - - return nodesOnRay; - } - - updateMatrixWorld (force) { - if (this.matrixAutoUpdate === true) this.updateMatrix(); - - if (this.matrixWorldNeedsUpdate === true || force === true) { - if (!this.parent) { - this.matrixWorld.copy(this.matrix); - } else { - this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); - } - - this.matrixWorldNeedsUpdate = false; - - force = true; - } - } - - hideDescendants (object) { - let stack = []; - for (let i = 0; i < object.children.length; i++) { - let child = object.children[i]; - if (child.visible) { - stack.push(child); - } - } - - while (stack.length > 0) { - let object = stack.shift(); - - object.visible = false; - - for (let i = 0; i < object.children.length; i++) { - let child = object.children[i]; - if (child.visible) { - stack.push(child); - } - } - } - } - - moveToOrigin () { - this.position.set(0, 0, 0); - this.updateMatrixWorld(true); - let box = this.boundingBox; - let transform = this.matrixWorld; - let tBox = Utils.computeTransformedBoundingBox(box, transform); - this.position.set(0, 0, 0).sub(tBox.getCenter(new THREE.Vector3())); - }; - - moveToGroundPlane () { - this.updateMatrixWorld(true); - let box = this.boundingBox; - let transform = this.matrixWorld; - let tBox = Utils.computeTransformedBoundingBox(box, transform); - this.position.y += -tBox.min.y; - }; - - getBoundingBoxWorld () { - this.updateMatrixWorld(true); - let box = this.boundingBox; - let transform = this.matrixWorld; - let tBox = Utils.computeTransformedBoundingBox(box, transform); - - return tBox; - }; - - /** - * returns points inside the profile points - * - * maxDepth: search points up to the given octree depth - * - * - * The return value is an array with all segments of the profile path - * let segment = { - * start: THREE.Vector3, - * end: THREE.Vector3, - * points: {} - * project: function() - * }; - * - * The project() function inside each segment can be used to transform - * that segments point coordinates to line up along the x-axis. - * - * - */ - getPointsInProfile (profile, maxDepth, callback) { - if (callback) { - let request = new Potree.ProfileRequest(this, profile, maxDepth, callback); - this.profileRequests.push(request); - - return request; - } - - let points = { - segments: [], - boundingBox: new THREE.Box3(), - projectedBoundingBox: new THREE.Box2() - }; - - // evaluate segments - for (let i = 0; i < profile.points.length - 1; i++) { - let start = profile.points[i]; - let end = profile.points[i + 1]; - let ps = this.getProfile(start, end, profile.width, maxDepth); - - let segment = { - start: start, - end: end, - points: ps, - project: null - }; - - points.segments.push(segment); - - points.boundingBox.expandByPoint(ps.boundingBox.min); - points.boundingBox.expandByPoint(ps.boundingBox.max); - } - - // add projection functions to the segments - let mileage = new THREE.Vector3(); - for (let i = 0; i < points.segments.length; i++) { - let segment = points.segments[i]; - let start = segment.start; - let end = segment.end; - - let project = (function (_start, _end, _mileage, _boundingBox) { - let start = _start; - let end = _end; - let mileage = _mileage; - let boundingBox = _boundingBox; - - let xAxis = new THREE.Vector3(1, 0, 0); - let dir = new THREE.Vector3().subVectors(end, start); - dir.y = 0; - dir.normalize(); - let alpha = Math.acos(xAxis.dot(dir)); - if (dir.z > 0) { - alpha = -alpha; - } - - return function (position) { - let toOrigin = new THREE.Matrix4().makeTranslation(-start.x, -boundingBox.min.y, -start.z); - let alignWithX = new THREE.Matrix4().makeRotationY(-alpha); - let applyMileage = new THREE.Matrix4().makeTranslation(mileage.x, 0, 0); - - let pos = position.clone(); - pos.applyMatrix4(toOrigin); - pos.applyMatrix4(alignWithX); - pos.applyMatrix4(applyMileage); - - return pos; - }; - }(start, end, mileage.clone(), points.boundingBox.clone())); - - segment.project = project; - - mileage.x += new THREE.Vector3(start.x, 0, start.z).distanceTo(new THREE.Vector3(end.x, 0, end.z)); - mileage.y += end.y - start.y; - } - - points.projectedBoundingBox.min.x = 0; - points.projectedBoundingBox.min.y = points.boundingBox.min.y; - points.projectedBoundingBox.max.x = mileage.x; - points.projectedBoundingBox.max.y = points.boundingBox.max.y; - - return points; - } - - /** - * returns points inside the given profile bounds. - * - * start: - * end: - * width: - * depth: search points up to the given octree depth - * callback: if specified, points are loaded before searching - * - * - */ - getProfile (start, end, width, depth, callback) { - let request = new Potree.ProfileRequest(start, end, width, depth, callback); - this.profileRequests.push(request); - }; - - getVisibleExtent () { - return this.visibleBounds.applyMatrix4(this.matrixWorld); - }; - - intersectsPoint(position){ - - let rootAvailable = this.pcoGeometry.root && this.pcoGeometry.root.geometry; - - if(!rootAvailable){ - return false; - } - - if(typeof this.signedDistanceField === "undefined"){ - - const resolution = 32; - const field = new Float32Array(resolution ** 3).fill(Infinity); - - const positions = this.pcoGeometry.root.geometry.attributes.position; - const boundingBox = this.boundingBox; - - const n = positions.count; - - for(let i = 0; i < n; i = i + 3){ - const x = positions.array[3 * i + 0]; - const y = positions.array[3 * i + 1]; - const z = positions.array[3 * i + 2]; - - const ix = parseInt(Math.min(resolution * (x / boundingBox.max.x), resolution - 1)); - const iy = parseInt(Math.min(resolution * (y / boundingBox.max.y), resolution - 1)); - const iz = parseInt(Math.min(resolution * (z / boundingBox.max.z), resolution - 1)); - - const index = ix + iy * resolution + iz * resolution * resolution; - - field[index] = 0; - } - - const sdf = { - resolution: resolution, - field: field, - }; - - this.signedDistanceField = sdf; - } - - - { - const sdf = this.signedDistanceField; - const boundingBox = this.boundingBox; - - const toObjectSpace = new THREE.Matrix4().getInverse(this.matrixWorld); - - const objPos = position.clone().applyMatrix4(toObjectSpace); - - const resolution = sdf.resolution; - const ix = parseInt(resolution * (objPos.x / boundingBox.max.x)); - const iy = parseInt(resolution * (objPos.y / boundingBox.max.y)); - const iz = parseInt(resolution * (objPos.z / boundingBox.max.z)); - - if(ix < 0 || iy < 0 || iz < 0){ - return false; - } - if(ix >= resolution || iy >= resolution || iz >= resolution){ - return false; - } - - const index = ix + iy * resolution + iz * resolution * resolution; - - const value = sdf.field[index]; - - if(value === 0){ - return true; - } - - } - - return false; - - } - - /** - * - * - * - * params.pickWindowSize: Look for points inside a pixel window of this size. - * Use odd values: 1, 3, 5, ... - * - * - * TODO: only draw pixels that are actually read with readPixels(). - * - */ - pick(viewer, camera, ray, params = {}){ - - let renderer = viewer.renderer; - let pRenderer = viewer.pRenderer; - - performance.mark("pick-start"); - - let getVal = (a, b) => a !== undefined ? a : b; - - let pickWindowSize = getVal(params.pickWindowSize, 17); - let pickOutsideClipRegion = getVal(params.pickOutsideClipRegion, false); - - pickWindowSize = 65; - - let size = renderer.getSize(new THREE.Vector2()); - - let width = Math.ceil(getVal(params.width, size.width)); - let height = Math.ceil(getVal(params.height, size.height)); - - let pointSizeType = getVal(params.pointSizeType, this.material.pointSizeType); - let pointSize = getVal(params.pointSize, this.material.size); - - let nodes = this.nodesOnRay(this.visibleNodes, ray); - - if (nodes.length === 0) { - return null; - } - - if (!this.pickState) { - let scene = new THREE.Scene(); - - let material = new Potree.PointCloudMaterial(); - material.activeAttributeName = "indices"; - - let renderTarget = new THREE.WebGLRenderTarget( - 1, 1, - { minFilter: THREE.LinearFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat } - ); - - this.pickState = { - renderTarget: renderTarget, - material: material, - scene: scene - }; - }; - - let pickState = this.pickState; - let pickMaterial = pickState.material; - - { // update pick material - pickMaterial.pointSizeType = pointSizeType; - //pickMaterial.shape = this.material.shape; - pickMaterial.shape = Potree.PointShape.PARABOLOID; - - pickMaterial.uniforms.uFilterReturnNumberRange.value = this.material.uniforms.uFilterReturnNumberRange.value; - pickMaterial.uniforms.uFilterNumberOfReturnsRange.value = this.material.uniforms.uFilterNumberOfReturnsRange.value; - pickMaterial.uniforms.uFilterGPSTimeClipRange.value = this.material.uniforms.uFilterGPSTimeClipRange.value; - pickMaterial.uniforms.uFilterPointSourceIDClipRange.value = this.material.uniforms.uFilterPointSourceIDClipRange.value; - - pickMaterial.activeAttributeName = "indices"; - - pickMaterial.size = pointSize; - pickMaterial.uniforms.minSize.value = this.material.uniforms.minSize.value; - pickMaterial.uniforms.maxSize.value = this.material.uniforms.maxSize.value; - pickMaterial.classification = this.material.classification; - pickMaterial.recomputeClassification(); - - if(params.pickClipped){ - pickMaterial.clipBoxes = this.material.clipBoxes; - pickMaterial.uniforms.clipBoxes = this.material.uniforms.clipBoxes; - if(this.material.clipTask === Potree.ClipTask.HIGHLIGHT){ - pickMaterial.clipTask = Potree.ClipTask.NONE; - }else { - pickMaterial.clipTask = this.material.clipTask; - } - pickMaterial.clipMethod = this.material.clipMethod; - }else { - pickMaterial.clipBoxes = []; - } - - this.updateMaterial(pickMaterial, nodes, camera, renderer); - } - - pickState.renderTarget.setSize(width, height); - - let pixelPos = new THREE.Vector2(params.x, params.y); - - let gl = renderer.getContext(); - gl.enable(gl.SCISSOR_TEST); - gl.scissor( - parseInt(pixelPos.x - (pickWindowSize - 1) / 2), - parseInt(pixelPos.y - (pickWindowSize - 1) / 2), - parseInt(pickWindowSize), parseInt(pickWindowSize)); - - - renderer.state.buffers.depth.setTest(pickMaterial.depthTest); - renderer.state.buffers.depth.setMask(pickMaterial.depthWrite); - renderer.state.setBlending(THREE.NoBlending); - - { // RENDER - renderer.setRenderTarget(pickState.renderTarget); - gl.clearColor(0, 0, 0, 0); - renderer.clear(true, true, true); - - let tmp = this.material; - this.material = pickMaterial; - - pRenderer.renderOctree(this, nodes, camera, pickState.renderTarget); - - this.material = tmp; - } - - let clamp = (number, min, max) => Math.min(Math.max(min, number), max); - - let x = parseInt(clamp(pixelPos.x - (pickWindowSize - 1) / 2, 0, width)); - let y = parseInt(clamp(pixelPos.y - (pickWindowSize - 1) / 2, 0, height)); - let w = parseInt(Math.min(x + pickWindowSize, width) - x); - let h = parseInt(Math.min(y + pickWindowSize, height) - y); - - let pixelCount = w * h; - let buffer = new Uint8Array(4 * pixelCount); - - gl.readPixels(x, y, pickWindowSize, pickWindowSize, gl.RGBA, gl.UNSIGNED_BYTE, buffer); - - renderer.setRenderTarget(null); - renderer.state.reset(); - renderer.setScissorTest(false); - gl.disable(gl.SCISSOR_TEST); - - let pixels = buffer; - let ibuffer = new Uint32Array(buffer.buffer); - - // find closest hit inside pixelWindow boundaries - let min = Number.MAX_VALUE; - let hits = []; - for (let u = 0; u < pickWindowSize; u++) { - for (let v = 0; v < pickWindowSize; v++) { - let offset = (u + v * pickWindowSize); - let distance = Math.pow(u - (pickWindowSize - 1) / 2, 2) + Math.pow(v - (pickWindowSize - 1) / 2, 2); - - let pcIndex = pixels[4 * offset + 3]; - pixels[4 * offset + 3] = 0; - let pIndex = ibuffer[offset]; - - if(!(pcIndex === 0 && pIndex === 0) && (pcIndex !== undefined) && (pIndex !== undefined)){ - let hit = { - pIndex: pIndex, - pcIndex: pcIndex, - distanceToCenter: distance - }; - - if(params.all){ - hits.push(hit); - }else { - if(hits.length > 0){ - if(distance < hits[0].distanceToCenter){ - hits[0] = hit; - } - }else { - hits.push(hit); - } - } - - - } - } - } - - //DEBUG: show panel with pick image - // { - // let img = Utils.pixelsArrayToImage(buffer, w, h); - // let screenshot = img.src; - - // if(!this.debugDIV){ - // this.debugDIV = $(` - //
        `); - // $(document.body).append(this.debugDIV); - // } - - // this.debugDIV.empty(); - // this.debugDIV.append($(``)); - // //$(this.debugWindow.document).append($(``)); - // //this.debugWindow.document.write(''); - // } - - - for(let hit of hits){ - let point = {}; - - if (!nodes[hit.pcIndex]) { - return null; - } - - let node = nodes[hit.pcIndex]; - let pc = node.sceneNode; - let geometry = node.geometryNode.geometry; - - for(let attributeName in geometry.attributes){ - let attribute = geometry.attributes[attributeName]; - - if (attributeName === 'position') { - let x = attribute.array[3 * hit.pIndex + 0]; - let y = attribute.array[3 * hit.pIndex + 1]; - let z = attribute.array[3 * hit.pIndex + 2]; - - let position = new THREE.Vector3(x, y, z); - position.applyMatrix4(pc.matrixWorld); - - point[attributeName] = position; - } else if (attributeName === 'indices') { - - } else { - - let values = attribute.array.slice(attribute.itemSize * hit.pIndex, attribute.itemSize * (hit.pIndex + 1)) ; - - if(attribute.potree){ - const {scale, offset} = attribute.potree; - values = values.map(v => v / scale + offset); - } - - point[attributeName] = values; - - //debugger; - //if (values.itemSize === 1) { - // point[attribute.name] = values.array[hit.pIndex]; - //} else { - // let value = []; - // for (let j = 0; j < values.itemSize; j++) { - // value.push(values.array[values.itemSize * hit.pIndex + j]); - // } - // point[attribute.name] = value; - //} - } - - } - - hit.point = point; - } - - performance.mark("pick-end"); - performance.measure("pick", "pick-start", "pick-end"); - - if(params.all){ - return hits.map(hit => hit.point); - }else { - if(hits.length === 0){ - return null; - }else { - return hits[0].point; - //let sorted = hits.sort( (a, b) => a.distanceToCenter - b.distanceToCenter); - - //return sorted[0].point; - } - } - - }; - - * getFittedBoxGen(boxNode){ - let start = performance.now(); - - let shrinkedLocalBounds = new THREE.Box3(); - let worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld); - - for(let node of this.visibleNodes){ - if(!node.sceneNode){ - continue; - } - - let buffer = node.geometryNode.buffer; - - let posOffset = buffer.offset("position"); - let stride = buffer.stride; - let view = new DataView(buffer.data); - - let objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, node.sceneNode.matrixWorld); - - let pos = new THREE.Vector4(); - for(let i = 0; i < buffer.numElements; i++){ - let x = view.getFloat32(i * stride + posOffset + 0, true); - let y = view.getFloat32(i * stride + posOffset + 4, true); - let z = view.getFloat32(i * stride + posOffset + 8, true); - - pos.set(x, y, z, 1); - pos.applyMatrix4(objectToBox); - - if(-0.5 < pos.x && pos.x < 0.5){ - if(-0.5 < pos.y && pos.y < 0.5){ - if(-0.5 < pos.z && pos.z < 0.5){ - shrinkedLocalBounds.expandByPoint(pos); - } - } - } - } - - yield; - } - - let fittedPosition = shrinkedLocalBounds.getCenter(new THREE.Vector3()).applyMatrix4(boxNode.matrixWorld); - - let fitted = new THREE.Object3D(); - fitted.position.copy(fittedPosition); - fitted.scale.copy(boxNode.scale); - fitted.rotation.copy(boxNode.rotation); - - let ds = new THREE.Vector3().subVectors(shrinkedLocalBounds.max, shrinkedLocalBounds.min); - fitted.scale.multiply(ds); - - let duration = performance.now() - start; - console.log("duration: ", duration); - - yield fitted; - } - - getFittedBox(boxNode, maxLevel = Infinity){ - - maxLevel = Infinity; - - let start = performance.now(); - - let shrinkedLocalBounds = new THREE.Box3(); - let worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld); - - for(let node of this.visibleNodes){ - if(!node.sceneNode || node.getLevel() > maxLevel){ - continue; - } - - let buffer = node.geometryNode.buffer; - - let posOffset = buffer.offset("position"); - let stride = buffer.stride; - let view = new DataView(buffer.data); - - let objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, node.sceneNode.matrixWorld); - - let pos = new THREE.Vector4(); - for(let i = 0; i < buffer.numElements; i++){ - let x = view.getFloat32(i * stride + posOffset + 0, true); - let y = view.getFloat32(i * stride + posOffset + 4, true); - let z = view.getFloat32(i * stride + posOffset + 8, true); - - pos.set(x, y, z, 1); - pos.applyMatrix4(objectToBox); - - if(-0.5 < pos.x && pos.x < 0.5){ - if(-0.5 < pos.y && pos.y < 0.5){ - if(-0.5 < pos.z && pos.z < 0.5){ - shrinkedLocalBounds.expandByPoint(pos); - } - } - } - } - } - - let fittedPosition = shrinkedLocalBounds.getCenter(new THREE.Vector3()).applyMatrix4(boxNode.matrixWorld); - - let fitted = new THREE.Object3D(); - fitted.position.copy(fittedPosition); - fitted.scale.copy(boxNode.scale); - fitted.rotation.copy(boxNode.rotation); - - let ds = new THREE.Vector3().subVectors(shrinkedLocalBounds.max, shrinkedLocalBounds.min); - fitted.scale.multiply(ds); - - let duration = performance.now() - start; - console.log("duration: ", duration); - - return fitted; - } - - get progress () { - return this.visibleNodes.length / this.visibleGeometry.length; - } - - find(name){ - let node = null; - for(let char of name){ - if(char === "r"){ - node = this.root; - }else { - node = node.children[char]; - } - } - - return node; - } - - get visible(){ - return this._visible; - } - - set visible(value){ - - if(value !== this._visible){ - this._visible = value; - - this.dispatchEvent({type: 'visibility_changed', pointcloud: this}); - } - - } - - } - - class Points { - - constructor () { - this.boundingBox = new THREE.Box3(); - this.numPoints = 0; - this.data = {}; - } - - add (points) { - let currentSize = this.numPoints; - let additionalSize = points.numPoints; - let newSize = currentSize + additionalSize; - - let thisAttributes = Object.keys(this.data); - let otherAttributes = Object.keys(points.data); - let attributes = new Set([...thisAttributes, ...otherAttributes]); - - for (let attribute of attributes) { - if (thisAttributes.includes(attribute) && otherAttributes.includes(attribute)) { - // attribute in both, merge - let Type = this.data[attribute].constructor; - let merged = new Type(this.data[attribute].length + points.data[attribute].length); - merged.set(this.data[attribute], 0); - merged.set(points.data[attribute], this.data[attribute].length); - this.data[attribute] = merged; - } else if (thisAttributes.includes(attribute) && !otherAttributes.includes(attribute)) { - // attribute only in this; take over this and expand to new size - let elementsPerPoint = this.data[attribute].length / this.numPoints; - let Type = this.data[attribute].constructor; - let expanded = new Type(elementsPerPoint * newSize); - expanded.set(this.data[attribute], 0); - this.data[attribute] = expanded; - } else if (!thisAttributes.includes(attribute) && otherAttributes.includes(attribute)) { - // attribute only in points to be added; take over new points and expand to new size - let elementsPerPoint = points.data[attribute].length / points.numPoints; - let Type = points.data[attribute].constructor; - let expanded = new Type(elementsPerPoint * newSize); - expanded.set(points.data[attribute], elementsPerPoint * currentSize); - this.data[attribute] = expanded; - } - } - - this.numPoints = newSize; - - this.boundingBox.union(points.boundingBox); - } - } - - /** - * - * code adapted from three.js BoxHelper.js - * https://github.com/mrdoob/three.js/blob/dev/src/helpers/BoxHelper.js - * - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / http://github.com/Mugen87 - * @author mschuetz / http://potree.org - */ - - class Box3Helper extends THREE.LineSegments { - constructor (box, color) { - if (color === undefined) color = 0xffff00; - - let indices = new Uint16Array([ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ]); - let positions = new Float32Array([ - box.min.x, box.min.y, box.min.z, - box.max.x, box.min.y, box.min.z, - box.max.x, box.min.y, box.max.z, - box.min.x, box.min.y, box.max.z, - box.min.x, box.max.y, box.min.z, - box.max.x, box.max.y, box.min.z, - box.max.x, box.max.y, box.max.z, - box.min.x, box.max.y, box.max.z - ]); - - let geometry = new THREE.BufferGeometry(); - geometry.setIndex(new THREE.BufferAttribute(indices, 1)); - geometry.addAttribute('position', new THREE.BufferAttribute(positions, 3)); - - let material = new THREE.LineBasicMaterial({ color: color }); - - super(geometry, material); - } - } - - function updatePointClouds(pointclouds, camera, renderer){ - - for (let pointcloud of pointclouds) { - let start = performance.now(); - - for (let profileRequest of pointcloud.profileRequests) { - profileRequest.update(); - - let duration = performance.now() - start; - if(duration > 5){ - break; - } - } - - let duration = performance.now() - start; - } - - let result = updateVisibility(pointclouds, camera, renderer); - - for (let pointcloud of pointclouds) { - pointcloud.updateMaterial(pointcloud.material, pointcloud.visibleNodes, camera, renderer); - pointcloud.updateVisibleBounds(); - } - - exports.lru.freeMemory(); - - return result; - }; - - - - function updateVisibilityStructures(pointclouds, camera, renderer) { - let frustums = []; - let camObjPositions = []; - let priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; }); - - for (let i = 0; i < pointclouds.length; i++) { - let pointcloud = pointclouds[i]; - - if (!pointcloud.initialized()) { - continue; - } - - pointcloud.numVisibleNodes = 0; - pointcloud.numVisiblePoints = 0; - pointcloud.deepestVisibleLevel = 0; - pointcloud.visibleNodes = []; - pointcloud.visibleGeometry = []; - - // frustum in object space - camera.updateMatrixWorld(); - let frustum = new THREE.Frustum(); - let viewI = camera.matrixWorldInverse; - let world = pointcloud.matrixWorld; - - // use close near plane for frustum intersection - let frustumCam = camera.clone(); - frustumCam.near = Math.min(camera.near, 0.1); - frustumCam.updateProjectionMatrix(); - let proj = camera.projectionMatrix; - - let fm = new THREE.Matrix4().multiply(proj).multiply(viewI).multiply(world); - frustum.setFromMatrix(fm); - frustums.push(frustum); - - // camera position in object space - let view = camera.matrixWorld; - let worldI = new THREE.Matrix4().getInverse(world); - let camMatrixObject = new THREE.Matrix4().multiply(worldI).multiply(view); - let camObjPos = new THREE.Vector3().setFromMatrixPosition(camMatrixObject); - camObjPositions.push(camObjPos); - - if (pointcloud.visible && pointcloud.root !== null) { - priorityQueue.push({pointcloud: i, node: pointcloud.root, weight: Number.MAX_VALUE}); - } - - // hide all previously visible nodes - // if(pointcloud.root instanceof PointCloudOctreeNode){ - // pointcloud.hideDescendants(pointcloud.root.sceneNode); - // } - if (pointcloud.root.isTreeNode()) { - pointcloud.hideDescendants(pointcloud.root.sceneNode); - } - - for (let j = 0; j < pointcloud.boundingBoxNodes.length; j++) { - pointcloud.boundingBoxNodes[j].visible = false; - } - } - - return { - 'frustums': frustums, - 'camObjPositions': camObjPositions, - 'priorityQueue': priorityQueue - }; - }; - - - function updateVisibility(pointclouds, camera, renderer){ - - let numVisibleNodes = 0; - let numVisiblePoints = 0; - - let numVisiblePointsInPointclouds = new Map(pointclouds.map(pc => [pc, 0])); - - let visibleNodes = []; - let visibleGeometry = []; - let unloadedGeometry = []; - - let lowestSpacing = Infinity; - - // calculate object space frustum and cam pos and setup priority queue - let s = updateVisibilityStructures(pointclouds, camera, renderer); - let frustums = s.frustums; - let camObjPositions = s.camObjPositions; - let priorityQueue = s.priorityQueue; - - let loadedToGPUThisFrame = 0; - - let domWidth = renderer.domElement.clientWidth; - let domHeight = renderer.domElement.clientHeight; - - // check if pointcloud has been transformed - // some code will only be executed if changes have been detected - if(!Potree._pointcloudTransformVersion){ - Potree._pointcloudTransformVersion = new Map(); - } - let pointcloudTransformVersion = Potree._pointcloudTransformVersion; - for(let pointcloud of pointclouds){ - - if(!pointcloud.visible){ - continue; - } - - pointcloud.updateMatrixWorld(); - - if(!pointcloudTransformVersion.has(pointcloud)){ - pointcloudTransformVersion.set(pointcloud, {number: 0, transform: pointcloud.matrixWorld.clone()}); - }else { - let version = pointcloudTransformVersion.get(pointcloud); - - if(!version.transform.equals(pointcloud.matrixWorld)){ - version.number++; - version.transform.copy(pointcloud.matrixWorld); - - pointcloud.dispatchEvent({ - type: "transformation_changed", - target: pointcloud - }); - } - } - } - - while (priorityQueue.size() > 0) { - let element = priorityQueue.pop(); - let node = element.node; - let parent = element.parent; - let pointcloud = pointclouds[element.pointcloud]; - - // { // restrict to certain nodes for debugging - // let allowedNodes = ["r", "r0", "r4"]; - // if(!allowedNodes.includes(node.name)){ - // continue; - // } - // } - - let box = node.getBoundingBox(); - let frustum = frustums[element.pointcloud]; - let camObjPos = camObjPositions[element.pointcloud]; - - let insideFrustum = frustum.intersectsBox(box); - let maxLevel = pointcloud.maxLevel || Infinity; - let level = node.getLevel(); - let visible = insideFrustum; - visible = visible && !(numVisiblePoints + node.getNumPoints() > Potree.pointBudget); - visible = visible && !(numVisiblePointsInPointclouds.get(pointcloud) + node.getNumPoints() > pointcloud.pointBudget); - visible = visible && level < maxLevel; - //visible = visible && node.name !== "r613"; - - let clipBoxes = pointcloud.material.clipBoxes; - if(true && clipBoxes.length > 0){ - - //node.debug = false; - - let numIntersecting = 0; - let numIntersectionVolumes = 0; - - //if(node.name === "r60"){ - // var a = 10; - //} - - for(let clipBox of clipBoxes){ - - let pcWorldInverse = new THREE.Matrix4().getInverse(pointcloud.matrixWorld); - let toPCObject = pcWorldInverse.multiply(clipBox.box.matrixWorld); - - let px = new THREE.Vector3(+0.5, 0, 0).applyMatrix4(pcWorldInverse); - let nx = new THREE.Vector3(-0.5, 0, 0).applyMatrix4(pcWorldInverse); - let py = new THREE.Vector3(0, +0.5, 0).applyMatrix4(pcWorldInverse); - let ny = new THREE.Vector3(0, -0.5, 0).applyMatrix4(pcWorldInverse); - let pz = new THREE.Vector3(0, 0, +0.5).applyMatrix4(pcWorldInverse); - let nz = new THREE.Vector3(0, 0, -0.5).applyMatrix4(pcWorldInverse); - - let pxN = new THREE.Vector3().subVectors(nx, px).normalize(); - let nxN = pxN.clone().multiplyScalar(-1); - let pyN = new THREE.Vector3().subVectors(ny, py).normalize(); - let nyN = pyN.clone().multiplyScalar(-1); - let pzN = new THREE.Vector3().subVectors(nz, pz).normalize(); - let nzN = pzN.clone().multiplyScalar(-1); - - let pxPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pxN, px); - let nxPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nxN, nx); - let pyPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pyN, py); - let nyPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nyN, ny); - let pzPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pzN, pz); - let nzPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nzN, nz); - - //if(window.debugdraw !== undefined && window.debugdraw === true && node.name === "r60"){ - - // Potree.utils.debugPlane(viewer.scene.scene, pxPlane, 1, 0xFF0000); - // Potree.utils.debugPlane(viewer.scene.scene, nxPlane, 1, 0x990000); - // Potree.utils.debugPlane(viewer.scene.scene, pyPlane, 1, 0x00FF00); - // Potree.utils.debugPlane(viewer.scene.scene, nyPlane, 1, 0x009900); - // Potree.utils.debugPlane(viewer.scene.scene, pzPlane, 1, 0x0000FF); - // Potree.utils.debugPlane(viewer.scene.scene, nzPlane, 1, 0x000099); - - // Potree.utils.debugBox(viewer.scene.scene, box, new THREE.Matrix4(), 0x00FF00); - // Potree.utils.debugBox(viewer.scene.scene, box, pointcloud.matrixWorld, 0xFF0000); - // Potree.utils.debugBox(viewer.scene.scene, clipBox.box.boundingBox, clipBox.box.matrixWorld, 0xFF0000); - - // window.debugdraw = false; - //} - - let frustum = new THREE.Frustum(pxPlane, nxPlane, pyPlane, nyPlane, pzPlane, nzPlane); - let intersects = frustum.intersectsBox(box); - - if(intersects){ - numIntersecting++; - } - numIntersectionVolumes++; - } - - let insideAny = numIntersecting > 0; - let insideAll = numIntersecting === numIntersectionVolumes; - - if(pointcloud.material.clipTask === ClipTask.SHOW_INSIDE){ - if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ANY && insideAny){ - //node.debug = true - }else if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ALL && insideAll){ - //node.debug = true; - }else { - visible = false; - } - } else if(pointcloud.material.clipTask === ClipTask.SHOW_OUTSIDE){ - //if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ANY && !insideAny){ - // //visible = true; - // let a = 10; - //}else if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ALL && !insideAll){ - // //visible = true; - // let a = 20; - //}else{ - // visible = false; - //} - } - - - } - - // visible = ["r", "r0", "r06", "r060"].includes(node.name); - // visible = ["r"].includes(node.name); - - if (node.spacing) { - lowestSpacing = Math.min(lowestSpacing, node.spacing); - } else if (node.geometryNode && node.geometryNode.spacing) { - lowestSpacing = Math.min(lowestSpacing, node.geometryNode.spacing); - } - - if (numVisiblePoints + node.getNumPoints() > Potree.pointBudget) { - break; - } - - if (!visible) { - continue; - } - - // TODO: not used, same as the declaration? - // numVisibleNodes++; - numVisiblePoints += node.getNumPoints(); - let numVisiblePointsInPointcloud = numVisiblePointsInPointclouds.get(pointcloud); - numVisiblePointsInPointclouds.set(pointcloud, numVisiblePointsInPointcloud + node.getNumPoints()); - - pointcloud.numVisibleNodes++; - pointcloud.numVisiblePoints += node.getNumPoints(); - - if (node.isGeometryNode() && (!parent || parent.isTreeNode())) { - if (node.isLoaded() && loadedToGPUThisFrame < 2) { - node = pointcloud.toTreeNode(node, parent); - loadedToGPUThisFrame++; - } else { - unloadedGeometry.push(node); - visibleGeometry.push(node); - } - } - - if (node.isTreeNode()) { - exports.lru.touch(node.geometryNode); - node.sceneNode.visible = true; - node.sceneNode.material = pointcloud.material; - - visibleNodes.push(node); - pointcloud.visibleNodes.push(node); - - if(node._transformVersion === undefined){ - node._transformVersion = -1; - } - let transformVersion = pointcloudTransformVersion.get(pointcloud); - if(node._transformVersion !== transformVersion.number){ - node.sceneNode.updateMatrix(); - node.sceneNode.matrixWorld.multiplyMatrices(pointcloud.matrixWorld, node.sceneNode.matrix); - node._transformVersion = transformVersion.number; - } - - if (pointcloud.showBoundingBox && !node.boundingBoxNode && node.getBoundingBox) { - let boxHelper = new Box3Helper(node.getBoundingBox()); - boxHelper.matrixAutoUpdate = false; - pointcloud.boundingBoxNodes.push(boxHelper); - node.boundingBoxNode = boxHelper; - node.boundingBoxNode.matrix.copy(pointcloud.matrixWorld); - } else if (pointcloud.showBoundingBox) { - node.boundingBoxNode.visible = true; - node.boundingBoxNode.matrix.copy(pointcloud.matrixWorld); - } else if (!pointcloud.showBoundingBox && node.boundingBoxNode) { - node.boundingBoxNode.visible = false; - } - - // if(node.boundingBoxNode !== undefined && exports.debug.allowedNodes !== undefined){ - // if(!exports.debug.allowedNodes.includes(node.name)){ - // node.boundingBoxNode.visible = false; - // } - // } - } - - // add child nodes to priorityQueue - let children = node.getChildren(); - for (let i = 0; i < children.length; i++) { - let child = children[i]; - - let weight = 0; - if(camera.isPerspectiveCamera){ - let sphere = child.getBoundingSphere(); - let center = sphere.center; - //let distance = sphere.center.distanceTo(camObjPos); - - let dx = camObjPos.x - center.x; - let dy = camObjPos.y - center.y; - let dz = camObjPos.z - center.z; - - let dd = dx * dx + dy * dy + dz * dz; - let distance = Math.sqrt(dd); - - - let radius = sphere.radius; - - let fov = (camera.fov * Math.PI) / 180; - let slope = Math.tan(fov / 2); - let projFactor = (0.5 * domHeight) / (slope * distance); - let screenPixelRadius = radius * projFactor; - - if(screenPixelRadius < pointcloud.minimumNodePixelSize){ - continue; - } - - weight = screenPixelRadius; - - if(distance - radius < 0){ - weight = Number.MAX_VALUE; - } - } else { - // TODO ortho visibility - let bb = child.getBoundingBox(); - let distance = child.getBoundingSphere().center.distanceTo(camObjPos); - let diagonal = bb.max.clone().sub(bb.min).length(); - //weight = diagonal / distance; - - weight = diagonal; - } - - priorityQueue.push({pointcloud: element.pointcloud, node: child, parent: node, weight: weight}); - } - }// end priority queue loop - - { // update DEM - let maxDEMLevel = 4; - let candidates = pointclouds - .filter(p => (p.generateDEM && p.dem instanceof Potree.DEM)); - for (let pointcloud of candidates) { - let updatingNodes = pointcloud.visibleNodes.filter(n => n.getLevel() <= maxDEMLevel); - pointcloud.dem.update(updatingNodes); - } - } - - for (let i = 0; i < Math.min(Potree.maxNodesLoading, unloadedGeometry.length); i++) { - unloadedGeometry[i].load(); - } - - return { - visibleNodes: visibleNodes, - numVisiblePoints: numVisiblePoints, - lowestSpacing: lowestSpacing - }; - }; - - class PointCloudArena4DNode extends PointCloudTreeNode { - constructor () { - super(); - - this.left = null; - this.right = null; - this.sceneNode = null; - this.kdtree = null; - } - - getNumPoints () { - return this.geometryNode.numPoints; - } - - isLoaded () { - return true; - } - - isTreeNode () { - return true; - } - - isGeometryNode () { - return false; - } - - getLevel () { - return this.geometryNode.level; - } - - getBoundingSphere () { - return this.geometryNode.boundingSphere; - } - - getBoundingBox () { - return this.geometryNode.boundingBox; - } - - toTreeNode (child) { - let geometryNode = null; - - if (this.left === child) { - geometryNode = this.left; - } else if (this.right === child) { - geometryNode = this.right; - } - - if (!geometryNode.loaded) { - return; - } - - let node = new PointCloudArena4DNode(); - let sceneNode = THREE.PointCloud(geometryNode.geometry, this.kdtree.material); - sceneNode.visible = false; - - node.kdtree = this.kdtree; - node.geometryNode = geometryNode; - node.sceneNode = sceneNode; - node.parent = this; - node.left = this.geometryNode.left; - node.right = this.geometryNode.right; - } - - getChildren () { - let children = []; - - if (this.left) { - children.push(this.left); - } - - if (this.right) { - children.push(this.right); - } - - return children; - } - }; - - class PointCloudArena4D$1 extends PointCloudTree{ - constructor (geometry) { - super(); - - this.root = null; - if (geometry.root) { - this.root = geometry.root; - } else { - geometry.addEventListener('hierarchy_loaded', () => { - this.root = geometry.root; - }); - } - - this.visiblePointsTarget = 2 * 1000 * 1000; - this.minimumNodePixelSize = 150; - - this.position.sub(geometry.offset); - this.updateMatrix(); - - this.numVisibleNodes = 0; - this.numVisiblePoints = 0; - - this.boundingBoxNodes = []; - this.loadQueue = []; - this.visibleNodes = []; - - this.pcoGeometry = geometry; - this.boundingBox = this.pcoGeometry.boundingBox; - this.boundingSphere = this.pcoGeometry.boundingSphere; - this.material = new PointCloudMaterial({vertexColors: THREE.VertexColors, size: 0.05, treeType: TreeType.KDTREE}); - this.material.sizeType = PointSizeType.ATTENUATED; - this.material.size = 0.05; - this.profileRequests = []; - this.name = ''; - } - - getBoundingBoxWorld () { - this.updateMatrixWorld(true); - let box = this.boundingBox; - let transform = this.matrixWorld; - let tBox = Utils.computeTransformedBoundingBox(box, transform); - - return tBox; - }; - - setName (name) { - if (this.name !== name) { - this.name = name; - this.dispatchEvent({type: 'name_changed', name: name, pointcloud: this}); - } - } - - getName () { - return this.name; - } - - getLevel () { - return this.level; - } - - toTreeNode (geometryNode, parent) { - let node = new PointCloudArena4DNode(); - let sceneNode = new THREE.Points(geometryNode.geometry, this.material); - - sceneNode.frustumCulled = false; - sceneNode.onBeforeRender = (_this, scene, camera, geometry, material, group) => { - if (material.program) { - _this.getContext().useProgram(material.program.program); - - if (material.program.getUniforms().map.level) { - let level = geometryNode.getLevel(); - material.uniforms.level.value = level; - material.program.getUniforms().map.level.setValue(_this.getContext(), level); - } - - if (this.visibleNodeTextureOffsets && material.program.getUniforms().map.vnStart) { - let vnStart = this.visibleNodeTextureOffsets.get(node); - material.uniforms.vnStart.value = vnStart; - material.program.getUniforms().map.vnStart.setValue(_this.getContext(), vnStart); - } - - if (material.program.getUniforms().map.pcIndex) { - let i = node.pcIndex ? node.pcIndex : this.visibleNodes.indexOf(node); - material.uniforms.pcIndex.value = i; - material.program.getUniforms().map.pcIndex.setValue(_this.getContext(), i); - } - } - }; - - node.geometryNode = geometryNode; - node.sceneNode = sceneNode; - node.pointcloud = this; - node.left = geometryNode.left; - node.right = geometryNode.right; - - if (!parent) { - this.root = node; - this.add(sceneNode); - } else { - parent.sceneNode.add(sceneNode); - - if (parent.left === geometryNode) { - parent.left = node; - } else if (parent.right === geometryNode) { - parent.right = node; - } - } - - let disposeListener = function () { - parent.sceneNode.remove(node.sceneNode); - - if (parent.left === node) { - parent.left = geometryNode; - } else if (parent.right === node) { - parent.right = geometryNode; - } - }; - geometryNode.oneTimeDisposeHandlers.push(disposeListener); - - return node; - } - - updateMaterial (material, visibleNodes, camera, renderer) { - material.fov = camera.fov * (Math.PI / 180); - material.screenWidth = renderer.domElement.clientWidth; - material.screenHeight = renderer.domElement.clientHeight; - material.spacing = this.pcoGeometry.spacing; - material.near = camera.near; - material.far = camera.far; - - // reduce shader source updates by setting maxLevel slightly higher than actually necessary - if (this.maxLevel > material.levels) { - material.levels = this.maxLevel + 2; - } - - // material.uniforms.octreeSize.value = this.boundingBox.size().x; - let bbSize = this.boundingBox.getSize(new THREE.Vector3()); - material.bbSize = [bbSize.x, bbSize.y, bbSize.z]; - } - - updateVisibleBounds () { - - } - - hideDescendants (object) { - let stack = []; - for (let i = 0; i < object.children.length; i++) { - let child = object.children[i]; - if (child.visible) { - stack.push(child); - } - } - - while (stack.length > 0) { - let child = stack.shift(); - - child.visible = false; - if (child.boundingBoxNode) { - child.boundingBoxNode.visible = false; - } - - for (let i = 0; i < child.children.length; i++) { - let childOfChild = child.children[i]; - if (childOfChild.visible) { - stack.push(childOfChild); - } - } - } - } - - updateMatrixWorld (force) { - // node.matrixWorld.multiplyMatrices( node.parent.matrixWorld, node.matrix ); - - if (this.matrixAutoUpdate === true) this.updateMatrix(); - - if (this.matrixWorldNeedsUpdate === true || force === true) { - if (this.parent === undefined) { - this.matrixWorld.copy(this.matrix); - } else { - this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); - } - - this.matrixWorldNeedsUpdate = false; - - force = true; - } - } - - nodesOnRay (nodes, ray) { - let nodesOnRay = []; - - let _ray = ray.clone(); - for (let i = 0; i < nodes.length; i++) { - let node = nodes[i]; - let sphere = node.getBoundingSphere().clone().applyMatrix4(node.sceneNode.matrixWorld); - // TODO Unused: let box = node.getBoundingBox().clone().applyMatrix4(node.sceneNode.matrixWorld); - - if (_ray.intersectsSphere(sphere)) { - nodesOnRay.push(node); - } - // if(_ray.isIntersectionBox(box)){ - // nodesOnRay.push(node); - // } - } - - return nodesOnRay; - } - - pick(viewer, camera, ray, params = {}){ - - let renderer = viewer.renderer; - let pRenderer = viewer.pRenderer; - - performance.mark("pick-start"); - - let getVal = (a, b) => a !== undefined ? a : b; - - let pickWindowSize = getVal(params.pickWindowSize, 17); - let pickOutsideClipRegion = getVal(params.pickOutsideClipRegion, false); - - let size = renderer.getSize(new THREE.Vector2()); - - let width = Math.ceil(getVal(params.width, size.width)); - let height = Math.ceil(getVal(params.height, size.height)); - - let pointSizeType = getVal(params.pointSizeType, this.material.pointSizeType); - let pointSize = getVal(params.pointSize, this.material.size); - - let nodes = this.nodesOnRay(this.visibleNodes, ray); - - if (nodes.length === 0) { - return null; - } - - if (!this.pickState) { - let scene = new THREE.Scene(); - - let material = new PointCloudMaterial(); - material.activeAttributeName = "indices"; - - let renderTarget = new THREE.WebGLRenderTarget( - 1, 1, - { minFilter: THREE.LinearFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat } - ); - - this.pickState = { - renderTarget: renderTarget, - material: material, - scene: scene - }; - }; - - let pickState = this.pickState; - let pickMaterial = pickState.material; - - { // update pick material - pickMaterial.pointSizeType = pointSizeType; - pickMaterial.shape = this.material.shape; - - pickMaterial.size = pointSize; - pickMaterial.uniforms.minSize.value = this.material.uniforms.minSize.value; - pickMaterial.uniforms.maxSize.value = this.material.uniforms.maxSize.value; - pickMaterial.classification = this.material.classification; - if(params.pickClipped){ - pickMaterial.clipBoxes = this.material.clipBoxes; - if(this.material.clipTask === ClipTask.HIGHLIGHT){ - pickMaterial.clipTask = ClipTask.NONE; - }else { - pickMaterial.clipTask = this.material.clipTask; - } - }else { - pickMaterial.clipBoxes = []; - } - - this.updateMaterial(pickMaterial, nodes, camera, renderer); - } - - pickState.renderTarget.setSize(width, height); - - let pixelPos = new THREE.Vector2(params.x, params.y); - - let gl = renderer.getContext(); - gl.enable(gl.SCISSOR_TEST); - gl.scissor( - parseInt(pixelPos.x - (pickWindowSize - 1) / 2), - parseInt(pixelPos.y - (pickWindowSize - 1) / 2), - parseInt(pickWindowSize), parseInt(pickWindowSize)); - - - renderer.state.buffers.depth.setTest(pickMaterial.depthTest); - renderer.state.buffers.depth.setMask(pickMaterial.depthWrite); - renderer.state.setBlending(THREE.NoBlending); - - renderer.clearTarget(pickState.renderTarget, true, true, true); - - { // RENDER - renderer.setRenderTarget(pickState.renderTarget); - gl.clearColor(0, 0, 0, 0); - renderer.clearTarget( pickState.renderTarget, true, true, true ); - - let tmp = this.material; - this.material = pickMaterial; - - pRenderer.renderOctree(this, nodes, camera, pickState.renderTarget); - - this.material = tmp; - } - - let clamp = (number, min, max) => Math.min(Math.max(min, number), max); - - let x = parseInt(clamp(pixelPos.x - (pickWindowSize - 1) / 2, 0, width)); - let y = parseInt(clamp(pixelPos.y - (pickWindowSize - 1) / 2, 0, height)); - let w = parseInt(Math.min(x + pickWindowSize, width) - x); - let h = parseInt(Math.min(y + pickWindowSize, height) - y); - - let pixelCount = w * h; - let buffer = new Uint8Array(4 * pixelCount); - - gl.readPixels(x, y, pickWindowSize, pickWindowSize, gl.RGBA, gl.UNSIGNED_BYTE, buffer); - - renderer.setRenderTarget(null); - renderer.state.reset(); - renderer.setScissorTest(false); - gl.disable(gl.SCISSOR_TEST); - - let pixels = buffer; - let ibuffer = new Uint32Array(buffer.buffer); - - // find closest hit inside pixelWindow boundaries - let min = Number.MAX_VALUE; - let hits = []; - for (let u = 0; u < pickWindowSize; u++) { - for (let v = 0; v < pickWindowSize; v++) { - let offset = (u + v * pickWindowSize); - let distance = Math.pow(u - (pickWindowSize - 1) / 2, 2) + Math.pow(v - (pickWindowSize - 1) / 2, 2); - - let pcIndex = pixels[4 * offset + 3]; - pixels[4 * offset + 3] = 0; - let pIndex = ibuffer[offset]; - - if(!(pcIndex === 0 && pIndex === 0) && (pcIndex !== undefined) && (pIndex !== undefined)){ - let hit = { - pIndex: pIndex, - pcIndex: pcIndex, - distanceToCenter: distance - }; - - if(params.all){ - hits.push(hit); - }else { - if(hits.length > 0){ - if(distance < hits[0].distanceToCenter){ - hits[0] = hit; - } - }else { - hits.push(hit); - } - } - - - } - } - } - - - - for(let hit of hits){ - let point = {}; - - if (!nodes[hit.pcIndex]) { - return null; - } - - let node = nodes[hit.pcIndex]; - let pc = node.sceneNode; - let geometry = node.geometryNode.geometry; - - for(let attributeName in geometry.attributes){ - let attribute = geometry.attributes[attributeName]; - - if (attributeName === 'position') { - let x = attribute.array[3 * hit.pIndex + 0]; - let y = attribute.array[3 * hit.pIndex + 1]; - let z = attribute.array[3 * hit.pIndex + 2]; - - let position = new THREE.Vector3(x, y, z); - position.applyMatrix4(pc.matrixWorld); - - point[attributeName] = position; - } else if (attributeName === 'indices') { - - } else { - //if (values.itemSize === 1) { - // point[attribute.name] = values.array[hit.pIndex]; - //} else { - // let value = []; - // for (let j = 0; j < values.itemSize; j++) { - // value.push(values.array[values.itemSize * hit.pIndex + j]); - // } - // point[attribute.name] = value; - //} - } - - } - - hit.point = point; - } - - performance.mark("pick-end"); - performance.measure("pick", "pick-start", "pick-end"); - - if(params.all){ - return hits.map(hit => hit.point); - }else { - if(hits.length === 0){ - return null; - }else { - return hits[0].point; - } - } - } - - computeVisibilityTextureData(nodes){ - - if(exports.measureTimings) performance.mark("computeVisibilityTextureData-start"); - - let data = new Uint8Array(nodes.length * 3); - let visibleNodeTextureOffsets = new Map(); - - // copy array - nodes = nodes.slice(); - - // sort by level and number - let sort = function (a, b) { - let la = a.geometryNode.level; - let lb = b.geometryNode.level; - let na = a.geometryNode.number; - let nb = b.geometryNode.number; - if (la !== lb) return la - lb; - if (na < nb) return -1; - if (na > nb) return 1; - return 0; - }; - nodes.sort(sort); - - let visibleNodeNames = []; - for (let i = 0; i < nodes.length; i++) { - visibleNodeNames.push(nodes[i].geometryNode.number); - } - - for (let i = 0; i < nodes.length; i++) { - let node = nodes[i]; - - visibleNodeTextureOffsets.set(node, i); - - let b1 = 0; // children - let b2 = 0; // offset to first child - let b3 = 0; // split - - if (node.geometryNode.left && visibleNodeNames.indexOf(node.geometryNode.left.number) > 0) { - b1 += 1; - b2 = visibleNodeNames.indexOf(node.geometryNode.left.number) - i; - } - if (node.geometryNode.right && visibleNodeNames.indexOf(node.geometryNode.right.number) > 0) { - b1 += 2; - b2 = (b2 === 0) ? visibleNodeNames.indexOf(node.geometryNode.right.number) - i : b2; - } - - if (node.geometryNode.split === 'X') { - b3 = 1; - } else if (node.geometryNode.split === 'Y') { - b3 = 2; - } else if (node.geometryNode.split === 'Z') { - b3 = 4; - } - - data[i * 3 + 0] = b1; - data[i * 3 + 1] = b2; - data[i * 3 + 2] = b3; - } - - if(exports.measureTimings){ - performance.mark("computeVisibilityTextureData-end"); - performance.measure("render.computeVisibilityTextureData", "computeVisibilityTextureData-start", "computeVisibilityTextureData-end"); - } - - return { - data: data, - offsets: visibleNodeTextureOffsets - }; - } - - get progress () { - if (this.pcoGeometry.root) { - return exports.numNodesLoading > 0 ? 0 : 1; - } else { - return 0; - } - } - }; - - // Copied from three.js: WebGLRenderer.js - function paramThreeToGL(_gl, p) { - - let extension; - - if (p === THREE.RepeatWrapping) return _gl.REPEAT; - if (p === THREE.ClampToEdgeWrapping) return _gl.CLAMP_TO_EDGE; - if (p === THREE.MirroredRepeatWrapping) return _gl.MIRRORED_REPEAT; - - if (p === THREE.NearestFilter) return _gl.NEAREST; - if (p === THREE.NearestMipMapNearestFilter) return _gl.NEAREST_MIPMAP_NEAREST; - if (p === THREE.NearestMipMapLinearFilter) return _gl.NEAREST_MIPMAP_LINEAR; - - if (p === THREE.LinearFilter) return _gl.LINEAR; - if (p === THREE.LinearMipMapNearestFilter) return _gl.LINEAR_MIPMAP_NEAREST; - if (p === THREE.LinearMipMapLinearFilter) return _gl.LINEAR_MIPMAP_LINEAR; - - if (p === THREE.UnsignedByteType) return _gl.UNSIGNED_BYTE; - if (p === THREE.UnsignedShort4444Type) return _gl.UNSIGNED_SHORT_4_4_4_4; - if (p === THREE.UnsignedShort5551Type) return _gl.UNSIGNED_SHORT_5_5_5_1; - if (p === THREE.UnsignedShort565Type) return _gl.UNSIGNED_SHORT_5_6_5; - - if (p === THREE.ByteType) return _gl.BYTE; - if (p === THREE.ShortType) return _gl.SHORT; - if (p === THREE.UnsignedShortType) return _gl.UNSIGNED_SHORT; - if (p === THREE.IntType) return _gl.INT; - if (p === THREE.UnsignedIntType) return _gl.UNSIGNED_INT; - if (p === THREE.FloatType) return _gl.FLOAT; - - if (p === THREE.HalfFloatType) { - - extension = extensions.get('OES_texture_half_float'); - - if (extension !== null) return extension.HALF_FLOAT_OES; - - } - - if (p === THREE.AlphaFormat) return _gl.ALPHA; - if (p === THREE.RGBFormat) return _gl.RGB; - if (p === THREE.RGBAFormat) return _gl.RGBA; - if (p === THREE.LuminanceFormat) return _gl.LUMINANCE; - if (p === THREE.LuminanceAlphaFormat) return _gl.LUMINANCE_ALPHA; - if (p === THREE.DepthFormat) return _gl.DEPTH_COMPONENT; - if (p === THREE.DepthStencilFormat) return _gl.DEPTH_STENCIL; - - if (p === THREE.AddEquation) return _gl.FUNC_ADD; - if (p === THREE.SubtractEquation) return _gl.FUNC_SUBTRACT; - if (p === THREE.ReverseSubtractEquation) return _gl.FUNC_REVERSE_SUBTRACT; - - if (p === THREE.ZeroFactor) return _gl.ZERO; - if (p === THREE.OneFactor) return _gl.ONE; - if (p === THREE.SrcColorFactor) return _gl.SRC_COLOR; - if (p === THREE.OneMinusSrcColorFactor) return _gl.ONE_MINUS_SRC_COLOR; - if (p === THREE.SrcAlphaFactor) return _gl.SRC_ALPHA; - if (p === THREE.OneMinusSrcAlphaFactor) return _gl.ONE_MINUS_SRC_ALPHA; - if (p === THREE.DstAlphaFactor) return _gl.DST_ALPHA; - if (p === THREE.OneMinusDstAlphaFactor) return _gl.ONE_MINUS_DST_ALPHA; - - if (p === THREE.DstColorFactor) return _gl.DST_COLOR; - if (p === THREE.OneMinusDstColorFactor) return _gl.ONE_MINUS_DST_COLOR; - if (p === THREE.SrcAlphaSaturateFactor) return _gl.SRC_ALPHA_SATURATE; - - if (p === THREE.RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || - p === THREE.RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) { - - extension = extensions.get('WEBGL_compressed_texture_s3tc'); - - if (extension !== null) { - - if (p === THREE.RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; - if (p === THREE.RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; - if (p === THREE.RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; - if (p === THREE.RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; - - } - - } - - if (p === THREE.RGB_PVRTC_4BPPV1_Format || p === THREE.RGB_PVRTC_2BPPV1_Format || - p === THREE.RGBA_PVRTC_4BPPV1_Format || p === THREE.RGBA_PVRTC_2BPPV1_Format) { - - extension = extensions.get('WEBGL_compressed_texture_pvrtc'); - - if (extension !== null) { - - if (p === THREE.RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; - if (p === THREE.RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; - if (p === THREE.RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; - if (p === THREE.RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; - - } - - } - - if (p === THREE.RGB_ETC1_Format) { - - extension = extensions.get('WEBGL_compressed_texture_etc1'); - - if (extension !== null) return extension.COMPRESSED_RGB_ETC1_WEBGL; - - } - - if (p === THREE.MinEquation || p === THREE.MaxEquation) { - - extension = extensions.get('EXT_blend_minmax'); - - if (extension !== null) { - - if (p === THREE.MinEquation) return extension.MIN_EXT; - if (p === THREE.MaxEquation) return extension.MAX_EXT; - - } - - } - - if (p === UnsignedInt248Type) { - - extension = extensions.get('WEBGL_depth_texture'); - - if (extension !== null) return extension.UNSIGNED_INT_24_8_WEBGL; - - } - - return 0; - - }; - - let attributeLocations = { - "position": {name: "position", location: 0}, - "color": {name: "color", location: 1}, - "rgba": {name: "color", location: 1}, - "intensity": {name: "intensity", location: 2}, - "classification": {name: "classification", location: 3}, - "returnNumber": {name: "returnNumber", location: 4}, - "return number": {name: "returnNumber", location: 4}, - "returns": {name: "returnNumber", location: 4}, - "numberOfReturns": {name: "numberOfReturns", location: 5}, - "number of returns": {name: "numberOfReturns", location: 5}, - "pointSourceID": {name: "pointSourceID", location: 6}, - "source id": {name: "pointSourceID", location: 6}, - "point source id": {name: "pointSourceID", location: 6}, - "indices": {name: "indices", location: 7}, - "normal": {name: "normal", location: 8}, - "spacing": {name: "spacing", location: 9}, - "gps-time": {name: "gpsTime", location: 10}, - "aExtra": {name: "aExtra", location: 11}, - }; - - class Shader { - - constructor(gl, name, vsSource, fsSource) { - this.gl = gl; - this.name = name; - this.vsSource = vsSource; - this.fsSource = fsSource; - - this.cache = new Map(); - - this.vs = null; - this.fs = null; - this.program = null; - - this.uniformLocations = {}; - this.attributeLocations = {}; - this.uniformBlockIndices = {}; - this.uniformBlocks = {}; - this.uniforms = {}; - - this.update(vsSource, fsSource); - } - - update(vsSource, fsSource) { - this.vsSource = vsSource; - this.fsSource = fsSource; - - this.linkProgram(); - } - - compileShader(shader, source){ - let gl = this.gl; - - gl.shaderSource(shader, source); - - gl.compileShader(shader); - - let success = gl.getShaderParameter(shader, gl.COMPILE_STATUS); - if (!success) { - let info = gl.getShaderInfoLog(shader); - let numberedSource = source.split("\n").map((a, i) => `${i + 1}`.padEnd(5) + a).join("\n"); - throw `could not compile shader ${this.name}: ${info}, \n${numberedSource}`; - } - } - - linkProgram() { - - const tStart = performance.now(); - - let gl = this.gl; - - this.uniformLocations = {}; - this.attributeLocations = {}; - this.uniforms = {}; - - gl.useProgram(null); - - let cached = this.cache.get(`${this.vsSource}, ${this.fsSource}`); - if (cached) { - this.program = cached.program; - this.vs = cached.vs; - this.fs = cached.fs; - this.attributeLocations = cached.attributeLocations; - this.uniformLocations = cached.uniformLocations; - this.uniformBlocks = cached.uniformBlocks; - this.uniforms = cached.uniforms; - - return; - } else { - - this.vs = gl.createShader(gl.VERTEX_SHADER); - this.fs = gl.createShader(gl.FRAGMENT_SHADER); - this.program = gl.createProgram(); - - for(let name of Object.keys(attributeLocations)){ - let location = attributeLocations[name].location; - let glslName = attributeLocations[name].name; - gl.bindAttribLocation(this.program, location, glslName); - } - - this.compileShader(this.vs, this.vsSource); - this.compileShader(this.fs, this.fsSource); - - let program = this.program; - - gl.attachShader(program, this.vs); - gl.attachShader(program, this.fs); - - gl.linkProgram(program); - - gl.detachShader(program, this.vs); - gl.detachShader(program, this.fs); - - let success = gl.getProgramParameter(program, gl.LINK_STATUS); - if (!success) { - let info = gl.getProgramInfoLog(program); - throw `could not link program ${this.name}: ${info}`; - } - - { // attribute locations - let numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES); - - for (let i = 0; i < numAttributes; i++) { - let attribute = gl.getActiveAttrib(program, i); - - let location = gl.getAttribLocation(program, attribute.name); - - this.attributeLocations[attribute.name] = location; - } - } - - { // uniform locations - let numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS); - - for (let i = 0; i < numUniforms; i++) { - let uniform = gl.getActiveUniform(program, i); - - let location = gl.getUniformLocation(program, uniform.name); - - this.uniformLocations[uniform.name] = location; - this.uniforms[uniform.name] = { - location: location, - value: null, - }; - } - } - - // uniform blocks - if(gl instanceof WebGL2RenderingContext){ - let numBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS); - - for (let i = 0; i < numBlocks; i++) { - let blockName = gl.getActiveUniformBlockName(program, i); - - let blockIndex = gl.getUniformBlockIndex(program, blockName); - - this.uniformBlockIndices[blockName] = blockIndex; - - gl.uniformBlockBinding(program, blockIndex, blockIndex); - let dataSize = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE); - - let uBuffer = gl.createBuffer(); - gl.bindBuffer(gl.UNIFORM_BUFFER, uBuffer); - gl.bufferData(gl.UNIFORM_BUFFER, dataSize, gl.DYNAMIC_READ); - - gl.bindBufferBase(gl.UNIFORM_BUFFER, blockIndex, uBuffer); - - gl.bindBuffer(gl.UNIFORM_BUFFER, null); - - this.uniformBlocks[blockName] = { - name: blockName, - index: blockIndex, - dataSize: dataSize, - buffer: uBuffer - }; - - } - } - - let cached = { - program: this.program, - vs: this.vs, - fs: this.fs, - attributeLocations: this.attributeLocations, - uniformLocations: this.uniformLocations, - uniforms: this.uniforms, - uniformBlocks: this.uniformBlocks, - }; - - this.cache.set(`${this.vsSource}, ${this.fsSource}`, cached); - } - - const tEnd = performance.now(); - const duration = tEnd - tStart; - - console.log(`shader compile duration: ${duration.toFixed(3)}`); - - - } - - setUniformMatrix4(name, value) { - const gl = this.gl; - const location = this.uniformLocations[name]; - - if (location == null) { - return; - } - - let tmp = new Float32Array(value.elements); - gl.uniformMatrix4fv(location, false, tmp); - } - - setUniform1f(name, value) { - const gl = this.gl; - const uniform = this.uniforms[name]; - - if (uniform === undefined) { - return; - } - - if(uniform.value === value){ - return; - } - - uniform.value = value; - - gl.uniform1f(uniform.location, value); - } - - setUniformBoolean(name, value) { - const gl = this.gl; - const uniform = this.uniforms[name]; - - if (uniform === undefined) { - return; - } - - if(uniform.value === value){ - return; - } - - uniform.value = value; - - gl.uniform1i(uniform.location, value); - } - - setUniformTexture(name, value) { - const gl = this.gl; - const location = this.uniformLocations[name]; - - if (location == null) { - return; - } - - gl.uniform1i(location, value); - } - - setUniform2f(name, value) { - const gl = this.gl; - const location = this.uniformLocations[name]; - - if (location == null) { - return; - } - - gl.uniform2f(location, value[0], value[1]); - } - - setUniform3f(name, value) { - const gl = this.gl; - const location = this.uniformLocations[name]; - - if (location == null) { - return; - } - - gl.uniform3f(location, value[0], value[1], value[2]); - } - - setUniform(name, value) { - - if (value.constructor === THREE.Matrix4) { - this.setUniformMatrix4(name, value); - } else if (typeof value === "number") { - this.setUniform1f(name, value); - } else if (typeof value === "boolean") { - this.setUniformBoolean(name, value); - } else if (value instanceof WebGLTexture) { - this.setUniformTexture(name, value); - } else if (value instanceof Array) { - - if (value.length === 2) { - this.setUniform2f(name, value); - } else if (value.length === 3) { - this.setUniform3f(name, value); - } - - } else { - console.error("unhandled uniform type: ", name, value); - } - - } - - - setUniform1i(name, value) { - let gl = this.gl; - let location = this.uniformLocations[name]; - - if (location == null) { - return; - } - - gl.uniform1i(location, value); - } - - }; - - class WebGLTexture { - - constructor(gl, texture) { - this.gl = gl; - - this.texture = texture; - this.id = gl.createTexture(); - - this.target = gl.TEXTURE_2D; - this.version = -1; - - this.update(texture); - } - - update() { - - if (!this.texture.image) { - this.version = this.texture.version; - - return; - } - - let gl = this.gl; - let texture = this.texture; - - if (this.version === texture.version) { - return; - } - - this.target = gl.TEXTURE_2D; - - gl.bindTexture(this.target, this.id); - - let level = 0; - let internalFormat = paramThreeToGL(gl, texture.format); - let width = texture.image.width; - let height = texture.image.height; - let border = 0; - let srcFormat = internalFormat; - let srcType = paramThreeToGL(gl, texture.type); - let data; - - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, texture.flipY); - gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha); - gl.pixelStorei(gl.UNPACK_ALIGNMENT, texture.unpackAlignment); - - if (texture instanceof THREE.DataTexture) { - data = texture.image.data; - - gl.texParameteri(this.target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(this.target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - - gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, paramThreeToGL(gl, texture.magFilter)); - gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, paramThreeToGL(gl, texture.minFilter)); - - gl.texImage2D(this.target, level, internalFormat, - width, height, border, srcFormat, srcType, - data); - } else if ((texture instanceof THREE.CanvasTexture) || (texture instanceof THREE.Texture)) { - data = texture.image; - - gl.texParameteri(this.target, gl.TEXTURE_WRAP_S, paramThreeToGL(gl, texture.wrapS)); - gl.texParameteri(this.target, gl.TEXTURE_WRAP_T, paramThreeToGL(gl, texture.wrapT)); - - gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, paramThreeToGL(gl, texture.magFilter)); - gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, paramThreeToGL(gl, texture.minFilter)); - - gl.texImage2D(this.target, level, internalFormat, - internalFormat, srcType, data); - - if (texture instanceof THREE.Texture) {gl.generateMipmap(gl.TEXTURE_2D);} - } - - gl.bindTexture(this.target, null); - - this.version = texture.version; - } - - }; - - class WebGLBuffer { - - constructor() { - this.numElements = 0; - this.vao = null; - this.vbos = new Map(); - } - - }; - - class Renderer { - - constructor(threeRenderer) { - this.threeRenderer = threeRenderer; - this.gl = this.threeRenderer.getContext(); - - this.buffers = new Map(); - this.shaders = new Map(); - this.textures = new Map(); - - this.glTypeMapping = new Map(); - this.glTypeMapping.set(Float32Array, this.gl.FLOAT); - this.glTypeMapping.set(Uint8Array, this.gl.UNSIGNED_BYTE); - this.glTypeMapping.set(Uint16Array, this.gl.UNSIGNED_SHORT); - - this.toggle = 0; - } - - deleteBuffer(geometry) { - - let gl = this.gl; - let webglBuffer = this.buffers.get(geometry); - if (webglBuffer != null) { - for (let attributeName in geometry.attributes) { - gl.deleteBuffer(webglBuffer.vbos.get(attributeName).handle); - } - this.buffers.delete(geometry); - } - } - - createBuffer(geometry){ - let gl = this.gl; - let webglBuffer = new WebGLBuffer(); - webglBuffer.vao = gl.createVertexArray(); - webglBuffer.numElements = geometry.attributes.position.count; - - gl.bindVertexArray(webglBuffer.vao); - - for(let attributeName in geometry.attributes){ - let bufferAttribute = geometry.attributes[attributeName]; - - let vbo = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, vbo); - gl.bufferData(gl.ARRAY_BUFFER, bufferAttribute.array, gl.STATIC_DRAW); - - let normalized = bufferAttribute.normalized; - let type = this.glTypeMapping.get(bufferAttribute.array.constructor); - - if(attributeLocations[attributeName] === undefined){ - //attributeLocation = attributeLocations["aExtra"]; - }else { - let attributeLocation = attributeLocations[attributeName].location; - - gl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0); - gl.enableVertexAttribArray(attributeLocation); - } - - - webglBuffer.vbos.set(attributeName, { - handle: vbo, - name: attributeName, - count: bufferAttribute.count, - itemSize: bufferAttribute.itemSize, - type: geometry.attributes.position.array.constructor, - version: 0 - }); - } - - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.bindVertexArray(null); - - let disposeHandler = (event) => { - this.deleteBuffer(geometry); - geometry.removeEventListener("dispose", disposeHandler); - }; - geometry.addEventListener("dispose", disposeHandler); - - return webglBuffer; - } - - updateBuffer(geometry){ - let gl = this.gl; - - let webglBuffer = this.buffers.get(geometry); - - gl.bindVertexArray(webglBuffer.vao); - - for(let attributeName in geometry.attributes){ - let bufferAttribute = geometry.attributes[attributeName]; - - let normalized = bufferAttribute.normalized; - let type = this.glTypeMapping.get(bufferAttribute.array.constructor); - - let vbo = null; - if(!webglBuffer.vbos.has(attributeName)){ - vbo = gl.createBuffer(); - - webglBuffer.vbos.set(attributeName, { - handle: vbo, - name: attributeName, - count: bufferAttribute.count, - itemSize: bufferAttribute.itemSize, - type: geometry.attributes.position.array.constructor, - version: bufferAttribute.version - }); - }else { - vbo = webglBuffer.vbos.get(attributeName).handle; - webglBuffer.vbos.get(attributeName).version = bufferAttribute.version; - } - - gl.bindBuffer(gl.ARRAY_BUFFER, vbo); - gl.bufferData(gl.ARRAY_BUFFER, bufferAttribute.array, gl.STATIC_DRAW); - - if(attributeLocations[attributeName] === undefined){ - //attributeLocation = attributeLocations["aExtra"]; - }else { - let attributeLocation = attributeLocations[attributeName].location; - - gl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0); - gl.enableVertexAttribArray(attributeLocation); - } - } - - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.bindVertexArray(null); - } - - traverse(scene) { - - let octrees = []; - - let stack = [scene]; - while (stack.length > 0) { - - let node = stack.pop(); - - if (node instanceof PointCloudTree) { - octrees.push(node); - continue; - } - - let visibleChildren = node.children.filter(c => c.visible); - stack.push(...visibleChildren); - - } - - let result = { - octrees: octrees - }; - - return result; - } - - - - renderNodes(octree, nodes, visibilityTextureData, camera, target, shader, params) { - - if (exports.measureTimings) performance.mark("renderNodes-start"); - - let gl = this.gl; - - let material = params.material ? params.material : octree.material; - let shadowMaps = params.shadowMaps == null ? [] : params.shadowMaps; - let view = camera.matrixWorldInverse; - let worldView = new THREE.Matrix4(); - - let mat4holder = new Float32Array(16); - - let i = 0; - for (let node of nodes) { - - if(exports.debug.allowedNodes !== undefined){ - if(!exports.debug.allowedNodes.includes(node.name)){ - continue; - } - } - - let world = node.sceneNode.matrixWorld; - worldView.multiplyMatrices(view, world); - - if (visibilityTextureData) { - let vnStart = visibilityTextureData.offsets.get(node); - shader.setUniform1f("uVNStart", vnStart); - } - - - let level = node.getLevel(); - - if(node.debug){ - shader.setUniform("uDebug", true); - }else { - shader.setUniform("uDebug", false); - } - - // let isLeaf = false; - // if(node instanceof PointCloudOctreeNode){ - // isLeaf = Object.keys(node.children).length === 0; - // }else if(node instanceof PointCloudArena4DNode){ - // isLeaf = node.geometryNode.isLeaf; - // } - // shader.setUniform("uIsLeafNode", isLeaf); - - // let isLeaf = node.children.filter(n => n != null).length === 0; - // if(!isLeaf){ - // continue; - // } - - - // TODO consider passing matrices in an array to avoid uniformMatrix4fv overhead - const lModel = shader.uniformLocations["modelMatrix"]; - if (lModel) { - mat4holder.set(world.elements); - gl.uniformMatrix4fv(lModel, false, mat4holder); - } - - const lModelView = shader.uniformLocations["modelViewMatrix"]; - //mat4holder.set(worldView.elements); - // faster then set in chrome 63 - for(let j = 0; j < 16; j++){ - mat4holder[j] = worldView.elements[j]; - } - gl.uniformMatrix4fv(lModelView, false, mat4holder); - - { // Clip Polygons - if(material.clipPolygons && material.clipPolygons.length > 0){ - - let clipPolygonVCount = []; - let worldViewProjMatrices = []; - - for(let clipPolygon of material.clipPolygons){ - - let view = clipPolygon.viewMatrix; - let proj = clipPolygon.projMatrix; - - let worldViewProj = proj.clone().multiply(view).multiply(world); - - clipPolygonVCount.push(clipPolygon.markers.length); - worldViewProjMatrices.push(worldViewProj); - } - - let flattenedMatrices = [].concat(...worldViewProjMatrices.map(m => m.elements)); - - let flattenedVertices = new Array(8 * 3 * material.clipPolygons.length); - for(let i = 0; i < material.clipPolygons.length; i++){ - let clipPolygon = material.clipPolygons[i]; - for(let j = 0; j < clipPolygon.markers.length; j++){ - flattenedVertices[i * 24 + (j * 3 + 0)] = clipPolygon.markers[j].position.x; - flattenedVertices[i * 24 + (j * 3 + 1)] = clipPolygon.markers[j].position.y; - flattenedVertices[i * 24 + (j * 3 + 2)] = clipPolygon.markers[j].position.z; - } - } - - const lClipPolygonVCount = shader.uniformLocations["uClipPolygonVCount[0]"]; - gl.uniform1iv(lClipPolygonVCount, clipPolygonVCount); - - const lClipPolygonVP = shader.uniformLocations["uClipPolygonWVP[0]"]; - gl.uniformMatrix4fv(lClipPolygonVP, false, flattenedMatrices); - - const lClipPolygons = shader.uniformLocations["uClipPolygonVertices[0]"]; - gl.uniform3fv(lClipPolygons, flattenedVertices); - - } - } - - - //shader.setUniformMatrix4("modelMatrix", world); - //shader.setUniformMatrix4("modelViewMatrix", worldView); - shader.setUniform1f("uLevel", level); - shader.setUniform1f("uNodeSpacing", node.geometryNode.estimatedSpacing); - - shader.setUniform1f("uPCIndex", i); - // uBBSize - - if (shadowMaps.length > 0) { - - const lShadowMap = shader.uniformLocations["uShadowMap[0]"]; - - shader.setUniform3f("uShadowColor", material.uniforms.uShadowColor.value); - - let bindingStart = 5; - let bindingPoints = new Array(shadowMaps.length).fill(bindingStart).map((a, i) => (a + i)); - gl.uniform1iv(lShadowMap, bindingPoints); - - for (let i = 0; i < shadowMaps.length; i++) { - let shadowMap = shadowMaps[i]; - let bindingPoint = bindingPoints[i]; - let glTexture = this.threeRenderer.properties.get(shadowMap.target.texture).__webglTexture; - - gl.activeTexture(gl[`TEXTURE${bindingPoint}`]); - gl.bindTexture(gl.TEXTURE_2D, glTexture); - } - - { - - let worldViewMatrices = shadowMaps - .map(sm => sm.camera.matrixWorldInverse) - .map(view => new THREE.Matrix4().multiplyMatrices(view, world)); - - let flattenedMatrices = [].concat(...worldViewMatrices.map(c => c.elements)); - const lWorldView = shader.uniformLocations["uShadowWorldView[0]"]; - gl.uniformMatrix4fv(lWorldView, false, flattenedMatrices); - } - - { - let flattenedMatrices = [].concat(...shadowMaps.map(sm => sm.camera.projectionMatrix.elements)); - const lProj = shader.uniformLocations["uShadowProj[0]"]; - gl.uniformMatrix4fv(lProj, false, flattenedMatrices); - } - } - - const geometry = node.geometryNode.geometry; - - if(geometry.attributes["gps-time"]){ - const bufferAttribute = geometry.attributes["gps-time"]; - const attGPS = octree.getAttribute("gps-time"); - - let initialRange = attGPS.initialRange; - let initialRangeSize = initialRange[1] - initialRange[0]; - - let globalRange = attGPS.range; - let globalRangeSize = globalRange[1] - globalRange[0]; - - let scale = initialRangeSize / globalRangeSize; - let offset = -(globalRange[0] - initialRange[0]) / initialRangeSize; - - shader.setUniform1f("uGpsScale", scale); - shader.setUniform1f("uGpsOffset", offset); - //shader.setUniform2f("uFilterGPSTimeClipRange", [-Infinity, Infinity]); - - let uFilterGPSTimeClipRange = material.uniforms.uFilterGPSTimeClipRange.value; - // let gpsCliPRangeMin = uFilterGPSTimeClipRange[0] - // let gpsCliPRangeMax = uFilterGPSTimeClipRange[1] - // shader.setUniform2f("uFilterGPSTimeClipRange", [gpsCliPRangeMin, gpsCliPRangeMax]); - - let normalizedClipRange = [ - (uFilterGPSTimeClipRange[0] - globalRange[0]) / globalRangeSize, - (uFilterGPSTimeClipRange[1] - globalRange[0]) / globalRangeSize, - ]; - - shader.setUniform2f("uFilterGPSTimeClipRange", normalizedClipRange); - - - - // // ranges in full gps coordinate system - // const globalRange = attGPS.range; - // const bufferRange = bufferAttribute.potree.range; - - // // ranges in [0, 1] - // // normalizedGlobalRange = [0, 1] - // // normalizedBufferRange: norm buffer within norm global range e.g. [0.2, 0.8] - // const globalWidth = globalRange[1] - globalRange[0]; - // const normalizedBufferRange = [ - // (bufferRange[0] - globalRange[0]) / globalWidth, - // (bufferRange[1] - globalRange[0]) / globalWidth, - // ]; - - // shader.setUniform2f("uNormalizedGpsBufferRange", normalizedBufferRange); - - // let uFilterGPSTimeClipRange = material.uniforms.uFilterGPSTimeClipRange.value; - // let gpsCliPRangeMin = uFilterGPSTimeClipRange[0] - // let gpsCliPRangeMax = uFilterGPSTimeClipRange[1] - // shader.setUniform2f("uFilterGPSTimeClipRange", [gpsCliPRangeMin, gpsCliPRangeMax]); - - // shader.setUniform1f("uGpsScale", bufferAttribute.potree.scale); - // shader.setUniform1f("uGpsOffset", bufferAttribute.potree.offset); - } - - { - let uFilterReturnNumberRange = material.uniforms.uFilterReturnNumberRange.value; - let uFilterNumberOfReturnsRange = material.uniforms.uFilterNumberOfReturnsRange.value; - let uFilterPointSourceIDClipRange = material.uniforms.uFilterPointSourceIDClipRange.value; - - - - shader.setUniform2f("uFilterReturnNumberRange", uFilterReturnNumberRange); - shader.setUniform2f("uFilterNumberOfReturnsRange", uFilterNumberOfReturnsRange); - shader.setUniform2f("uFilterPointSourceIDClipRange", uFilterPointSourceIDClipRange); - } - - let webglBuffer = null; - if(!this.buffers.has(geometry)){ - webglBuffer = this.createBuffer(geometry); - this.buffers.set(geometry, webglBuffer); - }else { - webglBuffer = this.buffers.get(geometry); - for(let attributeName in geometry.attributes){ - let attribute = geometry.attributes[attributeName]; - - if(attribute.version > webglBuffer.vbos.get(attributeName).version){ - this.updateBuffer(geometry); - } - } - } - - gl.bindVertexArray(webglBuffer.vao); - - let isExtraAttribute = - attributeLocations[material.activeAttributeName] === undefined - && Object.keys(geometry.attributes).includes(material.activeAttributeName); - - if(isExtraAttribute){ - - const attributeLocation = attributeLocations["aExtra"].location; - - for(const attributeName in geometry.attributes){ - const bufferAttribute = geometry.attributes[attributeName]; - const vbo = webglBuffer.vbos.get(attributeName); - - gl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle); - gl.disableVertexAttribArray(attributeLocation); - } - - const attName = material.activeAttributeName; - const bufferAttribute = geometry.attributes[attName]; - const vbo = webglBuffer.vbos.get(attName); - - if(bufferAttribute !== undefined && vbo !== undefined){ - let type = this.glTypeMapping.get(bufferAttribute.array.constructor); - let normalized = bufferAttribute.normalized; - - gl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle); - gl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0); - gl.enableVertexAttribArray(attributeLocation); - } - - - - - { - const attExtra = octree.pcoGeometry.pointAttributes.attributes - .find(a => a.name === attName); - - let range = material.getRange(attName); - if(!range){ - range = attExtra.range; - } - - if(!range){ - range = [0, 1]; - } - - let initialRange = attExtra.initialRange; - let initialRangeSize = initialRange[1] - initialRange[0]; - - let globalRange = range; - let globalRangeSize = globalRange[1] - globalRange[0]; - - let scale = initialRangeSize / globalRangeSize; - let offset = -(globalRange[0] - initialRange[0]) / initialRangeSize; - - shader.setUniform1f("uExtraScale", scale); - shader.setUniform1f("uExtraOffset", offset); - } - - }else { - - for(const attributeName in geometry.attributes){ - const bufferAttribute = geometry.attributes[attributeName]; - const vbo = webglBuffer.vbos.get(attributeName); - - - if(attributeLocations[attributeName] !== undefined){ - const attributeLocation = attributeLocations[attributeName].location; - - let type = this.glTypeMapping.get(bufferAttribute.array.constructor); - let normalized = bufferAttribute.normalized; - - gl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle); - gl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0); - gl.enableVertexAttribArray(attributeLocation); - - } - } - } - - let numPoints = webglBuffer.numElements; - gl.drawArrays(gl.POINTS, 0, numPoints); - - i++; - } - - gl.bindVertexArray(null); - - if (exports.measureTimings) { - performance.mark("renderNodes-end"); - performance.measure("render.renderNodes", "renderNodes-start", "renderNodes-end"); - } - } - - renderOctree(octree, nodes, camera, target, params = {}){ - - let gl = this.gl; - - let material = params.material ? params.material : octree.material; - let shadowMaps = params.shadowMaps == null ? [] : params.shadowMaps; - let view = camera.matrixWorldInverse; - let viewInv = camera.matrixWorld; - let proj = camera.projectionMatrix; - let projInv = new THREE.Matrix4().getInverse(proj); - let worldView = new THREE.Matrix4(); - - let shader = null; - let visibilityTextureData = null; - - let currentTextureBindingPoint = 0; - - if (material.pointSizeType >= 0) { - if (material.pointSizeType === PointSizeType.ADAPTIVE || - material.activeAttributeName === "level of detail") { - - let vnNodes = (params.vnTextureNodes != null) ? params.vnTextureNodes : nodes; - visibilityTextureData = octree.computeVisibilityTextureData(vnNodes, camera); - - const vnt = material.visibleNodesTexture; - const data = vnt.image.data; - data.set(visibilityTextureData.data); - vnt.needsUpdate = true; - - } - } - - { // UPDATE SHADER AND TEXTURES - if (!this.shaders.has(material)) { - let [vs, fs] = [material.vertexShader, material.fragmentShader]; - let shader = new Shader(gl, "pointcloud", vs, fs); - - this.shaders.set(material, shader); - } - - shader = this.shaders.get(material); - - //if(material.needsUpdate){ - { - let [vs, fs] = [material.vertexShader, material.fragmentShader]; - - let numSnapshots = material.snapEnabled ? material.numSnapshots : 0; - let numClipBoxes = (material.clipBoxes && material.clipBoxes.length) ? material.clipBoxes.length : 0; - let numClipSpheres = (params.clipSpheres && params.clipSpheres.length) ? params.clipSpheres.length : 0; - let numClipPolygons = (material.clipPolygons && material.clipPolygons.length) ? material.clipPolygons.length : 0; - - let defines = [ - `#define num_shadowmaps ${shadowMaps.length}`, - `#define num_snapshots ${numSnapshots}`, - `#define num_clipboxes ${numClipBoxes}`, - `#define num_clipspheres ${numClipSpheres}`, - `#define num_clippolygons ${numClipPolygons}`, - ]; - - - if(octree.pcoGeometry.root.isLoaded()){ - let attributes = octree.pcoGeometry.root.geometry.attributes; - - if(attributes["gps-time"]){ - defines.push("#define clip_gps_enabled"); - } - - if(attributes["return number"]){ - defines.push("#define clip_return_number_enabled"); - } - - if(attributes["number of returns"]){ - defines.push("#define clip_number_of_returns_enabled"); - } - - if(attributes["source id"] || attributes["point source id"]){ - defines.push("#define clip_point_source_id_enabled"); - } - - } - - let definesString = defines.join("\n"); - - let vsVersionIndex = vs.indexOf("#version "); - let fsVersionIndex = fs.indexOf("#version "); - - if(vsVersionIndex >= 0){ - vs = vs.replace(/(#version .*)/, `$1\n${definesString}`); - }else { - vs = `${definesString}\n${vs}`; - } - - if(fsVersionIndex >= 0){ - fs = fs.replace(/(#version .*)/, `$1\n${definesString}`); - }else { - fs = `${definesString}\n${fs}`; - } - - - shader.update(vs, fs); - - material.needsUpdate = false; - } - - for (let uniformName of Object.keys(material.uniforms)) { - let uniform = material.uniforms[uniformName]; - - if (uniform.type == "t") { - - let texture = uniform.value; - - if (!texture) { - continue; - } - - if (!this.textures.has(texture)) { - let webglTexture = new WebGLTexture(gl, texture); - - this.textures.set(texture, webglTexture); - } - - let webGLTexture = this.textures.get(texture); - webGLTexture.update(); - - - } - } - } - - gl.useProgram(shader.program); - - let transparent = false; - if(params.transparent !== undefined){ - transparent = params.transparent && material.opacity < 1; - }else { - transparent = material.opacity < 1; - } - - if (transparent){ - gl.enable(gl.BLEND); - gl.blendFunc(gl.SRC_ALPHA, gl.ONE); - gl.depthMask(false); - gl.disable(gl.DEPTH_TEST); - } else { - gl.disable(gl.BLEND); - gl.depthMask(true); - gl.enable(gl.DEPTH_TEST); - } - - if(params.blendFunc !== undefined){ - gl.enable(gl.BLEND); - gl.blendFunc(...params.blendFunc); - } - - if(params.depthTest !== undefined){ - if(params.depthTest === true){ - gl.enable(gl.DEPTH_TEST); - }else { - gl.disable(gl.DEPTH_TEST); - } - } - - if(params.depthWrite !== undefined){ - if(params.depthWrite === true){ - gl.depthMask(true); - }else { - gl.depthMask(false); - } - - } - - - { // UPDATE UNIFORMS - shader.setUniformMatrix4("projectionMatrix", proj); - shader.setUniformMatrix4("viewMatrix", view); - shader.setUniformMatrix4("uViewInv", viewInv); - shader.setUniformMatrix4("uProjInv", projInv); - - let screenWidth = target ? target.width : material.screenWidth; - let screenHeight = target ? target.height : material.screenHeight; - - shader.setUniform1f("uScreenWidth", screenWidth); - shader.setUniform1f("uScreenHeight", screenHeight); - shader.setUniform1f("fov", Math.PI * camera.fov / 180); - shader.setUniform1f("near", camera.near); - shader.setUniform1f("far", camera.far); - - if(camera instanceof THREE.OrthographicCamera){ - shader.setUniform("uUseOrthographicCamera", true); - shader.setUniform("uOrthoWidth", camera.right - camera.left); - shader.setUniform("uOrthoHeight", camera.top - camera.bottom); - }else { - shader.setUniform("uUseOrthographicCamera", false); - } - - if(material.clipBoxes.length + material.clipPolygons.length === 0){ - shader.setUniform1i("clipTask", ClipTask.NONE); - }else { - shader.setUniform1i("clipTask", material.clipTask); - } - - shader.setUniform1i("clipMethod", material.clipMethod); - - if (material.clipBoxes && material.clipBoxes.length > 0) { - //let flattenedMatrices = [].concat(...material.clipBoxes.map(c => c.inverse.elements)); - - //const lClipBoxes = shader.uniformLocations["clipBoxes[0]"]; - //gl.uniformMatrix4fv(lClipBoxes, false, flattenedMatrices); - - const lClipBoxes = shader.uniformLocations["clipBoxes[0]"]; - gl.uniformMatrix4fv(lClipBoxes, false, material.uniforms.clipBoxes.value); - } - - // TODO CLIPSPHERES - if(params.clipSpheres && params.clipSpheres.length > 0){ - - let clipSpheres = params.clipSpheres; - - let matrices = []; - for(let clipSphere of clipSpheres){ - //let mScale = new THREE.Matrix4().makeScale(...clipSphere.scale.toArray()); - //let mTranslate = new THREE.Matrix4().makeTranslation(...clipSphere.position.toArray()); - - //let clipToWorld = new THREE.Matrix4().multiplyMatrices(mTranslate, mScale); - let clipToWorld = clipSphere.matrixWorld; - let viewToWorld = camera.matrixWorld; - let worldToClip = new THREE.Matrix4().getInverse(clipToWorld); - - let viewToClip = new THREE.Matrix4().multiplyMatrices(worldToClip, viewToWorld); - - matrices.push(viewToClip); - } - - let flattenedMatrices = [].concat(...matrices.map(matrix => matrix.elements)); - - const lClipSpheres = shader.uniformLocations["uClipSpheres[0]"]; - gl.uniformMatrix4fv(lClipSpheres, false, flattenedMatrices); - - //const lClipSpheres = shader.uniformLocations["uClipSpheres[0]"]; - //gl.uniformMatrix4fv(lClipSpheres, false, material.uniforms.clipSpheres.value); - } - - - shader.setUniform1f("size", material.size); - shader.setUniform1f("maxSize", material.uniforms.maxSize.value); - shader.setUniform1f("minSize", material.uniforms.minSize.value); - - - // uniform float uPCIndex - shader.setUniform1f("uOctreeSpacing", material.spacing); - shader.setUniform("uOctreeSize", material.uniforms.octreeSize.value); - - - //uniform vec3 uColor; - shader.setUniform3f("uColor", material.color.toArray()); - //uniform float opacity; - shader.setUniform1f("uOpacity", material.opacity); - - shader.setUniform2f("elevationRange", material.elevationRange); - shader.setUniform2f("intensityRange", material.intensityRange); - - - shader.setUniform3f("uIntensity_gbc", [ - material.intensityGamma, - material.intensityBrightness, - material.intensityContrast - ]); - - shader.setUniform3f("uRGB_gbc", [ - material.rgbGamma, - material.rgbBrightness, - material.rgbContrast - ]); - - shader.setUniform1f("uTransition", material.transition); - shader.setUniform1f("wRGB", material.weightRGB); - shader.setUniform1f("wIntensity", material.weightIntensity); - shader.setUniform1f("wElevation", material.weightElevation); - shader.setUniform1f("wClassification", material.weightClassification); - shader.setUniform1f("wReturnNumber", material.weightReturnNumber); - shader.setUniform1f("wSourceID", material.weightSourceID); - - shader.setUniform("backfaceCulling", material.uniforms.backfaceCulling.value); - - let vnWebGLTexture = this.textures.get(material.visibleNodesTexture); - if(vnWebGLTexture){ - shader.setUniform1i("visibleNodesTexture", currentTextureBindingPoint); - gl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint); - gl.bindTexture(vnWebGLTexture.target, vnWebGLTexture.id); - currentTextureBindingPoint++; - } - - let gradientTexture = this.textures.get(material.gradientTexture); - shader.setUniform1i("gradient", currentTextureBindingPoint); - gl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint); - gl.bindTexture(gradientTexture.target, gradientTexture.id); - - const repeat = material.elevationGradientRepeat; - if(repeat === ElevationGradientRepeat.REPEAT){ - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.REPEAT); - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.REPEAT); - }else if(repeat === ElevationGradientRepeat.MIRRORED_REPEAT){ - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.MIRRORED_REPEAT); - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.MIRRORED_REPEAT); - }else { - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - } - currentTextureBindingPoint++; - - let classificationTexture = this.textures.get(material.classificationTexture); - shader.setUniform1i("classificationLUT", currentTextureBindingPoint); - gl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint); - gl.bindTexture(classificationTexture.target, classificationTexture.id); - currentTextureBindingPoint++; - - let matcapTexture = this.textures.get(material.matcapTexture); - shader.setUniform1i("matcapTextureUniform", currentTextureBindingPoint); - gl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint); - gl.bindTexture(matcapTexture.target, matcapTexture.id); - currentTextureBindingPoint++; - - - if (material.snapEnabled === true) { - - { - const lSnapshot = shader.uniformLocations["uSnapshot[0]"]; - const lSnapshotDepth = shader.uniformLocations["uSnapshotDepth[0]"]; - - let bindingStart = currentTextureBindingPoint; - let lSnapshotBindingPoints = new Array(5).fill(bindingStart).map((a, i) => (a + i)); - let lSnapshotDepthBindingPoints = new Array(5) - .fill(1 + Math.max(...lSnapshotBindingPoints)) - .map((a, i) => (a + i)); - currentTextureBindingPoint = 1 + Math.max(...lSnapshotDepthBindingPoints); - - gl.uniform1iv(lSnapshot, lSnapshotBindingPoints); - gl.uniform1iv(lSnapshotDepth, lSnapshotDepthBindingPoints); - - for (let i = 0; i < 5; i++) { - let texture = material.uniforms[`uSnapshot`].value[i]; - let textureDepth = material.uniforms[`uSnapshotDepth`].value[i]; - - if (!texture) { - break; - } - - let snapTexture = this.threeRenderer.properties.get(texture).__webglTexture; - let snapTextureDepth = this.threeRenderer.properties.get(textureDepth).__webglTexture; - - let bindingPoint = lSnapshotBindingPoints[i]; - let depthBindingPoint = lSnapshotDepthBindingPoints[i]; - - gl.activeTexture(gl[`TEXTURE${bindingPoint}`]); - gl.bindTexture(gl.TEXTURE_2D, snapTexture); - - gl.activeTexture(gl[`TEXTURE${depthBindingPoint}`]); - gl.bindTexture(gl.TEXTURE_2D, snapTextureDepth); - } - } - - { - let flattenedMatrices = [].concat(...material.uniforms.uSnapView.value.map(c => c.elements)); - const lSnapView = shader.uniformLocations["uSnapView[0]"]; - gl.uniformMatrix4fv(lSnapView, false, flattenedMatrices); - } - { - let flattenedMatrices = [].concat(...material.uniforms.uSnapProj.value.map(c => c.elements)); - const lSnapProj = shader.uniformLocations["uSnapProj[0]"]; - gl.uniformMatrix4fv(lSnapProj, false, flattenedMatrices); - } - { - let flattenedMatrices = [].concat(...material.uniforms.uSnapProjInv.value.map(c => c.elements)); - const lSnapProjInv = shader.uniformLocations["uSnapProjInv[0]"]; - gl.uniformMatrix4fv(lSnapProjInv, false, flattenedMatrices); - } - { - let flattenedMatrices = [].concat(...material.uniforms.uSnapViewInv.value.map(c => c.elements)); - const lSnapViewInv = shader.uniformLocations["uSnapViewInv[0]"]; - gl.uniformMatrix4fv(lSnapViewInv, false, flattenedMatrices); - } - - } - } - - this.renderNodes(octree, nodes, visibilityTextureData, camera, target, shader, params); - - gl.activeTexture(gl.TEXTURE2); - gl.bindTexture(gl.TEXTURE_2D, null); - gl.activeTexture(gl.TEXTURE0); - } - - render(scene, camera, target = null, params = {}) { - - const gl = this.gl; - - // PREPARE - if (target != null) { - this.threeRenderer.setRenderTarget(target); - } - - camera.updateProjectionMatrix(); - - const traversalResult = this.traverse(scene); - - - // RENDER - for (const octree of traversalResult.octrees) { - let nodes = octree.visibleNodes; - this.renderOctree(octree, nodes, camera, target, params); - } - - - // CLEANUP - gl.activeTexture(gl.TEXTURE1); - gl.bindTexture(gl.TEXTURE_2D, null); - - this.threeRenderer.state.reset(); - } - - - - }; - - class ProfileData { - constructor (profile) { - this.profile = profile; - - this.segments = []; - this.boundingBox = new THREE.Box3(); - - for (let i = 0; i < profile.points.length - 1; i++) { - let start = profile.points[i]; - let end = profile.points[i + 1]; - - let startGround = new THREE.Vector3(start.x, start.y, 0); - let endGround = new THREE.Vector3(end.x, end.y, 0); - - let center = new THREE.Vector3().addVectors(endGround, startGround).multiplyScalar(0.5); - let length = startGround.distanceTo(endGround); - let side = new THREE.Vector3().subVectors(endGround, startGround).normalize(); - let up = new THREE.Vector3(0, 0, 1); - let forward = new THREE.Vector3().crossVectors(side, up).normalize(); - let N = forward; - let cutPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(N, startGround); - let halfPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(side, center); - - let segment = { - start: start, - end: end, - cutPlane: cutPlane, - halfPlane: halfPlane, - length: length, - points: new Points() - }; - - this.segments.push(segment); - } - } - - size () { - let size = 0; - for (let segment of this.segments) { - size += segment.points.numPoints; - } - - return size; - } - }; - - class ProfileRequest { - constructor (pointcloud, profile, maxDepth, callback) { - this.pointcloud = pointcloud; - this.profile = profile; - this.maxDepth = maxDepth || Number.MAX_VALUE; - this.callback = callback; - this.temporaryResult = new ProfileData(this.profile); - this.pointsServed = 0; - this.highestLevelServed = 0; - - this.priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; }); - - this.initialize(); - } - - initialize () { - this.priorityQueue.push({node: this.pointcloud.pcoGeometry.root, weight: Infinity}); - }; - - // traverse the node and add intersecting descendants to queue - traverse (node) { - let stack = []; - for (let i = 0; i < 8; i++) { - let child = node.children[i]; - if (child && this.pointcloud.nodeIntersectsProfile(child, this.profile)) { - stack.push(child); - } - } - - while (stack.length > 0) { - let node = stack.pop(); - let weight = node.boundingSphere.radius; - - this.priorityQueue.push({node: node, weight: weight}); - - // add children that intersect the cutting plane - if (node.level < this.maxDepth) { - for (let i = 0; i < 8; i++) { - let child = node.children[i]; - if (child && this.pointcloud.nodeIntersectsProfile(child, this.profile)) { - stack.push(child); - } - } - } - } - } - - update(){ - if(!this.updateGeneratorInstance){ - this.updateGeneratorInstance = this.updateGenerator(); - } - - let result = this.updateGeneratorInstance.next(); - if(result.done){ - this.updateGeneratorInstance = null; - } - } - - * updateGenerator(){ - // load nodes in queue - // if hierarchy expands, also load nodes from expanded hierarchy - // once loaded, add data to this.points and remove node from queue - // only evaluate 1-50 nodes per frame to maintain responsiveness - - let start = performance.now(); - - let maxNodesPerUpdate = 1; - let intersectedNodes = []; - - for (let i = 0; i < Math.min(maxNodesPerUpdate, this.priorityQueue.size()); i++) { - let element = this.priorityQueue.pop(); - let node = element.node; - - if(node.level > this.maxDepth){ - continue; - } - - if (node.loaded) { - // add points to result - intersectedNodes.push(node); - exports.lru.touch(node); - this.highestLevelServed = Math.max(node.getLevel(), this.highestLevelServed); - - var geom = node.pcoGeometry; - var hierarchyStepSize = geom ? geom.hierarchyStepSize : 1; - - var doTraverse = node.getLevel() === 0 || - (node.level % hierarchyStepSize === 0 && node.hasChildren); - - if (doTraverse) { - this.traverse(node); - } - } else { - node.load(); - this.priorityQueue.push(element); - } - } - - if (intersectedNodes.length > 0) { - - for(let done of this.getPointsInsideProfile(intersectedNodes, this.temporaryResult)){ - if(!done){ - //console.log("updateGenerator yields"); - yield false; - } - } - if (this.temporaryResult.size() > 100) { - this.pointsServed += this.temporaryResult.size(); - this.callback.onProgress({request: this, points: this.temporaryResult}); - this.temporaryResult = new ProfileData(this.profile); - } - } - - if (this.priorityQueue.size() === 0) { - // we're done! inform callback and remove from pending requests - - if (this.temporaryResult.size() > 0) { - this.pointsServed += this.temporaryResult.size(); - this.callback.onProgress({request: this, points: this.temporaryResult}); - this.temporaryResult = new ProfileData(this.profile); - } - - this.callback.onFinish({request: this}); - - let index = this.pointcloud.profileRequests.indexOf(this); - if (index >= 0) { - this.pointcloud.profileRequests.splice(index, 1); - } - } - - yield true; - }; - - * getAccepted(numPoints, node, matrix, segment, segmentDir, points, totalMileage){ - let checkpoint = performance.now(); - - let accepted = new Uint32Array(numPoints); - let mileage = new Float64Array(numPoints); - let acceptedPositions = new Float32Array(numPoints * 3); - let numAccepted = 0; - - let pos = new THREE.Vector3(); - let svp = new THREE.Vector3(); - - let view = new Float32Array(node.geometry.attributes.position.array); - - for (let i = 0; i < numPoints; i++) { - - pos.set( - view[i * 3 + 0], - view[i * 3 + 1], - view[i * 3 + 2]); - - pos.applyMatrix4(matrix); - let distance = Math.abs(segment.cutPlane.distanceToPoint(pos)); - let centerDistance = Math.abs(segment.halfPlane.distanceToPoint(pos)); - - if (distance < this.profile.width / 2 && centerDistance < segment.length / 2) { - svp.subVectors(pos, segment.start); - let localMileage = segmentDir.dot(svp); - - accepted[numAccepted] = i; - mileage[numAccepted] = localMileage + totalMileage; - points.boundingBox.expandByPoint(pos); - - pos.sub(this.pointcloud.position); - - acceptedPositions[3 * numAccepted + 0] = pos.x; - acceptedPositions[3 * numAccepted + 1] = pos.y; - acceptedPositions[3 * numAccepted + 2] = pos.z; - - numAccepted++; - } - - if((i % 1000) === 0){ - let duration = performance.now() - checkpoint; - if(duration > 4){ - //console.log(`getAccepted yield after ${duration}ms`); - yield false; - checkpoint = performance.now(); - } - } - } - - accepted = accepted.subarray(0, numAccepted); - mileage = mileage.subarray(0, numAccepted); - acceptedPositions = acceptedPositions.subarray(0, numAccepted * 3); - - //let end = performance.now(); - //let duration = end - start; - //console.log("accepted duration ", duration) - - //console.log(`getAccepted finished`); - - yield [accepted, mileage, acceptedPositions]; - } - - * getPointsInsideProfile(nodes, target){ - let checkpoint = performance.now(); - let totalMileage = 0; - - let pointsProcessed = 0; - - for (let segment of target.segments) { - for (let node of nodes) { - let numPoints = node.numPoints; - let geometry = node.geometry; - - if(!numPoints){ - continue; - } - - { // skip if current node doesn't intersect current segment - let bbWorld = node.boundingBox.clone().applyMatrix4(this.pointcloud.matrixWorld); - let bsWorld = bbWorld.getBoundingSphere(new THREE.Sphere()); - - let start = new THREE.Vector3(segment.start.x, segment.start.y, bsWorld.center.z); - let end = new THREE.Vector3(segment.end.x, segment.end.y, bsWorld.center.z); - - let closest = new THREE.Line3(start, end).closestPointToPoint(bsWorld.center, true, new THREE.Vector3()); - let distance = closest.distanceTo(bsWorld.center); - - let intersects = (distance < (bsWorld.radius + target.profile.width)); - - if(!intersects){ - continue; - } - } - - //{// DEBUG - // console.log(node.name); - // let boxHelper = new Potree.Box3Helper(node.getBoundingBox()); - // boxHelper.matrixAutoUpdate = false; - // boxHelper.matrix.copy(viewer.scene.pointclouds[0].matrixWorld); - // viewer.scene.scene.add(boxHelper); - //} - - let sv = new THREE.Vector3().subVectors(segment.end, segment.start).setZ(0); - let segmentDir = sv.clone().normalize(); - - let points = new Points(); - - let nodeMatrix = new THREE.Matrix4().makeTranslation(...node.boundingBox.min.toArray()); - - let matrix = new THREE.Matrix4().multiplyMatrices( - this.pointcloud.matrixWorld, nodeMatrix); - - pointsProcessed = pointsProcessed + numPoints; - - let accepted = null; - let mileage = null; - let acceptedPositions = null; - for(let result of this.getAccepted(numPoints, node, matrix, segment, segmentDir, points,totalMileage)){ - if(!result){ - let duration = performance.now() - checkpoint; - //console.log(`getPointsInsideProfile yield after ${duration}ms`); - yield false; - checkpoint = performance.now(); - }else { - [accepted, mileage, acceptedPositions] = result; - } - } - - let duration = performance.now() - checkpoint; - if(duration > 4){ - //console.log(`getPointsInsideProfile yield after ${duration}ms`); - yield false; - checkpoint = performance.now(); - } - - points.data.position = acceptedPositions; - - let relevantAttributes = Object.keys(geometry.attributes).filter(a => !["position", "indices"].includes(a)); - for(let attributeName of relevantAttributes){ - - let attribute = geometry.attributes[attributeName]; - let numElements = attribute.array.length / numPoints; - - if(numElements !== parseInt(numElements)){ - debugger; - } - - let Type = attribute.array.constructor; - - let filteredBuffer = new Type(numElements * accepted.length); - - let source = attribute.array; - let target = filteredBuffer; - - for(let i = 0; i < accepted.length; i++){ - - let index = accepted[i]; - - let start = index * numElements; - let end = start + numElements; - let sub = source.subarray(start, end); - - target.set(sub, i * numElements); - } - - points.data[attributeName] = filteredBuffer; - } - - points.data['mileage'] = mileage; - points.numPoints = accepted.length; - - segment.points.add(points); - } - - totalMileage += segment.length; - } - - for (let segment of target.segments) { - target.boundingBox.union(segment.points.boundingBox); - } - - //console.log(`getPointsInsideProfile finished`); - yield true; - }; - - finishLevelThenCancel () { - if (this.cancelRequested) { - return; - } - - this.maxDepth = this.highestLevelServed; - this.cancelRequested = true; - - //console.log(`maxDepth: ${this.maxDepth}`); - }; - - cancel () { - this.callback.onCancel(); - - this.priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; }); - - let index = this.pointcloud.profileRequests.indexOf(this); - if (index >= 0) { - this.pointcloud.profileRequests.splice(index, 1); - } - }; - } - - class Version{ - - constructor(version){ - this.version = version; - let vmLength = (version.indexOf('.') === -1) ? version.length : version.indexOf('.'); - this.versionMajor = parseInt(version.substr(0, vmLength)); - this.versionMinor = parseInt(version.substr(vmLength + 1)); - if (this.versionMinor.length === 0) { - this.versionMinor = 0; - } - } - - newerThan(version){ - let v = new Version(version); - - if (this.versionMajor > v.versionMajor) { - return true; - } else if (this.versionMajor === v.versionMajor && this.versionMinor > v.versionMinor) { - return true; - } else { - return false; - } - } - - equalOrHigher(version){ - let v = new Version(version); - - if (this.versionMajor > v.versionMajor) { - return true; - } else if (this.versionMajor === v.versionMajor && this.versionMinor >= v.versionMinor) { - return true; - } else { - return false; - } - } - - upTo(version){ - return !this.newerThan(version); - } - - } - - class WorkerPool{ - constructor(){ - this.workers = {}; - } - - getWorker(url){ - if (!this.workers[url]){ - this.workers[url] = []; - } - - if (this.workers[url].length === 0){ - let worker = new Worker(url); - this.workers[url].push(worker); - } - - let worker = this.workers[url].pop(); - - return worker; - } - - returnWorker(url, worker){ - this.workers[url].push(worker); - } - }; - - //Potree.workerPool = new Potree.WorkerPool(); - - function createPointcloudData(pointcloud) { - - let material = pointcloud.material; - - let ranges = []; - - for(let [name, value] of material.ranges){ - ranges.push({ - name: name, - value: value, - }); - } - - if(typeof material.elevationRange[0] === "number"){ - ranges.push({ - name: "elevationRange", - value: material.elevationRange, - }); - } - if(typeof material.intensityRange[0] === "number"){ - ranges.push({ - name: "intensityRange", - value: material.intensityRange, - }); - } - - let pointSizeTypeName = Object.entries(Potree.PointSizeType).find(e => e[1] === material.pointSizeType)[0]; - - let jsonMaterial = { - activeAttributeName: material.activeAttributeName, - ranges: ranges, - size: material.size, - minSize: material.minSize, - pointSizeType: pointSizeTypeName, - matcap: material.matcap, - }; - - const pcdata = { - name: pointcloud.name, - url: pointcloud.pcoGeometry.url, - position: pointcloud.position.toArray(), - rotation: pointcloud.rotation.toArray(), - scale: pointcloud.scale.toArray(), - material: jsonMaterial, - }; - - return pcdata; - } - - function createProfileData(profile){ - const data = { - uuid: profile.uuid, - name: profile.name, - points: profile.points.map(p => p.toArray()), - height: profile.height, - width: profile.width, - }; - - return data; - } - - function createVolumeData(volume){ - const data = { - uuid: volume.uuid, - type: volume.constructor.name, - name: volume.name, - position: volume.position.toArray(), - rotation: volume.rotation.toArray(), - scale: volume.scale.toArray(), - visible: volume.visible, - clip: volume.clip, - }; - - return data; - } - - function createCameraAnimationData(animation){ - - const controlPoints = animation.controlPoints.map( cp => { - const cpdata = { - position: cp.position.toArray(), - target: cp.target.toArray(), - }; - - return cpdata; - }); - - const data = { - uuid: animation.uuid, - name: animation.name, - duration: animation.duration, - t: animation.t, - curveType: animation.curveType, - visible: animation.visible, - controlPoints: controlPoints, - }; - - return data; - } - - function createMeasurementData(measurement){ - - const data = { - uuid: measurement.uuid, - name: measurement.name, - points: measurement.points.map(p => p.position.toArray()), - showDistances: measurement.showDistances, - showCoordinates: measurement.showCoordinates, - showArea: measurement.showArea, - closed: measurement.closed, - showAngles: measurement.showAngles, - showHeight: measurement.showHeight, - showCircle: measurement.showCircle, - showAzimuth: measurement.showAzimuth, - showEdges: measurement.showEdges, - color: measurement.color.toArray(), - }; - - return data; - } - - function createOrientedImagesData(images){ - const data = { - cameraParamsPath: images.cameraParamsPath, - imageParamsPath: images.imageParamsPath, - }; - - return data; - } - - function createGeopackageData(geopackage){ - const data = { - path: geopackage.path, - }; - - return data; - } - - function createAnnotationData(annotation){ - - const data = { - uuid: annotation.uuid, - title: annotation.title.toString(), - description: annotation.description, - position: annotation.position.toArray(), - offset: annotation.offset.toArray(), - children: [], - }; - - if(annotation.cameraPosition){ - data.cameraPosition = annotation.cameraPosition.toArray(); - } - - if(annotation.cameraTarget){ - data.cameraTarget = annotation.cameraTarget.toArray(); - } - - if(typeof annotation.radius !== "undefined"){ - data.radius = annotation.radius; - } - - return data; - } - - function createAnnotationsData(viewer){ - - const map = new Map(); - - viewer.scene.annotations.traverseDescendants(a => { - const aData = createAnnotationData(a); - - map.set(a, aData); - }); - - for(const [annotation, data] of map){ - for(const child of annotation.children){ - const childData = map.get(child); - data.children.push(childData); - } - } - - const annotations = viewer.scene.annotations.children.map(a => map.get(a)); - - return annotations; - } - - function createSettingsData(viewer){ - return { - pointBudget: viewer.getPointBudget(), - fov: viewer.getFOV(), - edlEnabled: viewer.getEDLEnabled(), - edlRadius: viewer.getEDLRadius(), - edlStrength: viewer.getEDLStrength(), - background: viewer.getBackground(), - minNodeSize: viewer.getMinNodeSize(), - showBoundingBoxes: viewer.getShowBoundingBox(), - }; - } - - function createSceneContentData(viewer){ - - const data = []; - - const potreeObjects = []; - - viewer.scene.scene.traverse(node => { - if(node.potree){ - potreeObjects.push(node); - } - }); - - for(const object of potreeObjects){ - - if(object.potree.file){ - const saveObject = { - file: object.potree.file, - }; - - data.push(saveObject); - } - - - } - - - return data; - } - - function createViewData(viewer){ - const view = viewer.scene.view; - - const data = { - position: view.position.toArray(), - target: view.getPivot().toArray(), - }; - - return data; - } - - function createClassificationData(viewer){ - const classifications = viewer.classifications; - - const data = classifications; - - return data; - } - - function saveProject(viewer) { - - const scene = viewer.scene; - - const data = { - type: "Potree", - version: 1.7, - settings: createSettingsData(viewer), - view: createViewData(viewer), - classification: createClassificationData(viewer), - pointclouds: scene.pointclouds.map(createPointcloudData), - measurements: scene.measurements.map(createMeasurementData), - volumes: scene.volumes.map(createVolumeData), - cameraAnimations: scene.cameraAnimations.map(createCameraAnimationData), - profiles: scene.profiles.map(createProfileData), - annotations: createAnnotationsData(viewer), - orientedImages: scene.orientedImages.map(createOrientedImagesData), - geopackages: scene.geopackages.map(createGeopackageData), - // objects: createSceneContentData(viewer), - }; - - return data; - } - - class ControlPoint{ - - constructor(){ - this.position = new THREE.Vector3(0, 0, 0); - this.target = new THREE.Vector3(0, 0, 0); - this.positionHandle = null; - this.targetHandle = null; - } - - }; - - - - class CameraAnimation extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - - this.selectedElement = null; - - this.controlPoints = []; - - this.uuid = THREE.Math.generateUUID(); - - this.node = new THREE.Object3D(); - this.node.name = "camera animation"; - this.viewer.scene.scene.add(this.node); - - this.frustum = this.createFrustum(); - this.node.add(this.frustum); - - this.name = "Camera Animation"; - this.duration = 5; - this.t = 0; - // "centripetal", "chordal", "catmullrom" - this.curveType = "centripetal"; - this.visible = true; - - this.createUpdateHook(); - this.createPath(); - } - - static defaultFromView(viewer){ - const animation = new CameraAnimation(viewer); - - const camera = viewer.scene.getActiveCamera(); - const target = viewer.scene.view.getPivot(); - - const cpCenter = new THREE.Vector3( - 0.3 * camera.position.x + 0.7 * target.x, - 0.3 * camera.position.y + 0.7 * target.y, - 0.3 * camera.position.z + 0.7 * target.z, - ); - - const targetCenter = new THREE.Vector3( - 0.05 * camera.position.x + 0.95 * target.x, - 0.05 * camera.position.y + 0.95 * target.y, - 0.05 * camera.position.z + 0.95 * target.z, - ); - - const r = camera.position.distanceTo(target) * 0.3; - - //const dir = target.clone().sub(camera.position).normalize(); - const angle = Utils.computeAzimuth(camera.position, target); - - const n = 5; - for(let i = 0; i < n; i++){ - let u = 1.5 * Math.PI * (i / n) + angle; - - const dx = r * Math.cos(u); - const dy = r * Math.sin(u); - - const cpPos = [ - cpCenter.x + dx, - cpCenter.y + dy, - cpCenter.z, - ]; - - const targetPos = [ - targetCenter.x + dx * 0.1, - targetCenter.y + dy * 0.1, - targetCenter.z, - ]; - - const cp = animation.createControlPoint(); - cp.position.set(...cpPos); - cp.target.set(...targetPos); - } - - return animation; - } - - createUpdateHook(){ - const viewer = this.viewer; - - viewer.addEventListener("update", () => { - - const camera = viewer.scene.getActiveCamera(); - const {width, height} = viewer.renderer.getSize(new THREE.Vector2()); - - this.node.visible = this.visible; - - for(const cp of this.controlPoints){ - - { // position - const projected = cp.position.clone().project(camera); - - const visible = this.visible && (projected.z < 1 && projected.z > -1); - - if(visible){ - const x = width * (projected.x * 0.5 + 0.5); - const y = height - height * (projected.y * 0.5 + 0.5); - - cp.positionHandle.svg.style.left = x - cp.positionHandle.svg.clientWidth / 2; - cp.positionHandle.svg.style.top = y - cp.positionHandle.svg.clientHeight / 2; - cp.positionHandle.svg.style.display = ""; - }else { - cp.positionHandle.svg.style.display = "none"; - } - } - - { // target - const projected = cp.target.clone().project(camera); - - const visible = this.visible && (projected.z < 1 && projected.z > -1); - - if(visible){ - const x = width * (projected.x * 0.5 + 0.5); - const y = height - height * (projected.y * 0.5 + 0.5); - - cp.targetHandle.svg.style.left = x - cp.targetHandle.svg.clientWidth / 2; - cp.targetHandle.svg.style.top = y - cp.targetHandle.svg.clientHeight / 2; - cp.targetHandle.svg.style.display = ""; - }else { - cp.targetHandle.svg.style.display = "none"; - } - } - - } - - this.line.material.resolution.set(width, height); - - this.updatePath(); - - { // frustum - const frame = this.at(this.t); - const frustum = this.frustum; - - frustum.position.copy(frame.position); - frustum.lookAt(...frame.target.toArray()); - frustum.scale.set(20, 20, 20); - - frustum.material.resolution.set(width, height); - } - - }); - } - - createControlPoint(index){ - - if(index === undefined){ - index = this.controlPoints.length; - } - - const cp = new ControlPoint(); - - - if(this.controlPoints.length >= 2 && index === 0){ - const cp1 = this.controlPoints[0]; - const cp2 = this.controlPoints[1]; - - const dir = cp1.position.clone().sub(cp2.position).multiplyScalar(0.5); - cp.position.copy(cp1.position).add(dir); - - const tDir = cp1.target.clone().sub(cp2.target).multiplyScalar(0.5); - cp.target.copy(cp1.target).add(tDir); - }else if(this.controlPoints.length >= 2 && index === this.controlPoints.length){ - const cp1 = this.controlPoints[this.controlPoints.length - 2]; - const cp2 = this.controlPoints[this.controlPoints.length - 1]; - - const dir = cp2.position.clone().sub(cp1.position).multiplyScalar(0.5); - cp.position.copy(cp1.position).add(dir); - - const tDir = cp2.target.clone().sub(cp1.target).multiplyScalar(0.5); - cp.target.copy(cp2.target).add(tDir); - }else if(this.controlPoints.length >= 2){ - const cp1 = this.controlPoints[index - 1]; - const cp2 = this.controlPoints[index]; - - cp.position.copy(cp1.position.clone().add(cp2.position).multiplyScalar(0.5)); - cp.target.copy(cp1.target.clone().add(cp2.target).multiplyScalar(0.5)); - } - - // cp.position.copy(viewer.scene.view.position); - // cp.target.copy(viewer.scene.view.getPivot()); - - cp.positionHandle = this.createHandle(cp.position); - cp.targetHandle = this.createHandle(cp.target); - - this.controlPoints.splice(index, 0, cp); - - this.dispatchEvent({ - type: "controlpoint_added", - controlpoint: cp, - }); - - return cp; - } - - removeControlPoint(cp){ - this.controlPoints = this.controlPoints.filter(_cp => _cp !== cp); - - this.dispatchEvent({ - type: "controlpoint_removed", - controlpoint: cp, - }); - - cp.positionHandle.svg.remove(); - cp.targetHandle.svg.remove(); - - // TODO destroy cp - } - - createPath(){ - - { // position - const geometry = new THREE.LineGeometry(); - - let material = new THREE.LineMaterial({ - color: 0x00ff00, - dashSize: 5, - gapSize: 2, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - const line = new THREE.Line2(geometry, material); - - this.line = line; - this.node.add(line); - } - - { // target - const geometry = new THREE.LineGeometry(); - - let material = new THREE.LineMaterial({ - color: 0x0000ff, - dashSize: 5, - gapSize: 2, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - const line = new THREE.Line2(geometry, material); - - this.targetLine = line; - this.node.add(line); - } - } - - createFrustum(){ - - const f = 0.3; - - const positions = [ - 0, 0, 0, - -f, -f, +1, - - 0, 0, 0, - f, -f, +1, - - 0, 0, 0, - f, f, +1, - - 0, 0, 0, - -f, f, +1, - - -f, -f, +1, - f, -f, +1, - - f, -f, +1, - f, f, +1, - - f, f, +1, - -f, f, +1, - - -f, f, +1, - -f, -f, +1, - ]; - - const geometry = new THREE.LineGeometry(); - - geometry.setPositions(positions); - geometry.verticesNeedUpdate = true; - geometry.computeBoundingSphere(); - - let material = new THREE.LineMaterial({ - color: 0xff0000, - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - }); - - const line = new THREE.Line2(geometry, material); - line.computeLineDistances(); - - return line; - } - - updatePath(){ - - { // positions - const positions = this.controlPoints.map(cp => cp.position); - const first = positions[0]; - - const curve = new THREE.CatmullRomCurve3(positions); - curve.curveType = this.curveType; - - const n = 100; - - const curvePositions = []; - for(let k = 0; k <= n; k++){ - const t = k / n; - - const position = curve.getPoint(t).sub(first); - - curvePositions.push(position.x, position.y, position.z); - } - - this.line.geometry.setPositions(curvePositions); - this.line.geometry.verticesNeedUpdate = true; - this.line.geometry.computeBoundingSphere(); - this.line.position.copy(first); - this.line.computeLineDistances(); - - this.cameraCurve = curve; - } - - { // targets - const positions = this.controlPoints.map(cp => cp.target); - const first = positions[0]; - - const curve = new THREE.CatmullRomCurve3(positions); - curve.curveType = this.curveType; - - const n = 100; - - const curvePositions = []; - for(let k = 0; k <= n; k++){ - const t = k / n; - - const position = curve.getPoint(t).sub(first); - - curvePositions.push(position.x, position.y, position.z); - } - - this.targetLine.geometry.setPositions(curvePositions); - this.targetLine.geometry.verticesNeedUpdate = true; - this.targetLine.geometry.computeBoundingSphere(); - this.targetLine.position.copy(first); - this.targetLine.computeLineDistances(); - - this.targetCurve = curve; - } - } - - at(t){ - - if(t > 1){ - t = 1; - }else if(t < 0){ - t = 0; - } - - const camPos = this.cameraCurve.getPointAt(t); - const target = this.targetCurve.getPointAt(t); - - const frame = { - position: camPos, - target: target, - }; - - return frame; - } - - set(t){ - this.t = t; - } - - createHandle(vector){ - - const svgns = "http://www.w3.org/2000/svg"; - const svg = document.createElementNS(svgns, "svg"); - - svg.setAttribute("width", "2em"); - svg.setAttribute("height", "2em"); - svg.setAttribute("position", "absolute"); - - svg.style.left = "50px"; - svg.style.top = "50px"; - svg.style.position = "absolute"; - svg.style.zIndex = "10000"; - - const circle = document.createElementNS(svgns, 'circle'); - circle.setAttributeNS(null, 'cx', "1em"); - circle.setAttributeNS(null, 'cy', "1em"); - circle.setAttributeNS(null, 'r', "0.5em"); - circle.setAttributeNS(null, 'style', 'fill: red; stroke: black; stroke-width: 0.2em;' ); - svg.appendChild(circle); - - - const element = this.viewer.renderer.domElement.parentElement; - element.appendChild(svg); - - - const startDrag = (evt) => { - this.selectedElement = svg; - - document.addEventListener("mousemove", drag); - }; - - const endDrag = (evt) => { - this.selectedElement = null; - - document.removeEventListener("mousemove", drag); - }; - - const drag = (evt) => { - if (this.selectedElement) { - evt.preventDefault(); - - const rect = viewer.renderer.domElement.getBoundingClientRect(); - - const x = evt.clientX - rect.x; - const y = evt.clientY - rect.y; - - const {width, height} = this.viewer.renderer.getSize(new THREE.Vector2()); - const camera = this.viewer.scene.getActiveCamera(); - //const cp = this.controlPoints.find(cp => cp.handle.svg === svg); - const projected = vector.clone().project(camera); - - projected.x = ((x / width) - 0.5) / 0.5; - projected.y = (-(y - height) / height - 0.5) / 0.5; - - const unprojected = projected.clone().unproject(camera); - vector.set(unprojected.x, unprojected.y, unprojected.z); - - - } - }; - - svg.addEventListener('mousedown', startDrag); - svg.addEventListener('mouseup', endDrag); - - const handle = { - svg: svg, - }; - - return handle; - } - - setVisible(visible){ - this.node.visible = visible; - - const display = visible ? "" : "none"; - - for(const cp of this.controlPoints){ - cp.positionHandle.svg.style.display = display; - cp.targetHandle.svg.style.display = display; - } - - this.visible = visible; - } - - setDuration(duration){ - this.duration = duration; - } - - getDuration(duration){ - return this.duration; - } - - play(){ - - const tStart = performance.now(); - const duration = this.duration; - - const originalyVisible = this.visible; - this.setVisible(false); - - const onUpdate = (delta) => { - - let tNow = performance.now(); - let elapsed = (tNow - tStart) / 1000; - let t = elapsed / duration; - - this.set(t); - - const frame = this.at(t); - - viewer.scene.view.position.copy(frame.position); - viewer.scene.view.lookAt(frame.target); - - - if(t > 1){ - this.setVisible(originalyVisible); - - this.viewer.removeEventListener("update", onUpdate); - } - - }; - - this.viewer.addEventListener("update", onUpdate); - - } - - } - - function loadPointCloud(viewer, data){ - - let loadMaterial = (target) => { - - if(data.material){ - - if(data.material.activeAttributeName != null){ - target.activeAttributeName = data.material.activeAttributeName; - } - - if(data.material.ranges != null){ - for(let range of data.material.ranges){ - - if(range.name === "elevationRange"){ - target.elevationRange = range.value; - }else if(range.name === "intensityRange"){ - target.intensityRange = range.value; - }else { - target.setRange(range.name, range.value); - } - - } - } - - if(data.material.size != null){ - target.size = data.material.size; - } - - if(data.material.minSize != null){ - target.minSize = data.material.minSize; - } - - if(data.material.pointSizeType != null){ - target.pointSizeType = PointSizeType[data.material.pointSizeType]; - } - - if(data.material.matcap != null){ - target.matcap = data.material.matcap; - } - - }else if(data.activeAttributeName != null){ - target.activeAttributeName = data.activeAttributeName; - }else { - // no material data - } - - }; - - const promise = new Promise((resolve) => { - - const names = viewer.scene.pointclouds.map(p => p.name); - const alreadyExists = names.includes(data.name); - - if(alreadyExists){ - resolve(); - return; - } - - Potree.loadPointCloud(data.url, data.name, (e) => { - const {pointcloud} = e; - - pointcloud.position.set(...data.position); - pointcloud.rotation.set(...data.rotation); - pointcloud.scale.set(...data.scale); - - loadMaterial(pointcloud.material); - - viewer.scene.addPointCloud(pointcloud); - - resolve(pointcloud); - }); - }); - - return promise; - } - - function loadMeasurement(viewer, data){ - - const duplicate = viewer.scene.measurements.find(measure => measure.uuid === data.uuid); - if(duplicate){ - return; - } - - const measure = new Measure(); - - measure.uuid = data.uuid; - measure.name = data.name; - measure.showDistances = data.showDistances; - measure.showCoordinates = data.showCoordinates; - measure.showArea = data.showArea; - measure.closed = data.closed; - measure.showAngles = data.showAngles; - measure.showHeight = data.showHeight; - measure.showCircle = data.showCircle; - measure.showAzimuth = data.showAzimuth; - measure.showEdges = data.showEdges; - // color - - for(const point of data.points){ - const pos = new THREE.Vector3(...point); - measure.addMarker(pos); - } - - viewer.scene.addMeasurement(measure); - - } - - function loadVolume(viewer, data){ - - const duplicate = viewer.scene.volumes.find(volume => volume.uuid === data.uuid); - if(duplicate){ - return; - } - - let volume = new Potree[data.type]; - - volume.uuid = data.uuid; - volume.name = data.name; - volume.position.set(...data.position); - volume.rotation.set(...data.rotation); - volume.scale.set(...data.scale); - volume.visible = data.visible; - volume.clip = data.clip; - - viewer.scene.addVolume(volume); - } - - function loadCameraAnimation(viewer, data){ - - const duplicate = viewer.scene.cameraAnimations.find(a => a.uuid === data.uuid); - if(duplicate){ - return; - } - - const animation = new CameraAnimation(viewer); - - animation.uuid = data.uuid; - animation.name = data.name; - animation.duration = data.duration; - animation.t = data.t; - animation.curveType = data.curveType; - animation.visible = data.visible; - animation.controlPoints = []; - - for(const cpdata of data.controlPoints){ - const cp = animation.createControlPoint(); - - cp.position.set(...cpdata.position); - cp.target.set(...cpdata.target); - } - - viewer.scene.addCameraAnimation(animation); - } - - function loadOrientedImages(viewer, images){ - - const {cameraParamsPath, imageParamsPath} = images; - - const duplicate = viewer.scene.orientedImages.find(i => i.imageParamsPath === imageParamsPath); - if(duplicate){ - return; - } - - Potree.OrientedImageLoader.load(cameraParamsPath, imageParamsPath, viewer).then( images => { - viewer.scene.addOrientedImages(images); - }); - - } - - function loadGeopackage(viewer, geopackage){ - - const path = geopackage.path; - - const duplicate = viewer.scene.geopackages.find(i => i.path === path); - if(duplicate){ - return; - } - - const projection = viewer.getProjection(); - - proj4.defs("WGS84", "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"); - proj4.defs("pointcloud", projection); - const transform = proj4("WGS84", "pointcloud"); - const params = { - transform: transform, - }; - - Potree.GeoPackageLoader.loadUrl(path, params).then(data => { - viewer.scene.addGeopackage(data); - }); - - - } - - function loadSettings(viewer, data){ - if(!data){ - return; - } - - viewer.setPointBudget(data.pointBudget); - viewer.setFOV(data.fov); - viewer.setEDLEnabled(data.edlEnabled); - viewer.setEDLRadius(data.edlRadius); - viewer.setEDLStrength(data.edlStrength); - viewer.setBackground(data.background); - viewer.setMinNodeSize(data.minNodeSize); - viewer.setShowBoundingBox(data.showBoundingBoxes); - } - - function loadView(viewer, view){ - viewer.scene.view.position.set(...view.position); - viewer.scene.view.lookAt(...view.target); - } - - function loadAnnotationItem(item){ - - const annotation = new Annotation({ - position: item.position, - title: item.title, - cameraPosition: item.cameraPosition, - cameraTarget: item.cameraTarget, - }); - - - annotation.description = item.description; - annotation.uuid = item.uuid; - - if(item.offset){ - annotation.offset.set(...item.offset); - } - - return annotation; - } - - function loadAnnotations(viewer, data){ - - if(!data){ - return; - } - - const findDuplicate = (item) => { - - let duplicate = null; - - viewer.scene.annotations.traverse( a => { - if(a.uuid === item.uuid){ - duplicate = a; - } - }); - - return duplicate; - }; - - const traverse = (item, parent) => { - - const duplicate = findDuplicate(item); - if(duplicate){ - return; - } - - const annotation = loadAnnotationItem(item); - - for(const childItem of item.children){ - traverse(childItem, annotation); - } - - parent.add(annotation); - - }; - - for(const item of data){ - traverse(item, viewer.scene.annotations); - } - - } - - function loadProfile(viewer, data){ - - const {name, points} = data; - - const duplicate = viewer.scene.profiles.find(profile => profile.uuid === data.uuid); - if(duplicate){ - return; - } - - let profile = new Potree.Profile(); - profile.name = name; - profile.uuid = data.uuid; - - profile.setWidth(data.width); - - for(const point of points){ - profile.addMarker(new THREE.Vector3(...point)); - } - - viewer.scene.addProfile(profile); - } - - function loadClassification(viewer, data){ - if(!data){ - return; - } - - const classifications = data; - - viewer.setClassifications(classifications); - } - - async function loadProject(viewer, data){ - - if(data.type !== "Potree"){ - console.error("not a valid Potree project"); - return; - } - - loadSettings(viewer, data.settings); - - loadView(viewer, data.view); - - const pointcloudPromises = []; - for(const pointcloud of data.pointclouds){ - const promise = loadPointCloud(viewer, pointcloud); - pointcloudPromises.push(promise); - } - - for(const measure of data.measurements){ - loadMeasurement(viewer, measure); - } - - for(const volume of data.volumes){ - loadVolume(viewer, volume); - } - - for(const animation of data.cameraAnimations){ - loadCameraAnimation(viewer, animation); - } - - for(const profile of data.profiles){ - loadProfile(viewer, profile); - } - - if(data.orientedImages){ - for(const images of data.orientedImages){ - loadOrientedImages(viewer, images); - } - } - - loadAnnotations(viewer, data.annotations); - - loadClassification(viewer, data.classification); - - // need to load at least one point cloud that defines the scene projection, - // before we can load stuff in other projections such as geopackages - //await Promise.any(pointcloudPromises); // (not yet supported) - Utils.waitAny(pointcloudPromises).then( () => { - if(data.geopackages){ - for(const geopackage of data.geopackages){ - loadGeopackage(viewer, geopackage); - } - } - }); - - await Promise.all(pointcloudPromises); - } - - // - // Algorithm by Christian Boucheny - // shader code taken and adapted from CloudCompare - // - // see - // https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL - // http://www.kitware.com/source/home/post/9 - // https://tel.archives-ouvertes.fr/tel-00438464/document p. 115+ (french) - - class EyeDomeLightingMaterial extends THREE.RawShaderMaterial{ - - constructor(parameters = {}){ - super(); - - let uniforms = { - screenWidth: { type: 'f', value: 0 }, - screenHeight: { type: 'f', value: 0 }, - edlStrength: { type: 'f', value: 1.0 }, - uNear: { type: 'f', value: 1.0 }, - uFar: { type: 'f', value: 1.0 }, - radius: { type: 'f', value: 1.0 }, - neighbours: { type: '2fv', value: [] }, - depthMap: { type: 't', value: null }, - uEDLColor: { type: 't', value: null }, - uEDLDepth: { type: 't', value: null }, - opacity: { type: 'f', value: 1.0 }, - uProj: { type: "Matrix4fv", value: [] }, - }; - - this.setValues({ - uniforms: uniforms, - vertexShader: this.getDefines() + Shaders['edl.vs'], - fragmentShader: this.getDefines() + Shaders['edl.fs'], - lights: false - }); - - this.neighbourCount = 8; - } - - getDefines() { - let defines = ''; - - defines += '#define NEIGHBOUR_COUNT ' + this.neighbourCount + '\n'; - - return defines; - } - - updateShaderSource() { - - let vs = this.getDefines() + Shaders['edl.vs']; - let fs = this.getDefines() + Shaders['edl.fs']; - - this.setValues({ - vertexShader: vs, - fragmentShader: fs - }); - - this.uniforms.neighbours.value = this.neighbours; - - this.needsUpdate = true; - } - - get neighbourCount(){ - return this._neighbourCount; - } - - set neighbourCount(value){ - if (this._neighbourCount !== value) { - this._neighbourCount = value; - this.neighbours = new Float32Array(this._neighbourCount * 2); - for (let c = 0; c < this._neighbourCount; c++) { - this.neighbours[2 * c + 0] = Math.cos(2 * c * Math.PI / this._neighbourCount); - this.neighbours[2 * c + 1] = Math.sin(2 * c * Math.PI / this._neighbourCount); - } - - this.updateShaderSource(); - } - } - - - } - - class NormalizationEDLMaterial extends THREE.RawShaderMaterial{ - - constructor(parameters = {}){ - super(); - - let uniforms = { - screenWidth: { type: 'f', value: 0 }, - screenHeight: { type: 'f', value: 0 }, - edlStrength: { type: 'f', value: 1.0 }, - radius: { type: 'f', value: 1.0 }, - neighbours: { type: '2fv', value: [] }, - uEDLMap: { type: 't', value: null }, - uDepthMap: { type: 't', value: null }, - uWeightMap: { type: 't', value: null }, - }; - - this.setValues({ - uniforms: uniforms, - vertexShader: this.getDefines() + Shaders['normalize.vs'], - fragmentShader: this.getDefines() + Shaders['normalize_and_edl.fs'], - }); - - this.neighbourCount = 8; - } - - getDefines() { - let defines = ''; - - defines += '#define NEIGHBOUR_COUNT ' + this.neighbourCount + '\n'; - - return defines; - } - - updateShaderSource() { - - let vs = this.getDefines() + Shaders['normalize.vs']; - let fs = this.getDefines() + Shaders['normalize_and_edl.fs']; - - this.setValues({ - vertexShader: vs, - fragmentShader: fs - }); - - this.uniforms.neighbours.value = this.neighbours; - - this.needsUpdate = true; - } - - get neighbourCount(){ - return this._neighbourCount; - } - - set neighbourCount(value){ - if (this._neighbourCount !== value) { - this._neighbourCount = value; - this.neighbours = new Float32Array(this._neighbourCount * 2); - for (let c = 0; c < this._neighbourCount; c++) { - this.neighbours[2 * c + 0] = Math.cos(2 * c * Math.PI / this._neighbourCount); - this.neighbours[2 * c + 1] = Math.sin(2 * c * Math.PI / this._neighbourCount); - } - - this.updateShaderSource(); - } - } - - } - - class NormalizationMaterial extends THREE.RawShaderMaterial{ - - constructor(parameters = {}){ - super(); - - let uniforms = { - uDepthMap: { type: 't', value: null }, - uWeightMap: { type: 't', value: null }, - }; - - this.setValues({ - uniforms: uniforms, - vertexShader: this.getDefines() + Shaders['normalize.vs'], - fragmentShader: this.getDefines() + Shaders['normalize.fs'], - }); - } - - getDefines() { - let defines = ''; - - return defines; - } - - updateShaderSource() { - - let vs = this.getDefines() + Shaders['normalize.vs']; - let fs = this.getDefines() + Shaders['normalize.fs']; - - this.setValues({ - vertexShader: vs, - fragmentShader: fs - }); - - this.needsUpdate = true; - } - - } - - /** - * laslaz code taken and adapted from plas.io js-laslaz - * http://plas.io/ - * https://github.com/verma/plasio - * - * Thanks to Uday Verma and Howard Butler - * - */ - - class LasLazLoader { - - constructor (version, extension) { - if (typeof (version) === 'string') { - this.version = new Version(version); - } else { - this.version = version; - } - - this.extension = extension; - } - - static progressCB () { - - } - - load (node) { - if (node.loaded) { - return; - } - - let url = node.getURL(); - - if (this.version.equalOrHigher('1.4')) { - url += `.${this.extension}`; - } - - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - xhr.onreadystatechange = () => { - if (xhr.readyState === 4) { - if (xhr.status === 200 || xhr.status === 0) { - let buffer = xhr.response; - this.parse(node, buffer); - } else { - console.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + url); - } - } - }; - - xhr.send(null); - } - - async parse(node, buffer){ - let lf = new LASFile(buffer); - let handler = new LasLazBatcher(node); - - try{ - await lf.open(); - lf.isOpen = true; - }catch(e){ - console.log("failed to open file. :("); - - return; - } - - let header = await lf.getHeader(); - - let skip = 1; - let totalRead = 0; - let totalToRead = (skip <= 1 ? header.pointsCount : header.pointsCount / skip); - - let hasMoreData = true; - - while(hasMoreData){ - let data = await lf.readData(1000 * 1000, 0, skip); - - handler.push(new LASDecoder(data.buffer, - header.pointsFormatId, - header.pointsStructSize, - data.count, - header.scale, - header.offset, - header.mins, header.maxs)); - - totalRead += data.count; - LasLazLoader.progressCB(totalRead / totalToRead); - - hasMoreData = data.hasMoreData; - } - - header.totalRead = totalRead; - header.versionAsString = lf.versionAsString; - header.isCompressed = lf.isCompressed; - - LasLazLoader.progressCB(1); - - try{ - await lf.close(); - - lf.isOpen = false; - }catch(e){ - console.error("failed to close las/laz file!!!"); - - throw e; - } - } - - handle (node, url) { - - } - }; - - class LasLazBatcher{ - - constructor (node) { - this.node = node; - } - - push (lasBuffer) { - const workerPath = Potree.scriptPath + '/workers/LASDecoderWorker.js'; - const worker = Potree.workerPool.getWorker(workerPath); - const node = this.node; - const pointAttributes = node.pcoGeometry.pointAttributes; - - worker.onmessage = (e) => { - let geometry = new THREE.BufferGeometry(); - let numPoints = lasBuffer.pointsCount; - - let positions = new Float32Array(e.data.position); - let colors = new Uint8Array(e.data.color); - let intensities = new Float32Array(e.data.intensity); - let classifications = new Uint8Array(e.data.classification); - let returnNumbers = new Uint8Array(e.data.returnNumber); - let numberOfReturns = new Uint8Array(e.data.numberOfReturns); - let pointSourceIDs = new Uint16Array(e.data.pointSourceID); - let indices = new Uint8Array(e.data.indices); - - geometry.addAttribute('position', new THREE.BufferAttribute(positions, 3)); - geometry.addAttribute('color', new THREE.BufferAttribute(colors, 4, true)); - geometry.addAttribute('intensity', new THREE.BufferAttribute(intensities, 1)); - geometry.addAttribute('classification', new THREE.BufferAttribute(classifications, 1)); - geometry.addAttribute('return number', new THREE.BufferAttribute(returnNumbers, 1)); - geometry.addAttribute('number of returns', new THREE.BufferAttribute(numberOfReturns, 1)); - geometry.addAttribute('source id', new THREE.BufferAttribute(pointSourceIDs, 1)); - geometry.addAttribute('indices', new THREE.BufferAttribute(indices, 4)); - geometry.attributes.indices.normalized = true; - - for(const key in e.data.ranges){ - const range = e.data.ranges[key]; - - const attribute = pointAttributes.attributes.find(a => a.name === key); - attribute.range[0] = Math.min(attribute.range[0], range[0]); - attribute.range[1] = Math.max(attribute.range[1], range[1]); - } - - let tightBoundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(e.data.tightBoundingBox.min), - new THREE.Vector3().fromArray(e.data.tightBoundingBox.max) - ); - - geometry.boundingBox = this.node.boundingBox; - this.node.tightBoundingBox = tightBoundingBox; - - this.node.geometry = geometry; - this.node.numPoints = numPoints; - this.node.loaded = true; - this.node.loading = false; - Potree.numNodesLoading--; - this.node.mean = new THREE.Vector3(...e.data.mean); - - Potree.workerPool.returnWorker(workerPath, worker); - }; - - let message = { - buffer: lasBuffer.arrayb, - numPoints: lasBuffer.pointsCount, - pointSize: lasBuffer.pointSize, - pointFormatID: 2, - scale: lasBuffer.scale, - offset: lasBuffer.offset, - mins: lasBuffer.mins, - maxs: lasBuffer.maxs - }; - worker.postMessage(message, [message.buffer]); - }; - } - - class BinaryLoader{ - - constructor(version, boundingBox, scale){ - if (typeof (version) === 'string') { - this.version = new Version(version); - } else { - this.version = version; - } - - this.boundingBox = boundingBox; - this.scale = scale; - } - - load(node){ - if (node.loaded) { - return; - } - - let url = node.getURL(); - - if (this.version.equalOrHigher('1.4')) { - url += '.bin'; - } - - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - xhr.onreadystatechange = () => { - if (xhr.readyState === 4) { - if((xhr.status === 200 || xhr.status === 0) && xhr.response !== null){ - let buffer = xhr.response; - this.parse(node, buffer); - } else { - //console.error(`Failed to load file! HTTP status: ${xhr.status}, file: ${url}`); - throw new Error(`Failed to load file! HTTP status: ${xhr.status}, file: ${url}`); - } - } - }; - - try { - xhr.send(null); - } catch (e) { - console.log('fehler beim laden der punktwolke: ' + e); - } - }; - - parse(node, buffer){ - let pointAttributes = node.pcoGeometry.pointAttributes; - let numPoints = buffer.byteLength / node.pcoGeometry.pointAttributes.byteSize; - - if (this.version.upTo('1.5')) { - node.numPoints = numPoints; - } - - let workerPath = Potree.scriptPath + '/workers/BinaryDecoderWorker.js'; - let worker = Potree.workerPool.getWorker(workerPath); - - worker.onmessage = function (e) { - - let data = e.data; - let buffers = data.attributeBuffers; - let tightBoundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(data.tightBoundingBox.min), - new THREE.Vector3().fromArray(data.tightBoundingBox.max) - ); - - Potree.workerPool.returnWorker(workerPath, worker); - - let geometry = new THREE.BufferGeometry(); - - for(let property in buffers){ - let buffer = buffers[property].buffer; - let batchAttribute = buffers[property].attribute; - - if (property === "POSITION_CARTESIAN") { - geometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - } else if (property === "rgba") { - geometry.addAttribute("rgba", new THREE.BufferAttribute(new Uint8Array(buffer), 4, true)); - } else if (property === "NORMAL_SPHEREMAPPED") { - geometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - } else if (property === "NORMAL_OCT16") { - geometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - } else if (property === "NORMAL") { - geometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - } else if (property === "INDICES") { - let bufferAttribute = new THREE.BufferAttribute(new Uint8Array(buffer), 4); - bufferAttribute.normalized = true; - geometry.addAttribute('indices', bufferAttribute); - } else if (property === "SPACING") { - let bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1); - geometry.addAttribute('spacing', bufferAttribute); - } else { - const bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1); - - bufferAttribute.potree = { - offset: buffers[property].offset, - scale: buffers[property].scale, - preciseBuffer: buffers[property].preciseBuffer, - range: batchAttribute.range, - }; - - geometry.addAttribute(property, bufferAttribute); - - const attribute = pointAttributes.attributes.find(a => a.name === batchAttribute.name); - attribute.range[0] = Math.min(attribute.range[0], batchAttribute.range[0]); - attribute.range[1] = Math.max(attribute.range[1], batchAttribute.range[1]); - - if(node.getLevel() === 0){ - attribute.initialRange = batchAttribute.range; - } - - } - } - - tightBoundingBox.max.sub(tightBoundingBox.min); - tightBoundingBox.min.set(0, 0, 0); - - let numPoints = e.data.buffer.byteLength / pointAttributes.byteSize; - - node.numPoints = numPoints; - node.geometry = geometry; - node.mean = new THREE.Vector3(...data.mean); - node.tightBoundingBox = tightBoundingBox; - node.loaded = true; - node.loading = false; - node.estimatedSpacing = data.estimatedSpacing; - Potree.numNodesLoading--; - }; - - let message = { - buffer: buffer, - pointAttributes: pointAttributes, - version: this.version.version, - min: [ node.boundingBox.min.x, node.boundingBox.min.y, node.boundingBox.min.z ], - offset: [node.pcoGeometry.offset.x, node.pcoGeometry.offset.y, node.pcoGeometry.offset.z], - scale: this.scale, - spacing: node.spacing, - hasChildren: node.hasChildren, - name: node.name - }; - worker.postMessage(message, [message.buffer]); - }; - - - } - - function parseAttributes(cloudjs){ - - let version = new Version(cloudjs.version); - - const replacements = { - "COLOR_PACKED": "rgba", - "RGBA": "rgba", - "INTENSITY": "intensity", - "CLASSIFICATION": "classification", - }; - - const replaceOldNames = (old) => { - if(replacements[old]){ - return replacements[old]; - }else { - return old; - } - }; - - const pointAttributes = []; - if(version.upTo('1.7')){ - - for(let attributeName of cloudjs.pointAttributes){ - const oldAttribute = PointAttribute[attributeName]; - - const attribute = { - name: oldAttribute.name, - size: oldAttribute.byteSize, - elements: oldAttribute.numElements, - elementSize: oldAttribute.byteSize / oldAttribute.numElements, - type: oldAttribute.type.name, - description: "", - }; - - pointAttributes.push(attribute); - } - - }else { - pointAttributes.push(...cloudjs.pointAttributes); - } - - - { - const attributes = new PointAttributes(); - - const typeConversion = { - int8: PointAttributeTypes.DATA_TYPE_INT8, - int16: PointAttributeTypes.DATA_TYPE_INT16, - int32: PointAttributeTypes.DATA_TYPE_INT32, - int64: PointAttributeTypes.DATA_TYPE_INT64, - uint8: PointAttributeTypes.DATA_TYPE_UINT8, - uint16: PointAttributeTypes.DATA_TYPE_UINT16, - uint32: PointAttributeTypes.DATA_TYPE_UINT32, - uint64: PointAttributeTypes.DATA_TYPE_UINT64, - double: PointAttributeTypes.DATA_TYPE_DOUBLE, - float: PointAttributeTypes.DATA_TYPE_FLOAT, - }; - - for(const jsAttribute of pointAttributes){ - const name = replaceOldNames(jsAttribute.name); - const type = typeConversion[jsAttribute.type]; - const numElements = jsAttribute.elements; - const description = jsAttribute.description; - - const attribute = new PointAttribute(name, type, numElements); - - attributes.add(attribute); - } - - { - // check if it has normals - let hasNormals = - pointAttributes.find(a => a.name === "NormalX") !== undefined && - pointAttributes.find(a => a.name === "NormalY") !== undefined && - pointAttributes.find(a => a.name === "NormalZ") !== undefined; - - if(hasNormals){ - let vector = { - name: "NORMAL", - attributes: ["NormalX", "NormalY", "NormalZ"], - }; - attributes.addVector(vector); - } - } - - return attributes; - } - - } - - function lasLazAttributes(fMno){ - const attributes = new PointAttributes(); - - attributes.add(PointAttribute.POSITION_CARTESIAN); - attributes.add(new PointAttribute("rgba", PointAttributeTypes.DATA_TYPE_UINT8, 4)); - attributes.add(new PointAttribute("intensity", PointAttributeTypes.DATA_TYPE_UINT16, 1)); - attributes.add(new PointAttribute("classification", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("gps-time", PointAttributeTypes.DATA_TYPE_DOUBLE, 1)); - attributes.add(new PointAttribute("number of returns", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("return number", PointAttributeTypes.DATA_TYPE_UINT8, 1)); - attributes.add(new PointAttribute("source id", PointAttributeTypes.DATA_TYPE_UINT16, 1)); - //attributes.add(new PointAttribute("pointSourceID", PointAttributeTypes.DATA_TYPE_INT8, 4)); - - - return attributes; - } - - class POCLoader { - - static load(url, callback){ - try { - let pco = new PointCloudOctreeGeometry(); - pco.url = url; - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', url, true); - - xhr.onreadystatechange = function () { - if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)) { - let fMno = JSON.parse(xhr.responseText); - - let version = new Version(fMno.version); - - // assume octreeDir is absolute if it starts with http - if (fMno.octreeDir.indexOf('http') === 0) { - pco.octreeDir = fMno.octreeDir; - } else { - pco.octreeDir = url + '/../' + fMno.octreeDir; - } - - pco.spacing = fMno.spacing; - pco.hierarchyStepSize = fMno.hierarchyStepSize; - - pco.pointAttributes = fMno.pointAttributes; - - let min = new THREE.Vector3(fMno.boundingBox.lx, fMno.boundingBox.ly, fMno.boundingBox.lz); - let max = new THREE.Vector3(fMno.boundingBox.ux, fMno.boundingBox.uy, fMno.boundingBox.uz); - let boundingBox = new THREE.Box3(min, max); - let tightBoundingBox = boundingBox.clone(); - - if (fMno.tightBoundingBox) { - tightBoundingBox.min.copy(new THREE.Vector3(fMno.tightBoundingBox.lx, fMno.tightBoundingBox.ly, fMno.tightBoundingBox.lz)); - tightBoundingBox.max.copy(new THREE.Vector3(fMno.tightBoundingBox.ux, fMno.tightBoundingBox.uy, fMno.tightBoundingBox.uz)); - } - - let offset = min.clone(); - - boundingBox.min.sub(offset); - boundingBox.max.sub(offset); - - tightBoundingBox.min.sub(offset); - tightBoundingBox.max.sub(offset); - - pco.projection = fMno.projection; - pco.boundingBox = boundingBox; - pco.tightBoundingBox = tightBoundingBox; - pco.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere()); - pco.tightBoundingSphere = tightBoundingBox.getBoundingSphere(new THREE.Sphere()); - pco.offset = offset; - if (fMno.pointAttributes === 'LAS') { - pco.loader = new LasLazLoader(fMno.version, "las"); - pco.pointAttributes = lasLazAttributes(fMno); - } else if (fMno.pointAttributes === 'LAZ') { - pco.loader = new LasLazLoader(fMno.version, "laz"); - pco.pointAttributes = lasLazAttributes(fMno); - } else { - pco.loader = new BinaryLoader(fMno.version, boundingBox, fMno.scale); - pco.pointAttributes = parseAttributes(fMno); - } - - let nodes = {}; - - { // load root - let name = 'r'; - - let root = new PointCloudOctreeGeometryNode(name, pco, boundingBox); - root.level = 0; - root.hasChildren = true; - root.spacing = pco.spacing; - if (version.upTo('1.5')) { - root.numPoints = fMno.hierarchy[0][1]; - } else { - root.numPoints = 0; - } - pco.root = root; - pco.root.load(); - nodes[name] = root; - } - - // load remaining hierarchy - if (version.upTo('1.4')) { - for (let i = 1; i < fMno.hierarchy.length; i++) { - let name = fMno.hierarchy[i][0]; - let numPoints = fMno.hierarchy[i][1]; - let index = parseInt(name.charAt(name.length - 1)); - let parentName = name.substring(0, name.length - 1); - let parentNode = nodes[parentName]; - let level = name.length - 1; - //let boundingBox = POCLoader.createChildAABB(parentNode.boundingBox, index); - let boundingBox = Utils.createChildAABB(parentNode.boundingBox, index); - - let node = new PointCloudOctreeGeometryNode(name, pco, boundingBox); - node.level = level; - node.numPoints = numPoints; - node.spacing = pco.spacing / Math.pow(2, level); - parentNode.addChild(node); - nodes[name] = node; - } - } - - pco.nodes = nodes; - - callback(pco); - } - }; - - xhr.send(null); - } catch (e) { - console.log("loading failed: '" + url + "'"); - console.log(e); - - callback(); - } - } - - loadPointAttributes(mno){ - let fpa = mno.pointAttributes; - let pa = new PointAttributes(); - - for (let i = 0; i < fpa.length; i++) { - let pointAttribute = PointAttribute[fpa[i]]; - pa.add(pointAttribute); - } - - return pa; - } - - createChildAABB(aabb, index){ - let min = aabb.min.clone(); - let max = aabb.max.clone(); - let size = new THREE.Vector3().subVectors(max, min); - - if ((index & 0b0001) > 0) { - min.z += size.z / 2; - } else { - max.z -= size.z / 2; - } - - if ((index & 0b0010) > 0) { - min.y += size.y / 2; - } else { - max.y -= size.y / 2; - } - - if ((index & 0b0100) > 0) { - min.x += size.x / 2; - } else { - max.x -= size.x / 2; - } - - return new THREE.Box3(min, max); - } - } - - class OctreeGeometry{ - - constructor(){ - this.url = null; - this.spacing = 0; - this.boundingBox = null; - this.root = null; - this.pointAttributes = null; - this.loader = null; - } - - }; - - class OctreeGeometryNode{ - - constructor(name, octreeGeometry, boundingBox){ - this.id = OctreeGeometryNode.IDCount++; - this.name = name; - this.index = parseInt(name.charAt(name.length - 1)); - this.octreeGeometry = octreeGeometry; - this.boundingBox = boundingBox; - this.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere()); - this.children = {}; - this.numPoints = 0; - this.level = null; - this.oneTimeDisposeHandlers = []; - } - - isGeometryNode(){ - return true; - } - - getLevel(){ - return this.level; - } - - isTreeNode(){ - return false; - } - - isLoaded(){ - return this.loaded; - } - - getBoundingSphere(){ - return this.boundingSphere; - } - - getBoundingBox(){ - return this.boundingBox; - } - - getChildren(){ - let children = []; - - for (let i = 0; i < 8; i++) { - if (this.children[i]) { - children.push(this.children[i]); - } - } - - return children; - } - - getBoundingBox(){ - return this.boundingBox; - } - - load(){ - - if (Potree.numNodesLoading >= Potree.maxNodesLoading) { - return; - } - - this.octreeGeometry.loader.load(this); - } - - getNumPoints(){ - return this.numPoints; - } - - dispose(){ - if (this.geometry && this.parent != null) { - this.geometry.dispose(); - this.geometry = null; - this.loaded = false; - - // this.dispatchEvent( { type: 'dispose' } ); - for (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) { - let handler = this.oneTimeDisposeHandlers[i]; - handler(); - } - this.oneTimeDisposeHandlers = []; - } - } - - }; - - OctreeGeometryNode.IDCount = 0; - - // let loadedNodes = new Set(); - - class NodeLoader{ - - constructor(url){ - this.url = url; - } - - async load(node){ - - if(node.loaded || node.loading){ - return; - } - - node.loading = true; - Potree.numNodesLoading++; - - // console.log(node.name, node.numPoints); - - // if(loadedNodes.has(node.name)){ - // // debugger; - // } - // loadedNodes.add(node.name); - - try{ - if(node.nodeType === 2){ - await this.loadHierarchy(node); - } - - let {byteOffset, byteSize} = node; - - - let urlOctree = `${this.url}/../octree.bin`; - - let first = byteOffset; - let last = byteOffset + byteSize - 1n; - - let buffer; - - if(byteSize === 0n){ - buffer = new ArrayBuffer(0); - console.warn(`loaded node with 0 bytes: ${node.name}`); - }else { - let response = await fetch(urlOctree, { - headers: { - 'content-type': 'multipart/byteranges', - 'Range': `bytes=${first}-${last}`, - }, - }); - - buffer = await response.arrayBuffer(); - } - - let workerPath; - if(this.metadata.encoding === "BROTLI"){ - workerPath = Potree.scriptPath + '/workers/2.0/DecoderWorker_brotli.js'; - }else { - workerPath = Potree.scriptPath + '/workers/2.0/DecoderWorker.js'; - } - - let worker = Potree.workerPool.getWorker(workerPath); - - worker.onmessage = function (e) { - - let data = e.data; - let buffers = data.attributeBuffers; - - Potree.workerPool.returnWorker(workerPath, worker); - - let geometry = new THREE.BufferGeometry(); - - for(let property in buffers){ - - let buffer = buffers[property].buffer; - - if(property === "position"){ - geometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - }else if(property === "rgba"){ - geometry.addAttribute('rgba', new THREE.BufferAttribute(new Uint8Array(buffer), 4, true)); - }else if(property === "NORMAL"){ - //geometry.addAttribute('rgba', new THREE.BufferAttribute(new Uint8Array(buffer), 4, true)); - geometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3)); - }else if (property === "INDICES") { - let bufferAttribute = new THREE.BufferAttribute(new Uint8Array(buffer), 4); - bufferAttribute.normalized = true; - geometry.addAttribute('indices', bufferAttribute); - }else { - const bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1); - - let batchAttribute = buffers[property].attribute; - bufferAttribute.potree = { - offset: buffers[property].offset, - scale: buffers[property].scale, - preciseBuffer: buffers[property].preciseBuffer, - range: batchAttribute.range, - }; - - geometry.addAttribute(property, bufferAttribute); - } - - } - // indices ?? - - node.density = data.density; - node.geometry = geometry; - node.loaded = true; - node.loading = false; - Potree.numNodesLoading--; - }; - - let pointAttributes = node.octreeGeometry.pointAttributes; - let scale = node.octreeGeometry.scale; - - let box = node.boundingBox; - let min = node.octreeGeometry.offset.clone().add(box.min); - let size = box.max.clone().sub(box.min); - let max = min.clone().add(size); - let numPoints = node.numPoints; - - let offset = node.octreeGeometry.loader.offset; - - let message = { - name: node.name, - buffer: buffer, - pointAttributes: pointAttributes, - scale: scale, - min: min, - max: max, - size: size, - offset: offset, - numPoints: numPoints - }; - - worker.postMessage(message, [message.buffer]); - }catch(e){ - node.loaded = false; - node.loading = false; - Potree.numNodesLoading--; - - console.log(`failed to load ${node.name}`); - console.log(e); - console.log(`trying again!`); - } - } - - parseHierarchy(node, buffer){ - - let view = new DataView(buffer); - let tStart = performance.now(); - - let bytesPerNode = 22; - let numNodes = buffer.byteLength / bytesPerNode; - - let octree = node.octreeGeometry; - // let nodes = [node]; - let nodes = new Array(numNodes); - nodes[0] = node; - let nodePos = 1; - - for(let i = 0; i < numNodes; i++){ - let current = nodes[i]; - - let type = view.getUint8(i * bytesPerNode + 0); - let childMask = view.getUint8(i * bytesPerNode + 1); - let numPoints = view.getUint32(i * bytesPerNode + 2, true); - let byteOffset = view.getBigInt64(i * bytesPerNode + 6, true); - let byteSize = view.getBigInt64(i * bytesPerNode + 14, true); - - // if(byteSize === 0n){ - // // debugger; - // } - - - if(current.nodeType === 2){ - // replace proxy with real node - current.byteOffset = byteOffset; - current.byteSize = byteSize; - current.numPoints = numPoints; - }else if(type === 2){ - // load proxy - current.hierarchyByteOffset = byteOffset; - current.hierarchyByteSize = byteSize; - current.numPoints = numPoints; - }else { - // load real node - current.byteOffset = byteOffset; - current.byteSize = byteSize; - current.numPoints = numPoints; - } - - current.nodeType = type; - - if(current.nodeType === 2){ - continue; - } - - for(let childIndex = 0; childIndex < 8; childIndex++){ - let childExists = ((1 << childIndex) & childMask) !== 0; - - if(!childExists){ - continue; - } - - let childName = current.name + childIndex; - - let childAABB = createChildAABB(current.boundingBox, childIndex); - let child = new OctreeGeometryNode(childName, octree, childAABB); - child.name = childName; - child.spacing = current.spacing / 2; - child.level = current.level + 1; - - current.children[childIndex] = child; - child.parent = current; - - // nodes.push(child); - nodes[nodePos] = child; - nodePos++; - } - - // if((i % 500) === 0){ - // yield; - // } - } - - let duration = (performance.now() - tStart); - - // if(duration > 20){ - // let msg = `duration: ${duration}ms, numNodes: ${numNodes}`; - // console.log(msg); - // } - } - - async loadHierarchy(node){ - - let {hierarchyByteOffset, hierarchyByteSize} = node; - let hierarchyPath = `${this.url}/../hierarchy.bin`; - - let first = hierarchyByteOffset; - let last = first + hierarchyByteSize - 1n; - - let response = await fetch(hierarchyPath, { - headers: { - 'content-type': 'multipart/byteranges', - 'Range': `bytes=${first}-${last}`, - }, - }); - - - - let buffer = await response.arrayBuffer(); - - this.parseHierarchy(node, buffer); - - // let promise = new Promise((resolve) => { - // let generator = this.parseHierarchy(node, buffer); - - // let repeatUntilDone = () => { - // let result = generator.next(); - - // if(result.done){ - // resolve(); - // }else{ - // requestAnimationFrame(repeatUntilDone); - // } - // }; - - // repeatUntilDone(); - // }); - - // await promise; - - - - - - } - - } - - let tmpVec3 = new THREE.Vector3(); - function createChildAABB(aabb, index){ - let min = aabb.min.clone(); - let max = aabb.max.clone(); - let size = tmpVec3.subVectors(max, min); - - if ((index & 0b0001) > 0) { - min.z += size.z / 2; - } else { - max.z -= size.z / 2; - } - - if ((index & 0b0010) > 0) { - min.y += size.y / 2; - } else { - max.y -= size.y / 2; - } - - if ((index & 0b0100) > 0) { - min.x += size.x / 2; - } else { - max.x -= size.x / 2; - } - - return new THREE.Box3(min, max); - } - - let typenameTypeattributeMap = { - "double": PointAttributeTypes.DATA_TYPE_DOUBLE, - "float": PointAttributeTypes.DATA_TYPE_FLOAT, - "int8": PointAttributeTypes.DATA_TYPE_INT8, - "uint8": PointAttributeTypes.DATA_TYPE_UINT8, - "int16": PointAttributeTypes.DATA_TYPE_INT16, - "uint16": PointAttributeTypes.DATA_TYPE_UINT16, - "int32": PointAttributeTypes.DATA_TYPE_INT32, - "uint32": PointAttributeTypes.DATA_TYPE_UINT32, - "int64": PointAttributeTypes.DATA_TYPE_INT64, - "uint64": PointAttributeTypes.DATA_TYPE_UINT64, - }; - - class OctreeLoader{ - - static parseAttributes(jsonAttributes){ - - let attributes = new PointAttributes(); - - let replacements = { - "rgb": "rgba", - }; - - for(let jsonAttribute of jsonAttributes){ - let {name, description, size, numElements, elementSize, min, max} = jsonAttribute; - - let type = typenameTypeattributeMap[jsonAttribute.type]; - - let potreeAttributeName = replacements[name] ? replacements[name] : name; - - let attribute = new PointAttribute(potreeAttributeName, type, numElements); - - if(numElements === 1){ - attribute.range = [min[0], max[0]]; - }else { - attribute.range = [min, max]; - } - - attribute.initialRange = attribute.range; - - attributes.add(attribute); - } - - { - // check if it has normals - let hasNormals = - attributes.attributes.find(a => a.name === "NormalX") !== undefined && - attributes.attributes.find(a => a.name === "NormalY") !== undefined && - attributes.attributes.find(a => a.name === "NormalZ") !== undefined; - - if(hasNormals){ - let vector = { - name: "NORMAL", - attributes: ["NormalX", "NormalY", "NormalZ"], - }; - attributes.addVector(vector); - } - } - - return attributes; - } - - static async load(url){ - - let response = await fetch(url); - let metadata = await response.json(); - - let attributes = OctreeLoader.parseAttributes(metadata.attributes); - - let loader = new NodeLoader(url); - loader.metadata = metadata; - loader.attributes = attributes; - loader.scale = metadata.scale; - loader.offset = metadata.offset; - - let octree = new OctreeGeometry(); - octree.url = url; - octree.spacing = metadata.spacing; - octree.scale = metadata.scale; - - // let aPosition = metadata.attributes.find(a => a.name === "position"); - // octree - - let min = new THREE.Vector3(...metadata.boundingBox.min); - let max = new THREE.Vector3(...metadata.boundingBox.max); - let boundingBox = new THREE.Box3(min, max); - - let offset = min.clone(); - boundingBox.min.sub(offset); - boundingBox.max.sub(offset); - - octree.projection = metadata.projection; - octree.boundingBox = boundingBox; - octree.tightBoundingBox = boundingBox.clone(); - octree.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere()); - octree.tightBoundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere()); - octree.offset = offset; - octree.pointAttributes = OctreeLoader.parseAttributes(metadata.attributes); - octree.loader = loader; - - let root = new OctreeGeometryNode("r", octree, boundingBox); - root.level = 0; - root.nodeType = 2; - root.hierarchyByteOffset = 0n; - root.hierarchyByteSize = BigInt(metadata.hierarchy.firstChunkSize); - root.hasChildren = false; - root.spacing = octree.spacing; - root.byteOffset = 0; - - octree.root = root; - - loader.load(root); - - let result = { - geometry: octree, - }; - - return result; - - } - - }; - - /** - * @author Connor Manning - */ - - class EptLoader { - static async load(file, callback) { - - let response = await fetch(file); - let json = await response.json(); - - let url = file.substr(0, file.lastIndexOf('ept.json')); - let geometry = new Potree.PointCloudEptGeometry(url, json); - let root = new Potree.PointCloudEptGeometryNode(geometry); - - geometry.root = root; - geometry.root.load(); - - callback(geometry); - } - }; - - class EptBinaryLoader { - extension() { - return '.bin'; - } - - workerPath() { - return Potree.scriptPath + '/workers/EptBinaryDecoderWorker.js'; - } - - load(node) { - if (node.loaded) return; - - let url = node.url() + this.extension(); - - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - xhr.onreadystatechange = () => { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - let buffer = xhr.response; - this.parse(node, buffer); - } else { - console.log('Failed ' + url + ': ' + xhr.status); - } - } - }; - - try { - xhr.send(null); - } - catch (e) { - console.log('Failed request: ' + e); - } - } - - parse(node, buffer) { - let workerPath = this.workerPath(); - let worker = Potree.workerPool.getWorker(workerPath); - - worker.onmessage = function(e) { - let g = new THREE.BufferGeometry(); - let numPoints = e.data.numPoints; - - let position = new Float32Array(e.data.position); - g.addAttribute('position', new THREE.BufferAttribute(position, 3)); - - let indices = new Uint8Array(e.data.indices); - g.addAttribute('indices', new THREE.BufferAttribute(indices, 4)); - - if (e.data.color) { - let color = new Uint8Array(e.data.color); - g.addAttribute('color', new THREE.BufferAttribute(color, 4, true)); - } - if (e.data.intensity) { - let intensity = new Float32Array(e.data.intensity); - g.addAttribute('intensity', - new THREE.BufferAttribute(intensity, 1)); - } - if (e.data.classification) { - let classification = new Uint8Array(e.data.classification); - g.addAttribute('classification', - new THREE.BufferAttribute(classification, 1)); - } - if (e.data.returnNumber) { - let returnNumber = new Uint8Array(e.data.returnNumber); - g.addAttribute('return number', - new THREE.BufferAttribute(returnNumber, 1)); - } - if (e.data.numberOfReturns) { - let numberOfReturns = new Uint8Array(e.data.numberOfReturns); - g.addAttribute('number of returns', - new THREE.BufferAttribute(numberOfReturns, 1)); - } - if (e.data.pointSourceId) { - let pointSourceId = new Uint16Array(e.data.pointSourceId); - g.addAttribute('source id', - new THREE.BufferAttribute(pointSourceId, 1)); - } - - g.attributes.indices.normalized = true; - - let tightBoundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(e.data.tightBoundingBox.min), - new THREE.Vector3().fromArray(e.data.tightBoundingBox.max) - ); - - node.doneLoading( - g, - tightBoundingBox, - numPoints, - new THREE.Vector3(...e.data.mean)); - - Potree.workerPool.returnWorker(workerPath, worker); - }; - - let toArray = (v) => [v.x, v.y, v.z]; - let message = { - buffer: buffer, - schema: node.ept.schema, - scale: node.ept.eptScale, - offset: node.ept.eptOffset, - mins: toArray(node.key.b.min) - }; - - worker.postMessage(message, [message.buffer]); - } - }; - - /** - * laslaz code taken and adapted from plas.io js-laslaz - * http://plas.io/ - * https://github.com/verma/plasio - * - * Thanks to Uday Verma and Howard Butler - * - */ - - class EptLaszipLoader { - load(node) { - if (node.loaded) return; - - let url = node.url() + '.laz'; - - let xhr = XHRFactory.createXMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - xhr.onreadystatechange = () => { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - let buffer = xhr.response; - this.parse(node, buffer); - } else { - console.log('Failed ' + url + ': ' + xhr.status); - } - } - }; - - xhr.send(null); - } - - async parse(node, buffer){ - let lf = new LASFile(buffer); - let handler = new EptLazBatcher(node); - - try{ - await lf.open(); - - lf.isOpen = true; - - const header = await lf.getHeader(); - - { - let i = 0; - - let toArray = (v) => [v.x, v.y, v.z]; - let mins = toArray(node.key.b.min); - let maxs = toArray(node.key.b.max); - - let hasMoreData = true; - - while(hasMoreData){ - const data = await lf.readData(1000000, 0, 1); - - let d = new LASDecoder( - data.buffer, - header.pointsFormatId, - header.pointsStructSize, - data.count, - header.scale, - header.offset, - mins, - maxs); - - d.extraBytes = header.extraBytes; - d.pointsFormatId = header.pointsFormatId; - handler.push(d); - - i += data.count; - - hasMoreData = data.hasMoreData; - } - - header.totalRead = i; - header.versionAsString = lf.versionAsString; - header.isCompressed = lf.isCompressed; - - await lf.close(); - - lf.isOpen = false; - } - - }catch(err){ - console.error('Error reading LAZ:', err); - - if (lf.isOpen) { - await lf.close(); - - lf.isOpen = false; - } - - throw err; - } - } - }; - - class EptLazBatcher { - constructor(node) { this.node = node; } - - push(las) { - let workerPath = Potree.scriptPath + - '/workers/EptLaszipDecoderWorker.js'; - let worker = Potree.workerPool.getWorker(workerPath); - - worker.onmessage = (e) => { - let g = new THREE.BufferGeometry(); - let numPoints = las.pointsCount; - - let positions = new Float32Array(e.data.position); - let colors = new Uint8Array(e.data.color); - - let intensities = new Float32Array(e.data.intensity); - let classifications = new Uint8Array(e.data.classification); - let returnNumbers = new Uint8Array(e.data.returnNumber); - let numberOfReturns = new Uint8Array(e.data.numberOfReturns); - let pointSourceIDs = new Uint16Array(e.data.pointSourceID); - let indices = new Uint8Array(e.data.indices); - let gpsTime = new Float32Array(e.data.gpsTime); - - g.addAttribute('position', - new THREE.BufferAttribute(positions, 3)); - g.addAttribute('rgba', - new THREE.BufferAttribute(colors, 4, true)); - g.addAttribute('intensity', - new THREE.BufferAttribute(intensities, 1)); - g.addAttribute('classification', - new THREE.BufferAttribute(classifications, 1)); - g.addAttribute('return number', - new THREE.BufferAttribute(returnNumbers, 1)); - g.addAttribute('number of returns', - new THREE.BufferAttribute(numberOfReturns, 1)); - g.addAttribute('source id', - new THREE.BufferAttribute(pointSourceIDs, 1)); - g.addAttribute('indices', - new THREE.BufferAttribute(indices, 4)); - g.addAttribute('gpsTime', - new THREE.BufferAttribute(gpsTime, 1)); - this.node.gpsTime = e.data.gpsMeta; - - g.attributes.indices.normalized = true; - - let tightBoundingBox = new THREE.Box3( - new THREE.Vector3().fromArray(e.data.tightBoundingBox.min), - new THREE.Vector3().fromArray(e.data.tightBoundingBox.max) - ); - - this.node.doneLoading( - g, - tightBoundingBox, - numPoints, - new THREE.Vector3(...e.data.mean)); - - Potree.workerPool.returnWorker(workerPath, worker); - }; - - let message = { - buffer: las.arrayb, - numPoints: las.pointsCount, - pointSize: las.pointSize, - pointFormatID: las.pointsFormatId, - scale: las.scale, - offset: las.offset, - mins: las.mins, - maxs: las.maxs - }; - - worker.postMessage(message, [message.buffer]); - }; - }; - - class EptZstandardLoader extends EptBinaryLoader { - extension() { - return '.zst'; - } - - workerPath() { - return Potree.scriptPath + '/workers/EptZstandardDecoderWorker.js'; - } - }; - - class ShapefileLoader{ - - constructor(){ - this.transform = null; - } - - async load(path){ - - const matLine = new THREE.LineMaterial( { - color: 0xff0000, - linewidth: 3, // in pixels - resolution: new THREE.Vector2(1000, 1000), - dashed: false - } ); - - const features = await this.loadShapefileFeatures(path); - const node = new THREE.Object3D(); - - for(const feature of features){ - const fnode = this.featureToSceneNode(feature, matLine); - node.add(fnode); - } - - let setResolution = (x, y) => { - matLine.resolution.set(x, y); - }; - - const result = { - features: features, - node: node, - setResolution: setResolution, - }; - - return result; - } - - featureToSceneNode(feature, matLine){ - let geometry = feature.geometry; - - let color = new THREE.Color(1, 1, 1); - - let transform = this.transform; - if(transform === null){ - transform = {forward: (v) => v}; - } - - if(feature.geometry.type === "Point"){ - let sg = new THREE.SphereGeometry(1, 18, 18); - let sm = new THREE.MeshNormalMaterial(); - let s = new THREE.Mesh(sg, sm); - - let [long, lat] = geometry.coordinates; - let pos = transform.forward([long, lat]); - - s.position.set(...pos, 20); - - s.scale.set(10, 10, 10); - - return s; - }else if(geometry.type === "LineString"){ - let coordinates = []; - - let min = new THREE.Vector3(Infinity, Infinity, Infinity); - for(let i = 0; i < geometry.coordinates.length; i++){ - let [long, lat] = geometry.coordinates[i]; - let pos = transform.forward([long, lat]); - - min.x = Math.min(min.x, pos[0]); - min.y = Math.min(min.y, pos[1]); - min.z = Math.min(min.z, 20); - - coordinates.push(...pos, 20); - if(i > 0 && i < geometry.coordinates.length - 1){ - coordinates.push(...pos, 20); - } - } - - for(let i = 0; i < coordinates.length; i += 3){ - coordinates[i+0] -= min.x; - coordinates[i+1] -= min.y; - coordinates[i+2] -= min.z; - } - - const lineGeometry = new THREE.LineGeometry(); - lineGeometry.setPositions( coordinates ); - - const line = new THREE.Line2( lineGeometry, matLine ); - line.computeLineDistances(); - line.scale.set( 1, 1, 1 ); - line.position.copy(min); - - return line; - }else if(geometry.type === "Polygon"){ - for(let pc of geometry.coordinates){ - let coordinates = []; - - let min = new THREE.Vector3(Infinity, Infinity, Infinity); - for(let i = 0; i < pc.length; i++){ - let [long, lat] = pc[i]; - let pos = transform.forward([long, lat]); - - min.x = Math.min(min.x, pos[0]); - min.y = Math.min(min.y, pos[1]); - min.z = Math.min(min.z, 20); - - coordinates.push(...pos, 20); - if(i > 0 && i < pc.length - 1){ - coordinates.push(...pos, 20); - } - } - - for(let i = 0; i < coordinates.length; i += 3){ - coordinates[i+0] -= min.x; - coordinates[i+1] -= min.y; - coordinates[i+2] -= min.z; - } - - const lineGeometry = new THREE.LineGeometry(); - lineGeometry.setPositions( coordinates ); - - const line = new THREE.Line2( lineGeometry, matLine ); - line.computeLineDistances(); - line.scale.set( 1, 1, 1 ); - line.position.copy(min); - - return line; - } - }else { - console.log("unhandled feature: ", feature); - } - } - - async loadShapefileFeatures(file){ - let features = []; - - let source = await shapefile.open(file); - - while(true){ - let result = await source.read(); - - if (result.done) { - break; - } - - if (result.value && result.value.type === 'Feature' && result.value.geometry !== undefined) { - features.push(result.value); - } - } - - return features; - } - - }; - - const defaultColors = { - "landuse": [0.5, 0.5, 0.5], - "natural": [0.0, 1.0, 0.0], - "places": [1.0, 0.0, 1.0], - "points": [0.0, 1.0, 1.0], - "roads": [1.0, 1.0, 0.0], - "waterways": [0.0, 0.0, 1.0], - "default": [0.9, 0.6, 0.1], - }; - - function getColor(feature){ - let color = defaultColors[feature]; - - if(!color){ - color = defaultColors["default"]; - } - - return color; - } - - class Geopackage$1{ - constructor(){ - this.path = null; - this.node = null; - } - }; - - class GeoPackageLoader{ - - constructor(){ - - } - - static async loadUrl(url, params){ - - await Promise.all([ - Utils.loadScript(`${Potree.scriptPath}/lazylibs/geopackage/geopackage.js`), - Utils.loadScript(`${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.js`), - ]); - - const result = await fetch(url); - const buffer = await result.arrayBuffer(); - - params = params || {}; - - params.source = url; - - return GeoPackageLoader.loadBuffer(buffer, params); - } - - static async loadBuffer(buffer, params){ - - await Promise.all([ - Utils.loadScript(`${Potree.scriptPath}/lazylibs/geopackage/geopackage.js`), - Utils.loadScript(`${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.js`), - ]); - - params = params || {}; - - const resolver = async (resolve) => { - - let transform = params.transform; - if(!transform){ - transform = {forward: (arg) => arg}; - } - - const wasmPath = `${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.wasm`; - const SQL = await initSqlJs({ locateFile: filename => wasmPath}); - - const u8 = new Uint8Array(buffer); - - const data = await geopackage.open(u8); - window.data = data; - - const geopackageNode = new THREE.Object3D(); - geopackageNode.name = params.source; - geopackageNode.potree = { - source: params.source, - }; - - const geo = new Geopackage$1(); - geo.path = params.source; - geo.node = geopackageNode; - - const tables = data.getTables(); - - for(const table of tables.features){ - const dao = data.getFeatureDao(table); - - let boundingBox = dao.getBoundingBox(); - boundingBox = boundingBox.projectBoundingBox(dao.projection, 'EPSG:4326'); - const geoJson = data.queryForGeoJSONFeaturesInTable(table, boundingBox); - - const matLine = new THREE.LineMaterial( { - color: new THREE.Color().setRGB(...getColor(table)), - linewidth: 2, - resolution: new THREE.Vector2(1000, 1000), - dashed: false - } ); - - const node = new THREE.Object3D(); - node.name = table; - geo.node.add(node); - - for(const [index, feature] of Object.entries(geoJson)){ - //const featureNode = GeoPackageLoader.featureToSceneNode(feature, matLine, transform); - const featureNode = GeoPackageLoader.featureToSceneNode(feature, matLine, dao.projection, transform); - node.add(featureNode); - } - } - - resolve(geo); - }; - - return new Promise(resolver); - } - - static featureToSceneNode(feature, matLine, geopackageProjection, transform){ - let geometry = feature.geometry; - - let color = new THREE.Color(1, 1, 1); - - if(feature.geometry.type === "Point"){ - let sg = new THREE.SphereGeometry(1, 18, 18); - let sm = new THREE.MeshNormalMaterial(); - let s = new THREE.Mesh(sg, sm); - - let [long, lat] = geometry.coordinates; - let pos = transform.forward(geopackageProjection.forward([long, lat])); - - s.position.set(...pos, 20); - - s.scale.set(10, 10, 10); - - return s; - }else if(geometry.type === "LineString"){ - let coordinates = []; - - let min = new THREE.Vector3(Infinity, Infinity, Infinity); - for(let i = 0; i < geometry.coordinates.length; i++){ - let [long, lat] = geometry.coordinates[i]; - let pos = transform.forward(geopackageProjection.forward([long, lat])); - - min.x = Math.min(min.x, pos[0]); - min.y = Math.min(min.y, pos[1]); - min.z = Math.min(min.z, 20); - - coordinates.push(...pos, 20); - if(i > 0 && i < geometry.coordinates.length - 1){ - coordinates.push(...pos, 20); - } - } - - for(let i = 0; i < coordinates.length; i += 3){ - coordinates[i+0] -= min.x; - coordinates[i+1] -= min.y; - coordinates[i+2] -= min.z; - } - - const lineGeometry = new THREE.LineGeometry(); - lineGeometry.setPositions( coordinates ); - - const line = new THREE.Line2( lineGeometry, matLine ); - line.computeLineDistances(); - line.scale.set( 1, 1, 1 ); - line.position.copy(min); - - return line; - }else if(geometry.type === "Polygon"){ - for(let pc of geometry.coordinates){ - let coordinates = []; - - let min = new THREE.Vector3(Infinity, Infinity, Infinity); - for(let i = 0; i < pc.length; i++){ - let [long, lat] = pc[i]; - - let pos = transform.forward(geopackageProjection.forward([long, lat])); - - min.x = Math.min(min.x, pos[0]); - min.y = Math.min(min.y, pos[1]); - min.z = Math.min(min.z, 20); - - coordinates.push(...pos, 20); - if(i > 0 && i < pc.length - 1){ - coordinates.push(...pos, 20); - } - } - - for(let i = 0; i < coordinates.length; i += 3){ - coordinates[i+0] -= min.x; - coordinates[i+1] -= min.y; - coordinates[i+2] -= min.z; - } - - const lineGeometry = new THREE.LineGeometry(); - lineGeometry.setPositions( coordinates ); - - const line = new THREE.Line2( lineGeometry, matLine ); - line.computeLineDistances(); - line.scale.set( 1, 1, 1 ); - line.position.copy(min); - - return line; - } - }else { - console.log("unhandled feature: ", feature); - } - } - - }; - - class ClipVolume extends THREE.Object3D{ - - constructor(args){ - super(); - - this.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1; - this.name = "clip_volume_" + this.constructor.counter; - - let alpha = args.alpha || 0; - let beta = args.beta || 0; - let gamma = args.gamma || 0; - - this.rotation.x = alpha; - this.rotation.y = beta; - this.rotation.z = gamma; - - this.clipOffset = 0.001; - this.clipRotOffset = 1; - - let boxGeometry = new THREE.BoxGeometry(1, 1, 1); - boxGeometry.computeBoundingBox(); - - let boxFrameGeometry = new THREE.Geometry(); - { - // bottom - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - // top - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - // sides - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - - boxFrameGeometry.colors.push(new THREE.Vector3(1, 1, 1)); - } - - let planeFrameGeometry = new THREE.Geometry(); - { - // middle line - planeFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.0)); - planeFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.0)); - } - - this.dimension = new THREE.Vector3(1, 1, 1); - this.material = new THREE.MeshBasicMaterial( { - color: 0x00ff00, - transparent: true, - opacity: 0.3, - depthTest: true, - depthWrite: false} ); - this.box = new THREE.Mesh(boxGeometry, this.material); - this.box.geometry.computeBoundingBox(); - this.boundingBox = this.box.geometry.boundingBox; - this.add(this.box); - - this.frame = new THREE.LineSegments( boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000})); - this.add(this.frame); - this.planeFrame = new THREE.LineSegments( planeFrameGeometry, new THREE.LineBasicMaterial({color: 0xff0000})); - this.add(this.planeFrame); - - // set default thickness - this.setScaleZ(0.1); - - // create local coordinate system - let createArrow = (name, direction, color) => { - let material = new THREE.MeshBasicMaterial({ - color: color, - depthTest: false, - depthWrite: false}); - - let shaftGeometry = new THREE.Geometry(); - shaftGeometry.vertices.push(new THREE.Vector3(0, 0, 0)); - shaftGeometry.vertices.push(new THREE.Vector3(0, 1, 0)); - - let shaftMaterial = new THREE.LineBasicMaterial({ - color: color, - depthTest: false, - depthWrite: false, - transparent: true - }); - let shaft = new THREE.Line(shaftGeometry, shaftMaterial); - shaft.name = name + "_shaft"; - - let headGeometry = new THREE.CylinderGeometry(0, 0.04, 0.1, 10, 1, false); - let headMaterial = material; - let head = new THREE.Mesh(headGeometry, headMaterial); - head.name = name + "_head"; - head.position.y = 1; - - let arrow = new THREE.Object3D(); - arrow.name = name; - arrow.add(shaft); - arrow.add(head); - - return arrow; - }; - - this.arrowX = createArrow("arrow_x", new THREE.Vector3(1, 0, 0), 0xFF0000); - this.arrowY = createArrow("arrow_y", new THREE.Vector3(0, 1, 0), 0x00FF00); - this.arrowZ = createArrow("arrow_z", new THREE.Vector3(0, 0, 1), 0x0000FF); - - this.arrowX.rotation.z = -Math.PI / 2; - this.arrowZ.rotation.x = Math.PI / 2; - - this.arrowX.visible = false; - this.arrowY.visible = false; - this.arrowZ.visible = false; - - this.add(this.arrowX); - this.add(this.arrowY); - this.add(this.arrowZ); - - { // event listeners - this.addEventListener("ui_select", e => { - this.arrowX.visible = true; - this.arrowY.visible = true; - this.arrowZ.visible = true; - }); - this.addEventListener("ui_deselect", e => { - this.arrowX.visible = false; - this.arrowY.visible = false; - this.arrowZ.visible = false; - }); - this.addEventListener("select", e => { - let scene_header = $("#" + this.name + " .scene_header"); - if(!scene_header.next().is(":visible")) { - scene_header.click(); - } - }); - this.addEventListener("deselect", e => { - let scene_header = $("#" + this.name + " .scene_header"); - if(scene_header.next().is(":visible")) { - scene_header.click(); - } - }); - } - - this.update(); - }; - - setClipOffset(offset) { - this.clipOffset = offset; - } - - setClipRotOffset(offset) { - this.clipRotOffset = offset; - } - - setScaleX(x) { - this.box.scale.x = x; - this.frame.scale.x = x; - this.planeFrame.scale.x = x; - } - - setScaleY(y) { - this.box.scale.y = y; - this.frame.scale.y = y; - this.planeFrame.scale.y = y; - } - - setScaleZ(z) { - this.box.scale.z = z; - this.frame.scale.z = z; - this.planeFrame.scale.z = z; - } - - offset(args) { - let cs = args.cs || null; - let axis = args.axis || null; - let dir = args.dir || null; - - if(!cs || !axis || !dir) return; - - if(axis === "x") { - if(cs === "local") { - this.position.add(this.localX.clone().multiplyScalar(dir * this.clipOffset)); - } else if(cs === "global") { - this.position.x = this.position.x + dir * this.clipOffset; - } - }else if(axis === "y") { - if(cs === "local") { - this.position.add(this.localY.clone().multiplyScalar(dir * this.clipOffset)); - } else if(cs === "global") { - this.position.y = this.position.y + dir * this.clipOffset; - } - }else if(axis === "z") { - if(cs === "local") { - this.position.add(this.localZ.clone().multiplyScalar(dir * this.clipOffset)); - } else if(cs === "global") { - this.position.z = this.position.z + dir * this.clipOffset; - } - } - - this.dispatchEvent({"type": "clip_volume_changed", "viewer": viewer, "volume": this}); - } - - rotate(args) { - let cs = args.cs || null; - let axis = args.axis || null; - let dir = args.dir || null; - - if(!cs || !axis || !dir) return; - - if(cs === "local") { - if(axis === "x") { - this.rotateOnAxis(new THREE.Vector3(1, 0, 0), dir * this.clipRotOffset * Math.PI / 180); - } else if(axis === "y") { - this.rotateOnAxis(new THREE.Vector3(0, 1, 0), dir * this.clipRotOffset * Math.PI / 180); - } else if(axis === "z") { - this.rotateOnAxis(new THREE.Vector3(0, 0, 1), dir * this.clipRotOffset * Math.PI / 180); - } - } else if(cs === "global") { - let rotaxis = new THREE.Vector4(1, 0, 0, 0); - if(axis === "y") { - rotaxis = new THREE.Vector4(0, 1, 0, 0); - } else if(axis === "z") { - rotaxis = new THREE.Vector4(0, 0, 1, 0); - } - this.updateMatrixWorld(); - let invM = new THREE.Matrix4().getInverse(this.matrixWorld); - rotaxis = rotaxis.applyMatrix4(invM).normalize(); - rotaxis = new THREE.Vector3(rotaxis.x, rotaxis.y, rotaxis.z); - this.rotateOnAxis(rotaxis, dir * this.clipRotOffset * Math.PI / 180); - } - - this.updateLocalSystem(); - - this.dispatchEvent({"type": "clip_volume_changed", "viewer": viewer, "volume": this}); - } - - update(){ - this.boundingBox = this.box.geometry.boundingBox; - this.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere()); - - this.box.visible = false; - - this.updateLocalSystem(); - }; - - updateLocalSystem() { - // extract local coordinate axes - let rotQuat = this.getWorldQuaternion(); - this.localX = new THREE.Vector3(1, 0, 0).applyQuaternion(rotQuat).normalize(); - this.localY = new THREE.Vector3(0, 1, 0).applyQuaternion(rotQuat).normalize(); - this.localZ = new THREE.Vector3(0, 0, 1).applyQuaternion(rotQuat).normalize(); - } - - raycast(raycaster, intersects){ - - let is = []; - this.box.raycast(raycaster, is); - - if(is.length > 0){ - let I = is[0]; - intersects.push({ - distance: I.distance, - object: this, - point: I.point.clone() - }); - } - }; - }; - - class ClippingTool extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - - this.maxPolygonVertices = 8; - - this.addEventListener("start_inserting_clipping_volume", e => { - this.viewer.dispatchEvent({ - type: "cancel_insertions" - }); - }); - - this.sceneMarker = new THREE.Scene(); - this.sceneVolume = new THREE.Scene(); - this.sceneVolume.name = "scene_clip_volume"; - this.viewer.inputHandler.registerInteractiveScene(this.sceneVolume); - - this.onRemove = e => { - this.sceneVolume.remove(e.volume); - }; - - this.onAdd = e => { - this.sceneVolume.add(e.volume); - }; - - this.viewer.inputHandler.addEventListener("delete", e => { - let volumes = e.selection.filter(e => (e instanceof ClipVolume)); - volumes.forEach(e => this.viewer.scene.removeClipVolume(e)); - let polyVolumes = e.selection.filter(e => (e instanceof PolygonClipVolume)); - polyVolumes.forEach(e => this.viewer.scene.removePolygonClipVolume(e)); - }); - } - - setScene(scene){ - if(this.scene === scene){ - return; - } - - if(this.scene){ - this.scene.removeEventListeners("clip_volume_added", this.onAdd); - this.scene.removeEventListeners("clip_volume_removed", this.onRemove); - this.scene.removeEventListeners("polygon_clip_volume_added", this.onAdd); - this.scene.removeEventListeners("polygon_clip_volume_removed", this.onRemove); - } - - this.scene = scene; - - this.scene.addEventListener("clip_volume_added", this.onAdd); - this.scene.addEventListener("clip_volume_removed", this.onRemove); - this.scene.addEventListener("polygon_clip_volume_added", this.onAdd); - this.scene.addEventListener("polygon_clip_volume_removed", this.onRemove); - } - - startInsertion(args = {}) { - let type = args.type || null; - - if(!type) return null; - - let domElement = this.viewer.renderer.domElement; - let canvasSize = this.viewer.renderer.getSize(new THREE.Vector2()); - - let svg = $(` - - - - - - - - - - - - `); - $(domElement.parentElement).append(svg); - - let polyClipVol = new PolygonClipVolume(this.viewer.scene.getActiveCamera().clone()); - - this.dispatchEvent({"type": "start_inserting_clipping_volume"}); - - this.viewer.scene.addPolygonClipVolume(polyClipVol); - this.sceneMarker.add(polyClipVol); - - let cancel = { - callback: null - }; - - let insertionCallback = (e) => { - if(e.button === THREE.MOUSE.LEFT){ - - polyClipVol.addMarker(); - - // SVC Screen Line - svg.find("polyline").each((index, target) => { - let newPoint = svg[0].createSVGPoint(); - newPoint.x = e.offsetX; - newPoint.y = e.offsetY; - let polyline = target.points.appendItem(newPoint); - }); - - - if(polyClipVol.markers.length > this.maxPolygonVertices){ - cancel.callback(); - } - - this.viewer.inputHandler.startDragging( - polyClipVol.markers[polyClipVol.markers.length - 1]); - }else if(e.button === THREE.MOUSE.RIGHT){ - cancel.callback(e); - } - }; - - cancel.callback = e => { - - //let first = svg.find("polyline")[0].points[0]; - //svg.find("polyline").each((index, target) => { - // let newPoint = svg[0].createSVGPoint(); - // newPoint.x = first.x; - // newPoint.y = first.y; - // let polyline = target.points.appendItem(newPoint); - //}); - svg.remove(); - - if(polyClipVol.markers.length > 3) { - polyClipVol.removeLastMarker(); - polyClipVol.initialized = true; - } else { - this.viewer.scene.removePolygonClipVolume(polyClipVol); - } - - this.viewer.renderer.domElement.removeEventListener("mouseup", insertionCallback, true); - this.viewer.removeEventListener("cancel_insertions", cancel.callback); - this.viewer.inputHandler.enabled = true; - }; - - this.viewer.addEventListener("cancel_insertions", cancel.callback); - this.viewer.renderer.domElement.addEventListener("mouseup", insertionCallback , true); - this.viewer.inputHandler.enabled = false; - - polyClipVol.addMarker(); - this.viewer.inputHandler.startDragging( - polyClipVol.markers[polyClipVol.markers.length - 1]); - - return polyClipVol; - } - - update() { - - } - }; - - var GeoTIFF = (function (exports) { - 'use strict'; - - const Endianness = new Enum({ - LITTLE: "II", - BIG: "MM", - }); - - const Type = new Enum({ - BYTE: {value: 1, bytes: 1}, - ASCII: {value: 2, bytes: 1}, - SHORT: {value: 3, bytes: 2}, - LONG: {value: 4, bytes: 4}, - RATIONAL: {value: 5, bytes: 8}, - SBYTE: {value: 6, bytes: 1}, - UNDEFINED: {value: 7, bytes: 1}, - SSHORT: {value: 8, bytes: 2}, - SLONG: {value: 9, bytes: 4}, - SRATIONAL: {value: 10, bytes: 8}, - FLOAT: {value: 11, bytes: 4}, - DOUBLE: {value: 12, bytes: 8}, - }); - - const Tag = new Enum({ - IMAGE_WIDTH: 256, - IMAGE_HEIGHT: 257, - BITS_PER_SAMPLE: 258, - COMPRESSION: 259, - PHOTOMETRIC_INTERPRETATION: 262, - STRIP_OFFSETS: 273, - ORIENTATION: 274, - SAMPLES_PER_PIXEL: 277, - ROWS_PER_STRIP: 278, - STRIP_BYTE_COUNTS: 279, - X_RESOLUTION: 282, - Y_RESOLUTION: 283, - PLANAR_CONFIGURATION: 284, - RESOLUTION_UNIT: 296, - SOFTWARE: 305, - COLOR_MAP: 320, - SAMPLE_FORMAT: 339, - MODEL_PIXEL_SCALE: 33550, // [GeoTIFF] TYPE: double N: 3 - MODEL_TIEPOINT: 33922, // [GeoTIFF] TYPE: double N: 6 * NUM_TIEPOINTS - GEO_KEY_DIRECTORY: 34735, // [GeoTIFF] TYPE: short N: >= 4 - GEO_DOUBLE_PARAMS: 34736, // [GeoTIFF] TYPE: short N: variable - GEO_ASCII_PARAMS: 34737, // [GeoTIFF] TYPE: ascii N: variable - }); - - const typeMapping = new Map([ - [Type.BYTE, Uint8Array], - [Type.ASCII, Uint8Array], - [Type.SHORT, Uint16Array], - [Type.LONG, Uint32Array], - [Type.RATIONAL, Uint32Array], - [Type.SBYTE, Int8Array], - [Type.UNDEFINED, Uint8Array], - [Type.SSHORT, Int16Array], - [Type.SLONG, Int32Array], - [Type.SRATIONAL, Int32Array], - [Type.FLOAT, Float32Array], - [Type.DOUBLE, Float64Array], - ]); - - class IFDEntry{ - - constructor(tag, type, count, offset, value){ - this.tag = tag; - this.type = type; - this.count = count; - this.offset = offset; - this.value = value; - } - - } - - class Image{ - - constructor(){ - this.width = 0; - this.height = 0; - this.buffer = null; - this.metadata = []; - } - - } - - class Reader{ - - constructor(){ - - } - - static read(data){ - - let endiannessTag = String.fromCharCode(...Array.from(data.slice(0, 2))); - let endianness = Endianness.fromValue(endiannessTag); - - let tiffCheckTag = data.readUInt8(2); - - if(tiffCheckTag !== 42){ - throw new Error("not a valid tiff file"); - } - - let offsetToFirstIFD = data.readUInt32LE(4); - - console.log("offsetToFirstIFD", offsetToFirstIFD); - - let ifds = []; - let IFDsRead = false; - let currentIFDOffset = offsetToFirstIFD; - let i = 0; - while(IFDsRead || i < 100){ - - console.log("currentIFDOffset", currentIFDOffset); - let numEntries = data.readUInt16LE(currentIFDOffset); - let nextIFDOffset = data.readUInt32LE(currentIFDOffset + 2 + numEntries * 12); - - console.log("next offset: ", currentIFDOffset + 2 + numEntries * 12); - - let entryBuffer = data.slice(currentIFDOffset + 2, currentIFDOffset + 2 + 12 * numEntries); - - for(let i = 0; i < numEntries; i++){ - let tag = Tag.fromValue(entryBuffer.readUInt16LE(i * 12)); - let type = Type.fromValue(entryBuffer.readUInt16LE(i * 12 + 2)); - let count = entryBuffer.readUInt32LE(i * 12 + 4); - let offsetOrValue = entryBuffer.readUInt32LE(i * 12 + 8); - let valueBytes = type.bytes * count; - - let value; - if(valueBytes <= 4){ - value = offsetOrValue; - }else { - let valueBuffer = new Uint8Array(valueBytes); - valueBuffer.set(data.slice(offsetOrValue, offsetOrValue + valueBytes)); - - let ArrayType = typeMapping.get(type); - - value = new ArrayType(valueBuffer.buffer); - - if(type === Type.ASCII){ - value = String.fromCharCode(...value); - } - } - - let ifd = new IFDEntry(tag, type, count, offsetOrValue, value); - - ifds.push(ifd); - } - - console.log("nextIFDOffset", nextIFDOffset); - - if(nextIFDOffset === 0){ - break; - } - - currentIFDOffset = nextIFDOffset; - i++; - } - - let ifdForTag = (tag) => { - for(let entry of ifds){ - if(entry.tag === tag){ - return entry; - } - } - - return null; - }; - - let width = ifdForTag(Tag.IMAGE_WIDTH, ifds).value; - let height = ifdForTag(Tag.IMAGE_HEIGHT, ifds).value; - let compression = ifdForTag(Tag.COMPRESSION, ifds).value; - let rowsPerStrip = ifdForTag(Tag.ROWS_PER_STRIP, ifds).value; - let ifdStripOffsets = ifdForTag(Tag.STRIP_OFFSETS, ifds); - let ifdStripByteCounts = ifdForTag(Tag.STRIP_BYTE_COUNTS, ifds); - - let numStrips = Math.ceil(height / rowsPerStrip); - - let stripByteCounts = []; - for(let i = 0; i < ifdStripByteCounts.count; i++){ - let type = ifdStripByteCounts.type; - let offset = ifdStripByteCounts.offset + i * type.bytes; - - let value; - if(type === Type.SHORT){ - value = data.readUInt16LE(offset); - }else if(type === Type.LONG){ - value = data.readUInt32LE(offset); - } - - stripByteCounts.push(value); - } - - let stripOffsets = []; - for(let i = 0; i < ifdStripOffsets.count; i++){ - let type = ifdStripOffsets.type; - let offset = ifdStripOffsets.offset + i * type.bytes; - - let value; - if(type === Type.SHORT){ - value = data.readUInt16LE(offset); - }else if(type === Type.LONG){ - value = data.readUInt32LE(offset); - } - - stripOffsets.push(value); - } - - let imageBuffer = new Uint8Array(width * height * 3); - - let linesProcessed = 0; - for(let i = 0; i < numStrips; i++){ - let stripOffset = stripOffsets[i]; - let stripBytes = stripByteCounts[i]; - let stripData = data.slice(stripOffset, stripOffset + stripBytes); - let lineBytes = width * 3; - for(let y = 0; y < rowsPerStrip; y++){ - let line = stripData.slice(y * lineBytes, y * lineBytes + lineBytes); - imageBuffer.set(line, linesProcessed * lineBytes); - - if(line.length === lineBytes){ - linesProcessed++; - }else { - break; - } - } - } - - console.log(`width: ${width}`); - console.log(`height: ${height}`); - console.log(`numStrips: ${numStrips}`); - console.log("stripByteCounts", stripByteCounts.join(", ")); - console.log("stripOffsets", stripOffsets.join(", ")); - - let image = new Image(); - image.width = width; - image.height = height; - image.buffer = imageBuffer; - image.metadata = ifds; - - return image; - } - - } - - - class Exporter{ - - constructor(){ - - } - - static toTiffBuffer(image, params = {}){ - - let offsetToFirstIFD = 8; - - let headerBuffer = new Uint8Array([0x49, 0x49, 42, 0, offsetToFirstIFD, 0, 0, 0]); - - let [width, height] = [image.width, image.height]; - - let ifds = [ - new IFDEntry(Tag.IMAGE_WIDTH, Type.SHORT, 1, null, width), - new IFDEntry(Tag.IMAGE_HEIGHT, Type.SHORT, 1, null, height), - new IFDEntry(Tag.BITS_PER_SAMPLE, Type.SHORT, 4, null, new Uint16Array([8, 8, 8, 8])), - new IFDEntry(Tag.COMPRESSION, Type.SHORT, 1, null, 1), - new IFDEntry(Tag.PHOTOMETRIC_INTERPRETATION, Type.SHORT, 1, null, 2), - new IFDEntry(Tag.ORIENTATION, Type.SHORT, 1, null, 1), - new IFDEntry(Tag.SAMPLES_PER_PIXEL, Type.SHORT, 1, null, 4), - new IFDEntry(Tag.ROWS_PER_STRIP, Type.LONG, 1, null, height), - new IFDEntry(Tag.STRIP_BYTE_COUNTS, Type.LONG, 1, null, width * height * 3), - new IFDEntry(Tag.PLANAR_CONFIGURATION, Type.SHORT, 1, null, 1), - new IFDEntry(Tag.RESOLUTION_UNIT, Type.SHORT, 1, null, 1), - new IFDEntry(Tag.SOFTWARE, Type.ASCII, 6, null, "......"), - new IFDEntry(Tag.STRIP_OFFSETS, Type.LONG, 1, null, null), - new IFDEntry(Tag.X_RESOLUTION, Type.RATIONAL, 1, null, new Uint32Array([1, 1])), - new IFDEntry(Tag.Y_RESOLUTION, Type.RATIONAL, 1, null, new Uint32Array([1, 1])), - ]; - - if(params.ifdEntries){ - ifds.push(...params.ifdEntries); - } - - let valueOffset = offsetToFirstIFD + 2 + ifds.length * 12 + 4; - - // create 12 byte buffer for each ifd and variable length buffers for ifd values - let ifdEntryBuffers = new Map(); - let ifdValueBuffers = new Map(); - for(let ifd of ifds){ - let entryBuffer = new ArrayBuffer(12); - let entryView = new DataView(entryBuffer); - - let valueBytes = ifd.type.bytes * ifd.count; - - entryView.setUint16(0, ifd.tag.value, true); - entryView.setUint16(2, ifd.type.value, true); - entryView.setUint32(4, ifd.count, true); - - if(ifd.count === 1 && ifd.type.bytes <= 4){ - entryView.setUint32(8, ifd.value, true); - }else { - entryView.setUint32(8, valueOffset, true); - - let valueBuffer = new Uint8Array(ifd.count * ifd.type.bytes); - if(ifd.type === Type.ASCII){ - valueBuffer.set(new Uint8Array(ifd.value.split("").map(c => c.charCodeAt(0)))); - }else { - valueBuffer.set(new Uint8Array(ifd.value.buffer)); - } - ifdValueBuffers.set(ifd.tag, valueBuffer); - - valueOffset = valueOffset + valueBuffer.byteLength; - } - - ifdEntryBuffers.set(ifd.tag, entryBuffer); - } - - let imageBufferOffset = valueOffset; - - new DataView(ifdEntryBuffers.get(Tag.STRIP_OFFSETS)).setUint32(8, imageBufferOffset, true); - - let concatBuffers = (buffers) => { - - let totalLength = buffers.reduce( (sum, buffer) => (sum + buffer.byteLength), 0); - let merged = new Uint8Array(totalLength); - - let offset = 0; - for(let buffer of buffers){ - merged.set(new Uint8Array(buffer), offset); - offset += buffer.byteLength; - } - - return merged; - }; - - let ifdBuffer = concatBuffers([ - new Uint16Array([ifds.length]), - ...ifdEntryBuffers.values(), - new Uint32Array([0])]); - let ifdValueBuffer = concatBuffers([...ifdValueBuffers.values()]); - - let tiffBuffer = concatBuffers([ - headerBuffer, - ifdBuffer, - ifdValueBuffer, - image.buffer - ]); - - return {width: width, height: height, buffer: tiffBuffer}; - } - - } - - exports.Tag = Tag; - exports.Type = Type; - exports.IFDEntry = IFDEntry; - exports.Image = Image; - exports.Reader = Reader; - exports.Exporter = Exporter; - - return exports; - - }({})); - - function updateAzimuth(viewer, measure){ - - const azimuth = measure.azimuth; - - const isOkay = measure.points.length === 2; - - azimuth.node.visible = isOkay && measure.showAzimuth; - - if(!azimuth.node.visible){ - return; - } - - const camera = viewer.scene.getActiveCamera(); - const renderAreaSize = viewer.renderer.getSize(new THREE.Vector2()); - const width = renderAreaSize.width; - const height = renderAreaSize.height; - - const [p0, p1] = measure.points; - const r = p0.position.distanceTo(p1.position); - const northVec = Utils.getNorthVec(p0.position, r, viewer.getProjection()); - const northPos = p0.position.clone().add(northVec); - - azimuth.center.position.copy(p0.position); - azimuth.center.scale.set(2, 2, 2); - - azimuth.center.visible = false; - // azimuth.target.visible = false; - - - { // north - azimuth.north.position.copy(northPos); - azimuth.north.scale.set(2, 2, 2); - - let distance = azimuth.north.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, width, height); - - let scale = (5 / pr); - azimuth.north.scale.set(scale, scale, scale); - } - - { // target - azimuth.target.position.copy(p1.position); - azimuth.target.position.z = azimuth.north.position.z; - - let distance = azimuth.target.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, width, height); - - let scale = (5 / pr); - azimuth.target.scale.set(scale, scale, scale); - } - - - azimuth.circle.position.copy(p0.position); - azimuth.circle.scale.set(r, r, r); - azimuth.circle.material.resolution.set(width, height); - - // to target - azimuth.centerToTarget.geometry.setPositions([ - 0, 0, 0, - ...p1.position.clone().sub(p0.position).toArray(), - ]); - azimuth.centerToTarget.position.copy(p0.position); - azimuth.centerToTarget.geometry.verticesNeedUpdate = true; - azimuth.centerToTarget.geometry.computeBoundingSphere(); - azimuth.centerToTarget.computeLineDistances(); - azimuth.centerToTarget.material.resolution.set(width, height); - - // to target ground - azimuth.centerToTargetground.geometry.setPositions([ - 0, 0, 0, - p1.position.x - p0.position.x, - p1.position.y - p0.position.y, - 0, - ]); - azimuth.centerToTargetground.position.copy(p0.position); - azimuth.centerToTargetground.geometry.verticesNeedUpdate = true; - azimuth.centerToTargetground.geometry.computeBoundingSphere(); - azimuth.centerToTargetground.computeLineDistances(); - azimuth.centerToTargetground.material.resolution.set(width, height); - - // to north - azimuth.centerToNorth.geometry.setPositions([ - 0, 0, 0, - northPos.x - p0.position.x, - northPos.y - p0.position.y, - 0, - ]); - azimuth.centerToNorth.position.copy(p0.position); - azimuth.centerToNorth.geometry.verticesNeedUpdate = true; - azimuth.centerToNorth.geometry.computeBoundingSphere(); - azimuth.centerToNorth.computeLineDistances(); - azimuth.centerToNorth.material.resolution.set(width, height); - - // label - const radians = Utils.computeAzimuth(p0.position, p1.position, viewer.getProjection()); - let degrees = THREE.Math.radToDeg(radians); - if(degrees < 0){ - degrees = 360 + degrees; - } - const txtDegrees = `${degrees.toFixed(2)}°`; - const labelDir = northPos.clone().add(p1.position).multiplyScalar(0.5).sub(p0.position); - if(labelDir.length() > 0){ - labelDir.z = 0; - labelDir.normalize(); - const labelVec = labelDir.clone().multiplyScalar(r); - const labelPos = p0.position.clone().add(labelVec); - azimuth.label.position.copy(labelPos); - } - azimuth.label.setText(txtDegrees); - let distance = azimuth.label.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, width, height); - let scale = (70 / pr); - azimuth.label.scale.set(scale, scale, scale); - } - - class MeasuringTool extends EventDispatcher{ - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.addEventListener('start_inserting_measurement', e => { - this.viewer.dispatchEvent({ - type: 'cancel_insertions' - }); - }); - - this.showLabels = true; - this.scene = new THREE.Scene(); - this.scene.name = 'scene_measurement'; - this.light = new THREE.PointLight(0xffffff, 1.0); - this.scene.add(this.light); - - this.viewer.inputHandler.registerInteractiveScene(this.scene); - - this.onRemove = (e) => { this.scene.remove(e.measurement);}; - this.onAdd = e => {this.scene.add(e.measurement);}; - - for(let measurement of viewer.scene.measurements){ - this.onAdd({measurement: measurement}); - } - - viewer.addEventListener("update", this.update.bind(this)); - viewer.addEventListener("render.pass.perspective_overlay", this.render.bind(this)); - viewer.addEventListener("scene_changed", this.onSceneChange.bind(this)); - - viewer.scene.addEventListener('measurement_added', this.onAdd); - viewer.scene.addEventListener('measurement_removed', this.onRemove); - } - - onSceneChange(e){ - if(e.oldScene){ - e.oldScene.removeEventListener('measurement_added', this.onAdd); - e.oldScene.removeEventListener('measurement_removed', this.onRemove); - } - - e.scene.addEventListener('measurement_added', this.onAdd); - e.scene.addEventListener('measurement_removed', this.onRemove); - } - - startInsertion (args = {}) { - let domElement = this.viewer.renderer.domElement; - - let measure = new Measure(); - - this.dispatchEvent({ - type: 'start_inserting_measurement', - measure: measure - }); - - const pick = (defaul, alternative) => { - if(defaul != null){ - return defaul; - }else { - return alternative; - } - }; - - measure.showDistances = (args.showDistances === null) ? true : args.showDistances; - - measure.showArea = pick(args.showArea, false); - measure.showAngles = pick(args.showAngles, false); - measure.showCoordinates = pick(args.showCoordinates, false); - measure.showHeight = pick(args.showHeight, false); - measure.showCircle = pick(args.showCircle, false); - measure.showAzimuth = pick(args.showAzimuth, false); - measure.showEdges = pick(args.showEdges, true); - measure.closed = pick(args.closed, false); - measure.maxMarkers = pick(args.maxMarkers, Infinity); - - measure.name = args.name || 'Measurement'; - - this.scene.add(measure); - - let cancel = { - removeLastMarker: measure.maxMarkers > 3, - callback: null - }; - - let insertionCallback = (e) => { - if (e.button === THREE.MOUSE.LEFT) { - measure.addMarker(measure.points[measure.points.length - 1].position.clone()); - - if (measure.points.length >= measure.maxMarkers) { - cancel.callback(); - } - - this.viewer.inputHandler.startDragging( - measure.spheres[measure.spheres.length - 1]); - } else if (e.button === THREE.MOUSE.RIGHT) { - cancel.callback(); - } - }; - - cancel.callback = e => { - if (cancel.removeLastMarker) { - measure.removeMarker(measure.points.length - 1); - } - domElement.removeEventListener('mouseup', insertionCallback, true); - this.viewer.removeEventListener('cancel_insertions', cancel.callback); - }; - - if (measure.maxMarkers > 1) { - this.viewer.addEventListener('cancel_insertions', cancel.callback); - domElement.addEventListener('mouseup', insertionCallback, true); - } - - measure.addMarker(new THREE.Vector3(0, 0, 0)); - this.viewer.inputHandler.startDragging( - measure.spheres[measure.spheres.length - 1]); - - this.viewer.scene.addMeasurement(measure); - - return measure; - } - - update(){ - let camera = this.viewer.scene.getActiveCamera(); - let domElement = this.renderer.domElement; - let measurements = this.viewer.scene.measurements; - - const renderAreaSize = this.renderer.getSize(new THREE.Vector2()); - let clientWidth = renderAreaSize.width; - let clientHeight = renderAreaSize.height; - - this.light.position.copy(camera.position); - - // make size independant of distance - for (let measure of measurements) { - measure.lengthUnit = this.viewer.lengthUnit; - measure.lengthUnitDisplay = this.viewer.lengthUnitDisplay; - measure.update(); - - updateAzimuth(viewer, measure); - - // spheres - for(let sphere of measure.spheres){ - let distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3())); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - let scale = (15 / pr); - sphere.scale.set(scale, scale, scale); - } - - // labels - let labels = measure.edgeLabels.concat(measure.angleLabels); - for(let label of labels){ - let distance = camera.position.distanceTo(label.getWorldPosition(new THREE.Vector3())); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - let scale = (70 / pr); - - if(Potree.debug.scale){ - scale = (Potree.debug.scale / pr); - } - - label.scale.set(scale, scale, scale); - } - - // coordinate labels - for (let j = 0; j < measure.coordinateLabels.length; j++) { - let label = measure.coordinateLabels[j]; - let sphere = measure.spheres[j]; - - let distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3())); - - let screenPos = sphere.getWorldPosition(new THREE.Vector3()).clone().project(camera); - screenPos.x = Math.round((screenPos.x + 1) * clientWidth / 2); - screenPos.y = Math.round((-screenPos.y + 1) * clientHeight / 2); - screenPos.z = 0; - screenPos.y -= 30; - - let labelPos = new THREE.Vector3( - (screenPos.x / clientWidth) * 2 - 1, - -(screenPos.y / clientHeight) * 2 + 1, - 0.5 ); - labelPos.unproject(camera); - if(this.viewer.scene.cameraMode == CameraMode.PERSPECTIVE) { - let direction = labelPos.sub(camera.position).normalize(); - labelPos = new THREE.Vector3().addVectors( - camera.position, direction.multiplyScalar(distance)); - - } - label.position.copy(labelPos); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - let scale = (70 / pr); - label.scale.set(scale, scale, scale); - } - - // height label - if (measure.showHeight) { - let label = measure.heightLabel; - - { - let distance = label.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - let scale = (70 / pr); - label.scale.set(scale, scale, scale); - } - - { // height edge - let edge = measure.heightEdge; - - let sorted = measure.points.slice().sort((a, b) => a.position.z - b.position.z); - let lowPoint = sorted[0].position.clone(); - let highPoint = sorted[sorted.length - 1].position.clone(); - let min = lowPoint.z; - let max = highPoint.z; - - let start = new THREE.Vector3(highPoint.x, highPoint.y, min); - let end = new THREE.Vector3(highPoint.x, highPoint.y, max); - - let lowScreen = lowPoint.clone().project(camera); - let startScreen = start.clone().project(camera); - let endScreen = end.clone().project(camera); - - let toPixelCoordinates = v => { - let r = v.clone().addScalar(1).divideScalar(2); - r.x = r.x * clientWidth; - r.y = r.y * clientHeight; - r.z = 0; - - return r; - }; - - let lowEL = toPixelCoordinates(lowScreen); - let startEL = toPixelCoordinates(startScreen); - let endEL = toPixelCoordinates(endScreen); - - let lToS = lowEL.distanceTo(startEL); - let sToE = startEL.distanceTo(endEL); - - edge.geometry.lineDistances = [0, lToS, lToS, lToS + sToE]; - edge.geometry.lineDistancesNeedUpdate = true; - - edge.material.dashSize = 10; - edge.material.gapSize = 10; - } - } - - { // area label - let label = measure.areaLabel; - let distance = label.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - - let scale = (70 / pr); - label.scale.set(scale, scale, scale); - } - - { // radius label - let label = measure.circleRadiusLabel; - let distance = label.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - - let scale = (70 / pr); - label.scale.set(scale, scale, scale); - } - - { // edges - const materials = [ - measure.circleRadiusLine.material, - ...measure.edges.map( (e) => e.material), - measure.heightEdge.material, - measure.circleLine.material, - ]; - - for(const material of materials){ - material.resolution.set(clientWidth, clientHeight); - } - } - - if(!this.showLabels){ - - const labels = [ - ...measure.sphereLabels, - ...measure.edgeLabels, - ...measure.angleLabels, - ...measure.coordinateLabels, - measure.heightLabel, - measure.areaLabel, - measure.circleRadiusLabel, - ]; - - for(const label of labels){ - label.visible = false; - } - } - } - } - - render(){ - this.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera()); - } - }; - - class Message{ - - constructor(content){ - this.content = content; - - let closeIcon = `${exports.resourcePath}/icons/close.svg`; - - this.element = $(` -
        - - -
        `); - - this.elClose = this.element.find("img[name=close]"); - - this.elContainer = this.element.find("span[name=content_container]"); - - if(typeof content === "string"){ - this.elContainer.append($(`${content}`)); - }else { - this.elContainer.append(content); - } - - } - - setMessage(content){ - this.elContainer.empty(); - if(typeof content === "string"){ - this.elContainer.append($(`${content}`)); - }else { - this.elContainer.append(content); - } - } - - } - - class PointCloudSM{ - - constructor(potreeRenderer){ - - this.potreeRenderer = potreeRenderer; - this.threeRenderer = this.potreeRenderer.threeRenderer; - - this.target = new THREE.WebGLRenderTarget(2 * 1024, 2 * 1024, { - minFilter: THREE.LinearFilter, - magFilter: THREE.LinearFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType - }); - this.target.depthTexture = new THREE.DepthTexture(); - this.target.depthTexture.type = THREE.UnsignedIntType; - - //this.threeRenderer.setClearColor(0x000000, 1); - this.threeRenderer.setClearColor(0xff0000, 1); - - //HACK? removed while moving to three.js 109 - //this.threeRenderer.clearTarget(this.target, true, true, true); - { - const oldTarget = this.threeRenderer.getRenderTarget(); - - this.threeRenderer.setRenderTarget(this.target); - this.threeRenderer.clear(true, true, true); - - this.threeRenderer.setRenderTarget(oldTarget); - } - } - - setLight(light){ - this.light = light; - - let fov = (180 * light.angle) / Math.PI; - let aspect = light.shadow.mapSize.width / light.shadow.mapSize.height; - let near = 0.1; - let far = light.distance === 0 ? 10000 : light.distance; - this.camera = new THREE.PerspectiveCamera(fov, aspect, near, far); - this.camera.up.set(0, 0, 1); - this.camera.position.copy(light.position); - - let target = new THREE.Vector3().subVectors(light.position, light.getWorldDirection(new THREE.Vector3())); - this.camera.lookAt(target); - - this.camera.updateProjectionMatrix(); - this.camera.updateMatrix(); - this.camera.updateMatrixWorld(); - this.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld); - } - - setSize(width, height){ - if(this.target.width !== width || this.target.height !== height){ - this.target.dispose(); - } - this.target.setSize(width, height); - } - - render(scene, camera){ - - this.threeRenderer.setClearColor(0x000000, 1); - - const oldTarget = this.threeRenderer.getRenderTarget(); - - this.threeRenderer.setRenderTarget(this.target); - this.threeRenderer.clear(true, true, true); - - this.potreeRenderer.render(scene, this.camera, this.target, {}); - - this.threeRenderer.setRenderTarget(oldTarget); - } - - - } - - class ProfileTool extends EventDispatcher { - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.addEventListener('start_inserting_profile', e => { - this.viewer.dispatchEvent({ - type: 'cancel_insertions' - }); - }); - - this.scene = new THREE.Scene(); - this.scene.name = 'scene_profile'; - this.light = new THREE.PointLight(0xffffff, 1.0); - this.scene.add(this.light); - - this.viewer.inputHandler.registerInteractiveScene(this.scene); - - this.onRemove = e => this.scene.remove(e.profile); - this.onAdd = e => this.scene.add(e.profile); - - for(let profile of viewer.scene.profiles){ - this.onAdd({profile: profile}); - } - - viewer.addEventListener("update", this.update.bind(this)); - viewer.addEventListener("render.pass.perspective_overlay", this.render.bind(this)); - viewer.addEventListener("scene_changed", this.onSceneChange.bind(this)); - - viewer.scene.addEventListener('profile_added', this.onAdd); - viewer.scene.addEventListener('profile_removed', this.onRemove); - } - - onSceneChange(e){ - if(e.oldScene){ - e.oldScene.removeEventListeners('profile_added', this.onAdd); - e.oldScene.removeEventListeners('profile_removed', this.onRemove); - } - - e.scene.addEventListener('profile_added', this.onAdd); - e.scene.addEventListener('profile_removed', this.onRemove); - } - - startInsertion (args = {}) { - let domElement = this.viewer.renderer.domElement; - - let profile = new Profile(); - profile.name = args.name || 'Profile'; - - this.dispatchEvent({ - type: 'start_inserting_profile', - profile: profile - }); - - this.scene.add(profile); - - let cancel = { - callback: null - }; - - let insertionCallback = (e) => { - if(e.button === THREE.MOUSE.LEFT){ - if(profile.points.length <= 1){ - let camera = this.viewer.scene.getActiveCamera(); - let distance = camera.position.distanceTo(profile.points[0]); - let clientSize = this.viewer.renderer.getSize(new THREE.Vector2()); - let pr = Utils.projectedRadius(1, camera, distance, clientSize.width, clientSize.height); - let width = (10 / pr); - - profile.setWidth(width); - } - - profile.addMarker(profile.points[profile.points.length - 1].clone()); - - this.viewer.inputHandler.startDragging( - profile.spheres[profile.spheres.length - 1]); - } else if (e.button === THREE.MOUSE.RIGHT) { - cancel.callback(); - } - }; - - cancel.callback = e => { - profile.removeMarker(profile.points.length - 1); - domElement.removeEventListener('mouseup', insertionCallback, true); - this.viewer.removeEventListener('cancel_insertions', cancel.callback); - }; - - this.viewer.addEventListener('cancel_insertions', cancel.callback); - domElement.addEventListener('mouseup', insertionCallback, true); - - profile.addMarker(new THREE.Vector3(0, 0, 0)); - this.viewer.inputHandler.startDragging( - profile.spheres[profile.spheres.length - 1]); - - this.viewer.scene.addProfile(profile); - - return profile; - } - - update(){ - let camera = this.viewer.scene.getActiveCamera(); - let profiles = this.viewer.scene.profiles; - let renderAreaSize = this.viewer.renderer.getSize(new THREE.Vector2()); - let clientWidth = renderAreaSize.width; - let clientHeight = renderAreaSize.height; - - this.light.position.copy(camera.position); - - // make size independant of distance - for(let profile of profiles){ - for(let sphere of profile.spheres){ - let distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3())); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - let scale = (15 / pr); - sphere.scale.set(scale, scale, scale); - } - } - } - - render(){ - this.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera()); - } - - } - - class ScreenBoxSelectTool extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - this.scene = new THREE.Scene(); - - viewer.addEventListener("update", this.update.bind(this)); - viewer.addEventListener("render.pass.perspective_overlay", this.render.bind(this)); - viewer.addEventListener("scene_changed", this.onSceneChange.bind(this)); - } - - onSceneChange(scene){ - console.log("scene changed"); - } - - startInsertion(){ - let domElement = this.viewer.renderer.domElement; - - let volume = new BoxVolume(); - volume.position.set(12345, 12345, 12345); - volume.showVolumeLabel = false; - volume.visible = false; - volume.update(); - this.viewer.scene.addVolume(volume); - - this.importance = 10; - - let selectionBox = $(`
        `); - $(domElement.parentElement).append(selectionBox); - selectionBox.css("right", "10px"); - selectionBox.css("bottom", "10px"); - - let drag = e =>{ - - volume.visible = true; - - let mStart = e.drag.start; - let mEnd = e.drag.end; - - let box2D = new THREE.Box2(); - box2D.expandByPoint(mStart); - box2D.expandByPoint(mEnd); - - selectionBox.css("left", `${box2D.min.x}px`); - selectionBox.css("top", `${box2D.min.y}px`); - selectionBox.css("width", `${box2D.max.x - box2D.min.x}px`); - selectionBox.css("height", `${box2D.max.y - box2D.min.y}px`); - - let camera = e.viewer.scene.getActiveCamera(); - let size = e.viewer.renderer.getSize(new THREE.Vector2()); - let frustumSize = new THREE.Vector2( - camera.right - camera.left, - camera.top - camera.bottom); - - let screenCentroid = new THREE.Vector2().addVectors(e.drag.end, e.drag.start).multiplyScalar(0.5); - let ray = Utils.mouseToRay(screenCentroid, camera, size.width, size.height); - - let diff = new THREE.Vector2().subVectors(e.drag.end, e.drag.start); - diff.divide(size).multiply(frustumSize); - - volume.position.copy(ray.origin); - volume.up.copy(camera.up); - volume.rotation.copy(camera.rotation); - volume.scale.set(diff.x, diff.y, 1000 * 100); - - e.consume(); - }; - - let drop = e => { - this.importance = 0; - - $(selectionBox).remove(); - - this.viewer.inputHandler.deselectAll(); - this.viewer.inputHandler.toggleSelection(volume); - - let camera = e.viewer.scene.getActiveCamera(); - let size = e.viewer.renderer.getSize(new THREE.Vector2()); - let screenCentroid = new THREE.Vector2().addVectors(e.drag.end, e.drag.start).multiplyScalar(0.5); - let ray = Utils.mouseToRay(screenCentroid, camera, size.width, size.height); - - let line = new THREE.Line3(ray.origin, new THREE.Vector3().addVectors(ray.origin, ray.direction)); - - this.removeEventListener("drag", drag); - this.removeEventListener("drop", drop); - - let allPointsNear = []; - let allPointsFar = []; - - // TODO support more than one point cloud - for(let pointcloud of this.viewer.scene.pointclouds){ - - if(!pointcloud.visible){ - continue; - } - - let volCam = camera.clone(); - volCam.left = -volume.scale.x / 2; - volCam.right = +volume.scale.x / 2; - volCam.top = +volume.scale.y / 2; - volCam.bottom = -volume.scale.y / 2; - volCam.near = -volume.scale.z / 2; - volCam.far = +volume.scale.z / 2; - volCam.rotation.copy(volume.rotation); - volCam.position.copy(volume.position); - - volCam.updateMatrix(); - volCam.updateMatrixWorld(); - volCam.updateProjectionMatrix(); - volCam.matrixWorldInverse.getInverse(volCam.matrixWorld); - - let ray = new THREE.Ray(volCam.getWorldPosition(new THREE.Vector3()), volCam.getWorldDirection(new THREE.Vector3())); - let rayInverse = new THREE.Ray( - ray.origin.clone().add(ray.direction.clone().multiplyScalar(volume.scale.z)), - ray.direction.clone().multiplyScalar(-1)); - - let pickerSettings = { - width: 8, - height: 8, - pickWindowSize: 8, - all: true, - pickClipped: true, - pointSizeType: PointSizeType.FIXED, - pointSize: 1}; - let pointsNear = pointcloud.pick(viewer, volCam, ray, pickerSettings); - - volCam.rotateX(Math.PI); - volCam.updateMatrix(); - volCam.updateMatrixWorld(); - volCam.updateProjectionMatrix(); - volCam.matrixWorldInverse.getInverse(volCam.matrixWorld); - let pointsFar = pointcloud.pick(viewer, volCam, rayInverse, pickerSettings); - - allPointsNear.push(...pointsNear); - allPointsFar.push(...pointsFar); - } - - if(allPointsNear.length > 0 && allPointsFar.length > 0){ - let viewLine = new THREE.Line3(ray.origin, new THREE.Vector3().addVectors(ray.origin, ray.direction)); - - let closestOnLine = allPointsNear.map(p => viewLine.closestPointToPoint(p.position, false, new THREE.Vector3())); - let closest = closestOnLine.sort( (a, b) => ray.origin.distanceTo(a) - ray.origin.distanceTo(b))[0]; - - let farthestOnLine = allPointsFar.map(p => viewLine.closestPointToPoint(p.position, false, new THREE.Vector3())); - let farthest = farthestOnLine.sort( (a, b) => ray.origin.distanceTo(b) - ray.origin.distanceTo(a))[0]; - - let distance = closest.distanceTo(farthest); - let centroid = new THREE.Vector3().addVectors(closest, farthest).multiplyScalar(0.5); - volume.scale.z = distance * 1.1; - volume.position.copy(centroid); - } - - volume.clip = true; - }; - - this.addEventListener("drag", drag); - this.addEventListener("drop", drop); - - viewer.inputHandler.addInputListener(this); - - return volume; - } - - update(e){ - //console.log(e.delta) - } - - render(){ - this.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera()); - } - - } - - class SpotLightHelper extends THREE.Object3D{ - - constructor(light, color){ - super(); - - this.light = light; - this.color = color; - - //this.up.set(0, 0, 1); - this.updateMatrix(); - this.updateMatrixWorld(); - - { // SPHERE - let sg = new THREE.SphereGeometry(1, 32, 32); - let sm = new THREE.MeshNormalMaterial(); - this.sphere = new THREE.Mesh(sg, sm); - this.sphere.scale.set(0.5, 0.5, 0.5); - this.add(this.sphere); - } - - { // LINES - - - let positions = new Float32Array([ - +0, +0, +0, +0, +0, -1, - - +0, +0, +0, -1, -1, -1, - +0, +0, +0, +1, -1, -1, - +0, +0, +0, +1, +1, -1, - +0, +0, +0, -1, +1, -1, - - -1, -1, -1, +1, -1, -1, - +1, -1, -1, +1, +1, -1, - +1, +1, -1, -1, +1, -1, - -1, +1, -1, -1, -1, -1, - ]); - - let geometry = new THREE.BufferGeometry(); - geometry.addAttribute("position", new THREE.BufferAttribute(positions, 3)); - - let material = new THREE.LineBasicMaterial(); - - this.frustum = new THREE.LineSegments(geometry, material); - this.add(this.frustum); - - } - - this.update(); - } - - update(){ - - this.light.updateMatrix(); - this.light.updateMatrixWorld(); - - let position = this.light.position; - //let target = new THREE.Vector3().addVectors( - // light.position, - // new THREE.Vector3().subVectors(light.position, this.light.getWorldDirection(new THREE.Vector3()))); - let target = new THREE.Vector3().addVectors( - light.position, this.light.getWorldDirection(new THREE.Vector3()).multiplyScalar(-1)); - - let quat = new THREE.Quaternion().setFromRotationMatrix( - new THREE.Matrix4().lookAt( position, target, new THREE.Vector3( 0, 0, 1 ) ) - ); - - this.setRotationFromQuaternion(quat); - this.position.copy(position); - - - let coneLength = (this.light.distance > 0) ? this.light.distance : 1000; - let coneWidth = coneLength * Math.tan( this.light.angle * 0.5 ); - - this.frustum.scale.set(coneWidth, coneWidth, coneLength); - - - - //{ - // let fov = (180 * light.angle) / Math.PI; - // let aspect = light.shadow.mapSize.width / light.shadow.mapSize.height; - // let near = 0.1; - // let far = light.distance === 0 ? 10000 : light.distance; - // this.camera = new THREE.PerspectiveCamera(fov, aspect, near, far); - // this.camera.up.set(0, 0, 1); - // this.camera.position.copy(light.position); - - // let target = new THREE.Vector3().addVectors(light.position, light.getWorldDirection(new THREE.Vector3())); - // this.camera.lookAt(target); - - // this.camera.updateProjectionMatrix(); - // this.camera.updateMatrix(); - // this.camera.updateMatrixWorld(); - // this.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld); - //} - - } - - } - - class TransformationTool { - constructor(viewer) { - this.viewer = viewer; - - this.scene = new THREE.Scene(); - - this.selection = []; - this.pivot = new THREE.Vector3(); - this.dragging = false; - this.showPickVolumes = false; - - this.viewer.inputHandler.registerInteractiveScene(this.scene); - this.viewer.inputHandler.addEventListener('selection_changed', (e) => { - for(let selected of this.selection){ - this.viewer.inputHandler.blacklist.delete(selected); - } - - this.selection = e.selection; - - for(let selected of this.selection){ - this.viewer.inputHandler.blacklist.add(selected); - } - - }); - - let red = 0xE73100; - let green = 0x44A24A; - let blue = 0x2669E7; - - this.activeHandle = null; - this.scaleHandles = { - "scale.x+": {name: "scale.x+", node: new THREE.Object3D(), color: red, alignment: [+1, +0, +0]}, - "scale.x-": {name: "scale.x-", node: new THREE.Object3D(), color: red, alignment: [-1, +0, +0]}, - "scale.y+": {name: "scale.y+", node: new THREE.Object3D(), color: green, alignment: [+0, +1, +0]}, - "scale.y-": {name: "scale.y-", node: new THREE.Object3D(), color: green, alignment: [+0, -1, +0]}, - "scale.z+": {name: "scale.z+", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, +1]}, - "scale.z-": {name: "scale.z-", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, -1]}, - }; - this.focusHandles = { - "focus.x+": {name: "focus.x+", node: new THREE.Object3D(), color: red, alignment: [+1, +0, +0]}, - "focus.x-": {name: "focus.x-", node: new THREE.Object3D(), color: red, alignment: [-1, +0, +0]}, - "focus.y+": {name: "focus.y+", node: new THREE.Object3D(), color: green, alignment: [+0, +1, +0]}, - "focus.y-": {name: "focus.y-", node: new THREE.Object3D(), color: green, alignment: [+0, -1, +0]}, - "focus.z+": {name: "focus.z+", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, +1]}, - "focus.z-": {name: "focus.z-", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, -1]}, - }; - this.translationHandles = { - "translation.x": {name: "translation.x", node: new THREE.Object3D(), color: red, alignment: [1, 0, 0]}, - "translation.y": {name: "translation.y", node: new THREE.Object3D(), color: green, alignment: [0, 1, 0]}, - "translation.z": {name: "translation.z", node: new THREE.Object3D(), color: blue, alignment: [0, 0, 1]}, - }; - this.rotationHandles = { - "rotation.x": {name: "rotation.x", node: new THREE.Object3D(), color: red, alignment: [1, 0, 0]}, - "rotation.y": {name: "rotation.y", node: new THREE.Object3D(), color: green, alignment: [0, 1, 0]}, - "rotation.z": {name: "rotation.z", node: new THREE.Object3D(), color: blue, alignment: [0, 0, 1]}, - }; - this.handles = Object.assign({}, this.scaleHandles, this.focusHandles, this.translationHandles, this.rotationHandles); - this.pickVolumes = []; - - this.initializeScaleHandles(); - this.initializeFocusHandles(); - this.initializeTranslationHandles(); - this.initializeRotationHandles(); - - - let boxFrameGeometry = new THREE.Geometry(); - { - // bottom - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - // top - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - // sides - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5)); - boxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5)); - } - this.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0xffff00})); - this.scene.add(this.frame); - - - } - - initializeScaleHandles(){ - let sgSphere = new THREE.SphereGeometry(1, 32, 32); - let sgLowPolySphere = new THREE.SphereGeometry(1, 16, 16); - - for(let handleName of Object.keys(this.scaleHandles)){ - let handle = this.scaleHandles[handleName]; - let node = handle.node; - this.scene.add(node); - node.position.set(...handle.alignment).multiplyScalar(0.5); - - let material = new THREE.MeshBasicMaterial({ - color: handle.color, - opacity: 0.4, - transparent: true - }); - - let outlineMaterial = new THREE.MeshBasicMaterial({ - color: 0x000000, - side: THREE.BackSide, - opacity: 0.4, - transparent: true}); - - let pickMaterial = new THREE.MeshNormalMaterial({ - opacity: 0.2, - transparent: true, - visible: this.showPickVolumes}); - - let sphere = new THREE.Mesh(sgSphere, material); - sphere.scale.set(1.3, 1.3, 1.3); - sphere.name = `${handleName}.handle`; - node.add(sphere); - - let outline = new THREE.Mesh(sgSphere, outlineMaterial); - outline.scale.set(1.4, 1.4, 1.4); - outline.name = `${handleName}.outline`; - sphere.add(outline); - - let pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial); - pickSphere.name = `${handleName}.pick_volume`; - pickSphere.scale.set(3, 3, 3); - sphere.add(pickSphere); - pickSphere.handle = handleName; - this.pickVolumes.push(pickSphere); - - node.setOpacity = (target) => { - let opacity = {x: material.opacity}; - let t = new TWEEN.Tween(opacity).to({x: target}, 100); - t.onUpdate(() => { - sphere.visible = opacity.x > 0; - pickSphere.visible = opacity.x > 0; - material.opacity = opacity.x; - outlineMaterial.opacity = opacity.x; - pickSphere.material.opacity = opacity.x * 0.5; - }); - t.start(); - }; - - pickSphere.addEventListener("drag", (e) => this.dragScaleHandle(e)); - pickSphere.addEventListener("drop", (e) => this.dropScaleHandle(e)); - - pickSphere.addEventListener("mouseover", e => { - //node.setOpacity(1); - }); - - pickSphere.addEventListener("click", e => { - e.consume(); - }); - - pickSphere.addEventListener("mouseleave", e => { - //node.setOpacity(0.4); - }); - } - } - - initializeFocusHandles(){ - //let sgBox = new THREE.BoxGeometry(1, 1, 1); - let sgPlane = new THREE.PlaneGeometry(4, 4, 1, 1); - let sgLowPolySphere = new THREE.SphereGeometry(1, 16, 16); - - let texture = new THREE.TextureLoader().load(`${exports.resourcePath}/icons/eye_2.png`); - - for(let handleName of Object.keys(this.focusHandles)){ - let handle = this.focusHandles[handleName]; - let node = handle.node; - this.scene.add(node); - let align = handle.alignment; - - //node.lookAt(new THREE.Vector3().addVectors(node.position, new THREE.Vector3(...align))); - node.lookAt(new THREE.Vector3(...align)); - - let off = 0.8; - if(align[0] === 1){ - node.position.set(1, off, -off).multiplyScalar(0.5); - node.rotation.z = Math.PI / 2; - }else if(align[0] === -1){ - node.position.set(-1, -off, -off).multiplyScalar(0.5); - node.rotation.z = Math.PI / 2; - }else if(align[1] === 1){ - node.position.set(-off, 1, -off).multiplyScalar(0.5); - node.rotation.set(Math.PI / 2, Math.PI, 0.0); - }else if(align[1] === -1){ - node.position.set(off, -1, -off).multiplyScalar(0.5); - node.rotation.set(Math.PI / 2, 0.0, 0.0); - }else if(align[2] === 1){ - node.position.set(off, off, 1).multiplyScalar(0.5); - }else if(align[2] === -1){ - node.position.set(-off, off, -1).multiplyScalar(0.5); - } - - let material = new THREE.MeshBasicMaterial({ - color: handle.color, - opacity: 0, - transparent: true, - map: texture - }); - - //let outlineMaterial = new THREE.MeshBasicMaterial({ - // color: 0x000000, - // side: THREE.BackSide, - // opacity: 0, - // transparent: true}); - - let pickMaterial = new THREE.MeshNormalMaterial({ - //opacity: 0, - transparent: true, - visible: this.showPickVolumes}); - - let box = new THREE.Mesh(sgPlane, material); - box.name = `${handleName}.handle`; - box.scale.set(1.5, 1.5, 1.5); - box.position.set(0, 0, 0); - box.visible = false; - node.add(box); - //handle.focusNode = box; - - //let outline = new THREE.Mesh(sgPlane, outlineMaterial); - //outline.scale.set(1.4, 1.4, 1.4); - //outline.name = `${handleName}.outline`; - //box.add(outline); - - let pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial); - pickSphere.name = `${handleName}.pick_volume`; - pickSphere.scale.set(3, 3, 3); - box.add(pickSphere); - pickSphere.handle = handleName; - this.pickVolumes.push(pickSphere); - - node.setOpacity = (target) => { - let opacity = {x: material.opacity}; - let t = new TWEEN.Tween(opacity).to({x: target}, 100); - t.onUpdate(() => { - pickSphere.visible = opacity.x > 0; - box.visible = opacity.x > 0; - material.opacity = opacity.x; - //outlineMaterial.opacity = opacity.x; - pickSphere.material.opacity = opacity.x * 0.5; - }); - t.start(); - }; - - pickSphere.addEventListener("drag", e => {}); - - pickSphere.addEventListener("mouseup", e => { - e.consume(); - }); - - pickSphere.addEventListener("mousedown", e => { - e.consume(); - }); - - pickSphere.addEventListener("click", e => { - e.consume(); - - let selected = this.selection[0]; - let maxScale = Math.max(...selected.scale.toArray()); - let minScale = Math.min(...selected.scale.toArray()); - let handleLength = Math.abs(selected.scale.dot(new THREE.Vector3(...handle.alignment))); - let alignment = new THREE.Vector3(...handle.alignment).multiplyScalar(2 * maxScale / handleLength); - alignment.applyMatrix4(selected.matrixWorld); - let newCamPos = alignment; - let newCamTarget = selected.getWorldPosition(new THREE.Vector3()); - - Utils.moveTo(this.viewer.scene, newCamPos, newCamTarget); - }); - - pickSphere.addEventListener("mouseover", e => { - //box.setOpacity(1); - }); - - pickSphere.addEventListener("mouseleave", e => { - //box.setOpacity(0.4); - }); - } - } - - initializeTranslationHandles(){ - let boxGeometry = new THREE.BoxGeometry(1, 1, 1); - - for(let handleName of Object.keys(this.translationHandles)){ - let handle = this.handles[handleName]; - let node = handle.node; - this.scene.add(node); - - let material = new THREE.MeshBasicMaterial({ - color: handle.color, - opacity: 0.4, - transparent: true}); - - let outlineMaterial = new THREE.MeshBasicMaterial({ - color: 0x000000, - side: THREE.BackSide, - opacity: 0.4, - transparent: true}); - - let pickMaterial = new THREE.MeshNormalMaterial({ - opacity: 0.2, - transparent: true, - visible: this.showPickVolumes - }); - - let box = new THREE.Mesh(boxGeometry, material); - box.name = `${handleName}.handle`; - box.scale.set(0.2, 0.2, 40); - box.lookAt(new THREE.Vector3(...handle.alignment)); - box.renderOrder = 10; - node.add(box); - handle.translateNode = box; - - let outline = new THREE.Mesh(boxGeometry, outlineMaterial); - outline.name = `${handleName}.outline`; - outline.scale.set(3, 3, 1.03); - outline.renderOrder = 0; - box.add(outline); - - let pickVolume = new THREE.Mesh(boxGeometry, pickMaterial); - pickVolume.name = `${handleName}.pick_volume`; - pickVolume.scale.set(12, 12, 1.1); - pickVolume.handle = handleName; - box.add(pickVolume); - this.pickVolumes.push(pickVolume); - - node.setOpacity = (target) => { - let opacity = {x: material.opacity}; - let t = new TWEEN.Tween(opacity).to({x: target}, 100); - t.onUpdate(() => { - box.visible = opacity.x > 0; - pickVolume.visible = opacity.x > 0; - material.opacity = opacity.x; - outlineMaterial.opacity = opacity.x; - pickMaterial.opacity = opacity.x * 0.5; - }); - t.start(); - }; - - pickVolume.addEventListener("drag", (e) => {this.dragTranslationHandle(e);}); - pickVolume.addEventListener("drop", (e) => {this.dropTranslationHandle(e);}); - } - } - - initializeRotationHandles(){ - let adjust = 0.5; - let torusGeometry = new THREE.TorusGeometry(1, adjust * 0.015, 8, 64, Math.PI / 2); - let outlineGeometry = new THREE.TorusGeometry(1, adjust * 0.04, 8, 64, Math.PI / 2); - let pickGeometry = new THREE.TorusGeometry(1, adjust * 0.1, 6, 4, Math.PI / 2); - - for(let handleName of Object.keys(this.rotationHandles)){ - let handle = this.handles[handleName]; - let node = handle.node; - this.scene.add(node); - - let material = new THREE.MeshBasicMaterial({ - color: handle.color, - opacity: 0.4, - transparent: true}); - - let outlineMaterial = new THREE.MeshBasicMaterial({ - color: 0x000000, - side: THREE.BackSide, - opacity: 0.4, - transparent: true}); - - let pickMaterial = new THREE.MeshNormalMaterial({ - opacity: 0.2, - transparent: true, - visible: this.showPickVolumes - }); - - let box = new THREE.Mesh(torusGeometry, material); - box.name = `${handleName}.handle`; - box.scale.set(20, 20, 20); - box.lookAt(new THREE.Vector3(...handle.alignment)); - node.add(box); - handle.translateNode = box; - - let outline = new THREE.Mesh(outlineGeometry, outlineMaterial); - outline.name = `${handleName}.outline`; - outline.scale.set(1, 1, 1); - outline.renderOrder = 0; - box.add(outline); - - let pickVolume = new THREE.Mesh(pickGeometry, pickMaterial); - pickVolume.name = `${handleName}.pick_volume`; - pickVolume.scale.set(1, 1, 1); - pickVolume.handle = handleName; - box.add(pickVolume); - this.pickVolumes.push(pickVolume); - - node.setOpacity = (target) => { - let opacity = {x: material.opacity}; - let t = new TWEEN.Tween(opacity).to({x: target}, 100); - t.onUpdate(() => { - box.visible = opacity.x > 0; - pickVolume.visible = opacity.x > 0; - material.opacity = opacity.x; - outlineMaterial.opacity = opacity.x; - pickMaterial.opacity = opacity.x * 0.5; - }); - t.start(); - }; - - - //pickVolume.addEventListener("mouseover", (e) => { - // //let a = this.viewer.scene.getActiveCamera().getWorldDirection(new THREE.Vector3()).dot(pickVolume.getWorldDirection(new THREE.Vector3())); - // console.log(pickVolume.getWorldDirection(new THREE.Vector3())); - //}); - - pickVolume.addEventListener("drag", (e) => {this.dragRotationHandle(e);}); - pickVolume.addEventListener("drop", (e) => {this.dropRotationHandle(e);}); - } - } - - dragRotationHandle(e){ - let drag = e.drag; - let handle = this.activeHandle; - let camera = this.viewer.scene.getActiveCamera(); - - if(!handle){ - return - }; - - let localNormal = new THREE.Vector3(...handle.alignment); - let n = new THREE.Vector3(); - n.copy(new THREE.Vector4(...localNormal.toArray(), 0).applyMatrix4(handle.node.matrixWorld)); - n.normalize(); - - if (!drag.intersectionStart){ - - //this.viewer.scene.scene.remove(this.debug); - //this.debug = new THREE.Object3D(); - //this.viewer.scene.scene.add(this.debug); - //Utils.debugSphere(this.debug, drag.location, 3, 0xaaaaaa); - //let debugEnd = drag.location.clone().add(n.clone().multiplyScalar(20)); - //Utils.debugLine(this.debug, drag.location, debugEnd, 0xff0000); - - drag.intersectionStart = drag.location; - drag.objectStart = drag.object.getWorldPosition(new THREE.Vector3()); - drag.handle = handle; - - let plane = new THREE.Plane().setFromNormalAndCoplanarPoint(n, drag.intersectionStart); - - drag.dragPlane = plane; - drag.pivot = drag.intersectionStart; - }else { - handle = drag.handle; - } - - this.dragging = true; - - let mouse = drag.end; - let domElement = this.viewer.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - - let I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3()); - - if (I) { - let center = this.scene.getWorldPosition(new THREE.Vector3()); - let from = drag.pivot; - let to = I; - - let v1 = from.clone().sub(center).normalize(); - let v2 = to.clone().sub(center).normalize(); - - let angle = Math.acos(v1.dot(v2)); - let sign = Math.sign(v1.cross(v2).dot(n)); - angle = angle * sign; - if (Number.isNaN(angle)) { - return; - } - - let normal = new THREE.Vector3(...handle.alignment); - for (let selection of this.selection) { - selection.rotateOnAxis(normal, angle); - selection.dispatchEvent({ - type: "orientation_changed", - object: selection - }); - } - - drag.pivot = I; - } - } - - dropRotationHandle(e){ - this.dragging = false; - this.setActiveHandle(null); - } - - dragTranslationHandle(e){ - let drag = e.drag; - let handle = this.activeHandle; - let camera = this.viewer.scene.getActiveCamera(); - - if(!drag.intersectionStart && handle){ - drag.intersectionStart = drag.location; - drag.objectStart = drag.object.getWorldPosition(new THREE.Vector3()); - - let start = drag.intersectionStart; - let dir = new THREE.Vector4(...handle.alignment, 0).applyMatrix4(this.scene.matrixWorld); - let end = new THREE.Vector3().addVectors(start, dir); - let line = new THREE.Line3(start.clone(), end.clone()); - drag.line = line; - - let camOnLine = line.closestPointToPoint(camera.position, false, new THREE.Vector3()); - let normal = new THREE.Vector3().subVectors(camera.position, camOnLine); - let plane = new THREE.Plane().setFromNormalAndCoplanarPoint(normal, drag.intersectionStart); - drag.dragPlane = plane; - drag.pivot = drag.intersectionStart; - }else { - handle = drag.handle; - } - - this.dragging = true; - - { - let mouse = drag.end; - let domElement = this.viewer.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - let I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3()); - - if (I) { - let iOnLine = drag.line.closestPointToPoint(I, false, new THREE.Vector3()); - - let diff = new THREE.Vector3().subVectors(iOnLine, drag.pivot); - - for (let selection of this.selection) { - selection.position.add(diff); - selection.dispatchEvent({ - type: "position_changed", - object: selection - }); - } - - drag.pivot = drag.pivot.add(diff); - } - } - } - - dropTranslationHandle(e){ - this.dragging = false; - this.setActiveHandle(null); - } - - dropScaleHandle(e){ - this.dragging = false; - this.setActiveHandle(null); - } - - dragScaleHandle(e){ - let drag = e.drag; - let handle = this.activeHandle; - let camera = this.viewer.scene.getActiveCamera(); - - if(!drag.intersectionStart){ - drag.intersectionStart = drag.location; - drag.objectStart = drag.object.getWorldPosition(new THREE.Vector3()); - drag.handle = handle; - - let start = drag.intersectionStart; - let dir = new THREE.Vector4(...handle.alignment, 0).applyMatrix4(this.scene.matrixWorld); - let end = new THREE.Vector3().addVectors(start, dir); - let line = new THREE.Line3(start.clone(), end.clone()); - drag.line = line; - - let camOnLine = line.closestPointToPoint(camera.position, false, new THREE.Vector3()); - let normal = new THREE.Vector3().subVectors(camera.position, camOnLine); - let plane = new THREE.Plane().setFromNormalAndCoplanarPoint(normal, drag.intersectionStart); - drag.dragPlane = plane; - drag.pivot = drag.intersectionStart; - - //Utils.debugSphere(viewer.scene.scene, drag.pivot, 0.05); - }else { - handle = drag.handle; - } - - this.dragging = true; - - { - let mouse = drag.end; - let domElement = this.viewer.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - let I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3()); - - if (I) { - let iOnLine = drag.line.closestPointToPoint(I, false, new THREE.Vector3()); - let direction = handle.alignment.reduce( (a, v) => a + v, 0); - - let toObjectSpace = new THREE.Matrix4().getInverse( this.selection[0].matrixWorld); - let iOnLineOS = iOnLine.clone().applyMatrix4(toObjectSpace); - let pivotOS = drag.pivot.clone().applyMatrix4(toObjectSpace); - let diffOS = new THREE.Vector3().subVectors(iOnLineOS, pivotOS); - let dragDirectionOS = diffOS.clone().normalize(); - if(iOnLine.distanceTo(drag.pivot) === 0){ - dragDirectionOS.set(0, 0, 0); - } - let dragDirection = dragDirectionOS.dot(new THREE.Vector3(...handle.alignment)); - - let diff = new THREE.Vector3().subVectors(iOnLine, drag.pivot); - let diffScale = new THREE.Vector3(...handle.alignment).multiplyScalar(diff.length() * direction * dragDirection); - let diffPosition = diff.clone().multiplyScalar(0.5); - - for (let selection of this.selection) { - selection.scale.add(diffScale); - selection.scale.x = Math.max(0.1, selection.scale.x); - selection.scale.y = Math.max(0.1, selection.scale.y); - selection.scale.z = Math.max(0.1, selection.scale.z); - selection.position.add(diffPosition); - selection.dispatchEvent({ - type: "position_changed", - object: selection - }); - selection.dispatchEvent({ - type: "scale_changed", - object: selection - }); - } - - drag.pivot.copy(iOnLine); - //Utils.debugSphere(viewer.scene.scene, drag.pivot, 0.05); - } - } - } - - setActiveHandle(handle){ - if(this.dragging){ - return; - } - - if(this.activeHandle === handle){ - return; - } - - this.activeHandle = handle; - - if(handle === null){ - for(let handleName of Object.keys(this.handles)){ - let handle = this.handles[handleName]; - handle.node.setOpacity(0); - } - } - - for(let handleName of Object.keys(this.focusHandles)){ - let handle = this.focusHandles[handleName]; - - if(this.activeHandle === handle){ - handle.node.setOpacity(1.0); - }else { - handle.node.setOpacity(0.4); - } - } - - for(let handleName of Object.keys(this.translationHandles)){ - let handle = this.translationHandles[handleName]; - - if(this.activeHandle === handle){ - handle.node.setOpacity(1.0); - }else { - handle.node.setOpacity(0.4); - } - } - - for(let handleName of Object.keys(this.rotationHandles)){ - let handle = this.rotationHandles[handleName]; - - //if(this.activeHandle === handle){ - // handle.node.setOpacity(1.0); - //}else{ - // handle.node.setOpacity(0.4) - //} - - handle.node.setOpacity(0.4); - } - - for(let handleName of Object.keys(this.scaleHandles)){ - let handle = this.scaleHandles[handleName]; - - if(this.activeHandle === handle){ - handle.node.setOpacity(1.0); - - let relatedFocusHandle = this.focusHandles[handle.name.replace("scale", "focus")]; - let relatedFocusNode = relatedFocusHandle.node; - relatedFocusNode.setOpacity(0.4); - - for(let translationHandleName of Object.keys(this.translationHandles)){ - let translationHandle = this.translationHandles[translationHandleName]; - translationHandle.node.setOpacity(0.4); - } - - //let relatedTranslationHandle = this.translationHandles[ - // handle.name.replace("scale", "translation").replace(/[+-]/g, "")]; - //let relatedTranslationNode = relatedTranslationHandle.node; - //relatedTranslationNode.setOpacity(0.4); - - - }else { - handle.node.setOpacity(0.4); - } - } - - - - - - if(handle){ - handle.node.setOpacity(1.0); - } - - - } - - update () { - - if(this.selection.length === 1){ - - this.scene.visible = true; - - this.scene.updateMatrix(); - this.scene.updateMatrixWorld(); - - let selected = this.selection[0]; - let world = selected.matrixWorld; - let camera = this.viewer.scene.getActiveCamera(); - let domElement = this.viewer.renderer.domElement; - let mouse = this.viewer.inputHandler.mouse; - - let center = selected.boundingBox.getCenter(new THREE.Vector3()).clone().applyMatrix4(selected.matrixWorld); - - this.scene.scale.copy(selected.boundingBox.getSize(new THREE.Vector3()).multiply(selected.scale)); - this.scene.position.copy(center); - this.scene.rotation.copy(selected.rotation); - - this.scene.updateMatrixWorld(); - - { - // adjust scale of components - for(let handleName of Object.keys(this.handles)){ - let handle = this.handles[handleName]; - let node = handle.node; - - let handlePos = node.getWorldPosition(new THREE.Vector3()); - let distance = handlePos.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, domElement.clientWidth, domElement.clientHeight); - - let ws = node.parent.getWorldScale(new THREE.Vector3()); - - let s = (7 / pr); - let scale = new THREE.Vector3(s, s, s).divide(ws); - - let rot = new THREE.Matrix4().makeRotationFromEuler(node.rotation); - let rotInv = new THREE.Matrix4().getInverse(rot); - - scale.applyMatrix4(rotInv); - scale.x = Math.abs(scale.x); - scale.y = Math.abs(scale.y); - scale.z = Math.abs(scale.z); - - node.scale.copy(scale); - } - - // adjust rotation handles - if(!this.dragging){ - let tWorld = this.scene.matrixWorld; - let tObject = new THREE.Matrix4().getInverse(tWorld); - let camObjectPos = camera.getWorldPosition(new THREE.Vector3()).applyMatrix4(tObject); - - let x = this.rotationHandles["rotation.x"].node.rotation; - let y = this.rotationHandles["rotation.y"].node.rotation; - let z = this.rotationHandles["rotation.z"].node.rotation; - - x.order = "ZYX"; - y.order = "ZYX"; - - let above = camObjectPos.z > 0; - let below = !above; - let PI_HALF = Math.PI / 2; - - if(above){ - if(camObjectPos.x > 0 && camObjectPos.y > 0){ - x.x = 1 * PI_HALF; - y.y = 3 * PI_HALF; - z.z = 0 * PI_HALF; - }else if(camObjectPos.x < 0 && camObjectPos.y > 0){ - x.x = 1 * PI_HALF; - y.y = 2 * PI_HALF; - z.z = 1 * PI_HALF; - }else if(camObjectPos.x < 0 && camObjectPos.y < 0){ - x.x = 2 * PI_HALF; - y.y = 2 * PI_HALF; - z.z = 2 * PI_HALF; - }else if(camObjectPos.x > 0 && camObjectPos.y < 0){ - x.x = 2 * PI_HALF; - y.y = 3 * PI_HALF; - z.z = 3 * PI_HALF; - } - }else if(below){ - if(camObjectPos.x > 0 && camObjectPos.y > 0){ - x.x = 0 * PI_HALF; - y.y = 0 * PI_HALF; - z.z = 0 * PI_HALF; - }else if(camObjectPos.x < 0 && camObjectPos.y > 0){ - x.x = 0 * PI_HALF; - y.y = 1 * PI_HALF; - z.z = 1 * PI_HALF; - }else if(camObjectPos.x < 0 && camObjectPos.y < 0){ - x.x = 3 * PI_HALF; - y.y = 1 * PI_HALF; - z.z = 2 * PI_HALF; - }else if(camObjectPos.x > 0 && camObjectPos.y < 0){ - x.x = 3 * PI_HALF; - y.y = 0 * PI_HALF; - z.z = 3 * PI_HALF; - } - } - } - - { - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - let raycaster = new THREE.Raycaster(ray.origin, ray.direction); - let intersects = raycaster.intersectObjects(this.pickVolumes.filter(v => v.visible), true); - - if(intersects.length > 0){ - let I = intersects[0]; - let handleName = I.object.handle; - this.setActiveHandle(this.handles[handleName]); - }else { - this.setActiveHandle(null); - } - } - - // - for(let handleName of Object.keys(this.scaleHandles)){ - let handle = this.handles[handleName]; - let node = handle.node; - let alignment = handle.alignment; - - - - } - } - - - { - let axisScale = (alignment) => { - let transformed = new THREE.Vector3(...alignment).applyMatrix4(selected.matrixWorld); - let distance = transformed.distanceTo(selected.getWorldPosition(new THREE.Vector3())); - - return distance; - }; - - let scale = new THREE.Vector3( - axisScale([1, 0, 0]), - axisScale([0, 1, 0]), - axisScale([0, 0, 1]), - ); - - } - - }else { - this.scene.visible = false; - } - - } - - }; - - class VolumeTool extends EventDispatcher{ - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.addEventListener('start_inserting_volume', e => { - this.viewer.dispatchEvent({ - type: 'cancel_insertions' - }); - }); - - this.scene = new THREE.Scene(); - this.scene.name = 'scene_volume'; - - this.viewer.inputHandler.registerInteractiveScene(this.scene); - - this.onRemove = e => { - this.scene.remove(e.volume); - }; - - this.onAdd = e => { - this.scene.add(e.volume); - }; - - for(let volume of viewer.scene.volumes){ - this.onAdd({volume: volume}); - } - - this.viewer.inputHandler.addEventListener('delete', e => { - let volumes = e.selection.filter(e => (e instanceof Volume)); - volumes.forEach(e => this.viewer.scene.removeVolume(e)); - }); - - viewer.addEventListener("update", this.update.bind(this)); - viewer.addEventListener("render.pass.scene", e => this.render(e)); - viewer.addEventListener("scene_changed", this.onSceneChange.bind(this)); - - viewer.scene.addEventListener('volume_added', this.onAdd); - viewer.scene.addEventListener('volume_removed', this.onRemove); - } - - onSceneChange(e){ - if(e.oldScene){ - e.oldScene.removeEventListeners('volume_added', this.onAdd); - e.oldScene.removeEventListeners('volume_removed', this.onRemove); - } - - e.scene.addEventListener('volume_added', this.onAdd); - e.scene.addEventListener('volume_removed', this.onRemove); - } - - startInsertion (args = {}) { - let volume; - if(args.type){ - volume = new args.type(); - }else { - volume = new BoxVolume(); - } - - volume.clip = args.clip || false; - volume.name = args.name || 'Volume'; - - this.dispatchEvent({ - type: 'start_inserting_volume', - volume: volume - }); - - this.viewer.scene.addVolume(volume); - this.scene.add(volume); - - let cancel = { - callback: null - }; - - let drag = e => { - let camera = this.viewer.scene.getActiveCamera(); - - let I = Utils.getMousePointCloudIntersection( - e.drag.end, - this.viewer.scene.getActiveCamera(), - this.viewer, - this.viewer.scene.pointclouds, - {pickClipped: false}); - - if (I) { - volume.position.copy(I.location); - - let wp = volume.getWorldPosition(new THREE.Vector3()).applyMatrix4(camera.matrixWorldInverse); - // let pp = new THREE.Vector4(wp.x, wp.y, wp.z).applyMatrix4(camera.projectionMatrix); - let w = Math.abs((wp.z / 5)); - volume.scale.set(w, w, w); - } - }; - - let drop = e => { - volume.removeEventListener('drag', drag); - volume.removeEventListener('drop', drop); - - cancel.callback(); - }; - - cancel.callback = e => { - volume.removeEventListener('drag', drag); - volume.removeEventListener('drop', drop); - this.viewer.removeEventListener('cancel_insertions', cancel.callback); - }; - - volume.addEventListener('drag', drag); - volume.addEventListener('drop', drop); - this.viewer.addEventListener('cancel_insertions', cancel.callback); - - this.viewer.inputHandler.startDragging(volume); - - return volume; - } - - update(){ - if (!this.viewer.scene) { - return; - } - - let camera = this.viewer.scene.getActiveCamera(); - let renderAreaSize = this.viewer.renderer.getSize(new THREE.Vector2()); - let clientWidth = renderAreaSize.width; - let clientHeight = renderAreaSize.height; - - let volumes = this.viewer.scene.volumes; - for (let volume of volumes) { - let label = volume.label; - - { - - let distance = label.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight); - - let scale = (70 / pr); - label.scale.set(scale, scale, scale); - } - - let calculatedVolume = volume.getVolume(); - calculatedVolume = calculatedVolume / Math.pow(this.viewer.lengthUnit.unitspermeter, 3) * Math.pow(this.viewer.lengthUnitDisplay.unitspermeter, 3); //convert to cubic meters then to the cubic display unit - let text = Utils.addCommas(calculatedVolume.toFixed(3)) + ' ' + this.viewer.lengthUnitDisplay.code + '\u00B3'; - label.setText(text); - } - } - - render(params){ - const renderer = this.viewer.renderer; - - const oldTarget = renderer.getRenderTarget(); - - if(params.renderTarget){ - renderer.setRenderTarget(params.renderTarget); - } - renderer.render(this.scene, this.viewer.scene.getActiveCamera()); - renderer.setRenderTarget(oldTarget); - } - - } - - class Compass{ - - constructor(viewer){ - this.viewer = viewer; - - this.visible = false; - this.dom = this.createElement(); - - viewer.addEventListener("update", () => { - const direction = viewer.scene.view.direction.clone(); - direction.z = 0; - direction.normalize(); - - const camera = viewer.scene.getActiveCamera(); - - const p1 = camera.getWorldPosition(new THREE.Vector3()); - const p2 = p1.clone().add(direction); - - const projection = viewer.getProjection(); - const azimuth = Utils.computeAzimuth(p1, p2, projection); - - this.dom.css("transform", `rotateZ(${-azimuth}rad)`); - }); - - this.dom.click( () => { - viewer.setTopView(); - }); - - const renderArea = $(viewer.renderArea); - renderArea.append(this.dom); - - this.setVisible(this.visible); - } - - setVisible(visible){ - this.visible = visible; - - const value = visible ? "" : "none"; - this.dom.css("display", value); - } - - isVisible(){ - return this.visible; - } - - createElement(){ - const style = `style="position: absolute; top: 10px; right: 10px; z-index: 10000; width: 64px;"`; - const img = $(``); - - return img; - } - - }; - - class PotreeRenderer { - - constructor (viewer) { - this.viewer = viewer; - this.renderer = viewer.renderer; - } - - clearTargets(){ - - } - - clear(){ - let {viewer, renderer} = this; - - // render skybox - if(viewer.background === "skybox"){ - renderer.setClearColor(0x000000, 0); - renderer.clear(true, true, false); - }else if(viewer.background === "gradient"){ - renderer.setClearColor(0x000000, 0); - renderer.clear(true, true, false); - }else if(viewer.background === "black"){ - renderer.setClearColor(0x000000, 1); - renderer.clear(true, true, false); - }else if(viewer.background === "white"){ - renderer.setClearColor(0xFFFFFF, 1); - renderer.clear(true, true, false); - }else { - renderer.setClearColor(0x000000, 0); - renderer.clear(true, true, false); - } - } - - render(params){ - let {viewer, renderer} = this; - - const camera = params.camera ? params.camera : viewer.scene.getActiveCamera(); - - viewer.dispatchEvent({type: "render.pass.begin",viewer: viewer}); - - const renderAreaSize = renderer.getSize(new THREE.Vector2()); - const width = params.viewport ? params.viewport[2] : renderAreaSize.x; - const height = params.viewport ? params.viewport[3] : renderAreaSize.y; - - - // render skybox - if(viewer.background === "skybox"){ - viewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation); - viewer.skybox.camera.fov = viewer.scene.cameraP.fov; - viewer.skybox.camera.aspect = viewer.scene.cameraP.aspect; - viewer.skybox.camera.updateProjectionMatrix(); - renderer.render(viewer.skybox.scene, viewer.skybox.camera); - }else if(viewer.background === "gradient"){ - renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG); - } - - for(let pointcloud of this.viewer.scene.pointclouds){ - const {material} = pointcloud; - material.useEDL = false; - //material.updateShaderSource(); - } - - viewer.pRenderer.render(viewer.scene.scenePointCloud, camera, null, { - clipSpheres: viewer.scene.volumes.filter(v => (v instanceof Potree.SphereVolume)), - }); - - // render scene - renderer.render(viewer.scene.scene, camera); - - viewer.dispatchEvent({type: "render.pass.scene",viewer: viewer}); - - viewer.clippingTool.update(); - renderer.render(viewer.clippingTool.sceneMarker, viewer.scene.cameraScreenSpace); //viewer.scene.cameraScreenSpace); - renderer.render(viewer.clippingTool.sceneVolume, camera); - - renderer.render(viewer.controls.sceneControls, camera); - - renderer.clearDepth(); - - viewer.transformationTool.update(); - - viewer.dispatchEvent({type: "render.pass.perspective_overlay",viewer: viewer}); - - renderer.render(viewer.controls.sceneControls, camera); - renderer.render(viewer.clippingTool.sceneVolume, camera); - renderer.render(viewer.transformationTool.scene, camera); - - renderer.setViewport(width - viewer.navigationCube.width, - height - viewer.navigationCube.width, - viewer.navigationCube.width, viewer.navigationCube.width); - renderer.render(viewer.navigationCube, viewer.navigationCube.camera); - renderer.setViewport(0, 0, width, height); - - // renderer.render(viewer.transformationTool.scene, camera); - - // renderer.setViewport(renderer.domElement.clientWidth - viewer.navigationCube.width, - // renderer.domElement.clientHeight - viewer.navigationCube.width, - // viewer.navigationCube.width, viewer.navigationCube.width); - // renderer.render(viewer.navigationCube, viewer.navigationCube.camera); - // renderer.setViewport(0, 0, renderer.domElement.clientWidth, renderer.domElement.clientHeight); - - viewer.dispatchEvent({type: "render.pass.end",viewer: viewer}); - } - - } - - class EDLRenderer{ - constructor(viewer){ - this.viewer = viewer; - - this.edlMaterial = null; - - this.rtRegular; - this.rtEDL; - - this.gl = viewer.renderer.getContext(); - - this.shadowMap = new PointCloudSM(this.viewer.pRenderer); - } - - initEDL(){ - if (this.edlMaterial != null) { - return; - } - - this.edlMaterial = new EyeDomeLightingMaterial(); - this.edlMaterial.depthTest = true; - this.edlMaterial.depthWrite = true; - this.edlMaterial.transparent = true; - - this.rtEDL = new THREE.WebGLRenderTarget(1024, 1024, { - minFilter: THREE.NearestFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType, - depthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType) - }); - - this.rtRegular = new THREE.WebGLRenderTarget(1024, 1024, { - minFilter: THREE.NearestFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - depthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType) - }); - }; - - resize(width, height){ - if(this.screenshot){ - width = this.screenshot.target.width; - height = this.screenshot.target.height; - } - - this.rtEDL.setSize(width , height); - this.rtRegular.setSize(width , height); - } - - makeScreenshot(camera, size, callback){ - - if(camera === undefined || camera === null){ - camera = this.viewer.scene.getActiveCamera(); - } - - if(size === undefined || size === null){ - size = this.viewer.renderer.getSize(new THREE.Vector2()); - } - - let {width, height} = size; - - //let maxTextureSize = viewer.renderer.capabilities.maxTextureSize; - //if(width * 4 < - width = 2 * width; - height = 2 * height; - - let target = new THREE.WebGLRenderTarget(width, height, { - format: THREE.RGBAFormat, - }); - - this.screenshot = { - target: target - }; - - // HACK? removed because of error, was this important? - //this.viewer.renderer.clearTarget(target, true, true, true); - - this.render(); - - let pixelCount = width * height; - let buffer = new Uint8Array(4 * pixelCount); - - this.viewer.renderer.readRenderTargetPixels(target, 0, 0, width, height, buffer); - - // flip vertically - let bytesPerLine = width * 4; - for(let i = 0; i < parseInt(height / 2); i++){ - let j = height - i - 1; - - let lineI = buffer.slice(i * bytesPerLine, i * bytesPerLine + bytesPerLine); - let lineJ = buffer.slice(j * bytesPerLine, j * bytesPerLine + bytesPerLine); - buffer.set(lineJ, i * bytesPerLine); - buffer.set(lineI, j * bytesPerLine); - } - - this.screenshot.target.dispose(); - delete this.screenshot; - - return { - width: width, - height: height, - buffer: buffer - }; - } - - clearTargets(){ - const viewer = this.viewer; - const {renderer} = viewer; - - const oldTarget = renderer.getRenderTarget(); - - renderer.setRenderTarget( this.rtEDL ); - renderer.clear( true, true, true ); - - renderer.setRenderTarget( this.rtRegular ); - renderer.clear( true, true, false ); - - renderer.setRenderTarget(oldTarget); - } - - clear(){ - this.initEDL(); - const viewer = this.viewer; - - const {renderer, background} = viewer; - - if(background === "skybox"){ - renderer.setClearColor(0x000000, 0); - } else if (background === 'gradient') { - renderer.setClearColor(0x000000, 0); - } else if (background === 'black') { - renderer.setClearColor(0x000000, 1); - } else if (background === 'white') { - renderer.setClearColor(0xFFFFFF, 1); - } else { - renderer.setClearColor(0x000000, 0); - } - - renderer.clear(); - - this.clearTargets(); - } - - renderShadowMap(visiblePointClouds, camera, lights){ - - const {viewer} = this; - - const doShadows = lights.length > 0 && !(lights[0].disableShadowUpdates); - if(doShadows){ - let light = lights[0]; - - this.shadowMap.setLight(light); - - let originalAttributes = new Map(); - for(let pointcloud of viewer.scene.pointclouds){ - // TODO IMPORTANT !!! check - originalAttributes.set(pointcloud, pointcloud.material.activeAttributeName); - pointcloud.material.disableEvents(); - pointcloud.material.activeAttributeName = "depth"; - //pointcloud.material.pointColorType = PointColorType.DEPTH; - } - - this.shadowMap.render(viewer.scene.scenePointCloud, camera); - - for(let pointcloud of visiblePointClouds){ - let originalAttribute = originalAttributes.get(pointcloud); - // TODO IMPORTANT !!! check - pointcloud.material.activeAttributeName = originalAttribute; - pointcloud.material.enableEvents(); - } - - viewer.shadowTestCam.updateMatrixWorld(); - viewer.shadowTestCam.matrixWorldInverse.getInverse(viewer.shadowTestCam.matrixWorld); - viewer.shadowTestCam.updateProjectionMatrix(); - } - - } - - render(params){ - this.initEDL(); - - const viewer = this.viewer; - const camera = params.camera ? params.camera : viewer.scene.getActiveCamera(); - const {width, height} = this.viewer.renderer.getSize(new THREE.Vector2()); - - viewer.dispatchEvent({type: "render.pass.begin",viewer: viewer}); - - this.resize(width, height); - - const visiblePointClouds = viewer.scene.pointclouds.filter(pc => pc.visible); - - if(this.screenshot){ - let oldBudget = Potree.pointBudget; - Potree.pointBudget = Math.max(10 * 1000 * 1000, 2 * oldBudget); - let result = Potree.updatePointClouds( - viewer.scene.pointclouds, - camera, - viewer.renderer); - Potree.pointBudget = oldBudget; - } - - let lights = []; - viewer.scene.scene.traverse(node => { - if(node instanceof THREE.SpotLight){ - lights.push(node); - } - }); - - if(viewer.background === "skybox"){ - viewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation); - viewer.skybox.camera.fov = viewer.scene.cameraP.fov; - viewer.skybox.camera.aspect = viewer.scene.cameraP.aspect; - viewer.skybox.camera.updateProjectionMatrix(); - viewer.renderer.render(viewer.skybox.scene, viewer.skybox.camera); - } else if (viewer.background === 'gradient') { - viewer.renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG); - } - - //TODO adapt to multiple lights - this.renderShadowMap(visiblePointClouds, camera, lights); - - { // COLOR & DEPTH PASS - for (let pointcloud of visiblePointClouds) { - let octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x; - - let material = pointcloud.material; - material.weighted = false; - material.useLogarithmicDepthBuffer = false; - material.useEDL = true; - - material.screenWidth = width; - material.screenHeight = height; - material.uniforms.visibleNodes.value = pointcloud.material.visibleNodesTexture; - material.uniforms.octreeSize.value = octreeSize; - material.spacing = pointcloud.pcoGeometry.spacing * Math.max(pointcloud.scale.x, pointcloud.scale.y, pointcloud.scale.z); - } - - // TODO adapt to multiple lights - viewer.renderer.setRenderTarget(this.rtEDL); - - if(lights.length > 0){ - viewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtEDL, { - clipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)), - shadowMaps: [this.shadowMap], - transparent: false, - }); - }else { - viewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtEDL, { - clipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)), - transparent: false, - }); - } - - - } - - viewer.dispatchEvent({type: "render.pass.scene", viewer: viewer, renderTarget: this.rtRegular}); - viewer.renderer.setRenderTarget(null); - viewer.renderer.render(viewer.scene.scene, camera); - - { // EDL PASS - - const uniforms = this.edlMaterial.uniforms; - - uniforms.screenWidth.value = width; - uniforms.screenHeight.value = height; - - let proj = camera.projectionMatrix; - let projArray = new Float32Array(16); - projArray.set(proj.elements); - - uniforms.uNear.value = camera.near; - uniforms.uFar.value = camera.far; - uniforms.uEDLColor.value = this.rtEDL.texture; - uniforms.uEDLDepth.value = this.rtEDL.depthTexture; - uniforms.uProj.value = projArray; - - uniforms.edlStrength.value = viewer.edlStrength; - uniforms.radius.value = viewer.edlRadius; - uniforms.opacity.value = viewer.edlOpacity; // HACK - - Utils.screenPass.render(viewer.renderer, this.edlMaterial); - - if(this.screenshot){ - Utils.screenPass.render(viewer.renderer, this.edlMaterial, this.screenshot.target); - } - - } - - viewer.dispatchEvent({type: "render.pass.scene", viewer: viewer}); - - viewer.renderer.clearDepth(); - - viewer.transformationTool.update(); - - viewer.dispatchEvent({type: "render.pass.perspective_overlay",viewer: viewer}); - - viewer.renderer.render(viewer.controls.sceneControls, camera); - viewer.renderer.render(viewer.clippingTool.sceneVolume, camera); - viewer.renderer.render(viewer.transformationTool.scene, camera); - - viewer.dispatchEvent({type: "render.pass.end",viewer: viewer}); - - } - } - - class HQSplatRenderer{ - - constructor(viewer){ - this.viewer = viewer; - - this.depthMaterials = new Map(); - this.attributeMaterials = new Map(); - this.normalizationMaterial = null; - - this.rtDepth = null; - this.rtAttribute = null; - this.gl = viewer.renderer.getContext(); - - this.initialized = false; - } - - init(){ - if (this.initialized) { - return; - } - - this.normalizationMaterial = new NormalizationMaterial(); - this.normalizationMaterial.depthTest = true; - this.normalizationMaterial.depthWrite = true; - this.normalizationMaterial.transparent = true; - - this.normalizationEDLMaterial = new NormalizationEDLMaterial(); - this.normalizationEDLMaterial.depthTest = true; - this.normalizationEDLMaterial.depthWrite = true; - this.normalizationEDLMaterial.transparent = true; - - this.rtDepth = new THREE.WebGLRenderTarget(1024, 1024, { - minFilter: THREE.NearestFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType, - depthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType) - }); - - this.rtAttribute = new THREE.WebGLRenderTarget(1024, 1024, { - minFilter: THREE.NearestFilter, - magFilter: THREE.NearestFilter, - format: THREE.RGBAFormat, - type: THREE.FloatType, - depthTexture: this.rtDepth.depthTexture, - }); - - this.initialized = true; - }; - - resize(width, height){ - this.rtDepth.setSize(width, height); - this.rtAttribute.setSize(width, height); - } - - clearTargets(){ - const viewer = this.viewer; - const {renderer} = viewer; - - const oldTarget = renderer.getRenderTarget(); - - renderer.setClearColor(0x000000, 0); - - renderer.setRenderTarget( this.rtDepth ); - renderer.clear( true, true, true ); - - renderer.setRenderTarget( this.rtAttribute ); - renderer.clear( true, true, true ); - - renderer.setRenderTarget(oldTarget); - } - - - clear(){ - this.init(); - - const {renderer, background} = this.viewer; - - if(background === "skybox"){ - renderer.setClearColor(0x000000, 0); - } else if (background === 'gradient') { - renderer.setClearColor(0x000000, 0); - } else if (background === 'black') { - renderer.setClearColor(0x000000, 1); - } else if (background === 'white') { - renderer.setClearColor(0xFFFFFF, 1); - } else { - renderer.setClearColor(0x000000, 0); - } - - renderer.clear(); - - this.clearTargets(); - } - - render (params) { - this.init(); - - const viewer = this.viewer; - const camera = params.camera ? params.camera : viewer.scene.getActiveCamera(); - const {width, height} = this.viewer.renderer.getSize(new THREE.Vector2()); - - viewer.dispatchEvent({type: "render.pass.begin",viewer: viewer}); - - this.resize(width, height); - - const visiblePointClouds = viewer.scene.pointclouds.filter(pc => pc.visible); - const originalMaterials = new Map(); - - for(let pointcloud of visiblePointClouds){ - originalMaterials.set(pointcloud, pointcloud.material); - - if(!this.attributeMaterials.has(pointcloud)){ - let attributeMaterial = new PointCloudMaterial(); - this.attributeMaterials.set(pointcloud, attributeMaterial); - } - - if(!this.depthMaterials.has(pointcloud)){ - let depthMaterial = new PointCloudMaterial(); - - depthMaterial.setDefine("depth_pass", "#define hq_depth_pass"); - depthMaterial.setDefine("use_edl", "#define use_edl"); - - this.depthMaterials.set(pointcloud, depthMaterial); - } - } - - { // DEPTH PASS - for (let pointcloud of visiblePointClouds) { - let octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x; - - let material = originalMaterials.get(pointcloud); - let depthMaterial = this.depthMaterials.get(pointcloud); - - depthMaterial.size = material.size; - depthMaterial.minSize = material.minSize; - depthMaterial.maxSize = material.maxSize; - - depthMaterial.pointSizeType = material.pointSizeType; - depthMaterial.visibleNodesTexture = material.visibleNodesTexture; - depthMaterial.weighted = false; - depthMaterial.screenWidth = width; - depthMaterial.shape = PointShape.CIRCLE; - depthMaterial.screenHeight = height; - depthMaterial.uniforms.visibleNodes.value = material.visibleNodesTexture; - depthMaterial.uniforms.octreeSize.value = octreeSize; - depthMaterial.spacing = pointcloud.pcoGeometry.spacing * Math.max(...pointcloud.scale.toArray()); - depthMaterial.classification = material.classification; - depthMaterial.uniforms.classificationLUT.value.image.data = material.uniforms.classificationLUT.value.image.data; - depthMaterial.classificationTexture.needsUpdate = true; - - depthMaterial.uniforms.uFilterReturnNumberRange.value = material.uniforms.uFilterReturnNumberRange.value; - depthMaterial.uniforms.uFilterNumberOfReturnsRange.value = material.uniforms.uFilterNumberOfReturnsRange.value; - depthMaterial.uniforms.uFilterGPSTimeClipRange.value = material.uniforms.uFilterGPSTimeClipRange.value; - depthMaterial.uniforms.uFilterPointSourceIDClipRange.value = material.uniforms.uFilterPointSourceIDClipRange.value; - - depthMaterial.clipTask = material.clipTask; - depthMaterial.clipMethod = material.clipMethod; - depthMaterial.setClipBoxes(material.clipBoxes); - depthMaterial.setClipPolygons(material.clipPolygons); - - pointcloud.material = depthMaterial; - } - - viewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtDepth, { - clipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)), - }); - } - - { // ATTRIBUTE PASS - for (let pointcloud of visiblePointClouds) { - let octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x; - - let material = originalMaterials.get(pointcloud); - let attributeMaterial = this.attributeMaterials.get(pointcloud); - - attributeMaterial.size = material.size; - attributeMaterial.minSize = material.minSize; - attributeMaterial.maxSize = material.maxSize; - - attributeMaterial.pointSizeType = material.pointSizeType; - attributeMaterial.activeAttributeName = material.activeAttributeName; - attributeMaterial.visibleNodesTexture = material.visibleNodesTexture; - attributeMaterial.weighted = true; - attributeMaterial.screenWidth = width; - attributeMaterial.screenHeight = height; - attributeMaterial.shape = PointShape.CIRCLE; - attributeMaterial.uniforms.visibleNodes.value = material.visibleNodesTexture; - attributeMaterial.uniforms.octreeSize.value = octreeSize; - attributeMaterial.spacing = pointcloud.pcoGeometry.spacing * Math.max(...pointcloud.scale.toArray()); - attributeMaterial.classification = material.classification; - attributeMaterial.uniforms.classificationLUT.value.image.data = material.uniforms.classificationLUT.value.image.data; - attributeMaterial.classificationTexture.needsUpdate = true; - - attributeMaterial.uniforms.uFilterReturnNumberRange.value = material.uniforms.uFilterReturnNumberRange.value; - attributeMaterial.uniforms.uFilterNumberOfReturnsRange.value = material.uniforms.uFilterNumberOfReturnsRange.value; - attributeMaterial.uniforms.uFilterGPSTimeClipRange.value = material.uniforms.uFilterGPSTimeClipRange.value; - attributeMaterial.uniforms.uFilterPointSourceIDClipRange.value = material.uniforms.uFilterPointSourceIDClipRange.value; - - attributeMaterial.elevationGradientRepeat = material.elevationGradientRepeat; - attributeMaterial.elevationRange = material.elevationRange; - attributeMaterial.gradient = material.gradient; - attributeMaterial.matcap = material.matcap; - - attributeMaterial.intensityRange = material.intensityRange; - attributeMaterial.intensityGamma = material.intensityGamma; - attributeMaterial.intensityContrast = material.intensityContrast; - attributeMaterial.intensityBrightness = material.intensityBrightness; - - attributeMaterial.rgbGamma = material.rgbGamma; - attributeMaterial.rgbContrast = material.rgbContrast; - attributeMaterial.rgbBrightness = material.rgbBrightness; - - attributeMaterial.weightRGB = material.weightRGB; - attributeMaterial.weightIntensity = material.weightIntensity; - attributeMaterial.weightElevation = material.weightElevation; - attributeMaterial.weightRGB = material.weightRGB; - attributeMaterial.weightClassification = material.weightClassification; - attributeMaterial.weightReturnNumber = material.weightReturnNumber; - attributeMaterial.weightSourceID = material.weightSourceID; - - attributeMaterial.color = material.color; - - attributeMaterial.clipTask = material.clipTask; - attributeMaterial.clipMethod = material.clipMethod; - attributeMaterial.setClipBoxes(material.clipBoxes); - attributeMaterial.setClipPolygons(material.clipPolygons); - - pointcloud.material = attributeMaterial; - } - - let gl = this.gl; - - viewer.renderer.setRenderTarget(null); - viewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtAttribute, { - clipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)), - //material: this.attributeMaterial, - blendFunc: [gl.SRC_ALPHA, gl.ONE], - //depthTest: false, - depthWrite: false - }); - } - - for(let [pointcloud, material] of originalMaterials){ - pointcloud.material = material; - } - - viewer.renderer.setRenderTarget(null); - if(viewer.background === "skybox"){ - viewer.renderer.setClearColor(0x000000, 0); - viewer.renderer.clear(); - viewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation); - viewer.skybox.camera.fov = viewer.scene.cameraP.fov; - viewer.skybox.camera.aspect = viewer.scene.cameraP.aspect; - viewer.skybox.camera.updateProjectionMatrix(); - viewer.renderer.render(viewer.skybox.scene, viewer.skybox.camera); - } else if (viewer.background === 'gradient') { - viewer.renderer.setClearColor(0x000000, 0); - viewer.renderer.clear(); - viewer.renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG); - } else if (viewer.background === 'black') { - viewer.renderer.setClearColor(0x000000, 1); - viewer.renderer.clear(); - } else if (viewer.background === 'white') { - viewer.renderer.setClearColor(0xFFFFFF, 1); - viewer.renderer.clear(); - } else { - viewer.renderer.setClearColor(0x000000, 0); - viewer.renderer.clear(); - } - - { // NORMALIZATION PASS - let normalizationMaterial = this.useEDL ? this.normalizationEDLMaterial : this.normalizationMaterial; - - if(this.useEDL){ - normalizationMaterial.uniforms.edlStrength.value = viewer.edlStrength; - normalizationMaterial.uniforms.radius.value = viewer.edlRadius; - normalizationMaterial.uniforms.screenWidth.value = width; - normalizationMaterial.uniforms.screenHeight.value = height; - normalizationMaterial.uniforms.uEDLMap.value = this.rtDepth.texture; - } - - normalizationMaterial.uniforms.uWeightMap.value = this.rtAttribute.texture; - normalizationMaterial.uniforms.uDepthMap.value = this.rtAttribute.depthTexture; - - Utils.screenPass.render(viewer.renderer, normalizationMaterial); - } - - viewer.renderer.render(viewer.scene.scene, camera); - - viewer.dispatchEvent({type: "render.pass.scene", viewer: viewer}); - - viewer.renderer.clearDepth(); - - viewer.transformationTool.update(); - - viewer.dispatchEvent({type: "render.pass.perspective_overlay",viewer: viewer}); - - viewer.renderer.render(viewer.controls.sceneControls, camera); - viewer.renderer.render(viewer.clippingTool.sceneVolume, camera); - viewer.renderer.render(viewer.transformationTool.scene, camera); - - viewer.renderer.setViewport(width - viewer.navigationCube.width, - height - viewer.navigationCube.width, - viewer.navigationCube.width, viewer.navigationCube.width); - viewer.renderer.render(viewer.navigationCube, viewer.navigationCube.camera); - viewer.renderer.setViewport(0, 0, width, height); - - viewer.dispatchEvent({type: "render.pass.end",viewer: viewer}); - - } - - } - - class View{ - constructor () { - this.position = new THREE.Vector3(0, 0, 0); - - this.yaw = Math.PI / 4; - this._pitch = -Math.PI / 4; - this.radius = 1; - - this.maxPitch = Math.PI / 2; - this.minPitch = -Math.PI / 2; - } - - clone () { - let c = new View(); - c.yaw = this.yaw; - c._pitch = this.pitch; - c.radius = this.radius; - c.maxPitch = this.maxPitch; - c.minPitch = this.minPitch; - - return c; - } - - get pitch () { - return this._pitch; - } - - set pitch (angle) { - this._pitch = Math.max(Math.min(angle, this.maxPitch), this.minPitch); - } - - get direction () { - let dir = new THREE.Vector3(0, 1, 0); - - dir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch); - dir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - return dir; - } - - set direction (dir) { - - //if(dir.x === dir.y){ - if(dir.x === 0 && dir.y === 0){ - this.pitch = Math.PI / 2 * Math.sign(dir.z); - }else { - let yaw = Math.atan2(dir.y, dir.x) - Math.PI / 2; - let pitch = Math.atan2(dir.z, Math.sqrt(dir.x * dir.x + dir.y * dir.y)); - - this.yaw = yaw; - this.pitch = pitch; - } - - } - - lookAt(t){ - let V; - if(arguments.length === 1){ - V = new THREE.Vector3().subVectors(t, this.position); - }else if(arguments.length === 3){ - V = new THREE.Vector3().subVectors(new THREE.Vector3(...arguments), this.position); - } - - let radius = V.length(); - let dir = V.normalize(); - - this.radius = radius; - this.direction = dir; - } - - getPivot () { - return new THREE.Vector3().addVectors(this.position, this.direction.multiplyScalar(this.radius)); - } - - getSide () { - let side = new THREE.Vector3(1, 0, 0); - side.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - return side; - } - - pan (x, y) { - let dir = new THREE.Vector3(0, 1, 0); - dir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch); - dir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - // let side = new THREE.Vector3(1, 0, 0); - // side.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - let side = this.getSide(); - - let up = side.clone().cross(dir); - - let pan = side.multiplyScalar(x).add(up.multiplyScalar(y)); - - this.position = this.position.add(pan); - // this.target = this.target.add(pan); - } - - translate (x, y, z) { - let dir = new THREE.Vector3(0, 1, 0); - dir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch); - dir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - let side = new THREE.Vector3(1, 0, 0); - side.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw); - - let up = side.clone().cross(dir); - - let t = side.multiplyScalar(x) - .add(dir.multiplyScalar(y)) - .add(up.multiplyScalar(z)); - - this.position = this.position.add(t); - } - - translateWorld (x, y, z) { - this.position.x += x; - this.position.y += y; - this.position.z += z; - } - - setView(position, target, duration = 0, callback = null){ - - let endPosition = null; - if(position instanceof Array){ - endPosition = new THREE.Vector3(...position); - }else if(position instanceof THREE.Vector3){ - endPosition = position.clone(); - } - - let endTarget = null; - if(target instanceof Array){ - endTarget = new THREE.Vector3(...target); - }else if(target instanceof THREE.Vector3){ - endTarget = target.clone(); - } - - const startPosition = this.position.clone(); - const startTarget = this.getPivot(); - - //const endPosition = position.clone(); - //const endTarget = target.clone(); - - let easing = TWEEN.Easing.Quartic.Out; - - if(duration === 0){ - this.position.copy(endPosition); - this.lookAt(endTarget); - }else { - let value = {x: 0}; - let tween = new TWEEN.Tween(value).to({x: 1}, duration); - tween.easing(easing); - //this.tweens.push(tween); - - tween.onUpdate(() => { - let t = value.x; - - //console.log(t); - - const pos = new THREE.Vector3( - (1 - t) * startPosition.x + t * endPosition.x, - (1 - t) * startPosition.y + t * endPosition.y, - (1 - t) * startPosition.z + t * endPosition.z, - ); - - const target = new THREE.Vector3( - (1 - t) * startTarget.x + t * endTarget.x, - (1 - t) * startTarget.y + t * endTarget.y, - (1 - t) * startTarget.z + t * endTarget.z, - ); - - this.position.copy(pos); - this.lookAt(target); - - }); - - tween.start(); - - tween.onComplete(() => { - if(callback){ - callback(); - } - }); - } - - } - - }; - - class Scene extends EventDispatcher{ - - constructor(){ - super(); - - this.annotations = new Annotation(); - - this.scene = new THREE.Scene(); - this.sceneBG = new THREE.Scene(); - this.scenePointCloud = new THREE.Scene(); - - this.cameraP = new THREE.PerspectiveCamera(this.fov, 1, 0.1, 1000*1000); - this.cameraO = new THREE.OrthographicCamera(-1, 1, 1, -1, 0.1, 1000*1000); - this.cameraVR = new THREE.PerspectiveCamera(); - this.cameraBG = new THREE.Camera(); - this.cameraScreenSpace = new THREE.OrthographicCamera(-1, 1, 1, -1, 0.1, 10); - this.cameraMode = CameraMode.PERSPECTIVE; - this.overrideCamera = null; - this.pointclouds = []; - - this.measurements = []; - this.profiles = []; - this.volumes = []; - this.polygonClipVolumes = []; - this.cameraAnimations = []; - this.orientedImages = []; - this.images360 = []; - this.geopackages = []; - - this.fpControls = null; - this.orbitControls = null; - this.earthControls = null; - this.geoControls = null; - this.deviceControls = null; - this.inputHandler = null; - - this.view = new View(); - - this.directionalLight = null; - - this.initialize(); - } - - estimateHeightAt (position) { - let height = null; - let fromSpacing = Infinity; - - for (let pointcloud of this.pointclouds) { - if (pointcloud.root.geometryNode === undefined) { - continue; - } - - let pHeight = null; - let pFromSpacing = Infinity; - - let lpos = position.clone().sub(pointcloud.position); - lpos.z = 0; - let ray = new THREE.Ray(lpos, new THREE.Vector3(0, 0, 1)); - - let stack = [pointcloud.root]; - while (stack.length > 0) { - let node = stack.pop(); - let box = node.getBoundingBox(); - - let inside = ray.intersectBox(box); - - if (!inside) { - continue; - } - - let h = node.geometryNode.mean.z + - pointcloud.position.z + - node.geometryNode.boundingBox.min.z; - - if (node.geometryNode.spacing <= pFromSpacing) { - pHeight = h; - pFromSpacing = node.geometryNode.spacing; - } - - for (let index of Object.keys(node.children)) { - let child = node.children[index]; - if (child.geometryNode) { - stack.push(node.children[index]); - } - } - } - - if (height === null || pFromSpacing < fromSpacing) { - height = pHeight; - fromSpacing = pFromSpacing; - } - } - - return height; - } - - getBoundingBox(pointclouds = this.pointclouds){ - let box = new THREE.Box3(); - - this.scenePointCloud.updateMatrixWorld(true); - this.referenceFrame.updateMatrixWorld(true); - - for (let pointcloud of pointclouds) { - pointcloud.updateMatrixWorld(true); - - let pointcloudBox = pointcloud.pcoGeometry.tightBoundingBox ? pointcloud.pcoGeometry.tightBoundingBox : pointcloud.boundingBox; - let boxWorld = Utils.computeTransformedBoundingBox(pointcloudBox, pointcloud.matrixWorld); - box.union(boxWorld); - } - - return box; - } - - addPointCloud (pointcloud) { - this.pointclouds.push(pointcloud); - this.scenePointCloud.add(pointcloud); - - this.dispatchEvent({ - type: 'pointcloud_added', - pointcloud: pointcloud - }); - } - - addVolume (volume) { - this.volumes.push(volume); - this.dispatchEvent({ - 'type': 'volume_added', - 'scene': this, - 'volume': volume - }); - } - - addOrientedImages(images){ - this.orientedImages.push(images); - this.scene.add(images.node); - - this.dispatchEvent({ - 'type': 'oriented_images_added', - 'scene': this, - 'images': images - }); - }; - - removeOrientedImages(images){ - let index = this.orientedImages.indexOf(images); - if (index > -1) { - this.orientedImages.splice(index, 1); - - this.dispatchEvent({ - 'type': 'oriented_images_removed', - 'scene': this, - 'images': images - }); - } - }; - - add360Images(images){ - this.images360.push(images); - this.scene.add(images.node); - - this.dispatchEvent({ - 'type': '360_images_added', - 'scene': this, - 'images': images - }); - } - - remove360Images(images){ - let index = this.images360.indexOf(images); - if (index > -1) { - this.images360.splice(index, 1); - - this.dispatchEvent({ - 'type': '360_images_removed', - 'scene': this, - 'images': images - }); - } - } - - addGeopackage(geopackage){ - this.geopackages.push(geopackage); - this.scene.add(geopackage.node); - - this.dispatchEvent({ - 'type': 'geopackage_added', - 'scene': this, - 'geopackage': geopackage - }); - }; - - removeGeopackage(geopackage){ - let index = this.geopackages.indexOf(geopackage); - if (index > -1) { - this.geopackages.splice(index, 1); - - this.dispatchEvent({ - 'type': 'geopackage_removed', - 'scene': this, - 'geopackage': geopackage - }); - } - }; - - removeVolume (volume) { - let index = this.volumes.indexOf(volume); - if (index > -1) { - this.volumes.splice(index, 1); - - this.dispatchEvent({ - 'type': 'volume_removed', - 'scene': this, - 'volume': volume - }); - } - }; - - addCameraAnimation(animation) { - this.cameraAnimations.push(animation); - this.dispatchEvent({ - 'type': 'camera_animation_added', - 'scene': this, - 'animation': animation - }); - }; - - removeCameraAnimation(animation){ - let index = this.cameraAnimations.indexOf(volume); - if (index > -1) { - this.cameraAnimations.splice(index, 1); - - this.dispatchEvent({ - 'type': 'camera_animation_removed', - 'scene': this, - 'animation': animation - }); - } - }; - - addPolygonClipVolume(volume){ - this.polygonClipVolumes.push(volume); - this.dispatchEvent({ - "type": "polygon_clip_volume_added", - "scene": this, - "volume": volume - }); - }; - - removePolygonClipVolume(volume){ - let index = this.polygonClipVolumes.indexOf(volume); - if (index > -1) { - this.polygonClipVolumes.splice(index, 1); - this.dispatchEvent({ - "type": "polygon_clip_volume_removed", - "scene": this, - "volume": volume - }); - } - }; - - addMeasurement(measurement){ - measurement.lengthUnit = this.lengthUnit; - measurement.lengthUnitDisplay = this.lengthUnitDisplay; - this.measurements.push(measurement); - this.dispatchEvent({ - 'type': 'measurement_added', - 'scene': this, - 'measurement': measurement - }); - }; - - removeMeasurement (measurement) { - let index = this.measurements.indexOf(measurement); - if (index > -1) { - this.measurements.splice(index, 1); - this.dispatchEvent({ - 'type': 'measurement_removed', - 'scene': this, - 'measurement': measurement - }); - } - } - - addProfile (profile) { - this.profiles.push(profile); - this.dispatchEvent({ - 'type': 'profile_added', - 'scene': this, - 'profile': profile - }); - } - - removeProfile (profile) { - let index = this.profiles.indexOf(profile); - if (index > -1) { - this.profiles.splice(index, 1); - this.dispatchEvent({ - 'type': 'profile_removed', - 'scene': this, - 'profile': profile - }); - } - } - - removeAllMeasurements () { - while (this.measurements.length > 0) { - this.removeMeasurement(this.measurements[0]); - } - - while (this.profiles.length > 0) { - this.removeProfile(this.profiles[0]); - } - - while (this.volumes.length > 0) { - this.removeVolume(this.volumes[0]); - } - } - - removeAllClipVolumes(){ - let clipVolumes = this.volumes.filter(volume => volume.clip === true); - for(let clipVolume of clipVolumes){ - this.removeVolume(clipVolume); - } - - while(this.polygonClipVolumes.length > 0){ - this.removePolygonClipVolume(this.polygonClipVolumes[0]); - } - } - - getActiveCamera() { - - if(this.overrideCamera){ - return this.overrideCamera; - } - - if(this.cameraMode === CameraMode.PERSPECTIVE){ - return this.cameraP; - }else if(this.cameraMode === CameraMode.ORTHOGRAPHIC){ - return this.cameraO; - }else if(this.cameraMode === CameraMode.VR){ - return this.cameraVR; - } - - return null; - } - - initialize(){ - - this.referenceFrame = new THREE.Object3D(); - this.referenceFrame.matrixAutoUpdate = false; - this.scenePointCloud.add(this.referenceFrame); - - this.cameraP.up.set(0, 0, 1); - this.cameraP.position.set(1000, 1000, 1000); - this.cameraO.up.set(0, 0, 1); - this.cameraO.position.set(1000, 1000, 1000); - //this.camera.rotation.y = -Math.PI / 4; - //this.camera.rotation.x = -Math.PI / 6; - this.cameraScreenSpace.lookAt(new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, 0, -1), new THREE.Vector3(0, 1, 0)); - - this.directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 ); - this.directionalLight.position.set( 10, 10, 10 ); - this.directionalLight.lookAt( new THREE.Vector3(0, 0, 0)); - this.scenePointCloud.add( this.directionalLight ); - - let light = new THREE.AmbientLight( 0x555555 ); // soft white light - this.scenePointCloud.add( light ); - - { // background - let texture = Utils.createBackgroundTexture(512, 512); - - texture.minFilter = texture.magFilter = THREE.NearestFilter; - texture.minFilter = texture.magFilter = THREE.LinearFilter; - let bg = new THREE.Mesh( - new THREE.PlaneBufferGeometry(2, 2, 0), - new THREE.MeshBasicMaterial({ - map: texture - }) - ); - bg.material.depthTest = false; - bg.material.depthWrite = false; - this.sceneBG.add(bg); - } - - // { // lights - // { - // let light = new THREE.DirectionalLight(0xffffff); - // light.position.set(10, 10, 1); - // light.target.position.set(0, 0, 0); - // this.scene.add(light); - // } - - // { - // let light = new THREE.DirectionalLight(0xffffff); - // light.position.set(-10, 10, 1); - // light.target.position.set(0, 0, 0); - // this.scene.add(light); - // } - - // { - // let light = new THREE.DirectionalLight(0xffffff); - // light.position.set(0, -10, 20); - // light.target.position.set(0, 0, 0); - // this.scene.add(light); - // } - // } - } - - addAnnotation(position, args = {}){ - if(position instanceof Array){ - args.position = new THREE.Vector3().fromArray(position); - } else if (position instanceof THREE.Vector3) { - args.position = position; - } - let annotation = new Annotation(args); - this.annotations.add(annotation); - - return annotation; - } - - getAnnotations () { - return this.annotations; - }; - - removeAnnotation(annotationToRemove) { - this.annotations.remove(annotationToRemove); - } - }; - - // http://epsg.io/ - proj4.defs([ - ['UTM10N', '+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'], - ['EPSG:6339', '+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6340', '+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6341', '+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6342', '+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6343', '+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6344', '+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6345', '+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6346', '+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6347', '+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:6348', '+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs'], - ['EPSG:26910', '+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26911', '+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26912', '+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26913', '+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26914', '+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26915', '+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26916', '+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26917', '+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26918', '+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ['EPSG:26919', '+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '], - ]); - - class MapView{ - - constructor (viewer) { - this.viewer = viewer; - - this.webMapService = 'WMTS'; - this.mapProjectionName = 'EPSG:3857'; - this.mapProjection = proj4.defs(this.mapProjectionName); - this.sceneProjection = null; - - this.extentsLayer = null; - this.cameraLayer = null; - this.toolLayer = null; - this.sourcesLayer = null; - this.sourcesLabelLayer = null; - this.images360Layer = null; - this.enabled = false; - - this.createAnnotationStyle = (text) => { - return [ - new ol.style.Style({ - image: new ol.style.Circle({ - radius: 10, - stroke: new ol.style.Stroke({ - color: [255, 255, 255, 0.5], - width: 2 - }), - fill: new ol.style.Fill({ - color: [0, 0, 0, 0.5] - }) - }) - }) - ]; - }; - - this.createLabelStyle = (text) => { - let style = new ol.style.Style({ - image: new ol.style.Circle({ - radius: 6, - stroke: new ol.style.Stroke({ - color: 'white', - width: 2 - }), - fill: new ol.style.Fill({ - color: 'green' - }) - }), - text: new ol.style.Text({ - font: '12px helvetica,sans-serif', - text: text, - fill: new ol.style.Fill({ - color: '#000' - }), - stroke: new ol.style.Stroke({ - color: '#fff', - width: 2 - }) - }) - }); - - return style; - }; - } - - showSources (show) { - this.sourcesLayer.setVisible(show); - this.sourcesLabelLayer.setVisible(show); - } - - init () { - - if(typeof ol === "undefined"){ - return; - } - - this.elMap = $('#potree_map'); - this.elMap.draggable({ handle: $('#potree_map_header') }); - this.elMap.resizable(); - - this.elTooltip = $(`
        `); - this.elMap.append(this.elTooltip); - - let extentsLayer = this.getExtentsLayer(); - let cameraLayer = this.getCameraLayer(); - this.getToolLayer(); - let sourcesLayer = this.getSourcesLayer(); - this.images360Layer = this.getImages360Layer(); - this.getSourcesLabelLayer(); - this.getAnnotationsLayer(); - - let mousePositionControl = new ol.control.MousePosition({ - coordinateFormat: ol.coordinate.createStringXY(5), - projection: 'EPSG:4326', - undefinedHTML: ' ' - }); - - let _this = this; - let DownloadSelectionControl = function (optOptions) { - let options = optOptions || {}; - - // TOGGLE TILES - let btToggleTiles = document.createElement('button'); - btToggleTiles.innerHTML = 'T'; - btToggleTiles.addEventListener('click', () => { - let visible = sourcesLayer.getVisible(); - _this.showSources(!visible); - }, false); - btToggleTiles.style.float = 'left'; - btToggleTiles.title = 'show / hide tiles'; - - // DOWNLOAD SELECTED TILES - let link = document.createElement('a'); - link.href = '#'; - link.download = 'list.txt'; - link.style.float = 'left'; - - let button = document.createElement('button'); - button.innerHTML = 'D'; - link.appendChild(button); - - let handleDownload = (e) => { - let features = selectedFeatures.getArray(); - - let url = [document.location.protocol, '//', document.location.host, document.location.pathname].join(''); - - if (features.length === 0) { - alert('No tiles were selected. Select area with ctrl + left mouse button!'); - e.preventDefault(); - e.stopImmediatePropagation(); - return false; - } else if (features.length === 1) { - let feature = features[0]; - - if (feature.source) { - let cloudjsurl = feature.pointcloud.pcoGeometry.url; - let sourceurl = new URL(url + '/../' + cloudjsurl + '/../source/' + feature.source.name); - link.href = sourceurl.href; - link.download = feature.source.name; - } - } else { - let content = ''; - for (let i = 0; i < features.length; i++) { - let feature = features[i]; - - if (feature.source) { - let cloudjsurl = feature.pointcloud.pcoGeometry.url; - let sourceurl = new URL(url + '/../' + cloudjsurl + '/../source/' + feature.source.name); - content += sourceurl.href + '\n'; - } - } - - let uri = 'data:application/octet-stream;base64,' + btoa(content); - link.href = uri; - link.download = 'list_of_files.txt'; - } - }; - - button.addEventListener('click', handleDownload, false); - - // assemble container - let element = document.createElement('div'); - element.className = 'ol-unselectable ol-control'; - element.appendChild(link); - element.appendChild(btToggleTiles); - element.style.bottom = '0.5em'; - element.style.left = '0.5em'; - element.title = 'Download file or list of selected tiles. Select tile with left mouse button or area using ctrl + left mouse.'; - - ol.control.Control.call(this, { - element: element, - target: options.target - }); - }; - ol.inherits(DownloadSelectionControl, ol.control.Control); - - this.map = new ol.Map({ - controls: ol.control.defaults({ - attributionOptions: ({ - collapsible: false - }) - }).extend([ - // this.controls.zoomToExtent, - new DownloadSelectionControl(), - mousePositionControl - ]), - layers: [ - new ol.layer.Tile({source: new ol.source.OSM()}), - this.toolLayer, - this.annotationsLayer, - this.sourcesLayer, - this.sourcesLabelLayer, - this.images360Layer, - extentsLayer, - cameraLayer - ], - target: 'potree_map_content', - view: new ol.View({ - center: this.olCenter, - zoom: 9 - }) - }); - - // DRAGBOX / SELECTION - this.dragBoxLayer = new ol.layer.Vector({ - source: new ol.source.Vector({}), - style: new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: 'rgba(0, 0, 255, 1)', - width: 2 - }) - }) - }); - this.map.addLayer(this.dragBoxLayer); - - let select = new ol.interaction.Select(); - this.map.addInteraction(select); - - let selectedFeatures = select.getFeatures(); - - let dragBox = new ol.interaction.DragBox({ - condition: ol.events.condition.platformModifierKeyOnly - }); - - this.map.addInteraction(dragBox); - - // this.map.on('pointermove', evt => { - // let pixel = evt.pixel; - // let feature = this.map.forEachFeatureAtPixel(pixel, function (feature) { - // return feature; - // }); - - // // console.log(feature); - // // this.elTooltip.css("display", feature ? '' : 'none'); - // this.elTooltip.css('display', 'none'); - // if (feature && feature.onHover) { - // feature.onHover(evt); - // // overlay.setPosition(evt.coordinate); - // // tooltip.innerHTML = feature.get('name'); - // } - // }); - - this.map.on('click', evt => { - let pixel = evt.pixel; - let feature = this.map.forEachFeatureAtPixel(pixel, function (feature) { - return feature; - }); - - if (feature && feature.onClick) { - feature.onClick(evt); - } - }); - - dragBox.on('boxend', (e) => { - // features that intersect the box are added to the collection of - // selected features, and their names are displayed in the "info" - // div - let extent = dragBox.getGeometry().getExtent(); - this.getSourcesLayer().getSource().forEachFeatureIntersectingExtent(extent, (feature) => { - selectedFeatures.push(feature); - }); - }); - - // clear selection when drawing a new box and when clicking on the map - dragBox.on('boxstart', (e) => { - selectedFeatures.clear(); - }); - this.map.on('click', () => { - selectedFeatures.clear(); - }); - - this.viewer.addEventListener('scene_changed', e => { - this.setScene(e.scene); - }); - - this.onPointcloudAdded = e => { - this.load(e.pointcloud); - }; - - this.on360ImagesAdded = e => { - this.addImages360(e.images); - }; - - this.onAnnotationAdded = e => { - if (!this.sceneProjection) { - return; - } - - let annotation = e.annotation; - let position = annotation.position; - let mapPos = this.toMap.forward([position.x, position.y]); - let feature = new ol.Feature({ - geometry: new ol.geom.Point(mapPos), - name: annotation.title - }); - feature.setStyle(this.createAnnotationStyle(annotation.title)); - - feature.onHover = evt => { - let coordinates = feature.getGeometry().getCoordinates(); - let p = this.map.getPixelFromCoordinate(coordinates); - - this.elTooltip.html(annotation.title); - this.elTooltip.css('display', ''); - this.elTooltip.css('left', `${p[0]}px`); - this.elTooltip.css('top', `${p[1]}px`); - }; - - feature.onClick = evt => { - annotation.clickTitle(); - }; - - this.getAnnotationsLayer().getSource().addFeature(feature); - }; - - this.setScene(this.viewer.scene); - } - - setScene (scene) { - if (this.scene === scene) { - return; - }; - - if (this.scene) { - this.scene.removeEventListener('pointcloud_added', this.onPointcloudAdded); - this.scene.removeEventListener('360_images_added', this.on360ImagesAdded); - this.scene.annotations.removeEventListener('annotation_added', this.onAnnotationAdded); - } - - this.scene = scene; - - this.scene.addEventListener('pointcloud_added', this.onPointcloudAdded); - this.scene.addEventListener('360_images_added', this.on360ImagesAdded); - this.scene.annotations.addEventListener('annotation_added', this.onAnnotationAdded); - - for (let pointcloud of this.viewer.scene.pointclouds) { - this.load(pointcloud); - } - - this.viewer.scene.annotations.traverseDescendants(annotation => { - this.onAnnotationAdded({annotation: annotation}); - }); - - for(let images of this.viewer.scene.images360){ - this.on360ImagesAdded({images: images}); - } - } - - getExtentsLayer () { - if (this.extentsLayer) { - return this.extentsLayer; - } - - this.gExtent = new ol.geom.LineString([[0, 0], [0, 0]]); - - let feature = new ol.Feature(this.gExtent); - let featureVector = new ol.source.Vector({ - features: [feature] - }); - - this.extentsLayer = new ol.layer.Vector({ - source: featureVector, - style: new ol.style.Style({ - fill: new ol.style.Fill({ - color: 'rgba(255, 255, 255, 0.2)' - }), - stroke: new ol.style.Stroke({ - color: '#0000ff', - width: 2 - }), - image: new ol.style.Circle({ - radius: 3, - fill: new ol.style.Fill({ - color: '#0000ff' - }) - }) - }) - }); - - return this.extentsLayer; - } - - getAnnotationsLayer () { - if (this.annotationsLayer) { - return this.annotationsLayer; - } - - this.annotationsLayer = new ol.layer.Vector({ - source: new ol.source.Vector({ - }), - style: new ol.style.Style({ - fill: new ol.style.Fill({ - color: 'rgba(255, 0, 0, 1)' - }), - stroke: new ol.style.Stroke({ - color: 'rgba(255, 0, 0, 1)', - width: 2 - }) - }) - }); - - return this.annotationsLayer; - } - - getCameraLayer () { - if (this.cameraLayer) { - return this.cameraLayer; - } - - // CAMERA LAYER - this.gCamera = new ol.geom.LineString([[0, 0], [0, 0], [0, 0], [0, 0]]); - let feature = new ol.Feature(this.gCamera); - let featureVector = new ol.source.Vector({ - features: [feature] - }); - - this.cameraLayer = new ol.layer.Vector({ - source: featureVector, - style: new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: '#0000ff', - width: 2 - }) - }) - }); - - return this.cameraLayer; - } - - getToolLayer () { - if (this.toolLayer) { - return this.toolLayer; - } - - this.toolLayer = new ol.layer.Vector({ - source: new ol.source.Vector({ - }), - style: new ol.style.Style({ - fill: new ol.style.Fill({ - color: 'rgba(255, 0, 0, 1)' - }), - stroke: new ol.style.Stroke({ - color: 'rgba(255, 0, 0, 1)', - width: 2 - }) - }) - }); - - return this.toolLayer; - } - - getImages360Layer(){ - if(this.images360Layer){ - return this.images360Layer; - } - - let style = new ol.style.Style({ - image: new ol.style.Circle({ - radius: 4, - stroke: new ol.style.Stroke({ - color: [255, 0, 0, 1], - width: 2 - }), - fill: new ol.style.Fill({ - color: [255, 100, 100, 1] - }) - }) - }); - - let layer = new ol.layer.Vector({ - source: new ol.source.Vector({}), - style: style, - }); - - this.images360Layer = layer; - - return this.images360Layer; - } - - getSourcesLayer () { - if (this.sourcesLayer) { - return this.sourcesLayer; - } - - this.sourcesLayer = new ol.layer.Vector({ - source: new ol.source.Vector({}), - style: new ol.style.Style({ - fill: new ol.style.Fill({ - color: 'rgba(0, 0, 150, 0.1)' - }), - stroke: new ol.style.Stroke({ - color: 'rgba(0, 0, 150, 1)', - width: 1 - }) - }) - }); - - return this.sourcesLayer; - } - - getSourcesLabelLayer () { - if (this.sourcesLabelLayer) { - return this.sourcesLabelLayer; - } - - this.sourcesLabelLayer = new ol.layer.Vector({ - source: new ol.source.Vector({ - }), - style: new ol.style.Style({ - fill: new ol.style.Fill({ - color: 'rgba(255, 0, 0, 0.1)' - }), - stroke: new ol.style.Stroke({ - color: 'rgba(255, 0, 0, 1)', - width: 2 - }) - }), - minResolution: 0.01, - maxResolution: 20 - }); - - return this.sourcesLabelLayer; - } - - setSceneProjection (sceneProjection) { - this.sceneProjection = sceneProjection; - this.toMap = proj4(this.sceneProjection, this.mapProjection); - this.toScene = proj4(this.mapProjection, this.sceneProjection); - }; - - getMapExtent () { - let bb = this.viewer.getBoundingBox(); - - let bottomLeft = this.toMap.forward([bb.min.x, bb.min.y]); - let bottomRight = this.toMap.forward([bb.max.x, bb.min.y]); - let topRight = this.toMap.forward([bb.max.x, bb.max.y]); - let topLeft = this.toMap.forward([bb.min.x, bb.max.y]); - - let extent = { - bottomLeft: bottomLeft, - bottomRight: bottomRight, - topRight: topRight, - topLeft: topLeft - }; - - return extent; - }; - - getMapCenter () { - let mapExtent = this.getMapExtent(); - - let mapCenter = [ - (mapExtent.bottomLeft[0] + mapExtent.topRight[0]) / 2, - (mapExtent.bottomLeft[1] + mapExtent.topRight[1]) / 2 - ]; - - return mapCenter; - }; - - updateToolDrawings () { - this.toolLayer.getSource().clear(); - - let profiles = this.viewer.profileTool.profiles; - for (let i = 0; i < profiles.length; i++) { - let profile = profiles[i]; - let coordinates = []; - - for (let j = 0; j < profile.points.length; j++) { - let point = profile.points[j]; - let pointMap = this.toMap.forward([point.x, point.y]); - coordinates.push(pointMap); - } - - let line = new ol.geom.LineString(coordinates); - let feature = new ol.Feature(line); - this.toolLayer.getSource().addFeature(feature); - } - - let measurements = this.viewer.measuringTool.measurements; - for (let i = 0; i < measurements.length; i++) { - let measurement = measurements[i]; - let coordinates = []; - - for (let j = 0; j < measurement.points.length; j++) { - let point = measurement.points[j].position; - let pointMap = this.toMap.forward([point.x, point.y]); - coordinates.push(pointMap); - } - - if (measurement.closed && measurement.points.length > 0) { - coordinates.push(coordinates[0]); - } - - let line = new ol.geom.LineString(coordinates); - let feature = new ol.Feature(line); - this.toolLayer.getSource().addFeature(feature); - } - } - - addImages360(images){ - let transform = this.toMap.forward; - let layer = this.getImages360Layer(); - - for(let image of images.images){ - - let p = transform([image.position[0], image.position[1]]); - - let feature = new ol.Feature({ - 'geometry': new ol.geom.Point(p), - }); - - feature.onClick = () => { - images.focus(image); - }; - - layer.getSource().addFeature(feature); - } - } - - async load (pointcloud) { - if (!pointcloud) { - return; - } - - if (!pointcloud.projection) { - return; - } - - if (!this.sceneProjection) { - try { - this.setSceneProjection(pointcloud.projection); - }catch (e) { - console.log('Failed projection:', e); - - if (pointcloud.fallbackProjection) { - try { - console.log('Trying fallback projection...'); - this.setSceneProjection(pointcloud.fallbackProjection); - console.log('Set projection from fallback'); - }catch (e) { - console.log('Failed fallback projection:', e); - return; - } - }else { - return; - }; - } - } - - let mapExtent = this.getMapExtent(); - let mapCenter = this.getMapCenter(); - - let view = this.map.getView(); - view.setCenter(mapCenter); - - this.gExtent.setCoordinates([ - mapExtent.bottomLeft, - mapExtent.bottomRight, - mapExtent.topRight, - mapExtent.topLeft, - mapExtent.bottomLeft - ]); - - view.fit(this.gExtent, [300, 300], { - constrainResolution: false - }); - - if (pointcloud.pcoGeometry.type == 'ept'){ - return; - } - - let url = `${pointcloud.pcoGeometry.url}/../sources.json`; - //let response = await fetch(url); - - fetch(url).then(async (response) => { - let data = await response.json(); - - let sources = data.sources; - - for (let i = 0; i < sources.length; i++) { - let source = sources[i]; - let name = source.name; - let bounds = source.bounds; - - let mapBounds = { - min: this.toMap.forward([bounds.min[0], bounds.min[1]]), - max: this.toMap.forward([bounds.max[0], bounds.max[1]]) - }; - let mapCenter = [ - (mapBounds.min[0] + mapBounds.max[0]) / 2, - (mapBounds.min[1] + mapBounds.max[1]) / 2 - ]; - - let p1 = this.toMap.forward([bounds.min[0], bounds.min[1]]); - let p2 = this.toMap.forward([bounds.max[0], bounds.min[1]]); - let p3 = this.toMap.forward([bounds.max[0], bounds.max[1]]); - let p4 = this.toMap.forward([bounds.min[0], bounds.max[1]]); - - // let feature = new ol.Feature({ - // 'geometry': new ol.geom.LineString([p1, p2, p3, p4, p1]) - // }); - let feature = new ol.Feature({ - 'geometry': new ol.geom.Polygon([[p1, p2, p3, p4, p1]]) - }); - feature.source = source; - feature.pointcloud = pointcloud; - this.getSourcesLayer().getSource().addFeature(feature); - - feature = new ol.Feature({ - geometry: new ol.geom.Point(mapCenter), - name: name - }); - feature.setStyle(this.createLabelStyle(name)); - this.sourcesLabelLayer.getSource().addFeature(feature); - } - }).catch(() => { - - }); - - } - - toggle () { - if (this.elMap.is(':visible')) { - this.elMap.css('display', 'none'); - this.enabled = false; - } else { - this.elMap.css('display', 'block'); - this.enabled = true; - } - } - - update (delta) { - if (!this.sceneProjection) { - return; - } - - let pm = $('#potree_map'); - - if (!this.enabled) { - return; - } - - // resize - let mapSize = this.map.getSize(); - let resized = (pm.width() !== mapSize[0] || pm.height() !== mapSize[1]); - if (resized) { - this.map.updateSize(); - } - - // - let camera = this.viewer.scene.getActiveCamera(); - - let scale = this.map.getView().getResolution(); - let campos = camera.position; - let camdir = camera.getWorldDirection(new THREE.Vector3()); - let sceneLookAt = camdir.clone().multiplyScalar(30 * scale).add(campos); - let geoPos = camera.position; - let geoLookAt = sceneLookAt; - let mapPos = new THREE.Vector2().fromArray(this.toMap.forward([geoPos.x, geoPos.y])); - let mapLookAt = new THREE.Vector2().fromArray(this.toMap.forward([geoLookAt.x, geoLookAt.y])); - let mapDir = new THREE.Vector2().subVectors(mapLookAt, mapPos).normalize(); - - mapLookAt = mapPos.clone().add(mapDir.clone().multiplyScalar(30 * scale)); - let mapLength = mapPos.distanceTo(mapLookAt); - let mapSide = new THREE.Vector2(-mapDir.y, mapDir.x); - - let p1 = mapPos.toArray(); - let p2 = mapLookAt.clone().sub(mapSide.clone().multiplyScalar(0.3 * mapLength)).toArray(); - let p3 = mapLookAt.clone().add(mapSide.clone().multiplyScalar(0.3 * mapLength)).toArray(); - - this.gCamera.setCoordinates([p1, p2, p3, p1]); - } - - get sourcesVisible () { - return this.getSourcesLayer().getVisible(); - } - - set sourcesVisible (value) { - this.getSourcesLayer().setVisible(value); - } - - } - - class CSVExporter { - static toString (points) { - let string = ''; - - let attributes = Object.keys(points.data) - .filter(a => a !== 'normal') - .sort((a, b) => { - if (a === 'position') return -1; - if (b === 'position') return 1; - if (a === 'rgba') return -1; - if (b === 'rgba') return 1; - }); - - let headerValues = []; - for (let attribute of attributes) { - let itemSize = points.data[attribute].length / points.numPoints; - - if (attribute === 'position') { - headerValues = headerValues.concat(['x', 'y', 'z']); - } else if (attribute === 'rgba') { - headerValues = headerValues.concat(['r', 'g', 'b', 'a']); - } else if (itemSize > 1) { - for (let i = 0; i < itemSize; i++) { - headerValues.push(`${attribute}_${i}`); - } - } else { - headerValues.push(attribute); - } - } - string = headerValues.join(', ') + '\n'; - - for (let i = 0; i < points.numPoints; i++) { - let values = []; - - for (let attribute of attributes) { - let itemSize = points.data[attribute].length / points.numPoints; - let value = points.data[attribute] - .subarray(itemSize * i, itemSize * i + itemSize) - .join(', '); - values.push(value); - } - - string += values.join(', ') + '\n'; - } - - return string; - } - }; - - class LASExporter { - static toLAS (points) { - // TODO Unused: let string = ''; - - let boundingBox = points.boundingBox; - let offset = boundingBox.min.clone(); - let diagonal = boundingBox.min.distanceTo(boundingBox.max); - let scale = new THREE.Vector3(0.001, 0.001, 0.001); - if (diagonal > 1000 * 1000) { - scale = new THREE.Vector3(0.01, 0.01, 0.01); - } else { - scale = new THREE.Vector3(0.001, 0.001, 0.001); - } - - let setString = function (string, offset, buffer) { - let view = new Uint8Array(buffer); - - for (let i = 0; i < string.length; i++) { - let charCode = string.charCodeAt(i); - view[offset + i] = charCode; - } - }; - - let buffer = new ArrayBuffer(227 + 28 * points.numPoints); - let view = new DataView(buffer); - let u8View = new Uint8Array(buffer); - // let u16View = new Uint16Array(buffer); - - setString('LASF', 0, buffer); - u8View[24] = 1; - u8View[25] = 2; - - // system identifier o:26 l:32 - - // generating software o:58 l:32 - setString('Potree 1.7', 58, buffer); - - // file creation day of year o:90 l:2 - // file creation year o:92 l:2 - - // header size o:94 l:2 - view.setUint16(94, 227, true); - - // offset to point data o:96 l:4 - view.setUint32(96, 227, true); - - // number of letiable length records o:100 l:4 - - // point data record format 104 1 - u8View[104] = 2; - - // point data record length 105 2 - view.setUint16(105, 28, true); - - // number of point records 107 4 - view.setUint32(107, points.numPoints, true); - - // number of points by return 111 20 - - // x scale factor 131 8 - view.setFloat64(131, scale.x, true); - - // y scale factor 139 8 - view.setFloat64(139, scale.y, true); - - // z scale factor 147 8 - view.setFloat64(147, scale.z, true); - - // x offset 155 8 - view.setFloat64(155, offset.x, true); - - // y offset 163 8 - view.setFloat64(163, offset.y, true); - - // z offset 171 8 - view.setFloat64(171, offset.z, true); - - // max x 179 8 - view.setFloat64(179, boundingBox.max.x, true); - - // min x 187 8 - view.setFloat64(187, boundingBox.min.x, true); - - // max y 195 8 - view.setFloat64(195, boundingBox.max.y, true); - - // min y 203 8 - view.setFloat64(203, boundingBox.min.y, true); - - // max z 211 8 - view.setFloat64(211, boundingBox.max.z, true); - - // min z 219 8 - view.setFloat64(219, boundingBox.min.z, true); - - let boffset = 227; - for (let i = 0; i < points.numPoints; i++) { - - let px = points.data.position[3 * i + 0]; - let py = points.data.position[3 * i + 1]; - let pz = points.data.position[3 * i + 2]; - - let ux = parseInt((px - offset.x) / scale.x); - let uy = parseInt((py - offset.y) / scale.y); - let uz = parseInt((pz - offset.z) / scale.z); - - view.setUint32(boffset + 0, ux, true); - view.setUint32(boffset + 4, uy, true); - view.setUint32(boffset + 8, uz, true); - - if (points.data.intensity) { - view.setUint16(boffset + 12, (points.data.intensity[i]), true); - } - - let rt = 0; - if (points.data.returnNumber) { - rt += points.data.returnNumber[i]; - } - if (points.data.numberOfReturns) { - rt += (points.data.numberOfReturns[i] << 3); - } - view.setUint8(boffset + 14, rt); - - if (points.data.classification) { - view.setUint8(boffset + 15, points.data.classification[i]); - } - // scan angle rank - // user data - // point source id - if (points.data.pointSourceID) { - view.setUint16(boffset + 18, points.data.pointSourceID[i]); - } - - if (points.data.rgba) { - let rgba = points.data.rgba; - view.setUint16(boffset + 20, (rgba[4 * i + 0] * 255), true); - view.setUint16(boffset + 22, (rgba[4 * i + 1] * 255), true); - view.setUint16(boffset + 24, (rgba[4 * i + 2] * 255), true); - } - - boffset += 28; - } - - return buffer; - } - - } - - function copyMaterial(source, target){ - - for(let name of Object.keys(target.uniforms)){ - target.uniforms[name].value = source.uniforms[name].value; - } - - target.gradientTexture = source.gradientTexture; - target.visibleNodesTexture = source.visibleNodesTexture; - target.classificationTexture = source.classificationTexture; - target.matcapTexture = source.matcapTexture; - - target.activeAttributeName = source.activeAttributeName; - target.ranges = source.ranges; - - //target.updateShaderSource(); - } - - - class Batch{ - - constructor(geometry, material){ - this.geometry = geometry; - this.material = material; - - this.sceneNode = new THREE.Points(geometry, material); - - this.geometryNode = { - estimatedSpacing: 1.0, - geometry: geometry, - }; - } - - getLevel(){ - return 0; - } - - } - - class ProfileFakeOctree extends PointCloudTree{ - - constructor(octree){ - super(); - - this.trueOctree = octree; - this.pcoGeometry = octree.pcoGeometry; - this.points = []; - this.visibleNodes = []; - - //this.material = this.trueOctree.material; - this.material = new PointCloudMaterial(); - //this.material.copy(this.trueOctree.material); - copyMaterial(this.trueOctree.material, this.material); - this.material.pointSizeType = PointSizeType.FIXED; - - this.batchSize = 100 * 1000; - this.currentBatch = null; - } - - getAttribute(name){ - return this.trueOctree.getAttribute(name); - } - - dispose(){ - for(let node of this.visibleNodes){ - node.geometry.dispose(); - } - - this.visibleNodes = []; - this.currentBatch = null; - this.points = []; - } - - addPoints(data){ - // since each call to addPoints can deliver very very few points, - // we're going to batch them into larger buffers for efficiency. - - if(this.currentBatch === null){ - this.currentBatch = this.createNewBatch(data); - } - - this.points.push(data); - - - let updateRange = { - start: this.currentBatch.geometry.drawRange.count, - count: 0 - }; - let projectedBox = new THREE.Box3(); - - let truePos = new THREE.Vector3(); - - for(let i = 0; i < data.numPoints; i++){ - - if(updateRange.start + updateRange.count >= this.batchSize){ - // current batch full, start new batch - - for(let key of Object.keys(this.currentBatch.geometry.attributes)){ - let attribute = this.currentBatch.geometry.attributes[key]; - attribute.updateRange.offset = updateRange.start; - attribute.updateRange.count = updateRange.count; - attribute.needsUpdate = true; - } - - this.currentBatch.geometry.computeBoundingBox(); - this.currentBatch.geometry.computeBoundingSphere(); - - this.currentBatch = this.createNewBatch(); - updateRange = { - start: 0, - count: 0 - }; - } - - truePos.set( - data.data.position[3 * i + 0] + this.trueOctree.position.x, - data.data.position[3 * i + 1] + this.trueOctree.position.y, - data.data.position[3 * i + 2] + this.trueOctree.position.z, - ); - - let x = data.data.mileage[i]; - let y = 0; - let z = truePos.z; - - projectedBox.expandByPoint(new THREE.Vector3(x, y, z)); - - let index = updateRange.start + updateRange.count; - let geometry = this.currentBatch.geometry; - - for(let attributeName of Object.keys(data.data)){ - let source = data.data[attributeName]; - let target = geometry.attributes[attributeName]; - let numElements = target.itemSize; - - for(let item = 0; item < numElements; item++){ - target.array[numElements * index + item] = source[numElements * i + item]; - } - } - - { - let position = geometry.attributes.position; - - position.array[3 * index + 0] = x; - position.array[3 * index + 1] = y; - position.array[3 * index + 2] = z; - } - - updateRange.count++; - this.currentBatch.geometry.drawRange.count++; - } - - for(let key of Object.keys(this.currentBatch.geometry.attributes)){ - let attribute = this.currentBatch.geometry.attributes[key]; - attribute.updateRange.offset = updateRange.start; - attribute.updateRange.count = updateRange.count; - attribute.needsUpdate = true; - } - - data.projectedBox = projectedBox; - - this.projectedBox = this.points.reduce( (a, i) => a.union(i.projectedBox), new THREE.Box3()); - } - - createNewBatch(data){ - let geometry = new THREE.BufferGeometry(); - - // create new batches with batch_size elements of the same type as the attribute - for(let attributeName of Object.keys(data.data)){ - let buffer = data.data[attributeName]; - let numElements = buffer.length / data.numPoints; // 3 for pos, 4 for col, 1 for scalars - let constructor = buffer.constructor; - let normalized = false; - - if(this.trueOctree.root.sceneNode){ - if(this.trueOctree.root.sceneNode.geometry.attributes[attributeName]){ - normalized = this.trueOctree.root.sceneNode.geometry.attributes[attributeName].normalized; - } - } - - - let batchBuffer = new constructor(numElements * this.batchSize); - - let bufferAttribute = new THREE.BufferAttribute(batchBuffer, numElements, normalized); - bufferAttribute.potree = { - range: [0, 1], - }; - - geometry.addAttribute(attributeName, bufferAttribute); - } - - geometry.drawRange.start = 0; - geometry.drawRange.count = 0; - - let batch = new Batch(geometry, this.material); - - this.visibleNodes.push(batch); - - return batch; - } - - computeVisibilityTextureData(){ - let data = new Uint8Array(this.visibleNodes.length * 4); - let offsets = new Map(); - - for(let i = 0; i < this.visibleNodes.length; i++){ - let node = this.visibleNodes[i]; - - offsets[node] = i; - } - - - return { - data: data, - offsets: offsets, - }; - } - - } - - class ProfileWindow extends EventDispatcher { - constructor (viewer) { - super(); - - this.viewer = viewer; - this.elRoot = $('#profile_window'); - this.renderArea = this.elRoot.find('#profileCanvasContainer'); - this.svg = d3.select('svg#profileSVG'); - this.mouseIsDown = false; - - this.projectedBox = new THREE.Box3(); - this.pointclouds = new Map(); - this.numPoints = 0; - this.lastAddPointsTimestamp = undefined; - - this.mouse = new THREE.Vector2(0, 0); - this.scale = new THREE.Vector3(1, 1, 1); - - this.autoFitEnabled = true; // completely disable/enable - this.autoFit = false; // internal - - let cwIcon = `${exports.resourcePath}/icons/arrow_cw.svg`; - $('#potree_profile_rotate_cw').attr('src', cwIcon); - - let ccwIcon = `${exports.resourcePath}/icons/arrow_ccw.svg`; - $('#potree_profile_rotate_ccw').attr('src', ccwIcon); - - let forwardIcon = `${exports.resourcePath}/icons/arrow_up.svg`; - $('#potree_profile_move_forward').attr('src', forwardIcon); - - let backwardIcon = `${exports.resourcePath}/icons/arrow_down.svg`; - $('#potree_profile_move_backward').attr('src', backwardIcon); - - let csvIcon = `${exports.resourcePath}/icons/file_csv_2d.svg`; - $('#potree_download_csv_icon').attr('src', csvIcon); - - let lasIcon = `${exports.resourcePath}/icons/file_las_3d.svg`; - $('#potree_download_las_icon').attr('src', lasIcon); - - let closeIcon = `${exports.resourcePath}/icons/close.svg`; - $('#closeProfileContainer').attr("src", closeIcon); - - this.initTHREE(); - this.initSVG(); - this.initListeners(); - - this.pRenderer = new Renderer(this.renderer); - - this.elRoot.i18n(); - } - - initListeners () { - $(window).resize(() => { - if (this.enabled) { - this.render(); - } - }); - - this.renderArea.mousedown(e => { - this.mouseIsDown = true; - }); - - this.renderArea.mouseup(e => { - this.mouseIsDown = false; - }); - - let viewerPickSphereSizeHandler = () => { - let camera = this.viewer.scene.getActiveCamera(); - let domElement = this.viewer.renderer.domElement; - let distance = this.viewerPickSphere.position.distanceTo(camera.position); - let pr = Utils.projectedRadius(1, camera, distance, domElement.clientWidth, domElement.clientHeight); - let scale = (10 / pr); - this.viewerPickSphere.scale.set(scale, scale, scale); - }; - - this.renderArea.mousemove(e => { - if (this.pointclouds.size === 0) { - return; - } - - let rect = this.renderArea[0].getBoundingClientRect(); - let x = e.clientX - rect.left; - let y = e.clientY - rect.top; - - let newMouse = new THREE.Vector2(x, y); - - if (this.mouseIsDown) { - // DRAG - this.autoFit = false; - this.lastDrag = new Date().getTime(); - - let cPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)]; - let ncPos = [this.scaleX.invert(newMouse.x), this.scaleY.invert(newMouse.y)]; - - this.camera.position.x -= ncPos[0] - cPos[0]; - this.camera.position.z -= ncPos[1] - cPos[1]; - - this.render(); - } else if (this.pointclouds.size > 0) { - // FIND HOVERED POINT - let radius = Math.abs(this.scaleX.invert(0) - this.scaleX.invert(40)); - let mileage = this.scaleX.invert(newMouse.x); - let elevation = this.scaleY.invert(newMouse.y); - - let closest = this.selectPoint(mileage, elevation, radius); - - if (closest) { - let point = closest.point; - - let position = new Float64Array([ - point.position[0] + closest.pointcloud.position.x, - point.position[1] + closest.pointcloud.position.y, - point.position[2] + closest.pointcloud.position.z - ]); - - this.elRoot.find('#profileSelectionProperties').fadeIn(200); - this.pickSphere.visible = true; - this.pickSphere.scale.set(0.5 * radius, 0.5 * radius, 0.5 * radius); - this.pickSphere.position.set(point.mileage, 0, position[2]); - - this.viewerPickSphere.position.set(...position); - - if(!this.viewer.scene.scene.children.includes(this.viewerPickSphere)){ - this.viewer.scene.scene.add(this.viewerPickSphere); - if(!this.viewer.hasEventListener("update", viewerPickSphereSizeHandler)){ - this.viewer.addEventListener("update", viewerPickSphereSizeHandler); - } - } - - - let info = this.elRoot.find('#profileSelectionProperties'); - let html = ''; - - for (let attributeName of Object.keys(point)) { - - let value = point[attributeName]; - let attribute = closest.pointcloud.getAttribute(attributeName); - - let transform = value => value; - if(attribute && attribute.type.size > 4){ - let range = attribute.initialRange; - let scale = 1 / (range[1] - range[0]); - let offset = range[0]; - transform = value => value / scale + offset; - } - - - - - - if (attributeName === 'position') { - let values = [...position].map(v => Utils.addCommas(v.toFixed(3))); - html += ` - - - - - - - - - - - - `; - } else if (attributeName === 'rgba') { - html += ` - - - - `; - } else if (attributeName === 'normal') { - continue; - } else if (attributeName === 'mileage') { - html += ` - - - - `; - } else { - html += ` - - - - `; - } - } - html += '
        x${values[0]}
        y${values[1]}
        z${values[2]}
        ${attributeName}${value.join(', ')}
        ${attributeName}${value.toFixed(3)}
        ${attributeName}${transform(value)}
        '; - info.html(html); - - this.selectedPoint = point; - } else { - // this.pickSphere.visible = false; - // this.selectedPoint = null; - - this.viewer.scene.scene.add(this.viewerPickSphere); - - let index = this.viewer.scene.scene.children.indexOf(this.viewerPickSphere); - if(index >= 0){ - this.viewer.scene.scene.children.splice(index, 1); - } - this.viewer.removeEventListener("update", viewerPickSphereSizeHandler); - - - } - this.render(); - } - - this.mouse.copy(newMouse); - }); - - let onWheel = e => { - this.autoFit = false; - - let delta = 0; - if (e.wheelDelta !== undefined) { // WebKit / Opera / Explorer 9 - delta = e.wheelDelta; - } else if (e.detail !== undefined) { // Firefox - delta = -e.detail; - } - - let ndelta = Math.sign(delta); - - let cPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)]; - - if (ndelta > 0) { - // + 10% - this.scale.multiplyScalar(1.1); - } else { - // - 10% - this.scale.multiplyScalar(100 / 110); - } - - this.updateScales(); - let ncPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)]; - - this.camera.position.x -= ncPos[0] - cPos[0]; - this.camera.position.z -= ncPos[1] - cPos[1]; - - this.render(); - this.updateScales(); - }; - $(this.renderArea)[0].addEventListener('mousewheel', onWheel, false); - $(this.renderArea)[0].addEventListener('DOMMouseScroll', onWheel, false); // Firefox - - $('#closeProfileContainer').click(() => { - this.hide(); - }); - - let getProfilePoints = () => { - let points = new Points(); - - for(let [pointcloud, entry] of this.pointclouds){ - for(let pointSet of entry.points){ - - let originPos = pointSet.data.position; - let trueElevationPosition = new Float32Array(originPos); - for(let i = 0; i < pointSet.numPoints; i++){ - trueElevationPosition[3 * i + 2] += pointcloud.position.z; - } - - pointSet.data.position = trueElevationPosition; - points.add(pointSet); - pointSet.data.position = originPos; - } - } - - return points; - }; - - $('#potree_download_csv_icon').click(() => { - - let points = getProfilePoints(); - - let string = CSVExporter.toString(points); - - let blob = new Blob([string], {type: "text/string"}); - $('#potree_download_profile_ortho_link').attr('href', URL.createObjectURL(blob)); - }); - - $('#potree_download_las_icon').click(() => { - - let points = getProfilePoints(); - - let buffer = LASExporter.toLAS(points); - - let blob = new Blob([buffer], {type: "application/octet-binary"}); - $('#potree_download_profile_link').attr('href', URL.createObjectURL(blob)); - }); - } - - selectPoint (mileage, elevation, radius) { - let closest = { - distance: Infinity, - pointcloud: null, - points: null, - index: null - }; - - let pointBox = new THREE.Box2( - new THREE.Vector2(mileage - radius, elevation - radius), - new THREE.Vector2(mileage + radius, elevation + radius)); - - let numTested = 0; - let numSkipped = 0; - let numTestedPoints = 0; - let numSkippedPoints = 0; - - for (let [pointcloud, entry] of this.pointclouds) { - for(let points of entry.points){ - - let collisionBox = new THREE.Box2( - new THREE.Vector2(points.projectedBox.min.x, points.projectedBox.min.z), - new THREE.Vector2(points.projectedBox.max.x, points.projectedBox.max.z) - ); - - let intersects = collisionBox.intersectsBox(pointBox); - - if(!intersects){ - numSkipped++; - numSkippedPoints += points.numPoints; - continue; - } - - numTested++; - numTestedPoints += points.numPoints; - - for (let i = 0; i < points.numPoints; i++) { - - let m = points.data.mileage[i] - mileage; - let e = points.data.position[3 * i + 2] - elevation + pointcloud.position.z; - let r = Math.sqrt(m * m + e * e); - - const withinDistance = r < radius && r < closest.distance; - let unfilteredClass = true; - - if(points.data.classification){ - const classification = pointcloud.material.classification; - - const pointClassID = points.data.classification[i]; - const pointClassValue = classification[pointClassID]; - - if(pointClassValue && (!pointClassValue.visible || pointClassValue.color.w === 0)){ - unfilteredClass = false; - } - } - - if (withinDistance && unfilteredClass) { - closest = { - distance: r, - pointcloud: pointcloud, - points: points, - index: i - }; - } - } - } - } - - - //console.log(`nodes: ${numTested}, ${numSkipped} || points: ${numTestedPoints}, ${numSkippedPoints}`); - - if (closest.distance < Infinity) { - let points = closest.points; - - let point = {}; - - let attributes = Object.keys(points.data); - for (let attribute of attributes) { - let attributeData = points.data[attribute]; - let itemSize = attributeData.length / points.numPoints; - let value = attributeData.subarray(itemSize * closest.index, itemSize * closest.index + itemSize); - - if (value.length === 1) { - point[attribute] = value[0]; - } else { - point[attribute] = value; - } - } - - closest.point = point; - - return closest; - } else { - return null; - } - } - - initTHREE () { - this.renderer = new THREE.WebGLRenderer({alpha: true, premultipliedAlpha: false}); - this.renderer.setClearColor(0x000000, 0); - this.renderer.setSize(10, 10); - this.renderer.autoClear = false; - this.renderArea.append($(this.renderer.domElement)); - this.renderer.domElement.tabIndex = '2222'; - $(this.renderer.domElement).css('width', '100%'); - $(this.renderer.domElement).css('height', '100%'); - - - { - let gl = this.renderer.getContext(); - - let extVAO = gl.getExtension('OES_vertex_array_object'); - - if(!extVAO){ - throw new Error("OES_vertex_array_object extension not supported"); - } - - gl.createVertexArray = extVAO.createVertexArrayOES.bind(extVAO); - gl.bindVertexArray = extVAO.bindVertexArrayOES.bind(extVAO); - } - - this.camera = new THREE.OrthographicCamera(-1000, 1000, 1000, -1000, -1000, 1000); - this.camera.up.set(0, 0, 1); - this.camera.rotation.order = "ZXY"; - this.camera.rotation.x = Math.PI / 2.0; - - - this.scene = new THREE.Scene(); - this.profileScene = new THREE.Scene(); - - let sg = new THREE.SphereGeometry(1, 16, 16); - let sm = new THREE.MeshNormalMaterial(); - this.pickSphere = new THREE.Mesh(sg, sm); - this.scene.add(this.pickSphere); - - { - const sg = new THREE.SphereGeometry(2); - const sm = new THREE.MeshNormalMaterial(); - const s = new THREE.Mesh(sg, sm); - - s.position.set(589530.450, 231398.860, 769.735); - - this.scene.add(s); - } - - this.viewerPickSphere = new THREE.Mesh(sg, sm); - } - - initSVG () { - let width = this.renderArea[0].clientWidth; - let height = this.renderArea[0].clientHeight; - let marginLeft = this.renderArea[0].offsetLeft; - - this.svg.selectAll('*').remove(); - - this.scaleX = d3.scale.linear() - .domain([this.camera.left + this.camera.position.x, this.camera.right + this.camera.position.x]) - .range([0, width]); - this.scaleY = d3.scale.linear() - .domain([this.camera.bottom + this.camera.position.z, this.camera.top + this.camera.position.z]) - .range([height, 0]); - - this.xAxis = d3.svg.axis() - .scale(this.scaleX) - .orient('bottom') - .innerTickSize(-height) - .outerTickSize(1) - .tickPadding(10) - .ticks(width / 50); - - this.yAxis = d3.svg.axis() - .scale(this.scaleY) - .orient('left') - .innerTickSize(-width) - .outerTickSize(1) - .tickPadding(10) - .ticks(height / 20); - - this.elXAxis = this.svg.append('g') - .attr('class', 'x axis') - .attr('transform', `translate(${marginLeft}, ${height})`) - .call(this.xAxis); - - this.elYAxis = this.svg.append('g') - .attr('class', 'y axis') - .attr('transform', `translate(${marginLeft}, 0)`) - .call(this.yAxis); - } - - addPoints (pointcloud, points) { - - if(points.numPoints === 0){ - return; - } - - let entry = this.pointclouds.get(pointcloud); - if(!entry){ - entry = new ProfileFakeOctree(pointcloud); - this.pointclouds.set(pointcloud, entry); - this.profileScene.add(entry); - - let materialChanged = () => { - this.render(); - }; - - materialChanged(); - - pointcloud.material.addEventListener('material_property_changed', materialChanged); - this.addEventListener("on_reset_once", () => { - pointcloud.material.removeEventListener('material_property_changed', materialChanged); - }); - } - - entry.addPoints(points); - this.projectedBox.union(entry.projectedBox); - - if (this.autoFit && this.autoFitEnabled) { - let width = this.renderArea[0].clientWidth; - let height = this.renderArea[0].clientHeight; - - let size = this.projectedBox.getSize(new THREE.Vector3()); - - let sx = width / size.x; - let sy = height / size.z; - let scale = Math.min(sx, sy); - - let center = this.projectedBox.getCenter(new THREE.Vector3()); - this.scale.set(scale, scale, 1); - this.camera.position.copy(center); - - //console.log("camera: ", this.camera.position.toArray().join(", ")); - } - - //console.log(entry); - - this.render(); - - let numPoints = 0; - for (let [key, value] of this.pointclouds.entries()) { - numPoints += value.points.reduce( (a, i) => a + i.numPoints, 0); - } - $(`#profile_num_points`).html(Utils.addCommas(numPoints)); - - } - - reset () { - this.lastReset = new Date().getTime(); - - this.dispatchEvent({type: "on_reset_once"}); - this.removeEventListeners("on_reset_once"); - - this.autoFit = true; - this.projectedBox = new THREE.Box3(); - - for(let [key, entry] of this.pointclouds){ - entry.dispose(); - } - - this.pointclouds.clear(); - this.mouseIsDown = false; - this.mouse.set(0, 0); - - if(this.autoFitEnabled){ - this.scale.set(1, 1, 1); - } - this.pickSphere.visible = false; - - this.elRoot.find('#profileSelectionProperties').hide(); - - this.render(); - } - - show () { - this.elRoot.fadeIn(); - this.enabled = true; - } - - hide () { - this.elRoot.fadeOut(); - this.enabled = false; - } - - updateScales () { - - let width = this.renderArea[0].clientWidth; - let height = this.renderArea[0].clientHeight; - - let left = (-width / 2) / this.scale.x; - let right = (+width / 2) / this.scale.x; - let top = (+height / 2) / this.scale.y; - let bottom = (-height / 2) / this.scale.y; - - this.camera.left = left; - this.camera.right = right; - this.camera.top = top; - this.camera.bottom = bottom; - this.camera.updateProjectionMatrix(); - - this.scaleX.domain([this.camera.left + this.camera.position.x, this.camera.right + this.camera.position.x]) - .range([0, width]); - this.scaleY.domain([this.camera.bottom + this.camera.position.z, this.camera.top + this.camera.position.z]) - .range([height, 0]); - - let marginLeft = this.renderArea[0].offsetLeft; - - this.xAxis.scale(this.scaleX) - .orient('bottom') - .innerTickSize(-height) - .outerTickSize(1) - .tickPadding(10) - .ticks(width / 50); - this.yAxis.scale(this.scaleY) - .orient('left') - .innerTickSize(-width) - .outerTickSize(1) - .tickPadding(10) - .ticks(height / 20); - - - this.elXAxis - .attr('transform', `translate(${marginLeft}, ${height})`) - .call(this.xAxis); - this.elYAxis - .attr('transform', `translate(${marginLeft}, 0)`) - .call(this.yAxis); - } - - requestScaleUpdate(){ - - let threshold = 100; - let allowUpdate = ((this.lastReset === undefined) || (this.lastScaleUpdate === undefined)) - || ((new Date().getTime() - this.lastReset) > threshold && (new Date().getTime() - this.lastScaleUpdate) > threshold); - - if(allowUpdate){ - - this.updateScales(); - - this.lastScaleUpdate = new Date().getTime(); - - - - this.scaleUpdatePending = false; - }else if(!this.scaleUpdatePending) { - setTimeout(this.requestScaleUpdate.bind(this), 100); - this.scaleUpdatePending = true; - } - - } - - render () { - let width = this.renderArea[0].clientWidth; - let height = this.renderArea[0].clientHeight; - - let {renderer, pRenderer, camera, profileScene, scene} = this; - let {scaleX, pickSphere} = this; - - renderer.setSize(width, height); - - renderer.setClearColor(0x000000, 0); - renderer.clear(true, true, false); - - for(let pointcloud of this.pointclouds.keys()){ - let source = pointcloud.material; - let target = this.pointclouds.get(pointcloud).material; - - copyMaterial(source, target); - target.size = 2; - } - - pRenderer.render(profileScene, camera, null); - - let radius = Math.abs(scaleX.invert(0) - scaleX.invert(5)); - - if (radius === 0) { - pickSphere.visible = false; - } else { - pickSphere.scale.set(radius, radius, radius); - pickSphere.visible = true; - } - - renderer.render(scene, camera); - - this.requestScaleUpdate(); - } - }; - - class ProfileWindowController { - constructor (viewer) { - this.viewer = viewer; - this.profileWindow = viewer.profileWindow; - this.profile = null; - this.numPoints = 0; - this.threshold = 60 * 1000; - this.rotateAmount = 10; - - this.scheduledRecomputeTime = null; - - this.enabled = true; - - this.requests = []; - - this._recompute = () => { this.recompute(); }; - - this.viewer.addEventListener("scene_changed", e => { - e.oldScene.removeEventListener("pointcloud_added", this._recompute); - e.scene.addEventListener("pointcloud_added", this._recompute); - }); - this.viewer.scene.addEventListener("pointcloud_added", this._recompute); - - $("#potree_profile_rotate_amount").val(parseInt(this.rotateAmount)); - $("#potree_profile_rotate_amount").on("input", (e) => { - const str = $("#potree_profile_rotate_amount").val(); - - if(!isNaN(str)){ - const value = parseFloat(str); - this.rotateAmount = value; - $("#potree_profile_rotate_amount").css("background-color", ""); - }else { - $("#potree_profile_rotate_amount").css("background-color", "#ff9999"); - } - - }); - - const rotate = (radians) => { - const profile = this.profile; - const points = profile.points; - const start = points[0]; - const end = points[points.length - 1]; - const center = start.clone().add(end).multiplyScalar(0.5); - - const mMoveOrigin = new THREE.Matrix4().makeTranslation(-center.x, -center.y, -center.z); - const mRotate = new THREE.Matrix4().makeRotationZ(radians); - const mMoveBack = new THREE.Matrix4().makeTranslation(center.x, center.y, center.z); - //const transform = mMoveOrigin.multiply(mRotate).multiply(mMoveBack); - const transform = mMoveBack.multiply(mRotate).multiply(mMoveOrigin); - - const rotatedPoints = points.map( point => point.clone().applyMatrix4(transform) ); - - this.profileWindow.autoFitEnabled = false; - - for(let i = 0; i < points.length; i++){ - profile.setPosition(i, rotatedPoints[i]); - } - }; - - $("#potree_profile_rotate_cw").click( () => { - const radians = THREE.Math.degToRad(this.rotateAmount); - rotate(-radians); - }); - - $("#potree_profile_rotate_ccw").click( () => { - const radians = THREE.Math.degToRad(this.rotateAmount); - rotate(radians); - }); - - $("#potree_profile_move_forward").click( () => { - const profile = this.profile; - const points = profile.points; - const start = points[0]; - const end = points[points.length - 1]; - - const dir = end.clone().sub(start).normalize(); - const up = new THREE.Vector3(0, 0, 1); - const forward = up.cross(dir); - const move = forward.clone().multiplyScalar(profile.width / 2); - - this.profileWindow.autoFitEnabled = false; - - for(let i = 0; i < points.length; i++){ - profile.setPosition(i, points[i].clone().add(move)); - } - }); - - $("#potree_profile_move_backward").click( () => { - const profile = this.profile; - const points = profile.points; - const start = points[0]; - const end = points[points.length - 1]; - - const dir = end.clone().sub(start).normalize(); - const up = new THREE.Vector3(0, 0, 1); - const forward = up.cross(dir); - const move = forward.clone().multiplyScalar(-profile.width / 2); - - this.profileWindow.autoFitEnabled = false; - - for(let i = 0; i < points.length; i++){ - profile.setPosition(i, points[i].clone().add(move)); - } - }); - } - - setProfile (profile) { - if (this.profile !== null && this.profile !== profile) { - this.profile.removeEventListener('marker_moved', this._recompute); - this.profile.removeEventListener('marker_added', this._recompute); - this.profile.removeEventListener('marker_removed', this._recompute); - this.profile.removeEventListener('width_changed', this._recompute); - } - - this.profile = profile; - - { - this.profile.addEventListener('marker_moved', this._recompute); - this.profile.addEventListener('marker_added', this._recompute); - this.profile.addEventListener('marker_removed', this._recompute); - this.profile.addEventListener('width_changed', this._recompute); - } - - this.recompute(); - } - - reset () { - this.profileWindow.reset(); - - this.numPoints = 0; - - if (this.profile) { - for (let request of this.requests) { - request.cancel(); - } - } - } - - progressHandler (pointcloud, progress) { - for (let segment of progress.segments) { - this.profileWindow.addPoints(pointcloud, segment.points); - this.numPoints += segment.points.numPoints; - } - } - - cancel () { - for (let request of this.requests) { - request.cancel(); - // request.finishLevelThenCancel(); - } - - this.requests = []; - }; - - finishLevelThenCancel(){ - for (let request of this.requests) { - request.finishLevelThenCancel(); - } - - this.requests = []; - } - - recompute () { - if (!this.profile) { - return; - } - - if (this.scheduledRecomputeTime !== null && this.scheduledRecomputeTime > new Date().getTime()) { - return; - } else { - this.scheduledRecomputeTime = new Date().getTime() + 100; - } - this.scheduledRecomputeTime = null; - - this.reset(); - - for (let pointcloud of this.viewer.scene.pointclouds.filter(p => p.visible)) { - let request = pointcloud.getPointsInProfile(this.profile, null, { - 'onProgress': (event) => { - if (!this.enabled) { - return; - } - - this.progressHandler(pointcloud, event.points); - - if (this.numPoints > this.threshold) { - this.finishLevelThenCancel(); - } - }, - 'onFinish': (event) => { - if (!this.enabled) { - - } - }, - 'onCancel': () => { - if (!this.enabled) { - - } - } - }); - - this.requests.push(request); - } - } - }; - - /** - * - * @author sigeom sa / http://sigeom.ch - * @author Ioda-Net Sàrl / https://www.ioda-net.ch/ - * @author Markus Schütz / http://potree.org - * - */ - - class GeoJSONExporter{ - - static measurementToFeatures (measurement) { - let coords = measurement.points.map(e => e.position.toArray()); - - let features = []; - - if (coords.length === 1) { - let feature = { - type: 'Feature', - geometry: { - type: 'Point', - coordinates: coords[0] - }, - properties: { - name: measurement.name - } - }; - features.push(feature); - } else if (coords.length > 1 && !measurement.closed) { - let object = { - 'type': 'Feature', - 'geometry': { - 'type': 'LineString', - 'coordinates': coords - }, - 'properties': { - name: measurement.name - } - }; - - features.push(object); - } else if (coords.length > 1 && measurement.closed) { - let object = { - 'type': 'Feature', - 'geometry': { - 'type': 'Polygon', - 'coordinates': [[...coords, coords[0]]] - }, - 'properties': { - name: measurement.name - } - }; - features.push(object); - } - - if (measurement.showDistances) { - measurement.edgeLabels.forEach((label) => { - let labelPoint = { - type: 'Feature', - geometry: { - type: 'Point', - coordinates: label.position.toArray() - }, - properties: { - distance: label.text - } - }; - features.push(labelPoint); - }); - } - - if (measurement.showArea) { - let point = measurement.areaLabel.position; - let labelArea = { - type: 'Feature', - geometry: { - type: 'Point', - coordinates: point.toArray() - }, - properties: { - area: measurement.areaLabel.text - } - }; - features.push(labelArea); - } - - return features; - } - - static toString (measurements) { - if (!(measurements instanceof Array)) { - measurements = [measurements]; - } - - measurements = measurements.filter(m => m instanceof Measure); - - let features = []; - for (let measure of measurements) { - let f = GeoJSONExporter.measurementToFeatures(measure); - - features = features.concat(f); - } - - let geojson = { - 'type': 'FeatureCollection', - 'features': features - }; - - return JSON.stringify(geojson, null, '\t'); - } - - } - - /** - * - * @author sigeom sa / http://sigeom.ch - * @author Ioda-Net Sàrl / https://www.ioda-net.ch/ - * @author Markus Schuetz / http://potree.org - * - */ - - class DXFExporter { - - static measurementPointSection (measurement) { - let position = measurement.points[0].position; - - if (!position) { - return ''; - } - - let dxfSection = `0 -CIRCLE -8 -layer_point -10 -${position.x} -20 -${position.y} -30 -${position.z} -40 -1.0 -`; - - return dxfSection; - } - - static measurementPolylineSection (measurement) { - // bit code for polygons/polylines: - // https://www.autodesk.com/techpubs/autocad/acad2000/dxf/polyline_dxf_06.htm - let geomCode = 8; - if (measurement.closed) { - geomCode += 1; - } - - let dxfSection = `0 -POLYLINE -8 -layer_polyline -62 -1 -66 -1 -10 -0.0 -20 -0.0 -30 -0.0 -70 -${geomCode} -`; - - let xMax = 0.0; - let yMax = 0.0; - let zMax = 0.0; - for (let point of measurement.points) { - point = point.position; - xMax = Math.max(xMax, point.x); - yMax = Math.max(yMax, point.y); - zMax = Math.max(zMax, point.z); - - dxfSection += `0 -VERTEX -8 -0 -10 -${point.x} -20 -${point.y} -30 -${point.z} -70 -32 -`; - } - dxfSection += `0 -SEQEND -`; - - return dxfSection; - } - - static measurementSection (measurement) { - // if(measurement.points.length <= 1){ - // return ""; - // } - - if (measurement.points.length === 0) { - return ''; - } else if (measurement.points.length === 1) { - return DXFExporter.measurementPointSection(measurement); - } else if (measurement.points.length >= 2) { - return DXFExporter.measurementPolylineSection(measurement); - } - } - - static toString(measurements){ - if (!(measurements instanceof Array)) { - measurements = [measurements]; - } - measurements = measurements.filter(m => m instanceof Measure); - - let points = measurements.filter(m => (m instanceof Measure)) - .map(m => m.points) - .reduce((a, v) => a.concat(v)) - .map(p => p.position); - - let min = new THREE.Vector3(Infinity, Infinity, Infinity); - let max = new THREE.Vector3(-Infinity, -Infinity, -Infinity); - for (let point of points) { - min.min(point); - max.max(point); - } - - let dxfHeader = `999 -DXF created from potree -0 -SECTION -2 -HEADER -9 -$ACADVER -1 -AC1006 -9 -$INSBASE -10 -0.0 -20 -0.0 -30 -0.0 -9 -$EXTMIN -10 -${min.x} -20 -${min.y} -30 -${min.z} -9 -$EXTMAX -10 -${max.x} -20 -${max.y} -30 -${max.z} -0 -ENDSEC -`; - - let dxfBody = `0 -SECTION -2 -ENTITIES -`; - - for (let measurement of measurements) { - dxfBody += DXFExporter.measurementSection(measurement); - } - - dxfBody += `0 -ENDSEC -`; - - let dxf = dxfHeader + dxfBody + '0\nEOF'; - - return dxf; - } - - } - - class MeasurePanel{ - - constructor(viewer, measurement, propertiesPanel){ - this.viewer = viewer; - this.measurement = measurement; - this.propertiesPanel = propertiesPanel; - - this._update = () => { this.update(); }; - } - - createCoordinatesTable(points){ - let table = $(` - - - - - - - -
        xyz
        - `); - - let copyIconPath = Potree.resourcePath + '/icons/copy.svg'; - - for (let point of points) { - let x = Utils.addCommas(point.x.toFixed(3)); - let y = Utils.addCommas(point.y.toFixed(3)); - let z = Utils.addCommas(point.z.toFixed(3)); - - let row = $(` - - ${x} - ${y} - ${z} - - - - - `); - - this.elCopy = row.find("img[name=copy]"); - this.elCopy.click( () => { - let msg = point.toArray().map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - table.append(row); - } - - return table; - }; - - createAttributesTable(){ - let elTable = $('
        '); - - let point = this.measurement.points[0]; - - for(let attributeName of Object.keys(point)){ - if(attributeName === "position"){ - - }else if(attributeName === "rgba"){ - let color = point.rgba; - let text = color.join(', '); - - elTable.append($(` - - rgb - ${text} - - `)); - }else { - let value = point[attributeName]; - let text = value.join(', '); - - elTable.append($(` - - ${attributeName} - ${text} - - `)); - } - } - - return elTable; - } - - update(){ - - } - }; - - class DistancePanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        -
        - - -
        - - - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.elMakeProfile = this.elContent.find("input[name=make_profile]"); - this.elMakeProfile.click( () => { - //measurement.points; - const profile = new Profile(); - - profile.name = measurement.name; - profile.width = measurement.getTotalDistance() / 50; - - for(const point of measurement.points){ - profile.addMarker(point.position.clone()); - } - - this.viewer.scene.addProfile(profile); - - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - let positions = this.measurement.points.map(p => p.position); - let distances = []; - for (let i = 0; i < positions.length - 1; i++) { - let d = positions[i].distanceTo(positions[i + 1]); - distances.push(d.toFixed(3)); - } - - let totalDistance = this.measurement.getTotalDistance().toFixed(3); - let elDistanceTable = this.elContent.find(`#distances_table`); - elDistanceTable.empty(); - - for (let i = 0; i < distances.length; i++) { - let label = (i === 0) ? 'Distances: ' : ''; - let distance = distances[i]; - let elDistance = $(` - - ${label} - ${distance} - `); - elDistanceTable.append(elDistance); - } - - let elTotal = $(` - - Total: ${totalDistance} - `); - elDistanceTable.append(elTotal); - } - }; - - class PointPanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        - - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - let elAttributesContainer = this.elContent.find('.attributes_table_container'); - elAttributesContainer.empty(); - elAttributesContainer.append(this.createAttributesTable()); - } - }; - - class AreaPanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        - Area: - - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - let elArea = this.elContent.find(`#measurement_area`); - elArea.html(this.measurement.getArea().toFixed(3)); - } - }; - - class AnglePanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        - - - - - - - - - - - -
        \u03b1\u03b2\u03b3
        - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - let angles = []; - for(let i = 0; i < this.measurement.points.length; i++){ - angles.push(this.measurement.getAngle(i) * (180.0 / Math.PI)); - } - angles = angles.map(a => a.toFixed(1) + '\u00B0'); - - let elAlpha = this.elContent.find(`#angle_cell_alpha`); - let elBetta = this.elContent.find(`#angle_cell_betta`); - let elGamma = this.elContent.find(`#angle_cell_gamma`); - - elAlpha.html(angles[0]); - elBetta.html(angles[1]); - elGamma.html(angles[2]); - } - }; - - class CirclePanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        -
        - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - const elInfos = this.elContent.find(`#infos_table`); - - if(this.measurement.points.length !== 3){ - elInfos.empty(); - - return; - } - - const A = this.measurement.points[0].position; - const B = this.measurement.points[1].position; - const C = this.measurement.points[2].position; - - const center = Potree.Utils.computeCircleCenter(A, B, C); - const radius = center.distanceTo(A); - const circumference = 2 * Math.PI * radius; - - const format = (number) => { - return Potree.Utils.addCommas(number.toFixed(3)); - }; - - - const txtCenter = `${format(center.x)} ${format(center.y)} ${format(center.z)}`; - const txtRadius = format(radius); - const txtCircumference = format(circumference); - - const thStyle = `style="text-align: left"`; - const tdStyle = `style="width: 100%; padding: 5px;"`; - - elInfos.html(` - - Center: - - - - - ${txtCenter} - - - - Radius: - ${txtRadius} - - - Circumference: - ${txtCircumference} - - `); - } - }; - - class HeightPanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        - Height:
        - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeMeasurement(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position))); - - { - let points = this.measurement.points; - - let sorted = points.slice().sort((a, b) => a.position.z - b.position.z); - let lowPoint = sorted[0].position.clone(); - let highPoint = sorted[sorted.length - 1].position.clone(); - let min = lowPoint.z; - let max = highPoint.z; - let height = max - min; - height = height.toFixed(3); - - this.elHeightLabel = this.elContent.find(`#height_label`); - this.elHeightLabel.html(`Height: ${height}`); - } - } - }; - - class VolumePanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let copyIconPath = Potree.resourcePath + '/icons/copy.svg'; - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - - let lblLengthText = new Map([ - [BoxVolume, "length"], - [SphereVolume, "rx"], - ]).get(measurement.constructor); - - let lblWidthText = new Map([ - [BoxVolume, "width"], - [SphereVolume, "ry"], - ]).get(measurement.constructor); - - let lblHeightText = new Map([ - [BoxVolume, "height"], - [SphereVolume, "rz"], - ]).get(measurement.constructor); - - this.elContent = $(` -
        - - - - - - - - - - - - - - - -
        \u03b1\u03b2\u03b3
        - -
        - - - - - - - - - - - - - - -
        ${lblLengthText}${lblWidthText}${lblHeightText}
        - -
        - -
        - Volume: - - - - -
      • - -
      • - -
      • - -
        -
      • - - - -
      • - - -
      • -
        - - - -
        -
        - `); - - { // download - this.elDownloadButton = this.elContent.find("input[name=download_volume]"); - - if(this.propertiesPanel.viewer.server){ - this.elDownloadButton.click(() => this.download()); - } else { - this.elDownloadButton.hide(); - } - } - - this.elCopyRotation = this.elContent.find("img[name=copyRotation]"); - this.elCopyRotation.click( () => { - let rotation = this.measurement.rotation.toArray().slice(0, 3); - let msg = rotation.map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - this.elCopyScale = this.elContent.find("img[name=copyScale]"); - this.elCopyScale.click( () => { - let scale = this.measurement.scale.toArray(); - let msg = scale.map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeVolume(measurement); - }); - - this.elContent.find("#volume_reset_orientation").click(() => { - measurement.rotation.set(0, 0, 0); - }); - - this.elContent.find("#volume_make_uniform").click(() => { - let mean = (measurement.scale.x + measurement.scale.y + measurement.scale.z) / 3; - measurement.scale.set(mean, mean, mean); - }); - - this.elCheckClip = this.elContent.find('#volume_clip'); - this.elCheckClip.click(event => { - this.measurement.clip = event.target.checked; - }); - - this.elCheckShow = this.elContent.find('#volume_show'); - this.elCheckShow.click(event => { - this.measurement.visible = event.target.checked; - }); - - this.propertiesPanel.addVolatileListener(measurement, "position_changed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "orientation_changed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "scale_changed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "clip_changed", this._update); - - this.update(); - } - - async download(){ - - let clipBox = this.measurement; - - let regions = []; - //for(let clipBox of boxes){ - { - let toClip = clipBox.matrixWorld; - - let px = new THREE.Vector3(+0.5, 0, 0).applyMatrix4(toClip); - let nx = new THREE.Vector3(-0.5, 0, 0).applyMatrix4(toClip); - let py = new THREE.Vector3(0, +0.5, 0).applyMatrix4(toClip); - let ny = new THREE.Vector3(0, -0.5, 0).applyMatrix4(toClip); - let pz = new THREE.Vector3(0, 0, +0.5).applyMatrix4(toClip); - let nz = new THREE.Vector3(0, 0, -0.5).applyMatrix4(toClip); - - let pxN = new THREE.Vector3().subVectors(nx, px).normalize(); - let nxN = pxN.clone().multiplyScalar(-1); - let pyN = new THREE.Vector3().subVectors(ny, py).normalize(); - let nyN = pyN.clone().multiplyScalar(-1); - let pzN = new THREE.Vector3().subVectors(nz, pz).normalize(); - let nzN = pzN.clone().multiplyScalar(-1); - - let planes = [ - new THREE.Plane().setFromNormalAndCoplanarPoint(pxN, px), - new THREE.Plane().setFromNormalAndCoplanarPoint(nxN, nx), - new THREE.Plane().setFromNormalAndCoplanarPoint(pyN, py), - new THREE.Plane().setFromNormalAndCoplanarPoint(nyN, ny), - new THREE.Plane().setFromNormalAndCoplanarPoint(pzN, pz), - new THREE.Plane().setFromNormalAndCoplanarPoint(nzN, nz), - ]; - - let planeQueryParts = []; - for(let plane of planes){ - let part = [plane.normal.toArray(), plane.constant].join(","); - part = `[${part}]`; - planeQueryParts.push(part); - } - let region = "[" + planeQueryParts.join(",") + "]"; - regions.push(region); - } - - let regionsArg = regions.join(","); - - let pointcloudArgs = []; - for(let pointcloud of this.viewer.scene.pointclouds){ - if(!pointcloud.visible){ - continue; - } - - let offset = pointcloud.pcoGeometry.offset.clone(); - let negateOffset = new THREE.Matrix4().makeTranslation(...offset.multiplyScalar(-1).toArray()); - let matrixWorld = pointcloud.matrixWorld; - - let transform = new THREE.Matrix4().multiplyMatrices(matrixWorld, negateOffset); - - let path = `${window.location.pathname}/../${pointcloud.pcoGeometry.url}`; - - let arg = { - path: path, - transform: transform.elements, - }; - let argString = JSON.stringify(arg); - - pointcloudArgs.push(argString); - } - let pointcloudsArg = pointcloudArgs.join(","); - - let elMessage = this.elContent.find("div[name=download_message]"); - - let error = (message) => { - elMessage.html(`
        ERROR: ${message}
        `); - }; - - let info = (message) => { - elMessage.html(`${message}`); - }; - - let handle = null; - { // START FILTER - let url = `${viewer.server}/create_regions_filter?pointclouds=[${pointcloudsArg}]®ions=[${regionsArg}]`; - - //console.log(url); - - info("estimating results ..."); - - let response = await fetch(url); - let jsResponse = await response.json(); - //console.log(jsResponse); - - if(!jsResponse.handle){ - error(jsResponse.message); - return; - }else { - handle = jsResponse.handle; - } - } - - { // WAIT, CHECK PROGRESS, HANDLE FINISH - let url = `${viewer.server}/check_regions_filter?handle=${handle}`; - - let sleep = (function(duration){ - return new Promise( (res, rej) => { - setTimeout(() => { - res(); - }, duration); - }); - }); - - let handleFiltering = (jsResponse) => { - let {progress, estimate} = jsResponse; - - let progressFract = progress["processed points"] / estimate.points; - let progressPercents = parseInt(progressFract * 100); - - info(`progress: ${progressPercents}%`); - }; - - let handleFinish = (jsResponse) => { - let message = "downloads ready:
        "; - message += "
        "; - - info(message); - }; - - let handleUnexpected = (jsResponse) => { - let message = `Unexpected Response.
        status: ${jsResponse.status}
        message: ${jsResponse.message}`; - info(message); - }; - - let handleError = (jsResponse) => { - let message = `ERROR: ${jsResponse.message}`; - error(message); - - throw new Error(message); - }; - - let start = Date.now(); - - while(true){ - let response = await fetch(url); - let jsResponse = await response.json(); - - if(jsResponse.status === "ERROR"){ - handleError(jsResponse); - }else if(jsResponse.status === "FILTERING"){ - handleFiltering(jsResponse); - }else if(jsResponse.status === "FINISHED"){ - handleFinish(jsResponse); - - break; - }else { - handleUnexpected(jsResponse); - } - - let durationS = (Date.now() - start) / 1000; - let sleepAmountMS = durationS < 10 ? 100 : 1000; - - await sleep(sleepAmountMS); - } - } - - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable([this.measurement.position])); - - { - let angles = this.measurement.rotation.toVector3(); - angles = angles.toArray(); - //angles = [angles.z, angles.x, angles.y]; - angles = angles.map(v => 180 * v / Math.PI); - angles = angles.map(a => a.toFixed(1) + '\u00B0'); - - let elAlpha = this.elContent.find(`#angle_cell_alpha`); - let elBetta = this.elContent.find(`#angle_cell_betta`); - let elGamma = this.elContent.find(`#angle_cell_gamma`); - - elAlpha.html(angles[0]); - elBetta.html(angles[1]); - elGamma.html(angles[2]); - } - - { - let dimensions = this.measurement.scale.toArray(); - dimensions = dimensions.map(v => Utils.addCommas(v.toFixed(2))); - - let elLength = this.elContent.find(`#cell_length`); - let elWidth = this.elContent.find(`#cell_width`); - let elHeight = this.elContent.find(`#cell_height`); - - elLength.html(dimensions[0]); - elWidth.html(dimensions[1]); - elHeight.html(dimensions[2]); - } - - { - let elVolume = this.elContent.find(`#measurement_volume`); - let volume = this.measurement.getVolume(); - elVolume.html(Utils.addCommas(volume.toFixed(2))); - } - - this.elCheckClip.prop("checked", this.measurement.clip); - this.elCheckShow.prop("checked", this.measurement.visible); - - } - }; - - class ProfilePanel extends MeasurePanel{ - constructor(viewer, measurement, propertiesPanel){ - super(viewer, measurement, propertiesPanel); - - let removeIconPath = Potree.resourcePath + '/icons/remove.svg'; - this.elContent = $(` -
        - -
        - - Width: - - -
        - -
      • - -
        -
      • - -
        - - - - -
        - - - -
        -
        - `); - - this.elRemove = this.elContent.find("img[name=remove]"); - this.elRemove.click( () => { - this.viewer.scene.removeProfile(measurement); - }); - - { // download - this.elDownloadButton = this.elContent.find(`input[name=download_profile]`); - - if(this.propertiesPanel.viewer.server){ - this.elDownloadButton.click(() => this.download()); - } else { - this.elDownloadButton.hide(); - } - } - - { // width spinner - let elWidthSlider = this.elContent.find(`#sldProfileWidth`); - - elWidthSlider.spinner({ - min: 0, max: 10 * 1000 * 1000, step: 0.01, - numberFormat: 'n', - start: () => {}, - spin: (event, ui) => { - let value = elWidthSlider.spinner('value'); - measurement.setWidth(value); - }, - change: (event, ui) => { - let value = elWidthSlider.spinner('value'); - measurement.setWidth(value); - }, - stop: (event, ui) => { - let value = elWidthSlider.spinner('value'); - measurement.setWidth(value); - }, - incremental: (count) => { - let value = elWidthSlider.spinner('value'); - let step = elWidthSlider.spinner('option', 'step'); - - let delta = value * 0.05; - let increments = Math.max(1, parseInt(delta / step)); - - return increments; - } - }); - elWidthSlider.spinner('value', measurement.getWidth()); - elWidthSlider.spinner('widget').css('width', '100%'); - - let widthListener = (event) => { - let value = elWidthSlider.spinner('value'); - if (value !== measurement.getWidth()) { - elWidthSlider.spinner('value', measurement.getWidth()); - } - }; - this.propertiesPanel.addVolatileListener(measurement, "width_changed", widthListener); - } - - let elShow2DProfile = this.elContent.find(`#show_2d_profile`); - elShow2DProfile.click(() => { - this.propertiesPanel.viewer.profileWindow.show(); - this.propertiesPanel.viewer.profileWindowController.setProfile(measurement); - }); - - this.propertiesPanel.addVolatileListener(measurement, "marker_added", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_removed", this._update); - this.propertiesPanel.addVolatileListener(measurement, "marker_moved", this._update); - - this.update(); - } - - update(){ - let elCoordiantesContainer = this.elContent.find('.coordinates_table_container'); - elCoordiantesContainer.empty(); - elCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points)); - } - - async download(){ - - let profile = this.measurement; - - let regions = []; - { - let segments = profile.getSegments(); - let width = profile.width; - - for(let segment of segments){ - let start = segment.start.clone().multiply(new THREE.Vector3(1, 1, 0)); - let end = segment.end.clone().multiply(new THREE.Vector3(1, 1, 0)); - let center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5); - - let startEndDir = new THREE.Vector3().subVectors(end, start).normalize(); - let endStartDir = new THREE.Vector3().subVectors(start, end).normalize(); - let upDir = new THREE.Vector3(0, 0, 1); - let rightDir = new THREE.Vector3().crossVectors(startEndDir, upDir); - let leftDir = new THREE.Vector3().crossVectors(endStartDir, upDir); - - console.log(leftDir); - - let right = rightDir.clone().multiplyScalar(width * 0.5).add(center); - let left = leftDir.clone().multiplyScalar(width * 0.5).add(center); - - let planes = [ - new THREE.Plane().setFromNormalAndCoplanarPoint(startEndDir, start), - new THREE.Plane().setFromNormalAndCoplanarPoint(endStartDir, end), - new THREE.Plane().setFromNormalAndCoplanarPoint(leftDir, right), - new THREE.Plane().setFromNormalAndCoplanarPoint(rightDir, left), - ]; - - let planeQueryParts = []; - for(let plane of planes){ - let part = [plane.normal.toArray(), plane.constant].join(","); - part = `[${part}]`; - planeQueryParts.push(part); - } - let region = "[" + planeQueryParts.join(",") + "]"; - regions.push(region); - } - } - - let regionsArg = regions.join(","); - - let pointcloudArgs = []; - for(let pointcloud of this.viewer.scene.pointclouds){ - if(!pointcloud.visible){ - continue; - } - - let offset = pointcloud.pcoGeometry.offset.clone(); - let negateOffset = new THREE.Matrix4().makeTranslation(...offset.multiplyScalar(-1).toArray()); - let matrixWorld = pointcloud.matrixWorld; - - let transform = new THREE.Matrix4().multiplyMatrices(matrixWorld, negateOffset); - - let path = `${window.location.pathname}/../${pointcloud.pcoGeometry.url}`; - - let arg = { - path: path, - transform: transform.elements, - }; - let argString = JSON.stringify(arg); - - pointcloudArgs.push(argString); - } - let pointcloudsArg = pointcloudArgs.join(","); - - let elMessage = this.elContent.find("div[name=download_message]"); - - let error = (message) => { - elMessage.html(`
        ERROR: ${message}
        `); - }; - - let info = (message) => { - elMessage.html(`${message}`); - }; - - let handle = null; - { // START FILTER - let url = `${viewer.server}/create_regions_filter?pointclouds=[${pointcloudsArg}]®ions=[${regionsArg}]`; - - //console.log(url); - - info("estimating results ..."); - - let response = await fetch(url); - let jsResponse = await response.json(); - //console.log(jsResponse); - - if(!jsResponse.handle){ - error(jsResponse.message); - return; - }else { - handle = jsResponse.handle; - } - } - - { // WAIT, CHECK PROGRESS, HANDLE FINISH - let url = `${viewer.server}/check_regions_filter?handle=${handle}`; - - let sleep = (function(duration){ - return new Promise( (res, rej) => { - setTimeout(() => { - res(); - }, duration); - }); - }); - - let handleFiltering = (jsResponse) => { - let {progress, estimate} = jsResponse; - - let progressFract = progress["processed points"] / estimate.points; - let progressPercents = parseInt(progressFract * 100); - - info(`progress: ${progressPercents}%`); - }; - - let handleFinish = (jsResponse) => { - let message = "downloads ready:
        "; - message += "
          "; - - for(let i = 0; i < jsResponse.pointclouds.length; i++){ - let url = `${viewer.server}/download_regions_filter_result?handle=${handle}&index=${i}`; - - message += `
        • result_${i}.las
        • \n`; - } - - let reportURL = `${viewer.server}/download_regions_filter_report?handle=${handle}`; - message += `
        • report.json
        • \n`; - message += "
        "; - - info(message); - }; - - let handleUnexpected = (jsResponse) => { - let message = `Unexpected Response.
        status: ${jsResponse.status}
        message: ${jsResponse.message}`; - info(message); - }; - - let handleError = (jsResponse) => { - let message = `ERROR: ${jsResponse.message}`; - error(message); - - throw new Error(message); - }; - - let start = Date.now(); - - while(true){ - let response = await fetch(url); - let jsResponse = await response.json(); - - if(jsResponse.status === "ERROR"){ - handleError(jsResponse); - }else if(jsResponse.status === "FILTERING"){ - handleFiltering(jsResponse); - }else if(jsResponse.status === "FINISHED"){ - handleFinish(jsResponse); - - break; - }else { - handleUnexpected(jsResponse); - } - - let durationS = (Date.now() - start) / 1000; - let sleepAmountMS = durationS < 10 ? 100 : 1000; - - await sleep(sleepAmountMS); - } - } - - } - }; - - class CameraPanel{ - constructor(viewer, propertiesPanel){ - this.viewer = viewer; - this.propertiesPanel = propertiesPanel; - - this._update = () => { this.update(); }; - - let copyIconPath = Potree.resourcePath + '/icons/copy.svg'; - this.elContent = $(` -
        - - - - - - - - - - - - - - - - - - - - - -
        position
        - -
        target
        - -
        -
        - `); - - this.elCopyPosition = this.elContent.find("img[name=copyPosition]"); - this.elCopyPosition.click( () => { - let pos = this.viewer.scene.getActiveCamera().position.toArray(); - let msg = pos.map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - this.elCopyTarget = this.elContent.find("img[name=copyTarget]"); - this.elCopyTarget.click( () => { - let pos = this.viewer.scene.view.getPivot().toArray(); - let msg = pos.map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - this.propertiesPanel.addVolatileListener(viewer, "camera_changed", this._update); - - this.update(); - } - - update(){ - //console.log("updating camera panel"); - - let camera = this.viewer.scene.getActiveCamera(); - let view = this.viewer.scene.view; - - let pos = camera.position.toArray().map(c => Utils.addCommas(c.toFixed(3))); - this.elContent.find("#camera_position_x").html(pos[0]); - this.elContent.find("#camera_position_y").html(pos[1]); - this.elContent.find("#camera_position_z").html(pos[2]); - - let target = view.getPivot().toArray().map(c => Utils.addCommas(c.toFixed(3))); - this.elContent.find("#camera_target_x").html(target[0]); - this.elContent.find("#camera_target_y").html(target[1]); - this.elContent.find("#camera_target_z").html(target[2]); - } - }; - - class AnnotationPanel{ - constructor(viewer, propertiesPanel, annotation){ - this.viewer = viewer; - this.propertiesPanel = propertiesPanel; - this.annotation = annotation; - - this._update = () => { this.update(); }; - - let copyIconPath = `${Potree.resourcePath}/icons/copy.svg`; - this.elContent = $(` -
        - - - - - - - - - - - - -
        position
        - -
        - -
        - -
        Title
        -
        - Annotation Title -
        - -
        Description
        -
        - A longer description of this annotation. - Can be multiple lines long. TODO: the user should be able - to modify title and description. -
        - -
        - -
        - `); - - this.elCopyPosition = this.elContent.find("img[name=copyPosition]"); - this.elCopyPosition.click( () => { - let pos = this.annotation.position.toArray(); - let msg = pos.map(c => c.toFixed(3)).join(", "); - Utils.clipboardCopy(msg); - - this.viewer.postMessage( - `Copied value to clipboard:
        '${msg}'`, - {duration: 3000}); - }); - - this.elTitle = this.elContent.find("#annotation_title").html(annotation.title); - this.elDescription = this.elContent.find("#annotation_description").html(annotation.description); - - this.elTitle[0].addEventListener("input", () => { - const title = this.elTitle.html(); - annotation.title = title; - - }, false); - - this.elDescription[0].addEventListener("input", () => { - const description = this.elDescription.html(); - annotation.description = description; - }, false); - - this.update(); - } - - update(){ - const {annotation, elContent, elTitle, elDescription} = this; - - let pos = annotation.position.toArray().map(c => Utils.addCommas(c.toFixed(3))); - elContent.find("#annotation_position_x").html(pos[0]); - elContent.find("#annotation_position_y").html(pos[1]); - elContent.find("#annotation_position_z").html(pos[2]); - - elTitle.html(annotation.title); - elDescription.html(annotation.description); - - - } - }; - - class CameraAnimationPanel{ - constructor(viewer, propertiesPanel, animation){ - this.viewer = viewer; - this.propertiesPanel = propertiesPanel; - this.animation = animation; - - this.elContent = $(` -
        - - - - - - Duration: - - - - Time:
        - - -
        -
        - `); - - const elPlay = this.elContent.find("input[name=play]"); - elPlay.click( () => { - animation.play(); - }); - - const elSlider = this.elContent.find('#sldTime'); - elSlider.slider({ - value: 0, - min: 0, - max: 1, - step: 0.001, - slide: (event, ui) => { - animation.set(ui.value); - } - }); - - let elDuration = this.elContent.find(`input[name=spnDuration]`); - elDuration.spinner({ - min: 0, max: 300, step: 0.01, - numberFormat: 'n', - start: () => {}, - spin: (event, ui) => { - let value = elDuration.spinner('value'); - animation.setDuration(value); - }, - change: (event, ui) => { - let value = elDuration.spinner('value'); - animation.setDuration(value); - }, - stop: (event, ui) => { - let value = elDuration.spinner('value'); - animation.setDuration(value); - }, - incremental: (count) => { - let value = elDuration.spinner('value'); - let step = elDuration.spinner('option', 'step'); - - let delta = value * 0.05; - let increments = Math.max(1, parseInt(delta / step)); - - return increments; - } - }); - elDuration.spinner('value', animation.getDuration()); - elDuration.spinner('widget').css('width', '100%'); - - const elKeyframes = this.elContent.find("#animation_keyframes"); - - const updateKeyframes = () => { - elKeyframes.empty(); - - //let index = 0; - - // - // - // - - const addNewKeyframeItem = (index) => { - let elNewKeyframe = $(` -
        - - - -
        - `); - - const elAdd = elNewKeyframe.find("input[name=add]"); - elAdd.click( () => { - animation.createControlPoint(index); - }); - - elKeyframes.append(elNewKeyframe); - }; - - const addKeyframeItem = (index) => { - let elKeyframe = $(` -
        - - - - - - - - keyframe - - - - -
        - `); - - const elAssign = elKeyframe.find("img[name=assign]"); - const elMove = elKeyframe.find("img[name=move]"); - const elDelete = elKeyframe.find("img[name=delete]"); - - elAssign.click( () => { - const cp = animation.controlPoints[index]; - - cp.position.copy(viewer.scene.view.position); - cp.target.copy(viewer.scene.view.getPivot()); - }); - - elMove.click( () => { - const cp = animation.controlPoints[index]; - - viewer.scene.view.position.copy(cp.position); - viewer.scene.view.lookAt(cp.target); - }); - - elDelete.click( () => { - const cp = animation.controlPoints[index]; - animation.removeControlPoint(cp); - }); - - elKeyframes.append(elKeyframe); - }; - - let index = 0; - - addNewKeyframeItem(index); - - for(const cp of animation.controlPoints){ - - addKeyframeItem(index); - index++; - addNewKeyframeItem(index); - - } - }; - - updateKeyframes(); - - animation.addEventListener("controlpoint_added", updateKeyframes); - animation.addEventListener("controlpoint_removed", updateKeyframes); - - - - - // this._update = () => { this.update(); }; - - // this.update(); - } - - update(){ - - } - }; - - class PropertiesPanel{ - - constructor(container, viewer){ - this.container = container; - this.viewer = viewer; - this.object = null; - this.cleanupTasks = []; - this.scene = null; - } - - setScene(scene){ - this.scene = scene; - } - - set(object){ - if(this.object === object){ - return; - } - - this.object = object; - - for(let task of this.cleanupTasks){ - task(); - } - this.cleanupTasks = []; - this.container.empty(); - - if(object instanceof PointCloudTree){ - this.setPointCloud(object); - }else if(object instanceof Measure || object instanceof Profile || object instanceof Volume){ - this.setMeasurement(object); - }else if(object instanceof THREE.Camera){ - this.setCamera(object); - }else if(object instanceof Annotation){ - this.setAnnotation(object); - }else if(object instanceof CameraAnimation){ - this.setCameraAnimation(object); - } - - } - - // - // Used for events that should be removed when the property object changes. - // This is for listening to materials, scene, point clouds, etc. - // not required for DOM listeners, since they are automatically cleared by removing the DOM subtree. - // - addVolatileListener(target, type, callback){ - target.addEventListener(type, callback); - this.cleanupTasks.push(() => { - target.removeEventListener(type, callback); - }); - } - - setPointCloud(pointcloud){ - - let material = pointcloud.material; - - let panel = $(` -
        -
          - -
        • -
          -
        • -
        • -
          -
        • - - -
        • - - -
        • - - -
        • -
          - -
        • - -
        • - -
        • - - -
        • :
        • - -
          - Attribute -
          - -
        • - -
        • - -
          -
          - Attribute Weights -
          - -
        • RGB:
        • -
        • Intensity:
        • -
        • Elevation:
        • -
        • Classification:
        • -
        • Return Number:
        • -
        • Source ID:
        • -
          - -
          -
          - RGB -
          - -
        • Gamma:
        • -
        • Brightness:
        • -
        • Contrast:
        • -
          - -
          -
          - Extra Attribute -
          - -
        • :
        • - -
        • Gamma:
        • -
        • Brightness:
        • -
        • Contrast:
        • -
          - -
          -
          - MATCAP -
          - -
        • -
          -
        • -
          - -
          -
          - Color -
          - - -
          - - -
          -
          - Elevation -
          - -
        • :
        • - -
        • - - - - - -
        • - -
        • - Gradient Scheme: -
          -
          -
        • -
          - -
          -
          - Transition -
          - -
        • transition:
        • -
          - -
          -
          - Intensity -
          - -
        • Range:
        • -
        • Gamma:
        • -
        • Brightness:
        • -
        • Contrast:
        • -
          - -
          -
          - GPS Time -
          - -
          - -
          -
          - Indices -
          -
          - - -
        -
        - `); - - panel.i18n(); - this.container.append(panel); - - { // POINT SIZE - let sldPointSize = panel.find(`#sldPointSize`); - let lblPointSize = panel.find(`#lblPointSize`); - - sldPointSize.slider({ - value: material.size, - min: 0, - max: 3, - step: 0.01, - slide: function (event, ui) { material.size = ui.value; } - }); - - let update = (e) => { - lblPointSize.html(material.size.toFixed(2)); - sldPointSize.slider({value: material.size}); - }; - this.addVolatileListener(material, "point_size_changed", update); - - update(); - } - - { // MINIMUM POINT SIZE - let sldMinPointSize = panel.find(`#sldMinPointSize`); - let lblMinPointSize = panel.find(`#lblMinPointSize`); - - sldMinPointSize.slider({ - value: material.size, - min: 0, - max: 3, - step: 0.01, - slide: function (event, ui) { material.minSize = ui.value; } - }); - - let update = (e) => { - lblMinPointSize.html(material.minSize.toFixed(2)); - sldMinPointSize.slider({value: material.minSize}); - }; - this.addVolatileListener(material, "point_size_changed", update); - - update(); - } - - { // POINT SIZING - let strSizeType = Object.keys(PointSizeType)[material.pointSizeType]; - - let opt = panel.find(`#optPointSizing`); - opt.selectmenu(); - opt.val(strSizeType).selectmenu('refresh'); - - opt.selectmenu({ - change: (event, ui) => { - material.pointSizeType = PointSizeType[ui.item.value]; - } - }); - } - - { // SHAPE - let opt = panel.find(`#optShape`); - - opt.selectmenu({ - change: (event, ui) => { - let value = ui.item.value; - - material.shape = PointShape[value]; - } - }); - - let update = () => { - let typename = Object.keys(PointShape)[material.shape]; - - opt.selectmenu().val(typename).selectmenu('refresh'); - }; - this.addVolatileListener(material, "point_shape_changed", update); - - update(); - } - - { // BACKFACE CULLING - - let opt = panel.find(`#set_backface_culling`); - opt.click(() => { - material.backfaceCulling = opt.prop("checked"); - }); - let update = () => { - let value = material.backfaceCulling; - opt.prop("checked", value); - }; - this.addVolatileListener(material, "backface_changed", update); - update(); - - let blockBackface = $('#materials_backface_container'); - blockBackface.css('display', 'none'); - - const pointAttributes = pointcloud.pcoGeometry.pointAttributes; - const hasNormals = pointAttributes.hasNormals ? pointAttributes.hasNormals() : false; - if(hasNormals) { - blockBackface.css('display', 'block'); - } - /* - opt.checkboxradio({ - clicked: (event, ui) => { - // let value = ui.item.value; - let value = ui.item.checked; - console.log(value); - material.backfaceCulling = value; // $('#set_freeze').prop("checked"); - } - }); - */ - } - - { // OPACITY - let sldOpacity = panel.find(`#sldOpacity`); - let lblOpacity = panel.find(`#lblOpacity`); - - sldOpacity.slider({ - value: material.opacity, - min: 0, - max: 1, - step: 0.001, - slide: function (event, ui) { - material.opacity = ui.value; - } - }); - - let update = (e) => { - lblOpacity.html(material.opacity.toFixed(2)); - sldOpacity.slider({value: material.opacity}); - }; - this.addVolatileListener(material, "opacity_changed", update); - - update(); - } - - { - - const attributes = pointcloud.pcoGeometry.pointAttributes.attributes; - - let options = []; - - options.push(...attributes.map(a => a.name)); - - const intensityIndex = options.indexOf("intensity"); - if(intensityIndex >= 0){ - options.splice(intensityIndex + 1, 0, "intensity gradient"); - } - - options.push( - "elevation", - "color", - 'matcap', - 'indices', - 'level of detail', - 'composite' - ); - - const blacklist = [ - "POSITION_CARTESIAN", - "position", - ]; - - options = options.filter(o => !blacklist.includes(o)); - - let attributeSelection = panel.find('#optMaterial'); - for(let option of options){ - let elOption = $(``); - attributeSelection.append(elOption); - } - - let updateMaterialPanel = (event, ui) => { - let selectedValue = attributeSelection.selectmenu().val(); - material.activeAttributeName = selectedValue; - - let attribute = pointcloud.getAttribute(selectedValue); - - if(selectedValue === "intensity gradient"){ - attribute = pointcloud.getAttribute("intensity"); - } - - const isIntensity = attribute ? ["intensity", "intensity gradient"].includes(attribute.name) : false; - - if(isIntensity){ - if(pointcloud.material.intensityRange[0] === Infinity){ - pointcloud.material.intensityRange = attribute.range; - } - - const [min, max] = attribute.range; - - panel.find('#sldIntensityRange').slider({ - range: true, - min: min, max: max, step: 0.01, - values: [min, max], - slide: (event, ui) => { - let min = ui.values[0]; - let max = ui.values[1]; - material.intensityRange = [min, max]; - } - }); - } else if(attribute){ - const [min, max] = attribute.range; - - let selectedRange = material.getRange(attribute.name); - - if(!selectedRange){ - selectedRange = [...attribute.range]; - } - - let minMaxAreNumbers = typeof min === "number" && typeof max === "number"; - - if(minMaxAreNumbers){ - panel.find('#sldExtraRange').slider({ - range: true, - min: min, - max: max, - step: 0.01, - values: selectedRange, - slide: (event, ui) => { - let [a, b] = ui.values; - - material.setRange(attribute.name, [a, b]); - } - }); - } - - } - - let blockWeights = $('#materials\\.composite_weight_container'); - let blockElevation = $('#materials\\.elevation_container'); - let blockRGB = $('#materials\\.rgb_container'); - let blockExtra = $('#materials\\.extra_container'); - let blockColor = $('#materials\\.color_container'); - let blockIntensity = $('#materials\\.intensity_container'); - let blockIndex = $('#materials\\.index_container'); - let blockTransition = $('#materials\\.transition_container'); - let blockGps = $('#materials\\.gpstime_container'); - let blockMatcap = $('#materials\\.matcap_container'); - - blockIndex.css('display', 'none'); - blockIntensity.css('display', 'none'); - blockElevation.css('display', 'none'); - blockRGB.css('display', 'none'); - blockExtra.css('display', 'none'); - blockColor.css('display', 'none'); - blockWeights.css('display', 'none'); - blockTransition.css('display', 'none'); - blockMatcap.css('display', 'none'); - blockGps.css('display', 'none'); - - if (selectedValue === 'composite') { - blockWeights.css('display', 'block'); - blockElevation.css('display', 'block'); - blockRGB.css('display', 'block'); - blockIntensity.css('display', 'block'); - } else if (selectedValue === 'elevation') { - blockElevation.css('display', 'block'); - } else if (selectedValue === 'RGB and Elevation') { - blockRGB.css('display', 'block'); - blockElevation.css('display', 'block'); - } else if (selectedValue === 'rgba') { - blockRGB.css('display', 'block'); - } else if (selectedValue === 'color') { - blockColor.css('display', 'block'); - } else if (selectedValue === 'intensity') { - blockIntensity.css('display', 'block'); - } else if (selectedValue === 'intensity gradient') { - blockIntensity.css('display', 'block'); - } else if (selectedValue === "indices" ){ - blockIndex.css('display', 'block'); - } else if (selectedValue === "matcap" ){ - blockMatcap.css('display', 'block'); - } else if (selectedValue === "classification" ){ - // add classification color selctor? - } else if (selectedValue === "gps-time" ){ - blockGps.css('display', 'block'); - } else if(selectedValue === "number of returns"){ - - } else if(selectedValue === "return number"){ - - } else if(["source id", "point source id"].includes(selectedValue)){ - - } else { - blockExtra.css('display', 'block'); - } - }; - - attributeSelection.selectmenu({change: updateMaterialPanel}); - - let update = () => { - attributeSelection.val(material.activeAttributeName).selectmenu('refresh'); - }; - this.addVolatileListener(material, "point_color_type_changed", update); - this.addVolatileListener(material, "active_attribute_changed", update); - - update(); - updateMaterialPanel(); - } - - { - const schemes = Object.keys(Potree.Gradients).map(name => ({name: name, values: Gradients[name]})); - - let elSchemeContainer = panel.find("#elevation_gradient_scheme_selection"); - - for(let scheme of schemes){ - let elScheme = $(` - - - `); - - const svg = Potree.Utils.createSvgGradient(scheme.values); - svg.setAttributeNS(null, "class", `button-icon`); - - elScheme.append($(svg)); - - elScheme.click( () => { - material.gradient = Gradients[scheme.name]; - }); - - elSchemeContainer.append(elScheme); - } - } - - { - let matcaps = [ - {name: "Normals", icon: `${Potree.resourcePath}/icons/matcap/check_normal+y.jpg`}, - {name: "Basic 1", icon: `${Potree.resourcePath}/icons/matcap/basic_1.jpg`}, - {name: "Basic 2", icon: `${Potree.resourcePath}/icons/matcap/basic_2.jpg`}, - {name: "Basic Dark", icon: `${Potree.resourcePath}/icons/matcap/basic_dark.jpg`}, - {name: "Basic Side", icon: `${Potree.resourcePath}/icons/matcap/basic_side.jpg`}, - {name: "Ceramic Dark", icon: `${Potree.resourcePath}/icons/matcap/ceramic_dark.jpg`}, - {name: "Ceramic Lightbulb", icon: `${Potree.resourcePath}/icons/matcap/ceramic_lightbulb.jpg`}, - {name: "Clay Brown", icon: `${Potree.resourcePath}/icons/matcap/clay_brown.jpg`}, - {name: "Clay Muddy", icon: `${Potree.resourcePath}/icons/matcap/clay_muddy.jpg`}, - {name: "Clay Studio", icon: `${Potree.resourcePath}/icons/matcap/clay_studio.jpg`}, - {name: "Resin", icon: `${Potree.resourcePath}/icons/matcap/resin.jpg`}, - {name: "Skin", icon: `${Potree.resourcePath}/icons/matcap/skin.jpg`}, - {name: "Jade", icon: `${Potree.resourcePath}/icons/matcap/jade.jpg`}, - {name: "Metal_ Anisotropic", icon: `${Potree.resourcePath}/icons/matcap/metal_anisotropic.jpg`}, - {name: "Metal Carpaint", icon: `${Potree.resourcePath}/icons/matcap/metal_carpaint.jpg`}, - {name: "Metal Lead", icon: `${Potree.resourcePath}/icons/matcap/metal_lead.jpg`}, - {name: "Metal Shiny", icon: `${Potree.resourcePath}/icons/matcap/metal_shiny.jpg`}, - {name: "Pearl", icon: `${Potree.resourcePath}/icons/matcap/pearl.jpg`}, - {name: "Toon", icon: `${Potree.resourcePath}/icons/matcap/toon.jpg`}, - {name: "Check Rim Light", icon: `${Potree.resourcePath}/icons/matcap/check_rim_light.jpg`}, - {name: "Check Rim Dark", icon: `${Potree.resourcePath}/icons/matcap/check_rim_dark.jpg`}, - {name: "Contours 1", icon: `${Potree.resourcePath}/icons/matcap/contours_1.jpg`}, - {name: "Contours 2", icon: `${Potree.resourcePath}/icons/matcap/contours_2.jpg`}, - {name: "Contours 3", icon: `${Potree.resourcePath}/icons/matcap/contours_3.jpg`}, - {name: "Reflection Check Horizontal", icon: `${Potree.resourcePath}/icons/matcap/reflection_check_horizontal.jpg`}, - {name: "Reflection Check Vertical", icon: `${Potree.resourcePath}/icons/matcap/reflection_check_vertical.jpg`}, - ]; - - let elMatcapContainer = panel.find("#matcap_scheme_selection"); - - for(let matcap of matcaps){ - let elMatcap = $(` - - `); - - elMatcap.click( () => { - material.matcap = matcap.icon.substring(matcap.icon.lastIndexOf('/')); - }); - - elMatcapContainer.append(elMatcap); - } - } - - { - panel.find('#sldRGBGamma').slider({ - value: material.rgbGamma, - min: 0, max: 4, step: 0.01, - slide: (event, ui) => {material.rgbGamma = ui.value;} - }); - - panel.find('#sldRGBContrast').slider({ - value: material.rgbContrast, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.rgbContrast = ui.value;} - }); - - panel.find('#sldRGBBrightness').slider({ - value: material.rgbBrightness, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.rgbBrightness = ui.value;} - }); - - panel.find('#sldExtraGamma').slider({ - value: material.extraGamma, - min: 0, max: 4, step: 0.01, - slide: (event, ui) => {material.extraGamma = ui.value;} - }); - - panel.find('#sldExtraBrightness').slider({ - value: material.extraBrightness, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.extraBrightness = ui.value;} - }); - - panel.find('#sldExtraContrast').slider({ - value: material.extraContrast, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.extraContrast = ui.value;} - }); - - panel.find('#sldHeightRange').slider({ - range: true, - min: 0, max: 1000, step: 0.01, - values: [0, 1000], - slide: (event, ui) => { - material.heightMin = ui.values[0]; - material.heightMax = ui.values[1]; - } - }); - - panel.find('#sldIntensityGamma').slider({ - value: material.intensityGamma, - min: 0, max: 4, step: 0.01, - slide: (event, ui) => {material.intensityGamma = ui.value;} - }); - - panel.find('#sldIntensityContrast').slider({ - value: material.intensityContrast, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.intensityContrast = ui.value;} - }); - - panel.find('#sldIntensityBrightness').slider({ - value: material.intensityBrightness, - min: -1, max: 1, step: 0.01, - slide: (event, ui) => {material.intensityBrightness = ui.value;} - }); - - panel.find('#sldWeightRGB').slider({ - value: material.weightRGB, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightRGB = ui.value;} - }); - - panel.find('#sldWeightIntensity').slider({ - value: material.weightIntensity, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightIntensity = ui.value;} - }); - - panel.find('#sldWeightElevation').slider({ - value: material.weightElevation, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightElevation = ui.value;} - }); - - panel.find('#sldWeightClassification').slider({ - value: material.weightClassification, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightClassification = ui.value;} - }); - - panel.find('#sldWeightReturnNumber').slider({ - value: material.weightReturnNumber, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightReturnNumber = ui.value;} - }); - - panel.find('#sldWeightSourceID').slider({ - value: material.weightSourceID, - min: 0, max: 1, step: 0.01, - slide: (event, ui) => {material.weightSourceID = ui.value;} - }); - - panel.find(`#materials\\.color\\.picker`).spectrum({ - flat: true, - showInput: true, - preferredFormat: 'rgb', - cancelText: '', - chooseText: 'Apply', - color: `#${material.color.getHexString()}`, - move: color => { - let cRGB = color.toRgb(); - let tc = new THREE.Color().setRGB(cRGB.r / 255, cRGB.g / 255, cRGB.b / 255); - material.color = tc; - }, - change: color => { - let cRGB = color.toRgb(); - let tc = new THREE.Color().setRGB(cRGB.r / 255, cRGB.g / 255, cRGB.b / 255); - material.color = tc; - } - }); - - this.addVolatileListener(material, "color_changed", () => { - panel.find(`#materials\\.color\\.picker`) - .spectrum('set', `#${material.color.getHexString()}`); - }); - - let updateHeightRange = function () { - - - let aPosition = pointcloud.getAttribute("position"); - - let bMin, bMax; - - if(aPosition){ - // for new format 2.0 and loader that contain precomputed min/max of attributes - let min = aPosition.range[0][2]; - let max = aPosition.range[1][2]; - let width = max - min; - - bMin = min - 0.2 * width; - bMax = max + 0.2 * width; - }else { - // for format up until exlusive 2.0 - let box = [pointcloud.pcoGeometry.tightBoundingBox, pointcloud.getBoundingBoxWorld()] - .find(v => v !== undefined); - - pointcloud.updateMatrixWorld(true); - box = Utils.computeTransformedBoundingBox(box, pointcloud.matrixWorld); - - let bWidth = box.max.z - box.min.z; - bMin = box.min.z - 0.2 * bWidth; - bMax = box.max.z + 0.2 * bWidth; - } - - let range = material.elevationRange; - - panel.find('#lblHeightRange').html(`${range[0].toFixed(2)} to ${range[1].toFixed(2)}`); - panel.find('#sldHeightRange').slider({min: bMin, max: bMax, values: range}); - }; - - let updateExtraRange = function () { - - let attributeName = material.activeAttributeName; - let attribute = pointcloud.getAttribute(attributeName); - - if(attribute == null){ - return; - } - - let range = material.getRange(attributeName); - - if(range == null){ - range = attribute.range; - } - - // currently only supporting scalar ranges. - // rgba, normals, positions, etc have vector ranges, however - let isValidRange = (typeof range[0] === "number") && (typeof range[1] === "number"); - if(!isValidRange){ - return; - } - - if(range){ - let msg = `${range[0].toFixed(2)} to ${range[1].toFixed(2)}`; - panel.find('#lblExtraRange').html(msg); - }else { - panel.find("could not deduce range"); - } - }; - - let updateIntensityRange = function () { - let range = material.intensityRange; - - panel.find('#lblIntensityRange').html(`${parseInt(range[0])} to ${parseInt(range[1])}`); - }; - - { - updateHeightRange(); - panel.find(`#sldHeightRange`).slider('option', 'min'); - panel.find(`#sldHeightRange`).slider('option', 'max'); - } - - { - let elGradientRepeat = panel.find("#gradient_repeat_option"); - elGradientRepeat.selectgroup({title: "Gradient"}); - - elGradientRepeat.find("input").click( (e) => { - this.viewer.setElevationGradientRepeat(ElevationGradientRepeat[e.target.value]); - }); - - let current = Object.keys(ElevationGradientRepeat) - .filter(key => ElevationGradientRepeat[key] === this.viewer.elevationGradientRepeat); - elGradientRepeat.find(`input[value=${current}]`).trigger("click"); - } - - let onIntensityChange = () => { - let gamma = material.intensityGamma; - let contrast = material.intensityContrast; - let brightness = material.intensityBrightness; - - updateIntensityRange(); - - panel.find('#lblIntensityGamma').html(gamma.toFixed(2)); - panel.find('#lblIntensityContrast').html(contrast.toFixed(2)); - panel.find('#lblIntensityBrightness').html(brightness.toFixed(2)); - - panel.find('#sldIntensityGamma').slider({value: gamma}); - panel.find('#sldIntensityContrast').slider({value: contrast}); - panel.find('#sldIntensityBrightness').slider({value: brightness}); - }; - - let onRGBChange = () => { - let gamma = material.rgbGamma; - let contrast = material.rgbContrast; - let brightness = material.rgbBrightness; - - panel.find('#lblRGBGamma').html(gamma.toFixed(2)); - panel.find('#lblRGBContrast').html(contrast.toFixed(2)); - panel.find('#lblRGBBrightness').html(brightness.toFixed(2)); - - panel.find('#sldRGBGamma').slider({value: gamma}); - panel.find('#sldRGBContrast').slider({value: contrast}); - panel.find('#sldRGBBrightness').slider({value: brightness}); - }; - - this.addVolatileListener(material, "material_property_changed", updateExtraRange); - this.addVolatileListener(material, "material_property_changed", updateHeightRange); - this.addVolatileListener(material, "material_property_changed", onIntensityChange); - this.addVolatileListener(material, "material_property_changed", onRGBChange); - - updateExtraRange(); - updateHeightRange(); - onIntensityChange(); - onRGBChange(); - } - - } - - - - setMeasurement(object){ - - let TYPE = { - DISTANCE: {panel: DistancePanel}, - AREA: {panel: AreaPanel}, - POINT: {panel: PointPanel}, - ANGLE: {panel: AnglePanel}, - HEIGHT: {panel: HeightPanel}, - PROFILE: {panel: ProfilePanel}, - VOLUME: {panel: VolumePanel}, - CIRCLE: {panel: CirclePanel}, - OTHER: {panel: PointPanel}, - }; - - let getType = (measurement) => { - if (measurement instanceof Measure) { - if (measurement.showDistances && !measurement.showArea && !measurement.showAngles) { - return TYPE.DISTANCE; - } else if (measurement.showDistances && measurement.showArea && !measurement.showAngles) { - return TYPE.AREA; - } else if (measurement.maxMarkers === 1) { - return TYPE.POINT; - } else if (!measurement.showDistances && !measurement.showArea && measurement.showAngles) { - return TYPE.ANGLE; - } else if (measurement.showHeight) { - return TYPE.HEIGHT; - } else if (measurement.showCircle) { - return TYPE.CIRCLE; - } else { - return TYPE.OTHER; - } - } else if (measurement instanceof Profile) { - return TYPE.PROFILE; - } else if (measurement instanceof Volume) { - return TYPE.VOLUME; - } - }; - - //this.container.html("measurement"); - - let type = getType(object); - let Panel = type.panel; - - let panel = new Panel(this.viewer, object, this); - this.container.append(panel.elContent); - } - - setCamera(camera){ - let panel = new CameraPanel(this.viewer, this); - this.container.append(panel.elContent); - } - - setAnnotation(annotation){ - let panel = new AnnotationPanel(this.viewer, this, annotation); - this.container.append(panel.elContent); - } - - setCameraAnimation(animation){ - let panel = new CameraAnimationPanel(this.viewer, this, animation); - this.container.append(panel.elContent); - } - - } - - function addCommas(nStr){ - nStr += ''; - let x = nStr.split('.'); - let x1 = x[0]; - let x2 = x.length > 1 ? '.' + x[1] : ''; - let rgx = /(\d+)(\d{3})/; - while (rgx.test(x1)) { - x1 = x1.replace(rgx, '$1' + ',' + '$2'); - } - return x1 + x2; - }; - - function format(value){ - return addCommas(value.toFixed(3)); - }; - - class HierarchicalSlider{ - - constructor(params = {}){ - - this.element = document.createElement("div"); - - this.labels = []; - this.sliders = []; - this.range = params.range != null ? params.range : [0, 1]; - this.slide = params.slide != null ? params.slide : null; - this.step = params.step != null ? params.step : 0.0001; - - let levels = params.levels != null ? params.levels : 1; - - for(let level = 0; level < levels; level++){ - this.addLevel(); - } - - } - - setRange(range){ - this.range = [...range]; - - { // root slider - let slider = this.sliders[0]; - - $(slider).slider({ - min: range[0], - max: range[1], - }); - } - - for(let i = 1; i < this.sliders.length; i++){ - let parentSlider = this.sliders[i - 1]; - let slider = this.sliders[i]; - - let parentValues = $(parentSlider).slider("option", "values"); - let childRange = [...parentValues]; - - $(slider).slider({ - min: childRange[0], - max: childRange[1], - }); - } - - this.updateLabels(); - } - - setValues(values){ - for(let slider of this.sliders){ - $(slider).slider({ - values: [...values], - }); - } - - this.updateLabels(); - } - - addLevel(){ - const elLevel = document.createElement("li"); - const elRange = document.createTextNode("Range: "); - const label = document.createElement("span"); - const slider = document.createElement("div"); - - let level = this.sliders.length; - let [min, max] = [0, 0]; - - if(this.sliders.length === 0){ - [min, max] = this.range; - }else { - let parentSlider = this.sliders[this.sliders.length - 1]; - [min, max] = $(parentSlider).slider("option", "values"); - } - - $(slider).slider({ - range: true, - min: min, - max: max, - step: this.step, - values: [min, max], - slide: (event, ui) => { - - // set all descendants to same range - let levels = this.sliders.length; - for(let i = level + 1; i < levels; i++){ - let descendant = this.sliders[i]; - - $(descendant).slider({ - range: true, - min: ui.values[0], - max: ui.values[1], - values: [...ui.values], - }); - } - - if(this.slide){ - let values = [...ui.values]; - - this.slide({ - target: this, - range: this.range, - values: values, - }); - } - - this.updateLabels(); - }, - }); - - elLevel.append(elRange, label, slider); - - this.sliders.push(slider); - this.labels.push(label); - this.element.append(elLevel); - - this.updateLabels(); - } - - removeLevel(){ - - } - - updateSliders(){ - - } - - updateLabels(){ - - let levels = this.sliders.length; - - for(let i = 0; i < levels; i++){ - - let slider = this.sliders[i]; - let label = this.labels[i]; - - let [min, max] = $(slider).slider("option", "values"); - let strMin = format(min); - let strMax = format(max); - let strLabel = `${strMin} to ${strMax}`; - - label.innerHTML = strLabel; - } - - } - - - } - - class OrientedImageControls extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.originalCam = viewer.scene.getActiveCamera(); - this.shearCam = viewer.scene.getActiveCamera().clone(); - this.shearCam.rotation.set(this.originalCam.rotation.toArray()); - this.shearCam.updateProjectionMatrix(); - this.shearCam.updateProjectionMatrix = () => { - return this.shearCam.projectionMatrix; - }; - - this.image = null; - - this.fadeFactor = 20; - this.fovDelta = 0; - - this.fovMin = 0.1; - this.fovMax = 120; - - this.shear = [0, 0]; - - // const style = ``; - this.elUp = $(``); - this.elRight = $(``); - this.elDown = $(``); - this.elLeft = $(``); - this.elExit = $(``); - - this.elExit.click( () => { - this.release(); - }); - - this.elUp.click(() => { - const fovY = viewer.getFOV(); - const top = Math.tan(THREE.Math.degToRad(fovY / 2)); - this.shear[1] += 0.1 * top; - }); - - this.elRight.click(() => { - const fovY = viewer.getFOV(); - const top = Math.tan(THREE.Math.degToRad(fovY / 2)); - this.shear[0] += 0.1 * top; - }); - - this.elDown.click(() => { - const fovY = viewer.getFOV(); - const top = Math.tan(THREE.Math.degToRad(fovY / 2)); - this.shear[1] -= 0.1 * top; - }); - - this.elLeft.click(() => { - const fovY = viewer.getFOV(); - const top = Math.tan(THREE.Math.degToRad(fovY / 2)); - this.shear[0] -= 0.1 * top; - }); - - this.scene = null; - this.sceneControls = new THREE.Scene(); - - let scroll = (e) => { - this.fovDelta += -e.delta * 1.0; - }; - - this.addEventListener('mousewheel', scroll); - //this.addEventListener("mousemove", onMove); - } - - hasSomethingCaptured(){ - return this.image !== null; - } - - capture(image){ - if(this.hasSomethingCaptured()){ - return; - } - - this.image = image; - - this.originalFOV = this.viewer.getFOV(); - this.originalControls = this.viewer.getControls(); - - this.viewer.setControls(this); - this.viewer.scene.overrideCamera = this.shearCam; - - const elCanvas = this.viewer.renderer.domElement; - const elRoot = $(elCanvas.parentElement); - - this.shear = [0, 0]; - - - elRoot.append(this.elUp); - elRoot.append(this.elRight); - elRoot.append(this.elDown); - elRoot.append(this.elLeft); - elRoot.append(this.elExit); - } - - release(){ - this.image = null; - - this.viewer.scene.overrideCamera = null; - - this.elUp.detach(); - this.elRight.detach(); - this.elDown.detach(); - this.elLeft.detach(); - this.elExit.detach(); - - this.viewer.setFOV(this.originalFOV); - this.viewer.setControls(this.originalControls); - } - - setScene (scene) { - this.scene = scene; - } - - update (delta) { - // const view = this.scene.view; - - // let prevTotal = this.shearCam.projectionMatrix.elements.reduce( (a, i) => a + i, 0); - - //const progression = Math.min(1, this.fadeFactor * delta); - //const attenuation = Math.max(0, 1 - this.fadeFactor * delta); - const progression = 1; - const attenuation = 0; - - const oldFov = this.viewer.getFOV(); - let fovProgression = progression * this.fovDelta; - let newFov = oldFov * ((1 + fovProgression / 10)); - - newFov = Math.max(this.fovMin, newFov); - newFov = Math.min(this.fovMax, newFov); - - let diff = newFov / oldFov; - - const mouse = this.viewer.inputHandler.mouse; - const canvasSize = this.viewer.renderer.getSize(new THREE.Vector2()); - const uv = [ - (mouse.x / canvasSize.x), - ((canvasSize.y - mouse.y) / canvasSize.y) - ]; - - const fovY = newFov; - const aspect = canvasSize.x / canvasSize.y; - const top = Math.tan(THREE.Math.degToRad(fovY / 2)); - const height = 2 * top; - const width = aspect * height; - - const shearRangeX = [ - this.shear[0] - 0.5 * width, - this.shear[0] + 0.5 * width, - ]; - - const shearRangeY = [ - this.shear[1] - 0.5 * height, - this.shear[1] + 0.5 * height, - ]; - - const shx = (1 - uv[0]) * shearRangeX[0] + uv[0] * shearRangeX[1]; - const shy = (1 - uv[1]) * shearRangeY[0] + uv[1] * shearRangeY[1]; - - const shu = (1 - diff); - - const newShear = [ - (1 - shu) * this.shear[0] + shu * shx, - (1 - shu) * this.shear[1] + shu * shy, - ]; - - this.shear = newShear; - this.viewer.setFOV(newFov); - - const {originalCam, shearCam} = this; - - originalCam.fov = newFov; - originalCam.updateMatrixWorld(); - originalCam.updateProjectionMatrix(); - shearCam.copy(originalCam); - shearCam.rotation.set(...originalCam.rotation.toArray()); - - shearCam.updateMatrixWorld(); - shearCam.projectionMatrix.copy(originalCam.projectionMatrix); - - const [sx, sy] = this.shear; - const mShear = new THREE.Matrix4().set( - 1, 0, sx, 0, - 0, 1, sy, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, - ); - - const proj = shearCam.projectionMatrix; - proj.multiply(mShear); - shearCam.projectionMatrixInverse.getInverse( proj ); - - let total = shearCam.projectionMatrix.elements.reduce( (a, i) => a + i, 0); - - this.fovDelta *= attenuation; - } - }; - - // https://support.pix4d.com/hc/en-us/articles/205675256-How-are-yaw-pitch-roll-defined - // https://support.pix4d.com/hc/en-us/articles/202558969-How-are-omega-phi-kappa-defined - - function createMaterial(){ - - let vertexShader = ` - uniform float uNear; - varying vec2 vUV; - varying vec4 vDebug; - - void main(){ - vDebug = vec4(0.0, 1.0, 0.0, 1.0); - vec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0); - // make sure that this mesh is at least in front of the near plane - modelViewPosition.xyz += normalize(modelViewPosition.xyz) * uNear; - gl_Position = projectionMatrix * modelViewPosition; - vUV = uv; - } - `; - - let fragmentShader = ` - uniform sampler2D tColor; - uniform float uOpacity; - varying vec2 vUV; - varying vec4 vDebug; - void main(){ - vec4 color = texture2D(tColor, vUV); - gl_FragColor = color; - gl_FragColor.a = uOpacity; - } - `; - const material = new THREE.ShaderMaterial( { - uniforms: { - // time: { value: 1.0 }, - // resolution: { value: new THREE.Vector2() } - tColor: {value: new THREE.Texture() }, - uNear: {value: 0.0}, - uOpacity: {value: 1.0}, - }, - vertexShader: vertexShader, - fragmentShader: fragmentShader, - side: THREE.DoubleSide, - } ); - - material.side = THREE.DoubleSide; - - return material; - } - - const planeGeometry = new THREE.PlaneGeometry(1, 1); - const lineGeometry = new THREE.Geometry(); - - lineGeometry.vertices.push( - new THREE.Vector3(-0.5, -0.5, 0), - new THREE.Vector3( 0.5, -0.5, 0), - new THREE.Vector3( 0.5, 0.5, 0), - new THREE.Vector3(-0.5, 0.5, 0), - new THREE.Vector3(-0.5, -0.5, 0), - ); - - class OrientedImage{ - - constructor(id){ - - this.id = id; - this.fov = 1.0; - this.position = new THREE.Vector3(); - this.rotation = new THREE.Vector3(); - this.width = 0; - this.height = 0; - this.fov = 1.0; - - const material = createMaterial(); - const lineMaterial = new THREE.LineBasicMaterial( { color: 0x00ff00 } ); - this.mesh = new THREE.Mesh(planeGeometry, material); - this.line = new THREE.Line(lineGeometry, lineMaterial); - this.texture = null; - - this.mesh.orientedImage = this; - } - - set(position, rotation, dimension, fov){ - - let radians = rotation.map(THREE.Math.degToRad); - - this.position.set(...position); - this.mesh.position.set(...position); - - this.rotation.set(...radians); - this.mesh.rotation.set(...radians); - - [this.width, this.height] = dimension; - this.mesh.scale.set(this.width / this.height, 1, 1); - - this.fov = fov; - - this.updateTransform(); - } - - updateTransform(){ - let {mesh, line, fov} = this; - - mesh.updateMatrixWorld(); - const dir = mesh.getWorldDirection(); - const alpha = THREE.Math.degToRad(fov / 2); - const d = -0.5 / Math.tan(alpha); - const move = dir.clone().multiplyScalar(d); - mesh.position.add(move); - - line.position.copy(mesh.position); - line.scale.copy(mesh.scale); - line.rotation.copy(mesh.rotation); - } - - }; - - class OrientedImages extends EventDispatcher{ - - constructor(){ - super(); - - this.node = null; - this.cameraParams = null; - this.imageParams = null; - this.images = null; - this._visible = true; - } - - set visible(visible){ - if(this._visible === visible){ - return; - } - - for(const image of this.images){ - image.mesh.visible = visible; - image.line.visible = visible; - } - - this._visible = visible; - this.dispatchEvent({ - type: "visibility_changed", - images: this, - }); - } - - get visible(){ - return this._visible; - } - - - }; - - class OrientedImageLoader{ - - static async loadCameraParams(path){ - const res = await fetch(path); - const text = await res.text(); - - const parser = new DOMParser(); - const doc = parser.parseFromString(text, "application/xml"); - - const width = parseInt(doc.getElementsByTagName("width")[0].textContent); - const height = parseInt(doc.getElementsByTagName("height")[0].textContent); - const f = parseFloat(doc.getElementsByTagName("f")[0].textContent); - - let a = (height / 2) / f; - let fov = 2 * THREE.Math.radToDeg(Math.atan(a)); - - const params = { - path: path, - width: width, - height: height, - f: f, - fov: fov, - }; - - return params; - } - - static async loadImageParams(path){ - - const response = await fetch(path); - if(!response.ok){ - console.error(`failed to load ${path}`); - return; - } - - const content = await response.text(); - const lines = content.split(/\r?\n/); - const imageParams = []; - - for(let i = 1; i < lines.length; i++){ - const line = lines[i]; - - if(line.startsWith("#")){ - continue; - } - - const tokens = line.split(/\s+/); - - if(tokens.length < 6){ - continue; - } - - const params = { - id: tokens[0], - x: Number.parseFloat(tokens[1]), - y: Number.parseFloat(tokens[2]), - z: Number.parseFloat(tokens[3]), - omega: Number.parseFloat(tokens[4]), - phi: Number.parseFloat(tokens[5]), - kappa: Number.parseFloat(tokens[6]), - }; - - // const whitelist = ["47518.jpg"]; - // if(whitelist.includes(params.id)){ - // imageParams.push(params); - // } - imageParams.push(params); - } - - // debug - //return [imageParams[50]]; - - return imageParams; - } - - static async load(cameraParamsPath, imageParamsPath, viewer){ - - const tStart = performance.now(); - - const [cameraParams, imageParams] = await Promise.all([ - OrientedImageLoader.loadCameraParams(cameraParamsPath), - OrientedImageLoader.loadImageParams(imageParamsPath), - ]); - - const orientedImageControls = new OrientedImageControls(viewer); - const raycaster = new THREE.Raycaster(); - - const tEnd = performance.now(); - console.log(tEnd - tStart); - - // const sp = new THREE.PlaneGeometry(1, 1); - // const lg = new THREE.Geometry(); - - // lg.vertices.push( - // new THREE.Vector3(-0.5, -0.5, 0), - // new THREE.Vector3( 0.5, -0.5, 0), - // new THREE.Vector3( 0.5, 0.5, 0), - // new THREE.Vector3(-0.5, 0.5, 0), - // new THREE.Vector3(-0.5, -0.5, 0), - // ); - - const {width, height} = cameraParams; - const orientedImages = []; - const sceneNode = new THREE.Object3D(); - sceneNode.name = "oriented_images"; - - for(const params of imageParams){ - - // const material = createMaterial(); - // const lm = new THREE.LineBasicMaterial( { color: 0x00ff00 } ); - // const mesh = new THREE.Mesh(sp, material); - - const {x, y, z, omega, phi, kappa} = params; - // const [rx, ry, rz] = [omega, phi, kappa] - // .map(THREE.Math.degToRad); - - // mesh.position.set(x, y, z); - // mesh.scale.set(width / height, 1, 1); - // mesh.rotation.set(rx, ry, rz); - // { - // mesh.updateMatrixWorld(); - // const dir = mesh.getWorldDirection(); - // const alpha = THREE.Math.degToRad(cameraParams.fov / 2); - // const d = -0.5 / Math.tan(alpha); - // const move = dir.clone().multiplyScalar(d); - // mesh.position.add(move); - // } - // sceneNode.add(mesh); - - // const line = new THREE.Line(lg, lm); - // line.position.copy(mesh.position); - // line.scale.copy(mesh.scale); - // line.rotation.copy(mesh.rotation); - // sceneNode.add(line); - - let orientedImage = new OrientedImage(params.id); - // orientedImage.setPosition(x, y, z); - // orientedImage.setRotation(omega, phi, kappa); - // orientedImage.setDimension(width, height); - let position = [x, y, z]; - let rotation = [omega, phi, kappa]; - let dimension = [width, height]; - orientedImage.set(position, rotation, dimension, cameraParams.fov); - - sceneNode.add(orientedImage.mesh); - sceneNode.add(orientedImage.line); - - orientedImages.push(orientedImage); - } - - let hoveredElement = null; - let clipVolume = null; - - const onMouseMove = (evt) => { - const tStart = performance.now(); - if(hoveredElement){ - hoveredElement.line.material.color.setRGB(0, 1, 0); - } - evt.preventDefault(); - - //var array = getMousePosition( container, evt.clientX, evt.clientY ); - const rect = viewer.renderer.domElement.getBoundingClientRect(); - const [x, y] = [evt.clientX, evt.clientY]; - const array = [ - ( x - rect.left ) / rect.width, - ( y - rect.top ) / rect.height - ]; - const onClickPosition = new THREE.Vector2(...array); - //const intersects = getIntersects(onClickPosition, scene.children); - const camera = viewer.scene.getActiveCamera(); - const mouse = new THREE.Vector3( - + ( onClickPosition.x * 2 ) - 1, - - ( onClickPosition.y * 2 ) + 1 ); - const objects = orientedImages.map(i => i.mesh); - raycaster.setFromCamera( mouse, camera ); - const intersects = raycaster.intersectObjects( objects ); - let selectionChanged = false; - - if ( intersects.length > 0){ - //console.log(intersects); - const intersection = intersects[0]; - const orientedImage = intersection.object.orientedImage; - orientedImage.line.material.color.setRGB(1, 0, 0); - selectionChanged = hoveredElement !== orientedImage; - hoveredElement = orientedImage; - }else { - hoveredElement = null; - } - - let shouldRemoveClipVolume = clipVolume !== null && hoveredElement === null; - let shouldAddClipVolume = clipVolume === null && hoveredElement !== null; - - if(clipVolume !== null && (hoveredElement === null || selectionChanged)){ - // remove existing - viewer.scene.removePolygonClipVolume(clipVolume); - clipVolume = null; - } - - if(shouldAddClipVolume || selectionChanged){ - const img = hoveredElement; - const fov = cameraParams.fov; - const aspect = cameraParams.width / cameraParams.height; - const near = 1.0; - const far = 1000 * 1000; - const camera = new THREE.PerspectiveCamera(fov, aspect, near, far); - camera.rotation.order = viewer.scene.getActiveCamera().rotation.order; - camera.rotation.copy(img.mesh.rotation); - { - const mesh = img.mesh; - const dir = mesh.getWorldDirection(); - const pos = mesh.position; - const alpha = THREE.Math.degToRad(fov / 2); - const d = 0.5 / Math.tan(alpha); - const newCamPos = pos.clone().add(dir.clone().multiplyScalar(d)); - const newCamDir = pos.clone().sub(newCamPos); - const newCamTarget = new THREE.Vector3().addVectors( - newCamPos, - newCamDir.clone().multiplyScalar(viewer.getMoveSpeed())); - camera.position.copy(newCamPos); - } - let volume = new Potree.PolygonClipVolume(camera); - let m0 = new THREE.Mesh(); - let m1 = new THREE.Mesh(); - let m2 = new THREE.Mesh(); - let m3 = new THREE.Mesh(); - m0.position.set(-1, -1, 0); - m1.position.set( 1, -1, 0); - m2.position.set( 1, 1, 0); - m3.position.set(-1, 1, 0); - volume.markers.push(m0, m1, m2, m3); - volume.initialized = true; - - viewer.scene.addPolygonClipVolume(volume); - clipVolume = volume; - } - const tEnd = performance.now(); - //console.log(tEnd - tStart); - }; - - const moveToImage = (image) => { - console.log("move to image " + image.id); - - const mesh = image.mesh; - const newCamPos = image.position.clone(); - const newCamTarget = mesh.position.clone(); - - viewer.scene.view.setView(newCamPos, newCamTarget, 500, () => { - orientedImageControls.capture(image); - }); - - if(image.texture === null){ - - const target = image; - - const tmpImagePath = `${Potree.resourcePath}/images/loading.jpg`; - new THREE.TextureLoader().load(tmpImagePath, - (texture) => { - if(target.texture === null){ - target.texture = texture; - target.mesh.material.uniforms.tColor.value = texture; - mesh.material.needsUpdate = true; - } - } - ); - - const imagePath = `${imageParamsPath}/../${target.id}`; - new THREE.TextureLoader().load(imagePath, - (texture) => { - target.texture = texture; - target.mesh.material.uniforms.tColor.value = texture; - mesh.material.needsUpdate = true; - } - ); - - - } - }; - - const onMouseClick = (evt) => { - - if(orientedImageControls.hasSomethingCaptured()){ - return; - } - - if(hoveredElement){ - moveToImage(hoveredElement); - } - }; - viewer.renderer.domElement.addEventListener( 'mousemove', onMouseMove, false ); - viewer.renderer.domElement.addEventListener( 'mousedown', onMouseClick, false ); - - viewer.addEventListener("update", () => { - - for(const image of orientedImages){ - const world = image.mesh.matrixWorld; - const {width, height} = image; - const aspect = width / height; - - const camera = viewer.scene.getActiveCamera(); - - const imgPos = image.mesh.getWorldPosition(new THREE.Vector3()); - const camPos = camera.position; - const d = camPos.distanceTo(imgPos); - - const minSize = 1; // in degrees of fov - const a = THREE.Math.degToRad(minSize); - let r = d * Math.tan(a); - r = Math.max(r, 1); - - - image.mesh.scale.set(r * aspect, r, 1); - image.line.scale.set(r * aspect, r, 1); - - image.mesh.material.uniforms.uNear.value = camera.near; - - } - - }); - - const images = new OrientedImages(); - images.node = sceneNode; - images.cameraParamsPath = cameraParamsPath; - images.imageParamsPath = imageParamsPath; - images.cameraParams = cameraParams; - images.imageParams = imageParams; - images.images = orientedImages; - - Potree.debug.moveToImage = moveToImage; - - return images; - } - } - - let sg = new THREE.SphereGeometry(1, 8, 8); - let sgHigh = new THREE.SphereGeometry(1, 128, 128); - - let sm = new THREE.MeshBasicMaterial({side: THREE.BackSide}); - let smHovered = new THREE.MeshBasicMaterial({side: THREE.BackSide, color: 0xff0000}); - - let raycaster = new THREE.Raycaster(); - let currentlyHovered = null; - - let previousView = { - controls: null, - position: null, - target: null, - }; - - class Image360{ - - constructor(file, time, longitude, latitude, altitude, course, pitch, roll){ - this.file = file; - this.time = time; - this.longitude = longitude; - this.latitude = latitude; - this.altitude = altitude; - this.course = course; - this.pitch = pitch; - this.roll = roll; - this.mesh = null; - } - }; - - class Images360 extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - - this.selectingEnabled = true; - - this.images = []; - this.node = new THREE.Object3D(); - - this.sphere = new THREE.Mesh(sgHigh, sm); - this.sphere.visible = false; - this.sphere.scale.set(1000, 1000, 1000); - this.node.add(this.sphere); - this._visible = true; - // this.node.add(label); - - this.focusedImage = null; - - let elUnfocus = document.createElement("input"); - elUnfocus.type = "button"; - elUnfocus.value = "unfocus"; - elUnfocus.style.position = "absolute"; - elUnfocus.style.right = "10px"; - elUnfocus.style.bottom = "10px"; - elUnfocus.style.zIndex = "10000"; - elUnfocus.style.fontSize = "2em"; - elUnfocus.addEventListener("click", () => this.unfocus()); - this.elUnfocus = elUnfocus; - - this.domRoot = viewer.renderer.domElement.parentElement; - this.domRoot.appendChild(elUnfocus); - this.elUnfocus.style.display = "none"; - - viewer.addEventListener("update", () => { - this.update(viewer); - }); - viewer.inputHandler.addInputListener(this); - - this.addEventListener("mousedown", () => { - if(currentlyHovered){ - this.focus(currentlyHovered.image360); - } - }); - - }; - - set visible(visible){ - if(this._visible === visible){ - return; - } - - - for(const image of this.images){ - image.mesh.visible = visible && (this.focusedImage == null); - } - - this.sphere.visible = visible && (this.focusedImage != null); - this._visible = visible; - this.dispatchEvent({ - type: "visibility_changed", - images: this, - }); - } - - get visible(){ - return this._visible; - } - - focus(image360){ - if(this.focusedImage !== null){ - this.unfocus(); - } - - previousView = { - controls: this.viewer.controls, - position: this.viewer.scene.view.position.clone(), - target: viewer.scene.view.getPivot(), - }; - - this.viewer.setControls(this.viewer.orbitControls); - this.viewer.orbitControls.doubleClockZoomEnabled = false; - - for(let image of this.images){ - image.mesh.visible = false; - } - - this.selectingEnabled = false; - - this.sphere.visible = false; - - this.load(image360).then( () => { - this.sphere.visible = true; - this.sphere.material.map = image360.texture; - this.sphere.material.needsUpdate = true; - }); - - { // orientation - let {course, pitch, roll} = image360; - this.sphere.rotation.set( - THREE.Math.degToRad(+roll + 90), - THREE.Math.degToRad(-pitch), - THREE.Math.degToRad(-course + 90), - "ZYX" - ); - } - - this.sphere.position.set(...image360.position); - - let target = new THREE.Vector3(...image360.position); - let dir = target.clone().sub(viewer.scene.view.position).normalize(); - let move = dir.multiplyScalar(0.000001); - let newCamPos = target.clone().sub(move); - - viewer.scene.view.setView( - newCamPos, - target, - 500 - ); - - this.focusedImage = image360; - - this.elUnfocus.style.display = ""; - } - - unfocus(){ - this.selectingEnabled = true; - - for(let image of this.images){ - image.mesh.visible = true; - } - - let image = this.focusedImage; - - if(image === null){ - return; - } - - - this.sphere.material.map = null; - this.sphere.material.needsUpdate = true; - this.sphere.visible = false; - - let pos = viewer.scene.view.position; - let target = viewer.scene.view.getPivot(); - let dir = target.clone().sub(pos).normalize(); - let move = dir.multiplyScalar(10); - let newCamPos = target.clone().sub(move); - - viewer.orbitControls.doubleClockZoomEnabled = true; - viewer.setControls(previousView.controls); - - viewer.scene.view.setView( - previousView.position, - previousView.target, - 500 - ); - - - this.focusedImage = null; - - this.elUnfocus.style.display = "none"; - } - - load(image360){ - - return new Promise(resolve => { - let texture = new THREE.TextureLoader().load(image360.file, resolve); - texture.wrapS = THREE.RepeatWrapping; - texture.repeat.x = -1; - - image360.texture = texture; - }); - - } - - handleHovering(){ - let mouse = viewer.inputHandler.mouse; - let camera = viewer.scene.getActiveCamera(); - let domElement = viewer.renderer.domElement; - - let ray = Potree.Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - - // let tStart = performance.now(); - raycaster.ray.copy(ray); - let intersections = raycaster.intersectObjects(this.node.children); - - if(intersections.length === 0){ - // label.visible = false; - - return; - } - - let intersection = intersections[0]; - currentlyHovered = intersection.object; - currentlyHovered.material = smHovered; - - //label.visible = true; - //label.setText(currentlyHovered.image360.file); - //currentlyHovered.getWorldPosition(label.position); - } - - update(){ - - let {viewer} = this; - - if(currentlyHovered){ - currentlyHovered.material = sm; - currentlyHovered = null; - } - - if(this.selectingEnabled){ - this.handleHovering(); - } - - } - - }; - - - class Images360Loader{ - - static async load(url, viewer, params = {}){ - - if(!params.transform){ - params.transform = { - forward: a => a, - }; - } - - let response = await fetch(`${url}/coordinates.txt`); - let text = await response.text(); - - let lines = text.split(/\r?\n/); - let coordinateLines = lines.slice(1); - - let images360 = new Images360(viewer); - - for(let line of coordinateLines){ - - if(line.trim().length === 0){ - continue; - } - - let tokens = line.split(/\t/); - - let [filename, time, long, lat, alt, course, pitch, roll] = tokens; - time = parseFloat(time); - long = parseFloat(long); - lat = parseFloat(lat); - alt = parseFloat(alt); - course = parseFloat(course); - pitch = parseFloat(pitch); - roll = parseFloat(roll); - - filename = filename.replace(/"/g, ""); - let file = `${url}/${filename}`; - - let image360 = new Image360(file, time, long, lat, alt, course, pitch, roll); - - let xy = params.transform.forward([long, lat]); - let position = [...xy, alt]; - image360.position = position; - - images360.images.push(image360); - } - - Images360Loader.createSceneNodes(images360, params.transform); - - return images360; - - } - - static createSceneNodes(images360, transform){ - - for(let image360 of images360.images){ - let {longitude, latitude, altitude} = image360; - let xy = transform.forward([longitude, latitude]); - - let mesh = new THREE.Mesh(sg, sm); - mesh.position.set(...xy, altitude); - mesh.scale.set(1, 1, 1); - mesh.material.transparent = true; - mesh.material.opacity = 0.75; - mesh.image360 = image360; - - { // orientation - var {course, pitch, roll} = image360; - mesh.rotation.set( - THREE.Math.degToRad(+roll + 90), - THREE.Math.degToRad(-pitch), - THREE.Math.degToRad(-course + 90), - "ZYX" - ); - } - - images360.node.add(mesh); - - image360.mesh = mesh; - } - } - - - - }; - - // This is a generated file. Do not edit. - var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; - var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; - var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; - - var unicode = { - Space_Separator: Space_Separator, - ID_Start: ID_Start, - ID_Continue: ID_Continue - }; - - var util = { - isSpaceSeparator (c) { - return typeof c === 'string' && unicode.Space_Separator.test(c) - }, - - isIdStartChar (c) { - return typeof c === 'string' && ( - (c >= 'a' && c <= 'z') || - (c >= 'A' && c <= 'Z') || - (c === '$') || (c === '_') || - unicode.ID_Start.test(c) - ) - }, - - isIdContinueChar (c) { - return typeof c === 'string' && ( - (c >= 'a' && c <= 'z') || - (c >= 'A' && c <= 'Z') || - (c >= '0' && c <= '9') || - (c === '$') || (c === '_') || - (c === '\u200C') || (c === '\u200D') || - unicode.ID_Continue.test(c) - ) - }, - - isDigit (c) { - return typeof c === 'string' && /[0-9]/.test(c) - }, - - isHexDigit (c) { - return typeof c === 'string' && /[0-9A-Fa-f]/.test(c) - }, - }; - - let source; - let parseState; - let stack; - let pos; - let line; - let column; - let token; - let key; - let root; - - var parse = function parse (text, reviver) { - source = String(text); - parseState = 'start'; - stack = []; - pos = 0; - line = 1; - column = 0; - token = undefined; - key = undefined; - root = undefined; - - do { - token = lex(); - - // This code is unreachable. - // if (!parseStates[parseState]) { - // throw invalidParseState() - // } - - parseStates[parseState](); - } while (token.type !== 'eof') - - if (typeof reviver === 'function') { - return internalize({'': root}, '', reviver) - } - - return root - }; - - function internalize (holder, name, reviver) { - const value = holder[name]; - if (value != null && typeof value === 'object') { - for (const key in value) { - const replacement = internalize(value, key, reviver); - if (replacement === undefined) { - delete value[key]; - } else { - value[key] = replacement; - } - } - } - - return reviver.call(holder, name, value) - } - - let lexState; - let buffer; - let doubleQuote; - let sign; - let c; - - function lex () { - lexState = 'default'; - buffer = ''; - doubleQuote = false; - sign = 1; - - for (;;) { - c = peek(); - - // This code is unreachable. - // if (!lexStates[lexState]) { - // throw invalidLexState(lexState) - // } - - const token = lexStates[lexState](); - if (token) { - return token - } - } - } - - function peek () { - if (source[pos]) { - return String.fromCodePoint(source.codePointAt(pos)) - } - } - - function read () { - const c = peek(); - - if (c === '\n') { - line++; - column = 0; - } else if (c) { - column += c.length; - } else { - column++; - } - - if (c) { - pos += c.length; - } - - return c - } - - const lexStates = { - default () { - switch (c) { - case '\t': - case '\v': - case '\f': - case ' ': - case '\u00A0': - case '\uFEFF': - case '\n': - case '\r': - case '\u2028': - case '\u2029': - read(); - return - - case '/': - read(); - lexState = 'comment'; - return - - case undefined: - read(); - return newToken('eof') - } - - if (util.isSpaceSeparator(c)) { - read(); - return - } - - // This code is unreachable. - // if (!lexStates[parseState]) { - // throw invalidLexState(parseState) - // } - - return lexStates[parseState]() - }, - - comment () { - switch (c) { - case '*': - read(); - lexState = 'multiLineComment'; - return - - case '/': - read(); - lexState = 'singleLineComment'; - return - } - - throw invalidChar(read()) - }, - - multiLineComment () { - switch (c) { - case '*': - read(); - lexState = 'multiLineCommentAsterisk'; - return - - case undefined: - throw invalidChar(read()) - } - - read(); - }, - - multiLineCommentAsterisk () { - switch (c) { - case '*': - read(); - return - - case '/': - read(); - lexState = 'default'; - return - - case undefined: - throw invalidChar(read()) - } - - read(); - lexState = 'multiLineComment'; - }, - - singleLineComment () { - switch (c) { - case '\n': - case '\r': - case '\u2028': - case '\u2029': - read(); - lexState = 'default'; - return - - case undefined: - read(); - return newToken('eof') - } - - read(); - }, - - value () { - switch (c) { - case '{': - case '[': - return newToken('punctuator', read()) - - case 'n': - read(); - literal('ull'); - return newToken('null', null) - - case 't': - read(); - literal('rue'); - return newToken('boolean', true) - - case 'f': - read(); - literal('alse'); - return newToken('boolean', false) - - case '-': - case '+': - if (read() === '-') { - sign = -1; - } - - lexState = 'sign'; - return - - case '.': - buffer = read(); - lexState = 'decimalPointLeading'; - return - - case '0': - buffer = read(); - lexState = 'zero'; - return - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - buffer = read(); - lexState = 'decimalInteger'; - return - - case 'I': - read(); - literal('nfinity'); - return newToken('numeric', Infinity) - - case 'N': - read(); - literal('aN'); - return newToken('numeric', NaN) - - case '"': - case "'": - doubleQuote = (read() === '"'); - buffer = ''; - lexState = 'string'; - return - } - - throw invalidChar(read()) - }, - - identifierNameStartEscape () { - if (c !== 'u') { - throw invalidChar(read()) - } - - read(); - const u = unicodeEscape(); - switch (u) { - case '$': - case '_': - break - - default: - if (!util.isIdStartChar(u)) { - throw invalidIdentifier() - } - - break - } - - buffer += u; - lexState = 'identifierName'; - }, - - identifierName () { - switch (c) { - case '$': - case '_': - case '\u200C': - case '\u200D': - buffer += read(); - return - - case '\\': - read(); - lexState = 'identifierNameEscape'; - return - } - - if (util.isIdContinueChar(c)) { - buffer += read(); - return - } - - return newToken('identifier', buffer) - }, - - identifierNameEscape () { - if (c !== 'u') { - throw invalidChar(read()) - } - - read(); - const u = unicodeEscape(); - switch (u) { - case '$': - case '_': - case '\u200C': - case '\u200D': - break - - default: - if (!util.isIdContinueChar(u)) { - throw invalidIdentifier() - } - - break - } - - buffer += u; - lexState = 'identifierName'; - }, - - sign () { - switch (c) { - case '.': - buffer = read(); - lexState = 'decimalPointLeading'; - return - - case '0': - buffer = read(); - lexState = 'zero'; - return - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - buffer = read(); - lexState = 'decimalInteger'; - return - - case 'I': - read(); - literal('nfinity'); - return newToken('numeric', sign * Infinity) - - case 'N': - read(); - literal('aN'); - return newToken('numeric', NaN) - } - - throw invalidChar(read()) - }, - - zero () { - switch (c) { - case '.': - buffer += read(); - lexState = 'decimalPoint'; - return - - case 'e': - case 'E': - buffer += read(); - lexState = 'decimalExponent'; - return - - case 'x': - case 'X': - buffer += read(); - lexState = 'hexadecimal'; - return - } - - return newToken('numeric', sign * 0) - }, - - decimalInteger () { - switch (c) { - case '.': - buffer += read(); - lexState = 'decimalPoint'; - return - - case 'e': - case 'E': - buffer += read(); - lexState = 'decimalExponent'; - return - } - - if (util.isDigit(c)) { - buffer += read(); - return - } - - return newToken('numeric', sign * Number(buffer)) - }, - - decimalPointLeading () { - if (util.isDigit(c)) { - buffer += read(); - lexState = 'decimalFraction'; - return - } - - throw invalidChar(read()) - }, - - decimalPoint () { - switch (c) { - case 'e': - case 'E': - buffer += read(); - lexState = 'decimalExponent'; - return - } - - if (util.isDigit(c)) { - buffer += read(); - lexState = 'decimalFraction'; - return - } - - return newToken('numeric', sign * Number(buffer)) - }, - - decimalFraction () { - switch (c) { - case 'e': - case 'E': - buffer += read(); - lexState = 'decimalExponent'; - return - } - - if (util.isDigit(c)) { - buffer += read(); - return - } - - return newToken('numeric', sign * Number(buffer)) - }, - - decimalExponent () { - switch (c) { - case '+': - case '-': - buffer += read(); - lexState = 'decimalExponentSign'; - return - } - - if (util.isDigit(c)) { - buffer += read(); - lexState = 'decimalExponentInteger'; - return - } - - throw invalidChar(read()) - }, - - decimalExponentSign () { - if (util.isDigit(c)) { - buffer += read(); - lexState = 'decimalExponentInteger'; - return - } - - throw invalidChar(read()) - }, - - decimalExponentInteger () { - if (util.isDigit(c)) { - buffer += read(); - return - } - - return newToken('numeric', sign * Number(buffer)) - }, - - hexadecimal () { - if (util.isHexDigit(c)) { - buffer += read(); - lexState = 'hexadecimalInteger'; - return - } - - throw invalidChar(read()) - }, - - hexadecimalInteger () { - if (util.isHexDigit(c)) { - buffer += read(); - return - } - - return newToken('numeric', sign * Number(buffer)) - }, - - string () { - switch (c) { - case '\\': - read(); - buffer += escape(); - return - - case '"': - if (doubleQuote) { - read(); - return newToken('string', buffer) - } - - buffer += read(); - return - - case "'": - if (!doubleQuote) { - read(); - return newToken('string', buffer) - } - - buffer += read(); - return - - case '\n': - case '\r': - throw invalidChar(read()) - - case '\u2028': - case '\u2029': - separatorChar(c); - break - - case undefined: - throw invalidChar(read()) - } - - buffer += read(); - }, - - start () { - switch (c) { - case '{': - case '[': - return newToken('punctuator', read()) - - // This code is unreachable since the default lexState handles eof. - // case undefined: - // return newToken('eof') - } - - lexState = 'value'; - }, - - beforePropertyName () { - switch (c) { - case '$': - case '_': - buffer = read(); - lexState = 'identifierName'; - return - - case '\\': - read(); - lexState = 'identifierNameStartEscape'; - return - - case '}': - return newToken('punctuator', read()) - - case '"': - case "'": - doubleQuote = (read() === '"'); - lexState = 'string'; - return - } - - if (util.isIdStartChar(c)) { - buffer += read(); - lexState = 'identifierName'; - return - } - - throw invalidChar(read()) - }, - - afterPropertyName () { - if (c === ':') { - return newToken('punctuator', read()) - } - - throw invalidChar(read()) - }, - - beforePropertyValue () { - lexState = 'value'; - }, - - afterPropertyValue () { - switch (c) { - case ',': - case '}': - return newToken('punctuator', read()) - } - - throw invalidChar(read()) - }, - - beforeArrayValue () { - if (c === ']') { - return newToken('punctuator', read()) - } - - lexState = 'value'; - }, - - afterArrayValue () { - switch (c) { - case ',': - case ']': - return newToken('punctuator', read()) - } - - throw invalidChar(read()) - }, - - end () { - // This code is unreachable since it's handled by the default lexState. - // if (c === undefined) { - // read() - // return newToken('eof') - // } - - throw invalidChar(read()) - }, - }; - - function newToken (type, value) { - return { - type, - value, - line, - column, - } - } - - function literal (s) { - for (const c of s) { - const p = peek(); - - if (p !== c) { - throw invalidChar(read()) - } - - read(); - } - } - - function escape () { - const c = peek(); - switch (c) { - case 'b': - read(); - return '\b' - - case 'f': - read(); - return '\f' - - case 'n': - read(); - return '\n' - - case 'r': - read(); - return '\r' - - case 't': - read(); - return '\t' - - case 'v': - read(); - return '\v' - - case '0': - read(); - if (util.isDigit(peek())) { - throw invalidChar(read()) - } - - return '\0' - - case 'x': - read(); - return hexEscape() - - case 'u': - read(); - return unicodeEscape() - - case '\n': - case '\u2028': - case '\u2029': - read(); - return '' - - case '\r': - read(); - if (peek() === '\n') { - read(); - } - - return '' - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - throw invalidChar(read()) - - case undefined: - throw invalidChar(read()) - } - - return read() - } - - function hexEscape () { - let buffer = ''; - let c = peek(); - - if (!util.isHexDigit(c)) { - throw invalidChar(read()) - } - - buffer += read(); - - c = peek(); - if (!util.isHexDigit(c)) { - throw invalidChar(read()) - } - - buffer += read(); - - return String.fromCodePoint(parseInt(buffer, 16)) - } - - function unicodeEscape () { - let buffer = ''; - let count = 4; - - while (count-- > 0) { - const c = peek(); - if (!util.isHexDigit(c)) { - throw invalidChar(read()) - } - - buffer += read(); - } - - return String.fromCodePoint(parseInt(buffer, 16)) - } - - const parseStates = { - start () { - if (token.type === 'eof') { - throw invalidEOF() - } - - push(); - }, - - beforePropertyName () { - switch (token.type) { - case 'identifier': - case 'string': - key = token.value; - parseState = 'afterPropertyName'; - return - - case 'punctuator': - // This code is unreachable since it's handled by the lexState. - // if (token.value !== '}') { - // throw invalidToken() - // } - - pop(); - return - - case 'eof': - throw invalidEOF() - } - - // This code is unreachable since it's handled by the lexState. - // throw invalidToken() - }, - - afterPropertyName () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'punctuator' || token.value !== ':') { - // throw invalidToken() - // } - - if (token.type === 'eof') { - throw invalidEOF() - } - - parseState = 'beforePropertyValue'; - }, - - beforePropertyValue () { - if (token.type === 'eof') { - throw invalidEOF() - } - - push(); - }, - - beforeArrayValue () { - if (token.type === 'eof') { - throw invalidEOF() - } - - if (token.type === 'punctuator' && token.value === ']') { - pop(); - return - } - - push(); - }, - - afterPropertyValue () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'punctuator') { - // throw invalidToken() - // } - - if (token.type === 'eof') { - throw invalidEOF() - } - - switch (token.value) { - case ',': - parseState = 'beforePropertyName'; - return - - case '}': - pop(); - } - - // This code is unreachable since it's handled by the lexState. - // throw invalidToken() - }, - - afterArrayValue () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'punctuator') { - // throw invalidToken() - // } - - if (token.type === 'eof') { - throw invalidEOF() - } - - switch (token.value) { - case ',': - parseState = 'beforeArrayValue'; - return - - case ']': - pop(); - } - - // This code is unreachable since it's handled by the lexState. - // throw invalidToken() - }, - - end () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'eof') { - // throw invalidToken() - // } - }, - }; - - function push () { - let value; - - switch (token.type) { - case 'punctuator': - switch (token.value) { - case '{': - value = {}; - break - - case '[': - value = []; - break - } - - break - - case 'null': - case 'boolean': - case 'numeric': - case 'string': - value = token.value; - break - - // This code is unreachable. - // default: - // throw invalidToken() - } - - if (root === undefined) { - root = value; - } else { - const parent = stack[stack.length - 1]; - if (Array.isArray(parent)) { - parent.push(value); - } else { - parent[key] = value; - } - } - - if (value !== null && typeof value === 'object') { - stack.push(value); - - if (Array.isArray(value)) { - parseState = 'beforeArrayValue'; - } else { - parseState = 'beforePropertyName'; - } - } else { - const current = stack[stack.length - 1]; - if (current == null) { - parseState = 'end'; - } else if (Array.isArray(current)) { - parseState = 'afterArrayValue'; - } else { - parseState = 'afterPropertyValue'; - } - } - } - - function pop () { - stack.pop(); - - const current = stack[stack.length - 1]; - if (current == null) { - parseState = 'end'; - } else if (Array.isArray(current)) { - parseState = 'afterArrayValue'; - } else { - parseState = 'afterPropertyValue'; - } - } - - // This code is unreachable. - // function invalidParseState () { - // return new Error(`JSON5: invalid parse state '${parseState}'`) - // } - - // This code is unreachable. - // function invalidLexState (state) { - // return new Error(`JSON5: invalid lex state '${state}'`) - // } - - function invalidChar (c) { - if (c === undefined) { - return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) - } - - return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) - } - - function invalidEOF () { - return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) - } - - // This code is unreachable. - // function invalidToken () { - // if (token.type === 'eof') { - // return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) - // } - - // const c = String.fromCodePoint(token.value.codePointAt(0)) - // return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) - // } - - function invalidIdentifier () { - column -= 5; - return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`) - } - - function separatorChar (c) { - console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`); - } - - function formatChar (c) { - const replacements = { - "'": "\\'", - '"': '\\"', - '\\': '\\\\', - '\b': '\\b', - '\f': '\\f', - '\n': '\\n', - '\r': '\\r', - '\t': '\\t', - '\v': '\\v', - '\0': '\\0', - '\u2028': '\\u2028', - '\u2029': '\\u2029', - }; - - if (replacements[c]) { - return replacements[c] - } - - if (c < ' ') { - const hexString = c.charCodeAt(0).toString(16); - return '\\x' + ('00' + hexString).substring(hexString.length) - } - - return c - } - - function syntaxError (message) { - const err = new SyntaxError(message); - err.lineNumber = line; - err.columnNumber = column; - return err - } - - var stringify = function stringify (value, replacer, space) { - const stack = []; - let indent = ''; - let propertyList; - let replacerFunc; - let gap = ''; - let quote; - - if ( - replacer != null && - typeof replacer === 'object' && - !Array.isArray(replacer) - ) { - space = replacer.space; - quote = replacer.quote; - replacer = replacer.replacer; - } - - if (typeof replacer === 'function') { - replacerFunc = replacer; - } else if (Array.isArray(replacer)) { - propertyList = []; - for (const v of replacer) { - let item; - - if (typeof v === 'string') { - item = v; - } else if ( - typeof v === 'number' || - v instanceof String || - v instanceof Number - ) { - item = String(v); - } - - if (item !== undefined && propertyList.indexOf(item) < 0) { - propertyList.push(item); - } - } - } - - if (space instanceof Number) { - space = Number(space); - } else if (space instanceof String) { - space = String(space); - } - - if (typeof space === 'number') { - if (space > 0) { - space = Math.min(10, Math.floor(space)); - gap = ' '.substr(0, space); - } - } else if (typeof space === 'string') { - gap = space.substr(0, 10); - } - - return serializeProperty('', {'': value}) - - function serializeProperty (key, holder) { - let value = holder[key]; - if (value != null) { - if (typeof value.toJSON5 === 'function') { - value = value.toJSON5(key); - } else if (typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - } - - if (replacerFunc) { - value = replacerFunc.call(holder, key, value); - } - - if (value instanceof Number) { - value = Number(value); - } else if (value instanceof String) { - value = String(value); - } else if (value instanceof Boolean) { - value = value.valueOf(); - } - - switch (value) { - case null: return 'null' - case true: return 'true' - case false: return 'false' - } - - if (typeof value === 'string') { - return quoteString(value, false) - } - - if (typeof value === 'number') { - return String(value) - } - - if (typeof value === 'object') { - return Array.isArray(value) ? serializeArray(value) : serializeObject(value) - } - - return undefined - } - - function quoteString (value) { - const quotes = { - "'": 0.1, - '"': 0.2, - }; - - const replacements = { - "'": "\\'", - '"': '\\"', - '\\': '\\\\', - '\b': '\\b', - '\f': '\\f', - '\n': '\\n', - '\r': '\\r', - '\t': '\\t', - '\v': '\\v', - '\0': '\\0', - '\u2028': '\\u2028', - '\u2029': '\\u2029', - }; - - let product = ''; - - for (let i = 0; i < value.length; i++) { - const c = value[i]; - switch (c) { - case "'": - case '"': - quotes[c]++; - product += c; - continue - - case '\0': - if (util.isDigit(value[i + 1])) { - product += '\\x00'; - continue - } - } - - if (replacements[c]) { - product += replacements[c]; - continue - } - - if (c < ' ') { - let hexString = c.charCodeAt(0).toString(16); - product += '\\x' + ('00' + hexString).substring(hexString.length); - continue - } - - product += c; - } - - const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b); - - product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]); - - return quoteChar + product + quoteChar - } - - function serializeObject (value) { - if (stack.indexOf(value) >= 0) { - throw TypeError('Converting circular structure to JSON5') - } - - stack.push(value); - - let stepback = indent; - indent = indent + gap; - - let keys = propertyList || Object.keys(value); - let partial = []; - for (const key of keys) { - const propertyString = serializeProperty(key, value); - if (propertyString !== undefined) { - let member = serializeKey(key) + ':'; - if (gap !== '') { - member += ' '; - } - member += propertyString; - partial.push(member); - } - } - - let final; - if (partial.length === 0) { - final = '{}'; - } else { - let properties; - if (gap === '') { - properties = partial.join(','); - final = '{' + properties + '}'; - } else { - let separator = ',\n' + indent; - properties = partial.join(separator); - final = '{\n' + indent + properties + ',\n' + stepback + '}'; - } - } - - stack.pop(); - indent = stepback; - return final - } - - function serializeKey (key) { - if (key.length === 0) { - return quoteString(key, true) - } - - const firstChar = String.fromCodePoint(key.codePointAt(0)); - if (!util.isIdStartChar(firstChar)) { - return quoteString(key, true) - } - - for (let i = firstChar.length; i < key.length; i++) { - if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { - return quoteString(key, true) - } - } - - return key - } - - function serializeArray (value) { - if (stack.indexOf(value) >= 0) { - throw TypeError('Converting circular structure to JSON5') - } - - stack.push(value); - - let stepback = indent; - indent = indent + gap; - - let partial = []; - for (let i = 0; i < value.length; i++) { - const propertyString = serializeProperty(String(i), value); - partial.push((propertyString !== undefined) ? propertyString : 'null'); - } - - let final; - if (partial.length === 0) { - final = '[]'; - } else { - if (gap === '') { - let properties = partial.join(','); - final = '[' + properties + ']'; - } else { - let separator = ',\n' + indent; - let properties = partial.join(separator); - final = '[\n' + indent + properties + ',\n' + stepback + ']'; - } - } - - stack.pop(); - indent = stepback; - return final - } - }; - - const JSON5 = { - parse, - stringify, - }; - - var lib = JSON5; - - class Sidebar{ - - constructor(viewer){ - this.viewer = viewer; - - this.measuringTool = viewer.measuringTool; - this.profileTool = viewer.profileTool; - this.volumeTool = viewer.volumeTool; - - this.dom = $("#sidebar_root"); - } - - createToolIcon(icon, title, callback){ - let element = $(` - - `); - - element.click(callback); - - return element; - } - - init(){ - - this.initAccordion(); - this.initAppearance(); - this.initToolbar(); - this.initScene(); - this.initNavigation(); - this.initFilters(); - this.initClippingTool(); - this.initSettings(); - - $('#potree_version_number').html(Potree.version.major + "." + Potree.version.minor + Potree.version.suffix); - } - - - - initToolbar(){ - - // ANGLE - let elToolbar = $('#tools'); - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/angle.png', - '[title]tt.angle_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: false, - showAngles: true, - showArea: false, - closed: true, - maxMarkers: 3, - name: 'Angle'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // POINT - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/point.svg', - '[title]tt.point_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: false, - showAngles: false, - showCoordinates: true, - showArea: false, - closed: true, - maxMarkers: 1, - name: 'Point'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // DISTANCE - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/distance.svg', - '[title]tt.distance_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: true, - showArea: false, - closed: false, - name: 'Distance'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // HEIGHT - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/height.svg', - '[title]tt.height_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: false, - showHeight: true, - showArea: false, - closed: false, - maxMarkers: 2, - name: 'Height'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // CIRCLE - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/circle.svg', - '[title]tt.circle_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: false, - showHeight: false, - showArea: false, - showCircle: true, - showEdges: false, - closed: false, - maxMarkers: 3, - name: 'Circle'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // AZIMUTH - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/azimuth.svg', - 'Azimuth', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: false, - showHeight: false, - showArea: false, - showCircle: false, - showEdges: false, - showAzimuth: true, - closed: false, - maxMarkers: 2, - name: 'Azimuth'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // AREA - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/area.svg', - '[title]tt.area_measurement', - () => { - $('#menu_measurements').next().slideDown(); - let measurement = this.measuringTool.startInsertion({ - showDistances: true, - showArea: true, - closed: true, - name: 'Area'}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // VOLUME - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/volume.svg', - '[title]tt.volume_measurement', - () => { - let volume = this.volumeTool.startInsertion(); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === volume.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // SPHERE VOLUME - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/sphere_distances.svg', - '[title]tt.volume_measurement', - () => { - let volume = this.volumeTool.startInsertion({type: SphereVolume}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === volume.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // PROFILE - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/profile.svg', - '[title]tt.height_profile', - () => { - $('#menu_measurements').next().slideDown(); ; - let profile = this.profileTool.startInsertion(); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === profile.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // ANNOTATION - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/annotation.svg', - '[title]tt.annotation', - () => { - $('#menu_measurements').next().slideDown(); ; - let annotation = this.viewer.annotationTool.startInsertion(); - - let annotationsRoot = $("#jstree_scene").jstree().get_json("annotations"); - let jsonNode = annotationsRoot.children.find(child => child.data.uuid === annotation.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // REMOVE ALL - elToolbar.append(this.createToolIcon( - Potree.resourcePath + '/icons/reset_tools.svg', - '[title]tt.remove_all_measurement', - () => { - this.viewer.scene.removeAllMeasurements(); - } - )); - - - { // SHOW / HIDE Measurements - let elShow = $("#measurement_options_show"); - elShow.selectgroup({title: "Show/Hide labels"}); - - elShow.find("input").click( (e) => { - const show = e.target.value === "SHOW"; - this.measuringTool.showLabels = show; - }); - - let currentShow = this.measuringTool.showLabels ? "SHOW" : "HIDE"; - elShow.find(`input[value=${currentShow}]`).trigger("click"); - } - } - - initScene(){ - - let elScene = $("#menu_scene"); - let elObjects = elScene.next().find("#scene_objects"); - let elProperties = elScene.next().find("#scene_object_properties"); - - - { - let elExport = elScene.next().find("#scene_export"); - - let geoJSONIcon = `${Potree.resourcePath}/icons/file_geojson.svg`; - let dxfIcon = `${Potree.resourcePath}/icons/file_dxf.svg`; - let potreeIcon = `${Potree.resourcePath}/icons/file_potree.svg`; - - elExport.append(` - Export:
        - - - - `); - - let elDownloadJSON = elExport.find("img[name=geojson_export_button]").parent(); - elDownloadJSON.click( (event) => { - let scene = this.viewer.scene; - let measurements = [...scene.measurements, ...scene.profiles, ...scene.volumes]; - - if(measurements.length > 0){ - let geoJson = GeoJSONExporter.toString(measurements); - - let url = window.URL.createObjectURL(new Blob([geoJson], {type: 'data:application/octet-stream'})); - elDownloadJSON.attr('href', url); - }else { - this.viewer.postError("no measurements to export"); - event.preventDefault(); - } - }); - - let elDownloadDXF = elExport.find("img[name=dxf_export_button]").parent(); - elDownloadDXF.click( (event) => { - let scene = this.viewer.scene; - let measurements = [...scene.measurements, ...scene.profiles, ...scene.volumes]; - - if(measurements.length > 0){ - let dxf = DXFExporter.toString(measurements); - - let url = window.URL.createObjectURL(new Blob([dxf], {type: 'data:application/octet-stream'})); - elDownloadDXF.attr('href', url); - }else { - this.viewer.postError("no measurements to export"); - event.preventDefault(); - } - }); - - let elDownloadPotree = elExport.find("img[name=potree_export_button]").parent(); - elDownloadPotree.click( (event) => { - - let data = Potree.saveProject(this.viewer); - let dataString = lib.stringify(data, null, "\t"); - - let url = window.URL.createObjectURL(new Blob([dataString], {type: 'data:application/octet-stream'})); - elDownloadPotree.attr('href', url); - }); - } - - let propertiesPanel = new PropertiesPanel(elProperties, this.viewer); - propertiesPanel.setScene(this.viewer.scene); - - localStorage.removeItem('jstree'); - - let tree = $(`
        `); - elObjects.append(tree); - - tree.jstree({ - 'plugins': ["checkbox", "state"], - 'core': { - "dblclick_toggle": false, - "state": { - "checked" : true - }, - 'check_callback': true, - "expand_selected_onload": true - }, - "checkbox" : { - "keep_selected_style": true, - "three_state": false, - "whole_node": false, - "tie_selection": false, - }, - }); - - let createNode = (parent, text, icon, object) => { - let nodeID = tree.jstree('create_node', parent, { - "text": text, - "icon": icon, - "data": object - }, - "last", false, false); - - if(object.visible){ - tree.jstree('check_node', nodeID); - }else { - tree.jstree('uncheck_node', nodeID); - } - - return nodeID; - }; - - let pcID = tree.jstree('create_node', "#", { "text": "Point Clouds", "id": "pointclouds"}, "last", false, false); - let measurementID = tree.jstree('create_node', "#", { "text": "Measurements", "id": "measurements" }, "last", false, false); - let annotationsID = tree.jstree('create_node', "#", { "text": "Annotations", "id": "annotations" }, "last", false, false); - let otherID = tree.jstree('create_node', "#", { "text": "Other", "id": "other" }, "last", false, false); - let vectorsID = tree.jstree('create_node', "#", { "text": "Vectors", "id": "vectors" }, "last", false, false); - let imagesID = tree.jstree('create_node', "#", { "text": " Images", "id": "images" }, "last", false, false); - - tree.jstree("check_node", pcID); - tree.jstree("check_node", measurementID); - tree.jstree("check_node", annotationsID); - tree.jstree("check_node", otherID); - tree.jstree("check_node", vectorsID); - tree.jstree("check_node", imagesID); - - tree.on('create_node.jstree', (e, data) => { - tree.jstree("open_all"); - }); - - tree.on("select_node.jstree", (e, data) => { - let object = data.node.data; - propertiesPanel.set(object); - - this.viewer.inputHandler.deselectAll(); - - if(object instanceof Volume){ - this.viewer.inputHandler.toggleSelection(object); - } - - $(this.viewer.renderer.domElement).focus(); - }); - - tree.on("deselect_node.jstree", (e, data) => { - propertiesPanel.set(null); - }); - - tree.on("delete_node.jstree", (e, data) => { - propertiesPanel.set(null); - }); - - tree.on('dblclick','.jstree-anchor', (e) => { - - let instance = $.jstree.reference(e.target); - let node = instance.get_node(e.target); - let object = node.data; - - // ignore double click on checkbox - if(e.target.classList.contains("jstree-checkbox")){ - return; - } - - if(object instanceof PointCloudTree){ - let box = this.viewer.getBoundingBox([object]); - let node = new THREE.Object3D(); - node.boundingBox = box; - this.viewer.zoomTo(node, 1, 500); - }else if(object instanceof Measure){ - let points = object.points.map(p => p.position); - let box = new THREE.Box3().setFromPoints(points); - if(box.getSize(new THREE.Vector3()).length() > 0){ - let node = new THREE.Object3D(); - node.boundingBox = box; - this.viewer.zoomTo(node, 2, 500); - } - }else if(object instanceof Profile){ - let points = object.points; - let box = new THREE.Box3().setFromPoints(points); - if(box.getSize(new THREE.Vector3()).length() > 0){ - let node = new THREE.Object3D(); - node.boundingBox = box; - this.viewer.zoomTo(node, 1, 500); - } - }else if(object instanceof Volume){ - - let box = object.boundingBox.clone().applyMatrix4(object.matrixWorld); - - if(box.getSize(new THREE.Vector3()).length() > 0){ - let node = new THREE.Object3D(); - node.boundingBox = box; - this.viewer.zoomTo(node, 1, 500); - } - }else if(object instanceof Annotation){ - object.moveHere(this.viewer.scene.getActiveCamera()); - }else if(object instanceof PolygonClipVolume){ - let dir = object.camera.getWorldDirection(new THREE.Vector3()); - let target; - - if(object.camera instanceof THREE.OrthographicCamera){ - dir.multiplyScalar(object.camera.right); - target = new THREE.Vector3().addVectors(object.camera.position, dir); - this.viewer.setCameraMode(CameraMode.ORTHOGRAPHIC); - }else if(object.camera instanceof THREE.PerspectiveCamera){ - dir.multiplyScalar(this.viewer.scene.view.radius); - target = new THREE.Vector3().addVectors(object.camera.position, dir); - this.viewer.setCameraMode(CameraMode.PERSPECTIVE); - } - - this.viewer.scene.view.position.copy(object.camera.position); - this.viewer.scene.view.lookAt(target); - }else if(object instanceof THREE.SpotLight){ - let distance = (object.distance > 0) ? object.distance / 4 : 5 * 1000; - let position = object.position; - let target = new THREE.Vector3().addVectors( - position, - object.getWorldDirection(new THREE.Vector3()).multiplyScalar(distance)); - - this.viewer.scene.view.position.copy(object.position); - this.viewer.scene.view.lookAt(target); - }else if(object instanceof THREE.Object3D){ - let box = new THREE.Box3().setFromObject(object); - - if(box.getSize(new THREE.Vector3()).length() > 0){ - let node = new THREE.Object3D(); - node.boundingBox = box; - this.viewer.zoomTo(node, 1, 500); - } - }else if(object instanceof OrientedImage){ - // TODO zoom to images - - // let box = new THREE.Box3().setFromObject(object); - - // if(box.getSize(new THREE.Vector3()).length() > 0){ - // let node = new THREE.Object3D(); - // node.boundingBox = box; - // this.viewer.zoomTo(node, 1, 500); - // } - }else if(object instanceof Images360){ - // TODO - }else if(object instanceof Geopackage){ - // TODO - } - }); - - tree.on("uncheck_node.jstree", (e, data) => { - let object = data.node.data; - - if(object){ - object.visible = false; - } - }); - - tree.on("check_node.jstree", (e, data) => { - let object = data.node.data; - - if(object){ - object.visible = true; - } - }); - - - let onPointCloudAdded = (e) => { - let pointcloud = e.pointcloud; - let cloudIcon = `${Potree.resourcePath}/icons/cloud.svg`; - let node = createNode(pcID, pointcloud.name, cloudIcon, pointcloud); - - pointcloud.addEventListener("visibility_changed", () => { - if(pointcloud.visible){ - tree.jstree('check_node', node); - }else { - tree.jstree('uncheck_node', node); - } - }); - }; - - let onMeasurementAdded = (e) => { - let measurement = e.measurement; - let icon = Utils.getMeasurementIcon(measurement); - createNode(measurementID, measurement.name, icon, measurement); - }; - - let onVolumeAdded = (e) => { - let volume = e.volume; - let icon = Utils.getMeasurementIcon(volume); - let node = createNode(measurementID, volume.name, icon, volume); - - volume.addEventListener("visibility_changed", () => { - if(volume.visible){ - tree.jstree('check_node', node); - }else { - tree.jstree('uncheck_node', node); - } - }); - }; - - let onProfileAdded = (e) => { - let profile = e.profile; - let icon = Utils.getMeasurementIcon(profile); - createNode(measurementID, profile.name, icon, profile); - }; - - let onAnnotationAdded = (e) => { - let annotation = e.annotation; - - let annotationIcon = `${Potree.resourcePath}/icons/annotation.svg`; - let parentID = this.annotationMapping.get(annotation.parent); - let annotationID = createNode(parentID, annotation.title, annotationIcon, annotation); - this.annotationMapping.set(annotation, annotationID); - - annotation.addEventListener("annotation_changed", (e) => { - let annotationsRoot = $("#jstree_scene").jstree().get_json("annotations"); - let jsonNode = annotationsRoot.children.find(child => child.data.uuid === annotation.uuid); - - $.jstree.reference(jsonNode.id).rename_node(jsonNode.id, annotation.title); - }); - }; - - let onCameraAnimationAdded = (e) => { - const animation = e.animation; - - const animationIcon = `${Potree.resourcePath}/icons/camera_animation.svg`; - createNode(otherID, "animation", animationIcon, animation); - }; - - let onOrientedImagesAdded = (e) => { - const images = e.images; - - const imagesIcon = `${Potree.resourcePath}/icons/picture.svg`; - const node = createNode(imagesID, "images", imagesIcon, images); - - images.addEventListener("visibility_changed", () => { - if(images.visible){ - tree.jstree('check_node', node); - }else { - tree.jstree('uncheck_node', node); - } - }); - }; - - let onImages360Added = (e) => { - const images = e.images; - - const imagesIcon = `${Potree.resourcePath}/icons/picture.svg`; - const node = createNode(imagesID, "360° images", imagesIcon, images); - - images.addEventListener("visibility_changed", () => { - if(images.visible){ - tree.jstree('check_node', node); - }else { - tree.jstree('uncheck_node', node); - } - }); - }; - - const onGeopackageAdded = (e) => { - const geopackage = e.geopackage; - - const geopackageIcon = `${Potree.resourcePath}/icons/triangle.svg`; - const tree = $(`#jstree_scene`); - const parentNode = "vectors"; - - for(const layer of geopackage.node.children){ - const name = layer.name; - - let shpPointsID = tree.jstree('create_node', parentNode, { - "text": name, - "icon": geopackageIcon, - "object": layer, - "data": layer, - }, - "last", false, false); - tree.jstree(layer.visible ? "check_node" : "uncheck_node", shpPointsID); - } - - }; - - this.viewer.scene.addEventListener("pointcloud_added", onPointCloudAdded); - this.viewer.scene.addEventListener("measurement_added", onMeasurementAdded); - this.viewer.scene.addEventListener("profile_added", onProfileAdded); - this.viewer.scene.addEventListener("volume_added", onVolumeAdded); - this.viewer.scene.addEventListener("camera_animation_added", onCameraAnimationAdded); - this.viewer.scene.addEventListener("oriented_images_added", onOrientedImagesAdded); - this.viewer.scene.addEventListener("360_images_added", onImages360Added); - this.viewer.scene.addEventListener("geopackage_added", onGeopackageAdded); - this.viewer.scene.addEventListener("polygon_clip_volume_added", onVolumeAdded); - this.viewer.scene.annotations.addEventListener("annotation_added", onAnnotationAdded); - - let onMeasurementRemoved = (e) => { - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.measurement.uuid); - - tree.jstree("delete_node", jsonNode.id); - }; - - let onVolumeRemoved = (e) => { - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.volume.uuid); - - tree.jstree("delete_node", jsonNode.id); - }; - - let onPolygonClipVolumeRemoved = (e) => { - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.volume.uuid); - - tree.jstree("delete_node", jsonNode.id); - }; - - let onProfileRemoved = (e) => { - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.profile.uuid); - - tree.jstree("delete_node", jsonNode.id); - }; - - this.viewer.scene.addEventListener("measurement_removed", onMeasurementRemoved); - this.viewer.scene.addEventListener("volume_removed", onVolumeRemoved); - this.viewer.scene.addEventListener("polygon_clip_volume_removed", onPolygonClipVolumeRemoved); - this.viewer.scene.addEventListener("profile_removed", onProfileRemoved); - - { - let annotationIcon = `${Potree.resourcePath}/icons/annotation.svg`; - this.annotationMapping = new Map(); - this.annotationMapping.set(this.viewer.scene.annotations, annotationsID); - this.viewer.scene.annotations.traverseDescendants(annotation => { - let parentID = this.annotationMapping.get(annotation.parent); - let annotationID = createNode(parentID, annotation.title, annotationIcon, annotation); - this.annotationMapping.set(annotation, annotationID); - }); - } - - const scene = this.viewer.scene; - for(let pointcloud of scene.pointclouds){ - onPointCloudAdded({pointcloud: pointcloud}); - } - - for(let measurement of scene.measurements){ - onMeasurementAdded({measurement: measurement}); - } - - for(let volume of [...scene.volumes, ...scene.polygonClipVolumes]){ - onVolumeAdded({volume: volume}); - } - - for(let animation of scene.cameraAnimations){ - onCameraAnimationAdded({animation: animation}); - } - - for(let images of scene.orientedImages){ - onOrientedImagesAdded({images: images}); - } - - for(let images of scene.images360){ - onImages360Added({images: images}); - } - - for(const geopackage of scene.geopackages){ - onGeopackageAdded({geopackage: geopackage}); - } - - for(let profile of scene.profiles){ - onProfileAdded({profile: profile}); - } - - { - createNode(otherID, "Camera", null, new THREE.Camera()); - } - - this.viewer.addEventListener("scene_changed", (e) => { - propertiesPanel.setScene(e.scene); - - e.oldScene.removeEventListener("pointcloud_added", onPointCloudAdded); - e.oldScene.removeEventListener("measurement_added", onMeasurementAdded); - e.oldScene.removeEventListener("profile_added", onProfileAdded); - e.oldScene.removeEventListener("volume_added", onVolumeAdded); - e.oldScene.removeEventListener("polygon_clip_volume_added", onVolumeAdded); - e.oldScene.removeEventListener("measurement_removed", onMeasurementRemoved); - - e.scene.addEventListener("pointcloud_added", onPointCloudAdded); - e.scene.addEventListener("measurement_added", onMeasurementAdded); - e.scene.addEventListener("profile_added", onProfileAdded); - e.scene.addEventListener("volume_added", onVolumeAdded); - e.scene.addEventListener("polygon_clip_volume_added", onVolumeAdded); - e.scene.addEventListener("measurement_removed", onMeasurementRemoved); - }); - - } - - initClippingTool(){ - - - this.viewer.addEventListener("cliptask_changed", (event) => { - console.log("TODO"); - }); - - this.viewer.addEventListener("clipmethod_changed", (event) => { - console.log("TODO"); - }); - - { - let elClipTask = $("#cliptask_options"); - elClipTask.selectgroup({title: "Clip Task"}); - - elClipTask.find("input").click( (e) => { - this.viewer.setClipTask(ClipTask[e.target.value]); - }); - - let currentClipTask = Object.keys(ClipTask) - .filter(key => ClipTask[key] === this.viewer.clipTask); - elClipTask.find(`input[value=${currentClipTask}]`).trigger("click"); - } - - { - let elClipMethod = $("#clipmethod_options"); - elClipMethod.selectgroup({title: "Clip Method"}); - - elClipMethod.find("input").click( (e) => { - this.viewer.setClipMethod(ClipMethod[e.target.value]); - }); - - let currentClipMethod = Object.keys(ClipMethod) - .filter(key => ClipMethod[key] === this.viewer.clipMethod); - elClipMethod.find(`input[value=${currentClipMethod}]`).trigger("click"); - } - - let clippingToolBar = $("#clipping_tools"); - - // CLIP VOLUME - clippingToolBar.append(this.createToolIcon( - Potree.resourcePath + '/icons/clip_volume.svg', - '[title]tt.clip_volume', - () => { - let item = this.volumeTool.startInsertion({clip: true}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - // CLIP POLYGON - clippingToolBar.append(this.createToolIcon( - Potree.resourcePath + "/icons/clip-polygon.svg", - "[title]tt.clip_polygon", - () => { - let item = this.viewer.clippingTool.startInsertion({type: "polygon"}); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - - {// SCREEN BOX SELECT - let boxSelectTool = new ScreenBoxSelectTool(this.viewer); - - clippingToolBar.append(this.createToolIcon( - Potree.resourcePath + "/icons/clip-screen.svg", - "[title]tt.screen_clip_box", - () => { - if(!(this.viewer.scene.getActiveCamera() instanceof THREE.OrthographicCamera)){ - this.viewer.postMessage(`Switch to Orthographic Camera Mode before using the Screen-Box-Select tool.`, - {duration: 2000}); - return; - } - - let item = boxSelectTool.startInsertion(); - - let measurementsRoot = $("#jstree_scene").jstree().get_json("measurements"); - let jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid); - $.jstree.reference(jsonNode.id).deselect_all(); - $.jstree.reference(jsonNode.id).select_node(jsonNode.id); - } - )); - } - - { // REMOVE CLIPPING TOOLS - clippingToolBar.append(this.createToolIcon( - Potree.resourcePath + "/icons/remove.svg", - "[title]tt.remove_all_measurement", - () => { - - this.viewer.scene.removeAllClipVolumes(); - } - )); - } - - } - - initFilters(){ - this.initClassificationList(); - this.initReturnFilters(); - this.initGPSTimeFilters(); - this.initPointSourceIDFilters(); - - } - - initReturnFilters(){ - let elReturnFilterPanel = $('#return_filter_panel'); - - { // RETURN NUMBER - let sldReturnNumber = elReturnFilterPanel.find('#sldReturnNumber'); - let lblReturnNumber = elReturnFilterPanel.find('#lblReturnNumber'); - - sldReturnNumber.slider({ - range: true, - min: 0, max: 7, step: 1, - values: [0, 7], - slide: (event, ui) => { - this.viewer.setFilterReturnNumberRange(ui.values[0], ui.values[1]); - } - }); - - let onReturnNumberChanged = (event) => { - let [from, to] = this.viewer.filterReturnNumberRange; - - lblReturnNumber[0].innerHTML = `${from} to ${to}`; - sldReturnNumber.slider({values: [from, to]}); - }; - - this.viewer.addEventListener('filter_return_number_range_changed', onReturnNumberChanged); - - onReturnNumberChanged(); - } - - { // NUMBER OF RETURNS - let sldNumberOfReturns = elReturnFilterPanel.find('#sldNumberOfReturns'); - let lblNumberOfReturns = elReturnFilterPanel.find('#lblNumberOfReturns'); - - sldNumberOfReturns.slider({ - range: true, - min: 0, max: 7, step: 1, - values: [0, 7], - slide: (event, ui) => { - this.viewer.setFilterNumberOfReturnsRange(ui.values[0], ui.values[1]); - } - }); - - let onNumberOfReturnsChanged = (event) => { - let [from, to] = this.viewer.filterNumberOfReturnsRange; - - lblNumberOfReturns[0].innerHTML = `${from} to ${to}`; - sldNumberOfReturns.slider({values: [from, to]}); - }; - - this.viewer.addEventListener('filter_number_of_returns_range_changed', onNumberOfReturnsChanged); - - onNumberOfReturnsChanged(); - } - } - - initGPSTimeFilters(){ - - let elGPSTimeFilterPanel = $('#gpstime_filter_panel'); - - { - let slider = new HierarchicalSlider({ - levels: 4, - slide: (event) => { - this.viewer.setFilterGPSTimeRange(...event.values); - }, - }); - - let initialized = false; - - let initialize = () => { - - let elRangeContainer = $("#gpstime_multilevel_range_container"); - elRangeContainer[0].prepend(slider.element); - - let extent = this.viewer.getGpsTimeExtent(); - - slider.setRange(extent); - slider.setValues(extent); - - - initialized = true; - }; - - this.viewer.addEventListener("update", (e) => { - let extent = this.viewer.getGpsTimeExtent(); - let gpsTimeAvailable = extent[0] !== Infinity; - - if(!initialized && gpsTimeAvailable){ - initialize(); - } - - slider.setRange(extent); - }); - } - - - { - - const txtGpsTime = elGPSTimeFilterPanel.find("#txtGpsTime"); - const btnFindGpsTime = elGPSTimeFilterPanel.find("#btnFindGpsTime"); - - let targetTime = null; - - txtGpsTime.on("input", (e) => { - const str = txtGpsTime.val(); - - if(!isNaN(str)){ - const value = parseFloat(str); - targetTime = value; - - txtGpsTime.css("background-color", ""); - }else { - targetTime = null; - - txtGpsTime.css("background-color", "#ff9999"); - } - - }); - - btnFindGpsTime.click( () => { - - if(targetTime !== null){ - viewer.moveToGpsTimeVicinity(targetTime); - } - }); - } - - } - - initPointSourceIDFilters() { - let elPointSourceIDFilterPanel = $('#pointsourceid_filter_panel'); - - { - let slider = new HierarchicalSlider({ - levels: 4, - range: [0, 65535], - precision: 1, - slide: (event) => { - let values = event.values; - this.viewer.setFilterPointSourceIDRange(values[0], values[1]); - } - }); - - let initialized = false; - - let initialize = () => { - elPointSourceIDFilterPanel[0].prepend(slider.element); - - initialized = true; - }; - - this.viewer.addEventListener("update", (e) => { - let extent = this.viewer.filterPointSourceIDRange; - - if(!initialized){ - initialize(); - - slider.setValues(extent); - } - - }); - } - - // let lblPointSourceID = elPointSourceIDFilterPanel.find("#lblPointSourceID"); - // let elPointSourceID = elPointSourceIDFilterPanel.find("#spnPointSourceID"); - - // let slider = new ZoomableSlider(); - // elPointSourceID[0].appendChild(slider.element); - // slider.update(); - - // slider.change( () => { - // let range = slider.chosenRange; - // this.viewer.setFilterPointSourceIDRange(range[0], range[1]); - // }); - - // let onPointSourceIDExtentChanged = (event) => { - // let range = this.viewer.filterPointSourceIDExtent; - // slider.setVisibleRange(range); - // }; - - // let onPointSourceIDChanged = (event) => { - // let range = this.viewer.filterPointSourceIDRange; - - // let precision = 1; - // let from = `${Utils.addCommas(range[0].toFixed(precision))}`; - // let to = `${Utils.addCommas(range[1].toFixed(precision))}`; - // lblPointSourceID[0].innerHTML = `${from} to ${to}`; - - // slider.setRange(range); - // }; - - // this.viewer.addEventListener('filter_point_source_id_range_changed', onPointSourceIDChanged); - // this.viewer.addEventListener('filter_point_source_id_extent_changed', onPointSourceIDExtentChanged); - - } - - initClassificationList(){ - let elClassificationList = $('#classificationList'); - - let addClassificationItem = (code, name) => { - const classification = this.viewer.classifications[code]; - const inputID = 'chkClassification_' + code; - const colorPickerID = 'colorPickerClassification_' + code; - - const checked = classification.visible ? "checked" : ""; - - let element = $(` -
      • - -
      • - `); - - const elInput = element.find('input'); - const elColorPicker = element.find(`#${colorPickerID}`); - - elInput.click(event => { - this.viewer.setClassificationVisibility(code, event.target.checked); - }); - - let defaultColor = classification.color.map(c => c * 255).join(", "); - defaultColor = `rgb(${defaultColor})`; - - - elColorPicker.spectrum({ - // flat: true, - color: defaultColor, - showInput: true, - preferredFormat: 'rgb', - cancelText: '', - chooseText: 'Apply', - move: color => { - let rgb = color.toRgb(); - const c = [rgb.r / 255, rgb.g / 255, rgb.b / 255, 1]; - classification.color = c; - }, - change: color => { - let rgb = color.toRgb(); - const c = [rgb.r / 255, rgb.g / 255, rgb.b / 255, 1]; - classification.color = c; - } - }); - - elClassificationList.append(element); - }; - - const addToggleAllButton = () => { // toggle all button - const element = $(` -
      • - -
      • - `); - - let elInput = element.find('input'); - - elInput.click(event => { - this.viewer.toggleAllClassificationsVisibility(); - }); - - elClassificationList.append(element); - }; - - const addInvertButton = () => { - const element = $(` -
      • - -
      • - `); - - let elInput = element.find('input'); - - elInput.click( () => { - const classifications = this.viewer.classifications; - - for(let key of Object.keys(classifications)){ - let value = classifications[key]; - this.viewer.setClassificationVisibility(key, !value.visible); - } - }); - - elClassificationList.append(element); - }; - - const populate = () => { - addToggleAllButton(); - for (let classID in this.viewer.classifications) { - addClassificationItem(classID, this.viewer.classifications[classID].name); - } - addInvertButton(); - }; - - populate(); - - this.viewer.addEventListener("classifications_changed", () => { - elClassificationList.empty(); - populate(); - }); - - this.viewer.addEventListener("classification_visibility_changed", () => { - - { // set checked state of classification buttons - for(const classID of Object.keys(this.viewer.classifications)){ - const classValue = this.viewer.classifications[classID]; - - let elItem = elClassificationList.find(`#chkClassification_${classID}`); - elItem.prop("checked", classValue.visible); - } - } - - { // set checked state of toggle button based on state of all other buttons - let numVisible = 0; - let numItems = 0; - for(const key of Object.keys(this.viewer.classifications)){ - if(this.viewer.classifications[key].visible){ - numVisible++; - } - numItems++; - } - const allVisible = numVisible === numItems; - - let elToggle = elClassificationList.find("#toggleClassificationFilters"); - elToggle.prop("checked", allVisible); - } - }); - } - - initAccordion(){ - $('.accordion > h3').each(function(){ - let header = $(this); - let content = $(this).next(); - - //header.addClass('accordion-header ui-widget'); - //content.addClass('accordion-content ui-widget'); - - content.hide(); - - header.click(() => { - content.slideToggle(); - }); - }); - - let languages = [ - ["EN", "en"], - ["FR", "fr"], - ["DE", "de"], - ["JP", "jp"], - ["ES", "es"], - ["SE", "se"] - ]; - - let elLanguages = $('#potree_languages'); - for(let i = 0; i < languages.length; i++){ - let [key, value] = languages[i]; - let element = $(`${key}`); - element.click(() => this.viewer.setLanguage(value)); - - if(i === 0){ - element.css("margin-left", "30px"); - } - - elLanguages.append(element); - - if(i < languages.length - 1){ - elLanguages.append($(document.createTextNode(' - '))); - } - } - - - // to close all, call - // $(".accordion > div").hide() - - // to open the, for example, tool menu, call: - // $("#menu_tools").next().show() - } - - initAppearance(){ - - const sldPointBudget = this.dom.find('#sldPointBudget'); - - sldPointBudget.slider({ - value: this.viewer.getPointBudget(), - min: 100 * 1000, - max: 10 * 1000 * 1000, - step: 1000, - slide: (event, ui) => { this.viewer.setPointBudget(ui.value); } - }); - - this.dom.find('#sldFOV').slider({ - value: this.viewer.getFOV(), - min: 20, - max: 100, - step: 1, - slide: (event, ui) => { this.viewer.setFOV(ui.value); } - }); - - $('#sldEDLRadius').slider({ - value: this.viewer.getEDLRadius(), - min: 1, - max: 4, - step: 0.01, - slide: (event, ui) => { this.viewer.setEDLRadius(ui.value); } - }); - - $('#sldEDLStrength').slider({ - value: this.viewer.getEDLStrength(), - min: 0, - max: 5, - step: 0.01, - slide: (event, ui) => { this.viewer.setEDLStrength(ui.value); } - }); - - $('#sldEDLOpacity').slider({ - value: this.viewer.getEDLOpacity(), - min: 0, - max: 1, - step: 0.01, - slide: (event, ui) => { this.viewer.setEDLOpacity(ui.value); } - }); - - this.viewer.addEventListener('point_budget_changed', (event) => { - $('#lblPointBudget')[0].innerHTML = Utils.addCommas(this.viewer.getPointBudget()); - sldPointBudget.slider({value: this.viewer.getPointBudget()}); - }); - - this.viewer.addEventListener('fov_changed', (event) => { - $('#lblFOV')[0].innerHTML = parseInt(this.viewer.getFOV()); - $('#sldFOV').slider({value: this.viewer.getFOV()}); - }); - - this.viewer.addEventListener('use_edl_changed', (event) => { - $('#chkEDLEnabled')[0].checked = this.viewer.getEDLEnabled(); - }); - - this.viewer.addEventListener('edl_radius_changed', (event) => { - $('#lblEDLRadius')[0].innerHTML = this.viewer.getEDLRadius().toFixed(1); - $('#sldEDLRadius').slider({value: this.viewer.getEDLRadius()}); - }); - - this.viewer.addEventListener('edl_strength_changed', (event) => { - $('#lblEDLStrength')[0].innerHTML = this.viewer.getEDLStrength().toFixed(1); - $('#sldEDLStrength').slider({value: this.viewer.getEDLStrength()}); - }); - - this.viewer.addEventListener('background_changed', (event) => { - $("input[name=background][value='" + this.viewer.getBackground() + "']").prop('checked', true); - }); - - $('#lblPointBudget')[0].innerHTML = Utils.addCommas(this.viewer.getPointBudget()); - $('#lblFOV')[0].innerHTML = parseInt(this.viewer.getFOV()); - $('#lblEDLRadius')[0].innerHTML = this.viewer.getEDLRadius().toFixed(1); - $('#lblEDLStrength')[0].innerHTML = this.viewer.getEDLStrength().toFixed(1); - $('#chkEDLEnabled')[0].checked = this.viewer.getEDLEnabled(); - - { - let elBackground = $(`#background_options`); - elBackground.selectgroup(); - - elBackground.find("input").click( (e) => { - this.viewer.setBackground(e.target.value); - }); - - let currentBackground = this.viewer.getBackground(); - $(`input[name=background_options][value=${currentBackground}]`).trigger("click"); - } - - $('#chkEDLEnabled').click( () => { - this.viewer.setEDLEnabled($('#chkEDLEnabled').prop("checked")); - }); - } - - initNavigation(){ - let elNavigation = $('#navigation'); - let sldMoveSpeed = $('#sldMoveSpeed'); - let lblMoveSpeed = $('#lblMoveSpeed'); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + '/icons/earth_controls_1.png', - '[title]tt.earth_control', - () => { this.viewer.setControls(this.viewer.earthControls); } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + '/icons/fps_controls.svg', - '[title]tt.flight_control', - () => { - this.viewer.setControls(this.viewer.fpControls); - this.viewer.fpControls.lockElevation = false; - } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + '/icons/helicopter_controls.svg', - '[title]tt.heli_control', - () => { - this.viewer.setControls(this.viewer.fpControls); - this.viewer.fpControls.lockElevation = true; - } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + '/icons/orbit_controls.svg', - '[title]tt.orbit_control', - () => { this.viewer.setControls(this.viewer.orbitControls); } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + '/icons/focus.svg', - '[title]tt.focus_control', - () => { this.viewer.fitToScreen(); } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/navigation_cube.svg", - "[title]tt.navigation_cube_control", - () => {this.viewer.toggleNavigationCube();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/images/compas.svg", - "[title]tt.compass", - () => { - const visible = !this.viewer.compass.isVisible(); - this.viewer.compass.setVisible(visible); - } - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/camera_animation.svg", - "[title]tt.camera_animation", - () => { - const animation = CameraAnimation.defaultFromView(this.viewer); - - viewer.scene.addCameraAnimation(animation); - } - )); - - - elNavigation.append("
        "); - - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/left.svg", - "[title]tt.left_view_control", - () => {this.viewer.setLeftView();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/right.svg", - "[title]tt.right_view_control", - () => {this.viewer.setRightView();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/front.svg", - "[title]tt.front_view_control", - () => {this.viewer.setFrontView();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/back.svg", - "[title]tt.back_view_control", - () => {this.viewer.setBackView();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/top.svg", - "[title]tt.top_view_control", - () => {this.viewer.setTopView();} - )); - - elNavigation.append(this.createToolIcon( - Potree.resourcePath + "/icons/bottom.svg", - "[title]tt.bottom_view_control", - () => {this.viewer.setBottomView();} - )); - - - - - - let elCameraProjection = $(` - - - - - `); - elNavigation.append(elCameraProjection); - elCameraProjection.selectgroup({title: "Camera Projection"}); - elCameraProjection.find("input").click( (e) => { - this.viewer.setCameraMode(CameraMode[e.target.value]); - }); - let cameraMode = Object.keys(CameraMode) - .filter(key => CameraMode[key] === this.viewer.scene.cameraMode); - elCameraProjection.find(`input[value=${cameraMode}]`).trigger("click"); - - let speedRange = new THREE.Vector2(1, 10 * 1000); - - let toLinearSpeed = (value) => { - return Math.pow(value, 4) * speedRange.y + speedRange.x; - }; - - let toExpSpeed = (value) => { - return Math.pow((value - speedRange.x) / speedRange.y, 1 / 4); - }; - - sldMoveSpeed.slider({ - value: toExpSpeed(this.viewer.getMoveSpeed()), - min: 0, - max: 1, - step: 0.01, - slide: (event, ui) => { this.viewer.setMoveSpeed(toLinearSpeed(ui.value)); } - }); - - this.viewer.addEventListener('move_speed_changed', (event) => { - lblMoveSpeed.html(this.viewer.getMoveSpeed().toFixed(1)); - sldMoveSpeed.slider({value: toExpSpeed(this.viewer.getMoveSpeed())}); - }); - - lblMoveSpeed.html(this.viewer.getMoveSpeed().toFixed(1)); - } - - - initSettings(){ - - { - $('#sldMinNodeSize').slider({ - value: this.viewer.getMinNodeSize(), - min: 0, - max: 1000, - step: 0.01, - slide: (event, ui) => { this.viewer.setMinNodeSize(ui.value); } - }); - - this.viewer.addEventListener('minnodesize_changed', (event) => { - $('#lblMinNodeSize').html(parseInt(this.viewer.getMinNodeSize())); - $('#sldMinNodeSize').slider({value: this.viewer.getMinNodeSize()}); - }); - $('#lblMinNodeSize').html(parseInt(this.viewer.getMinNodeSize())); - } - - { - let elSplatQuality = $("#splat_quality_options"); - elSplatQuality.selectgroup({title: "Splat Quality"}); - - elSplatQuality.find("input").click( (e) => { - if(e.target.value === "standard"){ - this.viewer.useHQ = false; - }else if(e.target.value === "hq"){ - this.viewer.useHQ = true; - } - }); - - let currentQuality = this.viewer.useHQ ? "hq" : "standard"; - elSplatQuality.find(`input[value=${currentQuality}]`).trigger("click"); - } - - $('#show_bounding_box').click(() => { - this.viewer.setShowBoundingBox($('#show_bounding_box').prop("checked")); - }); - - $('#set_freeze').click(() => { - this.viewer.setFreeze($('#set_freeze').prop("checked")); - }); - } - - } - - class AnnotationTool extends EventDispatcher{ - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.sg = new THREE.SphereGeometry(0.1); - this.sm = new THREE.MeshNormalMaterial(); - this.s = new THREE.Mesh(this.sg, this.sm); - } - - startInsertion (args = {}) { - let domElement = this.viewer.renderer.domElement; - - let annotation = new Annotation({ - position: [589748.270, 231444.540, 753.675], - title: "Annotation Title", - description: `Annotation Description` - }); - this.dispatchEvent({type: 'start_inserting_annotation', annotation: annotation}); - - const annotations = this.viewer.scene.annotations; - annotations.add(annotation); - - let callbacks = { - cancel: null, - finish: null, - }; - - let insertionCallback = (e) => { - if (e.button === THREE.MOUSE.LEFT) { - callbacks.finish(); - } else if (e.button === THREE.MOUSE.RIGHT) { - callbacks.cancel(); - } - }; - - callbacks.cancel = e => { - annotations.remove(annotation); - - domElement.removeEventListener('mouseup', insertionCallback, true); - }; - - callbacks.finish = e => { - domElement.removeEventListener('mouseup', insertionCallback, true); - }; - - domElement.addEventListener('mouseup', insertionCallback, true); - - let drag = (e) => { - let I = Utils.getMousePointCloudIntersection( - e.drag.end, - e.viewer.scene.getActiveCamera(), - e.viewer, - e.viewer.scene.pointclouds, - {pickClipped: true}); - - if (I) { - this.s.position.copy(I.location); - - annotation.position.copy(I.location); - } - }; - - let drop = (e) => { - viewer.scene.scene.remove(this.s); - this.s.removeEventListener("drag", drag); - this.s.removeEventListener("drop", drop); - }; - - this.s.addEventListener('drag', drag); - this.s.addEventListener('drop', drop); - - this.viewer.scene.scene.add(this.s); - this.viewer.inputHandler.startDragging(this.s); - - return annotation; - } - - update(){ - // let camera = this.viewer.scene.getActiveCamera(); - // let domElement = this.renderer.domElement; - // let measurements = this.viewer.scene.measurements; - - // const renderAreaSize = this.renderer.getSize(new THREE.Vector2()); - // let clientWidth = renderAreaSize.width; - // let clientHeight = renderAreaSize.height; - - } - - render(){ - //this.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera()); - } - }; - - /** - * @author mschuetz / http://mschuetz.at - * - * - */ - - class InputHandler extends EventDispatcher { - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - this.domElement = this.renderer.domElement; - this.enabled = true; - - this.scene = null; - this.interactiveScenes = []; - this.interactiveObjects = new Set(); - this.inputListeners = []; - this.blacklist = new Set(); - - this.drag = null; - this.mouse = new THREE.Vector2(0, 0); - - this.selection = []; - - this.hoveredElements = []; - this.pressedKeys = {}; - - this.wheelDelta = 0; - - this.speed = 1; - - this.logMessages = false; - - if (this.domElement.tabIndex === -1) { - this.domElement.tabIndex = 2222; - } - - this.domElement.addEventListener('contextmenu', (event) => { event.preventDefault(); }, false); - this.domElement.addEventListener('click', this.onMouseClick.bind(this), false); - this.domElement.addEventListener('mousedown', this.onMouseDown.bind(this), false); - this.domElement.addEventListener('mouseup', this.onMouseUp.bind(this), false); - this.domElement.addEventListener('mousemove', this.onMouseMove.bind(this), false); - this.domElement.addEventListener('mousewheel', this.onMouseWheel.bind(this), false); - this.domElement.addEventListener('DOMMouseScroll', this.onMouseWheel.bind(this), false); // Firefox - this.domElement.addEventListener('dblclick', this.onDoubleClick.bind(this)); - this.domElement.addEventListener('keydown', this.onKeyDown.bind(this)); - this.domElement.addEventListener('keyup', this.onKeyUp.bind(this)); - this.domElement.addEventListener('touchstart', this.onTouchStart.bind(this)); - this.domElement.addEventListener('touchend', this.onTouchEnd.bind(this)); - this.domElement.addEventListener('touchmove', this.onTouchMove.bind(this)); - } - - addInputListener (listener) { - this.inputListeners.push(listener); - } - - removeInputListener (listener) { - this.inputListeners = this.inputListeners.filter(e => e !== listener); - } - - getSortedListeners(){ - return this.inputListeners.sort( (a, b) => { - let ia = (a.importance !== undefined) ? a.importance : 0; - let ib = (b.importance !== undefined) ? b.importance : 0; - - return ib - ia; - }); - } - - onTouchStart (e) { - if (this.logMessages) console.log(this.constructor.name + ': onTouchStart'); - - e.preventDefault(); - - if (e.touches.length === 1) { - let rect = this.domElement.getBoundingClientRect(); - let x = e.touches[0].pageX - rect.left; - let y = e.touches[0].pageY - rect.top; - this.mouse.set(x, y); - - this.startDragging(null); - } - - - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: e.type, - touches: e.touches, - changedTouches: e.changedTouches - }); - } - } - - onTouchEnd (e) { - if (this.logMessages) console.log(this.constructor.name + ': onTouchEnd'); - - e.preventDefault(); - - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'drop', - drag: this.drag, - viewer: this.viewer - }); - } - - this.drag = null; - - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: e.type, - touches: e.touches, - changedTouches: e.changedTouches - }); - } - } - - onTouchMove (e) { - if (this.logMessages) console.log(this.constructor.name + ': onTouchMove'); - - e.preventDefault(); - - if (e.touches.length === 1) { - let rect = this.domElement.getBoundingClientRect(); - let x = e.touches[0].pageX - rect.left; - let y = e.touches[0].pageY - rect.top; - this.mouse.set(x, y); - - if (this.drag) { - this.drag.mouse = 1; - - this.drag.lastDrag.x = x - this.drag.end.x; - this.drag.lastDrag.y = y - this.drag.end.y; - - this.drag.end.set(x, y); - - if (this.logMessages) console.log(this.constructor.name + ': drag: '); - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'drag', - drag: this.drag, - viewer: this.viewer - }); - } - } - } - - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: e.type, - touches: e.touches, - changedTouches: e.changedTouches - }); - } - - // DEBUG CODE - // let debugTouches = [...e.touches, { - // pageX: this.domElement.clientWidth / 2, - // pageY: this.domElement.clientHeight / 2}]; - // for(let inputListener of this.getSortedListeners()){ - // inputListener.dispatchEvent({ - // type: e.type, - // touches: debugTouches, - // changedTouches: e.changedTouches - // }); - // } - } - - onKeyDown (e) { - if (this.logMessages) console.log(this.constructor.name + ': onKeyDown'); - - // DELETE - if (e.keyCode === KeyCodes.DELETE && this.selection.length > 0) { - this.dispatchEvent({ - type: 'delete', - selection: this.selection - }); - - this.deselectAll(); - } - - this.dispatchEvent({ - type: 'keydown', - keyCode: e.keyCode, - event: e - }); - - // for(let l of this.getSortedListeners()){ - // l.dispatchEvent({ - // type: "keydown", - // keyCode: e.keyCode, - // event: e - // }); - // } - - this.pressedKeys[e.keyCode] = true; - - // e.preventDefault(); - } - - onKeyUp (e) { - if (this.logMessages) console.log(this.constructor.name + ': onKeyUp'); - - delete this.pressedKeys[e.keyCode]; - - e.preventDefault(); - } - - onDoubleClick (e) { - if (this.logMessages) console.log(this.constructor.name + ': onDoubleClick'); - - let consumed = false; - for (let hovered of this.hoveredElements) { - if (hovered._listeners && hovered._listeners['dblclick']) { - hovered.object.dispatchEvent({ - type: 'dblclick', - mouse: this.mouse, - object: hovered.object - }); - consumed = true; - break; - } - } - - if (!consumed) { - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'dblclick', - mouse: this.mouse, - object: null - }); - } - } - - e.preventDefault(); - } - - onMouseClick (e) { - if (this.logMessages) console.log(this.constructor.name + ': onMouseClick'); - - e.preventDefault(); - } - - onMouseDown (e) { - if (this.logMessages) console.log(this.constructor.name + ': onMouseDown'); - - e.preventDefault(); - - let consumed = false; - let consume = () => { return consumed = true; }; - if (this.hoveredElements.length === 0) { - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'mousedown', - viewer: this.viewer, - mouse: this.mouse - }); - } - }else { - for(let hovered of this.hoveredElements){ - let object = hovered.object; - object.dispatchEvent({ - type: 'mousedown', - viewer: this.viewer, - consume: consume - }); - - if(consumed){ - break; - } - } - } - - if (!this.drag) { - let target = this.hoveredElements - .find(el => ( - el.object._listeners && - el.object._listeners['drag'] && - el.object._listeners['drag'].length > 0)); - - if (target) { - this.startDragging(target.object, {location: target.point}); - } else { - this.startDragging(null); - } - } - - if (this.scene) { - this.viewStart = this.scene.view.clone(); - } - } - - onMouseUp (e) { - if (this.logMessages) console.log(this.constructor.name + ': onMouseUp'); - - e.preventDefault(); - - let noMovement = this.getNormalizedDrag().length() === 0; - - - let consumed = false; - let consume = () => { return consumed = true; }; - if (this.hoveredElements.length === 0) { - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'mouseup', - viewer: this.viewer, - mouse: this.mouse, - consume: consume - }); - - if(consumed){ - break; - } - } - }else { - let hovered = this.hoveredElements - .map(e => e.object) - .find(e => (e._listeners && e._listeners['mouseup'])); - if(hovered){ - hovered.dispatchEvent({ - type: 'mouseup', - viewer: this.viewer, - consume: consume - }); - } - } - - if (this.drag) { - if (this.drag.object) { - if (this.logMessages) console.log(`${this.constructor.name}: drop ${this.drag.object.name}`); - this.drag.object.dispatchEvent({ - type: 'drop', - drag: this.drag, - viewer: this.viewer - - }); - } else { - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'drop', - drag: this.drag, - viewer: this.viewer - }); - } - } - - // check for a click - let clicked = this.hoveredElements.map(h => h.object).find(v => v === this.drag.object) !== undefined; - if(clicked){ - if (this.logMessages) console.log(`${this.constructor.name}: click ${this.drag.object.name}`); - this.drag.object.dispatchEvent({ - type: 'click', - viewer: this.viewer, - consume: consume, - }); - } - - this.drag = null; - } - - if(!consumed){ - if (e.button === THREE.MOUSE.LEFT) { - if (noMovement) { - let selectable = this.hoveredElements - .find(el => el.object._listeners && el.object._listeners['select']); - - if (selectable) { - selectable = selectable.object; - - if (this.isSelected(selectable)) { - this.selection - .filter(e => e !== selectable) - .forEach(e => this.toggleSelection(e)); - } else { - this.deselectAll(); - this.toggleSelection(selectable); - } - } else { - this.deselectAll(); - } - } - } else if ((e.button === THREE.MOUSE.RIGHT) && noMovement) { - this.deselectAll(); - } - } - } - - onMouseMove (e) { - e.preventDefault(); - - let rect = this.domElement.getBoundingClientRect(); - let x = e.clientX - rect.left; - let y = e.clientY - rect.top; - this.mouse.set(x, y); - - let hoveredElements = this.getHoveredElements(); - if(hoveredElements.length > 0){ - let names = hoveredElements.map(h => h.object.name).join(", "); - if (this.logMessages) console.log(`${this.constructor.name}: onMouseMove; hovered: '${names}'`); - } - - if (this.drag) { - this.drag.mouse = e.buttons; - - this.drag.lastDrag.x = x - this.drag.end.x; - this.drag.lastDrag.y = y - this.drag.end.y; - - this.drag.end.set(x, y); - - if (this.drag.object) { - if (this.logMessages) console.log(this.constructor.name + ': drag: ' + this.drag.object.name); - this.drag.object.dispatchEvent({ - type: 'drag', - drag: this.drag, - viewer: this.viewer - }); - } else { - if (this.logMessages) console.log(this.constructor.name + ': drag: '); - - let dragConsumed = false; - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'drag', - drag: this.drag, - viewer: this.viewer, - consume: () => {dragConsumed = true;} - }); - - if(dragConsumed){ - break; - } - } - } - }else { - let curr = hoveredElements.map(a => a.object).find(a => true); - let prev = this.hoveredElements.map(a => a.object).find(a => true); - - if(curr !== prev){ - if(curr){ - if (this.logMessages) console.log(`${this.constructor.name}: mouseover: ${curr.name}`); - curr.dispatchEvent({ - type: 'mouseover', - object: curr, - }); - } - if(prev){ - if (this.logMessages) console.log(`${this.constructor.name}: mouseleave: ${prev.name}`); - prev.dispatchEvent({ - type: 'mouseleave', - object: prev, - }); - } - } - - if(hoveredElements.length > 0){ - let object = hoveredElements - .map(e => e.object) - .find(e => (e._listeners && e._listeners['mousemove'])); - - if(object){ - object.dispatchEvent({ - type: 'mousemove', - object: object - }); - } - } - - } - - // for (let inputListener of this.getSortedListeners()) { - // inputListener.dispatchEvent({ - // type: 'mousemove', - // object: null - // }); - // } - - - this.hoveredElements = hoveredElements; - } - - onMouseWheel(e){ - if(!this.enabled) return; - - if(this.logMessages) console.log(this.constructor.name + ": onMouseWheel"); - - e.preventDefault(); - - let delta = 0; - if (e.wheelDelta !== undefined) { // WebKit / Opera / Explorer 9 - delta = e.wheelDelta; - } else if (e.detail !== undefined) { // Firefox - delta = -e.detail; - } - - let ndelta = Math.sign(delta); - - // this.wheelDelta += Math.sign(delta); - - if (this.hoveredElement) { - this.hoveredElement.object.dispatchEvent({ - type: 'mousewheel', - delta: ndelta, - object: this.hoveredElement.object - }); - } else { - for (let inputListener of this.getSortedListeners()) { - inputListener.dispatchEvent({ - type: 'mousewheel', - delta: ndelta, - object: null - }); - } - } - } - - startDragging (object, args = null) { - - let name = object ? object.name : "no name"; - if (this.logMessages) console.log(`${this.constructor.name}: startDragging: '${name}'`); - - this.drag = { - start: this.mouse.clone(), - end: this.mouse.clone(), - lastDrag: new THREE.Vector2(0, 0), - startView: this.scene.view.clone(), - object: object - }; - - if (args) { - for (let key of Object.keys(args)) { - this.drag[key] = args[key]; - } - } - } - - getMousePointCloudIntersection (mouse) { - return Utils.getMousePointCloudIntersection( - this.mouse, - this.scene.getActiveCamera(), - this.viewer, - this.scene.pointclouds); - } - - toggleSelection (object) { - let oldSelection = this.selection; - - let index = this.selection.indexOf(object); - - if (index === -1) { - this.selection.push(object); - object.dispatchEvent({ - type: 'select' - }); - } else { - this.selection.splice(index, 1); - object.dispatchEvent({ - type: 'deselect' - }); - } - - this.dispatchEvent({ - type: 'selection_changed', - oldSelection: oldSelection, - selection: this.selection - }); - } - - deselect(object){ - - let oldSelection = this.selection; - - let index = this.selection.indexOf(object); - - if(index >= 0){ - this.selection.splice(index, 1); - object.dispatchEvent({ - type: 'deselect' - }); - - this.dispatchEvent({ - type: 'selection_changed', - oldSelection: oldSelection, - selection: this.selection - }); - } - } - - deselectAll () { - for (let object of this.selection) { - object.dispatchEvent({ - type: 'deselect' - }); - } - - let oldSelection = this.selection; - - if (this.selection.length > 0) { - this.selection = []; - this.dispatchEvent({ - type: 'selection_changed', - oldSelection: oldSelection, - selection: this.selection - }); - } - } - - isSelected (object) { - let index = this.selection.indexOf(object); - - return index !== -1; - } - - registerInteractiveObject(object){ - this.interactiveObjects.add(object); - } - - removeInteractiveObject(object){ - this.interactiveObjects.delete(object); - } - - registerInteractiveScene (scene) { - let index = this.interactiveScenes.indexOf(scene); - if (index === -1) { - this.interactiveScenes.push(scene); - } - } - - unregisterInteractiveScene (scene) { - let index = this.interactiveScenes.indexOf(scene); - if (index > -1) { - this.interactiveScenes.splice(index, 1); - } - } - - getHoveredElement () { - let hoveredElements = this.getHoveredElements(); - if (hoveredElements.length > 0) { - return hoveredElements[0]; - } else { - return null; - } - } - - getHoveredElements () { - let scenes = this.interactiveScenes.concat(this.scene.scene); - - let interactableListeners = ['mouseup', 'mousemove', 'mouseover', 'mouseleave', 'drag', 'drop', 'click', 'select', 'deselect']; - let interactables = []; - for (let scene of scenes) { - scene.traverseVisible(node => { - if (node._listeners && node.visible && !this.blacklist.has(node)) { - let hasInteractableListener = interactableListeners.filter((e) => { - return node._listeners[e] !== undefined; - }).length > 0; - - if (hasInteractableListener) { - interactables.push(node); - } - } - }); - } - - let camera = this.scene.getActiveCamera(); - let ray = Utils.mouseToRay(this.mouse, camera, this.domElement.clientWidth, this.domElement.clientHeight); - - let raycaster = new THREE.Raycaster(); - raycaster.ray.set(ray.origin, ray.direction); - raycaster.linePrecision = 0.2; - - let intersections = raycaster.intersectObjects(interactables.filter(o => o.visible), false); - - return intersections; - - // if(intersections.length > 0){ - // return intersections[0]; - // }else{ - // return null; - // } - } - - setScene (scene) { - this.deselectAll(); - - this.scene = scene; - } - - update (delta) { - - } - - getNormalizedDrag () { - if (!this.drag) { - return new THREE.Vector2(0, 0); - } - - let diff = new THREE.Vector2().subVectors(this.drag.end, this.drag.start); - - diff.x = diff.x / this.domElement.clientWidth; - diff.y = diff.y / this.domElement.clientHeight; - - return diff; - } - - getNormalizedLastDrag () { - if (!this.drag) { - return new THREE.Vector2(0, 0); - } - - let lastDrag = this.drag.lastDrag.clone(); - - lastDrag.x = lastDrag.x / this.domElement.clientWidth; - lastDrag.y = lastDrag.y / this.domElement.clientHeight; - - return lastDrag; - } - } - - class NavigationCube extends THREE.Object3D { - - constructor(viewer){ - super(); - - this.viewer = viewer; - - let createPlaneMaterial = (img) => { - let material = new THREE.MeshBasicMaterial( { - depthTest: true, - depthWrite: true, - side: THREE.DoubleSide - }); - new THREE.TextureLoader().load( - exports.resourcePath + '/textures/navigation/' + img, - function(texture) { - texture.anisotropy = viewer.renderer.capabilities.getMaxAnisotropy(); - material.map = texture; - material.needsUpdate = true; - }); - return material; - }; - - let planeGeometry = new THREE.PlaneGeometry(1, 1); - - this.front = new THREE.Mesh(planeGeometry, createPlaneMaterial('F.png')); - this.front.position.y = -0.5; - this.front.rotation.x = Math.PI / 2.0; - this.front.updateMatrixWorld(); - this.front.name = "F"; - this.add(this.front); - - this.back = new THREE.Mesh(planeGeometry, createPlaneMaterial('B.png')); - this.back.position.y = 0.5; - this.back.rotation.x = Math.PI / 2.0; - this.back.updateMatrixWorld(); - this.back.name = "B"; - this.add(this.back); - - this.left = new THREE.Mesh(planeGeometry, createPlaneMaterial('L.png')); - this.left.position.x = -0.5; - this.left.rotation.y = Math.PI / 2.0; - this.left.updateMatrixWorld(); - this.left.name = "L"; - this.add(this.left); - - this.right = new THREE.Mesh(planeGeometry, createPlaneMaterial('R.png')); - this.right.position.x = 0.5; - this.right.rotation.y = Math.PI / 2.0; - this.right.updateMatrixWorld(); - this.right.name = "R"; - this.add(this.right); - - this.bottom = new THREE.Mesh(planeGeometry, createPlaneMaterial('D.png')); - this.bottom.position.z = -0.5; - this.bottom.updateMatrixWorld(); - this.bottom.name = "D"; - this.add(this.bottom); - - this.top = new THREE.Mesh(planeGeometry, createPlaneMaterial('U.png')); - this.top.position.z = 0.5; - this.top.updateMatrixWorld(); - this.top.name = "U"; - this.add(this.top); - - this.width = 150; // in px - - this.camera = new THREE.OrthographicCamera(-1, 1, 1, -1, -1, 1); - this.camera.position.copy(new THREE.Vector3(0, 0, 0)); - this.camera.lookAt(new THREE.Vector3(0, 1, 0)); - this.camera.updateMatrixWorld(); - this.camera.rotation.order = "ZXY"; - - let onMouseDown = (event) => { - if (!this.visible) { - return; - } - - this.pickedFace = null; - let mouse = new THREE.Vector2(); - mouse.x = event.clientX - (window.innerWidth - this.width); - mouse.y = event.clientY; - - if(mouse.x < 0 || mouse.y > this.width) return; - - mouse.x = (mouse.x / this.width) * 2 - 1; - mouse.y = -(mouse.y / this.width) * 2 + 1; - - let raycaster = new THREE.Raycaster(); - raycaster.setFromCamera(mouse, this.camera); - raycaster.ray.origin.sub(this.camera.getWorldDirection(new THREE.Vector3())); - - let intersects = raycaster.intersectObjects(this.children); - - let minDistance = 1000; - for (let i = 0; i < intersects.length; i++) { - if(intersects[i].distance < minDistance) { - this.pickedFace = intersects[i].object.name; - minDistance = intersects[i].distance; - } - } - - if(this.pickedFace) { - this.viewer.setView(this.pickedFace); - } - }; - - this.viewer.renderer.domElement.addEventListener('mousedown', onMouseDown, false); - } - - update(rotation) { - this.camera.rotation.copy(rotation); - this.camera.updateMatrixWorld(); - } - - } - - /** - * @author mschuetz / http://mschuetz.at - * - * adapted from THREE.OrbitControls by - * - * @author qiao / https://github.com/qiao - * @author mrdoob / http://mrdoob.com - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author erich666 / http://erichaines.com - * - * - * - */ - - - class OrbitControls extends EventDispatcher{ - - constructor(viewer){ - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.scene = null; - this.sceneControls = new THREE.Scene(); - - this.rotationSpeed = 5; - - this.fadeFactor = 20; - this.yawDelta = 0; - this.pitchDelta = 0; - this.panDelta = new THREE.Vector2(0, 0); - this.radiusDelta = 0; - - this.doubleClockZoomEnabled = true; - - this.tweens = []; - - let drag = (e) => { - if (e.drag.object !== null) { - return; - } - - if (e.drag.startHandled === undefined) { - e.drag.startHandled = true; - - this.dispatchEvent({type: 'start'}); - } - - let ndrag = { - x: e.drag.lastDrag.x / this.renderer.domElement.clientWidth, - y: e.drag.lastDrag.y / this.renderer.domElement.clientHeight - }; - - if (e.drag.mouse === MOUSE.LEFT) { - this.yawDelta += ndrag.x * this.rotationSpeed; - this.pitchDelta += ndrag.y * this.rotationSpeed; - - this.stopTweens(); - } else if (e.drag.mouse === MOUSE.RIGHT) { - this.panDelta.x += ndrag.x; - this.panDelta.y += ndrag.y; - - this.stopTweens(); - } - }; - - let drop = e => { - this.dispatchEvent({type: 'end'}); - }; - - let scroll = (e) => { - let resolvedRadius = this.scene.view.radius + this.radiusDelta; - - this.radiusDelta += -e.delta * resolvedRadius * 0.1; - - this.stopTweens(); - }; - - let dblclick = (e) => { - if(this.doubleClockZoomEnabled){ - this.zoomToLocation(e.mouse); - } - }; - - let previousTouch = null; - let touchStart = e => { - previousTouch = e; - }; - - let touchEnd = e => { - previousTouch = e; - }; - - let touchMove = e => { - if (e.touches.length === 2 && previousTouch.touches.length === 2){ - let prev = previousTouch; - let curr = e; - - let prevDX = prev.touches[0].pageX - prev.touches[1].pageX; - let prevDY = prev.touches[0].pageY - prev.touches[1].pageY; - let prevDist = Math.sqrt(prevDX * prevDX + prevDY * prevDY); - - let currDX = curr.touches[0].pageX - curr.touches[1].pageX; - let currDY = curr.touches[0].pageY - curr.touches[1].pageY; - let currDist = Math.sqrt(currDX * currDX + currDY * currDY); - - let delta = currDist / prevDist; - let resolvedRadius = this.scene.view.radius + this.radiusDelta; - let newRadius = resolvedRadius / delta; - this.radiusDelta = newRadius - resolvedRadius; - - this.stopTweens(); - }else if(e.touches.length === 3 && previousTouch.touches.length === 3){ - let prev = previousTouch; - let curr = e; - - let prevMeanX = (prev.touches[0].pageX + prev.touches[1].pageX + prev.touches[2].pageX) / 3; - let prevMeanY = (prev.touches[0].pageY + prev.touches[1].pageY + prev.touches[2].pageY) / 3; - - let currMeanX = (curr.touches[0].pageX + curr.touches[1].pageX + curr.touches[2].pageX) / 3; - let currMeanY = (curr.touches[0].pageY + curr.touches[1].pageY + curr.touches[2].pageY) / 3; - - let delta = { - x: (currMeanX - prevMeanX) / this.renderer.domElement.clientWidth, - y: (currMeanY - prevMeanY) / this.renderer.domElement.clientHeight - }; - - this.panDelta.x += delta.x; - this.panDelta.y += delta.y; - - this.stopTweens(); - } - - previousTouch = e; - }; - - this.addEventListener('touchstart', touchStart); - this.addEventListener('touchend', touchEnd); - this.addEventListener('touchmove', touchMove); - this.addEventListener('drag', drag); - this.addEventListener('drop', drop); - this.addEventListener('mousewheel', scroll); - this.addEventListener('dblclick', dblclick); - } - - setScene (scene) { - this.scene = scene; - } - - stop(){ - this.yawDelta = 0; - this.pitchDelta = 0; - this.radiusDelta = 0; - this.panDelta.set(0, 0); - } - - zoomToLocation(mouse){ - let camera = this.scene.getActiveCamera(); - - let I = Utils.getMousePointCloudIntersection( - mouse, - camera, - this.viewer, - this.scene.pointclouds, - {pickClipped: true}); - - if (I === null) { - return; - } - - let targetRadius = 0; - { - let minimumJumpDistance = 0.2; - - let domElement = this.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - - let nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray); - let lastNode = nodes[nodes.length - 1]; - let radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius; - targetRadius = Math.min(this.scene.view.radius, radius); - targetRadius = Math.max(minimumJumpDistance, targetRadius); - } - - let d = this.scene.view.direction.multiplyScalar(-1); - let cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius)); - // TODO Unused: let controlsTargetPosition = I.location; - - let animationDuration = 600; - let easing = TWEEN.Easing.Quartic.Out; - - { // animate - let value = {x: 0}; - let tween = new TWEEN.Tween(value).to({x: 1}, animationDuration); - tween.easing(easing); - this.tweens.push(tween); - - let startPos = this.scene.view.position.clone(); - let targetPos = cameraTargetPosition.clone(); - let startRadius = this.scene.view.radius; - let targetRadius = cameraTargetPosition.distanceTo(I.location); - - tween.onUpdate(() => { - let t = value.x; - this.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x; - this.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y; - this.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z; - - this.scene.view.radius = (1 - t) * startRadius + t * targetRadius; - this.viewer.setMoveSpeed(this.scene.view.radius / 2.5); - }); - - tween.onComplete(() => { - this.tweens = this.tweens.filter(e => e !== tween); - }); - - tween.start(); - } - } - - stopTweens () { - this.tweens.forEach(e => e.stop()); - this.tweens = []; - } - - update (delta) { - let view = this.scene.view; - - { // apply rotation - let progression = Math.min(1, this.fadeFactor * delta); - - let yaw = view.yaw; - let pitch = view.pitch; - let pivot = view.getPivot(); - - yaw -= progression * this.yawDelta; - pitch -= progression * this.pitchDelta; - - view.yaw = yaw; - view.pitch = pitch; - - let V = this.scene.view.direction.multiplyScalar(-view.radius); - let position = new THREE.Vector3().addVectors(pivot, V); - - view.position.copy(position); - } - - { // apply pan - let progression = Math.min(1, this.fadeFactor * delta); - let panDistance = progression * view.radius * 3; - - let px = -this.panDelta.x * panDistance; - let py = this.panDelta.y * panDistance; - - view.pan(px, py); - } - - { // apply zoom - let progression = Math.min(1, this.fadeFactor * delta); - - // let radius = view.radius + progression * this.radiusDelta * view.radius * 0.1; - let radius = view.radius + progression * this.radiusDelta; - - let V = view.direction.multiplyScalar(-radius); - let position = new THREE.Vector3().addVectors(view.getPivot(), V); - view.radius = radius; - - view.position.copy(position); - } - - { - let speed = view.radius / 2.5; - this.viewer.setMoveSpeed(speed); - } - - { // decelerate over time - let progression = Math.min(1, this.fadeFactor * delta); - let attenuation = Math.max(0, 1 - this.fadeFactor * delta); - - this.yawDelta *= attenuation; - this.pitchDelta *= attenuation; - this.panDelta.multiplyScalar(attenuation); - // this.radiusDelta *= attenuation; - this.radiusDelta -= progression * this.radiusDelta; - } - } - }; - - /** - * @author mschuetz / http://mschuetz.at - * - * adapted from THREE.OrbitControls by - * - * @author qiao / https://github.com/qiao - * @author mrdoob / http://mrdoob.com - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author erich666 / http://erichaines.com - * - * - * - */ - - - class FirstPersonControls extends EventDispatcher { - constructor (viewer) { - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.scene = null; - this.sceneControls = new THREE.Scene(); - - this.rotationSpeed = 200; - this.moveSpeed = 10; - this.lockElevation = false; - - this.keys = { - FORWARD: ['W'.charCodeAt(0), 38], - BACKWARD: ['S'.charCodeAt(0), 40], - LEFT: ['A'.charCodeAt(0), 37], - RIGHT: ['D'.charCodeAt(0), 39], - UP: ['R'.charCodeAt(0), 33], - DOWN: ['F'.charCodeAt(0), 34] - }; - - this.fadeFactor = 50; - this.yawDelta = 0; - this.pitchDelta = 0; - this.translationDelta = new THREE.Vector3(0, 0, 0); - this.translationWorldDelta = new THREE.Vector3(0, 0, 0); - - this.tweens = []; - - let drag = (e) => { - if (e.drag.object !== null) { - return; - } - - if (e.drag.startHandled === undefined) { - e.drag.startHandled = true; - - this.dispatchEvent({type: 'start'}); - } - - let moveSpeed = this.viewer.getMoveSpeed(); - - let ndrag = { - x: e.drag.lastDrag.x / this.renderer.domElement.clientWidth, - y: e.drag.lastDrag.y / this.renderer.domElement.clientHeight - }; - - if (e.drag.mouse === MOUSE.LEFT) { - this.yawDelta += ndrag.x * this.rotationSpeed; - this.pitchDelta += ndrag.y * this.rotationSpeed; - } else if (e.drag.mouse === MOUSE.RIGHT) { - this.translationDelta.x -= ndrag.x * moveSpeed * 100; - this.translationDelta.z += ndrag.y * moveSpeed * 100; - } - }; - - let drop = e => { - this.dispatchEvent({type: 'end'}); - }; - - let scroll = (e) => { - let speed = this.viewer.getMoveSpeed(); - - if (e.delta < 0) { - speed = speed * 0.9; - } else if (e.delta > 0) { - speed = speed / 0.9; - } - - speed = Math.max(speed, 0.1); - - this.viewer.setMoveSpeed(speed); - }; - - let dblclick = (e) => { - this.zoomToLocation(e.mouse); - }; - - this.addEventListener('drag', drag); - this.addEventListener('drop', drop); - this.addEventListener('mousewheel', scroll); - this.addEventListener('dblclick', dblclick); - } - - setScene (scene) { - this.scene = scene; - } - - stop(){ - this.yawDelta = 0; - this.pitchDelta = 0; - this.translationDelta.set(0, 0, 0); - } - - zoomToLocation(mouse){ - let camera = this.scene.getActiveCamera(); - - let I = Utils.getMousePointCloudIntersection( - mouse, - camera, - this.viewer, - this.scene.pointclouds); - - if (I === null) { - return; - } - - let targetRadius = 0; - { - let minimumJumpDistance = 0.2; - - let domElement = this.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - - let nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray); - let lastNode = nodes[nodes.length - 1]; - let radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius; - targetRadius = Math.min(this.scene.view.radius, radius); - targetRadius = Math.max(minimumJumpDistance, targetRadius); - } - - let d = this.scene.view.direction.multiplyScalar(-1); - let cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius)); - // TODO Unused: let controlsTargetPosition = I.location; - - let animationDuration = 600; - let easing = TWEEN.Easing.Quartic.Out; - - { // animate - let value = {x: 0}; - let tween = new TWEEN.Tween(value).to({x: 1}, animationDuration); - tween.easing(easing); - this.tweens.push(tween); - - let startPos = this.scene.view.position.clone(); - let targetPos = cameraTargetPosition.clone(); - let startRadius = this.scene.view.radius; - let targetRadius = cameraTargetPosition.distanceTo(I.location); - - tween.onUpdate(() => { - let t = value.x; - this.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x; - this.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y; - this.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z; - - this.scene.view.radius = (1 - t) * startRadius + t * targetRadius; - this.viewer.setMoveSpeed(this.scene.view.radius / 2.5); - }); - - tween.onComplete(() => { - this.tweens = this.tweens.filter(e => e !== tween); - }); - - tween.start(); - } - } - - update (delta) { - let view = this.scene.view; - - { // cancel move animations on user input - let changes = [ this.yawDelta, - this.pitchDelta, - this.translationDelta.length(), - this.translationWorldDelta.length() ]; - let changeHappens = changes.some(e => Math.abs(e) > 0.001); - if (changeHappens && this.tweens.length > 0) { - this.tweens.forEach(e => e.stop()); - this.tweens = []; - } - } - - { // accelerate while input is given - let ih = this.viewer.inputHandler; - - let moveForward = this.keys.FORWARD.some(e => ih.pressedKeys[e]); - let moveBackward = this.keys.BACKWARD.some(e => ih.pressedKeys[e]); - let moveLeft = this.keys.LEFT.some(e => ih.pressedKeys[e]); - let moveRight = this.keys.RIGHT.some(e => ih.pressedKeys[e]); - let moveUp = this.keys.UP.some(e => ih.pressedKeys[e]); - let moveDown = this.keys.DOWN.some(e => ih.pressedKeys[e]); - - if(this.lockElevation){ - let dir = view.direction; - dir.z = 0; - dir.normalize(); - - if (moveForward && moveBackward) { - this.translationWorldDelta.set(0, 0, 0); - } else if (moveForward) { - this.translationWorldDelta.copy(dir.multiplyScalar(this.viewer.getMoveSpeed())); - } else if (moveBackward) { - this.translationWorldDelta.copy(dir.multiplyScalar(-this.viewer.getMoveSpeed())); - } - }else { - if (moveForward && moveBackward) { - this.translationDelta.y = 0; - } else if (moveForward) { - this.translationDelta.y = this.viewer.getMoveSpeed(); - } else if (moveBackward) { - this.translationDelta.y = -this.viewer.getMoveSpeed(); - } - } - - if (moveLeft && moveRight) { - this.translationDelta.x = 0; - } else if (moveLeft) { - this.translationDelta.x = -this.viewer.getMoveSpeed(); - } else if (moveRight) { - this.translationDelta.x = this.viewer.getMoveSpeed(); - } - - if (moveUp && moveDown) { - this.translationWorldDelta.z = 0; - } else if (moveUp) { - this.translationWorldDelta.z = this.viewer.getMoveSpeed(); - } else if (moveDown) { - this.translationWorldDelta.z = -this.viewer.getMoveSpeed(); - } - } - - { // apply rotation - let yaw = view.yaw; - let pitch = view.pitch; - - yaw -= this.yawDelta * delta; - pitch -= this.pitchDelta * delta; - - view.yaw = yaw; - view.pitch = pitch; - } - - { // apply translation - view.translate( - this.translationDelta.x * delta, - this.translationDelta.y * delta, - this.translationDelta.z * delta - ); - - view.translateWorld( - this.translationWorldDelta.x * delta, - this.translationWorldDelta.y * delta, - this.translationWorldDelta.z * delta - ); - } - - { // set view target according to speed - view.radius = 3 * this.viewer.getMoveSpeed(); - } - - { // decelerate over time - let attenuation = Math.max(0, 1 - this.fadeFactor * delta); - this.yawDelta *= attenuation; - this.pitchDelta *= attenuation; - this.translationDelta.multiplyScalar(attenuation); - this.translationWorldDelta.multiplyScalar(attenuation); - } - } - }; - - class EarthControls extends EventDispatcher { - constructor (viewer) { - super(viewer); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.scene = null; - this.sceneControls = new THREE.Scene(); - - this.rotationSpeed = 10; - - this.fadeFactor = 20; - this.wheelDelta = 0; - this.zoomDelta = new THREE.Vector3(); - this.camStart = null; - - this.tweens = []; - - { - let sg = new THREE.SphereGeometry(1, 16, 16); - let sm = new THREE.MeshNormalMaterial(); - this.pivotIndicator = new THREE.Mesh(sg, sm); - this.pivotIndicator.visible = false; - this.sceneControls.add(this.pivotIndicator); - } - - let drag = (e) => { - if (e.drag.object !== null) { - return; - } - - if (!this.pivot) { - return; - } - - if (e.drag.startHandled === undefined) { - e.drag.startHandled = true; - - this.dispatchEvent({type: 'start'}); - } - - let camStart = this.camStart; - let camera = this.scene.getActiveCamera(); - let view = this.viewer.scene.view; - - // let camera = this.viewer.scene.camera; - let mouse = e.drag.end; - let domElement = this.viewer.renderer.domElement; - - if (e.drag.mouse === MOUSE.LEFT) { - - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - let plane = new THREE.Plane().setFromNormalAndCoplanarPoint( - new THREE.Vector3(0, 0, 1), - this.pivot); - - let distanceToPlane = ray.distanceToPlane(plane); - - if (distanceToPlane > 0) { - let I = new THREE.Vector3().addVectors( - camStart.position, - ray.direction.clone().multiplyScalar(distanceToPlane)); - - let movedBy = new THREE.Vector3().subVectors( - I, this.pivot); - - let newCamPos = camStart.position.clone().sub(movedBy); - - view.position.copy(newCamPos); - - { - let distance = newCamPos.distanceTo(this.pivot); - view.radius = distance; - let speed = view.radius / 2.5; - this.viewer.setMoveSpeed(speed); - } - } - } else if (e.drag.mouse === MOUSE.RIGHT) { - let ndrag = { - x: e.drag.lastDrag.x / this.renderer.domElement.clientWidth, - y: e.drag.lastDrag.y / this.renderer.domElement.clientHeight - }; - - let yawDelta = -ndrag.x * this.rotationSpeed * 0.5; - let pitchDelta = -ndrag.y * this.rotationSpeed * 0.2; - - let originalPitch = view.pitch; - let tmpView = view.clone(); - tmpView.pitch = tmpView.pitch + pitchDelta; - pitchDelta = tmpView.pitch - originalPitch; - - let pivotToCam = new THREE.Vector3().subVectors(view.position, this.pivot); - let pivotToCamTarget = new THREE.Vector3().subVectors(view.getPivot(), this.pivot); - let side = view.getSide(); - - pivotToCam.applyAxisAngle(side, pitchDelta); - pivotToCamTarget.applyAxisAngle(side, pitchDelta); - - pivotToCam.applyAxisAngle(new THREE.Vector3(0, 0, 1), yawDelta); - pivotToCamTarget.applyAxisAngle(new THREE.Vector3(0, 0, 1), yawDelta); - - let newCam = new THREE.Vector3().addVectors(this.pivot, pivotToCam); - // TODO: Unused: let newCamTarget = new THREE.Vector3().addVectors(this.pivot, pivotToCamTarget); - - view.position.copy(newCam); - view.yaw += yawDelta; - view.pitch += pitchDelta; - } - }; - - let onMouseDown = e => { - let I = Utils.getMousePointCloudIntersection( - e.mouse, - this.scene.getActiveCamera(), - this.viewer, - this.scene.pointclouds, - {pickClipped: false}); - - if (I) { - this.pivot = I.location; - this.camStart = this.scene.getActiveCamera().clone(); - this.pivotIndicator.visible = true; - this.pivotIndicator.position.copy(I.location); - } - }; - - let drop = e => { - this.dispatchEvent({type: 'end'}); - }; - - let onMouseUp = e => { - this.camStart = null; - this.pivot = null; - this.pivotIndicator.visible = false; - }; - - let scroll = (e) => { - this.wheelDelta += e.delta; - }; - - let dblclick = (e) => { - this.zoomToLocation(e.mouse); - }; - - this.addEventListener('drag', drag); - this.addEventListener('drop', drop); - this.addEventListener('mousewheel', scroll); - this.addEventListener('mousedown', onMouseDown); - this.addEventListener('mouseup', onMouseUp); - this.addEventListener('dblclick', dblclick); - } - - setScene (scene) { - this.scene = scene; - } - - stop(){ - this.wheelDelta = 0; - this.zoomDelta.set(0, 0, 0); - } - - zoomToLocation(mouse){ - let camera = this.scene.getActiveCamera(); - - let I = Utils.getMousePointCloudIntersection( - mouse, - camera, - this.viewer, - this.scene.pointclouds); - - if (I === null) { - return; - } - - let targetRadius = 0; - { - let minimumJumpDistance = 0.2; - - let domElement = this.renderer.domElement; - let ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight); - - let nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray); - let lastNode = nodes[nodes.length - 1]; - let radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius; - targetRadius = Math.min(this.scene.view.radius, radius); - targetRadius = Math.max(minimumJumpDistance, targetRadius); - } - - let d = this.scene.view.direction.multiplyScalar(-1); - let cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius)); - // TODO Unused: let controlsTargetPosition = I.location; - - let animationDuration = 600; - let easing = TWEEN.Easing.Quartic.Out; - - { // animate - let value = {x: 0}; - let tween = new TWEEN.Tween(value).to({x: 1}, animationDuration); - tween.easing(easing); - this.tweens.push(tween); - - let startPos = this.scene.view.position.clone(); - let targetPos = cameraTargetPosition.clone(); - let startRadius = this.scene.view.radius; - let targetRadius = cameraTargetPosition.distanceTo(I.location); - - tween.onUpdate(() => { - let t = value.x; - this.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x; - this.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y; - this.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z; - - this.scene.view.radius = (1 - t) * startRadius + t * targetRadius; - this.viewer.setMoveSpeed(this.scene.view.radius / 2.5); - }); - - tween.onComplete(() => { - this.tweens = this.tweens.filter(e => e !== tween); - }); - - tween.start(); - } - } - - update (delta) { - let view = this.scene.view; - let fade = Math.pow(0.5, this.fadeFactor * delta); - let progression = 1 - fade; - let camera = this.scene.getActiveCamera(); - - // compute zoom - if (this.wheelDelta !== 0) { - let I = Utils.getMousePointCloudIntersection( - this.viewer.inputHandler.mouse, - this.scene.getActiveCamera(), - this.viewer, - this.scene.pointclouds); - - if (I) { - let resolvedPos = new THREE.Vector3().addVectors(view.position, this.zoomDelta); - let distance = I.location.distanceTo(resolvedPos); - let jumpDistance = distance * 0.2 * this.wheelDelta; - let targetDir = new THREE.Vector3().subVectors(I.location, view.position); - targetDir.normalize(); - - resolvedPos.add(targetDir.multiplyScalar(jumpDistance)); - this.zoomDelta.subVectors(resolvedPos, view.position); - - { - let distance = resolvedPos.distanceTo(I.location); - view.radius = distance; - let speed = view.radius / 2.5; - this.viewer.setMoveSpeed(speed); - } - } - } - - // apply zoom - if (this.zoomDelta.length() !== 0) { - let p = this.zoomDelta.clone().multiplyScalar(progression); - - let newPos = new THREE.Vector3().addVectors(view.position, p); - view.position.copy(newPos); - } - - if (this.pivotIndicator.visible) { - let distance = this.pivotIndicator.position.distanceTo(view.position); - let pixelwidth = this.renderer.domElement.clientwidth; - let pixelHeight = this.renderer.domElement.clientHeight; - let pr = Utils.projectedRadius(1, camera, distance, pixelwidth, pixelHeight); - let scale = (10 / pr); - this.pivotIndicator.scale.set(scale, scale, scale); - } - - // decelerate over time - { - this.zoomDelta.multiplyScalar(fade); - this.wheelDelta = 0; - } - } - }; - - /** - * @author chrisl / Geodan - * - * adapted from Potree.FirstPersonControls by - * - * @author mschuetz / http://mschuetz.at - * - * and THREE.DeviceOrientationControls by - * - * @author richt / http://richt.me - * @author WestLangley / http://github.com/WestLangley - * - * - * - */ - - class DeviceOrientationControls extends EventDispatcher{ - constructor(viewer){ - super(); - - this.viewer = viewer; - this.renderer = viewer.renderer; - - this.scene = null; - this.sceneControls = new THREE.Scene(); - - this.screenOrientation = window.orientation || 0; - - let deviceOrientationChange = e => { - this.deviceOrientation = e; - }; - - let screenOrientationChange = e => { - this.screenOrientation = window.orientation || 0; - }; - - if ('ondeviceorientationabsolute' in window) { - window.addEventListener('deviceorientationabsolute', deviceOrientationChange); - } else if ('ondeviceorientation' in window) { - window.addEventListener('deviceorientation', deviceOrientationChange); - } else { - console.warn("No device orientation found."); - } - // window.addEventListener('deviceorientation', deviceOrientationChange); - window.addEventListener('orientationchange', screenOrientationChange); - } - - setScene (scene) { - this.scene = scene; - } - - update (delta) { - let computeQuaternion = function (alpha, beta, gamma, orient) { - let quaternion = new THREE.Quaternion(); - - let zee = new THREE.Vector3(0, 0, 1); - let euler = new THREE.Euler(); - let q0 = new THREE.Quaternion(); - - euler.set(beta, gamma, alpha, 'ZXY'); - quaternion.setFromEuler(euler); - quaternion.multiply(q0.setFromAxisAngle(zee, -orient)); - - return quaternion; - }; - - if (typeof this.deviceOrientation !== 'undefined') { - let alpha = this.deviceOrientation.alpha ? THREE.Math.degToRad(this.deviceOrientation.alpha) : 0; - let beta = this.deviceOrientation.beta ? THREE.Math.degToRad(this.deviceOrientation.beta) : 0; - let gamma = this.deviceOrientation.gamma ? THREE.Math.degToRad(this.deviceOrientation.gamma) : 0; - let orient = this.screenOrientation ? THREE.Math.degToRad(this.screenOrientation) : 0; - - let quaternion = computeQuaternion(alpha, beta, gamma, orient); - viewer.scene.cameraP.quaternion.set(quaternion.x, quaternion.y, quaternion.z, quaternion.w); - } - } - }; - - class Viewer extends EventDispatcher{ - - constructor(domElement, args = {}){ - super(); - - this.renderArea = domElement; - this.guiLoaded = false; - this.guiLoadTasks = []; - - this.vr = null; - this.onVrListeners = []; - - this.messages = []; - this.elMessages = $(` -
        -
        `); - $(domElement).append(this.elMessages); - - try{ - - { // generate missing dom hierarchy - if ($(domElement).find('#potree_map').length === 0) { - let potreeMap = $(` - - `); - $(domElement).append(potreeMap); - } - - if ($(domElement).find('#potree_description').length === 0) { - let potreeDescription = $(`
        `); - $(domElement).append(potreeDescription); - } - - if ($(domElement).find('#potree_annotations').length === 0) { - let potreeAnnotationContainer = $(` -
        `); - $(domElement).append(potreeAnnotationContainer); - } - } - - this.pointCloudLoadedCallback = args.onPointCloudLoaded || function () {}; - - // if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { - // defaultSettings.navigation = "Orbit"; - // } - - this.server = null; - - this.fov = 60; - this.isFlipYZ = false; - this.useDEMCollisions = false; - this.generateDEM = false; - this.minNodeSize = 30; - this.edlStrength = 1.0; - this.edlRadius = 1.4; - this.edlOpacity = 1.0; - this.useEDL = false; - this.description = ""; - - this.classifications = ClassificationScheme.DEFAULT; - - this.moveSpeed = 10; - - this.lengthUnit = LengthUnits.METER; - this.lengthUnitDisplay = LengthUnits.METER; - - this.showBoundingBox = false; - this.showAnnotations = true; - this.freeze = false; - this.clipTask = ClipTask.HIGHLIGHT; - this.clipMethod = ClipMethod.INSIDE_ANY; - - this.elevationGradientRepeat = ElevationGradientRepeat.CLAMP; - - this.filterReturnNumberRange = [0, 7]; - this.filterNumberOfReturnsRange = [0, 7]; - this.filterGPSTimeRange = [-Infinity, Infinity]; - this.filterPointSourceIDRange = [0, 65535]; - - this.potreeRenderer = null; - this.edlRenderer = null; - this.renderer = null; - this.pRenderer = null; - - this.scene = null; - this.overlay = null; - this.overlayCamera = null; - - this.inputHandler = null; - this.controls = null; - - this.clippingTool = null; - this.transformationTool = null; - this.navigationCube = null; - this.compass = null; - - this.skybox = null; - this.clock = new THREE.Clock(); - this.background = null; - - this.initThree(); - this.prepareVR(); - - if(args.noDragAndDrop){ - - }else { - this.initDragAndDrop(); - } - - if(typeof Stats !== "undefined"){ - this.stats = new Stats(); - this.stats.showPanel( 0 ); // 0: fps, 1: ms, 2: mb, 3+: custom - document.body.appendChild( this.stats.dom ); - } - - { - let canvas = this.renderer.domElement; - canvas.addEventListener("webglcontextlost", (e) => { - console.log(e); - this.postMessage("WebGL context lost. \u2639"); - - let gl = this.renderer.getContext(); - let error = gl.getError(); - console.log(error); - }, false); - } - - { - this.overlay = new THREE.Scene(); - this.overlayCamera = new THREE.OrthographicCamera( - 0, 1, - 1, 0, - -1000, 1000 - ); - } - - this.pRenderer = new Renderer(this.renderer); - - { - let near = 2.5; - let far = 10.0; - let fov = 90; - - this.shadowTestCam = new THREE.PerspectiveCamera(90, 1, near, far); - this.shadowTestCam.position.set(3.50, -2.80, 8.561); - this.shadowTestCam.lookAt(new THREE.Vector3(0, 0, 4.87)); - } - - - let scene = new Scene(this.renderer); - this.setScene(scene); - - { - this.inputHandler = new InputHandler(this); - this.inputHandler.setScene(this.scene); - - this.clippingTool = new ClippingTool(this); - this.transformationTool = new TransformationTool(this); - this.navigationCube = new NavigationCube(this); - this.navigationCube.visible = false; - - this.compass = new Compass(this); - - this.createControls(); - - this.clippingTool.setScene(this.scene); - - let onPointcloudAdded = (e) => { - if (this.scene.pointclouds.length === 1) { - let speed = e.pointcloud.boundingBox.getSize(new THREE.Vector3()).length(); - speed = speed / 5; - this.setMoveSpeed(speed); - } - }; - - let onVolumeRemoved = (e) => { - this.inputHandler.deselect(e.volume); - }; - - this.addEventListener('scene_changed', (e) => { - this.inputHandler.setScene(e.scene); - this.clippingTool.setScene(this.scene); - - if(!e.scene.hasEventListener("pointcloud_added", onPointcloudAdded)){ - e.scene.addEventListener("pointcloud_added", onPointcloudAdded); - } - - if(!e.scene.hasEventListener("volume_removed", onPointcloudAdded)){ - e.scene.addEventListener("volume_removed", onVolumeRemoved); - } - - }); - - this.scene.addEventListener("volume_removed", onVolumeRemoved); - this.scene.addEventListener('pointcloud_added', onPointcloudAdded); - } - - { // set defaults - this.setFOV(60); - this.setEDLEnabled(false); - this.setEDLRadius(1.4); - this.setEDLStrength(0.4); - this.setEDLOpacity(1.0); - this.setClipTask(ClipTask.HIGHLIGHT); - this.setClipMethod(ClipMethod.INSIDE_ANY); - this.setPointBudget(1*1000*1000); - this.setShowBoundingBox(false); - this.setFreeze(false); - this.setControls(this.orbitControls); - this.setBackground('gradient'); - - this.scaleFactor = 1; - - this.loadSettingsFromURL(); - } - - // start rendering! - if(args.useDefaultRenderLoop === undefined || args.useDefaultRenderLoop === true){ - requestAnimationFrame(this.loop.bind(this)); - } - - this.loadGUI = this.loadGUI.bind(this); - - this.annotationTool = new AnnotationTool(this); - this.measuringTool = new MeasuringTool(this); - this.profileTool = new ProfileTool(this); - this.volumeTool = new VolumeTool(this); - - }catch(e){ - this.onCrash(e); - } - } - - onCrash(error){ - - $(this.renderArea).empty(); - - if ($(this.renderArea).find('#potree_failpage').length === 0) { - let elFailPage = $(` -
        - -

        Potree Encountered An Error

        - -

        - This may happen if your browser or graphics card is not supported. -
        - We recommend to use - Chrome - or - Firefox. -

        - -

        - Please also visit webglreport.com and - check whether your system supports WebGL. -

        -

        - If you are already using one of the recommended browsers and WebGL is enabled, - consider filing an issue report at github,
        - including your operating system, graphics card, browser and browser version, as well as the - error message below.
        - Please do not report errors on unsupported browsers. -

        - -
        
        -				
        -			
        `); - - let elErrorMessage = elFailPage.find('#potree_error_console'); - elErrorMessage.html(error.stack); - - $(this.renderArea).append(elFailPage); - } - - throw error; - } - - // ------------------------------------------------------------------------------------ - // Viewer API - // ------------------------------------------------------------------------------------ - - setScene (scene) { - if (scene === this.scene) { - return; - } - - let oldScene = this.scene; - this.scene = scene; - - this.dispatchEvent({ - type: 'scene_changed', - oldScene: oldScene, - scene: scene - }); - - { // Annotations - $('.annotation').detach(); - - // for(let annotation of this.scene.annotations){ - // this.renderArea.appendChild(annotation.domElement[0]); - // } - - this.scene.annotations.traverse(annotation => { - this.renderArea.appendChild(annotation.domElement[0]); - }); - - if (!this.onAnnotationAdded) { - this.onAnnotationAdded = e => { - // console.log("annotation added: " + e.annotation.title); - - e.annotation.traverse(node => { - - $("#potree_annotation_container").append(node.domElement); - //this.renderArea.appendChild(node.domElement[0]); - node.scene = this.scene; - }); - }; - } - - if (oldScene) { - oldScene.annotations.removeEventListener('annotation_added', this.onAnnotationAdded); - } - this.scene.annotations.addEventListener('annotation_added', this.onAnnotationAdded); - } - }; - - setControls(controls){ - if (controls !== this.controls) { - if (this.controls) { - this.controls.enabled = false; - this.inputHandler.removeInputListener(this.controls); - } - - this.controls = controls; - this.controls.enabled = true; - this.inputHandler.addInputListener(this.controls); - } - } - - getControls () { - return this.controls; - } - - getMinNodeSize () { - return this.minNodeSize; - }; - - setMinNodeSize (value) { - if (this.minNodeSize !== value) { - this.minNodeSize = value; - this.dispatchEvent({'type': 'minnodesize_changed', 'viewer': this}); - } - }; - - getBackground () { - return this.background; - } - - setBackground(bg){ - if (this.background === bg) { - return; - } - - if(bg === "skybox"){ - this.skybox = Utils.loadSkybox(new URL(Potree.resourcePath + '/textures/skybox2/').href); - } - - this.background = bg; - this.dispatchEvent({'type': 'background_changed', 'viewer': this}); - } - - setDescription (value) { - this.description = value; - - $('#potree_description').html(value); - //$('#potree_description').text(value); - } - - getDescription(){ - return this.description; - } - - setShowBoundingBox (value) { - if (this.showBoundingBox !== value) { - this.showBoundingBox = value; - this.dispatchEvent({'type': 'show_boundingbox_changed', 'viewer': this}); - } - }; - - getShowBoundingBox () { - return this.showBoundingBox; - }; - - setMoveSpeed (value) { - if (this.moveSpeed !== value) { - this.moveSpeed = value; - this.dispatchEvent({'type': 'move_speed_changed', 'viewer': this, 'speed': value}); - } - }; - - getMoveSpeed () { - return this.moveSpeed; - }; - - setWeightClassification (w) { - for (let i = 0; i < this.scene.pointclouds.length; i++) { - this.scene.pointclouds[i].material.weightClassification = w; - this.dispatchEvent({'type': 'attribute_weights_changed' + i, 'viewer': this}); - } - }; - - setFreeze (value) { - value = Boolean(value); - if (this.freeze !== value) { - this.freeze = value; - this.dispatchEvent({'type': 'freeze_changed', 'viewer': this}); - } - }; - - getFreeze () { - return this.freeze; - }; - - getClipTask(){ - return this.clipTask; - } - - getClipMethod(){ - return this.clipMethod; - } - - setClipTask(value){ - if(this.clipTask !== value){ - - this.clipTask = value; - - this.dispatchEvent({ - type: "cliptask_changed", - viewer: this}); - } - } - - setClipMethod(value){ - if(this.clipMethod !== value){ - - this.clipMethod = value; - - this.dispatchEvent({ - type: "clipmethod_changed", - viewer: this}); - } - } - - setElevationGradientRepeat(value){ - if(this.elevationGradientRepeat !== value){ - - this.elevationGradientRepeat = value; - - this.dispatchEvent({ - type: "elevation_gradient_repeat_changed", - viewer: this}); - } - } - - setPointBudget (value) { - if (Potree.pointBudget !== value) { - Potree.pointBudget = parseInt(value); - this.dispatchEvent({'type': 'point_budget_changed', 'viewer': this}); - } - }; - - getPointBudget () { - return Potree.pointBudget; - }; - - setShowAnnotations (value) { - if (this.showAnnotations !== value) { - this.showAnnotations = value; - this.dispatchEvent({'type': 'show_annotations_changed', 'viewer': this}); - } - } - - getShowAnnotations () { - return this.showAnnotations; - } - - setDEMCollisionsEnabled(value){ - if(this.useDEMCollisions !== value){ - this.useDEMCollisions = value; - this.dispatchEvent({'type': 'use_demcollisions_changed', 'viewer': this}); - }; - }; - - getDEMCollisionsEnabled () { - return this.useDEMCollisions; - }; - - setEDLEnabled (value) { - value = Boolean(value); - if (this.useEDL !== value) { - this.useEDL = value; - this.dispatchEvent({'type': 'use_edl_changed', 'viewer': this}); - } - }; - - getEDLEnabled () { - return this.useEDL; - }; - - setEDLRadius (value) { - if (this.edlRadius !== value) { - this.edlRadius = value; - this.dispatchEvent({'type': 'edl_radius_changed', 'viewer': this}); - } - }; - - getEDLRadius () { - return this.edlRadius; - }; - - setEDLStrength (value) { - if (this.edlStrength !== value) { - this.edlStrength = value; - this.dispatchEvent({'type': 'edl_strength_changed', 'viewer': this}); - } - }; - - getEDLStrength () { - return this.edlStrength; - }; - - setEDLOpacity (value) { - if (this.edlOpacity !== value) { - this.edlOpacity = value; - this.dispatchEvent({'type': 'edl_opacity_changed', 'viewer': this}); - } - }; - - getEDLOpacity () { - return this.edlOpacity; - }; - - setFOV (value) { - if (this.fov !== value) { - this.fov = value; - this.dispatchEvent({'type': 'fov_changed', 'viewer': this}); - } - }; - - getFOV () { - return this.fov; - }; - - disableAnnotations () { - this.scene.annotations.traverse(annotation => { - annotation.domElement.css('pointer-events', 'none'); - - // return annotation.visible; - }); - }; - - enableAnnotations () { - this.scene.annotations.traverse(annotation => { - annotation.domElement.css('pointer-events', 'auto'); - - // return annotation.visible; - }); - } - - setClassifications(classifications){ - this.classifications = classifications; - - this.dispatchEvent({'type': 'classifications_changed', 'viewer': this}); - } - - setClassificationVisibility (key, value) { - if (!this.classifications[key]) { - this.classifications[key] = {visible: value, name: 'no name'}; - this.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this}); - } else if (this.classifications[key].visible !== value) { - this.classifications[key].visible = value; - this.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this}); - } - } - - toggleAllClassificationsVisibility(){ - - let numVisible = 0; - let numItems = 0; - for(const key of Object.keys(this.classifications)){ - if(this.classifications[key].visible){ - numVisible++; - } - numItems++; - } - - let visible = true; - if(numVisible === numItems){ - visible = false; - } - - let somethingChanged = false; - - for(const key of Object.keys(this.classifications)){ - if(this.classifications[key].visible !== visible){ - this.classifications[key].visible = visible; - somethingChanged = true; - } - } - - if(somethingChanged){ - this.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this}); - } - } - - setFilterReturnNumberRange(from, to){ - this.filterReturnNumberRange = [from, to]; - this.dispatchEvent({'type': 'filter_return_number_range_changed', 'viewer': this}); - } - - setFilterNumberOfReturnsRange(from, to){ - this.filterNumberOfReturnsRange = [from, to]; - this.dispatchEvent({'type': 'filter_number_of_returns_range_changed', 'viewer': this}); - } - - setFilterGPSTimeRange(from, to){ - this.filterGPSTimeRange = [from, to]; - this.dispatchEvent({'type': 'filter_gps_time_range_changed', 'viewer': this}); - } - - setFilterPointSourceIDRange(from, to){ - this.filterPointSourceIDRange = [from, to]; - this.dispatchEvent({'type': 'filter_point_source_id_range_changed', 'viewer': this}); - } - - setLengthUnit (value) { - switch (value) { - case 'm': - this.lengthUnit = LengthUnits.METER; - this.lengthUnitDisplay = LengthUnits.METER; - break; - case 'ft': - this.lengthUnit = LengthUnits.FEET; - this.lengthUnitDisplay = LengthUnits.FEET; - break; - case 'in': - this.lengthUnit = LengthUnits.INCH; - this.lengthUnitDisplay = LengthUnits.INCH; - break; - } - - this.dispatchEvent({ 'type': 'length_unit_changed', 'viewer': this, value: value}); - }; - - setLengthUnitAndDisplayUnit(lengthUnitValue, lengthUnitDisplayValue) { - switch (lengthUnitValue) { - case 'm': - this.lengthUnit = LengthUnits.METER; - break; - case 'ft': - this.lengthUnit = LengthUnits.FEET; - break; - case 'in': - this.lengthUnit = LengthUnits.INCH; - break; - } - - switch (lengthUnitDisplayValue) { - case 'm': - this.lengthUnitDisplay = LengthUnits.METER; - break; - case 'ft': - this.lengthUnitDisplay = LengthUnits.FEET; - break; - case 'in': - this.lengthUnitDisplay = LengthUnits.INCH; - break; - } - - this.dispatchEvent({ 'type': 'length_unit_changed', 'viewer': this, value: lengthUnitValue }); - }; - - zoomTo(node, factor, animationDuration = 0){ - let view = this.scene.view; - - let camera = this.scene.cameraP.clone(); - camera.rotation.copy(this.scene.cameraP.rotation); - camera.rotation.order = "ZXY"; - camera.rotation.x = Math.PI / 2 + view.pitch; - camera.rotation.z = view.yaw; - camera.updateMatrix(); - camera.updateMatrixWorld(); - camera.zoomTo(node, factor); - - let bs; - if (node.boundingSphere) { - bs = node.boundingSphere; - } else if (node.geometry && node.geometry.boundingSphere) { - bs = node.geometry.boundingSphere; - } else { - bs = node.boundingBox.getBoundingSphere(new THREE.Sphere()); - } - bs = bs.clone().applyMatrix4(node.matrixWorld); - - let startPosition = view.position.clone(); - let endPosition = camera.position.clone(); - let startTarget = view.getPivot(); - let endTarget = bs.center; - let startRadius = view.radius; - let endRadius = endPosition.distanceTo(endTarget); - - let easing = TWEEN.Easing.Quartic.Out; - - { // animate camera position - let pos = startPosition.clone(); - let tween = new TWEEN.Tween(pos).to(endPosition, animationDuration); - tween.easing(easing); - - tween.onUpdate(() => { - view.position.copy(pos); - }); - - tween.start(); - } - - { // animate camera target - let target = startTarget.clone(); - let tween = new TWEEN.Tween(target).to(endTarget, animationDuration); - tween.easing(easing); - tween.onUpdate(() => { - view.lookAt(target); - }); - tween.onComplete(() => { - view.lookAt(target); - this.dispatchEvent({type: 'focusing_finished', target: this}); - }); - - this.dispatchEvent({type: 'focusing_started', target: this}); - tween.start(); - } - }; - - moveToGpsTimeVicinity(time){ - const result = Potree.Utils.findClosestGpsTime(time, viewer); - - const box = result.node.pointcloud.deepestNodeAt(result.position).getBoundingBox(); - const diameter = box.min.distanceTo(box.max); - - const camera = this.scene.getActiveCamera(); - const offset = camera.getWorldDirection(new THREE.Vector3()).multiplyScalar(diameter); - const newCamPos = result.position.clone().sub(offset); - - this.scene.view.position.copy(newCamPos); - this.scene.view.lookAt(result.position); - } - - showAbout () { - $(function () { - $('#about-panel').dialog(); - }); - }; - - getBoundingBox (pointclouds) { - return this.scene.getBoundingBox(pointclouds); - }; - - getGpsTimeExtent(){ - const range = [Infinity, -Infinity]; - - for(const pointcloud of this.scene.pointclouds){ - const attributes = pointcloud.pcoGeometry.pointAttributes.attributes; - const aGpsTime = attributes.find(a => a.name === "gps-time"); - - if(aGpsTime){ - range[0] = Math.min(range[0], aGpsTime.range[0]); - range[1] = Math.max(range[1], aGpsTime.range[1]); - } - } - - return range; - } - - fitToScreen (factor = 1, animationDuration = 0) { - let box = this.getBoundingBox(this.scene.pointclouds); - - let node = new THREE.Object3D(); - node.boundingBox = box; - - this.zoomTo(node, factor, animationDuration); - this.controls.stop(); - }; - - toggleNavigationCube() { - this.navigationCube.visible = !this.navigationCube.visible; - } - - setView(view) { - if(!view) return; - - switch(view) { - case "F": - this.setFrontView(); - break; - case "B": - this.setBackView(); - break; - case "L": - this.setLeftView(); - break; - case "R": - this.setRightView(); - break; - case "U": - this.setTopView(); - break; - case "D": - this.setBottomView(); - break; - } - } - - setTopView(){ - this.scene.view.yaw = 0; - this.scene.view.pitch = -Math.PI / 2; - - this.fitToScreen(); - }; - - setBottomView(){ - this.scene.view.yaw = -Math.PI; - this.scene.view.pitch = Math.PI / 2; - - this.fitToScreen(); - }; - - setFrontView(){ - this.scene.view.yaw = 0; - this.scene.view.pitch = 0; - - this.fitToScreen(); - }; - - setBackView(){ - this.scene.view.yaw = Math.PI; - this.scene.view.pitch = 0; - - this.fitToScreen(); - }; - - setLeftView(){ - this.scene.view.yaw = -Math.PI / 2; - this.scene.view.pitch = 0; - - this.fitToScreen(); - }; - - setRightView () { - this.scene.view.yaw = Math.PI / 2; - this.scene.view.pitch = 0; - - this.fitToScreen(); - }; - - flipYZ () { - this.isFlipYZ = !this.isFlipYZ; - - // TODO flipyz - console.log('TODO'); - } - - setCameraMode(mode){ - this.scene.cameraMode = mode; - - for(let pointcloud of this.scene.pointclouds) { - pointcloud.material.useOrthographicCamera = mode == CameraMode.ORTHOGRAPHIC; - } - } - - getProjection(){ - const pointcloud = this.scene.pointclouds[0]; - - if(pointcloud){ - return pointcloud.projection; - }else { - return null; - } - } - - async loadProject(url){ - - const response = await fetch(url); - - const text = await response.text(); - const json = lib.parse(text); - // const json = JSON.parse(text); - - if(json.type === "Potree"){ - Potree.loadProject(viewer, json); - } - - //Potree.loadProject(this, url); - } - - saveProject(){ - return Potree.saveProject(this); - } - - loadSettingsFromURL(){ - if(Utils.getParameterByName("pointSize")){ - this.setPointSize(parseFloat(Utils.getParameterByName("pointSize"))); - } - - if(Utils.getParameterByName("FOV")){ - this.setFOV(parseFloat(Utils.getParameterByName("FOV"))); - } - - if(Utils.getParameterByName("opacity")){ - this.setOpacity(parseFloat(Utils.getParameterByName("opacity"))); - } - - if(Utils.getParameterByName("edlEnabled")){ - let enabled = Utils.getParameterByName("edlEnabled") === "true"; - this.setEDLEnabled(enabled); - } - - if (Utils.getParameterByName('edlRadius')) { - this.setEDLRadius(parseFloat(Utils.getParameterByName('edlRadius'))); - } - - if (Utils.getParameterByName('edlStrength')) { - this.setEDLStrength(parseFloat(Utils.getParameterByName('edlStrength'))); - } - - if (Utils.getParameterByName('pointBudget')) { - this.setPointBudget(parseFloat(Utils.getParameterByName('pointBudget'))); - } - - if (Utils.getParameterByName('showBoundingBox')) { - let enabled = Utils.getParameterByName('showBoundingBox') === 'true'; - if (enabled) { - this.setShowBoundingBox(true); - } else { - this.setShowBoundingBox(false); - } - } - - if (Utils.getParameterByName('material')) { - let material = Utils.getParameterByName('material'); - this.setMaterial(material); - } - - if (Utils.getParameterByName('pointSizing')) { - let sizing = Utils.getParameterByName('pointSizing'); - this.setPointSizing(sizing); - } - - if (Utils.getParameterByName('quality')) { - let quality = Utils.getParameterByName('quality'); - this.setQuality(quality); - } - - if (Utils.getParameterByName('position')) { - let value = Utils.getParameterByName('position'); - value = value.replace('[', '').replace(']', ''); - let tokens = value.split(';'); - let x = parseFloat(tokens[0]); - let y = parseFloat(tokens[1]); - let z = parseFloat(tokens[2]); - - this.scene.view.position.set(x, y, z); - } - - if (Utils.getParameterByName('target')) { - let value = Utils.getParameterByName('target'); - value = value.replace('[', '').replace(']', ''); - let tokens = value.split(';'); - let x = parseFloat(tokens[0]); - let y = parseFloat(tokens[1]); - let z = parseFloat(tokens[2]); - - this.scene.view.lookAt(new THREE.Vector3(x, y, z)); - } - - if (Utils.getParameterByName('background')) { - let value = Utils.getParameterByName('background'); - this.setBackground(value); - } - - // if(Utils.getParameterByName("elevationRange")){ - // let value = Utils.getParameterByName("elevationRange"); - // value = value.replace("[", "").replace("]", ""); - // let tokens = value.split(";"); - // let x = parseFloat(tokens[0]); - // let y = parseFloat(tokens[1]); - // - // this.setElevationRange(x, y); - // //this.scene.view.target.set(x, y, z); - // } - }; - - // ------------------------------------------------------------------------------------ - // Viewer Internals - // ------------------------------------------------------------------------------------ - - createControls () { - { // create FIRST PERSON CONTROLS - this.fpControls = new FirstPersonControls(this); - this.fpControls.enabled = false; - this.fpControls.addEventListener('start', this.disableAnnotations.bind(this)); - this.fpControls.addEventListener('end', this.enableAnnotations.bind(this)); - } - - // { // create GEO CONTROLS - // this.geoControls = new GeoControls(this.scene.camera, this.renderer.domElement); - // this.geoControls.enabled = false; - // this.geoControls.addEventListener("start", this.disableAnnotations.bind(this)); - // this.geoControls.addEventListener("end", this.enableAnnotations.bind(this)); - // this.geoControls.addEventListener("move_speed_changed", (event) => { - // this.setMoveSpeed(this.geoControls.moveSpeed); - // }); - // } - - { // create ORBIT CONTROLS - this.orbitControls = new OrbitControls(this); - this.orbitControls.enabled = false; - this.orbitControls.addEventListener('start', this.disableAnnotations.bind(this)); - this.orbitControls.addEventListener('end', this.enableAnnotations.bind(this)); - } - - { // create EARTH CONTROLS - this.earthControls = new EarthControls(this); - this.earthControls.enabled = false; - this.earthControls.addEventListener('start', this.disableAnnotations.bind(this)); - this.earthControls.addEventListener('end', this.enableAnnotations.bind(this)); - } - - { // create DEVICE ORIENTATION CONTROLS - this.deviceControls = new DeviceOrientationControls(this); - this.deviceControls.enabled = false; - this.deviceControls.addEventListener('start', this.disableAnnotations.bind(this)); - this.deviceControls.addEventListener('end', this.enableAnnotations.bind(this)); - } - }; - - toggleSidebar () { - let renderArea = $('#potree_render_area'); - let isVisible = renderArea.css('left') !== '0px'; - - if (isVisible) { - renderArea.css('left', '0px'); - } else { - renderArea.css('left', '300px'); - } - }; - - toggleMap () { - // let map = $('#potree_map'); - // map.toggle(100); - - if (this.mapView) { - this.mapView.toggle(); - } - }; - - onGUILoaded(callback){ - if(this.guiLoaded){ - callback(); - }else { - this.guiLoadTasks.push(callback); - } - } - - promiseGuiLoaded(){ - return new Promise( resolve => { - - if(this.guiLoaded){ - resolve(); - }else { - this.guiLoadTasks.push(resolve); - } - - }); - } - - loadGUI(callback){ - - if(callback){ - this.onGUILoaded(callback); - } - - let viewer = this; - let sidebarContainer = $('#potree_sidebar_container'); - sidebarContainer.load(new URL(Potree.scriptPath + '/sidebar.html').href, () => { - sidebarContainer.css('width', '300px'); - sidebarContainer.css('height', '100%'); - - let imgMenuToggle = document.createElement('img'); - imgMenuToggle.src = new URL(Potree.resourcePath + '/icons/menu_button.svg').href; - imgMenuToggle.onclick = this.toggleSidebar; - imgMenuToggle.classList.add('potree_menu_toggle'); - - let imgMapToggle = document.createElement('img'); - imgMapToggle.src = new URL(Potree.resourcePath + '/icons/map_icon.png').href; - imgMapToggle.style.display = 'none'; - imgMapToggle.onclick = e => { this.toggleMap(); }; - imgMapToggle.id = 'potree_map_toggle'; - - viewer.renderArea.insertBefore(imgMapToggle, viewer.renderArea.children[0]); - viewer.renderArea.insertBefore(imgMenuToggle, viewer.renderArea.children[0]); - - this.mapView = new MapView(this); - this.mapView.init(); - - i18n.init({ - lng: 'en', - resGetPath: Potree.resourcePath + '/lang/__lng__/__ns__.json', - preload: ['en', 'fr', 'de', 'jp', 'se', 'es'], - getAsync: true, - debug: false - }, function (t) { - // Start translation once everything is loaded - $('body').i18n(); - }); - - $(() => { - //initSidebar(this); - let sidebar = new Sidebar(this); - sidebar.init(); - - this.sidebar = sidebar; - - //if (callback) { - // $(callback); - //} - - let elProfile = $('
        ').load(new URL(Potree.scriptPath + '/profile.html').href, () => { - $(document.body).append(elProfile.children()); - this.profileWindow = new ProfileWindow(this); - this.profileWindowController = new ProfileWindowController(this); - - $('#profile_window').draggable({ - handle: $('#profile_titlebar'), - containment: $(document.body) - }); - $('#profile_window').resizable({ - containment: $(document.body), - handles: 'n, e, s, w' - }); - - $(() => { - this.guiLoaded = true; - for(let task of this.guiLoadTasks){ - task(); - } - - }); - }); - - - - }); - - - }); - - return this.promiseGuiLoaded(); - } - - setLanguage (lang) { - i18n.setLng(lang); - $('body').i18n(); - } - - setServer (server) { - this.server = server; - } - - initDragAndDrop(){ - function allowDrag(e) { - e.dataTransfer.dropEffect = 'copy'; - e.preventDefault(); - } - - let dropHandler = async (event) => { - console.log(event); - event.preventDefault(); - - for(const item of event.dataTransfer.items){ - console.log(item); - - if(item.kind !== "file"){ - continue; - } - - const file = item.getAsFile(); - - const isJson = file.name.toLowerCase().endsWith(".json"); - const isGeoPackage = file.name.toLowerCase().endsWith(".gpkg"); - - if(isJson){ - try{ - - const text = await file.text(); - const json = JSON.parse(text); - - if(json.type === "Potree"){ - Potree.loadProject(viewer, json); - } - }catch(e){ - console.error("failed to parse the dropped file as JSON"); - console.error(e); - } - }else if(isGeoPackage){ - const hasPointcloud = viewer.scene.pointclouds.length > 0; - - if(!hasPointcloud){ - let msg = "At least one point cloud is needed that specifies the "; - msg += "coordinate reference system before loading vector data."; - console.error(msg); - }else { - - proj4.defs("WGS84", "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"); - proj4.defs("pointcloud", this.getProjection()); - let transform = proj4("WGS84", "pointcloud"); - - const buffer = await file.arrayBuffer(); - - const params = { - transform: transform, - source: file.name, - }; - - const geo = await Potree.GeoPackageLoader.loadBuffer(buffer, params); - viewer.scene.addGeopackage(geo); - } - } - - } - }; - - - $("body")[0].addEventListener("dragenter", allowDrag); - $("body")[0].addEventListener("dragover", allowDrag); - $("body")[0].addEventListener("drop", dropHandler); - } - - initThree () { - - console.log(`initializing three.js ${THREE.REVISION}`); - - let width = this.renderArea.clientWidth; - let height = this.renderArea.clientHeight; - - let contextAttributes = { - alpha: true, - depth: true, - stencil: false, - antialias: false, - //premultipliedAlpha: _premultipliedAlpha, - preserveDrawingBuffer: true, - powerPreference: "high-performance", - }; - - // let contextAttributes = { - // alpha: false, - // preserveDrawingBuffer: true, - // }; - - // let contextAttributes = { - // alpha: false, - // preserveDrawingBuffer: true, - // }; - - let canvas = document.createElement("canvas"); - - let context = canvas.getContext('webgl', contextAttributes ); - - this.renderer = new THREE.WebGLRenderer({ - alpha: true, - premultipliedAlpha: false, - canvas: canvas, - context: context}); - this.renderer.sortObjects = false; - this.renderer.setSize(width, height); - this.renderer.autoClear = false; - this.renderArea.appendChild(this.renderer.domElement); - this.renderer.domElement.tabIndex = '2222'; - this.renderer.domElement.style.position = 'absolute'; - this.renderer.domElement.addEventListener('mousedown', () => { - this.renderer.domElement.focus(); - }); - //this.renderer.domElement.focus(); - - // NOTE: If extension errors occur, pass the string into this.renderer.extensions.get(x) before enabling - // enable frag_depth extension for the interpolation shader, if available - let gl = this.renderer.getContext(); - gl.getExtension('EXT_frag_depth'); - gl.getExtension('WEBGL_depth_texture'); - gl.getExtension('WEBGL_color_buffer_float'); // Enable explicitly for more portability, EXT_color_buffer_float is the proper name in WebGL 2 - - //if(gl instanceof WebGLRenderingContext){ - let extVAO = gl.getExtension('OES_vertex_array_object'); - - if(!extVAO){ - throw new Error("OES_vertex_array_object extension not supported"); - } - - gl.createVertexArray = extVAO.createVertexArrayOES.bind(extVAO); - gl.bindVertexArray = extVAO.bindVertexArrayOES.bind(extVAO); - //}else if(gl instanceof WebGL2RenderingContext){ - // gl.getExtension("EXT_color_buffer_float"); - //} - - } - - onVr(callback){ - - if(this.vr){ - callback(); - }else { - this.onVrListeners.push(callback); - } - - } - - async prepareVR(){ - - if(!navigator.getVRDisplays){ - console.info("browser does not support WebVR"); - - return false; - } - - try{ - let frameData = new VRFrameData(); - let displays = await navigator.getVRDisplays(); - - if(displays.length == 0){ - console.info("no VR display found"); - return false; - } - - let display = displays[displays.length - 1]; - display.depthNear = 0.1; - display.depthFar = 10000.0; - - if(!display.capabilities.canPresent){ - // Not sure why canPresent would ever be false? - console.error("VR display canPresent === false"); - return false; - } - - this.vr = { - frameData: frameData, - display: display, - node: new THREE.Object3D(), - }; - - for(const listener of this.onVrListeners){ - listener(); - } - }catch(err){ - console.error(err); - - return false; - } - - } - - updateAnnotations () { - - if(!this.visibleAnnotations){ - this.visibleAnnotations = new Set(); - } - - this.scene.annotations.updateBounds(); - this.scene.cameraP.updateMatrixWorld(); - this.scene.cameraO.updateMatrixWorld(); - - let distances = []; - - let renderAreaSize = this.renderer.getSize(new THREE.Vector2()); - - let viewer = this; - - let visibleNow = []; - this.scene.annotations.traverse(annotation => { - - if (annotation === this.scene.annotations) { - return true; - } - - if (!annotation.visible) { - return false; - } - - annotation.scene = this.scene; - - let element = annotation.domElement; - - let position = annotation.position.clone(); - position.add(annotation.offset); - if (!position) { - position = annotation.boundingBox.getCenter(new THREE.Vector3()); - } - - let distance = viewer.scene.cameraP.position.distanceTo(position); - let radius = annotation.boundingBox.getBoundingSphere(new THREE.Sphere()).radius; - - let screenPos = new THREE.Vector3(); - let screenSize = 0; - - { - // SCREEN POS - screenPos.copy(position).project(this.scene.getActiveCamera()); - screenPos.x = renderAreaSize.x * (screenPos.x + 1) / 2; - screenPos.y = renderAreaSize.y * (1 - (screenPos.y + 1) / 2); - - - // SCREEN SIZE - if(viewer.scene.cameraMode == CameraMode.PERSPECTIVE) { - let fov = Math.PI * viewer.scene.cameraP.fov / 180; - let slope = Math.tan(fov / 2.0); - let projFactor = 0.5 * renderAreaSize.y / (slope * distance); - screenSize = radius * projFactor; - } else { - screenSize = Utils.projectedRadiusOrtho(radius, viewer.scene.cameraO.projectionMatrix, renderAreaSize.x, renderAreaSize.y); - } - } - - element.css("left", screenPos.x + "px"); - element.css("top", screenPos.y + "px"); - //element.css("display", "block"); - - let zIndex = 10000000 - distance * (10000000 / this.scene.cameraP.far); - if(annotation.descriptionVisible){ - zIndex += 10000000; - } - element.css("z-index", parseInt(zIndex)); - - if(annotation.children.length > 0){ - let expand = screenSize > annotation.collapseThreshold || annotation.boundingBox.containsPoint(this.scene.getActiveCamera().position); - annotation.expand = expand; - - if (!expand) { - //annotation.display = (screenPos.z >= -1 && screenPos.z <= 1); - let inFrustum = (screenPos.z >= -1 && screenPos.z <= 1); - if(inFrustum){ - visibleNow.push(annotation); - } - } - - return expand; - } else { - //annotation.display = (screenPos.z >= -1 && screenPos.z <= 1); - let inFrustum = (screenPos.z >= -1 && screenPos.z <= 1); - if(inFrustum){ - visibleNow.push(annotation); - } - } - - }); - - let notVisibleAnymore = new Set(this.visibleAnnotations); - for(let annotation of visibleNow){ - annotation.display = true; - - notVisibleAnymore.delete(annotation); - } - this.visibleAnnotations = visibleNow; - - for(let annotation of notVisibleAnymore){ - annotation.display = false; - } - - } - - updateMaterialDefaults(pointcloud){ - // PROBLEM STATEMENT: - // * [min, max] of intensity, source id, etc. are computed as point clouds are loaded - // * the point cloud material won't know the range it should use until some data is loaded - // * users can modify the range at runtime, but sensible default ranges should be - // applied even if no GUI is present - // * display ranges shouldn't suddenly change even if the actual range changes over time. - // e.g. the root node has intensity range [1, 478]. One of the descendants increases range to - // [0, 2047]. We should not automatically change to the new range because that would result - // in sudden and drastic changes of brightness. We should adjust the min/max of the sidebar slider. - - const material = pointcloud.material; - - // const attIntensity = pointcloud.getAttribute("intensity"); - // if(attIntensity && material.intensityRange[0] === Infinity){ - // material.intensityRange = [...attIntensity.range]; - // } - - // let attributes = pointcloud.getAttributes(); - - // for(let attribute of attributes.attributes){ - // if(attribute.range){ - // let range = [...attribute.range]; - // material.computedRange.set(attribute.name, range); - // //material.setRange(attribute.name, range); - // } - // } - - - } - - update(delta, timestamp){ - - if(Potree.measureTimings) performance.mark("update-start"); - - - const scene = this.scene; - const camera = scene.getActiveCamera(); - const visiblePointClouds = this.scene.pointclouds.filter(pc => pc.visible); - - Potree.pointLoadLimit = Potree.pointBudget * 2; - - const lTarget = camera.position.clone().add(camera.getWorldDirection(new THREE.Vector3()).multiplyScalar(1000)); - this.scene.directionalLight.position.copy(camera.position); - this.scene.directionalLight.lookAt(lTarget); - - - for (let pointcloud of visiblePointClouds) { - - pointcloud.showBoundingBox = this.showBoundingBox; - pointcloud.generateDEM = this.generateDEM; - pointcloud.minimumNodePixelSize = this.minNodeSize; - - let material = pointcloud.material; - - material.uniforms.uFilterReturnNumberRange.value = this.filterReturnNumberRange; - material.uniforms.uFilterNumberOfReturnsRange.value = this.filterNumberOfReturnsRange; - material.uniforms.uFilterGPSTimeClipRange.value = this.filterGPSTimeRange; - material.uniforms.uFilterPointSourceIDClipRange.value = this.filterPointSourceIDRange; - - material.classification = this.classifications; - material.recomputeClassification(); - - this.updateMaterialDefaults(pointcloud); - } - - { - if(this.showBoundingBox){ - let bbRoot = this.scene.scene.getObjectByName("potree_bounding_box_root"); - if(!bbRoot){ - let node = new THREE.Object3D(); - node.name = "potree_bounding_box_root"; - this.scene.scene.add(node); - bbRoot = node; - } - - let visibleBoxes = []; - for(let pointcloud of this.scene.pointclouds){ - for(let node of pointcloud.visibleNodes.filter(vn => vn.boundingBoxNode !== undefined)){ - let box = node.boundingBoxNode; - visibleBoxes.push(box); - } - } - - bbRoot.children = visibleBoxes; - } - } - - if (!this.freeze) { - let result = Potree.updatePointClouds(scene.pointclouds, camera, this.renderer); - - - // DEBUG - ONLY DISPLAY NODES THAT INTERSECT MOUSE - //if(false){ - - // let renderer = viewer.renderer; - // let mouse = viewer.inputHandler.mouse; - - // let nmouse = { - // x: (mouse.x / renderer.domElement.clientWidth) * 2 - 1, - // y: -(mouse.y / renderer.domElement.clientHeight) * 2 + 1 - // }; - - // let pickParams = {}; - - // //if(params.pickClipped){ - // // pickParams.pickClipped = params.pickClipped; - // //} - - // pickParams.x = mouse.x; - // pickParams.y = renderer.domElement.clientHeight - mouse.y; - - // let raycaster = new THREE.Raycaster(); - // raycaster.setFromCamera(nmouse, camera); - // let ray = raycaster.ray; - - // for(let pointcloud of scene.pointclouds){ - // let nodes = pointcloud.nodesOnRay(pointcloud.visibleNodes, ray); - // pointcloud.visibleNodes = nodes; - - // } - //} - - // const tStart = performance.now(); - // const worldPos = new THREE.Vector3(); - // const camPos = viewer.scene.getActiveCamera().getWorldPosition(new THREE.Vector3()); - // let lowestDistance = Infinity; - // let numNodes = 0; - - // viewer.scene.scene.traverse(node => { - // node.getWorldPosition(worldPos); - - // const distance = worldPos.distanceTo(camPos); - - // lowestDistance = Math.min(lowestDistance, distance); - - // numNodes++; - - // if(Number.isNaN(distance)){ - // console.error(":("); - // } - // }); - // const duration = (performance.now() - tStart).toFixed(2); - - // Potree.debug.computeNearDuration = duration; - // Potree.debug.numNodes = numNodes; - - //console.log(lowestDistance.toString(2), duration); - - const tStart = performance.now(); - const campos = camera.position; - let closestImage = Infinity; - for(const images of this.scene.orientedImages){ - for(const image of images.images){ - const distance = image.mesh.position.distanceTo(campos); - - closestImage = Math.min(closestImage, distance); - } - } - const tEnd = performance.now(); - - if(result.lowestSpacing !== Infinity){ - let near = result.lowestSpacing * 10.0; - let far = -this.getBoundingBox().applyMatrix4(camera.matrixWorldInverse).min.z; - - far = Math.max(far * 1.5, 10000); - near = Math.min(100.0, Math.max(0.01, near)); - near = Math.min(near, closestImage); - far = Math.max(far, near + 10000); - - if(near === Infinity){ - near = 0.1; - } - - camera.near = near; - camera.far = far; - }else { - // don't change near and far in this case - } - - if(this.scene.cameraMode == CameraMode.ORTHOGRAPHIC) { - camera.near = -camera.far; - } - } - - this.scene.cameraP.fov = this.fov; - - if (this.getControls() === this.deviceControls) { - this.controls.setScene(scene); - this.controls.update(delta); - - this.scene.cameraP.position.copy(scene.view.position); - this.scene.cameraO.position.copy(scene.view.position); - } else if (this.controls !== null) { - this.controls.setScene(scene); - this.controls.update(delta); - - if(typeof debugDisabled === "undefined" ){ - this.scene.cameraP.position.copy(scene.view.position); - this.scene.cameraP.rotation.order = "ZXY"; - this.scene.cameraP.rotation.x = Math.PI / 2 + this.scene.view.pitch; - this.scene.cameraP.rotation.z = this.scene.view.yaw; - } - - this.scene.cameraO.position.copy(scene.view.position); - this.scene.cameraO.rotation.order = "ZXY"; - this.scene.cameraO.rotation.x = Math.PI / 2 + this.scene.view.pitch; - this.scene.cameraO.rotation.z = this.scene.view.yaw; - } - - camera.updateMatrix(); - camera.updateMatrixWorld(); - camera.matrixWorldInverse.getInverse(camera.matrixWorld); - - { - if(this._previousCamera === undefined){ - this._previousCamera = this.scene.getActiveCamera().clone(); - this._previousCamera.rotation.copy(this.scene.getActiveCamera()); - } - - if(!this._previousCamera.matrixWorld.equals(camera.matrixWorld)){ - this.dispatchEvent({ - type: "camera_changed", - previous: this._previousCamera, - camera: camera - }); - }else if(!this._previousCamera.projectionMatrix.equals(camera.projectionMatrix)){ - this.dispatchEvent({ - type: "camera_changed", - previous: this._previousCamera, - camera: camera - }); - } - - this._previousCamera = this.scene.getActiveCamera().clone(); - this._previousCamera.rotation.copy(this.scene.getActiveCamera()); - - } - - { // update clip boxes - let boxes = []; - - // volumes with clipping enabled - //boxes.push(...this.scene.volumes.filter(v => (v.clip))); - boxes.push(...this.scene.volumes.filter(v => (v.clip && v instanceof BoxVolume))); - - // profile segments - for(let profile of this.scene.profiles){ - boxes.push(...profile.boxes); - } - - // Needed for .getInverse(), pre-empt a determinant of 0, see #815 / #816 - let degenerate = (box) => box.matrixWorld.determinant() !== 0; - - let clipBoxes = boxes.filter(degenerate).map( box => { - box.updateMatrixWorld(); - - let boxInverse = new THREE.Matrix4().getInverse(box.matrixWorld); - let boxPosition = box.getWorldPosition(new THREE.Vector3()); - - return {box: box, inverse: boxInverse, position: boxPosition}; - }); - - let clipPolygons = this.scene.polygonClipVolumes.filter(vol => vol.initialized); - - // set clip volumes in material - for(let pointcloud of visiblePointClouds){ - pointcloud.material.setClipBoxes(clipBoxes); - pointcloud.material.setClipPolygons(clipPolygons, this.clippingTool.maxPolygonVertices); - pointcloud.material.clipTask = this.clipTask; - pointcloud.material.clipMethod = this.clipMethod; - } - } - - { - for(let pointcloud of visiblePointClouds){ - pointcloud.material.elevationGradientRepeat = this.elevationGradientRepeat; - } - } - - { // update navigation cube - this.navigationCube.update(camera.rotation); - } - - this.updateAnnotations(); - - if(this.mapView){ - this.mapView.update(delta); - if(this.mapView.sceneProjection){ - $( "#potree_map_toggle" ).css("display", "block"); - - } - } - - TWEEN.update(timestamp); - - this.dispatchEvent({ - type: 'update', - delta: delta, - timestamp: timestamp}); - - if(Potree.measureTimings) { - performance.mark("update-end"); - performance.measure("update", "update-start", "update-end"); - } - } - - render(){ - if(Potree.measureTimings) performance.mark("render-start"); - - try{ - - let pRenderer = null; - - if(this.useHQ){ - if (!this.hqRenderer) { - this.hqRenderer = new HQSplatRenderer(this); - } - this.hqRenderer.useEDL = this.useEDL; - //this.hqRenderer.render(this.renderer); - - pRenderer = this.hqRenderer; - }else { - if (this.useEDL && Features.SHADER_EDL.isSupported()) { - if (!this.edlRenderer) { - this.edlRenderer = new EDLRenderer(this); - } - //this.edlRenderer.render(this.renderer); - pRenderer = this.edlRenderer; - } else { - if (!this.potreeRenderer) { - this.potreeRenderer = new PotreeRenderer(this); - } - //this.potreeRenderer.render(); - pRenderer = this.potreeRenderer; - } - } - - const vr = this.vr; - const vrActive = (vr && vr.display.isPresenting); - - if(vrActive){ - - const {display, frameData} = vr; - - const leftEye = display.getEyeParameters("left"); - const rightEye = display.getEyeParameters("right"); - - let width = Math.max(leftEye.renderWidth, rightEye.renderWidth) * 2; - let height = Math.max(leftEye.renderHeight, rightEye.renderHeight); - - // width *= 0.5; - // height *= 0.5; - - this.renderer.setSize(width, height); - - pRenderer.clear(); - - //const camera = new THREE.Camera(); - viewer.scene.cameraMode = CameraMode.VR; - const camera = viewer.scene.getActiveCamera(); - { - camera.near = display.depthNear; - camera.far = display.depthFar; - camera.projectionMatrix = new THREE.Matrix4(); - camera.matrixWorldInverse = new THREE.Matrix4(); - camera.matrixWorld = new THREE.Matrix4(); - camera.updateProjectionMatrix = () => {}; - camera.updateMatrixWorld = () => {}; - camera.fov = 60; - }; - - const flipWorld = new THREE.Matrix4().fromArray([ - 1, 0, 0, 0, - 0, 0, 1, 0, - 0, -1, 0, 0, - 0, 0, 0, 1 - ]); - const flipView = new THREE.Matrix4().getInverse(flipWorld); - - vr.node.updateMatrixWorld(); - - {// LEFT - camera.projectionMatrix.fromArray(frameData.leftProjectionMatrix); - - const leftView = new THREE.Matrix4().fromArray(frameData.leftViewMatrix); - const view = new THREE.Matrix4().multiplyMatrices(leftView, flipView); - const world = new THREE.Matrix4().getInverse(view); - - { - const tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world); - world.copy(tmp); - view.getInverse(world); - } - - camera.matrixWorldInverse.copy(view); - camera.matrixWorld.copy(world); - - const viewport = [0, 0, width / 2, height]; - - this.renderer.setViewport(...viewport); - pRenderer.render({camera: camera, viewport: viewport}); - //this.renderer.render(this.overlay, this.overlayCamera); - } - - {// RIGHT - - camera.projectionMatrix.fromArray(frameData.rightProjectionMatrix); - - const rightView = new THREE.Matrix4().fromArray(frameData.rightViewMatrix); - const view = new THREE.Matrix4().multiplyMatrices(rightView, flipView); - const world = new THREE.Matrix4().getInverse(view); - - { - const tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world); - world.copy(tmp); - view.getInverse(world); - } - - camera.matrixWorldInverse.copy(view); - camera.matrixWorld.copy(world); - - const viewport = [width / 2, 0, width / 2, height]; - - this.renderer.setViewport(...viewport); - pRenderer.clearTargets(); - pRenderer.render({camera: camera, viewport: viewport, debug: 2}); - //this.renderer.render(this.overlay, this.overlayCamera); - } - - { // CENTER - - { // central view matrix - // TODO this can't be right...can it? - - const left = frameData.leftViewMatrix; - const right = frameData.rightViewMatrix; - - const centerView = new THREE.Matrix4(); - - for(let i = 0; i < centerView.elements.length; i++){ - centerView.elements[i] = (left[i] + right[i]) / 2; - } - - const view = new THREE.Matrix4().multiplyMatrices(centerView, flipView); - const world = new THREE.Matrix4().getInverse(view); - - { - const tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world); - world.copy(tmp); - view.getInverse(world); - } - - camera.matrixWorldInverse.copy(view); - camera.matrixWorld.copy(world); - } - - - camera.fov = leftEye.fieldOfView.upDegrees; - } - - }else { - - { // resize - const width = this.scaleFactor * this.renderArea.clientWidth; - const height = this.scaleFactor * this.renderArea.clientHeight; - - this.renderer.setSize(width, height); - const pixelRatio = this.renderer.getPixelRatio(); - const aspect = width / height; - - const scene = this.scene; - - scene.cameraP.aspect = aspect; - scene.cameraP.updateProjectionMatrix(); - - let frustumScale = this.scene.view.radius; - scene.cameraO.left = -frustumScale; - scene.cameraO.right = frustumScale; - scene.cameraO.top = frustumScale * 1 / aspect; - scene.cameraO.bottom = -frustumScale * 1 / aspect; - scene.cameraO.updateProjectionMatrix(); - - scene.cameraScreenSpace.top = 1/aspect; - scene.cameraScreenSpace.bottom = -1/aspect; - scene.cameraScreenSpace.updateProjectionMatrix(); - } - - pRenderer.clear(); - - pRenderer.render(this.renderer); - this.renderer.render(this.overlay, this.overlayCamera); - } - - }catch(e){ - this.onCrash(e); - } - - if(Potree.measureTimings){ - performance.mark("render-end"); - performance.measure("render", "render-start", "render-end"); - } - } - - resolveTimings(timestamp){ - if(Potree.measureTimings){ - if(!this.toggle){ - this.toggle = timestamp; - } - let duration = timestamp - this.toggle; - if(duration > 1000.0){ - - let measures = performance.getEntriesByType("measure"); - - let names = new Set(); - for(let measure of measures){ - names.add(measure.name); - } - - let groups = new Map(); - for(let name of names){ - groups.set(name, { - measures: [], - sum: 0, - n: 0, - min: Infinity, - max: -Infinity - }); - } - - for(let measure of measures){ - let group = groups.get(measure.name); - group.measures.push(measure); - group.sum += measure.duration; - group.n++; - group.min = Math.min(group.min, measure.duration); - group.max = Math.max(group.max, measure.duration); - } - - let glQueries = Potree.resolveQueries(this.renderer.getContext()); - for(let [key, value] of glQueries){ - - let group = { - measures: value.map(v => {return {duration: v}}), - sum: value.reduce( (a, i) => a + i, 0), - n: value.length, - min: Math.min(...value), - max: Math.max(...value) - }; - - let groupname = `[tq] ${key}`; - groups.set(groupname, group); - names.add(groupname); - } - - for(let [name, group] of groups){ - group.mean = group.sum / group.n; - group.measures.sort( (a, b) => a.duration - b.duration ); - - if(group.n === 1){ - group.median = group.measures[0].duration; - }else if(group.n > 1){ - group.median = group.measures[parseInt(group.n / 2)].duration; - } - - } - - let cn = Array.from(names).reduce( (a, i) => Math.max(a, i.length), 0) + 5; - let cmin = 10; - let cmed = 10; - let cmax = 10; - let csam = 6; - - let message = ` ${"NAME".padEnd(cn)} |` - + ` ${"MIN".padStart(cmin)} |` - + ` ${"MEDIAN".padStart(cmed)} |` - + ` ${"MAX".padStart(cmax)} |` - + ` ${"SAMPLES".padStart(csam)} \n`; - message += ` ${"-".repeat(message.length) }\n`; - - names = Array.from(names).sort(); - for(let name of names){ - let group = groups.get(name); - let min = group.min.toFixed(3); - let median = group.median.toFixed(3); - let max = group.max.toFixed(3); - let n = group.n; - - message += ` ${name.padEnd(cn)} |` - + ` ${min.padStart(cmin)} |` - + ` ${median.padStart(cmed)} |` - + ` ${max.padStart(cmax)} |` - + ` ${n.toString().padStart(csam)}\n`; - } - message += `\n`; - console.log(message); - - performance.clearMarks(); - performance.clearMeasures(); - this.toggle = timestamp; - } - } - } - - async toggleVR(){ - const vrActive = (this.vr && this.vr.display.isPresenting); - - if(vrActive){ - this.stopVR(); - }else { - this.startVR(); - } - } - - async startVR(){ - - if(this.vr === null){ - return; - } - - let canvas = this.renderer.domElement; - let display = this.vr.display; - - try{ - await display.requestPresent([{ source: canvas }]); - }catch(e){ - console.error(e); - this.postError("requestPresent failed"); - return; - } - - //window.addEventListener('vrdisplaypresentchange', onVRPresentChange, false); - //window.addEventListener('vrdisplayactivate', onVRRequestPresent, false); - //window.addEventListener('vrdisplaydeactivate', onVRExitPresent, false); - - } - - async stopVR(){ - // TODO shutdown VR - } - - loop(timestamp){ - - if(this.stats){ - this.stats.begin(); - } - - let queryAll; - if(Potree.measureTimings){ - performance.mark("loop-start"); - } - - - const vrActive = (this.vr && this.vr.display.isPresenting); - - if(vrActive){ - const {display, frameData} = this.vr; - - display.requestAnimationFrame(this.loop.bind(this)); - - display.getFrameData(frameData); - - this.update(this.clock.getDelta(), timestamp); - - this.render(); - - this.vr.display.submitFrame(); - }else { - requestAnimationFrame(this.loop.bind(this)); - - this.update(this.clock.getDelta(), timestamp); - - this.render(); - } - - - if(Potree.measureTimings){ - performance.mark("loop-end"); - performance.measure("loop", "loop-start", "loop-end"); - } - - this.resolveTimings(timestamp); - - Potree.framenumber++; - - if(this.stats){ - this.stats.end(); - } - } - - postError(content, params = {}){ - let message = this.postMessage(content, params); - - message.element.addClass("potree_message_error"); - - return message; - } - - postMessage(content, params = {}){ - let message = new Message(content); - - let animationDuration = 100; - - message.element.css("display", "none"); - message.elClose.click( () => { - message.element.slideToggle(animationDuration); - - let index = this.messages.indexOf(message); - if(index >= 0){ - this.messages.splice(index, 1); - } - }); - - this.elMessages.prepend(message.element); - - message.element.slideToggle(animationDuration); - - this.messages.push(message); - - if(params.duration !== undefined){ - let fadeDuration = 500; - let slideOutDuration = 200; - setTimeout(() => { - message.element.animate({ - opacity: 0 - }, fadeDuration); - message.element.slideToggle(slideOutDuration); - }, params.duration); - } - - return message; - } - }; - - class VRControlls{ - - constructor(viewer){ - - this.viewer = viewer; - - this.previousPads = []; - - this.selection = []; - - this.triggerStarts = []; - - this.scaleState = null; - - this.selectionBox = this.createBox(); - this.viewer.scene.scene.add(this.selectionBox); - - this.speed = 1; - this.speedModificationFactor = 50; - - this.snLeft = this.createControllerModel(); - this.snRight = this.createControllerModel(); - - this.viewer.scene.scene.add(this.snLeft.node); - this.viewer.scene.scene.add(this.snRight.node); - //this.viewer.scene.scene.add(this.snLeft.debug); - //this.viewer.scene.scene.add(this.snRight.debug); - - } - - createControllerModel(){ - const geometry = new THREE.SphereGeometry(1, 32, 32); - const material = new THREE.MeshLambertMaterial( { color: 0xff0000, side: THREE.DoubleSide, flatShading: true } ); - const node = new THREE.Mesh(geometry, material); - - node.position.set(0, 0, 0.5); - node.scale.set(0.02, 0.02, 0.02); - node.visible = false; - - viewer.scene.scene.add(node); - - const debug = new THREE.Mesh(geometry, new THREE.MeshNormalMaterial()); - debug.position.set(0, 0, 0.5); - debug.scale.set(0.01, 0.01, 0.01); - debug.visible = false; - - - const controller = { - node: node, - debug: debug, - }; - //viewer.scene.scene.add(node); - - return controller; - } - - createBox(){ - const color = 0xffff00; - - const indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); - const positions = [ - 1, 1, 1, - 0, 1, 1, - 0, 0, 1, - 1, 0, 1, - 1, 1, 0, - 0, 1, 0, - 0, 0, 0, - 1, 0, 0 - ]; - const geometry = new THREE.BufferGeometry(); - - geometry.setIndex( new THREE.BufferAttribute( indices, 1 ) ); - geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( positions, 3 ) ); - - geometry.computeBoundingSphere(); - - const mesh = new THREE.LineSegments(geometry, new THREE.LineBasicMaterial( { color: color } ) ); - mesh.visible = false; - - return mesh; - } - - debugLine(start, end, index, color){ - - if(typeof this.debugLines === "undefined"){ - - const geometry = new THREE.SphereGeometry(1, 8, 8); - - this.debugLines = { - geometry: geometry, - }; - } - - const n = 100; - - if(!this.debugLines[index]){ - const geometry = this.debugLines.geometry; - const material = new THREE.MeshBasicMaterial({color: color}); - const nodes = []; - - for(let i = 0; i <= n; i++){ - const u = i / n; - - const node = new THREE.Mesh(geometry, material); - - const position = new THREE.Vector3().addVectors( - start.clone().multiplyScalar(1-u), - end.clone().multiplyScalar(u) - ); - - node.position.copy(position); - node.scale.set(0.002, 0.002, 0.002); - this.viewer.scene.scene.add(node); - nodes.push(node); - } - - const debugLine = { - material: material, - nodes: nodes, - }; - - this.debugLines[index] = debugLine; - }else { - const debugLine = this.debugLines[index]; - - for(let i = 0; i <= n; i++){ - const node = debugLine.nodes[i]; - const u = i / n; - - const position = new THREE.Vector3().addVectors( - start.clone().multiplyScalar(1-u), - end.clone().multiplyScalar(u) - ); - - node.position.copy(position); - } - } - - - } - - getPointcloudsAt(pointclouds, position){ - - const I = []; - for(const pointcloud of pointclouds){ - - const intersects = pointcloud.intersectsPoint(position); - - if(intersects){ - I.push(pointcloud); - } - } - - return I; - } - - copyPad(pad){ - const axes = pad.axes.map(a => a); - const buttons = pad.buttons.map(b => {return {pressed: b.pressed}}); - - const pose = { - position: new Float32Array(pad.pose.position), - orientation: new Float32Array(pad.pose.orientation), - }; - - const copy = { - axes: axes, - buttons: buttons, - pose: pose, - hand: pad.hand, - index: pad.index, - }; - - return copy; - } - - previousPad(gamepad){ - return this.previousPads.find(c => c.index === gamepad.index); - } - - toScene(position){ - - const vr = viewer.vr; - - vr.node.updateMatrixWorld(); - const world = vr.node.matrixWorld; - - const scenePos = new THREE.Vector3(position.x, -position.z, position.y); - scenePos.applyMatrix4(world); - - return scenePos; - } - - update(delta){ - - const {selection, viewer, snLeft, snRight} = this; - const toScene = this.toScene.bind(this); - const vr = viewer.vr; - - const vrActive = vr && vr.display.isPresenting; - - snLeft.node.visible = vrActive; - snRight.node.visible = vrActive; - - if(!vrActive){ - - return; - } - - const pointclouds = viewer.scene.pointclouds; - - const gamepads = Array.from(navigator.getGamepads()).filter(p => p !== null).map(this.copyPad); - - const getPad = (list, pattern) => list.find(pad => pad.index === pattern.index); - - if(this.previousPads.length !== gamepads.length){ - this.previousPads = gamepads; - } - - const left = gamepads.find(gp => gp.hand && gp.hand === "left"); - const right = gamepads.find(gp => gp.hand && gp.hand === "right"); - - const triggered = gamepads.filter(gamepad => { - return gamepad.buttons[1].pressed; - }); - - const justTriggered = triggered.filter(gamepad => { - const prev = this.previousPad(gamepad); - const previouslyTriggered = prev.buttons[1].pressed; - const currentlyTriggered = gamepad.buttons[1].pressed; - - return !previouslyTriggered && currentlyTriggered; - }); - - const justUntriggered = gamepads.filter(gamepad => { - const prev = this.previousPad(gamepad); - const previouslyTriggered = prev.buttons[1].pressed; - const currentlyTriggered = gamepad.buttons[1].pressed; - - return previouslyTriggered && !currentlyTriggered; - }); - - if(triggered.length === 0){ - - for(const pad of gamepads){ - const position = new THREE.Vector3(...pad.pose.position); - - const I = this.getPointcloudsAt(pointclouds, position); - - let controler = { - "left": snLeft, - "right": snRight, - }[pad.hand]; - - if(I.length > 0){ - controler.node.material.color.setRGB(0, 1, 0); - console.log(pad.hand); - }else { - controler.node.material.color.setRGB(1, 0, 0); - } - } - }else { - if(selection.length > 0){ - const pointcloud = selection[0]; - this.selectionBox.scale.copy(pointcloud.boundingBox.max).multiply(pointcloud.scale); - this.selectionBox.position.copy(pointcloud.position); - this.selectionBox.rotation.copy(pointcloud.rotation); - } - } - - if(justTriggered.length > 0){ - - const pad = justTriggered[0]; - const position = toScene(new THREE.Vector3(...pad.pose.position)); - const I = this.getPointcloudsAt(pointclouds, position); - - const pcs = I.map(p => { - return { - node: p, - position: p.position.clone(), - rotation: p.rotation.clone(), - scale: p.scale.clone(), - }; - }); - - const event = { - pad: pad, - pointclouds: pcs, - }; - - this.triggerStarts.push(event); - } - - if(justUntriggered.length > 0){ - for(let untriggeredPad of justUntriggered){ - const p = getPad(this.triggerStarts.map(t => t.pad), untriggeredPad); - this.triggerStarts = this.triggerStarts.filter(e => e.pad !== p); - } - } - - if(triggered.length === 0){ - selection.length = 0; - this.triggerStarts = []; - } - - if(justTriggered.length === 1 && triggered.length === 1){ - // one controller was triggered this frame - const pad = justTriggered[0]; - const position = toScene(new THREE.Vector3(...pad.pose.position)); - const I = this.getPointcloudsAt(pointclouds, position); - - if(I.length > 0){ - selection.length = 0; - selection.push(I[0]); - } - }else if(justTriggered.length === 2 && triggered.length === 2){ - // two controllers were triggered this frame - const pad = justTriggered[0]; - const position = toScene(new THREE.Vector3(...pad.pose.position)); - const I = this.getPointcloudsAt(pointclouds, position); - - if(I.length > 0){ - selection.length = 0; - selection.push(I[0]); - } - } - - if(justTriggered.length > 0 && triggered.length === 2){ - // START SCALE/ROTATE - - const pcs = selection.map(p => ({ - node: p, - position: p.position.clone(), - rotation: p.rotation.clone(), - scale: p.scale.clone(), - })); - - this.scaleState = { - first: triggered[0], - second: triggered[1], - pointclouds: pcs, - }; - }else if(triggered.length < 2){ - // STOP SCALE/ROTATE - this.scaleState = null; - } - - if(this.scaleState){ - // SCALE/ROTATE - - const {first, second, pointclouds} = this.scaleState; - - if(pointclouds.length > 0){ - - const pointcloud = pointclouds[0]; - - const p1Start = toScene(new THREE.Vector3(...first.pose.position)); - const p2Start = toScene(new THREE.Vector3(...second.pose.position)); - - const p1End = toScene(new THREE.Vector3(...getPad(gamepads, first).pose.position)); - const p2End = toScene(new THREE.Vector3(...getPad(gamepads, second).pose.position)); - - const diffStart = new THREE.Vector3().subVectors(p2Start, p1Start); - const diffEnd = new THREE.Vector3().subVectors(p2End, p1End); - - // this.debugLine(p1Start, p2Start, 0, 0xFF0000); - // this.debugLine(p1End, p2End, 1, 0x00FF00); - - // ROTATION - const diffStartG = new THREE.Vector3(diffStart.x, diffStart.y, 0); - const diffEndG = new THREE.Vector3(diffEnd.x, diffEnd.y, 0); - let sign = Math.sign(diffStartG.clone().cross(diffEndG).z); - sign = sign === 0 ? 1 : sign; - const angle = sign * diffStartG.angleTo(diffEndG); - const newAngle = pointcloud.rotation.z + angle; - - // SCALE - const scale = diffEnd.length() / diffStart.length(); - const newScale = pointcloud.scale.clone().multiplyScalar(scale); - - // POSITION - const p1ToP = new THREE.Vector3().subVectors(pointcloud.position, p1Start); - p1ToP.multiplyScalar(scale); - p1ToP.applyAxisAngle(new THREE.Vector3(0, 0, 1), angle); - const newPosition = p1End.clone().add(p1ToP); - - //this.debugLine(pointcloud.position, newPosition, 0, 0xFF0000); - - //console.log(newScale, p1ToP, angle); - - pointcloud.node.rotation.z = newAngle; - pointcloud.node.scale.copy(newScale); - pointcloud.node.position.copy(newPosition); - - pointcloud.node.updateMatrix(); - pointcloud.node.updateMatrixWorld(); - - - - } - - } - - if(triggered.length === 1){ - // TRANSLATE POINT CLOUDS - const pad = triggered[0]; - const prev = this.previousPad(pad); - - const flipWorld = new THREE.Matrix4().fromArray([ - 1, 0, 0, 0, - 0, 0, 1, 0, - 0, -1, 0, 0, - 0, 0, 0, 1 - ]); - const flipView = new THREE.Matrix4().getInverse(flipWorld); - - const p1 = new THREE.Vector3(...pad.pose.position).applyMatrix4(flipWorld); - const p2 = new THREE.Vector3(...prev.pose.position).applyMatrix4(flipWorld); - - p1.applyMatrix4(vr.node.matrixWorld); - p2.applyMatrix4(vr.node.matrixWorld); - - const diff = new THREE.Vector3().subVectors(p1, p2); - - //const diff = toScene(new THREE.Vector3( - // pad.pose.position[0] - prev.pose.position[0], - // pad.pose.position[1] - prev.pose.position[1], - // pad.pose.position[2] - prev.pose.position[2], - //)); - - for(const pc of selection){ - pc.position.add(diff); - } - } - - { // MOVE WITH JOYSTICK - - const flipWorld = new THREE.Matrix4().fromArray([ - 1, 0, 0, 0, - 0, 0, 1, 0, - 0, -1, 0, 0, - 0, 0, 0, 1 - ]); - const flipView = new THREE.Matrix4().getInverse(flipWorld); - const {display, frameData} = vr; - - const computeMove = (pad) => { - const axes = pad.axes; - - const opos = new THREE.Vector3(...pad.pose.position); - const rotation = new THREE.Quaternion(...pad.pose.orientation); - const d = new THREE.Vector3(0, 0, -1); - d.applyQuaternion(rotation); - - const worldPos = toScene(opos); - const worldTarget = toScene(new THREE.Vector3().addVectors(opos, d)); - const dir = new THREE.Vector3().subVectors(worldTarget, worldPos).normalize(); - - const amount = axes[1] * this.speed; - - const move = dir.clone().multiplyScalar(amount); - - return move; - }; - - let flip = 1; - if(display.displayName.includes("Oculus")){ - flip = -1; - } - - let move = null; - - if(left && right){ - move = computeMove(right); - - const leftAdjustAxe = flip * left.axes[1]; - const adjust = this.speedModificationFactor ** leftAdjustAxe; - - move = move.multiplyScalar(adjust); - - - }else if(right){ - move = computeMove(right); - }else if(left){ - move = computeMove(left); - } - - if(move){ - move.multiplyScalar(delta * flip); - - vr.node.position.add(move); - } - - // for(const pad of [left, right].filter(pad => pad)){ - - - - // moves.push(move); - - // // vr.node.position.add(move); - // } - - // if(moves.length === 1){ - // vr.node.position.add(moves[0]); - // }else if(moves.length > 1){ - - // const factor = 10; - // const [adjust, main] = moves; - // // main gives direction, adjust modifies speed between [0, factor] - - // const mMain = main.length(); - - - // let mAdjust = - - - - // const move = mMain.multiplyScalar(adjust); - - - // // const move = moves[0].clone().add(moves[1]); - - // // const amount = (move.length() ** 3) * delta; - // // move.multiplyScalar(amount); - - // // vr.node.position.add(move); - // } - - - // let pad = [right, left].find(pad => pad !== undefined); - - // if(pad){ - - // const axes = pad.axes; - - - // // const leftView = new THREE.Matrix4().fromArray(frameData.leftViewMatrix); - // // const view = new THREE.Matrix4().multiplyMatrices(leftView, flipView); - // // const world = new THREE.Matrix4().getInverse(view); - - // { // move to where the controller points - // const opos = new THREE.Vector3(...right.pose.position); - // const rotation = new THREE.Quaternion(...pad.pose.orientation); - // const d = new THREE.Vector3(0, 0, -1); - // d.applyQuaternion(rotation); - - // const worldPos = toScene(opos); - // const worldTarget = toScene(new THREE.Vector3().addVectors(opos, d)); - // const dir = new THREE.Vector3().subVectors(worldTarget, worldPos).normalize(); - - // const amount = axes[1]; - - // const move = dir.clone().multiplyScalar(delta * amount); - - // //const d = dir.clone().multiplyScalar(delta); - // vr.node.position.add(move); - // } - - // { // move to trigger direction - // // const pos = new THREE.Vector3(0, 0, 0).applyMatrix4(world); - // // const pForward = new THREE.Vector3(0, 0, -1).applyMatrix4(world); - // // const pRight = new THREE.Vector3(1, 0, 0).applyMatrix4(world); - // // const pUp = new THREE.Vector3(0, 1, 0).applyMatrix4(world); - - // // const dForward = new THREE.Vector3().subVectors(pForward, pos).normalize(); - // // const dRight = new THREE.Vector3().subVectors(pRight, pos).normalize(); - // // const dUp = new THREE.Vector3().subVectors(pUp, pos).normalize(); - - // // const dir = new THREE.Vector3().addVectors( - // // dRight.clone().multiplyScalar(axes[0]), - // // dForward.clone().multiplyScalar(axes[1]) - // // ); - - // // const d = dir.clone().multiplyScalar(delta); - // // vr.node.position.add(d); - // } - - // } - - } - - { // MOVE CONTROLLER SCENE NODE - if(right){ - const {node, debug} = snRight; - const opos = new THREE.Vector3(...right.pose.position); - const position = toScene(opos); - - const rotation = new THREE.Quaternion(...right.pose.orientation); - const d = new THREE.Vector3(0, 0, -1); - d.applyQuaternion(rotation); - // const target = toScene(new THREE.Vector3().addVectors(opos, d)); - - node.position.copy(position); - } - - if(left){ - const {node, debug} = snLeft; - - const position = toScene(new THREE.Vector3(...left.pose.position)); - node.position.copy(position); - } - } - - this.previousPads = gamepads; - } - }; - - THREE.OrthographicCamera.prototype.zoomTo = function( node, factor = 1){ - - if ( !node.geometry && !node.boundingBox) { - return; - } - - // TODO - - //let minWS = new THREE.Vector4(node.boundingBox.min.x, node.boundingBox.min.y, node.boundingBox.min.z, 1); - //let minVS = minWS.applyMatrix4(this.matrixWorldInverse); - - //let right = node.boundingBox.max.x; - //let bottom = node.boundingBox.min.y; - //let top = node.boundingBox.max.y; - - this.updateProjectionMatrix(); - }; - - THREE.PerspectiveCamera.prototype.zoomTo = function (node, factor) { - if (!node.geometry && !node.boundingSphere && !node.boundingBox) { - return; - } - - if (node.geometry && node.geometry.boundingSphere === null) { - node.geometry.computeBoundingSphere(); - } - - node.updateMatrixWorld(); - - let bs; - - if (node.boundingSphere) { - bs = node.boundingSphere; - } else if (node.geometry && node.geometry.boundingSphere) { - bs = node.geometry.boundingSphere; - } else { - bs = node.boundingBox.getBoundingSphere(new THREE.Sphere()); - } - - let _factor = factor || 1; - - bs = bs.clone().applyMatrix4(node.matrixWorld); - let radius = bs.radius; - let fovr = this.fov * Math.PI / 180; - - if (this.aspect < 1) { - fovr = fovr * this.aspect; - } - - let distanceFactor = Math.abs(radius / Math.sin(fovr / 2)) * _factor; - - let offset = this.getWorldDirection(new THREE.Vector3()).multiplyScalar(-distanceFactor); - this.position.copy(bs.center.clone().add(offset)); - }; - - THREE.Ray.prototype.distanceToPlaneWithNegative = function (plane) { - let denominator = plane.normal.dot(this.direction); - if (denominator === 0) { - // line is coplanar, return origin - if (plane.distanceToPoint(this.origin) === 0) { - return 0; - } - - // Null is preferable to undefined since undefined means.... it is undefined - return null; - } - let t = -(this.origin.dot(plane.normal) + plane.constant) / denominator; - - return t; - }; - - const workerPool = new WorkerPool(); - - const version = { - major: 1, - minor: 7, - suffix: '.1' - }; - - let lru = new LRU(); - - console.log('Potree ' + version.major + '.' + version.minor + version.suffix); - - let pointBudget = 1 * 1000 * 1000; - let framenumber = 0; - let numNodesLoading = 0; - let maxNodesLoading = 4; - - const debug = {}; - - exports.scriptPath = ""; - - if (document.currentScript && document.currentScript.src) { - exports.scriptPath = new URL(document.currentScript.src + '/..').href; - if (exports.scriptPath.slice(-1) === '/') { - exports.scriptPath = exports.scriptPath.slice(0, -1); - } - } else if(({ url: (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('potree.js', document.baseURI).href)) })){ - exports.scriptPath = new URL((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('potree.js', document.baseURI).href)) + "/..").href; - if (exports.scriptPath.slice(-1) === '/') { - exports.scriptPath = exports.scriptPath.slice(0, -1); - } - }else { - console.error('Potree was unable to find its script path using document.currentScript. Is Potree included with a script tag? Does your browser support this function?'); - } - - let resourcePath = exports.scriptPath + '/resources'; - - - function loadPointCloud$1(path, name, callback){ - let loaded = function(e){ - e.pointcloud.name = name; - callback(e); - }; - - let promise = new Promise( resolve => { - - // load pointcloud - if (!path){ - // TODO: callback? comment? Hello? Bueller? Anyone? - } else if (path.indexOf('ept.json') > 0) { - EptLoader.load(path, function(geometry) { - if (!geometry) { - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - } - else { - let pointcloud = new PointCloudOctree(geometry); - //loaded(pointcloud); - resolve({type: 'pointcloud_loaded', pointcloud: pointcloud}); - } - }); - } else if (path.indexOf('cloud.js') > 0) { - POCLoader.load(path, function (geometry) { - if (!geometry) { - //callback({type: 'loading_failed'}); - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - } else { - let pointcloud = new PointCloudOctree(geometry); - // loaded(pointcloud); - resolve({type: 'pointcloud_loaded', pointcloud: pointcloud}); - } - }); - } else if (path.indexOf('metadata.json') > 0) { - Potree.OctreeLoader.load(path).then(e => { - let geometry = e.geometry; - - if(!geometry){ - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - }else { - let pointcloud = new PointCloudOctree(geometry); - - let aPosition = pointcloud.getAttribute("position"); - - let material = pointcloud.material; - material.elevationRange = [ - aPosition.range[0][2], - aPosition.range[1][2], - ]; - - // loaded(pointcloud); - resolve({type: 'pointcloud_loaded', pointcloud: pointcloud}); - } - }); - - OctreeLoader.load(path, function (geometry) { - if (!geometry) { - //callback({type: 'loading_failed'}); - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - } else { - let pointcloud = new PointCloudOctree(geometry); - // loaded(pointcloud); - resolve({type: 'pointcloud_loaded', pointcloud: pointcloud}); - } - }); - } else if (path.indexOf('.vpc') > 0) { - PointCloudArena4DGeometry.load(path, function (geometry) { - if (!geometry) { - //callback({type: 'loading_failed'}); - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - } else { - let pointcloud = new PointCloudArena4D(geometry); - // loaded(pointcloud); - resolve({type: 'pointcloud_loaded', pointcloud: pointcloud}); - } - }); - } else { - //callback({'type': 'loading_failed'}); - console.error(new Error(`failed to load point cloud from URL: ${path}`)); - } - }); - - if(callback){ - promise.then(pointcloud => { - loaded(pointcloud); - }); - }else { - return promise; - } - }; - - - // add selectgroup - (function($){ - $.fn.extend({ - selectgroup: function(args = {}){ - - let elGroup = $(this); - let rootID = elGroup.prop("id"); - let groupID = `${rootID}`; - let groupTitle = (args.title !== undefined) ? args.title : ""; - - let elButtons = []; - elGroup.find("option").each((index, value) => { - let buttonID = $(value).prop("id"); - let label = $(value).html(); - let optionValue = $(value).prop("value"); - - let elButton = $(` - - - - - `); - let elLabel = elButton.find("label"); - let elInput = elButton.find("input"); - - elInput.change( () => { - elGroup.find("label").removeClass("ui-state-active"); - elGroup.find("label").addClass("ui-state-default"); - if(elInput.is(":checked")){ - elLabel.addClass("ui-state-active"); - }else { - //elLabel.addClass("ui-state-default"); - } - }); - - elButtons.push(elButton); - }); - - let elFieldset = $(` -
        - ${groupTitle} - - - -
        - `); - - let elButtonContainer = elFieldset.find("span"); - for(let elButton of elButtons){ - elButtonContainer.append(elButton); - } - - elButtonContainer.find("label").each( (index, value) => { - $(value).css("margin", "0px"); - $(value).css("border-radius", "0px"); - $(value).css("border", "1px solid black"); - $(value).css("border-left", "none"); - }); - elButtonContainer.find("label:first").each( (index, value) => { - $(value).css("border-radius", "4px 0px 0px 4px"); - - }); - elButtonContainer.find("label:last").each( (index, value) => { - $(value).css("border-radius", "0px 4px 4px 0px"); - $(value).css("border-left", "none"); - }); - - elGroup.empty(); - elGroup.append(elFieldset); - - - - } - }); - })(jQuery); - - exports.Action = Action; - exports.AnimationPath = AnimationPath; - exports.Annotation = Annotation; - exports.Box3Helper = Box3Helper; - exports.BoxVolume = BoxVolume; - exports.CameraAnimation = CameraAnimation; - exports.CameraMode = CameraMode; - exports.ClassificationScheme = ClassificationScheme; - exports.ClipMethod = ClipMethod; - exports.ClipTask = ClipTask; - exports.ClipVolume = ClipVolume; - exports.ClippingTool = ClippingTool; - exports.Compass = Compass; - exports.DeviceOrientationControls = DeviceOrientationControls; - exports.EarthControls = EarthControls; - exports.ElevationGradientRepeat = ElevationGradientRepeat; - exports.Enum = Enum; - exports.EnumItem = EnumItem; - exports.EptBinaryLoader = EptBinaryLoader; - exports.EptKey = EptKey; - exports.EptLaszipLoader = EptLaszipLoader; - exports.EptLazBatcher = EptLazBatcher; - exports.EptLoader = EptLoader; - exports.EptZstandardLoader = EptZstandardLoader; - exports.EventDispatcher = EventDispatcher; - exports.EyeDomeLightingMaterial = EyeDomeLightingMaterial; - exports.Features = Features; - exports.FirstPersonControls = FirstPersonControls; - exports.GeoPackageLoader = GeoPackageLoader; - exports.Geopackage = Geopackage$1; - exports.Gradients = Gradients; - exports.HierarchicalSlider = HierarchicalSlider; - exports.Images360 = Images360; - exports.Images360Loader = Images360Loader; - exports.KeyCodes = KeyCodes; - exports.LRU = LRU; - exports.LRUItem = LRUItem; - exports.LengthUnits = LengthUnits; - exports.MOUSE = MOUSE; - exports.Measure = Measure; - exports.MeasuringTool = MeasuringTool; - exports.Message = Message; - exports.NodeLoader = NodeLoader; - exports.NormalizationEDLMaterial = NormalizationEDLMaterial; - exports.NormalizationMaterial = NormalizationMaterial; - exports.OctreeLoader = OctreeLoader; - exports.OrbitControls = OrbitControls; - exports.OrientedImage = OrientedImage; - exports.OrientedImageLoader = OrientedImageLoader; - exports.OrientedImages = OrientedImages; - exports.POCLoader = POCLoader; - exports.PathAnimation = PathAnimation; - exports.PointAttribute = PointAttribute; - exports.PointAttributeTypes = PointAttributeTypes; - exports.PointAttributes = PointAttributes; - exports.PointCloudEptGeometry = PointCloudEptGeometry; - exports.PointCloudEptGeometryNode = PointCloudEptGeometryNode; - exports.PointCloudMaterial = PointCloudMaterial; - exports.PointCloudOctree = PointCloudOctree; - exports.PointCloudOctreeGeometry = PointCloudOctreeGeometry; - exports.PointCloudOctreeGeometryNode = PointCloudOctreeGeometryNode; - exports.PointCloudOctreeNode = PointCloudOctreeNode; - exports.PointCloudSM = PointCloudSM; - exports.PointCloudTree = PointCloudTree; - exports.PointCloudTreeNode = PointCloudTreeNode; - exports.PointShape = PointShape; - exports.PointSizeType = PointSizeType; - exports.Points = Points; - exports.PolygonClipVolume = PolygonClipVolume; - exports.Profile = Profile; - exports.ProfileData = ProfileData; - exports.ProfileRequest = ProfileRequest; - exports.ProfileTool = ProfileTool; - exports.Renderer = Renderer; - exports.Scene = Scene; - exports.ScreenBoxSelectTool = ScreenBoxSelectTool; - exports.ShapefileLoader = ShapefileLoader; - exports.SphereVolume = SphereVolume; - exports.SpotLightHelper = SpotLightHelper; - exports.TextSprite = TextSprite; - exports.TransformationTool = TransformationTool; - exports.TreeType = TreeType; - exports.Utils = Utils; - exports.VRControlls = VRControlls; - exports.Version = Version; - exports.Viewer = Viewer; - exports.Volume = Volume; - exports.VolumeTool = VolumeTool; - exports.WorkerPool = WorkerPool; - exports.XHRFactory = XHRFactory; - exports.debug = debug; - exports.framenumber = framenumber; - exports.loadPointCloud = loadPointCloud$1; - exports.loadProject = loadProject; - exports.lru = lru; - exports.maxNodesLoading = maxNodesLoading; - exports.numNodesLoading = numNodesLoading; - exports.pointBudget = pointBudget; - exports.resourcePath = resourcePath; - exports.saveProject = saveProject; - exports.updatePointClouds = updatePointClouds; - exports.updateVisibility = updateVisibility; - exports.updateVisibilityStructures = updateVisibilityStructures; - exports.version = version; - exports.workerPool = workerPool; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); -//# sourceMappingURL=potree.js.map diff --git a/libs/potree/potree.js.map b/libs/potree/potree.js.map deleted file mode 100644 index 8d9fd1c..0000000 --- a/libs/potree/potree.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"potree.js","sources":["../../src/EventDispatcher.js","../../src/Actions.js","../../src/AnimationPath.js","../../src/XHRFactory.js","../../src/TextSprite.js","../../src/utils/Volume.js","../../src/utils/Profile.js","../../src/utils/Measure.js","../../src/utils/PolygonClipVolume.js","../../src/utils.js","../../src/Annotation.js","../../src/Enum.js","../../src/defines.js","../../src/Features.js","../../src/KeyCodes.js","../../src/LRU.js","../../src/PointCloudTree.js","../../src/loader/PointAttributes.js","../../src/PointCloudEptGeometry.js","../../src/PointCloudOctreeGeometry.js","../../src/materials/Gradients.js","../shaders/shaders.js","../../src/materials/ClassificationScheme.js","../../src/materials/PointCloudMaterial.js","../../src/PointCloudOctree.js","../../src/Points.js","../../src/utils/Box3Helper.js","../../src/Potree_update_visibility.js","../../src/arena4d/PointCloudArena4D.js","../../src/PotreeRenderer.js","../../src/ProfileRequest.js","../../src/Version.js","../../src/WorkerPool.js","../../src/viewer/SaveProject.js","../../src/modules/CameraAnimation/CameraAnimation.js","../../src/viewer/LoadProject.js","../../src/materials/EyeDomeLightingMaterial.js","../../src/materials/NormalizationEDLMaterial.js","../../src/materials/NormalizationMaterial.js","../../src/loader/LasLazLoader.js","../../src/loader/BinaryLoader.js","../../src/loader/POCLoader.js","../../src/modules/loader/2.0/OctreeGeometry.js","../../src/modules/loader/2.0/OctreeLoader.js","../../src/loader/EptLoader.js","../../src/loader/ept/BinaryLoader.js","../../src/loader/ept/LaszipLoader.js","../../src/loader/ept/ZstandardLoader.js","../../src/loader/ShapefileLoader.js","../../src/loader/GeoPackageLoader.js","../../src/utils/ClipVolume.js","../../src/utils/ClippingTool.js","../../src/utils/GeoTIFF.js","../../src/utils/MeasuringTool.js","../../src/utils/Message.js","../../src/utils/PointCloudSM.js","../../src/utils/ProfileTool.js","../../src/utils/ScreenBoxSelectTool.js","../../src/utils/SpotLightHelper.js","../../src/utils/TransformationTool.js","../../src/utils/VolumeTool.js","../../src/utils/Compass.js","../../src/viewer/PotreeRenderer.js","../../src/viewer/EDLRenderer.js","../../src/viewer/HQSplatRenderer.js","../../src/viewer/View.js","../../src/viewer/Scene.js","../../src/viewer/map.js","../../src/exporter/CSVExporter.js","../../src/exporter/LASExporter.js","../../src/viewer/profile.js","../../src/exporter/GeoJSONExporter.js","../../src/exporter/DXFExporter.js","../../src/viewer/PropertyPanels/MeasurePanel.js","../../src/viewer/PropertyPanels/DistancePanel.js","../../src/viewer/PropertyPanels/PointPanel.js","../../src/viewer/PropertyPanels/AreaPanel.js","../../src/viewer/PropertyPanels/AnglePanel.js","../../src/viewer/PropertyPanels/CirclePanel.js","../../src/viewer/PropertyPanels/HeightPanel.js","../../src/viewer/PropertyPanels/VolumePanel.js","../../src/viewer/PropertyPanels/ProfilePanel.js","../../src/viewer/PropertyPanels/CameraPanel.js","../../src/viewer/PropertyPanels/AnnotationPanel.js","../../src/viewer/PropertyPanels/CameraAnimationPanel.js","../../src/viewer/PropertyPanels/PropertiesPanel.js","../../src/viewer/HierarchicalSlider.js","../../src/modules/OrientedImages/OrientedImageControls.js","../../src/modules/OrientedImages/OrientedImages.js","../../src/modules/Images360/Images360.js","../../libs/json5-2.1.3/json5.mjs","../../src/viewer/sidebar.js","../../src/utils/AnnotationTool.js","../../src/navigation/InputHandler.js","../../src/viewer/NavigationCube.js","../../src/navigation/OrbitControls.js","../../src/navigation/FirstPersonControls.js","../../src/navigation/EarthControls.js","../../src/navigation/DeviceOrientationControls.js","../../src/viewer/viewer.js","../../src/navigation/VRControlls.js","../../src/extensions/OrthographicCamera.js","../../src/extensions/PerspectiveCamera.js","../../src/extensions/Ray.js","../../src/Potree.js"],"sourcesContent":["\n/**\n * @author mrdoob / http://mrdoob.com/ https://github.com/mrdoob/eventdispatcher.js\n * \n * with slight modifications by mschuetz, http://potree.org\n * \n */\n\n// The MIT License\n// \n// Copyright (c) 2011 Mr.doob\n// \n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n\n\nexport class EventDispatcher{\n\n\tconstructor(){\n\t\tthis._listeners = {};\n\t}\n\n\taddEventListener(type, listener){\n\n\t\tconst listeners = this._listeners;\n\n\t\tif(listeners[type] === undefined){\n\t\t\tlisteners[type] = [];\n\t\t}\n\n\t\tif(listeners[type].indexOf(listener) === - 1){\n\t\t\tlisteners[type].push( listener );\n\t\t}\n\n\t}\n\n\thasEventListener(type, listener){\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[type] !== undefined && listeners[type].indexOf(listener) !== - 1;\n\t}\n\n\tremoveEventListener(type, listener){\n\n\t\tlet listeners = this._listeners;\n\t\tlet listenerArray = listeners[type];\n\n\t\tif (listenerArray !== undefined){\n\n\t\t\tlet index = listenerArray.indexOf(listener);\n\n\t\t\tif(index !== - 1){\n\t\t\t\tlistenerArray.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\t}\n\n\tremoveEventListeners(type){\n\t\tif(this._listeners[type] !== undefined){\n\t\t\tdelete this._listeners[type];\n\t\t}\n\t};\n\n\tdispatchEvent(event){\n\n\t\tlet listeners = this._listeners;\n\t\tlet listenerArray = listeners[event.type];\n\n\t\tif ( listenerArray !== undefined ) {\n\t\t\tevent.target = this;\n\n\t\t\tfor(let listener of listenerArray.slice(0)){\n\t\t\t\tlistener.call(this, event);\n\t\t\t}\n\t\t}\n\n\t}\n\n}","\n\nimport {EventDispatcher} from \"./EventDispatcher.js\";\n\nexport class Action extends EventDispatcher {\n\tconstructor (args = {}) {\n\t\tsuper();\n\n\t\tthis.icon = args.icon || '';\n\t\tthis.tooltip = args.tooltip;\n\n\t\tif (args.onclick !== undefined) {\n\t\t\tthis.onclick = args.onclick;\n\t\t}\n\t}\n\n\tonclick (event) {\n\n\t}\n\n\tpairWith (object) {\n\n\t}\n\n\tsetIcon (newIcon) {\n\t\tlet oldIcon = this.icon;\n\n\t\tif (newIcon === oldIcon) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.icon = newIcon;\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'icon_changed',\n\t\t\taction: this,\n\t\t\ticon: newIcon,\n\t\t\toldIcon: oldIcon\n\t\t});\n\t}\n};\n\n//Potree.Actions = {};\n//\n//Potree.Actions.ToggleAnnotationVisibility = class ToggleAnnotationVisibility extends Potree.Action {\n//\tconstructor (args = {}) {\n//\t\tsuper(args);\n//\n//\t\tthis.icon = Potree.resourcePath + '/icons/eye.svg';\n//\t\tthis.showIn = 'sidebar';\n//\t\tthis.tooltip = 'toggle visibility';\n//\t}\n//\n//\tpairWith (annotation) {\n//\t\tif (annotation.visible) {\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye.svg');\n//\t\t} else {\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg');\n//\t\t}\n//\n//\t\tannotation.addEventListener('visibility_changed', e => {\n//\t\t\tlet annotation = e.annotation;\n//\n//\t\t\tif (annotation.visible) {\n//\t\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye.svg');\n//\t\t\t} else {\n//\t\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg');\n//\t\t\t}\n//\t\t});\n//\t}\n//\n//\tonclick (event) {\n//\t\tlet annotation = event.annotation;\n//\n//\t\tannotation.visible = !annotation.visible;\n//\n//\t\tif (annotation.visible) {\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye.svg');\n//\t\t} else {\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg');\n//\t\t}\n//\t}\n//};\n","\n\nexport class PathAnimation{\n\t\n\tconstructor(path, start, end, speed, callback){\n\t\t\tthis.path = path;\n\t\t\tthis.length = this.path.spline.getLength();\n\t\t\tthis.speed = speed;\n\t\t\tthis.callback = callback;\n\t\t\tthis.tween = null;\n\t\t\tthis.startPoint = Math.max(start, 0);\n\t\t\tthis.endPoint = Math.min(end, this.length);\n\t\t\tthis.t = 0.0;\n\t}\n\n\tstart(resume = false){\n\t\tif(this.tween){\n\t\t\tthis.tween.stop();\n\t\t\tthis.tween = null;\n\t\t}\n\t\n\t\tlet tStart;\n\t\tif(resume){\n\t\t\ttStart = this.t;\n\t\t}else{\n\t\t\ttStart = this.startPoint / this.length;\n\t\t}\n\t\tlet tEnd = this.endPoint / this.length;\n\t\tlet animationDuration = (tEnd - tStart) * this.length * 1000 / this.speed;\n\t\n\t\tlet progress = {t: tStart};\n\t\tthis.tween = new TWEEN.Tween(progress).to({t: tEnd}, animationDuration);\n\t\tthis.tween.easing(TWEEN.Easing.Linear.None);\n\t\tthis.tween.onUpdate((e) => {\n\t\t\tthis.t = progress.t;\n\t\t\tthis.callback(progress.t);\n\t\t});\n\t\tthis.tween.onComplete(() => {\n\t\t\tif(this.repeat){\n\t\t\t\tthis.start();\n\t\t\t}\n\t\t});\n\n\t\tsetTimeout(() => {\n\t\t\tthis.tween.start();\n\t\t}, 0);\n\t}\n\n\tstop(){\n\t\tif(!this.tween){\n\t\t\treturn;\n\t\t}\n\t\tthis.tween.stop();\n\t\tthis.tween = null;\n\t\tthis.t = 0;\n\t}\n\n\tpause(){\n\t\tif(!this.tween){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.tween.stop();\n\t\tTWEEN.remove(this.tween);\n\t\tthis.tween = null;\n\t}\n\n\tresume(){\n\t\tthis.start(true);\n\t}\n\n\tgetPoint(t){\n\t\treturn this.path.spline.getPoint(t);\n\t}\n\n}\n\nexport class AnimationPath{\n\tconstructor (points = []) {\n\t\tthis.points = points;\n\t\tthis.spline = new THREE.CatmullRomCurve3(points);\n\t\t//this.spline.reparametrizeByArcLength(1 / this.spline.getLength().total);\n\t}\n\n\tget (t) {\n\t\treturn this.spline.getPoint(t);\n\t}\n\n\tgetLength () {\n\t\treturn this.spline.getLength();\n\t}\n\n\tanimate (start, end, speed, callback) {\n\t\tlet animation = new PathAnimation(this, start, end, speed, callback);\n\t\tanimation.start();\n\n\t\treturn animation;\n\t}\n\n\tpause () {\n\t\tif (this.tween) {\n\t\t\tthis.tween.stop();\n\t\t}\n\t}\n\n\tresume () {\n\t\tif (this.tween) {\n\t\t\tthis.tween.start();\n\t\t}\n\t}\n\n\tgetGeometry () {\n\t\tlet geometry = new THREE.Geometry();\n\n\t\tlet samples = 500;\n\t\tlet i = 0;\n\t\tfor (let u = 0; u <= 1; u += 1 / samples) {\n\t\t\tlet position = this.spline.getPoint(u);\n\t\t\tgeometry.vertices[i] = new THREE.Vector3(position.x, position.y, position.z);\n\n\t\t\ti++;\n\t\t}\n\n\t\tif(this.closed){\n\t\t\tlet position = this.spline.getPoint(0);\n\t\t\tgeometry.vertices[i] = new THREE.Vector3(position.x, position.y, position.z);\n\t\t}\n\n\t\treturn geometry;\n\t}\n\n\tget closed(){\n\t\treturn this.spline.closed;\n\t}\n\n\tset closed(value){\n\t\tthis.spline.closed = value;\n\t}\n\n}\n\t\n\t/*\n\t{\n\t\tlet target = new THREE.Vector3(589854.34, 231411.19, 692.77);\n\t\tlet points = [\n\t\t\tnew THREE.Vector3(589815.52, 231738.31, 959.48 ),\n\t\t\tnew THREE.Vector3(589604.73, 231615.00, 968.10 ),\n\t\t\tnew THREE.Vector3(589579.11, 231354.41, 1010.06),\n\t\t\tnew THREE.Vector3(589723.00, 231169.95, 1015.57),\n\t\t\tnew THREE.Vector3(589960.76, 231116.87, 978.60 ),\n\t\t\tnew THREE.Vector3(590139.29, 231268.71, 972.33 )\n\t\t];\n\t\n\t\tlet path = new Potree.AnimationPath(points);\n\t\n\t\tlet geometry = path.getGeometry();\n\t\tlet material = new THREE.LineBasicMaterial();\n\t\tlet line = new THREE.Line(geometry, material);\n\t\tviewer.scene.scene.add(line);\n\t\n\t\tlet [start, end, speed] = [0, path.getLength(), 10];\n\t\tpath.animate(start, end, speed, t => {\n\t\t\tviewer.scene.view.position.copy(path.spline.getPoint(t));\n\t\t});\n\t\n\t}\n\t*/\n\t","\nconst XHRFactory = {\n\tconfig: {\n\t\twithCredentials: false,\n\t\tcustomHeaders: [\n\t\t\t{ header: null, value: null }\n\t\t]\n\t},\n\n\tcreateXMLHttpRequest: function () {\n\t\tlet xhr = new XMLHttpRequest();\n\n\t\tif (this.config.customHeaders &&\n\t\t\tArray.isArray(this.config.customHeaders) &&\n\t\t\tthis.config.customHeaders.length > 0) {\n\t\t\tlet baseOpen = xhr.open;\n\t\t\tlet customHeaders = this.config.customHeaders;\n\t\t\txhr.open = function () {\n\t\t\t\tbaseOpen.apply(this, [].slice.call(arguments));\n\t\t\t\tcustomHeaders.forEach(function (customHeader) {\n\t\t\t\t\tif (!!customHeader.header && !!customHeader.value) {\n\t\t\t\t\t\txhr.setRequestHeader(customHeader.header, customHeader.value);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\treturn xhr;\n\t}\n};\n\nexport {XHRFactory};","\n\n// /**\n// * adapted from http://stemkoski.github.io/Three.js/Sprite-Text-Labels.html\n// */\n\n// let vs2D = `\n// // precision mediump float;\n// // precision mediump int;\n\n// // attribute vec3 position;\n// // attribute vec4 color;\n// // attribute vec2 uv;\n\n// // uniform mat4 modelViewMatrix;\n// // uniform mat4 projectionMatrix;\n// // uniform mat3 uvTransform;\n\n// uniform vec2 uPosition;\n// uniform vec2 uScale;\n\n// varying vec2 vUv;\n\n\n// void main(){\n\n// \tvec2 pos = position.xy * uScale;\n\n// \tgl_Position = vec4(pos, 0.0, 1.0);\n\n// \tvUv = uv;\n\n\n\n// }\n\n// `;\n\n// let fs2D = `\n// precision mediump float;\n// precision mediump int;\n\n// uniform sampler2D map;\n\n// // varying vec3 vPosition;\n// // varying vec4 vColor;\n// varying vec2 vUv;\n\n\n// void main()\t{\n\n// \tgl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n\n// \tgl_FragColor = vec4(vUv, 0.0, 1.0);\n\n// \tvec4 texelColor = texture2D( map, vUv );\n// \t//texelColor = mapTexelToLinear( texelColor );\n\n// \tgl_FragColor = vec4(texelColor.xyz, 1.0);\n\n\n// }\n\n// `;\n\n// function getRawMaterial(map){\n// \tlet material = new THREE.ShaderMaterial( {\n// \t\tuniforms: {\n// \t\t\tmap: { type: \"t\", value: map },\n// \t\t\tuPosition: {type: \"vec2\", value: [0, 0]},\n// \t\t\tuScale: {type: \"vec2\", value: [1, 1]},\n// \t\t},\n// \t\tvertexShader: vs2D,\n// \t\tfragmentShader: fs2D,\n// \t\tside: THREE.DoubleSide,\n// \t\ttransparent: false,\n\n// \t} );\n\n// \treturn material;\n// }\n\n\nexport class TextSprite extends THREE.Object3D{\n\t\n\tconstructor(text){\n\t\tsuper();\n\n\t\tlet texture = new THREE.Texture();\n\t\ttexture.minFilter = THREE.LinearFilter;\n\t\ttexture.magFilter = THREE.LinearFilter;\n\t\tlet spriteMaterial = new THREE.SpriteMaterial({\n\t\t\tmap: texture,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false});\n\n\t\tthis.texture = texture;\n\n\t\tthis.material = spriteMaterial;\n\t\t//this.material = getRawMaterial(texture);\n\t\tthis.sprite = new THREE.Sprite(this.material);\n\t\tthis.add(this.sprite);\n\n\t\tthis.borderThickness = 4;\n\t\tthis.fontface = 'Arial';\n\t\tthis.fontsize = 28;\n\t\tthis.borderColor = { r: 0, g: 0, b: 0, a: 1.0 };\n\t\tthis.backgroundColor = { r: 255, g: 255, b: 255, a: 1.0 };\n\t\tthis.textColor = {r: 255, g: 255, b: 255, a: 1.0};\n\t\tthis.text = '';\n\n\t\tthis.setText(text);\n\t}\n\n\tsetText(text){\n\t\tif (this.text !== text){\n\t\t\tthis.text = text;\n\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\tsetTextColor(color){\n\t\tthis.textColor = color;\n\n\t\tthis.update();\n\t}\n\n\tsetBorderColor(color){\n\t\tthis.borderColor = color;\n\n\t\tthis.update();\n\t}\n\n\tsetBackgroundColor(color){\n\t\tthis.backgroundColor = color;\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet canvas = document.createElement('canvas');\n\t\tlet context = canvas.getContext('2d');\n\t\tcontext.font = 'Bold ' + this.fontsize + 'px ' + this.fontface;\n\n\t\t// get size data (height depends only on font size)\n\t\tlet metrics = context.measureText(this.text);\n\t\tlet textWidth = metrics.width;\n\t\tlet margin = 5;\n\t\tlet spriteWidth = 2 * margin + textWidth + 2 * this.borderThickness;\n\t\tlet spriteHeight = this.fontsize * 1.4 + 2 * this.borderThickness;\n\n\t\tcontext.canvas.width = spriteWidth;\n\t\tcontext.canvas.height = spriteHeight;\n\t\tcontext.font = 'Bold ' + this.fontsize + 'px ' + this.fontface;\n\n\t\t// background color\n\t\tcontext.fillStyle = 'rgba(' + this.backgroundColor.r + ',' + this.backgroundColor.g + ',' +\n\t\t\tthis.backgroundColor.b + ',' + this.backgroundColor.a + ')';\n\t\t// border color\n\t\tcontext.strokeStyle = 'rgba(' + this.borderColor.r + ',' + this.borderColor.g + ',' +\n\t\t\tthis.borderColor.b + ',' + this.borderColor.a + ')';\n\n\t\tcontext.lineWidth = this.borderThickness;\n\t\tthis.roundRect(context, this.borderThickness / 2, this.borderThickness / 2,\n\t\t\ttextWidth + this.borderThickness + 2 * margin, this.fontsize * 1.4 + this.borderThickness, 6);\n\n\t\t// text color\n\t\tcontext.strokeStyle = 'rgba(0, 0, 0, 1.0)';\n\t\tcontext.strokeText(this.text, this.borderThickness + margin, this.fontsize + this.borderThickness);\n\n\t\tcontext.fillStyle = 'rgba(' + this.textColor.r + ',' + this.textColor.g + ',' +\n\t\t\tthis.textColor.b + ',' + this.textColor.a + ')';\n\t\tcontext.fillText(this.text, this.borderThickness + margin, this.fontsize + this.borderThickness);\n\n\t\tlet texture = new THREE.Texture(canvas);\n\t\ttexture.minFilter = THREE.LinearFilter;\n\t\ttexture.magFilter = THREE.LinearFilter;\n\t\ttexture.needsUpdate = true;\n\t\t//this.material.needsUpdate = true;\n\n\t\t// { // screen-space sprite\n\t\t// \tlet [screenWidth, screenHeight] = [1620, 937];\n\n\t\t// \tlet uniforms = this.sprite.material.uniforms;\n\t\t// \tlet aspect = spriteHeight / spriteWidth;\n\t\t// \tlet factor = 0.5;\n\n\t\t// \tlet w = spriteWidth / screenWidth;\n\t\t// \tlet h = spriteHeight / screenHeight;\n\n\t\t// \tuniforms.uScale.value = [2 * w, 2 * h];\n\t\t// \t//uniforms.uScale.value = [factor * 1, factor * aspect];\n\t\t//\tthis.sprite.material.uniforms.map.value = texture;\n\t\t// }\n\n\t\tthis.sprite.material.map = texture;\n\t\tthis.texture = texture;\n\n\t\tthis.sprite.scale.set(spriteWidth * 0.01, spriteHeight * 0.01, 1.0);\n\t}\n\n\troundRect(ctx, x, y, w, h, r){\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + r, y);\n\t\tctx.lineTo(x + w - r, y);\n\t\tctx.quadraticCurveTo(x + w, y, x + w, y + r);\n\t\tctx.lineTo(x + w, y + h - r);\n\t\tctx.quadraticCurveTo(x + w, y + h, x + w - r, y + h);\n\t\tctx.lineTo(x + r, y + h);\n\t\tctx.quadraticCurveTo(x, y + h, x, y + h - r);\n\t\tctx.lineTo(x, y + r);\n\t\tctx.quadraticCurveTo(x, y, x + r, y);\n\t\tctx.closePath();\n\t\tctx.fill();\n\t\tctx.stroke();\n\t}\n\n}\n\n\n","\nimport {TextSprite} from \"../TextSprite.js\";\n\nexport class Volume extends THREE.Object3D {\n\tconstructor (args = {}) {\n\t\tsuper();\n\n\t\tif(this.constructor.name === \"Volume\"){\n\t\t\tconsole.warn(\"Can't create object of class Volume directly. Use classes BoxVolume or SphereVolume instead.\");\n\t\t}\n\n\t\t//console.log(this);\n\t\t//console.log(this.constructor);\n\t\t//console.log(this.constructor.name);\n\n\t\tthis._clip = args.clip || false;\n\t\tthis._visible = true;\n\t\tthis.showVolumeLabel = true;\n\t\tthis._modifiable = args.modifiable || true;\n\n\t\tthis.label = new TextSprite('0');\n\t\tthis.label.setBorderColor({r: 0, g: 255, b: 0, a: 0.0});\n\t\tthis.label.setBackgroundColor({r: 0, g: 255, b: 0, a: 0.0});\n\t\tthis.label.material.depthTest = false;\n\t\tthis.label.material.depthWrite = false;\n\t\tthis.label.material.transparent = true;\n\t\tthis.label.position.y -= 0.5;\n\t\tthis.add(this.label);\n\n\t\tthis.label.updateMatrixWorld = () => {\n\t\t\tlet volumeWorldPos = new THREE.Vector3();\n\t\t\tvolumeWorldPos.setFromMatrixPosition(this.matrixWorld);\n\t\t\tthis.label.position.copy(volumeWorldPos);\n\t\t\tthis.label.updateMatrix();\n\t\t\tthis.label.matrixWorld.copy(this.label.matrix);\n\t\t\tthis.label.matrixWorldNeedsUpdate = false;\n\n\t\t\tfor (let i = 0, l = this.label.children.length; i < l; i++) {\n\t\t\t\tthis.label.children[ i ].updateMatrixWorld(true);\n\t\t\t}\n\t\t};\n\n\t\t{ // event listeners\n\t\t\tthis.addEventListener('select', e => {});\n\t\t\tthis.addEventListener('deselect', e => {});\n\t\t}\n\n\t}\n\n\tget visible(){\n\t\treturn this._visible;\n\t}\n\n\tset visible(value){\n\t\tif(this._visible !== value){\n\t\t\tthis._visible = value;\n\n\t\t\tthis.dispatchEvent({type: \"visibility_changed\", object: this});\n\t\t}\n\t}\n\n\tgetVolume () {\n\t\tconsole.warn(\"override this in subclass\");\n\t}\n\n\tupdate () {\n\t\t\n\t};\n\n\traycast (raycaster, intersects) {\n\n\t}\n\n\tget clip () {\n\t\treturn this._clip;\n\t}\n\n\tset clip (value) {\n\n\t\tif(this._clip !== value){\n\t\t\tthis._clip = value;\n\n\t\t\tthis.update();\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: \"clip_changed\",\n\t\t\t\tobject: this\n\t\t\t});\n\t\t}\n\t\t\n\t}\n\n\tget modifieable () {\n\t\treturn this._modifiable;\n\t}\n\n\tset modifieable (value) {\n\t\tthis._modifiable = value;\n\n\t\tthis.update();\n\t}\n};\n\n\nexport class BoxVolume extends Volume{\n\n\tconstructor(args = {}){\n\t\tsuper(args);\n\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\t\tthis.name = 'box_' + this.constructor.counter;\n\n\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\n\t\tboxGeometry.computeBoundingBox();\n\n\t\tlet boxFrameGeometry = new THREE.Geometry();\n\t\t{\n\t\t\tlet Vector3 = THREE.Vector3;\n\n\t\t\tboxFrameGeometry.vertices.push(\n\n\t\t\t\t// bottom\n\t\t\t\tnew Vector3(-0.5, -0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, -0.5, 0.5),\n\t\t\t\t// top\n\t\t\t\tnew Vector3(-0.5, 0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, -0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, 0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, 0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, 0.5, 0.5),\n\t\t\t\t// sides\n\t\t\t\tnew Vector3(-0.5, -0.5, 0.5),\n\t\t\t\tnew Vector3(-0.5, 0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, 0.5),\n\t\t\t\tnew Vector3(0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(0.5, 0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, -0.5, -0.5),\n\t\t\t\tnew Vector3(-0.5, 0.5, -0.5),\n\n\t\t\t);\n\n\t\t}\n\n\t\tthis.material = new THREE.MeshBasicMaterial({\n\t\t\tcolor: 0x00ff00,\n\t\t\ttransparent: true,\n\t\t\topacity: 0.3,\n\t\t\tdepthTest: true,\n\t\t\tdepthWrite: false});\n\t\tthis.box = new THREE.Mesh(boxGeometry, this.material);\n\t\tthis.box.geometry.computeBoundingBox();\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\n\t\tthis.add(this.box);\n\n\t\tthis.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\n\t\t// this.frame.mode = THREE.Lines;\n\t\tthis.add(this.frame);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\n\n\t\tif (this._clip) {\n\t\t\tthis.box.visible = false;\n\t\t\tthis.label.visible = false;\n\t\t} else {\n\t\t\tthis.box.visible = true;\n\t\t\tthis.label.visible = this.showVolumeLabel;\n\t\t}\n\t}\n\n\traycast (raycaster, intersects) {\n\t\tlet is = [];\n\t\tthis.box.raycast(raycaster, is);\n\n\t\tif (is.length > 0) {\n\t\t\tlet I = is[0];\n\t\t\tintersects.push({\n\t\t\t\tdistance: I.distance,\n\t\t\t\tobject: this,\n\t\t\t\tpoint: I.point.clone()\n\t\t\t});\n\t\t}\n\t}\n\n\tgetVolume(){\n\t\treturn Math.abs(this.scale.x * this.scale.y * this.scale.z);\n\t}\n\n};\n\nexport class SphereVolume extends Volume{\n\n\tconstructor(args = {}){\n\t\tsuper(args);\n\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\t\tthis.name = 'sphere_' + this.constructor.counter;\n\n\t\tlet sphereGeometry = new THREE.SphereGeometry(1, 32, 32);\n\t\tsphereGeometry.computeBoundingBox();\n\n\t\tthis.material = new THREE.MeshBasicMaterial({\n\t\t\tcolor: 0x00ff00,\n\t\t\ttransparent: true,\n\t\t\topacity: 0.3,\n\t\t\tdepthTest: true,\n\t\t\tdepthWrite: false});\n\t\tthis.sphere = new THREE.Mesh(sphereGeometry, this.material);\n\t\tthis.sphere.visible = false;\n\t\tthis.sphere.geometry.computeBoundingBox();\n\t\tthis.boundingBox = this.sphere.geometry.boundingBox;\n\t\tthis.add(this.sphere);\n\n\t\tthis.label.visible = false;\n\n\n\t\tlet frameGeometry = new THREE.Geometry();\n\t\t{\n\t\t\tlet steps = 64;\n\t\t\tlet uSegments = 8;\n\t\t\tlet vSegments = 5;\n\t\t\tlet r = 1;\n\n\t\t\tfor(let uSegment = 0; uSegment < uSegments; uSegment++){\n\n\t\t\t\tlet alpha = (uSegment / uSegments) * Math.PI * 2;\n\t\t\t\tlet dirx = Math.cos(alpha);\n\t\t\t\tlet diry = Math.sin(alpha);\n\n\t\t\t\tfor(let i = 0; i <= steps; i++){\n\t\t\t\t\tlet v = (i / steps) * Math.PI * 2;\n\t\t\t\t\tlet vNext = v + 2 * Math.PI / steps;\n\n\t\t\t\t\tlet height = Math.sin(v);\n\t\t\t\t\tlet xyAmount = Math.cos(v);\n\n\t\t\t\t\tlet heightNext = Math.sin(vNext);\n\t\t\t\t\tlet xyAmountNext = Math.cos(vNext);\n\n\t\t\t\t\tlet vertex = new THREE.Vector3(dirx * xyAmount, diry * xyAmount, height);\n\t\t\t\t\tframeGeometry.vertices.push(vertex);\n\n\t\t\t\t\tlet vertexNext = new THREE.Vector3(dirx * xyAmountNext, diry * xyAmountNext, heightNext);\n\t\t\t\t\tframeGeometry.vertices.push(vertexNext);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// creates rings at poles, just because it's easier to implement\n\t\t\tfor(let vSegment = 0; vSegment <= vSegments + 1; vSegment++){\n\n\t\t\t\t//let height = (vSegment / (vSegments + 1)) * 2 - 1; // -1 to 1\n\t\t\t\tlet uh = (vSegment / (vSegments + 1)); // -1 to 1\n\t\t\t\tuh = (1 - uh) * (-Math.PI / 2) + uh *(Math.PI / 2);\n\t\t\t\tlet height = Math.sin(uh);\n\n\t\t\t\tconsole.log(uh, height);\n\n\t\t\t\tfor(let i = 0; i <= steps; i++){\n\t\t\t\t\tlet u = (i / steps) * Math.PI * 2;\n\t\t\t\t\tlet uNext = u + 2 * Math.PI / steps;\n\n\t\t\t\t\tlet dirx = Math.cos(u);\n\t\t\t\t\tlet diry = Math.sin(u);\n\n\t\t\t\t\tlet dirxNext = Math.cos(uNext);\n\t\t\t\t\tlet diryNext = Math.sin(uNext);\n\n\t\t\t\t\tlet xyAmount = Math.sqrt(1 - height * height);\n\n\t\t\t\t\tlet vertex = new THREE.Vector3(dirx * xyAmount, diry * xyAmount, height);\n\t\t\t\t\tframeGeometry.vertices.push(vertex);\n\n\t\t\t\t\tlet vertexNext = new THREE.Vector3(dirxNext * xyAmount, diryNext * xyAmount, height);\n\t\t\t\t\tframeGeometry.vertices.push(vertexNext);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.frame = new THREE.LineSegments(frameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\n\t\tthis.add(this.frame);\n\n\t\tlet frameMaterial = new THREE.MeshBasicMaterial({wireframe: true, color: 0x000000});\n\t\tthis.frame = new THREE.Mesh(sphereGeometry, frameMaterial);\n\t\t//this.add(this.frame);\n\n\t\t//this.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\n\t\t// this.frame.mode = THREE.Lines;\n\t\t//this.add(this.frame);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tthis.boundingBox = this.sphere.geometry.boundingBox;\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\n\n\t\t//if (this._clip) {\n\t\t//\tthis.sphere.visible = false;\n\t\t//\tthis.label.visible = false;\n\t\t//} else {\n\t\t//\tthis.sphere.visible = true;\n\t\t//\tthis.label.visible = this.showVolumeLabel;\n\t\t//}\n\t}\n\n\traycast (raycaster, intersects) {\n\t\tlet is = [];\n\t\tthis.sphere.raycast(raycaster, is);\n\n\t\tif (is.length > 0) {\n\t\t\tlet I = is[0];\n\t\t\tintersects.push({\n\t\t\t\tdistance: I.distance,\n\t\t\t\tobject: this,\n\t\t\t\tpoint: I.point.clone()\n\t\t\t});\n\t\t}\n\t}\n\t\n\t// see https://en.wikipedia.org/wiki/Ellipsoid#Volume\n\tgetVolume(){\n\t\treturn (4 / 3) * Math.PI * this.scale.x * this.scale.y * this.scale.z;\n\t}\n\n};","\nimport {Utils} from \"../utils.js\";\n\nexport class Profile extends THREE.Object3D{\n\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\n\t\tthis.name = 'Profile_' + this.constructor.counter;\n\t\tthis.points = [];\n\t\tthis.spheres = [];\n\t\tthis.edges = [];\n\t\tthis.boxes = [];\n\t\tthis.width = 1;\n\t\tthis.height = 20;\n\t\tthis._modifiable = true;\n\n\t\tthis.sphereGeometry = new THREE.SphereGeometry(0.4, 10, 10);\n\t\tthis.color = new THREE.Color(0xff0000);\n\t\tthis.lineColor = new THREE.Color(0xff0000);\n\t}\n\n\tcreateSphereMaterial () {\n\t\tlet sphereMaterial = new THREE.MeshLambertMaterial({\n\t\t\t//shading: THREE.SmoothShading,\n\t\t\tcolor: 0xff0000,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false}\n\t\t);\n\n\t\treturn sphereMaterial;\n\t};\n\n\tgetSegments () {\n\t\tlet segments = [];\n\n\t\tfor (let i = 0; i < this.points.length - 1; i++) {\n\t\t\tlet start = this.points[i].clone();\n\t\t\tlet end = this.points[i + 1].clone();\n\t\t\tsegments.push({start: start, end: end});\n\t\t}\n\n\t\treturn segments;\n\t}\n\n\tgetSegmentMatrices () {\n\t\tlet segments = this.getSegments();\n\t\tlet matrices = [];\n\n\t\tfor (let segment of segments) {\n\t\t\tlet {start, end} = segment;\n\n\t\t\tlet box = new THREE.Object3D();\n\n\t\t\tlet length = start.clone().setZ(0).distanceTo(end.clone().setZ(0));\n\t\t\tbox.scale.set(length, 10000, this.width);\n\t\t\tbox.up.set(0, 0, 1);\n\n\t\t\tlet center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\n\t\t\tlet diff = new THREE.Vector3().subVectors(end, start);\n\t\t\tlet target = new THREE.Vector3(diff.y, -diff.x, 0);\n\n\t\t\tbox.position.set(0, 0, 0);\n\t\t\tbox.lookAt(target);\n\t\t\tbox.position.copy(center);\n\n\t\t\tbox.updateMatrixWorld();\n\t\t\tmatrices.push(box.matrixWorld);\n\t\t}\n\n\t\treturn matrices;\n\t}\n\n\taddMarker (point) {\n\t\tthis.points.push(point);\n\n\t\tlet sphere = new THREE.Mesh(this.sphereGeometry, this.createSphereMaterial());\n\n\t\tthis.add(sphere);\n\t\tthis.spheres.push(sphere);\n\n\t\t// edges & boxes\n\t\tif (this.points.length > 1) {\n\t\t\tlet lineGeometry = new THREE.Geometry();\n\t\t\tlineGeometry.vertices.push(new THREE.Vector3(), new THREE.Vector3());\n\t\t\tlineGeometry.colors.push(this.lineColor, this.lineColor, this.lineColor);\n\t\t\tlet lineMaterial = new THREE.LineBasicMaterial({\n\t\t\t\tvertexColors: THREE.VertexColors,\n\t\t\t\tlinewidth: 2,\n\t\t\t\ttransparent: true,\n\t\t\t\topacity: 0.4\n\t\t\t});\n\t\t\tlineMaterial.depthTest = false;\n\t\t\tlet edge = new THREE.Line(lineGeometry, lineMaterial);\n\t\t\tedge.visible = false;\n\n\t\t\tthis.add(edge);\n\t\t\tthis.edges.push(edge);\n\n\t\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\n\t\t\tlet boxMaterial = new THREE.MeshBasicMaterial({color: 0xff0000, transparent: true, opacity: 0.2});\n\t\t\tlet box = new THREE.Mesh(boxGeometry, boxMaterial);\n\t\t\tbox.visible = false;\n\n\t\t\tthis.add(box);\n\t\t\tthis.boxes.push(box);\n\t\t}\n\n\t\t{ // event listeners\n\t\t\tlet drag = (e) => {\n\t\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\t\te.drag.end, \n\t\t\t\t\te.viewer.scene.getActiveCamera(), \n\t\t\t\t\te.viewer, \n\t\t\t\t\te.viewer.scene.pointclouds);\n\n\t\t\t\tif (I) {\n\t\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\n\t\t\t\t\tif (i !== -1) {\n\t\t\t\t\t\tthis.setPosition(i, I.location);\n\t\t\t\t\t\t//this.dispatchEvent({\n\t\t\t\t\t\t//\t'type': 'marker_moved',\n\t\t\t\t\t\t//\t'profile': this,\n\t\t\t\t\t\t//\t'index': i\n\t\t\t\t\t\t//});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet drop = e => {\n\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\t\t'type': 'marker_dropped',\n\t\t\t\t\t\t'profile': this,\n\t\t\t\t\t\t'index': i\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet mouseover = (e) => e.object.material.emissive.setHex(0x888888);\n\t\t\tlet mouseleave = (e) => e.object.material.emissive.setHex(0x000000);\n\n\t\t\tsphere.addEventListener('drag', drag);\n\t\t\tsphere.addEventListener('drop', drop);\n\t\t\tsphere.addEventListener('mouseover', mouseover);\n\t\t\tsphere.addEventListener('mouseleave', mouseleave);\n\t\t}\n\n\t\tlet event = {\n\t\t\ttype: 'marker_added',\n\t\t\tprofile: this,\n\t\t\tsphere: sphere\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.setPosition(this.points.length - 1, point);\n\t}\n\n\tremoveMarker (index) {\n\t\tthis.points.splice(index, 1);\n\n\t\tthis.remove(this.spheres[index]);\n\n\t\tlet edgeIndex = (index === 0) ? 0 : (index - 1);\n\t\tthis.remove(this.edges[edgeIndex]);\n\t\tthis.edges.splice(edgeIndex, 1);\n\t\tthis.remove(this.boxes[edgeIndex]);\n\t\tthis.boxes.splice(edgeIndex, 1);\n\n\t\tthis.spheres.splice(index, 1);\n\n\t\tthis.update();\n\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'marker_removed',\n\t\t\t'profile': this\n\t\t});\n\t}\n\n\tsetPosition (index, position) {\n\t\tlet point = this.points[index];\n\t\tpoint.copy(position);\n\n\t\tlet event = {\n\t\t\ttype: 'marker_moved',\n\t\t\tprofile:\tthis,\n\t\t\tindex:\tindex,\n\t\t\tposition: point.clone()\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.update();\n\t}\n\n\tsetWidth (width) {\n\t\tthis.width = width;\n\n\t\tlet event = {\n\t\t\ttype: 'width_changed',\n\t\t\tprofile:\tthis,\n\t\t\twidth:\twidth\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.update();\n\t}\n\n\tgetWidth () {\n\t\treturn this.width;\n\t}\n\n\tupdate () {\n\t\tif (this.points.length === 0) {\n\t\t\treturn;\n\t\t} else if (this.points.length === 1) {\n\t\t\tlet point = this.points[0];\n\t\t\tthis.spheres[0].position.copy(point);\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet min = this.points[0].clone();\n\t\tlet max = this.points[0].clone();\n\t\tlet centroid = new THREE.Vector3();\n\t\tlet lastIndex = this.points.length - 1;\n\t\tfor (let i = 0; i <= lastIndex; i++) {\n\t\t\tlet point = this.points[i];\n\t\t\tlet sphere = this.spheres[i];\n\t\t\tlet leftIndex = (i === 0) ? lastIndex : i - 1;\n\t\t\t// let rightIndex = (i === lastIndex) ? 0 : i + 1;\n\t\t\tlet leftVertex = this.points[leftIndex];\n\t\t\t// let rightVertex = this.points[rightIndex];\n\t\t\tlet leftEdge = this.edges[leftIndex];\n\t\t\tlet rightEdge = this.edges[i];\n\t\t\tlet leftBox = this.boxes[leftIndex];\n\t\t\t// rightBox = this.boxes[i];\n\n\t\t\t// let leftEdgeLength = point.distanceTo(leftVertex);\n\t\t\t// let rightEdgeLength = point.distanceTo(rightVertex);\n\t\t\t// let leftEdgeCenter = new THREE.Vector3().addVectors(leftVertex, point).multiplyScalar(0.5);\n\t\t\t// let rightEdgeCenter = new THREE.Vector3().addVectors(point, rightVertex).multiplyScalar(0.5);\n\n\t\t\tsphere.position.copy(point);\n\n\t\t\tif (this._modifiable) {\n\t\t\t\tsphere.visible = true;\n\t\t\t} else {\n\t\t\t\tsphere.visible = false;\n\t\t\t}\n\n\t\t\tif (leftEdge) {\n\t\t\t\tleftEdge.geometry.vertices[1].copy(point);\n\t\t\t\tleftEdge.geometry.verticesNeedUpdate = true;\n\t\t\t\tleftEdge.geometry.computeBoundingSphere();\n\t\t\t}\n\n\t\t\tif (rightEdge) {\n\t\t\t\trightEdge.geometry.vertices[0].copy(point);\n\t\t\t\trightEdge.geometry.verticesNeedUpdate = true;\n\t\t\t\trightEdge.geometry.computeBoundingSphere();\n\t\t\t}\n\n\t\t\tif (leftBox) {\n\t\t\t\tlet start = leftVertex;\n\t\t\t\tlet end = point;\n\t\t\t\tlet length = start.clone().setZ(0).distanceTo(end.clone().setZ(0));\n\t\t\t\tleftBox.scale.set(length, 1000000, this.width);\n\t\t\t\tleftBox.up.set(0, 0, 1);\n\n\t\t\t\tlet center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\n\t\t\t\tlet diff = new THREE.Vector3().subVectors(end, start);\n\t\t\t\tlet target = new THREE.Vector3(diff.y, -diff.x, 0);\n\n\t\t\t\tleftBox.position.set(0, 0, 0);\n\t\t\t\tleftBox.lookAt(target);\n\t\t\t\tleftBox.position.copy(center);\n\t\t\t}\n\n\t\t\tcentroid.add(point);\n\t\t\tmin.min(point);\n\t\t\tmax.max(point);\n\t\t}\n\t\tcentroid.multiplyScalar(1 / this.points.length);\n\n\t\tfor (let i = 0; i < this.boxes.length; i++) {\n\t\t\tlet box = this.boxes[i];\n\n\t\t\tbox.position.z = min.z + (max.z - min.z) / 2;\n\t\t}\n\t}\n\n\traycast (raycaster, intersects) {\n\t\tfor (let i = 0; i < this.points.length; i++) {\n\t\t\tlet sphere = this.spheres[i];\n\n\t\t\tsphere.raycast(raycaster, intersects);\n\t\t}\n\n\t\t// recalculate distances because they are not necessarely correct\n\t\t// for scaled objects.\n\t\t// see https://github.com/mrdoob/three.js/issues/5827\n\t\t// TODO: remove this once the bug has been fixed\n\t\tfor (let i = 0; i < intersects.length; i++) {\n\t\t\tlet I = intersects[i];\n\t\t\tI.distance = raycaster.ray.origin.distanceTo(I.point);\n\t\t}\n\t\tintersects.sort(function (a, b) { return a.distance - b.distance; });\n\t};\n\n\tget modifiable () {\n\t\treturn this._modifiable;\n\t}\n\n\tset modifiable (value) {\n\t\tthis._modifiable = value;\n\t\tthis.update();\n\t}\n\n}\n","\nimport {TextSprite} from \"../TextSprite.js\";\nimport {Utils} from \"../utils.js\";\n\nfunction createHeightLine(){\n\tlet lineGeometry = new THREE.LineGeometry();\n\n\tlineGeometry.setPositions([\n\t\t0, 0, 0,\n\t\t0, 0, 0,\n\t]);\n\n\tlet lineMaterial = new THREE.LineMaterial({ \n\t\tcolor: 0x00ff00, \n\t\tdashSize: 5, \n\t\tgapSize: 2,\n\t\tlinewidth: 2, \n\t\tresolution: new THREE.Vector2(1000, 1000),\n\t});\n\n\tlineMaterial.depthTest = false;\n\tconst heightEdge = new THREE.Line2(lineGeometry, lineMaterial);\n\theightEdge.visible = false;\n\n\t//this.add(this.heightEdge);\n\t\n\treturn heightEdge;\n}\n\nfunction createHeightLabel(){\n\tconst heightLabel = new TextSprite('');\n\n\theightLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\n\theightLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\theightLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\theightLabel.fontsize = 16;\n\theightLabel.material.depthTest = false;\n\theightLabel.material.opacity = 1;\n\theightLabel.visible = false;\n\n\treturn heightLabel;\n}\n\nfunction createAreaLabel(){\n\tconst areaLabel = new TextSprite('');\n\n\tareaLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\n\tareaLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\tareaLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\tareaLabel.fontsize = 16;\n\tareaLabel.material.depthTest = false;\n\tareaLabel.material.opacity = 1;\n\tareaLabel.visible = false;\n\t\n\treturn areaLabel;\n}\n\nfunction createCircleRadiusLabel(){\n\tconst circleRadiusLabel = new TextSprite(\"\");\n\n\tcircleRadiusLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\n\tcircleRadiusLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\tcircleRadiusLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\tcircleRadiusLabel.fontsize = 16;\n\tcircleRadiusLabel.material.depthTest = false;\n\tcircleRadiusLabel.material.opacity = 1;\n\tcircleRadiusLabel.visible = false;\n\t\n\treturn circleRadiusLabel;\n}\n\nfunction createCircleRadiusLine(){\n\tconst lineGeometry = new THREE.LineGeometry();\n\n\tlineGeometry.setPositions([\n\t\t0, 0, 0,\n\t\t0, 0, 0,\n\t]);\n\n\tconst lineMaterial = new THREE.LineMaterial({ \n\t\tcolor: 0xff0000, \n\t\tlinewidth: 2, \n\t\tresolution: new THREE.Vector2(1000, 1000),\n\t\tgapSize: 1,\n\t\tdashed: true,\n\t});\n\n\tlineMaterial.depthTest = false;\n\n\tconst circleRadiusLine = new THREE.Line2(lineGeometry, lineMaterial);\n\tcircleRadiusLine.visible = false;\n\n\treturn circleRadiusLine;\n}\n\nfunction createCircleLine(){\n\tconst coordinates = [];\n\n\tlet n = 128;\n\tfor(let i = 0; i <= n; i++){\n\t\tlet u0 = 2 * Math.PI * (i / n);\n\t\tlet u1 = 2 * Math.PI * (i + 1) / n;\n\n\t\tlet p0 = new THREE.Vector3(\n\t\t\tMath.cos(u0), \n\t\t\tMath.sin(u0), \n\t\t\t0\n\t\t);\n\n\t\tlet p1 = new THREE.Vector3(\n\t\t\tMath.cos(u1), \n\t\t\tMath.sin(u1), \n\t\t\t0\n\t\t);\n\n\t\tcoordinates.push(\n\t\t\t...p0.toArray(),\n\t\t\t...p1.toArray(),\n\t\t);\n\t}\n\n\tconst geometry = new THREE.LineGeometry();\n\tgeometry.setPositions(coordinates);\n\n\tconst material = new THREE.LineMaterial({ \n\t\tcolor: 0xff0000, \n\t\tdashSize: 5, \n\t\tgapSize: 2,\n\t\tlinewidth: 2, \n\t\tresolution: new THREE.Vector2(1000, 1000),\n\t});\n\n\tmaterial.depthTest = false;\n\n\tconst circleLine = new THREE.Line2(geometry, material);\n\tcircleLine.visible = false;\n\tcircleLine.computeLineDistances();\n\n\treturn circleLine;\n}\n\nfunction createCircleCenter(){\n\tconst sg = new THREE.SphereGeometry(1, 32, 32);\n\tconst sm = new THREE.MeshNormalMaterial();\n\t\n\tconst circleCenter = new THREE.Mesh(sg, sm);\n\tcircleCenter.visible = false;\n\n\treturn circleCenter;\n}\n\nfunction createLine(){\n\tconst geometry = new THREE.LineGeometry();\n\n\tgeometry.setPositions([\n\t\t0, 0, 0,\n\t\t0, 0, 0,\n\t]);\n\n\tconst material = new THREE.LineMaterial({ \n\t\tcolor: 0xff0000, \n\t\tlinewidth: 2, \n\t\tresolution: new THREE.Vector2(1000, 1000),\n\t\tgapSize: 1,\n\t\tdashed: true,\n\t});\n\n\tmaterial.depthTest = false;\n\n\tconst line = new THREE.Line2(geometry, material);\n\n\treturn line;\n}\n\nfunction createCircle(){\n\n\tconst coordinates = [];\n\n\tlet n = 128;\n\tfor(let i = 0; i <= n; i++){\n\t\tlet u0 = 2 * Math.PI * (i / n);\n\t\tlet u1 = 2 * Math.PI * (i + 1) / n;\n\n\t\tlet p0 = new THREE.Vector3(\n\t\t\tMath.cos(u0), \n\t\t\tMath.sin(u0), \n\t\t\t0\n\t\t);\n\n\t\tlet p1 = new THREE.Vector3(\n\t\t\tMath.cos(u1), \n\t\t\tMath.sin(u1), \n\t\t\t0\n\t\t);\n\n\t\tcoordinates.push(\n\t\t\t...p0.toArray(),\n\t\t\t...p1.toArray(),\n\t\t);\n\t}\n\n\tconst geometry = new THREE.LineGeometry();\n\tgeometry.setPositions(coordinates);\n\n\tconst material = new THREE.LineMaterial({ \n\t\tcolor: 0xff0000, \n\t\tdashSize: 5, \n\t\tgapSize: 2,\n\t\tlinewidth: 2, \n\t\tresolution: new THREE.Vector2(1000, 1000),\n\t});\n\n\tmaterial.depthTest = false;\n\n\tconst line = new THREE.Line2(geometry, material);\n\tline.computeLineDistances();\n\n\treturn line;\n\n}\n\nfunction createAzimuth(){\n\n\tconst azimuth = {\n\t\tlabel: null,\n\t\tcenter: null,\n\t\ttarget: null,\n\t\tnorth: null,\n\t\tcenterToNorth: null,\n\t\tcenterToTarget: null,\n\t\tcenterToTargetground: null,\n\t\ttargetgroundToTarget: null,\n\t\tcircle: null,\n\n\t\tnode: null,\n\t};\n\n\tconst sg = new THREE.SphereGeometry(1, 32, 32);\n\tconst sm = new THREE.MeshNormalMaterial();\n\n\t{\n\t\tconst label = new TextSprite(\"\");\n\n\t\tlabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\n\t\tlabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\tlabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\tlabel.fontsize = 16;\n\t\tlabel.material.depthTest = false;\n\t\tlabel.material.opacity = 1;\n\n\t\tazimuth.label = label;\n\t}\n\n\tazimuth.center = new THREE.Mesh(sg, sm);\n\tazimuth.target = new THREE.Mesh(sg, sm);\n\tazimuth.north = new THREE.Mesh(sg, sm);\n\tazimuth.centerToNorth = createLine();\n\tazimuth.centerToTarget = createLine();\n\tazimuth.centerToTargetground = createLine();\n\tazimuth.targetgroundToTarget = createLine();\n\tazimuth.circle = createCircle();\n\n\tazimuth.node = new THREE.Object3D();\n\tazimuth.node.add(\n\t\tazimuth.centerToNorth,\n\t\tazimuth.centerToTarget,\n\t\tazimuth.centerToTargetground,\n\t\tazimuth.targetgroundToTarget,\n\t\tazimuth.circle,\n\t\tazimuth.label,\n\t\tazimuth.center,\n\t\tazimuth.target,\n\t\tazimuth.north,\n\t);\n\n\treturn azimuth;\n}\n\nexport class Measure extends THREE.Object3D {\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\n\t\tthis.name = 'Measure_' + this.constructor.counter;\n\t\tthis.points = [];\n\t\tthis._showDistances = true;\n\t\tthis._showCoordinates = false;\n\t\tthis._showArea = false;\n\t\tthis._closed = true;\n\t\tthis._showAngles = false;\n\t\tthis._showCircle = false;\n\t\tthis._showHeight = false;\n\t\tthis._showEdges = true;\n\t\tthis._showAzimuth = false;\n\t\tthis.maxMarkers = Number.MAX_SAFE_INTEGER;\n\n\t\tthis.sphereGeometry = new THREE.SphereGeometry(0.4, 10, 10);\n\t\tthis.color = new THREE.Color(0xff0000);\n\n\t\tthis.spheres = [];\n\t\tthis.edges = [];\n\t\tthis.sphereLabels = [];\n\t\tthis.edgeLabels = [];\n\t\tthis.angleLabels = [];\n\t\tthis.coordinateLabels = [];\n\n\t\tthis.heightEdge = createHeightLine();\n\t\tthis.heightLabel = createHeightLabel();\n\t\tthis.areaLabel = createAreaLabel();\n\t\tthis.circleRadiusLabel = createCircleRadiusLabel();\n\t\tthis.circleRadiusLine = createCircleRadiusLine();\n\t\tthis.circleLine = createCircleLine();\n\t\tthis.circleCenter = createCircleCenter();\n\n\t\tthis.azimuth = createAzimuth();\n\n\t\tthis.add(this.heightEdge);\n\t\tthis.add(this.heightLabel);\n\t\tthis.add(this.areaLabel);\n\t\tthis.add(this.circleRadiusLabel);\n\t\tthis.add(this.circleRadiusLine);\n\t\tthis.add(this.circleLine);\n\t\tthis.add(this.circleCenter);\n\n\t\tthis.add(this.azimuth.node);\n\n\t}\n\n\tcreateSphereMaterial () {\n\t\tlet sphereMaterial = new THREE.MeshLambertMaterial({\n\t\t\t//shading: THREE.SmoothShading,\n\t\t\tcolor: this.color,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false}\n\t\t);\n\n\t\treturn sphereMaterial;\n\t};\n\n\taddMarker (point) {\n\t\tif (point instanceof THREE.Vector3) {\n\t\t\tpoint = {position: point};\n\t\t}else if(point instanceof Array){\n\t\t\tpoint = {position: new THREE.Vector3(...point)};\n\t\t}\n\t\tthis.points.push(point);\n\n\t\t// sphere\n\t\tlet sphere = new THREE.Mesh(this.sphereGeometry, this.createSphereMaterial());\n\n\t\tthis.add(sphere);\n\t\tthis.spheres.push(sphere);\n\n\t\t{ // edges\n\t\t\tlet lineGeometry = new THREE.LineGeometry();\n\t\t\tlineGeometry.setPositions( [\n\t\t\t\t\t0, 0, 0,\n\t\t\t\t\t0, 0, 0,\n\t\t\t]);\n\n\t\t\tlet lineMaterial = new THREE.LineMaterial({\n\t\t\t\tcolor: 0xff0000, \n\t\t\t\tlinewidth: 2, \n\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\n\t\t\t});\n\n\t\t\tlineMaterial.depthTest = false;\n\n\t\t\tlet edge = new THREE.Line2(lineGeometry, lineMaterial);\n\t\t\tedge.visible = true;\n\n\t\t\tthis.add(edge);\n\t\t\tthis.edges.push(edge);\n\t\t}\n\n\t\t{ // edge labels\n\t\t\tlet edgeLabel = new TextSprite();\n\t\t\tedgeLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tedgeLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tedgeLabel.material.depthTest = false;\n\t\t\tedgeLabel.visible = false;\n\t\t\tedgeLabel.fontsize = 16;\n\t\t\tthis.edgeLabels.push(edgeLabel);\n\t\t\tthis.add(edgeLabel);\n\t\t}\n\n\t\t{ // angle labels\n\t\t\tlet angleLabel = new TextSprite();\n\t\t\tangleLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tangleLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tangleLabel.fontsize = 16;\n\t\t\tangleLabel.material.depthTest = false;\n\t\t\tangleLabel.material.opacity = 1;\n\t\t\tangleLabel.visible = false;\n\t\t\tthis.angleLabels.push(angleLabel);\n\t\t\tthis.add(angleLabel);\n\t\t}\n\n\t\t{ // coordinate labels\n\t\t\tlet coordinateLabel = new TextSprite();\n\t\t\tcoordinateLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tcoordinateLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\n\t\t\tcoordinateLabel.fontsize = 16;\n\t\t\tcoordinateLabel.material.depthTest = false;\n\t\t\tcoordinateLabel.material.opacity = 1;\n\t\t\tcoordinateLabel.visible = false;\n\t\t\tthis.coordinateLabels.push(coordinateLabel);\n\t\t\tthis.add(coordinateLabel);\n\t\t}\n\n\t\t{ // Event Listeners\n\t\t\tlet drag = (e) => {\n\t\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\t\te.drag.end, \n\t\t\t\t\te.viewer.scene.getActiveCamera(), \n\t\t\t\t\te.viewer, \n\t\t\t\t\te.viewer.scene.pointclouds,\n\t\t\t\t\t{pickClipped: true});\n\n\t\t\t\tif (I) {\n\t\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\n\t\t\t\t\tif (i !== -1) {\n\t\t\t\t\t\tlet point = this.points[i];\n\t\t\t\t\t\tfor (let key of Object.keys(I.point).filter(e => e !== 'position')) {\n\t\t\t\t\t\t\tpoint[key] = I.point[key];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.setPosition(i, I.location);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet drop = e => {\n\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\t\t'type': 'marker_dropped',\n\t\t\t\t\t\t'measurement': this,\n\t\t\t\t\t\t'index': i\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet mouseover = (e) => e.object.material.emissive.setHex(0x888888);\n\t\t\tlet mouseleave = (e) => e.object.material.emissive.setHex(0x000000);\n\n\t\t\tsphere.addEventListener('drag', drag);\n\t\t\tsphere.addEventListener('drop', drop);\n\t\t\tsphere.addEventListener('mouseover', mouseover);\n\t\t\tsphere.addEventListener('mouseleave', mouseleave);\n\t\t}\n\n\t\tlet event = {\n\t\t\ttype: 'marker_added',\n\t\t\tmeasurement: this,\n\t\t\tsphere: sphere\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.setMarker(this.points.length - 1, point);\n\t};\n\n\tremoveMarker (index) {\n\t\tthis.points.splice(index, 1);\n\n\t\tthis.remove(this.spheres[index]);\n\n\t\tlet edgeIndex = (index === 0) ? 0 : (index - 1);\n\t\tthis.remove(this.edges[edgeIndex]);\n\t\tthis.edges.splice(edgeIndex, 1);\n\n\t\tthis.remove(this.edgeLabels[edgeIndex]);\n\t\tthis.edgeLabels.splice(edgeIndex, 1);\n\t\tthis.coordinateLabels.splice(index, 1);\n\n\t\tthis.remove(this.angleLabels[index]);\n\t\tthis.angleLabels.splice(index, 1);\n\n\t\tthis.spheres.splice(index, 1);\n\n\t\tthis.update();\n\n\t\tthis.dispatchEvent({type: 'marker_removed', measurement: this});\n\t};\n\n\tsetMarker (index, point) {\n\t\tthis.points[index] = point;\n\n\t\tlet event = {\n\t\t\ttype: 'marker_moved',\n\t\t\tmeasure:\tthis,\n\t\t\tindex:\tindex,\n\t\t\tposition: point.position.clone()\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.update();\n\t}\n\n\tsetPosition (index, position) {\n\t\tlet point = this.points[index];\n\t\tpoint.position.copy(position);\n\n\t\tlet event = {\n\t\t\ttype: 'marker_moved',\n\t\t\tmeasure:\tthis,\n\t\t\tindex:\tindex,\n\t\t\tposition: position.clone()\n\t\t};\n\t\tthis.dispatchEvent(event);\n\n\t\tthis.update();\n\t};\n\n\tgetArea () {\n\t\tlet area = 0;\n\t\tlet j = this.points.length - 1;\n\n\t\tfor (let i = 0; i < this.points.length; i++) {\n\t\t\tlet p1 = this.points[i].position;\n\t\t\tlet p2 = this.points[j].position;\n\t\t\tarea += (p2.x + p1.x) * (p1.y - p2.y);\n\t\t\tj = i;\n\t\t}\n\n\t\treturn Math.abs(area / 2);\n\t};\n\n\tgetTotalDistance () {\n\t\tif (this.points.length === 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tlet distance = 0;\n\n\t\tfor (let i = 1; i < this.points.length; i++) {\n\t\t\tlet prev = this.points[i - 1].position;\n\t\t\tlet curr = this.points[i].position;\n\t\t\tlet d = prev.distanceTo(curr);\n\n\t\t\tdistance += d;\n\t\t}\n\n\t\tif (this.closed && this.points.length > 1) {\n\t\t\tlet first = this.points[0].position;\n\t\t\tlet last = this.points[this.points.length - 1].position;\n\t\t\tlet d = last.distanceTo(first);\n\n\t\t\tdistance += d;\n\t\t}\n\n\t\treturn distance;\n\t}\n\n\tgetAngleBetweenLines (cornerPoint, point1, point2) {\n\t\tlet v1 = new THREE.Vector3().subVectors(point1.position, cornerPoint.position);\n\t\tlet v2 = new THREE.Vector3().subVectors(point2.position, cornerPoint.position);\n\n\t\t// avoid the error printed by threejs if denominator is 0\n\t\tconst denominator = Math.sqrt( v1.lengthSq() * v2.lengthSq() );\n\t\tif(denominator === 0){\n\t\t\treturn 0;\n\t\t}else{\n\t\t\treturn v1.angleTo(v2);\n\t\t}\n\t};\n\n\tgetAngle (index) {\n\t\tif (this.points.length < 3 || index >= this.points.length) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tlet previous = (index === 0) ? this.points[this.points.length - 1] : this.points[index - 1];\n\t\tlet point = this.points[index];\n\t\tlet next = this.points[(index + 1) % (this.points.length)];\n\n\t\treturn this.getAngleBetweenLines(point, previous, next);\n\t}\n\n\t// updateAzimuth(){\n\t// \t// if(this.points.length !== 2){\n\t// \t// \treturn;\n\t// \t// }\n\n\t// \t// const azimuth = this.azimuth;\n\n\t// \t// const [p0, p1] = this.points;\n\n\t// \t// const r = p0.position.distanceTo(p1.position);\n\t\t\n\t// }\n\n\tupdate () {\n\t\tif (this.points.length === 0) {\n\t\t\treturn;\n\t\t} else if (this.points.length === 1) {\n\t\t\tlet point = this.points[0];\n\t\t\tlet position = point.position;\n\t\t\tthis.spheres[0].position.copy(position);\n\n\t\t\t{ // coordinate labels\n\t\t\t\tlet coordinateLabel = this.coordinateLabels[0];\n\t\t\t\t\n\t\t\t\tlet msg = position.toArray().map(p => Utils.addCommas(p.toFixed(2))).join(\" / \");\n\t\t\t\tcoordinateLabel.setText(msg);\n\n\t\t\t\tcoordinateLabel.visible = this.showCoordinates;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet lastIndex = this.points.length - 1;\n\n\t\tlet centroid = new THREE.Vector3();\n\t\tfor (let i = 0; i <= lastIndex; i++) {\n\t\t\tlet point = this.points[i];\n\t\t\tcentroid.add(point.position);\n\t\t}\n\t\tcentroid.divideScalar(this.points.length);\n\n\t\tfor (let i = 0; i <= lastIndex; i++) {\n\t\t\tlet index = i;\n\t\t\tlet nextIndex = (i + 1 > lastIndex) ? 0 : i + 1;\n\t\t\tlet previousIndex = (i === 0) ? lastIndex : i - 1;\n\n\t\t\tlet point = this.points[index];\n\t\t\tlet nextPoint = this.points[nextIndex];\n\t\t\tlet previousPoint = this.points[previousIndex];\n\n\t\t\tlet sphere = this.spheres[index];\n\n\t\t\t// spheres\n\t\t\tsphere.position.copy(point.position);\n\t\t\tsphere.material.color = this.color;\n\n\t\t\t{ // edges\n\t\t\t\tlet edge = this.edges[index];\n\n\t\t\t\tedge.material.color = this.color;\n\n\t\t\t\tedge.position.copy(point.position);\n\n\t\t\t\tedge.geometry.setPositions([\n\t\t\t\t\t0, 0, 0,\n\t\t\t\t\t...nextPoint.position.clone().sub(point.position).toArray(),\n\t\t\t\t]);\n\n\t\t\t\tedge.geometry.verticesNeedUpdate = true;\n\t\t\t\tedge.geometry.computeBoundingSphere();\n\t\t\t\tedge.computeLineDistances();\n\t\t\t\tedge.visible = index < lastIndex || this.closed;\n\t\t\t\t\n\t\t\t\tif(!this.showEdges){\n\t\t\t\t\tedge.visible = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t{ // edge labels\n\t\t\t\tlet edgeLabel = this.edgeLabels[i];\n\n\t\t\t\tlet center = new THREE.Vector3().add(point.position);\n\t\t\t\tcenter.add(nextPoint.position);\n\t\t\t\tcenter = center.multiplyScalar(0.5);\n\t\t\t\tlet distance = point.position.distanceTo(nextPoint.position);\n\n\t\t\t\tedgeLabel.position.copy(center);\n\n\t\t\t\tlet suffix = \"\";\n\t\t\t\tif(this.lengthUnit != null && this.lengthUnitDisplay != null){\n\t\t\t\t\tdistance = distance / this.lengthUnit.unitspermeter * this.lengthUnitDisplay.unitspermeter; //convert to meters then to the display unit\n\t\t\t\t\tsuffix = this.lengthUnitDisplay.code;\n\t\t\t\t}\n\n\t\t\t\tlet txtLength = Utils.addCommas(distance.toFixed(2));\n\t\t\t\tedgeLabel.setText(`${txtLength} ${suffix}`);\n\t\t\t\tedgeLabel.visible = this.showDistances && (index < lastIndex || this.closed) && this.points.length >= 2 && distance > 0;\n\t\t\t}\n\n\t\t\t{ // angle labels\n\t\t\t\tlet angleLabel = this.angleLabels[i];\n\t\t\t\tlet angle = this.getAngleBetweenLines(point, previousPoint, nextPoint);\n\n\t\t\t\tlet dir = nextPoint.position.clone().sub(previousPoint.position);\n\t\t\t\tdir.multiplyScalar(0.5);\n\t\t\t\tdir = previousPoint.position.clone().add(dir).sub(point.position).normalize();\n\n\t\t\t\tlet dist = Math.min(point.position.distanceTo(previousPoint.position), point.position.distanceTo(nextPoint.position));\n\t\t\t\tdist = dist / 9;\n\n\t\t\t\tlet labelPos = point.position.clone().add(dir.multiplyScalar(dist));\n\t\t\t\tangleLabel.position.copy(labelPos);\n\n\t\t\t\tlet msg = Utils.addCommas((angle * (180.0 / Math.PI)).toFixed(1)) + '\\u00B0';\n\t\t\t\tangleLabel.setText(msg);\n\n\t\t\t\tangleLabel.visible = this.showAngles && (index < lastIndex || this.closed) && this.points.length >= 3 && angle > 0;\n\t\t\t}\n\t\t}\n\n\t\t{ // update height stuff\n\t\t\tlet heightEdge = this.heightEdge;\n\t\t\theightEdge.visible = this.showHeight;\n\t\t\tthis.heightLabel.visible = this.showHeight;\n\n\t\t\tif (this.showHeight) {\n\t\t\t\tlet sorted = this.points.slice().sort((a, b) => a.position.z - b.position.z);\n\t\t\t\tlet lowPoint = sorted[0].position.clone();\n\t\t\t\tlet highPoint = sorted[sorted.length - 1].position.clone();\n\t\t\t\tlet min = lowPoint.z;\n\t\t\t\tlet max = highPoint.z;\n\t\t\t\tlet height = max - min;\n\n\t\t\t\tlet start = new THREE.Vector3(highPoint.x, highPoint.y, min);\n\t\t\t\tlet end = new THREE.Vector3(highPoint.x, highPoint.y, max);\n\n\t\t\t\theightEdge.position.copy(lowPoint);\n\n\t\t\t\theightEdge.geometry.setPositions([\n\t\t\t\t\t0, 0, 0,\n\t\t\t\t\t...start.clone().sub(lowPoint).toArray(),\n\t\t\t\t\t...start.clone().sub(lowPoint).toArray(),\n\t\t\t\t\t...end.clone().sub(lowPoint).toArray(),\n\t\t\t\t]);\n\n\t\t\t\theightEdge.geometry.verticesNeedUpdate = true;\n\t\t\t\t// heightEdge.geometry.computeLineDistances();\n\t\t\t\t// heightEdge.geometry.lineDistancesNeedUpdate = true;\n\t\t\t\theightEdge.geometry.computeBoundingSphere();\n\t\t\t\theightEdge.computeLineDistances();\n\n\t\t\t\t// heightEdge.material.dashSize = height / 40;\n\t\t\t\t// heightEdge.material.gapSize = height / 40;\n\n\t\t\t\tlet heightLabelPosition = start.clone().add(end).multiplyScalar(0.5);\n\t\t\t\tthis.heightLabel.position.copy(heightLabelPosition);\n\n\t\t\t\tlet suffix = \"\";\n\t\t\t\tif(this.lengthUnit != null && this.lengthUnitDisplay != null){\n\t\t\t\t\theight = height / this.lengthUnit.unitspermeter * this.lengthUnitDisplay.unitspermeter; //convert to meters then to the display unit\n\t\t\t\t\tsuffix = this.lengthUnitDisplay.code;\n\t\t\t\t}\n\n\t\t\t\tlet txtHeight = Utils.addCommas(height.toFixed(2));\n\t\t\t\tlet msg = `${txtHeight} ${suffix}`;\n\t\t\t\tthis.heightLabel.setText(msg);\n\t\t\t}\n\t\t}\n\n\t\t{ // update circle stuff\n\t\t\tconst circleRadiusLabel = this.circleRadiusLabel;\n\t\t\tconst circleRadiusLine = this.circleRadiusLine;\n\t\t\tconst circleLine = this.circleLine;\n\t\t\tconst circleCenter = this.circleCenter;\n\n\t\t\tconst circleOkay = this.points.length === 3;\n\n\t\t\tcircleRadiusLabel.visible = this.showCircle && circleOkay;\n\t\t\tcircleRadiusLine.visible = this.showCircle && circleOkay;\n\t\t\tcircleLine.visible = this.showCircle && circleOkay;\n\t\t\tcircleCenter.visible = this.showCircle && circleOkay;\n\n\t\t\tif(this.showCircle && circleOkay){\n\n\t\t\t\tconst A = this.points[0].position;\n\t\t\t\tconst B = this.points[1].position;\n\t\t\t\tconst C = this.points[2].position;\n\t\t\t\tconst AB = B.clone().sub(A);\n\t\t\t\tconst AC = C.clone().sub(A);\n\t\t\t\tconst N = AC.clone().cross(AB).normalize();\n\n\t\t\t\tconst center = Potree.Utils.computeCircleCenter(A, B, C);\n\t\t\t\tconst radius = center.distanceTo(A);\n\n\n\t\t\t\tconst scale = radius / 20;\n\t\t\t\tcircleCenter.position.copy(center);\n\t\t\t\tcircleCenter.scale.set(scale, scale, scale);\n\n\t\t\t\t//circleRadiusLine.geometry.vertices[0].set(0, 0, 0);\n\t\t\t\t//circleRadiusLine.geometry.vertices[1].copy(B.clone().sub(center));\n\n\t\t\t\tcircleRadiusLine.geometry.setPositions( [\n\t\t\t\t\t0, 0, 0,\n\t\t\t\t\t...B.clone().sub(center).toArray()\n\t\t\t\t] );\n\n\t\t\t\tcircleRadiusLine.geometry.verticesNeedUpdate = true;\n\t\t\t\tcircleRadiusLine.geometry.computeBoundingSphere();\n\t\t\t\tcircleRadiusLine.position.copy(center);\n\t\t\t\tcircleRadiusLine.computeLineDistances();\n\n\t\t\t\tconst target = center.clone().add(N);\n\t\t\t\tcircleLine.position.copy(center);\n\t\t\t\tcircleLine.scale.set(radius, radius, radius);\n\t\t\t\tcircleLine.lookAt(target);\n\t\t\t\t\n\t\t\t\tcircleRadiusLabel.visible = true;\n\t\t\t\tcircleRadiusLabel.position.copy(center.clone().add(B).multiplyScalar(0.5));\n\t\t\t\tcircleRadiusLabel.setText(`${radius.toFixed(3)}`);\n\n\t\t\t}\n\t\t}\n\n\t\t{ // update area label\n\t\t\tthis.areaLabel.position.copy(centroid);\n\t\t\tthis.areaLabel.visible = this.showArea && this.points.length >= 3;\n\t\t\tlet area = this.getArea();\n\n\t\t\tlet suffix = \"\";\n\t\t\tif(this.lengthUnit != null && this.lengthUnitDisplay != null){\n\t\t\t\tarea = area / Math.pow(this.lengthUnit.unitspermeter, 2) * Math.pow(this.lengthUnitDisplay.unitspermeter, 2); //convert to square meters then to the square display unit\n\t\t\t\tsuffix = this.lengthUnitDisplay.code;\n\t\t\t}\n\n\t\t\tlet txtArea = Utils.addCommas(area.toFixed(1));\n\t\t\tlet msg = `${txtArea} ${suffix}\\u00B2`;\n\t\t\tthis.areaLabel.setText(msg);\n\t\t}\n\n\t\t// this.updateAzimuth();\n\t};\n\n\traycast (raycaster, intersects) {\n\t\tfor (let i = 0; i < this.points.length; i++) {\n\t\t\tlet sphere = this.spheres[i];\n\n\t\t\tsphere.raycast(raycaster, intersects);\n\t\t}\n\n\t\t// recalculate distances because they are not necessarely correct\n\t\t// for scaled objects.\n\t\t// see https://github.com/mrdoob/three.js/issues/5827\n\t\t// TODO: remove this once the bug has been fixed\n\t\tfor (let i = 0; i < intersects.length; i++) {\n\t\t\tlet I = intersects[i];\n\t\t\tI.distance = raycaster.ray.origin.distanceTo(I.point);\n\t\t}\n\t\tintersects.sort(function (a, b) { return a.distance - b.distance; });\n\t};\n\n\tget showCoordinates () {\n\t\treturn this._showCoordinates;\n\t}\n\n\tset showCoordinates (value) {\n\t\tthis._showCoordinates = value;\n\t\tthis.update();\n\t}\n\n\tget showAngles () {\n\t\treturn this._showAngles;\n\t}\n\n\tset showAngles (value) {\n\t\tthis._showAngles = value;\n\t\tthis.update();\n\t}\n\n\tget showCircle () {\n\t\treturn this._showCircle;\n\t}\n\n\tset showCircle (value) {\n\t\tthis._showCircle = value;\n\t\tthis.update();\n\t}\n\n\tget showAzimuth(){\n\t\treturn this._showAzimuth;\n\t}\n\n\tset showAzimuth(value){\n\t\tthis._showAzimuth = value;\n\t\tthis.update();\n\t}\n\n\tget showEdges () {\n\t\treturn this._showEdges;\n\t}\n\n\tset showEdges (value) {\n\t\tthis._showEdges = value;\n\t\tthis.update();\n\t}\n\n\tget showHeight () {\n\t\treturn this._showHeight;\n\t}\n\n\tset showHeight (value) {\n\t\tthis._showHeight = value;\n\t\tthis.update();\n\t}\n\n\tget showArea () {\n\t\treturn this._showArea;\n\t}\n\n\tset showArea (value) {\n\t\tthis._showArea = value;\n\t\tthis.update();\n\t}\n\n\tget closed () {\n\t\treturn this._closed;\n\t}\n\n\tset closed (value) {\n\t\tthis._closed = value;\n\t\tthis.update();\n\t}\n\n\tget showDistances () {\n\t\treturn this._showDistances;\n\t}\n\n\tset showDistances (value) {\n\t\tthis._showDistances = value;\n\t\tthis.update();\n\t}\n\n}\n","\nexport class PolygonClipVolume extends THREE.Object3D{\n\t\n\tconstructor(camera){\n\t\tsuper();\n\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\t\tthis.name = \"polygon_clip_volume_\" + this.constructor.counter;\n\n\t\tthis.camera = camera.clone();\n\t\tthis.camera.rotation.set(...camera.rotation.toArray()); // [r85] workaround because camera.clone() doesn't work on rotation\n\t\tthis.camera.rotation.order = camera.rotation.order;\n\t\tthis.camera.updateMatrixWorld();\n\t\tthis.camera.updateProjectionMatrix();\n\t\tthis.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld);\n\n\t\tthis.viewMatrix = this.camera.matrixWorldInverse.clone();\n\t\tthis.projMatrix = this.camera.projectionMatrix.clone();\n\n\t\t// projected markers\n\t\tthis.markers = [];\n\t\tthis.initialized = false;\n\t}\n\n\taddMarker() {\n\n\t\tlet marker = new THREE.Mesh();\n\n\t\tlet cancel;\n\n\t\tlet drag = e => {\n\t\t\tlet size = e.viewer.renderer.getSize(new THREE.Vector2());\n\t\t\tlet projectedPos = new THREE.Vector3(\n\t\t\t\t2.0 * (e.drag.end.x / size.width) - 1.0,\n\t\t\t\t-2.0 * (e.drag.end.y / size.height) + 1.0,\n\t\t\t\t0\n\t\t\t);\n\n\t\t\tmarker.position.copy(projectedPos);\n\t\t};\n\t\t\n\t\tlet drop = e => {\t\n\t\t\tcancel();\n\t\t};\n\t\t\n\t\tcancel = e => {\n\t\t\tmarker.removeEventListener(\"drag\", drag);\n\t\t\tmarker.removeEventListener(\"drop\", drop);\n\t\t};\n\t\t\n\t\tmarker.addEventListener(\"drag\", drag);\n\t\tmarker.addEventListener(\"drop\", drop);\n\n\n\t\tthis.markers.push(marker);\n\t}\n\n\tremoveLastMarker() {\n\t\tif(this.markers.length > 0) {\n\t\t\tthis.markers.splice(this.markers.length - 1, 1);\n\t\t}\n\t}\n\n};","\nimport {XHRFactory} from \"./XHRFactory.js\";\nimport {Volume} from \"./utils/Volume.js\";\nimport {Profile} from \"./utils/Profile.js\";\nimport {Measure} from \"./utils/Measure.js\";\nimport {PolygonClipVolume} from \"./utils/PolygonClipVolume.js\";\n\nexport class Utils {\n\tstatic async loadShapefileFeatures (file, callback) {\n\t\tlet features = [];\n\n\t\tlet handleFinish = () => {\n\t\t\tcallback(features);\n\t\t};\n\n\t\tlet source = await shapefile.open(file);\n\n\t\twhile(true){\n\t\t\tlet result = await source.read();\n\n\t\t\tif (result.done) {\n\t\t\t\thandleFinish();\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (result.value && result.value.type === 'Feature' && result.value.geometry !== undefined) {\n\t\t\t\tfeatures.push(result.value);\n\t\t\t}\n\t\t}\n\n\t}\n\n\tstatic toString (value) {\n\t\tif (value instanceof THREE.Vector3) {\n\t\t\treturn value.x.toFixed(2) + ', ' + value.y.toFixed(2) + ', ' + value.z.toFixed(2);\n\t\t} else {\n\t\t\treturn '' + value + '';\n\t\t}\n\t}\n\n\tstatic normalizeURL (url) {\n\t\tlet u = new URL(url);\n\n\t\treturn u.protocol + '//' + u.hostname + u.pathname.replace(/\\/+/g, '/');\n\t};\n\n\tstatic pathExists (url) {\n\t\tlet req = XHRFactory.createXMLHttpRequest();\n\t\treq.open('GET', url, false);\n\t\treq.send(null);\n\t\tif (req.status !== 200) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n\tstatic debugSphere(parent, position, scale, color){\n\t\tlet geometry = new THREE.SphereGeometry(1, 8, 8);\n\t\tlet material;\n\n\t\tif(color !== undefined){\n\t\t\tmaterial = new THREE.MeshBasicMaterial({color: color});\n\t\t}else{\n\t\t\tmaterial = new THREE.MeshNormalMaterial();\n\t\t}\n\t\tlet sphere = new THREE.Mesh(geometry, material);\n\t\tsphere.position.copy(position);\n\t\tsphere.scale.set(scale, scale, scale);\n\t\tparent.add(sphere);\n\t}\n\n\tstatic debugLine(parent, start, end, color){\n\n\t\tlet material = new THREE.LineBasicMaterial({ color: color }); \n\t\tlet geometry = new THREE.Geometry();\n\n\t\tconst p1 = new THREE.Vector3(0, 0, 0);\n\t\tconst p2 = end.clone().sub(start);\n\n\t\tgeometry.vertices.push(p1, p2);\n\n\t\tlet tl = new THREE.Line( geometry, material );\n\t\ttl.position.copy(start);\n\n\t\tparent.add(tl);\n\t}\n\n\tstatic debugCircle(parent, center, radius, normal, color){\n\t\tlet material = new THREE.LineBasicMaterial({ color: color });\n\n\t\tlet geometry = new THREE.Geometry();\n\n\t\tlet n = 32;\n\t\tfor(let i = 0; i <= n; i++){\n\t\t\tlet u0 = 2 * Math.PI * (i / n);\n\t\t\tlet u1 = 2 * Math.PI * (i + 1) / n;\n\n\t\t\tlet p0 = new THREE.Vector3(\n\t\t\t\tMath.cos(u0), \n\t\t\t\tMath.sin(u0), \n\t\t\t\t0\n\t\t\t);\n\n\t\t\tlet p1 = new THREE.Vector3(\n\t\t\t\tMath.cos(u1), \n\t\t\t\tMath.sin(u1), \n\t\t\t\t0\n\t\t\t);\n\n\t\t\tgeometry.vertices.push(p0, p1); \n\t\t}\n\n\t\tlet tl = new THREE.Line( geometry, material ); \n\t\ttl.position.copy(center);\n\t\ttl.scale.set(radius, radius, radius);\n\n\t\tparent.add(tl);\n\t}\n\n\tstatic debugBox(parent, box, transform = new THREE.Matrix4(), color = 0xFFFF00){\n\t\t\n\t\tlet vertices = [\n\t\t\t[box.min.x, box.min.y, box.min.z],\n\t\t\t[box.min.x, box.min.y, box.max.z],\n\t\t\t[box.min.x, box.max.y, box.min.z],\n\t\t\t[box.min.x, box.max.y, box.max.z],\n\n\t\t\t[box.max.x, box.min.y, box.min.z],\n\t\t\t[box.max.x, box.min.y, box.max.z],\n\t\t\t[box.max.x, box.max.y, box.min.z],\n\t\t\t[box.max.x, box.max.y, box.max.z],\n\t\t].map(v => new THREE.Vector3(...v));\n\n\t\tlet edges = [\n\t\t\t[0, 4], [4, 5], [5, 1], [1, 0],\n\t\t\t[2, 6], [6, 7], [7, 3], [3, 2],\n\t\t\t[0, 2], [4, 6], [5, 7], [1, 3]\n\t\t];\n\n\t\tlet center = box.getCenter(new THREE.Vector3());\n\n\t\tlet centroids = [\n\t\t\t{position: [box.min.x, center.y, center.z], color: 0xFF0000},\n\t\t\t{position: [box.max.x, center.y, center.z], color: 0x880000},\n\n\t\t\t{position: [center.x, box.min.y, center.z], color: 0x00FF00},\n\t\t\t{position: [center.x, box.max.y, center.z], color: 0x008800},\n\n\t\t\t{position: [center.x, center.y, box.min.z], color: 0x0000FF},\n\t\t\t{position: [center.x, center.y, box.max.z], color: 0x000088},\n\t\t];\n\n\t\tfor(let vertex of vertices){\n\t\t\tlet pos = vertex.clone().applyMatrix4(transform);\n\n\t\t\tUtils.debugSphere(parent, pos, 0.1, 0xFF0000);\n\t\t}\n\n\t\tfor(let edge of edges){\n\t\t\tlet start = vertices[edge[0]].clone().applyMatrix4(transform);\n\t\t\tlet end = vertices[edge[1]].clone().applyMatrix4(transform);\n\n\t\t\tUtils.debugLine(parent, start, end, color);\n\t\t}\n\n\t\tfor(let centroid of centroids){\n\t\t\tlet pos = new THREE.Vector3(...centroid.position).applyMatrix4(transform);\n\n\t\t\tUtils.debugSphere(parent, pos, 0.1, centroid.color);\n\t\t}\n\t}\n\n\tstatic debugPlane(parent, plane, size = 1, color = 0x0000FF){\n\n\t\tlet planehelper = new THREE.PlaneHelper(plane, size, color);\n\n\t\tparent.add(planehelper);\n\n\t}\n\n\t/**\n\t * adapted from mhluska at https://github.com/mrdoob/three.js/issues/1561\n\t */\n\tstatic computeTransformedBoundingBox (box, transform) {\n\t\tlet vertices = [\n\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.min.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.min.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.max.x, box.min.y, box.min.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.min.x, box.max.y, box.min.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.max.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.min.x, box.max.y, box.max.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.max.x, box.max.y, box.min.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.max.x, box.min.y, box.max.z).applyMatrix4(transform),\n\t\t\tnew THREE.Vector3(box.max.x, box.max.y, box.max.z).applyMatrix4(transform)\n\t\t];\n\n\t\tlet boundingBox = new THREE.Box3();\n\t\tboundingBox.setFromPoints(vertices);\n\n\t\treturn boundingBox;\n\t};\n\n\t/**\n\t * add separators to large numbers\n\t *\n\t * @param nStr\n\t * @returns\n\t */\n\tstatic addCommas (nStr) {\n\t\tnStr += '';\n\t\tlet x = nStr.split('.');\n\t\tlet x1 = x[0];\n\t\tlet x2 = x.length > 1 ? '.' + x[1] : '';\n\t\tlet rgx = /(\\d+)(\\d{3})/;\n\t\twhile (rgx.test(x1)) {\n\t\t\tx1 = x1.replace(rgx, '$1' + ',' + '$2');\n\t\t}\n\t\treturn x1 + x2;\n\t};\n\n\tstatic removeCommas (str) {\n\t\treturn str.replace(/,/g, '');\n\t}\n\n\t/**\n\t * create worker from a string\n\t *\n\t * code from http://stackoverflow.com/questions/10343913/how-to-create-a-web-worker-from-a-string\n\t */\n\tstatic createWorker (code) {\n\t\tlet blob = new Blob([code], {type: 'application/javascript'});\n\t\tlet worker = new Worker(URL.createObjectURL(blob));\n\n\t\treturn worker;\n\t};\n\n\tstatic moveTo(scene, endPosition, endTarget){\n\n\t\tlet view = scene.view;\n\t\tlet camera = scene.getActiveCamera();\n\t\tlet animationDuration = 500;\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\t{ // animate camera position\n\t\t\tlet tween = new TWEEN.Tween(view.position).to(endPosition, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\ttween.start();\n\t\t}\n\n\t\t{ // animate camera target\n\t\t\tlet camTargetDistance = camera.position.distanceTo(endTarget);\n\t\t\tlet target = new THREE.Vector3().addVectors(\n\t\t\t\tcamera.position,\n\t\t\t\tcamera.getWorldDirection(new THREE.Vector3()).clone().multiplyScalar(camTargetDistance)\n\t\t\t);\n\t\t\tlet tween = new TWEEN.Tween(target).to(endTarget, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tview.lookAt(target);\n\t\t\t});\n\t\t\ttween.onComplete(() => {\n\t\t\t\tview.lookAt(target);\n\t\t\t});\n\t\t\ttween.start();\n\t\t}\n\n\t}\n\n\tstatic loadSkybox (path) {\n\t\tlet camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 100000);\n\t\tcamera.up.set(0, 0, 1);\n\t\tlet scene = new THREE.Scene();\n\n\t\tlet format = '.jpg';\n\t\tlet urls = [\n\t\t\tpath + 'px' + format, path + 'nx' + format,\n\t\t\tpath + 'py' + format, path + 'ny' + format,\n\t\t\tpath + 'pz' + format, path + 'nz' + format\n\t\t];\n\n\t\tlet materialArray = [];\n\t\t{\n\t\t\tfor (let i = 0; i < 6; i++) {\n\t\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\t\tmap: null,\n\t\t\t\t\tside: THREE.BackSide,\n\t\t\t\t\tdepthTest: false,\n\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\tcolor: 0x424556\n\t\t\t\t});\n\n\t\t\t\tmaterialArray.push(material);\n\n\t\t\t\tlet loader = new THREE.TextureLoader();\n\t\t\t\tloader.load(urls[i],\n\t\t\t\t\tfunction loaded (texture) {\n\t\t\t\t\t\tmaterial.map = texture;\n\t\t\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t\t\tmaterial.color.setHex(0xffffff);\n\t\t\t\t\t}, function progress (xhr) {\n\t\t\t\t\t\t// console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );\n\t\t\t\t\t}, function error (xhr) {\n\t\t\t\t\t\tconsole.log('An error happened', xhr);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tlet skyGeometry = new THREE.CubeGeometry(5000, 5000, 5000);\n\t\tlet skybox = new THREE.Mesh(skyGeometry, materialArray);\n\n\t\tscene.add(skybox);\n\n\t\t// z up\n\t\tscene.rotation.x = Math.PI / 2;\n\n\t\treturn {'camera': camera, 'scene': scene};\n\t};\n\n\tstatic createGrid (width, length, spacing, color) {\n\t\tlet material = new THREE.LineBasicMaterial({\n\t\t\tcolor: color || 0x888888\n\t\t});\n\n\t\tlet geometry = new THREE.Geometry();\n\t\tfor (let i = 0; i <= length; i++) {\n\t\t\tgeometry.vertices.push(new THREE.Vector3(-(spacing * width) / 2, i * spacing - (spacing * length) / 2, 0));\n\t\t\tgeometry.vertices.push(new THREE.Vector3(+(spacing * width) / 2, i * spacing - (spacing * length) / 2, 0));\n\t\t}\n\n\t\tfor (let i = 0; i <= width; i++) {\n\t\t\tgeometry.vertices.push(new THREE.Vector3(i * spacing - (spacing * width) / 2, -(spacing * length) / 2, 0));\n\t\t\tgeometry.vertices.push(new THREE.Vector3(i * spacing - (spacing * width) / 2, +(spacing * length) / 2, 0));\n\t\t}\n\n\t\tlet line = new THREE.LineSegments(geometry, material, THREE.LinePieces);\n\t\tline.receiveShadow = true;\n\t\treturn line;\n\t}\n\n\tstatic createBackgroundTexture (width, height) {\n\t\tfunction gauss (x, y) {\n\t\t\treturn (1 / (2 * Math.PI)) * Math.exp(-(x * x + y * y) / 2);\n\t\t};\n\n\t\t// map.magFilter = THREE.NearestFilter;\n\t\tlet size = width * height;\n\t\tlet data = new Uint8Array(3 * size);\n\n\t\tlet chroma = [1, 1.5, 1.7];\n\t\tlet max = gauss(0, 0);\n\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tfor (let y = 0; y < height; y++) {\n\t\t\t\tlet u = 2 * (x / width) - 1;\n\t\t\t\tlet v = 2 * (y / height) - 1;\n\n\t\t\t\tlet i = x + width * y;\n\t\t\t\tlet d = gauss(2 * u, 2 * v) / max;\n\t\t\t\tlet r = (Math.random() + Math.random() + Math.random()) / 3;\n\t\t\t\tr = (d * 0.5 + 0.5) * r * 0.03;\n\t\t\t\tr = r * 0.4;\n\n\t\t\t\t// d = Math.pow(d, 0.6);\n\n\t\t\t\tdata[3 * i + 0] = 255 * (d / 15 + 0.05 + r) * chroma[0];\n\t\t\t\tdata[3 * i + 1] = 255 * (d / 15 + 0.05 + r) * chroma[1];\n\t\t\t\tdata[3 * i + 2] = 255 * (d / 15 + 0.05 + r) * chroma[2];\n\t\t\t}\n\t\t}\n\n\t\tlet texture = new THREE.DataTexture(data, width, height, THREE.RGBFormat);\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\t}\n\n\tstatic getMousePointCloudIntersection (mouse, camera, viewer, pointclouds, params = {}) {\n\t\t\n\t\tlet renderer = viewer.renderer;\n\t\t\n\t\tlet nmouse = {\n\t\t\tx: (mouse.x / renderer.domElement.clientWidth) * 2 - 1,\n\t\t\ty: -(mouse.y / renderer.domElement.clientHeight) * 2 + 1\n\t\t};\n\n\t\tlet pickParams = {};\n\n\t\tif(params.pickClipped){\n\t\t\tpickParams.pickClipped = params.pickClipped;\n\t\t}\n\n\t\tpickParams.x = mouse.x;\n\t\tpickParams.y = renderer.domElement.clientHeight - mouse.y;\n\n\t\tlet raycaster = new THREE.Raycaster();\n\t\traycaster.setFromCamera(nmouse, camera);\n\t\tlet ray = raycaster.ray;\n\n\t\tlet selectedPointcloud = null;\n\t\tlet closestDistance = Infinity;\n\t\tlet closestIntersection = null;\n\t\tlet closestPoint = null;\n\t\t\n\t\tfor(let pointcloud of pointclouds){\n\t\t\tlet point = pointcloud.pick(viewer, camera, ray, pickParams);\n\t\t\t\n\t\t\tif(!point){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet distance = camera.position.distanceTo(point.position);\n\n\t\t\tif (distance < closestDistance) {\n\t\t\t\tclosestDistance = distance;\n\t\t\t\tselectedPointcloud = pointcloud;\n\t\t\t\tclosestIntersection = point.position;\n\t\t\t\tclosestPoint = point;\n\t\t\t}\n\t\t}\n\n\t\tif (selectedPointcloud) {\n\t\t\treturn {\n\t\t\t\tlocation: closestIntersection,\n\t\t\t\tdistance: closestDistance,\n\t\t\t\tpointcloud: selectedPointcloud,\n\t\t\t\tpoint: closestPoint\n\t\t\t};\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tstatic pixelsArrayToImage (pixels, width, height) {\n\t\tlet canvas = document.createElement('canvas');\n\t\tcanvas.width = width;\n\t\tcanvas.height = height;\n\n\t\tlet context = canvas.getContext('2d');\n\n\t\tpixels = new pixels.constructor(pixels);\n\n\t\tfor (let i = 0; i < pixels.length; i++) {\n\t\t\tpixels[i * 4 + 3] = 255;\n\t\t}\n\n\t\tlet imageData = context.createImageData(width, height);\n\t\timageData.data.set(pixels);\n\t\tcontext.putImageData(imageData, 0, 0);\n\n\t\tlet img = new Image();\n\t\timg.src = canvas.toDataURL();\n\t\t// img.style.transform = \"scaleY(-1)\";\n\n\t\treturn img;\n\t}\n\n\tstatic pixelsArrayToDataUrl(pixels, width, height) {\n\t\tlet canvas = document.createElement('canvas');\n\t\tcanvas.width = width;\n\t\tcanvas.height = height;\n\n\t\tlet context = canvas.getContext('2d');\n\n\t\tpixels = new pixels.constructor(pixels);\n\n\t\tfor (let i = 0; i < pixels.length; i++) {\n\t\t\tpixels[i * 4 + 3] = 255;\n\t\t}\n\n\t\tlet imageData = context.createImageData(width, height);\n\t\timageData.data.set(pixels);\n\t\tcontext.putImageData(imageData, 0, 0);\n\n\t\tlet dataURL = canvas.toDataURL();\n\n\t\treturn dataURL;\n\t}\n\n\tstatic pixelsArrayToCanvas(pixels, width, height){\n\t\tlet canvas = document.createElement('canvas');\n\t\tcanvas.width = width;\n\t\tcanvas.height = height;\n\n\t\tlet context = canvas.getContext('2d');\n\n\t\tpixels = new pixels.constructor(pixels);\n\n\t\t//for (let i = 0; i < pixels.length; i++) {\n\t\t//\tpixels[i * 4 + 3] = 255;\n\t\t//}\n\n\t\t// flip vertically\n\t\tlet bytesPerLine = width * 4;\n\t\tfor(let i = 0; i < parseInt(height / 2); i++){\n\t\t\tlet j = height - i - 1;\n\n\t\t\tlet lineI = pixels.slice(i * bytesPerLine, i * bytesPerLine + bytesPerLine);\n\t\t\tlet lineJ = pixels.slice(j * bytesPerLine, j * bytesPerLine + bytesPerLine);\n\t\t\tpixels.set(lineJ, i * bytesPerLine);\n\t\t\tpixels.set(lineI, j * bytesPerLine);\n\t\t}\n\n\t\tlet imageData = context.createImageData(width, height);\n\t\timageData.data.set(pixels);\n\t\tcontext.putImageData(imageData, 0, 0);\n\n\t\treturn canvas;\n\t}\n\n\tstatic removeListeners(dispatcher, type){\n\t\tif (dispatcher._listeners === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (dispatcher._listeners[ type ]) {\n\t\t\tdelete dispatcher._listeners[ type ];\n\t\t}\n\t}\n\n\tstatic mouseToRay(mouse, camera, width, height){\n\n\t\tlet normalizedMouse = {\n\t\t\tx: (mouse.x / width) * 2 - 1,\n\t\t\ty: -(mouse.y / height) * 2 + 1\n\t\t};\n\n\t\tlet vector = new THREE.Vector3(normalizedMouse.x, normalizedMouse.y, 0.5);\n\t\tlet origin = camera.position.clone();\n\t\tvector.unproject(camera);\n\t\tlet direction = new THREE.Vector3().subVectors(vector, origin).normalize();\n\n\t\tlet ray = new THREE.Ray(origin, direction);\n\n\t\treturn ray;\n\t}\n\n\tstatic projectedRadius(radius, camera, distance, screenWidth, screenHeight){\n\t\tif(camera instanceof THREE.OrthographicCamera){\n\t\t\treturn Utils.projectedRadiusOrtho(radius, camera.projectionMatrix, screenWidth, screenHeight);\n\t\t}else if(camera instanceof THREE.PerspectiveCamera){\n\t\t\treturn Utils.projectedRadiusPerspective(radius, camera.fov * Math.PI / 180, distance, screenHeight);\n\t\t}else{\n\t\t\tthrow new Error(\"invalid parameters\");\n\t\t}\n\t}\n\n\tstatic projectedRadiusPerspective(radius, fov, distance, screenHeight) {\n\t\tlet projFactor = (1 / Math.tan(fov / 2)) / distance;\n\t\tprojFactor = projFactor * screenHeight / 2;\n\n\t\treturn radius * projFactor;\n\t}\n\n\tstatic projectedRadiusOrtho(radius, proj, screenWidth, screenHeight) {\n\t\tlet p1 = new THREE.Vector4(0);\n\t\tlet p2 = new THREE.Vector4(radius);\n\n\t\tp1.applyMatrix4(proj);\n\t\tp2.applyMatrix4(proj);\n\t\tp1 = new THREE.Vector3(p1.x, p1.y, p1.z);\n\t\tp2 = new THREE.Vector3(p2.x, p2.y, p2.z);\n\t\tp1.x = (p1.x + 1.0) * 0.5 * screenWidth;\n\t\tp1.y = (p1.y + 1.0) * 0.5 * screenHeight;\n\t\tp2.x = (p2.x + 1.0) * 0.5 * screenWidth;\n\t\tp2.y = (p2.y + 1.0) * 0.5 * screenHeight;\n\t\treturn p1.distanceTo(p2);\n\t}\n\t\t\n\t\t\n\tstatic topView(camera, node){\n\t\tcamera.position.set(0, 1, 0);\n\t\tcamera.rotation.set(-Math.PI / 2, 0, 0);\n\t\tcamera.zoomTo(node, 1);\n\t}\n\n\tstatic frontView (camera, node) {\n\t\tcamera.position.set(0, 0, 1);\n\t\tcamera.rotation.set(0, 0, 0);\n\t\tcamera.zoomTo(node, 1);\n\t}\n\n\tstatic leftView (camera, node) {\n\t\tcamera.position.set(-1, 0, 0);\n\t\tcamera.rotation.set(0, -Math.PI / 2, 0);\n\t\tcamera.zoomTo(node, 1);\n\t}\n\n\tstatic rightView (camera, node) {\n\t\tcamera.position.set(1, 0, 0);\n\t\tcamera.rotation.set(0, Math.PI / 2, 0);\n\t\tcamera.zoomTo(node, 1);\n\t}\n\n\t\n\tstatic findClosestGpsTime(target, viewer){\n\t\tconst start = performance.now();\n\n\t\tconst nodes = [];\n\t\tfor(const pc of viewer.scene.pointclouds){\n\t\t\tnodes.push(pc.root);\n\n\t\t\tfor(const child of pc.root.children){\n\t\t\t\tif(child){\n\t\t\t\t\tnodes.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet closestNode = null;\n\t\tlet closestIndex = Infinity;\n\t\tlet closestDistance = Infinity;\n\t\tlet closestValue = 0;\n\n\t\tfor(const node of nodes){\n\n\t\t\tconst isOkay = node.geometryNode != null \n\t\t\t\t&& node.geometryNode.geometry != null\n\t\t\t\t&& node.sceneNode != null;\n\n\t\t\tif(!isOkay){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet geometry = node.geometryNode.geometry;\n\t\t\tlet gpsTime = geometry.attributes[\"gps-time\"];\n\t\t\tlet range = gpsTime.potree.range;\n\n\t\t\tfor(let i = 0; i < gpsTime.array.length; i++){\n\t\t\t\tlet value = gpsTime.array[i];\n\t\t\t\tvalue = value * (range[1] - range[0]) + range[0];\n\t\t\t\tconst distance = Math.abs(target - value);\n\n\t\t\t\tif(distance < closestDistance){\n\t\t\t\t\tclosestIndex = i;\n\t\t\t\t\tclosestDistance = distance;\n\t\t\t\t\tclosestValue = value;\n\t\t\t\t\tclosestNode = node;\n\t\t\t\t\t//console.log(\"found a closer one: \" + value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst geometry = closestNode.geometryNode.geometry;\n\t\tconst position = new THREE.Vector3(\n\t\t\tgeometry.attributes.position.array[3 * closestIndex + 0],\n\t\t\tgeometry.attributes.position.array[3 * closestIndex + 1],\n\t\t\tgeometry.attributes.position.array[3 * closestIndex + 2],\n\t\t);\n\n\t\tposition.applyMatrix4(closestNode.sceneNode.matrixWorld);\n\n\t\tconst end = performance.now();\n\t\tconst duration = (end - start);\n\t\tconsole.log(`duration: ${duration.toFixed(3)}ms`);\n\n\t\treturn {\n\t\t\tnode: closestNode,\n\t\t\tindex: closestIndex,\n\t\t\tposition: position,\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * 0: no intersection\n\t * 1: intersection\n\t * 2: fully inside\n\t */\n\tstatic frustumSphereIntersection (frustum, sphere) {\n\t\tlet planes = frustum.planes;\n\t\tlet center = sphere.center;\n\t\tlet negRadius = -sphere.radius;\n\n\t\tlet minDistance = Number.MAX_VALUE;\n\n\t\tfor (let i = 0; i < 6; i++) {\n\t\t\tlet distance = planes[ i ].distanceToPoint(center);\n\n\t\t\tif (distance < negRadius) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tminDistance = Math.min(minDistance, distance);\n\t\t}\n\n\t\treturn (minDistance >= sphere.radius) ? 2 : 1;\n\t}\n\n\t// code taken from three.js\n\t// ImageUtils - generateDataTexture()\n\tstatic generateDataTexture (width, height, color) {\n\t\tlet size = width * height;\n\t\tlet data = new Uint8Array(4 * width * height);\n\n\t\tlet r = Math.floor(color.r * 255);\n\t\tlet g = Math.floor(color.g * 255);\n\t\tlet b = Math.floor(color.b * 255);\n\n\t\tfor (let i = 0; i < size; i++) {\n\t\t\tdata[ i * 3 ] = r;\n\t\t\tdata[ i * 3 + 1 ] = g;\n\t\t\tdata[ i * 3 + 2 ] = b;\n\t\t}\n\n\t\tlet texture = new THREE.DataTexture(data, width, height, THREE.RGBAFormat);\n\t\ttexture.needsUpdate = true;\n\t\ttexture.magFilter = THREE.NearestFilter;\n\n\t\treturn texture;\n\t}\n\n\t// from http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript\n\tstatic getParameterByName (name) {\n\t\tname = name.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n\t\tlet regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\n\t\tlet results = regex.exec(document.location.search);\n\t\treturn results === null ? null : decodeURIComponent(results[1].replace(/\\+/g, ' '));\n\t}\n\n\tstatic setParameter (name, value) {\n\t\t// value = encodeURIComponent(value);\n\n\t\tname = name.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n\t\tlet regex = new RegExp('([\\\\?&])(' + name + '=([^&#]*))');\n\t\tlet results = regex.exec(document.location.search);\n\n\t\tlet url = window.location.href;\n\t\tif (results === null) {\n\t\t\tif (window.location.search.length === 0) {\n\t\t\t\turl = url + '?';\n\t\t\t} else {\n\t\t\t\turl = url + '&';\n\t\t\t}\n\n\t\t\turl = url + name + '=' + value;\n\t\t} else {\n\t\t\tlet newValue = name + '=' + value;\n\t\t\turl = url.replace(results[2], newValue);\n\t\t}\n\t\twindow.history.replaceState({}, '', url);\n\t}\n\n\tstatic createChildAABB(aabb, index){\n\t\tlet min = aabb.min.clone();\n\t\tlet max = aabb.max.clone();\n\t\tlet size = new THREE.Vector3().subVectors(max, min);\n\n\t\tif ((index & 0b0001) > 0) {\n\t\t\tmin.z += size.z / 2;\n\t\t} else {\n\t\t\tmax.z -= size.z / 2;\n\t\t}\n\n\t\tif ((index & 0b0010) > 0) {\n\t\t\tmin.y += size.y / 2;\n\t\t} else {\n\t\t\tmax.y -= size.y / 2;\n\t\t}\n\n\t\tif ((index & 0b0100) > 0) {\n\t\t\tmin.x += size.x / 2;\n\t\t} else {\n\t\t\tmax.x -= size.x / 2;\n\t\t}\n\n\t\treturn new THREE.Box3(min, max);\n\t}\n\n\t// see https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript\n\tstatic clipboardCopy(text){\n\t\tlet textArea = document.createElement(\"textarea\");\n\n\t\ttextArea.style.position = 'fixed';\n\t\ttextArea.style.top = 0;\n\t\ttextArea.style.left = 0;\n\n\t\ttextArea.style.width = '2em';\n\t\ttextArea.style.height = '2em';\n\n\t\ttextArea.style.padding = 0;\n\n\t\ttextArea.style.border = 'none';\n\t\ttextArea.style.outline = 'none';\n\t\ttextArea.style.boxShadow = 'none';\n\n\t\ttextArea.style.background = 'transparent';\n\n\t\ttextArea.value = text;\n\n\t\tdocument.body.appendChild(textArea);\n\n\t\ttextArea.select();\n\n\t\t try {\n\t\t\tlet success = document.execCommand('copy');\n\t\t\tif(success){\n\t\t\t\tconsole.log(\"copied text to clipboard\");\n\t\t\t}else{\n\t\t\t\tconsole.log(\"copy to clipboard failed\");\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.log(\"error while trying to copy to clipboard\");\n\t\t}\n\n\t\tdocument.body.removeChild(textArea);\n\n\t}\n\n\tstatic getMeasurementIcon(measurement){\n\t\tif (measurement instanceof Measure) {\n\t\t\tif (measurement.showDistances && !measurement.showArea && !measurement.showAngles) {\n\t\t\t\treturn `${Potree.resourcePath}/icons/distance.svg`;\n\t\t\t} else if (measurement.showDistances && measurement.showArea && !measurement.showAngles) {\n\t\t\t\treturn `${Potree.resourcePath}/icons/area.svg`;\n\t\t\t} else if (measurement.maxMarkers === 1) {\n\t\t\t\treturn `${Potree.resourcePath}/icons/point.svg`;\n\t\t\t} else if (!measurement.showDistances && !measurement.showArea && measurement.showAngles) {\n\t\t\t\treturn `${Potree.resourcePath}/icons/angle.png`;\n\t\t\t} else if (measurement.showHeight) {\n\t\t\t\treturn `${Potree.resourcePath}/icons/height.svg`;\n\t\t\t} else {\n\t\t\t\treturn `${Potree.resourcePath}/icons/distance.svg`;\n\t\t\t}\n\t\t} else if (measurement instanceof Profile) {\n\t\t\treturn `${Potree.resourcePath}/icons/profile.svg`;\n\t\t} else if (measurement instanceof Volume) {\n\t\t\treturn `${Potree.resourcePath}/icons/volume.svg`;\n\t\t} else if (measurement instanceof PolygonClipVolume) {\n\t\t\treturn `${Potree.resourcePath}/icons/clip-polygon.svg`;\n\t\t}\n\t}\n\n\tstatic lineToLineIntersection(P0, P1, P2, P3){\n\n\t\tconst P = [P0, P1, P2, P3];\n\n\t\tconst d = (m, n, o, p) => {\n\t\t\tlet result = \n\t\t\t\t (P[m].x - P[n].x) * (P[o].x - P[p].x)\n\t\t\t\t+ (P[m].y - P[n].y) * (P[o].y - P[p].y)\n\t\t\t\t+ (P[m].z - P[n].z) * (P[o].z - P[p].z);\n\n\t\t\treturn result;\n\t\t};\n\n\n\t\tconst mua = (d(0, 2, 3, 2) * d(3, 2, 1, 0) - d(0, 2, 1, 0) * d(3, 2, 3, 2))\n\t\t /**-----------------------------------------------------------------**/ /\n\t\t (d(1, 0, 1, 0) * d(3, 2, 3, 2) - d(3, 2, 1, 0) * d(3, 2, 1, 0));\n\n\n\t\tconst mub = (d(0, 2, 3, 2) + mua * d(3, 2, 1, 0))\n\t\t /**--------------------------------------**/ /\n\t\t d(3, 2, 3, 2);\n\n\n\t\tconst P01 = P1.clone().sub(P0);\n\t\tconst P23 = P3.clone().sub(P2);\n\t\t\n\t\tconst Pa = P0.clone().add(P01.multiplyScalar(mua));\n\t\tconst Pb = P2.clone().add(P23.multiplyScalar(mub));\n\n\t\tconst center = Pa.clone().add(Pb).multiplyScalar(0.5);\n\n\t\treturn center;\n\t}\n\n\tstatic computeCircleCenter(A, B, C){\n\t\tconst AB = B.clone().sub(A);\n\t\tconst AC = C.clone().sub(A);\n\n\t\tconst N = AC.clone().cross(AB).normalize();\n\n\t\tconst ab_dir = AB.clone().cross(N).normalize();\n\t\tconst ac_dir = AC.clone().cross(N).normalize();\n\n\t\tconst ab_origin = A.clone().add(B).multiplyScalar(0.5);\n\t\tconst ac_origin = A.clone().add(C).multiplyScalar(0.5);\n\n\t\tconst P0 = ab_origin;\n\t\tconst P1 = ab_origin.clone().add(ab_dir);\n\n\t\tconst P2 = ac_origin;\n\t\tconst P3 = ac_origin.clone().add(ac_dir);\n\n\t\tconst center = Utils.lineToLineIntersection(P0, P1, P2, P3);\n\n\t\treturn center;\n\n\t\t// Potree.Utils.debugLine(viewer.scene.scene, P0, P1, 0x00ff00);\n\t\t// Potree.Utils.debugLine(viewer.scene.scene, P2, P3, 0x0000ff);\n\n\t\t// Potree.Utils.debugSphere(viewer.scene.scene, center, 0.03, 0xff00ff);\n\n\t\t// const radius = center.distanceTo(A);\n\t\t// Potree.Utils.debugCircle(viewer.scene.scene, center, radius, new THREE.Vector3(0, 0, 1), 0xff00ff);\n\t}\n\n\tstatic getNorthVec(p1, distance, projection){\n\t\tif(projection){\n\t\t\t// if there is a projection, transform coordinates to WGS84\n\t\t\t// and compute angle to north there\n\n\t\t\tproj4.defs(\"pointcloud\", projection);\n\t\t\tconst transform = proj4(\"pointcloud\", \"WGS84\");\n\n\t\t\tconst llP1 = transform.forward(p1.toArray());\n\t\t\tlet llP2 = transform.forward([p1.x, p1.y + distance]);\n\t\t\tconst polarRadius = Math.sqrt((llP2[0] - llP1[0]) ** 2 + (llP2[1] - llP1[1]) ** 2);\n\t\t\tllP2 = [llP1[0], llP1[1] + polarRadius];\n\n\t\t\tconst northVec = transform.inverse(llP2);\n\t\t\t\n\t\t\treturn new THREE.Vector3(...northVec, p1.z).sub(p1);\n\t\t}else{\n\t\t\t// if there is no projection, assume [0, 1, 0] as north direction\n\n\t\t\tconst vec = new THREE.Vector3(0, 1, 0).multiplyScalar(distance);\n\t\t\t\n\t\t\treturn vec;\n\t\t}\n\t}\n\n\tstatic computeAzimuth(p1, p2, projection){\n\n\t\tlet azimuth = 0;\n\n\t\tif(projection){\n\t\t\t// if there is a projection, transform coordinates to WGS84\n\t\t\t// and compute angle to north there\n\n\t\t\tlet transform;\n\n\t\t\tif (projection.includes('EPSG')) {\n\t\t\t\ttransform = proj4(projection, \"WGS84\");\n\t\t\t} else {\n\t\t\t\tproj4.defs(\"pointcloud\", projection);\n\t\t\t\ttransform = proj4(\"pointcloud\", \"WGS84\");\n\t\t\t}\n\n\t\t\tconst llP1 = transform.forward(p1.toArray());\n\t\t\tconst llP2 = transform.forward(p2.toArray());\n\t\t\tconst dir = [\n\t\t\t\tllP2[0] - llP1[0],\n\t\t\t\tllP2[1] - llP1[1],\n\t\t\t];\n\t\t\tazimuth = Math.atan2(dir[1], dir[0]) - Math.PI / 2;\n\t\t}else{\n\t\t\t// if there is no projection, assume [0, 1, 0] as north direction\n\n\t\t\tconst dir = [p2.x - p1.x, p2.y - p1.y];\n\t\t\tazimuth = Math.atan2(dir[1], dir[0]) - Math.PI / 2;\n\t\t}\n\n\t\t// make clockwise\n\t\tazimuth = -azimuth;\n\n\t\treturn azimuth;\n\t}\n\n\tstatic async loadScript(url){\n\n\t\treturn new Promise( resolve => {\n\n\t\t\tconst element = document.getElementById(url);\n\n\t\t\tif(element){\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tconst script = document.createElement(\"script\");\n\n\t\t\t\tscript.id = url;\n\n\t\t\t\tscript.onload = () => {\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\t\t\t\tscript.src = url;\n\n\t\t\t\tdocument.body.appendChild(script);\n\t\t\t}\n\t\t});\n\t}\n\n\tstatic createSvgGradient(scheme){\n\n\t\t// this is what we are creating:\n\t\t//\n\t\t//\n\t\t//\t\n\t\t//\t\t\n\t\t//\t\t\n\t\t//\t\t...\n\t\t//\t\t\n\t\t//\t\t\n\t\t//\t\n\t\t//\t\n\t\t//\t\n\t\t//\n\n\n\t\tconst gradientId = `${Math.random()}_${Date.now()}`;\n\t\t\n\t\tconst svgn = \"http://www.w3.org/2000/svg\";\n\t\tconst svg = document.createElementNS(svgn, \"svg\");\n\t\tsvg.setAttributeNS(null, \"width\", \"2em\");\n\t\tsvg.setAttributeNS(null, \"height\", \"3em\");\n\t\t\n\t\t{ // \n\t\t\tconst defs = document.createElementNS(svgn, \"defs\");\n\t\t\t\n\t\t\tconst linearGradient = document.createElementNS(svgn, \"linearGradient\");\n\t\t\tlinearGradient.setAttributeNS(null, \"id\", gradientId);\n\t\t\tlinearGradient.setAttributeNS(null, \"gradientTransform\", \"rotate(90)\");\n\n\t\t\tfor(let i = scheme.length - 1; i >= 0; i--){\n\t\t\t\tconst stopVal = scheme[i];\n\t\t\t\tconst percent = parseInt(100 - stopVal[0] * 100);\n\t\t\t\tconst [r, g, b] = stopVal[1].toArray().map(v => parseInt(v * 255));\n\n\t\t\t\tconst stop = document.createElementNS(svgn, \"stop\");\n\t\t\t\tstop.setAttributeNS(null, \"offset\", `${percent}%`);\n\t\t\t\tstop.setAttributeNS(null, \"stop-color\", `rgb(${r}, ${g}, ${b})`);\n\n\t\t\t\tlinearGradient.appendChild(stop);\n\t\t\t}\n\n\t\t\tdefs.appendChild(linearGradient);\n\t\t\tsvg.appendChild(defs);\n\t\t}\n\n\t\tconst rect = document.createElementNS(svgn, \"rect\");\n\t\trect.setAttributeNS(null, \"width\", `100%`);\n\t\trect.setAttributeNS(null, \"height\", `100%`);\n\t\trect.setAttributeNS(null, \"fill\", `url(\"#${gradientId}\")`);\n\t\trect.setAttributeNS(null, \"stroke\", `black`);\n\t\trect.setAttributeNS(null, \"stroke-width\", `0.1em`);\n\n\t\tsvg.appendChild(rect);\n\t\t\n\t\treturn svg;\n\t}\n\n\tstatic async waitAny(promises){\n\t\t\n\t\treturn new Promise( (resolve) => {\n\n\t\t\tpromises.map( promise => {\n\t\t\t\tpromise.then( () => {\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t});\n\n\t\t});\n\n\t}\n\n}\n\nUtils.screenPass = new function () {\n\tthis.screenScene = new THREE.Scene();\n\tthis.screenQuad = new THREE.Mesh(new THREE.PlaneBufferGeometry(2, 2, 0));\n\tthis.screenQuad.material.depthTest = true;\n\tthis.screenQuad.material.depthWrite = true;\n\tthis.screenQuad.material.transparent = true;\n\tthis.screenScene.add(this.screenQuad);\n\tthis.camera = new THREE.Camera();\n\n\tthis.render = function (renderer, material, target) {\n\t\tthis.screenQuad.material = material;\n\n\t\tif (typeof target === 'undefined') {\n\t\t\trenderer.render(this.screenScene, this.camera);\n\t\t} else {\n\t\t\trenderer.render(this.screenScene, this.camera, target);\n\t\t}\n\t};\n}();\n","\n\nimport {Action} from \"./Actions.js\";\nimport {Utils} from \"./utils.js\";\nimport {EventDispatcher} from \"./EventDispatcher.js\";\n\nexport class Annotation extends EventDispatcher {\n\tconstructor (args = {}) {\n\t\tsuper();\n\n\t\tthis.scene = null;\n\t\tthis._title = args.title || 'No Title';\n\t\tthis._description = args.description || '';\n\t\tthis.offset = new THREE.Vector3();\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tif (!args.position) {\n\t\t\tthis.position = null;\n\t\t} else if (args.position instanceof THREE.Vector3) {\n\t\t\tthis.position = args.position;\n\t\t} else {\n\t\t\tthis.position = new THREE.Vector3(...args.position);\n\t\t}\n\n\t\tthis.cameraPosition = (args.cameraPosition instanceof Array)\n\t\t\t? new THREE.Vector3().fromArray(args.cameraPosition) : args.cameraPosition;\n\t\tthis.cameraTarget = (args.cameraTarget instanceof Array)\n\t\t\t? new THREE.Vector3().fromArray(args.cameraTarget) : args.cameraTarget;\n\t\tthis.radius = args.radius;\n\t\tthis.view = args.view || null;\n\t\tthis.keepOpen = false;\n\t\tthis.descriptionVisible = false;\n\t\tthis.showDescription = true;\n\t\tthis.actions = args.actions || [];\n\t\tthis.isHighlighted = false;\n\t\tthis._visible = true;\n\t\tthis.__visible = true;\n\t\tthis._display = true;\n\t\tthis._expand = false;\n\t\tthis.collapseThreshold = [args.collapseThreshold, 100].find(e => e !== undefined);\n\n\t\tthis.children = [];\n\t\tthis.parent = null;\n\t\tthis.boundingBox = new THREE.Box3();\n\n\t\tlet iconClose = exports.resourcePath + '/icons/close.svg';\n\n\t\tthis.domElement = $(`\n\t\t\t
        \n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${this._description}\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elTitlebar = this.domElement.find('.annotation-titlebar');\n\t\tthis.elTitle = this.elTitlebar.find('.annotation-label');\n\t\tthis.elTitle.append(this._title);\n\t\tthis.elDescription = this.domElement.find('.annotation-description');\n\t\tthis.elDescriptionClose = this.elDescription.find('.annotation-description-close');\n\t\t// this.elDescriptionContent = this.elDescription.find(\".annotation-description-content\");\n\n\t\tthis.clickTitle = () => {\n\t\t\tif(this.hasView()){\n\t\t\t\tthis.moveHere(this.scene.getActiveCamera());\n\t\t\t}\n\t\t\tthis.dispatchEvent({type: 'click', target: this});\n\t\t};\n\n\t\tthis.elTitle.click(this.clickTitle);\n\n\t\tthis.actions = this.actions.map(a => {\n\t\t\tif (a instanceof Action) {\n\t\t\t\treturn a;\n\t\t\t} else {\n\t\t\t\treturn new Action(a);\n\t\t\t}\n\t\t});\n\n\t\tfor (let action of this.actions) {\n\t\t\taction.pairWith(this);\n\t\t}\n\n\t\tlet actions = this.actions.filter(\n\t\t\ta => a.showIn === undefined || a.showIn.includes('scene'));\n\n\t\tfor (let action of actions) {\n\t\t\tlet elButton = $(``);\n\t\t\tthis.elTitlebar.append(elButton);\n\t\t\telButton.click(() => action.onclick({annotation: this}));\n\t\t}\n\n\t\tthis.elDescriptionClose.hover(\n\t\t\te => this.elDescriptionClose.css('opacity', '1'),\n\t\t\te => this.elDescriptionClose.css('opacity', '0.5')\n\t\t);\n\t\tthis.elDescriptionClose.click(e => this.setHighlighted(false));\n\t\t// this.elDescriptionContent.html(this._description);\n\n\t\tthis.domElement.mouseenter(e => this.setHighlighted(true));\n\t\tthis.domElement.mouseleave(e => this.setHighlighted(false));\n\n\t\tthis.domElement.on('touchstart', e => {\n\t\t\tthis.setHighlighted(!this.isHighlighted);\n\t\t});\n\n\t\tthis.display = false;\n\t\t//this.display = true;\n\n\t}\n\n\tinstallHandles(viewer){\n\t\tif(this.handles !== undefined){\n\t\t\treturn;\n\t\t}\n\n\t\tlet domElement = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
        \n\t\t`);\n\t\t\n\t\tlet svg = domElement.find(\"svg\")[0];\n\t\tlet elLine = domElement.find(\"line\")[0];\n\t\tlet elStart = domElement.find(\"circle\")[0];\n\t\tlet elEnd = domElement.find(\"circle\")[1];\n\n\t\tlet setCoordinates = (start, end) => {\n\t\t\telStart.setAttribute(\"cx\", `${start.x}`);\n\t\t\telStart.setAttribute(\"cy\", `${start.y}`);\n\n\t\t\telEnd.setAttribute(\"cx\", `${end.x}`);\n\t\t\telEnd.setAttribute(\"cy\", `${end.y}`);\n\n\t\t\telLine.setAttribute(\"x1\", start.x);\n\t\t\telLine.setAttribute(\"y1\", start.y);\n\t\t\telLine.setAttribute(\"x2\", end.x);\n\t\t\telLine.setAttribute(\"y2\", end.y);\n\n\t\t\tlet box = svg.getBBox();\n\t\t\tsvg.setAttribute(\"width\", `${box.width}`);\n\t\t\tsvg.setAttribute(\"height\", `${box.height}`);\n\t\t\tsvg.setAttribute(\"viewBox\", `${box.x} ${box.y} ${box.width} ${box.height}`);\n\n\t\t\tlet ya = start.y - end.y;\n\t\t\tlet xa = start.x - end.x;\n\n\t\t\tif(ya > 0){\n\t\t\t\tstart.y = start.y - ya;\n\t\t\t}\n\t\t\tif(xa > 0){\n\t\t\t\tstart.x = start.x - xa;\n\t\t\t}\n\n\t\t\tdomElement.css(\"left\", `${start.x}px`);\n\t\t\tdomElement.css(\"top\", `${start.y}px`);\n\n\t\t};\n\n\t\t$(viewer.renderArea).append(domElement);\n\n\n\t\tlet annotationStartPos = this.position.clone();\n\t\tlet annotationStartOffset = this.offset.clone();\n\n\t\t$(this.domElement).draggable({\n\t\t\tstart: (event, ui) => {\n\t\t\t\tannotationStartPos = this.position.clone();\n\t\t\t\tannotationStartOffset = this.offset.clone();\n\t\t\t\t$(this.domElement).find(\".annotation-titlebar\").css(\"pointer-events\", \"none\");\n\n\t\t\t\tconsole.log($(this.domElement).find(\".annotation-titlebar\"));\n\t\t\t},\n\t\t\tstop: () => {\n\t\t\t\t$(this.domElement).find(\".annotation-titlebar\").css(\"pointer-events\", \"\");\n\t\t\t},\n\t\t\tdrag: (event, ui ) => {\n\t\t\t\tlet renderAreaWidth = viewer.renderer.getSize(new THREE.Vector2()).width;\n\t\t\t\t//let renderAreaHeight = viewer.renderer.getSize().height;\n\n\t\t\t\tlet diff = {\n\t\t\t\t\tx: ui.originalPosition.left - ui.position.left, \n\t\t\t\t\ty: ui.originalPosition.top - ui.position.top\n\t\t\t\t};\n\n\t\t\t\tlet nDiff = {\n\t\t\t\t\tx: -(diff.x / renderAreaWidth) * 2,\n\t\t\t\t\ty: (diff.y / renderAreaWidth) * 2\n\t\t\t\t};\n\n\t\t\t\tlet camera = viewer.scene.getActiveCamera();\n\t\t\t\tlet oldScreenPos = new THREE.Vector3()\n\t\t\t\t\t.addVectors(annotationStartPos, annotationStartOffset)\n\t\t\t\t\t.project(camera);\n\n\t\t\t\tlet newScreenPos = oldScreenPos.clone();\n\t\t\t\tnewScreenPos.x += nDiff.x;\n\t\t\t\tnewScreenPos.y += nDiff.y;\n\n\t\t\t\tlet newPos = newScreenPos.clone();\n\t\t\t\tnewPos.unproject(camera);\n\n\t\t\t\tlet newOffset = new THREE.Vector3().subVectors(newPos, this.position);\n\t\t\t\tthis.offset.copy(newOffset);\n\t\t\t}\n\t\t});\n\n\t\tlet updateCallback = () => {\n\t\t\tlet position = this.position;\n\t\t\tlet scene = viewer.scene;\n\n\t\t\tconst renderAreaSize = viewer.renderer.getSize(new THREE.Vector2());\n\t\t\tlet renderAreaWidth = renderAreaSize.width;\n\t\t\tlet renderAreaHeight = renderAreaSize.height;\n\n\t\t\tlet start = this.position.clone();\n\t\t\tlet end = new THREE.Vector3().addVectors(this.position, this.offset);\n\n\t\t\tlet toScreen = (position) => {\n\t\t\t\tlet camera = scene.getActiveCamera();\n\t\t\t\tlet screenPos = new THREE.Vector3();\n\n\t\t\t\tlet worldView = new THREE.Matrix4().multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n\t\t\t\tlet ndc = new THREE.Vector4(position.x, position.y, position.z, 1.0).applyMatrix4(worldView);\n\t\t\t\t// limit w to small positive value, in case position is behind the camera\n\t\t\t\tndc.w = Math.max(ndc.w, 0.1);\n\t\t\t\tndc.divideScalar(ndc.w);\n\n\t\t\t\tscreenPos.copy(ndc);\n\t\t\t\tscreenPos.x = renderAreaWidth * (screenPos.x + 1) / 2;\n\t\t\t\tscreenPos.y = renderAreaHeight * (1 - (screenPos.y + 1) / 2);\n\n\t\t\t\treturn screenPos;\n\t\t\t};\n\t\t\t\n\t\t\tstart = toScreen(start);\n\t\t\tend = toScreen(end);\n\n\t\t\tsetCoordinates(start, end);\n\n\t\t};\n\n\t\tviewer.addEventListener(\"update\", updateCallback);\n\n\t\tthis.handles = {\n\t\t\tdomElement: domElement,\n\t\t\tsetCoordinates: setCoordinates,\n\t\t\tupdateCallback: updateCallback\n\t\t};\n\t}\n\n\tremoveHandles(viewer){\n\t\tif(this.handles === undefined){\n\t\t\treturn;\n\t\t}\n\n\t\t//$(viewer.renderArea).remove(this.handles.domElement);\n\t\tthis.handles.domElement.remove();\n\t\tviewer.removeEventListener(\"update\", this.handles.updateCallback);\n\n\t\tdelete this.handles;\n\t}\n\n\tget visible () {\n\t\treturn this._visible;\n\t}\n\n\tset visible (value) {\n\t\tif (this._visible === value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._visible = value;\n\n\t\t//this.traverse(node => {\n\t\t//\tnode.display = value;\n\t\t//});\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'visibility_changed',\n\t\t\tannotation: this\n\t\t});\n\t}\n\n\tget display () {\n\t\treturn this._display;\n\t}\n\n\tset display (display) {\n\t\tif (this._display === display) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._display = display;\n\n\t\tif (display) {\n\t\t\t// this.domElement.fadeIn(200);\n\t\t\tthis.domElement.show();\n\t\t} else {\n\t\t\t// this.domElement.fadeOut(200);\n\t\t\tthis.domElement.hide();\n\t\t}\n\t}\n\n\tget expand () {\n\t\treturn this._expand;\n\t}\n\n\tset expand (expand) {\n\t\tif (this._expand === expand) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (expand) {\n\t\t\tthis.display = false;\n\t\t} else {\n\t\t\tthis.display = true;\n\t\t\tthis.traverseDescendants(node => {\n\t\t\t\tnode.display = false;\n\t\t\t});\n\t\t}\n\n\t\tthis._expand = expand;\n\t}\n\n\tget title () {\n\t\treturn this._title;\n\t}\n\n\tset title (title) {\n\t\tif (this._title === title) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._title = title;\n\t\tthis.elTitle.empty();\n\t\tthis.elTitle.append(this._title);\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: \"annotation_changed\",\n\t\t\tannotation: this,\n\t\t});\n\t}\n\n\tget description () {\n\t\treturn this._description;\n\t}\n\n\tset description (description) {\n\t\tif (this._description === description) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._description = description;\n\n\t\tconst elDescriptionContent = this.elDescription.find(\".annotation-description-content\");\n\t\telDescriptionContent.empty();\n\t\telDescriptionContent.append(this._description);\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: \"annotation_changed\",\n\t\t\tannotation: this,\n\t\t});\n\t}\n\n\tadd (annotation) {\n\t\tif (!this.children.includes(annotation)) {\n\t\t\tthis.children.push(annotation);\n\t\t\tannotation.parent = this;\n\n\t\t\tlet descendants = [];\n\t\t\tannotation.traverse(a => { descendants.push(a); });\n\n\t\t\tfor (let descendant of descendants) {\n\t\t\t\tlet c = this;\n\t\t\t\twhile (c !== null) {\n\t\t\t\t\tc.dispatchEvent({\n\t\t\t\t\t\t'type': 'annotation_added',\n\t\t\t\t\t\t'annotation': descendant\n\t\t\t\t\t});\n\t\t\t\t\tc = c.parent;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tlevel () {\n\t\tif (this.parent === null) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\treturn this.parent.level() + 1;\n\t\t}\n\t}\n\n\thasChild(annotation) {\n\t\treturn this.children.includes(annotation);\n\t}\n\n\tremove (annotation) {\n\t\tif (this.hasChild(annotation)) {\n\t\t\tannotation.removeAllChildren();\n\t\t\tannotation.dispose();\n\t\t\tthis.children = this.children.filter(e => e !== annotation);\n\t\t\tannotation.parent = null;\n\t\t}\n\t}\n\n\tremoveAllChildren() {\n\t\tthis.children.forEach((child) => {\n\t\t\tif (child.children.length > 0) {\n\t\t\t\tchild.removeAllChildren();\n\t\t\t}\n\n\t\t\tthis.remove(child);\n\t\t});\n\t}\n\n\tupdateBounds () {\n\t\tlet box = new THREE.Box3();\n\n\t\tif (this.position) {\n\t\t\tbox.expandByPoint(this.position);\n\t\t}\n\n\t\tfor (let child of this.children) {\n\t\t\tchild.updateBounds();\n\n\t\t\tbox.union(child.boundingBox);\n\t\t}\n\n\t\tthis.boundingBox.copy(box);\n\t}\n\n\ttraverse (handler) {\n\t\tlet expand = handler(this);\n\n\t\tif (expand === undefined || expand === true) {\n\t\t\tfor (let child of this.children) {\n\t\t\t\tchild.traverse(handler);\n\t\t\t}\n\t\t}\n\t}\n\n\ttraverseDescendants (handler) {\n\t\tfor (let child of this.children) {\n\t\t\tchild.traverse(handler);\n\t\t}\n\t}\n\n\tflatten () {\n\t\tlet annotations = [];\n\n\t\tthis.traverse(annotation => {\n\t\t\tannotations.push(annotation);\n\t\t});\n\n\t\treturn annotations;\n\t}\n\n\tdescendants () {\n\t\tlet annotations = [];\n\n\t\tthis.traverse(annotation => {\n\t\t\tif (annotation !== this) {\n\t\t\t\tannotations.push(annotation);\n\t\t\t}\n\t\t});\n\n\t\treturn annotations;\n\t}\n\n\tsetHighlighted (highlighted) {\n\t\tif (highlighted) {\n\t\t\tthis.domElement.css('opacity', '0.8');\n\t\t\tthis.elTitlebar.css('box-shadow', '0 0 5px #fff');\n\t\t\tthis.domElement.css('z-index', '1000');\n\n\t\t\tif (this._description) {\n\t\t\t\tthis.descriptionVisible = true;\n\t\t\t\tthis.elDescription.fadeIn(200);\n\t\t\t\tthis.elDescription.css('position', 'relative');\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domElement.css('opacity', '0.5');\n\t\t\tthis.elTitlebar.css('box-shadow', '');\n\t\t\tthis.domElement.css('z-index', '100');\n\t\t\tthis.descriptionVisible = false;\n\t\t\tthis.elDescription.css('display', 'none');\n\t\t}\n\n\t\tthis.isHighlighted = highlighted;\n\t}\n\n\thasView () {\n\t\tlet hasPosTargetView = this.cameraTarget instanceof THREE.Vector3;\n\t\thasPosTargetView = hasPosTargetView && this.cameraPosition instanceof THREE.Vector3;\n\n\t\tlet hasRadiusView = this.radius !== undefined;\n\n\t\tlet hasView = hasPosTargetView || hasRadiusView;\n\n\t\treturn hasView;\n\t};\n\n\tmoveHere (camera) {\n\t\tif (!this.hasView()) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet view = this.scene.view;\n\t\tlet animationDuration = 500;\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\tlet endTarget;\n\t\tif (this.cameraTarget) {\n\t\t\tendTarget = this.cameraTarget;\n\t\t} else if (this.position) {\n\t\t\tendTarget = this.position;\n\t\t} else {\n\t\t\tendTarget = this.boundingBox.getCenter(new THREE.Vector3());\n\t\t}\n\n\t\tif (this.cameraPosition) {\n\t\t\tlet endPosition = this.cameraPosition;\n\n\t\t\tUtils.moveTo(this.scene, endPosition, endTarget);\n\t\t} else if (this.radius) {\n\t\t\tlet direction = view.direction;\n\t\t\tlet endPosition = endTarget.clone().add(direction.multiplyScalar(-this.radius));\n\t\t\tlet startRadius = view.radius;\n\t\t\tlet endRadius = this.radius;\n\n\t\t\t{ // animate camera position\n\t\t\t\tlet tween = new TWEEN.Tween(view.position).to(endPosition, animationDuration);\n\t\t\t\ttween.easing(easing);\n\t\t\t\ttween.start();\n\t\t\t}\n\n\t\t\t{ // animate radius\n\t\t\t\tlet t = {x: 0};\n\n\t\t\t\tlet tween = new TWEEN.Tween(t)\n\t\t\t\t\t.to({x: 1}, animationDuration)\n\t\t\t\t\t.onUpdate(function () {\n\t\t\t\t\t\tview.radius = this.x * endRadius + (1 - this.x) * startRadius;\n\t\t\t\t\t});\n\t\t\t\ttween.easing(easing);\n\t\t\t\ttween.start();\n\t\t\t}\n\t\t}\n\t};\n\n\tdispose () {\n\t\tif (this.domElement.parentElement) {\n\t\t\tthis.domElement.parentElement.removeChild(this.domElement);\n\t\t}\n\t};\n\n\ttoString () {\n\t\treturn 'Annotation: ' + this._title;\n\t}\n};\n","\nclass EnumItem{\n\tconstructor(object){\n\t\tfor(let key of Object.keys(object)){\n\t\t\tthis[key] = object[key];\n\t\t}\n\t}\n\n\tinspect(){\n\t\treturn `Enum(${this.name}: ${this.value})`;\n\t}\n};\n\nclass Enum{\n\n\tconstructor(object){\n\t\tthis.object = object;\n\n\t\tfor(let key of Object.keys(object)){\n\t\t\tlet value = object[key];\n\n\t\t\tif(typeof value === \"object\"){\n\t\t\t\tvalue.name = key;\n\t\t\t}else{\n\t\t\t\tvalue = {name: key, value: value};\n\t\t\t}\n\t\t\t\n\t\t\tthis[key] = new EnumItem(value);\n\t\t}\n\t}\n\n\tfromValue(value){\n\t\tfor(let key of Object.keys(this.object)){\n\t\t\tif(this[key].value === value){\n\t\t\t\treturn this[key];\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(`No enum for value: ${value}`);\n\t}\n\t\n};\n\nexport {Enum, EnumItem};","\nimport {Enum} from \"./Enum.js\";\n\n\nexport const CameraMode = {\n\tORTHOGRAPHIC: 0,\n\tPERSPECTIVE: 1,\n\tVR: 2,\n};\n\nexport const ClipTask = {\n\tNONE: 0,\n\tHIGHLIGHT: 1,\n\tSHOW_INSIDE: 2,\n\tSHOW_OUTSIDE: 3\n};\n\nexport const ClipMethod = {\n\tINSIDE_ANY: 0,\n\tINSIDE_ALL: 1\n};\n\nexport const ElevationGradientRepeat = {\n\tCLAMP: 0,\n\tREPEAT: 1,\n\tMIRRORED_REPEAT: 2,\n};\n\nexport const MOUSE = {\n\tLEFT: 0b0001,\n\tRIGHT: 0b0010,\n\tMIDDLE: 0b0100\n};\n\nexport const PointSizeType = {\n\tFIXED: 0,\n\tATTENUATED: 1,\n\tADAPTIVE: 2\n};\n\nexport const PointShape = {\n\tSQUARE: 0,\n\tCIRCLE: 1,\n\tPARABOLOID: 2\n};\n\nexport const TreeType = {\n\tOCTREE:\t0,\n\tKDTREE:\t1\n};\n\nexport const LengthUnits = {\n\tMETER: {code: 'm', unitspermeter: 1.0},\n\tFEET: {code: 'ft', unitspermeter: 3.28084},\n\tINCH: {code: '\\u2033', unitspermeter: 39.3701}\n};","\nlet ftCanvas = document.createElement('canvas');\n\nexport const Features = (function () {\n\n\tlet gl = ftCanvas.getContext('webgl') || ftCanvas.getContext('experimental-webgl');\n\tif (gl === null){ \n\t\treturn null; \n\t}\n\n\t// -- code taken from THREE.WebGLRenderer --\n\tlet _vertexShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT);\n\tlet _vertexShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT);\n\t// Unused: let _vertexShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT);\n\n\tlet _fragmentShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n\tlet _fragmentShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT);\n\t// Unused: let _fragmentShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT);\n\n\tlet highpAvailable = _vertexShaderPrecisionHighpFloat.precision > 0 && _fragmentShaderPrecisionHighpFloat.precision > 0;\n\tlet mediumpAvailable = _vertexShaderPrecisionMediumpFloat.precision > 0 && _fragmentShaderPrecisionMediumpFloat.precision > 0;\n\t// -----------------------------------------\n\n\tlet precision;\n\tif (highpAvailable) {\n\t\tprecision = 'highp';\n\t} else if (mediumpAvailable) {\n\t\tprecision = 'mediump';\n\t} else {\n\t\tprecision = 'lowp';\n\t}\n\n\treturn {\n\t\tSHADER_INTERPOLATION: {\n\t\t\tisSupported: function () {\n\t\t\t\tlet supported = true;\n\n\t\t\t\tsupported = supported && gl.getExtension('EXT_frag_depth');\n\t\t\t\tsupported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8;\n\n\t\t\t\treturn supported;\n\t\t\t}\n\t\t},\n\t\tSHADER_SPLATS: {\n\t\t\tisSupported: function () {\n\t\t\t\tlet supported = true;\n\n\t\t\t\tsupported = supported && gl.getExtension('EXT_frag_depth');\n\t\t\t\tsupported = supported && gl.getExtension('OES_texture_float');\n\t\t\t\tsupported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8;\n\n\t\t\t\treturn supported;\n\t\t\t}\n\n\t\t},\n\t\tSHADER_EDL: {\n\t\t\tisSupported: function () {\n\t\t\t\tlet supported = true;\n\n\t\t\t\t//supported = supported && gl.getExtension('EXT_frag_depth');\n\t\t\t\tsupported = supported && gl.getExtension('OES_texture_float');\n\t\t\t\tsupported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8;\n\n\t\t\t\t//supported = supported || (gl instanceof WebGL2RenderingContext);\n\n\t\t\t\treturn supported;\n\t\t\t}\n\n\t\t},\n\t\t//WEBGL2: {\n\t\t//\tisSupported: function(){\n\t\t//\t\treturn gl instanceof WebGL2RenderingContext;\n\t\t//\t}\n\t\t//},\n\t\tprecision: precision\n\t};\n}());\n\n","\n\nexport const KeyCodes = {\n\n\tLEFT: 37,\n\tUP: 38,\n\tRIGHT: 39,\n\tBOTTOM: 40,\n\tDELETE: 46,\n\n\tA: 'A'.charCodeAt(0),\n\tS: 'S'.charCodeAt(0),\n\tD: 'D'.charCodeAt(0),\n\tW: 'W'.charCodeAt(0),\n\tQ: 'Q'.charCodeAt(0),\n\tE: 'E'.charCodeAt(0),\n\tR: 'R'.charCodeAt(0),\n\tF: 'F'.charCodeAt(0)\n\t\n};","\n\nclass LRUItem{\n\n\tconstructor(node){\n\t\tthis.previous = null;\n\t\tthis.next = null;\n\t\tthis.node = node;\n\t}\n\n}\n\n/**\n *\n * @class A doubly-linked-list of the least recently used elements.\n */\nclass LRU{\n\n\tconstructor(){\n\t\t// the least recently used item\n\t\tthis.first = null;\n\t\t// the most recently used item\n\t\tthis.last = null;\n\t\t// a list of all items in the lru list\n\t\tthis.items = {};\n\t\tthis.elements = 0;\n\t\tthis.numPoints = 0;\n\t}\n\n\tsize(){\n\t\treturn this.elements;\n\t}\n\n\tcontains(node){\n\t\treturn this.items[node.id] == null;\n\t}\n\n\ttouch(node){\n\t\tif (!node.loaded) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet item;\n\t\tif (this.items[node.id] == null) {\n\t\t\t// add to list\n\t\t\titem = new LRUItem(node);\n\t\t\titem.previous = this.last;\n\t\t\tthis.last = item;\n\t\t\tif (item.previous !== null) {\n\t\t\t\titem.previous.next = item;\n\t\t\t}\n\n\t\t\tthis.items[node.id] = item;\n\t\t\tthis.elements++;\n\n\t\t\tif (this.first === null) {\n\t\t\t\tthis.first = item;\n\t\t\t}\n\t\t\tthis.numPoints += node.numPoints;\n\t\t} else {\n\t\t\t// update in list\n\t\t\titem = this.items[node.id];\n\t\t\tif (item.previous === null) {\n\t\t\t\t// handle touch on first element\n\t\t\t\tif (item.next !== null) {\n\t\t\t\t\tthis.first = item.next;\n\t\t\t\t\tthis.first.previous = null;\n\t\t\t\t\titem.previous = this.last;\n\t\t\t\t\titem.next = null;\n\t\t\t\t\tthis.last = item;\n\t\t\t\t\titem.previous.next = item;\n\t\t\t\t}\n\t\t\t} else if (item.next === null) {\n\t\t\t\t// handle touch on last element\n\t\t\t} else {\n\t\t\t\t// handle touch on any other element\n\t\t\t\titem.previous.next = item.next;\n\t\t\t\titem.next.previous = item.previous;\n\t\t\t\titem.previous = this.last;\n\t\t\t\titem.next = null;\n\t\t\t\tthis.last = item;\n\t\t\t\titem.previous.next = item;\n\t\t\t}\n\t\t}\n\t}\n\n\tremove(node){\n\t\tlet lruItem = this.items[node.id];\n\t\tif (lruItem) {\n\t\t\tif (this.elements === 1) {\n\t\t\t\tthis.first = null;\n\t\t\t\tthis.last = null;\n\t\t\t} else {\n\t\t\t\tif (!lruItem.previous) {\n\t\t\t\t\tthis.first = lruItem.next;\n\t\t\t\t\tthis.first.previous = null;\n\t\t\t\t}\n\t\t\t\tif (!lruItem.next) {\n\t\t\t\t\tthis.last = lruItem.previous;\n\t\t\t\t\tthis.last.next = null;\n\t\t\t\t}\n\t\t\t\tif (lruItem.previous && lruItem.next) {\n\t\t\t\t\tlruItem.previous.next = lruItem.next;\n\t\t\t\t\tlruItem.next.previous = lruItem.previous;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdelete this.items[node.id];\n\t\t\tthis.elements--;\n\t\t\tthis.numPoints -= node.numPoints;\n\t\t}\n\t}\n\n\tgetLRUItem(){\n\t\tif (this.first === null) {\n\t\t\treturn null;\n\t\t}\n\t\tlet lru = this.first;\n\n\t\treturn lru.node;\n\t}\n\n\ttoString(){\n\t\tlet string = '{ ';\n\t\tlet curr = this.first;\n\t\twhile (curr !== null) {\n\t\t\tstring += curr.node.id;\n\t\t\tif (curr.next !== null) {\n\t\t\t\tstring += ', ';\n\t\t\t}\n\t\t\tcurr = curr.next;\n\t\t}\n\t\tstring += '}';\n\t\tstring += '(' + this.size() + ')';\n\t\treturn string;\n\t}\n\n\tfreeMemory(){\n\t\tif (this.elements <= 1) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (this.numPoints > Potree.pointLoadLimit) {\n\t\t\tlet element = this.first;\n\t\t\tlet node = element.node;\n\t\t\tthis.disposeDescendants(node);\n\t\t}\n\t}\n\n\tdisposeDescendants(node){\n\t\tlet stack = [];\n\t\tstack.push(node);\n\t\twhile (stack.length > 0) {\n\t\t\tlet current = stack.pop();\n\n\t\t\t// console.log(current);\n\n\t\t\tcurrent.dispose();\n\t\t\tthis.remove(current);\n\n\t\t\tfor (let key in current.children) {\n\t\t\t\tif (current.children.hasOwnProperty(key)) {\n\t\t\t\t\tlet child = current.children[key];\n\t\t\t\t\tif (child.loaded) {\n\t\t\t\t\t\tstack.push(current.children[key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}\n\nexport {LRU, LRUItem};","\n\nimport { EventDispatcher } from \"./EventDispatcher.js\";\n\n\nexport class PointCloudTreeNode extends EventDispatcher{\n\n\tconstructor(){\n\t\tsuper();\n\t\tthis.needsTransformUpdate = true;\n\t}\n\n\tgetChildren () {\n\t\tthrow new Error('override function');\n\t}\n\n\tgetBoundingBox () {\n\t\tthrow new Error('override function');\n\t}\n\n\tisLoaded () {\n\t\tthrow new Error('override function');\n\t}\n\n\tisGeometryNode () {\n\t\tthrow new Error('override function');\n\t}\n\n\tisTreeNode () {\n\t\tthrow new Error('override function');\n\t}\n\n\tgetLevel () {\n\t\tthrow new Error('override function');\n\t}\n\n\tgetBoundingSphere () {\n\t\tthrow new Error('override function');\n\t}\n};\n\nexport class PointCloudTree extends THREE.Object3D {\n\tconstructor () {\n\t\tsuper();\n\t}\n\n\tinitialized () {\n\t\treturn this.root !== null;\n\t}\n};\n","\n/**\n * Some types of possible point attribute data formats\n *\n * @class\n */\nconst PointAttributeTypes = {\n\tDATA_TYPE_DOUBLE: {ordinal: 0, name: \"double\", size: 8},\n\tDATA_TYPE_FLOAT: {ordinal: 1, name: \"float\", size: 4},\n\tDATA_TYPE_INT8: {ordinal: 2, name: \"int8\", size: 1},\n\tDATA_TYPE_UINT8: {ordinal: 3, name: \"uint8\", size: 1},\n\tDATA_TYPE_INT16: {ordinal: 4, name: \"int16\", size: 2},\n\tDATA_TYPE_UINT16: {ordinal: 5, name: \"uint16\", size: 2},\n\tDATA_TYPE_INT32: {ordinal: 6, name: \"int32\", size: 4},\n\tDATA_TYPE_UINT32: {ordinal: 7, name: \"uint32\", size: 4},\n\tDATA_TYPE_INT64: {ordinal: 8, name: \"int64\", size: 8},\n\tDATA_TYPE_UINT64: {ordinal: 9, name: \"uint64\", size: 8}\n};\n\nlet i = 0;\nfor (let obj in PointAttributeTypes) {\n\tPointAttributeTypes[i] = PointAttributeTypes[obj];\n\ti++;\n}\n\nexport {PointAttributeTypes};\n\n\nclass PointAttribute{\n\t\n\tconstructor(name, type, numElements){\n\t\tthis.name = name;\n\t\tthis.type = type;\n\t\tthis.numElements = numElements;\n\t\tthis.byteSize = this.numElements * this.type.size;\n\t\tthis.description = \"\";\n\t\tthis.range = [Infinity, -Infinity];\n\t}\n\n};\n\nPointAttribute.POSITION_CARTESIAN = new PointAttribute(\n\t\"POSITION_CARTESIAN\", PointAttributeTypes.DATA_TYPE_FLOAT, 3);\n\nPointAttribute.RGBA_PACKED = new PointAttribute(\n\t\"COLOR_PACKED\", PointAttributeTypes.DATA_TYPE_INT8, 4);\n\nPointAttribute.COLOR_PACKED = PointAttribute.RGBA_PACKED;\n\nPointAttribute.RGB_PACKED = new PointAttribute(\n\t\"COLOR_PACKED\", PointAttributeTypes.DATA_TYPE_INT8, 3);\n\nPointAttribute.NORMAL_FLOATS = new PointAttribute(\n\t\"NORMAL_FLOATS\", PointAttributeTypes.DATA_TYPE_FLOAT, 3);\n\nPointAttribute.INTENSITY = new PointAttribute(\n\t\"INTENSITY\", PointAttributeTypes.DATA_TYPE_UINT16, 1);\n\nPointAttribute.CLASSIFICATION = new PointAttribute(\n\t\"CLASSIFICATION\", PointAttributeTypes.DATA_TYPE_UINT8, 1);\n\nPointAttribute.NORMAL_SPHEREMAPPED = new PointAttribute(\n\t\"NORMAL_SPHEREMAPPED\", PointAttributeTypes.DATA_TYPE_UINT8, 2);\n\nPointAttribute.NORMAL_OCT16 = new PointAttribute(\n\t\"NORMAL_OCT16\", PointAttributeTypes.DATA_TYPE_UINT8, 2);\n\nPointAttribute.NORMAL = new PointAttribute(\n\t\"NORMAL\", PointAttributeTypes.DATA_TYPE_FLOAT, 3);\n\t\nPointAttribute.RETURN_NUMBER = new PointAttribute(\n\t\"RETURN_NUMBER\", PointAttributeTypes.DATA_TYPE_UINT8, 1);\n\t\nPointAttribute.NUMBER_OF_RETURNS = new PointAttribute(\n\t\"NUMBER_OF_RETURNS\", PointAttributeTypes.DATA_TYPE_UINT8, 1);\n\t\nPointAttribute.SOURCE_ID = new PointAttribute(\n\t\"SOURCE_ID\", PointAttributeTypes.DATA_TYPE_UINT16, 1);\n\nPointAttribute.INDICES = new PointAttribute(\n\t\"INDICES\", PointAttributeTypes.DATA_TYPE_UINT32, 1);\n\nPointAttribute.SPACING = new PointAttribute(\n\t\"SPACING\", PointAttributeTypes.DATA_TYPE_FLOAT, 1);\n\nPointAttribute.GPS_TIME = new PointAttribute(\n\t\"GPS_TIME\", PointAttributeTypes.DATA_TYPE_DOUBLE, 1);\n\nexport {PointAttribute};\n\nexport class PointAttributes{\n\n\tconstructor(pointAttributes){\n\t\tthis.attributes = [];\n\t\tthis.byteSize = 0;\n\t\tthis.size = 0;\n\t\tthis.vectors = [];\n\n\t\tif (pointAttributes != null) {\n\t\t\tfor (let i = 0; i < pointAttributes.length; i++) {\n\t\t\t\tlet pointAttributeName = pointAttributes[i];\n\t\t\t\tlet pointAttribute = PointAttribute[pointAttributeName];\n\t\t\t\tthis.attributes.push(pointAttribute);\n\t\t\t\tthis.byteSize += pointAttribute.byteSize;\n\t\t\t\tthis.size++;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tadd(pointAttribute){\n\t\tthis.attributes.push(pointAttribute);\n\t\tthis.byteSize += pointAttribute.byteSize;\n\t\tthis.size++;\n\t};\n\n\taddVector(vector){\n\t\tthis.vectors.push(vector);\n\t}\n\n\thasColors(){\n\t\tfor (let name in this.attributes) {\n\t\t\tlet pointAttribute = this.attributes[name];\n\t\t\tif (pointAttribute.name === PointAttributeNames.COLOR_PACKED) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\thasNormals(){\n\t\tfor (let name in this.attributes) {\n\t\t\tlet pointAttribute = this.attributes[name];\n\t\t\tif (\n\t\t\t\tpointAttribute === PointAttribute.NORMAL_SPHEREMAPPED ||\n\t\t\t\tpointAttribute === PointAttribute.NORMAL_FLOATS ||\n\t\t\t\tpointAttribute === PointAttribute.NORMAL ||\n\t\t\t\tpointAttribute === PointAttribute.NORMAL_OCT16) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n}\n","import {PointCloudTreeNode} from \"./PointCloudTree.js\";\nimport {PointAttributes, PointAttribute, PointAttributeTypes} from \"./loader/PointAttributes.js\";\n\nclass U {\n\tstatic toVector3(v, offset) {\n\t\treturn new THREE.Vector3().fromArray(v, offset || 0);\n\t}\n\n\tstatic toBox3(b) {\n\t\treturn new THREE.Box3(U.toVector3(b), U.toVector3(b, 3));\n\t};\n\n\tstatic findDim(schema, name) {\n\t\tvar dim = schema.find((dim) => dim.name == name);\n\t\tif (!dim) throw new Error('Failed to find ' + name + ' in schema');\n\t\treturn dim;\n\t}\n\n\tstatic sphereFrom(b) {\n\t\treturn b.getBoundingSphere(new THREE.Sphere());\n\t}\n};\n\nexport class PointCloudEptGeometry {\n\tconstructor(url, info) {\n\t\tlet version = info.version;\n\t\tlet schema = info.schema;\n\t\tlet bounds = info.bounds;\n\t\tlet boundsConforming = info.boundsConforming;\n\n\t\tlet xyz = [\n\t\t\tU.findDim(schema, 'X'),\n\t\t\tU.findDim(schema, 'Y'),\n\t\t\tU.findDim(schema, 'Z')\n\t\t];\n\t\tlet scale = xyz.map((d) => d.scale || 1);\n\t\tlet offset = xyz.map((d) => d.offset || 0);\n\t\tthis.eptScale = U.toVector3(scale);\n\t\tthis.eptOffset = U.toVector3(offset);\n\n\t\tthis.url = url;\n\t\tthis.info = info;\n\t\tthis.type = 'ept';\n\n\t\tthis.schema = schema;\n\t\tthis.span = info.span || info.ticks;\n\t\tthis.boundingBox = U.toBox3(bounds);\n\t\tthis.tightBoundingBox = U.toBox3(boundsConforming);\n\t\tthis.offset = U.toVector3([0, 0, 0]);\n\t\tthis.boundingSphere = U.sphereFrom(this.boundingBox);\n\t\tthis.tightBoundingSphere = U.sphereFrom(this.tightBoundingBox);\n\t\tthis.version = new Potree.Version('1.7');\n\n\t\tthis.projection = null;\n\t\tthis.fallbackProjection = null;\n\n\t\tif (info.srs && info.srs.horizontal) {\n\t\t\tthis.projection = info.srs.authority + ':' + info.srs.horizontal;\n\t\t}\n\n\t\tif (info.srs.wkt) {\n\t\t\tif (!this.projection) this.projection = info.srs.wkt;\n\t\t\telse this.fallbackProjection = info.srs.wkt;\n\t\t}\n\n\t\t{ \n\t\t\t// TODO [mschuetz]: named projections that proj4 can't handle seem to cause problems.\n\t\t\t// remove them for now\n\n\t\t\ttry{\n\t\t\t\tproj4(this.projection);\n\t\t\t}catch(e){\n\t\t\t\tthis.projection = null;\n\t\t\t}\n\n\t\t\n\n\t\t}\n\n\t\t\n\t\t{\n\t\t\tconst attributes = new PointAttributes();\n\n\t\t\tattributes.add(PointAttribute.POSITION_CARTESIAN);\n\t\t\tattributes.add(new PointAttribute(\"rgba\", PointAttributeTypes.DATA_TYPE_UINT8, 4));\n\t\t\tattributes.add(new PointAttribute(\"intensity\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\n\t\t\tattributes.add(new PointAttribute(\"classification\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\t\t\tattributes.add(new PointAttribute(\"gps-time\", PointAttributeTypes.DATA_TYPE_DOUBLE, 1));\n\t\t\tattributes.add(new PointAttribute(\"returnNumber\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\t\t\tattributes.add(new PointAttribute(\"number of returns\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\t\t\tattributes.add(new PointAttribute(\"return number\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\t\t\tattributes.add(new PointAttribute(\"source id\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\n\n\t\t\tthis.pointAttributes = attributes;\n\t\t}\n\n\n\n\t\tthis.spacing =\n\t\t\t(this.boundingBox.max.x - this.boundingBox.min.x) / this.span;\n\n\t\tlet hierarchyType = info.hierarchyType || 'json';\n\n\t\tconst dataType = info.dataType;\n\t\tif (dataType == 'laszip') {\n\t\t\tthis.loader = new Potree.EptLaszipLoader();\n\t\t}\n\t\telse if (dataType == 'binary') {\n\t\t\tthis.loader = new Potree.EptBinaryLoader();\n\t\t}\n\t\telse if (dataType == 'zstandard') {\n\t\t\tthis.loader = new Potree.EptZstandardLoader();\n\t\t}\n\t\telse {\n\t\t\tthrow new Error('Could not read data type: ' + dataType);\n\t\t}\n\t}\n};\n\nexport class EptKey {\n\tconstructor(ept, b, d, x, y, z) {\n\t\tthis.ept = ept;\n\t\tthis.b = b;\n\t\tthis.d = d;\n\t\tthis.x = x || 0;\n\t\tthis.y = y || 0;\n\t\tthis.z = z || 0;\n\t}\n\n\tname() {\n\t\treturn this.d + '-' + this.x + '-' + this.y + '-' + this.z;\n\t}\n\n\tstep(a, b, c) {\n\t\tlet min = this.b.min.clone();\n\t\tlet max = this.b.max.clone();\n\t\tlet dst = new THREE.Vector3().subVectors(max, min);\n\n\t\tif (a)\tmin.x += dst.x / 2;\n\t\telse\tmax.x -= dst.x / 2;\n\n\t\tif (b)\tmin.y += dst.y / 2;\n\t\telse\tmax.y -= dst.y / 2;\n\n\t\tif (c)\tmin.z += dst.z / 2;\n\t\telse\tmax.z -= dst.z / 2;\n\n\t\treturn new Potree.EptKey(\n\t\t\t\tthis.ept,\n\t\t\t\tnew THREE.Box3(min, max),\n\t\t\t\tthis.d + 1,\n\t\t\t\tthis.x * 2 + a,\n\t\t\t\tthis.y * 2 + b,\n\t\t\t\tthis.z * 2 + c);\n\t}\n\n\tchildren() {\n\t\tvar result = [];\n\t\tfor (var a = 0; a < 2; ++a) {\n\t\t\tfor (var b = 0; b < 2; ++b) {\n\t\t\t\tfor (var c = 0; c < 2; ++c) {\n\t\t\t\t\tvar add = this.step(a, b, c).name();\n\t\t\t\t\tif (!result.includes(add)) result = result.concat(add);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n}\n\nexport class PointCloudEptGeometryNode extends PointCloudTreeNode {\n\tconstructor(ept, b, d, x, y, z) {\n\t\tsuper();\n\n\t\tthis.ept = ept;\n\t\tthis.key = new Potree.EptKey(\n\t\t\t\tthis.ept,\n\t\t\t\tb || this.ept.boundingBox,\n\t\t\t\td || 0,\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\tz);\n\n\t\tthis.id = PointCloudEptGeometryNode.IDCount++;\n\t\tthis.geometry = null;\n\t\tthis.boundingBox = this.key.b;\n\t\tthis.tightBoundingBox = this.boundingBox;\n\t\tthis.spacing = this.ept.spacing / Math.pow(2, this.key.d);\n\t\tthis.boundingSphere = U.sphereFrom(this.boundingBox);\n\n\t\t// These are set during hierarchy loading.\n\t\tthis.hasChildren = false;\n\t\tthis.children = { };\n\t\tthis.numPoints = -1;\n\n\t\tthis.level = this.key.d;\n\t\tthis.loaded = false;\n\t\tthis.loading = false;\n\t\tthis.oneTimeDisposeHandlers = [];\n\n\t\tlet k = this.key;\n\t\tthis.name = this.toPotreeName(k.d, k.x, k.y, k.z);\n\t\tthis.index = parseInt(this.name.charAt(this.name.length - 1));\n\t}\n\n\tisGeometryNode() { return true; }\n\tgetLevel() { return this.level; }\n\tisTreeNode() { return false; }\n\tisLoaded() { return this.loaded; }\n\tgetBoundingSphere() { return this.boundingSphere; }\n\tgetBoundingBox() { return this.boundingBox; }\n\turl() { return this.ept.url + 'ept-data/' + this.filename(); }\n\tgetNumPoints() { return this.numPoints; }\n\n\tfilename() { return this.key.name(); }\n\n\tgetChildren() {\n\t\tlet children = [];\n\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tif (this.children[i]) {\n\t\t\t\tchildren.push(this.children[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn children;\n\t}\n\n\taddChild(child) {\n\t\tthis.children[child.index] = child;\n\t\tchild.parent = this;\n\t}\n\n\tload() {\n\t\tif (this.loaded || this.loading) return;\n\t\tif (Potree.numNodesLoading >= Potree.maxNodesLoading) return;\n\n\t\tthis.loading = true;\n\t\t++Potree.numNodesLoading;\n\n\t\tif (this.numPoints == -1) this.loadHierarchy();\n\t\tthis.loadPoints();\n\t}\n\n\tloadPoints(){\n\t\tthis.ept.loader.load(this);\n\t}\n\n\tasync loadHierarchy() {\n\t\tlet nodes = { };\n\t\tnodes[this.filename()] = this;\n\t\tthis.hasChildren = false;\n\n\t\tlet eptHierarchyFile =\n\t\t\t`${this.ept.url}ept-hierarchy/${this.filename()}.json`;\n\n\t\tlet response = await fetch(eptHierarchyFile);\n\t\tlet hier = await response.json();\n\n\t\t// Since we want to traverse top-down, and 10 comes\n\t\t// lexicographically before 9 (for example), do a deep sort.\n\t\tvar keys = Object.keys(hier).sort((a, b) => {\n\t\t\tlet [da, xa, ya, za] = a.split('-').map((n) => parseInt(n, 10));\n\t\t\tlet [db, xb, yb, zb] = b.split('-').map((n) => parseInt(n, 10));\n\t\t\tif (da < db) return -1; if (da > db) return 1;\n\t\t\tif (xa < xb) return -1; if (xa > xb) return 1;\n\t\t\tif (ya < yb) return -1; if (ya > yb) return 1;\n\t\t\tif (za < zb) return -1; if (za > zb) return 1;\n\t\t\treturn 0;\n\t\t});\n\n\t\tkeys.forEach((v) => {\n\t\t\tlet [d, x, y, z] = v.split('-').map((n) => parseInt(n, 10));\n\t\t\tlet a = x & 1, b = y & 1, c = z & 1;\n\t\t\tlet parentName =\n\t\t\t\t(d - 1) + '-' + (x >> 1) + '-' + (y >> 1) + '-' + (z >> 1);\n\n\t\t\tlet parentNode = nodes[parentName];\n\t\t\tif (!parentNode) return;\n\t\t\tparentNode.hasChildren = true;\n\n\t\t\tlet key = parentNode.key.step(a, b, c);\n\n\t\t\tlet node = new Potree.PointCloudEptGeometryNode(\n\t\t\t\t\tthis.ept,\n\t\t\t\t\tkey.b,\n\t\t\t\t\tkey.d,\n\t\t\t\t\tkey.x,\n\t\t\t\t\tkey.y,\n\t\t\t\t\tkey.z);\n\n\t\t\tnode.level = d;\n\t\t\tnode.numPoints = hier[v];\n\n\t\t\tparentNode.addChild(node);\n\t\t\tnodes[key.name()] = node;\n\t\t});\n\t}\n\n\tdoneLoading(bufferGeometry, tightBoundingBox, np, mean) {\n\t\tbufferGeometry.boundingBox = this.boundingBox;\n\t\tthis.geometry = bufferGeometry;\n\t\tthis.tightBoundingBox = tightBoundingBox;\n\t\tthis.numPoints = np;\n\t\tthis.mean = mean;\n\t\tthis.loaded = true;\n\t\tthis.loading = false;\n\t\t--Potree.numNodesLoading;\n\t}\n\n\ttoPotreeName(d, x, y, z) {\n\t\tvar name = 'r';\n\n\t\tfor (var i = 0; i < d; ++i) {\n\t\t\tvar shift = d - i - 1;\n\t\t\tvar mask = 1 << shift;\n\t\t\tvar step = 0;\n\n\t\t\tif (x & mask) step += 4;\n\t\t\tif (y & mask) step += 2;\n\t\t\tif (z & mask) step += 1;\n\n\t\t\tname += step;\n\t\t}\n\n\t\treturn name;\n\t}\n\n\tdispose() {\n\t\tif (this.geometry && this.parent != null) {\n\t\t\tthis.geometry.dispose();\n\t\t\tthis.geometry = null;\n\t\t\tthis.loaded = false;\n\n\t\t\t// this.dispatchEvent( { type: 'dispose' } );\n\t\t\tfor (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\n\t\t\t\tlet handler = this.oneTimeDisposeHandlers[i];\n\t\t\t\thandler();\n\t\t\t}\n\t\t\tthis.oneTimeDisposeHandlers = [];\n\t\t}\n\t}\n}\n\nPointCloudEptGeometryNode.IDCount = 0;\n\n","\n\nimport {PointCloudTreeNode} from \"./PointCloudTree.js\";\nimport {XHRFactory} from \"./XHRFactory.js\";\nimport {Utils} from \"./utils.js\";\n\nexport class PointCloudOctreeGeometry{\n\n\tconstructor(){\n\t\tthis.url = null;\n\t\tthis.octreeDir = null;\n\t\tthis.spacing = 0;\n\t\tthis.boundingBox = null;\n\t\tthis.root = null;\n\t\tthis.nodes = null;\n\t\tthis.pointAttributes = null;\n\t\tthis.hierarchyStepSize = -1;\n\t\tthis.loader = null;\n\t}\n\t\n}\n\nexport class PointCloudOctreeGeometryNode extends PointCloudTreeNode{\n\n\tconstructor(name, pcoGeometry, boundingBox){\n\t\tsuper();\n\n\t\tthis.id = PointCloudOctreeGeometryNode.IDCount++;\n\t\tthis.name = name;\n\t\tthis.index = parseInt(name.charAt(name.length - 1));\n\t\tthis.pcoGeometry = pcoGeometry;\n\t\tthis.geometry = null;\n\t\tthis.boundingBox = boundingBox;\n\t\tthis.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\tthis.children = {};\n\t\tthis.numPoints = 0;\n\t\tthis.level = null;\n\t\tthis.loaded = false;\n\t\tthis.oneTimeDisposeHandlers = [];\n\t}\n\n\tisGeometryNode(){\n\t\treturn true;\n\t}\n\n\tgetLevel(){\n\t\treturn this.level;\n\t}\n\n\tisTreeNode(){\n\t\treturn false;\n\t}\n\n\tisLoaded(){\n\t\treturn this.loaded;\n\t}\n\n\tgetBoundingSphere(){\n\t\treturn this.boundingSphere;\n\t}\n\n\tgetBoundingBox(){\n\t\treturn this.boundingBox;\n\t}\n\n\tgetChildren(){\n\t\tlet children = [];\n\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tif (this.children[i]) {\n\t\t\t\tchildren.push(this.children[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn children;\n\t}\n\n\tgetBoundingBox(){\n\t\treturn this.boundingBox;\n\t}\n\n\tgetURL(){\n\t\tlet url = '';\n\n\t\tlet version = this.pcoGeometry.loader.version;\n\n\t\tif (version.equalOrHigher('1.5')) {\n\t\t\turl = this.pcoGeometry.octreeDir + '/' + this.getHierarchyPath() + '/' + this.name;\n\t\t} else if (version.equalOrHigher('1.4')) {\n\t\t\turl = this.pcoGeometry.octreeDir + '/' + this.name;\n\t\t} else if (version.upTo('1.3')) {\n\t\t\turl = this.pcoGeometry.octreeDir + '/' + this.name;\n\t\t}\n\n\t\treturn url;\n\t}\n\n\tgetHierarchyPath(){\n\t\tlet path = 'r/';\n\n\t\tlet hierarchyStepSize = this.pcoGeometry.hierarchyStepSize;\n\t\tlet indices = this.name.substr(1);\n\n\t\tlet numParts = Math.floor(indices.length / hierarchyStepSize);\n\t\tfor (let i = 0; i < numParts; i++) {\n\t\t\tpath += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';\n\t\t}\n\n\t\tpath = path.slice(0, -1);\n\n\t\treturn path;\n\t}\n\n\taddChild(child) {\n\t\tthis.children[child.index] = child;\n\t\tchild.parent = this;\n\t}\n\n\tload(){\n\t\tif (this.loading === true || this.loaded === true || Potree.numNodesLoading >= Potree.maxNodesLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.loading = true;\n\n\t\tPotree.numNodesLoading++;\n\n\t\tif (this.pcoGeometry.loader.version.equalOrHigher('1.5')) {\n\t\t\tif ((this.level % this.pcoGeometry.hierarchyStepSize) === 0 && this.hasChildren) {\n\t\t\t\tthis.loadHierachyThenPoints();\n\t\t\t} else {\n\t\t\t\tthis.loadPoints();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.loadPoints();\n\t\t}\n\t}\n\n\tloadPoints(){\n\t\tthis.pcoGeometry.loader.load(this);\n\t}\n\n\tloadHierachyThenPoints(){\n\t\tlet node = this;\n\n\t\t// load hierarchy\n\t\tlet callback = function (node, hbuffer) {\n\n\t\t\tlet tStart = performance.now();\n\n\t\t\tlet view = new DataView(hbuffer);\n\n\t\t\tlet stack = [];\n\t\t\tlet children = view.getUint8(0);\n\t\t\tlet numPoints = view.getUint32(1, true);\n\t\t\tnode.numPoints = numPoints;\n\t\t\tstack.push({children: children, numPoints: numPoints, name: node.name});\n\n\t\t\tlet decoded = [];\n\n\t\t\tlet offset = 5;\n\t\t\twhile (stack.length > 0) {\n\t\t\t\tlet snode = stack.shift();\n\t\t\t\tlet mask = 1;\n\t\t\t\tfor (let i = 0; i < 8; i++) {\n\t\t\t\t\tif ((snode.children & mask) !== 0) {\n\t\t\t\t\t\tlet childName = snode.name + i;\n\n\t\t\t\t\t\tlet childChildren = view.getUint8(offset);\n\t\t\t\t\t\tlet childNumPoints = view.getUint32(offset + 1, true);\n\n\t\t\t\t\t\tstack.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n\t\t\t\t\t\tdecoded.push({children: childChildren, numPoints: childNumPoints, name: childName});\n\n\t\t\t\t\t\toffset += 5;\n\t\t\t\t\t}\n\n\t\t\t\t\tmask = mask * 2;\n\t\t\t\t}\n\n\t\t\t\tif (offset === hbuffer.byteLength) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// console.log(decoded);\n\n\t\t\tlet nodes = {};\n\t\t\tnodes[node.name] = node;\n\t\t\tlet pco = node.pcoGeometry;\n\n\t\t\tfor (let i = 0; i < decoded.length; i++) {\n\t\t\t\tlet name = decoded[i].name;\n\t\t\t\tlet decodedNumPoints = decoded[i].numPoints;\n\t\t\t\tlet index = parseInt(name.charAt(name.length - 1));\n\t\t\t\tlet parentName = name.substring(0, name.length - 1);\n\t\t\t\tlet parentNode = nodes[parentName];\n\t\t\t\tlet level = name.length - 1;\n\t\t\t\tlet boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\n\n\t\t\t\tlet currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n\t\t\t\tcurrentNode.level = level;\n\t\t\t\tcurrentNode.numPoints = decodedNumPoints;\n\t\t\t\tcurrentNode.hasChildren = decoded[i].children > 0;\n\t\t\t\tcurrentNode.spacing = pco.spacing / Math.pow(2, level);\n\t\t\t\tparentNode.addChild(currentNode);\n\t\t\t\tnodes[name] = currentNode;\n\t\t\t}\n\n\t\t\tlet duration = performance.now() - tStart;\n\t\t\tif(duration > 5){\n\t\t\t\tlet msg = `duration: ${duration}ms, numNodes: ${decoded.length}`;\n\t\t\t\tconsole.log(msg);\n\t\t\t}\n\n\t\t\tnode.loadPoints();\n\t\t};\n\t\tif ((node.level % node.pcoGeometry.hierarchyStepSize) === 0) {\n\t\t\t// let hurl = node.pcoGeometry.octreeDir + \"/../hierarchy/\" + node.name + \".hrc\";\n\t\t\tlet hurl = node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';\n\n\t\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\t\txhr.open('GET', hurl, true);\n\t\t\txhr.responseType = 'arraybuffer';\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\n\t\t\txhr.onreadystatechange = () => {\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif (xhr.status === 200 || xhr.status === 0) {\n\t\t\t\t\t\tlet hbuffer = xhr.response;\n\t\t\t\t\t\tcallback(node, hbuffer);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);\n\t\t\t\t\t\tPotree.numNodesLoading--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\ttry {\n\t\t\t\txhr.send(null);\n\t\t\t} catch (e) {\n\t\t\t\tconsole.log('fehler beim laden der punktwolke: ' + e);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetNumPoints(){\n\t\treturn this.numPoints;\n\t}\n\n\tdispose(){\n\t\tif (this.geometry && this.parent != null) {\n\t\t\tthis.geometry.dispose();\n\t\t\tthis.geometry = null;\n\t\t\tthis.loaded = false;\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\t\t\t\n\t\t\tfor (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\n\t\t\t\tlet handler = this.oneTimeDisposeHandlers[i];\n\t\t\t\thandler();\n\t\t\t}\n\t\t\tthis.oneTimeDisposeHandlers = [];\n\t\t}\n\t}\n\t\n}\n\nPointCloudOctreeGeometryNode.IDCount = 0;\n","\n// -------------------------------------------\n// to get a ready to use gradient array from a chroma.js gradient:\n// http://gka.github.io/chroma.js/\n// -------------------------------------------\n//\n// let stops = [];\n// for(let i = 0; i <= 10; i++){\n//\tlet range = chroma.scale(['yellow', 'navy']).mode('lch').domain([10,0])(i)._rgb\n//\t\t.slice(0, 3)\n//\t\t.map(v => (v / 255).toFixed(4))\n//\t\t.join(\", \");\n//\n//\tlet line = `[${i / 10}, new THREE.Color(${range})],`;\n//\n//\tstops.push(line);\n// }\n// stops.join(\"\\n\");\n//\n//\n//\n// -------------------------------------------\n// to get a ready to use gradient array from matplotlib:\n// -------------------------------------------\n// import matplotlib.pyplot as plt\n// import matplotlib.colors as colors\n//\n// norm = colors.Normalize(vmin=0,vmax=1)\n// cmap = plt.cm.viridis\n//\n// for i in range(0,11):\n//\tu = i / 10\n//\trgb = cmap(norm(u))[0:3]\n//\trgb = [\"{0:.3f}\".format(v) for v in rgb]\n//\trgb = \"[\" + str(u) + \", new THREE.Color(\" + \", \".join(rgb) + \")],\"\n//\tprint(rgb)\n\nlet Gradients = {\n\t// From chroma spectral http://gka.github.io/chroma.js/\n\tSPECTRAL: [\n\t\t[0, new THREE.Color(0.3686, 0.3098, 0.6353)],\n\t\t[0.1, new THREE.Color(0.1961, 0.5333, 0.7412)],\n\t\t[0.2, new THREE.Color(0.4000, 0.7608, 0.6471)],\n\t\t[0.3, new THREE.Color(0.6706, 0.8667, 0.6431)],\n\t\t[0.4, new THREE.Color(0.9020, 0.9608, 0.5961)],\n\t\t[0.5, new THREE.Color(1.0000, 1.0000, 0.7490)],\n\t\t[0.6, new THREE.Color(0.9961, 0.8784, 0.5451)],\n\t\t[0.7, new THREE.Color(0.9922, 0.6824, 0.3804)],\n\t\t[0.8, new THREE.Color(0.9569, 0.4275, 0.2627)],\n\t\t[0.9, new THREE.Color(0.8353, 0.2431, 0.3098)],\n\t\t[1, new THREE.Color(0.6196, 0.0039, 0.2588)]\n\t],\n\tPLASMA: [\n\t\t[0.0, new THREE.Color(0.241, 0.015, 0.610)],\n\t\t[0.1, new THREE.Color(0.387, 0.001, 0.654)],\n\t\t[0.2, new THREE.Color(0.524, 0.025, 0.653)],\n\t\t[0.3, new THREE.Color(0.651, 0.125, 0.596)],\n\t\t[0.4, new THREE.Color(0.752, 0.227, 0.513)],\n\t\t[0.5, new THREE.Color(0.837, 0.329, 0.431)],\n\t\t[0.6, new THREE.Color(0.907, 0.435, 0.353)],\n\t\t[0.7, new THREE.Color(0.963, 0.554, 0.272)],\n\t\t[0.8, new THREE.Color(0.992, 0.681, 0.195)],\n\t\t[0.9, new THREE.Color(0.987, 0.822, 0.144)],\n\t\t[1.0, new THREE.Color(0.940, 0.975, 0.131)]\n\t],\n\tYELLOW_GREEN: [\n\t\t[0, new THREE.Color(0.1647, 0.2824, 0.3451)],\n\t\t[0.1, new THREE.Color(0.1338, 0.3555, 0.4227)],\n\t\t[0.2, new THREE.Color(0.0610, 0.4319, 0.4864)],\n\t\t[0.3, new THREE.Color(0.0000, 0.5099, 0.5319)],\n\t\t[0.4, new THREE.Color(0.0000, 0.5881, 0.5569)],\n\t\t[0.5, new THREE.Color(0.1370, 0.6650, 0.5614)],\n\t\t[0.6, new THREE.Color(0.2906, 0.7395, 0.5477)],\n\t\t[0.7, new THREE.Color(0.4453, 0.8099, 0.5201)],\n\t\t[0.8, new THREE.Color(0.6102, 0.8748, 0.4850)],\n\t\t[0.9, new THREE.Color(0.7883, 0.9323, 0.4514)],\n\t\t[1, new THREE.Color(0.9804, 0.9804, 0.4314)]\n\t],\n\tVIRIDIS: [\n\t\t[0.0, new THREE.Color(0.267, 0.005, 0.329)],\n\t\t[0.1, new THREE.Color(0.283, 0.141, 0.458)],\n\t\t[0.2, new THREE.Color(0.254, 0.265, 0.530)],\n\t\t[0.3, new THREE.Color(0.207, 0.372, 0.553)],\n\t\t[0.4, new THREE.Color(0.164, 0.471, 0.558)],\n\t\t[0.5, new THREE.Color(0.128, 0.567, 0.551)],\n\t\t[0.6, new THREE.Color(0.135, 0.659, 0.518)],\n\t\t[0.7, new THREE.Color(0.267, 0.749, 0.441)],\n\t\t[0.8, new THREE.Color(0.478, 0.821, 0.318)],\n\t\t[0.9, new THREE.Color(0.741, 0.873, 0.150)],\n\t\t[1.0, new THREE.Color(0.993, 0.906, 0.144)]\n\t],\n\tINFERNO: [\n\t\t[0.0, new THREE.Color(0.077, 0.042, 0.206)],\n\t\t[0.1, new THREE.Color(0.225, 0.036, 0.388)],\n\t\t[0.2, new THREE.Color(0.373, 0.074, 0.432)],\n\t\t[0.3, new THREE.Color(0.522, 0.128, 0.420)],\n\t\t[0.4, new THREE.Color(0.665, 0.182, 0.370)],\n\t\t[0.5, new THREE.Color(0.797, 0.255, 0.287)],\n\t\t[0.6, new THREE.Color(0.902, 0.364, 0.184)],\n\t\t[0.7, new THREE.Color(0.969, 0.516, 0.063)],\n\t\t[0.8, new THREE.Color(0.988, 0.683, 0.072)],\n\t\t[0.9, new THREE.Color(0.961, 0.859, 0.298)],\n\t\t[1.0, new THREE.Color(0.988, 0.998, 0.645)]\n\t],\n\tGRAYSCALE: [\n\t\t[0, new THREE.Color(0, 0, 0)],\n\t\t[1, new THREE.Color(1, 1, 1)]\n\t],\n\t// 16 samples of the TURBU color scheme\n\t// values taken from: https://gist.github.com/mikhailov-work/ee72ba4191942acecc03fe6da94fc73f\n\t// original file licensed under Apache-2.0\n\tTURBO: [\n\t\t[0.00, new THREE.Color(0.18995, 0.07176, 0.23217)],\n\t\t[0.07, new THREE.Color(0.25107, 0.25237, 0.63374)],\n\t\t[0.13, new THREE.Color(0.27628, 0.42118, 0.89123)],\n\t\t[0.20, new THREE.Color(0.25862, 0.57958, 0.99876)],\n\t\t[0.27, new THREE.Color(0.15844, 0.73551, 0.92305)],\n\t\t[0.33, new THREE.Color(0.09267, 0.86554, 0.7623)],\n\t\t[0.40, new THREE.Color(0.19659, 0.94901, 0.59466)],\n\t\t[0.47, new THREE.Color(0.42778, 0.99419, 0.38575)],\n\t\t[0.53, new THREE.Color(0.64362, 0.98999, 0.23356)],\n\t\t[0.60, new THREE.Color(0.80473, 0.92452, 0.20459)],\n\t\t[0.67, new THREE.Color(0.93301, 0.81236, 0.22667)],\n\t\t[0.73, new THREE.Color(0.99314, 0.67408, 0.20348)],\n\t\t[0.80, new THREE.Color(0.9836, 0.49291, 0.12849)],\n\t\t[0.87, new THREE.Color(0.92105, 0.31489, 0.05475)],\n\t\t[0.93, new THREE.Color(0.81608, 0.18462, 0.01809)],\n\t\t[1.00, new THREE.Color(0.66449, 0.08436, 0.00424)],\n\t],\n\tRAINBOW: [\n\t\t[0, new THREE.Color(0.278, 0, 0.714)],\n\t\t[1 / 6, new THREE.Color(0, 0, 1)],\n\t\t[2 / 6, new THREE.Color(0, 1, 1)],\n\t\t[3 / 6, new THREE.Color(0, 1, 0)],\n\t\t[4 / 6, new THREE.Color(1, 1, 0)],\n\t\t[5 / 6, new THREE.Color(1, 0.64, 0)],\n\t\t[1, new THREE.Color(1, 0, 0)]\n\t],\n\tCONTOUR: [\n\t\t[0.00, new THREE.Color(0, 0, 0)],\n\t\t[0.03, new THREE.Color(0, 0, 0)],\n\t\t[0.04, new THREE.Color(1, 1, 1)],\n\t\t[1.00, new THREE.Color(1, 1, 1)]\n\t],\n};\n\n\nexport {Gradients};\n","let Shaders = {};\n\nShaders[\"pointcloud.vs\"] = `\nprecision highp float;\nprecision highp int;\n\n#define max_clip_polygons 8\n#define PI 3.141592653589793\n\nattribute vec3 position;\nattribute vec3 color;\nattribute float intensity;\nattribute float classification;\nattribute float returnNumber;\nattribute float numberOfReturns;\nattribute float pointSourceID;\nattribute vec4 indices;\nattribute float spacing;\nattribute float gpsTime;\nattribute vec3 normal;\nattribute float aExtra;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat4 uViewInv;\n\nuniform float uScreenWidth;\nuniform float uScreenHeight;\nuniform float fov;\nuniform float near;\nuniform float far;\n\nuniform bool uDebug;\n\nuniform bool uUseOrthographicCamera;\nuniform float uOrthoWidth;\nuniform float uOrthoHeight;\n\n#define CLIPTASK_NONE 0\n#define CLIPTASK_HIGHLIGHT 1\n#define CLIPTASK_SHOW_INSIDE 2\n#define CLIPTASK_SHOW_OUTSIDE 3\n\n#define CLIPMETHOD_INSIDE_ANY 0\n#define CLIPMETHOD_INSIDE_ALL 1\n\nuniform int clipTask;\nuniform int clipMethod;\n#if defined(num_clipboxes) && num_clipboxes > 0\n\tuniform mat4 clipBoxes[num_clipboxes];\n#endif\n\n#if defined(num_clipspheres) && num_clipspheres > 0\n\tuniform mat4 uClipSpheres[num_clipspheres];\n#endif\n\n#if defined(num_clippolygons) && num_clippolygons > 0\n\tuniform int uClipPolygonVCount[num_clippolygons];\n\tuniform vec3 uClipPolygonVertices[num_clippolygons * 8];\n\tuniform mat4 uClipPolygonWVP[num_clippolygons];\n#endif\n\n\nuniform float size;\nuniform float minSize;\nuniform float maxSize;\n\nuniform float uPCIndex;\nuniform float uOctreeSpacing;\nuniform float uNodeSpacing;\nuniform float uOctreeSize;\nuniform vec3 uBBSize;\nuniform float uLevel;\nuniform float uVNStart;\nuniform bool uIsLeafNode;\n\nuniform vec3 uColor;\nuniform float uOpacity;\n\nuniform vec2 elevationRange;\nuniform vec2 intensityRange;\n\nuniform vec2 uFilterReturnNumberRange;\nuniform vec2 uFilterNumberOfReturnsRange;\nuniform vec2 uFilterPointSourceIDClipRange;\nuniform vec2 uFilterGPSTimeClipRange;\nuniform float uGpsScale;\nuniform float uGpsOffset;\n\nuniform vec2 uNormalizedGpsBufferRange;\n\nuniform vec3 uIntensity_gbc;\nuniform vec3 uRGB_gbc;\nuniform vec3 uExtra_gbc;\n\nuniform float uTransition;\nuniform float wRGB;\nuniform float wIntensity;\nuniform float wElevation;\nuniform float wClassification;\nuniform float wReturnNumber;\nuniform float wSourceID;\n\nuniform vec2 uExtraNormalizedRange;\nuniform vec2 uExtraRange;\nuniform float uExtraScale;\nuniform float uExtraOffset;\n\nuniform vec3 uShadowColor;\n\nuniform sampler2D visibleNodes;\nuniform sampler2D gradient;\nuniform sampler2D classificationLUT;\n\n#if defined(color_type_matcap)\nuniform sampler2D matcapTextureUniform;\n#endif\nuniform bool backfaceCulling;\n\n#if defined(num_shadowmaps) && num_shadowmaps > 0\nuniform sampler2D uShadowMap[num_shadowmaps];\nuniform mat4 uShadowWorldView[num_shadowmaps];\nuniform mat4 uShadowProj[num_shadowmaps];\n#endif\n\nvarying vec3\tvColor;\nvarying float\tvLogDepth;\nvarying vec3\tvViewPosition;\nvarying float \tvRadius;\nvarying float \tvPointSize;\n\n\nfloat round(float number){\n\treturn floor(number + 0.5);\n}\n\n// \n// ### ######## ### ######## ######## #### ## ## ######## ###### #### ######## ######## ###### \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ######## ## ## ## ## ###### ###### ## ## ###### ###### \n// ######### ## ## ######### ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ######## ## ## ## ## #### ### ######## ###### #### ######## ######## ###### \n// \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\n\n// ---------------------\n// OCTREE\n// ---------------------\n\n#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_octree)\n/**\n * number of 1-bits up to inclusive index position\n * number is treated as if it were an integer in the range 0-255\n *\n */\nint numberOfOnes(int number, int index){\n\tint numOnes = 0;\n\tint tmp = 128;\n\tfor(int i = 7; i >= 0; i--){\n\t\t\n\t\tif(number >= tmp){\n\t\t\tnumber = number - tmp;\n\n\t\t\tif(i <= index){\n\t\t\t\tnumOnes++;\n\t\t\t}\n\t\t}\n\t\t\n\t\ttmp = tmp / 2;\n\t}\n\n\treturn numOnes;\n}\n\n\n/**\n * checks whether the bit at index is 1\n * number is treated as if it were an integer in the range 0-255\n *\n */\nbool isBitSet(int number, int index){\n\n\t// weird multi else if due to lack of proper array, int and bitwise support in WebGL 1.0\n\tint powi = 1;\n\tif(index == 0){\n\t\tpowi = 1;\n\t}else if(index == 1){\n\t\tpowi = 2;\n\t}else if(index == 2){\n\t\tpowi = 4;\n\t}else if(index == 3){\n\t\tpowi = 8;\n\t}else if(index == 4){\n\t\tpowi = 16;\n\t}else if(index == 5){\n\t\tpowi = 32;\n\t}else if(index == 6){\n\t\tpowi = 64;\n\t}else if(index == 7){\n\t\tpowi = 128;\n\t}else{\n\t\treturn false;\n\t}\n\n\tint ndp = number / powi;\n\n\treturn mod(float(ndp), 2.0) != 0.0;\n}\n\n\n/**\n * find the LOD at the point position\n */\nfloat getLOD(){\n\t\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tint iOffset = int(uVNStart);\n\tfloat depth = uLevel;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tint index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\n\t\tint mask = int(round(value.r * 255.0));\n\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tint advanceG = int(round(value.g * 255.0)) * 256;\n\t\t\tint advanceB = int(round(value.b * 255.0));\n\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\n\t\t\tint advance = advanceG + advanceB + advanceChild;\n\n\t\t\tiOffset = iOffset + advance;\n\t\t\t\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\t//return value.a * 255.0;\n\n\t\t\tfloat lodOffset = (255.0 * value.a) / 10.0 - 10.0;\n\n\t\t\treturn depth + lodOffset;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn depth;\n}\n\nfloat getSpacing(){\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tint iOffset = int(uVNStart);\n\tfloat depth = uLevel;\n\tfloat spacing = uNodeSpacing;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tint index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\n\t\tint mask = int(round(value.r * 255.0));\n\t\tfloat spacingFactor = value.a;\n\n\t\tif(i > 0.0){\n\t\t\tspacing = spacing / (255.0 * spacingFactor);\n\t\t}\n\t\t\n\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tint advanceG = int(round(value.g * 255.0)) * 256;\n\t\t\tint advanceB = int(round(value.b * 255.0));\n\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\n\t\t\tint advance = advanceG + advanceB + advanceChild;\n\n\t\t\tiOffset = iOffset + advance;\n\n\t\t\t//spacing = spacing / (255.0 * spacingFactor);\n\t\t\t//spacing = spacing / 3.0;\n\t\t\t\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\treturn spacing;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn spacing;\n}\n\nfloat getPointSizeAttenuation(){\n\treturn pow(2.0, getLOD());\n}\n\n\n#endif\n\n\n// ---------------------\n// KD-TREE\n// ---------------------\n\n#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_kdtree)\n\nfloat getLOD(){\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tfloat iOffset = 0.0;\n\tfloat depth = 0.0;\n\t\t\n\t\t\n\tvec3 size = uBBSize;\t\n\tvec3 pos = position;\n\t\t\n\tfor(float i = 0.0; i <= 1000.0; i++){\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0));\n\t\t\n\t\tint children = int(value.r * 255.0);\n\t\tfloat next = value.g * 255.0;\n\t\tint split = int(value.b * 255.0);\n\t\t\n\t\tif(next == 0.0){\n\t\t \treturn depth;\n\t\t}\n\t\t\n\t\tvec3 splitv = vec3(0.0, 0.0, 0.0);\n\t\tif(split == 1){\n\t\t\tsplitv.x = 1.0;\n\t\t}else if(split == 2){\n\t\t \tsplitv.y = 1.0;\n\t\t}else if(split == 4){\n\t\t \tsplitv.z = 1.0;\n\t\t}\n\t\t\n\t\tiOffset = iOffset + next;\n\t\t\n\t\tfloat factor = length(pos * splitv / size);\n\t\tif(factor < 0.5){\n\t\t\t// left\n\t\tif(children == 0 || children == 2){\n\t\t\t\treturn depth;\n\t\t\t}\n\t\t}else{\n\t\t\t// right\n\t\t\tpos = pos - size * splitv * 0.5;\n\t\t\tif(children == 0 || children == 1){\n\t\t\t\treturn depth;\n\t\t\t}\n\t\t\tif(children == 3){\n\t\t\t\tiOffset = iOffset + 1.0;\n\t\t\t}\n\t\t}\n\t\tsize = size * ((1.0 - (splitv + 1.0) / 2.0) + 0.5);\n\t\t\n\t\tdepth++;\n\t}\n\t\t\n\t\t\n\treturn depth;\t\n}\n\nfloat getPointSizeAttenuation(){\n\treturn 0.5 * pow(1.3, getLOD());\n}\n\n#endif\n\n\n\n// \n// ### ######## ######## ######## #### ######## ## ## ######## ######## ###### \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ######## ## ######## ## ## ## ###### ###### \n// ######### ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## #### ######## ####### ## ######## ###### \n// \n\n\n\n// formula adapted from: http://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/image-processing-algorithms-part-5-contrast-adjustment/\nfloat getContrastFactor(float contrast){\n\treturn (1.0158730158730156 * (contrast + 1.0)) / (1.0158730158730156 - contrast);\n}\n\nvec3 getRGB(){\n\tvec3 rgb = color;\n\t\n\trgb = pow(rgb, vec3(uRGB_gbc.x));\n\trgb = rgb + uRGB_gbc.y;\n\trgb = (rgb - 0.5) * getContrastFactor(uRGB_gbc.z) + 0.5;\n\trgb = clamp(rgb, 0.0, 1.0);\n\n\treturn rgb;\n}\n\nfloat getIntensity(){\n\tfloat w = (intensity - intensityRange.x) / (intensityRange.y - intensityRange.x);\n\tw = pow(w, uIntensity_gbc.x);\n\tw = w + uIntensity_gbc.y;\n\tw = (w - 0.5) * getContrastFactor(uIntensity_gbc.z) + 0.5;\n\tw = clamp(w, 0.0, 1.0);\n\n\treturn w;\n}\n\nvec3 getGpsTime(){\n\n\tfloat w = (gpsTime + uGpsOffset) * uGpsScale;\n\n\n\tvec3 c = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n\n\n\t// vec2 r = uNormalizedGpsBufferRange;\n\t// float w = gpsTime * (r.y - r.x) + r.x;\n\t// w = clamp(w, 0.0, 1.0);\n\t// vec3 c = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t\n\treturn c;\n}\n\nvec3 getElevation(){\n\tvec4 world = modelMatrix * vec4( position, 1.0 );\n\tfloat w = (world.z - elevationRange.x) / (elevationRange.y - elevationRange.x);\n\tvec3 cElevation = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t\n\treturn cElevation;\n}\n\nvec4 getClassification(){\n\tvec2 uv = vec2(classification / 255.0, 0.5);\n\tvec4 classColor = texture2D(classificationLUT, uv);\n\t\n\treturn classColor;\n}\n\nvec3 getReturns(){\n\n\t// 0b 00_000_111\n\tfloat rn = mod(returnNumber, 8.0);\n\t// 0b 00_111_000\n\tfloat nr = mod(returnNumber / 8.0, 8.0);\n\n\tif(nr <= 1.0){\n\t\treturn vec3(1.0, 0.0, 0.0);\n\t}else{\n\t\treturn vec3(0.0, 1.0, 0.0);\n\t}\n\n\t// return vec3(nr / 4.0, 0.0, 0.0);\n\n\t// if(nr == 1.0){\n\t// \treturn vec3(1.0, 1.0, 0.0);\n\t// }else{\n\t// \tif(rn == 1.0){\n\t// \t\treturn vec3(1.0, 0.0, 0.0);\n\t// \t}else if(rn == nr){\n\t// \t\treturn vec3(0.0, 0.0, 1.0);\n\t// \t}else{\n\t// \t\treturn vec3(0.0, 1.0, 0.0);\n\t// \t}\n\t// }\n\n\t// if(numberOfReturns == 1.0){\n\t// \treturn vec3(1.0, 1.0, 0.0);\n\t// }else{\n\t// \tif(returnNumber == 1.0){\n\t// \t\treturn vec3(1.0, 0.0, 0.0);\n\t// \t}else if(returnNumber == numberOfReturns){\n\t// \t\treturn vec3(0.0, 0.0, 1.0);\n\t// \t}else{\n\t// \t\treturn vec3(0.0, 1.0, 0.0);\n\t// \t}\n\t// }\n}\n\nvec3 getReturnNumber(){\n\tif(numberOfReturns == 1.0){\n\t\treturn vec3(1.0, 1.0, 0.0);\n\t}else{\n\t\tif(returnNumber == 1.0){\n\t\t\treturn vec3(1.0, 0.0, 0.0);\n\t\t}else if(returnNumber == numberOfReturns){\n\t\t\treturn vec3(0.0, 0.0, 1.0);\n\t\t}else{\n\t\t\treturn vec3(0.0, 1.0, 0.0);\n\t\t}\n\t}\n}\n\nvec3 getNumberOfReturns(){\n\tfloat value = numberOfReturns;\n\n\tfloat w = value / 6.0;\n\n\tvec3 color = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n\n\treturn color;\n}\n\nvec3 getSourceID(){\n\tfloat w = mod(pointSourceID, 10.0) / 10.0;\n\treturn texture2D(gradient, vec2(w,1.0 - w)).rgb;\n}\n\nvec3 getCompositeColor(){\n\tvec3 c;\n\tfloat w;\n\n\tc += wRGB * getRGB();\n\tw += wRGB;\n\t\n\tc += wIntensity * getIntensity() * vec3(1.0, 1.0, 1.0);\n\tw += wIntensity;\n\t\n\tc += wElevation * getElevation();\n\tw += wElevation;\n\t\n\tc += wReturnNumber * getReturnNumber();\n\tw += wReturnNumber;\n\t\n\tc += wSourceID * getSourceID();\n\tw += wSourceID;\n\t\n\tvec4 cl = wClassification * getClassification();\n\tc += cl.a * cl.rgb;\n\tw += wClassification * cl.a;\n\n\tc = c / w;\n\t\n\tif(w == 0.0){\n\t\t//c = color;\n\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t}\n\t\n\treturn c;\n}\n\n\nvec3 getNormal(){\n\t//vec3 n_hsv = vec3( modelMatrix * vec4( normal, 0.0 )) * 0.5 + 0.5; // (n_world.xyz + vec3(1.,1.,1.)) / 2.;\n\tvec3 n_view = normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) );\n\treturn n_view;\n}\nbool applyBackfaceCulling() {\n\t// Black not facing vertices / Backface culling\n\tvec3 e = normalize(vec3(modelViewMatrix * vec4( position, 1. )));\n\tvec3 n = getNormal(); // normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) );\n\n\tif((uUseOrthographicCamera && n.z <= 0.) || (!uUseOrthographicCamera && dot( n, e ) >= 0.)) { \n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}\n\n#if defined(color_type_matcap)\n// Matcap Material\nvec3 getMatcap(){ \n\tvec3 eye = normalize( vec3( modelViewMatrix * vec4( position, 1. ) ) ); \n\tif(uUseOrthographicCamera) { \n\t\teye = vec3(0., 0., -1.);\n\t}\n\tvec3 r_en = reflect( eye, getNormal() ); // or r_en = e - 2. * dot( n, e ) * n;\n\tfloat m = 2. * sqrt(pow( r_en.x, 2. ) + pow( r_en.y, 2. ) + pow( r_en.z + 1., 2. ));\n\tvec2 vN = r_en.xy / m + .5;\n\treturn texture2D(matcapTextureUniform, vN).rgb; \n}\n#endif\n\nvec3 getExtra(){\n\n\tfloat w = (aExtra + uExtraOffset) * uExtraScale;\n\tw = clamp(w, 0.0, 1.0);\n\n\tvec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\n\t// vec2 r = uExtraNormalizedRange;\n\n\t// float w = aExtra * (r.y - r.x) + r.x;\n\n\t// w = (w - uExtraRange.x) / (uExtraRange.y - uExtraRange.x);\n\n\t// w = clamp(w, 0.0, 1.0);\n\n\t// vec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\n\treturn color;\n}\n\nvec3 getColor(){\n\tvec3 color;\n\t\n\t#ifdef color_type_rgba\n\t\tcolor = getRGB();\n\t#elif defined color_type_height || defined color_type_elevation\n\t\tcolor = getElevation();\n\t#elif defined color_type_rgb_height\n\t\tvec3 cHeight = getElevation();\n\t\tcolor = (1.0 - uTransition) * getRGB() + uTransition * cHeight;\n\t#elif defined color_type_depth\n\t\tfloat linearDepth = gl_Position.w;\n\t\tfloat expDepth = (gl_Position.z / gl_Position.w) * 0.5 + 0.5;\n\t\tcolor = vec3(linearDepth, expDepth, 0.0);\n\t\t//color = vec3(1.0, 0.5, 0.3);\n\t#elif defined color_type_intensity\n\t\tfloat w = getIntensity();\n\t\tcolor = vec3(w, w, w);\n\t#elif defined color_type_gps_time\n\t\tcolor = getGpsTime();\n\t#elif defined color_type_intensity_gradient\n\t\tfloat w = getIntensity();\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t#elif defined color_type_color\n\t\tcolor = uColor;\n\t#elif defined color_type_level_of_detail\n\t\tfloat depth = getLOD();\n\t\tfloat w = depth / 10.0;\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t#elif defined color_type_indices\n\t\tcolor = indices.rgb;\n\t#elif defined color_type_classification\n\t\tvec4 cl = getClassification(); \n\t\tcolor = cl.rgb;\n\t#elif defined color_type_return_number\n\t\tcolor = getReturnNumber();\n\t#elif defined color_type_returns\n\t\tcolor = getReturns();\n\t#elif defined color_type_number_of_returns\n\t\tcolor = getNumberOfReturns();\n\t#elif defined color_type_source_id\n\t\tcolor = getSourceID();\n\t#elif defined color_type_point_source_id\n\t\tcolor = getSourceID();\n\t#elif defined color_type_normal\n\t\tcolor = (modelMatrix * vec4(normal, 0.0)).xyz;\n\t#elif defined color_type_phong\n\t\tcolor = color;\n\t#elif defined color_type_composite\n\t\tcolor = getCompositeColor();\n\t#elif defined color_type_matcap\n\t\tcolor = getMatcap();\n\t#else \n\t\tcolor = getExtra();\n\t#endif\n\t\n\tif (backfaceCulling && applyBackfaceCulling()) {\n\t\tcolor = vec3(0.);\n\t}\n\n\treturn color;\n}\n\nfloat getPointSize(){\n\tfloat pointSize = 1.0;\n\t\n\tfloat slope = tan(fov / 2.0);\n\tfloat projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z);\n\t\n\tfloat r = uOctreeSpacing * 1.7;\n\tvRadius = r;\n\t#if defined fixed_point_size\n\t\tpointSize = size;\n\t#elif defined attenuated_point_size\n\t\tif(uUseOrthographicCamera){\n\t\t\tpointSize = size;\n\t\t}else{\n\t\t\tpointSize = size * spacing * projFactor;\n\t\t\t//pointSize = pointSize * projFactor;\n\t\t}\n\t#elif defined adaptive_point_size\n\t\tif(uUseOrthographicCamera) {\n\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth;\n\t\t} else {\n\n\t\t\t// float leafSpacing = 0.122069092 * 8.0;\n\t\t\t\n\t\t\t// bool isLeafNode = getLOD() == 1000.0;\n\t\t\t// if(isLeafNode){\n\t\t\t// \t// pointSize = size * spacing * projFactor;\n\n\t\t\t// \tfloat worldSpaceSize = size * leafSpacing;\n\t\t\t// \tpointSize = worldSpaceSize * projFactor;\n\t\t\t// }else{\n\t\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\n\n\t\t\t\t// minimum world space size\n\t\t\t\t// worldSpaceSize = max(worldSpaceSize, leafSpacing);\n\n\t\t\t\tpointSize = worldSpaceSize * projFactor;\n\t\t\t// }\n\t\t}\n\t#endif\n\n\tpointSize = max(minSize, pointSize);\n\tpointSize = min(maxSize, pointSize);\n\t\n\tvRadius = pointSize / projFactor;\n\n\treturn pointSize;\n}\n\n#if defined(num_clippolygons) && num_clippolygons > 0\nbool pointInClipPolygon(vec3 point, int polyIdx) {\n\n\tmat4 wvp = uClipPolygonWVP[polyIdx];\n\t//vec4 screenClipPos = uClipPolygonVP[polyIdx] * modelMatrix * vec4(point, 1.0);\n\t//screenClipPos.xy = screenClipPos.xy / screenClipPos.w * 0.5 + 0.5;\n\n\tvec4 pointNDC = wvp * vec4(point, 1.0);\n\tpointNDC.xy = pointNDC.xy / pointNDC.w;\n\n\tint j = uClipPolygonVCount[polyIdx] - 1;\n\tbool c = false;\n\tfor(int i = 0; i < 8; i++) {\n\t\tif(i == uClipPolygonVCount[polyIdx]) {\n\t\t\tbreak;\n\t\t}\n\n\t\t//vec4 verti = wvp * vec4(uClipPolygonVertices[polyIdx * 8 + i], 1);\n\t\t//vec4 vertj = wvp * vec4(uClipPolygonVertices[polyIdx * 8 + j], 1);\n\n\t\t//verti.xy = verti.xy / verti.w;\n\t\t//vertj.xy = vertj.xy / vertj.w;\n\n\t\t//verti.xy = verti.xy / verti.w * 0.5 + 0.5;\n\t\t//vertj.xy = vertj.xy / vertj.w * 0.5 + 0.5;\n\n\t\tvec3 verti = uClipPolygonVertices[polyIdx * 8 + i];\n\t\tvec3 vertj = uClipPolygonVertices[polyIdx * 8 + j];\n\n\t\tif( ((verti.y > pointNDC.y) != (vertj.y > pointNDC.y)) && \n\t\t\t(pointNDC.x < (vertj.x-verti.x) * (pointNDC.y-verti.y) / (vertj.y-verti.y) + verti.x) ) {\n\t\t\tc = !c;\n\t\t}\n\t\tj = i;\n\t}\n\n\treturn c;\n}\n#endif\n\nvoid doClipping(){\n\n\t{\n\t\tvec4 cl = getClassification(); \n\t\tif(cl.a == 0.0){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\n\t#if defined(clip_return_number_enabled)\n\t{ // return number filter\n\t\tvec2 range = uFilterReturnNumberRange;\n\t\tif(returnNumber < range.x || returnNumber > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_number_of_returns_enabled)\n\t{ // number of return filter\n\t\tvec2 range = uFilterNumberOfReturnsRange;\n\t\tif(numberOfReturns < range.x || numberOfReturns > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_gps_enabled)\n\t{ // GPS time filter\n\t\tfloat time = (gpsTime + uGpsOffset) * uGpsScale;\n\t\tvec2 range = uFilterGPSTimeClipRange;\n\n\t\tif(time < range.x || time > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_point_source_id_enabled)\n\t{ // point source id filter\n\t\tvec2 range = uFilterPointSourceIDClipRange;\n\t\tif(pointSourceID < range.x || pointSourceID > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\tint clipVolumesCount = 0;\n\tint insideCount = 0;\n\n\t#if defined(num_clipboxes) && num_clipboxes > 0\n\t\tfor(int i = 0; i < num_clipboxes; i++){\n\t\t\tvec4 clipPosition = clipBoxes[i] * modelMatrix * vec4( position, 1.0 );\n\t\t\tbool inside = -0.5 <= clipPosition.x && clipPosition.x <= 0.5;\n\t\t\tinside = inside && -0.5 <= clipPosition.y && clipPosition.y <= 0.5;\n\t\t\tinside = inside && -0.5 <= clipPosition.z && clipPosition.z <= 0.5;\n\n\t\t\tinsideCount = insideCount + (inside ? 1 : 0);\n\t\t\tclipVolumesCount++;\n\t\t}\t\n\t#endif\n\n\t#if defined(num_clippolygons) && num_clippolygons > 0\n\t\tfor(int i = 0; i < num_clippolygons; i++) {\n\t\t\tbool inside = pointInClipPolygon(position, i);\n\n\t\t\tinsideCount = insideCount + (inside ? 1 : 0);\n\t\t\tclipVolumesCount++;\n\t\t}\n\t#endif\n\n\tbool insideAny = insideCount > 0;\n\tbool insideAll = (clipVolumesCount > 0) && (clipVolumesCount == insideCount);\n\n\tif(clipMethod == CLIPMETHOD_INSIDE_ANY){\n\t\tif(insideAny && clipTask == CLIPTASK_HIGHLIGHT){\n\t\t\tvColor.r += 0.5;\n\t\t}else if(!insideAny && clipTask == CLIPTASK_SHOW_INSIDE){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}else if(insideAny && clipTask == CLIPTASK_SHOW_OUTSIDE){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}\n\t}else if(clipMethod == CLIPMETHOD_INSIDE_ALL){\n\t\tif(insideAll && clipTask == CLIPTASK_HIGHLIGHT){\n\t\t\tvColor.r += 0.5;\n\t\t}else if(!insideAll && clipTask == CLIPTASK_SHOW_INSIDE){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}else if(insideAll && clipTask == CLIPTASK_SHOW_OUTSIDE){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}\n\t}\n}\n\n\n\n// \n// ## ## ### #### ## ## \n// ### ### ## ## ## ### ## \n// #### #### ## ## ## #### ## \n// ## ### ## ## ## ## ## ## ## \n// ## ## ######### ## ## #### \n// ## ## ## ## ## ## ### \n// ## ## ## ## #### ## ## \n//\n\nvoid main() {\n\tvec4 mvPosition = modelViewMatrix * vec4(position, 1.0 );\n\tvViewPosition = mvPosition.xyz;\n\tgl_Position = projectionMatrix * mvPosition;\n\tvLogDepth = log2(-mvPosition.z);\n\n\t// POINT SIZE\n\tfloat pointSize = getPointSize();\n\tgl_PointSize = pointSize;\n\tvPointSize = pointSize;\n\n\t// COLOR\n\tvColor = getColor();\n\n\t//gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n\t//gl_Position = vec4(position.xzy / 1000.0, 1.0 );\n\n\t//gl_PointSize = 5.0;\n\t//vColor = vec3(1.0, 1.0, 1.0);\n\n\t// only for \"replacing\" approaches\n\t// if(getLOD() != uLevel){\n\t// \tgl_Position = vec4(10.0, 10.0, 10.0, 1.0);\n\t// }\n\n\n\t#if defined hq_depth_pass\n\t\tfloat originalDepth = gl_Position.w;\n\t\tfloat adjustedDepth = originalDepth + 2.0 * vRadius;\n\t\tfloat adjust = adjustedDepth / originalDepth;\n\n\t\tmvPosition.xyz = mvPosition.xyz * adjust;\n\t\tgl_Position = projectionMatrix * mvPosition;\n\t#endif\n\n\n\t// CLIPPING\n\tdoClipping();\n\n\t#if defined(num_clipspheres) && num_clipspheres > 0\n\t\tfor(int i = 0; i < num_clipspheres; i++){\n\t\t\tvec4 sphereLocal = uClipSpheres[i] * mvPosition;\n\n\t\t\tfloat distance = length(sphereLocal.xyz);\n\n\t\t\tif(distance < 1.0){\n\t\t\t\tfloat w = distance;\n\t\t\t\tvec3 cGradient = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n\t\t\t\t\n\t\t\t\tvColor = cGradient;\n\t\t\t\t//vColor = cGradient * 0.7 + vColor * 0.3;\n\t\t\t}\n\t\t}\n\t#endif\n\n\t#if defined(num_shadowmaps) && num_shadowmaps > 0\n\n\t\tconst float sm_near = 0.1;\n\t\tconst float sm_far = 10000.0;\n\n\t\tfor(int i = 0; i < num_shadowmaps; i++){\n\t\t\tvec3 viewPos = (uShadowWorldView[i] * vec4(position, 1.0)).xyz;\n\t\t\tfloat distanceToLight = abs(viewPos.z);\n\t\t\t\n\t\t\tvec4 projPos = uShadowProj[i] * uShadowWorldView[i] * vec4(position, 1);\n\t\t\tvec3 nc = projPos.xyz / projPos.w;\n\t\t\t\n\t\t\tfloat u = nc.x * 0.5 + 0.5;\n\t\t\tfloat v = nc.y * 0.5 + 0.5;\n\n\t\t\tvec2 sampleStep = vec2(1.0 / (2.0*1024.0), 1.0 / (2.0*1024.0)) * 1.5;\n\t\t\tvec2 sampleLocations[9];\n\t\t\tsampleLocations[0] = vec2(0.0, 0.0);\n\t\t\tsampleLocations[1] = sampleStep;\n\t\t\tsampleLocations[2] = -sampleStep;\n\t\t\tsampleLocations[3] = vec2(sampleStep.x, -sampleStep.y);\n\t\t\tsampleLocations[4] = vec2(-sampleStep.x, sampleStep.y);\n\n\t\t\tsampleLocations[5] = vec2(0.0, sampleStep.y);\n\t\t\tsampleLocations[6] = vec2(0.0, -sampleStep.y);\n\t\t\tsampleLocations[7] = vec2(sampleStep.x, 0.0);\n\t\t\tsampleLocations[8] = vec2(-sampleStep.x, 0.0);\n\n\t\t\tfloat visibleSamples = 0.0;\n\t\t\tfloat numSamples = 0.0;\n\n\t\t\tfloat bias = vRadius * 2.0;\n\n\t\t\tfor(int j = 0; j < 9; j++){\n\t\t\t\tvec4 depthMapValue = texture2D(uShadowMap[i], vec2(u, v) + sampleLocations[j]);\n\n\t\t\t\tfloat linearDepthFromSM = depthMapValue.x + bias;\n\t\t\t\tfloat linearDepthFromViewer = distanceToLight;\n\n\t\t\t\tif(linearDepthFromSM > linearDepthFromViewer){\n\t\t\t\t\tvisibleSamples += 1.0;\n\t\t\t\t}\n\n\t\t\t\tnumSamples += 1.0;\n\t\t\t}\n\n\t\t\tfloat visibility = visibleSamples / numSamples;\n\n\t\t\tif(u < 0.0 || u > 1.0 || v < 0.0 || v > 1.0 || nc.x < -1.0 || nc.x > 1.0 || nc.y < -1.0 || nc.y > 1.0 || nc.z < -1.0 || nc.z > 1.0){\n\t\t\t\t//vColor = vec3(0.0, 0.0, 0.2);\n\t\t\t}else{\n\t\t\t\t//vColor = vec3(1.0, 1.0, 1.0) * visibility + vec3(1.0, 1.0, 1.0) * vec3(0.5, 0.0, 0.0) * (1.0 - visibility);\n\t\t\t\tvColor = vColor * visibility + vColor * uShadowColor * (1.0 - visibility);\n\t\t\t}\n\n\n\t\t}\n\n\t#endif\n}\n`\n\nShaders[\"pointcloud.fs\"] = `\n#if defined paraboloid_point_shape\n\t#extension GL_EXT_frag_depth : enable\n#endif\n\nprecision highp float;\nprecision highp int;\n\nuniform mat4 viewMatrix;\nuniform mat4 uViewInv;\nuniform mat4 uProjInv;\nuniform vec3 cameraPosition;\n\n\nuniform mat4 projectionMatrix;\nuniform float uOpacity;\n\nuniform float blendHardness;\nuniform float blendDepthSupplement;\nuniform float fov;\nuniform float uSpacing;\nuniform float near;\nuniform float far;\nuniform float uPCIndex;\nuniform float uScreenWidth;\nuniform float uScreenHeight;\n\nvarying vec3\tvColor;\nvarying float\tvLogDepth;\nvarying vec3\tvViewPosition;\nvarying float\tvRadius;\nvarying float \tvPointSize;\nvarying vec3 \tvPosition;\n\n\nfloat specularStrength = 1.0;\n\nvoid main() {\n\n\tvec3 color = vColor;\n\tfloat depth = gl_FragCoord.z;\n\n\t#if defined(circle_point_shape) || defined(paraboloid_point_shape) \n\t\tfloat u = 2.0 * gl_PointCoord.x - 1.0;\n\t\tfloat v = 2.0 * gl_PointCoord.y - 1.0;\n\t#endif\n\t\n\t#if defined(circle_point_shape) \n\t\tfloat cc = u*u + v*v;\n\t\tif(cc > 1.0){\n\t\t\tdiscard;\n\t\t}\n\t#endif\n\t\t\n\t#if defined color_type_indices\n\t\tgl_FragColor = vec4(color, uPCIndex / 255.0);\n\t#else\n\t\tgl_FragColor = vec4(color, uOpacity);\n\t#endif\n\n\t#if defined paraboloid_point_shape\n\t\tfloat wi = 0.0 - ( u*u + v*v);\n\t\tvec4 pos = vec4(vViewPosition, 1.0);\n\t\tpos.z += wi * vRadius;\n\t\tfloat linearDepth = -pos.z;\n\t\tpos = projectionMatrix * pos;\n\t\tpos = pos / pos.w;\n\t\tfloat expDepth = pos.z;\n\t\tdepth = (pos.z + 1.0) / 2.0;\n\t\tgl_FragDepthEXT = depth;\n\t\t\n\t\t#if defined(color_type_depth)\n\t\t\tcolor.r = linearDepth;\n\t\t\tcolor.g = expDepth;\n\t\t#endif\n\t\t\n\t\t#if defined(use_edl)\n\t\t\tgl_FragColor.a = log2(linearDepth);\n\t\t#endif\n\t\t\n\t#else\n\t\t#if defined(use_edl)\n\t\t\tgl_FragColor.a = vLogDepth;\n\t\t#endif\n\t#endif\n\n\t#if defined(weighted_splats)\n\t\tfloat distance = 2.0 * length(gl_PointCoord.xy - 0.5);\n\t\tfloat weight = max(0.0, 1.0 - distance);\n\t\tweight = pow(weight, 1.5);\n\n\t\tgl_FragColor.a = weight;\n\t\tgl_FragColor.xyz = gl_FragColor.xyz * weight;\n\t#endif\n\n\t//gl_FragColor = vec4(0.0, 0.7, 0.0, 1.0);\n\t\n}\n\n\n`\n\nShaders[\"pointcloud_sm.vs\"] = `\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec3 color;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\n\nuniform float uScreenWidth;\nuniform float uScreenHeight;\nuniform float near;\nuniform float far;\n\nuniform float uSpacing;\nuniform float uOctreeSize;\nuniform float uLevel;\nuniform float uVNStart;\n\nuniform sampler2D visibleNodes;\n\nvarying float vLinearDepth;\nvarying vec3 vColor;\n\n#define PI 3.141592653589793\n\n\n\n// ---------------------\n// OCTREE\n// ---------------------\n\n#if defined(adaptive_point_size)\n/**\n * number of 1-bits up to inclusive index position\n * number is treated as if it were an integer in the range 0-255\n *\n */\nfloat numberOfOnes(float number, float index){\n\tfloat tmp = mod(number, pow(2.0, index + 1.0));\n\tfloat numOnes = 0.0;\n\tfor(float i = 0.0; i < 8.0; i++){\n\t\tif(mod(tmp, 2.0) != 0.0){\n\t\t\tnumOnes++;\n\t\t}\n\t\ttmp = floor(tmp / 2.0);\n\t}\n\treturn numOnes;\n}\n\n\n/**\n * checks whether the bit at index is 1\n * number is treated as if it were an integer in the range 0-255\n *\n */\nbool isBitSet(float number, float index){\n\treturn mod(floor(number / pow(2.0, index)), 2.0) != 0.0;\n}\n\n\n/**\n * find the LOD at the point position\n */\nfloat getLOD(){\n\t\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tfloat iOffset = uVNStart;\n\tfloat depth = uLevel;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tfloat index = 4.0 * index3d.x + 2.0 * index3d.y + index3d.z;\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0));\n\t\tfloat mask = value.r * 255.0;\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tiOffset = iOffset + value.g * 255.0 * 256.0 + value.b * 255.0 + numberOfOnes(mask, index - 1.0);\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\treturn depth;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn depth;\n}\n\n#endif\n\nfloat getPointSize(){\n\tfloat pointSize = 1.0;\n\t\n\tfloat slope = tan(fov / 2.0);\n\tfloat projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z);\n\t\n\tfloat r = uOctreeSpacing * 1.5;\n\tvRadius = r;\n\t#if defined fixed_point_size\n\t\tpointSize = size;\n\t#elif defined attenuated_point_size\n\t\tif(uUseOrthographicCamera){\n\t\t\tpointSize = size;\t\t\t\n\t\t}else{\n\t\t\tpointSize = pointSize * projFactor;\n\t\t}\n\t#elif defined adaptive_point_size\n\t\tif(uUseOrthographicCamera) {\n\t\t\tfloat worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth;\n\t\t} else {\n\t\t\tfloat worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = worldSpaceSize * projFactor;\n\t\t}\n\t#endif\n\n\tpointSize = max(minSize, pointSize);\n\tpointSize = min(maxSize, pointSize);\n\t\n\tvRadius = pointSize / projFactor;\n\n\treturn pointSize;\n}\n\n\nvoid main() {\n\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tvLinearDepth = gl_Position.w;\n\n\tfloat pointSize = getPointSize();\n\tgl_PointSize = pointSize;\n\n}\n`\n\nShaders[\"pointcloud_sm.fs\"] = `\nprecision mediump float;\nprecision mediump int;\n\nvarying vec3 vColor;\nvarying float vLinearDepth;\n\nvoid main() {\n\n\t//gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n\t//gl_FragColor = vec4(vColor, 1.0);\n\t//gl_FragColor = vec4(vLinearDepth, pow(vLinearDepth, 2.0), 0.0, 1.0);\n\tgl_FragColor = vec4(vLinearDepth, vLinearDepth / 30.0, vLinearDepth / 30.0, 1.0);\n\t\n}\n\n\n`\n\nShaders[\"normalize.vs\"] = `\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec2 uv;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelViewMatrix;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n}`\n\nShaders[\"normalize.fs\"] = `\n#extension GL_EXT_frag_depth : enable\n\nprecision mediump float;\nprecision mediump int;\n\nuniform sampler2D uWeightMap;\nuniform sampler2D uDepthMap;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tfloat depth = texture2D(uDepthMap, vUv).r;\n\t\n\tif(depth >= 1.0){\n\t\tdiscard;\n\t}\n\n\tgl_FragColor = vec4(depth, 1.0, 0.0, 1.0);\n\n\tvec4 color = texture2D(uWeightMap, vUv); \n\tcolor = color / color.w;\n\t\n\tgl_FragColor = vec4(color.xyz, 1.0); \n\t\n\tgl_FragDepthEXT = depth;\n\n\n}`\n\nShaders[\"normalize_and_edl.fs\"] = `\n#extension GL_EXT_frag_depth : enable\n\n// \n// adapted from the EDL shader code from Christian Boucheny in cloud compare:\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\n//\n\nprecision mediump float;\nprecision mediump int;\n\nuniform sampler2D uWeightMap;\nuniform sampler2D uEDLMap;\nuniform sampler2D uDepthMap;\n\nuniform float screenWidth;\nuniform float screenHeight;\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\nuniform float edlStrength;\nuniform float radius;\n\nvarying vec2 vUv;\n\nfloat response(float depth){\n\tvec2 uvRadius = radius / vec2(screenWidth, screenHeight);\n\t\n\tfloat sum = 0.0;\n\t\n\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\n\t\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\n\t\t\n\t\tfloat neighbourDepth = texture2D(uEDLMap, uvNeighbor).a;\n\n\t\tif(neighbourDepth != 0.0){\n\t\t\tif(depth == 0.0){\n\t\t\t\tsum += 100.0;\n\t\t\t}else{\n\t\t\t\tsum += max(0.0, depth - neighbourDepth);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sum / float(NEIGHBOUR_COUNT);\n}\n\nvoid main() {\n\n\tfloat edlDepth = texture2D(uEDLMap, vUv).a;\n\tfloat res = response(edlDepth);\n\tfloat shade = exp(-res * 300.0 * edlStrength);\n\n\tfloat depth = texture2D(uDepthMap, vUv).r;\n\tif(depth >= 1.0 && res == 0.0){\n\t\tdiscard;\n\t}\n\t\n\tvec4 color = texture2D(uWeightMap, vUv); \n\tcolor = color / color.w;\n\tcolor = color * shade;\n\n\tgl_FragColor = vec4(color.xyz, 1.0); \n\n\tgl_FragDepthEXT = depth;\n}`\n\nShaders[\"edl.vs\"] = `\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec2 uv;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelViewMatrix;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\t\n\tvec4 mvPosition = modelViewMatrix * vec4(position,1.0);\n\n\tgl_Position = projectionMatrix * mvPosition;\n}`\n\nShaders[\"edl.fs\"] = `\n#extension GL_EXT_frag_depth : enable\n\n// \n// adapted from the EDL shader code from Christian Boucheny in cloud compare:\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\n//\n\nprecision mediump float;\nprecision mediump int;\n\nuniform float screenWidth;\nuniform float screenHeight;\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\nuniform float edlStrength;\nuniform float radius;\nuniform float opacity;\n\nuniform float uNear;\nuniform float uFar;\n\nuniform mat4 uProj;\n\nuniform sampler2D uEDLColor;\nuniform sampler2D uEDLDepth;\n\nvarying vec2 vUv;\n\nfloat response(float depth){\n\tvec2 uvRadius = radius / vec2(screenWidth, screenHeight);\n\t\n\tfloat sum = 0.0;\n\t\n\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\n\t\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\n\t\t\n\t\tfloat neighbourDepth = texture2D(uEDLColor, uvNeighbor).a;\n\t\tneighbourDepth = (neighbourDepth == 1.0) ? 0.0 : neighbourDepth;\n\n\t\tif(neighbourDepth != 0.0){\n\t\t\tif(depth == 0.0){\n\t\t\t\tsum += 100.0;\n\t\t\t}else{\n\t\t\t\tsum += max(0.0, depth - neighbourDepth);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sum / float(NEIGHBOUR_COUNT);\n}\n\nvoid main(){\n\tvec4 cEDL = texture2D(uEDLColor, vUv);\n\t\n\tfloat depth = cEDL.a;\n\tdepth = (depth == 1.0) ? 0.0 : depth;\n\tfloat res = response(depth);\n\tfloat shade = exp(-res * 300.0 * edlStrength);\n\n\tgl_FragColor = vec4(cEDL.rgb * shade, opacity);\n\n\t{ // write regular hyperbolic depth values to depth buffer\n\t\tfloat dl = pow(2.0, depth);\n\n\t\tvec4 dp = uProj * vec4(0.0, 0.0, -dl, 1.0);\n\t\tfloat pz = dp.z / dp.w;\n\t\tfloat fragDepth = (pz + 1.0) / 2.0;\n\n\t\tgl_FragDepthEXT = fragDepth;\n\t}\n\n\tif(depth == 0.0){\n\t\tdiscard;\n\t}\n\n}\n`\n\nShaders[\"blur.vs\"] = `\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n}`\n\nShaders[\"blur.fs\"] = `\nuniform mat4 projectionMatrix;\n\nuniform float screenWidth;\nuniform float screenHeight;\nuniform float near;\nuniform float far;\n\nuniform sampler2D map;\n\nvarying vec2 vUv;\n\nvoid main() {\n\n\tfloat dx = 1.0 / screenWidth;\n\tfloat dy = 1.0 / screenHeight;\n\n\tvec3 color = vec3(0.0, 0.0, 0.0);\n\tcolor += texture2D(map, vUv + vec2(-dx, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(-dx, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2(-dx, dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, dy)).rgb;\n\n\tcolor = color / 9.0;\n\t\n\tgl_FragColor = vec4(color, 1.0);\n}`\n\nexport {Shaders};","\nexport const ClassificationScheme = {\n\n\tDEFAULT: {\n\t\t0: { visible: true, name: 'never classified' , color: [0.5, 0.5, 0.5, 1.0] },\n\t\t1: { visible: true, name: 'unclassified' , color: [0.5, 0.5, 0.5, 1.0] },\n\t\t2: { visible: true, name: 'ground' , color: [0.63, 0.32, 0.18, 1.0] },\n\t\t3: { visible: true, name: 'low vegetation' , color: [0.0, 1.0, 0.0, 1.0] },\n\t\t4: { visible: true, name: 'medium vegetation' , color: [0.0, 0.8, 0.0, 1.0] },\n\t\t5: { visible: true, name: 'high vegetation' , color: [0.0, 0.6, 0.0, 1.0] },\n\t\t6: { visible: true, name: 'building' , color: [1.0, 0.66, 0.0, 1.0] },\n\t\t7: { visible: true, name: 'low point(noise)' , color: [1.0, 0.0, 1.0, 1.0] },\n\t\t8: { visible: true, name: 'key-point' , color: [1.0, 0.0, 0.0, 1.0] },\n\t\t9: { visible: true, name: 'water' , color: [0.0, 0.0, 1.0, 1.0] },\n\t\t12: { visible: true, name: 'overlap' , color: [1.0, 1.0, 0.0, 1.0] },\n\t\tDEFAULT: { visible: true, name: 'default' , color: [0.3, 0.6, 0.6, 0.5] },\n\t}\n};\n\nObject.defineProperty(ClassificationScheme, 'RANDOM', {\n\tget: function() { \n\n\t\tlet scheme = {};\n\n\t\tfor(let i = 0; i <= 255; i++){\n\t\t\tscheme[i] = new THREE.Vector4(Math.random(), Math.random(), Math.random());\n\t\t}\n\n\t\tscheme[\"DEFAULT\"] = new THREE.Vector4(Math.random(), Math.random(), Math.random());\n\n\t\treturn scheme;\n\t}\n});","\nimport {Utils} from \"../utils.js\";\nimport {Gradients} from \"./Gradients.js\";\nimport {Shaders} from \"../../build/shaders/shaders.js\";\nimport {ClassificationScheme} from \"./ClassificationScheme.js\";\nimport {PointSizeType, PointShape, TreeType, ElevationGradientRepeat} from \"../defines.js\";\n\n//\n// how to calculate the radius of a projected sphere in screen space\n// http://stackoverflow.com/questions/21648630/radius-of-projected-sphere-in-screen-space\n// http://stackoverflow.com/questions/3717226/radius-of-projected-sphere\n//\n\n\nexport class PointCloudMaterial extends THREE.RawShaderMaterial {\n\tconstructor (parameters = {}) {\n\t\tsuper();\n\n\t\tthis.visibleNodesTexture = Utils.generateDataTexture(2048, 1, new THREE.Color(0xffffff));\n\t\tthis.visibleNodesTexture.minFilter = THREE.NearestFilter;\n\t\tthis.visibleNodesTexture.magFilter = THREE.NearestFilter;\n\n\t\tlet getValid = (a, b) => {\n\t\t\tif(a !== undefined){\n\t\t\t\treturn a;\n\t\t\t}else{\n\t\t\t\treturn b;\n\t\t\t}\n\t\t}\n\n\t\tlet pointSize = getValid(parameters.size, 1.0);\n\t\tlet minSize = getValid(parameters.minSize, 2.0);\n\t\tlet maxSize = getValid(parameters.maxSize, 50.0);\n\t\tlet treeType = getValid(parameters.treeType, TreeType.OCTREE);\n\n\t\tthis._pointSizeType = PointSizeType.FIXED;\n\t\tthis._shape = PointShape.SQUARE;\n\t\tthis._useClipBox = false;\n\t\tthis.clipBoxes = [];\n\t\tthis.clipPolygons = [];\n\t\tthis._weighted = false;\n\t\tthis._gradient = Gradients.SPECTRAL;\n\t\tthis.gradientTexture = PointCloudMaterial.generateGradientTexture(this._gradient);\n\t\tthis._matcap = \"matcap.jpg\";\n\t\tthis.matcapTexture = Potree.PointCloudMaterial.generateMatcapTexture(this._matcap);\n\t\tthis.lights = false;\n\t\tthis.fog = false;\n\t\tthis._treeType = treeType;\n\t\tthis._useEDL = false;\n\t\tthis.defines = new Map();\n\n\t\tthis.ranges = new Map();\n\n\t\tthis._activeAttributeName = null;\n\n\t\tthis._defaultIntensityRangeChanged = false;\n\t\tthis._defaultElevationRangeChanged = false;\n\n\t\t{\n\t\t\tconst [width, height] = [256, 1];\n\t\t\tlet data = new Uint8Array(width * 4);\n\t\t\tlet texture = new THREE.DataTexture(data, width, height, THREE.RGBAFormat);\n\t\t\ttexture.magFilter = THREE.NearestFilter;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tthis.classificationTexture = texture;\n\t\t}\n\n\t\tthis.attributes = {\n\t\t\tposition: { type: 'fv', value: [] },\n\t\t\tcolor: { type: 'fv', value: [] },\n\t\t\tnormal: { type: 'fv', value: [] },\n\t\t\tintensity: { type: 'f', value: [] },\n\t\t\tclassification: { type: 'f', value: [] },\n\t\t\treturnNumber: { type: 'f', value: [] },\n\t\t\tnumberOfReturns: { type: 'f', value: [] },\n\t\t\tpointSourceID: { type: 'f', value: [] },\n\t\t\tindices: { type: 'fv', value: [] }\n\t\t};\n\n\t\tthis.uniforms = {\n\t\t\tlevel:\t\t\t\t{ type: \"f\", value: 0.0 },\n\t\t\tvnStart:\t\t\t{ type: \"f\", value: 0.0 },\n\t\t\tspacing:\t\t\t{ type: \"f\", value: 1.0 },\n\t\t\tblendHardness:\t\t{ type: \"f\", value: 2.0 },\n\t\t\tblendDepthSupplement:\t{ type: \"f\", value: 0.0 },\n\t\t\tfov:\t\t\t\t{ type: \"f\", value: 1.0 },\n\t\t\tscreenWidth:\t\t{ type: \"f\", value: 1.0 },\n\t\t\tscreenHeight:\t\t{ type: \"f\", value: 1.0 },\n\t\t\tnear:\t\t\t\t{ type: \"f\", value: 0.1 },\n\t\t\tfar:\t\t\t\t{ type: \"f\", value: 1.0 },\n\t\t\tuColor:\t\t\t\t{ type: \"c\", value: new THREE.Color( 0xffffff ) },\n\t\t\tuOpacity:\t\t\t{ type: \"f\", value: 1.0 },\n\t\t\tsize:\t\t\t\t{ type: \"f\", value: pointSize },\n\t\t\tminSize:\t\t\t{ type: \"f\", value: minSize },\n\t\t\tmaxSize:\t\t\t{ type: \"f\", value: maxSize },\n\t\t\toctreeSize:\t\t\t{ type: \"f\", value: 0 },\n\t\t\tbbSize:\t\t\t\t{ type: \"fv\", value: [0, 0, 0] },\n\t\t\televationRange:\t\t{ type: \"2fv\", value: [0, 0] },\n\n\t\t\tclipBoxCount:\t\t{ type: \"f\", value: 0 },\n\t\t\t//clipSphereCount:\t{ type: \"f\", value: 0 },\n\t\t\tclipPolygonCount:\t{ type: \"i\", value: 0 },\n\t\t\tclipBoxes:\t\t\t{ type: \"Matrix4fv\", value: [] },\n\t\t\t//clipSpheres:\t\t{ type: \"Matrix4fv\", value: [] },\n\t\t\tclipPolygons:\t\t{ type: \"3fv\", value: [] },\n\t\t\tclipPolygonVCount:\t{ type: \"iv\", value: [] },\n\t\t\tclipPolygonVP:\t\t{ type: \"Matrix4fv\", value: [] },\n\n\t\t\tvisibleNodes:\t\t{ type: \"t\", value: this.visibleNodesTexture },\n\t\t\tpcIndex:\t\t\t{ type: \"f\", value: 0 },\n\t\t\tgradient:\t\t\t{ type: \"t\", value: this.gradientTexture },\n\t\t\tclassificationLUT:\t{ type: \"t\", value: this.classificationTexture },\n\t\t\tuHQDepthMap:\t\t{ type: \"t\", value: null },\n\t\t\ttoModel:\t\t\t{ type: \"Matrix4f\", value: [] },\n\t\t\tdiffuse:\t\t\t{ type: \"fv\", value: [1, 1, 1] },\n\t\t\ttransition:\t\t\t{ type: \"f\", value: 0.5 },\n\n\t\t\t intensityRange:\t\t{ type: \"fv\", value: [Infinity, -Infinity] },\n\n\t\t\tintensity_gbc: \t\t{ type: \"fv\", value: [1, 0, 0]},\n\t\t\tuRGB_gbc:\t \t\t{ type: \"fv\", value: [1, 0, 0]},\n\t\t\t// intensityGamma:\t\t{ type: \"f\", value: 1 },\n\t\t\t// intensityContrast:\t{ type: \"f\", value: 0 },\n\t\t\t// intensityBrightness:{ type: \"f\", value: 0 },\n\t\t\t// rgbGamma:\t\t\t{ type: \"f\", value: 1 },\n\t\t\t// rgbContrast:\t\t{ type: \"f\", value: 0 },\n\t\t\t// rgbBrightness:\t\t{ type: \"f\", value: 0 },\n\t\t\twRGB:\t\t\t\t{ type: \"f\", value: 1 },\n\t\t\twIntensity:\t\t\t{ type: \"f\", value: 0 },\n\t\t\twElevation:\t\t\t{ type: \"f\", value: 0 },\n\t\t\twClassification:\t{ type: \"f\", value: 0 },\n\t\t\twReturnNumber:\t\t{ type: \"f\", value: 0 },\n\t\t\twSourceID:\t\t\t{ type: \"f\", value: 0 },\n\t\t\tuseOrthographicCamera: { type: \"b\", value: false },\n\t\t\televationGradientRepat: { type: \"i\", value: ElevationGradientRepeat.CLAMP },\n\t\t\tclipTask:\t\t\t{ type: \"i\", value: 1 },\n\t\t\tclipMethod:\t\t\t{ type: \"i\", value: 1 },\n\t\t\tuShadowColor:\t\t{ type: \"3fv\", value: [0, 0, 0] },\n\n\t\t\tuExtraScale:\t\t{ type: \"f\", value: 1},\n\t\t\tuExtraOffset:\t\t{ type: \"f\", value: 0},\n\t\t\tuExtraRange:\t\t{ type: \"2fv\", value: [0, 1] },\n\t\t\tuExtraGammaBrightContr:\t{ type: \"3fv\", value: [1, 0, 0] },\n\n\t\t\tuFilterReturnNumberRange:\t\t{ type: \"fv\", value: [0, 7]},\n\t\t\tuFilterNumberOfReturnsRange:\t{ type: \"fv\", value: [0, 7]},\n\t\t\tuFilterGPSTimeClipRange:\t\t{ type: \"fv\", value: [0, 7]},\n\t\t\tuFilterPointSourceIDClipRange:\t\t{ type: \"fv\", value: [0, 65535]},\n\t\t\tmatcapTextureUniform: \t{ type: \"t\", value: this.matcapTexture },\n\t\t\tbackfaceCulling: { type: \"b\", value: false },\n\t\t};\n\n\t\tthis.classification = ClassificationScheme.DEFAULT;\n\n\t\tthis.defaultAttributeValues.normal = [0, 0, 0];\n\t\tthis.defaultAttributeValues.classification = [0, 0, 0];\n\t\tthis.defaultAttributeValues.indices = [0, 0, 0, 0];\n\n\t\tthis.vertexShader = Shaders['pointcloud.vs'];\n\t\tthis.fragmentShader = Shaders['pointcloud.fs'];\n\t\t\n\t\tthis.vertexColors = THREE.VertexColors;\n\n\t\tthis.updateShaderSource();\n\t}\n\n\tsetDefine(key, value){\n\t\tif(value !== undefined && value !== null){\n\t\t\tif(this.defines.get(key) !== value){\n\t\t\t\tthis.defines.set(key, value);\n\t\t\t\tthis.updateShaderSource();\n\t\t\t}\n\t\t}else{\n\t\t\tthis.removeDefine(key);\n\t\t}\n\t}\n\n\tremoveDefine(key){\n\t\tthis.defines.delete(key);\n\t}\n\n\tupdateShaderSource () {\n\n\t\tlet vs = Shaders['pointcloud.vs'];\n\t\tlet fs = Shaders['pointcloud.fs'];\n\t\tlet definesString = this.getDefines();\n\n\t\tlet vsVersionIndex = vs.indexOf(\"#version \");\n\t\tlet fsVersionIndex = fs.indexOf(\"#version \");\n\n\t\tif(vsVersionIndex >= 0){\n\t\t\tvs = vs.replace(/(#version .*)/, `$1\\n${definesString}`)\n\t\t}else{\n\t\t\tvs = `${definesString}\\n${vs}`;\n\t\t}\n\n\t\tif(fsVersionIndex >= 0){\n\t\t\tfs = fs.replace(/(#version .*)/, `$1\\n${definesString}`)\n\t\t}else{\n\t\t\tfs = `${definesString}\\n${fs}`;\n\t\t}\n\n\t\tthis.vertexShader = vs;\n\t\tthis.fragmentShader = fs;\n\n\t\tif (this.opacity === 1.0) {\n\t\t\tthis.blending = THREE.NoBlending;\n\t\t\tthis.transparent = false;\n\t\t\tthis.depthTest = true;\n\t\t\tthis.depthWrite = true;\n\t\t\tthis.depthFunc = THREE.LessEqualDepth;\n\t\t} else if (this.opacity < 1.0 && !this.useEDL) {\n\t\t\tthis.blending = THREE.AdditiveBlending;\n\t\t\tthis.transparent = true;\n\t\t\tthis.depthTest = false;\n\t\t\tthis.depthWrite = true;\n\t\t\tthis.depthFunc = THREE.AlwaysDepth;\n\t\t}\n\n\t\tif (this.weighted) {\n\t\t\tthis.blending = THREE.AdditiveBlending;\n\t\t\tthis.transparent = true;\n\t\t\tthis.depthTest = true;\n\t\t\tthis.depthWrite = false;\n\t\t}\n\n\t\tthis.needsUpdate = true;\n\t}\n\n\tgetDefines () {\n\t\tlet defines = [];\n\n\t\tif (this.pointSizeType === PointSizeType.FIXED) {\n\t\t\tdefines.push('#define fixed_point_size');\n\t\t} else if (this.pointSizeType === PointSizeType.ATTENUATED) {\n\t\t\tdefines.push('#define attenuated_point_size');\n\t\t} else if (this.pointSizeType === PointSizeType.ADAPTIVE) {\n\t\t\tdefines.push('#define adaptive_point_size');\n\t\t}\n\n\t\tif (this.shape === PointShape.SQUARE) {\n\t\t\tdefines.push('#define square_point_shape');\n\t\t} else if (this.shape === PointShape.CIRCLE) {\n\t\t\tdefines.push('#define circle_point_shape');\n\t\t} else if (this.shape === PointShape.PARABOLOID) {\n\t\t\tdefines.push('#define paraboloid_point_shape');\n\t\t}\n\n\t\tif (this._useEDL) {\n\t\t\tdefines.push('#define use_edl');\n\t\t}\n\n\t\tif(this.activeAttributeName){\n\t\t\tlet attributeName = this.activeAttributeName.replace(/[^a-zA-Z0-9]/g, '_');\n\n\t\t\tdefines.push(`#define color_type_${attributeName}`);\n\t\t}\n\t\t\n\t\tif(this._treeType === TreeType.OCTREE){\n\t\t\tdefines.push('#define tree_type_octree');\n\t\t}else if(this._treeType === TreeType.KDTREE){\n\t\t\tdefines.push('#define tree_type_kdtree');\n\t\t}\n\n\t\tif (this.weighted) {\n\t\t\tdefines.push('#define weighted_splats');\n\t\t}\n\n\t\tfor(let [key, value] of this.defines){\n\t\t\tdefines.push(value);\n\t\t}\n\n\t\treturn defines.join(\"\\n\");\n\t}\n\n\tsetClipBoxes (clipBoxes) {\n\t\tif (!clipBoxes) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet doUpdate = (this.clipBoxes.length !== clipBoxes.length) && (clipBoxes.length === 0 || this.clipBoxes.length === 0);\n\n\t\tthis.uniforms.clipBoxCount.value = this.clipBoxes.length;\n\t\tthis.clipBoxes = clipBoxes;\n\n\t\tif (doUpdate) {\n\t\t\tthis.updateShaderSource();\n\t\t}\n\n\t\tthis.uniforms.clipBoxes.value = new Float32Array(this.clipBoxes.length * 16);\n\n\t\tfor (let i = 0; i < this.clipBoxes.length; i++) {\n\t\t\tlet box = clipBoxes[i];\n\n\t\t\tthis.uniforms.clipBoxes.value.set(box.inverse.elements, 16 * i);\n\t\t}\n\n\t\tfor (let i = 0; i < this.uniforms.clipBoxes.value.length; i++) {\n\t\t\tif (Number.isNaN(this.uniforms.clipBoxes.value[i])) {\n\t\t\t\tthis.uniforms.clipBoxes.value[i] = Infinity;\n\t\t\t}\n\t\t}\n\t}\n\n\tsetClipPolygons(clipPolygons, maxPolygonVertices) {\n\t\tif(!clipPolygons){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clipPolygons = clipPolygons;\n\n\t\tlet doUpdate = (this.clipPolygons.length !== clipPolygons.length);\n\n\t\tif(doUpdate){\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\t\n\tget gradient(){\n\t\treturn this._gradient;\n\t}\n\n\tset gradient (value) {\n\t\tif (this._gradient !== value) {\n\t\t\tthis._gradient = value;\n\t\t\tthis.gradientTexture = PointCloudMaterial.generateGradientTexture(this._gradient);\n\t\t\tthis.uniforms.gradient.value = this.gradientTexture;\n\t\t}\n\t}\n\n\tget matcap(){\n\t\treturn this._matcap;\n\t}\n\n\tset matcap (value) {\n\t\tif (this._matcap !== value) {\n\t\t\tthis._matcap = value;\n\t\t\tthis.matcapTexture = Potree.PointCloudMaterial.generateMatcapTexture(this._matcap);\n\t\t\tthis.uniforms.matcapTextureUniform.value = this.matcapTexture;\n\t\t}\n\t}\n\tget useOrthographicCamera() {\n\t\treturn this.uniforms.useOrthographicCamera.value;\n\t}\n\n\tset useOrthographicCamera(value) {\n\t\tif(this.uniforms.useOrthographicCamera.value !== value){\n\t\t\tthis.uniforms.useOrthographicCamera.value = value;\n\t\t}\n\t}\n\tget backfaceCulling() {\n\t\treturn this.uniforms.backfaceCulling.value;\n\t}\n\n\tset backfaceCulling(value) {\n\t\tif(this.uniforms.backfaceCulling.value !== value){\n\t\t\tthis.uniforms.backfaceCulling.value = value;\n\t\t\tthis.dispatchEvent({type: 'backface_changed', target: this});\n\t\t}\n\t}\n\n\trecomputeClassification () {\n\t\tconst classification = this.classification;\n\t\tconst data = this.classificationTexture.image.data;\n\n\t\tlet width = 256;\n\t\tconst black = [1, 1, 1, 1];\n\n\t\tlet valuesChanged = false;\n\n\t\tfor (let i = 0; i < width; i++) {\n\n\t\t\tlet color;\n\t\t\tlet visible = true;\n\n\t\t\tif (classification[i]) {\n\t\t\t\tcolor = classification[i].color;\n\t\t\t\tvisible = classification[i].visible;\n\t\t\t} else if (classification[i % 32]) {\n\t\t\t\tcolor = classification[i % 32].color;\n\t\t\t\tvisible = classification[i % 32].visible;\n\t\t\t} else if(classification.DEFAULT) {\n\t\t\t\tcolor = classification.DEFAULT.color;\n\t\t\t\tvisible = classification.DEFAULT.visible;\n\t\t\t}else{\n\t\t\t\tcolor = black;\n\t\t\t}\n\n\t\t\tconst r = parseInt(255 * color[0]);\n\t\t\tconst g = parseInt(255 * color[1]);\n\t\t\tconst b = parseInt(255 * color[2]);\n\t\t\tconst a = visible ? parseInt(255 * color[3]) : 0;\n\n\n\t\t\tif(data[4 * i + 0] !== r){\n\t\t\t\tdata[4 * i + 0] = r;\n\t\t\t\tvaluesChanged = true;\n\t\t\t}\n\n\t\t\tif(data[4 * i + 1] !== g){\n\t\t\t\tdata[4 * i + 1] = g;\n\t\t\t\tvaluesChanged = true;\n\t\t\t}\n\n\t\t\tif(data[4 * i + 2] !== b){\n\t\t\t\tdata[4 * i + 2] = b;\n\t\t\t\tvaluesChanged = true;\n\t\t\t}\n\n\t\t\tif(data[4 * i + 3] !== a){\n\t\t\t\tdata[4 * i + 3] = a;\n\t\t\t\tvaluesChanged = true;\n\t\t\t}\n\t\t}\n\n\t\tif(valuesChanged){\n\t\t\tthis.classificationTexture.needsUpdate = true;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget spacing () {\n\t\treturn this.uniforms.spacing.value;\n\t}\n\n\tset spacing (value) {\n\t\tif (this.uniforms.spacing.value !== value) {\n\t\t\tthis.uniforms.spacing.value = value;\n\t\t}\n\t}\n\n\tget useClipBox () {\n\t\treturn this._useClipBox;\n\t}\n\n\tset useClipBox (value) {\n\t\tif (this._useClipBox !== value) {\n\t\t\tthis._useClipBox = value;\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\n\tget clipTask(){\n\t\treturn this.uniforms.clipTask.value;\n\t}\n\n\tset clipTask(mode){\n\t\tthis.uniforms.clipTask.value = mode;\n\t}\n\n\tget elevationGradientRepat(){\n\t\treturn this.uniforms.elevationGradientRepat.value;\n\t}\n\n\tset elevationGradientRepat(mode){\n\t\tthis.uniforms.elevationGradientRepat.value = mode;\n\t}\n\n\tget clipMethod(){\n\t\treturn this.uniforms.clipMethod.value;\n\t}\n\n\tset clipMethod(mode){\n\t\tthis.uniforms.clipMethod.value = mode;\n\t}\n\n\tget weighted(){\n\t\treturn this._weighted;\n\t}\n\n\tset weighted (value) {\n\t\tif (this._weighted !== value) {\n\t\t\tthis._weighted = value;\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\n\tget fov () {\n\t\treturn this.uniforms.fov.value;\n\t}\n\n\tset fov (value) {\n\t\tif (this.uniforms.fov.value !== value) {\n\t\t\tthis.uniforms.fov.value = value;\n\t\t\t// this.updateShaderSource();\n\t\t}\n\t}\n\n\tget screenWidth () {\n\t\treturn this.uniforms.screenWidth.value;\n\t}\n\n\tset screenWidth (value) {\n\t\tif (this.uniforms.screenWidth.value !== value) {\n\t\t\tthis.uniforms.screenWidth.value = value;\n\t\t\t// this.updateShaderSource();\n\t\t}\n\t}\n\n\tget screenHeight () {\n\t\treturn this.uniforms.screenHeight.value;\n\t}\n\n\tset screenHeight (value) {\n\t\tif (this.uniforms.screenHeight.value !== value) {\n\t\t\tthis.uniforms.screenHeight.value = value;\n\t\t\t// this.updateShaderSource();\n\t\t}\n\t}\n\n\tget near () {\n\t\treturn this.uniforms.near.value;\n\t}\n\n\tset near (value) {\n\t\tif (this.uniforms.near.value !== value) {\n\t\t\tthis.uniforms.near.value = value;\n\t\t}\n\t}\n\n\tget far () {\n\t\treturn this.uniforms.far.value;\n\t}\n\n\tset far (value) {\n\t\tif (this.uniforms.far.value !== value) {\n\t\t\tthis.uniforms.far.value = value;\n\t\t}\n\t}\n\t\n\tget opacity(){\n\t\treturn this.uniforms.uOpacity.value;\n\t}\n\n\tset opacity (value) {\n\t\tif (this.uniforms && this.uniforms.uOpacity) {\n\t\t\tif (this.uniforms.uOpacity.value !== value) {\n\t\t\t\tthis.uniforms.uOpacity.value = value;\n\t\t\t\tthis.updateShaderSource();\n\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\ttype: 'opacity_changed',\n\t\t\t\t\ttarget: this\n\t\t\t\t});\n\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\ttype: 'material_property_changed',\n\t\t\t\t\ttarget: this\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tget activeAttributeName(){\n\t\treturn this._activeAttributeName;\n\t}\n\n\tset activeAttributeName(value){\n\t\tif (this._activeAttributeName !== value) {\n\t\t\tthis._activeAttributeName = value;\n\n\t\t\tthis.updateShaderSource();\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'active_attribute_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget pointSizeType () {\n\t\treturn this._pointSizeType;\n\t}\n\n\tset pointSizeType (value) {\n\t\tif (this._pointSizeType !== value) {\n\t\t\tthis._pointSizeType = value;\n\t\t\tthis.updateShaderSource();\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'point_size_type_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget useEDL(){\n\t\treturn this._useEDL;\n\t}\n\n\tset useEDL (value) {\n\t\tif (this._useEDL !== value) {\n\t\t\tthis._useEDL = value;\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\n\tget color () {\n\t\treturn this.uniforms.uColor.value;\n\t}\n\n\tset color (value) {\n\t\tif (!this.uniforms.uColor.value.equals(value)) {\n\t\t\tthis.uniforms.uColor.value.copy(value);\n\t\t\t\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'color_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget shape () {\n\t\treturn this._shape;\n\t}\n\n\tset shape (value) {\n\t\tif (this._shape !== value) {\n\t\t\tthis._shape = value;\n\t\t\tthis.updateShaderSource();\n\t\t\tthis.dispatchEvent({type: 'point_shape_changed', target: this});\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget treeType () {\n\t\treturn this._treeType;\n\t}\n\n\tset treeType (value) {\n\t\tif (this._treeType !== value) {\n\t\t\tthis._treeType = value;\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\n\tget bbSize () {\n\t\treturn this.uniforms.bbSize.value;\n\t}\n\n\tset bbSize (value) {\n\t\tthis.uniforms.bbSize.value = value;\n\t}\n\n\tget size () {\n\t\treturn this.uniforms.size.value;\n\t}\n\n\tset size (value) {\n\t\tif (this.uniforms.size.value !== value) {\n\t\t\tthis.uniforms.size.value = value;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'point_size_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget minSize(){\n\t\treturn this.uniforms.minSize.value;\n\t}\n\n\tset minSize(value){\n\t\tif (this.uniforms.minSize.value !== value) {\n\t\t\tthis.uniforms.minSize.value = value;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'point_size_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget elevationRange () {\n\t\treturn this.uniforms.elevationRange.value;\n\t}\n\n\tset elevationRange (value) {\n\t\tlet changed = this.uniforms.elevationRange.value[0] !== value[0]\n\t\t\t|| this.uniforms.elevationRange.value[1] !== value[1];\n\n\t\tif(changed){\n\t\t\tthis.uniforms.elevationRange.value = value;\n\n\t\t\tthis._defaultElevationRangeChanged = true;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget heightMin () {\n\t\treturn this.uniforms.elevationRange.value[0];\n\t}\n\n\tset heightMin (value) {\n\t\tthis.elevationRange = [value, this.elevationRange[1]];\n\t}\n\n\tget heightMax () {\n\t\treturn this.uniforms.elevationRange.value[1];\n\t}\n\n\tset heightMax (value) {\n\t\tthis.elevationRange = [this.elevationRange[0], value];\n\t}\n\n\tget transition () {\n\t\treturn this.uniforms.transition.value;\n\t}\n\n\tset transition (value) {\n\t\tthis.uniforms.transition.value = value;\n\t}\n\n\tget intensityRange () {\n\t\treturn this.uniforms.intensityRange.value;\n\t}\n\n\tset intensityRange (value) {\n\t\tif (!(value instanceof Array && value.length === 2)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (value[0] === this.uniforms.intensityRange.value[0] &&\n\t\t\tvalue[1] === this.uniforms.intensityRange.value[1]) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.uniforms.intensityRange.value = value;\n\n\t\tthis._defaultIntensityRangeChanged = true;\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'material_property_changed',\n\t\t\ttarget: this\n\t\t});\n\t}\n\n\tget intensityGamma () {\n\t\treturn this.uniforms.intensity_gbc.value[0];\n\t}\n\n\tset intensityGamma (value) {\n\t\tif (this.uniforms.intensity_gbc.value[0] !== value) {\n\t\t\tthis.uniforms.intensity_gbc.value[0] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget intensityContrast () {\n\t\treturn this.uniforms.intensity_gbc.value[2];\n\t}\n\n\tset intensityContrast (value) {\n\t\tif (this.uniforms.intensity_gbc.value[2] !== value) {\n\t\t\tthis.uniforms.intensity_gbc.value[2] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget intensityBrightness () {\n\t\treturn this.uniforms.intensity_gbc.value[1];\n\t}\n\n\tset intensityBrightness (value) {\n\t\tif (this.uniforms.intensity_gbc.value[1] !== value) {\n\t\t\tthis.uniforms.intensity_gbc.value[1] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget rgbGamma () {\n\t\treturn this.uniforms.uRGB_gbc.value[0];\n\t}\n\n\tset rgbGamma (value) {\n\t\tif (this.uniforms.uRGB_gbc.value[0] !== value) {\n\t\t\tthis.uniforms.uRGB_gbc.value[0] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget rgbContrast () {\n\t\treturn this.uniforms.uRGB_gbc.value[2];\n\t}\n\n\tset rgbContrast (value) {\n\t\tif (this.uniforms.uRGB_gbc.value[2] !== value) {\n\t\t\tthis.uniforms.uRGB_gbc.value[2] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget rgbBrightness () {\n\t\treturn this.uniforms.uRGB_gbc.value[1];\n\t}\n\n\tset rgbBrightness (value) {\n\t\tif (this.uniforms.uRGB_gbc.value[1] !== value) {\n\t\t\tthis.uniforms.uRGB_gbc.value[1] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\t\n\tget extraGamma () {\n\t\treturn this.uniforms.uExtraGammaBrightContr.value[0];\n\t}\n\n\tset extraGamma (value) {\n\t\tif (this.uniforms.uExtraGammaBrightContr.value[0] !== value) {\n\t\t\tthis.uniforms.uExtraGammaBrightContr.value[0] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget extraBrightness () {\n\t\treturn this.uniforms.uExtraGammaBrightContr.value[1];\n\t}\n\n\tset extraBrightness (value) {\n\t\tif (this.uniforms.uExtraGammaBrightContr.value[1] !== value) {\n\t\t\tthis.uniforms.uExtraGammaBrightContr.value[1] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget extraContrast () {\n\t\treturn this.uniforms.uExtraGammaBrightContr.value[2];\n\t}\n\n\tset extraContrast (value) {\n\t\tif (this.uniforms.uExtraGammaBrightContr.value[2] !== value) {\n\t\t\tthis.uniforms.uExtraGammaBrightContr.value[2] = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tgetRange(attributeName){\n\t\treturn this.ranges.get(attributeName);\n\t}\n\n\tsetRange(attributeName, newRange){\n\n\t\tlet rangeChanged = false;\n\n\t\tlet oldRange = this.ranges.get(attributeName);\n\n\t\tif(oldRange != null && newRange != null){\n\t\t\trangeChanged = oldRange[0] !== newRange[0] || oldRange[1] !== newRange[1];\n\t\t}else{\n\t\t\trangeChanged = true;\n\t\t}\n\n\t\tthis.ranges.set(attributeName, newRange);\n\n\t\tif(rangeChanged){\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget extraRange () {\n\t\treturn this.uniforms.uExtraRange.value;\n\t}\n\n\tset extraRange (value) {\n\t\tif (!(value instanceof Array && value.length === 2)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (value[0] === this.uniforms.uExtraRange.value[0] &&\n\t\t\tvalue[1] === this.uniforms.uExtraRange.value[1]) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.uniforms.uExtraRange.value = value;\n\n\t\tthis._defaultExtraRangeChanged = true;\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'material_property_changed',\n\t\t\ttarget: this\n\t\t});\n\t}\n\n\tget weightRGB () {\n\t\treturn this.uniforms.wRGB.value;\n\t}\n\n\tset weightRGB (value) {\n\t\tif(this.uniforms.wRGB.value !== value){\n\t\t\tthis.uniforms.wRGB.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget weightIntensity () {\n\t\treturn this.uniforms.wIntensity.value;\n\t}\n\n\tset weightIntensity (value) {\n\t\tif(this.uniforms.wIntensity.value !== value){\n\t\t\tthis.uniforms.wIntensity.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget weightElevation () {\n\t\treturn this.uniforms.wElevation.value;\n\t}\n\n\tset weightElevation (value) {\n\t\tif(this.uniforms.wElevation.value !== value){\n\t\t\tthis.uniforms.wElevation.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget weightClassification () {\n\t\treturn this.uniforms.wClassification.value;\n\t}\n\n\tset weightClassification (value) {\n\t\tif(this.uniforms.wClassification.value !== value){\n\t\t\tthis.uniforms.wClassification.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget weightReturnNumber () {\n\t\treturn this.uniforms.wReturnNumber.value;\n\t}\n\n\tset weightReturnNumber (value) {\n\t\tif(this.uniforms.wReturnNumber.value !== value){\n\t\t\tthis.uniforms.wReturnNumber.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tget weightSourceID () {\n\t\treturn this.uniforms.wSourceID.value;\n\t}\n\n\tset weightSourceID (value) {\n\t\tif(this.uniforms.wSourceID.value !== value){\n\t\t\tthis.uniforms.wSourceID.value = value;\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'material_property_changed',\n\t\t\t\ttarget: this\n\t\t\t});\n\t\t}\n\t}\n\n\tstatic generateGradientTexture (gradient) {\n\t\tlet size = 64;\n\n\t\t// create canvas\n\t\tlet canvas = document.createElement('canvas');\n\t\tcanvas.width = size;\n\t\tcanvas.height = size;\n\n\t\t// get context\n\t\tlet context = canvas.getContext('2d');\n\n\t\t// draw gradient\n\t\tcontext.rect(0, 0, size, size);\n\t\tlet ctxGradient = context.createLinearGradient(0, 0, size, size);\n\n\t\tfor (let i = 0; i < gradient.length; i++) {\n\t\t\tlet step = gradient[i];\n\n\t\t\tctxGradient.addColorStop(step[0], '#' + step[1].getHexString());\n\t\t}\n\n\t\tcontext.fillStyle = ctxGradient;\n\t\tcontext.fill();\n\t\t\n\t\t//let texture = new THREE.Texture(canvas);\n\t\tlet texture = new THREE.CanvasTexture(canvas);\n\t\ttexture.needsUpdate = true;\n\t\t\n\t\ttexture.minFilter = THREE.LinearFilter;\n\t\ttexture.wrap = THREE.RepeatWrapping;\n\t\ttexture.repeat = 2;\n\t\t// textureImage = texture.image;\n\n\t\treturn texture;\n\t}\n\t\n\tstatic generateMatcapTexture (matcap) {\n\tvar url = new URL(Potree.resourcePath + \"/textures/matcap/\" + matcap).href;\n\tlet texture = new THREE.TextureLoader().load( url );\n\t\ttexture.magFilter = texture.minFilter = THREE.LinearFilter; \n\t\ttexture.needsUpdate = true;\n\t\t// PotreeConverter_1.6_2018_07_29_windows_x64\\PotreeConverter.exe autzen_xyzrgbXYZ_ascii.xyz -f xyzrgbXYZ -a RGB NORMAL -o autzen_xyzrgbXYZ_ascii_a -p index --overwrite\n\t\t// Switch matcap texture on the fly : viewer.scene.pointclouds[0].material.matcap = 'matcap1.jpg'; \n\t\t// For non power of 2, use LinearFilter and dont generate mipmaps, For power of 2, use NearestFilter and generate mipmaps : matcap2.jpg 1 2 8 11 12 13\n\t\treturn texture; \n\t}\n\n\tstatic generateMatcapTexture (matcap) {\n\tvar url = new URL(Potree.resourcePath + \"/textures/matcap/\" + matcap).href;\n\tlet texture = new THREE.TextureLoader().load( url );\n\t\ttexture.magFilter = texture.minFilter = THREE.LinearFilter; \n\t\ttexture.needsUpdate = true;\n\t\t// PotreeConverter_1.6_2018_07_29_windows_x64\\PotreeConverter.exe autzen_xyzrgbXYZ_ascii.xyz -f xyzrgbXYZ -a RGB NORMAL -o autzen_xyzrgbXYZ_ascii_a -p index --overwrite\n\t\t// Switch matcap texture on the fly : viewer.scene.pointclouds[0].material.matcap = 'matcap1.jpg'; \n\t\t// For non power of 2, use LinearFilter and dont generate mipmaps, For power of 2, use NearestFilter and generate mipmaps : matcap2.jpg 1 2 8 11 12 13\n\t\treturn texture; \n\t}\n\n\tdisableEvents(){\n\t\tif(this._hiddenListeners === undefined){\n\t\t\tthis._hiddenListeners = this._listeners;\n\t\t\tthis._listeners = {};\n\t\t}\n\t};\n\n\tenableEvents(){\n\t\tthis._listeners = this._hiddenListeners;\n\t\tthis._hiddenListeners = undefined;\n\t};\n\n\t// copyFrom(from){\n\n\t// \tvar a = 10;\n\n\t// \tfor(let name of Object.keys(this.uniforms)){\n\t// \t\tthis.uniforms[name].value = from.uniforms[name].value;\n\t// \t}\n\t// }\n\n\t// copy(from){\n\t// \tthis.copyFrom(from);\n\t// }\n\n}\n","\nimport {PointCloudTree, PointCloudTreeNode} from \"./PointCloudTree.js\";\nimport {PointCloudOctreeGeometryNode} from \"./PointCloudOctreeGeometry.js\";\nimport {Utils} from \"./utils.js\";\nimport {PointCloudMaterial} from \"./materials/PointCloudMaterial.js\";\n\n\nexport class PointCloudOctreeNode extends PointCloudTreeNode {\n\tconstructor () {\n\t\tsuper();\n\n\t\t//this.children = {};\n\t\tthis.children = [];\n\t\tthis.sceneNode = null;\n\t\tthis.octree = null;\n\t}\n\n\tgetNumPoints () {\n\t\treturn this.geometryNode.numPoints;\n\t}\n\n\tisLoaded () {\n\t\treturn true;\n\t}\n\n\tisTreeNode () {\n\t\treturn true;\n\t}\n\n\tisGeometryNode () {\n\t\treturn false;\n\t}\n\n\tgetLevel () {\n\t\treturn this.geometryNode.level;\n\t}\n\n\tgetBoundingSphere () {\n\t\treturn this.geometryNode.boundingSphere;\n\t}\n\n\tgetBoundingBox () {\n\t\treturn this.geometryNode.boundingBox;\n\t}\n\n\tgetChildren () {\n\t\tlet children = [];\n\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tif (this.children[i]) {\n\t\t\t\tchildren.push(this.children[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn children;\n\t}\n\n\tgetPointsInBox(boxNode){\n\n\t\tif(!this.sceneNode){\n\t\t\treturn null;\n\t\t}\n\n\t\tlet buffer = this.geometryNode.buffer;\n\n\t\tlet posOffset = buffer.offset(\"position\");\n\t\tlet stride = buffer.stride;\n\t\tlet view = new DataView(buffer.data);\n\n\t\tlet worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld);\n\t\tlet objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, this.sceneNode.matrixWorld);\n\n\t\tlet inBox = [];\n\n\t\tlet pos = new THREE.Vector4();\n\t\tfor(let i = 0; i < buffer.numElements; i++){\n\t\t\tlet x = view.getFloat32(i * stride + posOffset + 0, true);\n\t\t\tlet y = view.getFloat32(i * stride + posOffset + 4, true);\n\t\t\tlet z = view.getFloat32(i * stride + posOffset + 8, true);\n\n\t\t\tpos.set(x, y, z, 1);\n\t\t\tpos.applyMatrix4(objectToBox);\n\n\t\t\tif(-0.5 < pos.x && pos.x < 0.5){\n\t\t\t\tif(-0.5 < pos.y && pos.y < 0.5){\n\t\t\t\t\tif(-0.5 < pos.z && pos.z < 0.5){\n\t\t\t\t\t\tpos.set(x, y, z, 1).applyMatrix4(this.sceneNode.matrixWorld);\n\t\t\t\t\t\tinBox.push(new THREE.Vector3(pos.x, pos.y, pos.z));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn inBox;\n\t}\n\n\tget name () {\n\t\treturn this.geometryNode.name;\n\t}\n};\n\nexport class PointCloudOctree extends PointCloudTree {\n\tconstructor (geometry, material) {\n\t\tsuper();\n\n\t\tthis.pointBudget = Infinity;\n\t\tthis.pcoGeometry = geometry;\n\t\tthis.boundingBox = this.pcoGeometry.boundingBox;\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\tthis.material = material || new PointCloudMaterial();\n\t\tthis.visiblePointsTarget = 2 * 1000 * 1000;\n\t\tthis.minimumNodePixelSize = 150;\n\t\tthis.level = 0;\n\t\tthis.position.copy(geometry.offset);\n\t\tthis.updateMatrix();\n\n\t\t{\n\t\t\tlet attributeName = \"rgba\";\n\t\t\tif(this.pcoGeometry.pointAttributes.attributes.length > 1){\n\t\t\t\tattributeName = this.pcoGeometry.pointAttributes.attributes[1].name;\n\t\t\t}\n\t\t\tthis.material.activeAttributeName = attributeName;\n\t\t}\n\n\t\tthis.showBoundingBox = false;\n\t\tthis.boundingBoxNodes = [];\n\t\tthis.loadQueue = [];\n\t\tthis.visibleBounds = new THREE.Box3();\n\t\tthis.visibleNodes = [];\n\t\tthis.visibleGeometry = [];\n\t\tthis.generateDEM = false;\n\t\tthis.profileRequests = [];\n\t\tthis.name = '';\n\t\tthis._visible = true;\n\n\t\t{\n\t\t\tlet box = [this.pcoGeometry.tightBoundingBox, this.getBoundingBoxWorld()]\n\t\t\t\t.find(v => v !== undefined);\n\n\t\t\tthis.updateMatrixWorld(true);\n\t\t\tbox = Utils.computeTransformedBoundingBox(box, this.matrixWorld);\n\n\t\t\tlet bMin = box.min.z;\n\t\t\tlet bMax = box.max.z;\n\t\t\tthis.material.heightMin = bMin;\n\t\t\tthis.material.heightMax = bMax;\n\t\t}\n\n\t\t// TODO read projection from file instead\n\t\tthis.projection = geometry.projection;\n\t\tthis.fallbackProjection = geometry.fallbackProjection;\n\n\t\tthis.root = this.pcoGeometry.root;\n\t}\n\n\tsetName (name) {\n\t\tif (this.name !== name) {\n\t\t\tthis.name = name;\n\t\t\tthis.dispatchEvent({type: 'name_changed', name: name, pointcloud: this});\n\t\t}\n\t}\n\n\tgetName () {\n\t\treturn this.name;\n\t}\n\n\tgetAttribute(name){\n\n\t\tconst attribute = this.pcoGeometry.pointAttributes.attributes.find(a => a.name === name);\n\n\t\tif(attribute){\n\t\t\treturn attribute;\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetAttributes(){\n\t\treturn this.pcoGeometry.pointAttributes;\n\t}\n\n\ttoTreeNode (geometryNode, parent) {\n\t\tlet node = new PointCloudOctreeNode();\n\n\t\t// if(geometryNode.name === \"r40206\"){\n\t\t//\tconsole.log(\"creating node for r40206\");\n\t\t// }\n\t\tlet sceneNode = new THREE.Points(geometryNode.geometry, this.material);\n\t\tsceneNode.name = geometryNode.name;\n\t\tsceneNode.position.copy(geometryNode.boundingBox.min);\n\t\tsceneNode.frustumCulled = false;\n\t\tsceneNode.onBeforeRender = (_this, scene, camera, geometry, material, group) => {\n\t\t\tif (material.program) {\n\t\t\t\t_this.getContext().useProgram(material.program.program);\n\n\t\t\t\tif (material.program.getUniforms().map.level) {\n\t\t\t\t\tlet level = geometryNode.getLevel();\n\t\t\t\t\tmaterial.uniforms.level.value = level;\n\t\t\t\t\tmaterial.program.getUniforms().map.level.setValue(_this.getContext(), level);\n\t\t\t\t}\n\n\t\t\t\tif (this.visibleNodeTextureOffsets && material.program.getUniforms().map.vnStart) {\n\t\t\t\t\tlet vnStart = this.visibleNodeTextureOffsets.get(node);\n\t\t\t\t\tmaterial.uniforms.vnStart.value = vnStart;\n\t\t\t\t\tmaterial.program.getUniforms().map.vnStart.setValue(_this.getContext(), vnStart);\n\t\t\t\t}\n\n\t\t\t\tif (material.program.getUniforms().map.pcIndex) {\n\t\t\t\t\tlet i = node.pcIndex ? node.pcIndex : this.visibleNodes.indexOf(node);\n\t\t\t\t\tmaterial.uniforms.pcIndex.value = i;\n\t\t\t\t\tmaterial.program.getUniforms().map.pcIndex.setValue(_this.getContext(), i);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// { // DEBUG\n\t\t//\tlet sg = new THREE.SphereGeometry(1, 16, 16);\n\t\t//\tlet sm = new THREE.MeshNormalMaterial();\n\t\t//\tlet s = new THREE.Mesh(sg, sm);\n\t\t//\ts.scale.set(5, 5, 5);\n\t\t//\ts.position.copy(geometryNode.mean)\n\t\t//\t\t.add(this.position)\n\t\t//\t\t.add(geometryNode.boundingBox.min);\n\t\t//\n\t\t//\tviewer.scene.scene.add(s);\n\t\t// }\n\n\t\tnode.geometryNode = geometryNode;\n\t\tnode.sceneNode = sceneNode;\n\t\tnode.pointcloud = this;\n\t\tnode.children = [];\n\t\t//for (let key in geometryNode.children) {\n\t\t//\tnode.children[key] = geometryNode.children[key];\n\t\t//}\n\t\tfor(let i = 0; i < 8; i++){\n\t\t\tnode.children[i] = geometryNode.children[i];\n\t\t}\n\n\t\tif (!parent) {\n\t\t\tthis.root = node;\n\t\t\tthis.add(sceneNode);\n\t\t} else {\n\t\t\tlet childIndex = parseInt(geometryNode.name[geometryNode.name.length - 1]);\n\t\t\tparent.sceneNode.add(sceneNode);\n\t\t\tparent.children[childIndex] = node;\n\t\t}\n\n\t\tlet disposeListener = function () {\n\t\t\tlet childIndex = parseInt(geometryNode.name[geometryNode.name.length - 1]);\n\t\t\tparent.sceneNode.remove(node.sceneNode);\n\t\t\tparent.children[childIndex] = geometryNode;\n\t\t};\n\t\tgeometryNode.oneTimeDisposeHandlers.push(disposeListener);\n\n\t\treturn node;\n\t}\n\n\tupdateVisibleBounds () {\n\t\tlet leafNodes = [];\n\t\tfor (let i = 0; i < this.visibleNodes.length; i++) {\n\t\t\tlet node = this.visibleNodes[i];\n\t\t\tlet isLeaf = true;\n\n\t\t\tfor (let j = 0; j < node.children.length; j++) {\n\t\t\t\tlet child = node.children[j];\n\t\t\t\tif (child instanceof PointCloudOctreeNode) {\n\t\t\t\t\tisLeaf = isLeaf && !child.sceneNode.visible;\n\t\t\t\t} else if (child instanceof PointCloudOctreeGeometryNode) {\n\t\t\t\t\tisLeaf = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isLeaf) {\n\t\t\t\tleafNodes.push(node);\n\t\t\t}\n\t\t}\n\n\t\tthis.visibleBounds.min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\tthis.visibleBounds.max = new THREE.Vector3(-Infinity, -Infinity, -Infinity);\n\t\tfor (let i = 0; i < leafNodes.length; i++) {\n\t\t\tlet node = leafNodes[i];\n\n\t\t\tthis.visibleBounds.expandByPoint(node.getBoundingBox().min);\n\t\t\tthis.visibleBounds.expandByPoint(node.getBoundingBox().max);\n\t\t}\n\t}\n\n\tupdateMaterial (material, visibleNodes, camera, renderer) {\n\t\tmaterial.fov = camera.fov * (Math.PI / 180);\n\t\tmaterial.screenWidth = renderer.domElement.clientWidth;\n\t\tmaterial.screenHeight = renderer.domElement.clientHeight;\n\t\tmaterial.spacing = this.pcoGeometry.spacing * Math.max(this.scale.x, this.scale.y, this.scale.z);\n\t\tmaterial.near = camera.near;\n\t\tmaterial.far = camera.far;\n\t\tmaterial.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\n\t}\n\n\tcomputeVisibilityTextureData(nodes, camera){\n\n\t\tif(Potree.measureTimings) performance.mark(\"computeVisibilityTextureData-start\");\n\n\t\tlet data = new Uint8Array(nodes.length * 4);\n\t\tlet visibleNodeTextureOffsets = new Map();\n\n\t\t// copy array\n\t\tnodes = nodes.slice();\n\n\t\t// sort by level and index, e.g. r, r0, r3, r4, r01, r07, r30, ...\n\t\tlet sort = function (a, b) {\n\t\t\tlet na = a.geometryNode.name;\n\t\t\tlet nb = b.geometryNode.name;\n\t\t\tif (na.length !== nb.length) return na.length - nb.length;\n\t\t\tif (na < nb) return -1;\n\t\t\tif (na > nb) return 1;\n\t\t\treturn 0;\n\t\t};\n\t\tnodes.sort(sort);\n\n\t\t// code sample taken from three.js src/math/Ray.js\n\t\tlet v1 = new THREE.Vector3();\n\t\tlet intersectSphereBack = (ray, sphere) => {\n\t\t\tv1.subVectors( sphere.center, ray.origin );\n\t\t\tlet tca = v1.dot( ray.direction );\n\t\t\tlet d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tlet radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif(d2 > radius2){\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tlet t1 = tca + thc;\n\n\t\t\tif(t1 < 0 ){\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn t1;\n\t\t};\n\n\t\tlet lodRanges = new Map();\n\t\tlet leafNodeLodRanges = new Map();\n\n\t\tlet bBox = new THREE.Box3();\n\t\tlet bSphere = new THREE.Sphere();\n\t\tlet worldDir = new THREE.Vector3();\n\t\tlet cameraRay = new THREE.Ray(camera.position, camera.getWorldDirection(worldDir));\n\n\t\tlet nodeMap = new Map();\n\t\tlet offsetsToChild = new Array(nodes.length).fill(Infinity);\n\n\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\tlet node = nodes[i];\n\n\t\t\tnodeMap.set(node.name, node);\n\t\t\tvisibleNodeTextureOffsets.set(node, i);\n\n\t\t\tif(i > 0){\n\t\t\t\tlet index = parseInt(node.name.slice(-1));\n\t\t\t\tlet parentName = node.name.slice(0, -1);\n\t\t\t\tlet parent = nodeMap.get(parentName);\n\t\t\t\tlet parentOffset = visibleNodeTextureOffsets.get(parent);\n\n\t\t\t\tlet parentOffsetToChild = (i - parentOffset);\n\n\t\t\t\toffsetsToChild[parentOffset] = Math.min(offsetsToChild[parentOffset], parentOffsetToChild);\n\n\t\t\t\tdata[parentOffset * 4 + 0] = data[parentOffset * 4 + 0] | (1 << index);\n\t\t\t\tdata[parentOffset * 4 + 1] = (offsetsToChild[parentOffset] >> 8);\n\t\t\t\tdata[parentOffset * 4 + 2] = (offsetsToChild[parentOffset] % 256);\n\t\t\t}\n\n\t\t\t// data[i * 4 + 3] = node.geometryNode.nodeType === 1 ? 1 : 0;\n\t\t\t// data[i * 4 + 3] = node.name.length - 1;\n\n\t\t\tlet density = node.geometryNode.density;\n\t\t\t\n\t\t\tif(typeof density === \"number\"){\n\t\t\t\tlet lodOffset = Math.log2(density) / 2 - 1.5;\n\n\t\t\t\tlet offsetUint8 = (lodOffset + 10) * 10;\n\n\t\t\t\tdata[i * 4 + 3] = offsetUint8;\n\t\t\t}else{\n\t\t\t\tdata[i * 4 + 3] = 100;\n\t\t\t}\n\n\t\t}\n\n\t\tvar a = 10;\n\n\t\tif(Potree.measureTimings){\n\t\t\tperformance.mark(\"computeVisibilityTextureData-end\");\n\t\t\tperformance.measure(\"render.computeVisibilityTextureData\", \"computeVisibilityTextureData-start\", \"computeVisibilityTextureData-end\");\n\t\t}\n\n\t\treturn {\n\t\t\tdata: data,\n\t\t\toffsets: visibleNodeTextureOffsets\n\t\t};\n\t}\n\n\tnodeIntersectsProfile (node, profile) {\n\t\tlet bbWorld = node.boundingBox.clone().applyMatrix4(this.matrixWorld);\n\t\tlet bsWorld = bbWorld.getBoundingSphere(new THREE.Sphere());\n\n\t\tlet intersects = false;\n\n\t\tfor (let i = 0; i < profile.points.length - 1; i++) {\n\n\t\t\tlet start = new THREE.Vector3(profile.points[i + 0].x, profile.points[i + 0].y, bsWorld.center.z);\n\t\t\tlet end = new THREE.Vector3(profile.points[i + 1].x, profile.points[i + 1].y, bsWorld.center.z);\n\n\t\t\tlet closest = new THREE.Line3(start, end).closestPointToPoint(bsWorld.center, true, new THREE.Vector3());\n\t\t\tlet distance = closest.distanceTo(bsWorld.center);\n\n\t\t\tintersects = intersects || (distance < (bsWorld.radius + profile.width));\n\t\t}\n\n\t\t//console.log(`${node.name}: ${intersects}`);\n\n\t\treturn intersects;\n\t}\n\n\tdeepestNodeAt(position){\n\t\t\n\t\tconst toObjectSpace = new THREE.Matrix4().getInverse(this.matrixWorld);\n\n\t\tconst objPos = position.clone().applyMatrix4(toObjectSpace);\n\n\t\tlet current = this.root;\n\t\twhile(true){\n\n\t\t\tlet containingChild = null;\n\n\t\t\tfor(const child of current.children){\n\n\t\t\t\tif(child !== undefined){\n\t\t\t\t\tif(child.getBoundingBox().containsPoint(objPos)){\n\t\t\t\t\t\tcontainingChild = child;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(containingChild !== null && containingChild instanceof PointCloudOctreeNode){\n\t\t\t\tcurrent = containingChild;\n\t\t\t}else{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tconst deepest = current;\n\n\t\treturn deepest;\n\t}\n\n\tnodesOnRay (nodes, ray) {\n\t\tlet nodesOnRay = [];\n\n\t\tlet _ray = ray.clone();\n\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\tlet node = nodes[i];\n\t\t\t// let inverseWorld = new THREE.Matrix4().getInverse(node.matrixWorld);\n\t\t\t// let sphere = node.getBoundingSphere().clone().applyMatrix4(node.sceneNode.matrixWorld);\n\t\t\tlet sphere = node.getBoundingSphere().clone().applyMatrix4(this.matrixWorld);\n\n\t\t\tif (_ray.intersectsSphere(sphere)) {\n\t\t\t\tnodesOnRay.push(node);\n\t\t\t}\n\t\t}\n\n\t\treturn nodesOnRay;\n\t}\n\n\tupdateMatrixWorld (force) {\n\t\tif (this.matrixAutoUpdate === true) this.updateMatrix();\n\n\t\tif (this.matrixWorldNeedsUpdate === true || force === true) {\n\t\t\tif (!this.parent) {\n\t\t\t\tthis.matrixWorld.copy(this.matrix);\n\t\t\t} else {\n\t\t\t\tthis.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\t\t}\n\t}\n\n\thideDescendants (object) {\n\t\tlet stack = [];\n\t\tfor (let i = 0; i < object.children.length; i++) {\n\t\t\tlet child = object.children[i];\n\t\t\tif (child.visible) {\n\t\t\t\tstack.push(child);\n\t\t\t}\n\t\t}\n\n\t\twhile (stack.length > 0) {\n\t\t\tlet object = stack.shift();\n\n\t\t\tobject.visible = false;\n\n\t\t\tfor (let i = 0; i < object.children.length; i++) {\n\t\t\t\tlet child = object.children[i];\n\t\t\t\tif (child.visible) {\n\t\t\t\t\tstack.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveToOrigin () {\n\t\tthis.position.set(0, 0, 0);\n\t\tthis.updateMatrixWorld(true);\n\t\tlet box = this.boundingBox;\n\t\tlet transform = this.matrixWorld;\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\n\t\tthis.position.set(0, 0, 0).sub(tBox.getCenter(new THREE.Vector3()));\n\t};\n\n\tmoveToGroundPlane () {\n\t\tthis.updateMatrixWorld(true);\n\t\tlet box = this.boundingBox;\n\t\tlet transform = this.matrixWorld;\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\n\t\tthis.position.y += -tBox.min.y;\n\t};\n\n\tgetBoundingBoxWorld () {\n\t\tthis.updateMatrixWorld(true);\n\t\tlet box = this.boundingBox;\n\t\tlet transform = this.matrixWorld;\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\n\n\t\treturn tBox;\n\t};\n\n\t/**\n\t * returns points inside the profile points\n\t *\n\t * maxDepth:\t\tsearch points up to the given octree depth\n\t *\n\t *\n\t * The return value is an array with all segments of the profile path\n\t *\tlet segment = {\n\t *\t\tstart:\tTHREE.Vector3,\n\t *\t\tend:\tTHREE.Vector3,\n\t *\t\tpoints: {}\n\t *\t\tproject: function()\n\t *\t};\n\t *\n\t * The project() function inside each segment can be used to transform\n\t * that segments point coordinates to line up along the x-axis.\n\t *\n\t *\n\t */\n\tgetPointsInProfile (profile, maxDepth, callback) {\n\t\tif (callback) {\n\t\t\tlet request = new Potree.ProfileRequest(this, profile, maxDepth, callback);\n\t\t\tthis.profileRequests.push(request);\n\n\t\t\treturn request;\n\t\t}\n\n\t\tlet points = {\n\t\t\tsegments: [],\n\t\t\tboundingBox: new THREE.Box3(),\n\t\t\tprojectedBoundingBox: new THREE.Box2()\n\t\t};\n\n\t\t// evaluate segments\n\t\tfor (let i = 0; i < profile.points.length - 1; i++) {\n\t\t\tlet start = profile.points[i];\n\t\t\tlet end = profile.points[i + 1];\n\t\t\tlet ps = this.getProfile(start, end, profile.width, maxDepth);\n\n\t\t\tlet segment = {\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tpoints: ps,\n\t\t\t\tproject: null\n\t\t\t};\n\n\t\t\tpoints.segments.push(segment);\n\n\t\t\tpoints.boundingBox.expandByPoint(ps.boundingBox.min);\n\t\t\tpoints.boundingBox.expandByPoint(ps.boundingBox.max);\n\t\t}\n\n\t\t// add projection functions to the segments\n\t\tlet mileage = new THREE.Vector3();\n\t\tfor (let i = 0; i < points.segments.length; i++) {\n\t\t\tlet segment = points.segments[i];\n\t\t\tlet start = segment.start;\n\t\t\tlet end = segment.end;\n\n\t\t\tlet project = (function (_start, _end, _mileage, _boundingBox) {\n\t\t\t\tlet start = _start;\n\t\t\t\tlet end = _end;\n\t\t\t\tlet mileage = _mileage;\n\t\t\t\tlet boundingBox = _boundingBox;\n\n\t\t\t\tlet xAxis = new THREE.Vector3(1, 0, 0);\n\t\t\t\tlet dir = new THREE.Vector3().subVectors(end, start);\n\t\t\t\tdir.y = 0;\n\t\t\t\tdir.normalize();\n\t\t\t\tlet alpha = Math.acos(xAxis.dot(dir));\n\t\t\t\tif (dir.z > 0) {\n\t\t\t\t\talpha = -alpha;\n\t\t\t\t}\n\n\t\t\t\treturn function (position) {\n\t\t\t\t\tlet toOrigin = new THREE.Matrix4().makeTranslation(-start.x, -boundingBox.min.y, -start.z);\n\t\t\t\t\tlet alignWithX = new THREE.Matrix4().makeRotationY(-alpha);\n\t\t\t\t\tlet applyMileage = new THREE.Matrix4().makeTranslation(mileage.x, 0, 0);\n\n\t\t\t\t\tlet pos = position.clone();\n\t\t\t\t\tpos.applyMatrix4(toOrigin);\n\t\t\t\t\tpos.applyMatrix4(alignWithX);\n\t\t\t\t\tpos.applyMatrix4(applyMileage);\n\n\t\t\t\t\treturn pos;\n\t\t\t\t};\n\t\t\t}(start, end, mileage.clone(), points.boundingBox.clone()));\n\n\t\t\tsegment.project = project;\n\n\t\t\tmileage.x += new THREE.Vector3(start.x, 0, start.z).distanceTo(new THREE.Vector3(end.x, 0, end.z));\n\t\t\tmileage.y += end.y - start.y;\n\t\t}\n\n\t\tpoints.projectedBoundingBox.min.x = 0;\n\t\tpoints.projectedBoundingBox.min.y = points.boundingBox.min.y;\n\t\tpoints.projectedBoundingBox.max.x = mileage.x;\n\t\tpoints.projectedBoundingBox.max.y = points.boundingBox.max.y;\n\n\t\treturn points;\n\t}\n\n\t/**\n\t * returns points inside the given profile bounds.\n\t *\n\t * start:\n\t * end:\n\t * width:\n\t * depth:\t\tsearch points up to the given octree depth\n\t * callback:\tif specified, points are loaded before searching\n\t *\n\t *\n\t */\n\tgetProfile (start, end, width, depth, callback) {\n\t\tlet request = new Potree.ProfileRequest(start, end, width, depth, callback);\n\t\tthis.profileRequests.push(request);\n\t};\n\n\tgetVisibleExtent () {\n\t\treturn this.visibleBounds.applyMatrix4(this.matrixWorld);\n\t};\n\n\tintersectsPoint(position){\n\n\t\tlet rootAvailable = this.pcoGeometry.root && this.pcoGeometry.root.geometry;\n\n\t\tif(!rootAvailable){\n\t\t\treturn false;\n\t\t}\n\n\t\tif(typeof this.signedDistanceField === \"undefined\"){\n\n\t\t\tconst resolution = 32;\n\t\t\tconst field = new Float32Array(resolution ** 3).fill(Infinity);\n\n\t\t\tconst positions = this.pcoGeometry.root.geometry.attributes.position;\n\t\t\tconst boundingBox = this.boundingBox;\n\n\t\t\tconst n = positions.count;\n\n\t\t\tfor(let i = 0; i < n; i = i + 3){\n\t\t\t\tconst x = positions.array[3 * i + 0];\n\t\t\t\tconst y = positions.array[3 * i + 1];\n\t\t\t\tconst z = positions.array[3 * i + 2];\n\n\t\t\t\tconst ix = parseInt(Math.min(resolution * (x / boundingBox.max.x), resolution - 1));\n\t\t\t\tconst iy = parseInt(Math.min(resolution * (y / boundingBox.max.y), resolution - 1));\n\t\t\t\tconst iz = parseInt(Math.min(resolution * (z / boundingBox.max.z), resolution - 1));\n\n\t\t\t\tconst index = ix + iy * resolution + iz * resolution * resolution;\n\n\t\t\t\tfield[index] = 0;\n\t\t\t}\n\n\t\t\tconst sdf = {\n\t\t\t\tresolution: resolution,\n\t\t\t\tfield: field,\n\t\t\t};\n\n\t\t\tthis.signedDistanceField = sdf;\n\t\t}\n\n\n\t\t{\n\t\t\tconst sdf = this.signedDistanceField;\n\t\t\tconst boundingBox = this.boundingBox;\n\n\t\t\tconst toObjectSpace = new THREE.Matrix4().getInverse(this.matrixWorld);\n\n\t\t\tconst objPos = position.clone().applyMatrix4(toObjectSpace);\n\n\t\t\tconst resolution = sdf.resolution;\n\t\t\tconst ix = parseInt(resolution * (objPos.x / boundingBox.max.x));\n\t\t\tconst iy = parseInt(resolution * (objPos.y / boundingBox.max.y));\n\t\t\tconst iz = parseInt(resolution * (objPos.z / boundingBox.max.z));\n\n\t\t\tif(ix < 0 || iy < 0 || iz < 0){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(ix >= resolution || iy >= resolution || iz >= resolution){\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst index = ix + iy * resolution + iz * resolution * resolution;\n\n\t\t\tconst value = sdf.field[index];\n\n\t\t\tif(value === 0){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t *\n\t *\n\t *\n\t * params.pickWindowSize:\tLook for points inside a pixel window of this size.\n\t *\t\t\t\t\t\t\tUse odd values: 1, 3, 5, ...\n\t *\n\t *\n\t * TODO: only draw pixels that are actually read with readPixels().\n\t *\n\t */\n\tpick(viewer, camera, ray, params = {}){\n\n\t\tlet renderer = viewer.renderer;\n\t\tlet pRenderer = viewer.pRenderer;\n\n\t\tperformance.mark(\"pick-start\");\n\n\t\tlet getVal = (a, b) => a !== undefined ? a : b;\n\n\t\tlet pickWindowSize = getVal(params.pickWindowSize, 17);\n\t\tlet pickOutsideClipRegion = getVal(params.pickOutsideClipRegion, false);\n\n\t\tpickWindowSize = 65;\n\n\t\tlet size = renderer.getSize(new THREE.Vector2());\n\n\t\tlet width = Math.ceil(getVal(params.width, size.width));\n\t\tlet height = Math.ceil(getVal(params.height, size.height));\n\n\t\tlet pointSizeType = getVal(params.pointSizeType, this.material.pointSizeType);\n\t\tlet pointSize = getVal(params.pointSize, this.material.size);\n\n\t\tlet nodes = this.nodesOnRay(this.visibleNodes, ray);\n\n\t\tif (nodes.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this.pickState) {\n\t\t\tlet scene = new THREE.Scene();\n\n\t\t\tlet material = new Potree.PointCloudMaterial();\n\t\t\tmaterial.activeAttributeName = \"indices\";\n\n\t\t\tlet renderTarget = new THREE.WebGLRenderTarget(\n\t\t\t\t1, 1,\n\t\t\t\t{ minFilter: THREE.LinearFilter,\n\t\t\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\t\t\tformat: THREE.RGBAFormat }\n\t\t\t);\n\n\t\t\tthis.pickState = {\n\t\t\t\trenderTarget: renderTarget,\n\t\t\t\tmaterial: material,\n\t\t\t\tscene: scene\n\t\t\t};\n\t\t};\n\n\t\tlet pickState = this.pickState;\n\t\tlet pickMaterial = pickState.material;\n\n\t\t{ // update pick material\n\t\t\tpickMaterial.pointSizeType = pointSizeType;\n\t\t\t//pickMaterial.shape = this.material.shape;\n\t\t\tpickMaterial.shape = Potree.PointShape.PARABOLOID;\n\n\t\t\tpickMaterial.uniforms.uFilterReturnNumberRange.value = this.material.uniforms.uFilterReturnNumberRange.value;\n\t\t\tpickMaterial.uniforms.uFilterNumberOfReturnsRange.value = this.material.uniforms.uFilterNumberOfReturnsRange.value;\n\t\t\tpickMaterial.uniforms.uFilterGPSTimeClipRange.value = this.material.uniforms.uFilterGPSTimeClipRange.value;\n\t\t\tpickMaterial.uniforms.uFilterPointSourceIDClipRange.value = this.material.uniforms.uFilterPointSourceIDClipRange.value;\n\n\t\t\tpickMaterial.activeAttributeName = \"indices\";\n\n\t\t\tpickMaterial.size = pointSize;\n\t\t\tpickMaterial.uniforms.minSize.value = this.material.uniforms.minSize.value;\n\t\t\tpickMaterial.uniforms.maxSize.value = this.material.uniforms.maxSize.value;\n\t\t\tpickMaterial.classification = this.material.classification;\n\t\t\tpickMaterial.recomputeClassification();\n\n\t\t\tif(params.pickClipped){\n\t\t\t\tpickMaterial.clipBoxes = this.material.clipBoxes;\n\t\t\t\tpickMaterial.uniforms.clipBoxes = this.material.uniforms.clipBoxes;\n\t\t\t\tif(this.material.clipTask === Potree.ClipTask.HIGHLIGHT){\n\t\t\t\t\tpickMaterial.clipTask = Potree.ClipTask.NONE;\n\t\t\t\t}else{\n\t\t\t\t\tpickMaterial.clipTask = this.material.clipTask;\n\t\t\t\t}\n\t\t\t\tpickMaterial.clipMethod = this.material.clipMethod;\n\t\t\t}else{\n\t\t\t\tpickMaterial.clipBoxes = [];\n\t\t\t}\n\n\t\t\tthis.updateMaterial(pickMaterial, nodes, camera, renderer);\n\t\t}\n\n\t\tpickState.renderTarget.setSize(width, height);\n\n\t\tlet pixelPos = new THREE.Vector2(params.x, params.y);\n\n\t\tlet gl = renderer.getContext();\n\t\tgl.enable(gl.SCISSOR_TEST);\n\t\tgl.scissor(\n\t\t\tparseInt(pixelPos.x - (pickWindowSize - 1) / 2),\n\t\t\tparseInt(pixelPos.y - (pickWindowSize - 1) / 2),\n\t\t\tparseInt(pickWindowSize), parseInt(pickWindowSize));\n\n\n\t\trenderer.state.buffers.depth.setTest(pickMaterial.depthTest);\n\t\trenderer.state.buffers.depth.setMask(pickMaterial.depthWrite);\n\t\trenderer.state.setBlending(THREE.NoBlending);\n\n\t\t{ // RENDER\n\t\t\trenderer.setRenderTarget(pickState.renderTarget);\n\t\t\tgl.clearColor(0, 0, 0, 0);\n\t\t\trenderer.clear(true, true, true);\n\n\t\t\tlet tmp = this.material;\n\t\t\tthis.material = pickMaterial;\n\n\t\t\tpRenderer.renderOctree(this, nodes, camera, pickState.renderTarget);\n\n\t\t\tthis.material = tmp;\n\t\t}\n\n\t\tlet clamp = (number, min, max) => Math.min(Math.max(min, number), max);\n\n\t\tlet x = parseInt(clamp(pixelPos.x - (pickWindowSize - 1) / 2, 0, width));\n\t\tlet y = parseInt(clamp(pixelPos.y - (pickWindowSize - 1) / 2, 0, height));\n\t\tlet w = parseInt(Math.min(x + pickWindowSize, width) - x);\n\t\tlet h = parseInt(Math.min(y + pickWindowSize, height) - y);\n\n\t\tlet pixelCount = w * h;\n\t\tlet buffer = new Uint8Array(4 * pixelCount);\n\n\t\tgl.readPixels(x, y, pickWindowSize, pickWindowSize, gl.RGBA, gl.UNSIGNED_BYTE, buffer);\n\n\t\trenderer.setRenderTarget(null);\n\t\trenderer.state.reset();\n\t\trenderer.setScissorTest(false);\n\t\tgl.disable(gl.SCISSOR_TEST);\n\n\t\tlet pixels = buffer;\n\t\tlet ibuffer = new Uint32Array(buffer.buffer);\n\n\t\t// find closest hit inside pixelWindow boundaries\n\t\tlet min = Number.MAX_VALUE;\n\t\tlet hits = [];\n\t\tfor (let u = 0; u < pickWindowSize; u++) {\n\t\t\tfor (let v = 0; v < pickWindowSize; v++) {\n\t\t\t\tlet offset = (u + v * pickWindowSize);\n\t\t\t\tlet distance = Math.pow(u - (pickWindowSize - 1) / 2, 2) + Math.pow(v - (pickWindowSize - 1) / 2, 2);\n\n\t\t\t\tlet pcIndex = pixels[4 * offset + 3];\n\t\t\t\tpixels[4 * offset + 3] = 0;\n\t\t\t\tlet pIndex = ibuffer[offset];\n\n\t\t\t\tif(!(pcIndex === 0 && pIndex === 0) && (pcIndex !== undefined) && (pIndex !== undefined)){\n\t\t\t\t\tlet hit = {\n\t\t\t\t\t\tpIndex: pIndex,\n\t\t\t\t\t\tpcIndex: pcIndex,\n\t\t\t\t\t\tdistanceToCenter: distance\n\t\t\t\t\t};\n\n\t\t\t\t\tif(params.all){\n\t\t\t\t\t\thits.push(hit);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(hits.length > 0){\n\t\t\t\t\t\t\tif(distance < hits[0].distanceToCenter){\n\t\t\t\t\t\t\t\thits[0] = hit;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\thits.push(hit);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//DEBUG: show panel with pick image\n\t\t// {\n\t\t// \tlet img = Utils.pixelsArrayToImage(buffer, w, h);\n\t\t// \tlet screenshot = img.src;\n\t\t\n\t\t// \tif(!this.debugDIV){\n\t\t// \t\tthis.debugDIV = $(`\n\t\t// \t\t\t
        `);\n\t\t// \t\t$(document.body).append(this.debugDIV);\n\t\t// \t}\n\t\t\n\t\t// \tthis.debugDIV.empty();\n\t\t// \tthis.debugDIV.append($(``));\n\t\t// \t//$(this.debugWindow.document).append($(``));\n\t\t// \t//this.debugWindow.document.write('');\n\t\t// }\n\n\n\t\tfor(let hit of hits){\n\t\t\tlet point = {};\n\n\t\t\tif (!nodes[hit.pcIndex]) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet node = nodes[hit.pcIndex];\n\t\t\tlet pc = node.sceneNode;\n\t\t\tlet geometry = node.geometryNode.geometry;\n\n\t\t\tfor(let attributeName in geometry.attributes){\n\t\t\t\tlet attribute = geometry.attributes[attributeName];\n\n\t\t\t\tif (attributeName === 'position') {\n\t\t\t\t\tlet x = attribute.array[3 * hit.pIndex + 0];\n\t\t\t\t\tlet y = attribute.array[3 * hit.pIndex + 1];\n\t\t\t\t\tlet z = attribute.array[3 * hit.pIndex + 2];\n\n\t\t\t\t\tlet position = new THREE.Vector3(x, y, z);\n\t\t\t\t\tposition.applyMatrix4(pc.matrixWorld);\n\n\t\t\t\t\tpoint[attributeName] = position;\n\t\t\t\t} else if (attributeName === 'indices') {\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet values = attribute.array.slice(attribute.itemSize * hit.pIndex, attribute.itemSize * (hit.pIndex + 1)) ;\n\n\t\t\t\t\tif(attribute.potree){\n\t\t\t\t\t\tconst {scale, offset} = attribute.potree;\n\t\t\t\t\t\tvalues = values.map(v => v / scale + offset);\n\t\t\t\t\t}\n\n\t\t\t\t\tpoint[attributeName] = values;\n\n\t\t\t\t\t//debugger;\n\t\t\t\t\t//if (values.itemSize === 1) {\n\t\t\t\t\t//\tpoint[attribute.name] = values.array[hit.pIndex];\n\t\t\t\t\t//} else {\n\t\t\t\t\t//\tlet value = [];\n\t\t\t\t\t//\tfor (let j = 0; j < values.itemSize; j++) {\n\t\t\t\t\t//\t\tvalue.push(values.array[values.itemSize * hit.pIndex + j]);\n\t\t\t\t\t//\t}\n\t\t\t\t\t//\tpoint[attribute.name] = value;\n\t\t\t\t\t//}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\thit.point = point;\n\t\t}\n\n\t\tperformance.mark(\"pick-end\");\n\t\tperformance.measure(\"pick\", \"pick-start\", \"pick-end\");\n\n\t\tif(params.all){\n\t\t\treturn hits.map(hit => hit.point);\n\t\t}else{\n\t\t\tif(hits.length === 0){\n\t\t\t\treturn null;\n\t\t\t}else{\n\t\t\t\treturn hits[0].point;\n\t\t\t\t//let sorted = hits.sort( (a, b) => a.distanceToCenter - b.distanceToCenter);\n\n\t\t\t\t//return sorted[0].point;\n\t\t\t}\n\t\t}\n\n\t};\n\n\t* getFittedBoxGen(boxNode){\n\t\tlet start = performance.now();\n\n\t\tlet shrinkedLocalBounds = new THREE.Box3();\n\t\tlet worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld);\n\n\t\tfor(let node of this.visibleNodes){\n\t\t\tif(!node.sceneNode){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet buffer = node.geometryNode.buffer;\n\n\t\t\tlet posOffset = buffer.offset(\"position\");\n\t\t\tlet stride = buffer.stride;\n\t\t\tlet view = new DataView(buffer.data);\n\n\t\t\tlet objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, node.sceneNode.matrixWorld);\n\n\t\t\tlet pos = new THREE.Vector4();\n\t\t\tfor(let i = 0; i < buffer.numElements; i++){\n\t\t\t\tlet x = view.getFloat32(i * stride + posOffset + 0, true);\n\t\t\t\tlet y = view.getFloat32(i * stride + posOffset + 4, true);\n\t\t\t\tlet z = view.getFloat32(i * stride + posOffset + 8, true);\n\n\t\t\t\tpos.set(x, y, z, 1);\n\t\t\t\tpos.applyMatrix4(objectToBox);\n\n\t\t\t\tif(-0.5 < pos.x && pos.x < 0.5){\n\t\t\t\t\tif(-0.5 < pos.y && pos.y < 0.5){\n\t\t\t\t\t\tif(-0.5 < pos.z && pos.z < 0.5){\n\t\t\t\t\t\t\tshrinkedLocalBounds.expandByPoint(pos);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tyield;\n\t\t}\n\n\t\tlet fittedPosition = shrinkedLocalBounds.getCenter(new THREE.Vector3()).applyMatrix4(boxNode.matrixWorld);\n\n\t\tlet fitted = new THREE.Object3D();\n\t\tfitted.position.copy(fittedPosition);\n\t\tfitted.scale.copy(boxNode.scale);\n\t\tfitted.rotation.copy(boxNode.rotation);\n\n\t\tlet ds = new THREE.Vector3().subVectors(shrinkedLocalBounds.max, shrinkedLocalBounds.min);\n\t\tfitted.scale.multiply(ds);\n\n\t\tlet duration = performance.now() - start;\n\t\tconsole.log(\"duration: \", duration);\n\n\t\tyield fitted;\n\t}\n\n\tgetFittedBox(boxNode, maxLevel = Infinity){\n\n\t\tmaxLevel = Infinity;\n\n\t\tlet start = performance.now();\n\n\t\tlet shrinkedLocalBounds = new THREE.Box3();\n\t\tlet worldToBox = new THREE.Matrix4().getInverse(boxNode.matrixWorld);\n\n\t\tfor(let node of this.visibleNodes){\n\t\t\tif(!node.sceneNode || node.getLevel() > maxLevel){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet buffer = node.geometryNode.buffer;\n\n\t\t\tlet posOffset = buffer.offset(\"position\");\n\t\t\tlet stride = buffer.stride;\n\t\t\tlet view = new DataView(buffer.data);\n\n\t\t\tlet objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, node.sceneNode.matrixWorld);\n\n\t\t\tlet pos = new THREE.Vector4();\n\t\t\tfor(let i = 0; i < buffer.numElements; i++){\n\t\t\t\tlet x = view.getFloat32(i * stride + posOffset + 0, true);\n\t\t\t\tlet y = view.getFloat32(i * stride + posOffset + 4, true);\n\t\t\t\tlet z = view.getFloat32(i * stride + posOffset + 8, true);\n\n\t\t\t\tpos.set(x, y, z, 1);\n\t\t\t\tpos.applyMatrix4(objectToBox);\n\n\t\t\t\tif(-0.5 < pos.x && pos.x < 0.5){\n\t\t\t\t\tif(-0.5 < pos.y && pos.y < 0.5){\n\t\t\t\t\t\tif(-0.5 < pos.z && pos.z < 0.5){\n\t\t\t\t\t\t\tshrinkedLocalBounds.expandByPoint(pos);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet fittedPosition = shrinkedLocalBounds.getCenter(new THREE.Vector3()).applyMatrix4(boxNode.matrixWorld);\n\n\t\tlet fitted = new THREE.Object3D();\n\t\tfitted.position.copy(fittedPosition);\n\t\tfitted.scale.copy(boxNode.scale);\n\t\tfitted.rotation.copy(boxNode.rotation);\n\n\t\tlet ds = new THREE.Vector3().subVectors(shrinkedLocalBounds.max, shrinkedLocalBounds.min);\n\t\tfitted.scale.multiply(ds);\n\n\t\tlet duration = performance.now() - start;\n\t\tconsole.log(\"duration: \", duration);\n\n\t\treturn fitted;\n\t}\n\n\tget progress () {\n\t\treturn this.visibleNodes.length / this.visibleGeometry.length;\n\t}\n\n\tfind(name){\n\t\tlet node = null;\n\t\tfor(let char of name){\n\t\t\tif(char === \"r\"){\n\t\t\t\tnode = this.root;\n\t\t\t}else{\n\t\t\t\tnode = node.children[char];\n\t\t\t}\n\t\t}\n\n\t\treturn node;\n\t}\n\n\tget visible(){\n\t\treturn this._visible;\n\t}\n\n\tset visible(value){\n\n\t\tif(value !== this._visible){\n\t\t\tthis._visible = value;\n\n\t\t\tthis.dispatchEvent({type: 'visibility_changed', pointcloud: this});\n\t\t}\n\n\t}\n\n}\n\n\n\n\n\n\n\n\n\n\n","\n\nexport class Points {\n\t\n\tconstructor () {\n\t\tthis.boundingBox = new THREE.Box3();\n\t\tthis.numPoints = 0;\n\t\tthis.data = {};\n\t}\n\n\tadd (points) {\n\t\tlet currentSize = this.numPoints;\n\t\tlet additionalSize = points.numPoints;\n\t\tlet newSize = currentSize + additionalSize;\n\n\t\tlet thisAttributes = Object.keys(this.data);\n\t\tlet otherAttributes = Object.keys(points.data);\n\t\tlet attributes = new Set([...thisAttributes, ...otherAttributes]);\n\n\t\tfor (let attribute of attributes) {\n\t\t\tif (thisAttributes.includes(attribute) && otherAttributes.includes(attribute)) {\n\t\t\t\t// attribute in both, merge\n\t\t\t\tlet Type = this.data[attribute].constructor;\n\t\t\t\tlet merged = new Type(this.data[attribute].length + points.data[attribute].length);\n\t\t\t\tmerged.set(this.data[attribute], 0);\n\t\t\t\tmerged.set(points.data[attribute], this.data[attribute].length);\n\t\t\t\tthis.data[attribute] = merged;\n\t\t\t} else if (thisAttributes.includes(attribute) && !otherAttributes.includes(attribute)) {\n\t\t\t\t// attribute only in this; take over this and expand to new size\n\t\t\t\tlet elementsPerPoint = this.data[attribute].length / this.numPoints;\n\t\t\t\tlet Type = this.data[attribute].constructor;\n\t\t\t\tlet expanded = new Type(elementsPerPoint * newSize);\n\t\t\t\texpanded.set(this.data[attribute], 0);\n\t\t\t\tthis.data[attribute] = expanded;\n\t\t\t} else if (!thisAttributes.includes(attribute) && otherAttributes.includes(attribute)) {\n\t\t\t\t// attribute only in points to be added; take over new points and expand to new size\n\t\t\t\tlet elementsPerPoint = points.data[attribute].length / points.numPoints;\n\t\t\t\tlet Type = points.data[attribute].constructor;\n\t\t\t\tlet expanded = new Type(elementsPerPoint * newSize);\n\t\t\t\texpanded.set(points.data[attribute], elementsPerPoint * currentSize);\n\t\t\t\tthis.data[attribute] = expanded;\n\t\t\t}\n\t\t}\n\n\t\tthis.numPoints = newSize;\n\n\t\tthis.boundingBox.union(points.boundingBox);\n\t}\n}","/**\n *\n * code adapted from three.js BoxHelper.js\n * https://github.com/mrdoob/three.js/blob/dev/src/helpers/BoxHelper.js\n *\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author mschuetz / http://potree.org\n */\n\nexport class Box3Helper extends THREE.LineSegments {\n\tconstructor (box, color) {\n\t\tif (color === undefined) color = 0xffff00;\n\n\t\tlet indices = new Uint16Array([ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ]);\n\t\tlet positions = new Float32Array([\n\t\t\tbox.min.x, box.min.y, box.min.z,\n\t\t\tbox.max.x, box.min.y, box.min.z,\n\t\t\tbox.max.x, box.min.y, box.max.z,\n\t\t\tbox.min.x, box.min.y, box.max.z,\n\t\t\tbox.min.x, box.max.y, box.min.z,\n\t\t\tbox.max.x, box.max.y, box.min.z,\n\t\t\tbox.max.x, box.max.y, box.max.z,\n\t\t\tbox.min.x, box.max.y, box.max.z\n\t\t]);\n\n\t\tlet geometry = new THREE.BufferGeometry();\n\t\tgeometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\t\tgeometry.addAttribute('position', new THREE.BufferAttribute(positions, 3));\n\n\t\tlet material = new THREE.LineBasicMaterial({ color: color });\n\n\t\tsuper(geometry, material);\n\t}\n}\n","\nimport {ClipTask, ClipMethod} from \"./defines.js\";\nimport {Box3Helper} from \"./utils/Box3Helper.js\";\n\nexport function updatePointClouds(pointclouds, camera, renderer){\n\n\tfor (let pointcloud of pointclouds) {\n\t\tlet start = performance.now();\n\n\t\tfor (let profileRequest of pointcloud.profileRequests) {\n\t\t\tprofileRequest.update();\n\n\t\t\tlet duration = performance.now() - start;\n\t\t\tif(duration > 5){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tlet duration = performance.now() - start;\n\t}\n\n\tlet result = updateVisibility(pointclouds, camera, renderer);\n\n\tfor (let pointcloud of pointclouds) {\n\t\tpointcloud.updateMaterial(pointcloud.material, pointcloud.visibleNodes, camera, renderer);\n\t\tpointcloud.updateVisibleBounds();\n\t}\n\n\texports.lru.freeMemory();\n\n\treturn result;\n};\n\n\n\nexport function updateVisibilityStructures(pointclouds, camera, renderer) {\n\tlet frustums = [];\n\tlet camObjPositions = [];\n\tlet priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; });\n\n\tfor (let i = 0; i < pointclouds.length; i++) {\n\t\tlet pointcloud = pointclouds[i];\n\n\t\tif (!pointcloud.initialized()) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tpointcloud.numVisibleNodes = 0;\n\t\tpointcloud.numVisiblePoints = 0;\n\t\tpointcloud.deepestVisibleLevel = 0;\n\t\tpointcloud.visibleNodes = [];\n\t\tpointcloud.visibleGeometry = [];\n\n\t\t// frustum in object space\n\t\tcamera.updateMatrixWorld();\n\t\tlet frustum = new THREE.Frustum();\n\t\tlet viewI = camera.matrixWorldInverse;\n\t\tlet world = pointcloud.matrixWorld;\n\t\t\n\t\t// use close near plane for frustum intersection\n\t\tlet frustumCam = camera.clone();\n\t\tfrustumCam.near = Math.min(camera.near, 0.1);\n\t\tfrustumCam.updateProjectionMatrix();\n\t\tlet proj = camera.projectionMatrix;\n\n\t\tlet fm = new THREE.Matrix4().multiply(proj).multiply(viewI).multiply(world);\n\t\tfrustum.setFromMatrix(fm);\n\t\tfrustums.push(frustum);\n\n\t\t// camera position in object space\n\t\tlet view = camera.matrixWorld;\n\t\tlet worldI = new THREE.Matrix4().getInverse(world);\n\t\tlet camMatrixObject = new THREE.Matrix4().multiply(worldI).multiply(view);\n\t\tlet camObjPos = new THREE.Vector3().setFromMatrixPosition(camMatrixObject);\n\t\tcamObjPositions.push(camObjPos);\n\n\t\tif (pointcloud.visible && pointcloud.root !== null) {\n\t\t\tpriorityQueue.push({pointcloud: i, node: pointcloud.root, weight: Number.MAX_VALUE});\n\t\t}\n\n\t\t// hide all previously visible nodes\n\t\t// if(pointcloud.root instanceof PointCloudOctreeNode){\n\t\t//\tpointcloud.hideDescendants(pointcloud.root.sceneNode);\n\t\t// }\n\t\tif (pointcloud.root.isTreeNode()) {\n\t\t\tpointcloud.hideDescendants(pointcloud.root.sceneNode);\n\t\t}\n\n\t\tfor (let j = 0; j < pointcloud.boundingBoxNodes.length; j++) {\n\t\t\tpointcloud.boundingBoxNodes[j].visible = false;\n\t\t}\n\t}\n\n\treturn {\n\t\t'frustums': frustums,\n\t\t'camObjPositions': camObjPositions,\n\t\t'priorityQueue': priorityQueue\n\t};\n};\n\n\nexport function updateVisibility(pointclouds, camera, renderer){\n\n\tlet numVisibleNodes = 0;\n\tlet numVisiblePoints = 0;\n\n\tlet numVisiblePointsInPointclouds = new Map(pointclouds.map(pc => [pc, 0]));\n\n\tlet visibleNodes = [];\n\tlet visibleGeometry = [];\n\tlet unloadedGeometry = [];\n\n\tlet lowestSpacing = Infinity;\n\n\t// calculate object space frustum and cam pos and setup priority queue\n\tlet s = updateVisibilityStructures(pointclouds, camera, renderer);\n\tlet frustums = s.frustums;\n\tlet camObjPositions = s.camObjPositions;\n\tlet priorityQueue = s.priorityQueue;\n\n\tlet loadedToGPUThisFrame = 0;\n\t\n\tlet domWidth = renderer.domElement.clientWidth;\n\tlet domHeight = renderer.domElement.clientHeight;\n\n\t// check if pointcloud has been transformed\n\t// some code will only be executed if changes have been detected\n\tif(!Potree._pointcloudTransformVersion){\n\t\tPotree._pointcloudTransformVersion = new Map();\n\t}\n\tlet pointcloudTransformVersion = Potree._pointcloudTransformVersion;\n\tfor(let pointcloud of pointclouds){\n\n\t\tif(!pointcloud.visible){\n\t\t\tcontinue;\n\t\t}\n\n\t\tpointcloud.updateMatrixWorld();\n\n\t\tif(!pointcloudTransformVersion.has(pointcloud)){\n\t\t\tpointcloudTransformVersion.set(pointcloud, {number: 0, transform: pointcloud.matrixWorld.clone()});\n\t\t}else{\n\t\t\tlet version = pointcloudTransformVersion.get(pointcloud);\n\n\t\t\tif(!version.transform.equals(pointcloud.matrixWorld)){\n\t\t\t\tversion.number++;\n\t\t\t\tversion.transform.copy(pointcloud.matrixWorld);\n\n\t\t\t\tpointcloud.dispatchEvent({\n\t\t\t\t\ttype: \"transformation_changed\",\n\t\t\t\t\ttarget: pointcloud\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\twhile (priorityQueue.size() > 0) {\n\t\tlet element = priorityQueue.pop();\n\t\tlet node = element.node;\n\t\tlet parent = element.parent;\n\t\tlet pointcloud = pointclouds[element.pointcloud];\n\n\t\t// { // restrict to certain nodes for debugging\n\t\t//\tlet allowedNodes = [\"r\", \"r0\", \"r4\"];\n\t\t//\tif(!allowedNodes.includes(node.name)){\n\t\t//\t\tcontinue;\n\t\t//\t}\n\t\t// }\n\n\t\tlet box = node.getBoundingBox();\n\t\tlet frustum = frustums[element.pointcloud];\n\t\tlet camObjPos = camObjPositions[element.pointcloud];\n\n\t\tlet insideFrustum = frustum.intersectsBox(box);\n\t\tlet maxLevel = pointcloud.maxLevel || Infinity;\n\t\tlet level = node.getLevel();\n\t\tlet visible = insideFrustum;\n\t\tvisible = visible && !(numVisiblePoints + node.getNumPoints() > Potree.pointBudget);\n\t\tvisible = visible && !(numVisiblePointsInPointclouds.get(pointcloud) + node.getNumPoints() > pointcloud.pointBudget);\n\t\tvisible = visible && level < maxLevel;\n\t\t//visible = visible && node.name !== \"r613\";\n\n\t\tlet clipBoxes = pointcloud.material.clipBoxes;\n\t\tif(true && clipBoxes.length > 0){\n\n\t\t\t//node.debug = false;\n\n\t\t\tlet numIntersecting = 0;\n\t\t\tlet numIntersectionVolumes = 0;\n\n\t\t\t//if(node.name === \"r60\"){\n\t\t\t//\tvar a = 10;\n\t\t\t//}\n\n\t\t\tfor(let clipBox of clipBoxes){\n\n\t\t\t\tlet pcWorldInverse = new THREE.Matrix4().getInverse(pointcloud.matrixWorld);\n\t\t\t\tlet toPCObject = pcWorldInverse.multiply(clipBox.box.matrixWorld);\n\n\t\t\t\tlet px = new THREE.Vector3(+0.5, 0, 0).applyMatrix4(pcWorldInverse);\n\t\t\t\tlet nx = new THREE.Vector3(-0.5, 0, 0).applyMatrix4(pcWorldInverse);\n\t\t\t\tlet py = new THREE.Vector3(0, +0.5, 0).applyMatrix4(pcWorldInverse);\n\t\t\t\tlet ny = new THREE.Vector3(0, -0.5, 0).applyMatrix4(pcWorldInverse);\n\t\t\t\tlet pz = new THREE.Vector3(0, 0, +0.5).applyMatrix4(pcWorldInverse);\n\t\t\t\tlet nz = new THREE.Vector3(0, 0, -0.5).applyMatrix4(pcWorldInverse);\n\n\t\t\t\tlet pxN = new THREE.Vector3().subVectors(nx, px).normalize();\n\t\t\t\tlet nxN = pxN.clone().multiplyScalar(-1);\n\t\t\t\tlet pyN = new THREE.Vector3().subVectors(ny, py).normalize();\n\t\t\t\tlet nyN = pyN.clone().multiplyScalar(-1);\n\t\t\t\tlet pzN = new THREE.Vector3().subVectors(nz, pz).normalize();\n\t\t\t\tlet nzN = pzN.clone().multiplyScalar(-1);\n\n\t\t\t\tlet pxPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pxN, px);\n\t\t\t\tlet nxPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nxN, nx);\n\t\t\t\tlet pyPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pyN, py);\n\t\t\t\tlet nyPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nyN, ny);\n\t\t\t\tlet pzPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pzN, pz);\n\t\t\t\tlet nzPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nzN, nz);\n\n\t\t\t\t//if(window.debugdraw !== undefined && window.debugdraw === true && node.name === \"r60\"){\n\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, pxPlane, 1, 0xFF0000);\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, nxPlane, 1, 0x990000);\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, pyPlane, 1, 0x00FF00);\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, nyPlane, 1, 0x009900);\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, pzPlane, 1, 0x0000FF);\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, nzPlane, 1, 0x000099);\n\n\t\t\t\t//\tPotree.utils.debugBox(viewer.scene.scene, box, new THREE.Matrix4(), 0x00FF00);\n\t\t\t\t//\tPotree.utils.debugBox(viewer.scene.scene, box, pointcloud.matrixWorld, 0xFF0000);\n\t\t\t\t//\tPotree.utils.debugBox(viewer.scene.scene, clipBox.box.boundingBox, clipBox.box.matrixWorld, 0xFF0000);\n\n\t\t\t\t//\twindow.debugdraw = false;\n\t\t\t\t//}\n\n\t\t\t\tlet frustum = new THREE.Frustum(pxPlane, nxPlane, pyPlane, nyPlane, pzPlane, nzPlane);\n\t\t\t\tlet intersects = frustum.intersectsBox(box);\n\n\t\t\t\tif(intersects){\n\t\t\t\t\tnumIntersecting++;\n\t\t\t\t}\n\t\t\t\tnumIntersectionVolumes++;\n\t\t\t}\n\n\t\t\tlet insideAny = numIntersecting > 0;\n\t\t\tlet insideAll = numIntersecting === numIntersectionVolumes;\n\n\t\t\tif(pointcloud.material.clipTask === ClipTask.SHOW_INSIDE){\n\t\t\t\tif(pointcloud.material.clipMethod === ClipMethod.INSIDE_ANY && insideAny){\n\t\t\t\t\t//node.debug = true\n\t\t\t\t}else if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ALL && insideAll){\n\t\t\t\t\t//node.debug = true;\n\t\t\t\t}else{\n\t\t\t\t\tvisible = false;\n\t\t\t\t}\n\t\t\t} else if(pointcloud.material.clipTask === ClipTask.SHOW_OUTSIDE){\n\t\t\t\t//if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ANY && !insideAny){\n\t\t\t\t//\t//visible = true;\n\t\t\t\t//\tlet a = 10;\n\t\t\t\t//}else if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ALL && !insideAll){\n\t\t\t\t//\t//visible = true;\n\t\t\t\t//\tlet a = 20;\n\t\t\t\t//}else{\n\t\t\t\t//\tvisible = false;\n\t\t\t\t//}\n\t\t\t}\n\t\t\t\n\n\t\t}\n\n\t\t// visible = [\"r\", \"r0\", \"r06\", \"r060\"].includes(node.name);\n\t\t// visible = [\"r\"].includes(node.name);\n\n\t\tif (node.spacing) {\n\t\t\tlowestSpacing = Math.min(lowestSpacing, node.spacing);\n\t\t} else if (node.geometryNode && node.geometryNode.spacing) {\n\t\t\tlowestSpacing = Math.min(lowestSpacing, node.geometryNode.spacing);\n\t\t}\n\n\t\tif (numVisiblePoints + node.getNumPoints() > Potree.pointBudget) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (!visible) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: not used, same as the declaration?\n\t\t// numVisibleNodes++;\n\t\tnumVisiblePoints += node.getNumPoints();\n\t\tlet numVisiblePointsInPointcloud = numVisiblePointsInPointclouds.get(pointcloud);\n\t\tnumVisiblePointsInPointclouds.set(pointcloud, numVisiblePointsInPointcloud + node.getNumPoints());\n\n\t\tpointcloud.numVisibleNodes++;\n\t\tpointcloud.numVisiblePoints += node.getNumPoints();\n\n\t\tif (node.isGeometryNode() && (!parent || parent.isTreeNode())) {\n\t\t\tif (node.isLoaded() && loadedToGPUThisFrame < 2) {\n\t\t\t\tnode = pointcloud.toTreeNode(node, parent);\n\t\t\t\tloadedToGPUThisFrame++;\n\t\t\t} else {\n\t\t\t\tunloadedGeometry.push(node);\n\t\t\t\tvisibleGeometry.push(node);\n\t\t\t}\n\t\t}\n\n\t\tif (node.isTreeNode()) {\n\t\t\texports.lru.touch(node.geometryNode);\n\t\t\tnode.sceneNode.visible = true;\n\t\t\tnode.sceneNode.material = pointcloud.material;\n\n\t\t\tvisibleNodes.push(node);\n\t\t\tpointcloud.visibleNodes.push(node);\n\n\t\t\tif(node._transformVersion === undefined){\n\t\t\t\tnode._transformVersion = -1;\n\t\t\t}\n\t\t\tlet transformVersion = pointcloudTransformVersion.get(pointcloud);\n\t\t\tif(node._transformVersion !== transformVersion.number){\n\t\t\t\tnode.sceneNode.updateMatrix();\n\t\t\t\tnode.sceneNode.matrixWorld.multiplyMatrices(pointcloud.matrixWorld, node.sceneNode.matrix);\t\n\t\t\t\tnode._transformVersion = transformVersion.number;\n\t\t\t}\n\n\t\t\tif (pointcloud.showBoundingBox && !node.boundingBoxNode && node.getBoundingBox) {\n\t\t\t\tlet boxHelper = new Box3Helper(node.getBoundingBox());\n\t\t\t\tboxHelper.matrixAutoUpdate = false;\n\t\t\t\tpointcloud.boundingBoxNodes.push(boxHelper);\n\t\t\t\tnode.boundingBoxNode = boxHelper;\n\t\t\t\tnode.boundingBoxNode.matrix.copy(pointcloud.matrixWorld);\n\t\t\t} else if (pointcloud.showBoundingBox) {\n\t\t\t\tnode.boundingBoxNode.visible = true;\n\t\t\t\tnode.boundingBoxNode.matrix.copy(pointcloud.matrixWorld);\n\t\t\t} else if (!pointcloud.showBoundingBox && node.boundingBoxNode) {\n\t\t\t\tnode.boundingBoxNode.visible = false;\n\t\t\t}\n\n\t\t\t// if(node.boundingBoxNode !== undefined && exports.debug.allowedNodes !== undefined){\n\t\t\t// \tif(!exports.debug.allowedNodes.includes(node.name)){\n\t\t\t// \t\tnode.boundingBoxNode.visible = false;\n\t\t\t// \t}\n\t\t\t// }\n\t\t}\n\n\t\t// add child nodes to priorityQueue\n\t\tlet children = node.getChildren();\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tlet child = children[i];\n\n\t\t\tlet weight = 0; \n\t\t\tif(camera.isPerspectiveCamera){\n\t\t\t\tlet sphere = child.getBoundingSphere();\n\t\t\t\tlet center = sphere.center;\n\t\t\t\t//let distance = sphere.center.distanceTo(camObjPos);\n\t\t\t\t\n\t\t\t\tlet dx = camObjPos.x - center.x;\n\t\t\t\tlet dy = camObjPos.y - center.y;\n\t\t\t\tlet dz = camObjPos.z - center.z;\n\t\t\t\t\n\t\t\t\tlet dd = dx * dx + dy * dy + dz * dz;\n\t\t\t\tlet distance = Math.sqrt(dd);\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tlet radius = sphere.radius;\n\t\t\t\t\n\t\t\t\tlet fov = (camera.fov * Math.PI) / 180;\n\t\t\t\tlet slope = Math.tan(fov / 2);\n\t\t\t\tlet projFactor = (0.5 * domHeight) / (slope * distance);\n\t\t\t\tlet screenPixelRadius = radius * projFactor;\n\t\t\t\t\n\t\t\t\tif(screenPixelRadius < pointcloud.minimumNodePixelSize){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\n\t\t\t\tweight = screenPixelRadius;\n\n\t\t\t\tif(distance - radius < 0){\n\t\t\t\t\tweight = Number.MAX_VALUE;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// TODO ortho visibility\n\t\t\t\tlet bb = child.getBoundingBox();\t\t\t\t\n\t\t\t\tlet distance = child.getBoundingSphere().center.distanceTo(camObjPos);\n\t\t\t\tlet diagonal = bb.max.clone().sub(bb.min).length();\n\t\t\t\t//weight = diagonal / distance;\n\n\t\t\t\tweight = diagonal;\n\t\t\t}\n\n\t\t\tpriorityQueue.push({pointcloud: element.pointcloud, node: child, parent: node, weight: weight});\n\t\t}\n\t}// end priority queue loop\n\n\t{ // update DEM\n\t\tlet maxDEMLevel = 4;\n\t\tlet candidates = pointclouds\n\t\t\t.filter(p => (p.generateDEM && p.dem instanceof Potree.DEM));\n\t\tfor (let pointcloud of candidates) {\n\t\t\tlet updatingNodes = pointcloud.visibleNodes.filter(n => n.getLevel() <= maxDEMLevel);\n\t\t\tpointcloud.dem.update(updatingNodes);\n\t\t}\n\t}\n\n\tfor (let i = 0; i < Math.min(Potree.maxNodesLoading, unloadedGeometry.length); i++) {\n\t\tunloadedGeometry[i].load();\n\t}\n\n\treturn {\n\t\tvisibleNodes: visibleNodes,\n\t\tnumVisiblePoints: numVisiblePoints,\n\t\tlowestSpacing: lowestSpacing\n\t};\n};\n\n","\n\nimport {PointCloudTree, PointCloudTreeNode} from \"../PointCloudTree.js\";\nimport {PointCloudMaterial} from \"../materials/PointCloudMaterial.js\";\nimport {PointSizeType, ClipTask, TreeType} from \"../defines.js\";\nimport {Utils} from \"../utils.js\";\n\n\n\nexport class PointCloudArena4DNode extends PointCloudTreeNode {\n\tconstructor () {\n\t\tsuper();\n\n\t\tthis.left = null;\n\t\tthis.right = null;\n\t\tthis.sceneNode = null;\n\t\tthis.kdtree = null;\n\t}\n\n\tgetNumPoints () {\n\t\treturn this.geometryNode.numPoints;\n\t}\n\n\tisLoaded () {\n\t\treturn true;\n\t}\n\n\tisTreeNode () {\n\t\treturn true;\n\t}\n\n\tisGeometryNode () {\n\t\treturn false;\n\t}\n\n\tgetLevel () {\n\t\treturn this.geometryNode.level;\n\t}\n\n\tgetBoundingSphere () {\n\t\treturn this.geometryNode.boundingSphere;\n\t}\n\n\tgetBoundingBox () {\n\t\treturn this.geometryNode.boundingBox;\n\t}\n\n\ttoTreeNode (child) {\n\t\tlet geometryNode = null;\n\n\t\tif (this.left === child) {\n\t\t\tgeometryNode = this.left;\n\t\t} else if (this.right === child) {\n\t\t\tgeometryNode = this.right;\n\t\t}\n\n\t\tif (!geometryNode.loaded) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet node = new PointCloudArena4DNode();\n\t\tlet sceneNode = THREE.PointCloud(geometryNode.geometry, this.kdtree.material);\n\t\tsceneNode.visible = false;\n\n\t\tnode.kdtree = this.kdtree;\n\t\tnode.geometryNode = geometryNode;\n\t\tnode.sceneNode = sceneNode;\n\t\tnode.parent = this;\n\t\tnode.left = this.geometryNode.left;\n\t\tnode.right = this.geometryNode.right;\n\t}\n\n\tgetChildren () {\n\t\tlet children = [];\n\n\t\tif (this.left) {\n\t\t\tchildren.push(this.left);\n\t\t}\n\n\t\tif (this.right) {\n\t\t\tchildren.push(this.right);\n\t\t}\n\n\t\treturn children;\n\t}\n};\n\nexport class PointCloudArena4D extends PointCloudTree{\n\tconstructor (geometry) {\n\t\tsuper();\n\n\t\tthis.root = null;\n\t\tif (geometry.root) {\n\t\t\tthis.root = geometry.root;\n\t\t} else {\n\t\t\tgeometry.addEventListener('hierarchy_loaded', () => {\n\t\t\t\tthis.root = geometry.root;\n\t\t\t});\n\t\t}\n\n\t\tthis.visiblePointsTarget = 2 * 1000 * 1000;\n\t\tthis.minimumNodePixelSize = 150;\n\n\t\tthis.position.sub(geometry.offset);\n\t\tthis.updateMatrix();\n\n\t\tthis.numVisibleNodes = 0;\n\t\tthis.numVisiblePoints = 0;\n\n\t\tthis.boundingBoxNodes = [];\n\t\tthis.loadQueue = [];\n\t\tthis.visibleNodes = [];\n\n\t\tthis.pcoGeometry = geometry;\n\t\tthis.boundingBox = this.pcoGeometry.boundingBox;\n\t\tthis.boundingSphere = this.pcoGeometry.boundingSphere;\n\t\tthis.material = new PointCloudMaterial({vertexColors: THREE.VertexColors, size: 0.05, treeType: TreeType.KDTREE});\n\t\tthis.material.sizeType = PointSizeType.ATTENUATED;\n\t\tthis.material.size = 0.05;\n\t\tthis.profileRequests = [];\n\t\tthis.name = '';\n\t}\n\n\tgetBoundingBoxWorld () {\n\t\tthis.updateMatrixWorld(true);\n\t\tlet box = this.boundingBox;\n\t\tlet transform = this.matrixWorld;\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\n\n\t\treturn tBox;\n\t};\n\n\tsetName (name) {\n\t\tif (this.name !== name) {\n\t\t\tthis.name = name;\n\t\t\tthis.dispatchEvent({type: 'name_changed', name: name, pointcloud: this});\n\t\t}\n\t}\n\n\tgetName () {\n\t\treturn this.name;\n\t}\n\n\tgetLevel () {\n\t\treturn this.level;\n\t}\n\n\ttoTreeNode (geometryNode, parent) {\n\t\tlet node = new PointCloudArena4DNode();\n\t\tlet sceneNode = new THREE.Points(geometryNode.geometry, this.material);\n\n\t\tsceneNode.frustumCulled = false;\n\t\tsceneNode.onBeforeRender = (_this, scene, camera, geometry, material, group) => {\n\t\t\tif (material.program) {\n\t\t\t\t_this.getContext().useProgram(material.program.program);\n\n\t\t\t\tif (material.program.getUniforms().map.level) {\n\t\t\t\t\tlet level = geometryNode.getLevel();\n\t\t\t\t\tmaterial.uniforms.level.value = level;\n\t\t\t\t\tmaterial.program.getUniforms().map.level.setValue(_this.getContext(), level);\n\t\t\t\t}\n\n\t\t\t\tif (this.visibleNodeTextureOffsets && material.program.getUniforms().map.vnStart) {\n\t\t\t\t\tlet vnStart = this.visibleNodeTextureOffsets.get(node);\n\t\t\t\t\tmaterial.uniforms.vnStart.value = vnStart;\n\t\t\t\t\tmaterial.program.getUniforms().map.vnStart.setValue(_this.getContext(), vnStart);\n\t\t\t\t}\n\n\t\t\t\tif (material.program.getUniforms().map.pcIndex) {\n\t\t\t\t\tlet i = node.pcIndex ? node.pcIndex : this.visibleNodes.indexOf(node);\n\t\t\t\t\tmaterial.uniforms.pcIndex.value = i;\n\t\t\t\t\tmaterial.program.getUniforms().map.pcIndex.setValue(_this.getContext(), i);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tnode.geometryNode = geometryNode;\n\t\tnode.sceneNode = sceneNode;\n\t\tnode.pointcloud = this;\n\t\tnode.left = geometryNode.left;\n\t\tnode.right = geometryNode.right;\n\n\t\tif (!parent) {\n\t\t\tthis.root = node;\n\t\t\tthis.add(sceneNode);\n\t\t} else {\n\t\t\tparent.sceneNode.add(sceneNode);\n\n\t\t\tif (parent.left === geometryNode) {\n\t\t\t\tparent.left = node;\n\t\t\t} else if (parent.right === geometryNode) {\n\t\t\t\tparent.right = node;\n\t\t\t}\n\t\t}\n\n\t\tlet disposeListener = function () {\n\t\t\tparent.sceneNode.remove(node.sceneNode);\n\n\t\t\tif (parent.left === node) {\n\t\t\t\tparent.left = geometryNode;\n\t\t\t} else if (parent.right === node) {\n\t\t\t\tparent.right = geometryNode;\n\t\t\t}\n\t\t};\n\t\tgeometryNode.oneTimeDisposeHandlers.push(disposeListener);\n\n\t\treturn node;\n\t}\n\n\tupdateMaterial (material, visibleNodes, camera, renderer) {\n\t\tmaterial.fov = camera.fov * (Math.PI / 180);\n\t\tmaterial.screenWidth = renderer.domElement.clientWidth;\n\t\tmaterial.screenHeight = renderer.domElement.clientHeight;\n\t\tmaterial.spacing = this.pcoGeometry.spacing;\n\t\tmaterial.near = camera.near;\n\t\tmaterial.far = camera.far;\n\n\t\t// reduce shader source updates by setting maxLevel slightly higher than actually necessary\n\t\tif (this.maxLevel > material.levels) {\n\t\t\tmaterial.levels = this.maxLevel + 2;\n\t\t}\n\n\t\t// material.uniforms.octreeSize.value = this.boundingBox.size().x;\n\t\tlet bbSize = this.boundingBox.getSize(new THREE.Vector3());\n\t\tmaterial.bbSize = [bbSize.x, bbSize.y, bbSize.z];\n\t}\n\n\tupdateVisibleBounds () {\n\n\t}\n\n\thideDescendants (object) {\n\t\tlet stack = [];\n\t\tfor (let i = 0; i < object.children.length; i++) {\n\t\t\tlet child = object.children[i];\n\t\t\tif (child.visible) {\n\t\t\t\tstack.push(child);\n\t\t\t}\n\t\t}\n\n\t\twhile (stack.length > 0) {\n\t\t\tlet child = stack.shift();\n\n\t\t\tchild.visible = false;\n\t\t\tif (child.boundingBoxNode) {\n\t\t\t\tchild.boundingBoxNode.visible = false;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < child.children.length; i++) {\n\t\t\t\tlet childOfChild = child.children[i];\n\t\t\t\tif (childOfChild.visible) {\n\t\t\t\t\tstack.push(childOfChild);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateMatrixWorld (force) {\n\t\t// node.matrixWorld.multiplyMatrices( node.parent.matrixWorld, node.matrix );\n\n\t\tif (this.matrixAutoUpdate === true) this.updateMatrix();\n\n\t\tif (this.matrixWorldNeedsUpdate === true || force === true) {\n\t\t\tif (this.parent === undefined) {\n\t\t\t\tthis.matrixWorld.copy(this.matrix);\n\t\t\t} else {\n\t\t\t\tthis.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\t\t}\n\t}\n\n\tnodesOnRay (nodes, ray) {\n\t\tlet nodesOnRay = [];\n\n\t\tlet _ray = ray.clone();\n\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\tlet node = nodes[i];\n\t\t\tlet sphere = node.getBoundingSphere().clone().applyMatrix4(node.sceneNode.matrixWorld);\n\t\t\t// TODO Unused: let box = node.getBoundingBox().clone().applyMatrix4(node.sceneNode.matrixWorld);\n\n\t\t\tif (_ray.intersectsSphere(sphere)) {\n\t\t\t\tnodesOnRay.push(node);\n\t\t\t}\n\t\t\t// if(_ray.isIntersectionBox(box)){\n\t\t\t//\tnodesOnRay.push(node);\n\t\t\t// }\n\t\t}\n\n\t\treturn nodesOnRay;\n\t}\n\n\tpick(viewer, camera, ray, params = {}){\n\n\t\tlet renderer = viewer.renderer;\n\t\tlet pRenderer = viewer.pRenderer;\n\n\t\tperformance.mark(\"pick-start\");\n\n\t\tlet getVal = (a, b) => a !== undefined ? a : b;\n\n\t\tlet pickWindowSize = getVal(params.pickWindowSize, 17);\n\t\tlet pickOutsideClipRegion = getVal(params.pickOutsideClipRegion, false);\n\n\t\tlet size = renderer.getSize(new THREE.Vector2());\n\n\t\tlet width = Math.ceil(getVal(params.width, size.width));\n\t\tlet height = Math.ceil(getVal(params.height, size.height));\n\n\t\tlet pointSizeType = getVal(params.pointSizeType, this.material.pointSizeType);\n\t\tlet pointSize = getVal(params.pointSize, this.material.size);\n\n\t\tlet nodes = this.nodesOnRay(this.visibleNodes, ray);\n\n\t\tif (nodes.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this.pickState) {\n\t\t\tlet scene = new THREE.Scene();\n\n\t\t\tlet material = new PointCloudMaterial();\n\t\t\tmaterial.activeAttributeName = \"indices\";\n\n\t\t\tlet renderTarget = new THREE.WebGLRenderTarget(\n\t\t\t\t1, 1,\n\t\t\t\t{ minFilter: THREE.LinearFilter,\n\t\t\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\t\t\tformat: THREE.RGBAFormat }\n\t\t\t);\n\n\t\t\tthis.pickState = {\n\t\t\t\trenderTarget: renderTarget,\n\t\t\t\tmaterial: material,\n\t\t\t\tscene: scene\n\t\t\t};\n\t\t};\n\n\t\tlet pickState = this.pickState;\n\t\tlet pickMaterial = pickState.material;\n\n\t\t{ // update pick material\n\t\t\tpickMaterial.pointSizeType = pointSizeType;\n\t\t\tpickMaterial.shape = this.material.shape;\n\n\t\t\tpickMaterial.size = pointSize;\n\t\t\tpickMaterial.uniforms.minSize.value = this.material.uniforms.minSize.value;\n\t\t\tpickMaterial.uniforms.maxSize.value = this.material.uniforms.maxSize.value;\n\t\t\tpickMaterial.classification = this.material.classification;\n\t\t\tif(params.pickClipped){\n\t\t\t\tpickMaterial.clipBoxes = this.material.clipBoxes;\n\t\t\t\tif(this.material.clipTask === ClipTask.HIGHLIGHT){\n\t\t\t\t\tpickMaterial.clipTask = ClipTask.NONE;\n\t\t\t\t}else{\n\t\t\t\t\tpickMaterial.clipTask = this.material.clipTask;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tpickMaterial.clipBoxes = [];\n\t\t\t}\n\t\t\t\n\t\t\tthis.updateMaterial(pickMaterial, nodes, camera, renderer);\n\t\t}\n\n\t\tpickState.renderTarget.setSize(width, height);\n\n\t\tlet pixelPos = new THREE.Vector2(params.x, params.y);\n\t\t\n\t\tlet gl = renderer.getContext();\n\t\tgl.enable(gl.SCISSOR_TEST);\n\t\tgl.scissor(\n\t\t\tparseInt(pixelPos.x - (pickWindowSize - 1) / 2),\n\t\t\tparseInt(pixelPos.y - (pickWindowSize - 1) / 2),\n\t\t\tparseInt(pickWindowSize), parseInt(pickWindowSize));\n\n\n\t\trenderer.state.buffers.depth.setTest(pickMaterial.depthTest);\n\t\trenderer.state.buffers.depth.setMask(pickMaterial.depthWrite);\n\t\trenderer.state.setBlending(THREE.NoBlending);\n\n\t\trenderer.clearTarget(pickState.renderTarget, true, true, true);\n\n\t\t{ // RENDER\n\t\t\trenderer.setRenderTarget(pickState.renderTarget);\n\t\t\tgl.clearColor(0, 0, 0, 0);\n\t\t\trenderer.clearTarget( pickState.renderTarget, true, true, true );\n\t\t\t\n\t\t\tlet tmp = this.material;\n\t\t\tthis.material = pickMaterial;\n\t\t\t\n\t\t\tpRenderer.renderOctree(this, nodes, camera, pickState.renderTarget);\n\t\t\t\n\t\t\tthis.material = tmp;\n\t\t}\n\n\t\tlet clamp = (number, min, max) => Math.min(Math.max(min, number), max);\n\n\t\tlet x = parseInt(clamp(pixelPos.x - (pickWindowSize - 1) / 2, 0, width));\n\t\tlet y = parseInt(clamp(pixelPos.y - (pickWindowSize - 1) / 2, 0, height));\n\t\tlet w = parseInt(Math.min(x + pickWindowSize, width) - x);\n\t\tlet h = parseInt(Math.min(y + pickWindowSize, height) - y);\n\n\t\tlet pixelCount = w * h;\n\t\tlet buffer = new Uint8Array(4 * pixelCount);\n\t\t\n\t\tgl.readPixels(x, y, pickWindowSize, pickWindowSize, gl.RGBA, gl.UNSIGNED_BYTE, buffer); \n\t\t\n\t\trenderer.setRenderTarget(null);\n\t\trenderer.state.reset();\n\t\trenderer.setScissorTest(false);\n\t\tgl.disable(gl.SCISSOR_TEST);\n\t\t\n\t\tlet pixels = buffer;\n\t\tlet ibuffer = new Uint32Array(buffer.buffer);\n\n\t\t// find closest hit inside pixelWindow boundaries\n\t\tlet min = Number.MAX_VALUE;\n\t\tlet hits = [];\n\t\tfor (let u = 0; u < pickWindowSize; u++) {\n\t\t\tfor (let v = 0; v < pickWindowSize; v++) {\n\t\t\t\tlet offset = (u + v * pickWindowSize);\n\t\t\t\tlet distance = Math.pow(u - (pickWindowSize - 1) / 2, 2) + Math.pow(v - (pickWindowSize - 1) / 2, 2);\n\n\t\t\t\tlet pcIndex = pixels[4 * offset + 3];\n\t\t\t\tpixels[4 * offset + 3] = 0;\n\t\t\t\tlet pIndex = ibuffer[offset];\n\n\t\t\t\tif(!(pcIndex === 0 && pIndex === 0) && (pcIndex !== undefined) && (pIndex !== undefined)){\n\t\t\t\t\tlet hit = {\n\t\t\t\t\t\tpIndex: pIndex,\n\t\t\t\t\t\tpcIndex: pcIndex,\n\t\t\t\t\t\tdistanceToCenter: distance\n\t\t\t\t\t};\n\n\t\t\t\t\tif(params.all){\n\t\t\t\t\t\thits.push(hit);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(hits.length > 0){\n\t\t\t\t\t\t\tif(distance < hits[0].distanceToCenter){\n\t\t\t\t\t\t\t\thits[0] = hit;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\thits.push(hit);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\n\t\tfor(let hit of hits){\n\t\t\tlet point = {};\n\t\t\n\t\t\tif (!nodes[hit.pcIndex]) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\n\t\t\tlet node = nodes[hit.pcIndex];\n\t\t\tlet pc = node.sceneNode;\n\t\t\tlet geometry = node.geometryNode.geometry;\n\t\t\t\n\t\t\tfor(let attributeName in geometry.attributes){\n\t\t\t\tlet attribute = geometry.attributes[attributeName];\n\t\t\n\t\t\t\tif (attributeName === 'position') {\n\t\t\t\t\tlet x = attribute.array[3 * hit.pIndex + 0];\n\t\t\t\t\tlet y = attribute.array[3 * hit.pIndex + 1];\n\t\t\t\t\tlet z = attribute.array[3 * hit.pIndex + 2];\n\t\t\t\t\t\n\t\t\t\t\tlet position = new THREE.Vector3(x, y, z);\n\t\t\t\t\tposition.applyMatrix4(pc.matrixWorld);\n\t\t\n\t\t\t\t\tpoint[attributeName] = position;\n\t\t\t\t} else if (attributeName === 'indices') {\n\t\t\n\t\t\t\t} else {\n\t\t\t\t\t//if (values.itemSize === 1) {\n\t\t\t\t\t//\tpoint[attribute.name] = values.array[hit.pIndex];\n\t\t\t\t\t//} else {\n\t\t\t\t\t//\tlet value = [];\n\t\t\t\t\t//\tfor (let j = 0; j < values.itemSize; j++) {\n\t\t\t\t\t//\t\tvalue.push(values.array[values.itemSize * hit.pIndex + j]);\n\t\t\t\t\t//\t}\n\t\t\t\t\t//\tpoint[attribute.name] = value;\n\t\t\t\t\t//}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\n\t\t\thit.point = point;\n\t\t}\n\n\t\tperformance.mark(\"pick-end\");\n\t\tperformance.measure(\"pick\", \"pick-start\", \"pick-end\");\n\n\t\tif(params.all){\n\t\t\treturn hits.map(hit => hit.point);\n\t\t}else{\n\t\t\tif(hits.length === 0){\n\t\t\t\treturn null;\n\t\t\t}else{\n\t\t\t\treturn hits[0].point;\n\t\t\t}\n\t\t}\n\t}\n\n\tcomputeVisibilityTextureData(nodes){\n\n\t\tif(exports.measureTimings) performance.mark(\"computeVisibilityTextureData-start\");\n\n\t\tlet data = new Uint8Array(nodes.length * 3);\n\t\tlet visibleNodeTextureOffsets = new Map();\n\n\t\t// copy array\n\t\tnodes = nodes.slice();\n\n\t\t// sort by level and number\n\t\tlet sort = function (a, b) {\n\t\t\tlet la = a.geometryNode.level;\n\t\t\tlet lb = b.geometryNode.level;\n\t\t\tlet na = a.geometryNode.number;\n\t\t\tlet nb = b.geometryNode.number;\n\t\t\tif (la !== lb) return la - lb;\n\t\t\tif (na < nb) return -1;\n\t\t\tif (na > nb) return 1;\n\t\t\treturn 0;\n\t\t};\n\t\tnodes.sort(sort);\n\n\t\tlet visibleNodeNames = [];\n\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\tvisibleNodeNames.push(nodes[i].geometryNode.number);\n\t\t}\n\n\t\tfor (let i = 0; i < nodes.length; i++) {\n\t\t\tlet node = nodes[i];\n\n\t\t\tvisibleNodeTextureOffsets.set(node, i);\n\n\t\t\tlet b1 = 0;\t// children\n\t\t\tlet b2 = 0;\t// offset to first child\n\t\t\tlet b3 = 0;\t// split\n\n\t\t\tif (node.geometryNode.left && visibleNodeNames.indexOf(node.geometryNode.left.number) > 0) {\n\t\t\t\tb1 += 1;\n\t\t\t\tb2 = visibleNodeNames.indexOf(node.geometryNode.left.number) - i;\n\t\t\t}\n\t\t\tif (node.geometryNode.right && visibleNodeNames.indexOf(node.geometryNode.right.number) > 0) {\n\t\t\t\tb1 += 2;\n\t\t\t\tb2 = (b2 === 0) ? visibleNodeNames.indexOf(node.geometryNode.right.number) - i : b2;\n\t\t\t}\n\n\t\t\tif (node.geometryNode.split === 'X') {\n\t\t\t\tb3 = 1;\n\t\t\t} else if (node.geometryNode.split === 'Y') {\n\t\t\t\tb3 = 2;\n\t\t\t} else if (node.geometryNode.split === 'Z') {\n\t\t\t\tb3 = 4;\n\t\t\t}\n\n\t\t\tdata[i * 3 + 0] = b1;\n\t\t\tdata[i * 3 + 1] = b2;\n\t\t\tdata[i * 3 + 2] = b3;\n\t\t}\n\n\t\tif(exports.measureTimings){\n\t\t\tperformance.mark(\"computeVisibilityTextureData-end\");\n\t\t\tperformance.measure(\"render.computeVisibilityTextureData\", \"computeVisibilityTextureData-start\", \"computeVisibilityTextureData-end\");\n\t\t}\n\n\t\treturn {\n\t\t\tdata: data,\n\t\t\toffsets: visibleNodeTextureOffsets\n\t\t};\n\t}\n\n\tget progress () {\n\t\tif (this.pcoGeometry.root) {\n\t\t\treturn exports.numNodesLoading > 0 ? 0 : 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n};\n","\nimport {PointCloudTree} from \"./PointCloudTree.js\";\nimport {PointCloudOctreeNode} from \"./PointCloudOctree.js\";\nimport {PointCloudArena4DNode} from \"./arena4d/PointCloudArena4D.js\";\nimport {PointSizeType, ClipTask, ElevationGradientRepeat} from \"./defines.js\";\n\n// Copied from three.js: WebGLRenderer.js\nfunction paramThreeToGL(_gl, p) {\n\n\tlet extension;\n\n\tif (p === THREE.RepeatWrapping) return _gl.REPEAT;\n\tif (p === THREE.ClampToEdgeWrapping) return _gl.CLAMP_TO_EDGE;\n\tif (p === THREE.MirroredRepeatWrapping) return _gl.MIRRORED_REPEAT;\n\n\tif (p === THREE.NearestFilter) return _gl.NEAREST;\n\tif (p === THREE.NearestMipMapNearestFilter) return _gl.NEAREST_MIPMAP_NEAREST;\n\tif (p === THREE.NearestMipMapLinearFilter) return _gl.NEAREST_MIPMAP_LINEAR;\n\n\tif (p === THREE.LinearFilter) return _gl.LINEAR;\n\tif (p === THREE.LinearMipMapNearestFilter) return _gl.LINEAR_MIPMAP_NEAREST;\n\tif (p === THREE.LinearMipMapLinearFilter) return _gl.LINEAR_MIPMAP_LINEAR;\n\n\tif (p === THREE.UnsignedByteType) return _gl.UNSIGNED_BYTE;\n\tif (p === THREE.UnsignedShort4444Type) return _gl.UNSIGNED_SHORT_4_4_4_4;\n\tif (p === THREE.UnsignedShort5551Type) return _gl.UNSIGNED_SHORT_5_5_5_1;\n\tif (p === THREE.UnsignedShort565Type) return _gl.UNSIGNED_SHORT_5_6_5;\n\n\tif (p === THREE.ByteType) return _gl.BYTE;\n\tif (p === THREE.ShortType) return _gl.SHORT;\n\tif (p === THREE.UnsignedShortType) return _gl.UNSIGNED_SHORT;\n\tif (p === THREE.IntType) return _gl.INT;\n\tif (p === THREE.UnsignedIntType) return _gl.UNSIGNED_INT;\n\tif (p === THREE.FloatType) return _gl.FLOAT;\n\n\tif (p === THREE.HalfFloatType) {\n\n\t\textension = extensions.get('OES_texture_half_float');\n\n\t\tif (extension !== null) return extension.HALF_FLOAT_OES;\n\n\t}\n\n\tif (p === THREE.AlphaFormat) return _gl.ALPHA;\n\tif (p === THREE.RGBFormat) return _gl.RGB;\n\tif (p === THREE.RGBAFormat) return _gl.RGBA;\n\tif (p === THREE.LuminanceFormat) return _gl.LUMINANCE;\n\tif (p === THREE.LuminanceAlphaFormat) return _gl.LUMINANCE_ALPHA;\n\tif (p === THREE.DepthFormat) return _gl.DEPTH_COMPONENT;\n\tif (p === THREE.DepthStencilFormat) return _gl.DEPTH_STENCIL;\n\n\tif (p === THREE.AddEquation) return _gl.FUNC_ADD;\n\tif (p === THREE.SubtractEquation) return _gl.FUNC_SUBTRACT;\n\tif (p === THREE.ReverseSubtractEquation) return _gl.FUNC_REVERSE_SUBTRACT;\n\n\tif (p === THREE.ZeroFactor) return _gl.ZERO;\n\tif (p === THREE.OneFactor) return _gl.ONE;\n\tif (p === THREE.SrcColorFactor) return _gl.SRC_COLOR;\n\tif (p === THREE.OneMinusSrcColorFactor) return _gl.ONE_MINUS_SRC_COLOR;\n\tif (p === THREE.SrcAlphaFactor) return _gl.SRC_ALPHA;\n\tif (p === THREE.OneMinusSrcAlphaFactor) return _gl.ONE_MINUS_SRC_ALPHA;\n\tif (p === THREE.DstAlphaFactor) return _gl.DST_ALPHA;\n\tif (p === THREE.OneMinusDstAlphaFactor) return _gl.ONE_MINUS_DST_ALPHA;\n\n\tif (p === THREE.DstColorFactor) return _gl.DST_COLOR;\n\tif (p === THREE.OneMinusDstColorFactor) return _gl.ONE_MINUS_DST_COLOR;\n\tif (p === THREE.SrcAlphaSaturateFactor) return _gl.SRC_ALPHA_SATURATE;\n\n\tif (p === THREE.RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\tp === THREE.RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) {\n\n\t\textension = extensions.get('WEBGL_compressed_texture_s3tc');\n\n\t\tif (extension !== null) {\n\n\t\t\tif (p === THREE.RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\tif (p === THREE.RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\tif (p === THREE.RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\tif (p === THREE.RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t}\n\n\t}\n\n\tif (p === THREE.RGB_PVRTC_4BPPV1_Format || p === THREE.RGB_PVRTC_2BPPV1_Format ||\n\t\tp === THREE.RGBA_PVRTC_4BPPV1_Format || p === THREE.RGBA_PVRTC_2BPPV1_Format) {\n\n\t\textension = extensions.get('WEBGL_compressed_texture_pvrtc');\n\n\t\tif (extension !== null) {\n\n\t\t\tif (p === THREE.RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\tif (p === THREE.RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\tif (p === THREE.RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\tif (p === THREE.RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t}\n\n\t}\n\n\tif (p === THREE.RGB_ETC1_Format) {\n\n\t\textension = extensions.get('WEBGL_compressed_texture_etc1');\n\n\t\tif (extension !== null) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t}\n\n\tif (p === THREE.MinEquation || p === THREE.MaxEquation) {\n\n\t\textension = extensions.get('EXT_blend_minmax');\n\n\t\tif (extension !== null) {\n\n\t\t\tif (p === THREE.MinEquation) return extension.MIN_EXT;\n\t\t\tif (p === THREE.MaxEquation) return extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tif (p === UnsignedInt248Type) {\n\n\t\textension = extensions.get('WEBGL_depth_texture');\n\n\t\tif (extension !== null) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t}\n\n\treturn 0;\n\n};\n\nlet attributeLocations = {\n\t\"position\": {name: \"position\", location: 0},\n\t\"color\": {name: \"color\", location: 1},\n\t\"rgba\": {name: \"color\", location: 1},\n\t\"intensity\": {name: \"intensity\", location: 2},\n\t\"classification\": {name: \"classification\", location: 3},\n\t\"returnNumber\": {name: \"returnNumber\", location: 4},\n\t\"return number\": {name: \"returnNumber\", location: 4},\n\t\"returns\": {name: \"returnNumber\", location: 4},\n\t\"numberOfReturns\": {name: \"numberOfReturns\", location: 5},\n\t\"number of returns\": {name: \"numberOfReturns\", location: 5},\n\t\"pointSourceID\": {name: \"pointSourceID\", location: 6},\n\t\"source id\": {name: \"pointSourceID\", location: 6},\n\t\"point source id\": {name: \"pointSourceID\", location: 6},\n\t\"indices\": {name: \"indices\", location: 7},\n\t\"normal\": {name: \"normal\", location: 8},\n\t\"spacing\": {name: \"spacing\", location: 9},\n\t\"gps-time\": {name: \"gpsTime\", location: 10},\n\t\"aExtra\": {name: \"aExtra\", location: 11},\n};\n\nclass Shader {\n\n\tconstructor(gl, name, vsSource, fsSource) {\n\t\tthis.gl = gl;\n\t\tthis.name = name;\n\t\tthis.vsSource = vsSource;\n\t\tthis.fsSource = fsSource;\n\n\t\tthis.cache = new Map();\n\n\t\tthis.vs = null;\n\t\tthis.fs = null;\n\t\tthis.program = null;\n\n\t\tthis.uniformLocations = {};\n\t\tthis.attributeLocations = {};\n\t\tthis.uniformBlockIndices = {};\n\t\tthis.uniformBlocks = {};\n\t\tthis.uniforms = {};\n\n\t\tthis.update(vsSource, fsSource);\n\t}\n\n\tupdate(vsSource, fsSource) {\n\t\tthis.vsSource = vsSource;\n\t\tthis.fsSource = fsSource;\n\n\t\tthis.linkProgram();\n\t}\n\n\tcompileShader(shader, source){\n\t\tlet gl = this.gl;\n\n\t\tgl.shaderSource(shader, source);\n\n\t\tgl.compileShader(shader);\n\n\t\tlet success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\t\tif (!success) {\n\t\t\tlet info = gl.getShaderInfoLog(shader);\n\t\t\tlet numberedSource = source.split(\"\\n\").map((a, i) => `${i + 1}`.padEnd(5) + a).join(\"\\n\");\n\t\t\tthrow `could not compile shader ${this.name}: ${info}, \\n${numberedSource}`;\n\t\t}\n\t}\n\n\tlinkProgram() {\n\n\t\tconst tStart = performance.now();\n\n\t\tlet gl = this.gl;\n\n\t\tthis.uniformLocations = {};\n\t\tthis.attributeLocations = {};\n\t\tthis.uniforms = {};\n\n\t\tgl.useProgram(null);\n\n\t\tlet cached = this.cache.get(`${this.vsSource}, ${this.fsSource}`);\n\t\tif (cached) {\n\t\t\tthis.program = cached.program;\n\t\t\tthis.vs = cached.vs;\n\t\t\tthis.fs = cached.fs;\n\t\t\tthis.attributeLocations = cached.attributeLocations;\n\t\t\tthis.uniformLocations = cached.uniformLocations;\n\t\t\tthis.uniformBlocks = cached.uniformBlocks;\n\t\t\tthis.uniforms = cached.uniforms;\n\n\t\t\treturn;\n\t\t} else {\n\n\t\t\tthis.vs = gl.createShader(gl.VERTEX_SHADER);\n\t\t\tthis.fs = gl.createShader(gl.FRAGMENT_SHADER);\n\t\t\tthis.program = gl.createProgram();\n\n\t\t\tfor(let name of Object.keys(attributeLocations)){\n\t\t\t\tlet location = attributeLocations[name].location;\n\t\t\t\tlet glslName = attributeLocations[name].name;\n\t\t\t\tgl.bindAttribLocation(this.program, location, glslName);\n\t\t\t}\n\n\t\t\tthis.compileShader(this.vs, this.vsSource);\n\t\t\tthis.compileShader(this.fs, this.fsSource);\n\n\t\t\tlet program = this.program;\n\n\t\t\tgl.attachShader(program, this.vs);\n\t\t\tgl.attachShader(program, this.fs);\n\n\t\t\tgl.linkProgram(program);\n\n\t\t\tgl.detachShader(program, this.vs);\n\t\t\tgl.detachShader(program, this.fs);\n\n\t\t\tlet success = gl.getProgramParameter(program, gl.LINK_STATUS);\n\t\t\tif (!success) {\n\t\t\t\tlet info = gl.getProgramInfoLog(program);\n\t\t\t\tthrow `could not link program ${this.name}: ${info}`;\n\t\t\t}\n\n\t\t\t{ // attribute locations\n\t\t\t\tlet numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n\n\t\t\t\tfor (let i = 0; i < numAttributes; i++) {\n\t\t\t\t\tlet attribute = gl.getActiveAttrib(program, i);\n\n\t\t\t\t\tlet location = gl.getAttribLocation(program, attribute.name);\n\n\t\t\t\t\tthis.attributeLocations[attribute.name] = location;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t{ // uniform locations\n\t\t\t\tlet numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n\n\t\t\t\tfor (let i = 0; i < numUniforms; i++) {\n\t\t\t\t\tlet uniform = gl.getActiveUniform(program, i);\n\n\t\t\t\t\tlet location = gl.getUniformLocation(program, uniform.name);\n\n\t\t\t\t\tthis.uniformLocations[uniform.name] = location;\n\t\t\t\t\tthis.uniforms[uniform.name] = {\n\t\t\t\t\t\tlocation: location,\n\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// uniform blocks\n\t\t\tif(gl instanceof WebGL2RenderingContext){ \n\t\t\t\tlet numBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n\n\t\t\t\tfor (let i = 0; i < numBlocks; i++) {\n\t\t\t\t\tlet blockName = gl.getActiveUniformBlockName(program, i);\n\n\t\t\t\t\tlet blockIndex = gl.getUniformBlockIndex(program, blockName);\n\n\t\t\t\t\tthis.uniformBlockIndices[blockName] = blockIndex;\n\n\t\t\t\t\tgl.uniformBlockBinding(program, blockIndex, blockIndex);\n\t\t\t\t\tlet dataSize = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE);\n\n\t\t\t\t\tlet uBuffer = gl.createBuffer();\t\n\t\t\t\t\tgl.bindBuffer(gl.UNIFORM_BUFFER, uBuffer);\n\t\t\t\t\tgl.bufferData(gl.UNIFORM_BUFFER, dataSize, gl.DYNAMIC_READ);\n\n\t\t\t\t\tgl.bindBufferBase(gl.UNIFORM_BUFFER, blockIndex, uBuffer);\n\n\t\t\t\t\tgl.bindBuffer(gl.UNIFORM_BUFFER, null);\n\n\t\t\t\t\tthis.uniformBlocks[blockName] = {\n\t\t\t\t\t\tname: blockName,\n\t\t\t\t\t\tindex: blockIndex,\n\t\t\t\t\t\tdataSize: dataSize,\n\t\t\t\t\t\tbuffer: uBuffer\n\t\t\t\t\t};\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet cached = {\n\t\t\t\tprogram: this.program,\n\t\t\t\tvs: this.vs,\n\t\t\t\tfs: this.fs,\n\t\t\t\tattributeLocations: this.attributeLocations,\n\t\t\t\tuniformLocations: this.uniformLocations,\n\t\t\t\tuniforms: this.uniforms,\n\t\t\t\tuniformBlocks: this.uniformBlocks,\n\t\t\t};\n\n\t\t\tthis.cache.set(`${this.vsSource}, ${this.fsSource}`, cached);\n\t\t}\n\n\t\tconst tEnd = performance.now();\n\t\tconst duration = tEnd - tStart;\n\n\t\tconsole.log(`shader compile duration: ${duration.toFixed(3)}`);\n\n\n\t}\n\n\tsetUniformMatrix4(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst location = this.uniformLocations[name];\n\n\t\tif (location == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet tmp = new Float32Array(value.elements);\n\t\tgl.uniformMatrix4fv(location, false, tmp);\n\t}\n\n\tsetUniform1f(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst uniform = this.uniforms[name];\n\n\t\tif (uniform === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(uniform.value === value){\n\t\t\treturn;\n\t\t}\n\n\t\tuniform.value = value;\n\n\t\tgl.uniform1f(uniform.location, value);\n\t}\n\n\tsetUniformBoolean(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst uniform = this.uniforms[name];\n\n\t\tif (uniform === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(uniform.value === value){\n\t\t\treturn;\n\t\t}\n\n\t\tuniform.value = value;\n\n\t\tgl.uniform1i(uniform.location, value);\n\t}\n\n\tsetUniformTexture(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst location = this.uniformLocations[name];\n\n\t\tif (location == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tgl.uniform1i(location, value);\n\t}\n\n\tsetUniform2f(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst location = this.uniformLocations[name];\n\n\t\tif (location == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tgl.uniform2f(location, value[0], value[1]);\n\t}\n\n\tsetUniform3f(name, value) {\n\t\tconst gl = this.gl;\n\t\tconst location = this.uniformLocations[name];\n\n\t\tif (location == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tgl.uniform3f(location, value[0], value[1], value[2]);\n\t}\n\n\tsetUniform(name, value) {\n\n\t\tif (value.constructor === THREE.Matrix4) {\n\t\t\tthis.setUniformMatrix4(name, value);\n\t\t} else if (typeof value === \"number\") {\n\t\t\tthis.setUniform1f(name, value);\n\t\t} else if (typeof value === \"boolean\") {\n\t\t\tthis.setUniformBoolean(name, value);\n\t\t} else if (value instanceof WebGLTexture) {\n\t\t\tthis.setUniformTexture(name, value);\n\t\t} else if (value instanceof Array) {\n\n\t\t\tif (value.length === 2) {\n\t\t\t\tthis.setUniform2f(name, value);\n\t\t\t} else if (value.length === 3) {\n\t\t\t\tthis.setUniform3f(name, value);\n\t\t\t}\n\n\t\t} else {\n\t\t\tconsole.error(\"unhandled uniform type: \", name, value);\n\t\t}\n\n\t}\n\n\n\tsetUniform1i(name, value) {\n\t\tlet gl = this.gl;\n\t\tlet location = this.uniformLocations[name];\n\n\t\tif (location == null) {\n\t\t\treturn;\n\t\t}\n\n\t\tgl.uniform1i(location, value);\n\t}\n\n};\n\nclass WebGLTexture {\n\n\tconstructor(gl, texture) {\n\t\tthis.gl = gl;\n\n\t\tthis.texture = texture;\n\t\tthis.id = gl.createTexture();\n\n\t\tthis.target = gl.TEXTURE_2D;\n\t\tthis.version = -1;\n\n\t\tthis.update(texture);\n\t}\n\n\tupdate() {\n\n\t\tif (!this.texture.image) {\n\t\t\tthis.version = this.texture.version;\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet gl = this.gl;\n\t\tlet texture = this.texture;\n\n\t\tif (this.version === texture.version) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.target = gl.TEXTURE_2D;\n\n\t\tgl.bindTexture(this.target, this.id);\n\n\t\tlet level = 0;\n\t\tlet internalFormat = paramThreeToGL(gl, texture.format);\n\t\tlet width = texture.image.width;\n\t\tlet height = texture.image.height;\n\t\tlet border = 0;\n\t\tlet srcFormat = internalFormat;\n\t\tlet srcType = paramThreeToGL(gl, texture.type);\n\t\tlet data;\n\n\t\tgl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, texture.flipY);\n\t\tgl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha);\n\t\tgl.pixelStorei(gl.UNPACK_ALIGNMENT, texture.unpackAlignment);\n\n\t\tif (texture instanceof THREE.DataTexture) {\n\t\t\tdata = texture.image.data;\n\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, paramThreeToGL(gl, texture.magFilter));\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, paramThreeToGL(gl, texture.minFilter));\n\n\t\t\tgl.texImage2D(this.target, level, internalFormat,\n\t\t\t\twidth, height, border, srcFormat, srcType,\n\t\t\t\tdata);\n\t\t} else if ((texture instanceof THREE.CanvasTexture) || (texture instanceof THREE.Texture)) {\n\t\t\tdata = texture.image;\n\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_S, paramThreeToGL(gl, texture.wrapS));\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_T, paramThreeToGL(gl, texture.wrapT));\n\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, paramThreeToGL(gl, texture.magFilter));\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, paramThreeToGL(gl, texture.minFilter));\n\n\t\t\tgl.texImage2D(this.target, level, internalFormat,\n\t\t\t\tinternalFormat, srcType, data);\n\n\t\t\tif (texture instanceof THREE.Texture) {gl.generateMipmap(gl.TEXTURE_2D);}\n\t\t}\n\n\t\tgl.bindTexture(this.target, null);\n\n\t\tthis.version = texture.version;\n\t}\n\n};\n\nclass WebGLBuffer {\n\n\tconstructor() {\n\t\tthis.numElements = 0;\n\t\tthis.vao = null;\n\t\tthis.vbos = new Map();\n\t}\n\n};\n\nexport class Renderer {\n\n\tconstructor(threeRenderer) {\n\t\tthis.threeRenderer = threeRenderer;\n\t\tthis.gl = this.threeRenderer.getContext();\n\n\t\tthis.buffers = new Map();\n\t\tthis.shaders = new Map();\n\t\tthis.textures = new Map();\n\n\t\tthis.glTypeMapping = new Map();\n\t\tthis.glTypeMapping.set(Float32Array, this.gl.FLOAT);\n\t\tthis.glTypeMapping.set(Uint8Array, this.gl.UNSIGNED_BYTE);\n\t\tthis.glTypeMapping.set(Uint16Array, this.gl.UNSIGNED_SHORT);\n\n\t\tthis.toggle = 0;\n\t}\n\n\tdeleteBuffer(geometry) {\n\n\t\tlet gl = this.gl;\n\t\tlet webglBuffer = this.buffers.get(geometry);\n\t\tif (webglBuffer != null) {\n\t\t\tfor (let attributeName in geometry.attributes) {\n\t\t\t\tgl.deleteBuffer(webglBuffer.vbos.get(attributeName).handle);\n\t\t\t}\n\t\t\tthis.buffers.delete(geometry);\n\t\t}\n\t}\n\n\tcreateBuffer(geometry){\n\t\tlet gl = this.gl;\n\t\tlet webglBuffer = new WebGLBuffer();\n\t\twebglBuffer.vao = gl.createVertexArray();\n\t\twebglBuffer.numElements = geometry.attributes.position.count;\n\n\t\tgl.bindVertexArray(webglBuffer.vao);\n\n\t\tfor(let attributeName in geometry.attributes){\n\t\t\tlet bufferAttribute = geometry.attributes[attributeName];\n\n\t\t\tlet vbo = gl.createBuffer();\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo);\n\t\t\tgl.bufferData(gl.ARRAY_BUFFER, bufferAttribute.array, gl.STATIC_DRAW);\n\n\t\t\tlet normalized = bufferAttribute.normalized;\n\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\n\n\t\t\tif(attributeLocations[attributeName] === undefined){\n\t\t\t\t//attributeLocation = attributeLocations[\"aExtra\"];\n\t\t\t}else{\n\t\t\t\tlet attributeLocation = attributeLocations[attributeName].location;\n\n\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\n\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\n\t\t\t}\n\n\n\t\t\twebglBuffer.vbos.set(attributeName, {\n\t\t\t\thandle: vbo,\n\t\t\t\tname: attributeName,\n\t\t\t\tcount: bufferAttribute.count,\n\t\t\t\titemSize: bufferAttribute.itemSize,\n\t\t\t\ttype: geometry.attributes.position.array.constructor,\n\t\t\t\tversion: 0\n\t\t\t});\n\t\t}\n\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\tgl.bindVertexArray(null);\n\n\t\tlet disposeHandler = (event) => {\n\t\t\tthis.deleteBuffer(geometry);\n\t\t\tgeometry.removeEventListener(\"dispose\", disposeHandler);\n\t\t};\n\t\tgeometry.addEventListener(\"dispose\", disposeHandler);\n\n\t\treturn webglBuffer;\n\t}\n\n\tupdateBuffer(geometry){\n\t\tlet gl = this.gl;\n\n\t\tlet webglBuffer = this.buffers.get(geometry);\n\n\t\tgl.bindVertexArray(webglBuffer.vao);\n\n\t\tfor(let attributeName in geometry.attributes){\n\t\t\tlet bufferAttribute = geometry.attributes[attributeName];\n\n\t\t\tlet normalized = bufferAttribute.normalized;\n\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\n\n\t\t\tlet vbo = null;\n\t\t\tif(!webglBuffer.vbos.has(attributeName)){\n\t\t\t\tvbo = gl.createBuffer();\n\n\t\t\t\twebglBuffer.vbos.set(attributeName, {\n\t\t\t\t\thandle: vbo,\n\t\t\t\t\tname: attributeName,\n\t\t\t\t\tcount: bufferAttribute.count,\n\t\t\t\t\titemSize: bufferAttribute.itemSize,\n\t\t\t\t\ttype: geometry.attributes.position.array.constructor,\n\t\t\t\t\tversion: bufferAttribute.version\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tvbo = webglBuffer.vbos.get(attributeName).handle;\n\t\t\t\twebglBuffer.vbos.get(attributeName).version = bufferAttribute.version;\n\t\t\t}\n\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo);\n\t\t\tgl.bufferData(gl.ARRAY_BUFFER, bufferAttribute.array, gl.STATIC_DRAW);\n\n\t\t\tif(attributeLocations[attributeName] === undefined){\n\t\t\t\t//attributeLocation = attributeLocations[\"aExtra\"];\n\t\t\t}else{\n\t\t\t\tlet attributeLocation = attributeLocations[attributeName].location;\n\t\t\t\t\n\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\n\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\n\t\t\t}\n\t\t}\n\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\tgl.bindVertexArray(null);\n\t}\n\n\ttraverse(scene) {\n\n\t\tlet octrees = [];\n\n\t\tlet stack = [scene];\n\t\twhile (stack.length > 0) {\n\n\t\t\tlet node = stack.pop();\n\n\t\t\tif (node instanceof PointCloudTree) {\n\t\t\t\toctrees.push(node);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet visibleChildren = node.children.filter(c => c.visible);\n\t\t\tstack.push(...visibleChildren);\n\n\t\t}\n\n\t\tlet result = {\n\t\t\toctrees: octrees\n\t\t};\n\n\t\treturn result;\n\t}\n\n\n\n\trenderNodes(octree, nodes, visibilityTextureData, camera, target, shader, params) {\n\n\t\tif (exports.measureTimings) performance.mark(\"renderNodes-start\");\n\n\t\tlet gl = this.gl;\n\n\t\tlet material = params.material ? params.material : octree.material;\n\t\tlet shadowMaps = params.shadowMaps == null ? [] : params.shadowMaps;\n\t\tlet view = camera.matrixWorldInverse;\n\t\tlet worldView = new THREE.Matrix4();\n\n\t\tlet mat4holder = new Float32Array(16);\n\n\t\tlet i = 0;\n\t\tfor (let node of nodes) {\n\n\t\t\tif(exports.debug.allowedNodes !== undefined){\n\t\t\t\tif(!exports.debug.allowedNodes.includes(node.name)){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet world = node.sceneNode.matrixWorld;\n\t\t\tworldView.multiplyMatrices(view, world);\n\n\t\t\tif (visibilityTextureData) {\n\t\t\t\tlet vnStart = visibilityTextureData.offsets.get(node);\n\t\t\t\tshader.setUniform1f(\"uVNStart\", vnStart);\n\t\t\t}\n\n\n\t\t\tlet level = node.getLevel();\n\n\t\t\tif(node.debug){\n\t\t\t\tshader.setUniform(\"uDebug\", true);\n\t\t\t}else{\n\t\t\t\tshader.setUniform(\"uDebug\", false);\n\t\t\t}\n\n\t\t\t// let isLeaf = false;\n\t\t\t// if(node instanceof PointCloudOctreeNode){\n\t\t\t// \tisLeaf = Object.keys(node.children).length === 0;\n\t\t\t// }else if(node instanceof PointCloudArena4DNode){\n\t\t\t// \tisLeaf = node.geometryNode.isLeaf;\n\t\t\t// }\n\t\t\t// shader.setUniform(\"uIsLeafNode\", isLeaf);\n\n\t\t\t// let isLeaf = node.children.filter(n => n != null).length === 0;\n\t\t\t// if(!isLeaf){\n\t\t\t// \tcontinue;\n\t\t\t// }\n\n\n\t\t\t// TODO consider passing matrices in an array to avoid uniformMatrix4fv overhead\n\t\t\tconst lModel = shader.uniformLocations[\"modelMatrix\"];\n\t\t\tif (lModel) {\n\t\t\t\tmat4holder.set(world.elements);\n\t\t\t\tgl.uniformMatrix4fv(lModel, false, mat4holder);\n\t\t\t}\n\n\t\t\tconst lModelView = shader.uniformLocations[\"modelViewMatrix\"];\n\t\t\t//mat4holder.set(worldView.elements);\n\t\t\t// faster then set in chrome 63\n\t\t\tfor(let j = 0; j < 16; j++){\n\t\t\t\tmat4holder[j] = worldView.elements[j];\n\t\t\t}\n\t\t\tgl.uniformMatrix4fv(lModelView, false, mat4holder);\n\n\t\t\t{ // Clip Polygons\n\t\t\t\tif(material.clipPolygons && material.clipPolygons.length > 0){\n\n\t\t\t\t\tlet clipPolygonVCount = [];\n\t\t\t\t\tlet worldViewProjMatrices = [];\n\n\t\t\t\t\tfor(let clipPolygon of material.clipPolygons){\n\n\t\t\t\t\t\tlet view = clipPolygon.viewMatrix;\n\t\t\t\t\t\tlet proj = clipPolygon.projMatrix;\n\n\t\t\t\t\t\tlet worldViewProj = proj.clone().multiply(view).multiply(world);\n\n\t\t\t\t\t\tclipPolygonVCount.push(clipPolygon.markers.length);\n\t\t\t\t\t\tworldViewProjMatrices.push(worldViewProj);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet flattenedMatrices = [].concat(...worldViewProjMatrices.map(m => m.elements));\n\n\t\t\t\t\tlet flattenedVertices = new Array(8 * 3 * material.clipPolygons.length);\n\t\t\t\t\tfor(let i = 0; i < material.clipPolygons.length; i++){\n\t\t\t\t\t\tlet clipPolygon = material.clipPolygons[i];\n\t\t\t\t\t\tfor(let j = 0; j < clipPolygon.markers.length; j++){\n\t\t\t\t\t\t\tflattenedVertices[i * 24 + (j * 3 + 0)] = clipPolygon.markers[j].position.x;\n\t\t\t\t\t\t\tflattenedVertices[i * 24 + (j * 3 + 1)] = clipPolygon.markers[j].position.y;\n\t\t\t\t\t\t\tflattenedVertices[i * 24 + (j * 3 + 2)] = clipPolygon.markers[j].position.z;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst lClipPolygonVCount = shader.uniformLocations[\"uClipPolygonVCount[0]\"];\n\t\t\t\t\tgl.uniform1iv(lClipPolygonVCount, clipPolygonVCount);\n\n\t\t\t\t\tconst lClipPolygonVP = shader.uniformLocations[\"uClipPolygonWVP[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lClipPolygonVP, false, flattenedMatrices);\n\n\t\t\t\t\tconst lClipPolygons = shader.uniformLocations[\"uClipPolygonVertices[0]\"];\n\t\t\t\t\tgl.uniform3fv(lClipPolygons, flattenedVertices);\n\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t//shader.setUniformMatrix4(\"modelMatrix\", world);\n\t\t\t//shader.setUniformMatrix4(\"modelViewMatrix\", worldView);\n\t\t\tshader.setUniform1f(\"uLevel\", level);\n\t\t\tshader.setUniform1f(\"uNodeSpacing\", node.geometryNode.estimatedSpacing);\n\n\t\t\tshader.setUniform1f(\"uPCIndex\", i);\n\t\t\t// uBBSize\n\n\t\t\tif (shadowMaps.length > 0) {\n\n\t\t\t\tconst lShadowMap = shader.uniformLocations[\"uShadowMap[0]\"];\n\n\t\t\t\tshader.setUniform3f(\"uShadowColor\", material.uniforms.uShadowColor.value);\n\n\t\t\t\tlet bindingStart = 5;\n\t\t\t\tlet bindingPoints = new Array(shadowMaps.length).fill(bindingStart).map((a, i) => (a + i));\n\t\t\t\tgl.uniform1iv(lShadowMap, bindingPoints);\n\n\t\t\t\tfor (let i = 0; i < shadowMaps.length; i++) {\n\t\t\t\t\tlet shadowMap = shadowMaps[i];\n\t\t\t\t\tlet bindingPoint = bindingPoints[i];\n\t\t\t\t\tlet glTexture = this.threeRenderer.properties.get(shadowMap.target.texture).__webglTexture;\n\n\t\t\t\t\tgl.activeTexture(gl[`TEXTURE${bindingPoint}`]);\n\t\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, glTexture);\n\t\t\t\t}\n\n\t\t\t\t{\n\n\t\t\t\t\tlet worldViewMatrices = shadowMaps\n\t\t\t\t\t\t.map(sm => sm.camera.matrixWorldInverse)\n\t\t\t\t\t\t.map(view => new THREE.Matrix4().multiplyMatrices(view, world))\n\n\t\t\t\t\tlet flattenedMatrices = [].concat(...worldViewMatrices.map(c => c.elements));\n\t\t\t\t\tconst lWorldView = shader.uniformLocations[\"uShadowWorldView[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lWorldView, false, flattenedMatrices);\n\t\t\t\t}\n\n\t\t\t\t{\n\t\t\t\t\tlet flattenedMatrices = [].concat(...shadowMaps.map(sm => sm.camera.projectionMatrix.elements));\n\t\t\t\t\tconst lProj = shader.uniformLocations[\"uShadowProj[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lProj, false, flattenedMatrices);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst geometry = node.geometryNode.geometry;\n\n\t\t\tif(geometry.attributes[\"gps-time\"]){\n\t\t\t\tconst bufferAttribute = geometry.attributes[\"gps-time\"];\n\t\t\t\tconst attGPS = octree.getAttribute(\"gps-time\");\n\n\t\t\t\tlet initialRange = attGPS.initialRange;\n\t\t\t\tlet initialRangeSize = initialRange[1] - initialRange[0];\n\n\t\t\t\tlet globalRange = attGPS.range;\n\t\t\t\tlet globalRangeSize = globalRange[1] - globalRange[0];\n\n\t\t\t\tlet scale = initialRangeSize / globalRangeSize;\n\t\t\t\tlet offset = -(globalRange[0] - initialRange[0]) / initialRangeSize;\n\n\t\t\t\tshader.setUniform1f(\"uGpsScale\", scale);\n\t\t\t\tshader.setUniform1f(\"uGpsOffset\", offset);\n\t\t\t\t//shader.setUniform2f(\"uFilterGPSTimeClipRange\", [-Infinity, Infinity]);\n\n\t\t\t\tlet uFilterGPSTimeClipRange = material.uniforms.uFilterGPSTimeClipRange.value;\n\t\t\t\t// let gpsCliPRangeMin = uFilterGPSTimeClipRange[0]\n\t\t\t\t// let gpsCliPRangeMax = uFilterGPSTimeClipRange[1]\n\t\t\t\t// shader.setUniform2f(\"uFilterGPSTimeClipRange\", [gpsCliPRangeMin, gpsCliPRangeMax]);\n\n\t\t\t\tlet normalizedClipRange = [\n\t\t\t\t\t(uFilterGPSTimeClipRange[0] - globalRange[0]) / globalRangeSize,\n\t\t\t\t\t(uFilterGPSTimeClipRange[1] - globalRange[0]) / globalRangeSize,\n\t\t\t\t];\n\n\t\t\t\tshader.setUniform2f(\"uFilterGPSTimeClipRange\", normalizedClipRange);\n\n\n\n\t\t\t\t// // ranges in full gps coordinate system\n\t\t\t\t// const globalRange = attGPS.range;\n\t\t\t\t// const bufferRange = bufferAttribute.potree.range;\n\n\t\t\t\t// // ranges in [0, 1]\n\t\t\t\t// // normalizedGlobalRange = [0, 1]\n\t\t\t\t// // normalizedBufferRange: norm buffer within norm global range e.g. [0.2, 0.8]\n\t\t\t\t// const globalWidth = globalRange[1] - globalRange[0];\n\t\t\t\t// const normalizedBufferRange = [\n\t\t\t\t// \t(bufferRange[0] - globalRange[0]) / globalWidth,\n\t\t\t\t// \t(bufferRange[1] - globalRange[0]) / globalWidth,\n\t\t\t\t// ];\n\n\t\t\t\t// shader.setUniform2f(\"uNormalizedGpsBufferRange\", normalizedBufferRange);\n\n\t\t\t\t// let uFilterGPSTimeClipRange = material.uniforms.uFilterGPSTimeClipRange.value;\n\t\t\t\t// let gpsCliPRangeMin = uFilterGPSTimeClipRange[0]\n\t\t\t\t// let gpsCliPRangeMax = uFilterGPSTimeClipRange[1]\n\t\t\t\t// shader.setUniform2f(\"uFilterGPSTimeClipRange\", [gpsCliPRangeMin, gpsCliPRangeMax]);\n\n\t\t\t\t// shader.setUniform1f(\"uGpsScale\", bufferAttribute.potree.scale);\n\t\t\t\t// shader.setUniform1f(\"uGpsOffset\", bufferAttribute.potree.offset);\n\t\t\t}\n\n\t\t\t{\n\t\t\t\tlet uFilterReturnNumberRange = material.uniforms.uFilterReturnNumberRange.value;\n\t\t\t\tlet uFilterNumberOfReturnsRange = material.uniforms.uFilterNumberOfReturnsRange.value;\n\t\t\t\tlet uFilterPointSourceIDClipRange = material.uniforms.uFilterPointSourceIDClipRange.value;\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tshader.setUniform2f(\"uFilterReturnNumberRange\", uFilterReturnNumberRange);\n\t\t\t\tshader.setUniform2f(\"uFilterNumberOfReturnsRange\", uFilterNumberOfReturnsRange);\n\t\t\t\tshader.setUniform2f(\"uFilterPointSourceIDClipRange\", uFilterPointSourceIDClipRange);\n\t\t\t}\n\n\t\t\tlet webglBuffer = null;\n\t\t\tif(!this.buffers.has(geometry)){\n\t\t\t\twebglBuffer = this.createBuffer(geometry);\n\t\t\t\tthis.buffers.set(geometry, webglBuffer);\n\t\t\t}else{\n\t\t\t\twebglBuffer = this.buffers.get(geometry);\n\t\t\t\tfor(let attributeName in geometry.attributes){\n\t\t\t\t\tlet attribute = geometry.attributes[attributeName];\n\n\t\t\t\t\tif(attribute.version > webglBuffer.vbos.get(attributeName).version){\n\t\t\t\t\t\tthis.updateBuffer(geometry);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgl.bindVertexArray(webglBuffer.vao);\n\n\t\t\tlet isExtraAttribute =\n\t\t\t\tattributeLocations[material.activeAttributeName] === undefined\n\t\t\t\t&& Object.keys(geometry.attributes).includes(material.activeAttributeName);\n\n\t\t\tif(isExtraAttribute){\n\n\t\t\t\tconst attributeLocation = attributeLocations[\"aExtra\"].location;\n\n\t\t\t\tfor(const attributeName in geometry.attributes){\n\t\t\t\t\tconst bufferAttribute = geometry.attributes[attributeName];\n\t\t\t\t\tconst vbo = webglBuffer.vbos.get(attributeName);\n\t\t\t\t\t\n\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle);\n\t\t\t\t\tgl.disableVertexAttribArray(attributeLocation);\n\t\t\t\t}\n\n\t\t\t\tconst attName = material.activeAttributeName;\n\t\t\t\tconst bufferAttribute = geometry.attributes[attName];\n\t\t\t\tconst vbo = webglBuffer.vbos.get(attName);\n\n\t\t\t\tif(bufferAttribute !== undefined && vbo !== undefined){\n\t\t\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\n\t\t\t\t\tlet normalized = bufferAttribute.normalized;\n\n\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle);\n\t\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\n\t\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\n\t\t\t\t}\n\n\n\n\n\t\t\t\t{\n\t\t\t\t\tconst attExtra = octree.pcoGeometry.pointAttributes.attributes\n\t\t\t\t\t\t.find(a => a.name === attName);\n\n\t\t\t\t\tlet range = material.getRange(attName);\n\t\t\t\t\tif(!range){\n\t\t\t\t\t\trange = attExtra.range;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!range){\n\t\t\t\t\t\trange = [0, 1];\n\t\t\t\t\t}\n\n\t\t\t\t\tlet initialRange = attExtra.initialRange;\n\t\t\t\t\tlet initialRangeSize = initialRange[1] - initialRange[0];\n\n\t\t\t\t\tlet globalRange = range;\n\t\t\t\t\tlet globalRangeSize = globalRange[1] - globalRange[0];\n\n\t\t\t\t\tlet scale = initialRangeSize / globalRangeSize;\n\t\t\t\t\tlet offset = -(globalRange[0] - initialRange[0]) / initialRangeSize;\n\n\t\t\t\t\tshader.setUniform1f(\"uExtraScale\", scale);\n\t\t\t\t\tshader.setUniform1f(\"uExtraOffset\", offset);\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tfor(const attributeName in geometry.attributes){\n\t\t\t\t\tconst bufferAttribute = geometry.attributes[attributeName];\n\t\t\t\t\tconst vbo = webglBuffer.vbos.get(attributeName);\n\n\n\t\t\t\t\tif(attributeLocations[attributeName] !== undefined){\n\t\t\t\t\t\tconst attributeLocation = attributeLocations[attributeName].location;\n\n\t\t\t\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\n\t\t\t\t\t\tlet normalized = bufferAttribute.normalized;\n\t\t\t\t\t\t\n\t\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle);\n\t\t\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\n\t\t\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet numPoints = webglBuffer.numElements;\n\t\t\tgl.drawArrays(gl.POINTS, 0, numPoints);\n\n\t\t\ti++;\n\t\t}\n\n\t\tgl.bindVertexArray(null);\n\n\t\tif (exports.measureTimings) {\n\t\t\tperformance.mark(\"renderNodes-end\");\n\t\t\tperformance.measure(\"render.renderNodes\", \"renderNodes-start\", \"renderNodes-end\");\n\t\t}\n\t}\n\n\trenderOctree(octree, nodes, camera, target, params = {}){\n\n\t\tlet gl = this.gl;\n\n\t\tlet material = params.material ? params.material : octree.material;\n\t\tlet shadowMaps = params.shadowMaps == null ? [] : params.shadowMaps;\n\t\tlet view = camera.matrixWorldInverse;\n\t\tlet viewInv = camera.matrixWorld;\n\t\tlet proj = camera.projectionMatrix;\n\t\tlet projInv = new THREE.Matrix4().getInverse(proj);\n\t\tlet worldView = new THREE.Matrix4();\n\n\t\tlet shader = null;\n\t\tlet visibilityTextureData = null;\n\n\t\tlet currentTextureBindingPoint = 0;\n\n\t\tif (material.pointSizeType >= 0) {\n\t\t\tif (material.pointSizeType === PointSizeType.ADAPTIVE ||\n\t\t\t\tmaterial.activeAttributeName === \"level of detail\") {\n\n\t\t\t\tlet vnNodes = (params.vnTextureNodes != null) ? params.vnTextureNodes : nodes;\n\t\t\t\tvisibilityTextureData = octree.computeVisibilityTextureData(vnNodes, camera);\n\n\t\t\t\tconst vnt = material.visibleNodesTexture;\n\t\t\t\tconst data = vnt.image.data;\n\t\t\t\tdata.set(visibilityTextureData.data);\n\t\t\t\tvnt.needsUpdate = true;\n\n\t\t\t}\n\t\t}\n\n\t\t{ // UPDATE SHADER AND TEXTURES\n\t\t\tif (!this.shaders.has(material)) {\n\t\t\t\tlet [vs, fs] = [material.vertexShader, material.fragmentShader];\n\t\t\t\tlet shader = new Shader(gl, \"pointcloud\", vs, fs);\n\n\t\t\t\tthis.shaders.set(material, shader);\n\t\t\t}\n\n\t\t\tshader = this.shaders.get(material);\n\n\t\t\t//if(material.needsUpdate){\n\t\t\t{\n\t\t\t\tlet [vs, fs] = [material.vertexShader, material.fragmentShader];\n\n\t\t\t\tlet numSnapshots = material.snapEnabled ? material.numSnapshots : 0;\n\t\t\t\tlet numClipBoxes = (material.clipBoxes && material.clipBoxes.length) ? material.clipBoxes.length : 0;\n\t\t\t\tlet numClipSpheres = (params.clipSpheres && params.clipSpheres.length) ? params.clipSpheres.length : 0;\n\t\t\t\tlet numClipPolygons = (material.clipPolygons && material.clipPolygons.length) ? material.clipPolygons.length : 0;\n\n\t\t\t\tlet defines = [\n\t\t\t\t\t`#define num_shadowmaps ${shadowMaps.length}`,\n\t\t\t\t\t`#define num_snapshots ${numSnapshots}`,\n\t\t\t\t\t`#define num_clipboxes ${numClipBoxes}`,\n\t\t\t\t\t`#define num_clipspheres ${numClipSpheres}`,\n\t\t\t\t\t`#define num_clippolygons ${numClipPolygons}`,\n\t\t\t\t];\n\n\n\t\t\t\tif(octree.pcoGeometry.root.isLoaded()){\n\t\t\t\t\tlet attributes = octree.pcoGeometry.root.geometry.attributes;\n\n\t\t\t\t\tif(attributes[\"gps-time\"]){\n\t\t\t\t\t\tdefines.push(\"#define clip_gps_enabled\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif(attributes[\"return number\"]){\n\t\t\t\t\t\tdefines.push(\"#define clip_return_number_enabled\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif(attributes[\"number of returns\"]){\n\t\t\t\t\t\tdefines.push(\"#define clip_number_of_returns_enabled\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif(attributes[\"source id\"] || attributes[\"point source id\"]){\n\t\t\t\t\t\tdefines.push(\"#define clip_point_source_id_enabled\");\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tlet definesString = defines.join(\"\\n\");\n\n\t\t\t\tlet vsVersionIndex = vs.indexOf(\"#version \");\n\t\t\t\tlet fsVersionIndex = fs.indexOf(\"#version \");\n\n\t\t\t\tif(vsVersionIndex >= 0){\n\t\t\t\t\tvs = vs.replace(/(#version .*)/, `$1\\n${definesString}`)\n\t\t\t\t}else{\n\t\t\t\t\tvs = `${definesString}\\n${vs}`;\n\t\t\t\t}\n\n\t\t\t\tif(fsVersionIndex >= 0){\n\t\t\t\t\tfs = fs.replace(/(#version .*)/, `$1\\n${definesString}`)\n\t\t\t\t}else{\n\t\t\t\t\tfs = `${definesString}\\n${fs}`;\n\t\t\t\t}\n\n\n\t\t\t\tshader.update(vs, fs);\n\n\t\t\t\tmaterial.needsUpdate = false;\n\t\t\t}\n\n\t\t\tfor (let uniformName of Object.keys(material.uniforms)) {\n\t\t\t\tlet uniform = material.uniforms[uniformName];\n\n\t\t\t\tif (uniform.type == \"t\") {\n\n\t\t\t\t\tlet texture = uniform.value;\n\n\t\t\t\t\tif (!texture) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.textures.has(texture)) {\n\t\t\t\t\t\tlet webglTexture = new WebGLTexture(gl, texture);\n\n\t\t\t\t\t\tthis.textures.set(texture, webglTexture);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet webGLTexture = this.textures.get(texture);\n\t\t\t\t\twebGLTexture.update();\n\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tgl.useProgram(shader.program);\n\n\t\tlet transparent = false;\n\t\tif(params.transparent !== undefined){\n\t\t\ttransparent = params.transparent && material.opacity < 1;\n\t\t}else{\n\t\t\ttransparent = material.opacity < 1;\n\t\t}\n\n\t\tif (transparent){\n\t\t\tgl.enable(gl.BLEND);\n\t\t\tgl.blendFunc(gl.SRC_ALPHA, gl.ONE);\n\t\t\tgl.depthMask(false);\n\t\t\tgl.disable(gl.DEPTH_TEST);\n\t\t} else {\n\t\t\tgl.disable(gl.BLEND);\n\t\t\tgl.depthMask(true);\n\t\t\tgl.enable(gl.DEPTH_TEST);\n\t\t}\n\n\t\tif(params.blendFunc !== undefined){\n\t\t\tgl.enable(gl.BLEND);\n\t\t\tgl.blendFunc(...params.blendFunc);\n\t\t}\n\n\t\tif(params.depthTest !== undefined){\n\t\t\tif(params.depthTest === true){\n\t\t\t\tgl.enable(gl.DEPTH_TEST);\n\t\t\t}else{\n\t\t\t\tgl.disable(gl.DEPTH_TEST);\n\t\t\t}\n\t\t}\n\n\t\tif(params.depthWrite !== undefined){\n\t\t\t if(params.depthWrite === true){\n\t\t\t\t gl.depthMask(true);\n\t\t\t }else{\n\t\t\t\t gl.depthMask(false);\n\t\t\t }\n\t\t\t \n\t\t}\n\n\n\t\t{ // UPDATE UNIFORMS\n\t\t\tshader.setUniformMatrix4(\"projectionMatrix\", proj);\n\t\t\tshader.setUniformMatrix4(\"viewMatrix\", view);\n\t\t\tshader.setUniformMatrix4(\"uViewInv\", viewInv);\n\t\t\tshader.setUniformMatrix4(\"uProjInv\", projInv);\n\n\t\t\tlet screenWidth = target ? target.width : material.screenWidth;\n\t\t\tlet screenHeight = target ? target.height : material.screenHeight;\n\n\t\t\tshader.setUniform1f(\"uScreenWidth\", screenWidth);\n\t\t\tshader.setUniform1f(\"uScreenHeight\", screenHeight);\n\t\t\tshader.setUniform1f(\"fov\", Math.PI * camera.fov / 180);\n\t\t\tshader.setUniform1f(\"near\", camera.near);\n\t\t\tshader.setUniform1f(\"far\", camera.far);\n\t\t\t\n\t\t\tif(camera instanceof THREE.OrthographicCamera){\n\t\t\t\tshader.setUniform(\"uUseOrthographicCamera\", true);\n\t\t\t\tshader.setUniform(\"uOrthoWidth\", camera.right - camera.left); \n\t\t\t\tshader.setUniform(\"uOrthoHeight\", camera.top - camera.bottom);\n\t\t\t}else{\n\t\t\t\tshader.setUniform(\"uUseOrthographicCamera\", false);\n\t\t\t}\n\n\t\t\tif(material.clipBoxes.length + material.clipPolygons.length === 0){\n\t\t\t\tshader.setUniform1i(\"clipTask\", ClipTask.NONE);\n\t\t\t}else{\n\t\t\t\tshader.setUniform1i(\"clipTask\", material.clipTask);\n\t\t\t}\n\n\t\t\tshader.setUniform1i(\"clipMethod\", material.clipMethod);\n\n\t\t\tif (material.clipBoxes && material.clipBoxes.length > 0) {\n\t\t\t\t//let flattenedMatrices = [].concat(...material.clipBoxes.map(c => c.inverse.elements));\n\n\t\t\t\t//const lClipBoxes = shader.uniformLocations[\"clipBoxes[0]\"];\n\t\t\t\t//gl.uniformMatrix4fv(lClipBoxes, false, flattenedMatrices);\n\n\t\t\t\tconst lClipBoxes = shader.uniformLocations[\"clipBoxes[0]\"];\n\t\t\t\tgl.uniformMatrix4fv(lClipBoxes, false, material.uniforms.clipBoxes.value);\n\t\t\t}\n\n\t\t\t// TODO CLIPSPHERES\n\t\t\tif(params.clipSpheres && params.clipSpheres.length > 0){\n\n\t\t\t\tlet clipSpheres = params.clipSpheres;\n\n\t\t\t\tlet matrices = [];\n\t\t\t\tfor(let clipSphere of clipSpheres){\n\t\t\t\t\t//let mScale = new THREE.Matrix4().makeScale(...clipSphere.scale.toArray());\n\t\t\t\t\t//let mTranslate = new THREE.Matrix4().makeTranslation(...clipSphere.position.toArray());\n\n\t\t\t\t\t//let clipToWorld = new THREE.Matrix4().multiplyMatrices(mTranslate, mScale);\n\t\t\t\t\tlet clipToWorld = clipSphere.matrixWorld;\n\t\t\t\t\tlet viewToWorld = camera.matrixWorld\n\t\t\t\t\tlet worldToClip = new THREE.Matrix4().getInverse(clipToWorld);\n\n\t\t\t\t\tlet viewToClip = new THREE.Matrix4().multiplyMatrices(worldToClip, viewToWorld);\n\n\t\t\t\t\tmatrices.push(viewToClip);\n\t\t\t\t}\n\n\t\t\t\tlet flattenedMatrices = [].concat(...matrices.map(matrix => matrix.elements));\n\n\t\t\t\tconst lClipSpheres = shader.uniformLocations[\"uClipSpheres[0]\"];\n\t\t\t\tgl.uniformMatrix4fv(lClipSpheres, false, flattenedMatrices);\n\t\t\t\t\n\t\t\t\t//const lClipSpheres = shader.uniformLocations[\"uClipSpheres[0]\"];\n\t\t\t\t//gl.uniformMatrix4fv(lClipSpheres, false, material.uniforms.clipSpheres.value);\n\t\t\t}\n\n\n\t\t\tshader.setUniform1f(\"size\", material.size);\n\t\t\tshader.setUniform1f(\"maxSize\", material.uniforms.maxSize.value);\n\t\t\tshader.setUniform1f(\"minSize\", material.uniforms.minSize.value);\n\n\n\t\t\t// uniform float uPCIndex\n\t\t\tshader.setUniform1f(\"uOctreeSpacing\", material.spacing);\n\t\t\tshader.setUniform(\"uOctreeSize\", material.uniforms.octreeSize.value);\n\n\n\t\t\t//uniform vec3 uColor;\n\t\t\tshader.setUniform3f(\"uColor\", material.color.toArray());\n\t\t\t//uniform float opacity;\n\t\t\tshader.setUniform1f(\"uOpacity\", material.opacity);\n\n\t\t\tshader.setUniform2f(\"elevationRange\", material.elevationRange);\n\t\t\tshader.setUniform2f(\"intensityRange\", material.intensityRange);\n\n\n\t\t\tshader.setUniform3f(\"uIntensity_gbc\", [\n\t\t\t\tmaterial.intensityGamma, \n\t\t\t\tmaterial.intensityBrightness, \n\t\t\t\tmaterial.intensityContrast\n\t\t\t]);\n\n\t\t\tshader.setUniform3f(\"uRGB_gbc\", [\n\t\t\t\tmaterial.rgbGamma, \n\t\t\t\tmaterial.rgbBrightness, \n\t\t\t\tmaterial.rgbContrast\n\t\t\t]);\n\n\t\t\tshader.setUniform1f(\"uTransition\", material.transition);\n\t\t\tshader.setUniform1f(\"wRGB\", material.weightRGB);\n\t\t\tshader.setUniform1f(\"wIntensity\", material.weightIntensity);\n\t\t\tshader.setUniform1f(\"wElevation\", material.weightElevation);\n\t\t\tshader.setUniform1f(\"wClassification\", material.weightClassification);\n\t\t\tshader.setUniform1f(\"wReturnNumber\", material.weightReturnNumber);\n\t\t\tshader.setUniform1f(\"wSourceID\", material.weightSourceID);\n\n\t\t\tshader.setUniform(\"backfaceCulling\", material.uniforms.backfaceCulling.value);\n\n\t\t\tlet vnWebGLTexture = this.textures.get(material.visibleNodesTexture);\n\t\t\tif(vnWebGLTexture){\n\t\t\t\tshader.setUniform1i(\"visibleNodesTexture\", currentTextureBindingPoint);\n\t\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\n\t\t\t\tgl.bindTexture(vnWebGLTexture.target, vnWebGLTexture.id);\n\t\t\t\tcurrentTextureBindingPoint++;\n\t\t\t}\n\n\t\t\tlet gradientTexture = this.textures.get(material.gradientTexture);\n\t\t\tshader.setUniform1i(\"gradient\", currentTextureBindingPoint);\n\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\n\t\t\tgl.bindTexture(gradientTexture.target, gradientTexture.id);\n\n\t\t\tconst repeat = material.elevationGradientRepeat;\n\t\t\tif(repeat === ElevationGradientRepeat.REPEAT){\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.REPEAT);\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.REPEAT);\n\t\t\t}else if(repeat === ElevationGradientRepeat.MIRRORED_REPEAT){\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.MIRRORED_REPEAT);\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.MIRRORED_REPEAT);\n\t\t\t}else{\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\t\t\t}\n\t\t\tcurrentTextureBindingPoint++;\n\n\t\t\tlet classificationTexture = this.textures.get(material.classificationTexture);\n\t\t\tshader.setUniform1i(\"classificationLUT\", currentTextureBindingPoint);\n\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\n\t\t\tgl.bindTexture(classificationTexture.target, classificationTexture.id);\n\t\t\tcurrentTextureBindingPoint++;\n\n\t\t\tlet matcapTexture = this.textures.get(material.matcapTexture);\n\t\t\tshader.setUniform1i(\"matcapTextureUniform\", currentTextureBindingPoint);\n\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\n\t\t\tgl.bindTexture(matcapTexture.target, matcapTexture.id);\n\t\t\tcurrentTextureBindingPoint++;\n\n\n\t\t\tif (material.snapEnabled === true) {\n\n\t\t\t\t{\n\t\t\t\t\tconst lSnapshot = shader.uniformLocations[\"uSnapshot[0]\"];\n\t\t\t\t\tconst lSnapshotDepth = shader.uniformLocations[\"uSnapshotDepth[0]\"];\n\n\t\t\t\t\tlet bindingStart = currentTextureBindingPoint;\n\t\t\t\t\tlet lSnapshotBindingPoints = new Array(5).fill(bindingStart).map((a, i) => (a + i));\n\t\t\t\t\tlet lSnapshotDepthBindingPoints = new Array(5)\n\t\t\t\t\t\t.fill(1 + Math.max(...lSnapshotBindingPoints))\n\t\t\t\t\t\t.map((a, i) => (a + i));\n\t\t\t\t\tcurrentTextureBindingPoint = 1 + Math.max(...lSnapshotDepthBindingPoints);\n\n\t\t\t\t\tgl.uniform1iv(lSnapshot, lSnapshotBindingPoints);\n\t\t\t\t\tgl.uniform1iv(lSnapshotDepth, lSnapshotDepthBindingPoints);\n\n\t\t\t\t\tfor (let i = 0; i < 5; i++) {\n\t\t\t\t\t\tlet texture = material.uniforms[`uSnapshot`].value[i];\n\t\t\t\t\t\tlet textureDepth = material.uniforms[`uSnapshotDepth`].value[i];\n\n\t\t\t\t\t\tif (!texture) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet snapTexture = this.threeRenderer.properties.get(texture).__webglTexture;\n\t\t\t\t\t\tlet snapTextureDepth = this.threeRenderer.properties.get(textureDepth).__webglTexture;\n\n\t\t\t\t\t\tlet bindingPoint = lSnapshotBindingPoints[i];\n\t\t\t\t\t\tlet depthBindingPoint = lSnapshotDepthBindingPoints[i];\n\n\t\t\t\t\t\tgl.activeTexture(gl[`TEXTURE${bindingPoint}`]);\n\t\t\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, snapTexture);\n\n\t\t\t\t\t\tgl.activeTexture(gl[`TEXTURE${depthBindingPoint}`]);\n\t\t\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, snapTextureDepth);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t{\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapView.value.map(c => c.elements));\n\t\t\t\t\tconst lSnapView = shader.uniformLocations[\"uSnapView[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapView, false, flattenedMatrices);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapProj.value.map(c => c.elements));\n\t\t\t\t\tconst lSnapProj = shader.uniformLocations[\"uSnapProj[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapProj, false, flattenedMatrices);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapProjInv.value.map(c => c.elements));\n\t\t\t\t\tconst lSnapProjInv = shader.uniformLocations[\"uSnapProjInv[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapProjInv, false, flattenedMatrices);\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapViewInv.value.map(c => c.elements));\n\t\t\t\t\tconst lSnapViewInv = shader.uniformLocations[\"uSnapViewInv[0]\"];\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapViewInv, false, flattenedMatrices);\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tthis.renderNodes(octree, nodes, visibilityTextureData, camera, target, shader, params);\n\n\t\tgl.activeTexture(gl.TEXTURE2);\n\t\tgl.bindTexture(gl.TEXTURE_2D, null);\n\t\tgl.activeTexture(gl.TEXTURE0);\n\t}\n\n\trender(scene, camera, target = null, params = {}) {\n\n\t\tconst gl = this.gl;\n\n\t\t// PREPARE \n\t\tif (target != null) {\n\t\t\tthis.threeRenderer.setRenderTarget(target);\n\t\t}\n\n\t\tcamera.updateProjectionMatrix();\n\n\t\tconst traversalResult = this.traverse(scene);\n\n\n\t\t// RENDER\n\t\tfor (const octree of traversalResult.octrees) {\n\t\t\tlet nodes = octree.visibleNodes;\n\t\t\tthis.renderOctree(octree, nodes, camera, target, params);\n\t\t}\n\n\n\t\t// CLEANUP\n\t\tgl.activeTexture(gl.TEXTURE1);\n\t\tgl.bindTexture(gl.TEXTURE_2D, null)\n\n\t\tthis.threeRenderer.state.reset();\n\t}\n\n\n\n};\n\n\n\n\n\n\n\n\n","\nimport {Points} from \"./Points.js\";\n\nexport class ProfileData {\n\tconstructor (profile) {\n\t\tthis.profile = profile;\n\n\t\tthis.segments = [];\n\t\tthis.boundingBox = new THREE.Box3();\n\n\t\tfor (let i = 0; i < profile.points.length - 1; i++) {\n\t\t\tlet start = profile.points[i];\n\t\t\tlet end = profile.points[i + 1];\n\n\t\t\tlet startGround = new THREE.Vector3(start.x, start.y, 0);\n\t\t\tlet endGround = new THREE.Vector3(end.x, end.y, 0);\n\n\t\t\tlet center = new THREE.Vector3().addVectors(endGround, startGround).multiplyScalar(0.5);\n\t\t\tlet length = startGround.distanceTo(endGround);\n\t\t\tlet side = new THREE.Vector3().subVectors(endGround, startGround).normalize();\n\t\t\tlet up = new THREE.Vector3(0, 0, 1);\n\t\t\tlet forward = new THREE.Vector3().crossVectors(side, up).normalize();\n\t\t\tlet N = forward;\n\t\t\tlet cutPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(N, startGround);\n\t\t\tlet halfPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(side, center);\n\n\t\t\tlet segment = {\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tcutPlane: cutPlane,\n\t\t\t\thalfPlane: halfPlane,\n\t\t\t\tlength: length,\n\t\t\t\tpoints: new Points()\n\t\t\t};\n\n\t\t\tthis.segments.push(segment);\n\t\t}\n\t}\n\n\tsize () {\n\t\tlet size = 0;\n\t\tfor (let segment of this.segments) {\n\t\t\tsize += segment.points.numPoints;\n\t\t}\n\n\t\treturn size;\n\t}\n};\n\nexport class ProfileRequest {\n\tconstructor (pointcloud, profile, maxDepth, callback) {\n\t\tthis.pointcloud = pointcloud;\n\t\tthis.profile = profile;\n\t\tthis.maxDepth = maxDepth || Number.MAX_VALUE;\n\t\tthis.callback = callback;\n\t\tthis.temporaryResult = new ProfileData(this.profile);\n\t\tthis.pointsServed = 0;\n\t\tthis.highestLevelServed = 0;\n\n\t\tthis.priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; });\n\n\t\tthis.initialize();\n\t}\n\n\tinitialize () {\n\t\tthis.priorityQueue.push({node: this.pointcloud.pcoGeometry.root, weight: Infinity});\n\t};\n\n\t// traverse the node and add intersecting descendants to queue\n\ttraverse (node) {\n\t\tlet stack = [];\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\tlet child = node.children[i];\n\t\t\tif (child && this.pointcloud.nodeIntersectsProfile(child, this.profile)) {\n\t\t\t\tstack.push(child);\n\t\t\t}\n\t\t}\n\n\t\twhile (stack.length > 0) {\n\t\t\tlet node = stack.pop();\n\t\t\tlet weight = node.boundingSphere.radius;\n\n\t\t\tthis.priorityQueue.push({node: node, weight: weight});\n\n\t\t\t// add children that intersect the cutting plane\n\t\t\tif (node.level < this.maxDepth) {\n\t\t\t\tfor (let i = 0; i < 8; i++) {\n\t\t\t\t\tlet child = node.children[i];\n\t\t\t\t\tif (child && this.pointcloud.nodeIntersectsProfile(child, this.profile)) {\n\t\t\t\t\t\tstack.push(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tupdate(){\n\t\tif(!this.updateGeneratorInstance){\n\t\t\tthis.updateGeneratorInstance = this.updateGenerator();\n\t\t}\n\n\t\tlet result = this.updateGeneratorInstance.next();\n\t\tif(result.done){\n\t\t\tthis.updateGeneratorInstance = null;\n\t\t}\n\t}\n\n\t* updateGenerator(){\n\t\t// load nodes in queue\n\t\t// if hierarchy expands, also load nodes from expanded hierarchy\n\t\t// once loaded, add data to this.points and remove node from queue\n\t\t// only evaluate 1-50 nodes per frame to maintain responsiveness\n\n\t\tlet start = performance.now();\n\n\t\tlet maxNodesPerUpdate = 1;\n\t\tlet intersectedNodes = [];\n\n\t\tfor (let i = 0; i < Math.min(maxNodesPerUpdate, this.priorityQueue.size()); i++) {\n\t\t\tlet element = this.priorityQueue.pop();\n\t\t\tlet node = element.node;\n\n\t\t\tif(node.level > this.maxDepth){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (node.loaded) {\n\t\t\t\t// add points to result\n\t\t\t\tintersectedNodes.push(node);\n\t\t\t\texports.lru.touch(node);\n\t\t\t\tthis.highestLevelServed = Math.max(node.getLevel(), this.highestLevelServed);\n\n\t\t\t\tvar geom = node.pcoGeometry;\n\t\t\t\tvar hierarchyStepSize = geom ? geom.hierarchyStepSize : 1;\n\n\t\t\t\tvar doTraverse = node.getLevel() === 0 ||\n\t\t\t\t\t(node.level % hierarchyStepSize === 0 && node.hasChildren);\n\n\t\t\t\tif (doTraverse) {\n\t\t\t\t\tthis.traverse(node);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode.load();\n\t\t\t\tthis.priorityQueue.push(element);\n\t\t\t}\n\t\t}\n\n\t\tif (intersectedNodes.length > 0) {\n\n\t\t\tfor(let done of this.getPointsInsideProfile(intersectedNodes, this.temporaryResult)){\n\t\t\t\tif(!done){\n\t\t\t\t\t//console.log(\"updateGenerator yields\");\n\t\t\t\t\tyield false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.temporaryResult.size() > 100) {\n\t\t\t\tthis.pointsServed += this.temporaryResult.size();\n\t\t\t\tthis.callback.onProgress({request: this, points: this.temporaryResult});\n\t\t\t\tthis.temporaryResult = new ProfileData(this.profile);\n\t\t\t}\n\t\t}\n\n\t\tif (this.priorityQueue.size() === 0) {\n\t\t\t// we're done! inform callback and remove from pending requests\n\n\t\t\tif (this.temporaryResult.size() > 0) {\n\t\t\t\tthis.pointsServed += this.temporaryResult.size();\n\t\t\t\tthis.callback.onProgress({request: this, points: this.temporaryResult});\n\t\t\t\tthis.temporaryResult = new ProfileData(this.profile);\n\t\t\t}\n\n\t\t\tthis.callback.onFinish({request: this});\n\n\t\t\tlet index = this.pointcloud.profileRequests.indexOf(this);\n\t\t\tif (index >= 0) {\n\t\t\t\tthis.pointcloud.profileRequests.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\t\tyield true;\n\t};\n\n\t* getAccepted(numPoints, node, matrix, segment, segmentDir, points, totalMileage){\n\t\tlet checkpoint = performance.now();\n\n\t\tlet accepted = new Uint32Array(numPoints);\n\t\tlet mileage = new Float64Array(numPoints);\n\t\tlet acceptedPositions = new Float32Array(numPoints * 3);\n\t\tlet numAccepted = 0;\n\n\t\tlet pos = new THREE.Vector3();\n\t\tlet svp = new THREE.Vector3();\n\n\t\tlet view = new Float32Array(node.geometry.attributes.position.array);\n\n\t\tfor (let i = 0; i < numPoints; i++) {\n\n\t\t\tpos.set(\n\t\t\t\tview[i * 3 + 0],\n\t\t\t\tview[i * 3 + 1],\n\t\t\t\tview[i * 3 + 2]);\n\n\t\t\tpos.applyMatrix4(matrix);\n\t\t\tlet distance = Math.abs(segment.cutPlane.distanceToPoint(pos));\n\t\t\tlet centerDistance = Math.abs(segment.halfPlane.distanceToPoint(pos));\n\n\t\t\tif (distance < this.profile.width / 2 && centerDistance < segment.length / 2) {\n\t\t\t\tsvp.subVectors(pos, segment.start);\n\t\t\t\tlet localMileage = segmentDir.dot(svp);\n\n\t\t\t\taccepted[numAccepted] = i;\n\t\t\t\tmileage[numAccepted] = localMileage + totalMileage;\n\t\t\t\tpoints.boundingBox.expandByPoint(pos);\n\n\t\t\t\tpos.sub(this.pointcloud.position);\n\n\t\t\t\tacceptedPositions[3 * numAccepted + 0] = pos.x;\n\t\t\t\tacceptedPositions[3 * numAccepted + 1] = pos.y;\n\t\t\t\tacceptedPositions[3 * numAccepted + 2] = pos.z;\n\n\t\t\t\tnumAccepted++;\n\t\t\t}\n\n\t\t\tif((i % 1000) === 0){\n\t\t\t\tlet duration = performance.now() - checkpoint;\n\t\t\t\tif(duration > 4){\n\t\t\t\t\t//console.log(`getAccepted yield after ${duration}ms`);\n\t\t\t\t\tyield false;\n\t\t\t\t\tcheckpoint = performance.now();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\taccepted = accepted.subarray(0, numAccepted);\n\t\tmileage = mileage.subarray(0, numAccepted);\n\t\tacceptedPositions = acceptedPositions.subarray(0, numAccepted * 3);\n\n\t\t//let end = performance.now();\n\t\t//let duration = end - start;\n\t\t//console.log(\"accepted duration \", duration)\n\n\t\t//console.log(`getAccepted finished`);\n\n\t\tyield [accepted, mileage, acceptedPositions];\n\t}\n\n\t* getPointsInsideProfile(nodes, target){\n\t\tlet checkpoint = performance.now();\n\t\tlet totalMileage = 0;\n\n\t\tlet pointsProcessed = 0;\n\n\t\tfor (let segment of target.segments) {\n\t\t\tfor (let node of nodes) {\n\t\t\t\tlet numPoints = node.numPoints;\n\t\t\t\tlet geometry = node.geometry;\n\n\t\t\t\tif(!numPoints){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t{ // skip if current node doesn't intersect current segment\n\t\t\t\t\tlet bbWorld = node.boundingBox.clone().applyMatrix4(this.pointcloud.matrixWorld);\n\t\t\t\t\tlet bsWorld = bbWorld.getBoundingSphere(new THREE.Sphere());\n\n\t\t\t\t\tlet start = new THREE.Vector3(segment.start.x, segment.start.y, bsWorld.center.z);\n\t\t\t\t\tlet end = new THREE.Vector3(segment.end.x, segment.end.y, bsWorld.center.z);\n\n\t\t\t\t\tlet closest = new THREE.Line3(start, end).closestPointToPoint(bsWorld.center, true, new THREE.Vector3());\n\t\t\t\t\tlet distance = closest.distanceTo(bsWorld.center);\n\n\t\t\t\t\tlet intersects = (distance < (bsWorld.radius + target.profile.width));\n\n\t\t\t\t\tif(!intersects){\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//{// DEBUG\n\t\t\t\t//\tconsole.log(node.name);\n\t\t\t\t//\tlet boxHelper = new Potree.Box3Helper(node.getBoundingBox());\n\t\t\t\t//\tboxHelper.matrixAutoUpdate = false;\n\t\t\t\t//\tboxHelper.matrix.copy(viewer.scene.pointclouds[0].matrixWorld);\n\t\t\t\t//\tviewer.scene.scene.add(boxHelper);\n\t\t\t\t//}\n\n\t\t\t\tlet sv = new THREE.Vector3().subVectors(segment.end, segment.start).setZ(0);\n\t\t\t\tlet segmentDir = sv.clone().normalize();\n\n\t\t\t\tlet points = new Points();\n\n\t\t\t\tlet nodeMatrix = new THREE.Matrix4().makeTranslation(...node.boundingBox.min.toArray());\n\n\t\t\t\tlet matrix = new THREE.Matrix4().multiplyMatrices(\n\t\t\t\t\tthis.pointcloud.matrixWorld, nodeMatrix);\n\n\t\t\t\tpointsProcessed = pointsProcessed + numPoints;\n\n\t\t\t\tlet accepted = null;\n\t\t\t\tlet mileage = null;\n\t\t\t\tlet acceptedPositions = null;\n\t\t\t\tfor(let result of this.getAccepted(numPoints, node, matrix, segment, segmentDir, points,totalMileage)){\n\t\t\t\t\tif(!result){\n\t\t\t\t\t\tlet duration = performance.now() - checkpoint;\n\t\t\t\t\t\t//console.log(`getPointsInsideProfile yield after ${duration}ms`);\n\t\t\t\t\t\tyield false;\n\t\t\t\t\t\tcheckpoint = performance.now();\n\t\t\t\t\t}else{\n\t\t\t\t\t\t[accepted, mileage, acceptedPositions] = result;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet duration = performance.now() - checkpoint;\n\t\t\t\tif(duration > 4){\n\t\t\t\t\t//console.log(`getPointsInsideProfile yield after ${duration}ms`);\n\t\t\t\t\tyield false;\n\t\t\t\t\tcheckpoint = performance.now();\n\t\t\t\t}\n\n\t\t\t\tpoints.data.position = acceptedPositions;\n\n\t\t\t\tlet relevantAttributes = Object.keys(geometry.attributes).filter(a => ![\"position\", \"indices\"].includes(a));\n\t\t\t\tfor(let attributeName of relevantAttributes){\n\n\t\t\t\t\tlet attribute = geometry.attributes[attributeName];\n\t\t\t\t\tlet numElements = attribute.array.length / numPoints;\n\n\t\t\t\t\tif(numElements !== parseInt(numElements)){\n\t\t\t\t\t\tdebugger;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet Type = attribute.array.constructor;\n\n\t\t\t\t\tlet filteredBuffer = new Type(numElements * accepted.length);\n\n\t\t\t\t\tlet source = attribute.array;\n\t\t\t\t\tlet target = filteredBuffer;\n\n\t\t\t\t\tfor(let i = 0; i < accepted.length; i++){\n\n\t\t\t\t\t\tlet index = accepted[i];\n\n\t\t\t\t\t\tlet start = index * numElements;\n\t\t\t\t\t\tlet end = start + numElements;\n\t\t\t\t\t\tlet sub = source.subarray(start, end);\n\n\t\t\t\t\t\ttarget.set(sub, i * numElements);\n\t\t\t\t\t}\n\n\t\t\t\t\tpoints.data[attributeName] = filteredBuffer;\n\t\t\t\t}\n\n\t\t\t\tpoints.data['mileage'] = mileage;\n\t\t\t\tpoints.numPoints = accepted.length;\n\n\t\t\t\tsegment.points.add(points);\n\t\t\t}\n\n\t\t\ttotalMileage += segment.length;\n\t\t}\n\n\t\tfor (let segment of target.segments) {\n\t\t\ttarget.boundingBox.union(segment.points.boundingBox);\n\t\t}\n\n\t\t//console.log(`getPointsInsideProfile finished`);\n\t\tyield true;\n\t};\n\n\tfinishLevelThenCancel () {\n\t\tif (this.cancelRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.maxDepth = this.highestLevelServed;\n\t\tthis.cancelRequested = true;\n\n\t\t//console.log(`maxDepth: ${this.maxDepth}`);\n\t};\n\n\tcancel () {\n\t\tthis.callback.onCancel();\n\n\t\tthis.priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; });\n\n\t\tlet index = this.pointcloud.profileRequests.indexOf(this);\n\t\tif (index >= 0) {\n\t\t\tthis.pointcloud.profileRequests.splice(index, 1);\n\t\t}\n\t};\n}\n","\nexport class Version{\n\n\tconstructor(version){\n\t\tthis.version = version;\n\t\tlet vmLength = (version.indexOf('.') === -1) ? version.length : version.indexOf('.');\n\t\tthis.versionMajor = parseInt(version.substr(0, vmLength));\n\t\tthis.versionMinor = parseInt(version.substr(vmLength + 1));\n\t\tif (this.versionMinor.length === 0) {\n\t\t\tthis.versionMinor = 0;\n\t\t}\n\t}\n\n\tnewerThan(version){\n\t\tlet v = new Version(version);\n\n\t\tif (this.versionMajor > v.versionMajor) {\n\t\t\treturn true;\n\t\t} else if (this.versionMajor === v.versionMajor && this.versionMinor > v.versionMinor) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tequalOrHigher(version){\n\t\tlet v = new Version(version);\n\n\t\tif (this.versionMajor > v.versionMajor) {\n\t\t\treturn true;\n\t\t} else if (this.versionMajor === v.versionMajor && this.versionMinor >= v.versionMinor) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tupTo(version){\n\t\treturn !this.newerThan(version);\n\t}\n\n}\n\n\n","\nexport class WorkerPool{\n\tconstructor(){\n\t\tthis.workers = {};\n\t}\n\n\tgetWorker(url){\n\t\tif (!this.workers[url]){\n\t\t\tthis.workers[url] = [];\n\t\t}\n\n\t\tif (this.workers[url].length === 0){\n\t\t\tlet worker = new Worker(url);\n\t\t\tthis.workers[url].push(worker);\n\t\t}\n\n\t\tlet worker = this.workers[url].pop();\n\n\t\treturn worker;\n\t}\n\n\treturnWorker(url, worker){\n\t\tthis.workers[url].push(worker);\n\t}\n};\n\n//Potree.workerPool = new Potree.WorkerPool();\n","\r\n\r\nfunction createPointcloudData(pointcloud) {\r\n\r\n\tlet material = pointcloud.material;\r\n\r\n\tlet ranges = [];\r\n\t\r\n\tfor(let [name, value] of material.ranges){\r\n\t\tranges.push({\r\n\t\t\tname: name,\r\n\t\t\tvalue: value,\r\n\t\t});\r\n\t}\r\n\r\n\tif(typeof material.elevationRange[0] === \"number\"){\r\n\t\tranges.push({\r\n\t\t\tname: \"elevationRange\",\r\n\t\t\tvalue: material.elevationRange,\r\n\t\t});\r\n\t}\r\n\tif(typeof material.intensityRange[0] === \"number\"){\r\n\t\tranges.push({\r\n\t\t\tname: \"intensityRange\",\r\n\t\t\tvalue: material.intensityRange,\r\n\t\t});\r\n\t}\r\n\r\n\tlet pointSizeTypeName = Object.entries(Potree.PointSizeType).find(e => e[1] === material.pointSizeType)[0];\r\n\r\n\tlet jsonMaterial = {\r\n\t\tactiveAttributeName: material.activeAttributeName,\r\n\t\tranges: ranges,\r\n\t\tsize: material.size,\r\n\t\tminSize: material.minSize,\r\n\t\tpointSizeType: pointSizeTypeName,\r\n\t\tmatcap: material.matcap,\r\n\t};\r\n\r\n\tconst pcdata = {\r\n\t\tname: pointcloud.name,\r\n\t\turl: pointcloud.pcoGeometry.url,\r\n\t\tposition: pointcloud.position.toArray(),\r\n\t\trotation: pointcloud.rotation.toArray(),\r\n\t\tscale: pointcloud.scale.toArray(),\r\n\t\tmaterial: jsonMaterial,\r\n\t};\r\n\r\n\treturn pcdata;\r\n}\r\n\r\nfunction createProfileData(profile){\r\n\tconst data = {\r\n\t\tuuid: profile.uuid,\r\n\t\tname: profile.name,\r\n\t\tpoints: profile.points.map(p => p.toArray()),\r\n\t\theight: profile.height,\r\n\t\twidth: profile.width,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createVolumeData(volume){\r\n\tconst data = {\r\n\t\tuuid: volume.uuid,\r\n\t\ttype: volume.constructor.name,\r\n\t\tname: volume.name,\r\n\t\tposition: volume.position.toArray(),\r\n\t\trotation: volume.rotation.toArray(),\r\n\t\tscale: volume.scale.toArray(),\r\n\t\tvisible: volume.visible,\r\n\t\tclip: volume.clip,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createCameraAnimationData(animation){\r\n\r\n\tconst controlPoints = animation.controlPoints.map( cp => {\r\n\t\tconst cpdata = {\r\n\t\t\tposition: cp.position.toArray(),\r\n\t\t\ttarget: cp.target.toArray(),\r\n\t\t};\r\n\r\n\t\treturn cpdata;\r\n\t});\r\n\r\n\tconst data = {\r\n\t\tuuid: animation.uuid,\r\n\t\tname: animation.name,\r\n\t\tduration: animation.duration,\r\n\t\tt: animation.t,\r\n\t\tcurveType: animation.curveType,\r\n\t\tvisible: animation.visible,\r\n\t\tcontrolPoints: controlPoints,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createMeasurementData(measurement){\r\n\r\n\tconst data = {\r\n\t\tuuid: measurement.uuid,\r\n\t\tname: measurement.name,\r\n\t\tpoints: measurement.points.map(p => p.position.toArray()),\r\n\t\tshowDistances: measurement.showDistances,\r\n\t\tshowCoordinates: measurement.showCoordinates,\r\n\t\tshowArea: measurement.showArea,\r\n\t\tclosed: measurement.closed,\r\n\t\tshowAngles: measurement.showAngles,\r\n\t\tshowHeight: measurement.showHeight,\r\n\t\tshowCircle: measurement.showCircle,\r\n\t\tshowAzimuth: measurement.showAzimuth,\r\n\t\tshowEdges: measurement.showEdges,\r\n\t\tcolor: measurement.color.toArray(),\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createOrientedImagesData(images){\r\n\tconst data = {\r\n\t\tcameraParamsPath: images.cameraParamsPath,\r\n\t\timageParamsPath: images.imageParamsPath,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createGeopackageData(geopackage){\r\n\tconst data = {\r\n\t\tpath: geopackage.path,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createAnnotationData(annotation){\r\n\r\n\tconst data = {\r\n\t\tuuid: annotation.uuid,\r\n\t\ttitle: annotation.title.toString(),\r\n\t\tdescription: annotation.description,\r\n\t\tposition: annotation.position.toArray(),\r\n\t\toffset: annotation.offset.toArray(),\r\n\t\tchildren: [],\r\n\t};\r\n\r\n\tif(annotation.cameraPosition){\r\n\t\tdata.cameraPosition = annotation.cameraPosition.toArray();\r\n\t}\r\n\r\n\tif(annotation.cameraTarget){\r\n\t\tdata.cameraTarget = annotation.cameraTarget.toArray();\r\n\t}\r\n\r\n\tif(typeof annotation.radius !== \"undefined\"){\r\n\t\tdata.radius = annotation.radius;\r\n\t}\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createAnnotationsData(viewer){\r\n\t\r\n\tconst map = new Map();\r\n\r\n\tviewer.scene.annotations.traverseDescendants(a => {\r\n\t\tconst aData = createAnnotationData(a);\r\n\r\n\t\tmap.set(a, aData);\r\n\t});\r\n\r\n\tfor(const [annotation, data] of map){\r\n\t\tfor(const child of annotation.children){\r\n\t\t\tconst childData = map.get(child);\r\n\t\t\tdata.children.push(childData);\r\n\t\t}\r\n\t}\r\n\r\n\tconst annotations = viewer.scene.annotations.children.map(a => map.get(a));\r\n\r\n\treturn annotations;\r\n}\r\n\r\nfunction createSettingsData(viewer){\r\n\treturn {\r\n\t\tpointBudget: viewer.getPointBudget(),\r\n\t\tfov: viewer.getFOV(),\r\n\t\tedlEnabled: viewer.getEDLEnabled(),\r\n\t\tedlRadius: viewer.getEDLRadius(),\r\n\t\tedlStrength: viewer.getEDLStrength(),\r\n\t\tbackground: viewer.getBackground(),\r\n\t\tminNodeSize: viewer.getMinNodeSize(),\r\n\t\tshowBoundingBoxes: viewer.getShowBoundingBox(),\r\n\t};\r\n}\r\n\r\nfunction createSceneContentData(viewer){\r\n\r\n\tconst data = [];\r\n\r\n\tconst potreeObjects = [];\r\n\r\n\tviewer.scene.scene.traverse(node => {\r\n\t\tif(node.potree){\r\n\t\t\tpotreeObjects.push(node);\r\n\t\t}\r\n\t});\r\n\r\n\tfor(const object of potreeObjects){\r\n\t\t\r\n\t\tif(object.potree.file){\r\n\t\t\tconst saveObject = {\r\n\t\t\t\tfile: object.potree.file,\r\n\t\t\t};\r\n\r\n\t\t\tdata.push(saveObject);\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createViewData(viewer){\r\n\tconst view = viewer.scene.view;\r\n\r\n\tconst data = {\r\n\t\tposition: view.position.toArray(),\r\n\t\ttarget: view.getPivot().toArray(),\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createClassificationData(viewer){\r\n\tconst classifications = viewer.classifications;\r\n\r\n\tconst data = classifications;\r\n\r\n\treturn data;\r\n}\r\n\r\nexport function saveProject(viewer) {\r\n\r\n\tconst scene = viewer.scene;\r\n\r\n\tconst data = {\r\n\t\ttype: \"Potree\",\r\n\t\tversion: 1.7,\r\n\t\tsettings: createSettingsData(viewer),\r\n\t\tview: createViewData(viewer),\r\n\t\tclassification: createClassificationData(viewer),\r\n\t\tpointclouds: scene.pointclouds.map(createPointcloudData),\r\n\t\tmeasurements: scene.measurements.map(createMeasurementData),\r\n\t\tvolumes: scene.volumes.map(createVolumeData),\r\n\t\tcameraAnimations: scene.cameraAnimations.map(createCameraAnimationData),\r\n\t\tprofiles: scene.profiles.map(createProfileData),\r\n\t\tannotations: createAnnotationsData(viewer),\r\n\t\torientedImages: scene.orientedImages.map(createOrientedImagesData),\r\n\t\tgeopackages: scene.geopackages.map(createGeopackageData),\r\n\t\t// objects: createSceneContentData(viewer),\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n","\r\nimport { EventDispatcher } from \"../../EventDispatcher.js\";\r\nimport { Utils } from \"../../utils.js\";\r\n\r\nclass ControlPoint{\r\n\r\n\tconstructor(){\r\n\t\tthis.position = new THREE.Vector3(0, 0, 0);\r\n\t\tthis.target = new THREE.Vector3(0, 0, 0);\r\n\t\tthis.positionHandle = null;\r\n\t\tthis.targetHandle = null;\r\n\t}\r\n\r\n};\r\n\r\n\r\n\r\nexport class CameraAnimation extends EventDispatcher{\r\n\r\n\tconstructor(viewer){\r\n\t\tsuper();\r\n\t\t\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.selectedElement = null;\r\n\r\n\t\tthis.controlPoints = [];\r\n\r\n\t\tthis.uuid = THREE.Math.generateUUID();\r\n\r\n\t\tthis.node = new THREE.Object3D();\r\n\t\tthis.node.name = \"camera animation\";\r\n\t\tthis.viewer.scene.scene.add(this.node);\r\n\r\n\t\tthis.frustum = this.createFrustum();\r\n\t\tthis.node.add(this.frustum);\r\n\r\n\t\tthis.name = \"Camera Animation\";\r\n\t\tthis.duration = 5;\r\n\t\tthis.t = 0;\r\n\t\t// \"centripetal\", \"chordal\", \"catmullrom\"\r\n\t\tthis.curveType = \"centripetal\" \r\n\t\tthis.visible = true;\r\n\r\n\t\tthis.createUpdateHook();\r\n\t\tthis.createPath();\r\n\t}\r\n\r\n\tstatic defaultFromView(viewer){\r\n\t\tconst animation = new CameraAnimation(viewer);\r\n\r\n\t\tconst camera = viewer.scene.getActiveCamera();\r\n\t\tconst target = viewer.scene.view.getPivot();\r\n\r\n\t\tconst cpCenter = new THREE.Vector3(\r\n\t\t\t0.3 * camera.position.x + 0.7 * target.x,\r\n\t\t\t0.3 * camera.position.y + 0.7 * target.y,\r\n\t\t\t0.3 * camera.position.z + 0.7 * target.z,\r\n\t\t);\r\n\r\n\t\tconst targetCenter = new THREE.Vector3(\r\n\t\t\t0.05 * camera.position.x + 0.95 * target.x,\r\n\t\t\t0.05 * camera.position.y + 0.95 * target.y,\r\n\t\t\t0.05 * camera.position.z + 0.95 * target.z,\r\n\t\t);\r\n\r\n\t\tconst r = camera.position.distanceTo(target) * 0.3;\r\n\r\n\t\t//const dir = target.clone().sub(camera.position).normalize();\r\n\t\tconst angle = Utils.computeAzimuth(camera.position, target);\r\n\r\n\t\tconst n = 5;\r\n\t\tfor(let i = 0; i < n; i++){\r\n\t\t\tlet u = 1.5 * Math.PI * (i / n) + angle;\r\n\r\n\t\t\tconst dx = r * Math.cos(u);\r\n\t\t\tconst dy = r * Math.sin(u);\r\n\r\n\t\t\tconst cpPos = [\r\n\t\t\t\tcpCenter.x + dx,\r\n\t\t\t\tcpCenter.y + dy,\r\n\t\t\t\tcpCenter.z,\r\n\t\t\t];\r\n\r\n\t\t\tconst targetPos = [\r\n\t\t\t\ttargetCenter.x + dx * 0.1,\r\n\t\t\t\ttargetCenter.y + dy * 0.1,\r\n\t\t\t\ttargetCenter.z,\r\n\t\t\t];\r\n\r\n\t\t\tconst cp = animation.createControlPoint();\r\n\t\t\tcp.position.set(...cpPos);\r\n\t\t\tcp.target.set(...targetPos);\r\n\t\t}\r\n\r\n\t\treturn animation;\r\n\t}\r\n\r\n\tcreateUpdateHook(){\r\n\t\tconst viewer = this.viewer;\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\r\n\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\t\t\tconst {width, height} = viewer.renderer.getSize(new THREE.Vector2());\r\n\r\n\t\t\tthis.node.visible = this.visible;\r\n\r\n\t\t\tfor(const cp of this.controlPoints){\r\n\t\t\t\t\r\n\t\t\t\t{ // position\r\n\t\t\t\t\tconst projected = cp.position.clone().project(camera);\r\n\r\n\t\t\t\t\tconst visible = this.visible && (projected.z < 1 && projected.z > -1);\r\n\r\n\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\tconst x = width * (projected.x * 0.5 + 0.5);\r\n\t\t\t\t\t\tconst y = height - height * (projected.y * 0.5 + 0.5);\r\n\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.left = x - cp.positionHandle.svg.clientWidth / 2;\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.top = y - cp.positionHandle.svg.clientHeight / 2;\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.display = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.display = \"none\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t{ // target\r\n\t\t\t\t\tconst projected = cp.target.clone().project(camera);\r\n\r\n\t\t\t\t\tconst visible = this.visible && (projected.z < 1 && projected.z > -1);\r\n\r\n\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\tconst x = width * (projected.x * 0.5 + 0.5);\r\n\t\t\t\t\t\tconst y = height - height * (projected.y * 0.5 + 0.5);\r\n\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.left = x - cp.targetHandle.svg.clientWidth / 2;\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.top = y - cp.targetHandle.svg.clientHeight / 2;\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.display = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.display = \"none\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.line.material.resolution.set(width, height);\r\n\r\n\t\t\tthis.updatePath();\r\n\r\n\t\t\t{ // frustum\r\n\t\t\t\tconst frame = this.at(this.t);\r\n\t\t\t\tconst frustum = this.frustum;\r\n\r\n\t\t\t\tfrustum.position.copy(frame.position);\r\n\t\t\t\tfrustum.lookAt(...frame.target.toArray());\r\n\t\t\t\tfrustum.scale.set(20, 20, 20);\r\n\r\n\t\t\t\tfrustum.material.resolution.set(width, height);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tcreateControlPoint(index){\r\n\r\n\t\tif(index === undefined){\r\n\t\t\tindex = this.controlPoints.length;\r\n\t\t}\r\n\r\n\t\tconst cp = new ControlPoint();\r\n\r\n\r\n\t\tif(this.controlPoints.length >= 2 && index === 0){\r\n\t\t\tconst cp1 = this.controlPoints[0];\r\n\t\t\tconst cp2 = this.controlPoints[1];\r\n\r\n\t\t\tconst dir = cp1.position.clone().sub(cp2.position).multiplyScalar(0.5);\r\n\t\t\tcp.position.copy(cp1.position).add(dir);\r\n\r\n\t\t\tconst tDir = cp1.target.clone().sub(cp2.target).multiplyScalar(0.5);\r\n\t\t\tcp.target.copy(cp1.target).add(tDir);\r\n\t\t}else if(this.controlPoints.length >= 2 && index === this.controlPoints.length){\r\n\t\t\tconst cp1 = this.controlPoints[this.controlPoints.length - 2];\r\n\t\t\tconst cp2 = this.controlPoints[this.controlPoints.length - 1];\r\n\r\n\t\t\tconst dir = cp2.position.clone().sub(cp1.position).multiplyScalar(0.5);\r\n\t\t\tcp.position.copy(cp1.position).add(dir);\r\n\r\n\t\t\tconst tDir = cp2.target.clone().sub(cp1.target).multiplyScalar(0.5);\r\n\t\t\tcp.target.copy(cp2.target).add(tDir);\r\n\t\t}else if(this.controlPoints.length >= 2){\r\n\t\t\tconst cp1 = this.controlPoints[index - 1];\r\n\t\t\tconst cp2 = this.controlPoints[index];\r\n\r\n\t\t\tcp.position.copy(cp1.position.clone().add(cp2.position).multiplyScalar(0.5));\r\n\t\t\tcp.target.copy(cp1.target.clone().add(cp2.target).multiplyScalar(0.5));\r\n\t\t}\r\n\r\n\t\t// cp.position.copy(viewer.scene.view.position);\r\n\t\t// cp.target.copy(viewer.scene.view.getPivot());\r\n\r\n\t\tcp.positionHandle = this.createHandle(cp.position);\r\n\t\tcp.targetHandle = this.createHandle(cp.target);\r\n\r\n\t\tthis.controlPoints.splice(index, 0, cp);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"controlpoint_added\",\r\n\t\t\tcontrolpoint: cp,\r\n\t\t});\r\n\r\n\t\treturn cp;\r\n\t}\r\n\r\n\tremoveControlPoint(cp){\r\n\t\tthis.controlPoints = this.controlPoints.filter(_cp => _cp !== cp);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"controlpoint_removed\",\r\n\t\t\tcontrolpoint: cp,\r\n\t\t});\r\n\r\n\t\tcp.positionHandle.svg.remove();\r\n\t\tcp.targetHandle.svg.remove();\r\n\r\n\t\t// TODO destroy cp\r\n\t}\r\n\r\n\tcreatePath(){\r\n\r\n\t\t{ // position\r\n\t\t\tconst geometry = new THREE.LineGeometry();\r\n\r\n\t\t\tlet material = new THREE.LineMaterial({ \r\n\t\t\t\tcolor: 0x00ff00, \r\n\t\t\t\tdashSize: 5, \r\n\t\t\t\tgapSize: 2,\r\n\t\t\t\tlinewidth: 2, \r\n\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t\t});\r\n\r\n\t\t\tconst line = new THREE.Line2(geometry, material);\r\n\r\n\t\t\tthis.line = line;\r\n\t\t\tthis.node.add(line);\r\n\t\t}\r\n\r\n\t\t{ // target\r\n\t\t\tconst geometry = new THREE.LineGeometry();\r\n\r\n\t\t\tlet material = new THREE.LineMaterial({ \r\n\t\t\t\tcolor: 0x0000ff, \r\n\t\t\t\tdashSize: 5, \r\n\t\t\t\tgapSize: 2,\r\n\t\t\t\tlinewidth: 2, \r\n\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t\t});\r\n\r\n\t\t\tconst line = new THREE.Line2(geometry, material);\r\n\r\n\t\t\tthis.targetLine = line;\r\n\t\t\tthis.node.add(line);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateFrustum(){\r\n\r\n\t\tconst f = 0.3;\r\n\r\n\t\tconst positions = [\r\n\t\t\t 0, 0, 0,\r\n\t\t\t-f, -f, +1,\r\n\r\n\t\t\t 0, 0, 0,\r\n\t\t\t f, -f, +1,\r\n\r\n\t\t\t 0, 0, 0,\r\n\t\t\t f, f, +1,\r\n\r\n\t\t\t 0, 0, 0,\r\n\t\t\t-f, f, +1,\r\n\r\n\t\t\t-f, -f, +1,\r\n\t\t\t f, -f, +1,\r\n\r\n\t\t\t f, -f, +1,\r\n\t\t\t f, f, +1,\r\n\r\n\t\t\t f, f, +1,\r\n\t\t\t-f, f, +1,\r\n\r\n\t\t\t-f, f, +1,\r\n\t\t\t-f, -f, +1,\r\n\t\t];\r\n\r\n\t\tconst geometry = new THREE.LineGeometry();\r\n\r\n\t\tgeometry.setPositions(positions);\r\n\t\tgeometry.verticesNeedUpdate = true;\r\n\t\tgeometry.computeBoundingSphere();\r\n\r\n\t\tlet material = new THREE.LineMaterial({ \r\n\t\t\tcolor: 0xff0000, \r\n\t\t\tlinewidth: 2, \r\n\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t});\r\n\r\n\t\tconst line = new THREE.Line2(geometry, material);\r\n\t\tline.computeLineDistances();\r\n\t\t\r\n\t\treturn line;\r\n\t}\r\n\r\n\tupdatePath(){\r\n\r\n\t\t{ // positions\r\n\t\t\tconst positions = this.controlPoints.map(cp => cp.position);\r\n\t\t\tconst first = positions[0];\r\n\r\n\t\t\tconst curve = new THREE.CatmullRomCurve3(positions);\r\n\t\t\tcurve.curveType = this.curveType;\r\n\r\n\t\t\tconst n = 100;\r\n\r\n\t\t\tconst curvePositions = [];\r\n\t\t\tfor(let k = 0; k <= n; k++){\r\n\t\t\t\tconst t = k / n;\r\n\r\n\t\t\t\tconst position = curve.getPoint(t).sub(first);\r\n\r\n\t\t\t\tcurvePositions.push(position.x, position.y, position.z);\r\n\t\t\t}\r\n\r\n\t\t\tthis.line.geometry.setPositions(curvePositions);\r\n\t\t\tthis.line.geometry.verticesNeedUpdate = true;\r\n\t\t\tthis.line.geometry.computeBoundingSphere();\r\n\t\t\tthis.line.position.copy(first);\r\n\t\t\tthis.line.computeLineDistances();\r\n\r\n\t\t\tthis.cameraCurve = curve;\r\n\t\t}\r\n\r\n\t\t{ // targets\r\n\t\t\tconst positions = this.controlPoints.map(cp => cp.target);\r\n\t\t\tconst first = positions[0];\r\n\r\n\t\t\tconst curve = new THREE.CatmullRomCurve3(positions);\r\n\t\t\tcurve.curveType = this.curveType;\r\n\r\n\t\t\tconst n = 100;\r\n\r\n\t\t\tconst curvePositions = [];\r\n\t\t\tfor(let k = 0; k <= n; k++){\r\n\t\t\t\tconst t = k / n;\r\n\r\n\t\t\t\tconst position = curve.getPoint(t).sub(first);\r\n\r\n\t\t\t\tcurvePositions.push(position.x, position.y, position.z);\r\n\t\t\t}\r\n\r\n\t\t\tthis.targetLine.geometry.setPositions(curvePositions);\r\n\t\t\tthis.targetLine.geometry.verticesNeedUpdate = true;\r\n\t\t\tthis.targetLine.geometry.computeBoundingSphere();\r\n\t\t\tthis.targetLine.position.copy(first);\r\n\t\t\tthis.targetLine.computeLineDistances();\r\n\r\n\t\t\tthis.targetCurve = curve;\r\n\t\t}\r\n\t}\r\n\r\n\tat(t){\r\n\t\t\r\n\t\tif(t > 1){\r\n\t\t\tt = 1;\r\n\t\t}else if(t < 0){\r\n\t\t\tt = 0;\r\n\t\t}\r\n\r\n\t\tconst camPos = this.cameraCurve.getPointAt(t);\r\n\t\tconst target = this.targetCurve.getPointAt(t);\r\n\r\n\t\tconst frame = {\r\n\t\t\tposition: camPos,\r\n\t\t\ttarget: target,\r\n\t\t};\r\n\r\n\t\treturn frame;\r\n\t}\r\n\r\n\tset(t){\r\n\t\tthis.t = t;\r\n\t}\r\n\r\n\tcreateHandle(vector){\r\n\t\t\r\n\t\tconst svgns = \"http://www.w3.org/2000/svg\";\r\n\t\tconst svg = document.createElementNS(svgns, \"svg\");\r\n\r\n\t\tsvg.setAttribute(\"width\", \"2em\");\r\n\t\tsvg.setAttribute(\"height\", \"2em\");\r\n\t\tsvg.setAttribute(\"position\", \"absolute\");\r\n\r\n\t\tsvg.style.left = \"50px\";\r\n\t\tsvg.style.top = \"50px\";\r\n\t\tsvg.style.position = \"absolute\";\r\n\t\tsvg.style.zIndex = \"10000\";\r\n\r\n\t\tconst circle = document.createElementNS(svgns, 'circle');\r\n\t\tcircle.setAttributeNS(null, 'cx', \"1em\");\r\n\t\tcircle.setAttributeNS(null, 'cy', \"1em\");\r\n\t\tcircle.setAttributeNS(null, 'r', \"0.5em\");\r\n\t\tcircle.setAttributeNS(null, 'style', 'fill: red; stroke: black; stroke-width: 0.2em;' );\r\n\t\tsvg.appendChild(circle);\r\n\r\n\r\n\t\tconst element = this.viewer.renderer.domElement.parentElement;\r\n\t\telement.appendChild(svg);\r\n\r\n\r\n\t\tconst startDrag = (evt) => {\r\n\t\t\tthis.selectedElement = svg;\r\n\r\n\t\t\tdocument.addEventListener(\"mousemove\", drag);\r\n\t\t};\r\n\r\n\t\tconst endDrag = (evt) => {\r\n\t\t\tthis.selectedElement = null;\r\n\r\n\t\t\tdocument.removeEventListener(\"mousemove\", drag);\r\n\t\t};\r\n\r\n\t\tconst drag = (evt) => {\r\n\t\t\tif (this.selectedElement) {\r\n\t\t\t\tevt.preventDefault();\r\n\r\n\t\t\t\tconst rect = viewer.renderer.domElement.getBoundingClientRect();\r\n\r\n\t\t\t\tconst x = evt.clientX - rect.x;\r\n\t\t\t\tconst y = evt.clientY - rect.y;\r\n\r\n\t\t\t\tconst {width, height} = this.viewer.renderer.getSize(new THREE.Vector2());\r\n\t\t\t\tconst camera = this.viewer.scene.getActiveCamera();\r\n\t\t\t\t//const cp = this.controlPoints.find(cp => cp.handle.svg === svg);\r\n\t\t\t\tconst projected = vector.clone().project(camera);\r\n\r\n\t\t\t\tprojected.x = ((x / width) - 0.5) / 0.5;\r\n\t\t\t\tprojected.y = (-(y - height) / height - 0.5) / 0.5;\r\n\r\n\t\t\t\tconst unprojected = projected.clone().unproject(camera);\r\n\t\t\t\tvector.set(unprojected.x, unprojected.y, unprojected.z);\r\n\r\n\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tsvg.addEventListener('mousedown', startDrag);\r\n\t\tsvg.addEventListener('mouseup', endDrag);\r\n\r\n\t\tconst handle = {\r\n\t\t\tsvg: svg,\r\n\t\t};\r\n\r\n\t\treturn handle;\r\n\t}\r\n\r\n\tsetVisible(visible){\r\n\t\tthis.node.visible = visible;\r\n\r\n\t\tconst display = visible ? \"\" : \"none\";\r\n\r\n\t\tfor(const cp of this.controlPoints){\r\n\t\t\tcp.positionHandle.svg.style.display = display;\r\n\t\t\tcp.targetHandle.svg.style.display = display;\r\n\t\t}\r\n\r\n\t\tthis.visible = visible;\r\n\t}\r\n\r\n\tsetDuration(duration){\r\n\t\tthis.duration = duration;\r\n\t}\r\n\r\n\tgetDuration(duration){\r\n\t\treturn this.duration;\r\n\t}\r\n\r\n\tplay(){\r\n\r\n\t\tconst tStart = performance.now();\r\n\t\tconst duration = this.duration;\r\n\r\n\t\tconst originalyVisible = this.visible;\r\n\t\tthis.setVisible(false);\r\n\r\n\t\tconst onUpdate = (delta) => {\r\n\r\n\t\t\tlet tNow = performance.now();\r\n\t\t\tlet elapsed = (tNow - tStart) / 1000;\r\n\t\t\tlet t = elapsed / duration;\r\n\r\n\t\t\tthis.set(t);\r\n\r\n\t\t\tconst frame = this.at(t);\r\n\r\n\t\t\tviewer.scene.view.position.copy(frame.position);\r\n\t\t\tviewer.scene.view.lookAt(frame.target);\r\n\r\n\r\n\t\t\tif(t > 1){\r\n\t\t\t\tthis.setVisible(originalyVisible);\r\n\r\n\t\t\t\tthis.viewer.removeEventListener(\"update\", onUpdate);\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t\tthis.viewer.addEventListener(\"update\", onUpdate);\r\n\r\n\t}\r\n\r\n}\r\n\r\n\r\n","\r\n\r\nimport {Annotation} from \"../Annotation.js\";\r\nimport {Measure} from \"../utils/Measure.js\";\r\nimport {CameraAnimation} from \"../modules/CameraAnimation/CameraAnimation.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {PointSizeType} from \"../defines.js\";\r\n\r\nfunction loadPointCloud(viewer, data){\r\n\r\n\tlet loadMaterial = (target) => {\r\n\r\n\t\tif(data.material){\r\n\r\n\t\t\tif(data.material.activeAttributeName != null){\r\n\t\t\t\ttarget.activeAttributeName = data.material.activeAttributeName;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.ranges != null){\r\n\t\t\t\tfor(let range of data.material.ranges){\r\n\r\n\t\t\t\t\tif(range.name === \"elevationRange\"){\r\n\t\t\t\t\t\ttarget.elevationRange = range.value;\r\n\t\t\t\t\t}else if(range.name === \"intensityRange\"){\r\n\t\t\t\t\t\ttarget.intensityRange = range.value;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\ttarget.setRange(range.name, range.value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.size != null){\r\n\t\t\t\ttarget.size = data.material.size;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.minSize != null){\r\n\t\t\t\ttarget.minSize = data.material.minSize;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.pointSizeType != null){\r\n\t\t\t\ttarget.pointSizeType = PointSizeType[data.material.pointSizeType];\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.matcap != null){\r\n\t\t\t\ttarget.matcap = data.material.matcap;\r\n\t\t\t}\r\n\r\n\t\t}else if(data.activeAttributeName != null){\r\n\t\t\ttarget.activeAttributeName = data.activeAttributeName;\r\n\t\t}else{\r\n\t\t\t// no material data\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tconst promise = new Promise((resolve) => {\r\n\r\n\t\tconst names = viewer.scene.pointclouds.map(p => p.name);\r\n\t\tconst alreadyExists = names.includes(data.name);\r\n\r\n\t\tif(alreadyExists){\r\n\t\t\tresolve();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tPotree.loadPointCloud(data.url, data.name, (e) => {\r\n\t\t\tconst {pointcloud} = e;\r\n\r\n\t\t\tpointcloud.position.set(...data.position);\r\n\t\t\tpointcloud.rotation.set(...data.rotation);\r\n\t\t\tpointcloud.scale.set(...data.scale);\r\n\r\n\t\t\tloadMaterial(pointcloud.material);\r\n\r\n\t\t\tviewer.scene.addPointCloud(pointcloud);\r\n\r\n\t\t\tresolve(pointcloud);\r\n\t\t});\r\n\t});\r\n\r\n\treturn promise;\r\n}\r\n\r\nfunction loadMeasurement(viewer, data){\r\n\r\n\tconst duplicate = viewer.scene.measurements.find(measure => measure.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst measure = new Measure();\r\n\r\n\tmeasure.uuid = data.uuid;\r\n\tmeasure.name = data.name;\r\n\tmeasure.showDistances = data.showDistances;\r\n\tmeasure.showCoordinates = data.showCoordinates;\r\n\tmeasure.showArea = data.showArea;\r\n\tmeasure.closed = data.closed;\r\n\tmeasure.showAngles = data.showAngles;\r\n\tmeasure.showHeight = data.showHeight;\r\n\tmeasure.showCircle = data.showCircle;\r\n\tmeasure.showAzimuth = data.showAzimuth;\r\n\tmeasure.showEdges = data.showEdges;\r\n\t// color\r\n\r\n\tfor(const point of data.points){\r\n\t\tconst pos = new THREE.Vector3(...point);\r\n\t\tmeasure.addMarker(pos);\r\n\t}\r\n\r\n\tviewer.scene.addMeasurement(measure);\r\n\r\n}\r\n\r\nfunction loadVolume(viewer, data){\r\n\r\n\tconst duplicate = viewer.scene.volumes.find(volume => volume.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tlet volume = new Potree[data.type];\r\n\r\n\tvolume.uuid = data.uuid;\r\n\tvolume.name = data.name;\r\n\tvolume.position.set(...data.position);\r\n\tvolume.rotation.set(...data.rotation);\r\n\tvolume.scale.set(...data.scale);\r\n\tvolume.visible = data.visible;\r\n\tvolume.clip = data.clip;\r\n\r\n\tviewer.scene.addVolume(volume);\r\n}\r\n\r\nfunction loadCameraAnimation(viewer, data){\r\n\r\n\tconst duplicate = viewer.scene.cameraAnimations.find(a => a.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst animation = new CameraAnimation(viewer);\r\n\r\n\tanimation.uuid = data.uuid;\r\n\tanimation.name = data.name;\r\n\tanimation.duration = data.duration;\r\n\tanimation.t = data.t;\r\n\tanimation.curveType = data.curveType;\r\n\tanimation.visible = data.visible;\r\n\tanimation.controlPoints = [];\r\n\r\n\tfor(const cpdata of data.controlPoints){\r\n\t\tconst cp = animation.createControlPoint();\r\n\r\n\t\tcp.position.set(...cpdata.position);\r\n\t\tcp.target.set(...cpdata.target);\r\n\t}\r\n\r\n\tviewer.scene.addCameraAnimation(animation);\r\n}\r\n\r\nfunction loadOrientedImages(viewer, images){\r\n\r\n\tconst {cameraParamsPath, imageParamsPath} = images;\r\n\r\n\tconst duplicate = viewer.scene.orientedImages.find(i => i.imageParamsPath === imageParamsPath);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tPotree.OrientedImageLoader.load(cameraParamsPath, imageParamsPath, viewer).then( images => {\r\n\t\tviewer.scene.addOrientedImages(images);\r\n\t});\r\n\r\n}\r\n\r\nfunction loadGeopackage(viewer, geopackage){\r\n\r\n\tconst path = geopackage.path;\r\n\r\n\tconst duplicate = viewer.scene.geopackages.find(i => i.path === path);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst projection = viewer.getProjection();\r\n\r\n\tproj4.defs(\"WGS84\", \"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs\");\r\n\tproj4.defs(\"pointcloud\", projection);\r\n\tconst transform = proj4(\"WGS84\", \"pointcloud\");\r\n\tconst params = {\r\n\t\ttransform: transform,\r\n\t};\r\n\r\n\tPotree.GeoPackageLoader.loadUrl(path, params).then(data => {\r\n\t\tviewer.scene.addGeopackage(data);\r\n\t});\r\n\t\r\n\r\n}\r\n\r\nfunction loadSettings(viewer, data){\r\n\tif(!data){\r\n\t\treturn;\r\n\t}\r\n\r\n\tviewer.setPointBudget(data.pointBudget);\r\n\tviewer.setFOV(data.fov);\r\n\tviewer.setEDLEnabled(data.edlEnabled);\r\n\tviewer.setEDLRadius(data.edlRadius);\r\n\tviewer.setEDLStrength(data.edlStrength);\r\n\tviewer.setBackground(data.background);\r\n\tviewer.setMinNodeSize(data.minNodeSize);\r\n\tviewer.setShowBoundingBox(data.showBoundingBoxes);\r\n}\r\n\r\nfunction loadView(viewer, view){\r\n\tviewer.scene.view.position.set(...view.position);\r\n\tviewer.scene.view.lookAt(...view.target);\r\n}\r\n\r\nfunction loadAnnotationItem(item){\r\n\r\n\tconst annotation = new Annotation({\r\n\t\tposition: item.position,\r\n\t\ttitle: item.title,\r\n\t\tcameraPosition: item.cameraPosition,\r\n\t\tcameraTarget: item.cameraTarget,\r\n\t});\r\n\r\n\r\n\tannotation.description = item.description;\r\n\tannotation.uuid = item.uuid;\r\n\r\n\tif(item.offset){\r\n\t\tannotation.offset.set(...item.offset);\r\n\t}\r\n\r\n\treturn annotation;\r\n}\r\n\r\nfunction loadAnnotations(viewer, data){\r\n\r\n\tif(!data){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst findDuplicate = (item) => {\r\n\r\n\t\tlet duplicate = null;\r\n\r\n\t\tviewer.scene.annotations.traverse( a => {\r\n\t\t\tif(a.uuid === item.uuid){\r\n\t\t\t\tduplicate = a;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn duplicate;\r\n\t};\r\n\r\n\tconst traverse = (item, parent) => {\r\n\r\n\t\tconst duplicate = findDuplicate(item);\r\n\t\tif(duplicate){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst annotation = loadAnnotationItem(item);\r\n\r\n\t\tfor(const childItem of item.children){\r\n\t\t\ttraverse(childItem, annotation);\r\n\t\t}\r\n\r\n\t\tparent.add(annotation);\r\n\r\n\t};\r\n\r\n\tfor(const item of data){\r\n\t\ttraverse(item, viewer.scene.annotations);\r\n\t}\r\n\r\n}\r\n\r\nfunction loadProfile(viewer, data){\r\n\t\r\n\tconst {name, points} = data;\r\n\r\n\tconst duplicate = viewer.scene.profiles.find(profile => profile.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tlet profile = new Potree.Profile();\r\n\tprofile.name = name;\r\n\tprofile.uuid = data.uuid;\r\n\r\n\tprofile.setWidth(data.width);\r\n\r\n\tfor(const point of points){\r\n\t\tprofile.addMarker(new THREE.Vector3(...point));\r\n\t}\r\n\t\r\n\tviewer.scene.addProfile(profile);\r\n}\r\n\r\nfunction loadClassification(viewer, data){\r\n\tif(!data){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst classifications = data;\r\n\r\n\tviewer.setClassifications(classifications);\r\n}\r\n\r\nexport async function loadProject(viewer, data){\r\n\r\n\tif(data.type !== \"Potree\"){\r\n\t\tconsole.error(\"not a valid Potree project\");\r\n\t\treturn;\r\n\t}\r\n\r\n\tloadSettings(viewer, data.settings);\r\n\r\n\tloadView(viewer, data.view);\r\n\r\n\tconst pointcloudPromises = [];\r\n\tfor(const pointcloud of data.pointclouds){\r\n\t\tconst promise = loadPointCloud(viewer, pointcloud);\r\n\t\tpointcloudPromises.push(promise);\r\n\t}\r\n\r\n\tfor(const measure of data.measurements){\r\n\t\tloadMeasurement(viewer, measure);\r\n\t}\r\n\r\n\tfor(const volume of data.volumes){\r\n\t\tloadVolume(viewer, volume);\r\n\t}\r\n\r\n\tfor(const animation of data.cameraAnimations){\r\n\t\tloadCameraAnimation(viewer, animation);\r\n\t}\r\n\r\n\tfor(const profile of data.profiles){\r\n\t\tloadProfile(viewer, profile);\r\n\t}\r\n\r\n\tif(data.orientedImages){\r\n\t\tfor(const images of data.orientedImages){\r\n\t\t\tloadOrientedImages(viewer, images);\r\n\t\t}\r\n\t}\r\n\r\n\tloadAnnotations(viewer, data.annotations);\r\n\r\n\tloadClassification(viewer, data.classification);\r\n\r\n\t// need to load at least one point cloud that defines the scene projection,\r\n\t// before we can load stuff in other projections such as geopackages\r\n\t//await Promise.any(pointcloudPromises); // (not yet supported)\r\n\tUtils.waitAny(pointcloudPromises).then( () => {\r\n\t\tif(data.geopackages){\r\n\t\t\tfor(const geopackage of data.geopackages){\r\n\t\t\t\tloadGeopackage(viewer, geopackage);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tawait Promise.all(pointcloudPromises);\r\n}","\nimport {Shaders} from \"../../build/shaders/shaders.js\";\n\n//\n// Algorithm by Christian Boucheny\n// shader code taken and adapted from CloudCompare\n//\n// see\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\n// http://www.kitware.com/source/home/post/9\n// https://tel.archives-ouvertes.fr/tel-00438464/document p. 115+ (french)\n\nexport class EyeDomeLightingMaterial extends THREE.RawShaderMaterial{\n\n\tconstructor(parameters = {}){\n\t\tsuper();\n\n\t\tlet uniforms = {\n\t\t\tscreenWidth: { type: 'f', \tvalue: 0 },\n\t\t\tscreenHeight: { type: 'f', \tvalue: 0 },\n\t\t\tedlStrength: { type: 'f', \tvalue: 1.0 },\n\t\t\tuNear: { type: 'f', \tvalue: 1.0 },\n\t\t\tuFar: { type: 'f', \tvalue: 1.0 },\n\t\t\tradius: { type: 'f', \tvalue: 1.0 },\n\t\t\tneighbours: { type: '2fv', \tvalue: [] },\n\t\t\tdepthMap: { type: 't', \tvalue: null },\n\t\t\tuEDLColor: { type: 't', \tvalue: null },\n\t\t\tuEDLDepth: { type: 't', \tvalue: null },\n\t\t\topacity: { type: 'f',\tvalue: 1.0 },\n\t\t\tuProj: { type: \"Matrix4fv\", value: [] },\n\t\t};\n\n\t\tthis.setValues({\n\t\t\tuniforms: uniforms,\n\t\t\tvertexShader: this.getDefines() + Shaders['edl.vs'],\n\t\t\tfragmentShader: this.getDefines() + Shaders['edl.fs'],\n\t\t\tlights: false\n\t\t});\n\n\t\tthis.neighbourCount = 8;\n\t}\n\n\tgetDefines() {\n\t\tlet defines = '';\n\n\t\tdefines += '#define NEIGHBOUR_COUNT ' + this.neighbourCount + '\\n';\n\n\t\treturn defines;\n\t}\n\n\tupdateShaderSource() {\n\n\t\tlet vs = this.getDefines() + Shaders['edl.vs'];\n\t\tlet fs = this.getDefines() + Shaders['edl.fs'];\n\n\t\tthis.setValues({\n\t\t\tvertexShader: vs,\n\t\t\tfragmentShader: fs\n\t\t});\n\n\t\tthis.uniforms.neighbours.value = this.neighbours;\n\n\t\tthis.needsUpdate = true;\n\t}\n\n\tget neighbourCount(){\n\t\treturn this._neighbourCount;\n\t}\n\n\tset neighbourCount(value){\n\t\tif (this._neighbourCount !== value) {\n\t\t\tthis._neighbourCount = value;\n\t\t\tthis.neighbours = new Float32Array(this._neighbourCount * 2);\n\t\t\tfor (let c = 0; c < this._neighbourCount; c++) {\n\t\t\t\tthis.neighbours[2 * c + 0] = Math.cos(2 * c * Math.PI / this._neighbourCount);\n\t\t\t\tthis.neighbours[2 * c + 1] = Math.sin(2 * c * Math.PI / this._neighbourCount);\n\t\t\t}\n\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\n\t\n}\n\n","\n\nimport {Shaders} from \"../../build/shaders/shaders.js\";\n\n\nexport class NormalizationEDLMaterial extends THREE.RawShaderMaterial{\n\n\tconstructor(parameters = {}){\n\t\tsuper();\n\n\t\tlet uniforms = {\n\t\t\tscreenWidth: { type: 'f', value: 0 },\n\t\t\tscreenHeight: { type: 'f', value: 0 },\n\t\t\tedlStrength: { type: 'f', value: 1.0 },\n\t\t\tradius: { type: 'f', value: 1.0 },\n\t\t\tneighbours: { type: '2fv', value: [] },\n\t\t\tuEDLMap: { type: 't', value: null },\n\t\t\tuDepthMap: { type: 't', value: null },\n\t\t\tuWeightMap: { type: 't', value: null },\n\t\t};\n\n\t\tthis.setValues({\n\t\t\tuniforms: uniforms,\n\t\t\tvertexShader: this.getDefines() + Shaders['normalize.vs'],\n\t\t\tfragmentShader: this.getDefines() + Shaders['normalize_and_edl.fs'],\n\t\t});\n\n\t\tthis.neighbourCount = 8;\n\t}\n\n\tgetDefines() {\n\t\tlet defines = '';\n\n\t\tdefines += '#define NEIGHBOUR_COUNT ' + this.neighbourCount + '\\n';\n\n\t\treturn defines;\n\t}\n\n\tupdateShaderSource() {\n\n\t\tlet vs = this.getDefines() + Shaders['normalize.vs'];\n\t\tlet fs = this.getDefines() + Shaders['normalize_and_edl.fs'];\n\n\t\tthis.setValues({\n\t\t\tvertexShader: vs,\n\t\t\tfragmentShader: fs\n\t\t});\n\n\t\tthis.uniforms.neighbours.value = this.neighbours;\n\n\t\tthis.needsUpdate = true;\n\t}\n\n\tget neighbourCount(){\n\t\treturn this._neighbourCount;\n\t}\n\n\tset neighbourCount(value){\n\t\tif (this._neighbourCount !== value) {\n\t\t\tthis._neighbourCount = value;\n\t\t\tthis.neighbours = new Float32Array(this._neighbourCount * 2);\n\t\t\tfor (let c = 0; c < this._neighbourCount; c++) {\n\t\t\t\tthis.neighbours[2 * c + 0] = Math.cos(2 * c * Math.PI / this._neighbourCount);\n\t\t\t\tthis.neighbours[2 * c + 1] = Math.sin(2 * c * Math.PI / this._neighbourCount);\n\t\t\t}\n\n\t\t\tthis.updateShaderSource();\n\t\t}\n\t}\n\t\n}\n\n","\nimport {Shaders} from \"../../build/shaders/shaders.js\";\n\nexport class NormalizationMaterial extends THREE.RawShaderMaterial{\n\n\tconstructor(parameters = {}){\n\t\tsuper();\n\n\t\tlet uniforms = {\n\t\t\tuDepthMap:\t\t{ type: 't', value: null },\n\t\t\tuWeightMap:\t\t{ type: 't', value: null },\n\t\t};\n\n\t\tthis.setValues({\n\t\t\tuniforms: uniforms,\n\t\t\tvertexShader: this.getDefines() + Shaders['normalize.vs'],\n\t\t\tfragmentShader: this.getDefines() + Shaders['normalize.fs'],\n\t\t});\n\t}\n\n\tgetDefines() {\n\t\tlet defines = '';\n\n\t\treturn defines;\n\t}\n\n\tupdateShaderSource() {\n\n\t\tlet vs = this.getDefines() + Shaders['normalize.vs'];\n\t\tlet fs = this.getDefines() + Shaders['normalize.fs'];\n\n\t\tthis.setValues({\n\t\t\tvertexShader: vs,\n\t\t\tfragmentShader: fs\n\t\t});\n\n\t\tthis.needsUpdate = true;\n\t}\n\n}\n\n","\n\nimport {Version} from \"../Version.js\";\nimport {XHRFactory} from \"../XHRFactory.js\";\n\n/**\n * laslaz code taken and adapted from plas.io js-laslaz\n *\thttp://plas.io/\n * https://github.com/verma/plasio\n *\n * Thanks to Uday Verma and Howard Butler\n *\n */\n\nexport class LasLazLoader {\n\n\tconstructor (version, extension) {\n\t\tif (typeof (version) === 'string') {\n\t\t\tthis.version = new Version(version);\n\t\t} else {\n\t\t\tthis.version = version;\n\t\t}\n\n\t\tthis.extension = extension;\n\t}\n\n\tstatic progressCB () {\n\n\t}\n\n\tload (node) {\n\t\tif (node.loaded) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet url = node.getURL();\n\n\t\tif (this.version.equalOrHigher('1.4')) {\n\t\t\turl += `.${this.extension}`;\n\t\t}\n\n\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.responseType = 'arraybuffer';\n\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\n\t\txhr.onreadystatechange = () => {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif (xhr.status === 200 || xhr.status === 0) {\n\t\t\t\t\tlet buffer = xhr.response;\n\t\t\t\t\tthis.parse(node, buffer);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + url);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send(null);\n\t}\n\n\tasync parse(node, buffer){\n\t\tlet lf = new LASFile(buffer);\n\t\tlet handler = new LasLazBatcher(node);\n\n\t\ttry{\n\t\t\t await lf.open();\n\t\t\t lf.isOpen = true;\n\t\t}catch(e){\n\t\t\tconsole.log(\"failed to open file. :(\");\n\n\t\t\treturn;\n\t\t}\n\n\t\tlet header = await lf.getHeader();\n\n\t\tlet skip = 1;\n\t\tlet totalRead = 0;\n\t\tlet totalToRead = (skip <= 1 ? header.pointsCount : header.pointsCount / skip);\n\n\t\tlet hasMoreData = true;\n\n\t\twhile(hasMoreData){\n\t\t\tlet data = await lf.readData(1000 * 1000, 0, skip);\n\n\t\t\thandler.push(new LASDecoder(data.buffer,\n\t\t\t\theader.pointsFormatId,\n\t\t\t\theader.pointsStructSize,\n\t\t\t\tdata.count,\n\t\t\t\theader.scale,\n\t\t\t\theader.offset,\n\t\t\t\theader.mins, header.maxs));\n\n\t\t\ttotalRead += data.count;\n\t\t\tLasLazLoader.progressCB(totalRead / totalToRead);\n\n\t\t\thasMoreData = data.hasMoreData;\n\t\t}\n\n\t\theader.totalRead = totalRead;\n\t\theader.versionAsString = lf.versionAsString;\n\t\theader.isCompressed = lf.isCompressed;\n\n\t\tLasLazLoader.progressCB(1);\n\n\t\ttry{\n\t\t\tawait lf.close();\n\n\t\t\tlf.isOpen = false;\n\t\t}catch(e){\n\t\t\tconsole.error(\"failed to close las/laz file!!!\");\n\t\t\t\n\t\t\tthrow e;\n\t\t}\n\t}\n\n\thandle (node, url) {\n\n\t}\n};\n\nexport class LasLazBatcher{\n\n\tconstructor (node) {\n\t\tthis.node = node;\n\t}\n\n\tpush (lasBuffer) {\n\t\tconst workerPath = Potree.scriptPath + '/workers/LASDecoderWorker.js';\n\t\tconst worker = Potree.workerPool.getWorker(workerPath);\n\t\tconst node = this.node;\n\t\tconst pointAttributes = node.pcoGeometry.pointAttributes;\n\n\t\tworker.onmessage = (e) => {\n\t\t\tlet geometry = new THREE.BufferGeometry();\n\t\t\tlet numPoints = lasBuffer.pointsCount;\n\n\t\t\tlet positions = new Float32Array(e.data.position);\n\t\t\tlet colors = new Uint8Array(e.data.color);\n\t\t\tlet intensities = new Float32Array(e.data.intensity);\n\t\t\tlet classifications = new Uint8Array(e.data.classification);\n\t\t\tlet returnNumbers = new Uint8Array(e.data.returnNumber);\n\t\t\tlet numberOfReturns = new Uint8Array(e.data.numberOfReturns);\n\t\t\tlet pointSourceIDs = new Uint16Array(e.data.pointSourceID);\n\t\t\tlet indices = new Uint8Array(e.data.indices);\n\n\t\t\tgeometry.addAttribute('position', new THREE.BufferAttribute(positions, 3));\n\t\t\tgeometry.addAttribute('color', new THREE.BufferAttribute(colors, 4, true));\n\t\t\tgeometry.addAttribute('intensity', new THREE.BufferAttribute(intensities, 1));\n\t\t\tgeometry.addAttribute('classification', new THREE.BufferAttribute(classifications, 1));\n\t\t\tgeometry.addAttribute('return number', new THREE.BufferAttribute(returnNumbers, 1));\n\t\t\tgeometry.addAttribute('number of returns', new THREE.BufferAttribute(numberOfReturns, 1));\n\t\t\tgeometry.addAttribute('source id', new THREE.BufferAttribute(pointSourceIDs, 1));\n\t\t\tgeometry.addAttribute('indices', new THREE.BufferAttribute(indices, 4));\n\t\t\tgeometry.attributes.indices.normalized = true;\n\n\t\t\tfor(const key in e.data.ranges){\n\t\t\t\tconst range = e.data.ranges[key];\n\n\t\t\t\tconst attribute = pointAttributes.attributes.find(a => a.name === key);\n\t\t\t\tattribute.range[0] = Math.min(attribute.range[0], range[0]);\n\t\t\t\tattribute.range[1] = Math.max(attribute.range[1], range[1]);\n\t\t\t}\n\n\t\t\tlet tightBoundingBox = new THREE.Box3(\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.min),\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.max)\n\t\t\t);\n\n\t\t\tgeometry.boundingBox = this.node.boundingBox;\n\t\t\tthis.node.tightBoundingBox = tightBoundingBox;\n\n\t\t\tthis.node.geometry = geometry;\n\t\t\tthis.node.numPoints = numPoints;\n\t\t\tthis.node.loaded = true;\n\t\t\tthis.node.loading = false;\n\t\t\tPotree.numNodesLoading--;\n\t\t\tthis.node.mean = new THREE.Vector3(...e.data.mean);\n\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\n\t\t};\n\n\t\tlet message = {\n\t\t\tbuffer: lasBuffer.arrayb,\n\t\t\tnumPoints: lasBuffer.pointsCount,\n\t\t\tpointSize: lasBuffer.pointSize,\n\t\t\tpointFormatID: 2,\n\t\t\tscale: lasBuffer.scale,\n\t\t\toffset: lasBuffer.offset,\n\t\t\tmins: lasBuffer.mins,\n\t\t\tmaxs: lasBuffer.maxs\n\t\t};\n\t\tworker.postMessage(message, [message.buffer]);\n\t};\n}\n","\n\nimport {Version} from \"../Version.js\";\nimport {XHRFactory} from \"../XHRFactory.js\";\n\n\nexport class BinaryLoader{\n\n\tconstructor(version, boundingBox, scale){\n\t\tif (typeof (version) === 'string') {\n\t\t\tthis.version = new Version(version);\n\t\t} else {\n\t\t\tthis.version = version;\n\t\t}\n\n\t\tthis.boundingBox = boundingBox;\n\t\tthis.scale = scale;\n\t}\n\n\tload(node){\n\t\tif (node.loaded) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet url = node.getURL();\n\n\t\tif (this.version.equalOrHigher('1.4')) {\n\t\t\turl += '.bin';\n\t\t}\n\n\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.responseType = 'arraybuffer';\n\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\n\t\txhr.onreadystatechange = () => {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif((xhr.status === 200 || xhr.status === 0) && xhr.response !== null){\n\t\t\t\t\tlet buffer = xhr.response;\n\t\t\t\t\tthis.parse(node, buffer);\n\t\t\t\t} else {\n\t\t\t\t\t//console.error(`Failed to load file! HTTP status: ${xhr.status}, file: ${url}`);\n\t\t\t\t\tthrow new Error(`Failed to load file! HTTP status: ${xhr.status}, file: ${url}`);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\t\n\t\ttry {\n\t\t\txhr.send(null);\n\t\t} catch (e) {\n\t\t\tconsole.log('fehler beim laden der punktwolke: ' + e);\n\t\t}\n\t};\n\n\tparse(node, buffer){\n\t\tlet pointAttributes = node.pcoGeometry.pointAttributes;\n\t\tlet numPoints = buffer.byteLength / node.pcoGeometry.pointAttributes.byteSize;\n\n\t\tif (this.version.upTo('1.5')) {\n\t\t\tnode.numPoints = numPoints;\n\t\t}\n\n\t\tlet workerPath = Potree.scriptPath + '/workers/BinaryDecoderWorker.js';\n\t\tlet worker = Potree.workerPool.getWorker(workerPath);\n\n\t\tworker.onmessage = function (e) {\n\n\t\t\tlet data = e.data;\n\t\t\tlet buffers = data.attributeBuffers;\n\t\t\tlet tightBoundingBox = new THREE.Box3(\n\t\t\t\tnew THREE.Vector3().fromArray(data.tightBoundingBox.min),\n\t\t\t\tnew THREE.Vector3().fromArray(data.tightBoundingBox.max)\n\t\t\t);\n\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\n\n\t\t\tlet geometry = new THREE.BufferGeometry();\n\n\t\t\tfor(let property in buffers){\n\t\t\t\tlet buffer = buffers[property].buffer;\n\t\t\t\tlet batchAttribute = buffers[property].attribute;\n\n\t\t\t\tif (property === \"POSITION_CARTESIAN\") {\n\t\t\t\t\tgeometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t} else if (property === \"rgba\") {\n\t\t\t\t\tgeometry.addAttribute(\"rgba\", new THREE.BufferAttribute(new Uint8Array(buffer), 4, true));\n\t\t\t\t} else if (property === \"NORMAL_SPHEREMAPPED\") {\n\t\t\t\t\tgeometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t} else if (property === \"NORMAL_OCT16\") {\n\t\t\t\t\tgeometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t} else if (property === \"NORMAL\") {\n\t\t\t\t\tgeometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t} else if (property === \"INDICES\") {\n\t\t\t\t\tlet bufferAttribute = new THREE.BufferAttribute(new Uint8Array(buffer), 4);\n\t\t\t\t\tbufferAttribute.normalized = true;\n\t\t\t\t\tgeometry.addAttribute('indices', bufferAttribute);\n\t\t\t\t} else if (property === \"SPACING\") {\n\t\t\t\t\tlet bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1);\n\t\t\t\t\tgeometry.addAttribute('spacing', bufferAttribute);\n\t\t\t\t} else {\n\t\t\t\t\tconst bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1);\n\n\t\t\t\t\tbufferAttribute.potree = {\n\t\t\t\t\t\toffset: buffers[property].offset,\n\t\t\t\t\t\tscale: buffers[property].scale,\n\t\t\t\t\t\tpreciseBuffer: buffers[property].preciseBuffer,\n\t\t\t\t\t\trange: batchAttribute.range,\n\t\t\t\t\t};\n\n\t\t\t\t\tgeometry.addAttribute(property, bufferAttribute);\n\n\t\t\t\t\tconst attribute = pointAttributes.attributes.find(a => a.name === batchAttribute.name);\n\t\t\t\t\tattribute.range[0] = Math.min(attribute.range[0], batchAttribute.range[0]);\n\t\t\t\t\tattribute.range[1] = Math.max(attribute.range[1], batchAttribute.range[1]);\n\n\t\t\t\t\tif(node.getLevel() === 0){\n\t\t\t\t\t\tattribute.initialRange = batchAttribute.range;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttightBoundingBox.max.sub(tightBoundingBox.min);\n\t\t\ttightBoundingBox.min.set(0, 0, 0);\n\n\t\t\tlet numPoints = e.data.buffer.byteLength / pointAttributes.byteSize;\n\t\t\t\n\t\t\tnode.numPoints = numPoints;\n\t\t\tnode.geometry = geometry;\n\t\t\tnode.mean = new THREE.Vector3(...data.mean);\n\t\t\tnode.tightBoundingBox = tightBoundingBox;\n\t\t\tnode.loaded = true;\n\t\t\tnode.loading = false;\n\t\t\tnode.estimatedSpacing = data.estimatedSpacing;\n\t\t\tPotree.numNodesLoading--;\n\t\t};\n\n\t\tlet message = {\n\t\t\tbuffer: buffer,\n\t\t\tpointAttributes: pointAttributes,\n\t\t\tversion: this.version.version,\n\t\t\tmin: [ node.boundingBox.min.x, node.boundingBox.min.y, node.boundingBox.min.z ],\n\t\t\toffset: [node.pcoGeometry.offset.x, node.pcoGeometry.offset.y, node.pcoGeometry.offset.z],\n\t\t\tscale: this.scale,\n\t\t\tspacing: node.spacing,\n\t\t\thasChildren: node.hasChildren,\n\t\t\tname: node.name\n\t\t};\n\t\tworker.postMessage(message, [message.buffer]);\n\t};\n\n\t\n}\n\n","\n\nimport {PointCloudOctreeGeometry, PointCloudOctreeGeometryNode} from \"../PointCloudOctreeGeometry.js\";\nimport {Version} from \"../Version.js\";\nimport {XHRFactory} from \"../XHRFactory.js\";\nimport {LasLazLoader} from \"./LasLazLoader.js\";\nimport {BinaryLoader} from \"./BinaryLoader.js\";\nimport {Utils} from \"../utils.js\";\nimport {PointAttribute, PointAttributes, PointAttributeTypes} from \"./PointAttributes.js\";\n\nfunction parseAttributes(cloudjs){\n\n\tlet version = new Version(cloudjs.version);\n\n\tconst replacements = {\n\t\t\"COLOR_PACKED\": \"rgba\",\n\t\t\"RGBA\": \"rgba\",\n\t\t\"INTENSITY\": \"intensity\",\n\t\t\"CLASSIFICATION\": \"classification\",\n\t};\n\n\tconst replaceOldNames = (old) => {\n\t\tif(replacements[old]){\n\t\t\treturn replacements[old];\n\t\t}else{\n\t\t\treturn old;\n\t\t}\n\t};\n\n\tconst pointAttributes = [];\n\tif(version.upTo('1.7')){\n\t\t\n\t\tfor(let attributeName of cloudjs.pointAttributes){\n\t\t\tconst oldAttribute = PointAttribute[attributeName];\n\n\t\t\tconst attribute = {\n\t\t\t\tname: oldAttribute.name,\n\t\t\t\tsize: oldAttribute.byteSize,\n\t\t\t\telements: oldAttribute.numElements,\n\t\t\t\telementSize: oldAttribute.byteSize / oldAttribute.numElements,\n\t\t\t\ttype: oldAttribute.type.name,\n\t\t\t\tdescription: \"\",\n\t\t\t};\n\n\t\t\tpointAttributes.push(attribute);\n\t\t}\n\n\t}else{\n\t\tpointAttributes.push(...cloudjs.pointAttributes);\n\t}\n\n\n\t{\n\t\tconst attributes = new PointAttributes();\n\n\t\tconst typeConversion = {\n\t\t\tint8: PointAttributeTypes.DATA_TYPE_INT8,\n\t\t\tint16: PointAttributeTypes.DATA_TYPE_INT16,\n\t\t\tint32: PointAttributeTypes.DATA_TYPE_INT32,\n\t\t\tint64: PointAttributeTypes.DATA_TYPE_INT64,\n\t\t\tuint8: PointAttributeTypes.DATA_TYPE_UINT8,\n\t\t\tuint16: PointAttributeTypes.DATA_TYPE_UINT16,\n\t\t\tuint32: PointAttributeTypes.DATA_TYPE_UINT32,\n\t\t\tuint64: PointAttributeTypes.DATA_TYPE_UINT64,\n\t\t\tdouble: PointAttributeTypes.DATA_TYPE_DOUBLE,\n\t\t\tfloat: PointAttributeTypes.DATA_TYPE_FLOAT,\n\t\t};\n\n\t\tfor(const jsAttribute of pointAttributes){\n\t\t\tconst name = replaceOldNames(jsAttribute.name);\n\t\t\tconst type = typeConversion[jsAttribute.type];\n\t\t\tconst numElements = jsAttribute.elements;\n\t\t\tconst description = jsAttribute.description;\n\n\t\t\tconst attribute = new PointAttribute(name, type, numElements);\n\n\t\t\tattributes.add(attribute);\n\t\t}\n\n\t\t{\n\t\t\t// check if it has normals\n\t\t\tlet hasNormals = \n\t\t\t\tpointAttributes.find(a => a.name === \"NormalX\") !== undefined &&\n\t\t\t\tpointAttributes.find(a => a.name === \"NormalY\") !== undefined &&\n\t\t\t\tpointAttributes.find(a => a.name === \"NormalZ\") !== undefined;\n\n\t\t\tif(hasNormals){\n\t\t\t\tlet vector = {\n\t\t\t\t\tname: \"NORMAL\",\n\t\t\t\t\tattributes: [\"NormalX\", \"NormalY\", \"NormalZ\"],\n\t\t\t\t};\n\t\t\t\tattributes.addVector(vector);\n\t\t\t}\n\t\t}\n\n\t\treturn attributes;\n\t}\n\n}\n\nfunction lasLazAttributes(fMno){\n\tconst attributes = new PointAttributes();\n\n\tattributes.add(PointAttribute.POSITION_CARTESIAN);\n\tattributes.add(new PointAttribute(\"rgba\", PointAttributeTypes.DATA_TYPE_UINT8, 4));\n\tattributes.add(new PointAttribute(\"intensity\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\n\tattributes.add(new PointAttribute(\"classification\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\tattributes.add(new PointAttribute(\"gps-time\", PointAttributeTypes.DATA_TYPE_DOUBLE, 1));\n\tattributes.add(new PointAttribute(\"number of returns\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\tattributes.add(new PointAttribute(\"return number\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\n\tattributes.add(new PointAttribute(\"source id\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\n\t//attributes.add(new PointAttribute(\"pointSourceID\", PointAttributeTypes.DATA_TYPE_INT8, 4));\n\n\n\treturn attributes;\n}\n\nexport class POCLoader {\n\n\tstatic load(url, callback){\n\t\ttry {\n\t\t\tlet pco = new PointCloudOctreeGeometry();\n\t\t\tpco.url = url;\n\t\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\t\txhr.open('GET', url, true);\n\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)) {\n\t\t\t\t\tlet fMno = JSON.parse(xhr.responseText);\n\n\t\t\t\t\tlet version = new Version(fMno.version);\n\n\t\t\t\t\t// assume octreeDir is absolute if it starts with http\n\t\t\t\t\tif (fMno.octreeDir.indexOf('http') === 0) {\n\t\t\t\t\t\tpco.octreeDir = fMno.octreeDir;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpco.octreeDir = url + '/../' + fMno.octreeDir;\n\t\t\t\t\t}\n\n\t\t\t\t\tpco.spacing = fMno.spacing;\n\t\t\t\t\tpco.hierarchyStepSize = fMno.hierarchyStepSize;\n\n\t\t\t\t\tpco.pointAttributes = fMno.pointAttributes;\n\n\t\t\t\t\tlet min = new THREE.Vector3(fMno.boundingBox.lx, fMno.boundingBox.ly, fMno.boundingBox.lz);\n\t\t\t\t\tlet max = new THREE.Vector3(fMno.boundingBox.ux, fMno.boundingBox.uy, fMno.boundingBox.uz);\n\t\t\t\t\tlet boundingBox = new THREE.Box3(min, max);\n\t\t\t\t\tlet tightBoundingBox = boundingBox.clone();\n\n\t\t\t\t\tif (fMno.tightBoundingBox) {\n\t\t\t\t\t\ttightBoundingBox.min.copy(new THREE.Vector3(fMno.tightBoundingBox.lx, fMno.tightBoundingBox.ly, fMno.tightBoundingBox.lz));\n\t\t\t\t\t\ttightBoundingBox.max.copy(new THREE.Vector3(fMno.tightBoundingBox.ux, fMno.tightBoundingBox.uy, fMno.tightBoundingBox.uz));\n\t\t\t\t\t}\n\n\t\t\t\t\tlet offset = min.clone();\n\n\t\t\t\t\tboundingBox.min.sub(offset);\n\t\t\t\t\tboundingBox.max.sub(offset);\n\n\t\t\t\t\ttightBoundingBox.min.sub(offset);\n\t\t\t\t\ttightBoundingBox.max.sub(offset);\n\n\t\t\t\t\tpco.projection = fMno.projection;\n\t\t\t\t\tpco.boundingBox = boundingBox;\n\t\t\t\t\tpco.tightBoundingBox = tightBoundingBox;\n\t\t\t\t\tpco.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\t\t\t\tpco.tightBoundingSphere = tightBoundingBox.getBoundingSphere(new THREE.Sphere());\n\t\t\t\t\tpco.offset = offset;\n\t\t\t\t\tif (fMno.pointAttributes === 'LAS') {\n\t\t\t\t\t\tpco.loader = new LasLazLoader(fMno.version, \"las\");\n\t\t\t\t\t\tpco.pointAttributes = lasLazAttributes(fMno);\n\t\t\t\t\t} else if (fMno.pointAttributes === 'LAZ') {\n\t\t\t\t\t\tpco.loader = new LasLazLoader(fMno.version, \"laz\");\n\t\t\t\t\t\tpco.pointAttributes = lasLazAttributes(fMno);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpco.loader = new BinaryLoader(fMno.version, boundingBox, fMno.scale);\n\t\t\t\t\t\tpco.pointAttributes = parseAttributes(fMno);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nodes = {};\n\n\t\t\t\t\t{ // load root\n\t\t\t\t\t\tlet name = 'r';\n\n\t\t\t\t\t\tlet root = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n\t\t\t\t\t\troot.level = 0;\n\t\t\t\t\t\troot.hasChildren = true;\n\t\t\t\t\t\troot.spacing = pco.spacing;\n\t\t\t\t\t\tif (version.upTo('1.5')) {\n\t\t\t\t\t\t\troot.numPoints = fMno.hierarchy[0][1];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\troot.numPoints = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpco.root = root;\n\t\t\t\t\t\tpco.root.load();\n\t\t\t\t\t\tnodes[name] = root;\n\t\t\t\t\t}\n\n\t\t\t\t\t// load remaining hierarchy\n\t\t\t\t\tif (version.upTo('1.4')) {\n\t\t\t\t\t\tfor (let i = 1; i < fMno.hierarchy.length; i++) {\n\t\t\t\t\t\t\tlet name = fMno.hierarchy[i][0];\n\t\t\t\t\t\t\tlet numPoints = fMno.hierarchy[i][1];\n\t\t\t\t\t\t\tlet index = parseInt(name.charAt(name.length - 1));\n\t\t\t\t\t\t\tlet parentName = name.substring(0, name.length - 1);\n\t\t\t\t\t\t\tlet parentNode = nodes[parentName];\n\t\t\t\t\t\t\tlet level = name.length - 1;\n\t\t\t\t\t\t\t//let boundingBox = POCLoader.createChildAABB(parentNode.boundingBox, index);\n\t\t\t\t\t\t\tlet boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\n\n\t\t\t\t\t\t\tlet node = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\n\t\t\t\t\t\t\tnode.level = level;\n\t\t\t\t\t\t\tnode.numPoints = numPoints;\n\t\t\t\t\t\t\tnode.spacing = pco.spacing / Math.pow(2, level);\n\t\t\t\t\t\t\tparentNode.addChild(node);\n\t\t\t\t\t\t\tnodes[name] = node;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tpco.nodes = nodes;\n\n\t\t\t\t\tcallback(pco);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send(null);\n\t\t} catch (e) {\n\t\t\tconsole.log(\"loading failed: '\" + url + \"'\");\n\t\t\tconsole.log(e);\n\n\t\t\tcallback();\n\t\t}\n\t}\n\n\tloadPointAttributes(mno){\n\t\tlet fpa = mno.pointAttributes;\n\t\tlet pa = new PointAttributes();\n\n\t\tfor (let i = 0; i < fpa.length; i++) {\n\t\t\tlet pointAttribute = PointAttribute[fpa[i]];\n\t\t\tpa.add(pointAttribute);\n\t\t}\n\n\t\treturn pa;\n\t}\n\n\tcreateChildAABB(aabb, index){\n\t\tlet min = aabb.min.clone();\n\t\tlet max = aabb.max.clone();\n\t\tlet size = new THREE.Vector3().subVectors(max, min);\n\n\t\tif ((index & 0b0001) > 0) {\n\t\t\tmin.z += size.z / 2;\n\t\t} else {\n\t\t\tmax.z -= size.z / 2;\n\t\t}\n\n\t\tif ((index & 0b0010) > 0) {\n\t\t\tmin.y += size.y / 2;\n\t\t} else {\n\t\t\tmax.y -= size.y / 2;\n\t\t}\n\n\t\tif ((index & 0b0100) > 0) {\n\t\t\tmin.x += size.x / 2;\n\t\t} else {\n\t\t\tmax.x -= size.x / 2;\n\t\t}\n\n\t\treturn new THREE.Box3(min, max);\n\t}\n}\n\n","\r\nexport class OctreeGeometry{\r\n\r\n\tconstructor(){\r\n\t\tthis.url = null;\r\n\t\tthis.spacing = 0;\r\n\t\tthis.boundingBox = null;\r\n\t\tthis.root = null;\r\n\t\tthis.pointAttributes = null;\r\n\t\tthis.loader = null;\r\n\t}\r\n\r\n};\r\n\r\nexport class OctreeGeometryNode{\r\n\r\n\tconstructor(name, octreeGeometry, boundingBox){\r\n\t\tthis.id = OctreeGeometryNode.IDCount++;\r\n\t\tthis.name = name;\r\n\t\tthis.index = parseInt(name.charAt(name.length - 1));\r\n\t\tthis.octreeGeometry = octreeGeometry;\r\n\t\tthis.boundingBox = boundingBox;\r\n\t\tthis.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t\tthis.children = {};\r\n\t\tthis.numPoints = 0;\r\n\t\tthis.level = null;\r\n\t\tthis.oneTimeDisposeHandlers = [];\r\n\t}\r\n\r\n\tisGeometryNode(){\r\n\t\treturn true;\r\n\t}\r\n\r\n\tgetLevel(){\r\n\t\treturn this.level;\r\n\t}\r\n\r\n\tisTreeNode(){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tisLoaded(){\r\n\t\treturn this.loaded;\r\n\t}\r\n\r\n\tgetBoundingSphere(){\r\n\t\treturn this.boundingSphere;\r\n\t}\r\n\r\n\tgetBoundingBox(){\r\n\t\treturn this.boundingBox;\r\n\t}\r\n\r\n\tgetChildren(){\r\n\t\tlet children = [];\r\n\r\n\t\tfor (let i = 0; i < 8; i++) {\r\n\t\t\tif (this.children[i]) {\r\n\t\t\t\tchildren.push(this.children[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\tgetBoundingBox(){\r\n\t\treturn this.boundingBox;\r\n\t}\r\n\r\n\tload(){\r\n\r\n\t\tif (Potree.numNodesLoading >= Potree.maxNodesLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.octreeGeometry.loader.load(this);\r\n\t}\r\n\r\n\tgetNumPoints(){\r\n\t\treturn this.numPoints;\r\n\t}\r\n\r\n\tdispose(){\r\n\t\tif (this.geometry && this.parent != null) {\r\n\t\t\tthis.geometry.dispose();\r\n\t\t\tthis.geometry = null;\r\n\t\t\tthis.loaded = false;\r\n\r\n\t\t\t// this.dispatchEvent( { type: 'dispose' } );\r\n\t\t\tfor (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\r\n\t\t\t\tlet handler = this.oneTimeDisposeHandlers[i];\r\n\t\t\t\thandler();\r\n\t\t\t}\r\n\t\t\tthis.oneTimeDisposeHandlers = [];\r\n\t\t}\r\n\t}\r\n\r\n};\r\n\r\nOctreeGeometryNode.IDCount = 0;","\nimport {PointAttribute, PointAttributes, PointAttributeTypes} from \"../../../loader/PointAttributes.js\";\nimport {OctreeGeometry, OctreeGeometryNode} from \"./OctreeGeometry.js\";\n\n// let loadedNodes = new Set();\n\nexport class NodeLoader{\n\n\tconstructor(url){\n\t\tthis.url = url;\n\t}\n\n\tasync load(node){\n\n\t\tif(node.loaded || node.loading){\n\t\t\treturn;\n\t\t}\n\n\t\tnode.loading = true;\n\t\tPotree.numNodesLoading++;\n\n\t\t// console.log(node.name, node.numPoints);\n\n\t\t// if(loadedNodes.has(node.name)){\n\t\t// \t// debugger;\n\t\t// }\n\t\t// loadedNodes.add(node.name);\n\n\t\ttry{\n\t\t\tif(node.nodeType === 2){\n\t\t\t\tawait this.loadHierarchy(node);\n\t\t\t}\n\n\t\t\tlet {byteOffset, byteSize} = node;\n\n\n\t\t\tlet urlOctree = `${this.url}/../octree.bin`;\n\n\t\t\tlet first = byteOffset;\n\t\t\tlet last = byteOffset + byteSize - 1n;\n\n\t\t\tlet buffer;\n\n\t\t\tif(byteSize === 0n){\n\t\t\t\tbuffer = new ArrayBuffer(0);\n\t\t\t\tconsole.warn(`loaded node with 0 bytes: ${node.name}`);\n\t\t\t}else{\n\t\t\t\tlet response = await fetch(urlOctree, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'multipart/byteranges',\n\t\t\t\t\t\t'Range': `bytes=${first}-${last}`,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tbuffer = await response.arrayBuffer();\n\t\t\t}\n\n\t\t\tlet workerPath;\n\t\t\tif(this.metadata.encoding === \"BROTLI\"){\n\t\t\t\tworkerPath = Potree.scriptPath + '/workers/2.0/DecoderWorker_brotli.js';\n\t\t\t}else{\n\t\t\t\tworkerPath = Potree.scriptPath + '/workers/2.0/DecoderWorker.js';\n\t\t\t}\n\n\t\t\tlet worker = Potree.workerPool.getWorker(workerPath);\n\n\t\t\tworker.onmessage = function (e) {\n\n\t\t\t\tlet data = e.data;\n\t\t\t\tlet buffers = data.attributeBuffers;\n\n\t\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\n\n\t\t\t\tlet geometry = new THREE.BufferGeometry();\n\t\t\t\t\n\t\t\t\tfor(let property in buffers){\n\n\t\t\t\t\tlet buffer = buffers[property].buffer;\n\n\t\t\t\t\tif(property === \"position\"){\n\t\t\t\t\t\tgeometry.addAttribute('position', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t\t}else if(property === \"rgba\"){\n\t\t\t\t\t\tgeometry.addAttribute('rgba', new THREE.BufferAttribute(new Uint8Array(buffer), 4, true));\n\t\t\t\t\t}else if(property === \"NORMAL\"){\n\t\t\t\t\t\t//geometry.addAttribute('rgba', new THREE.BufferAttribute(new Uint8Array(buffer), 4, true));\n\t\t\t\t\t\tgeometry.addAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\n\t\t\t\t\t}else if (property === \"INDICES\") {\n\t\t\t\t\t\tlet bufferAttribute = new THREE.BufferAttribute(new Uint8Array(buffer), 4);\n\t\t\t\t\t\tbufferAttribute.normalized = true;\n\t\t\t\t\t\tgeometry.addAttribute('indices', bufferAttribute);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconst bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1);\n\n\t\t\t\t\t\tlet batchAttribute = buffers[property].attribute;\n\t\t\t\t\t\tbufferAttribute.potree = {\n\t\t\t\t\t\t\toffset: buffers[property].offset,\n\t\t\t\t\t\t\tscale: buffers[property].scale,\n\t\t\t\t\t\t\tpreciseBuffer: buffers[property].preciseBuffer,\n\t\t\t\t\t\t\trange: batchAttribute.range,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tgeometry.addAttribute(property, bufferAttribute);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\t// indices ??\n\n\t\t\t\tnode.density = data.density;\n\t\t\t\tnode.geometry = geometry;\n\t\t\t\tnode.loaded = true;\n\t\t\t\tnode.loading = false;\n\t\t\t\tPotree.numNodesLoading--;\n\t\t\t};\n\n\t\t\tlet pointAttributes = node.octreeGeometry.pointAttributes;\n\t\t\tlet scale = node.octreeGeometry.scale;\n\n\t\t\tlet box = node.boundingBox;\n\t\t\tlet min = node.octreeGeometry.offset.clone().add(box.min);\n\t\t\tlet size = box.max.clone().sub(box.min);\n\t\t\tlet max = min.clone().add(size);\n\t\t\tlet numPoints = node.numPoints;\n\n\t\t\tlet offset = node.octreeGeometry.loader.offset;\n\n\t\t\tlet message = {\n\t\t\t\tname: node.name,\n\t\t\t\tbuffer: buffer,\n\t\t\t\tpointAttributes: pointAttributes,\n\t\t\t\tscale: scale,\n\t\t\t\tmin: min,\n\t\t\t\tmax: max,\n\t\t\t\tsize: size,\n\t\t\t\toffset: offset,\n\t\t\t\tnumPoints: numPoints\n\t\t\t};\n\n\t\t\tworker.postMessage(message, [message.buffer]);\n\t\t}catch(e){\n\t\t\tnode.loaded = false;\n\t\t\tnode.loading = false;\n\t\t\tPotree.numNodesLoading--;\n\n\t\t\tconsole.log(`failed to load ${node.name}`);\n\t\t\tconsole.log(e);\n\t\t\tconsole.log(`trying again!`);\n\t\t}\n\t}\n\n\tparseHierarchy(node, buffer){\n\n\t\tlet view = new DataView(buffer);\n\t\tlet tStart = performance.now();\n\n\t\tlet bytesPerNode = 22;\n\t\tlet numNodes = buffer.byteLength / bytesPerNode;\n\n\t\tlet octree = node.octreeGeometry;\n\t\t// let nodes = [node];\n\t\tlet nodes = new Array(numNodes);\n\t\tnodes[0] = node;\n\t\tlet nodePos = 1;\n\n\t\tfor(let i = 0; i < numNodes; i++){\n\t\t\tlet current = nodes[i];\n\n\t\t\tlet type = view.getUint8(i * bytesPerNode + 0);\n\t\t\tlet childMask = view.getUint8(i * bytesPerNode + 1);\n\t\t\tlet numPoints = view.getUint32(i * bytesPerNode + 2, true);\n\t\t\tlet byteOffset = view.getBigInt64(i * bytesPerNode + 6, true);\n\t\t\tlet byteSize = view.getBigInt64(i * bytesPerNode + 14, true);\n\n\t\t\t// if(byteSize === 0n){\n\t\t\t// \t// debugger;\n\t\t\t// }\n\n\n\t\t\tif(current.nodeType === 2){\n\t\t\t\t// replace proxy with real node\n\t\t\t\tcurrent.byteOffset = byteOffset;\n\t\t\t\tcurrent.byteSize = byteSize;\n\t\t\t\tcurrent.numPoints = numPoints;\n\t\t\t}else if(type === 2){\n\t\t\t\t// load proxy\n\t\t\t\tcurrent.hierarchyByteOffset = byteOffset;\n\t\t\t\tcurrent.hierarchyByteSize = byteSize;\n\t\t\t\tcurrent.numPoints = numPoints;\n\t\t\t}else{\n\t\t\t\t// load real node \n\t\t\t\tcurrent.byteOffset = byteOffset;\n\t\t\t\tcurrent.byteSize = byteSize;\n\t\t\t\tcurrent.numPoints = numPoints;\n\t\t\t}\n\t\t\t\n\t\t\tcurrent.nodeType = type;\n\n\t\t\tif(current.nodeType === 2){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor(let childIndex = 0; childIndex < 8; childIndex++){\n\t\t\t\tlet childExists = ((1 << childIndex) & childMask) !== 0;\n\n\t\t\t\tif(!childExists){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet childName = current.name + childIndex;\n\n\t\t\t\tlet childAABB = createChildAABB(current.boundingBox, childIndex);\n\t\t\t\tlet child = new OctreeGeometryNode(childName, octree, childAABB);\n\t\t\t\tchild.name = childName;\n\t\t\t\tchild.spacing = current.spacing / 2;\n\t\t\t\tchild.level = current.level + 1;\n\n\t\t\t\tcurrent.children[childIndex] = child;\n\t\t\t\tchild.parent = current;\n\n\t\t\t\t// nodes.push(child);\n\t\t\t\tnodes[nodePos] = child;\n\t\t\t\tnodePos++;\n\t\t\t}\n\n\t\t\t// if((i % 500) === 0){\n\t\t\t// \tyield;\n\t\t\t// }\n\t\t}\n\n\t\tlet duration = (performance.now() - tStart);\n\n\t\t// if(duration > 20){\n\t\t// \tlet msg = `duration: ${duration}ms, numNodes: ${numNodes}`;\n\t\t// \tconsole.log(msg);\n\t\t// }\n\t}\n\n\tasync loadHierarchy(node){\n\n\t\tlet {hierarchyByteOffset, hierarchyByteSize} = node;\n\t\tlet hierarchyPath = `${this.url}/../hierarchy.bin`;\n\t\t\n\t\tlet first = hierarchyByteOffset;\n\t\tlet last = first + hierarchyByteSize - 1n;\n\n\t\tlet response = await fetch(hierarchyPath, {\n\t\t\theaders: {\n\t\t\t\t'content-type': 'multipart/byteranges',\n\t\t\t\t'Range': `bytes=${first}-${last}`,\n\t\t\t},\n\t\t});\n\n\n\n\t\tlet buffer = await response.arrayBuffer();\n\n\t\tthis.parseHierarchy(node, buffer);\n\n\t\t// let promise = new Promise((resolve) => {\n\t\t// \tlet generator = this.parseHierarchy(node, buffer);\n\n\t\t// \tlet repeatUntilDone = () => {\n\t\t// \t\tlet result = generator.next();\n\n\t\t// \t\tif(result.done){\n\t\t// \t\t\tresolve();\n\t\t// \t\t}else{\n\t\t// \t\t\trequestAnimationFrame(repeatUntilDone);\n\t\t// \t\t}\n\t\t// \t};\n\t\t\t\n\t\t// \trepeatUntilDone();\n\t\t// });\n\n\t\t// await promise;\n\n\t\t\n\n\n\n\t}\n\n}\n\nlet tmpVec3 = new THREE.Vector3();\nfunction createChildAABB(aabb, index){\n\tlet min = aabb.min.clone();\n\tlet max = aabb.max.clone();\n\tlet size = tmpVec3.subVectors(max, min);\n\n\tif ((index & 0b0001) > 0) {\n\t\tmin.z += size.z / 2;\n\t} else {\n\t\tmax.z -= size.z / 2;\n\t}\n\n\tif ((index & 0b0010) > 0) {\n\t\tmin.y += size.y / 2;\n\t} else {\n\t\tmax.y -= size.y / 2;\n\t}\n\t\n\tif ((index & 0b0100) > 0) {\n\t\tmin.x += size.x / 2;\n\t} else {\n\t\tmax.x -= size.x / 2;\n\t}\n\n\treturn new THREE.Box3(min, max);\n}\n\nlet typenameTypeattributeMap = {\n\t\"double\": PointAttributeTypes.DATA_TYPE_DOUBLE,\n\t\"float\": PointAttributeTypes.DATA_TYPE_FLOAT,\n\t\"int8\": PointAttributeTypes.DATA_TYPE_INT8,\n\t\"uint8\": PointAttributeTypes.DATA_TYPE_UINT8,\n\t\"int16\": PointAttributeTypes.DATA_TYPE_INT16,\n\t\"uint16\": PointAttributeTypes.DATA_TYPE_UINT16,\n\t\"int32\": PointAttributeTypes.DATA_TYPE_INT32,\n\t\"uint32\": PointAttributeTypes.DATA_TYPE_UINT32,\n\t\"int64\": PointAttributeTypes.DATA_TYPE_INT64,\n\t\"uint64\": PointAttributeTypes.DATA_TYPE_UINT64,\n}\n\nexport class OctreeLoader{\n\n\tstatic parseAttributes(jsonAttributes){\n\n\t\tlet attributes = new PointAttributes();\n\n\t\tlet replacements = {\n\t\t\t\"rgb\": \"rgba\",\n\t\t};\n\n\t\tfor(let jsonAttribute of jsonAttributes){\n\t\t\tlet {name, description, size, numElements, elementSize, min, max} = jsonAttribute;\n\n\t\t\tlet type = typenameTypeattributeMap[jsonAttribute.type];\n\n\t\t\tlet potreeAttributeName = replacements[name] ? replacements[name] : name;\n\n\t\t\tlet attribute = new PointAttribute(potreeAttributeName, type, numElements);\n\n\t\t\tif(numElements === 1){\n\t\t\t\tattribute.range = [min[0], max[0]];\n\t\t\t}else{\n\t\t\t\tattribute.range = [min, max];\n\t\t\t}\n\t\t\t\n\t\t\tattribute.initialRange = attribute.range;\n\n\t\t\tattributes.add(attribute);\n\t\t}\n\n\t\t{\n\t\t\t// check if it has normals\n\t\t\tlet hasNormals = \n\t\t\t\tattributes.attributes.find(a => a.name === \"NormalX\") !== undefined &&\n\t\t\t\tattributes.attributes.find(a => a.name === \"NormalY\") !== undefined &&\n\t\t\t\tattributes.attributes.find(a => a.name === \"NormalZ\") !== undefined;\n\n\t\t\tif(hasNormals){\n\t\t\t\tlet vector = {\n\t\t\t\t\tname: \"NORMAL\",\n\t\t\t\t\tattributes: [\"NormalX\", \"NormalY\", \"NormalZ\"],\n\t\t\t\t};\n\t\t\t\tattributes.addVector(vector);\n\t\t\t}\n\t\t}\n\n\t\treturn attributes;\n\t}\n\n\tstatic async load(url){\n\n\t\tlet response = await fetch(url);\n\t\tlet metadata = await response.json();\n\n\t\tlet attributes = OctreeLoader.parseAttributes(metadata.attributes);\n\n\t\tlet loader = new NodeLoader(url);\n\t\tloader.metadata = metadata;\n\t\tloader.attributes = attributes;\n\t\tloader.scale = metadata.scale;\n\t\tloader.offset = metadata.offset;\n\n\t\tlet octree = new OctreeGeometry();\n\t\toctree.url = url;\n\t\toctree.spacing = metadata.spacing;\n\t\toctree.scale = metadata.scale;\n\n\t\t// let aPosition = metadata.attributes.find(a => a.name === \"position\");\n\t\t// octree\n\n\t\tlet min = new THREE.Vector3(...metadata.boundingBox.min);\n\t\tlet max = new THREE.Vector3(...metadata.boundingBox.max);\n\t\tlet boundingBox = new THREE.Box3(min, max);\n\n\t\tlet offset = min.clone();\n\t\tboundingBox.min.sub(offset);\n\t\tboundingBox.max.sub(offset);\n\n\t\toctree.projection = metadata.projection;\n\t\toctree.boundingBox = boundingBox;\n\t\toctree.tightBoundingBox = boundingBox.clone();\n\t\toctree.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\toctree.tightBoundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\toctree.offset = offset;\n\t\toctree.pointAttributes = OctreeLoader.parseAttributes(metadata.attributes);\n\t\toctree.loader = loader;\n\n\t\tlet root = new OctreeGeometryNode(\"r\", octree, boundingBox);\n\t\troot.level = 0;\n\t\troot.nodeType = 2;\n\t\troot.hierarchyByteOffset = 0n;\n\t\troot.hierarchyByteSize = BigInt(metadata.hierarchy.firstChunkSize);\n\t\troot.hasChildren = false;\n\t\troot.spacing = octree.spacing;\n\t\troot.byteOffset = 0;\n\n\t\toctree.root = root;\n\n\t\tloader.load(root);\n\n\t\tlet result = {\n\t\t\tgeometry: octree,\n\t\t};\n\n\t\treturn result;\n\n\t}\n\n};","/**\n * @author Connor Manning\n */\n\nexport class EptLoader {\n\tstatic async load(file, callback) {\n\n\t\tlet response = await fetch(file);\n\t\tlet json = await response.json();\n\n\t\tlet url = file.substr(0, file.lastIndexOf('ept.json'));\n\t\tlet geometry = new Potree.PointCloudEptGeometry(url, json);\n\t\tlet root = new Potree.PointCloudEptGeometryNode(geometry);\n\n\t\tgeometry.root = root;\n\t\tgeometry.root.load();\n\n\t\tcallback(geometry);\n\t}\n};\n\n","import {XHRFactory} from \"../../XHRFactory.js\";\n\nexport class EptBinaryLoader {\n\textension() {\n\t\treturn '.bin';\n\t}\n\n\tworkerPath() {\n\t\treturn Potree.scriptPath + '/workers/EptBinaryDecoderWorker.js';\n\t}\n\n\tload(node) {\n\t\tif (node.loaded) return;\n\n\t\tlet url = node.url() + this.extension();\n\n\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.responseType = 'arraybuffer';\n\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\n\t\txhr.onreadystatechange = () => {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif (xhr.status === 200) {\n\t\t\t\t\tlet buffer = xhr.response;\n\t\t\t\t\tthis.parse(node, buffer);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('Failed ' + url + ': ' + xhr.status);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\ttry {\n\t\t\txhr.send(null);\n\t\t}\n\t\tcatch (e) {\n\t\t\tconsole.log('Failed request: ' + e);\n\t\t}\n\t}\n\n\tparse(node, buffer) {\n\t\tlet workerPath = this.workerPath();\n\t\tlet worker = Potree.workerPool.getWorker(workerPath);\n\n\t\tworker.onmessage = function(e) {\n\t\t\tlet g = new THREE.BufferGeometry();\n\t\t\tlet numPoints = e.data.numPoints;\n\n\t\t\tlet position = new Float32Array(e.data.position);\n\t\t\tg.addAttribute('position', new THREE.BufferAttribute(position, 3));\n\n\t\t\tlet indices = new Uint8Array(e.data.indices);\n\t\t\tg.addAttribute('indices', new THREE.BufferAttribute(indices, 4));\n\n\t\t\tif (e.data.color) {\n\t\t\t\tlet color = new Uint8Array(e.data.color);\n\t\t\t\tg.addAttribute('color', new THREE.BufferAttribute(color, 4, true));\n\t\t\t}\n\t\t\tif (e.data.intensity) {\n\t\t\t\tlet intensity = new Float32Array(e.data.intensity);\n\t\t\t\tg.addAttribute('intensity',\n\t\t\t\t\t\tnew THREE.BufferAttribute(intensity, 1));\n\t\t\t}\n\t\t\tif (e.data.classification) {\n\t\t\t\tlet classification = new Uint8Array(e.data.classification);\n\t\t\t\tg.addAttribute('classification',\n\t\t\t\t\t\tnew THREE.BufferAttribute(classification, 1));\n\t\t\t}\n\t\t\tif (e.data.returnNumber) {\n\t\t\t\tlet returnNumber = new Uint8Array(e.data.returnNumber);\n\t\t\t\tg.addAttribute('return number',\n\t\t\t\t\t\tnew THREE.BufferAttribute(returnNumber, 1));\n\t\t\t}\n\t\t\tif (e.data.numberOfReturns) {\n\t\t\t\tlet numberOfReturns = new Uint8Array(e.data.numberOfReturns);\n\t\t\t\tg.addAttribute('number of returns',\n\t\t\t\t\t\tnew THREE.BufferAttribute(numberOfReturns, 1));\n\t\t\t}\n\t\t\tif (e.data.pointSourceId) {\n\t\t\t\tlet pointSourceId = new Uint16Array(e.data.pointSourceId);\n\t\t\t\tg.addAttribute('source id',\n\t\t\t\t\t\tnew THREE.BufferAttribute(pointSourceId, 1));\n\t\t\t}\n\n\t\t\tg.attributes.indices.normalized = true;\n\n\t\t\tlet tightBoundingBox = new THREE.Box3(\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.min),\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.max)\n\t\t\t);\n\n\t\t\tnode.doneLoading(\n\t\t\t\t\tg,\n\t\t\t\t\ttightBoundingBox,\n\t\t\t\t\tnumPoints,\n\t\t\t\t\tnew THREE.Vector3(...e.data.mean));\n\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\n\t\t};\n\n\t\tlet toArray = (v) => [v.x, v.y, v.z];\n\t\tlet message = {\n\t\t\tbuffer: buffer,\n\t\t\tschema: node.ept.schema,\n\t\t\tscale: node.ept.eptScale,\n\t\t\toffset: node.ept.eptOffset,\n\t\t\tmins: toArray(node.key.b.min)\n\t\t};\n\n\t\tworker.postMessage(message, [message.buffer]);\n\t}\n};\n\n","import {XHRFactory} from \"../../XHRFactory.js\";\n\n/**\n * laslaz code taken and adapted from plas.io js-laslaz\n *\t http://plas.io/\n *\thttps://github.com/verma/plasio\n *\n * Thanks to Uday Verma and Howard Butler\n *\n */\n\nexport class EptLaszipLoader {\n\tload(node) {\n\t\tif (node.loaded) return;\n\n\t\tlet url = node.url() + '.laz';\n\n\t\tlet xhr = XHRFactory.createXMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.responseType = 'arraybuffer';\n\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\n\t\txhr.onreadystatechange = () => {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif (xhr.status === 200) {\n\t\t\t\t\tlet buffer = xhr.response;\n\t\t\t\t\tthis.parse(node, buffer);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('Failed ' + url + ': ' + xhr.status);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send(null);\n\t}\n\n\tasync parse(node, buffer){\n\t\tlet lf = new LASFile(buffer);\n\t\tlet handler = new EptLazBatcher(node);\n\n\t\ttry{\n\t\t\tawait lf.open();\n\n\t\t\tlf.isOpen = true;\n\n\t\t\tconst header = await lf.getHeader();\n\n\t\t\t{\n\t\t\t\tlet i = 0;\n\n\t\t\t\tlet toArray = (v) => [v.x, v.y, v.z];\n\t\t\t\tlet mins = toArray(node.key.b.min);\n\t\t\t\tlet maxs = toArray(node.key.b.max);\n\n\t\t\t\tlet hasMoreData = true;\n\n\t\t\t\twhile(hasMoreData){\n\t\t\t\t\tconst data = await lf.readData(1000000, 0, 1);\n\n\t\t\t\t\tlet d = new LASDecoder(\n\t\t\t\t\t\tdata.buffer,\n\t\t\t\t\t\theader.pointsFormatId,\n\t\t\t\t\t\theader.pointsStructSize,\n\t\t\t\t\t\tdata.count,\n\t\t\t\t\t\theader.scale,\n\t\t\t\t\t\theader.offset,\n\t\t\t\t\t\tmins,\n\t\t\t\t\t\tmaxs);\n\n\t\t\t\t\td.extraBytes = header.extraBytes;\n\t\t\t\t\td.pointsFormatId = header.pointsFormatId;\n\t\t\t\t\thandler.push(d);\n\n\t\t\t\t\ti += data.count;\n\n\t\t\t\t\thasMoreData = data.hasMoreData;\n\t\t\t\t}\n\n\t\t\t\theader.totalRead = i;\n\t\t\t\theader.versionAsString = lf.versionAsString;\n\t\t\t\theader.isCompressed = lf.isCompressed;\n\n\t\t\t\tawait lf.close();\n\n\t\t\t\tlf.isOpen = false;\n\t\t\t}\n\n\t\t}catch(err){\n\t\t\tconsole.error('Error reading LAZ:', err);\n\t\t\t\n\t\t\tif (lf.isOpen) {\n\t\t\t\tawait lf.close();\n\n\t\t\t\tlf.isOpen = false;\n\t\t\t}\n\t\t\t\n\t\t\tthrow err;\n\t\t}\n\t}\n};\n\nexport class EptLazBatcher {\n\tconstructor(node) { this.node = node; }\n\n\tpush(las) {\n\t\tlet workerPath = Potree.scriptPath +\n\t\t\t'/workers/EptLaszipDecoderWorker.js';\n\t\tlet worker = Potree.workerPool.getWorker(workerPath);\n\n\t\tworker.onmessage = (e) => {\n\t\t\tlet g = new THREE.BufferGeometry();\n\t\t\tlet numPoints = las.pointsCount;\n\n\t\t\tlet positions = new Float32Array(e.data.position);\n\t\t\tlet colors = new Uint8Array(e.data.color);\n\n\t\t\tlet intensities = new Float32Array(e.data.intensity);\n\t\t\tlet classifications = new Uint8Array(e.data.classification);\n\t\t\tlet returnNumbers = new Uint8Array(e.data.returnNumber);\n\t\t\tlet numberOfReturns = new Uint8Array(e.data.numberOfReturns);\n\t\t\tlet pointSourceIDs = new Uint16Array(e.data.pointSourceID);\n\t\t\tlet indices = new Uint8Array(e.data.indices);\n\t\t\tlet gpsTime = new Float32Array(e.data.gpsTime);\n\n\t\t\tg.addAttribute('position',\n\t\t\t\t\tnew THREE.BufferAttribute(positions, 3));\n\t\t\tg.addAttribute('rgba',\n\t\t\t\t\tnew THREE.BufferAttribute(colors, 4, true));\n\t\t\tg.addAttribute('intensity',\n\t\t\t\t\tnew THREE.BufferAttribute(intensities, 1));\n\t\t\tg.addAttribute('classification',\n\t\t\t\t\tnew THREE.BufferAttribute(classifications, 1));\n\t\t\tg.addAttribute('return number',\n\t\t\t\t\tnew THREE.BufferAttribute(returnNumbers, 1));\n\t\t\tg.addAttribute('number of returns',\n\t\t\t\t\tnew THREE.BufferAttribute(numberOfReturns, 1));\n\t\t\tg.addAttribute('source id',\n\t\t\t\t\tnew THREE.BufferAttribute(pointSourceIDs, 1));\n\t\t\tg.addAttribute('indices',\n\t\t\t\t\tnew THREE.BufferAttribute(indices, 4));\n\t\t\tg.addAttribute('gpsTime',\n\t\t\t\t\tnew THREE.BufferAttribute(gpsTime, 1));\n\t\t\tthis.node.gpsTime = e.data.gpsMeta;\n\n\t\t\tg.attributes.indices.normalized = true;\n\n\t\t\tlet tightBoundingBox = new THREE.Box3(\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.min),\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.max)\n\t\t\t);\n\n\t\t\tthis.node.doneLoading(\n\t\t\t\tg,\n\t\t\t\ttightBoundingBox,\n\t\t\t\tnumPoints,\n\t\t\t\tnew THREE.Vector3(...e.data.mean));\n\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\n\t\t};\n\n\t\tlet message = {\n\t\t\tbuffer: las.arrayb,\n\t\t\tnumPoints: las.pointsCount,\n\t\t\tpointSize: las.pointSize,\n\t\t\tpointFormatID: las.pointsFormatId,\n\t\t\tscale: las.scale,\n\t\t\toffset: las.offset,\n\t\t\tmins: las.mins,\n\t\t\tmaxs: las.maxs\n\t\t};\n\n\t\tworker.postMessage(message, [message.buffer]);\n\t};\n};\n\n","import {EptBinaryLoader} from \"./BinaryLoader.js\";\n\nexport class EptZstandardLoader extends EptBinaryLoader {\n extension() {\n return '.zst';\n }\n\n workerPath() {\n return Potree.scriptPath + '/workers/EptZstandardDecoderWorker.js';\n }\n};\n\n","\n\nexport class ShapefileLoader{\n\n\tconstructor(){\n\t\tthis.transform = null;\n\t}\n\n\tasync load(path){\n\n\t\tconst matLine = new THREE.LineMaterial( {\n\t\t\tcolor: 0xff0000,\n\t\t\tlinewidth: 3, // in pixels\n\t\t\tresolution: new THREE.Vector2(1000, 1000),\n\t\t\tdashed: false\n\t\t} );\n\n\t\tconst features = await this.loadShapefileFeatures(path);\n\t\tconst node = new THREE.Object3D();\n\t\t\n\t\tfor(const feature of features){\n\t\t\tconst fnode = this.featureToSceneNode(feature, matLine);\n\t\t\tnode.add(fnode);\n\t\t}\n\n\t\tlet setResolution = (x, y) => {\n\t\t\tmatLine.resolution.set(x, y);\n\t\t};\n\n\t\tconst result = {\n\t\t\tfeatures: features,\n\t\t\tnode: node,\n\t\t\tsetResolution: setResolution,\n\t\t};\n\n\t\treturn result;\n\t}\n\n\tfeatureToSceneNode(feature, matLine){\n\t\tlet geometry = feature.geometry;\n\t\t\n\t\tlet color = new THREE.Color(1, 1, 1);\n\n\t\tlet transform = this.transform;\n\t\tif(transform === null){\n\t\t\ttransform = {forward: (v) => v};\n\t\t}\n\t\t\n\t\tif(feature.geometry.type === \"Point\"){\n\t\t\tlet sg = new THREE.SphereGeometry(1, 18, 18);\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\n\t\t\tlet s = new THREE.Mesh(sg, sm);\n\t\t\t\n\t\t\tlet [long, lat] = geometry.coordinates;\n\t\t\tlet pos = transform.forward([long, lat]);\n\t\t\t\n\t\t\ts.position.set(...pos, 20);\n\t\t\t\n\t\t\ts.scale.set(10, 10, 10);\n\t\t\t\n\t\t\treturn s;\n\t\t}else if(geometry.type === \"LineString\"){\n\t\t\tlet coordinates = [];\n\t\t\t\n\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\t\tfor(let i = 0; i < geometry.coordinates.length; i++){\n\t\t\t\tlet [long, lat] = geometry.coordinates[i];\n\t\t\t\tlet pos = transform.forward([long, lat]);\n\t\t\t\t\n\t\t\t\tmin.x = Math.min(min.x, pos[0]);\n\t\t\t\tmin.y = Math.min(min.y, pos[1]);\n\t\t\t\tmin.z = Math.min(min.z, 20);\n\t\t\t\t\n\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\tif(i > 0 && i < geometry.coordinates.length - 1){\n\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\n\t\t\t\tcoordinates[i+0] -= min.x;\n\t\t\t\tcoordinates[i+1] -= min.y;\n\t\t\t\tcoordinates[i+2] -= min.z;\n\t\t\t}\n\t\t\t\n\t\t\tconst lineGeometry = new THREE.LineGeometry();\n\t\t\tlineGeometry.setPositions( coordinates );\n\n\t\t\tconst line = new THREE.Line2( lineGeometry, matLine );\n\t\t\tline.computeLineDistances();\n\t\t\tline.scale.set( 1, 1, 1 );\n\t\t\tline.position.copy(min);\n\t\t\t\n\t\t\treturn line;\n\t\t}else if(geometry.type === \"Polygon\"){\n\t\t\tfor(let pc of geometry.coordinates){\n\t\t\t\tlet coordinates = [];\n\t\t\t\t\n\t\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\t\t\tfor(let i = 0; i < pc.length; i++){\n\t\t\t\t\tlet [long, lat] = pc[i];\n\t\t\t\t\tlet pos = transform.forward([long, lat]);\n\t\t\t\t\t\n\t\t\t\t\tmin.x = Math.min(min.x, pos[0]);\n\t\t\t\t\tmin.y = Math.min(min.y, pos[1]);\n\t\t\t\t\tmin.z = Math.min(min.z, 20);\n\t\t\t\t\t\n\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t\tif(i > 0 && i < pc.length - 1){\n\t\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\n\t\t\t\t\tcoordinates[i+0] -= min.x;\n\t\t\t\t\tcoordinates[i+1] -= min.y;\n\t\t\t\t\tcoordinates[i+2] -= min.z;\n\t\t\t\t}\n\n\t\t\t\tconst lineGeometry = new THREE.LineGeometry();\n\t\t\t\tlineGeometry.setPositions( coordinates );\n\n\t\t\t\tconst line = new THREE.Line2( lineGeometry, matLine );\n\t\t\t\tline.computeLineDistances();\n\t\t\t\tline.scale.set( 1, 1, 1 );\n\t\t\t\tline.position.copy(min);\n\t\t\t\t\n\t\t\t\treturn line;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.log(\"unhandled feature: \", feature);\n\t\t}\n\t}\n\n\tasync loadShapefileFeatures(file){\n\t\tlet features = [];\n\n\t\tlet source = await shapefile.open(file);\n\n\t\twhile(true){\n\t\t\tlet result = await source.read();\n\n\t\t\tif (result.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (result.value && result.value.type === 'Feature' && result.value.geometry !== undefined) {\n\t\t\t\tfeatures.push(result.value);\n\t\t\t}\n\t\t}\n\n\t\treturn features;\n\t}\n\n};\n\n","\nimport {Utils} from \"../utils.js\";\n\nconst defaultColors = {\n\t\"landuse\": [0.5, 0.5, 0.5],\n\t\"natural\": [0.0, 1.0, 0.0],\n\t\"places\": [1.0, 0.0, 1.0],\n\t\"points\": [0.0, 1.0, 1.0],\n\t\"roads\": [1.0, 1.0, 0.0],\n\t\"waterways\": [0.0, 0.0, 1.0],\n\t\"default\": [0.9, 0.6, 0.1],\n};\n\nfunction getColor(feature){\n\tlet color = defaultColors[feature];\n\n\tif(!color){\n\t\tcolor = defaultColors[\"default\"];\n\t}\n\n\treturn color;\n}\n\nexport class Geopackage{\n\tconstructor(){\n\t\tthis.path = null;\n\t\tthis.node = null;\n\t}\n};\n\nexport class GeoPackageLoader{\n\n\tconstructor(){\n\n\t}\n\n\tstatic async loadUrl(url, params){\n\n\t\tawait Promise.all([\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/geopackage/geopackage.js`),\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.js`),\n\t\t]);\n\t\t\n\t\tconst result = await fetch(url);\n\t\tconst buffer = await result.arrayBuffer();\n\n\t\tparams = params || {};\n\n\t\tparams.source = url;\n\n\t\treturn GeoPackageLoader.loadBuffer(buffer, params);\n\t}\n\n\tstatic async loadBuffer(buffer, params){\n\n\t\tawait Promise.all([\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/geopackage/geopackage.js`),\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.js`),\n\t\t]);\n\n\t\tparams = params || {};\n\n\t\tconst resolver = async (resolve) => {\n\t\t\t\n\t\t\tlet transform = params.transform;\n\t\t\tif(!transform){\n\t\t\t\ttransform = {forward: (arg) => arg};\n\t\t\t}\n\n\t\t\tconst wasmPath = `${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.wasm`;\n\t\t\tconst SQL = await initSqlJs({ locateFile: filename => wasmPath});\n\n\t\t\tconst u8 = new Uint8Array(buffer);\n\n\t\t\tconst data = await geopackage.open(u8);\n\t\t\twindow.data = data;\n\n\t\t\tconst geopackageNode = new THREE.Object3D();\n\t\t\tgeopackageNode.name = params.source;\n\t\t\tgeopackageNode.potree = {\n\t\t\t\tsource: params.source,\n\t\t\t};\n\n\t\t\tconst geo = new Geopackage();\n\t\t\tgeo.path = params.source;\n\t\t\tgeo.node = geopackageNode;\n\n\t\t\tconst tables = data.getTables();\n\n\t\t\tfor(const table of tables.features){\n\t\t\t\tconst dao = data.getFeatureDao(table);\n\n\t\t\t\tlet boundingBox = dao.getBoundingBox();\n\t\t\t\tboundingBox = boundingBox.projectBoundingBox(dao.projection, 'EPSG:4326');\n\t\t\t\tconst geoJson = data.queryForGeoJSONFeaturesInTable(table, boundingBox);\n\n\t\t\t\tconst matLine = new THREE.LineMaterial( {\n\t\t\t\t\tcolor: new THREE.Color().setRGB(...getColor(table)),\n\t\t\t\t\tlinewidth: 2, \n\t\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\n\t\t\t\t\tdashed: false\n\t\t\t\t} );\n\n\t\t\t\tconst node = new THREE.Object3D();\n\t\t\t\tnode.name = table;\n\t\t\t\tgeo.node.add(node);\n\n\t\t\t\tfor(const [index, feature] of Object.entries(geoJson)){\n\t\t\t\t\t//const featureNode = GeoPackageLoader.featureToSceneNode(feature, matLine, transform);\n\t\t\t\t\tconst featureNode = GeoPackageLoader.featureToSceneNode(feature, matLine, dao.projection, transform);\n\t\t\t\t\tnode.add(featureNode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresolve(geo);\n\t\t}\n\n\t\treturn new Promise(resolver);\n\t}\n\n\tstatic featureToSceneNode(feature, matLine, geopackageProjection, transform){\n\t\tlet geometry = feature.geometry;\n\t\t\n\t\tlet color = new THREE.Color(1, 1, 1);\n\t\t\n\t\tif(feature.geometry.type === \"Point\"){\n\t\t\tlet sg = new THREE.SphereGeometry(1, 18, 18);\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\n\t\t\tlet s = new THREE.Mesh(sg, sm);\n\t\t\t\n\t\t\tlet [long, lat] = geometry.coordinates;\n\t\t\tlet pos = transform.forward(geopackageProjection.forward([long, lat]));\n\t\t\t\n\t\t\ts.position.set(...pos, 20);\n\t\t\t\n\t\t\ts.scale.set(10, 10, 10);\n\t\t\t\n\t\t\treturn s;\n\t\t}else if(geometry.type === \"LineString\"){\n\t\t\tlet coordinates = [];\n\t\t\t\n\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\t\tfor(let i = 0; i < geometry.coordinates.length; i++){\n\t\t\t\tlet [long, lat] = geometry.coordinates[i];\n\t\t\t\tlet pos = transform.forward(geopackageProjection.forward([long, lat]));\n\t\t\t\t\n\t\t\t\tmin.x = Math.min(min.x, pos[0]);\n\t\t\t\tmin.y = Math.min(min.y, pos[1]);\n\t\t\t\tmin.z = Math.min(min.z, 20);\n\t\t\t\t\n\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\tif(i > 0 && i < geometry.coordinates.length - 1){\n\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\n\t\t\t\tcoordinates[i+0] -= min.x;\n\t\t\t\tcoordinates[i+1] -= min.y;\n\t\t\t\tcoordinates[i+2] -= min.z;\n\t\t\t}\n\t\t\t\n\t\t\tconst lineGeometry = new THREE.LineGeometry();\n\t\t\tlineGeometry.setPositions( coordinates );\n\n\t\t\tconst line = new THREE.Line2( lineGeometry, matLine );\n\t\t\tline.computeLineDistances();\n\t\t\tline.scale.set( 1, 1, 1 );\n\t\t\tline.position.copy(min);\n\t\t\t\n\t\t\treturn line;\n\t\t}else if(geometry.type === \"Polygon\"){\n\t\t\tfor(let pc of geometry.coordinates){\n\t\t\t\tlet coordinates = [];\n\t\t\t\t\n\t\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\t\t\tfor(let i = 0; i < pc.length; i++){\n\t\t\t\t\tlet [long, lat] = pc[i];\n\t\t\t\t\t\n\t\t\t\t\tlet pos = transform.forward(geopackageProjection.forward([long, lat]));\n\t\t\t\t\t\n\t\t\t\t\tmin.x = Math.min(min.x, pos[0]);\n\t\t\t\t\tmin.y = Math.min(min.y, pos[1]);\n\t\t\t\t\tmin.z = Math.min(min.z, 20);\n\t\t\t\t\t\n\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t\tif(i > 0 && i < pc.length - 1){\n\t\t\t\t\t\tcoordinates.push(...pos, 20);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\n\t\t\t\t\tcoordinates[i+0] -= min.x;\n\t\t\t\t\tcoordinates[i+1] -= min.y;\n\t\t\t\t\tcoordinates[i+2] -= min.z;\n\t\t\t\t}\n\n\t\t\t\tconst lineGeometry = new THREE.LineGeometry();\n\t\t\t\tlineGeometry.setPositions( coordinates );\n\n\t\t\t\tconst line = new THREE.Line2( lineGeometry, matLine );\n\t\t\t\tline.computeLineDistances();\n\t\t\t\tline.scale.set( 1, 1, 1 );\n\t\t\t\tline.position.copy(min);\n\t\t\t\t\n\t\t\t\treturn line;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.log(\"unhandled feature: \", feature);\n\t\t}\n\t}\n\n};","\n\nexport class ClipVolume extends THREE.Object3D{\n\t\n\tconstructor(args){\n\t\tsuper();\n\t\t\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\n\t\tthis.name = \"clip_volume_\" + this.constructor.counter;\n\n\t\tlet alpha = args.alpha || 0;\n\t\tlet beta = args.beta || 0;\n\t\tlet gamma = args.gamma || 0;\n\n\t\tthis.rotation.x = alpha;\n\t\tthis.rotation.y = beta;\n\t\tthis.rotation.z = gamma;\n\n\t\tthis.clipOffset = 0.001;\n\t\tthis.clipRotOffset = 1;\n\t\t\t\t\n\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\n\t\tboxGeometry.computeBoundingBox();\n\t\t\n\t\tlet boxFrameGeometry = new THREE.Geometry();\n\t\t{\t\t\t\n\t\t\t// bottom\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\t// top\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\t// sides\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\n\t\t\tboxFrameGeometry.colors.push(new THREE.Vector3(1, 1, 1));\n\t\t}\n\n\t\tlet planeFrameGeometry = new THREE.Geometry();\n\t\t{\t\t\t\t\t\t\n\t\t\t// middle line\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.0));\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.0));\n\t\t}\n\n\t\tthis.dimension = new THREE.Vector3(1, 1, 1);\n\t\tthis.material = new THREE.MeshBasicMaterial( {\n\t\t\tcolor: 0x00ff00, \n\t\t\ttransparent: true, \n\t\t\topacity: 0.3,\n\t\t\tdepthTest: true, \n\t\t\tdepthWrite: false} );\n\t\tthis.box = new THREE.Mesh(boxGeometry, this.material);\n\t\tthis.box.geometry.computeBoundingBox();\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\n\t\tthis.add(this.box);\n\t\t\n\t\tthis.frame = new THREE.LineSegments( boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\n\t\tthis.add(this.frame);\n\t\tthis.planeFrame = new THREE.LineSegments( planeFrameGeometry, new THREE.LineBasicMaterial({color: 0xff0000}));\n\t\tthis.add(this.planeFrame);\n\n\t\t// set default thickness\n\t\tthis.setScaleZ(0.1);\n\n\t\t// create local coordinate system\n\t\tlet createArrow = (name, direction, color) => {\n\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: color, \n\t\t\t\tdepthTest: false, \n\t\t\t\tdepthWrite: false});\n\t\t\t\t\n\t\t\tlet shaftGeometry = new THREE.Geometry();\n\t\t\tshaftGeometry.vertices.push(new THREE.Vector3(0, 0, 0));\n\t\t\tshaftGeometry.vertices.push(new THREE.Vector3(0, 1, 0));\n\t\t\t\n\t\t\tlet shaftMaterial = new THREE.LineBasicMaterial({\n\t\t\t\tcolor: color, \n\t\t\t\tdepthTest: false, \n\t\t\t\tdepthWrite: false,\n\t\t\t\ttransparent: true\n\t\t\t\t});\n\t\t\tlet shaft = new THREE.Line(shaftGeometry, shaftMaterial);\n\t\t\tshaft.name = name + \"_shaft\";\n\t\t\t\n\t\t\tlet headGeometry = new THREE.CylinderGeometry(0, 0.04, 0.1, 10, 1, false);\n\t\t\tlet headMaterial = material;\n\t\t\tlet head = new THREE.Mesh(headGeometry, headMaterial);\n\t\t\thead.name = name + \"_head\";\n\t\t\thead.position.y = 1;\n\t\t\t\n\t\t\tlet arrow = new THREE.Object3D();\n\t\t\tarrow.name = name;\n\t\t\tarrow.add(shaft);\n\t\t\tarrow.add(head);\n\n\t\t\treturn arrow;\n\t\t};\n\t\t\n\t\tthis.arrowX = createArrow(\"arrow_x\", new THREE.Vector3(1, 0, 0), 0xFF0000);\n\t\tthis.arrowY = createArrow(\"arrow_y\", new THREE.Vector3(0, 1, 0), 0x00FF00);\n\t\tthis.arrowZ = createArrow(\"arrow_z\", new THREE.Vector3(0, 0, 1), 0x0000FF);\n\t\t\n\t\tthis.arrowX.rotation.z = -Math.PI / 2;\n\t\tthis.arrowZ.rotation.x = Math.PI / 2;\n\n\t\tthis.arrowX.visible = false;\n\t\tthis.arrowY.visible = false;\n\t\tthis.arrowZ.visible = false;\n\n\t\tthis.add(this.arrowX);\n\t\tthis.add(this.arrowY);\n\t\tthis.add(this.arrowZ);\n\t\t\n\t\t{ // event listeners\n\t\t\tthis.addEventListener(\"ui_select\", e => { \n\t\t\t\tthis.arrowX.visible = true;\n\t\t\t\tthis.arrowY.visible = true;\n\t\t\t\tthis.arrowZ.visible = true; \n\t\t\t});\n\t\t\tthis.addEventListener(\"ui_deselect\", e => {\n\t\t\t\tthis.arrowX.visible = false;\n\t\t\t\tthis.arrowY.visible = false;\n\t\t\t\tthis.arrowZ.visible = false; \t\t\t\t\n\t\t\t});\n\t\t\tthis.addEventListener(\"select\", e => { \n\t\t\t\tlet scene_header = $(\"#\" + this.name + \" .scene_header\");\n\t\t\t\tif(!scene_header.next().is(\":visible\")) {\n\t\t\t\t\tscene_header.click();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.addEventListener(\"deselect\", e => { \n\t\t\t\tlet scene_header = $(\"#\" + this.name + \" .scene_header\");\n\t\t\t\tif(scene_header.next().is(\":visible\")) {\n\t\t\t\t\tscene_header.click();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tthis.update();\n\t};\n\n\tsetClipOffset(offset) {\t\t\n\t\tthis.clipOffset = offset;\t\n\t}\n\n\tsetClipRotOffset(offset) {\t\t\n\t\tthis.clipRotOffset = offset;\t\t\n\t}\n\n\tsetScaleX(x) {\n\t\tthis.box.scale.x = x;\n\t\tthis.frame.scale.x = x;\n\t\tthis.planeFrame.scale.x = x;\t\t\t\n\t}\n\n\tsetScaleY(y) {\n\t\tthis.box.scale.y = y;\n\t\tthis.frame.scale.y = y;\n\t\tthis.planeFrame.scale.y = y;\t\t\n\t}\n\n\tsetScaleZ(z) {\n\t\tthis.box.scale.z = z;\n\t\tthis.frame.scale.z = z;\n\t\tthis.planeFrame.scale.z = z;\t\t\n\t}\n\n\toffset(args) {\n\t\tlet cs = args.cs || null;\n\t\tlet axis = args.axis || null;\n\t\tlet dir = args.dir || null;\n\n\t\tif(!cs || !axis || !dir) return;\n\n\t\tif(axis === \"x\") {\n\t\t\tif(cs === \"local\") {\n\t\t\t\tthis.position.add(this.localX.clone().multiplyScalar(dir * this.clipOffset));\n\t\t\t} else if(cs === \"global\") {\n\t\t\t\tthis.position.x = this.position.x + dir * this.clipOffset;\n\t\t\t}\n\t\t}else if(axis === \"y\") {\n\t\t\tif(cs === \"local\") {\n\t\t\t\tthis.position.add(this.localY.clone().multiplyScalar(dir * this.clipOffset));\n\t\t\t} else if(cs === \"global\") {\n\t\t\t\tthis.position.y = this.position.y + dir * this.clipOffset;\n\t\t\t}\n\t\t}else if(axis === \"z\") {\n\t\t\tif(cs === \"local\") {\n\t\t\t\tthis.position.add(this.localZ.clone().multiplyScalar(dir * this.clipOffset));\n\t\t\t} else if(cs === \"global\") {\n\t\t\t\tthis.position.z = this.position.z + dir * this.clipOffset;\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchEvent({\"type\": \"clip_volume_changed\", \"viewer\": viewer, \"volume\": this});\n\t}\t\n\n\trotate(args) {\n\t\tlet cs = args.cs || null;\n\t\tlet axis = args.axis || null;\n\t\tlet dir = args.dir || null;\n\n\t\tif(!cs || !axis || !dir) return;\n\n\t\tif(cs === \"local\") {\n\t\t\tif(axis === \"x\") {\n\t\t\t\tthis.rotateOnAxis(new THREE.Vector3(1, 0, 0), dir * this.clipRotOffset * Math.PI / 180);\n\t\t\t} else if(axis === \"y\") {\n\t\t\t\tthis.rotateOnAxis(new THREE.Vector3(0, 1, 0), dir * this.clipRotOffset * Math.PI / 180);\n\t\t\t} else if(axis === \"z\") {\n\t\t\t\tthis.rotateOnAxis(new THREE.Vector3(0, 0, 1), dir * this.clipRotOffset * Math.PI / 180);\n\t\t\t}\n\t\t} else if(cs === \"global\") {\n\t\t\tlet rotaxis = new THREE.Vector4(1, 0, 0, 0);\t\n\t\t\tif(axis === \"y\") {\n\t\t\t\trotaxis = new THREE.Vector4(0, 1, 0, 0);\n\t\t\t} else if(axis === \"z\") {\n\t\t\t\trotaxis = new THREE.Vector4(0, 0, 1, 0);\n\t\t\t}\n\t\t\tthis.updateMatrixWorld();\n\t\t\tlet invM = new THREE.Matrix4().getInverse(this.matrixWorld);\n\t\t\trotaxis = rotaxis.applyMatrix4(invM).normalize();\n\t\t\trotaxis = new THREE.Vector3(rotaxis.x, rotaxis.y, rotaxis.z);\n\t\t\tthis.rotateOnAxis(rotaxis, dir * this.clipRotOffset * Math.PI / 180);\n\t\t}\n\n\t\tthis.updateLocalSystem();\n\n\t\tthis.dispatchEvent({\"type\": \"clip_volume_changed\", \"viewer\": viewer, \"volume\": this});\n\t}\t\n\n\tupdate(){\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\t\n\t\tthis.box.visible = false;\n\n\t\tthis.updateLocalSystem();\n\t};\n\n\tupdateLocalSystem() {\t\t\n\t\t// extract local coordinate axes\n\t\tlet rotQuat = this.getWorldQuaternion();\n\t\tthis.localX = new THREE.Vector3(1, 0, 0).applyQuaternion(rotQuat).normalize();\n\t\tthis.localY = new THREE.Vector3(0, 1, 0).applyQuaternion(rotQuat).normalize();\n\t\tthis.localZ = new THREE.Vector3(0, 0, 1).applyQuaternion(rotQuat).normalize();\n\t}\n\t\n\traycast(raycaster, intersects){\n\t\t\n\t\tlet is = [];\n\t\tthis.box.raycast(raycaster, is);\n\t\n\t\tif(is.length > 0){\n\t\t\tlet I = is[0];\n\t\t\tintersects.push({\n\t\t\t\tdistance: I.distance,\n\t\t\t\tobject: this,\n\t\t\t\tpoint: I.point.clone()\n\t\t\t});\n\t\t}\n\t};\n};\n","\nimport {ClipVolume} from \"./ClipVolume.js\";\nimport {PolygonClipVolume} from \"./PolygonClipVolume.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\n\nexport class ClippingTool extends EventDispatcher{\n\n\tconstructor(viewer){\n\t\tsuper(); \n\n\t\tthis.viewer = viewer;\n\n\t\tthis.maxPolygonVertices = 8; \n\t\t\n\t\tthis.addEventListener(\"start_inserting_clipping_volume\", e => {\n\t\t\tthis.viewer.dispatchEvent({\n\t\t\t\ttype: \"cancel_insertions\"\n\t\t\t});\n\t\t});\n\n\t\tthis.sceneMarker = new THREE.Scene();\n\t\tthis.sceneVolume = new THREE.Scene();\n\t\tthis.sceneVolume.name = \"scene_clip_volume\";\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.sceneVolume);\n\n\t\tthis.onRemove = e => {\n\t\t\tthis.sceneVolume.remove(e.volume);\n\t\t};\n\t\t\n\t\tthis.onAdd = e => {\n\t\t\tthis.sceneVolume.add(e.volume);\n\t\t};\n\t\t\n\t\tthis.viewer.inputHandler.addEventListener(\"delete\", e => {\n\t\t\tlet volumes = e.selection.filter(e => (e instanceof ClipVolume));\n\t\t\tvolumes.forEach(e => this.viewer.scene.removeClipVolume(e));\n\t\t\tlet polyVolumes = e.selection.filter(e => (e instanceof PolygonClipVolume));\n\t\t\tpolyVolumes.forEach(e => this.viewer.scene.removePolygonClipVolume(e));\n\t\t});\n\t}\n\n\tsetScene(scene){\n\t\tif(this.scene === scene){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(this.scene){\n\t\t\tthis.scene.removeEventListeners(\"clip_volume_added\", this.onAdd);\n\t\t\tthis.scene.removeEventListeners(\"clip_volume_removed\", this.onRemove);\n\t\t\tthis.scene.removeEventListeners(\"polygon_clip_volume_added\", this.onAdd);\n\t\t\tthis.scene.removeEventListeners(\"polygon_clip_volume_removed\", this.onRemove);\n\t\t}\n\t\t\n\t\tthis.scene = scene;\n\t\t\n\t\tthis.scene.addEventListener(\"clip_volume_added\", this.onAdd);\n\t\tthis.scene.addEventListener(\"clip_volume_removed\", this.onRemove);\n\t\tthis.scene.addEventListener(\"polygon_clip_volume_added\", this.onAdd);\n\t\tthis.scene.addEventListener(\"polygon_clip_volume_removed\", this.onRemove);\n\t}\n\n\tstartInsertion(args = {}) {\t\n\t\tlet type = args.type || null;\n\n\t\tif(!type) return null;\n\n\t\tlet domElement = this.viewer.renderer.domElement;\n\t\tlet canvasSize = this.viewer.renderer.getSize(new THREE.Vector2());\n\n\t\tlet svg = $(`\n\t\t\n\n\t\t\t\n\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t`);\n\t\t$(domElement.parentElement).append(svg);\n\n\t\tlet polyClipVol = new PolygonClipVolume(this.viewer.scene.getActiveCamera().clone());\n\n\t\tthis.dispatchEvent({\"type\": \"start_inserting_clipping_volume\"});\n\n\t\tthis.viewer.scene.addPolygonClipVolume(polyClipVol);\n\t\tthis.sceneMarker.add(polyClipVol);\n\n\t\tlet cancel = {\n\t\t\tcallback: null\n\t\t};\n\n\t\tlet insertionCallback = (e) => {\n\t\t\tif(e.button === THREE.MOUSE.LEFT){\n\t\t\t\t\n\t\t\t\tpolyClipVol.addMarker();\n\n\t\t\t\t// SVC Screen Line\n\t\t\t\tsvg.find(\"polyline\").each((index, target) => {\n\t\t\t\t\tlet newPoint = svg[0].createSVGPoint();\n\t\t\t\t\tnewPoint.x = e.offsetX;\n\t\t\t\t\tnewPoint.y = e.offsetY;\n\t\t\t\t\tlet polyline = target.points.appendItem(newPoint);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif(polyClipVol.markers.length > this.maxPolygonVertices){\n\t\t\t\t\tcancel.callback();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.viewer.inputHandler.startDragging(\n\t\t\t\t\tpolyClipVol.markers[polyClipVol.markers.length - 1]);\n\t\t\t}else if(e.button === THREE.MOUSE.RIGHT){\n\t\t\t\tcancel.callback(e);\n\t\t\t}\n\t\t};\n\t\t\n\t\tcancel.callback = e => {\n\n\t\t\t//let first = svg.find(\"polyline\")[0].points[0];\n\t\t\t//svg.find(\"polyline\").each((index, target) => {\n\t\t\t//\tlet newPoint = svg[0].createSVGPoint();\n\t\t\t//\tnewPoint.x = first.x;\n\t\t\t//\tnewPoint.y = first.y;\n\t\t\t//\tlet polyline = target.points.appendItem(newPoint);\n\t\t\t//});\n\t\t\tsvg.remove();\n\n\t\t\tif(polyClipVol.markers.length > 3) {\n\t\t\t\tpolyClipVol.removeLastMarker();\n\t\t\t\tpolyClipVol.initialized = true;\t\n\t\t\t} else {\n\t\t\t\tthis.viewer.scene.removePolygonClipVolume(polyClipVol);\n\t\t\t}\n\n\t\t\tthis.viewer.renderer.domElement.removeEventListener(\"mouseup\", insertionCallback, true);\n\t\t\tthis.viewer.removeEventListener(\"cancel_insertions\", cancel.callback);\n\t\t\tthis.viewer.inputHandler.enabled = true;\n\t\t};\n\t\t\n\t\tthis.viewer.addEventListener(\"cancel_insertions\", cancel.callback);\n\t\tthis.viewer.renderer.domElement.addEventListener(\"mouseup\", insertionCallback , true);\n\t\tthis.viewer.inputHandler.enabled = false;\n\t\t\n\t\tpolyClipVol.addMarker();\n\t\tthis.viewer.inputHandler.startDragging(\n\t\t\tpolyClipVol.markers[polyClipVol.markers.length - 1]);\n\n\t\treturn polyClipVol;\n\t}\n\n\tupdate() {\n\n\t}\n};","\nimport {Enum} from \"../Enum.js\";\n\nvar GeoTIFF = (function (exports) {\n'use strict';\n\nconst Endianness = new Enum({\n\tLITTLE: \"II\",\n\tBIG: \"MM\",\n});\n\nconst Type = new Enum({\n\tBYTE: {value: 1, bytes: 1},\n\tASCII: {value: 2, bytes: 1},\n\tSHORT: {value: 3, bytes: 2},\n\tLONG: {value: 4, bytes: 4},\n\tRATIONAL: {value: 5, bytes: 8},\n\tSBYTE: {value: 6, bytes: 1},\n\tUNDEFINED: {value: 7, bytes: 1},\n\tSSHORT: {value: 8, bytes: 2},\n\tSLONG: {value: 9, bytes: 4},\n\tSRATIONAL: {value: 10, bytes: 8},\n\tFLOAT: {value: 11, bytes: 4},\n\tDOUBLE: {value: 12, bytes: 8},\n});\n\nconst Tag = new Enum({\n\tIMAGE_WIDTH: 256,\n\tIMAGE_HEIGHT: 257,\n\tBITS_PER_SAMPLE: 258,\n\tCOMPRESSION: 259,\n\tPHOTOMETRIC_INTERPRETATION: 262,\n\tSTRIP_OFFSETS: 273,\n\tORIENTATION: 274,\n\tSAMPLES_PER_PIXEL: 277,\n\tROWS_PER_STRIP: 278,\n\tSTRIP_BYTE_COUNTS: 279,\n\tX_RESOLUTION: 282,\n\tY_RESOLUTION: 283,\n\tPLANAR_CONFIGURATION: 284,\n\tRESOLUTION_UNIT: 296,\n\tSOFTWARE: 305,\n\tCOLOR_MAP: 320,\n\tSAMPLE_FORMAT: 339,\n\tMODEL_PIXEL_SCALE: 33550, // [GeoTIFF] TYPE: double N: 3\n\tMODEL_TIEPOINT: 33922, // [GeoTIFF] TYPE: double N: 6 * NUM_TIEPOINTS\n\tGEO_KEY_DIRECTORY: 34735, // [GeoTIFF] TYPE: short N: >= 4\n\tGEO_DOUBLE_PARAMS: 34736, // [GeoTIFF] TYPE: short N: variable\n\tGEO_ASCII_PARAMS: 34737, // [GeoTIFF] TYPE: ascii N: variable\n});\n\nconst typeMapping = new Map([\n\t[Type.BYTE, Uint8Array],\n\t[Type.ASCII, Uint8Array],\n\t[Type.SHORT, Uint16Array],\n\t[Type.LONG, Uint32Array],\n\t[Type.RATIONAL, Uint32Array],\n\t[Type.SBYTE, Int8Array],\n\t[Type.UNDEFINED, Uint8Array],\n\t[Type.SSHORT, Int16Array],\n\t[Type.SLONG, Int32Array],\n\t[Type.SRATIONAL, Int32Array],\n\t[Type.FLOAT, Float32Array],\n\t[Type.DOUBLE, Float64Array],\n]);\n\nclass IFDEntry{\n\n\tconstructor(tag, type, count, offset, value){\n\t\tthis.tag = tag;\n\t\tthis.type = type;\n\t\tthis.count = count;\n\t\tthis.offset = offset;\n\t\tthis.value = value;\n\t}\n\n}\n\nclass Image{\n\n\tconstructor(){\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.buffer = null;\n\t\tthis.metadata = [];\n\t}\n\n}\n\nclass Reader{\n\n\tconstructor(){\n\n\t}\n\n\tstatic read(data){\n\n\t\tlet endiannessTag = String.fromCharCode(...Array.from(data.slice(0, 2)));\n\t\tlet endianness = Endianness.fromValue(endiannessTag);\n\n\t\tlet tiffCheckTag = data.readUInt8(2);\n\n\t\tif(tiffCheckTag !== 42){\n\t\t\tthrow new Error(\"not a valid tiff file\");\n\t\t}\n\n\t\tlet offsetToFirstIFD = data.readUInt32LE(4);\n\n\t\tconsole.log(\"offsetToFirstIFD\", offsetToFirstIFD);\n\n\t\tlet ifds = [];\n\t\tlet IFDsRead = false;\n\t\tlet currentIFDOffset = offsetToFirstIFD;\n\t\tlet i = 0;\n\t\twhile(IFDsRead || i < 100){\n\n\t\t\tconsole.log(\"currentIFDOffset\", currentIFDOffset);\n\t\t\tlet numEntries = data.readUInt16LE(currentIFDOffset);\n\t\t\tlet nextIFDOffset = data.readUInt32LE(currentIFDOffset + 2 + numEntries * 12);\n\n\t\t\tconsole.log(\"next offset: \", currentIFDOffset + 2 + numEntries * 12);\n\n\t\t\tlet entryBuffer = data.slice(currentIFDOffset + 2, currentIFDOffset + 2 + 12 * numEntries);\n\n\t\t\tfor(let i = 0; i < numEntries; i++){\n\t\t\t\tlet tag = Tag.fromValue(entryBuffer.readUInt16LE(i * 12));\n\t\t\t\tlet type = Type.fromValue(entryBuffer.readUInt16LE(i * 12 + 2));\n\t\t\t\tlet count = entryBuffer.readUInt32LE(i * 12 + 4);\n\t\t\t\tlet offsetOrValue = entryBuffer.readUInt32LE(i * 12 + 8);\n\t\t\t\tlet valueBytes = type.bytes * count;\n\n\t\t\t\tlet value;\n\t\t\t\tif(valueBytes <= 4){\n\t\t\t\t\tvalue = offsetOrValue;\n\t\t\t\t}else{\n\t\t\t\t\tlet valueBuffer = new Uint8Array(valueBytes);\n\t\t\t\t\tvalueBuffer.set(data.slice(offsetOrValue, offsetOrValue + valueBytes));\n\t\t\t\t\t\n\t\t\t\t\tlet ArrayType = typeMapping.get(type);\n\n\t\t\t\t\tvalue = new ArrayType(valueBuffer.buffer);\n\n\t\t\t\t\tif(type === Type.ASCII){\n\t\t\t\t\t\tvalue = String.fromCharCode(...value);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet ifd = new IFDEntry(tag, type, count, offsetOrValue, value);\n\n\t\t\t\tifds.push(ifd);\n\t\t\t}\n\n\t\t\tconsole.log(\"nextIFDOffset\", nextIFDOffset);\n\n\t\t\tif(nextIFDOffset === 0){\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcurrentIFDOffset = nextIFDOffset;\n\t\t\ti++;\n\t\t}\n\n\t\tlet ifdForTag = (tag) => {\n\t\t\tfor(let entry of ifds){\n\t\t\t\tif(entry.tag === tag){\n\t\t\t\t\treturn entry;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\n\t\tlet width = ifdForTag(Tag.IMAGE_WIDTH, ifds).value;\n\t\tlet height = ifdForTag(Tag.IMAGE_HEIGHT, ifds).value;\n\t\tlet compression = ifdForTag(Tag.COMPRESSION, ifds).value;\n\t\tlet rowsPerStrip = ifdForTag(Tag.ROWS_PER_STRIP, ifds).value; \n\t\tlet ifdStripOffsets = ifdForTag(Tag.STRIP_OFFSETS, ifds);\n\t\tlet ifdStripByteCounts = ifdForTag(Tag.STRIP_BYTE_COUNTS, ifds);\n\n\t\tlet numStrips = Math.ceil(height / rowsPerStrip);\n\n\t\tlet stripByteCounts = [];\n\t\tfor(let i = 0; i < ifdStripByteCounts.count; i++){\n\t\t\tlet type = ifdStripByteCounts.type;\n\t\t\tlet offset = ifdStripByteCounts.offset + i * type.bytes;\n\n\t\t\tlet value;\n\t\t\tif(type === Type.SHORT){\n\t\t\t\tvalue = data.readUInt16LE(offset);\n\t\t\t}else if(type === Type.LONG){\n\t\t\t\tvalue = data.readUInt32LE(offset);\n\t\t\t}\n\n\t\t\tstripByteCounts.push(value);\n\t\t}\n\n\t\tlet stripOffsets = [];\n\t\tfor(let i = 0; i < ifdStripOffsets.count; i++){\n\t\t\tlet type = ifdStripOffsets.type;\n\t\t\tlet offset = ifdStripOffsets.offset + i * type.bytes;\n\n\t\t\tlet value;\n\t\t\tif(type === Type.SHORT){\n\t\t\t\tvalue = data.readUInt16LE(offset);\n\t\t\t}else if(type === Type.LONG){\n\t\t\t\tvalue = data.readUInt32LE(offset);\n\t\t\t}\n\n\t\t\tstripOffsets.push(value);\n\t\t}\n\n\t\tlet imageBuffer = new Uint8Array(width * height * 3);\n\t\t\n\t\tlet linesProcessed = 0;\n\t\tfor(let i = 0; i < numStrips; i++){\n\t\t\tlet stripOffset = stripOffsets[i];\n\t\t\tlet stripBytes = stripByteCounts[i];\n\t\t\tlet stripData = data.slice(stripOffset, stripOffset + stripBytes);\n\t\t\tlet lineBytes = width * 3;\n\t\t\tfor(let y = 0; y < rowsPerStrip; y++){\n\t\t\t\tlet line = stripData.slice(y * lineBytes, y * lineBytes + lineBytes);\n\t\t\t\timageBuffer.set(line, linesProcessed * lineBytes);\n\t\t\n\t\t\t\tif(line.length === lineBytes){\n\t\t\t\t\tlinesProcessed++;\n\t\t\t\t}else{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(`width: ${width}`);\n\t\tconsole.log(`height: ${height}`);\n\t\tconsole.log(`numStrips: ${numStrips}`);\n\t\tconsole.log(\"stripByteCounts\", stripByteCounts.join(\", \"));\n\t\tconsole.log(\"stripOffsets\", stripOffsets.join(\", \"));\n\n\t\tlet image = new Image();\n\t\timage.width = width;\n\t\timage.height = height;\n\t\timage.buffer = imageBuffer;\n\t\timage.metadata = ifds;\n\n\t\treturn image;\n\t}\n\n}\n\n\nclass Exporter{\n\n\tconstructor(){\n\n\t}\n\n\tstatic toTiffBuffer(image, params = {}){\n\n\t\tlet offsetToFirstIFD = 8;\n\t\t\n\t\tlet headerBuffer = new Uint8Array([0x49, 0x49, 42, 0, offsetToFirstIFD, 0, 0, 0]);\n\n\t\tlet [width, height] = [image.width, image.height];\n\n\t\tlet ifds = [\n\t\t\tnew IFDEntry(Tag.IMAGE_WIDTH, Type.SHORT, 1, null, width),\n\t\t\tnew IFDEntry(Tag.IMAGE_HEIGHT, Type.SHORT, 1, null, height),\n\t\t\tnew IFDEntry(Tag.BITS_PER_SAMPLE, Type.SHORT, 4, null, new Uint16Array([8, 8, 8, 8])),\n\t\t\tnew IFDEntry(Tag.COMPRESSION, Type.SHORT, 1, null, 1),\n\t\t\tnew IFDEntry(Tag.PHOTOMETRIC_INTERPRETATION, Type.SHORT, 1, null, 2),\n\t\t\tnew IFDEntry(Tag.ORIENTATION, Type.SHORT, 1, null, 1),\n\t\t\tnew IFDEntry(Tag.SAMPLES_PER_PIXEL, Type.SHORT, 1, null, 4),\n\t\t\tnew IFDEntry(Tag.ROWS_PER_STRIP, Type.LONG, 1, null, height),\n\t\t\tnew IFDEntry(Tag.STRIP_BYTE_COUNTS, Type.LONG, 1, null, width * height * 3),\n\t\t\tnew IFDEntry(Tag.PLANAR_CONFIGURATION, Type.SHORT, 1, null, 1),\n\t\t\tnew IFDEntry(Tag.RESOLUTION_UNIT, Type.SHORT, 1, null, 1),\n\t\t\tnew IFDEntry(Tag.SOFTWARE, Type.ASCII, 6, null, \"......\"),\n\t\t\tnew IFDEntry(Tag.STRIP_OFFSETS, Type.LONG, 1, null, null),\n\t\t\tnew IFDEntry(Tag.X_RESOLUTION, Type.RATIONAL, 1, null, new Uint32Array([1, 1])),\n\t\t\tnew IFDEntry(Tag.Y_RESOLUTION, Type.RATIONAL, 1, null, new Uint32Array([1, 1])),\n\t\t];\n\n\t\tif(params.ifdEntries){\n\t\t\tifds.push(...params.ifdEntries);\n\t\t}\n\n\t\tlet valueOffset = offsetToFirstIFD + 2 + ifds.length * 12 + 4;\n\n\t\t// create 12 byte buffer for each ifd and variable length buffers for ifd values\n\t\tlet ifdEntryBuffers = new Map();\n\t\tlet ifdValueBuffers = new Map();\n\t\tfor(let ifd of ifds){\n\t\t\tlet entryBuffer = new ArrayBuffer(12);\n\t\t\tlet entryView = new DataView(entryBuffer);\n\n\t\t\tlet valueBytes = ifd.type.bytes * ifd.count;\n\n\t\t\tentryView.setUint16(0, ifd.tag.value, true);\n\t\t\tentryView.setUint16(2, ifd.type.value, true);\n\t\t\tentryView.setUint32(4, ifd.count, true);\n\n\t\t\tif(ifd.count === 1 && ifd.type.bytes <= 4){\n\t\t\t\tentryView.setUint32(8, ifd.value, true);\n\t\t\t}else{\n\t\t\t\tentryView.setUint32(8, valueOffset, true);\n\n\t\t\t\tlet valueBuffer = new Uint8Array(ifd.count * ifd.type.bytes);\n\t\t\t\tif(ifd.type === Type.ASCII){\n\t\t\t\t\tvalueBuffer.set(new Uint8Array(ifd.value.split(\"\").map(c => c.charCodeAt(0))));\n\t\t\t\t}else{\n\t\t\t\t\tvalueBuffer.set(new Uint8Array(ifd.value.buffer));\n\t\t\t\t}\n\t\t\t\tifdValueBuffers.set(ifd.tag, valueBuffer);\n\n\t\t\t\tvalueOffset = valueOffset + valueBuffer.byteLength;\n\t\t\t}\n\n\t\t\tifdEntryBuffers.set(ifd.tag, entryBuffer);\n\t\t}\n\n\t\tlet imageBufferOffset = valueOffset;\n\n\t\tnew DataView(ifdEntryBuffers.get(Tag.STRIP_OFFSETS)).setUint32(8, imageBufferOffset, true);\n\n\t\tlet concatBuffers = (buffers) => {\n\n\t\t\tlet totalLength = buffers.reduce( (sum, buffer) => (sum + buffer.byteLength), 0);\n\t\t\tlet merged = new Uint8Array(totalLength);\n\n\t\t\tlet offset = 0;\n\t\t\tfor(let buffer of buffers){\n\t\t\t\tmerged.set(new Uint8Array(buffer), offset);\n\t\t\t\toffset += buffer.byteLength;\n\t\t\t}\n\n\t\t\treturn merged;\n\t\t};\n\t\t\n\t\tlet ifdBuffer = concatBuffers([\n\t\t\tnew Uint16Array([ifds.length]), \n\t\t\t...ifdEntryBuffers.values(), \n\t\t\tnew Uint32Array([0])]);\n\t\tlet ifdValueBuffer = concatBuffers([...ifdValueBuffers.values()]);\n\n\t\tlet tiffBuffer = concatBuffers([\n\t\t\theaderBuffer,\n\t\t\tifdBuffer,\n\t\t\tifdValueBuffer,\n\t\t\timage.buffer\n\t\t]);\n\n\t\treturn {width: width, height: height, buffer: tiffBuffer};\n\t}\n\n}\n\nexports.Tag = Tag;\nexports.Type = Type;\nexports.IFDEntry = IFDEntry;\nexports.Image = Image;\nexports.Reader = Reader;\nexports.Exporter = Exporter;\n\nreturn exports;\n\n}({}));\n","\nimport {Measure} from \"./Measure.js\";\nimport {Utils} from \"../utils.js\";\nimport {CameraMode} from \"../defines.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\n\nfunction updateAzimuth(viewer, measure){\n\n\tconst azimuth = measure.azimuth;\n\n\tconst isOkay = measure.points.length === 2;\n\n\tazimuth.node.visible = isOkay && measure.showAzimuth;\n\n\tif(!azimuth.node.visible){\n\t\treturn;\n\t}\n\n\tconst camera = viewer.scene.getActiveCamera();\n\tconst renderAreaSize = viewer.renderer.getSize(new THREE.Vector2());\n\tconst width = renderAreaSize.width;\n\tconst height = renderAreaSize.height;\n\t\n\tconst [p0, p1] = measure.points;\n\tconst r = p0.position.distanceTo(p1.position);\n\tconst northVec = Utils.getNorthVec(p0.position, r, viewer.getProjection());\n\tconst northPos = p0.position.clone().add(northVec);\n\n\tazimuth.center.position.copy(p0.position);\n\tazimuth.center.scale.set(2, 2, 2);\n\t\n\tazimuth.center.visible = false;\n\t// azimuth.target.visible = false;\n\n\n\t{ // north\n\t\tazimuth.north.position.copy(northPos);\n\t\tazimuth.north.scale.set(2, 2, 2);\n\n\t\tlet distance = azimuth.north.position.distanceTo(camera.position);\n\t\tlet pr = Utils.projectedRadius(1, camera, distance, width, height);\n\n\t\tlet scale = (5 / pr);\n\t\tazimuth.north.scale.set(scale, scale, scale);\n\t}\n\n\t{ // target\n\t\tazimuth.target.position.copy(p1.position);\n\t\tazimuth.target.position.z = azimuth.north.position.z;\n\n\t\tlet distance = azimuth.target.position.distanceTo(camera.position);\n\t\tlet pr = Utils.projectedRadius(1, camera, distance, width, height);\n\n\t\tlet scale = (5 / pr);\n\t\tazimuth.target.scale.set(scale, scale, scale);\n\t}\n\n\n\tazimuth.circle.position.copy(p0.position);\n\tazimuth.circle.scale.set(r, r, r);\n\tazimuth.circle.material.resolution.set(width, height);\n\n\t// to target\n\tazimuth.centerToTarget.geometry.setPositions([\n\t\t0, 0, 0,\n\t\t...p1.position.clone().sub(p0.position).toArray(),\n\t]);\n\tazimuth.centerToTarget.position.copy(p0.position);\n\tazimuth.centerToTarget.geometry.verticesNeedUpdate = true;\n\tazimuth.centerToTarget.geometry.computeBoundingSphere();\n\tazimuth.centerToTarget.computeLineDistances();\n\tazimuth.centerToTarget.material.resolution.set(width, height);\n\n\t// to target ground\n\tazimuth.centerToTargetground.geometry.setPositions([\n\t\t0, 0, 0,\n\t\tp1.position.x - p0.position.x,\n\t\tp1.position.y - p0.position.y,\n\t\t0,\n\t]);\n\tazimuth.centerToTargetground.position.copy(p0.position);\n\tazimuth.centerToTargetground.geometry.verticesNeedUpdate = true;\n\tazimuth.centerToTargetground.geometry.computeBoundingSphere();\n\tazimuth.centerToTargetground.computeLineDistances();\n\tazimuth.centerToTargetground.material.resolution.set(width, height);\n\n\t// to north\n\tazimuth.centerToNorth.geometry.setPositions([\n\t\t0, 0, 0,\n\t\tnorthPos.x - p0.position.x,\n\t\tnorthPos.y - p0.position.y,\n\t\t0,\n\t]);\n\tazimuth.centerToNorth.position.copy(p0.position);\n\tazimuth.centerToNorth.geometry.verticesNeedUpdate = true;\n\tazimuth.centerToNorth.geometry.computeBoundingSphere();\n\tazimuth.centerToNorth.computeLineDistances();\n\tazimuth.centerToNorth.material.resolution.set(width, height);\n\n\t// label\n\tconst radians = Utils.computeAzimuth(p0.position, p1.position, viewer.getProjection());\n\tlet degrees = THREE.Math.radToDeg(radians);\n\tif(degrees < 0){\n\t\tdegrees = 360 + degrees;\n\t}\n\tconst txtDegrees = `${degrees.toFixed(2)}°`;\n\tconst labelDir = northPos.clone().add(p1.position).multiplyScalar(0.5).sub(p0.position);\n\tif(labelDir.length() > 0){\n\t\tlabelDir.z = 0;\n\t\tlabelDir.normalize();\n\t\tconst labelVec = labelDir.clone().multiplyScalar(r);\n\t\tconst labelPos = p0.position.clone().add(labelVec);\n\t\tazimuth.label.position.copy(labelPos);\n\t}\n\tazimuth.label.setText(txtDegrees);\n\tlet distance = azimuth.label.position.distanceTo(camera.position);\n\tlet pr = Utils.projectedRadius(1, camera, distance, width, height);\n\tlet scale = (70 / pr);\n\tazimuth.label.scale.set(scale, scale, scale);\n}\n\nexport class MeasuringTool extends EventDispatcher{\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.addEventListener('start_inserting_measurement', e => {\n\t\t\tthis.viewer.dispatchEvent({\n\t\t\t\ttype: 'cancel_insertions'\n\t\t\t});\n\t\t});\n\n\t\tthis.showLabels = true;\n\t\tthis.scene = new THREE.Scene();\n\t\tthis.scene.name = 'scene_measurement';\n\t\tthis.light = new THREE.PointLight(0xffffff, 1.0);\n\t\tthis.scene.add(this.light);\n\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\n\n\t\tthis.onRemove = (e) => { this.scene.remove(e.measurement);};\n\t\tthis.onAdd = e => {this.scene.add(e.measurement);};\n\n\t\tfor(let measurement of viewer.scene.measurements){\n\t\t\tthis.onAdd({measurement: measurement});\n\t\t}\n\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\n\t\tviewer.addEventListener(\"render.pass.perspective_overlay\", this.render.bind(this));\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\n\n\t\tviewer.scene.addEventListener('measurement_added', this.onAdd);\n\t\tviewer.scene.addEventListener('measurement_removed', this.onRemove);\n\t}\n\n\tonSceneChange(e){\n\t\tif(e.oldScene){\n\t\t\te.oldScene.removeEventListener('measurement_added', this.onAdd);\n\t\t\te.oldScene.removeEventListener('measurement_removed', this.onRemove);\n\t\t}\n\n\t\te.scene.addEventListener('measurement_added', this.onAdd);\n\t\te.scene.addEventListener('measurement_removed', this.onRemove);\n\t}\n\n\tstartInsertion (args = {}) {\n\t\tlet domElement = this.viewer.renderer.domElement;\n\n\t\tlet measure = new Measure();\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'start_inserting_measurement',\n\t\t\tmeasure: measure\n\t\t});\n\n\t\tconst pick = (defaul, alternative) => {\n\t\t\tif(defaul != null){\n\t\t\t\treturn defaul;\n\t\t\t}else{\n\t\t\t\treturn alternative;\n\t\t\t}\n\t\t};\n\n\t\tmeasure.showDistances = (args.showDistances === null) ? true : args.showDistances;\n\n\t\tmeasure.showArea = pick(args.showArea, false);\n\t\tmeasure.showAngles = pick(args.showAngles, false);\n\t\tmeasure.showCoordinates = pick(args.showCoordinates, false);\n\t\tmeasure.showHeight = pick(args.showHeight, false);\n\t\tmeasure.showCircle = pick(args.showCircle, false);\n\t\tmeasure.showAzimuth = pick(args.showAzimuth, false);\n\t\tmeasure.showEdges = pick(args.showEdges, true);\n\t\tmeasure.closed = pick(args.closed, false);\n\t\tmeasure.maxMarkers = pick(args.maxMarkers, Infinity);\n\n\t\tmeasure.name = args.name || 'Measurement';\n\n\t\tthis.scene.add(measure);\n\n\t\tlet cancel = {\n\t\t\tremoveLastMarker: measure.maxMarkers > 3,\n\t\t\tcallback: null\n\t\t};\n\n\t\tlet insertionCallback = (e) => {\n\t\t\tif (e.button === THREE.MOUSE.LEFT) {\n\t\t\t\tmeasure.addMarker(measure.points[measure.points.length - 1].position.clone());\n\n\t\t\t\tif (measure.points.length >= measure.maxMarkers) {\n\t\t\t\t\tcancel.callback();\n\t\t\t\t}\n\n\t\t\t\tthis.viewer.inputHandler.startDragging(\n\t\t\t\t\tmeasure.spheres[measure.spheres.length - 1]);\n\t\t\t} else if (e.button === THREE.MOUSE.RIGHT) {\n\t\t\t\tcancel.callback();\n\t\t\t}\n\t\t};\n\n\t\tcancel.callback = e => {\n\t\t\tif (cancel.removeLastMarker) {\n\t\t\t\tmeasure.removeMarker(measure.points.length - 1);\n\t\t\t}\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, true);\n\t\t\tthis.viewer.removeEventListener('cancel_insertions', cancel.callback);\n\t\t};\n\n\t\tif (measure.maxMarkers > 1) {\n\t\t\tthis.viewer.addEventListener('cancel_insertions', cancel.callback);\n\t\t\tdomElement.addEventListener('mouseup', insertionCallback, true);\n\t\t}\n\n\t\tmeasure.addMarker(new THREE.Vector3(0, 0, 0));\n\t\tthis.viewer.inputHandler.startDragging(\n\t\t\tmeasure.spheres[measure.spheres.length - 1]);\n\n\t\tthis.viewer.scene.addMeasurement(measure);\n\n\t\treturn measure;\n\t}\n\t\n\tupdate(){\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\tlet domElement = this.renderer.domElement;\n\t\tlet measurements = this.viewer.scene.measurements;\n\n\t\tconst renderAreaSize = this.renderer.getSize(new THREE.Vector2());\n\t\tlet clientWidth = renderAreaSize.width;\n\t\tlet clientHeight = renderAreaSize.height;\n\n\t\tthis.light.position.copy(camera.position);\n\n\t\t// make size independant of distance\n\t\tfor (let measure of measurements) {\n\t\t\tmeasure.lengthUnit = this.viewer.lengthUnit;\n\t\t\tmeasure.lengthUnitDisplay = this.viewer.lengthUnitDisplay;\n\t\t\tmeasure.update();\n\n\t\t\tupdateAzimuth(viewer, measure);\n\n\t\t\t// spheres\n\t\t\tfor(let sphere of measure.spheres){\n\t\t\t\tlet distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3()));\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\t\t\t\tlet scale = (15 / pr);\n\t\t\t\tsphere.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\t// labels\n\t\t\tlet labels = measure.edgeLabels.concat(measure.angleLabels);\n\t\t\tfor(let label of labels){\n\t\t\t\tlet distance = camera.position.distanceTo(label.getWorldPosition(new THREE.Vector3()));\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\t\t\t\tlet scale = (70 / pr);\n\n\t\t\t\tif(Potree.debug.scale){\n\t\t\t\t\tscale = (Potree.debug.scale / pr);\n\t\t\t\t}\n\n\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\t// coordinate labels\n\t\t\tfor (let j = 0; j < measure.coordinateLabels.length; j++) {\n\t\t\t\tlet label = measure.coordinateLabels[j];\n\t\t\t\tlet sphere = measure.spheres[j];\n\n\t\t\t\tlet distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3()));\n\n\t\t\t\tlet screenPos = sphere.getWorldPosition(new THREE.Vector3()).clone().project(camera);\n\t\t\t\tscreenPos.x = Math.round((screenPos.x + 1) * clientWidth / 2);\n\t\t\t\tscreenPos.y = Math.round((-screenPos.y + 1) * clientHeight / 2);\n\t\t\t\tscreenPos.z = 0;\n\t\t\t\tscreenPos.y -= 30;\n\n\t\t\t\tlet labelPos = new THREE.Vector3( \n\t\t\t\t\t(screenPos.x / clientWidth) * 2 - 1, \n\t\t\t\t\t-(screenPos.y / clientHeight) * 2 + 1, \n\t\t\t\t\t0.5 );\n\t\t\t\tlabelPos.unproject(camera);\n\t\t\t\tif(this.viewer.scene.cameraMode == CameraMode.PERSPECTIVE) {\n\t\t\t\t\tlet direction = labelPos.sub(camera.position).normalize();\n\t\t\t\t\tlabelPos = new THREE.Vector3().addVectors(\n\t\t\t\t\t\tcamera.position, direction.multiplyScalar(distance));\n\n\t\t\t\t}\n\t\t\t\tlabel.position.copy(labelPos);\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\t\t\t\tlet scale = (70 / pr);\n\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\t// height label\n\t\t\tif (measure.showHeight) {\n\t\t\t\tlet label = measure.heightLabel;\n\n\t\t\t\t{\n\t\t\t\t\tlet distance = label.position.distanceTo(camera.position);\n\t\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\t\t\t\t\tlet scale = (70 / pr);\n\t\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t\t}\n\n\t\t\t\t{ // height edge\n\t\t\t\t\tlet edge = measure.heightEdge;\n\n\t\t\t\t\tlet sorted = measure.points.slice().sort((a, b) => a.position.z - b.position.z);\n\t\t\t\t\tlet lowPoint = sorted[0].position.clone();\n\t\t\t\t\tlet highPoint = sorted[sorted.length - 1].position.clone();\n\t\t\t\t\tlet min = lowPoint.z;\n\t\t\t\t\tlet max = highPoint.z;\n\n\t\t\t\t\tlet start = new THREE.Vector3(highPoint.x, highPoint.y, min);\n\t\t\t\t\tlet end = new THREE.Vector3(highPoint.x, highPoint.y, max);\n\n\t\t\t\t\tlet lowScreen = lowPoint.clone().project(camera);\n\t\t\t\t\tlet startScreen = start.clone().project(camera);\n\t\t\t\t\tlet endScreen = end.clone().project(camera);\n\n\t\t\t\t\tlet toPixelCoordinates = v => {\n\t\t\t\t\t\tlet r = v.clone().addScalar(1).divideScalar(2);\n\t\t\t\t\t\tr.x = r.x * clientWidth;\n\t\t\t\t\t\tr.y = r.y * clientHeight;\n\t\t\t\t\t\tr.z = 0;\n\n\t\t\t\t\t\treturn r;\n\t\t\t\t\t};\n\n\t\t\t\t\tlet lowEL = toPixelCoordinates(lowScreen);\n\t\t\t\t\tlet startEL = toPixelCoordinates(startScreen);\n\t\t\t\t\tlet endEL = toPixelCoordinates(endScreen);\n\n\t\t\t\t\tlet lToS = lowEL.distanceTo(startEL);\n\t\t\t\t\tlet sToE = startEL.distanceTo(endEL);\n\n\t\t\t\t\tedge.geometry.lineDistances = [0, lToS, lToS, lToS + sToE];\n\t\t\t\t\tedge.geometry.lineDistancesNeedUpdate = true;\n\n\t\t\t\t\tedge.material.dashSize = 10;\n\t\t\t\t\tedge.material.gapSize = 10;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t{ // area label\n\t\t\t\tlet label = measure.areaLabel;\n\t\t\t\tlet distance = label.position.distanceTo(camera.position);\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\n\t\t\t\tlet scale = (70 / pr);\n\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\t{ // radius label\n\t\t\t\tlet label = measure.circleRadiusLabel;\n\t\t\t\tlet distance = label.position.distanceTo(camera.position);\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\n\t\t\t\tlet scale = (70 / pr);\n\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\t{ // edges\n\t\t\t\tconst materials = [\n\t\t\t\t\tmeasure.circleRadiusLine.material,\n\t\t\t\t\t...measure.edges.map( (e) => e.material),\n\t\t\t\t\tmeasure.heightEdge.material,\n\t\t\t\t\tmeasure.circleLine.material,\n\t\t\t\t];\n\n\t\t\t\tfor(const material of materials){\n\t\t\t\t\tmaterial.resolution.set(clientWidth, clientHeight);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!this.showLabels){\n\n\t\t\t\tconst labels = [\n\t\t\t\t\t...measure.sphereLabels, \n\t\t\t\t\t...measure.edgeLabels, \n\t\t\t\t\t...measure.angleLabels, \n\t\t\t\t\t...measure.coordinateLabels,\n\t\t\t\t\tmeasure.heightLabel,\n\t\t\t\t\tmeasure.areaLabel,\n\t\t\t\t\tmeasure.circleRadiusLabel,\n\t\t\t\t];\n\n\t\t\t\tfor(const label of labels){\n\t\t\t\t\tlabel.visible = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\trender(){\n\t\tthis.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\n\t}\n};\n","\nexport class Message{\n\n\tconstructor(content){\n\t\tthis.content = content;\n\n\t\tlet closeIcon = `${exports.resourcePath}/icons/close.svg`;\n\n\t\tthis.element = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t\n\t\t\t
        `);\n\n\t\tthis.elClose = this.element.find(\"img[name=close]\");\n\n\t\tthis.elContainer = this.element.find(\"span[name=content_container]\");\n\n\t\tif(typeof content === \"string\"){\n\t\t\tthis.elContainer.append($(`${content}`));\n\t\t}else{\n\t\t\tthis.elContainer.append(content);\n\t\t}\n\n\t}\n\n\tsetMessage(content){\n\t\tthis.elContainer.empty();\n\t\tif(typeof content === \"string\"){\n\t\t\tthis.elContainer.append($(`${content}`));\n\t\t}else{\n\t\t\tthis.elContainer.append(content);\n\t\t}\n\t}\n\n}","\nexport class PointCloudSM{\n\n\tconstructor(potreeRenderer){\n\n\t\tthis.potreeRenderer = potreeRenderer;\n\t\tthis.threeRenderer = this.potreeRenderer.threeRenderer;\n\n\t\tthis.target = new THREE.WebGLRenderTarget(2 * 1024, 2 * 1024, {\n\t\t\tminFilter: THREE.LinearFilter,\n\t\t\tmagFilter: THREE.LinearFilter,\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\ttype: THREE.FloatType\n\t\t});\n\t\tthis.target.depthTexture = new THREE.DepthTexture();\n\t\tthis.target.depthTexture.type = THREE.UnsignedIntType;\n\n\t\t//this.threeRenderer.setClearColor(0x000000, 1);\n\t\tthis.threeRenderer.setClearColor(0xff0000, 1);\n\n\t\t//HACK? removed while moving to three.js 109\n\t\t//this.threeRenderer.clearTarget(this.target, true, true, true); \n\t\t{\n\t\t\tconst oldTarget = this.threeRenderer.getRenderTarget();\n\n\t\t\tthis.threeRenderer.setRenderTarget(this.target);\n\t\t\tthis.threeRenderer.clear(true, true, true);\n\n\t\t\tthis.threeRenderer.setRenderTarget(oldTarget);\n\t\t}\n\t}\n\n\tsetLight(light){\n\t\tthis.light = light;\n\n\t\tlet fov = (180 * light.angle) / Math.PI;\n\t\tlet aspect = light.shadow.mapSize.width / light.shadow.mapSize.height;\n\t\tlet near = 0.1;\n\t\tlet far = light.distance === 0 ? 10000 : light.distance;\n\t\tthis.camera = new THREE.PerspectiveCamera(fov, aspect, near, far);\n\t\tthis.camera.up.set(0, 0, 1);\n\t\tthis.camera.position.copy(light.position);\n\n\t\tlet target = new THREE.Vector3().subVectors(light.position, light.getWorldDirection(new THREE.Vector3()));\n\t\tthis.camera.lookAt(target);\n\n\t\tthis.camera.updateProjectionMatrix();\n\t\tthis.camera.updateMatrix();\n\t\tthis.camera.updateMatrixWorld();\n\t\tthis.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld);\n\t}\n\n\tsetSize(width, height){\n\t\tif(this.target.width !== width || this.target.height !== height){\n\t\t\tthis.target.dispose();\n\t\t}\n\t\tthis.target.setSize(width, height);\n\t}\n\n\trender(scene, camera){\n\n\t\tthis.threeRenderer.setClearColor(0x000000, 1);\n\t\t\n\t\tconst oldTarget = this.threeRenderer.getRenderTarget();\n\n\t\tthis.threeRenderer.setRenderTarget(this.target);\n\t\tthis.threeRenderer.clear(true, true, true);\n\n\t\tthis.potreeRenderer.render(scene, this.camera, this.target, {});\n\n\t\tthis.threeRenderer.setRenderTarget(oldTarget);\n\t}\n\n\n}","\n\nimport {Profile} from \"./Profile.js\";\nimport {Utils} from \"../utils.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\n\n\nexport class ProfileTool extends EventDispatcher {\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.addEventListener('start_inserting_profile', e => {\n\t\t\tthis.viewer.dispatchEvent({\n\t\t\t\ttype: 'cancel_insertions'\n\t\t\t});\n\t\t});\n\n\t\tthis.scene = new THREE.Scene();\n\t\tthis.scene.name = 'scene_profile';\n\t\tthis.light = new THREE.PointLight(0xffffff, 1.0);\n\t\tthis.scene.add(this.light);\n\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\n\n\t\tthis.onRemove = e => this.scene.remove(e.profile);\n\t\tthis.onAdd = e => this.scene.add(e.profile);\n\n\t\tfor(let profile of viewer.scene.profiles){\n\t\t\tthis.onAdd({profile: profile});\n\t\t}\n\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\n\t\tviewer.addEventListener(\"render.pass.perspective_overlay\", this.render.bind(this));\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\n\n\t\tviewer.scene.addEventListener('profile_added', this.onAdd);\n\t\tviewer.scene.addEventListener('profile_removed', this.onRemove);\n\t}\n\n\tonSceneChange(e){\n\t\tif(e.oldScene){\n\t\t\te.oldScene.removeEventListeners('profile_added', this.onAdd);\n\t\t\te.oldScene.removeEventListeners('profile_removed', this.onRemove);\n\t\t}\n\n\t\te.scene.addEventListener('profile_added', this.onAdd);\n\t\te.scene.addEventListener('profile_removed', this.onRemove);\n\t}\n\n\tstartInsertion (args = {}) {\n\t\tlet domElement = this.viewer.renderer.domElement;\n\n\t\tlet profile = new Profile();\n\t\tprofile.name = args.name || 'Profile';\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'start_inserting_profile',\n\t\t\tprofile: profile\n\t\t});\n\n\t\tthis.scene.add(profile);\n\n\t\tlet cancel = {\n\t\t\tcallback: null\n\t\t};\n\n\t\tlet insertionCallback = (e) => {\n\t\t\tif(e.button === THREE.MOUSE.LEFT){\n\t\t\t\tif(profile.points.length <= 1){\n\t\t\t\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\t\t\t\tlet distance = camera.position.distanceTo(profile.points[0]);\n\t\t\t\t\tlet clientSize = this.viewer.renderer.getSize(new THREE.Vector2());\n\t\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientSize.width, clientSize.height);\n\t\t\t\t\tlet width = (10 / pr);\n\n\t\t\t\t\tprofile.setWidth(width);\n\t\t\t\t}\n\n\t\t\t\tprofile.addMarker(profile.points[profile.points.length - 1].clone());\n\n\t\t\t\tthis.viewer.inputHandler.startDragging(\n\t\t\t\t\tprofile.spheres[profile.spheres.length - 1]);\n\t\t\t} else if (e.button === THREE.MOUSE.RIGHT) {\n\t\t\t\tcancel.callback();\n\t\t\t}\n\t\t};\n\n\t\tcancel.callback = e => {\n\t\t\tprofile.removeMarker(profile.points.length - 1);\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, true);\n\t\t\tthis.viewer.removeEventListener('cancel_insertions', cancel.callback);\n\t\t};\n\n\t\tthis.viewer.addEventListener('cancel_insertions', cancel.callback);\n\t\tdomElement.addEventListener('mouseup', insertionCallback, true);\n\n\t\tprofile.addMarker(new THREE.Vector3(0, 0, 0));\n\t\tthis.viewer.inputHandler.startDragging(\n\t\t\tprofile.spheres[profile.spheres.length - 1]);\n\n\t\tthis.viewer.scene.addProfile(profile);\n\n\t\treturn profile;\n\t}\n\t\n\tupdate(){\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\tlet profiles = this.viewer.scene.profiles;\n\t\tlet renderAreaSize = this.viewer.renderer.getSize(new THREE.Vector2());\n\t\tlet clientWidth = renderAreaSize.width;\n\t\tlet clientHeight = renderAreaSize.height;\n\n\t\tthis.light.position.copy(camera.position);\n\n\t\t// make size independant of distance\n\t\tfor(let profile of profiles){\n\t\t\tfor(let sphere of profile.spheres){\t\t\t\t\n\t\t\t\tlet distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3()));\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\t\t\t\tlet scale = (15 / pr);\n\t\t\t\tsphere.scale.set(scale, scale, scale);\n\t\t\t}\n\t\t}\n\t}\n\n\trender(){\n\t\tthis.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\n\t}\n\n}\n","\n\nimport {BoxVolume} from \"./Volume.js\";\nimport {Utils} from \"../utils.js\";\nimport {PointSizeType} from \"../defines.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\n\n\nexport class ScreenBoxSelectTool extends EventDispatcher{\n\n\tconstructor(viewer){\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.scene = new THREE.Scene();\n\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\n\t\tviewer.addEventListener(\"render.pass.perspective_overlay\", this.render.bind(this));\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\n\t}\n\n\tonSceneChange(scene){\n\t\tconsole.log(\"scene changed\");\n\t}\n\n\tstartInsertion(){\n\t\tlet domElement = this.viewer.renderer.domElement;\n\n\t\tlet volume = new BoxVolume();\n\t\tvolume.position.set(12345, 12345, 12345);\n\t\tvolume.showVolumeLabel = false;\n\t\tvolume.visible = false;\n\t\tvolume.update();\n\t\tthis.viewer.scene.addVolume(volume);\n\n\t\tthis.importance = 10;\n\n\t\tlet selectionBox = $(`
        `);\n\t\t$(domElement.parentElement).append(selectionBox);\n\t\tselectionBox.css(\"right\", \"10px\");\n\t\tselectionBox.css(\"bottom\", \"10px\");\n\n\t\tlet drag = e =>{\n\n\t\t\tvolume.visible = true;\n\n\t\t\tlet mStart = e.drag.start;\n\t\t\tlet mEnd = e.drag.end;\n\n\t\t\tlet box2D = new THREE.Box2();\n\t\t\tbox2D.expandByPoint(mStart);\n\t\t\tbox2D.expandByPoint(mEnd);\n\n\t\t\tselectionBox.css(\"left\", `${box2D.min.x}px`);\n\t\t\tselectionBox.css(\"top\", `${box2D.min.y}px`);\n\t\t\tselectionBox.css(\"width\", `${box2D.max.x - box2D.min.x}px`);\n\t\t\tselectionBox.css(\"height\", `${box2D.max.y - box2D.min.y}px`);\n\n\t\t\tlet camera = e.viewer.scene.getActiveCamera();\n\t\t\tlet size = e.viewer.renderer.getSize(new THREE.Vector2());\n\t\t\tlet frustumSize = new THREE.Vector2(\n\t\t\t\tcamera.right - camera.left, \n\t\t\t\tcamera.top - camera.bottom);\n\n\t\t\tlet screenCentroid = new THREE.Vector2().addVectors(e.drag.end, e.drag.start).multiplyScalar(0.5);\n\t\t\tlet ray = Utils.mouseToRay(screenCentroid, camera, size.width, size.height);\n\n\t\t\tlet diff = new THREE.Vector2().subVectors(e.drag.end, e.drag.start);\n\t\t\tdiff.divide(size).multiply(frustumSize);\n\t\t\t\n\t\t\tvolume.position.copy(ray.origin);\n\t\t\tvolume.up.copy(camera.up);\n\t\t\tvolume.rotation.copy(camera.rotation);\n\t\t\tvolume.scale.set(diff.x, diff.y, 1000 * 100);\n\n\t\t\te.consume();\n\t\t};\n\n\t\tlet drop = e => {\n\t\t\tthis.importance = 0;\n\n\t\t\t$(selectionBox).remove();\n\n\t\t\tthis.viewer.inputHandler.deselectAll();\n\t\t\tthis.viewer.inputHandler.toggleSelection(volume);\n\n\t\t\tlet camera = e.viewer.scene.getActiveCamera();\n\t\t\tlet size = e.viewer.renderer.getSize(new THREE.Vector2());\n\t\t\tlet screenCentroid = new THREE.Vector2().addVectors(e.drag.end, e.drag.start).multiplyScalar(0.5);\n\t\t\tlet ray = Utils.mouseToRay(screenCentroid, camera, size.width, size.height);\n\n\t\t\tlet line = new THREE.Line3(ray.origin, new THREE.Vector3().addVectors(ray.origin, ray.direction));\n\n\t\t\tthis.removeEventListener(\"drag\", drag);\n\t\t\tthis.removeEventListener(\"drop\", drop);\n\n\t\t\tlet allPointsNear = [];\n\t\t\tlet allPointsFar = [];\n\n\t\t\t// TODO support more than one point cloud\n\t\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\n\n\t\t\t\tif(!pointcloud.visible){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet volCam = camera.clone();\n\t\t\t\tvolCam.left = -volume.scale.x / 2; \n\t\t\t\tvolCam.right = +volume.scale.x / 2;\n\t\t\t\tvolCam.top = +volume.scale.y / 2;\n\t\t\t\tvolCam.bottom = -volume.scale.y / 2;\n\t\t\t\tvolCam.near = -volume.scale.z / 2;\n\t\t\t\tvolCam.far = +volume.scale.z / 2;\n\t\t\t\tvolCam.rotation.copy(volume.rotation);\n\t\t\t\tvolCam.position.copy(volume.position);\n\n\t\t\t\tvolCam.updateMatrix();\n\t\t\t\tvolCam.updateMatrixWorld();\n\t\t\t\tvolCam.updateProjectionMatrix();\n\t\t\t\tvolCam.matrixWorldInverse.getInverse(volCam.matrixWorld);\n\n\t\t\t\tlet ray = new THREE.Ray(volCam.getWorldPosition(new THREE.Vector3()), volCam.getWorldDirection(new THREE.Vector3()));\n\t\t\t\tlet rayInverse = new THREE.Ray(\n\t\t\t\t\tray.origin.clone().add(ray.direction.clone().multiplyScalar(volume.scale.z)),\n\t\t\t\t\tray.direction.clone().multiplyScalar(-1));\n\n\t\t\t\tlet pickerSettings = {\n\t\t\t\t\twidth: 8, \n\t\t\t\t\theight: 8, \n\t\t\t\t\tpickWindowSize: 8, \n\t\t\t\t\tall: true,\n\t\t\t\t\tpickClipped: true,\n\t\t\t\t\tpointSizeType: PointSizeType.FIXED,\n\t\t\t\t\tpointSize: 1};\n\t\t\t\tlet pointsNear = pointcloud.pick(viewer, volCam, ray, pickerSettings);\n\n\t\t\t\tvolCam.rotateX(Math.PI);\n\t\t\t\tvolCam.updateMatrix();\n\t\t\t\tvolCam.updateMatrixWorld();\n\t\t\t\tvolCam.updateProjectionMatrix();\n\t\t\t\tvolCam.matrixWorldInverse.getInverse(volCam.matrixWorld);\n\t\t\t\tlet pointsFar = pointcloud.pick(viewer, volCam, rayInverse, pickerSettings);\n\n\t\t\t\tallPointsNear.push(...pointsNear);\n\t\t\t\tallPointsFar.push(...pointsFar);\n\t\t\t}\n\n\t\t\tif(allPointsNear.length > 0 && allPointsFar.length > 0){\n\t\t\t\tlet viewLine = new THREE.Line3(ray.origin, new THREE.Vector3().addVectors(ray.origin, ray.direction));\n\n\t\t\t\tlet closestOnLine = allPointsNear.map(p => viewLine.closestPointToPoint(p.position, false, new THREE.Vector3()));\n\t\t\t\tlet closest = closestOnLine.sort( (a, b) => ray.origin.distanceTo(a) - ray.origin.distanceTo(b))[0];\n\n\t\t\t\tlet farthestOnLine = allPointsFar.map(p => viewLine.closestPointToPoint(p.position, false, new THREE.Vector3()));\n\t\t\t\tlet farthest = farthestOnLine.sort( (a, b) => ray.origin.distanceTo(b) - ray.origin.distanceTo(a))[0];\n\n\t\t\t\tlet distance = closest.distanceTo(farthest);\n\t\t\t\tlet centroid = new THREE.Vector3().addVectors(closest, farthest).multiplyScalar(0.5);\n\t\t\t\tvolume.scale.z = distance * 1.1;\n\t\t\t\tvolume.position.copy(centroid);\n\t\t\t}\n\n\t\t\tvolume.clip = true;\n\t\t};\n\n\t\tthis.addEventListener(\"drag\", drag);\n\t\tthis.addEventListener(\"drop\", drop);\n\n\t\tviewer.inputHandler.addInputListener(this);\n\n\t\treturn volume;\n\t}\n\n\tupdate(e){\n\t\t//console.log(e.delta)\n\t}\n\n\trender(){\n\t\tthis.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\n\t}\n\n}","\nexport class SpotLightHelper extends THREE.Object3D{\n\n\tconstructor(light, color){\n\t\tsuper();\n\n\t\tthis.light = light;\n\t\tthis.color = color;\n\n\t\t//this.up.set(0, 0, 1);\n\t\tthis.updateMatrix();\n\t\tthis.updateMatrixWorld();\n\n\t\t{ // SPHERE\n\t\t\tlet sg = new THREE.SphereGeometry(1, 32, 32);\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\n\t\t\tthis.sphere = new THREE.Mesh(sg, sm);\n\t\t\tthis.sphere.scale.set(0.5, 0.5, 0.5);\n\t\t\tthis.add(this.sphere);\n\t\t}\n\n\t\t{ // LINES\n\t\t\t\n\n\t\t\tlet positions = new Float32Array([\n\t\t\t\t+0, +0, +0, +0, +0, -1,\n\n\t\t\t\t+0, +0, +0, -1, -1, -1,\n\t\t\t\t+0, +0, +0, +1, -1, -1,\n\t\t\t\t+0, +0, +0, +1, +1, -1,\n\t\t\t\t+0, +0, +0, -1, +1, -1,\n\n\t\t\t\t-1, -1, -1, +1, -1, -1,\n\t\t\t\t+1, -1, -1, +1, +1, -1,\n\t\t\t\t+1, +1, -1, -1, +1, -1,\n\t\t\t\t-1, +1, -1, -1, -1, -1,\n\t\t\t]);\n\n\t\t\tlet geometry = new THREE.BufferGeometry();\n\t\t\tgeometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\n\t\t\tlet material = new THREE.LineBasicMaterial();\n\n\t\t\tthis.frustum = new THREE.LineSegments(geometry, material);\n\t\t\tthis.add(this.frustum);\n\n\t\t}\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\n\t\tthis.light.updateMatrix();\n\t\tthis.light.updateMatrixWorld();\n\n\t\tlet position = this.light.position;\n\t\t//let target = new THREE.Vector3().addVectors(\n\t\t//\tlight.position,\n\t\t//\tnew THREE.Vector3().subVectors(light.position, this.light.getWorldDirection(new THREE.Vector3())));\n\t\tlet target = new THREE.Vector3().addVectors(\n\t\t\tlight.position, this.light.getWorldDirection(new THREE.Vector3()).multiplyScalar(-1));\n\t\t\n\t\tlet quat = new THREE.Quaternion().setFromRotationMatrix(\n\t\t\tnew THREE.Matrix4().lookAt( position, target, new THREE.Vector3( 0, 0, 1 ) )\n\t\t);\n\n\t\tthis.setRotationFromQuaternion(quat);\n\t\tthis.position.copy(position);\n\n\n\t\tlet coneLength = (this.light.distance > 0) ? this.light.distance : 1000;\n\t\tlet coneWidth = coneLength * Math.tan( this.light.angle * 0.5 );\n\n\t\tthis.frustum.scale.set(coneWidth, coneWidth, coneLength);\n\t\t\n\n\n\t\t//{\n\t\t//\tlet fov = (180 * light.angle) / Math.PI;\n\t\t//\tlet aspect = light.shadow.mapSize.width / light.shadow.mapSize.height;\n\t\t//\tlet near = 0.1;\n\t\t//\tlet far = light.distance === 0 ? 10000 : light.distance;\n\t\t//\tthis.camera = new THREE.PerspectiveCamera(fov, aspect, near, far);\n\t\t//\tthis.camera.up.set(0, 0, 1);\n\t\t//\tthis.camera.position.copy(light.position);\n\n\t\t//\tlet target = new THREE.Vector3().addVectors(light.position, light.getWorldDirection(new THREE.Vector3()));\n\t\t//\tthis.camera.lookAt(target);\n\n\t\t//\tthis.camera.updateProjectionMatrix();\n\t\t//\tthis.camera.updateMatrix();\n\t\t//\tthis.camera.updateMatrixWorld();\n\t\t//\tthis.camera.matrixWorldInverse.getInverse(this.camera.matrixWorld);\n\t\t//}\n\n\t}\n\n}","\n\nimport {Utils} from \"../utils.js\";\n\nexport class TransformationTool {\n\tconstructor(viewer) {\n\t\tthis.viewer = viewer;\n\n\t\tthis.scene = new THREE.Scene();\n\n\t\tthis.selection = [];\n\t\tthis.pivot = new THREE.Vector3();\n\t\tthis.dragging = false;\n\t\tthis.showPickVolumes = false;\n\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\n\t\tthis.viewer.inputHandler.addEventListener('selection_changed', (e) => {\n\t\t\tfor(let selected of this.selection){\n\t\t\t\tthis.viewer.inputHandler.blacklist.delete(selected);\n\t\t\t}\n\n\t\t\tthis.selection = e.selection;\n\n\t\t\tfor(let selected of this.selection){\n\t\t\t\tthis.viewer.inputHandler.blacklist.add(selected);\n\t\t\t}\n\n\t\t});\n\n\t\tlet red = 0xE73100;\n\t\tlet green = 0x44A24A;\n\t\tlet blue = 0x2669E7;\n\t\t\n\t\tthis.activeHandle = null;\n\t\tthis.scaleHandles = {\n\t\t\t\"scale.x+\": {name: \"scale.x+\", node: new THREE.Object3D(), color: red, alignment: [+1, +0, +0]},\n\t\t\t\"scale.x-\": {name: \"scale.x-\", node: new THREE.Object3D(), color: red, alignment: [-1, +0, +0]},\n\t\t\t\"scale.y+\": {name: \"scale.y+\", node: new THREE.Object3D(), color: green, alignment: [+0, +1, +0]},\n\t\t\t\"scale.y-\": {name: \"scale.y-\", node: new THREE.Object3D(), color: green, alignment: [+0, -1, +0]},\n\t\t\t\"scale.z+\": {name: \"scale.z+\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, +1]},\n\t\t\t\"scale.z-\": {name: \"scale.z-\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, -1]},\n\t\t};\n\t\tthis.focusHandles = {\n\t\t\t\"focus.x+\": {name: \"focus.x+\", node: new THREE.Object3D(), color: red, alignment: [+1, +0, +0]},\n\t\t\t\"focus.x-\": {name: \"focus.x-\", node: new THREE.Object3D(), color: red, alignment: [-1, +0, +0]},\n\t\t\t\"focus.y+\": {name: \"focus.y+\", node: new THREE.Object3D(), color: green, alignment: [+0, +1, +0]},\n\t\t\t\"focus.y-\": {name: \"focus.y-\", node: new THREE.Object3D(), color: green, alignment: [+0, -1, +0]},\n\t\t\t\"focus.z+\": {name: \"focus.z+\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, +1]},\n\t\t\t\"focus.z-\": {name: \"focus.z-\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, -1]},\n\t\t};\n\t\tthis.translationHandles = {\n\t\t\t\"translation.x\": {name: \"translation.x\", node: new THREE.Object3D(), color: red, alignment: [1, 0, 0]},\n\t\t\t\"translation.y\": {name: \"translation.y\", node: new THREE.Object3D(), color: green, alignment: [0, 1, 0]},\n\t\t\t\"translation.z\": {name: \"translation.z\", node: new THREE.Object3D(), color: blue, alignment: [0, 0, 1]},\n\t\t};\n\t\tthis.rotationHandles = {\n\t\t\t\"rotation.x\": {name: \"rotation.x\", node: new THREE.Object3D(), color: red, alignment: [1, 0, 0]},\n\t\t\t\"rotation.y\": {name: \"rotation.y\", node: new THREE.Object3D(), color: green, alignment: [0, 1, 0]},\n\t\t\t\"rotation.z\": {name: \"rotation.z\", node: new THREE.Object3D(), color: blue, alignment: [0, 0, 1]},\n\t\t};\n\t\tthis.handles = Object.assign({}, this.scaleHandles, this.focusHandles, this.translationHandles, this.rotationHandles);\n\t\tthis.pickVolumes = [];\n\n\t\tthis.initializeScaleHandles();\n\t\tthis.initializeFocusHandles();\n\t\tthis.initializeTranslationHandles();\n\t\tthis.initializeRotationHandles();\n\n\n\t\tlet boxFrameGeometry = new THREE.Geometry();\n\t\t{\n\t\t\t// bottom\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\t// top\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\t// sides\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\n\t\t}\n\t\tthis.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0xffff00}));\n\t\tthis.scene.add(this.frame);\n\n\t\t\n\t}\n\n\tinitializeScaleHandles(){\n\t\tlet sgSphere = new THREE.SphereGeometry(1, 32, 32);\n\t\tlet sgLowPolySphere = new THREE.SphereGeometry(1, 16, 16);\n\n\t\tfor(let handleName of Object.keys(this.scaleHandles)){\n\t\t\tlet handle = this.scaleHandles[handleName];\n\t\t\tlet node = handle.node;\n\t\t\tthis.scene.add(node);\n\t\t\tnode.position.set(...handle.alignment).multiplyScalar(0.5);\n\n\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: handle.color,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true\n\t\t\t\t});\n\n\t\t\tlet outlineMaterial = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: 0x000000, \n\t\t\t\tside: THREE.BackSide,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true});\n\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\n\t\t\t\topacity: 0.2,\n\t\t\t\ttransparent: true,\n\t\t\t\tvisible: this.showPickVolumes});\n\n\t\t\tlet sphere = new THREE.Mesh(sgSphere, material);\n\t\t\tsphere.scale.set(1.3, 1.3, 1.3);\n\t\t\tsphere.name = `${handleName}.handle`;\n\t\t\tnode.add(sphere);\n\t\t\t\n\t\t\tlet outline = new THREE.Mesh(sgSphere, outlineMaterial);\n\t\t\toutline.scale.set(1.4, 1.4, 1.4);\n\t\t\toutline.name = `${handleName}.outline`;\n\t\t\tsphere.add(outline);\n\n\t\t\tlet pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial);\n\t\t\tpickSphere.name = `${handleName}.pick_volume`;\n\t\t\tpickSphere.scale.set(3, 3, 3);\n\t\t\tsphere.add(pickSphere);\n\t\t\tpickSphere.handle = handleName;\n\t\t\tthis.pickVolumes.push(pickSphere);\n\n\t\t\tnode.setOpacity = (target) => {\n\t\t\t\tlet opacity = {x: material.opacity};\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\n\t\t\t\tt.onUpdate(() => {\n\t\t\t\t\tsphere.visible = opacity.x > 0;\n\t\t\t\t\tpickSphere.visible = opacity.x > 0;\n\t\t\t\t\tmaterial.opacity = opacity.x;\n\t\t\t\t\toutlineMaterial.opacity = opacity.x;\n\t\t\t\t\tpickSphere.material.opacity = opacity.x * 0.5;\n\t\t\t\t});\n\t\t\t\tt.start();\n\t\t\t};\n\n\t\t\tpickSphere.addEventListener(\"drag\", (e) => this.dragScaleHandle(e));\n\t\t\tpickSphere.addEventListener(\"drop\", (e) => this.dropScaleHandle(e));\n\n\t\t\tpickSphere.addEventListener(\"mouseover\", e => {\n\t\t\t\t//node.setOpacity(1);\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"click\", e => {\n\t\t\t\te.consume();\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"mouseleave\", e => {\n\t\t\t\t//node.setOpacity(0.4);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeFocusHandles(){\n\t\t//let sgBox = new THREE.BoxGeometry(1, 1, 1);\n\t\tlet sgPlane = new THREE.PlaneGeometry(4, 4, 1, 1);\n\t\tlet sgLowPolySphere = new THREE.SphereGeometry(1, 16, 16);\n\n\t\tlet texture = new THREE.TextureLoader().load(`${exports.resourcePath}/icons/eye_2.png`);\n\n\t\tfor(let handleName of Object.keys(this.focusHandles)){\n\t\t\tlet handle = this.focusHandles[handleName];\n\t\t\tlet node = handle.node;\n\t\t\tthis.scene.add(node);\n\t\t\tlet align = handle.alignment;\n\n\t\t\t//node.lookAt(new THREE.Vector3().addVectors(node.position, new THREE.Vector3(...align)));\n\t\t\tnode.lookAt(new THREE.Vector3(...align));\n\n\t\t\tlet off = 0.8;\n\t\t\tif(align[0] === 1){\n\t\t\t\tnode.position.set(1, off, -off).multiplyScalar(0.5);\n\t\t\t\tnode.rotation.z = Math.PI / 2;\n\t\t\t}else if(align[0] === -1){\n\t\t\t\tnode.position.set(-1, -off, -off).multiplyScalar(0.5);\n\t\t\t\tnode.rotation.z = Math.PI / 2;\n\t\t\t}else if(align[1] === 1){\n\t\t\t\tnode.position.set(-off, 1, -off).multiplyScalar(0.5);\n\t\t\t\tnode.rotation.set(Math.PI / 2, Math.PI, 0.0);\n\t\t\t}else if(align[1] === -1){\n\t\t\t\tnode.position.set(off, -1, -off).multiplyScalar(0.5);\n\t\t\t\tnode.rotation.set(Math.PI / 2, 0.0, 0.0);\n\t\t\t}else if(align[2] === 1){\n\t\t\t\tnode.position.set(off, off, 1).multiplyScalar(0.5);\n\t\t\t}else if(align[2] === -1){\n\t\t\t\tnode.position.set(-off, off, -1).multiplyScalar(0.5);\n\t\t\t}\n\n\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: handle.color,\n\t\t\t\topacity: 0,\n\t\t\t\ttransparent: true,\n\t\t\t\tmap: texture\n\t\t\t});\n\n\t\t\t//let outlineMaterial = new THREE.MeshBasicMaterial({\n\t\t\t//\tcolor: 0x000000, \n\t\t\t//\tside: THREE.BackSide,\n\t\t\t//\topacity: 0,\n\t\t\t//\ttransparent: true});\n\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\n\t\t\t\t//opacity: 0,\n\t\t\t\ttransparent: true,\n\t\t\t\tvisible: this.showPickVolumes});\n\n\t\t\tlet box = new THREE.Mesh(sgPlane, material);\n\t\t\tbox.name = `${handleName}.handle`;\n\t\t\tbox.scale.set(1.5, 1.5, 1.5);\n\t\t\tbox.position.set(0, 0, 0);\n\t\t\tbox.visible = false;\n\t\t\tnode.add(box);\n\t\t\t//handle.focusNode = box;\n\t\t\t\n\t\t\t//let outline = new THREE.Mesh(sgPlane, outlineMaterial);\n\t\t\t//outline.scale.set(1.4, 1.4, 1.4);\n\t\t\t//outline.name = `${handleName}.outline`;\n\t\t\t//box.add(outline);\n\n\t\t\tlet pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial);\n\t\t\tpickSphere.name = `${handleName}.pick_volume`;\n\t\t\tpickSphere.scale.set(3, 3, 3);\n\t\t\tbox.add(pickSphere);\n\t\t\tpickSphere.handle = handleName;\n\t\t\tthis.pickVolumes.push(pickSphere);\n\n\t\t\tnode.setOpacity = (target) => {\n\t\t\t\tlet opacity = {x: material.opacity};\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\n\t\t\t\tt.onUpdate(() => {\n\t\t\t\t\tpickSphere.visible = opacity.x > 0;\n\t\t\t\t\tbox.visible = opacity.x > 0;\n\t\t\t\t\tmaterial.opacity = opacity.x;\n\t\t\t\t\t//outlineMaterial.opacity = opacity.x;\n\t\t\t\t\tpickSphere.material.opacity = opacity.x * 0.5;\n\t\t\t\t});\n\t\t\t\tt.start();\n\t\t\t};\n\n\t\t\tpickSphere.addEventListener(\"drag\", e => {});\n\n\t\t\tpickSphere.addEventListener(\"mouseup\", e => {\n\t\t\t\te.consume();\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"mousedown\", e => {\n\t\t\t\te.consume();\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"click\", e => {\n\t\t\t\te.consume();\n\n\t\t\t\tlet selected = this.selection[0];\n\t\t\t\tlet maxScale = Math.max(...selected.scale.toArray());\n\t\t\t\tlet minScale = Math.min(...selected.scale.toArray());\n\t\t\t\tlet handleLength = Math.abs(selected.scale.dot(new THREE.Vector3(...handle.alignment)));\n\t\t\t\tlet alignment = new THREE.Vector3(...handle.alignment).multiplyScalar(2 * maxScale / handleLength);\n\t\t\t\talignment.applyMatrix4(selected.matrixWorld);\n\t\t\t\tlet newCamPos = alignment;\n\t\t\t\tlet newCamTarget = selected.getWorldPosition(new THREE.Vector3());\n\n\t\t\t\tUtils.moveTo(this.viewer.scene, newCamPos, newCamTarget);\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"mouseover\", e => {\n\t\t\t\t//box.setOpacity(1);\n\t\t\t});\n\n\t\t\tpickSphere.addEventListener(\"mouseleave\", e => {\n\t\t\t\t//box.setOpacity(0.4);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeTranslationHandles(){\n\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\n\n\t\tfor(let handleName of Object.keys(this.translationHandles)){\n\t\t\tlet handle = this.handles[handleName];\n\t\t\tlet node = handle.node;\n\t\t\tthis.scene.add(node);\n\n\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: handle.color,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true});\n\n\t\t\tlet outlineMaterial = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: 0x000000, \n\t\t\t\tside: THREE.BackSide,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true});\n\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\n\t\t\t\topacity: 0.2,\n\t\t\t\ttransparent: true,\n\t\t\t\tvisible: this.showPickVolumes\n\t\t\t});\n\n\t\t\tlet box = new THREE.Mesh(boxGeometry, material);\n\t\t\tbox.name = `${handleName}.handle`;\n\t\t\tbox.scale.set(0.2, 0.2, 40);\n\t\t\tbox.lookAt(new THREE.Vector3(...handle.alignment));\n\t\t\tbox.renderOrder = 10;\n\t\t\tnode.add(box);\n\t\t\thandle.translateNode = box;\n\n\t\t\tlet outline = new THREE.Mesh(boxGeometry, outlineMaterial);\n\t\t\toutline.name = `${handleName}.outline`;\n\t\t\toutline.scale.set(3, 3, 1.03);\n\t\t\toutline.renderOrder = 0;\n\t\t\tbox.add(outline);\n\n\t\t\tlet pickVolume = new THREE.Mesh(boxGeometry, pickMaterial);\n\t\t\tpickVolume.name = `${handleName}.pick_volume`;\n\t\t\tpickVolume.scale.set(12, 12, 1.1);\n\t\t\tpickVolume.handle = handleName;\n\t\t\tbox.add(pickVolume);\n\t\t\tthis.pickVolumes.push(pickVolume);\n\n\t\t\tnode.setOpacity = (target) => {\n\t\t\t\tlet opacity = {x: material.opacity};\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\n\t\t\t\tt.onUpdate(() => {\n\t\t\t\t\tbox.visible = opacity.x > 0;\n\t\t\t\t\tpickVolume.visible = opacity.x > 0;\n\t\t\t\t\tmaterial.opacity = opacity.x;\n\t\t\t\t\toutlineMaterial.opacity = opacity.x;\n\t\t\t\t\tpickMaterial.opacity = opacity.x * 0.5;\n\t\t\t\t});\n\t\t\t\tt.start();\n\t\t\t};\n\n\t\t\tpickVolume.addEventListener(\"drag\", (e) => {this.dragTranslationHandle(e)});\n\t\t\tpickVolume.addEventListener(\"drop\", (e) => {this.dropTranslationHandle(e)});\n\t\t}\n\t}\n\n\tinitializeRotationHandles(){\n\t\tlet adjust = 0.5;\n\t\tlet torusGeometry = new THREE.TorusGeometry(1, adjust * 0.015, 8, 64, Math.PI / 2);\n\t\tlet outlineGeometry = new THREE.TorusGeometry(1, adjust * 0.04, 8, 64, Math.PI / 2);\n\t\tlet pickGeometry = new THREE.TorusGeometry(1, adjust * 0.1, 6, 4, Math.PI / 2);\n\n\t\tfor(let handleName of Object.keys(this.rotationHandles)){\n\t\t\tlet handle = this.handles[handleName];\n\t\t\tlet node = handle.node;\n\t\t\tthis.scene.add(node);\n\n\t\t\tlet material = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: handle.color,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true});\n\n\t\t\tlet outlineMaterial = new THREE.MeshBasicMaterial({\n\t\t\t\tcolor: 0x000000, \n\t\t\t\tside: THREE.BackSide,\n\t\t\t\topacity: 0.4,\n\t\t\t\ttransparent: true});\n\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\n\t\t\t\topacity: 0.2,\n\t\t\t\ttransparent: true,\n\t\t\t\tvisible: this.showPickVolumes\n\t\t\t});\n\n\t\t\tlet box = new THREE.Mesh(torusGeometry, material);\n\t\t\tbox.name = `${handleName}.handle`;\n\t\t\tbox.scale.set(20, 20, 20);\n\t\t\tbox.lookAt(new THREE.Vector3(...handle.alignment));\n\t\t\tnode.add(box);\n\t\t\thandle.translateNode = box;\n\n\t\t\tlet outline = new THREE.Mesh(outlineGeometry, outlineMaterial);\n\t\t\toutline.name = `${handleName}.outline`;\n\t\t\toutline.scale.set(1, 1, 1);\n\t\t\toutline.renderOrder = 0;\n\t\t\tbox.add(outline);\n\n\t\t\tlet pickVolume = new THREE.Mesh(pickGeometry, pickMaterial);\n\t\t\tpickVolume.name = `${handleName}.pick_volume`;\n\t\t\tpickVolume.scale.set(1, 1, 1);\n\t\t\tpickVolume.handle = handleName;\n\t\t\tbox.add(pickVolume);\n\t\t\tthis.pickVolumes.push(pickVolume);\n\n\t\t\tnode.setOpacity = (target) => {\n\t\t\t\tlet opacity = {x: material.opacity};\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\n\t\t\t\tt.onUpdate(() => {\n\t\t\t\t\tbox.visible = opacity.x > 0;\n\t\t\t\t\tpickVolume.visible = opacity.x > 0;\n\t\t\t\t\tmaterial.opacity = opacity.x;\n\t\t\t\t\toutlineMaterial.opacity = opacity.x;\n\t\t\t\t\tpickMaterial.opacity = opacity.x * 0.5;\n\t\t\t\t});\n\t\t\t\tt.start();\n\t\t\t};\n\n\n\t\t\t//pickVolume.addEventListener(\"mouseover\", (e) => {\n\t\t\t//\t//let a = this.viewer.scene.getActiveCamera().getWorldDirection(new THREE.Vector3()).dot(pickVolume.getWorldDirection(new THREE.Vector3()));\n\t\t\t//\tconsole.log(pickVolume.getWorldDirection(new THREE.Vector3()));\n\t\t\t//});\n\t\t\t\n\t\t\tpickVolume.addEventListener(\"drag\", (e) => {this.dragRotationHandle(e)});\n\t\t\tpickVolume.addEventListener(\"drop\", (e) => {this.dropRotationHandle(e)});\n\t\t}\n\t}\n\n\tdragRotationHandle(e){\n\t\tlet drag = e.drag;\n\t\tlet handle = this.activeHandle;\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\n\t\tif(!handle){\n\t\t\treturn\n\t\t};\n\n\t\tlet localNormal = new THREE.Vector3(...handle.alignment);\n\t\tlet n = new THREE.Vector3();\n\t\tn.copy(new THREE.Vector4(...localNormal.toArray(), 0).applyMatrix4(handle.node.matrixWorld));\n\t\tn.normalize();\n\n\t\tif (!drag.intersectionStart){\n\n\t\t\t//this.viewer.scene.scene.remove(this.debug);\n\t\t\t//this.debug = new THREE.Object3D();\n\t\t\t//this.viewer.scene.scene.add(this.debug);\n\t\t\t//Utils.debugSphere(this.debug, drag.location, 3, 0xaaaaaa);\n\t\t\t//let debugEnd = drag.location.clone().add(n.clone().multiplyScalar(20));\n\t\t\t//Utils.debugLine(this.debug, drag.location, debugEnd, 0xff0000);\n\n\t\t\tdrag.intersectionStart = drag.location;\n\t\t\tdrag.objectStart = drag.object.getWorldPosition(new THREE.Vector3());\n\t\t\tdrag.handle = handle;\n\n\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(n, drag.intersectionStart);\n\n\t\t\tdrag.dragPlane = plane;\n\t\t\tdrag.pivot = drag.intersectionStart;\n\t\t}else{\n\t\t\thandle = drag.handle;\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tlet mouse = drag.end;\n\t\tlet domElement = this.viewer.renderer.domElement;\n\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\t\t\n\t\tlet I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3());\n\n\t\tif (I) {\n\t\t\tlet center = this.scene.getWorldPosition(new THREE.Vector3());\n\t\t\tlet from = drag.pivot;\n\t\t\tlet to = I;\n\n\t\t\tlet v1 = from.clone().sub(center).normalize();\n\t\t\tlet v2 = to.clone().sub(center).normalize();\n\n\t\t\tlet angle = Math.acos(v1.dot(v2));\n\t\t\tlet sign = Math.sign(v1.cross(v2).dot(n));\n\t\t\tangle = angle * sign;\n\t\t\tif (Number.isNaN(angle)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet normal = new THREE.Vector3(...handle.alignment);\n\t\t\tfor (let selection of this.selection) {\n\t\t\t\tselection.rotateOnAxis(normal, angle);\n\t\t\t\tselection.dispatchEvent({\n\t\t\t\t\ttype: \"orientation_changed\",\n\t\t\t\t\tobject: selection\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdrag.pivot = I;\n\t\t}\n\t}\n\n\tdropRotationHandle(e){\n\t\tthis.dragging = false;\n\t\tthis.setActiveHandle(null);\n\t}\n\n\tdragTranslationHandle(e){\n\t\tlet drag = e.drag;\n\t\tlet handle = this.activeHandle;\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\t\t\n\t\tif(!drag.intersectionStart && handle){\n\t\t\tdrag.intersectionStart = drag.location;\n\t\t\tdrag.objectStart = drag.object.getWorldPosition(new THREE.Vector3());\n\n\t\t\tlet start = drag.intersectionStart;\n\t\t\tlet dir = new THREE.Vector4(...handle.alignment, 0).applyMatrix4(this.scene.matrixWorld);\n\t\t\tlet end = new THREE.Vector3().addVectors(start, dir);\n\t\t\tlet line = new THREE.Line3(start.clone(), end.clone());\n\t\t\tdrag.line = line;\n\n\t\t\tlet camOnLine = line.closestPointToPoint(camera.position, false, new THREE.Vector3());\n\t\t\tlet normal = new THREE.Vector3().subVectors(camera.position, camOnLine);\n\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(normal, drag.intersectionStart);\n\t\t\tdrag.dragPlane = plane;\n\t\t\tdrag.pivot = drag.intersectionStart;\n\t\t}else{\n\t\t\thandle = drag.handle;\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\t{\n\t\t\tlet mouse = drag.end;\n\t\t\tlet domElement = this.viewer.renderer.domElement;\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\t\t\tlet I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3());\n\n\t\t\tif (I) {\n\t\t\t\tlet iOnLine = drag.line.closestPointToPoint(I, false, new THREE.Vector3());\n\n\t\t\t\tlet diff = new THREE.Vector3().subVectors(iOnLine, drag.pivot);\n\n\t\t\t\tfor (let selection of this.selection) {\n\t\t\t\t\tselection.position.add(diff);\n\t\t\t\t\tselection.dispatchEvent({\n\t\t\t\t\t\ttype: \"position_changed\",\n\t\t\t\t\t\tobject: selection\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tdrag.pivot = drag.pivot.add(diff);\n\t\t\t}\n\t\t}\n\t}\n\n\tdropTranslationHandle(e){\n\t\tthis.dragging = false;\n\t\tthis.setActiveHandle(null);\n\t}\n\n\tdropScaleHandle(e){\n\t\tthis.dragging = false;\n\t\tthis.setActiveHandle(null);\n\t}\n\n\tdragScaleHandle(e){\n\t\tlet drag = e.drag;\n\t\tlet handle = this.activeHandle;\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\n\t\tif(!drag.intersectionStart){\n\t\t\tdrag.intersectionStart = drag.location;\n\t\t\tdrag.objectStart = drag.object.getWorldPosition(new THREE.Vector3());\n\t\t\tdrag.handle = handle;\n\n\t\t\tlet start = drag.intersectionStart;\n\t\t\tlet dir = new THREE.Vector4(...handle.alignment, 0).applyMatrix4(this.scene.matrixWorld);\n\t\t\tlet end = new THREE.Vector3().addVectors(start, dir);\n\t\t\tlet line = new THREE.Line3(start.clone(), end.clone());\n\t\t\tdrag.line = line;\n\n\t\t\tlet camOnLine = line.closestPointToPoint(camera.position, false, new THREE.Vector3());\n\t\t\tlet normal = new THREE.Vector3().subVectors(camera.position, camOnLine);\n\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(normal, drag.intersectionStart);\n\t\t\tdrag.dragPlane = plane;\n\t\t\tdrag.pivot = drag.intersectionStart;\n\n\t\t\t//Utils.debugSphere(viewer.scene.scene, drag.pivot, 0.05);\n\t\t}else{\n\t\t\thandle = drag.handle;\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\t{\n\t\t\tlet mouse = drag.end;\n\t\t\tlet domElement = this.viewer.renderer.domElement;\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\t\t\tlet I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3());\n\n\t\t\tif (I) {\n\t\t\t\tlet iOnLine = drag.line.closestPointToPoint(I, false, new THREE.Vector3());\n\t\t\t\tlet direction = handle.alignment.reduce( (a, v) => a + v, 0);\n\n\t\t\t\tlet toObjectSpace = new THREE.Matrix4().getInverse( this.selection[0].matrixWorld);\n\t\t\t\tlet iOnLineOS = iOnLine.clone().applyMatrix4(toObjectSpace);\n\t\t\t\tlet pivotOS = drag.pivot.clone().applyMatrix4(toObjectSpace);\n\t\t\t\tlet diffOS = new THREE.Vector3().subVectors(iOnLineOS, pivotOS);\n\t\t\t\tlet dragDirectionOS = diffOS.clone().normalize();\n\t\t\t\tif(iOnLine.distanceTo(drag.pivot) === 0){\n\t\t\t\t\tdragDirectionOS.set(0, 0, 0);\n\t\t\t\t}\n\t\t\t\tlet dragDirection = dragDirectionOS.dot(new THREE.Vector3(...handle.alignment));\n\n\t\t\t\tlet diff = new THREE.Vector3().subVectors(iOnLine, drag.pivot);\n\t\t\t\tlet diffScale = new THREE.Vector3(...handle.alignment).multiplyScalar(diff.length() * direction * dragDirection);\n\t\t\t\tlet diffPosition = diff.clone().multiplyScalar(0.5);\n\n\t\t\t\tfor (let selection of this.selection) {\n\t\t\t\t\tselection.scale.add(diffScale);\n\t\t\t\t\tselection.scale.x = Math.max(0.1, selection.scale.x);\n\t\t\t\t\tselection.scale.y = Math.max(0.1, selection.scale.y);\n\t\t\t\t\tselection.scale.z = Math.max(0.1, selection.scale.z);\n\t\t\t\t\tselection.position.add(diffPosition);\n\t\t\t\t\tselection.dispatchEvent({\n\t\t\t\t\t\ttype: \"position_changed\",\n\t\t\t\t\t\tobject: selection\n\t\t\t\t\t});\n\t\t\t\t\tselection.dispatchEvent({\n\t\t\t\t\t\ttype: \"scale_changed\",\n\t\t\t\t\t\tobject: selection\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tdrag.pivot.copy(iOnLine);\n\t\t\t\t//Utils.debugSphere(viewer.scene.scene, drag.pivot, 0.05);\n\t\t\t}\n\t\t}\n\t}\n\n\tsetActiveHandle(handle){\n\t\tif(this.dragging){\n\t\t\treturn;\n\t\t}\n\n\t\tif(this.activeHandle === handle){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.activeHandle = handle;\n\n\t\tif(handle === null){\n\t\t\tfor(let handleName of Object.keys(this.handles)){\n\t\t\t\tlet handle = this.handles[handleName];\n\t\t\t\thandle.node.setOpacity(0);\n\t\t\t}\n\t\t}\n\n\t\tfor(let handleName of Object.keys(this.focusHandles)){\n\t\t\tlet handle = this.focusHandles[handleName];\n\n\t\t\tif(this.activeHandle === handle){\n\t\t\t\thandle.node.setOpacity(1.0);\n\t\t\t}else{\n\t\t\t\thandle.node.setOpacity(0.4)\n\t\t\t}\n\t\t}\n\n\t\tfor(let handleName of Object.keys(this.translationHandles)){\n\t\t\tlet handle = this.translationHandles[handleName];\n\n\t\t\tif(this.activeHandle === handle){\n\t\t\t\thandle.node.setOpacity(1.0);\n\t\t\t}else{\n\t\t\t\thandle.node.setOpacity(0.4)\n\t\t\t}\n\t\t}\n\n\t\tfor(let handleName of Object.keys(this.rotationHandles)){\n\t\t\tlet handle = this.rotationHandles[handleName];\n\n\t\t\t//if(this.activeHandle === handle){\n\t\t\t//\thandle.node.setOpacity(1.0);\n\t\t\t//}else{\n\t\t\t//\thandle.node.setOpacity(0.4)\n\t\t\t//}\n\n\t\t\thandle.node.setOpacity(0.4);\n\t\t}\n\n\t\tfor(let handleName of Object.keys(this.scaleHandles)){\n\t\t\tlet handle = this.scaleHandles[handleName];\n\n\t\t\tif(this.activeHandle === handle){\n\t\t\t\thandle.node.setOpacity(1.0);\n\n\t\t\t\tlet relatedFocusHandle = this.focusHandles[handle.name.replace(\"scale\", \"focus\")];\n\t\t\t\tlet relatedFocusNode = relatedFocusHandle.node;\n\t\t\t\trelatedFocusNode.setOpacity(0.4);\n\n\t\t\t\tfor(let translationHandleName of Object.keys(this.translationHandles)){\n\t\t\t\t\tlet translationHandle = this.translationHandles[translationHandleName];\n\t\t\t\t\ttranslationHandle.node.setOpacity(0.4);\n\t\t\t\t}\n\n\t\t\t\t//let relatedTranslationHandle = this.translationHandles[\n\t\t\t\t//\thandle.name.replace(\"scale\", \"translation\").replace(/[+-]/g, \"\")];\n\t\t\t\t//let relatedTranslationNode = relatedTranslationHandle.node;\n\t\t\t\t//relatedTranslationNode.setOpacity(0.4);\n\n\n\t\t\t}else{\n\t\t\t\thandle.node.setOpacity(0.4)\n\t\t\t}\n\t\t}\n\n\t\t\n\n\n\n\t\tif(handle){\n\t\t\thandle.node.setOpacity(1.0);\n\t\t}\n\n\t\t\n\t}\n\n\tupdate () {\n\n\t\tif(this.selection.length === 1){\n\n\t\t\tthis.scene.visible = true;\n\n\t\t\tthis.scene.updateMatrix();\n\t\t\tthis.scene.updateMatrixWorld();\n\n\t\t\tlet selected = this.selection[0];\n\t\t\tlet world = selected.matrixWorld;\n\t\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\t\tlet domElement = this.viewer.renderer.domElement;\n\t\t\tlet mouse = this.viewer.inputHandler.mouse;\n\n\t\t\tlet center = selected.boundingBox.getCenter(new THREE.Vector3()).clone().applyMatrix4(selected.matrixWorld);\n\n\t\t\tthis.scene.scale.copy(selected.boundingBox.getSize(new THREE.Vector3()).multiply(selected.scale));\n\t\t\tthis.scene.position.copy(center);\n\t\t\tthis.scene.rotation.copy(selected.rotation);\n\n\t\t\tthis.scene.updateMatrixWorld();\n\n\t\t\t{\n\t\t\t\t// adjust scale of components\n\t\t\t\tfor(let handleName of Object.keys(this.handles)){\n\t\t\t\t\tlet handle = this.handles[handleName];\n\t\t\t\t\tlet node = handle.node;\n\n\t\t\t\t\tlet handlePos = node.getWorldPosition(new THREE.Vector3());\n\t\t\t\t\tlet distance = handlePos.distanceTo(camera.position);\n\t\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, domElement.clientWidth, domElement.clientHeight);\n\n\t\t\t\t\tlet ws = node.parent.getWorldScale(new THREE.Vector3());\n\n\t\t\t\t\tlet s = (7 / pr);\n\t\t\t\t\tlet scale = new THREE.Vector3(s, s, s).divide(ws);\n\n\t\t\t\t\tlet rot = new THREE.Matrix4().makeRotationFromEuler(node.rotation);\n\t\t\t\t\tlet rotInv = new THREE.Matrix4().getInverse(rot);\n\n\t\t\t\t\tscale.applyMatrix4(rotInv);\n\t\t\t\t\tscale.x = Math.abs(scale.x);\n\t\t\t\t\tscale.y = Math.abs(scale.y);\n\t\t\t\t\tscale.z = Math.abs(scale.z);\n\n\t\t\t\t\tnode.scale.copy(scale);\n\t\t\t\t}\n\n\t\t\t\t// adjust rotation handles\n\t\t\t\tif(!this.dragging){\n\t\t\t\t\tlet tWorld = this.scene.matrixWorld;\n\t\t\t\t\tlet tObject = new THREE.Matrix4().getInverse(tWorld)\n\t\t\t\t\tlet camObjectPos = camera.getWorldPosition(new THREE.Vector3()).applyMatrix4(tObject);\n\n\t\t\t\t\tlet x = this.rotationHandles[\"rotation.x\"].node.rotation;\n\t\t\t\t\tlet y = this.rotationHandles[\"rotation.y\"].node.rotation;\n\t\t\t\t\tlet z = this.rotationHandles[\"rotation.z\"].node.rotation;\n\n\t\t\t\t\tx.order = \"ZYX\";\n\t\t\t\t\ty.order = \"ZYX\";\n\n\t\t\t\t\tlet above = camObjectPos.z > 0;\n\t\t\t\t\tlet below = !above;\n\t\t\t\t\tlet PI_HALF = Math.PI / 2;\n\n\t\t\t\t\tif(above){\n\t\t\t\t\t\tif(camObjectPos.x > 0 && camObjectPos.y > 0){\n\t\t\t\t\t\t\tx.x = 1 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 3 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 0 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y > 0){\n\t\t\t\t\t\t\tx.x = 1 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 2 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 1 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y < 0){\n\t\t\t\t\t\t\tx.x = 2 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 2 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 2 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x > 0 && camObjectPos.y < 0){\n\t\t\t\t\t\t\tx.x = 2 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 3 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 3 * PI_HALF;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else if(below){\n\t\t\t\t\t\tif(camObjectPos.x > 0 && camObjectPos.y > 0){\n\t\t\t\t\t\t\tx.x = 0 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 0 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 0 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y > 0){\n\t\t\t\t\t\t\tx.x = 0 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 1 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 1 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y < 0){\n\t\t\t\t\t\t\tx.x = 3 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 1 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 2 * PI_HALF;\n\t\t\t\t\t\t}else if(camObjectPos.x > 0 && camObjectPos.y < 0){\n\t\t\t\t\t\t\tx.x = 3 * PI_HALF;\n\t\t\t\t\t\t\ty.y = 0 * PI_HALF;\n\t\t\t\t\t\t\tz.z = 3 * PI_HALF;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t{\n\t\t\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\t\t\t\t\tlet raycaster = new THREE.Raycaster(ray.origin, ray.direction);\n\t\t\t\t\tlet intersects = raycaster.intersectObjects(this.pickVolumes.filter(v => v.visible), true);\n\n\t\t\t\t\tif(intersects.length > 0){\n\t\t\t\t\t\tlet I = intersects[0];\n\t\t\t\t\t\tlet handleName = I.object.handle;\n\t\t\t\t\t\tthis.setActiveHandle(this.handles[handleName]);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.setActiveHandle(null);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// \n\t\t\t\tfor(let handleName of Object.keys(this.scaleHandles)){\n\t\t\t\t\tlet handle = this.handles[handleName];\n\t\t\t\t\tlet node = handle.node;\n\t\t\t\t\tlet alignment = handle.alignment;\n\n\t\t\t\t\t\n\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t{\n\t\t\t\tlet axisScale = (alignment) => {\n\t\t\t\t\tlet transformed = new THREE.Vector3(...alignment).applyMatrix4(selected.matrixWorld);\n\t\t\t\t\tlet distance = transformed.distanceTo(selected.getWorldPosition(new THREE.Vector3()));\n\n\t\t\t\t\treturn distance;\n\t\t\t\t};\n\n\t\t\t\tlet scale = new THREE.Vector3(\n\t\t\t\t\taxisScale([1, 0, 0]),\n\t\t\t\t\taxisScale([0, 1, 0]),\n\t\t\t\t\taxisScale([0, 0, 1]),\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}else{\n\t\t\tthis.scene.visible = false;\n\t\t}\n\t\t\n\t}\n\n};\n","\n\nimport {Volume, BoxVolume} from \"./Volume.js\";\nimport {Utils} from \"../utils.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\n\nexport class VolumeTool extends EventDispatcher{\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.addEventListener('start_inserting_volume', e => {\n\t\t\tthis.viewer.dispatchEvent({\n\t\t\t\ttype: 'cancel_insertions'\n\t\t\t});\n\t\t});\n\n\t\tthis.scene = new THREE.Scene();\n\t\tthis.scene.name = 'scene_volume';\n\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\n\n\t\tthis.onRemove = e => {\n\t\t\tthis.scene.remove(e.volume);\n\t\t};\n\n\t\tthis.onAdd = e => {\n\t\t\tthis.scene.add(e.volume);\n\t\t};\n\n\t\tfor(let volume of viewer.scene.volumes){\n\t\t\tthis.onAdd({volume: volume});\n\t\t}\n\n\t\tthis.viewer.inputHandler.addEventListener('delete', e => {\n\t\t\tlet volumes = e.selection.filter(e => (e instanceof Volume));\n\t\t\tvolumes.forEach(e => this.viewer.scene.removeVolume(e));\n\t\t});\n\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\n\t\tviewer.addEventListener(\"render.pass.scene\", e => this.render(e));\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\n\n\t\tviewer.scene.addEventListener('volume_added', this.onAdd);\n\t\tviewer.scene.addEventListener('volume_removed', this.onRemove);\n\t}\n\n\tonSceneChange(e){\n\t\tif(e.oldScene){\n\t\t\te.oldScene.removeEventListeners('volume_added', this.onAdd);\n\t\t\te.oldScene.removeEventListeners('volume_removed', this.onRemove);\n\t\t}\n\n\t\te.scene.addEventListener('volume_added', this.onAdd);\n\t\te.scene.addEventListener('volume_removed', this.onRemove);\n\t}\n\n\tstartInsertion (args = {}) {\n\t\tlet volume;\n\t\tif(args.type){\n\t\t\tvolume = new args.type();\n\t\t}else{\n\t\t\tvolume = new BoxVolume();\n\t\t}\n\t\t\n\t\tvolume.clip = args.clip || false;\n\t\tvolume.name = args.name || 'Volume';\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'start_inserting_volume',\n\t\t\tvolume: volume\n\t\t});\n\n\t\tthis.viewer.scene.addVolume(volume);\n\t\tthis.scene.add(volume);\n\n\t\tlet cancel = {\n\t\t\tcallback: null\n\t\t};\n\n\t\tlet drag = e => {\n\t\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\t\t\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\te.drag.end, \n\t\t\t\tthis.viewer.scene.getActiveCamera(), \n\t\t\t\tthis.viewer, \n\t\t\t\tthis.viewer.scene.pointclouds, \n\t\t\t\t{pickClipped: false});\n\n\t\t\tif (I) {\n\t\t\t\tvolume.position.copy(I.location);\n\n\t\t\t\tlet wp = volume.getWorldPosition(new THREE.Vector3()).applyMatrix4(camera.matrixWorldInverse);\n\t\t\t\t// let pp = new THREE.Vector4(wp.x, wp.y, wp.z).applyMatrix4(camera.projectionMatrix);\n\t\t\t\tlet w = Math.abs((wp.z / 5));\n\t\t\t\tvolume.scale.set(w, w, w);\n\t\t\t}\n\t\t};\n\n\t\tlet drop = e => {\n\t\t\tvolume.removeEventListener('drag', drag);\n\t\t\tvolume.removeEventListener('drop', drop);\n\n\t\t\tcancel.callback();\n\t\t};\n\n\t\tcancel.callback = e => {\n\t\t\tvolume.removeEventListener('drag', drag);\n\t\t\tvolume.removeEventListener('drop', drop);\n\t\t\tthis.viewer.removeEventListener('cancel_insertions', cancel.callback);\n\t\t};\n\n\t\tvolume.addEventListener('drag', drag);\n\t\tvolume.addEventListener('drop', drop);\n\t\tthis.viewer.addEventListener('cancel_insertions', cancel.callback);\n\n\t\tthis.viewer.inputHandler.startDragging(volume);\n\n\t\treturn volume;\n\t}\n\n\tupdate(){\n\t\tif (!this.viewer.scene) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\tlet renderAreaSize = this.viewer.renderer.getSize(new THREE.Vector2());\n\t\tlet clientWidth = renderAreaSize.width;\n\t\tlet clientHeight = renderAreaSize.height;\n\n\t\tlet volumes = this.viewer.scene.volumes;\n\t\tfor (let volume of volumes) {\n\t\t\tlet label = volume.label;\n\t\t\t\n\t\t\t{\n\n\t\t\t\tlet distance = label.position.distanceTo(camera.position);\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\n\n\t\t\t\tlet scale = (70 / pr);\n\t\t\t\tlabel.scale.set(scale, scale, scale);\n\t\t\t}\n\n\t\t\tlet calculatedVolume = volume.getVolume();\n\t\t\tcalculatedVolume = calculatedVolume / Math.pow(this.viewer.lengthUnit.unitspermeter, 3) * Math.pow(this.viewer.lengthUnitDisplay.unitspermeter, 3); //convert to cubic meters then to the cubic display unit\n\t\t\tlet text = Utils.addCommas(calculatedVolume.toFixed(3)) + ' ' + this.viewer.lengthUnitDisplay.code + '\\u00B3';\n\t\t\tlabel.setText(text);\n\t\t}\n\t}\n\n\trender(params){\n\t\tconst renderer = this.viewer.renderer;\n\n\t\tconst oldTarget = renderer.getRenderTarget();\n\t\t\n\t\tif(params.renderTarget){\n\t\t\trenderer.setRenderTarget(params.renderTarget);\n\t\t}\n\t\trenderer.render(this.scene, this.viewer.scene.getActiveCamera());\n\t\trenderer.setRenderTarget(oldTarget);\n\t}\n\n}\n","\r\nimport {Utils} from \"../utils.js\";\r\n\r\nexport class Compass{\r\n\r\n\tconstructor(viewer){\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.visible = false;\r\n\t\tthis.dom = this.createElement();\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\t\t\tconst direction = viewer.scene.view.direction.clone();\r\n\t\t\tdirection.z = 0;\r\n\t\t\tdirection.normalize();\r\n\r\n\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\r\n\t\t\tconst p1 = camera.getWorldPosition(new THREE.Vector3());\r\n\t\t\tconst p2 = p1.clone().add(direction);\r\n\r\n\t\t\tconst projection = viewer.getProjection();\r\n\t\t\tconst azimuth = Utils.computeAzimuth(p1, p2, projection);\r\n\t\t\t\r\n\t\t\tthis.dom.css(\"transform\", `rotateZ(${-azimuth}rad)`);\r\n\t\t});\r\n\r\n\t\tthis.dom.click( () => {\r\n\t\t\tviewer.setTopView();\r\n\t\t});\r\n\r\n\t\tconst renderArea = $(viewer.renderArea);\r\n\t\trenderArea.append(this.dom);\r\n\r\n\t\tthis.setVisible(this.visible);\r\n\t}\r\n\r\n\tsetVisible(visible){\r\n\t\tthis.visible = visible;\r\n\r\n\t\tconst value = visible ? \"\" : \"none\";\r\n\t\tthis.dom.css(\"display\", value);\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this.visible;\r\n\t}\r\n\r\n\tcreateElement(){\r\n\t\tconst style = `style=\"position: absolute; top: 10px; right: 10px; z-index: 10000; width: 64px;\"`;\r\n\t\tconst img = $(``);\r\n\r\n\t\treturn img;\r\n\t}\r\n\r\n};","\nexport class PotreeRenderer {\n\n\tconstructor (viewer) {\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\t}\n\n\tclearTargets(){\n\n\t}\n\n\tclear(){\n\t\tlet {viewer, renderer} = this;\n\n\t\t// render skybox\n\t\tif(viewer.background === \"skybox\"){\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t\trenderer.clear(true, true, false);\n\t\t}else if(viewer.background === \"gradient\"){\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t\trenderer.clear(true, true, false);\n\t\t}else if(viewer.background === \"black\"){\n\t\t\trenderer.setClearColor(0x000000, 1);\n\t\t\trenderer.clear(true, true, false);\n\t\t}else if(viewer.background === \"white\"){\n\t\t\trenderer.setClearColor(0xFFFFFF, 1);\n\t\t\trenderer.clear(true, true, false);\n\t\t}else{\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t\trenderer.clear(true, true, false);\n\t\t}\n\t}\n \n\trender(params){\n\t\tlet {viewer, renderer} = this;\n\n\t\tconst camera = params.camera ? params.camera : viewer.scene.getActiveCamera();\n\n\t\tviewer.dispatchEvent({type: \"render.pass.begin\",viewer: viewer});\n\n\t\tconst renderAreaSize = renderer.getSize(new THREE.Vector2());\n\t\tconst width = params.viewport ? params.viewport[2] : renderAreaSize.x;\n\t\tconst height = params.viewport ? params.viewport[3] : renderAreaSize.y;\n\n\n\t\t// render skybox\n\t\tif(viewer.background === \"skybox\"){\n\t\t\tviewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation);\n\t\t\tviewer.skybox.camera.fov = viewer.scene.cameraP.fov;\n\t\t\tviewer.skybox.camera.aspect = viewer.scene.cameraP.aspect;\n\t\t\tviewer.skybox.camera.updateProjectionMatrix();\n\t\t\trenderer.render(viewer.skybox.scene, viewer.skybox.camera);\n\t\t}else if(viewer.background === \"gradient\"){\n\t\t\trenderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG);\n\t\t}\n\t\t\n\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\n\t\t\tconst {material} = pointcloud;\n\t\t\tmaterial.useEDL = false;\n\t\t\t//material.updateShaderSource();\n\t\t}\n\t\t\n\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, null, {\n\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof Potree.SphereVolume)),\n\t\t});\n\t\t\n\t\t// render scene\n\t\trenderer.render(viewer.scene.scene, camera);\n\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\",viewer: viewer});\n\t\t\n\t\tviewer.clippingTool.update();\n\t\trenderer.render(viewer.clippingTool.sceneMarker, viewer.scene.cameraScreenSpace); //viewer.scene.cameraScreenSpace);\n\t\trenderer.render(viewer.clippingTool.sceneVolume, camera);\n\n\t\trenderer.render(viewer.controls.sceneControls, camera);\n\t\t\n\t\trenderer.clearDepth();\n\t\t\n\t\tviewer.transformationTool.update();\n\t\t\n\t\tviewer.dispatchEvent({type: \"render.pass.perspective_overlay\",viewer: viewer});\n\n\t\trenderer.render(viewer.controls.sceneControls, camera);\n\t\trenderer.render(viewer.clippingTool.sceneVolume, camera);\n\t\trenderer.render(viewer.transformationTool.scene, camera);\n\t\t\n\t\trenderer.setViewport(width - viewer.navigationCube.width, \n\t\t\t\t\t\t\t\t\theight - viewer.navigationCube.width, \n\t\t\t\t\t\t\t\t\tviewer.navigationCube.width, viewer.navigationCube.width);\n\t\trenderer.render(viewer.navigationCube, viewer.navigationCube.camera);\t\t\n\t\trenderer.setViewport(0, 0, width, height);\n\t\t\n\t\t// renderer.render(viewer.transformationTool.scene, camera);\n\n\t\t// renderer.setViewport(renderer.domElement.clientWidth - viewer.navigationCube.width, \n\t\t// \t\t\t\t\t\t\trenderer.domElement.clientHeight - viewer.navigationCube.width, \n\t\t// \t\t\t\t\t\t\tviewer.navigationCube.width, viewer.navigationCube.width);\n\t\t// renderer.render(viewer.navigationCube, viewer.navigationCube.camera);\t\t\n\t\t// renderer.setViewport(0, 0, renderer.domElement.clientWidth, renderer.domElement.clientHeight);\n\n\t\tviewer.dispatchEvent({type: \"render.pass.end\",viewer: viewer});\n\t}\n\n}\n","\nimport {PointCloudSM} from \"../utils/PointCloudSM.js\";\nimport {EyeDomeLightingMaterial} from \"../materials/EyeDomeLightingMaterial.js\";\nimport {SphereVolume} from \"../utils/Volume.js\";\nimport {Utils} from \"../utils.js\";\n\nexport class EDLRenderer{\n\tconstructor(viewer){\n\t\tthis.viewer = viewer;\n\n\t\tthis.edlMaterial = null;\n\n\t\tthis.rtRegular;\n\t\tthis.rtEDL;\n\n\t\tthis.gl = viewer.renderer.getContext();\n\n\t\tthis.shadowMap = new PointCloudSM(this.viewer.pRenderer);\n\t}\n\n\tinitEDL(){\n\t\tif (this.edlMaterial != null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.edlMaterial = new EyeDomeLightingMaterial();\n\t\tthis.edlMaterial.depthTest = true;\n\t\tthis.edlMaterial.depthWrite = true;\n\t\tthis.edlMaterial.transparent = true;\n\n\t\tthis.rtEDL = new THREE.WebGLRenderTarget(1024, 1024, {\n\t\t\tminFilter: THREE.NearestFilter,\n\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\ttype: THREE.FloatType,\n\t\t\tdepthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType)\n\t\t});\n\n\t\tthis.rtRegular = new THREE.WebGLRenderTarget(1024, 1024, {\n\t\t\tminFilter: THREE.NearestFilter,\n\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\tdepthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType)\n\t\t});\n\t};\n\n\tresize(width, height){\n\t\tif(this.screenshot){\n\t\t\twidth = this.screenshot.target.width;\n\t\t\theight = this.screenshot.target.height;\n\t\t}\n\n\t\tthis.rtEDL.setSize(width , height);\n\t\tthis.rtRegular.setSize(width , height);\n\t}\n\n\tmakeScreenshot(camera, size, callback){\n\n\t\tif(camera === undefined || camera === null){\n\t\t\tcamera = this.viewer.scene.getActiveCamera();\n\t\t}\n\n\t\tif(size === undefined || size === null){\n\t\t\tsize = this.viewer.renderer.getSize(new THREE.Vector2());\n\t\t}\n\n\t\tlet {width, height} = size;\n\n\t\t//let maxTextureSize = viewer.renderer.capabilities.maxTextureSize;\n\t\t//if(width * 4 < \n\t\twidth = 2 * width;\n\t\theight = 2 * height;\n\n\t\tlet target = new THREE.WebGLRenderTarget(width, height, {\n\t\t\tformat: THREE.RGBAFormat,\n\t\t});\n\n\t\tthis.screenshot = {\n\t\t\ttarget: target\n\t\t};\n\n\t\t// HACK? removed because of error, was this important?\n\t\t//this.viewer.renderer.clearTarget(target, true, true, true);\n\n\t\tthis.render();\n\n\t\tlet pixelCount = width * height;\n\t\tlet buffer = new Uint8Array(4 * pixelCount);\n\n\t\tthis.viewer.renderer.readRenderTargetPixels(target, 0, 0, width, height, buffer);\n\n\t\t// flip vertically\n\t\tlet bytesPerLine = width * 4;\n\t\tfor(let i = 0; i < parseInt(height / 2); i++){\n\t\t\tlet j = height - i - 1;\n\n\t\t\tlet lineI = buffer.slice(i * bytesPerLine, i * bytesPerLine + bytesPerLine);\n\t\t\tlet lineJ = buffer.slice(j * bytesPerLine, j * bytesPerLine + bytesPerLine);\n\t\t\tbuffer.set(lineJ, i * bytesPerLine);\n\t\t\tbuffer.set(lineI, j * bytesPerLine);\n\t\t}\n\n\t\tthis.screenshot.target.dispose();\n\t\tdelete this.screenshot;\n\n\t\treturn {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tbuffer: buffer\n\t\t};\n\t}\n\n\tclearTargets(){\n\t\tconst viewer = this.viewer;\n\t\tconst {renderer} = viewer;\n\n\t\tconst oldTarget = renderer.getRenderTarget();\n\n\t\trenderer.setRenderTarget( this.rtEDL );\n\t\trenderer.clear( true, true, true );\n\n\t\trenderer.setRenderTarget( this.rtRegular );\n\t\trenderer.clear( true, true, false );\n\n\t\trenderer.setRenderTarget(oldTarget);\n\t}\n\n\tclear(){\n\t\tthis.initEDL();\n\t\tconst viewer = this.viewer;\n\n\t\tconst {renderer, background} = viewer;\n\n\t\tif(background === \"skybox\"){\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t} else if (background === 'gradient') {\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t} else if (background === 'black') {\n\t\t\trenderer.setClearColor(0x000000, 1);\n\t\t} else if (background === 'white') {\n\t\t\trenderer.setClearColor(0xFFFFFF, 1);\n\t\t} else {\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t}\n\t\t\n\t\trenderer.clear();\n\n\t\tthis.clearTargets();\n\t}\n\n\trenderShadowMap(visiblePointClouds, camera, lights){\n\n\t\tconst {viewer} = this;\n\n\t\tconst doShadows = lights.length > 0 && !(lights[0].disableShadowUpdates);\n\t\tif(doShadows){\n\t\t\tlet light = lights[0];\n\n\t\t\tthis.shadowMap.setLight(light);\n\n\t\t\tlet originalAttributes = new Map();\n\t\t\tfor(let pointcloud of viewer.scene.pointclouds){\n\t\t\t\t// TODO IMPORTANT !!! check\n\t\t\t\toriginalAttributes.set(pointcloud, pointcloud.material.activeAttributeName);\n\t\t\t\tpointcloud.material.disableEvents();\n\t\t\t\tpointcloud.material.activeAttributeName = \"depth\";\n\t\t\t\t//pointcloud.material.pointColorType = PointColorType.DEPTH;\n\t\t\t}\n\n\t\t\tthis.shadowMap.render(viewer.scene.scenePointCloud, camera);\n\n\t\t\tfor(let pointcloud of visiblePointClouds){\n\t\t\t\tlet originalAttribute = originalAttributes.get(pointcloud);\n\t\t\t\t// TODO IMPORTANT !!! check\n\t\t\t\tpointcloud.material.activeAttributeName = originalAttribute;\n\t\t\t\tpointcloud.material.enableEvents();\n\t\t\t}\n\n\t\t\tviewer.shadowTestCam.updateMatrixWorld();\n\t\t\tviewer.shadowTestCam.matrixWorldInverse.getInverse(viewer.shadowTestCam.matrixWorld);\n\t\t\tviewer.shadowTestCam.updateProjectionMatrix();\n\t\t}\n\n\t}\n\n\trender(params){\n\t\tthis.initEDL();\n\n\t\tconst viewer = this.viewer;\n\t\tconst camera = params.camera ? params.camera : viewer.scene.getActiveCamera();\n\t\tconst {width, height} = this.viewer.renderer.getSize(new THREE.Vector2());\n\n\t\tviewer.dispatchEvent({type: \"render.pass.begin\",viewer: viewer});\n\t\t\n\t\tthis.resize(width, height);\n\n\t\tconst visiblePointClouds = viewer.scene.pointclouds.filter(pc => pc.visible);\n\n\t\tif(this.screenshot){\n\t\t\tlet oldBudget = Potree.pointBudget;\n\t\t\tPotree.pointBudget = Math.max(10 * 1000 * 1000, 2 * oldBudget);\n\t\t\tlet result = Potree.updatePointClouds(\n\t\t\t\tviewer.scene.pointclouds, \n\t\t\t\tcamera, \n\t\t\t\tviewer.renderer);\n\t\t\tPotree.pointBudget = oldBudget;\n\t\t}\n\n\t\tlet lights = [];\n\t\tviewer.scene.scene.traverse(node => {\n\t\t\tif(node instanceof THREE.SpotLight){\n\t\t\t\tlights.push(node);\n\t\t\t}\n\t\t});\n\n\t\tif(viewer.background === \"skybox\"){\n\t\t\tviewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation);\n\t\t\tviewer.skybox.camera.fov = viewer.scene.cameraP.fov;\n\t\t\tviewer.skybox.camera.aspect = viewer.scene.cameraP.aspect;\n\t\t\tviewer.skybox.camera.updateProjectionMatrix();\n\t\t\tviewer.renderer.render(viewer.skybox.scene, viewer.skybox.camera);\n\t\t} else if (viewer.background === 'gradient') {\n\t\t\tviewer.renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG);\n\t\t} \n\n\t\t//TODO adapt to multiple lights\n\t\tthis.renderShadowMap(visiblePointClouds, camera, lights);\n\n\t\t{ // COLOR & DEPTH PASS\n\t\t\tfor (let pointcloud of visiblePointClouds) {\n\t\t\t\tlet octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\n\n\t\t\t\tlet material = pointcloud.material;\n\t\t\t\tmaterial.weighted = false;\n\t\t\t\tmaterial.useLogarithmicDepthBuffer = false;\n\t\t\t\tmaterial.useEDL = true;\n\n\t\t\t\tmaterial.screenWidth = width;\n\t\t\t\tmaterial.screenHeight = height;\n\t\t\t\tmaterial.uniforms.visibleNodes.value = pointcloud.material.visibleNodesTexture;\n\t\t\t\tmaterial.uniforms.octreeSize.value = octreeSize;\n\t\t\t\tmaterial.spacing = pointcloud.pcoGeometry.spacing * Math.max(pointcloud.scale.x, pointcloud.scale.y, pointcloud.scale.z);\n\t\t\t}\n\t\t\t\n\t\t\t// TODO adapt to multiple lights\n\t\t\tviewer.renderer.setRenderTarget(this.rtEDL);\n\t\t\t\n\t\t\tif(lights.length > 0){\n\t\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtEDL, {\n\t\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\n\t\t\t\t\tshadowMaps: [this.shadowMap],\n\t\t\t\t\ttransparent: false,\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtEDL, {\n\t\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\n\t\t\t\t\ttransparent: false,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\n\t\t}\n\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\", viewer: viewer, renderTarget: this.rtRegular});\n\t\tviewer.renderer.setRenderTarget(null);\n\t\tviewer.renderer.render(viewer.scene.scene, camera);\n\n\t\t{ // EDL PASS\n\n\t\t\tconst uniforms = this.edlMaterial.uniforms;\n\n\t\t\tuniforms.screenWidth.value = width;\n\t\t\tuniforms.screenHeight.value = height;\n\n\t\t\tlet proj = camera.projectionMatrix;\n\t\t\tlet projArray = new Float32Array(16);\n\t\t\tprojArray.set(proj.elements);\n\n\t\t\tuniforms.uNear.value = camera.near;\n\t\t\tuniforms.uFar.value = camera.far;\n\t\t\tuniforms.uEDLColor.value = this.rtEDL.texture;\n\t\t\tuniforms.uEDLDepth.value = this.rtEDL.depthTexture;\n\t\t\tuniforms.uProj.value = projArray;\n\n\t\t\tuniforms.edlStrength.value = viewer.edlStrength;\n\t\t\tuniforms.radius.value = viewer.edlRadius;\n\t\t\tuniforms.opacity.value = viewer.edlOpacity; // HACK\n\t\t\t\n\t\t\tUtils.screenPass.render(viewer.renderer, this.edlMaterial);\n\n\t\t\tif(this.screenshot){\n\t\t\t\tUtils.screenPass.render(viewer.renderer, this.edlMaterial, this.screenshot.target);\n\t\t\t}\n\n\t\t}\n\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\", viewer: viewer});\n\n\t\tviewer.renderer.clearDepth();\n\n\t\tviewer.transformationTool.update();\n\n\t\tviewer.dispatchEvent({type: \"render.pass.perspective_overlay\",viewer: viewer});\n\n\t\tviewer.renderer.render(viewer.controls.sceneControls, camera);\n\t\tviewer.renderer.render(viewer.clippingTool.sceneVolume, camera);\n\t\tviewer.renderer.render(viewer.transformationTool.scene, camera);\n\t\t\n\t\tviewer.dispatchEvent({type: \"render.pass.end\",viewer: viewer});\n\n\t}\n}\n\n","\n\nimport {NormalizationMaterial} from \"../materials/NormalizationMaterial.js\";\nimport {NormalizationEDLMaterial} from \"../materials/NormalizationEDLMaterial.js\";\nimport {PointCloudMaterial} from \"../materials/PointCloudMaterial.js\";\nimport {PointShape} from \"../defines.js\";\nimport {SphereVolume} from \"../utils/Volume.js\";\nimport {Utils} from \"../utils.js\";\n\n\nexport class HQSplatRenderer{\n\t\n\tconstructor(viewer){\n\t\tthis.viewer = viewer;\n\n\t\tthis.depthMaterials = new Map();\n\t\tthis.attributeMaterials = new Map();\n\t\tthis.normalizationMaterial = null;\n\n\t\tthis.rtDepth = null;\n\t\tthis.rtAttribute = null;\n\t\tthis.gl = viewer.renderer.getContext();\n\n\t\tthis.initialized = false;\n\t}\n\n\tinit(){\n\t\tif (this.initialized) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.normalizationMaterial = new NormalizationMaterial();\n\t\tthis.normalizationMaterial.depthTest = true;\n\t\tthis.normalizationMaterial.depthWrite = true;\n\t\tthis.normalizationMaterial.transparent = true;\n\n\t\tthis.normalizationEDLMaterial = new NormalizationEDLMaterial();\n\t\tthis.normalizationEDLMaterial.depthTest = true;\n\t\tthis.normalizationEDLMaterial.depthWrite = true;\n\t\tthis.normalizationEDLMaterial.transparent = true;\n\n\t\tthis.rtDepth = new THREE.WebGLRenderTarget(1024, 1024, {\n\t\t\tminFilter: THREE.NearestFilter,\n\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\ttype: THREE.FloatType,\n\t\t\tdepthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType)\n\t\t});\n\n\t\tthis.rtAttribute = new THREE.WebGLRenderTarget(1024, 1024, {\n\t\t\tminFilter: THREE.NearestFilter,\n\t\t\tmagFilter: THREE.NearestFilter,\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\ttype: THREE.FloatType,\n\t\t\tdepthTexture: this.rtDepth.depthTexture,\n\t\t});\n\n\t\tthis.initialized = true;\n\t};\n\n\tresize(width, height){\n\t\tthis.rtDepth.setSize(width, height);\n\t\tthis.rtAttribute.setSize(width, height);\n\t}\n\n\tclearTargets(){\n\t\tconst viewer = this.viewer;\n\t\tconst {renderer} = viewer;\n\n\t\tconst oldTarget = renderer.getRenderTarget();\n\n\t\trenderer.setClearColor(0x000000, 0);\n\n\t\trenderer.setRenderTarget( this.rtDepth );\n\t\trenderer.clear( true, true, true );\n\n\t\trenderer.setRenderTarget( this.rtAttribute );\n\t\trenderer.clear( true, true, true );\n\n\t\trenderer.setRenderTarget(oldTarget);\n\t}\n\n\n\tclear(){\n\t\tthis.init();\n\n\t\tconst {renderer, background} = this.viewer;\n\n\t\tif(background === \"skybox\"){\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t} else if (background === 'gradient') {\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t} else if (background === 'black') {\n\t\t\trenderer.setClearColor(0x000000, 1);\n\t\t} else if (background === 'white') {\n\t\t\trenderer.setClearColor(0xFFFFFF, 1);\n\t\t} else {\n\t\t\trenderer.setClearColor(0x000000, 0);\n\t\t}\n\n\t\trenderer.clear();\n\n\t\tthis.clearTargets();\n\t}\n\n\trender (params) {\n\t\tthis.init();\n\n\t\tconst viewer = this.viewer;\n\t\tconst camera = params.camera ? params.camera : viewer.scene.getActiveCamera();\n\t\tconst {width, height} = this.viewer.renderer.getSize(new THREE.Vector2());\n\n\t\tviewer.dispatchEvent({type: \"render.pass.begin\",viewer: viewer});\n\n\t\tthis.resize(width, height);\n\n\t\tconst visiblePointClouds = viewer.scene.pointclouds.filter(pc => pc.visible);\n\t\tconst originalMaterials = new Map();\n\n\t\tfor(let pointcloud of visiblePointClouds){\n\t\t\toriginalMaterials.set(pointcloud, pointcloud.material);\n\n\t\t\tif(!this.attributeMaterials.has(pointcloud)){\n\t\t\t\tlet attributeMaterial = new PointCloudMaterial();\n\t\t\t\tthis.attributeMaterials.set(pointcloud, attributeMaterial);\n\t\t\t}\n\n\t\t\tif(!this.depthMaterials.has(pointcloud)){\n\t\t\t\tlet depthMaterial = new PointCloudMaterial();\n\n\t\t\t\tdepthMaterial.setDefine(\"depth_pass\", \"#define hq_depth_pass\");\n\t\t\t\tdepthMaterial.setDefine(\"use_edl\", \"#define use_edl\");\n\n\t\t\t\tthis.depthMaterials.set(pointcloud, depthMaterial);\n\t\t\t}\n\t\t}\n\n\t\t{ // DEPTH PASS\n\t\t\tfor (let pointcloud of visiblePointClouds) {\n\t\t\t\tlet octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\n\n\t\t\t\tlet material = originalMaterials.get(pointcloud);\n\t\t\t\tlet depthMaterial = this.depthMaterials.get(pointcloud);\n\n\t\t\t\tdepthMaterial.size = material.size;\n\t\t\t\tdepthMaterial.minSize = material.minSize;\n\t\t\t\tdepthMaterial.maxSize = material.maxSize;\n\n\t\t\t\tdepthMaterial.pointSizeType = material.pointSizeType;\n\t\t\t\tdepthMaterial.visibleNodesTexture = material.visibleNodesTexture;\n\t\t\t\tdepthMaterial.weighted = false;\n\t\t\t\tdepthMaterial.screenWidth = width;\n\t\t\t\tdepthMaterial.shape = PointShape.CIRCLE;\n\t\t\t\tdepthMaterial.screenHeight = height;\n\t\t\t\tdepthMaterial.uniforms.visibleNodes.value = material.visibleNodesTexture;\n\t\t\t\tdepthMaterial.uniforms.octreeSize.value = octreeSize;\n\t\t\t\tdepthMaterial.spacing = pointcloud.pcoGeometry.spacing * Math.max(...pointcloud.scale.toArray());\n\t\t\t\tdepthMaterial.classification = material.classification;\n\t\t\t\tdepthMaterial.uniforms.classificationLUT.value.image.data = material.uniforms.classificationLUT.value.image.data;\n\t\t\t\tdepthMaterial.classificationTexture.needsUpdate = true;\n\n\t\t\t\tdepthMaterial.uniforms.uFilterReturnNumberRange.value = material.uniforms.uFilterReturnNumberRange.value;\n\t\t\t\tdepthMaterial.uniforms.uFilterNumberOfReturnsRange.value = material.uniforms.uFilterNumberOfReturnsRange.value;\n\t\t\t\tdepthMaterial.uniforms.uFilterGPSTimeClipRange.value = material.uniforms.uFilterGPSTimeClipRange.value;\n\t\t\t\tdepthMaterial.uniforms.uFilterPointSourceIDClipRange.value = material.uniforms.uFilterPointSourceIDClipRange.value;\n\n\t\t\t\tdepthMaterial.clipTask = material.clipTask;\n\t\t\t\tdepthMaterial.clipMethod = material.clipMethod;\n\t\t\t\tdepthMaterial.setClipBoxes(material.clipBoxes);\n\t\t\t\tdepthMaterial.setClipPolygons(material.clipPolygons);\n\n\t\t\t\tpointcloud.material = depthMaterial;\n\t\t\t}\n\t\t\t\n\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtDepth, {\n\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\n\t\t\t});\n\t\t}\n\n\t\t{ // ATTRIBUTE PASS\n\t\t\tfor (let pointcloud of visiblePointClouds) {\n\t\t\t\tlet octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\n\n\t\t\t\tlet material = originalMaterials.get(pointcloud);\n\t\t\t\tlet attributeMaterial = this.attributeMaterials.get(pointcloud);\n\n\t\t\t\tattributeMaterial.size = material.size;\n\t\t\t\tattributeMaterial.minSize = material.minSize;\n\t\t\t\tattributeMaterial.maxSize = material.maxSize;\n\n\t\t\t\tattributeMaterial.pointSizeType = material.pointSizeType;\n\t\t\t\tattributeMaterial.activeAttributeName = material.activeAttributeName;\n\t\t\t\tattributeMaterial.visibleNodesTexture = material.visibleNodesTexture;\n\t\t\t\tattributeMaterial.weighted = true;\n\t\t\t\tattributeMaterial.screenWidth = width;\n\t\t\t\tattributeMaterial.screenHeight = height;\n\t\t\t\tattributeMaterial.shape = PointShape.CIRCLE;\n\t\t\t\tattributeMaterial.uniforms.visibleNodes.value = material.visibleNodesTexture;\n\t\t\t\tattributeMaterial.uniforms.octreeSize.value = octreeSize;\n\t\t\t\tattributeMaterial.spacing = pointcloud.pcoGeometry.spacing * Math.max(...pointcloud.scale.toArray());\n\t\t\t\tattributeMaterial.classification = material.classification;\n\t\t\t\tattributeMaterial.uniforms.classificationLUT.value.image.data = material.uniforms.classificationLUT.value.image.data;\n\t\t\t\tattributeMaterial.classificationTexture.needsUpdate = true;\n\n\t\t\t\tattributeMaterial.uniforms.uFilterReturnNumberRange.value = material.uniforms.uFilterReturnNumberRange.value;\n\t\t\t\tattributeMaterial.uniforms.uFilterNumberOfReturnsRange.value = material.uniforms.uFilterNumberOfReturnsRange.value;\n\t\t\t\tattributeMaterial.uniforms.uFilterGPSTimeClipRange.value = material.uniforms.uFilterGPSTimeClipRange.value;\n\t\t\t\tattributeMaterial.uniforms.uFilterPointSourceIDClipRange.value = material.uniforms.uFilterPointSourceIDClipRange.value;\n\n\t\t\t\tattributeMaterial.elevationGradientRepeat = material.elevationGradientRepeat;\n\t\t\t\tattributeMaterial.elevationRange = material.elevationRange;\n\t\t\t\tattributeMaterial.gradient = material.gradient;\n\t\t\t\tattributeMaterial.matcap = material.matcap;\n\n\t\t\t\tattributeMaterial.intensityRange = material.intensityRange;\n\t\t\t\tattributeMaterial.intensityGamma = material.intensityGamma;\n\t\t\t\tattributeMaterial.intensityContrast = material.intensityContrast;\n\t\t\t\tattributeMaterial.intensityBrightness = material.intensityBrightness;\n\n\t\t\t\tattributeMaterial.rgbGamma = material.rgbGamma;\n\t\t\t\tattributeMaterial.rgbContrast = material.rgbContrast;\n\t\t\t\tattributeMaterial.rgbBrightness = material.rgbBrightness;\n\n\t\t\t\tattributeMaterial.weightRGB = material.weightRGB;\n\t\t\t\tattributeMaterial.weightIntensity = material.weightIntensity;\n\t\t\t\tattributeMaterial.weightElevation = material.weightElevation;\n\t\t\t\tattributeMaterial.weightRGB = material.weightRGB;\n\t\t\t\tattributeMaterial.weightClassification = material.weightClassification;\n\t\t\t\tattributeMaterial.weightReturnNumber = material.weightReturnNumber;\n\t\t\t\tattributeMaterial.weightSourceID = material.weightSourceID;\n\n\t\t\t\tattributeMaterial.color = material.color;\n\n\t\t\t\tattributeMaterial.clipTask = material.clipTask;\n\t\t\t\tattributeMaterial.clipMethod = material.clipMethod;\n\t\t\t\tattributeMaterial.setClipBoxes(material.clipBoxes);\n\t\t\t\tattributeMaterial.setClipPolygons(material.clipPolygons);\n\n\t\t\t\tpointcloud.material = attributeMaterial;\n\t\t\t}\n\t\t\t\n\t\t\tlet gl = this.gl;\n\n\t\t\tviewer.renderer.setRenderTarget(null);\n\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtAttribute, {\n\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\n\t\t\t\t//material: this.attributeMaterial,\n\t\t\t\tblendFunc: [gl.SRC_ALPHA, gl.ONE],\n\t\t\t\t//depthTest: false,\n\t\t\t\tdepthWrite: false\n\t\t\t});\n\t\t}\n\n\t\tfor(let [pointcloud, material] of originalMaterials){\n\t\t\tpointcloud.material = material;\n\t\t}\n\n\t\tviewer.renderer.setRenderTarget(null);\n\t\tif(viewer.background === \"skybox\"){\n\t\t\tviewer.renderer.setClearColor(0x000000, 0);\n\t\t\tviewer.renderer.clear();\n\t\t\tviewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation);\n\t\t\tviewer.skybox.camera.fov = viewer.scene.cameraP.fov;\n\t\t\tviewer.skybox.camera.aspect = viewer.scene.cameraP.aspect;\n\t\t\tviewer.skybox.camera.updateProjectionMatrix();\n\t\t\tviewer.renderer.render(viewer.skybox.scene, viewer.skybox.camera);\n\t\t} else if (viewer.background === 'gradient') {\n\t\t\tviewer.renderer.setClearColor(0x000000, 0);\n\t\t\tviewer.renderer.clear();\n\t\t\tviewer.renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG);\n\t\t} else if (viewer.background === 'black') {\n\t\t\tviewer.renderer.setClearColor(0x000000, 1);\n\t\t\tviewer.renderer.clear();\n\t\t} else if (viewer.background === 'white') {\n\t\t\tviewer.renderer.setClearColor(0xFFFFFF, 1);\n\t\t\tviewer.renderer.clear();\n\t\t} else {\n\t\t\tviewer.renderer.setClearColor(0x000000, 0);\n\t\t\tviewer.renderer.clear();\n\t\t}\n\n\t\t{ // NORMALIZATION PASS\n\t\t\tlet normalizationMaterial = this.useEDL ? this.normalizationEDLMaterial : this.normalizationMaterial;\n\n\t\t\tif(this.useEDL){\n\t\t\t\tnormalizationMaterial.uniforms.edlStrength.value = viewer.edlStrength;\n\t\t\t\tnormalizationMaterial.uniforms.radius.value = viewer.edlRadius;\n\t\t\t\tnormalizationMaterial.uniforms.screenWidth.value = width;\n\t\t\t\tnormalizationMaterial.uniforms.screenHeight.value = height;\n\t\t\t\tnormalizationMaterial.uniforms.uEDLMap.value = this.rtDepth.texture;\n\t\t\t}\n\n\t\t\tnormalizationMaterial.uniforms.uWeightMap.value = this.rtAttribute.texture;\n\t\t\tnormalizationMaterial.uniforms.uDepthMap.value = this.rtAttribute.depthTexture;\n\t\t\t\n\t\t\tUtils.screenPass.render(viewer.renderer, normalizationMaterial);\n\t\t}\n\n\t\tviewer.renderer.render(viewer.scene.scene, camera);\n\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\", viewer: viewer});\n\n\t\tviewer.renderer.clearDepth();\n\n\t\tviewer.transformationTool.update();\n\n\t\tviewer.dispatchEvent({type: \"render.pass.perspective_overlay\",viewer: viewer});\n\n\t\tviewer.renderer.render(viewer.controls.sceneControls, camera);\n\t\tviewer.renderer.render(viewer.clippingTool.sceneVolume, camera);\n\t\tviewer.renderer.render(viewer.transformationTool.scene, camera);\n\n\t\tviewer.renderer.setViewport(width - viewer.navigationCube.width, \n\t\t\t\t\t\t\t\t\theight - viewer.navigationCube.width, \n\t\t\t\t\t\t\t\t\tviewer.navigationCube.width, viewer.navigationCube.width);\n\t\tviewer.renderer.render(viewer.navigationCube, viewer.navigationCube.camera);\t\t\n\t\tviewer.renderer.setViewport(0, 0, width, height);\n\t\t\n\t\tviewer.dispatchEvent({type: \"render.pass.end\",viewer: viewer});\n\n\t}\n\n}\n\n","\nexport class View{\n\tconstructor () {\n\t\tthis.position = new THREE.Vector3(0, 0, 0);\n\n\t\tthis.yaw = Math.PI / 4;\n\t\tthis._pitch = -Math.PI / 4;\n\t\tthis.radius = 1;\n\n\t\tthis.maxPitch = Math.PI / 2;\n\t\tthis.minPitch = -Math.PI / 2;\n\t}\n\n\tclone () {\n\t\tlet c = new View();\n\t\tc.yaw = this.yaw;\n\t\tc._pitch = this.pitch;\n\t\tc.radius = this.radius;\n\t\tc.maxPitch = this.maxPitch;\n\t\tc.minPitch = this.minPitch;\n\n\t\treturn c;\n\t}\n\n\tget pitch () {\n\t\treturn this._pitch;\n\t}\n\n\tset pitch (angle) {\n\t\tthis._pitch = Math.max(Math.min(angle, this.maxPitch), this.minPitch);\n\t}\n\n\tget direction () {\n\t\tlet dir = new THREE.Vector3(0, 1, 0);\n\n\t\tdir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch);\n\t\tdir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\treturn dir;\n\t}\n\n\tset direction (dir) {\n\n\t\t//if(dir.x === dir.y){\n\t\tif(dir.x === 0 && dir.y === 0){\n\t\t\tthis.pitch = Math.PI / 2 * Math.sign(dir.z);\n\t\t}else{\n\t\t\tlet yaw = Math.atan2(dir.y, dir.x) - Math.PI / 2;\n\t\t\tlet pitch = Math.atan2(dir.z, Math.sqrt(dir.x * dir.x + dir.y * dir.y));\n\n\t\t\tthis.yaw = yaw;\n\t\t\tthis.pitch = pitch;\n\t\t}\n\t\t\n\t}\n\n\tlookAt(t){\n\t\tlet V;\n\t\tif(arguments.length === 1){\n\t\t\tV = new THREE.Vector3().subVectors(t, this.position);\n\t\t}else if(arguments.length === 3){\n\t\t\tV = new THREE.Vector3().subVectors(new THREE.Vector3(...arguments), this.position);\n\t\t}\n\n\t\tlet radius = V.length();\n\t\tlet dir = V.normalize();\n\n\t\tthis.radius = radius;\n\t\tthis.direction = dir;\n\t}\n\n\tgetPivot () {\n\t\treturn new THREE.Vector3().addVectors(this.position, this.direction.multiplyScalar(this.radius));\n\t}\n\n\tgetSide () {\n\t\tlet side = new THREE.Vector3(1, 0, 0);\n\t\tside.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\treturn side;\n\t}\n\n\tpan (x, y) {\n\t\tlet dir = new THREE.Vector3(0, 1, 0);\n\t\tdir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch);\n\t\tdir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\t// let side = new THREE.Vector3(1, 0, 0);\n\t\t// side.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\tlet side = this.getSide();\n\n\t\tlet up = side.clone().cross(dir);\n\n\t\tlet pan = side.multiplyScalar(x).add(up.multiplyScalar(y));\n\n\t\tthis.position = this.position.add(pan);\n\t\t// this.target = this.target.add(pan);\n\t}\n\n\ttranslate (x, y, z) {\n\t\tlet dir = new THREE.Vector3(0, 1, 0);\n\t\tdir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch);\n\t\tdir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\tlet side = new THREE.Vector3(1, 0, 0);\n\t\tside.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\n\n\t\tlet up = side.clone().cross(dir);\n\n\t\tlet t = side.multiplyScalar(x)\n\t\t\t.add(dir.multiplyScalar(y))\n\t\t\t.add(up.multiplyScalar(z));\n\n\t\tthis.position = this.position.add(t);\n\t}\n\n\ttranslateWorld (x, y, z) {\n\t\tthis.position.x += x;\n\t\tthis.position.y += y;\n\t\tthis.position.z += z;\n\t}\n\n\tsetView(position, target, duration = 0, callback = null){\n\n\t\tlet endPosition = null;\n\t\tif(position instanceof Array){\n\t\t\tendPosition = new THREE.Vector3(...position);\n\t\t}else if(position instanceof THREE.Vector3){\n\t\t\tendPosition = position.clone();\n\t\t}\n\n\t\tlet endTarget = null;\n\t\tif(target instanceof Array){\n\t\t\tendTarget = new THREE.Vector3(...target);\n\t\t}else if(target instanceof THREE.Vector3){\n\t\t\tendTarget = target.clone();\n\t\t}\n\t\t\n\t\tconst startPosition = this.position.clone();\n\t\tconst startTarget = this.getPivot();\n\n\t\t//const endPosition = position.clone();\n\t\t//const endTarget = target.clone();\n\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\tif(duration === 0){\n\t\t\tthis.position.copy(endPosition);\n\t\t\tthis.lookAt(endTarget);\n\t\t}else{\n\t\t\tlet value = {x: 0};\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, duration);\n\t\t\ttween.easing(easing);\n\t\t\t//this.tweens.push(tween);\n\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tlet t = value.x;\n\n\t\t\t\t//console.log(t);\n\n\t\t\t\tconst pos = new THREE.Vector3(\n\t\t\t\t\t(1 - t) * startPosition.x + t * endPosition.x,\n\t\t\t\t\t(1 - t) * startPosition.y + t * endPosition.y,\n\t\t\t\t\t(1 - t) * startPosition.z + t * endPosition.z,\n\t\t\t\t);\n\n\t\t\t\tconst target = new THREE.Vector3(\n\t\t\t\t\t(1 - t) * startTarget.x + t * endTarget.x,\n\t\t\t\t\t(1 - t) * startTarget.y + t * endTarget.y,\n\t\t\t\t\t(1 - t) * startTarget.z + t * endTarget.z,\n\t\t\t\t);\n\n\t\t\t\tthis.position.copy(pos);\n\t\t\t\tthis.lookAt(target);\n\n\t\t\t});\n\n\t\t\ttween.start();\n\n\t\t\ttween.onComplete(() => {\n\t\t\t\tif(callback){\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t}\n\n};\n","\n\nimport {Annotation} from \"../Annotation.js\";\nimport {CameraMode} from \"../defines.js\";\nimport {View} from \"./View.js\";\nimport {Utils} from \"../utils.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\n\nexport class Scene extends EventDispatcher{\n\n\tconstructor(){\n\t\tsuper();\n\n\t\tthis.annotations = new Annotation();\n\t\t\n\t\tthis.scene = new THREE.Scene();\n\t\tthis.sceneBG = new THREE.Scene();\n\t\tthis.scenePointCloud = new THREE.Scene();\n\n\t\tthis.cameraP = new THREE.PerspectiveCamera(this.fov, 1, 0.1, 1000*1000);\n\t\tthis.cameraO = new THREE.OrthographicCamera(-1, 1, 1, -1, 0.1, 1000*1000);\n\t\tthis.cameraVR = new THREE.PerspectiveCamera();\n\t\tthis.cameraBG = new THREE.Camera();\n\t\tthis.cameraScreenSpace = new THREE.OrthographicCamera(-1, 1, 1, -1, 0.1, 10);\n\t\tthis.cameraMode = CameraMode.PERSPECTIVE;\n\t\tthis.overrideCamera = null;\n\t\tthis.pointclouds = [];\n\n\t\tthis.measurements = [];\n\t\tthis.profiles = [];\n\t\tthis.volumes = [];\n\t\tthis.polygonClipVolumes = [];\n\t\tthis.cameraAnimations = [];\n\t\tthis.orientedImages = [];\n\t\tthis.images360 = [];\n\t\tthis.geopackages = [];\n\t\t\n\t\tthis.fpControls = null;\n\t\tthis.orbitControls = null;\n\t\tthis.earthControls = null;\n\t\tthis.geoControls = null;\n\t\tthis.deviceControls = null;\n\t\tthis.inputHandler = null;\n\n\t\tthis.view = new View();\n\n\t\tthis.directionalLight = null;\n\n\t\tthis.initialize();\n\t}\n\n\testimateHeightAt (position) {\n\t\tlet height = null;\n\t\tlet fromSpacing = Infinity;\n\n\t\tfor (let pointcloud of this.pointclouds) {\n\t\t\tif (pointcloud.root.geometryNode === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet pHeight = null;\n\t\t\tlet pFromSpacing = Infinity;\n\n\t\t\tlet lpos = position.clone().sub(pointcloud.position);\n\t\t\tlpos.z = 0;\n\t\t\tlet ray = new THREE.Ray(lpos, new THREE.Vector3(0, 0, 1));\n\n\t\t\tlet stack = [pointcloud.root];\n\t\t\twhile (stack.length > 0) {\n\t\t\t\tlet node = stack.pop();\n\t\t\t\tlet box = node.getBoundingBox();\n\n\t\t\t\tlet inside = ray.intersectBox(box);\n\n\t\t\t\tif (!inside) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet h = node.geometryNode.mean.z +\n\t\t\t\t\tpointcloud.position.z +\n\t\t\t\t\tnode.geometryNode.boundingBox.min.z;\n\n\t\t\t\tif (node.geometryNode.spacing <= pFromSpacing) {\n\t\t\t\t\tpHeight = h;\n\t\t\t\t\tpFromSpacing = node.geometryNode.spacing;\n\t\t\t\t}\n\n\t\t\t\tfor (let index of Object.keys(node.children)) {\n\t\t\t\t\tlet child = node.children[index];\n\t\t\t\t\tif (child.geometryNode) {\n\t\t\t\t\t\tstack.push(node.children[index]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (height === null || pFromSpacing < fromSpacing) {\n\t\t\t\theight = pHeight;\n\t\t\t\tfromSpacing = pFromSpacing;\n\t\t\t}\n\t\t}\n\n\t\treturn height;\n\t}\n\t\n\tgetBoundingBox(pointclouds = this.pointclouds){\n\t\tlet box = new THREE.Box3();\n\n\t\tthis.scenePointCloud.updateMatrixWorld(true);\n\t\tthis.referenceFrame.updateMatrixWorld(true);\n\n\t\tfor (let pointcloud of pointclouds) {\n\t\t\tpointcloud.updateMatrixWorld(true);\n\n\t\t\tlet pointcloudBox = pointcloud.pcoGeometry.tightBoundingBox ? pointcloud.pcoGeometry.tightBoundingBox : pointcloud.boundingBox;\n\t\t\tlet boxWorld = Utils.computeTransformedBoundingBox(pointcloudBox, pointcloud.matrixWorld);\n\t\t\tbox.union(boxWorld);\n\t\t}\n\n\t\treturn box;\n\t}\n\n\taddPointCloud (pointcloud) {\n\t\tthis.pointclouds.push(pointcloud);\n\t\tthis.scenePointCloud.add(pointcloud);\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'pointcloud_added',\n\t\t\tpointcloud: pointcloud\n\t\t});\n\t}\n\n\taddVolume (volume) {\n\t\tthis.volumes.push(volume);\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'volume_added',\n\t\t\t'scene': this,\n\t\t\t'volume': volume\n\t\t});\n\t}\n\n\taddOrientedImages(images){\n\t\tthis.orientedImages.push(images);\n\t\tthis.scene.add(images.node);\n\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'oriented_images_added',\n\t\t\t'scene': this,\n\t\t\t'images': images\n\t\t});\n\t};\n\n\tremoveOrientedImages(images){\n\t\tlet index = this.orientedImages.indexOf(images);\n\t\tif (index > -1) {\n\t\t\tthis.orientedImages.splice(index, 1);\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'oriented_images_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'images': images\n\t\t\t});\n\t\t}\n\t};\n\n\tadd360Images(images){\n\t\tthis.images360.push(images);\n\t\tthis.scene.add(images.node);\n\n\t\tthis.dispatchEvent({\n\t\t\t'type': '360_images_added',\n\t\t\t'scene': this,\n\t\t\t'images': images\n\t\t});\n\t}\n\n\tremove360Images(images){\n\t\tlet index = this.images360.indexOf(images);\n\t\tif (index > -1) {\n\t\t\tthis.images360.splice(index, 1);\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': '360_images_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'images': images\n\t\t\t});\n\t\t}\n\t}\n\n\taddGeopackage(geopackage){\n\t\tthis.geopackages.push(geopackage);\n\t\tthis.scene.add(geopackage.node);\n\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'geopackage_added',\n\t\t\t'scene': this,\n\t\t\t'geopackage': geopackage\n\t\t});\n\t};\n\n\tremoveGeopackage(geopackage){\n\t\tlet index = this.geopackages.indexOf(geopackage);\n\t\tif (index > -1) {\n\t\t\tthis.geopackages.splice(index, 1);\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'geopackage_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'geopackage': geopackage\n\t\t\t});\n\t\t}\n\t};\n\n\tremoveVolume (volume) {\n\t\tlet index = this.volumes.indexOf(volume);\n\t\tif (index > -1) {\n\t\t\tthis.volumes.splice(index, 1);\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'volume_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'volume': volume\n\t\t\t});\n\t\t}\n\t};\n\n\taddCameraAnimation(animation) {\n\t\tthis.cameraAnimations.push(animation);\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'camera_animation_added',\n\t\t\t'scene': this,\n\t\t\t'animation': animation\n\t\t});\n\t};\n\n\tremoveCameraAnimation(animation){\n\t\tlet index = this.cameraAnimations.indexOf(volume);\n\t\tif (index > -1) {\n\t\t\tthis.cameraAnimations.splice(index, 1);\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'camera_animation_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'animation': animation\n\t\t\t});\n\t\t}\n\t};\n\n\taddPolygonClipVolume(volume){\n\t\tthis.polygonClipVolumes.push(volume);\n\t\tthis.dispatchEvent({\n\t\t\t\"type\": \"polygon_clip_volume_added\",\n\t\t\t\"scene\": this,\n\t\t\t\"volume\": volume\n\t\t});\n\t};\n\t\n\tremovePolygonClipVolume(volume){\n\t\tlet index = this.polygonClipVolumes.indexOf(volume);\n\t\tif (index > -1) {\n\t\t\tthis.polygonClipVolumes.splice(index, 1);\n\t\t\tthis.dispatchEvent({\n\t\t\t\t\"type\": \"polygon_clip_volume_removed\",\n\t\t\t\t\"scene\": this,\n\t\t\t\t\"volume\": volume\n\t\t\t});\n\t\t}\n\t};\n\t\n\taddMeasurement(measurement){\n\t\tmeasurement.lengthUnit = this.lengthUnit;\n\t\tmeasurement.lengthUnitDisplay = this.lengthUnitDisplay;\n\t\tthis.measurements.push(measurement);\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'measurement_added',\n\t\t\t'scene': this,\n\t\t\t'measurement': measurement\n\t\t});\n\t};\n\n\tremoveMeasurement (measurement) {\n\t\tlet index = this.measurements.indexOf(measurement);\n\t\tif (index > -1) {\n\t\t\tthis.measurements.splice(index, 1);\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'measurement_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'measurement': measurement\n\t\t\t});\n\t\t}\n\t}\n\n\taddProfile (profile) {\n\t\tthis.profiles.push(profile);\n\t\tthis.dispatchEvent({\n\t\t\t'type': 'profile_added',\n\t\t\t'scene': this,\n\t\t\t'profile': profile\n\t\t});\n\t}\n\n\tremoveProfile (profile) {\n\t\tlet index = this.profiles.indexOf(profile);\n\t\tif (index > -1) {\n\t\t\tthis.profiles.splice(index, 1);\n\t\t\tthis.dispatchEvent({\n\t\t\t\t'type': 'profile_removed',\n\t\t\t\t'scene': this,\n\t\t\t\t'profile': profile\n\t\t\t});\n\t\t}\n\t}\n\n\tremoveAllMeasurements () {\n\t\twhile (this.measurements.length > 0) {\n\t\t\tthis.removeMeasurement(this.measurements[0]);\n\t\t}\n\n\t\twhile (this.profiles.length > 0) {\n\t\t\tthis.removeProfile(this.profiles[0]);\n\t\t}\n\n\t\twhile (this.volumes.length > 0) {\n\t\t\tthis.removeVolume(this.volumes[0]);\n\t\t}\n\t}\n\n\tremoveAllClipVolumes(){\n\t\tlet clipVolumes = this.volumes.filter(volume => volume.clip === true);\n\t\tfor(let clipVolume of clipVolumes){\n\t\t\tthis.removeVolume(clipVolume);\n\t\t}\n\n\t\twhile(this.polygonClipVolumes.length > 0){\n\t\t\tthis.removePolygonClipVolume(this.polygonClipVolumes[0]);\n\t\t}\n\t}\n\n\tgetActiveCamera() {\n\n\t\tif(this.overrideCamera){\n\t\t\treturn this.overrideCamera;\n\t\t}\n\n\t\tif(this.cameraMode === CameraMode.PERSPECTIVE){\n\t\t\treturn this.cameraP;\n\t\t}else if(this.cameraMode === CameraMode.ORTHOGRAPHIC){\n\t\t\treturn this.cameraO;\n\t\t}else if(this.cameraMode === CameraMode.VR){\n\t\t\treturn this.cameraVR;\n\t\t}\n\n\t\treturn null;\n\t}\n\t\n\tinitialize(){\n\t\t\n\t\tthis.referenceFrame = new THREE.Object3D();\n\t\tthis.referenceFrame.matrixAutoUpdate = false;\n\t\tthis.scenePointCloud.add(this.referenceFrame);\n\n\t\tthis.cameraP.up.set(0, 0, 1);\n\t\tthis.cameraP.position.set(1000, 1000, 1000);\n\t\tthis.cameraO.up.set(0, 0, 1);\n\t\tthis.cameraO.position.set(1000, 1000, 1000);\n\t\t//this.camera.rotation.y = -Math.PI / 4;\n\t\t//this.camera.rotation.x = -Math.PI / 6;\n\t\tthis.cameraScreenSpace.lookAt(new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, 0, -1), new THREE.Vector3(0, 1, 0));\n\t\t\n\t\tthis.directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );\n\t\tthis.directionalLight.position.set( 10, 10, 10 );\n\t\tthis.directionalLight.lookAt( new THREE.Vector3(0, 0, 0));\n\t\tthis.scenePointCloud.add( this.directionalLight );\n\t\t\n\t\tlet light = new THREE.AmbientLight( 0x555555 ); // soft white light\n\t\tthis.scenePointCloud.add( light );\n\n\t\t{ // background\n\t\t\tlet texture = Utils.createBackgroundTexture(512, 512);\n\n\t\t\ttexture.minFilter = texture.magFilter = THREE.NearestFilter;\n\t\t\ttexture.minFilter = texture.magFilter = THREE.LinearFilter;\n\t\t\tlet bg = new THREE.Mesh(\n\t\t\t\tnew THREE.PlaneBufferGeometry(2, 2, 0),\n\t\t\t\tnew THREE.MeshBasicMaterial({\n\t\t\t\t\tmap: texture\n\t\t\t\t})\n\t\t\t);\n\t\t\tbg.material.depthTest = false;\n\t\t\tbg.material.depthWrite = false;\n\t\t\tthis.sceneBG.add(bg);\n\t\t}\n\n\t\t// { // lights\n\t\t// \t{\n\t\t// \t\tlet light = new THREE.DirectionalLight(0xffffff);\n\t\t// \t\tlight.position.set(10, 10, 1);\n\t\t// \t\tlight.target.position.set(0, 0, 0);\n\t\t// \t\tthis.scene.add(light);\n\t\t// \t}\n\n\t\t// \t{\n\t\t// \t\tlet light = new THREE.DirectionalLight(0xffffff);\n\t\t// \t\tlight.position.set(-10, 10, 1);\n\t\t// \t\tlight.target.position.set(0, 0, 0);\n\t\t// \t\tthis.scene.add(light);\n\t\t// \t}\n\n\t\t// \t{\n\t\t// \t\tlet light = new THREE.DirectionalLight(0xffffff);\n\t\t// \t\tlight.position.set(0, -10, 20);\n\t\t// \t\tlight.target.position.set(0, 0, 0);\n\t\t// \t\tthis.scene.add(light);\n\t\t// \t}\n\t\t// }\n\t}\n\t\n\taddAnnotation(position, args = {}){\t\t\n\t\tif(position instanceof Array){\n\t\t\targs.position = new THREE.Vector3().fromArray(position);\n\t\t} else if (position instanceof THREE.Vector3) {\n\t\t\targs.position = position;\n\t\t}\n\t\tlet annotation = new Annotation(args);\n\t\tthis.annotations.add(annotation);\n\n\t\treturn annotation;\n\t}\n\n\tgetAnnotations () {\n\t\treturn this.annotations;\n\t};\n\n\tremoveAnnotation(annotationToRemove) {\n\t\tthis.annotations.remove(annotationToRemove);\n\t}\n};\n","\n// http://epsg.io/\nproj4.defs([\n\t['UTM10N', '+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'],\n\t['EPSG:6339', '+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6340', '+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6341', '+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6342', '+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6343', '+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6344', '+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6345', '+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6346', '+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6347', '+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:6348', '+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs'],\n\t['EPSG:26910', '+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26911', '+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26912', '+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26913', '+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26914', '+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26915', '+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26916', '+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26917', '+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26918', '+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n\t['EPSG:26919', '+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\n]);\n\nexport class MapView{\n\n\tconstructor (viewer) {\n\t\tthis.viewer = viewer;\n\n\t\tthis.webMapService = 'WMTS';\n\t\tthis.mapProjectionName = 'EPSG:3857';\n\t\tthis.mapProjection = proj4.defs(this.mapProjectionName);\n\t\tthis.sceneProjection = null;\n\n\t\tthis.extentsLayer = null;\n\t\tthis.cameraLayer = null;\n\t\tthis.toolLayer = null;\n\t\tthis.sourcesLayer = null;\n\t\tthis.sourcesLabelLayer = null;\n\t\tthis.images360Layer = null;\n\t\tthis.enabled = false;\n\n\t\tthis.createAnnotationStyle = (text) => {\n\t\t\treturn [\n\t\t\t\tnew ol.style.Style({\n\t\t\t\t\timage: new ol.style.Circle({\n\t\t\t\t\t\tradius: 10,\n\t\t\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\t\t\tcolor: [255, 255, 255, 0.5],\n\t\t\t\t\t\t\twidth: 2\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\t\t\tcolor: [0, 0, 0, 0.5]\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t];\n\t\t};\n\n\t\tthis.createLabelStyle = (text) => {\n\t\t\tlet style = new ol.style.Style({\n\t\t\t\timage: new ol.style.Circle({\n\t\t\t\t\tradius: 6,\n\t\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\t\tcolor: 'white',\n\t\t\t\t\t\twidth: 2\n\t\t\t\t\t}),\n\t\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\t\tcolor: 'green'\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t\ttext: new ol.style.Text({\n\t\t\t\t\tfont: '12px helvetica,sans-serif',\n\t\t\t\t\ttext: text,\n\t\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\t\tcolor: '#000'\n\t\t\t\t\t}),\n\t\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\t\tcolor: '#fff',\n\t\t\t\t\t\twidth: 2\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t});\n\n\t\t\treturn style;\n\t\t};\n\t}\n\n\tshowSources (show) {\n\t\tthis.sourcesLayer.setVisible(show);\n\t\tthis.sourcesLabelLayer.setVisible(show);\n\t}\n\n\tinit () {\n\n\t\tif(typeof ol === \"undefined\"){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.elMap = $('#potree_map');\n\t\tthis.elMap.draggable({ handle: $('#potree_map_header') });\n\t\tthis.elMap.resizable();\n\n\t\tthis.elTooltip = $(`
        `);\n\t\tthis.elMap.append(this.elTooltip);\n\n\t\tlet extentsLayer = this.getExtentsLayer();\n\t\tlet cameraLayer = this.getCameraLayer();\n\t\tthis.getToolLayer();\n\t\tlet sourcesLayer = this.getSourcesLayer();\n\t\tthis.images360Layer = this.getImages360Layer();\n\t\tthis.getSourcesLabelLayer();\n\t\tthis.getAnnotationsLayer();\n\n\t\tlet mousePositionControl = new ol.control.MousePosition({\n\t\t\tcoordinateFormat: ol.coordinate.createStringXY(5),\n\t\t\tprojection: 'EPSG:4326',\n\t\t\tundefinedHTML: ' '\n\t\t});\n\n\t\tlet _this = this;\n\t\tlet DownloadSelectionControl = function (optOptions) {\n\t\t\tlet options = optOptions || {};\n\n\t\t\t// TOGGLE TILES\n\t\t\tlet btToggleTiles = document.createElement('button');\n\t\t\tbtToggleTiles.innerHTML = 'T';\n\t\t\tbtToggleTiles.addEventListener('click', () => {\n\t\t\t\tlet visible = sourcesLayer.getVisible();\n\t\t\t\t_this.showSources(!visible);\n\t\t\t}, false);\n\t\t\tbtToggleTiles.style.float = 'left';\n\t\t\tbtToggleTiles.title = 'show / hide tiles';\n\n\t\t\t// DOWNLOAD SELECTED TILES\n\t\t\tlet link = document.createElement('a');\n\t\t\tlink.href = '#';\n\t\t\tlink.download = 'list.txt';\n\t\t\tlink.style.float = 'left';\n\n\t\t\tlet button = document.createElement('button');\n\t\t\tbutton.innerHTML = 'D';\n\t\t\tlink.appendChild(button);\n\n\t\t\tlet handleDownload = (e) => {\n\t\t\t\tlet features = selectedFeatures.getArray();\n\n\t\t\t\tlet url = [document.location.protocol, '//', document.location.host, document.location.pathname].join('');\n\n\t\t\t\tif (features.length === 0) {\n\t\t\t\t\talert('No tiles were selected. Select area with ctrl + left mouse button!');\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t} else if (features.length === 1) {\n\t\t\t\t\tlet feature = features[0];\n\n\t\t\t\t\tif (feature.source) {\n\t\t\t\t\t\tlet cloudjsurl = feature.pointcloud.pcoGeometry.url;\n\t\t\t\t\t\tlet sourceurl = new URL(url + '/../' + cloudjsurl + '/../source/' + feature.source.name);\n\t\t\t\t\t\tlink.href = sourceurl.href;\n\t\t\t\t\t\tlink.download = feature.source.name;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet content = '';\n\t\t\t\t\tfor (let i = 0; i < features.length; i++) {\n\t\t\t\t\t\tlet feature = features[i];\n\n\t\t\t\t\t\tif (feature.source) {\n\t\t\t\t\t\t\tlet cloudjsurl = feature.pointcloud.pcoGeometry.url;\n\t\t\t\t\t\t\tlet sourceurl = new URL(url + '/../' + cloudjsurl + '/../source/' + feature.source.name);\n\t\t\t\t\t\t\tcontent += sourceurl.href + '\\n';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet uri = 'data:application/octet-stream;base64,' + btoa(content);\n\t\t\t\t\tlink.href = uri;\n\t\t\t\t\tlink.download = 'list_of_files.txt';\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tbutton.addEventListener('click', handleDownload, false);\n\n\t\t\t// assemble container\n\t\t\tlet element = document.createElement('div');\n\t\t\telement.className = 'ol-unselectable ol-control';\n\t\t\telement.appendChild(link);\n\t\t\telement.appendChild(btToggleTiles);\n\t\t\telement.style.bottom = '0.5em';\n\t\t\telement.style.left = '0.5em';\n\t\t\telement.title = 'Download file or list of selected tiles. Select tile with left mouse button or area using ctrl + left mouse.';\n\n\t\t\tol.control.Control.call(this, {\n\t\t\t\telement: element,\n\t\t\t\ttarget: options.target\n\t\t\t});\n\t\t};\n\t\tol.inherits(DownloadSelectionControl, ol.control.Control);\n\n\t\tthis.map = new ol.Map({\n\t\t\tcontrols: ol.control.defaults({\n\t\t\t\tattributionOptions: ({\n\t\t\t\t\tcollapsible: false\n\t\t\t\t})\n\t\t\t}).extend([\n\t\t\t\t// this.controls.zoomToExtent,\n\t\t\t\tnew DownloadSelectionControl(),\n\t\t\t\tmousePositionControl\n\t\t\t]),\n\t\t\tlayers: [\n\t\t\t\tnew ol.layer.Tile({source: new ol.source.OSM()}),\n\t\t\t\tthis.toolLayer,\n\t\t\t\tthis.annotationsLayer,\n\t\t\t\tthis.sourcesLayer,\n\t\t\t\tthis.sourcesLabelLayer,\n\t\t\t\tthis.images360Layer,\n\t\t\t\textentsLayer,\n\t\t\t\tcameraLayer\n\t\t\t],\n\t\t\ttarget: 'potree_map_content',\n\t\t\tview: new ol.View({\n\t\t\t\tcenter: this.olCenter,\n\t\t\t\tzoom: 9\n\t\t\t})\n\t\t});\n\n\t\t// DRAGBOX / SELECTION\n\t\tthis.dragBoxLayer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({}),\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: 'rgba(0, 0, 255, 1)',\n\t\t\t\t\twidth: 2\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\t\tthis.map.addLayer(this.dragBoxLayer);\n\n\t\tlet select = new ol.interaction.Select();\n\t\tthis.map.addInteraction(select);\n\n\t\tlet selectedFeatures = select.getFeatures();\n\n\t\tlet dragBox = new ol.interaction.DragBox({\n\t\t\tcondition: ol.events.condition.platformModifierKeyOnly\n\t\t});\n\n\t\tthis.map.addInteraction(dragBox);\n\n\t\t// this.map.on('pointermove', evt => {\n\t\t// \tlet pixel = evt.pixel;\n\t\t// \tlet feature = this.map.forEachFeatureAtPixel(pixel, function (feature) {\n\t\t// \t\treturn feature;\n\t\t// \t});\n\n\t\t// \t// console.log(feature);\n\t\t// \t// this.elTooltip.css(\"display\", feature ? '' : 'none');\n\t\t// \tthis.elTooltip.css('display', 'none');\n\t\t// \tif (feature && feature.onHover) {\n\t\t// \t\tfeature.onHover(evt);\n\t\t// \t\t// overlay.setPosition(evt.coordinate);\n\t\t// \t\t// tooltip.innerHTML = feature.get('name');\n\t\t// \t}\n\t\t// });\n\n\t\tthis.map.on('click', evt => {\n\t\t\tlet pixel = evt.pixel;\n\t\t\tlet feature = this.map.forEachFeatureAtPixel(pixel, function (feature) {\n\t\t\t\treturn feature;\n\t\t\t});\n\n\t\t\tif (feature && feature.onClick) {\n\t\t\t\tfeature.onClick(evt);\n\t\t\t}\n\t\t});\n\n\t\tdragBox.on('boxend', (e) => {\n\t\t\t// features that intersect the box are added to the collection of\n\t\t\t// selected features, and their names are displayed in the \"info\"\n\t\t\t// div\n\t\t\tlet extent = dragBox.getGeometry().getExtent();\n\t\t\tthis.getSourcesLayer().getSource().forEachFeatureIntersectingExtent(extent, (feature) => {\n\t\t\t\tselectedFeatures.push(feature);\n\t\t\t});\n\t\t});\n\n\t\t// clear selection when drawing a new box and when clicking on the map\n\t\tdragBox.on('boxstart', (e) => {\n\t\t\tselectedFeatures.clear();\n\t\t});\n\t\tthis.map.on('click', () => {\n\t\t\tselectedFeatures.clear();\n\t\t});\n\n\t\tthis.viewer.addEventListener('scene_changed', e => {\n\t\t\tthis.setScene(e.scene);\n\t\t});\n\n\t\tthis.onPointcloudAdded = e => {\n\t\t\tthis.load(e.pointcloud);\n\t\t};\n\n\t\tthis.on360ImagesAdded = e => {\n\t\t\tthis.addImages360(e.images);\n\t\t};\n\n\t\tthis.onAnnotationAdded = e => {\n\t\t\tif (!this.sceneProjection) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet annotation = e.annotation;\n\t\t\tlet position = annotation.position;\n\t\t\tlet mapPos = this.toMap.forward([position.x, position.y]);\n\t\t\tlet feature = new ol.Feature({\n\t\t\t\tgeometry: new ol.geom.Point(mapPos),\n\t\t\t\tname: annotation.title\n\t\t\t});\n\t\t\tfeature.setStyle(this.createAnnotationStyle(annotation.title));\n\n\t\t\tfeature.onHover = evt => {\n\t\t\t\tlet coordinates = feature.getGeometry().getCoordinates();\n\t\t\t\tlet p = this.map.getPixelFromCoordinate(coordinates);\n\n\t\t\t\tthis.elTooltip.html(annotation.title);\n\t\t\t\tthis.elTooltip.css('display', '');\n\t\t\t\tthis.elTooltip.css('left', `${p[0]}px`);\n\t\t\t\tthis.elTooltip.css('top', `${p[1]}px`);\n\t\t\t};\n\n\t\t\tfeature.onClick = evt => {\n\t\t\t\tannotation.clickTitle();\n\t\t\t};\n\n\t\t\tthis.getAnnotationsLayer().getSource().addFeature(feature);\n\t\t};\n\n\t\tthis.setScene(this.viewer.scene);\n\t}\n\n\tsetScene (scene) {\n\t\tif (this.scene === scene) {\n\t\t\treturn;\n\t\t};\n\n\t\tif (this.scene) {\n\t\t\tthis.scene.removeEventListener('pointcloud_added', this.onPointcloudAdded);\n\t\t\tthis.scene.removeEventListener('360_images_added', this.on360ImagesAdded);\n\t\t\tthis.scene.annotations.removeEventListener('annotation_added', this.onAnnotationAdded);\n\t\t}\n\n\t\tthis.scene = scene;\n\n\t\tthis.scene.addEventListener('pointcloud_added', this.onPointcloudAdded);\n\t\tthis.scene.addEventListener('360_images_added', this.on360ImagesAdded);\n\t\tthis.scene.annotations.addEventListener('annotation_added', this.onAnnotationAdded);\n\n\t\tfor (let pointcloud of this.viewer.scene.pointclouds) {\n\t\t\tthis.load(pointcloud);\n\t\t}\n\n\t\tthis.viewer.scene.annotations.traverseDescendants(annotation => {\n\t\t\tthis.onAnnotationAdded({annotation: annotation});\n\t\t});\n\n\t\tfor(let images of this.viewer.scene.images360){\n\t\t\tthis.on360ImagesAdded({images: images});\n\t\t}\n\t}\n\n\tgetExtentsLayer () {\n\t\tif (this.extentsLayer) {\n\t\t\treturn this.extentsLayer;\n\t\t}\n\n\t\tthis.gExtent = new ol.geom.LineString([[0, 0], [0, 0]]);\n\n\t\tlet feature = new ol.Feature(this.gExtent);\n\t\tlet featureVector = new ol.source.Vector({\n\t\t\tfeatures: [feature]\n\t\t});\n\n\t\tthis.extentsLayer = new ol.layer.Vector({\n\t\t\tsource: featureVector,\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: 'rgba(255, 255, 255, 0.2)'\n\t\t\t\t}),\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: '#0000ff',\n\t\t\t\t\twidth: 2\n\t\t\t\t}),\n\t\t\t\timage: new ol.style.Circle({\n\t\t\t\t\tradius: 3,\n\t\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\t\tcolor: '#0000ff'\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\n\t\treturn this.extentsLayer;\n\t}\n\n\tgetAnnotationsLayer () {\n\t\tif (this.annotationsLayer) {\n\t\t\treturn this.annotationsLayer;\n\t\t}\n\n\t\tthis.annotationsLayer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({\n\t\t\t}),\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)'\n\t\t\t\t}),\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)',\n\t\t\t\t\twidth: 2\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\n\t\treturn this.annotationsLayer;\n\t}\n\n\tgetCameraLayer () {\n\t\tif (this.cameraLayer) {\n\t\t\treturn this.cameraLayer;\n\t\t}\n\n\t\t// CAMERA LAYER\n\t\tthis.gCamera = new ol.geom.LineString([[0, 0], [0, 0], [0, 0], [0, 0]]);\n\t\tlet feature = new ol.Feature(this.gCamera);\n\t\tlet featureVector = new ol.source.Vector({\n\t\t\tfeatures: [feature]\n\t\t});\n\n\t\tthis.cameraLayer = new ol.layer.Vector({\n\t\t\tsource: featureVector,\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: '#0000ff',\n\t\t\t\t\twidth: 2\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\n\t\treturn this.cameraLayer;\n\t}\n\n\tgetToolLayer () {\n\t\tif (this.toolLayer) {\n\t\t\treturn this.toolLayer;\n\t\t}\n\n\t\tthis.toolLayer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({\n\t\t\t}),\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)'\n\t\t\t\t}),\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)',\n\t\t\t\t\twidth: 2\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\n\t\treturn this.toolLayer;\n\t}\n\n\tgetImages360Layer(){\n\t\tif(this.images360Layer){\n\t\t\treturn this.images360Layer;\n\t\t}\n\n\t\tlet style = new ol.style.Style({\n\t\t\timage: new ol.style.Circle({\n\t\t\t\tradius: 4,\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: [255, 0, 0, 1],\n\t\t\t\t\twidth: 2\n\t\t\t\t}),\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: [255, 100, 100, 1]\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\t\t\n\t\tlet layer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({}),\n\t\t\tstyle: style,\n\t\t});\n\n\t\tthis.images360Layer = layer;\n\n\t\treturn this.images360Layer;\n\t}\n\n\tgetSourcesLayer () {\n\t\tif (this.sourcesLayer) {\n\t\t\treturn this.sourcesLayer;\n\t\t}\n\n\t\tthis.sourcesLayer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({}),\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: 'rgba(0, 0, 150, 0.1)'\n\t\t\t\t}),\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: 'rgba(0, 0, 150, 1)',\n\t\t\t\t\twidth: 1\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\n\t\treturn this.sourcesLayer;\n\t}\n\n\tgetSourcesLabelLayer () {\n\t\tif (this.sourcesLabelLayer) {\n\t\t\treturn this.sourcesLabelLayer;\n\t\t}\n\n\t\tthis.sourcesLabelLayer = new ol.layer.Vector({\n\t\t\tsource: new ol.source.Vector({\n\t\t\t}),\n\t\t\tstyle: new ol.style.Style({\n\t\t\t\tfill: new ol.style.Fill({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 0.1)'\n\t\t\t\t}),\n\t\t\t\tstroke: new ol.style.Stroke({\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)',\n\t\t\t\t\twidth: 2\n\t\t\t\t})\n\t\t\t}),\n\t\t\tminResolution: 0.01,\n\t\t\tmaxResolution: 20\n\t\t});\n\n\t\treturn this.sourcesLabelLayer;\n\t}\n\n\tsetSceneProjection (sceneProjection) {\n\t\tthis.sceneProjection = sceneProjection;\n\t\tthis.toMap = proj4(this.sceneProjection, this.mapProjection);\n\t\tthis.toScene = proj4(this.mapProjection, this.sceneProjection);\n\t};\n\n\tgetMapExtent () {\n\t\tlet bb = this.viewer.getBoundingBox();\n\n\t\tlet bottomLeft = this.toMap.forward([bb.min.x, bb.min.y]);\n\t\tlet bottomRight = this.toMap.forward([bb.max.x, bb.min.y]);\n\t\tlet topRight = this.toMap.forward([bb.max.x, bb.max.y]);\n\t\tlet topLeft = this.toMap.forward([bb.min.x, bb.max.y]);\n\n\t\tlet extent = {\n\t\t\tbottomLeft: bottomLeft,\n\t\t\tbottomRight: bottomRight,\n\t\t\ttopRight: topRight,\n\t\t\ttopLeft: topLeft\n\t\t};\n\n\t\treturn extent;\n\t};\n\n\tgetMapCenter () {\n\t\tlet mapExtent = this.getMapExtent();\n\n\t\tlet mapCenter = [\n\t\t\t(mapExtent.bottomLeft[0] + mapExtent.topRight[0]) / 2,\n\t\t\t(mapExtent.bottomLeft[1] + mapExtent.topRight[1]) / 2\n\t\t];\n\n\t\treturn mapCenter;\n\t};\n\n\tupdateToolDrawings () {\n\t\tthis.toolLayer.getSource().clear();\n\n\t\tlet profiles = this.viewer.profileTool.profiles;\n\t\tfor (let i = 0; i < profiles.length; i++) {\n\t\t\tlet profile = profiles[i];\n\t\t\tlet coordinates = [];\n\n\t\t\tfor (let j = 0; j < profile.points.length; j++) {\n\t\t\t\tlet point = profile.points[j];\n\t\t\t\tlet pointMap = this.toMap.forward([point.x, point.y]);\n\t\t\t\tcoordinates.push(pointMap);\n\t\t\t}\n\n\t\t\tlet line = new ol.geom.LineString(coordinates);\n\t\t\tlet feature = new ol.Feature(line);\n\t\t\tthis.toolLayer.getSource().addFeature(feature);\n\t\t}\n\n\t\tlet measurements = this.viewer.measuringTool.measurements;\n\t\tfor (let i = 0; i < measurements.length; i++) {\n\t\t\tlet measurement = measurements[i];\n\t\t\tlet coordinates = [];\n\n\t\t\tfor (let j = 0; j < measurement.points.length; j++) {\n\t\t\t\tlet point = measurement.points[j].position;\n\t\t\t\tlet pointMap = this.toMap.forward([point.x, point.y]);\n\t\t\t\tcoordinates.push(pointMap);\n\t\t\t}\n\n\t\t\tif (measurement.closed && measurement.points.length > 0) {\n\t\t\t\tcoordinates.push(coordinates[0]);\n\t\t\t}\n\n\t\t\tlet line = new ol.geom.LineString(coordinates);\n\t\t\tlet feature = new ol.Feature(line);\n\t\t\tthis.toolLayer.getSource().addFeature(feature);\n\t\t}\n\t}\n\n\taddImages360(images){\n\t\tlet transform = this.toMap.forward;\n\t\tlet layer = this.getImages360Layer();\n\n\t\tfor(let image of images.images){\n\n\t\t\tlet p = transform([image.position[0], image.position[1]]);\n\n\t\t\tlet feature = new ol.Feature({\n\t\t\t\t'geometry': new ol.geom.Point(p),\n\t\t\t});\n\n\t\t\tfeature.onClick = () => {\n\t\t\t\timages.focus(image);\n\t\t\t};\n\n\t\t\tlayer.getSource().addFeature(feature);\n\t\t}\n\t}\n\n\tasync load (pointcloud) {\n\t\tif (!pointcloud) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!pointcloud.projection) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.sceneProjection) {\n\t\t\ttry {\n\t\t\t\tthis.setSceneProjection(pointcloud.projection);\n\t\t\t}catch (e) {\n\t\t\t\tconsole.log('Failed projection:', e);\n\n\t\t\t\tif (pointcloud.fallbackProjection) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconsole.log('Trying fallback projection...');\n\t\t\t\t\t\tthis.setSceneProjection(pointcloud.fallbackProjection);\n\t\t\t\t\t\tconsole.log('Set projection from fallback');\n\t\t\t\t\t}catch (e) {\n\t\t\t\t\t\tconsole.log('Failed fallback projection:', e);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\treturn;\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tlet mapExtent = this.getMapExtent();\n\t\tlet mapCenter = this.getMapCenter();\n\n\t\tlet view = this.map.getView();\n\t\tview.setCenter(mapCenter);\n\n\t\tthis.gExtent.setCoordinates([\n\t\t\tmapExtent.bottomLeft,\n\t\t\tmapExtent.bottomRight,\n\t\t\tmapExtent.topRight,\n\t\t\tmapExtent.topLeft,\n\t\t\tmapExtent.bottomLeft\n\t\t]);\n\n\t\tview.fit(this.gExtent, [300, 300], {\n\t\t\tconstrainResolution: false\n\t\t});\n\n\t\tif (pointcloud.pcoGeometry.type == 'ept'){ \n\t\t\treturn;\n\t\t}\n\n\t\tlet url = `${pointcloud.pcoGeometry.url}/../sources.json`;\n\t\t//let response = await fetch(url);\n\n\t\tfetch(url).then(async (response) => {\n\t\t\tlet data = await response.json();\n\t\t\n\t\t\tlet sources = data.sources;\n\n\t\t\tfor (let i = 0; i < sources.length; i++) {\n\t\t\t\tlet source = sources[i];\n\t\t\t\tlet name = source.name;\n\t\t\t\tlet bounds = source.bounds;\n\n\t\t\t\tlet mapBounds = {\n\t\t\t\t\tmin: this.toMap.forward([bounds.min[0], bounds.min[1]]),\n\t\t\t\t\tmax: this.toMap.forward([bounds.max[0], bounds.max[1]])\n\t\t\t\t};\n\t\t\t\tlet mapCenter = [\n\t\t\t\t\t(mapBounds.min[0] + mapBounds.max[0]) / 2,\n\t\t\t\t\t(mapBounds.min[1] + mapBounds.max[1]) / 2\n\t\t\t\t];\n\n\t\t\t\tlet p1 = this.toMap.forward([bounds.min[0], bounds.min[1]]);\n\t\t\t\tlet p2 = this.toMap.forward([bounds.max[0], bounds.min[1]]);\n\t\t\t\tlet p3 = this.toMap.forward([bounds.max[0], bounds.max[1]]);\n\t\t\t\tlet p4 = this.toMap.forward([bounds.min[0], bounds.max[1]]);\n\n\t\t\t\t// let feature = new ol.Feature({\n\t\t\t\t//\t'geometry': new ol.geom.LineString([p1, p2, p3, p4, p1])\n\t\t\t\t// });\n\t\t\t\tlet feature = new ol.Feature({\n\t\t\t\t\t'geometry': new ol.geom.Polygon([[p1, p2, p3, p4, p1]])\n\t\t\t\t});\n\t\t\t\tfeature.source = source;\n\t\t\t\tfeature.pointcloud = pointcloud;\n\t\t\t\tthis.getSourcesLayer().getSource().addFeature(feature);\n\n\t\t\t\tfeature = new ol.Feature({\n\t\t\t\t\tgeometry: new ol.geom.Point(mapCenter),\n\t\t\t\t\tname: name\n\t\t\t\t});\n\t\t\t\tfeature.setStyle(this.createLabelStyle(name));\n\t\t\t\tthis.sourcesLabelLayer.getSource().addFeature(feature);\n\t\t\t}\n\t\t}).catch(() => {\n\t\t\t\n\t\t});\n\n\t}\n\n\ttoggle () {\n\t\tif (this.elMap.is(':visible')) {\n\t\t\tthis.elMap.css('display', 'none');\n\t\t\tthis.enabled = false;\n\t\t} else {\n\t\t\tthis.elMap.css('display', 'block');\n\t\t\tthis.enabled = true;\n\t\t}\n\t}\n\n\tupdate (delta) {\n\t\tif (!this.sceneProjection) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet pm = $('#potree_map');\n\n\t\tif (!this.enabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// resize\n\t\tlet mapSize = this.map.getSize();\n\t\tlet resized = (pm.width() !== mapSize[0] || pm.height() !== mapSize[1]);\n\t\tif (resized) {\n\t\t\tthis.map.updateSize();\n\t\t}\n\n\t\t//\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\n\t\tlet scale = this.map.getView().getResolution();\n\t\tlet campos = camera.position;\n\t\tlet camdir = camera.getWorldDirection(new THREE.Vector3());\n\t\tlet sceneLookAt = camdir.clone().multiplyScalar(30 * scale).add(campos);\n\t\tlet geoPos = camera.position;\n\t\tlet geoLookAt = sceneLookAt;\n\t\tlet mapPos = new THREE.Vector2().fromArray(this.toMap.forward([geoPos.x, geoPos.y]));\n\t\tlet mapLookAt = new THREE.Vector2().fromArray(this.toMap.forward([geoLookAt.x, geoLookAt.y]));\n\t\tlet mapDir = new THREE.Vector2().subVectors(mapLookAt, mapPos).normalize();\n\n\t\tmapLookAt = mapPos.clone().add(mapDir.clone().multiplyScalar(30 * scale));\n\t\tlet mapLength = mapPos.distanceTo(mapLookAt);\n\t\tlet mapSide = new THREE.Vector2(-mapDir.y, mapDir.x);\n\n\t\tlet p1 = mapPos.toArray();\n\t\tlet p2 = mapLookAt.clone().sub(mapSide.clone().multiplyScalar(0.3 * mapLength)).toArray();\n\t\tlet p3 = mapLookAt.clone().add(mapSide.clone().multiplyScalar(0.3 * mapLength)).toArray();\n\n\t\tthis.gCamera.setCoordinates([p1, p2, p3, p1]);\n\t}\n\n\tget sourcesVisible () {\n\t\treturn this.getSourcesLayer().getVisible();\n\t}\n\n\tset sourcesVisible (value) {\n\t\tthis.getSourcesLayer().setVisible(value);\n\t}\n\n}\n","\nexport class CSVExporter {\n\tstatic toString (points) {\n\t\tlet string = '';\n\n\t\tlet attributes = Object.keys(points.data)\n\t\t\t.filter(a => a !== 'normal')\n\t\t\t.sort((a, b) => {\n\t\t\t\tif (a === 'position') return -1;\n\t\t\t\tif (b === 'position') return 1;\n\t\t\t\tif (a === 'rgba') return -1;\n\t\t\t\tif (b === 'rgba') return 1;\n\t\t\t});\n\n\t\tlet headerValues = [];\n\t\tfor (let attribute of attributes) {\n\t\t\tlet itemSize = points.data[attribute].length / points.numPoints;\n\n\t\t\tif (attribute === 'position') {\n\t\t\t\theaderValues = headerValues.concat(['x', 'y', 'z']);\n\t\t\t} else if (attribute === 'rgba') {\n\t\t\t\theaderValues = headerValues.concat(['r', 'g', 'b', 'a']);\n\t\t\t} else if (itemSize > 1) {\n\t\t\t\tfor (let i = 0; i < itemSize; i++) {\n\t\t\t\t\theaderValues.push(`${attribute}_${i}`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\theaderValues.push(attribute);\n\t\t\t}\n\t\t}\n\t\tstring = headerValues.join(', ') + '\\n';\n\n\t\tfor (let i = 0; i < points.numPoints; i++) {\n\t\t\tlet values = [];\n\n\t\t\tfor (let attribute of attributes) {\n\t\t\t\tlet itemSize = points.data[attribute].length / points.numPoints;\n\t\t\t\tlet value = points.data[attribute]\n\t\t\t\t\t.subarray(itemSize * i, itemSize * i + itemSize)\n\t\t\t\t\t.join(', ');\n\t\t\t\tvalues.push(value);\n\t\t\t}\n\n\t\t\tstring += values.join(', ') + '\\n';\n\t\t}\n\n\t\treturn string;\n\t}\n};\n","\nexport class LASExporter {\n\tstatic toLAS (points) {\n\t\t// TODO Unused: let string = '';\n\n\t\tlet boundingBox = points.boundingBox;\n\t\tlet offset = boundingBox.min.clone();\n\t\tlet diagonal = boundingBox.min.distanceTo(boundingBox.max);\n\t\tlet scale = new THREE.Vector3(0.001, 0.001, 0.001);\n\t\tif (diagonal > 1000 * 1000) {\n\t\t\tscale = new THREE.Vector3(0.01, 0.01, 0.01);\n\t\t} else {\n\t\t\tscale = new THREE.Vector3(0.001, 0.001, 0.001);\n\t\t}\n\n\t\tlet setString = function (string, offset, buffer) {\n\t\t\tlet view = new Uint8Array(buffer);\n\n\t\t\tfor (let i = 0; i < string.length; i++) {\n\t\t\t\tlet charCode = string.charCodeAt(i);\n\t\t\t\tview[offset + i] = charCode;\n\t\t\t}\n\t\t};\n\n\t\tlet buffer = new ArrayBuffer(227 + 28 * points.numPoints);\n\t\tlet view = new DataView(buffer);\n\t\tlet u8View = new Uint8Array(buffer);\n\t\t// let u16View = new Uint16Array(buffer);\n\n\t\tsetString('LASF', 0, buffer);\n\t\tu8View[24] = 1;\n\t\tu8View[25] = 2;\n\n\t\t// system identifier o:26 l:32\n\n\t\t// generating software o:58 l:32\n\t\tsetString('Potree 1.7', 58, buffer);\n\n\t\t// file creation day of year o:90 l:2\n\t\t// file creation year o:92 l:2\n\n\t\t// header size o:94 l:2\n\t\tview.setUint16(94, 227, true);\n\n\t\t// offset to point data o:96 l:4\n\t\tview.setUint32(96, 227, true);\n\n\t\t// number of letiable length records o:100 l:4\n\n\t\t// point data record format 104 1\n\t\tu8View[104] = 2;\n\n\t\t// point data record length 105 2\n\t\tview.setUint16(105, 28, true);\n\n\t\t// number of point records 107 4\n\t\tview.setUint32(107, points.numPoints, true);\n\n\t\t// number of points by return 111 20\n\n\t\t// x scale factor 131 8\n\t\tview.setFloat64(131, scale.x, true);\n\n\t\t// y scale factor 139 8\n\t\tview.setFloat64(139, scale.y, true);\n\n\t\t// z scale factor 147 8\n\t\tview.setFloat64(147, scale.z, true);\n\n\t\t// x offset 155 8\n\t\tview.setFloat64(155, offset.x, true);\n\n\t\t// y offset 163 8\n\t\tview.setFloat64(163, offset.y, true);\n\n\t\t// z offset 171 8\n\t\tview.setFloat64(171, offset.z, true);\n\n\t\t// max x 179 8\n\t\tview.setFloat64(179, boundingBox.max.x, true);\n\n\t\t// min x 187 8\n\t\tview.setFloat64(187, boundingBox.min.x, true);\n\n\t\t// max y 195 8\n\t\tview.setFloat64(195, boundingBox.max.y, true);\n\n\t\t// min y 203 8\n\t\tview.setFloat64(203, boundingBox.min.y, true);\n\n\t\t// max z 211 8\n\t\tview.setFloat64(211, boundingBox.max.z, true);\n\n\t\t// min z 219 8\n\t\tview.setFloat64(219, boundingBox.min.z, true);\n\n\t\tlet boffset = 227;\n\t\tfor (let i = 0; i < points.numPoints; i++) {\n\n\t\t\tlet px = points.data.position[3 * i + 0];\n\t\t\tlet py = points.data.position[3 * i + 1];\n\t\t\tlet pz = points.data.position[3 * i + 2];\n\n\t\t\tlet ux = parseInt((px - offset.x) / scale.x);\n\t\t\tlet uy = parseInt((py - offset.y) / scale.y);\n\t\t\tlet uz = parseInt((pz - offset.z) / scale.z);\n\n\t\t\tview.setUint32(boffset + 0, ux, true);\n\t\t\tview.setUint32(boffset + 4, uy, true);\n\t\t\tview.setUint32(boffset + 8, uz, true);\n\n\t\t\tif (points.data.intensity) {\n\t\t\t\tview.setUint16(boffset + 12, (points.data.intensity[i]), true);\n\t\t\t}\n\n\t\t\tlet rt = 0;\n\t\t\tif (points.data.returnNumber) {\n\t\t\t\trt += points.data.returnNumber[i];\n\t\t\t}\n\t\t\tif (points.data.numberOfReturns) {\n\t\t\t\trt += (points.data.numberOfReturns[i] << 3);\n\t\t\t}\n\t\t\tview.setUint8(boffset + 14, rt);\n\n\t\t\tif (points.data.classification) {\n\t\t\t\tview.setUint8(boffset + 15, points.data.classification[i]);\n\t\t\t}\n\t\t\t// scan angle rank\n\t\t\t// user data\n\t\t\t// point source id\n\t\t\tif (points.data.pointSourceID) {\n\t\t\t\tview.setUint16(boffset + 18, points.data.pointSourceID[i]);\n\t\t\t}\n\n\t\t\tif (points.data.rgba) {\n\t\t\t\tlet rgba = points.data.rgba;\n\t\t\t\tview.setUint16(boffset + 20, (rgba[4 * i + 0] * 255), true);\n\t\t\t\tview.setUint16(boffset + 22, (rgba[4 * i + 1] * 255), true);\n\t\t\t\tview.setUint16(boffset + 24, (rgba[4 * i + 2] * 255), true);\n\t\t\t}\n\n\t\t\tboffset += 28;\n\t\t}\n\n\t\treturn buffer;\n\t}\n\t\n}\n","\n\nimport {Utils} from \"../utils.js\";\nimport {Points} from \"../Points.js\";\nimport {CSVExporter} from \"../exporter/CSVExporter.js\";\nimport {LASExporter} from \"../exporter/LASExporter.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\nimport {PointCloudTree} from \"../PointCloudTree.js\";\nimport {Renderer} from \"../PotreeRenderer.js\";\nimport {PointCloudMaterial} from \"../materials/PointCloudMaterial.js\";\nimport {PointSizeType} from \"../defines.js\";\n\n\nfunction copyMaterial(source, target){\n\n\tfor(let name of Object.keys(target.uniforms)){\n\t\ttarget.uniforms[name].value = source.uniforms[name].value;\n\t}\n\n\ttarget.gradientTexture = source.gradientTexture;\n\ttarget.visibleNodesTexture = source.visibleNodesTexture;\n\ttarget.classificationTexture = source.classificationTexture;\n\ttarget.matcapTexture = source.matcapTexture;\n\n\ttarget.activeAttributeName = source.activeAttributeName;\n\ttarget.ranges = source.ranges;\n\n\t//target.updateShaderSource();\n}\n\n\nclass Batch{\n\n\tconstructor(geometry, material){\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.sceneNode = new THREE.Points(geometry, material);\n\n\t\tthis.geometryNode = {\n\t\t\testimatedSpacing: 1.0,\n\t\t\tgeometry: geometry,\n\t\t};\n\t}\n\n\tgetLevel(){\n\t\treturn 0;\n\t}\n\n}\n\nclass ProfileFakeOctree extends PointCloudTree{\n\n\tconstructor(octree){\n\t\tsuper();\n\n\t\tthis.trueOctree = octree;\n\t\tthis.pcoGeometry = octree.pcoGeometry;\n\t\tthis.points = [];\n\t\tthis.visibleNodes = [];\n\t\t\n\t\t//this.material = this.trueOctree.material;\n\t\tthis.material = new PointCloudMaterial();\n\t\t//this.material.copy(this.trueOctree.material);\n\t\tcopyMaterial(this.trueOctree.material, this.material);\n\t\tthis.material.pointSizeType = PointSizeType.FIXED;\n\n\t\tthis.batchSize = 100 * 1000;\n\t\tthis.currentBatch = null\n\t}\n\n\tgetAttribute(name){\n\t\treturn this.trueOctree.getAttribute(name);\n\t}\n\n\tdispose(){\n\t\tfor(let node of this.visibleNodes){\n\t\t\tnode.geometry.dispose();\n\t\t}\n\n\t\tthis.visibleNodes = [];\n\t\tthis.currentBatch = null;\n\t\tthis.points = [];\n\t}\n\n\taddPoints(data){\n\t\t// since each call to addPoints can deliver very very few points,\n\t\t// we're going to batch them into larger buffers for efficiency.\n\n\t\tif(this.currentBatch === null){\n\t\t\tthis.currentBatch = this.createNewBatch(data);\n\t\t}\n\n\t\tthis.points.push(data);\n\n\n\t\tlet updateRange = {\n\t\t\tstart: this.currentBatch.geometry.drawRange.count,\n\t\t\tcount: 0\n\t\t};\n\t\tlet projectedBox = new THREE.Box3();\n\n\t\tlet truePos = new THREE.Vector3();\n\n\t\tfor(let i = 0; i < data.numPoints; i++){\n\n\t\t\tif(updateRange.start + updateRange.count >= this.batchSize){\n\t\t\t\t// current batch full, start new batch\n\n\t\t\t\tfor(let key of Object.keys(this.currentBatch.geometry.attributes)){\n\t\t\t\t\tlet attribute = this.currentBatch.geometry.attributes[key];\n\t\t\t\t\tattribute.updateRange.offset = updateRange.start;\n\t\t\t\t\tattribute.updateRange.count = updateRange.count;\n\t\t\t\t\tattribute.needsUpdate = true;\n\t\t\t\t}\n\n\t\t\t\tthis.currentBatch.geometry.computeBoundingBox();\n\t\t\t\tthis.currentBatch.geometry.computeBoundingSphere();\n\n\t\t\t\tthis.currentBatch = this.createNewBatch();\n\t\t\t\tupdateRange = {\n\t\t\t\t\tstart: 0,\n\t\t\t\t\tcount: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\ttruePos.set(\n\t\t\t\tdata.data.position[3 * i + 0] + this.trueOctree.position.x,\n\t\t\t\tdata.data.position[3 * i + 1] + this.trueOctree.position.y,\n\t\t\t\tdata.data.position[3 * i + 2] + this.trueOctree.position.z,\n\t\t\t);\n\n\t\t\tlet x = data.data.mileage[i];\n\t\t\tlet y = 0;\n\t\t\tlet z = truePos.z;\n\n\t\t\tprojectedBox.expandByPoint(new THREE.Vector3(x, y, z));\n\n\t\t\tlet index = updateRange.start + updateRange.count;\n\t\t\tlet geometry = this.currentBatch.geometry;\n\n\t\t\tfor(let attributeName of Object.keys(data.data)){\n\t\t\t\tlet source = data.data[attributeName];\n\t\t\t\tlet target = geometry.attributes[attributeName];\n\t\t\t\tlet numElements = target.itemSize;\n\t\t\t\t\n\t\t\t\tfor(let item = 0; item < numElements; item++){\n\t\t\t\t\ttarget.array[numElements * index + item] = source[numElements * i + item];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t{\n\t\t\t\tlet position = geometry.attributes.position;\n\n\t\t\t\tposition.array[3 * index + 0] = x;\n\t\t\t\tposition.array[3 * index + 1] = y;\n\t\t\t\tposition.array[3 * index + 2] = z;\n\t\t\t}\n\n\t\t\tupdateRange.count++;\n\t\t\tthis.currentBatch.geometry.drawRange.count++;\n\t\t}\n\n\t\tfor(let key of Object.keys(this.currentBatch.geometry.attributes)){\n\t\t\tlet attribute = this.currentBatch.geometry.attributes[key];\n\t\t\tattribute.updateRange.offset = updateRange.start;\n\t\t\tattribute.updateRange.count = updateRange.count;\n\t\t\tattribute.needsUpdate = true;\n\t\t}\n\n\t\tdata.projectedBox = projectedBox;\n\n\t\tthis.projectedBox = this.points.reduce( (a, i) => a.union(i.projectedBox), new THREE.Box3());\n\t}\n\n\tcreateNewBatch(data){\n\t\tlet geometry = new THREE.BufferGeometry();\n\n\t\t// create new batches with batch_size elements of the same type as the attribute\n\t\tfor(let attributeName of Object.keys(data.data)){\n\t\t\tlet buffer = data.data[attributeName];\n\t\t\tlet numElements = buffer.length / data.numPoints; // 3 for pos, 4 for col, 1 for scalars\n\t\t\tlet constructor = buffer.constructor;\n\t\t\tlet normalized = false;\n\t\t\t\n\t\t\tif(this.trueOctree.root.sceneNode){\n\t\t\t\tif(this.trueOctree.root.sceneNode.geometry.attributes[attributeName]){\n\t\t\t\t\tnormalized = this.trueOctree.root.sceneNode.geometry.attributes[attributeName].normalized;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\tlet batchBuffer = new constructor(numElements * this.batchSize);\n\n\t\t\tlet bufferAttribute = new THREE.BufferAttribute(batchBuffer, numElements, normalized);\n\t\t\tbufferAttribute.potree = {\n\t\t\t\trange: [0, 1],\n\t\t\t};\n\n\t\t\tgeometry.addAttribute(attributeName, bufferAttribute);\n\t\t}\n\n\t\tgeometry.drawRange.start = 0;\n\t\tgeometry.drawRange.count = 0;\n\n\t\tlet batch = new Batch(geometry, this.material);\n\n\t\tthis.visibleNodes.push(batch);\n\n\t\treturn batch;\n\t}\n\t\n\tcomputeVisibilityTextureData(){\n\t\tlet data = new Uint8Array(this.visibleNodes.length * 4);\n\t\tlet offsets = new Map();\n\n\t\tfor(let i = 0; i < this.visibleNodes.length; i++){\n\t\t\tlet node = this.visibleNodes[i];\n\n\t\t\toffsets[node] = i;\n\t\t}\n\n\n\t\treturn {\n\t\t\tdata: data,\n\t\t\toffsets: offsets,\n\t\t};\n\t}\n\n}\n\nexport class ProfileWindow extends EventDispatcher {\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.elRoot = $('#profile_window');\n\t\tthis.renderArea = this.elRoot.find('#profileCanvasContainer');\n\t\tthis.svg = d3.select('svg#profileSVG');\n\t\tthis.mouseIsDown = false;\n\n\t\tthis.projectedBox = new THREE.Box3();\n\t\tthis.pointclouds = new Map();\n\t\tthis.numPoints = 0;\n\t\tthis.lastAddPointsTimestamp = undefined;\n\n\t\tthis.mouse = new THREE.Vector2(0, 0);\n\t\tthis.scale = new THREE.Vector3(1, 1, 1);\n\n\t\tthis.autoFitEnabled = true; // completely disable/enable\n\t\tthis.autoFit = false; // internal\n\n\t\tlet cwIcon = `${exports.resourcePath}/icons/arrow_cw.svg`;\n\t\t$('#potree_profile_rotate_cw').attr('src', cwIcon);\n\n\t\tlet ccwIcon = `${exports.resourcePath}/icons/arrow_ccw.svg`;\n\t\t$('#potree_profile_rotate_ccw').attr('src', ccwIcon);\n\t\t\n\t\tlet forwardIcon = `${exports.resourcePath}/icons/arrow_up.svg`;\n\t\t$('#potree_profile_move_forward').attr('src', forwardIcon);\n\n\t\tlet backwardIcon = `${exports.resourcePath}/icons/arrow_down.svg`;\n\t\t$('#potree_profile_move_backward').attr('src', backwardIcon);\n\n\t\tlet csvIcon = `${exports.resourcePath}/icons/file_csv_2d.svg`;\n\t\t$('#potree_download_csv_icon').attr('src', csvIcon);\n\n\t\tlet lasIcon = `${exports.resourcePath}/icons/file_las_3d.svg`;\n\t\t$('#potree_download_las_icon').attr('src', lasIcon);\n\n\t\tlet closeIcon = `${exports.resourcePath}/icons/close.svg`;\n\t\t$('#closeProfileContainer').attr(\"src\", closeIcon);\n\n\t\tthis.initTHREE();\n\t\tthis.initSVG();\n\t\tthis.initListeners();\n\n\t\tthis.pRenderer = new Renderer(this.renderer);\n\n\t\tthis.elRoot.i18n();\n\t}\n\n\tinitListeners () {\n\t\t$(window).resize(() => {\n\t\t\tif (this.enabled) {\n\t\t\tthis.render();\n\t\t\t}\n\t\t});\n\n\t\tthis.renderArea.mousedown(e => {\n\t\t\tthis.mouseIsDown = true;\n\t\t});\n\n\t\tthis.renderArea.mouseup(e => {\n\t\t\tthis.mouseIsDown = false;\n\t\t});\n\n\t\tlet viewerPickSphereSizeHandler = () => {\n\t\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\t\tlet domElement = this.viewer.renderer.domElement;\n\t\t\tlet distance = this.viewerPickSphere.position.distanceTo(camera.position);\n\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, domElement.clientWidth, domElement.clientHeight);\n\t\t\tlet scale = (10 / pr);\n\t\t\tthis.viewerPickSphere.scale.set(scale, scale, scale);\n\t\t};\n\n\t\tthis.renderArea.mousemove(e => {\n\t\t\tif (this.pointclouds.size === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet rect = this.renderArea[0].getBoundingClientRect();\n\t\t\tlet x = e.clientX - rect.left;\n\t\t\tlet y = e.clientY - rect.top;\n\n\t\t\tlet newMouse = new THREE.Vector2(x, y);\n\n\t\t\tif (this.mouseIsDown) {\n\t\t\t\t// DRAG\n\t\t\t\tthis.autoFit = false;\n\t\t\t\tthis.lastDrag = new Date().getTime();\n\n\t\t\t\tlet cPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)];\n\t\t\t\tlet ncPos = [this.scaleX.invert(newMouse.x), this.scaleY.invert(newMouse.y)];\n\n\t\t\t\tthis.camera.position.x -= ncPos[0] - cPos[0];\n\t\t\t\tthis.camera.position.z -= ncPos[1] - cPos[1];\n\n\t\t\t\tthis.render();\n\t\t\t} else if (this.pointclouds.size > 0) {\n\t\t\t\t// FIND HOVERED POINT\n\t\t\t\tlet radius = Math.abs(this.scaleX.invert(0) - this.scaleX.invert(40));\n\t\t\t\tlet mileage = this.scaleX.invert(newMouse.x);\n\t\t\t\tlet elevation = this.scaleY.invert(newMouse.y);\n\n\t\t\t\tlet closest = this.selectPoint(mileage, elevation, radius);\n\n\t\t\t\tif (closest) {\n\t\t\t\t\tlet point = closest.point;\n\n\t\t\t\t\tlet position = new Float64Array([\n\t\t\t\t\t\tpoint.position[0] + closest.pointcloud.position.x,\n\t\t\t\t\t\tpoint.position[1] + closest.pointcloud.position.y,\n\t\t\t\t\t\tpoint.position[2] + closest.pointcloud.position.z\n\t\t\t\t\t]);\n\n\t\t\t\t\tthis.elRoot.find('#profileSelectionProperties').fadeIn(200);\n\t\t\t\t\tthis.pickSphere.visible = true;\n\t\t\t\t\tthis.pickSphere.scale.set(0.5 * radius, 0.5 * radius, 0.5 * radius);\n\t\t\t\t\tthis.pickSphere.position.set(point.mileage, 0, position[2]);\n\n\t\t\t\t\tthis.viewerPickSphere.position.set(...position);\n\t\t\t\t\t\n\t\t\t\t\tif(!this.viewer.scene.scene.children.includes(this.viewerPickSphere)){\n\t\t\t\t\t\tthis.viewer.scene.scene.add(this.viewerPickSphere);\n\t\t\t\t\t\tif(!this.viewer.hasEventListener(\"update\", viewerPickSphereSizeHandler)){\n\t\t\t\t\t\t\tthis.viewer.addEventListener(\"update\", viewerPickSphereSizeHandler);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\n\t\t\t\t\tlet info = this.elRoot.find('#profileSelectionProperties');\n\t\t\t\t\tlet html = '';\n\n\t\t\t\t\tfor (let attributeName of Object.keys(point)) {\n\n\t\t\t\t\t\tlet value = point[attributeName];\n\t\t\t\t\t\tlet attribute = closest.pointcloud.getAttribute(attributeName);\n\n\t\t\t\t\t\tlet transform = value => value;\n\t\t\t\t\t\tif(attribute && attribute.type.size > 4){\n\t\t\t\t\t\t\tlet range = attribute.initialRange;\n\t\t\t\t\t\t\tlet scale = 1 / (range[1] - range[0]);\n\t\t\t\t\t\t\tlet offset = range[0];\n\t\t\t\t\t\t\ttransform = value => value / scale + offset;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t\tif (attributeName === 'position') {\n\t\t\t\t\t\t\tlet values = [...position].map(v => Utils.addCommas(v.toFixed(3)));\n\t\t\t\t\t\t\thtml += `\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t} else if (attributeName === 'rgba') {\n\t\t\t\t\t\t\thtml += `\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t} else if (attributeName === 'normal') {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (attributeName === 'mileage') {\n\t\t\t\t\t\t\thtml += `\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\thtml += `\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\thtml += '
        x${values[0]}
        y${values[1]}
        z${values[2]}
        ${attributeName}${value.join(', ')}
        ${attributeName}${value.toFixed(3)}
        ${attributeName}${transform(value)}
        ';\n\t\t\t\t\tinfo.html(html);\n\n\t\t\t\t\tthis.selectedPoint = point;\n\t\t\t\t} else {\n\t\t\t\t\t// this.pickSphere.visible = false;\n\t\t\t\t\t// this.selectedPoint = null;\n\n\t\t\t\t\tthis.viewer.scene.scene.add(this.viewerPickSphere);\n\n\t\t\t\t\tlet index = this.viewer.scene.scene.children.indexOf(this.viewerPickSphere);\n\t\t\t\t\tif(index >= 0){\n\t\t\t\t\t\tthis.viewer.scene.scene.children.splice(index, 1);\n\t\t\t\t\t}\n\t\t\t\t\tthis.viewer.removeEventListener(\"update\", viewerPickSphereSizeHandler);\n\t\t\t\t\t\n\n\t\t\t\t}\n\t\t\t\tthis.render();\n\t\t\t}\n\n\t\t\tthis.mouse.copy(newMouse);\n\t\t});\n\n\t\tlet onWheel = e => {\n\t\t\tthis.autoFit = false;\n\n\t\t\tlet delta = 0;\n\t\t\tif (e.wheelDelta !== undefined) { // WebKit / Opera / Explorer 9\n\t\t\t\tdelta = e.wheelDelta;\n\t\t\t} else if (e.detail !== undefined) { // Firefox\n\t\t\t\tdelta = -e.detail;\n\t\t\t}\n\n\t\t\tlet ndelta = Math.sign(delta);\n\n\t\t\tlet cPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)];\n\n\t\t\tif (ndelta > 0) {\n\t\t\t\t// + 10%\n\t\t\t\tthis.scale.multiplyScalar(1.1);\n\t\t\t} else {\n\t\t\t\t// - 10%\n\t\t\t\tthis.scale.multiplyScalar(100 / 110);\n\t\t\t}\n\n\t\t\tthis.updateScales();\n\t\t\tlet ncPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)];\n\n\t\t\tthis.camera.position.x -= ncPos[0] - cPos[0];\n\t\t\tthis.camera.position.z -= ncPos[1] - cPos[1];\n\n\t\t\tthis.render();\n\t\t\tthis.updateScales();\n\t\t};\n\t\t$(this.renderArea)[0].addEventListener('mousewheel', onWheel, false);\n\t\t$(this.renderArea)[0].addEventListener('DOMMouseScroll', onWheel, false); // Firefox\n\n\t\t$('#closeProfileContainer').click(() => {\n\t\t\tthis.hide();\n\t\t});\n\n\t\tlet getProfilePoints = () => {\n\t\t\tlet points = new Points();\n\t\t\t\n\t\t\tfor(let [pointcloud, entry] of this.pointclouds){\n\t\t\t\tfor(let pointSet of entry.points){\n\n\t\t\t\t\tlet originPos = pointSet.data.position;\n\t\t\t\t\tlet trueElevationPosition = new Float32Array(originPos);\n\t\t\t\t\tfor(let i = 0; i < pointSet.numPoints; i++){\n\t\t\t\t\t\ttrueElevationPosition[3 * i + 2] += pointcloud.position.z;\n\t\t\t\t\t}\n\n\t\t\t\t\tpointSet.data.position = trueElevationPosition;\n\t\t\t\t\tpoints.add(pointSet);\n\t\t\t\t\tpointSet.data.position = originPos;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn points;\n\t\t};\n\n\t\t$('#potree_download_csv_icon').click(() => {\n\t\t\t\n\t\t\tlet points = getProfilePoints();\n\n\t\t\tlet string = CSVExporter.toString(points);\n\n\t\t\tlet blob = new Blob([string], {type: \"text/string\"});\n\t\t\t$('#potree_download_profile_ortho_link').attr('href', URL.createObjectURL(blob));\n\t\t});\n\n\t\t$('#potree_download_las_icon').click(() => {\n\n\t\t\tlet points = getProfilePoints();\n\n\t\t\tlet buffer = LASExporter.toLAS(points);\n\n\t\t\tlet blob = new Blob([buffer], {type: \"application/octet-binary\"});\n\t\t\t$('#potree_download_profile_link').attr('href', URL.createObjectURL(blob));\n\t\t});\n\t}\n\n\tselectPoint (mileage, elevation, radius) {\n\t\tlet closest = {\n\t\t\tdistance: Infinity,\n\t\t\tpointcloud: null,\n\t\t\tpoints: null,\n\t\t\tindex: null\n\t\t};\n\n\t\tlet pointBox = new THREE.Box2(\n\t\t\tnew THREE.Vector2(mileage - radius, elevation - radius),\n\t\t\tnew THREE.Vector2(mileage + radius, elevation + radius));\n\n\t\tlet numTested = 0;\n\t\tlet numSkipped = 0;\n\t\tlet numTestedPoints = 0;\n\t\tlet numSkippedPoints = 0;\n\n\t\tfor (let [pointcloud, entry] of this.pointclouds) {\n\t\t\tfor(let points of entry.points){\n\n\t\t\t\tlet collisionBox = new THREE.Box2(\n\t\t\t\t\tnew THREE.Vector2(points.projectedBox.min.x, points.projectedBox.min.z),\n\t\t\t\t\tnew THREE.Vector2(points.projectedBox.max.x, points.projectedBox.max.z)\n\t\t\t\t);\n\n\t\t\t\tlet intersects = collisionBox.intersectsBox(pointBox);\n\n\t\t\t\tif(!intersects){\n\t\t\t\t\tnumSkipped++;\n\t\t\t\t\tnumSkippedPoints += points.numPoints;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tnumTested++;\n\t\t\t\tnumTestedPoints += points.numPoints\n\n\t\t\t\tfor (let i = 0; i < points.numPoints; i++) {\n\n\t\t\t\t\tlet m = points.data.mileage[i] - mileage;\n\t\t\t\t\tlet e = points.data.position[3 * i + 2] - elevation + pointcloud.position.z;\n\t\t\t\t\tlet r = Math.sqrt(m * m + e * e);\n\n\t\t\t\t\tconst withinDistance = r < radius && r < closest.distance;\n\t\t\t\t\tlet unfilteredClass = true;\n\n\t\t\t\t\tif(points.data.classification){\n\t\t\t\t\t\tconst classification = pointcloud.material.classification;\n\n\t\t\t\t\t\tconst pointClassID = points.data.classification[i];\n\t\t\t\t\t\tconst pointClassValue = classification[pointClassID];\n\n\t\t\t\t\t\tif(pointClassValue && (!pointClassValue.visible || pointClassValue.color.w === 0)){\n\t\t\t\t\t\t\tunfilteredClass = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (withinDistance && unfilteredClass) {\n\t\t\t\t\t\tclosest = {\n\t\t\t\t\t\t\tdistance: r,\n\t\t\t\t\t\t\tpointcloud: pointcloud,\n\t\t\t\t\t\t\tpoints: points,\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t\t//console.log(`nodes: ${numTested}, ${numSkipped} || points: ${numTestedPoints}, ${numSkippedPoints}`);\n\n\t\tif (closest.distance < Infinity) {\n\t\t\tlet points = closest.points;\n\n\t\t\tlet point = {};\n\n\t\t\tlet attributes = Object.keys(points.data);\n\t\t\tfor (let attribute of attributes) {\n\t\t\t\tlet attributeData = points.data[attribute];\n\t\t\t\tlet itemSize = attributeData.length / points.numPoints;\n\t\t\t\tlet value = attributeData.subarray(itemSize * closest.index, itemSize * closest.index + itemSize);\n\n\t\t\t\tif (value.length === 1) {\n\t\t\t\t\tpoint[attribute] = value[0];\n\t\t\t\t} else {\n\t\t\t\t\tpoint[attribute] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tclosest.point = point;\n\n\t\t\treturn closest;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tinitTHREE () {\n\t\tthis.renderer = new THREE.WebGLRenderer({alpha: true, premultipliedAlpha: false});\n\t\tthis.renderer.setClearColor(0x000000, 0);\n\t\tthis.renderer.setSize(10, 10);\n\t\tthis.renderer.autoClear = false;\n\t\tthis.renderArea.append($(this.renderer.domElement));\n\t\tthis.renderer.domElement.tabIndex = '2222';\n\t\t$(this.renderer.domElement).css('width', '100%');\n\t\t$(this.renderer.domElement).css('height', '100%');\n\n\n\t\t{\n\t\t\tlet gl = this.renderer.getContext();\n\n\t\t\tlet extVAO = gl.getExtension('OES_vertex_array_object');\n\n\t\t\tif(!extVAO){\n\t\t\t\tthrow new Error(\"OES_vertex_array_object extension not supported\");\n\t\t\t}\n\n\t\t\tgl.createVertexArray = extVAO.createVertexArrayOES.bind(extVAO);\n\t\t\tgl.bindVertexArray = extVAO.bindVertexArrayOES.bind(extVAO);\n\t\t}\n\n\t\tthis.camera = new THREE.OrthographicCamera(-1000, 1000, 1000, -1000, -1000, 1000);\n\t\tthis.camera.up.set(0, 0, 1);\n\t\tthis.camera.rotation.order = \"ZXY\";\n\t\tthis.camera.rotation.x = Math.PI / 2.0;\n\t\n\n\t\tthis.scene = new THREE.Scene();\n\t\tthis.profileScene = new THREE.Scene();\n\n\t\tlet sg = new THREE.SphereGeometry(1, 16, 16);\n\t\tlet sm = new THREE.MeshNormalMaterial();\n\t\tthis.pickSphere = new THREE.Mesh(sg, sm);\n\t\tthis.scene.add(this.pickSphere);\n\n\t\t{\n\t\t\tconst sg = new THREE.SphereGeometry(2);\n\t\t\tconst sm = new THREE.MeshNormalMaterial();\n\t\t\tconst s = new THREE.Mesh(sg, sm);\n\n\t\t\ts.position.set(589530.450, 231398.860, 769.735);\n\n\t\t\tthis.scene.add(s);\n\t\t}\n\n\t\tthis.viewerPickSphere = new THREE.Mesh(sg, sm);\n\t}\n\n\tinitSVG () {\n\t\tlet width = this.renderArea[0].clientWidth;\n\t\tlet height = this.renderArea[0].clientHeight;\n\t\tlet marginLeft = this.renderArea[0].offsetLeft;\n\n\t\tthis.svg.selectAll('*').remove();\n\n\t\tthis.scaleX = d3.scale.linear()\n\t\t\t.domain([this.camera.left + this.camera.position.x, this.camera.right + this.camera.position.x])\n\t\t\t.range([0, width]);\n\t\tthis.scaleY = d3.scale.linear()\n\t\t\t.domain([this.camera.bottom + this.camera.position.z, this.camera.top + this.camera.position.z])\n\t\t\t.range([height, 0]);\n\n\t\tthis.xAxis = d3.svg.axis()\n\t\t\t.scale(this.scaleX)\n\t\t\t.orient('bottom')\n\t\t\t.innerTickSize(-height)\n\t\t\t.outerTickSize(1)\n\t\t\t.tickPadding(10)\n\t\t\t.ticks(width / 50);\n\n\t\tthis.yAxis = d3.svg.axis()\n\t\t\t.scale(this.scaleY)\n\t\t\t.orient('left')\n\t\t\t.innerTickSize(-width)\n\t\t\t.outerTickSize(1)\n\t\t\t.tickPadding(10)\n\t\t\t.ticks(height / 20);\n\n\t\tthis.elXAxis = this.svg.append('g')\n\t\t\t.attr('class', 'x axis')\n\t\t\t.attr('transform', `translate(${marginLeft}, ${height})`)\n\t\t\t.call(this.xAxis);\n\n\t\tthis.elYAxis = this.svg.append('g')\n\t\t\t.attr('class', 'y axis')\n\t\t\t.attr('transform', `translate(${marginLeft}, 0)`)\n\t\t\t.call(this.yAxis);\n\t}\n\n\taddPoints (pointcloud, points) {\n\n\t\tif(points.numPoints === 0){\n\t\t\treturn;\n\t\t}\n\n\t\tlet entry = this.pointclouds.get(pointcloud);\n\t\tif(!entry){\n\t\t\tentry = new ProfileFakeOctree(pointcloud);\n\t\t\tthis.pointclouds.set(pointcloud, entry);\n\t\t\tthis.profileScene.add(entry);\n\n\t\t\tlet materialChanged = () => {\n\t\t\t\tthis.render();\n\t\t\t};\n\n\t\t\tmaterialChanged();\n\n\t\t\tpointcloud.material.addEventListener('material_property_changed', materialChanged);\n\t\t\tthis.addEventListener(\"on_reset_once\", () => {\n\t\t\t\tpointcloud.material.removeEventListener('material_property_changed', materialChanged);\n\t\t\t});\n\t\t}\n\n\t\tentry.addPoints(points);\n\t\tthis.projectedBox.union(entry.projectedBox);\n\n\t\tif (this.autoFit && this.autoFitEnabled) { \n\t\t\tlet width = this.renderArea[0].clientWidth;\n\t\t\tlet height = this.renderArea[0].clientHeight;\n\n\t\t\tlet size = this.projectedBox.getSize(new THREE.Vector3());\n\n\t\t\tlet sx = width / size.x;\n\t\t\tlet sy = height / size.z;\n\t\t\tlet scale = Math.min(sx, sy);\n\n\t\t\tlet center = this.projectedBox.getCenter(new THREE.Vector3());\n\t\t\tthis.scale.set(scale, scale, 1);\n\t\t\tthis.camera.position.copy(center);\n\n\t\t\t//console.log(\"camera: \", this.camera.position.toArray().join(\", \"));\n\t\t}\n\n\t\t//console.log(entry);\n\n\t\tthis.render();\n\n\t\tlet numPoints = 0;\n\t\tfor (let [key, value] of this.pointclouds.entries()) {\n\t\t\tnumPoints += value.points.reduce( (a, i) => a + i.numPoints, 0);\n\t\t}\n\t\t$(`#profile_num_points`).html(Utils.addCommas(numPoints));\n\n\t}\n\n\treset () {\n\t\tthis.lastReset = new Date().getTime();\n\n\t\tthis.dispatchEvent({type: \"on_reset_once\"});\n\t\tthis.removeEventListeners(\"on_reset_once\");\n\n\t\tthis.autoFit = true;\n\t\tthis.projectedBox = new THREE.Box3();\n\n\t\tfor(let [key, entry] of this.pointclouds){\n\t\t\tentry.dispose();\n\t\t}\n\n\t\tthis.pointclouds.clear();\n\t\tthis.mouseIsDown = false;\n\t\tthis.mouse.set(0, 0);\n\n\t\tif(this.autoFitEnabled){\n\t\t\tthis.scale.set(1, 1, 1);\n\t\t}\n\t\tthis.pickSphere.visible = false;\n\n\t\tthis.elRoot.find('#profileSelectionProperties').hide();\n\n\t\tthis.render();\n\t}\n\n\tshow () {\n\t\tthis.elRoot.fadeIn();\n\t\tthis.enabled = true;\n\t}\n\n\thide () {\n\t\tthis.elRoot.fadeOut();\n\t\tthis.enabled = false;\n\t}\n\n\tupdateScales () {\n\n\t\tlet width = this.renderArea[0].clientWidth;\n\t\tlet height = this.renderArea[0].clientHeight;\n\n\t\tlet left = (-width / 2) / this.scale.x;\n\t\tlet right = (+width / 2) / this.scale.x;\n\t\tlet top = (+height / 2) / this.scale.y;\n\t\tlet bottom = (-height / 2) / this.scale.y;\n\n\t\tthis.camera.left = left;\n\t\tthis.camera.right = right;\n\t\tthis.camera.top = top;\n\t\tthis.camera.bottom = bottom;\n\t\tthis.camera.updateProjectionMatrix();\n\n\t\tthis.scaleX.domain([this.camera.left + this.camera.position.x, this.camera.right + this.camera.position.x])\n\t\t\t.range([0, width]);\n\t\tthis.scaleY.domain([this.camera.bottom + this.camera.position.z, this.camera.top + this.camera.position.z])\n\t\t\t.range([height, 0]);\n\n\t\tlet marginLeft = this.renderArea[0].offsetLeft;\n\n\t\tthis.xAxis.scale(this.scaleX)\n\t\t\t.orient('bottom')\n\t\t\t.innerTickSize(-height)\n\t\t\t.outerTickSize(1)\n\t\t\t.tickPadding(10)\n\t\t\t.ticks(width / 50);\n\t\tthis.yAxis.scale(this.scaleY)\n\t\t\t.orient('left')\n\t\t\t.innerTickSize(-width)\n\t\t\t.outerTickSize(1)\n\t\t\t.tickPadding(10)\n\t\t\t.ticks(height / 20);\n\n\n\t\tthis.elXAxis\n\t\t\t.attr('transform', `translate(${marginLeft}, ${height})`)\n\t\t\t.call(this.xAxis);\n\t\tthis.elYAxis\n\t\t\t.attr('transform', `translate(${marginLeft}, 0)`)\n\t\t\t.call(this.yAxis);\n\t}\n\n\trequestScaleUpdate(){\n\n\t\tlet threshold = 100;\n\t\tlet allowUpdate = ((this.lastReset === undefined) || (this.lastScaleUpdate === undefined)) \n\t\t\t|| ((new Date().getTime() - this.lastReset) > threshold && (new Date().getTime() - this.lastScaleUpdate) > threshold);\n\n\t\tif(allowUpdate){\n\n\t\t\tthis.updateScales();\n\n\t\t\tthis.lastScaleUpdate = new Date().getTime();\n\n\t\t\t\n\n\t\t\tthis.scaleUpdatePending = false;\n\t\t}else if(!this.scaleUpdatePending) {\n\t\t\tsetTimeout(this.requestScaleUpdate.bind(this), 100);\n\t\t\tthis.scaleUpdatePending = true;\n\t\t}\n\t\t\n\t}\n\n\trender () {\n\t\tlet width = this.renderArea[0].clientWidth;\n\t\tlet height = this.renderArea[0].clientHeight;\n\n\t\tlet {renderer, pRenderer, camera, profileScene, scene} = this;\n\t\tlet {scaleX, pickSphere} = this;\n\n\t\trenderer.setSize(width, height);\n\n\t\trenderer.setClearColor(0x000000, 0);\n\t\trenderer.clear(true, true, false);\n\n\t\tfor(let pointcloud of this.pointclouds.keys()){\n\t\t\tlet source = pointcloud.material;\n\t\t\tlet target = this.pointclouds.get(pointcloud).material;\n\t\t\t\n\t\t\tcopyMaterial(source, target);\n\t\t\ttarget.size = 2;\n\t\t}\n\t\t\n\t\tpRenderer.render(profileScene, camera, null);\n\n\t\tlet radius = Math.abs(scaleX.invert(0) - scaleX.invert(5));\n\n\t\tif (radius === 0) {\n\t\t\tpickSphere.visible = false;\n\t\t} else {\n\t\t\tpickSphere.scale.set(radius, radius, radius);\n\t\t\tpickSphere.visible = true;\n\t\t}\n\t\t\n\t\trenderer.render(scene, camera);\n\n\t\tthis.requestScaleUpdate();\n\t}\n};\n\nexport class ProfileWindowController {\n\tconstructor (viewer) {\n\t\tthis.viewer = viewer;\n\t\tthis.profileWindow = viewer.profileWindow;\n\t\tthis.profile = null;\n\t\tthis.numPoints = 0;\n\t\tthis.threshold = 60 * 1000;\n\t\tthis.rotateAmount = 10;\n\n\t\tthis.scheduledRecomputeTime = null;\n\n\t\tthis.enabled = true;\n\n\t\tthis.requests = [];\n\n\t\tthis._recompute = () => { this.recompute(); };\n\n\t\tthis.viewer.addEventListener(\"scene_changed\", e => {\n\t\t\te.oldScene.removeEventListener(\"pointcloud_added\", this._recompute);\n\t\t\te.scene.addEventListener(\"pointcloud_added\", this._recompute);\n\t\t});\n\t\tthis.viewer.scene.addEventListener(\"pointcloud_added\", this._recompute);\n\n\t\t$(\"#potree_profile_rotate_amount\").val(parseInt(this.rotateAmount));\n\t\t$(\"#potree_profile_rotate_amount\").on(\"input\", (e) => {\n\t\t\tconst str = $(\"#potree_profile_rotate_amount\").val();\n\n\t\t\tif(!isNaN(str)){\n\t\t\t\tconst value = parseFloat(str);\n\t\t\t\tthis.rotateAmount = value;\n\t\t\t\t$(\"#potree_profile_rotate_amount\").css(\"background-color\", \"\")\n\t\t\t}else{\n\t\t\t\t$(\"#potree_profile_rotate_amount\").css(\"background-color\", \"#ff9999\")\n\t\t\t}\n\n\t\t});\n\n\t\tconst rotate = (radians) => {\n\t\t\tconst profile = this.profile;\n\t\t\tconst points = profile.points;\n\t\t\tconst start = points[0];\n\t\t\tconst end = points[points.length - 1];\n\t\t\tconst center = start.clone().add(end).multiplyScalar(0.5);\n\n\t\t\tconst mMoveOrigin = new THREE.Matrix4().makeTranslation(-center.x, -center.y, -center.z);\n\t\t\tconst mRotate = new THREE.Matrix4().makeRotationZ(radians);\n\t\t\tconst mMoveBack = new THREE.Matrix4().makeTranslation(center.x, center.y, center.z);\n\t\t\t//const transform = mMoveOrigin.multiply(mRotate).multiply(mMoveBack);\n\t\t\tconst transform = mMoveBack.multiply(mRotate).multiply(mMoveOrigin);\n\n\t\t\tconst rotatedPoints = points.map( point => point.clone().applyMatrix4(transform) );\n\n\t\t\tthis.profileWindow.autoFitEnabled = false;\n\n\t\t\tfor(let i = 0; i < points.length; i++){\n\t\t\t\tprofile.setPosition(i, rotatedPoints[i]);\n\t\t\t}\n\t\t}\n\n\t\t$(\"#potree_profile_rotate_cw\").click( () => {\n\t\t\tconst radians = THREE.Math.degToRad(this.rotateAmount);\n\t\t\trotate(-radians);\n\t\t});\n\n\t\t$(\"#potree_profile_rotate_ccw\").click( () => {\n\t\t\tconst radians = THREE.Math.degToRad(this.rotateAmount);\n\t\t\trotate(radians);\n\t\t});\n\n\t\t$(\"#potree_profile_move_forward\").click( () => {\n\t\t\tconst profile = this.profile;\n\t\t\tconst points = profile.points;\n\t\t\tconst start = points[0];\n\t\t\tconst end = points[points.length - 1];\n\n\t\t\tconst dir = end.clone().sub(start).normalize();\n\t\t\tconst up = new THREE.Vector3(0, 0, 1);\n\t\t\tconst forward = up.cross(dir);\n\t\t\tconst move = forward.clone().multiplyScalar(profile.width / 2);\n\n\t\t\tthis.profileWindow.autoFitEnabled = false;\n\n\t\t\tfor(let i = 0; i < points.length; i++){\n\t\t\t\tprofile.setPosition(i, points[i].clone().add(move));\n\t\t\t}\n\t\t});\n\n\t\t$(\"#potree_profile_move_backward\").click( () => {\n\t\t\tconst profile = this.profile;\n\t\t\tconst points = profile.points;\n\t\t\tconst start = points[0];\n\t\t\tconst end = points[points.length - 1];\n\n\t\t\tconst dir = end.clone().sub(start).normalize();\n\t\t\tconst up = new THREE.Vector3(0, 0, 1);\n\t\t\tconst forward = up.cross(dir);\n\t\t\tconst move = forward.clone().multiplyScalar(-profile.width / 2);\n\n\t\t\tthis.profileWindow.autoFitEnabled = false;\n\n\t\t\tfor(let i = 0; i < points.length; i++){\n\t\t\t\tprofile.setPosition(i, points[i].clone().add(move));\n\t\t\t}\n\t\t});\n\t}\n\n\tsetProfile (profile) {\n\t\tif (this.profile !== null && this.profile !== profile) {\n\t\t\tthis.profile.removeEventListener('marker_moved', this._recompute);\n\t\t\tthis.profile.removeEventListener('marker_added', this._recompute);\n\t\t\tthis.profile.removeEventListener('marker_removed', this._recompute);\n\t\t\tthis.profile.removeEventListener('width_changed', this._recompute);\n\t\t}\n\n\t\tthis.profile = profile;\n\n\t\t{\n\t\t\tthis.profile.addEventListener('marker_moved', this._recompute);\n\t\t\tthis.profile.addEventListener('marker_added', this._recompute);\n\t\t\tthis.profile.addEventListener('marker_removed', this._recompute);\n\t\t\tthis.profile.addEventListener('width_changed', this._recompute);\n\t\t}\n\n\t\tthis.recompute();\n\t}\n\n\treset () {\n\t\tthis.profileWindow.reset();\n\n\t\tthis.numPoints = 0;\n\n\t\tif (this.profile) {\n\t\t\tfor (let request of this.requests) {\n\t\t\t\trequest.cancel();\n\t\t\t}\n\t\t}\n\t}\n\n\tprogressHandler (pointcloud, progress) {\n\t\tfor (let segment of progress.segments) {\n\t\t\tthis.profileWindow.addPoints(pointcloud, segment.points);\n\t\t\tthis.numPoints += segment.points.numPoints;\n\t\t}\n\t}\n\n\tcancel () {\n\t\tfor (let request of this.requests) {\n\t\t\trequest.cancel();\n\t\t\t// request.finishLevelThenCancel();\n\t\t}\n\n\t\tthis.requests = [];\n\t};\n\n\tfinishLevelThenCancel(){\n\t\tfor (let request of this.requests) {\n\t\t\trequest.finishLevelThenCancel();\n\t\t}\n\n\t\tthis.requests = [];\n\t}\n\n\trecompute () {\n\t\tif (!this.profile) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.scheduledRecomputeTime !== null && this.scheduledRecomputeTime > new Date().getTime()) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tthis.scheduledRecomputeTime = new Date().getTime() + 100;\n\t\t}\n\t\tthis.scheduledRecomputeTime = null;\n\n\t\tthis.reset();\n\n\t\tfor (let pointcloud of this.viewer.scene.pointclouds.filter(p => p.visible)) {\n\t\t\tlet request = pointcloud.getPointsInProfile(this.profile, null, {\n\t\t\t\t'onProgress': (event) => {\n\t\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.progressHandler(pointcloud, event.points);\n\n\t\t\t\t\tif (this.numPoints > this.threshold) {\n\t\t\t\t\t\tthis.finishLevelThenCancel();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'onFinish': (event) => {\n\t\t\t\t\tif (!this.enabled) {\n\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'onCancel': () => {\n\t\t\t\t\tif (!this.enabled) {\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.requests.push(request);\n\t\t}\n\t}\n};\n","/**\n *\n * @author sigeom sa / http://sigeom.ch\n * @author Ioda-Net Sàrl / https://www.ioda-net.ch/\n * @author Markus Schütz / http://potree.org\n *\n */\n\nimport {Measure} from \"../utils/Measure.js\";\n\nexport class GeoJSONExporter{\n\n\tstatic measurementToFeatures (measurement) {\n\t\tlet coords = measurement.points.map(e => e.position.toArray());\n\n\t\tlet features = [];\n\n\t\tif (coords.length === 1) {\n\t\t\tlet feature = {\n\t\t\t\ttype: 'Feature',\n\t\t\t\tgeometry: {\n\t\t\t\t\ttype: 'Point',\n\t\t\t\t\tcoordinates: coords[0]\n\t\t\t\t},\n\t\t\t\tproperties: {\n\t\t\t\t\tname: measurement.name\n\t\t\t\t}\n\t\t\t};\n\t\t\tfeatures.push(feature);\n\t\t} else if (coords.length > 1 && !measurement.closed) {\n\t\t\tlet object = {\n\t\t\t\t'type': 'Feature',\n\t\t\t\t'geometry': {\n\t\t\t\t\t'type': 'LineString',\n\t\t\t\t\t'coordinates': coords\n\t\t\t\t},\n\t\t\t\t'properties': {\n\t\t\t\t\tname: measurement.name\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfeatures.push(object);\n\t\t} else if (coords.length > 1 && measurement.closed) {\n\t\t\tlet object = {\n\t\t\t\t'type': 'Feature',\n\t\t\t\t'geometry': {\n\t\t\t\t\t'type': 'Polygon',\n\t\t\t\t\t'coordinates': [[...coords, coords[0]]]\n\t\t\t\t},\n\t\t\t\t'properties': {\n\t\t\t\t\tname: measurement.name\n\t\t\t\t}\n\t\t\t};\n\t\t\tfeatures.push(object);\n\t\t}\n\n\t\tif (measurement.showDistances) {\n\t\t\tmeasurement.edgeLabels.forEach((label) => {\n\t\t\t\tlet labelPoint = {\n\t\t\t\t\ttype: 'Feature',\n\t\t\t\t\tgeometry: {\n\t\t\t\t\t\ttype: 'Point',\n\t\t\t\t\t\tcoordinates: label.position.toArray()\n\t\t\t\t\t},\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tdistance: label.text\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tfeatures.push(labelPoint);\n\t\t\t});\n\t\t}\n\n\t\tif (measurement.showArea) {\n\t\t\tlet point = measurement.areaLabel.position;\n\t\t\tlet labelArea = {\n\t\t\t\ttype: 'Feature',\n\t\t\t\tgeometry: {\n\t\t\t\t\ttype: 'Point',\n\t\t\t\t\tcoordinates: point.toArray()\n\t\t\t\t},\n\t\t\t\tproperties: {\n\t\t\t\t\tarea: measurement.areaLabel.text\n\t\t\t\t}\n\t\t\t};\n\t\t\tfeatures.push(labelArea);\n\t\t}\n\n\t\treturn features;\n\t}\n\n\tstatic toString (measurements) {\n\t\tif (!(measurements instanceof Array)) {\n\t\t\tmeasurements = [measurements];\n\t\t}\n\n\t\tmeasurements = measurements.filter(m => m instanceof Measure);\n\n\t\tlet features = [];\n\t\tfor (let measure of measurements) {\n\t\t\tlet f = GeoJSONExporter.measurementToFeatures(measure);\n\n\t\t\tfeatures = features.concat(f);\n\t\t}\n\n\t\tlet geojson = {\n\t\t\t'type': 'FeatureCollection',\n\t\t\t'features': features\n\t\t};\n\n\t\treturn JSON.stringify(geojson, null, '\\t');\n\t}\n\n}\n","/**\n *\n * @author sigeom sa / http://sigeom.ch\n * @author Ioda-Net Sàrl / https://www.ioda-net.ch/\n * @author Markus Schuetz / http://potree.org\n *\n */\n\nimport {Measure} from \"../utils/Measure.js\";\n\nexport class DXFExporter {\n\n\tstatic measurementPointSection (measurement) {\n\t\tlet position = measurement.points[0].position;\n\n\t\tif (!position) {\n\t\t\treturn '';\n\t\t}\n\n\t\tlet dxfSection = `0\nCIRCLE\n8\nlayer_point\n10\n${position.x}\n20\n${position.y}\n30\n${position.z}\n40\n1.0\n`;\n\n\t\treturn dxfSection;\n\t}\n\n\tstatic measurementPolylineSection (measurement) {\n\t\t// bit code for polygons/polylines:\n\t\t// https://www.autodesk.com/techpubs/autocad/acad2000/dxf/polyline_dxf_06.htm\n\t\tlet geomCode = 8;\n\t\tif (measurement.closed) {\n\t\t\tgeomCode += 1;\n\t\t}\n\n\t\tlet dxfSection = `0\nPOLYLINE\n8\nlayer_polyline\n62\n1\n66\n1\n10\n0.0\n20\n0.0\n30\n0.0\n70\n${geomCode}\n`;\n\n\t\tlet xMax = 0.0;\n\t\tlet yMax = 0.0;\n\t\tlet zMax = 0.0;\n\t\tfor (let point of measurement.points) {\n\t\t\tpoint = point.position;\n\t\t\txMax = Math.max(xMax, point.x);\n\t\t\tyMax = Math.max(yMax, point.y);\n\t\t\tzMax = Math.max(zMax, point.z);\n\n\t\t\tdxfSection += `0\nVERTEX\n8\n0\n10\n${point.x}\n20\n${point.y}\n30\n${point.z}\n70\n32\n`;\n\t\t}\n\t\tdxfSection += `0\nSEQEND\n`;\n\n\t\treturn dxfSection;\n\t}\n\n\tstatic measurementSection (measurement) {\n\t\t// if(measurement.points.length <= 1){\n\t\t//\treturn \"\";\n\t\t// }\n\n\t\tif (measurement.points.length === 0) {\n\t\t\treturn '';\n\t\t} else if (measurement.points.length === 1) {\n\t\t\treturn DXFExporter.measurementPointSection(measurement);\n\t\t} else if (measurement.points.length >= 2) {\n\t\t\treturn DXFExporter.measurementPolylineSection(measurement);\n\t\t}\n\t}\n\n\tstatic toString(measurements){\n\t\tif (!(measurements instanceof Array)) {\n\t\t\tmeasurements = [measurements];\n\t\t}\n\t\tmeasurements = measurements.filter(m => m instanceof Measure);\n\n\t\tlet points = measurements.filter(m => (m instanceof Measure))\n\t\t\t.map(m => m.points)\n\t\t\t.reduce((a, v) => a.concat(v))\n\t\t\t.map(p => p.position);\n\n\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\n\t\tlet max = new THREE.Vector3(-Infinity, -Infinity, -Infinity);\n\t\tfor (let point of points) {\n\t\t\tmin.min(point);\n\t\t\tmax.max(point);\n\t\t}\n\n\t\tlet dxfHeader = `999\nDXF created from potree\n0\nSECTION\n2\nHEADER\n9\n$ACADVER\n1\nAC1006\n9\n$INSBASE\n10\n0.0\n20\n0.0\n30\n0.0\n9\n$EXTMIN\n10\n${min.x}\n20\n${min.y}\n30\n${min.z}\n9\n$EXTMAX\n10\n${max.x}\n20\n${max.y}\n30\n${max.z}\n0\nENDSEC\n`;\n\n\t\tlet dxfBody = `0\nSECTION\n2\nENTITIES\n`;\n\n\t\tfor (let measurement of measurements) {\n\t\t\tdxfBody += DXFExporter.measurementSection(measurement);\n\t\t}\n\n\t\tdxfBody += `0\nENDSEC\n`;\n\n\t\tlet dxf = dxfHeader + dxfBody + '0\\nEOF';\n\n\t\treturn dxf;\n\t}\n\n}\n","\n\nimport {Utils} from \"../../utils.js\";\n\nexport class MeasurePanel{\n\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tthis.viewer = viewer;\n\t\tthis.measurement = measurement;\n\t\tthis.propertiesPanel = propertiesPanel;\n\n\t\tthis._update = () => { this.update(); };\n\t}\n\n\tcreateCoordinatesTable(points){\n\t\tlet table = $(`\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
        xyz
        \n\t\t`);\n\n\t\tlet copyIconPath = Potree.resourcePath + '/icons/copy.svg';\n\n\t\tfor (let point of points) {\n\t\t\tlet x = Utils.addCommas(point.x.toFixed(3));\n\t\t\tlet y = Utils.addCommas(point.y.toFixed(3));\n\t\t\tlet z = Utils.addCommas(point.z.toFixed(3));\n\n\t\t\tlet row = $(`\n\t\t\t\t\n\t\t\t\t\t${x}\n\t\t\t\t\t${y}\n\t\t\t\t\t${z}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`);\n\n\t\t\tthis.elCopy = row.find(\"img[name=copy]\");\n\t\t\tthis.elCopy.click( () => {\n\t\t\t\tlet msg = point.toArray().map(c => c.toFixed(3)).join(\", \");\n\t\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t\t});\n\n\t\t\ttable.append(row);\n\t\t}\n\n\t\treturn table;\n\t};\n\n\tcreateAttributesTable(){\n\t\tlet elTable = $('
        ');\n\n\t\tlet point = this.measurement.points[0];\n\t\t\n\t\tfor(let attributeName of Object.keys(point)){\n\t\t\tif(attributeName === \"position\"){\n\t\t\t\n\t\t\t}else if(attributeName === \"rgba\"){\n\t\t\t\tlet color = point.rgba;\n\t\t\t\tlet text = color.join(', ');\n\n\t\t\t\telTable.append($(`\n\t\t\t\t\t\n\t\t\t\t\t\trgb\n\t\t\t\t\t\t${text}\n\t\t\t\t\t\n\t\t\t\t`));\n\t\t\t}else{\n\t\t\t\tlet value = point[attributeName];\n\t\t\t\tlet text = value.join(', ');\n\n\t\t\t\telTable.append($(`\n\t\t\t\t\t\n\t\t\t\t\t\t${attributeName}\n\t\t\t\t\t\t${text}\n\t\t\t\t\t\n\t\t\t\t`));\n\t\t\t}\n\t\t}\n\n\t\treturn elTable;\n\t}\n\n\tupdate(){\n\n\t}\n};","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\nimport {Profile} from \"./../../utils/Profile.js\";\n\nexport class DistancePanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t
        \n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\t\t\n\t\tthis.elMakeProfile = this.elContent.find(\"input[name=make_profile]\");\n\t\tthis.elMakeProfile.click( () => {\n\t\t\t//measurement.points;\n\t\t\tconst profile = new Profile();\n\n\t\t\tprofile.name = measurement.name;\n\t\t\tprofile.width = measurement.getTotalDistance() / 50;\n\n\t\t\tfor(const point of measurement.points){\n\t\t\t\tprofile.addMarker(point.position.clone());\n\t\t\t}\n\n\t\t\tthis.viewer.scene.addProfile(profile);\n\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\tlet positions = this.measurement.points.map(p => p.position);\n\t\tlet distances = [];\n\t\tfor (let i = 0; i < positions.length - 1; i++) {\n\t\t\tlet d = positions[i].distanceTo(positions[i + 1]);\n\t\t\tdistances.push(d.toFixed(3));\n\t\t}\n\n\t\tlet totalDistance = this.measurement.getTotalDistance().toFixed(3);\n\t\tlet elDistanceTable = this.elContent.find(`#distances_table`);\n\t\telDistanceTable.empty();\n\n\t\tfor (let i = 0; i < distances.length; i++) {\n\t\t\tlet label = (i === 0) ? 'Distances: ' : '';\n\t\t\tlet distance = distances[i];\n\t\t\tlet elDistance = $(`\n\t\t\t\t\n\t\t\t\t\t${label}\n\t\t\t\t\t${distance}\n\t\t\t\t`);\n\t\t\telDistanceTable.append(elDistance);\n\t\t}\n\n\t\tlet elTotal = $(`\n\t\t\t\n\t\t\t\tTotal: ${totalDistance}\n\t\t\t`);\n\t\telDistanceTable.append(elTotal);\n\t}\n};\n","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class PointPanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\tlet elAttributesContainer = this.elContent.find('.attributes_table_container');\n\t\telAttributesContainer.empty();\n\t\telAttributesContainer.append(this.createAttributesTable());\n\t}\n};","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class AreaPanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\tArea: \n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\tlet elArea = this.elContent.find(`#measurement_area`);\n\t\telArea.html(this.measurement.getArea().toFixed(3));\n\t}\n};","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class AnglePanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \\u03b1\\u03b2\\u03b3
        \n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\tlet angles = [];\n\t\tfor(let i = 0; i < this.measurement.points.length; i++){\n\t\t\tangles.push(this.measurement.getAngle(i) * (180.0 / Math.PI));\n\t\t}\n\t\tangles = angles.map(a => a.toFixed(1) + '\\u00B0');\n\n\t\tlet elAlpha = this.elContent.find(`#angle_cell_alpha`);\n\t\tlet elBetta = this.elContent.find(`#angle_cell_betta`);\n\t\tlet elGamma = this.elContent.find(`#angle_cell_gamma`);\n\n\t\telAlpha.html(angles[0]);\n\t\telBetta.html(angles[1]);\n\t\telGamma.html(angles[2]);\n\t}\n};","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class CirclePanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t
        \n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\tconst elInfos = this.elContent.find(`#infos_table`);\n\n\t\tif(this.measurement.points.length !== 3){\n\t\t\telInfos.empty();\n\t\t\t\n\t\t\treturn;\n\t\t}\n\n\t\tconst A = this.measurement.points[0].position;\n\t\tconst B = this.measurement.points[1].position;\n\t\tconst C = this.measurement.points[2].position;\n\n\t\tconst center = Potree.Utils.computeCircleCenter(A, B, C);\n\t\tconst radius = center.distanceTo(A);\n\t\tconst circumference = 2 * Math.PI * radius;\n\t\t\n\t\tconst format = (number) => {\n\t\t\treturn Potree.Utils.addCommas(number.toFixed(3));\n\t\t};\n\n\t\t\n\t\tconst txtCenter = `${format(center.x)} ${format(center.y)} ${format(center.z)}`;\n\t\tconst txtRadius = format(radius);\n\t\tconst txtCircumference = format(circumference);\n\n\t\tconst thStyle = `style=\"text-align: left\"`;\n\t\tconst tdStyle = `style=\"width: 100%; padding: 5px;\"`;\n\t\t\n\t\telInfos.html(`\n\t\t\t\n\t\t\t\tCenter: \n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${txtCenter}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\tRadius: \n\t\t\t\t${txtRadius}\n\t\t\t\n\t\t\t\n\t\t\t\tCircumference: \n\t\t\t\t${txtCircumference}\n\t\t\t\n\t\t`);\n\t}\n};\n","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class HeightPanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\tHeight:
        \n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\n\n\t\t{\n\t\t\tlet points = this.measurement.points;\n\n\t\t\tlet sorted = points.slice().sort((a, b) => a.position.z - b.position.z);\n\t\t\tlet lowPoint = sorted[0].position.clone();\n\t\t\tlet highPoint = sorted[sorted.length - 1].position.clone();\n\t\t\tlet min = lowPoint.z;\n\t\t\tlet max = highPoint.z;\n\t\t\tlet height = max - min;\n\t\t\theight = height.toFixed(3);\n\n\t\t\tthis.elHeightLabel = this.elContent.find(`#height_label`);\n\t\t\tthis.elHeightLabel.html(`Height: ${height}`);\n\t\t}\n\t}\n};","\nimport {Utils} from \"../../utils.js\";\nimport {Volume, BoxVolume, SphereVolume} from \"../../utils/Volume.js\";\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class VolumePanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet copyIconPath = Potree.resourcePath + '/icons/copy.svg';\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\n\t\tlet lblLengthText = new Map([\n\t\t\t[BoxVolume, \"length\"],\n\t\t\t[SphereVolume, \"rx\"],\n\t\t]).get(measurement.constructor);\n\n\t\tlet lblWidthText = new Map([\n\t\t\t[BoxVolume, \"width\"],\n\t\t\t[SphereVolume, \"ry\"],\n\t\t]).get(measurement.constructor);\n\n\t\tlet lblHeightText = new Map([\n\t\t\t[BoxVolume, \"height\"],\n\t\t\t[SphereVolume, \"rz\"],\n\t\t]).get(measurement.constructor);\n\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \\u03b1\\u03b2\\u03b3
        \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
        \n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        ${lblLengthText}${lblWidthText}${lblHeightText}
        \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
        \n\n\t\t\t\t
        \n\t\t\t\tVolume: \n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t
      • \n\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t\t
        \n\t\t\t\t
      • \n\n\n\t\t\t\t\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
      • \n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\t{ // download\n\t\t\tthis.elDownloadButton = this.elContent.find(\"input[name=download_volume]\");\n\n\t\t\tif(this.propertiesPanel.viewer.server){\n\t\t\t\tthis.elDownloadButton.click(() => this.download());\n\t\t\t} else {\n\t\t\t\tthis.elDownloadButton.hide();\n\t\t\t}\n\t\t}\n\n\t\tthis.elCopyRotation = this.elContent.find(\"img[name=copyRotation]\");\n\t\tthis.elCopyRotation.click( () => {\n\t\t\tlet rotation = this.measurement.rotation.toArray().slice(0, 3);\n\t\t\tlet msg = rotation.map(c => c.toFixed(3)).join(\", \");\n\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t});\n\n\t\tthis.elCopyScale = this.elContent.find(\"img[name=copyScale]\");\n\t\tthis.elCopyScale.click( () => {\n\t\t\tlet scale = this.measurement.scale.toArray();\n\t\t\tlet msg = scale.map(c => c.toFixed(3)).join(\", \");\n\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t});\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeVolume(measurement);\n\t\t});\n\n\t\tthis.elContent.find(\"#volume_reset_orientation\").click(() => {\n\t\t\tmeasurement.rotation.set(0, 0, 0);\n\t\t});\n\n\t\tthis.elContent.find(\"#volume_make_uniform\").click(() => {\n\t\t\tlet mean = (measurement.scale.x + measurement.scale.y + measurement.scale.z) / 3;\n\t\t\tmeasurement.scale.set(mean, mean, mean);\n\t\t});\n\n\t\tthis.elCheckClip = this.elContent.find('#volume_clip');\n\t\tthis.elCheckClip.click(event => {\n\t\t\tthis.measurement.clip = event.target.checked;\n\t\t});\n\n\t\tthis.elCheckShow = this.elContent.find('#volume_show');\n\t\tthis.elCheckShow.click(event => {\n\t\t\tthis.measurement.visible = event.target.checked;\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"position_changed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"orientation_changed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"scale_changed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"clip_changed\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tasync download(){\n\n\t\tlet clipBox = this.measurement;\n\n\t\tlet regions = [];\n\t\t//for(let clipBox of boxes){\n\t\t{\n\t\t\tlet toClip = clipBox.matrixWorld;\n\n\t\t\tlet px = new THREE.Vector3(+0.5, 0, 0).applyMatrix4(toClip);\n\t\t\tlet nx = new THREE.Vector3(-0.5, 0, 0).applyMatrix4(toClip);\n\t\t\tlet py = new THREE.Vector3(0, +0.5, 0).applyMatrix4(toClip);\n\t\t\tlet ny = new THREE.Vector3(0, -0.5, 0).applyMatrix4(toClip);\n\t\t\tlet pz = new THREE.Vector3(0, 0, +0.5).applyMatrix4(toClip);\n\t\t\tlet nz = new THREE.Vector3(0, 0, -0.5).applyMatrix4(toClip);\n\n\t\t\tlet pxN = new THREE.Vector3().subVectors(nx, px).normalize();\n\t\t\tlet nxN = pxN.clone().multiplyScalar(-1);\n\t\t\tlet pyN = new THREE.Vector3().subVectors(ny, py).normalize();\n\t\t\tlet nyN = pyN.clone().multiplyScalar(-1);\n\t\t\tlet pzN = new THREE.Vector3().subVectors(nz, pz).normalize();\n\t\t\tlet nzN = pzN.clone().multiplyScalar(-1);\n\n\t\t\tlet planes = [\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(pxN, px),\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(nxN, nx),\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(pyN, py),\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(nyN, ny),\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(pzN, pz),\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(nzN, nz),\n\t\t\t];\n\n\t\t\tlet planeQueryParts = [];\n\t\t\tfor(let plane of planes){\n\t\t\t\tlet part = [plane.normal.toArray(), plane.constant].join(\",\");\n\t\t\t\tpart = `[${part}]`;\n\t\t\t\tplaneQueryParts.push(part);\n\t\t\t}\n\t\t\tlet region = \"[\" + planeQueryParts.join(\",\") + \"]\";\n\t\t\tregions.push(region);\n\t\t}\n\n\t\tlet regionsArg = regions.join(\",\");\n\n\t\tlet pointcloudArgs = [];\n\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\n\t\t\tif(!pointcloud.visible){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet offset = pointcloud.pcoGeometry.offset.clone();\n\t\t\tlet negateOffset = new THREE.Matrix4().makeTranslation(...offset.multiplyScalar(-1).toArray());\n\t\t\tlet matrixWorld = pointcloud.matrixWorld;\n\n\t\t\tlet transform = new THREE.Matrix4().multiplyMatrices(matrixWorld, negateOffset);\n\n\t\t\tlet path = `${window.location.pathname}/../${pointcloud.pcoGeometry.url}`;\n\n\t\t\tlet arg = {\n\t\t\t\tpath: path,\n\t\t\t\ttransform: transform.elements,\n\t\t\t};\n\t\t\tlet argString = JSON.stringify(arg);\n\n\t\t\tpointcloudArgs.push(argString);\n\t\t}\n\t\tlet pointcloudsArg = pointcloudArgs.join(\",\");\n\n\t\tlet elMessage = this.elContent.find(\"div[name=download_message]\");\n\n\t\tlet error = (message) => {\n\t\t\telMessage.html(`
        ERROR: ${message}
        `);\n\t\t};\n\n\t\tlet info = (message) => {\n\t\t\telMessage.html(`${message}`);\n\t\t};\n\n\t\tlet handle = null;\n\t\t{ // START FILTER\n\t\t\tlet url = `${viewer.server}/create_regions_filter?pointclouds=[${pointcloudsArg}]®ions=[${regionsArg}]`;\n\t\t\t\n\t\t\t//console.log(url);\n\n\t\t\tinfo(\"estimating results ...\");\n\n\t\t\tlet response = await fetch(url);\n\t\t\tlet jsResponse = await response.json();\n\t\t\t//console.log(jsResponse);\n\n\t\t\tif(!jsResponse.handle){\n\t\t\t\terror(jsResponse.message);\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\thandle = jsResponse.handle;\n\t\t\t}\n\t\t}\n\n\t\t{ // WAIT, CHECK PROGRESS, HANDLE FINISH\n\t\t\tlet url = `${viewer.server}/check_regions_filter?handle=${handle}`;\n\n\t\t\tlet sleep = (function(duration){\n\t\t\t\treturn new Promise( (res, rej) => {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tres();\n\t\t\t\t\t}, duration);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tlet handleFiltering = (jsResponse) => {\n\t\t\t\tlet {progress, estimate} = jsResponse;\n\n\t\t\t\tlet progressFract = progress[\"processed points\"] / estimate.points;\n\t\t\t\tlet progressPercents = parseInt(progressFract * 100);\n\n\t\t\t\tinfo(`progress: ${progressPercents}%`);\n\t\t\t};\n\n\t\t\tlet handleFinish = (jsResponse) => {\n\t\t\t\tlet message = \"downloads ready:
        \";\n\t\t\t\tmessage += \"
          \";\n\n\t\t\t\tfor(let i = 0; i < jsResponse.pointclouds.length; i++){\n\t\t\t\t\tlet url = `${viewer.server}/download_regions_filter_result?handle=${handle}&index=${i}`;\n\n\t\t\t\t\tmessage += `
        • result_${i}.las
        • \\n`;\n\t\t\t\t}\n\n\t\t\t\tlet reportURL = `${viewer.server}/download_regions_filter_report?handle=${handle}`;\n\t\t\t\tmessage += `
        • report.json
        • \\n`;\n\t\t\t\tmessage += \"
        \";\n\n\t\t\t\tinfo(message);\n\t\t\t};\n\n\t\t\tlet handleUnexpected = (jsResponse) => {\n\t\t\t\tlet message = `Unexpected Response.
        status: ${jsResponse.status}
        message: ${jsResponse.message}`;\n\t\t\t\tinfo(message);\n\t\t\t};\n\n\t\t\tlet handleError = (jsResponse) => {\n\t\t\t\tlet message = `ERROR: ${jsResponse.message}`;\n\t\t\t\terror(message);\n\n\t\t\t\tthrow new Error(message);\n\t\t\t};\n\n\t\t\tlet start = Date.now();\n\n\t\t\twhile(true){\n\t\t\t\tlet response = await fetch(url);\n\t\t\t\tlet jsResponse = await response.json();\n\n\t\t\t\tif(jsResponse.status === \"ERROR\"){\n\t\t\t\t\thandleError(jsResponse);\n\t\t\t\t}else if(jsResponse.status === \"FILTERING\"){\n\t\t\t\t\thandleFiltering(jsResponse);\n\t\t\t\t}else if(jsResponse.status === \"FINISHED\"){\n\t\t\t\t\thandleFinish(jsResponse);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}else{\n\t\t\t\t\thandleUnexpected(jsResponse);\n\t\t\t\t}\n\n\t\t\t\tlet durationS = (Date.now() - start) / 1000;\n\t\t\t\tlet sleepAmountMS = durationS < 10 ? 100 : 1000;\n\n\t\t\t\tawait sleep(sleepAmountMS);\n\t\t\t}\n\t\t}\n\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable([this.measurement.position]));\n\n\t\t{\n\t\t\tlet angles = this.measurement.rotation.toVector3();\n\t\t\tangles = angles.toArray();\n\t\t\t//angles = [angles.z, angles.x, angles.y];\n\t\t\tangles = angles.map(v => 180 * v / Math.PI);\n\t\t\tangles = angles.map(a => a.toFixed(1) + '\\u00B0');\n\n\t\t\tlet elAlpha = this.elContent.find(`#angle_cell_alpha`);\n\t\t\tlet elBetta = this.elContent.find(`#angle_cell_betta`);\n\t\t\tlet elGamma = this.elContent.find(`#angle_cell_gamma`);\n\n\t\t\telAlpha.html(angles[0]);\n\t\t\telBetta.html(angles[1]);\n\t\t\telGamma.html(angles[2]);\n\t\t}\n\n\t\t{\n\t\t\tlet dimensions = this.measurement.scale.toArray();\n\t\t\tdimensions = dimensions.map(v => Utils.addCommas(v.toFixed(2)));\n\n\t\t\tlet elLength = this.elContent.find(`#cell_length`);\n\t\t\tlet elWidth = this.elContent.find(`#cell_width`);\n\t\t\tlet elHeight = this.elContent.find(`#cell_height`);\n\n\t\t\telLength.html(dimensions[0]);\n\t\t\telWidth.html(dimensions[1]);\n\t\t\telHeight.html(dimensions[2]);\n\t\t}\n\n\t\t{\n\t\t\tlet elVolume = this.elContent.find(`#measurement_volume`);\n\t\t\tlet volume = this.measurement.getVolume();\n\t\t\telVolume.html(Utils.addCommas(volume.toFixed(2)));\n\t\t}\n\n\t\tthis.elCheckClip.prop(\"checked\", this.measurement.clip);\n\t\tthis.elCheckShow.prop(\"checked\", this.measurement.visible);\n\n\t}\n};","\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\n\nexport class ProfilePanel extends MeasurePanel{\n\tconstructor(viewer, measurement, propertiesPanel){\n\t\tsuper(viewer, measurement, propertiesPanel);\n\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\n\t\t\t\t\tWidth: \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t
        \n\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t\t
        \n\t\t\t\t
      • \n\n\t\t\t\t
        \n\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t
        \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\n\t\tthis.elRemove.click( () => {\n\t\t\tthis.viewer.scene.removeProfile(measurement);\n\t\t});\n\n\t\t{ // download\n\t\t\tthis.elDownloadButton = this.elContent.find(`input[name=download_profile]`);\n\n\t\t\tif(this.propertiesPanel.viewer.server){\n\t\t\t\tthis.elDownloadButton.click(() => this.download());\n\t\t\t} else {\n\t\t\t\tthis.elDownloadButton.hide();\n\t\t\t}\n\t\t}\n\n\t\t{ // width spinner\n\t\t\tlet elWidthSlider = this.elContent.find(`#sldProfileWidth`);\n\n\t\t\telWidthSlider.spinner({\n\t\t\t\tmin: 0, max: 10 * 1000 * 1000, step: 0.01,\n\t\t\t\tnumberFormat: 'n',\n\t\t\t\tstart: () => {},\n\t\t\t\tspin: (event, ui) => {\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\n\t\t\t\t\tmeasurement.setWidth(value);\n\t\t\t\t},\n\t\t\t\tchange: (event, ui) => {\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\n\t\t\t\t\tmeasurement.setWidth(value);\n\t\t\t\t},\n\t\t\t\tstop: (event, ui) => {\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\n\t\t\t\t\tmeasurement.setWidth(value);\n\t\t\t\t},\n\t\t\t\tincremental: (count) => {\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\n\t\t\t\t\tlet step = elWidthSlider.spinner('option', 'step');\n\n\t\t\t\t\tlet delta = value * 0.05;\n\t\t\t\t\tlet increments = Math.max(1, parseInt(delta / step));\n\n\t\t\t\t\treturn increments;\n\t\t\t\t}\n\t\t\t});\n\t\t\telWidthSlider.spinner('value', measurement.getWidth());\n\t\t\telWidthSlider.spinner('widget').css('width', '100%');\n\n\t\t\tlet widthListener = (event) => {\n\t\t\t\tlet value = elWidthSlider.spinner('value');\n\t\t\t\tif (value !== measurement.getWidth()) {\n\t\t\t\t\telWidthSlider.spinner('value', measurement.getWidth());\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis.propertiesPanel.addVolatileListener(measurement, \"width_changed\", widthListener);\n\t\t}\n\n\t\tlet elShow2DProfile = this.elContent.find(`#show_2d_profile`);\n\t\telShow2DProfile.click(() => {\n\t\t\tthis.propertiesPanel.viewer.profileWindow.show();\n\t\t\tthis.propertiesPanel.viewer.profileWindowController.setProfile(measurement);\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\n\t\telCoordiantesContainer.empty();\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points));\n\t}\n\n\tasync download(){\n\n\t\tlet profile = this.measurement;\n\n\t\tlet regions = [];\n\t\t{\n\t\t\tlet segments = profile.getSegments();\n\t\t\tlet width = profile.width;\n\t\t\t\n\t\t\tfor(let segment of segments){\n\t\t\t\tlet start = segment.start.clone().multiply(new THREE.Vector3(1, 1, 0));\n\t\t\t\tlet end = segment.end.clone().multiply(new THREE.Vector3(1, 1, 0));\n\t\t\t\tlet center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\n\t\t\t\t\n\t\t\t\tlet startEndDir = new THREE.Vector3().subVectors(end, start).normalize();\n\t\t\t\tlet endStartDir = new THREE.Vector3().subVectors(start, end).normalize();\n\t\t\t\tlet upDir = new THREE.Vector3(0, 0, 1);\n\t\t\t\tlet rightDir = new THREE.Vector3().crossVectors(startEndDir, upDir);\n\t\t\t\tlet leftDir = new THREE.Vector3().crossVectors(endStartDir, upDir);\n\t\t\t\t\n\t\t\t\tconsole.log(leftDir);\n\t\t\t\t\n\t\t\t\tlet right = rightDir.clone().multiplyScalar(width * 0.5).add(center);\n\t\t\t\tlet left = leftDir.clone().multiplyScalar(width * 0.5).add(center);\n\t\t\t\t\n\t\t\t\tlet planes = [\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(startEndDir, start),\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(endStartDir, end),\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(leftDir, right),\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(rightDir, left),\n\t\t\t\t];\n\t\t\t\t\n\t\t\t\tlet planeQueryParts = [];\n\t\t\t\tfor(let plane of planes){\n\t\t\t\t\tlet part = [plane.normal.toArray(), plane.constant].join(\",\");\n\t\t\t\t\tpart = `[${part}]`;\n\t\t\t\t\tplaneQueryParts.push(part);\n\t\t\t\t}\n\t\t\t\tlet region = \"[\" + planeQueryParts.join(\",\") + \"]\";\n\t\t\t\tregions.push(region);\n\t\t\t}\n\t\t}\n\n\t\tlet regionsArg = regions.join(\",\");\n\n\t\tlet pointcloudArgs = [];\n\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\n\t\t\tif(!pointcloud.visible){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet offset = pointcloud.pcoGeometry.offset.clone();\n\t\t\tlet negateOffset = new THREE.Matrix4().makeTranslation(...offset.multiplyScalar(-1).toArray());\n\t\t\tlet matrixWorld = pointcloud.matrixWorld;\n\n\t\t\tlet transform = new THREE.Matrix4().multiplyMatrices(matrixWorld, negateOffset);\n\n\t\t\tlet path = `${window.location.pathname}/../${pointcloud.pcoGeometry.url}`;\n\n\t\t\tlet arg = {\n\t\t\t\tpath: path,\n\t\t\t\ttransform: transform.elements,\n\t\t\t};\n\t\t\tlet argString = JSON.stringify(arg);\n\n\t\t\tpointcloudArgs.push(argString);\n\t\t}\n\t\tlet pointcloudsArg = pointcloudArgs.join(\",\");\n\n\t\tlet elMessage = this.elContent.find(\"div[name=download_message]\");\n\n\t\tlet error = (message) => {\n\t\t\telMessage.html(`
        ERROR: ${message}
        `);\n\t\t};\n\n\t\tlet info = (message) => {\n\t\t\telMessage.html(`${message}`);\n\t\t};\n\n\t\tlet handle = null;\n\t\t{ // START FILTER\n\t\t\tlet url = `${viewer.server}/create_regions_filter?pointclouds=[${pointcloudsArg}]®ions=[${regionsArg}]`;\n\t\t\t\n\t\t\t//console.log(url);\n\n\t\t\tinfo(\"estimating results ...\");\n\n\t\t\tlet response = await fetch(url);\n\t\t\tlet jsResponse = await response.json();\n\t\t\t//console.log(jsResponse);\n\n\t\t\tif(!jsResponse.handle){\n\t\t\t\terror(jsResponse.message);\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\thandle = jsResponse.handle;\n\t\t\t}\n\t\t}\n\n\t\t{ // WAIT, CHECK PROGRESS, HANDLE FINISH\n\t\t\tlet url = `${viewer.server}/check_regions_filter?handle=${handle}`;\n\n\t\t\tlet sleep = (function(duration){\n\t\t\t\treturn new Promise( (res, rej) => {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tres();\n\t\t\t\t\t}, duration);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tlet handleFiltering = (jsResponse) => {\n\t\t\t\tlet {progress, estimate} = jsResponse;\n\n\t\t\t\tlet progressFract = progress[\"processed points\"] / estimate.points;\n\t\t\t\tlet progressPercents = parseInt(progressFract * 100);\n\n\t\t\t\tinfo(`progress: ${progressPercents}%`);\n\t\t\t};\n\n\t\t\tlet handleFinish = (jsResponse) => {\n\t\t\t\tlet message = \"downloads ready:
        \";\n\t\t\t\tmessage += \"
          \";\n\n\t\t\t\tfor(let i = 0; i < jsResponse.pointclouds.length; i++){\n\t\t\t\t\tlet url = `${viewer.server}/download_regions_filter_result?handle=${handle}&index=${i}`;\n\n\t\t\t\t\tmessage += `
        • result_${i}.las
        • \\n`;\n\t\t\t\t}\n\n\t\t\t\tlet reportURL = `${viewer.server}/download_regions_filter_report?handle=${handle}`;\n\t\t\t\tmessage += `
        • report.json
        • \\n`;\n\t\t\t\tmessage += \"
        \";\n\n\t\t\t\tinfo(message);\n\t\t\t};\n\n\t\t\tlet handleUnexpected = (jsResponse) => {\n\t\t\t\tlet message = `Unexpected Response.
        status: ${jsResponse.status}
        message: ${jsResponse.message}`;\n\t\t\t\tinfo(message);\n\t\t\t};\n\n\t\t\tlet handleError = (jsResponse) => {\n\t\t\t\tlet message = `ERROR: ${jsResponse.message}`;\n\t\t\t\terror(message);\n\n\t\t\t\tthrow new Error(message);\n\t\t\t};\n\n\t\t\tlet start = Date.now();\n\n\t\t\twhile(true){\n\t\t\t\tlet response = await fetch(url);\n\t\t\t\tlet jsResponse = await response.json();\n\n\t\t\t\tif(jsResponse.status === \"ERROR\"){\n\t\t\t\t\thandleError(jsResponse);\n\t\t\t\t}else if(jsResponse.status === \"FILTERING\"){\n\t\t\t\t\thandleFiltering(jsResponse);\n\t\t\t\t}else if(jsResponse.status === \"FINISHED\"){\n\t\t\t\t\thandleFinish(jsResponse);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}else{\n\t\t\t\t\thandleUnexpected(jsResponse);\n\t\t\t\t}\n\n\t\t\t\tlet durationS = (Date.now() - start) / 1000;\n\t\t\t\tlet sleepAmountMS = durationS < 10 ? 100 : 1000;\n\n\t\t\t\tawait sleep(sleepAmountMS);\n\t\t\t}\n\t\t}\n\n\t}\n};","\nimport {Utils} from \"../../utils.js\";\n\nexport class CameraPanel{\n\tconstructor(viewer, propertiesPanel){\n\t\tthis.viewer = viewer;\n\t\tthis.propertiesPanel = propertiesPanel;\n\n\t\tthis._update = () => { this.update(); };\n\n\t\tlet copyIconPath = Potree.resourcePath + '/icons/copy.svg';\n\t\tthis.elContent = $(`\n\t\t
        \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
        position
        \n\t\t\t\t\t\t\n\t\t\t\t\t
        target
        \n\t\t\t\t\t\t\n\t\t\t\t\t
        \n\t\t
        \n\t\t`);\n\n\t\tthis.elCopyPosition = this.elContent.find(\"img[name=copyPosition]\");\n\t\tthis.elCopyPosition.click( () => {\n\t\t\tlet pos = this.viewer.scene.getActiveCamera().position.toArray();\n\t\t\tlet msg = pos.map(c => c.toFixed(3)).join(\", \");\n\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t});\n\n\t\tthis.elCopyTarget = this.elContent.find(\"img[name=copyTarget]\");\n\t\tthis.elCopyTarget.click( () => {\n\t\t\tlet pos = this.viewer.scene.view.getPivot().toArray();\n\t\t\tlet msg = pos.map(c => c.toFixed(3)).join(\", \");\n\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t});\n\n\t\tthis.propertiesPanel.addVolatileListener(viewer, \"camera_changed\", this._update);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\t//console.log(\"updating camera panel\");\n\n\t\tlet camera = this.viewer.scene.getActiveCamera();\n\t\tlet view = this.viewer.scene.view;\n\n\t\tlet pos = camera.position.toArray().map(c => Utils.addCommas(c.toFixed(3)));\n\t\tthis.elContent.find(\"#camera_position_x\").html(pos[0]);\n\t\tthis.elContent.find(\"#camera_position_y\").html(pos[1]);\n\t\tthis.elContent.find(\"#camera_position_z\").html(pos[2]);\n\n\t\tlet target = view.getPivot().toArray().map(c => Utils.addCommas(c.toFixed(3)));\n\t\tthis.elContent.find(\"#camera_target_x\").html(target[0]);\n\t\tthis.elContent.find(\"#camera_target_y\").html(target[1]);\n\t\tthis.elContent.find(\"#camera_target_z\").html(target[2]);\n\t}\n};","\nimport {Utils} from \"../../utils.js\";\n\nexport class AnnotationPanel{\n\tconstructor(viewer, propertiesPanel, annotation){\n\t\tthis.viewer = viewer;\n\t\tthis.propertiesPanel = propertiesPanel;\n\t\tthis.annotation = annotation;\n\n\t\tthis._update = () => { this.update(); };\n\n\t\tlet copyIconPath = `${Potree.resourcePath}/icons/copy.svg`;\n\t\tthis.elContent = $(`\n\t\t
        \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t
        position
        \n\t\t\t\t\t\t\n\t\t\t\t\t
        \n\n\t\t\t
        \n\n\t\t\t\t
        Title
        \n\t\t\t\t
        \n\t\t\t\t\tAnnotation Title\n\t\t\t\t
        \n\n\t\t\t\t
        Description
        \n\t\t\t\t
        \n\t\t\t\t\tA longer description of this annotation. \n\t\t\t\t\t\tCan be multiple lines long. TODO: the user should be able\n\t\t\t\t\t\tto modify title and description. \n\t\t\t\t
        \n\n\t\t\t
        \n\n\t\t
        \n\t\t`);\n\n\t\tthis.elCopyPosition = this.elContent.find(\"img[name=copyPosition]\");\n\t\tthis.elCopyPosition.click( () => {\n\t\t\tlet pos = this.annotation.position.toArray();\n\t\t\tlet msg = pos.map(c => c.toFixed(3)).join(\", \");\n\t\t\tUtils.clipboardCopy(msg);\n\n\t\t\tthis.viewer.postMessage(\n\t\t\t\t\t`Copied value to clipboard:
        '${msg}'`,\n\t\t\t\t\t{duration: 3000});\n\t\t});\n\n\t\tthis.elTitle = this.elContent.find(\"#annotation_title\").html(annotation.title);\n\t\tthis.elDescription = this.elContent.find(\"#annotation_description\").html(annotation.description);\n\n\t\tthis.elTitle[0].addEventListener(\"input\", () => {\n\t\t\tconst title = this.elTitle.html();\n\t\t\tannotation.title = title;\n\n\t\t}, false);\n\n\t\tthis.elDescription[0].addEventListener(\"input\", () => {\n\t\t\tconst description = this.elDescription.html();\n\t\t\tannotation.description = description;\n\t\t}, false);\n\n\t\tthis.update();\n\t}\n\n\tupdate(){\n\t\tconst {annotation, elContent, elTitle, elDescription} = this;\n\n\t\tlet pos = annotation.position.toArray().map(c => Utils.addCommas(c.toFixed(3)));\n\t\telContent.find(\"#annotation_position_x\").html(pos[0]);\n\t\telContent.find(\"#annotation_position_y\").html(pos[1]);\n\t\telContent.find(\"#annotation_position_z\").html(pos[2]);\n\n\t\telTitle.html(annotation.title);\n\t\telDescription.html(annotation.description);\n\n\n\t}\n};","\nimport {Utils} from \"../../utils.js\";\n\nexport class CameraAnimationPanel{\n\tconstructor(viewer, propertiesPanel, animation){\n\t\tthis.viewer = viewer;\n\t\tthis.propertiesPanel = propertiesPanel;\n\t\tthis.animation = animation;\n\n\t\tthis.elContent = $(`\n\t\t\t
        \n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\tDuration: \n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\tTime:
        \n\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tconst elPlay = this.elContent.find(\"input[name=play]\");\n\t\telPlay.click( () => {\n\t\t\tanimation.play();\n\t\t});\n\n\t\tconst elSlider = this.elContent.find('#sldTime');\n\t\telSlider.slider({\n\t\t\tvalue: 0,\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t\tstep: 0.001,\n\t\t\tslide: (event, ui) => { \n\t\t\t\tanimation.set(ui.value);\n\t\t\t}\n\t\t});\n\n\t\tlet elDuration = this.elContent.find(`input[name=spnDuration]`);\n\t\telDuration.spinner({\n\t\t\tmin: 0, max: 300, step: 0.01,\n\t\t\tnumberFormat: 'n',\n\t\t\tstart: () => {},\n\t\t\tspin: (event, ui) => {\n\t\t\t\tlet value = elDuration.spinner('value');\n\t\t\t\tanimation.setDuration(value);\n\t\t\t},\n\t\t\tchange: (event, ui) => {\n\t\t\t\tlet value = elDuration.spinner('value');\n\t\t\t\tanimation.setDuration(value);\n\t\t\t},\n\t\t\tstop: (event, ui) => {\n\t\t\t\tlet value = elDuration.spinner('value');\n\t\t\t\tanimation.setDuration(value);\n\t\t\t},\n\t\t\tincremental: (count) => {\n\t\t\t\tlet value = elDuration.spinner('value');\n\t\t\t\tlet step = elDuration.spinner('option', 'step');\n\n\t\t\t\tlet delta = value * 0.05;\n\t\t\t\tlet increments = Math.max(1, parseInt(delta / step));\n\n\t\t\t\treturn increments;\n\t\t\t}\n\t\t});\n\t\telDuration.spinner('value', animation.getDuration());\n\t\telDuration.spinner('widget').css('width', '100%');\n\n\t\tconst elKeyframes = this.elContent.find(\"#animation_keyframes\");\n\n\t\tconst updateKeyframes = () => {\n\t\t\telKeyframes.empty();\n\n\t\t\t//let index = 0;\n\n\t\t\t// \n\t\t\t// \t\t\t\t\n\t\t\t// \t\t\t\n\n\t\t\tconst addNewKeyframeItem = (index) => {\n\t\t\t\tlet elNewKeyframe = $(`\n\t\t\t\t\t
        \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
        \n\t\t\t\t`);\n\n\t\t\t\tconst elAdd = elNewKeyframe.find(\"input[name=add]\");\n\t\t\t\telAdd.click( () => {\n\t\t\t\t\tanimation.createControlPoint(index);\n\t\t\t\t});\n\n\t\t\t\telKeyframes.append(elNewKeyframe);\n\t\t\t};\n\n\t\t\tconst addKeyframeItem = (index) => {\n\t\t\t\tlet elKeyframe = $(`\n\t\t\t\t\t
        \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tkeyframe\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
        \n\t\t\t\t`);\n\n\t\t\t\tconst elAssign = elKeyframe.find(\"img[name=assign]\");\n\t\t\t\tconst elMove = elKeyframe.find(\"img[name=move]\");\n\t\t\t\tconst elDelete = elKeyframe.find(\"img[name=delete]\");\n\n\t\t\t\telAssign.click( () => {\n\t\t\t\t\tconst cp = animation.controlPoints[index];\n\n\t\t\t\t\tcp.position.copy(viewer.scene.view.position);\n\t\t\t\t\tcp.target.copy(viewer.scene.view.getPivot());\n\t\t\t\t});\n\n\t\t\t\telMove.click( () => {\n\t\t\t\t\tconst cp = animation.controlPoints[index];\n\n\t\t\t\t\tviewer.scene.view.position.copy(cp.position);\n\t\t\t\t\tviewer.scene.view.lookAt(cp.target);\n\t\t\t\t});\n\n\t\t\t\telDelete.click( () => {\n\t\t\t\t\tconst cp = animation.controlPoints[index];\n\t\t\t\t\tanimation.removeControlPoint(cp);\n\t\t\t\t});\n\n\t\t\t\telKeyframes.append(elKeyframe);\n\t\t\t};\n\n\t\t\tlet index = 0;\n\n\t\t\taddNewKeyframeItem(index);\n\n\t\t\tfor(const cp of animation.controlPoints){\n\t\t\t\t\n\t\t\t\taddKeyframeItem(index);\n\t\t\t\tindex++;\n\t\t\t\taddNewKeyframeItem(index);\n\n\t\t\t}\n\t\t};\n\n\t\tupdateKeyframes();\n\n\t\tanimation.addEventListener(\"controlpoint_added\", updateKeyframes);\n\t\tanimation.addEventListener(\"controlpoint_removed\", updateKeyframes);\n\n\n\n\n\t\t// this._update = () => { this.update(); };\n\n\t\t// this.update();\n\t}\n\n\tupdate(){\n\t\t\n\t}\n};","\n\nimport {Utils} from \"../../utils.js\";\nimport {PointCloudTree} from \"../../PointCloudTree.js\";\nimport {Annotation} from \"../../Annotation.js\";\nimport {Measure} from \"../../utils/Measure.js\";\nimport {Profile} from \"../../utils/Profile.js\";\nimport {Volume, BoxVolume, SphereVolume} from \"../../utils/Volume.js\";\nimport {CameraAnimation} from \"../../modules/CameraAnimation/CameraAnimation.js\";\nimport {PointSizeType, PointShape, ElevationGradientRepeat} from \"../../defines.js\";\nimport {Gradients} from \"../../materials/Gradients.js\";\n\nimport {MeasurePanel} from \"./MeasurePanel.js\";\nimport {DistancePanel} from \"./DistancePanel.js\";\nimport {PointPanel} from \"./PointPanel.js\";\nimport {AreaPanel} from \"./AreaPanel.js\";\nimport {AnglePanel} from \"./AnglePanel.js\";\nimport {CirclePanel} from \"./CirclePanel.js\";\nimport {HeightPanel} from \"./HeightPanel.js\";\nimport {VolumePanel} from \"./VolumePanel.js\";\nimport {ProfilePanel} from \"./ProfilePanel.js\";\nimport {CameraPanel} from \"./CameraPanel.js\";\nimport {AnnotationPanel} from \"./AnnotationPanel.js\";\nimport { CameraAnimationPanel } from \"./CameraAnimationPanel.js\";\n\nexport class PropertiesPanel{\n\n\tconstructor(container, viewer){\n\t\tthis.container = container;\n\t\tthis.viewer = viewer;\n\t\tthis.object = null;\n\t\tthis.cleanupTasks = [];\n\t\tthis.scene = null;\n\t}\n\n\tsetScene(scene){\n\t\tthis.scene = scene;\n\t}\n\n\tset(object){\n\t\tif(this.object === object){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.object = object;\n\t\t\n\t\tfor(let task of this.cleanupTasks){\n\t\t\ttask();\n\t\t}\n\t\tthis.cleanupTasks = [];\n\t\tthis.container.empty();\n\n\t\tif(object instanceof PointCloudTree){\n\t\t\tthis.setPointCloud(object);\n\t\t}else if(object instanceof Measure || object instanceof Profile || object instanceof Volume){\n\t\t\tthis.setMeasurement(object);\n\t\t}else if(object instanceof THREE.Camera){\n\t\t\tthis.setCamera(object);\n\t\t}else if(object instanceof Annotation){\n\t\t\tthis.setAnnotation(object);\n\t\t}else if(object instanceof CameraAnimation){\n\t\t\tthis.setCameraAnimation(object);\n\t\t}\n\t\t\n\t}\n\n\t//\n\t// Used for events that should be removed when the property object changes.\n\t// This is for listening to materials, scene, point clouds, etc.\n\t// not required for DOM listeners, since they are automatically cleared by removing the DOM subtree.\n\t//\n\taddVolatileListener(target, type, callback){\n\t\ttarget.addEventListener(type, callback);\n\t\tthis.cleanupTasks.push(() => {\n\t\t\ttarget.removeEventListener(type, callback);\n\t\t});\n\t}\n\n\tsetPointCloud(pointcloud){\n\n\t\tlet material = pointcloud.material;\n\n\t\tlet panel = $(`\n\t\t\t
        \n\t\t\t\t
          \n\n\t\t\t\t
        • \n\t\t\t\t
          \n\t\t\t\t
        • \n\t\t\t\t
        • \n\t\t\t\t
          \n\t\t\t\t
        • \n\n\t\t\t\t\n\t\t\t\t
        • \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
        • \n\n\t\t\t\t\n\t\t\t\t
        • \n\t\t\t\t\t
          \n\t\t\t\t\t\n\t\t\t\t
        • \n\n\t\t\t\t
        • \n\t\t\t\t\n\t\t\t\t
        • \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
        • :
        • \n\n\t\t\t\t
          \n\t\t\t\t\tAttribute\n\t\t\t\t
          \n\n\t\t\t\t
        • \n\t\t\t\t\t\n\t\t\t\t
        • \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tAttribute Weights\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • RGB:
          \t
        • \n\t\t\t\t\t
        • Intensity:
          \t
        • \n\t\t\t\t\t
        • Elevation:
          \t
        • \n\t\t\t\t\t
        • Classification:
          \t
        • \n\t\t\t\t\t
        • Return Number:
          \t
        • \n\t\t\t\t\t
        • Source ID:
          \t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tRGB\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • Gamma:
          \t
        • \n\t\t\t\t\t
        • Brightness:
          \t
        • \n\t\t\t\t\t
        • Contrast:
          \t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tExtra Attribute\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • :
        • \n\n\t\t\t\t\t
        • Gamma:
        • \n\t\t\t\t\t
        • Brightness:
        • \n\t\t\t\t\t
        • Contrast:
        • \n\t\t\t\t
          \n\t\t\t\t\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tMATCAP\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • \n\t\t\t\t\t\t
          \n\t\t\t\t\t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tColor\n\t\t\t\t\t
          \n\n\t\t\t\t\t\n\t\t\t\t
          \n\n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tElevation\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • :
          \t
        • \n\n\t\t\t\t\t
        • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
        • \n\n\t\t\t\t\t
        • \n\t\t\t\t\t\tGradient Scheme:\n\t\t\t\t\t\t
          \n\t\t\t\t\t\t
          \n\t\t\t\t\t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tTransition\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • transition:
          \t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tIntensity\n\t\t\t\t\t
          \n\n\t\t\t\t\t
        • Range:
          \t
        • \n\t\t\t\t\t
        • Gamma:
          \t
        • \n\t\t\t\t\t
        • Brightness:
          \t
        • \n\t\t\t\t\t
        • Contrast:
          \t
        • \n\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tGPS Time\n\t\t\t\t\t
          \n\n\t\t\t\t
          \n\t\t\t\t\n\t\t\t\t
          \n\t\t\t\t\t
          \n\t\t\t\t\t\tIndices\n\t\t\t\t\t
          \n\t\t\t\t
          \n\n\n\t\t\t\t
        \n\t\t\t
        \n\t\t`);\n\n\t\tpanel.i18n();\n\t\tthis.container.append(panel);\n\n\t\t{ // POINT SIZE\n\t\t\tlet sldPointSize = panel.find(`#sldPointSize`);\n\t\t\tlet lblPointSize = panel.find(`#lblPointSize`);\n\n\t\t\tsldPointSize.slider({\n\t\t\t\tvalue: material.size,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 3,\n\t\t\t\tstep: 0.01,\n\t\t\t\tslide: function (event, ui) { material.size = ui.value; }\n\t\t\t});\n\n\t\t\tlet update = (e) => {\n\t\t\t\tlblPointSize.html(material.size.toFixed(2));\n\t\t\t\tsldPointSize.slider({value: material.size});\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"point_size_changed\", update);\n\t\t\t\n\t\t\tupdate();\n\t\t}\n\n\t\t{ // MINIMUM POINT SIZE\n\t\t\tlet sldMinPointSize = panel.find(`#sldMinPointSize`);\n\t\t\tlet lblMinPointSize = panel.find(`#lblMinPointSize`);\n\n\t\t\tsldMinPointSize.slider({\n\t\t\t\tvalue: material.size,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 3,\n\t\t\t\tstep: 0.01,\n\t\t\t\tslide: function (event, ui) { material.minSize = ui.value; }\n\t\t\t});\n\n\t\t\tlet update = (e) => {\n\t\t\t\tlblMinPointSize.html(material.minSize.toFixed(2));\n\t\t\t\tsldMinPointSize.slider({value: material.minSize});\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"point_size_changed\", update);\n\t\t\t\n\t\t\tupdate();\n\t\t}\n\n\t\t{ // POINT SIZING\n\t\t\tlet strSizeType = Object.keys(PointSizeType)[material.pointSizeType];\n\n\t\t\tlet opt = panel.find(`#optPointSizing`);\n\t\t\topt.selectmenu();\n\t\t\topt.val(strSizeType).selectmenu('refresh');\n\n\t\t\topt.selectmenu({\n\t\t\t\tchange: (event, ui) => {\n\t\t\t\t\tmaterial.pointSizeType = PointSizeType[ui.item.value];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t{ // SHAPE\n\t\t\tlet opt = panel.find(`#optShape`);\n\n\t\t\topt.selectmenu({\n\t\t\t\tchange: (event, ui) => {\n\t\t\t\t\tlet value = ui.item.value;\n\n\t\t\t\t\tmaterial.shape = PointShape[value];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet update = () => {\n\t\t\t\tlet typename = Object.keys(PointShape)[material.shape];\n\n\t\t\t\topt.selectmenu().val(typename).selectmenu('refresh');\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"point_shape_changed\", update);\n\n\t\t\tupdate();\n\t\t}\n\n\t\t{ // BACKFACE CULLING\n\t\t\t\n\t\t\tlet opt = panel.find(`#set_backface_culling`);\n\t\t\topt.click(() => {\n\t\t\t\tmaterial.backfaceCulling = opt.prop(\"checked\");\n\t\t\t});\n\t\t\tlet update = () => {\n\t\t\t\tlet value = material.backfaceCulling;\n\t\t\t\topt.prop(\"checked\", value);\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"backface_changed\", update);\n\t\t\tupdate();\n\n\t\t\tlet blockBackface = $('#materials_backface_container');\n\t\t\tblockBackface.css('display', 'none');\n\n\t\t\tconst pointAttributes = pointcloud.pcoGeometry.pointAttributes;\n\t\t\tconst hasNormals = pointAttributes.hasNormals ? pointAttributes.hasNormals() : false;\n\t\t\tif(hasNormals) {\n\t\t\t\tblockBackface.css('display', 'block');\n\t\t\t}\n\t\t\t/*\n\t\t\topt.checkboxradio({\n\t\t\t\tclicked: (event, ui) => {\n\t\t\t\t\t// let value = ui.item.value;\n\t\t\t\t\tlet value = ui.item.checked;\n\t\t\t\t\tconsole.log(value);\n\t\t\t\t\tmaterial.backfaceCulling = value; // $('#set_freeze').prop(\"checked\");\n\t\t\t\t}\n\t\t\t});\n\t\t\t*/\n\t\t}\n\n\t\t{ // OPACITY\n\t\t\tlet sldOpacity = panel.find(`#sldOpacity`);\n\t\t\tlet lblOpacity = panel.find(`#lblOpacity`);\n\n\t\t\tsldOpacity.slider({\n\t\t\t\tvalue: material.opacity,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 1,\n\t\t\t\tstep: 0.001,\n\t\t\t\tslide: function (event, ui) { \n\t\t\t\t\tmaterial.opacity = ui.value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet update = (e) => {\n\t\t\t\tlblOpacity.html(material.opacity.toFixed(2));\n\t\t\t\tsldOpacity.slider({value: material.opacity});\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"opacity_changed\", update);\n\n\t\t\tupdate();\n\t\t}\n\n\t\t{\n\n\t\t\tconst attributes = pointcloud.pcoGeometry.pointAttributes.attributes;\n\n\t\t\tlet options = [];\n\n\t\t\toptions.push(...attributes.map(a => a.name));\n\n\t\t\tconst intensityIndex = options.indexOf(\"intensity\");\n\t\t\tif(intensityIndex >= 0){\n\t\t\t\toptions.splice(intensityIndex + 1, 0, \"intensity gradient\");\n\t\t\t}\n\n\t\t\toptions.push(\n\t\t\t\t\"elevation\",\n\t\t\t\t\"color\",\n\t\t\t\t'matcap',\n\t\t\t\t'indices',\n\t\t\t\t'level of detail',\n\t\t\t\t'composite'\n\t\t\t);\n\n\t\t\tconst blacklist = [\n\t\t\t\t\"POSITION_CARTESIAN\",\n\t\t\t\t\"position\",\n\t\t\t];\n\n\t\t\toptions = options.filter(o => !blacklist.includes(o));\n\n\t\t\tlet attributeSelection = panel.find('#optMaterial');\n\t\t\tfor(let option of options){\n\t\t\t\tlet elOption = $(``);\n\t\t\t\tattributeSelection.append(elOption);\n\t\t\t}\n\n\t\t\tlet updateMaterialPanel = (event, ui) => {\n\t\t\t\tlet selectedValue = attributeSelection.selectmenu().val();\n\t\t\t\tmaterial.activeAttributeName = selectedValue;\n\n\t\t\t\tlet attribute = pointcloud.getAttribute(selectedValue);\n\n\t\t\t\tif(selectedValue === \"intensity gradient\"){\n\t\t\t\t\tattribute = pointcloud.getAttribute(\"intensity\");\n\t\t\t\t}\n\n\t\t\t\tconst isIntensity = attribute ? [\"intensity\", \"intensity gradient\"].includes(attribute.name) : false;\n\n\t\t\t\tif(isIntensity){\n\t\t\t\t\tif(pointcloud.material.intensityRange[0] === Infinity){\n\t\t\t\t\t\tpointcloud.material.intensityRange = attribute.range;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [min, max] = attribute.range;\n\n\t\t\t\t\tpanel.find('#sldIntensityRange').slider({\n\t\t\t\t\t\trange: true,\n\t\t\t\t\t\tmin: min, max: max, step: 0.01,\n\t\t\t\t\t\tvalues: [min, max],\n\t\t\t\t\t\tslide: (event, ui) => {\n\t\t\t\t\t\t\tlet min = ui.values[0];\n\t\t\t\t\t\t\tlet max = ui.values[1];\n\t\t\t\t\t\t\tmaterial.intensityRange = [min, max];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else if(attribute){\n\t\t\t\t\tconst [min, max] = attribute.range;\n\n\t\t\t\t\tlet selectedRange = material.getRange(attribute.name);\n\n\t\t\t\t\tif(!selectedRange){\n\t\t\t\t\t\tselectedRange = [...attribute.range];\n\t\t\t\t\t}\n\n\t\t\t\t\tlet minMaxAreNumbers = typeof min === \"number\" && typeof max === \"number\";\n\n\t\t\t\t\tif(minMaxAreNumbers){\n\t\t\t\t\t\tpanel.find('#sldExtraRange').slider({\n\t\t\t\t\t\t\trange: true,\n\t\t\t\t\t\t\tmin: min, \n\t\t\t\t\t\t\tmax: max, \n\t\t\t\t\t\t\tstep: 0.01,\n\t\t\t\t\t\t\tvalues: selectedRange,\n\t\t\t\t\t\t\tslide: (event, ui) => {\n\t\t\t\t\t\t\t\tlet [a, b] = ui.values;\n\n\t\t\t\t\t\t\t\tmaterial.setRange(attribute.name, [a, b]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tlet blockWeights = $('#materials\\\\.composite_weight_container');\n\t\t\t\tlet blockElevation = $('#materials\\\\.elevation_container');\n\t\t\t\tlet blockRGB = $('#materials\\\\.rgb_container');\n\t\t\t\tlet blockExtra = $('#materials\\\\.extra_container');\n\t\t\t\tlet blockColor = $('#materials\\\\.color_container');\n\t\t\t\tlet blockIntensity = $('#materials\\\\.intensity_container');\n\t\t\t\tlet blockIndex = $('#materials\\\\.index_container');\n\t\t\t\tlet blockTransition = $('#materials\\\\.transition_container');\n\t\t\t\tlet blockGps = $('#materials\\\\.gpstime_container');\n\t\t\t\tlet blockMatcap = $('#materials\\\\.matcap_container');\n\n\t\t\t\tblockIndex.css('display', 'none');\n\t\t\t\tblockIntensity.css('display', 'none');\n\t\t\t\tblockElevation.css('display', 'none');\n\t\t\t\tblockRGB.css('display', 'none');\n\t\t\t\tblockExtra.css('display', 'none');\n\t\t\t\tblockColor.css('display', 'none');\n\t\t\t\tblockWeights.css('display', 'none');\n\t\t\t\tblockTransition.css('display', 'none');\n\t\t\t\tblockMatcap.css('display', 'none');\n\t\t\t\tblockGps.css('display', 'none');\n\n\t\t\t\tif (selectedValue === 'composite') {\n\t\t\t\t\tblockWeights.css('display', 'block');\n\t\t\t\t\tblockElevation.css('display', 'block');\n\t\t\t\t\tblockRGB.css('display', 'block');\n\t\t\t\t\tblockIntensity.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'elevation') {\n\t\t\t\t\tblockElevation.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'RGB and Elevation') {\n\t\t\t\t\tblockRGB.css('display', 'block');\n\t\t\t\t\tblockElevation.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'rgba') {\n\t\t\t\t\tblockRGB.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'color') {\n\t\t\t\t\tblockColor.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'intensity') {\n\t\t\t\t\tblockIntensity.css('display', 'block');\n\t\t\t\t} else if (selectedValue === 'intensity gradient') {\n\t\t\t\t\tblockIntensity.css('display', 'block');\n\t\t\t\t} else if (selectedValue === \"indices\" ){\n\t\t\t\t\tblockIndex.css('display', 'block');\n\t\t\t\t} else if (selectedValue === \"matcap\" ){\n\t\t\t\t\tblockMatcap.css('display', 'block');\n\t\t\t\t} else if (selectedValue === \"classification\" ){\n\t\t\t\t\t// add classification color selctor?\n\t\t\t\t} else if (selectedValue === \"gps-time\" ){\n\t\t\t\t\tblockGps.css('display', 'block');\n\t\t\t\t} else if(selectedValue === \"number of returns\"){\n\t\t\t\t\t\n\t\t\t\t} else if(selectedValue === \"return number\"){\n\t\t\t\t\t\n\t\t\t\t} else if([\"source id\", \"point source id\"].includes(selectedValue)){\n\t\t\t\t\t\n\t\t\t\t} else{\n\t\t\t\t\tblockExtra.css('display', 'block');\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tattributeSelection.selectmenu({change: updateMaterialPanel});\n\n\t\t\tlet update = () => {\n\t\t\t\tattributeSelection.val(material.activeAttributeName).selectmenu('refresh');\n\t\t\t};\n\t\t\tthis.addVolatileListener(material, \"point_color_type_changed\", update);\n\t\t\tthis.addVolatileListener(material, \"active_attribute_changed\", update);\n\n\t\t\tupdate();\n\t\t\tupdateMaterialPanel();\n\t\t}\n\n\t\t{\n\t\t\tconst schemes = Object.keys(Potree.Gradients).map(name => ({name: name, values: Gradients[name]}));\n\n\t\t\tlet elSchemeContainer = panel.find(\"#elevation_gradient_scheme_selection\");\n\n\t\t\tfor(let scheme of schemes){\n\t\t\t\tlet elScheme = $(`\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t`);\n\n\t\t\t\tconst svg = Potree.Utils.createSvgGradient(scheme.values);\n\t\t\t\tsvg.setAttributeNS(null, \"class\", `button-icon`);\n\n\t\t\t\telScheme.append($(svg));\n\n\t\t\t\telScheme.click( () => {\n\t\t\t\t\tmaterial.gradient = Gradients[scheme.name];\n\t\t\t\t});\n\n\t\t\t\telSchemeContainer.append(elScheme);\n\t\t\t}\n\t\t}\n\n\t\t{\n\t\t\tlet matcaps = [\n\t\t\t\t{name: \"Normals\", icon: `${Potree.resourcePath}/icons/matcap/check_normal+y.jpg`}, \n\t\t\t\t{name: \"Basic 1\", icon: `${Potree.resourcePath}/icons/matcap/basic_1.jpg`}, \n\t\t\t\t{name: \"Basic 2\", icon: `${Potree.resourcePath}/icons/matcap/basic_2.jpg`}, \n\t\t\t\t{name: \"Basic Dark\", icon: `${Potree.resourcePath}/icons/matcap/basic_dark.jpg`}, \n\t\t\t\t{name: \"Basic Side\", icon: `${Potree.resourcePath}/icons/matcap/basic_side.jpg`}, \n\t\t\t\t{name: \"Ceramic Dark\", icon: `${Potree.resourcePath}/icons/matcap/ceramic_dark.jpg`}, \n\t\t\t\t{name: \"Ceramic Lightbulb\", icon: `${Potree.resourcePath}/icons/matcap/ceramic_lightbulb.jpg`}, \n\t\t\t\t{name: \"Clay Brown\", icon: `${Potree.resourcePath}/icons/matcap/clay_brown.jpg`}, \n\t\t\t\t{name: \"Clay Muddy\", icon: `${Potree.resourcePath}/icons/matcap/clay_muddy.jpg`}, \n\t\t\t\t{name: \"Clay Studio\", icon: `${Potree.resourcePath}/icons/matcap/clay_studio.jpg`}, \n\t\t\t\t{name: \"Resin\", icon: `${Potree.resourcePath}/icons/matcap/resin.jpg`}, \n\t\t\t\t{name: \"Skin\", icon: `${Potree.resourcePath}/icons/matcap/skin.jpg`}, \n\t\t\t\t{name: \"Jade\", icon: `${Potree.resourcePath}/icons/matcap/jade.jpg`}, \n\t\t\t\t{name: \"Metal_ Anisotropic\", icon: `${Potree.resourcePath}/icons/matcap/metal_anisotropic.jpg`}, \n\t\t\t\t{name: \"Metal Carpaint\", icon: `${Potree.resourcePath}/icons/matcap/metal_carpaint.jpg`}, \n\t\t\t\t{name: \"Metal Lead\", icon: `${Potree.resourcePath}/icons/matcap/metal_lead.jpg`}, \n\t\t\t\t{name: \"Metal Shiny\", icon: `${Potree.resourcePath}/icons/matcap/metal_shiny.jpg`}, \n\t\t\t\t{name: \"Pearl\", icon: `${Potree.resourcePath}/icons/matcap/pearl.jpg`}, \n\t\t\t\t{name: \"Toon\", icon: `${Potree.resourcePath}/icons/matcap/toon.jpg`},\n\t\t\t\t{name: \"Check Rim Light\", icon: `${Potree.resourcePath}/icons/matcap/check_rim_light.jpg`}, \n\t\t\t\t{name: \"Check Rim Dark\", icon: `${Potree.resourcePath}/icons/matcap/check_rim_dark.jpg`}, \n\t\t\t\t{name: \"Contours 1\", icon: `${Potree.resourcePath}/icons/matcap/contours_1.jpg`}, \n\t\t\t\t{name: \"Contours 2\", icon: `${Potree.resourcePath}/icons/matcap/contours_2.jpg`}, \n\t\t\t\t{name: \"Contours 3\", icon: `${Potree.resourcePath}/icons/matcap/contours_3.jpg`}, \n\t\t\t\t{name: \"Reflection Check Horizontal\", icon: `${Potree.resourcePath}/icons/matcap/reflection_check_horizontal.jpg`}, \n\t\t\t\t{name: \"Reflection Check Vertical\", icon: `${Potree.resourcePath}/icons/matcap/reflection_check_vertical.jpg`}, \n\t\t\t];\n\n\t\t\tlet elMatcapContainer = panel.find(\"#matcap_scheme_selection\");\n\n\t\t\tfor(let matcap of matcaps){\n\t\t\t\tlet elMatcap = $(`\n\t\t\t\t\t\t\n\t\t\t\t`);\n\n\t\t\t\telMatcap.click( () => {\n\t\t\t\t\tmaterial.matcap = matcap.icon.substring(matcap.icon.lastIndexOf('/'));\n\t\t\t\t});\n\n\t\t\t\telMatcapContainer.append(elMatcap);\n\t\t\t}\n\t\t}\n\n\t\t{\n\t\t\tpanel.find('#sldRGBGamma').slider({\n\t\t\t\tvalue: material.rgbGamma,\n\t\t\t\tmin: 0, max: 4, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.rgbGamma = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldRGBContrast').slider({\n\t\t\t\tvalue: material.rgbContrast,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.rgbContrast = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldRGBBrightness').slider({\n\t\t\t\tvalue: material.rgbBrightness,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.rgbBrightness = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldExtraGamma').slider({\n\t\t\t\tvalue: material.extraGamma,\n\t\t\t\tmin: 0, max: 4, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.extraGamma = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldExtraBrightness').slider({\n\t\t\t\tvalue: material.extraBrightness,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.extraBrightness = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldExtraContrast').slider({\n\t\t\t\tvalue: material.extraContrast,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.extraContrast = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldHeightRange').slider({\n\t\t\t\trange: true,\n\t\t\t\tmin: 0, max: 1000, step: 0.01,\n\t\t\t\tvalues: [0, 1000],\n\t\t\t\tslide: (event, ui) => {\n\t\t\t\t\tmaterial.heightMin = ui.values[0];\n\t\t\t\t\tmaterial.heightMax = ui.values[1];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpanel.find('#sldIntensityGamma').slider({\n\t\t\t\tvalue: material.intensityGamma,\n\t\t\t\tmin: 0, max: 4, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.intensityGamma = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldIntensityContrast').slider({\n\t\t\t\tvalue: material.intensityContrast,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.intensityContrast = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldIntensityBrightness').slider({\n\t\t\t\tvalue: material.intensityBrightness,\n\t\t\t\tmin: -1, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.intensityBrightness = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightRGB').slider({\n\t\t\t\tvalue: material.weightRGB,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightRGB = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightIntensity').slider({\n\t\t\t\tvalue: material.weightIntensity,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightIntensity = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightElevation').slider({\n\t\t\t\tvalue: material.weightElevation,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightElevation = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightClassification').slider({\n\t\t\t\tvalue: material.weightClassification,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightClassification = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightReturnNumber').slider({\n\t\t\t\tvalue: material.weightReturnNumber,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightReturnNumber = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find('#sldWeightSourceID').slider({\n\t\t\t\tvalue: material.weightSourceID,\n\t\t\t\tmin: 0, max: 1, step: 0.01,\n\t\t\t\tslide: (event, ui) => {material.weightSourceID = ui.value}\n\t\t\t});\n\n\t\t\tpanel.find(`#materials\\\\.color\\\\.picker`).spectrum({\n\t\t\t\tflat: true,\n\t\t\t\tshowInput: true,\n\t\t\t\tpreferredFormat: 'rgb',\n\t\t\t\tcancelText: '',\n\t\t\t\tchooseText: 'Apply',\n\t\t\t\tcolor: `#${material.color.getHexString()}`,\n\t\t\t\tmove: color => {\n\t\t\t\t\tlet cRGB = color.toRgb();\n\t\t\t\t\tlet tc = new THREE.Color().setRGB(cRGB.r / 255, cRGB.g / 255, cRGB.b / 255);\n\t\t\t\t\tmaterial.color = tc;\n\t\t\t\t},\n\t\t\t\tchange: color => {\n\t\t\t\t\tlet cRGB = color.toRgb();\n\t\t\t\t\tlet tc = new THREE.Color().setRGB(cRGB.r / 255, cRGB.g / 255, cRGB.b / 255);\n\t\t\t\t\tmaterial.color = tc;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.addVolatileListener(material, \"color_changed\", () => {\n\t\t\t\tpanel.find(`#materials\\\\.color\\\\.picker`)\n\t\t\t\t\t.spectrum('set', `#${material.color.getHexString()}`);\n\t\t\t});\n\n\t\t\tlet updateHeightRange = function () {\n\t\t\t\t\n\n\t\t\t\tlet aPosition = pointcloud.getAttribute(\"position\");\n\n\t\t\t\tlet bMin, bMax;\n\n\t\t\t\tif(aPosition){\n\t\t\t\t\t// for new format 2.0 and loader that contain precomputed min/max of attributes\n\t\t\t\t\tlet min = aPosition.range[0][2];\n\t\t\t\t\tlet max = aPosition.range[1][2];\n\t\t\t\t\tlet width = max - min;\n\n\t\t\t\t\tbMin = min - 0.2 * width;\n\t\t\t\t\tbMax = max + 0.2 * width;\n\t\t\t\t}else{\n\t\t\t\t\t// for format up until exlusive 2.0\n\t\t\t\t\tlet box = [pointcloud.pcoGeometry.tightBoundingBox, pointcloud.getBoundingBoxWorld()]\n\t\t\t\t\t\t.find(v => v !== undefined);\n\n\t\t\t\t\tpointcloud.updateMatrixWorld(true);\n\t\t\t\t\tbox = Utils.computeTransformedBoundingBox(box, pointcloud.matrixWorld);\n\n\t\t\t\t\tlet bWidth = box.max.z - box.min.z;\n\t\t\t\t\tbMin = box.min.z - 0.2 * bWidth;\n\t\t\t\t\tbMax = box.max.z + 0.2 * bWidth;\n\t\t\t\t}\n\n\t\t\t\tlet range = material.elevationRange;\n\n\t\t\t\tpanel.find('#lblHeightRange').html(`${range[0].toFixed(2)} to ${range[1].toFixed(2)}`);\n\t\t\t\tpanel.find('#sldHeightRange').slider({min: bMin, max: bMax, values: range});\n\t\t\t};\n\n\t\t\tlet updateExtraRange = function () {\n\n\t\t\t\tlet attributeName = material.activeAttributeName;\n\t\t\t\tlet attribute = pointcloud.getAttribute(attributeName);\n\n\t\t\t\tif(attribute == null){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlet range = material.getRange(attributeName);\n\n\t\t\t\tif(range == null){\n\t\t\t\t\trange = attribute.range;\n\t\t\t\t}\n\n\t\t\t\t// currently only supporting scalar ranges.\n\t\t\t\t// rgba, normals, positions, etc have vector ranges, however\n\t\t\t\tlet isValidRange = (typeof range[0] === \"number\") && (typeof range[1] === \"number\");\n\t\t\t\tif(!isValidRange){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(range){\n\t\t\t\t\tlet msg = `${range[0].toFixed(2)} to ${range[1].toFixed(2)}`;\n\t\t\t\t\tpanel.find('#lblExtraRange').html(msg);\n\t\t\t\t}else{\n\t\t\t\t\tpanel.find(\"could not deduce range\");\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet updateIntensityRange = function () {\n\t\t\t\tlet range = material.intensityRange;\n\n\t\t\t\tpanel.find('#lblIntensityRange').html(`${parseInt(range[0])} to ${parseInt(range[1])}`);\n\t\t\t};\n\n\t\t\t{\n\t\t\t\tupdateHeightRange();\n\t\t\t\tpanel.find(`#sldHeightRange`).slider('option', 'min');\n\t\t\t\tpanel.find(`#sldHeightRange`).slider('option', 'max');\n\t\t\t}\n\n\t\t\t{\n\t\t\t\tlet elGradientRepeat = panel.find(\"#gradient_repeat_option\");\n\t\t\t\telGradientRepeat.selectgroup({title: \"Gradient\"});\n\n\t\t\t\telGradientRepeat.find(\"input\").click( (e) => {\n\t\t\t\t\tthis.viewer.setElevationGradientRepeat(ElevationGradientRepeat[e.target.value]);\n\t\t\t\t});\n\n\t\t\t\tlet current = Object.keys(ElevationGradientRepeat)\n\t\t\t\t\t.filter(key => ElevationGradientRepeat[key] === this.viewer.elevationGradientRepeat);\n\t\t\t\telGradientRepeat.find(`input[value=${current}]`).trigger(\"click\");\n\t\t\t}\n\n\t\t\tlet onIntensityChange = () => {\n\t\t\t\tlet gamma = material.intensityGamma;\n\t\t\t\tlet contrast = material.intensityContrast;\n\t\t\t\tlet brightness = material.intensityBrightness;\n\n\t\t\t\tupdateIntensityRange();\n\n\t\t\t\tpanel.find('#lblIntensityGamma').html(gamma.toFixed(2));\n\t\t\t\tpanel.find('#lblIntensityContrast').html(contrast.toFixed(2));\n\t\t\t\tpanel.find('#lblIntensityBrightness').html(brightness.toFixed(2));\n\n\t\t\t\tpanel.find('#sldIntensityGamma').slider({value: gamma});\n\t\t\t\tpanel.find('#sldIntensityContrast').slider({value: contrast});\n\t\t\t\tpanel.find('#sldIntensityBrightness').slider({value: brightness});\n\t\t\t};\n\n\t\t\tlet onRGBChange = () => {\n\t\t\t\tlet gamma = material.rgbGamma;\n\t\t\t\tlet contrast = material.rgbContrast;\n\t\t\t\tlet brightness = material.rgbBrightness;\n\n\t\t\t\tpanel.find('#lblRGBGamma').html(gamma.toFixed(2));\n\t\t\t\tpanel.find('#lblRGBContrast').html(contrast.toFixed(2));\n\t\t\t\tpanel.find('#lblRGBBrightness').html(brightness.toFixed(2));\n\n\t\t\t\tpanel.find('#sldRGBGamma').slider({value: gamma});\n\t\t\t\tpanel.find('#sldRGBContrast').slider({value: contrast});\n\t\t\t\tpanel.find('#sldRGBBrightness').slider({value: brightness});\n\t\t\t};\n\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", updateExtraRange);\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", updateHeightRange);\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", onIntensityChange);\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", onRGBChange);\n\n\t\t\tupdateExtraRange();\n\t\t\tupdateHeightRange();\n\t\t\tonIntensityChange();\n\t\t\tonRGBChange();\n\t\t}\n\n\t}\n\n\t\n\n\tsetMeasurement(object){\n\n\t\tlet TYPE = {\n\t\t\tDISTANCE: {panel: DistancePanel},\n\t\t\tAREA: {panel: AreaPanel},\n\t\t\tPOINT: {panel: PointPanel},\n\t\t\tANGLE: {panel: AnglePanel},\n\t\t\tHEIGHT: {panel: HeightPanel},\n\t\t\tPROFILE: {panel: ProfilePanel},\n\t\t\tVOLUME: {panel: VolumePanel},\n\t\t\tCIRCLE: {panel: CirclePanel},\n\t\t\tOTHER: {panel: PointPanel},\n\t\t};\n\n\t\tlet getType = (measurement) => {\n\t\t\tif (measurement instanceof Measure) {\n\t\t\t\tif (measurement.showDistances && !measurement.showArea && !measurement.showAngles) {\n\t\t\t\t\treturn TYPE.DISTANCE;\n\t\t\t\t} else if (measurement.showDistances && measurement.showArea && !measurement.showAngles) {\n\t\t\t\t\treturn TYPE.AREA;\n\t\t\t\t} else if (measurement.maxMarkers === 1) {\n\t\t\t\t\treturn TYPE.POINT;\n\t\t\t\t} else if (!measurement.showDistances && !measurement.showArea && measurement.showAngles) {\n\t\t\t\t\treturn TYPE.ANGLE;\n\t\t\t\t} else if (measurement.showHeight) {\n\t\t\t\t\treturn TYPE.HEIGHT;\n\t\t\t\t} else if (measurement.showCircle) {\n\t\t\t\t\treturn TYPE.CIRCLE;\n\t\t\t\t} else {\n\t\t\t\t\treturn TYPE.OTHER;\n\t\t\t\t}\n\t\t\t} else if (measurement instanceof Profile) {\n\t\t\t\treturn TYPE.PROFILE;\n\t\t\t} else if (measurement instanceof Volume) {\n\t\t\t\treturn TYPE.VOLUME;\n\t\t\t}\n\t\t};\n\n\t\t//this.container.html(\"measurement\");\n\n\t\tlet type = getType(object);\n\t\tlet Panel = type.panel;\n\n\t\tlet panel = new Panel(this.viewer, object, this);\n\t\tthis.container.append(panel.elContent);\n\t}\n\n\tsetCamera(camera){\n\t\tlet panel = new CameraPanel(this.viewer, this);\n\t\tthis.container.append(panel.elContent);\n\t}\n\n\tsetAnnotation(annotation){\n\t\tlet panel = new AnnotationPanel(this.viewer, this, annotation);\n\t\tthis.container.append(panel.elContent);\n\t}\n\n\tsetCameraAnimation(animation){\n\t\tlet panel = new CameraAnimationPanel(this.viewer, this, animation)\n\t\tthis.container.append(panel.elContent);\n\t}\n\n}\n","\r\nfunction addCommas(nStr){\r\n\tnStr += '';\r\n\tlet x = nStr.split('.');\r\n\tlet x1 = x[0];\r\n\tlet x2 = x.length > 1 ? '.' + x[1] : '';\r\n\tlet rgx = /(\\d+)(\\d{3})/;\r\n\twhile (rgx.test(x1)) {\r\n\t\tx1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n\t}\r\n\treturn x1 + x2;\r\n};\r\n\r\nfunction format(value){\r\n\treturn addCommas(value.toFixed(3));\r\n};\r\n\r\nexport class HierarchicalSlider{\r\n\r\n\tconstructor(params = {}){\r\n\t\t\r\n\t\tthis.element = document.createElement(\"div\");\r\n\r\n\t\tthis.labels = [];\r\n\t\tthis.sliders = [];\r\n\t\tthis.range = params.range != null ? params.range : [0, 1];\r\n\t\tthis.slide = params.slide != null ? params.slide : null;\r\n\t\tthis.step = params.step != null ? params.step : 0.0001;\r\n\r\n\t\tlet levels = params.levels != null ? params.levels : 1;\r\n\r\n\t\tfor(let level = 0; level < levels; level++){\r\n\t\t\tthis.addLevel();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tsetRange(range){\r\n\t\tthis.range = [...range];\r\n\r\n\t\t{ // root slider\r\n\t\t\tlet slider = this.sliders[0];\r\n\r\n\t\t\t$(slider).slider({\r\n\t\t\t\tmin: range[0],\r\n\t\t\t\tmax: range[1],\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfor(let i = 1; i < this.sliders.length; i++){\r\n\t\t\tlet parentSlider = this.sliders[i - 1];\r\n\t\t\tlet slider = this.sliders[i];\r\n\r\n\t\t\tlet parentValues = $(parentSlider).slider(\"option\", \"values\");\r\n\t\t\tlet childRange = [...parentValues];\r\n\r\n\t\t\t$(slider).slider({\r\n\t\t\t\tmin: childRange[0],\r\n\t\t\t\tmax: childRange[1],\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.updateLabels();\r\n\t}\r\n\r\n\tsetValues(values){\r\n\t\tfor(let slider of this.sliders){\r\n\t\t\t$(slider).slider({\r\n\t\t\t\tvalues: [...values],\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.updateLabels();\r\n\t}\r\n\r\n\taddLevel(){\r\n\t\tconst elLevel = document.createElement(\"li\");\r\n\t\tconst elRange = document.createTextNode(\"Range: \");\r\n\t\tconst label = document.createElement(\"span\");\r\n\t\tconst slider = document.createElement(\"div\");\r\n\r\n\t\tlet level = this.sliders.length;\r\n\t\tlet [min, max] = [0, 0];\r\n\r\n\t\tif(this.sliders.length === 0){\r\n\t\t\t[min, max] = this.range;\r\n\t\t}else{\r\n\t\t\tlet parentSlider = this.sliders[this.sliders.length - 1];\r\n\t\t\t[min, max] = $(parentSlider).slider(\"option\", \"values\");\r\n\t\t}\r\n\t\t\r\n\t\t$(slider).slider({\r\n\t\t\trange: true, \r\n\t\t\tmin: min, \r\n\t\t\tmax: max,\r\n\t\t\tstep: this.step,\r\n\t\t\tvalues: [min, max],\r\n\t\t\tslide: (event, ui) => {\r\n\t\t\t\t\r\n\t\t\t\t// set all descendants to same range\r\n\t\t\t\tlet levels = this.sliders.length;\r\n\t\t\t\tfor(let i = level + 1; i < levels; i++){\r\n\t\t\t\t\tlet descendant = this.sliders[i];\r\n\r\n\t\t\t\t\t$(descendant).slider({\r\n\t\t\t\t\t\trange: true,\r\n\t\t\t\t\t\tmin: ui.values[0],\r\n\t\t\t\t\t\tmax: ui.values[1],\r\n\t\t\t\t\t\tvalues: [...ui.values],\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.slide){\r\n\t\t\t\t\tlet values = [...ui.values];\r\n\r\n\t\t\t\t\tthis.slide({\r\n\t\t\t\t\t\ttarget: this, \r\n\t\t\t\t\t\trange: this.range,\r\n\t\t\t\t\t\tvalues: values,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.updateLabels();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\telLevel.append(elRange, label, slider);\r\n\r\n\t\tthis.sliders.push(slider);\r\n\t\tthis.labels.push(label);\r\n\t\tthis.element.append(elLevel);\r\n\r\n\t\tthis.updateLabels();\r\n\t}\r\n\r\n\tremoveLevel(){\r\n\r\n\t}\r\n\r\n\tupdateSliders(){\r\n\r\n\t}\r\n\r\n\tupdateLabels(){\r\n\r\n\t\tlet levels = this.sliders.length;\r\n\r\n\t\tfor(let i = 0; i < levels; i++){\r\n\r\n\t\t\tlet slider = this.sliders[i];\r\n\t\t\tlet label = this.labels[i];\r\n\r\n\t\t\tlet [min, max] = $(slider).slider(\"option\", \"values\");\r\n\t\t\tlet strMin = format(min);\r\n\t\t\tlet strMax = format(max);\r\n\t\t\tlet strLabel = `${strMin} to ${strMax}`;\r\n\r\n\t\t\tlabel.innerHTML = strLabel;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n}\r\n\r\n","\nimport {EventDispatcher} from \"../../EventDispatcher.js\";\n\n \nexport class OrientedImageControls extends EventDispatcher{\n\t\n\tconstructor(viewer){\n\t\tsuper();\n\t\t\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.originalCam = viewer.scene.getActiveCamera();\n\t\tthis.shearCam = viewer.scene.getActiveCamera().clone();\n\t\tthis.shearCam.rotation.set(this.originalCam.rotation.toArray());\n\t\tthis.shearCam.updateProjectionMatrix();\n\t\tthis.shearCam.updateProjectionMatrix = () => {\n\t\t\treturn this.shearCam.projectionMatrix;\n\t\t};\n\n\t\tthis.image = null;\n\n\t\tthis.fadeFactor = 20;\n\t\tthis.fovDelta = 0;\n\n\t\tthis.fovMin = 0.1;\n\t\tthis.fovMax = 120;\n\n\t\tthis.shear = [0, 0];\n\n\t\t// const style = ``;\n\t\tthis.elUp = $(``);\n\t\tthis.elRight = $(``);\n\t\tthis.elDown = $(``);\n\t\tthis.elLeft = $(``);\n\t\tthis.elExit = $(``);\n\n\t\tthis.elExit.click( () => {\n\t\t\tthis.release();\n\t\t});\n\n\t\tthis.elUp.click(() => {\n\t\t\tconst fovY = viewer.getFOV();\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\n\t\t\tthis.shear[1] += 0.1 * top;\n\t\t});\n\n\t\tthis.elRight.click(() => {\n\t\t\tconst fovY = viewer.getFOV();\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\n\t\t\tthis.shear[0] += 0.1 * top;\n\t\t});\n\n\t\tthis.elDown.click(() => {\n\t\t\tconst fovY = viewer.getFOV();\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\n\t\t\tthis.shear[1] -= 0.1 * top;\n\t\t});\n\n\t\tthis.elLeft.click(() => {\n\t\t\tconst fovY = viewer.getFOV();\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\n\t\t\tthis.shear[0] -= 0.1 * top;\n\t\t});\n\n\t\tthis.scene = null;\n\t\tthis.sceneControls = new THREE.Scene();\n\n\t\tlet scroll = (e) => {\n\t\t\tthis.fovDelta += -e.delta * 1.0;\n\t\t};\n\n\t\tthis.addEventListener('mousewheel', scroll);\n\t\t//this.addEventListener(\"mousemove\", onMove);\n\t}\n\n\thasSomethingCaptured(){\n\t\treturn this.image !== null;\n\t}\n\n\tcapture(image){\n\t\tif(this.hasSomethingCaptured()){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.image = image;\n\n\t\tthis.originalFOV = this.viewer.getFOV();\n\t\tthis.originalControls = this.viewer.getControls();\n\n\t\tthis.viewer.setControls(this);\n\t\tthis.viewer.scene.overrideCamera = this.shearCam;\n\n\t\tconst elCanvas = this.viewer.renderer.domElement;\n\t\tconst elRoot = $(elCanvas.parentElement);\n\n\t\tthis.shear = [0, 0];\n\n\n\t\telRoot.append(this.elUp);\n\t\telRoot.append(this.elRight);\n\t\telRoot.append(this.elDown);\n\t\telRoot.append(this.elLeft);\n\t\telRoot.append(this.elExit);\n\t}\n\n\trelease(){\n\t\tthis.image = null;\n\n\t\tthis.viewer.scene.overrideCamera = null;\n\n\t\tthis.elUp.detach();\n\t\tthis.elRight.detach();\n\t\tthis.elDown.detach();\n\t\tthis.elLeft.detach();\n\t\tthis.elExit.detach();\n\n\t\tthis.viewer.setFOV(this.originalFOV);\n\t\tthis.viewer.setControls(this.originalControls);\n\t}\n\n\tsetScene (scene) {\n\t\tthis.scene = scene;\n\t}\n\n\tupdate (delta) {\n\t\t// const view = this.scene.view;\n\n\t\t// let prevTotal = this.shearCam.projectionMatrix.elements.reduce( (a, i) => a + i, 0);\n\n\t\t//const progression = Math.min(1, this.fadeFactor * delta);\n\t\t//const attenuation = Math.max(0, 1 - this.fadeFactor * delta);\n\t\tconst progression = 1;\n\t\tconst attenuation = 0;\n\n\t\tconst oldFov = this.viewer.getFOV();\n\t\tlet fovProgression = progression * this.fovDelta;\n\t\tlet newFov = oldFov * ((1 + fovProgression / 10));\n\n\t\tnewFov = Math.max(this.fovMin, newFov);\n\t\tnewFov = Math.min(this.fovMax, newFov);\n\n\t\tlet diff = newFov / oldFov;\n\n\t\tconst mouse = this.viewer.inputHandler.mouse;\n\t\tconst canvasSize = this.viewer.renderer.getSize(new THREE.Vector2());\n\t\tconst uv = [\n\t\t\t(mouse.x / canvasSize.x),\n\t\t\t((canvasSize.y - mouse.y) / canvasSize.y)\n\t\t];\n\n\t\tconst fovY = newFov;\n\t\tconst aspect = canvasSize.x / canvasSize.y;\n\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\n\t\tconst height = 2 * top;\n\t\tconst width = aspect * height;\n\n\t\tconst shearRangeX = [\n\t\t\tthis.shear[0] - 0.5 * width,\n\t\t\tthis.shear[0] + 0.5 * width,\n\t\t];\n\n\t\tconst shearRangeY = [\n\t\t\tthis.shear[1] - 0.5 * height,\n\t\t\tthis.shear[1] + 0.5 * height,\n\t\t];\n\n\t\tconst shx = (1 - uv[0]) * shearRangeX[0] + uv[0] * shearRangeX[1];\n\t\tconst shy = (1 - uv[1]) * shearRangeY[0] + uv[1] * shearRangeY[1];\n\n\t\tconst shu = (1 - diff);\n\n\t\tconst newShear = [\n\t\t\t(1 - shu) * this.shear[0] + shu * shx,\n\t\t\t(1 - shu) * this.shear[1] + shu * shy,\n\t\t];\n\t\t\n\t\tthis.shear = newShear;\n\t\tthis.viewer.setFOV(newFov);\n\t\t\n\t\tconst {originalCam, shearCam} = this;\n\n\t\toriginalCam.fov = newFov;\n\t\toriginalCam.updateMatrixWorld()\n\t\toriginalCam.updateProjectionMatrix();\n\t\tshearCam.copy(originalCam);\n\t\tshearCam.rotation.set(...originalCam.rotation.toArray());\n\n\t\tshearCam.updateMatrixWorld();\n\t\tshearCam.projectionMatrix.copy(originalCam.projectionMatrix);\n\n\t\tconst [sx, sy] = this.shear;\n\t\tconst mShear = new THREE.Matrix4().set(\n\t\t\t1, 0, sx, 0,\n\t\t\t0, 1, sy, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1,\n\t\t);\n\n\t\tconst proj = shearCam.projectionMatrix;\n\t\tproj.multiply(mShear);\n\t\tshearCam.projectionMatrixInverse.getInverse( proj );\n\n\t\tlet total = shearCam.projectionMatrix.elements.reduce( (a, i) => a + i, 0);\n\n\t\tthis.fovDelta *= attenuation;\n\t}\n};\n","\r\n\r\nimport {OrientedImageControls} from \"./OrientedImageControls.js\";\r\nimport { EventDispatcher } from \"../../EventDispatcher.js\";\r\n\r\n// https://support.pix4d.com/hc/en-us/articles/205675256-How-are-yaw-pitch-roll-defined\r\n// https://support.pix4d.com/hc/en-us/articles/202558969-How-are-omega-phi-kappa-defined\r\n\r\nfunction createMaterial(){\r\n\r\n\tlet vertexShader = `\r\n\tuniform float uNear;\r\n\tvarying vec2 vUV;\r\n\tvarying vec4 vDebug;\r\n\t\r\n\tvoid main(){\r\n\t\tvDebug = vec4(0.0, 1.0, 0.0, 1.0);\r\n\t\tvec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);\r\n\t\t// make sure that this mesh is at least in front of the near plane\r\n\t\tmodelViewPosition.xyz += normalize(modelViewPosition.xyz) * uNear;\r\n\t\tgl_Position = projectionMatrix * modelViewPosition;\r\n\t\tvUV = uv;\r\n\t}\r\n\t`;\r\n\r\n\tlet fragmentShader = `\r\n\tuniform sampler2D tColor;\r\n\tuniform float uOpacity;\r\n\tvarying vec2 vUV;\r\n\tvarying vec4 vDebug;\r\n\tvoid main(){\r\n\t\tvec4 color = texture2D(tColor, vUV);\r\n\t\tgl_FragColor = color;\r\n\t\tgl_FragColor.a = uOpacity;\r\n\t}\r\n\t`;\r\n\tconst material = new THREE.ShaderMaterial( {\r\n\t\tuniforms: {\r\n\t\t\t// time: { value: 1.0 },\r\n\t\t\t// resolution: { value: new THREE.Vector2() }\r\n\t\t\ttColor: {value: new THREE.Texture() },\r\n\t\t\tuNear: {value: 0.0},\r\n\t\t\tuOpacity: {value: 1.0},\r\n\t\t},\r\n\t\tvertexShader: vertexShader,\r\n\t\tfragmentShader: fragmentShader,\r\n\t\tside: THREE.DoubleSide,\r\n\t} );\r\n\r\n\tmaterial.side = THREE.DoubleSide;\r\n\r\n\treturn material;\r\n}\r\n\r\nconst planeGeometry = new THREE.PlaneGeometry(1, 1);\r\nconst lineGeometry = new THREE.Geometry();\r\n\r\nlineGeometry.vertices.push(\r\n\tnew THREE.Vector3(-0.5, -0.5, 0),\r\n\tnew THREE.Vector3( 0.5, -0.5, 0),\r\n\tnew THREE.Vector3( 0.5, 0.5, 0),\r\n\tnew THREE.Vector3(-0.5, 0.5, 0),\r\n\tnew THREE.Vector3(-0.5, -0.5, 0),\r\n);\r\n\r\nexport class OrientedImage{\r\n\r\n\tconstructor(id){\r\n\r\n\t\tthis.id = id;\r\n\t\tthis.fov = 1.0;\r\n\t\tthis.position = new THREE.Vector3();\r\n\t\tthis.rotation = new THREE.Vector3();\r\n\t\tthis.width = 0;\r\n\t\tthis.height = 0;\r\n\t\tthis.fov = 1.0;\r\n\r\n\t\tconst material = createMaterial();\r\n\t\tconst lineMaterial = new THREE.LineBasicMaterial( { color: 0x00ff00 } );\r\n\t\tthis.mesh = new THREE.Mesh(planeGeometry, material);\r\n\t\tthis.line = new THREE.Line(lineGeometry, lineMaterial);\r\n\t\tthis.texture = null;\r\n\r\n\t\tthis.mesh.orientedImage = this;\r\n\t}\r\n\r\n\tset(position, rotation, dimension, fov){\r\n\r\n\t\tlet radians = rotation.map(THREE.Math.degToRad);\r\n\r\n\t\tthis.position.set(...position);\r\n\t\tthis.mesh.position.set(...position);\r\n\r\n\t\tthis.rotation.set(...radians);\r\n\t\tthis.mesh.rotation.set(...radians);\r\n\r\n\t\t[this.width, this.height] = dimension;\r\n\t\tthis.mesh.scale.set(this.width / this.height, 1, 1);\r\n\r\n\t\tthis.fov = fov;\r\n\r\n\t\tthis.updateTransform();\r\n\t}\r\n\r\n\tupdateTransform(){\r\n\t\tlet {mesh, line, fov} = this;\r\n\r\n\t\tmesh.updateMatrixWorld();\r\n\t\tconst dir = mesh.getWorldDirection();\r\n\t\tconst alpha = THREE.Math.degToRad(fov / 2);\r\n\t\tconst d = -0.5 / Math.tan(alpha);\r\n\t\tconst move = dir.clone().multiplyScalar(d);\r\n\t\tmesh.position.add(move);\r\n\r\n\t\tline.position.copy(mesh.position);\r\n\t\tline.scale.copy(mesh.scale);\r\n\t\tline.rotation.copy(mesh.rotation);\r\n\t}\r\n\r\n};\r\n\r\nexport class OrientedImages extends EventDispatcher{\r\n\r\n\tconstructor(){\r\n\t\tsuper();\r\n\r\n\t\tthis.node = null;\r\n\t\tthis.cameraParams = null;\r\n\t\tthis.imageParams = null;\r\n\t\tthis.images = null;\r\n\t\tthis._visible = true;\r\n\t}\r\n\r\n\tset visible(visible){\r\n\t\tif(this._visible === visible){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor(const image of this.images){\r\n\t\t\timage.mesh.visible = visible;\r\n\t\t\timage.line.visible = visible;\r\n\t\t}\r\n\r\n\t\tthis._visible = visible;\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"visibility_changed\",\r\n\t\t\timages: this,\r\n\t\t});\r\n\t}\r\n\r\n\tget visible(){\r\n\t\treturn this._visible;\r\n\t}\r\n\r\n\r\n};\r\n\r\nexport class OrientedImageLoader{\r\n\r\n\tstatic async loadCameraParams(path){\r\n\t\tconst res = await fetch(path);\r\n\t\tconst text = await res.text();\r\n\r\n\t\tconst parser = new DOMParser();\r\n\t\tconst doc = parser.parseFromString(text, \"application/xml\");\r\n\r\n\t\tconst width = parseInt(doc.getElementsByTagName(\"width\")[0].textContent);\r\n\t\tconst height = parseInt(doc.getElementsByTagName(\"height\")[0].textContent);\r\n\t\tconst f = parseFloat(doc.getElementsByTagName(\"f\")[0].textContent);\r\n\r\n\t\tlet a = (height / 2) / f;\r\n\t\tlet fov = 2 * THREE.Math.radToDeg(Math.atan(a));\r\n\r\n\t\tconst params = {\r\n\t\t\tpath: path,\r\n\t\t\twidth: width,\r\n\t\t\theight: height,\r\n\t\t\tf: f,\r\n\t\t\tfov: fov,\r\n\t\t};\r\n\r\n\t\treturn params;\r\n\t}\r\n\r\n\tstatic async loadImageParams(path){\r\n\r\n\t\tconst response = await fetch(path);\r\n\t\tif(!response.ok){\r\n\t\t\tconsole.error(`failed to load ${path}`);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst content = await response.text();\r\n\t\tconst lines = content.split(/\\r?\\n/);\r\n\t\tconst imageParams = [];\r\n\r\n\t\tfor(let i = 1; i < lines.length; i++){\r\n\t\t\tconst line = lines[i];\r\n\r\n\t\t\tif(line.startsWith(\"#\")){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst tokens = line.split(/\\s+/);\r\n\r\n\t\t\tif(tokens.length < 6){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst params = {\r\n\t\t\t\tid: tokens[0],\r\n\t\t\t\tx: Number.parseFloat(tokens[1]),\r\n\t\t\t\ty: Number.parseFloat(tokens[2]),\r\n\t\t\t\tz: Number.parseFloat(tokens[3]),\r\n\t\t\t\tomega: Number.parseFloat(tokens[4]),\r\n\t\t\t\tphi: Number.parseFloat(tokens[5]),\r\n\t\t\t\tkappa: Number.parseFloat(tokens[6]),\r\n\t\t\t};\r\n\r\n\t\t\t// const whitelist = [\"47518.jpg\"];\r\n\t\t\t// if(whitelist.includes(params.id)){\r\n\t\t\t// \timageParams.push(params);\r\n\t\t\t// }\r\n\t\t\timageParams.push(params);\r\n\t\t}\r\n\r\n\t\t// debug\r\n\t\t//return [imageParams[50]];\r\n\r\n\t\treturn imageParams;\r\n\t}\r\n\r\n\tstatic async load(cameraParamsPath, imageParamsPath, viewer){\r\n\r\n\t\tconst tStart = performance.now();\r\n\r\n\t\tconst [cameraParams, imageParams] = await Promise.all([\r\n\t\t\tOrientedImageLoader.loadCameraParams(cameraParamsPath),\r\n\t\t\tOrientedImageLoader.loadImageParams(imageParamsPath),\r\n\t\t]);\r\n\r\n\t\tconst orientedImageControls = new OrientedImageControls(viewer);\r\n\t\tconst raycaster = new THREE.Raycaster();\r\n\r\n\t\tconst tEnd = performance.now();\r\n\t\tconsole.log(tEnd - tStart);\r\n\r\n\t\t// const sp = new THREE.PlaneGeometry(1, 1);\r\n\t\t// const lg = new THREE.Geometry();\r\n\r\n\t\t// lg.vertices.push(\r\n\t\t// \tnew THREE.Vector3(-0.5, -0.5, 0),\r\n\t\t// \tnew THREE.Vector3( 0.5, -0.5, 0),\r\n\t\t// \tnew THREE.Vector3( 0.5, 0.5, 0),\r\n\t\t// \tnew THREE.Vector3(-0.5, 0.5, 0),\r\n\t\t// \tnew THREE.Vector3(-0.5, -0.5, 0),\r\n\t\t// );\r\n\r\n\t\tconst {width, height} = cameraParams;\r\n\t\tconst orientedImages = [];\r\n\t\tconst sceneNode = new THREE.Object3D();\r\n\t\tsceneNode.name = \"oriented_images\";\r\n\r\n\t\tfor(const params of imageParams){\r\n\r\n\t\t\t// const material = createMaterial();\r\n\t\t\t// const lm = new THREE.LineBasicMaterial( { color: 0x00ff00 } );\r\n\t\t\t// const mesh = new THREE.Mesh(sp, material);\r\n\r\n\t\t\tconst {x, y, z, omega, phi, kappa} = params;\r\n\t\t\t// const [rx, ry, rz] = [omega, phi, kappa]\r\n\t\t\t// \t.map(THREE.Math.degToRad);\r\n\t\t\t\r\n\t\t\t// mesh.position.set(x, y, z);\r\n\t\t\t// mesh.scale.set(width / height, 1, 1);\r\n\t\t\t// mesh.rotation.set(rx, ry, rz);\r\n\t\t\t// {\r\n\t\t\t// \tmesh.updateMatrixWorld();\r\n\t\t\t// \tconst dir = mesh.getWorldDirection();\r\n\t\t\t// \tconst alpha = THREE.Math.degToRad(cameraParams.fov / 2);\r\n\t\t\t// \tconst d = -0.5 / Math.tan(alpha);\r\n\t\t\t// \tconst move = dir.clone().multiplyScalar(d);\r\n\t\t\t// \tmesh.position.add(move);\r\n\t\t\t// }\r\n\t\t\t// sceneNode.add(mesh);\r\n\r\n\t\t\t// const line = new THREE.Line(lg, lm);\r\n\t\t\t// line.position.copy(mesh.position);\r\n\t\t\t// line.scale.copy(mesh.scale);\r\n\t\t\t// line.rotation.copy(mesh.rotation);\r\n\t\t\t// sceneNode.add(line);\r\n\r\n\t\t\tlet orientedImage = new OrientedImage(params.id);\r\n\t\t\t// orientedImage.setPosition(x, y, z);\r\n\t\t\t// orientedImage.setRotation(omega, phi, kappa);\r\n\t\t\t// orientedImage.setDimension(width, height);\r\n\t\t\tlet position = [x, y, z];\r\n\t\t\tlet rotation = [omega, phi, kappa];\r\n\t\t\tlet dimension = [width, height];\r\n\t\t\torientedImage.set(position, rotation, dimension, cameraParams.fov);\r\n\r\n\t\t\tsceneNode.add(orientedImage.mesh);\r\n\t\t\tsceneNode.add(orientedImage.line);\r\n\t\t\t\r\n\t\t\torientedImages.push(orientedImage);\r\n\t\t}\r\n\r\n\t\tlet hoveredElement = null;\r\n\t\tlet clipVolume = null;\r\n\r\n\t\tconst onMouseMove = (evt) => {\r\n\t\t\tconst tStart = performance.now();\r\n\t\t\tif(hoveredElement){\r\n\t\t\t\thoveredElement.line.material.color.setRGB(0, 1, 0);\r\n\t\t\t}\r\n\t\t\tevt.preventDefault();\r\n\r\n\t\t\t//var array = getMousePosition( container, evt.clientX, evt.clientY );\r\n\t\t\tconst rect = viewer.renderer.domElement.getBoundingClientRect();\r\n\t\t\tconst [x, y] = [evt.clientX, evt.clientY];\r\n\t\t\tconst array = [ \r\n\t\t\t\t( x - rect.left ) / rect.width, \r\n\t\t\t\t( y - rect.top ) / rect.height \r\n\t\t\t];\r\n\t\t\tconst onClickPosition = new THREE.Vector2(...array);\r\n\t\t\t//const intersects = getIntersects(onClickPosition, scene.children);\r\n\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\t\t\tconst mouse = new THREE.Vector3(\r\n\t\t\t\t+ ( onClickPosition.x * 2 ) - 1, \r\n\t\t\t\t- ( onClickPosition.y * 2 ) + 1 );\r\n\t\t\tconst objects = orientedImages.map(i => i.mesh);\r\n\t\t\traycaster.setFromCamera( mouse, camera );\r\n\t\t\tconst intersects = raycaster.intersectObjects( objects );\r\n\t\t\tlet selectionChanged = false;\r\n\r\n\t\t\tif ( intersects.length > 0){\r\n\t\t\t\t//console.log(intersects);\r\n\t\t\t\tconst intersection = intersects[0];\r\n\t\t\t\tconst orientedImage = intersection.object.orientedImage;\r\n\t\t\t\torientedImage.line.material.color.setRGB(1, 0, 0);\r\n\t\t\t\tselectionChanged = hoveredElement !== orientedImage;\r\n\t\t\t\thoveredElement = orientedImage;\r\n\t\t\t}else{\r\n\t\t\t\thoveredElement = null;\r\n\t\t\t}\r\n\r\n\t\t\tlet shouldRemoveClipVolume = clipVolume !== null && hoveredElement === null;\r\n\t\t\tlet shouldAddClipVolume = clipVolume === null && hoveredElement !== null;\r\n\r\n\t\t\tif(clipVolume !== null && (hoveredElement === null || selectionChanged)){\r\n\t\t\t\t// remove existing\r\n\t\t\t\tviewer.scene.removePolygonClipVolume(clipVolume);\r\n\t\t\t\tclipVolume = null;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(shouldAddClipVolume || selectionChanged){\r\n\t\t\t\tconst img = hoveredElement;\r\n\t\t\t\tconst fov = cameraParams.fov;\r\n\t\t\t\tconst aspect = cameraParams.width / cameraParams.height;\r\n\t\t\t\tconst near = 1.0;\r\n\t\t\t\tconst far = 1000 * 1000;\r\n\t\t\t\tconst camera = new THREE.PerspectiveCamera(fov, aspect, near, far);\r\n\t\t\t\tcamera.rotation.order = viewer.scene.getActiveCamera().rotation.order;\r\n\t\t\t\tcamera.rotation.copy(img.mesh.rotation);\r\n\t\t\t\t{\r\n\t\t\t\t\tconst mesh = img.mesh;\r\n\t\t\t\t\tconst dir = mesh.getWorldDirection();\r\n\t\t\t\t\tconst pos = mesh.position;\r\n\t\t\t\t\tconst alpha = THREE.Math.degToRad(fov / 2);\r\n\t\t\t\t\tconst d = 0.5 / Math.tan(alpha);\r\n\t\t\t\t\tconst newCamPos = pos.clone().add(dir.clone().multiplyScalar(d));\r\n\t\t\t\t\tconst newCamDir = pos.clone().sub(newCamPos);\r\n\t\t\t\t\tconst newCamTarget = new THREE.Vector3().addVectors(\r\n\t\t\t\t\t\tnewCamPos,\r\n\t\t\t\t\t\tnewCamDir.clone().multiplyScalar(viewer.getMoveSpeed()));\r\n\t\t\t\t\tcamera.position.copy(newCamPos);\r\n\t\t\t\t}\r\n\t\t\t\tlet volume = new Potree.PolygonClipVolume(camera);\r\n\t\t\t\tlet m0 = new THREE.Mesh();\r\n\t\t\t\tlet m1 = new THREE.Mesh();\r\n\t\t\t\tlet m2 = new THREE.Mesh();\r\n\t\t\t\tlet m3 = new THREE.Mesh();\r\n\t\t\t\tm0.position.set(-1, -1, 0);\r\n\t\t\t\tm1.position.set( 1, -1, 0);\r\n\t\t\t\tm2.position.set( 1, 1, 0);\r\n\t\t\t\tm3.position.set(-1, 1, 0);\r\n\t\t\t\tvolume.markers.push(m0, m1, m2, m3);\r\n\t\t\t\tvolume.initialized = true;\r\n\t\t\t\t\r\n\t\t\t\tviewer.scene.addPolygonClipVolume(volume);\r\n\t\t\t\tclipVolume = volume;\r\n\t\t\t}\r\n\t\t\tconst tEnd = performance.now();\r\n\t\t\t//console.log(tEnd - tStart);\r\n\t\t};\r\n\r\n\t\tconst moveToImage = (image) => {\r\n\t\t\tconsole.log(\"move to image \" + image.id);\r\n\r\n\t\t\tconst mesh = image.mesh;\r\n\t\t\tconst newCamPos = image.position.clone();\r\n\t\t\tconst newCamTarget = mesh.position.clone();\r\n\r\n\t\t\tviewer.scene.view.setView(newCamPos, newCamTarget, 500, () => {\r\n\t\t\t\torientedImageControls.capture(image);\r\n\t\t\t});\r\n\r\n\t\t\tif(image.texture === null){\r\n\r\n\t\t\t\tconst target = image;\r\n\r\n\t\t\t\tconst tmpImagePath = `${Potree.resourcePath}/images/loading.jpg`;\r\n\t\t\t\tnew THREE.TextureLoader().load(tmpImagePath,\r\n\t\t\t\t\t(texture) => {\r\n\t\t\t\t\t\tif(target.texture === null){\r\n\t\t\t\t\t\t\ttarget.texture = texture;\r\n\t\t\t\t\t\t\ttarget.mesh.material.uniforms.tColor.value = texture;\r\n\t\t\t\t\t\t\tmesh.material.needsUpdate = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\t\tconst imagePath = `${imageParamsPath}/../${target.id}`;\r\n\t\t\t\tnew THREE.TextureLoader().load(imagePath,\r\n\t\t\t\t\t(texture) => {\r\n\t\t\t\t\t\ttarget.texture = texture;\r\n\t\t\t\t\t\ttarget.mesh.material.uniforms.tColor.value = texture;\r\n\t\t\t\t\t\tmesh.material.needsUpdate = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t\t\r\n\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst onMouseClick = (evt) => {\r\n\r\n\t\t\tif(orientedImageControls.hasSomethingCaptured()){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(hoveredElement){\r\n\t\t\t\tmoveToImage(hoveredElement);\r\n\t\t\t}\r\n\t\t};\r\n\t\tviewer.renderer.domElement.addEventListener( 'mousemove', onMouseMove, false );\r\n\t\tviewer.renderer.domElement.addEventListener( 'mousedown', onMouseClick, false );\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\r\n\t\t\tfor(const image of orientedImages){\r\n\t\t\t\tconst world = image.mesh.matrixWorld;\r\n\t\t\t\tconst {width, height} = image;\r\n\t\t\t\tconst aspect = width / height;\r\n\r\n\t\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\r\n\t\t\t\tconst imgPos = image.mesh.getWorldPosition(new THREE.Vector3());\r\n\t\t\t\tconst camPos = camera.position;\r\n\t\t\t\tconst d = camPos.distanceTo(imgPos);\r\n\r\n\t\t\t\tconst minSize = 1; // in degrees of fov\r\n\t\t\t\tconst a = THREE.Math.degToRad(minSize);\r\n\t\t\t\tlet r = d * Math.tan(a);\r\n\t\t\t\tr = Math.max(r, 1);\r\n\r\n\r\n\t\t\t\timage.mesh.scale.set(r * aspect, r, 1);\r\n\t\t\t\timage.line.scale.set(r * aspect, r, 1);\r\n\r\n\t\t\t\timage.mesh.material.uniforms.uNear.value = camera.near;\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tconst images = new OrientedImages();\r\n\t\timages.node = sceneNode;\r\n\t\timages.cameraParamsPath = cameraParamsPath;\r\n\t\timages.imageParamsPath = imageParamsPath;\r\n\t\timages.cameraParams = cameraParams;\r\n\t\timages.imageParams = imageParams;\r\n\t\timages.images = orientedImages;\r\n\r\n\t\tPotree.debug.moveToImage = moveToImage;\r\n\r\n\t\treturn images;\r\n\t}\r\n}\r\n\r\n","\r\nimport { EventDispatcher } from \"../../EventDispatcher.js\";\r\nimport {TextSprite} from \"../../TextSprite.js\";\r\n\r\nlet sg = new THREE.SphereGeometry(1, 8, 8);\r\nlet sgHigh = new THREE.SphereGeometry(1, 128, 128);\r\n\r\nlet sm = new THREE.MeshBasicMaterial({side: THREE.BackSide});\r\nlet smHovered = new THREE.MeshBasicMaterial({side: THREE.BackSide, color: 0xff0000});\r\n\r\nlet raycaster = new THREE.Raycaster();\r\nlet currentlyHovered = null;\r\n\r\nlet previousView = {\r\n\tcontrols: null,\r\n\tposition: null,\r\n\ttarget: null,\r\n};\r\n\r\nclass Image360{\r\n\r\n\tconstructor(file, time, longitude, latitude, altitude, course, pitch, roll){\r\n\t\tthis.file = file;\r\n\t\tthis.time = time;\r\n\t\tthis.longitude = longitude;\r\n\t\tthis.latitude = latitude;\r\n\t\tthis.altitude = altitude;\r\n\t\tthis.course = course;\r\n\t\tthis.pitch = pitch;\r\n\t\tthis.roll = roll;\r\n\t\tthis.mesh = null;\r\n\t}\r\n};\r\n\r\nexport class Images360 extends EventDispatcher{\r\n\r\n\tconstructor(viewer){\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.selectingEnabled = true;\r\n\r\n\t\tthis.images = [];\r\n\t\tthis.node = new THREE.Object3D();\r\n\r\n\t\tthis.sphere = new THREE.Mesh(sgHigh, sm);\r\n\t\tthis.sphere.visible = false;\r\n\t\tthis.sphere.scale.set(1000, 1000, 1000);\r\n\t\tthis.node.add(this.sphere);\r\n\t\tthis._visible = true;\r\n\t\t// this.node.add(label);\r\n\r\n\t\tthis.focusedImage = null;\r\n\r\n\t\tlet elUnfocus = document.createElement(\"input\");\r\n\t\telUnfocus.type = \"button\";\r\n\t\telUnfocus.value = \"unfocus\";\r\n\t\telUnfocus.style.position = \"absolute\";\r\n\t\telUnfocus.style.right = \"10px\";\r\n\t\telUnfocus.style.bottom = \"10px\";\r\n\t\telUnfocus.style.zIndex = \"10000\";\r\n\t\telUnfocus.style.fontSize = \"2em\";\r\n\t\telUnfocus.addEventListener(\"click\", () => this.unfocus());\r\n\t\tthis.elUnfocus = elUnfocus;\r\n\r\n\t\tthis.domRoot = viewer.renderer.domElement.parentElement;\r\n\t\tthis.domRoot.appendChild(elUnfocus);\r\n\t\tthis.elUnfocus.style.display = \"none\";\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\t\t\tthis.update(viewer);\r\n\t\t});\r\n\t\tviewer.inputHandler.addInputListener(this);\r\n\r\n\t\tthis.addEventListener(\"mousedown\", () => {\r\n\t\t\tif(currentlyHovered){\r\n\t\t\t\tthis.focus(currentlyHovered.image360);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t};\r\n\r\n\tset visible(visible){\r\n\t\tif(this._visible === visible){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\r\n\t\tfor(const image of this.images){\r\n\t\t\timage.mesh.visible = visible && (this.focusedImage == null);\r\n\t\t}\r\n\r\n\t\tthis.sphere.visible = visible && (this.focusedImage != null);\r\n\t\tthis._visible = visible;\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"visibility_changed\",\r\n\t\t\timages: this,\r\n\t\t});\r\n\t}\r\n\r\n\tget visible(){\r\n\t\treturn this._visible;\r\n\t}\r\n\r\n\tfocus(image360){\r\n\t\tif(this.focusedImage !== null){\r\n\t\t\tthis.unfocus();\r\n\t\t}\r\n\r\n\t\tpreviousView = {\r\n\t\t\tcontrols: this.viewer.controls,\r\n\t\t\tposition: this.viewer.scene.view.position.clone(),\r\n\t\t\ttarget: viewer.scene.view.getPivot(),\r\n\t\t};\r\n\r\n\t\tthis.viewer.setControls(this.viewer.orbitControls);\r\n\t\tthis.viewer.orbitControls.doubleClockZoomEnabled = false;\r\n\r\n\t\tfor(let image of this.images){\r\n\t\t\timage.mesh.visible = false;\r\n\t\t}\r\n\r\n\t\tthis.selectingEnabled = false;\r\n\r\n\t\tthis.sphere.visible = false;\r\n\r\n\t\tthis.load(image360).then( () => {\r\n\t\t\tthis.sphere.visible = true;\r\n\t\t\tthis.sphere.material.map = image360.texture;\r\n\t\t\tthis.sphere.material.needsUpdate = true;\r\n\t\t});\r\n\r\n\t\t{ // orientation\r\n\t\t\tlet {course, pitch, roll} = image360;\r\n\t\t\tthis.sphere.rotation.set(\r\n\t\t\t\tTHREE.Math.degToRad(+roll + 90),\r\n\t\t\t\tTHREE.Math.degToRad(-pitch),\r\n\t\t\t\tTHREE.Math.degToRad(-course + 90),\r\n\t\t\t\t\"ZYX\"\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.sphere.position.set(...image360.position);\r\n\r\n\t\tlet target = new THREE.Vector3(...image360.position);\r\n\t\tlet dir = target.clone().sub(viewer.scene.view.position).normalize();\r\n\t\tlet move = dir.multiplyScalar(0.000001);\r\n\t\tlet newCamPos = target.clone().sub(move);\r\n\r\n\t\tviewer.scene.view.setView(\r\n\t\t\tnewCamPos, \r\n\t\t\ttarget,\r\n\t\t\t500\r\n\t\t);\r\n\r\n\t\tthis.focusedImage = image360;\r\n\r\n\t\tthis.elUnfocus.style.display = \"\";\r\n\t}\r\n\r\n\tunfocus(){\r\n\t\tthis.selectingEnabled = true;\r\n\r\n\t\tfor(let image of this.images){\r\n\t\t\timage.mesh.visible = true;\r\n\t\t}\r\n\r\n\t\tlet image = this.focusedImage;\r\n\r\n\t\tif(image === null){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\r\n\t\tthis.sphere.material.map = null;\r\n\t\tthis.sphere.material.needsUpdate = true;\r\n\t\tthis.sphere.visible = false;\r\n\r\n\t\tlet pos = viewer.scene.view.position;\r\n\t\tlet target = viewer.scene.view.getPivot();\r\n\t\tlet dir = target.clone().sub(pos).normalize();\r\n\t\tlet move = dir.multiplyScalar(10);\r\n\t\tlet newCamPos = target.clone().sub(move);\r\n\r\n\t\tviewer.orbitControls.doubleClockZoomEnabled = true;\r\n\t\tviewer.setControls(previousView.controls);\r\n\r\n\t\tviewer.scene.view.setView(\r\n\t\t\tpreviousView.position, \r\n\t\t\tpreviousView.target,\r\n\t\t\t500\r\n\t\t);\r\n\r\n\r\n\t\tthis.focusedImage = null;\r\n\r\n\t\tthis.elUnfocus.style.display = \"none\";\r\n\t}\r\n\r\n\tload(image360){\r\n\r\n\t\treturn new Promise(resolve => {\r\n\t\t\tlet texture = new THREE.TextureLoader().load(image360.file, resolve);\r\n\t\t\ttexture.wrapS = THREE.RepeatWrapping;\r\n\t\t\ttexture.repeat.x = -1;\r\n\r\n\t\t\timage360.texture = texture;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\thandleHovering(){\r\n\t\tlet mouse = viewer.inputHandler.mouse;\r\n\t\tlet camera = viewer.scene.getActiveCamera();\r\n\t\tlet domElement = viewer.renderer.domElement;\r\n\r\n\t\tlet ray = Potree.Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\r\n\r\n\t\t// let tStart = performance.now();\r\n\t\traycaster.ray.copy(ray);\r\n\t\tlet intersections = raycaster.intersectObjects(this.node.children);\r\n\r\n\t\tif(intersections.length === 0){\r\n\t\t\t// label.visible = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet intersection = intersections[0];\r\n\t\tcurrentlyHovered = intersection.object;\r\n\t\tcurrentlyHovered.material = smHovered;\r\n\r\n\t\t//label.visible = true;\r\n\t\t//label.setText(currentlyHovered.image360.file);\r\n\t\t//currentlyHovered.getWorldPosition(label.position);\r\n\t}\r\n\r\n\tupdate(){\r\n\r\n\t\tlet {viewer} = this;\r\n\r\n\t\tif(currentlyHovered){\r\n\t\t\tcurrentlyHovered.material = sm;\r\n\t\t\tcurrentlyHovered = null;\r\n\t\t}\r\n\r\n\t\tif(this.selectingEnabled){\r\n\t\t\tthis.handleHovering();\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\r\n\r\nexport class Images360Loader{\r\n\r\n\tstatic async load(url, viewer, params = {}){\r\n\r\n\t\tif(!params.transform){\r\n\t\t\tparams.transform = {\r\n\t\t\t\tforward: a => a,\r\n\t\t\t};\r\n\t\t}\r\n\t\t\r\n\t\tlet response = await fetch(`${url}/coordinates.txt`);\r\n\t\tlet text = await response.text();\r\n\r\n\t\tlet lines = text.split(/\\r?\\n/);\r\n\t\tlet coordinateLines = lines.slice(1);\r\n\r\n\t\tlet images360 = new Images360(viewer);\r\n\r\n\t\tfor(let line of coordinateLines){\r\n\r\n\t\t\tif(line.trim().length === 0){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet tokens = line.split(/\\t/);\r\n\r\n\t\t\tlet [filename, time, long, lat, alt, course, pitch, roll] = tokens;\r\n\t\t\ttime = parseFloat(time);\r\n\t\t\tlong = parseFloat(long);\r\n\t\t\tlat = parseFloat(lat);\r\n\t\t\talt = parseFloat(alt);\r\n\t\t\tcourse = parseFloat(course);\r\n\t\t\tpitch = parseFloat(pitch);\r\n\t\t\troll = parseFloat(roll);\r\n\r\n\t\t\tfilename = filename.replace(/\"/g, \"\");\r\n\t\t\tlet file = `${url}/${filename}`;\r\n\r\n\t\t\tlet image360 = new Image360(file, time, long, lat, alt, course, pitch, roll);\r\n\r\n\t\t\tlet xy = params.transform.forward([long, lat]);\r\n\t\t\tlet position = [...xy, alt];\r\n\t\t\timage360.position = position;\r\n\r\n\t\t\timages360.images.push(image360);\r\n\t\t}\r\n\r\n\t\tImages360Loader.createSceneNodes(images360, params.transform);\r\n\r\n\t\treturn images360;\r\n\r\n\t}\r\n\r\n\tstatic createSceneNodes(images360, transform){\r\n\r\n\t\tfor(let image360 of images360.images){\r\n\t\t\tlet {longitude, latitude, altitude} = image360;\r\n\t\t\tlet xy = transform.forward([longitude, latitude]);\r\n\r\n\t\t\tlet mesh = new THREE.Mesh(sg, sm);\r\n\t\t\tmesh.position.set(...xy, altitude);\r\n\t\t\tmesh.scale.set(1, 1, 1);\r\n\t\t\tmesh.material.transparent = true;\r\n\t\t\tmesh.material.opacity = 0.75;\r\n\t\t\tmesh.image360 = image360;\r\n\r\n\t\t\t{ // orientation\r\n\t\t\t\tvar {course, pitch, roll} = image360;\r\n\t\t\t\tmesh.rotation.set(\r\n\t\t\t\t\tTHREE.Math.degToRad(+roll + 90),\r\n\t\t\t\t\tTHREE.Math.degToRad(-pitch),\r\n\t\t\t\t\tTHREE.Math.degToRad(-course + 90),\r\n\t\t\t\t\t\"ZYX\"\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\timages360.node.add(mesh);\r\n\r\n\t\t\timage360.mesh = mesh;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\r\n};\r\n\r\n\r\n","// This is a generated file. Do not edit.\nvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\nvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nvar unicode = {\n\tSpace_Separator: Space_Separator,\n\tID_Start: ID_Start,\n\tID_Continue: ID_Continue\n};\n\nvar util = {\n isSpaceSeparator (c) {\n return typeof c === 'string' && unicode.Space_Separator.test(c)\n },\n\n isIdStartChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c === '$') || (c === '_') ||\n unicode.ID_Start.test(c)\n )\n },\n\n isIdContinueChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c >= '0' && c <= '9') ||\n (c === '$') || (c === '_') ||\n (c === '\\u200C') || (c === '\\u200D') ||\n unicode.ID_Continue.test(c)\n )\n },\n\n isDigit (c) {\n return typeof c === 'string' && /[0-9]/.test(c)\n },\n\n isHexDigit (c) {\n return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n },\n};\n\nlet source;\nlet parseState;\nlet stack;\nlet pos;\nlet line;\nlet column;\nlet token;\nlet key;\nlet root;\n\nvar parse = function parse (text, reviver) {\n source = String(text);\n parseState = 'start';\n stack = [];\n pos = 0;\n line = 1;\n column = 0;\n token = undefined;\n key = undefined;\n root = undefined;\n\n do {\n token = lex();\n\n // This code is unreachable.\n // if (!parseStates[parseState]) {\n // throw invalidParseState()\n // }\n\n parseStates[parseState]();\n } while (token.type !== 'eof')\n\n if (typeof reviver === 'function') {\n return internalize({'': root}, '', reviver)\n }\n\n return root\n};\n\nfunction internalize (holder, name, reviver) {\n const value = holder[name];\n if (value != null && typeof value === 'object') {\n for (const key in value) {\n const replacement = internalize(value, key, reviver);\n if (replacement === undefined) {\n delete value[key];\n } else {\n value[key] = replacement;\n }\n }\n }\n\n return reviver.call(holder, name, value)\n}\n\nlet lexState;\nlet buffer;\nlet doubleQuote;\nlet sign;\nlet c;\n\nfunction lex () {\n lexState = 'default';\n buffer = '';\n doubleQuote = false;\n sign = 1;\n\n for (;;) {\n c = peek();\n\n // This code is unreachable.\n // if (!lexStates[lexState]) {\n // throw invalidLexState(lexState)\n // }\n\n const token = lexStates[lexState]();\n if (token) {\n return token\n }\n }\n}\n\nfunction peek () {\n if (source[pos]) {\n return String.fromCodePoint(source.codePointAt(pos))\n }\n}\n\nfunction read () {\n const c = peek();\n\n if (c === '\\n') {\n line++;\n column = 0;\n } else if (c) {\n column += c.length;\n } else {\n column++;\n }\n\n if (c) {\n pos += c.length;\n }\n\n return c\n}\n\nconst lexStates = {\n default () {\n switch (c) {\n case '\\t':\n case '\\v':\n case '\\f':\n case ' ':\n case '\\u00A0':\n case '\\uFEFF':\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n return\n\n case '/':\n read();\n lexState = 'comment';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n if (util.isSpaceSeparator(c)) {\n read();\n return\n }\n\n // This code is unreachable.\n // if (!lexStates[parseState]) {\n // throw invalidLexState(parseState)\n // }\n\n return lexStates[parseState]()\n },\n\n comment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineComment';\n return\n\n case '/':\n read();\n lexState = 'singleLineComment';\n return\n }\n\n throw invalidChar(read())\n },\n\n multiLineComment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineCommentAsterisk';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n },\n\n multiLineCommentAsterisk () {\n switch (c) {\n case '*':\n read();\n return\n\n case '/':\n read();\n lexState = 'default';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n lexState = 'multiLineComment';\n },\n\n singleLineComment () {\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n lexState = 'default';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n read();\n },\n\n value () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n case 'n':\n read();\n literal('ull');\n return newToken('null', null)\n\n case 't':\n read();\n literal('rue');\n return newToken('boolean', true)\n\n case 'f':\n read();\n literal('alse');\n return newToken('boolean', false)\n\n case '-':\n case '+':\n if (read() === '-') {\n sign = -1;\n }\n\n lexState = 'sign';\n return\n\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n buffer = '';\n lexState = 'string';\n return\n }\n\n throw invalidChar(read())\n },\n\n identifierNameStartEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n break\n\n default:\n if (!util.isIdStartChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n identifierName () {\n switch (c) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n buffer += read();\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameEscape';\n return\n }\n\n if (util.isIdContinueChar(c)) {\n buffer += read();\n return\n }\n\n return newToken('identifier', buffer)\n },\n\n identifierNameEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n break\n\n default:\n if (!util.isIdContinueChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n sign () {\n switch (c) {\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', sign * Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n }\n\n throw invalidChar(read())\n },\n\n zero () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n\n case 'x':\n case 'X':\n buffer += read();\n lexState = 'hexadecimal';\n return\n }\n\n return newToken('numeric', sign * 0)\n },\n\n decimalInteger () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalPointLeading () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalPoint () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalFraction () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalExponent () {\n switch (c) {\n case '+':\n case '-':\n buffer += read();\n lexState = 'decimalExponentSign';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentSign () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentInteger () {\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n hexadecimal () {\n if (util.isHexDigit(c)) {\n buffer += read();\n lexState = 'hexadecimalInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n hexadecimalInteger () {\n if (util.isHexDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n string () {\n switch (c) {\n case '\\\\':\n read();\n buffer += escape();\n return\n\n case '\"':\n if (doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case \"'\":\n if (!doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case '\\n':\n case '\\r':\n throw invalidChar(read())\n\n case '\\u2028':\n case '\\u2029':\n separatorChar(c);\n break\n\n case undefined:\n throw invalidChar(read())\n }\n\n buffer += read();\n },\n\n start () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n // This code is unreachable since the default lexState handles eof.\n // case undefined:\n // return newToken('eof')\n }\n\n lexState = 'value';\n },\n\n beforePropertyName () {\n switch (c) {\n case '$':\n case '_':\n buffer = read();\n lexState = 'identifierName';\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameStartEscape';\n return\n\n case '}':\n return newToken('punctuator', read())\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n lexState = 'string';\n return\n }\n\n if (util.isIdStartChar(c)) {\n buffer += read();\n lexState = 'identifierName';\n return\n }\n\n throw invalidChar(read())\n },\n\n afterPropertyName () {\n if (c === ':') {\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforePropertyValue () {\n lexState = 'value';\n },\n\n afterPropertyValue () {\n switch (c) {\n case ',':\n case '}':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforeArrayValue () {\n if (c === ']') {\n return newToken('punctuator', read())\n }\n\n lexState = 'value';\n },\n\n afterArrayValue () {\n switch (c) {\n case ',':\n case ']':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n end () {\n // This code is unreachable since it's handled by the default lexState.\n // if (c === undefined) {\n // read()\n // return newToken('eof')\n // }\n\n throw invalidChar(read())\n },\n};\n\nfunction newToken (type, value) {\n return {\n type,\n value,\n line,\n column,\n }\n}\n\nfunction literal (s) {\n for (const c of s) {\n const p = peek();\n\n if (p !== c) {\n throw invalidChar(read())\n }\n\n read();\n }\n}\n\nfunction escape () {\n const c = peek();\n switch (c) {\n case 'b':\n read();\n return '\\b'\n\n case 'f':\n read();\n return '\\f'\n\n case 'n':\n read();\n return '\\n'\n\n case 'r':\n read();\n return '\\r'\n\n case 't':\n read();\n return '\\t'\n\n case 'v':\n read();\n return '\\v'\n\n case '0':\n read();\n if (util.isDigit(peek())) {\n throw invalidChar(read())\n }\n\n return '\\0'\n\n case 'x':\n read();\n return hexEscape()\n\n case 'u':\n read();\n return unicodeEscape()\n\n case '\\n':\n case '\\u2028':\n case '\\u2029':\n read();\n return ''\n\n case '\\r':\n read();\n if (peek() === '\\n') {\n read();\n }\n\n return ''\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n throw invalidChar(read())\n\n case undefined:\n throw invalidChar(read())\n }\n\n return read()\n}\n\nfunction hexEscape () {\n let buffer = '';\n let c = peek();\n\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nfunction unicodeEscape () {\n let buffer = '';\n let count = 4;\n\n while (count-- > 0) {\n const c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n }\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nconst parseStates = {\n start () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforePropertyName () {\n switch (token.type) {\n case 'identifier':\n case 'string':\n key = token.value;\n parseState = 'afterPropertyName';\n return\n\n case 'punctuator':\n // This code is unreachable since it's handled by the lexState.\n // if (token.value !== '}') {\n // throw invalidToken()\n // }\n\n pop();\n return\n\n case 'eof':\n throw invalidEOF()\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterPropertyName () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator' || token.value !== ':') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n parseState = 'beforePropertyValue';\n },\n\n beforePropertyValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforeArrayValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n if (token.type === 'punctuator' && token.value === ']') {\n pop();\n return\n }\n\n push();\n },\n\n afterPropertyValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforePropertyName';\n return\n\n case '}':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterArrayValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforeArrayValue';\n return\n\n case ']':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n end () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'eof') {\n // throw invalidToken()\n // }\n },\n};\n\nfunction push () {\n let value;\n\n switch (token.type) {\n case 'punctuator':\n switch (token.value) {\n case '{':\n value = {};\n break\n\n case '[':\n value = [];\n break\n }\n\n break\n\n case 'null':\n case 'boolean':\n case 'numeric':\n case 'string':\n value = token.value;\n break\n\n // This code is unreachable.\n // default:\n // throw invalidToken()\n }\n\n if (root === undefined) {\n root = value;\n } else {\n const parent = stack[stack.length - 1];\n if (Array.isArray(parent)) {\n parent.push(value);\n } else {\n parent[key] = value;\n }\n }\n\n if (value !== null && typeof value === 'object') {\n stack.push(value);\n\n if (Array.isArray(value)) {\n parseState = 'beforeArrayValue';\n } else {\n parseState = 'beforePropertyName';\n }\n } else {\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n }\n}\n\nfunction pop () {\n stack.pop();\n\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n}\n\n// This code is unreachable.\n// function invalidParseState () {\n// return new Error(`JSON5: invalid parse state '${parseState}'`)\n// }\n\n// This code is unreachable.\n// function invalidLexState (state) {\n// return new Error(`JSON5: invalid lex state '${state}'`)\n// }\n\nfunction invalidChar (c) {\n if (c === undefined) {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n }\n\n return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n}\n\nfunction invalidEOF () {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n}\n\n// This code is unreachable.\n// function invalidToken () {\n// if (token.type === 'eof') {\n// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n// }\n\n// const c = String.fromCodePoint(token.value.codePointAt(0))\n// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n// }\n\nfunction invalidIdentifier () {\n column -= 5;\n return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)\n}\n\nfunction separatorChar (c) {\n console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`);\n}\n\nfunction formatChar (c) {\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n if (replacements[c]) {\n return replacements[c]\n }\n\n if (c < ' ') {\n const hexString = c.charCodeAt(0).toString(16);\n return '\\\\x' + ('00' + hexString).substring(hexString.length)\n }\n\n return c\n}\n\nfunction syntaxError (message) {\n const err = new SyntaxError(message);\n err.lineNumber = line;\n err.columnNumber = column;\n return err\n}\n\nvar stringify = function stringify (value, replacer, space) {\n const stack = [];\n let indent = '';\n let propertyList;\n let replacerFunc;\n let gap = '';\n let quote;\n\n if (\n replacer != null &&\n typeof replacer === 'object' &&\n !Array.isArray(replacer)\n ) {\n space = replacer.space;\n quote = replacer.quote;\n replacer = replacer.replacer;\n }\n\n if (typeof replacer === 'function') {\n replacerFunc = replacer;\n } else if (Array.isArray(replacer)) {\n propertyList = [];\n for (const v of replacer) {\n let item;\n\n if (typeof v === 'string') {\n item = v;\n } else if (\n typeof v === 'number' ||\n v instanceof String ||\n v instanceof Number\n ) {\n item = String(v);\n }\n\n if (item !== undefined && propertyList.indexOf(item) < 0) {\n propertyList.push(item);\n }\n }\n }\n\n if (space instanceof Number) {\n space = Number(space);\n } else if (space instanceof String) {\n space = String(space);\n }\n\n if (typeof space === 'number') {\n if (space > 0) {\n space = Math.min(10, Math.floor(space));\n gap = ' '.substr(0, space);\n }\n } else if (typeof space === 'string') {\n gap = space.substr(0, 10);\n }\n\n return serializeProperty('', {'': value})\n\n function serializeProperty (key, holder) {\n let value = holder[key];\n if (value != null) {\n if (typeof value.toJSON5 === 'function') {\n value = value.toJSON5(key);\n } else if (typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n }\n\n if (replacerFunc) {\n value = replacerFunc.call(holder, key, value);\n }\n\n if (value instanceof Number) {\n value = Number(value);\n } else if (value instanceof String) {\n value = String(value);\n } else if (value instanceof Boolean) {\n value = value.valueOf();\n }\n\n switch (value) {\n case null: return 'null'\n case true: return 'true'\n case false: return 'false'\n }\n\n if (typeof value === 'string') {\n return quoteString(value, false)\n }\n\n if (typeof value === 'number') {\n return String(value)\n }\n\n if (typeof value === 'object') {\n return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n }\n\n return undefined\n }\n\n function quoteString (value) {\n const quotes = {\n \"'\": 0.1,\n '\"': 0.2,\n };\n\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n let product = '';\n\n for (let i = 0; i < value.length; i++) {\n const c = value[i];\n switch (c) {\n case \"'\":\n case '\"':\n quotes[c]++;\n product += c;\n continue\n\n case '\\0':\n if (util.isDigit(value[i + 1])) {\n product += '\\\\x00';\n continue\n }\n }\n\n if (replacements[c]) {\n product += replacements[c];\n continue\n }\n\n if (c < ' ') {\n let hexString = c.charCodeAt(0).toString(16);\n product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n continue\n }\n\n product += c;\n }\n\n const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b);\n\n product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n return quoteChar + product + quoteChar\n }\n\n function serializeObject (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let keys = propertyList || Object.keys(value);\n let partial = [];\n for (const key of keys) {\n const propertyString = serializeProperty(key, value);\n if (propertyString !== undefined) {\n let member = serializeKey(key) + ':';\n if (gap !== '') {\n member += ' ';\n }\n member += propertyString;\n partial.push(member);\n }\n }\n\n let final;\n if (partial.length === 0) {\n final = '{}';\n } else {\n let properties;\n if (gap === '') {\n properties = partial.join(',');\n final = '{' + properties + '}';\n } else {\n let separator = ',\\n' + indent;\n properties = partial.join(separator);\n final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n\n function serializeKey (key) {\n if (key.length === 0) {\n return quoteString(key, true)\n }\n\n const firstChar = String.fromCodePoint(key.codePointAt(0));\n if (!util.isIdStartChar(firstChar)) {\n return quoteString(key, true)\n }\n\n for (let i = firstChar.length; i < key.length; i++) {\n if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n return quoteString(key, true)\n }\n }\n\n return key\n }\n\n function serializeArray (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let partial = [];\n for (let i = 0; i < value.length; i++) {\n const propertyString = serializeProperty(String(i), value);\n partial.push((propertyString !== undefined) ? propertyString : 'null');\n }\n\n let final;\n if (partial.length === 0) {\n final = '[]';\n } else {\n if (gap === '') {\n let properties = partial.join(',');\n final = '[' + properties + ']';\n } else {\n let separator = ',\\n' + indent;\n let properties = partial.join(separator);\n final = '[\\n' + indent + properties + ',\\n' + stepback + ']';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n};\n\nconst JSON5 = {\n parse,\n stringify,\n};\n\nvar lib = JSON5;\n\nexport default lib;\n","\nimport {GeoJSONExporter} from \"../exporter/GeoJSONExporter.js\"\nimport {DXFExporter} from \"../exporter/DXFExporter.js\"\nimport {Volume, SphereVolume} from \"../utils/Volume.js\"\nimport {PolygonClipVolume} from \"../utils/PolygonClipVolume.js\"\nimport {PropertiesPanel} from \"./PropertyPanels/PropertiesPanel.js\"\nimport {PointCloudTree} from \"../PointCloudTree.js\"\nimport {Profile} from \"../utils/Profile.js\"\nimport {Measure} from \"../utils/Measure.js\"\nimport {Annotation} from \"../Annotation.js\"\nimport {CameraMode, ClipTask, ClipMethod} from \"../defines.js\"\nimport {ScreenBoxSelectTool} from \"../utils/ScreenBoxSelectTool.js\"\nimport {Utils} from \"../utils.js\"\nimport {CameraAnimation} from \"../modules/CameraAnimation/CameraAnimation.js\"\nimport {HierarchicalSlider} from \"./HierarchicalSlider.js\"\nimport {OrientedImage} from \"../modules/OrientedImages/OrientedImages.js\";\nimport {Images360} from \"../modules/Images360/Images360.js\";\n\nimport JSON5 from \"../../libs/json5-2.1.3/json5.mjs\";\n\nexport class Sidebar{\n\n\tconstructor(viewer){\n\t\tthis.viewer = viewer;\n\n\t\tthis.measuringTool = viewer.measuringTool;\n\t\tthis.profileTool = viewer.profileTool;\n\t\tthis.volumeTool = viewer.volumeTool;\n\n\t\tthis.dom = $(\"#sidebar_root\");\n\t}\n\n\tcreateToolIcon(icon, title, callback){\n\t\tlet element = $(`\n\t\t\t\n\t\t`);\n\n\t\telement.click(callback);\n\n\t\treturn element;\n\t}\n\n\tinit(){\n\n\t\tthis.initAccordion();\n\t\tthis.initAppearance();\n\t\tthis.initToolbar();\n\t\tthis.initScene();\n\t\tthis.initNavigation();\n\t\tthis.initFilters();\n\t\tthis.initClippingTool();\n\t\tthis.initSettings();\n\t\t\n\t\t$('#potree_version_number').html(Potree.version.major + \".\" + Potree.version.minor + Potree.version.suffix);\n\t}\n\n\t\t\n\n\tinitToolbar(){\n\n\t\t// ANGLE\n\t\tlet elToolbar = $('#tools');\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/angle.png',\n\t\t\t'[title]tt.angle_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: false,\n\t\t\t\t\tshowAngles: true,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tclosed: true,\n\t\t\t\t\tmaxMarkers: 3,\n\t\t\t\t\tname: 'Angle'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// POINT\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/point.svg',\n\t\t\t'[title]tt.point_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: false,\n\t\t\t\t\tshowAngles: false,\n\t\t\t\t\tshowCoordinates: true,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tclosed: true,\n\t\t\t\t\tmaxMarkers: 1,\n\t\t\t\t\tname: 'Point'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// DISTANCE\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/distance.svg',\n\t\t\t'[title]tt.distance_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: true,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tclosed: false,\n\t\t\t\t\tname: 'Distance'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// HEIGHT\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/height.svg',\n\t\t\t'[title]tt.height_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: false,\n\t\t\t\t\tshowHeight: true,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tclosed: false,\n\t\t\t\t\tmaxMarkers: 2,\n\t\t\t\t\tname: 'Height'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// CIRCLE\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/circle.svg',\n\t\t\t'[title]tt.circle_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: false,\n\t\t\t\t\tshowHeight: false,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tshowCircle: true,\n\t\t\t\t\tshowEdges: false,\n\t\t\t\t\tclosed: false,\n\t\t\t\t\tmaxMarkers: 3,\n\t\t\t\t\tname: 'Circle'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// AZIMUTH\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/azimuth.svg',\n\t\t\t'Azimuth',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: false,\n\t\t\t\t\tshowHeight: false,\n\t\t\t\t\tshowArea: false,\n\t\t\t\t\tshowCircle: false,\n\t\t\t\t\tshowEdges: false,\n\t\t\t\t\tshowAzimuth: true,\n\t\t\t\t\tclosed: false,\n\t\t\t\t\tmaxMarkers: 2,\n\t\t\t\t\tname: 'Azimuth'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// AREA\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/area.svg',\n\t\t\t'[title]tt.area_measurement',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown();\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\n\t\t\t\t\tshowDistances: true,\n\t\t\t\t\tshowArea: true,\n\t\t\t\t\tclosed: true,\n\t\t\t\t\tname: 'Area'});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// VOLUME\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/volume.svg',\n\t\t\t'[title]tt.volume_measurement',\n\t\t\t() => {\n\t\t\t\tlet volume = this.volumeTool.startInsertion(); \n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === volume.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// SPHERE VOLUME\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/sphere_distances.svg',\n\t\t\t'[title]tt.volume_measurement',\n\t\t\t() => { \n\t\t\t\tlet volume = this.volumeTool.startInsertion({type: SphereVolume}); \n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === volume.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// PROFILE\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/profile.svg',\n\t\t\t'[title]tt.height_profile',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown(); ;\n\t\t\t\tlet profile = this.profileTool.startInsertion();\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === profile.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// ANNOTATION\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/annotation.svg',\n\t\t\t'[title]tt.annotation',\n\t\t\t() => {\n\t\t\t\t$('#menu_measurements').next().slideDown(); ;\n\t\t\t\tlet annotation = this.viewer.annotationTool.startInsertion();\n\n\t\t\t\tlet annotationsRoot = $(\"#jstree_scene\").jstree().get_json(\"annotations\");\n\t\t\t\tlet jsonNode = annotationsRoot.children.find(child => child.data.uuid === annotation.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// REMOVE ALL\n\t\telToolbar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/reset_tools.svg',\n\t\t\t'[title]tt.remove_all_measurement',\n\t\t\t() => {\n\t\t\t\tthis.viewer.scene.removeAllMeasurements();\n\t\t\t}\n\t\t));\n\n\n\t\t{ // SHOW / HIDE Measurements\n\t\t\tlet elShow = $(\"#measurement_options_show\");\n\t\t\telShow.selectgroup({title: \"Show/Hide labels\"});\n\n\t\t\telShow.find(\"input\").click( (e) => {\n\t\t\t\tconst show = e.target.value === \"SHOW\";\n\t\t\t\tthis.measuringTool.showLabels = show;\n\t\t\t});\n\n\t\t\tlet currentShow = this.measuringTool.showLabels ? \"SHOW\" : \"HIDE\";\n\t\t\telShow.find(`input[value=${currentShow}]`).trigger(\"click\");\n\t\t}\n\t}\n\n\tinitScene(){\n\n\t\tlet elScene = $(\"#menu_scene\");\n\t\tlet elObjects = elScene.next().find(\"#scene_objects\");\n\t\tlet elProperties = elScene.next().find(\"#scene_object_properties\");\n\t\t\n\n\t\t{\n\t\t\tlet elExport = elScene.next().find(\"#scene_export\");\n\n\t\t\tlet geoJSONIcon = `${Potree.resourcePath}/icons/file_geojson.svg`;\n\t\t\tlet dxfIcon = `${Potree.resourcePath}/icons/file_dxf.svg`;\n\t\t\tlet potreeIcon = `${Potree.resourcePath}/icons/file_potree.svg`;\n\n\t\t\telExport.append(`\n\t\t\t\tExport:
        \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t`);\n\n\t\t\tlet elDownloadJSON = elExport.find(\"img[name=geojson_export_button]\").parent();\n\t\t\telDownloadJSON.click( (event) => {\n\t\t\t\tlet scene = this.viewer.scene;\n\t\t\t\tlet measurements = [...scene.measurements, ...scene.profiles, ...scene.volumes];\n\n\t\t\t\tif(measurements.length > 0){\n\t\t\t\t\tlet geoJson = GeoJSONExporter.toString(measurements);\n\n\t\t\t\t\tlet url = window.URL.createObjectURL(new Blob([geoJson], {type: 'data:application/octet-stream'}));\n\t\t\t\t\telDownloadJSON.attr('href', url);\n\t\t\t\t}else{\n\t\t\t\t\tthis.viewer.postError(\"no measurements to export\");\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet elDownloadDXF = elExport.find(\"img[name=dxf_export_button]\").parent();\n\t\t\telDownloadDXF.click( (event) => {\n\t\t\t\tlet scene = this.viewer.scene;\n\t\t\t\tlet measurements = [...scene.measurements, ...scene.profiles, ...scene.volumes];\n\n\t\t\t\tif(measurements.length > 0){\n\t\t\t\t\tlet dxf = DXFExporter.toString(measurements);\n\n\t\t\t\t\tlet url = window.URL.createObjectURL(new Blob([dxf], {type: 'data:application/octet-stream'}));\n\t\t\t\t\telDownloadDXF.attr('href', url);\n\t\t\t\t}else{\n\t\t\t\t\tthis.viewer.postError(\"no measurements to export\");\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet elDownloadPotree = elExport.find(\"img[name=potree_export_button]\").parent();\n\t\t\telDownloadPotree.click( (event) => {\n\n\t\t\t\tlet data = Potree.saveProject(this.viewer);\n\t\t\t\tlet dataString = JSON5.stringify(data, null, \"\\t\")\n\n\t\t\t\tlet url = window.URL.createObjectURL(new Blob([dataString], {type: 'data:application/octet-stream'}));\n\t\t\t\telDownloadPotree.attr('href', url);\n\t\t\t});\n\t\t}\n\n\t\tlet propertiesPanel = new PropertiesPanel(elProperties, this.viewer);\n\t\tpropertiesPanel.setScene(this.viewer.scene);\n\t\t\n\t\tlocalStorage.removeItem('jstree');\n\n\t\tlet tree = $(`
        `);\n\t\telObjects.append(tree);\n\n\t\ttree.jstree({\n\t\t\t'plugins': [\"checkbox\", \"state\"],\n\t\t\t'core': {\n\t\t\t\t\"dblclick_toggle\": false,\n\t\t\t\t\"state\": {\n\t\t\t\t\t\"checked\" : true\n\t\t\t\t},\n\t\t\t\t'check_callback': true,\n\t\t\t\t\"expand_selected_onload\": true\n\t\t\t},\n\t\t\t\"checkbox\" : {\n\t\t\t\t\"keep_selected_style\": true,\n\t\t\t\t\"three_state\": false,\n\t\t\t\t\"whole_node\": false,\n\t\t\t\t\"tie_selection\": false,\n\t\t\t},\n\t\t});\n\n\t\tlet createNode = (parent, text, icon, object) => {\n\t\t\tlet nodeID = tree.jstree('create_node', parent, { \n\t\t\t\t\t\"text\": text, \n\t\t\t\t\t\"icon\": icon,\n\t\t\t\t\t\"data\": object\n\t\t\t\t}, \n\t\t\t\t\"last\", false, false);\n\t\t\t\n\t\t\tif(object.visible){\n\t\t\t\ttree.jstree('check_node', nodeID);\n\t\t\t}else{\n\t\t\t\ttree.jstree('uncheck_node', nodeID);\n\t\t\t}\n\n\t\t\treturn nodeID;\n\t\t}\n\n\t\tlet pcID = tree.jstree('create_node', \"#\", { \"text\": \"Point Clouds\", \"id\": \"pointclouds\"}, \"last\", false, false);\n\t\tlet measurementID = tree.jstree('create_node', \"#\", { \"text\": \"Measurements\", \"id\": \"measurements\" }, \"last\", false, false);\n\t\tlet annotationsID = tree.jstree('create_node', \"#\", { \"text\": \"Annotations\", \"id\": \"annotations\" }, \"last\", false, false);\n\t\tlet otherID = tree.jstree('create_node', \"#\", { \"text\": \"Other\", \"id\": \"other\" }, \"last\", false, false);\n\t\tlet vectorsID = tree.jstree('create_node', \"#\", { \"text\": \"Vectors\", \"id\": \"vectors\" }, \"last\", false, false);\n\t\tlet imagesID = tree.jstree('create_node', \"#\", { \"text\": \" Images\", \"id\": \"images\" }, \"last\", false, false);\n\n\t\ttree.jstree(\"check_node\", pcID);\n\t\ttree.jstree(\"check_node\", measurementID);\n\t\ttree.jstree(\"check_node\", annotationsID);\n\t\ttree.jstree(\"check_node\", otherID);\n\t\ttree.jstree(\"check_node\", vectorsID);\n\t\ttree.jstree(\"check_node\", imagesID);\n\n\t\ttree.on('create_node.jstree', (e, data) => {\n\t\t\ttree.jstree(\"open_all\");\n\t\t});\n\n\t\ttree.on(\"select_node.jstree\", (e, data) => {\n\t\t\tlet object = data.node.data;\n\t\t\tpropertiesPanel.set(object);\n\n\t\t\tthis.viewer.inputHandler.deselectAll();\n\n\t\t\tif(object instanceof Volume){\n\t\t\t\tthis.viewer.inputHandler.toggleSelection(object);\n\t\t\t}\n\n\t\t\t$(this.viewer.renderer.domElement).focus();\n\t\t});\n\n\t\ttree.on(\"deselect_node.jstree\", (e, data) => {\n\t\t\tpropertiesPanel.set(null);\n\t\t});\n\n\t\ttree.on(\"delete_node.jstree\", (e, data) => {\n\t\t\tpropertiesPanel.set(null);\n\t\t});\n\n\t\ttree.on('dblclick','.jstree-anchor', (e) => {\n\n\t\t\tlet instance = $.jstree.reference(e.target);\n\t\t\tlet node = instance.get_node(e.target);\n\t\t\tlet object = node.data;\n\n\t\t\t// ignore double click on checkbox\n\t\t\tif(e.target.classList.contains(\"jstree-checkbox\")){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(object instanceof PointCloudTree){\n\t\t\t\tlet box = this.viewer.getBoundingBox([object]);\n\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\tnode.boundingBox = box;\n\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\n\t\t\t}else if(object instanceof Measure){\n\t\t\t\tlet points = object.points.map(p => p.position);\n\t\t\t\tlet box = new THREE.Box3().setFromPoints(points);\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\n\t\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\t\tnode.boundingBox = box;\n\t\t\t\t\tthis.viewer.zoomTo(node, 2, 500);\n\t\t\t\t}\n\t\t\t}else if(object instanceof Profile){\n\t\t\t\tlet points = object.points;\n\t\t\t\tlet box = new THREE.Box3().setFromPoints(points);\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\n\t\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\t\tnode.boundingBox = box;\n\t\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\n\t\t\t\t}\n\t\t\t}else if(object instanceof Volume){\n\t\t\t\t\n\t\t\t\tlet box = object.boundingBox.clone().applyMatrix4(object.matrixWorld);\n\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\n\t\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\t\tnode.boundingBox = box;\n\t\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\n\t\t\t\t}\n\t\t\t}else if(object instanceof Annotation){\n\t\t\t\tobject.moveHere(this.viewer.scene.getActiveCamera());\n\t\t\t}else if(object instanceof PolygonClipVolume){\n\t\t\t\tlet dir = object.camera.getWorldDirection(new THREE.Vector3());\n\t\t\t\tlet target;\n\n\t\t\t\tif(object.camera instanceof THREE.OrthographicCamera){\n\t\t\t\t\tdir.multiplyScalar(object.camera.right)\n\t\t\t\t\ttarget = new THREE.Vector3().addVectors(object.camera.position, dir);\n\t\t\t\t\tthis.viewer.setCameraMode(CameraMode.ORTHOGRAPHIC);\n\t\t\t\t}else if(object.camera instanceof THREE.PerspectiveCamera){\n\t\t\t\t\tdir.multiplyScalar(this.viewer.scene.view.radius);\n\t\t\t\t\ttarget = new THREE.Vector3().addVectors(object.camera.position, dir);\n\t\t\t\t\tthis.viewer.setCameraMode(CameraMode.PERSPECTIVE);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.viewer.scene.view.position.copy(object.camera.position);\n\t\t\t\tthis.viewer.scene.view.lookAt(target);\n\t\t\t}else if(object instanceof THREE.SpotLight){\n\t\t\t\tlet distance = (object.distance > 0) ? object.distance / 4 : 5 * 1000;\n\t\t\t\tlet position = object.position;\n\t\t\t\tlet target = new THREE.Vector3().addVectors(\n\t\t\t\t\tposition, \n\t\t\t\t\tobject.getWorldDirection(new THREE.Vector3()).multiplyScalar(distance));\n\n\t\t\t\tthis.viewer.scene.view.position.copy(object.position);\n\t\t\t\tthis.viewer.scene.view.lookAt(target);\n\t\t\t}else if(object instanceof THREE.Object3D){\n\t\t\t\tlet box = new THREE.Box3().setFromObject(object);\n\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\n\t\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\t\tnode.boundingBox = box;\n\t\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\n\t\t\t\t}\n\t\t\t}else if(object instanceof OrientedImage){\n\t\t\t\t// TODO zoom to images\n\n\t\t\t\t// let box = new THREE.Box3().setFromObject(object);\n\n\t\t\t\t// if(box.getSize(new THREE.Vector3()).length() > 0){\n\t\t\t\t// \tlet node = new THREE.Object3D();\n\t\t\t\t// \tnode.boundingBox = box;\n\t\t\t\t// \tthis.viewer.zoomTo(node, 1, 500);\n\t\t\t\t// }\n\t\t\t}else if(object instanceof Images360){\n\t\t\t\t// TODO\n\t\t\t}else if(object instanceof Geopackage){\n\t\t\t\t// TODO\n\t\t\t}\n\t\t});\n\n\t\ttree.on(\"uncheck_node.jstree\", (e, data) => {\n\t\t\tlet object = data.node.data;\n\n\t\t\tif(object){\n\t\t\t\tobject.visible = false;\n\t\t\t}\n\t\t});\n\n\t\ttree.on(\"check_node.jstree\", (e, data) => {\n\t\t\tlet object = data.node.data;\n\n\t\t\tif(object){\n\t\t\t\tobject.visible = true;\n\t\t\t}\n\t\t});\n\n\n\t\tlet onPointCloudAdded = (e) => {\n\t\t\tlet pointcloud = e.pointcloud;\n\t\t\tlet cloudIcon = `${Potree.resourcePath}/icons/cloud.svg`;\n\t\t\tlet node = createNode(pcID, pointcloud.name, cloudIcon, pointcloud);\n\n\t\t\tpointcloud.addEventListener(\"visibility_changed\", () => {\n\t\t\t\tif(pointcloud.visible){\n\t\t\t\t\ttree.jstree('check_node', node);\n\t\t\t\t}else{\n\t\t\t\t\ttree.jstree('uncheck_node', node);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tlet onMeasurementAdded = (e) => {\n\t\t\tlet measurement = e.measurement;\n\t\t\tlet icon = Utils.getMeasurementIcon(measurement);\n\t\t\tcreateNode(measurementID, measurement.name, icon, measurement);\n\t\t};\n\n\t\tlet onVolumeAdded = (e) => {\n\t\t\tlet volume = e.volume;\n\t\t\tlet icon = Utils.getMeasurementIcon(volume);\n\t\t\tlet node = createNode(measurementID, volume.name, icon, volume);\n\n\t\t\tvolume.addEventListener(\"visibility_changed\", () => {\n\t\t\t\tif(volume.visible){\n\t\t\t\t\ttree.jstree('check_node', node);\n\t\t\t\t}else{\n\t\t\t\t\ttree.jstree('uncheck_node', node);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tlet onProfileAdded = (e) => {\n\t\t\tlet profile = e.profile;\n\t\t\tlet icon = Utils.getMeasurementIcon(profile);\n\t\t\tcreateNode(measurementID, profile.name, icon, profile);\n\t\t};\n\n\t\tlet onAnnotationAdded = (e) => {\n\t\t\tlet annotation = e.annotation;\n\n\t\t\tlet annotationIcon = `${Potree.resourcePath}/icons/annotation.svg`;\n\t\t\tlet parentID = this.annotationMapping.get(annotation.parent);\n\t\t\tlet annotationID = createNode(parentID, annotation.title, annotationIcon, annotation);\n\t\t\tthis.annotationMapping.set(annotation, annotationID);\n\n\t\t\tannotation.addEventListener(\"annotation_changed\", (e) => {\n\t\t\t\tlet annotationsRoot = $(\"#jstree_scene\").jstree().get_json(\"annotations\");\n\t\t\t\tlet jsonNode = annotationsRoot.children.find(child => child.data.uuid === annotation.uuid);\n\t\t\t\t\n\t\t\t\t$.jstree.reference(jsonNode.id).rename_node(jsonNode.id, annotation.title);\n\t\t\t});\n\t\t};\n\n\t\tlet onCameraAnimationAdded = (e) => {\n\t\t\tconst animation = e.animation;\n\n\t\t\tconst animationIcon = `${Potree.resourcePath}/icons/camera_animation.svg`;\n\t\t\tcreateNode(otherID, \"animation\", animationIcon, animation);\n\t\t};\n\n\t\tlet onOrientedImagesAdded = (e) => {\n\t\t\tconst images = e.images;\n\n\t\t\tconst imagesIcon = `${Potree.resourcePath}/icons/picture.svg`;\n\t\t\tconst node = createNode(imagesID, \"images\", imagesIcon, images);\n\n\t\t\timages.addEventListener(\"visibility_changed\", () => {\n\t\t\t\tif(images.visible){\n\t\t\t\t\ttree.jstree('check_node', node);\n\t\t\t\t}else{\n\t\t\t\t\ttree.jstree('uncheck_node', node);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tlet onImages360Added = (e) => {\n\t\t\tconst images = e.images;\n\n\t\t\tconst imagesIcon = `${Potree.resourcePath}/icons/picture.svg`;\n\t\t\tconst node = createNode(imagesID, \"360° images\", imagesIcon, images);\n\n\t\t\timages.addEventListener(\"visibility_changed\", () => {\n\t\t\t\tif(images.visible){\n\t\t\t\t\ttree.jstree('check_node', node);\n\t\t\t\t}else{\n\t\t\t\t\ttree.jstree('uncheck_node', node);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tconst onGeopackageAdded = (e) => {\n\t\t\tconst geopackage = e.geopackage;\n\n\t\t\tconst geopackageIcon = `${Potree.resourcePath}/icons/triangle.svg`;\n\t\t\tconst tree = $(`#jstree_scene`);\n\t\t\tconst parentNode = \"vectors\";\n\n\t\t\tfor(const layer of geopackage.node.children){\n\t\t\t\tconst name = layer.name;\n\n\t\t\t\tlet shpPointsID = tree.jstree('create_node', parentNode, { \n\t\t\t\t\t\t\"text\": name, \n\t\t\t\t\t\t\"icon\": geopackageIcon,\n\t\t\t\t\t\t\"object\": layer,\n\t\t\t\t\t\t\"data\": layer,\n\t\t\t\t\t}, \n\t\t\t\t\t\"last\", false, false);\n\t\t\t\ttree.jstree(layer.visible ? \"check_node\" : \"uncheck_node\", shpPointsID);\n\t\t\t}\n\n\t\t};\n\n\t\tthis.viewer.scene.addEventListener(\"pointcloud_added\", onPointCloudAdded);\n\t\tthis.viewer.scene.addEventListener(\"measurement_added\", onMeasurementAdded);\n\t\tthis.viewer.scene.addEventListener(\"profile_added\", onProfileAdded);\n\t\tthis.viewer.scene.addEventListener(\"volume_added\", onVolumeAdded);\n\t\tthis.viewer.scene.addEventListener(\"camera_animation_added\", onCameraAnimationAdded);\n\t\tthis.viewer.scene.addEventListener(\"oriented_images_added\", onOrientedImagesAdded);\n\t\tthis.viewer.scene.addEventListener(\"360_images_added\", onImages360Added);\n\t\tthis.viewer.scene.addEventListener(\"geopackage_added\", onGeopackageAdded);\n\t\tthis.viewer.scene.addEventListener(\"polygon_clip_volume_added\", onVolumeAdded);\n\t\tthis.viewer.scene.annotations.addEventListener(\"annotation_added\", onAnnotationAdded);\n\n\t\tlet onMeasurementRemoved = (e) => {\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.measurement.uuid);\n\t\t\t\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\n\t\t};\n\n\t\tlet onVolumeRemoved = (e) => {\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.volume.uuid);\n\t\t\t\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\n\t\t};\n\n\t\tlet onPolygonClipVolumeRemoved = (e) => {\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.volume.uuid);\n\t\t\t\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\n\t\t};\n\n\t\tlet onProfileRemoved = (e) => {\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.profile.uuid);\n\t\t\t\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\n\t\t};\n\n\t\tthis.viewer.scene.addEventListener(\"measurement_removed\", onMeasurementRemoved);\n\t\tthis.viewer.scene.addEventListener(\"volume_removed\", onVolumeRemoved);\n\t\tthis.viewer.scene.addEventListener(\"polygon_clip_volume_removed\", onPolygonClipVolumeRemoved);\n\t\tthis.viewer.scene.addEventListener(\"profile_removed\", onProfileRemoved);\n\n\t\t{\n\t\t\tlet annotationIcon = `${Potree.resourcePath}/icons/annotation.svg`;\n\t\t\tthis.annotationMapping = new Map(); \n\t\t\tthis.annotationMapping.set(this.viewer.scene.annotations, annotationsID);\n\t\t\tthis.viewer.scene.annotations.traverseDescendants(annotation => {\n\t\t\t\tlet parentID = this.annotationMapping.get(annotation.parent);\n\t\t\t\tlet annotationID = createNode(parentID, annotation.title, annotationIcon, annotation);\n\t\t\t\tthis.annotationMapping.set(annotation, annotationID);\n\t\t\t});\n\t\t}\n\n\t\tconst scene = this.viewer.scene;\n\t\tfor(let pointcloud of scene.pointclouds){\n\t\t\tonPointCloudAdded({pointcloud: pointcloud});\n\t\t}\n\n\t\tfor(let measurement of scene.measurements){\n\t\t\tonMeasurementAdded({measurement: measurement});\n\t\t}\n\n\t\tfor(let volume of [...scene.volumes, ...scene.polygonClipVolumes]){\n\t\t\tonVolumeAdded({volume: volume});\n\t\t}\n\n\t\tfor(let animation of scene.cameraAnimations){\n\t\t\tonCameraAnimationAdded({animation: animation});\n\t\t}\n\n\t\tfor(let images of scene.orientedImages){\n\t\t\tonOrientedImagesAdded({images: images});\n\t\t}\n\n\t\tfor(let images of scene.images360){\n\t\t\tonImages360Added({images: images});\n\t\t}\n\n\t\tfor(const geopackage of scene.geopackages){\n\t\t\tonGeopackageAdded({geopackage: geopackage});\n\t\t}\n\n\t\tfor(let profile of scene.profiles){\n\t\t\tonProfileAdded({profile: profile});\n\t\t}\n\n\t\t{\n\t\t\tcreateNode(otherID, \"Camera\", null, new THREE.Camera());\n\t\t}\n\n\t\tthis.viewer.addEventListener(\"scene_changed\", (e) => {\n\t\t\tpropertiesPanel.setScene(e.scene);\n\n\t\t\te.oldScene.removeEventListener(\"pointcloud_added\", onPointCloudAdded);\n\t\t\te.oldScene.removeEventListener(\"measurement_added\", onMeasurementAdded);\n\t\t\te.oldScene.removeEventListener(\"profile_added\", onProfileAdded);\n\t\t\te.oldScene.removeEventListener(\"volume_added\", onVolumeAdded);\n\t\t\te.oldScene.removeEventListener(\"polygon_clip_volume_added\", onVolumeAdded);\n\t\t\te.oldScene.removeEventListener(\"measurement_removed\", onMeasurementRemoved);\n\n\t\t\te.scene.addEventListener(\"pointcloud_added\", onPointCloudAdded);\n\t\t\te.scene.addEventListener(\"measurement_added\", onMeasurementAdded);\n\t\t\te.scene.addEventListener(\"profile_added\", onProfileAdded);\n\t\t\te.scene.addEventListener(\"volume_added\", onVolumeAdded);\n\t\t\te.scene.addEventListener(\"polygon_clip_volume_added\", onVolumeAdded);\n\t\t\te.scene.addEventListener(\"measurement_removed\", onMeasurementRemoved);\n\t\t});\n\n\t}\n\n\tinitClippingTool(){\n\n\n\t\tthis.viewer.addEventListener(\"cliptask_changed\", (event) => {\n\t\t\tconsole.log(\"TODO\");\n\t\t});\n\n\t\tthis.viewer.addEventListener(\"clipmethod_changed\", (event) => {\n\t\t\tconsole.log(\"TODO\");\n\t\t});\n\n\t\t{\n\t\t\tlet elClipTask = $(\"#cliptask_options\");\n\t\t\telClipTask.selectgroup({title: \"Clip Task\"});\n\n\t\t\telClipTask.find(\"input\").click( (e) => {\n\t\t\t\tthis.viewer.setClipTask(ClipTask[e.target.value]);\n\t\t\t});\n\n\t\t\tlet currentClipTask = Object.keys(ClipTask)\n\t\t\t\t.filter(key => ClipTask[key] === this.viewer.clipTask);\n\t\t\telClipTask.find(`input[value=${currentClipTask}]`).trigger(\"click\");\n\t\t}\n\n\t\t{\n\t\t\tlet elClipMethod = $(\"#clipmethod_options\");\n\t\t\telClipMethod.selectgroup({title: \"Clip Method\"});\n\n\t\t\telClipMethod.find(\"input\").click( (e) => {\n\t\t\t\tthis.viewer.setClipMethod(ClipMethod[e.target.value]);\n\t\t\t});\n\n\t\t\tlet currentClipMethod = Object.keys(ClipMethod)\n\t\t\t\t.filter(key => ClipMethod[key] === this.viewer.clipMethod);\n\t\t\telClipMethod.find(`input[value=${currentClipMethod}]`).trigger(\"click\");\n\t\t}\n\n\t\tlet clippingToolBar = $(\"#clipping_tools\");\n\n\t\t// CLIP VOLUME\n\t\tclippingToolBar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/clip_volume.svg',\n\t\t\t'[title]tt.clip_volume',\n\t\t\t() => {\n\t\t\t\tlet item = this.volumeTool.startInsertion({clip: true}); \n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t// CLIP POLYGON\n\t\tclippingToolBar.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/clip-polygon.svg\",\n\t\t\t\"[title]tt.clip_polygon\",\n\t\t\t() => {\n\t\t\t\tlet item = this.viewer.clippingTool.startInsertion({type: \"polygon\"});\n\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid);\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t}\n\t\t));\n\n\t\t{// SCREEN BOX SELECT\n\t\t\tlet boxSelectTool = new ScreenBoxSelectTool(this.viewer);\n\n\t\t\tclippingToolBar.append(this.createToolIcon(\n\t\t\t\tPotree.resourcePath + \"/icons/clip-screen.svg\",\n\t\t\t\t\"[title]tt.screen_clip_box\",\n\t\t\t\t() => {\n\t\t\t\t\tif(!(this.viewer.scene.getActiveCamera() instanceof THREE.OrthographicCamera)){\n\t\t\t\t\t\tthis.viewer.postMessage(`Switch to Orthographic Camera Mode before using the Screen-Box-Select tool.`, \n\t\t\t\t\t\t\t{duration: 2000});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet item = boxSelectTool.startInsertion();\n\n\t\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\n\t\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid);\n\t\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\n\t\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\n\t\t{ // REMOVE CLIPPING TOOLS\n\t\t\tclippingToolBar.append(this.createToolIcon(\n\t\t\t\tPotree.resourcePath + \"/icons/remove.svg\",\n\t\t\t\t\"[title]tt.remove_all_measurement\",\n\t\t\t\t() => {\n\n\t\t\t\t\tthis.viewer.scene.removeAllClipVolumes();\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\n\t}\n\n\tinitFilters(){\n\t\tthis.initClassificationList();\n\t\tthis.initReturnFilters();\n\t\tthis.initGPSTimeFilters();\n\t\tthis.initPointSourceIDFilters();\n\n\t}\n\n\tinitReturnFilters(){\n\t\tlet elReturnFilterPanel = $('#return_filter_panel');\n\n\t\t{ // RETURN NUMBER\n\t\t\tlet sldReturnNumber = elReturnFilterPanel.find('#sldReturnNumber');\n\t\t\tlet lblReturnNumber = elReturnFilterPanel.find('#lblReturnNumber');\n\n\t\t\tsldReturnNumber.slider({\n\t\t\t\trange: true,\n\t\t\t\tmin: 0, max: 7, step: 1,\n\t\t\t\tvalues: [0, 7],\n\t\t\t\tslide: (event, ui) => {\n\t\t\t\t\tthis.viewer.setFilterReturnNumberRange(ui.values[0], ui.values[1])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet onReturnNumberChanged = (event) => {\n\t\t\t\tlet [from, to] = this.viewer.filterReturnNumberRange;\n\n\t\t\t\tlblReturnNumber[0].innerHTML = `${from} to ${to}`;\n\t\t\t\tsldReturnNumber.slider({values: [from, to]});\n\t\t\t};\n\n\t\t\tthis.viewer.addEventListener('filter_return_number_range_changed', onReturnNumberChanged);\n\n\t\t\tonReturnNumberChanged();\n\t\t}\n\n\t\t{ // NUMBER OF RETURNS\n\t\t\tlet sldNumberOfReturns = elReturnFilterPanel.find('#sldNumberOfReturns');\n\t\t\tlet lblNumberOfReturns = elReturnFilterPanel.find('#lblNumberOfReturns');\n\n\t\t\tsldNumberOfReturns.slider({\n\t\t\t\trange: true,\n\t\t\t\tmin: 0, max: 7, step: 1,\n\t\t\t\tvalues: [0, 7],\n\t\t\t\tslide: (event, ui) => {\n\t\t\t\t\tthis.viewer.setFilterNumberOfReturnsRange(ui.values[0], ui.values[1])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet onNumberOfReturnsChanged = (event) => {\n\t\t\t\tlet [from, to] = this.viewer.filterNumberOfReturnsRange;\n\n\t\t\t\tlblNumberOfReturns[0].innerHTML = `${from} to ${to}`;\n\t\t\t\tsldNumberOfReturns.slider({values: [from, to]});\n\t\t\t};\n\n\t\t\tthis.viewer.addEventListener('filter_number_of_returns_range_changed', onNumberOfReturnsChanged);\n\n\t\t\tonNumberOfReturnsChanged();\n\t\t}\n\t}\n\n\tinitGPSTimeFilters(){\n\n\t\tlet elGPSTimeFilterPanel = $('#gpstime_filter_panel');\n\n\t\t{\n\t\t\tlet slider = new HierarchicalSlider({\n\t\t\t\tlevels: 4,\n\t\t\t\tslide: (event) => {\n\t\t\t\t\tthis.viewer.setFilterGPSTimeRange(...event.values);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tlet initialized = false;\n\n\t\t\tlet initialize = () => {\n\t\t\t\t\n\t\t\t\tlet elRangeContainer = $(\"#gpstime_multilevel_range_container\");\n\t\t\t\telRangeContainer[0].prepend(slider.element);\n\n\t\t\t\tlet extent = this.viewer.getGpsTimeExtent();\n\n\t\t\t\tslider.setRange(extent);\n\t\t\t\tslider.setValues(extent);\n\n\n\t\t\t\tinitialized = true;\n\t\t\t};\n\n\t\t\tthis.viewer.addEventListener(\"update\", (e) => {\n\t\t\t\tlet extent = this.viewer.getGpsTimeExtent();\n\t\t\t\tlet gpsTimeAvailable = extent[0] !== Infinity;\n\n\t\t\t\tif(!initialized && gpsTimeAvailable){\n\t\t\t\t\tinitialize();\n\t\t\t\t}\n\n\t\t\t\tslider.setRange(extent);\n\t\t\t});\n\t\t}\n\n\n\t\t{\n\t\t\t\n\t\t\tconst txtGpsTime = elGPSTimeFilterPanel.find(\"#txtGpsTime\");\n\t\t\tconst btnFindGpsTime = elGPSTimeFilterPanel.find(\"#btnFindGpsTime\");\n\n\t\t\tlet targetTime = null;\n\n\t\t\ttxtGpsTime.on(\"input\", (e) => {\n\t\t\t\tconst str = txtGpsTime.val();\n\n\t\t\t\tif(!isNaN(str)){\n\t\t\t\t\tconst value = parseFloat(str);\n\t\t\t\t\ttargetTime = value;\n\n\t\t\t\t\ttxtGpsTime.css(\"background-color\", \"\")\n\t\t\t\t}else{\n\t\t\t\t\ttargetTime = null;\n\n\t\t\t\t\ttxtGpsTime.css(\"background-color\", \"#ff9999\")\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\tbtnFindGpsTime.click( () => {\n\t\t\t\t\n\t\t\t\tif(targetTime !== null){\n\t\t\t\t\tviewer.moveToGpsTimeVicinity(targetTime);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t}\n\n\tinitPointSourceIDFilters() {\n\t\tlet elPointSourceIDFilterPanel = $('#pointsourceid_filter_panel');\n\n\t\t{\n\t\t\tlet slider = new HierarchicalSlider({\n\t\t\t\tlevels: 4,\n\t\t\t\trange: [0, 65535],\n\t\t\t\tprecision: 1,\n\t\t\t\tslide: (event) => {\n\t\t\t\t\tlet values = event.values;\n\t\t\t\t\tthis.viewer.setFilterPointSourceIDRange(values[0], values[1]);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet initialized = false;\n\n\t\t\tlet initialize = () => {\n\t\t\t\telPointSourceIDFilterPanel[0].prepend(slider.element);\n\n\t\t\t\tinitialized = true;\n\t\t\t};\n\n\t\t\tthis.viewer.addEventListener(\"update\", (e) => {\n\t\t\t\tlet extent = this.viewer.filterPointSourceIDRange;\n\n\t\t\t\tif(!initialized){\n\t\t\t\t\tinitialize();\n\n\t\t\t\t\tslider.setValues(extent);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t});\n\t\t}\n\n\t\t// let lblPointSourceID = elPointSourceIDFilterPanel.find(\"#lblPointSourceID\");\n\t\t// let elPointSourceID = elPointSourceIDFilterPanel.find(\"#spnPointSourceID\");\n\n\t\t// let slider = new ZoomableSlider();\n\t\t// elPointSourceID[0].appendChild(slider.element);\n\t\t// slider.update();\n\n\t\t// slider.change( () => {\n\t\t// \tlet range = slider.chosenRange;\n\t\t// \tthis.viewer.setFilterPointSourceIDRange(range[0], range[1]);\n\t\t// });\n\n\t\t// let onPointSourceIDExtentChanged = (event) => {\n\t\t// \tlet range = this.viewer.filterPointSourceIDExtent;\n\t\t// \tslider.setVisibleRange(range);\n\t\t// };\n\n\t\t// let onPointSourceIDChanged = (event) => {\n\t\t// \tlet range = this.viewer.filterPointSourceIDRange;\n\n\t\t// \tlet precision = 1;\n\t\t// \tlet from = `${Utils.addCommas(range[0].toFixed(precision))}`;\n\t\t// \tlet to = `${Utils.addCommas(range[1].toFixed(precision))}`;\n\t\t// \tlblPointSourceID[0].innerHTML = `${from} to ${to}`;\n\n\t\t// \tslider.setRange(range);\n\t\t// };\n\n\t\t// this.viewer.addEventListener('filter_point_source_id_range_changed', onPointSourceIDChanged);\n\t\t// this.viewer.addEventListener('filter_point_source_id_extent_changed', onPointSourceIDExtentChanged);\n\n\t}\n\n\tinitClassificationList(){\n\t\tlet elClassificationList = $('#classificationList');\n\n\t\tlet addClassificationItem = (code, name) => {\n\t\t\tconst classification = this.viewer.classifications[code];\n\t\t\tconst inputID = 'chkClassification_' + code;\n\t\t\tconst colorPickerID = 'colorPickerClassification_' + code;\n\n\t\t\tconst checked = classification.visible ? \"checked\" : \"\";\n\n\t\t\tlet element = $(`\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t
      • \n\t\t\t`);\n\n\t\t\tconst elInput = element.find('input');\n\t\t\tconst elColorPicker = element.find(`#${colorPickerID}`);\n\n\t\t\telInput.click(event => {\n\t\t\t\tthis.viewer.setClassificationVisibility(code, event.target.checked);\n\t\t\t});\n\n\t\t\tlet defaultColor = classification.color.map(c => c * 255).join(\", \");\n\t\t\tdefaultColor = `rgb(${defaultColor})`;\n\n\n\t\t\telColorPicker.spectrum({\n\t\t\t\t// flat: true,\n\t\t\t\tcolor: defaultColor,\n\t\t\t\tshowInput: true,\n\t\t\t\tpreferredFormat: 'rgb',\n\t\t\t\tcancelText: '',\n\t\t\t\tchooseText: 'Apply',\n\t\t\t\tmove: color => {\n\t\t\t\t\tlet rgb = color.toRgb();\n\t\t\t\t\tconst c = [rgb.r / 255, rgb.g / 255, rgb.b / 255, 1];\n\t\t\t\t\tclassification.color = c;\n\t\t\t\t},\n\t\t\t\tchange: color => {\n\t\t\t\t\tlet rgb = color.toRgb();\n\t\t\t\t\tconst c = [rgb.r / 255, rgb.g / 255, rgb.b / 255, 1];\n\t\t\t\t\tclassification.color = c;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telClassificationList.append(element);\n\t\t};\n\n\t\tconst addToggleAllButton = () => { // toggle all button\n\t\t\tconst element = $(`\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t
      • \n\t\t\t`);\n\n\t\t\tlet elInput = element.find('input');\n\n\t\t\telInput.click(event => {\n\t\t\t\tthis.viewer.toggleAllClassificationsVisibility();\n\t\t\t});\n\n\t\t\telClassificationList.append(element);\n\t\t}\n\n\t\tconst addInvertButton = () => { \n\t\t\tconst element = $(`\n\t\t\t\t
      • \n\t\t\t\t\t\n\t\t\t\t
      • \n\t\t\t`);\n\n\t\t\tlet elInput = element.find('input');\n\n\t\t\telInput.click( () => {\n\t\t\t\tconst classifications = this.viewer.classifications;\n\t\n\t\t\t\tfor(let key of Object.keys(classifications)){\n\t\t\t\t\tlet value = classifications[key];\n\t\t\t\t\tthis.viewer.setClassificationVisibility(key, !value.visible);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\telClassificationList.append(element);\n\t\t};\n\n\t\tconst populate = () => {\n\t\t\taddToggleAllButton();\n\t\t\tfor (let classID in this.viewer.classifications) {\n\t\t\t\taddClassificationItem(classID, this.viewer.classifications[classID].name);\n\t\t\t}\n\t\t\taddInvertButton();\n\t\t};\n\n\t\tpopulate();\n\n\t\tthis.viewer.addEventListener(\"classifications_changed\", () => {\n\t\t\telClassificationList.empty();\n\t\t\tpopulate();\n\t\t});\n\n\t\tthis.viewer.addEventListener(\"classification_visibility_changed\", () => {\n\n\t\t\t{ // set checked state of classification buttons\n\t\t\t\tfor(const classID of Object.keys(this.viewer.classifications)){\n\t\t\t\t\tconst classValue = this.viewer.classifications[classID];\n\n\t\t\t\t\tlet elItem = elClassificationList.find(`#chkClassification_${classID}`);\n\t\t\t\t\telItem.prop(\"checked\", classValue.visible);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t{ // set checked state of toggle button based on state of all other buttons\n\t\t\t\tlet numVisible = 0;\n\t\t\t\tlet numItems = 0;\n\t\t\t\tfor(const key of Object.keys(this.viewer.classifications)){\n\t\t\t\t\tif(this.viewer.classifications[key].visible){\n\t\t\t\t\t\tnumVisible++;\n\t\t\t\t\t}\n\t\t\t\t\tnumItems++;\n\t\t\t\t}\n\t\t\t\tconst allVisible = numVisible === numItems;\n\n\t\t\t\tlet elToggle = elClassificationList.find(\"#toggleClassificationFilters\");\n\t\t\t\telToggle.prop(\"checked\", allVisible);\n\t\t\t}\n\t\t});\n\t}\n\n\tinitAccordion(){\n\t\t$('.accordion > h3').each(function(){\n\t\t\tlet header = $(this);\n\t\t\tlet content = $(this).next();\n\n\t\t\t//header.addClass('accordion-header ui-widget');\n\t\t\t//content.addClass('accordion-content ui-widget');\n\n\t\t\tcontent.hide();\n\n\t\t\theader.click(() => {\n\t\t\t\tcontent.slideToggle();\n\t\t\t});\n\t\t});\n\n\t\tlet languages = [\n\t\t\t[\"EN\", \"en\"],\n\t\t\t[\"FR\", \"fr\"],\n\t\t\t[\"DE\", \"de\"],\n\t\t\t[\"JP\", \"jp\"],\n\t\t\t[\"ES\", \"es\"],\n\t\t\t[\"SE\", \"se\"]\n\t\t];\n\n\t\tlet elLanguages = $('#potree_languages');\n\t\tfor(let i = 0; i < languages.length; i++){\n\t\t\tlet [key, value] = languages[i];\n\t\t\tlet element = $(`${key}`);\n\t\t\telement.click(() => this.viewer.setLanguage(value));\n\n\t\t\tif(i === 0){\n\t\t\t\telement.css(\"margin-left\", \"30px\");\n\t\t\t}\n\t\t\t\n\t\t\telLanguages.append(element);\n\n\t\t\tif(i < languages.length - 1){\n\t\t\t\telLanguages.append($(document.createTextNode(' - ')));\t\n\t\t\t}\n\t\t}\n\n\n\t\t// to close all, call\n\t\t// $(\".accordion > div\").hide()\n\n\t\t// to open the, for example, tool menu, call:\n\t\t// $(\"#menu_tools\").next().show()\n\t}\n\n\tinitAppearance(){\n\n\t\tconst sldPointBudget = this.dom.find('#sldPointBudget');\n\n\t\tsldPointBudget.slider({\n\t\t\tvalue: this.viewer.getPointBudget(),\n\t\t\tmin: 100 * 1000,\n\t\t\tmax: 10 * 1000 * 1000,\n\t\t\tstep: 1000,\n\t\t\tslide: (event, ui) => { this.viewer.setPointBudget(ui.value); }\n\t\t});\n\n\t\tthis.dom.find('#sldFOV').slider({\n\t\t\tvalue: this.viewer.getFOV(),\n\t\t\tmin: 20,\n\t\t\tmax: 100,\n\t\t\tstep: 1,\n\t\t\tslide: (event, ui) => { this.viewer.setFOV(ui.value); }\n\t\t});\n\n\t\t$('#sldEDLRadius').slider({\n\t\t\tvalue: this.viewer.getEDLRadius(),\n\t\t\tmin: 1,\n\t\t\tmax: 4,\n\t\t\tstep: 0.01,\n\t\t\tslide: (event, ui) => { this.viewer.setEDLRadius(ui.value); }\n\t\t});\n\n\t\t$('#sldEDLStrength').slider({\n\t\t\tvalue: this.viewer.getEDLStrength(),\n\t\t\tmin: 0,\n\t\t\tmax: 5,\n\t\t\tstep: 0.01,\n\t\t\tslide: (event, ui) => { this.viewer.setEDLStrength(ui.value); }\n\t\t});\n\n\t\t$('#sldEDLOpacity').slider({\n\t\t\tvalue: this.viewer.getEDLOpacity(),\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t\tstep: 0.01,\n\t\t\tslide: (event, ui) => { this.viewer.setEDLOpacity(ui.value); }\n\t\t});\n\n\t\tthis.viewer.addEventListener('point_budget_changed', (event) => {\n\t\t\t$('#lblPointBudget')[0].innerHTML = Utils.addCommas(this.viewer.getPointBudget());\n\t\t\tsldPointBudget.slider({value: this.viewer.getPointBudget()});\n\t\t});\n\n\t\tthis.viewer.addEventListener('fov_changed', (event) => {\n\t\t\t$('#lblFOV')[0].innerHTML = parseInt(this.viewer.getFOV());\n\t\t\t$('#sldFOV').slider({value: this.viewer.getFOV()});\n\t\t});\n\n\t\tthis.viewer.addEventListener('use_edl_changed', (event) => {\n\t\t\t$('#chkEDLEnabled')[0].checked = this.viewer.getEDLEnabled();\n\t\t});\n\n\t\tthis.viewer.addEventListener('edl_radius_changed', (event) => {\n\t\t\t$('#lblEDLRadius')[0].innerHTML = this.viewer.getEDLRadius().toFixed(1);\n\t\t\t$('#sldEDLRadius').slider({value: this.viewer.getEDLRadius()});\n\t\t});\n\n\t\tthis.viewer.addEventListener('edl_strength_changed', (event) => {\n\t\t\t$('#lblEDLStrength')[0].innerHTML = this.viewer.getEDLStrength().toFixed(1);\n\t\t\t$('#sldEDLStrength').slider({value: this.viewer.getEDLStrength()});\n\t\t});\n\n\t\tthis.viewer.addEventListener('background_changed', (event) => {\n\t\t\t$(\"input[name=background][value='\" + this.viewer.getBackground() + \"']\").prop('checked', true);\n\t\t});\n\n\t\t$('#lblPointBudget')[0].innerHTML = Utils.addCommas(this.viewer.getPointBudget());\n\t\t$('#lblFOV')[0].innerHTML = parseInt(this.viewer.getFOV());\n\t\t$('#lblEDLRadius')[0].innerHTML = this.viewer.getEDLRadius().toFixed(1);\n\t\t$('#lblEDLStrength')[0].innerHTML = this.viewer.getEDLStrength().toFixed(1);\n\t\t$('#chkEDLEnabled')[0].checked = this.viewer.getEDLEnabled();\n\t\t\n\t\t{\n\t\t\tlet elBackground = $(`#background_options`);\n\t\t\telBackground.selectgroup();\n\n\t\t\telBackground.find(\"input\").click( (e) => {\n\t\t\t\tthis.viewer.setBackground(e.target.value);\n\t\t\t});\n\n\t\t\tlet currentBackground = this.viewer.getBackground();\n\t\t\t$(`input[name=background_options][value=${currentBackground}]`).trigger(\"click\");\n\t\t}\n\n\t\t$('#chkEDLEnabled').click( () => {\n\t\t\tthis.viewer.setEDLEnabled($('#chkEDLEnabled').prop(\"checked\"));\n\t\t});\n\t}\n\n\tinitNavigation(){\n\t\tlet elNavigation = $('#navigation');\n\t\tlet sldMoveSpeed = $('#sldMoveSpeed');\n\t\tlet lblMoveSpeed = $('#lblMoveSpeed');\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/earth_controls_1.png',\n\t\t\t'[title]tt.earth_control',\n\t\t\t() => { this.viewer.setControls(this.viewer.earthControls); }\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/fps_controls.svg',\n\t\t\t'[title]tt.flight_control',\n\t\t\t() => {\n\t\t\t\tthis.viewer.setControls(this.viewer.fpControls);\n\t\t\t\tthis.viewer.fpControls.lockElevation = false;\n\t\t\t}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/helicopter_controls.svg',\n\t\t\t'[title]tt.heli_control',\n\t\t\t() => { \n\t\t\t\tthis.viewer.setControls(this.viewer.fpControls);\n\t\t\t\tthis.viewer.fpControls.lockElevation = true;\n\t\t\t}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/orbit_controls.svg',\n\t\t\t'[title]tt.orbit_control',\n\t\t\t() => { this.viewer.setControls(this.viewer.orbitControls); }\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + '/icons/focus.svg',\n\t\t\t'[title]tt.focus_control',\n\t\t\t() => { this.viewer.fitToScreen(); }\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/navigation_cube.svg\",\n\t\t\t\"[title]tt.navigation_cube_control\",\n\t\t\t() => {this.viewer.toggleNavigationCube()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/images/compas.svg\",\n\t\t\t\"[title]tt.compass\",\n\t\t\t() => {\n\t\t\t\tconst visible = !this.viewer.compass.isVisible();\n\t\t\t\tthis.viewer.compass.setVisible(visible);\n\t\t\t}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/camera_animation.svg\",\n\t\t\t\"[title]tt.camera_animation\",\n\t\t\t() => {\n\t\t\t\tconst animation = CameraAnimation.defaultFromView(this.viewer);\n\n\t\t\t\tviewer.scene.addCameraAnimation(animation);\n\t\t\t}\n\t\t));\n\n\n\t\telNavigation.append(\"
        \");\n\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/left.svg\",\n\t\t\t\"[title]tt.left_view_control\",\n\t\t\t() => {this.viewer.setLeftView()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/right.svg\",\n\t\t\t\"[title]tt.right_view_control\",\n\t\t\t() => {this.viewer.setRightView()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/front.svg\",\n\t\t\t\"[title]tt.front_view_control\",\n\t\t\t() => {this.viewer.setFrontView()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/back.svg\",\n\t\t\t\"[title]tt.back_view_control\",\n\t\t\t() => {this.viewer.setBackView()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/top.svg\",\n\t\t\t\"[title]tt.top_view_control\",\n\t\t\t() => {this.viewer.setTopView()}\n\t\t));\n\n\t\telNavigation.append(this.createToolIcon(\n\t\t\tPotree.resourcePath + \"/icons/bottom.svg\",\n\t\t\t\"[title]tt.bottom_view_control\",\n\t\t\t() => {this.viewer.setBottomView()}\n\t\t));\n\n\n\n\n\n\t\tlet elCameraProjection = $(`\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t`);\n\t\telNavigation.append(elCameraProjection);\n\t\telCameraProjection.selectgroup({title: \"Camera Projection\"});\n\t\telCameraProjection.find(\"input\").click( (e) => {\n\t\t\tthis.viewer.setCameraMode(CameraMode[e.target.value]);\n\t\t});\n\t\tlet cameraMode = Object.keys(CameraMode)\n\t\t\t.filter(key => CameraMode[key] === this.viewer.scene.cameraMode);\n\t\telCameraProjection.find(`input[value=${cameraMode}]`).trigger(\"click\");\n\n\t\tlet speedRange = new THREE.Vector2(1, 10 * 1000);\n\n\t\tlet toLinearSpeed = (value) => {\n\t\t\treturn Math.pow(value, 4) * speedRange.y + speedRange.x;\n\t\t};\n\n\t\tlet toExpSpeed = (value) => {\n\t\t\treturn Math.pow((value - speedRange.x) / speedRange.y, 1 / 4);\n\t\t};\n\n\t\tsldMoveSpeed.slider({\n\t\t\tvalue: toExpSpeed(this.viewer.getMoveSpeed()),\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t\tstep: 0.01,\n\t\t\tslide: (event, ui) => { this.viewer.setMoveSpeed(toLinearSpeed(ui.value)); }\n\t\t});\n\n\t\tthis.viewer.addEventListener('move_speed_changed', (event) => {\n\t\t\tlblMoveSpeed.html(this.viewer.getMoveSpeed().toFixed(1));\n\t\t\tsldMoveSpeed.slider({value: toExpSpeed(this.viewer.getMoveSpeed())});\n\t\t});\n\n\t\tlblMoveSpeed.html(this.viewer.getMoveSpeed().toFixed(1));\n\t}\n\n\n\tinitSettings(){\n\n\t\t{\n\t\t\t$('#sldMinNodeSize').slider({\n\t\t\t\tvalue: this.viewer.getMinNodeSize(),\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 1000,\n\t\t\t\tstep: 0.01,\n\t\t\t\tslide: (event, ui) => { this.viewer.setMinNodeSize(ui.value); }\n\t\t\t});\n\n\t\t\tthis.viewer.addEventListener('minnodesize_changed', (event) => {\n\t\t\t\t$('#lblMinNodeSize').html(parseInt(this.viewer.getMinNodeSize()));\n\t\t\t\t$('#sldMinNodeSize').slider({value: this.viewer.getMinNodeSize()});\n\t\t\t});\n\t\t\t$('#lblMinNodeSize').html(parseInt(this.viewer.getMinNodeSize()));\n\t\t}\n\n\t\t{\n\t\t\tlet elSplatQuality = $(\"#splat_quality_options\");\n\t\t\telSplatQuality.selectgroup({title: \"Splat Quality\"});\n\n\t\t\telSplatQuality.find(\"input\").click( (e) => {\n\t\t\t\tif(e.target.value === \"standard\"){\n\t\t\t\t\tthis.viewer.useHQ = false;\n\t\t\t\t}else if(e.target.value === \"hq\"){\n\t\t\t\t\tthis.viewer.useHQ = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet currentQuality = this.viewer.useHQ ? \"hq\" : \"standard\";\n\t\t\telSplatQuality.find(`input[value=${currentQuality}]`).trigger(\"click\");\n\t\t}\n\n\t\t$('#show_bounding_box').click(() => {\n\t\t\tthis.viewer.setShowBoundingBox($('#show_bounding_box').prop(\"checked\"));\n\t\t});\n\n\t\t$('#set_freeze').click(() => {\n\t\t\tthis.viewer.setFreeze($('#set_freeze').prop(\"checked\"));\n\t\t});\n\t}\n\n}\n","\nimport {Annotation} from \"../Annotation.js\";\nimport {Utils} from \"../utils.js\";\nimport {CameraMode} from \"../defines.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\nexport class AnnotationTool extends EventDispatcher{\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.sg = new THREE.SphereGeometry(0.1);\n\t\tthis.sm = new THREE.MeshNormalMaterial();\n\t\tthis.s = new THREE.Mesh(this.sg, this.sm);\n\t}\n\n\tstartInsertion (args = {}) {\n\t\tlet domElement = this.viewer.renderer.domElement;\n\n\t\tlet annotation = new Annotation({\n\t\t\tposition: [589748.270, 231444.540, 753.675],\n\t\t\ttitle: \"Annotation Title\",\n\t\t\tdescription: `Annotation Description`\n\t\t});\n\t\tthis.dispatchEvent({type: 'start_inserting_annotation', annotation: annotation});\n\n\t\tconst annotations = this.viewer.scene.annotations;\n\t\tannotations.add(annotation);\n\n\t\tlet callbacks = {\n\t\t\tcancel: null,\n\t\t\tfinish: null,\n\t\t};\n\n\t\tlet insertionCallback = (e) => {\n\t\t\tif (e.button === THREE.MOUSE.LEFT) {\n\t\t\t\tcallbacks.finish();\n\t\t\t} else if (e.button === THREE.MOUSE.RIGHT) {\n\t\t\t\tcallbacks.cancel();\n\t\t\t}\n\t\t};\n\n\t\tcallbacks.cancel = e => {\n\t\t\tannotations.remove(annotation);\n\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, true);\n\t\t};\n\n\t\tcallbacks.finish = e => {\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, true);\n\t\t};\n\n\t\tdomElement.addEventListener('mouseup', insertionCallback, true);\n\n\t\tlet drag = (e) => {\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\te.drag.end, \n\t\t\t\te.viewer.scene.getActiveCamera(), \n\t\t\t\te.viewer, \n\t\t\t\te.viewer.scene.pointclouds,\n\t\t\t\t{pickClipped: true});\n\n\t\t\tif (I) {\n\t\t\t\tthis.s.position.copy(I.location);\n\n\t\t\t\tannotation.position.copy(I.location);\n\t\t\t}\n\t\t};\n\n\t\tlet drop = (e) => {\n\t\t\tviewer.scene.scene.remove(this.s);\n\t\t\tthis.s.removeEventListener(\"drag\", drag);\n\t\t\tthis.s.removeEventListener(\"drop\", drop);\n\t\t};\n\n\t\tthis.s.addEventListener('drag', drag);\n\t\tthis.s.addEventListener('drop', drop);\n\n\t\tthis.viewer.scene.scene.add(this.s);\n\t\tthis.viewer.inputHandler.startDragging(this.s);\n\n\t\treturn annotation;\n\t}\n\t\n\tupdate(){\n\t\t// let camera = this.viewer.scene.getActiveCamera();\n\t\t// let domElement = this.renderer.domElement;\n\t\t// let measurements = this.viewer.scene.measurements;\n\n\t\t// const renderAreaSize = this.renderer.getSize(new THREE.Vector2());\n\t\t// let clientWidth = renderAreaSize.width;\n\t\t// let clientHeight = renderAreaSize.height;\n\n\t}\n\n\trender(){\n\t\t//this.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\n\t}\n};\n","/**\n * @author mschuetz / http://mschuetz.at\n *\n *\n */\n\n\nimport {KeyCodes} from \"../KeyCodes.js\";\nimport {Utils} from \"../utils.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\nexport class InputHandler extends EventDispatcher {\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\t\tthis.domElement = this.renderer.domElement;\n\t\tthis.enabled = true;\n\t\t\n\t\tthis.scene = null;\n\t\tthis.interactiveScenes = [];\n\t\tthis.interactiveObjects = new Set();\n\t\tthis.inputListeners = [];\n\t\tthis.blacklist = new Set();\n\n\t\tthis.drag = null;\n\t\tthis.mouse = new THREE.Vector2(0, 0);\n\n\t\tthis.selection = [];\n\n\t\tthis.hoveredElements = [];\n\t\tthis.pressedKeys = {};\n\n\t\tthis.wheelDelta = 0;\n\n\t\tthis.speed = 1;\n\n\t\tthis.logMessages = false;\n\n\t\tif (this.domElement.tabIndex === -1) {\n\t\t\tthis.domElement.tabIndex = 2222;\n\t\t}\n\n\t\tthis.domElement.addEventListener('contextmenu', (event) => { event.preventDefault(); }, false);\n\t\tthis.domElement.addEventListener('click', this.onMouseClick.bind(this), false);\n\t\tthis.domElement.addEventListener('mousedown', this.onMouseDown.bind(this), false);\n\t\tthis.domElement.addEventListener('mouseup', this.onMouseUp.bind(this), false);\n\t\tthis.domElement.addEventListener('mousemove', this.onMouseMove.bind(this), false);\n\t\tthis.domElement.addEventListener('mousewheel', this.onMouseWheel.bind(this), false);\n\t\tthis.domElement.addEventListener('DOMMouseScroll', this.onMouseWheel.bind(this), false); // Firefox\n\t\tthis.domElement.addEventListener('dblclick', this.onDoubleClick.bind(this));\n\t\tthis.domElement.addEventListener('keydown', this.onKeyDown.bind(this));\n\t\tthis.domElement.addEventListener('keyup', this.onKeyUp.bind(this));\n\t\tthis.domElement.addEventListener('touchstart', this.onTouchStart.bind(this));\n\t\tthis.domElement.addEventListener('touchend', this.onTouchEnd.bind(this));\n\t\tthis.domElement.addEventListener('touchmove', this.onTouchMove.bind(this));\n\t}\n\n\taddInputListener (listener) {\n\t\tthis.inputListeners.push(listener);\n\t}\n\n\tremoveInputListener (listener) {\n\t\tthis.inputListeners = this.inputListeners.filter(e => e !== listener);\n\t}\n\n\tgetSortedListeners(){\n\t\treturn this.inputListeners.sort( (a, b) => {\n\t\t\tlet ia = (a.importance !== undefined) ? a.importance : 0;\n\t\t\tlet ib = (b.importance !== undefined) ? b.importance : 0;\n\n\t\t\treturn ib - ia;\n\t\t});\n\t}\n\n\tonTouchStart (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onTouchStart');\n\n\t\te.preventDefault();\n\n\t\tif (e.touches.length === 1) {\n\t\t\tlet rect = this.domElement.getBoundingClientRect();\n\t\t\tlet x = e.touches[0].pageX - rect.left;\n\t\t\tlet y = e.touches[0].pageY - rect.top;\n\t\t\tthis.mouse.set(x, y);\n\n\t\t\tthis.startDragging(null);\n\t\t}\n\n\t\t\n\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\tinputListener.dispatchEvent({\n\t\t\t\ttype: e.type,\n\t\t\t\ttouches: e.touches,\n\t\t\t\tchangedTouches: e.changedTouches\n\t\t\t});\n\t\t}\n\t}\n\n\tonTouchEnd (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onTouchEnd');\n\n\t\te.preventDefault();\n\n\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\tinputListener.dispatchEvent({\n\t\t\t\ttype: 'drop',\n\t\t\t\tdrag: this.drag,\n\t\t\t\tviewer: this.viewer\n\t\t\t});\n\t\t}\n\n\t\tthis.drag = null;\n\n\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\tinputListener.dispatchEvent({\n\t\t\t\ttype: e.type,\n\t\t\t\ttouches: e.touches,\n\t\t\t\tchangedTouches: e.changedTouches\n\t\t\t});\n\t\t}\n\t}\n\n\tonTouchMove (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onTouchMove');\n\n\t\te.preventDefault();\n\n\t\tif (e.touches.length === 1) {\n\t\t\tlet rect = this.domElement.getBoundingClientRect();\n\t\t\tlet x = e.touches[0].pageX - rect.left;\n\t\t\tlet y = e.touches[0].pageY - rect.top;\n\t\t\tthis.mouse.set(x, y);\n\n\t\t\tif (this.drag) {\n\t\t\t\tthis.drag.mouse = 1;\n\n\t\t\t\tthis.drag.lastDrag.x = x - this.drag.end.x;\n\t\t\t\tthis.drag.lastDrag.y = y - this.drag.end.y;\n\n\t\t\t\tthis.drag.end.set(x, y);\n\n\t\t\t\tif (this.logMessages) console.log(this.constructor.name + ': drag: ');\n\t\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\t\ttype: 'drag',\n\t\t\t\t\t\tdrag: this.drag,\n\t\t\t\t\t\tviewer: this.viewer\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\tinputListener.dispatchEvent({\n\t\t\t\ttype: e.type,\n\t\t\t\ttouches: e.touches,\n\t\t\t\tchangedTouches: e.changedTouches\n\t\t\t});\n\t\t}\n\n\t\t// DEBUG CODE\n\t\t// let debugTouches = [...e.touches, {\n\t\t//\tpageX: this.domElement.clientWidth / 2,\n\t\t//\tpageY: this.domElement.clientHeight / 2}];\n\t\t// for(let inputListener of this.getSortedListeners()){\n\t\t//\tinputListener.dispatchEvent({\n\t\t//\t\ttype: e.type,\n\t\t//\t\ttouches: debugTouches,\n\t\t//\t\tchangedTouches: e.changedTouches\n\t\t//\t});\n\t\t// }\n\t}\n\n\tonKeyDown (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onKeyDown');\n\n\t\t// DELETE\n\t\tif (e.keyCode === KeyCodes.DELETE && this.selection.length > 0) {\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'delete',\n\t\t\t\tselection: this.selection\n\t\t\t});\n\n\t\t\tthis.deselectAll();\n\t\t}\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'keydown',\n\t\t\tkeyCode: e.keyCode,\n\t\t\tevent: e\n\t\t});\n\n\t\t// for(let l of this.getSortedListeners()){\n\t\t//\tl.dispatchEvent({\n\t\t//\t\ttype: \"keydown\",\n\t\t//\t\tkeyCode: e.keyCode,\n\t\t//\t\tevent: e\n\t\t//\t});\n\t\t// }\n\n\t\tthis.pressedKeys[e.keyCode] = true;\n\n\t\t// e.preventDefault();\n\t}\n\n\tonKeyUp (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onKeyUp');\n\n\t\tdelete this.pressedKeys[e.keyCode];\n\n\t\te.preventDefault();\n\t}\n\n\tonDoubleClick (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onDoubleClick');\n\n\t\tlet consumed = false;\n\t\tfor (let hovered of this.hoveredElements) {\n\t\t\tif (hovered._listeners && hovered._listeners['dblclick']) {\n\t\t\t\thovered.object.dispatchEvent({\n\t\t\t\t\ttype: 'dblclick',\n\t\t\t\t\tmouse: this.mouse,\n\t\t\t\t\tobject: hovered.object\n\t\t\t\t});\n\t\t\t\tconsumed = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!consumed) {\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\ttype: 'dblclick',\n\t\t\t\t\tmouse: this.mouse,\n\t\t\t\t\tobject: null\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\te.preventDefault();\n\t}\n\n\tonMouseClick (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onMouseClick');\n\n\t\te.preventDefault();\n\t}\n\n\tonMouseDown (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onMouseDown');\n\n\t\te.preventDefault();\n\n\t\tlet consumed = false;\n\t\tlet consume = () => { return consumed = true; };\n\t\tif (this.hoveredElements.length === 0) {\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\ttype: 'mousedown',\n\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\tmouse: this.mouse\n\t\t\t\t});\n\t\t\t}\n\t\t}else{\n\t\t\tfor(let hovered of this.hoveredElements){\n\t\t\t\tlet object = hovered.object;\n\t\t\t\tobject.dispatchEvent({\n\t\t\t\t\ttype: 'mousedown',\n\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\tconsume: consume\n\t\t\t\t});\n\n\t\t\t\tif(consumed){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!this.drag) {\n\t\t\tlet target = this.hoveredElements\n\t\t\t\t.find(el => (\n\t\t\t\t\tel.object._listeners &&\n\t\t\t\t\tel.object._listeners['drag'] &&\n\t\t\t\t\tel.object._listeners['drag'].length > 0));\n\n\t\t\tif (target) {\n\t\t\t\tthis.startDragging(target.object, {location: target.point});\n\t\t\t} else {\n\t\t\t\tthis.startDragging(null);\n\t\t\t}\n\t\t}\n\n\t\tif (this.scene) {\n\t\t\tthis.viewStart = this.scene.view.clone();\n\t\t}\n\t}\n\n\tonMouseUp (e) {\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onMouseUp');\n\n\t\te.preventDefault();\n\n\t\tlet noMovement = this.getNormalizedDrag().length() === 0;\n\n\t\t\n\t\tlet consumed = false;\n\t\tlet consume = () => { return consumed = true; };\n\t\tif (this.hoveredElements.length === 0) {\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\ttype: 'mouseup',\n\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\tmouse: this.mouse,\n\t\t\t\t\tconsume: consume\n\t\t\t\t});\n\n\t\t\t\tif(consumed){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tlet hovered = this.hoveredElements\n\t\t\t\t.map(e => e.object)\n\t\t\t\t.find(e => (e._listeners && e._listeners['mouseup']));\n\t\t\tif(hovered){\n\t\t\t\thovered.dispatchEvent({\n\t\t\t\t\ttype: 'mouseup',\n\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\tconsume: consume\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this.drag) {\n\t\t\tif (this.drag.object) {\n\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: drop ${this.drag.object.name}`);\n\t\t\t\tthis.drag.object.dispatchEvent({\n\t\t\t\t\ttype: 'drop',\n\t\t\t\t\tdrag: this.drag,\n\t\t\t\t\tviewer: this.viewer\n\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\t\ttype: 'drop',\n\t\t\t\t\t\tdrag: this.drag,\n\t\t\t\t\t\tviewer: this.viewer\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// check for a click\n\t\t\tlet clicked = this.hoveredElements.map(h => h.object).find(v => v === this.drag.object) !== undefined;\n\t\t\tif(clicked){\n\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: click ${this.drag.object.name}`);\n\t\t\t\tthis.drag.object.dispatchEvent({\n\t\t\t\t\ttype: 'click',\n\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\tconsume: consume,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.drag = null;\n\t\t}\n\n\t\tif(!consumed){\n\t\t\tif (e.button === THREE.MOUSE.LEFT) {\n\t\t\t\tif (noMovement) {\n\t\t\t\t\tlet selectable = this.hoveredElements\n\t\t\t\t\t\t.find(el => el.object._listeners && el.object._listeners['select']);\n\n\t\t\t\t\tif (selectable) {\n\t\t\t\t\t\tselectable = selectable.object;\n\n\t\t\t\t\t\tif (this.isSelected(selectable)) {\n\t\t\t\t\t\t\tthis.selection\n\t\t\t\t\t\t\t\t.filter(e => e !== selectable)\n\t\t\t\t\t\t\t\t.forEach(e => this.toggleSelection(e));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.deselectAll();\n\t\t\t\t\t\t\tthis.toggleSelection(selectable);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.deselectAll();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ((e.button === THREE.MOUSE.RIGHT) && noMovement) {\n\t\t\t\tthis.deselectAll();\n\t\t\t}\n\t\t}\n\t}\n\n\tonMouseMove (e) {\n\t\te.preventDefault();\n\n\t\tlet rect = this.domElement.getBoundingClientRect();\n\t\tlet x = e.clientX - rect.left;\n\t\tlet y = e.clientY - rect.top;\n\t\tthis.mouse.set(x, y);\n\n\t\tlet hoveredElements = this.getHoveredElements();\n\t\tif(hoveredElements.length > 0){\n\t\t\tlet names = hoveredElements.map(h => h.object.name).join(\", \");\n\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: onMouseMove; hovered: '${names}'`);\n\t\t}\n\n\t\tif (this.drag) {\n\t\t\tthis.drag.mouse = e.buttons;\n\n\t\t\tthis.drag.lastDrag.x = x - this.drag.end.x;\n\t\t\tthis.drag.lastDrag.y = y - this.drag.end.y;\n\n\t\t\tthis.drag.end.set(x, y);\n\n\t\t\tif (this.drag.object) {\n\t\t\t\tif (this.logMessages) console.log(this.constructor.name + ': drag: ' + this.drag.object.name);\n\t\t\t\tthis.drag.object.dispatchEvent({\n\t\t\t\t\ttype: 'drag',\n\t\t\t\t\tdrag: this.drag,\n\t\t\t\t\tviewer: this.viewer\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (this.logMessages) console.log(this.constructor.name + ': drag: ');\n\n\t\t\t\tlet dragConsumed = false;\n\t\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\t\ttype: 'drag',\n\t\t\t\t\t\tdrag: this.drag,\n\t\t\t\t\t\tviewer: this.viewer,\n\t\t\t\t\t\tconsume: () => {dragConsumed = true;}\n\t\t\t\t\t});\n\n\t\t\t\t\tif(dragConsumed){\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tlet curr = hoveredElements.map(a => a.object).find(a => true);\n\t\t\tlet prev = this.hoveredElements.map(a => a.object).find(a => true);\n\n\t\t\tif(curr !== prev){\n\t\t\t\tif(curr){\n\t\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: mouseover: ${curr.name}`);\n\t\t\t\t\tcurr.dispatchEvent({\n\t\t\t\t\t\ttype: 'mouseover',\n\t\t\t\t\t\tobject: curr,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(prev){\n\t\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: mouseleave: ${prev.name}`);\n\t\t\t\t\tprev.dispatchEvent({\n\t\t\t\t\t\ttype: 'mouseleave',\n\t\t\t\t\t\tobject: prev,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(hoveredElements.length > 0){\n\t\t\t\tlet object = hoveredElements\n\t\t\t\t\t.map(e => e.object)\n\t\t\t\t\t.find(e => (e._listeners && e._listeners['mousemove']));\n\t\t\t\t\n\t\t\t\tif(object){\n\t\t\t\t\tobject.dispatchEvent({\n\t\t\t\t\t\ttype: 'mousemove',\n\t\t\t\t\t\tobject: object\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\t\n\t\t// for (let inputListener of this.getSortedListeners()) {\n\t\t// \tinputListener.dispatchEvent({\n\t\t// \t\ttype: 'mousemove',\n\t\t// \t\tobject: null\n\t\t// \t});\n\t\t// }\n\t\t\n\n\t\tthis.hoveredElements = hoveredElements;\n\t}\n\t\n\tonMouseWheel(e){\n\t\tif(!this.enabled) return;\n\n\t\tif(this.logMessages) console.log(this.constructor.name + \": onMouseWheel\");\n\t\t\n\t\te.preventDefault();\n\n\t\tlet delta = 0;\n\t\tif (e.wheelDelta !== undefined) { // WebKit / Opera / Explorer 9\n\t\t\tdelta = e.wheelDelta;\n\t\t} else if (e.detail !== undefined) { // Firefox\n\t\t\tdelta = -e.detail;\n\t\t}\n\n\t\tlet ndelta = Math.sign(delta);\n\n\t\t// this.wheelDelta += Math.sign(delta);\n\n\t\tif (this.hoveredElement) {\n\t\t\tthis.hoveredElement.object.dispatchEvent({\n\t\t\t\ttype: 'mousewheel',\n\t\t\t\tdelta: ndelta,\n\t\t\t\tobject: this.hoveredElement.object\n\t\t\t});\n\t\t} else {\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\n\t\t\t\tinputListener.dispatchEvent({\n\t\t\t\t\ttype: 'mousewheel',\n\t\t\t\t\tdelta: ndelta,\n\t\t\t\t\tobject: null\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tstartDragging (object, args = null) {\n\n\t\tlet name = object ? object.name : \"no name\";\n\t\tif (this.logMessages) console.log(`${this.constructor.name}: startDragging: '${name}'`);\n\n\t\tthis.drag = {\n\t\t\tstart: this.mouse.clone(),\n\t\t\tend: this.mouse.clone(),\n\t\t\tlastDrag: new THREE.Vector2(0, 0),\n\t\t\tstartView: this.scene.view.clone(),\n\t\t\tobject: object\n\t\t};\n\n\t\tif (args) {\n\t\t\tfor (let key of Object.keys(args)) {\n\t\t\t\tthis.drag[key] = args[key];\n\t\t\t}\n\t\t}\n\t}\n\n\tgetMousePointCloudIntersection (mouse) {\n\t\treturn Utils.getMousePointCloudIntersection(\n\t\t\tthis.mouse, \n\t\t\tthis.scene.getActiveCamera(), \n\t\t\tthis.viewer, \n\t\t\tthis.scene.pointclouds);\n\t}\n\n\ttoggleSelection (object) {\n\t\tlet oldSelection = this.selection;\n\n\t\tlet index = this.selection.indexOf(object);\n\n\t\tif (index === -1) {\n\t\t\tthis.selection.push(object);\n\t\t\tobject.dispatchEvent({\n\t\t\t\ttype: 'select'\n\t\t\t});\n\t\t} else {\n\t\t\tthis.selection.splice(index, 1);\n\t\t\tobject.dispatchEvent({\n\t\t\t\ttype: 'deselect'\n\t\t\t});\n\t\t}\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'selection_changed',\n\t\t\toldSelection: oldSelection,\n\t\t\tselection: this.selection\n\t\t});\n\t}\n\n\tdeselect(object){\n\n\t\tlet oldSelection = this.selection;\n\n\t\tlet index = this.selection.indexOf(object);\n\n\t\tif(index >= 0){\n\t\t\tthis.selection.splice(index, 1);\n\t\t\tobject.dispatchEvent({\n\t\t\t\ttype: 'deselect'\n\t\t\t});\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'selection_changed',\n\t\t\t\toldSelection: oldSelection,\n\t\t\t\tselection: this.selection\n\t\t\t});\n\t\t}\n\t}\n\n\tdeselectAll () {\n\t\tfor (let object of this.selection) {\n\t\t\tobject.dispatchEvent({\n\t\t\t\ttype: 'deselect'\n\t\t\t});\n\t\t}\n\n\t\tlet oldSelection = this.selection;\n\n\t\tif (this.selection.length > 0) {\n\t\t\tthis.selection = [];\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: 'selection_changed',\n\t\t\t\toldSelection: oldSelection,\n\t\t\t\tselection: this.selection\n\t\t\t});\n\t\t}\n\t}\n\n\tisSelected (object) {\n\t\tlet index = this.selection.indexOf(object);\n\n\t\treturn index !== -1;\n\t}\n\n\tregisterInteractiveObject(object){\n\t\tthis.interactiveObjects.add(object);\n\t}\n\n\tremoveInteractiveObject(object){\n\t\tthis.interactiveObjects.delete(object);\n\t}\n\n\tregisterInteractiveScene (scene) {\n\t\tlet index = this.interactiveScenes.indexOf(scene);\n\t\tif (index === -1) {\n\t\t\tthis.interactiveScenes.push(scene);\n\t\t}\n\t}\n\n\tunregisterInteractiveScene (scene) {\n\t\tlet index = this.interactiveScenes.indexOf(scene);\n\t\tif (index > -1) {\n\t\t\tthis.interactiveScenes.splice(index, 1);\n\t\t}\n\t}\n\n\tgetHoveredElement () {\n\t\tlet hoveredElements = this.getHoveredElements();\n\t\tif (hoveredElements.length > 0) {\n\t\t\treturn hoveredElements[0];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetHoveredElements () {\n\t\tlet scenes = this.interactiveScenes.concat(this.scene.scene);\n\n\t\tlet interactableListeners = ['mouseup', 'mousemove', 'mouseover', 'mouseleave', 'drag', 'drop', 'click', 'select', 'deselect'];\n\t\tlet interactables = [];\n\t\tfor (let scene of scenes) {\n\t\t\tscene.traverseVisible(node => {\n\t\t\t\tif (node._listeners && node.visible && !this.blacklist.has(node)) {\n\t\t\t\t\tlet hasInteractableListener = interactableListeners.filter((e) => {\n\t\t\t\t\t\treturn node._listeners[e] !== undefined;\n\t\t\t\t\t}).length > 0;\n\n\t\t\t\t\tif (hasInteractableListener) {\n\t\t\t\t\t\tinteractables.push(node);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tlet camera = this.scene.getActiveCamera();\n\t\tlet ray = Utils.mouseToRay(this.mouse, camera, this.domElement.clientWidth, this.domElement.clientHeight);\n\t\t\n\t\tlet raycaster = new THREE.Raycaster();\n\t\traycaster.ray.set(ray.origin, ray.direction);\n\t\traycaster.linePrecision = 0.2;\n\n\t\tlet intersections = raycaster.intersectObjects(interactables.filter(o => o.visible), false);\n\n\t\treturn intersections;\n\n\t\t// if(intersections.length > 0){\n\t\t//\treturn intersections[0];\n\t\t// }else{\n\t\t//\treturn null;\n\t\t// }\n\t}\n\n\tsetScene (scene) {\n\t\tthis.deselectAll();\n\n\t\tthis.scene = scene;\n\t}\n\n\tupdate (delta) {\n\n\t}\n\n\tgetNormalizedDrag () {\n\t\tif (!this.drag) {\n\t\t\treturn new THREE.Vector2(0, 0);\n\t\t}\n\n\t\tlet diff = new THREE.Vector2().subVectors(this.drag.end, this.drag.start);\n\n\t\tdiff.x = diff.x / this.domElement.clientWidth;\n\t\tdiff.y = diff.y / this.domElement.clientHeight;\n\n\t\treturn diff;\n\t}\n\n\tgetNormalizedLastDrag () {\n\t\tif (!this.drag) {\n\t\t\treturn new THREE.Vector2(0, 0);\n\t\t}\n\n\t\tlet lastDrag = this.drag.lastDrag.clone();\n\n\t\tlastDrag.x = lastDrag.x / this.domElement.clientWidth;\n\t\tlastDrag.y = lastDrag.y / this.domElement.clientHeight;\n\n\t\treturn lastDrag;\n\t}\n}\n","\nexport class NavigationCube extends THREE.Object3D {\n\n\tconstructor(viewer){\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\n\t\tlet createPlaneMaterial = (img) => {\n\t\t\tlet material = new THREE.MeshBasicMaterial( {\n\t\t\t\tdepthTest: true, \n\t\t\t\tdepthWrite: true,\n\t\t\t\tside: THREE.DoubleSide\n\t\t\t});\n\t\t\tnew THREE.TextureLoader().load(\n\t\t\t\texports.resourcePath + '/textures/navigation/' + img,\n\t\t\t\tfunction(texture) {\n\t\t\t\t\ttexture.anisotropy = viewer.renderer.capabilities.getMaxAnisotropy();\n\t\t\t\t\tmaterial.map = texture;\n\t\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t});\n\t\t\treturn material;\n\t\t};\n\n\t\tlet planeGeometry = new THREE.PlaneGeometry(1, 1);\n\n\t\tthis.front = new THREE.Mesh(planeGeometry, createPlaneMaterial('F.png'));\n\t\tthis.front.position.y = -0.5;\n\t\tthis.front.rotation.x = Math.PI / 2.0;\n\t\tthis.front.updateMatrixWorld();\n\t\tthis.front.name = \"F\";\n\t\tthis.add(this.front);\n\n\t\tthis.back = new THREE.Mesh(planeGeometry, createPlaneMaterial('B.png'));\n\t\tthis.back.position.y = 0.5;\n\t\tthis.back.rotation.x = Math.PI / 2.0;\n\t\tthis.back.updateMatrixWorld();\n\t\tthis.back.name = \"B\";\n\t\tthis.add(this.back);\n\n\t\tthis.left = new THREE.Mesh(planeGeometry, createPlaneMaterial('L.png'));\n\t\tthis.left.position.x = -0.5;\n\t\tthis.left.rotation.y = Math.PI / 2.0;\n\t\tthis.left.updateMatrixWorld();\n\t\tthis.left.name = \"L\";\n\t\tthis.add(this.left);\n\n\t\tthis.right = new THREE.Mesh(planeGeometry, createPlaneMaterial('R.png'));\n\t\tthis.right.position.x = 0.5;\n\t\tthis.right.rotation.y = Math.PI / 2.0;\n\t\tthis.right.updateMatrixWorld();\n\t\tthis.right.name = \"R\";\n\t\tthis.add(this.right);\n\n\t\tthis.bottom = new THREE.Mesh(planeGeometry, createPlaneMaterial('D.png'));\n\t\tthis.bottom.position.z = -0.5;\n\t\tthis.bottom.updateMatrixWorld();\n\t\tthis.bottom.name = \"D\";\n\t\tthis.add(this.bottom);\n\n\t\tthis.top = new THREE.Mesh(planeGeometry, createPlaneMaterial('U.png'));\n\t\tthis.top.position.z = 0.5;\n\t\tthis.top.updateMatrixWorld();\n\t\tthis.top.name = \"U\";\n\t\tthis.add(this.top);\n\n\t\tthis.width = 150; // in px\n\n\t\tthis.camera = new THREE.OrthographicCamera(-1, 1, 1, -1, -1, 1);\n\t\tthis.camera.position.copy(new THREE.Vector3(0, 0, 0));\n\t\tthis.camera.lookAt(new THREE.Vector3(0, 1, 0));\n\t\tthis.camera.updateMatrixWorld();\n\t\tthis.camera.rotation.order = \"ZXY\";\n\n\t\tlet onMouseDown = (event) => {\n\t\t\tif (!this.visible) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tthis.pickedFace = null;\n\t\t\tlet mouse = new THREE.Vector2();\n\t\t\tmouse.x = event.clientX - (window.innerWidth - this.width);\n\t\t\tmouse.y = event.clientY;\n\n\t\t\tif(mouse.x < 0 || mouse.y > this.width) return;\n\n\t\t\tmouse.x = (mouse.x / this.width) * 2 - 1;\n\t\t\tmouse.y = -(mouse.y / this.width) * 2 + 1;\n\n\t\t\tlet raycaster = new THREE.Raycaster();\n\t\t\traycaster.setFromCamera(mouse, this.camera);\n\t\t\traycaster.ray.origin.sub(this.camera.getWorldDirection(new THREE.Vector3()));\n\n\t\t\tlet intersects = raycaster.intersectObjects(this.children);\n\n\t\t\tlet minDistance = 1000;\n\t\t\tfor (let i = 0; i < intersects.length; i++) {\n\t\t\t\tif(intersects[i].distance < minDistance) {\n\t\t\t\t\tthis.pickedFace = intersects[i].object.name;\n\t\t\t\t\tminDistance = intersects[i].distance;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(this.pickedFace) {\n\t\t\t\tthis.viewer.setView(this.pickedFace);\n\t\t\t}\n\t\t};\n\n\t\tthis.viewer.renderer.domElement.addEventListener('mousedown', onMouseDown, false);\n\t}\n\n\tupdate(rotation) {\n\t\tthis.camera.rotation.copy(rotation);\n\t\tthis.camera.updateMatrixWorld();\n\t}\n\n}\n","/**\n * @author mschuetz / http://mschuetz.at\n *\n * adapted from THREE.OrbitControls by\n *\n * @author qiao / https://github.com/qiao\n * @author mrdoob / http://mrdoob.com\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author erich666 / http://erichaines.com\n *\n *\n *\n */\n\n\nimport {MOUSE} from \"../defines.js\";\nimport {Utils} from \"../utils.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\n \nexport class OrbitControls extends EventDispatcher{\n\t\n\tconstructor(viewer){\n\t\tsuper();\n\t\t\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.scene = null;\n\t\tthis.sceneControls = new THREE.Scene();\n\n\t\tthis.rotationSpeed = 5;\n\n\t\tthis.fadeFactor = 20;\n\t\tthis.yawDelta = 0;\n\t\tthis.pitchDelta = 0;\n\t\tthis.panDelta = new THREE.Vector2(0, 0);\n\t\tthis.radiusDelta = 0;\n\n\t\tthis.doubleClockZoomEnabled = true;\n\n\t\tthis.tweens = [];\n\n\t\tlet drag = (e) => {\n\t\t\tif (e.drag.object !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.drag.startHandled === undefined) {\n\t\t\t\te.drag.startHandled = true;\n\n\t\t\t\tthis.dispatchEvent({type: 'start'});\n\t\t\t}\n\n\t\t\tlet ndrag = {\n\t\t\t\tx: e.drag.lastDrag.x / this.renderer.domElement.clientWidth,\n\t\t\t\ty: e.drag.lastDrag.y / this.renderer.domElement.clientHeight\n\t\t\t};\n\n\t\t\tif (e.drag.mouse === MOUSE.LEFT) {\n\t\t\t\tthis.yawDelta += ndrag.x * this.rotationSpeed;\n\t\t\t\tthis.pitchDelta += ndrag.y * this.rotationSpeed;\n\n\t\t\t\tthis.stopTweens();\n\t\t\t} else if (e.drag.mouse === MOUSE.RIGHT) {\n\t\t\t\tthis.panDelta.x += ndrag.x;\n\t\t\t\tthis.panDelta.y += ndrag.y;\n\n\t\t\t\tthis.stopTweens();\n\t\t\t}\n\t\t};\n\n\t\tlet drop = e => {\n\t\t\tthis.dispatchEvent({type: 'end'});\n\t\t};\n\n\t\tlet scroll = (e) => {\n\t\t\tlet resolvedRadius = this.scene.view.radius + this.radiusDelta;\n\n\t\t\tthis.radiusDelta += -e.delta * resolvedRadius * 0.1;\n\n\t\t\tthis.stopTweens();\n\t\t};\n\n\t\tlet dblclick = (e) => {\n\t\t\tif(this.doubleClockZoomEnabled){\n\t\t\t\tthis.zoomToLocation(e.mouse);\n\t\t\t}\n\t\t};\n\n\t\tlet previousTouch = null;\n\t\tlet touchStart = e => {\n\t\t\tpreviousTouch = e;\n\t\t};\n\n\t\tlet touchEnd = e => {\n\t\t\tpreviousTouch = e;\n\t\t};\n\n\t\tlet touchMove = e => {\n\t\t\tif (e.touches.length === 2 && previousTouch.touches.length === 2){\n\t\t\t\tlet prev = previousTouch;\n\t\t\t\tlet curr = e;\n\n\t\t\t\tlet prevDX = prev.touches[0].pageX - prev.touches[1].pageX;\n\t\t\t\tlet prevDY = prev.touches[0].pageY - prev.touches[1].pageY;\n\t\t\t\tlet prevDist = Math.sqrt(prevDX * prevDX + prevDY * prevDY);\n\n\t\t\t\tlet currDX = curr.touches[0].pageX - curr.touches[1].pageX;\n\t\t\t\tlet currDY = curr.touches[0].pageY - curr.touches[1].pageY;\n\t\t\t\tlet currDist = Math.sqrt(currDX * currDX + currDY * currDY);\n\n\t\t\t\tlet delta = currDist / prevDist;\n\t\t\t\tlet resolvedRadius = this.scene.view.radius + this.radiusDelta;\n\t\t\t\tlet newRadius = resolvedRadius / delta;\n\t\t\t\tthis.radiusDelta = newRadius - resolvedRadius;\n\n\t\t\t\tthis.stopTweens();\n\t\t\t}else if(e.touches.length === 3 && previousTouch.touches.length === 3){\n\t\t\t\tlet prev = previousTouch;\n\t\t\t\tlet curr = e;\n\n\t\t\t\tlet prevMeanX = (prev.touches[0].pageX + prev.touches[1].pageX + prev.touches[2].pageX) / 3;\n\t\t\t\tlet prevMeanY = (prev.touches[0].pageY + prev.touches[1].pageY + prev.touches[2].pageY) / 3;\n\n\t\t\t\tlet currMeanX = (curr.touches[0].pageX + curr.touches[1].pageX + curr.touches[2].pageX) / 3;\n\t\t\t\tlet currMeanY = (curr.touches[0].pageY + curr.touches[1].pageY + curr.touches[2].pageY) / 3;\n\n\t\t\t\tlet delta = {\n\t\t\t\t\tx: (currMeanX - prevMeanX) / this.renderer.domElement.clientWidth,\n\t\t\t\t\ty: (currMeanY - prevMeanY) / this.renderer.domElement.clientHeight\n\t\t\t\t};\n\n\t\t\t\tthis.panDelta.x += delta.x;\n\t\t\t\tthis.panDelta.y += delta.y;\n\n\t\t\t\tthis.stopTweens();\n\t\t\t}\n\n\t\t\tpreviousTouch = e;\n\t\t};\n\n\t\tthis.addEventListener('touchstart', touchStart);\n\t\tthis.addEventListener('touchend', touchEnd);\n\t\tthis.addEventListener('touchmove', touchMove);\n\t\tthis.addEventListener('drag', drag);\n\t\tthis.addEventListener('drop', drop);\n\t\tthis.addEventListener('mousewheel', scroll);\n\t\tthis.addEventListener('dblclick', dblclick);\n\t}\n\n\tsetScene (scene) {\n\t\tthis.scene = scene;\n\t}\n\n\tstop(){\n\t\tthis.yawDelta = 0;\n\t\tthis.pitchDelta = 0;\n\t\tthis.radiusDelta = 0;\n\t\tthis.panDelta.set(0, 0);\n\t}\n\t\n\tzoomToLocation(mouse){\n\t\tlet camera = this.scene.getActiveCamera();\n\t\t\n\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\tmouse,\n\t\t\tcamera,\n\t\t\tthis.viewer,\n\t\t\tthis.scene.pointclouds,\n\t\t\t{pickClipped: true});\n\n\t\tif (I === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet targetRadius = 0;\n\t\t{\n\t\t\tlet minimumJumpDistance = 0.2;\n\n\t\t\tlet domElement = this.renderer.domElement;\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\n\t\t\tlet nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray);\n\t\t\tlet lastNode = nodes[nodes.length - 1];\n\t\t\tlet radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius;\n\t\t\ttargetRadius = Math.min(this.scene.view.radius, radius);\n\t\t\ttargetRadius = Math.max(minimumJumpDistance, targetRadius);\n\t\t}\n\n\t\tlet d = this.scene.view.direction.multiplyScalar(-1);\n\t\tlet cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius));\n\t\t// TODO Unused: let controlsTargetPosition = I.location;\n\n\t\tlet animationDuration = 600;\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\t{ // animate\n\t\t\tlet value = {x: 0};\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\tthis.tweens.push(tween);\n\n\t\t\tlet startPos = this.scene.view.position.clone();\n\t\t\tlet targetPos = cameraTargetPosition.clone();\n\t\t\tlet startRadius = this.scene.view.radius;\n\t\t\tlet targetRadius = cameraTargetPosition.distanceTo(I.location);\n\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tlet t = value.x;\n\t\t\t\tthis.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x;\n\t\t\t\tthis.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y;\n\t\t\t\tthis.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z;\n\n\t\t\t\tthis.scene.view.radius = (1 - t) * startRadius + t * targetRadius;\n\t\t\t\tthis.viewer.setMoveSpeed(this.scene.view.radius / 2.5);\n\t\t\t});\n\n\t\t\ttween.onComplete(() => {\n\t\t\t\tthis.tweens = this.tweens.filter(e => e !== tween);\n\t\t\t});\n\n\t\t\ttween.start();\n\t\t}\n\t}\n\n\tstopTweens () {\n\t\tthis.tweens.forEach(e => e.stop());\n\t\tthis.tweens = [];\n\t}\n\n\tupdate (delta) {\n\t\tlet view = this.scene.view;\n\n\t\t{ // apply rotation\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\n\n\t\t\tlet yaw = view.yaw;\n\t\t\tlet pitch = view.pitch;\n\t\t\tlet pivot = view.getPivot();\n\n\t\t\tyaw -= progression * this.yawDelta;\n\t\t\tpitch -= progression * this.pitchDelta;\n\n\t\t\tview.yaw = yaw;\n\t\t\tview.pitch = pitch;\n\n\t\t\tlet V = this.scene.view.direction.multiplyScalar(-view.radius);\n\t\t\tlet position = new THREE.Vector3().addVectors(pivot, V);\n\n\t\t\tview.position.copy(position);\n\t\t}\n\n\t\t{ // apply pan\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\n\t\t\tlet panDistance = progression * view.radius * 3;\n\n\t\t\tlet px = -this.panDelta.x * panDistance;\n\t\t\tlet py = this.panDelta.y * panDistance;\n\n\t\t\tview.pan(px, py);\n\t\t}\n\n\t\t{ // apply zoom\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\n\n\t\t\t// let radius = view.radius + progression * this.radiusDelta * view.radius * 0.1;\n\t\t\tlet radius = view.radius + progression * this.radiusDelta;\n\n\t\t\tlet V = view.direction.multiplyScalar(-radius);\n\t\t\tlet position = new THREE.Vector3().addVectors(view.getPivot(), V);\n\t\t\tview.radius = radius;\n\n\t\t\tview.position.copy(position);\n\t\t}\n\n\t\t{\n\t\t\tlet speed = view.radius / 2.5;\n\t\t\tthis.viewer.setMoveSpeed(speed);\n\t\t}\n\n\t\t{ // decelerate over time\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\n\t\t\tlet attenuation = Math.max(0, 1 - this.fadeFactor * delta);\n\n\t\t\tthis.yawDelta *= attenuation;\n\t\t\tthis.pitchDelta *= attenuation;\n\t\t\tthis.panDelta.multiplyScalar(attenuation);\n\t\t\t// this.radiusDelta *= attenuation;\n\t\t\tthis.radiusDelta -= progression * this.radiusDelta;\n\t\t}\n\t}\n};\n","/**\n * @author mschuetz / http://mschuetz.at\n *\n * adapted from THREE.OrbitControls by\n *\n * @author qiao / https://github.com/qiao\n * @author mrdoob / http://mrdoob.com\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author erich666 / http://erichaines.com\n *\n *\n *\n */\n\n\nimport {MOUSE} from \"../defines.js\";\nimport {Utils} from \"../utils.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\n\nexport class FirstPersonControls extends EventDispatcher {\n\tconstructor (viewer) {\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.scene = null;\n\t\tthis.sceneControls = new THREE.Scene();\n\n\t\tthis.rotationSpeed = 200;\n\t\tthis.moveSpeed = 10;\n\t\tthis.lockElevation = false;\n\n\t\tthis.keys = {\n\t\t\tFORWARD: ['W'.charCodeAt(0), 38],\n\t\t\tBACKWARD: ['S'.charCodeAt(0), 40],\n\t\t\tLEFT: ['A'.charCodeAt(0), 37],\n\t\t\tRIGHT: ['D'.charCodeAt(0), 39],\n\t\t\tUP: ['R'.charCodeAt(0), 33],\n\t\t\tDOWN: ['F'.charCodeAt(0), 34]\n\t\t};\n\n\t\tthis.fadeFactor = 50;\n\t\tthis.yawDelta = 0;\n\t\tthis.pitchDelta = 0;\n\t\tthis.translationDelta = new THREE.Vector3(0, 0, 0);\n\t\tthis.translationWorldDelta = new THREE.Vector3(0, 0, 0);\n\n\t\tthis.tweens = [];\n\n\t\tlet drag = (e) => {\n\t\t\tif (e.drag.object !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.drag.startHandled === undefined) {\n\t\t\t\te.drag.startHandled = true;\n\n\t\t\t\tthis.dispatchEvent({type: 'start'});\n\t\t\t}\n\n\t\t\tlet moveSpeed = this.viewer.getMoveSpeed();\n\n\t\t\tlet ndrag = {\n\t\t\t\tx: e.drag.lastDrag.x / this.renderer.domElement.clientWidth,\n\t\t\t\ty: e.drag.lastDrag.y / this.renderer.domElement.clientHeight\n\t\t\t};\n\n\t\t\tif (e.drag.mouse === MOUSE.LEFT) {\n\t\t\t\tthis.yawDelta += ndrag.x * this.rotationSpeed;\n\t\t\t\tthis.pitchDelta += ndrag.y * this.rotationSpeed;\n\t\t\t} else if (e.drag.mouse === MOUSE.RIGHT) {\n\t\t\t\tthis.translationDelta.x -= ndrag.x * moveSpeed * 100;\n\t\t\t\tthis.translationDelta.z += ndrag.y * moveSpeed * 100;\n\t\t\t}\n\t\t};\n\n\t\tlet drop = e => {\n\t\t\tthis.dispatchEvent({type: 'end'});\n\t\t};\n\n\t\tlet scroll = (e) => {\n\t\t\tlet speed = this.viewer.getMoveSpeed();\n\n\t\t\tif (e.delta < 0) {\n\t\t\t\tspeed = speed * 0.9;\n\t\t\t} else if (e.delta > 0) {\n\t\t\t\tspeed = speed / 0.9;\n\t\t\t}\n\n\t\t\tspeed = Math.max(speed, 0.1);\n\n\t\t\tthis.viewer.setMoveSpeed(speed);\n\t\t};\n\n\t\tlet dblclick = (e) => {\n\t\t\tthis.zoomToLocation(e.mouse);\n\t\t};\n\n\t\tthis.addEventListener('drag', drag);\n\t\tthis.addEventListener('drop', drop);\n\t\tthis.addEventListener('mousewheel', scroll);\n\t\tthis.addEventListener('dblclick', dblclick);\n\t}\n\n\tsetScene (scene) {\n\t\tthis.scene = scene;\n\t}\n\n\tstop(){\n\t\tthis.yawDelta = 0;\n\t\tthis.pitchDelta = 0;\n\t\tthis.translationDelta.set(0, 0, 0);\n\t}\n\t\n\tzoomToLocation(mouse){\n\t\tlet camera = this.scene.getActiveCamera();\n\t\t\n\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\tmouse,\n\t\t\tcamera,\n\t\t\tthis.viewer,\n\t\t\tthis.scene.pointclouds);\n\n\t\tif (I === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet targetRadius = 0;\n\t\t{\n\t\t\tlet minimumJumpDistance = 0.2;\n\n\t\t\tlet domElement = this.renderer.domElement;\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\n\t\t\tlet nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray);\n\t\t\tlet lastNode = nodes[nodes.length - 1];\n\t\t\tlet radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius;\n\t\t\ttargetRadius = Math.min(this.scene.view.radius, radius);\n\t\t\ttargetRadius = Math.max(minimumJumpDistance, targetRadius);\n\t\t}\n\n\t\tlet d = this.scene.view.direction.multiplyScalar(-1);\n\t\tlet cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius));\n\t\t// TODO Unused: let controlsTargetPosition = I.location;\n\n\t\tlet animationDuration = 600;\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\t{ // animate\n\t\t\tlet value = {x: 0};\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\tthis.tweens.push(tween);\n\n\t\t\tlet startPos = this.scene.view.position.clone();\n\t\t\tlet targetPos = cameraTargetPosition.clone();\n\t\t\tlet startRadius = this.scene.view.radius;\n\t\t\tlet targetRadius = cameraTargetPosition.distanceTo(I.location);\n\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tlet t = value.x;\n\t\t\t\tthis.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x;\n\t\t\t\tthis.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y;\n\t\t\t\tthis.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z;\n\n\t\t\t\tthis.scene.view.radius = (1 - t) * startRadius + t * targetRadius;\n\t\t\t\tthis.viewer.setMoveSpeed(this.scene.view.radius / 2.5);\n\t\t\t});\n\n\t\t\ttween.onComplete(() => {\n\t\t\t\tthis.tweens = this.tweens.filter(e => e !== tween);\n\t\t\t});\n\n\t\t\ttween.start();\n\t\t}\n\t}\n\n\tupdate (delta) {\n\t\tlet view = this.scene.view;\n\n\t\t{ // cancel move animations on user input\n\t\t\tlet changes = [ this.yawDelta,\n\t\t\t\tthis.pitchDelta,\n\t\t\t\tthis.translationDelta.length(),\n\t\t\t\tthis.translationWorldDelta.length() ];\n\t\t\tlet changeHappens = changes.some(e => Math.abs(e) > 0.001);\n\t\t\tif (changeHappens && this.tweens.length > 0) {\n\t\t\t\tthis.tweens.forEach(e => e.stop());\n\t\t\t\tthis.tweens = [];\n\t\t\t}\n\t\t}\n\n\t\t{ // accelerate while input is given\n\t\t\tlet ih = this.viewer.inputHandler;\n\n\t\t\tlet moveForward = this.keys.FORWARD.some(e => ih.pressedKeys[e]);\n\t\t\tlet moveBackward = this.keys.BACKWARD.some(e => ih.pressedKeys[e]);\n\t\t\tlet moveLeft = this.keys.LEFT.some(e => ih.pressedKeys[e]);\n\t\t\tlet moveRight = this.keys.RIGHT.some(e => ih.pressedKeys[e]);\n\t\t\tlet moveUp = this.keys.UP.some(e => ih.pressedKeys[e]);\n\t\t\tlet moveDown = this.keys.DOWN.some(e => ih.pressedKeys[e]);\n\n\t\t\tif(this.lockElevation){\n\t\t\t\tlet dir = view.direction;\n\t\t\t\tdir.z = 0;\n\t\t\t\tdir.normalize();\n\n\t\t\t\tif (moveForward && moveBackward) {\n\t\t\t\t\tthis.translationWorldDelta.set(0, 0, 0);\n\t\t\t\t} else if (moveForward) {\n\t\t\t\t\tthis.translationWorldDelta.copy(dir.multiplyScalar(this.viewer.getMoveSpeed()));\n\t\t\t\t} else if (moveBackward) {\n\t\t\t\t\tthis.translationWorldDelta.copy(dir.multiplyScalar(-this.viewer.getMoveSpeed()));\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif (moveForward && moveBackward) {\n\t\t\t\t\tthis.translationDelta.y = 0;\n\t\t\t\t} else if (moveForward) {\n\t\t\t\t\tthis.translationDelta.y = this.viewer.getMoveSpeed();\n\t\t\t\t} else if (moveBackward) {\n\t\t\t\t\tthis.translationDelta.y = -this.viewer.getMoveSpeed();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (moveLeft && moveRight) {\n\t\t\t\tthis.translationDelta.x = 0;\n\t\t\t} else if (moveLeft) {\n\t\t\t\tthis.translationDelta.x = -this.viewer.getMoveSpeed();\n\t\t\t} else if (moveRight) {\n\t\t\t\tthis.translationDelta.x = this.viewer.getMoveSpeed();\n\t\t\t}\n\n\t\t\tif (moveUp && moveDown) {\n\t\t\t\tthis.translationWorldDelta.z = 0;\n\t\t\t} else if (moveUp) {\n\t\t\t\tthis.translationWorldDelta.z = this.viewer.getMoveSpeed();\n\t\t\t} else if (moveDown) {\n\t\t\t\tthis.translationWorldDelta.z = -this.viewer.getMoveSpeed();\n\t\t\t}\n\t\t}\n\n\t\t{ // apply rotation\n\t\t\tlet yaw = view.yaw;\n\t\t\tlet pitch = view.pitch;\n\n\t\t\tyaw -= this.yawDelta * delta;\n\t\t\tpitch -= this.pitchDelta * delta;\n\n\t\t\tview.yaw = yaw;\n\t\t\tview.pitch = pitch;\n\t\t}\n\n\t\t{ // apply translation\n\t\t\tview.translate(\n\t\t\t\tthis.translationDelta.x * delta,\n\t\t\t\tthis.translationDelta.y * delta,\n\t\t\t\tthis.translationDelta.z * delta\n\t\t\t);\n\n\t\t\tview.translateWorld(\n\t\t\t\tthis.translationWorldDelta.x * delta,\n\t\t\t\tthis.translationWorldDelta.y * delta,\n\t\t\t\tthis.translationWorldDelta.z * delta\n\t\t\t);\n\t\t}\n\n\t\t{ // set view target according to speed\n\t\t\tview.radius = 3 * this.viewer.getMoveSpeed();\n\t\t}\n\n\t\t{ // decelerate over time\n\t\t\tlet attenuation = Math.max(0, 1 - this.fadeFactor * delta);\n\t\t\tthis.yawDelta *= attenuation;\n\t\t\tthis.pitchDelta *= attenuation;\n\t\t\tthis.translationDelta.multiplyScalar(attenuation);\n\t\t\tthis.translationWorldDelta.multiplyScalar(attenuation);\n\t\t}\n\t}\n};\n","\n\nimport {MOUSE} from \"../defines.js\";\nimport {Utils} from \"../utils.js\";\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\nexport class EarthControls extends EventDispatcher {\n\tconstructor (viewer) {\n\t\tsuper(viewer);\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.scene = null;\n\t\tthis.sceneControls = new THREE.Scene();\n\n\t\tthis.rotationSpeed = 10;\n\n\t\tthis.fadeFactor = 20;\n\t\tthis.wheelDelta = 0;\n\t\tthis.zoomDelta = new THREE.Vector3();\n\t\tthis.camStart = null;\n\n\t\tthis.tweens = [];\n\n\t\t{\n\t\t\tlet sg = new THREE.SphereGeometry(1, 16, 16);\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\n\t\t\tthis.pivotIndicator = new THREE.Mesh(sg, sm);\n\t\t\tthis.pivotIndicator.visible = false;\n\t\t\tthis.sceneControls.add(this.pivotIndicator);\n\t\t}\n\n\t\tlet drag = (e) => {\n\t\t\tif (e.drag.object !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.pivot) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.drag.startHandled === undefined) {\n\t\t\t\te.drag.startHandled = true;\n\n\t\t\t\tthis.dispatchEvent({type: 'start'});\n\t\t\t}\n\n\t\t\tlet camStart = this.camStart;\n\t\t\tlet camera = this.scene.getActiveCamera();\n\t\t\tlet view = this.viewer.scene.view;\n\n\t\t\t// let camera = this.viewer.scene.camera;\n\t\t\tlet mouse = e.drag.end;\n\t\t\tlet domElement = this.viewer.renderer.domElement;\n\n\t\t\tif (e.drag.mouse === MOUSE.LEFT) {\n\n\t\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\t\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(\n\t\t\t\t\tnew THREE.Vector3(0, 0, 1),\n\t\t\t\t\tthis.pivot);\n\n\t\t\t\tlet distanceToPlane = ray.distanceToPlane(plane);\n\n\t\t\t\tif (distanceToPlane > 0) {\n\t\t\t\t\tlet I = new THREE.Vector3().addVectors(\n\t\t\t\t\t\tcamStart.position,\n\t\t\t\t\t\tray.direction.clone().multiplyScalar(distanceToPlane));\n\n\t\t\t\t\tlet movedBy = new THREE.Vector3().subVectors(\n\t\t\t\t\t\tI, this.pivot);\n\n\t\t\t\t\tlet newCamPos = camStart.position.clone().sub(movedBy);\n\n\t\t\t\t\tview.position.copy(newCamPos);\n\n\t\t\t\t\t{\n\t\t\t\t\t\tlet distance = newCamPos.distanceTo(this.pivot);\n\t\t\t\t\t\tview.radius = distance;\n\t\t\t\t\t\tlet speed = view.radius / 2.5;\n\t\t\t\t\t\tthis.viewer.setMoveSpeed(speed);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (e.drag.mouse === MOUSE.RIGHT) {\n\t\t\t\tlet ndrag = {\n\t\t\t\t\tx: e.drag.lastDrag.x / this.renderer.domElement.clientWidth,\n\t\t\t\t\ty: e.drag.lastDrag.y / this.renderer.domElement.clientHeight\n\t\t\t\t};\n\n\t\t\t\tlet yawDelta = -ndrag.x * this.rotationSpeed * 0.5;\n\t\t\t\tlet pitchDelta = -ndrag.y * this.rotationSpeed * 0.2;\n\n\t\t\t\tlet originalPitch = view.pitch;\n\t\t\t\tlet tmpView = view.clone();\n\t\t\t\ttmpView.pitch = tmpView.pitch + pitchDelta;\n\t\t\t\tpitchDelta = tmpView.pitch - originalPitch;\n\n\t\t\t\tlet pivotToCam = new THREE.Vector3().subVectors(view.position, this.pivot);\n\t\t\t\tlet pivotToCamTarget = new THREE.Vector3().subVectors(view.getPivot(), this.pivot);\n\t\t\t\tlet side = view.getSide();\n\n\t\t\t\tpivotToCam.applyAxisAngle(side, pitchDelta);\n\t\t\t\tpivotToCamTarget.applyAxisAngle(side, pitchDelta);\n\n\t\t\t\tpivotToCam.applyAxisAngle(new THREE.Vector3(0, 0, 1), yawDelta);\n\t\t\t\tpivotToCamTarget.applyAxisAngle(new THREE.Vector3(0, 0, 1), yawDelta);\n\n\t\t\t\tlet newCam = new THREE.Vector3().addVectors(this.pivot, pivotToCam);\n\t\t\t\t// TODO: Unused: let newCamTarget = new THREE.Vector3().addVectors(this.pivot, pivotToCamTarget);\n\n\t\t\t\tview.position.copy(newCam);\n\t\t\t\tview.yaw += yawDelta;\n\t\t\t\tview.pitch += pitchDelta;\n\t\t\t}\n\t\t};\n\n\t\tlet onMouseDown = e => {\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\te.mouse, \n\t\t\t\tthis.scene.getActiveCamera(), \n\t\t\t\tthis.viewer, \n\t\t\t\tthis.scene.pointclouds, \n\t\t\t\t{pickClipped: false});\n\n\t\t\tif (I) {\n\t\t\t\tthis.pivot = I.location;\n\t\t\t\tthis.camStart = this.scene.getActiveCamera().clone();\n\t\t\t\tthis.pivotIndicator.visible = true;\n\t\t\t\tthis.pivotIndicator.position.copy(I.location);\n\t\t\t}\n\t\t};\n\n\t\tlet drop = e => {\n\t\t\tthis.dispatchEvent({type: 'end'});\n\t\t};\n\n\t\tlet onMouseUp = e => {\n\t\t\tthis.camStart = null;\n\t\t\tthis.pivot = null;\n\t\t\tthis.pivotIndicator.visible = false;\n\t\t};\n\n\t\tlet scroll = (e) => {\n\t\t\tthis.wheelDelta += e.delta;\n\t\t};\n\n\t\tlet dblclick = (e) => {\n\t\t\tthis.zoomToLocation(e.mouse);\n\t\t};\n\n\t\tthis.addEventListener('drag', drag);\n\t\tthis.addEventListener('drop', drop);\n\t\tthis.addEventListener('mousewheel', scroll);\n\t\tthis.addEventListener('mousedown', onMouseDown);\n\t\tthis.addEventListener('mouseup', onMouseUp);\n\t\tthis.addEventListener('dblclick', dblclick);\n\t}\n\n\tsetScene (scene) {\n\t\tthis.scene = scene;\n\t}\n\n\tstop(){\n\t\tthis.wheelDelta = 0;\n\t\tthis.zoomDelta.set(0, 0, 0);\n\t}\n\t\n\tzoomToLocation(mouse){\n\t\tlet camera = this.scene.getActiveCamera();\n\t\t\n\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\tmouse,\n\t\t\tcamera,\n\t\t\tthis.viewer,\n\t\t\tthis.scene.pointclouds);\n\n\t\tif (I === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet targetRadius = 0;\n\t\t{\n\t\t\tlet minimumJumpDistance = 0.2;\n\n\t\t\tlet domElement = this.renderer.domElement;\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\n\n\t\t\tlet nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray);\n\t\t\tlet lastNode = nodes[nodes.length - 1];\n\t\t\tlet radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius;\n\t\t\ttargetRadius = Math.min(this.scene.view.radius, radius);\n\t\t\ttargetRadius = Math.max(minimumJumpDistance, targetRadius);\n\t\t}\n\n\t\tlet d = this.scene.view.direction.multiplyScalar(-1);\n\t\tlet cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius));\n\t\t// TODO Unused: let controlsTargetPosition = I.location;\n\n\t\tlet animationDuration = 600;\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\t{ // animate\n\t\t\tlet value = {x: 0};\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\tthis.tweens.push(tween);\n\n\t\t\tlet startPos = this.scene.view.position.clone();\n\t\t\tlet targetPos = cameraTargetPosition.clone();\n\t\t\tlet startRadius = this.scene.view.radius;\n\t\t\tlet targetRadius = cameraTargetPosition.distanceTo(I.location);\n\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tlet t = value.x;\n\t\t\t\tthis.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x;\n\t\t\t\tthis.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y;\n\t\t\t\tthis.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z;\n\n\t\t\t\tthis.scene.view.radius = (1 - t) * startRadius + t * targetRadius;\n\t\t\t\tthis.viewer.setMoveSpeed(this.scene.view.radius / 2.5);\n\t\t\t});\n\n\t\t\ttween.onComplete(() => {\n\t\t\t\tthis.tweens = this.tweens.filter(e => e !== tween);\n\t\t\t});\n\n\t\t\ttween.start();\n\t\t}\n\t}\n\n\tupdate (delta) {\n\t\tlet view = this.scene.view;\n\t\tlet fade = Math.pow(0.5, this.fadeFactor * delta);\n\t\tlet progression = 1 - fade;\n\t\tlet camera = this.scene.getActiveCamera();\n\t\t\n\t\t// compute zoom\n\t\tif (this.wheelDelta !== 0) {\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\n\t\t\t\tthis.viewer.inputHandler.mouse, \n\t\t\t\tthis.scene.getActiveCamera(), \n\t\t\t\tthis.viewer, \n\t\t\t\tthis.scene.pointclouds);\n\n\t\t\tif (I) {\n\t\t\t\tlet resolvedPos = new THREE.Vector3().addVectors(view.position, this.zoomDelta);\n\t\t\t\tlet distance = I.location.distanceTo(resolvedPos);\n\t\t\t\tlet jumpDistance = distance * 0.2 * this.wheelDelta;\n\t\t\t\tlet targetDir = new THREE.Vector3().subVectors(I.location, view.position);\n\t\t\t\ttargetDir.normalize();\n\n\t\t\t\tresolvedPos.add(targetDir.multiplyScalar(jumpDistance));\n\t\t\t\tthis.zoomDelta.subVectors(resolvedPos, view.position);\n\n\t\t\t\t{\n\t\t\t\t\tlet distance = resolvedPos.distanceTo(I.location);\n\t\t\t\t\tview.radius = distance;\n\t\t\t\t\tlet speed = view.radius / 2.5;\n\t\t\t\t\tthis.viewer.setMoveSpeed(speed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// apply zoom\n\t\tif (this.zoomDelta.length() !== 0) {\n\t\t\tlet p = this.zoomDelta.clone().multiplyScalar(progression);\n\n\t\t\tlet newPos = new THREE.Vector3().addVectors(view.position, p);\n\t\t\tview.position.copy(newPos);\n\t\t}\n\n\t\tif (this.pivotIndicator.visible) {\n\t\t\tlet distance = this.pivotIndicator.position.distanceTo(view.position);\n\t\t\tlet pixelwidth = this.renderer.domElement.clientwidth;\n\t\t\tlet pixelHeight = this.renderer.domElement.clientHeight;\n\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, pixelwidth, pixelHeight);\n\t\t\tlet scale = (10 / pr);\n\t\t\tthis.pivotIndicator.scale.set(scale, scale, scale);\n\t\t}\n\n\t\t// decelerate over time\n\t\t{\n\t\t\tthis.zoomDelta.multiplyScalar(fade);\n\t\t\tthis.wheelDelta = 0;\n\t\t}\n\t}\n};\n","/**\n * @author chrisl / Geodan\n *\n * adapted from Potree.FirstPersonControls by\n *\n * @author mschuetz / http://mschuetz.at\n *\n * and THREE.DeviceOrientationControls by\n *\n * @author richt / http://richt.me\n * @author WestLangley / http://github.com/WestLangley\n *\n *\n *\n */\n\nimport {EventDispatcher} from \"../EventDispatcher.js\";\n\nexport class DeviceOrientationControls extends EventDispatcher{\n\tconstructor(viewer){\n\t\tsuper();\n\n\t\tthis.viewer = viewer;\n\t\tthis.renderer = viewer.renderer;\n\n\t\tthis.scene = null;\n\t\tthis.sceneControls = new THREE.Scene();\n\n\t\tthis.screenOrientation = window.orientation || 0;\n\n\t\tlet deviceOrientationChange = e => {\n\t\t\tthis.deviceOrientation = e;\n\t\t};\n\n\t\tlet screenOrientationChange = e => {\n\t\t\tthis.screenOrientation = window.orientation || 0;\n\t\t};\n\n\t\tif ('ondeviceorientationabsolute' in window) {\n\t\t\twindow.addEventListener('deviceorientationabsolute', deviceOrientationChange);\n\t\t} else if ('ondeviceorientation' in window) {\n\t\t\twindow.addEventListener('deviceorientation', deviceOrientationChange);\n\t\t} else {\n\t\t\tconsole.warn(\"No device orientation found.\");\n\t\t}\n\t\t// window.addEventListener('deviceorientation', deviceOrientationChange);\n\t\twindow.addEventListener('orientationchange', screenOrientationChange);\n\t}\n\n\tsetScene (scene) {\n\t\tthis.scene = scene;\n\t}\n\n\tupdate (delta) {\n\t\tlet computeQuaternion = function (alpha, beta, gamma, orient) {\n\t\t\tlet quaternion = new THREE.Quaternion();\n\n\t\t\tlet zee = new THREE.Vector3(0, 0, 1);\n\t\t\tlet euler = new THREE.Euler();\n\t\t\tlet q0 = new THREE.Quaternion();\n\n\t\t\teuler.set(beta, gamma, alpha, 'ZXY');\n\t\t\tquaternion.setFromEuler(euler);\n\t\t\tquaternion.multiply(q0.setFromAxisAngle(zee, -orient));\n\n\t\t\treturn quaternion;\n\t\t};\n\n\t\tif (typeof this.deviceOrientation !== 'undefined') {\n\t\t\tlet alpha = this.deviceOrientation.alpha ? THREE.Math.degToRad(this.deviceOrientation.alpha) : 0;\n\t\t\tlet beta = this.deviceOrientation.beta ? THREE.Math.degToRad(this.deviceOrientation.beta) : 0;\n\t\t\tlet gamma = this.deviceOrientation.gamma ? THREE.Math.degToRad(this.deviceOrientation.gamma) : 0;\n\t\t\tlet orient = this.screenOrientation ? THREE.Math.degToRad(this.screenOrientation) : 0;\n\n\t\t\tlet quaternion = computeQuaternion(alpha, beta, gamma, orient);\n\t\t\tviewer.scene.cameraP.quaternion.set(quaternion.x, quaternion.y, quaternion.z, quaternion.w);\n\t\t}\n\t}\n};\n","\nimport {ClipTask, ClipMethod, CameraMode, LengthUnits, ElevationGradientRepeat} from \"../defines.js\";\nimport {Renderer} from \"../PotreeRenderer.js\";\nimport {PotreeRenderer} from \"./PotreeRenderer.js\";\nimport {EDLRenderer} from \"./EDLRenderer.js\";\nimport {HQSplatRenderer} from \"./HQSplatRenderer.js\";\nimport {Scene} from \"./Scene.js\";\nimport {ClippingTool} from \"../utils/ClippingTool.js\";\nimport {TransformationTool} from \"../utils/TransformationTool.js\";\nimport {Utils} from \"../utils.js\";\nimport {MapView} from \"./map.js\";\nimport {ProfileWindow, ProfileWindowController} from \"./profile.js\";\nimport {BoxVolume} from \"../utils/Volume.js\";\nimport {Features} from \"../Features.js\";\nimport {Message} from \"../utils/Message.js\";\nimport {Sidebar} from \"./sidebar.js\";\n\nimport {AnnotationTool} from \"../utils/AnnotationTool.js\";\nimport {MeasuringTool} from \"../utils/MeasuringTool.js\";\nimport {ProfileTool} from \"../utils/ProfileTool.js\";\nimport {VolumeTool} from \"../utils/VolumeTool.js\";\n\nimport {InputHandler} from \"../navigation/InputHandler.js\";\nimport {NavigationCube} from \"./NavigationCube.js\";\nimport {Compass} from \"../utils/Compass.js\";\nimport {OrbitControls} from \"../navigation/OrbitControls.js\";\nimport {FirstPersonControls} from \"../navigation/FirstPersonControls.js\";\nimport {EarthControls} from \"../navigation/EarthControls.js\";\nimport {DeviceOrientationControls} from \"../navigation/DeviceOrientationControls.js\";\nimport { EventDispatcher } from \"../EventDispatcher.js\";\nimport { ClassificationScheme } from \"../materials/ClassificationScheme.js\";\n\nimport JSON5 from \"../../libs/json5-2.1.3/json5.mjs\";\n\n\nexport class Viewer extends EventDispatcher{\n\t\n\tconstructor(domElement, args = {}){\n\t\tsuper();\n\n\t\tthis.renderArea = domElement;\n\t\tthis.guiLoaded = false;\n\t\tthis.guiLoadTasks = [];\n\n\t\tthis.vr = null;\n\t\tthis.onVrListeners = [];\n\n\t\tthis.messages = [];\n\t\tthis.elMessages = $(`\n\t\t
        \n\t\t
        `);\n\t\t$(domElement).append(this.elMessages);\n\t\t\n\t\ttry{\n\n\t\t{ // generate missing dom hierarchy\n\t\t\tif ($(domElement).find('#potree_map').length === 0) {\n\t\t\t\tlet potreeMap = $(`\n\t\t\t\t\t
        \n\t\t\t\t\t\t
        \n\t\t\t\t\t\t
        \n\t\t\t\t\t\t
        \n\t\t\t\t\t
        \n\t\t\t\t`);\n\t\t\t\t$(domElement).append(potreeMap);\n\t\t\t}\n\n\t\t\tif ($(domElement).find('#potree_description').length === 0) {\n\t\t\t\tlet potreeDescription = $(`
        `);\n\t\t\t\t$(domElement).append(potreeDescription);\n\t\t\t}\n\n\t\t\tif ($(domElement).find('#potree_annotations').length === 0) {\n\t\t\t\tlet potreeAnnotationContainer = $(`\n\t\t\t\t\t
        `);\n\t\t\t\t$(domElement).append(potreeAnnotationContainer);\n\t\t\t}\n\t\t}\n\n\t\tthis.pointCloudLoadedCallback = args.onPointCloudLoaded || function () {};\n\n\t\t// if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {\n\t\t//\tdefaultSettings.navigation = \"Orbit\";\n\t\t// }\n\n\t\tthis.server = null;\n\n\t\tthis.fov = 60;\n\t\tthis.isFlipYZ = false;\n\t\tthis.useDEMCollisions = false;\n\t\tthis.generateDEM = false;\n\t\tthis.minNodeSize = 30;\n\t\tthis.edlStrength = 1.0;\n\t\tthis.edlRadius = 1.4;\n\t\tthis.edlOpacity = 1.0;\n\t\tthis.useEDL = false;\n\t\tthis.description = \"\";\n\n\t\tthis.classifications = ClassificationScheme.DEFAULT;\n\n\t\tthis.moveSpeed = 10;\n\n\t\tthis.lengthUnit = LengthUnits.METER;\n\t\tthis.lengthUnitDisplay = LengthUnits.METER;\n\n\t\tthis.showBoundingBox = false;\n\t\tthis.showAnnotations = true;\n\t\tthis.freeze = false;\n\t\tthis.clipTask = ClipTask.HIGHLIGHT;\n\t\tthis.clipMethod = ClipMethod.INSIDE_ANY;\n\n\t\tthis.elevationGradientRepeat = ElevationGradientRepeat.CLAMP;\n\n\t\tthis.filterReturnNumberRange = [0, 7];\n\t\tthis.filterNumberOfReturnsRange = [0, 7];\n\t\tthis.filterGPSTimeRange = [-Infinity, Infinity];\n\t\tthis.filterPointSourceIDRange = [0, 65535];\n\n\t\tthis.potreeRenderer = null;\n\t\tthis.edlRenderer = null;\n\t\tthis.renderer = null;\n\t\tthis.pRenderer = null;\n\n\t\tthis.scene = null;\n\t\tthis.overlay = null;\n\t\tthis.overlayCamera = null;\n\n\t\tthis.inputHandler = null;\n\t\tthis.controls = null;\n\n\t\tthis.clippingTool = null;\n\t\tthis.transformationTool = null;\n\t\tthis.navigationCube = null;\n\t\tthis.compass = null;\n\t\t\n\t\tthis.skybox = null;\n\t\tthis.clock = new THREE.Clock();\n\t\tthis.background = null;\n\n\t\tthis.initThree();\n\t\tthis.prepareVR();\n\n\t\tif(args.noDragAndDrop){\n\t\t\t\n\t\t}else{\n\t\t\tthis.initDragAndDrop();\n\t\t}\n\n\t\tif(typeof Stats !== \"undefined\"){\n\t\t\tthis.stats = new Stats();\n\t\t\tthis.stats.showPanel( 0 ); // 0: fps, 1: ms, 2: mb, 3+: custom\n\t\t\tdocument.body.appendChild( this.stats.dom );\n\t\t}\n\n\t\t{\n\t\t\tlet canvas = this.renderer.domElement;\n\t\t\tcanvas.addEventListener(\"webglcontextlost\", (e) => {\n\t\t\t\tconsole.log(e);\n\t\t\t\tthis.postMessage(\"WebGL context lost. \\u2639\");\n\n\t\t\t\tlet gl = this.renderer.getContext();\n\t\t\t\tlet error = gl.getError();\n\t\t\t\tconsole.log(error);\n\t\t\t}, false);\n\t\t}\n\n\t\t{\n\t\t\tthis.overlay = new THREE.Scene();\n\t\t\tthis.overlayCamera = new THREE.OrthographicCamera(\n\t\t\t\t0, 1,\n\t\t\t\t1, 0,\n\t\t\t\t-1000, 1000\n\t\t\t);\n\t\t}\n\t\t\n\t\tthis.pRenderer = new Renderer(this.renderer);\n\t\t\n\t\t{\n\t\t\tlet near = 2.5;\n\t\t\tlet far = 10.0;\n\t\t\tlet fov = 90;\n\t\t\t\n\t\t\tthis.shadowTestCam = new THREE.PerspectiveCamera(90, 1, near, far);\n\t\t\tthis.shadowTestCam.position.set(3.50, -2.80, 8.561);\n\t\t\tthis.shadowTestCam.lookAt(new THREE.Vector3(0, 0, 4.87));\n\t\t}\n\t\t\n\n\t\tlet scene = new Scene(this.renderer);\n\t\tthis.setScene(scene);\n\n\t\t{\n\t\t\tthis.inputHandler = new InputHandler(this);\n\t\t\tthis.inputHandler.setScene(this.scene);\n\n\t\t\tthis.clippingTool = new ClippingTool(this);\n\t\t\tthis.transformationTool = new TransformationTool(this);\n\t\t\tthis.navigationCube = new NavigationCube(this);\n\t\t\tthis.navigationCube.visible = false;\n\n\t\t\tthis.compass = new Compass(this);\n\t\t\t\n\t\t\tthis.createControls();\n\n\t\t\tthis.clippingTool.setScene(this.scene);\n\t\t\t\n\t\t\tlet onPointcloudAdded = (e) => {\n\t\t\t\tif (this.scene.pointclouds.length === 1) {\n\t\t\t\t\tlet speed = e.pointcloud.boundingBox.getSize(new THREE.Vector3()).length();\n\t\t\t\t\tspeed = speed / 5;\n\t\t\t\t\tthis.setMoveSpeed(speed);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet onVolumeRemoved = (e) => {\n\t\t\t\tthis.inputHandler.deselect(e.volume);\n\t\t\t};\n\n\t\t\tthis.addEventListener('scene_changed', (e) => {\n\t\t\t\tthis.inputHandler.setScene(e.scene);\n\t\t\t\tthis.clippingTool.setScene(this.scene);\n\t\t\t\t\n\t\t\t\tif(!e.scene.hasEventListener(\"pointcloud_added\", onPointcloudAdded)){\n\t\t\t\t\te.scene.addEventListener(\"pointcloud_added\", onPointcloudAdded);\n\t\t\t\t}\n\n\t\t\t\tif(!e.scene.hasEventListener(\"volume_removed\", onPointcloudAdded)){\n\t\t\t\t\te.scene.addEventListener(\"volume_removed\", onVolumeRemoved);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t});\n\n\t\t\tthis.scene.addEventListener(\"volume_removed\", onVolumeRemoved);\n\t\t\tthis.scene.addEventListener('pointcloud_added', onPointcloudAdded);\n\t\t}\n\n\t\t{ // set defaults\n\t\t\tthis.setFOV(60);\n\t\t\tthis.setEDLEnabled(false);\n\t\t\tthis.setEDLRadius(1.4);\n\t\t\tthis.setEDLStrength(0.4);\n\t\t\tthis.setEDLOpacity(1.0);\n\t\t\tthis.setClipTask(ClipTask.HIGHLIGHT);\n\t\t\tthis.setClipMethod(ClipMethod.INSIDE_ANY);\n\t\t\tthis.setPointBudget(1*1000*1000);\n\t\t\tthis.setShowBoundingBox(false);\n\t\t\tthis.setFreeze(false);\n\t\t\tthis.setControls(this.orbitControls);\n\t\t\tthis.setBackground('gradient');\n\n\t\t\tthis.scaleFactor = 1;\n\n\t\t\tthis.loadSettingsFromURL();\n\t\t}\n\n\t\t// start rendering!\n\t\tif(args.useDefaultRenderLoop === undefined || args.useDefaultRenderLoop === true){\n\t\t\trequestAnimationFrame(this.loop.bind(this));\n\t\t}\n\n\t\tthis.loadGUI = this.loadGUI.bind(this);\n\n\t\tthis.annotationTool = new AnnotationTool(this);\n\t\tthis.measuringTool = new MeasuringTool(this);\n\t\tthis.profileTool = new ProfileTool(this);\n\t\tthis.volumeTool = new VolumeTool(this);\n\n\t\t}catch(e){\n\t\t\tthis.onCrash(e);\n\t\t}\n\t}\n\n\tonCrash(error){\n\n\t\t$(this.renderArea).empty();\n\n\t\tif ($(this.renderArea).find('#potree_failpage').length === 0) {\n\t\t\tlet elFailPage = $(`\n\t\t\t
        \n\t\t\t\t\n\t\t\t\t

        Potree Encountered An Error

        \n\n\t\t\t\t

        \n\t\t\t\tThis may happen if your browser or graphics card is not supported.\n\t\t\t\t
        \n\t\t\t\tWe recommend to use \n\t\t\t\tChrome\n\t\t\t\tor \n\t\t\t\tFirefox.\n\t\t\t\t

        \n\n\t\t\t\t

        \n\t\t\t\tPlease also visit webglreport.com and \n\t\t\t\tcheck whether your system supports WebGL.\n\t\t\t\t

        \n\t\t\t\t

        \n\t\t\t\tIf you are already using one of the recommended browsers and WebGL is enabled, \n\t\t\t\tconsider filing an issue report at github,
        \n\t\t\t\tincluding your operating system, graphics card, browser and browser version, as well as the \n\t\t\t\terror message below.
        \n\t\t\t\tPlease do not report errors on unsupported browsers.\n\t\t\t\t

        \n\n\t\t\t\t
        \n\t\t\t\t\n\t\t\t
        `);\n\n\t\t\tlet elErrorMessage = elFailPage.find('#potree_error_console');\n\t\t\telErrorMessage.html(error.stack);\n\n\t\t\t$(this.renderArea).append(elFailPage);\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\t// ------------------------------------------------------------------------------------\n\t// Viewer API\n\t// ------------------------------------------------------------------------------------\n\n\tsetScene (scene) {\n\t\tif (scene === this.scene) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet oldScene = this.scene;\n\t\tthis.scene = scene;\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'scene_changed',\n\t\t\toldScene: oldScene,\n\t\t\tscene: scene\n\t\t});\n\n\t\t{ // Annotations\n\t\t\t$('.annotation').detach();\n\n\t\t\t// for(let annotation of this.scene.annotations){\n\t\t\t//\tthis.renderArea.appendChild(annotation.domElement[0]);\n\t\t\t// }\n\n\t\t\tthis.scene.annotations.traverse(annotation => {\n\t\t\t\tthis.renderArea.appendChild(annotation.domElement[0]);\n\t\t\t});\n\n\t\t\tif (!this.onAnnotationAdded) {\n\t\t\t\tthis.onAnnotationAdded = e => {\n\t\t\t\t// console.log(\"annotation added: \" + e.annotation.title);\n\n\t\t\t\t\te.annotation.traverse(node => {\n\n\t\t\t\t\t\t$(\"#potree_annotation_container\").append(node.domElement);\n\t\t\t\t\t\t//this.renderArea.appendChild(node.domElement[0]);\n\t\t\t\t\t\tnode.scene = this.scene;\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (oldScene) {\n\t\t\t\toldScene.annotations.removeEventListener('annotation_added', this.onAnnotationAdded);\n\t\t\t}\n\t\t\tthis.scene.annotations.addEventListener('annotation_added', this.onAnnotationAdded);\n\t\t}\n\t};\n\n\tsetControls(controls){\n\t\tif (controls !== this.controls) {\n\t\t\tif (this.controls) {\n\t\t\t\tthis.controls.enabled = false;\n\t\t\t\tthis.inputHandler.removeInputListener(this.controls);\n\t\t\t}\n\n\t\t\tthis.controls = controls;\n\t\t\tthis.controls.enabled = true;\n\t\t\tthis.inputHandler.addInputListener(this.controls);\n\t\t}\n\t}\n\n\tgetControls () {\n\t\treturn this.controls;\n\t}\n\n\tgetMinNodeSize () {\n\t\treturn this.minNodeSize;\n\t};\n\n\tsetMinNodeSize (value) {\n\t\tif (this.minNodeSize !== value) {\n\t\t\tthis.minNodeSize = value;\n\t\t\tthis.dispatchEvent({'type': 'minnodesize_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetBackground () {\n\t\treturn this.background;\n\t}\n\n\tsetBackground(bg){\n\t\tif (this.background === bg) {\n\t\t\treturn;\n\t\t}\n\n\t\tif(bg === \"skybox\"){\n\t\t\tthis.skybox = Utils.loadSkybox(new URL(Potree.resourcePath + '/textures/skybox2/').href);\n\t\t}\n\n\t\tthis.background = bg;\n\t\tthis.dispatchEvent({'type': 'background_changed', 'viewer': this});\n\t}\n\n\tsetDescription (value) {\n\t\tthis.description = value;\n\t\t\n\t\t$('#potree_description').html(value);\n\t\t//$('#potree_description').text(value);\n\t}\n\n\tgetDescription(){\n\t\treturn this.description;\n\t}\n\n\tsetShowBoundingBox (value) {\n\t\tif (this.showBoundingBox !== value) {\n\t\t\tthis.showBoundingBox = value;\n\t\t\tthis.dispatchEvent({'type': 'show_boundingbox_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetShowBoundingBox () {\n\t\treturn this.showBoundingBox;\n\t};\n\n\tsetMoveSpeed (value) {\n\t\tif (this.moveSpeed !== value) {\n\t\t\tthis.moveSpeed = value;\n\t\t\tthis.dispatchEvent({'type': 'move_speed_changed', 'viewer': this, 'speed': value});\n\t\t}\n\t};\n\n\tgetMoveSpeed () {\n\t\treturn this.moveSpeed;\n\t};\n\n\tsetWeightClassification (w) {\n\t\tfor (let i = 0; i < this.scene.pointclouds.length; i++) {\n\t\t\tthis.scene.pointclouds[i].material.weightClassification = w;\n\t\t\tthis.dispatchEvent({'type': 'attribute_weights_changed' + i, 'viewer': this});\n\t\t}\n\t};\n\n\tsetFreeze (value) {\n\t\tvalue = Boolean(value);\n\t\tif (this.freeze !== value) {\n\t\t\tthis.freeze = value;\n\t\t\tthis.dispatchEvent({'type': 'freeze_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetFreeze () {\n\t\treturn this.freeze;\n\t};\n\n\tgetClipTask(){\n\t\treturn this.clipTask;\n\t}\n\n\tgetClipMethod(){\n\t\treturn this.clipMethod;\n\t}\n\n\tsetClipTask(value){\n\t\tif(this.clipTask !== value){\n\n\t\t\tthis.clipTask = value;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: \"cliptask_changed\", \n\t\t\t\tviewer: this});\t\t\n\t\t}\n\t}\n\n\tsetClipMethod(value){\n\t\tif(this.clipMethod !== value){\n\n\t\t\tthis.clipMethod = value;\n\t\t\t\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: \"clipmethod_changed\",\n\t\t\t\tviewer: this});\n\t\t}\n\t}\n\n\tsetElevationGradientRepeat(value){\n\t\tif(this.elevationGradientRepeat !== value){\n\n\t\t\tthis.elevationGradientRepeat = value;\n\n\t\t\tthis.dispatchEvent({\n\t\t\t\ttype: \"elevation_gradient_repeat_changed\", \n\t\t\t\tviewer: this});\n\t\t}\n\t}\n\n\tsetPointBudget (value) {\n\t\tif (Potree.pointBudget !== value) {\n\t\t\tPotree.pointBudget = parseInt(value);\n\t\t\tthis.dispatchEvent({'type': 'point_budget_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetPointBudget () {\n\t\treturn Potree.pointBudget;\n\t};\n\n\tsetShowAnnotations (value) {\n\t\tif (this.showAnnotations !== value) {\n\t\t\tthis.showAnnotations = value;\n\t\t\tthis.dispatchEvent({'type': 'show_annotations_changed', 'viewer': this});\n\t\t}\n\t}\n\n\tgetShowAnnotations () {\n\t\treturn this.showAnnotations;\n\t}\n\t\n\tsetDEMCollisionsEnabled(value){\n\t\tif(this.useDEMCollisions !== value){\n\t\t\tthis.useDEMCollisions = value;\n\t\t\tthis.dispatchEvent({'type': 'use_demcollisions_changed', 'viewer': this});\n\t\t};\n\t};\n\n\tgetDEMCollisionsEnabled () {\n\t\treturn this.useDEMCollisions;\n\t};\n\n\tsetEDLEnabled (value) {\n\t\tvalue = Boolean(value);\n\t\tif (this.useEDL !== value) {\n\t\t\tthis.useEDL = value;\n\t\t\tthis.dispatchEvent({'type': 'use_edl_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetEDLEnabled () {\n\t\treturn this.useEDL;\n\t};\n\n\tsetEDLRadius (value) {\n\t\tif (this.edlRadius !== value) {\n\t\t\tthis.edlRadius = value;\n\t\t\tthis.dispatchEvent({'type': 'edl_radius_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetEDLRadius () {\n\t\treturn this.edlRadius;\n\t};\n\n\tsetEDLStrength (value) {\n\t\tif (this.edlStrength !== value) {\n\t\t\tthis.edlStrength = value;\n\t\t\tthis.dispatchEvent({'type': 'edl_strength_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetEDLStrength () {\n\t\treturn this.edlStrength;\n\t};\n\n\tsetEDLOpacity (value) {\n\t\tif (this.edlOpacity !== value) {\n\t\t\tthis.edlOpacity = value;\n\t\t\tthis.dispatchEvent({'type': 'edl_opacity_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetEDLOpacity () {\n\t\treturn this.edlOpacity;\n\t};\n\n\tsetFOV (value) {\n\t\tif (this.fov !== value) {\n\t\t\tthis.fov = value;\n\t\t\tthis.dispatchEvent({'type': 'fov_changed', 'viewer': this});\n\t\t}\n\t};\n\n\tgetFOV () {\n\t\treturn this.fov;\n\t};\n\n\tdisableAnnotations () {\n\t\tthis.scene.annotations.traverse(annotation => {\n\t\t\tannotation.domElement.css('pointer-events', 'none');\n\n\t\t\t// return annotation.visible;\n\t\t});\n\t};\n\n\tenableAnnotations () {\n\t\tthis.scene.annotations.traverse(annotation => {\n\t\t\tannotation.domElement.css('pointer-events', 'auto');\n\n\t\t\t// return annotation.visible;\n\t\t});\n\t}\n\n\tsetClassifications(classifications){\n\t\tthis.classifications = classifications;\n\n\t\tthis.dispatchEvent({'type': 'classifications_changed', 'viewer': this});\n\t}\n\n\tsetClassificationVisibility (key, value) {\n\t\tif (!this.classifications[key]) {\n\t\t\tthis.classifications[key] = {visible: value, name: 'no name'};\n\t\t\tthis.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this});\n\t\t} else if (this.classifications[key].visible !== value) {\n\t\t\tthis.classifications[key].visible = value;\n\t\t\tthis.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this});\n\t\t}\n\t}\n\n\ttoggleAllClassificationsVisibility(){\n\n\t\tlet numVisible = 0;\n\t\tlet numItems = 0;\n\t\tfor(const key of Object.keys(this.classifications)){\n\t\t\tif(this.classifications[key].visible){\n\t\t\t\tnumVisible++;\n\t\t\t}\n\t\t\tnumItems++;\n\t\t}\n\n\t\tlet visible = true;\n\t\tif(numVisible === numItems){\n\t\t\tvisible = false;\n\t\t}\n\n\t\tlet somethingChanged = false;\n\n\t\tfor(const key of Object.keys(this.classifications)){\n\t\t\tif(this.classifications[key].visible !== visible){\n\t\t\t\tthis.classifications[key].visible = visible;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t}\n\n\t\tif(somethingChanged){\n\t\t\tthis.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this});\n\t\t}\n\t}\n\n\tsetFilterReturnNumberRange(from, to){\n\t\tthis.filterReturnNumberRange = [from, to];\n\t\tthis.dispatchEvent({'type': 'filter_return_number_range_changed', 'viewer': this});\n\t}\n\n\tsetFilterNumberOfReturnsRange(from, to){\n\t\tthis.filterNumberOfReturnsRange = [from, to];\n\t\tthis.dispatchEvent({'type': 'filter_number_of_returns_range_changed', 'viewer': this});\n\t}\n\n\tsetFilterGPSTimeRange(from, to){\n\t\tthis.filterGPSTimeRange = [from, to];\n\t\tthis.dispatchEvent({'type': 'filter_gps_time_range_changed', 'viewer': this});\n\t}\n\n\tsetFilterPointSourceIDRange(from, to){\n\t\tthis.filterPointSourceIDRange = [from, to]\n\t\tthis.dispatchEvent({'type': 'filter_point_source_id_range_changed', 'viewer': this});\n\t}\n\n\tsetLengthUnit (value) {\n\t\tswitch (value) {\n\t\t\tcase 'm':\n\t\t\t\tthis.lengthUnit = LengthUnits.METER;\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.METER;\n\t\t\t\tbreak;\n\t\t\tcase 'ft':\n\t\t\t\tthis.lengthUnit = LengthUnits.FEET;\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.FEET;\n\t\t\t\tbreak;\n\t\t\tcase 'in':\n\t\t\t\tthis.lengthUnit = LengthUnits.INCH;\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.INCH;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.dispatchEvent({ 'type': 'length_unit_changed', 'viewer': this, value: value});\n\t};\n\n\tsetLengthUnitAndDisplayUnit(lengthUnitValue, lengthUnitDisplayValue) {\n\t\tswitch (lengthUnitValue) {\n\t\t\tcase 'm':\n\t\t\t\tthis.lengthUnit = LengthUnits.METER;\n\t\t\t\tbreak;\n\t\t\tcase 'ft':\n\t\t\t\tthis.lengthUnit = LengthUnits.FEET;\n\t\t\t\tbreak;\n\t\t\tcase 'in':\n\t\t\t\tthis.lengthUnit = LengthUnits.INCH;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tswitch (lengthUnitDisplayValue) {\n\t\t\tcase 'm':\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.METER;\n\t\t\t\tbreak;\n\t\t\tcase 'ft':\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.FEET;\n\t\t\t\tbreak;\n\t\t\tcase 'in':\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.INCH;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.dispatchEvent({ 'type': 'length_unit_changed', 'viewer': this, value: lengthUnitValue });\n\t};\n\n\tzoomTo(node, factor, animationDuration = 0){\n\t\tlet view = this.scene.view;\n\n\t\tlet camera = this.scene.cameraP.clone();\n\t\tcamera.rotation.copy(this.scene.cameraP.rotation);\n\t\tcamera.rotation.order = \"ZXY\";\n\t\tcamera.rotation.x = Math.PI / 2 + view.pitch;\n\t\tcamera.rotation.z = view.yaw;\n\t\tcamera.updateMatrix();\n\t\tcamera.updateMatrixWorld();\n\t\tcamera.zoomTo(node, factor);\n\n\t\tlet bs;\n\t\tif (node.boundingSphere) {\n\t\t\tbs = node.boundingSphere;\n\t\t} else if (node.geometry && node.geometry.boundingSphere) {\n\t\t\tbs = node.geometry.boundingSphere;\n\t\t} else {\n\t\t\tbs = node.boundingBox.getBoundingSphere(new THREE.Sphere());\n\t\t}\n\t\tbs = bs.clone().applyMatrix4(node.matrixWorld); \n\n\t\tlet startPosition = view.position.clone();\n\t\tlet endPosition = camera.position.clone();\n\t\tlet startTarget = view.getPivot();\n\t\tlet endTarget = bs.center;\n\t\tlet startRadius = view.radius;\n\t\tlet endRadius = endPosition.distanceTo(endTarget);\n\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\n\n\t\t{ // animate camera position\n\t\t\tlet pos = startPosition.clone();\n\t\t\tlet tween = new TWEEN.Tween(pos).to(endPosition, animationDuration);\n\t\t\ttween.easing(easing);\n\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tview.position.copy(pos);\n\t\t\t});\n\n\t\t\ttween.start();\n\t\t}\n\n\t\t{ // animate camera target\n\t\t\tlet target = startTarget.clone();\n\t\t\tlet tween = new TWEEN.Tween(target).to(endTarget, animationDuration);\n\t\t\ttween.easing(easing);\n\t\t\ttween.onUpdate(() => {\n\t\t\t\tview.lookAt(target);\n\t\t\t});\n\t\t\ttween.onComplete(() => {\n\t\t\t\tview.lookAt(target);\n\t\t\t\tthis.dispatchEvent({type: 'focusing_finished', target: this});\n\t\t\t});\n\n\t\t\tthis.dispatchEvent({type: 'focusing_started', target: this});\n\t\t\ttween.start();\n\t\t}\n\t};\n\n\tmoveToGpsTimeVicinity(time){\n\t\tconst result = Potree.Utils.findClosestGpsTime(time, viewer);\n\n\t\tconst box = result.node.pointcloud.deepestNodeAt(result.position).getBoundingBox();\n\t\tconst diameter = box.min.distanceTo(box.max);\n\n\t\tconst camera = this.scene.getActiveCamera();\n\t\tconst offset = camera.getWorldDirection(new THREE.Vector3()).multiplyScalar(diameter);\n\t\tconst newCamPos = result.position.clone().sub(offset);\n\n\t\tthis.scene.view.position.copy(newCamPos);\n\t\tthis.scene.view.lookAt(result.position);\n\t}\n\n\tshowAbout () {\n\t\t$(function () {\n\t\t\t$('#about-panel').dialog();\n\t\t});\n\t};\n\n\tgetBoundingBox (pointclouds) {\n\t\treturn this.scene.getBoundingBox(pointclouds);\n\t};\n\n\tgetGpsTimeExtent(){\n\t\tconst range = [Infinity, -Infinity];\n\n\t\tfor(const pointcloud of this.scene.pointclouds){\n\t\t\tconst attributes = pointcloud.pcoGeometry.pointAttributes.attributes;\n\t\t\tconst aGpsTime = attributes.find(a => a.name === \"gps-time\");\n\n\t\t\tif(aGpsTime){\n\t\t\t\trange[0] = Math.min(range[0], aGpsTime.range[0]);\n\t\t\t\trange[1] = Math.max(range[1], aGpsTime.range[1]);\n\t\t\t}\n\t\t}\n\n\t\treturn range;\n\t}\n\n\tfitToScreen (factor = 1, animationDuration = 0) {\n\t\tlet box = this.getBoundingBox(this.scene.pointclouds);\n\n\t\tlet node = new THREE.Object3D();\n\t\tnode.boundingBox = box;\n\n\t\tthis.zoomTo(node, factor, animationDuration);\n\t\tthis.controls.stop();\n\t};\n\n\ttoggleNavigationCube() {\n\t\tthis.navigationCube.visible = !this.navigationCube.visible;\n\t}\n\n\tsetView(view) {\n\t\tif(!view) return;\n\n\t\tswitch(view) {\n\t\t\tcase \"F\":\n\t\t\t\tthis.setFrontView();\n\t\t\t\tbreak;\n\t\t\tcase \"B\":\n\t\t\t\tthis.setBackView();\n\t\t\t\tbreak;\n\t\t\tcase \"L\":\n\t\t\t\tthis.setLeftView();\n\t\t\t\tbreak;\n\t\t\tcase \"R\":\n\t\t\t\tthis.setRightView();\n\t\t\t\tbreak;\n\t\t\tcase \"U\":\n\t\t\t\tthis.setTopView();\n\t\t\t\tbreak;\n\t\t\tcase \"D\":\n\t\t\t\tthis.setBottomView();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t\n\tsetTopView(){\n\t\tthis.scene.view.yaw = 0;\n\t\tthis.scene.view.pitch = -Math.PI / 2;\n\n\t\tthis.fitToScreen();\n\t};\n\t\n\tsetBottomView(){\n\t\tthis.scene.view.yaw = -Math.PI;\n\t\tthis.scene.view.pitch = Math.PI / 2;\n\t\t\n\t\tthis.fitToScreen();\n\t};\n\n\tsetFrontView(){\n\t\tthis.scene.view.yaw = 0;\n\t\tthis.scene.view.pitch = 0;\n\n\t\tthis.fitToScreen();\n\t};\n\t\n\tsetBackView(){\n\t\tthis.scene.view.yaw = Math.PI;\n\t\tthis.scene.view.pitch = 0;\n\t\t\n\t\tthis.fitToScreen();\n\t};\n\n\tsetLeftView(){\n\t\tthis.scene.view.yaw = -Math.PI / 2;\n\t\tthis.scene.view.pitch = 0;\n\n\t\tthis.fitToScreen();\n\t};\n\n\tsetRightView () {\n\t\tthis.scene.view.yaw = Math.PI / 2;\n\t\tthis.scene.view.pitch = 0;\n\n\t\tthis.fitToScreen();\n\t};\n\n\tflipYZ () {\n\t\tthis.isFlipYZ = !this.isFlipYZ;\n\n\t\t// TODO flipyz\n\t\tconsole.log('TODO');\n\t}\n\t\n\tsetCameraMode(mode){\n\t\tthis.scene.cameraMode = mode;\n\n\t\tfor(let pointcloud of this.scene.pointclouds) {\n\t\t\tpointcloud.material.useOrthographicCamera = mode == CameraMode.ORTHOGRAPHIC;\n\t\t}\n\t}\n\n\tgetProjection(){\n\t\tconst pointcloud = this.scene.pointclouds[0];\n\n\t\tif(pointcloud){\n\t\t\treturn pointcloud.projection;\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync loadProject(url){\n\n\t\tconst response = await fetch(url);\n\t\n\t\tconst text = await response.text();\n\t\tconst json = JSON5.parse(text);\n\t\t// const json = JSON.parse(text);\n\n\t\tif(json.type === \"Potree\"){\n\t\t\tPotree.loadProject(viewer, json);\n\t\t}\n\n\t\t//Potree.loadProject(this, url);\n\t}\n\n\tsaveProject(){\n\t\treturn Potree.saveProject(this);\n\t}\n\t\n\tloadSettingsFromURL(){\n\t\tif(Utils.getParameterByName(\"pointSize\")){\n\t\t\tthis.setPointSize(parseFloat(Utils.getParameterByName(\"pointSize\")));\n\t\t}\n\t\t\n\t\tif(Utils.getParameterByName(\"FOV\")){\n\t\t\tthis.setFOV(parseFloat(Utils.getParameterByName(\"FOV\")));\n\t\t}\n\t\t\n\t\tif(Utils.getParameterByName(\"opacity\")){\n\t\t\tthis.setOpacity(parseFloat(Utils.getParameterByName(\"opacity\")));\n\t\t}\n\t\t\n\t\tif(Utils.getParameterByName(\"edlEnabled\")){\n\t\t\tlet enabled = Utils.getParameterByName(\"edlEnabled\") === \"true\";\n\t\t\tthis.setEDLEnabled(enabled);\n\t\t}\n\n\t\tif (Utils.getParameterByName('edlRadius')) {\n\t\t\tthis.setEDLRadius(parseFloat(Utils.getParameterByName('edlRadius')));\n\t\t}\n\n\t\tif (Utils.getParameterByName('edlStrength')) {\n\t\t\tthis.setEDLStrength(parseFloat(Utils.getParameterByName('edlStrength')));\n\t\t}\n\n\t\tif (Utils.getParameterByName('pointBudget')) {\n\t\t\tthis.setPointBudget(parseFloat(Utils.getParameterByName('pointBudget')));\n\t\t}\n\n\t\tif (Utils.getParameterByName('showBoundingBox')) {\n\t\t\tlet enabled = Utils.getParameterByName('showBoundingBox') === 'true';\n\t\t\tif (enabled) {\n\t\t\t\tthis.setShowBoundingBox(true);\n\t\t\t} else {\n\t\t\t\tthis.setShowBoundingBox(false);\n\t\t\t}\n\t\t}\n\n\t\tif (Utils.getParameterByName('material')) {\n\t\t\tlet material = Utils.getParameterByName('material');\n\t\t\tthis.setMaterial(material);\n\t\t}\n\n\t\tif (Utils.getParameterByName('pointSizing')) {\n\t\t\tlet sizing = Utils.getParameterByName('pointSizing');\n\t\t\tthis.setPointSizing(sizing);\n\t\t}\n\n\t\tif (Utils.getParameterByName('quality')) {\n\t\t\tlet quality = Utils.getParameterByName('quality');\n\t\t\tthis.setQuality(quality);\n\t\t}\n\n\t\tif (Utils.getParameterByName('position')) {\n\t\t\tlet value = Utils.getParameterByName('position');\n\t\t\tvalue = value.replace('[', '').replace(']', '');\n\t\t\tlet tokens = value.split(';');\n\t\t\tlet x = parseFloat(tokens[0]);\n\t\t\tlet y = parseFloat(tokens[1]);\n\t\t\tlet z = parseFloat(tokens[2]);\n\n\t\t\tthis.scene.view.position.set(x, y, z);\n\t\t}\n\n\t\tif (Utils.getParameterByName('target')) {\n\t\t\tlet value = Utils.getParameterByName('target');\n\t\t\tvalue = value.replace('[', '').replace(']', '');\n\t\t\tlet tokens = value.split(';');\n\t\t\tlet x = parseFloat(tokens[0]);\n\t\t\tlet y = parseFloat(tokens[1]);\n\t\t\tlet z = parseFloat(tokens[2]);\n\n\t\t\tthis.scene.view.lookAt(new THREE.Vector3(x, y, z));\n\t\t}\n\n\t\tif (Utils.getParameterByName('background')) {\n\t\t\tlet value = Utils.getParameterByName('background');\n\t\t\tthis.setBackground(value);\n\t\t}\n\n\t\t// if(Utils.getParameterByName(\"elevationRange\")){\n\t\t//\tlet value = Utils.getParameterByName(\"elevationRange\");\n\t\t//\tvalue = value.replace(\"[\", \"\").replace(\"]\", \"\");\n\t\t//\tlet tokens = value.split(\";\");\n\t\t//\tlet x = parseFloat(tokens[0]);\n\t\t//\tlet y = parseFloat(tokens[1]);\n\t\t//\n\t\t//\tthis.setElevationRange(x, y);\n\t\t//\t//this.scene.view.target.set(x, y, z);\n\t\t// }\n\t};\n\n\t// ------------------------------------------------------------------------------------\n\t// Viewer Internals\n\t// ------------------------------------------------------------------------------------\n\n\tcreateControls () {\n\t\t{ // create FIRST PERSON CONTROLS\n\t\t\tthis.fpControls = new FirstPersonControls(this);\n\t\t\tthis.fpControls.enabled = false;\n\t\t\tthis.fpControls.addEventListener('start', this.disableAnnotations.bind(this));\n\t\t\tthis.fpControls.addEventListener('end', this.enableAnnotations.bind(this));\n\t\t}\n\n\t\t// { // create GEO CONTROLS\n\t\t//\tthis.geoControls = new GeoControls(this.scene.camera, this.renderer.domElement);\n\t\t//\tthis.geoControls.enabled = false;\n\t\t//\tthis.geoControls.addEventListener(\"start\", this.disableAnnotations.bind(this));\n\t\t//\tthis.geoControls.addEventListener(\"end\", this.enableAnnotations.bind(this));\n\t\t//\tthis.geoControls.addEventListener(\"move_speed_changed\", (event) => {\n\t\t//\t\tthis.setMoveSpeed(this.geoControls.moveSpeed);\n\t\t//\t});\n\t\t// }\n\n\t\t{ // create ORBIT CONTROLS\n\t\t\tthis.orbitControls = new OrbitControls(this);\n\t\t\tthis.orbitControls.enabled = false;\n\t\t\tthis.orbitControls.addEventListener('start', this.disableAnnotations.bind(this));\n\t\t\tthis.orbitControls.addEventListener('end', this.enableAnnotations.bind(this));\n\t\t}\n\n\t\t{ // create EARTH CONTROLS\n\t\t\tthis.earthControls = new EarthControls(this);\n\t\t\tthis.earthControls.enabled = false;\n\t\t\tthis.earthControls.addEventListener('start', this.disableAnnotations.bind(this));\n\t\t\tthis.earthControls.addEventListener('end', this.enableAnnotations.bind(this));\n\t\t}\n\n\t\t{ // create DEVICE ORIENTATION CONTROLS\n\t\t\tthis.deviceControls = new DeviceOrientationControls(this);\n\t\t\tthis.deviceControls.enabled = false;\n\t\t\tthis.deviceControls.addEventListener('start', this.disableAnnotations.bind(this));\n\t\t\tthis.deviceControls.addEventListener('end', this.enableAnnotations.bind(this));\n\t\t}\n\t};\n\n\ttoggleSidebar () {\n\t\tlet renderArea = $('#potree_render_area');\n\t\tlet isVisible = renderArea.css('left') !== '0px';\n\n\t\tif (isVisible) {\n\t\t\trenderArea.css('left', '0px');\n\t\t} else {\n\t\t\trenderArea.css('left', '300px');\n\t\t}\n\t};\n\n\ttoggleMap () {\n\t\t// let map = $('#potree_map');\n\t\t// map.toggle(100);\n\n\t\tif (this.mapView) {\n\t\t\tthis.mapView.toggle();\n\t\t}\n\t};\n\n\tonGUILoaded(callback){\n\t\tif(this.guiLoaded){\n\t\t\tcallback();\n\t\t}else{\n\t\t\tthis.guiLoadTasks.push(callback);\n\t\t}\n\t}\n\n\tpromiseGuiLoaded(){\n\t\treturn new Promise( resolve => {\n\n\t\t\tif(this.guiLoaded){\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tthis.guiLoadTasks.push(resolve);\n\t\t\t}\n\t\t\n\t\t});\n\t}\n\n\tloadGUI(callback){\n\n\t\tif(callback){\n\t\t\tthis.onGUILoaded(callback);\n\t\t}\n\n\t\tlet viewer = this;\n\t\tlet sidebarContainer = $('#potree_sidebar_container');\n\t\tsidebarContainer.load(new URL(Potree.scriptPath + '/sidebar.html').href, () => {\n\t\t\tsidebarContainer.css('width', '300px');\n\t\t\tsidebarContainer.css('height', '100%');\n\n\t\t\tlet imgMenuToggle = document.createElement('img');\n\t\t\timgMenuToggle.src = new URL(Potree.resourcePath + '/icons/menu_button.svg').href;\n\t\t\timgMenuToggle.onclick = this.toggleSidebar;\n\t\t\timgMenuToggle.classList.add('potree_menu_toggle');\n\n\t\t\tlet imgMapToggle = document.createElement('img');\n\t\t\timgMapToggle.src = new URL(Potree.resourcePath + '/icons/map_icon.png').href;\n\t\t\timgMapToggle.style.display = 'none';\n\t\t\timgMapToggle.onclick = e => { this.toggleMap(); };\n\t\t\timgMapToggle.id = 'potree_map_toggle';\n\n\t\t\tviewer.renderArea.insertBefore(imgMapToggle, viewer.renderArea.children[0]);\n\t\t\tviewer.renderArea.insertBefore(imgMenuToggle, viewer.renderArea.children[0]);\n\n\t\t\tthis.mapView = new MapView(this);\n\t\t\tthis.mapView.init();\n\n\t\t\ti18n.init({\n\t\t\t\tlng: 'en',\n\t\t\t\tresGetPath: Potree.resourcePath + '/lang/__lng__/__ns__.json',\n\t\t\t\tpreload: ['en', 'fr', 'de', 'jp', 'se', 'es'],\n\t\t\t\tgetAsync: true,\n\t\t\t\tdebug: false\n\t\t\t}, function (t) {\n\t\t\t\t// Start translation once everything is loaded\n\t\t\t\t$('body').i18n();\n\t\t\t});\n\n\t\t\t$(() => {\n\t\t\t\t//initSidebar(this);\n\t\t\t\tlet sidebar = new Sidebar(this);\n\t\t\t\tsidebar.init();\n\n\t\t\t\tthis.sidebar = sidebar;\n\n\t\t\t\t//if (callback) {\n\t\t\t\t//\t$(callback);\n\t\t\t\t//}\n\n\t\t\t\tlet elProfile = $('
        ').load(new URL(Potree.scriptPath + '/profile.html').href, () => {\n\t\t\t\t\t$(document.body).append(elProfile.children());\n\t\t\t\t\tthis.profileWindow = new ProfileWindow(this);\n\t\t\t\t\tthis.profileWindowController = new ProfileWindowController(this);\n\n\t\t\t\t\t$('#profile_window').draggable({\n\t\t\t\t\t\thandle: $('#profile_titlebar'),\n\t\t\t\t\t\tcontainment: $(document.body)\n\t\t\t\t\t});\n\t\t\t\t\t$('#profile_window').resizable({\n\t\t\t\t\t\tcontainment: $(document.body),\n\t\t\t\t\t\thandles: 'n, e, s, w'\n\t\t\t\t\t});\n\n\t\t\t\t\t$(() => {\n\t\t\t\t\t\tthis.guiLoaded = true;\n\t\t\t\t\t\tfor(let task of this.guiLoadTasks){\n\t\t\t\t\t\t\ttask();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t\n\n\t\t\t});\n\n\t\t\t\n\t\t});\n\n\t\treturn this.promiseGuiLoaded();\n\t}\n\n\tsetLanguage (lang) {\n\t\ti18n.setLng(lang);\n\t\t$('body').i18n();\n\t}\n\n\tsetServer (server) {\n\t\tthis.server = server;\n\t}\n\n\tinitDragAndDrop(){\n\t\tfunction allowDrag(e) {\n\t\t\te.dataTransfer.dropEffect = 'copy';\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tlet dropHandler = async (event) => {\n\t\t\tconsole.log(event);\n\t\t\tevent.preventDefault();\n\n\t\t\tfor(const item of event.dataTransfer.items){\n\t\t\t\tconsole.log(item);\n\n\t\t\t\tif(item.kind !== \"file\"){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst file = item.getAsFile();\n\n\t\t\t\tconst isJson = file.name.toLowerCase().endsWith(\".json\");\n\t\t\t\tconst isGeoPackage = file.name.toLowerCase().endsWith(\".gpkg\");\n\n\t\t\t\tif(isJson){\n\t\t\t\t\ttry{\n\n\t\t\t\t\t\tconst text = await file.text();\n\t\t\t\t\t\tconst json = JSON.parse(text);\n\n\t\t\t\t\t\tif(json.type === \"Potree\"){\n\t\t\t\t\t\t\tPotree.loadProject(viewer, json);\n\t\t\t\t\t\t}\n\t\t\t\t\t}catch(e){\n\t\t\t\t\t\tconsole.error(\"failed to parse the dropped file as JSON\");\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t}\n\t\t\t\t}else if(isGeoPackage){\n\t\t\t\t\tconst hasPointcloud = viewer.scene.pointclouds.length > 0;\n\n\t\t\t\t\tif(!hasPointcloud){\n\t\t\t\t\t\tlet msg = \"At least one point cloud is needed that specifies the \";\n\t\t\t\t\t\tmsg += \"coordinate reference system before loading vector data.\";\n\t\t\t\t\t\tconsole.error(msg);\n\t\t\t\t\t}else{\n\n\t\t\t\t\t\tproj4.defs(\"WGS84\", \"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs\");\n\t\t\t\t\t\tproj4.defs(\"pointcloud\", this.getProjection());\n\t\t\t\t\t\tlet transform = proj4(\"WGS84\", \"pointcloud\");\n\n\t\t\t\t\t\tconst buffer = await file.arrayBuffer();\n\n\t\t\t\t\t\tconst params = {\n\t\t\t\t\t\t\ttransform: transform,\n\t\t\t\t\t\t\tsource: file.name,\n\t\t\t\t\t\t};\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst geo = await Potree.GeoPackageLoader.loadBuffer(buffer, params);\n\t\t\t\t\t\tviewer.scene.addGeopackage(geo);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t};\n\n\n\t\t$(\"body\")[0].addEventListener(\"dragenter\", allowDrag);\n\t\t$(\"body\")[0].addEventListener(\"dragover\", allowDrag);\n\t\t$(\"body\")[0].addEventListener(\"drop\", dropHandler);\n\t}\n\n\tinitThree () {\n\n\t\tconsole.log(`initializing three.js ${THREE.REVISION}`);\n\n\t\tlet width = this.renderArea.clientWidth;\n\t\tlet height = this.renderArea.clientHeight;\n\n\t\tlet contextAttributes = {\n\t\t\talpha: true,\n\t\t\tdepth: true,\n\t\t\tstencil: false,\n\t\t\tantialias: false,\n\t\t\t//premultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: true,\n\t\t\tpowerPreference: \"high-performance\",\n\t\t};\n\n\t\t// let contextAttributes = {\n\t\t// \talpha: false,\n\t\t// \tpreserveDrawingBuffer: true,\n\t\t// };\n\n\t\t// let contextAttributes = {\n\t\t// \talpha: false,\n\t\t// \tpreserveDrawingBuffer: true,\n\t\t// };\n\n\t\tlet canvas = document.createElement(\"canvas\");\n\n\t\tlet context = canvas.getContext('webgl', contextAttributes );\n\n\t\tthis.renderer = new THREE.WebGLRenderer({\n\t\t\talpha: true, \n\t\t\tpremultipliedAlpha: false,\n\t\t\tcanvas: canvas,\n\t\t\tcontext: context});\n\t\tthis.renderer.sortObjects = false;\n\t\tthis.renderer.setSize(width, height);\n\t\tthis.renderer.autoClear = false;\n\t\tthis.renderArea.appendChild(this.renderer.domElement);\n\t\tthis.renderer.domElement.tabIndex = '2222';\n\t\tthis.renderer.domElement.style.position = 'absolute';\n\t\tthis.renderer.domElement.addEventListener('mousedown', () => {\n\t\t\tthis.renderer.domElement.focus();\n\t\t});\n\t\t//this.renderer.domElement.focus();\n\n\t\t// NOTE: If extension errors occur, pass the string into this.renderer.extensions.get(x) before enabling\n\t\t// enable frag_depth extension for the interpolation shader, if available\n\t\tlet gl = this.renderer.getContext();\n\t\tgl.getExtension('EXT_frag_depth');\n\t\tgl.getExtension('WEBGL_depth_texture');\n\t\tgl.getExtension('WEBGL_color_buffer_float'); \t// Enable explicitly for more portability, EXT_color_buffer_float is the proper name in WebGL 2\n\t\t\n\t\t//if(gl instanceof WebGLRenderingContext){\n\t\t\tlet extVAO = gl.getExtension('OES_vertex_array_object');\n\n\t\t\tif(!extVAO){\n\t\t\t\tthrow new Error(\"OES_vertex_array_object extension not supported\");\n\t\t\t}\n\n\t\t\tgl.createVertexArray = extVAO.createVertexArrayOES.bind(extVAO);\n\t\t\tgl.bindVertexArray = extVAO.bindVertexArrayOES.bind(extVAO);\n\t\t//}else if(gl instanceof WebGL2RenderingContext){\n\t\t//\tgl.getExtension(\"EXT_color_buffer_float\");\n\t\t//}\n\t\t\n\t}\n\n\tonVr(callback){\n\n\t\tif(this.vr){\n\t\t\tcallback();\n\t\t}else{\n\t\t\tthis.onVrListeners.push(callback);\n\t\t}\n\n\t}\n\n\tasync prepareVR(){\n\n\t\tif(!navigator.getVRDisplays){\n\t\t\tconsole.info(\"browser does not support WebVR\");\n\n\t\t\treturn false;\n\t\t}\n\n\t\ttry{\n\t\t\tlet frameData = new VRFrameData();\n\t\t\tlet displays = await navigator.getVRDisplays();\n\n\t\t\tif(displays.length == 0){\n\t\t\t\tconsole.info(\"no VR display found\");\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet display = displays[displays.length - 1];\n\t\t\tdisplay.depthNear = 0.1;\n\t\t\tdisplay.depthFar = 10000.0;\n\n\t\t\tif(!display.capabilities.canPresent){\n\t\t\t\t// Not sure why canPresent would ever be false?\n\t\t\t\tconsole.error(\"VR display canPresent === false\");\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.vr = {\n\t\t\t\tframeData: frameData,\n\t\t\t\tdisplay: display,\n\t\t\t\tnode: new THREE.Object3D(),\n\t\t\t};\n\n\t\t\tfor(const listener of this.onVrListeners){\n\t\t\t\tlistener();\n\t\t\t}\n\t\t}catch(err){\n\t\t\tconsole.error(err);\n\n\t\t\treturn false;\n\t\t}\n\t\t\n\t}\n\n\tupdateAnnotations () {\n\n\t\tif(!this.visibleAnnotations){\n\t\t\tthis.visibleAnnotations = new Set();\n\t\t}\n\n\t\tthis.scene.annotations.updateBounds();\n\t\tthis.scene.cameraP.updateMatrixWorld();\n\t\tthis.scene.cameraO.updateMatrixWorld();\n\t\t\n\t\tlet distances = [];\n\n\t\tlet renderAreaSize = this.renderer.getSize(new THREE.Vector2());\n\n\t\tlet viewer = this;\n\n\t\tlet visibleNow = [];\n\t\tthis.scene.annotations.traverse(annotation => {\n\n\t\t\tif (annotation === this.scene.annotations) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (!annotation.visible) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tannotation.scene = this.scene;\n\n\t\t\tlet element = annotation.domElement;\n\n\t\t\tlet position = annotation.position.clone();\n\t\t\tposition.add(annotation.offset);\n\t\t\tif (!position) {\n\t\t\t\tposition = annotation.boundingBox.getCenter(new THREE.Vector3());\n\t\t\t}\n\n\t\t\tlet distance = viewer.scene.cameraP.position.distanceTo(position);\n\t\t\tlet radius = annotation.boundingBox.getBoundingSphere(new THREE.Sphere()).radius;\n\n\t\t\tlet screenPos = new THREE.Vector3();\n\t\t\tlet screenSize = 0;\n\n\t\t\t{\n\t\t\t\t// SCREEN POS\n\t\t\t\tscreenPos.copy(position).project(this.scene.getActiveCamera());\n\t\t\t\tscreenPos.x = renderAreaSize.x * (screenPos.x + 1) / 2;\n\t\t\t\tscreenPos.y = renderAreaSize.y * (1 - (screenPos.y + 1) / 2);\n\n\n\t\t\t\t// SCREEN SIZE\n\t\t\t\tif(viewer.scene.cameraMode == CameraMode.PERSPECTIVE) {\n\t\t\t\t\tlet fov = Math.PI * viewer.scene.cameraP.fov / 180;\n\t\t\t\t\tlet slope = Math.tan(fov / 2.0);\n\t\t\t\t\tlet projFactor = 0.5 * renderAreaSize.y / (slope * distance);\n\t\t\t\t\tscreenSize = radius * projFactor;\n\t\t\t\t} else {\n\t\t\t\t\tscreenSize = Utils.projectedRadiusOrtho(radius, viewer.scene.cameraO.projectionMatrix, renderAreaSize.x, renderAreaSize.y);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telement.css(\"left\", screenPos.x + \"px\");\n\t\t\telement.css(\"top\", screenPos.y + \"px\");\n\t\t\t//element.css(\"display\", \"block\");\n\n\t\t\tlet zIndex = 10000000 - distance * (10000000 / this.scene.cameraP.far);\n\t\t\tif(annotation.descriptionVisible){\n\t\t\t\tzIndex += 10000000;\n\t\t\t}\n\t\t\telement.css(\"z-index\", parseInt(zIndex));\n\n\t\t\tif(annotation.children.length > 0){\n\t\t\t\tlet expand = screenSize > annotation.collapseThreshold || annotation.boundingBox.containsPoint(this.scene.getActiveCamera().position);\n\t\t\t\tannotation.expand = expand;\n\n\t\t\t\tif (!expand) {\n\t\t\t\t\t//annotation.display = (screenPos.z >= -1 && screenPos.z <= 1);\n\t\t\t\t\tlet inFrustum = (screenPos.z >= -1 && screenPos.z <= 1);\n\t\t\t\t\tif(inFrustum){\n\t\t\t\t\t\tvisibleNow.push(annotation);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn expand;\n\t\t\t} else {\n\t\t\t\t//annotation.display = (screenPos.z >= -1 && screenPos.z <= 1);\n\t\t\t\tlet inFrustum = (screenPos.z >= -1 && screenPos.z <= 1);\n\t\t\t\tif(inFrustum){\n\t\t\t\t\tvisibleNow.push(annotation);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t});\n\n\t\tlet notVisibleAnymore = new Set(this.visibleAnnotations);\n\t\tfor(let annotation of visibleNow){\n\t\t\tannotation.display = true;\n\t\t\t\n\t\t\tnotVisibleAnymore.delete(annotation);\n\t\t}\n\t\tthis.visibleAnnotations = visibleNow;\n\n\t\tfor(let annotation of notVisibleAnymore){\n\t\t\tannotation.display = false;\n\t\t}\n\n\t}\n\n\tupdateMaterialDefaults(pointcloud){\n\t\t// PROBLEM STATEMENT:\n\t\t// * [min, max] of intensity, source id, etc. are computed as point clouds are loaded\n\t\t// * the point cloud material won't know the range it should use until some data is loaded\n\t\t// * users can modify the range at runtime, but sensible default ranges should be \n\t\t// applied even if no GUI is present\n\t\t// * display ranges shouldn't suddenly change even if the actual range changes over time.\n\t\t// e.g. the root node has intensity range [1, 478]. One of the descendants increases range to \n\t\t// [0, 2047]. We should not automatically change to the new range because that would result\n\t\t// in sudden and drastic changes of brightness. We should adjust the min/max of the sidebar slider.\n\n\t\tconst material = pointcloud.material;\n\n\t\t// const attIntensity = pointcloud.getAttribute(\"intensity\");\n\t\t// if(attIntensity && material.intensityRange[0] === Infinity){\n\t\t// \tmaterial.intensityRange = [...attIntensity.range];\n\t\t// }\n\n\t\t// let attributes = pointcloud.getAttributes();\n\n\t\t// for(let attribute of attributes.attributes){\n\t\t// \tif(attribute.range){\n\t\t// \t\tlet range = [...attribute.range];\n\t\t// \t\tmaterial.computedRange.set(attribute.name, range);\n\t\t// \t\t//material.setRange(attribute.name, range);\n\t\t// \t}\n\t\t// }\n\n\n\t}\n\n\tupdate(delta, timestamp){\n\n\t\tif(Potree.measureTimings) performance.mark(\"update-start\");\n\n\t\t\n\t\tconst scene = this.scene;\n\t\tconst camera = scene.getActiveCamera();\n\t\tconst visiblePointClouds = this.scene.pointclouds.filter(pc => pc.visible)\n\t\t\n\t\tPotree.pointLoadLimit = Potree.pointBudget * 2;\n\n\t\tconst lTarget = camera.position.clone().add(camera.getWorldDirection(new THREE.Vector3()).multiplyScalar(1000));\n\t\tthis.scene.directionalLight.position.copy(camera.position);\n\t\tthis.scene.directionalLight.lookAt(lTarget);\n\n\n\t\tfor (let pointcloud of visiblePointClouds) {\n\n\t\t\tpointcloud.showBoundingBox = this.showBoundingBox;\n\t\t\tpointcloud.generateDEM = this.generateDEM;\n\t\t\tpointcloud.minimumNodePixelSize = this.minNodeSize;\n\n\t\t\tlet material = pointcloud.material;\n\n\t\t\tmaterial.uniforms.uFilterReturnNumberRange.value = this.filterReturnNumberRange;\n\t\t\tmaterial.uniforms.uFilterNumberOfReturnsRange.value = this.filterNumberOfReturnsRange;\n\t\t\tmaterial.uniforms.uFilterGPSTimeClipRange.value = this.filterGPSTimeRange;\n\t\t\tmaterial.uniforms.uFilterPointSourceIDClipRange.value = this.filterPointSourceIDRange;\n\n\t\t\tmaterial.classification = this.classifications;\n\t\t\tmaterial.recomputeClassification();\n\n\t\t\tthis.updateMaterialDefaults(pointcloud);\n\t\t}\n\n\t\t{\n\t\t\tif(this.showBoundingBox){\n\t\t\t\tlet bbRoot = this.scene.scene.getObjectByName(\"potree_bounding_box_root\");\n\t\t\t\tif(!bbRoot){\n\t\t\t\t\tlet node = new THREE.Object3D();\n\t\t\t\t\tnode.name = \"potree_bounding_box_root\";\n\t\t\t\t\tthis.scene.scene.add(node);\n\t\t\t\t\tbbRoot = node;\n\t\t\t\t}\n\n\t\t\t\tlet visibleBoxes = [];\n\t\t\t\tfor(let pointcloud of this.scene.pointclouds){\n\t\t\t\t\tfor(let node of pointcloud.visibleNodes.filter(vn => vn.boundingBoxNode !== undefined)){\n\t\t\t\t\t\tlet box = node.boundingBoxNode;\n\t\t\t\t\t\tvisibleBoxes.push(box);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbbRoot.children = visibleBoxes;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.freeze) {\n\t\t\tlet result = Potree.updatePointClouds(scene.pointclouds, camera, this.renderer);\n\n\n\t\t\t// DEBUG - ONLY DISPLAY NODES THAT INTERSECT MOUSE\n\t\t\t//if(false){ \n\n\t\t\t//\tlet renderer = viewer.renderer;\n\t\t\t//\tlet mouse = viewer.inputHandler.mouse;\n\n\t\t\t//\tlet nmouse = {\n\t\t\t//\t\tx: (mouse.x / renderer.domElement.clientWidth) * 2 - 1,\n\t\t\t//\t\ty: -(mouse.y / renderer.domElement.clientHeight) * 2 + 1\n\t\t\t//\t};\n\n\t\t\t//\tlet pickParams = {};\n\n\t\t\t//\t//if(params.pickClipped){\n\t\t\t//\t//\tpickParams.pickClipped = params.pickClipped;\n\t\t\t//\t//}\n\n\t\t\t//\tpickParams.x = mouse.x;\n\t\t\t//\tpickParams.y = renderer.domElement.clientHeight - mouse.y;\n\n\t\t\t//\tlet raycaster = new THREE.Raycaster();\n\t\t\t//\traycaster.setFromCamera(nmouse, camera);\n\t\t\t//\tlet ray = raycaster.ray;\n\n\t\t\t//\tfor(let pointcloud of scene.pointclouds){\n\t\t\t//\t\tlet nodes = pointcloud.nodesOnRay(pointcloud.visibleNodes, ray);\n\t\t\t//\t\tpointcloud.visibleNodes = nodes;\n\n\t\t\t//\t}\n\t\t\t//}\n\n\t\t\t// const tStart = performance.now();\n\t\t\t// const worldPos = new THREE.Vector3();\n\t\t\t// const camPos = viewer.scene.getActiveCamera().getWorldPosition(new THREE.Vector3());\n\t\t\t// let lowestDistance = Infinity;\n\t\t\t// let numNodes = 0;\n\n\t\t\t// viewer.scene.scene.traverse(node => {\n\t\t\t// \tnode.getWorldPosition(worldPos);\n\n\t\t\t// \tconst distance = worldPos.distanceTo(camPos);\n\n\t\t\t// \tlowestDistance = Math.min(lowestDistance, distance);\n\n\t\t\t// \tnumNodes++;\n\n\t\t\t// \tif(Number.isNaN(distance)){\n\t\t\t// \t\tconsole.error(\":(\");\n\t\t\t// \t}\n\t\t\t// });\n\t\t\t// const duration = (performance.now() - tStart).toFixed(2);\n\n\t\t\t// Potree.debug.computeNearDuration = duration;\n\t\t\t// Potree.debug.numNodes = numNodes;\n\n\t\t\t//console.log(lowestDistance.toString(2), duration);\n\n\t\t\tconst tStart = performance.now();\n\t\t\tconst campos = camera.position;\n\t\t\tlet closestImage = Infinity;\n\t\t\tfor(const images of this.scene.orientedImages){\n\t\t\t\tfor(const image of images.images){\n\t\t\t\t\tconst distance = image.mesh.position.distanceTo(campos);\n\n\t\t\t\t\tclosestImage = Math.min(closestImage, distance);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst tEnd = performance.now();\n\n\t\t\tif(result.lowestSpacing !== Infinity){\n\t\t\t\tlet near = result.lowestSpacing * 10.0;\n\t\t\t\tlet far = -this.getBoundingBox().applyMatrix4(camera.matrixWorldInverse).min.z;\n\n\t\t\t\tfar = Math.max(far * 1.5, 10000);\n\t\t\t\tnear = Math.min(100.0, Math.max(0.01, near));\n\t\t\t\tnear = Math.min(near, closestImage);\n\t\t\t\tfar = Math.max(far, near + 10000);\n\n\t\t\t\tif(near === Infinity){\n\t\t\t\t\tnear = 0.1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcamera.near = near;\n\t\t\t\tcamera.far = far;\n\t\t\t}else{\n\t\t\t\t// don't change near and far in this case\n\t\t\t}\n\n\t\t\tif(this.scene.cameraMode == CameraMode.ORTHOGRAPHIC) {\n\t\t\t\tcamera.near = -camera.far;\n\t\t\t}\n\t\t} \n\t\t\n\t\tthis.scene.cameraP.fov = this.fov;\n\t\t\n\t\tif (this.getControls() === this.deviceControls) {\n\t\t\tthis.controls.setScene(scene);\n\t\t\tthis.controls.update(delta);\n\n\t\t\tthis.scene.cameraP.position.copy(scene.view.position);\n\t\t\tthis.scene.cameraO.position.copy(scene.view.position);\n\t\t} else if (this.controls !== null) {\n\t\t\tthis.controls.setScene(scene);\n\t\t\tthis.controls.update(delta);\n\n\t\t\tif(typeof debugDisabled === \"undefined\" ){\n\t\t\t\tthis.scene.cameraP.position.copy(scene.view.position);\n\t\t\t\tthis.scene.cameraP.rotation.order = \"ZXY\";\n\t\t\t\tthis.scene.cameraP.rotation.x = Math.PI / 2 + this.scene.view.pitch;\n\t\t\t\tthis.scene.cameraP.rotation.z = this.scene.view.yaw;\n\t\t\t}\n\n\t\t\tthis.scene.cameraO.position.copy(scene.view.position);\n\t\t\tthis.scene.cameraO.rotation.order = \"ZXY\";\n\t\t\tthis.scene.cameraO.rotation.x = Math.PI / 2 + this.scene.view.pitch;\n\t\t\tthis.scene.cameraO.rotation.z = this.scene.view.yaw;\n\t\t}\n\t\t\n\t\tcamera.updateMatrix();\n\t\tcamera.updateMatrixWorld();\n\t\tcamera.matrixWorldInverse.getInverse(camera.matrixWorld);\n\n\t\t{\n\t\t\tif(this._previousCamera === undefined){\n\t\t\t\tthis._previousCamera = this.scene.getActiveCamera().clone();\n\t\t\t\tthis._previousCamera.rotation.copy(this.scene.getActiveCamera());\n\t\t\t}\n\n\t\t\tif(!this._previousCamera.matrixWorld.equals(camera.matrixWorld)){\n\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\ttype: \"camera_changed\",\n\t\t\t\t\tprevious: this._previousCamera,\n\t\t\t\t\tcamera: camera\n\t\t\t\t});\n\t\t\t}else if(!this._previousCamera.projectionMatrix.equals(camera.projectionMatrix)){\n\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\ttype: \"camera_changed\",\n\t\t\t\t\tprevious: this._previousCamera,\n\t\t\t\t\tcamera: camera\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis._previousCamera = this.scene.getActiveCamera().clone();\n\t\t\tthis._previousCamera.rotation.copy(this.scene.getActiveCamera());\n\n\t\t}\n\n\t\t{ // update clip boxes\n\t\t\tlet boxes = [];\n\t\t\t\n\t\t\t// volumes with clipping enabled\n\t\t\t//boxes.push(...this.scene.volumes.filter(v => (v.clip)));\n\t\t\tboxes.push(...this.scene.volumes.filter(v => (v.clip && v instanceof BoxVolume)));\n\n\t\t\t// profile segments\n\t\t\tfor(let profile of this.scene.profiles){\n\t\t\t\tboxes.push(...profile.boxes);\n\t\t\t}\n\t\t\t\n\t\t\t// Needed for .getInverse(), pre-empt a determinant of 0, see #815 / #816\n\t\t\tlet degenerate = (box) => box.matrixWorld.determinant() !== 0;\n\t\t\t\n\t\t\tlet clipBoxes = boxes.filter(degenerate).map( box => {\n\t\t\t\tbox.updateMatrixWorld();\n\t\t\t\t\n\t\t\t\tlet boxInverse = new THREE.Matrix4().getInverse(box.matrixWorld);\n\t\t\t\tlet boxPosition = box.getWorldPosition(new THREE.Vector3());\n\n\t\t\t\treturn {box: box, inverse: boxInverse, position: boxPosition};\n\t\t\t});\n\n\t\t\tlet clipPolygons = this.scene.polygonClipVolumes.filter(vol => vol.initialized);\n\t\t\t\n\t\t\t// set clip volumes in material\n\t\t\tfor(let pointcloud of visiblePointClouds){\n\t\t\t\tpointcloud.material.setClipBoxes(clipBoxes);\n\t\t\t\tpointcloud.material.setClipPolygons(clipPolygons, this.clippingTool.maxPolygonVertices);\n\t\t\t\tpointcloud.material.clipTask = this.clipTask;\n\t\t\t\tpointcloud.material.clipMethod = this.clipMethod;\n\t\t\t}\n\t\t}\n\n\t\t{\n\t\t\tfor(let pointcloud of visiblePointClouds){\n\t\t\t\tpointcloud.material.elevationGradientRepeat = this.elevationGradientRepeat;\n\t\t\t}\n\t\t}\n\t\t\n\t\t{ // update navigation cube\n\t\t\tthis.navigationCube.update(camera.rotation);\n\t\t}\n\n\t\tthis.updateAnnotations();\n\t\t\n\t\tif(this.mapView){\n\t\t\tthis.mapView.update(delta);\n\t\t\tif(this.mapView.sceneProjection){\n\t\t\t\t$( \"#potree_map_toggle\" ).css(\"display\", \"block\");\n\t\t\t\t\n\t\t\t}\n\t\t}\n\n\t\tTWEEN.update(timestamp);\n\n\t\tthis.dispatchEvent({\n\t\t\ttype: 'update',\n\t\t\tdelta: delta,\n\t\t\ttimestamp: timestamp});\n\t\t\t\n\t\tif(Potree.measureTimings) {\n\t\t\tperformance.mark(\"update-end\");\n\t\t\tperformance.measure(\"update\", \"update-start\", \"update-end\");\n\t\t}\n\t}\n\t\n\trender(){\n\t\tif(Potree.measureTimings) performance.mark(\"render-start\");\n\n\t\ttry{\n\n\t\t\tlet pRenderer = null;\n\n\t\t\tif(this.useHQ){\n\t\t\t\tif (!this.hqRenderer) {\n\t\t\t\t\tthis.hqRenderer = new HQSplatRenderer(this);\n\t\t\t\t}\n\t\t\t\tthis.hqRenderer.useEDL = this.useEDL;\n\t\t\t\t//this.hqRenderer.render(this.renderer);\n\n\t\t\t\tpRenderer = this.hqRenderer;\n\t\t\t}else{\n\t\t\t\tif (this.useEDL && Features.SHADER_EDL.isSupported()) {\n\t\t\t\t\tif (!this.edlRenderer) {\n\t\t\t\t\t\tthis.edlRenderer = new EDLRenderer(this);\n\t\t\t\t\t}\n\t\t\t\t\t//this.edlRenderer.render(this.renderer);\n\t\t\t\t\tpRenderer = this.edlRenderer;\n\t\t\t\t} else {\n\t\t\t\t\tif (!this.potreeRenderer) {\n\t\t\t\t\t\tthis.potreeRenderer = new PotreeRenderer(this);\n\t\t\t\t\t}\n\t\t\t\t\t//this.potreeRenderer.render();\n\t\t\t\t\tpRenderer = this.potreeRenderer;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconst vr = this.vr;\n\t\t\tconst vrActive = (vr && vr.display.isPresenting);\n\n\t\t\tif(vrActive){\n\n\t\t\t\tconst {display, frameData} = vr;\n\n\t\t\t\tconst leftEye = display.getEyeParameters(\"left\");\n\t\t\t\tconst rightEye = display.getEyeParameters(\"right\");\n\n\t\t\t\tlet width = Math.max(leftEye.renderWidth, rightEye.renderWidth) * 2;\n\t\t\t\tlet height = Math.max(leftEye.renderHeight, rightEye.renderHeight);\n\n\t\t\t\t// width *= 0.5;\n\t\t\t\t// height *= 0.5;\n\n\t\t\t\tthis.renderer.setSize(width, height);\n\n\t\t\t\tpRenderer.clear();\n\n\t\t\t\t//const camera = new THREE.Camera();\n\t\t\t\tviewer.scene.cameraMode = CameraMode.VR;\n\t\t\t\tconst camera = viewer.scene.getActiveCamera();\n\t\t\t\t{\n\t\t\t\t\tcamera.near = display.depthNear;\n\t\t\t\t\tcamera.far = display.depthFar;\n\t\t\t\t\tcamera.projectionMatrix = new THREE.Matrix4();\n\t\t\t\t\tcamera.matrixWorldInverse = new THREE.Matrix4();\n\t\t\t\t\tcamera.matrixWorld = new THREE.Matrix4();\n\t\t\t\t\tcamera.updateProjectionMatrix = () => {};\n\t\t\t\t\tcamera.updateMatrixWorld = () => {};\n\t\t\t\t\tcamera.fov = 60;\n\t\t\t\t};\n\n\t\t\t\tconst flipWorld = new THREE.Matrix4().fromArray([\n\t\t\t\t\t1, 0, 0, 0, \n\t\t\t\t\t0, 0, 1, 0, \n\t\t\t\t\t0, -1, 0, 0,\n\t\t\t\t\t0, 0, 0, 1\n\t\t\t\t]);\n\t\t\t\tconst flipView = new THREE.Matrix4().getInverse(flipWorld);\n\n\t\t\t\tvr.node.updateMatrixWorld();\n\n\t\t\t\t{// LEFT\n\t\t\t\t\tcamera.projectionMatrix.fromArray(frameData.leftProjectionMatrix);\n\n\t\t\t\t\tconst leftView = new THREE.Matrix4().fromArray(frameData.leftViewMatrix);\n\t\t\t\t\tconst view = new THREE.Matrix4().multiplyMatrices(leftView, flipView);\n\t\t\t\t\tconst world = new THREE.Matrix4().getInverse(view);\n\n\t\t\t\t\t{\n\t\t\t\t\t\tconst tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world);\n\t\t\t\t\t\tworld.copy(tmp);\n\t\t\t\t\t\tview.getInverse(world);\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrixWorldInverse.copy(view);\n\t\t\t\t\tcamera.matrixWorld.copy(world);\n\n\t\t\t\t\tconst viewport = [0, 0, width / 2, height];\n\n\t\t\t\t\tthis.renderer.setViewport(...viewport);\n\t\t\t\t\tpRenderer.render({camera: camera, viewport: viewport});\n\t\t\t\t\t//this.renderer.render(this.overlay, this.overlayCamera);\n\t\t\t\t}\n\n\t\t\t\t{// RIGHT\n\t\t\t\t\n\t\t\t\t\tcamera.projectionMatrix.fromArray(frameData.rightProjectionMatrix);\n\n\t\t\t\t\tconst rightView = new THREE.Matrix4().fromArray(frameData.rightViewMatrix);\n\t\t\t\t\tconst view = new THREE.Matrix4().multiplyMatrices(rightView, flipView);\n\t\t\t\t\tconst world = new THREE.Matrix4().getInverse(view);\n\n\t\t\t\t\t{\n\t\t\t\t\t\tconst tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world);\n\t\t\t\t\t\tworld.copy(tmp);\n\t\t\t\t\t\tview.getInverse(world);\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrixWorldInverse.copy(view);\n\t\t\t\t\tcamera.matrixWorld.copy(world);\n\n\t\t\t\t\tconst viewport = [width / 2, 0, width / 2, height];\n\n\t\t\t\t\tthis.renderer.setViewport(...viewport);\n\t\t\t\t\tpRenderer.clearTargets();\n\t\t\t\t\tpRenderer.render({camera: camera, viewport: viewport, debug: 2});\n\t\t\t\t\t//this.renderer.render(this.overlay, this.overlayCamera);\n\t\t\t\t}\n\n\t\t\t\t{ // CENTER\n\n\t\t\t\t\t{ // central view matrix\n\t\t\t\t\t\t// TODO this can't be right...can it?\n\n\t\t\t\t\t\tconst left = frameData.leftViewMatrix;\n\t\t\t\t\t\tconst right = frameData.rightViewMatrix\n\n\t\t\t\t\t\tconst centerView = new THREE.Matrix4();\n\n\t\t\t\t\t\tfor(let i = 0; i < centerView.elements.length; i++){\n\t\t\t\t\t\t\tcenterView.elements[i] = (left[i] + right[i]) / 2;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst view = new THREE.Matrix4().multiplyMatrices(centerView, flipView);\n\t\t\t\t\t\tconst world = new THREE.Matrix4().getInverse(view);\n\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst tmp = new THREE.Matrix4().multiplyMatrices(vr.node.matrixWorld, world);\n\t\t\t\t\t\t\tworld.copy(tmp);\n\t\t\t\t\t\t\tview.getInverse(world);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcamera.matrixWorldInverse.copy(view);\n\t\t\t\t\t\tcamera.matrixWorld.copy(world);\n\t\t\t\t\t}\n\n\n\t\t\t\t\tcamera.fov = leftEye.fieldOfView.upDegrees;\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\t{ // resize\n\t\t\t\t\tconst width = this.scaleFactor * this.renderArea.clientWidth;\n\t\t\t\t\tconst height = this.scaleFactor * this.renderArea.clientHeight;\n\n\t\t\t\t\tthis.renderer.setSize(width, height);\n\t\t\t\t\tconst pixelRatio = this.renderer.getPixelRatio();\n\t\t\t\t\tconst aspect = width / height;\n\n\t\t\t\t\tconst scene = this.scene;\n\n\t\t\t\t\tscene.cameraP.aspect = aspect;\n\t\t\t\t\tscene.cameraP.updateProjectionMatrix();\n\n\t\t\t\t\tlet frustumScale = this.scene.view.radius;\n\t\t\t\t\tscene.cameraO.left = -frustumScale;\n\t\t\t\t\tscene.cameraO.right = frustumScale;\n\t\t\t\t\tscene.cameraO.top = frustumScale * 1 / aspect;\n\t\t\t\t\tscene.cameraO.bottom = -frustumScale * 1 / aspect;\n\t\t\t\t\tscene.cameraO.updateProjectionMatrix();\n\n\t\t\t\t\tscene.cameraScreenSpace.top = 1/aspect;\n\t\t\t\t\tscene.cameraScreenSpace.bottom = -1/aspect;\n\t\t\t\t\tscene.cameraScreenSpace.updateProjectionMatrix();\n\t\t\t\t}\n\n\t\t\t\tpRenderer.clear();\n\n\t\t\t\tpRenderer.render(this.renderer);\n\t\t\t\tthis.renderer.render(this.overlay, this.overlayCamera);\n\t\t\t}\n\n\t\t}catch(e){\n\t\t\tthis.onCrash(e);\n\t\t}\n\t\t\n\t\tif(Potree.measureTimings){\n\t\t\tperformance.mark(\"render-end\");\n\t\t\tperformance.measure(\"render\", \"render-start\", \"render-end\");\n\t\t}\n\t}\n\n\tresolveTimings(timestamp){\n\t\tif(Potree.measureTimings){\n\t\t\tif(!this.toggle){\n\t\t\t\tthis.toggle = timestamp;\n\t\t\t}\n\t\t\tlet duration = timestamp - this.toggle;\n\t\t\tif(duration > 1000.0){\n\t\t\t\n\t\t\t\tlet measures = performance.getEntriesByType(\"measure\");\n\t\t\t\t\n\t\t\t\tlet names = new Set();\n\t\t\t\tfor(let measure of measures){\n\t\t\t\t\tnames.add(measure.name);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlet groups = new Map();\n\t\t\t\tfor(let name of names){\n\t\t\t\t\tgroups.set(name, {\n\t\t\t\t\t\tmeasures: [],\n\t\t\t\t\t\tsum: 0,\n\t\t\t\t\t\tn: 0,\n\t\t\t\t\t\tmin: Infinity,\n\t\t\t\t\t\tmax: -Infinity\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(let measure of measures){\n\t\t\t\t\tlet group = groups.get(measure.name);\n\t\t\t\t\tgroup.measures.push(measure);\n\t\t\t\t\tgroup.sum += measure.duration;\n\t\t\t\t\tgroup.n++;\n\t\t\t\t\tgroup.min = Math.min(group.min, measure.duration);\n\t\t\t\t\tgroup.max = Math.max(group.max, measure.duration);\n\t\t\t\t}\n\n\t\t\t\tlet glQueries = Potree.resolveQueries(this.renderer.getContext());\n\t\t\t\tfor(let [key, value] of glQueries){\n\n\t\t\t\t\tlet group = {\n\t\t\t\t\t\tmeasures: value.map(v => {return {duration: v}}),\n\t\t\t\t\t\tsum: value.reduce( (a, i) => a + i, 0),\n\t\t\t\t\t\tn: value.length,\n\t\t\t\t\t\tmin: Math.min(...value),\n\t\t\t\t\t\tmax: Math.max(...value)\n\t\t\t\t\t};\n\n\t\t\t\t\tlet groupname = `[tq] ${key}`;\n\t\t\t\t\tgroups.set(groupname, group);\n\t\t\t\t\tnames.add(groupname);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor(let [name, group] of groups){\n\t\t\t\t\tgroup.mean = group.sum / group.n;\n\t\t\t\t\tgroup.measures.sort( (a, b) => a.duration - b.duration );\n\t\t\t\t\t\n\t\t\t\t\tif(group.n === 1){\n\t\t\t\t\t\tgroup.median = group.measures[0].duration;\n\t\t\t\t\t}else if(group.n > 1){\n\t\t\t\t\t\tgroup.median = group.measures[parseInt(group.n / 2)].duration;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlet cn = Array.from(names).reduce( (a, i) => Math.max(a, i.length), 0) + 5;\n\t\t\t\tlet cmin = 10;\n\t\t\t\tlet cmed = 10;\n\t\t\t\tlet cmax = 10;\n\t\t\t\tlet csam = 6;\n\t\t\t\t\n\t\t\t\tlet message = ` ${\"NAME\".padEnd(cn)} |` \n\t\t\t\t\t+ ` ${\"MIN\".padStart(cmin)} |`\n\t\t\t\t\t+ ` ${\"MEDIAN\".padStart(cmed)} |`\n\t\t\t\t\t+ ` ${\"MAX\".padStart(cmax)} |`\n\t\t\t\t\t+ ` ${\"SAMPLES\".padStart(csam)} \\n`;\n\t\t\t\tmessage += ` ${\"-\".repeat(message.length) }\\n`;\n\t\t\t\t\n\t\t\t\tnames = Array.from(names).sort();\n\t\t\t\tfor(let name of names){\n\t\t\t\t\tlet group = groups.get(name);\n\t\t\t\t\tlet min = group.min.toFixed(3);\n\t\t\t\t\tlet median = group.median.toFixed(3);\n\t\t\t\t\tlet max = group.max.toFixed(3);\n\t\t\t\t\tlet n = group.n;\n\t\t\t\t\t\n\t\t\t\t\tmessage += ` ${name.padEnd(cn)} |`\n\t\t\t\t\t\t+ ` ${min.padStart(cmin)} |`\n\t\t\t\t\t\t+ ` ${median.padStart(cmed)} |`\n\t\t\t\t\t\t+ ` ${max.padStart(cmax)} |`\n\t\t\t\t\t\t+ ` ${n.toString().padStart(csam)}\\n`;\n\t\t\t\t}\n\t\t\t\tmessage += `\\n`;\n\t\t\t\tconsole.log(message);\n\t\t\t\t\n\t\t\t\tperformance.clearMarks();\n\t\t\t\tperformance.clearMeasures();\n\t\t\t\tthis.toggle = timestamp;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync toggleVR(){\n\t\tconst vrActive = (this.vr && this.vr.display.isPresenting);\n\n\t\tif(vrActive){\n\t\t\tthis.stopVR();\n\t\t}else{\n\t\t\tthis.startVR();\n\t\t}\n\t}\n\n\tasync startVR(){\n\n\t\tif(this.vr === null){\n\t\t\treturn;\n\t\t}\n\n\t\tlet canvas = this.renderer.domElement;\n\t\tlet display = this.vr.display;\n\n\t\ttry{\n\t\t\tawait display.requestPresent([{ source: canvas }]);\n\t\t}catch(e){\n\t\t\tconsole.error(e);\n\t\t\tthis.postError(\"requestPresent failed\");\n\t\t\treturn;\n\t\t}\n\n\t\t//window.addEventListener('vrdisplaypresentchange', onVRPresentChange, false);\n\t\t//window.addEventListener('vrdisplayactivate', onVRRequestPresent, false);\n\t\t//window.addEventListener('vrdisplaydeactivate', onVRExitPresent, false);\n\n\t}\n\n\tasync stopVR(){\n\t\t// TODO shutdown VR\n\t}\n\n\tloop(timestamp){\n\n\t\tif(this.stats){\n\t\t\tthis.stats.begin();\n\t\t}\n\n\t\tlet queryAll;\n\t\tif(Potree.measureTimings){\n\t\t\tperformance.mark(\"loop-start\");\n\t\t}\n\n\n\t\tconst vrActive = (this.vr && this.vr.display.isPresenting);\n\n\t\tif(vrActive){\n\t\t\tconst {display, frameData} = this.vr;\n\n\t\t\tdisplay.requestAnimationFrame(this.loop.bind(this));\n\n\t\t\tdisplay.getFrameData(frameData);\n\n\t\t\tthis.update(this.clock.getDelta(), timestamp);\n\n\t\t\tthis.render();\n\n\t\t\tthis.vr.display.submitFrame();\n\t\t}else{\n\t\t\trequestAnimationFrame(this.loop.bind(this));\n\n\t\t\tthis.update(this.clock.getDelta(), timestamp);\n\n\t\t\tthis.render();\n\t\t}\n\n\n\t\tif(Potree.measureTimings){\n\t\t\tperformance.mark(\"loop-end\");\n\t\t\tperformance.measure(\"loop\", \"loop-start\", \"loop-end\");\n\t\t}\n\t\t\n\t\tthis.resolveTimings(timestamp);\n\n\t\tPotree.framenumber++;\n\n\t\tif(this.stats){\n\t\t\tthis.stats.end();\n\t\t}\n\t}\n\n\tpostError(content, params = {}){\n\t\tlet message = this.postMessage(content, params);\n\n\t\tmessage.element.addClass(\"potree_message_error\");\n\n\t\treturn message;\n\t}\n\n\tpostMessage(content, params = {}){\n\t\tlet message = new Message(content);\n\n\t\tlet animationDuration = 100;\n\n\t\tmessage.element.css(\"display\", \"none\");\n\t\tmessage.elClose.click( () => {\n\t\t\tmessage.element.slideToggle(animationDuration);\n\n\t\t\tlet index = this.messages.indexOf(message);\n\t\t\tif(index >= 0){\n\t\t\t\tthis.messages.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis.elMessages.prepend(message.element);\n\n\t\tmessage.element.slideToggle(animationDuration);\n\n\t\tthis.messages.push(message);\n\n\t\tif(params.duration !== undefined){\n\t\t\tlet fadeDuration = 500;\n\t\t\tlet slideOutDuration = 200;\n\t\t\tsetTimeout(() => {\n\t\t\t\tmessage.element.animate({\n\t\t\t\t\topacity: 0\t\n\t\t\t\t}, fadeDuration);\n\t\t\t\tmessage.element.slideToggle(slideOutDuration);\n\t\t\t}, params.duration)\n\t\t}\n\n\t\treturn message;\n\t}\n};\n","export class VRControlls{\r\n\r\n\tconstructor(viewer){\r\n\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.previousPads = [];\r\n\r\n\t\tthis.selection = [];\r\n\r\n\t\tthis.triggerStarts = [];\r\n\r\n\t\tthis.scaleState = null;\r\n\r\n\t\tthis.selectionBox = this.createBox();\r\n\t\tthis.viewer.scene.scene.add(this.selectionBox);\r\n\r\n\t\tthis.speed = 1;\r\n\t\tthis.speedModificationFactor = 50;\r\n\r\n\t\tthis.snLeft = this.createControllerModel();\r\n\t\tthis.snRight = this.createControllerModel();\r\n\t\t\r\n\t\tthis.viewer.scene.scene.add(this.snLeft.node);\r\n\t\tthis.viewer.scene.scene.add(this.snRight.node);\r\n\t\t//this.viewer.scene.scene.add(this.snLeft.debug);\r\n\t\t//this.viewer.scene.scene.add(this.snRight.debug);\r\n\r\n\t}\r\n\r\n\tcreateControllerModel(){\r\n\t\tconst geometry = new THREE.SphereGeometry(1, 32, 32);\r\n\t\tconst material = new THREE.MeshLambertMaterial( { color: 0xff0000, side: THREE.DoubleSide, flatShading: true } );\r\n\t\tconst node = new THREE.Mesh(geometry, material);\r\n\r\n\t\tnode.position.set(0, 0, 0.5);\r\n\t\tnode.scale.set(0.02, 0.02, 0.02);\r\n\t\tnode.visible = false;\r\n\r\n\t\tviewer.scene.scene.add(node);\r\n\r\n\t\tconst debug = new THREE.Mesh(geometry, new THREE.MeshNormalMaterial());\r\n\t\tdebug.position.set(0, 0, 0.5);\r\n\t\tdebug.scale.set(0.01, 0.01, 0.01);\r\n\t\tdebug.visible = false;\r\n\r\n\r\n\t\tconst controller = {\r\n\t\t\tnode: node,\r\n\t\t\tdebug: debug,\r\n\t\t};\r\n\t\t//viewer.scene.scene.add(node);\r\n\r\n\t\treturn controller;\r\n\t}\r\n\r\n\tcreateBox(){\r\n\t\tconst color = 0xffff00;\r\n\r\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\r\n\t\tconst positions = [ \r\n\t\t\t1, 1, 1,\r\n\t\t\t0, 1, 1,\r\n\t\t\t0, 0, 1,\r\n\t\t\t1, 0, 1,\r\n\t\t\t1, 1, 0,\r\n\t\t\t0, 1, 0,\r\n\t\t\t0, 0, 0,\r\n\t\t\t1, 0, 0\r\n\t\t];\r\n\t\tconst geometry = new THREE.BufferGeometry();\r\n\r\n\t\tgeometry.setIndex( new THREE.BufferAttribute( indices, 1 ) );\r\n\t\tgeometry.addAttribute( 'position', new THREE.Float32BufferAttribute( positions, 3 ) );\r\n\r\n\t\tgeometry.computeBoundingSphere();\r\n\r\n\t\tconst mesh = new THREE.LineSegments(geometry, new THREE.LineBasicMaterial( { color: color } ) );\r\n\t\tmesh.visible = false;\r\n\r\n\t\treturn mesh;\r\n\t}\r\n\r\n\tdebugLine(start, end, index, color){\r\n\r\n\t\tif(typeof this.debugLines === \"undefined\"){\r\n\r\n\t\t\tconst geometry = new THREE.SphereGeometry(1, 8, 8);\r\n\r\n\t\t\tthis.debugLines = {\r\n\t\t\t\tgeometry: geometry,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst n = 100;\r\n\r\n\t\tif(!this.debugLines[index]){\r\n\t\t\tconst geometry = this.debugLines.geometry;\r\n\t\t\tconst material = new THREE.MeshBasicMaterial({color: color});\r\n\t\t\tconst nodes = [];\r\n\r\n\t\t\tfor(let i = 0; i <= n; i++){\r\n\t\t\t\tconst u = i / n;\r\n\r\n\t\t\t\tconst node = new THREE.Mesh(geometry, material);\r\n\r\n\t\t\t\tconst position = new THREE.Vector3().addVectors(\r\n\t\t\t\t\tstart.clone().multiplyScalar(1-u),\r\n\t\t\t\t\tend.clone().multiplyScalar(u)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tnode.position.copy(position);\r\n\t\t\t\tnode.scale.set(0.002, 0.002, 0.002);\r\n\t\t\t\tthis.viewer.scene.scene.add(node);\r\n\t\t\t\tnodes.push(node);\r\n\t\t\t}\r\n\r\n\t\t\tconst debugLine = {\r\n\t\t\t\tmaterial: material,\r\n\t\t\t\tnodes: nodes,\r\n\t\t\t};\r\n\r\n\t\t\tthis.debugLines[index] = debugLine;\r\n\t\t}else{\r\n\t\t\tconst debugLine = this.debugLines[index];\r\n\r\n\t\t\tfor(let i = 0; i <= n; i++){\r\n\t\t\t\tconst node = debugLine.nodes[i];\r\n\t\t\t\tconst u = i / n;\r\n\r\n\t\t\t\tconst position = new THREE.Vector3().addVectors(\r\n\t\t\t\t\tstart.clone().multiplyScalar(1-u),\r\n\t\t\t\t\tend.clone().multiplyScalar(u)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tnode.position.copy(position);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\tgetPointcloudsAt(pointclouds, position){\r\n\r\n\t\tconst I = [];\r\n\t\tfor(const pointcloud of pointclouds){\r\n\t\t\t\r\n\t\t\tconst intersects = pointcloud.intersectsPoint(position);\r\n\r\n\t\t\tif(intersects){\r\n\t\t\t\tI.push(pointcloud);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn I;\r\n\t}\r\n\r\n\tcopyPad(pad){\r\n\t\tconst axes = pad.axes.map(a => a);\r\n\t\tconst buttons = pad.buttons.map(b => {return {pressed: b.pressed}});\r\n\r\n\t\tconst pose = {\r\n\t\t\tposition: new Float32Array(pad.pose.position),\r\n\t\t\torientation: new Float32Array(pad.pose.orientation),\r\n\t\t};\r\n\r\n\t\tconst copy = {\r\n\t\t\taxes: axes,\r\n\t\t\tbuttons: buttons,\r\n\t\t\tpose: pose, \r\n\t\t\thand: pad.hand,\r\n\t\t\tindex: pad.index,\r\n\t\t};\r\n\r\n\t\treturn copy;\r\n\t}\r\n\r\n\tpreviousPad(gamepad){\r\n\t\treturn this.previousPads.find(c => c.index === gamepad.index);\r\n\t}\r\n\r\n\ttoScene(position){\r\n\r\n\t\tconst vr = viewer.vr;\r\n\r\n\t\tvr.node.updateMatrixWorld();\r\n\t\tconst world = vr.node.matrixWorld;\r\n\r\n\t\tconst scenePos = new THREE.Vector3(position.x, -position.z, position.y);\r\n\t\tscenePos.applyMatrix4(world);\r\n\r\n\t\treturn scenePos;\r\n\t}\r\n\r\n\tupdate(delta){\r\n\r\n\t\tconst {selection, viewer, snLeft, snRight} = this;\r\n\t\tconst toScene = this.toScene.bind(this);\r\n\t\tconst vr = viewer.vr;\r\n\r\n\t\tconst vrActive = vr && vr.display.isPresenting;\r\n\r\n\t\tsnLeft.node.visible = vrActive;\r\n\t\tsnRight.node.visible = vrActive;\r\n\r\n\t\tif(!vrActive){\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst pointclouds = viewer.scene.pointclouds;\r\n\r\n\t\tconst gamepads = Array.from(navigator.getGamepads()).filter(p => p !== null).map(this.copyPad);\r\n\r\n\t\tconst getPad = (list, pattern) => list.find(pad => pad.index === pattern.index);\r\n\t\t\r\n\t\tif(this.previousPads.length !== gamepads.length){\r\n\t\t\tthis.previousPads = gamepads;\r\n\t\t}\r\n\r\n\t\tconst left = gamepads.find(gp => gp.hand && gp.hand === \"left\");\r\n\t\tconst right = gamepads.find(gp => gp.hand && gp.hand === \"right\");\r\n\r\n\t\tconst triggered = gamepads.filter(gamepad => {\r\n\t\t\treturn gamepad.buttons[1].pressed;\r\n\t\t});\r\n\r\n\t\tconst justTriggered = triggered.filter(gamepad => {\r\n\t\t\tconst prev = this.previousPad(gamepad);\r\n\t\t\tconst previouslyTriggered = prev.buttons[1].pressed;\r\n\t\t\tconst currentlyTriggered = gamepad.buttons[1].pressed;\r\n\r\n\t\t\treturn !previouslyTriggered && currentlyTriggered;\r\n\t\t});\r\n\r\n\t\tconst justUntriggered = gamepads.filter(gamepad => {\r\n\t\t\tconst prev = this.previousPad(gamepad);\r\n\t\t\tconst previouslyTriggered = prev.buttons[1].pressed;\r\n\t\t\tconst currentlyTriggered = gamepad.buttons[1].pressed;\r\n\r\n\t\t\treturn previouslyTriggered && !currentlyTriggered;\r\n\t\t});\r\n\r\n\t\tif(triggered.length === 0){\r\n\r\n\t\t\tfor(const pad of gamepads){\r\n\t\t\t\tconst position = new THREE.Vector3(...pad.pose.position);\r\n\r\n\t\t\t\tconst I = this.getPointcloudsAt(pointclouds, position);\r\n\r\n\t\t\t\tlet controler = {\r\n\t\t\t\t\t\"left\": snLeft,\r\n\t\t\t\t\t\"right\": snRight,\r\n\t\t\t\t}[pad.hand];\r\n\r\n\t\t\t\tif(I.length > 0){\r\n\t\t\t\t\tcontroler.node.material.color.setRGB(0, 1, 0);\r\n\t\t\t\t\tconsole.log(pad.hand);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcontroler.node.material.color.setRGB(1, 0, 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(selection.length > 0){\r\n\t\t\t\tconst pointcloud = selection[0];\r\n\t\t\t\tthis.selectionBox.scale.copy(pointcloud.boundingBox.max).multiply(pointcloud.scale);\r\n\t\t\t\tthis.selectionBox.position.copy(pointcloud.position);\r\n\t\t\t\tthis.selectionBox.rotation.copy(pointcloud.rotation);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(justTriggered.length > 0){\r\n\r\n\t\t\tconst pad = justTriggered[0];\r\n\t\t\tconst position = toScene(new THREE.Vector3(...pad.pose.position));\r\n\t\t\tconst I = this.getPointcloudsAt(pointclouds, position);\r\n\r\n\t\t\tconst pcs = I.map(p => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tnode: p,\r\n\t\t\t\t\tposition: p.position.clone(),\r\n\t\t\t\t\trotation: p.rotation.clone(),\r\n\t\t\t\t\tscale: p.scale.clone(),\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tconst event = {\r\n\t\t\t\tpad: pad,\r\n\t\t\t\tpointclouds: pcs,\r\n\t\t\t};\r\n\r\n\t\t\tthis.triggerStarts.push(event);\r\n\t\t}\r\n\r\n\t\tif(justUntriggered.length > 0){\r\n\t\t\tfor(let untriggeredPad of justUntriggered){\r\n\t\t\t\tconst p = getPad(this.triggerStarts.map(t => t.pad), untriggeredPad);\r\n\t\t\t\tthis.triggerStarts = this.triggerStarts.filter(e => e.pad !== p);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(triggered.length === 0){\r\n\t\t\tselection.length = 0;\r\n\t\t\tthis.triggerStarts = [];\r\n\t\t}\r\n\r\n\t\tif(justTriggered.length === 1 && triggered.length === 1){\r\n\t\t\t// one controller was triggered this frame\r\n\t\t\tconst pad = justTriggered[0];\r\n\t\t\tconst position = toScene(new THREE.Vector3(...pad.pose.position));\r\n\t\t\tconst I = this.getPointcloudsAt(pointclouds, position);\r\n\t\t\t\r\n\t\t\tif(I.length > 0){\r\n\t\t\t\tselection.length = 0;\r\n\t\t\t\tselection.push(I[0]);\r\n\t\t\t}\r\n\t\t}else if(justTriggered.length === 2 && triggered.length === 2){\r\n\t\t\t// two controllers were triggered this frame\r\n\t\t\tconst pad = justTriggered[0];\r\n\t\t\tconst position = toScene(new THREE.Vector3(...pad.pose.position));\r\n\t\t\tconst I = this.getPointcloudsAt(pointclouds, position);\r\n\t\t\t\r\n\t\t\tif(I.length > 0){\r\n\t\t\t\tselection.length = 0;\r\n\t\t\t\tselection.push(I[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(justTriggered.length > 0 && triggered.length === 2){\r\n\t\t\t// START SCALE/ROTATE\r\n\r\n\t\t\tconst pcs = selection.map(p => ({\r\n\t\t\t\tnode: p,\r\n\t\t\t\tposition: p.position.clone(),\r\n\t\t\t\trotation: p.rotation.clone(),\r\n\t\t\t\tscale: p.scale.clone(),\r\n\t\t\t}));\r\n\r\n\t\t\tthis.scaleState = {\r\n\t\t\t\tfirst: triggered[0],\r\n\t\t\t\tsecond: triggered[1],\r\n\t\t\t\tpointclouds: pcs,\r\n\t\t\t};\r\n\t\t}else if(triggered.length < 2){\r\n\t\t\t// STOP SCALE/ROTATE\r\n\t\t\tthis.scaleState = null;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.scaleState){\r\n\t\t\t// SCALE/ROTATE\r\n\r\n\t\t\tconst {first, second, pointclouds} = this.scaleState;\r\n\r\n\t\t\tif(pointclouds.length > 0){\r\n\t\t\t\t\r\n\t\t\t\tconst pointcloud = pointclouds[0];\r\n\t\t\t\t\r\n\t\t\t\tconst p1Start = toScene(new THREE.Vector3(...first.pose.position));\r\n\t\t\t\tconst p2Start = toScene(new THREE.Vector3(...second.pose.position));\r\n\r\n\t\t\t\tconst p1End = toScene(new THREE.Vector3(...getPad(gamepads, first).pose.position));\r\n\t\t\t\tconst p2End = toScene(new THREE.Vector3(...getPad(gamepads, second).pose.position));\r\n\r\n\t\t\t\tconst diffStart = new THREE.Vector3().subVectors(p2Start, p1Start);\r\n\t\t\t\tconst diffEnd = new THREE.Vector3().subVectors(p2End, p1End);\r\n\r\n\t\t\t\t// this.debugLine(p1Start, p2Start, 0, 0xFF0000);\r\n\t\t\t\t// this.debugLine(p1End, p2End, 1, 0x00FF00);\r\n\r\n\t\t\t\t// ROTATION\r\n\t\t\t\tconst diffStartG = new THREE.Vector3(diffStart.x, diffStart.y, 0);\r\n\t\t\t\tconst diffEndG = new THREE.Vector3(diffEnd.x, diffEnd.y, 0);\r\n\t\t\t\tlet sign = Math.sign(diffStartG.clone().cross(diffEndG).z);\r\n\t\t\t\tsign = sign === 0 ? 1 : sign;\r\n\t\t\t\tconst angle = sign * diffStartG.angleTo(diffEndG);\r\n\t\t\t\tconst newAngle = pointcloud.rotation.z + angle;\r\n\t\t\t\t\r\n\t\t\t\t// SCALE\r\n\t\t\t\tconst scale = diffEnd.length() / diffStart.length();\r\n\t\t\t\tconst newScale = pointcloud.scale.clone().multiplyScalar(scale);\r\n\r\n\t\t\t\t// POSITION\r\n\t\t\t\tconst p1ToP = new THREE.Vector3().subVectors(pointcloud.position, p1Start);\r\n\t\t\t\tp1ToP.multiplyScalar(scale);\r\n\t\t\t\tp1ToP.applyAxisAngle(new THREE.Vector3(0, 0, 1), angle);\r\n\t\t\t\tconst newPosition = p1End.clone().add(p1ToP);\r\n\t\t\t\t\r\n\t\t\t\t//this.debugLine(pointcloud.position, newPosition, 0, 0xFF0000);\r\n\r\n\t\t\t\t//console.log(newScale, p1ToP, angle);\r\n\r\n\t\t\t\tpointcloud.node.rotation.z = newAngle;\r\n\t\t\t\tpointcloud.node.scale.copy(newScale);\r\n\t\t\t\tpointcloud.node.position.copy(newPosition);\r\n\r\n\t\t\t\tpointcloud.node.updateMatrix();\r\n\t\t\t\tpointcloud.node.updateMatrixWorld();\r\n\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t\r\n\t\tif(triggered.length === 1){\r\n\t\t\t// TRANSLATE POINT CLOUDS\r\n\t\t\tconst pad = triggered[0];\r\n\t\t\tconst prev = this.previousPad(pad);\r\n\r\n\t\t\tconst flipWorld = new THREE.Matrix4().fromArray([\r\n\t\t\t\t\t1, 0, 0, 0, \r\n\t\t\t\t\t0, 0, 1, 0, \r\n\t\t\t\t\t0, -1, 0, 0,\r\n\t\t\t\t\t0, 0, 0, 1\r\n\t\t\t\t]);\r\n\t\t\tconst flipView = new THREE.Matrix4().getInverse(flipWorld);\r\n\r\n\t\t\tconst p1 = new THREE.Vector3(...pad.pose.position).applyMatrix4(flipWorld);\r\n\t\t\tconst p2 = new THREE.Vector3(...prev.pose.position).applyMatrix4(flipWorld);\r\n\r\n\t\t\tp1.applyMatrix4(vr.node.matrixWorld);\r\n\t\t\tp2.applyMatrix4(vr.node.matrixWorld);\r\n\r\n\t\t\tconst diff = new THREE.Vector3().subVectors(p1, p2);\r\n\r\n\t\t\t//const diff = toScene(new THREE.Vector3(\r\n\t\t\t//\tpad.pose.position[0] - prev.pose.position[0],\r\n\t\t\t//\tpad.pose.position[1] - prev.pose.position[1],\r\n\t\t\t//\tpad.pose.position[2] - prev.pose.position[2],\r\n\t\t\t//));\r\n\r\n\t\t\tfor(const pc of selection){\r\n\t\t\t\tpc.position.add(diff);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\t{ // MOVE WITH JOYSTICK\r\n\r\n\t\t\tconst flipWorld = new THREE.Matrix4().fromArray([\r\n\t\t\t\t1, 0, 0, 0, \r\n\t\t\t\t0, 0, 1, 0, \r\n\t\t\t\t0, -1, 0, 0,\r\n\t\t\t\t0, 0, 0, 1\r\n\t\t\t]);\r\n\t\t\tconst flipView = new THREE.Matrix4().getInverse(flipWorld);\r\n\t\t\tconst {display, frameData} = vr;\r\n\r\n\t\t\tconst computeMove = (pad) => {\r\n\t\t\t\tconst axes = pad.axes;\r\n\r\n\t\t\t\tconst opos = new THREE.Vector3(...pad.pose.position);\r\n\t\t\t\tconst rotation = new THREE.Quaternion(...pad.pose.orientation);\r\n\t\t\t\tconst d = new THREE.Vector3(0, 0, -1);\r\n\t\t\t\td.applyQuaternion(rotation);\r\n\t\t\t\t\r\n\t\t\t\tconst worldPos = toScene(opos);\r\n\t\t\t\tconst worldTarget = toScene(new THREE.Vector3().addVectors(opos, d));\r\n\t\t\t\tconst dir = new THREE.Vector3().subVectors(worldTarget, worldPos).normalize();\r\n\r\n\t\t\t\tconst amount = axes[1] * this.speed;\r\n\r\n\t\t\t\tconst move = dir.clone().multiplyScalar(amount);\r\n\r\n\t\t\t\treturn move;\r\n\t\t\t};\r\n\r\n\t\t\tlet flip = 1;\r\n\t\t\tif(display.displayName.includes(\"Oculus\")){\r\n\t\t\t\tflip = -1;\r\n\t\t\t}\r\n\r\n\t\t\tlet move = null;\r\n\r\n\t\t\tif(left && right){\r\n\t\t\t\tmove = computeMove(right);\r\n\r\n\t\t\t\tconst leftAdjustAxe = flip * left.axes[1];\r\n\t\t\t\tconst adjust = this.speedModificationFactor ** leftAdjustAxe;\r\n\r\n\t\t\t\tmove = move.multiplyScalar(adjust);\r\n\r\n\r\n\t\t\t}else if(right){\r\n\t\t\t\tmove = computeMove(right);\r\n\t\t\t}else if(left){\r\n\t\t\t\tmove = computeMove(left);\r\n\t\t\t}\r\n\r\n\t\t\tif(move){\r\n\t\t\t\tmove.multiplyScalar(delta * flip);\r\n\r\n\t\t\t\tvr.node.position.add(move);\r\n\t\t\t}\r\n\r\n\t\t\t// for(const pad of [left, right].filter(pad => pad)){\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t// \tmoves.push(move);\r\n\r\n\t\t\t// \t// vr.node.position.add(move);\r\n\t\t\t// }\r\n\r\n\t\t\t// if(moves.length === 1){\r\n\t\t\t// \tvr.node.position.add(moves[0]);\r\n\t\t\t// }else if(moves.length > 1){\r\n\r\n\t\t\t// \tconst factor = 10;\r\n\t\t\t// \tconst [adjust, main] = moves;\r\n\t\t\t// \t// main gives direction, adjust modifies speed between [0, factor]\r\n\r\n\t\t\t// \tconst mMain = main.length();\r\n\r\n\r\n\t\t\t// \tlet mAdjust = \r\n\r\n\r\n\r\n\t\t\t// \tconst move = mMain.multiplyScalar(adjust);\r\n\r\n\r\n\t\t\t// \t// const move = moves[0].clone().add(moves[1]);\r\n\r\n\t\t\t// \t// const amount = (move.length() ** 3) * delta;\r\n\t\t\t// \t// move.multiplyScalar(amount);\r\n\r\n\t\t\t// \t// vr.node.position.add(move);\r\n\t\t\t// }\r\n\r\n\r\n\t\t\t// let pad = [right, left].find(pad => pad !== undefined);\r\n\r\n\t\t\t// if(pad){\r\n\r\n\t\t\t// \tconst axes = pad.axes;\r\n\r\n\r\n\t\t\t// \t// const leftView = new THREE.Matrix4().fromArray(frameData.leftViewMatrix);\r\n\t\t\t// \t// const view = new THREE.Matrix4().multiplyMatrices(leftView, flipView);\r\n\t\t\t// \t// const world = new THREE.Matrix4().getInverse(view);\r\n\r\n\t\t\t// \t{ // move to where the controller points\r\n\t\t\t// \t\tconst opos = new THREE.Vector3(...right.pose.position);\r\n\t\t\t// \t\tconst rotation = new THREE.Quaternion(...pad.pose.orientation);\r\n\t\t\t// \t\tconst d = new THREE.Vector3(0, 0, -1);\r\n\t\t\t// \t\td.applyQuaternion(rotation);\r\n\t\t\t\t\t\r\n\t\t\t// \t\tconst worldPos = toScene(opos);\r\n\t\t\t// \t\tconst worldTarget = toScene(new THREE.Vector3().addVectors(opos, d));\r\n\t\t\t// \t\tconst dir = new THREE.Vector3().subVectors(worldTarget, worldPos).normalize();\r\n\r\n\t\t\t// \t\tconst amount = axes[1];\r\n\r\n\t\t\t// \t\tconst move = dir.clone().multiplyScalar(delta * amount);\r\n\r\n\t\t\t// \t\t//const d = dir.clone().multiplyScalar(delta);\r\n\t\t\t// \t\tvr.node.position.add(move);\r\n\t\t\t// \t}\r\n\r\n\t\t\t// \t{ // move to trigger direction\r\n\t\t\t// \t\t// const pos = new THREE.Vector3(0, 0, 0).applyMatrix4(world);\r\n\t\t\t// \t\t// const pForward = new THREE.Vector3(0, 0, -1).applyMatrix4(world);\r\n\t\t\t// \t\t// const pRight = new THREE.Vector3(1, 0, 0).applyMatrix4(world);\r\n\t\t\t// \t\t// const pUp = new THREE.Vector3(0, 1, 0).applyMatrix4(world);\r\n\r\n\t\t\t// \t\t// const dForward = new THREE.Vector3().subVectors(pForward, pos).normalize();\r\n\t\t\t// \t\t// const dRight = new THREE.Vector3().subVectors(pRight, pos).normalize();\r\n\t\t\t// \t\t// const dUp = new THREE.Vector3().subVectors(pUp, pos).normalize();\r\n\r\n\t\t\t// \t\t// const dir = new THREE.Vector3().addVectors(\r\n\t\t\t// \t\t// \tdRight.clone().multiplyScalar(axes[0]),\r\n\t\t\t// \t\t// \tdForward.clone().multiplyScalar(axes[1])\r\n\t\t\t// \t\t// );\r\n\r\n\t\t\t// \t\t// const d = dir.clone().multiplyScalar(delta);\r\n\t\t\t// \t\t// vr.node.position.add(d);\r\n\t\t\t// \t}\r\n\r\n\t\t\t// }\r\n\r\n\t\t}\r\n\r\n\t\t{ // MOVE CONTROLLER SCENE NODE\r\n\t\t\tif(right){\r\n\t\t\t\tconst {node, debug} = snRight;\r\n\t\t\t\tconst opos = new THREE.Vector3(...right.pose.position);\r\n\t\t\t\tconst position = toScene(opos);\r\n\t\t\t\t\r\n\t\t\t\tconst rotation = new THREE.Quaternion(...right.pose.orientation);\r\n\t\t\t\tconst d = new THREE.Vector3(0, 0, -1);\r\n\t\t\t\td.applyQuaternion(rotation);\r\n\t\t\t\t// const target = toScene(new THREE.Vector3().addVectors(opos, d));\r\n\r\n\t\t\t\tnode.position.copy(position);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(left){\r\n\t\t\t\tconst {node, debug} = snLeft;\r\n\t\t\t\t\r\n\t\t\t\tconst position = toScene(new THREE.Vector3(...left.pose.position));\r\n\t\t\t\tnode.position.copy(position);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.previousPads = gamepads;\r\n\t}\r\n};","\nTHREE.OrthographicCamera.prototype.zoomTo = function( node, factor = 1){\n\n\tif ( !node.geometry && !node.boundingBox) {\n\t\treturn;\n\t}\n\n\t// TODO\n\n\t//let minWS = new THREE.Vector4(node.boundingBox.min.x, node.boundingBox.min.y, node.boundingBox.min.z, 1);\n\t//let minVS = minWS.applyMatrix4(this.matrixWorldInverse);\n\n\t//let right = node.boundingBox.max.x;\n\t//let bottom\t= node.boundingBox.min.y;\n\t//let top = node.boundingBox.max.y;\n\n\tthis.updateProjectionMatrix();\t\n};","\nTHREE.PerspectiveCamera.prototype.zoomTo = function (node, factor) {\n\tif (!node.geometry && !node.boundingSphere && !node.boundingBox) {\n\t\treturn;\n\t}\n\n\tif (node.geometry && node.geometry.boundingSphere === null) {\n\t\tnode.geometry.computeBoundingSphere();\n\t}\n\n\tnode.updateMatrixWorld();\n\n\tlet bs;\n\n\tif (node.boundingSphere) {\n\t\tbs = node.boundingSphere;\n\t} else if (node.geometry && node.geometry.boundingSphere) {\n\t\tbs = node.geometry.boundingSphere;\n\t} else {\n\t\tbs = node.boundingBox.getBoundingSphere(new THREE.Sphere());\n\t}\n\n\tlet _factor = factor || 1;\n\n\tbs = bs.clone().applyMatrix4(node.matrixWorld);\n\tlet radius = bs.radius;\n\tlet fovr = this.fov * Math.PI / 180;\n\n\tif (this.aspect < 1) {\n\t\tfovr = fovr * this.aspect;\n\t}\n\n\tlet distanceFactor = Math.abs(radius / Math.sin(fovr / 2)) * _factor;\n\n\tlet offset = this.getWorldDirection(new THREE.Vector3()).multiplyScalar(-distanceFactor);\n\tthis.position.copy(bs.center.clone().add(offset));\n};\n","THREE.Ray.prototype.distanceToPlaneWithNegative = function (plane) {\n\tlet denominator = plane.normal.dot(this.direction);\n\tif (denominator === 0) {\n\t\t// line is coplanar, return origin\n\t\tif (plane.distanceToPoint(this.origin) === 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\t\treturn null;\n\t}\n\tlet t = -(this.origin.dot(plane.normal) + plane.constant) / denominator;\n\n\treturn t;\n};\n","\nexport * from \"./Actions.js\";\nexport * from \"./AnimationPath.js\";\nexport * from \"./Annotation.js\";\nexport * from \"./defines.js\";\nexport * from \"./Enum.js\";\nexport * from \"./EventDispatcher.js\";\nexport * from \"./Features.js\";\nexport * from \"./KeyCodes.js\";\nexport * from \"./LRU.js\";\nexport * from \"./PointCloudEptGeometry.js\";\nexport * from \"./PointCloudOctree.js\";\nexport * from \"./PointCloudOctreeGeometry.js\";\nexport * from \"./PointCloudTree.js\";\nexport * from \"./Points.js\";\nexport * from \"./Potree_update_visibility.js\";\nexport * from \"./PotreeRenderer.js\";\nexport * from \"./ProfileRequest.js\";\nexport * from \"./TextSprite.js\";\nexport * from \"./utils.js\";\nexport * from \"./Version.js\";\nexport * from \"./WorkerPool.js\";\nexport * from \"./XHRFactory.js\";\nexport * from \"./viewer/SaveProject.js\";\nexport * from \"./viewer/LoadProject.js\";\n\nexport * from \"./materials/ClassificationScheme.js\";\nexport * from \"./materials/EyeDomeLightingMaterial.js\";\nexport * from \"./materials/Gradients.js\";\nexport * from \"./materials/NormalizationEDLMaterial.js\";\nexport * from \"./materials/NormalizationMaterial.js\";\nexport * from \"./materials/PointCloudMaterial.js\";\n\nexport * from \"./loader/POCLoader.js\";\nexport * from \"./modules/loader/2.0/OctreeLoader.js\";\nexport * from \"./loader/EptLoader.js\";\nexport * from \"./loader/ept/BinaryLoader.js\";\nexport * from \"./loader/ept/LaszipLoader.js\";\nexport * from \"./loader/ept/ZstandardLoader.js\";\nexport * from \"./loader/PointAttributes.js\";\nexport * from \"./loader/ShapefileLoader.js\";\nexport * from \"./loader/GeoPackageLoader.js\";\n\nexport * from \"./utils/Box3Helper.js\";\nexport * from \"./utils/ClippingTool.js\";\nexport * from \"./utils/ClipVolume.js\";\nexport * from \"./utils/GeoTIFF.js\";\nexport * from \"./utils/Measure.js\";\nexport * from \"./utils/MeasuringTool.js\";\nexport * from \"./utils/Message.js\";\nexport * from \"./utils/PointCloudSM.js\";\nexport * from \"./utils/PolygonClipVolume.js\";\nexport * from \"./utils/Profile.js\";\nexport * from \"./utils/ProfileTool.js\";\nexport * from \"./utils/ScreenBoxSelectTool.js\";\nexport * from \"./utils/SpotLightHelper.js\";\nexport * from \"./utils/TransformationTool.js\";\nexport * from \"./utils/Volume.js\";\nexport * from \"./utils/VolumeTool.js\";\nexport * from \"./utils/Compass.js\";\n\nexport * from \"./viewer/viewer.js\";\nexport * from \"./viewer/Scene.js\";\nexport * from \"./viewer/HierarchicalSlider.js\";\n\nexport * from \"./modules/OrientedImages/OrientedImages.js\";\nexport * from \"./modules/Images360/Images360.js\";\nexport * from \"./modules/CameraAnimation/CameraAnimation.js\";\n\nexport * from \"./modules/loader/2.0/OctreeLoader.js\";\n\nexport {OrbitControls} from \"./navigation/OrbitControls.js\";\nexport {FirstPersonControls} from \"./navigation/FirstPersonControls.js\";\nexport {EarthControls} from \"./navigation/EarthControls.js\";\nexport {DeviceOrientationControls} from \"./navigation/DeviceOrientationControls.js\";\nexport {VRControlls} from \"./navigation/VRControlls.js\";\n\nimport \"./extensions/OrthographicCamera.js\";\nimport \"./extensions/PerspectiveCamera.js\";\nimport \"./extensions/Ray.js\";\n\nimport {LRU} from \"./LRU.js\";\nimport {OctreeLoader} from \"./modules/loader/2.0/OctreeLoader.js\";\nimport {POCLoader} from \"./loader/POCLoader.js\";\nimport {EptLoader} from \"./loader/EptLoader.js\";\nimport {PointCloudOctree} from \"./PointCloudOctree.js\";\nimport {WorkerPool} from \"./WorkerPool.js\";\n\nexport const workerPool = new WorkerPool();\n\nexport const version = {\n\tmajor: 1,\n\tminor: 7,\n\tsuffix: '.1'\n};\n\nexport let lru = new LRU();\n\nconsole.log('Potree ' + version.major + '.' + version.minor + version.suffix);\n\nexport let pointBudget = 1 * 1000 * 1000;\nexport let framenumber = 0;\nexport let numNodesLoading = 0;\nexport let maxNodesLoading = 4;\n\nexport const debug = {};\n\nlet scriptPath = \"\";\n\nif (document.currentScript && document.currentScript.src) {\n\tscriptPath = new URL(document.currentScript.src + '/..').href;\n\tif (scriptPath.slice(-1) === '/') {\n\t\tscriptPath = scriptPath.slice(0, -1);\n\t}\n} else if(import.meta){\n\tscriptPath = new URL(import.meta.url + \"/..\").href;\n\tif (scriptPath.slice(-1) === '/') {\n\t\tscriptPath = scriptPath.slice(0, -1);\n\t}\n}else {\n\tconsole.error('Potree was unable to find its script path using document.currentScript. Is Potree included with a script tag? Does your browser support this function?');\n}\n\nlet resourcePath = scriptPath + '/resources';\n\n// scriptPath: build/potree\n// resourcePath:build/potree/resources\nexport {scriptPath, resourcePath};\n\n\nexport function loadPointCloud(path, name, callback){\n\tlet loaded = function(e){\n\t\te.pointcloud.name = name;\n\t\tcallback(e);\n\t};\n\n\tlet promise = new Promise( resolve => {\n\n\t\t// load pointcloud\n\t\tif (!path){\n\t\t\t// TODO: callback? comment? Hello? Bueller? Anyone?\n\t\t} else if (path.indexOf('ept.json') > 0) {\n\t\t\tEptLoader.load(path, function(geometry) {\n\t\t\t\tif (!geometry) {\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\n\t\t\t\t\t//loaded(pointcloud);\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (path.indexOf('cloud.js') > 0) {\n\t\t\tPOCLoader.load(path, function (geometry) {\n\t\t\t\tif (!geometry) {\n\t\t\t\t\t//callback({type: 'loading_failed'});\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t\t\t} else {\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\n\t\t\t\t\t// loaded(pointcloud);\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (path.indexOf('metadata.json') > 0) {\n\t\t\tPotree.OctreeLoader.load(path).then(e => {\n\t\t\t\tlet geometry = e.geometry;\n\n\t\t\t\tif(!geometry){\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t\t\t}else{\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\n\n\t\t\t\t\tlet aPosition = pointcloud.getAttribute(\"position\");\n\n\t\t\t\t\tlet material = pointcloud.material;\n\t\t\t\t\tmaterial.elevationRange = [\n\t\t\t\t\t\taPosition.range[0][2],\n\t\t\t\t\t\taPosition.range[1][2],\n\t\t\t\t\t];\n\n\t\t\t\t\t// loaded(pointcloud);\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tOctreeLoader.load(path, function (geometry) {\n\t\t\t\tif (!geometry) {\n\t\t\t\t\t//callback({type: 'loading_failed'});\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t\t\t} else {\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\n\t\t\t\t\t// loaded(pointcloud);\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (path.indexOf('.vpc') > 0) {\n\t\t\tPointCloudArena4DGeometry.load(path, function (geometry) {\n\t\t\t\tif (!geometry) {\n\t\t\t\t\t//callback({type: 'loading_failed'});\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t\t\t} else {\n\t\t\t\t\tlet pointcloud = new PointCloudArena4D(geometry);\n\t\t\t\t\t// loaded(pointcloud);\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t//callback({'type': 'loading_failed'});\n\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\n\t\t}\n\t});\n\n\tif(callback){\n\t\tpromise.then(pointcloud => {\n\t\t\tloaded(pointcloud);\n\t\t});\n\t}else{\n\t\treturn promise;\n\t}\n};\n\n\n// add selectgroup\n(function($){\n\t$.fn.extend({\n\t\tselectgroup: function(args = {}){\n\n\t\t\tlet elGroup = $(this);\n\t\t\tlet rootID = elGroup.prop(\"id\");\n\t\t\tlet groupID = `${rootID}`;\n\t\t\tlet groupTitle = (args.title !== undefined) ? args.title : \"\";\n\n\t\t\tlet elButtons = [];\n\t\t\telGroup.find(\"option\").each((index, value) => {\n\t\t\t\tlet buttonID = $(value).prop(\"id\");\n\t\t\t\tlet label = $(value).html();\n\t\t\t\tlet optionValue = $(value).prop(\"value\");\n\n\t\t\t\tlet elButton = $(`\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t`);\n\t\t\t\tlet elLabel = elButton.find(\"label\");\n\t\t\t\tlet elInput = elButton.find(\"input\");\n\n\t\t\t\telInput.change( () => {\n\t\t\t\t\telGroup.find(\"label\").removeClass(\"ui-state-active\");\n\t\t\t\t\telGroup.find(\"label\").addClass(\"ui-state-default\");\n\t\t\t\t\tif(elInput.is(\":checked\")){\n\t\t\t\t\t\telLabel.addClass(\"ui-state-active\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\t//elLabel.addClass(\"ui-state-default\");\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\telButtons.push(elButton);\n\t\t\t});\n\n\t\t\tlet elFieldset = $(`\n\t\t\t\t
        \n\t\t\t\t\t${groupTitle}\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t
        \n\t\t\t`);\n\n\t\t\tlet elButtonContainer = elFieldset.find(\"span\");\n\t\t\tfor(let elButton of elButtons){\n\t\t\t\telButtonContainer.append(elButton);\n\t\t\t}\n\n\t\t\telButtonContainer.find(\"label\").each( (index, value) => {\n\t\t\t\t$(value).css(\"margin\", \"0px\");\n\t\t\t\t$(value).css(\"border-radius\", \"0px\");\n\t\t\t\t$(value).css(\"border\", \"1px solid black\");\n\t\t\t\t$(value).css(\"border-left\", \"none\");\n\t\t\t});\n\t\t\telButtonContainer.find(\"label:first\").each( (index, value) => {\n\t\t\t\t$(value).css(\"border-radius\", \"4px 0px 0px 4px\");\n\n\t\t\t});\n\t\t\telButtonContainer.find(\"label:last\").each( (index, value) => {\n\t\t\t\t$(value).css(\"border-radius\", \"0px 4px 4px 0px\");\n\t\t\t\t$(value).css(\"border-left\", \"none\");\n\t\t\t});\n\n\t\t\telGroup.empty();\n\t\t\telGroup.append(elFieldset);\n\n\n\n\t\t}\n\t});\n})(jQuery);\n"],"names":["PointCloudArena4D","Geopackage","JSON5","scriptPath","loadPointCloud"],"mappings":";;;;;;CACA;CACA;CACA;CACA;CACA;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACA;AACA;AACA;AACA;AACA;CACO,MAAM,eAAe;AAC5B;CACA,CAAC,WAAW,EAAE;CACd,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;CACvB,EAAE;AACF;CACA,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;AACjC;CACA,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AACpC;CACA,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;CACnC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;CACxB,GAAG;AACH;CACA,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CAC/C,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;CACpC,GAAG;AACH;CACA,EAAE;AACF;CACA,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;AACjC;CACA,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AACpC;CACA,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACpF,EAAE;AACF;CACA,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC;AACpC;CACA,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;CAClC,EAAE,IAAI,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACtC;CACA,EAAE,IAAI,aAAa,KAAK,SAAS,CAAC;AAClC;CACA,GAAG,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/C;CACA,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;CACpB,IAAI,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CACnC,IAAI;CACJ,GAAG;AACH;CACA,EAAE;AACF;CACA,CAAC,oBAAoB,CAAC,IAAI,CAAC;CAC3B,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;CACzC,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;CAChC,GAAG;CACH,EAAE;AACF;CACA,CAAC,aAAa,CAAC,KAAK,CAAC;AACrB;CACA,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;CAClC,EAAE,IAAI,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5C;CACA,EAAE,KAAK,aAAa,KAAK,SAAS,GAAG;CACrC,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB;CACA,GAAG,IAAI,IAAI,QAAQ,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC9C,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CAC/B,IAAI;CACJ,GAAG;AACH;CACA,EAAE;AACF;CACA;;CC9FO,MAAM,MAAM,SAAS,eAAe,CAAC;CAC5C,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE;CACzB,EAAE,KAAK,EAAE,CAAC;AACV;CACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;CAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9B;CACA,EAAE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;CAClC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;CAC/B,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE;AACjB;CACA,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;AACnB;CACA,EAAE;AACF;CACA,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;CACnB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1B;CACA,EAAE,IAAI,OAAO,KAAK,OAAO,EAAE;CAC3B,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACtB;CACA,EAAE,IAAI,CAAC,aAAa,CAAC;CACrB,GAAG,IAAI,EAAE,cAAc;CACvB,GAAG,MAAM,EAAE,IAAI;CACf,GAAG,IAAI,EAAE,OAAO;CAChB,GAAG,OAAO,EAAE,OAAO;CACnB,GAAG,CAAC,CAAC;CACL,EAAE;CACF,CAAC,CAAC;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,IAAI;;CChFG,MAAM,aAAa;CAC1B;CACA,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;CAC/C,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACpB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;CAC9C,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;CACtB,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAC5B,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACrB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CACxC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;CAC9C,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;CAChB,EAAE;AACF;CACA,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;CACtB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;CAChB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;CACrB,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACrB,GAAG;CACH;CACA,EAAE,IAAI,MAAM,CAAC;CACb,EAAE,GAAG,MAAM,CAAC;CACZ,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACnB,GAAG,KAAI;CACP,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;CAC1C,GAAG;CACH,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;CACzC,EAAE,IAAI,iBAAiB,GAAG,CAAC,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;CAC5E;CACA,EAAE,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;CAC7B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,iBAAiB,CAAC,CAAC;CAC1E,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC9C,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;CAC7B,GAAG,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;CACvB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC7B,GAAG,CAAC,CAAC;CACL,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;CAC9B,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;CAClB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;CACjB,IAAI;CACJ,GAAG,CAAC,CAAC;AACL;CACA,EAAE,UAAU,CAAC,MAAM;CACnB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;CACtB,GAAG,EAAE,CAAC,CAAC,CAAC;CACR,EAAE;AACF;CACA,CAAC,IAAI,EAAE;CACP,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;CACjB,GAAG,OAAO;CACV,GAAG;CACH,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;CACpB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACpB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACb,EAAE;AACF;CACA,CAAC,KAAK,EAAE;CACR,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;CACjB,GAAG,OAAO;CACV,GAAG;CACH;CACA,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;CACpB,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAC3B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACpB,EAAE;AACF;CACA,CAAC,MAAM,EAAE;CACT,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CACnB,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,CAAC,CAAC;CACZ,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CACtC,EAAE;AACF;CACA,CAAC;AACD;AACA,CAAO,MAAM,aAAa;CAC1B,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE;CAC3B,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;CACvB,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;CACnD;CACA,EAAE;AACF;CACA,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;CACT,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CACjC,EAAE;AACF;CACA,CAAC,SAAS,CAAC,GAAG;CACd,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;CACjC,EAAE;AACF;CACA,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;CACvC,EAAE,IAAI,SAAS,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;CACvE,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB;CACA,EAAE,OAAO,SAAS,CAAC;CACnB,EAAE;AACF;CACA,CAAC,KAAK,CAAC,GAAG;CACV,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;CAClB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;CACrB,GAAG;CACH,EAAE;AACF;CACA,CAAC,MAAM,CAAC,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;CAClB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;CACtB,GAAG;CACH,EAAE;AACF;CACA,CAAC,WAAW,CAAC,GAAG;CAChB,EAAE,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;AACtC;CACA,EAAE,IAAI,OAAO,GAAG,GAAG,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE;CAC5C,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC1C,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChF;CACA,GAAG,CAAC,EAAE,CAAC;CACP,GAAG;AACH;CACA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;CACjB,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC1C,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CAChF,GAAG;AACH;CACA,EAAE,OAAO,QAAQ,CAAC;CAClB,EAAE;AACF;CACA,CAAC,IAAI,MAAM,EAAE;CACb,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;CAC5B,EAAE;AACF;CACA,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;CAClB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;CAC7B,EAAE;AACF;CACA,CAAC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAG;;ACrKE,OAAC,UAAU,GAAG;CACnB,CAAC,MAAM,EAAE;CACT,EAAE,eAAe,EAAE,KAAK;CACxB,EAAE,aAAa,EAAE;CACjB,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;CAChC,GAAG;CACH,EAAE;AACF;CACA,CAAC,oBAAoB,EAAE,YAAY;CACnC,EAAE,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;AACjC;CACA,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa;CAC/B,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;CAC3C,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;CACzC,GAAG,IAAI,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;CAC3B,GAAG,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;CACjD,GAAG,GAAG,CAAC,IAAI,GAAG,YAAY;CAC1B,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;CACnD,IAAI,aAAa,CAAC,OAAO,CAAC,UAAU,YAAY,EAAE;CAClD,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE;CACxD,MAAM,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;CACpE,MAAM;CACN,KAAK,CAAC,CAAC;CACP,IAAI,CAAC;CACL,GAAG;AACH;CACA,EAAE,OAAO,GAAG,CAAC;CACb,EAAE;CACF,CAAC;;CC3BD;CACA;CACA;AACA;CACA;CACA;CACA;AACA;CACA;CACA;CACA;AACA;CACA;CACA;CACA;AACA;CACA;CACA;AACA;CACA;AACA;AACA;CACA;AACA;CACA;AACA;CACA;AACA;CACA;AACA;AACA;AACA;CACA;AACA;CACA;AACA;CACA;CACA;CACA;AACA;CACA;AACA;CACA;CACA;CACA;AACA;AACA;CACA;AACA;CACA;AACA;CACA;AACA;CACA;CACA;AACA;CACA;AACA;AACA;CACA;AACA;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACA;CACA;AACA;CACA;CACA;AACA;AACA;AACA,CAAO,MAAM,UAAU,SAAS,KAAK,CAAC,QAAQ;CAC9C;CACA,CAAC,WAAW,CAAC,IAAI,CAAC;CAClB,EAAE,KAAK,EAAE,CAAC;AACV;CACA,EAAE,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;CACpC,EAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;CACzC,EAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;CACzC,EAAE,IAAI,cAAc,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC;CAChD,GAAG,GAAG,EAAE,OAAO;CACf,GAAG,SAAS,EAAE,KAAK;CACnB,GAAG,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AACvB;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB;CACA,EAAE,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;CACjC;CACA,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAChD,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB;CACA,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;CAC3B,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;CAC1B,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;CACrB,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;CAClD,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;CAC5D,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;CACpD,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB,EAAE;AACF;CACA,CAAC,OAAO,CAAC,IAAI,CAAC;CACd,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;CACzB,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB;CACA,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;CACjB,GAAG;CACH,EAAE;AACF;CACA,CAAC,YAAY,CAAC,KAAK,CAAC;CACpB,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,cAAc,CAAC,KAAK,CAAC;CACtB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,kBAAkB,CAAC,KAAK,CAAC;CAC1B,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC/B;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,MAAM,EAAE;CACT,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;CAChD,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;CACxC,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AACjE;CACA;CACA,EAAE,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAC/C,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;CAChC,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;CACjB,EAAE,IAAI,WAAW,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;CACtE,EAAE,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;AACpE;CACA,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;CACrC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;CACvC,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AACjE;CACA;CACA,EAAE,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,GAAG;CAC3F,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,GAAG,CAAC;CAC/D;CACA,EAAE,OAAO,CAAC,WAAW,GAAG,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG;CACrF,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,CAAC;AACvD;CACA,EAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC;CAC3C,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC;CAC5E,GAAG,SAAS,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AACjG;CACA;CACA,EAAE,OAAO,CAAC,WAAW,GAAG,oBAAoB,CAAC;CAC7C,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AACrG;CACA,EAAE,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG;CAC/E,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC;CACnD,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AACnG;CACA,EAAE,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1C,EAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;CACzC,EAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;CACzC,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;CAC7B;AACA;CACA;CACA;AACA;CACA;CACA;CACA;AACA;CACA;CACA;AACA;CACA;CACA;CACA;CACA;AACA;CACA,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC;CACrC,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB;CACA,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;CACtE,EAAE;AACF;CACA,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAC9B,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;CAClB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CACvB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/C,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACvD,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/C,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACvB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CACvC,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;CAClB,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;CACb,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;CACf,EAAE;AACF;CACA,CAAC;;CCvNM,MAAM,MAAM,SAAS,KAAK,CAAC,QAAQ,CAAC;CAC3C,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE;CACzB,EAAE,KAAK,EAAE,CAAC;AACV;CACA,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;CACxC,GAAG,OAAO,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;CAChH,GAAG;AACH;CACA;CACA;CACA;AACA;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;CAClC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;CACvB,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;CAC9B,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;AAC7C;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;CACnC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC1D,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC9D,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;CACxC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;CACzC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;CACzC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,CAAC;CAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB;CACA,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,MAAM;CACvC,GAAG,IAAI,cAAc,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;CAC5C,GAAG,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;CAC1D,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;CAC5C,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;CAC7B,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAClD,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC;AAC7C;CACA,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC/D,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;CACrD,IAAI;CACJ,GAAG,CAAC;AACJ;CACA,EAAE;CACF,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;CAC5C,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;CAC9C,GAAG;AACH;CACA,EAAE;AACF;CACA,CAAC,IAAI,OAAO,EAAE;CACd,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;CACvB,EAAE;AACF;CACA,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC;CACnB,EAAE,GAAG,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC;CAC7B,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzB;CACA,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;CAClE,GAAG;CACH,EAAE;AACF;CACA,CAAC,SAAS,CAAC,GAAG;CACd,EAAE,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;CAC5C,EAAE;AACF;CACA,CAAC,MAAM,CAAC,GAAG;CACX;CACA,EAAE;AACF;CACA,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE;AACjC;CACA,EAAE;AACF;CACA,CAAC,IAAI,IAAI,CAAC,GAAG;CACb,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;CACpB,EAAE;AACF;CACA,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE;AAClB;CACA,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;CAC1B,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACtB;CACA,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACjB;CACA,GAAG,IAAI,CAAC,aAAa,CAAC;CACtB,IAAI,IAAI,EAAE,cAAc;CACxB,IAAI,MAAM,EAAE,IAAI;CAChB,IAAI,CAAC,CAAC;CACN,GAAG;CACH;CACA,EAAE;AACF;CACA,CAAC,IAAI,WAAW,CAAC,GAAG;CACpB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;CAC1B,EAAE;AACF;CACA,CAAC,IAAI,WAAW,CAAC,CAAC,KAAK,EAAE;CACzB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;CACF,CAAC,CAAC;AACF;AACA;AACA,CAAO,MAAM,SAAS,SAAS,MAAM;AACrC;CACA,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC;CACvB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACd;CACA,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;CACzG,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAChD;CACA,EAAE,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnD,EAAE,WAAW,CAAC,kBAAkB,EAAE,CAAC;AACnC;CACA,EAAE,IAAI,gBAAgB,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;CAC9C,EAAE;CACF,GAAG,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC/B;CACA,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI;AACjC;CACA;CACA,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;CAChC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;CAC/B,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;CAC/B,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;CAChC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;CAChC,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;CACjC,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;CACjC,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;CAChC;CACA,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAC/B,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAC9B,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAC9B,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;CAC/B,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;CAC/B,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;CAChC,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;CAChC,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAC/B;CACA,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;CAChC,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAC/B,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;CAC/B,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAC9B,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;CAChC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;CAC/B,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;CACjC,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;AAChC;CACA,IAAI,CAAC;AACL;CACA,GAAG;AACH;CACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC;CAC9C,GAAG,KAAK,EAAE,QAAQ;CAClB,GAAG,WAAW,EAAE,IAAI;CACpB,GAAG,OAAO,EAAE,GAAG;CACf,GAAG,SAAS,EAAE,IAAI;CAClB,GAAG,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;CACvB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CACxD,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;CACzC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;CACnD,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CACxG;CACA,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,MAAM,EAAE;CACT,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;CACnD,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/E;CACA,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;CAClB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;CAC5B,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;CAC9B,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;CAC3B,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;CAC7C,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE;CACjC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;CACd,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAClC;CACA,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;CACrB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;CACjB,GAAG,UAAU,CAAC,IAAI,CAAC;CACnB,IAAI,QAAQ,EAAE,CAAC,CAAC,QAAQ;CACxB,IAAI,MAAM,EAAE,IAAI;CAChB,IAAI,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;CAC1B,IAAI,CAAC,CAAC;CACN,GAAG;CACH,EAAE;AACF;CACA,CAAC,SAAS,EAAE;CACZ,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC9D,EAAE;AACF;CACA,CAAC,CAAC;AACF;AACA,CAAO,MAAM,YAAY,SAAS,MAAM;AACxC;CACA,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC;CACvB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACd;CACA,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;CACzG,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACnD;CACA,EAAE,IAAI,cAAc,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC3D,EAAE,cAAc,CAAC,kBAAkB,EAAE,CAAC;AACtC;CACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC;CAC9C,GAAG,KAAK,EAAE,QAAQ;CAClB,GAAG,WAAW,EAAE,IAAI;CACpB,GAAG,OAAO,EAAE,GAAG;CACf,GAAG,SAAS,EAAE,IAAI;CAClB,GAAG,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;CACvB,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC9D,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;CAC9B,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;CAC5C,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;CACtD,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB;CACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B;AACA;CACA,EAAE,IAAI,aAAa,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;CAC3C,EAAE;CACF,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC;CAClB,GAAG,IAAI,SAAS,GAAG,CAAC,CAAC;CACrB,GAAG,IAAI,SAAS,GAAG,CAAC,CAAC;CACrB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACb;CACA,GAAG,IAAI,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC1D;CACA,IAAI,IAAI,KAAK,GAAG,CAAC,QAAQ,GAAG,SAAS,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;CACrD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CAC/B,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B;CACA,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;CACnC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;CACvC,KAAK,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;AACzC;CACA,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC9B,KAAK,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChC;CACA,KAAK,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtC,KAAK,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxC;CACA,KAAK,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC;CAC9E,KAAK,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC;CACA,KAAK,IAAI,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,YAAY,EAAE,IAAI,GAAG,YAAY,EAAE,UAAU,CAAC,CAAC;CAC9F,KAAK,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CAC7C,KAAK;CACL,IAAI;AACJ;CACA;CACA,GAAG,IAAI,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC/D;CACA;CACA,IAAI,IAAI,EAAE,IAAI,QAAQ,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CACvD,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9B;CACA,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5B;CACA,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;CACnC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;CACvC,KAAK,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;AACzC;CACA,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC5B,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5B;CACA,KAAK,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACpC,KAAK,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC;CACA,KAAK,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AACnD;CACA,KAAK,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC;CAC9E,KAAK,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC;CACA,KAAK,IAAI,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC;CAC1F,KAAK,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CAC7C,KAAK;CACL,IAAI;CACJ,GAAG;AACH;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CACrG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB;CACA,EAAE,IAAI,aAAa,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;CACtF,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;CAC7D;AACA;CACA;CACA;CACA;AACA;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,MAAM,EAAE;CACT,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;CACtD,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/E;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAE;AACF;CACA,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE;CACjC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;CACd,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACrC;CACA,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;CACrB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;CACjB,GAAG,UAAU,CAAC,IAAI,CAAC;CACnB,IAAI,QAAQ,EAAE,CAAC,CAAC,QAAQ;CACxB,IAAI,MAAM,EAAE,IAAI;CAChB,IAAI,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;CAC1B,IAAI,CAAC,CAAC;CACN,GAAG;CACH,EAAE;CACF;CACA;CACA,CAAC,SAAS,EAAE;CACZ,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;CACxE,EAAE;AACF;CACA,CAAC;;GAAC,FC/UK,MAAM,OAAO,SAAS,KAAK,CAAC,QAAQ;AAC3C;CACA,CAAC,WAAW,CAAC,GAAG;CAChB,EAAE,KAAK,EAAE,CAAC;AACV;CACA,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;AACzG;CACA,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;CACpD,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;CACnB,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;CACpB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;CAClB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;CAClB,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;CACjB,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;CACnB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;CACA,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9D,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;CACzC,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;CAC7C,EAAE;AACF;CACA,CAAC,oBAAoB,CAAC,GAAG;CACzB,EAAE,IAAI,cAAc,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC;CACrD;CACA,GAAG,KAAK,EAAE,QAAQ;CAClB,GAAG,SAAS,EAAE,KAAK;CACnB,GAAG,UAAU,EAAE,KAAK,CAAC;CACrB,GAAG,CAAC;AACJ;CACA,EAAE,OAAO,cAAc,CAAC;CACxB,EAAE;AACF;CACA,CAAC,WAAW,CAAC,GAAG;CAChB,EAAE,IAAI,QAAQ,GAAG,EAAE,CAAC;AACpB;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CACnD,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;CACtC,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;CACxC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;CAC3C,GAAG;AACH;CACA,EAAE,OAAO,QAAQ,CAAC;CAClB,EAAE;AACF;CACA,CAAC,kBAAkB,CAAC,GAAG;CACvB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;CACpC,EAAE,IAAI,QAAQ,GAAG,EAAE,CAAC;AACpB;CACA,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;CAChC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC;AAC9B;CACA,GAAG,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;AAClC;CACA,GAAG,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACtE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;CAC5C,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;CACA,GAAG,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;CAC/E,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;CACzD,GAAG,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD;CACA,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7B,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CACtB,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B;CACA,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAC;CAC3B,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAClC,GAAG;AACH;CACA,EAAE,OAAO,QAAQ,CAAC;CAClB,EAAE;AACF;CACA,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE;CACnB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B;CACA,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAChF;CACA,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACnB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B;CACA;CACA,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;CAC9B,GAAG,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;CAC3C,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;CACxE,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;CAC5E,GAAG,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC;CAClD,IAAI,YAAY,EAAE,KAAK,CAAC,YAAY;CACpC,IAAI,SAAS,EAAE,CAAC;CAChB,IAAI,WAAW,EAAE,IAAI;CACrB,IAAI,OAAO,EAAE,GAAG;CAChB,IAAI,CAAC,CAAC;CACN,GAAG,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC;CAClC,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;CACzD,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB;CACA,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAClB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB;CACA,GAAG,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpD,GAAG,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;CACrG,GAAG,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;CACtD,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB;CACA,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACjB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACxB,GAAG;AACH;CACA,EAAE;CACF,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK;CACrB,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,8BAA8B;CAChD,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG;CACf,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE;CACrC,KAAK,CAAC,CAAC,MAAM;CACb,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjC;CACA,IAAI,IAAI,CAAC,EAAE;CACX,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACjD,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;CACnB,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;CACtC;CACA;CACA;CACA;CACA;CACA,MAAM;CACN,KAAK;CACL,IAAI,CAAC;AACL;CACA,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI;CACnB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAChD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;CAClB,KAAK,IAAI,CAAC,aAAa,CAAC;CACxB,MAAM,MAAM,EAAE,gBAAgB;CAC9B,MAAM,SAAS,EAAE,IAAI;CACrB,MAAM,OAAO,EAAE,CAAC;CAChB,MAAM,CAAC,CAAC;CACR,KAAK;CACL,IAAI,CAAC;AACL;CACA,GAAG,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;CACtE,GAAG,IAAI,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvE;CACA,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACzC,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACzC,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;CACnD,GAAG,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;CACrD,GAAG;AACH;CACA,EAAE,IAAI,KAAK,GAAG;CACd,GAAG,IAAI,EAAE,cAAc;CACvB,GAAG,OAAO,EAAE,IAAI;CAChB,GAAG,MAAM,EAAE,MAAM;CACjB,GAAG,CAAC;CACJ,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5B;CACA,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;CAClD,EAAE;AACF;CACA,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE;CACtB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B;CACA,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC;CACA,EAAE,IAAI,SAAS,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;CAClD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;CACrC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;CACrC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAChC;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAChB;CACA,EAAE,IAAI,CAAC,aAAa,CAAC;CACrB,GAAG,MAAM,EAAE,gBAAgB;CAC3B,GAAG,SAAS,EAAE,IAAI;CAClB,GAAG,CAAC,CAAC;CACL,EAAE;AACF;CACA,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE;CAC/B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CACjC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvB;CACA,EAAE,IAAI,KAAK,GAAG;CACd,GAAG,IAAI,EAAE,cAAc;CACvB,GAAG,OAAO,EAAE,IAAI;CAChB,GAAG,KAAK,EAAE,KAAK;CACf,GAAG,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE;CAC1B,GAAG,CAAC;CACJ,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5B;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;CAClB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB;CACA,EAAE,IAAI,KAAK,GAAG;CACd,GAAG,IAAI,EAAE,eAAe;CACxB,GAAG,OAAO,EAAE,IAAI;CAChB,GAAG,KAAK,EAAE,KAAK;CACf,GAAG,CAAC;CACJ,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5B;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,GAAG;CACb,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;CACpB,EAAE;AACF;CACA,CAAC,MAAM,CAAC,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;CAChC,GAAG,OAAO;CACV,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;CACvC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC9B,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC;CACA,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;CACnC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;CACnC,EAAE,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;CACrC,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;CACzC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;CACvC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC9B,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAChC,GAAG,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;CACjD;CACA,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;CAC3C;CACA,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CACxC,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACjC,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CACvC;AACA;CACA;CACA;CACA;CACA;AACA;CACA,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B;CACA,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;CACzB,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAC1B,IAAI,MAAM;CACV,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;CAC3B,IAAI;AACJ;CACA,GAAG,IAAI,QAAQ,EAAE;CACjB,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAC9C,IAAI,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;CAChD,IAAI,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;CAC9C,IAAI;AACJ;CACA,GAAG,IAAI,SAAS,EAAE;CAClB,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAC/C,IAAI,SAAS,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;CACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;CAC/C,IAAI;AACJ;CACA,GAAG,IAAI,OAAO,EAAE;CAChB,IAAI,IAAI,KAAK,GAAG,UAAU,CAAC;CAC3B,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC;CACpB,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACvE,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;CACnD,IAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B;CACA,IAAI,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;CAChF,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;CAC1D,IAAI,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;CACA,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAC3B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAClC,IAAI;AACJ;CACA,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACvB,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CAClB,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CAClB,GAAG;CACH,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClD;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC9C,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B;CACA,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;CAChD,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE;CACjC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC/C,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC;CACA,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;CACzC,GAAG;AACH;CACA;CACA;CACA;CACA;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC9C,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;CACzB,GAAG,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CACzD,GAAG;CACH,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;CACvE,EAAE;AACF;CACA,CAAC,IAAI,UAAU,CAAC,GAAG;CACnB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;CAC1B,EAAE;AACF;CACA,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE;CACxB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;CAC3B,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC;;CC7TD,SAAS,gBAAgB,EAAE;CAC3B,CAAC,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;AAC7C;CACA,CAAC,YAAY,CAAC,YAAY,CAAC;CAC3B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACT,EAAE,CAAC,CAAC;AACJ;CACA,CAAC,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC;CAC3C,EAAE,KAAK,EAAE,QAAQ;CACjB,EAAE,QAAQ,EAAE,CAAC;CACb,EAAE,OAAO,EAAE,CAAC;CACZ,EAAE,SAAS,EAAE,CAAC;CACd,EAAE,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;CAC5C,EAAE,CAAC,CAAC;AACJ;CACA,CAAC,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC;CAChC,CAAC,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;CAChE,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;AAC5B;CACA;CACA;CACA,CAAC,OAAO,UAAU,CAAC;CACnB,CAAC;AACD;CACA,SAAS,iBAAiB,EAAE;CAC5B,CAAC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACxC;CACA,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC5D,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CACxD,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC5D,CAAC,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC;CAC3B,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;CACxC,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;CAClC,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B;CACA,CAAC,OAAO,WAAW,CAAC;CACpB,CAAC;AACD;CACA,SAAS,eAAe,EAAE;CAC1B,CAAC,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACtC;CACA,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC1D,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CACtD,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC1D,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;CACzB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;CACtC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;CAChC,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;CAC3B;CACA,CAAC,OAAO,SAAS,CAAC;CAClB,CAAC;AACD;CACA,SAAS,uBAAuB,EAAE;CAClC,CAAC,MAAM,iBAAiB,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC9C;CACA,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAClE,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC9D,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAClE,CAAC,iBAAiB,CAAC,QAAQ,GAAG,EAAE,CAAC;CACjC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;CAC9C,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;CACxC,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;CACnC;CACA,CAAC,OAAO,iBAAiB,CAAC;CAC1B,CAAC;AACD;CACA,SAAS,sBAAsB,EAAE;CACjC,CAAC,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;AAC/C;CACA,CAAC,YAAY,CAAC,YAAY,CAAC;CAC3B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACT,EAAE,CAAC,CAAC;AACJ;CACA,CAAC,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC;CAC7C,EAAE,KAAK,EAAE,QAAQ;CACjB,EAAE,SAAS,EAAE,CAAC;CACd,EAAE,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;CAC5C,EAAE,OAAO,EAAE,CAAC;CACZ,EAAE,MAAM,EAAE,IAAI;CACd,EAAE,CAAC,CAAC;AACJ;CACA,CAAC,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC;AAChC;CACA,CAAC,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;CACtE,CAAC,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;AAClC;CACA,CAAC,OAAO,gBAAgB,CAAC;CACzB,CAAC;AACD;CACA,SAAS,gBAAgB,EAAE;CAC3B,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AACxB;CACA,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;CACb,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;CAC5B,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CACjC,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACrC;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO;CAC5B,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CACf,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CACf,GAAG,CAAC;CACJ,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO;CAC5B,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CACf,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CACf,GAAG,CAAC;CACJ,GAAG,CAAC;AACJ;CACA,EAAE,WAAW,CAAC,IAAI;CAClB,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE;CAClB,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE;CAClB,GAAG,CAAC;CACJ,EAAE;AACF;CACA,CAAC,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;CAC3C,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACpC;CACA,CAAC,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC;CACzC,EAAE,KAAK,EAAE,QAAQ;CACjB,EAAE,QAAQ,EAAE,CAAC;CACb,EAAE,OAAO,EAAE,CAAC;CACZ,EAAE,SAAS,EAAE,CAAC;CACd,EAAE,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;CAC5C,EAAE,CAAC,CAAC;AACJ;CACA,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;AAC5B;CACA,CAAC,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CACxD,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;CAC5B,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;AACnC;CACA,CAAC,OAAO,UAAU,CAAC;CACnB,CAAC;AACD;CACA,SAAS,kBAAkB,EAAE;CAC7B,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAChD,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;CAC3C;CACA,CAAC,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CAC7C,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;AAC9B;CACA,CAAC,OAAO,YAAY,CAAC;CACrB,CAAC;AACD;CACA,SAAS,UAAU,EAAE;CACrB,CAAC,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;AAC3C;CACA,CAAC,QAAQ,CAAC,YAAY,CAAC;CACvB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACT,EAAE,CAAC,CAAC;AACJ;CACA,CAAC,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC;CACzC,EAAE,KAAK,EAAE,QAAQ;CACjB,EAAE,SAAS,EAAE,CAAC;CACd,EAAE,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;CAC5C,EAAE,OAAO,EAAE,CAAC;CACZ,EAAE,MAAM,EAAE,IAAI;CACd,EAAE,CAAC,CAAC;AACJ;CACA,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;AAC5B;CACA,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD;CACA,CAAC,OAAO,IAAI,CAAC;CACb,CAAC;AACD;CACA,SAAS,YAAY,EAAE;AACvB;CACA,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AACxB;CACA,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;CACb,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;CAC5B,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CACjC,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACrC;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO;CAC5B,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CACf,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CACf,GAAG,CAAC;CACJ,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO;CAC5B,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CACf,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CACf,GAAG,CAAC;CACJ,GAAG,CAAC;AACJ;CACA,EAAE,WAAW,CAAC,IAAI;CAClB,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE;CAClB,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE;CAClB,GAAG,CAAC;CACJ,EAAE;AACF;CACA,CAAC,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;CAC3C,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACpC;CACA,CAAC,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC;CACzC,EAAE,KAAK,EAAE,QAAQ;CACjB,EAAE,QAAQ,EAAE,CAAC;CACb,EAAE,OAAO,EAAE,CAAC;CACZ,EAAE,SAAS,EAAE,CAAC;CACd,EAAE,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;CAC5C,EAAE,CAAC,CAAC;AACJ;CACA,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;AAC5B;CACA,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAClD,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B;CACA,CAAC,OAAO,IAAI,CAAC;AACb;CACA,CAAC;AACD;CACA,SAAS,aAAa,EAAE;AACxB;CACA,CAAC,MAAM,OAAO,GAAG;CACjB,EAAE,KAAK,EAAE,IAAI;CACb,EAAE,MAAM,EAAE,IAAI;CACd,EAAE,MAAM,EAAE,IAAI;CACd,EAAE,KAAK,EAAE,IAAI;CACb,EAAE,aAAa,EAAE,IAAI;CACrB,EAAE,cAAc,EAAE,IAAI;CACtB,EAAE,oBAAoB,EAAE,IAAI;CAC5B,EAAE,oBAAoB,EAAE,IAAI;CAC5B,EAAE,MAAM,EAAE,IAAI;AACd;CACA,EAAE,IAAI,EAAE,IAAI;CACZ,EAAE,CAAC;AACH;CACA,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAChD,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;AAC3C;CACA,CAAC;CACD,EAAE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACnC;CACA,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CACvD,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CACnD,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CACvD,EAAE,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;CACtB,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;CACnC,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;AAC7B;CACA,EAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;CACxB,EAAE;AACF;CACA,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CACzC,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CACzC,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CACxC,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,EAAE,CAAC;CACtC,CAAC,OAAO,CAAC,cAAc,GAAG,UAAU,EAAE,CAAC;CACvC,CAAC,OAAO,CAAC,oBAAoB,GAAG,UAAU,EAAE,CAAC;CAC7C,CAAC,OAAO,CAAC,oBAAoB,GAAG,UAAU,EAAE,CAAC;CAC7C,CAAC,OAAO,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;AACjC;CACA,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;CACrC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;CACjB,EAAE,OAAO,CAAC,aAAa;CACvB,EAAE,OAAO,CAAC,cAAc;CACxB,EAAE,OAAO,CAAC,oBAAoB;CAC9B,EAAE,OAAO,CAAC,oBAAoB;CAC9B,EAAE,OAAO,CAAC,MAAM;CAChB,EAAE,OAAO,CAAC,KAAK;CACf,EAAE,OAAO,CAAC,MAAM;CAChB,EAAE,OAAO,CAAC,MAAM;CAChB,EAAE,OAAO,CAAC,KAAK;CACf,EAAE,CAAC;AACH;CACA,CAAC,OAAO,OAAO,CAAC;CAChB,CAAC;AACD;AACA,CAAO,MAAM,OAAO,SAAS,KAAK,CAAC,QAAQ,CAAC;CAC5C,CAAC,WAAW,CAAC,GAAG;CAChB,EAAE,KAAK,EAAE,CAAC;AACV;CACA,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;AACzG;CACA,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;CACpD,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;CACnB,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;CAC7B,EAAE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;CAChC,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;CACzB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;CACtB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;CAC3B,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;CAC3B,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;CAC3B,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;CACzB,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;CAC5B,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C;CACA,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9D,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACzC;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;CACpB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;CAClB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;CACzB,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;CACvB,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;CACxB,EAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC7B;CACA,EAAE,IAAI,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAAC;CACvC,EAAE,IAAI,CAAC,WAAW,GAAG,iBAAiB,EAAE,CAAC;CACzC,EAAE,IAAI,CAAC,SAAS,GAAG,eAAe,EAAE,CAAC;CACrC,EAAE,IAAI,CAAC,iBAAiB,GAAG,uBAAuB,EAAE,CAAC;CACrD,EAAE,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,EAAE,CAAC;CACnD,EAAE,IAAI,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAAC;CACvC,EAAE,IAAI,CAAC,YAAY,GAAG,kBAAkB,EAAE,CAAC;AAC3C;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC;AACjC;CACA,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CAC5B,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;CAC7B,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CAC3B,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;CACnC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CAC5B,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9B;CACA,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B;CACA,EAAE;AACF;CACA,CAAC,oBAAoB,CAAC,GAAG;CACzB,EAAE,IAAI,cAAc,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC;CACrD;CACA,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK;CACpB,GAAG,SAAS,EAAE,KAAK;CACnB,GAAG,UAAU,EAAE,KAAK,CAAC;CACrB,GAAG,CAAC;AACJ;CACA,EAAE,OAAO,cAAc,CAAC;CACxB,EAAE;AACF;CACA,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE;CACnB,EAAE,IAAI,KAAK,YAAY,KAAK,CAAC,OAAO,EAAE;CACtC,GAAG,KAAK,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;CAC7B,GAAG,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC;CAClC,GAAG,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;CACnD,GAAG;CACH,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B;CACA;CACA,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAChF;CACA,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACnB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B;CACA,EAAE;CACF,GAAG,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;CAC/C,GAAG,YAAY,CAAC,YAAY,EAAE;CAC9B,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;CACZ,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;CACZ,IAAI,CAAC,CAAC;AACN;CACA,GAAG,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC;CAC7C,IAAI,KAAK,EAAE,QAAQ;CACnB,IAAI,SAAS,EAAE,CAAC;CAChB,IAAI,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;CAC9C,IAAI,CAAC,CAAC;AACN;CACA,GAAG,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC;AAClC;CACA,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;CAC1D,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB;CACA,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAClB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACzB,GAAG;AACH;CACA,EAAE;CACF,GAAG,IAAI,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;CACpC,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CACxD,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC5D,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;CACxC,GAAG,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;CAC7B,GAAG,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;CAC3B,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CACnC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;CACvB,GAAG;AACH;CACA,EAAE;CACF,GAAG,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;CACrC,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CACzD,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC7D,GAAG,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;CAC5B,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;CACzC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;CACnC,GAAG,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;CAC9B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CACrC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;CACxB,GAAG;AACH;CACA,EAAE;CACF,GAAG,IAAI,eAAe,GAAG,IAAI,UAAU,EAAE,CAAC;CAC1C,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC9D,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAClE,GAAG,eAAe,CAAC,QAAQ,GAAG,EAAE,CAAC;CACjC,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;CAC9C,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;CACxC,GAAG,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;CACnC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;CAC/C,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;CAC7B,GAAG;AACH;CACA,EAAE;CACF,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK;CACrB,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,8BAA8B;CAChD,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG;CACf,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE;CACrC,KAAK,CAAC,CAAC,MAAM;CACb,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW;CAC/B,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1B;CACA,IAAI,IAAI,CAAC,EAAE;CACX,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACjD,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;CACnB,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACjC,MAAM,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,EAAE;CAC1E,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACjC,OAAO;AACP;CACA,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;CACtC,MAAM;CACN,KAAK;CACL,IAAI,CAAC;AACL;CACA,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI;CACnB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAChD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;CAClB,KAAK,IAAI,CAAC,aAAa,CAAC;CACxB,MAAM,MAAM,EAAE,gBAAgB;CAC9B,MAAM,aAAa,EAAE,IAAI;CACzB,MAAM,OAAO,EAAE,CAAC;CAChB,MAAM,CAAC,CAAC;CACR,KAAK;CACL,IAAI,CAAC;AACL;CACA,GAAG,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;CACtE,GAAG,IAAI,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvE;CACA,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACzC,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACzC,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;CACnD,GAAG,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;CACrD,GAAG;AACH;CACA,EAAE,IAAI,KAAK,GAAG;CACd,GAAG,IAAI,EAAE,cAAc;CACvB,GAAG,WAAW,EAAE,IAAI;CACpB,GAAG,MAAM,EAAE,MAAM;CACjB,GAAG,CAAC;CACJ,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5B;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;CAChD,EAAE;AACF;CACA,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE;CACtB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B;CACA,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC;CACA,EAAE,IAAI,SAAS,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;CAClD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;CACrC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC;CACA,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;CAC1C,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;CACvC,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC;CACA,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;CACvC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAChC;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAChB;CACA,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;CAClE,EAAE;AACF;CACA,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE;CAC1B,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC7B;CACA,EAAE,IAAI,KAAK,GAAG;CACd,GAAG,IAAI,EAAE,cAAc;CACvB,GAAG,OAAO,EAAE,IAAI;CAChB,GAAG,KAAK,EAAE,KAAK;CACf,GAAG,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;CACnC,GAAG,CAAC;CACJ,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5B;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE;CAC/B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CACjC,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC;CACA,EAAE,IAAI,KAAK,GAAG;CACd,GAAG,IAAI,EAAE,cAAc;CACvB,GAAG,OAAO,EAAE,IAAI;CAChB,GAAG,KAAK,EAAE,KAAK;CACf,GAAG,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE;CAC7B,GAAG,CAAC;CACJ,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5B;CACA,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,OAAO,CAAC,GAAG;CACZ,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;CACf,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACjC;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC/C,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;CACpC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;CACpC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;CACzC,GAAG,CAAC,GAAG,CAAC,CAAC;CACT,GAAG;AACH;CACA,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;CAC5B,EAAE;AACF;CACA,CAAC,gBAAgB,CAAC,GAAG;CACrB,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;CAChC,GAAG,OAAO,CAAC,CAAC;CACZ,GAAG;AACH;CACA,EAAE,IAAI,QAAQ,GAAG,CAAC,CAAC;AACnB;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC/C,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;CAC1C,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;CACtC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC;CACA,GAAG,QAAQ,IAAI,CAAC,CAAC;CACjB,GAAG;AACH;CACA,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;CAC7C,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;CACvC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;CAC3D,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClC;CACA,GAAG,QAAQ,IAAI,CAAC,CAAC;CACjB,GAAG;AACH;CACA,EAAE,OAAO,QAAQ,CAAC;CAClB,EAAE;AACF;CACA,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;CACpD,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;CACjF,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjF;CACA;CACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;CACjE,EAAE,GAAG,WAAW,KAAK,CAAC,CAAC;CACvB,GAAG,OAAO,CAAC,CAAC;CACZ,GAAG,KAAI;CACP,GAAG,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACzB,GAAG;CACH,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;CAClB,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;CAC7D,GAAG,OAAO,CAAC,CAAC;CACZ,GAAG;AACH;CACA,EAAE,IAAI,QAAQ,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;CAC9F,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CACjC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D;CACA,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;CAC1D,EAAE;AACF;CACA;CACA;CACA;CACA;AACA;CACA;AACA;CACA;AACA;CACA;CACA;CACA;AACA;CACA,CAAC,MAAM,CAAC,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;CAChC,GAAG,OAAO;CACV,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;CACvC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC9B,GAAG,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;CACjC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3C;CACA,GAAG;CACH,IAAI,IAAI,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;CACnD;CACA,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACrF,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC;CACA,IAAI,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;CACnD,IAAI;AACJ;CACA,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC;CACA,EAAE,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;CACrC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;CACvC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC9B,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;CAChC,GAAG;CACH,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;CACvC,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;CACjB,GAAG,IAAI,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACnD,GAAG,IAAI,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;AACrD;CACA,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAClC,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;CAC1C,GAAG,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAClD;CACA,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpC;CACA;CACA,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;CACxC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACtC;CACA,GAAG;CACH,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjC;CACA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACrC;CACA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACvC;CACA,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;CAC/B,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;CACZ,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;CAChE,KAAK,CAAC,CAAC;AACP;CACA,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;CAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;CAC1C,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;CAChC,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;CACpD;CACA,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;CACvB,KAAK,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;CAC1B,KAAK;CACL,IAAI;AACJ;CACA,GAAG;CACH,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC;CACA,IAAI,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;CACzD,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;CACnC,IAAI,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;CACxC,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACjE;CACA,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC;CACA,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;CACpB,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC;CACjE,KAAK,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;CAChG,KAAK,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;CAC1C,KAAK;AACL;CACA,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CACzD,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAChD,IAAI,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,KAAK,KAAK,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;CAC5H,IAAI;AACJ;CACA,GAAG;CACH,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CACzC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AAC3E;CACA,IAAI,IAAI,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;CACrE,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;CAC5B,IAAI,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;AAClF;CACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC1H,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AACpB;CACA,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;CACxE,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC;CACA,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;CACjF,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B;CACA,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK,KAAK,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;CACvH,IAAI;CACJ,GAAG;AACH;CACA,EAAE;CACF,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;CACpC,GAAG,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;CACxC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9C;CACA,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;CACxB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CACjF,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;CAC9C,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;CAC/D,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;CACzB,IAAI,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC;CAC1B,IAAI,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B;CACA,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;CACjE,IAAI,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/D;CACA,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC;CACA,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;CACrC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;CACZ,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;CAC7C,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;CAC7C,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;CAC3C,KAAK,CAAC,CAAC;AACP;CACA,IAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;CAClD;CACA;CACA,IAAI,UAAU,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;CAChD,IAAI,UAAU,CAAC,oBAAoB,EAAE,CAAC;AACtC;CACA;CACA;AACA;CACA,IAAI,IAAI,mBAAmB,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;CACzE,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACxD;CACA,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;CACpB,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC;CACjE,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;CAC5F,KAAK,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;CAC1C,KAAK;AACL;CACA,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CACvD,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CACvC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAClC,IAAI;CACJ,GAAG;AACH;CACA,EAAE;CACF,GAAG,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;CACpD,GAAG,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;CAClD,GAAG,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;CACtC,GAAG,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1C;CACA,GAAG,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC/C;CACA,GAAG,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC;CAC7D,GAAG,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC;CAC5D,GAAG,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC;CACtD,GAAG,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC;AACxD;CACA,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC;AACpC;CACA,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;CACtC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;CACtC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;CACtC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;AAC/C;CACA,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7D,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC;AACA;CACA,IAAI,MAAM,KAAK,GAAG,MAAM,GAAG,EAAE,CAAC;CAC9B,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACvC,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAChD;CACA;CACA;AACA;CACA,IAAI,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAE;CAC5C,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;CACZ,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;CACvC,KAAK,EAAE,CAAC;AACR;CACA,IAAI,gBAAgB,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;CACxD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;CACtD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC3C,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;AAC5C;CACA,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACzC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACrC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAC9B;CACA,IAAI,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;CACrC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/E,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD;CACA,IAAI;CACJ,GAAG;AACH;CACA,EAAE;CACF,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC1C,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;CACrE,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC7B;CACA,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC;CACnB,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC;CAChE,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;CACjH,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;CACzC,IAAI;AACJ;CACA,GAAG,IAAI,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CAClD,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CAC3C,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC/B,GAAG;AACH;CACA;CACA,EAAE;AACF;CACA,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE;CACjC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC/C,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC;CACA,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;CACzC,GAAG;AACH;CACA;CACA;CACA;CACA;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC9C,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;CACzB,GAAG,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CACzD,GAAG;CACH,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;CACvE,EAAE;AACF;CACA,CAAC,IAAI,eAAe,CAAC,GAAG;CACxB,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC;CAC/B,EAAE;AACF;CACA,CAAC,IAAI,eAAe,CAAC,CAAC,KAAK,EAAE;CAC7B,EAAE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;CAChC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,IAAI,UAAU,CAAC,GAAG;CACnB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;CAC1B,EAAE;AACF;CACA,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE;CACxB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;CAC3B,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,IAAI,UAAU,CAAC,GAAG;CACnB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;CAC1B,EAAE;AACF;CACA,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE;CACxB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;CAC3B,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,IAAI,WAAW,EAAE;CAClB,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC;CAC3B,EAAE;AACF;CACA,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;CACvB,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;CAC5B,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,IAAI,SAAS,CAAC,GAAG;CAClB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC;CACzB,EAAE;AACF;CACA,CAAC,IAAI,SAAS,CAAC,CAAC,KAAK,EAAE;CACvB,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;CAC1B,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,IAAI,UAAU,CAAC,GAAG;CACnB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;CAC1B,EAAE;AACF;CACA,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE;CACxB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;CAC3B,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,IAAI,QAAQ,CAAC,GAAG;CACjB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC;CACxB,EAAE;AACF;CACA,CAAC,IAAI,QAAQ,CAAC,CAAC,KAAK,EAAE;CACtB,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;CACzB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,IAAI,MAAM,CAAC,GAAG;CACf,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;CACtB,EAAE;AACF;CACA,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE;CACpB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;CACvB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC,IAAI,aAAa,CAAC,GAAG;CACtB,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC;CAC7B,EAAE;AACF;CACA,CAAC,IAAI,aAAa,CAAC,CAAC,KAAK,EAAE;CAC3B,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;CAC9B,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE;AACF;CACA,CAAC;;CC15BM,MAAM,iBAAiB,SAAS,KAAK,CAAC,QAAQ;CACrD;CACA,CAAC,WAAW,CAAC,MAAM,CAAC;CACpB,EAAE,KAAK,EAAE,CAAC;AACV;CACA,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;CACzG,EAAE,IAAI,CAAC,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAChE;CACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;CAC/B,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;CACzD,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;CACrD,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;CAClC,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;CACvC,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACrE;CACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;CAC3D,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AACzD;CACA;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;CACpB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;CAC3B,EAAE;AACF;CACA,CAAC,SAAS,GAAG;AACb;CACA,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AAChC;CACA,EAAE,IAAI,MAAM,CAAC;AACb;CACA,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI;CAClB,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;CAC7D,GAAG,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,OAAO;CACvC,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG;CAC3C,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG;CAC7C,IAAI,CAAC;CACL,IAAI,CAAC;AACL;CACA,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;CACtC,GAAG,CAAC;CACJ;CACA,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI;CAClB,GAAG,MAAM,EAAE,CAAC;CACZ,GAAG,CAAC;CACJ;CACA,EAAE,MAAM,GAAG,CAAC,IAAI;CAChB,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5C,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5C,GAAG,CAAC;CACJ;CACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACxC,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACxC;AACA;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC5B,EAAE;AACF;CACA,CAAC,gBAAgB,GAAG;CACpB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;CAC9B,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CACnD,GAAG;CACH,EAAE;AACF;CACA,CAAC;;GAAC,FCxDK,MAAM,KAAK,CAAC;CACnB,CAAC,aAAa,qBAAqB,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE;CACrD,EAAE,IAAI,QAAQ,GAAG,EAAE,CAAC;AACpB;CACA,EAAE,IAAI,YAAY,GAAG,MAAM;CAC3B,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;CACtB,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C;CACA,EAAE,MAAM,IAAI,CAAC;CACb,GAAG,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;AACpC;CACA,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE;CACpB,IAAI,YAAY,EAAE,CAAC;CACnB,IAAI,MAAM;CACV,IAAI;AACJ;CACA,GAAG,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;CAC/F,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAChC,IAAI;CACJ,GAAG;AACH;CACA,EAAE;AACF;CACA,CAAC,OAAO,QAAQ,CAAC,CAAC,KAAK,EAAE;CACzB,EAAE,IAAI,KAAK,YAAY,KAAK,CAAC,OAAO,EAAE;CACtC,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACrF,GAAG,MAAM;CACT,GAAG,OAAO,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;CAC1B,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,YAAY,CAAC,CAAC,GAAG,EAAE;CAC3B,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB;CACA,EAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1E,EAAE;AACF;CACA,CAAC,OAAO,UAAU,CAAC,CAAC,GAAG,EAAE;CACzB,EAAE,IAAI,GAAG,GAAG,UAAU,CAAC,oBAAoB,EAAE,CAAC;CAC9C,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;CAC9B,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACjB,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;CAC1B,GAAG,OAAO,KAAK,CAAC;CAChB,GAAG;CACH,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA,CAAC,OAAO,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;CACnD,EAAE,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnD,EAAE,IAAI,QAAQ,CAAC;AACf;CACA,EAAE,GAAG,KAAK,KAAK,SAAS,CAAC;CACzB,GAAG,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAC1D,GAAG,KAAI;CACP,GAAG,QAAQ,GAAG,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;CAC7C,GAAG;CACH,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAClD,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CACjC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CACxC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACrB,EAAE;AACF;CACA,CAAC,OAAO,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;AAC5C;CACA,EAAE,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;CAC/D,EAAE,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;AACtC;CACA,EAAE,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACxC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC;CACA,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;CAChD,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B;CACA,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;CACjB,EAAE;AACF;CACA,CAAC,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;CAC1D,EAAE,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D;CACA,EAAE,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;AACtC;CACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;CACb,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;CAC7B,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CAClC,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACtC;CACA,GAAG,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO;CAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CAChB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CAChB,IAAI,CAAC;CACL,IAAI,CAAC;AACL;CACA,GAAG,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO;CAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CAChB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CAChB,IAAI,CAAC;CACL,IAAI,CAAC;AACL;CACA,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CAClC,GAAG;AACH;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;CAChD,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC3B,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC;CACA,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;CACjB,EAAE;AACF;CACA,CAAC,OAAO,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,GAAG,QAAQ,CAAC;CAChF;CACA,EAAE,IAAI,QAAQ,GAAG;CACjB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC;CACA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtC;CACA,EAAE,IAAI,KAAK,GAAG;CACd,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjC,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAClD;CACA,EAAE,IAAI,SAAS,GAAG;CAClB,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC;CAC/D,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC/D;CACA,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC;CAC/D,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC/D;CACA,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC;CAC/D,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC;CAC/D,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,IAAI,MAAM,IAAI,QAAQ,CAAC;CAC7B,GAAG,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACpD;CACA,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;CACjD,GAAG;AACH;CACA,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC;CACxB,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;CACjE,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/D;CACA,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;CAC9C,GAAG;AACH;CACA,EAAE,IAAI,IAAI,QAAQ,IAAI,SAAS,CAAC;CAChC,GAAG,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC7E;CACA,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;CACvD,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;AAC7D;CACA,EAAE,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9D;CACA,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1B;CACA,EAAE;AACF;CACA;CACA;CACA;CACA,CAAC,OAAO,6BAA6B,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE;CACvD,EAAE,IAAI,QAAQ,GAAG;CACjB,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;CAC7E,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;CAC7E,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;CAC7E,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;CAC7E,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;CAC7E,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;CAC7E,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;CAC7E,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;CAC7E,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;CAC7E,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;CACrC,EAAE,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACtC;CACA,EAAE,OAAO,WAAW,CAAC;CACrB,EAAE;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,OAAO,SAAS,CAAC,CAAC,IAAI,EAAE;CACzB,EAAE,IAAI,IAAI,EAAE,CAAC;CACb,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC1B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAChB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CAC1C,EAAE,IAAI,GAAG,GAAG,cAAc,CAAC;CAC3B,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;CACvB,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;CAC3C,GAAG;CACH,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;CACjB,EAAE;AACF;CACA,CAAC,OAAO,YAAY,CAAC,CAAC,GAAG,EAAE;CAC3B,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;CAC/B,EAAE;AACF;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,OAAO,YAAY,CAAC,CAAC,IAAI,EAAE;CAC5B,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC;CAChE,EAAE,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD;CACA,EAAE,OAAO,MAAM,CAAC;CAChB,EAAE;AACF;CACA,CAAC,OAAO,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC;AAC7C;CACA,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;CACxB,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;CACvC,EAAE,IAAI,iBAAiB,GAAG,GAAG,CAAC;CAC9B,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACxC;CACA,EAAE;CACF,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;CACjF,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CACxB,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;CACjB,GAAG;AACH;CACA,EAAE;CACF,GAAG,IAAI,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;CACjE,GAAG,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU;CAC9C,IAAI,MAAM,CAAC,QAAQ;CACnB,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,iBAAiB,CAAC;CAC3F,IAAI,CAAC;CACL,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;CACxE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CACxB,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM;CACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CACxB,IAAI,CAAC,CAAC;CACN,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM;CAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CACxB,IAAI,CAAC,CAAC;CACN,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;CACjB,GAAG;AACH;CACA,EAAE;AACF;CACA,CAAC,OAAO,UAAU,CAAC,CAAC,IAAI,EAAE;CAC1B,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;CAClG,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzB,EAAE,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;AAChC;CACA,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC;CACtB,EAAE,IAAI,IAAI,GAAG;CACb,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;CAC7C,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;CAC7C,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;CAC7C,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,aAAa,GAAG,EAAE,CAAC;CACzB,EAAE;CACF,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC/B,IAAI,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC;CAC/C,KAAK,GAAG,EAAE,IAAI;CACd,KAAK,IAAI,EAAE,KAAK,CAAC,QAAQ;CACzB,KAAK,SAAS,EAAE,KAAK;CACrB,KAAK,UAAU,EAAE,KAAK;CACtB,KAAK,KAAK,EAAE,QAAQ;CACpB,KAAK,CAAC,CAAC;AACP;CACA,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC;CACA,IAAI,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;CAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;CACvB,KAAK,SAAS,MAAM,EAAE,OAAO,EAAE;CAC/B,MAAM,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC;CAC7B,MAAM,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;CAClC,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;CACtC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,EAAE;CAChC;CACA,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;CAC7B,MAAM,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;CAC5C,MAAM;CACN,KAAK,CAAC;CACN,IAAI;CACJ,GAAG;AACH;CACA,EAAE,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CAC7D,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC1D;CACA,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACpB;CACA;CACA,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACjC;CACA,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;CAC5C,EAAE;AACF;CACA,CAAC,OAAO,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;CACnD,EAAE,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC;CAC7C,GAAG,KAAK,EAAE,KAAK,IAAI,QAAQ;CAC3B,GAAG,CAAC,CAAC;AACL;CACA,EAAE,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;CACtC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;CACpC,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9G,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9G,GAAG;AACH;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;CACnC,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,GAAG,KAAK,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9G,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,GAAG,KAAK,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9G,GAAG;AACH;CACA,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;CAC1E,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;CAC5B,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA,CAAC,OAAO,uBAAuB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE;CAChD,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;CACxB,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/D,GAAG,CAAC;AACJ;CACA;CACA,EAAE,IAAI,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;CAC5B,EAAE,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACtC;CACA,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;CAClC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;CACpC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;CAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACjC;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;CAC1B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;CACtC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAChE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;CACnC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAChB;CACA;AACA;CACA,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5D,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5D,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5D,IAAI;CACJ,GAAG;AACH;CACA,EAAE,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CAC5E,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AAC7B;CACA,EAAE,OAAO,OAAO,CAAC;CACjB,EAAE;AACF;CACA,CAAC,OAAO,8BAA8B,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,EAAE,EAAE;CACzF;CACA,EAAE,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;CACjC;CACA,EAAE,IAAI,MAAM,GAAG;CACf,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC;CACzD,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;CAC3D,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,UAAU,GAAG,EAAE,CAAC;AACtB;CACA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;CACxB,GAAG,UAAU,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;CAC/C,GAAG;AACH;CACA,EAAE,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;CACzB,EAAE,UAAU,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;AAC5D;CACA,EAAE,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;CACxC,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;AAC1B;CACA,EAAE,IAAI,kBAAkB,GAAG,IAAI,CAAC;CAChC,EAAE,IAAI,eAAe,GAAG,QAAQ,CAAC;CACjC,EAAE,IAAI,mBAAmB,GAAG,IAAI,CAAC;CACjC,EAAE,IAAI,YAAY,GAAG,IAAI,CAAC;CAC1B;CACA,EAAE,IAAI,IAAI,UAAU,IAAI,WAAW,CAAC;CACpC,GAAG,IAAI,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;CAChE;CACA,GAAG,GAAG,CAAC,KAAK,CAAC;CACb,IAAI,SAAS;CACb,IAAI;AACJ;CACA,GAAG,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC7D;CACA,GAAG,IAAI,QAAQ,GAAG,eAAe,EAAE;CACnC,IAAI,eAAe,GAAG,QAAQ,CAAC;CAC/B,IAAI,kBAAkB,GAAG,UAAU,CAAC;CACpC,IAAI,mBAAmB,GAAG,KAAK,CAAC,QAAQ,CAAC;CACzC,IAAI,YAAY,GAAG,KAAK,CAAC;CACzB,IAAI;CACJ,GAAG;AACH;CACA,EAAE,IAAI,kBAAkB,EAAE;CAC1B,GAAG,OAAO;CACV,IAAI,QAAQ,EAAE,mBAAmB;CACjC,IAAI,QAAQ,EAAE,eAAe;CAC7B,IAAI,UAAU,EAAE,kBAAkB;CAClC,IAAI,KAAK,EAAE,YAAY;CACvB,IAAI,CAAC;CACL,GAAG,MAAM;CACT,GAAG,OAAO,IAAI,CAAC;CACf,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CACnD,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;CAChD,EAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;CACvB,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB;CACA,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxC;CACA,EAAE,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC1C,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;CAC3B,GAAG;AACH;CACA,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CACzD,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC;CACA,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;CACxB,EAAE,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;CAC/B;AACA;CACA,EAAE,OAAO,GAAG,CAAC;CACb,EAAE;AACF;CACA,CAAC,OAAO,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CACpD,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;CAChD,EAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;CACvB,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB;CACA,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxC;CACA,EAAE,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC1C,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;CAC3B,GAAG;AACH;CACA,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CACzD,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC;CACA,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AACnC;CACA,EAAE,OAAO,OAAO,CAAC;CACjB,EAAE;AACF;CACA,CAAC,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;CAClD,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;CAChD,EAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;CACvB,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB;CACA,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxC;CACA,EAAE,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C;CACA;CACA;CACA;AACA;CACA;CACA,EAAE,IAAI,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC;CAC/B,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;CAC/C,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B;CACA,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC;CAC/E,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC;CAC/E,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC;CACvC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC;CACvC,GAAG;AACH;CACA,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CACzD,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC;CACA,EAAE,OAAO,MAAM,CAAC;CAChB,EAAE;AACF;CACA,CAAC,OAAO,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC;CACzC,EAAE,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE;CAC3C,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;CACrC,GAAG,OAAO,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;CACxC,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;AAChD;CACA,EAAE,IAAI,eAAe,GAAG;CACxB,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;CAC/B,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;CACjC,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;CAC5E,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;CACvC,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;CAC3B,EAAE,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;AAC7E;CACA,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC7C;CACA,EAAE,OAAO,GAAG,CAAC;CACb,EAAE;AACF;CACA,CAAC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC;CAC5E,EAAE,GAAG,MAAM,YAAY,KAAK,CAAC,kBAAkB,CAAC;CAChD,GAAG,OAAO,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;CACjG,GAAG,KAAK,GAAG,MAAM,YAAY,KAAK,CAAC,iBAAiB,CAAC;CACrD,GAAG,OAAO,KAAK,CAAC,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;CACvG,GAAG,KAAI;CACP,GAAG,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;CACzC,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,0BAA0B,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE;CACxE,EAAE,IAAI,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC;CACtD,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC;AAC7C;CACA,EAAE,OAAO,MAAM,GAAG,UAAU,CAAC;CAC7B,EAAE;AACF;CACA,CAAC,OAAO,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;CACtE,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAChC,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACrC;CACA,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;CACxB,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;CACxB,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;CAC3C,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;CAC3C,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,WAAW,CAAC;CAC1C,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,YAAY,CAAC;CAC3C,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,WAAW,CAAC;CAC1C,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,YAAY,CAAC;CAC3C,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;CAC3B,EAAE;CACF;CACA;CACA,CAAC,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;CAC7B,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1C,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACzB,EAAE;AACF;CACA,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE;CACjC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACzB,EAAE;AACF;CACA,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE;CAChC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAChC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1C,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACzB,EAAE;AACF;CACA,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE;CACjC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACzB,EAAE;AACF;CACA;CACA,CAAC,OAAO,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC;CAC1C,EAAE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AAClC;CACA,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;CACnB,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;CAC3C,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACvB;CACA,GAAG,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;CACvC,IAAI,GAAG,KAAK,CAAC;CACb,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACvB,KAAK;CACL,IAAI;CACJ,GAAG;AACH;CACA,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC;CACzB,EAAE,IAAI,YAAY,GAAG,QAAQ,CAAC;CAC9B,EAAE,IAAI,eAAe,GAAG,QAAQ,CAAC;CACjC,EAAE,IAAI,YAAY,GAAG,CAAC,CAAC;AACvB;CACA,EAAE,IAAI,MAAM,IAAI,IAAI,KAAK,CAAC;AAC1B;CACA,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI;CAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,IAAI;CACzC,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;AAC9B;CACA,GAAG,GAAG,CAAC,MAAM,CAAC;CACd,IAAI,SAAS;CACb,IAAI;AACJ;CACA,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;CAC7C,GAAG,IAAI,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;CACjD,GAAG,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC;CACA,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;CAChD,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACjC,IAAI,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACrD,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AAC9C;CACA,IAAI,GAAG,QAAQ,GAAG,eAAe,CAAC;CAClC,KAAK,YAAY,GAAG,CAAC,CAAC;CACtB,KAAK,eAAe,GAAG,QAAQ,CAAC;CAChC,KAAK,YAAY,GAAG,KAAK,CAAC;CAC1B,KAAK,WAAW,GAAG,IAAI,CAAC;CACxB;CACA,KAAK;CACL,IAAI;CACJ,GAAG;AACH;CACA,EAAE,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC;CACrD,EAAE,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,OAAO;CACpC,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;CAC3D,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;CAC3D,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;CAC3D,GAAG,CAAC;AACJ;CACA,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC3D;CACA,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;CAChC,EAAE,MAAM,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;CACjC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD;CACA,EAAE,OAAO;CACT,GAAG,IAAI,EAAE,WAAW;CACpB,GAAG,KAAK,EAAE,YAAY;CACtB,GAAG,QAAQ,EAAE,QAAQ;CACrB,GAAG,CAAC;CACJ,EAAE;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,OAAO,yBAAyB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE;CACpD,EAAE,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAC9B,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;CAC7B,EAAE,IAAI,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;AACjC;CACA,EAAE,IAAI,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;AACrC;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC9B,GAAG,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACtD;CACA,GAAG,IAAI,QAAQ,GAAG,SAAS,EAAE;CAC7B,IAAI,OAAO,CAAC,CAAC;CACb,IAAI;AACJ;CACA,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;CACjD,GAAG;AACH;CACA,EAAE,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;CAChD,EAAE;AACF;CACA;CACA;CACA,CAAC,OAAO,mBAAmB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;CACnD,EAAE,IAAI,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;CAC5B,EAAE,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;AAChD;CACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;CACpC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;CACpC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AACpC;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CACjC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;CACrB,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;CACzB,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;CACzB,GAAG;AACH;CACA,EAAE,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;CAC7E,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;CAC7B,EAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;AAC1C;CACA,EAAE,OAAO,OAAO,CAAC;CACjB,EAAE;AACF;CACA;CACA,CAAC,OAAO,kBAAkB,CAAC,CAAC,IAAI,EAAE;CAClC,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC3D,EAAE,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC;CACxD,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CACrD,EAAE,OAAO,OAAO,KAAK,IAAI,GAAG,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;CACtF,EAAE;AACF;CACA,CAAC,OAAO,YAAY,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;CACnC;AACA;CACA,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC3D,EAAE,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;CAC5D,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrD;CACA,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;CACjC,EAAE,IAAI,OAAO,KAAK,IAAI,EAAE;CACxB,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;CAC5C,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACpB,IAAI,MAAM;CACV,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACpB,IAAI;AACJ;CACA,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;CAClC,GAAG,MAAM;CACT,GAAG,IAAI,QAAQ,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;CACrC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;CAC3C,GAAG;CACH,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;CAC3C,EAAE;AACF;CACA,CAAC,OAAO,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;CACpC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;CAC7B,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;CAC7B,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACtD;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE;CAC5B,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACvB,GAAG,MAAM;CACT,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACvB,GAAG;AACH;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE;CAC5B,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACvB,GAAG,MAAM;CACT,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACvB,GAAG;AACH;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE;CAC5B,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACvB,GAAG,MAAM;CACT,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACvB,GAAG;AACH;CACA,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAClC,EAAE;AACF;CACA;CACA,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC;CAC3B,EAAE,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACpD;CACA,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;CACpC,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;CACzB,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AAC1B;CACA,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;CAC/B,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;AAChC;CACA,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AAC7B;CACA,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;CACjC,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;CAClC,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;AACpC;CACA,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;AAC5C;CACA,EAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;AACxB;CACA,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACtC;CACA,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AACpB;CACA,GAAG,IAAI;CACP,GAAG,IAAI,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C,GAAG,GAAG,OAAO,CAAC;CACd,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;CAC5C,IAAI,KAAI;CACR,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;CAC5C,IAAI;CACJ,GAAG,CAAC,OAAO,GAAG,EAAE;CAChB,GAAG,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;CAC1D,GAAG;AACH;CACA,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACtC;CACA,EAAE;AACF;CACA,CAAC,OAAO,kBAAkB,CAAC,WAAW,CAAC;CACvC,EAAE,IAAI,WAAW,YAAY,OAAO,EAAE;CACtC,GAAG,IAAI,WAAW,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;CACtF,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;CACvD,IAAI,MAAM,IAAI,WAAW,CAAC,aAAa,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;CAC5F,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;CACnD,IAAI,MAAM,IAAI,WAAW,CAAC,UAAU,KAAK,CAAC,EAAE;CAC5C,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;CACpD,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,UAAU,EAAE;CAC7F,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;CACpD,IAAI,MAAM,IAAI,WAAW,CAAC,UAAU,EAAE;CACtC,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;CACrD,IAAI,MAAM;CACV,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;CACvD,IAAI;CACJ,GAAG,MAAM,IAAI,WAAW,YAAY,OAAO,EAAE;CAC7C,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;CACrD,GAAG,MAAM,IAAI,WAAW,YAAY,MAAM,EAAE;CAC5C,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;CACpD,GAAG,MAAM,IAAI,WAAW,YAAY,iBAAiB,EAAE;CACvD,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;CAC1D,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,sBAAsB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC9C;CACA,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7B;CACA,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK;CAC5B,GAAG,IAAI,MAAM;CACb,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C;CACA,GAAG,OAAO,MAAM,CAAC;CACjB,GAAG,CAAC;AACJ;AACA;CACA,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAC5E;CACA,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9E;AACA;CACA,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAClD;CACA,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC;AACA;CACA,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;CACjC,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;CACjC;CACA,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;CACrD,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD;CACA,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACxD;CACA,EAAE,OAAO,MAAM,CAAC;CAChB,EAAE;AACF;CACA,CAAC,OAAO,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CACpC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC9B,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B;CACA,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;AAC7C;CACA,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;CACjD,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACjD;CACA,EAAE,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;CACzD,EAAE,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACzD;CACA,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACvB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3C;CACA,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACvB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3C;CACA,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9D;CACA,EAAE,OAAO,MAAM,CAAC;AAChB;CACA;CACA;AACA;CACA;AACA;CACA;CACA;CACA,EAAE;AACF;CACA,CAAC,OAAO,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC;CAC7C,EAAE,GAAG,UAAU,CAAC;CAChB;CACA;AACA;CACA,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;CACxC,GAAG,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAClD;CACA,GAAG,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;CAChD,GAAG,IAAI,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;CACzD,GAAG,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACtF,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;AAC3C;CACA,GAAG,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;CACA,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;CACvD,GAAG,KAAI;CACP;AACA;CACA,GAAG,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;CACnE;CACA,GAAG,OAAO,GAAG,CAAC;CACd,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC;AAC1C;CACA,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC;AAClB;CACA,EAAE,GAAG,UAAU,CAAC;CAChB;CACA;AACA;CACA,GAAG,IAAI,SAAS,CAAC;AACjB;CACA,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;CACpC,IAAI,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;CAC3C,IAAI,MAAM;CACV,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;CACzC,IAAI,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;CAC7C,IAAI;AACJ;CACA,GAAG,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;CAChD,GAAG,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;CAChD,GAAG,MAAM,GAAG,GAAG;CACf,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;CACrB,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;CACrB,IAAI,CAAC;CACL,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;CACtD,GAAG,KAAI;CACP;AACA;CACA,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;CAC1C,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;CACtD,GAAG;AACH;CACA;CACA,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB;CACA,EAAE,OAAO,OAAO,CAAC;CACjB,EAAE;AACF;CACA,CAAC,aAAa,UAAU,CAAC,GAAG,CAAC;AAC7B;CACA,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,IAAI;AACjC;CACA,GAAG,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAChD;CACA,GAAG,GAAG,OAAO,CAAC;CACd,IAAI,OAAO,EAAE,CAAC;CACd,IAAI,KAAI;CACR,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD;CACA,IAAI,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC;AACpB;CACA,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM;CAC1B,KAAK,OAAO,EAAE,CAAC;CACf,KAAK,CAAC;CACN,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB;CACA,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CACtC,IAAI;CACJ,GAAG,CAAC,CAAC;CACL,EAAE;AACF;CACA,CAAC,OAAO,iBAAiB,CAAC,MAAM,CAAC;AACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACA;AACA;CACA,EAAE,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CACtD;CACA,EAAE,MAAM,IAAI,GAAG,4BAA4B,CAAC;CAC5C,EAAE,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CACpD,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;CAC3C,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;CAC5C;CACA,EAAE;CACF,GAAG,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CACvD;CACA,GAAG,MAAM,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;CAC3E,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;CACzD,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;AAC1E;CACA,GAAG,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;CAC9C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAC9B,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;CACrD,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvE;CACA,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CACxD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CACvD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE;CACA,IAAI,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CACrC,IAAI;AACJ;CACA,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;CACpC,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CACzB,GAAG;AACH;CACA,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CACtD,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;CAC7C,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;CAC9C,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7D,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC/C,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD;CACA,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CACxB;CACA,EAAE,OAAO,GAAG,CAAC;CACb,EAAE;AACF;CACA,CAAC,aAAa,OAAO,CAAC,QAAQ,CAAC;CAC/B;CACA,EAAE,OAAO,IAAI,OAAO,EAAE,CAAC,OAAO,KAAK;AACnC;CACA,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,IAAI;CAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM;CACxB,KAAK,OAAO,EAAE,CAAC;CACf,KAAK,CAAC,CAAC;CACP,IAAI,CAAC,CAAC;AACN;CACA,GAAG,CAAC,CAAC;AACL;CACA,EAAE;AACF;CACA,CAAC;AACD;CACA,KAAK,CAAC,UAAU,GAAG,IAAI,YAAY;CACnC,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;CACtC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC1E,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;CAC3C,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;CAC5C,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;CAC7C,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CACvC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AAClC;CACA,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;CACrD,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACtC;CACA,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;CACrC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;CAClD,GAAG,MAAM;CACT,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1D,GAAG;CACH,EAAE,CAAC;CACH,CAAC,EAAE,CAAC;;CC/iCG,MAAM,UAAU,SAAS,eAAe,CAAC;CAChD,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE;CACzB,EAAE,KAAK,EAAE,CAAC;AACV;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACpB,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC;CACzC,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;CAC7C,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;CACpC,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AACxC;CACA,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;CACtB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;CACxB,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,YAAY,KAAK,CAAC,OAAO,EAAE;CACrD,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;CACjC,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;CACvD,GAAG;AACH;CACA,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,YAAY,KAAK;CAC7D,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;CAC9E,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,YAAY,KAAK;CACzD,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;CAC1E,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;CAC5B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;CAChC,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;CACxB,EAAE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;CAClC,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;CAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;CACpC,EAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;CAC7B,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;CACvB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;CACxB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;CACvB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;CACvB,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;AACpF;CACA,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;CACrB,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;CACrB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AACtC;CACA,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,kBAAkB,CAAC;AAC5D;CACA,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,EAAE,SAAS,CAAC;AAC5B;AACA,kDAAkD,EAAE,IAAI,CAAC,YAAY,CAAC;AACtE;AACA;AACA,EAAE,CAAC,CAAC,CAAC;AACL;CACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;CACjE,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;CAC3D,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACnC,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;CACvE,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;CACrF;AACA;CACA,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM;CAC1B,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;CACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;CAChD,IAAI;CACJ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;CACrD,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtC;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;CACvC,GAAG,IAAI,CAAC,YAAY,MAAM,EAAE;CAC5B,IAAI,OAAO,CAAC,CAAC;CACb,IAAI,MAAM;CACV,IAAI,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;CACzB,IAAI;CACJ,GAAG,CAAC,CAAC;AACL;CACA,EAAE,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;CACnC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CACzB,GAAG;AACH;CACA,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;CACnC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9D;CACA,EAAE,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;CAC9B,GAAG,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;CACjF,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;CACpC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CAC5D,GAAG;AACH;CACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK;CAC/B,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC;CACnD,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC;CACrD,GAAG,CAAC;CACJ,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;CACjE;AACA;CACA,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;CAC7D,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D;CACA,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI;CACxC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;CAC5C,GAAG,CAAC,CAAC;AACL;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;CACvB;AACA;CACA,EAAE;AACF;CACA,CAAC,cAAc,CAAC,MAAM,CAAC;CACvB,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;CAChC,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,CAAC,CAAC;CACL;CACA,EAAE,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,EAAE,IAAI,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C,EAAE,IAAI,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C,EAAE,IAAI,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C;CACA,EAAE,IAAI,cAAc,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK;CACvC,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C;CACA,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACxC,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC;CACA,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACtC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACtC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACpC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACpC;CACA,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;CAC3B,GAAG,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC7C,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC/C,GAAG,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/E;CACA,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;CAC5B,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC5B;CACA,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;CACb,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;CAC3B,IAAI;CACJ,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;CACb,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;CAC3B,IAAI;AACJ;CACA,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1C,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC;CACA,GAAG,CAAC;AACJ;CACA,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;CACA,EAAE,IAAI,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;CACjD,EAAE,IAAI,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAClD;CACA,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;CAC/B,GAAG,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK;CACzB,IAAI,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;CAC/C,IAAI,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;CAChD,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAClF;CACA,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;CACjE,IAAI;CACJ,GAAG,IAAI,EAAE,MAAM;CACf,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;CAC9E,IAAI;CACJ,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,MAAM;CACzB,IAAI,IAAI,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC;CAC7E;AACA;CACA,IAAI,IAAI,IAAI,GAAG;CACf,KAAK,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI;CACnD,KAAK,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG;CACjD,KAAK,CAAC;AACN;CACA,IAAI,IAAI,KAAK,GAAG;CAChB,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC;CACvC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,eAAe,IAAI,CAAC;CACtC,KAAK,CAAC;AACN;CACA,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;CAChD,IAAI,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;CAC1C,MAAM,UAAU,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;CAC3D,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AACtB;CACA,IAAI,IAAI,YAAY,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;CAC5C,IAAI,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;CAC9B,IAAI,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B;CACA,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;CACtC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC7B;CACA,IAAI,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC1E,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CAChC,IAAI;CACJ,GAAG,CAAC,CAAC;AACL;CACA,EAAE,IAAI,cAAc,GAAG,MAAM;CAC7B,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;CAChC,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B;CACA,GAAG,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;CACvE,GAAG,IAAI,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC;CAC9C,GAAG,IAAI,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC;AAChD;CACA,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;CACrC,GAAG,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACxE;CACA,GAAG,IAAI,QAAQ,GAAG,CAAC,QAAQ,KAAK;CAChC,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;CACzC,IAAI,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AACxC;CACA,IAAI,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;CAC7G,IAAI,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;CACjG;CACA,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;CACjC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5B;CACA,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACxB,IAAI,SAAS,CAAC,CAAC,GAAG,eAAe,IAAI,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CAC1D,IAAI,SAAS,CAAC,CAAC,GAAG,gBAAgB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE;CACA,IAAI,OAAO,SAAS,CAAC;CACrB,IAAI,CAAC;CACL;CACA,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;CAC3B,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB;CACA,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9B;CACA,GAAG,CAAC;AACJ;CACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACpD;CACA,EAAE,IAAI,CAAC,OAAO,GAAG;CACjB,GAAG,UAAU,EAAE,UAAU;CACzB,GAAG,cAAc,EAAE,cAAc;CACjC,GAAG,cAAc,EAAE,cAAc;CACjC,GAAG,CAAC;CACJ,EAAE;AACF;CACA,CAAC,aAAa,CAAC,MAAM,CAAC;CACtB,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;CAChC,GAAG,OAAO;CACV,GAAG;AACH;CACA;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;CACnC,EAAE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACpE;CACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;CACtB,EAAE;AACF;CACA,CAAC,IAAI,OAAO,CAAC,GAAG;CAChB,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;CACvB,EAAE;AACF;CACA,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,EAAE;CACrB,EAAE,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;CAC/B,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxB;CACA;CACA;CACA;AACA;CACA,EAAE,IAAI,CAAC,aAAa,CAAC;CACrB,GAAG,IAAI,EAAE,oBAAoB;CAC7B,GAAG,UAAU,EAAE,IAAI;CACnB,GAAG,CAAC,CAAC;CACL,EAAE;AACF;CACA,CAAC,IAAI,OAAO,CAAC,GAAG;CAChB,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;CACvB,EAAE;AACF;CACA,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE;CACvB,EAAE,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;CACjC,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC1B;CACA,EAAE,IAAI,OAAO,EAAE;CACf;CACA,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;CAC1B,GAAG,MAAM;CACT;CACA,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;CAC1B,GAAG;CACH,EAAE;AACF;CACA,CAAC,IAAI,MAAM,CAAC,GAAG;CACf,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;CACtB,EAAE;AACF;CACA,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,EAAE;CACrB,EAAE,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;CAC/B,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,MAAM,EAAE;CACd,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;CACxB,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;CACvB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,IAAI;CACpC,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;CACzB,IAAI,CAAC,CAAC;CACN,GAAG;AACH;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;CACxB,EAAE;AACF;CACA,CAAC,IAAI,KAAK,CAAC,GAAG;CACd,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;CACrB,EAAE;AACF;CACA,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE;CACnB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;CAC7B,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;CACtB,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;CACvB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC;CACA,EAAE,IAAI,CAAC,aAAa,CAAC;CACrB,GAAG,IAAI,EAAE,oBAAoB;CAC7B,GAAG,UAAU,EAAE,IAAI;CACnB,GAAG,CAAC,CAAC;CACL,EAAE;AACF;CACA,CAAC,IAAI,WAAW,CAAC,GAAG;CACpB,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC;CAC3B,EAAE;AACF;CACA,CAAC,IAAI,WAAW,CAAC,CAAC,WAAW,EAAE;CAC/B,EAAE,IAAI,IAAI,CAAC,YAAY,KAAK,WAAW,EAAE;CACzC,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAClC;CACA,EAAE,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;CAC1F,EAAE,oBAAoB,CAAC,KAAK,EAAE,CAAC;CAC/B,EAAE,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACjD;CACA,EAAE,IAAI,CAAC,aAAa,CAAC;CACrB,GAAG,IAAI,EAAE,oBAAoB;CAC7B,GAAG,UAAU,EAAE,IAAI;CACnB,GAAG,CAAC,CAAC;CACL,EAAE;AACF;CACA,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE;CAClB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;CAC3C,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CAClC,GAAG,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;AAC5B;CACA,GAAG,IAAI,WAAW,GAAG,EAAE,CAAC;CACxB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD;CACA,GAAG,KAAK,IAAI,UAAU,IAAI,WAAW,EAAE;CACvC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;CACjB,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE;CACvB,KAAK,CAAC,CAAC,aAAa,CAAC;CACrB,MAAM,MAAM,EAAE,kBAAkB;CAChC,MAAM,YAAY,EAAE,UAAU;CAC9B,MAAM,CAAC,CAAC;CACR,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;CAClB,KAAK;CACL,IAAI;CACJ,GAAG;CACH,EAAE;AACF;CACA,CAAC,KAAK,CAAC,GAAG;CACV,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;CAC5B,GAAG,OAAO,CAAC,CAAC;CACZ,GAAG,MAAM;CACT,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CAClC,GAAG;CACH,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,UAAU,EAAE;CACtB,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;CAC5C,EAAE;AACF;CACA,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE;CACrB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;CACjC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;CAClC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;CACxB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC;CAC/D,GAAG,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG;CACH,EAAE;AACF;CACA,CAAC,iBAAiB,GAAG;CACrB,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;CACnC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;CAClC,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;CAC9B,IAAI;AACJ;CACA,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CACtB,GAAG,CAAC,CAAC;CACL,EAAE;AACF;CACA,CAAC,YAAY,CAAC,GAAG;CACjB,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AAC7B;CACA,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;CACrB,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CACpC,GAAG;AACH;CACA,EAAE,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;CACnC,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;AACxB;CACA,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;CAChC,GAAG;AACH;CACA,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC7B,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;CACpB,EAAE,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B;CACA,EAAE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;CAC/C,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;CACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC5B,IAAI;CACJ,GAAG;CACH,EAAE;AACF;CACA,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE;CAC/B,EAAE,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;CACnC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC3B,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,CAAC,GAAG;CACZ,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC;AACvB;CACA,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI;CAC9B,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CAChC,GAAG,CAAC,CAAC;AACL;CACA,EAAE,OAAO,WAAW,CAAC;CACrB,EAAE;AACF;CACA,CAAC,WAAW,CAAC,GAAG;CAChB,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC;AACvB;CACA,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI;CAC9B,GAAG,IAAI,UAAU,KAAK,IAAI,EAAE;CAC5B,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CACjC,IAAI;CACJ,GAAG,CAAC,CAAC;AACL;CACA,EAAE,OAAO,WAAW,CAAC;CACrB,EAAE;AACF;CACA,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE;CAC9B,EAAE,IAAI,WAAW,EAAE;CACnB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;CACzC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;CACrD,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC1C;CACA,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE;CAC1B,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;CACnC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CACnC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;CACnD,IAAI;CACJ,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;CACzC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;CACzC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;CACzC,GAAG,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;CACnC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CAC7C,GAAG;AACH;CACA,EAAE,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;CACnC,EAAE;AACF;CACA,CAAC,OAAO,CAAC,GAAG;CACZ,EAAE,IAAI,gBAAgB,GAAG,IAAI,CAAC,YAAY,YAAY,KAAK,CAAC,OAAO,CAAC;CACpE,EAAE,gBAAgB,GAAG,gBAAgB,IAAI,IAAI,CAAC,cAAc,YAAY,KAAK,CAAC,OAAO,CAAC;AACtF;CACA,EAAE,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;AAChD;CACA,EAAE,IAAI,OAAO,GAAG,gBAAgB,IAAI,aAAa,CAAC;AAClD;CACA,EAAE,OAAO,OAAO,CAAC;CACjB,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;CACnB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;CACvB,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;CAC7B,EAAE,IAAI,iBAAiB,GAAG,GAAG,CAAC;CAC9B,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACxC;CACA,EAAE,IAAI,SAAS,CAAC;CAChB,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;CACzB,GAAG,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;CACjC,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;CAC5B,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;CAC7B,GAAG,MAAM;CACT,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;CAC/D,GAAG;AACH;CACA,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;CAC3B,GAAG,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;AACzC;CACA,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;CACpD,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;CAC1B,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;CAClC,GAAG,IAAI,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;CACnF,GAAG,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;CACjC,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AAC/B;CACA,GAAG;CACH,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;CAClF,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CACzB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;CAClB,IAAI;AACJ;CACA,GAAG;CACH,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB;CACA,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;CAClC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC;CACnC,MAAM,QAAQ,CAAC,YAAY;CAC3B,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC;CACpE,MAAM,CAAC,CAAC;CACR,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CACzB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;CAClB,IAAI;CACJ,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,CAAC,GAAG;CACZ,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;CACrC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CAC9D,GAAG;CACH,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,GAAG;CACb,EAAE,OAAO,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;CACtC,EAAE;CACF,CAAC,CAAC;;CC1jBF,MAAM,QAAQ;CACd,CAAC,WAAW,CAAC,MAAM,CAAC;CACpB,EAAE,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACrC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;CAC3B,GAAG;CACH,EAAE;AACF;CACA,CAAC,OAAO,EAAE;CACV,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC7C,EAAE;CACF,CAAC,CAAC;AACF;CACA,MAAM,IAAI;AACV;CACA,CAAC,WAAW,CAAC,MAAM,CAAC;CACpB,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB;CACA,EAAE,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACrC,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B;CACA,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;CAChC,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;CACrB,IAAI,KAAI;CACR,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CACtC,IAAI;CACJ;CACA,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;CACnC,GAAG;CACH,EAAE;AACF;CACA,CAAC,SAAS,CAAC,KAAK,CAAC;CACjB,EAAE,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC1C,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;CAChC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;CACrB,IAAI;CACJ,GAAG;AACH;CACA,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACjD,EAAE;CACF;CACA,CAAC,CAAC;;ACrCU,OAAC,UAAU,GAAG;CAC1B,CAAC,YAAY,EAAE,CAAC;CAChB,CAAC,WAAW,EAAE,CAAC;CACf,CAAC,EAAE,EAAE,CAAC;CACN,CAAC,CAAC;AACF;AACA,AAAY,OAAC,QAAQ,GAAG;CACxB,CAAC,IAAI,EAAE,CAAC;CACR,CAAC,SAAS,EAAE,CAAC;CACb,CAAC,WAAW,EAAE,CAAC;CACf,CAAC,YAAY,EAAE,CAAC;CAChB,CAAC,CAAC;AACF;AACA,AAAY,OAAC,UAAU,GAAG;CAC1B,CAAC,UAAU,EAAE,CAAC;CACd,CAAC,UAAU,EAAE,CAAC;CACd,CAAC,CAAC;AACF;AACA,AAAY,OAAC,uBAAuB,GAAG;CACvC,CAAC,KAAK,EAAE,CAAC;CACT,CAAC,MAAM,EAAE,CAAC;CACV,CAAC,eAAe,EAAE,CAAC;CACnB,CAAC,CAAC;AACF;AACA,AAAY,OAAC,KAAK,GAAG;CACrB,CAAC,IAAI,EAAE,MAAM;CACb,CAAC,KAAK,EAAE,MAAM;CACd,CAAC,MAAM,EAAE,MAAM;CACf,CAAC,CAAC;AACF;AACA,AAAY,OAAC,aAAa,GAAG;CAC7B,CAAC,KAAK,EAAE,CAAC;CACT,CAAC,UAAU,EAAE,CAAC;CACd,CAAC,QAAQ,EAAE,CAAC;CACZ,CAAC,CAAC;AACF;AACA,AAAY,OAAC,UAAU,GAAG;CAC1B,CAAC,MAAM,EAAE,CAAC;CACV,CAAC,MAAM,EAAE,CAAC;CACV,CAAC,UAAU,EAAE,CAAC;CACd,CAAC,CAAC;AACF;AACA,AAAY,OAAC,QAAQ,GAAG;CACxB,CAAC,MAAM,EAAE,CAAC;CACV,CAAC,MAAM,EAAE,CAAC;CACV,CAAC,CAAC;AACF;AACA,AAAY,OAAC,WAAW,GAAG;CAC3B,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC;CACvC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC;CAC3C,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC;CAC/C,CAAC;;CCtDD,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD;AACA,AAAY,OAAC,QAAQ,IAAI,YAAY;AACrC;CACA,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;CACpF,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;CACjB,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA;CACA,CAAC,IAAI,gCAAgC,GAAG,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;CACrG,CAAC,IAAI,kCAAkC,GAAG,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;CACzG;AACA;CACA,CAAC,IAAI,kCAAkC,GAAG,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;CACzG,CAAC,IAAI,oCAAoC,GAAG,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;CAC7G;AACA;CACA,CAAC,IAAI,cAAc,GAAG,gCAAgC,CAAC,SAAS,GAAG,CAAC,IAAI,kCAAkC,CAAC,SAAS,GAAG,CAAC,CAAC;CACzH,CAAC,IAAI,gBAAgB,GAAG,kCAAkC,CAAC,SAAS,GAAG,CAAC,IAAI,oCAAoC,CAAC,SAAS,GAAG,CAAC,CAAC;CAC/H;AACA;CACA,CAAC,IAAI,SAAS,CAAC;CACf,CAAC,IAAI,cAAc,EAAE;CACrB,EAAE,SAAS,GAAG,OAAO,CAAC;CACtB,EAAE,MAAM,IAAI,gBAAgB,EAAE;CAC9B,EAAE,SAAS,GAAG,SAAS,CAAC;CACxB,EAAE,MAAM;CACR,EAAE,SAAS,GAAG,MAAM,CAAC;CACrB,EAAE;AACF;CACA,CAAC,OAAO;CACR,EAAE,oBAAoB,EAAE;CACxB,GAAG,WAAW,EAAE,YAAY;CAC5B,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC;AACzB;CACA,IAAI,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;CAC/D,IAAI,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC1E;CACA,IAAI,OAAO,SAAS,CAAC;CACrB,IAAI;CACJ,GAAG;CACH,EAAE,aAAa,EAAE;CACjB,GAAG,WAAW,EAAE,YAAY;CAC5B,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC;AACzB;CACA,IAAI,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;CAC/D,IAAI,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;CAClE,IAAI,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC1E;CACA,IAAI,OAAO,SAAS,CAAC;CACrB,IAAI;AACJ;CACA,GAAG;CACH,EAAE,UAAU,EAAE;CACd,GAAG,WAAW,EAAE,YAAY;CAC5B,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC;AACzB;CACA;CACA,IAAI,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;CAClE,IAAI,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC1E;CACA;AACA;CACA,IAAI,OAAO,SAAS,CAAC;CACrB,IAAI;AACJ;CACA,GAAG;CACH;CACA;CACA;CACA;CACA;CACA,EAAE,SAAS,EAAE,SAAS;CACtB,EAAE,CAAC;CACH,CAAC,EAAE,CAAC;;AC1EQ,OAAC,QAAQ,GAAG;AACxB;CACA,CAAC,IAAI,EAAE,EAAE;CACT,CAAC,EAAE,EAAE,EAAE;CACP,CAAC,KAAK,EAAE,EAAE;CACV,CAAC,MAAM,EAAE,EAAE;CACX,CAAC,MAAM,EAAE,EAAE;AACX;CACA,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;CACrB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;CACrB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;CACrB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;CACrB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;CACrB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;CACrB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;CACrB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;CACrB;CACA,CAAC;;CCjBD,MAAM,OAAO;AACb;CACA,CAAC,WAAW,CAAC,IAAI,CAAC;CAClB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;CACvB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACnB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACnB,EAAE;AACF;CACA,CAAC;AACD;CACA;CACA;CACA;CACA;CACA,MAAM,GAAG;AACT;CACA,CAAC,WAAW,EAAE;CACd;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACpB;CACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACnB;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;CAClB,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;CACrB,EAAE;AACF;CACA,CAAC,IAAI,EAAE;CACP,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;CACvB,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,IAAI,CAAC;CACf,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;CACrC,EAAE;AACF;CACA,CAAC,KAAK,CAAC,IAAI,CAAC;CACZ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;CACpB,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,IAAI,CAAC;CACX,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;CACnC;CACA,GAAG,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;CAC7B,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACpB,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;CAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;CAC9B,IAAI;AACJ;CACA,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;CAC9B,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnB;CACA,GAAG,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;CAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACtB,IAAI;CACJ,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;CACpC,GAAG,MAAM;CACT;CACA,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CAC9B,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;CAC/B;CACA,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;CAC5B,KAAK,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;CAC5B,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;CAChC,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;CAC/B,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACtB,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACtB,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;CAC/B,KAAK;CACL,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;CAClC;CACA,IAAI,MAAM;CACV;CACA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;CACnC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;CACvC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;CAC9B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;CAC9B,IAAI;CACJ,GAAG;CACH,EAAE;AACF;CACA,CAAC,MAAM,CAAC,IAAI,CAAC;CACb,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,OAAO,EAAE;CACf,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;CAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACtB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACrB,IAAI,MAAM;CACV,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;CAC3B,KAAK,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAC/B,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;CAChC,KAAK;CACL,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;CACvB,KAAK,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;CAClC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CAC3B,KAAK;CACL,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;CAC1C,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAC1C,KAAK,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;CAC9C,KAAK;CACL,IAAI;AACJ;CACA,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CAC9B,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;CACnB,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;CACpC,GAAG;CACH,EAAE;AACF;CACA,CAAC,UAAU,EAAE;CACb,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;CAC3B,GAAG,OAAO,IAAI,CAAC;CACf,GAAG;CACH,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB;CACA,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC;CAClB,EAAE;AACF;CACA,CAAC,QAAQ,EAAE;CACX,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC;CACpB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;CACxB,EAAE,OAAO,IAAI,KAAK,IAAI,EAAE;CACxB,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;CAC1B,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;CAC3B,IAAI,MAAM,IAAI,IAAI,CAAC;CACnB,IAAI;CACJ,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;CACpB,GAAG;CACH,EAAE,MAAM,IAAI,GAAG,CAAC;CAChB,EAAE,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC;CACpC,EAAE,OAAO,MAAM,CAAC;CAChB,EAAE;AACF;CACA,CAAC,UAAU,EAAE;CACb,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;CAC1B,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,OAAO,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,cAAc,EAAE;CACjD,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;CAC5B,GAAG,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAC3B,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;CACjC,GAAG;CACH,EAAE;AACF;CACA,CAAC,kBAAkB,CAAC,IAAI,CAAC;CACzB,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;CACjB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACnB,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;CAC3B,GAAG,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AAC7B;CACA;AACA;CACA,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CACrB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxB;CACA,GAAG,KAAK,IAAI,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE;CACrC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;CAC9C,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;CACvC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;CACvB,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;CACxC,MAAM;CACN,KAAK;CACL,IAAI;CACJ,GAAG;CACH,EAAE;AACF;CACA,CAAC;;CCtKM,MAAM,kBAAkB,SAAS,eAAe;AACvD;CACA,CAAC,WAAW,EAAE;CACd,EAAE,KAAK,EAAE,CAAC;CACV,EAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;CACnC,EAAE;AACF;CACA,CAAC,WAAW,CAAC,GAAG;CAChB,EAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACvC,EAAE;AACF;CACA,CAAC,cAAc,CAAC,GAAG;CACnB,EAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACvC,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,GAAG;CACb,EAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACvC,EAAE;AACF;CACA,CAAC,cAAc,CAAC,GAAG;CACnB,EAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACvC,EAAE;AACF;CACA,CAAC,UAAU,CAAC,GAAG;CACf,EAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACvC,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,GAAG;CACb,EAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACvC,EAAE;AACF;CACA,CAAC,iBAAiB,CAAC,GAAG;CACtB,EAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACvC,EAAE;CACF,CAAC,CAAC;AACF;AACA,CAAO,MAAM,cAAc,SAAS,KAAK,CAAC,QAAQ,CAAC;CACnD,CAAC,WAAW,CAAC,GAAG;CAChB,EAAE,KAAK,EAAE,CAAC;CACV,EAAE;AACF;CACA,CAAC,WAAW,CAAC,GAAG;CAChB,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;CAC5B,EAAE;CACF,CAAC,CAAC;;CChDF;CACA;CACA;CACA;CACA;AACA,AAAK,OAAC,mBAAmB,GAAG;CAC5B,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;CACxD,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;CACxD,CAAC,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;CACxD,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;CACxD,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;CACxD,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;CACxD,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;CACxD,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;CACxD,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;CACxD,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;CACxD,CAAC,CAAC;AACF;CACA,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,KAAK,IAAI,GAAG,IAAI,mBAAmB,EAAE;CACrC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;CACnD,CAAC,CAAC,EAAE,CAAC;CACL,CAAC;AACD,AAEA;AACA;CACA,MAAM,cAAc;CACpB;CACA,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;CACrC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACnB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACnB,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;CACjC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;CACpD,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;CACxB,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;CACrC,EAAE;AACF;CACA,CAAC,CAAC;AACF;CACA,cAAc,CAAC,kBAAkB,GAAG,IAAI,cAAc;CACtD,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAC/D;CACA,cAAc,CAAC,WAAW,GAAG,IAAI,cAAc;CAC/C,CAAC,cAAc,EAAE,mBAAmB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AACxD;CACA,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,WAAW,CAAC;AACzD;CACA,cAAc,CAAC,UAAU,GAAG,IAAI,cAAc;CAC9C,CAAC,cAAc,EAAE,mBAAmB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AACxD;CACA,cAAc,CAAC,aAAa,GAAG,IAAI,cAAc;CACjD,CAAC,eAAe,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAC1D;CACA,cAAc,CAAC,SAAS,GAAG,IAAI,cAAc;CAC7C,CAAC,WAAW,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACvD;CACA,cAAc,CAAC,cAAc,GAAG,IAAI,cAAc;CAClD,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAC3D;CACA,cAAc,CAAC,mBAAmB,GAAG,IAAI,cAAc;CACvD,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAChE;CACA,cAAc,CAAC,YAAY,GAAG,IAAI,cAAc;CAChD,CAAC,cAAc,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AACzD;CACA,cAAc,CAAC,MAAM,GAAG,IAAI,cAAc;CAC1C,CAAC,QAAQ,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;CACnD;CACA,cAAc,CAAC,aAAa,GAAG,IAAI,cAAc;CACjD,CAAC,eAAe,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;CAC1D;CACA,cAAc,CAAC,iBAAiB,GAAG,IAAI,cAAc;CACrD,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;CAC9D;CACA,cAAc,CAAC,SAAS,GAAG,IAAI,cAAc;CAC7C,CAAC,WAAW,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACvD;CACA,cAAc,CAAC,OAAO,GAAG,IAAI,cAAc;CAC3C,CAAC,SAAS,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACrD;CACA,cAAc,CAAC,OAAO,GAAG,IAAI,cAAc;CAC3C,CAAC,SAAS,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AACpD;CACA,cAAc,CAAC,QAAQ,GAAG,IAAI,cAAc;CAC5C,CAAC,UAAU,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACtD,AAEA;AACA,CAAO,MAAM,eAAe;AAC5B;CACA,CAAC,WAAW,CAAC,eAAe,CAAC;CAC7B,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;CACvB,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;CAChB,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB;CACA,EAAE,IAAI,eAAe,IAAI,IAAI,EAAE;CAC/B,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACpD,IAAI,IAAI,kBAAkB,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;CAChD,IAAI,IAAI,cAAc,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;CAC5D,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;CACzC,IAAI,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC;CAC7C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;CAChB,IAAI;CACJ,GAAG;CACH,EAAE;AACF;AACA;CACA,CAAC,GAAG,CAAC,cAAc,CAAC;CACpB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;CACvC,EAAE,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC;CAC3C,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;CACd,EAAE;AACF;CACA,CAAC,SAAS,CAAC,MAAM,CAAC;CAClB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC5B,EAAE;AACF;CACA,CAAC,SAAS,EAAE;CACZ,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;CACpC,GAAG,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;CAC9C,GAAG,IAAI,cAAc,CAAC,IAAI,KAAK,mBAAmB,CAAC,YAAY,EAAE;CACjE,IAAI,OAAO,IAAI,CAAC;CAChB,IAAI;CACJ,GAAG;AACH;CACA,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;AACF;CACA,CAAC,UAAU,EAAE;CACb,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;CACpC,GAAG,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;CAC9C,GAAG;CACH,IAAI,cAAc,KAAK,cAAc,CAAC,mBAAmB;CACzD,IAAI,cAAc,KAAK,cAAc,CAAC,aAAa;CACnD,IAAI,cAAc,KAAK,cAAc,CAAC,MAAM;CAC5C,IAAI,cAAc,KAAK,cAAc,CAAC,YAAY,EAAE;CACpD,IAAI,OAAO,IAAI,CAAC;CAChB,IAAI;CACJ,GAAG;AACH;CACA,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;AACF;CACA,CAAC;;CC/ID,MAAM,CAAC,CAAC;CACR,CAAC,OAAO,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE;CAC7B,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;CACvD,EAAE;AACF;CACA,CAAC,OAAO,MAAM,CAAC,CAAC,EAAE;CAClB,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC3D,EAAE;AACF;CACA,CAAC,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;CAC9B,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;CACnD,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;CACrE,EAAE,OAAO,GAAG,CAAC;CACb,EAAE;AACF;CACA,CAAC,OAAO,UAAU,CAAC,CAAC,EAAE;CACtB,EAAE,OAAO,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;CACjD,EAAE;CACF,CAAC,CAAC;AACF;AACA,CAAO,MAAM,qBAAqB,CAAC;CACnC,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;CACxB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;CAC7B,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;CAC3B,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;CAC3B,EAAE,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC/C;CACA,EAAE,IAAI,GAAG,GAAG;CACZ,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;CACzB,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;CACzB,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;CACzB,GAAG,CAAC;CACJ,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;CAC3C,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;CAC7C,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;CACrC,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACvC;CACA,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;CACjB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACnB,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AACpB;CACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;CACvB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;CACtC,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CACtC,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;CACrD,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACvC,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;CACvD,EAAE,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;CACjE,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3C;CACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;CACzB,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACjC;CACA,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;CACvC,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;CACpE,GAAG;AACH;CACA,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;CACpB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;CACxD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;CAC/C,GAAG;AACH;CACA,EAAE;CACF;CACA;AACA;CACA,GAAG,GAAG;CACN,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CAC3B,IAAI,MAAM,CAAC,CAAC;CACZ,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;CAC3B,IAAI;AACJ;CACA;AACA;CACA,GAAG;AACH;CACA;CACA,EAAE;CACF,GAAG,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AAC5C;CACA,GAAG,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;CACrD,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;CACtF,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,WAAW,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;CAC5F,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;CAChG,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,UAAU,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;CAC3F,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,cAAc,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9F,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;CACnG,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,eAAe,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;CAC/F,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,WAAW,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5F;CACA,GAAG,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;CACrC,GAAG;AACH;AACA;AACA;CACA,EAAE,IAAI,CAAC,OAAO;CACd,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;AACjE;CACA,EAAE,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC;AACnD;CACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;CACjC,EAAE,IAAI,QAAQ,IAAI,QAAQ,EAAE;CAC5B,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;CAC9C,GAAG;CACH,OAAO,IAAI,QAAQ,IAAI,QAAQ,EAAE;CACjC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;CAC9C,GAAG;CACH,OAAO,IAAI,QAAQ,IAAI,WAAW,EAAE;CACpC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;CACjD,GAAG;CACH,OAAO;CACP,GAAG,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,QAAQ,CAAC,CAAC;CAC5D,GAAG;CACH,EAAE;CACF,CAAC,CAAC;AACF;AACA,CAAO,MAAM,MAAM,CAAC;CACpB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACjC,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;CACjB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACb,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACb,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAClB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAClB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAClB,EAAE;AACF;CACA,CAAC,IAAI,GAAG;CACR,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;CAC7D,EAAE;AACF;CACA,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACf,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;CAC/B,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;CAC/B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrD;CACA,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CAC5B,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B;CACA,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CAC5B,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B;CACA,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CAC5B,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B;CACA,EAAE,OAAO,IAAI,MAAM,CAAC,MAAM;CAC1B,IAAI,IAAI,CAAC,GAAG;CACZ,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;CAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;CACd,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAClB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAClB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACpB,EAAE;AACF;CACA,CAAC,QAAQ,GAAG;CACZ,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;CAClB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CAC9B,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CAC/B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CAChC,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;CACzC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC5D,KAAK;CACL,IAAI;CACJ,GAAG;CACH,EAAE,OAAO,MAAM,CAAC;CAChB,EAAE;CACF,CAAC;AACD;AACA,CAAO,MAAM,yBAAyB,SAAS,kBAAkB,CAAC;CAClE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACjC,EAAE,KAAK,EAAE,CAAC;AACV;CACA,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;CACjB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM;CAC9B,IAAI,IAAI,CAAC,GAAG;CACZ,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW;CAC7B,IAAI,CAAC,IAAI,CAAC;CACV,IAAI,CAAC;CACL,IAAI,CAAC;CACL,IAAI,CAAC,CAAC,CAAC;AACP;CACA,EAAE,IAAI,CAAC,EAAE,GAAG,yBAAyB,CAAC,OAAO,EAAE,CAAC;CAChD,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;CACvB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CAChC,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;CAC3C,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC5D,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvD;CACA;CACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;CAC3B,EAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;CACtB,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AACtB;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;CACtB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;CACvB,EAAE,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;AACnC;CACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;CACnB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CACpD,EAAE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,EAAE;AACF;CACA,CAAC,cAAc,GAAG,EAAE,OAAO,IAAI,CAAC,EAAE;CAClC,CAAC,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;CAClC,CAAC,UAAU,GAAG,EAAE,OAAO,KAAK,CAAC,EAAE;CAC/B,CAAC,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;CACnC,CAAC,iBAAiB,GAAG,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE;CACpD,CAAC,cAAc,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE;CAC9C,CAAC,GAAG,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;CAC/D,CAAC,YAAY,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC1C;CACA,CAAC,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE;AACvC;CACA,CAAC,WAAW,GAAG;CACf,EAAE,IAAI,QAAQ,GAAG,EAAE,CAAC;AACpB;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC9B,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;CACzB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CACpC,IAAI;CACJ,GAAG;AACH;CACA,EAAE,OAAO,QAAQ,CAAC;CAClB,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,KAAK,EAAE;CACjB,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;CACrC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;CACtB,EAAE;AACF;CACA,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO;CAC1C,EAAE,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,EAAE,OAAO;AAC/D;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;CACtB,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC;AAC3B;CACA,EAAE,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;CACjD,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;CACpB,EAAE;AACF;CACA,CAAC,UAAU,EAAE;CACb,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAC7B,EAAE;AACF;CACA,CAAC,MAAM,aAAa,GAAG;CACvB,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC;CAClB,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC;CAChC,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B;CACA,EAAE,IAAI,gBAAgB;CACtB,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;AAC1D;CACA,EAAE,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;CAC/C,EAAE,IAAI,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnC;CACA;CACA;CACA,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;CAC9C,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;CACnE,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;CACnE,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;CACjD,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;CACjD,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;CACjD,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;CACjD,GAAG,OAAO,CAAC,CAAC;CACZ,GAAG,CAAC,CAAC;AACL;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;CACtB,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;CAC/D,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACvC,GAAG,IAAI,UAAU;CACjB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D;CACA,GAAG,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;CACtC,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO;CAC3B,GAAG,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;AACjC;CACA,GAAG,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C;CACA,GAAG,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC,yBAAyB;CAClD,KAAK,IAAI,CAAC,GAAG;CACb,KAAK,GAAG,CAAC,CAAC;CACV,KAAK,GAAG,CAAC,CAAC;CACV,KAAK,GAAG,CAAC,CAAC;CACV,KAAK,GAAG,CAAC,CAAC;CACV,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ;CACA,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;CAClB,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B;CACA,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC7B,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;CAC5B,GAAG,CAAC,CAAC;CACL,EAAE;AACF;CACA,CAAC,WAAW,CAAC,cAAc,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE;CACzD,EAAE,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;CAChD,EAAE,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;CACjC,EAAE,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;CAC3C,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;CACtB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACnB,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;CACrB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;CACvB,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC;CAC3B,EAAE;AACF;CACA,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CAC1B,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC;AACjB;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CAC9B,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACzB,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;CACzB,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC;AAChB;CACA,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;CAC3B,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;CAC3B,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AAC3B;CACA,GAAG,IAAI,IAAI,IAAI,CAAC;CAChB,GAAG;AACH;CACA,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;CAC5C,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;CAC3B,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;CACxB,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB;CACA;CACA,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAChE,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;CACjD,IAAI,OAAO,EAAE,CAAC;CACd,IAAI;CACJ,GAAG,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;CACpC,GAAG;CACH,EAAE;CACF,CAAC;AACD;CACA,yBAAyB,CAAC,OAAO,GAAG,CAAC,CAAC;;CClV/B,MAAM,wBAAwB;AACrC;CACA,CAAC,WAAW,EAAE;CACd,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;CAClB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;CACxB,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;CACnB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;CAC1B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACnB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACpB,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;CAC9B,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;CAC9B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;CACrB,EAAE;CACF;CACA,CAAC;AACD;AACA,CAAO,MAAM,4BAA4B,SAAS,kBAAkB;AACpE;CACA,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC;CAC5C,EAAE,KAAK,EAAE,CAAC;AACV;CACA,EAAE,IAAI,CAAC,EAAE,GAAG,4BAA4B,CAAC,OAAO,EAAE,CAAC;CACnD,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACnB,EAAE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;CACtD,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;CACjC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;CACvB,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;CACjC,EAAE,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;CAC1E,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;CACrB,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;CACrB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACpB,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;CACtB,EAAE,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;CACnC,EAAE;AACF;CACA,CAAC,cAAc,EAAE;CACjB,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA,CAAC,QAAQ,EAAE;CACX,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;CACpB,EAAE;AACF;CACA,CAAC,UAAU,EAAE;CACb,EAAE,OAAO,KAAK,CAAC;CACf,EAAE;AACF;CACA,CAAC,QAAQ,EAAE;CACX,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;CACrB,EAAE;AACF;CACA,CAAC,iBAAiB,EAAE;CACpB,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC;CAC7B,EAAE;AACF;CACA,CAAC,cAAc,EAAE;CACjB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;CAC1B,EAAE;AACF;CACA,CAAC,WAAW,EAAE;CACd,EAAE,IAAI,QAAQ,GAAG,EAAE,CAAC;AACpB;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC9B,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;CACzB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CACpC,IAAI;CACJ,GAAG;AACH;CACA,EAAE,OAAO,QAAQ,CAAC;CAClB,EAAE;AACF;CACA,CAAC,cAAc,EAAE;CACjB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;CAC1B,EAAE;AACF;CACA,CAAC,MAAM,EAAE;CACT,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf;CACA,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;AAChD;CACA,EAAE,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;CACpC,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;CACtF,GAAG,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;CAC3C,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;CACtD,GAAG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;CAClC,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;CACtD,GAAG;AACH;CACA,EAAE,OAAO,GAAG,CAAC;CACb,EAAE;AACF;CACA,CAAC,gBAAgB,EAAE;CACnB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC;AAClB;CACA,EAAE,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;CAC7D,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC;CACA,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;CAChE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;CACrC,GAAG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,GAAG,CAAC;CAC1E,GAAG;AACH;CACA,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B;CACA,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA,CAAC,QAAQ,CAAC,KAAK,EAAE;CACjB,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;CACrC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;CACtB,EAAE;AACF;CACA,CAAC,IAAI,EAAE;CACP,EAAE,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,EAAE;CACzG,GAAG,OAAO;CACV,GAAG;AACH;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB;CACA,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;AAC3B;CACA,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;CAC5D,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;CACpF,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;CAClC,IAAI,MAAM;CACV,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;CACtB,IAAI;CACJ,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;CACrB,GAAG;CACH,EAAE;AACF;CACA,CAAC,UAAU,EAAE;CACb,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACrC,EAAE;AACF;CACA,CAAC,sBAAsB,EAAE;CACzB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC;AAClB;CACA;CACA,EAAE,IAAI,QAAQ,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;AAC1C;CACA,GAAG,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AAClC;CACA,GAAG,IAAI,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpC;CACA,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC;CAClB,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CACnC,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;CAC3C,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;CAC9B,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E;CACA,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC;AACpB;CACA,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC;CAClB,GAAG,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;CAC5B,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;CAC9B,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;CACjB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAChC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,EAAE;CACxC,MAAM,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AACrC;CACA,MAAM,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAChD,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5D;CACA,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACxF;CACA,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1F;CACA,MAAM,MAAM,IAAI,CAAC,CAAC;CAClB,MAAM;AACN;CACA,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;CACrB,KAAK;AACL;CACA,IAAI,IAAI,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE;CACvC,KAAK,MAAM;CACX,KAAK;CACL,IAAI;AACJ;CACA;AACA;CACA,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC;CAClB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3B,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;AAC9B;CACA,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC5C,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;CAC/B,IAAI,IAAI,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;CAChD,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;CACvD,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CACxD,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;CACvC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;CAChC,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAC3E;CACA,IAAI,IAAI,WAAW,GAAG,IAAI,4BAA4B,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;CAC/E,IAAI,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;CAC9B,IAAI,WAAW,CAAC,SAAS,GAAG,gBAAgB,CAAC;CAC7C,IAAI,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;CACtD,IAAI,WAAW,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CAC3D,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;CACrC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;CAC9B,IAAI;AACJ;CACA,GAAG,IAAI,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;CAC7C,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC;CACnB,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;CACrE,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACrB,IAAI;AACJ;CACA,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;CACrB,GAAG,CAAC;CACJ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,MAAM,CAAC,EAAE;CAC/D;CACA,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AACpG;CACA,GAAG,IAAI,GAAG,GAAG,UAAU,CAAC,oBAAoB,EAAE,CAAC;CAC/C,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CAC/B,GAAG,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC;CACpC,GAAG,GAAG,CAAC,gBAAgB,CAAC,oCAAoC,CAAC,CAAC;CAC9D,GAAG,GAAG,CAAC,kBAAkB,GAAG,MAAM;CAClC,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,EAAE;CAC9B,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;CACjD,MAAM,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC;CACjC,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAC9B,MAAM,MAAM;CACZ,MAAM,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,GAAG,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;CACzF,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;CAC/B,MAAM;CACN,KAAK;CACL,IAAI,CAAC;CACL,GAAG,IAAI;CACP,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACnB,IAAI,CAAC,OAAO,CAAC,EAAE;CACf,IAAI,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,CAAC,CAAC,CAAC;CAC1D,IAAI;CACJ,GAAG;CACH,EAAE;AACF;CACA,CAAC,YAAY,EAAE;CACf,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC;CACxB,EAAE;AACF;CACA,CAAC,OAAO,EAAE;CACV,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;CAC5C,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;CAC3B,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;CACxB,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB;CACA,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;CAC7C;CACA,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAChE,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;CACjD,IAAI,OAAO,EAAE,CAAC;CACd,IAAI;CACJ,GAAG,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;CACpC,GAAG;CACH,EAAE;CACF;CACA,CAAC;AACD;CACA,4BAA4B,CAAC,OAAO,GAAG,CAAC,CAAC;;CC1QzC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACA;AACA,AAAG,KAAC,SAAS,GAAG;CAChB;CACA,CAAC,QAAQ,EAAE;CACX,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C,EAAE;CACF,CAAC,MAAM,EAAE;CACT,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE;CACF,CAAC,YAAY,EAAE;CACf,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C,EAAE;CACF,CAAC,OAAO,EAAE;CACV,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE;CACF,CAAC,OAAO,EAAE;CACV,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7C,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,K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EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE;CACF,CAAC;;CChJD,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB;CACA,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;;AC/9CU,OAAC,oBAAoB,GAAG;AACpC;CACA,CAAC,OAAO,EAAE;CACV,EAAE,CAAC,QAAQ,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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,CAAC,CAAC;AACL;CACA,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;CACf,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B;CACA,EAAE;CACF,GAAG,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;CAClD,GAAG,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAClD;CACA,GAAG,YAAY,CAAC,MAAM,CAAC;CACvB,IAAI,KAAK,EAAE,QAAQ,CAAC,IAAI;CACxB,IAAI,GAAG,EAAE,CAAC;CACV,IAAI,GAAG,EAAE,CAAC;CACV,IAAI,IAAI,EAAE,IAAI;CACd,IAAI,KAAK,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE;CAC7D,IAAI,CAAC,CAAC;AACN;CACA,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC,KAAK;CACvB,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CAChD,IAAI,YAAY,CAAC,MAAM,CAA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"} \ No newline at end of file diff --git a/libs/potree/profile.html b/libs/potree/profile.html deleted file mode 100644 index 3eead5a..0000000 --- a/libs/potree/profile.html +++ /dev/null @@ -1,113 +0,0 @@ -
        - -
        - - - - - - - -
        - -
        - - -
        - :   - - - - - - - - - - - - - - - - - - - - - - - - - -
        - -
        -
        - -
        - -
        - position: asdsadf asdf
        - rgb: 123 423 123 -
        - -
        -
        -
        - -
        \ No newline at end of file diff --git a/libs/potree/resources/LICENSE b/libs/potree/resources/LICENSE deleted file mode 100644 index 8dc6ae0..0000000 --- a/libs/potree/resources/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ - - - -icons/map_icon.png -from sitn PotreeViewer -http://ne.ch/sitn -https://github.com/PotreeViewer/PotreeViewer - -icons/navigation_cube.svg -icons/orthographic_camera.svg -icons/perspective_camera.svg -free for commerical use without attribution -http://www.freepik.com/free-icon/package-cube-box-for-delivery_720159.htm - - diff --git a/libs/potree/resources/icons/add.svg b/libs/potree/resources/icons/add.svg deleted file mode 100644 index a997b2d..0000000 --- a/libs/potree/resources/icons/add.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - + - - diff --git a/libs/potree/resources/icons/angle.png b/libs/potree/resources/icons/angle.png deleted file mode 100644 index ee21dd6a3d3a1546f5a3fbc42996e53a69342f54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 602 zcmV-g0;TPx#1ZP1_K>z@;j|==^1poj532;bRa{vGh)&Kwv)&Y=jd7JSF~(mA)$9OY7{d~3k}~l+ zGhcT)w7+cI3u9smQxDb4Z8N(KmZ;~D4L(CYFP#-uS6%xi3 zGsaId5-g$is4ofO$@+SS8t&jEv*MD|=Nk9Qg|j1d%{UL|dK3lNSVCo&KNIjmON4cB z#KlzVvcC9YS6F()UA2){pT9DGOKQ=$Ao1DVVGZ3X+GZb{e#PEU@9(DGx zNnO?th2nNWd2}{`R#Gs@XRbD6u+-ql7OU0Jo9?kC(o>N!g^Dz%lg_s o2=cO1l{}p@~ diff --git a/libs/potree/resources/icons/annotation.svg b/libs/potree/resources/icons/annotation.svg deleted file mode 100644 index c5a5281..0000000 --- a/libs/potree/resources/icons/annotation.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/area.svg b/libs/potree/resources/icons/area.svg deleted file mode 100644 index 98c31cf..0000000 --- a/libs/potree/resources/icons/area.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/area_backup.svg b/libs/potree/resources/icons/area_backup.svg deleted file mode 100644 index 7fb9b22..0000000 --- a/libs/potree/resources/icons/area_backup.svg +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/arrow_ccw.svg b/libs/potree/resources/icons/arrow_ccw.svg deleted file mode 100644 index e0ae6a0..0000000 --- a/libs/potree/resources/icons/arrow_ccw.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - ⭯ - - diff --git a/libs/potree/resources/icons/arrow_cw.svg b/libs/potree/resources/icons/arrow_cw.svg deleted file mode 100644 index d827375..0000000 --- a/libs/potree/resources/icons/arrow_cw.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - ⭮ - - diff --git a/libs/potree/resources/icons/arrow_down.svg b/libs/potree/resources/icons/arrow_down.svg deleted file mode 100644 index f89b4c7..0000000 --- a/libs/potree/resources/icons/arrow_down.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - 🡅 - - diff --git a/libs/potree/resources/icons/arrow_left.svg b/libs/potree/resources/icons/arrow_left.svg deleted file mode 100644 index 45aa5c1..0000000 --- a/libs/potree/resources/icons/arrow_left.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - 🡅 - - diff --git a/libs/potree/resources/icons/arrow_right.svg b/libs/potree/resources/icons/arrow_right.svg deleted file mode 100644 index 3c3edf6..0000000 --- a/libs/potree/resources/icons/arrow_right.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - 🡅 - - diff --git a/libs/potree/resources/icons/arrow_up.svg b/libs/potree/resources/icons/arrow_up.svg deleted file mode 100644 index 3d843c3..0000000 --- a/libs/potree/resources/icons/arrow_up.svg +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - 🡅 - - diff --git a/libs/potree/resources/icons/assign.svg b/libs/potree/resources/icons/assign.svg deleted file mode 100644 index 6149ea7..0000000 --- a/libs/potree/resources/icons/assign.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - = - - diff --git a/libs/potree/resources/icons/azimuth.svg b/libs/potree/resources/icons/azimuth.svg deleted file mode 100644 index 6cb5c69..0000000 --- a/libs/potree/resources/icons/azimuth.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - N ° - - diff --git a/libs/potree/resources/icons/back.svg b/libs/potree/resources/icons/back.svg deleted file mode 100644 index 7a76227..0000000 --- a/libs/potree/resources/icons/back.svg +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/bottom.svg b/libs/potree/resources/icons/bottom.svg deleted file mode 100644 index a96abc0..0000000 --- a/libs/potree/resources/icons/bottom.svg +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/camera_animation.svg b/libs/potree/resources/icons/camera_animation.svg deleted file mode 100644 index 7e2bbae..0000000 --- a/libs/potree/resources/icons/camera_animation.svg +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/circle.svg b/libs/potree/resources/icons/circle.svg deleted file mode 100644 index a556fde..0000000 --- a/libs/potree/resources/icons/circle.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/circled_dot.svg b/libs/potree/resources/icons/circled_dot.svg deleted file mode 100644 index 291be87..0000000 --- a/libs/potree/resources/icons/circled_dot.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - ⨀ - - diff --git a/libs/potree/resources/icons/clip-plane-x.svg b/libs/potree/resources/icons/clip-plane-x.svg deleted file mode 100644 index a5c6f0f..0000000 --- a/libs/potree/resources/icons/clip-plane-x.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/clip-plane-y.svg b/libs/potree/resources/icons/clip-plane-y.svg deleted file mode 100644 index e5d23ae..0000000 --- a/libs/potree/resources/icons/clip-plane-y.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - diff --git a/libs/potree/resources/icons/clip-plane-z.svg b/libs/potree/resources/icons/clip-plane-z.svg deleted file mode 100644 index a16d380..0000000 --- a/libs/potree/resources/icons/clip-plane-z.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/clip-polygon.svg b/libs/potree/resources/icons/clip-polygon.svg deleted file mode 100644 index 774fa71..0000000 --- a/libs/potree/resources/icons/clip-polygon.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/clip-screen.svg b/libs/potree/resources/icons/clip-screen.svg deleted file mode 100644 index e542def..0000000 --- a/libs/potree/resources/icons/clip-screen.svg +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/clip_volume.svg b/libs/potree/resources/icons/clip_volume.svg deleted file mode 100644 index 4a68b54..0000000 --- a/libs/potree/resources/icons/clip_volume.svg +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/close.svg b/libs/potree/resources/icons/close.svg deleted file mode 100644 index b39908b..0000000 --- a/libs/potree/resources/icons/close.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/cloud.svg b/libs/potree/resources/icons/cloud.svg deleted file mode 100644 index 804466c..0000000 --- a/libs/potree/resources/icons/cloud.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/libs/potree/resources/icons/copy.svg b/libs/potree/resources/icons/copy.svg deleted file mode 100644 index 11cde80..0000000 --- a/libs/potree/resources/icons/copy.svg +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/distance.svg b/libs/potree/resources/icons/distance.svg deleted file mode 100644 index fc03804..0000000 --- a/libs/potree/resources/icons/distance.svg +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/earth_controls.png b/libs/potree/resources/icons/earth_controls.png deleted file mode 100644 index f09345cb09341f0eab601e07ec1610fb7f1b2c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1465 zcmV;q1xEUbP)QF4rb%oPle;DNeD~iQ zEpxM-kU1vFI~FyS$}{3TPTXIClZNdI-M@vL8-7Ti%d*R*nK|V4Ox~sP1A%>C^U8D z%9WE=s}(6#ucQdzI1Yw}hAKu!M@LVbIPnI{vJEJTnoK4WPEnM?aa<^oNC=W7{d)#X zCKITyuSe_Z>M#t$08P_~VHi0{k~UjfT2AY_F3rx)e);g>!+ViPrF-?5mD2$)#m2rCJ3Q{AP8107V{pD zXLWgbxnQ%|aEHUuNRp&EolfT$7Z+2hR7y>yQt%%Quq+E0hCzmghH9&-s@U%C?(X5? z;c*C|arf@sFAxMl6h+Y(hA~qVW#M^#13?hXFbuu5we_gYX0s3kVY1up_Vee@e~h9i z{^-%8uf1NcdvkL$y|J;u`+PouFIfgW!VNC$7zxzj~Irb za2ywh5E>|oVzMmrZnyh})9IX66h-at?|*${WaJ}?qACFZ0K+icVzJbsD2mIn%qfae z$mjEG3kwUkr>CdCzkdCC$dD5?TN2oVGU znx;t{$7M5_3~v|)R8>{Qahx%m&FoIym{nC3%x1H7=PJiA4Dadbd0UdCLNpr9Jb3Vc z+Y%T(?|V&|IPXN`P-VNsk*M~vMfst4Gpg~ zHa2zx06;t*|231zBs5La0RYfqv9KK-9gg1K-uD$n;d!3laJgLHy4~(yyk2i491a&^ zv6#Lm0{MI%&dtr`{C+>@cDvV{PUp{EU0od)E?oE&LI_Jp}-OW5VMZ?CPrz5R4Dne;lH&aXTkk0%%mCd1*dAP54? z<#NwzU{4Wp90xd#Gq$$2#6TdhHak1}o5$l>QWQm>oSfXkaU4JhK}}5!Wipw}1VJz; zisCd)TSZY+mzI`ff*?RR98L&=@HxXUL@*f4tgWr7qA0@s=EJ^is3;0l6a{b`r?0H6 zBme+_AP7)aR)!1?4pyqFs+&wEVkd>DVHk!i%lf%<=Z=KKVLlp-YIpA3$?T{7R}MT0 zDT)FkBO|u)@$nByl2q(=d!Nl_JBgyGNfgDjBuSC8XV1QC7)COkPUp6_xA*P)LsMQ} zj$FKWu|6CQ|CGz+BBCg6!yPnD6Z83eWOH+KetdkqwYs|czGXmB{=fzR03a5N$sUi#lgs7S004VFQYaKs zE|+U27K@3cXqIFko6W*NAdr0g`0-6ymbu;gJ6rNSzu&*MzP_%PqFFK|NrH)qiMDJu zyS!Tixm<4b+O=z4G)x?u)4as6$k`=R8_U0>$)6|$LFKbXbM7D@`0pe z0{{T<UPLOD(pOei;)z6JktE4- zpU)SH$K!{}{hFs^q-C;(x^-2|VZL T<_z>Q00000NkvXXu0mjf4JELN diff --git a/libs/potree/resources/icons/earth_controls.svg b/libs/potree/resources/icons/earth_controls.svg deleted file mode 100644 index f5458f0..0000000 --- a/libs/potree/resources/icons/earth_controls.svg +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/earth_controls_1.png b/libs/potree/resources/icons/earth_controls_1.png deleted file mode 100644 index b10c9358d430b8572c46a81a4707982a9bfc1f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1928 zcmV;32Y2|1P)-e$9vxo&-*^_j|cGAb;YoIrU9ekSlLuEvQk)$ z^gSYgAcio3aY?bwrQAXuzt;OLe4^jP#a{SZ1&gY!0KR_mtYTUYd5)afbWFi@@`zHF zisWN*%;E*f*Fu*)eimHv_(QOj&&~t>5IIuvI3`&3I4xKyTLxJtM-9EEbnYWw5>hM6 zIrg#ku#rUyNkkx{h7IU&5NEG2v!8v5wl9M!JqrIOwqVgwLYdwe)f#tI*){4aKb{5DS?RDG!W=YvdAL4fPyPGVjvKNgrtIjKwO0CN zjbR)C#<3A`0r5Zv5Xbk{fJNZNVF;NINg^Bg82AkM6vzY408s`~2O^>zA{?iH5}=$2 z#KpxWDvBajR#sLuO-sW)JFw06-lOmck)VY>1U?5oNlHpObM@*~XH`{|ZFqRtvA(|U z!2J-g!6dc-^=*mJ!WJMENCuLC)4)d*j*}-(W?#8-#dh)HMOjo-B<*&)d2nzrDi8>0 zOoT!cYk-C4RU;*0B)} zqNAft!C)}t_xnQ_3dAX~sMy=vBX5YcwKYNiK_VLOq(a1IcuG>J@Jcge@&Cp`oFnEokX?XsH()=%QDRg^z?<0DKL60}Lb1>kfxQh08+^ z9z4(*8X7{-fC_H}2?)>LrAwEz>FH^0etw>wYY=q^&nWgmT&u{WP)A3HR$5vbf_PPE ziR#O5Ks!(e6!Y5qSrcaTGYiOvU3)e+H`7N)N1e5`wHEx>;8K`uEqko%b_jZ z8`veeWD7&RapQ(^^X5%6t|@CaxgkCUegsB2r30__8n2;YJ?8>OnRE&%NOi=@^&}bL zvtwdO1V}INUYLZyGl}qR;ra!_x5;JR&z*UiJu<_jy#Lhn!UblPjpI0*TwGTQQBTrp zYHBR~{r$Q(hy)=qF;Qe?Wl3a+(%IQ*g^<@lhIT#&%rlV%p8K_9!kfBp*vQKvSTLM9 zJczSWR#qnK>gptA5s8w<*|TQ_rTgsctm)yyhg5-gn8Xh}hxgx(2B!aLiuB?i94?w@ z2k{QIwzlftAR^%bA?qo6>((s|+M*5|1Xdy;5eX3^p>-kz(FVrG#zJWOx+aVRRaXoQ z3{ZjFV*8~?PiqGuvKDSs*l`fqpe-#e?Hg=tY>4*ucB&b>?1?ER6VXZSphQT(GuW{o zVx=0gZ!kGIDem37r=eN~*zTDzJ>M0Pa7N8=`pu((sdw(&5iei96i9E;)zw8_+2wFh z51Bpei9V7+t)Ld@pma=6Pv3p?=#hqIrlCvkG1+f{uYmX8@VW8M4$ofR?JyNO=)v0C z+v|vrkC$_Eb3WG4uYB-XJ%~pR`Z*CU@w5R8Drgk4N8+ryg?>Zg{0aDuiL69=a6aq@ zR`@hu$Vlh=q=_;1$g`vVt_f$*bG}~W79ieG!jJvi*Y-+lII>JRmhmS8lByZ<#qg;B O0000 - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/eye_2.png b/libs/potree/resources/icons/eye_2.png deleted file mode 100644 index c23e800da23cfe9958540b1807bd82b99cd77299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2998 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 sI`D70?jen*2YR3fdY}h-;QtZ+2i{d - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/eye_crossed.svg b/libs/potree/resources/icons/eye_crossed.svg deleted file mode 100644 index bc0b8f2..0000000 --- a/libs/potree/resources/icons/eye_crossed.svg +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/file_csv_2d.svg b/libs/potree/resources/icons/file_csv_2d.svg deleted file mode 100644 index f1a293f..0000000 --- a/libs/potree/resources/icons/file_csv_2d.svg +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/file_dxf.svg b/libs/potree/resources/icons/file_dxf.svg deleted file mode 100644 index dedb04b..0000000 --- a/libs/potree/resources/icons/file_dxf.svg +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - DXF - JSON - - - - - JSON - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/file_geojson.svg b/libs/potree/resources/icons/file_geojson.svg deleted file mode 100644 index 4fa326c..0000000 --- a/libs/potree/resources/icons/file_geojson.svg +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - DXF - JSON - - - - - - - - - - - - - - - DXF - - - - - - - - diff --git a/libs/potree/resources/icons/file_las_3d.svg b/libs/potree/resources/icons/file_las_3d.svg deleted file mode 100644 index a6bf228..0000000 --- a/libs/potree/resources/icons/file_las_3d.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/file_potree.svg b/libs/potree/resources/icons/file_potree.svg deleted file mode 100644 index 8cd2ea3..0000000 --- a/libs/potree/resources/icons/file_potree.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/flip_y_z.png b/libs/potree/resources/icons/flip_y_z.png deleted file mode 100644 index b57262a9900594b2f52bbba46cddd008e8e7ec43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1026 zcmV+d1pWJoP)9f3w?3F=-(F2{U0P^MYjk6BVnJU`j>0 zO$({uNeV84Lg=}d6?)j?9(wRn*hBHqi(Z7H*dmGu!d|QxY-;oKELA z%gf7!LZJY++x?7)ZeQ2qvX7%w?%$eH2~E>}*xTE~>FFsnO*_1rS5@`TY&MIvwY8!w z%a6*yy+rhkh`z2%fQSYsCnq@oghC;H*|2wPZ0rR91cSjBM0BSVoH3@audhQ@RS?nr zngsw5V=Q`hc7~Oem7=03vyvozySlnsOr=tAyWM}3gC89oA(P3#@An%-bhj>nmX?;U z=H}+IrfGsP_Lrh4$GKb%v$L~?-ERM~5Eze}4=BCMG6Qx&VQ)F?QB>+b?0BD>w5URqjG1_lO*b57xKIL$f#o`~#>vB#U6n=Yr* zNuf|EyS=?VD$DXDW9++9{S3q4ob!*Wx(fhMb93`OP1Bw*#*P?cKQ}cseNpbo8Dqa0 zhJjMi(b4g=?w7EdGjD5ad)(dKt^0gF-RJY^UayzW%*+%3V0U-7s3^*Q-2%0qxz%d@ zd~k4(pP!%O@bD0-svZ-OT<=#<6I>KUe^*x*&tx))$Kz;kZ`X;)Tk}^?51feZcsw3m z*L9qnoS>(tCn1XB2W1)M;EJNu0+$p;IX*ZzfMFO21OnVeqvya(X4LXE@Wa2$_}j2NYAB9X|uu~_V50KdMrwvs?K wAqc`PBGRfT)dA!hF7PIC<3A>E1#Vp6B_%^yKyU7T82|tP07*qoM6N<$g3LJAYXATM diff --git a/libs/potree/resources/icons/flip_y_z.svg b/libs/potree/resources/icons/flip_y_z.svg deleted file mode 100644 index c28f2d0..0000000 --- a/libs/potree/resources/icons/flip_y_z.svg +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - y - z - - - diff --git a/libs/potree/resources/icons/focus.svg b/libs/potree/resources/icons/focus.svg deleted file mode 100644 index db9b6d2..0000000 --- a/libs/potree/resources/icons/focus.svg +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/fps_controls.png b/libs/potree/resources/icons/fps_controls.png deleted file mode 100644 index 3617358ccc4c1de8a195098aad821ab2a5594e56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 859 zcmV-h1El-&Dh&@0E5BUV zRU(nl=;)}rySr6iUoXqDJ^^=ulfN?lrGLMGGr&_o&CSi4pPyHuT3cIFG#XVf7~BNz z1IPCb$b(!0-jtPhJHD-|znj_znb+L->Fjzz3htr*Jr|+1c5GkVqsV z;HpQ?QQ#Kv5O@sS14{l1$O|xlE5KxRb+y*l*F6ErWKxD;P31v~>T0lo}Pfrt#M#*F{&jIh#bgwIr zzZD}RBc7{}N~P4>+pCF*2~AB+sk5_Fb#-+D`hl{2Z9yL5U3+`GC!kRE_4O$b2rL8V z4gzo|7!2-ea59-xLqmg1)0Aad0MSWf;b3etw2e0JOHYvbnj* z - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/front.svg b/libs/potree/resources/icons/front.svg deleted file mode 100644 index f3d8d4f..0000000 --- a/libs/potree/resources/icons/front.svg +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/goto.svg b/libs/potree/resources/icons/goto.svg deleted file mode 100644 index 3767791..0000000 --- a/libs/potree/resources/icons/goto.svg +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/gradients_grayscale.png b/libs/potree/resources/icons/gradients_grayscale.png deleted file mode 100644 index 942721888fa52c31f05543c8f9abcf84cbe83d9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9240 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

        ^6xNSWZXSwn#ARflM#QK>&*l(0@OU%|PwXs|^zP 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 diff --git a/libs/potree/resources/icons/gradients_rainbow.png b/libs/potree/resources/icons/gradients_rainbow.png deleted file mode 100644 index c3f9172f916754a45d10816dbae8a1c572d89028..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14977 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 LNkvXXu0mjfkfo`| diff --git a/libs/potree/resources/icons/gradients_spectral.png b/libs/potree/resources/icons/gradients_spectral.png deleted file mode 100644 index ae4886b353dc35f3b1655ee3bb6f7afe6f3b0c10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15594 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 Ef-Np_5dZ)H diff --git a/libs/potree/resources/icons/gradients_yellow_green.png b/libs/potree/resources/icons/gradients_yellow_green.png deleted file mode 100644 index 9e907061d092438d9cf0ab29b5ef2fd09df3d5df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14040 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 KMNUMnLSTZ{Ax>)m diff --git a/libs/potree/resources/icons/height.svg b/libs/potree/resources/icons/height.svg deleted file mode 100644 index 7b3fb34..0000000 --- a/libs/potree/resources/icons/height.svg +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/helicopter_controls.svg b/libs/potree/resources/icons/helicopter_controls.svg deleted file mode 100644 index 84ab2eb..0000000 --- a/libs/potree/resources/icons/helicopter_controls.svg +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/image_preview.php b/libs/potree/resources/icons/image_preview.php deleted file mode 100644 index 7288b6a..0000000 --- a/libs/potree/resources/icons/image_preview.php +++ /dev/null @@ -1,24 +0,0 @@ - $value){ - - if($value === "." || $value === ".." || $value === "image_preview.php"){ - continue; - } - - ?> -

        -
        - -
        - \ No newline at end of file diff --git a/libs/potree/resources/icons/index.html b/libs/potree/resources/icons/index.html deleted file mode 100644 index 0c63abf..0000000 --- a/libs/potree/resources/icons/index.html +++ /dev/null @@ -1,606 +0,0 @@ - - - - - - -
        - - -
        - -
        add.svg
        -
        -
        - - -
        - -
        annotation.svg
        -
        -
        - - -
        - -
        area.svg
        -
        -
        - - -
        - -
        area_backup.svg
        -
        -
        - - -
        - -
        arrow_ccw.svg
        -
        -
        - - -
        - -
        arrow_cw.svg
        -
        -
        - - -
        - -
        arrow_down.svg
        -
        -
        - - -
        - -
        arrow_left.svg
        -
        -
        - - -
        - -
        arrow_right.svg
        -
        -
        - - -
        - -
        arrow_up.svg
        -
        -
        - - -
        - -
        assign.svg
        -
        -
        - - -
        - -
        azimuth.svg
        -
        -
        - - -
        - -
        back.svg
        -
        -
        - - -
        - -
        bottom.svg
        -
        -
        - - -
        - -
        camera_animation.svg
        -
        -
        - - -
        - -
        circle.svg
        -
        -
        - - -
        - -
        circled_dot.svg
        -
        -
        - - -
        - -
        clip-plane-x.svg
        -
        -
        - - -
        - -
        clip-plane-y.svg
        -
        -
        - - -
        - -
        clip-plane-z.svg
        -
        -
        - - -
        - -
        clip-polygon.svg
        -
        -
        - - -
        - -
        clip-screen.svg
        -
        -
        - - -
        - -
        clip_volume.svg
        -
        -
        - - -
        - -
        close.svg
        -
        -
        - - -
        - -
        cloud.svg
        -
        -
        - - -
        - -
        copy.svg
        -
        -
        - - -
        - -
        distance.svg
        -
        -
        - - -
        - -
        earth_controls.svg
        -
        -
        - - -
        - -
        eye.svg
        -
        -
        - - -
        - -
        eye_2.svg
        -
        -
        - - -
        - -
        eye_crossed.svg
        -
        -
        - - -
        - -
        file_csv_2d.svg
        -
        -
        - - -
        - -
        file_dxf.svg
        -
        -
        - - -
        - -
        file_geojson.svg
        -
        -
        - - -
        - -
        file_las_3d.svg
        -
        -
        - - -
        - -
        file_potree.svg
        -
        -
        - - -
        - -
        flip_y_z.svg
        -
        -
        - - -
        - -
        focus.svg
        -
        -
        - - -
        - -
        fps_controls.svg
        -
        -
        - - -
        - -
        front.svg
        -
        -
        - - -
        - -
        goto.svg
        -
        -
        - - -
        - -
        height.svg
        -
        -
        - - -
        - -
        helicopter_controls.svg
        -
        -
        - - -
        - -
        left.svg
        -
        -
        - - -
        - -
        menu_button.svg
        -
        -
        - - -
        - -
        menu_icon.svg
        -
        -
        - - -
        - -
        navigation_cube.svg
        -
        -
        - - -
        - -
        orbit_controls.svg
        -
        -
        - - -
        - -
        orthographic-camera.svg
        -
        -
        - - -
        - -
        perspective-camera.svg
        -
        -
        - - -
        - -
        picture.svg
        -
        -
        - - -
        - -
        point.svg
        -
        -
        - - -
        - -
        profile.svg
        -
        -
        - - -
        - -
        remove.svg
        -
        -
        - - -
        - -
        reset_tools.svg
        -
        -
        - - -
        - -
        return_number.svg
        -
        -
        - - -
        - -
        rgb.svg
        -
        -
        - - -
        - -
        right.svg
        -
        -
        - - -
        - -
        rotate.svg
        -
        -
        - - -
        - -
        scale.svg
        -
        -
        - - -
        - -
        sphere.svg
        -
        -
        - - -
        - -
        sphere_distances.svg
        -
        -
        - - -
        - -
        target.svg
        -
        -
        - - -
        - -
        top.svg
        -
        -
        - - -
        - -
        translate.svg
        -
        -
        - - -
        - -
        triangle.svg
        -
        -
        - - -
        - -
        volume.svg
        -
        -
        - - -
        - -
        vr_button.svg
        -
        -
        - - -
        - -
        angle.png
        -
        -
        - - -
        - -
        earth_controls.png
        -
        -
        - - -
        - -
        earth_controls_1.png
        -
        -
        - - -
        - -
        eye_2.png
        -
        -
        - - -
        - -
        flip_y_z.png
        -
        -
        - - -
        - -
        fps_controls.png
        -
        -
        - - -
        - -
        gradients_grayscale.png
        -
        -
        - - -
        - -
        gradients_plasma.png
        -
        -
        - - -
        - -
        gradients_rainbow.png
        -
        -
        - - -
        - -
        gradients_spectral.png
        -
        -
        - - -
        - -
        gradients_yellow_green.png
        -
        -
        - - -
        - -
        map_icon.png
        -
        -
        - - -
        - -
        profile.png
        -
        -
        - - -
        - -
        rgb.png
        -
        -
        - - -
        - -
        rgb_elevation.png
        -
        -
        - - -
        - -
        sphere.png
        -
        -
        - -
        - - - \ No newline at end of file diff --git a/libs/potree/resources/icons/left.svg b/libs/potree/resources/icons/left.svg deleted file mode 100644 index 1c4c1cd..0000000 --- a/libs/potree/resources/icons/left.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/map_icon.png b/libs/potree/resources/icons/map_icon.png deleted file mode 100644 index c790e7f8c07977aaf4b6935d3608b16e34ec04c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7937 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 z z-8jnWL9Q_}fNne^^0sLa7kr9V?UPC76u$rG9;VYWfyfvm^YavjAhE;#bs=9EW4(m1z^c}k}p3=e&6BJH^nYI4u{1a%~0?yDf?w=(3dqrF02b#^(`DL-h2 zO7Hg58a``QLsjQ^NOK)ia<3tH!pax(u2r&Lp61WYnRu$EnZQ7L5-IWYY6Osf?uTf>7$*GXcqT zlG!P$p(K6H+8S3}FI+f%$b)h6$?YgfK$j9yC^Y(7>+WY2aI@0f$PQ8hHk>*R%tM-e#+91v-u6MX#-rVQX#=wd0R9AjMO<49kS9Q*zmt081 z&rUXWo8VDe}ASA~r=}4tr`c?Zq4u5GjoDODZ24lK1s0`s&+pE5~Co&_PW{rRQ7@GVTdt zyM0HdceO0+9(cRPtlv@!Pd^!7#Qkyhl5-NNJf+gGW4XeXZw zf+NxzQCx+nZ+WVDo~%da;(P82(y;CGG=fZ(edbnh^!MCji=v|%dt&!DZHz=D-43h5 z?&N|2w4riBK0yXxIhZ-jg3EpqDBky}-If>#Uox~(=MQC1nBjde;V;T{RD+Cr$|_quc9+oG16 zHoWjJ7BcJ75^LmsDCPXpE%cvN$r&*N(i^?yWei=bJ$^iG>p%+S53ih2A2<`Za?iW< zsJs@VLu}B)ml)qD5Bq#6qc_UIC;en56Sx=NcAG*Gy{F)@{LIDip^*Vj+AlGmARA%j z5|p48DkLZKPWoAijW*dKvn;2&Ej&ngvt#eX>K1&~qzU+t`9xJVj@^4;r*z>**n)oF zr~SU~$m;uD&6i=+;N@g zLWoc8v6ck%b~|R1hY04?2&XUard1$x@)sVVV$OI0ANA3mn(%y~2aMZC+->w)k0o&WwOn_CB zpAPAiylLr{Zcue@O9^d^RvX``Iytq5+V!2asJ;wBpOCwSXLX&jFh#?GnTV>DS;F20SG`e8T5gL&N0 z0b0#0U#!c=tdR1iwsBhL6xr1wp;lZoOJCv6f&)i<@cIY7n<(nlq`iWdQ?%+z8}WhL zqM7dpiXw8-F{3CtV%LlI%q7)Fa%Ii4L0gy;q1V1j_B0=ibo!k2c*7|iN2i>DSwg&V z*=Z&0F81oC1CeDa@fvW`-Z~w5Ie~eb@!P4OIv*qc+iF7PZc_7Imrd$Pyf@Dakpv+D z=AreZfDc0%K&gMIYL4jk8|6(EYk4fi@F9KStgyN>+2xJ&@Y)5tTM7|~ zym2O=HQ1=*$+7$VX+rKyg=AIwRf+0s66^bE@)(7^ZMLZKR8ILn*iOO;td1)#n zar4U-HWl7irAV(mmYiGQAy}4VV!QOAkKC>Zcp0k6y&CnSRrTQ>nk}9ciT7*ARVoaV zTz&EJGr3&XlS?nInkZVQo7aLw7il#<2(oR41-`rfc5@HAcJVlke{)nnVV1uva7U!; zxkW95mK1bQrn|>KJPjxHXvYy0hmM*y`k?aNd9RNNtR>E4$Wr4r=t^5A;O3s(R?l_`l@1?=c0);qB(3}V3ICdEwFd z`i{}{gz#YLl5Od+&4EjoZ-@@mN`8#}t#)kvF5enV&7tSN`7O~l%F}Y_IkVfn*N{6* z0PmPduW4qDo)(LS5zQ-@&=VV^L=+X9K1II|a&o6GXw9%RPrzuBJIei>$qUw~ zW>#gpF2)4jlaJe<`ekG0`T6B@^Oti=bsg~Km%re%4iqC_?wd=6O1Z{8-k75?Cf3OP ze+r3gq1l+pCj!Q!j%l%a{BJyUMY6jxytM<@cQ1xH=;qK7XY{eSHrl;`8SYqYW<*wQ2N=M0IGtq_Jq0K*bWNmS2*eQDUNxA5Ct+dLm zZTT2*z1iy(VN&r#>ckz{4Wazj0GClKktupLb|N!|+ag!E?2;|R<|;#>LI|Haf;w&5 z>Th>ahf!Xq6ZuY+a$`b%{;qn8kx$mEo$q`6{qA`FgbV`%fz7xbO3IAy>;9#ZYXdWZ vz6VFIRCf`5qQ;1c1uvPvVHEB=c_M+%M}XK)>cwD$*b4I>f7|DcVh;Zs^g5$l diff --git a/libs/potree/resources/icons/matcap/basic_dark.jpg b/libs/potree/resources/icons/matcap/basic_dark.jpg deleted file mode 100644 index 18d18a508a095be94110ebf1c1a24e7fe3fc3b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3402 zcmeH|c~nz(7RP@t2?4?m36&^_gg}T;c2Q7>2uPwx5)x2QENUp=AhL>atSO=_1vG)M z$&#{XlY&7C8nwzI;KCMLP-qdvfOZkFh$u{GJIk5BX6COsbLPHt&%5{Cd)~XB-|zh1 zcjdd4AAml^kL(8^2m=193#?2a+k8`_BLN_ji9iDY00T}C44_q!mCBlte&F)T{RZmw94&c!5y+~CC!G4cpR59$2*lV?*vXy_FL)E(a zftAN#2S6g!kZK4dQVprDj?_TuqfnZfD73Dgw*E)xHETXX8yjOy@$0c`aqEnY&27zb zR@OE|8Y3hbE>IUZFS-PFbD=$&8x1ViPBOvwCDpE1c$>Aa5XgqLe+g*RR;(IHNy>#+mS}J z2z85iwA1I@FEw!9P2XVX1HV{0A4*8mL>Ygy#srJEvL@INU0gT0ZQkO(!^hWer$3nz z#9#)8?A;f7_y{ZV)2Qf}#H8eu6R9WJXVcG}&&bTm=H(ag3yX?NN~@}CYU}D7grepv zvX-l@U$?d2zSGg!)qS_8cW`J}@#x#{Mn)%|PEI|Wey*IEeKq%b{>`roZx`RKazUzX z`>Xv9_D@^}DlQlT0Y|8>azU^YDu){&)HXOG4Y$+OBjSxLoIck;dvm{R`bHDyO#cOQ zC}99)Z0RzAf3=GC8`-}Gmi8Z!{SEBzT%$l64yiT|ZUDT%9D*i`-!r<+#^|T)WMHM3 z7l_``Ji}_py{zgi@Ud&B35Oyx+C7CG@ z|B?;(xTiI9a^Wi|XfhjA%`jP%fdb~12KXkH$k{%0pi)jP? z2zc!;o+VY4AGyKm-&SDc3-%2^{r*_9uJFAmJupmw^wu-a!G6=8`FIcY!%%N!3}{=c zD4vqsof2!}L3B+SW5zDhlJC?%6CLqYk}f@qFR z+scRckaW4THI2J03m)&yy*J^Np3vP-Mdptbn8e{}qsu4SXV6r5{hc@I`|- zbPn@#oix3}zG%pMGT{8~;^MCFizSOmOPR|`U9S-r8VNIk54@h|Syj>|*FjU^3jCR` z^FB+H_|`umFL1Um4^(A?{??%lIcGPTtewLMY8gNPJWvDyJoQcWaaD0=gzU91nyS7s z0?gw)9M-}9>m-8%IRBT7-=y$=Pco{b<^>m#TMF(jCnn$2;3UmE>|>Be2XbuJ93JWbBP(!Tm|nmE+WoXY0tR1fA>4_50^ zCz^fzHE`xrR7l1SI^Z|d=~=2eTK%9hiQa_Lv<7tRF--W0*OuSiOlB{Yf|T9T%88f6 z4%+bXM#?qAet31B#4@P~AC~71vJU?$M1(6?IH6AxV;1yZEF%#{7Mmxlag_w z=32n&GY#&^YTgnw9GoL$OjE$|4IJ|+?9Qb+@$KdPm-NPtRdh+b##|tD^U33e?iK2f z1g)X5L(@Ln2mH<$(Qgr8Qx=Wh#2Q>}c)IHULbKbSMZCV6P!ZhvmfcOS_GHEM)&i#E zE9zaoKuMH|NhX7}K_%=*In`2nF%_BA$B4vKyV8o21=^3#39It&ag2tKN9Qjz#D*EV zr$kitayHntpYVK>fPIiYHQjidO+}`=vW@ojm&&!M$Q-Li@1vWH#b32jz+k4L#?{+e zOe3r0>mepIh)y;aHOs+vN0Br3iZj!ultaA7R+!|5mb5EYlYnvIvB&P~*{zNuBeOGD zkcUg#DG$$_7t!@Tp7vc38@PgKA4P(d|Nq6EwOgDZ{^P|vR^enj& zwzR7|G>uGbD;lpl83oPB8GI#=BDO66BjG}d!uA3a9|O)uzFY zgdGUjv}@hjYVGw64OQ&HYZ(t)SnE?0ZiaScDd7}1F-;!X^(MlM<1(2)F0ten^B6rU zMUk|a7hVZI$Ua`kanV++-Nn?Fbro`KxAMcuM7R8L!ASx%w~fhFa%W{1NILwtLYEGE zTb^0AgJ+$v_sx}PJ#Lifv&CmOWKe{sQgS-@NvD0;*{Q^bP14k5Wi8j(hwuX?B8>pA z$eq1SriPEoYs&BWyqA8^@#9gEJThIvFKcFq@!+80(ECw=W&Ozl=*0cH5@LPH&jC(U zwL)IiNg|S09Zi7kWH(wCbn|MOTTZokWM+)VDG9JH{xMe3gZQ}(lTRMq`7ny}&4rmm zq+2lV@{9mdiCB=q`El8`3@OkRTcDG*>l<9ZI91nUU>{c$_|wAr$*{0)>Dq27NSK{U z79#kqiAUoS^DQQBUcZjLe~H3Ph~VyLo9O_OYAimw@LPiq%1g7z7>m8hh|kc_(R(#c z%un{tBbG75u>ItPLuWb;anL=qE6;1gGbr4=NG_FaZzYpT?S5R$P56HNSOEBRUvx8N t#}gKA`RBxCObgaF3WFx*acI}sgK=gu@N($LlI)n7EbmVAG{}|(V3Z~SX#qw+kR~wH3{4$MK#(FWG(`aeD$+y}DN0k6B1#!#hEO8S z1RW9}KvbkDf=GaXh$t<;aI z0fcQVF_r)X0s*YS3)mgwe`0YR7XSblj4Hqn000l51K|OXpmzi`TnY?;fOj-#=Ah|l zX&a%n4A4Jo$!i;+wG7cZhG2AWK>;Y_?_56c6NKk)KM3@B{^9HFy&hb<{}l(Ay7vXU zAAyqqAB>le7skiO%Lj+^@gsy0h<*DINI{_k!iSI&5{HoD;!-FjIVouc8F6uWb$Nv& z%12d?O3GnAq6mbjij=sN%D=pJUjichz;)m{6ml5g5rIHO zAiJ%A9Eg(_tlD1T{;?oDP!KPie;;B$m_QQ-cpy+H4-Cr73xk2#G2lJ`6X8AhllE~w zQO9%e!=Xr>oA-B7IW%dR{Ys7?AAVn_#p{NDWxOIDo0gy_4Ex4jnF55wXn3Z z#@INYadCBX_rRXN;2#ip5f>C55qT}@dNe*EF)2Ca_MOzM2M@Dza`S%6FD@x1JuWM+ zsQj~rN~^7_r#HN6X>Duoc>Si6+1Ee78XWpCJT^WtImMoynVnl%UE{28a5uNU?(u?v zZTt82H?jZ5O9bS_1A{?f@I77-o+!|uA~4>cwD}GmcZ8n{6+NtTlOK8Fe$lh$eF{H2 zEsObu^&-R-b;p!e_Ne_}_RkT!^*>_vAH@EX*D!DZ3IUr36#>kEEvHl!A`eyfvg|J4 z(dZeYKa81F-n4?w1s5+X-_mTdLU-%WT!Ku!p8A#)BRyuq(_%rjR@Y$aL9^h>a~GlA zH{_O$PaO;q{v`6pDdAnf*{6G~I_0}eZ+2`O$rCQO+B-;)Yh|_N-%K5>MXB(#kqR8+ z59&J3AQ8-DF;2OB)pEKDM4-TlqIgF_wu?BZH-0SH2f2dK>W>I^4Krg|K9Y$&+^Ev# z?m`sG*$Lg&UBGA>E8oD#+zrl{lzL8BIhMR0BH+vTgXXXCq%(A_T7Y9RL^xcxFA z2cMNy>+|XHs7b#*bXHqVr_h1m0B3&_oBJ&BT{y@GR!?|q&c!R#z15P`CKzlEK70?c zKsrFY-EQ8{8J=3s`Xb^lxs}1qAccSRFUaLS^ZeB`(C{mQn{i;Mt<1wBg#Q(Br-uwg zHfT^?-*+HYDx?6OoAJDn;#Q<^R}E&}lg}g|!j;UVkw22o4!;5KrL*SJR}E}><5?z+ z9I|cHthv zkfp0&fxTDU^Bz?{jH{0$#q_i388Vw;J#DhGjm)J90h!n4iecoTRA7f)TzkWt`009Z zt3iXy+=%dS%!{|HJy`zsw5IR!7|O*mmd3w zR#4P9bm8GJxZ{puuMcCz3S&oT#?lf1thGd0jiA+PalC2xy~{il&o{SJ;a&(oQvo1C zye5MD2=g`Ei%cC!Wzh=DbRh#DPxs}sY75KsI`_PR+WOgUAX0yg!={p_XS>5TxF{pC zil)g7wCvWzXthQ7l2?}j%Bbp@7vVkpM6N7n7ceuK7tu7Cb158+*E=;J{q~IU*Wl9~ zSRisOLI+}McGhKKP~JSmEh6wOJ?A_;|N6nKucZ?wi%Ai zPL#$~UA0T+K>9vzj%Dm%G!~i+DR2XG=1Jx}485fQa`X z=IR!(c1>=w>(`_UK`wrDZdK^W_Mo;{4+EP%KN^p|(7>(8nIEN78@Uy{pTVbmgSq8L znqC^SqqIe42~)OR@6Yw3Y(0p zbbQFs9H~~m9CF(}_o~LC`y-5y@1h)bYKACuH7u(g#qWPE(+c17yISIM&mB@@B525CwR{E-4U|Ao%CK@3jbzosVY^(9p ziLK6UZ%{MPl0&ha7niw|tDhzqu8ji+`QKWPnG*%mr=8s2*JuG@7(KSE<_dJ~LEgFZ z8yC#Dz3Y|3>_&|(?O$!0zta31ejFit$B3Kmg5~t-hbB}~jMaGyB!o5l{aCVt_}8DM zUgI}O!nyY&oj}*sX(}rjzu8CE4tr zPu_MB+mFLWKP4d@U`R&`V9(-qKe#!2o6Z*0)%|Z%3GqPu|Eq)_>gWH6O88yMIK4uu zrcs91G0P5jop6#dSj}R+(&>s_D{M&U&;KetwhP3ACs46X@7=rOrnrJYxyAH;2-{R} z)8ffI;YdG!--2ghLBI)5;$%FI6dgNG#`<2vwE#(@Wy zZ<1CJlvA5|qJ(Jul3XwEz=u2|ESMcD!i-l;=T*ptFPBp|cBbETa&uhQislsWNil@0 zRH%^2QPoY6FP|b&W6#i$EfHD0wfA;`MrPBYj$NRJd&e04r}xFlpbgue#damfMaC|G z*uJ14AfZ44V$XIXGi`di(qvMvcDBIeP8`kV#ajB{sEY4l#7F{ z_Dd+eI%rw^cD}`}MTaZ?E!LmGA^HM-(KTNw)pM8#ucFJ)*Y!q*R#K-g*=u{ULcs0) zCts3-&oiGc_>zJ?zOVs4)ajK#W^B+{ygCHdlk9On5fLeYlaa@X>k5aZ0QB&D>}Kc7yD^gF;YUrcnp z=i+dg0ft7Bi=V27)CIM@tP(U#-;|!bpYmWjq`h&!Rl5rGaZPMC9j9!=)=-@F)X(A& z1@l?<*;SX7ZKgH+XR)WAy3U>udPL} z_-K3&hB0^A5dR*wH~^(-PnKhC0L;7N)nJ2hFZeZ+#@7eP3LgV2Zgl};{-`)p+J z5@RgfqwD9-P)MEmz*eQj%gVN=L0?)k71B?t=vkgiFc&B0!pS&KyT1IFR?SsU?LcW@ zLIu@?Z8WHX7(a9c=$WG|_FM^NF2!$udUgqK$DSlhp7f~F^&~3dF&5evfs91066ORb(_TrM090OXa}})pgL#2N9p+_3-vgN zxvbcikIivo+t-wjNvwXHQ=MX-*K6J}9N?uCZ#dN|)Nj-Odc}|$(@}v+*6VJTHk0a4 ziMrGzm`lAsy@b^QmDzMju2`7liaAR65U9xbub9l|C4+)&PyGP1MfKdO`(E3FdZ3u_ zN}mR?8ZO4nb%GHia8kQ_f`Vg)w})|TIA)&ToACb1w;5=F?Gr&-^N#aiT+Pl=yvvGu z%bU{`yTH8bK-(gO-So@&yT)%Nm85&8^Dfgb$x`B8#T&YpUL;`@{3vDe>Ftb^7IZ8A zU0&8f*o^+`=P9hFD^w~9d-?EIVB!=WeeImNEIk|*(3N+DG87~nbS*gaQge2SLcMA7 zZ)gX;*ifg^yvMKW%jtaax_)5m!@$D)e7-65O(w+koIGT4J{XA_x;kbtXpvUYT{)_|CYpZx#V4^sb6%vQxfEKH99}xIm9vm-7A<5c zHZyEb!&O=22Y0|&&{cK<GCe;p9@tCApzA+a#==X>6;UfR?f+R_GfU64$Uoc#< z9=yKf9)+ioo}WA=`J$nTC9uIzr+Y@O4)(7T1q;s%`cY5P>&z~og75Ux_O0)$>lzVi YC?Qr-y8iNb6JUaQ{Ns-oeD}k@0iH3_-2eap diff --git a/libs/potree/resources/icons/matcap/ceramic_dark.jpg b/libs/potree/resources/icons/matcap/ceramic_dark.jpg deleted file mode 100644 index 8efd96c9837ec2c7244408fe2dee3ffed34b271f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3882 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 diff --git a/libs/potree/resources/icons/matcap/ceramic_lightbulb.jpg b/libs/potree/resources/icons/matcap/ceramic_lightbulb.jpg deleted file mode 100644 index 78c9f28e2b895bbe1811e43fbd2c0613736cee73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4291 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 H98CNR_cv2Z diff --git a/libs/potree/resources/icons/matcap/check_normal+y.jpg b/libs/potree/resources/icons/matcap/check_normal+y.jpg deleted file mode 100644 index 012226cb9d5c20bfd7c5b214dcce86a47ccb4ecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4924 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 diff --git a/libs/potree/resources/icons/matcap/check_rim_light.jpg b/libs/potree/resources/icons/matcap/check_rim_light.jpg deleted file mode 100644 index 231bde4ae2666d5b2aa43dc6f2f60c1c9b88a1f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5340 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 qT6eRa?q$qeZH#?1@WkI+X}0q(o2%-Ba)WfA@U& zZ%k~w1eA&H1a|-efdHP;1#C>ijNHz~MgstWU;@Aa0FVK!ATofOv@()r>?K(MB7Hha zbFVb5EG!)yE$kevEp#pI94+h}t?Z>=HvOQQ2T1DqO!W0hK9Nt3WdfP>Y%mswNWTt zGhKZnW1I<2Q^(xG9BW~S#bGyp0)fF`2slC&fl$SwQE2SH9UJ!n6*zDfI17dB0Ay4k zP!-6=13*WrQ%-ton-}+IKxCj&y)d`}VvDpvqzuSFpimiEsGOXvth75rx(~>z$ZgZJ z+$XO}3WM#4SF_5>uYl{jHnb!ChTa=khbLT6K%mq$G|`4e##o$*4c^wy-obJI0XKIK zPXf_DfJ_MtqS7KFqoR++#Da-Q$th>frlwu|=G*K`-{sI5%!0zA;%gpxKyNEGP1HzS=c5QMCOb%p(?U+dY1Cr_K{#=@v1wlvfyg2`4tWA3i{T5 z?~&mNLkN_C&9vdqn`pn2{cB(s{v)!#f&HE937`mtNQVbi0rmh3g?w@vSLkON=#uxe z7|ADt?D{+|>x2FD9>?OySh&O6*i`!61{u~V<%}WLqpAK>n|0aoledyPaw+pyp1!y# zQ;Jvchz~$2IlF^2TOxMQhwy9W*N7%mmFBN~S2z)BHXYPhYDG(Ta21apc{NG{U5Za2 zJ?>3VK=O|9j&0es;N#VrTa%pACKW-ppHsZS>&2UhoHX85naj`6Gwsy;FaypM9&}bn zrf>;6&yzy7r8wYv$|f3DQT7;IuQho_Q*cul(Yn}ef@RnUEPD^gK%OM8qlZ+Uo{9}~=~*PAc0oo@s6nMy8Z;DhxPP17C50uq6W$+>>oYq-91x25E$ z$4--Hi9e4s@i{{tXY$tO#k0brIbRmft-kS-Fx~Gwk6R|QuTRyaPObG^pJEG`5<3i- zyD}10#Pc$@cCcW1&)4*S0?#$Zlf9z&p>5mBMEInIw6i6ir`;^- zOdVY3*On$ur=>kSL}GQ_e|tHy&($~0c_2;Lc6rR1%da%k#Bqt2jPhb$!AM(ovGz%H zH3b$O!Syn{z1_(S)RS#*T})}ZDtnQky2?ibDg;ql+RW=rv+T-BB{!?M#LSVbO8Ve~ zL$Qf&YMHJ#hBXF2EPIIPqtN`B)I8+olV8b19x5N(;p$7nRuw{-W*+EzvG-Tl%Ca1B zPj+>7B^@{oVkBFu+X@n_d5H{*(!1{@I%a2;aRYC5^xoafFQ&#}Y+X7fqWQ@FitJz1XPtb-!4%oZqgTMW&V0(r z+CyNSs)BKy@**Kisrb8k5HQ@G; zDyT3?{FS}2aU_*-;h5$`zHG^I-E#q zVhx0IkcQDI^wIZY`P`}0p?49hh(U@_wY3x5;PO3gS(I1n+H_j7H zX_E;N-5}MoFW;nAK(pRy9qF~{#RGA5@m9BJoXjDaip5~?86;1WD7X}ojtP8wzj1v^907~-xZt%;4 zDpp@>QDebnJ$b+K8gFoPC3(Kad%a9zMsA5SwVG}l>$~)ZI&zz~mz>f`sk>xr__SP< zV|s4vj3-mw)PJ-@&~?rGJjg<|^H(yKl1_&B)5_1IY3K%*knDq{b`1WOpoBP`^(p|IrJ4$gtF{8lN|g@v0R2 zw{oz8-p9?Y;o*cgK9nx!70W{l@^==r%JB*-jdKa)Yg0|+27h+pK*Vrv9q3_B%{y_X zmd)T&U6!c)=tjx1uPP;|7_&HYB+Yx%voc;=jcs+jD(NCrMztF98~c_I-JMzwnY&Tq zd5)1jMrE@Z#Jc{V;mFV@SN0bPzZlwf2aRL+sMDsEnW^#LB1Kqjd)Dp2S6SSaW%t;` zkV{2n->v#my71Y%3!aTzkX ztY$1;Huqn}DHgPPyxZbq?m8SGx7aGtX186OTqRyKVhLE{Sb5Lr#Xxj4()4xk&F^EL zjom;CaQE+5XA6fLI_93XO6H648a6MF`LajSH{Ii1^@^fWzVdZFGrK1^*Fkpp$0obc4^F{g~aJQ|=o Y(#{vhj@>L?YS7+Y{l)Bqr09?N3@Bjb+ diff --git a/libs/potree/resources/icons/matcap/clay_muddy.jpg b/libs/potree/resources/icons/matcap/clay_muddy.jpg deleted file mode 100644 index bbcfcb3c3b0c35bab8e7548b4e12a00ab767963f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3391 zcmeH|X;f2Z8h~#W5{L=}!WLFpVh9a|EQQ2!$`(wbfDi}}P!S^}p+y8i3@#vo8W;90 zDheb(0!Ue+AZ0{bR6sg_5Em!~DhS9ZB4Dd!m`m*}XMWAhuQ_w(z2`mmz4v?1z3=mV zKc2NGYvX_}+lS=?Kp+r+30}b31fq?RB8&zA7K;FA0ssI7NDwH10V^Ds!qad70^aFh zx`Rn_a;DLpT_vc25a`ER1lG{s>o3+9z*zgoIl$KS zAFPc4UH}5FfzW^>5E=+15}}FGMWM8`P#A5Ujk-n{V`C$Xp&{1X&Jt^CV`gY*^@)`Y zZi_v^-o%pVM8rGU;qCG3AAul|NR%c@ABED#V-2zRe>>JX0kkHN0;Iqo)&LX@fuSL5 z-vO53oEqS+t#91#0fEB6d6Al0s10C)N*91aU@#~grlA3cgWbo#bpVdm(A(_nfzS`w zi?lw7A*JV*Yub1=-Z2OqSg<8WC7jek85$XzVC`^Q@b&}>^)nY&8r{pA;j@j&VsnCm zxgnupynX!r(J=y{DDhBI^5K*t;*3+7S*OpOmE`3Y6c!bilu9cqW%8=(8ilf{xkYv3 zW^3E6yWf7-b?^Rz?w-L%L&NIFPo6%TnEdJa)bxv)*||51ZC9WlM}-yfmwDv=_~kNdi3x2G>Dn||z`6SYlO9Au;& zm7dDz*tS~J`D-UOi=k|i2X4SF{K)w9SXC9SEsJQ%$KKw1;r#tTY+r{!uhnA8$9FoM zci6FCvGR!Bud$8SU_Cs|OIN3l_LUL}(kl7f7DZ4sd*5iAeD~?q(X19*Q-4*0tmJCK z%Jq|XXLfnCTrCNX^Wxg!B>T()m_EzT$0D|s`R+3s{Vty~m%o1{W3VPmM)BL^N)6fM z&%L(4P*D(^(#Ja=gDJ6v2vOJ;MVI}>!X7+HnpxEFplo=T`bt;S`Ex;4ek!^3FiV~0 zd|j_}Z+v8{*&Atd0$m-n1~~9J?#uM5_;IJ#4E}6!>X40vptiBJKGkvd$%i4x&oy!U z)!8a7SA{?pt`m4~n6bO+!VHY9|DbkZqk4xNYV3+@I}O3o5h#8tZJs1;hJ@7!MEUUUc}Zt@JWwO$!Z=`b`!b6=CSf49kZeQK~_*qK227% zM_f%QWa&LMd#!GsrYYn{heK%fQD?s-79W~(V^&l@;v{vt6-xJ zj8ckft=ry?J9~C_i25AT84#z4&)8$e@n1)jxG^oRLCZ9tZI16fmqr65$p)P&m-?+j zDn+-5wko=TduNKV%VzhVg~z7*y6Z-Anpy1yIr9TM`Y>6cL?%yyhq!Q9@W@4cMH*qd z(A2Dw^YHKU?kOU6lgm`T&xvD2bz&@O4`H|p=CQT3P2m)6coqh0f~m|P9sx^ z(7@4N^IC`lX~%9caj zwk6@BMQ7Z$V~NP>+Gr(Gfu4nk$=r#$pD)P;;bjG-%yzx$YOR28pIz^=cy&^?-^Gv6 zQp+P(jb;Sxr$GD|%0X?F$SZh1R-3;snuIavWio<9J<@sl&l}@{4xE;#`ZG(+WdS9Deq6?uBozIB3%dqxz|X z0^t=5X{mPQaTNVUMe937*ZmIPlhg9y2g$ga?RM^OKMd)7+TpOVh()MtP+ziDal-^m z9lQrXF1b#Ie4w!~T4r1F=VZNqefgsFp?aT>LPk$MW^|y;#In*i0AxNZo)Pur|wT z?28!8Cy}pC82>6NF`+iZS{7<@-eqrj$zAf^J+CH)zVEv}-;*)t;Gg7tCeq_MHt*t2 zXHJH{P6&0Y-l=a+BsVR3+)+#snKvwCVQzCJq7;!(t7&FkaaKbML-W49e*ow37uQ%6 zCplR>%DAeT;@sP-eT)&D`k7^XmSrI% zAqO)~*tek}h*Ey629g#aDL$aWU&v-qBD`JYTKSy%cFS+v4ffi2&(M}BuN=@`2&eFL WE`1|v#{m1MuiGjq1v|-WPyYf;YFNnt diff --git a/libs/potree/resources/icons/matcap/clay_studio.jpg b/libs/potree/resources/icons/matcap/clay_studio.jpg deleted file mode 100644 index 0aa2ea3de0614ceefef05eafbbed4421af0f1494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3652 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 S#R|oe0|&{iKQ%PyaO59fNG@mq diff --git a/libs/potree/resources/icons/matcap/jade.jpg b/libs/potree/resources/icons/matcap/jade.jpg deleted file mode 100644 index eb0bfb6b8c286adacebbc22a42f6789c108a0277..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3381 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 diff --git a/libs/potree/resources/icons/matcap/matcap.jpg b/libs/potree/resources/icons/matcap/matcap.jpg deleted file mode 100644 index 71130ff591382166e1bb242900459b1a795dc2af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4937 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 diff --git a/libs/potree/resources/icons/matcap/metal_carpaint.jpg b/libs/potree/resources/icons/matcap/metal_carpaint.jpg deleted file mode 100644 index da04f50acca12fcda83e42b8bdc2cb3f3f3050c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4637 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 Xx=gDR)r;1`Xz5$h5vVir`&0h{OFQud diff --git a/libs/potree/resources/icons/matcap/metal_lead.jpg b/libs/potree/resources/icons/matcap/metal_lead.jpg deleted file mode 100644 index 09872961f75f30129efd6f80ac07831a80416034..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3251 zcmeH}c~nz(7RTSq3K5Vcfe=Afq{2-vWRXTl;#1PZd$ z#tkus1O!A`3TQJ>-I11OP&B zFUaYTyEr*}dO5j!xjI=oyL&l#c)55$vnvJ%;Nb6C6f^>1zsEu-hW!!$f?Ux-d;Vh{ zkaT5(DfI=WqNCXOnM4{0rEsQ<}qpgj>>aEt%H^JiZCRk%*g1MaqVU3NMv9TrD z(#C!r$$?~QL2;rGo$QDt;>t%rG#ZW3!WdyNMnr-!f%tFRatC0b1*8BeaL^in8GvvD zaJdt(fbv8_r?zr%e;5dZL;0e$v@xq7L6bfJ1L1HO0**u?5Rm#Pv<@H)kcL*yJ}9H$ zeQ4_htV>4m1uYxjhFiE0^=n(#sKiWdjIjyclwfDSj!1H#(%jrVJiWGj%<%JPvbJ)# zpZ{ip zo0?m`YHhoHr?ad3?!Egxef^q&M~?@GhQ}wKJ%2Iza%y_!&HRrGi%W0c{q%l?3xuxi zPx~G0pSTPlE*Js+r~BIH7+Vq zjWM>Rj@!LiLHmvDUjxhhkI4Q8_IIvfKnD&&mj^chHUslQ5|RQ~UHVvncOXR_!CZ^s zzoq;#csGo8Q=r2ph8vxmO_L_U9UuFZ2bdoBnf|VEOg$Df=6EzvIMQ{7UvFz;P8#%E zHyG^SBiW3}*_P;)5HZh~3$@GLsJMa;@!g!~^Rt7jx!C=Hg>Z_XY4Hi2?0;$s^j$F< zZ9Z`Q!l*+7!ptBm;%dj#cAx6L&a10W9e%~+hngy5j#X}$zfrJ-u2*?d0`MAQ;^J&y zW?Q5Th!90+4zKs4GA*BXy~qkKP@Hc$*4e zj(-)P>lP_ALmj}#;&QzDMn?Jc!>o))u>|*#Nv1m4*rRUtXP2{cE$JC=-X2!%Pj}N$ z#x=FWA;3e<@QtBxm&_{51!_)u>%`4f59QmZ$&7@V_1V{32JcGVXH7IZvG%WV+DnBm zcBRkN`PSGRoM!3?#FjNWSv&i?Ufircm(yg2r|pUUE}M-KVP%nHYPvDG#BtXGF7`gV zYd+$0j>@_@7Iymv)2{lo;tAJ!URAj8gU9;;OU;-DJoI2wQ`GR7^3~3E<RMGro7ZX%s$>+p+Dzo|3goL6}& zCfjWH)BFU0T|}e;b4^Af<+cQN!(@?eT(NQ8*Fhr*A zu2H-EwTr<=5k2x!!VX>}wc`{ao~AF1r-DT4tcKn-%5^V8vlILPH{FtH~n?5!66arm{*2up+it9{RH$|F;!N9+6^WCO&w!kM7KV2NBKv>Bsg+>-(zXLt=7|2?DGB;7ipZokeIA|O`au;|F~==yoxJS#uG*J2cW$mUbuM1 ztUs$4l{oUkTU!LvOtVm?k^M&vY!*2fhwEA?tfSe#_ShD*w;IO3G-p$njk` z51H%K(681bS}dkGJ$d7+Z?5mIH{Uw`JkjMY?QQ{M>6wVz+WuWC72F#VId2sHqn>cC z^K?N-(V`4tuLwA8Ytyv1`ti2;tZDk{!!K^1c#6|Mz^U8xdP%{OBig5QrMV)aFp3P{ zj;aW&niSikzMvUOQ>dUrD=yCS9gfb?6f^mis=K^G|F_i{4@f#WVmrR#OrMF$Sz4rh zhETY#lsX}(OQ}HZ(sK=E)l|J~;mmPIBL~8LImg`2Gy;n_OF3l&2c%bFkQ6Ji65Ed? zQpG2w8h(B+$YgkkE^Q>j3{&L|6J>4vd%rhgA{!6(UQNd7WJ#k9QxoBXuZ5kjMn9{G z(5e>PE>?mS+Kdf^f~wizk6#O+4#{TT5^#sfTGP5e#a}c5&BbadP!G&baTH zxV*)uDn~JeDl&p^lV%fkYd}YVYrqq~nJu;|tV&bS2cwg2fr?vI)C`ltCUR8Iue`Fo z*V6`gAzg(*9EP**4-70DmL*A=`GjHuP)GZ(F&W;+1Ju$$d5NHM%v-cZ*&aybFuJ{| ci*f+zC;;XMrvp6K*-KpMz$JOV0=_)-S35-qy#N3J diff --git a/libs/potree/resources/icons/matcap/metal_shiny.jpg b/libs/potree/resources/icons/matcap/metal_shiny.jpg deleted file mode 100644 index d783aa3a41dc24ab41405ad66792edfd77849623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6476 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 diff --git a/libs/potree/resources/icons/matcap/pearl.jpg b/libs/potree/resources/icons/matcap/pearl.jpg deleted file mode 100644 index 48cb22ab0c30b2354038a03fd96e6aded2b31799..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4929 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 ul?4u8`rFO9;|cwG`Vq)cf?DP=E diff --git a/libs/potree/resources/icons/matcap/reflection_check_vertical.jpg b/libs/potree/resources/icons/matcap/reflection_check_vertical.jpg deleted file mode 100644 index c397d511b4f5f5da2043785b3ecba3537a98044b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8371 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 diff --git a/libs/potree/resources/icons/matcap/resin.jpg b/libs/potree/resources/icons/matcap/resin.jpg deleted file mode 100644 index 66f7cb7d3acb2f2586419a9030bcd30ce79f7666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4853 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 diff --git a/libs/potree/resources/icons/matcap/skin.jpg b/libs/potree/resources/icons/matcap/skin.jpg deleted file mode 100644 index ad08f183bb13698298bcc3dc8d7bb066c2fb30d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3726 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 T`kX}5&GwCE_nI6i5KjLM6kc=w diff --git a/libs/potree/resources/icons/matcap/toon.jpg b/libs/potree/resources/icons/matcap/toon.jpg deleted file mode 100644 index dd1d274eb3d1e0c8678ca49a285886e495d01531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6081 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 gG1F?Yb - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/menu_icon.svg b/libs/potree/resources/icons/menu_icon.svg deleted file mode 100644 index be38b1d..0000000 --- a/libs/potree/resources/icons/menu_icon.svg +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/navigation_cube.svg b/libs/potree/resources/icons/navigation_cube.svg deleted file mode 100644 index d46db83..0000000 --- a/libs/potree/resources/icons/navigation_cube.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/orbit_controls.svg b/libs/potree/resources/icons/orbit_controls.svg deleted file mode 100644 index 5a46cd2..0000000 --- a/libs/potree/resources/icons/orbit_controls.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/orthographic-camera.svg b/libs/potree/resources/icons/orthographic-camera.svg deleted file mode 100644 index 7089ff4..0000000 --- a/libs/potree/resources/icons/orthographic-camera.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/perspective-camera.svg b/libs/potree/resources/icons/perspective-camera.svg deleted file mode 100644 index 6491bca..0000000 --- a/libs/potree/resources/icons/perspective-camera.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/picture.svg b/libs/potree/resources/icons/picture.svg deleted file mode 100644 index d0d5647..0000000 --- a/libs/potree/resources/icons/picture.svg +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/point.svg b/libs/potree/resources/icons/point.svg deleted file mode 100644 index af01d61..0000000 --- a/libs/potree/resources/icons/point.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/libs/potree/resources/icons/profile.png b/libs/potree/resources/icons/profile.png deleted file mode 100644 index 1f42ba16de068a97c7fc806ce30c5084a00dc658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 975 zcmV;=12FuFP)$Mtu?cP?7|V@CA$_MA79)CC%(bBgC-KQuAe~IYs9=S0A1o zjvU8oYfg&(@aN&aum5vjf1c~Q?uY*64$A1~4Qy`mnc@X_T+4lA?7 za5^z$u#-TlKsLMEos{R_- zKO`ft3d8?Gdo4~b7%O6Sku8n=FT?HGaI#HiL{>_T2S zO<-yF8B5C>im@@L#qfn9m9-HgdP{yQ!tTltRpC@sDA$GR?)c+4tSKGlWQv?sRv6XV zZe26N=8EK;0)MIu&FSNKq>wOEVqmh772JGpvihQfbGx?SM0b28+O5yeC0|kU?k35E zKpWO->S{K>p854urfI+xyQ=9}gC=Y&{Q_$}d0U8i3Fl1+$-linNaJOkcVl%}F)e)Z zXh?eCb3OFm5S;PB+z`tX-hD%0Tt5vI@Q|cWLsfa;kc%%fFco3{mJoZxu^l0uKB(tW z?JH`r4mlUpzZ8p&ZVX2v;j&eMWdo4BfHF)h-Mp{~r?}-|zUp4B+5l??&_GTPO;<25 z8V$0O*w($XwJnGB18AT}6bwuTdn@?kJZBGaboW-tY!3=PlZ;15T@^BS1r`og@|2|V xQNr - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/remove.svg b/libs/potree/resources/icons/remove.svg deleted file mode 100644 index 326f5d3..0000000 --- a/libs/potree/resources/icons/remove.svg +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/reset_tools.svg b/libs/potree/resources/icons/reset_tools.svg deleted file mode 100644 index fe0846a..0000000 --- a/libs/potree/resources/icons/reset_tools.svg +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/return_number.svg b/libs/potree/resources/icons/return_number.svg deleted file mode 100644 index f8089d2..0000000 --- a/libs/potree/resources/icons/return_number.svg +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/rgb.png b/libs/potree/resources/icons/rgb.png deleted file mode 100644 index a62faf5237ed0429604813fe729a946c7928c65a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2307 zcmV+e3HHS1mC2M^_sl4@(Fr>pL{=iYm6E%13A29V~Vha9uG=<&1ofBkSj>&7K4 zIy-S&anJlKer@=#IlXIsj~K5%45L1jJ9oaCsP4JK7s@L*^g+xsV{r`mXF2;*k)Ogb zw^r-dU8i!p)aI+()Sr*k^MCG=I&3&5lc4)3i5yj@Bkq*%io2Xs$laIwxjtRn*YAo) zpg#%7CjvM%eXKg6^gd+fu{=}X@^x>fYW^cVv{1r_C}RzRwndXM*g-QBoHy`6&ADJ) z@1zuk7cNEXZ_WM)gO3C8u>k&BduGyy`wgAxr=av+W3*eu3XQJ96Cuj^CHSHRuQGs` zCJi$JW{hTL2xgiI;)>Kr_l?{s{M5>SqSz7@A!zQe=V|r?9lIkY zx1sO}ARX0{Fd0Onj^MzJ=-gh%#VH>xN1&f1$io(<%o0eIuuwG4=}Ej0 z9maEmBUtw;WPopO=7e2KdOpvy`>~%@e0gjEI9+xs%fj5-W59=`b|?ix&c5rxKitIl z15G9tlPb-im0}`t+La)T$~Xx|#aN4qIMLpRQ-fQP`!)~g`Q>~-#W<#}@5SWUwE+4~ zHg~}ly8R=*`w864q88l8lq3T~+FvmvfvGHed z@wmMEp6NStBZZ}YU_)RT;F^!K6g`D#IN-q{qCtQ(j`%&qaQ!0U&I*#ShlJ0qaTE91 zib5u)L0i$X1z-uc#%)Cqjx6ojk0-xtVX>?)42HA(K^w>JKXH&N}Y_Oe}jcz#taQygU z{^gkyZ#s@Jalwe3PeCUJE&zqA`+Rt`zJjAx`ngJfH3v?i>tvf@1-R)lsA$d0ybC~W_W*j zh?%s9PN#=%muo-(^t?~QajcMJITEEu#;r8F+_!sv4L9vzI4u1n*HS8&S4N2rvUkpH z>cCbA)~fPCRLkFsjXWsny5>DcGeaUaqSMO>l5`DGxQ34Pei$L7;V4yzGd(h%()-+S zAJ^^87)K6Xz|^cQQ5v?4rqm89qbNAPb9V)wVoHBTlbF=sCtIcqpC(?~_)tiKJlY!z~S4Ju$IP>OBLt?|ruL`rRA zM&q6b`}q1|3(i=Eu9B#*s(d=Z%LLoB^MTCW-?8?#0MO6NH;uhmUsfz_&Y?-j*>HHrfoEH0#dR zo?va1e$Jk7QV1&7)ePA0A5N(5LRfrWx%xor$-8tpgXhMOMeZdFS)Jv!V;b^~9+QJ- zs5Yv_05?o&+|S;XZpl zbzeNx=yJogXVQ9)v=c+&{Kipq+Ff1Vc&Udan>iX5+Nqf7^O zRe_t!LKlR4-Vvo=Nag;d+6e#n=yg2bgz~WfMlYN^nZ;SGlipt7IoBQoI d+rK`4 - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/rgb_elevation.png b/libs/potree/resources/icons/rgb_elevation.png deleted file mode 100644 index d43659fe5a2262969f186dfa5b3375a3f4febbeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2467 zcmV;U30(GxP)VOWw;u62clnz(Hi!stlTit%D4x z!3xu=bfLu=>I`iyGt@@xA04$golbFV$2!vrb;8mzE~M5J#8JmY2oy-z62XLoY%h85 zrN0)$-+J-fjU7d^Ybj&1ta zQL=SvQLU9=hO4aj15Y4vwn&r~m$B^NN+|0RFDdyjZ4F*@-sbJX-5n|IS!|XHr)b)~ zuUh{r0USh)9tgyOy5^h7g;rEY7j{jKXYs+(c4M^6mv|n&wS!m6Pzu;La}x z@dXAp=GXdRVC5eZ`?u{8=cjaYFQVK-uUxdbElx;k}?lesQ@gxqk6+#u{^Qw~V$p@61OS2e=~jW9KQGh?jBrP6YlCG|1qMH4DkXBM$# zEirMjnE=gfz}BBXiercCz)TY`QfS)wJFI_Pq5Q`g-DV%~n}22Q`CY*BRlvVbQI=3` zWNuL`rCEh}*Q(@*3r=}8pUX7M6-%?r;xxuq0Y|P6QOfnL{{-gm8o&#iet|KQ7lFCF z&_o;7y_nIpO65lic5T9%%m< zsJxfl;Dl57XTQ5Gue0shLr}vcS6A=mciopiS1QhW%_bORVI#e_dLRc{VHwWsxu(aS2X>Z9EZ(fp)dwecm(9atk2^=XfH7Sq z%nqbQ4>~K|WEDXtidln!Ip1G|MJp;%dSD**Zg?3TuMGhu*9Ay~sI7A#w_*XzL<~G< zB8+3laq=UIyn9HGDmEx4dRi4`Y&O`oxo4+s`rZs8eB>Ng>{|uk+P67B>@o-WWAjV_DQk&u}R2J4dTV;E<*fu5cusP0zuoo z6^75t8ix|<@F*9YH9s7PrkgcXP#z5z02=?<3mL4&srEF|MlX^>y%>nZX!9h7Xyc?| zZ!U&6H!KCIBm`Z@jZLBau1VGhOM zbwyBh|0UdccOMMm^4VOV0W_|lSy|-IDc~i+dO1m!S&C0pM5S`jJlzJ6AnQ`(F=B-pK}D}A8IYvj zV2DhP6D}W#VhTxmP6@4r3+MLYI6vSDVfX;LkpcU#9y9V%MTy!bN~eRUT&H%-CKt@0hMCk!=!Zc96QZCjB1WXfjI`7nO=vqhB>C z>iCM?jM@*aox{10?rQzP=!r+^kHVL2Zoj+P|AH$fl12^vF_}C$TNC1T$@MC;=#BfV z;74WPsgQ)}Af_qGxe?S^|HFCO*@fBKA=7l!yEV~_tY~D-4L-jS$Swbvj8d+x)uS$``AZZ#+KO%1bm h)d2g+cI7v3{15E962tdu&qe?M002ovPDHLkV1g~+rBVO@ diff --git a/libs/potree/resources/icons/right.svg b/libs/potree/resources/icons/right.svg deleted file mode 100644 index 5449b63..0000000 --- a/libs/potree/resources/icons/right.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/rotate.svg b/libs/potree/resources/icons/rotate.svg deleted file mode 100644 index 5638488..0000000 --- a/libs/potree/resources/icons/rotate.svg +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/libs/potree/resources/icons/scale.svg b/libs/potree/resources/icons/scale.svg deleted file mode 100644 index 226c124..0000000 --- a/libs/potree/resources/icons/scale.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/sphere.png b/libs/potree/resources/icons/sphere.png deleted file mode 100644 index 7e1285435b69d650a2093359b9507525c830c705..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 939 zcmV;c162HpP)TKgsG=OR_CXcESlLr)yt;j9{+7+yOS+ zfFdAd_6`s_-GDm`Cf(u$BxJVSQtRIaAT7*bV?4V>LRY;isU*GMr(eHUudTYS`N(B| zsQM?sCjj8Q=jDTg1IPFM!+yU%4a0EK>-8qxZWqt<=2FVJ5aQwqrbPw`{ou{mSyel@1IC1 zZW zk|bnVhB1bsD9H1C0{rz}fN5ElFU0aZC(mvW(?&iPoAl zO)fC3Og zw9_vL0zA)a3-UF0j4`P(=C}ELzIHOcIgTyMIsq=4d)u~K@djYs_T+i~``z8$w~hI? z0I+~#;Jk67aYHH9+TZDPo&%&+RsC^)fB$FwmOx$CTLmx%z614-A%v)vQnl~pKLI`g{sH$Y@6FMIPSXGY N002ovPDHLkV1guauz3Ig diff --git a/libs/potree/resources/icons/sphere.svg b/libs/potree/resources/icons/sphere.svg deleted file mode 100644 index cddd6c0..0000000 --- a/libs/potree/resources/icons/sphere.svg +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/libs/potree/resources/icons/sphere_distances.svg b/libs/potree/resources/icons/sphere_distances.svg deleted file mode 100644 index f74d500..0000000 --- a/libs/potree/resources/icons/sphere_distances.svg +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/libs/potree/resources/icons/target.svg b/libs/potree/resources/icons/target.svg deleted file mode 100644 index 6a29f1d..0000000 --- a/libs/potree/resources/icons/target.svg +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/top.svg b/libs/potree/resources/icons/top.svg deleted file mode 100644 index da88225..0000000 --- a/libs/potree/resources/icons/top.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/translate.svg b/libs/potree/resources/icons/translate.svg deleted file mode 100644 index 823e6f8..0000000 --- a/libs/potree/resources/icons/translate.svg +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/libs/potree/resources/icons/triangle.svg b/libs/potree/resources/icons/triangle.svg deleted file mode 100644 index 02ac589..0000000 --- a/libs/potree/resources/icons/triangle.svg +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/volume.svg b/libs/potree/resources/icons/volume.svg deleted file mode 100644 index 628fe72..0000000 --- a/libs/potree/resources/icons/volume.svg +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/libs/potree/resources/icons/vr_button.svg b/libs/potree/resources/icons/vr_button.svg deleted file mode 100644 index d61dbd7..0000000 --- a/libs/potree/resources/icons/vr_button.svg +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - VR - - diff --git a/libs/potree/resources/images/background.jpg b/libs/potree/resources/images/background.jpg deleted file mode 100644 index 04caf4f388af91f664aa2900cff7f0b79b12a8be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49807 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

        hth**pe2kKgOL= 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 diff --git a/libs/potree/resources/images/child_indices.svg b/libs/potree/resources/images/child_indices.svg deleted file mode 100644 index fb703d2..0000000 --- a/libs/potree/resources/images/child_indices.svg +++ /dev/null @@ -1,325 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - 0 - - 4 - - 1 - - 5 - - 2 - - 6 - - 3 - - 7 - - - - diff --git a/libs/potree/resources/images/compas.svg b/libs/potree/resources/images/compas.svg deleted file mode 100644 index fb20a59..0000000 --- a/libs/potree/resources/images/compas.svg +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - N - S - W - E - - diff --git a/libs/potree/resources/images/loading.jpg b/libs/potree/resources/images/loading.jpg deleted file mode 100644 index 8dbd779db7c34d81f7c44c375ff720309a84cbaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3211 zcmc(fXHXN^7JvhYQY=K8NLv$KBnXibqzH^I(iAX|1S!ITpc1N-rN`A#7Knlv0wPU8 zNJvN!F-SA4;u?|&tB^toAZox+f*T~1AUxdnW8a%u-^}~*=AC=)%$;-YIrp1;&pjK1 z8*c$>9xm=K06951K)~hzY>WVY04T`If7MOdvZ;znii%sdD5`ARwpD4n%J%K5DyphG zcJ5Z&u@kscRaH$(4XCc6sj0brm-ZeljXk?HG&Q~^kyF@=*`lbdsHm*5Lv@G7e=Qro z0)R?@Pk>Jfav*>_P)-3TxA6k77a#{v_)7biY*SKJ+^VqYvr+@dZSrnTc|`@qKR3w9 zZ}M;5rUcx*PgxzLVQ!&$3~YHE9;&77vuA(UxvQH|8vmB; f;J+U6PwOyXyMo*% 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 - - - - - - - - - image/svg+xml - - - - - - - WebGL point cloud visualization - Potree.org - - - diff --git a/libs/potree/resources/logo_small.png b/libs/potree/resources/logo_small.png deleted file mode 100644 index 6d1868b27c9117aa081e1719be6b05e6c7141457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6718 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

        !mGmB- z5FnaL;TE?t$+t4)T!x169>b*d20mYfhB=q+VQReQCQA`q&%m`Uu?Ddn_!Nb!5z|z5 zIL}E5Q!mO-$#>P?84Xh7xMyksV<7kZBQ;((9ampML@Q0(UjQSgZJUKaRZM#wBc7X( zBFcFVv|d_R<{PIx3Z{9EXSYys>shX)#>;MXouL8@@mlt@Z{r{WDJe>RIy7IOE^sOMbQN<9v7Y20c0O-&e&LfUR>ze|n3 zroht;X7LV$ucfYsC9>PJr)S(3K+9;&HNBEbo0`#7Mv2?rGgE?gZN65f2?$GzY#S;q zb-yU0Z%t{tn0_}G{?fqXsVLmZ5&jBq^zqe*=Z8|b5;dckWC@i^x%`!tMJ6IAQA76q zcw44E@Y^^YhqtNy8s%?3qQk-G$Wq4E6p@EgF6D9r7m@fILFmj3ysgv|IIg6|YiSO` z)T*TXU1a2*dR$`%e#nvXxwLXAm!=dBy0igPaP*2JX8%C>JNw(kc2csGpJiN$01-!3 zm+_x}rsi4KT`uKvC^U#f%<2`v{}VM#b`EnqlQlkQh4GU(F_JSimX-OTT>jb%Pujjf z4f85``%_yv>NN*GN^2by&>T{sI82|@D+VhfG)>$+dItdS?dA61mu65rG2Krdt zpXYk;X3*bM7jJ;$ew8}MdmoK8s>p^JIgB=v8gI@fg(C-?x;-C}2Hvspcy*m~tav-m zG-=Hl1BWekgD@_<8g3#rtQXOU@ThT;AT#YCO8!8Oem~EeKTY}TzB3UpCjFP)QH}>L z&N7VZMLZ)5wRnBWaSj-4a-e5m@FHNBcl7~0k}~o#g}HH+G4F~R2VR=c1;?W)Op=VE zGdo^U_>bySQgOERHn>F=t*^lUx%l6e!aZi=h}PyeX@v3=zodgRbG)fIShnz#&lj{# zA+-xBI@@-oBDT0PAIwCQK7M~c;O|*N6G688zqx=hVf&lEhw;f~Fj>w8JR|U**O+{} z$hIy8{$)`ar~1rmMsv$^FnxyHD-iP}CEIA<0b;j9O7Oy+lOUD)L;X!q40AOcdp`Fe zUc|9vPIEX95r7#WdM><=6R%0;{Gngt94C@}50ZTa-npNWH(wYCb;&cMyzdm}HH}yI zGlTIyw8w(UC9jB+*2dtMVgEc3ayt6RY1YdjfzJZ$+?O{TF!16a&OQ1wq;(Bo*Cq&S z!p~tGxvgn9&*>OLDclJASTMrt7(>owx*pH3qVQ7;!mRxNRE#G_YYw14m%+iDhklC5 zFo?n}KBp<1TnPLMT$jNXpR4S5&S%>MoUNn$&ns}b8$yR+{;V>avgixvJGBG7a6a5p z2->5ed8)zCKS$MD8MTL2KE}|}37~OesVE!B;jUv#vT#55HDD#g0^H;O3!Erwjcr9RAWZuinybA@j1!@8bFC2@E3t#{gbY^A9Q0X0##{e$S8azb^!V52BI&{SVrZWvZ8h2oHcc zS{N1Fhr%>+dF~bT`CGVFMd1=$*;(=H`2T4Llq`kc0~vw;eG$9o`)*MZ+HTSJ(+e~4`E#G$u&W}}NcoOA*or~Y|Qwq0m>I}`! zv(|&bAUENi?V;f|q96AtA?!heZ$rCJ}`(>_$k#=V7w=kiMq?QIEm-eM*J! zHh}9VBRsergSAv?plUdFGjZ=s#RwULpy#3fA4S_s@$Q!B!w;Z-SHq#}Na0TOGJ{%W zLX@o(F4+ZX3=mQ7Y~om?PIhx;z8lr4Fj~1^65nqn%M8lpSD-mSCt} zKpflcKL!!@#$ZF5)`a}9{R63j9d_#6g&J_{WF8sj_&<2(^UU?()(+kin#$no&Y z_EWf{|3nDc9%y?!HSa>WBfi)#tX5OG{C~&g5nnPfGpkYOGBGocc56r1L`~FxqWIm+ z?LwRm5irK}DNXxH2uylk8aU#{Fz#AfVoL)@+$_46fa7A0HNJBN(q^Ur+?BNa1@9gm U473fx761SM07*qoM6N<$g2-~OQUCw| diff --git a/libs/potree/resources/models/stanford_bunny_reduced.mtl b/libs/potree/resources/models/stanford_bunny_reduced.mtl deleted file mode 100644 index c5af617..0000000 --- a/libs/potree/resources/models/stanford_bunny_reduced.mtl +++ /dev/null @@ -1,13 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 1 - -newmtl Material.001 -Ns 96.078431 -Ka 1.000000 1.000000 1.000000 -Kd 0.640000 0.352654 0.488547 -Ks 0.500000 0.500000 0.500000 -Ke 0.000000 0.000000 0.000000 -Ni 1.000000 -d 1.000000 -illum 2 -map_Kd C:\\dev\\workspaces\\potree\\develop\\resources\\textures\\brick_pavement.jpg diff --git a/libs/potree/resources/models/stanford_bunny_reduced.obj b/libs/potree/resources/models/stanford_bunny_reduced.obj deleted file mode 100644 index 2222e04..0000000 --- a/libs/potree/resources/models/stanford_bunny_reduced.obj +++ /dev/null @@ -1,22384 +0,0 @@ -# Blender v2.79 (sub 0) OBJ File: '' -# www.blender.org -mtllib stanford_bunny_reduced.mtl -o stanford_bunny_reduced -v -0.026015 0.080404 0.021808 -v -0.032178 0.141946 -0.017212 -v -0.080718 0.120681 0.015666 -v -0.078180 0.060750 -0.026141 -v -0.023129 0.080012 0.024065 -v 0.016493 0.090119 0.016845 -v -0.024836 0.124400 -0.018354 -v 0.045263 0.054182 0.005458 -v -0.071339 0.123541 -0.007453 -v -0.010076 0.093775 0.015159 -v -0.072013 0.122345 0.015820 -v -0.074228 0.130989 -0.029073 -v -0.075178 0.134347 -0.036959 -v -0.077120 0.132986 -0.038342 -v -0.015844 0.082427 0.024197 -v -0.076832 0.102678 0.036875 -v -0.017349 0.078202 0.026462 -v -0.036220 0.138487 -0.013773 -v -0.037684 0.139022 -0.013772 -v -0.091535 0.113026 0.008638 -v 0.008183 0.099347 -0.000081 -v -0.057447 0.009548 0.031515 -v -0.052683 0.011730 0.030505 -v -0.064144 0.129577 -0.034149 -v -0.030386 0.146611 -0.020306 -v -0.025782 0.083289 0.019083 -v 0.003016 0.010207 0.031317 -v -0.024994 0.148076 -0.023777 -v -0.059546 0.124187 -0.007094 -v -0.062224 0.122949 -0.009014 -v -0.034513 0.094390 0.002787 -v -0.042194 0.011280 0.027613 -v 0.007714 0.009971 0.030783 -v -0.031217 0.093039 -0.012478 -v -0.035327 0.061990 -0.038224 -v -0.057122 0.013203 0.029083 -v -0.039599 0.010934 0.026852 -v 0.000378 0.012080 0.031432 -v 0.004023 0.011975 0.031329 -v 0.007312 0.011940 0.030972 -v -0.040046 0.134464 -0.011134 -v -0.014898 0.093990 0.011910 -v -0.034602 0.094878 -0.010601 -v 0.046793 0.036377 0.010525 -v -0.040882 0.012406 0.027183 -v -0.038322 0.011785 0.026448 -v -0.092009 0.084593 0.017443 -v -0.026958 0.012376 0.036457 -v -0.023633 0.013255 0.038175 -v -0.020423 0.013665 0.037882 -v -0.012974 0.012804 0.035281 -v -0.008831 0.013636 0.033194 -v -0.005391 0.013506 0.032504 -v -0.000347 0.013471 0.032427 -v -0.047362 0.084593 0.017130 -v -0.007039 0.077493 0.028597 -v -0.090110 0.119127 0.003268 -v -0.054905 0.014991 0.026879 -v -0.052070 0.014319 0.027469 -v -0.049074 0.013867 0.027012 -v -0.023893 0.015842 0.035933 -v -0.019197 0.015665 0.035376 -v -0.015144 0.015351 0.033983 -v -0.008304 0.014945 0.033139 -v -0.005708 0.016123 0.035088 -v 0.002444 0.014455 0.034435 -v 0.006239 0.014074 0.034319 -v -0.049627 0.016776 0.023271 -v -0.025482 0.016552 0.034391 -v -0.017873 0.017116 0.032665 -v -0.014947 0.016316 0.033158 -v -0.012387 0.015217 0.033343 -v -0.009590 0.016984 0.035394 -v -0.001358 0.015646 0.035095 -v 0.008826 0.015611 0.034622 -v -0.072733 0.090172 0.039093 -v -0.008626 0.091393 0.019304 -v 0.038479 0.013679 0.016466 -v -0.000258 0.081198 0.027382 -v -0.051771 0.016843 0.023013 -v -0.047589 0.016468 0.024304 -v -0.044138 0.015536 0.025409 -v -0.041036 0.016892 0.025119 -v -0.035882 0.016897 0.024405 -v -0.023690 0.017656 0.032421 -v -0.021546 0.017935 0.031552 -v -0.015981 0.017651 0.033002 -v -0.012593 0.018476 0.035911 -v -0.000968 0.019161 0.039297 -v 0.001126 0.017400 0.037173 -v 0.004630 0.019772 0.038833 -v 0.033102 0.013941 0.015778 -v 0.039679 0.016322 0.017633 -v -0.047040 0.019024 0.023134 -v -0.039629 0.020535 0.024763 -v 0.030947 0.086415 0.005823 -v -0.025818 0.019032 0.027875 -v -0.023336 0.018861 0.028942 -v -0.020714 0.018924 0.030864 -v -0.018801 0.018843 0.032267 -v 0.007987 0.019344 0.037129 -v 0.035101 0.017992 0.016865 -v 0.041841 0.018690 0.018190 -v -0.005506 0.097190 0.010870 -v -0.015881 0.128084 -0.024441 -v -0.041123 0.137672 -0.013007 -v -0.063484 0.126716 -0.031102 -v -0.021843 0.020141 0.029724 -v -0.016423 0.021819 0.035836 -v -0.014229 0.020043 0.035335 -v -0.007408 0.019732 0.037607 -v 0.001576 0.021567 0.039047 -v -0.057993 0.121031 0.016651 -v -0.029770 0.022185 0.021725 -v -0.011009 0.023498 0.037815 -v -0.004453 0.021691 0.039402 -v -0.000824 0.021946 0.040486 -v -0.081302 0.092705 0.037405 -v -0.079377 0.095170 0.038703 -v 0.038609 0.076100 -0.011439 -v -0.064378 0.116329 0.023578 -v -0.028631 0.021472 0.021805 -v -0.003069 0.026557 0.039187 -v 0.007259 0.023757 0.038265 -v 0.003524 0.078491 0.027744 -v 0.044730 0.021740 0.018004 -v -0.043426 0.019982 0.024486 -v -0.036284 0.020563 0.023974 -v -0.032805 0.024396 0.023112 -v -0.077332 0.066048 -0.025371 -v -0.006306 0.024218 0.039313 -v 0.001847 0.025517 0.039657 -v 0.006765 0.026127 0.038919 -v -0.018239 0.091088 0.014621 -v -0.036439 0.083116 0.018087 -v 0.038575 0.024036 0.016681 -v -0.080113 0.122514 0.010129 -v -0.044121 0.026333 0.024910 -v -0.038938 0.026411 0.025850 -v -0.012598 0.028243 0.039554 -v -0.009419 0.028020 0.040946 -v 0.000104 0.026242 0.040068 -v 0.009382 0.026588 0.038262 -v 0.008738 0.090688 0.020263 -v 0.047164 0.024037 0.017403 -v -0.042061 0.026903 0.025732 -v -0.034673 0.027254 0.024800 -v -0.028469 0.026978 0.022111 -v -0.026237 0.025612 0.023968 -v -0.005677 0.028794 0.041281 -v -0.001214 0.028431 0.041391 -v 0.002946 0.028002 0.041241 -v 0.005327 0.028688 0.041184 -v 0.041166 0.024422 0.017197 -v 0.046327 0.026611 0.017286 -v -0.011537 0.097435 0.003912 -v 0.003443 0.031518 0.042224 -v -0.094070 0.086786 0.005882 -v -0.075896 0.109283 0.032761 -v 0.041424 0.029039 0.014859 -v 0.049952 0.028556 0.015935 -v 0.015864 0.081927 0.023081 -v -0.062119 0.116379 -0.017854 -v -0.032605 0.030283 0.024259 -v -0.028615 0.030421 0.022931 -v -0.015490 0.029917 0.038683 -v -0.007841 0.031292 0.041631 -v -0.003890 0.030417 0.041396 -v -0.086077 0.089878 -0.017240 -v -0.009319 0.089331 0.021216 -v 0.000784 0.086219 0.024548 -v 0.045665 0.028693 0.016411 -v -0.029162 0.093425 -0.005410 -v -0.051920 0.030301 0.017158 -v -0.041829 0.030178 0.026529 -v -0.036447 0.030854 0.026747 -v -0.027320 0.030068 0.023317 -v -0.013878 0.032931 0.039144 -v -0.013553 0.030350 0.039774 -v -0.001522 0.030980 0.042189 -v 0.009502 0.034754 0.040111 -v -0.092913 0.086539 -0.003437 -v -0.079644 0.090335 0.036342 -v -0.029531 0.060408 -0.039494 -v 0.024190 0.092277 0.004984 -v 0.003438 0.036804 0.041084 -v 0.005943 0.035637 0.040832 -v -0.020881 0.151348 -0.035620 -v -0.062773 0.035630 0.020312 -v -0.025632 0.093514 -0.009512 -v -0.065246 0.124664 -0.023660 -v -0.039544 0.033939 0.027217 -v -0.036517 0.035093 0.027039 -v -0.015813 0.032908 0.038967 -v -0.010211 0.036109 0.040518 -v -0.005873 0.036366 0.041590 -v 0.047838 0.034236 0.013112 -v 0.049131 0.031489 0.014925 -v -0.013081 0.035727 0.039345 -v -0.001719 0.036860 0.042142 -v 0.038378 0.072776 -0.016165 -v 0.007253 0.086492 0.022914 -v 0.043711 0.033239 0.012460 -v -0.078590 0.143190 -0.062477 -v -0.069048 0.130067 -0.026618 -v -0.041895 0.035691 0.026895 -v -0.034391 0.036818 0.026797 -v -0.028950 0.036053 0.024439 -v -0.027387 0.036864 0.025501 -v -0.017027 0.039211 0.040304 -v -0.015155 0.036177 0.040100 -v 0.001028 0.039731 0.042342 -v -0.036213 0.087986 0.015266 -v -0.021437 0.073004 -0.037219 -v -0.034998 0.136464 -0.029436 -v -0.009531 0.059285 -0.050730 -v -0.044848 0.038916 0.027447 -v -0.030929 0.035164 0.024584 -v -0.028125 0.040378 0.026229 -v 0.045169 0.038817 0.007925 -v -0.015440 0.041483 0.040982 -v -0.013634 0.039205 0.040103 -v -0.011636 0.040088 0.041413 -v -0.002897 0.040769 0.044127 -v 0.008376 0.043114 0.041795 -v -0.062041 0.142885 -0.071148 -v -0.005147 0.086868 0.023756 -v -0.085548 0.076878 -0.007887 -v -0.062535 0.116944 -0.022061 -v -0.032032 0.040991 0.026008 -v -0.026709 0.060074 -0.045354 -v -0.088682 0.070900 0.000429 -v 0.002881 0.060748 -0.047116 -v -0.051080 0.041810 0.027757 -v -0.048204 0.040153 0.026365 -v -0.043048 0.042202 0.028195 -v 0.005240 0.092835 0.018287 -v -0.012850 0.043492 0.042335 -v -0.007009 0.040134 0.043560 -v 0.002571 0.042254 0.041781 -v -0.016576 0.085375 0.021879 -v -0.062760 0.134787 -0.058597 -v -0.022739 0.152500 -0.026962 -v -0.058104 0.043435 0.028018 -v -0.046604 0.042533 0.027463 -v -0.039438 0.041185 0.027481 -v 0.000347 0.044365 0.043697 -v -0.002106 0.084806 0.025425 -v -0.019361 0.084074 0.022276 -v 0.026674 0.088516 0.011286 -v -0.035853 0.143915 -0.019765 -v -0.054403 0.042380 0.027203 -v -0.035933 0.040742 0.027548 -v -0.030914 0.045544 0.026444 -v -0.029977 0.041904 0.025799 -v -0.016210 0.045333 0.041799 -v -0.008727 0.043985 0.042839 -v -0.006232 0.047547 0.043097 -v -0.004349 0.043861 0.044252 -v 0.006161 0.042184 0.042185 -v -0.071298 0.107009 0.033050 -v -0.039823 0.141414 -0.018419 -v -0.062612 0.045204 0.027252 -v -0.041367 0.045579 0.028731 -v -0.021394 0.046855 0.040992 -v 0.002219 0.047593 0.042374 -v -0.032970 0.085251 0.017000 -v -0.024718 0.086877 0.016968 -v -0.014058 0.087329 0.021994 -v 0.006125 0.099100 0.004356 -v -0.051592 0.124827 -0.004366 -v -0.026827 0.148127 -0.022081 -v -0.079019 0.123412 0.004150 -v -0.057394 0.046762 0.029303 -v -0.048964 0.045503 0.029378 -v -0.045222 0.046008 0.027604 -v -0.037561 0.046630 0.028082 -v -0.035739 0.045292 0.027371 -v -0.017466 0.048533 0.043021 -v -0.006584 0.085167 0.024477 -v 0.005932 0.082896 0.025508 -v -0.081211 0.116510 0.022809 -v -0.074595 0.120195 0.020168 -v -0.060661 0.048726 0.028620 -v -0.055796 0.049510 0.030399 -v -0.052110 0.047596 0.029375 -v -0.048528 0.049870 0.029520 -v -0.039763 0.048221 0.028384 -v -0.031305 0.047900 0.026655 -v -0.086409 0.119847 0.010735 -v -0.010563 0.046804 0.043459 -v -0.008846 0.048765 0.043569 -v 0.004138 0.046713 0.041372 -v -0.027393 0.085105 0.017309 -v -0.009020 0.084349 0.024990 -v -0.077226 0.092336 0.037952 -v -0.037833 0.135439 -0.012601 -v -0.066893 0.128382 -0.026896 -v -0.027258 0.093013 0.002517 -v -0.054417 0.048950 0.030500 -v -0.051553 0.050603 0.029999 -v -0.046414 0.049454 0.028962 -v -0.043220 0.049511 0.027488 -v -0.039599 0.050812 0.029039 -v -0.036505 0.049452 0.028951 -v -0.033060 0.049399 0.027109 -v -0.030702 0.051363 0.027789 -v -0.014584 0.048481 0.042341 -v -0.006205 0.051528 0.042306 -v -0.002558 0.049195 0.042954 -v -0.022874 0.085776 0.019211 -v -0.046284 0.132276 -0.009418 -v -0.045718 0.088531 0.012860 -v 0.041047 0.068649 0.008919 -v 0.040153 0.074149 0.000759 -v 0.042368 0.068354 -0.013313 -v -0.036918 0.094703 0.003648 -v -0.006183 0.068969 0.029996 -v -0.046565 0.052312 0.030103 -v -0.017866 0.052716 0.043015 -v -0.016079 0.055138 0.042190 -v -0.008656 0.054628 0.042711 -v -0.003357 0.052403 0.042884 -v 0.001915 0.052917 0.042965 -v -0.018149 0.094118 0.008572 -v -0.003037 0.090313 0.021319 -v -0.039354 0.136762 -0.012132 -v -0.068990 0.127065 -0.021452 -v -0.070915 0.125037 -0.016269 -v -0.069864 0.134031 -0.034188 -v -0.063875 0.049421 0.029212 -v -0.058881 0.052041 0.029192 -v -0.049378 0.053383 0.030969 -v -0.041948 0.052647 0.027962 -v -0.034501 0.053269 0.028193 -v -0.012381 0.052885 0.042782 -v 0.004242 0.054446 0.042479 -v 0.030144 0.085737 0.011309 -v -0.042932 0.086058 0.016317 -v -0.025262 0.149765 -0.023608 -v -0.067077 0.051989 0.028971 -v -0.053727 0.053174 0.030899 -v -0.033992 0.054713 0.028122 -v -0.032162 0.053063 0.027411 -v -0.006345 0.097456 -0.013215 -v 0.004877 0.099545 -0.005586 -v 0.007996 0.054908 0.041475 -v 0.021973 0.054037 0.034659 -v -0.027659 0.061514 -0.040450 -v -0.028953 0.059578 -0.041611 -v 0.043275 0.064315 0.007375 -v -0.072505 0.135666 -0.036816 -v -0.033101 0.144819 -0.019255 -v -0.064942 0.056355 0.030362 -v -0.061295 0.056574 0.030972 -v -0.057629 0.053911 0.029723 -v -0.041282 0.055750 0.028007 -v -0.037809 0.054278 0.029435 -v 0.000710 0.057141 0.041694 -v -0.042988 0.132150 -0.009616 -v 0.018389 0.058693 0.033484 -v 0.040481 0.072186 -0.013728 -v -0.017726 0.087560 0.020011 -v -0.087507 0.084417 -0.012359 -v -0.055814 0.119773 0.014911 -v -0.058843 0.057699 0.030444 -v -0.047219 0.056040 0.030379 -v -0.043824 0.053752 0.028950 -v -0.044886 0.058344 0.028415 -v -0.042671 0.057396 0.027999 -v -0.038054 0.058087 0.028928 -v -0.030532 0.054692 0.029005 -v -0.013810 0.056942 0.042350 -v -0.011578 0.056184 0.041926 -v -0.008098 0.057926 0.042534 -v -0.069408 0.091301 0.038562 -v 0.043075 0.067721 0.000098 -v -0.054994 0.056698 0.030353 -v -0.049662 0.055466 0.031082 -v -0.035690 0.057108 0.028693 -v -0.011165 0.060326 0.041583 -v 0.000857 0.099392 0.001795 -v -0.040053 0.082615 0.019584 -v -0.010678 0.132988 -0.031134 -v -0.012126 0.097681 -0.000640 -v -0.055968 0.059892 0.030789 -v -0.053147 0.058151 0.030152 -v -0.051535 0.060054 0.029431 -v -0.048387 0.059510 0.029524 -v -0.034269 0.058790 0.029962 -v -0.029586 0.057197 0.029411 -v -0.015629 0.061503 0.040264 -v -0.004912 0.060700 0.041600 -v -0.079566 0.103854 0.035818 -v 0.022141 0.092938 0.008539 -v -0.075245 0.122724 -0.012459 -v -0.069723 0.058298 0.027492 -v -0.067639 0.061051 0.027901 -v -0.067076 0.057014 0.029528 -v -0.061937 0.061014 0.030494 -v -0.041196 0.061828 0.027571 -v -0.029031 0.059928 0.029529 -v -0.026999 0.061949 0.030436 -v -0.014403 0.060272 0.041300 -v 0.006156 0.058941 0.040072 -v 0.008266 0.062628 0.037262 -v -0.071052 0.086200 0.038791 -v -0.058010 0.115549 0.018189 -v 0.037205 0.077625 0.007965 -v 0.013341 0.090708 0.018601 -v -0.053425 0.062579 0.029207 -v -0.036848 0.061608 0.029512 -v -0.031998 0.062273 0.029968 -v -0.012777 0.096019 0.009045 -v -0.011420 0.062159 0.040627 -v -0.006813 0.063631 0.039787 -v 0.002583 0.062081 0.040109 -v 0.011675 0.060839 0.037698 -v -0.032736 0.143290 -0.017383 -v -0.061874 0.065566 0.028320 -v -0.057307 0.062312 0.030361 -v -0.025808 0.063587 0.029176 -v -0.009042 0.065816 0.037344 -v 0.005444 0.064418 0.037372 -v 0.017289 0.062737 0.033267 -v 0.020963 0.064483 0.032393 -v 0.036077 0.076570 -0.017753 -v -0.041576 0.096684 -0.003318 -v -0.008646 0.097994 -0.006712 -v -0.059226 0.065783 0.028386 -v -0.054612 0.064433 0.028817 -v -0.049066 0.063054 0.030279 -v -0.045740 0.062730 0.028813 -v -0.039756 0.064073 0.027696 -v -0.032831 0.064039 0.029952 -v -0.029113 0.064002 0.030425 -v 0.044863 0.036413 0.010153 -v -0.049306 0.109265 -0.004123 -v -0.003351 0.066095 0.037317 -v -0.000014 0.064569 0.038952 -v 0.008962 0.065582 0.034410 -v 0.013328 0.065407 0.033726 -v -0.075621 0.088995 0.038640 -v -0.031608 0.087339 0.014541 -v -0.077308 0.116330 0.025430 -v -0.077797 0.097112 0.038897 -v -0.067023 0.068954 0.026549 -v -0.052851 0.068206 0.027645 -v -0.046336 0.067315 0.027861 -v -0.037439 0.068118 0.027285 -v -0.035393 0.065850 0.028543 -v -0.022155 0.066333 0.030133 -v -0.010752 0.133472 -0.035047 -v 0.004987 0.065964 0.035673 -v 0.012658 0.067746 0.033397 -v -0.018227 0.095636 -0.008359 -v -0.072013 0.131096 -0.027653 -v -0.056050 0.032576 0.018945 -v 0.016599 0.096409 0.003368 -v -0.064533 0.065701 0.027702 -v -0.041134 0.065397 0.027357 -v -0.035038 0.070937 0.026142 -v -0.032019 0.066895 0.029429 -v -0.028835 0.067477 0.028663 -v -0.026283 0.067905 0.029544 -v -0.010683 0.068499 0.030364 -v -0.089826 0.084901 -0.010034 -v 0.006039 0.067362 0.032925 -v 0.011550 0.069911 0.032798 -v 0.014924 0.070210 0.032152 -v -0.045320 0.129851 -0.008204 -v -0.075472 0.122875 0.012888 -v -0.049771 0.067238 0.028955 -v -0.048145 0.070481 0.026599 -v -0.008966 0.069570 0.029418 -v -0.020888 0.095338 -0.001915 -v 0.002472 0.069424 0.029849 -v 0.007329 0.069912 0.031589 -v -0.040277 0.086878 0.016028 -v -0.003019 0.099093 -0.003652 -v -0.074450 0.069439 0.022729 -v -0.064900 0.069306 0.027363 -v -0.060926 0.069818 0.027574 -v -0.043574 0.068486 0.027640 -v -0.029221 0.071236 0.027319 -v -0.020268 0.070785 0.028758 -v -0.015698 0.071365 0.028446 -v 0.004874 0.070218 0.030011 -v 0.016848 0.071462 0.030663 -v 0.004956 0.088525 0.021420 -v 0.044097 0.059976 0.008072 -v -0.072895 0.113977 0.028745 -v -0.072039 0.072100 0.023167 -v -0.055781 0.068297 0.028579 -v -0.051503 0.071120 0.026378 -v -0.049986 0.073180 0.025128 -v -0.045100 0.071934 0.027002 -v -0.037322 0.073406 0.024060 -v -0.031536 0.070738 0.027377 -v -0.016978 0.070985 0.028986 -v 0.001132 0.071286 0.029178 -v -0.038611 0.090333 0.013099 -v 0.033722 0.082661 0.009015 -v -0.063348 0.120424 -0.022512 -v -0.077306 0.120013 0.019617 -v -0.042384 0.138522 -0.014876 -v -0.074290 0.073180 0.022267 -v -0.057638 0.072518 0.026797 -v -0.040310 0.070857 0.025783 -v -0.022469 0.070182 0.029358 -v -0.014302 0.074552 0.028514 -v -0.010003 0.071465 0.029007 -v -0.002769 0.074647 0.029412 -v 0.011555 0.098367 0.003374 -v -0.037719 0.142220 -0.024597 -v -0.068664 0.074604 0.023262 -v -0.061071 0.073197 0.025946 -v -0.043308 0.074008 0.026151 -v -0.032262 0.075355 0.024498 -v -0.025032 0.072109 0.028015 -v -0.018779 0.074795 0.027635 -v -0.007432 0.074697 0.029454 -v 0.007649 0.074068 0.027044 -v 0.011344 0.073885 0.028769 -v 0.018486 0.076396 0.025253 -v 0.023507 0.073026 0.025234 -v -0.074352 0.094684 0.038307 -v -0.056454 0.081716 0.021161 -v 0.018205 0.095163 0.005267 -v 0.018720 0.093539 0.009857 -v -0.070944 0.076894 0.022942 -v -0.062134 0.078469 0.022682 -v -0.052694 0.075243 0.025054 -v -0.038573 0.077202 0.022411 -v -0.028150 0.076141 0.024624 -v -0.010180 0.078342 0.027998 -v 0.004494 0.073801 0.027431 -v 0.008798 0.076614 0.025786 -v 0.010437 0.075493 0.026206 -v 0.020468 0.075494 0.025395 -v -0.054129 0.081332 0.020700 -v -0.067917 0.076879 0.023067 -v -0.054728 0.075423 0.025106 -v -0.051732 0.077852 0.023081 -v -0.047844 0.076048 0.024862 -v -0.042079 0.078777 0.022522 -v -0.000022 0.075911 0.028417 -v 0.013217 0.080521 0.024136 -v 0.019134 0.078402 0.024065 -v -0.047974 0.080378 0.021220 -v -0.086500 0.088572 -0.016638 -v -0.030759 0.082733 0.019283 -v -0.019605 0.079632 0.025224 -v -0.004900 0.079782 0.027578 -v -0.020263 0.089064 0.016865 -v 0.014402 0.076447 0.026167 -v -0.078001 0.125738 -0.034254 -v 0.041179 0.063475 -0.019684 -v -0.034415 0.141325 -0.015666 -v -0.031443 0.144059 -0.018177 -v -0.092548 0.084823 0.009485 -v -0.033959 0.139850 -0.015802 -v -0.061038 0.081079 0.021749 -v -0.058664 0.079880 0.021631 -v -0.036175 0.078331 0.021807 -v -0.060710 0.099896 -0.022137 -v -0.005637 0.073582 -0.037281 -v 0.027940 0.084322 0.015839 -v -0.029998 0.093329 -0.008709 -v -0.013203 0.004037 0.036155 -v -0.004920 0.006144 0.033656 -v 0.002920 0.006325 0.031493 -v 0.021359 0.008176 0.026867 -v -0.060906 0.115006 0.022528 -v -0.050080 0.003809 0.031545 -v 0.017171 0.006625 0.029007 -v -0.087528 0.106544 -0.006811 -v -0.049712 0.004906 0.031575 -v -0.022513 0.009098 0.039495 -v -0.000379 0.009263 0.032184 -v 0.013640 0.009960 0.030211 -v 0.042779 0.062709 0.010633 -v -0.053924 0.007339 0.032645 -v -0.044979 0.005821 0.030186 -v -0.041706 0.008027 0.028489 -v -0.017471 0.010277 0.037834 -v -0.012307 0.010687 0.035831 -v -0.006681 0.010512 0.034055 -v 0.016998 0.011484 0.029542 -v 0.018310 0.010454 0.029206 -v 0.023953 0.011537 0.025461 -v -0.050847 0.061563 -0.036288 -v -0.045294 0.011309 0.028783 -v 0.044395 0.065006 -0.007379 -v -0.024044 0.137670 -0.026395 -v -0.028055 0.140956 -0.023585 -v 0.013578 0.013785 0.029368 -v 0.016173 0.013938 0.028883 -v 0.026190 0.013256 0.023287 -v 0.028269 0.013286 0.020978 -v 0.030536 0.012295 0.016357 -v -0.069138 0.052663 -0.032038 -v -0.045052 0.062091 -0.036547 -v 0.021013 0.087852 0.018367 -v -0.066213 0.092248 0.035804 -v -0.048504 0.010925 0.029489 -v 0.022965 0.065808 0.031247 -v -0.030968 0.141188 -0.019107 -v 0.010216 0.014251 0.032200 -v 0.010856 0.012747 0.030123 -v 0.019782 0.012793 0.028059 -v 0.023807 0.015758 0.024778 -v 0.048757 0.015581 0.012010 -v 0.051069 0.015158 0.008824 -v -0.014083 0.140580 -0.033289 -v -0.054657 0.115485 0.012529 -v -0.060398 0.119578 0.020159 -v -0.085693 0.068990 -0.013421 -v -0.055175 0.109036 0.015068 -v -0.022377 0.150804 -0.026014 -v 0.031643 0.072677 0.020710 -v 0.021895 0.016446 0.025994 -v -0.017994 0.136285 -0.028611 -v 0.023912 0.082869 0.019628 -v -0.045664 0.123339 -0.006870 -v -0.032421 0.132039 -0.018904 -v -0.019767 0.128971 -0.019690 -v -0.013186 0.137328 -0.031656 -v 0.012124 0.016933 0.032981 -v 0.015353 0.015304 0.029459 -v 0.018408 0.015875 0.027717 -v -0.038253 0.127516 -0.012907 -v -0.012315 0.147379 -0.038202 -v -0.023228 0.149414 -0.025476 -v -0.044833 0.121174 -0.006407 -v 0.011104 0.020857 0.036890 -v 0.017412 0.016772 0.029101 -v 0.029637 0.017119 0.021727 -v 0.046131 0.017173 0.015791 -v -0.055687 0.096150 0.022903 -v 0.034478 0.062523 0.024193 -v -0.043857 0.124833 -0.008871 -v -0.066720 0.102943 0.029690 -v -0.037065 0.128760 -0.014154 -v 0.011020 0.081669 0.024140 -v 0.019966 0.020311 0.031454 -v 0.023359 0.020273 0.027668 -v 0.024737 0.018793 0.025036 -v 0.032303 0.017628 0.018792 -v 0.053615 0.021585 0.012362 -v 0.056723 0.020471 0.007362 -v 0.038240 0.063240 -0.023806 -v -0.065727 0.076482 0.023396 -v 0.015836 0.059596 0.036475 -v 0.024201 0.071090 0.027221 -v -0.041327 0.124271 -0.008352 -v 0.037614 0.066846 -0.024127 -v -0.013491 0.143690 -0.035246 -v 0.015465 0.020687 0.032970 -v 0.027189 0.018784 0.023717 -v 0.046263 0.019838 0.017165 -v 0.051144 0.020268 0.013550 -v 0.056089 0.022633 0.009788 -v -0.054126 0.016965 0.022384 -v 0.025559 0.085375 0.016445 -v -0.040826 0.118238 -0.010437 -v -0.039454 0.124157 -0.008832 -v -0.048310 0.120963 -0.004162 -v 0.025771 0.023117 0.027568 -v 0.034685 0.019658 0.017758 -v 0.030639 0.080906 0.016647 -v -0.056392 0.086595 0.023920 -v -0.075455 0.035030 0.000686 -v -0.034740 0.134091 -0.017935 -v 0.015713 0.024680 0.034543 -v 0.021354 0.024298 0.032646 -v 0.031968 0.024134 0.024170 -v 0.034639 0.022227 0.019578 -v 0.037816 0.024550 0.016957 -v -0.000867 0.071008 0.029551 -v 0.053520 0.024503 0.013897 -v -0.005812 0.070282 0.029179 -v -0.015075 0.131826 -0.025466 -v -0.046054 0.093135 0.010690 -v -0.044546 0.127487 -0.007980 -v -0.012780 0.131439 -0.027041 -v -0.062670 0.105512 0.021525 -v -0.060424 0.104713 0.020418 -v -0.051268 0.096792 0.018564 -v 0.011149 0.023893 0.038072 -v 0.019461 0.023795 0.033718 -v 0.024468 0.024590 0.029332 -v 0.028539 0.025603 0.026825 -v 0.033216 0.028049 0.024882 -v 0.037491 0.060675 0.021362 -v -0.062443 0.090088 0.030082 -v -0.030326 0.136904 -0.022007 -v -0.060753 0.106745 0.019621 -v 0.036350 0.027815 0.021311 -v 0.059069 0.027349 0.007140 -v -0.035282 0.132329 -0.017259 -v -0.068348 0.107362 0.030867 -v 0.007554 0.030114 0.040648 -v 0.018480 0.028714 0.034296 -v 0.027363 0.028113 0.029036 -v -0.048168 0.088725 0.014481 -v -0.034613 0.127252 -0.011828 -v -0.060985 0.136419 -0.073576 -v -0.052549 0.088778 0.020865 -v 0.011668 0.029213 0.037255 -v 0.013216 0.028224 0.036099 -v 0.018445 0.031299 0.034467 -v 0.020937 0.032477 0.032826 -v 0.021767 0.028320 0.033106 -v 0.030441 0.031199 0.026728 -v 0.035985 0.032895 0.023451 -v 0.039463 0.028858 0.016374 -v -0.061020 0.097053 0.025647 -v 0.056766 0.030495 0.011267 -v 0.009933 0.030907 0.039901 -v 0.024603 0.029548 0.030587 -v 0.039497 0.033456 0.018810 -v -0.064035 0.102349 0.024850 -v 0.052222 0.034532 0.012668 -v 0.053059 0.028763 0.014568 -v -0.068032 0.112837 0.028048 -v -0.070020 0.110895 0.030337 -v -0.014571 0.150944 -0.036773 -v 0.034164 0.032340 0.024960 -v 0.055178 0.033943 0.011650 -v -0.025174 0.132110 -0.021954 -v -0.041096 0.126587 -0.011278 -v -0.060034 0.112517 0.021852 -v 0.011716 0.032185 0.038419 -v 0.040692 0.031231 0.014981 -v -0.017636 0.130309 -0.022205 -v -0.089689 0.059207 -0.002180 -v -0.063602 0.113577 0.023760 -v -0.020410 0.147363 -0.030199 -v -0.016744 0.129038 -0.022324 -v -0.065895 0.086121 0.035922 -v 0.014030 0.033750 0.038260 -v 0.021289 0.035811 0.033686 -v 0.024533 0.036234 0.030163 -v 0.027671 0.031448 0.029185 -v 0.029536 0.068303 0.025620 -v -0.023348 0.130345 -0.020427 -v -0.067694 0.087347 0.037771 -v -0.017700 0.127528 -0.022264 -v 0.043174 0.034828 0.012083 -v -0.032661 0.136572 -0.019664 -v -0.062049 0.094641 0.028002 -v -0.029862 0.144670 -0.019243 -v -0.028076 0.146741 -0.020738 -v -0.048341 0.097618 0.013773 -v 0.011248 0.088544 0.020909 -v -0.061196 0.083231 0.023433 -v 0.011520 0.037857 0.039691 -v 0.015769 0.037339 0.037658 -v 0.035742 0.038223 0.023111 -v 0.038648 0.042051 0.019929 -v 0.040882 0.035228 0.015283 -v 0.043308 0.037655 0.011725 -v 0.025947 0.070137 0.026462 -v -0.053345 0.090629 0.022306 -v -0.026015 0.128714 -0.016304 -v -0.020852 0.152259 -0.027944 -v -0.016122 0.152936 -0.034907 -v -0.030843 0.125910 -0.012882 -v -0.063482 0.082314 0.025660 -v 0.022845 0.038510 0.033578 -v 0.027404 0.037987 0.028376 -v 0.032536 0.036702 0.025762 -v -0.003416 0.069047 0.029422 -v -0.014852 0.130180 -0.024499 -v -0.048138 0.093185 0.015389 -v 0.013748 0.041766 0.039482 -v 0.020005 0.037527 0.035060 -v 0.026239 0.041871 0.030396 -v 0.029704 0.038800 0.026965 -v -0.082241 0.045893 0.009798 -v 0.012694 0.083734 0.022541 -v 0.041059 0.072877 -0.009412 -v -0.027258 0.144785 -0.022318 -v 0.027542 0.072551 0.023651 -v 0.016831 0.040820 0.037124 -v 0.029545 0.041590 0.028673 -v -0.050388 0.099432 0.015972 -v -0.051421 0.084013 0.018788 -v 0.027083 0.065103 0.028274 -v -0.029884 0.130272 -0.018142 -v -0.057785 0.095851 0.024839 -v 0.015103 0.044075 0.039277 -v 0.018452 0.043654 0.037890 -v 0.021744 0.042312 0.035323 -v 0.025289 0.042969 0.032526 -v 0.031868 0.044123 0.028015 -v 0.032815 0.041757 0.025959 -v 0.036379 0.042211 0.023458 -v 0.043492 0.043291 0.012127 -v -0.072920 0.143535 -0.067337 -v -0.042717 0.122880 -0.007631 -v -0.049391 0.116106 -0.003380 -v -0.055718 0.106304 0.016632 -v -0.022850 0.125840 -0.018293 -v 0.023735 0.044781 0.034438 -v 0.026977 0.045358 0.031529 -v 0.040946 0.040487 0.016695 -v -0.012572 0.133399 -0.028427 -v -0.035876 0.136016 -0.014829 -v -0.047530 0.125697 -0.005832 -v -0.045830 0.114496 -0.008533 -v -0.015916 0.073036 -0.037054 -v 0.039433 0.073746 0.007576 -v -0.067828 0.099547 0.032559 -v 0.010984 0.043521 0.040383 -v 0.013753 0.046564 0.039807 -v 0.020723 0.048653 0.036392 -v 0.039451 0.049186 0.019784 -v 0.042536 0.045924 0.013675 -v -0.084424 0.078020 -0.010764 -v -0.028358 0.127439 -0.013965 -v 0.040445 0.074209 -0.004053 -v 0.036592 0.071066 0.015970 -v -0.042697 0.126082 -0.010020 -v -0.065503 0.095213 0.033065 -v -0.063974 0.086307 0.032569 -v 0.024660 0.048131 0.034269 -v 0.028193 0.046943 0.030683 -v 0.036116 0.045700 0.023743 -v 0.044284 0.047913 0.010695 -v -0.049463 0.088664 0.017714 -v -0.087250 0.104534 -0.010641 -v -0.025862 0.140068 -0.025748 -v -0.053300 0.103388 0.016191 -v -0.056346 0.091575 0.025297 -v 0.038439 0.068803 -0.022100 -v -0.055635 0.111929 0.016359 -v -0.059079 0.109297 0.018619 -v 0.008680 0.048657 0.040629 -v 0.033395 0.048212 0.027056 -v -0.029519 0.133846 -0.021490 -v -0.066151 0.082657 0.032692 -v -0.063566 0.080234 0.022965 -v -0.035979 0.130085 -0.015752 -v -0.053843 0.110827 0.012246 -v 0.017297 0.047339 0.038690 -v 0.032407 0.051141 0.027595 -v -0.040327 0.128620 -0.012404 -v 0.033144 0.066524 0.023019 -v -0.068516 0.083815 0.036743 -v -0.041464 0.131936 -0.010195 -v -0.068975 0.081821 0.035193 -v -0.035508 0.124613 -0.011033 -v -0.020356 0.132481 -0.024341 -v 0.024255 0.076332 0.023969 -v -0.020241 0.126047 -0.021563 -v 0.005149 0.051425 0.042342 -v 0.009393 0.052143 0.040966 -v 0.016932 0.053893 0.036140 -v 0.026707 0.049890 0.032006 -v 0.035730 0.051140 0.023716 -v 0.041137 0.049099 0.016914 -v 0.030487 0.061866 0.027759 -v 0.027673 0.076306 0.022722 -v -0.068088 0.077953 0.023652 -v -0.060961 0.090002 0.027706 -v -0.063581 0.110408 0.023757 -v -0.018378 0.148468 -0.032363 -v -0.029871 0.121958 -0.018517 -v 0.030026 0.077762 0.019502 -v 0.012788 0.050789 0.038620 -v 0.038521 0.073169 0.011929 -v 0.024653 0.052597 0.033256 -v 0.029390 0.051820 0.028835 -v 0.043175 0.053133 0.013010 -v -0.062351 0.085953 0.027972 -v 0.027912 0.061203 0.029763 -v -0.050006 0.092118 0.017845 -v -0.062907 0.107820 0.022517 -v -0.016555 0.144200 -0.033074 -v -0.035560 0.125897 -0.010630 -v 0.033070 0.056242 0.027822 -v 0.040882 0.053394 0.017365 -v 0.035337 0.068076 0.019638 -v -0.070012 0.094553 0.037519 -v -0.023272 0.135424 -0.025605 -v -0.030945 0.128903 -0.016308 -v -0.039329 0.132539 -0.011855 -v 0.018981 0.084420 0.021372 -v -0.073052 0.097234 0.037422 -v -0.057238 0.101359 0.021421 -v -0.020159 0.127485 -0.019483 -v -0.065142 0.080088 0.024213 -v 0.026185 0.054290 0.032495 -v 0.035522 0.057497 0.024773 -v 0.038507 0.056267 0.020310 -v -0.023238 0.127508 -0.016799 -v 0.021456 0.072515 0.027787 -v -0.069956 0.103506 0.033569 -v -0.042217 0.120837 -0.008168 -v -0.058067 0.118386 0.019005 -v -0.075288 0.100881 0.037478 -v -0.064547 0.078715 0.022895 -v -0.038272 0.130899 -0.014447 -v -0.065079 0.100197 0.027768 -v -0.061126 0.093021 0.027702 -v 0.042052 0.053266 -0.022685 -v -0.064999 0.105472 0.026330 -v -0.057056 0.105416 0.017942 -v 0.009550 0.057264 0.040087 -v 0.012866 0.055890 0.039233 -v 0.014614 0.055445 0.037531 -v -0.056353 0.083088 0.021613 -v 0.022460 0.059036 0.033531 -v 0.028657 0.057626 0.029377 -v -0.023496 0.144834 -0.027466 -v -0.010817 0.134719 -0.031070 -v -0.059616 0.117188 0.021104 -v -0.065625 0.088636 0.036213 -v -0.062409 0.101433 0.023968 -v 0.045613 0.059891 -0.007367 -v -0.052386 0.092276 0.020955 -v -0.045885 0.116113 -0.006963 -v 0.040667 0.057443 0.016301 -v 0.035006 0.078588 0.012563 -v -0.035285 0.121173 -0.013158 -v -0.066541 0.109462 0.028264 -v -0.020188 0.141754 -0.029993 -v 0.028075 0.081276 0.018719 -v -0.093338 0.089373 0.024838 -v -0.027113 0.125654 -0.015171 -v -0.038500 0.125700 -0.009748 -v -0.059956 0.109926 0.020769 -v -0.063896 0.092800 0.032180 -v -0.048680 0.086676 0.016388 -v -0.047950 0.086723 0.015454 -v 0.012333 0.058979 0.038583 -v -0.010944 0.136885 -0.032733 -v 0.025840 0.062393 0.030984 -v -0.070586 0.098279 0.035796 -v -0.055533 0.115174 0.015175 -v -0.046043 0.089649 0.012108 -v -0.060582 0.086326 0.025914 -v -0.052896 0.084845 0.019410 -v -0.066171 0.113128 0.026295 -v 0.020218 0.068527 0.031194 -v 0.021610 0.079920 0.022403 -v 0.038976 0.062251 0.018175 -v -0.061558 0.128111 -0.048377 -v 0.018170 0.002935 -0.025075 -v 0.017798 0.002775 -0.028054 -v 0.021743 0.005723 0.023806 -v 0.042635 0.007784 -0.007409 -v 0.037876 0.006751 -0.012708 -v 0.021440 0.004700 -0.016940 -v 0.021244 0.005064 -0.018569 -v 0.016742 0.003297 -0.030944 -v 0.042853 0.008920 -0.011694 -v 0.039254 0.009116 -0.015848 -v 0.019636 0.005245 -0.024363 -v 0.018683 0.005031 -0.029322 -v 0.015174 0.004395 -0.034775 -v -0.051269 0.107585 -0.013100 -v -0.010414 0.147671 -0.041742 -v -0.064348 0.087647 -0.023374 -v -0.039344 0.060883 -0.037896 -v 0.049049 0.011467 -0.007140 -v 0.022504 0.007931 -0.021587 -v 0.022528 0.010604 -0.025713 -v 0.020895 0.008736 -0.029246 -v 0.017618 0.006608 -0.033816 -v 0.006723 0.089679 -0.027554 -v 0.024165 0.008783 0.023797 -v 0.024934 0.007975 0.020281 -v -0.062226 0.126210 -0.034147 -v -0.009919 0.146931 -0.044095 -v 0.046990 0.011966 -0.012703 -v 0.023360 0.009397 -0.021864 -v 0.020688 0.010528 -0.034208 -v 0.019441 0.011382 -0.036487 -v -0.091124 0.088493 -0.007749 -v -0.009331 0.135930 -0.034358 -v -0.080806 0.075838 -0.018048 -v -0.061237 0.142695 -0.075625 -v -0.034543 0.120085 -0.014894 -v 0.051587 0.012930 -0.000741 -v 0.048671 0.013898 -0.013905 -v 0.025668 0.011946 -0.023039 -v 0.022363 0.011021 -0.028161 -v -0.009098 0.136845 -0.038598 -v 0.040493 0.054244 -0.025840 -v -0.018355 0.004442 0.038149 -v 0.055334 0.017139 0.005171 -v 0.055903 0.017222 0.002879 -v 0.051501 0.013063 -0.004130 -v 0.053898 0.016634 -0.010336 -v 0.049286 0.012765 -0.011364 -v 0.048699 0.016772 -0.017272 -v 0.025909 0.013165 -0.026574 -v 0.022738 0.012063 -0.029282 -v -0.062485 0.130619 -0.064650 -v -0.089975 0.100500 0.019012 -v -0.013568 0.129891 -0.026740 -v 0.056271 0.017217 -0.001979 -v 0.055426 0.017228 -0.007656 -v 0.029061 0.014847 -0.022313 -v 0.027661 0.014643 -0.026855 -v 0.026163 0.014629 -0.030786 -v 0.022383 0.012853 -0.031597 -v -0.061627 0.128074 -0.043029 -v -0.008756 0.138238 -0.038107 -v 0.056001 0.019505 -0.010587 -v -0.049944 0.112711 -0.003765 -v -0.042418 0.115580 -0.012798 -v -0.061929 0.122710 -0.044806 -v 0.057940 0.020446 0.003689 -v 0.053319 0.017866 -0.013350 -v -0.038193 0.001564 -0.044196 -v 0.027415 0.016014 -0.031327 -v 0.057186 0.019380 -0.006812 -v 0.029709 0.018187 -0.028879 -v 0.026827 0.019212 -0.035166 -v -0.006582 0.067879 -0.038695 -v -0.049048 0.103689 -0.010362 -v -0.060791 0.138894 -0.075525 -v -0.008652 0.139904 -0.041152 -v -0.029920 0.073718 -0.036444 -v -0.062334 0.116840 -0.026563 -v 0.039435 0.067679 0.013622 -v 0.058490 0.020923 -0.002672 -v 0.031871 0.019631 -0.024553 -v 0.028699 0.019467 -0.032819 -v -0.053708 0.114100 0.009373 -v -0.061416 0.125148 -0.040873 -v -0.062334 0.119758 -0.026690 -v 0.059045 0.026511 -0.009269 -v 0.052567 0.021985 -0.017091 -v 0.045502 0.058259 -0.010454 -v -0.062312 0.128596 -0.038466 -v -0.094183 0.088166 0.000596 -v -0.063960 0.121930 -0.052608 -v 0.058729 0.024289 0.006365 -v 0.060771 0.027273 -0.003568 -v 0.054618 0.023535 -0.015199 -v 0.031367 0.022534 -0.028880 -v 0.028583 0.022053 -0.033560 -v -0.018544 0.061442 -0.048945 -v -0.065601 0.034226 0.016716 -v 0.041008 0.059393 -0.023595 -v -0.076184 0.117637 -0.024959 -v -0.081078 0.065281 -0.021684 -v 0.044551 0.062497 0.000962 -v 0.060304 0.026625 0.001841 -v 0.054751 0.027704 -0.016394 -v -0.091303 0.085464 0.013416 -v 0.036146 0.022433 -0.021495 -v 0.035324 0.025268 -0.025538 -v 0.029919 0.025464 -0.031813 -v -0.029086 0.003112 0.037223 -v 0.057981 0.027766 -0.012062 -v -0.090821 0.094177 -0.008600 -v 0.037927 0.024596 -0.020281 -v -0.061559 0.137319 -0.069783 -v -0.062099 0.123075 -0.030604 -v -0.062550 0.129965 -0.060408 -v 0.060082 0.029852 -0.007990 -v 0.039387 0.027932 -0.019902 -v 0.037735 0.028741 -0.024887 -v 0.034433 0.026024 -0.027663 -v 0.029631 0.028587 -0.034044 -v 0.025023 0.026027 -0.038610 -v -0.061594 0.125848 -0.037565 -v -0.065740 0.029647 0.007377 -v -0.052411 0.116354 0.005261 -v 0.058594 0.032801 0.008187 -v 0.061038 0.032084 -0.003056 -v -0.086342 0.075485 -0.003650 -v 0.041101 0.031420 -0.018660 -v 0.035278 0.031128 -0.028282 -v 0.032448 0.028597 -0.031828 -v 0.026745 0.028843 -0.037306 -v -0.048305 0.104481 -0.004741 -v -0.052236 0.112573 0.002870 -v 0.060019 0.033823 0.004933 -v 0.060839 0.032802 0.001478 -v 0.029682 0.030226 -0.034272 -v -0.093250 0.095309 -0.001651 -v -0.081412 0.114069 -0.014749 -v -0.062387 0.135069 -0.062380 -v 0.044459 0.058564 -0.015826 -v -0.040234 0.117398 -0.011717 -v 0.044778 0.055118 -0.015953 -v 0.060009 0.036471 -0.003924 -v -0.086563 0.076818 -0.001774 -v 0.037002 0.033855 -0.027662 -v 0.032216 0.032948 -0.033055 -v -0.073057 0.122432 -0.046750 -v -0.071445 0.148552 -0.070933 -v -0.062792 0.138406 -0.064904 -v -0.061621 0.122623 -0.037695 -v 0.058297 0.034664 -0.010413 -v 0.039637 0.031886 -0.022841 -v 0.038793 0.036356 -0.026574 -v 0.034652 0.034584 -0.030484 -v 0.028791 0.033984 -0.034587 -v 0.026471 0.033018 -0.036797 -v -0.092440 0.099101 -0.001696 -v -0.071978 0.115444 -0.043445 -v -0.022427 0.087795 -0.025727 -v -0.008623 0.142573 -0.041917 -v -0.062716 0.132018 -0.047790 -v 0.059802 0.037633 0.000127 -v 0.057887 0.037472 -0.008639 -v 0.042039 0.034888 -0.017926 -v -0.062319 0.114350 -0.021342 -v -0.044018 0.115103 -0.010018 -v -0.061729 0.122320 -0.033615 -v -0.052670 0.105550 0.012494 -v -0.050582 0.104366 -0.013421 -v -0.053159 0.113247 0.007943 -v -0.084201 0.076858 0.010296 -v 0.041832 0.038185 -0.021334 -v 0.036726 0.036729 -0.028638 -v 0.028381 0.037823 -0.037110 -v -0.062181 0.131013 -0.056828 -v -0.047911 0.103968 -0.000771 -v -0.089039 0.105924 0.013817 -v 0.030522 0.036834 -0.034055 -v -0.031110 0.091337 -0.018100 -v -0.089470 0.087692 -0.011471 -v -0.030603 0.122289 -0.016091 -v -0.049484 0.105778 0.003344 -v -0.009590 0.134527 -0.033880 -v -0.076808 0.115963 -0.022032 -v -0.076158 0.081302 -0.019840 -v -0.089945 0.103516 0.008555 -v -0.086889 0.073818 0.003310 -v 0.034031 0.037777 -0.031364 -v 0.032673 0.039448 -0.032669 -v -0.092535 0.089514 0.014354 -v -0.049693 0.107609 -0.009317 -v 0.043441 0.057071 -0.018845 -v -0.088184 0.089248 -0.014316 -v -0.026029 0.057526 -0.049143 -v 0.043681 0.040506 -0.016124 -v -0.092478 0.091083 -0.006106 -v -0.062519 0.127381 -0.055435 -v 0.045391 0.058930 -0.001794 -v -0.083464 0.079626 0.029846 -v -0.086809 0.081328 -0.010697 -v -0.086556 0.068853 -0.010127 -v -0.062002 0.134547 -0.066668 -v -0.090827 0.106146 0.003450 -v 0.046401 0.043972 -0.006374 -v 0.042310 0.043353 -0.020481 -v 0.033651 0.043393 -0.031272 -v -0.090944 0.080641 0.000105 -v -0.092629 0.091852 0.018571 -v -0.012318 0.131084 -0.030455 -v -0.051361 0.116747 0.000225 -v 0.043714 0.067036 -0.004977 -v -0.037361 0.118285 -0.014198 -v -0.058991 0.003463 0.031335 -v -0.052430 0.109679 0.006546 -v 0.045339 0.043002 -0.012731 -v 0.041772 0.045614 -0.021192 -v 0.038392 0.044074 -0.025721 -v 0.036152 0.042438 -0.027839 -v -0.086695 0.075528 -0.000104 -v 0.043907 0.064129 -0.011921 -v -0.053654 0.118592 0.010544 -v 0.041979 0.058140 -0.022764 -v -0.073736 0.112317 -0.024581 -v -0.048376 0.112935 -0.006725 -v 0.046557 0.043852 -0.001688 -v -0.084164 0.064978 -0.017991 -v -0.086435 0.076554 0.003380 -v -0.084111 0.075540 0.010301 -v -0.062230 0.119292 -0.030804 -v -0.048023 0.112430 -0.009128 -v -0.071960 0.130288 -0.056553 -v 0.046026 0.046855 0.005518 -v 0.036723 0.045023 -0.027779 -v 0.033592 0.047280 -0.032704 -v -0.084106 0.068175 -0.017922 -v -0.084482 0.070203 -0.015139 -v -0.089767 0.105512 0.018524 -v -0.009652 0.140024 -0.036864 -v -0.079452 0.062748 -0.024675 -v -0.050984 0.110769 0.002039 -v -0.072770 0.031928 0.002654 -v -0.049405 0.110681 -0.006867 -v 0.046159 0.048633 -0.009344 -v 0.044756 0.046313 -0.015873 -v 0.039033 0.046324 -0.025482 -v -0.069126 0.108961 -0.023091 -v 0.044722 0.053291 0.008924 -v 0.046307 0.050040 -0.004671 -v 0.045390 0.049720 -0.012598 -v 0.043353 0.049047 -0.018402 -v 0.040042 0.050744 -0.026450 -v 0.037929 0.049956 -0.029529 -v -0.089451 0.062913 0.001839 -v -0.087645 0.093653 -0.015131 -v -0.083408 0.110708 -0.011682 -v -0.049212 0.110842 -0.010388 -v -0.050044 0.109128 -0.010857 -v -0.063382 0.124151 -0.027450 -v 0.046138 0.048289 0.001095 -v 0.045837 0.053741 -0.008344 -v 0.044629 0.051632 -0.013488 -v 0.041245 0.048082 -0.022376 -v -0.086906 0.078418 -0.005851 -v -0.093980 0.094640 0.002264 -v -0.062168 0.131561 -0.053751 -v -0.063868 0.135155 -0.052666 -v -0.062428 0.123764 -0.049954 -v -0.063857 0.147456 -0.073468 -v -0.037341 0.095846 -0.009104 -v -0.064970 0.147911 -0.074569 -v -0.062784 0.146167 -0.073665 -v -0.044708 0.096748 -0.012481 -v -0.064066 0.145088 -0.069428 -v -0.067601 0.148630 -0.069704 -v -0.070039 0.149247 -0.070830 -v -0.066053 0.122586 -0.010880 -v -0.032519 0.093075 0.005183 -v -0.017555 0.095837 0.003464 -v -0.067589 0.145874 -0.065858 -v -0.073480 0.148627 -0.068599 -v -0.070905 0.149006 -0.067866 -v -0.042869 0.097028 -0.006622 -v -0.026500 0.090690 0.008720 -v -0.068173 0.124126 0.009287 -v -0.045205 0.135918 -0.012465 -v -0.036920 0.140936 -0.015417 -v -0.046580 0.098636 0.008540 -v -0.085838 0.121087 -0.000812 -v -0.065851 0.122596 -0.018977 -v -0.048593 0.128609 -0.007038 -v -0.066794 0.141455 -0.060577 -v -0.027392 0.088017 0.013822 -v -0.066679 0.131806 -0.032949 -v -0.074042 0.123739 0.009233 -v -0.047253 0.102362 -0.003186 -v -0.070616 0.123894 0.010182 -v -0.030340 0.093250 0.002593 -v 0.050004 0.038136 0.009502 -v -0.012329 0.151703 -0.041061 -v -0.008530 0.067607 0.034339 -v -0.065047 0.141347 -0.063441 -v -0.064793 0.120676 0.019952 -v -0.057873 0.123339 0.000473 -v 0.013210 0.093168 0.016139 -v -0.065410 0.123579 -0.003925 -v -0.045062 0.099078 -0.003983 -v -0.070847 0.145422 -0.062361 -v -0.074185 0.145626 -0.060940 -v -0.073818 0.147852 -0.064745 -v -0.067586 0.122820 -0.013530 -v -0.055826 0.121151 0.012772 -v -0.052391 0.119393 0.000787 -v -0.058172 0.125307 -0.007720 -v 0.015525 0.095358 0.010414 -v -0.014127 0.153061 -0.039811 -v -0.064580 0.137784 -0.058013 -v -0.061118 0.120890 0.018690 -v -0.084284 0.078541 0.012190 -v -0.087349 0.061819 -0.009207 -v -0.043803 0.097581 -0.002130 -v -0.066781 0.131170 -0.072249 -v -0.038936 0.092883 -0.021974 -v 0.009810 0.097880 0.008149 -v -0.071394 0.143424 -0.058372 -v -0.064970 0.122605 0.015019 -v -0.092954 0.086365 0.019699 -v -0.080851 0.111516 -0.015719 -v -0.069305 0.122090 0.016781 -v -0.075599 0.120275 -0.027875 -v -0.087587 0.064080 -0.011235 -v -0.044188 0.094091 0.005257 -v -0.015280 0.154423 -0.038509 -v -0.084033 0.120472 -0.006447 -v -0.065428 0.137562 -0.054366 -v -0.091047 0.081501 -0.003653 -v -0.070394 0.123730 -0.012472 -v -0.091180 0.116331 0.000042 -v -0.087999 0.065823 -0.009353 -v -0.049014 0.094052 -0.021114 -v -0.016684 0.155189 -0.035776 -v -0.068188 0.139514 -0.052978 -v -0.077521 0.142578 -0.057525 -v -0.012765 0.066042 0.035334 -v -0.075404 0.147039 -0.067304 -v -0.086713 0.120949 0.004663 -v -0.045464 0.093912 0.008929 -v -0.050167 0.104713 0.007296 -v -0.024381 0.090156 0.011842 -v 0.000479 0.091801 0.019275 -v -0.043799 0.095166 0.004295 -v -0.012330 0.065212 0.036741 -v -0.018112 0.154061 -0.032168 -v -0.035636 0.095637 -0.005508 -v -0.072350 0.141434 -0.053046 -v -0.084862 0.059583 -0.018634 -v -0.076638 0.061773 -0.027719 -v -0.089001 0.064113 -0.006400 -v -0.092572 0.094327 0.015000 -v -0.031395 0.089880 0.010426 -v -0.088472 0.119392 -0.001964 -v -0.043384 0.092295 0.007809 -v 0.000967 0.066546 0.036345 -v -0.034955 0.090778 0.011379 -v -0.054429 0.121508 0.004722 -v -0.074851 0.142673 -0.055397 -v 0.058168 0.039143 -0.004387 -v 0.055127 0.040812 -0.004779 -v -0.094758 0.091786 0.004945 -v -0.043933 0.134788 -0.010822 -v -0.001251 0.098276 0.007484 -v 0.032798 0.083899 -0.013427 -v -0.073336 0.113731 -0.029131 -v -0.089783 0.066281 0.001307 -v -0.094338 0.089594 0.009533 -v -0.092055 0.083561 0.022431 -v -0.088949 0.095808 -0.010875 -v -0.042860 0.090309 0.011120 -v -0.081797 0.119107 0.017944 -v -0.067087 0.117953 0.023731 -v -0.058346 0.123770 -0.003744 -v -0.055950 0.123781 -0.003166 -v -0.076987 0.079141 -0.019335 -v -0.028613 0.090059 0.008497 -v -0.068186 0.124397 -0.017972 -v -0.021731 0.153036 -0.032682 -v -0.067079 0.124130 0.001527 -v -0.069868 0.139206 -0.048474 -v -0.065270 0.124039 0.008538 -v -0.071900 0.127809 -0.021547 -v -0.073578 0.125376 -0.018276 -v 0.055184 0.041094 0.001313 -v 0.053034 0.040811 -0.006037 -v 0.047795 0.041352 -0.001680 -v -0.029686 0.086513 0.015383 -v -0.004212 0.095105 0.015274 -v -0.086068 0.063925 -0.014378 -v -0.088457 0.060703 -0.006844 -v -0.089494 0.061152 0.006081 -v -0.080493 0.079274 -0.015660 -v -0.068470 0.118946 0.022877 -v -0.030573 0.093811 -0.001371 -v -0.046428 0.100391 0.004890 -v 0.003835 0.067836 0.032145 -v -0.074641 0.140375 -0.050646 -v -0.032986 0.094742 -0.001324 -v -0.049595 0.102129 0.011288 -v -0.054552 0.122456 -0.000910 -v 0.038563 0.077199 -0.005640 -v 0.035462 0.081019 -0.011008 -v 0.023201 0.091928 -0.012244 -v 0.020025 0.093606 -0.013500 -v -0.075348 0.116406 -0.030101 -v -0.092592 0.085330 0.026115 -v -0.061187 0.123791 0.001706 -v -0.045075 0.097621 0.005506 -v -0.020744 0.153607 -0.028889 -v -0.021549 0.153737 -0.029627 -v -0.023856 0.152143 -0.029089 -v -0.065841 0.136327 -0.046884 -v -0.076665 0.138525 -0.048457 -v -0.020656 0.091794 0.010600 -v -0.074792 0.124041 -0.000218 -v 0.057257 0.039962 0.001657 -v 0.007949 0.096907 0.012050 -v -0.038782 0.095905 -0.001105 -v -0.090644 0.102088 -0.003646 -v -0.090801 0.107076 0.006106 -v -0.092276 0.085145 -0.005529 -v -0.074218 0.124289 -0.015822 -v -0.069513 0.137012 -0.041378 -v -0.073287 0.138944 -0.045551 -v -0.072409 0.124165 0.005438 -v -0.000178 0.069235 0.030020 -v 0.052408 0.041561 0.000301 -v -0.013773 0.092047 0.016555 -v -0.056259 0.122186 0.009588 -v -0.084150 0.074457 -0.013227 -v 0.015046 0.087189 0.020633 -v -0.079465 0.122462 -0.005260 -v -0.045181 0.097716 -0.009125 -v 0.019898 0.089658 0.016931 -v -0.025787 0.150765 -0.027181 -v -0.059419 0.122440 0.013041 -v -0.064977 0.133396 -0.040728 -v 0.017977 0.092481 0.012954 -v -0.069614 0.120482 0.020374 -v 0.013606 0.094739 0.013578 -v 0.058085 0.037467 0.005745 -v 0.048566 0.041309 -0.000686 -v -0.038108 0.093192 0.007841 -v -0.076611 0.122703 -0.008682 -v -0.072140 0.123448 -0.010718 -v -0.061698 0.123845 0.007044 -v -0.082943 0.079701 -0.013579 -v -0.000868 0.096967 0.012039 -v -0.024639 0.151014 -0.025029 -v -0.057536 0.123139 0.004741 -v 0.003072 0.098384 0.008490 -v 0.054779 0.040206 0.005360 -v 0.046496 0.042936 0.001491 -v -0.001334 0.067805 0.034437 -v 0.013462 0.097491 -0.009495 -v -0.086584 0.072335 -0.008248 -v -0.087226 0.078193 0.003357 -v -0.030384 0.147178 -0.027019 -v -0.081735 0.122745 0.001495 -v -0.026093 0.150744 -0.025602 -v -0.072339 0.137631 -0.041359 -v -0.062317 0.123263 0.011375 -v -0.005231 0.098467 0.004531 -v 0.047143 0.041427 0.001669 -v -0.005154 0.092078 0.019070 -v -0.056903 0.124895 -0.005513 -v -0.041812 0.094720 0.003544 -v 0.027316 0.089835 -0.008223 -v 0.019508 0.094783 -0.008781 -v -0.074539 0.145920 -0.068091 -v -0.072532 0.146954 -0.070055 -v -0.080465 0.070399 -0.021152 -v -0.060270 0.123676 -0.004384 -v 0.022150 0.089832 0.015127 -v -0.029861 0.148025 -0.024479 -v -0.075409 0.136660 -0.042092 -v -0.054345 0.120316 0.010439 -v 0.053126 0.039042 0.008106 -v 0.047426 0.039869 0.004050 -v 0.046204 0.041718 0.004173 -v -0.078758 0.120786 -0.012358 -v -0.053305 0.124121 -0.003652 -v -0.010121 0.095742 0.011634 -v -0.076041 0.122515 -0.014480 -v -0.043417 0.096249 0.001213 -v 0.036685 0.079554 0.002745 -v 0.033143 0.084590 -0.005106 -v 0.031002 0.086813 -0.007028 -v 0.023593 0.092964 -0.004159 -v -0.075106 0.117827 -0.039632 -v -0.059992 0.124023 -0.009283 -v -0.008510 0.097309 0.008674 -v -0.027366 0.093616 -0.002633 -v -0.051016 0.119475 -0.002161 -v -0.067326 0.134102 -0.037510 -v 0.054888 0.036652 0.010178 -v 0.051216 0.040692 0.005114 -v -0.024103 0.093230 0.003940 -v 0.016898 0.096503 -0.002943 -v 0.001081 0.099012 -0.009923 -v -0.088444 0.069547 0.005298 -v -0.088601 0.069761 -0.004728 -v -0.036167 0.144125 -0.022866 -v -0.028895 0.148277 -0.022177 -v -0.032354 0.146292 -0.022266 -v 0.046526 0.038155 0.007657 -v 0.045430 0.040905 0.006608 -v -0.073844 0.116664 0.025743 -v 0.001756 0.093753 0.017143 -v 0.034108 0.083020 0.003862 -v 0.028015 0.089606 -0.000343 -v 0.019575 0.095181 0.000975 -v 0.013704 0.097863 -0.004561 -v 0.009915 0.098413 -0.010256 -v -0.071459 0.076329 -0.025363 -v -0.071509 0.002743 -0.005656 -v -0.066851 0.003495 0.000233 -v -0.065600 0.004560 0.012222 -v -0.066410 0.004270 0.014501 -v -0.066707 0.005867 0.020005 -v -0.063741 0.005885 0.027507 -v -0.038782 0.004818 0.028579 -v -0.072231 0.004985 -0.006235 -v -0.067753 0.005403 -0.000844 -v -0.064679 0.005667 0.010164 -v -0.065908 0.006197 0.013848 -v -0.066731 0.005587 0.016435 -v -0.066421 0.004606 0.023193 -v -0.060305 0.005233 0.031039 -v -0.057719 0.006729 0.032281 -v -0.084812 0.045744 0.002062 -v -0.039260 0.007098 0.027598 -v -0.036240 0.006541 0.031588 -v -0.033272 0.006907 0.035873 -v -0.030574 0.008009 0.037333 -v -0.028864 0.006596 0.039138 -v -0.025019 0.004671 0.039673 -v -0.058384 0.064180 -0.035240 -v -0.072310 0.004837 -0.010696 -v -0.063719 0.003716 0.003498 -v -0.061461 0.005042 0.005595 -v -0.059587 0.006261 0.005912 -v -0.064162 0.006932 0.011940 -v -0.065499 0.007702 0.014993 -v -0.065240 0.008106 0.017734 -v -0.064354 0.010268 0.023074 -v -0.062125 0.009341 0.028236 -v -0.036747 0.009440 0.030447 -v -0.030023 0.062319 -0.038845 -v -0.050958 0.064341 -0.036874 -v 0.050730 0.038578 -0.010603 -v -0.071015 0.006959 -0.010365 -v -0.072540 0.005907 -0.008539 -v -0.071485 0.007325 -0.006680 -v -0.059564 0.007551 0.004844 -v -0.041791 0.140092 -0.017569 -v -0.035484 0.008932 0.031893 -v -0.033420 0.008793 0.035598 -v -0.024543 0.010035 0.039482 -v -0.080642 0.064484 0.019374 -v -0.085172 0.099826 0.034313 -v -0.071336 0.006966 -0.011506 -v -0.070417 0.008557 -0.010576 -v -0.065585 0.008959 -0.001398 -v -0.061653 0.007221 0.003134 -v -0.076586 0.065353 0.022505 -v -0.055597 0.016077 0.024293 -v -0.033155 0.011524 0.033740 -v -0.027891 0.009413 0.038775 -v -0.074946 0.064447 0.024511 -v -0.069831 0.010335 -0.007663 -v -0.060519 0.012280 0.028067 -v -0.073086 0.116336 -0.044999 -v -0.038150 0.010595 0.027476 -v -0.035518 0.012852 0.029437 -v -0.041207 0.054857 -0.036049 -v -0.067408 0.012482 -0.009330 -v -0.067448 0.012195 -0.007235 -v -0.065821 0.011013 -0.003894 -v -0.063255 0.009650 -0.000251 -v -0.018690 0.044184 0.040779 -v -0.060298 0.013795 0.026236 -v -0.079261 0.053419 0.021246 -v -0.034018 0.011983 0.031482 -v -0.028110 0.014452 0.035255 -v -0.019368 0.066428 0.030006 -v -0.014325 0.067733 0.030057 -v -0.087982 0.106009 0.026387 -v -0.075486 0.131817 -0.032279 -v -0.059167 0.011556 0.000071 -v -0.058348 0.015068 0.025322 -v -0.082014 0.098832 0.037237 -v -0.035979 0.015060 0.025298 -v -0.031279 0.014832 0.030673 -v -0.028062 0.015904 0.033539 -v -0.084428 0.062628 0.015288 -v -0.063891 0.013550 -0.006145 -v -0.058727 0.014908 -0.005535 -v -0.056152 0.014812 -0.002697 -v -0.016549 0.066287 0.031451 -v -0.033230 0.014787 0.029635 -v -0.076061 0.128514 -0.027189 -v -0.049593 0.132856 -0.011562 -v -0.073646 0.041400 0.019338 -v -0.084810 0.111248 0.025847 -v -0.070863 0.068568 0.025208 -v -0.078113 0.135033 -0.044587 -v -0.027277 0.046051 0.032230 -v -0.051929 0.014278 0.001774 -v -0.092336 0.094075 0.024629 -v -0.087634 0.110711 0.022686 -v -0.076414 0.126186 -0.024736 -v -0.090896 0.115923 0.009748 -v -0.081696 0.047128 0.014918 -v -0.087178 0.058785 0.011159 -v -0.022422 0.060278 0.036944 -v -0.058344 0.016124 -0.007798 -v -0.019137 0.050461 0.042948 -v -0.051384 0.018256 0.019306 -v -0.049596 0.018874 0.021415 -v -0.088461 0.057988 0.008299 -v -0.032143 0.019482 0.022935 -v -0.033266 0.017150 0.025761 -v -0.030330 0.017882 0.027935 -v -0.026528 0.017750 0.031425 -v -0.056448 0.027280 0.008056 -v -0.026721 0.056641 0.033985 -v -0.022828 0.063192 0.031779 -v -0.082703 0.090230 0.034794 -v -0.076727 0.129153 -0.030023 -v -0.056134 0.017127 -0.004881 -v -0.087897 0.096366 0.031451 -v -0.030949 0.019153 0.024330 -v -0.028633 0.018925 0.026921 -v -0.050040 0.130556 -0.008910 -v -0.029459 0.053336 0.029929 -v -0.078237 0.050188 0.021023 -v -0.053612 0.021320 -0.003602 -v -0.051334 0.017216 -0.000277 -v -0.041023 0.135797 -0.025505 -v -0.050891 0.020000 0.018191 -v -0.028552 0.020191 0.022883 -v -0.026035 0.020115 0.025065 -v -0.084123 0.073788 0.011328 -v -0.027573 0.051029 0.034328 -v -0.046999 0.135965 -0.014302 -v -0.050177 0.021315 0.000447 -v -0.076071 0.123433 -0.019183 -v -0.047577 0.021439 0.022325 -v -0.090046 0.086773 0.030956 -v -0.027298 0.022117 0.022515 -v -0.026413 0.060712 0.030865 -v -0.043365 0.059009 -0.037224 -v -0.050828 0.022266 0.004221 -v -0.049212 0.023672 0.020000 -v -0.024059 0.020182 0.027022 -v -0.021935 0.022487 0.030330 -v -0.019057 0.020934 0.033189 -v -0.051173 0.023613 0.000748 -v -0.052026 0.023938 0.004106 -v -0.052121 0.024423 0.006484 -v -0.092411 0.088055 0.028065 -v -0.090653 0.113217 0.012411 -v -0.013661 0.025199 0.036998 -v -0.072517 0.048345 0.024479 -v -0.054594 0.025442 0.005466 -v -0.052769 0.025545 0.007474 -v -0.053000 0.027344 0.011391 -v -0.049890 0.029062 0.019416 -v -0.019285 0.025733 0.034337 -v -0.081823 0.076838 0.013803 -v -0.086236 0.097553 0.034117 -v -0.074528 0.117300 -0.043793 -v -0.083868 0.057050 0.015092 -v -0.077773 0.141007 -0.055151 -v -0.086767 0.069633 0.009697 -v -0.082802 0.051051 0.015883 -v -0.054021 0.027230 0.009504 -v -0.052562 0.028755 0.014507 -v -0.050923 0.026481 0.017189 -v -0.045408 0.028577 0.024314 -v -0.070165 0.063400 0.027553 -v -0.024028 0.026158 0.027310 -v -0.022465 0.030712 0.030048 -v -0.017173 0.028076 0.037111 -v -0.082366 0.095968 0.037502 -v -0.057352 0.029449 0.011892 -v -0.054101 0.028622 0.012297 -v -0.076415 0.146867 -0.065098 -v -0.089198 0.083249 0.029965 -v -0.085037 0.116031 0.019794 -v -0.012831 0.068882 0.029265 -v -0.078113 0.138494 -0.051059 -v -0.080889 0.073414 0.015725 -v -0.051921 0.017136 0.020812 -v -0.090060 0.090263 0.031202 -v -0.077512 0.055775 0.023426 -v -0.048372 0.031730 0.021826 -v -0.078557 0.083600 -0.019444 -v -0.085947 0.092337 0.034033 -v -0.018904 0.062151 0.037905 -v -0.085570 0.066202 0.013285 -v -0.029812 0.046917 0.028034 -v -0.075928 0.082708 -0.020052 -v 0.004609 0.077130 -0.034844 -v -0.022702 0.064360 0.030495 -v -0.019543 0.065486 0.030694 -v -0.081907 0.084312 -0.017406 -v -0.017122 0.064301 0.036310 -v -0.017820 0.066914 0.029581 -v -0.078458 0.085649 0.036318 -v -0.076673 0.072625 0.020267 -v -0.025158 0.055579 0.037172 -v -0.025803 0.040805 0.030451 -v -0.054098 0.128398 -0.008443 -v -0.044133 0.119866 -0.020941 -v -0.067129 0.070384 -0.030229 -v -0.054216 0.057645 -0.036969 -v -0.073235 0.117705 -0.051388 -v -0.085348 0.106855 0.029417 -v -0.021319 0.062456 0.035324 -v -0.026193 0.032788 0.025349 -v -0.019144 0.031106 0.035645 -v -0.081739 0.106121 0.033154 -v -0.077608 0.144682 -0.061127 -v -0.024557 0.050244 0.039826 -v -0.078402 0.113712 0.028270 -v -0.049665 0.058197 -0.036297 -v -0.045285 0.034340 0.025203 -v -0.083202 0.085206 0.034443 -v -0.038418 0.128711 -0.027252 -v -0.086717 0.102275 0.030904 -v -0.023041 0.035135 0.032149 -v -0.074335 0.127147 -0.022559 -v -0.028517 0.004496 0.038966 -v -0.080384 0.083911 0.033658 -v -0.086112 0.088045 0.034234 -v -0.023731 0.040914 0.034502 -v -0.064808 0.102293 -0.022646 -v -0.020122 0.058041 0.040120 -v -0.087829 0.114839 0.016609 -v -0.058283 0.056005 -0.035677 -v -0.022871 0.042833 0.037612 -v -0.071888 0.083428 -0.022260 -v -0.067886 0.060104 -0.031244 -v -0.080808 0.086401 0.034305 -v -0.022693 0.053563 0.040729 -v -0.081172 0.059383 0.018765 -v -0.088490 0.064791 0.008404 -v -0.072730 0.059776 0.026838 -v -0.039859 0.071839 -0.035015 -v -0.039739 0.076115 -0.034286 -v -0.090072 0.097421 0.027293 -v -0.024731 0.046663 0.038424 -v -0.085785 0.117328 0.016945 -v -0.076719 0.131328 -0.034023 -v -0.019846 0.036270 0.037903 -v -0.020978 0.039795 0.037903 -v -0.027944 0.043421 0.029224 -v -0.070739 0.053846 0.027110 -v -0.091694 0.092058 0.028585 -v -0.028984 0.049540 0.030816 -v -0.023566 0.060945 0.034578 -v -0.044638 0.003665 -0.037919 -v -0.045649 0.003111 -0.036507 -v -0.092452 0.098673 0.010931 -v -0.061763 0.006542 0.009138 -v -0.071366 0.136896 -0.063480 -v -0.040366 0.141143 -0.022177 -v -0.077929 0.145223 -0.064586 -v -0.044910 0.006242 -0.036875 -v -0.045642 0.006150 -0.035229 -v -0.047421 0.005545 -0.028961 -v -0.086623 0.095459 -0.016108 -v -0.059202 0.008608 0.006614 -v -0.061418 0.008229 0.008602 -v -0.063955 0.008243 0.011632 -v -0.065234 0.008646 0.014768 -v -0.078042 0.134186 -0.051508 -v -0.067562 0.135824 -0.070424 -v -0.077607 0.143597 -0.064428 -v -0.076638 0.145005 -0.066306 -v -0.042205 0.005830 -0.041335 -v -0.046255 0.005860 -0.032390 -v -0.070102 0.008699 -0.014128 -v -0.063470 0.009848 0.012279 -v -0.078424 0.130040 -0.039777 -v -0.087845 0.097778 -0.012756 -v -0.092644 0.082977 0.000058 -v -0.042966 0.006527 -0.039848 -v -0.043296 0.010802 -0.034521 -v -0.043915 0.010208 -0.032093 -v -0.046729 0.008941 -0.026828 -v -0.065178 0.011795 -0.015813 -v -0.069091 0.010940 -0.012380 -v -0.074552 0.121565 -0.034812 -v -0.075021 0.119145 -0.041245 -v -0.057305 0.009759 0.003904 -v -0.057773 0.009108 0.005318 -v -0.064874 0.010880 0.019332 -v -0.048118 0.135521 -0.016606 -v -0.060322 0.012694 -0.018474 -v -0.067432 0.012295 -0.012112 -v -0.093044 0.099196 0.004858 -v -0.075845 0.118389 -0.022730 -v -0.054061 0.011489 0.003761 -v -0.060846 0.012722 0.013622 -v -0.092256 0.100183 0.002859 -v -0.074632 0.132346 -0.052145 -v -0.041580 0.009154 -0.038070 -v -0.064678 0.062170 -0.033084 -v -0.054601 0.011350 0.005963 -v -0.054046 0.014543 0.009739 -v -0.060415 0.011267 0.011088 -v -0.063114 0.012901 0.017714 -v -0.062504 0.013203 0.022945 -v -0.079137 0.134491 -0.050132 -v -0.077592 0.126349 -0.037129 -v -0.089703 0.082438 -0.008483 -v -0.038101 0.013473 -0.037813 -v -0.041482 0.011902 -0.036832 -v -0.043755 0.012410 -0.028764 -v -0.056592 0.015087 -0.018692 -v -0.059367 0.014216 -0.016547 -v -0.061161 0.014894 -0.012605 -v -0.065247 0.013823 -0.009496 -v -0.061060 0.015103 -0.008457 -v -0.051568 0.013784 0.003555 -v -0.057125 0.015326 0.015656 -v -0.057939 0.015657 0.018376 -v -0.060350 0.014947 0.021904 -v -0.052614 0.130978 -0.015380 -v -0.041207 0.014138 -0.031106 -v -0.042019 0.015112 -0.026941 -v -0.040485 0.065679 -0.036491 -v 0.017274 0.080826 -0.030271 -v -0.057742 0.015878 -0.015776 -v -0.058790 0.016044 -0.011666 -v -0.076589 0.123075 -0.021333 -v -0.050199 0.016233 0.002650 -v -0.050482 0.016387 0.004311 -v -0.052475 0.013454 0.006026 -v -0.055053 0.015511 0.013386 -v -0.055358 0.016692 0.021727 -v -0.073687 0.141200 -0.064191 -v -0.039931 0.013774 -0.035686 -v -0.072062 0.117690 -0.055080 -v -0.092100 0.082149 0.004399 -v -0.091483 0.113724 0.003102 -v -0.053387 0.015664 0.010587 -v -0.053712 0.016925 0.014557 -v -0.053742 0.016915 0.018480 -v -0.052878 0.016910 0.020083 -v -0.073293 0.131117 -0.053174 -v -0.031023 0.015999 -0.038303 -v -0.034445 0.016096 -0.033747 -v -0.057251 0.018151 -0.014718 -v -0.057315 0.020263 -0.011985 -v -0.052045 0.018111 0.008564 -v -0.052446 0.018873 0.012320 -v -0.079908 0.108438 -0.018378 -v -0.050622 0.132991 -0.015016 -v -0.078956 0.132786 -0.045483 -v -0.082440 0.076333 -0.014756 -v -0.025849 0.088873 -0.023146 -v -0.030530 0.017290 -0.035226 -v -0.032033 0.017520 -0.033209 -v -0.031901 0.017482 -0.031882 -v -0.034156 0.017538 -0.028193 -v 0.034172 0.078697 -0.019485 -v -0.055296 0.017733 -0.018704 -v -0.072885 0.110450 -0.022918 -v -0.052211 0.018638 0.016062 -v -0.081716 0.105504 -0.016314 -v -0.031878 0.076618 -0.033393 -v -0.026520 0.017221 -0.040272 -v -0.028620 0.017505 -0.037796 -v -0.029689 0.018559 -0.034631 -v -0.030709 0.018724 -0.031381 -v -0.072710 0.119100 -0.054699 -v -0.051853 0.022976 0.013866 -v -0.030215 0.020417 -0.032049 -v -0.030743 0.020350 -0.029319 -v -0.031774 0.019131 -0.027337 -v -0.055890 0.021404 -0.006844 -v -0.049952 0.021583 0.001843 -v -0.051340 0.021779 0.006868 -v -0.052168 0.023788 0.010993 -v -0.072352 0.123801 -0.049907 -v -0.077836 0.141695 -0.062068 -v -0.068413 0.145582 -0.073105 -v -0.029701 0.021860 -0.035718 -v -0.054647 0.023230 -0.019537 -v -0.056931 0.023336 -0.014012 -v -0.056707 0.023811 -0.008388 -v -0.054316 0.023801 -0.003920 -v -0.091906 0.098429 -0.004781 -v -0.025612 0.022210 -0.042351 -v -0.027703 0.020620 -0.039234 -v -0.030782 0.023538 -0.030250 -v -0.057474 0.025796 -0.012885 -v -0.059144 0.026434 -0.008586 -v -0.056314 0.025121 -0.004033 -v -0.088814 0.105286 -0.003575 -v -0.078768 0.136619 -0.054690 -v -0.074385 0.117661 -0.045749 -v -0.020547 0.148159 -0.037054 -v -0.031883 0.024960 -0.027557 -v -0.056722 0.028761 -0.018315 -v -0.057232 0.027647 -0.016409 -v -0.090381 0.103384 0.000271 -v -0.079376 0.136177 -0.052555 -v -0.091637 0.097051 0.017252 -v -0.071731 0.120364 -0.058801 -v -0.078499 0.140475 -0.060181 -v -0.045866 0.134574 -0.021624 -v -0.023642 0.148572 -0.033853 -v -0.026912 0.024963 -0.042009 -v -0.028886 0.025607 -0.037586 -v -0.030952 0.026081 -0.032382 -v -0.088769 0.104692 0.011891 -v 0.006567 0.072752 -0.035722 -v -0.074052 0.138591 -0.060838 -v -0.078795 0.141360 -0.058295 -v -0.078971 0.140757 -0.059119 -v -0.024048 0.150819 -0.031570 -v -0.025131 0.024059 -0.043774 -v -0.032098 0.027748 -0.029531 -v -0.039186 0.003426 -0.043888 -v -0.004121 0.079485 -0.035300 -v -0.065463 0.030077 -0.016418 -v -0.042787 0.063523 -0.037040 -v -0.060181 0.061360 -0.033814 -v -0.056961 0.061986 -0.036130 -v -0.090101 0.107584 0.000050 -v -0.063061 0.134319 -0.075235 -v -0.077512 0.125457 -0.028655 -v -0.044307 0.138584 -0.019125 -v -0.018798 0.135337 -0.034085 -v -0.068220 0.126778 -0.069442 -v -0.026014 0.028126 -0.045265 -v -0.029636 0.030681 -0.038737 -v -0.033207 0.028778 -0.029173 -v -0.070583 0.058726 -0.030917 -v -0.040396 0.139564 -0.024202 -v -0.043695 0.138529 -0.021076 -v -0.090107 0.100547 0.022849 -v -0.040128 0.141625 -0.020623 -v -0.027246 0.090039 -0.021205 -v -0.033239 0.030483 -0.028938 -v -0.019791 0.002526 -0.042201 -v -0.068886 0.032225 -0.016024 -v -0.061079 0.057172 -0.033766 -v -0.074510 0.119170 -0.044441 -v -0.051264 0.083245 -0.030372 -v -0.038936 0.090571 -0.025164 -v -0.079311 0.138087 -0.055683 -v -0.057213 0.127163 -0.011237 -v -0.028399 0.029946 -0.042819 -v -0.030215 0.028371 -0.035769 -v -0.032263 0.030644 -0.032342 -v 0.033895 0.063322 -0.028467 -v -0.071079 0.033373 -0.014402 -v -0.074133 0.034944 -0.013044 -v -0.035945 0.056086 -0.038758 -v -0.052996 0.129153 -0.016674 -v -0.091230 0.096933 0.023674 -v -0.070516 0.141104 -0.067958 -v -0.089046 0.107410 0.022865 -v -0.084612 0.102005 -0.015064 -v -0.028224 0.034882 -0.044868 -v -0.029914 0.032850 -0.042190 -v -0.032471 0.033220 -0.033388 -v 0.044144 0.036973 -0.013791 -v -0.048411 0.069316 -0.036246 -v -0.060712 0.090485 -0.023344 -v -0.089291 0.100816 -0.010612 -v -0.073915 0.119143 -0.047909 -v -0.078950 0.139261 -0.054766 -v -0.070489 0.133026 -0.062837 -v -0.018127 0.150212 -0.039082 -v -0.030984 0.033850 -0.039302 -v -0.071013 0.037018 -0.019714 -v -0.072536 0.037356 -0.017660 -v -0.075149 0.037731 -0.015204 -v -0.078337 0.116643 -0.016989 -v -0.077452 0.118082 -0.019840 -v -0.078298 0.138503 -0.057840 -v -0.075095 0.137989 -0.059275 -v -0.027335 0.148207 -0.029827 -v -0.045684 0.084691 -0.030113 -v -0.025108 0.032550 -0.047453 -v -0.030367 0.037012 -0.043010 -v -0.031469 0.033922 -0.036392 -v -0.045120 0.092873 -0.023508 -v -0.015026 0.076207 -0.035212 -v -0.073093 0.038858 -0.021297 -v -0.075098 0.039155 -0.019652 -v -0.077120 0.038751 -0.012722 -v -0.080952 0.039822 0.000315 -v 0.010772 0.056371 -0.045775 -v -0.089789 0.102468 -0.007928 -v -0.077558 0.128878 -0.032986 -v -0.077764 0.040161 -0.017213 -v -0.078173 0.040505 -0.014046 -v -0.073708 0.115794 -0.034595 -v -0.046617 0.136347 -0.019326 -v -0.075270 0.127485 -0.042563 -v -0.069204 0.137436 -0.067837 -v -0.086397 0.118917 -0.005689 -v -0.035338 0.039889 -0.032754 -v 0.017043 0.093716 -0.016290 -v -0.078601 0.041332 -0.018414 -v -0.081076 0.044287 -0.016658 -v -0.081754 0.044275 -0.014088 -v -0.081833 0.041449 -0.007279 -v -0.082581 0.043865 -0.002981 -v -0.082048 0.043010 0.001357 -v -0.080954 0.042495 0.004980 -v -0.089309 0.114247 -0.004351 -v -0.084927 0.113277 -0.008343 -v -0.070798 0.122180 -0.061832 -v -0.090795 0.102759 0.005150 -v -0.070938 0.126287 -0.058367 -v -0.073735 0.122651 -0.040519 -v -0.075130 0.130425 -0.048254 -v -0.031971 0.037540 -0.038609 -v -0.083832 0.044311 -0.007261 -v -0.068987 0.100345 -0.023125 -v -0.083705 0.118388 -0.010516 -v -0.090764 0.118187 0.001083 -v 0.026497 0.057776 -0.037116 -v -0.044955 0.057322 -0.036705 -v -0.053796 0.130052 -0.011617 -v -0.022356 0.004899 0.039463 -v -0.076974 0.120545 -0.022222 -v -0.094247 0.094742 0.007774 -v -0.000581 0.078999 -0.034542 -v -0.027534 0.039839 -0.049507 -v -0.029666 0.038593 -0.045745 -v -0.031847 0.042684 -0.043606 -v -0.033628 0.044432 -0.041808 -v -0.033550 0.042358 -0.040044 -v -0.033591 0.040589 -0.036986 -v 0.022828 0.069836 -0.034275 -v -0.084156 0.046119 -0.010743 -v -0.085580 0.046811 -0.001489 -v 0.007925 0.075394 -0.034698 -v -0.072547 0.111855 -0.027743 -v -0.074702 0.134767 -0.055408 -v -0.078199 0.128803 -0.040531 -v -0.032241 0.045256 -0.045663 -v -0.034430 0.044889 -0.038308 -v -0.075676 0.048583 -0.025899 -v -0.080700 0.047920 -0.019742 -v -0.082471 0.048550 -0.016384 -v -0.085907 0.047587 -0.004178 -v -0.086713 0.048904 -0.000675 -v -0.084075 0.048764 0.008162 -v -0.089739 0.102011 0.015327 -v -0.075099 0.110803 -0.020783 -v -0.076460 0.112745 -0.019500 -v -0.080223 0.118681 -0.013668 -v -0.075871 0.119172 -0.034349 -v -0.073815 0.128142 -0.047433 -v -0.073259 0.134957 -0.057563 -v -0.030622 0.044250 -0.047999 -v -0.034749 0.045352 -0.035806 -v -0.062024 0.143268 -0.076267 -v -0.082590 0.050381 -0.018907 -v -0.084183 0.049419 -0.011798 -v -0.086059 0.048277 -0.006555 -v -0.089856 0.117339 -0.002547 -v -0.077556 0.113780 -0.018430 -v -0.077863 0.120533 -0.015177 -v -0.077117 0.121970 -0.025579 -v 0.007185 0.082029 -0.033392 -v -0.034694 0.047663 -0.038069 -v -0.079244 0.051139 -0.024083 -v -0.080661 0.051612 -0.021652 -v -0.082346 0.051784 -0.019924 -v -0.086186 0.051126 -0.008290 -v -0.086598 0.052186 -0.005477 -v -0.086881 0.052149 -0.002145 -v -0.086191 0.047879 0.001948 -v -0.085719 0.051191 0.006577 -v -0.085077 0.053657 0.011640 -v -0.084072 0.049233 0.011822 -v -0.091464 0.108956 0.005870 -v -0.088638 0.112505 0.017206 -v 0.030420 0.084470 -0.017020 -v -0.074911 0.121906 -0.033198 -v -0.049022 0.133702 -0.018521 -v -0.073406 0.125480 -0.044775 -v -0.031469 0.047976 -0.046553 -v -0.032746 0.044857 -0.043049 -v -0.076789 0.051527 -0.026761 -v -0.086263 0.052247 -0.012102 -v -0.086675 0.052184 0.002838 -v -0.086371 0.053246 0.008563 -v -0.055972 0.127833 -0.013200 -v -0.033411 0.074288 -0.034851 -v -0.089239 0.118837 0.007760 -v -0.069526 0.124201 -0.065803 -v -0.074928 0.120726 -0.030934 -v 0.030658 0.055373 -0.034640 -v -0.088511 0.054264 -0.002556 -v -0.089032 0.056286 0.004235 -v -0.091554 0.112298 0.006181 -v -0.091920 0.110513 0.002266 -v -0.089485 0.108091 0.019575 -v -0.075092 0.112414 -0.021421 -v -0.086295 0.116293 -0.007180 -v -0.078764 0.133071 -0.048670 -v -0.028533 0.052381 -0.049868 -v -0.032628 0.050599 -0.043900 -v -0.033737 0.051197 -0.039848 -v 0.026768 0.086872 -0.018219 -v -0.075180 0.052336 -0.028991 -v -0.077748 0.055790 -0.026474 -v -0.084719 0.052057 -0.016883 -v -0.086953 0.054577 -0.012831 -v -0.088054 0.053989 -0.009513 -v -0.088783 0.055694 -0.005710 -v -0.088174 0.054898 0.000370 -v -0.091054 0.108975 0.000689 -v -0.090042 0.112155 -0.000962 -v -0.074778 0.123661 -0.036328 -v -0.091691 0.116298 0.004963 -v -0.085917 0.107183 -0.012009 -v -0.030951 0.052141 -0.045509 -v -0.034022 0.145101 -0.025282 -v -0.082538 0.056112 -0.020692 -v -0.084852 0.056330 -0.017528 -v -0.087425 0.110667 -0.004577 -v -0.077335 0.122832 -0.030045 -v -0.078310 0.130669 -0.044467 -v -0.065000 0.135384 -0.074686 -v -0.071823 0.123955 -0.054004 -v -0.075357 0.119251 -0.026553 -v -0.032593 0.053942 -0.040370 -v -0.087563 0.078259 -0.000919 -v -0.085726 0.057815 -0.014673 -v -0.087644 0.057109 -0.011378 -v -0.088659 0.057016 -0.008238 -v -0.089809 0.107476 0.009521 -v -0.075799 0.117833 -0.033715 -v -0.078845 0.136453 -0.049398 -v -0.083211 0.082227 -0.015779 -v -0.069620 0.128988 -0.064437 -v -0.075599 0.077040 -0.022522 -v -0.029311 0.056067 -0.046454 -v -0.031401 0.055548 -0.041290 -v -0.074605 0.055820 -0.029592 -v -0.080511 0.056268 -0.022627 -v -0.083478 0.058346 -0.020539 -v -0.086047 0.060321 -0.012427 -v -0.087131 0.060437 -0.010578 -v -0.089826 0.058723 0.000305 -v -0.082396 0.115710 -0.012191 -v -0.091043 0.110270 0.012122 -v -0.085581 0.110828 -0.007451 -v -0.089693 0.109288 0.015681 -v -0.083246 0.113185 -0.011881 -v -0.076098 0.116280 -0.025726 -v -0.077773 0.118911 -0.017749 -v -0.077104 0.123891 -0.033626 -v -0.076195 0.118214 -0.029879 -v -0.074231 0.125119 -0.040752 -v -0.085421 0.084842 -0.014931 -v -0.083683 0.106513 -0.014112 -v -0.082337 0.061931 -0.021412 -v -0.031346 0.082467 -0.030927 -v -0.012360 0.066895 -0.039430 -v 0.056585 0.036642 -0.011282 -v 0.000500 0.084565 -0.032022 -v 0.015166 0.090169 -0.023738 -v -0.019076 0.154745 -0.032048 -v 0.037263 0.054745 -0.030432 -v -0.015598 0.070765 -0.037885 -v -0.019300 0.154726 -0.034452 -v 0.007177 0.086427 -0.030080 -v 0.010087 0.080068 -0.033613 -v -0.006782 0.082614 -0.031837 -v 0.048400 0.039500 -0.008680 -v -0.029901 0.145170 -0.029850 -v -0.017478 0.153707 -0.038080 -v -0.043156 0.080832 -0.031030 -v 0.003053 0.066832 -0.038179 -v 0.004836 0.091266 -0.024953 -v 0.056830 0.033722 -0.012856 -v -0.017504 0.003611 -0.041627 -v -0.005180 0.068988 -0.037858 -v 0.016003 0.086445 -0.027315 -v -0.024653 0.063504 -0.039762 -v -0.015860 0.152979 -0.040154 -v 0.052466 0.035919 -0.013520 -v -0.040255 0.084670 -0.029122 -v 0.013836 0.073754 -0.033667 -v 0.018950 0.057551 -0.040689 -v -0.056819 0.126312 -0.013289 -v -0.047399 0.081210 -0.030934 -v -0.061613 0.138879 -0.076540 -v -0.050035 0.077882 -0.033254 -v -0.061950 0.009568 -0.021395 -v -0.013553 0.152136 -0.042065 -v -0.034145 0.081122 -0.031798 -v 0.001634 0.072060 -0.036567 -v -0.008249 0.080279 -0.034779 -v 0.035870 0.074400 -0.020786 -v 0.034752 0.072920 -0.024730 -v -0.061834 0.122399 -0.011428 -v -0.059715 0.123599 -0.011739 -v 0.012242 0.089892 -0.025866 -v -0.048108 0.131761 -0.020683 -v -0.010990 0.149931 -0.042662 -v -0.027122 0.002239 -0.043854 -v -0.023013 0.062652 -0.044316 -v -0.053858 0.094808 -0.019956 -v -0.011305 0.148452 -0.044229 -v -0.015774 0.066433 -0.038998 -v -0.064282 0.121672 -0.012903 -v -0.059714 0.121434 -0.013818 -v 0.013457 0.079478 -0.032683 -v -0.024216 0.076630 -0.035703 -v -0.014057 0.150444 -0.042691 -v -0.017534 0.080920 -0.033520 -v -0.057977 0.118890 -0.015557 -v -0.052416 0.093298 -0.021112 -v 0.020660 0.078841 -0.029764 -v -0.061640 0.120269 -0.014314 -v 0.028086 0.067449 -0.031942 -v 0.017710 0.070319 -0.036204 -v 0.047196 0.039471 -0.009606 -v -0.034604 0.009530 -0.044149 -v -0.029570 0.085497 -0.027706 -v -0.062830 0.119581 -0.015557 -v -0.001501 0.072424 -0.037056 -v 0.047076 0.041565 -0.004724 -v 0.011681 0.065971 -0.037687 -v -0.015325 0.091966 -0.020191 -v 0.007950 0.065862 -0.038425 -v 0.018264 0.074053 -0.031947 -v -0.038315 0.081842 -0.031300 -v 0.011761 0.063411 -0.040812 -v -0.001421 0.067769 -0.038473 -v -0.052425 0.003396 -0.026917 -v -0.063911 0.120240 -0.016704 -v -0.059365 0.114981 -0.016629 -v 0.021602 0.076087 -0.030136 -v -0.007243 0.070450 -0.038083 -v -0.065387 0.083901 -0.024593 -v -0.006281 0.092617 -0.024202 -v -0.015471 0.062226 -0.048302 -v -0.023574 0.082858 -0.030193 -v 0.023783 0.082564 -0.026160 -v -0.012370 0.070347 -0.038694 -v -0.060254 0.002580 -0.024393 -v -0.034537 0.091135 -0.021600 -v 0.034452 0.056261 -0.032270 -v 0.013422 0.062485 -0.040508 -v 0.005859 0.065049 -0.041196 -v -0.004149 0.084695 -0.030351 -v 0.010939 0.086702 -0.029527 -v 0.011702 0.072645 -0.034510 -v 0.011074 0.082671 -0.031264 -v 0.028102 0.063382 -0.034040 -v -0.033632 0.087124 -0.025595 -v 0.015214 0.063306 -0.038578 -v 0.007890 0.067338 -0.036657 -v 0.034346 0.068177 -0.027457 -v -0.035711 0.011107 -0.042851 -v -0.032725 0.013327 -0.041864 -v 0.007047 0.069187 -0.035817 -v -0.039694 0.009222 -0.040995 -v -0.054664 0.085882 -0.028016 -v -0.020458 0.091283 -0.020586 -v -0.014694 0.089931 -0.022563 -v -0.022420 0.064482 -0.039410 -v 0.031888 0.079781 -0.021848 -v -0.055677 0.111740 -0.016120 -v -0.036832 0.084126 -0.029462 -v 0.022632 0.055215 -0.039150 -v 0.005644 0.061131 -0.046502 -v -0.007890 0.062489 -0.048288 -v -0.013340 0.079635 -0.033261 -v -0.016444 0.063827 -0.045731 -v -0.033996 0.004659 -0.045218 -v 0.024407 0.066392 -0.035057 -v -0.008395 0.087278 -0.028727 -v -0.067204 0.147492 -0.074185 -v 0.008931 0.060410 -0.045041 -v -0.002527 0.081152 -0.033352 -v -0.026900 0.079255 -0.032378 -v -0.059994 0.111375 -0.017645 -v -0.003345 0.063779 -0.046646 -v -0.066299 0.009684 -0.018801 -v -0.057452 0.012287 -0.020877 -v 0.046213 0.040519 -0.010585 -v -0.050739 0.086589 -0.028451 -v -0.012146 0.054745 -0.053089 -v 0.003875 0.084283 -0.032725 -v -0.037425 0.007818 -0.043518 -v 0.001325 0.093070 -0.022557 -v -0.016246 0.086065 -0.028692 -v -0.060711 0.109222 -0.019755 -v 0.055036 0.038529 -0.009862 -v 0.000869 0.062969 -0.046333 -v 0.013127 0.059603 -0.043718 -v -0.021183 0.079815 -0.033540 -v 0.028031 0.046705 -0.037068 -v 0.046127 0.033601 -0.015031 -v 0.054263 0.031844 -0.014971 -v -0.002591 0.090131 -0.025463 -v -0.059086 0.088571 -0.023965 -v 0.019837 0.067677 -0.036878 -v -0.039156 0.015975 -0.027426 -v -0.036712 0.013126 -0.040172 -v -0.047779 0.101129 -0.009622 -v 0.048719 0.028832 -0.018790 -v -0.070958 0.083018 0.037050 -v -0.042557 0.088335 -0.027668 -v 0.022855 0.085920 -0.023652 -v 0.006664 0.057282 -0.047650 -v -0.012627 0.061265 -0.049693 -v -0.010406 0.092998 -0.022041 -v -0.001097 0.059267 -0.049227 -v 0.035411 0.059165 -0.030278 -v -0.006727 0.090025 -0.026086 -v -0.006199 0.065048 -0.044686 -v 0.016197 0.057565 -0.042478 -v -0.031950 0.005511 -0.045101 -v -0.027315 0.083083 -0.029761 -v -0.053388 0.105912 -0.015697 -v -0.046574 0.097651 -0.012472 -v -0.038144 0.015407 -0.031348 -v 0.042227 0.027774 -0.018547 -v -0.060228 0.082587 -0.028406 -v -0.013602 0.085252 -0.029884 -v -0.049819 0.003823 -0.026901 -v 0.005412 0.079847 -0.034730 -v -0.023301 0.060553 -0.048303 -v -0.020853 0.066225 -0.038942 -v 0.014900 0.072591 -0.034173 -v -0.043643 0.077698 -0.033039 -v 0.026048 0.081700 -0.024248 -v -0.035907 0.014319 -0.038740 -v -0.010487 0.004035 -0.040075 -v -0.005656 0.077235 -0.037090 -v -0.018311 0.083308 -0.031349 -v -0.011516 0.081893 -0.032039 -v -0.010895 0.089292 -0.025817 -v 0.013726 0.070118 -0.036582 -v -0.010863 0.064506 -0.045891 -v -0.056719 0.106712 -0.019152 -v -0.055565 0.103173 -0.018468 -v 0.022252 0.059444 -0.037999 -v -0.004936 0.059749 -0.049946 -v -0.022750 0.058487 -0.050384 -v -0.017877 0.065468 -0.040004 -v -0.042736 0.003607 -0.041890 -v -0.006289 0.067354 -0.039892 -v -0.026822 0.078237 -0.033581 -v 0.000206 0.065771 -0.042255 -v 0.030287 0.072466 -0.028721 -v -0.049260 0.099567 -0.015084 -v 0.028315 0.051901 -0.036194 -v 0.025205 0.050686 -0.039090 -v 0.045433 0.036649 -0.012316 -v -0.018314 0.069477 -0.038387 -v 0.041602 0.029887 -0.017592 -v 0.009933 0.068447 -0.036779 -v -0.012441 0.096622 -0.011323 -v 0.001062 0.098116 -0.013894 -v 0.043752 0.034165 -0.014645 -v 0.018625 0.090137 -0.021245 -v -0.037207 0.002683 -0.044919 -v 0.025083 0.070807 -0.032411 -v -0.012431 0.058997 -0.051123 -v -0.035588 0.085498 -0.027373 -v -0.014645 0.067661 -0.038225 -v 0.032868 0.076409 -0.023379 -v -0.067854 0.148834 -0.072724 -v -0.034940 0.003167 -0.045791 -v -0.052770 0.101178 -0.018319 -v -0.039384 0.095758 -0.013827 -v 0.006349 0.097978 -0.013954 -v 0.013677 0.096553 -0.013558 -v -0.019286 0.075237 -0.036872 -v 0.013917 0.083406 -0.030333 -v 0.017703 0.084268 -0.028295 -v 0.022872 0.063448 -0.036250 -v -0.057736 0.003752 -0.025009 -v -0.035519 0.088681 -0.024441 -v -0.020475 0.062412 -0.046771 -v -0.010059 0.055339 -0.051824 -v -0.050497 0.096125 -0.018116 -v -0.047939 0.096840 -0.015582 -v 0.029282 0.060420 -0.034228 -v -0.001322 0.088024 -0.027546 -v 0.017300 0.077236 -0.031481 -v 0.031840 0.060080 -0.032942 -v -0.020545 0.094419 -0.011353 -v -0.011843 0.094779 -0.017825 -v -0.000505 0.097134 -0.015882 -v 0.001943 0.075661 -0.034919 -v 0.029830 0.079562 -0.024115 -v -0.019642 0.086126 -0.027146 -v -0.057810 0.087551 -0.025223 -v -0.017314 0.059123 -0.051057 -v -0.049672 0.089904 -0.026097 -v -0.031145 0.002835 -0.045122 -v -0.041759 0.001801 -0.042579 -v 0.011295 0.003897 -0.036913 -v 0.019231 0.085116 -0.026672 -v 0.025859 0.076161 -0.028752 -v -0.032000 0.089495 -0.021955 -v -0.053557 0.099189 -0.019326 -v -0.011162 0.068052 -0.038792 -v -0.002586 0.094724 -0.020810 -v 0.005728 0.094769 -0.020828 -v 0.008960 0.095044 -0.019400 -v 0.014951 0.092664 -0.019696 -v 0.005177 0.063223 -0.044677 -v 0.025112 0.079381 -0.026715 -v -0.063393 0.146044 -0.075291 -v 0.043787 0.031873 -0.016021 -v 0.028596 0.074967 -0.027900 -v 0.000698 0.068695 -0.037429 -v -0.051898 0.096428 -0.018691 -v -0.022347 0.092589 -0.016272 -v 0.023106 0.088406 -0.019808 -v 0.051161 0.032356 -0.016355 -v 0.002514 0.087977 -0.028410 -v 0.040043 0.069521 -0.017978 -v -0.045858 0.094894 -0.020254 -v -0.043119 0.094442 -0.020440 -v -0.036613 0.094320 -0.016831 -v -0.029139 0.092644 -0.012510 -v -0.026540 0.092264 -0.014517 -v -0.016302 0.093610 -0.016836 -v -0.006825 0.094989 -0.020309 -v 0.009169 0.092027 -0.023418 -v 0.007565 0.002043 -0.035313 -v 0.004646 0.002027 -0.035814 -v 0.000025 0.002644 -0.038192 -v -0.003181 0.002657 -0.038481 -v -0.007491 0.002806 -0.039255 -v -0.015579 0.002644 -0.040548 -v -0.044507 0.066321 -0.036117 -v -0.025958 0.002830 -0.043480 -v 0.005415 0.003938 -0.038180 -v 0.000727 0.003908 -0.039001 -v -0.003525 0.004102 -0.039399 -v -0.012543 0.002683 -0.040098 -v -0.015906 0.004752 -0.041386 -v -0.026017 0.004565 -0.043792 -v -0.025188 0.138724 -0.033965 -v -0.055132 0.064690 -0.036111 -v -0.067553 0.001591 -0.020444 -v 0.014452 0.006667 -0.036476 -v -0.000865 0.006305 -0.039711 -v -0.077441 0.090888 -0.021546 -v -0.066541 0.066627 -0.030802 -v -0.074803 0.065360 -0.028051 -v -0.034969 0.128107 -0.027871 -v -0.065022 0.004385 -0.022233 -v -0.066627 0.001676 -0.021561 -v -0.068325 0.003883 -0.020526 -v -0.069787 0.002177 -0.018566 -v 0.023229 0.004649 -0.016492 -v 0.010572 0.005368 -0.037576 -v 0.004208 0.006108 -0.038887 -v -0.006619 0.007713 -0.040497 -v -0.023126 0.004230 -0.043271 -v -0.075282 0.104086 -0.021047 -v -0.066832 0.085632 -0.023437 -v -0.061774 0.004060 -0.023371 -v -0.069532 0.004495 -0.018633 -v -0.070765 0.004173 -0.015606 -v 0.033211 0.006118 -0.014551 -v 0.024238 0.006623 -0.018405 -v 0.007831 0.008891 -0.038129 -v -0.012573 0.007958 -0.041157 -v -0.029947 0.009698 -0.044373 -v -0.075150 0.037313 0.010923 -v -0.060507 0.096404 -0.022243 -v -0.047771 0.004412 -0.027175 -v -0.068799 0.006829 -0.016546 -v 0.011612 0.008315 -0.037805 -v 0.002381 0.009793 -0.038907 -v -0.003904 0.009810 -0.040055 -v -0.009802 0.011115 -0.040624 -v -0.020553 0.009444 -0.043365 -v -0.057435 0.074404 -0.032687 -v 0.014608 0.068291 -0.037224 -v -0.067184 0.007430 -0.020198 -v -0.071324 0.006033 -0.014324 -v 0.032638 0.007994 -0.017258 -v 0.025105 0.007999 -0.019364 -v -0.064758 0.070694 -0.031823 -v 0.014184 0.011172 -0.038788 -v 0.003337 0.011093 -0.039286 -v -0.001248 0.011240 -0.039647 -v -0.004154 0.011234 -0.040451 -v -0.047686 0.008724 -0.026283 -v -0.057112 0.009038 -0.023353 -v -0.067390 0.009163 -0.016487 -v -0.028149 0.143689 -0.032055 -v 0.028014 0.008853 -0.018995 -v -0.032455 0.003877 0.035802 -v 0.017538 0.013059 -0.037851 -v 0.011063 0.011699 -0.039527 -v -0.000556 0.012648 -0.040927 -v -0.007801 0.013746 -0.044097 -v -0.013235 0.014505 -0.044152 -v -0.013890 0.011366 -0.041311 -v -0.017450 0.012004 -0.042200 -v -0.025654 0.012186 -0.043017 -v -0.026218 0.015286 -0.040816 -v -0.070632 0.069441 -0.028703 -v -0.049938 0.011005 -0.025013 -v -0.053387 0.007521 -0.025560 -v -0.025707 0.067798 -0.038532 -v 0.043767 0.011400 -0.014094 -v 0.041397 0.012971 -0.018256 -v 0.035885 0.014007 -0.020647 -v 0.036939 0.009734 -0.017685 -v 0.031029 0.013009 -0.020553 -v 0.027826 0.012745 -0.021139 -v -0.061336 0.065015 -0.032802 -v 0.021035 0.014061 -0.034854 -v 0.008494 0.013850 -0.040165 -v 0.005143 0.013057 -0.040579 -v -0.001678 0.014368 -0.043421 -v -0.005239 0.013444 -0.043587 -v -0.016766 0.013270 -0.042737 -v -0.020829 0.014381 -0.042477 -v -0.021914 0.013686 -0.042423 -v -0.030914 0.012225 -0.043228 -v -0.064637 0.141925 -0.075725 -v -0.054782 0.003935 0.032190 -v -0.012610 0.138850 -0.039956 -v -0.045125 0.012281 -0.025742 -v -0.055060 0.013600 -0.021150 -v -0.075985 0.035397 -0.002547 -v 0.044568 0.014263 -0.018004 -v 0.025119 0.016735 -0.034682 -v 0.020702 0.015295 -0.035755 -v 0.018007 0.015675 -0.037645 -v 0.013867 0.014732 -0.039664 -v 0.010414 0.016728 -0.042389 -v 0.007035 0.016139 -0.042215 -v 0.003474 0.015060 -0.043295 -v -0.001077 0.016427 -0.044909 -v -0.010127 0.013940 -0.043850 -v -0.027961 0.016619 -0.038830 -v -0.049988 0.014169 -0.023643 -v -0.062639 0.068823 -0.032892 -v 0.017298 0.017227 -0.038923 -v 0.014373 0.017271 -0.041386 -v 0.001371 0.017665 -0.045073 -v -0.005849 0.017331 -0.045363 -v -0.042853 0.015952 -0.025784 -v -0.053258 0.016111 -0.021204 -v -0.011770 0.142485 -0.042825 -v 0.042753 0.017093 -0.020618 -v 0.032689 0.016596 -0.021005 -v 0.031324 0.017311 -0.022228 -v 0.022195 0.018623 -0.038080 -v 0.016130 0.019332 -0.041092 -v 0.014119 0.020303 -0.042253 -v 0.005377 0.018158 -0.043571 -v -0.012153 0.018392 -0.046171 -v -0.019870 0.016695 -0.043991 -v -0.023270 0.015923 -0.041978 -v -0.035756 0.076266 -0.034607 -v -0.036448 0.016627 -0.027755 -v -0.037153 0.018069 -0.025618 -v -0.041224 0.018739 -0.025669 -v -0.047062 0.015742 -0.024232 -v -0.021296 0.140251 -0.035811 -v 0.046571 0.016876 -0.018957 -v 0.039166 0.017029 -0.021016 -v -0.071226 0.108156 -0.022089 -v 0.023712 0.019981 -0.037456 -v 0.020398 0.019668 -0.040170 -v -0.003445 0.019845 -0.046057 -v -0.010278 0.020983 -0.048195 -v -0.066697 0.125239 -0.069110 -v -0.032623 0.018493 -0.026101 -v 0.044973 0.020761 -0.020884 -v 0.033943 0.019553 -0.021501 -v 0.026010 0.023402 -0.035715 -v 0.019875 0.022436 -0.042062 -v 0.017882 0.022162 -0.042563 -v 0.008603 0.021635 -0.044894 -v 0.007685 0.023040 -0.045335 -v 0.003696 0.020521 -0.044426 -v 0.000289 0.021309 -0.045058 -v -0.006435 0.020358 -0.047045 -v -0.033829 0.018660 -0.025038 -v -0.038074 0.020329 -0.025228 -v -0.044540 0.022615 -0.025633 -v -0.045670 0.019596 -0.024688 -v -0.071026 0.096111 -0.023729 -v 0.042363 0.021535 -0.021419 -v 0.036877 0.020254 -0.021231 -v -0.068208 0.063898 -0.030912 -v 0.022339 0.022158 -0.040459 -v 0.013256 0.023478 -0.043923 -v 0.004761 0.024479 -0.045397 -v 0.002328 0.023955 -0.046360 -v -0.013253 0.023252 -0.048472 -v -0.015869 0.019021 -0.046406 -v -0.032609 0.020857 -0.025032 -v -0.076650 0.069689 -0.024910 -v 0.049399 0.022931 -0.019555 -v 0.039426 0.023543 -0.020486 -v 0.016920 0.024587 -0.043110 -v -0.011778 0.025054 -0.048809 -v -0.019235 0.022088 -0.046634 -v -0.032705 0.024017 -0.025920 -v -0.042325 0.023970 -0.026105 -v -0.050018 0.019449 -0.022938 -v -0.070685 0.064087 -0.030420 -v -0.024217 0.003651 0.038869 -v 0.015999 0.028100 -0.042824 -v -0.001019 0.024976 -0.046947 -v -0.003987 0.025110 -0.047650 -v -0.006870 0.024932 -0.047900 -v -0.016071 0.026330 -0.049977 -v -0.047147 0.124973 -0.022201 -v -0.038758 0.126336 -0.026136 -v -0.034440 0.022924 -0.024904 -v -0.037104 0.024482 -0.025613 -v -0.053164 0.020563 -0.020826 -v 0.053171 0.027758 -0.017740 -v 0.048195 0.025138 -0.020067 -v 0.043526 0.024477 -0.020408 -v 0.039591 0.026091 -0.019376 -v -0.072539 0.100699 -0.022541 -v -0.080908 0.088992 -0.019464 -v 0.023188 0.026339 -0.040348 -v 0.011135 0.028538 -0.044176 -v 0.005891 0.028056 -0.045343 -v 0.002066 0.028832 -0.047845 -v -0.021543 0.027087 -0.048055 -v -0.035917 0.026760 -0.025922 -v -0.049024 0.023770 -0.024805 -v -0.076039 0.100735 -0.021600 -v -0.010581 0.076552 -0.036443 -v -0.000913 0.031459 -0.049001 -v -0.005442 0.028111 -0.049439 -v -0.009582 0.029373 -0.049787 -v -0.013415 0.028374 -0.050787 -v -0.030472 0.137502 -0.031561 -v -0.032593 0.027384 -0.027314 -v -0.033718 0.025352 -0.025695 -v -0.046260 0.026555 -0.026508 -v -0.035061 0.069112 -0.036741 -v -0.009977 0.031461 -0.050542 -v -0.033731 0.028569 -0.027319 -v -0.042752 0.029668 -0.027580 -v -0.051811 0.073492 -0.033911 -v -0.066047 0.097903 -0.023508 -v -0.077389 0.086534 -0.021264 -v -0.051698 0.069432 -0.035986 -v 0.021847 0.029894 -0.040562 -v 0.014456 0.031519 -0.044452 -v 0.001313 0.032524 -0.049001 -v -0.003756 0.030392 -0.049766 -v -0.014514 0.031252 -0.051704 -v -0.020126 0.032204 -0.050721 -v -0.022567 0.032434 -0.049611 -v -0.038593 0.027253 -0.026065 -v -0.045693 0.029539 -0.027615 -v -0.048470 0.031411 -0.027152 -v -0.048974 0.028400 -0.026351 -v -0.055660 0.029253 -0.020546 -v -0.059410 0.028586 -0.016435 -v -0.078915 0.097366 -0.020306 -v -0.056868 0.069850 -0.033658 -v -0.058760 0.102077 -0.020946 -v -0.081743 0.100643 -0.017961 -v -0.059422 0.067174 -0.033490 -v -0.076751 0.095222 -0.022378 -v 0.010593 0.035697 -0.045353 -v 0.010012 0.031813 -0.046062 -v 0.006019 0.032790 -0.047278 -v -0.013904 0.034020 -0.051883 -v -0.019724 0.034078 -0.051824 -v -0.066329 0.140899 -0.073790 -v -0.034955 0.031274 -0.028368 -v -0.040305 0.031597 -0.028155 -v -0.045649 0.032672 -0.028575 -v -0.053462 0.029240 -0.023515 -v -0.054257 0.032339 -0.023695 -v -0.054969 0.030923 -0.021803 -v -0.056812 0.030568 -0.020737 -v -0.060708 0.030878 -0.019884 -v -0.062960 0.029526 -0.017215 -v -0.070279 0.040338 0.021217 -v 0.024298 0.032664 -0.038310 -v 0.018834 0.032169 -0.042811 -v 0.014704 0.034424 -0.044726 -v -0.001517 0.036456 -0.048858 -v -0.005264 0.034108 -0.049594 -v -0.016567 0.034017 -0.052493 -v -0.050763 0.032643 -0.025921 -v -0.024458 0.132828 -0.031300 -v -0.040687 0.123254 -0.023834 -v -0.015378 0.146370 -0.041448 -v -0.043044 0.127031 -0.024625 -v -0.033777 0.133619 -0.029987 -v -0.062616 0.078846 -0.029387 -v -0.046853 0.075509 -0.033605 -v -0.056398 0.076888 -0.032569 -v -0.031206 0.066274 -0.037535 -v 0.021982 0.034512 -0.041752 -v 0.020033 0.037150 -0.043234 -v 0.016907 0.037428 -0.044325 -v 0.013611 0.037046 -0.045886 -v 0.006080 0.036047 -0.047178 -v 0.002251 0.036462 -0.047909 -v -0.005347 0.036813 -0.050550 -v -0.008836 0.034457 -0.050217 -v -0.027341 0.036930 -0.047999 -v -0.034763 0.033795 -0.029657 -v -0.035824 0.035770 -0.030525 -v -0.037995 0.036224 -0.030164 -v -0.045647 0.034644 -0.029821 -v -0.052932 0.034110 -0.025743 -v -0.055670 0.032876 -0.023379 -v -0.058303 0.034141 -0.024197 -v -0.062249 0.033837 -0.022857 -v -0.065710 0.030898 -0.017803 -v -0.054979 0.109489 -0.016499 -v -0.011417 0.145119 -0.044034 -v -0.061829 0.074746 -0.031349 -v -0.066153 0.081337 -0.025991 -v 0.023886 0.036963 -0.040241 -v 0.005423 0.038802 -0.048611 -v -0.068359 0.106799 -0.022486 -v -0.033450 0.035337 -0.032367 -v -0.041981 0.034621 -0.030037 -v -0.049475 0.037146 -0.028943 -v -0.051404 0.035260 -0.027284 -v 0.000849 0.080895 -0.034544 -v -0.036702 0.132096 -0.028658 -v -0.062940 0.042061 0.025839 -v -0.071118 0.091646 -0.023220 -v -0.074550 0.109251 -0.021225 -v -0.079494 0.038042 0.000899 -v 0.025737 0.036432 -0.038366 -v 0.008226 0.039064 -0.047683 -v -0.008681 0.038171 -0.051124 -v -0.011717 0.038731 -0.052617 -v -0.020453 0.041882 -0.053673 -v -0.056226 0.078983 -0.031912 -v -0.055771 0.036910 -0.028689 -v -0.064562 0.037163 -0.025916 -v -0.065990 0.035460 -0.022212 -v -0.069282 0.035416 -0.019203 -v -0.083464 0.095690 -0.019037 -v -0.079860 0.039351 0.003657 -v -0.020287 0.003742 0.038468 -v -0.045601 0.123307 -0.022359 -v 0.014588 0.039518 -0.045408 -v -0.008841 0.040543 -0.052130 -v -0.021961 0.038689 -0.052763 -v -0.038468 0.039818 -0.031773 -v -0.057935 0.040048 -0.031211 -v -0.060525 0.037374 -0.028868 -v -0.068547 0.038406 -0.024367 -v -0.069476 0.037724 -0.021682 -v -0.065003 0.074609 -0.029219 -v -0.063709 0.030646 0.011078 -v -0.023190 0.145361 -0.035309 -v 0.010445 0.039019 -0.046802 -v 0.007984 0.044038 -0.048625 -v -0.006766 0.043108 -0.051819 -v -0.011586 0.043454 -0.052863 -v -0.023538 0.042862 -0.052963 -v -0.027222 0.042587 -0.050536 -v -0.064686 0.128525 -0.072070 -v -0.042615 0.038900 -0.032333 -v -0.044099 0.038801 -0.031981 -v -0.047121 0.040745 -0.030979 -v -0.049459 0.040238 -0.030194 -v -0.053874 0.038914 -0.030208 -v -0.067756 0.041396 -0.028447 -v -0.073116 0.041534 -0.023803 -v -0.074748 0.087316 -0.022365 -v -0.079429 0.094132 -0.020561 -v -0.022821 0.129499 -0.029142 -v 0.023901 0.042110 -0.040512 -v 0.021017 0.040172 -0.042045 -v 0.011925 0.043554 -0.045456 -v 0.003631 0.043960 -0.049630 -v 0.001780 0.040645 -0.049708 -v -0.003173 0.041154 -0.050439 -v -0.052958 0.041574 -0.031538 -v -0.063178 0.040504 -0.030238 -v -0.075167 0.040745 -0.021903 -v -0.004308 0.070910 -0.037922 -v -0.084933 0.093870 -0.017925 -v -0.027326 0.135026 -0.032074 -v -0.052309 0.112126 -0.014895 -v -0.069732 0.121672 -0.064179 -v -0.026181 0.140666 -0.033737 -v 0.031654 0.044425 -0.034715 -v 0.020435 0.044545 -0.041582 -v 0.015451 0.043166 -0.044147 -v 0.009400 0.043267 -0.047716 -v -0.015491 0.041451 -0.053557 -v -0.035541 0.041959 -0.033694 -v -0.060704 0.042864 -0.032183 -v -0.063584 0.043595 -0.032107 -v -0.070336 0.040686 -0.025735 -v -0.064893 0.094703 -0.023434 -v -0.042003 0.132949 -0.025491 -v -0.033792 0.140856 -0.029075 -v -0.055698 0.117461 -0.016583 -v -0.049188 0.120603 -0.019657 -v 0.027111 0.041296 -0.038510 -v 0.012526 0.047182 -0.045986 -v -0.014137 0.045554 -0.052991 -v -0.028752 0.047491 -0.049984 -v -0.042919 0.044737 -0.033555 -v -0.045701 0.043768 -0.032488 -v -0.050225 0.043361 -0.032567 -v -0.055148 0.044243 -0.033793 -v -0.058127 0.043383 -0.033196 -v -0.066475 0.044206 -0.031324 -v -0.068647 0.043340 -0.029691 -v -0.072322 0.044419 -0.027542 -v -0.073916 0.044150 -0.025205 -v -0.023051 0.071198 -0.038187 -v -0.047584 0.128717 -0.021854 -v -0.071590 0.080746 -0.023363 -v 0.008688 0.047857 -0.047667 -v 0.004696 0.047994 -0.048648 -v -0.008571 0.045295 -0.052359 -v -0.014679 0.048731 -0.053994 -v -0.019478 0.048860 -0.053667 -v -0.021772 0.049277 -0.053529 -v -0.024609 0.045164 -0.052296 -v -0.011129 0.074358 -0.037196 -v -0.068307 0.123900 -0.067211 -v -0.035683 0.046041 -0.034212 -v -0.038642 0.043813 -0.032756 -v -0.049242 0.045907 -0.033516 -v -0.056981 0.046036 -0.034224 -v -0.063511 0.049651 -0.033736 -v -0.078591 0.044022 -0.020747 -v -0.065527 0.144939 -0.075296 -v -0.027467 0.071756 -0.037854 -v -0.030883 0.071812 -0.036954 -v -0.051105 0.123399 -0.019431 -v -0.050661 0.031250 0.019498 -v -0.069074 0.088622 -0.023524 -v 0.008041 0.052195 -0.047172 -v -0.000546 0.046990 -0.050427 -v -0.003905 0.048494 -0.051706 -v -0.005949 0.045867 -0.052450 -v -0.008763 0.050538 -0.052509 -v -0.037298 0.072041 -0.034998 -v -0.047404 0.046861 -0.034032 -v -0.053388 0.046149 -0.034305 -v -0.041120 0.069179 -0.035933 -v 0.032241 0.048051 -0.033973 -v 0.022406 0.047150 -0.040690 -v 0.018435 0.048005 -0.042751 -v 0.013965 0.050480 -0.044738 -v 0.011516 0.051449 -0.045461 -v 0.002711 0.051085 -0.049251 -v -0.000619 0.050144 -0.051166 -v -0.026981 0.049275 -0.051585 -v -0.079127 0.106568 -0.019266 -v -0.015508 0.137276 -0.036814 -v -0.053984 0.067189 -0.036307 -v -0.036026 0.048436 -0.036263 -v -0.044104 0.048802 -0.034688 -v -0.051797 0.050115 -0.036142 -v -0.054953 0.048558 -0.035858 -v -0.059906 0.047637 -0.034006 -v -0.068687 0.048598 -0.031769 -v -0.072307 0.047717 -0.029202 -v -0.061709 0.071472 -0.032857 -v -0.068050 0.029620 0.004821 -v 0.006402 0.050396 -0.048268 -v -0.004198 0.051498 -0.052319 -v -0.066649 0.128161 -0.071589 -v -0.072936 0.050188 -0.030240 -v -0.078377 0.046924 -0.022253 -v -0.073830 0.070011 -0.026957 -v -0.054519 0.124850 -0.016668 -v -0.065272 0.130708 -0.073373 -v -0.054063 0.114945 -0.016216 -v 0.034601 0.051142 -0.032934 -v 0.029936 0.050192 -0.034754 -v 0.022931 0.051774 -0.040325 -v 0.017269 0.053799 -0.043061 -v 0.002338 0.054467 -0.048652 -v -0.008716 0.052954 -0.052606 -v -0.016700 0.053050 -0.053678 -v -0.022145 0.053918 -0.052488 -v -0.035829 0.052120 -0.037154 -v -0.038229 0.051356 -0.036610 -v -0.040555 0.051128 -0.035664 -v -0.061655 0.051098 -0.034004 -v -0.055479 0.122619 -0.016359 -v 0.018798 0.064186 -0.037575 -v -0.057640 0.115183 -0.016388 -v -0.052760 0.119871 -0.017986 -v -0.016828 0.141225 -0.038470 -v 0.013308 0.055706 -0.045269 -v 0.004292 0.055926 -0.048185 -v -0.002237 0.052889 -0.051608 -v -0.080059 0.103223 -0.018690 -v -0.026433 0.054622 -0.050701 -v -0.056469 0.092156 -0.021753 -v -0.035012 0.053459 -0.038952 -v -0.044461 0.052461 -0.036024 -v -0.051239 0.054621 -0.036189 -v -0.055203 0.053819 -0.036034 -v -0.057067 0.051490 -0.036010 -v -0.065064 0.055148 -0.033496 -v -0.061859 0.087638 -0.023826 -v -0.070511 0.030843 0.004786 -v -0.042353 0.074585 -0.034906 -v 0.025280 0.053971 -0.038209 -v -0.018516 0.144469 -0.038516 -v -0.003010 0.056085 -0.050508 -v -0.030613 0.135152 -0.031263 -v -0.017547 0.055527 -0.052938 -v -0.032644 0.055374 -0.039903 -v -0.038201 0.056939 -0.038106 -v -0.037577 0.053960 -0.036809 -v -0.042842 0.055788 -0.036377 -v -0.036320 0.001649 -0.045090 -v -0.030348 0.001302 -0.043625 -v -0.040029 0.001814 -0.044125 -v -0.032917 0.001394 -0.044208 -v -0.027398 0.001308 -0.040998 -v -0.022754 0.001378 -0.040343 -v -0.018731 0.001352 -0.039433 -v -0.014601 0.001508 -0.038851 -v -0.010589 0.001562 -0.038121 -v -0.000795 0.001758 -0.036454 -v 0.012682 0.002524 -0.034190 -v -0.007762 0.001636 -0.037635 -v -0.043616 0.002205 -0.040859 -v -0.035393 0.001404 -0.042421 -v -0.024842 0.001662 -0.035913 -v -0.019484 0.001527 -0.036135 -v -0.014985 0.001699 -0.035383 -v -0.009336 0.001872 -0.034328 -v -0.002561 0.001971 -0.033069 -v 0.003877 0.001980 -0.032118 -v 0.009684 0.001976 -0.030278 -v 0.015684 0.002528 -0.028912 -v -0.040350 0.001346 -0.039957 -v -0.033740 0.001529 -0.035926 -v -0.029022 0.001490 -0.036773 -v -0.019412 0.002293 -0.034221 -v -0.015844 0.002371 -0.033619 -v -0.011445 0.002456 -0.032853 -v 0.008504 0.002308 -0.028595 -v 0.014027 0.002346 -0.032554 -v -0.045044 0.001934 -0.037192 -v -0.044437 0.001340 -0.036205 -v -0.026342 0.002826 -0.034567 -v -0.008344 0.003533 -0.031557 -v 0.000867 0.002623 -0.030703 -v 0.004406 0.002533 -0.030006 -v 0.011959 0.002065 -0.026358 -v -0.037242 0.001558 -0.034698 -v -0.004154 0.002539 -0.031599 -v 0.007102 0.005315 -0.026725 -v 0.014628 0.002238 -0.020932 -v -0.040903 0.001565 -0.029950 -v -0.032115 0.003306 -0.033734 -v -0.026276 0.006104 -0.032453 -v -0.020248 0.005444 -0.032449 -v -0.009995 0.005728 -0.030631 -v -0.002938 0.006702 -0.028508 -v -0.000454 0.005514 -0.029416 -v 0.011264 0.002213 -0.021709 -v -0.046721 0.002546 -0.032475 -v -0.036181 0.002239 -0.032415 -v -0.029527 0.005669 -0.032522 -v -0.022340 0.006465 -0.031210 -v -0.006703 0.006861 -0.028429 -v 0.002239 0.006264 -0.028021 -v 0.010207 0.002765 -0.025483 -v 0.018814 0.002839 -0.021208 -v -0.046318 0.001514 -0.031336 -v -0.045697 0.001368 -0.027518 -v -0.028506 0.006578 -0.030723 -v -0.017935 0.006511 -0.030655 -v -0.013960 0.006593 -0.029893 -v -0.011773 0.006806 -0.027544 -v -0.000980 0.007059 -0.026239 -v 0.006529 0.006407 -0.022874 -v 0.009334 0.002992 -0.022083 -v 0.017424 0.002839 -0.021139 -v 0.020000 0.002957 -0.018566 -v -0.048335 0.001729 -0.028955 -v -0.039732 0.001908 -0.029386 -v -0.038422 0.002889 -0.028625 -v -0.031880 0.006256 -0.030962 -v -0.025552 0.006431 -0.026628 -v -0.004001 0.006915 -0.023849 -v 0.004346 0.006569 -0.026114 -v 0.008832 0.001960 -0.014469 -v 0.020478 0.002709 -0.015478 -v 0.021426 0.002689 -0.015910 -v -0.050545 0.001517 -0.027440 -v -0.034316 0.005988 -0.029492 -v -0.017104 0.006604 -0.024631 -v -0.000868 0.007011 -0.022050 -v 0.002330 0.007141 -0.023477 -v 0.004324 0.006726 -0.020272 -v 0.006119 0.005959 -0.020757 -v 0.006431 0.003249 -0.018260 -v 0.007171 0.002417 -0.017444 -v 0.016321 0.002094 -0.015394 -v 0.018273 0.002156 -0.012368 -v 0.022788 0.002722 -0.013792 -v 0.024891 0.003926 -0.014432 -v 0.028007 0.004560 -0.014384 -v 0.030946 0.005958 -0.015544 -v 0.036135 0.007456 -0.015514 -v -0.055839 0.001920 -0.026262 -v -0.052812 0.001601 -0.026099 -v -0.035995 0.006058 -0.027234 -v -0.032552 0.006439 -0.027337 -v -0.021130 0.006309 -0.019804 -v 0.014412 0.001973 -0.013201 -v 0.022353 0.002359 -0.011144 -v 0.025289 0.002747 -0.011418 -v -0.058816 0.001543 -0.025181 -v -0.057379 0.001404 -0.024972 -v -0.055493 0.001237 -0.022714 -v -0.048975 0.001364 -0.025529 -v -0.043719 0.001536 -0.020029 -v -0.041682 0.001852 -0.023824 -v -0.041719 0.001889 -0.020451 -v -0.039765 0.003083 -0.024897 -v -0.032453 0.006227 -0.018805 -v 0.003251 0.002830 -0.013517 -v 0.006820 0.001902 -0.011401 -v 0.009520 0.002511 -0.011379 -v 0.013526 0.002363 -0.011628 -v 0.015604 0.003765 -0.010943 -v 0.025827 0.002587 -0.009234 -v 0.029847 0.003052 -0.008531 -v 0.031231 0.004048 -0.010996 -v -0.062425 0.001570 -0.023841 -v -0.060709 0.001418 -0.023457 -v -0.051253 0.001259 -0.023910 -v -0.039670 0.004000 -0.021919 -v -0.029129 0.006212 -0.023663 -v -0.009167 0.006658 -0.019716 -v 0.003408 0.005714 -0.016965 -v 0.019200 0.003579 -0.008684 -v 0.021344 0.002266 -0.009273 -v 0.022945 0.002089 -0.006409 -v 0.040073 0.006918 -0.010362 -v -0.063726 0.001590 -0.022569 -v -0.038016 0.006127 -0.022062 -v -0.027065 0.006137 -0.016951 -v -0.022685 0.006390 -0.024132 -v -0.003348 0.006664 -0.014773 -v 0.003180 0.002020 -0.010738 -v 0.004331 0.001879 -0.011433 -v 0.007838 0.002466 -0.009436 -v 0.025053 0.002170 -0.004943 -v 0.032930 0.003361 -0.005595 -v -0.079560 0.079332 0.031056 -v -0.053400 0.001266 -0.017965 -v -0.046619 0.001390 -0.019907 -v -0.040965 0.001663 -0.016328 -v -0.036504 0.006111 -0.020037 -v -0.019542 0.006233 -0.015860 -v -0.015388 0.006473 -0.018706 -v -0.014608 0.006245 -0.014999 -v 0.000071 0.006715 -0.015542 -v 0.000289 0.005677 -0.012636 -v 0.006085 0.002798 -0.008011 -v 0.008937 0.004054 -0.009514 -v 0.022402 0.003572 -0.003949 -v 0.033732 0.003394 -0.002671 -v 0.038393 0.005444 -0.004037 -v -0.048942 0.001423 -0.015379 -v -0.040108 0.001579 -0.014277 -v -0.024538 0.006108 -0.012473 -v -0.005928 0.006490 -0.011379 -v 0.004847 0.001917 -0.005809 -v 0.024912 0.002523 -0.000556 -v 0.027816 0.002443 -0.003930 -v 0.036462 0.004655 -0.001285 -v 0.048343 0.010575 -0.002852 -v -0.065975 0.001396 -0.018475 -v -0.056353 0.001239 -0.016873 -v -0.046435 0.001508 -0.014047 -v -0.038081 0.001458 -0.011482 -v -0.034521 0.006071 -0.016168 -v -0.031534 0.006153 -0.014912 -v -0.009282 0.006322 -0.007641 -v -0.002751 0.006265 -0.008450 -v 0.000747 0.002847 -0.009171 -v 0.000056 0.002544 -0.004646 -v 0.003353 0.002004 -0.004776 -v 0.004746 0.001975 -0.003427 -v -0.068963 0.001494 -0.017441 -v -0.062769 0.001170 -0.018295 -v -0.049724 0.001274 -0.010206 -v -0.035233 0.001551 -0.009666 -v -0.030569 0.006015 -0.011785 -v -0.012388 0.006260 -0.009866 -v 0.005349 0.001773 -0.000562 -v 0.030616 0.003037 0.000006 -v -0.071324 0.002113 -0.014629 -v -0.066760 0.001224 -0.013870 -v -0.044274 0.001313 -0.010300 -v -0.020555 0.006083 -0.009313 -v -0.016154 0.006209 -0.009606 -v 0.022254 0.004325 -0.000547 -v 0.023786 0.002476 0.002636 -v 0.039471 0.006462 0.001530 -v 0.044585 0.008602 -0.000932 -v 0.044182 0.009164 0.004084 -v 0.047791 0.010716 0.003446 -v -0.054924 0.038016 0.024175 -v -0.058143 0.001369 -0.012245 -v -0.047668 0.001347 -0.008647 -v -0.038137 0.001504 -0.005981 -v -0.033841 0.001578 -0.006893 -v -0.028178 0.005909 -0.008384 -v -0.023707 0.005854 -0.003725 -v -0.004693 0.006272 -0.004153 -v -0.002814 0.005607 -0.005331 -v 0.003462 0.001834 -0.001454 -v 0.021348 0.004005 0.002856 -v 0.028070 0.002961 0.002826 -v 0.029077 0.003811 0.005399 -v -0.071319 0.001861 -0.012054 -v -0.069960 0.001676 -0.008585 -v -0.059677 0.001260 -0.013403 -v -0.051590 0.001364 -0.006598 -v -0.043048 0.001698 -0.007756 -v -0.031298 0.001724 -0.003651 -v -0.013893 0.006165 -0.004972 -v -0.008085 0.006211 0.000359 -v -0.000713 0.003247 -0.000052 -v 0.005122 0.001955 0.003594 -v 0.007157 0.002131 0.002188 -v 0.008546 0.002678 0.003600 -v 0.018960 0.003952 0.004607 -v 0.021324 0.002562 0.005385 -v 0.024039 0.003056 0.007826 -v 0.040547 0.007968 0.006356 -v -0.072711 0.003382 -0.013423 -v -0.049184 0.001943 -0.006720 -v -0.046177 0.003536 -0.006639 -v -0.039982 0.003038 -0.005094 -v -0.034533 0.001630 -0.001583 -v 0.000255 0.003365 0.003411 -v 0.001249 0.002399 0.002172 -v 0.003791 0.002512 0.005884 -v 0.007546 0.002204 0.005733 -v 0.013262 0.002347 0.006986 -v 0.017694 0.002480 0.007496 -v 0.034751 0.005472 0.005729 -v -0.089954 0.083482 0.013418 -v -0.050012 0.002913 -0.004835 -v -0.038341 0.003865 -0.003409 -v -0.035403 0.001494 -0.003200 -v -0.033062 0.001523 -0.000904 -v -0.029978 0.001959 0.001487 -v -0.017986 0.006100 -0.004573 -v -0.012428 0.006071 0.000396 -v -0.003824 0.006140 0.000206 -v -0.002747 0.005529 0.000429 -v 0.010525 0.002617 0.005961 -v 0.028650 0.005676 0.010510 -v 0.031673 0.005845 0.009321 -v 0.049892 0.012818 0.006307 -v -0.072477 0.002931 -0.008755 -v -0.067245 0.001812 -0.003501 -v -0.034592 0.001807 0.000510 -v -0.021442 0.005881 0.003338 -v -0.002401 0.006265 0.004765 -v -0.001088 0.005688 0.005016 -v 0.006281 0.002646 0.008746 -v 0.039269 0.008726 0.010163 -v 0.042816 0.010068 0.009030 -v -0.063333 0.001492 -0.006185 -v -0.058324 0.001420 -0.004280 -v -0.052787 0.001482 -0.002868 -v -0.035706 0.003702 0.000151 -v -0.024534 0.005799 0.005177 -v -0.015193 0.006119 0.001485 -v -0.000299 0.006390 0.007366 -v 0.002051 0.003628 0.006515 -v 0.010103 0.002551 0.011116 -v 0.013296 0.002615 0.013827 -v 0.020503 0.003006 0.013384 -v 0.035539 0.009510 0.013282 -v -0.074745 0.035375 0.004974 -v -0.054739 0.001347 0.000685 -v -0.032133 0.001871 0.006568 -v -0.028894 0.003214 0.002843 -v -0.026600 0.005580 0.001174 -v 0.004226 0.004248 0.009303 -v 0.007563 0.003094 0.010679 -v 0.011576 0.003147 0.014579 -v 0.022322 0.003997 0.013407 -v 0.025270 0.006057 0.014585 -v 0.045684 0.011664 0.009591 -v -0.085303 0.048173 0.005532 -v -0.080927 0.077477 0.020572 -v -0.069587 0.002993 -0.002972 -v -0.063672 0.001832 0.000109 -v -0.054930 0.001438 0.004067 -v -0.053835 0.000814 0.003372 -v -0.035807 0.002852 0.004510 -v -0.033670 0.001667 0.005007 -v -0.030712 0.002500 0.007008 -v 0.002775 0.006414 0.010486 -v 0.007225 0.006686 0.014340 -v 0.031121 0.007694 0.012264 -v 0.039177 0.011371 0.014391 -v 0.043331 0.012839 0.013263 -v -0.065842 0.002440 0.000169 -v -0.028674 0.005418 0.006093 -v -0.020686 0.006030 0.008892 -v -0.018194 0.006022 0.005141 -v -0.014990 0.006107 0.007547 -v -0.007022 0.006316 0.007610 -v 0.000370 0.006665 0.010742 -v 0.019506 0.003039 0.018265 -v 0.025911 0.007453 0.016859 -v 0.027623 0.008772 0.016474 -v 0.031924 0.009521 0.013640 -v -0.052377 0.032837 0.020186 -v -0.058621 0.030992 0.015165 -v -0.059872 0.001712 0.003969 -v -0.053272 0.001425 0.006297 -v -0.036188 0.002987 0.007675 -v -0.035602 0.001917 0.009617 -v -0.035264 0.001982 0.012213 -v -0.028333 0.005429 0.008210 -v -0.028530 0.005929 0.014563 -v 0.004494 0.006979 0.013592 -v 0.013803 0.002578 0.018264 -v 0.041878 0.015357 0.017158 -v -0.073751 0.077914 0.028674 -v -0.088429 0.079961 0.020451 -v -0.090230 0.081571 0.019115 -v -0.072874 0.074374 0.022748 -v -0.062714 0.002974 0.005400 -v -0.061792 0.002039 0.004110 -v -0.056594 0.001526 0.006195 -v -0.037366 0.003442 0.009619 -v -0.038260 0.002005 0.012500 -v -0.030155 0.003917 0.009124 -v -0.019398 0.006256 0.013371 -v -0.016258 0.006443 0.015312 -v 0.009143 0.006061 0.016297 -v 0.010110 0.004476 0.018310 -v 0.011270 0.003086 0.018800 -v 0.022251 0.005207 0.019967 -v -0.061082 0.034109 0.019272 -v -0.071893 0.114747 -0.038321 -v -0.084449 0.078183 0.023020 -v -0.087807 0.081695 0.013846 -v -0.062578 0.002489 0.007063 -v -0.041531 0.001704 0.012346 -v -0.032808 0.002386 0.011691 -v -0.031964 0.003600 0.013400 -v -0.030233 0.005539 0.013005 -v -0.010815 0.006311 0.011213 -v 0.000786 0.007002 0.016114 -v 0.007401 0.006973 0.016072 -v 0.008920 0.006129 0.018762 -v 0.008520 0.002676 0.021741 -v 0.010747 0.002403 0.025243 -v 0.017180 0.002764 0.022967 -v 0.019594 0.003860 0.023303 -v -0.079432 0.043460 0.012478 -v -0.063341 0.029243 -0.014910 -v -0.064044 0.003038 0.008125 -v -0.063077 0.002135 0.010603 -v -0.055351 0.002016 0.012234 -v -0.051355 0.001662 0.011451 -v -0.045160 0.001620 0.013292 -v -0.022985 0.006157 0.013781 -v -0.006490 0.006763 0.016394 -v -0.002990 0.006685 0.013862 -v 0.005131 0.007317 0.019132 -v 0.005852 0.002595 0.023028 -v -0.071153 0.115074 -0.041224 -v -0.058901 0.027421 -0.013041 -v -0.064537 0.003179 0.009709 -v -0.011793 0.006791 0.018715 -v 0.002615 0.002662 0.024121 -v 0.017451 0.003900 0.026994 -v 0.019909 0.005407 0.026381 -v -0.075666 0.079059 0.031588 -v -0.048328 0.036128 0.024611 -v -0.080036 0.076803 0.017550 -v -0.071614 0.116355 -0.049906 -v -0.073264 0.076533 0.023634 -v -0.077197 0.044700 0.017603 -v -0.065598 0.028765 -0.010512 -v -0.058595 0.001969 0.011785 -v -0.036446 0.002265 0.018296 -v -0.034423 0.002810 0.017860 -v -0.025986 0.006296 0.017199 -v -0.004218 0.007182 0.022189 -v -0.000306 0.007215 0.020440 -v -0.000911 0.002654 0.025295 -v 0.008076 0.002348 0.024875 -v 0.015230 0.002934 0.026721 -v -0.059051 0.041099 0.026490 -v -0.067959 0.030572 -0.012612 -v -0.064162 0.028207 -0.009578 -v -0.070256 0.115615 -0.046074 -v -0.060365 0.002144 0.017357 -v -0.050758 0.002203 0.014303 -v -0.045150 0.002305 0.015800 -v -0.035213 0.002254 0.020527 -v -0.031645 0.005812 0.017792 -v -0.007765 0.007216 0.022784 -v -0.004748 0.002760 0.026458 -v 0.003497 0.002400 0.027393 -v 0.006167 0.002772 0.029637 -v 0.010287 0.002680 0.028431 -v 0.016299 0.004477 0.028742 -v -0.077644 0.075643 0.019937 -v -0.072921 0.079798 0.033763 -v -0.087712 0.079801 0.026593 -v -0.041791 0.002227 0.015228 -v -0.033152 0.002287 0.023558 -v -0.027974 0.006435 0.018548 -v -0.026541 0.006791 0.022406 -v -0.017628 0.006870 0.021656 -v -0.012520 0.007244 0.024102 -v -0.008677 0.002726 0.027115 -v -0.004048 0.002385 0.029920 -v 0.000985 0.002462 0.029265 -v 0.010023 0.003673 0.030254 -v 0.013213 0.004018 0.029646 -v -0.077317 0.040381 0.012912 -v -0.074907 0.081999 0.036213 -v -0.078905 0.075250 0.017794 -v -0.085838 0.080211 0.015057 -v -0.076138 0.076294 0.023185 -v -0.073128 0.033434 -0.010922 -v -0.064937 0.027842 -0.005909 -v -0.062811 0.026687 -0.002995 -v -0.065553 0.002567 0.014479 -v -0.054769 0.002278 0.021906 -v -0.044539 0.002434 0.021092 -v -0.029429 0.006251 0.020877 -v -0.012563 0.002777 0.028088 -v -0.009550 0.002568 0.028606 -v 0.000602 0.002829 0.030780 -v 0.005454 0.003675 0.031140 -v 0.010446 0.005309 0.030323 -v -0.069819 0.078855 0.028963 -v -0.080862 0.075168 0.015104 -v -0.077475 0.082189 0.034988 -v -0.075597 0.085083 0.037837 -v -0.070719 0.031319 -0.010423 -v -0.069384 0.029438 -0.006856 -v -0.057638 0.025671 0.002336 -v -0.065982 0.002780 0.020038 -v -0.064556 0.002206 0.018555 -v -0.039474 0.002385 0.025436 -v -0.030848 0.002315 0.026274 -v -0.022525 0.006964 0.024034 -v -0.015717 0.007301 0.025221 -v -0.015320 0.002614 0.029377 -v -0.007849 0.002548 0.032371 -v 0.000240 0.003886 0.032218 -v 0.003191 0.004303 0.031720 -v 0.006165 0.005792 0.031042 -v -0.079640 0.081629 0.032138 -v -0.086959 0.079825 0.008470 -v -0.083958 0.078688 0.027177 -v -0.083684 0.078763 0.017593 -v -0.075990 0.035462 -0.008830 -v -0.074304 0.033584 -0.006960 -v -0.070803 0.029989 -0.003974 -v -0.067134 0.028132 0.000134 -v -0.046512 0.002426 0.026629 -v -0.028790 0.002518 0.028426 -v -0.024642 0.002669 0.029112 -v -0.002743 0.003161 0.032375 -v -0.075610 0.075512 0.022310 -v -0.081824 0.044347 0.008035 -v -0.068647 0.028649 -0.002177 -v -0.060740 0.026082 -0.000716 -v -0.067042 0.003568 0.017031 -v -0.065483 0.002964 0.023242 -v -0.051319 0.002407 0.022082 -v -0.043770 0.002724 0.027648 -v -0.041548 0.002563 0.026292 -v -0.038503 0.002956 0.027774 -v -0.018836 0.002596 0.030493 -v -0.014013 0.002514 0.032237 -v -0.010916 0.003272 0.034763 -v -0.008051 0.003859 0.034707 -v -0.004501 0.004151 0.033869 -v -0.051013 0.034558 0.022002 -v -0.068474 0.033411 0.012042 -v -0.063653 0.027472 0.002571 -v -0.040137 0.003778 0.028263 -v -0.035472 0.002594 0.029377 -v -0.028219 0.002747 0.032641 -v -0.023430 0.002657 0.036703 -v -0.016236 0.002708 0.034751 -v -0.067694 0.046686 0.026261 -v -0.087406 0.084629 0.032548 -v -0.068664 0.080386 0.032027 -v -0.077417 0.077623 0.029059 -v -0.081776 0.042249 -0.011563 -v -0.080179 0.039614 -0.008429 -v -0.053758 0.030247 0.015683 -v -0.074490 0.033535 -0.004214 -v -0.072516 0.032335 -0.001469 -v -0.070894 0.030388 -0.000825 -v -0.058362 0.028032 0.008522 -v -0.064158 0.003370 0.027184 -v -0.063537 0.002573 0.025580 -v -0.060826 0.002339 0.026521 -v -0.050829 0.002485 0.029628 -v -0.048080 0.002824 0.029533 -v -0.043390 0.004065 0.029656 -v -0.083843 0.081846 0.032515 -v -0.036908 0.003721 0.030308 -v -0.015851 0.003507 0.036788 -v -0.010310 0.005767 0.035225 -v -0.082287 0.078336 0.014936 -v -0.050771 0.037646 0.023731 -v -0.071581 0.037222 0.015900 -v -0.077580 0.038362 0.007354 -v -0.079660 0.077108 0.023985 -v -0.089993 0.081203 0.025361 -v -0.079742 0.038478 -0.004581 -v -0.077273 0.037089 -0.007372 -v -0.061856 0.028227 0.006850 -v -0.061048 0.002827 0.029162 -v -0.055522 0.002428 0.029861 -v -0.056799 0.035920 0.022774 -v -0.072094 0.034380 0.008469 -v -0.034590 0.003808 0.033243 -v -0.033179 0.002815 0.032816 -v -0.027698 0.002769 0.036396 -v -0.019205 0.002760 0.036450 -v -0.022304 0.126096 -0.024655 -v -0.059503 0.106066 -0.020696 -v -0.017588 0.127330 -0.025001 -v -0.068501 0.120563 -0.062570 -v -0.029155 0.129242 -0.029139 -v -0.049514 0.114809 -0.016863 -v -0.042850 0.118136 -0.019899 -v -0.013511 0.130041 -0.029092 -v -0.013162 0.132073 -0.032555 -v -0.066607 0.114396 -0.039066 -v -0.011579 0.135886 -0.037906 -v -0.062917 0.131242 -0.073937 -v -0.062483 0.119456 -0.040973 -v -0.035894 0.123857 -0.024915 -v -0.009854 0.134879 -0.036924 -v -0.071879 0.113644 -0.035076 -v -0.068586 0.112933 -0.035312 -v -0.009826 0.139848 -0.042138 -v -0.061542 0.134304 -0.074878 -v -0.063885 0.116564 -0.040016 -v -0.067057 0.119679 -0.059949 -v -0.042604 0.116426 -0.017971 -v -0.065347 0.111075 -0.026186 -v -0.061651 0.132722 -0.073130 -v -0.066578 0.120733 -0.061997 -v -0.063739 0.127165 -0.069523 -v -0.063538 0.128218 -0.071369 -v -0.026928 0.123266 -0.018854 -v -0.064239 0.118006 -0.045120 -v -0.018188 0.132429 -0.032146 -v -0.027810 0.123497 -0.022574 -v -0.068068 0.118384 -0.056916 -v -0.071127 0.112045 -0.029618 -v -0.026259 0.126131 -0.026217 -v -0.063890 0.126768 -0.066536 -v -0.064318 0.115042 -0.035837 -v -0.069422 0.113693 -0.038365 -v -0.066804 0.122956 -0.066335 -v -0.009379 0.142749 -0.043453 -v -0.036413 0.120855 -0.021925 -v -0.069129 0.109982 -0.024671 -v -0.069421 0.117128 -0.053741 -v -0.061572 0.113710 -0.019254 -v -0.047990 0.112030 -0.010791 -v -0.009535 0.137682 -0.040130 -v -0.070391 0.110847 -0.026456 -v -0.034591 0.119681 -0.016390 -v -0.072499 0.112418 -0.030472 -v -0.065237 0.124378 -0.066913 -v -0.066294 0.122009 -0.064809 -v -0.063892 0.111272 -0.024279 -v -0.066100 0.113008 -0.033009 -v -0.041067 0.116350 -0.016415 -v -0.067815 0.115418 -0.044114 -v -0.065164 0.121904 -0.056772 -v -0.062599 0.109771 -0.021210 -v -0.026198 0.123651 -0.020945 -v -0.063566 0.126509 -0.060530 -v -0.020735 0.128586 -0.028250 -v -0.014830 0.133913 -0.034342 -v -0.066888 0.109571 -0.023617 -v -0.062942 0.117078 -0.034934 -v -0.065727 0.108134 -0.022320 -v -0.050330 0.111659 -0.013384 -v -0.063310 0.111156 -0.022674 -v -0.063373 0.112572 -0.026219 -v -0.031510 0.121638 -0.020730 -v -0.070355 0.117206 -0.054563 -v -0.017797 0.129008 -0.028534 -v -0.069389 0.112463 -0.033069 -v -0.064167 0.114152 -0.032199 -v -0.062530 0.130237 -0.070390 -v -0.067306 0.116558 -0.048310 -v -0.036572 0.119214 -0.019199 -v -0.047233 0.115704 -0.017699 -v -0.021326 0.125691 -0.022831 -v -0.063220 0.114097 -0.028650 -v -0.065647 0.116073 -0.043338 -v -0.067113 0.118087 -0.052918 -v -0.065207 0.118673 -0.049424 -v -0.030878 0.124840 -0.025717 -v -0.046966 0.113392 -0.014786 -v -0.070821 0.119891 -0.060197 -v -0.062815 0.121231 -0.047386 -v -0.065549 0.112229 -0.029708 -v -0.023099 0.124804 -0.020419 -v -0.071310 0.118507 -0.058151 -v -0.039643 0.120223 -0.021799 -vt -0.100607 0.974489 -vt -0.090082 1.003329 -vt -0.074080 0.989825 -vt 0.997485 0.031388 -vt 0.997893 -0.010341 -vt 0.988386 0.018583 -vt 0.094971 -0.002317 -vt 0.029570 -0.013558 -vt 0.071212 0.039131 -vt 0.069068 -0.033794 -vt 0.034158 0.067142 -vt 0.011407 0.030423 -vt -0.010540 0.070392 -vt -0.368964 -0.015764 -vt -0.356545 0.042010 -vt -0.332974 -0.007374 -vt -0.041326 0.101497 -vt -0.061766 0.142755 -vt -0.032991 0.137846 -vt -0.317890 -0.124907 -vt -0.293453 -0.159289 -vt -0.292074 -0.135252 -vt -0.048650 0.148499 -vt -0.259120 0.235085 -vt -0.235932 0.242019 -vt -0.257608 0.222582 -vt -0.326521 -0.041636 -vt -0.296894 -0.030770 -vt -0.307355 -0.048859 -vt 1.008406 0.003559 -vt -0.155367 1.369103 -vt -0.161947 1.385657 -vt -0.177709 1.360623 -vt -0.360755 -0.243822 -vt -0.359177 -0.208783 -vt -0.340930 -0.207810 -vt -0.033000 0.161646 -vt -0.055974 0.175126 -vt -0.338444 -0.029666 -vt 0.947854 0.079664 -vt 0.976799 0.120820 -vt 0.977007 0.066090 -vt -0.309183 -0.452921 -vt -0.307461 -0.432304 -vt -0.281904 -0.457996 -vt -0.092892 -0.112584 -vt -0.119930 -0.097276 -vt -0.090743 -0.091416 -vt 0.030104 0.102013 -vt 0.066770 0.105241 -vt -0.311463 -0.318130 -vt -0.322933 -0.287385 -vt -0.295442 -0.276533 -vt 0.118278 0.074425 -vt 0.095895 0.102706 -vt 0.116400 0.117695 -vt 1.156975 0.063010 -vt 1.174555 0.078651 -vt 1.178826 0.045348 -vt -0.320512 -0.238947 -vt -0.053417 -0.140937 -vt -0.049844 -0.123594 -vt -0.024122 -0.131263 -vt -0.186079 0.508835 -vt -0.175952 0.494536 -vt -0.191031 0.493091 -vt -0.000858 -0.121231 -vt -0.020430 -0.138269 -vt 0.001495 -0.169539 -vt 0.026411 0.784338 -vt 0.007950 0.802567 -vt -0.002128 0.775119 -vt -0.045070 0.006571 -vt -0.071176 0.034462 -vt -0.054705 0.034138 -vt -0.227928 0.021889 -vt -0.244284 0.017942 -vt -0.241053 0.046725 -vt 1.033877 0.073524 -vt 1.065528 0.083650 -vt 1.039527 0.043895 -vt 0.988761 0.113813 -vt -0.339799 -0.238821 -vt 1.349464 -0.140097 -vt 1.340474 -0.102935 -vt 1.324084 -0.118009 -vt 0.802664 -0.001245 -vt 0.806943 0.038892 -vt 0.829093 0.028855 -vt -0.032812 0.025526 -vt -0.329436 -0.367410 -vt -0.313604 -0.383608 -vt -0.303748 -0.365716 -vt 0.110675 -0.046708 -vt 0.487547 -0.056360 -vt 0.501606 -0.063029 -vt 0.487980 -0.083234 -vt -0.026903 0.103020 -vt 1.050558 0.162566 -vt 1.062655 0.177966 -vt 1.084146 0.141475 -vt -0.012437 0.124329 -vt 0.075236 0.070202 -vt 0.012987 0.115856 -vt -0.086374 0.183614 -vt -0.094796 0.168389 -vt -0.080986 0.165412 -vt 0.756052 -0.006192 -vt 0.766713 0.052759 -vt 0.772545 0.023147 -vt 1.123704 0.032226 -vt 1.149592 0.031918 -vt 1.145004 0.010860 -vt 0.877269 0.028618 -vt 0.887486 -0.003218 -vt 0.862318 -0.012739 -vt 0.797951 0.014977 -vt -0.060316 0.114668 -vt 0.679956 0.160619 -vt 0.671498 0.176034 -vt 0.686437 0.176592 -vt 0.267289 0.066490 -vt 0.232863 0.066528 -vt 0.259964 0.114587 -vt 1.196078 -0.063650 -vt 1.185529 -0.048113 -vt 1.163766 -0.081551 -vt 0.084901 0.122908 -vt 0.059971 0.156504 -vt 0.085210 0.146973 -vt 0.133377 0.018567 -vt 0.159834 0.055747 -vt -0.210441 1.205691 -vt -0.195978 1.217116 -vt -0.191289 1.195143 -vt -0.292629 -0.327605 -vt 0.745904 0.054807 -vt 0.728871 0.082710 -vt 0.730006 0.044364 -vt 0.930714 0.009523 -vt 0.970585 -0.020746 -vt 0.979675 0.015834 -vt 1.299283 0.157158 -vt 1.281228 0.173228 -vt 1.290695 0.145278 -vt 1.300100 0.130681 -vt 1.294402 0.114751 -vt 0.125238 0.147761 -vt 0.118805 0.173672 -vt 0.157255 0.175072 -vt -0.352624 -0.064505 -vt -0.359638 -0.041545 -vt 1.309011 0.037286 -vt 1.288103 0.048866 -vt 1.288665 0.028750 -vt 1.302541 0.075732 -vt -0.333350 -0.354950 -vt -0.356944 -0.334644 -vt -0.339875 -0.318593 -vt 0.233724 -0.213755 -vt 0.257839 -0.219838 -vt 0.234267 -0.235088 -vt 0.902569 0.056049 -vt 0.910757 -0.000188 -vt -0.115465 0.217121 -vt -0.150037 0.187470 -vt -0.131277 0.147444 -vt -0.400984 1.115544 -vt -0.387842 1.132370 -vt -0.408245 1.137813 -vt 0.174958 0.101447 -vt 0.145446 0.094585 -vt 0.148064 0.125679 -vt 1.191807 0.019091 -vt 1.169979 0.018613 -vt 0.584979 0.072922 -vt 0.596746 0.101958 -vt 0.621784 0.090379 -vt 0.480529 0.132998 -vt 0.495315 0.108356 -vt 0.473399 0.115342 -vt -0.330014 -0.419758 -vt -0.347586 -0.424763 -vt -0.349898 -0.398455 -vt 1.200398 -0.002993 -vt 1.229640 -0.007364 -vt 1.204756 -0.038473 -vt -0.425723 1.255970 -vt -0.455637 1.262591 -vt -0.435062 1.276556 -vt 1.413642 -0.352499 -vt 1.412125 -0.327605 -vt 1.395692 -0.316000 -vt -0.389663 1.099366 -vt -0.373162 1.113025 -vt -0.377055 1.145627 -vt -0.389132 1.191644 -vt -0.405843 1.157364 -vt 1.084697 0.108568 -vt 1.099658 0.077254 -vt 1.023580 0.044216 -vt 0.052291 0.124792 -vt 0.029487 0.143297 -vt -0.198181 1.334810 -vt -0.187587 1.373917 -vt -0.308514 0.765304 -vt -0.299772 0.784484 -vt -0.277270 0.759219 -vt -0.199401 0.200586 -vt -0.215478 0.196295 -vt -0.220796 0.226971 -vt -0.370469 1.183621 -vt -0.364078 1.228703 -vt -0.381185 1.258940 -vt -0.403967 1.207117 -vt -0.373717 0.217081 -vt -0.400362 0.199191 -vt -0.381185 0.236468 -vt 0.829334 0.062870 -vt 0.603711 -0.143106 -vt 0.599357 -0.134667 -vt 0.615497 -0.127370 -vt -0.352696 -0.154958 -vt -0.215045 1.267355 -vt -0.183998 1.266426 -vt -0.203073 1.248111 -vt -0.209877 0.018570 -vt -0.234435 0.005868 -vt 0.187281 0.005366 -vt 0.209847 0.042941 -vt 0.195800 0.073233 -vt 0.744951 0.045646 -vt -0.037895 0.581383 -vt -0.054709 0.537408 -vt -0.030025 0.567212 -vt -0.292501 0.016706 -vt 0.792653 0.033331 -vt -0.207507 0.766524 -vt -0.222453 0.784741 -vt -0.188848 0.778721 -vt 1.305696 -0.131106 -vt 1.334470 -0.125353 -vt 1.329494 -0.152100 -vt -0.091022 1.328190 -vt -0.084714 1.357195 -vt -0.056789 1.334900 -vt -0.341120 1.485846 -vt -0.360724 1.486427 -vt -0.347586 1.497270 -vt -0.290142 0.859180 -vt -0.309401 0.893010 -vt -0.287508 0.907109 -vt -0.109780 0.781803 -vt -0.089589 0.797014 -vt -0.088619 0.769152 -vt -0.032078 0.060679 -vt -0.329614 -0.382181 -vt -0.307375 -0.406050 -vt 1.077178 -0.009399 -vt 1.063841 0.020035 -vt 1.094859 0.001818 -vt 0.095108 0.175267 -vt -0.289726 0.992020 -vt -0.297577 1.037946 -vt -0.273429 1.020942 -vt -0.365058 1.170354 -vt -0.359889 1.193228 -vt -0.341167 1.170107 -vt -0.291323 -0.413253 -vt -0.302016 -0.409306 -vt -0.301290 -0.428249 -vt -0.417383 -0.028283 -vt -0.383613 -0.040855 -vt -0.393615 -0.049801 -vt -0.359930 1.171354 -vt -0.343593 1.260744 -vt 0.849363 -0.065396 -vt 0.839960 -0.013461 -vt 0.825563 -0.048573 -vt -0.101041 -0.053417 -vt -0.082133 -0.068378 -vt -0.081804 -0.058170 -vt 0.165976 0.160514 -vt 1.101514 0.238622 -vt 1.083188 0.213040 -vt 1.074187 0.235072 -vt -0.054012 1.421325 -vt -0.076676 1.444221 -vt -0.038156 1.463558 -vt -0.209877 1.329990 -vt 0.161365 -0.024236 -vt 0.091414 -0.091085 -vt 0.048947 -0.084188 -vt 0.073628 -0.144517 -vt -0.362206 1.090216 -vt -0.353539 1.129050 -vt -0.344667 1.146461 -vt -0.116620 -0.105300 -vt -0.091022 -0.126575 -vt -0.094569 -0.106164 -vt -0.054912 -0.066338 -vt 0.659811 0.092235 -vt 0.697025 0.099381 -vt 0.681280 0.120407 -vt 0.870803 -0.027860 -vt 0.873968 0.045578 -vt 0.853293 0.004520 -vt -0.055654 0.091336 -vt -0.069959 0.123301 -vt -0.065353 0.088334 -vt -0.288396 1.180990 -vt -0.273314 1.232038 -vt -0.252179 1.206745 -vt -0.362038 1.063518 -vt -0.331011 1.071139 -vt -0.342487 1.098255 -vt -0.332691 1.213182 -vt 1.421118 -0.478968 -vt 1.447160 -0.472720 -vt 1.421216 -0.472038 -vt 1.210958 0.177115 -vt 1.241084 0.160946 -vt 1.219125 0.150538 -vt 1.287416 -0.166774 -vt 1.251954 -0.152070 -vt 1.272298 -0.194965 -vt -0.337754 0.974889 -vt -0.353120 0.982267 -vt -0.354210 0.956725 -vt -0.319793 1.105958 -vt -0.323913 1.128156 -vt 1.218034 -0.030615 -vt 1.229734 -0.027413 -vt 1.228631 -0.003376 -vt 0.204505 0.153207 -vt 0.189012 0.174091 -vt 0.184666 0.136275 -vt 1.228540 0.012254 -vt 1.238696 0.036930 -vt 1.252977 0.013801 -vt 0.979267 0.048678 -vt 1.002993 0.097865 -vt 0.976518 0.095213 -vt 1.158396 0.076878 -vt 1.170259 0.120552 -vt 1.146412 0.101793 -vt 0.197325 -0.051754 -vt 0.221667 -0.026509 -vt -0.300676 -0.223171 -vt -0.294122 -0.252326 -vt -0.282095 -0.229655 -vt -0.323972 1.239707 -vt -0.166602 -0.057430 -vt -0.136830 -0.079171 -vt -0.126334 -0.068552 -vt 0.939709 -0.047375 -vt 0.965866 -0.050213 -vt 1.364731 -0.397803 -vt 1.362127 -0.436989 -vt 1.391541 -0.411582 -vt -0.099287 0.649853 -vt -0.109448 0.668766 -vt -0.091181 0.665399 -vt 1.197681 0.067050 -vt -0.329723 0.950784 -vt -0.314713 0.991982 -vt -0.343451 0.990413 -vt 0.204015 0.959956 -vt 0.187258 0.962049 -vt 0.195208 0.942553 -vt -0.234965 0.796980 -vt -0.221119 0.814197 -vt -0.210440 0.797748 -vt 0.161674 0.601507 -vt 0.185594 0.617704 -vt 0.164747 0.629956 -vt 0.434985 0.649439 -vt 0.417300 0.646810 -vt 0.439594 0.610312 -vt -0.303512 0.953421 -vt -0.324961 0.915508 -vt -0.289701 1.406869 -vt -0.276468 1.399598 -vt -0.291560 1.374951 -vt -0.330277 1.007619 -vt 0.232829 0.959952 -vt 0.115023 0.592789 -vt 0.147379 0.613529 -vt 0.103423 0.617429 -vt 0.170671 0.581405 -vt 0.196577 0.578808 -vt 0.156571 0.258052 -vt 0.181448 0.257349 -vt 0.170671 0.278552 -vt 0.181448 0.564476 -vt 0.156571 0.565193 -vt 0.174575 0.552409 -vt -0.340893 -0.164505 -vt -0.319665 -0.182231 -vt -0.331525 -0.158678 -vt 0.208571 0.857537 -vt 0.219178 0.873619 -vt 0.196005 0.885069 -vt 0.595074 -0.047629 -vt 0.633774 -0.060250 -vt 0.606267 -0.028768 -vt 1.150238 0.076655 -vt 1.146666 0.118115 -vt -0.430191 1.239254 -vt 0.208249 0.125751 -vt -0.321943 0.880678 -vt -0.307717 0.899471 -vt -0.309613 1.007516 -vt 0.159339 1.071270 -vt 0.194481 1.048584 -vt 0.187818 1.087010 -vt -0.181938 -0.027413 -vt -0.173817 -0.018809 -vt -0.176226 -0.002410 -vt 1.074946 0.047564 -vt 1.119137 0.058952 -vt -0.282139 -0.122234 -vt -0.278599 -0.135472 -vt 0.733777 -0.102128 -vt 0.749615 -0.066564 -vt 0.711271 -0.078866 -vt 1.305420 -0.315608 -vt 1.305240 -0.344027 -vt 1.342628 -0.334906 -vt 0.247533 0.012364 -vt -0.303878 0.871916 -vt -0.294667 1.004806 -vt 0.136526 0.818542 -vt 0.111446 0.807293 -vt 0.124304 0.782136 -vt 0.218846 0.719971 -vt 0.177490 0.697877 -vt 0.205553 0.688293 -vt 0.200163 0.661081 -vt 0.190353 0.678560 -vt 0.166598 0.656919 -vt 0.189756 1.116429 -vt 0.157255 1.109369 -vt 0.203897 0.254916 -vt 0.196577 0.277762 -vt 0.206640 0.550797 -vt 0.203897 0.564242 -vt 0.486215 -0.051421 -vt 0.490417 -0.034072 -vt 0.474743 -0.043214 -vt 0.881941 -0.006790 -vt 0.769050 -0.096310 -vt 0.789254 -0.064854 -vt -0.020979 -0.021433 -vt 0.588927 0.196295 -vt 0.588550 0.180587 -vt 0.582865 0.209320 -vt 0.018892 0.499976 -vt 0.068161 0.537058 -vt 0.045416 0.515177 -vt -0.286517 0.931212 -vt -0.289020 0.955823 -vt 0.196045 0.770689 -vt 0.182231 0.801599 -vt 0.171534 0.771162 -vt 0.268994 0.970540 -vt 0.300444 0.977728 -vt 0.280170 1.004216 -vt 0.177455 0.733959 -vt 0.161007 0.753939 -vt 0.142252 0.734341 -vt 0.169132 0.807611 -vt 0.156357 0.785574 -vt 0.167058 0.843951 -vt 0.158836 0.872779 -vt 0.131073 0.840442 -vt 0.108386 0.554489 -vt 0.117187 0.574927 -vt 0.113895 0.730973 -vt 0.134213 0.761025 -vt 0.133040 0.664014 -vt 0.110944 0.648049 -vt 0.123593 0.630796 -vt 0.194557 0.725995 -vt -0.310397 1.252964 -vt -0.297696 1.254949 -vt -0.303952 1.287883 -vt 1.186314 0.011138 -vt 1.218972 0.015354 -vt 1.182815 0.038236 -vt 0.772457 0.031978 -vt 0.773276 -0.000010 -vt 0.814698 0.011612 -vt 0.992580 -0.034583 -vt -0.392867 0.112640 -vt -0.435843 0.116778 -vt -0.396995 0.150432 -vt -0.303884 0.837614 -vt -0.289307 0.867414 -vt -0.268794 0.899222 -vt 0.154699 0.661868 -vt 0.174095 0.673878 -vt 0.145701 0.676807 -vt 0.139611 1.061625 -vt 0.118854 1.075698 -vt 0.127434 0.690366 -vt 0.203540 0.644901 -vt 0.208506 0.614778 -vt 0.211163 0.777032 -vt 0.213237 0.814873 -vt 0.807919 -0.082113 -vt 0.862690 -0.085142 -vt 0.872881 -0.064533 -vt -0.010137 1.422476 -vt -0.053016 1.417243 -vt -0.047512 1.396374 -vt 0.662658 -0.038841 -vt 0.654085 -0.019771 -vt -0.067989 0.078875 -vt -0.084617 0.121172 -vt -0.093205 0.147702 -vt 0.134780 0.007109 -vt 0.135236 0.046426 -vt 0.127887 0.044906 -vt -0.282023 0.820087 -vt 0.143600 0.694205 -vt 0.198556 -0.112641 -vt 0.183505 -0.094882 -vt 0.183654 -0.134760 -vt 0.325356 0.537341 -vt 0.313441 0.546878 -vt 0.343928 0.569736 -vt 0.148360 0.632539 -vt 0.188027 0.287004 -vt 0.215164 0.278382 -vt 0.195208 0.268246 -vt 0.238170 0.885327 -vt 0.210415 0.910235 -vt 0.233678 0.898028 -vt 0.618622 0.046550 -vt 0.634304 0.048607 -vt 0.635588 0.016736 -vt -0.098026 -0.061741 -vt -0.135324 -0.058047 -vt -0.126719 -0.045286 -vt -0.264412 0.868909 -vt -0.268363 0.930293 -vt 0.439850 0.587564 -vt 0.469780 0.618148 -vt 0.111630 0.834465 -vt 0.229786 0.625107 -vt 0.214235 0.589296 -vt 0.272002 0.910983 -vt 0.255860 0.961994 -vt 0.244966 0.929206 -vt 0.161712 0.969338 -vt 0.153839 1.000907 -vt 0.135085 0.992275 -vt -0.251610 0.132517 -vt -0.238751 0.075859 -vt -0.267164 0.091579 -vt 0.801951 0.081262 -vt 0.799948 0.056797 -vt 0.785371 0.057573 -vt -0.275646 0.769845 -vt -0.273401 0.791300 -vt -0.308096 0.801417 -vt -0.261893 0.959313 -vt -0.262881 0.982382 -vt -0.270139 1.018371 -vt 0.935385 0.044169 -vt 0.178039 1.018518 -vt 0.152225 1.036994 -vt 0.152774 0.955335 -vt 0.148068 0.967440 -vt 0.446505 -0.036328 -vt 0.445013 -0.007078 -vt 0.427525 -0.027233 -vt 0.191151 0.298601 -vt 1.220496 -0.069122 -vt 1.207503 -0.045925 -vt 0.252294 1.004565 -vt 0.262272 1.041974 -vt 0.244209 1.032374 -vt 0.120459 0.897074 -vt 0.153892 0.923489 -vt 0.107483 0.917080 -vt 1.054327 0.005754 -vt -0.262808 -0.014229 -vt -0.244271 -0.009734 -vt -0.247315 -0.036132 -vt 1.206756 0.108491 -vt 1.216858 0.083565 -vt 1.204029 0.085177 -vt -0.014738 0.159322 -vt -0.260082 0.815342 -vt -0.247937 0.837968 -vt 0.184661 0.986505 -vt 0.170864 0.956625 -vt 0.120537 1.027331 -vt 0.805094 -0.020282 -vt 0.766654 -0.043403 -vt 0.256690 1.077888 -vt 0.240640 1.054304 -vt -0.316938 -0.102935 -vt -0.330077 -0.067558 -vt -0.311450 -0.079182 -vt 0.013747 -0.033997 -vt -0.247678 0.876592 -vt -0.237194 0.908082 -vt -0.250294 0.931774 -vt -0.239451 0.977748 -vt -0.246452 1.027997 -vt -0.262662 1.036183 -vt 1.283191 -0.293869 -vt 1.279187 -0.317725 -vt 0.117187 0.265374 -vt 0.151616 0.264845 -vt 0.144720 0.283057 -vt -0.242632 0.779225 -vt -0.237784 0.801933 -vt 0.103257 0.992616 -vt 0.187258 0.248350 -vt 0.170864 0.247250 -vt 0.180163 0.262922 -vt 0.240391 0.945169 -vt 1.273818 -0.255435 -vt 1.286577 -0.259857 -vt 1.267232 -0.263669 -vt 0.133255 1.099212 -vt 0.115023 0.283007 -vt 0.488798 -0.005243 -vt 0.204015 0.259122 -vt 0.206202 0.228103 -vt 0.906408 -0.090865 -vt 0.947673 -0.079220 -vt -0.066861 -0.108490 -vt -0.043249 -0.107883 -vt -0.239388 0.850733 -vt -0.228048 0.891557 -vt -0.226776 0.948934 -vt -0.219586 0.997573 -vt -0.231369 1.040533 -vt 0.171621 0.906505 -vt 0.191151 0.922458 -vt 0.180163 0.945789 -vt 0.223722 0.263292 -vt -0.110574 1.345106 -vt -0.382247 1.053390 -vt -0.374272 1.073422 -vt -0.364302 1.047303 -vt -0.388199 1.125284 -vt -0.415737 1.135919 -vt -0.384688 1.147358 -vt -0.221404 0.869758 -vt -0.095654 -0.087554 -vt 0.910868 -0.037875 -vt 0.161674 0.297244 -vt 0.147379 0.311741 -vt 0.100462 0.696337 -vt 0.436747 0.680960 -vt -0.322006 -0.394592 -vt -0.284021 -0.176293 -vt -0.297215 -0.181820 -vt -0.285049 -0.201129 -vt -0.117844 -0.082231 -vt -0.225521 0.209320 -vt -0.244295 0.216348 -vt -0.024726 1.442928 -vt -0.217370 0.772021 -vt -0.249093 0.763278 -vt -0.226877 0.820692 -vt -0.218796 0.922558 -vt 0.203498 1.073136 -vt 0.230767 1.087140 -vt 0.213632 1.101777 -vt -0.403989 1.169726 -vt -0.423579 1.179023 -vt -0.392499 1.187337 -vt -0.054981 1.405290 -vt -0.032542 1.404430 -vt -0.220928 0.742232 -vt -0.129619 0.222966 -vt -0.119986 0.236421 -vt -0.144788 0.232225 -vt -0.217461 0.816873 -vt -0.212756 0.845705 -vt -0.199138 1.014156 -vt -0.215499 1.037914 -vt 0.255860 0.262967 -vt 0.231422 0.239875 -vt 0.232829 0.267376 -vt 0.215164 0.930403 -vt 0.969895 -0.066846 -vt 0.980977 -0.098385 -vt 0.995791 -0.077687 -vt 0.160589 0.291589 -vt -0.260430 1.228292 -vt -0.255531 1.242982 -vt 0.297082 0.922902 -vt 0.632868 -0.200295 -vt 0.668260 -0.188887 -vt 0.646944 -0.173659 -vt -0.025255 1.343708 -vt -0.001791 1.366696 -vt 0.012451 1.360467 -vt 1.244637 0.102458 -vt 1.239674 0.085692 -vt 0.459313 0.631132 -vt 0.470219 0.664381 -vt -0.214096 0.532835 -vt -0.238147 0.547910 -vt -0.240004 0.528670 -vt -0.205627 0.562808 -vt -0.235932 0.572864 -vt 0.465697 0.678595 -vt -0.210690 0.909904 -vt 0.268994 0.252802 -vt 0.231422 0.987078 -vt 0.452362 0.709629 -vt 0.460222 0.731289 -vt 0.448697 0.720471 -vt 1.195163 0.066323 -vt -0.084615 0.696210 -vt -0.118583 -0.200099 -vt -0.106089 -0.214615 -vt -0.129167 -0.207922 -vt 0.279513 0.883378 -vt -0.043039 0.527762 -vt -0.067552 0.509202 -vt -0.040673 0.513425 -vt -0.296463 -0.108121 -vt -0.308514 -0.150684 -vt -0.286717 -0.133408 -vt -0.414013 1.044021 -vt -0.405110 1.058254 -vt -0.395460 1.023866 -vt -0.201719 0.807625 -vt -0.197913 0.828156 -vt -0.208792 0.879677 -vt -0.206773 0.948315 -vt -0.205706 0.996344 -vt -0.197016 1.056214 -vt -0.230676 1.049895 -vt 0.114316 0.962485 -vt 1.207666 -0.020099 -vt 0.731305 -0.209820 -vt 0.724554 -0.188961 -vt 0.705096 -0.192598 -vt -0.146481 -0.024887 -vt -0.135556 -0.043866 -vt -0.120648 -0.036483 -vt 1.241543 -0.135472 -vt 1.239199 -0.159289 -vt -0.201442 0.231001 -vt -0.203541 0.181291 -vt -0.200418 0.160619 -vt -0.191826 0.176592 -vt -0.045022 1.364948 -vt -0.194686 0.768135 -vt -0.197795 0.892666 -vt -0.197573 0.968205 -vt 0.252294 0.222111 -vt 0.225233 0.222378 -vt -0.290028 -0.389552 -vt -0.301950 -0.370003 -vt -0.286836 -0.352499 -vt 0.245847 1.025256 -vt 0.208083 0.997377 -vt 0.222842 1.029281 -vt -0.185004 0.861349 -vt -0.180939 0.913144 -vt -0.185753 0.941708 -vt -0.187218 0.982262 -vt -0.173483 1.031400 -vt -0.200424 0.185558 -vt -0.168426 -0.077318 -vt -0.138509 -0.092332 -vt 0.214043 1.005707 -vt 0.229208 1.040214 -vt -0.343524 -0.112944 -vt -0.326503 -0.137091 -vt -0.205627 0.251723 -vt -0.180992 0.227880 -vt -0.184768 0.597250 -vt -0.184555 0.611571 -vt -0.199401 0.597708 -vt -0.308921 -0.257626 -vt -0.180239 0.793341 -vt -0.183065 0.847130 -vt 0.115236 0.679288 -vt 0.182946 0.854387 -vt 0.293700 0.998058 -vt 0.301496 1.028275 -vt 0.284599 1.017910 -vt 0.393587 0.605551 -vt 0.475931 0.646815 -vt 0.300245 0.501089 -vt 0.300339 0.514817 -vt 0.312547 0.514470 -vt -0.173324 1.074711 -vt -0.169310 1.060171 -vt -0.158087 1.087049 -vt 0.424838 0.594149 -vt -0.216373 0.703486 -vt -0.207329 0.715574 -vt -0.192522 0.705562 -vt -0.177265 0.823150 -vt -0.176302 0.888956 -vt -0.174650 0.963840 -vt 0.416643 0.576107 -vt 0.480529 0.716435 -vt -0.051851 0.105775 -vt 0.257078 0.783594 -vt 0.279942 0.780718 -vt 0.272057 0.805874 -vt -0.170856 0.209397 -vt -0.184768 0.202348 -vt -0.170856 0.595146 -vt 0.847857 0.046025 -vt 0.843530 0.026050 -vt 1.266978 0.077372 -vt -0.164130 0.773070 -vt -0.175051 0.756820 -vt -0.163867 0.839818 -vt -0.168333 0.865268 -vt -0.172597 1.001843 -vt -0.263738 1.050875 -vt 0.151616 0.574693 -vt -0.175780 1.308434 -vt -0.170451 1.340750 -vt 1.448460 -0.442157 -vt 1.463499 -0.430419 -vt 1.417888 -0.399536 -vt -0.167108 0.612598 -vt -0.170773 0.629081 -vt -0.304127 -0.317725 -vt -0.319883 -0.323341 -vt -0.310648 -0.345014 -vt -0.162838 0.820310 -vt -0.158236 0.910932 -vt -0.162305 0.942233 -vt 0.282301 0.920868 -vt 0.233724 0.933056 -vt 0.253703 0.948892 -vt -0.064106 0.520351 -vt -0.082221 0.547790 -vt -0.050430 0.548934 -vt 0.090259 -0.190827 -vt 0.075862 -0.180760 -vt 0.051701 -0.198026 -vt 0.283552 1.058989 -vt 0.214235 0.279824 -vt 0.307301 0.885719 -vt -0.145902 1.402800 -vt 0.029839 1.386700 -vt -0.012960 1.389426 -vt 0.025669 1.406553 -vt -0.177100 0.557309 -vt -0.155190 0.559928 -vt -0.180992 0.577391 -vt -0.381570 1.067380 -vt -0.154698 0.796785 -vt -0.152404 0.880995 -vt -0.153867 0.973756 -vt 1.496558 -0.247714 -vt 1.476077 -0.257499 -vt 1.486463 -0.258409 -vt 0.074952 1.410296 -vt 0.086912 1.437343 -vt 0.088900 1.422559 -vt -0.298536 -0.398888 -vt 0.144720 0.589534 -vt -0.147300 0.588782 -vt -0.152145 0.748380 -vt -0.141631 0.987919 -vt -0.133245 1.020470 -vt -0.139064 1.070172 -vt 0.280170 0.215873 -vt 0.189132 0.833762 -vt 1.163433 -0.022180 -vt 1.180909 -0.027236 -vt -0.142440 0.619131 -vt 1.172574 -0.010617 -vt 1.186676 -0.029135 -vt 1.161296 -0.028941 -vt -0.155126 0.717145 -vt -0.131986 0.726364 -vt -0.139859 0.770811 -vt -0.141033 0.820697 -vt -0.145154 0.849650 -vt -0.143447 0.950221 -vt -0.119412 1.046667 -vt -0.139064 0.154875 -vt -0.158087 0.131281 -vt -0.169310 0.160425 -vt 0.505536 0.015307 -vt 0.483978 0.024027 -vt 0.236744 0.598318 -vt 0.223722 0.580016 -vt -0.139451 1.384793 -vt -0.133121 0.666377 -vt -0.147184 0.662489 -vt -0.128383 0.793861 -vt -0.126794 0.929138 -vt -0.120944 0.152904 -vt -0.138575 0.119399 -vt 0.676891 -0.011046 -vt 0.659287 0.019143 -vt 0.452362 0.128547 -vt 0.570585 0.055607 -vt 0.583933 0.061589 -vt 0.590640 0.041604 -vt 1.242492 0.017794 -vt 1.265668 0.020426 -vt 1.270042 0.045032 -vt -0.134029 0.559735 -vt -0.126122 0.598041 -vt -0.131538 0.688732 -vt -0.155969 0.677805 -vt -0.132350 0.842109 -vt -0.137283 0.874521 -vt -0.127220 0.904777 -vt -0.121168 0.966410 -vt -0.120944 1.075771 -vt 0.662233 -0.068408 -vt 0.303977 0.851593 -vt -0.114647 1.416278 -vt -0.126719 1.422487 -vt -0.116523 0.622907 -vt -0.117437 0.811896 -vt -0.127802 0.863289 -vt -0.109312 1.009720 -vt 0.225233 0.998053 -vt -0.129046 1.383336 -vt -0.119367 1.400589 -vt 0.600349 0.153134 -vt 0.597736 0.175284 -vt 0.609646 0.167671 -vt 0.189756 0.168328 -vt 0.244158 0.153661 -vt 1.246357 -0.013455 -vt 1.245729 -0.037601 -vt 1.228820 -0.036248 -vt -0.125071 0.567418 -vt -0.111803 0.663022 -vt -0.115938 0.714405 -vt -0.095276 0.722284 -vt -0.115216 0.763867 -vt -0.116319 0.829583 -vt -0.104101 0.853241 -vt -0.117388 0.920099 -vt -0.221297 1.230109 -vt -0.094802 0.693347 -vt -0.102407 0.801036 -vt 0.206202 0.988329 -vt -0.098026 1.444770 -vt -0.103244 1.431704 -vt -0.116314 0.557375 -vt -0.107599 0.563178 -vt -0.093685 0.623102 -vt -0.091295 0.760844 -vt -0.105770 0.879237 -vt -0.097536 0.903271 -vt -0.101569 0.947714 -vt -0.100775 0.983806 -vt -0.104259 1.407245 -vt -0.091604 0.585540 -vt -0.090944 0.598076 -vt -0.089969 0.791898 -vt -0.095194 0.820296 -vt -0.087603 0.932229 -vt -0.092943 1.017426 -vt -0.094748 1.050087 -vt -0.093205 1.083330 -vt -0.109571 1.099354 -vt 0.532755 -0.156139 -vt 0.545508 -0.132022 -vt 0.508923 -0.122807 -vt 0.090373 1.092508 -vt -0.093254 1.428050 -vt 1.379086 -0.455688 -vt 1.410467 -0.432843 -vt -0.082694 0.668771 -vt -0.081520 0.846350 -vt -0.089633 0.872558 -vt -0.079931 0.884040 -vt -0.085182 0.966956 -vt -0.071066 1.064665 -vt 0.161235 -0.051346 -vt -0.069942 0.649266 -vt -0.080769 0.734054 -vt -0.078045 0.856209 -vt -0.080933 1.447423 -vt 1.427742 -0.064367 -vt 1.436874 -0.086928 -vt 1.442046 -0.073993 -vt -0.071680 0.819931 -vt -0.070115 0.919867 -vt -0.064572 0.939360 -vt -0.066233 0.997110 -vt 0.001738 -0.124801 -vt 0.032502 -0.151278 -vt 0.033933 -0.127161 -vt -0.077816 1.437355 -vt 1.085070 0.126147 -vt 1.114166 0.104449 -vt 1.108866 0.116467 -vt -0.061102 -0.098009 -vt -0.065421 0.615721 -vt -0.068574 0.689447 -vt -0.059701 0.809702 -vt -0.061280 0.965598 -vt -0.055974 1.047474 -vt 0.133255 0.189023 -vt 0.829349 0.006110 -vt 0.822110 -0.013089 -vt -0.057132 0.722769 -vt -0.064660 0.762544 -vt -0.057034 0.793624 -vt -0.065548 0.844945 -vt -0.054423 0.856067 -vt -0.064432 0.907810 -vt -0.038162 1.002475 -vt 0.517946 -0.047629 -vt 0.521894 -0.027055 -vt 0.586666 -0.027055 -vt 0.218029 0.664224 -vt -0.065662 1.451660 -vt -0.069469 1.460839 -vt -0.071959 1.471275 -vt -0.060642 1.466087 -vt -0.053427 1.483505 -vt 0.792953 0.081162 -vt 0.752340 0.088603 -vt 0.757893 0.071980 -vt 1.276474 -0.332479 -vt 1.286100 -0.329877 -vt 1.282051 -0.353443 -vt -0.049225 0.634172 -vt -0.040343 0.666888 -vt -0.047964 0.873167 -vt 0.875382 0.031250 -vt 0.916858 -0.006875 -vt 0.489354 0.697684 -vt -0.258407 0.119184 -vt -0.250126 0.088647 -vt -0.265250 0.102213 -vt -0.069469 -0.075162 -vt -0.060642 -0.080582 -vt -0.071959 -0.087935 -vt 0.493306 -0.083234 -vt 0.507692 -0.083253 -vt 0.505204 -0.072137 -vt -0.041338 0.690393 -vt -0.050638 0.768773 -vt -0.055587 0.833342 -vt -0.044179 0.891809 -vt -0.044740 0.919618 -vt -0.045472 0.968996 -vt 0.130670 0.954053 -vt 0.390748 0.616922 -vt 0.379941 0.577901 -vt 0.105940 1.011702 -vt 0.109044 1.064086 -vt 0.098712 0.878143 -vt 0.094900 0.855627 -vt -0.043624 0.728836 -vt -0.037992 0.758361 -vt 0.800089 0.225443 -vt 0.793380 0.234856 -vt 0.823728 0.233183 -vt 0.811282 0.253851 -vt -0.317865 1.226508 -vt -0.294668 1.220861 -vt -0.312635 1.211752 -vt 0.837193 0.247794 -vt -0.047097 0.846806 -vt -0.042843 0.943339 -vt -0.080933 -0.063439 -vt -0.287226 1.451520 -vt -0.266585 1.430731 -vt 0.784010 0.224006 -vt 1.470863 -0.459344 -vt -0.030310 0.905604 -vt -0.023589 1.031578 -vt -0.021998 1.051267 -vt -0.033000 1.063663 -vt -0.214929 0.109975 -vt -0.218720 0.084198 -vt 0.293771 0.501229 -vt 0.506123 0.038440 -vt -0.037661 1.484395 -vt -0.029134 1.493856 -vt -0.043249 1.494882 -vt 1.437964 -0.389552 -vt -0.305447 -0.286266 -vt -0.291119 -0.293869 -vt -0.284507 -0.264491 -vt -0.041451 0.629306 -vt -0.032496 0.687979 -vt -0.032960 0.734374 -vt 1.423721 -0.330339 -vt 1.418487 -0.305034 -vt 1.435637 -0.332963 -vt 1.297247 -0.379693 -vt 1.305959 -0.398888 -vt 1.336673 -0.369685 -vt -0.026310 0.897161 -vt -0.025423 0.946258 -vt 0.144963 -0.144531 -vt 0.157399 -0.175086 -vt 0.125669 -0.163679 -vt -0.336756 -0.218084 -vt -0.331706 -0.237897 -vt -0.319891 -0.218380 -vt 1.308084 -0.185958 -vt -0.019955 0.278253 -vt -0.037565 0.272435 -vt -0.037895 0.284149 -vt -0.027096 0.258006 -vt 0.678366 0.202661 -vt 0.696937 0.216531 -vt 0.724761 0.217571 -vt -0.204206 0.084629 -vt 0.269334 0.023409 -vt -0.295511 -0.086037 -vt -0.282272 -0.070527 -vt -0.022181 0.916785 -vt -0.016878 0.974957 -vt 0.096680 1.078498 -vt 0.075378 1.041740 -vt 0.061143 1.064672 -vt 0.106141 0.756692 -vt -0.210436 0.115767 -vt -0.007329 0.573213 -vt -0.009106 0.590872 -vt -0.013542 0.551238 -vt -0.036394 0.546987 -vt 0.904801 -0.119002 -vt 0.905358 -0.150818 -vt 0.938503 -0.143925 -vt -0.305583 -0.212548 -vt -0.322904 -0.189873 -vt -0.343593 0.239713 -vt -0.350076 0.219222 -vt 0.580044 0.115767 -vt 0.564962 0.084629 -vt -0.289547 -0.234515 -vt -0.000977 0.922062 -vt -0.003895 1.028899 -vt -0.014738 1.075759 -vt -0.048650 1.073273 -vt -0.016621 1.493504 -vt -0.004567 1.502637 -vt -0.018453 1.505034 -vt -0.009106 0.288779 -vt -0.007724 0.264805 -vt -0.005304 0.241058 -vt -0.022247 0.233776 -vt -0.010239 0.227950 -vt -0.023731 0.214591 -vt -0.285456 1.276801 -vt 0.220954 0.099121 -vt -0.403939 0.053701 -vt -0.385396 0.071827 -vt 1.468864 -0.406050 -vt 0.000617 0.961803 -vt -0.002154 1.068245 -vt 0.722077 0.016709 -vt 0.709741 -0.027582 -vt 0.728911 -0.015475 -vt 0.396575 0.547653 -vt 0.297421 1.082417 -vt 0.692132 0.022634 -vt 0.775592 -0.006064 -vt 0.787930 -0.029834 -vt -0.337576 -0.145265 -vt 1.524745 -0.176083 -vt 1.517066 -0.194777 -vt 1.532446 -0.200710 -vt 0.002757 0.935529 -vt -0.021998 0.173761 -vt -0.023589 0.192360 -vt -0.002154 0.174635 -vt 0.233868 0.978612 -vt 0.248435 0.986183 -vt 0.255697 0.978246 -vt 0.014577 0.576016 -vt 0.006912 0.258874 -vt 0.610603 0.246396 -vt 0.610885 0.227950 -vt 0.601869 0.241058 -vt -0.014292 0.916215 -vt -0.034815 0.902634 -vt -0.050952 0.908130 -vt -0.168426 1.272533 -vt -0.147268 1.300941 -vt -0.138509 1.289134 -vt 0.635503 0.118535 -vt -0.105370 0.729999 -vt -0.087233 0.755020 -vt -0.090545 0.726904 -vt 0.020163 1.026309 -vt 0.015671 0.158616 -vt 0.014577 0.302083 -vt 0.022947 0.284976 -vt 0.012591 0.254178 -vt 0.012591 0.611911 -vt 0.004890 0.620216 -vt -0.005304 0.611483 -vt 1.286286 0.065805 -vt 1.279873 0.050893 -vt 0.266568 1.097891 -vt 0.245055 1.101912 -vt 0.021782 0.936179 -vt 0.021830 1.056629 -vt -0.071694 0.037327 -vt -0.081733 0.032690 -vt -0.059650 0.018578 -vt 1.244022 -0.002410 -vt 0.494961 0.677658 -vt -0.288288 0.179688 -vt -0.303952 0.205483 -vt -0.258293 0.181100 -vt 0.245877 -0.021313 -vt -0.241506 0.168934 -vt -0.212853 0.169643 -vt -0.235950 0.150368 -vt -0.218386 0.037286 -vt 0.015636 0.965914 -vt 0.025801 0.993289 -vt 0.032987 0.180089 -vt 0.001244 1.512125 -vt 0.011651 1.522057 -vt -0.001231 1.523705 -vt 0.812515 -0.042495 -vt 0.031987 0.266471 -vt 0.025652 0.263752 -vt 0.031987 0.599574 -vt 0.025652 0.611357 -vt 0.006912 0.605160 -vt 0.601744 0.263752 -vt 0.616017 0.270047 -vt 0.626622 0.250529 -vt 1.403692 -0.276533 -vt -0.000916 0.848356 -vt 0.023355 0.827187 -vt 0.032034 0.842577 -vt 0.056207 0.248668 -vt 0.041023 0.258186 -vt 0.066853 0.284686 -vt 0.032987 1.080425 -vt 0.230092 0.645831 -vt -0.049513 0.802994 -vt -0.340275 0.080617 -vt -0.351422 0.106519 -vt 0.043335 0.792183 -vt 0.034764 0.814024 -vt 0.287146 -0.016442 -vt 0.290682 -0.048652 -vt 0.032351 0.939494 -vt 0.038098 0.967281 -vt 0.035564 1.016543 -vt 0.040841 1.065510 -vt 1.341156 -0.431072 -vt -0.108596 0.754538 -vt 0.050617 0.587519 -vt 0.022947 0.589667 -vt 0.050617 0.275466 -vt 0.044903 0.603224 -vt 0.041885 0.631676 -vt 0.023901 0.625630 -vt 0.247350 -0.049049 -vt 0.044234 0.859107 -vt 0.016632 0.878923 -vt -0.300473 -0.379693 -vt 0.046831 0.969877 -vt 0.045838 1.045385 -vt 0.247096 0.550722 -vt 0.228092 0.569747 -vt 0.034507 0.507384 -vt 0.047647 0.500786 -vt 0.037764 0.750388 -vt 0.048595 0.765903 -vt 0.054437 0.813672 -vt 0.055673 0.894155 -vt 0.047301 0.902558 -vt 0.033164 -0.108476 -vt 0.045586 -0.123338 -vt 0.065427 0.570140 -vt 0.051961 0.594113 -vt 0.060738 0.654743 -vt 0.036767 0.674381 -vt 0.048254 0.686949 -vt 0.046047 0.707366 -vt 0.050536 0.729678 -vt 0.066275 0.779613 -vt 0.059722 0.871426 -vt -0.024840 -0.099475 -vt -0.035845 -0.110596 -vt 0.056360 0.991629 -vt 0.058029 1.078849 -vt 0.056858 0.619549 -vt 1.252328 -0.176293 -vt 1.394858 -0.260851 -vt 1.390181 -0.208783 -vt 1.405966 -0.243822 -vt -0.278166 1.241492 -vt 0.056207 0.945082 -vt 0.066401 0.952925 -vt 0.058029 0.193631 -vt 0.151403 0.545966 -vt 0.069435 0.586610 -vt 0.068025 0.608853 -vt 1.361737 -0.123734 -vt 1.359761 -0.139033 -vt 1.372968 -0.130333 -vt 0.064694 0.726611 -vt 0.059256 0.707523 -vt 0.060924 0.750351 -vt 0.074559 0.756377 -vt 0.069473 0.843734 -vt 0.077777 0.894521 -vt 0.314447 0.981213 -vt 0.319551 1.003783 -vt 0.078837 0.643136 -vt -0.047593 0.895083 -vt 0.081885 0.802219 -vt 0.076034 0.907037 -vt -0.025255 -0.135462 -vt 0.012451 -0.149335 -vt 0.084497 1.017502 -vt 0.725502 -0.050642 -vt 0.088525 0.598671 -vt 0.084288 0.729214 -vt 0.074957 0.866247 -vt 0.076034 0.320821 -vt 0.069821 0.294290 -vt 0.055673 0.325414 -vt -0.277553 -0.152070 -vt 0.092415 1.058502 -vt 0.090373 0.188320 -vt 0.089697 0.674002 -vt 0.061477 0.689907 -vt 0.067995 0.675526 -vt 0.094420 0.782978 -vt 0.093602 0.815605 -vt 0.092783 0.244306 -vt 0.066401 0.243258 -vt 0.081062 0.250764 -vt 0.092783 0.957624 -vt 0.085708 0.970559 -vt 1.348340 -0.443667 -vt 0.587608 -0.074401 -vt 0.623190 -0.073163 -vt 0.093710 0.575818 -vt 0.097306 0.584749 -vt 0.069435 0.271100 -vt 0.097306 0.269708 -vt 0.088525 0.285101 -vt -0.206959 0.180587 -vt -0.223887 0.191807 -vt 0.095764 0.277898 -vt 0.092268 0.932001 -vt -0.050120 1.473668 -vt -0.461104 0.065805 -vt -0.449925 0.030093 -vt -0.465569 0.050893 -vt 0.510459 0.718452 -vt 1.268795 -0.229655 -vt 1.288535 -0.236185 -vt 0.118805 1.111262 -vt 0.095108 1.106591 -vt 0.761518 -0.035433 -vt 0.092268 0.298408 -vt 0.131111 0.298222 -vt 0.264382 0.577878 -vt 0.246672 0.576832 -vt 0.218107 0.838663 -vt 0.015038 -0.122656 -vt -0.017849 -0.106362 -vt -0.005383 -0.095938 -vt 0.372203 0.647479 -vt 0.380717 0.674202 -vt 0.348793 0.657505 -vt -0.039585 1.352636 -vt -0.082280 1.351364 -vt -0.056548 1.342204 -vt -0.031085 1.340455 -vt 0.233633 0.682146 -vt 0.221790 0.693709 -vt 0.241813 0.864242 -vt 0.262088 0.889542 -vt 1.401572 -0.057727 -vt 1.388431 -0.078926 -vt 0.247867 0.800584 -vt -0.260377 0.775324 -vt -0.242789 0.778871 -vt -0.241479 0.756105 -vt 0.612855 0.093751 -vt 0.620460 0.127880 -vt 0.576590 0.103730 -vt 0.686310 0.145758 -vt 0.701495 0.171895 -vt 0.670108 0.155267 -vt 0.627619 0.110308 -vt 0.640383 0.138358 -vt 0.013678 -0.020072 -vt -0.007838 0.018067 -vt -0.013512 -0.041641 -vt -0.114000 0.531186 -vt -0.130702 0.537526 -vt -0.142195 0.510483 -vt -0.122844 0.831737 -vt -0.091927 0.813363 -vt -0.083306 0.713421 -vt -0.072901 0.690813 -vt 0.371521 0.783922 -vt 0.381939 0.811836 -vt 0.346432 0.803174 -vt 0.468881 0.599961 -vt 0.259549 0.623946 -vt 0.290278 0.621378 -vt 0.286831 0.645160 -vt -0.056822 0.972924 -vt -0.085343 0.954497 -vt 0.362426 0.566659 -vt 0.374489 0.603067 -vt 0.491615 -0.062155 -vt 0.404678 0.733448 -vt 0.418791 0.730904 -vt 0.406561 0.713830 -vt 0.329900 0.640534 -vt 0.321004 0.650585 -vt 0.341044 0.742034 -vt 0.321449 0.730069 -vt 0.342872 0.697401 -vt 0.247830 0.767832 -vt 0.228967 0.779808 -vt 0.257839 0.914862 -vt 0.283339 0.875585 -vt 0.264552 0.875678 -vt -0.172097 0.512854 -vt 1.322130 -0.413253 -vt 1.338442 -0.410680 -vt 0.228092 0.249115 -vt 0.068173 1.393321 -vt 0.063981 1.420141 -vt 0.051082 1.382581 -vt -0.327832 1.153591 -vt -0.323533 1.189273 -vt 0.356289 0.599589 -vt 0.339577 0.610957 -vt 0.332761 0.573219 -vt 0.590720 -0.008763 -vt 1.258400 -0.201129 -vt 0.232621 0.741147 -vt -0.313704 1.054858 -vt -0.295812 1.070600 -vt -0.308095 1.078971 -vt -0.297987 1.112421 -vt -0.309005 1.162245 -vt 1.143978 0.287842 -vt 1.152631 0.265747 -vt 1.179660 0.272643 -vt -0.332776 -0.353443 -vt -0.185346 0.516226 -vt 0.074952 -0.215250 -vt 0.088900 -0.230432 -vt 0.086727 -0.208546 -vt -0.310785 1.014847 -vt -0.086849 1.386014 -vt -0.067321 1.384040 -vt -0.083151 1.398044 -vt 0.241278 0.829421 -vt -0.293971 1.087770 -vt -0.312558 1.215593 -vt 0.431750 0.695923 -vt 0.268876 0.761378 -vt 0.261630 0.737611 -vt 1.037340 0.266651 -vt 1.045245 0.294306 -vt 1.031636 0.283724 -vt 1.060986 0.288704 -vt 1.102808 0.287896 -vt 1.123049 0.269201 -vt 0.865228 0.154766 -vt 0.898052 0.167557 -vt 0.887295 0.189316 -vt 0.710858 0.125974 -vt 0.713591 0.147822 -vt 0.730160 0.123534 -vt 0.749489 0.157455 -vt -0.050000 1.371975 -vt -0.091604 1.370698 -vt 0.314447 0.215743 -vt 0.293700 0.216842 -vt 0.300444 0.233170 -vt -0.297558 0.266651 -vt -0.316840 0.283724 -vt -0.314713 0.262115 -vt 1.205980 0.254197 -vt 0.882520 0.098597 -vt 0.901178 0.116081 -vt 0.958221 0.152510 -vt 0.972579 0.124925 -vt 1.009566 0.129255 -vt 0.768629 0.126273 -vt 0.786601 0.136844 -vt 1.106580 0.263160 -vt 1.175817 0.246165 -vt -0.079163 -0.148951 -vt -0.076931 -0.127414 -vt -0.068696 -0.134667 -vt 0.857201 0.182137 -vt -0.114572 0.898328 -vt -0.122365 0.931066 -vt -0.087155 0.905880 -vt 1.062259 0.265815 -vt 1.078156 0.290688 -vt 1.088066 0.248837 -vt 1.220316 0.236425 -vt -0.300225 1.229929 -vt 1.241546 0.063085 -vt 1.229233 0.057417 -vt 0.358945 1.013543 -vt 0.363132 1.035005 -vt 0.345628 1.037529 -vt -0.279344 0.218655 -vt -0.290673 0.208778 -vt 1.034997 0.218655 -vt 1.157073 0.233045 -vt 0.516167 0.679074 -vt 0.969218 0.184861 -vt 1.003929 0.176618 -vt 0.993988 0.198596 -vt 0.341990 0.977970 -vt 0.380231 0.936829 -vt 0.369984 0.978832 -vt 1.119144 0.234638 -vt 1.193077 0.223225 -vt 0.510035 0.223573 -vt 0.512189 0.205997 -vt 0.528931 0.226895 -vt -0.310785 0.204948 -vt -0.322598 0.241200 -vt 1.059839 0.234432 -vt 1.171759 0.213123 -vt 1.226770 0.205663 -vt 1.245336 0.222988 -vt 0.031162 1.413020 -vt 0.015038 1.387056 -vt 0.503099 0.621088 -vt 0.519965 0.630074 -vt 0.519317 0.649996 -vt 0.321925 0.684435 -vt 0.302571 0.676046 -vt 0.299753 0.648594 -vt 0.760166 0.179534 -vt 0.338859 0.927129 -vt 0.331102 0.961496 -vt 0.319186 0.967999 -vt 0.040981 1.467046 -vt 0.061895 1.463565 -vt 0.069926 1.488749 -vt 0.703313 -0.044257 -vt 0.865601 0.212599 -vt -0.286615 1.020050 -vt -0.290673 1.029422 -vt 1.108084 0.232590 -vt 0.605415 -0.003000 -vt 0.615946 0.025260 -vt 1.187756 0.124664 -vt 1.193353 0.169944 -vt 1.196165 0.137812 -vt 0.184061 0.500028 -vt 0.212033 0.498490 -vt 0.202465 0.519018 -vt 0.899906 0.208637 -vt 0.079281 1.417118 -vt 0.057858 1.442340 -vt 0.066751 1.379943 -vt 1.235307 -0.047864 -vt 1.087477 0.232616 -vt 1.193353 0.190428 -vt -0.280161 1.258018 -vt -0.023592 -0.067796 -vt -0.050000 -0.080341 -vt -0.039585 -0.051826 -vt -0.173593 -0.030160 -vt 0.317489 0.561491 -vt 0.303441 0.594999 -vt 0.289019 0.570060 -vt 0.325448 -0.193243 -vt 0.332579 -0.166651 -vt 0.306775 -0.172184 -vt -0.279917 1.030416 -vt -0.279917 0.200260 -vt 1.062389 0.220386 -vt 1.135609 0.218565 -vt -0.262537 1.145222 -vt -0.272018 1.175123 -vt -0.269564 1.128757 -vt -0.283117 1.181372 -vt 1.209103 0.197196 -vt -0.280021 1.236383 -vt -0.076260 0.677752 -vt 1.380900 -0.169024 -vt 1.370329 -0.141087 -vt 1.367908 -0.164386 -vt 1.041261 0.203452 -vt 1.020803 0.200260 -vt -0.273802 1.202967 -vt -0.001989 1.341721 -vt -0.004635 1.353110 -vt 0.269563 0.850610 -vt 0.253741 0.861206 -vt 0.937810 0.177548 -vt 0.758938 0.250978 -vt 0.766433 0.265521 -vt 0.720456 0.249394 -vt 0.291994 0.950502 -vt 1.383708 -0.150543 -vt 1.392715 -0.168589 -vt -0.259546 1.072002 -vt -0.230946 1.073833 -vt -0.262130 1.097090 -vt -0.230629 1.107832 -vt -0.263263 1.117697 -vt -0.240454 1.137019 -vt -0.261757 1.267773 -vt -0.117270 1.002299 -vt -0.354895 1.228488 -vt -0.386133 1.210172 -vt -0.358642 1.239079 -vt -0.075843 0.077674 -vt -0.082141 0.046976 -vt 0.052759 1.396830 -vt 0.048126 1.419785 -vt 0.927215 0.200622 -vt 0.802222 0.228180 -vt 0.785071 0.205569 -vt 0.822205 0.205386 -vt 0.317209 1.048404 -vt 0.080152 1.402328 -vt -0.258468 1.197511 -vt -0.255271 1.233092 -vt -0.255807 1.250783 -vt -0.275419 1.218716 -vt -0.219955 0.509594 -vt 0.802743 0.050973 -vt 0.225290 0.518979 -vt 0.271195 0.527961 -vt 1.502511 -0.134077 -vt 1.493024 -0.130405 -vt 1.461763 -0.143983 -vt -0.004869 1.407141 -vt -0.017849 1.384522 -vt 1.006868 0.066415 -vt 1.007323 0.037222 -vt 0.995681 0.066566 -vt -0.236717 1.174615 -vt 1.201766 0.177431 -vt 1.223479 0.185266 -vt -0.252949 1.282666 -vt -0.189566 -0.047864 -vt 0.051082 -0.130333 -vt 0.033602 -0.108072 -vt 0.333094 0.768551 -vt 0.355664 0.766633 -vt 0.338132 0.792349 -vt 0.258784 0.587205 -vt 0.272841 0.597219 -vt -0.260713 1.211380 -vt 0.034728 0.552884 -vt 0.069982 0.555690 -vt 0.022248 -0.191674 -vt 0.023776 -0.175261 -vt 0.040099 -0.200710 -vt -0.150083 1.352966 -vt -0.137462 1.343373 -vt 0.361780 0.695705 -vt 0.723240 -0.033513 -vt 0.299308 0.727185 -vt 0.309931 0.745608 -vt 0.290542 0.738896 -vt 0.016183 1.450350 -vt -0.022550 1.438841 -vt 1.282638 0.115471 -vt -0.226130 1.139059 -vt -0.235476 1.202305 -vt -0.249287 1.228803 -vt 1.219190 0.170593 -vt 1.261866 0.167655 -vt 1.241169 0.192663 -vt 1.273053 0.187556 -vt -0.258293 1.298980 -vt -0.242381 1.290842 -vt -0.241872 1.308897 -vt 0.776370 -0.193471 -vt -0.003687 -0.095884 -vt -0.001989 -0.081374 -vt -0.015547 -0.081785 -vt 0.279892 0.696387 -vt 0.296907 0.704424 -vt 0.302414 0.771562 -vt 0.039691 1.363550 -vt 0.033602 1.372226 -vt 0.019058 1.363098 -vt -0.204712 1.088737 -vt 1.231879 -0.111279 -vt 1.249307 -0.087928 -vt 1.222424 -0.101285 -vt 0.295442 0.814845 -vt 0.007658 0.981063 -vt -0.003357 0.968739 -vt -0.011312 1.005812 -vt 0.813673 0.261968 -vt 0.801670 0.277417 -vt 0.782735 0.258714 -vt 0.052605 1.371351 -vt -0.183998 -0.071609 -vt 1.483891 -0.118804 -vt 0.279641 0.591101 -vt 0.033164 1.353245 -vt 0.019058 -0.090904 -vt -0.210144 1.101375 -vt 1.098218 0.216176 -vt 1.102998 0.186540 -vt 1.129446 0.199836 -vt -0.226348 1.208370 -vt -0.225777 1.246764 -vt -0.241992 1.271480 -vt 0.177861 0.230484 -vt 0.160711 0.243257 -vt 0.147766 0.216163 -vt -0.187858 0.508734 -vt -0.153040 0.522473 -vt -0.006396 1.471376 -vt 0.601403 0.214397 -vt 0.611507 0.232358 -vt 0.585386 0.220930 -vt 0.336290 0.823286 -vt 0.322268 0.841761 -vt 0.322317 0.811283 -vt 0.508666 0.179791 -vt 0.527558 0.181938 -vt 1.079123 0.185921 -vt 1.064220 0.206776 -vt 1.040282 0.191028 -vt 1.091761 0.195758 -vt -0.203597 1.112611 -vt -0.195970 1.143440 -vt -0.209842 1.188465 -vt -0.222637 1.227020 -vt 0.704820 0.123022 -vt 0.270013 0.561124 -vt 0.280130 0.678738 -vt 0.278975 0.554099 -vt -0.123740 1.324073 -vt -0.116620 1.303381 -vt -0.207080 1.061889 -vt 1.237150 0.155163 -vt 1.259300 0.147081 -vt -0.049852 1.470258 -vt 0.723313 0.112973 -vt 0.654869 0.056062 -vt 0.697032 0.053589 -vt 1.343632 -0.108476 -vt 1.353485 -0.090904 -vt 1.343337 -0.089495 -vt 0.593454 0.171770 -vt 0.624846 0.177141 -vt 0.589975 0.191810 -vt -0.086867 -0.046319 -vt 0.590645 0.029986 -vt 0.299784 0.538544 -vt 0.332724 0.853319 -vt 0.052759 -0.190921 -vt 0.080593 -0.195733 -vt 0.016383 -0.089495 -vt 0.015823 -0.103690 -vt 1.261424 0.129020 -vt -0.287561 -0.448452 -vt -0.279723 -0.443667 -vt 0.416058 0.015938 -vt 0.423418 0.053941 -vt 0.402878 0.034726 -vt 0.387195 0.703493 -vt 0.397963 0.743650 -vt 0.376078 0.733267 -vt -0.259120 0.566559 -vt 0.330375 0.908635 -vt 1.078346 0.164411 -vt 1.101921 0.165310 -vt 1.133827 0.170213 -vt -0.189964 1.161462 -vt 1.435292 -0.117491 -vt -0.330374 1.049422 -vt -0.037514 1.444905 -vt 1.391405 -0.187766 -vt 0.399624 0.707280 -vt 0.879928 0.292475 -vt 0.873764 0.272063 -vt 0.901370 0.270580 -vt 0.014669 1.488641 -vt 0.310748 0.931945 -vt 0.319186 0.229308 -vt -0.178302 1.074387 -vt 1.052275 0.175992 -vt -0.183646 1.087960 -vt 1.178852 0.154015 -vt 1.193608 0.128779 -vt 1.198756 0.157026 -vt 1.229632 0.127091 -vt 1.217406 0.146350 -vt 0.793560 0.252940 -vt 0.826850 0.240324 -vt 0.835810 0.132303 -vt 0.607308 0.164716 -vt 0.342883 1.003601 -vt 0.355604 0.948977 -vt 1.109208 0.148545 -vt 1.139465 0.137515 -vt 1.151848 0.152522 -vt 0.261243 0.651203 -vt -0.086867 1.309864 -vt -0.054912 1.317481 -vt 0.402315 0.770867 -vt 0.800175 0.116499 -vt 0.377986 0.767772 -vt 0.356748 0.747586 -vt 0.349602 0.876092 -vt 0.563605 0.202458 -vt 0.551878 0.217292 -vt 0.533079 0.205938 -vt 0.316496 0.590302 -vt 0.322845 0.611017 -vt 1.064773 0.155364 -vt 1.078764 0.142342 -vt 0.354603 0.836463 -vt 0.375196 0.831823 -vt 1.016157 0.062235 -vt 0.808273 0.158954 -vt 1.227490 0.058966 -vt -0.143922 1.013106 -vt -0.135116 0.991858 -vt 0.857032 0.233411 -vt 0.822210 0.231862 -vt 0.362094 0.905037 -vt 0.389334 0.909519 -vt 0.328452 1.065511 -vt 0.331534 0.642482 -vt 0.349095 0.633273 -vt 0.337108 0.613874 -vt 1.317937 -0.297490 -vt 1.300650 -0.279958 -vt 1.065098 0.148984 -vt 0.000312 0.544837 -vt -0.091604 -0.064027 -vt -0.057246 -0.067818 -vt -0.114472 1.387447 -vt -0.108256 1.361319 -vt 0.590671 -0.231398 -vt 0.586562 -0.221556 -vt 0.592610 -0.214501 -vt 0.761254 0.203624 -vt 0.734037 0.201254 -vt -0.302590 1.230670 -vt -0.282139 1.242283 -vt -0.160303 1.094683 -vt -0.174810 1.088377 -vt 1.503948 -0.127354 -vt 1.495420 -0.117650 -vt -0.120648 1.284098 -vt -0.124692 1.289831 -vt -0.146481 1.268431 -vt 0.365227 -0.062609 -vt 0.345163 -0.054689 -vt 0.319434 -0.082134 -vt 0.637865 0.208481 -vt 0.088103 1.438544 -vt 0.309535 -0.050646 -vt 0.300245 -0.065107 -vt 0.312547 -0.069075 -vt 0.808867 0.178544 -vt 0.837591 0.162033 -vt -0.101475 0.536099 -vt -0.099990 0.501049 -vt -0.113500 0.506126 -vt 0.249756 0.713115 -vt -0.031085 -0.060058 -vt -0.023592 1.361340 -vt 1.187894 0.093300 -vt 0.630920 0.231680 -vt 0.662988 0.188964 -vt 0.647892 0.226603 -vt 0.686092 0.225942 -vt 0.665020 0.241701 -vt 0.340767 0.674633 -vt 0.316005 0.788414 -vt 1.451075 -0.477100 -vt 0.638918 0.086948 -vt -0.226705 -0.152338 -vt -0.196895 -0.142744 -vt -0.207329 -0.132224 -vt 0.640700 0.159244 -vt -0.419625 -0.000512 -vt 0.008415 -0.112350 -vt 0.664589 0.213343 -vt 1.380891 -0.218224 -vt 1.369574 -0.188742 -vt -0.216775 0.016736 -vt -0.230410 0.015970 -vt -0.233093 -0.013762 -vt 1.527219 -0.219365 -vt 0.016383 1.352951 -vt 0.840996 0.290192 -vt -0.186889 0.557857 -vt -0.171521 0.542284 -vt 1.368983 -0.461199 -vt 0.532323 -0.008763 -vt 0.538094 0.029986 -vt 0.756846 0.011254 -vt 0.742552 -0.022071 -vt 0.749709 -0.028755 -vt 0.400518 0.794684 -vt -0.029822 -0.085203 -vt 1.461429 -0.108844 -vt 1.460645 -0.087853 -vt 0.449764 0.134031 -vt 0.468881 0.151290 -vt 0.439850 0.160615 -vt -0.332203 1.221013 -vt -0.343524 1.236671 -vt -0.064202 0.134963 -vt 0.836885 0.104410 -vt -0.364721 -0.016774 -vt -0.352043 -0.045539 -vt -0.345184 -0.031058 -vt 0.612685 0.068678 -vt 0.061475 -0.243638 -vt 0.069829 -0.236786 -vt 0.078970 -0.247714 -vt 1.294731 -0.357882 -vt 1.291501 -0.367410 -vt 1.384207 -0.195733 -vt 0.486804 0.589092 -vt 0.939363 0.218379 -vt 0.968357 0.204937 -vt 0.344516 0.900512 -vt -0.266101 1.399498 -vt 0.541474 0.690893 -vt -0.196763 0.175284 -vt 0.022342 0.996309 -vt 0.045346 0.981281 -vt -0.379212 -0.305034 -vt -0.369331 -0.287268 -vt -0.355513 -0.302212 -vt -0.096540 1.384427 -vt 0.173919 0.525909 -vt 0.935104 0.136481 -vt 0.507466 -0.156657 -vt 0.493156 -0.127665 -vt 0.001382 0.516176 -vt 1.393182 -0.356488 -vt 0.233965 0.702434 -vt 0.774309 0.234725 -vt -0.194249 1.298278 -vt 1.446327 -0.242627 -vt 1.447531 -0.253113 -vt 0.111785 0.248249 -vt 0.563814 0.186695 -vt 0.557046 0.155154 -vt 0.732798 0.049632 -vt 0.741733 0.068463 -vt 1.481130 -0.241433 -vt 0.590117 0.078795 -vt -0.183153 1.275282 -vt 0.324187 0.181938 -vt 0.330856 0.158580 -vt 0.342545 0.155952 -vt 0.704002 0.077172 -vt 1.400982 -0.191028 -vt 1.428931 -0.208134 -vt 1.407505 -0.179936 -vt 0.412123 0.650314 -vt 0.486408 -0.074401 -vt 0.458206 -0.079399 -vt 0.423362 0.679722 -vt 0.697667 0.203576 -vt 0.854629 0.311304 -vt 0.851593 0.299684 -vt 0.875714 0.306862 -vt 0.758158 0.220695 -vt 0.417799 0.769779 -vt 0.325356 -0.088682 -vt 0.307598 -0.103859 -vt 0.244199 0.675394 -vt 1.265715 -0.004035 -vt -0.152042 1.309872 -vt 0.155397 -0.244938 -vt 0.193981 -0.237709 -vt 0.189323 -0.261467 -vt 0.379726 0.866646 -vt 1.300259 -0.000235 -vt 1.315038 -0.003395 -vt 1.331136 0.003687 -vt 1.456474 -0.080582 -vt 0.063862 0.510296 -vt 0.083612 0.522104 -vt 1.405369 -0.090732 -vt 0.358213 0.656557 -vt -0.157713 1.324651 -vt 1.325234 -0.017057 -vt 1.343353 -0.010975 -vt -0.082280 -0.037240 -vt 0.045790 0.506673 -vt 1.512444 -0.147248 -vt 1.486570 -0.177413 -vt -0.160378 1.118479 -vt -0.099020 -0.053117 -vt -0.134189 1.307571 -vt -0.159225 1.275329 -vt -0.137600 1.321519 -vt -0.145380 1.334847 -vt -0.088388 1.333346 -vt 1.347425 -0.123338 -vt -0.356620 0.928888 -vt -0.369145 0.904397 -vt -0.373882 0.933579 -vt 0.533001 0.155952 -vt 0.925558 0.052417 -vt 0.949316 0.011227 -vt -0.078068 0.514539 -vt 0.030355 -0.176083 -vt 1.025391 0.157129 -vt -0.057031 -0.251579 -vt -0.036875 -0.221556 -vt -0.024977 -0.235111 -vt 1.281217 -0.345014 -vt 1.290051 -0.365716 -vt 1.280218 -0.027744 -vt 1.258817 -0.024887 -vt 1.333760 -0.024903 -vt 0.784487 -0.101158 -vt 1.407630 -0.106726 -vt -0.128114 1.331012 -vt 0.842974 0.080752 -vt 1.457433 -0.182266 -vt 1.479135 -0.217273 -vt 0.313438 0.621121 -vt 0.326614 0.776046 -vt 0.331102 0.224129 -vt 0.740316 0.013554 -vt 0.111785 0.953517 -vt -0.115323 1.330236 -vt -0.126531 -0.033485 -vt -0.137462 -0.024903 -vt -0.128114 -0.013515 -vt 1.351088 -0.041172 -vt 1.373723 -0.026096 -vt 1.503471 -0.207517 -vt 0.735995 0.272700 -vt 0.717571 0.273436 -vt 0.028540 1.496184 -vt 1.479028 -0.162641 -vt -0.033503 0.972542 -vt -0.300225 0.937532 -vt -0.288049 0.965295 -vt -0.273588 0.952524 -vt 0.452739 -0.052711 -vt 0.836716 -0.111348 -vt -0.115323 -0.016788 -vt -0.126531 1.346823 -vt -0.121287 1.360702 -vt 0.866478 0.244023 -vt 0.843705 0.265307 -vt 0.344708 1.058323 -vt 0.313438 0.232358 -vt 0.290278 0.258201 -vt 0.279641 0.232695 -vt 0.640971 0.243720 -vt 0.638981 0.266337 -vt -0.108816 1.340765 -vt 0.120407 0.524678 -vt 0.577466 -0.235111 -vt -0.068960 1.414982 -vt -0.107128 -0.044609 -vt -0.108816 -0.023039 -vt -0.107128 1.353163 -vt 1.207496 0.043841 -vt 1.418436 -0.050517 -vt 0.099035 0.509078 -vt 1.290590 -0.138690 -vt 1.320582 -0.143875 -vt 1.295141 -0.110173 -vt 0.611764 0.258201 -vt 1.397256 -0.466313 -vt 1.434904 -0.460196 -vt 1.441906 -0.473406 -vt -0.158848 -0.014746 -vt 1.366642 -0.055115 -vt 1.377834 -0.037422 -vt 1.353936 -0.108884 -vt 0.694811 0.267571 -vt 0.272841 0.242145 -vt 0.530632 0.714434 -vt 0.548353 -0.148728 -vt 1.280536 -0.053417 -vt 1.274484 -0.036483 -vt -0.088745 1.342113 -vt -0.088745 -0.029064 -vt -0.099020 1.361653 -vt -0.107256 1.376255 -vt -0.301290 1.337620 -vt -0.300961 1.357566 -vt -0.287561 1.360052 -vt -0.336662 -0.195931 -vt 1.440736 -0.161236 -vt 0.502587 0.586203 -vt 0.611475 0.135992 -vt 0.579479 0.125479 -vt 1.397632 -0.042516 -vt 0.293771 -0.062155 -vt -0.376892 -0.332963 -vt 1.263534 -0.192648 -vt 1.256390 -0.218084 -vt 1.248858 -0.195931 -vt -0.138575 1.099187 -vt 0.528655 0.732926 -vt 1.438695 -0.370003 -vt 1.338513 -0.430513 -vt 1.318870 -0.415287 -vt 1.320924 -0.405676 -vt 1.171850 0.021747 -vt -0.057400 1.446487 -vt -0.057246 1.362633 -vt 0.672532 0.297797 -vt 0.692820 0.305748 -vt 0.684095 0.315865 -vt 0.674821 0.252282 -vt -0.210434 0.534076 -vt -0.235861 0.544429 -vt -0.221856 0.575572 -vt 0.155627 0.509263 -vt 0.786389 0.110377 -vt 0.769785 0.128671 -vt 0.794822 0.145326 -vt 1.521646 -0.153700 -vt 1.374283 -0.282716 -vt 1.350924 -0.219074 -vt 1.347361 -0.250223 -vt 0.839383 0.122952 -vt 0.822553 0.088391 -vt 0.805989 0.099210 -vt 0.836583 0.101945 -vt -0.148456 -0.087050 -vt -0.131276 -0.076428 -vt 0.957086 0.046424 -vt 0.988680 0.042785 -vt 1.310747 -0.262347 -vt 1.327384 -0.235501 -vt 1.026158 -0.031644 -vt 1.000087 0.004999 -vt -0.089036 0.109146 -vt -0.093031 0.095889 -vt -0.276827 0.164415 -vt -0.441417 0.066415 -vt -0.466801 0.044216 -vt -0.443721 0.037222 -vt -0.078248 -0.129078 -vt -0.103485 -0.124400 -vt 0.412533 -0.043245 -vt 0.400644 -0.062403 -vt 0.421938 -0.064680 -vt 0.508840 0.255373 -vt 0.513295 0.231264 -vt 0.496128 0.229058 -vt 0.629956 0.138146 -vt 0.659777 0.121253 -vt 1.347610 -0.286728 -vt 0.948437 0.109688 -vt 1.274085 0.026115 -vt 1.288094 0.030093 -vt 1.284853 0.004664 -vt 1.119835 0.096566 -vt -0.132834 -0.140402 -vt -0.113291 -0.143716 -vt -0.127296 -0.168835 -vt 0.285261 -0.138563 -vt 0.257510 -0.118539 -vt 0.281123 -0.101523 -vt 1.179726 0.101891 -vt 1.310150 -0.213809 -vt 0.544988 -0.190011 -vt 0.560861 -0.172184 -vt 0.555463 -0.156382 -vt 0.698504 -0.207682 -vt -0.081132 -0.186858 -vt -0.106382 -0.170483 -vt 0.670008 -0.211157 -vt 0.679446 -0.190442 -vt 1.264413 0.110038 -vt -0.086725 0.126862 -vt 1.284309 0.096465 -vt 0.390172 0.831835 -vt 0.363258 0.860712 -vt 0.389156 0.866774 -vt -0.102511 0.851069 -vt -0.085006 0.847652 -vt -0.090583 0.838509 -vt 1.134788 0.205099 -vt 1.115283 0.211614 -vt 1.138118 0.229798 -vt 0.520441 0.125001 -vt 0.529388 0.122900 -vt 0.529291 0.102213 -vt 0.517779 0.105876 -vt 1.428112 -0.237406 -vt 1.416735 -0.216620 -vt 1.412946 -0.230432 -vt 0.339051 0.764623 -vt 0.370055 0.785984 -vt 0.347718 0.740918 -vt 1.313238 -0.165404 -vt 0.021480 0.498387 -vt 0.045835 0.498921 -vt 0.015776 0.519899 -vt 1.052662 -0.024997 -vt 1.071713 -0.034806 -vt 1.267201 0.043785 -vt 0.703807 -0.158945 -vt 0.699883 -0.184407 -vt 0.681199 -0.154033 -vt 0.389026 0.660375 -vt 0.368097 0.636557 -vt 1.371160 -0.323409 -vt 0.698025 -0.182139 -vt 0.730986 -0.170594 -vt 0.709192 -0.164586 -vt -0.008853 -0.155066 -vt -0.022036 -0.142042 -vt -0.001231 -0.140545 -vt 0.623659 -0.185582 -vt 0.626944 -0.153636 -vt 0.606007 -0.180527 -vt 0.061372 -0.139033 -vt -0.191560 -0.059004 -vt -0.213225 -0.035801 -vt -0.184535 -0.035428 -vt 0.231086 -0.208474 -vt 0.257568 -0.193880 -vt 0.240552 -0.189885 -vt 1.332161 -0.212922 -vt 1.334633 -0.189589 -vt 0.742396 -0.179501 -vt 0.769324 -0.169967 -vt 0.762805 -0.146535 -vt 0.650782 -0.220056 -vt -0.107179 0.128824 -vt 1.393812 -0.208546 -vt -0.398291 1.090198 -vt 0.809189 0.124191 -vt 1.266943 -0.005516 -vt 0.885669 -0.028711 -vt 0.862947 -0.034167 -vt 0.843395 -0.132889 -vt 0.869991 -0.111893 -vt 0.511215 0.051509 -vt 0.510105 0.085087 -vt 0.495064 0.062901 -vt -0.109571 0.132915 -vt 1.270674 -0.137824 -vt 1.253676 -0.102184 -vt 0.020594 -0.064767 -vt 0.814125 -0.158068 -vt 0.846816 -0.164235 -vt 0.819504 -0.137052 -vt -0.202404 0.153134 -vt 0.386285 0.740600 -vt 0.390521 0.718805 -vt 0.560123 -0.100800 -vt 0.554668 -0.113771 -vt 0.574470 -0.108809 -vt 0.878542 -0.117561 -vt 0.715189 -0.016774 -vt 0.726296 -0.006826 -vt 0.737635 -0.043342 -vt 1.100108 0.170261 -vt 0.104546 0.963628 -vt 0.077797 0.947259 -vt 0.069553 0.962925 -vt -0.267685 0.510451 -vt -0.272129 0.493452 -vt -0.281005 0.493586 -vt -0.096606 -0.230717 -vt -0.069396 -0.242267 -vt -0.089774 -0.249003 -vt 0.029839 -0.175931 -vt 1.249405 0.064671 -vt 0.601953 0.127594 -vt 0.588655 0.142861 -vt -0.121137 0.698419 -vt 1.028269 -0.029518 -vt 1.035844 -0.014409 -vt 1.049357 -0.040868 -vt 0.668329 -0.173759 -vt 0.685604 -0.149553 -vt 0.704216 -0.145325 -vt -0.431942 0.037951 -vt 0.125669 1.060863 -vt 0.108068 1.097250 -vt -0.291387 -0.021320 -vt -0.282131 0.001550 -vt 0.841656 -0.021439 -vt 0.829760 -0.039113 -vt -0.076572 1.394822 -vt 0.922432 -0.020345 -vt 1.216985 0.048204 -vt 0.567212 0.067762 -vt 0.342804 -0.139818 -vt 0.352361 -0.108809 -vt 0.329200 -0.113771 -vt -0.059025 0.935125 -vt -0.021487 0.945526 -vt -0.240372 0.079798 -vt -0.215035 0.069167 -vt 0.109056 0.946078 -vt 0.278659 -0.174577 -vt 0.274875 -0.203634 -vt 0.255697 -0.189767 -vt 0.723835 -0.151984 -vt 1.115979 -0.015205 -vt 0.966882 -0.012802 -vt -0.439233 0.003559 -vt -0.467501 0.018559 -vt -0.458330 -0.014409 -vt 1.029453 0.018559 -vt 0.650762 -0.145329 -vt 1.009247 0.126707 -vt 0.997761 0.113775 -vt 0.073648 1.455343 -vt 0.089968 1.457144 -vt -0.421334 0.126707 -vt -0.439600 0.101316 -vt 0.776328 -0.144504 -vt 0.804754 -0.133293 -vt 0.798837 -0.155837 -vt 1.045822 -0.048155 -vt 1.010307 -0.089505 -vt 1.049716 -0.072678 -vt 0.330844 -0.137901 -vt 0.102855 -0.224457 -vt 0.132274 -0.219171 -vt 0.101007 -0.213400 -vt 0.329668 0.731423 -vt 0.334682 0.708118 -vt 1.404321 -0.458735 -vt 1.052124 0.108244 -vt 0.721291 -0.137897 -vt 0.690774 -0.112417 -vt 0.597268 -0.153633 -vt 0.639835 0.087760 -vt 0.625110 0.072308 -vt 0.319844 0.705703 -vt 1.360785 -0.155085 -vt 0.537264 -0.105750 -vt 0.527258 -0.103859 -vt 0.620446 0.056079 -vt 0.582433 -0.170343 -vt 0.309195 -0.156382 -vt 1.225830 0.126242 -vt 1.245944 0.128218 -vt 0.034684 -0.216440 -vt 0.049683 -0.219365 -vt 1.407228 -0.219975 -vt 0.307761 -0.132022 -vt 0.313441 -0.105750 -vt 0.669311 -0.126384 -vt 0.645604 -0.130824 -vt 0.400764 0.772418 -vt 0.416053 0.783586 -vt 0.287735 0.202561 -vt 0.302408 0.205997 -vt 0.289885 0.223573 -vt -0.438571 -0.029518 -vt 1.281244 -0.028283 -vt 0.663788 -0.092355 -vt 0.789333 -0.130440 -vt 0.271864 0.849969 -vt 0.573076 -0.139818 -vt 0.341121 -0.170343 -vt 1.005692 -0.029978 -vt 0.929416 -0.121194 -vt 0.607121 -0.124101 -vt 0.606594 -0.103267 -vt 0.591288 -0.108234 -vt -0.049914 -0.082898 -vt 1.367418 -0.344412 -vt 0.214953 -0.263952 -vt 0.192514 -0.273925 -vt 0.795861 -0.179743 -vt 0.780448 -0.146122 -vt 0.192514 0.900017 -vt 0.214953 0.895094 -vt 0.199473 0.873742 -vt 1.278636 -0.264491 -vt 1.341140 -0.033205 -vt 1.316815 -0.036630 -vt 1.319705 -0.019870 -vt 0.743531 -0.014037 -vt -0.108833 0.233082 -vt 0.148560 -0.205341 -vt 0.385356 0.914971 -vt 0.371330 0.892842 -vt 0.345811 0.915384 -vt 0.515422 0.138024 -vt 0.525699 0.145840 -vt 0.660044 -0.142946 -vt 0.643500 -0.144606 -vt 0.637065 -0.133431 -vt 0.150025 1.021984 -vt 0.167254 0.999198 -vt 0.115382 1.009941 -vt 0.942776 -0.107360 -vt -0.394718 1.055513 -vt -0.374857 1.043761 -vt 0.252637 0.528246 -vt 0.286693 0.560432 -vt 0.257568 0.512739 -vt 0.054023 0.944592 -vt 0.154161 -0.217204 -vt 0.088797 0.238765 -vt 0.058333 0.263551 -vt 0.068231 0.235230 -vt 0.069617 0.939366 -vt 1.395108 -0.382312 -vt 0.636526 0.071526 -vt -0.198014 0.067762 -vt 0.801331 -0.109242 -vt 0.773972 -0.132078 -vt 0.510182 0.099540 -vt 0.510934 0.132267 -vt 0.499859 0.105775 -vt -0.316228 -0.065881 -vt -0.292862 -0.068572 -vt -0.309904 -0.042595 -vt 1.360269 -0.368848 -vt 0.766204 0.053672 -vt 1.357622 -0.189603 -vt 0.687595 -0.083879 -vt 0.185703 -0.200973 -vt 0.362333 0.734167 -vt 0.377015 0.752009 -vt 0.054322 -0.221704 -vt 0.026129 -0.225677 -vt 0.028976 0.956986 -vt 0.047518 0.965780 -vt -0.091372 0.865583 -vt -0.068844 0.860723 -vt 1.271383 -0.107092 -vt 1.254676 -0.014746 -vt 0.202465 -0.138929 -vt -0.088145 0.244023 -vt -0.337910 -0.332479 -vt -0.326258 -0.328948 -vt 0.619224 -0.003223 -vt 0.635656 -0.013762 -vt 0.611436 -0.038310 -vt 0.492505 -0.101267 -vt 0.540344 0.127315 -vt 0.009753 -0.091687 -vt 0.604261 -0.196546 -vt 0.587357 -0.193243 -vt -0.279263 0.127315 -vt -0.237180 0.070149 -vt -0.221805 0.134871 -vt 0.579004 0.134871 -vt 0.572392 0.109975 -vt 0.626248 -0.103231 -vt 0.641018 -0.094942 -vt 0.195759 -0.098190 -vt 0.177250 -0.072306 -vt -0.131062 0.495030 -vt -0.119248 0.495117 -vt 0.325208 0.966068 -vt 0.345702 0.943147 -vt 0.309815 0.959441 -vt 0.350513 0.714709 -vt 0.373897 0.707638 -vt 0.356249 0.677874 -vt 0.375480 0.677943 -vt 0.306638 -0.148728 -vt 1.286395 -0.283532 -vt 1.276278 -0.268784 -vt 0.374067 0.810735 -vt 0.383289 0.805474 -vt 1.159458 0.199468 -vt 0.943116 -0.025628 -vt 0.307598 0.536871 -vt -0.360724 -0.415920 -vt 0.009389 1.027553 -vt -0.029630 1.023733 -vt -0.006927 1.048329 -vt 0.268270 -0.167725 -vt 0.249738 -0.178720 -vt 0.299001 -0.083253 -vt 0.394792 0.695217 -vt 0.411569 0.678924 -vt 0.205629 -0.197548 -vt 0.079475 0.280790 -vt 0.043161 0.280711 -vt -0.124692 -0.027744 -vt 0.356599 0.689059 -vt 0.518228 -0.187329 -vt 0.289885 0.519648 -vt 0.941725 0.104380 -vt -0.101041 1.290149 -vt -0.081804 1.302441 -vt 0.868949 0.100148 -vt 0.857334 0.072408 -vt -0.021127 0.565917 -vt -0.057031 0.566184 -vt -0.024977 0.587080 -vt 0.190952 -0.217119 -vt 0.495630 -0.167725 -vt -0.106965 0.833297 -vt 0.503125 -0.193880 -vt 0.064145 -0.178727 -vt 1.246149 0.097718 -vt 1.251970 0.107477 -vt 0.146500 0.887295 -vt 0.120293 0.890582 -vt 0.131154 0.918094 -vt 0.569103 -0.194417 -vt -0.314180 -0.197541 -vt 0.297570 -0.194417 -vt 0.677135 -0.076586 -vt 0.651223 -0.088764 -vt 0.076058 1.473320 -vt 0.086282 1.485691 -vt 0.912140 0.093837 -vt -0.056789 -0.132045 -vt 0.203307 0.141381 -vt 1.221794 0.088181 -vt -0.249891 0.043981 -vt 0.421411 0.560354 -vt 1.267356 0.079410 -vt 0.899732 0.050067 -vt 0.076820 1.496076 -vt 0.061475 1.521222 -vt 0.078970 1.506171 -vt 0.550819 -0.205561 -vt -0.053166 0.491624 -vt -0.070706 0.492253 -vt -0.058608 0.502090 -vt 0.590678 0.063150 -vt 0.323892 -0.055017 -vt -0.057778 -0.217961 -vt 0.535586 0.063150 -vt 0.531701 0.078795 -vt 0.494554 0.086552 -vt -0.388444 0.007595 -vt -0.106776 0.871403 -vt 0.123262 0.511074 -vt 0.524664 0.076564 -vt 0.515859 0.083852 -vt 0.531883 0.088647 -vt -0.365067 -0.055340 -vt -0.303896 0.053919 -vt -0.311362 0.106892 -vt -0.328037 0.113003 -vt 1.309968 -0.086037 -vt 1.479658 -0.457996 -vt -0.437918 0.075329 -vt -0.081602 0.062524 -vt -0.053116 0.061195 -vt -0.352399 -0.372480 -vt -0.346271 -0.267435 -vt 1.117002 0.145885 -vt 1.135597 0.161260 -vt 0.527910 0.080083 -vt 0.528655 0.112973 -vt 0.550479 0.082710 -vt 1.389885 -0.467620 -vt 1.517919 -0.228253 -vt -0.030025 0.292352 -vt -0.054709 0.298330 -vt -0.036394 0.308177 -vt 0.562199 0.044364 -vt 0.551044 0.013554 -vt 0.544822 0.054807 -vt 0.516626 0.098833 -vt 0.530677 0.052460 -vt 0.634710 0.180020 -vt 0.653882 0.160829 -vt 0.530283 0.010874 -vt 0.503588 0.078405 -vt -0.361185 0.131468 -vt -0.373708 0.177404 -vt -0.355202 0.181164 -vt -0.337577 0.151482 -vt 0.549128 -0.015475 -vt -0.336800 -0.103585 -vt -0.348260 -0.081255 -vt 1.130120 0.051781 -vt 1.149435 0.016310 -vt 0.511724 0.045551 -vt 0.515995 0.002290 -vt 0.471575 0.095764 -vt 0.460222 0.112799 -vt 0.495315 0.743052 -vt 0.023312 0.695069 -vt 0.485499 0.038814 -vt 0.477721 0.071140 -vt 0.738086 0.097597 -vt 0.721676 0.112799 -vt 0.462313 0.097597 -vt 0.462313 0.747700 -vt 0.471575 0.743181 -vt -0.212655 0.142861 -vt 0.480235 0.032029 -vt 0.475786 0.054887 -vt 0.745270 0.071140 -vt 0.755903 0.054887 -vt -0.187587 -0.017325 -vt -0.215287 -0.014137 -vt -0.261346 0.136484 -vt 1.169451 0.148120 -vt 0.107483 0.315082 -vt 1.293886 -0.070527 -vt 0.532144 0.144307 -vt 0.561187 0.164415 -vt 0.484370 -0.015755 -vt 0.475329 0.011254 -vt 0.471369 0.053672 -vt 0.755390 0.032029 -vt 1.140137 -0.018787 -vt -0.284800 -0.044581 -vt -0.044919 -0.041893 -vt -0.050777 -0.015949 -vt 1.383684 -0.234515 -vt 1.372837 -0.181414 -vt -0.445384 0.138013 -vt -0.301163 -0.181414 -vt -0.317334 -0.138199 -vt -0.302624 -0.140097 -vt -0.271390 0.121144 -vt -0.289502 0.146020 -vt 1.267528 -0.078376 -vt -0.313392 0.199654 -vt -0.089261 0.005902 -vt -0.110739 0.035957 -vt 1.470024 -0.470439 -vt -0.263674 0.055140 -vt 1.460726 -0.373757 -vt 1.475643 -0.400860 -vt 1.464417 -0.397365 -vt -0.095931 -0.071389 -vt -0.100904 -0.018644 -vt -0.082208 -0.028867 -vt -0.098017 0.068400 -vt -0.304239 0.963179 -vt -0.333796 1.003759 -vt -0.265250 0.538904 -vt -0.250126 0.541497 -vt -0.252754 0.525472 -vt -0.243992 -0.121671 -vt -0.226016 -0.116086 -vt -0.059097 -0.041675 -vt -0.241872 0.157158 -vt -0.263206 0.171073 -vt -0.058369 -0.080052 -vt 1.446366 -0.349173 -vt 1.438052 -0.354424 -vt -0.321196 0.182574 -vt -0.142379 0.051781 -vt -0.131422 0.067686 -vt -0.144989 0.072815 -vt -0.138639 -0.001703 -vt -0.145014 0.028961 -vt -0.129811 0.020850 -vt -0.154580 -0.041592 -vt -0.145902 -0.030373 -vt -0.324100 -0.439990 -vt -0.230038 0.108946 -vt -0.217543 0.075732 -vt -0.144989 1.132339 -vt -0.147641 1.125004 -vt -0.131422 1.129299 -vt -0.353422 -0.110490 -vt 1.139490 0.081084 -vt -0.283328 -0.430419 -vt -0.455158 0.096465 -vt 1.135436 -0.001703 -vt 1.139210 0.028961 -vt -0.319092 0.158046 -vt -0.014196 -0.127354 -vt -0.106138 0.097022 -vt -0.142151 0.096801 -vt -0.361279 -0.176843 -vt -0.018453 -0.117650 -vt 0.153892 0.309383 -vt -0.160303 0.126147 -vt -0.257962 0.193015 -vt -0.257419 0.013569 -vt -0.030183 0.819088 -vt -0.040776 0.840289 -vt -0.026448 0.855586 -vt -0.174401 1.382140 -vt -0.159097 1.401339 -vt -0.132724 1.390250 -vt -0.291544 0.101780 -vt 1.338092 -0.168808 -vt 1.320377 0.018570 -vt -0.365204 -0.142098 -vt 1.322256 -0.079182 -vt 0.763198 0.077490 -vt 1.474782 -0.098064 -vt 1.484243 -0.107226 -vt -0.268090 -0.034511 -vt -0.270752 -0.018032 -vt -0.255518 -0.019870 -vt -0.404361 0.165987 -vt 0.895098 -0.019348 -vt 0.230875 -0.104689 -vt 0.202940 -0.075575 -vt 0.217704 -0.107242 -vt 1.274006 0.159167 -vt -0.114851 -0.050888 -vt 0.057559 -0.228253 -vt -0.189566 1.244921 -vt 0.458323 0.037137 -vt 1.115391 0.079382 -vt 1.122726 0.072815 -vt -0.147641 0.079382 -vt -0.061766 1.078917 -vt 1.037370 0.105036 -vt -0.151190 -0.041695 -vt -0.252474 -0.004924 -vt -0.014196 1.513561 -vt -0.302590 -0.117714 -vt -0.163926 -0.041637 -vt -0.154419 -0.018787 -vt -0.243095 -0.009201 -vt 1.404552 -0.293693 -vt 1.039823 0.069857 -vt -0.435759 0.004664 -vt 1.058368 0.120695 -vt 1.508648 -0.236786 -vt 1.048710 0.151614 -vt -0.156350 0.104449 -vt 1.103133 0.096801 -vt -0.027174 -0.055598 -vt 0.067912 1.430530 -vt 1.043514 0.196611 -vt 1.050539 0.008646 -vt 1.062996 0.083247 -vt -0.252595 0.076564 -vt 0.336067 0.120536 -vt 0.344708 0.151614 -vt 0.359752 0.120695 -vt 0.328452 0.155752 -vt -0.341221 -0.145876 -vt -0.153609 0.016310 -vt -0.367622 -0.400860 -vt 1.065709 -0.004476 -vt 1.084775 0.041158 -vt 0.365231 0.083247 -vt 0.319105 0.077517 -vt 0.618655 0.018907 -vt -0.375171 -0.349173 -vt 0.465831 0.108965 -vt 0.502587 0.103730 -vt 0.486804 0.125479 -vt 0.345220 0.041158 -vt 0.305182 0.146757 -vt -0.291383 -0.118009 -vt -0.333698 -0.440694 -vt 0.020586 0.929742 -vt -0.216975 0.114751 -vt 0.047301 0.318342 -vt 0.037111 0.291348 -vt 0.028697 0.513059 -vt -0.053427 -0.095115 -vt -0.037661 -0.098064 -vt -0.227082 0.130681 -vt 1.139693 -0.041637 -vt 0.769519 0.242983 -vt 0.748748 0.222541 -vt 0.377866 -0.048155 -vt 0.340447 -0.012634 -vt 0.365608 -0.004476 -vt 0.305125 0.101785 -vt 0.289813 0.159069 -vt 0.297421 0.168870 -vt 0.200538 -0.034326 -vt 0.195526 -0.011184 -vt 0.183549 -0.034542 -vt 0.144884 0.278567 -vt 0.810456 -0.037039 -vt 0.061764 -0.155085 -vt 0.315033 0.015105 -vt 1.050557 0.160425 -vt 0.152774 0.248414 -vt 0.336706 -0.080864 -vt 0.276701 0.131925 -vt 0.266568 0.158479 -vt 0.256690 0.184340 -vt -0.001791 -0.155429 -vt -0.306411 -0.005889 -vt 0.281770 0.110780 -vt 0.130670 0.244334 -vt 0.312358 -0.040079 -vt 0.287605 0.050151 -vt 0.278258 0.079452 -vt -0.032077 1.471042 -vt -0.375770 -0.373757 -vt 0.588586 0.169643 -vt 0.245055 0.170469 -vt 1.502249 -0.142042 -vt 1.511657 -0.155066 -vt 1.484788 -0.160105 -vt 0.543210 0.200999 -vt 0.547390 0.175460 -vt 0.513174 0.180052 -vt 1.262964 -0.039721 -vt 0.311708 -0.091715 -vt 0.246864 0.136180 -vt 1.127112 -0.030736 -vt -0.050641 0.053651 -vt 0.213632 0.181814 -vt 0.775839 0.098344 -vt -0.118092 0.973108 -vt 0.492063 -0.148003 -vt 0.473399 0.731047 -vt 0.244829 0.862988 -vt -0.278166 -0.111279 -vt -0.357598 0.922656 -vt -0.342472 0.890772 -vt 0.289813 1.094746 -vt -0.084911 1.414244 -vt 0.735778 0.012230 -vt -0.234435 1.335272 -vt 0.651678 0.229920 -vt -0.053044 0.234185 -vt -0.057270 0.209576 -vt -0.073090 0.219343 -vt 0.010789 0.754380 -vt 0.682763 0.248608 -vt 0.648777 0.277880 -vt 0.685456 0.286810 -vt 0.024952 0.906978 -vt -0.041465 0.227263 -vt -0.040911 0.199699 -vt 0.536883 0.236233 -vt 0.556945 0.235085 -vt -0.072838 0.245790 -vt -0.088461 0.244432 -vt -0.040911 0.620558 -vt -0.365274 -0.087446 -vt -0.073126 0.529885 -vt -0.074136 0.542760 -vt -0.031827 0.773434 -vt -0.042274 0.806909 -vt -0.013996 0.791027 -vt 1.196746 0.223613 -vt 1.206304 0.199573 -vt 0.000932 0.894196 -vt -0.017741 0.862122 -vt -0.071066 0.159540 -vt 0.008461 0.284623 -vt 0.024952 0.302240 -vt -0.025106 0.657567 -vt 0.504562 0.201812 -vt -0.203073 -0.058177 -vt 0.049014 1.481862 -vt 0.058036 1.509674 -vt 1.418700 -0.287268 -vt -0.260409 -0.092228 -vt -0.270924 -0.112523 -vt -0.233810 -0.098052 -vt -0.072327 0.273807 -vt 0.601958 0.189674 -vt 0.619468 0.195886 -vt 0.005652 -0.179588 -vt 0.006894 -0.158740 -vt 0.791647 0.305778 -vt 0.816092 0.315348 -vt 0.821448 0.277824 -vt 0.484253 0.032690 -vt 0.485455 0.046976 -vt 0.498394 0.044529 -vt 0.668191 0.209468 -vt 0.689713 0.192484 -vt -0.264695 0.926530 -vt 0.752400 0.279007 -vt 0.787469 0.263500 -vt -0.094807 -0.145961 -vt -0.026310 0.254182 -vt -0.001837 0.260421 -vt -0.000977 0.251661 -vt 0.367168 -0.031564 -vt 0.380686 -0.055825 -vt 0.647954 0.207101 -vt 1.232670 -0.122234 -vt 1.211248 -0.108857 -vt -0.328882 0.850291 -vt -0.017948 1.429669 -vt 1.372907 -0.176843 -vt -0.016794 0.514618 -vt -0.032350 0.633706 -vt -0.023731 0.620040 -vt -0.237501 0.124675 -vt -0.244392 0.101667 -vt -0.231325 0.098489 -vt -0.121753 1.435401 -vt -0.103485 1.453532 -vt -0.096847 0.547172 -vt -0.078221 0.564532 -vt -0.088461 0.570467 -vt 1.352847 -0.181666 -vt 1.354727 -0.161440 -vt -0.013636 0.825706 -vt -0.072838 0.583674 -vt 0.884583 0.295677 -vt 0.889138 0.279529 -vt 0.852509 0.297233 -vt -0.166829 -0.054125 -vt 0.506010 0.238577 -vt 0.517770 0.259120 -vt 0.537559 0.251333 -vt 0.846454 0.241488 -vt 0.037238 -0.124631 -vt 0.058699 -0.160552 -vt 1.350360 -0.142098 -vt -0.369750 -0.161440 -vt 0.720702 0.302226 -vt 0.712953 0.262944 -vt -0.059525 0.583977 -vt 0.551784 0.273807 -vt 0.554919 0.258393 -vt 0.534092 0.261197 -vt 0.859757 0.275479 -vt 0.863554 0.244257 -vt -0.341013 0.812738 -vt -0.257653 0.518454 -vt -0.270081 0.546496 -vt -0.091604 0.216184 -vt -0.176198 0.699327 -vt -0.194230 0.718630 -vt -0.191826 0.696050 -vt -0.007329 0.304083 -vt -0.186562 0.681112 -vt 0.751661 0.251357 -vt -0.059525 0.252873 -vt -0.078221 0.258393 -vt 0.647492 0.094512 -vt 0.330285 -0.019531 -vt 0.310613 -0.000252 -vt 0.326613 -0.034443 -vt 0.533146 0.286491 -vt 0.020586 0.253017 -vt -0.207793 0.121253 -vt -0.215304 0.127435 -vt -0.214764 0.108371 -vt -0.206212 0.094512 -vt 0.045835 -0.185989 -vt 0.013733 1.494074 -vt -0.004307 1.474973 -vt -0.007394 1.496891 -vt 0.560853 0.244432 -vt 0.545443 0.231051 -vt -0.105908 0.621501 -vt -0.081102 0.639215 -vt 0.744767 0.302226 -vt 0.765505 0.300234 -vt -0.431583 0.159167 -vt -0.006873 0.279529 -vt 0.000932 0.295677 -vt 0.669404 0.142524 -vt 0.061372 1.369374 -vt 1.315681 -0.087446 -vt 1.313236 -0.102123 -vt 1.341029 -0.110490 -vt -0.397607 1.072513 -vt -0.043241 0.062901 -vt 0.492591 0.074280 -vt -0.126035 1.409689 -vt -0.014827 0.801261 -vt 0.305874 0.179791 -vt -0.212968 0.150553 -vt -0.204803 0.142524 -vt 0.528453 0.164549 -vt 0.624093 0.197187 -vt 0.610426 0.214591 -vt 0.069821 0.927873 -vt 0.376775 0.537305 -vt 0.365227 0.523408 -vt 0.345209 0.543166 -vt -0.424926 1.242115 -vt -0.175902 0.729344 -vt 0.553565 0.224030 -vt -0.065421 0.200054 -vt -0.375111 0.863460 -vt 0.511260 0.155681 -vt 0.497475 0.159751 -vt -0.433818 1.083732 -vt -0.410544 1.098648 -vt -0.432690 1.113030 -vt -0.296850 1.151025 -vt -0.260418 1.164629 -vt -0.434664 1.148633 -vt -0.246164 0.147013 -vt 0.018521 0.730316 -vt -0.413948 1.064355 -vt -0.194857 1.325062 -vt -0.167836 1.335803 -vt -0.181774 1.305976 -vt -0.218675 0.080806 -vt -0.201792 0.087760 -vt -0.201141 0.071526 -vt 0.091883 -0.219975 -vt 0.146564 0.077737 -vt 0.151945 0.093781 -vt 0.137599 0.076025 -vt 0.520673 -0.035045 -vt 0.514303 -0.054278 -vt 0.496205 -0.048127 -vt 0.711653 -0.045539 -vt 0.730673 -0.060284 -vt -0.312281 1.328483 -vt -0.311683 1.348126 -vt 0.575926 0.216184 -vt -0.050247 0.985939 -vt -0.460766 1.098872 -vt -0.445997 1.140534 -vt -0.424926 0.219929 -vt -0.380062 0.825318 -vt -0.442650 1.060419 -vt -0.427398 1.164153 -vt -0.428601 1.212129 -vt 0.506141 -0.029514 -vt -0.294548 -0.078025 -vt -0.275777 -0.074015 -vt -0.346608 -0.155354 -vt 0.031563 -0.165755 -vt -0.076931 0.610108 -vt -0.099616 0.606074 -vt -0.301859 1.378109 -vt -0.275486 1.378596 -vt -0.187858 0.258824 -vt -0.219955 0.263227 -vt -0.225007 0.247332 -vt -0.213756 0.748365 -vt -0.127410 0.610651 -vt 0.493128 -0.016265 -vt 0.520628 -0.027253 -vt 0.513443 -0.014792 -vt 0.531533 -0.028696 -vt 0.547797 -0.041007 -vt -0.369381 0.978474 -vt 0.502269 0.142480 -vt 0.504247 0.126922 -vt -0.110743 0.515623 -vt -0.119986 0.508527 -vt -0.108833 0.502911 -vt 0.778248 0.163658 -vt 0.755718 0.175502 -vt 0.815705 0.187000 -vt -0.403805 1.202907 -vt 0.664768 0.296817 -vt 0.521573 0.231882 -vt -0.382474 0.783232 -vt -0.381015 0.803039 -vt -0.350568 0.784105 -vt -0.134923 0.646353 -vt -0.072327 0.561397 -vt 1.103417 0.275807 -vt 1.139020 0.276378 -vt 1.130921 0.258183 -vt 0.523126 -0.002101 -vt 0.507148 0.000940 -vt 0.543668 -0.008809 -vt 0.532503 -0.052943 -vt -0.068696 0.608970 -vt -0.068599 0.625110 -vt -0.262936 0.872992 -vt -0.266870 0.831530 -vt -0.322681 -0.008809 -vt -0.306138 -0.020187 -vt 0.838742 0.321513 -vt 1.017165 -0.049191 -vt 1.034407 -0.064213 -vt 1.014252 -0.063401 -vt 0.511803 0.112876 -vt -0.368787 0.928835 -vt -0.087672 0.021653 -vt -0.011318 0.507656 -vt -0.132573 0.719062 -vt -0.069258 0.646679 -vt -0.387048 0.847376 -vt 0.915389 0.100866 -vt -0.311601 0.918905 -vt -0.099616 -0.131372 -vt 0.490644 0.142334 -vt 1.154539 0.277716 -vt 1.171253 0.254451 -vt 0.492099 0.180275 -vt 0.493357 0.202147 -vt 0.548299 0.016919 -vt -0.295305 0.016919 -vt -0.229304 0.583840 -vt -0.200483 0.580198 -vt -0.196420 0.600253 -vt 0.874388 0.119671 -vt 0.887547 0.254182 -vt -0.200483 0.055607 -vt -0.229304 0.025089 -vt 0.925019 0.134180 -vt 1.202516 0.244302 -vt -0.333968 0.532739 -vt -0.339064 0.516761 -vt -0.295305 0.557912 -vt 0.094929 1.437726 -vt -0.044553 0.503982 -vt 0.510001 0.037736 -vt 0.493551 0.023207 -vt -0.127295 0.857190 -vt 0.900624 0.147856 -vt 0.187074 0.003846 -vt 0.176877 0.010899 -vt 0.175698 -0.029798 -vt 1.257015 0.156873 -vt 0.032351 0.245416 -vt -0.144277 -0.100365 -vt -0.142195 0.245930 -vt -0.174207 0.245088 -vt 0.534278 0.033955 -vt -0.088230 0.543705 -vt -0.076169 0.655792 -vt -0.460669 1.075048 -vt 0.821599 0.151912 -vt 0.862547 0.146519 -vt 0.974247 0.150836 -vt -0.023607 0.513898 -vt -0.003873 0.511613 -vt -0.023202 0.502052 -vt -0.281107 0.522909 -vt 0.986224 0.146601 -vt 0.022350 0.658391 -vt 0.126357 0.247734 -vt 0.486322 -0.210376 -vt 0.494362 -0.205699 -vt 0.498144 -0.215339 -vt 0.787400 -0.190038 -vt 0.803750 -0.204038 -vt 0.782696 -0.200913 -vt -0.293695 0.033955 -vt -0.277789 0.041785 -vt -0.126700 0.954955 -vt 0.075862 0.499501 -vt 0.085762 0.521838 -vt -0.308496 0.519615 -vt -0.280958 0.508099 -vt -0.293695 0.543891 -vt 0.878472 0.171587 -vt 0.913290 0.175744 -vt -0.348724 0.765331 -vt -0.376009 0.999080 -vt -0.396479 0.922903 -vt 1.228840 0.198351 -vt 1.265154 0.178613 -vt -0.302338 0.506590 -vt -0.295453 0.499393 -vt -0.277789 0.548605 -vt -0.246883 0.005719 -vt 0.590030 0.010182 -vt 0.583187 -0.009734 -vt 0.567285 0.222582 -vt 0.563244 0.200121 -vt -0.031145 -0.255848 -vt -0.023202 -0.253301 -vt -0.033029 -0.236354 -vt -0.288973 1.129178 -vt -0.330835 1.138791 -vt -0.272664 0.200121 -vt -0.236548 -0.033205 -vt -0.229185 0.010182 -vt -0.289854 0.512668 -vt -0.031145 0.498017 -vt 0.837762 0.188522 -vt 0.498486 0.067375 -vt 0.522414 0.064888 -vt 0.538991 0.041785 -vt -0.266856 0.064888 -vt 0.574227 0.025089 -vt 0.574889 0.005719 -vt -0.196895 0.723424 -vt -0.226705 0.734684 -vt 0.885470 -0.226087 -vt 0.852293 -0.238348 -vt 0.851110 -0.228879 -vt 0.535670 -0.069045 -vt 0.539226 -0.084841 -vt 0.523840 -0.094375 -vt 0.371902 0.547724 -vt 0.342545 0.542615 -vt -0.093935 0.493991 -vt -0.084517 0.504357 -vt 1.276579 -0.307278 -vt -0.426480 0.178613 -vt -0.106716 0.493410 -vt -0.187230 0.579454 -vt -0.209552 0.592708 -vt -0.187439 0.615499 -vt 1.055588 0.221758 -vt 1.041383 0.248040 -vt 1.065435 0.254803 -vt 1.089258 0.256484 -vt 1.232502 0.219929 -vt -0.248689 0.506376 -vt -0.216093 0.876222 -vt -0.193095 0.902968 -vt -0.185024 0.879992 -vt 0.853847 0.203402 -vt 0.997621 0.137718 -vt 0.507540 0.081687 -vt -0.265548 0.081687 -vt -0.068491 0.669658 -vt 0.919221 0.197120 -vt -0.400094 0.888085 -vt -0.170821 1.361364 -vt 1.050806 0.265667 -vt -0.265548 0.517153 -vt -0.252595 0.534277 -vt -0.229185 0.599644 -vt -0.211968 0.628268 -vt -0.317953 0.842212 -vt -0.279537 0.821658 -vt -0.314872 0.814469 -vt 0.913043 0.210811 -vt 0.968861 0.181843 -vt 0.558324 -0.020187 -vt 0.107693 1.046661 -vt -0.278737 1.479637 -vt -0.269392 1.460688 -vt -0.293302 1.472090 -vt 0.107693 -0.173821 -vt 0.136738 -0.184162 -vt 0.097679 -0.193905 -vt 0.075378 -0.175198 -vt 0.228657 1.074563 -vt 0.202981 1.072689 -vt 0.199877 1.094886 -vt -0.063610 1.005730 -vt 0.125858 -0.197464 -vt 0.215150 -0.088924 -vt 1.368495 -0.449679 -vt 1.400259 -0.437220 -vt 0.174825 -0.217112 -vt 0.208253 -0.218791 -vt 0.256042 -0.090949 -vt 0.216578 -0.116354 -vt 0.207842 -0.206722 -vt 1.411261 -0.419563 -vt -0.333698 1.496757 -vt -0.313001 1.476483 -vt 1.436304 -0.420383 -vt 1.466870 -0.455520 -vt -0.327357 1.445917 -vt -0.343763 1.462507 -vt -0.354818 1.478791 -vt 1.353595 -0.396352 -vt -0.369147 1.472542 -vt 1.381159 -0.385427 -vt 1.407575 -0.389819 -vt 1.436961 -0.394674 -vt 1.452893 -0.416146 -vt -0.343763 -0.416146 -vt -0.349000 -0.394674 -vt -0.369147 -0.409109 -vt 1.462928 -0.409109 -vt -0.349000 1.446574 -vt -0.375760 1.462935 -vt 1.453321 -0.396289 -vt 1.307123 -0.378572 -vt 1.335162 -0.354915 -vt 1.440336 -0.380180 -vt 1.450542 -0.382971 -vt -0.377320 -0.380180 -vt -0.375760 -0.396289 -vt 0.289396 0.944704 -vt 0.274875 0.962739 -vt 1.419151 -0.371783 -vt -0.351492 -0.371783 -vt 1.394339 -0.349427 -vt -0.381849 -0.367302 -vt 1.432011 -0.367302 -vt 1.362469 -0.342537 -vt -0.358613 -0.361118 -vt 1.295966 -0.108190 -vt -0.346082 -0.349427 -vt 1.418549 -0.351321 -vt 1.433933 -0.360048 -vt -0.380475 -0.351321 -vt -0.346082 1.403953 -vt -0.380475 1.428163 -vt -0.358613 1.424655 -vt 1.319244 -0.325136 -vt -0.355928 -0.334720 -vt 1.415705 -0.336593 -vt 1.368133 -0.319471 -vt 1.393047 -0.334720 -vt -0.383685 -0.329815 -vt 1.405688 -0.329815 -vt 1.402670 -0.315243 -vt -0.385070 -0.360048 -vt -0.383868 -0.354424 -vt 1.159141 0.173274 -vt 1.318194 -0.297167 -vt 1.376519 -0.312447 -vt -0.295899 0.138024 -vt -0.283985 0.125001 -vt -0.287511 0.112876 -vt 0.353866 0.895168 -vt 0.334854 0.877118 -vt 0.150538 -0.064914 -vt 0.163034 -0.110479 -vt 0.136339 -0.098554 -vt -0.317510 1.087672 -vt -0.285256 1.081018 -vt -0.302210 1.067260 -vt -0.355450 -0.312447 -vt -0.378729 -0.308095 -vt 1.389077 -0.308095 -vt 0.082953 -0.106957 -vt 0.111116 -0.121705 -vt 0.079616 -0.132729 -vt 0.742749 -0.015755 -vt -0.121554 -0.107883 -vt 0.108068 -0.134566 -vt 0.096680 -0.152592 -vt 1.347821 -0.280283 -vt 1.391162 -0.298702 -vt 0.223662 -0.130449 -vt 0.316331 1.046321 -vt 0.325401 1.024596 -vt 0.295014 1.020910 -vt 1.363408 -0.285886 -vt -0.358853 -0.285886 -vt -0.383655 -0.288727 -vt 1.381470 -0.288727 -vt 0.193089 -0.098674 -vt -0.055038 0.784788 -vt 0.775175 -0.284146 -vt 0.800606 -0.274274 -vt 0.797295 -0.297693 -vt 0.830676 -0.296903 -vt 0.855837 -0.273599 -vt 0.845972 -0.302589 -vt -0.334854 -0.297163 -vt -0.353764 -0.268784 -vt -0.345919 -0.307278 -vt 1.308849 -0.275616 -vt 0.357606 1.025828 -vt 0.349182 0.994462 -vt 0.330505 1.002610 -vt -0.032644 0.734820 -vt -0.000055 0.704129 -vt -0.017398 0.704922 -vt 0.725206 -0.284145 -vt 0.736563 -0.268761 -vt 0.745062 -0.294436 -vt 0.782039 -0.268201 -vt 0.829035 -0.267147 -vt 0.883191 -0.266090 -vt 0.865794 -0.291954 -vt 1.329652 -0.262141 -vt 1.379525 -0.266969 -vt 0.069617 -0.225654 -vt 0.111057 -0.228808 -vt 0.079839 -0.269755 -vt 0.711226 -0.262769 -vt 0.695309 -0.280419 -vt -0.030756 -0.072208 -vt -0.380560 -0.260035 -vt 1.365073 -0.260035 -vt 0.203033 1.042668 -vt 0.229582 1.047048 -vt 0.665110 -0.265483 -vt -0.359808 -0.247039 -vt 1.343341 -0.247039 -vt 0.006938 0.667635 -vt -0.017556 0.646960 -vt -0.023582 0.674724 -vt 0.677533 -0.248788 -vt 0.697356 -0.244494 -vt 0.725765 -0.250092 -vt 0.764487 -0.254161 -vt 0.779315 -0.250359 -vt 0.818512 -0.256165 -vt 0.011651 -0.147248 -vt 1.310343 -0.233084 -vt 0.186999 -0.126833 -vt 0.624733 -0.245593 -vt 0.643522 -0.243260 -vt 0.637347 -0.255307 -vt 0.879802 -0.240543 -vt -0.034815 -0.232619 -vt -0.014292 -0.227921 -vt -0.028331 -0.266090 -vt 0.012392 1.531259 -vt 0.006894 1.532146 -vt 0.890551 0.085008 -vt 0.199877 -0.144585 -vt 0.171147 -0.150433 -vt 0.776415 -0.241888 -vt 0.841333 -0.232069 -vt 0.822597 -0.228506 -vt 0.893020 -0.232619 -vt 1.286408 -0.238040 -vt 1.327188 -0.234677 -vt 1.360780 -0.228023 -vt -0.344896 -0.263669 -vt -0.346112 1.005152 -vt 0.202090 0.955007 -vt 0.174825 0.938935 -vt 0.158754 0.951648 -vt 0.704183 -0.224782 -vt 0.729374 -0.220047 -vt 0.762259 -0.229841 -vt 1.277413 -0.227034 -vt -0.379801 -0.233167 -vt 1.352334 -0.233167 -vt -0.317865 -0.114123 -vt 0.488176 -0.235404 -vt 0.517675 -0.228505 -vt 0.497748 -0.242447 -vt 0.512920 -0.238658 -vt 0.536074 -0.236332 -vt 0.189323 0.914298 -vt 0.234267 0.915578 -vt 0.613874 -0.224317 -vt 0.647917 -0.213065 -vt 0.682553 -0.220923 -vt 0.779539 -0.217991 -vt -0.106424 0.555057 -vt 0.535608 -0.216370 -vt 0.562720 -0.230717 -vt 0.565090 -0.214615 -vt 0.798474 -0.216364 -vt -0.076303 0.832211 -vt -0.068496 0.850947 -vt -0.090430 0.074280 -vt 0.028999 -0.170489 -vt 0.062927 -0.183546 -vt 0.034300 -0.185310 -vt 0.666782 -0.200660 -vt 0.704675 -0.204918 -vt 0.750188 -0.208973 -vt 0.828895 -0.210119 -vt 0.838038 -0.222393 -vt 0.081706 0.493399 -vt 0.082401 0.510279 -vt 0.102855 0.501893 -vt 1.317238 -0.204477 -vt -0.356448 -0.204477 -vt -0.375660 -0.209944 -vt 1.335583 -0.209944 -vt 0.001447 -0.067579 -vt 0.042711 -0.071427 -vt 0.014339 -0.097025 -vt 0.125858 1.025300 -vt 0.097679 1.030723 -vt 1.056503 0.135078 -vt -0.152571 0.525343 -vt -0.129838 0.545222 -vt -0.150714 0.507757 -vt -0.129167 0.563979 -vt -0.106089 0.574703 -vt 0.622340 -0.200314 -vt 0.073145 -0.078178 -vt 0.049379 -0.094324 -vt -0.349147 -0.192648 -vt -0.358685 -0.227034 -vt 1.286593 -0.190972 -vt 1.302925 -0.194131 -vt -0.344947 -0.101878 -vt -0.330746 -0.091069 -vt -0.358636 -0.090649 -vt 1.506227 -0.199646 -vt 1.522332 -0.216440 -vt 1.498473 -0.223275 -vt 0.515104 -0.196976 -vt 0.515730 -0.208212 -vt 0.546857 -0.192143 -vt 0.554366 -0.207922 -vt -0.054414 -0.196957 -vt -0.041374 -0.214501 -vt 0.591144 -0.196957 -vt 0.599808 -0.192896 -vt 0.759538 -0.186499 -vt 1.331415 -0.190319 -vt -0.005069 -0.286223 -vt -0.023685 -0.291954 -vt 1.484461 -0.209435 -vt 0.081706 -0.216715 -vt 0.068369 -0.230215 -vt 0.682300 -0.177273 -vt 0.046311 0.936209 -vt 1.277453 -0.186642 -vt 0.997385 0.163292 -vt 1.028095 -0.091929 -vt 1.013342 -0.088487 -vt 0.011457 1.515841 -vt 0.542806 -0.175571 -vt -0.141554 -0.192143 -vt -0.064671 -0.183188 -vt -0.048668 -0.192896 -vt 0.612489 -0.175268 -vt 0.651154 -0.177540 -vt 0.714332 -0.177438 -vt -0.240122 0.508347 -vt -0.349334 -0.124293 -vt -0.372328 -0.186034 -vt 1.318807 -0.186034 -vt 1.042975 0.135090 -vt 0.513125 -0.177594 -vt 0.490504 -0.178180 -vt 0.569631 -0.168835 -vt 0.567146 -0.200099 -vt 0.745406 -0.180079 -vt 1.297200 -0.167662 -vt 1.305258 -0.183113 -vt -0.357357 -0.183113 -vt -0.063767 -0.174128 -vt -0.074343 0.723945 -vt -0.055633 -0.170713 -vt 0.592458 -0.174128 -vt 0.600936 -0.170713 -vt 0.592715 -0.183188 -vt 0.069904 -0.164386 -vt 1.502616 -0.171997 -vt 1.487278 -0.187586 -vt 1.517751 -0.179588 -vt 0.510973 -0.154193 -vt 0.633796 -0.162993 -vt 0.662532 -0.158079 -vt 0.237551 -0.133062 -vt 0.071080 0.856426 -vt 0.034210 0.861767 -vt 0.035805 0.886310 -vt 1.007843 0.145451 -vt -0.210944 0.682330 -vt 1.267710 -0.161975 -vt 1.280055 -0.160457 -vt 1.311579 -0.161592 -vt -0.357474 -0.167662 -vt 0.534154 -0.139630 -vt 0.557836 -0.152844 -vt 0.612034 -0.156638 -vt 1.464054 -0.160263 -vt 0.047647 -0.233285 -vt 0.503241 -0.142003 -vt -0.062899 -0.143106 -vt -0.065114 0.672146 -vt -0.072683 0.679179 -vt 0.067794 0.900930 -vt 0.069130 0.885452 -vt 0.512121 0.727923 -vt 0.524386 0.700104 -vt 0.503212 0.703596 -vt 1.240493 -0.164505 -vt 1.249451 -0.155354 -vt 0.576276 -0.140402 -vt 0.669565 -0.155636 -vt 0.048381 0.907491 -vt 0.027409 0.902143 -vt 0.020986 -0.203158 -vt 0.320587 0.935930 -vt 0.310112 0.915836 -vt -0.461047 1.217109 -vt -0.467546 1.226599 -vt -0.460639 1.248310 -vt 1.294121 -0.146777 -vt 1.287137 -0.137755 -vt 1.477765 -0.140937 -vt -0.075589 -0.131211 -vt -0.059981 -0.167610 -vt -0.088940 -0.143351 -vt 0.512130 -0.072306 -vt 0.492440 -0.048767 -vt 0.511872 -0.042759 -vt 0.824848 -0.139173 -vt 0.853949 -0.137213 -vt 0.830369 -0.154395 -vt -0.376725 0.863563 -vt -0.379669 0.897418 -vt -0.355269 0.863763 -vt 1.266853 -0.132106 -vt 1.276113 -0.126873 -vt -0.032600 -0.160105 -vt 0.315843 0.619124 -vt 0.095125 1.455941 -vt 0.887805 -0.134940 -vt 0.901440 -0.124933 -vt 0.894783 -0.145716 -vt -0.388354 0.911053 -vt -0.281099 -0.431072 -vt -0.079087 1.036480 -vt -0.059981 1.045658 -vt 1.236645 -0.145876 -vt 1.239805 -0.124293 -vt 1.434607 -0.154967 -vt 1.463586 -0.129078 -vt -0.050120 -0.160263 -vt 0.159917 -0.272771 -vt 0.131154 -0.274907 -vt 0.822198 -0.120893 -vt 0.062927 1.026326 -vt 0.857207 -0.110954 -vt 0.918732 -0.104518 -vt 0.923965 -0.129688 -vt -0.369226 0.958436 -vt -0.395266 0.963279 -vt 1.303658 -0.394592 -vt 0.144286 -0.219122 -vt 0.270323 -0.067700 -vt 1.030807 -0.122022 -vt 1.059612 -0.117950 -vt 1.066115 -0.080864 -vt 0.970873 -0.125311 -vt 0.994691 -0.116085 -vt 0.081761 1.005282 -vt 0.046311 -0.222706 -vt 0.041742 -0.268665 -vt 0.051421 1.002926 -vt -0.370178 0.834461 -vt -0.386931 0.831811 -vt 0.825426 -0.104300 -vt -0.395585 0.866820 -vt -0.415838 0.881011 -vt 0.871397 -0.096700 -vt 0.953666 -0.100884 -vt -0.022461 -0.114497 -vt 0.228657 -0.158052 -vt -0.154040 0.566569 -vt -0.138526 0.591624 -vt -0.132834 0.585889 -vt 1.227058 -0.112944 -vt 1.264690 -0.106895 -vt 1.281252 -0.111658 -vt 0.165144 0.974621 -vt 0.198813 0.979347 -vt 0.305879 0.888502 -vt 0.556956 -0.132218 -vt 0.793425 -0.108404 -vt -0.409417 0.865759 -vt 0.895867 -0.102663 -vt 0.248984 1.052068 -vt 1.240464 -0.102720 -vt -0.174465 -0.069857 -vt 1.436570 -0.107883 -vt 1.443919 -0.124400 -vt 1.425787 -0.121709 -vt 0.196069 0.522274 -vt 0.613484 -0.098663 -vt 0.631691 -0.089861 -vt 0.672717 -0.117014 -vt 0.669449 -0.081523 -vt 0.672807 -0.096753 -vt -0.359107 0.760862 -vt -0.054677 -0.036951 -vt 0.378347 1.004305 -vt 0.391202 0.980487 -vt 0.159917 0.912561 -vt 1.229465 -0.098365 -vt 1.418727 -0.100365 -vt 1.391726 -0.104110 -vt 0.111673 -0.261533 -vt 0.100128 -0.286116 -vt -0.029099 -0.185726 -vt -0.063610 -0.184442 -vt -0.029630 -0.177518 -vt -0.359107 -0.106016 -vt 0.773618 -0.098120 -vt 0.800224 -0.091264 -vt 0.826599 -0.092501 -vt -0.408109 0.836212 -vt 0.879840 -0.083701 -vt 0.999001 -0.110238 -vt 0.019909 -0.141803 -vt -0.006927 -0.162600 -vt -0.064444 -0.106367 -vt -0.081761 -0.103943 -vt 1.242721 -0.089609 -vt 1.279156 -0.091932 -vt 1.403828 -0.088422 -vt 0.576110 -0.084098 -vt 0.594171 -0.084174 -vt 0.565959 -0.100871 -vt -0.208913 0.623097 -vt -0.223463 0.603785 -vt -0.219036 0.641304 -vt -0.382541 -0.082199 -vt 0.751248 -0.106016 -vt 0.755257 -0.082199 -vt 0.817026 -0.085564 -vt 0.916666 -0.079312 -vt 0.938485 -0.078838 -vt 0.990793 -0.079698 -vt 1.249789 -0.082306 -vt 1.284814 -0.077661 -vt 1.385775 -0.082931 -vt 1.372527 -0.097688 -vt -0.164224 -0.088422 -vt 0.109056 -0.220637 -vt 0.077797 -0.221297 -vt -0.257769 0.569385 -vt -0.232311 0.585723 -vt -0.238182 0.566609 -vt -0.251251 -0.069454 -vt -0.232311 -0.084098 -vt -0.257769 -0.082607 -vt 0.207842 0.942387 -vt 0.221793 0.949957 -vt -0.318936 -0.087580 -vt -0.341146 -0.077050 -vt -0.376830 -0.074002 -vt 0.775429 -0.070214 -vt 0.828463 -0.071747 -vt 0.857635 -0.076152 -vt 0.856145 -0.097746 -vt -0.031995 -0.101246 -vt -0.036962 0.170107 -vt -0.040757 0.142902 -vt -0.023392 0.160898 -vt 0.144286 0.945331 -vt 0.118626 0.953649 -vt 0.015776 -0.178001 -vt -0.391469 1.222934 -vt -0.367933 1.252335 -vt -0.375411 1.259403 -vt 1.269331 -0.072470 -vt -0.290918 -0.064440 -vt -0.298570 -0.084841 -vt -0.240162 -0.064187 -vt 0.581506 -0.064187 -vt 0.632412 -0.052148 -vt 0.714877 -0.087580 -vt 0.693093 -0.065881 -vt 0.728116 -0.077050 -vt 0.747263 -0.074002 -vt 0.804528 -0.068340 -vt 0.000945 -0.225518 -vt 0.031956 -0.229571 -vt -0.003098 -0.259003 -vt 0.866065 -0.246459 -vt 0.879975 -0.254924 -vt 0.899646 -0.233008 -vt 1.193294 -0.067863 -vt 1.213320 -0.081953 -vt 1.200559 -0.088015 -vt 1.234336 -0.063803 -vt 1.354722 -0.070317 -vt 1.398191 -0.069857 -vt 0.012392 -0.153700 -vt 0.553637 -0.064440 -vt -0.280636 0.044243 -vt -0.267808 0.071550 -vt -0.295453 0.044653 -vt 0.597020 -0.056968 -vt 0.661844 -0.068511 -vt -0.358982 -0.060284 -vt 0.867766 -0.056663 -vt 0.909479 -0.054649 -vt 0.952332 -0.059840 -vt 0.994177 -0.057226 -vt 1.112402 -0.059789 -vt 1.124731 -0.066455 -vt 1.113884 -0.078858 -vt -0.397901 1.243950 -vt -0.380745 1.278945 -vt 1.295882 -0.060103 -vt 1.367185 -0.061490 -vt -0.205156 -0.061490 -vt -0.180636 -0.082931 -vt 1.380919 -0.059004 -vt -0.324528 -0.052943 -vt -0.306020 -0.069045 -vt 0.649205 -0.044455 -vt -0.331199 -0.054812 -vt 0.700930 -0.054812 -vt -0.379624 -0.052381 -vt 0.749612 -0.052381 -vt 0.775346 -0.052666 -vt 1.077717 -0.070072 -vt 1.082330 -0.054225 -vt 1.086630 -0.074181 -vt -0.437304 1.134344 -vt -0.401732 1.261376 -vt 1.283244 -0.049801 -vt 1.309413 -0.055340 -vt 1.476814 -0.415920 -vt -0.263502 -0.042543 -vt 0.845665 -0.044089 -vt 0.944051 -0.048115 -vt 0.981366 -0.046788 -vt -0.408749 1.003790 -vt -0.412185 1.026779 -vt 1.140555 -0.043577 -vt 1.169409 -0.059329 -vt 0.360726 0.977391 -vt 1.325355 -0.070276 -vt 1.345714 -0.046609 -vt -0.317632 -0.041007 -vt -0.306304 -0.039179 -vt 0.582642 -0.036132 -vt 0.226152 0.519378 -vt 0.231086 0.509335 -vt 0.021480 -0.190098 -vt 0.884873 -0.041330 -vt 1.052253 -0.058421 -vt -0.432485 1.214369 -vt -0.417233 1.209797 -vt -0.415358 1.238434 -vt 1.251762 -0.057181 -vt 1.297613 -0.040855 -vt -0.372432 -0.043342 -vt -0.404218 -0.035433 -vt 0.910535 -0.033191 -vt 0.326548 0.851144 -vt 0.308473 0.859635 -vt 1.335330 -0.047214 -vt -0.228075 -0.046609 -vt 0.660300 -0.045524 -vt 0.653563 -0.015112 -vt -0.306020 0.545283 -vt -0.315637 0.529353 -vt -0.324528 0.542116 -vt -0.417383 1.290857 -vt -0.393615 1.292857 -vt -0.408451 1.272577 -vt -0.014218 0.242216 -vt -0.035077 0.291938 -vt -0.038638 0.266303 -vt 0.309994 -0.117950 -vt 1.036708 -0.135073 -vt 0.278659 0.988222 -vt -0.278737 -0.470439 -vt -0.289499 -0.465511 -vt -0.041374 0.602223 -vt -0.036875 0.596176 -vt -0.057778 0.591944 -vt 0.088930 0.887415 -vt 0.100128 0.909287 -vt -0.257129 1.046479 -vt 0.492554 -0.019105 -vt 0.247682 0.961366 -vt 0.225831 0.084186 -vt 0.205500 0.082633 -vt 0.212325 0.068071 -vt 0.263228 -0.142958 -vt -0.203870 0.505919 -vt -0.264019 1.456773 -vt 0.000898 -0.132119 -vt -0.047858 -0.145626 -vt 0.180437 1.058054 -vt 0.442227 0.672319 -vt 0.424238 0.660836 -vt 0.437961 0.686748 -vt 0.061143 -0.160489 -vt 0.043091 -0.152356 -vt -0.328508 0.920197 -vt 0.011643 -0.222319 -vt 1.529284 -0.191674 -vt 0.107402 -0.095132 -vt 0.243596 0.889589 -vt -0.088940 1.066348 -vt 0.173654 0.897402 -vt 0.180437 -0.179887 -vt 0.706330 -0.056467 -vt 0.452642 0.715944 -vt 0.452875 0.700305 -vt 0.434545 0.697209 -vt 0.690691 -0.065862 -vt 0.336547 0.679622 -vt 0.183282 0.864489 -vt 0.331790 1.040420 -vt 0.357606 -0.121109 -vt 0.331790 -0.122022 -vt 0.516931 0.672217 -vt 0.876984 -0.163183 -vt 0.301440 1.002106 -vt 0.408345 0.856430 -vt 0.079616 1.092245 -vt 0.111116 1.114944 -vt 0.190928 1.027772 -vt 0.395701 0.886598 -vt -0.129501 0.127772 -vt 1.017711 -0.105640 -vt 0.361632 -0.072678 -vt 0.371654 -0.105640 -vt -0.044553 0.297584 -vt -0.067552 0.287881 -vt 1.014982 -0.138860 -vt 0.272080 1.009949 -vt 0.157399 1.059978 -vt 0.136738 1.036679 -vt 0.529665 -0.023818 -vt 0.540240 -0.033513 -vt 0.512121 -0.048792 -vt -0.289499 1.492380 -vt 0.274830 1.057953 -vt 0.271900 1.034454 -vt -0.184555 0.189674 -vt 0.451093 0.649814 -vt 0.486546 0.679543 -vt 0.285261 1.063741 -vt 0.500272 -0.028877 -vt 0.014226 -0.275765 -vt 0.027409 -0.290601 -vt 0.310517 0.836149 -vt 0.245607 0.909260 -vt 0.723287 -0.040575 -vt 0.464116 0.732900 -vt 0.468852 0.712095 -vt 1.152767 -0.059468 -vt -0.091115 -0.220942 -vt 0.261049 -0.153857 -vt 0.235622 -0.136424 -vt 0.690490 -0.058695 -vt 0.163034 1.118035 -vt 0.144963 1.083590 -vt 0.136300 1.097970 -vt 0.541909 0.712927 -vt 0.347264 0.837015 -vt 0.345325 0.801549 -vt 0.326037 0.828721 -vt 0.549766 0.672271 -vt 0.309994 1.069225 -vt 0.497694 0.134963 -vt -0.274891 -0.062696 -vt 1.233369 -0.076950 -vt 0.309815 -0.190463 -vt 0.078022 0.990304 -vt -0.266770 -0.054213 -vt 1.289384 -0.062696 -vt -0.253628 -0.036630 -vt -0.001307 0.881971 -vt -0.005069 0.896071 -vt 0.000898 1.082025 -vt -0.047858 1.066344 -vt 0.245607 -0.233008 -vt 0.243596 -0.254924 -vt 0.263228 1.072812 -vt 0.237551 1.096338 -vt -0.253628 1.326428 -vt -0.253619 1.311650 -vt -0.268090 1.318237 -vt -0.253619 -0.050825 -vt -0.251239 1.267601 -vt -0.274891 1.298998 -vt -0.266770 1.303695 -vt -0.270038 1.277142 -vt 0.045727 -0.230594 -vt -0.023685 0.875407 -vt -0.241766 1.294281 -vt -0.266306 1.258921 -vt 0.053686 -0.110517 -vt -0.089774 0.558552 -vt -0.069396 0.573710 -vt 1.302036 -0.050825 -vt -0.218159 1.334968 -vt -0.224716 1.319739 -vt 0.486408 0.597221 -vt 0.458206 0.580096 -vt 0.471880 0.597934 -vt 0.822221 -0.181313 -vt -0.116961 0.545687 -vt -0.096606 0.572334 -vt 0.143739 0.977106 -vt 0.028999 1.051400 -vt -0.032464 1.049860 -vt 0.031956 0.929620 -vt 0.000945 0.922892 -vt 0.011643 0.934790 -vt -0.226065 1.245476 -vt 0.049379 1.110498 -vt 0.082953 1.117542 -vt 0.053686 1.096607 -vt 0.376775 -0.074309 -vt 0.019909 1.070637 -vt -0.279723 1.357954 -vt 0.854149 -0.158495 -vt -0.233177 1.211154 -vt 0.034300 1.035098 -vt 0.540240 0.732854 -vt 0.009389 -0.185447 -vt 0.159785 1.034930 -vt -0.029099 1.016786 -vt 1.257987 -0.070013 -vt 0.085762 -0.165589 -vt -0.247111 1.179519 -vt -0.225300 1.187001 -vt -0.211594 1.159802 -vt -0.231472 1.111795 -vt -0.249338 1.087322 -vt -0.260432 1.100393 -vt -0.240628 1.080364 -vt -0.239461 1.268980 -vt 1.201540 -0.087234 -vt 1.177387 -0.082563 -vt -0.206221 1.173379 -vt -0.219149 1.068968 -vt 0.002824 0.850781 -vt 1.016214 -0.121109 -vt -0.274103 0.080361 -vt -0.280958 0.067375 -vt -0.213645 1.129901 -vt -0.203805 1.119593 -vt -0.203805 -0.100612 -vt -0.185074 -0.134642 -vt -0.240628 -0.128674 -vt -0.195945 1.050965 -vt -0.229809 1.021873 -vt 0.476147 -0.022071 -vt -0.200268 1.140957 -vt -0.185074 1.096423 -vt -0.192356 1.073797 -vt 0.476147 0.752165 -vt 0.500272 0.746074 -vt -0.190708 1.138887 -vt -0.187555 1.014361 -vt 0.227519 0.867524 -vt 1.129274 -0.080166 -vt -0.190708 -0.080166 -vt -0.180585 -0.100626 -vt -0.169557 1.037079 -vt 0.067794 -0.295705 -vt 0.048381 -0.286214 -vt -0.088468 -0.123339 -vt -0.182262 1.162380 -vt -0.173248 1.143766 -vt -0.173248 -0.062864 -vt -0.154000 -0.116971 -vt -0.157850 1.060838 -vt 0.412877 0.650631 -vt 0.422842 0.673401 -vt -0.078248 1.473199 -vt 1.134152 -0.062864 -vt 0.527719 0.671847 -vt 0.358329 0.825348 -vt -0.159038 -0.094760 -vt -0.136511 1.085710 -vt -0.154000 1.116687 -vt 0.111057 0.942500 -vt -0.140341 -0.096024 -vt -0.140594 1.034499 -vt 0.464116 -0.040575 -vt 0.388437 0.948116 -vt 0.034507 -0.240648 -vt -0.111787 1.100978 -vt -0.120795 1.060694 -vt 0.136300 -0.130311 -vt 0.244182 0.510160 -vt 0.265247 0.513298 -vt -0.268884 -0.102544 -vt -0.111787 -0.106498 -vt -0.111787 -0.128275 -vt 0.516626 0.749237 -vt -0.107553 1.041394 -vt 0.124583 0.966768 -vt -0.257309 0.500345 -vt -0.134107 0.522534 -vt -0.238182 -0.099013 -vt -0.097429 1.056984 -vt -0.268884 0.548048 -vt -0.247494 0.493269 -vt -0.097429 -0.157612 -vt -0.120795 -0.155289 -vt 0.094492 0.844203 -vt 0.085328 0.860479 -vt 0.171147 1.083269 -vt -0.101070 0.109157 -vt -0.111787 1.116760 -vt -0.081761 1.104823 -vt -0.088468 1.088078 -vt 0.202981 -0.161833 -vt -0.328745 -0.027647 -vt -0.227174 0.495845 -vt -0.075589 1.077446 -vt -0.079087 -0.173556 -vt -0.362050 1.008614 -vt -0.259031 1.140791 -vt -0.149817 0.935445 -vt -0.365867 1.037709 -vt -0.334684 1.033910 -vt -0.328150 0.956742 -vt 0.300339 -0.072137 -vt -0.254932 0.807908 -vt -0.243851 0.865026 -vt -0.235552 0.834211 -vt -0.349979 0.960635 -vt -0.336721 1.052222 -vt -0.222830 0.850107 -vt -0.312404 0.509241 -vt -0.300808 0.494176 -vt -0.292344 1.055445 -vt -0.374626 1.103141 -vt -0.356245 1.078755 -vt 0.512810 0.632803 -vt -0.206153 1.300980 -vt -0.001332 -0.231884 -vt 0.491183 0.639263 -vt -0.359194 0.839983 -vt 0.482968 0.654329 -vt -0.138526 -0.132502 -vt -0.331462 1.108317 -vt -0.230984 1.007579 -vt -0.327817 0.883604 -vt 0.421411 0.141732 -vt 0.460973 0.624454 -vt -0.038353 -0.013732 -vt -0.354745 -0.255435 -vt -0.183727 0.736294 -vt -0.176867 0.697150 -vt -0.244540 0.920829 -vt -0.251627 0.941268 -vt -0.377506 -0.060103 -vt 0.774491 -0.128553 -vt 0.324798 0.660395 -vt 0.312268 0.662526 -vt -0.268056 0.992951 -vt 0.445824 0.599415 -vt 0.443161 0.629732 -vt 0.154472 -0.062591 -vt -0.268264 1.080955 -vt -0.316917 1.167696 -vt -0.345104 0.766246 -vt -0.344947 0.747983 -vt -0.345104 -0.118983 -vt -0.339682 -0.144504 -vt -0.326128 -0.132170 -vt 0.436563 -0.081116 -vt 0.436563 0.571280 -vt -0.234827 0.905853 -vt -0.183619 0.757405 -vt -0.139831 1.349854 -vt 0.421339 0.598978 -vt 0.423108 0.643444 -vt -0.053166 -0.254290 -vt -0.222343 0.924312 -vt 0.018892 -0.244565 -vt -0.281005 -0.110559 -vt -0.272129 -0.119245 -vt -0.260411 -0.116622 -vt 1.517363 -0.230594 -vt 0.405710 0.620991 -vt -0.169592 0.802611 -vt -0.199583 0.824823 -vt 0.503805 -0.083691 -vt 0.499628 -0.096613 -vt -0.313917 -0.122831 -vt -0.320259 -0.104505 -vt -0.256810 0.901583 -vt -0.182139 0.796098 -vt 0.131137 -0.057344 -vt 0.113520 -0.034175 -vt 0.519740 -0.069445 -vt 0.421938 0.544965 -vt 0.406135 0.549180 -vt 0.398940 0.578349 -vt 0.013691 0.547201 -vt -0.369919 1.132726 -vt -0.326128 0.760457 -vt -0.314599 0.778579 -vt -0.433573 1.096243 -vt -0.425765 1.123497 -vt -0.267236 0.970607 -vt -0.234195 0.959535 -vt -0.238062 0.990621 -vt -0.343874 0.825318 -vt -0.195768 0.855578 -vt -0.152878 0.874021 -vt -0.149506 0.840834 -vt 0.400718 0.635861 -vt -0.142022 0.885532 -vt -0.138077 0.916349 -vt -0.280036 0.780316 -vt 0.406135 -0.077218 -vt 0.385681 0.616207 -vt -0.138977 0.788110 -vt -0.147066 0.815863 -vt -0.163504 0.225265 -vt -0.165833 0.998164 -vt -0.304613 0.533454 -vt 0.583094 -0.101245 -vt 0.684204 -0.105328 -vt 0.693872 -0.118248 -vt -0.304747 1.489518 -vt 0.365790 0.571534 -vt 0.377122 0.596019 -vt -0.298777 1.444517 -vt 0.367805 0.600902 -vt -0.039418 0.099540 -vt -0.041741 0.085087 -vt 0.135266 0.504311 -vt -0.072495 0.267497 -vt -0.397597 1.000406 -vt -0.198906 0.956682 -vt -0.199675 0.984396 -vt -0.176468 0.955890 -vt -0.033959 0.754676 -vt -0.226205 1.284529 -vt -0.136904 0.748268 -vt 0.352361 0.584084 -vt -0.157286 1.324434 -vt -0.226016 0.707146 -vt -0.167660 0.760866 -vt -0.157965 0.781496 -vt -0.251543 -0.068690 -vt -0.157598 0.719219 -vt -0.147034 0.747594 -vt -0.312281 -0.415287 -vt -0.180648 0.644990 -vt -0.150041 0.637106 -vt -0.157753 0.616502 -vt -0.157617 0.705754 -vt -0.157913 0.684370 -vt -0.233810 0.691395 -vt -0.221232 0.693817 -vt -0.339584 0.808451 -vt -0.339682 0.785941 -vt -0.436460 1.087331 -vt 0.412893 0.823739 -vt -0.138450 0.863544 -vt -0.167257 0.590192 -vt -0.164987 0.543767 -vt -0.259156 0.737852 -vt 0.681782 -0.098052 -vt -0.233197 -0.081523 -vt 0.319434 0.527942 -vt -0.011318 0.308821 -vt 1.479905 -0.462889 -vt 1.489068 -0.452921 -vt -0.161785 0.664003 -vt -0.225946 0.682420 -vt -0.153536 0.906573 -vt -0.193850 0.921926 -vt -0.180313 0.676598 -vt -0.143738 0.497789 -vt -0.137732 0.507361 -vt 0.317033 0.735049 -vt 0.317135 0.770183 -vt 0.668138 -0.142981 -vt -0.330746 0.735420 -vt -0.042534 0.237534 -vt 0.325448 0.596970 -vt 0.305492 0.609861 -vt 0.609511 -0.212176 -vt 0.108803 0.535386 -vt 0.129927 0.510736 -vt 0.306932 0.804585 -vt 0.278719 -0.040926 -vt 0.265397 -0.061582 -vt 0.272927 -0.100796 -vt 1.029927 0.173977 -vt 1.347953 -0.445174 -vt -0.214508 0.941368 -vt 0.295298 0.587141 -vt 0.600248 -0.216435 -vt 0.624375 -0.232680 -vt 0.306476 0.633989 -vt 0.677180 -0.233377 -vt 0.708706 -0.241506 -vt 0.725436 -0.231191 -vt 0.696090 -0.218010 -vt 0.297450 0.756952 -vt -0.137841 0.685248 -vt 0.293222 0.616988 -vt 0.289652 0.635884 -vt 0.303117 0.686794 -vt 0.304039 0.718319 -vt 0.290730 0.736323 -vt 0.293475 0.786801 -vt -0.236682 -0.068511 -vt 0.279822 0.810417 -vt 0.343928 -0.100800 -vt 0.297570 0.578716 -vt 0.276901 0.589731 -vt 0.272064 0.600331 -vt 0.263197 0.674549 -vt 0.282551 0.702324 -vt -0.278377 -0.058277 -vt -0.362582 0.814367 -vt 0.273704 0.571875 -vt 0.276047 0.634014 -vt 0.269480 0.650567 -vt -0.237683 0.492322 -vt -0.259156 -0.153555 -vt 0.264089 0.614696 -vt 0.269397 0.738218 -vt 0.253567 0.752485 -vt 0.259457 0.777386 -vt 1.476233 -0.434701 -vt 1.487657 -0.424763 -vt 1.487143 -0.440694 -vt 0.250811 0.558997 -vt 0.252662 0.697887 -vt 0.254356 0.717719 -vt 0.248642 0.583295 -vt 0.252101 0.600631 -vt 0.250367 0.621325 -vt 0.246898 0.735612 -vt 0.239489 0.804803 -vt 0.249313 0.827314 -vt -0.043644 -0.240543 -vt -0.047593 -0.226087 -vt 0.244471 0.642996 -vt 0.229993 0.677534 -vt 0.225285 0.749079 -vt 0.235388 0.780037 -vt 0.233251 0.539497 -vt 0.229502 0.562592 -vt 0.226298 0.726404 -vt 0.232595 0.833928 -vt 0.827401 -0.203566 -vt 0.815734 -0.193731 -vt 0.791936 -0.209528 -vt 0.211966 0.577274 -vt 0.225075 0.596921 -vt 0.212710 0.630415 -vt 0.222327 0.699893 -vt 0.218151 0.778076 -vt 0.213289 0.809408 -vt 0.208878 0.839021 -vt 0.207444 0.543428 -vt 0.202011 0.592898 -vt 0.206448 0.640005 -vt 0.210140 0.749389 -vt 0.194202 0.674248 -vt 0.195077 0.706560 -vt 0.208484 0.783340 -vt 0.190692 0.606683 -vt 0.195488 0.728793 -vt 0.197688 0.826740 -vt 0.182714 0.524430 -vt 0.176765 0.558456 -vt 0.189092 0.571867 -vt 0.191004 0.747602 -vt 0.186043 0.810342 -vt -0.260411 0.492418 -vt 0.185446 1.009227 -vt 0.190952 0.509619 -vt 0.170242 0.549586 -vt 0.186489 0.649830 -vt 0.166141 0.760179 -vt 0.178770 0.782810 -vt 0.177700 0.585539 -vt 0.179215 0.622816 -vt 0.169356 0.731626 -vt 0.172489 0.831443 -vt 0.169944 0.854532 -vt -0.206507 0.493663 -vt 0.163349 0.603317 -vt 0.169881 0.646254 -vt 0.168087 0.679547 -vt 0.162953 0.704746 -vt 0.154161 0.500784 -vt 0.158951 0.509414 -vt 0.150259 0.803494 -vt 0.499117 0.270415 -vt 0.498526 0.250383 -vt -0.429100 1.061867 -vt 0.150190 0.569072 -vt 0.150190 -0.235869 -vt 0.142534 -0.252894 -vt 0.177700 -0.252036 -vt 0.189092 -0.233498 -vt 0.155962 0.628192 -vt 0.148082 0.525778 -vt 0.142534 0.580811 -vt 0.146639 0.594866 -vt 0.147030 0.653221 -vt 0.143635 0.731584 -vt 0.149761 0.825017 -vt 0.145467 0.559464 -vt 0.130470 0.618196 -vt 0.147756 0.697473 -vt 0.138718 0.843761 -vt 0.133445 0.865572 -vt 0.815705 -0.162925 -vt 0.127342 0.549699 -vt 0.145467 -0.227135 -vt 0.128349 0.690191 -vt 0.132327 0.763655 -vt 0.132274 0.500871 -vt 0.125630 0.559423 -vt 0.125630 -0.232625 -vt 0.126775 0.654139 -vt 0.118058 0.715557 -vt 0.113381 0.795826 -vt 0.127329 0.813755 -vt 0.125329 0.834260 -vt 0.118226 -0.254029 -vt 0.118226 0.574506 -vt 0.114061 0.601036 -vt 0.117491 0.734019 -vt 0.115513 0.985005 -vt 0.110059 0.621702 -vt 0.116839 0.674620 -vt 0.107804 0.776993 -vt 0.107095 0.652922 -vt 0.094733 0.743291 -vt 0.094173 0.827712 -vt 0.100735 0.576567 -vt 0.088577 0.683235 -vt 0.085888 0.697489 -vt 0.253841 -0.099387 -vt 0.087081 0.558607 -vt 0.087081 -0.233803 -vt 0.100735 -0.257510 -vt 0.083831 0.625970 -vt 0.093670 0.717937 -vt 0.073591 0.653758 -vt 0.093639 0.759485 -vt 0.095481 0.791921 -vt 0.084858 -0.255821 -vt 0.084858 0.577895 -vt 0.071029 0.608279 -vt 0.074008 0.747119 -vt 0.074899 0.779355 -vt 0.057486 0.793692 -vt 0.053787 0.815377 -vt 0.068369 0.501051 -vt 0.063643 0.581746 -vt 0.063524 0.641455 -vt 0.062416 0.676420 -vt 0.059079 0.714961 -vt 0.391196 0.082601 -vt 0.059176 0.560319 -vt 0.063643 -0.257882 -vt 0.054917 0.696064 -vt -0.298570 0.548840 -vt 0.039116 1.446740 -vt 0.039991 0.844858 -vt -0.113291 0.591784 -vt 0.512792 0.164949 -vt 0.492306 0.165412 -vt 0.493298 0.233082 -vt 0.039544 0.573317 -vt 0.045664 0.612574 -vt 0.044286 0.662467 -vt 0.040900 0.714936 -vt 0.048243 0.765682 -vt 0.218968 -0.034176 -vt 0.207490 -0.020910 -vt 0.488506 0.183614 -vt 0.034872 0.564673 -vt -0.277270 -0.162905 -vt 0.214272 -0.055270 -vt 0.027594 1.468882 -vt 0.030253 1.508087 -vt 0.004078 0.746831 -vt 0.014372 0.768624 -vt 0.021028 0.816258 -vt 0.045727 1.526977 -vt 0.018354 0.596696 -vt 0.022691 0.633511 -vt 0.016604 0.702561 -vt 0.019350 0.715354 -vt -0.273169 0.499728 -vt -0.283176 0.503477 -vt 0.493423 0.080361 -vt 0.490115 0.091708 -vt 0.011805 0.580902 -vt 0.033661 0.191321 -vt 0.000233 0.207554 -vt 0.021577 0.134767 -vt 0.008623 1.440095 -vt 0.005370 0.819101 -vt 0.043008 0.148014 -vt -0.216373 -0.118248 -vt -0.221232 -0.105328 -vt 0.446250 0.105135 -vt 0.422036 0.112870 -vt 0.430762 0.086882 -vt 0.494822 0.109774 -vt -0.267612 0.105876 -vt 0.176179 -0.048767 -vt 0.004399 0.576160 -vt -0.004852 0.591428 -vt -0.006687 0.775312 -vt -0.286541 0.504436 -vt -0.287511 0.521416 -vt -0.267612 0.527392 -vt 0.212033 -0.151693 -vt 0.184061 -0.161326 -vt 0.220088 -0.163181 -vt 0.171841 0.208144 -vt 0.197886 -0.081147 -vt 0.493864 0.098959 -vt -0.020841 0.634346 -vt 0.756633 -0.118983 -vt 0.090630 -0.008657 -vt 0.069428 -0.023846 -vt -0.027036 0.600284 -vt 1.427730 -0.244138 -vt -0.309183 1.498681 -vt -0.252754 0.083852 -vt 0.054273 -0.058884 -vt 0.043719 -0.022072 -vt 0.063862 0.290295 -vt 1.177723 -0.084078 -vt 0.287133 0.168174 -vt 0.248205 0.168167 -vt 0.244746 0.137880 -vt 0.271261 0.200268 -vt 0.227349 0.215804 -vt 0.222408 0.507808 -vt 0.191215 0.507822 -vt 0.299708 0.062993 -vt 0.299545 0.080258 -vt 0.274769 0.094667 -vt 0.455577 0.071375 -vt 0.324035 0.039704 -vt 0.305893 0.039761 -vt 0.079475 0.505069 -vt 0.121581 0.224103 -vt 0.073490 0.171248 -vt 0.306904 0.016542 -vt 0.149123 0.043142 -vt 0.162513 0.058324 -vt 0.155730 0.066782 -vt 0.357721 -0.014736 -vt -0.082125 0.270415 -vt 0.022895 0.292307 -vt 0.045790 0.294612 -vt 0.028697 0.303903 -vt 0.224206 0.237569 -vt 0.196083 0.245797 -vt 0.209117 0.213296 -vt 0.046700 0.215658 -vt 0.491845 0.004891 -vt 0.316351 0.061492 -vt 0.212143 0.191901 -vt 0.207490 0.499569 -vt 0.214989 0.510412 -vt 0.195526 0.501835 -vt 0.233004 0.143013 -vt 0.230918 0.171827 -vt 0.318077 0.096921 -vt 0.244514 0.091187 -vt 0.257947 0.225895 -vt 0.299683 -0.019801 -vt 0.306571 -0.032571 -vt 0.244182 0.245861 -vt 0.222408 0.250015 -vt 0.480210 0.067017 -vt 0.325002 0.009756 -vt -0.325582 -0.271006 -vt -0.337338 -0.253061 -vt 0.490189 0.091336 -vt 0.133576 0.138120 -vt 0.106055 0.095443 -vt 0.343861 0.016671 -vt 0.293941 0.134856 -vt 0.169889 -0.116760 -vt 0.148062 -0.107017 -vt 0.159908 -0.166085 -vt 0.125635 -0.172201 -vt 0.136504 -0.182230 -vt 0.180451 -0.175743 -vt 0.490265 -0.034176 -vt 0.500799 -0.021447 -vt 0.489955 -0.020910 -vt 0.049410 0.244023 -vt 0.179868 0.083661 -vt 0.167985 0.087967 -vt 0.222997 0.168483 -vt 0.182833 0.107000 -vt 0.186383 0.020106 -vt 0.190504 0.039660 -vt 0.177620 0.033571 -vt 0.031216 0.012282 -vt 0.172932 0.115072 -vt -0.072305 0.204303 -vt 0.493545 -0.107242 -vt 0.495303 -0.081147 -vt 0.513797 -0.098190 -vt 0.100984 0.199018 -vt 0.068527 0.208021 -vt 0.109685 0.155402 -vt 0.494602 0.143013 -vt 0.494187 0.171827 -vt 0.503677 0.168483 -vt 0.285049 -0.015777 -vt 0.099035 0.280406 -vt 0.100411 0.264465 -vt 0.097032 0.506854 -vt -0.013481 0.078832 -vt -0.027585 0.051509 -vt 0.702034 0.014729 -vt 0.520271 0.288369 -vt 0.007626 0.066282 -vt -0.474690 0.073524 -vt -0.477750 0.108244 -vt 0.265247 0.239688 -vt 0.986778 0.164958 -vt 0.191215 0.256060 -vt -0.460041 0.135090 -vt 0.121954 0.015151 -vt 0.202840 0.058431 -vt 0.193936 0.200688 -vt -0.046894 0.186003 -vt 0.495287 0.043142 -vt 0.496095 0.066782 -vt 0.510867 0.046426 -vt 0.491388 0.191901 -vt 0.514960 0.171566 -vt 0.135266 0.264493 -vt 0.125194 0.194964 -vt 0.345595 0.062786 -vt 0.222949 0.119372 -vt 0.125635 0.500067 -vt 0.159908 0.500640 -vt 0.150885 0.520375 -vt 0.175768 0.512107 -vt 0.306358 0.135013 -vt 0.069153 0.046201 -vt 0.050279 0.053637 -vt 0.059150 0.009557 -vt -0.062020 0.164949 -vt 0.273106 0.227760 -vt 0.515885 -0.014182 -vt 0.511399 0.007109 -vt 0.080162 0.120041 -vt 0.051668 0.095016 -vt -0.461927 0.173977 -vt 0.490487 0.011782 -vt 0.516859 -0.112641 -vt 0.123262 0.274687 -vt 0.252362 -0.046610 -vt -0.449632 0.183098 -vt 0.275474 -0.148003 -vt 0.159087 -0.019105 -vt 0.154372 0.011782 -vt 0.188953 0.068031 -vt -0.431947 0.146275 -vt -0.307129 -0.096055 -vt -0.316756 -0.075557 -vt -0.322382 -0.083234 -vt 0.514494 0.154740 -vt 0.326480 0.143052 -vt 0.158095 0.253604 -vt 0.491995 -0.130449 -vt -0.460307 0.216613 -vt -0.192975 0.245741 -vt 0.158095 0.502047 -vt 0.135210 -0.014182 -vt -0.002907 0.137568 -vt -0.417243 0.163589 -vt 1.027418 0.216613 -vt 0.159354 0.153492 -vt 0.151898 0.183019 -vt 0.025410 0.251640 -vt -0.005949 0.294031 -vt 0.156514 0.116823 -vt 0.098801 0.045950 -vt -0.097950 0.250383 -vt -0.444734 0.225024 -vt 0.396575 0.134160 -vt 0.370191 0.107124 -vt 0.147298 -0.135607 -vt 0.126675 -0.119298 -vt 0.108236 -0.150561 -vt 0.133932 0.528487 -vt 0.133932 -0.151097 -vt -0.407703 0.145451 -vt -0.454877 0.248040 -vt 0.205615 0.116391 -vt 0.196864 0.103195 -vt -0.393317 -0.014037 -vt -0.077009 -0.003553 -vt 0.260502 -0.031200 -vt 0.246313 -0.035879 -vt 0.169273 -0.147777 -vt -0.422466 0.200630 -vt 0.012784 0.104194 -vt 0.246313 0.498863 -vt 0.260502 0.508435 -vt 0.218968 0.499879 -vt 0.015506 0.306083 -vt 0.015506 0.508278 -vt -0.398422 0.183922 -vt -0.419109 0.229007 -vt -0.373480 -0.006826 -vt -0.027182 0.196445 -vt -0.392343 0.163292 -vt -0.415741 0.247227 -vt -0.418328 0.265447 -vt -0.418328 1.041419 -vt -0.454877 1.050996 -vt 0.378766 0.005307 -vt -0.390332 0.012230 -vt 0.029795 0.078587 -vt -0.406074 0.052759 -vt -0.404545 0.098344 -vt -0.424941 0.057573 -vt 0.362970 0.043539 -vt -0.316840 1.041249 -vt 0.714744 0.026115 -vt 0.366419 0.535255 -vt 0.366419 0.127211 -vt 0.702365 -0.004009 -vt -0.389774 0.207223 -vt -0.364690 0.026115 -vt -0.388637 0.049632 -vt 0.734985 0.093694 -vt -0.376009 0.179587 -vt -0.052384 0.132267 -vt 0.989467 0.179587 -vt -0.374461 0.241856 -vt -0.353214 -0.004009 -vt -0.362129 0.195786 -vt -0.365731 0.201761 -vt -0.389088 0.255488 -vt -0.389088 1.024258 -vt -0.389635 1.039938 -vt 0.175768 0.260018 -vt 0.155627 0.263418 -vt -0.375573 0.093694 -vt -0.391142 0.068463 -vt 0.748765 0.131633 -vt 0.290508 -0.083234 -vt 0.282415 -0.101267 -vt -0.056580 0.222842 -vt -0.361067 0.048178 -vt -0.372961 0.163658 -vt -0.403670 0.145326 -vt -0.388219 0.128671 -vt 1.034147 0.282324 -vt 1.045900 0.273249 -vt 1.030325 0.262873 -vt 0.712236 0.048178 -vt 0.278014 -0.127665 -vt 0.972654 0.195496 -vt 0.988572 0.195786 -vt 0.216400 0.154740 -vt 0.214877 0.171566 -vt -0.329318 0.016373 -vt -0.354482 0.014729 -vt -0.341009 0.033470 -vt -0.356225 0.077449 -vt 0.727823 0.118056 -vt -0.362129 0.998185 -vt -0.365731 1.003518 -vt -0.343451 0.198773 -vt -0.349438 0.239225 -vt -0.362508 0.259116 -vt -0.362508 1.022393 -vt -0.374857 0.282324 -vt -0.389635 0.262873 -vt -0.319632 -0.003303 -vt 0.691066 0.061613 -vt 0.714591 0.077449 -vt -0.358986 0.118056 -vt -0.346112 0.204823 -vt -0.343772 0.273967 -vt -0.357332 0.290687 -vt 0.094759 0.228587 -vt 0.677831 0.016373 -vt 0.680549 0.037865 -vt 0.693841 0.033470 -vt -0.338127 0.101307 -vt -0.015585 -0.201646 -vt -0.357332 1.042465 -vt -0.332868 -0.056360 -vt -0.332837 -0.038782 -vt -0.342339 -0.048127 -vt 0.487040 0.071550 -vt 0.489779 0.044653 -vt -0.293784 -0.028260 -vt 0.707799 0.101307 -vt 0.384240 0.025263 -vt -0.321013 0.023207 -vt -0.302338 0.045088 -vt 0.485829 -0.038782 -vt -0.289273 0.003160 -vt -0.314602 0.028639 -vt -0.329934 0.037865 -vt -0.327324 0.076165 -vt -0.342744 0.061613 -vt -0.334624 0.152032 -vt -0.373780 0.131633 -vt -0.348724 0.175502 -vt -0.330277 0.200099 -vt 0.352471 0.080352 -vt -0.283983 -0.021880 -vt -0.304269 0.044411 -vt -0.313417 0.125698 -vt 0.349555 0.115239 -vt -0.330374 0.296401 -vt -0.296361 -0.082615 -vt -0.300808 -0.103679 -vt -0.301719 -0.051178 -vt -0.323558 -0.015106 -vt -0.340741 -0.016265 -vt -0.248073 -0.045524 -vt 0.484922 -0.154149 -vt -0.310526 0.076406 -vt -0.325741 0.188327 -vt -0.274477 -0.081387 -vt -0.305028 0.019602 -vt -0.334135 0.004891 -vt -0.274763 0.023052 -vt 0.169273 0.525493 -vt 0.511946 0.077737 -vt 0.509405 -0.138929 -vt 0.488876 -0.151693 -vt 0.155958 -0.042759 -vt -0.293480 0.142334 -vt -0.286541 0.109774 -vt -0.276579 0.115870 -vt -0.280510 0.061048 -vt -0.294753 0.093852 -vt -0.293808 0.157601 -vt -0.325741 0.758084 -vt 0.499589 0.287881 -vt -0.278328 0.001277 -vt -0.249728 -0.015112 -vt -0.260622 0.038612 -vt -0.237683 -0.126963 -vt -0.247494 -0.128386 -vt -0.253367 -0.047990 -vt -0.280893 0.119116 -vt -0.227174 -0.135771 -vt -0.224808 -0.111546 -vt -0.230676 -0.071676 -vt -0.268243 0.090255 -vt -0.239447 0.059441 -vt 0.496977 0.045088 -vt -0.307129 0.493598 -vt -0.322382 0.497594 -vt -0.206507 -0.134655 -vt -0.274501 0.182150 -vt -0.210526 -0.079135 -vt -0.242898 -0.040087 -vt -0.244134 0.014285 -vt 0.484563 -0.103679 -vt 0.483985 -0.096055 -vt -0.262957 0.175051 -vt -0.274501 0.725951 -vt -0.191031 -0.143808 -vt -0.195868 -0.119710 -vt 0.150885 -0.157298 -vt -0.175952 -0.154149 -vt -0.180315 -0.130765 -vt -0.254703 0.070592 -vt -0.283176 0.098959 -vt -0.143738 -0.235404 -vt -0.149343 -0.203638 -vt -0.153481 -0.210376 -vt 0.482268 -0.203638 -vt 0.483454 -0.170405 -vt -0.164931 -0.178180 -vt -0.162177 -0.170405 -vt -0.198165 -0.001543 -vt -0.273169 0.091708 -vt 1.240574 -0.018809 -vt 1.237839 -0.030160 -vt -0.286674 0.170154 -vt -0.296409 0.180275 -vt -0.303640 0.159751 -vt -0.233727 0.198954 -vt -0.233727 0.727925 -vt -0.121442 -0.229247 -vt -0.131062 -0.247149 -vt -0.157942 -0.144341 -vt -0.219664 0.048173 -vt -0.119248 -0.257699 -vt -0.106716 -0.258188 -vt -0.164236 -0.092388 -vt -0.180091 -0.061478 -vt -0.185426 -0.026170 -vt -0.206337 0.023921 -vt -0.232322 0.085787 -vt -0.245985 0.123941 -vt -0.258065 0.161978 -vt -0.293003 0.202147 -vt -0.228609 0.172813 -vt -0.125215 -0.160943 -vt 0.283410 0.074944 -vt -0.093935 -0.264288 -vt -0.087608 -0.246071 -vt -0.144440 -0.093219 -vt -0.220967 0.071261 -vt -0.279719 0.218106 -vt -0.283956 0.229058 -vt -0.100226 -0.193352 -vt -0.162979 -0.052387 -vt -0.187398 0.010493 -vt -0.261215 0.224527 -vt -0.070706 -0.258271 -vt -0.130531 -0.119127 -vt -0.171394 -0.015525 -vt -0.181745 -0.002376 -vt -0.213491 0.066514 -vt -0.209650 0.086484 -vt -0.223842 0.127010 -vt -0.117226 -0.157094 -vt -0.130789 -0.096104 -vt -0.203541 0.706881 -vt -0.192575 0.739706 -vt -0.108283 -0.151895 -vt -0.092982 -0.177769 -vt -0.117448 -0.126449 -vt -0.125640 -0.067959 -vt -0.119793 -0.053955 -vt -0.148228 -0.026807 -vt -0.161216 -0.001820 -vt -0.262726 0.242559 -vt -0.076319 -0.201733 -vt 0.494165 -0.126449 -vt 0.500428 -0.106120 -vt 0.486020 -0.096104 -vt -0.219863 0.193029 -vt -0.262726 0.502037 -vt -0.283956 0.505741 -vt -0.065228 -0.186772 -vt -0.080256 -0.157815 -vt -0.091718 -0.142401 -vt 0.514944 -0.107100 -vt 0.492842 -0.151895 -vt 0.514473 -0.142401 -vt -0.139861 -0.009446 -vt -0.171394 0.491928 -vt -0.139861 0.494329 -vt -0.161216 0.506873 -vt -0.196560 0.121661 -vt -0.192489 0.141131 -vt -0.248689 0.257392 -vt 0.644601 0.015970 -vt -0.040673 0.309479 -vt -0.044115 -0.207518 -vt -0.063629 -0.167853 -vt -0.065228 0.505303 -vt -0.063629 0.525443 -vt -0.092982 0.498022 -vt -0.095189 -0.093275 -vt -0.105512 -0.107100 -vt -0.025824 -0.192456 -vt -0.047562 0.521430 -vt -0.068211 -0.143107 -vt -0.105955 -0.034881 -vt -0.118932 0.008723 -vt -0.196320 0.194230 -vt -0.040592 -0.166217 -vt -0.067539 -0.084863 -vt -0.106336 0.002672 -vt -0.025824 0.502029 -vt -0.047562 -0.178499 -vt -0.081656 -0.066867 -vt -0.154208 0.151352 -vt -0.154277 0.134230 -vt 0.371902 0.136601 -vt -0.025373 0.524400 -vt -0.025373 -0.178029 -vt -0.044845 -0.118027 -vt -0.086511 -0.022483 -vt -0.107727 0.020227 -vt -0.061267 -0.058292 -vt -0.089742 0.044529 -vn -0.0198 0.0994 -0.9948 -vn -0.9845 0.0661 -0.1627 -vn -0.2253 0.9711 -0.0792 -vn -0.2201 0.9696 -0.1073 -vn -0.3579 0.9238 0.1360 -vn -0.1265 0.9836 -0.1283 -vn -0.0848 0.9237 0.3736 -vn 0.1444 -0.9378 -0.3156 -vn 0.0035 0.7173 0.6968 -vn -0.3696 0.7375 0.5653 -vn 0.2809 0.9566 -0.0781 -vn -0.8285 -0.5415 -0.1428 -vn 0.1251 0.4835 0.8664 -vn -0.4242 0.8184 0.3877 -vn -0.1184 0.7292 0.6740 -vn -0.1596 0.9871 0.0110 -vn -0.8462 0.4448 0.2936 -vn 0.3318 0.9426 0.0361 -vn -0.4863 0.8671 0.1080 -vn -0.3425 0.9017 0.2638 -vn 0.4989 0.8319 0.2430 -vn -0.1017 0.9761 0.1921 -vn -0.8661 0.4999 -0.0094 -vn 0.5034 0.8322 0.2322 -vn -0.6061 0.7836 -0.1363 -vn -0.5523 0.3505 -0.7564 -vn -0.0048 -0.9999 -0.0108 -vn -0.4214 -0.4880 0.7644 -vn 0.3606 0.9320 0.0370 -vn -0.0299 0.9940 0.1049 -vn -0.9153 -0.4010 0.0381 -vn -0.9271 0.1943 0.3206 -vn -0.3584 0.8615 0.3596 -vn 0.6509 0.6415 0.4059 -vn -0.9903 -0.0967 -0.0998 -vn -0.2717 0.9434 0.1903 -vn -0.0338 -0.9524 -0.3029 -vn -0.1777 0.9736 -0.1434 -vn -0.9290 0.0807 -0.3612 -vn -0.3019 0.8963 0.3249 -vn -0.9484 -0.2350 -0.2128 -vn -0.3525 0.8529 0.3851 -vn -0.2653 0.9440 0.1963 -vn -0.3007 0.8654 0.4008 -vn -0.2799 0.8966 0.3433 -vn 0.2313 -0.9638 -0.1327 -vn -0.9304 -0.3641 0.0427 -vn -0.9567 0.2019 -0.2095 -vn -0.9679 0.1336 -0.2128 -vn -0.9134 -0.4028 -0.0586 -vn 0.3034 0.8037 0.5120 -vn -0.2786 0.8990 0.3380 -vn -0.7854 -0.2971 0.5430 -vn 0.3555 0.9150 0.1907 -vn 0.7000 0.4138 -0.5820 -vn -0.2175 0.8512 0.4777 -vn -0.2252 0.9064 0.3573 -vn -0.1326 0.9904 0.0400 -vn 0.6840 0.2154 -0.6970 -vn 0.6227 0.7658 0.1607 -vn 0.7301 0.6390 0.2421 -vn 0.9100 0.4146 0.0012 -vn 0.7008 0.4631 0.5425 -vn 0.7974 0.5093 0.3237 -vn 0.0156 0.7799 0.6257 -vn -0.3712 0.8801 0.2960 -vn 0.6738 0.6597 0.3327 -vn 0.7915 0.6053 0.0845 -vn 0.1138 0.9238 0.3656 -vn 0.3946 0.7157 -0.5763 -vn 0.1990 0.8968 0.3952 -vn -0.9862 -0.1478 -0.0753 -vn -0.0285 -0.9994 0.0219 -vn -0.4042 -0.1584 0.9008 -vn -0.0894 0.9552 0.2820 -vn -0.8620 0.4958 -0.1060 -vn -0.9362 0.0175 -0.3510 -vn -0.1812 0.7204 0.6694 -vn -0.1925 0.9652 0.1772 -vn -0.8981 0.3734 -0.2325 -vn -0.6761 -0.0227 -0.7365 -vn 0.7450 0.6325 0.2119 -vn -0.1593 -0.4949 0.8542 -vn -0.1560 -0.3619 0.9191 -vn -0.2111 0.3597 0.9089 -vn -0.9910 -0.1311 0.0281 -vn -0.8086 -0.5883 -0.0109 -vn -0.4042 0.8281 0.3885 -vn -0.1260 0.6372 0.7603 -vn -0.3938 -0.5638 -0.7260 -vn -0.0575 0.9177 0.3932 -vn -0.1953 0.3646 0.9105 -vn -0.2758 0.6029 0.7486 -vn -0.0639 0.9835 0.1693 -vn -0.3426 0.7529 0.5619 -vn -0.9986 -0.0331 0.0415 -vn -0.8533 0.2191 -0.4732 -vn -0.4227 0.8143 0.3977 -vn -0.1371 -0.4890 -0.8614 -vn -0.0346 0.8973 0.4400 -vn 0.0134 0.9995 0.0280 -vn 0.0231 0.9975 0.0661 -vn -0.9412 -0.3358 0.0373 -vn -0.2438 0.3809 0.8919 -vn 0.0820 0.9855 -0.1483 -vn -0.8836 -0.4675 -0.0274 -vn 0.0913 -0.5981 -0.7962 -vn 0.1026 -0.1814 0.9780 -vn -0.0940 0.5360 0.8390 -vn -0.9622 0.1105 0.2490 -vn -0.0201 -0.5679 -0.8228 -vn -0.6688 0.2351 -0.7053 -vn -0.5337 0.0787 -0.8420 -vn -0.3575 -0.1299 -0.9248 -vn -0.1209 0.9856 0.1180 -vn -0.1938 0.8634 0.4658 -vn 0.4218 0.7618 0.4916 -vn -0.8781 -0.1769 -0.4446 -vn -0.1822 0.8237 0.5370 -vn -0.5542 0.2812 -0.7834 -vn -0.2515 0.2126 -0.9442 -vn 0.4319 -0.7045 -0.5631 -vn -0.5215 0.6821 -0.5126 -vn 0.0253 0.3374 0.9410 -vn -0.0953 0.6816 0.7255 -vn 0.9738 -0.1576 -0.1642 -vn 0.5621 -0.8028 0.1988 -vn -0.0239 0.9603 0.2779 -vn -0.0379 0.7482 0.6624 -vn -0.9385 0.1265 0.3212 -vn -0.5114 0.1241 -0.8503 -vn 0.0803 0.6060 0.7914 -vn -0.0716 0.9956 -0.0598 -vn 0.0253 -0.9993 -0.0273 -vn -0.2040 0.1025 0.9736 -vn 0.0340 -0.1902 0.9812 -vn 0.2878 0.1797 0.9407 -vn 0.2891 0.1627 0.9434 -vn 0.1120 -0.7109 -0.6943 -vn 0.2409 0.4884 0.8387 -vn 0.5246 -0.8260 0.2063 -vn 0.8664 -0.0204 0.4990 -vn 0.9906 0.0099 -0.1362 -vn -0.0601 0.9981 -0.0120 -vn -0.2030 0.8540 0.4791 -vn -0.9823 -0.1661 -0.0867 -vn 0.3640 -0.9207 0.1405 -vn 0.2792 0.1008 -0.9549 -vn -0.1542 -0.1997 0.9677 -vn -0.1942 0.1004 0.9758 -vn 0.1894 0.4911 0.8502 -vn 0.7746 0.0744 -0.6281 -vn -0.1677 0.9848 -0.0455 -vn -0.9587 0.2533 0.1291 -vn 0.9762 -0.2093 -0.0561 -vn -0.3138 0.1294 0.9406 -vn -0.1061 -0.1200 0.9871 -vn 0.0874 0.2014 0.9756 -vn 0.1783 0.3306 0.9268 -vn 0.1805 0.2390 0.9541 -vn 0.8962 -0.4427 0.0287 -vn -0.0600 -0.9959 0.0676 -vn -0.8126 -0.4008 -0.4232 -vn 0.8659 0.4855 0.1201 -vn 0.8240 0.4964 0.2731 -vn 0.0600 0.9830 -0.1736 -vn -0.9533 0.2480 -0.1722 -vn 0.1633 0.9846 -0.0626 -vn 0.0297 0.8526 0.5217 -vn 0.5719 -0.7992 -0.1851 -vn 0.2023 0.5149 0.8330 -vn 0.1725 0.5743 0.8003 -vn 0.3322 -0.8671 -0.3712 -vn 0.8893 0.4178 -0.1859 -vn 0.9925 -0.1220 0.0003 -vn 0.0258 -0.1474 -0.9887 -vn -0.0961 0.9766 0.1925 -vn -0.9943 -0.0555 -0.0915 -vn -0.3163 0.3935 0.8632 -vn -0.1275 0.1345 0.9827 -vn -0.3905 0.5747 0.7192 -vn -0.0019 -0.5426 -0.8400 -vn -0.1654 -0.3895 0.9060 -vn -0.2138 0.1422 0.9665 -vn -0.1465 0.9802 -0.1329 -vn -0.1369 0.9853 -0.1024 -vn -0.3401 0.3502 0.8728 -vn -0.3796 -0.2296 -0.8962 -vn -0.1223 0.0171 0.9923 -vn -0.2315 0.5410 0.8085 -vn 0.1601 -0.0073 0.9871 -vn -0.2489 -0.6304 0.7353 -vn -0.0473 -0.6915 0.7209 -vn -0.0050 -0.7827 0.6224 -vn 0.0276 -0.0227 0.9994 -vn -0.1456 -0.9707 -0.1911 -vn 0.1939 0.4001 0.8957 -vn 0.7675 -0.3508 -0.5366 -vn -0.8433 0.5221 0.1272 -vn -0.2617 0.9613 0.0858 -vn -0.6812 -0.0830 -0.7274 -vn 0.0059 0.9265 0.3762 -vn 0.0051 0.8474 0.5310 -vn -0.1596 -0.0257 0.9868 -vn -0.0405 0.0988 0.9943 -vn 0.2429 0.5973 0.7644 -vn 0.6721 -0.6985 0.2456 -vn -0.9770 0.0813 -0.1969 -vn 0.5622 -0.7486 -0.3514 -vn 0.9482 -0.1975 -0.2486 -vn 0.8934 -0.3690 -0.2561 -vn -0.0754 0.9834 0.1650 -vn -0.1925 0.9792 -0.0641 -vn 0.2197 0.9742 -0.0520 -vn -0.5060 0.2609 0.8221 -vn -0.3379 0.3980 0.8529 -vn -0.1253 0.1258 0.9841 -vn -0.0797 0.2608 0.9621 -vn 0.3466 -0.0370 0.9373 -vn 0.1910 -0.5881 0.7859 -vn 0.0408 0.5857 0.8095 -vn 0.0508 -0.8347 0.5484 -vn 0.1090 -0.0731 0.9914 -vn -0.0613 -0.7950 0.6036 -vn 0.1068 -0.0678 0.9920 -vn 0.5161 -0.7289 -0.4498 -vn 0.4605 -0.4049 0.7899 -vn 0.9971 0.0459 -0.0600 -vn 0.9101 -0.1518 -0.3856 -vn -0.2655 0.9619 -0.0651 -vn -0.8098 0.3786 -0.4482 -vn 0.3651 -0.3169 -0.8754 -vn -0.0600 0.0825 0.9948 -vn -0.1254 0.2448 0.9614 -vn -0.3855 0.3778 0.8418 -vn -0.1085 0.1284 0.9858 -vn 0.2797 0.6658 0.6918 -vn 0.1919 -0.2499 0.9491 -vn 0.6274 -0.0451 0.7774 -vn -0.0417 0.2769 0.9600 -vn 0.2551 0.3557 0.8991 -vn -0.0617 -0.4667 0.8823 -vn 0.0086 0.0417 0.9991 -vn 0.2377 0.1783 0.9548 -vn 0.0851 -0.1050 0.9908 -vn 0.3136 -0.1364 0.9397 -vn 0.4614 -0.4284 0.7769 -vn 0.5660 0.4682 0.6786 -vn 0.9746 0.2128 -0.0692 -vn 0.9992 0.0246 -0.0325 -vn 0.8358 0.5135 -0.1941 -vn -0.2358 0.8914 0.3870 -vn -0.4053 0.8090 0.4256 -vn -0.3557 0.8981 0.2585 -vn -0.3892 -0.1014 0.9156 -vn -0.3939 0.2959 0.8702 -vn -0.3649 0.0504 0.9297 -vn -0.3144 0.4312 0.8457 -vn 0.4359 -0.0710 0.8972 -vn -0.0239 -0.5276 0.8491 -vn 0.1876 -0.5856 0.7886 -vn -0.0432 0.5893 0.8068 -vn -0.3836 -0.5187 0.7641 -vn 0.1723 -0.2285 0.9582 -vn 0.4310 -0.1576 0.8885 -vn 0.0875 0.2005 0.9758 -vn 0.9726 -0.1604 -0.1682 -vn 0.9271 0.0991 -0.3616 -vn 0.5277 0.2753 0.8036 -vn 0.8468 -0.2834 -0.4501 -vn 0.2500 0.8444 0.4738 -vn 0.3360 0.7935 0.5074 -vn 0.2037 0.7627 0.6139 -vn -0.4924 -0.8704 -0.0061 -vn -0.2266 -0.1933 0.9546 -vn -0.3113 0.1744 0.9342 -vn -0.3934 0.2998 0.8691 -vn 0.0035 -0.2986 0.9544 -vn -0.1128 -0.9933 0.0263 -vn 0.5150 -0.5433 -0.6631 -vn -0.2919 0.1249 0.9483 -vn 0.2419 0.8243 0.5119 -vn 0.1613 0.4898 0.8568 -vn 0.1307 0.4629 0.8767 -vn -0.7681 -0.3987 0.5011 -vn -0.2908 0.7818 0.5516 -vn -0.1513 -0.1845 0.9711 -vn -0.1842 0.4257 0.8859 -vn 0.2851 -0.2806 0.9165 -vn -0.1910 -0.0261 0.9812 -vn 0.2985 -0.4851 0.8220 -vn 0.2587 0.2222 0.9401 -vn 0.2429 0.2161 0.9457 -vn 0.2380 0.9618 0.1349 -vn -0.8203 -0.5167 0.2454 -vn -0.2804 -0.3691 0.8861 -vn -0.1691 0.0813 0.9822 -vn -0.0639 0.0870 0.9942 -vn -0.1027 0.4280 0.8979 -vn -0.1498 0.4651 0.8725 -vn -0.1105 0.5070 0.8549 -vn 0.9112 0.4076 0.0599 -vn 0.0449 0.1939 0.9800 -vn 0.1344 0.3017 0.9439 -vn 0.5094 -0.8379 -0.1961 -vn 0.2653 0.7476 0.6089 -vn 0.7106 0.1625 -0.6846 -vn 0.1017 0.4673 0.8782 -vn 0.0288 0.5395 0.8415 -vn -0.9338 0.0919 -0.3459 -vn -0.3566 0.9340 0.0218 -vn -0.9113 -0.2841 0.2980 -vn -0.2187 0.8430 0.4914 -vn 0.0815 -0.3997 0.9130 -vn 0.1267 -0.2343 0.9639 -vn 0.1550 -0.2885 0.9448 -vn -0.2106 0.2143 0.9538 -vn -0.2361 0.5512 0.8003 -vn -0.1632 0.4639 0.8707 -vn 0.9789 -0.0203 -0.2031 -vn 0.3526 -0.4659 0.8116 -vn 0.0932 0.4319 0.8971 -vn -0.9838 -0.1345 -0.1186 -vn 0.4677 0.7502 0.4673 -vn -0.1681 0.9829 0.0749 -vn -0.2411 0.9498 -0.1994 -vn 0.1526 0.1276 0.9800 -vn -0.0948 0.4301 0.8978 -vn -0.0394 0.1812 0.9827 -vn -0.1378 0.4249 0.8947 -vn 0.0401 0.5318 0.8459 -vn 0.1800 0.2635 0.9477 -vn 0.1100 0.0690 0.9915 -vn 0.7474 -0.5882 -0.3088 -vn 0.0044 -0.7743 0.6327 -vn -0.2857 0.8997 0.3299 -vn -0.2716 -0.2957 0.9159 -vn -0.3093 -0.1905 0.9317 -vn -0.2299 -0.0444 0.9722 -vn -0.0604 0.4682 0.8816 -vn 0.0095 0.0432 0.9990 -vn -0.2772 0.7055 0.6523 -vn 0.0905 0.1688 0.9815 -vn 0.1486 0.3338 0.9309 -vn -0.7090 -0.2246 -0.6684 -vn -0.0422 0.5941 0.8033 -vn -0.0785 -0.7052 0.7047 -vn 0.4918 -0.8397 -0.2304 -vn -0.3150 0.7113 0.6284 -vn 0.8866 0.2722 -0.3739 -vn -0.4967 0.8604 0.1141 -vn -0.1636 0.9258 0.3409 -vn 0.0853 -0.3245 0.9420 -vn 0.2539 -0.1017 0.9619 -vn -0.0631 -0.0739 0.9953 -vn -0.1519 0.1332 0.9794 -vn -0.0885 0.5627 0.8219 -vn 0.1097 0.1204 0.9866 -vn 0.2373 0.6021 0.7623 -vn -0.1057 0.6888 0.7172 -vn 0.2419 0.4968 0.8335 -vn 0.3424 -0.7387 0.5807 -vn -0.2673 -0.6113 0.7449 -vn -0.2892 0.8561 0.4282 -vn 0.0026 0.9869 0.1614 -vn -0.1223 -0.5486 -0.8271 -vn -0.3328 -0.3978 -0.8550 -vn -0.3087 0.1234 -0.9431 -vn -0.0128 -0.1391 0.9902 -vn -0.0178 0.1646 0.9862 -vn -0.0755 0.3593 0.9302 -vn -0.0906 0.5675 0.8184 -vn 0.3073 -0.3557 0.8826 -vn 0.2395 -0.7756 -0.5840 -vn 0.9142 0.2209 -0.3398 -vn 0.0052 -0.7672 0.6413 -vn -0.0987 -0.6488 0.7546 -vn -0.2384 0.4493 0.8610 -vn -0.2030 -0.8720 -0.4455 -vn 0.5631 -0.7971 -0.2182 -vn -0.4902 0.8586 0.1501 -vn -0.1699 0.8915 0.4200 -vn 0.2644 0.8477 0.4599 -vn -0.5225 0.1289 -0.8429 -vn 0.0251 -0.5544 0.8319 -vn -0.4349 -0.1038 0.8945 -vn -0.3735 -0.0131 0.9275 -vn -0.0277 -0.1955 0.9803 -vn 0.0740 0.5238 0.8486 -vn -0.0823 0.0365 0.9959 -vn 0.5549 -0.1573 0.8169 -vn 0.0947 0.4090 0.9076 -vn -0.0170 0.0177 0.9997 -vn 0.1862 0.4768 0.8591 -vn -0.6428 0.2115 -0.7362 -vn -0.2419 -0.1077 -0.9643 -vn 0.0320 -0.5724 0.8194 -vn 0.1882 -0.8904 0.4145 -vn -0.1311 -0.3327 0.9339 -vn -0.1802 -0.2721 0.9452 -vn -0.2799 0.0478 0.9588 -vn -0.2834 0.0292 0.9586 -vn 0.1002 0.4239 0.9001 -vn 0.0198 0.6256 0.7799 -vn -0.0094 0.5602 0.8283 -vn 0.1969 0.0139 0.9803 -vn 0.0706 0.7120 0.6986 -vn 0.1458 0.6186 0.7721 -vn 0.8615 0.3833 -0.3329 -vn 0.2131 0.7505 0.6256 -vn 0.2363 -0.1613 0.9582 -vn 0.6266 0.4288 -0.6508 -vn 0.1410 0.1896 0.9717 -vn -0.2510 0.1472 0.9567 -vn 0.7482 -0.3386 -0.5705 -vn 0.0246 -0.6697 -0.7422 -vn -0.9995 -0.0285 0.0161 -vn -0.0908 0.1741 0.9805 -vn -0.1351 0.2721 0.9527 -vn -0.0117 0.4408 0.8975 -vn -0.0799 0.5570 0.8267 -vn -0.1597 0.3388 0.9272 -vn -0.2969 0.8135 0.5000 -vn 0.0688 -0.4473 0.8917 -vn -0.1043 -0.0765 0.9916 -vn 0.2524 0.3023 0.9192 -vn 0.2452 0.3474 0.9051 -vn -0.2656 -0.4024 0.8761 -vn 0.0746 0.7138 0.6964 -vn 0.0493 0.6822 0.7295 -vn 0.1095 0.4562 0.8831 -vn 0.5339 0.3619 0.7642 -vn 0.9130 0.3608 0.1903 -vn -0.0393 -0.4695 -0.8820 -vn -0.4796 0.7115 -0.5136 -vn 0.1838 0.1026 0.9776 -vn -0.6022 -0.1635 0.7814 -vn -0.5086 -0.6910 -0.5137 -vn -0.3960 -0.3979 -0.8275 -vn 0.1706 -0.4417 0.8808 -vn 0.2434 -0.1303 0.9611 -vn -0.0098 0.1496 0.9887 -vn 0.1714 -0.0818 0.9818 -vn 0.3404 0.2166 0.9150 -vn 0.3044 0.1501 0.9406 -vn 0.2911 0.3840 0.8762 -vn 0.0722 0.5845 0.8082 -vn 0.4714 0.1444 0.8700 -vn -0.0844 -0.7604 0.6439 -vn -0.1321 0.0036 0.9912 -vn -0.0624 -0.0849 0.9944 -vn 0.9832 0.0484 -0.1763 -vn -0.0212 -0.5308 0.8473 -vn 0.2010 0.0147 0.9795 -vn 0.7221 -0.3245 -0.6110 -vn 0.5703 -0.7989 0.1913 -vn -0.9460 -0.2607 -0.1926 -vn 0.6778 -0.6413 -0.3596 -vn 0.1012 0.8627 0.4955 -vn -0.4494 -0.7172 0.5327 -vn -0.2352 -0.3796 -0.8948 -vn -0.2063 -0.2974 0.9322 -vn 0.3038 -0.2475 0.9200 -vn 0.1747 0.2159 0.9606 -vn 0.0872 0.2582 0.9622 -vn 0.0522 0.3190 0.9463 -vn 0.1064 0.3545 0.9290 -vn -0.0296 0.2106 0.9771 -vn -0.1871 0.8010 0.5687 -vn 0.1972 0.3676 0.9088 -vn 0.6546 0.6566 0.3746 -vn 0.6467 0.7022 0.2979 -vn 0.2797 0.0926 -0.9556 -vn -0.1356 0.1625 0.9773 -vn -0.2293 -0.0855 0.9696 -vn -0.2571 0.2519 0.9330 -vn -0.2987 0.2834 0.9113 -vn -0.2157 0.4714 0.8551 -vn 0.3450 0.4818 0.8055 -vn 0.0198 0.5738 0.8187 -vn 0.0164 0.9913 0.1305 -vn 0.0043 -0.2025 0.9793 -vn 0.0766 -0.7412 -0.6669 -vn -0.1135 -0.1437 0.9831 -vn 0.1439 0.2525 0.9568 -vn 0.1341 0.2529 0.9581 -vn -0.2449 -0.9292 -0.2768 -vn 0.2096 0.7227 0.6586 -vn -0.0692 0.6617 0.7466 -vn -0.4299 0.8108 0.3973 -vn -0.3401 0.9025 0.2643 -vn 0.3651 -0.8916 -0.2678 -vn -0.1981 -0.2965 0.9343 -vn 0.0005 -0.3297 0.9441 -vn -0.0135 -0.0558 0.9984 -vn 0.0142 0.3437 0.9390 -vn 0.2504 0.3609 0.8983 -vn 0.3240 -0.4169 0.8492 -vn 0.1972 0.8912 0.4085 -vn 0.0090 0.2904 0.9569 -vn 0.2534 0.4960 0.8306 -vn -0.2055 0.1476 0.9675 -vn 0.1535 0.0945 0.9836 -vn 0.2436 0.4628 0.8523 -vn 0.2056 -0.4472 -0.8705 -vn 0.3030 0.6395 0.7065 -vn -0.1865 -0.0603 0.9806 -vn -0.2681 0.9603 0.0769 -vn -0.4209 -0.5335 -0.7337 -vn -0.0213 -0.0305 0.9993 -vn 0.1003 -0.2202 0.9703 -vn 0.0576 -0.3687 0.9278 -vn 0.0327 0.3502 0.9361 -vn -0.0669 -0.2202 0.9732 -vn 0.0545 0.5690 0.8205 -vn 0.0380 0.4980 0.8663 -vn 0.0185 0.5680 0.8228 -vn -0.2599 -0.2886 0.9215 -vn -0.2605 0.5672 0.7813 -vn 0.6700 -0.6863 0.2831 -vn -0.1458 -0.7932 0.5912 -vn 0.3722 -0.0841 0.9243 -vn -0.1993 0.7590 0.6198 -vn -0.2677 0.6408 0.7196 -vn -0.9028 -0.3868 0.1880 -vn -0.9589 -0.2790 -0.0523 -vn -0.9994 -0.0293 0.0163 -vn 0.0601 0.9830 -0.1736 -vn 0.1355 -0.4885 0.8620 -vn 0.1321 -0.4609 0.8776 -vn 0.1537 -0.3447 0.9260 -vn 0.2794 -0.0138 0.9601 -vn -0.2879 0.2993 0.9097 -vn -0.2814 0.2949 0.9132 -vn -0.0526 0.6419 0.7650 -vn 0.1978 0.6677 0.7176 -vn 0.2712 -0.5808 0.7675 -vn 0.2326 0.4410 0.8668 -vn -0.2789 -0.6506 0.7063 -vn 0.4330 -0.3726 0.8208 -vn 0.2723 0.2799 0.9206 -vn 0.2197 0.4408 0.8703 -vn 0.8085 0.4277 0.4041 -vn -0.5177 0.4454 0.7305 -vn -0.5580 0.1496 0.8162 -vn 0.4287 -0.8876 -0.1685 -vn 0.2446 -0.0560 0.9680 -vn 0.2869 -0.0205 0.9577 -vn 0.1988 0.2970 0.9340 -vn 0.3907 -0.1197 0.9127 -vn 0.2796 0.3322 0.9008 -vn 0.2564 0.4808 0.8385 -vn 0.3995 0.5862 0.7048 -vn 0.0495 0.1350 -0.9896 -vn -0.0541 0.1960 -0.9791 -vn -0.0322 -0.9442 0.3278 -vn 0.2270 0.3416 0.9120 -vn 0.2086 0.2262 0.9515 -vn 0.2664 0.4803 0.8357 -vn 0.3537 -0.7143 0.6039 -vn -0.0279 0.1971 0.9800 -vn -0.1660 0.5949 0.7865 -vn 0.9095 -0.1731 -0.3778 -vn -0.1454 -0.5698 -0.8088 -vn 0.0878 0.6515 0.7536 -vn 0.1228 0.6812 0.7217 -vn -0.1409 0.9893 0.0377 -vn -0.5254 -0.1371 0.8397 -vn 0.4418 -0.2112 0.8719 -vn 0.4414 -0.1926 0.8764 -vn 0.1721 -0.3575 0.9179 -vn 0.2928 -0.0297 0.9557 -vn 0.4112 0.2364 0.8804 -vn -0.2386 0.2389 0.9413 -vn -0.2645 0.3002 0.9165 -vn 0.6153 0.5077 -0.6030 -vn -0.1736 -0.6820 -0.7104 -vn -0.0124 -0.8516 -0.5240 -vn -0.0968 -0.7006 0.7069 -vn 0.1558 0.4261 0.8912 -vn 0.2445 0.6430 0.7258 -vn 0.3086 0.2288 0.9233 -vn -0.0748 0.6346 0.7692 -vn -0.1641 0.4393 0.8832 -vn -0.0210 0.9876 0.1557 -vn -0.3611 -0.1792 0.9151 -vn 0.3852 0.3409 0.8576 -vn -0.0648 0.4260 0.9024 -vn 0.0416 0.5982 0.8002 -vn 0.0059 0.6438 0.7652 -vn -0.1020 0.7004 0.7064 -vn 0.1635 0.7038 0.6913 -vn 0.1039 -0.2813 0.9540 -vn 0.2544 0.0326 0.9666 -vn 0.1503 0.4673 0.8712 -vn -0.2330 -0.3162 0.9196 -vn 0.8718 0.3265 -0.3650 -vn 0.1306 -0.9675 -0.2167 -vn -0.3962 0.2469 0.8843 -vn 0.6757 0.6214 0.3966 -vn -0.7985 0.4352 -0.4159 -vn -0.2757 -0.4020 0.8732 -vn -0.2099 -0.1061 0.9719 -vn -0.1980 0.0389 0.9794 -vn 0.4131 -0.2066 0.8870 -vn 0.4992 -0.2985 0.8134 -vn 0.4099 -0.2445 0.8787 -vn 0.3880 -0.0001 0.9217 -vn 0.4975 0.2129 0.8409 -vn -0.0077 0.2024 0.9793 -vn 0.0010 0.1826 0.9832 -vn -0.0368 0.6715 0.7401 -vn -0.0090 0.6108 0.7917 -vn -0.1309 0.7534 0.6444 -vn 0.6007 -0.7967 -0.0670 -vn 0.5378 -0.5650 0.6258 -vn 0.0708 0.4689 0.8804 -vn -0.8718 -0.4881 0.0419 -vn 0.2014 0.4392 0.8755 -vn -0.3447 -0.1001 0.9334 -vn -0.0375 -0.2020 0.9787 -vn -0.2818 -0.0121 0.9594 -vn -0.2577 0.1788 0.9495 -vn 0.2444 0.1045 0.9640 -vn 0.1642 0.2495 0.9544 -vn -0.1684 0.7642 0.6227 -vn 0.9459 -0.1937 -0.2605 -vn 0.9959 0.0732 -0.0537 -vn -0.2722 0.6844 0.6764 -vn 0.0342 0.3608 0.9320 -vn 0.0705 0.4355 0.8974 -vn -0.7589 0.4691 0.4517 -vn 0.8458 -0.1942 0.4968 -vn 0.3007 0.5434 0.7837 -vn 0.0026 0.2028 0.9792 -vn -0.4584 -0.1792 0.8705 -vn -0.4816 -0.1234 0.8677 -vn -0.4248 -0.0650 0.9030 -vn 0.3208 -0.2675 0.9086 -vn 0.4962 0.0688 0.8655 -vn 0.2515 0.1691 0.9530 -vn 0.2646 0.0050 0.9643 -vn 0.1603 -0.0582 0.9854 -vn 0.2731 0.0529 0.9605 -vn 0.3512 0.2280 0.9081 -vn -0.1122 0.6330 0.7660 -vn 0.7880 -0.1927 -0.5848 -vn 0.8601 0.3875 -0.3319 -vn -0.0300 0.2228 0.9744 -vn -0.0537 0.6357 0.7701 -vn -0.1001 0.4212 0.9014 -vn -0.0912 0.1317 0.9871 -vn -0.0474 -0.1680 0.9847 -vn -0.1645 0.2261 0.9601 -vn -0.2641 -0.0386 0.9637 -vn -0.0180 -0.0105 0.9998 -vn 0.3665 0.2062 0.9073 -vn 0.2675 0.5389 0.7987 -vn 0.1930 0.2069 0.9591 -vn 0.8980 0.2290 -0.3756 -vn -0.2417 -0.3703 0.8969 -vn -0.0928 0.4225 0.9016 -vn 0.1010 0.2962 0.9498 -vn 0.3686 0.4924 0.7884 -vn 0.1050 0.3694 0.9233 -vn -0.8673 0.4181 0.2702 -vn 0.3503 -0.2604 0.8997 -vn 0.1225 0.8058 0.5793 -vn -0.9027 0.0246 -0.4295 -vn -0.0589 0.4155 0.9077 -vn -0.0646 -0.1742 0.9826 -vn -0.0730 -0.2308 0.9703 -vn -0.1847 -0.0673 0.9805 -vn -0.0074 0.1715 0.9852 -vn -0.0367 -0.0897 0.9953 -vn 0.1452 -0.1689 0.9749 -vn 0.1298 -0.2182 0.9672 -vn -0.5218 -0.1781 0.8343 -vn -0.3724 0.0667 0.9257 -vn -0.3519 0.0752 0.9330 -vn 0.0776 0.0702 0.9945 -vn -0.1822 0.0621 0.9813 -vn 0.4426 0.3233 0.8364 -vn 0.6204 -0.1614 -0.7675 -vn -0.7094 -0.7025 -0.0576 -vn 0.8866 0.2497 -0.3894 -vn -0.0161 -0.1891 0.9818 -vn -0.0187 -0.1691 0.9854 -vn 0.2134 -0.1796 0.9603 -vn 0.1591 0.0331 0.9867 -vn 0.2514 0.5011 0.8280 -vn 0.0566 0.4219 0.9049 -vn -0.1001 0.6712 0.7345 -vn 0.2830 0.0312 0.9586 -vn 0.3416 0.4024 0.8493 -vn 0.2265 -0.2029 0.9526 -vn -0.0300 -0.0866 0.9958 -vn -0.3410 0.1024 0.9345 -vn -0.3218 0.0721 0.9441 -vn -0.4080 -0.0116 0.9129 -vn -0.3908 0.2006 0.8983 -vn -0.0944 0.1541 0.9835 -vn -0.2024 0.2993 0.9324 -vn 0.0489 0.5193 0.8532 -vn 0.1429 0.4337 0.8896 -vn 0.2401 -0.5602 0.7928 -vn 0.4644 0.2315 0.8548 -vn 0.1236 0.4286 0.8950 -vn 0.1370 0.0439 0.9896 -vn 0.0842 -0.0671 0.9942 -vn 0.2352 -0.1864 0.9539 -vn -0.0647 -0.2716 0.9602 -vn -0.0780 -0.2399 0.9677 -vn -0.0176 -0.1044 0.9944 -vn -0.3009 0.3094 0.9021 -vn -0.2836 0.2564 0.9240 -vn 0.0047 0.4639 0.8859 -vn 0.2317 0.6050 0.7617 -vn 0.2204 0.6316 0.7433 -vn -0.0377 0.6566 0.7533 -vn 0.8577 -0.4964 -0.1339 -vn 0.1260 0.4260 0.8959 -vn 0.0170 0.3726 0.9279 -vn -0.1093 0.6179 0.7786 -vn 0.3988 0.1377 0.9066 -vn 0.1789 0.4877 0.8545 -vn 0.9944 -0.0746 0.0751 -vn -0.2500 0.9665 -0.0585 -vn 0.2263 0.1383 0.9642 -vn 0.2878 -0.3419 0.8946 -vn -0.0142 0.0394 0.9991 -vn 0.1201 -0.3331 0.9352 -vn 0.0517 -0.1133 0.9922 -vn 0.3864 0.1459 0.9107 -vn -0.2499 -0.0745 0.9654 -vn -0.2054 0.5129 0.8335 -vn -0.0128 0.4700 0.8826 -vn 0.0093 0.5434 0.8394 -vn 0.2452 0.0412 0.9686 -vn 0.1157 0.0143 0.9932 -vn 0.2148 0.5859 0.7814 -vn 0.0230 0.9752 -0.2201 -vn 0.3690 -0.1279 0.9206 -vn 0.2877 -0.3406 0.8951 -vn 0.1986 -0.1082 0.9741 -vn 0.3518 0.0013 0.9361 -vn 0.2609 -0.0449 0.9643 -vn -0.1328 -0.5230 0.8419 -vn -0.0763 0.4298 0.8997 -vn -0.0039 0.5566 0.8308 -vn 0.7661 -0.2534 0.5907 -vn -0.8120 0.2936 -0.5044 -vn 0.4548 -0.2419 0.8571 -vn 0.4696 -0.0716 0.8800 -vn -0.1314 0.0380 0.9906 -vn -0.3317 0.3168 0.8886 -vn -0.2493 0.2423 0.9376 -vn -0.2073 0.3317 0.9203 -vn -0.0851 0.6044 0.7922 -vn 0.0415 -0.6132 0.7888 -vn 0.1987 -0.8806 -0.4302 -vn 0.1593 0.1821 0.9703 -vn 0.6214 0.1210 0.7740 -vn 0.9140 0.1554 0.3749 -vn 0.3965 -0.9090 -0.1284 -vn 0.2756 0.1421 0.9507 -vn 0.5115 -0.1999 0.8357 -vn 0.5378 -0.0492 0.8417 -vn 0.3193 -0.2661 0.9095 -vn 0.1967 -0.0658 0.9782 -vn -0.2875 -0.4101 0.8655 -vn -0.2793 0.4256 0.8607 -vn -0.3583 0.4743 0.8042 -vn -0.1249 0.6047 0.7866 -vn -0.1251 0.6039 0.7872 -vn 0.5105 -0.8373 -0.1959 -vn 0.0274 0.8867 0.4615 -vn -0.2290 0.7861 0.5741 -vn 0.1453 -0.2049 0.9679 -vn 0.0170 0.7942 0.6074 -vn -0.9887 -0.1077 -0.1044 -vn 0.4519 -0.2130 0.8662 -vn 0.4946 -0.1168 0.8612 -vn 0.3687 -0.0328 0.9290 -vn 0.3710 -0.1783 0.9114 -vn 0.1870 0.0302 0.9819 -vn 0.3013 -0.1515 0.9414 -vn 0.3113 -0.0635 0.9482 -vn -0.2061 -0.5713 0.7945 -vn -0.2274 -0.4133 0.8817 -vn -0.0100 0.0048 0.9999 -vn -0.2554 0.4742 0.8425 -vn -0.2675 0.4793 0.8359 -vn -0.1327 0.5630 0.8157 -vn 0.9957 0.0488 -0.0783 -vn 0.6409 -0.6596 -0.3926 -vn 0.7326 -0.5692 -0.3732 -vn 0.0228 -0.2720 0.9620 -vn 0.0086 -0.5787 0.8155 -vn 0.2718 -0.2029 0.9407 -vn -0.2634 0.7210 0.6409 -vn 0.4828 0.3048 0.8210 -vn -0.1625 0.6709 0.7235 -vn 0.9562 -0.0427 0.2897 -vn -0.8937 -0.3280 -0.3061 -vn -0.3646 0.8243 0.4331 -vn 0.3481 -0.1066 0.9314 -vn 0.3713 -0.2802 0.8852 -vn 0.3917 -0.1040 0.9142 -vn 0.1912 -0.0559 0.9800 -vn 0.1526 -0.1183 0.9812 -vn 0.0952 -0.0638 0.9934 -vn 0.9698 0.2310 0.0785 -vn -0.0637 0.5288 0.8464 -vn -0.5792 0.6222 -0.5268 -vn 0.3817 0.2708 0.8837 -vn -0.0636 0.7667 0.6388 -vn 0.8413 -0.4970 -0.2125 -vn -0.0859 0.0414 0.9954 -vn -0.2958 0.8690 0.3966 -vn -0.2436 0.9057 0.3470 -vn 0.3165 -0.1709 0.9331 -vn 0.1867 -0.1997 0.9619 -vn 0.1585 -0.1326 0.9784 -vn -0.4602 -0.2029 0.8643 -vn -0.5227 -0.2689 0.8090 -vn 0.0545 -0.1796 0.9822 -vn 0.0974 -0.0628 0.9933 -vn -0.1266 -0.0503 0.9907 -vn -0.1214 0.2118 0.9697 -vn -0.0807 0.4773 0.8750 -vn -0.0898 0.5169 0.8513 -vn -0.1217 0.4982 0.8585 -vn -0.1156 0.5973 0.7937 -vn -0.1887 0.1817 0.9651 -vn 0.3131 -0.3871 0.8673 -vn -0.0920 0.4752 0.8750 -vn -0.0096 0.0550 0.9984 -vn -0.1985 0.6927 0.6934 -vn -0.7237 -0.6816 -0.1087 -vn 0.3116 -0.1600 0.9366 -vn 0.3154 -0.2072 0.9261 -vn 0.1799 -0.2444 0.9528 -vn 0.1596 -0.1969 0.9674 -vn -0.4177 -0.2617 0.8701 -vn -0.7110 -0.1040 0.6954 -vn -0.8965 -0.1566 0.4145 -vn 0.1675 -0.2103 -0.9632 -vn -0.8677 0.0077 0.4971 -vn -0.5826 0.0892 0.8079 -vn 0.1333 0.4396 0.8883 -vn 0.1590 0.3469 0.9243 -vn -0.2059 0.7378 0.6429 -vn -0.3738 -0.1253 -0.9190 -vn -0.7289 -0.1799 0.6606 -vn 0.3571 -0.2134 0.9094 -vn 0.0818 0.3046 0.9490 -vn -0.1816 0.4367 0.8811 -vn -0.9999 -0.0040 0.0113 -vn -0.2682 0.9433 0.1954 -vn -0.0689 0.8937 0.4434 -vn 0.8098 0.4614 0.3625 -vn 0.3277 -0.8706 -0.3669 -vn -0.1085 -0.3141 0.9432 -vn -0.0989 -0.0965 0.9904 -vn -0.1327 0.5917 0.7952 -vn -0.0477 0.6880 0.7242 -vn -0.0461 0.6770 0.7345 -vn -0.4724 0.6955 -0.5414 -vn -0.4905 0.6997 -0.5194 -vn -0.3842 -0.4187 -0.8228 -vn 0.0350 -0.1090 0.9934 -vn 0.0825 0.4897 0.8680 -vn 0.6066 -0.7937 -0.0465 -vn 0.0162 0.6880 0.7255 -vn 0.8244 0.5031 0.2593 -vn 0.6163 -0.7453 -0.2543 -vn -0.1028 -0.0521 0.9933 -vn -0.3357 -0.2317 0.9130 -vn -0.3409 -0.2620 0.9028 -vn -0.4367 -0.2792 0.8552 -vn -0.4219 -0.2679 0.8662 -vn -0.4385 -0.2758 0.8553 -vn -0.7620 0.5781 0.2917 -vn 0.8925 -0.4378 -0.1086 -vn 0.0357 0.8297 0.5571 -vn -0.4721 0.0808 0.8778 -vn -0.3548 0.2824 0.8913 -vn -0.2135 0.7291 -0.6503 -vn 0.2030 0.8461 0.4929 -vn 0.4874 -0.1658 0.8573 -vn -0.3874 -0.8999 -0.2001 -vn 0.9758 -0.2119 -0.0546 -vn -0.1155 0.4684 0.8759 -vn 0.1329 0.1759 0.9754 -vn -0.1728 0.9756 0.1357 -vn -0.3749 0.7128 0.5928 -vn -0.3554 0.8164 0.4551 -vn -0.6898 -0.2278 0.6873 -vn 0.1552 0.9798 0.1264 -vn -0.6211 0.6411 -0.4507 -vn 0.3410 0.9335 0.1111 -vn 0.6655 0.7237 0.1823 -vn -0.0204 -0.8306 -0.5566 -vn 0.3683 0.3838 0.8468 -vn 0.3677 0.3969 0.8410 -vn -0.2298 0.3922 0.8907 -vn -0.2431 0.5073 0.8268 -vn 0.0864 -0.7400 -0.6671 -vn -0.0187 0.5316 -0.8468 -vn 0.1429 -0.1010 0.9846 -vn -0.0480 -0.4741 0.8791 -vn 0.0118 0.2916 0.9565 -vn 0.2041 0.2676 0.9417 -vn -0.5827 0.6796 -0.4457 -vn -0.4947 0.5402 0.6808 -vn -0.2648 0.3687 0.8910 -vn -0.2619 0.4255 0.8662 -vn 0.7302 0.0734 -0.6793 -vn 0.4496 0.8172 0.3607 -vn -0.0231 0.7442 0.6675 -vn -0.0936 0.7269 0.6804 -vn -0.9184 0.2514 -0.3055 -vn 0.5720 0.7688 0.2858 -vn -0.3537 -0.1538 0.9226 -vn -0.3157 -0.0647 0.9467 -vn -0.2793 0.4823 0.8303 -vn -0.4192 0.6371 0.6468 -vn -0.2607 0.5464 0.7959 -vn -0.2862 0.5787 0.7637 -vn 0.6793 0.0346 0.7330 -vn -0.1339 -0.1946 0.9717 -vn 0.0759 0.4142 0.9070 -vn -0.3297 0.6812 0.6536 -vn -0.1125 0.9069 0.4060 -vn -0.0724 0.9447 0.3198 -vn -0.0825 0.9425 0.3239 -vn -0.3831 0.8516 0.3577 -vn -0.2077 0.7677 0.6062 -vn 0.3394 0.4910 0.8024 -vn 0.0841 0.9695 0.2302 -vn -0.1945 0.9798 -0.0471 -vn 0.1602 0.9744 0.1579 -vn 0.6269 0.6104 0.4842 -vn 0.2987 0.4360 0.8489 -vn -0.1851 0.3840 0.9046 -vn -0.4963 0.5453 0.6755 -vn 0.8838 0.3351 -0.3265 -vn 0.8835 0.3247 -0.3377 -vn -0.1327 -0.5409 0.8306 -vn 0.1959 -0.1628 0.9670 -vn 0.2408 0.5547 0.7964 -vn 0.9499 0.1711 -0.2614 -vn -0.0457 0.8886 0.4565 -vn -0.9645 -0.2616 -0.0355 -vn -0.8727 -0.4619 -0.1584 -vn -0.3203 0.8408 0.4365 -vn 0.8166 0.3736 0.4399 -vn -0.0668 0.1919 0.9791 -vn -0.5399 0.6007 0.5897 -vn -0.4474 0.5875 0.6743 -vn 0.4135 -0.0503 0.9091 -vn 0.1003 0.4728 -0.8754 -vn 0.1395 0.4355 0.8893 -vn 0.0930 0.2058 0.9742 -vn 0.2029 -0.0235 0.9789 -vn -0.0147 0.6540 0.7563 -vn 0.0719 0.8844 0.4611 -vn 0.0102 0.9446 0.3282 -vn -0.6861 0.4526 0.5696 -vn -0.2648 0.6474 -0.7147 -vn -0.0973 -0.5655 -0.8190 -vn -0.9693 0.0785 -0.2328 -vn -0.2361 -0.4408 -0.8660 -vn -0.2274 0.4787 0.8480 -vn -0.3335 0.7086 0.6218 -vn 0.2527 0.3781 0.8906 -vn 0.2828 0.2126 0.9353 -vn -0.3297 0.8296 0.4507 -vn 0.1055 0.7515 0.6513 -vn 0.0885 0.8795 0.4676 -vn -0.4163 0.7285 0.5440 -vn -0.5826 0.1983 0.7882 -vn -0.8616 0.5059 0.0404 -vn -0.7831 0.5254 -0.3327 -vn 0.4719 0.6010 0.6451 -vn 0.0381 0.2004 0.9790 -vn -0.1414 0.4324 0.8905 -vn -0.3256 0.6174 0.7161 -vn -0.0301 -0.9953 -0.0922 -vn -0.0917 0.5894 0.8026 -vn 0.0268 0.4872 0.8729 -vn 0.9085 -0.4167 0.0306 -vn 0.1137 0.4154 0.9025 -vn 0.1146 0.3518 0.9290 -vn 0.1580 0.7531 0.6387 -vn 0.2678 0.9597 -0.0854 -vn -0.0601 0.9977 -0.0300 -vn -0.9112 0.3337 -0.2414 -vn 0.3026 0.9528 -0.0251 -vn 0.1782 0.9059 0.3843 -vn -0.2769 0.9404 -0.1974 -vn 0.3590 0.8848 0.2971 -vn 0.1723 0.3040 0.9370 -vn 0.2093 0.1908 0.9591 -vn -0.1154 0.4272 0.8968 -vn -0.2073 0.5488 0.8098 -vn -0.3417 0.7104 0.6152 -vn 0.4480 0.5070 0.7364 -vn 0.9259 0.1576 -0.3433 -vn 0.0460 0.8712 0.4888 -vn -0.3879 0.7235 0.5711 -vn -0.2741 0.0739 0.9589 -vn -0.6839 -0.3630 0.6328 -vn -0.5719 0.2123 0.7924 -vn -0.7422 -0.1948 0.6412 -vn 0.7812 0.6076 0.1434 -vn -0.3918 0.1945 0.8993 -vn -0.3286 0.8669 0.3749 -vn -0.3253 0.6178 0.7159 -vn 0.9466 -0.0347 -0.3206 -vn 0.0508 -0.0371 0.9980 -vn 0.2175 0.4443 0.8691 -vn -0.5982 -0.3529 0.7194 -vn -0.1240 0.9906 0.0578 -vn -0.9508 0.1251 -0.2835 -vn -0.2347 -0.3114 0.9209 -vn -0.3488 -0.2687 0.8979 -vn 0.4197 0.8904 -0.1760 -vn 0.4159 0.9051 -0.0886 -vn -0.0782 0.1598 0.9840 -vn -0.0843 0.2975 0.9510 -vn -0.2314 0.4020 0.8859 -vn -0.1630 0.5902 0.7906 -vn 0.9336 0.1949 -0.3006 -vn 0.9320 -0.3621 0.0167 -vn -0.2622 -0.4229 -0.8674 -vn -0.3109 0.8434 0.4382 -vn 0.2588 -0.2477 0.9336 -vn 0.0711 0.2069 0.9758 -vn 0.2859 0.6759 0.6793 -vn 0.2507 0.7972 0.5492 -vn -0.2053 0.1140 0.9720 -vn -0.5860 -0.3861 0.7124 -vn -0.3146 0.9455 0.0844 -vn 0.2866 0.9367 -0.2011 -vn -0.2611 -0.4321 0.8632 -vn -0.0467 -0.0030 0.9989 -vn -0.1562 0.4199 0.8940 -vn 0.2009 -0.8893 -0.4108 -vn 0.2425 0.4242 0.8725 -vn 0.0778 0.2951 0.9523 -vn -0.1866 0.5503 0.8138 -vn -0.0245 -0.9064 -0.4216 -vn 0.2471 0.6553 0.7139 -vn 0.0956 0.1267 0.9873 -vn 0.2423 -0.0438 0.9692 -vn 0.0565 -0.2400 0.9691 -vn -0.1264 -0.2259 0.9659 -vn -0.3178 -0.9088 -0.2703 -vn -0.2390 0.5765 0.7814 -vn -0.4187 -0.5406 0.7297 -vn 0.3476 -0.2993 -0.8886 -vn -0.1904 -0.1561 0.9692 -vn -0.2667 -0.2508 0.9306 -vn 0.2163 -0.2731 0.9374 -vn -0.2897 0.2544 0.9227 -vn -0.3305 0.3930 0.8581 -vn -0.1448 0.5072 0.8496 -vn -0.1600 0.5852 0.7950 -vn 0.9314 0.3514 -0.0948 -vn -0.0953 0.4365 0.8947 -vn -0.0169 0.1914 0.9814 -vn 0.1469 -0.8512 -0.5039 -vn -0.2752 0.4465 0.8514 -vn 0.3799 -0.9213 0.0824 -vn 0.3196 0.6321 0.7059 -vn 0.0471 0.6431 0.7643 -vn -0.1706 -0.0171 0.9852 -vn -0.1443 -0.2141 0.9661 -vn -0.3224 -0.4268 0.8449 -vn -0.3123 -0.2543 0.9153 -vn -0.1703 -0.1705 0.9705 -vn -0.2863 -0.2533 0.9240 -vn 0.2300 0.0234 0.9729 -vn 0.3124 0.0916 0.9455 -vn -0.2625 0.2472 0.9327 -vn -0.8865 0.0703 -0.4573 -vn 0.3360 -0.9090 -0.2465 -vn -0.4113 0.1610 0.8972 -vn -0.3979 0.4661 0.7902 -vn 0.9280 -0.1572 -0.3379 -vn -0.1034 0.1579 0.9820 -vn 0.1907 0.3990 0.8969 -vn -0.2753 -0.5604 0.7811 -vn 0.0856 0.9564 0.2794 -vn 0.8066 -0.5472 -0.2238 -vn -0.6888 0.6489 0.3233 -vn 0.5075 -0.4892 -0.7093 -vn -0.1937 -0.0684 0.9787 -vn 0.1525 0.4191 0.8950 -vn 0.2021 0.5092 0.8366 -vn -0.4188 0.4947 0.7615 -vn -0.2886 0.7307 0.6187 -vn 0.6555 -0.7314 -0.1879 -vn 0.1881 0.2058 0.9604 -vn 0.3487 0.5008 0.7922 -vn 0.2106 0.5804 0.7867 -vn 0.2069 0.6106 0.7644 -vn -0.4511 -0.5698 0.6869 -vn -0.0332 0.0905 0.9953 -vn -0.5716 -0.3189 0.7560 -vn -0.0285 -0.3039 0.9523 -vn 0.8278 0.3634 0.4274 -vn 0.2486 -0.3614 0.8986 -vn -0.0904 -0.0459 0.9949 -vn 0.3078 -0.1556 0.9386 -vn 0.2820 -0.1426 0.9488 -vn -0.2860 -0.5339 0.7957 -vn -0.2245 -0.3286 0.9174 -vn -0.1672 -0.0152 0.9858 -vn -0.1202 0.0632 0.9907 -vn -0.0880 0.2851 0.9544 -vn 0.9622 0.2286 -0.1477 -vn 0.2812 0.2866 0.9159 -vn 0.2007 0.5125 0.8349 -vn 0.3748 0.4167 0.8282 -vn -0.4078 -0.2085 0.8889 -vn -0.5010 -0.2151 0.8383 -vn -0.5194 0.1516 -0.8410 -vn -0.4478 -0.2576 0.8562 -vn -0.3079 -0.1080 0.9453 -vn -0.2557 0.0311 0.9663 -vn -0.0850 0.4511 0.8884 -vn 0.1907 -0.8440 -0.5014 -vn 0.3618 0.9317 0.0311 -vn -0.2030 0.3455 0.9162 -vn -0.1891 0.5155 0.8357 -vn 0.9091 -0.1399 -0.3924 -vn -0.0581 0.5478 0.8346 -vn -0.0074 0.5868 0.8097 -vn -0.1740 -0.6162 0.7681 -vn -0.3225 -0.3162 0.8922 -vn 0.2444 0.1874 0.9514 -vn 0.2060 0.0603 0.9767 -vn -0.3080 0.7119 0.6312 -vn 0.9699 0.0964 0.2238 -vn 0.6652 -0.7224 -0.1888 -vn -0.2316 0.4711 0.8512 -vn -0.2308 0.4674 0.8534 -vn -0.1207 0.5947 0.7948 -vn -0.1827 0.7007 0.6897 -vn -0.2418 0.7393 0.6285 -vn 0.6614 -0.7085 -0.2460 -vn 0.3298 -0.4108 0.8500 -vn -0.1342 -0.5546 0.8212 -vn -0.2371 -0.2782 0.9308 -vn -0.3007 -0.0546 0.9522 -vn -0.4018 -0.2732 0.8740 -vn -0.3180 0.0622 0.9461 -vn -0.0821 -0.2878 0.9542 -vn -0.0854 -0.2666 0.9600 -vn -0.1409 0.0677 0.9877 -vn -0.0495 0.1463 0.9880 -vn -0.1102 0.2748 0.9552 -vn -0.1639 0.7873 0.5944 -vn -0.0702 0.1749 0.9821 -vn -0.0094 0.1448 0.9894 -vn 0.9072 -0.4125 -0.0828 -vn 0.6372 -0.4511 -0.6249 -vn 0.2810 0.5583 0.7806 -vn 0.0513 0.0210 0.9985 -vn -0.0166 -0.7462 0.6655 -vn -0.2498 -0.2900 0.9239 -vn -0.2219 -0.4001 0.8892 -vn 0.0734 0.9682 0.2390 -vn -0.2143 0.0882 0.9728 -vn -0.2208 0.1024 0.9699 -vn 0.9065 -0.1272 -0.4026 -vn -0.3335 0.8651 0.3746 -vn -0.3252 0.1290 0.9368 -vn 0.8720 0.2531 -0.4191 -vn 0.1450 0.4264 0.8928 -vn 0.1953 0.0143 0.9806 -vn 0.0492 0.5871 0.8080 -vn 0.1509 0.3874 0.9095 -vn 0.3267 0.4532 0.8294 -vn -0.3560 -0.5993 0.7170 -vn -0.3941 -0.3337 0.8563 -vn -0.4207 -0.0178 0.9070 -vn 0.1053 -0.1476 0.9834 -vn 0.0137 0.4635 0.8860 -vn -0.0933 0.6981 0.7099 -vn -0.5754 0.3896 -0.7191 -vn -0.6102 0.7776 -0.1517 -vn 0.0452 0.5651 0.8237 -vn -0.1801 -0.4979 0.8484 -vn 0.1089 -0.1474 0.9831 -vn -0.0329 0.5104 0.8593 -vn 0.8780 -0.4643 -0.1161 -vn 0.0607 0.3579 0.9318 -vn -0.0651 -0.0858 0.9942 -vn -0.0982 0.3043 0.9475 -vn -0.0465 0.4545 0.8895 -vn 0.0899 0.3229 0.9421 -vn -0.1331 0.5933 0.7939 -vn -0.0885 0.6930 0.7155 -vn -0.8752 -0.4768 -0.0825 -vn 0.1955 0.3832 0.9028 -vn -0.1967 -0.7008 0.6857 -vn 0.1951 -0.0377 0.9801 -vn -0.1213 -0.7696 0.6269 -vn -0.0680 -0.5923 0.8028 -vn -0.0504 -0.1815 0.9821 -vn -0.2444 0.1026 0.9642 -vn -0.3058 0.0418 0.9512 -vn -0.3004 0.1421 0.9432 -vn 0.2581 0.1865 0.9480 -vn 0.3161 0.1274 0.9401 -vn -0.0231 0.3429 0.9391 -vn -0.8146 -0.5681 -0.1170 -vn 0.0272 0.4716 0.8814 -vn -0.0398 0.8613 0.5066 -vn -0.3789 -0.2462 0.8921 -vn -0.0006 -0.3950 0.9187 -vn -0.1213 -0.0967 0.9879 -vn -0.0494 0.1948 0.9796 -vn 0.3493 -0.1275 0.9283 -vn 0.1673 0.2146 0.9623 -vn 0.3286 -0.1572 0.9313 -vn 0.2379 0.7645 0.5991 -vn 0.4973 -0.3061 0.8118 -vn 0.3156 0.1506 0.9369 -vn 0.4995 -0.2181 0.8384 -vn 0.4155 -0.6177 0.6677 -vn 0.4112 0.0399 0.9107 -vn 0.4425 0.5323 0.7217 -vn 0.7955 -0.3400 0.5016 -vn 0.9753 0.0999 -0.1969 -vn -0.7933 -0.5696 0.2149 -vn 0.3076 -0.0359 0.9508 -vn 0.4173 -0.5953 0.6867 -vn -0.2245 -0.5079 -0.8316 -vn 0.6506 -0.5474 0.5263 -vn 0.8870 -0.2213 0.4053 -vn 0.9750 0.0301 -0.2202 -vn 0.7371 -0.3973 0.5467 -vn 0.7463 -0.2907 0.5988 -vn 0.7962 -0.1774 0.5785 -vn 0.0182 -0.9994 -0.0307 -vn -0.3519 0.7435 0.5686 -vn 0.3769 0.1108 0.9196 -vn -0.4518 -0.6167 -0.6447 -vn -0.4448 -0.3809 -0.8106 -vn 0.5756 -0.0232 0.8174 -vn 0.5660 -0.5749 0.5909 -vn 0.4372 -0.4292 0.7904 -vn 0.2373 -0.5050 0.8298 -vn -0.3096 0.4117 -0.8571 -vn 0.4793 -0.4909 0.7276 -vn 0.2697 -0.1979 0.9424 -vn 0.9242 0.2243 -0.3091 -vn 0.9863 -0.0489 -0.1573 -vn 0.8319 -0.5278 -0.1711 -vn 0.6792 -0.1766 -0.7124 -vn 0.5512 -0.3935 0.7358 -vn 0.4671 0.1274 0.8750 -vn 0.2716 -0.0654 0.9602 -vn 0.4563 0.5522 -0.6978 -vn -0.2682 0.5709 -0.7760 -vn 0.4834 0.2837 0.8281 -vn 0.8734 -0.4770 -0.0985 -vn 0.9392 -0.3433 0.0015 -vn 0.3123 -0.7210 0.6185 -vn 0.1719 0.0300 0.9847 -vn 0.4081 0.6170 0.6729 -vn 0.4284 0.3099 0.8488 -vn 0.4481 0.2968 0.8433 -vn 0.5529 -0.1634 0.8170 -vn 0.7562 -0.5802 -0.3025 -vn 0.8448 -0.5249 -0.1038 -vn 0.4825 -0.0612 0.8737 -vn 0.5454 -0.3487 0.7622 -vn 0.5524 0.3460 0.7584 -vn 0.5763 0.4350 0.6918 -vn 0.6098 0.4081 0.6794 -vn 0.7040 0.2048 0.6801 -vn 0.1027 -0.9268 -0.3613 -vn 0.1719 0.2917 0.9409 -vn 0.3047 -0.0177 0.9523 -vn -0.0607 -0.7485 -0.6604 -vn -0.2163 -0.4938 0.8422 -vn 0.5040 0.1699 0.8468 -vn 0.5353 -0.1089 0.8376 -vn 0.6543 -0.1557 0.7401 -vn 0.5666 0.0815 0.8199 -vn 0.6098 0.1866 0.7703 -vn 0.5380 0.3217 0.7791 -vn 0.5484 0.0932 0.8310 -vn 0.4536 0.3481 0.8204 -vn 0.5951 -0.0586 0.8015 -vn 0.6360 -0.5597 0.5313 -vn 0.6467 -0.5452 0.5334 -vn 0.6529 0.4235 0.6280 -vn 0.5255 0.3640 0.7690 -vn -0.1913 0.3899 -0.9008 -vn 0.8743 0.1246 0.4691 -vn 0.8053 -0.0828 0.5870 -vn 0.8146 0.0348 0.5790 -vn 0.8603 -0.1418 0.4897 -vn 0.2542 0.6668 0.7005 -vn 0.5400 0.6286 0.5597 -vn 0.5597 -0.7326 0.3873 -vn 0.6939 0.1962 0.6928 -vn 0.5274 0.3647 0.7674 -vn 0.9014 0.3962 -0.1750 -vn 0.9138 0.0650 0.4009 -vn 0.7251 0.4051 0.5569 -vn 0.8674 0.0224 0.4971 -vn 0.7762 0.3172 0.5449 -vn 0.8358 0.1688 0.5225 -vn -0.1502 0.9363 -0.3174 -vn 0.8671 0.0827 0.4913 -vn -0.1459 0.2459 -0.9582 -vn 0.7841 -0.4533 0.4240 -vn 0.8616 -0.1485 0.4853 -vn 0.8920 -0.0670 0.4471 -vn 0.8735 0.0989 0.4767 -vn 0.8126 0.1946 0.5494 -vn 0.7696 0.1163 0.6279 -vn 0.6339 0.3248 0.7019 -vn 0.3053 -0.4072 0.8608 -vn 0.8427 0.4466 0.3005 -vn 0.5937 0.4744 0.6500 -vn -0.1753 0.2069 -0.9625 -vn 0.6688 -0.6857 0.2873 -vn 0.8149 -0.4748 0.3324 -vn 0.7438 0.4560 0.4887 -vn 0.8483 0.1519 0.5073 -vn 0.6224 0.3205 0.7140 -vn 0.2956 0.6482 0.7018 -vn 0.3599 0.3385 0.8694 -vn 0.3497 -0.9140 -0.2058 -vn 0.6647 0.3661 0.6513 -vn 0.5236 0.4083 0.7477 -vn 0.5403 -0.2454 0.8049 -vn 0.7933 0.3443 0.5022 -vn 0.8585 0.0871 0.5053 -vn 0.7440 -0.4728 0.4721 -vn 0.5201 -0.7978 0.3049 -vn 0.8237 -0.4635 0.3266 -vn 0.7653 0.4371 0.4726 -vn 0.8672 0.1987 0.4566 -vn 0.8297 0.0515 0.5558 -vn 0.7922 0.2247 0.5674 -vn 0.2341 0.6580 0.7157 -vn 0.5559 -0.3727 0.7430 -vn 0.6924 -0.1517 0.7054 -vn 0.8164 0.0055 0.5774 -vn 0.5378 0.3903 0.7473 -vn 0.5745 0.3924 0.7183 -vn 0.8380 0.0903 -0.5381 -vn 0.8375 0.0636 0.5427 -vn 0.1822 0.1227 0.9756 -vn 0.2885 -0.5952 0.7500 -vn 0.9282 -0.1525 0.3394 -vn 0.8486 0.0467 0.5270 -vn 0.7872 0.3551 0.5042 -vn 0.7164 0.4142 0.5615 -vn 0.8759 0.0425 0.4806 -vn 0.9348 -0.3059 -0.1803 -vn -0.9883 0.0195 -0.1512 -vn -0.2900 -0.5991 0.7463 -vn 0.7371 0.2267 0.6366 -vn 0.4535 0.4967 0.7401 -vn 0.5575 0.4389 0.7047 -vn 0.8613 -0.3070 -0.4049 -vn 0.8695 0.0768 -0.4879 -vn 0.8181 -0.2468 0.5194 -vn 0.8482 0.0473 0.5275 -vn 0.8974 0.0705 0.4355 -vn 0.6620 0.2337 0.7121 -vn 0.0817 0.8385 0.5388 -vn 0.3868 -0.4152 0.8234 -vn 0.5761 -0.7937 0.1955 -vn 0.5540 0.1432 0.8201 -vn 0.4524 -0.7281 -0.5150 -vn 0.5887 -0.4125 0.6952 -vn 0.4814 -0.7011 0.5260 -vn 0.6886 -0.5291 0.4959 -vn 0.7591 -0.2204 0.6125 -vn 0.7246 0.2977 0.6216 -vn 0.5581 0.4453 0.7001 -vn 0.6053 0.4299 0.6699 -vn 0.8772 -0.0016 0.4801 -vn 0.8962 -0.0942 0.4335 -vn 0.7021 0.0040 0.7120 -vn -0.4709 -0.4961 -0.7295 -vn 0.5728 -0.7712 -0.2778 -vn 0.7757 -0.6083 0.1682 -vn 0.0777 -0.0962 0.9923 -vn 0.6694 -0.5981 0.4407 -vn 0.6911 -0.5305 0.4908 -vn 0.6063 0.4368 0.6645 -vn 0.5076 -0.1852 0.8415 -vn 0.5272 -0.4956 0.6903 -vn 0.5140 -0.0009 0.8578 -vn -0.9732 0.0570 -0.2228 -vn 0.7464 0.3492 0.5665 -vn 0.8205 -0.2691 0.5043 -vn 0.3522 0.5424 0.7627 -vn 0.8219 0.0448 0.5679 -vn 0.5055 -0.5085 0.6971 -vn 0.4193 -0.3625 0.8323 -vn 0.4555 0.0261 0.8899 -vn 0.4950 0.2555 0.8305 -vn 0.3626 0.4155 0.8342 -vn 0.4147 0.0020 0.9099 -vn -0.0843 0.1224 -0.9889 -vn -0.4400 0.0989 -0.8925 -vn -0.1770 -0.9842 0.0058 -vn 0.3849 0.4968 0.7779 -vn -0.2658 -0.6052 -0.7504 -vn 0.6705 0.4058 0.6212 -vn 0.7929 0.0593 0.6065 -vn 0.5403 0.0545 0.8397 -vn 0.4179 0.4278 0.8015 -vn 0.4457 0.5613 0.6973 -vn 0.2552 -0.6350 0.7291 -vn 0.5113 -0.2335 0.8271 -vn 0.5189 0.4634 0.7183 -vn 0.5831 -0.2983 0.7556 -vn 0.6049 -0.2105 0.7679 -vn 0.4994 -0.0595 0.8643 -vn 0.1504 -0.1681 0.9742 -vn 0.9949 0.0848 0.0550 -vn 0.2137 -0.1235 0.9691 -vn 0.7959 -0.2797 0.5369 -vn 0.9060 -0.3575 -0.2265 -vn 0.3103 0.6179 0.7224 -vn -0.8991 -0.4331 0.0642 -vn 0.3726 0.4623 0.8046 -vn 0.4026 0.4361 0.8048 -vn 0.3695 0.5704 0.7335 -vn 0.7512 -0.1940 0.6309 -vn 0.6603 -0.3958 0.6382 -vn 0.6993 0.0515 0.7130 -vn 0.3403 0.1572 0.9271 -vn 0.3768 -0.9019 -0.2110 -vn 0.2168 0.8089 0.5465 -vn 0.6756 0.3978 0.6208 -vn 0.4070 -0.3592 0.8399 -vn 0.4748 -0.4877 0.7326 -vn 0.3978 -0.5011 0.7685 -vn 0.5145 0.3839 0.7667 -vn 0.3181 0.3312 0.8883 -vn 0.2848 0.3538 0.8909 -vn 0.3662 0.2383 0.8995 -vn -0.1706 0.9853 0.0079 -vn 0.6912 -0.1243 0.7119 -vn 0.4390 -0.1339 0.8884 -vn 0.7249 0.3730 -0.5792 -vn 0.5168 -0.2654 0.8139 -vn 0.5490 0.1973 0.8122 -vn 0.9249 0.3747 0.0647 -vn 0.6267 0.2885 0.7239 -vn 0.5978 0.3790 0.7064 -vn 0.4929 0.3856 0.7800 -vn 0.4329 0.0688 0.8988 -vn 0.8200 -0.3647 0.4411 -vn 0.9050 -0.1267 0.4062 -vn 0.9105 -0.1358 0.3906 -vn 0.8757 -0.0012 0.4828 -vn 0.8330 -0.1375 0.5359 -vn 0.5782 0.5333 0.6175 -vn 0.5711 0.4570 0.6820 -vn 0.7808 -0.1687 -0.6016 -vn 0.7956 -0.1775 0.5793 -vn 0.6949 0.4223 0.5821 -vn 0.5512 -0.7737 0.3124 -vn 0.6130 -0.2572 0.7470 -vn 0.5119 -0.2314 0.8273 -vn 0.6082 0.3607 0.7071 -vn 0.6772 -0.2020 0.7075 -vn 0.3962 0.5874 0.7057 -vn 0.8951 -0.0118 -0.4458 -vn 0.2674 0.2383 0.9336 -vn 0.0640 0.4264 -0.9023 -vn 0.7509 -0.0247 0.6600 -vn 0.6038 0.3571 0.7127 -vn 0.1146 -0.7495 -0.6520 -vn 0.5299 -0.4069 0.7441 -vn 0.7688 -0.2921 0.5689 -vn 0.5030 -0.0615 0.8621 -vn 0.6167 -0.3630 0.6985 -vn 0.1821 0.7959 0.5774 -vn 0.6273 -0.2922 0.7218 -vn 0.6942 0.2526 0.6740 -vn 0.6197 0.1901 0.7614 -vn 0.5699 -0.0409 0.8207 -vn -0.0448 -0.9986 -0.0270 -vn 0.3020 -0.1273 0.9448 -vn 0.7946 -0.5450 -0.2676 -vn 0.6010 -0.0104 0.7992 -vn 0.3908 -0.1310 0.9111 -vn 0.6178 -0.5014 0.6057 -vn 0.6634 0.1666 0.7295 -vn 0.5737 0.4714 0.6698 -vn 0.6950 -0.6947 0.1853 -vn 0.5746 0.1469 0.8051 -vn -0.8852 0.4594 -0.0734 -vn 0.1336 -0.3190 0.9383 -vn 0.6984 -0.3878 0.6015 -vn 0.7207 0.1376 0.6795 -vn 0.6690 0.2118 0.7124 -vn 0.6195 0.3799 0.6869 -vn 0.5750 0.5176 0.6336 -vn 0.6575 0.2715 0.7028 -vn 0.6479 -0.2221 0.7286 -vn 0.7287 0.2655 0.6313 -vn 0.3577 0.4764 0.8032 -vn 0.5348 -0.2387 0.8106 -vn 0.3113 0.3426 0.8864 -vn 0.3514 0.1323 0.9268 -vn 0.3866 0.1986 0.9006 -vn -0.1092 -0.5798 -0.8074 -vn 0.4647 0.1742 0.8682 -vn 0.6194 -0.3198 0.7170 -vn 0.6350 0.4272 0.6437 -vn 0.7692 0.1975 0.6077 -vn 0.8861 -0.1116 0.4498 -vn 0.7749 0.0834 0.6266 -vn 0.9627 0.2236 -0.1526 -vn 0.1313 0.5035 0.8539 -vn 0.2270 0.2534 0.9403 -vn 0.3776 -0.3387 0.8618 -vn 0.7165 0.3907 0.5780 -vn 0.9938 -0.0816 0.0761 -vn 0.3221 -0.1401 0.9363 -vn 0.4938 -0.0035 0.8696 -vn 0.7458 -0.1053 0.6577 -vn 0.8437 -0.0532 0.5342 -vn 0.2730 -0.0429 0.9611 -vn 0.6986 -0.4500 0.5563 -vn 0.5212 -0.6052 0.6017 -vn 0.8497 -0.5222 -0.0729 -vn 0.5628 -0.0903 0.8217 -vn 0.4442 0.1558 0.8823 -vn 0.4203 0.4260 0.8012 -vn 0.2796 0.4359 0.8554 -vn 0.0268 -0.6710 -0.7410 -vn 0.3806 0.5245 0.7616 -vn -0.1879 -0.7766 -0.6013 -vn 0.5382 -0.7030 0.4649 -vn 0.3051 0.4973 0.8122 -vn 0.4970 0.2602 0.8278 -vn 0.5395 0.3302 0.7745 -vn 0.9438 0.0762 0.3215 -vn 0.2093 -0.7220 -0.6595 -vn 0.3060 0.2522 0.9180 -vn -0.1185 -0.5455 -0.8297 -vn 0.4631 -0.8834 0.0719 -vn 0.6113 0.0834 0.7870 -vn 0.2104 -0.3654 0.9068 -vn 0.6793 0.0346 0.7331 -vn 0.5424 0.0694 0.8372 -vn -0.3724 0.5367 0.7572 -vn 0.4801 -0.0404 0.8763 -vn 0.3108 0.1662 0.9358 -vn 0.4709 0.1809 0.8634 -vn 0.7126 -0.0514 0.6997 -vn 0.7913 0.1216 0.5992 -vn 0.6293 0.4274 0.6490 -vn 0.7551 -0.3090 0.5782 -vn 0.3857 0.8847 0.2619 -vn 0.3230 0.9223 0.2121 -vn 0.2564 -0.4582 0.8510 -vn 0.0938 -0.6338 -0.7678 -vn 0.0380 0.3665 0.9296 -vn 0.6788 -0.0971 0.7278 -vn 0.9164 0.0587 0.3960 -vn 0.6531 -0.1173 0.7481 -vn 0.5633 -0.2171 0.7972 -vn 0.6581 -0.1588 0.7360 -vn 0.7728 0.2418 0.5867 -vn 0.3966 0.4867 0.7784 -vn 0.6372 0.0534 0.7688 -vn 0.5593 0.4158 0.7172 -vn 0.4750 0.7075 0.5232 -vn 0.4916 0.2466 0.8352 -vn 0.6742 -0.3078 0.6714 -vn 0.6325 -0.2416 0.7360 -vn 0.7926 0.1018 0.6012 -vn 0.7241 0.5345 0.4359 -vn 0.8268 0.2082 0.5225 -vn 0.8083 0.1630 0.5657 -vn 0.7393 0.0723 0.6695 -vn 0.0146 0.6744 0.7382 -vn 0.8844 0.1888 0.4268 -vn 0.7670 0.3431 0.5422 -vn 0.6437 -0.4347 0.6299 -vn 0.4505 0.1601 0.8783 -vn 0.2893 0.5541 0.7806 -vn 0.4437 0.5400 0.7152 -vn 0.4123 0.4893 0.7685 -vn 0.7839 -0.3358 0.5223 -vn 0.2748 0.4720 0.8377 -vn 0.7674 0.1101 0.6317 -vn 0.8040 0.2580 0.5357 -vn 0.5311 -0.4706 0.7045 -vn 0.3105 0.6180 0.7223 -vn 0.6840 -0.0782 0.7253 -vn 0.6018 -0.6678 0.4380 -vn 0.4972 0.2910 0.8174 -vn 0.6133 -0.3221 0.7212 -vn 0.5355 -0.5399 0.6494 -vn 0.7909 -0.6002 -0.1190 -vn 0.6747 -0.1704 0.7181 -vn 0.5529 0.2497 0.7949 -vn 0.8874 -0.0615 0.4568 -vn 0.4849 0.1638 0.8591 -vn 0.8593 0.0111 0.5113 -vn 0.5916 -0.3806 0.7108 -vn 0.6815 0.1620 0.7137 -vn 0.4578 -0.0146 0.8889 -vn 0.7714 -0.2843 0.5693 -vn 0.4622 -0.2150 0.8603 -vn 0.3997 -0.5324 0.7462 -vn 0.9214 0.1154 0.3711 -vn 0.8147 -0.1211 0.5671 -vn 0.9196 0.1306 0.3706 -vn 0.8115 0.2327 0.5360 -vn 0.5670 -0.5027 0.6525 -vn 0.3721 -0.0396 0.9273 -vn 0.8497 0.5240 0.0581 -vn 0.8828 -0.0828 0.4625 -vn -0.9712 -0.2375 0.0203 -vn -0.0795 0.4884 -0.8690 -vn 0.3217 0.6117 0.7227 -vn 0.1152 -0.3701 0.9218 -vn 0.6109 -0.0468 0.7904 -vn 0.8913 -0.0115 0.4532 -vn 0.8089 0.4398 0.3902 -vn -0.0808 0.0395 0.9960 -vn 0.3011 0.3216 0.8977 -vn 0.7533 -0.1267 0.6454 -vn 0.6298 0.1452 0.7631 -vn 0.5980 0.3310 0.7300 -vn 0.3860 0.6172 0.6856 -vn 0.6503 0.0272 -0.7592 -vn 0.8890 -0.3858 -0.2465 -vn 0.7255 0.3630 0.5846 -vn 0.1230 0.2799 0.9521 -vn 0.2939 0.3262 0.8984 -vn 0.2394 0.7067 0.6658 -vn 0.5771 -0.0888 0.8119 -vn 0.4575 -0.8892 0.0115 -vn -0.2280 -0.3874 -0.8933 -vn -0.7338 0.2083 -0.6466 -vn 0.8240 -0.1786 0.5377 -vn 0.1586 -0.5881 -0.7931 -vn 0.4166 -0.3179 0.8517 -vn 0.0642 0.2789 0.9582 -vn 0.5777 -0.4020 0.7104 -vn 0.4806 0.5811 0.6567 -vn 0.8990 0.1859 0.3966 -vn 0.8274 0.4294 0.3620 -vn 0.6565 0.4000 0.6395 -vn 0.7919 -0.0748 0.6060 -vn 0.5919 -0.5205 0.6154 -vn 0.0959 -0.0420 0.9945 -vn 0.3513 0.0100 0.9362 -vn 0.1613 -0.8085 -0.5660 -vn 0.6902 -0.4316 0.5808 -vn 0.6172 0.3316 0.7135 -vn 0.6188 -0.6837 -0.3869 -vn 0.8064 0.0639 0.5880 -vn 0.5021 -0.1932 0.8429 -vn 0.5332 0.1880 0.8249 -vn 0.4855 0.1269 0.8650 -vn 0.9102 -0.0887 0.4045 -vn -0.3813 0.2283 -0.8958 -vn 0.3559 -0.1060 0.9285 -vn 0.3452 0.2880 0.8932 -vn 0.3504 0.2932 0.8895 -vn 0.4616 -0.6617 0.5908 -vn 0.1453 0.8843 0.4438 -vn 0.3837 0.5933 0.7076 -vn 0.7613 0.5887 0.2718 -vn 0.1246 -0.5788 -0.8059 -vn 0.6171 -0.5022 0.6058 -vn 0.8409 -0.2582 0.4756 -vn 0.8206 -0.0675 0.5675 -vn 0.8622 -0.0019 0.5065 -vn 0.7227 -0.2344 0.6502 -vn 0.6559 -0.0940 0.7489 -vn 0.5241 0.4177 0.7422 -vn 0.4643 -0.0837 0.8817 -vn 0.7302 0.5522 -0.4022 -vn 0.3265 0.6282 0.7063 -vn 0.8198 -0.3042 0.4852 -vn 0.6338 -0.2886 0.7176 -vn 0.1924 -0.2809 0.9402 -vn 0.2147 -0.0452 0.9756 -vn 0.4263 0.3485 0.8347 -vn 0.7139 0.3843 0.5854 -vn 0.7947 -0.0773 0.6020 -vn -0.0792 -0.7596 -0.6455 -vn 0.8410 -0.2570 0.4760 -vn -0.5179 0.7437 -0.4228 -vn 0.9014 0.1934 0.3874 -vn 0.9042 0.2426 0.3515 -vn 0.9604 0.2175 -0.1742 -vn 0.3370 0.2495 0.9079 -vn 0.3722 -0.9263 -0.0584 -vn 0.6965 -0.3372 0.6334 -vn -0.6849 0.6567 0.3158 -vn -0.5394 -0.7917 0.2868 -vn 0.8692 0.3513 0.3481 -vn 0.6552 -0.0682 0.7523 -vn 0.4554 -0.0816 0.8865 -vn 0.7722 0.1116 0.6255 -vn -0.2813 0.2396 -0.9292 -vn 0.3128 0.2884 0.9050 -vn 0.2545 -0.0936 0.9625 -vn 0.4670 0.4862 0.7386 -vn 0.3825 0.0623 0.9219 -vn 0.7958 -0.4785 -0.3711 -vn 0.9968 0.0636 0.0487 -vn 0.4697 0.1336 0.8727 -vn 0.6791 -0.7268 -0.1026 -vn 0.8051 0.5521 -0.2170 -vn 0.5786 -0.0636 0.8131 -vn 0.5762 -0.0232 0.8170 -vn 0.4166 -0.8756 0.2444 -vn 0.7813 -0.3365 0.5258 -vn 0.7494 -0.2136 0.6267 -vn 0.4696 -0.6512 0.5962 -vn 0.9450 -0.0351 0.3251 -vn 0.5179 -0.2089 0.8295 -vn 0.5798 -0.4646 0.6693 -vn -0.2259 -0.4715 -0.8524 -vn 0.2371 0.6511 0.7210 -vn 0.6351 -0.7423 0.2137 -vn 0.9339 0.0410 0.3551 -vn 0.9420 -0.0976 0.3210 -vn -0.6604 -0.7232 -0.2022 -vn 0.6230 -0.0598 0.7800 -vn 0.8604 -0.5083 0.0362 -vn 0.3897 -0.5961 0.7020 -vn 0.7028 0.3681 0.6087 -vn 0.5513 -0.3912 0.7369 -vn 0.5593 0.7473 -0.3589 -vn 0.3756 0.5630 0.7362 -vn -0.8362 -0.3402 -0.4302 -vn 0.7213 -0.6856 -0.0985 -vn 0.2258 0.8470 0.4812 -vn 0.2090 0.7545 0.6221 -vn 0.4063 -0.0991 0.9084 -vn 0.8211 -0.2241 0.5250 -vn 0.5928 -0.5074 0.6254 -vn 0.6498 0.5489 0.5258 -vn 0.6070 0.0408 0.7936 -vn 0.5181 -0.2636 0.8137 -vn 0.6686 -0.7262 -0.1596 -vn 0.6052 -0.0366 0.7952 -vn 0.2127 -0.3308 -0.9194 -vn 0.2781 0.3183 0.9063 -vn 0.6754 -0.0428 0.7362 -vn 0.6155 -0.3857 0.6873 -vn 0.5922 -0.2180 0.7758 -vn 0.8682 0.2466 0.4307 -vn 0.8697 0.2700 0.4132 -vn -0.5487 0.7811 0.2980 -vn 0.2713 0.3802 0.8842 -vn 0.3592 -0.9300 -0.0779 -vn 0.0290 0.1260 -0.9916 -vn 0.1627 -0.9538 -0.2524 -vn 0.9828 0.1762 0.0553 -vn -0.4837 0.8360 0.2590 -vn -0.2166 -0.2788 -0.9356 -vn 0.7524 0.1351 0.6447 -vn 0.5000 0.5952 0.6290 -vn 0.5457 0.1940 0.8152 -vn 0.7121 0.2248 0.6651 -vn 0.9989 0.0266 -0.0398 -vn 0.2373 0.0382 0.9707 -vn 0.8055 0.3394 0.4858 -vn 0.1971 -0.0753 0.9775 -vn 0.8548 -0.4988 -0.1430 -vn 0.8920 -0.4281 -0.1454 -vn 0.3120 0.0044 0.9501 -vn 0.3787 0.5031 0.7768 -vn 0.8586 0.4960 0.1296 -vn 0.4741 -0.3327 0.8152 -vn 0.3784 0.2098 0.9015 -vn 0.6270 0.0279 0.7785 -vn 0.7249 -0.1111 0.6799 -vn 0.3549 -0.0560 0.9332 -vn 0.5051 0.0701 0.8602 -vn 0.8959 -0.3344 -0.2924 -vn 0.4023 0.3855 0.8304 -vn 0.9972 -0.0458 -0.0598 -vn 0.8985 0.0490 -0.4362 -vn 0.3112 -0.0179 0.9502 -vn 0.8019 -0.3313 0.4972 -vn 0.1257 0.9253 0.3579 -vn 0.9351 -0.0517 0.3507 -vn 0.7524 -0.4631 0.4685 -vn -0.7891 -0.5890 0.1745 -vn -0.0586 0.8161 0.5749 -vn 0.9402 0.3270 0.0950 -vn 0.6676 -0.5829 0.4632 -vn 0.5958 -0.0032 0.8031 -vn 0.1656 0.1240 0.9784 -vn 0.6242 -0.7258 0.2889 -vn -0.0861 -0.4290 -0.8992 -vn 0.8211 0.3325 0.4640 -vn 0.9160 0.2042 -0.3452 -vn 0.7627 0.0047 0.6467 -vn 0.7214 -0.5139 0.4642 -vn 0.4553 -0.5724 0.6820 -vn 0.2416 -0.3550 0.9031 -vn 0.7582 0.3827 0.5280 -vn 0.3143 -0.0458 0.9482 -vn 0.6788 0.5847 -0.4443 -vn 0.5003 -0.6606 -0.5597 -vn 0.5951 0.1547 0.7886 -vn 0.0847 -0.7767 -0.6241 -vn 0.9621 0.1548 0.2243 -vn 0.7941 -0.1866 0.5784 -vn 0.7069 0.2607 0.6575 -vn 0.6816 -0.0977 0.7252 -vn 0.4838 -0.0141 0.8751 -vn 0.8850 0.0037 0.4656 -vn 0.7310 -0.2566 0.6323 -vn 0.6880 0.0775 0.7216 -vn 0.4839 -0.6847 -0.5450 -vn 0.3203 -0.3856 0.8653 -vn 0.4148 -0.3379 0.8449 -vn 0.6377 -0.4531 0.6229 -vn 0.8730 -0.1931 0.4478 -vn 0.5416 0.0149 0.8405 -vn 0.1997 0.8511 -0.4856 -vn 0.7974 0.0002 0.6034 -vn 0.5682 -0.3992 0.7196 -vn 0.2978 0.3207 0.8991 -vn 0.2064 0.3648 0.9079 -vn 0.9783 0.2072 -0.0096 -vn 0.4140 0.2320 0.8802 -vn 0.7185 -0.3714 0.5881 -vn 0.3081 -0.0823 0.9478 -vn 0.3320 0.2705 0.9037 -vn 0.6261 0.4332 -0.6484 -vn 0.5652 0.0389 0.8241 -vn 0.1841 0.2142 0.9593 -vn 0.6975 -0.2201 0.6819 -vn 0.7771 0.4018 0.4845 -vn 0.5218 0.2060 0.8278 -vn 0.3826 0.1647 0.9091 -vn 0.8348 -0.0397 0.5491 -vn 0.2119 0.3918 0.8953 -vn 0.3237 -0.0330 0.9456 -vn 0.7373 0.0483 0.6738 -vn 0.7773 -0.3484 0.5238 -vn 0.7380 -0.3812 0.5568 -vn 0.2580 -0.0656 0.9639 -vn 0.6720 0.1117 -0.7321 -vn 0.3336 -0.1720 0.9269 -vn 0.4256 -0.0546 0.9033 -vn 0.5535 0.0730 0.8297 -vn 0.7517 -0.0261 0.6590 -vn 0.4720 -0.3806 0.7952 -vn 0.1195 0.8958 0.4280 -vn 0.2484 -0.0896 0.9645 -vn 0.3592 0.0310 0.9327 -vn 0.8274 -0.1035 0.5520 -vn 0.4965 0.3998 0.7705 -vn 0.7389 0.0558 0.6716 -vn 0.8816 0.1335 0.4526 -vn 0.6556 0.2863 0.6987 -vn 0.7391 -0.3954 0.5454 -vn 0.6293 0.3538 0.6920 -vn 0.1328 0.8898 0.4366 -vn 0.3773 0.1834 0.9077 -vn 0.9793 0.1192 0.1635 -vn 0.5930 -0.1548 0.7902 -vn 0.5293 -0.2007 0.8244 -vn 0.2824 0.3030 0.9102 -vn 0.2850 0.6269 0.7251 -vn 0.4346 -0.4528 0.7785 -vn 0.7843 -0.3709 0.4974 -vn -0.6632 0.2747 -0.6962 -vn 0.8366 -0.0832 0.5415 -vn 0.7174 -0.5804 0.3852 -vn 0.4114 -0.1443 0.9000 -vn -0.9855 0.1085 -0.1304 -vn 0.5235 -0.0291 0.8516 -vn -0.2388 0.2462 -0.9393 -vn 0.6015 0.4101 0.6856 -vn 0.3072 0.5817 0.7532 -vn 0.3312 0.2794 0.9013 -vn 0.5557 0.7052 0.4404 -vn 0.7316 0.3746 0.5697 -vn 0.2906 -0.3387 0.8949 -vn 0.7928 0.2963 0.5326 -vn 0.3793 -0.2366 0.8945 -vn 0.9949 0.0850 0.0543 -vn -0.1587 0.7497 -0.6424 -vn 0.6314 -0.4041 0.6618 -vn 0.4060 -0.1835 0.8952 -vn 0.2207 -0.1159 0.9684 -vn 0.7715 -0.6361 -0.0143 -vn 0.6168 -0.5532 0.5599 -vn 0.6222 -0.2986 0.7236 -vn 0.7257 -0.0421 0.6867 -vn 0.3598 0.2041 0.9104 -vn 0.8681 0.0511 -0.4937 -vn 0.4724 -0.2430 0.8473 -vn 0.5796 0.3522 0.7349 -vn 0.5815 -0.0119 0.8135 -vn 0.7113 -0.1298 0.6908 -vn 0.5136 -0.8006 0.3086 -vn 0.6076 -0.2153 0.7645 -vn 0.9343 -0.0556 0.3522 -vn 0.8105 -0.3538 0.4668 -vn 0.7642 -0.3515 -0.5407 -vn 0.5491 -0.0842 0.8315 -vn -0.0632 0.5085 0.8587 -vn -0.0004 0.6773 0.7357 -vn 0.4489 0.3409 0.8260 -vn 0.8724 -0.0044 -0.4888 -vn 0.3012 0.0048 0.9535 -vn 0.5960 -0.1723 0.7843 -vn 0.2820 0.1347 0.9499 -vn 0.9929 0.0906 0.0768 -vn 0.4550 -0.1166 0.8828 -vn 0.4303 -0.0054 0.9026 -vn 0.6988 0.1832 0.6914 -vn 0.9671 0.2007 -0.1561 -vn 0.5260 -0.4202 0.7394 -vn 0.6282 -0.2416 0.7396 -vn 0.5711 0.6787 0.4617 -vn 0.6111 0.2889 0.7369 -vn 0.8160 0.5176 -0.2572 -vn 0.7717 0.3485 0.5320 -vn 0.1640 0.4870 0.8579 -vn 0.3906 -0.1434 0.9093 -vn 0.2543 0.2328 0.9387 -vn 0.2450 0.7506 0.6137 -vn 0.7745 -0.1447 0.6158 -vn 0.6994 0.1638 0.6957 -vn 0.7611 -0.0151 0.6485 -vn 0.7315 -0.3103 0.6072 -vn 0.7024 -0.3810 0.6012 -vn 0.5935 0.1209 0.7957 -vn 0.7669 -0.2699 0.5823 -vn -0.0164 0.4130 -0.9106 -vn 0.7185 0.4070 0.5641 -vn -0.4637 -0.0190 -0.8858 -vn 0.3851 0.1282 0.9139 -vn 0.3819 -0.7045 -0.5982 -vn 0.9313 -0.0747 -0.3565 -vn 0.5814 -0.3358 0.7411 -vn 0.2041 0.7596 0.6176 -vn 0.5539 0.2333 0.7992 -vn 0.6372 -0.2639 0.7241 -vn 0.9201 0.0554 -0.3878 -vn -0.2560 -0.5729 -0.7786 -vn 0.3404 -0.0029 0.9403 -vn 0.7638 0.0362 0.6445 -vn 0.8614 -0.0320 0.5070 -vn 0.4407 0.6269 0.6424 -vn 0.4486 -0.4967 0.7430 -vn 0.5710 -0.6370 0.5180 -vn 0.3904 0.2715 0.8797 -vn 0.6828 -0.4088 0.6055 -vn 0.5944 0.4746 0.6491 -vn 0.8203 -0.1172 0.5598 -vn 0.4196 0.4445 0.7914 -vn 0.4711 0.2349 0.8502 -vn 0.8436 0.1780 0.5066 -vn -0.2428 0.6018 0.7608 -vn 0.2778 0.0244 0.9603 -vn 0.9062 -0.0309 0.4217 -vn 0.5585 -0.0051 0.8295 -vn 0.3589 0.4367 0.8249 -vn 0.5684 0.1504 0.8089 -vn 0.6109 0.1738 0.7724 -vn 0.5541 0.0583 0.8304 -vn 0.7690 -0.2868 0.5713 -vn 0.6237 0.3910 0.6768 -vn -0.7216 0.0808 -0.6876 -vn 0.6284 -0.7540 -0.1912 -vn 0.6567 0.2910 0.6958 -vn 0.4535 0.2309 0.8608 -vn 0.0025 0.8669 0.4985 -vn 0.3854 0.3313 0.8612 -vn 0.5632 0.0999 0.8203 -vn -0.8963 0.1539 -0.4159 -vn 0.7161 -0.1875 0.6723 -vn 0.2747 0.0645 0.9594 -vn -0.0498 0.7848 0.6178 -vn 0.3329 0.4682 0.8185 -vn 0.9474 0.2586 0.1886 -vn 0.9729 0.1554 -0.1710 -vn 0.6749 -0.4169 0.6089 -vn -0.7333 -0.0668 -0.6766 -vn 0.6577 0.4055 0.6348 -vn 0.6280 -0.7379 0.2474 -vn 0.5523 -0.3351 0.7633 -vn 0.4757 -0.4398 0.7618 -vn 0.8146 -0.2789 0.5086 -vn 0.7389 -0.4482 0.5032 -vn 0.9650 0.2202 -0.1422 -vn 0.9400 -0.0701 0.3340 -vn 0.7280 -0.2421 0.6414 -vn 0.3197 -0.6737 0.6663 -vn 0.6295 -0.1660 0.7591 -vn 0.6015 0.1909 0.7757 -vn 0.4672 -0.2163 0.8573 -vn 0.3715 0.1823 0.9104 -vn 0.8620 -0.4869 -0.1409 -vn 0.6213 0.0594 0.7813 -vn 0.6527 -0.4861 0.5812 -vn 0.8767 0.1654 0.4516 -vn 0.8441 0.3009 0.4439 -vn 0.6589 -0.4519 0.6014 -vn 0.2933 -0.2750 0.9156 -vn 0.0928 0.8601 0.5017 -vn 0.4166 0.4135 0.8096 -vn 0.4299 0.3560 0.8297 -vn 0.1976 -0.6375 0.7447 -vn -0.0666 -0.6449 -0.7613 -vn -0.2190 -0.9352 -0.2784 -vn 0.1033 0.1655 0.9808 -vn 0.5525 0.4918 0.6730 -vn 0.0232 0.2243 0.9742 -vn 0.7141 0.0539 0.6980 -vn 0.5818 -0.5568 0.5929 -vn 0.6595 -0.5156 0.5471 -vn -0.0223 -0.9997 0.0073 -vn -0.1518 0.7120 0.6856 -vn -0.1328 0.7620 0.6338 -vn 0.7596 -0.2359 0.6060 -vn 0.7841 -0.3277 0.5271 -vn -0.0111 -0.9997 0.0228 -vn -0.4685 0.7697 0.4337 -vn 0.2899 0.0296 0.9566 -vn -0.7677 -0.6077 -0.2033 -vn 0.1300 0.5790 0.8049 -vn 0.5698 0.1786 0.8022 -vn 0.2856 0.2304 0.9302 -vn 0.1864 0.7955 0.5766 -vn 0.9435 0.2915 -0.1579 -vn 0.5140 0.0145 0.8577 -vn 0.7117 -0.3975 0.5792 -vn 0.9840 -0.0359 -0.1744 -vn 0.6933 -0.3685 0.6193 -vn 0.7255 -0.2223 0.6514 -vn 0.3969 0.2667 0.8783 -vn 0.3697 0.4738 0.7993 -vn 0.5569 0.4127 0.7208 -vn 0.7619 -0.1618 0.6272 -vn -0.8548 -0.4889 -0.1741 -vn 0.7627 0.6101 0.2146 -vn -0.7330 -0.4026 -0.5482 -vn 0.9051 0.4238 -0.0350 -vn -0.0656 -0.4805 0.8745 -vn 0.3284 -0.0580 0.9428 -vn 0.6746 -0.1774 0.7166 -vn 0.4937 -0.5236 0.6943 -vn 0.5930 -0.1576 0.7896 -vn 0.7558 -0.2850 0.5895 -vn 0.5645 -0.0469 0.8241 -vn 0.6218 0.0782 0.7793 -vn 0.7661 -0.2309 0.5998 -vn -0.3911 0.7526 0.5298 -vn 0.3940 0.3886 0.8329 -vn 0.4796 -0.4900 0.7279 -vn 0.4170 -0.2563 0.8720 -vn 0.3847 0.4456 0.8084 -vn 0.7980 -0.3363 0.5001 -vn 0.2343 0.6642 0.7099 -vn 0.6019 0.0749 0.7951 -vn 0.5890 -0.6170 -0.5218 -vn 0.7211 -0.2630 0.6410 -vn 0.3521 0.6021 0.7166 -vn 0.6750 -0.1498 0.7225 -vn 0.3955 0.4225 0.8155 -vn 0.4771 -0.0708 0.8760 -vn 0.7240 -0.1876 0.6638 -vn 0.7580 0.0175 0.6520 -vn 0.2876 0.6706 0.6838 -vn -0.2720 0.5150 -0.8129 -vn 0.4958 -0.3092 0.8115 -vn 0.5535 0.3390 0.7607 -vn 0.6616 0.0825 0.7453 -vn 0.2840 0.0388 0.9580 -vn -0.7529 -0.6170 0.2291 -vn 0.5383 -0.5204 0.6629 -vn 0.6978 0.3727 0.6117 -vn 0.4901 0.3760 0.7864 -vn 0.9237 0.3710 0.0962 -vn -0.8693 -0.3920 0.3011 -vn -0.7119 -0.5916 0.3784 -vn -0.5592 0.8219 0.1082 -vn -0.9019 0.4046 0.1514 -vn 0.9828 -0.1839 -0.0141 -vn 0.9927 -0.0162 -0.1193 -vn 0.5189 -0.8508 0.0830 -vn 0.8347 0.5423 -0.0962 -vn -0.6269 -0.7467 -0.2223 -vn -0.4332 0.8700 -0.2356 -vn -0.9902 -0.1391 -0.0152 -vn -0.5690 -0.8217 0.0321 -vn -0.6233 0.7392 -0.2549 -vn 0.3842 -0.8106 -0.4419 -vn -0.7138 0.0286 0.6997 -vn -0.9719 -0.2320 0.0412 -vn 0.9369 -0.3215 -0.1375 -vn -0.9190 0.3640 -0.1513 -vn 0.9593 0.2821 0.0144 -vn 0.6127 -0.6561 -0.4407 -vn -0.8516 0.4177 0.3166 -vn -0.6756 0.5835 -0.4507 -vn -0.9913 0.0580 0.1184 -vn -0.9359 0.3313 0.1198 -vn -0.3200 0.9068 -0.2743 -vn 0.4294 0.6863 -0.5870 -vn 0.9421 -0.2986 -0.1525 -vn 0.4332 -0.8010 -0.4132 -vn 0.9805 -0.1506 -0.1259 -vn -0.8614 0.4971 0.1043 -vn 0.9780 0.1649 0.1279 -vn 0.9799 -0.1822 -0.0816 -vn 0.8957 -0.3606 -0.2603 -vn 0.7198 -0.3260 -0.6129 -vn -0.3164 0.9221 -0.2229 -vn 0.8034 0.3751 0.4624 -vn -0.9585 -0.0360 0.2827 -vn -0.3876 0.8928 -0.2295 -vn 0.7395 -0.1154 -0.6632 -vn -0.9176 -0.2344 0.3210 -vn -0.9736 0.1484 0.1735 -vn 0.2788 -0.9553 0.0986 -vn 0.8219 -0.4006 0.4050 -vn -0.7984 0.5752 0.1779 -vn 0.5044 0.1256 -0.8543 -vn -0.6185 -0.4690 -0.6304 -vn -0.8808 0.4162 0.2258 -vn -0.7664 -0.0296 -0.6416 -vn -0.7621 -0.0491 -0.6456 -vn 0.8703 -0.4440 -0.2132 -vn -0.9312 0.1461 0.3341 -vn -0.9817 -0.1018 -0.1608 -vn 0.6634 -0.0582 -0.7460 -vn 0.9737 -0.2275 0.0090 -vn 0.9208 0.2686 0.2830 -vn 0.1851 -0.9759 0.1155 -vn -0.1319 -0.5122 0.8487 -vn -0.8740 -0.1298 -0.4683 -vn -0.9940 0.0774 0.0770 -vn -0.9004 0.0891 -0.4258 -vn -0.7889 -0.4533 -0.4149 -vn 0.6581 -0.3448 -0.6693 -vn 0.9593 0.2742 0.0672 -vn 0.9994 -0.0011 0.0336 -vn 0.7386 -0.0419 -0.6729 -vn -0.4976 0.8594 0.1171 -vn 0.9087 0.4143 0.0518 -vn 0.8594 -0.1046 -0.5004 -vn 0.4540 -0.8630 -0.2217 -vn 0.8375 0.5249 0.1515 -vn -0.5462 0.8148 0.1944 -vn 0.4049 -0.7169 -0.5675 -vn 0.9996 -0.0094 0.0259 -vn 0.9449 0.2940 0.1437 -vn 0.9319 0.3286 0.1533 -vn 0.9672 0.1363 0.2142 -vn 0.8092 0.0074 -0.5875 -vn 0.7505 -0.3418 -0.5656 -vn -0.0050 -0.9997 0.0257 -vn 0.7357 -0.1431 -0.6621 -vn 0.9701 -0.2168 -0.1090 -vn 0.9202 0.2543 0.2975 -vn -0.3813 -0.0869 -0.9204 -vn -0.8576 -0.5100 0.0661 -vn -0.7450 0.2329 -0.6251 -vn -0.9312 0.2142 -0.2949 -vn 0.8974 0.0061 -0.4412 -vn 0.7827 -0.5385 0.3122 -vn -0.3061 0.6971 0.6483 -vn 0.9624 -0.2440 -0.1191 -vn 0.0107 -0.9997 -0.0212 -vn 0.8236 0.0076 -0.5671 -vn 0.7650 0.1290 -0.6310 -vn -0.5412 0.8079 0.2331 -vn 0.6981 -0.0610 -0.7134 -vn 0.8176 -0.0052 -0.5758 -vn 0.6329 -0.6262 -0.4553 -vn 0.7679 0.1901 -0.6117 -vn -0.8445 -0.5041 -0.1808 -vn -0.9383 0.3369 -0.0783 -vn 0.9984 -0.0106 0.0559 -vn 0.1158 0.1028 -0.9879 -vn 0.9811 -0.1537 -0.1177 -vn 0.9908 -0.0301 -0.1318 -vn -0.6642 0.3027 -0.6835 -vn -0.3085 0.7007 -0.6433 -vn -0.4035 -0.5934 -0.6965 -vn 0.0372 -0.7235 -0.6893 -vn -0.9457 -0.1953 -0.2600 -vn -0.8875 0.2255 -0.4018 -vn 0.9242 0.3538 -0.1434 -vn -0.7861 0.6119 0.0879 -vn -0.9437 0.3068 -0.1235 -vn -0.0627 -0.4526 -0.8895 -vn -0.6427 -0.4706 -0.6045 -vn 0.8285 -0.1864 -0.5280 -vn 0.6967 -0.2916 -0.6555 -vn -0.5020 0.8574 -0.1137 -vn 0.1107 0.6530 -0.7492 -vn -0.3329 0.9193 0.2097 -vn -0.7954 -0.5857 -0.1561 -vn -0.9645 -0.2187 -0.1484 -vn -0.1396 -0.3285 -0.9341 -vn -0.9233 -0.0992 -0.3710 -vn -0.8683 0.0189 -0.4956 -vn -0.8262 -0.1115 -0.5522 -vn -0.8625 0.4349 -0.2586 -vn -0.0594 -0.3725 -0.9261 -vn 0.9997 0.0011 0.0252 -vn 0.6612 -0.7305 -0.1709 -vn -0.2315 0.2151 -0.9488 -vn -0.5634 0.8217 -0.0862 -vn 0.0295 0.2387 -0.9706 -vn -0.8794 0.4666 -0.0952 -vn 0.1178 0.7389 -0.6634 -vn 0.7325 0.1659 -0.6602 -vn -0.8975 0.1449 -0.4165 -vn -0.8917 0.3938 -0.2229 -vn -0.6688 -0.6727 -0.3165 -vn -0.8361 -0.4462 -0.3191 -vn 0.8306 -0.2005 -0.5196 -vn -0.8595 0.4948 -0.1278 -vn -0.8704 -0.3863 0.3052 -vn -0.1957 -0.3796 -0.9042 -vn -0.6824 -0.6854 0.2543 -vn -0.7043 -0.3168 -0.6353 -vn 0.7007 0.6120 -0.3667 -vn 0.6078 -0.7626 -0.2215 -vn 0.0752 -0.8141 -0.5758 -vn 0.9125 -0.0368 0.4074 -vn 0.8921 -0.3702 -0.2591 -vn 0.5224 -0.2605 -0.8119 -vn 0.9894 0.0338 0.1415 -vn -0.9170 -0.3459 0.1987 -vn 0.7732 -0.3142 -0.5509 -vn -0.7712 -0.3732 -0.5157 -vn 0.8805 -0.3357 -0.3348 -vn -0.9224 -0.3065 -0.2350 -vn 0.5808 -0.2333 -0.7799 -vn 0.7615 -0.1381 -0.6333 -vn 0.8864 -0.3695 0.2788 -vn 0.9421 -0.3327 0.0416 -vn 0.8058 0.2824 0.5206 -vn 0.8906 -0.4547 -0.0073 -vn 0.7400 -0.1514 -0.6553 -vn 0.7853 -0.5216 -0.3335 -vn -0.8144 -0.5637 -0.1378 -vn 0.5594 0.5663 0.6053 -vn -0.9408 -0.3168 0.1203 -vn 0.8143 -0.4573 -0.3574 -vn -0.8493 0.5092 -0.1394 -vn 0.4587 -0.8171 -0.3493 -vn -0.9694 0.1067 0.2212 -vn 0.9989 -0.0361 0.0294 -vn -0.3540 0.8373 -0.4165 -vn 0.9710 -0.2389 0.0016 -vn 0.9672 -0.2295 -0.1090 -vn -0.9358 0.1858 -0.2996 -vn 0.6060 -0.7121 -0.3545 -vn -0.9076 0.2539 -0.3343 -vn 0.7617 -0.4397 -0.4759 -vn 0.8548 -0.4757 -0.2075 -vn 0.8405 -0.4975 -0.2147 -vn 0.9186 0.2445 0.3103 -vn -0.9433 -0.2167 0.2514 -vn 0.6090 0.1695 -0.7749 -vn 0.5770 -0.7519 0.3189 -vn -0.5886 -0.6878 -0.4248 -vn -0.8344 0.2474 -0.4925 -vn -0.8051 -0.0456 -0.5914 -vn 0.8857 -0.3117 -0.3440 -vn -0.9676 0.2291 -0.1060 -vn 0.8215 -0.2944 -0.4883 -vn -0.9266 0.3109 -0.2117 -vn -0.9665 -0.1515 0.2071 -vn -0.8950 0.1807 0.4077 -vn 0.9380 -0.3423 0.0554 -vn 0.5251 0.2740 -0.8057 -vn 0.6182 -0.5020 -0.6048 -vn 0.7845 -0.5795 -0.2209 -vn 0.6672 -0.7011 -0.2517 -vn -0.7654 -0.5448 -0.3425 -vn 0.7250 0.0647 -0.6857 -vn 0.6486 -0.6096 -0.4557 -vn -0.9225 0.0995 -0.3730 -vn 0.7078 -0.5175 -0.4809 -vn 0.7972 -0.5663 -0.2094 -vn 0.7866 -0.5782 -0.2165 -vn 0.7950 -0.5111 -0.3266 -vn 0.4032 -0.9147 -0.0279 -vn 0.9960 -0.0882 0.0113 -vn 0.9106 0.3867 0.1461 -vn 0.9900 0.1383 -0.0290 -vn 0.6332 -0.7209 -0.2816 -vn 0.4236 0.6474 -0.6336 -vn 0.7805 -0.2057 -0.5904 -vn 0.6881 -0.3861 -0.6144 -vn 0.4437 0.3621 -0.8197 -vn 0.7485 -0.5915 0.2997 -vn 0.8456 -0.5016 -0.1827 -vn 0.8631 -0.4798 -0.1574 -vn -0.7908 0.5820 -0.1895 -vn -0.3058 0.9500 0.0625 -vn 0.5467 -0.8024 -0.2394 -vn -0.7748 -0.6195 -0.1261 -vn 0.9236 -0.3820 -0.0318 -vn 0.7509 -0.6387 0.1680 -vn 0.9676 0.2524 -0.0014 -vn -0.2005 -0.7632 0.6142 -vn 0.9052 -0.4089 -0.1161 -vn 0.0997 -0.8607 -0.4992 -vn 0.6102 0.4816 -0.6290 -vn -0.7157 0.5354 -0.4484 -vn -0.8290 -0.1901 -0.5259 -vn 0.3231 0.3440 -0.8816 -vn 0.9107 -0.3937 -0.1251 -vn 0.8785 0.1109 -0.4648 -vn 0.7026 -0.5160 -0.4900 -vn 0.4855 -0.8070 0.3363 -vn -0.5734 -0.4309 0.6968 -vn 0.4253 -0.4518 -0.7842 -vn -0.1562 -0.0403 -0.9869 -vn 0.0360 -0.8971 -0.4404 -vn -0.8855 -0.4106 -0.2176 -vn 0.9904 -0.0412 0.1319 -vn -0.0549 -0.9951 -0.0823 -vn 0.9660 0.1770 -0.1884 -vn 0.2659 0.3187 0.9098 -vn -0.1934 0.6201 -0.7603 -vn 0.9732 0.2013 0.1109 -vn 0.2614 0.5744 0.7757 -vn -0.7994 -0.5826 -0.1466 -vn 0.8763 -0.2005 -0.4381 -vn -0.6761 0.7210 -0.1520 -vn 0.8874 -0.1638 -0.4310 -vn 0.8010 0.1490 -0.5798 -vn 0.8135 -0.1009 -0.5728 -vn 0.8357 -0.1644 -0.5239 -vn 0.6932 -0.6599 0.2898 -vn 0.7121 0.1135 -0.6929 -vn 0.9867 0.1379 0.0866 -vn -0.9435 -0.3116 -0.1132 -vn -0.5353 -0.8080 -0.2461 -vn 0.9501 -0.2742 -0.1484 -vn 0.9907 -0.1180 -0.0674 -vn 0.9939 0.0056 0.1105 -vn -0.8489 -0.5124 -0.1297 -vn 0.8417 0.4795 0.2482 -vn -0.9191 0.2360 -0.3156 -vn 0.8852 -0.3123 -0.3449 -vn -0.7767 0.5484 0.3099 -vn 0.9944 -0.0639 -0.0836 -vn 0.0937 -0.9041 -0.4168 -vn 0.6664 -0.1627 -0.7276 -vn 0.8252 -0.1842 -0.5340 -vn 0.0293 -0.9979 0.0582 -vn 0.4488 -0.8536 -0.2644 -vn 0.1140 0.1424 -0.9832 -vn 0.8011 0.0023 -0.5986 -vn -0.2705 0.2439 -0.9313 -vn 0.9946 0.0946 0.0423 -vn 0.9990 0.0020 0.0447 -vn 0.9501 0.2465 0.1912 -vn 0.7341 -0.1466 -0.6631 -vn 0.7768 -0.1572 -0.6098 -vn 0.6839 -0.4959 0.5352 -vn 0.5427 -0.2879 0.7891 -vn -0.3681 -0.9075 0.2025 -vn -0.2857 -0.8969 0.3376 -vn 0.0139 -0.9992 0.0388 -vn -0.1771 -0.9395 -0.2933 -vn 0.8602 -0.0331 -0.5089 -vn 0.8492 -0.5038 -0.1583 -vn -0.9469 -0.1339 0.2923 -vn 0.7755 -0.5866 -0.2334 -vn 0.7983 -0.5487 -0.2484 -vn 0.0667 -0.8336 -0.5483 -vn 0.1804 -0.9385 -0.2944 -vn 0.7828 -0.5761 -0.2351 -vn 0.9773 0.1264 0.1700 -vn 0.8915 -0.0364 -0.4515 -vn -0.6873 0.4404 -0.5776 -vn 0.9117 -0.1644 -0.3766 -vn 0.0095 -0.9997 -0.0230 -vn 0.6763 -0.5600 -0.4786 -vn 0.7814 -0.1390 -0.6083 -vn 0.8512 -0.5053 -0.1420 -vn -0.5183 0.6375 -0.5700 -vn -0.4472 0.8593 0.2482 -vn -0.9107 -0.3372 -0.2384 -vn -0.4860 0.8020 -0.3472 -vn -0.6614 0.6592 -0.3577 -vn 0.8025 -0.4265 -0.4172 -vn 0.6223 -0.1005 -0.7763 -vn -0.4481 -0.8125 -0.3728 -vn -0.9166 0.3613 -0.1713 -vn 0.6318 -0.7442 0.2166 -vn 0.6687 -0.5990 -0.4404 -vn -0.6868 -0.4113 -0.5992 -vn 0.9091 -0.2343 -0.3445 -vn -0.6072 0.4165 -0.6766 -vn 0.5066 0.3424 -0.7913 -vn 0.3908 -0.0658 -0.9181 -vn 0.9592 -0.2812 -0.0287 -vn -0.9594 0.1404 -0.2445 -vn -0.6301 -0.7688 -0.1087 -vn 0.5531 -0.4499 -0.7012 -vn 0.6000 -0.6761 -0.4276 -vn 0.8861 -0.0323 -0.4623 -vn 0.8495 -0.2903 -0.4406 -vn 0.8549 -0.4952 -0.1547 -vn -0.9934 0.0261 -0.1115 -vn -0.6959 0.7070 -0.1260 -vn -0.7128 0.3254 -0.6213 -vn 0.8736 -0.3431 -0.3451 -vn -0.9835 0.0650 -0.1691 -vn 0.6946 0.0345 -0.7186 -vn 0.9996 -0.0275 0.0110 -vn 0.9731 0.2020 0.1110 -vn -0.9949 0.0959 0.0319 -vn -0.8238 0.2640 -0.5016 -vn 0.8154 0.1611 -0.5560 -vn 0.7513 -0.3760 -0.5424 -vn -0.8794 -0.2104 -0.4271 -vn 0.5820 -0.4658 -0.6666 -vn -0.5878 0.8016 0.1095 -vn -0.2125 0.6426 -0.7361 -vn 0.5129 -0.7466 -0.4238 -vn 0.6061 -0.7619 -0.2282 -vn 0.8090 -0.4781 -0.3419 -vn 0.4143 -0.7400 -0.5298 -vn 0.9733 0.2295 0.0064 -vn 0.9377 0.0083 -0.3475 -vn 0.8646 0.0029 -0.5024 -vn 0.6776 -0.2733 -0.6828 -vn 0.1920 -0.8336 -0.5179 -vn 0.1035 -0.9805 0.1672 -vn -0.9945 0.0390 -0.0972 -vn -0.9329 -0.1792 -0.3124 -vn -0.9638 -0.0277 -0.2651 -vn 0.7882 -0.3730 0.4895 -vn 0.5853 -0.6122 0.5316 -vn 0.9343 0.1434 0.3263 -vn 0.9981 -0.0602 0.0126 -vn 0.6664 -0.4905 -0.5615 -vn -0.9085 0.3383 0.2452 -vn 0.5842 -0.1914 -0.7887 -vn 0.7106 -0.5942 -0.3768 -vn 0.5306 -0.4086 0.7426 -vn -0.1513 0.9828 -0.1056 -vn 0.2461 0.4109 0.8778 -vn 0.8956 0.2604 0.3606 -vn -0.1459 -0.3982 -0.9056 -vn 0.5050 -0.8243 -0.2560 -vn -0.9779 0.2088 -0.0101 -vn 0.5982 0.0552 -0.7995 -vn 0.9929 0.1039 0.0588 -vn 0.4607 -0.7582 -0.4614 -vn 0.5305 -0.5978 0.6010 -vn -0.8839 -0.3739 0.2809 -vn 0.0369 0.5831 -0.8116 -vn -0.0583 0.3934 -0.9175 -vn 0.6135 -0.1276 -0.7793 -vn 0.1261 -0.7814 -0.6111 -vn 0.7712 -0.5212 -0.3656 -vn 0.5134 -0.8158 0.2661 -vn 0.3660 0.3385 0.8669 -vn 0.8588 0.3566 0.3679 -vn -0.3233 -0.3482 -0.8799 -vn 0.6379 -0.5249 0.5635 -vn 0.6906 -0.5695 -0.4458 -vn -0.0944 -0.7363 -0.6701 -vn 0.9363 0.2208 0.2729 -vn 0.9628 0.1548 0.2215 -vn 0.9409 -0.0959 0.3249 -vn 0.2200 0.5646 -0.7955 -vn 0.8825 -0.3365 -0.3287 -vn 0.8472 -0.1884 -0.4967 -vn 0.7366 -0.1393 -0.6618 -vn 0.8033 0.1065 -0.5859 -vn 0.7477 -0.5078 -0.4279 -vn 0.8880 -0.1656 -0.4290 -vn 0.9254 0.1318 0.3554 -vn 0.4272 -0.8956 -0.1239 -vn 0.4717 -0.6516 0.5940 -vn 0.6677 -0.7430 -0.0461 -vn 0.1082 -0.7901 -0.6034 -vn 0.5348 -0.7755 0.3355 -vn 0.4960 -0.7270 -0.4749 -vn 0.9494 0.1842 0.2544 -vn 0.7590 -0.0996 -0.6434 -vn 0.1230 -0.1352 -0.9832 -vn 0.7215 -0.1998 -0.6629 -vn 0.4986 -0.8613 -0.0972 -vn 0.9428 0.2189 0.2516 -vn 0.8866 0.3468 0.3061 -vn 0.4153 0.8909 -0.1837 -vn 0.9296 0.3250 0.1739 -vn 0.0259 -0.7077 -0.7060 -vn -0.1529 -0.9723 0.1766 -vn 0.9473 -0.3139 -0.0645 -vn 0.9794 0.1452 0.1404 -vn 0.9461 -0.2022 -0.2530 -vn -0.3782 0.7540 0.5370 -vn 0.9926 -0.0718 0.0980 -vn 0.1013 -0.6481 0.7548 -vn 0.7650 -0.4437 -0.4668 -vn 0.5656 -0.8058 -0.1752 -vn 0.9753 0.1471 0.1648 -vn 0.7390 -0.6590 -0.1402 -vn 0.9491 0.0262 0.3139 -vn 0.9067 0.3493 0.2364 -vn 0.9198 0.2903 -0.2639 -vn 0.8378 0.4321 0.3339 -vn 0.9623 -0.0793 0.2600 -vn 0.8207 -0.2852 -0.4951 -vn 0.8603 -0.0790 -0.5036 -vn 0.9451 0.0088 0.3267 -vn -0.9750 -0.2203 0.0291 -vn 0.9766 0.1145 0.1820 -vn 0.8789 0.2752 -0.3897 -vn 0.1796 -0.9549 -0.2363 -vn 0.9653 0.2546 0.0586 -vn 0.9429 0.0563 0.3282 -vn 0.3859 0.6309 -0.6731 -vn 0.6746 -0.5325 0.5112 -vn 0.8758 -0.3838 0.2928 -vn 0.9157 0.0026 0.4018 -vn 0.6298 -0.5483 -0.5502 -vn 0.1456 -0.6514 -0.7446 -vn -0.1861 -0.3727 -0.9091 -vn 0.2902 -0.4286 0.8556 -vn 0.9783 0.1034 0.1794 -vn 0.9694 0.2051 0.1346 -vn 0.9830 0.1704 0.0677 -vn 0.7843 -0.5616 0.2637 -vn 0.8534 -0.4836 0.1946 -vn 0.9701 -0.0624 0.2345 -vn 0.1719 -0.8017 -0.5724 -vn 0.8338 -0.1774 -0.5228 -vn 0.9827 0.1467 0.1133 -vn 0.8996 0.4013 0.1720 -vn 0.9048 0.3947 0.1598 -vn 0.9373 0.3279 0.1184 -vn -0.2536 0.8281 -0.5000 -vn 0.6817 -0.5378 -0.4960 -vn 0.9792 0.1985 0.0415 -vn 0.8616 0.4326 0.2656 -vn 0.9776 0.1374 0.1596 -vn 0.9794 -0.0735 0.1880 -vn 0.9547 -0.1682 0.2454 -vn 0.9694 -0.2174 0.1141 -vn 0.9831 0.1436 0.1137 -vn 0.9519 0.2868 0.1080 -vn 0.9554 0.2836 0.0822 -vn 0.6817 -0.7298 0.0523 -vn 0.9967 -0.0608 0.0533 -vn 0.9111 0.4078 0.0603 -vn 0.9217 0.1070 0.3729 -vn 0.4905 -0.7889 -0.3702 -vn 0.8623 0.3539 0.3622 -vn 0.8348 0.4104 0.3670 -vn 0.9243 0.3137 0.2174 -vn 0.7974 0.5346 -0.2799 -vn 0.6410 -0.7561 0.1320 -vn 0.6335 -0.7609 0.1402 -vn 0.9365 -0.3085 0.1666 -vn 0.9659 -0.0690 0.2496 -vn 0.8727 0.4011 0.2786 -vn 0.9109 0.4042 -0.0832 -vn -0.9802 -0.1393 0.1405 -vn -0.3528 0.8100 0.4685 -vn -0.2115 0.9714 -0.1081 -vn -0.6294 -0.4174 -0.6555 -vn -0.1084 0.1008 -0.9890 -vn 0.9565 0.2482 0.1536 -vn 0.3325 0.1687 0.9279 -vn -0.9842 0.1232 0.1275 -vn 0.9780 0.0973 -0.1845 -vn 0.9770 -0.0797 0.1976 -vn 0.8365 -0.5443 0.0638 -vn -0.6223 0.7651 0.1657 -vn 0.0077 1.0000 0.0017 -vn -0.0645 0.9946 0.0811 -vn -0.2087 0.9717 -0.1108 -vn 0.8338 0.4571 0.3095 -vn 0.4655 0.7120 0.5258 -vn 0.7415 0.5614 0.3673 -vn -0.3684 0.9113 0.1840 -vn 0.2669 0.9563 0.1197 -vn 0.2656 0.8208 0.5057 -vn 0.8127 0.4249 0.3987 -vn 0.2269 0.9707 0.0793 -vn -0.3791 -0.8766 -0.2964 -vn -0.8381 -0.5437 -0.0458 -vn -0.3897 0.8602 0.3290 -vn -0.8064 -0.5643 0.1768 -vn -0.9667 0.1887 0.1730 -vn -0.1206 -0.7272 -0.6758 -vn 0.8272 0.5499 -0.1155 -vn 0.3868 0.3324 0.8602 -vn 0.5171 0.6944 0.5004 -vn 0.9757 -0.1777 -0.1285 -vn 0.0769 -0.2942 0.9527 -vn 0.8526 0.3619 0.3769 -vn -0.5989 0.6019 0.5282 -vn 0.6757 0.7372 0.0021 -vn 0.5770 0.7439 0.3371 -vn 0.3766 0.7496 0.5443 -vn 0.4847 0.8735 -0.0452 -vn -0.8109 0.0855 0.5789 -vn 0.4851 0.8733 -0.0449 -vn 0.4358 0.8690 0.2344 -vn 0.0923 0.8956 0.4351 -vn -0.1347 0.9245 0.3565 -vn -0.1625 0.9195 0.3580 -vn 0.4852 0.8024 -0.3473 -vn 0.1167 0.9676 0.2241 -vn -0.0295 0.8672 0.4972 -vn -0.2603 0.8340 0.4866 -vn 0.8263 0.5614 0.0441 -vn 0.1824 0.9821 -0.0471 -vn 0.0917 0.9757 0.1988 -vn 0.0660 0.9916 -0.1108 -vn -0.2296 0.8672 0.4419 -vn -0.0869 0.8431 0.5306 -vn -0.2740 0.8058 0.5249 -vn 0.0298 0.6701 0.7417 -vn -0.4799 0.8610 -0.1688 -vn -0.6489 -0.0550 0.7589 -vn -0.0342 0.9921 -0.1208 -vn -0.1036 0.9830 0.1518 -vn -0.2917 0.8901 0.3502 -vn 0.7899 0.3596 0.4968 -vn 0.8804 0.4696 0.0660 -vn -0.8931 0.3818 -0.2377 -vn -0.2660 0.9383 0.2212 -vn 0.4602 0.7518 0.4722 -vn 0.4228 0.5863 0.6910 -vn -0.3392 0.8677 0.3635 -vn -0.3581 0.9331 -0.0338 -vn -0.4245 0.9054 -0.0008 -vn 0.0842 0.9962 -0.0223 -vn 0.6509 0.6685 0.3598 -vn 0.7192 0.4394 0.5382 -vn 0.8163 0.5231 0.2450 -vn 0.9401 0.0900 0.3289 -vn -0.1065 0.9701 -0.2183 -vn -0.3312 0.7472 0.5761 -vn -0.1160 0.8782 0.4640 -vn -0.2925 0.9529 0.0804 -vn -0.5975 0.7152 -0.3626 -vn -0.9761 0.1423 -0.1645 -vn 0.0674 0.9977 -0.0093 -vn -0.0325 0.7298 0.6828 -vn 0.2663 0.9636 0.0242 -vn 0.7235 0.6842 0.0919 -vn -0.7733 0.5731 -0.2712 -vn -0.8238 -0.5668 -0.0086 -vn -0.1205 0.9571 -0.2636 -vn 0.6581 0.7459 -0.1031 -vn 0.8991 0.4050 0.1659 -vn 0.8703 0.4060 0.2789 -vn 0.7954 0.5799 -0.1762 -vn 0.8690 0.3686 0.3301 -vn 0.3456 0.9310 -0.1178 -vn 0.3731 -0.8487 -0.3749 -vn -0.9892 0.1427 0.0319 -vn 0.9877 0.1440 0.0604 -vn -0.0772 0.9780 -0.1936 -vn 0.7399 0.5211 0.4254 -vn 0.7056 0.6480 0.2867 -vn 0.9670 0.2535 -0.0256 -vn -0.9976 0.0490 -0.0494 -vn 0.7062 0.6052 0.3674 -vn -0.6107 -0.7728 0.1726 -vn 0.5935 0.6913 0.4121 -vn -0.0384 -0.4831 0.8747 -vn 0.1216 0.9575 0.2614 -vn -0.1185 0.9926 0.0283 -vn 0.0266 0.9960 -0.0859 -vn 0.9735 0.2185 -0.0670 -vn 0.8533 0.5205 -0.0316 -vn 0.0964 0.7226 0.6845 -vn 0.1991 0.9765 0.0827 -vn 0.3843 0.7511 0.5368 -vn 0.7057 0.6357 -0.3127 -vn 0.8519 0.4654 0.2403 -vn 0.1708 0.9853 0.0062 -vn 0.1034 -0.9260 -0.3630 -vn -0.3051 0.8045 0.5096 -vn -0.6971 0.6957 0.1733 -vn 0.2469 0.9548 -0.1653 -vn 0.4932 0.8169 0.2990 -vn 0.3438 0.9365 -0.0697 -vn -0.9592 -0.0690 -0.2741 -vn 0.1871 0.9673 0.1714 -vn -0.3911 0.3955 -0.8311 -vn -0.6635 0.3122 -0.6800 -vn -0.1926 -0.7832 -0.5912 -vn -0.9916 -0.1087 -0.0699 -vn 0.2914 0.9530 -0.0828 -vn 0.3834 0.9031 -0.1934 -vn 0.1566 0.9394 0.3049 -vn 0.7418 0.5161 0.4282 -vn 0.8468 0.4631 0.2615 -vn 0.4142 0.8733 -0.2566 -vn -0.7491 0.5640 0.3477 -vn 0.0111 0.8545 0.5193 -vn 0.2133 0.9189 0.3319 -vn 0.2631 0.8798 0.3958 -vn 0.3287 0.8775 0.3492 -vn 0.3541 0.9343 -0.0414 -vn 0.4819 0.8317 0.2757 -vn -0.1508 0.9885 0.0088 -vn -0.8844 -0.3349 0.3252 -vn -0.2199 0.7161 0.6625 -vn -0.0654 0.8369 0.5435 -vn -0.8897 -0.4549 0.0400 -vn 0.1851 0.9736 0.1332 -vn 0.4643 0.8842 0.0516 -vn 0.4014 0.5261 0.7498 -vn -0.0017 0.9693 0.2460 -vn 0.9515 0.2872 0.1099 -vn 0.2006 0.8481 0.4904 -vn -0.0056 0.9312 0.3644 -vn -0.9863 0.1632 0.0257 -vn -0.3939 0.8228 0.4097 -vn -0.1300 0.8394 0.5278 -vn 0.1752 -0.8318 -0.5267 -vn -0.3497 0.8988 -0.2644 -vn -0.3410 0.9139 -0.2201 -vn 0.8659 0.4644 0.1859 -vn 0.0340 0.7499 0.6606 -vn 0.9136 0.3939 0.1011 -vn -0.8031 0.5641 0.1921 -vn -0.3019 0.9429 -0.1409 -vn -0.3441 0.9151 -0.2100 -vn 0.6264 0.6580 0.4179 -vn -0.1755 0.6113 0.7717 -vn -0.4924 0.8517 0.1793 -vn -0.1634 0.8334 0.5280 -vn 0.7225 0.6883 0.0655 -vn -0.9685 0.0957 0.2300 -vn 0.8432 0.4700 0.2611 -vn -0.1720 0.9716 0.1624 -vn -0.0030 0.9644 0.2643 -vn -0.1747 0.9844 -0.0206 -vn 0.8527 0.5126 0.1005 -vn 0.2248 0.9733 0.0471 -vn -0.9417 0.2435 0.2323 -vn -0.1527 0.8822 0.4453 -vn -0.3243 0.8340 0.4464 -vn -0.4833 0.7830 0.3916 -vn 0.0381 0.9002 0.4338 -vn -0.2011 0.8108 0.5497 -vn -0.4257 0.8071 0.4092 -vn -0.3512 0.7743 0.5264 -vn 0.2055 0.7410 0.6392 -vn 0.2000 0.9671 0.1572 -vn 0.9119 -0.2338 -0.3373 -vn -0.0170 0.8562 0.5164 -vn -0.4521 0.8606 0.2344 -vn 0.6117 0.7381 0.2846 -vn 0.1357 0.9908 0.0018 -vn 0.0698 0.9299 0.3612 -vn 0.8020 0.5746 -0.1634 -vn -0.5312 0.1908 -0.8255 -vn 0.5546 -0.7987 -0.2336 -vn 0.3696 0.8931 0.2565 -vn 0.1273 0.6848 0.7176 -vn -0.0073 0.9998 -0.0188 -vn -0.0848 0.9902 0.1106 -vn 0.1497 0.9766 0.1546 -vn 0.8201 0.4595 0.3411 -vn 0.1476 0.9884 0.0348 -vn 0.3635 0.9311 -0.0311 -vn 0.1831 0.9739 -0.1341 -vn 0.3782 0.9032 -0.2030 -vn -0.6283 0.2550 -0.7349 -vn 0.0309 0.9995 0.0049 -vn 0.1155 0.9821 0.1486 -vn 0.1398 0.8729 0.4673 -vn 0.0513 0.9756 0.2135 -vn -0.5742 0.8187 -0.0058 -vn 0.7370 0.5625 0.3746 -vn 0.3250 0.9174 0.2298 -vn 0.1699 0.9438 0.2834 -vn 0.6316 0.5012 0.5915 -vn 0.9968 0.0696 0.0392 -vn -0.5484 0.7242 0.4182 -vn 0.6618 0.6505 0.3727 -vn -0.8990 -0.3802 0.2175 -vn 0.2036 0.9753 0.0860 -vn 0.3557 0.9106 0.2103 -vn 0.7943 -0.1443 0.5902 -vn 0.8213 0.0765 0.5654 -vn -0.4436 0.8556 -0.2667 -vn 0.2317 0.9212 0.3126 -vn 0.1218 0.8671 0.4831 -vn 0.2385 0.9671 -0.0886 -vn -0.9358 -0.0528 0.3485 -vn -0.9159 -0.3967 -0.0610 -vn -0.9656 -0.0576 0.2537 -vn 0.8186 0.4973 0.2873 -vn -0.3497 0.8729 0.3403 -vn -0.1457 0.8380 0.5259 -vn 0.9613 -0.2494 -0.1168 -vn 0.2005 0.9022 0.3819 -vn -0.0038 0.9412 0.3379 -vn -0.2076 0.1142 -0.9715 -vn 0.8415 0.3777 0.3863 -vn -0.3287 0.8427 0.4263 -vn 0.6102 0.6450 0.4601 -vn -0.8634 -0.1576 -0.4792 -vn -0.3172 -0.9118 -0.2609 -vn 0.0270 0.9981 -0.0561 -vn -0.6831 0.6348 0.3612 -vn 0.3177 0.9355 -0.1548 -vn 0.4836 0.8462 -0.2239 -vn -0.3298 0.8287 0.4522 -vn 0.5679 -0.1869 -0.8016 -vn -0.0611 0.9087 0.4129 -vn 0.4655 -0.8846 -0.0285 -vn 0.8318 0.1717 0.5278 -vn 0.1642 0.8303 0.5326 -vn 0.2061 0.6866 0.6972 -vn 0.8539 0.5101 0.1034 -vn 0.8153 0.5046 0.2842 -vn 0.1583 0.9827 -0.0966 -vn -0.2696 0.7951 0.5433 -vn 0.1504 0.7565 0.6365 -vn 0.0049 0.9648 0.2629 -vn -0.3870 0.8878 0.2491 -vn -0.3211 0.9343 0.1551 -vn 0.3285 0.8362 0.4391 -vn 0.2832 0.1185 0.9517 -vn -0.2150 0.8665 0.4505 -vn 0.4051 0.1034 0.9084 -vn 0.4375 -0.8654 -0.2442 -vn 0.6474 0.7416 0.1758 -vn 0.4237 0.8204 0.3840 -vn 0.8213 0.5617 -0.1000 -vn 0.4267 0.8832 -0.1947 -vn -0.0678 0.9943 0.0824 -vn -0.9810 0.0554 -0.1859 -vn -0.4569 0.7894 0.4100 -vn -0.1003 0.9823 0.1582 -vn 0.0538 0.9986 -0.0010 -vn -0.4057 0.7901 0.4594 -vn 0.0577 0.9983 -0.0047 -vn -0.7481 0.5872 0.3092 -vn -0.8017 0.5231 0.2893 -vn 0.8559 0.1951 0.4789 -vn 0.8153 0.5649 0.1274 -vn 0.8280 0.5517 0.1005 -vn -0.5883 0.7617 -0.2715 -vn -0.4030 0.8524 -0.3331 -vn -0.0285 0.9936 -0.1091 -vn 0.7311 0.5644 0.3834 -vn 0.7056 0.5567 0.4384 -vn -0.2475 0.8991 0.3612 -vn 0.8989 0.2424 0.3649 -vn 0.9208 0.2080 0.3301 -vn 0.8722 0.3580 0.3335 -vn 0.8001 0.5751 -0.1708 -vn 0.0578 0.9983 -0.0100 -vn 0.5230 0.7312 0.4378 -vn 0.0105 0.9952 -0.0973 -vn 0.1348 0.9444 0.2998 -vn -0.4560 0.8885 -0.0506 -vn -0.1246 0.9462 0.2988 -vn 0.4609 0.8768 0.1375 -vn -0.8839 -0.4122 0.2208 -vn -0.9942 0.1020 -0.0352 -vn -0.2395 0.9292 0.2815 -vn -0.4474 0.8930 0.0486 -vn 0.3818 0.8412 0.3829 -vn 0.2789 0.5613 0.7792 -vn 0.6223 0.6082 0.4928 -vn 0.6771 0.6851 0.2687 -vn 0.6538 0.3933 0.6465 -vn -0.4528 0.8818 -0.1319 -vn -0.0398 0.9711 -0.2354 -vn -0.1593 0.8583 0.4878 -vn 0.8773 0.3747 0.2999 -vn -0.0314 0.9894 -0.1421 -vn -0.4313 0.9020 0.0202 -vn 0.0593 0.9093 0.4120 -vn -0.0160 0.8578 0.5137 -vn -0.4143 -0.5028 -0.7586 -vn -0.9208 -0.3801 -0.0872 -vn 0.5602 0.5821 0.5894 -vn 0.8042 0.5928 -0.0427 -vn 0.8051 0.5929 0.0171 -vn 0.7567 0.6458 0.1017 -vn 0.9051 0.3534 0.2365 -vn 0.0790 0.9880 0.1329 -vn 0.1119 0.9848 0.1329 -vn -0.3913 0.2132 0.8952 -vn 0.2280 0.8477 0.4790 -vn -0.5664 0.7532 -0.3343 -vn 0.2483 0.8521 0.4607 -vn -0.4768 -0.4019 -0.7818 -vn 0.8068 0.5906 0.0149 -vn 0.7068 0.6821 0.1877 -vn -0.0457 0.9988 -0.0175 -vn 0.6918 0.6016 0.3994 -vn -0.9203 0.1930 -0.3404 -vn -0.1293 0.8298 0.5429 -vn 0.8150 0.5592 0.1519 -vn 0.8154 0.5146 -0.2651 -vn 0.7420 0.6694 0.0373 -vn -0.3576 0.8650 0.3519 -vn 0.1843 0.9824 0.0301 -vn 0.4064 0.8887 0.2124 -vn 0.1954 0.7654 0.6132 -vn 0.0835 0.9738 0.2117 -vn 0.4395 0.8259 0.3532 -vn 0.5463 0.6863 0.4802 -vn 0.4519 0.7152 0.5331 -vn -0.2584 -0.9218 -0.2890 -vn 0.1939 0.9804 -0.0350 -vn -0.1803 0.9770 0.1137 -vn 0.5698 0.7840 0.2465 -vn -0.3434 0.9354 -0.0845 -vn 0.1506 0.8823 0.4459 -vn 0.7565 0.6471 -0.0943 -vn 0.7092 0.7046 0.0248 -vn 0.7118 0.7019 0.0248 -vn 0.6307 0.7536 0.1854 -vn -0.7559 -0.1324 0.6411 -vn -0.4056 0.7815 0.4741 -vn 0.1647 0.7744 0.6109 -vn -0.0691 0.9128 0.4025 -vn -0.0088 0.9653 0.2609 -vn 0.5255 -0.7057 0.4751 -vn 0.8088 0.5242 -0.2667 -vn 0.7635 0.6411 -0.0776 -vn 0.6096 0.7630 0.2150 -vn 0.7546 0.5879 0.2915 -vn 0.3495 0.4415 0.8264 -vn 0.2864 0.0983 -0.9530 -vn 0.6469 0.7579 0.0846 -vn 0.6071 0.6136 0.5048 -vn 0.6456 0.6707 0.3652 -vn 0.1689 0.9814 -0.0912 -vn 0.2650 0.9212 0.2849 -vn 0.3258 0.4664 0.8224 -vn -0.3360 0.7618 -0.5538 -vn -0.2395 0.9513 -0.1942 -vn 0.0390 0.5847 0.8103 -vn 0.6579 0.7391 0.1446 -vn -0.2002 0.7626 0.6151 -vn -0.1311 0.7536 0.6441 -vn 0.8967 0.3735 0.2374 -vn 0.4598 0.8684 -0.1857 -vn 0.7964 0.5533 0.2439 -vn 0.3125 0.0040 0.9499 -vn 0.2216 0.9662 0.1316 -vn -0.3516 0.8102 0.4690 -vn 0.0914 0.7062 0.7021 -vn -0.0345 0.9755 0.2172 -vn 0.6556 0.7398 0.1513 -vn 0.3787 0.8941 0.2391 -vn 0.8694 0.3508 0.3479 -vn -0.3401 -0.6121 -0.7139 -vn 0.2088 0.9457 0.2490 -vn 0.7732 0.5403 -0.3322 -vn -0.8617 -0.3290 0.3864 -vn 0.3079 -0.0567 0.9497 -vn 0.3174 0.7792 0.5404 -vn 0.8146 0.5560 0.1652 -vn -0.9100 0.0393 -0.4128 -vn 0.6557 0.7394 -0.1527 -vn 0.6403 0.7674 -0.0345 -vn 0.6136 0.7607 0.2120 -vn 0.5298 0.7674 0.3611 -vn 0.4068 0.7090 0.5761 -vn -0.6125 0.7877 0.0657 -vn 0.0056 -0.9665 0.2567 -vn 0.1689 0.9039 0.3930 -vn 0.1577 0.6826 0.7136 -vn -0.8869 -0.2685 -0.3758 -vn 0.1579 -0.8883 -0.4314 -vn 0.6220 0.7823 -0.0325 -vn 0.9964 0.0702 0.0479 -vn 0.6269 0.5813 0.5188 -vn -0.0211 0.8164 0.5771 -vn 0.1446 0.9297 0.3387 -vn -0.2073 0.9193 0.3345 -vn 0.8723 -0.4886 -0.0212 -vn -0.9258 -0.1218 -0.3578 -vn 0.5852 0.7682 -0.2598 -vn 0.2978 0.8404 0.4527 -vn 0.0883 0.7713 0.6303 -vn 0.0296 0.8502 0.5256 -vn -0.4884 -0.1785 0.8542 -vn -0.0706 0.8384 0.5405 -vn -0.8399 -0.3184 -0.4396 -vn 0.5926 0.8052 0.0218 -vn 0.3324 0.8532 0.4018 -vn 0.0989 0.8334 0.5438 -vn 0.5659 0.6001 0.5654 -vn -0.0135 0.7171 0.6968 -vn -0.0085 -0.7091 -0.7050 -vn -0.4085 0.8814 0.2372 -vn 0.2976 0.8794 0.3716 -vn 0.0787 0.9903 0.1143 -vn 0.1852 0.9701 0.1569 -vn -0.1071 0.9538 0.2806 -vn 0.4232 -0.6999 -0.5754 -vn -0.1584 0.9173 0.3654 -vn 0.2112 0.8810 0.4233 -vn -0.5512 0.8223 0.1412 -vn 0.6238 0.7394 -0.2533 -vn 0.5491 0.8252 -0.1323 -vn 0.5129 0.8579 0.0310 -vn 0.4361 0.8959 0.0847 -vn 0.2739 0.9159 0.2934 -vn -0.2481 0.9657 -0.0768 -vn 0.6705 -0.1382 0.7289 -vn -0.0306 0.8687 0.4944 -vn -0.1906 0.7901 0.5826 -vn -0.2585 0.8445 0.4691 -vn -0.7503 0.6611 -0.0038 -vn -0.8817 0.0034 0.4718 -vn 0.5962 0.6971 0.3983 -vn 0.3295 0.5207 0.7876 -vn -0.9230 0.1794 -0.3404 -vn 0.4355 0.8889 0.1426 -vn 0.4829 0.6546 0.5817 -vn 0.4620 0.6396 0.6144 -vn 0.5002 0.8341 -0.2325 -vn 0.0206 0.9724 0.2322 -vn -0.9818 -0.1440 -0.1235 -vn 0.5065 0.7716 0.3849 -vn -0.4739 0.8105 0.3443 -vn -0.0302 0.9584 0.2840 -vn -0.7067 0.6682 -0.2326 -vn 0.7356 0.5661 0.3720 -vn -0.9145 0.3594 0.1860 -vn -0.7569 -0.0939 -0.6467 -vn -0.8213 -0.0454 -0.5687 -vn 0.5431 0.7586 -0.3600 -vn 0.5116 0.8264 0.2351 -vn 0.4618 0.7748 0.4317 -vn 0.4500 0.7285 0.5165 -vn -0.2508 0.7319 0.6335 -vn 0.8375 0.4771 0.2664 -vn 0.5804 0.7737 0.2540 -vn -0.8739 0.2423 -0.4214 -vn -0.7500 -0.0586 -0.6589 -vn 0.1044 -0.9942 0.0271 -vn 0.5087 0.8468 -0.1553 -vn 0.5249 0.8407 -0.1331 -vn 0.4586 0.8868 -0.0564 -vn 0.4822 0.8618 0.1574 -vn 0.4437 0.8740 0.1980 -vn 0.2422 0.6928 0.6792 -vn -0.5041 0.8567 0.1091 -vn -0.7936 -0.5455 0.2694 -vn 0.8064 0.5501 0.2172 -vn 0.7062 0.3921 0.5895 -vn -0.2047 0.8557 0.4752 -vn -0.2475 0.7990 0.5481 -vn -0.4397 0.8450 0.3044 -vn 0.0031 0.0423 -0.9991 -vn 0.7720 -0.5134 -0.3748 -vn 0.4647 0.8853 -0.0186 -vn -0.0965 0.7711 0.6293 -vn 0.3824 -0.9115 -0.1515 -vn -0.4019 0.8482 0.3450 -vn 0.7976 0.5333 0.2817 -vn 0.1155 0.8914 0.4383 -vn 0.2148 0.8852 0.4126 -vn -0.1385 0.6148 0.7764 -vn -0.2036 0.8143 0.5436 -vn -0.7656 -0.0185 -0.6430 -vn -0.7321 0.5573 -0.3918 -vn 0.5670 0.2811 -0.7743 -vn 0.4037 0.9143 0.0328 -vn 0.2528 0.9035 0.3460 -vn 0.2650 0.9033 0.3374 -vn 0.1325 0.7795 0.6123 -vn 0.6591 -0.6943 -0.2891 -vn -0.2618 0.8645 0.4291 -vn -0.4983 0.1856 0.8469 -vn -0.1097 0.9650 0.2381 -vn 0.1927 0.6807 0.7067 -vn -0.4019 0.7864 0.4692 -vn -0.4062 -0.0908 -0.9093 -vn -0.8021 -0.5961 -0.0346 -vn 0.0969 0.2275 -0.9690 -vn -0.2852 -0.2407 -0.9278 -vn 0.1728 0.8274 0.5343 -vn 0.0067 -0.6672 -0.7449 -vn -0.7610 -0.6296 0.1567 -vn 0.2427 0.8141 0.5275 -vn -0.2154 0.6811 0.6998 -vn -0.0687 0.6186 0.7827 -vn -0.8492 -0.5230 0.0727 -vn -0.8488 -0.5238 0.0722 -vn 0.4232 0.9028 -0.0769 -vn -0.8342 -0.0223 0.5510 -vn -0.4702 0.8039 0.3642 -vn -0.5309 -0.2530 0.8088 -vn -0.8523 -0.1025 0.5130 -vn -0.4273 0.5238 0.7369 -vn -0.2212 0.9319 0.2875 -vn -0.7858 0.4534 0.4207 -vn -0.6074 0.6756 0.4178 -vn 0.3368 0.6182 0.7102 -vn -0.2270 -0.0314 0.9734 -vn -0.6429 0.7481 0.1641 -vn -0.5010 0.0864 0.8611 -vn -0.7550 0.5775 0.3104 -vn -0.2147 0.0732 0.9739 -vn 0.0533 0.4343 0.8992 -vn -0.5135 -0.0639 -0.8557 -vn 0.1973 -0.8324 -0.5178 -vn -0.8924 0.2563 0.3714 -vn -0.6315 0.3999 0.6643 -vn -0.8412 -0.0357 0.5396 -vn 0.0354 0.7521 0.6582 -vn -0.4440 0.7413 0.5034 -vn -0.6565 -0.0497 0.7527 -vn -0.1376 0.2155 0.9668 -vn 0.7950 -0.4735 -0.3792 -vn -0.8448 0.3175 0.4307 -vn -0.7984 -0.0844 0.5962 -vn -0.4132 -0.0009 -0.9106 -vn 0.1661 -0.9453 -0.2809 -vn -0.5123 -0.0698 0.8560 -vn -0.1449 -0.5872 -0.7964 -vn 0.2868 -0.7426 -0.6053 -vn -0.5605 -0.0698 -0.8252 -vn -0.7171 0.5763 0.3920 -vn -0.3578 0.3245 0.8756 -vn -0.1589 -0.7876 -0.5953 -vn -0.1989 -0.7442 -0.6376 -vn -0.5385 0.6506 0.5355 -vn -0.7258 0.5044 0.4678 -vn 0.0824 0.2705 0.9592 -vn -0.7888 0.0592 0.6118 -vn -0.5851 0.7973 -0.1480 -vn -0.8765 -0.1379 0.4613 -vn -0.7486 -0.4686 0.4690 -vn -0.2704 0.9416 0.2005 -vn -0.8635 -0.5040 0.0178 -vn -0.7351 -0.1737 0.6554 -vn -0.2337 0.3639 -0.9016 -vn -0.8310 -0.4048 0.3815 -vn -0.3873 0.9131 -0.1273 -vn -0.5713 0.6340 0.5212 -vn 0.1640 -0.3196 0.9333 -vn 0.2333 -0.8912 -0.3890 -vn -0.8196 -0.1173 0.5608 -vn -0.1586 0.9171 0.3656 -vn -0.5054 0.8495 0.1513 -vn -0.6863 0.6518 0.3226 -vn -0.2032 -0.4326 -0.8784 -vn 0.3401 0.2916 0.8941 -vn 0.7252 -0.6161 -0.3074 -vn -0.4891 -0.0960 0.8669 -vn -0.3941 -0.0943 -0.9142 -vn -0.6928 0.6524 0.3072 -vn -0.4889 0.3086 0.8159 -vn -0.5543 -0.1791 -0.8128 -vn -0.1915 -0.1116 0.9751 -vn -0.4562 -0.0359 0.8891 -vn -0.7605 -0.1903 0.6208 -vn -0.5615 0.4926 0.6649 -vn -0.2356 -0.8687 0.4357 -vn 0.5643 -0.7187 -0.4063 -vn -0.5785 0.4856 -0.6553 -vn -0.6369 0.4207 0.6460 -vn -0.8324 -0.0224 0.5537 -vn -0.7838 0.4496 0.4284 -vn -0.8238 0.5372 0.1811 -vn -0.5001 0.0455 0.8647 -vn -0.5323 0.5649 0.6306 -vn -0.7437 0.4566 0.4883 -vn -0.8951 -0.2175 0.3893 -vn -0.5661 0.8146 0.1264 -vn -0.5151 0.7296 0.4498 -vn -0.7878 0.1013 0.6076 -vn -0.7654 -0.1859 0.6161 -vn 0.0578 -0.9977 0.0366 -vn -0.9121 0.2980 0.2816 -vn -0.6358 0.6495 0.4170 -vn -0.6366 0.7065 0.3091 -vn -0.7961 -0.3301 0.5072 -vn 0.4036 0.2088 0.8908 -vn -0.3928 0.5802 0.7135 -vn -0.8051 0.4404 0.3974 -vn -0.2897 -0.3519 -0.8901 -vn -0.7255 0.4615 0.5105 -vn -0.5286 -0.2212 0.8196 -vn -0.4313 -0.3702 0.8227 -vn -0.9190 0.3436 0.1935 -vn 0.7618 -0.6066 -0.2272 -vn 0.5241 -0.8507 -0.0415 -vn -0.5587 0.2842 0.7792 -vn -0.5492 0.3436 0.7618 -vn -0.5961 0.6789 0.4286 -vn -0.8739 0.1607 0.4588 -vn -0.2011 0.8500 0.4869 -vn -0.7258 0.4618 0.5099 -vn -0.5395 -0.5440 0.6427 -vn 0.8557 -0.4794 -0.1947 -vn -0.4817 0.6291 0.6101 -vn -0.8778 -0.0589 0.4754 -vn -0.6613 -0.2594 0.7038 -vn -0.8306 -0.2746 0.4845 -vn -0.8116 -0.0946 0.5765 -vn -0.6125 0.6955 0.3757 -vn -0.9713 -0.2328 0.0495 -vn 0.1633 -0.8394 -0.5184 -vn 0.0809 -0.9924 -0.0926 -vn -0.7981 0.3900 0.4593 -vn -0.4013 0.8174 0.4133 -vn -0.5213 -0.0882 -0.8488 -vn -0.6309 -0.3577 0.6885 -vn -0.2961 0.7205 0.6270 -vn 0.6258 -0.6952 0.3536 -vn 0.7612 -0.2110 -0.6132 -vn -0.5703 -0.7415 0.3534 -vn -0.8902 -0.4497 -0.0726 -vn -0.5225 -0.7861 0.3302 -vn -0.0408 -0.9400 0.3386 -vn 0.1900 -0.9055 -0.3794 -vn -0.6876 0.2172 -0.6929 -vn -0.8535 -0.2277 0.4688 -vn 0.1434 -0.8598 -0.4901 -vn -0.7458 0.4213 0.5160 -vn -0.7806 -0.1989 0.5925 -vn 0.1816 -0.1328 -0.9744 -vn -0.7655 -0.4309 0.4777 -vn -0.4544 0.8086 0.3737 -vn -0.7416 -0.1890 0.6437 -vn -0.5946 0.6514 0.4712 -vn -0.5106 -0.4413 0.7380 -vn -0.9051 -0.2333 0.3554 -vn 0.5483 -0.1182 0.8279 -vn -0.9486 0.2563 0.1857 -vn -0.6750 0.6436 0.3608 -vn -0.6746 -0.2909 0.6785 -vn 0.4001 -0.9163 0.0176 -vn -0.9237 -0.0262 0.3822 -vn 0.4073 0.0945 0.9084 -vn -0.4895 -0.1113 0.8649 -vn -0.8457 -0.5197 -0.1209 -vn -0.4508 0.8163 0.3612 -vn -0.5503 0.0665 -0.8323 -vn -0.5769 -0.2732 0.7698 -vn -0.5993 0.6940 0.3990 -vn 0.6691 -0.6821 0.2951 -vn 0.4860 -0.8577 -0.1679 -vn -0.4672 0.0567 0.8823 -vn -0.4051 -0.7437 0.5319 -vn -0.9084 0.2921 -0.2992 -vn -0.6972 -0.0946 0.7106 -vn -0.6494 0.4079 0.6418 -vn -0.5390 0.2691 0.7982 -vn -0.4951 0.6605 0.5644 -vn 0.0427 0.6679 0.7430 -vn -0.5884 0.0653 0.8059 -vn 0.1331 -0.7008 -0.7009 -vn -0.4746 0.6143 0.6304 -vn -0.1910 -0.9242 -0.3307 -vn 0.0788 -0.0046 0.9969 -vn -0.3064 0.1553 0.9392 -vn -0.6723 -0.1737 0.7196 -vn 0.4351 0.1811 0.8820 -vn -0.8613 -0.2401 0.4478 -vn -0.6597 -0.1414 0.7381 -vn -0.2208 0.9193 0.3257 -vn -0.4595 0.3149 0.8305 -vn -0.8443 0.0439 0.5340 -vn -0.3403 0.1278 0.9316 -vn -0.4304 -0.4799 0.7645 -vn -0.2723 -0.8642 0.4231 -vn -0.7390 0.3762 0.5589 -vn -0.3687 0.7836 0.5001 -vn -0.5147 -0.2289 0.8262 -vn -0.9886 0.1504 -0.0052 -vn 0.0762 -0.7777 -0.6241 -vn -0.8113 0.0034 0.5846 -vn -0.1950 0.0535 0.9793 -vn 0.1993 0.1344 -0.9707 -vn 0.4671 -0.6509 0.5985 -vn -0.4451 0.8180 0.3644 -vn -0.6163 0.1472 0.7736 -vn -0.6688 -0.0490 0.7418 -vn -0.1816 -0.8793 0.4403 -vn -0.8043 -0.3372 0.4892 -vn -0.1752 0.9143 0.3652 -vn -0.8372 -0.2646 0.4786 -vn -0.2845 0.9557 -0.0760 -vn -0.5302 -0.3992 0.7480 -vn -0.8374 -0.2632 0.4790 -vn -0.1151 0.0456 0.9923 -vn -0.6022 -0.1935 0.7746 -vn -0.4866 0.1631 -0.8583 -vn -0.3962 -0.1569 -0.9047 -vn 0.0966 -0.0789 0.9922 -vn -0.4811 -0.2622 -0.8365 -vn -0.3500 -0.8638 0.3623 -vn -0.4968 -0.7174 0.4883 -vn -0.4327 -0.8866 0.1634 -vn -0.3574 0.1190 -0.9264 -vn 0.5557 -0.6525 -0.5153 -vn -0.4323 -0.8138 0.3883 -vn -0.4880 -0.1599 0.8580 -vn 0.2329 0.0330 0.9719 -vn -0.8961 0.4202 -0.1430 -vn -0.8041 -0.5187 -0.2906 -vn -0.4007 -0.5537 -0.7300 -vn -0.6698 0.6216 0.4062 -vn -0.3272 0.3949 -0.8585 -vn -0.6195 0.1885 0.7620 -vn -0.5830 0.5017 0.6391 -vn -0.4742 0.6604 0.5823 -vn -0.5598 -0.2650 0.7851 -vn -0.3573 -0.3013 0.8841 -vn -0.4870 -0.4884 0.7241 -vn -0.7689 0.4410 0.4629 -vn -0.5974 0.4482 0.6650 -vn -0.5021 -0.1293 0.8551 -vn -0.9171 0.3916 -0.0743 -vn -0.5891 0.7031 0.3982 -vn -0.3244 -0.8380 -0.4387 -vn -0.4809 -0.7576 0.4413 -vn 0.0116 -0.9999 -0.0100 -vn -0.3527 -0.5773 0.7364 -vn 0.1123 0.6940 0.7112 -vn 0.1296 0.2197 -0.9669 -vn -0.6235 -0.1934 -0.7575 -vn -0.0829 -0.5273 -0.8456 -vn 0.0502 -0.8457 0.5314 -vn 0.0861 -0.4690 -0.8790 -vn -0.3732 0.8556 0.3587 -vn -0.8580 0.1480 0.4919 -vn 0.0430 0.1869 -0.9814 -vn -0.3656 -0.4356 0.8226 -vn -0.9864 0.1514 0.0641 -vn -0.8449 0.4781 0.2399 -vn -0.7765 0.5276 -0.3445 -vn -0.8944 0.3687 0.2532 -vn -0.8693 0.4941 0.0140 -vn -0.8640 0.1603 0.4773 -vn -0.2328 0.9287 0.2888 -vn -0.6546 0.1200 0.7464 -vn -0.9386 0.1377 -0.3162 -vn 0.0812 -0.3851 0.9193 -vn -0.8512 0.2076 0.4821 -vn -0.1071 -0.5309 -0.8407 -vn -0.2384 0.2048 0.9493 -vn -0.6994 -0.4688 0.5395 -vn -0.6224 0.2268 0.7491 -vn -0.3998 0.8759 -0.2701 -vn -0.6428 0.2770 -0.7142 -vn -0.8510 -0.2819 0.4431 -vn -0.9156 0.3389 0.2163 -vn -0.7244 -0.1451 0.6740 -vn -0.9950 -0.0140 -0.0992 -vn -0.8081 0.2313 -0.5417 -vn -0.8223 0.2782 0.4965 -vn -0.8429 -0.2981 0.4479 -vn -0.6514 -0.3113 -0.6919 -vn 0.1044 -0.1160 -0.9877 -vn -0.5864 0.0605 0.8077 -vn -0.5075 0.5179 0.6887 -vn 0.6853 -0.5234 -0.5064 -vn -0.2710 -0.8639 0.4246 -vn -0.3079 -0.8167 0.4880 -vn -0.3910 0.7269 0.5645 -vn -0.4479 -0.2673 0.8532 -vn -0.8363 -0.0551 0.5454 -vn 0.1035 -0.1057 -0.9890 -vn -0.4785 0.3371 0.8108 -vn -0.7783 -0.4163 0.4700 -vn -0.5257 -0.0765 0.8473 -vn -0.9056 0.3377 0.2566 -vn -0.8271 0.5382 -0.1622 -vn -0.8574 0.5044 0.1020 -vn -0.8956 0.4210 -0.1433 -vn -0.5968 0.3336 -0.7298 -vn -0.0916 0.0476 -0.9947 -vn -0.4704 0.4447 0.7622 -vn 0.0079 -0.9997 0.0240 -vn -0.6230 0.7765 0.0943 -vn -0.7309 0.2361 0.6403 -vn -0.5890 -0.5654 -0.5773 -vn 0.0761 0.7056 0.7045 -vn -0.9301 0.1556 -0.3326 -vn -0.5383 0.4272 0.7265 -vn -0.5669 0.4217 0.7076 -vn -0.6266 0.0885 0.7743 -vn -0.6631 0.3093 0.6816 -vn 0.1953 -0.9003 -0.3889 -vn 0.0614 -0.9968 0.0510 -vn -0.1150 -0.6689 0.7344 -vn 0.1562 -0.4580 -0.8751 -vn -0.4196 -0.3163 0.8508 -vn -0.2739 0.2450 -0.9300 -vn -0.1262 -0.0566 0.9904 -vn -0.3587 -0.2627 -0.8957 -vn -0.6095 -0.2451 0.7539 -vn 0.7546 0.4269 0.4984 -vn -0.9103 0.2326 0.3425 -vn -0.4003 0.2795 -0.8727 -vn -0.5393 -0.4171 0.7316 -vn -0.0467 0.8209 -0.5692 -vn -0.9720 0.0847 -0.2191 -vn -0.8382 -0.4174 -0.3511 -vn -0.2632 -0.2957 -0.9183 -vn -0.7634 0.3085 0.5676 -vn 0.1282 -0.3912 -0.9113 -vn -0.8589 -0.4860 0.1617 -vn -0.6264 0.5306 0.5710 -vn -0.5847 0.6322 0.5084 -vn -0.5186 0.8484 0.1062 -vn -0.0407 0.0255 -0.9988 -vn -0.5264 -0.7444 0.4109 -vn -0.5773 0.5428 0.6100 -vn -0.9113 -0.0104 0.4116 -vn -0.7852 0.0986 0.6114 -vn -0.9117 0.4045 0.0719 -vn 0.4689 -0.8832 -0.0128 -vn -0.7269 0.4368 0.5300 -vn -0.2077 0.7238 0.6580 -vn -0.9510 0.1581 -0.2656 -vn -0.9670 0.1293 0.2195 -vn -0.4589 0.7208 0.5194 -vn -0.2843 0.8987 0.3338 -vn -0.3551 0.6832 0.6381 -vn -0.7979 -0.3403 0.4975 -vn -0.7673 -0.3885 0.5102 -vn -0.7204 0.1412 0.6790 -vn -0.4352 0.8240 0.3629 -vn -0.8365 -0.2998 0.4587 -vn -0.8627 0.0426 0.5039 -vn -0.8660 0.1841 0.4650 -vn -0.2270 -0.0316 0.9734 -vn -0.2293 0.9301 0.2868 -vn -0.6504 0.6545 0.3854 -vn 0.1627 0.3027 0.9391 -vn -0.9585 0.2808 0.0492 -vn -0.8994 0.3918 -0.1940 -vn -0.3774 0.0294 0.9256 -vn -0.6905 0.4016 0.6015 -vn -0.5305 0.5729 0.6248 -vn -0.0768 -0.1130 0.9906 -vn -0.5799 0.3270 0.7462 -vn -0.4403 0.5219 0.7306 -vn -0.7848 0.0667 0.6161 -vn -0.7386 -0.0199 0.6738 -vn -0.5639 -0.2075 0.7993 -vn 0.5640 -0.5194 -0.6420 -vn 0.9152 -0.0327 0.4017 -vn -0.0579 0.5388 0.8404 -vn -0.5259 -0.7449 0.4106 -vn 0.0094 0.0348 0.9994 -vn -0.4173 -0.6406 0.6446 -vn 0.2604 0.2133 0.9416 -vn -0.8620 0.5069 0.0068 -vn -0.6478 -0.1257 0.7514 -vn 0.2540 -0.8281 -0.4997 -vn -0.6290 0.7622 0.1529 -vn -0.7699 0.0225 0.6378 -vn -0.6775 0.5175 0.5227 -vn -0.2100 -0.0221 -0.9775 -vn -0.3584 -0.1576 -0.9202 -vn 0.7522 -0.1938 0.6298 -vn -0.0141 -0.2470 -0.9689 -vn -0.8446 0.0299 0.5345 -vn -0.7895 0.2901 0.5408 -vn 0.4332 -0.8320 -0.3465 -vn -0.7388 -0.4628 0.4900 -vn -0.0587 -0.9983 -0.0011 -vn -0.8518 0.5227 -0.0354 -vn -0.9104 0.1096 0.3989 -vn -0.8267 0.3903 0.4054 -vn -0.8349 0.3463 0.4279 -vn -0.6897 0.6468 0.3257 -vn -0.9708 0.0319 0.2379 -vn -0.3395 0.7979 0.4981 -vn -0.1297 -0.3904 -0.9115 -vn 0.0603 0.0400 -0.9974 -vn -0.2325 0.3592 -0.9039 -vn 0.3982 0.0778 0.9140 -vn -0.8690 0.2148 0.4457 -vn -0.7306 0.5441 0.4125 -vn -0.6240 0.7507 -0.2169 -vn 0.1941 -0.7911 0.5801 -vn -0.7106 0.5089 0.4859 -vn -0.6212 0.3900 0.6797 -vn -0.3205 0.8747 0.3634 -vn -0.4448 0.7717 0.4546 -vn -0.4532 0.1960 -0.8696 -vn -0.4179 -0.1664 -0.8931 -vn -0.5512 -0.0610 0.8321 -vn -0.9092 -0.1914 0.3699 -vn -0.7920 -0.2733 0.5459 -vn -0.7826 -0.1002 0.6144 -vn -0.7576 0.2948 0.5823 -vn -0.0400 0.9174 0.3961 -vn -0.6088 0.7135 0.3468 -vn -0.0788 0.4643 0.8822 -vn 0.1558 -0.1693 -0.9732 -vn -0.5446 0.2407 0.8034 -vn -0.8207 -0.3763 0.4300 -vn -0.6895 0.1742 0.7030 -vn -0.2889 -0.0328 -0.9568 -vn -0.8434 -0.3402 0.4159 -vn -0.9019 -0.1050 0.4190 -vn -0.7767 0.2205 0.5900 -vn -0.6749 -0.2241 0.7031 -vn 0.0085 -0.9986 -0.0525 -vn -0.2055 0.8333 0.5132 -vn -0.3204 0.8895 0.3258 -vn -0.7910 -0.2542 0.5565 -vn -0.7996 -0.0636 -0.5971 -vn -0.8549 -0.4025 -0.3272 -vn -0.2785 0.6073 0.7440 -vn -0.4812 0.6540 0.5837 -vn -0.3652 0.7577 0.5408 -vn -0.5044 0.6650 0.5509 -vn -0.4721 0.5225 0.7100 -vn -0.1296 0.1334 -0.9825 -vn -0.3077 0.7181 0.6242 -vn -0.0315 0.2105 -0.9771 -vn -0.1217 0.1107 -0.9864 -vn -0.4082 0.8249 0.3910 -vn -0.1375 -0.5141 0.8466 -vn -0.8569 0.0767 0.5097 -vn 0.0171 0.5877 0.8089 -vn -0.8066 -0.3029 0.5077 -vn -0.3559 0.9342 0.0256 -vn -0.9425 -0.0615 0.3285 -vn -0.2615 0.8476 0.4618 -vn -0.5603 0.4499 0.6954 -vn -0.0204 0.3348 -0.9421 -vn -0.1138 0.4424 -0.8895 -vn -0.1288 0.2769 -0.9522 -vn 0.2953 -0.9334 -0.2040 -vn -0.7709 -0.0996 0.6291 -vn -0.7548 0.1204 0.6448 -vn -0.3879 0.4139 0.8235 -vn -0.5643 -0.4299 0.7048 -vn -0.7587 0.1005 0.6437 -vn -0.6227 -0.1156 0.7738 -vn -0.6251 0.2227 0.7481 -vn -0.8807 0.3783 0.2852 -vn -0.7117 0.5703 0.4102 -vn -0.7241 0.5360 0.4340 -vn 0.1388 -0.2037 -0.9692 -vn -0.5684 -0.5791 0.5845 -vn -0.4975 0.4908 0.7152 -vn -0.3909 0.7476 0.5369 -vn -0.2759 0.8343 0.4773 -vn -0.8089 0.2829 0.5155 -vn -0.7260 0.5705 0.3840 -vn 0.4977 -0.8377 -0.2248 -vn 0.0466 -0.0065 -0.9989 -vn -0.7865 -0.0588 0.6147 -vn -0.7183 0.2461 0.6507 -vn -0.4063 0.0261 -0.9134 -vn -0.7713 0.5034 0.3895 -vn -0.9040 -0.3272 0.2752 -vn -0.4615 0.1549 0.8735 -vn -0.5469 0.8074 0.2214 -vn -0.5521 0.7901 0.2663 -vn -0.5875 0.6997 0.4066 -vn -0.6646 0.6993 0.2632 -vn -0.7772 0.2987 0.5538 -vn -0.3341 -0.0418 -0.9416 -vn 0.1374 -0.6545 -0.7434 -vn -0.8275 -0.0320 0.5605 -vn 0.0696 0.2856 0.9558 -vn -0.1940 -0.3876 -0.9012 -vn -0.0646 0.1974 0.9782 -vn -0.4972 0.7553 0.4269 -vn -0.5881 0.7388 0.3291 -vn -0.5332 0.7899 0.3030 -vn -0.6436 0.4441 0.6233 -vn -0.3625 0.6675 0.6505 -vn -0.4475 0.7825 0.4329 -vn -0.6113 0.5455 0.5734 -vn 0.0207 -0.6161 -0.7874 -vn -0.6859 0.4694 -0.5561 -vn -0.8235 0.4951 -0.2770 -vn -0.3499 -0.2582 -0.9005 -vn -0.7288 -0.3503 0.5884 -vn -0.7323 -0.0053 0.6810 -vn 0.5480 -0.4293 0.7180 -vn -0.3314 -0.1301 -0.9345 -vn 0.9758 -0.1889 -0.1104 -vn -0.0502 0.2053 -0.9774 -vn -0.9417 0.2123 0.2611 -vn -0.9235 0.0856 0.3739 -vn -0.8980 -0.3360 -0.2840 -vn -0.8338 0.3783 0.4022 -vn 0.2822 0.1747 0.9433 -vn -0.8517 0.3090 0.4232 -vn -0.4583 0.7599 0.4609 -vn -0.4136 -0.2086 -0.8863 -vn -0.7411 -0.2769 0.6116 -vn -0.9855 0.1473 0.0842 -vn -0.5528 0.1072 -0.8264 -vn -0.7897 -0.3216 0.5224 -vn -0.7832 -0.0469 0.6200 -vn -0.8223 0.0741 0.5642 -vn -0.6529 0.5821 0.4846 -vn -0.1717 -0.2118 0.9621 -vn -0.6720 -0.1008 0.7337 -vn -0.3264 0.7406 0.5873 -vn -0.5221 0.7756 0.3546 -vn -0.6446 0.7321 0.2205 -vn -0.4560 0.7001 0.5495 -vn -0.5304 0.6706 0.5186 -vn 0.1397 0.0517 -0.9888 -vn -0.6960 0.0482 -0.7164 -vn -0.7838 0.0072 0.6210 -vn -0.7967 -0.3336 0.5040 -vn -0.7865 0.3590 0.5025 -vn -0.6944 0.4761 0.5396 -vn -0.7217 0.4877 0.4912 -vn -0.7084 0.5602 0.4294 -vn -0.8209 -0.0333 0.5701 -vn -0.8291 -0.0430 0.5574 -vn -0.7314 0.4813 0.4831 -vn -0.5626 0.5967 0.5722 -vn -0.6691 0.7339 0.1170 -vn -0.3631 0.7754 0.5165 -vn -0.5655 -0.2993 -0.7685 -vn -0.3369 -0.0499 -0.9402 -vn -0.6223 -0.1778 -0.7623 -vn -0.7258 0.1350 0.6745 -vn -0.6064 -0.0319 0.7945 -vn -0.5756 0.0086 -0.8177 -vn -0.6742 -0.3459 0.6525 -vn -0.8422 0.2140 0.4949 -vn -0.8552 0.2557 0.4509 -vn -0.5121 0.6644 0.5444 -vn 0.7430 -0.2062 -0.6368 -vn -0.5676 0.2952 0.7685 -vn -0.6588 -0.2043 0.7240 -vn -0.4805 0.5643 0.6714 -vn -0.3860 0.8314 0.3997 -vn -0.5778 0.5623 0.5916 -vn -0.6809 0.1943 0.7062 -vn -0.3358 -0.0993 -0.9367 -vn -0.4232 -0.4097 -0.8081 -vn -0.7365 0.1349 0.6628 -vn -0.6850 0.2593 0.6808 -vn -0.7314 0.6376 -0.2421 -vn -0.1220 0.1020 -0.9873 -vn 0.0355 -0.9988 -0.0324 -vn -0.3807 0.0158 -0.9246 -vn -0.7423 0.2376 0.6265 -vn -0.7447 0.3968 0.5366 -vn -0.3467 -0.1548 -0.9251 -vn -0.0469 0.5429 -0.8385 -vn -0.1366 0.2679 -0.9537 -vn 0.0401 0.7729 -0.6333 -vn -0.0971 0.8026 -0.5885 -vn 0.0701 0.6181 -0.7829 -vn -0.2382 0.6231 -0.7450 -vn 0.0563 0.7355 -0.6752 -vn -0.5731 0.3592 -0.7366 -vn 0.1959 0.8995 -0.3906 -vn -0.8527 0.0603 -0.5189 -vn -0.8559 -0.1248 -0.5018 -vn 0.1605 0.9078 -0.3874 -vn 0.2797 0.7747 -0.5672 -vn 0.1196 0.7641 -0.6340 -vn -0.8687 -0.1094 -0.4832 -vn -0.6011 -0.0297 -0.7986 -vn -0.9866 0.0921 0.1344 -vn -0.7682 -0.2934 -0.5691 -vn -0.6177 -0.4453 -0.6482 -vn -0.6238 -0.4453 -0.6423 -vn -0.4393 -0.5280 -0.7268 -vn 0.2501 -0.9081 -0.3360 -vn -0.9436 0.1095 -0.3124 -vn -0.9377 -0.0214 -0.3468 -vn -0.6920 -0.0273 -0.7214 -vn -0.4393 0.8966 -0.0555 -vn -0.8736 -0.1440 -0.4648 -vn -0.4124 -0.5171 -0.7500 -vn -0.6542 0.0261 -0.7558 -vn -0.9464 -0.0794 -0.3131 -vn -0.8346 -0.3133 -0.4530 -vn -0.6842 -0.4620 -0.5642 -vn -0.6619 -0.5156 -0.5441 -vn -0.4322 -0.6705 -0.6030 -vn -0.6848 0.4527 -0.5711 -vn -0.8493 -0.2683 -0.4547 -vn -0.3568 -0.6499 -0.6711 -vn -0.7945 -0.2123 -0.5690 -vn 0.8219 -0.5615 -0.0965 -vn 0.6321 -0.7430 -0.2200 -vn -0.9609 0.1588 -0.2270 -vn -0.9798 0.0367 -0.1964 -vn -0.7293 -0.4965 -0.4708 -vn -0.3905 -0.6979 -0.6004 -vn -0.8536 -0.2149 -0.4746 -vn 0.1000 0.3206 -0.9419 -vn -0.7504 -0.4796 -0.4548 -vn -0.3872 -0.7068 -0.5921 -vn -0.9667 0.1449 -0.2108 -vn -0.9610 -0.1054 -0.2555 -vn -0.8903 -0.2637 -0.3712 -vn -0.3868 -0.7065 -0.5927 -vn -0.9881 -0.1173 -0.0998 -vn -0.6727 -0.4907 -0.5538 -vn -0.8831 0.4441 0.1510 -vn -0.9540 -0.1189 -0.2752 -vn -0.8819 -0.3203 -0.3460 -vn -0.7404 -0.5319 -0.4111 -vn -0.3937 -0.7385 -0.5474 -vn -0.9887 0.1182 0.0922 -vn -0.5062 -0.6356 -0.5829 -vn -0.8672 -0.4150 -0.2750 -vn -0.3753 -0.7246 -0.5780 -vn -0.4011 -0.6224 -0.6722 -vn -0.9496 -0.1190 0.2902 -vn -0.9651 0.2005 -0.1685 -vn -0.9823 0.1406 -0.1240 -vn -0.5103 -0.7569 -0.4082 -vn -0.9697 0.2263 0.0920 -vn -0.8654 -0.2220 -0.4492 -vn -0.9570 -0.1259 -0.2613 -vn -0.9071 -0.3133 -0.2811 -vn -0.6653 -0.5594 -0.4945 -vn -0.4295 -0.7453 -0.5099 -vn -0.7048 -0.5575 -0.4386 -vn -0.7222 0.6258 0.2946 -vn -0.9220 0.0557 -0.3830 -vn -0.0630 0.9973 0.0371 -vn -0.9618 0.2344 0.1414 -vn -0.5232 0.7370 -0.4278 -vn -0.9116 0.4059 0.0652 -vn -0.9887 -0.0740 -0.1306 -vn -0.7666 -0.5234 -0.3720 -vn -0.7893 -0.5165 -0.3319 -vn -0.9709 0.2129 0.1097 -vn -0.4903 0.7825 -0.3837 -vn -0.6392 0.7020 -0.3142 -vn 0.7575 -0.6163 -0.2152 -vn 0.5907 0.2243 -0.7751 -vn 0.1483 0.8623 -0.4842 -vn -0.8246 0.5287 0.2012 -vn 0.0304 -0.0063 -0.9995 -vn -0.9196 -0.2527 -0.3009 -vn -0.4794 -0.7097 -0.5163 -vn -0.6946 -0.6391 -0.3303 -vn -0.4321 -0.7612 -0.4835 -vn -0.2778 0.7033 -0.6544 -vn 0.7146 0.6891 -0.1205 -vn -0.9736 0.1949 -0.1185 -vn -0.5888 0.7932 -0.1555 -vn -0.6265 -0.4943 0.6026 -vn -0.1716 0.7349 -0.6561 -vn -0.8396 -0.4124 -0.3536 -vn -0.9293 -0.2934 -0.2244 -vn -0.9576 -0.2108 -0.1963 -vn -0.6613 -0.6448 -0.3834 -vn -0.3685 -0.9291 -0.0325 -vn 0.5009 0.3473 -0.7927 -vn -0.9837 -0.0433 -0.1743 -vn -0.9539 0.2467 -0.1709 -vn -0.7477 -0.5593 -0.3578 -vn -0.7660 -0.5321 -0.3608 -vn -0.5010 -0.7546 -0.4238 -vn -0.4891 -0.7556 -0.4357 -vn -0.6840 -0.6028 -0.4108 -vn -0.9836 0.0875 0.1579 -vn -0.1106 0.8352 -0.5387 -vn -0.6282 -0.1093 -0.7703 -vn -0.7777 0.0659 -0.6252 -vn -0.7795 0.0497 -0.6244 -vn -0.6817 0.4145 -0.6029 -vn -0.5669 -0.8147 -0.1219 -vn -0.9797 0.0194 -0.1995 -vn -0.9553 0.2814 -0.0912 -vn 0.4476 0.4938 -0.7455 -vn 0.1976 0.9331 -0.3004 -vn -0.6052 -0.3947 -0.6913 -vn -0.7684 -0.3339 -0.5460 -vn -0.8128 0.0407 -0.5810 -vn -0.8576 0.2228 -0.4635 -vn -0.6586 0.5642 -0.4978 -vn -0.2160 0.2482 -0.9443 -vn -0.9778 0.0229 -0.2083 -vn -0.9593 -0.2593 -0.1122 -vn -0.9378 -0.3363 -0.0868 -vn -0.9898 0.1170 0.0815 -vn -0.0978 0.9258 -0.3651 -vn -0.7688 -0.4139 -0.4875 -vn -0.7451 -0.4422 -0.4993 -vn -0.7622 -0.3467 -0.5467 -vn -0.8377 -0.3184 -0.4437 -vn -0.8533 0.2457 -0.4599 -vn 0.0203 -0.9996 -0.0179 -vn -0.5148 -0.7671 -0.3828 -vn -0.9406 -0.3284 -0.0862 -vn 0.3231 0.5635 -0.7603 -vn -0.7076 -0.1915 -0.6802 -vn -0.8959 0.2941 -0.3331 -vn -0.9390 0.3026 -0.1633 -vn -0.5323 -0.7467 -0.3988 -vn -0.7733 -0.5554 -0.3059 -vn -0.9388 0.2644 0.2209 -vn -0.2751 0.9195 0.2807 -vn 0.3200 0.5702 -0.7566 -vn -0.5510 -0.3900 -0.7378 -vn -0.7749 -0.2186 -0.5931 -vn -0.7279 -0.2406 -0.6421 -vn -0.7952 -0.4137 -0.4433 -vn -0.8832 -0.2706 -0.3831 -vn -0.9020 -0.3455 -0.2589 -vn -0.9191 -0.3223 -0.2266 -vn -0.9283 -0.0358 -0.3702 -vn -0.9628 0.2237 -0.1517 -vn -0.7783 0.2420 -0.5793 -vn 0.3698 0.7688 0.5218 -vn -0.9933 -0.0448 -0.1066 -vn -0.8425 -0.4399 -0.3110 -vn -0.9907 0.1171 0.0697 -vn 0.1053 0.3965 -0.9120 -vn -0.0938 0.7244 -0.6830 -vn -0.7435 -0.2756 -0.6093 -vn -0.7438 -0.3175 -0.5881 -vn -0.7875 -0.3555 -0.5035 -vn -0.7496 -0.2056 -0.6292 -vn -0.7990 0.4233 -0.4271 -vn -0.7329 0.5754 -0.3630 -vn -0.8286 0.4806 -0.2871 -vn -0.4668 0.8200 -0.3312 -vn -0.5332 0.5140 0.6719 -vn -0.9350 0.3359 -0.1136 -vn -0.9729 0.2170 0.0802 -vn -0.1466 0.7096 -0.6892 -vn -0.1622 0.7856 -0.5971 -vn -0.7762 -0.1652 -0.6085 -vn -0.8341 0.4045 -0.3750 -vn -0.9009 0.3195 -0.2938 -vn -0.6853 0.6521 -0.3243 -vn -0.9864 -0.0450 -0.1582 -vn -0.9190 0.3669 -0.1442 -vn -0.9535 -0.2118 -0.2144 -vn -0.8224 -0.5263 -0.2158 -vn -0.9451 -0.3200 -0.0658 -vn -0.9254 0.2913 0.2425 -vn -0.9393 0.2666 0.2160 -vn -0.2422 -0.4962 -0.8338 -vn 0.0569 0.7851 0.6167 -vn -0.6427 -0.7407 -0.1957 -vn 0.3159 -0.3110 0.8964 -vn -0.4221 0.8497 -0.3160 -vn 0.1670 0.5426 -0.8232 -vn -0.9297 -0.1891 -0.3160 -vn -0.9423 -0.1605 -0.2937 -vn -0.8589 -0.2697 -0.4354 -vn -0.8151 -0.3929 -0.4258 -vn -0.8291 0.1432 -0.5405 -vn -0.9650 -0.0189 -0.2614 -vn -0.7985 0.4535 -0.3959 -vn -0.9880 -0.0904 -0.1256 -vn -0.5712 -0.7478 -0.3384 -vn -0.9873 -0.1524 -0.0444 -vn -0.8457 -0.3503 0.4025 -vn -0.1736 0.1773 0.9687 -vn 0.2658 0.8522 -0.4506 -vn 0.2628 0.8323 -0.4881 -vn -0.3368 -0.7911 -0.5106 -vn -0.8729 0.2318 -0.4294 -vn -0.7738 0.3212 -0.5460 -vn -0.6323 0.5254 -0.5693 -vn 0.3887 0.6084 -0.6919 -vn -0.9144 -0.0863 -0.3955 -vn -0.7314 -0.2677 -0.6272 -vn -0.8865 -0.4207 -0.1928 -vn -0.8853 -0.3730 -0.2777 -vn -0.9603 -0.2009 -0.1938 -vn -0.8099 -0.1575 0.5650 -vn -0.1788 0.6286 0.7569 -vn -0.6610 0.6273 -0.4118 -vn -0.6755 0.6049 -0.4217 -vn 0.7367 -0.6693 -0.0967 -vn -0.6699 0.5681 -0.4781 -vn -0.8818 -0.3195 -0.3470 -vn -0.8914 -0.4127 -0.1874 -vn -0.9371 0.0831 -0.3390 -vn -0.5125 0.0505 -0.8572 -vn -0.4968 -0.8646 0.0751 -vn 0.2543 0.6946 -0.6730 -vn -0.9636 -0.1697 0.2066 -vn -0.8734 0.4856 -0.0369 -vn -0.9946 -0.0058 -0.1033 -vn -0.9476 -0.1971 -0.2516 -vn -0.9143 -0.2132 -0.3444 -vn -0.9018 -0.4087 -0.1400 -vn -0.9613 -0.2280 -0.1544 -vn -0.9051 -0.3628 -0.2219 -vn -0.9612 -0.2330 -0.1475 -vn -0.9741 -0.0742 -0.2135 -vn -0.8049 -0.2385 -0.5434 -vn 0.9942 0.0577 -0.0907 -vn -0.0388 -0.6186 -0.7847 -vn -0.9594 -0.2104 -0.1879 -vn -0.5731 -0.7180 -0.3951 -vn -0.7813 -0.5576 -0.2803 -vn -0.5920 -0.7000 -0.3994 -vn -0.9797 -0.1976 0.0321 -vn -0.1879 0.9142 -0.3590 -vn 0.0187 0.6146 -0.7886 -vn -0.8775 -0.3442 0.3341 -vn -0.9314 0.0679 -0.3575 -vn -0.5262 0.2710 -0.8060 -vn -0.5740 0.3532 -0.7387 -vn -0.4177 0.3855 -0.8227 -vn -0.7646 -0.0706 -0.6407 -vn -0.8655 0.0239 -0.5004 -vn -0.8756 -0.0490 -0.4804 -vn -0.8111 -0.3992 -0.4274 -vn -0.9903 -0.0846 -0.1105 -vn -0.3454 0.8164 -0.4627 -vn -0.6626 -0.7401 -0.1149 -vn -0.9889 -0.0854 -0.1215 -vn -0.8793 0.4634 -0.1102 -vn -0.9324 0.3555 -0.0657 -vn -0.9552 -0.2339 -0.1812 -vn -0.4331 -0.8170 -0.3806 -vn -0.6897 0.3149 -0.6520 -vn -0.8321 0.2166 -0.5105 -vn -0.9131 0.0666 -0.4022 -vn -0.7865 0.4794 -0.3893 -vn -0.4675 0.8394 -0.2773 -vn -0.3815 0.8726 -0.3050 -vn -0.6474 0.6302 -0.4286 -vn -0.9523 -0.0987 -0.2886 -vn -0.8984 -0.2439 -0.3652 -vn -0.8983 -0.3133 -0.3081 -vn -0.8732 -0.0938 -0.4783 -vn -0.9728 -0.2158 -0.0841 -vn -0.8757 -0.0907 -0.4743 -vn -0.8501 0.5081 0.1388 -vn -0.8645 0.4844 0.1340 -vn -0.9132 -0.3525 -0.2046 -vn -0.9281 0.3104 0.2055 -vn -0.9030 0.0888 -0.4204 -vn -0.5506 0.6435 -0.5318 -vn -0.7283 0.2163 -0.6503 -vn 0.1155 -0.8108 -0.5738 -vn -0.8186 0.4643 -0.3381 -vn -0.9735 0.2198 -0.0639 -vn -0.9096 -0.2173 -0.3542 -vn -0.8952 -0.2441 -0.3730 -vn -0.8771 -0.3117 -0.3654 -vn 0.2212 0.3660 -0.9039 -vn -0.8461 -0.2745 0.4570 -vn -0.9770 0.2030 0.0656 -vn 0.0860 -0.6069 -0.7901 -vn -0.7135 -0.6957 -0.0829 -vn -0.9874 -0.1079 -0.1156 -vn -0.8881 -0.1826 0.4219 -vn -0.7167 0.1146 -0.6879 -vn -0.6824 0.2393 -0.6907 -vn -0.8803 0.4610 -0.1118 -vn -0.6870 0.6963 -0.2079 -vn -0.4010 0.8274 -0.3931 -vn -0.5877 0.6286 -0.5095 -vn -0.9855 -0.0565 -0.1601 -vn -0.9288 0.0174 -0.3702 -vn -0.9145 -0.2138 -0.3435 -vn -0.9139 -0.2816 -0.2923 -vn -0.3846 0.3170 -0.8669 -vn -0.8266 0.4065 -0.3893 -vn -0.5170 0.7015 -0.4905 -vn -0.1890 -0.7669 -0.6133 -vn -0.3906 0.7681 -0.5073 -vn -0.5616 0.7742 -0.2921 -vn -0.9089 0.3702 -0.1921 -vn -0.4127 -0.9106 -0.0218 -vn -0.5604 -0.7127 -0.4219 -vn -0.8449 -0.4860 -0.2233 -vn -0.9867 0.0828 0.1400 -vn -0.7986 -0.5439 -0.2575 -vn -0.9998 -0.0051 -0.0194 -vn -0.9705 0.1414 -0.1952 -vn -0.9099 -0.3021 -0.2843 -vn -0.8681 0.4766 -0.1388 -vn -0.6881 0.6826 -0.2460 -vn -0.9325 0.0431 -0.3585 -vn -0.9720 -0.1377 -0.1901 -vn -0.8951 -0.2539 -0.3664 -vn -0.8314 -0.3794 -0.4060 -vn 0.0243 0.5604 -0.8279 -vn -0.4048 0.8323 0.3785 -vn -0.9987 0.0381 -0.0347 -vn -0.8739 0.4857 0.0203 -vn -0.9484 -0.2781 -0.1522 -vn -0.5613 -0.7114 -0.4228 -vn -0.9604 -0.2237 -0.1663 -vn -0.3375 0.9152 -0.2201 -vn -0.5672 -0.5668 -0.5975 -vn 0.0213 -0.5362 -0.8438 -vn -0.8138 0.5774 -0.0664 -vn -0.5195 0.8511 0.0760 -vn -0.3138 0.9240 -0.2184 -vn -0.4953 0.8457 -0.1985 -vn -0.7368 0.6697 0.0925 -vn -0.9403 0.1551 -0.3031 -vn -0.2538 0.0523 -0.9658 -vn -0.9117 -0.3200 0.2575 -vn 0.0592 -0.8938 -0.4445 -vn -0.9580 0.2696 -0.0977 -vn -0.7454 0.4041 -0.5302 -vn -0.7133 0.4984 -0.4928 -vn -0.9413 0.1402 -0.3071 -vn 0.1125 -0.9930 0.0358 -vn -0.9878 -0.1333 -0.0801 -vn -0.9070 -0.3187 -0.2751 -vn -0.9380 -0.2675 -0.2206 -vn -0.9415 -0.1894 -0.2789 -vn 0.1361 0.8248 -0.5488 -vn 0.0420 0.4610 -0.8864 -vn -0.7713 0.3257 0.5468 -vn -0.9467 -0.2377 -0.2172 -vn -0.8212 0.3623 -0.4410 -vn -0.5211 0.8124 -0.2616 -vn -0.8267 -0.0543 0.5600 -vn -0.6894 -0.5563 0.4640 -vn -0.6892 -0.5605 0.4592 -vn -0.5170 -0.1814 -0.8365 -vn -0.7241 -0.6676 -0.1733 -vn -0.9909 -0.0973 -0.0927 -vn -0.8864 0.4616 0.0347 -vn -0.6882 -0.6825 -0.2462 -vn -0.5786 -0.7214 -0.3806 -vn -0.8539 -0.4816 -0.1975 -vn -0.9905 0.1028 0.0917 -vn -0.8756 0.4726 -0.0998 -vn -0.8916 0.1486 -0.4278 -vn -0.8225 0.4650 -0.3276 -vn -0.8005 0.5169 -0.3034 -vn -0.7259 0.5893 -0.3548 -vn -0.5905 0.7163 -0.3718 -vn -0.9610 0.2093 -0.1810 -vn -0.9792 -0.0677 -0.1912 -vn -0.9335 -0.2650 -0.2416 -vn -0.9411 -0.2408 -0.2374 -vn -0.6260 0.7093 0.3240 -vn -0.8418 0.3162 -0.4374 -vn -0.8853 0.4245 -0.1901 -vn -0.2150 -0.0208 -0.9764 -vn -0.9068 -0.4184 -0.0521 -vn -0.9297 0.2843 0.2343 -vn -0.6414 0.5461 -0.5389 -vn -0.6736 0.4634 -0.5758 -vn -0.7303 0.6246 -0.2768 -vn 0.1140 -0.7937 -0.5975 -vn -0.9811 -0.0021 -0.1936 -vn -0.9355 -0.0541 0.3490 -vn -0.4888 0.8458 -0.2137 -vn -0.9061 0.3248 -0.2711 -vn -0.1928 0.1304 -0.9725 -vn 0.0023 0.5338 -0.8456 -vn 0.4237 0.4638 -0.7780 -vn -0.9853 0.0198 -0.1698 -vn -0.7396 0.5905 -0.3229 -vn -0.9558 -0.2896 -0.0508 -vn -0.5156 0.8428 0.1543 -vn -0.8089 -0.5841 0.0666 -vn -0.9907 -0.1097 0.0810 -vn -0.9978 -0.0480 -0.0453 -vn -0.9914 0.1258 0.0353 -vn -0.8845 -0.4049 0.2316 -vn -0.6860 0.6626 -0.3006 -vn 0.2518 0.6191 0.7438 -vn -0.8952 0.3531 -0.2719 -vn -0.7049 0.6479 -0.2887 -vn -0.9309 -0.0312 -0.3640 -vn -0.8296 -0.1658 -0.5332 -vn -0.9576 -0.1047 -0.2685 -vn -0.9357 -0.2491 -0.2498 -vn -0.7008 -0.6622 -0.2653 -vn -0.0015 0.4195 -0.9077 -vn -0.9043 0.3864 0.1815 -vn -0.0151 0.6689 -0.7432 -vn 0.0281 -0.9978 0.0593 -vn 0.4031 0.1555 -0.9019 -vn -0.9196 0.3810 -0.0961 -vn -0.8780 0.3683 -0.3056 -vn -0.6908 -0.1477 -0.7078 -vn -0.5900 -0.6258 -0.5102 -vn -0.9065 0.3983 -0.1402 -vn -0.9722 0.0612 0.2259 -vn -0.6884 -0.6804 -0.2513 -vn -0.6561 0.5582 -0.5080 -vn -0.9079 0.3197 0.2710 -vn -0.1441 0.2858 -0.9474 -vn -0.0200 0.7488 -0.6625 -vn -0.6750 -0.5505 -0.4912 -vn -0.7798 -0.1343 -0.6114 -vn -0.7041 -0.0136 -0.7100 -vn -0.9185 0.3829 -0.0990 -vn -0.9948 -0.0257 -0.0987 -vn -0.6007 -0.7827 -0.1628 -vn -0.9100 -0.4145 0.0132 -vn 0.9373 -0.1137 -0.3295 -vn -0.7636 -0.6282 -0.1489 -vn -0.9981 -0.0607 -0.0049 -vn -0.9007 -0.4015 -0.1659 -vn -0.8627 0.5021 0.0608 -vn -0.7930 -0.6042 -0.0778 -vn -0.9959 -0.0843 0.0325 -vn -0.9845 -0.1730 0.0276 -vn -0.9509 -0.3034 0.0607 -vn -0.9933 -0.0370 0.1097 -vn -0.5809 0.7281 -0.3640 -vn 0.5939 0.0103 -0.8045 -vn -0.2642 0.6871 0.6768 -vn 0.6336 -0.2195 -0.7419 -vn -0.7275 0.0393 -0.6850 -vn -0.6600 0.2765 -0.6986 -vn 0.4597 -0.7921 -0.4016 -vn 0.0499 0.4678 -0.8824 -vn -0.8364 -0.5292 0.1426 -vn -0.9051 -0.4068 0.1235 -vn -0.2884 -0.0314 -0.9570 -vn -0.8226 -0.5186 -0.2333 -vn -0.8017 -0.5473 -0.2403 -vn -0.8533 -0.4763 -0.2120 -vn -0.5897 0.6985 -0.4054 -vn -0.3113 -0.0464 -0.9492 -vn -0.8412 0.5366 -0.0666 -vn -0.6532 0.4844 -0.5819 -vn -0.5970 0.6027 -0.5295 -vn -0.6139 0.7819 -0.1083 -vn -0.9840 -0.1366 0.1141 -vn 0.1978 0.8225 -0.5332 -vn -0.7237 -0.1170 -0.6802 -vn -0.9899 -0.1131 -0.0853 -vn -0.9609 0.2511 0.1168 -vn -0.2857 -0.4323 -0.8553 -vn -0.8072 0.5687 0.1581 -vn -0.9538 -0.3005 0.0053 -vn 0.0146 0.9754 -0.2200 -vn -0.0030 -0.9989 0.0458 -vn -0.5464 0.8219 -0.1613 -vn -0.9488 -0.0638 0.3093 -vn -0.9721 0.2290 -0.0514 -vn -0.9747 0.2175 -0.0513 -vn -0.8931 -0.4258 0.1451 -vn -0.9055 0.3913 0.1643 -vn 0.2129 0.8529 -0.4768 -vn -0.2942 0.6279 -0.7206 -vn 0.5187 0.4083 -0.7512 -vn -0.8138 -0.0365 -0.5800 -vn -0.8137 -0.0318 -0.5805 -vn -0.6981 0.3125 -0.6442 -vn -0.6648 0.2151 -0.7153 -vn -0.6177 0.7052 0.3481 -vn -0.8833 0.3440 0.3187 -vn -0.9107 -0.1679 -0.3773 -vn -0.8966 0.3943 0.2015 -vn -0.9981 0.0367 -0.0490 -vn -0.8693 -0.4941 -0.0156 -vn -0.9965 0.0807 0.0234 -vn 0.2134 0.8988 -0.3830 -vn 0.0542 -0.9956 0.0767 -vn 0.4366 0.7872 -0.4356 -vn 0.1889 0.2455 -0.9508 -vn 0.6275 0.5524 -0.5488 -vn 0.7252 0.5512 -0.4126 -vn 0.0538 0.8923 -0.4483 -vn -0.3025 0.5399 -0.7855 -vn -0.1684 0.9248 -0.3412 -vn -0.2600 0.5709 -0.7788 -vn -0.6409 -0.4127 -0.6472 -vn -0.8678 -0.0750 -0.4913 -vn -0.6598 -0.2200 -0.7185 -vn -0.7329 0.0319 -0.6796 -vn -0.7089 0.1565 -0.6877 -vn -0.2262 0.9004 -0.3716 -vn 0.1813 0.7086 -0.6819 -vn -0.8317 -0.5291 -0.1683 -vn -0.9825 0.0747 -0.1704 -vn -0.9120 -0.0103 0.4100 -vn -0.6070 0.3679 -0.7044 -vn -0.8179 -0.5427 -0.1909 -vn -0.9278 0.3727 0.0153 -vn -0.9818 0.0422 -0.1852 -vn -0.8954 0.4450 -0.0140 -vn -0.8901 -0.4319 -0.1456 -vn -0.8532 -0.4748 -0.2160 -vn -0.9779 0.2072 -0.0287 -vn -0.8617 -0.4119 0.2964 -vn -0.9678 0.1443 0.2065 -vn -0.9027 0.4011 0.1556 -vn 0.1621 0.0480 -0.9856 -vn 0.4366 0.3905 -0.8105 -vn 0.0120 0.3391 -0.9407 -vn -0.7033 0.6485 -0.2912 -vn -0.7434 0.1834 -0.6432 -vn 0.2064 -0.8313 0.5160 -vn -0.8364 -0.3537 -0.4188 -vn -0.6628 -0.2301 -0.7126 -vn -0.7567 0.0829 -0.6484 -vn 0.8374 0.5455 0.0344 -vn 0.8288 0.5360 0.1608 -vn -0.0599 0.5123 -0.8567 -vn 0.1924 0.3938 -0.8989 -vn -0.7435 -0.5746 -0.3422 -vn -0.8666 -0.4546 -0.2057 -vn -0.5720 0.8112 0.1212 -vn -0.9839 -0.0710 0.1642 -vn -0.6385 0.3444 -0.6883 -vn -0.6598 0.5971 -0.4562 -vn -0.9155 0.3896 0.1010 -vn -0.8025 -0.5860 -0.1122 -vn 0.1658 -0.0002 0.9862 -vn -0.8194 -0.1951 -0.5390 -vn -0.8606 -0.2215 -0.4586 -vn -0.7829 -0.2285 -0.5786 -vn -0.4884 0.7744 0.4022 -vn 0.4329 0.3836 -0.8157 -vn -0.6219 -0.4153 -0.6639 -vn -0.7566 0.2349 -0.6103 -vn 0.0169 -0.9995 -0.0249 -vn 0.0137 -0.9998 -0.0142 -vn 0.5204 0.5378 -0.6633 -vn 0.1667 0.5508 -0.8178 -vn 0.2346 0.4272 -0.8732 -vn -0.6970 -0.0424 -0.7158 -vn -0.6911 -0.2633 -0.6731 -vn -0.4418 0.8516 -0.2823 -vn -0.5842 0.7523 -0.3044 -vn -0.9566 0.2890 -0.0363 -vn -0.6836 0.4544 -0.5711 -vn -0.6362 0.6128 -0.4687 -vn 0.0613 0.7999 -0.5971 -vn -0.2572 0.7293 -0.6340 -vn -0.5052 -0.7121 -0.4874 -vn -0.7582 -0.2556 -0.5999 -vn -0.6930 -0.3255 -0.6433 -vn -0.7570 -0.2939 -0.5836 -vn -0.6756 -0.1578 -0.7202 -vn -0.7167 -0.1208 -0.6868 -vn -0.7752 0.0945 -0.6247 -vn -0.8403 0.2055 -0.5017 -vn -0.0292 0.5804 -0.8138 -vn -0.1962 0.7845 -0.5883 -vn 0.4613 0.2380 -0.8547 -vn 0.4326 0.7706 -0.4681 -vn -0.7623 -0.4491 -0.4660 -vn -0.8636 0.2112 -0.4578 -vn -0.9864 0.1612 -0.0312 -vn -0.8157 -0.3125 -0.4868 -vn -0.9662 0.2188 0.1363 -vn -0.6822 0.4539 -0.5732 -vn -0.6393 0.7567 -0.1365 -vn -0.6937 0.3372 -0.6365 -vn -0.6854 -0.0294 -0.7275 -vn -0.5805 -0.6734 -0.4578 -vn -0.6612 -0.4901 -0.5680 -vn -0.7067 -0.3305 -0.6256 -vn -0.7970 0.1722 -0.5789 -vn -0.7554 0.2343 -0.6120 -vn -0.7682 0.0277 -0.6396 -vn -0.7071 0.1565 -0.6896 -vn -0.6295 0.4938 -0.5999 -vn 0.2842 -0.1096 -0.9525 -vn -0.3019 0.9096 -0.2855 -vn -0.8128 -0.2111 -0.5429 -vn -0.8054 -0.4178 -0.4204 -vn -0.9748 0.1107 -0.1936 -vn -0.7035 0.3548 -0.6158 -vn -0.6862 0.4500 -0.5715 -vn -0.6669 0.7091 -0.2292 -vn 0.0430 0.9190 -0.3919 -vn -0.4429 0.6321 -0.6358 -vn -0.5194 0.7768 -0.3561 -vn -0.2264 0.3155 -0.9215 -vn -0.5920 -0.7409 -0.3171 -vn -0.4772 -0.8631 -0.1655 -vn -0.4568 -0.8677 -0.1959 -vn -0.5795 -0.7474 -0.3250 -vn -0.7963 -0.3946 -0.4585 -vn -0.8186 -0.3200 -0.4769 -vn -0.7684 -0.2825 -0.5743 -vn -0.8056 -0.1130 -0.5816 -vn -0.7865 -0.1415 -0.6011 -vn -0.8469 -0.1734 -0.5027 -vn -0.7815 -0.2912 -0.5517 -vn 0.0425 0.8697 -0.4918 -vn -0.1945 0.9367 -0.2911 -vn 0.0149 -0.9922 0.1239 -vn 0.0474 0.5628 -0.8252 -vn 0.0875 0.6507 -0.7543 -vn -0.0632 -0.8200 0.5689 -vn -0.5130 0.1929 -0.8364 -vn -0.5550 0.2367 -0.7975 -vn -0.9542 -0.1232 -0.2727 -vn -0.9623 0.1677 -0.2142 -vn -0.9565 0.0110 -0.2915 -vn -0.9078 0.3904 0.1536 -vn -0.1470 -0.2251 -0.9632 -vn -0.1793 0.2246 -0.9578 -vn 0.1032 0.7652 -0.6355 -vn -0.3870 0.8153 -0.4308 -vn -0.7830 -0.6177 -0.0734 -vn -0.5480 0.7273 -0.4132 -vn -0.8124 0.3962 -0.4277 -vn -0.9226 0.0509 -0.3823 -vn -0.5649 -0.6165 -0.5485 -vn -0.6055 -0.5982 -0.5250 -vn -0.7823 -0.6200 -0.0595 -vn -0.8735 -0.2593 -0.4121 -vn -0.7998 -0.5032 -0.3274 -vn -0.7630 -0.5397 -0.3557 -vn -0.7293 0.3040 -0.6130 -vn -0.6247 0.4831 -0.6135 -vn -0.5996 0.3490 -0.7202 -vn -0.2554 0.7603 -0.5972 -vn -0.2403 0.9186 -0.3137 -vn -0.1115 0.6960 -0.7093 -vn -0.2390 0.0326 -0.9705 -vn -0.1811 0.6381 -0.7483 -vn -0.9664 -0.1041 0.2350 -vn 0.6028 0.5655 -0.5629 -vn -0.7517 -0.0010 -0.6595 -vn -0.7222 0.3120 -0.6173 -vn 0.5765 -0.7661 -0.2842 -vn -0.1896 -0.4357 -0.8799 -vn -0.6990 0.3595 -0.6181 -vn -0.7539 0.6158 -0.2289 -vn 0.5361 0.6633 0.5221 -vn -0.7260 0.6599 -0.1938 -vn -0.2612 -0.9499 0.1718 -vn -0.8140 0.3803 -0.4391 -vn -0.8893 -0.2488 -0.3836 -vn -0.5249 -0.7700 -0.3627 -vn 0.0354 -0.9989 -0.0316 -vn -0.4636 -0.8049 -0.3704 -vn -0.9644 -0.0877 -0.2495 -vn -0.9719 -0.0432 -0.2313 -vn -0.8915 0.1657 -0.4216 -vn -0.9887 0.0210 -0.1487 -vn -0.8911 0.1744 -0.4189 -vn -0.8190 0.3452 -0.4584 -vn -0.7183 0.0307 -0.6951 -vn -0.2333 0.9177 -0.3214 -vn -0.6918 0.1650 -0.7030 -vn -0.9697 0.1899 -0.1536 -vn -0.9349 0.2846 -0.2121 -vn 0.0391 -0.9992 0.0101 -vn -0.7551 0.4767 -0.4502 -vn -0.6850 0.7087 -0.1689 -vn -0.7592 0.6116 -0.2225 -vn -0.6799 0.7161 -0.1576 -vn -0.5730 0.6192 -0.5369 -vn -0.8128 -0.5764 0.0849 -vn -0.8869 0.1157 -0.4472 -vn -0.9240 -0.0293 -0.3813 -vn -0.9024 -0.3530 -0.2473 -vn -0.5763 -0.6333 -0.5165 -vn -0.6525 -0.6083 -0.4519 -vn -0.6776 -0.7354 -0.0077 -vn -0.7816 -0.6229 -0.0333 -vn -0.9259 -0.2871 -0.2455 -vn -0.9634 -0.0692 -0.2589 -vn -0.8003 0.3896 -0.4558 -vn -0.8104 -0.0076 -0.5858 -vn -0.8102 -0.0093 -0.5861 -vn -0.6582 0.3115 -0.6854 -vn -0.8491 0.1716 -0.4996 -vn -0.6560 0.1378 -0.7421 -vn -0.6896 0.3732 -0.6206 -vn -0.7524 0.6456 0.1309 -vn -0.9753 0.1505 0.1615 -vn -0.8638 0.3430 -0.3690 -vn -0.5655 0.7304 -0.3831 -vn -0.5624 -0.6249 -0.5414 -vn -0.7048 -0.6454 -0.2943 -vn -0.7107 -0.6772 -0.1906 -vn -0.8405 -0.3589 -0.4058 -vn -0.9377 -0.1126 -0.3287 -vn -0.8638 0.0416 -0.5022 -vn -0.8558 0.1565 -0.4930 -vn -0.9433 0.1945 -0.2690 -vn -0.8660 0.2596 -0.4273 -vn -0.8078 0.3493 -0.4748 -vn -0.6197 0.1748 -0.7652 -vn -0.7932 0.3257 -0.5145 -vn 0.5186 0.5624 -0.6440 -vn -0.8474 0.1716 -0.5025 -vn -0.7792 0.2751 -0.5631 -vn -0.7477 0.4807 -0.4580 -vn -0.6452 0.7450 0.1695 -vn -0.6212 0.7832 0.0273 -vn -0.9871 0.0674 0.1455 -vn -0.5774 0.6480 -0.4967 -vn -0.5314 0.7340 -0.4229 -vn -0.3884 0.9114 -0.1359 -vn -0.9172 0.3130 -0.2465 -vn -0.9186 0.3019 -0.2549 -vn -0.9942 0.0722 -0.0792 -vn 0.3390 -0.2428 -0.9089 -vn -0.0425 -0.9270 0.3725 -vn -0.7729 -0.5929 -0.2261 -vn -0.8119 -0.5488 -0.1991 -vn -0.8950 -0.3511 -0.2752 -vn -0.8678 0.0473 -0.4947 -vn -0.9951 -0.0516 -0.0845 -vn -0.6869 -0.3796 -0.6198 -vn -0.6492 -0.4636 -0.6030 -vn -0.8095 -0.3143 -0.4959 -vn -0.8529 0.2289 -0.4693 -vn -0.7014 0.1568 -0.6953 -vn -0.6113 0.2822 -0.7394 -vn 0.9658 -0.2426 -0.0913 -vn -0.5583 0.4428 -0.7016 -vn -0.8458 0.0126 -0.5333 -vn -0.8448 0.0175 -0.5348 -vn -0.7352 0.4056 -0.5431 -vn -0.7613 0.2622 -0.5931 -vn -0.6971 0.6599 -0.2805 -vn -0.8832 0.4440 0.1512 -vn -0.9895 0.1419 0.0274 -vn -0.7183 -0.6201 -0.3154 -vn -0.6108 -0.6769 -0.4108 -vn -0.6295 -0.6033 -0.4896 -vn -0.8279 -0.4339 -0.3554 -vn -0.8623 -0.3651 -0.3509 -vn -0.8543 0.2820 -0.4366 -vn -0.8876 0.1481 -0.4361 -vn -0.7974 0.3003 -0.5233 -vn -0.6474 -0.4543 -0.6120 -vn -0.8908 0.0254 -0.4536 -vn -0.6847 -0.4593 -0.5659 -vn -0.6366 -0.5439 -0.5468 -vn -0.8754 -0.1284 -0.4660 -vn -0.6987 -0.3506 -0.6237 -vn -0.9184 0.0395 -0.3936 -vn -0.9164 0.1655 -0.3646 -vn -0.5375 0.4486 -0.7140 -vn -0.8507 0.2281 -0.4737 -vn -0.6169 -0.3171 -0.7203 -vn 0.3884 0.1376 -0.9112 -vn -0.6638 0.4065 -0.6278 -vn -0.6978 0.7149 -0.0432 -vn -0.7055 0.7071 -0.0476 -vn -0.4370 0.7597 0.4815 -vn -0.3884 0.8993 -0.2008 -vn -0.3725 0.9112 -0.1758 -vn -0.7294 -0.6585 -0.1855 -vn -0.6391 0.4023 -0.6555 -vn -0.0843 -0.2857 -0.9546 -vn -0.8288 0.2481 -0.5016 -vn -0.8395 -0.2624 -0.4757 -vn -0.8881 -0.1868 -0.4199 -vn -0.9099 0.1857 -0.3710 -vn -0.9013 0.3727 -0.2206 -vn -0.9610 0.1253 -0.2465 -vn -0.9057 0.2673 -0.3289 -vn -0.9090 0.2346 -0.3444 -vn -0.9398 0.1424 -0.3106 -vn -0.9399 0.0846 -0.3308 -vn -0.8480 -0.0301 -0.5292 -vn -0.6876 0.3728 -0.6231 -vn -0.8197 0.1235 -0.5593 -vn -0.6715 0.1285 -0.7298 -vn -0.4834 0.8720 -0.0771 -vn -0.8789 0.4224 0.2216 -vn -0.6479 0.7458 -0.1551 -vn -0.7344 0.6771 0.0466 -vn -0.6275 0.7772 -0.0466 -vn 0.2524 -0.8354 -0.4882 -vn -0.5296 0.8466 -0.0521 -vn -0.9367 0.3352 0.1011 -vn -0.9688 -0.2409 0.0589 -vn -0.1930 -0.4428 -0.8756 -vn -0.7870 -0.5961 -0.1593 -vn -0.9493 -0.0595 -0.3087 -vn -0.9429 -0.0704 -0.3255 -vn -0.9913 -0.1290 -0.0275 -vn -0.9846 -0.1622 -0.0652 -vn -0.0139 -0.9999 0.0079 -vn 0.8213 0.4361 -0.3680 -vn 0.5092 0.7070 -0.4907 -vn 0.6480 0.5629 -0.5131 -vn 0.2617 0.5764 -0.7741 -vn 0.0980 -0.7998 -0.5923 -vn 0.6376 0.6791 -0.3636 -vn -0.4943 -0.1211 -0.8608 -vn -0.2546 0.6480 -0.7178 -vn 0.7927 0.5089 -0.3357 -vn 0.0934 0.5729 -0.8143 -vn -0.4165 0.4699 -0.7783 -vn -0.6944 -0.5996 -0.3979 -vn 0.0888 0.6731 -0.7342 -vn 0.1469 -0.9780 -0.1484 -vn 0.4022 0.6797 -0.6134 -vn -0.1349 0.7567 -0.6397 -vn -0.3451 0.8923 -0.2912 -vn -0.3154 0.2292 -0.9209 -vn -0.3213 0.8100 -0.4906 -vn 0.8802 -0.0926 -0.4654 -vn 0.6745 0.1087 -0.7302 -vn -0.1271 0.8440 -0.5210 -vn 0.2415 0.5840 -0.7750 -vn 0.0200 0.4165 -0.9089 -vn -0.0790 0.7331 -0.6755 -vn 0.0164 -0.9970 0.0761 -vn 0.5929 -0.7692 0.2383 -vn -0.4569 0.1526 -0.8763 -vn 0.1644 -0.9756 -0.1455 -vn 0.3642 0.6972 -0.6175 -vn -0.0384 0.7598 -0.6490 -vn -0.7076 0.5028 -0.4965 -vn 0.1734 -0.5382 -0.8248 -vn -0.1926 0.9308 -0.3106 -vn -0.2582 0.8552 -0.4494 -vn 0.9238 -0.1191 -0.3638 -vn 0.5350 0.3337 -0.7762 -vn -0.1080 0.6891 -0.7166 -vn 0.1629 0.3214 -0.9328 -vn -0.0757 0.7455 -0.6621 -vn 0.8877 0.0160 -0.4601 -vn 0.5996 0.4187 -0.6820 -vn 0.8663 -0.1322 -0.4816 -vn 0.7008 -0.2395 -0.6719 -vn 0.6540 0.1336 -0.7446 -vn 0.3624 0.8402 -0.4034 -vn 0.0820 0.2386 -0.9677 -vn 0.3667 0.6045 -0.7072 -vn 0.4013 0.6710 -0.6235 -vn 0.4263 0.4266 -0.7976 -vn 0.6058 -0.2040 -0.7690 -vn 0.6416 0.4908 -0.5895 -vn 0.3825 0.5115 -0.7694 -vn 0.6760 0.5908 -0.4404 -vn -0.4002 0.5384 -0.7416 -vn 0.1715 0.4831 -0.8586 -vn 0.4471 0.7374 -0.5063 -vn -0.2141 0.3943 -0.8937 -vn 0.5880 0.1209 -0.7998 -vn 0.7786 -0.1673 -0.6048 -vn 0.6514 0.3500 -0.6732 -vn -0.5352 0.0827 -0.8407 -vn -0.1560 0.5982 -0.7860 -vn 0.5265 0.3915 -0.7547 -vn 0.1234 0.4438 -0.8876 -vn 0.6188 0.2950 -0.7281 -vn 0.0812 -0.9794 0.1849 -vn 0.7373 0.4450 -0.5083 -vn 0.7371 0.4453 -0.5084 -vn 0.4994 0.6925 -0.5206 -vn -0.2291 -0.9732 0.0193 -vn 0.6763 0.3912 -0.6242 -vn 0.3472 0.2380 -0.9071 -vn 0.4893 0.1846 -0.8523 -vn -0.2695 0.5476 -0.7921 -vn 0.2410 0.7021 -0.6700 -vn -0.1318 0.2587 -0.9569 -vn 0.2105 0.4535 -0.8660 -vn 0.4030 0.4172 -0.8146 -vn -0.6195 0.7193 0.3145 -vn -0.1075 0.4564 -0.8833 -vn 0.4097 0.5915 -0.6944 -vn 0.0918 0.8755 -0.4744 -vn 0.3577 0.8075 -0.4690 -vn 0.5853 0.6432 -0.4936 -vn 0.5565 0.2715 -0.7853 -vn 0.4412 0.4619 -0.7694 -vn -0.1611 0.8401 -0.5180 -vn 0.4987 0.2923 -0.8160 -vn 0.1528 -0.8350 0.5286 -vn 0.8019 0.5456 -0.2435 -vn -0.2250 0.6301 -0.7432 -vn -0.3982 0.8564 -0.3286 -vn 0.4802 0.3149 -0.8187 -vn 0.3757 -0.9152 -0.1460 -vn 0.7950 0.4583 -0.3975 -vn 0.2244 0.0616 -0.9726 -vn 0.4846 0.5469 -0.6827 -vn 0.7605 0.1313 -0.6359 -vn 0.7596 0.0898 -0.6442 -vn 0.0382 0.6695 -0.7419 -vn 0.3630 0.8831 -0.2974 -vn 0.3547 0.7057 -0.6133 -vn 0.8707 0.3571 -0.3381 -vn 0.2560 0.5199 -0.8150 -vn -0.0174 0.5147 -0.8572 -vn 0.0171 -0.4102 0.9118 -vn 0.3860 0.4538 -0.8032 -vn -0.2962 0.9239 -0.2421 -vn 0.1200 -0.9928 -0.0051 -vn -0.1211 0.5537 -0.8239 -vn 0.7657 0.2880 -0.5751 -vn -0.0002 0.7031 -0.7111 -vn 0.7502 0.4278 -0.5042 -vn 0.4418 0.7883 -0.4283 -vn 0.5391 0.0688 -0.8394 -vn 0.7376 0.3102 -0.5998 -vn -0.1903 0.9409 -0.2803 -vn -0.6272 0.3169 -0.7114 -vn 0.3452 0.3301 -0.8786 -vn -0.0824 0.8852 -0.4578 -vn 0.3505 0.4474 -0.8228 -vn -0.2570 0.9482 -0.1865 -vn 0.3520 0.8047 -0.4781 -vn 0.6599 0.0894 -0.7461 -vn -0.0020 -0.9999 0.0159 -vn -0.0227 -0.9984 0.0519 -vn 0.6280 0.0178 -0.7780 -vn 0.3074 0.8314 -0.4630 -vn -0.2469 0.9127 -0.3257 -vn 0.4765 0.7439 -0.4686 -vn 0.4198 0.6151 -0.6674 -vn 0.0307 -0.0594 -0.9978 -vn 0.0097 0.3451 -0.9385 -vn 0.7652 0.1282 -0.6309 -vn 0.7450 -0.6100 0.2700 -vn 0.2263 0.0761 -0.9711 -vn 0.6604 0.7217 -0.2076 -vn 0.7805 0.1029 -0.6166 -vn 0.3103 0.6943 -0.6493 -vn -0.0070 0.8987 -0.4385 -vn -0.1227 0.9212 -0.3692 -vn -0.1182 0.3269 -0.9376 -vn -0.0151 0.8523 -0.5228 -vn 0.3379 0.2358 -0.9112 -vn -0.0914 0.5854 -0.8056 -vn -0.7327 0.5674 -0.3759 -vn 0.5978 0.4933 -0.6319 -vn -0.0147 0.9064 -0.4221 -vn 0.1141 0.8030 -0.5850 -vn 0.1265 0.8115 -0.5704 -vn 0.7587 0.4825 -0.4377 -vn -0.3919 0.8065 -0.4427 -vn 0.2163 0.4838 -0.8480 -vn 0.0072 0.9011 -0.4335 -vn -0.0297 0.8149 -0.5789 -vn -0.5050 0.8393 -0.2016 -vn 0.9701 -0.2418 -0.0215 -vn -0.2204 0.6624 -0.7160 -vn -0.0111 0.6722 -0.7403 -vn 0.4671 0.6363 -0.6140 -vn 0.3316 0.6497 -0.6841 -vn -0.6895 0.2432 -0.6822 -vn 0.4915 0.7871 -0.3727 -vn 0.1310 -0.9913 0.0116 -vn -0.9015 -0.2457 -0.3563 -vn -0.4458 0.6199 -0.6457 -vn -0.3080 0.7555 -0.5782 -vn 0.4589 0.5145 -0.7243 -vn 0.5572 0.5622 -0.6112 -vn 0.7201 0.3232 -0.6140 -vn 0.3477 0.2411 -0.9061 -vn 0.4513 0.5895 -0.6699 -vn 0.0995 0.7302 -0.6759 -vn 0.3865 0.6827 -0.6201 -vn 0.1173 0.7677 -0.6299 -vn 0.3134 0.3055 -0.8991 -vn -0.4316 0.5804 -0.6906 -vn -0.0937 0.5173 -0.8507 -vn -0.1928 0.3227 -0.9267 -vn 0.5473 0.4738 -0.6899 -vn 0.0970 0.6500 -0.7537 -vn 0.1079 0.5723 -0.8129 -vn 0.0609 0.5365 -0.8417 -vn -0.2584 0.8453 -0.4677 -vn 0.1147 0.6019 -0.7903 -vn -0.4779 0.8162 -0.3248 -vn -0.7181 0.0872 -0.6905 -vn -0.1905 0.5409 -0.8192 -vn -0.2028 0.6123 -0.7642 -vn -0.6481 0.5273 -0.5494 -vn -0.6844 0.3723 -0.6270 -vn -0.5345 0.1143 -0.8374 -vn -0.5435 0.1880 -0.8181 -vn 0.4781 -0.6003 -0.6412 -vn 0.0415 0.8286 -0.5583 -vn 0.8958 -0.0050 0.4444 -vn -0.4504 0.8031 -0.3902 -vn -0.1622 0.4657 -0.8700 -vn 0.4424 -0.8965 -0.0255 -vn 0.7087 -0.0343 -0.7047 -vn -0.5524 0.5534 -0.6234 -vn -0.2640 0.8089 -0.5254 -vn 0.1014 0.7474 -0.6566 -vn 0.2852 0.5696 -0.7708 -vn 0.3153 0.2658 -0.9110 -vn 0.1059 0.3190 -0.9418 -vn -0.1480 0.7492 -0.6456 -vn 0.0527 0.5164 -0.8547 -vn -0.0598 0.6291 -0.7750 -vn 0.0990 0.6969 -0.7103 -vn -0.0574 -0.5987 -0.7989 -vn -0.2071 0.4234 -0.8819 -vn 0.4117 -0.7340 -0.5402 -vn -0.0184 0.1820 -0.9831 -vn 0.3104 0.2073 -0.9277 -vn -0.3835 0.6481 -0.6580 -vn 0.1699 -0.7928 -0.5854 -vn -0.2396 0.8281 -0.5067 -vn 0.0212 0.6680 -0.7439 -vn 0.2577 -0.6557 -0.7097 -vn -0.2522 0.9463 -0.2023 -vn 0.3896 0.6134 -0.6870 -vn -0.7087 -0.0202 -0.7052 -vn 0.0182 -0.9998 0.0130 -vn 0.3744 0.3938 -0.8395 -vn -0.1357 -0.5164 0.8456 -vn -0.1712 0.5303 -0.8303 -vn 0.2387 0.4368 -0.8673 -vn 0.1826 0.4168 -0.8904 -vn 0.3579 0.4662 -0.8091 -vn 0.2464 0.4948 -0.8333 -vn -0.2026 0.7409 -0.6403 -vn -0.1253 0.5538 -0.8231 -vn -0.0262 0.9900 -0.1389 -vn -0.1806 0.6644 -0.7252 -vn 0.4170 -0.8753 0.2451 -vn 0.7510 0.0545 -0.6580 -vn -0.0813 -0.8072 0.5847 -vn 0.4694 0.4054 -0.7844 -vn -0.2246 0.7999 -0.5565 -vn 0.3664 0.3647 -0.8560 -vn 0.0394 0.4248 -0.9044 -vn 0.1648 0.4280 -0.8886 -vn -0.2563 0.6072 -0.7521 -vn 0.4481 0.3236 -0.8334 -vn 0.0479 0.0226 -0.9986 -vn 0.4611 0.1964 -0.8653 -vn 0.3096 0.5696 -0.7614 -vn 0.1383 0.0017 -0.9904 -vn 0.6906 0.1037 -0.7158 -vn 0.7280 0.1065 -0.6772 -vn -0.2313 0.6276 -0.7434 -vn 0.5414 0.2063 -0.8151 -vn -0.2016 0.8236 -0.5301 -vn -0.1853 0.9413 -0.2823 -vn 0.7303 0.0517 0.6812 -vn 0.3073 0.2944 -0.9049 -vn -0.2161 0.9340 -0.2845 -vn -0.1894 0.5274 -0.8282 -vn 0.2892 0.3385 -0.8954 -vn -0.3141 0.6162 -0.7222 -vn -0.6164 0.7740 0.1448 -vn -0.2220 0.3835 -0.8965 -vn 0.4136 0.0217 -0.9102 -vn 0.6326 0.4650 -0.6194 -vn -0.0620 0.5588 -0.8270 -vn 0.1679 0.5435 -0.8225 -vn 0.0279 0.8621 -0.5059 -vn 0.3878 0.4849 -0.7839 -vn -0.6664 -0.7430 0.0622 -vn 0.2749 0.6753 -0.6844 -vn -0.0367 0.5850 -0.8102 -vn -0.0467 0.6098 -0.7912 -vn -0.2760 0.7170 -0.6401 -vn -0.1817 0.5144 -0.8381 -vn 0.6754 0.4541 -0.5811 -vn 0.2456 0.5128 -0.8227 -vn 0.5177 0.2858 -0.8064 -vn 0.1852 0.9117 -0.3667 -vn 0.1017 0.7708 -0.6289 -vn 0.2663 0.8882 -0.3745 -vn 0.3850 0.5555 -0.7370 -vn 0.7027 0.4766 -0.5283 -vn 0.4853 0.0918 -0.8695 -vn -0.2671 0.6644 -0.6980 -vn -0.3104 0.1666 -0.9359 -vn 0.1904 0.7897 -0.5831 -vn 0.1698 0.9530 -0.2509 -vn -0.0269 0.8208 -0.5706 -vn 0.5853 0.1695 -0.7929 -vn 0.0057 0.6112 -0.7915 -vn -0.1950 0.6088 -0.7690 -vn -0.1852 0.5111 -0.8393 -vn -0.5648 0.8244 0.0374 -vn -0.3278 0.8456 -0.4214 -vn 0.1105 0.9584 -0.2631 -vn 0.8257 0.3130 0.4693 -vn -0.0244 0.7004 -0.7133 -vn 0.3398 0.6446 -0.6848 -vn 0.7139 0.3967 -0.5770 -vn 0.4187 0.5112 -0.7506 -vn -0.1119 0.4504 -0.8858 -vn -0.2270 0.6215 -0.7498 -vn -0.4896 0.6996 -0.5205 -vn 0.3399 0.3158 -0.8858 -vn 0.7173 0.2973 -0.6302 -vn 0.4022 0.1446 -0.9040 -vn -0.3883 0.9038 -0.1801 -vn 0.1570 0.6230 -0.7663 -vn -0.0846 0.2965 -0.9513 -vn 0.0835 0.8876 -0.4530 -vn 0.3915 0.8355 -0.3855 -vn 0.0802 0.5780 -0.8121 -vn 0.1130 0.8964 -0.4286 -vn 0.9689 0.2026 0.1421 -vn -0.1706 0.7689 -0.6162 -vn -0.1705 0.7683 -0.6170 -vn 0.1259 0.4791 -0.8687 -vn 0.8639 0.3912 -0.3173 -vn 0.3856 0.1669 -0.9074 -vn -0.1287 0.8428 -0.5226 -vn -0.0495 0.7713 -0.6346 -vn -0.0859 0.7239 -0.6845 -vn 0.1757 0.7143 -0.6774 -vn 0.0516 0.7647 -0.6423 -vn 0.5817 0.4098 -0.7026 -vn 0.2316 0.8499 -0.4733 -vn -0.1487 0.7696 -0.6209 -vn -0.0448 0.5879 -0.8077 -vn 0.1345 0.4929 -0.8596 -vn 0.5937 0.4106 -0.6920 -vn -0.2052 0.8504 -0.4844 -vn -0.0958 0.8283 -0.5520 -vn 0.5806 -0.1635 -0.7976 -vn -0.5422 0.5433 -0.6410 -vn -0.3827 0.0426 0.9229 -vn 0.0493 0.9004 -0.4323 -vn 0.4359 0.2904 -0.8518 -vn 0.7483 0.5560 -0.3618 -vn 0.7661 0.4540 -0.4550 -vn -0.1888 0.3124 -0.9310 -vn 0.0278 0.2817 -0.9591 -vn 0.6207 0.3193 -0.7160 -vn 0.0020 0.2580 -0.9661 -vn 0.1594 0.8255 -0.5415 -vn -0.0737 0.6784 -0.7310 -vn 0.2444 0.6290 -0.7380 -vn -0.2455 0.5331 -0.8096 -vn 0.6120 0.1772 -0.7708 -vn -0.1226 0.8956 -0.4275 -vn -0.0772 0.8389 -0.5387 -vn -0.0158 0.6708 -0.7415 -vn -0.0495 0.5855 -0.8092 -vn -0.1049 0.5617 -0.8206 -vn -0.0367 0.9049 -0.4239 -vn 0.6290 0.1880 -0.7543 -vn -0.2349 0.9135 -0.3321 -vn -0.0081 0.8534 -0.5212 -vn -0.2562 0.7633 -0.5931 -vn -0.3742 -0.5424 -0.7522 -vn 0.3995 0.8288 -0.3918 -vn 0.2771 0.9246 -0.2615 -vn 0.1068 0.8552 -0.5071 -vn -0.0015 0.2301 -0.9732 -vn -0.1160 0.8229 -0.5563 -vn -0.4098 0.6769 -0.6114 -vn 0.2415 0.3956 -0.8861 -vn -0.0423 0.7258 -0.6866 -vn -0.3057 0.9218 -0.2386 -vn 0.1750 0.9432 -0.2823 -vn 0.5694 0.1163 -0.8138 -vn 0.1412 0.9581 -0.2494 -vn 0.0287 0.5363 -0.8435 -vn 0.0820 0.7215 -0.6875 -vn 0.0189 0.9053 -0.4243 -vn -0.0607 0.6562 -0.7522 -vn -0.3821 0.8559 -0.3484 -vn 0.0403 -0.7073 -0.7058 -vn 0.2406 0.8837 -0.4014 -vn -0.0536 0.6176 -0.7847 -vn 0.3271 0.8275 -0.4564 -vn -0.0629 0.5965 -0.8001 -vn 0.4761 -0.8794 0.0041 -vn -0.0754 0.0556 -0.9956 -vn 0.1139 0.9601 -0.2554 -vn 0.0665 0.6944 -0.7165 -vn 0.1621 0.4501 -0.8781 -vn 0.1707 0.3322 -0.9277 -vn -0.0696 0.8377 -0.5417 -vn 0.2328 0.6919 -0.6834 -vn 0.3056 -0.2379 0.9219 -vn -0.1158 0.9237 -0.3651 -vn -0.3353 0.7305 -0.5949 -vn 0.2809 0.8233 -0.4933 -vn 0.1465 0.4232 -0.8941 -vn 0.1265 0.8473 -0.5159 -vn 0.1427 0.8014 -0.5808 -vn -0.1095 -0.9907 0.0803 -vn 0.2999 0.3929 -0.8693 -vn -0.0970 0.9474 -0.3050 -vn 0.2050 -0.0719 0.9761 -vn 0.1138 0.6974 0.7076 -vn 0.0338 0.6891 -0.7239 -vn 0.5385 0.2750 -0.7965 -vn 0.3641 0.5184 -0.7738 -vn 0.6015 0.3590 -0.7137 -vn -0.1673 0.6139 -0.7715 -vn -0.1577 0.5326 -0.8316 -vn -0.1607 0.5503 -0.8194 -vn -0.0438 0.7662 -0.6411 -vn 0.2325 0.2799 -0.9314 -vn 0.0364 0.9186 -0.3934 -vn 0.0644 -0.0623 -0.9960 -vn 0.3482 0.4849 -0.8023 -vn -0.3503 0.2615 -0.8994 -vn 0.5895 0.7616 -0.2693 -vn 0.2912 0.5617 -0.7744 -vn 0.6279 0.2884 -0.7229 -vn 0.4583 0.8076 -0.3711 -vn -0.2166 0.6403 -0.7370 -vn -0.5197 0.4573 -0.7217 -vn -0.3754 0.7296 -0.5716 -vn 0.2115 0.9124 -0.3504 -vn 0.2660 0.4952 -0.8271 -vn 0.0202 0.6189 -0.7852 -vn -0.0858 0.4772 -0.8746 -vn 0.1471 0.5692 -0.8090 -vn -0.4221 0.6347 -0.6473 -vn -0.2542 0.5692 -0.7819 -vn -0.6432 0.2177 -0.7341 -vn -0.1689 0.4368 -0.8836 -vn -0.3490 0.2409 -0.9056 -vn -0.0129 0.7116 -0.7025 -vn 0.1771 0.9413 -0.2874 -vn 0.2216 0.5084 -0.8321 -vn 0.0718 0.8136 -0.5770 -vn -0.0947 0.9423 -0.3212 -vn 0.7459 0.2830 -0.6030 -vn -0.0470 0.6324 -0.7732 -vn 0.2733 0.3666 -0.8893 -vn 0.2478 0.5582 -0.7918 -vn 0.6898 0.6129 -0.3854 -vn 0.2322 0.6683 -0.7067 -vn 0.4966 0.7028 -0.5093 -vn -0.1858 0.6272 -0.7564 -vn 0.3575 0.4665 -0.8090 -vn -0.0830 0.6042 -0.7925 -vn -0.0511 0.7412 -0.6693 -vn -0.3797 0.5352 -0.7546 -vn 0.3326 -0.9381 0.0964 -vn -0.0051 0.8993 -0.4372 -vn -0.3581 0.8366 -0.4146 -vn -0.6309 0.7636 -0.1376 -vn 0.3486 0.4334 -0.8310 -vn 0.2983 0.2756 -0.9138 -vn -0.6391 -0.7387 -0.2143 -vn 0.3677 0.8393 -0.4005 -vn 0.3201 0.6596 -0.6801 -vn 0.4670 0.5935 -0.6555 -vn 0.0138 0.6215 -0.7833 -vn -0.0159 0.5045 -0.8632 -vn 0.0222 0.7629 -0.6461 -vn 0.3170 0.3378 -0.8862 -vn -0.0050 0.7621 -0.6474 -vn 0.3853 0.4084 -0.8275 -vn -0.4997 -0.7873 -0.3612 -vn -0.3041 0.3030 -0.9032 -vn -0.3540 0.7612 -0.5434 -vn -0.2613 0.9086 -0.3258 -vn 0.5115 0.2682 -0.8164 -vn 0.1072 0.6723 -0.7325 -vn 0.2623 0.7276 -0.6339 -vn 0.0041 0.8976 -0.4407 -vn 0.8804 -0.4694 -0.0676 -vn -0.6343 0.3194 -0.7040 -vn 0.3675 0.2458 -0.8970 -vn -0.0689 0.1451 -0.9870 -vn -0.2855 0.3156 -0.9049 -vn -0.2574 -0.1034 -0.9608 -vn -0.4892 0.3476 -0.7999 -vn -0.4150 0.0734 -0.9069 -vn 0.0278 -0.9747 -0.2216 -vn -0.2173 -0.2696 -0.9382 -vn -0.3975 -0.0395 -0.9167 -vn -0.3963 0.3616 -0.8439 -vn -0.3461 0.3238 -0.8805 -vn -0.4374 0.3601 -0.8240 -vn 0.0431 0.7559 0.6533 -vn -0.0781 0.0523 -0.9956 -vn -0.4651 0.0564 -0.8835 -vn -0.4154 0.5280 -0.7407 -vn -0.3675 -0.0643 -0.9278 -vn -0.3355 0.3133 -0.8884 -vn 0.6378 -0.1516 -0.7551 -vn 0.5305 -0.6780 -0.5088 -vn -0.5646 -0.0721 -0.8222 -vn -0.5857 0.1418 -0.7980 -vn 0.0817 -0.8702 -0.4859 -vn 0.5785 -0.1506 -0.8016 -vn -0.5768 -0.7856 -0.2240 -vn -0.7042 -0.0062 -0.7100 -vn -0.4113 0.2821 -0.8667 -vn -0.5660 -0.6539 -0.5020 -vn 0.4166 0.0162 -0.9090 -vn -0.2664 0.7633 -0.5885 -vn -0.0626 0.0578 -0.9964 -vn -0.1492 0.3070 -0.9399 -vn -0.3632 0.0792 -0.9283 -vn -0.4643 0.2453 -0.8510 -vn 0.4066 -0.6906 0.5981 -vn 0.5199 -0.3210 -0.7917 -vn -0.4375 -0.0329 -0.8986 -vn -0.5631 -0.6777 -0.4729 -vn 0.3965 -0.2718 -0.8769 -vn 0.3101 -0.0512 -0.9493 -vn -0.2809 -0.4507 -0.8473 -vn 0.0109 -0.9992 -0.0389 -vn -0.6911 -0.7227 -0.0044 -vn -0.4032 -0.3365 -0.8510 -vn -0.5707 0.2578 -0.7796 -vn -0.6588 0.7014 -0.2721 -vn 0.3799 -0.7118 -0.5908 -vn -0.7426 -0.3811 -0.5507 -vn 0.6785 -0.0765 -0.7306 -vn -0.3356 0.3533 -0.8732 -vn 0.2725 0.1107 -0.9558 -vn 0.3134 -0.5280 -0.7893 -vn 0.3685 -0.2870 -0.8842 -vn 0.0515 0.1464 -0.9879 -vn 0.2584 0.2209 -0.9404 -vn -0.4076 -0.8355 -0.3686 -vn -0.1730 0.2318 -0.9573 -vn -0.5329 -0.6047 -0.5918 -vn 0.5378 -0.6802 -0.4981 -vn -0.1389 0.2052 -0.9688 -vn -0.4610 -0.5246 -0.7157 -vn -0.8850 -0.0341 -0.4642 -vn -0.1090 0.9859 -0.1268 -vn -0.3799 -0.6341 -0.6735 -vn -0.5759 -0.5835 -0.5726 -vn 0.3601 -0.7863 -0.5020 -vn 0.2847 -0.5455 -0.7883 -vn 0.1519 -0.1625 -0.9749 -vn -0.5469 0.0577 -0.8352 -vn 0.0832 -0.5898 -0.8032 -vn -0.0954 -0.3235 -0.9414 -vn -0.3617 -0.4019 -0.8412 -vn 0.8307 0.3665 -0.4191 -vn -0.1323 -0.7175 -0.6839 -vn 0.1116 -0.1669 -0.9796 -vn -0.0611 0.3458 -0.9363 -vn -0.0744 0.4022 -0.9125 -vn -0.0321 0.4818 -0.8757 -vn 0.2496 -0.9276 -0.2780 -vn 0.0520 0.1274 -0.9905 -vn 0.0885 -0.9044 -0.4174 -vn -0.0695 0.7287 -0.6813 -vn 0.0524 -0.8849 -0.4628 -vn -0.0743 -0.9954 -0.0606 -vn -0.0175 0.1544 -0.9879 -vn -0.6916 0.3147 -0.6501 -vn -0.8199 -0.0928 -0.5650 -vn 0.1033 -0.5200 -0.8479 -vn -0.0160 -0.0779 -0.9968 -vn -0.1012 0.2937 -0.9505 -vn -0.1930 -0.0319 -0.9807 -vn 0.0940 -0.4492 -0.8885 -vn -0.3555 0.3061 -0.8831 -vn -0.8297 0.0755 -0.5531 -vn -0.5221 -0.4171 -0.7439 -vn -0.4887 -0.0620 -0.8702 -vn -0.4975 -0.0419 -0.8665 -vn -0.1643 -0.1515 -0.9747 -vn -0.4275 -0.6877 -0.5867 -vn -0.5990 -0.7017 -0.3857 -vn -0.1152 0.2310 -0.9661 -vn 0.1099 -0.6280 -0.7704 -vn 0.0304 -0.0061 -0.9995 -vn 0.0272 -0.9992 -0.0306 -vn -0.8170 0.5051 -0.2782 -vn -0.7586 0.2977 -0.5796 -vn -0.1633 -0.1465 -0.9756 -vn 0.3715 -0.6315 -0.6806 -vn 0.2617 -0.5054 -0.8222 -vn 0.2927 -0.4226 -0.8578 -vn 0.0143 0.2104 -0.9775 -vn 0.1475 0.3868 -0.9103 -vn 0.1058 -0.0315 -0.9939 -vn -0.5385 -0.0754 -0.8392 -vn -0.5974 0.1570 -0.7865 -vn -0.4824 -0.6181 -0.6207 -vn -0.1563 0.0222 -0.9875 -vn -0.4010 -0.0422 -0.9151 -vn -0.1396 0.0712 -0.9876 -vn -0.0958 0.1960 -0.9759 -vn -0.2762 0.1604 -0.9476 -vn -0.4138 0.5280 -0.7416 -vn -0.3820 0.3750 -0.8447 -vn -0.3488 0.1349 -0.9274 -vn 0.2886 0.1654 -0.9431 -vn -0.5766 0.1867 -0.7954 -vn -0.3704 -0.1023 -0.9232 -vn -0.0997 0.0637 -0.9930 -vn -0.6010 -0.4800 -0.6390 -vn -0.0849 0.0071 -0.9964 -vn -0.0208 -0.1406 -0.9898 -vn -0.5282 0.1285 -0.8394 -vn -0.0307 -0.0882 -0.9956 -vn -0.7634 -0.5912 -0.2602 -vn 0.5065 0.0656 -0.8598 -vn -0.1938 0.0649 -0.9789 -vn -0.2825 0.1976 -0.9387 -vn -0.2921 0.3287 -0.8981 -vn -0.0910 -0.2578 -0.9619 -vn -0.1891 0.0697 -0.9795 -vn -0.1641 0.0879 -0.9825 -vn 0.2223 -0.7125 -0.6655 -vn 0.1173 -0.1109 -0.9869 -vn 0.1109 -0.0830 -0.9904 -vn -0.1871 0.1353 -0.9730 -vn -0.3007 -0.0057 -0.9537 -vn 0.0619 0.4287 -0.9013 -vn -0.2542 0.1672 -0.9526 -vn 0.1303 -0.2308 -0.9642 -vn 0.0393 -0.9826 0.1816 -vn -0.1213 0.4117 -0.9032 -vn -0.3404 0.3433 -0.8754 -vn -0.7499 0.0716 -0.6576 -vn -0.6299 0.1819 -0.7551 -vn -0.7987 -0.1142 -0.5908 -vn -0.8340 -0.2429 -0.4954 -vn 0.1367 -0.5413 -0.8296 -vn -0.4968 0.8517 0.1666 -vn -0.2339 -0.1735 -0.9566 -vn -0.2121 0.2694 -0.9394 -vn 0.0918 -0.5260 -0.8455 -vn 0.0072 -0.1282 -0.9917 -vn -0.0175 -0.1581 -0.9873 -vn -0.4515 0.3448 -0.8230 -vn -0.5948 0.1184 -0.7951 -vn -0.0473 -0.0858 -0.9952 -vn -0.0315 -0.3456 -0.9378 -vn 0.1508 -0.3838 -0.9110 -vn 0.1543 -0.3971 -0.9047 -vn 0.3826 0.5115 0.7694 -vn 0.5597 -0.3899 -0.7312 -vn 0.2736 -0.8790 -0.3905 -vn 0.1474 -0.4823 -0.8635 -vn -0.6823 -0.2008 -0.7030 -vn -0.1815 0.1498 -0.9719 -vn 0.5168 -0.3502 -0.7812 -vn 0.1622 -0.0481 -0.9856 -vn 0.3823 0.5786 -0.7205 -vn 0.6078 -0.7886 -0.0935 -vn 0.2040 -0.6878 0.6966 -vn -0.0134 -0.9999 0.0079 -vn -0.6565 0.3423 -0.6722 -vn -0.0544 0.4532 -0.8897 -vn -0.6128 -0.0687 -0.7872 -vn 0.3094 -0.7497 -0.5850 -vn 0.2281 -0.4824 -0.8457 -vn -0.6472 -0.2018 -0.7351 -vn -0.3067 0.1816 -0.9343 -vn 0.3555 0.0425 -0.9337 -vn 0.3687 -0.0310 -0.9290 -vn 0.4170 0.4775 -0.7733 -vn 0.1795 -0.2277 -0.9570 -vn -0.3662 0.0841 -0.9267 -vn 0.4785 -0.4129 -0.7750 -vn -0.4176 -0.0191 -0.9084 -vn -0.2598 -0.4605 -0.8488 -vn -0.3787 -0.5646 -0.7333 -vn -0.5703 0.2575 -0.7800 -vn 0.1026 -0.9025 -0.4184 -vn -0.0079 -0.4437 -0.8961 -vn -0.0149 -0.4530 -0.8914 -vn -0.1096 -0.8463 -0.5214 -vn 0.2089 -0.3717 -0.9046 -vn -0.6609 -0.3651 -0.6557 -vn -0.6473 0.2830 -0.7078 -vn -0.2685 -0.7487 -0.6061 -vn -0.1082 -0.5796 -0.8077 -vn -0.0810 0.2922 -0.9529 -vn -0.4555 -0.2710 -0.8480 -vn 0.6208 -0.0694 -0.7809 -vn -0.1114 -0.7653 -0.6340 -vn -0.2300 -0.2114 -0.9500 -vn -0.3337 -0.2720 -0.9026 -vn -0.2758 -0.6617 -0.6972 -vn -0.4811 -0.8764 -0.0206 -vn -0.4453 -0.4408 -0.7794 -vn -0.9818 0.1516 0.1144 -vn 0.1962 -0.4658 -0.8629 -vn -0.4553 0.7592 0.4650 -vn -0.5476 -0.3744 -0.7483 -vn -0.2951 -0.2606 -0.9192 -vn -0.4140 -0.2908 -0.8625 -vn -0.1845 -0.5249 -0.8309 -vn 0.7288 0.1757 -0.6619 -vn 0.6599 -0.2152 -0.7199 -vn 0.5530 -0.0003 -0.8332 -vn 0.0572 -0.1327 -0.9895 -vn -0.3474 0.2048 -0.9151 -vn -0.5141 0.4783 -0.7120 -vn -0.0337 -0.6400 -0.7676 -vn -0.5098 0.4541 -0.7307 -vn -0.6413 -0.6262 -0.4434 -vn -0.3356 0.3175 -0.8869 -vn -0.1905 -0.7902 -0.5825 -vn 0.2532 -0.6244 -0.7389 -vn 0.2430 -0.4590 -0.8546 -vn -0.0177 -0.9337 0.3576 -vn -0.8111 0.2037 -0.5482 -vn 0.5753 0.1576 -0.8026 -vn 0.4124 -0.7732 -0.4817 -vn -0.3335 -0.2716 -0.9028 -vn -0.5543 -0.2636 -0.7894 -vn -0.3805 -0.4504 -0.8077 -vn 0.5509 0.1364 -0.8234 -vn -0.0248 -0.2072 -0.9780 -vn -0.5080 -0.6500 -0.5652 -vn 0.4923 -0.1646 -0.8547 -vn 0.6583 0.0875 -0.7476 -vn -0.3621 0.1469 0.9205 -vn 0.2174 -0.9216 -0.3214 -vn -0.0286 -0.2761 -0.9607 -vn -0.1494 -0.5061 -0.8494 -vn -0.2591 -0.3035 -0.9169 -vn 0.1415 -0.3970 -0.9068 -vn -0.5939 -0.1999 -0.7793 -vn -0.4052 -0.6112 -0.6799 -vn 0.2335 0.0433 -0.9714 -vn 0.2822 -0.6618 -0.6946 -vn -0.4730 -0.2390 0.8480 -vn -0.6878 -0.0977 -0.7193 -vn -0.0238 0.1251 0.9919 -vn 0.6657 -0.2094 -0.7163 -vn 0.5385 0.0574 -0.8406 -vn -0.9627 0.0192 -0.2699 -vn 0.9200 -0.1313 -0.3693 -vn -0.0591 -0.2408 -0.9688 -vn 0.1004 0.0880 -0.9911 -vn -0.0494 -0.6830 -0.7288 -vn -0.0117 -0.9984 0.0558 -vn 0.5081 -0.4890 -0.7090 -vn 0.5390 -0.2297 -0.8104 -vn 0.8061 -0.2750 -0.5240 -vn 0.0475 -0.2531 -0.9663 -vn -0.0435 -0.0127 -0.9990 -vn 0.6499 -0.2587 -0.7146 -vn 0.5199 -0.0463 -0.8530 -vn 0.4076 0.0886 -0.9088 -vn -0.2906 0.1339 -0.9474 -vn -0.1706 0.4225 -0.8902 -vn -0.3841 -0.2731 -0.8820 -vn 0.2384 0.0634 -0.9691 -vn 0.3760 -0.7368 -0.5619 -vn -0.5501 0.2174 -0.8063 -vn 0.3353 0.0483 -0.9409 -vn -0.6796 0.4181 -0.6027 -vn -0.2223 0.0399 -0.9742 -vn 0.1755 -0.9801 -0.0932 -vn 0.4825 0.0144 -0.8758 -vn 0.1506 -0.4646 -0.8726 -vn 0.1088 0.2269 -0.9678 -vn 0.2304 0.0568 -0.9714 -vn -0.7757 -0.5860 -0.2342 -vn -0.7375 -0.1752 -0.6522 -vn -0.4361 -0.2295 -0.8701 -vn -0.2499 -0.3125 -0.9165 -vn -0.5439 -0.7489 -0.3786 -vn -0.3559 0.4368 -0.8262 -vn 0.0217 -0.1136 -0.9933 -vn -0.5437 -0.6882 -0.4803 -vn -0.5687 0.3954 -0.7213 -vn 0.3717 -0.6379 -0.6744 -vn 0.6501 -0.4424 -0.6177 -vn 0.6722 -0.1168 -0.7311 -vn 0.7468 -0.1864 -0.6383 -vn 0.7743 -0.1960 -0.6016 -vn 0.4934 -0.0470 -0.8686 -vn 0.0265 -0.3521 -0.9356 -vn -0.0554 -0.4367 -0.8979 -vn 0.0242 -0.2932 -0.9557 -vn -0.0687 -0.2548 -0.9645 -vn -0.2128 -0.1063 -0.9713 -vn 0.0220 -0.6169 -0.7867 -vn 0.7985 0.4583 -0.3903 -vn 0.4530 -0.4431 -0.7736 -vn 0.5248 -0.4901 -0.6960 -vn 0.3759 0.0862 -0.9227 -vn 0.6137 0.0102 -0.7895 -vn 0.6131 0.1083 -0.7826 -vn 0.3368 0.0666 -0.9392 -vn 0.3851 0.1476 -0.9110 -vn 0.3227 0.0919 -0.9420 -vn -0.5157 0.0191 -0.8565 -vn -0.3806 -0.4081 -0.8298 -vn 0.0458 0.1964 -0.9795 -vn -0.7093 0.5028 -0.4941 -vn -0.8735 -0.2698 -0.4052 -vn -0.3275 -0.7749 -0.5406 -vn -0.2507 0.1644 -0.9540 -vn -0.5281 -0.0589 -0.8471 -vn -0.2467 -0.7547 -0.6079 -vn -0.7992 0.4947 -0.3413 -vn 0.3962 -0.6386 -0.6597 -vn 0.5362 -0.0863 -0.8397 -vn 0.4536 -0.0386 -0.8904 -vn 0.0125 -0.9726 0.2323 -vn 0.5942 -0.7112 -0.3756 -vn -0.4476 0.3030 -0.8413 -vn -0.0084 0.1453 -0.9894 -vn 0.4767 -0.4306 -0.7663 -vn 0.4825 -0.4149 -0.7714 -vn 0.2565 -0.6779 -0.6890 -vn 0.3319 0.1009 -0.9379 -vn 0.4216 -0.2910 -0.8589 -vn 0.4620 -0.2341 -0.8555 -vn 0.4305 -0.1787 -0.8847 -vn 0.4634 0.0174 -0.8860 -vn 0.4468 0.0421 -0.8936 -vn -0.4786 0.8726 0.0981 -vn -0.1412 -0.1117 -0.9837 -vn -0.2607 -0.9521 -0.1598 -vn 0.5374 -0.6410 -0.5481 -vn 0.1390 -0.1961 -0.9707 -vn -0.4446 0.3498 -0.8246 -vn -0.0096 -0.8271 -0.5619 -vn -0.8188 0.5013 -0.2796 -vn -0.5777 -0.0440 -0.8151 -vn -0.6226 -0.4272 -0.6556 -vn 0.6593 -0.0589 -0.7495 -vn 0.2752 -0.5065 -0.8171 -vn 0.2571 -0.1143 -0.9596 -vn 0.4472 0.1883 -0.8744 -vn -0.6175 -0.1063 -0.7793 -vn -0.1146 -0.8415 -0.5279 -vn -0.1099 -0.5714 -0.8133 -vn 0.2097 -0.6428 -0.7367 -vn 0.2172 -0.5528 -0.8045 -vn 0.3133 -0.1549 -0.9369 -vn 0.3157 -0.1365 -0.9390 -vn 0.4378 0.2021 -0.8760 -vn 0.4383 0.1995 -0.8764 -vn 0.4191 0.1505 -0.8954 -vn 0.4641 -0.0308 -0.8852 -vn 0.4146 0.1175 -0.9024 -vn 0.0476 -0.1281 -0.9906 -vn -0.0893 -0.1037 0.9906 -vn 0.0851 0.1706 -0.9817 -vn -0.7432 0.1471 -0.6527 -vn 0.1864 -0.9748 0.1225 -vn 0.1442 0.0063 -0.9895 -vn 0.3955 -0.2664 -0.8790 -vn 0.3723 -0.2565 -0.8920 -vn 0.3638 -0.1183 -0.9239 -vn 0.3544 -0.1365 -0.9251 -vn -0.2121 -0.2109 -0.9542 -vn -0.1709 -0.4855 -0.8574 -vn 0.0260 0.1856 -0.9823 -vn -0.2201 0.2995 -0.9283 -vn -0.3592 0.4813 -0.7996 -vn -0.1504 0.1118 -0.9823 -vn 0.4399 -0.0079 -0.8980 -vn 0.5355 -0.5445 -0.6456 -vn 0.4734 -0.4210 -0.7737 -vn 0.5870 -0.3997 -0.7041 -vn 0.2040 -0.5481 -0.8112 -vn 0.4383 -0.2047 -0.8752 -vn 0.4275 0.0058 -0.9040 -vn 0.4847 -0.0469 -0.8734 -vn 0.4621 0.1303 -0.8772 -vn 0.4228 0.0366 -0.9055 -vn 0.7826 -0.2763 -0.5578 -vn -0.6118 0.6652 -0.4280 -vn 0.2835 0.2771 -0.9181 -vn 0.1307 0.4658 -0.8752 -vn -0.2930 -0.1902 -0.9370 -vn -0.0356 0.2535 -0.9667 -vn -0.1992 -0.5296 -0.8245 -vn 0.3803 -0.4043 -0.8318 -vn 0.3628 -0.1921 -0.9118 -vn 0.1394 -0.4309 -0.8916 -vn 0.2489 -0.1180 -0.9613 -vn 0.2771 0.1498 -0.9491 -vn 0.2056 0.0373 -0.9779 -vn 0.4758 -0.0296 -0.8790 -vn 0.9210 0.3113 -0.2340 -vn -0.3724 0.5979 -0.7098 -vn 0.2146 -0.4369 -0.8735 -vn -0.3090 -0.4042 -0.8609 -vn 0.8928 0.3021 0.3341 -vn -0.2368 -0.1467 -0.9604 -vn -0.3092 0.2296 -0.9229 -vn -0.0846 -0.8423 0.5323 -vn -0.1333 0.2814 -0.9503 -vn -0.2002 -0.4898 -0.8486 -vn -0.4182 0.2901 -0.8608 -vn -0.1928 -0.2098 -0.9586 -vn 0.4784 -0.4236 -0.7692 -vn 0.4064 -0.2197 -0.8869 -vn 0.2242 -0.3345 -0.9153 -vn 0.3116 0.0601 -0.9483 -vn 0.3608 0.2275 -0.9045 -vn 0.3234 -0.1889 -0.9272 -vn -0.0885 0.4776 -0.8741 -vn -0.0430 0.2891 -0.9563 -vn -0.0229 0.0081 -0.9997 -vn 0.0142 -0.3418 -0.9397 -vn -0.2606 0.1263 -0.9572 -vn -0.5243 -0.1357 -0.8407 -vn -0.1620 -0.4212 -0.8924 -vn -0.1756 0.3917 -0.9032 -vn -0.5418 -0.2767 -0.7937 -vn 0.1555 -0.4437 -0.8826 -vn 0.1898 -0.2187 -0.9572 -vn 0.1185 -0.1034 -0.9876 -vn 0.0162 -0.3990 -0.9168 -vn 0.2935 0.1827 -0.9383 -vn 0.3481 0.1951 -0.9169 -vn 0.2589 -0.0655 -0.9637 -vn 0.1867 -0.0343 -0.9818 -vn -0.5291 -0.0310 -0.8480 -vn -0.4709 -0.0564 -0.8804 -vn -0.1586 0.4588 -0.8743 -vn -0.7857 -0.4136 0.4600 -vn 0.7077 0.0794 -0.7021 -vn 0.3254 -0.1869 -0.9269 -vn 0.1383 -0.4313 -0.8915 -vn 0.1164 -0.1519 -0.9815 -vn 0.1774 -0.6731 -0.7180 -vn 0.2741 -0.5765 -0.7698 -vn 0.3439 -0.3231 -0.8816 -vn 0.2694 -0.2440 -0.9316 -vn 0.2884 -0.4017 -0.8692 -vn 0.3452 0.1184 -0.9310 -vn 0.0163 -0.3992 -0.9167 -vn -0.2482 -0.2037 -0.9470 -vn -0.1857 0.1485 -0.9713 -vn -0.6780 0.3579 -0.6421 -vn -0.3739 0.0255 -0.9271 -vn -0.2658 -0.3644 -0.8925 -vn -0.5650 -0.2280 -0.7929 -vn 0.3275 -0.3684 -0.8701 -vn 0.1922 0.0315 -0.9809 -vn 0.6666 0.0036 -0.7454 -vn 0.4109 0.0734 -0.9087 -vn 0.6648 -0.2145 -0.7156 -vn 0.4199 0.1644 -0.8926 -vn 0.4682 0.2161 -0.8568 -vn 0.4434 0.0099 -0.8963 -vn -0.2547 -0.5164 -0.8176 -vn -0.0553 -0.4440 -0.8943 -vn -0.0608 -0.9964 0.0597 -vn 0.2354 0.2594 -0.9366 -vn 0.2172 0.1793 -0.9595 -vn -0.6499 0.1727 -0.7402 -vn -0.0115 -0.3720 -0.9282 -vn 0.0695 -0.1017 -0.9924 -vn 0.0074 -0.4527 -0.8916 -vn 0.0723 -0.6396 -0.7653 -vn 0.3793 -0.0430 -0.9243 -vn 0.3652 -0.1091 -0.9245 -vn -0.7939 -0.2739 -0.5428 -vn -0.2552 0.0721 -0.9642 -vn -0.3337 0.0244 -0.9424 -vn -0.0392 -0.2602 -0.9648 -vn -0.2360 0.0685 -0.9693 -vn -0.5391 0.1934 -0.8198 -vn 0.2274 0.2481 -0.9417 -vn -0.3839 -0.1902 -0.9036 -vn -0.1794 0.0051 -0.9838 -vn 0.3529 -0.4876 -0.7986 -vn 0.4522 0.3548 -0.8183 -vn 0.0317 -0.4451 -0.8949 -vn 0.2102 0.0738 -0.9749 -vn 0.1846 -0.3762 -0.9080 -vn 0.2337 -0.4238 -0.8751 -vn 0.3376 -0.3636 -0.8682 -vn 0.4795 -0.1405 -0.8662 -vn 0.5748 0.0978 -0.8124 -vn 0.4203 0.0286 -0.9069 -vn 0.0280 -0.9996 0.0086 -vn 0.3767 -0.9242 -0.0629 -vn -0.0804 0.0313 -0.9963 -vn 0.0107 -0.2401 -0.9707 -vn -0.3468 -0.3035 -0.8875 -vn 0.1974 -0.8540 -0.4813 -vn -0.0796 -0.3695 -0.9258 -vn 0.1453 -0.4666 -0.8725 -vn 0.3169 0.1243 -0.9403 -vn 0.3763 0.0215 -0.9263 -vn 0.3224 -0.3750 -0.8692 -vn 0.4175 0.1641 -0.8937 -vn 0.4054 0.1514 -0.9015 -vn -0.3084 0.2313 -0.9227 -vn 0.0712 0.0914 -0.9933 -vn -0.5438 0.2749 -0.7929 -vn 0.2254 0.1204 -0.9668 -vn 0.6032 0.0427 -0.7965 -vn 0.1934 -0.5625 -0.8039 -vn 0.2022 0.0036 -0.9793 -vn 0.0487 -0.3849 -0.9217 -vn 0.2313 -0.5633 -0.7932 -vn -0.0393 -0.3231 -0.9456 -vn 0.3236 -0.1607 -0.9325 -vn 0.1053 0.0818 -0.9911 -vn 0.2350 -0.0277 -0.9716 -vn -0.0953 -0.7741 -0.6259 -vn -0.6244 -0.3274 -0.7092 -vn 0.0571 0.0252 -0.9980 -vn -0.4298 0.4727 -0.7693 -vn -0.6157 0.0494 -0.7864 -vn -0.2197 -0.9591 -0.1786 -vn 0.1973 -0.3203 -0.9265 -vn 0.1523 0.0703 -0.9858 -vn 0.0791 -0.3325 -0.9398 -vn 0.2463 -0.6807 -0.6899 -vn -0.1208 -0.2863 -0.9505 -vn 0.0249 0.0074 -0.9997 -vn 0.3226 -0.3751 -0.8690 -vn 0.2322 -0.1160 -0.9657 -vn 0.2255 -0.1030 -0.9688 -vn 0.2185 0.1760 -0.9598 -vn -0.5826 0.2997 -0.7555 -vn -0.2042 -0.2195 -0.9540 -vn -0.9530 0.0655 -0.2956 -vn 0.1727 -0.2171 -0.9607 -vn 0.3932 -0.6078 -0.6899 -vn 0.3587 -0.2993 -0.8842 -vn 0.1131 -0.2656 -0.9574 -vn 0.1231 -0.4347 -0.8921 -vn 0.0814 -0.3862 -0.9188 -vn 0.2525 -0.0265 -0.9672 -vn 0.3349 0.2486 -0.9089 -vn 0.2447 -0.0174 -0.9695 -vn -0.2509 0.0022 -0.9680 -vn 0.2288 0.1813 -0.9564 -vn 0.0984 0.4071 -0.9081 -vn 0.0498 0.3386 -0.9396 -vn 0.0362 -0.0148 -0.9992 -vn -0.3751 -0.2239 -0.8995 -vn -0.5383 0.0839 -0.8386 -vn 0.2696 0.2642 -0.9260 -vn 0.0053 -0.4154 -0.9096 -vn 0.3748 0.1630 -0.9127 -vn 0.3671 -0.3040 -0.8791 -vn 0.3587 -0.0809 -0.9300 -vn 0.4073 -0.3198 -0.8555 -vn 0.4020 -0.2468 -0.8817 -vn 0.5194 -0.1512 -0.8410 -vn 0.4634 -0.3461 -0.8158 -vn 0.3463 -0.2152 -0.9131 -vn 0.2864 0.1975 -0.9375 -vn 0.0859 0.0814 -0.9930 -vn -0.0290 0.0506 -0.9983 -vn -0.1482 0.5178 -0.8426 -vn -0.2997 0.4276 -0.8529 -vn -0.2588 0.0262 -0.9656 -vn 0.1432 -0.5885 -0.7957 -vn 0.1918 -0.7929 -0.5785 -vn 0.1698 -0.2188 -0.9609 -vn 0.1901 0.0266 -0.9814 -vn 0.3292 0.1787 -0.9272 -vn 0.2912 0.1531 -0.9443 -vn 0.3180 0.0193 -0.9479 -vn 0.2091 0.0327 -0.9773 -vn 0.3573 0.3006 -0.8843 -vn -0.2810 -0.4656 -0.8392 -vn -0.7797 -0.0960 0.6188 -vn -0.9727 0.2273 -0.0464 -vn 0.0234 0.3236 -0.9459 -vn 0.1370 0.4376 -0.8887 -vn -0.2495 0.5184 -0.8179 -vn -0.5537 -0.4735 -0.6850 -vn -0.3389 0.4350 -0.8342 -vn 0.0917 -0.6050 -0.7909 -vn 0.1210 -0.7910 -0.5998 -vn 0.0938 -0.7728 -0.6276 -vn 0.1961 0.0624 -0.9786 -vn 0.0537 -0.4738 -0.8790 -vn -0.1258 -0.6195 -0.7748 -vn 0.1353 -0.3917 -0.9101 -vn -0.1802 0.4927 -0.8513 -vn -0.4190 -0.2647 -0.8685 -vn 0.5901 0.1129 -0.7994 -vn -0.0102 0.0693 -0.9975 -vn -0.2368 0.3827 -0.8930 -vn 0.0397 -0.1187 -0.9921 -vn 0.1504 -0.1876 -0.9707 -vn 0.1628 0.0755 -0.9838 -vn 0.1003 -0.6019 -0.7923 -vn 0.1724 -0.4568 -0.8727 -vn 0.0183 -0.4528 -0.8914 -vn 0.0802 -0.2864 -0.9548 -vn 0.2388 0.2063 -0.9489 -vn 0.1461 -0.0582 -0.9875 -vn 0.5285 -0.1823 -0.8291 -vn 0.1963 0.3916 -0.8990 -vn 0.0200 -0.9993 -0.0309 -vn 0.0521 -0.5585 -0.8278 -vn 0.0801 -0.2338 -0.9690 -vn 0.0640 -0.3227 -0.9443 -vn 0.0357 -0.6817 -0.7308 -vn 0.2311 0.0727 -0.9702 -vn 0.1017 -0.3020 -0.9479 -vn 0.1304 -0.2719 -0.9535 -vn 0.2282 -0.3630 -0.9034 -vn 0.4655 0.1335 -0.8749 -vn 0.4807 0.2039 -0.8528 -vn 0.4042 0.3835 -0.8304 -vn 0.3646 0.1509 -0.9188 -vn -0.5503 -0.2593 -0.7937 -vn 0.1735 0.1988 -0.9646 -vn -0.6827 -0.4308 -0.5902 -vn -0.6343 0.0135 -0.7730 -vn 0.1950 0.1728 -0.9655 -vn 0.1796 0.0594 -0.9819 -vn 0.1794 -0.0529 -0.9824 -vn 0.2978 -0.7181 -0.6290 -vn 0.3482 -0.2883 -0.8920 -vn -0.0127 0.0272 -0.9996 -vn 0.1117 -0.2814 -0.9531 -vn 0.1395 -0.0607 -0.9884 -vn -0.3942 -0.6511 -0.6486 -vn -0.4150 -0.7553 -0.5072 -vn -0.3006 -0.2445 -0.9219 -vn -0.2721 -0.3570 -0.8936 -vn -0.4179 0.3461 -0.8400 -vn 0.0443 -0.0525 -0.9976 -vn -0.1005 0.0777 -0.9919 -vn 0.0743 -0.5224 -0.8495 -vn 0.1414 0.0256 -0.9896 -vn 0.2608 -0.2159 -0.9409 -vn 0.1786 -0.7475 -0.6398 -vn 0.0730 -0.2718 -0.9596 -vn 0.3606 -0.3223 -0.8753 -vn 0.1979 -0.3720 -0.9069 -vn 0.1634 0.0480 -0.9854 -vn 0.3761 -0.1674 -0.9113 -vn 0.2623 -0.2146 -0.9408 -vn 0.2428 -0.1711 -0.9549 -vn 0.3184 0.0352 -0.9473 -vn -0.4686 0.0580 -0.8815 -vn -0.6802 0.1059 -0.7254 -vn 0.1003 -0.3989 -0.9115 -vn -0.1599 0.2750 -0.9480 -vn 0.3883 -0.2061 -0.8982 -vn -0.5095 0.1428 0.8485 -vn -0.8523 -0.1529 -0.5001 -vn -0.3795 -0.1911 -0.9052 -vn 0.2252 -0.7581 -0.6121 -vn 0.0080 -0.4145 -0.9100 -vn 0.1943 -0.6113 -0.7672 -vn 0.0345 -0.2967 -0.9543 -vn 0.2110 -0.2631 -0.9414 -vn 0.3618 -0.3007 -0.8824 -vn 0.3849 -0.1696 -0.9072 -vn 0.3524 -0.0092 -0.9358 -vn 0.2089 0.2547 -0.9442 -vn 0.0688 0.0523 -0.9963 -vn -0.4140 -0.3367 -0.8457 -vn 0.0322 0.0608 -0.9976 -vn 0.0764 -0.2295 -0.9703 -vn 0.2637 -0.2544 -0.9305 -vn 0.3229 -0.3641 -0.8736 -vn 0.2115 0.1308 -0.9686 -vn 0.2097 -0.2766 -0.9378 -vn 0.9085 -0.4078 -0.0915 -vn -0.3464 0.0143 -0.9380 -vn -0.1872 0.2027 -0.9612 -vn 0.3055 0.2494 -0.9189 -vn 0.2102 0.2284 -0.9506 -vn 0.2116 -0.4431 -0.8711 -vn 0.0956 -0.1741 -0.9801 -vn 0.1049 -0.4712 -0.8758 -vn 0.1498 -0.0498 -0.9875 -vn 0.2398 -0.2259 -0.9442 -vn 0.2081 0.1131 -0.9715 -vn 0.0809 -0.1917 -0.9781 -vn 0.1490 0.2752 -0.9498 -vn 0.1458 0.3533 -0.9241 -vn 0.0156 0.2406 -0.9705 -vn -0.1496 0.0658 -0.9866 -vn 0.3709 -0.1517 -0.9162 -vn -0.4157 -0.3047 -0.8570 -vn -0.3737 -0.2593 -0.8906 -vn 0.3551 -0.2064 -0.9118 -vn 0.1351 -0.5085 -0.8504 -vn 0.1345 -0.3942 -0.9091 -vn -0.0508 -0.4167 -0.9076 -vn 0.1404 0.1027 -0.9847 -vn 0.0501 -0.0411 -0.9979 -vn 0.1421 0.2226 -0.9645 -vn -0.8165 0.5055 -0.2789 -vn -0.3079 -0.2513 -0.9176 -vn 0.2029 -0.9753 -0.0873 -vn -0.2245 -0.3644 -0.9038 -vn -0.2185 -0.2782 -0.9354 -vn 0.1103 0.0662 -0.9917 -vn 0.0350 -0.2622 -0.9644 -vn 0.0238 -0.8034 -0.5950 -vn 0.0350 -0.8112 -0.5837 -vn 0.2603 -0.1534 -0.9533 -vn 0.0323 -0.1654 -0.9857 -vn 0.1315 -0.3267 -0.9359 -vn 0.1316 0.3749 -0.9177 -vn 0.1528 0.2450 -0.9574 -vn -0.6938 -0.6671 -0.2713 -vn 0.0188 0.2390 -0.9708 -vn -0.0080 0.0520 -0.9986 -vn -0.4159 0.3347 -0.8456 -vn -0.9256 0.0914 -0.3674 -vn 0.1795 -0.0817 -0.9804 -vn 0.0609 -0.3294 -0.9422 -vn 0.1756 0.0398 -0.9837 -vn 0.0693 -0.2393 -0.9685 -vn 0.5026 -0.3086 -0.8076 -vn 0.2195 -0.0593 -0.9738 -vn 0.0158 -0.2274 -0.9737 -vn 0.4709 -0.7328 -0.4912 -vn -0.4474 -0.6719 -0.5903 -vn -0.1703 0.3578 -0.9181 -vn -0.4001 -0.4986 -0.7690 -vn 0.3882 0.1810 -0.9036 -vn -0.2387 0.3990 -0.8853 -vn -0.6828 0.2643 -0.6811 -vn 0.1507 -0.2677 -0.9516 -vn -0.1316 -0.7522 -0.6457 -vn -0.1242 -0.2695 -0.9550 -vn 0.0314 -0.4808 -0.8763 -vn 0.1142 -0.6615 -0.7412 -vn 0.1667 -0.2976 -0.9400 -vn -0.0282 -0.0296 -0.9992 -vn 0.1862 0.3956 -0.8993 -vn -0.2321 -0.1022 -0.9673 -vn -0.3610 -0.7549 -0.5476 -vn 0.1556 -0.4583 -0.8751 -vn 0.1126 0.0684 -0.9913 -vn 0.0391 -0.4480 -0.8932 -vn 0.2012 -0.0564 -0.9779 -vn 0.3628 -0.3430 -0.8664 -vn 0.1991 -0.0584 -0.9782 -vn 0.1117 -0.0243 -0.9934 -vn 0.2558 -0.0438 -0.9657 -vn -0.1357 0.2000 -0.9703 -vn 0.0302 0.9275 -0.3727 -vn -0.8092 0.4713 -0.3507 -vn 0.1110 -0.6497 -0.7521 -vn 0.1766 0.0733 -0.9815 -vn -0.8508 -0.4974 0.1694 -vn 0.4553 0.1399 -0.8793 -vn 0.1189 -0.8141 -0.5684 -vn 0.0700 0.3607 -0.9301 -vn 0.2521 -0.3678 -0.8951 -vn 0.0024 -0.4615 -0.8871 -vn -0.0300 -0.1599 -0.9867 -vn 0.3086 -0.2716 -0.9116 -vn 0.3136 -0.0165 -0.9494 -vn 0.3731 -0.3095 -0.8747 -vn 0.3218 -0.2372 -0.9166 -vn 0.1162 0.0806 -0.9899 -vn -0.1667 0.0041 -0.9860 -vn 0.1551 -0.0745 -0.9851 -vn -0.4898 0.2663 -0.8302 -vn 0.6326 0.0923 -0.7690 -vn -0.0608 -0.8340 -0.5483 -vn 0.0201 -0.0129 -0.9997 -vn -0.5481 -0.1475 -0.8233 -vn -0.5706 0.3940 -0.7206 -vn -0.1201 0.2126 -0.9697 -vn -0.0222 -0.9377 0.3467 -vn 0.3644 -0.9106 0.1949 -vn 0.1000 -0.1952 -0.9757 -vn 0.1670 0.0197 -0.9858 -vn -0.0734 -0.7538 -0.6530 -vn 0.0812 -0.6780 -0.7306 -vn -0.2733 -0.4614 -0.8440 -vn 0.3225 -0.3620 -0.8746 -vn 0.2514 -0.1177 -0.9607 -vn 0.3045 -0.2391 -0.9220 -vn -0.1913 0.1262 -0.9734 -vn -0.3614 -0.3539 -0.8626 -vn 0.0412 0.7554 0.6540 -vn -0.4014 0.5912 -0.6996 -vn 0.0432 0.0131 -0.9990 -vn -0.1212 -0.7718 -0.6242 -vn -0.0807 0.2956 -0.9519 -vn -0.4742 0.2311 -0.8496 -vn 0.2124 -0.2299 -0.9498 -vn -0.4389 -0.8580 -0.2667 -vn -0.5128 -0.4556 -0.7276 -vn -0.5176 0.1832 -0.8358 -vn -0.5847 -0.2724 -0.7642 -vn 0.3039 0.2491 -0.9196 -vn 0.2516 -0.2053 -0.9458 -vn 0.0860 0.1127 -0.9899 -vn -0.5828 -0.2409 -0.7761 -vn -0.3131 0.6470 -0.6952 -vn 0.0009 0.1476 -0.9890 -vn -0.0361 -0.6392 -0.7682 -vn -0.2665 0.2968 -0.9170 -vn -0.1264 0.4700 -0.8736 -vn -0.3290 -0.0392 -0.9435 -vn 0.7085 -0.6497 0.2756 -vn 0.7466 -0.6145 0.2551 -vn -0.7377 -0.3581 0.5723 -vn 0.2474 -0.1892 -0.9502 -vn -0.0678 -0.6616 -0.7468 -vn -0.1583 -0.5133 -0.8435 -vn -0.0211 -0.4563 -0.8896 -vn 0.1633 -0.3088 -0.9370 -vn 0.0976 -0.4734 -0.8754 -vn 0.2218 -0.1117 -0.9687 -vn 0.2200 -0.1694 -0.9607 -vn 0.1000 -0.1983 -0.9750 -vn -0.2216 -0.2711 -0.9367 -vn 0.1148 -0.3730 -0.9207 -vn 0.0627 -0.8773 -0.4758 -vn -0.2884 -0.3253 -0.9005 -vn -0.1031 -0.0513 -0.9934 -vn -0.7160 -0.1311 -0.6857 -vn 0.2160 -0.9625 0.1643 -vn 0.0128 -0.9969 0.0773 -vn 0.7326 -0.6765 0.0756 -vn -0.5173 -0.4723 -0.7137 -vn -0.5868 -0.2754 -0.7614 -vn -0.4345 -0.5786 -0.6903 -vn 0.2508 0.0530 -0.9666 -vn 0.1397 -0.4495 -0.8823 -vn -0.0159 -0.4308 -0.9023 -vn 0.0004 -0.4390 -0.8985 -vn 0.2028 -0.0564 -0.9776 -vn 0.1273 0.0942 -0.9874 -vn 0.0154 0.2909 -0.9566 -vn -0.1805 0.1835 -0.9663 -vn -0.3801 -0.6689 -0.6388 -vn 0.6139 -0.0631 0.7868 -vn -0.3237 -0.5203 -0.7902 -vn -0.0378 -0.0057 -0.9993 -vn -0.5364 -0.4068 -0.7394 -vn 0.2176 -0.9681 0.1244 -vn -0.5496 -0.2971 -0.7808 -vn -0.6630 -0.0131 -0.7485 -vn 0.3828 -0.3563 -0.8523 -vn -0.4706 0.7898 -0.3934 -vn -0.0650 -0.1323 -0.9891 -vn -0.0013 -0.2736 -0.9619 -vn -0.0730 -0.3115 -0.9474 -vn -0.5262 0.2468 -0.8138 -vn -0.3347 -0.7280 -0.5983 -vn -0.6497 0.2547 -0.7163 -vn -0.3803 0.0561 -0.9231 -vn -0.3011 -0.2450 -0.9216 -vn -0.4939 -0.3229 -0.8074 -vn -0.7661 0.1924 -0.6132 -vn -0.4795 0.4265 -0.7670 -vn 0.2408 -0.1352 -0.9611 -vn -0.8021 -0.0995 -0.5888 -vn 0.2816 0.0931 -0.9550 -vn -0.2145 -0.5013 -0.8383 -vn -0.3273 -0.4221 -0.8454 -vn -0.1310 -0.2131 -0.9682 -vn -0.2208 -0.3717 -0.9017 -vn -0.1971 -0.4016 -0.8943 -vn -0.2280 -0.4570 -0.8597 -vn -0.0668 0.0417 -0.9969 -vn 0.5292 0.3151 -0.7878 -vn -0.5282 0.4015 -0.7482 -vn -0.4302 -0.6423 -0.6343 -vn -0.6192 -0.1701 -0.7666 -vn -0.8444 0.4917 0.2128 -vn 0.0263 0.3351 -0.9418 -vn 0.3109 -0.7109 -0.6309 -vn -0.1468 -0.3178 -0.9367 -vn -0.1867 -0.4825 -0.8558 -vn -0.2977 -0.3916 -0.8706 -vn -0.3525 -0.4028 -0.8447 -vn -0.3532 -0.3536 -0.8662 -vn 0.1728 0.0785 -0.9818 -vn -0.1927 0.1252 -0.9732 -vn -0.1732 0.2269 -0.9584 -vn -0.1558 -0.5260 -0.8361 -vn -0.3613 0.3161 -0.8772 -vn -0.5312 -0.5810 -0.6166 -vn 0.2250 0.4311 -0.8738 -vn 0.0152 -0.9974 0.0707 -vn -0.0697 0.2108 -0.9750 -vn -0.5605 0.1942 -0.8051 -vn -0.5460 0.1221 -0.8289 -vn -0.8293 -0.0077 -0.5588 -vn 0.0035 -0.9985 0.0554 -vn -0.3807 -0.4727 -0.7948 -vn -0.3769 -0.4626 -0.8025 -vn -0.6595 -0.0662 -0.7488 -vn -0.6461 0.0079 -0.7632 -vn -0.2996 -0.7995 -0.5207 -vn -0.2036 -0.2892 -0.9354 -vn 0.0231 -0.0023 -0.9997 -vn -0.0192 0.2173 -0.9759 -vn 0.0160 -0.9974 0.0705 -vn -0.0456 0.1480 -0.9879 -vn -0.3937 -0.6588 -0.6411 -vn -0.4944 0.3317 -0.8034 -vn 0.4217 -0.8516 0.3112 -vn -0.9166 0.0205 -0.3993 -vn -0.4548 -0.2488 -0.8551 -vn -0.4814 -0.0434 -0.8754 -vn -0.4167 -0.3267 -0.8483 -vn -0.4204 0.1660 -0.8920 -vn 0.0152 0.1566 -0.9875 -vn 0.1051 0.3952 -0.9126 -vn 0.0176 0.0309 -0.9994 -vn -0.1126 0.4135 -0.9035 -vn -0.4893 -0.1318 -0.8621 -vn -0.3987 0.7977 -0.4524 -vn -0.3371 -0.9102 -0.2408 -vn -0.5636 0.0171 -0.8259 -vn 0.2393 -0.1355 -0.9615 -vn 0.1452 0.2585 -0.9550 -vn 0.0129 -0.0975 -0.9951 -vn -0.4076 -0.3755 -0.8324 -vn -0.4110 -0.3952 -0.8215 -vn -0.2659 -0.1460 -0.9529 -vn -0.0584 0.0091 -0.9983 -vn -0.0242 -0.5123 -0.8584 -vn -0.3274 0.3098 -0.8926 -vn -0.5608 0.0384 -0.8270 -vn -0.5108 0.1852 -0.8395 -vn -0.3672 0.1468 -0.9185 -vn -0.0977 -0.9872 0.1260 -vn -0.0224 -0.9970 -0.0738 -vn -0.4692 -0.7948 -0.3848 -vn -0.5781 -0.1352 -0.8047 -vn -0.7535 0.5799 -0.3097 -vn -0.5393 0.4427 -0.7164 -vn 0.1865 -0.2341 -0.9542 -vn -0.1257 0.1199 -0.9848 -vn -0.4590 -0.2220 -0.8602 -vn -0.5323 -0.3212 -0.7833 -vn -0.5067 -0.4393 -0.7418 -vn -0.5068 -0.4440 -0.7389 -vn -0.4253 -0.3741 -0.8241 -vn -0.2311 -0.0222 -0.9727 -vn -0.8005 -0.0820 -0.5936 -vn -0.6905 -0.4943 -0.5281 -vn -0.4497 0.1246 -0.8845 -vn 0.3728 0.1071 -0.9217 -vn -0.7622 0.5795 -0.2885 -vn 0.0318 -0.9994 -0.0164 -vn -0.2440 -0.4294 -0.8695 -vn -0.3942 -0.0559 -0.9173 -vn 0.0475 -0.9859 0.1606 -vn 0.1654 -0.0994 -0.9812 -vn -0.5254 -0.2441 -0.8151 -vn -0.6205 -0.3264 -0.7131 -vn -0.5542 -0.2751 -0.7856 -vn -0.5257 -0.3417 -0.7790 -vn 0.0793 0.1453 -0.9862 -vn 0.8313 -0.3308 -0.4468 -vn -0.0408 0.1323 -0.9904 -vn -0.1402 0.1018 -0.9849 -vn -0.4503 0.1799 -0.8746 -vn -0.4584 0.8038 -0.3793 -vn -0.1772 -0.5246 -0.8327 -vn -0.2029 -0.3503 -0.9144 -vn -0.3959 -0.0953 -0.9134 -vn 0.0140 -0.0073 -0.9999 -vn 0.0600 0.2346 -0.9702 -vn -0.0964 0.5646 -0.8197 -vn -0.3604 -0.0328 -0.9322 -vn -0.3954 0.1910 -0.8984 -vn -0.5264 -0.2452 -0.8141 -vn -0.5222 -0.2365 -0.8194 -vn -0.4540 0.0464 -0.8898 -vn -0.3441 0.1791 -0.9217 -vn -0.3067 0.3643 -0.8793 -vn -0.8036 -0.5539 -0.2178 -vn -0.5126 0.0316 -0.8580 -vn -0.1664 0.3465 -0.9232 -vn -0.0562 0.1440 -0.9880 -vn 0.8003 -0.5385 -0.2636 -vn -0.1444 0.0025 -0.9895 -vn 0.1571 -0.0990 -0.9826 -vn -0.1723 -0.7215 -0.6707 -vn -0.2740 0.3654 -0.8896 -vn 0.0036 -1.0000 -0.0058 -vn 0.0843 -0.8081 0.5830 -vn -0.3074 -0.6087 -0.7314 -vn 0.1096 0.3230 -0.9400 -vn -0.6875 -0.4229 -0.5903 -vn -0.3309 0.9430 -0.0363 -vn -0.6066 -0.3971 -0.6887 -vn -0.5494 -0.0136 -0.8355 -vn -0.3494 -0.0396 -0.9361 -vn -0.3515 0.1876 -0.9172 -vn 0.0540 -0.2458 -0.9678 -vn -0.6913 -0.3568 -0.6283 -vn -0.5060 -0.0335 -0.8619 -vn -0.4821 -0.3252 -0.8135 -vn 0.4525 -0.3145 -0.8345 -vn -0.1121 -0.9936 0.0171 -vn -0.5668 0.0869 -0.8193 -vn -0.5897 0.2630 -0.7636 -vn 0.5614 0.1628 -0.8114 -vn -0.7661 0.1042 -0.6342 -vn 0.1336 0.2936 -0.9466 -vn -0.0285 0.2747 -0.9611 -vn -0.1615 0.3424 -0.9256 -vn 0.0806 -0.9966 -0.0173 -vn 0.0558 -0.9984 -0.0006 -vn 0.1895 -0.0896 0.9778 -vn -0.2602 -0.8377 -0.4802 -vn -0.1312 -0.9882 -0.0787 -vn 0.4257 -0.8620 0.2752 -vn -0.5476 -0.8069 -0.2216 -vn 0.4351 -0.2650 0.8605 -vn -0.0567 -0.9937 -0.0963 -vn 0.0228 -0.9971 0.0720 -vn 0.4500 -0.8761 0.1730 -vn -0.5538 -0.8178 0.1569 -vn -0.5581 -0.8092 0.1836 -vn 0.2239 -0.9094 -0.3506 -vn 0.2669 -0.8824 -0.3874 -vn 0.1322 -0.9857 -0.1048 -vn -0.4463 -0.8034 0.3941 -vn -0.5362 -0.8274 -0.1670 -vn 0.0947 -0.7306 0.6762 -vn 0.2240 -0.9408 -0.2544 -vn 0.0040 -0.9959 0.0905 -vn 0.0311 -0.9941 0.1035 -vn -0.9331 -0.2289 0.2775 -vn -0.5334 -0.8218 -0.2003 -vn -0.5070 -0.7467 -0.4306 -vn 0.0344 -0.9945 -0.0992 -vn 0.1007 -0.8355 -0.5402 -vn 0.5521 -0.3442 0.7594 -vn -0.3097 -0.9501 -0.0361 -vn 0.0845 -0.9907 0.1065 -vn 0.0256 -0.9989 0.0390 -vn 0.0806 -0.9966 -0.0185 -vn 0.0876 -0.9921 0.0903 -vn -0.0105 -0.9984 -0.0557 -vn 0.0849 -0.9915 0.0982 -vn 0.1855 -0.8514 0.4906 -vn 0.4886 -0.8703 0.0623 -vn 0.0872 -0.9238 -0.3729 -vn 0.4114 -0.9015 0.1340 -vn 0.4206 -0.8638 0.2775 -vn -0.4188 0.2834 0.8627 -vn 0.1240 -0.9897 -0.0721 -vn -0.4498 -0.8913 0.0573 -vn 0.0090 -0.9812 -0.1926 -vn 0.0614 -0.9847 -0.1634 -vn -0.1243 -0.9815 -0.1455 -vn -0.4851 -0.8617 -0.1489 -vn 0.8318 -0.5370 0.1405 -vn 0.0129 -0.9986 0.0507 -vn 0.1794 -0.9687 -0.1716 -vn -0.5941 -0.7996 0.0876 -vn -0.4238 -0.8817 -0.2073 -vn -0.9647 0.1039 -0.2420 -vn 0.1274 -0.9890 -0.0746 -vn 0.1249 -0.9894 -0.0737 -vn 0.0682 -0.9943 0.0823 -vn -0.0973 -0.9870 -0.1281 -vn 0.0880 -0.9950 0.0470 -vn 0.0190 -0.9987 -0.0482 -vn -0.1936 -0.9810 0.0141 -vn 0.0339 -0.9989 -0.0328 -vn 0.1203 -0.9616 -0.2466 -vn -0.5834 -0.8107 -0.0495 -vn 0.0076 -0.9940 -0.1095 -vn -0.7023 0.0570 0.7096 -vn 0.3508 -0.8888 0.2948 -vn -0.0414 -0.9462 0.3208 -vn 0.0272 -0.9995 -0.0186 -vn 0.2038 -0.8639 0.4606 -vn 0.0479 -0.9930 0.1078 -vn 0.1441 0.0414 0.9887 -vn 0.2989 -0.7991 -0.5216 -vn 0.0075 -0.9999 -0.0110 -vn -0.1086 0.9521 0.2858 -vn 0.6829 -0.4435 0.5805 -vn -0.8729 -0.4503 0.1881 -vn 0.0351 -0.9981 -0.0511 -vn -0.4273 -0.8462 0.3184 -vn -0.5183 -0.6346 -0.5732 -vn -0.5379 -0.6303 0.5598 -vn 0.0014 -0.9975 -0.0707 -vn -0.0960 -0.9908 0.0959 -vn 0.0402 -0.9990 -0.0183 -vn -0.5375 -0.6521 0.5347 -vn -0.0387 -0.9986 0.0372 -vn -0.6918 -0.5307 -0.4896 -vn 0.0180 -0.9961 0.0862 -vn 0.0281 -0.9967 0.0763 -vn -0.7549 -0.6527 -0.0640 -vn 0.0124 -0.9992 0.0378 -vn -0.5228 -0.7762 0.3524 -vn 0.1840 -0.8502 0.4932 -vn -0.1829 -0.4956 0.8491 -vn -0.4683 -0.8585 0.2088 -vn 0.4875 -0.8722 -0.0394 -vn 0.1648 -0.0099 0.9863 -vn -0.6295 -0.6540 0.4196 -vn 0.0044 -0.9989 -0.0461 -vn 0.0994 -0.9950 0.0031 -vn -0.7863 -0.6179 -0.0024 -vn -0.8081 -0.1416 0.5718 -vn 0.0843 -0.9907 0.1067 -vn 0.0415 -0.9991 -0.0096 -vn 0.3984 -0.9071 -0.1360 -vn -0.6121 -0.7831 0.1104 -vn -0.3737 -0.3872 0.8429 -vn -0.5944 -0.7322 0.3324 -vn 0.8264 -0.4905 0.2767 -vn 0.0594 -0.1957 0.9789 -vn 0.2675 -0.8288 0.4915 -vn -0.7310 0.0210 0.6821 -vn 0.1059 -0.8296 0.5482 -vn 0.9712 -0.1526 0.1830 -vn 0.1234 -0.8638 0.4884 -vn -0.5693 -0.7742 0.2768 -vn -0.6402 -0.7499 0.1668 -vn 0.0139 -0.9994 -0.0325 -vn 0.3864 -0.9220 -0.0237 -vn 0.0936 -0.9924 -0.0796 -vn -0.2800 -0.8483 0.4495 -vn 0.0298 -0.9648 0.2615 -vn -0.0218 -0.9940 -0.1071 -vn 0.2590 -0.9620 0.0860 -vn -0.7047 -0.6745 0.2200 -vn 0.1586 -0.6332 0.7576 -vn -0.7433 -0.3855 -0.5468 -vn 0.1154 -0.9631 0.2430 -vn 0.0024 -0.9975 0.0712 -vn -0.3404 0.8118 0.4745 -vn 0.0586 -0.9955 0.0740 -vn -0.1879 -0.9515 0.2435 -vn 0.1113 -0.9935 0.0245 -vn -0.1487 -0.4582 0.8763 -vn 0.2388 -0.0355 0.9704 -vn 0.1072 -0.9886 0.1053 -vn 0.4561 -0.8439 0.2826 -vn -0.0136 -0.9991 0.0392 -vn 0.4748 -0.8740 0.1030 -vn -0.4167 -0.7269 0.5458 -vn -0.2552 -0.4548 0.8533 -vn -0.0218 -0.9997 -0.0116 -vn 0.1055 -0.9923 0.0657 -vn 0.3643 -0.9024 0.2300 -vn 0.0931 -0.9884 -0.1200 -vn 0.3020 -0.8279 0.4725 -vn -0.7066 -0.6894 -0.1595 -vn 0.0897 -0.9959 -0.0091 -vn -0.0510 -0.9961 -0.0721 -vn 0.0554 -0.9983 0.0181 -vn 0.0095 -0.9989 0.0449 -vn -0.2937 -0.3663 0.8829 -vn -0.6501 -0.7436 0.1562 -vn -0.5792 -0.7640 -0.2844 -vn -0.8245 -0.5526 -0.1220 -vn -0.7488 -0.6624 -0.0240 -vn -0.7109 -0.6475 -0.2747 -vn 0.0926 -0.7760 0.6239 -vn -0.0396 -0.9821 0.1841 -vn 0.0137 -0.9979 -0.0641 -vn -0.5278 -0.8080 -0.2619 -vn 0.0222 -0.9993 -0.0286 -vn 0.3519 -0.8022 0.4823 -vn 0.0521 -0.9933 0.1029 -vn 0.2110 -0.9455 -0.2481 -vn -0.3877 -0.9139 -0.1203 -vn -0.4561 -0.8512 -0.2595 -vn -0.6664 -0.5567 -0.4960 -vn -0.6642 -0.5465 -0.5102 -vn 0.2094 -0.9778 -0.0078 -vn 0.1099 -0.9938 0.0151 -vn 0.4058 -0.7709 0.4910 -vn 0.0101 -0.9994 -0.0341 -vn -0.2330 -0.9673 0.0999 -vn -0.4711 -0.8413 -0.2652 -vn -0.4200 -0.8790 -0.2258 -vn -0.8178 -0.5726 -0.0581 -vn 0.4697 -0.8354 0.2854 -vn 0.1462 -0.9524 0.2676 -vn -0.7470 -0.6480 -0.1485 -vn -0.6583 -0.7525 -0.0193 -vn 0.3930 -0.9086 0.1412 -vn 0.5670 -0.8145 0.1228 -vn -0.0513 -0.9978 0.0409 -vn -0.7912 -0.6040 -0.0956 -vn 0.1217 -0.8384 0.5313 -vn 0.0139 -0.8544 0.5195 -vn 0.0430 -0.5897 0.8064 -vn -0.0512 -0.9985 -0.0213 -vn 0.0196 -0.9921 -0.1239 -vn 0.0362 -0.9964 0.0768 -vn -0.3893 -0.8221 0.4154 -vn 0.3761 -0.8981 0.2280 -vn -0.6373 -0.7642 0.0995 -vn -0.3585 -0.9086 -0.2143 -vn -0.7536 -0.5424 0.3713 -vn -0.2707 -0.9070 0.3227 -vn 0.0473 -0.9970 0.0610 -vn 0.0558 -0.9982 -0.0200 -vn -0.0127 -0.9999 0.0004 -vn 0.0347 -0.9976 0.0600 -vn -0.0777 -0.9595 0.2708 -vn -0.0177 -0.9995 -0.0268 -vn -0.4329 -0.8340 0.3422 -vn -0.5392 -0.8411 0.0410 -vn -0.0078 -0.9943 -0.1063 -vn -0.4252 -0.8861 0.1844 -vn 0.2547 -0.8209 0.5111 -vn 0.0389 -0.9992 -0.0112 -vn 0.0074 -0.5975 0.8018 -vn -0.0374 -0.9817 0.1867 -vn 0.2985 -0.8887 0.3480 -vn -0.0010 -0.9575 0.2885 -vn -0.0139 -0.9980 -0.0618 -vn -0.4442 -0.8578 0.2588 -vn -0.4672 -0.8780 -0.1044 -vn -0.6274 -0.6656 0.4042 -vn -0.5403 0.4285 -0.7242 -vn 0.4534 -0.8462 0.2800 -vn 0.2575 -0.9151 0.3102 -vn 0.0584 -0.9959 0.0694 -vn 0.0143 -0.9998 -0.0164 -vn -0.2548 -0.8912 0.3753 -vn 0.0325 -0.9978 0.0573 -vn -0.6198 -0.7270 -0.2955 -vn 0.0300 -0.9982 -0.0522 -vn -0.8227 0.0184 0.5682 -vn 0.0560 -0.9984 0.0010 -vn 0.4041 -0.8083 0.4282 -vn -0.0296 -0.9813 0.1900 -vn -0.3238 -0.9349 -0.1457 -vn -0.4216 -0.9064 0.0256 -vn 0.0391 -0.9990 0.0215 -vn 0.1733 -0.9276 0.3310 -vn -0.0424 -0.9988 0.0225 -vn 0.0366 -0.4822 0.8753 -vn 0.0653 -0.8978 0.4356 -vn -0.8411 -0.3089 -0.4439 -vn -0.0617 -0.9911 -0.1179 -vn -0.1044 -0.9647 0.2418 -vn -0.5393 0.8297 0.1440 -vn -0.7751 -0.5158 0.3649 -vn 0.0191 -0.9977 -0.0652 -vn 0.0229 -0.9973 0.0691 -vn 0.3573 -0.8384 0.4116 -vn -0.3422 -0.8179 0.4625 -vn 0.3839 -0.9137 0.1331 -vn 0.2640 -0.3125 0.9125 -vn -0.3776 -0.9246 -0.0498 -vn -0.2884 -0.9469 -0.1420 -vn -0.3023 -0.9413 0.1503 -vn 0.0262 -0.9996 0.0106 -vn -0.5789 -0.7738 -0.2569 -vn -0.6291 -0.6612 0.4087 -vn -0.1399 -0.4237 -0.8949 -vn 0.0206 -0.9995 -0.0232 -vn 0.1692 -0.9852 0.0281 -vn -0.0440 0.7238 0.6886 -vn 0.0261 -0.9992 0.0291 -vn -0.5735 -0.8191 0.0135 -vn -0.3162 -0.8752 0.3660 -vn -0.4439 -0.7169 0.5376 -vn -0.4403 -0.7201 0.5363 -vn -0.4661 -0.6042 0.6463 -vn 0.0394 -0.9586 0.2819 -vn 0.0262 -0.9992 -0.0295 -vn 0.2945 -0.9320 -0.2112 -vn 0.1569 -0.9857 -0.0611 -vn -0.7691 -0.6314 -0.0989 -vn -0.6141 -0.7731 -0.1584 -vn -0.8455 -0.4214 -0.3279 -vn 0.0287 -0.9996 -0.0030 -vn -0.6714 -0.7220 0.1671 -vn -0.7930 0.2138 0.5705 -vn 0.0532 -0.9948 0.0873 -vn 0.0012 -0.9974 0.0718 -vn 0.0062 -0.9978 0.0661 -vn 0.0044 -0.9955 0.0950 -vn -0.1055 -0.9856 0.1324 -vn 0.1125 -0.5587 0.8217 -vn 0.1093 -0.9914 0.0718 -vn 0.2953 -0.6279 0.7201 -vn 0.0285 -0.9988 -0.0390 -vn 0.3994 -0.7318 -0.5522 -vn -0.7199 -0.4397 0.5370 -vn 0.2493 0.5973 0.7623 -vn -0.7835 -0.6214 -0.0088 -vn -0.7781 -0.6104 0.1483 -vn -0.4879 -0.4307 0.7592 -vn 0.0457 -0.9984 0.0333 -vn -0.0451 -0.9473 0.3172 -vn 0.0754 -0.6208 0.7803 -vn 0.2069 -0.8104 0.5481 -vn 0.0490 -0.8875 0.4582 -vn -0.7122 -0.6994 -0.0606 -vn -0.3311 -0.9434 0.0211 -vn -0.3828 -0.9234 -0.0277 -vn 0.0931 -0.9956 0.0064 -vn -0.0020 -0.9979 0.0654 -vn 0.0094 -0.9999 -0.0127 -vn -0.7460 -0.6659 -0.0108 -vn -0.6228 -0.7817 -0.0341 -vn -0.8112 -0.4427 0.3821 -vn -0.4530 -0.8895 0.0603 -vn -0.4788 -0.8763 0.0542 -vn -0.4739 -0.8768 0.0813 -vn 0.1503 -0.9852 0.0822 -vn -0.5393 -0.7854 -0.3039 -vn 0.1337 -0.0720 0.9884 -vn -0.5887 -0.7989 -0.1231 -vn -0.7728 -0.5565 0.3050 -vn -0.7304 -0.4510 0.5130 -vn 0.1418 -0.3466 -0.9272 -vn -0.2110 -0.9587 0.1905 -vn -0.6474 -0.7443 -0.1640 -vn 0.5749 -0.3259 0.7505 -vn -0.7125 -0.6998 -0.0502 -vn -0.7710 -0.6366 -0.0158 -vn -0.0266 -0.9996 0.0026 -vn -0.8256 -0.2081 0.5244 -vn -0.5020 -0.7732 0.3874 -vn -0.1600 -0.9510 0.2645 -vn -0.2504 -0.8980 0.3618 -vn -0.2433 -0.7625 0.5995 -vn 0.0592 -0.4236 0.9039 -vn 0.0472 -0.5431 0.8383 -vn 0.0118 -0.4994 0.8663 -vn 0.0280 -0.9983 0.0504 -vn -0.1309 -0.5859 0.7997 -vn 0.2110 -0.7615 0.6129 -vn 0.5285 -0.8371 0.1413 -vn 0.5416 -0.8225 0.1739 -vn -0.6833 -0.6907 0.2369 -vn -0.7769 -0.5791 0.2471 -vn -0.8026 -0.5834 0.1249 -vn -0.7992 -0.5025 0.3299 -vn -0.0972 -0.4480 0.8887 -vn -0.1683 -0.5555 0.8143 -vn 0.0399 -0.9992 0.0062 -vn -0.1830 -0.9667 0.1789 -vn 0.0028 -0.9991 0.0432 -vn -0.0529 -0.9148 0.4005 -vn 0.0018 -0.9957 0.0921 -vn -0.0432 -0.9485 0.3138 -vn 0.5520 -0.7663 0.3287 -vn -0.5831 -0.7422 -0.3304 -vn 0.5303 -0.6368 0.5597 -vn -0.5976 -0.8018 0.0070 -vn -0.5773 -0.7890 0.2103 -vn -0.6136 -0.6635 0.4281 -vn 0.0277 -0.9996 -0.0115 -vn -0.5134 -0.8384 0.1833 -vn -0.2158 -0.8441 0.4908 -vn -0.5959 -0.5708 0.5649 -vn 0.0057 -1.0000 -0.0080 -vn -0.4264 -0.8466 0.3184 -vn -0.6325 -0.7581 -0.1591 -vn -0.7563 -0.6523 0.0501 -vn -0.0265 -0.8723 0.4883 -vn 0.2414 -0.9702 0.0220 -vn 0.0051 -0.9997 0.0259 -vn -0.7040 -0.4090 0.5806 -vn -0.8034 -0.1076 0.5856 -vn -0.0017 -0.9996 0.0274 -vn 0.0140 -0.9987 0.0500 -vn -0.4618 -0.8868 -0.0172 -vn 0.0486 -0.9971 0.0589 -vn 0.1574 0.1309 0.9788 -vn -0.4276 -0.1363 0.8936 -vn -0.6351 -0.7548 -0.1639 -vn -0.6900 -0.7214 -0.0594 -vn -0.6873 -0.7018 0.1872 -vn -0.6257 -0.7720 0.1123 -vn -0.6456 -0.7453 0.1667 -vn -0.6921 -0.6673 0.2751 -vn -0.7658 -0.4632 0.4460 -vn 0.0143 -0.9994 -0.0302 -vn 0.1087 -0.9938 -0.0217 -vn 0.4190 -0.9041 0.0842 -vn -0.6004 -0.7138 0.3606 -vn -0.2120 -0.1376 0.9675 -vn -0.1096 -0.3944 0.9124 -vn -0.4027 -0.7900 0.4623 -vn 0.1020 -0.9652 0.2407 -vn -0.1336 -0.8192 0.5577 -vn -0.1516 -0.4255 0.8922 -vn -0.4298 -0.7666 0.4771 -vn 0.5958 -0.7462 0.2969 -vn -0.1757 -0.9468 0.2696 -vn -0.0338 -0.9987 0.0392 -vn -0.5396 -0.6253 0.5637 -vn 0.0087 -0.9961 0.0876 -vn -0.6296 -0.7592 -0.1648 -vn -0.7972 -0.5768 0.1783 -vn -0.6243 -0.7543 0.2033 -vn 0.0865 -0.4524 0.8876 -vn -0.7037 -0.6937 -0.1538 -vn -0.2446 -0.9329 0.2644 -vn 0.0384 -0.9628 0.2676 -vn 0.1162 -0.8961 0.4284 -vn -0.2177 -0.8071 0.5488 -vn -0.3175 -0.7758 0.5453 -vn -0.1238 0.7206 0.6822 -vn -0.0907 -0.9957 -0.0200 -vn -0.0097 -0.9938 -0.1105 -vn -0.4507 -0.8481 -0.2787 -vn -0.7762 -0.6279 0.0572 -vn -0.7247 -0.6833 -0.0883 -vn -0.7299 -0.6631 -0.1660 -vn -0.5801 -0.7853 0.2165 -vn -0.0797 -0.8329 0.5476 -vn -0.0219 -0.9732 0.2290 -vn -0.0079 -0.9283 0.3717 -vn -0.4037 -0.4952 0.7693 -vn 0.4512 -0.8756 -0.1725 -vn -0.7297 -0.6838 -0.0008 -vn -0.7046 -0.7063 -0.0678 -vn 0.4546 -0.8436 0.2860 -vn -0.6273 -0.5043 0.5934 -vn -0.3133 -0.9461 -0.0825 -vn -0.3981 -0.8674 -0.2986 -vn -0.4186 -0.8658 -0.2742 -vn -0.6939 -0.6311 0.3467 -vn -0.7105 -0.5086 0.4864 -vn 0.0324 -0.9993 0.0166 -vn -0.0161 -0.9997 0.0167 -vn 0.1656 -0.9856 -0.0343 -vn 0.2042 -0.9389 0.2770 -vn -0.0259 -0.9361 0.3507 -vn -0.5715 -0.5817 0.5788 -vn -0.4570 -0.8684 -0.1923 -vn -0.7234 -0.6898 -0.0304 -vn 0.1496 -0.9878 0.0426 -vn -0.3068 -0.9407 -0.1447 -vn -0.3401 -0.9403 0.0124 -vn -0.5769 -0.8123 0.0862 -vn -0.6560 -0.6651 0.3567 -vn -0.5951 -0.6888 0.4140 -vn -0.5989 -0.6642 0.4473 -vn 0.6187 -0.7637 0.1845 -vn 0.0041 -0.9999 -0.0150 -vn -0.6573 -0.7450 0.1135 -vn 0.2247 -0.9381 0.2635 -vn 0.1994 -0.9291 0.3113 -vn 0.1206 -0.9914 0.0500 -vn 0.0842 -0.9896 -0.1163 -vn -0.3522 -0.9315 -0.0905 -vn 0.2456 -0.9450 0.2161 -vn -0.8862 0.2654 0.3797 -vn -0.2708 -0.9506 -0.1518 -vn -0.3938 -0.8978 -0.1973 -vn -0.5383 -0.8259 0.1678 -vn -0.5180 -0.8472 0.1178 -vn -0.5290 -0.8440 0.0885 -vn -0.5180 -0.7977 0.3086 -vn -0.2545 -0.8900 0.3784 -vn -0.0780 -0.9723 0.2202 -vn 0.3081 -0.8891 0.3386 -vn 0.5572 -0.8277 0.0674 -vn 0.0418 -0.7260 0.6865 -vn 0.1351 -0.9868 -0.0899 -vn -0.0143 -0.9961 -0.0874 -vn -0.0397 -0.9979 -0.0510 -vn -0.1352 -0.9908 0.0085 -vn -0.1381 -0.9904 0.0012 -vn -0.4493 -0.8841 0.1288 -vn -0.7148 -0.1414 0.6849 -vn -0.2263 -0.9491 -0.2193 -vn -0.5154 -0.7799 0.3552 -vn 0.0568 -0.9982 -0.0217 -vn 0.0005 -0.9980 -0.0631 -vn 0.6532 -0.7135 0.2537 -vn 0.2817 -0.9266 0.2491 -vn 0.2663 -0.8986 0.3486 -vn 0.2897 -0.8606 0.4188 -vn -0.3808 -0.8906 -0.2486 -vn -0.3960 -0.8342 0.3837 -vn -0.4398 -0.7408 0.5078 -vn -0.8688 0.3874 -0.3085 -vn -0.0569 -0.9953 -0.0783 -vn -0.0634 -0.9968 -0.0481 -vn -0.2216 -0.9354 -0.2754 -vn -0.2624 -0.9241 -0.2778 -vn -0.2211 -0.9629 -0.1546 -vn -0.2874 -0.9310 -0.2252 -vn -0.4391 -0.8775 0.1927 -vn -0.5081 -0.6830 0.5247 -vn 0.4757 -0.4825 0.7354 -vn 0.0125 -0.9998 -0.0155 -vn -0.9922 -0.0300 0.1212 -vn -0.0910 -0.9901 0.1072 -vn 0.4722 -0.8468 0.2450 -vn 0.1510 -0.7496 0.6444 -vn -0.0655 -0.9944 -0.0830 -vn -0.2973 -0.9369 0.1839 -vn -0.7504 -0.3127 -0.5824 -vn -0.3321 -0.9345 -0.1281 -vn -0.3191 -0.9477 -0.0031 -vn -0.5916 -0.6933 0.4115 -vn -0.3529 0.0429 0.9347 -vn 0.0134 -0.9999 -0.0030 -vn -0.3135 -0.5815 0.7507 -vn -0.0871 -0.9581 0.2728 -vn -0.7307 -0.6200 0.2857 -vn -0.4977 -0.2685 -0.8247 -vn -0.0330 0.2373 -0.9709 -vn -0.0799 -0.9936 -0.0798 -vn -0.0515 -0.9972 0.0542 -vn -0.3611 -0.8685 0.3396 -vn -0.2396 -0.9598 -0.1462 -vn -0.4118 -0.8165 0.4046 -vn 0.1138 0.0195 0.9933 -vn 0.0322 -0.9986 0.0410 -vn -0.6672 -0.5920 0.4521 -vn 0.0321 -0.9993 -0.0186 -vn 0.1372 -0.9858 0.0965 -vn -0.0471 -0.9434 0.3284 -vn -0.3847 -0.8780 -0.2848 -vn -0.0676 -0.9965 -0.0488 -vn -0.4564 -0.7513 0.4766 -vn -0.4796 -0.8516 -0.2115 -vn -0.2511 -0.9630 0.0979 -vn -0.3318 -0.9159 0.2259 -vn -0.3009 -0.9111 0.2817 -vn -0.4321 -0.8086 0.3992 -vn -0.4521 -0.7893 0.4155 -vn -0.4407 -0.4416 0.7816 -vn -0.7468 -0.2161 0.6289 -vn -0.0359 -0.9993 0.0108 -vn 0.0046 -0.9996 0.0291 -vn -0.2459 0.6566 -0.7130 -vn -0.0767 -0.9906 0.1133 -vn 0.2604 -0.9425 0.2095 -vn 0.3011 -0.8874 0.3490 -vn 0.0169 -0.9995 0.0274 -vn -0.0441 -0.9975 0.0546 -vn -0.3764 -0.8785 0.2941 -vn -0.3256 -0.9192 -0.2213 -vn -0.3000 -0.9414 -0.1543 -vn -0.3568 -0.9310 0.0774 -vn -0.4362 -0.7257 0.5321 -vn -0.2744 0.3729 -0.8864 -vn -0.2851 -0.8460 0.4505 -vn 0.1060 -0.9927 -0.0578 -vn 0.1864 -0.8497 0.4932 -vn -0.0435 -0.9967 -0.0681 -vn -0.0731 -0.9857 -0.1515 -vn 0.0644 -0.9977 -0.0223 -vn -0.7144 -0.6770 -0.1770 -vn -0.3077 -0.9436 -0.1221 -vn 0.0346 -0.9977 0.0586 -vn -0.0108 -0.9998 -0.0146 -vn -0.2507 -0.9604 -0.1211 -vn -0.3859 -0.8153 0.4317 -vn -0.4015 -0.8281 0.3911 -vn -0.2420 -0.9700 0.0252 -vn 0.0240 -0.9997 -0.0040 -vn 0.2156 0.1482 0.9652 -vn -0.4743 -0.8595 0.1905 -vn -0.3013 -0.8616 0.4085 -vn 0.1554 -0.9671 -0.2013 -vn -0.0753 -0.9971 -0.0108 -vn -0.0244 -0.9996 -0.0173 -vn -0.0121 -0.9996 0.0261 -vn -0.6715 0.7151 0.1942 -vn 0.6047 -0.7853 0.1329 -vn -0.2400 -0.9700 -0.0392 -vn -0.1796 -0.9531 0.2437 -vn -0.3304 -0.9197 0.2120 -vn -0.2947 -0.9121 0.2848 -vn -0.3882 -0.4712 0.7920 -vn -0.7611 0.0063 0.6486 -vn 0.4767 -0.7013 0.5300 -vn -0.6606 -0.2480 -0.7086 -vn -0.0937 -0.9793 -0.1793 -vn -0.0463 -0.9976 0.0514 -vn -0.2540 -0.9325 0.2566 -vn -0.0178 -0.9998 -0.0014 -vn -0.8257 -0.5459 0.1418 -vn -0.2700 -0.8820 0.3861 -vn -0.3811 -0.7194 0.5807 -vn -0.0828 -0.9936 -0.0769 -vn -0.0806 -0.9963 0.0291 -vn -0.5393 -0.4426 0.7164 -vn 0.3153 -0.9207 -0.2299 -vn 0.3154 -0.9239 -0.2168 -vn 0.0098 -1.0000 0.0017 -vn 0.0385 -0.9983 0.0430 -vn -0.0224 -0.9995 0.0209 -vn -0.7314 -0.2690 -0.6267 -vn -0.2081 -0.9217 0.3274 -vn -0.2192 -0.8852 0.4102 -vn -0.2581 -0.8606 0.4390 -vn -0.2753 -0.8507 0.4478 -vn -0.3364 -0.7569 0.5602 -vn -0.3055 -0.6252 0.7182 -vn -0.2201 -0.9753 0.0178 -vn -0.0000 -0.9995 0.0320 -vn 0.2634 -0.9415 0.2102 -vn 0.2505 -0.9172 0.3099 -vn 0.1891 -0.9173 0.3506 -vn -0.0901 -0.9918 -0.0904 -vn -0.0319 -0.9908 -0.1316 -vn 0.0062 -1.0000 0.0033 -vn 0.0650 -0.9979 0.0079 -vn 0.1660 -0.2214 0.9610 -vn -0.1774 -0.9830 0.0480 -vn -0.2162 -0.9128 0.3466 -vn 0.0410 -0.9962 0.0766 -vn 0.0327 -0.9978 0.0571 -vn -0.0006 -0.9997 -0.0246 -vn 0.3910 -0.8280 0.4018 -vn -0.0343 -0.9981 0.0520 -vn 0.3342 0.9411 0.0515 -vn -0.3062 -0.8377 0.4522 -vn -0.5103 -0.8213 -0.2552 -vn -0.4523 -0.8063 0.3811 -vn -0.1245 -0.7536 0.6455 -vn 0.3901 -0.5808 -0.7145 -vn 0.0260 -0.9945 -0.1011 -vn -0.0071 -0.9972 -0.0741 -vn -0.0567 -0.9981 0.0248 -vn -0.1574 -0.9797 0.1245 -vn -0.7817 -0.6130 -0.1144 -vn -0.5404 -0.8361 -0.0940 -vn -0.9285 -0.2878 -0.2348 -vn -0.0928 -0.9908 0.0990 -vn 0.1961 -0.0912 0.9763 -vn -0.6818 0.2162 -0.6988 -vn 0.1616 -0.9834 0.0824 -vn 0.0390 -0.9940 -0.1021 -vn -0.4518 -0.8594 -0.2395 -vn -0.7569 -0.5947 -0.2711 -vn -0.5986 -0.7935 -0.1098 -vn -0.5775 -0.6961 -0.4265 -vn 0.0117 -0.9999 0.0068 -vn -0.0187 -0.9996 0.0209 -vn -0.1590 -0.9814 0.1074 -vn -0.4407 -0.8849 -0.1507 -vn 0.6452 -0.7398 0.1909 -vn 0.7151 -0.6762 0.1770 -vn -0.4414 -0.8938 -0.0786 -vn -0.5016 -0.8639 0.0462 -vn 0.0071 -0.9997 -0.0213 -vn -0.2370 -0.7139 0.6589 -vn -0.2676 -0.6358 0.7240 -vn -0.2772 -0.6304 0.7251 -vn 0.0350 -0.9993 -0.0124 -vn -0.2795 -0.9199 -0.2751 -vn -0.2447 -0.9689 -0.0365 -vn -0.1933 -0.9579 -0.2123 -vn -0.1261 -0.9919 -0.0173 -vn -0.0707 -0.9904 -0.1187 -vn -0.0061 -1.0000 0.0063 -vn -0.0550 -0.9982 0.0251 -vn -0.4270 -0.8918 -0.1495 -vn 0.0278 -0.9972 0.0690 -vn -0.7389 0.3966 0.5447 -vn -0.2005 -0.9527 -0.2284 -vn -0.0985 -0.9881 -0.1184 -vn -0.1386 -0.9829 -0.1209 -vn 0.0033 -1.0000 0.0032 -vn 0.0377 -0.9992 -0.0112 -vn 0.0286 -0.9995 0.0114 -vn 0.0477 -0.9986 -0.0215 -vn -0.0240 -0.9996 0.0125 -vn 0.0030 -0.9995 0.0326 -vn 0.0184 -0.9994 -0.0279 -vn -0.0641 -0.9979 0.0109 -vn -0.0478 -0.9980 0.0405 -vn -0.1050 -0.9935 0.0435 -vn -0.0372 -0.9962 -0.0791 -vn -0.2815 -0.9545 0.0987 -vn -0.2391 -0.9333 0.2679 -vn -0.2222 -0.8362 0.5014 -vn -0.1902 -0.7576 0.6244 -vn 0.1054 0.2526 -0.9618 -vn 0.4193 -0.9024 -0.0990 -vn 0.0504 -0.9981 0.0358 -vn 0.0229 -0.9995 0.0231 -vn 0.0004 -0.9994 0.0358 -vn 0.0201 -0.9989 -0.0413 -vn 0.0151 -0.9998 0.0151 -vn -0.0419 -0.9990 0.0182 -vn -0.8253 -0.4619 0.3250 -vn -0.3849 -0.7432 -0.5473 -vn 0.5276 -0.8484 -0.0426 -vn 0.0301 -0.5740 0.8183 -vn 0.0155 -0.9999 -0.0041 -vn 0.0343 -0.9993 -0.0127 -vn -0.1822 -0.4683 0.8646 -vn -0.1348 -0.9724 0.1904 -vn 0.0240 -0.9990 0.0372 -vn 0.0014 -0.9958 -0.0919 -vn -0.0186 -0.9980 -0.0606 -vn 0.0509 -0.9987 0.0090 -vn -0.0206 -0.9995 0.0255 -vn 0.0002 -0.9986 0.0521 -vn -0.3030 -0.9484 0.0935 -vn -0.4641 -0.8516 0.2437 -vn -0.1827 -0.8564 0.4830 -vn -0.3145 -0.9486 0.0339 -vn -0.0003 -0.9999 -0.0138 -vn 0.0283 -0.9993 0.0234 -vn 0.0456 -0.9987 -0.0218 -vn 0.5594 -0.8031 0.2049 -vn -0.0885 -0.9950 0.0471 -vn -0.0916 -0.9957 0.0165 -vn -0.1163 -0.8452 0.5217 -vn -0.2504 -0.5641 0.7868 -vn -0.4333 -0.8801 -0.1942 -vn -0.0056 -0.9956 0.0939 -vn -0.6797 -0.6096 -0.4079 -vn 0.0579 -0.9964 0.0614 -vn -0.2195 -0.9682 -0.1204 -vn -0.0558 -0.9958 -0.0720 -vn 0.0244 -0.9994 0.0257 -vn 0.0691 -0.9961 0.0553 -vn 0.1306 -0.9914 -0.0122 -vn 0.0237 -0.9995 0.0195 -vn 0.0492 -0.9986 -0.0187 -vn 0.2384 -0.9599 0.1472 -vn -0.1215 -0.9712 0.2051 -vn 0.2245 -0.8229 0.5220 -vn -0.4974 -0.8675 -0.0049 -vn -0.3508 -0.9008 0.2558 -vn -0.0309 -0.9994 0.0174 -vn 0.0035 -0.9968 0.0802 -vn -0.2675 -0.8458 -0.4616 -vn -0.1595 -0.7588 0.6314 -vn -0.6772 -0.6312 -0.3780 -vn 0.3818 -0.9174 -0.1124 -vn 0.3778 -0.9212 -0.0932 -vn 0.2053 -0.9656 0.1598 -vn 0.2457 -0.9663 0.0764 -vn 0.1765 -0.9842 0.0130 -vn 0.0513 -0.9985 0.0186 -vn 0.0099 -0.9994 0.0346 -vn -0.2066 -0.9057 0.3702 -vn -0.7923 -0.5684 0.2216 -vn -0.0690 -0.6976 0.7131 -vn 0.0492 -0.4910 0.8698 -vn -0.0166 -0.5454 0.8380 -vn 0.0365 -0.5726 0.8190 -vn 0.4688 -0.8394 0.2751 -vn 0.1162 -0.9652 0.2342 -vn 0.5231 -0.8341 0.1749 -vn 0.6211 -0.7386 0.2621 -vn 0.5465 -0.8373 0.0155 -vn 0.1563 -0.9842 -0.0827 -vn 0.0324 -0.9994 0.0101 -vn 0.0095 -0.9990 -0.0447 -vn 0.0091 -0.9983 -0.0572 -vn -0.0274 -0.9990 -0.0362 -vn 0.3840 -0.7524 0.5353 -vn 0.3793 -0.7443 0.5496 -vn -0.0330 -0.9956 0.0876 -vn -0.2641 -0.9521 0.1540 -vn -0.4177 0.3847 -0.8231 -vn -0.2514 -0.6011 0.7586 -vn -0.2324 -0.6848 0.6907 -vn 0.0496 -0.9988 -0.0023 -vn 0.6249 -0.7315 0.2727 -vn 0.0085 -0.9998 0.0171 -vn -0.0014 -0.9998 0.0196 -vn 0.0800 -0.9647 0.2508 -vn 0.7631 -0.6240 0.1680 -vn 0.0020 -0.9996 0.0269 -vn 0.0063 -0.9997 0.0215 -vn -0.5396 -0.4081 0.7364 -vn 0.4177 -0.7344 0.5350 -vn -0.6118 -0.0585 -0.7888 -vn -0.0548 -0.6960 0.7159 -vn 0.1472 0.1297 0.9806 -vn 0.5340 -0.7291 0.4280 -vn 0.3546 -0.8373 0.4160 -vn 0.5941 -0.6572 0.4639 -vn 0.5944 -0.6581 0.4622 -vn 0.6930 -0.6626 0.2841 -vn 0.6981 -0.6583 0.2816 -vn 0.7844 -0.5993 0.1597 -vn 0.0513 -0.9908 0.1252 -vn -0.0993 -0.6349 0.7662 -vn -0.0738 -0.9946 0.0732 -vn -0.0484 -0.9795 0.1958 -vn -0.0929 -0.9804 0.1735 -vn -0.1142 -0.9191 0.3770 -vn -0.6274 -0.3493 0.6960 -vn -0.7224 0.0478 0.6898 -vn 0.2171 -0.7596 0.6130 -vn -0.7173 -0.6468 0.2593 -vn -0.1338 -0.7545 0.6426 -vn -0.0054 -0.9999 0.0157 -vn -0.0440 -0.9984 0.0359 -vn 0.4330 -0.6782 0.5937 -vn 0.3834 -0.6483 0.6578 -vn 0.0046 -0.9998 0.0192 -vn -0.1342 -0.9859 0.1001 -vn -0.0631 -0.4759 0.8772 -vn -0.4561 -0.4729 0.7539 -vn -0.5159 -0.3874 0.7640 -vn -0.4962 -0.3339 0.8014 -vn 0.0742 -0.9970 -0.0206 -vn 0.0379 -0.9992 -0.0125 -vn 0.0469 -0.9681 0.2463 -vn -0.3715 -0.1219 0.9204 -vn -0.0270 -0.9991 0.0326 -vn -0.0184 -0.9998 0.0062 -vn 0.0292 -0.9993 0.0253 -vn -0.8978 -0.3122 -0.3105 -vn 0.4706 -0.0236 0.8820 -vn 0.0485 -0.9983 -0.0310 -vn 0.0264 -0.9974 0.0673 -vn 0.0735 -0.8901 0.4498 -vn 0.0240 -0.7852 0.6188 -vn 0.2881 -0.6677 0.6864 -vn 0.1557 -0.9847 0.0784 -vn 0.1127 -0.9871 0.1140 -vn 0.1105 -0.9938 0.0152 -vn 0.0132 -0.9985 -0.0529 -vn -0.2163 -0.7490 0.6262 -vn 0.0360 -0.9989 0.0288 -vn -0.0174 -0.8368 0.5472 -vn 0.2669 -0.8900 -0.3696 -vn -0.3773 -0.3601 0.8532 -vn 0.0278 -0.9996 -0.0108 -vn -0.8780 0.2303 -0.4197 -vn 0.4087 -0.9123 0.0254 -vn 0.3071 -0.9223 0.2346 -vn 0.0901 -0.9937 0.0667 -vn 0.0361 -0.9990 -0.0252 -vn 0.0250 -0.9997 0.0085 -vn -0.1112 -0.9733 0.2009 -vn 0.0363 -0.9991 0.0222 -vn 0.2995 -0.9366 0.1821 -vn 0.3690 -0.9075 0.2009 -vn -0.4060 -0.3709 0.8352 -vn 0.0307 -0.9993 0.0227 -vn 0.0308 -0.9957 0.0879 -vn 0.0205 -0.9938 0.1091 -vn -0.4707 -0.6511 0.5954 -vn 0.0086 -0.9989 0.0463 -vn 0.0791 -0.5222 0.8491 -vn 0.0560 -0.9034 0.4251 -vn 0.0375 -0.9989 -0.0298 -vn -0.2665 -0.7020 0.6604 -vn -0.0338 -0.9806 0.1929 -vn -0.0847 -0.9612 0.2627 -vn 0.1117 -0.9890 -0.0967 -vn 0.3627 -0.7465 0.5579 -vn 0.1374 -0.9905 -0.0012 -vn 0.2600 -0.7949 0.5483 -vn 0.0500 -0.9987 -0.0119 -vn 0.4934 -0.6512 0.5766 -vn -0.0892 -0.8003 0.5929 -vn 0.0548 -0.5419 0.8386 -vn 0.1136 -0.9111 0.3963 -vn -0.0400 -0.9989 -0.0244 -vn 0.0128 -0.9999 0.0095 -vn -0.4772 -0.6454 0.5964 -vn -0.0340 -0.9983 0.0471 -vn 0.0283 -0.9991 -0.0311 -vn -0.0073 -0.9982 0.0591 -vn -0.1048 -0.7512 0.6517 -vn 0.0254 -0.9968 0.0757 -vn -0.0096 -0.9986 -0.0527 -vn 0.0271 -0.9996 0.0085 -vn -0.2907 -0.7162 0.6345 -vn 0.0119 -0.9997 0.0230 -vn 0.0078 -0.9996 0.0268 -vn -0.0062 -0.9999 0.0107 -vn 0.0379 -0.8292 0.5577 -vn -0.7795 -0.5304 0.3334 -vn -0.5143 -0.7884 -0.3375 -vn 0.4547 -0.8903 -0.0245 -vn -0.0238 -0.9996 -0.0133 -vn 0.0395 -0.9988 -0.0282 -vn 0.4386 -0.7755 0.4542 -vn 0.0240 -0.9975 0.0669 -vn -0.4490 -0.8893 0.0863 -vn 0.0977 -0.5426 0.8343 -vn -0.0051 -0.9994 -0.0328 -vn 0.2600 -0.8161 0.5161 -vn -0.0597 -0.5402 0.8394 -vn 0.0036 -0.9632 0.2689 -vn -0.0200 -0.9996 -0.0215 -vn 0.0196 -0.9986 -0.0501 -vn 0.0176 -0.9998 0.0010 -vn 0.0138 -0.9998 -0.0170 -vn -0.5514 -0.6358 0.5401 -vn 0.1266 -0.9713 0.2013 -vn -0.1615 -0.9869 0.0020 -vn 0.0251 -0.9991 -0.0336 -vn -0.2997 -0.4743 0.8278 -vn 0.0402 -0.9991 -0.0119 -vn 0.0468 -0.9978 0.0479 -vn -0.1632 -0.9856 -0.0452 -vn 0.0260 -0.9993 0.0261 -vn -0.0229 -0.9983 0.0531 -vn -0.0912 -0.8012 0.5915 -vn -0.0817 -0.5049 0.8593 -vn -0.0922 -0.8393 0.5358 -vn 0.0414 -0.9989 -0.0239 -vn -0.0077 -0.9999 -0.0088 -vn -0.5913 -0.6970 0.4057 -vn 0.0708 -0.9804 0.1841 -vn 0.0225 -0.9645 0.2631 -vn 0.0039 -1.0000 0.0000 -vn -0.3233 -0.4238 0.8461 -vn 0.0299 -0.9984 0.0482 -vn -0.0175 -0.9986 0.0490 -vn 0.0107 -0.9995 -0.0287 -vn -0.0208 -0.9991 -0.0377 -vn -0.6208 -0.6793 0.3914 -vn -0.0187 -0.9995 0.0266 -vn -0.9951 0.0193 0.0969 -usemtl Material.001 -s off -f 2826/1/1 2535/2/1 2060/3/1 -f 1095/4/2 228/5/2 1078/6/2 -f 429/7/3 456/8/3 385/9/3 -f 2331/10/4 456/8/4 429/7/4 -f 1229/11/5 476/12/5 1456/13/5 -f 1402/14/6 1373/15/6 9/16/6 -f 1334/17/7 444/18/7 1243/19/7 -f 3464/20/8 3508/21/8 3446/22/8 -f 1243/19/9 444/18/9 1345/23/9 -f 1530/24/10 36/25/10 1540/26/10 -f 1287/27/11 1227/28/11 1261/29/11 -f 228/5/12 1095/4/12 1214/30/12 -f 471/31/13 312/32/13 1241/33/13 -f 1434/34/14 13/35/14 352/36/14 -f 294/37/15 1345/23/15 552/38/15 -f 1403/39/16 1402/14/16 9/16/16 -f 1459/40/17 1602/41/17 1138/42/17 -f 2341/43/18 1225/44/18 1219/45/18 -f 1461/46/19 1906/47/19 251/48/19 -f 1229/11/20 325/49/20 414/50/20 -f 1292/51/21 1338/52/21 1370/53/21 -f 1421/54/22 1450/55/22 104/56/22 -f 1766/57/23 1981/58/23 1869/59/23 -f 1338/52/24 1381/60/24 1370/53/24 -f 1416/61/25 1433/62/25 1418/63/25 -f 2298/64/26 2968/65/26 2978/66/26 -f 3033/67/27 2972/68/27 2952/69/27 -f 1539/70/28 265/71/28 1701/72/28 -f 173/73/29 1356/74/29 1352/75/29 -f 1332/76/30 1331/77/30 1254/78/30 -f 1806/79/31 158/80/31 1747/81/31 -f 1138/42/32 1602/41/32 1179/82/32 -f 1419/83/33 1434/34/33 352/36/33 -f 298/84/34 328/85/34 191/86/34 -f 2030/87/35 2016/88/35 2042/89/35 -f 1451/90/36 1456/13/36 476/12/36 -f 3506/91/37 3427/92/37 3444/93/37 -f 2331/10/38 429/7/38 345/94/38 -f 3084/95/39 2438/96/39 2428/97/39 -f 1456/13/40 1334/17/40 1234/98/40 -f 47/99/41 1277/100/41 1141/101/41 -f 1299/102/42 1234/98/42 1243/19/42 -f 156/103/43 1229/11/43 414/50/43 -f 1234/98/44 1334/17/44 1243/19/44 -f 1372/104/45 1234/98/45 1299/102/45 -f 3294/105/46 3279/106/46 3280/107/46 -f 1974/108/47 1976/109/47 1975/110/47 -f 1088/111/48 1108/112/48 1855/113/48 -f 737/114/49 1348/115/49 2103/116/49 -f 2015/117/50 2016/88/50 2030/87/50 -f 1334/17/51 1310/118/51 444/18/51 -f 1456/13/52 1234/98/52 1372/104/52 -f 174/119/53 1627/120/53 2819/121/53 -f 459/122/54 514/123/54 1265/124/54 -f 2292/125/55 1120/126/55 2343/127/55 -f 1441/128/56 1386/129/56 10/130/56 -f 104/56/57 1450/55/57 1441/128/57 -f 480/131/58 1421/54/58 382/132/58 -f 2292/133/59 964/134/59 1120/135/59 -f 1285/136/60 1292/51/60 1370/53/60 -f 1374/137/61 1399/138/61 1113/139/61 -f 1162/140/62 783/141/62 823/142/62 -f 113/143/63 902/144/63 365/145/63 -f 1262/146/64 365/145/64 1435/147/64 -f 1346/148/65 1423/149/65 1300/150/65 -f 1380/151/66 396/152/66 1403/39/66 -f 1358/153/67 1263/154/67 1452/155/67 -f 1358/153/68 1315/156/68 1263/154/68 -f 1275/157/69 1316/158/69 1305/159/69 -f 2198/160/70 2227/161/70 2203/162/70 -f 1381/60/71 1419/83/71 352/36/71 -f 1348/115/72 1204/163/72 1308/164/72 -f 3342/165/73 3326/166/73 3305/167/73 -f 118/168/74 119/169/74 1644/170/74 -f 1409/171/75 1321/172/75 1406/173/75 -f 1869/59/76 1862/174/76 1377/175/76 -f 1799/176/77 1817/177/77 1845/178/77 -f 197/179/78 1249/180/78 44/181/78 -f 1232/182/79 1231/183/79 1260/184/79 -f 577/185/80 2120/186/80 2088/187/80 -f 1979/188/81 1978/189/81 2071/190/81 -f 1267/191/82 1285/192/82 1217/193/82 -f 183/194/83 296/195/83 118/168/83 -f 296/195/84 119/169/84 118/168/84 -f 446/196/85 394/197/85 1550/198/85 -f 158/80/86 1325/199/86 1319/200/86 -f 1747/81/87 1158/201/87 1806/79/87 -f 42/202/88 1372/104/88 134/203/88 -f 271/204/89 1241/33/89 1593/205/89 -f 2750/206/90 2793/207/90 2762/208/90 -f 80/209/91 664/210/91 58/211/91 -f 16/212/92 394/197/92 446/196/92 -f 159/213/93 1685/214/93 1682/215/93 -f 382/132/94 1321/172/94 1409/171/94 -f 445/216/95 282/217/95 1685/218/95 -f 2016/88/96 2057/219/96 2042/89/96 -f 1842/220/97 2549/221/97 2574/222/97 -f 352/36/98 13/35/98 12/223/98 -f 2858/224/99 3429/225/99 2767/226/99 -f 1440/227/100 1424/228/100 1332/76/100 -f 346/229/101 382/132/101 21/230/101 -f 21/230/102 382/132/102 270/231/102 -f 1974/108/103 1958/232/103 1976/109/103 -f 1543/233/104 1493/234/104 48/235/104 -f 9/16/105 1256/236/105 1227/28/105 -f 2005/237/106 2016/88/106 2015/117/106 -f 2761/238/107 2791/239/107 2790/240/107 -f 296/195/108 446/196/108 119/169/108 -f 16/212/109 159/213/109 394/197/109 -f 2034/241/110 1570/242/110 1895/243/110 -f 3437/244/111 2424/245/111 3504/246/111 -f 1429/247/112 1295/248/112 1231/249/112 -f 2887/250/113 1703/251/113 1769/252/113 -f 2810/253/114 2809/254/114 2775/255/114 -f 1451/90/115 299/256/115 1456/13/115 -f 104/56/116 1441/128/116 1346/148/116 -f 1232/182/117 1258/257/117 1230/258/117 -f 982/259/118 182/260/118 1147/261/118 -f 10/130/119 1386/129/119 77/262/119 -f 2735/263/120 2699/264/120 2674/265/120 -f 2609/266/121 2434/267/121 2600/268/121 -f 3472/269/122 3461/270/122 2548/271/122 -f 1988/272/123 1439/273/123 2021/274/123 -f 446/196/124 903/275/124 16/212/124 -f 492/276/125 1685/214/125 159/213/125 -f 1093/277/126 1211/278/126 1212/279/126 -f 1163/280/127 3470/281/127 986/282/127 -f 1321/172/128 104/56/128 1406/173/128 -f 1467/283/129 1346/148/129 1300/150/129 -f 1719/284/130 931/285/130 1620/286/130 -f 2615/287/131 2781/288/131 2467/289/131 -f 1593/205/132 1440/290/132 271/204/132 -f 1458/291/133 480/131/133 346/229/133 -f 3024/292/134 3046/293/134 2962/294/134 -f 443/295/135 527/296/135 296/195/135 -f 296/195/136 527/296/136 446/196/136 -f 527/296/137 891/297/137 446/196/137 -f 446/196/138 891/297/138 903/275/138 -f 3511/298/139 3437/299/139 3463/300/139 -f 903/275/140 159/213/140 16/212/140 -f 986/282/141 3470/281/141 1132/301/141 -f 700/302/142 1076/303/142 719/304/142 -f 1093/277/143 1039/305/143 1211/278/143 -f 346/229/144 480/131/144 382/132/144 -f 1441/128/145 10/130/145 1346/148/145 -f 2117/306/146 737/114/146 2082/307/146 -f 3190/308/147 3241/309/147 3173/310/147 -f 1697/311/148 3479/312/148 3425/313/148 -f 3336/314/149 407/315/149 443/295/149 -f 76/316/150 527/296/150 443/295/150 -f 903/275/151 261/317/151 159/213/151 -f 2161/318/152 985/319/152 1026/320/152 -f 429/7/153 385/9/153 480/131/153 -f 2069/321/154 2048/322/154 2121/323/154 -f 1180/324/155 3500/325/155 3485/326/155 -f 493/327/156 507/328/156 481/329/156 -f 407/315/157 76/316/157 443/295/157 -f 76/316/158 376/330/158 527/296/158 -f 376/330/159 886/331/159 527/296/159 -f 527/296/160 886/331/160 891/297/160 -f 1208/332/161 1207/333/161 1193/334/161 -f 3246/335/162 3262/336/162 3216/337/162 -f 2093/338/163 2085/339/163 1978/340/163 -f 315/341/164 409/342/164 814/343/164 -f 1353/344/165 1357/345/165 1238/346/165 -f 2345/347/166 346/229/166 1472/348/166 -f 1204/163/167 1348/115/167 737/114/167 -f 346/229/168 21/230/168 1472/348/168 -f 1406/173/169 1346/148/169 1467/283/169 -f 3433/349/170 3501/350/170 3443/351/170 -f 261/317/171 727/352/171 159/213/171 -f 159/213/172 727/352/172 492/276/172 -f 3505/353/173 3445/354/173 3476/355/173 -f 316/356/174 362/357/174 783/141/174 -f 1002/358/175 3495/359/175 1153/360/175 -f 2594/361/176 2634/362/176 2607/363/176 -f 1321/172/177 1421/54/177 104/56/177 -f 1981/58/178 1154/364/178 1869/59/178 -f 1564/365/179 516/366/179 493/327/179 -f 516/366/180 3222/367/180 493/327/180 -f 478/368/181 488/369/181 468/370/181 -f 2812/371/182 2844/372/182 2828/373/182 -f 90/374/183 91/375/183 112/376/183 -f 154/377/184 136/378/184 103/379/184 -f 345/94/185 429/7/185 1458/291/185 -f 429/7/186 480/131/186 1458/291/186 -f 447/380/187 1564/365/187 1640/381/187 -f 2096/382/188 1894/383/188 2857/384/188 -f 516/366/189 531/385/189 3222/367/189 -f 469/386/190 478/368/190 468/370/190 -f 376/330/191 76/316/191 407/315/191 -f 65/387/192 89/388/192 111/389/192 -f 66/390/193 67/391/193 90/374/193 -f 38/392/194 39/393/194 66/394/194 -f 39/395/195 38/396/195 27/397/195 -f 3471/398/196 3493/399/196 3456/400/196 -f 347/401/197 911/402/197 405/403/197 -f 1018/404/198 1045/405/198 1013/406/198 -f 1762/407/199 1724/408/199 1981/58/199 -f 385/9/200 1229/11/200 156/103/200 -f 2120/409/201 1978/189/201 1979/188/201 -f 1409/171/202 1406/173/202 1375/410/202 -f 1375/410/203 1406/173/203 1467/283/203 -f 397/411/204 398/412/204 1640/381/204 -f 542/413/205 531/385/205 516/366/205 -f 171/414/206 281/415/206 490/416/206 -f 1207/417/207 1181/418/207 1175/419/207 -f 1041/420/208 1319/200/208 1215/421/208 -f 3474/422/209 3446/22/209 3489/423/209 -f 1123/424/210 1146/425/210 1115/426/210 -f 1042/427/211 3478/428/211 1148/429/211 -f 382/132/212 1421/54/212 1321/172/212 -f 396/152/213 1402/14/213 1403/39/213 -f 1472/348/214 21/230/214 1471/430/214 -f 399/431/215 398/412/215 397/411/215 -f 447/380/216 516/366/216 1564/365/216 -f 653/432/217 542/413/217 516/366/217 -f 310/433/218 258/434/218 259/435/218 -f 181/436/219 157/437/219 703/438/219 -f 133/439/220 153/440/220 132/441/220 -f 490/416/221 237/442/221 1300/443/221 -f 40/444/222 67/445/222 39/393/222 -f 33/446/223 40/447/223 27/397/223 -f 67/445/224 66/394/224 39/393/224 -f 40/447/225 39/395/225 27/397/225 -f 988/448/226 998/449/226 978/450/226 -f 112/376/227 89/388/227 90/374/227 -f 1211/278/228 1039/305/228 922/451/228 -f 1156/452/229 1195/453/229 1146/425/229 -f 456/8/230 190/454/230 476/12/230 -f 664/455/231 1811/456/231 1525/457/231 -f 1909/458/232 2442/459/232 2414/460/232 -f 460/461/233 1640/381/233 398/412/233 -f 1640/381/234 460/461/234 447/380/234 -f 482/462/235 516/366/235 447/380/235 -f 260/463/236 293/464/236 240/465/236 -f 489/466/237 899/467/237 525/468/237 -f 186/469/238 212/470/238 200/471/238 -f 240/465/239 266/472/239 247/473/239 -f 324/474/240 359/475/240 323/476/240 -f 588/477/241 38/396/241 53/478/241 -f 196/479/242 200/471/242 224/480/242 -f 123/481/243 131/482/243 116/483/243 -f 157/437/244 181/436/244 187/484/244 -f 266/472/245 324/474/245 310/433/245 -f 703/438/246 157/437/246 153/440/246 -f 703/438/247 153/440/247 133/439/247 -f 726/485/248 946/486/248 1330/487/248 -f 1083/488/249 438/489/249 1127/490/249 -f 1176/491/250 1155/492/250 1199/493/250 -f 783/141/251 362/357/251 120/494/251 -f 1456/13/252 299/256/252 1334/17/252 -f 325/49/253 1372/104/253 42/202/253 -f 137/495/254 290/496/254 3/497/254 -f 341/498/255 354/499/255 399/431/255 -f 400/500/256 398/412/256 399/431/256 -f 482/462/257 447/380/257 460/461/257 -f 482/462/258 653/432/258 516/366/258 -f 293/464/259 266/472/259 240/465/259 -f 142/501/260 152/502/260 151/503/260 -f 153/440/261 152/502/261 132/441/261 -f 248/504/262 171/414/262 227/505/262 -f 123/481/263 151/503/263 168/506/263 -f 133/439/264 132/441/264 124/507/264 -f 101/508/265 124/507/265 91/375/265 -f 260/463/266 225/509/266 840/510/266 -f 1201/511/267 1093/277/267 1212/279/267 -f 1093/277/268 1143/512/268 1091/513/268 -f 595/514/269 697/515/269 842/516/269 -f 1013/406/270 1061/517/270 1037/518/270 -f 299/256/271 1228/519/271 1334/17/271 -f 1314/520/272 444/18/272 1310/118/272 -f 1314/520/273 213/521/273 444/18/273 -f 3103/522/274 3145/523/274 3144/524/274 -f 341/498/275 331/525/275 354/499/275 -f 354/499/276 400/500/276 399/431/276 -f 400/500/277 460/461/277 398/412/277 -f 151/503/278 152/502/278 180/526/278 -f 2964/527/279 2983/528/279 2974/529/279 -f 2458/530/280 979/531/280 2488/532/280 -f 117/533/281 123/481/281 116/483/281 -f 454/534/282 441/535/282 468/536/282 -f 911/402/283 938/537/283 406/538/283 -f 406/538/284 938/537/284 418/539/284 -f 1605/540/285 1617/541/285 1854/542/285 -f 1237/543/286 506/544/286 106/545/286 -f 331/525/287 355/546/287 354/499/287 -f 420/547/288 460/461/288 400/500/288 -f 103/379/289 3218/548/289 661/549/289 -f 310/433/290 323/476/290 309/550/290 -f 636/551/291 101/508/291 75/552/291 -f 425/553/292 470/554/292 442/555/292 -f 501/556/293 547/557/293 513/558/293 -f 1394/559/294 1408/560/294 1404/561/294 -f 3182/562/295 2043/563/295 1489/564/295 -f 2709/565/296 263/566/296 3386/567/296 -f 355/546/297 400/500/297 354/499/297 -f 483/568/298 482/462/298 460/461/298 -f 483/568/299 517/569/299 482/462/299 -f 517/569/300 653/432/300 482/462/300 -f 517/569/301 532/570/301 653/432/301 -f 1162/140/302 823/142/302 377/571/302 -f 547/557/303 125/572/303 79/573/303 -f 1384/574/304 501/556/304 680/575/304 -f 959/576/305 954/577/305 3029/578/305 -f 424/579/306 441/535/306 454/534/306 -f 2696/580/307 964/581/307 2292/125/307 -f 556/582/308 162/583/308 548/584/308 -f 393/585/309 440/586/309 416/587/309 -f 1379/588/310 182/260/310 982/259/310 -f 1785/589/311 1575/590/311 1796/591/311 -f 2104/592/312 2047/593/312 1378/594/312 -f 1243/19/313 1345/23/313 268/595/313 -f 284/596/314 331/525/314 263/566/314 -f 284/596/315 332/597/315 331/525/315 -f 332/597/316 355/546/316 331/525/316 -f 420/547/317 483/568/317 460/461/317 -f 488/369/318 537/598/318 477/599/318 -f 248/504/319 227/505/319 554/600/319 -f 1195/453/320 1194/601/320 1166/602/320 -f 101/508/321 91/375/321 75/552/321 -f 162/583/322 1389/603/322 782/604/322 -f 2082/307/323 737/114/323 2103/116/323 -f 328/605/324 329/606/324 1335/607/324 -f 385/9/325 156/103/325 1421/54/325 -f 190/454/326 456/8/326 2361/608/326 -f 366/609/327 400/500/327 355/546/327 -f 421/610/328 420/547/328 400/500/328 -f 430/611/329 483/568/329 420/547/329 -f 508/612/330 517/569/330 483/568/330 -f 517/569/331 564/613/331 532/570/331 -f 532/570/332 564/613/332 563/614/332 -f 124/507/333 112/376/333 91/375/333 -f 3503/615/334 3502/616/334 1042/427/334 -f 53/617/335 54/618/335 74/619/335 -f 1372/104/336 1299/102/336 134/203/336 -f 244/620/337 274/621/337 263/566/337 -f 263/566/338 274/621/338 284/596/338 -f 274/621/339 332/597/339 284/596/339 -f 421/610/340 430/611/340 420/547/340 -f 680/575/341 513/558/341 522/622/341 -f 488/623/342 477/624/342 1354/625/342 -f 323/476/343 359/475/343 393/585/343 -f 455/626/344 470/554/344 469/386/344 -f 1631/627/345 1912/628/345 1531/629/345 -f 227/505/346 171/414/346 326/630/346 -f 74/619/347 65/631/347 53/617/347 -f 998/449/348 968/632/348 954/577/348 -f 478/633/349 523/634/349 488/623/349 -f 316/356/350 558/635/350 2393/636/350 -f 1433/62/351 1463/637/351 1462/638/351 -f 329/606/352 1380/151/352 1287/27/352 -f 356/639/353 355/546/353 332/597/353 -f 356/639/354 366/609/354 355/546/354 -f 366/609/355 386/640/355 400/500/355 -f 494/641/356 483/568/356 430/611/356 -f 543/642/357 564/613/357 517/569/357 -f 528/643/358 563/614/358 564/613/358 -f 417/644/359 424/645/359 440/586/359 -f 468/370/360 488/369/360 1354/646/360 -f 911/402/361 406/538/361 405/403/361 -f 609/647/362 67/445/362 40/444/362 -f 123/481/363 142/501/363 151/503/363 -f 1441/128/364 42/202/364 1386/129/364 -f 1287/27/365 1380/151/365 1403/39/365 -f 2592/648/366 2424/245/366 3437/244/366 -f 1657/649/367 2625/650/367 1662/651/367 -f 2753/652/368 2723/653/368 2640/654/368 -f 366/609/369 378/655/369 386/640/369 -f 400/500/370 386/640/370 421/610/370 -f 494/641/371 508/612/371 483/568/371 -f 508/612/372 543/642/372 517/569/372 -f 212/470/373 224/480/373 200/471/373 -f 3445/354/374 3511/298/374 3497/656/374 -f 1171/657/375 558/635/375 316/356/375 -f 90/658/376 89/659/376 74/619/376 -f 168/506/377 180/526/377 167/660/377 -f 154/377/378 160/661/378 136/378/378 -f 3506/91/379 2768/662/379 3427/92/379 -f 3494/663/380 3475/664/380 3459/665/380 -f 251/48/381 1906/47/381 262/666/381 -f 1525/667/382 1549/668/382 58/211/382 -f 1228/519/383 1310/118/383 1334/17/383 -f 2769/669/384 2615/287/384 2467/289/384 -f 252/670/385 244/620/385 3287/671/385 -f 274/621/386 285/672/386 332/597/386 -f 332/597/387 285/672/387 356/639/387 -f 356/639/388 378/655/388 366/609/388 -f 421/610/389 431/673/389 430/611/389 -f 431/673/390 494/641/390 430/611/390 -f 240/465/391 247/473/391 212/470/391 -f 125/572/392 281/415/392 171/414/392 -f 310/433/393 324/474/393 323/476/393 -f 202/674/394 756/675/394 144/676/394 -f 2643/677/395 1928/678/395 2879/679/395 -f 2894/680/396 2615/287/396 2766/681/396 -f 3287/671/397 3095/682/397 252/670/397 -f 3371/683/398 3381/684/398 3370/685/398 -f 300/686/399 274/621/399 244/620/399 -f 274/621/400 300/686/400 285/672/400 -f 342/687/401 378/655/401 356/639/401 -f 285/672/402 342/687/402 356/639/402 -f 494/641/403 543/642/403 508/612/403 -f 543/642/404 544/688/404 564/613/404 -f 544/688/405 541/689/405 564/613/405 -f 564/613/406 541/689/406 528/643/406 -f 470/690/407 524/691/407 469/692/407 -f 418/539/408 442/555/408 441/693/408 -f 201/694/409 2168/695/409 427/696/409 -f 454/534/410 1313/697/410 424/579/410 -f 225/509/411 260/463/411 181/436/411 -f 2264/698/412 3479/312/412 2253/699/412 -f 425/553/413 426/700/413 470/554/413 -f 142/501/414 123/481/414 117/533/414 -f 2552/701/415 1071/702/415 1059/703/415 -f 3457/704/416 2754/705/416 3482/706/416 -f 20/707/417 2067/708/417 2047/593/417 -f 126/709/418 155/710/418 154/377/418 -f 583/711/419 22/712/419 1488/713/419 -f 23/714/420 22/712/420 583/711/420 -f 22/712/421 23/714/421 36/715/421 -f 155/710/422 172/716/422 154/377/422 -f 1540/26/423 36/25/423 1549/668/423 -f 252/670/424 300/686/424 244/620/424 -f 300/686/425 342/687/425 285/672/425 -f 386/640/426 411/717/426 421/610/426 -f 421/610/427 411/717/427 431/673/427 -f 111/389/428 89/388/428 116/483/428 -f 470/690/429 489/718/429 524/691/429 -f 524/719/430 489/466/430 556/582/430 -f 548/584/431 162/583/431 782/604/431 -f 203/720/432 437/721/432 750/722/432 -f 1127/490/433 438/489/433 1133/723/433 -f 2607/363/434 2634/362/434 2652/724/434 -f 1804/725/435 1778/726/435 1779/727/435 -f 361/728/436 426/700/436 425/553/436 -f 1494/729/437 2469/730/437 1693/731/437 -f 2721/732/438 2750/733/438 2720/734/438 -f 2107/735/439 1666/736/439 1350/737/439 -f 286/738/440 300/686/440 252/670/440 -f 301/739/441 342/687/441 300/686/441 -f 342/687/442 387/740/442 378/655/442 -f 378/655/443 387/740/443 386/640/443 -f 386/640/444 387/740/444 411/717/444 -f 431/673/445 448/741/445 494/641/445 -f 494/641/446 448/741/446 543/642/446 -f 543/642/447 533/742/447 544/688/447 -f 789/743/448 914/744/448 541/689/448 -f 65/631/449 74/619/449 89/659/449 -f 180/526/450 200/471/450 196/479/450 -f 682/745/451 680/575/451 522/622/451 -f 1142/746/452 1208/332/452 1193/334/452 -f 132/441/453 152/502/453 142/501/453 -f 186/469/454 200/471/454 180/526/454 -f 1125/747/455 1129/748/455 1106/749/455 -f 1117/750/456 1015/751/456 1092/752/456 -f 1747/81/457 1041/420/457 182/260/457 -f 3489/753/458 3508/754/458 3500/325/458 -f 59/755/459 80/209/459 58/211/459 -f 3207/756/460 174/757/460 2819/758/460 -f 2894/680/461 2766/681/461 3428/759/461 -f 252/670/462 234/760/462 286/738/462 -f 301/739/463 300/686/463 286/738/463 -f 387/740/464 388/761/464 411/717/464 -f 411/717/465 448/741/465 431/673/465 -f 495/762/466 533/742/466 543/642/466 -f 448/741/467 495/762/467 543/642/467 -f 180/526/468 157/437/468 186/469/468 -f 556/763/469 539/764/469 524/691/469 -f 782/604/470 1389/603/470 756/675/470 -f 1252/765/471 1242/766/471 1267/767/471 -f 1242/766/472 1292/51/472 1285/136/472 -f 2182/768/473 2006/769/473 2141/770/473 -f 379/771/474 387/740/474 342/687/474 -f 388/761/475 432/772/475 411/717/475 -f 432/772/476 473/773/476 411/717/476 -f 473/773/477 448/741/477 411/717/477 -f 473/773/478 495/762/478 448/741/478 -f 496/774/479 544/688/479 533/742/479 -f 544/688/480 550/775/480 541/689/480 -f 664/210/481 80/209/481 1653/776/481 -f 187/484/482 260/463/482 186/469/482 -f 3498/777/483 3430/778/483 3445/354/483 -f 186/469/484 260/463/484 240/465/484 -f 393/585/485 359/475/485 417/644/485 -f 538/779/486 548/584/486 645/780/486 -f 3464/20/487 1830/781/487 3469/782/487 -f 23/783/488 60/784/488 59/755/488 -f 68/785/489 1578/786/489 80/787/489 -f 1456/13/490 1372/104/490 325/49/490 -f 1229/11/491 1456/13/491 325/49/491 -f 3433/349/492 3477/788/492 3501/350/492 -f 234/760/493 275/789/493 286/738/493 -f 301/739/494 333/790/494 342/687/494 -f 333/790/495 379/771/495 342/687/495 -f 387/740/496 379/771/496 388/761/496 -f 495/762/497 496/774/497 533/742/497 -f 123/481/498 168/506/498 150/791/498 -f 454/534/499 1354/625/499 1313/697/499 -f 337/792/500 359/475/500 324/474/500 -f 540/793/501 948/794/501 549/795/501 -f 103/379/502 136/378/502 102/796/502 -f 145/797/503 155/710/503 126/709/503 -f 548/584/504 782/604/504 645/780/504 -f 2977/798/505 956/799/505 2429/800/505 -f 937/801/506 55/802/506 313/803/506 -f 93/804/507 103/379/507 102/796/507 -f 385/9/508 476/12/508 1229/11/508 -f 2656/805/509 2691/806/509 2668/807/509 -f 275/789/510 287/808/510 286/738/510 -f 287/808/511 301/739/511 286/738/511 -f 287/808/512 333/790/512 301/739/512 -f 379/771/513 389/809/513 388/761/513 -f 389/809/514 432/772/514 388/761/514 -f 473/773/515 474/810/515 495/762/515 -f 495/762/516 474/810/516 496/774/516 -f 550/775/517 789/743/517 541/689/517 -f 78/811/518 93/804/518 102/796/518 -f 197/812/519 203/720/519 172/716/519 -f 3228/813/520 3241/309/520 3190/308/520 -f 54/618/521 66/394/521 74/619/521 -f 793/814/522 794/815/522 847/816/522 -f 60/784/523 81/817/523 68/818/523 -f 81/819/524 1578/786/524 68/785/524 -f 2083/820/525 2117/306/525 2065/821/525 -f 1747/81/526 158/80/526 1041/420/526 -f 20/707/527 2087/822/527 2067/708/527 -f 1458/291/528 346/229/528 2345/347/528 -f 245/823/529 234/760/529 235/824/529 -f 245/823/530 275/789/530 234/760/530 -f 319/825/531 333/790/531 287/808/531 -f 367/826/532 379/771/532 333/790/532 -f 474/810/533 545/827/533 496/774/533 -f 545/827/534 544/688/534 496/774/534 -f 545/827/535 550/775/535 544/688/535 -f 550/775/536 55/802/536 789/743/536 -f 563/614/537 914/744/537 757/828/537 -f 79/573/538 125/572/538 171/414/538 -f 38/396/539 66/390/539 54/829/539 -f 112/376/540 117/533/540 89/388/540 -f 271/204/541 668/830/541 811/831/541 -f 271/204/542 811/831/542 1241/33/542 -f 226/832/543 1224/833/543 1100/834/543 -f 94/835/544 1578/786/544 81/819/544 -f 94/835/545 1607/836/545 1578/786/545 -f 3502/837/546 3465/838/546 3455/839/546 -f 302/840/547 287/808/547 275/789/547 -f 319/825/548 367/826/548 333/790/548 -f 367/826/549 389/809/549 379/771/549 -f 433/841/550 432/772/550 389/809/550 -f 432/772/551 449/842/551 473/773/551 -f 473/773/552 449/842/552 474/810/552 -f 406/538/553 441/693/553 424/645/553 -f 2872/843/554 2198/844/554 2454/845/554 -f 2290/846/555 2193/847/555 2443/848/555 -f 2917/849/556 2927/850/556 2916/851/556 -f 162/583/557 948/794/557 890/852/557 -f 359/475/558 405/403/558 417/644/558 -f 549/795/559 948/794/559 162/583/559 -f 609/647/560 75/853/560 67/445/560 -f 361/728/561 915/854/561 426/700/561 -f 1320/855/562 1593/205/562 312/32/562 -f 1142/746/563 964/581/563 1208/332/563 -f 3453/856/564 2669/857/564 1897/858/564 -f 606/859/565 593/860/565 60/861/565 -f 593/860/566 81/819/566 60/861/566 -f 480/131/567 385/9/567 1421/54/567 -f 1669/862/568 443/295/568 183/194/568 -f 276/863/569 275/789/569 245/823/569 -f 276/863/570 302/840/570 275/789/570 -f 319/825/571 287/808/571 302/840/571 -f 369/864/572 433/841/572 389/809/572 -f 432/772/573 433/841/573 449/842/573 -f 449/842/574 497/865/574 474/810/574 -f 497/865/575 545/827/575 474/810/575 -f 2174/866/576 977/867/576 2178/868/576 -f 3434/869/577 3441/870/577 3468/871/577 -f 2768/662/578 3461/270/578 3473/872/578 -f 74/873/579 66/390/579 90/374/579 -f 811/831/580 471/31/580 1241/33/580 -f 406/538/581 418/539/581 441/693/581 -f 501/556/582 537/598/582 547/557/582 -f 82/874/583 81/819/583 593/860/583 -f 82/874/584 94/835/584 81/819/584 -f 270/231/585 382/132/585 1409/171/585 -f 235/824/586 217/875/586 245/823/586 -f 367/826/587 369/864/587 389/809/587 -f 497/865/588 518/876/588 545/827/588 -f 518/876/589 546/877/589 545/827/589 -f 545/827/590 546/877/590 550/775/590 -f 339/878/591 55/802/591 550/775/591 -f 489/718/592 525/879/592 556/763/592 -f 153/440/593 157/437/593 152/502/593 -f 347/401/594 337/792/594 858/880/594 -f 525/468/595 540/793/595 549/795/595 -f 151/503/596 180/526/596 168/506/596 -f 2277/881/597 1120/126/597 1025/882/597 -f 3469/782/598 3493/399/598 3508/21/598 -f 127/883/599 94/835/599 82/874/599 -f 1262/146/600 113/143/600 365/145/600 -f 1960/884/601 833/885/601 1935/886/601 -f 1687/887/602 206/888/602 217/875/602 -f 217/875/603 236/889/603 245/823/603 -f 245/823/604 236/889/604 276/863/604 -f 303/890/605 302/840/605 276/863/605 -f 368/891/606 319/825/606 302/840/606 -f 303/890/607 368/891/607 302/840/607 -f 368/891/608 367/826/608 319/825/608 -f 367/826/609 368/891/609 369/864/609 -f 433/841/610 484/892/610 449/842/610 -f 449/842/611 484/892/611 497/865/611 -f 383/893/612 339/878/612 550/775/612 -f 546/877/613 383/893/613 550/775/613 -f 339/894/614 313/895/614 55/896/614 -f 968/632/615 996/897/615 3063/898/615 -f 629/899/616 75/552/616 609/900/616 -f 471/31/617 360/901/617 312/32/617 -f 1489/564/618 2016/88/618 2005/237/618 -f 556/582/619 525/468/619 162/583/619 -f 127/883/620 146/902/620 138/903/620 -f 206/888/621 236/889/621 217/875/621 -f 236/889/622 264/904/622 276/863/622 -f 264/904/623 303/890/623 276/863/623 -f 433/841/624 461/905/624 484/892/624 -f 484/892/625 518/876/625 497/865/625 -f 339/894/626 479/906/626 1328/907/626 -f 1037/518/627 1067/908/627 1044/909/627 -f 1199/493/628 1194/601/628 1211/278/628 -f 197/179/629 44/181/629 203/910/629 -f 1384/574/630 477/599/630 501/556/630 -f 360/901/631 1320/855/631 312/32/631 -f 1567/911/632 1798/912/632 1597/913/632 -f 1014/914/633 803/915/633 1161/916/633 -f 593/860/634 32/917/634 82/874/634 -f 83/918/635 127/883/635 82/874/635 -f 146/902/636 175/919/636 1639/920/636 -f 1687/887/637 1639/920/637 175/919/637 -f 175/919/638 206/888/638 1687/887/638 -f 303/890/639 334/921/639 368/891/639 -f 334/921/640 370/922/640 368/891/640 -f 368/891/641 370/922/641 369/864/641 -f 370/922/642 401/923/642 433/841/642 -f 369/864/643 370/922/643 433/841/643 -f 401/923/644 461/905/644 433/841/644 -f 484/892/645 509/924/645 518/876/645 -f 479/925/646 339/878/646 383/893/646 -f 1055/926/647 1061/517/647 1045/405/647 -f 316/356/648 2393/636/648 362/357/648 -f 348/927/649 915/854/649 361/728/649 -f 1320/855/650 327/928/650 106/929/650 -f 83/918/651 82/874/651 32/917/651 -f 83/918/652 95/930/652 127/883/652 -f 127/883/653 95/930/653 146/902/653 -f 288/931/654 303/890/654 264/904/654 -f 288/931/655 334/921/655 303/890/655 -f 334/921/656 357/932/656 370/922/656 -f 461/905/657 509/924/657 484/892/657 -f 518/876/658 534/933/658 546/877/658 -f 157/437/659 187/484/659 186/469/659 -f 1120/126/660 964/581/660 1142/746/660 -f 89/388/661 117/533/661 116/483/661 -f 556/582/662 548/584/662 539/934/662 -f 852/935/663 41/936/663 1320/855/663 -f 360/901/664 852/935/664 1320/855/664 -f 41/936/665 327/928/665 1320/855/665 -f 1831/937/666 1577/938/666 1599/939/666 -f 293/464/667 858/880/667 266/472/667 -f 1375/410/668 237/940/668 1255/941/668 -f 1979/942/669 2122/943/669 1206/944/669 -f 32/917/670 45/945/670 83/918/670 -f 95/930/671 139/946/671 146/902/671 -f 146/902/672 139/946/672 175/919/672 -f 175/919/673 192/947/673 206/888/673 -f 192/947/674 193/948/674 206/888/674 -f 193/948/675 246/949/675 206/888/675 -f 246/949/676 236/889/676 206/888/676 -f 246/949/677 264/904/677 236/889/677 -f 288/931/678 304/950/678 334/921/678 -f 334/921/679 304/950/679 357/932/679 -f 304/950/680 358/951/680 357/932/680 -f 357/932/681 401/923/681 370/922/681 -f 401/923/682 434/952/682 461/905/682 -f 518/876/683 509/924/683 534/933/683 -f 2696/953/684 2767/226/684 964/134/684 -f 2005/237/685 1976/109/685 1489/564/685 -f 1025/882/686 1120/126/686 1142/746/686 -f 139/946/687 176/954/687 175/919/687 -f 176/954/688 192/947/688 175/919/688 -f 246/949/689 277/955/689 264/904/689 -f 277/955/690 288/931/690 264/904/690 -f 534/933/691 383/893/691 546/877/691 -f 523/956/692 539/934/692 538/779/692 -f 1237/957/693 106/929/693 19/958/693 -f 37/959/694 46/960/694 45/945/694 -f 46/960/695 83/918/695 45/945/695 -f 128/961/696 139/946/696 95/930/696 -f 193/948/697 253/962/697 246/949/697 -f 358/951/698 371/963/698 357/932/698 -f 357/932/699 371/963/699 401/923/699 -f 371/963/700 412/964/700 401/923/700 -f 412/964/701 434/952/701 401/923/701 -f 434/952/702 450/965/702 461/905/702 -f 450/965/703 509/924/703 461/905/703 -f 450/965/704 498/966/704 509/924/704 -f 509/924/705 498/966/705 534/933/705 -f 75/552/706 91/375/706 67/391/706 -f 41/936/707 297/967/707 327/928/707 -f 1551/968/708 84/969/708 83/918/708 -f 83/918/709 84/969/709 95/930/709 -f 176/954/710 193/948/710 192/947/710 -f 278/970/711 277/955/711 246/949/711 -f 305/971/712 288/931/712 277/955/712 -f 288/931/713 305/971/713 304/950/713 -f 304/950/714 305/971/714 358/951/714 -f 412/964/715 451/972/715 434/952/715 -f 451/972/716 450/965/716 434/952/716 -f 534/933/717 565/973/717 383/893/717 -f 565/973/718 135/974/718 383/893/718 -f 383/893/719 135/974/719 479/925/719 -f 213/975/720 502/976/720 479/925/720 -f 971/977/721 970/978/721 961/979/721 -f 337/792/722 405/403/722 359/475/722 -f 539/934/723 548/584/723 538/779/723 -f 326/630/724 170/980/724 227/505/724 -f 297/967/725 18/981/725 327/928/725 -f 327/928/726 18/981/726 19/958/726 -f 1153/360/727 3447/982/727 1064/983/727 -f 385/9/728 456/8/728 476/12/728 -f 84/969/729 128/961/729 95/930/729 -f 147/984/730 176/954/730 139/946/730 -f 253/962/731 278/970/731 246/949/731 -f 278/970/732 305/971/732 277/955/732 -f 335/985/733 380/986/733 371/963/733 -f 358/951/734 335/985/734 371/963/734 -f 371/963/735 390/987/735 412/964/735 -f 462/988/736 498/966/736 450/965/736 -f 267/989/737 479/925/737 135/974/737 -f 267/989/738 213/975/738 479/925/738 -f 132/441/739 142/501/739 117/533/739 -f 247/473/740 259/435/740 224/480/740 -f 19/958/741 18/981/741 1237/957/741 -f 2332/990/742 1458/291/742 2345/347/742 -f 129/991/743 139/946/743 128/961/743 -f 129/991/744 147/984/744 139/946/744 -f 207/992/745 253/962/745 193/948/745 -f 335/985/746 358/951/746 305/971/746 -f 343/993/747 380/986/747 335/985/747 -f 371/963/748 380/986/748 390/987/748 -f 451/972/749 462/988/749 450/965/749 -f 18/981/750 559/994/750 1237/957/750 -f 562/995/751 608/996/751 2/997/751 -f 2093/338/752 2120/186/752 577/185/752 -f 306/998/753 305/971/753 278/970/753 -f 306/998/754 335/985/754 305/971/754 -f 390/987/755 435/999/755 412/964/755 -f 463/1000/756 451/972/756 412/964/756 -f 435/999/757 463/1000/757 412/964/757 -f 519/1001/758 534/933/758 498/966/758 -f 519/1001/759 565/973/759 534/933/759 -f 67/391/760 91/375/760 90/374/760 -f 3424/1002/761 3492/1003/761 3426/1004/761 -f 441/693/762 442/555/762 455/626/762 -f 18/981/763 562/1005/763 559/994/763 -f 943/1006/764 1297/1007/764 684/1008/764 -f 3470/281/765 3497/656/765 3490/1009/765 -f 84/969/766 1580/1010/766 128/961/766 -f 164/1011/767 176/954/767 147/984/767 -f 164/1011/768 193/948/768 176/954/768 -f 164/1011/769 207/992/769 193/948/769 -f 289/1012/770 306/998/770 278/970/770 -f 343/993/771 390/987/771 380/986/771 -f 499/1013/772 462/988/772 451/972/772 -f 463/1000/773 499/1013/773 451/972/773 -f 552/1014/774 135/974/774 565/973/774 -f 552/1014/775 267/989/775 135/974/775 -f 959/576/776 998/449/776 954/577/776 -f 454/534/777 468/536/777 1354/625/777 -f 524/691/778 539/764/778 523/634/778 -f 181/436/779 260/463/779 187/484/779 -f 1300/150/780 1423/149/780 326/1015/780 -f 2030/87/781 2041/1016/781 2040/1017/781 -f 218/1018/782 207/992/782 164/1011/782 -f 218/1018/783 230/1019/783 207/992/783 -f 230/1019/784 253/962/784 207/992/784 -f 230/1019/785 254/1020/785 253/962/785 -f 253/962/786 254/1020/786 278/970/786 -f 344/1021/787 335/985/787 306/998/787 -f 344/1021/788 343/993/788 335/985/788 -f 344/1021/789 372/1022/789 343/993/789 -f 343/993/790 372/1022/790 390/987/790 -f 390/987/791 413/1023/791 435/999/791 -f 519/1001/792 498/966/792 462/988/792 -f 499/1013/793 519/1001/793 462/988/793 -f 535/1024/794 565/973/794 519/1001/794 -f 1199/493/795 1211/278/795 922/451/795 -f 998/449/796 1018/1025/796 997/1026/796 -f 1018/404/797 1013/406/797 997/1027/797 -f 152/502/798 157/437/798 180/526/798 -f 54/829/799 53/478/799 38/396/799 -f 143/1028/800 133/439/800 124/507/800 -f 524/691/801 523/634/801 478/633/801 -f 559/994/802 2/1029/802 419/1030/802 -f 353/1031/803 560/1032/803 25/1033/803 -f 1183/1034/804 1465/1035/804 1438/1036/804 -f 1805/1037/805 1838/1038/805 3510/1039/805 -f 42/202/806 134/203/806 1386/129/806 -f 114/1040/807 129/991/807 128/961/807 -f 148/1041/808 147/984/808 129/991/808 -f 148/1041/809 164/1011/809 147/984/809 -f 254/1020/810 289/1012/810 278/970/810 -f 289/1012/811 344/1021/811 306/998/811 -f 391/1042/812 413/1023/812 390/987/812 -f 1149/1043/813 922/451/813 594/1044/813 -f 198/1045/814 197/812/814 172/716/814 -f 1772/1046/815 1733/1047/815 1734/1048/815 -f 2/1029/816 560/1032/816 419/1030/816 -f 419/1049/817 560/1050/817 353/1051/817 -f 2967/1052/818 957/1053/818 956/1054/818 -f 167/660/819 180/526/819 196/479/819 -f 414/50/820 42/202/820 1441/128/820 -f 1450/55/821 414/50/821 1441/128/821 -f 165/1055/822 218/1018/822 164/1011/822 -f 255/1056/823 230/1019/823 218/1018/823 -f 255/1056/824 254/1020/824 230/1019/824 -f 289/1012/825 307/1057/825 344/1021/825 -f 307/1057/826 372/1022/826 344/1021/826 -f 391/1042/827 390/987/827 372/1022/827 -f 402/1058/828 413/1023/828 391/1042/828 -f 413/1023/829 436/1059/829 435/999/829 -f 435/999/830 436/1059/830 463/1000/830 -f 485/1060/831 499/1013/831 463/1000/831 -f 485/1060/832 519/1001/832 499/1013/832 -f 485/1060/833 535/1024/833 519/1001/833 -f 552/1014/834 565/973/834 535/1024/834 -f 680/575/835 774/1061/835 1384/574/835 -f 102/796/836 670/1062/836 92/1063/836 -f 56/1064/837 554/600/837 280/1065/837 -f 323/476/838 375/1066/838 322/1067/838 -f 469/386/839 524/719/839 478/368/839 -f 2005/237/840 2015/117/840 1975/110/840 -f 148/1041/841 129/991/841 114/1040/841 -f 165/1055/842 164/1011/842 148/1041/842 -f 165/1055/843 208/1068/843 218/1018/843 -f 208/1068/844 255/1056/844 218/1018/844 -f 255/1056/845 219/1069/845 254/1020/845 -f 289/1070/846 1661/1071/846 307/1072/846 -f 1661/1071/847 1720/1073/847 307/1072/847 -f 1197/1074/848 3486/1075/848 2702/1076/848 -f 1720/1073/849 1594/1077/849 307/1072/849 -f 1594/1078/850 391/1042/850 372/1022/850 -f 436/1059/851 464/1079/851 463/1000/851 -f 463/1000/852 464/1079/852 485/1060/852 -f 559/1080/853 419/1049/853 353/1051/853 -f 2499/1081/854 2161/1082/854 2096/382/854 -f 289/1070/855 254/1083/855 1661/1071/855 -f 212/470/856 247/473/856 224/480/856 -f 455/626/857 469/386/857 441/693/857 -f 469/386/858 468/370/858 441/693/858 -f 1981/58/859 1378/594/859 1154/364/859 -f 156/103/860 414/50/860 1450/55/860 -f 1406/173/861 104/56/861 1346/148/861 -f 1222/1084/862 1224/833/862 226/832/862 -f 3476/355/863 3445/354/863 3497/656/863 -f 402/1058/864 403/1085/864 413/1023/864 -f 413/1023/865 403/1085/865 436/1059/865 -f 1/1086/866 552/1014/866 535/1024/866 -f 1/1086/867 26/1087/867 552/1014/867 -f 26/1087/868 294/1088/868 552/1014/868 -f 1772/1046/869 1771/1089/869 1733/1047/869 -f 1771/1089/870 1770/1090/870 1733/1047/870 -f 2976/1091/871 956/799/871 2977/798/871 -f 168/506/872 167/660/872 150/791/872 -f 393/585/873 417/644/873 440/586/873 -f 996/897/874 987/1092/874 3063/898/874 -f 754/1093/875 272/1094/875 1462/1095/875 -f 1267/191/876 1100/834/876 1252/1096/876 -f 3496/1097/877 3503/1098/877 3452/1099/877 -f 148/1041/878 114/1040/878 122/1100/878 -f 148/1041/879 177/1101/879 165/1055/879 -f 165/1055/880 177/1101/880 208/1068/880 -f 177/1101/881 209/1102/881 208/1068/881 -f 209/1102/882 219/1069/882 255/1056/882 -f 208/1068/883 209/1102/883 255/1056/883 -f 1937/1103/884 1651/1104/884 1633/1105/884 -f 3448/1106/885 3473/1107/885 3481/1108/885 -f 1375/410/886 1467/283/886 237/940/886 -f 402/1058/887 1610/1109/887 403/1085/887 -f 465/1110/888 485/1060/888 464/1079/888 -f 2358/1111/889 2134/1112/889 2221/1113/889 -f 59/755/890 60/784/890 80/209/890 -f 112/376/891 132/441/891 117/533/891 -f 3236/1114/892 3264/1115/892 3460/1116/892 -f 1118/1117/893 1180/324/893 3485/326/893 -f 554/600/894 227/505/894 280/1065/894 -f 323/476/895 393/585/895 375/1066/895 -f 1421/54/896 156/103/896 1450/55/896 -f 69/1118/897 1553/1119/897 1543/1120/897 -f 69/1118/898 1583/1121/898 1553/1119/898 -f 177/1122/899 1680/1123/899 209/1124/899 -f 21/230/900 270/231/900 514/123/900 -f 1771/1089/901 1800/1125/901 1770/1090/901 -f 1471/430/902 21/230/902 1457/1126/902 -f 1240/1127/903 1261/29/903 2206/1128/903 -f 2768/662/904 3473/872/904 3427/92/904 -f 403/1085/905 422/1129/905 436/1059/905 -f 436/1059/906 422/1129/906 464/1079/906 -f 465/1110/907 520/1130/907 485/1060/907 -f 520/1130/908 535/1024/908 485/1060/908 -f 3430/778/909 3511/298/909 3445/354/909 -f 2248/1131/910 2309/1132/910 2297/1133/910 -f 858/880/911 324/474/911 266/472/911 -f 196/479/912 224/480/912 239/1134/912 -f 522/622/913 513/558/913 56/1064/913 -f 247/473/914 266/472/914 310/433/914 -f 1771/1089/915 1808/1135/915 1800/1125/915 -f 49/1136/916 61/1137/916 48/235/916 -f 61/1137/917 1543/233/917 48/235/917 -f 1517/1138/918 49/1136/918 1527/1139/918 -f 652/1140/919 1920/1141/919 2229/1142/919 -f 1453/1143/920 1381/60/920 330/1144/920 -f 237/940/921 1467/283/921 1300/150/921 -f 492/1145/922 1466/1146/922 1685/218/922 -f 1808/1147/923 1817/177/923 1800/1148/923 -f 1370/53/924 1381/60/924 1395/1149/924 -f 422/1129/925 1664/1150/925 464/1079/925 -f 1664/1150/926 465/1110/926 464/1079/926 -f 520/1130/927 5/1151/927 535/1024/927 -f 5/1151/928 1/1086/928 535/1024/928 -f 268/1152/929 294/1088/929 26/1087/929 -f 268/1152/930 1345/1153/930 294/1088/930 -f 28/1154/931 634/1155/931 340/1156/931 -f 92/1063/932 78/811/932 102/796/932 -f 523/956/933 538/779/933 537/598/933 -f 61/1157/934 69/1118/934 1543/1120/934 -f 85/1158/935 1583/1121/935 69/1118/935 -f 85/1158/936 98/1159/936 97/1160/936 -f 1583/1121/937 85/1158/937 97/1160/937 -f 1614/1161/938 1601/1162/938 97/1160/938 -f 98/1159/939 1614/1161/939 97/1160/939 -f 946/486/940 121/1163/940 1330/487/940 -f 1274/1164/941 270/231/941 1409/171/941 -f 1373/15/942 1417/1165/942 273/1166/942 -f 514/123/943 270/231/943 1274/1164/943 -f 1230/1167/944 1252/1096/944 1224/833/944 -f 1610/1109/945 422/1129/945 403/1085/945 -f 510/1168/946 520/1130/946 465/1110/946 -f 311/1169/947 268/1152/947 26/1087/947 -f 1094/1170/948 1102/1171/948 1114/1172/948 -f 1091/513/949 558/635/949 1171/657/949 -f 3170/1173/950 78/811/950 92/1063/950 -f 124/507/951 132/441/951 112/376/951 -f 1389/603/952 890/852/952 604/1174/952 -f 1077/1175/953 1067/908/953 1094/1170/953 -f 61/1157/954 85/1158/954 69/1118/954 -f 2065/821/955 2117/306/955 2082/307/955 -f 1986/1176/956 2030/87/956 2004/1177/956 -f 352/36/957 12/223/957 457/1178/957 -f 1303/1179/958 768/1180/958 1291/1181/958 -f 465/1110/959 452/1182/959 510/1168/959 -f 26/1183/960 1/1184/960 311/1185/960 -f 311/1169/961 1/1086/961 5/1151/961 -f 240/465/962 212/470/962 186/469/962 -f 2223/1186/963 2157/1187/963 2302/1188/963 -f 162/583/964 890/852/964 1389/603/964 -f 259/435/965 247/473/965 310/433/965 -f 537/598/966 125/572/966 547/557/966 -f 50/1189/967 61/1137/967 49/1136/967 -f 61/1157/968 86/1190/968 85/1158/968 -f 86/1190/969 98/1159/969 85/1158/969 -f 108/1191/970 1614/1192/970 98/1193/970 -f 2153/1194/971 349/1195/971 1507/1196/971 -f 3498/1197/972 1674/1198/972 3430/1199/972 -f 1817/177/973 1846/1200/973 1845/178/973 -f 2689/1201/974 1969/1202/974 2688/1203/974 -f 553/1204/975 5/1151/975 520/1130/975 -f 311/1185/976 555/1205/976 268/595/976 -f 782/604/977 756/675/977 202/674/977 -f 442/555/978 470/554/978 455/626/978 -f 1299/102/979 555/1205/979 134/203/979 -f 50/1206/980 62/1207/980 61/1157/980 -f 62/1207/981 86/1190/981 61/1157/981 -f 99/1208/982 98/1159/982 86/1190/982 -f 99/1209/983 108/1210/983 98/1211/983 -f 2087/822/984 57/1212/984 1989/1213/984 -f 1960/884/985 577/185/985 833/885/985 -f 6/1214/986 410/1215/986 1389/603/986 -f 452/1182/987 1544/1216/987 510/1168/987 -f 553/1204/988 520/1130/988 510/1168/988 -f 249/1217/989 311/1169/989 5/1151/989 -f 3140/1218/990 3128/1219/990 3113/1220/990 -f 144/676/991 237/442/991 490/416/991 -f 79/573/992 171/414/992 248/504/992 -f 1193/334/993 1207/333/993 1175/1221/993 -f 155/710/994 161/1222/994 172/716/994 -f 161/1222/995 198/1045/995 172/716/995 -f 1253/1223/996 1330/1224/996 617/1225/996 -f 1472/348/997 1471/430/997 1413/1226/997 -f 190/454/998 173/73/998 1451/90/998 -f 577/185/999 2088/187/999 833/885/999 -f 21/230/1000 514/123/1000 1457/1126/1000 -f 1381/60/1001 352/36/1001 330/1144/1001 -f 1788/1227/1002 1810/1228/1002 1787/1229/1002 -f 1332/76/1003 1254/78/1003 1358/1230/1003 -f 1544/1216/1004 486/1231/1004 510/1168/1004 -f 486/1231/1005 521/1232/1005 510/1168/1005 -f 521/1232/1006 553/1204/1006 510/1168/1006 -f 553/1204/1007 249/1217/1007 5/1151/1007 -f 363/1233/1008 555/1205/1008 311/1185/1008 -f 620/1234/1009 767/1235/1009 243/1236/1009 -f 1195/453/1010 1201/511/1010 1200/1237/1010 -f 62/1207/1011 70/1238/1011 86/1190/1011 -f 100/1239/1012 99/1208/1012 86/1190/1012 -f 70/1240/1013 100/1241/1013 86/1242/1013 -f 100/1243/1014 1616/1244/1014 108/1191/1014 -f 99/1209/1015 100/1241/1015 108/1210/1015 -f 108/1191/1016 1616/1244/1016 1615/1245/1016 -f 1285/192/1017 1370/1246/1017 1217/193/1017 -f 1705/1247/1018 1576/1248/1018 320/1249/1018 -f 1545/1250/1019 1558/1251/1019 1294/1252/1019 -f 363/1253/1020 311/1169/1020 249/1217/1020 -f 1123/424/1021 1156/452/1021 1146/425/1021 -f 690/1254/1022 143/1028/1022 124/507/1022 -f 525/468/1023 549/795/1023 162/583/1023 -f 1661/1255/1024 254/1020/1024 219/1069/1024 -f 1383/1256/1025 273/1166/1025 1245/1257/1025 -f 1088/111/1026 1855/113/1026 1147/261/1026 -f 1539/70/1027 256/1258/1027 265/71/1027 -f 265/71/1028 279/1259/1028 1576/1248/1028 -f 1413/1226/1029 1427/1260/1029 1362/1261/1029 -f 1413/1226/1030 1471/430/1030 1427/1260/1030 -f 1668/1262/1031 500/1263/1031 486/1231/1031 -f 500/1263/1032 521/1232/1032 486/1231/1032 -f 17/1264/1033 553/1204/1033 521/1232/1033 -f 241/1265/1034 363/1253/1034 249/1217/1034 -f 1094/1170/1035 1067/908/1035 1102/1171/1035 -f 1002/358/1036 3449/1266/1036 3495/359/1036 -f 2689/1201/1037 2730/1267/1037 1969/1202/1037 -f 1243/19/1038 555/1205/1038 1299/102/1038 -f 840/510/1039 858/880/1039 293/464/1039 -f 260/463/1040 840/510/1040 293/464/1040 -f 50/1189/1041 63/1268/1041 62/1269/1041 -f 63/1270/1042 70/1238/1042 62/1207/1042 -f 70/1240/1043 87/1271/1043 100/1241/1043 -f 100/1241/1044 109/1272/1044 1616/1273/1044 -f 1417/1165/1045 137/495/1045 273/1166/1045 -f 1472/348/1046 1413/1226/1046 2346/1274/1046 -f 265/71/1047 256/1258/1047 279/1259/1047 -f 279/1259/1048 320/1249/1048 1576/1248/1048 -f 321/1275/1049 1698/1276/1049 320/1249/1049 -f 3427/92/1050 3448/1277/1050 3444/93/1050 -f 500/1263/1051 487/1278/1051 521/1232/1051 -f 487/1278/1052 17/1264/1052 521/1232/1052 -f 15/1279/1053 249/1217/1053 553/1204/1053 -f 3469/782/1054 3508/21/1054 3464/20/1054 -f 525/468/1055 899/467/1055 540/793/1055 -f 33/446/1056 581/1280/1056 610/1281/1056 -f 610/1281/1057 40/447/1057 33/446/1057 -f 101/508/1058 690/1254/1058 124/507/1058 -f 309/550/1059 323/476/1059 322/1067/1059 -f 3456/400/1060 3493/399/1060 3469/782/1060 -f 172/716/1061 203/720/1061 160/661/1061 -f 100/1241/1062 87/1271/1062 109/1272/1062 -f 2150/1282/1063 2414/460/1063 2407/1283/1063 -f 210/1284/1064 221/1285/1064 1539/70/1064 -f 221/1285/1065 256/1258/1065 1539/70/1065 -f 308/1286/1066 279/1259/1066 256/1258/1066 -f 404/1287/1067 1698/1276/1067 321/1275/1067 -f 404/1287/1068 392/1288/1068 1698/1276/1068 -f 17/1264/1069 15/1279/1069 553/1204/1069 -f 241/1265/1070 249/1217/1070 15/1279/1070 -f 316/356/1071 783/141/1071 1162/140/1071 -f 554/600/1072 79/573/1072 248/504/1072 -f 547/557/1073 79/573/1073 554/600/1073 -f 3511/298/1074 3463/300/1074 3497/656/1074 -f 172/716/1075 160/661/1075 154/377/1075 -f 749/1289/1076 3426/1004/1076 105/1290/1076 -f 50/1189/1077 51/1291/1077 63/1268/1077 -f 63/1268/1078 71/1292/1078 70/1240/1078 -f 70/1240/1079 71/1292/1079 87/1271/1079 -f 109/1272/1080 1622/1293/1080 1643/1294/1080 -f 1622/1293/1081 166/1295/1081 1643/1294/1081 -f 194/1296/1082 211/1297/1082 210/1284/1082 -f 211/1297/1083 221/1285/1083 210/1284/1083 -f 221/1285/1084 238/1298/1084 256/1258/1084 -f 279/1259/1085 308/1286/1085 320/1249/1085 -f 308/1286/1086 321/1275/1086 320/1249/1086 -f 373/1299/1087 404/1287/1087 321/1275/1087 -f 2120/186/1088 1979/942/1088 1206/944/1088 -f 3480/1300/1089 3454/1301/1089 3424/1002/1089 -f 511/1302/1090 17/1264/1090 487/1278/1090 -f 269/1303/1091 363/1253/1091 241/1265/1091 -f 1146/425/1092 1195/453/1092 1166/602/1092 -f 126/709/1093 154/377/1093 103/379/1093 -f 337/792/1094 347/401/1094 405/403/1094 -f 87/1271/1095 110/1304/1095 109/1272/1095 -f 1274/1164/1096 1409/171/1096 1375/410/1096 -f 3494/1305/1097 3485/326/1097 3500/325/1097 -f 1565/1306/1098 13/1307/1098 1434/1308/1098 -f 3486/1075/1099 3488/1309/1099 3479/312/1099 -f 238/1298/1100 308/1286/1100 256/1258/1100 -f 1545/1310/1101 1650/1311/1101 500/1263/1101 -f 500/1263/1102 1650/1311/1102 487/1278/1102 -f 269/1303/1103 241/1265/1103 15/1279/1103 -f 269/1312/1104 1386/129/1104 363/1233/1104 -f 998/449/1105 997/1026/1105 968/632/1105 -f 580/1313/1106 27/397/1106 38/396/1106 -f 417/644/1107 406/538/1107 424/645/1107 -f 51/1291/1108 72/1314/1108 63/1268/1108 -f 63/1268/1109 72/1314/1109 71/1292/1109 -f 72/1314/1110 88/1315/1110 87/1271/1110 -f 71/1292/1111 72/1314/1111 87/1271/1111 -f 87/1271/1112 88/1315/1112 110/1304/1112 -f 110/1304/1113 1622/1293/1113 109/1272/1113 -f 775/1316/1114 1004/1317/1114 683/1318/1114 -f 199/1319/1115 211/1297/1115 194/1296/1115 -f 178/1320/1116 199/1319/1116 194/1296/1116 -f 199/1319/1117 222/1321/1117 211/1297/1117 -f 222/1321/1118 221/1285/1118 211/1297/1118 -f 222/1321/1119 223/1322/1119 221/1285/1119 -f 223/1322/1120 238/1298/1120 221/1285/1120 -f 336/1323/1121 321/1275/1121 308/1286/1121 -f 336/1323/1122 373/1299/1122 321/1275/1122 -f 381/1324/1123 404/1287/1123 373/1299/1123 -f 922/451/1124 1171/657/1124 594/1044/1124 -f 526/1325/1125 856/1326/1125 540/793/1125 -f 540/793/1126 856/1326/1126 948/794/1126 -f 405/403/1127 406/538/1127 417/644/1127 -f 88/1315/1128 115/1327/1128 1622/1293/1128 -f 110/1304/1129 88/1315/1129 1622/1293/1129 -f 349/1195/1130 184/1328/1130 1507/1196/1130 -f 199/1319/1131 223/1322/1131 222/1321/1131 -f 238/1298/1132 291/1329/1132 308/1286/1132 -f 291/1329/1133 336/1323/1133 308/1286/1133 -f 381/1324/1134 415/1330/1134 404/1287/1134 -f 3457/1331/1135 3482/1332/1135 3424/1002/1135 -f 514/123/1136 459/122/1136 1457/1126/1136 -f 536/1333/1137 17/1264/1137 511/1302/1137 -f 15/1279/1138 17/1264/1138 536/1333/1138 -f 1932/1334/1139 1115/426/1139 1146/425/1139 -f 202/674/1140 144/676/1140 490/416/1140 -f 202/674/1141 490/416/1141 281/415/1141 -f 72/1314/1142 73/1335/1142 88/1315/1142 -f 199/1319/1143 195/1336/1143 223/1322/1143 -f 336/1323/1144 374/1337/1144 373/1299/1144 -f 374/1337/1145 381/1324/1145 373/1299/1145 -f 415/1338/1146 1302/1339/1146 404/1340/1146 -f 1064/983/1147 1100/834/1147 1153/360/1147 -f 3508/21/1148 3494/663/1148 3500/1341/1148 -f 295/1342/1149 15/1279/1149 536/1333/1149 -f 295/1342/1150 269/1303/1150 15/1279/1150 -f 295/1342/1151 170/980/1151 269/1303/1151 -f 170/1343/1152 77/262/1152 269/1312/1152 -f 77/262/1153 1386/129/1153 269/1312/1153 -f 3443/351/1154 3501/350/1154 3452/1099/1154 -f 123/481/1155 150/791/1155 131/482/1155 -f 73/1335/1156 111/389/1156 88/1315/1156 -f 88/1315/1157 111/389/1157 115/1327/1157 -f 141/1344/1158 167/660/1158 179/1345/1158 -f 140/1346/1159 141/1344/1159 179/1345/1159 -f 167/660/1160 195/1336/1160 179/1345/1160 -f 223/1322/1161 257/1347/1161 238/1298/1161 -f 257/1347/1162 291/1329/1162 238/1298/1162 -f 292/1348/1163 336/1323/1163 291/1329/1163 -f 292/1348/1164 322/1067/1164 336/1323/1164 -f 322/1067/1165 374/1337/1165 336/1323/1165 -f 475/1349/1166 1650/1350/1166 466/1351/1166 -f 1650/1311/1167 475/1352/1167 512/1353/1167 -f 512/1353/1168 536/1333/1168 511/1302/1168 -f 3495/359/1169 3450/1354/1169 3447/982/1169 -f 999/1355/1170 1038/1356/1170 1018/404/1170 -f 51/1291/1171 52/1357/1171 72/1314/1171 -f 52/1357/1172 64/1358/1172 72/1314/1172 -f 72/1359/1173 64/1360/1173 73/1361/1173 -f 111/389/1174 131/482/1174 115/1327/1174 -f 115/1327/1175 131/482/1175 140/1346/1175 -f 1811/1362/1176 1802/1363/1176 1525/667/1176 -f 375/1066/1177 374/1337/1177 322/1067/1177 -f 375/1066/1178 381/1324/1178 374/1337/1178 -f 1061/517/1179 1067/908/1179 1037/518/1179 -f 1251/1364/1180 475/1349/1180 466/1351/1180 -f 522/622/1181 536/1333/1181 512/1353/1181 -f 1091/513/1182 1143/512/1182 558/635/1182 -f 477/599/1183 537/598/1183 501/556/1183 -f 858/880/1184 337/792/1184 324/474/1184 -f 523/956/1185 537/598/1185 488/369/1185 -f 513/558/1186 547/557/1186 554/600/1186 -f 51/1291/1187 588/477/1187 52/1357/1187 -f 131/482/1188 141/1344/1188 140/1346/1188 -f 195/1336/1189 239/1134/1189 223/1322/1189 -f 223/1322/1190 239/1134/1190 257/1347/1190 -f 257/1347/1191 292/1348/1191 291/1329/1191 -f 381/1324/1192 416/587/1192 415/1330/1192 -f 415/1330/1193 416/587/1193 423/1365/1193 -f 2781/288/1194 2144/1366/1194 2467/289/1194 -f 57/1367/1195 1311/1368/1195 1989/1369/1195 -f 198/1045/1196 724/1370/1196 197/812/1196 -f 195/1336/1197 196/479/1197 239/1134/1197 -f 258/434/1198 292/1348/1198 257/1347/1198 -f 393/585/1199 416/587/1199 381/1324/1199 -f 3485/326/1200 3443/1371/1200 3436/1372/1200 -f 513/558/1201 554/600/1201 56/1064/1201 -f 682/745/1202 522/622/1202 512/1353/1202 -f 56/1064/1203 536/1333/1203 522/622/1203 -f 56/1064/1204 295/1342/1204 536/1333/1204 -f 280/1065/1205 227/505/1205 295/1342/1205 -f 295/1342/1206 227/505/1206 170/980/1206 -f 170/980/1207 1423/1373/1207 77/1374/1207 -f 2015/117/1208 2030/87/1208 1986/1176/1208 -f 588/477/1209 53/478/1209 52/1357/1209 -f 53/617/1210 65/631/1210 64/1360/1210 -f 52/1357/1211 53/478/1211 64/1358/1211 -f 64/1360/1212 65/631/1212 73/1361/1212 -f 65/387/1213 111/389/1213 73/1335/1213 -f 141/1344/1214 150/791/1214 167/660/1214 -f 195/1336/1215 167/660/1215 196/479/1215 -f 259/435/1216 257/1347/1216 239/1134/1216 -f 259/435/1217 258/434/1217 257/1347/1217 -f 258/434/1218 309/550/1218 292/1348/1218 -f 309/550/1219 322/1067/1219 292/1348/1219 -f 393/585/1220 381/1324/1220 375/1066/1220 -f 1974/108/1221 1986/1176/1221 3390/1375/1221 -f 56/1064/1222 280/1065/1222 295/1342/1222 -f 423/1376/1223 439/1377/1223 1251/1364/1223 -f 111/389/1224 116/483/1224 131/482/1224 -f 150/791/1225 141/1344/1225 131/482/1225 -f 224/480/1226 259/435/1226 239/1134/1226 -f 258/434/1227 310/433/1227 309/550/1227 -f 145/797/1228 126/709/1228 661/549/1228 -f 598/1378/1229 597/1379/1229 581/1280/1229 -f 840/510/1230 859/1380/1230 858/880/1230 -f 855/1381/1231 731/1382/1231 747/1383/1231 -f 677/1384/1232 694/1385/1232 693/1386/1232 -f 822/1387/1233 707/1388/1233 769/1389/1233 -f 769/1389/1234 932/1390/1234 822/1387/1234 -f 710/1391/1235 720/1392/1235 703/438/1235 -f 859/1380/1236 912/1393/1236 347/401/1236 -f 654/1394/1237 425/553/1237 442/555/1237 -f 608/996/1238 810/1395/1238 674/1396/1238 -f 1194/601/1239 1200/1237/1239 1211/278/1239 -f 2083/820/1240 2065/821/1240 2042/89/1240 -f 793/814/1241 847/816/1241 817/1397/1241 -f 597/1379/1242 629/899/1242 610/1281/1242 -f 2776/1398/1243 2792/1399/1243 2731/1400/1243 -f 651/1401/1244 650/1402/1244 614/1403/1244 -f 735/1404/1245 722/1405/1245 717/1406/1245 -f 1194/601/1246 1195/453/1246 1200/1237/1246 -f 651/1401/1247 663/1407/1247 650/1402/1247 -f 663/1407/1248 681/1408/1248 650/1402/1248 -f 663/1407/1249 719/304/1249 681/1408/1249 -f 3087/1409/1250 3101/1410/1250 3057/1411/1250 -f 268/595/1251 555/1205/1251 1243/19/1251 -f 1490/1412/1252 585/1413/1252 3402/1414/1252 -f 2869/1415/1253 2841/1416/1253 2809/254/1253 -f 2652/724/1254 2687/1417/1254 1908/1418/1254 -f 797/1419/1255 841/1420/1255 829/1421/1255 -f 610/1281/1256 629/899/1256 609/900/1256 -f 3218/548/1257 639/1422/1257 661/549/1257 -f 659/1423/1258 646/1424/1258 691/1425/1258 -f 2817/1426/1259 2619/1427/1259 2060/3/1259 -f 601/1428/1260 92/1063/1260 649/1429/1260 -f 126/709/1261 103/379/1261 661/549/1261 -f 1200/1237/1262 1212/279/1262 1211/278/1262 -f 1166/602/1263 1194/601/1263 1155/492/1263 -f 2967/1052/1264 956/1054/1264 2976/1430/1264 -f 1124/1431/1265 1104/1432/1265 1096/1433/1265 -f 669/1434/1266 693/1386/1266 692/1435/1266 -f 772/1436/1267 744/1437/1267 745/1438/1267 -f 777/1439/1268 817/1397/1268 816/1440/1268 -f 2227/1441/1269 2158/1442/1269 2289/1443/1269 -f 2968/65/1270 2298/64/1270 2446/1444/1270 -f 891/297/1271 261/317/1271 903/275/1271 -f 3473/1107/1272 3472/1445/1272 3458/1446/1272 -f 1002/358/1273 3458/1446/1273 3449/1266/1273 -f 610/1447/1274 609/647/1274 40/444/1274 -f 817/1397/1275 840/510/1275 816/1440/1275 -f 809/1448/1276 628/1449/1276 683/1450/1276 -f 941/1451/1277 900/1452/1277 891/297/1277 -f 900/1452/1278 261/317/1278 891/297/1278 -f 638/1453/1279 660/1454/1279 599/1455/1279 -f 997/1027/1280 1013/406/1280 1006/1456/1280 -f 3459/1457/1281 3443/1371/1281 3485/326/1281 -f 758/1458/1282 816/1440/1282 225/509/1282 -f 851/1459/1283 741/1460/1283 748/1461/1283 -f 376/330/1284 605/1462/1284 886/331/1284 -f 605/1462/1285 815/1463/1285 886/331/1285 -f 886/331/1286 815/1463/1286 941/1451/1286 -f 941/1464/1287 815/1465/1287 900/1466/1287 -f 3510/1467/1288 3444/93/1288 3455/839/1288 -f 593/860/1289 606/859/1289 578/1468/1289 -f 703/438/1290 720/1392/1290 181/436/1290 -f 3434/1469/1291 3468/1470/1291 3438/1471/1291 -f 653/432/1292 866/1472/1292 542/413/1292 -f 701/1473/1293 626/1474/1293 674/1475/1293 -f 872/1476/1294 912/1393/1294 859/1380/1294 -f 741/1460/1295 920/1477/1295 748/1461/1295 -f 748/1461/1296 920/1477/1296 376/330/1296 -f 376/330/1297 920/1477/1297 605/1462/1297 -f 900/1452/1298 702/1478/1298 261/317/1298 -f 559/994/1299 562/1005/1299 2/1029/1299 -f 203/720/1300 750/722/1300 735/1479/1300 -f 786/1480/1301 777/1439/1301 759/1481/1301 -f 843/1482/1302 851/1483/1302 853/1484/1302 -f 843/1482/1303 741/1485/1303 851/1483/1303 -f 605/1486/1304 826/1487/1304 815/1465/1304 -f 702/1478/1305 727/352/1305 261/317/1305 -f 2619/1427/1306 2826/1/1306 2060/3/1306 -f 925/1488/1307 949/1489/1307 695/1490/1307 -f 750/1491/1308 762/1492/1308 735/1404/1308 -f 750/1491/1309 763/1493/1309 762/1492/1309 -f 763/1493/1310 808/1494/1310 762/1492/1310 -f 791/1495/1311 626/1474/1311 845/1496/1311 -f 526/1497/1312 540/1498/1312 899/1499/1312 -f 843/1500/1313 853/1501/1313 3388/1502/1313 -f 900/1466/1314 815/1465/1314 702/1503/1314 -f 702/1478/1315 726/485/1315 727/352/1315 -f 2277/881/1316 1025/882/1316 1083/488/1316 -f 491/1504/1317 582/1505/1317 925/1488/1317 -f 824/1506/1318 873/1507/1318 926/1508/1318 -f 808/1494/1319 800/1509/1319 820/1510/1319 -f 605/1486/1320 935/1511/1320 826/1487/1320 -f 815/1465/1321 643/1512/1321 702/1503/1321 -f 1827/1513/1322 2560/1514/1322 2549/1515/1322 -f 925/1488/1323 695/1490/1323 897/1516/1323 -f 967/1517/1324 1793/1518/1324 35/1519/1324 -f 827/1520/1325 741/1485/1325 843/1482/1325 -f 827/1520/1326 920/1521/1326 741/1485/1326 -f 827/1520/1327 696/1522/1327 920/1521/1327 -f 696/1522/1328 935/1511/1328 920/1521/1328 -f 920/1521/1329 935/1511/1329 605/1486/1329 -f 643/1512/1330 928/1523/1330 702/1503/1330 -f 702/1478/1331 928/1524/1331 726/485/1331 -f 786/1480/1332 794/815/1332 793/814/1332 -f 1014/914/1333 1084/1525/1333 1191/1526/1333 -f 871/1527/1334 671/1528/1334 930/1529/1334 -f 35/1519/1335 1793/1518/1335 2619/1427/1335 -f 770/1530/1336 843/1500/1336 894/1531/1336 -f 770/1532/1337 827/1520/1337 843/1482/1337 -f 826/1487/1338 906/1533/1338 815/1465/1338 -f 906/1533/1339 643/1512/1339 815/1465/1339 -f 726/485/1340 928/1524/1340 946/486/1340 -f 60/861/1341 23/714/1341 606/859/1341 -f 725/1534/1342 724/1370/1342 161/1222/1342 -f 3477/788/1343 3496/1097/1343 3501/350/1343 -f 621/1535/1344 871/1536/1344 865/1537/1344 -f 785/1538/1345 850/1539/1345 621/1540/1345 -f 777/1439/1346 786/1480/1346 793/814/1346 -f 935/1511/1347 752/1541/1347 826/1487/1347 -f 643/1512/1348 909/1542/1348 928/1523/1348 -f 3270/1543/1349 953/1544/1349 573/1545/1349 -f 866/1546/1350 894/1531/1350 3333/1547/1350 -f 877/1548/1351 827/1520/1351 770/1532/1351 -f 752/1541/1352 906/1533/1352 826/1487/1352 -f 906/1533/1353 723/1549/1353 643/1512/1353 -f 909/1542/1354 868/1550/1354 928/1523/1354 -f 928/1523/1355 868/1550/1355 946/1551/1355 -f 683/1450/1356 623/1552/1356 855/1553/1356 -f 662/1554/1357 650/1555/1357 681/1556/1357 -f 721/1557/1358 714/1558/1358 676/1559/1358 -f 808/1494/1359 761/1560/1359 722/1405/1359 -f 790/1561/1360 764/1562/1360 655/1563/1360 -f 881/1564/1361 658/1565/1361 633/1566/1361 -f 2149/1567/1362 1102/1171/1362 1061/517/1362 -f 897/1516/1363 695/1490/1363 896/1568/1363 -f 653/432/1364 904/1569/1364 866/1472/1364 -f 904/1569/1365 894/1570/1365 866/1472/1365 -f 877/1548/1366 696/1522/1366 827/1520/1366 -f 696/1522/1367 907/1571/1367 935/1511/1367 -f 935/1511/1368 907/1571/1368 752/1541/1368 -f 752/1541/1369 723/1549/1369 906/1533/1369 -f 723/1549/1370 909/1542/1370 643/1512/1370 -f 1021/1572/1371 1037/518/1371 1031/1573/1371 -f 1879/1574/1372 1188/1575/1372 1128/1576/1372 -f 2935/1577/1373 2928/1578/1373 2939/1579/1373 -f 896/1568/1374 695/1490/1374 641/1580/1374 -f 939/1581/1375 615/1582/1375 628/1449/1375 -f 686/1583/1376 809/1448/1376 683/1450/1376 -f 3487/1584/1377 1207/333/1377 1208/332/1377 -f 1067/908/1378 1061/517/1378 1102/1171/1378 -f 867/1585/1379 696/1522/1379 877/1548/1379 -f 867/1585/1380 907/1571/1380 696/1522/1380 -f 723/1549/1381 687/1586/1381 909/1542/1381 -f 946/486/1382 738/1587/1382 121/1163/1382 -f 766/1588/1383 791/1589/1383 822/1590/1383 -f 660/1454/1384 638/1453/1384 677/1384/1384 -f 3467/1591/1385 1015/751/1385 1117/750/1385 -f 591/1592/1386 622/1593/1386 611/1594/1386 -f 2506/1595/1387 1009/1596/1387 1010/1597/1387 -f 904/1569/1388 844/1598/1388 894/1570/1388 -f 844/1599/1389 770/1530/1389 894/1531/1389 -f 770/1532/1390 944/1600/1390 877/1548/1390 -f 944/1600/1391 867/1585/1391 877/1548/1391 -f 907/1571/1392 718/1601/1392 752/1541/1392 -f 718/1602/1393 921/1603/1393 752/1604/1393 -f 752/1604/1394 921/1603/1394 723/1605/1394 -f 880/1606/1395 868/1550/1395 909/1542/1395 -f 687/1586/1396 880/1606/1396 909/1542/1396 -f 946/486/1397 868/1607/1397 738/1587/1397 -f 2652/724/1398 1908/1418/1398 2621/1608/1398 -f 3508/21/1399 3475/664/1399 3494/663/1399 -f 384/1609/1400 686/1610/1400 1160/1611/1400 -f 904/1569/1401 532/570/1401 844/1598/1401 -f 757/1612/1402 770/1532/1402 844/1613/1402 -f 757/1612/1403 944/1600/1403 770/1532/1403 -f 723/1605/1404 921/1603/1404 687/1614/1404 -f 840/510/1405 872/1476/1405 859/1380/1405 -f 805/1615/1406 898/1616/1406 932/1390/1406 -f 872/1476/1407 860/1617/1407 913/1618/1407 -f 1041/420/1408 1088/111/1408 1147/261/1408 -f 695/1490/1409 885/1619/1409 641/1580/1409 -f 779/1620/1410 796/1621/1410 744/1622/1410 -f 899/467/1411 489/466/1411 947/1623/1411 -f 809/1624/1412 384/1609/1412 918/1625/1412 -f 563/614/1413 757/828/1413 844/1598/1413 -f 944/1626/1414 672/1627/1414 867/1628/1414 -f 867/1628/1415 836/1629/1415 907/1630/1415 -f 836/1629/1416 792/1631/1416 907/1630/1416 -f 792/1631/1417 718/1602/1417 907/1630/1417 -f 868/1607/1418 574/1632/1418 738/1587/1418 -f 2826/1/1419 1710/1633/1419 2535/2/1419 -f 2711/1634/1420 2838/1635/1420 2019/1636/1420 -f 3189/1637/1421 3152/1638/1421 3140/1218/1421 -f 628/1449/1422 615/1582/1422 623/1552/1422 -f 3483/1639/1423 1897/858/1423 2839/1640/1423 -f 641/1580/1424 885/1619/1424 850/1641/1424 -f 841/1642/1425 830/1643/1425 862/1644/1425 -f 913/1618/1426 860/1617/1426 654/1394/1426 -f 624/1645/1427 890/852/1427 948/794/1427 -f 918/1646/1428 939/1581/1428 628/1449/1428 -f 757/828/1429 914/744/1429 944/1626/1429 -f 672/1627/1430 836/1629/1430 867/1628/1430 -f 688/1647/1431 687/1614/1431 921/1603/1431 -f 934/1648/1432 733/1649/1432 868/1607/1432 -f 880/1650/1433 934/1648/1433 868/1607/1433 -f 868/1607/1434 733/1649/1434 574/1632/1434 -f 2500/1651/1435 578/1468/1435 583/711/1435 -f 1210/1652/1436 1199/493/1436 1149/1043/1436 -f 3332/1653/1437 576/1654/1437 581/1280/1437 -f 620/1655/1438 634/1656/1438 917/1657/1438 -f 1037/518/1439 1044/909/1439 1031/1573/1439 -f 855/1553/1440 887/1658/1440 731/1659/1440 -f 1415/1660/1441 2100/1661/1441 1178/1662/1441 -f 792/1631/1442 892/1663/1442 718/1602/1442 -f 892/1663/1443 921/1603/1443 718/1602/1443 -f 892/1663/1444 688/1647/1444 921/1603/1444 -f 698/1664/1445 880/1606/1445 687/1586/1445 -f 698/1664/1446 934/1665/1446 880/1606/1446 -f 733/1649/1447 919/1666/1447 574/1632/1447 -f 738/1587/1448 574/1632/1448 121/1163/1448 -f 3487/1667/1449 3505/353/1449 3467/1591/1449 -f 683/1668/1450 855/1381/1450 736/1669/1450 -f 850/1641/1451 885/1619/1451 621/1535/1451 -f 779/1670/1452 787/1671/1452 807/1672/1452 -f 630/1673/1453 637/1674/1453 659/1423/1453 -f 914/744/1454 672/1627/1454 944/1626/1454 -f 698/1675/1455 687/1614/1455 688/1647/1455 -f 586/1676/1456 587/1677/1456 51/1291/1456 -f 606/859/1457 23/714/1457 583/711/1457 -f 578/1468/1458 606/859/1458 583/711/1458 -f 2139/1678/1459 2136/1679/1459 1291/1680/1459 -f 852/935/1460 685/1681/1460 825/1682/1460 -f 693/1386/1461 694/1385/1461 715/1683/1461 -f 2149/1567/1462 2133/1684/1462 1102/1171/1462 -f 743/1685/1463 771/1686/1463 778/1687/1463 -f 929/1688/1464 834/1689/1464 595/514/1464 -f 1435/147/1465 1172/1690/1465 1315/156/1465 -f 836/1629/1466 640/1691/1466 792/1631/1466 -f 792/1631/1467 640/1691/1467 892/1663/1467 -f 910/1692/1468 698/1675/1468 688/1647/1468 -f 910/1692/1469 839/1693/1469 698/1675/1469 -f 839/1694/1470 934/1665/1470 698/1664/1470 -f 839/1694/1471 408/1695/1471 934/1665/1471 -f 408/1695/1472 733/1696/1472 934/1665/1472 -f 408/1695/1473 919/1697/1473 733/1696/1473 -f 408/1695/1474 902/144/1474 919/1697/1474 -f 617/1698/1475 902/1699/1475 113/1700/1475 -f 919/1666/1476 902/1699/1476 617/1698/1476 -f 1125/747/1477 2770/1701/1477 1129/748/1477 -f 700/302/1478 719/304/1478 663/1407/1478 -f 621/1535/1479 885/1619/1479 824/1506/1479 -f 3509/1702/1480 805/1703/1480 7/1704/1480 -f 712/1705/1481 713/1706/1481 743/1685/1481 -f 778/1687/1482 771/1686/1482 795/1707/1482 -f 740/1708/1483 736/1709/1483 627/1710/1483 -f 709/1711/1484 836/1629/1484 672/1627/1484 -f 892/1663/1485 910/1692/1485 688/1647/1485 -f 3488/1712/1486 3466/1713/1486 3479/1714/1486 -f 348/927/1487 860/1617/1487 818/1715/1487 -f 214/1716/1488 2797/1717/1488 2183/1718/1488 -f 861/1719/1489 828/1720/1489 807/1721/1489 -f 775/1722/1490 736/1709/1490 740/1708/1490 -f 3429/1723/1491 3505/353/1491 3487/1667/1491 -f 676/1559/1492 691/1425/1492 646/1424/1492 -f 917/1657/1493 634/1656/1493 28/1724/1493 -f 631/1725/1494 630/1673/1494 598/1378/1494 -f 740/1708/1495 627/1710/1495 749/1726/1495 -f 736/1669/1496 855/1381/1496 627/1727/1496 -f 765/1728/1497 836/1629/1497 709/1711/1497 -f 836/1729/1498 923/1730/1498 640/1731/1498 -f 910/1692/1499 804/1732/1499 839/1693/1499 -f 839/1693/1500 838/1733/1500 408/1734/1500 -f 3298/1735/1501 3313/1736/1501 3284/1737/1501 -f 575/1738/1502 584/1739/1502 578/1468/1502 -f 1013/406/1503 1021/1572/1503 1006/1456/1503 -f 834/1689/1504 929/1688/1504 917/1740/1504 -f 181/436/1505 758/1458/1505 225/509/1505 -f 648/1741/1506 647/1742/1506 622/1743/1506 -f 861/1744/1507 874/1745/1507 828/1746/1507 -f 775/1722/1508 683/1450/1508 736/1709/1508 -f 953/1544/1509 3234/1747/1509 975/1748/1509 -f 160/661/1510 203/720/1510 735/1479/1510 -f 1766/57/1511 1869/59/1511 1108/112/1511 -f 528/643/1512 541/689/1512 914/744/1512 -f 709/1749/1513 672/1750/1513 914/1751/1513 -f 836/1729/1514 765/1752/1514 923/1730/1514 -f 923/1753/1515 689/1754/1515 640/1691/1515 -f 640/1691/1516 689/1754/1516 892/1663/1516 -f 892/1663/1517 835/1755/1517 910/1692/1517 -f 804/1732/1518 619/1756/1518 839/1693/1518 -f 838/1733/1519 839/1693/1519 619/1756/1519 -f 719/304/1520 1076/303/1520 730/1757/1520 -f 930/1529/1521 624/1645/1521 948/794/1521 -f 778/1687/1522 795/1707/1522 794/815/1522 -f 611/1594/1523 598/1378/1523 589/1758/1523 -f 714/1558/1524 713/1706/1524 704/1759/1524 -f 590/1760/1525 611/1594/1525 589/1758/1525 -f 2670/1761/1526 3437/244/1526 3511/1762/1526 -f 789/743/1527 945/1763/1527 914/744/1527 -f 945/1763/1528 709/1711/1528 914/744/1528 -f 689/1754/1529 835/1755/1529 892/1663/1529 -f 838/1764/1530 942/1765/1530 408/1695/1530 -f 365/145/1531 902/144/1531 408/1695/1531 -f 942/1765/1532 365/145/1532 408/1695/1532 -f 1039/305/1533 1171/657/1533 922/451/1533 -f 753/1766/1534 754/1093/1534 25/1033/1534 -f 593/860/1535 578/1468/1535 584/1739/1535 -f 407/315/1536 851/1459/1536 748/1461/1536 -f 730/1757/1537 1076/303/1537 1454/1767/1537 -f 1054/1768/1538 1044/909/1538 1086/1769/1538 -f 676/1559/1539 714/1558/1539 704/1759/1539 -f 691/1425/1540 676/1559/1540 704/1759/1540 -f 749/1770/1541 627/1771/1541 893/1772/1541 -f 923/1730/1542 765/1752/1542 709/1749/1542 -f 3402/1414/1543 584/1739/1543 575/1738/1543 -f 649/1773/1544 678/1774/1544 638/1775/1544 -f 1132/301/1545 927/1776/1545 986/282/1545 -f 1005/1777/1546 1021/1572/1546 1031/1573/1546 -f 573/1778/1547 591/1592/1547 590/1760/1547 -f 895/1779/1548 915/854/1548 348/927/1548 -f 887/1658/1549 595/514/1549 842/516/1549 -f 782/604/1550 202/674/1550 645/780/1550 -f 3428/759/1551 2754/705/1551 3457/704/1551 -f 654/1394/1552 442/555/1552 418/539/1552 -f 3483/1780/1553 3434/1469/1553 453/1781/1553 -f 749/1289/1554 893/1782/1554 857/1783/1554 -f 489/466/1555 470/554/1555 947/1623/1555 -f 615/1582/1556 929/1688/1556 595/514/1556 -f 910/1692/1557 835/1755/1557 804/1732/1557 -f 616/1784/1558 365/145/1558 942/1765/1558 -f 2548/271/1559 2744/1785/1559 3450/1786/1559 -f 585/1413/1560 593/860/1560 584/1739/1560 -f 3437/244/1561 2670/1761/1561 2592/648/1561 -f 3054/1787/1562 3091/1788/1562 3062/1789/1562 -f 729/1790/1563 760/1791/1563 773/1792/1563 -f 786/1480/1564 778/1687/1564 794/815/1564 -f 340/1156/1565 272/1094/1565 28/1154/1565 -f 591/1592/1566 611/1594/1566 590/1760/1566 -f 1530/1793/1567 22/712/1567 36/715/1567 -f 861/1744/1568 895/1779/1568 874/1745/1568 -f 38/396/1569 588/477/1569 580/1313/1569 -f 895/1779/1570 940/1794/1570 915/854/1570 -f 832/1795/1571 923/1730/1571 709/1749/1571 -f 923/1730/1572 879/1796/1572 689/1797/1572 -f 689/1754/1573 788/1798/1573 835/1755/1573 -f 917/1657/1574 28/1724/1574 596/1799/1574 -f 1335/607/1575 1287/27/1575 1261/29/1575 -f 514/123/1576 1274/1164/1576 1265/124/1576 -f 407/315/1577 2279/1800/1577 851/1459/1577 -f 3504/246/1578 3428/759/1578 3457/704/1578 -f 1517/1138/1579 50/1189/1579 49/1136/1579 -f 834/1689/1580 596/1801/1580 697/515/1580 -f 1134/1802/1581 918/1625/1581 384/1609/1581 -f 715/1683/1582 773/1792/1582 745/1438/1582 -f 712/1705/1583 743/1685/1583 778/1687/1583 -f 694/1385/1584 716/1803/1584 729/1790/1584 -f 654/1804/1585 361/1805/1585 425/1806/1585 -f 615/1582/1586 595/514/1586 623/1552/1586 -f 739/1807/1587 917/1740/1587 929/1688/1587 -f 940/1794/1588 655/1563/1588 607/1808/1588 -f 655/1809/1589 526/1497/1589 899/1499/1589 -f 789/743/1590 936/1810/1590 945/1763/1590 -f 832/1795/1591 709/1749/1591 945/1811/1591 -f 936/1810/1592 832/1812/1592 945/1763/1592 -f 832/1795/1593 879/1796/1593 923/1730/1593 -f 835/1813/1594 1119/1814/1594 804/1815/1594 -f 1119/1814/1595 846/1816/1595 619/1817/1595 -f 804/1815/1596 1119/1814/1596 619/1817/1596 -f 829/1818/1597 875/1819/1597 861/1719/1597 -f 272/1094/1598 340/1156/1598 1462/1095/1598 -f 876/1820/1599 491/1504/1599 925/1488/1599 -f 949/1489/1600 824/1506/1600 885/1619/1600 -f 670/1821/1601 678/1774/1601 649/1773/1601 -f 816/1440/1602 840/510/1602 225/509/1602 -f 865/1822/1603 948/794/1603 856/1326/1603 -f 746/1823/1604 785/1538/1604 764/1562/1604 -f 607/1808/1605 655/1563/1605 899/467/1605 -f 807/1721/1606 796/1621/1606 779/1620/1606 -f 936/1810/1607 789/743/1607 55/802/1607 -f 879/1796/1608 776/1824/1608 689/1797/1608 -f 755/1825/1609 788/1826/1609 689/1797/1609 -f 629/899/1610 630/1673/1610 659/1423/1610 -f 623/1552/1611 887/1658/1611 855/1553/1611 -f 834/1689/1612 917/1740/1612 596/1801/1612 -f 857/1783/1613 893/1782/1613 805/1703/1613 -f 929/1688/1614 615/1582/1614 881/1564/1614 -f 675/1827/1615 690/1254/1615 659/1423/1615 -f 927/1828/1616 1132/1829/1616 769/1389/1616 -f 1006/1456/1617 1021/1572/1617 1005/1777/1617 -f 760/1791/1618 799/1830/1618 773/1792/1618 -f 842/516/1619 674/1475/1619 626/1474/1619 -f 763/1493/1620 800/1509/1620 808/1494/1620 -f 818/1715/1621 828/1746/1621 348/927/1621 -f 800/1509/1622 831/1831/1622 820/1510/1622 -f 798/1832/1623 797/1419/1623 780/1833/1623 -f 895/1779/1624 916/1834/1624 940/1794/1624 -f 874/1745/1625 895/1779/1625 348/927/1625 -f 599/1835/1626 591/1836/1626 974/1837/1626 -f 612/1838/1627 660/1454/1627 648/1839/1627 -f 648/1839/1628 660/1454/1628 669/1434/1628 -f 936/1840/1629 706/1841/1629 832/1795/1629 -f 706/1841/1630 776/1824/1630 879/1796/1630 -f 832/1795/1631 706/1841/1631 879/1796/1631 -f 776/1824/1632 755/1825/1632 689/1797/1632 -f 629/899/1633 659/1423/1633 636/551/1633 -f 875/1842/1634 848/1843/1634 916/1834/1634 -f 315/341/1635 823/142/1635 1444/1844/1635 -f 831/1831/1636 863/1845/1636 820/1510/1636 -f 2047/593/1637 2068/1846/1637 1154/364/1637 -f 2303/1847/1638 1710/1633/1638 2890/1848/1638 -f 887/1658/1639 842/516/1639 731/1659/1639 -f 659/1423/1640 691/1425/1640 675/1827/1640 -f 829/1421/1641 861/1744/1641 807/1672/1641 -f 831/1831/1642 876/1820/1642 863/1845/1642 -f 788/1826/1643 755/1825/1643 1357/345/1643 -f 680/575/1644 682/745/1644 774/1061/1644 -f 607/1808/1645 947/1623/1645 426/700/1645 -f 862/1644/1646 883/1849/1646 848/1850/1646 -f 591/1592/1647 599/1455/1647 612/1838/1647 -f 864/1851/1648 641/1852/1648 746/1823/1648 -f 930/1529/1649 665/1853/1649 624/1645/1649 -f 2552/1854/1650 1047/1855/1650 1023/1856/1650 -f 1042/427/1651 1218/1857/1651 3507/1858/1651 -f 936/1840/1652 937/1859/1652 706/1841/1652 -f 50/1189/1653 1517/1138/1653 579/1860/1653 -f 51/1291/1654 587/1677/1654 588/477/1654 -f 791/1589/1655 845/1861/1655 888/1862/1655 -f 297/967/1656 41/936/1656 889/1863/1656 -f 3470/281/1657 1163/280/1657 3476/355/1657 -f 2592/648/1658 1689/1864/1658 2424/245/1658 -f 1834/1865/1659 2515/1866/1659 1835/1867/1659 -f 761/1560/1660 799/1868/1660 760/1869/1660 -f 3484/1870/1661 3474/1871/1661 3486/1075/1661 -f 772/1436/1662 787/1671/1662 779/1670/1662 -f 589/1758/1663 598/1378/1663 581/1280/1663 -f 772/1436/1664 780/1833/1664 787/1671/1664 -f 943/1872/1665 706/1873/1665 313/803/1665 -f 776/1824/1666 684/1008/1666 755/1825/1666 -f 1357/345/1667 755/1825/1667 1238/346/1667 -f 1407/1874/1668 340/1875/1668 634/1656/1668 -f 862/1644/1669 896/1568/1669 883/1849/1669 -f 1092/1876/1670 666/1877/1670 1117/1878/1670 -f 3332/1653/1671 581/1280/1671 33/446/1671 -f 538/779/1672 125/572/1672 537/598/1672 -f 2992/1879/1673 2991/1880/1673 2440/1881/1673 -f 678/1774/1674 677/1882/1674 638/1775/1674 -f 615/1582/1675 1189/1883/1675 658/1565/1675 -f 2989/1884/1676 2977/1885/1676 2429/1886/1676 -f 819/1887/1677 884/1888/1677 897/1516/1677 -f 576/1654/1678 573/1778/1678 590/1760/1678 -f 828/1746/1679 874/1745/1679 348/927/1679 -f 780/1833/1680 772/1436/1680 745/1438/1680 -f 684/1008/1681 776/1824/1681 706/1841/1681 -f 2261/1889/1682 2335/1890/1682 1887/1891/1682 -f 181/436/1683 742/1892/1683 758/1458/1683 -f 50/1189/1684 586/1676/1684 51/1291/1684 -f 912/1393/1685 911/402/1685 347/401/1685 -f 805/1703/1686 932/1893/1686 7/1704/1686 -f 747/1383/1687 791/1589/1687 766/1588/1687 -f 898/1616/1688 766/1894/1688 822/1387/1688 -f 1298/1895/1689 1119/1814/1689 1357/345/1689 -f 2761/238/1690 2731/1400/1690 2791/239/1690 -f 648/1741/1691 669/1896/1691 647/1742/1691 -f 717/1406/1692 722/1405/1692 699/1897/1692 -f 897/1516/1693 896/1568/1693 862/1644/1693 -f 863/1845/1694 884/1888/1694 819/1887/1694 -f 693/1898/1695 715/1899/1695 705/1900/1695 -f 715/1683/1696 745/1438/1696 705/1901/1696 -f 706/1873/1697 937/801/1697 313/803/1697 -f 806/1902/1698 828/1746/1698 818/1715/1698 -f 985/319/1699 2027/1903/1699 1222/1084/1699 -f 731/1659/1700 842/516/1700 791/1495/1700 -f 651/1401/1701 1043/1904/1701 663/1407/1701 -f 659/1423/1702 690/1254/1702 636/551/1702 -f 597/1379/1703 598/1378/1703 630/1673/1703 -f 581/1280/1704 590/1760/1704 589/1758/1704 -f 818/1715/1705 860/1617/1705 847/816/1705 -f 1076/303/1706 1399/138/1706 1454/1767/1706 -f 808/1494/1707 819/1887/1707 761/1560/1707 -f 2719/1905/1708 2706/1906/1708 2691/1907/1708 -f 717/1406/1709 699/1897/1709 679/1908/1709 -f 1988/272/1710 1284/1909/1710 1439/273/1710 -f 684/1008/1711 1297/1007/1711 755/1825/1711 -f 755/1825/1712 1297/1007/1712 1238/346/1712 -f 1039/305/1713 1091/513/1713 1171/657/1713 -f 938/537/1714 911/402/1714 912/1393/1714 -f 857/1783/1715 3499/1910/1715 3426/1004/1715 -f 699/1897/1716 694/1911/1716 677/1882/1716 -f 14/1912/1717 1714/1913/1717 13/1307/1717 -f 1854/1914/1718 1861/1915/1718 1853/1916/1718 -f 1283/1917/1719 1291/1181/1719 768/1180/1719 -f 898/1616/1720 893/1918/1720 627/1710/1720 -f 721/1557/1721 705/1901/1721 745/1438/1721 -f 860/1919/1722 361/1805/1722 654/1804/1722 -f 2298/64/1723 2480/1920/1723 2464/1921/1723 -f 125/572/1724 645/780/1724 281/415/1724 -f 758/1458/1725 777/1439/1725 816/1440/1725 -f 607/1808/1726 899/467/1726 947/1623/1726 -f 721/1557/1727 745/1438/1727 744/1437/1727 -f 3450/1354/1728 3435/1922/1728 3447/982/1728 -f 1176/491/1729 1199/493/1729 1210/1652/1729 -f 745/1438/1730 773/1792/1730 780/1833/1730 -f 996/897/1731 1006/1923/1731 1005/1924/1731 -f 2197/1925/1732 2192/1926/1732 2257/1927/1732 -f 799/1830/1733 798/1832/1733 773/1792/1733 -f 799/1830/1734 830/1928/1734 798/1832/1734 -f 1132/301/1735 3451/1929/1735 7/1704/1735 -f 596/1799/1736 784/1930/1736 608/996/1736 -f 784/1930/1737 753/1931/1737 608/996/1737 -f 3195/1932/1738 639/1933/1738 3218/1934/1738 -f 1465/1035/1739 1183/1034/1739 831/1831/1739 -f 712/1705/1740 778/1687/1740 759/1481/1740 -f 893/1918/1741 898/1616/1741 805/1615/1741 -f 2543/1935/1742 1830/1936/1742 1197/1074/1742 -f 791/1495/1743 842/516/1743 626/1474/1743 -f 3228/813/1744 3242/1937/1744 3241/309/1744 -f 876/1820/1745 831/1831/1745 1198/1938/1745 -f 762/1492/1746 808/1494/1746 722/1405/1746 -f 3355/1939/1747 1922/1940/1747 3321/1941/1747 -f 852/935/1748 889/1863/1748 41/936/1748 -f 1005/1777/1749 1031/1573/1749 1017/1942/1749 -f 1132/1829/1750 932/1390/1750 769/1389/1750 -f 621/1535/1751 824/1506/1751 871/1536/1751 -f 693/1386/1752 705/1901/1752 692/1435/1752 -f 2164/1943/1753 1250/1944/1753 2174/1945/1753 -f 627/1710/1754 766/1894/1754 898/1616/1754 -f 1872/1946/1755 3506/1947/1755 3510/1039/1755 -f 453/1948/1756 1134/1802/1756 384/1609/1756 -f 627/1727/1757 747/1383/1757 766/1588/1757 -f 747/1383/1758 731/1382/1758 791/1589/1758 -f 681/1556/1759 725/1534/1759 161/1222/1759 -f 1043/1904/1760 700/302/1760 663/1407/1760 -f 613/1949/1761 662/1554/1761 639/1422/1761 -f 746/1950/1762 850/1641/1762 785/1951/1762 -f 916/1834/1763 864/1851/1763 878/1952/1763 -f 787/1671/1764 797/1419/1764 807/1672/1764 -f 997/1026/1765 996/897/1765 968/632/1765 -f 795/1707/1766 818/1715/1766 794/815/1766 -f 2161/1082/1767 3442/1953/1767 1894/383/1767 -f 817/1397/1768 872/1476/1768 840/510/1768 -f 681/1556/1769 719/1954/1769 725/1534/1769 -f 780/1833/1770 797/1419/1770 787/1671/1770 -f 143/1028/1771 710/1391/1771 703/438/1771 -f 1263/154/1772 1161/916/1772 803/915/1772 -f 803/915/1773 1452/155/1773 1263/154/1773 -f 1810/1228/1774 1811/1362/1774 1577/1955/1774 -f 724/1370/1775 198/1045/1775 161/1222/1775 -f 3480/1300/1776 3499/1910/1776 3509/1702/1776 -f 2347/1956/1777 813/1957/1777 214/1716/1777 -f 3508/21/1778 3493/399/1778 3475/664/1778 -f 1193/334/1779 1014/914/1779 438/489/1779 -f 1651/1958/1780 1371/1959/1780 1355/1960/1780 -f 2708/1961/1781 2424/245/1781 1689/1864/1781 -f 841/1642/1782 862/1644/1782 848/1850/1782 -f 809/1448/1783 918/1646/1783 628/1449/1783 -f 697/515/1784 595/514/1784 834/1689/1784 -f 883/1849/1785 896/1568/1785 641/1580/1785 -f 1155/492/1786 1194/601/1786 1199/493/1786 -f 27/397/1787 580/1313/1787 572/1962/1787 -f 949/1489/1788 1030/1963/1788 824/1506/1788 -f 691/1425/1789 704/1759/1789 675/1827/1789 -f 962/1964/1790 961/979/1790 951/1965/1790 -f 3478/428/1791 3448/1106/1791 3481/1108/1791 -f 1993/1966/1792 586/1676/1792 579/1860/1792 -f 654/1394/1793 418/539/1793 938/537/1793 -f 1267/191/1794 1217/193/1794 242/1967/1794 -f 662/1554/1795 681/1556/1795 145/797/1795 -f 785/1538/1796 865/1822/1796 526/1325/1796 -f 734/1968/1797 181/436/1797 720/1392/1797 -f 830/1643/1798 841/1642/1798 797/1969/1798 -f 780/1833/1799 773/1792/1799 798/1832/1799 -f 913/1618/1800 654/1394/1800 938/537/1800 -f 1013/406/1801 1037/518/1801 1021/1572/1801 -f 668/830/1802 271/204/1802 1452/1970/1802 -f 1142/746/1803 1193/334/1803 438/489/1803 -f 977/867/1804 1111/1971/1804 3462/1972/1804 -f 858/880/1805 859/1380/1805 347/401/1805 -f 596/1799/1806 28/1724/1806 784/1930/1806 -f 318/1973/1807 475/1349/1807 1251/1364/1807 -f 1465/1035/1808 831/1831/1808 800/1509/1808 -f 649/1773/1809 600/1974/1809 601/1975/1809 -f 1958/232/1810 2712/1976/1810 2724/1977/1810 -f 791/1589/1811 888/1862/1811 822/1590/1811 -f 977/867/1812 965/1978/1812 1111/1971/1812 -f 614/1403/1813 994/1979/1813 651/1401/1813 -f 803/1980/1814 668/830/1814 1452/1970/1814 -f 513/558/1815 680/575/1815 501/556/1815 -f 975/1981/1816 3204/1982/1816 3205/1983/1816 -f 3428/759/1817 2766/681/1817 2669/857/1817 -f 1076/303/1818 1085/1984/1818 1399/138/1818 -f 1200/1237/1819 1201/511/1819 1212/279/1819 -f 819/1887/1820 830/1643/1820 799/1868/1820 -f 601/1975/1821 600/1974/1821 975/1748/1821 -f 597/1379/1822 630/1673/1822 629/899/1822 -f 101/508/1823 636/551/1823 690/1254/1823 -f 983/1985/1824 1189/1986/1824 939/1987/1824 -f 679/1988/1825 670/1062/1825 136/378/1825 -f 201/694/1826 120/494/1826 362/357/1826 -f 999/1989/1827 988/448/1827 2505/1990/1827 -f 160/661/1828 735/1479/1828 717/1991/1828 -f 3498/777/1829 3445/354/1829 3505/353/1829 -f 1014/914/1830 1191/1526/1830 438/489/1830 -f 722/1405/1831 716/1992/1831 699/1897/1831 -f 912/1993/1832 913/1994/1832 938/1995/1832 -f 913/1618/1833 912/1393/1833 872/1476/1833 -f 145/797/1834 681/1556/1834 161/1222/1834 -f 876/1820/1835 884/1888/1835 863/1845/1835 -f 798/1996/1836 830/1643/1836 797/1969/1836 -f 716/1803/1837 761/1997/1837 760/1791/1837 -f 2458/1998/1838 2440/1881/1838 969/1999/1838 -f 711/2000/1839 742/1892/1839 734/1968/1839 -f 710/1391/1840 711/2000/1840 734/1968/1840 -f 924/2001/1841 803/915/1841 1175/1221/1841 -f 1014/914/1842 1175/1221/1842 803/915/1842 -f 635/2002/1843 668/830/1843 803/1980/1843 -f 2322/2003/1844 2220/2004/1844 2382/2005/1844 -f 722/1405/1845 761/1560/1845 716/1992/1845 -f 662/1554/1846 661/549/1846 639/1422/1846 -f 860/1617/1847 872/1476/1847 817/1397/1847 -f 847/816/1848 860/1617/1848 817/1397/1848 -f 1094/1170/1849 1113/139/1849 1086/1769/1849 -f 848/1843/1850 875/1842/1850 829/1421/1850 -f 649/1773/1851 638/1775/1851 600/1974/1851 -f 848/1843/1852 883/2006/1852 916/1834/1852 -f 865/1822/1853 856/1326/1853 526/1325/1853 -f 3479/312/1854 2264/698/1854 3425/313/1854 -f 829/1421/1855 841/1420/1855 848/1843/1855 -f 597/1379/1856 610/1281/1856 581/1280/1856 -f 924/2001/1857 635/2007/1857 803/915/1857 -f 635/2007/1858 625/2008/1858 811/2009/1858 -f 668/830/1859 635/2002/1859 811/831/1859 -f 532/570/1860 563/614/1860 844/1598/1860 -f 608/996/1861 560/2010/1861 2/997/1861 -f 1452/1970/1862 271/204/1862 1440/290/1862 -f 570/2011/1863 3406/2012/1863 586/1676/1863 -f 819/1887/1864 897/1516/1864 862/1644/1864 -f 596/1799/1865 608/996/1865 751/2013/1865 -f 670/1821/1866 679/1908/1866 678/1774/1866 -f 777/1439/1867 793/814/1867 817/1397/1867 -f 2552/1854/1868 1059/2014/1868 1047/1855/1868 -f 675/1827/1869 704/1759/1869 711/2000/1869 -f 742/1892/1870 759/1481/1870 758/1458/1870 -f 685/1681/1871 811/831/1871 625/2015/1871 -f 642/2016/1872 685/2017/1872 625/2008/1872 -f 711/2000/1873 712/1705/1873 742/1892/1873 -f 822/1590/1874 888/1862/1874 707/2018/1874 -f 3405/2019/1875 570/2011/1875 586/1676/1875 -f 3406/2012/1876 587/1677/1876 586/1676/1876 -f 768/1180/1877 767/2020/1877 869/2021/1877 -f 864/1851/1878 790/1561/1878 878/1952/1878 -f 819/1887/1879 862/1644/1879 830/1643/1879 -f 925/1488/1880 582/1505/1880 949/1489/1880 -f 943/1872/1881 684/2022/1881 706/1873/1881 -f 679/1908/1882 699/1897/1882 678/1774/1882 -f 1189/1883/1883 633/1566/1883 658/1565/1883 -f 888/1862/1884 644/2023/1884 707/2018/1884 -f 883/2006/1885 864/1851/1885 916/1834/1885 -f 985/319/1886 1064/983/1886 1026/320/1886 -f 712/1705/1887 759/1481/1887 742/1892/1887 -f 901/2024/1888 635/2002/1888 924/2025/1888 -f 802/2026/1889 625/2015/1889 635/2002/1889 -f 802/2026/1890 642/2027/1890 625/2015/1890 -f 769/1389/1891 854/2028/1891 927/1828/1891 -f 775/1316/1892 105/2029/1892 1004/1317/1892 -f 2423/2030/1893 1307/2031/1893 130/2032/1893 -f 761/1560/1894 819/1887/1894 799/1868/1894 -f 3205/2033/1895 601/1975/1895 975/1748/1895 -f 599/1455/1896 660/1454/1896 612/1838/1896 -f 1324/2034/1897 1460/2035/1897 1308/164/1897 -f 778/1687/1898 786/1480/1898 759/1481/1898 -f 2246/2036/1899 2335/1890/1899 2261/1889/1899 -f 940/1794/1900 790/1561/1900 655/1563/1900 -f 930/1529/1901 948/794/1901 865/1822/1901 -f 426/700/1902 915/854/1902 607/1808/1902 -f 1291/1680/1903 2136/1679/1903 1303/2037/1903 -f 871/1536/1904 926/1508/1904 671/2038/1904 -f 734/1968/1905 742/1892/1905 181/436/1905 -f 1030/1963/1906 873/1507/1906 824/1506/1906 -f 692/1435/1907 705/1901/1907 721/1557/1907 -f 1199/493/1908 922/451/1908 1149/1043/1908 -f 2498/2039/1909 2515/2040/1909 2478/2041/1909 -f 649/1429/1910 92/1063/1910 670/1062/1910 -f 758/1458/1911 759/1481/1911 777/1439/1911 -f 576/1654/1912 590/1760/1912 581/1280/1912 -f 3455/2042/1913 3444/2043/1913 3478/428/1913 -f 666/2044/1914 924/2001/1914 1117/2045/1914 -f 666/1877/1915 901/2024/1915 924/2025/1915 -f 825/2046/1916 685/2017/1916 642/2016/1916 -f 685/1681/1917 852/935/1917 471/31/1917 -f 1167/2047/1918 1195/453/1918 1156/452/1918 -f 898/1616/1919 822/1387/1919 932/1390/1919 -f 615/1582/1920 658/1565/1920 881/1564/1920 -f 807/1672/1921 797/1419/1921 829/1421/1921 -f 697/2048/1922 596/1799/1922 751/2013/1922 -f 1015/751/1923 1163/280/1923 1092/752/1923 -f 772/1436/1924 779/1670/1924 744/1437/1924 -f 1465/1035/1925 800/1509/1925 763/1493/1925 -f 751/2013/1926 608/996/1926 674/1396/1926 -f 1038/1356/1927 1045/405/1927 1018/404/1927 -f 635/2002/1928 901/2024/1928 802/2026/1928 -f 656/2049/1929 642/2027/1929 802/2026/1929 -f 656/2049/1930 825/1682/1930 642/2027/1930 -f 864/1851/1931 746/1823/1931 790/1561/1931 -f 1167/2047/1932 1201/511/1932 1195/453/1932 -f 3406/2012/1933 588/477/1933 587/1677/1933 -f 662/1554/1934 145/797/1934 661/549/1934 -f 145/797/1935 161/1222/1935 155/710/1935 -f 1210/1652/1936 1149/1043/1936 8/2050/1936 -f 694/1385/1937 729/1790/1937 715/1683/1937 -f 715/1683/1938 729/1790/1938 773/1792/1938 -f 881/2051/1939 633/2052/1939 869/2021/1939 -f 1083/488/1940 1025/882/1940 1142/746/1940 -f 669/1434/1941 692/1435/1941 647/2053/1941 -f 796/2054/1942 806/1902/1942 795/1707/1942 -f 764/2055/1943 526/1497/1943 655/1809/1943 -f 883/2006/1944 641/1852/1944 864/1851/1944 -f 1317/2056/1945 1094/1170/1945 1114/1172/1945 -f 695/1490/1946 949/1489/1946 885/1619/1946 -f 682/745/1947 318/2057/1947 774/1061/1947 -f 667/2058/1948 802/2026/1948 901/2024/1948 -f 667/2058/1949 656/2049/1949 802/2026/1949 -f 732/2059/1950 825/2060/1950 656/2061/1950 -f 849/2062/1951 852/2063/1951 825/2046/1951 -f 633/2052/1952 728/2064/1952 869/2021/1952 -f 869/2021/1953 728/2064/1953 768/1180/1953 -f 974/1837/1954 591/1836/1954 573/1545/1954 -f 744/1622/1955 771/2065/1955 743/2066/1955 -f 929/1688/1956 881/1564/1956 869/2067/1956 -f 869/2021/1957 620/1655/1957 739/2068/1957 -f 2797/1717/1958 2816/2069/1958 2183/1718/1958 -f 824/1506/1959 926/1508/1959 871/1536/1959 -f 2422/2070/1960 2459/2071/1960 2517/2072/1960 -f 538/779/1961 645/780/1961 125/572/1961 -f 2483/2073/1962 988/448/1962 978/450/1962 -f 908/2074/1963 1093/277/1963 1201/511/1963 -f 901/2024/1964 666/1877/1964 667/2058/1964 -f 667/2075/1965 732/2059/1965 656/2061/1965 -f 732/2076/1966 849/2077/1966 825/1682/1966 -f 889/1863/1967 852/935/1967 849/2077/1967 -f 908/2074/1968 1143/512/1968 1093/277/1968 -f 3483/1639/1969 3453/856/1969 1897/858/1969 -f 717/1991/1970 679/1988/1970 136/378/1970 -f 875/1819/1971 916/2078/1971 895/2079/1971 -f 863/1845/1972 819/1887/1972 808/1494/1972 -f 568/2080/1973 665/1853/1973 930/1529/1973 -f 622/1593/1974 647/2053/1974 631/1725/1974 -f 647/2081/1975 646/2082/1975 631/2083/1975 -f 622/1593/1976 631/1725/1976 611/1594/1976 -f 692/2084/1977 676/2085/1977 647/1742/1977 -f 865/1822/1978 871/1527/1978 930/1529/1978 -f 869/2021/1979 767/2020/1979 620/1655/1979 -f 624/1645/1980 604/1174/1980 890/852/1980 -f 471/31/1981 811/831/1981 685/1681/1981 -f 897/1516/1982 884/1888/1982 925/1488/1982 -f 933/2086/1983 732/2076/1983 667/2058/1983 -f 3406/2012/1984 571/2087/1984 588/477/1984 -f 820/1510/1985 863/1845/1985 808/1494/1985 -f 794/815/1986 818/1715/1986 847/816/1986 -f 941/1451/1987 891/297/1987 886/331/1987 -f 591/1592/1988 612/1838/1988 622/1593/1988 -f 714/1558/1989 721/1557/1989 713/1706/1989 -f 721/1557/1990 744/1437/1990 713/1706/1990 -f 744/1622/1991 796/1621/1991 771/2065/1991 -f 878/1952/1992 790/1561/1992 940/1794/1992 -f 2478/2088/1993 2515/1866/1993 1834/1865/1993 -f 997/1026/1994 1006/1923/1994 996/897/1994 -f 842/516/1995 697/515/1995 751/2089/1995 -f 854/2028/1996 933/2086/1996 667/2058/1996 -f 632/2090/1997 732/2059/1997 933/2091/1997 -f 732/2076/1998 632/2092/1998 849/2077/1998 -f 674/1475/1999 842/516/1999 751/2089/1999 -f 1862/174/2000 1893/2093/2000 2093/338/2000 -f 18/2094/2001 810/1395/2001 562/995/2001 -f 571/2087/2002 3406/2012/2002 3376/2095/2002 -f 68/818/2003 80/209/2003 60/784/2003 -f 645/780/2004 202/674/2004 281/415/2004 -f 1036/2096/2005 1209/2097/2005 504/2098/2005 -f 1155/492/2006 2197/1925/2006 2257/1927/2006 -f 647/1742/2007 676/2085/2007 646/2099/2007 -f 2096/2100/2008 2651/2101/2008 2499/2102/2008 -f 641/1580/2009 850/1641/2009 746/1950/2009 -f 1175/419/2010 1181/418/2010 812/2103/2010 -f 927/1828/2011 667/2058/2011 666/1877/2011 -f 927/1828/2012 854/2028/2012 667/2058/2012 -f 905/2104/2013 889/2105/2013 849/2062/2013 -f 749/1770/2014 105/2029/2014 740/2106/2014 -f 1083/488/2015 1142/746/2015 438/489/2015 -f 762/1492/2016 722/1405/2016 735/1404/2016 -f 744/1622/2017 743/2066/2017 713/2107/2017 -f 631/2083/2018 646/2082/2018 637/2108/2018 -f 796/2054/2019 795/1707/2019 771/1686/2019 -f 719/1954/2020 730/2109/2020 725/1534/2020 -f 612/1838/2021 648/1839/2021 622/1593/2021 -f 360/901/2022 471/31/2022 852/935/2022 -f 971/977/2023 990/2110/2023 970/978/2023 -f 690/1254/2024 711/2000/2024 710/1391/2024 -f 600/1974/2025 599/1835/2025 975/1748/2025 -f 884/1888/2026 876/1820/2026 925/1488/2026 -f 949/1489/2027 582/1505/2027 1030/1963/2027 -f 1163/2111/2028 666/2044/2028 1092/2112/2028 -f 854/2028/2029 882/2113/2029 933/2086/2029 -f 882/2114/2030 632/2090/2030 933/2091/2030 -f 644/2115/2031 849/2077/2031 632/2092/2031 -f 849/2077/2032 644/2115/2032 905/2116/2032 -f 637/1674/2033 646/1424/2033 659/1423/2033 -f 2548/2117/2034 2852/2118/2034 2744/2119/2034 -f 3439/2120/2035 3493/399/2035 3471/398/2035 -f 904/1569/2036 653/432/2036 532/570/2036 -f 624/1645/2037 665/1853/2037 604/1174/2037 -f 475/1352/2038 682/745/2038 512/1353/2038 -f 929/2121/2039 869/2021/2039 739/2068/2039 -f 614/2122/2040 650/1555/2040 662/1554/2040 -f 614/1403/2041 662/2123/2041 613/2124/2041 -f 3279/106/2042 3294/105/2042 3342/165/2042 -f 707/2018/2043 632/2090/2043 882/2114/2043 -f 707/2018/2044 644/2023/2044 632/2090/2044 -f 810/1395/2045 297/2125/2045 889/2105/2045 -f 905/2104/2046 810/1395/2046 889/2105/2046 -f 2976/2126/2047 2977/1885/2047 2989/1884/2047 -f 1355/1960/2048 1633/2127/2048 1651/1958/2048 -f 571/2087/2049 580/1313/2049 588/477/2049 -f 1964/2128/2050 3236/2129/2050 3439/2130/2050 -f 1328/2131/2051 943/1872/2051 313/803/2051 -f 785/1538/2052 621/1540/2052 865/1822/2052 -f 611/1594/2053 631/1725/2053 598/1378/2053 -f 627/1727/2054 855/1381/2054 747/1383/2054 -f 1171/657/2055 316/356/2055 594/1044/2055 -f 878/1952/2056 940/1794/2056 916/1834/2056 -f 699/1897/2057 677/1882/2057 678/1774/2057 -f 1067/908/2058 1077/1175/2058 1044/909/2058 -f 600/1974/2059 638/1775/2059 599/1835/2059 -f 699/1897/2060 716/1992/2060 694/1911/2060 -f 915/854/2061 940/1794/2061 607/1808/2061 -f 1454/2132/2062 724/1370/2062 730/2109/2062 -f 845/1496/2063 905/2116/2063 644/2115/2063 -f 297/2125/2064 810/1395/2064 18/2094/2064 -f 3390/1375/2065 1986/1176/2065 2004/1177/2065 -f 1267/191/2066 1242/2133/2066 1285/192/2066 -f 1898/2134/2067 2808/2135/2067 2062/2136/2067 -f 1246/2137/2068 1083/488/2068 1127/490/2068 -f 407/315/2069 3336/314/2069 2279/1800/2069 -f 704/1759/2070 712/1705/2070 711/2000/2070 -f 796/2054/2071 807/1672/2071 806/1902/2071 -f 630/1673/2072 631/1725/2072 637/1674/2072 -f 560/1032/2073 608/2138/2073 753/1766/2073 -f 739/2068/2074 620/1655/2074 917/1657/2074 -f 713/1706/2075 712/1705/2075 704/1759/2075 -f 716/1803/2076 760/1791/2076 729/1790/2076 -f 608/996/2077 562/995/2077 810/1395/2077 -f 1386/129/2078 134/203/2078 363/1233/2078 -f 790/1561/2079 746/1823/2079 764/1562/2079 -f 660/1454/2080 677/1384/2080 669/1434/2080 -f 854/2028/2081 769/1389/2081 882/2113/2081 -f 769/1389/2082 707/1388/2082 882/2113/2082 -f 674/1396/2083 810/1395/2083 905/2104/2083 -f 888/2139/2084 845/1496/2084 644/2115/2084 -f 690/1254/2085 675/1827/2085 711/2000/2085 -f 999/1989/2086 1018/1025/2086 988/448/2086 -f 710/2140/2087 734/2141/2087 720/2142/2087 -f 785/1538/2088 526/1325/2088 764/1562/2088 -f 807/1672/2089 828/1746/2089 806/1902/2089 -f 623/1552/2090 595/514/2090 887/1658/2090 -f 795/1707/2091 806/1902/2091 818/1715/2091 -f 692/2084/2092 721/2143/2092 676/2085/2092 -f 875/1819/2093 895/2079/2093 861/1719/2093 -f 628/1449/2094 623/1552/2094 683/1450/2094 -f 2481/2144/2095 2465/2145/2095 2503/2146/2095 -f 669/1434/2096 677/1384/2096 693/1386/2096 -f 701/1473/2097 905/2116/2097 845/1496/2097 -f 905/2116/2098 701/1473/2098 674/1475/2098 -f 580/1313/2099 571/2087/2099 3348/2147/2099 -f 781/2148/2100 3252/2149/2100 1572/2150/2100 -f 636/551/2101 75/552/2101 629/899/2101 -f 1367/2151/2102 767/2020/2102 1303/1179/2102 -f 626/1474/2103 701/1473/2103 845/1496/2103 -f 1112/2152/2104 1040/2153/2104 1011/2154/2104 -f 2045/2155/2105 2044/2156/2105 2017/2157/2105 -f 2045/2155/2106 2058/2158/2106 2044/2156/2106 -f 1906/47/2107 1896/2159/2107 1514/2160/2107 -f 232/2161/2108 1138/42/2108 1170/2162/2108 -f 1016/2163/2109 1035/2164/2109 3436/1372/2109 -f 1016/2163/2110 1011/2154/2110 1035/2164/2110 -f 749/1289/2111 857/1783/2111 3426/1004/2111 -f 1360/2165/2112 1359/2166/2112 120/494/2112 -f 3189/1637/2113 3212/2167/2113 3211/2168/2113 -f 1788/1227/2114 1787/1229/2114 1773/2169/2114 -f 1041/420/2115 158/80/2115 1319/200/2115 -f 1415/2170/2116 1158/2171/2116 2100/2172/2116 -f 2090/2173/2117 515/2174/2117 1461/46/2117 -f 955/2175/2118 2993/2176/2118 960/2177/2118 -f 1487/2178/2119 1479/2179/2119 3397/2180/2119 -f 1839/2181/2120 1626/2182/2120 1846/1200/2120 -f 3507/1858/2121 1016/2163/2121 3436/1372/2121 -f 1855/113/2122 1377/175/2122 1960/884/2122 -f 1011/2154/2123 950/2183/2123 1112/2152/2123 -f 988/448/2124 1018/1025/2124 998/449/2124 -f 1459/40/2125 1634/2184/2125 1602/41/2125 -f 2031/2185/2126 1311/2186/2126 1968/2187/2126 -f 1319/200/2127 1325/199/2127 1995/2188/2127 -f 1995/2188/2128 1724/408/2128 1762/407/2128 -f 1792/2189/2129 2275/2190/2129 1791/2191/2129 -f 2373/2192/2130 2135/2193/2130 2334/2194/2130 -f 1218/1857/2131 1016/2163/2131 3507/1858/2131 -f 955/2175/2132 960/2177/2132 959/576/2132 -f 1218/1857/2133 950/2183/2133 1016/2163/2133 -f 1724/408/2134 1137/2195/2134 1981/58/2134 -f 1011/2154/2135 1040/2153/2135 1035/2164/2135 -f 3436/1372/2136 1035/2164/2136 1101/2196/2136 -f 980/2197/2137 1010/2198/2137 1001/2199/2137 -f 1107/2200/2138 1125/747/2138 1106/749/2138 -f 1814/2201/2139 2294/2202/2139 1827/1513/2139 -f 633/2052/2140 1189/1986/2140 965/1978/2140 -f 1378/594/2141 1137/2195/2141 2104/592/2141 -f 2275/2190/2142 2294/2202/2142 1791/2191/2142 -f 1082/2203/2143 1087/2204/2143 1071/702/2143 -f 2104/592/2144 20/707/2144 2047/593/2144 -f 20/707/2145 1571/2205/2145 2087/822/2145 -f 3280/107/2146 3279/106/2146 3213/2206/2146 -f 1193/334/2147 1175/1221/2147 1014/914/2147 -f 2087/822/2148 1571/2205/2148 2061/2207/2148 -f 2859/2208/2149 2064/2209/2149 2218/2210/2149 -f 2898/2211/2150 2882/2212/2150 2867/2213/2150 -f 1925/2214/2151 1568/2215/2151 1711/2216/2151 -f 1501/2217/2152 1735/2218/2152 1734/2219/2152 -f 1725/2220/2153 1501/2217/2153 1734/2219/2153 -f 1027/2221/2154 1012/2222/2154 3468/2223/2154 -f 1138/42/2155 1179/82/2155 1178/1662/2155 -f 1188/1575/2156 2121/323/2156 1128/1576/2156 -f 2784/2224/2157 2770/2225/2157 1125/2226/2157 -f 1101/2196/2158 1118/1117/2158 3485/326/2158 -f 1065/2227/2159 1209/2097/2159 1036/2096/2159 -f 3241/309/2160 3280/107/2160 3213/2206/2160 -f 2925/2228/2161 2926/2229/2161 2944/2230/2161 -f 467/2231/2162 1379/588/2162 1131/2232/2162 -f 1188/1575/2163 2069/321/2163 2121/323/2163 -f 1288/2233/2164 2031/2185/2164 1978/340/2164 -f 2687/2234/2165 1931/2235/2165 1908/2236/2165 -f 1059/2014/2166 1070/2237/2166 1046/2238/2166 -f 1216/2239/2167 1112/2152/2167 950/2183/2167 -f 1027/2221/2168 1111/1971/2168 1012/2222/2168 -f 1097/2240/2169 1139/2241/2169 1105/2242/2169 -f 1369/2243/2170 1393/2244/2170 243/2245/2170 -f 1216/2239/2171 1217/193/2171 1112/2152/2171 -f 1047/2246/2172 1046/2247/2172 1033/2248/2172 -f 3426/1004/2173 1004/2249/2173 105/1290/2173 -f 1263/154/2174 1315/156/2174 1172/1690/2174 -f 1820/2250/2175 1992/2251/2175 1561/2252/2175 -f 2372/2253/2176 963/2254/2176 2910/2255/2176 -f 1118/1117/2177 1101/2196/2177 1073/2256/2177 -f 1073/2256/2178 1040/2153/2178 976/2257/2178 -f 985/319/2179 1222/1084/2179 226/832/2179 -f 226/832/2180 1100/834/2180 1064/983/2180 -f 1140/2258/2181 1157/2259/2181 1169/2260/2181 -f 1072/2261/2182 1071/702/2182 2552/701/2182 -f 3212/2167/2183 3213/2206/2183 3227/2262/2183 -f 1072/2261/2184 1082/2203/2184 1071/702/2184 -f 1134/1802/2185 3438/2263/2185 983/1985/2185 -f 1012/2222/2186 1189/1986/2186 983/1985/2186 -f 2723/653/2187 2753/652/2187 2601/2264/2187 -f 781/2148/2188 2046/2265/2188 2017/2157/2188 -f 2031/2185/2189 2071/2266/2189 1978/340/2189 -f 2103/116/2190 2116/2267/2190 2102/2268/2190 -f 992/2269/2191 1173/2270/2191 908/2074/2191 -f 3175/2271/2192 3197/2272/2192 3174/2273/2192 -f 502/2274/2193 1328/907/2193 479/906/2193 -f 1029/2275/2194 1116/2276/2194 3489/753/2194 -f 3045/2277/2195 3087/1409/2195 3057/1411/2195 -f 1203/2278/2196 2137/2279/2196 1202/2280/2196 -f 1139/2241/2197 1140/2258/2197 1169/2260/2197 -f 1810/1228/2198 1577/1955/2198 1831/2281/2198 -f 1139/2282/2199 1124/1431/2199 1105/2283/2199 -f 2137/2279/2200 992/2269/2200 1202/2280/2200 -f 2488/2284/2201 989/2285/2201 1007/2286/2201 -f 992/2269/2202 1050/2287/2202 1173/2270/2202 -f 3355/2288/2203 3414/2289/2203 1957/2290/2203 -f 1568/2215/2204 1925/2214/2204 1159/2291/2204 -f 1035/2164/2205 1073/2256/2205 1101/2196/2205 -f 2209/2292/2206 2377/2293/2206 2215/2294/2206 -f 1218/1857/2207 1148/429/2207 950/2183/2207 -f 1148/429/2208 1216/2239/2208 950/2183/2208 -f 2436/2295/2209 3019/2296/2209 3030/2297/2209 -f 2276/2298/2210 2231/2299/2210 2230/2300/2210 -f 2839/1640/2211 3434/869/2211 3483/1639/2211 -f 3482/1332/2212 3453/2301/2212 3492/1003/2212 -f 2085/339/2213 1807/2302/2213 1288/2233/2213 -f 1807/2302/2214 2085/339/2214 2068/1846/2214 -f 1246/2137/2215 2277/881/2215 1083/488/2215 -f 1831/937/2216 1818/2303/2216 1809/2304/2216 -f 1766/57/2217 1088/111/2217 1215/421/2217 -f 2634/362/2218 2653/2305/2218 2652/724/2218 -f 1151/2306/2219 1777/2307/2219 364/2308/2219 -f 1081/2309/2220 1105/2242/2220 1080/2310/2220 -f 1105/2242/2221 1096/2311/2221 1080/2310/2221 -f 1239/2312/2222 1311/1368/2222 57/1367/2222 -f 2221/2313/2223 2248/1131/2223 2287/2314/2223 -f 1784/2315/2224 1555/2316/2224 1785/589/2224 -f 2040/1017/2225 2081/2317/2225 2056/2318/2225 -f 1379/588/2226 1747/81/2226 182/260/2226 -f 2424/245/2227 2673/2319/2227 3428/759/2227 -f 1348/115/2228 1308/164/2228 1289/2320/2228 -f 2084/2321/2229 2068/1846/2229 2085/339/2229 -f 1893/2093/2230 2085/339/2230 2093/338/2230 -f 1800/1148/2231 1799/176/2231 1786/2322/2231 -f 2653/2305/2232 2689/1201/2232 2652/724/2232 -f 1029/2275/2233 1180/324/2233 1036/2096/2233 -f 1008/2323/2234 1007/2324/2234 989/2325/2234 -f 2153/1194/2235 2677/2326/2235 2482/2327/2235 -f 1757/2328/2236 1770/1090/2236 1764/2329/2236 -f 1024/2330/2237 2377/2293/2237 2209/2292/2237 -f 1869/59/2238 1377/175/2238 1108/112/2238 -f 2201/2331/2239 2191/2332/2239 2302/2333/2239 -f 1124/2334/2240 1139/2241/2240 1169/2260/2240 -f 1855/113/2241 1062/2335/2241 1147/261/2241 -f 1460/2035/2242 1078/6/2242 1414/2336/2242 -f 1214/2337/2243 1286/2338/2243 1777/2339/2243 -f 1286/2340/2244 1379/588/2244 1777/2307/2244 -f 1081/2309/2245 1080/2310/2245 1070/2341/2245 -f 1377/175/2246 1862/174/2246 1960/884/2246 -f 1269/2342/2247 1415/1660/2247 1122/2343/2247 -f 2524/2344/2248 3462/2345/2248 3441/870/2248 -f 1269/2346/2249 3352/2347/2249 1415/2170/2249 -f 2795/2348/2250 2012/2349/2250 2847/2350/2250 -f 1322/2351/2251 1828/2352/2251 2049/2353/2251 -f 1000/2354/2252 1008/2323/2252 989/2325/2252 -f 2406/2355/2253 2405/2356/2253 2911/2357/2253 -f 846/1816/2254 838/1764/2254 619/1817/2254 -f 1218/1857/2255 1042/427/2255 1148/429/2255 -f 2713/2358/2256 1125/2226/2256 1107/2359/2256 -f 1026/320/2257 1064/983/2257 708/2360/2257 -f 561/2361/2258 1325/199/2258 158/80/2258 -f 1096/2311/2259 1104/2362/2259 1103/2363/2259 -f 2120/186/2260 2093/338/2260 1978/340/2260 -f 1033/2248/2261 1046/2247/2261 1022/2364/2261 -f 1845/178/2262 1619/2365/2262 1612/2366/2262 -f 2713/2358/2263 1107/2359/2263 2662/2367/2263 -f 1097/2240/2264 1105/2242/2264 1081/2309/2264 -f 599/1835/2265 974/1837/2265 975/1748/2265 -f 1044/909/2266 1054/1768/2266 1031/1573/2266 -f 384/1609/2267 809/1624/2267 686/1610/2267 -f 1004/1317/2268 3431/2368/2268 686/1610/2268 -f 1105/2242/2269 1124/2334/2269 1096/2311/2269 -f 970/978/2270 979/2369/2270 969/2370/2270 -f 1612/2366/2271 1617/541/2271 1844/2371/2271 -f 1189/1883/2272 615/1582/2272 939/1581/2272 -f 1378/594/2273 2047/593/2273 1154/364/2273 -f 1020/2372/2274 1033/2248/2274 1022/2364/2274 -f 1862/174/2275 577/185/2275 1960/884/2275 -f 1010/1597/2276 1009/1596/2276 1001/2373/2276 -f 2119/2374/2277 1621/2375/2277 20/707/2277 -f 1180/324/2278 1065/2227/2278 1036/2096/2278 -f 2145/2376/2279 1291/1680/2279 1283/2377/2279 -f 983/1985/2280 991/2378/2280 1012/2222/2280 -f 3500/325/2281 1180/324/2281 1029/2275/2281 -f 1862/174/2282 2093/338/2282 577/185/2282 -f 970/2379/2283 989/2325/2283 979/2380/2283 -f 1460/2035/2284 1414/2336/2284 1289/2320/2284 -f 1070/2341/2285 1069/2381/2285 1058/2382/2285 -f 980/2197/2286 1001/2199/2286 971/977/2286 -f 962/1964/2287 980/2197/2287 971/977/2287 -f 1111/1971/2288 1189/1986/2288 1012/2222/2288 -f 2044/2156/2289 2043/563/2289 3182/562/2289 -f 1124/1431/2290 1169/2383/2290 1168/2384/2290 -f 3251/2385/2291 953/2386/2291 3270/2387/2291 -f 1151/2388/2292 1214/2337/2292 1777/2339/2292 -f 1968/2187/2293 1988/2389/2293 2071/2266/2293 -f 982/259/2294 1147/261/2294 1062/2335/2294 -f 1069/2381/2295 1103/2363/2295 1068/2390/2295 -f 1078/6/2296 228/5/2296 1414/2336/2296 -f 1203/2278/2297 1202/2280/2297 1196/2391/2297 -f 1762/407/2298 1766/57/2298 1215/421/2298 -f 2044/2156/2299 2057/219/2299 2043/563/2299 -f 1798/912/2300 1605/540/2300 1597/913/2300 -f 1017/1942/2301 1031/1573/2301 1054/1768/2301 -f 2289/1443/2302 2158/1442/2302 2862/2392/2302 -f 1059/703/2303 1081/2309/2303 1070/2341/2303 -f 1020/2372/2304 1022/2364/2304 1008/2393/2304 -f 1020/2394/2305 1008/2323/2305 1009/1596/2305 -f 821/2395/2306 1214/30/2306 1151/2306/2306 -f 652/1140/2307 2229/1142/2307 657/2396/2307 -f 1032/2397/2308 2551/2398/2308 2527/2399/2308 -f 1855/113/2309 1935/886/2309 1062/2335/2309 -f 1070/2341/2310 1058/2382/2310 1032/2397/2310 -f 1022/2364/2311 1032/2397/2311 1007/2286/2311 -f 1008/2393/2312 1022/2364/2312 1007/2286/2312 -f 961/979/2313 970/978/2313 969/2370/2313 -f 3451/1929/2314 870/2400/2314 3480/1300/2314 -f 1126/2401/2315 1216/2239/2315 1148/429/2315 -f 242/1967/2316 1217/193/2316 1216/2239/2316 -f 1126/2401/2317 242/1967/2317 1216/2239/2317 -f 3501/350/2318 3496/1097/2318 3452/1099/2318 -f 2250/2402/2319 2242/2403/2319 2382/2005/2319 -f 1157/2259/2320 1185/2404/2320 1184/2405/2320 -f 1185/2404/2321 1203/2278/2321 1184/2405/2321 -f 2242/2406/2322 2250/2407/2322 2282/2408/2322 -f 953/1544/2323 975/1748/2323 974/1837/2323 -f 3452/2409/2324 3507/1858/2324 3436/1372/2324 -f 1001/2199/2325 990/2110/2325 971/977/2325 -f 1916/2410/2326 2171/2411/2326 1449/2412/2326 -f 1784/2315/2327 1785/589/2327 1796/591/2327 -f 970/2379/2328 1000/2354/2328 989/2325/2328 -f 3391/2413/2329 1974/108/2329 3390/1375/2329 -f 3438/2263/2330 991/2378/2330 983/1985/2330 -f 3431/2368/2331 1160/1611/2331 686/1610/2331 -f 1035/2164/2332 1040/2153/2332 1073/2256/2332 -f 3371/683/2333 3372/2414/2333 3381/684/2333 -f 3481/1108/2334 1148/429/2334 3478/428/2334 -f 2911/2357/2335 2405/2356/2335 2909/2415/2335 -f 1920/2416/2336 2360/2417/2336 2225/2418/2336 -f 1484/2419/2337 1502/2420/2337 1501/2217/2337 -f 2616/2421/2338 1866/2422/2338 2581/2423/2338 -f 1996/2424/2339 2364/2425/2339 2307/2426/2339 -f 3449/1266/2340 3450/1354/2340 3495/359/2340 -f 652/1140/2341 657/2396/2341 837/2427/2341 -f 1032/2397/2342 1058/2382/2342 2551/2398/2342 -f 857/1783/2343 805/1703/2343 3509/1702/2343 -f 1694/2428/2344 3335/2429/2344 1669/862/2344 -f 2419/2430/2345 981/2431/2345 963/2432/2345 -f 2377/2293/2346 2339/2433/2346 2215/2294/2346 -f 2909/2415/2347 2405/2356/2347 2404/2434/2347 -f 1286/2340/2348 1747/81/2348 1379/588/2348 -f 1118/1117/2349 1065/2227/2349 1180/324/2349 -f 3329/2435/2350 3374/2436/2350 3328/2437/2350 -f 1166/602/2351 1155/492/2351 2257/1927/2351 -f 947/1623/2352 470/554/2352 426/700/2352 -f 2377/2293/2353 2132/2438/2353 2339/2433/2353 -f 1090/2439/2354 242/1967/2354 1126/2401/2354 -f 1389/603/2355 410/1215/2355 756/675/2355 -f 1617/541/2356 1612/2366/2356 1618/2440/2356 -f 1104/2362/2357 1123/424/2357 1103/2363/2357 -f 1800/1125/2358 1786/2441/2358 1764/2329/2358 -f 1213/2442/2359 908/2074/2359 1201/511/2359 -f 558/635/2360 652/1140/2360 837/2427/2360 -f 1168/2443/2361 1213/2442/2361 1167/2047/2361 -f 1096/2311/2362 1103/2363/2362 1069/2381/2362 -f 3214/2444/2363 3243/2445/2363 3228/2446/2363 -f 1104/2362/2364 1124/2334/2364 1168/2443/2364 -f 1118/1117/2365 976/2257/2365 1065/2227/2365 -f 2104/592/2366 2119/2374/2366 20/707/2366 -f 1910/2447/2367 1889/2448/2367 3288/2449/2367 -f 1066/2450/2368 1148/429/2368 3481/1108/2368 -f 1066/2450/2369 1126/2401/2369 1148/429/2369 -f 1411/2451/2370 1183/1034/2370 1438/1036/2370 -f 1095/4/2371 2100/1661/2371 1214/30/2371 -f 976/2257/2372 1040/2153/2372 24/2452/2372 -f 1855/113/2373 1960/884/2373 1935/886/2373 -f 1103/2363/2374 1079/2453/2374 1068/2390/2374 -f 1786/2322/2375 1798/912/2375 1567/911/2375 -f 1066/2450/2376 1090/2439/2376 1126/2401/2376 -f 2403/2454/2377 2909/2415/2377 2404/2434/2377 -f 1129/2455/2378 2770/2225/2378 1140/2456/2378 -f 2770/1701/2379 1185/2404/2379 1157/2259/2379 -f 2907/2457/2380 2916/851/2380 2906/2458/2380 -f 3496/1097/2381 3465/838/2381 3502/837/2381 -f 2339/2433/2382 2328/2459/2382 2138/2460/2382 -f 1156/452/2383 1168/2443/2383 1167/2047/2383 -f 1923/2461/2384 1507/1196/2384 2896/2462/2384 -f 1029/2275/2385 229/2463/2385 1116/2276/2385 -f 1029/2275/2386 1036/2096/2386 229/2463/2386 -f 1036/2096/2387 504/2098/2387 229/2463/2387 -f 1169/2260/2388 1184/2405/2388 1168/2443/2388 -f 1157/2259/2389 1184/2405/2389 1169/2260/2389 -f 812/2464/2390 924/2001/2390 1175/1221/2390 -f 136/378/2391 670/1062/2391 102/796/2391 -f 2939/2465/2392 2964/527/2392 2974/529/2392 -f 3382/2466/2393 3372/2414/2393 3342/165/2393 -f 3382/2466/2394 3342/165/2394 3294/105/2394 -f 1805/2467/2395 3510/1467/2395 3491/2468/2395 -f 2770/1701/2396 1157/2259/2396 1140/2258/2396 -f 3494/1305/2397 3459/1457/2397 3485/326/2397 -f 1843/2469/2398 1853/2470/2398 1816/2471/2398 -f 961/979/2399 969/2370/2399 957/1053/2399 -f 3503/615/2400 1042/427/2400 3507/1858/2400 -f 3482/1332/2401 3492/1003/2401 3424/1002/2401 -f 3465/838/2402 3491/2468/2402 3455/839/2402 -f 961/979/2403 957/1053/2403 2956/2472/2403 -f 985/319/2404 226/832/2404 1064/983/2404 -f 1202/2280/2405 992/2269/2405 908/2074/2405 -f 1744/2473/2406 1734/2219/2406 1735/2218/2406 -f 1202/2280/2407 908/2074/2407 1213/2442/2407 -f 3045/2277/2408 3057/1411/2408 2998/2474/2408 -f 1023/2475/2409 1033/2248/2409 2506/2476/2409 -f 1023/2475/2410 1047/2246/2410 1033/2248/2410 -f 962/1964/2411 971/977/2411 961/979/2411 -f 1744/2477/2412 1772/1046/2412 1734/1048/2412 -f 1756/2478/2413 1757/2328/2413 1764/2329/2413 -f 1844/2371/2414 1845/178/2414 1612/2366/2414 -f 1772/1046/2415 1801/2479/2415 1771/1089/2415 -f 1801/2480/2416 1808/1147/2416 1771/2481/2416 -f 1057/2482/2417 1069/2381/2417 1063/2483/2417 -f 1129/2455/2418 1140/2456/2418 1139/2282/2418 -f 2984/2484/2419 3025/2485/2419 2983/528/2419 -f 1818/2303/2420 1817/177/2420 1808/1147/2420 -f 3242/1937/2421 3280/107/2421 3241/309/2421 -f 1032/2397/2422 2527/2399/2422 1007/2286/2422 -f 1777/2307/2423 467/2231/2423 364/2308/2423 -f 1103/2363/2424 1123/424/2424 1079/2453/2424 -f 2371/2486/2425 1887/1891/2425 2902/2487/2425 -f 2336/2488/2426 2190/2489/2426 2003/2490/2426 -f 1106/2491/2427 1129/2455/2427 1097/2492/2427 -f 1002/358/2428 1066/2450/2428 3481/1108/2428 -f 1460/2035/2429 1289/2320/2429 1308/164/2429 -f 1214/2337/2430 2100/2172/2430 1286/2338/2430 -f 1071/2493/2431 1081/2494/2431 1059/2014/2431 -f 1001/2373/2432 1000/2354/2432 990/2495/2432 -f 1213/2442/2433 1201/511/2433 1167/2047/2433 -f 1196/2391/2434 1202/2280/2434 1213/2442/2434 -f 951/1965/2435 961/979/2435 2956/2472/2435 -f 1817/177/2436 1818/2303/2436 1846/1200/2436 -f 1770/1090/2437 1800/1125/2437 1764/2329/2437 -f 2031/2185/2438 1968/2187/2438 2071/2266/2438 -f 1069/2381/2439 1068/2390/2439 1063/2483/2439 -f 1936/2496/2440 1864/2497/2440 1912/628/2440 -f 2770/2225/2441 2830/2498/2441 1185/2499/2441 -f 1066/2450/2442 1002/358/2442 1090/2439/2442 -f 1090/2439/2443 1100/834/2443 242/1967/2443 -f 1905/2500/2444 2069/321/2444 1188/1575/2444 -f 1289/2320/2445 1414/2336/2445 1152/2501/2445 -f 992/2269/2446 2137/2279/2446 1050/2287/2446 -f 1203/2278/2447 1196/2391/2447 1184/2405/2447 -f 228/5/2448 1214/30/2448 821/2395/2448 -f 969/2502/2449 979/531/2449 2458/530/2449 -f 1295/2503/2450 1260/184/2450 1231/183/2450 -f 2268/2504/2451 2252/2505/2451 2213/2506/2451 -f 963/2254/2452 958/2507/2452 2929/2508/2452 -f 1009/1596/2453 1008/2323/2453 1000/2354/2453 -f 2956/2472/2454 957/1053/2454 2967/1052/2454 -f 969/1999/2455 2440/1881/2455 957/2509/2455 -f 1077/1175/2456 1094/1170/2456 1086/1769/2456 -f 908/2074/2457 1173/2270/2457 1143/512/2457 -f 1123/424/2458 1104/2362/2458 1156/452/2458 -f 1080/2510/2459 1096/1433/2459 1069/2511/2459 -f 2402/2512/2460 2372/2253/2460 2910/2255/2460 -f 3375/2513/2461 3385/2514/2461 3374/2436/2461 -f 931/285/2462 1159/2291/2462 1277/100/2462 -f 2085/339/2463 1288/2233/2463 1978/340/2463 -f 1799/176/2464 1845/178/2464 1844/2371/2464 -f 775/1316/2465 740/2106/2465 105/2029/2465 -f 666/2515/2466 1163/280/2466 927/1776/2466 -f 616/1784/2467 942/1765/2467 846/1816/2467 -f 950/2183/2468 1011/2154/2468 1016/2163/2468 -f 2506/2476/2469 1033/2248/2469 1020/2372/2469 -f 1905/2500/2470 1925/2214/2470 1711/2216/2470 -f 1087/2516/2471 1097/2492/2471 1081/2494/2471 -f 972/2517/2472 980/2197/2472 962/1964/2472 -f 576/1654/2473 3270/2518/2473 573/1778/2473 -f 1653/776/2474 1811/1362/2474 664/210/2474 -f 860/1617/2475 348/927/2475 361/728/2475 -f 314/2519/2476 873/1507/2476 1030/1963/2476 -f 2810/253/2477 2869/1415/2477 2809/254/2477 -f 1001/2373/2478 1009/1596/2478 1000/2354/2478 -f 1766/57/2479 1108/112/2479 1088/111/2479 -f 1097/2492/2480 1129/2455/2480 1139/2282/2480 -f 1183/1034/2481 1210/1652/2481 8/2050/2481 -f 963/2254/2482 2929/2508/2482 2910/2255/2482 -f 1163/2520/2483 986/2521/2483 927/1828/2483 -f 1579/2522/2484 2066/2523/2484 2058/2158/2484 -f 2477/2524/2485 2498/2525/2485 2478/2526/2485 -f 2443/848/2486 2193/847/2486 2498/2525/2486 -f 1071/2493/2487 1087/2516/2487 1081/2494/2487 -f 2402/2512/2488 2410/2527/2488 2372/2253/2488 -f 972/2517/2489 962/1964/2489 958/2528/2489 -f 1132/301/2490 3470/281/2490 870/2400/2490 -f 725/1534/2491 730/2109/2491 724/1370/2491 -f 314/2519/2492 1030/1963/2492 582/1505/2492 -f 2869/1415/2493 2868/2529/2493 2841/1416/2493 -f 924/2001/2494 812/2464/2494 1117/2045/2494 -f 963/2530/2495 972/2517/2495 958/2528/2495 -f 3492/1003/2496 3483/1780/2496 3432/2531/2496 -f 1119/1814/2497 1121/2532/2497 846/1816/2497 -f 1034/2533/2498 616/1784/2498 846/1816/2498 -f 616/1784/2499 1034/2533/2499 1172/1690/2499 -f 2285/2534/2500 2316/2535/2500 2254/2536/2500 -f 1022/2364/2501 1046/2247/2501 1032/2397/2501 -f 1196/2391/2502 1213/2442/2502 1168/2443/2502 -f 1184/2405/2503 1196/2391/2503 1168/2443/2503 -f 1104/2362/2504 1168/2443/2504 1156/452/2504 -f 1046/2247/2505 1070/2341/2505 1032/2397/2505 -f 2490/2537/2506 1010/2198/2506 980/2197/2506 -f 1198/1938/2507 491/1504/2507 876/1820/2507 -f 3440/2538/2508 3433/349/2508 3459/665/2508 -f 7/1704/2509 932/1893/2509 1132/301/2509 -f 996/897/2510 1005/1924/2510 987/1092/2510 -f 2403/2454/2511 2410/2527/2511 2402/2512/2511 -f 1117/750/2512 812/2103/2512 3467/1591/2512 -f 2490/2539/2513 2506/1595/2513 1010/1597/2513 -f 1121/2532/2514 1034/2533/2514 846/1816/2514 -f 1068/2390/2515 2329/2540/2515 2599/2541/2515 -f 2697/2542/2516 977/2543/2516 3462/2345/2516 -f 1070/2341/2517 1080/2310/2517 1069/2381/2517 -f 3063/898/2518 954/577/2518 968/632/2518 -f 491/1504/2519 351/2544/2519 582/1505/2519 -f 351/2544/2520 314/2519/2520 582/1505/2520 -f 2346/1274/2521 1413/1226/2521 1362/1261/2521 -f 438/489/2522 1191/1526/2522 1133/723/2522 -f 3463/300/2523 3437/299/2523 3504/2545/2523 -f 3246/335/2524 3216/337/2524 3192/2546/2524 -f 3481/1108/2525 3458/1446/2525 1002/358/2525 -f 1165/2547/2526 1121/2532/2526 1119/1814/2526 -f 1079/2453/2527 1123/424/2527 1115/426/2527 -f 1764/2329/2528 1548/2548/2528 1756/2478/2528 -f 1002/358/2529 1153/360/2529 1090/2439/2529 -f 3194/2549/2530 78/811/2530 3170/1173/2530 -f 1058/2382/2531 1069/2381/2531 1057/2482/2531 -f 990/2495/2532 1000/2354/2532 970/2379/2532 -f 1073/2256/2533 976/2257/2533 1118/1117/2533 -f 453/1948/2534 3438/2263/2534 1134/1802/2534 -f 1183/1034/2535 1198/1938/2535 831/1831/2535 -f 814/343/2536 873/1507/2536 314/2519/2536 -f 1173/2270/2537 558/635/2537 1143/512/2537 -f 1165/2547/2538 1119/1814/2538 1298/1895/2538 -f 1034/2533/2539 1075/2550/2539 1172/1690/2539 -f 1045/405/2540 1061/517/2540 1013/406/2540 -f 1047/2246/2541 1059/703/2541 1046/2247/2541 -f 1084/1525/2542 1014/914/2542 1161/916/2542 -f 2046/2265/2543 2045/2155/2543 2017/2157/2543 -f 8/2050/2544 491/1504/2544 1198/1938/2544 -f 558/635/2545 837/2427/2545 2393/636/2545 -f 3477/788/2546 3433/349/2546 3460/1116/2546 -f 594/1044/2547 1162/140/2547 1053/2551/2547 -f 1034/2533/2548 1121/2532/2548 1075/2550/2548 -f 2178/2552/2549 2164/2553/2549 2174/2554/2549 -f 974/1837/2550 573/1545/2550 953/1544/2550 -f 651/1401/2551 1017/1942/2551 1043/1904/2551 -f 1076/303/2552 700/302/2552 1085/1984/2552 -f 981/2555/2553 980/2197/2553 972/2517/2553 -f 2901/2556/2554 2903/2557/2554 2370/2558/2554 -f 2673/2319/2555 2894/680/2555 3428/759/2555 -f 703/438/2556 133/439/2556 143/1028/2556 -f 8/2050/2557 1198/1938/2557 1183/1034/2557 -f 1053/2551/2558 351/2544/2558 491/1504/2558 -f 1153/360/2559 1100/834/2559 1090/2439/2559 -f 995/2559/2560 1017/1942/2560 651/1401/2560 -f 994/1979/2561 995/2559/2561 651/1401/2561 -f 1054/1768/2562 1085/1984/2562 700/302/2562 -f 2991/1880/2563 2990/2560/2563 2440/1881/2563 -f 981/2555/2564 2490/2537/2564 980/2197/2564 -f 1149/1043/2565 491/1504/2565 8/2050/2565 -f 315/341/2566 314/2519/2566 351/2544/2566 -f 377/571/2567 315/341/2567 351/2544/2567 -f 315/341/2568 814/343/2568 314/2519/2568 -f 2515/2040/2569 2231/2299/2569 1813/2561/2569 -f 963/2530/2570 981/2555/2570 972/2517/2570 -f 594/1044/2571 1053/2551/2571 1149/1043/2571 -f 1133/723/2572 1165/2547/2572 1298/1895/2572 -f 1084/1525/2573 1121/2532/2573 1165/2547/2573 -f 1121/2532/2574 1084/1525/2574 1075/2550/2574 -f 1043/1904/2575 1054/1768/2575 700/302/2575 -f 1153/360/2576 3495/359/2576 3447/982/2576 -f 1149/1043/2577 1053/2551/2577 491/1504/2577 -f 1053/2551/2578 377/571/2578 351/2544/2578 -f 1162/140/2579 377/571/2579 1053/2551/2579 -f 987/1092/2580 1005/1924/2580 995/2562/2580 -f 1044/909/2581 1077/1175/2581 1086/1769/2581 -f 823/142/2582 315/341/2582 377/571/2582 -f 838/1764/2583 846/1816/2583 942/1765/2583 -f 959/576/2584 978/450/2584 998/449/2584 -f 1133/723/2585 1191/1526/2585 1165/2547/2585 -f 1191/1526/2586 1084/1525/2586 1165/2547/2586 -f 1161/916/2587 1263/154/2587 1075/2550/2587 -f 120/494/2588 427/696/2588 1360/2165/2588 -f 987/1092/2589 995/2562/2589 994/2563/2589 -f 3149/2564/2590 987/1092/2590 994/2563/2590 -f 1017/1942/2591 1054/1768/2591 1043/1904/2591 -f 1054/1768/2592 1086/1769/2592 1085/1984/2592 -f 1113/139/2593 1399/138/2593 1085/1984/2593 -f 594/1044/2594 316/356/2594 1162/140/2594 -f 2043/563/2595 2057/219/2595 2016/88/2595 -f 353/1051/2596 251/48/2596 1237/543/2596 -f 1390/2565/2597 1373/15/2597 1402/14/2597 -f 2898/2211/2598 2897/2566/2598 2882/2212/2598 -f 35/1519/2599 1923/2461/2599 967/1517/2599 -f 1086/1769/2600 1113/139/2600 1085/1984/2600 -f 3348/2147/2601 571/2087/2601 3377/2567/2601 -f 1513/2568/2602 1500/2569/2602 1733/2570/2602 -f 1093/277/2603 1091/513/2603 1039/305/2603 -f 1084/1525/2604 1161/916/2604 1075/2550/2604 -f 995/2559/2605 1005/1777/2605 1017/1942/2605 -f 1380/151/2606 1442/2571/2606 396/152/2606 -f 1337/2572/2607 1383/1256/2607 1235/2573/2607 -f 1383/1256/2608 1247/2574/2608 1235/2573/2608 -f 1390/2565/2609 1417/1165/2609 1373/15/2609 -f 504/2098/2610 191/86/2610 1240/2575/2610 -f 1258/257/2611 1242/766/2611 1230/258/2611 -f 1219/2576/2612 1224/833/2612 1222/1084/2612 -f 1296/2577/2613 290/496/2613 137/495/2613 -f 1352/75/2614 31/2578/2614 1248/2579/2614 -f 1258/257/2615 1260/184/2615 1259/2580/2615 -f 1224/833/2616 1252/1096/2616 1100/834/2616 -f 1287/27/2617 9/16/2617 1227/28/2617 -f 3439/2120/2618 3236/1114/2618 3460/1116/2618 -f 1489/564/2619 2043/563/2619 2016/88/2619 -f 1382/2581/2620 1371/1959/2620 1434/34/2620 -f 1975/110/2621 1986/1176/2621 1974/108/2621 -f 1309/2582/2622 1871/2583/2622 1724/408/2622 -f 3453/2301/2623 3483/1780/2623 3492/1003/2623 -f 1094/1170/2624 1317/2056/2624 1113/139/2624 -f 574/1632/2625 919/1666/2625 121/1163/2625 -f 1410/2584/2626 1454/2585/2626 1399/2586/2626 -f 3442/2587/2627 1026/320/2627 708/2360/2627 -f 103/379/2628 93/804/2628 3218/548/2628 -f 1266/2588/2629 1283/1917/2629 728/2064/2629 -f 48/2589/2630 1493/2590/2630 1527/2591/2630 -f 1113/2592/2631 1317/2593/2631 1374/2594/2631 -f 1374/2594/2632 1410/2584/2632 1399/2586/2632 -f 1436/2595/2633 1454/2585/2633 1410/2584/2633 -f 1317/2593/2634 1342/2596/2634 1374/2594/2634 -f 1599/939/2635 1613/2597/2635 1638/2598/2635 -f 1318/2599/2636 1342/2596/2636 1317/2593/2636 -f 1374/2594/2637 1342/2596/2637 1410/2584/2637 -f 1410/2584/2638 1455/2600/2638 1436/2595/2638 -f 472/2601/2639 505/2602/2639 283/2603/2639 -f 11/2604/2640 472/2601/2640 283/2603/2640 -f 1318/2599/2641 1317/2593/2641 1114/2605/2641 -f 1342/2596/2642 1455/2600/2642 1410/2584/2642 -f 1436/2595/2643 1455/2600/2643 1249/180/2643 -f 1340/2606/2644 1341/2607/2644 329/606/2644 -f 1443/2608/2645 1257/2609/2645 1353/344/2645 -f 1385/2610/2646 1342/2596/2646 1318/2599/2646 -f 1342/2596/2647 1385/2610/2647 1455/2600/2647 -f 1343/2611/2648 1385/2610/2648 1318/2599/2648 -f 1455/2600/2649 1464/2612/2649 1249/180/2649 -f 1464/2612/2650 437/2613/2650 44/181/2650 -f 1249/180/2651 1464/2612/2651 44/181/2651 -f 1249/2614/2652 197/812/2652 724/1370/2652 -f 1439/273/2653 1402/14/2653 396/152/2653 -f 166/1295/2654 1681/2615/2654 1643/1294/2654 -f 1400/2616/2655 1385/2610/2655 1343/2611/2655 -f 1385/2610/2656 1400/2616/2656 1455/2600/2656 -f 1437/2617/2657 1464/2612/2657 1455/2600/2657 -f 220/2618/2658 763/1493/2658 437/2619/2658 -f 1257/2609/2659 1127/490/2659 1353/344/2659 -f 1108/112/2660 1377/175/2660 1855/113/2660 -f 1400/2616/2661 1437/2617/2661 1455/2600/2661 -f 220/2620/2662 1464/2612/2662 1437/2617/2662 -f 220/2621/2663 437/721/2663 1464/2622/2663 -f 414/50/2664 325/49/2664 42/202/2664 -f 1239/2312/2665 1296/2577/2665 1417/1165/2665 -f 1810/1228/2666 1809/2623/2666 1787/1229/2666 -f 1344/2624/2667 1400/2616/2667 1343/2611/2667 -f 1400/2616/2668 1422/2625/2668 1437/2617/2668 -f 1438/1036/2669 220/2618/2669 1437/2626/2669 -f 1422/2627/2670 1438/1036/2670 1437/2626/2670 -f 1438/1036/2671 1465/1035/2671 220/2618/2671 -f 345/94/2672 1458/291/2672 2332/990/2672 -f 1593/2628/2673 1673/2629/2673 1424/228/2673 -f 1424/228/2674 1331/77/2674 1332/76/2674 -f 1417/1165/2675 1296/2577/2675 137/495/2675 -f 1773/2169/2676 1765/2630/2676 1744/2477/2676 -f 1188/1575/2677 1879/1574/2677 2018/2631/2677 -f 1400/2616/2678 1344/2624/2678 1422/2625/2678 -f 416/2632/2679 439/1377/2679 423/1376/2679 -f 1254/78/2680 1408/560/2680 1358/1230/2680 -f 504/2098/2681 1240/2575/2681 2206/2633/2681 -f 1736/2634/2682 1773/2635/2682 1744/2473/2682 -f 1178/1662/2683 2100/1661/2683 1095/4/2683 -f 1343/2611/2684 2143/2636/2684 1344/2624/2684 -f 2197/2637/2685 1411/2638/2685 1344/2624/2685 -f 1344/2639/2686 1411/2451/2686 1422/2627/2686 -f 1422/2627/2687 1411/2451/2687 1438/1036/2687 -f 1391/2640/2688 2277/881/2688 1246/2137/2688 -f 1435/147/2689 365/145/2689 1172/1690/2689 -f 1261/29/2690 1227/28/2690 2180/2641/2690 -f 3475/664/2691 3440/2538/2691 3459/665/2691 -f 1178/1662/2692 1095/4/2692 1170/2162/2692 -f 2197/1925/2693 1176/491/2693 1411/2451/2693 -f 2397/2642/2694 569/2643/2694 190/454/2694 -f 788/1826/2695 1357/345/2695 835/1813/2695 -f 1395/2644/2696 1244/2645/2696 24/2452/2696 -f 2197/1925/2697 1155/492/2697 1176/491/2697 -f 1277/100/2698 1159/2291/2698 1141/101/2698 -f 1244/2645/2699 298/84/2699 24/2452/2699 -f 3238/2646/2700 3352/2347/2700 1269/2346/2700 -f 1244/2647/2701 205/2648/2701 298/2649/2701 -f 531/385/2702 542/413/2702 866/1472/2702 -f 1420/2650/2703 1276/2651/2703 1394/559/2703 -f 1383/1256/2704 1373/15/2704 273/1166/2704 -f 173/73/2705 1352/75/2705 1451/90/2705 -f 229/2463/2706 504/2098/2706 163/2652/2706 -f 783/141/2707 1359/2166/2707 823/142/2707 -f 1330/1224/2708 1351/2653/2708 492/1145/2708 -f 1304/2654/2709 1376/2655/2709 1356/74/2709 -f 1232/182/2710 1230/258/2710 1225/44/2710 -f 1222/1084/2711 2384/2656/2711 1219/2576/2711 -f 814/343/2712 409/342/2712 873/1507/2712 -f 1365/2657/2713 1404/561/2713 1408/560/2713 -f 3510/1467/2714 3455/839/2714 3491/2468/2714 -f 505/2602/2715 282/217/2715 445/216/2715 -f 1683/2658/2716 1647/2659/2716 1728/2660/2716 -f 2396/2661/2717 1220/2662/2717 43/2663/2717 -f 1275/157/2718 1292/51/2718 1242/766/2718 -f 43/2663/2719 1304/2654/2719 569/2643/2719 -f 182/260/2720 1041/420/2720 1147/261/2720 -f 1376/2655/2721 317/2664/2721 31/2578/2721 -f 1675/2665/2722 1473/2666/2722 2735/263/2722 -f 1734/2667/2723 1733/2668/2723 1500/2669/2723 -f 2693/2670/2724 2719/1905/2724 2692/2671/2724 -f 1308/164/2725 1204/163/2725 1324/2034/2725 -f 1220/2662/2726 1304/2654/2726 43/2663/2726 -f 43/2663/2727 569/2643/2727 34/2672/2727 -f 113/2673/2728 1394/559/2728 1268/2674/2728 -f 1119/1814/2729 835/1813/2729 1357/345/2729 -f 1100/834/2730 1267/191/2730 242/1967/2730 -f 2396/2661/2731 34/2672/2731 1130/2675/2731 -f 1293/2676/2732 1683/2658/2732 1882/2677/2732 -f 1253/1223/2733 1397/2678/2733 1351/2653/2733 -f 1305/159/2734 1382/2581/2734 1338/52/2734 -f 1376/2655/2735 1443/2679/2735 1425/2680/2735 -f 1443/2679/2736 1301/2681/2736 1425/2680/2736 -f 1233/2682/2737 1271/2683/2737 428/2684/2737 -f 1271/2683/2738 1443/2679/2738 428/2684/2738 -f 1287/27/2739 1403/39/2739 9/16/2739 -f 1141/101/2740 1325/199/2740 561/2361/2740 -f 106/545/2741 1236/2685/2741 1320/2686/2741 -f 1397/2678/2742 1466/1146/2742 1351/2653/2742 -f 2057/219/2743 2083/820/2743 2042/89/2743 -f 1226/2687/2744 1232/182/2744 1225/44/2744 -f 1408/560/2745 1387/2688/2745 1315/2689/2745 -f 1301/2690/2746 1282/2691/2746 1425/2692/2746 -f 317/2664/2747 1376/2655/2747 1425/2680/2747 -f 977/867/2748 2174/866/2748 965/1978/2748 -f 205/2648/2749 1340/2606/2749 328/605/2749 -f 1276/2651/2750 1397/2678/2750 1253/1223/2750 -f 1178/1662/2751 1170/2162/2751 1138/42/2751 -f 1340/2606/2752 1692/2693/2752 1341/2607/2752 -f 10/130/2753 77/262/2753 1423/149/2753 -f 3504/2545/2754 3457/1331/2754 3454/1301/2754 -f 1284/1909/2755 1402/14/2755 1439/273/2755 -f 1284/1909/2756 1390/2565/2756 1402/14/2756 -f 1443/2608/2757 1353/344/2757 1366/2694/2757 -f 1351/2653/2758 1466/1146/2758 492/1145/2758 -f 504/2098/2759 2206/2633/2759 163/2652/2759 -f 2087/822/2760 2061/2207/2760 57/1212/2760 -f 1239/2312/2761 1417/1165/2761 1390/2565/2761 -f 1284/1909/2762 1239/2312/2762 1390/2565/2762 -f 1225/44/2763 1224/2695/2763 1219/45/2763 -f 1241/33/2764 312/32/2764 1593/205/2764 -f 1296/2577/2765 2061/2696/2765 290/496/2765 -f 283/2603/2766 505/2602/2766 445/216/2766 -f 1233/2697/2767 1257/2609/2767 1271/2698/2767 -f 1325/199/2768 1309/2582/2768 1995/2188/2768 -f 1366/2694/2769 1353/344/2769 1238/346/2769 -f 1245/1257/2770 137/495/2770 472/2601/2770 -f 1247/2574/2771 11/2604/2771 1279/2699/2771 -f 1418/63/2772 1407/2700/2772 1393/2244/2772 -f 1127/490/2773 1133/723/2773 1353/344/2773 -f 2341/43/2774 1226/2687/2774 1225/44/2774 -f 1309/2582/2775 1724/408/2775 1995/2188/2775 -f 1401/2701/2776 1425/2680/2776 1312/2702/2776 -f 262/666/2777 506/544/2777 1237/543/2777 -f 1547/2703/2778 12/223/2778 13/35/2778 -f 1316/158/2779 1355/1960/2779 1305/159/2779 -f 555/1205/2780 363/1233/2780 134/203/2780 -f 1316/158/2781 1633/2127/2781 1355/1960/2781 -f 340/2704/2782 1407/2700/2782 1418/63/2782 -f 1313/697/2783 440/2705/2783 424/579/2783 -f 1356/74/2784 1376/2655/2784 31/2578/2784 -f 964/581/2785 3487/1584/2785 1208/332/2785 -f 1312/2702/2786 943/2706/2786 1328/907/2786 -f 1549/668/2787 1789/2707/2787 1540/26/2787 -f 1395/1149/2788 1453/1143/2788 1244/2647/2788 -f 1431/2708/2789 1365/2657/2789 1254/78/2789 -f 1268/2674/2790 1276/2651/2790 1253/1223/2790 -f 1246/2137/2791 1127/490/2791 1257/2609/2791 -f 2837/2709/2792 2073/2710/2792 2880/2711/2792 -f 3459/665/2793 3433/349/2793 3443/351/2793 -f 1335/607/2794 329/606/2794 1287/27/2794 -f 326/630/2795 171/414/2795 1300/443/2795 -f 1337/2572/2796 1373/15/2796 1383/1256/2796 -f 1331/77/2797 1431/2708/2797 1254/78/2797 -f 428/2684/2798 1443/2679/2798 1376/2655/2798 -f 1209/2097/2799 191/86/2799 504/2098/2799 -f 1365/2657/2800 1408/560/2800 1254/78/2800 -f 1304/2654/2801 1356/74/2801 569/2643/2801 -f 34/2672/2802 569/2643/2802 2397/2642/2802 -f 43/2663/2803 34/2672/2803 2396/2661/2803 -f 2173/2712/2804 1874/2713/2804 2780/2714/2804 -f 1337/2572/2805 1235/2573/2805 1339/2715/2805 -f 1404/561/2806 1339/2715/2806 1420/2650/2806 -f 457/1178/2807 1340/2606/2807 205/2648/2807 -f 1420/2650/2808 1339/2715/2808 1276/2651/2808 -f 1433/62/2809 2090/2173/2809 1463/637/2809 -f 107/2716/2810 298/84/2810 1209/2097/2810 -f 1387/2688/2811 1394/559/2811 113/2673/2811 -f 1338/52/2812 1382/2581/2812 1381/60/2812 -f 1440/2717/2813 1358/153/2813 1452/155/2813 -f 1210/1652/2814 1411/2451/2814 1176/491/2814 -f 12/223/2815 1560/2718/2815 1692/2693/2815 -f 191/86/2816 1335/2719/2816 1240/2575/2816 -f 1977/2720/2817 1976/109/2817 1958/232/2817 -f 1304/2654/2818 428/2684/2818 1376/2655/2818 -f 1352/75/2819 1356/74/2819 31/2578/2819 -f 754/2721/2820 784/1930/2820 272/2722/2820 -f 1303/1179/2821 767/2020/2821 768/1180/2821 -f 2170/2723/2822 30/2724/2822 1449/2725/2822 -f 31/2578/2823 317/2664/2823 1228/519/2823 -f 1401/2701/2824 502/2274/2824 1314/520/2824 -f 1356/74/2825 173/73/2825 569/2643/2825 -f 1879/1574/2826 2104/592/2826 1137/2195/2826 -f 2083/820/2827 2066/2523/2827 2117/306/2827 -f 1137/2195/2828 1378/594/2828 1981/58/2828 -f 873/1507/2829 409/342/2829 926/1508/2829 -f 1463/637/2830 251/48/2830 353/1051/2830 -f 1401/2701/2831 1312/2702/2831 1328/907/2831 -f 3489/753/2832 1116/2276/2832 3488/1712/2832 -f 317/2664/2833 1401/2701/2833 1228/519/2833 -f 317/2664/2834 1425/2680/2834 1401/2701/2834 -f 2677/2326/2835 2817/1426/2835 2482/2327/2835 -f 728/2064/2836 633/2052/2836 1266/2588/2836 -f 3/497/2837 1329/2726/2837 505/2602/2837 -f 1225/44/2838 1230/258/2838 1224/2695/2838 -f 1348/115/2839 1289/2320/2839 1270/2727/2839 -f 2948/2728/2840 2986/2729/2840 2965/2730/2840 -f 9/16/2841 1373/15/2841 1256/236/2841 -f 1713/2731/2842 2061/2207/2842 1571/2205/2842 -f 2344/2732/2843 1220/2662/2843 2396/2661/2843 -f 1250/1944/2844 2164/1943/2844 1266/2733/2844 -f 1340/2606/2845 457/1178/2845 12/223/2845 -f 2767/226/2846 3487/2734/2846 964/134/2846 -f 1279/2699/2847 11/2604/2847 283/2603/2847 -f 3092/2735/2848 3054/1787/2848 954/577/2848 -f 1366/2694/2849 1282/2736/2849 1301/2737/2849 -f 1425/2680/2850 1282/2738/2850 1312/2702/2850 -f 444/2739/2851 213/975/2851 267/989/2851 -f 315/341/2852 1444/1844/2852 409/342/2852 -f 503/2740/2853 926/1508/2853 409/342/2853 -f 1223/2741/2854 1233/2682/2854 2344/2732/2854 -f 506/544/2855 1236/2685/2855 106/545/2855 -f 1253/1223/2856 1351/2653/2856 1330/1224/2856 -f 1235/2573/2857 1247/2574/2857 1279/2699/2857 -f 1424/228/2858 29/2742/2858 1331/77/2858 -f 1549/668/2859 1802/1363/2859 1789/2707/2859 -f 1228/519/2860 1314/520/2860 1310/118/2860 -f 143/1028/2861 690/1254/2861 710/1391/2861 -f 1401/2701/2862 1328/907/2862 502/2274/2862 -f 634/1155/2863 620/1234/2863 1407/2743/2863 -f 3484/2744/2864 3446/22/2864 3474/422/2864 -f 1240/1127/2865 1335/607/2865 1261/29/2865 -f 1244/2647/2866 330/1144/2866 205/2648/2866 -f 783/141/2867 120/494/2867 1359/2166/2867 -f 2293/2745/2868 1391/2746/2868 1223/2741/2868 -f 1383/1256/2869 1245/1257/2869 1247/2574/2869 -f 1869/59/2870 1154/364/2870 1893/2093/2870 -f 1264/2747/2871 29/2742/2871 1424/228/2871 -f 29/2742/2872 1431/2708/2872 1331/77/2872 -f 1404/561/2873 1337/2572/2873 1339/2715/2873 -f 1340/2606/2874 12/223/2874 1692/2693/2874 -f 1337/2572/2875 1404/561/2875 1365/2657/2875 -f 1882/2677/2876 1633/1105/2876 1293/2676/2876 -f 1651/1104/2877 1937/1103/2877 2106/2748/2877 -f 763/1493/2878 220/2618/2878 1465/1035/2878 -f 1444/1844/2879 1468/2749/2879 409/342/2879 -f 409/342/2880 1468/2749/2880 503/2740/2880 -f 1284/1909/2881 1968/2750/2881 1239/2312/2881 -f 1968/2750/2882 1311/1368/2882 1239/2312/2882 -f 1256/236/2883 1337/2572/2883 1431/2708/2883 -f 338/2751/2884 926/1508/2884 503/2740/2884 -f 338/2751/2885 671/2038/2885 926/1508/2885 -f 1545/1250/2886 1294/1252/2886 1251/1364/2886 -f 1366/2694/2887 1238/346/2887 1297/1007/2887 -f 1282/2736/2888 1366/2694/2888 1297/1007/2888 -f 2174/866/2889 1250/2752/2889 965/1978/2889 -f 1391/2640/2890 1246/2137/2890 1257/2609/2890 -f 1337/2572/2891 1365/2657/2891 1431/2708/2891 -f 1258/257/2892 1275/157/2892 1242/766/2892 -f 1373/15/2893 1337/2572/2893 1256/236/2893 -f 1394/559/2894 1276/2651/2894 1268/2674/2894 -f 1239/2312/2895 57/1367/2895 1296/2577/2895 -f 1305/159/2896 1355/1960/2896 1382/2581/2896 -f 1358/1230/2897 1408/560/2897 1315/2689/2897 -f 1844/2371/2898 1617/541/2898 1605/540/2898 -f 2117/306/2899 1204/163/2899 737/114/2899 -f 472/2601/2900 137/495/2900 3/497/2900 -f 29/2742/2901 30/2724/2901 1431/2708/2901 -f 1305/159/2902 1292/51/2902 1275/157/2902 -f 410/1215/2903 144/676/2903 756/675/2903 -f 568/2753/2904 671/2038/2904 338/2751/2904 -f 1282/2738/2905 1297/2754/2905 1312/2702/2905 -f 1297/1007/2906 943/1006/2906 1312/2755/2906 -f 1789/2707/2907 1788/1227/2907 1773/2169/2907 -f 2397/2642/2908 190/454/2908 2398/2756/2908 -f 1418/63/2909 1462/638/2909 340/2704/2909 -f 1065/2227/2910 976/2257/2910 107/2716/2910 -f 30/2724/2911 1256/236/2911 1431/2708/2911 -f 1449/2725/2912 30/2724/2912 29/2742/2912 -f 1276/2651/2913 1279/2699/2913 1397/2678/2913 -f 1440/227/2914 1332/76/2914 1358/1230/2914 -f 2501/2757/2915 2524/2344/2915 3441/870/2915 -f 1326/2758/2916 1277/100/2916 47/99/2916 -f 568/2080/2917 930/1529/2917 671/1528/2917 -f 1360/2165/2918 1445/2759/2918 1359/2166/2918 -f 1444/1844/2919 1445/2759/2919 1468/2749/2919 -f 1468/2749/2920 96/2760/2920 503/2740/2920 -f 1443/2608/2921 1366/2694/2921 1301/2737/2921 -f 299/256/2922 1248/2579/2922 1228/519/2922 -f 1451/90/2923 1352/75/2923 1248/2579/2923 -f 127/883/2924 1607/836/2924 94/835/2924 -f 1259/2580/2925 1316/158/2925 1275/157/2925 -f 1733/1047/2926 1757/2328/2926 1513/2761/2926 -f 1258/257/2927 1259/2580/2927 1275/157/2927 -f 2810/253/2928 2775/255/2928 1969/1202/2928 -f 1359/2166/2929 1445/2759/2929 1444/1844/2929 -f 503/2740/2930 96/2760/2930 338/2751/2930 -f 569/2643/2931 173/73/2931 190/454/2931 -f 1230/1167/2932 1242/2133/2932 1252/1096/2932 -f 1348/115/2933 1270/2727/2933 2116/2267/2933 -f 283/2603/2934 445/216/2934 1466/1146/2934 -f 1112/2152/2935 1370/1246/2935 1395/2644/2935 -f 1828/2352/2936 1360/2165/2936 427/696/2936 -f 1445/2759/2937 96/2760/2937 1468/2749/2937 -f 1382/2581/2938 1434/34/2938 1419/83/2938 -f 1233/2682/2939 428/2684/2939 1304/2654/2939 -f 1292/51/2940 1305/159/2940 1338/52/2940 -f 502/2274/2941 213/521/2941 1314/520/2941 -f 1339/2715/2942 1235/2573/2942 1276/2651/2942 -f 330/1144/2943 1244/2647/2943 1453/1143/2943 -f 250/2762/2944 568/2763/2944 338/2764/2944 -f 250/2762/2945 665/2765/2945 568/2763/2945 -f 3469/782/2946 2007/2766/2946 3456/400/2946 -f 1233/2682/2947 1304/2654/2947 1220/2662/2947 -f 1245/1257/2948 273/1166/2948 137/495/2948 -f 1271/2683/2949 1257/2767/2949 1443/2679/2949 -f 1295/2503/2950 1647/2768/2950 1260/184/2950 -f 330/1144/2951 457/1178/2951 205/2648/2951 -f 1360/2165/2952 1446/2769/2952 1445/2759/2952 -f 1445/2759/2953 1446/2769/2953 96/2760/2953 -f 1446/2769/2954 1469/2770/2954 96/2760/2954 -f 96/2771/2955 185/2772/2955 338/2764/2955 -f 1854/542/2956 1596/2773/2956 1605/540/2956 -f 1316/158/2957 1293/2774/2957 1633/2127/2957 -f 1268/2674/2958 1253/1223/2958 617/1225/2958 -f 1279/2699/2959 283/2603/2959 1397/2678/2959 -f 1276/2651/2960 1235/2573/2960 1279/2699/2960 -f 3181/2775/2961 614/2776/2961 613/2777/2961 -f 1322/2351/2962 1360/2165/2962 1828/2352/2962 -f 1360/2165/2963 1322/2351/2963 1446/2769/2963 -f 250/2762/2964 338/2764/2964 185/2772/2964 -f 298/84/2965 191/86/2965 1209/2097/2965 -f 617/1698/2966 121/1163/2966 919/1666/2966 -f 3479/312/2967 1697/311/2967 3486/1075/2967 -f 1469/2778/2968 185/2772/2968 96/2771/2968 -f 1432/2779/2969 665/2765/2969 250/2762/2969 -f 328/605/2970 1335/607/2970 191/2780/2970 -f 1233/2682/2971 1220/2662/2971 2344/2732/2971 -f 1248/2579/2972 31/2578/2972 1228/519/2972 -f 121/1163/2973 617/1698/2973 1330/487/2973 -f 1226/2687/2974 2341/43/2974 1099/2781/2974 -f 190/454/2975 2361/608/2975 2398/2756/2975 -f 1665/2782/2976 1668/1262/2976 1544/1216/2976 -f 1315/2689/2977 1387/2688/2977 1435/2783/2977 -f 392/2784/2978 1302/1339/2978 1667/2785/2978 -f 1466/1146/2979 445/216/2979 1685/218/2979 -f 1065/2227/2980 107/2716/2980 1209/2097/2980 -f 1223/2741/2981 1391/2746/2981 1233/2682/2981 -f 1353/344/2982 1298/1895/2982 1357/345/2982 -f 993/2786/2983 586/1676/2983 1993/1966/2983 -f 1387/2688/2984 1408/560/2984 1394/559/2984 -f 251/48/2985 262/666/2985 1237/543/2985 -f 25/2787/2986 754/2788/2986 1462/638/2986 -f 1245/1257/2987 472/2601/2987 11/2604/2987 -f 1435/2783/2988 1387/2688/2988 1262/2789/2988 -f 1387/2688/2989 113/2673/2989 1262/2789/2989 -f 1283/1917/2990 768/1180/2990 728/2064/2990 -f 2501/2757/2991 3441/870/2991 3434/869/2991 -f 1381/60/2992 1382/2581/2992 1419/83/2992 -f 1391/2640/2993 2293/2790/2993 2277/881/2993 -f 1717/2791/2994 1661/1071/2994 219/2792/2994 -f 748/1461/2995 376/330/2995 407/315/2995 -f 1268/2674/2996 617/1225/2996 113/2673/2996 -f 1112/2152/2997 1217/193/2997 1370/1246/2997 -f 1379/588/2998 982/259/2998 1131/2232/2998 -f 1322/2793/2999 1426/2794/2999 1446/2795/2999 -f 1446/2795/3000 1426/2794/3000 1469/2778/3000 -f 185/2772/3001 395/2796/3001 250/2762/3001 -f 395/2796/3002 1432/2779/3002 250/2762/3002 -f 1392/2797/3003 604/2798/3003 1432/2779/3003 -f 1449/2725/3004 29/2742/3004 1264/2747/3004 -f 3012/2799/3005 3050/2800/3005 3036/2801/3005 -f 1354/625/3006 1412/2802/3006 1313/697/3006 -f 171/414/3007 490/416/3007 1300/443/3007 -f 2029/2803/3008 2030/87/3008 2040/1017/3008 -f 3492/1003/3009 3431/2804/3009 3426/1004/3009 -f 1426/2794/3010 1447/2805/3010 1469/2778/3010 -f 1210/1652/3011 1183/1034/3011 1411/2451/3011 -f 937/1859/3012 936/1840/3012 55/2806/3012 -f 1384/2807/3013 1354/625/3013 477/624/3013 -f 1354/625/3014 1384/2807/3014 1412/2802/3014 -f 472/2601/3015 3/497/3015 505/2602/3015 -f 3472/1445/3016 3449/1266/3016 3458/1446/3016 -f 2004/1177/3017 2030/87/3017 2029/2803/3017 -f 1322/2793/3018 2076/2808/3018 1426/2794/3018 -f 1432/2779/3019 1396/2809/3019 1392/2797/3019 -f 1392/2797/3020 6/2810/3020 1389/2811/3020 -f 1313/697/3021 1412/2802/3021 439/1377/3021 -f 3336/314/3022 443/295/3022 1669/862/3022 -f 1397/2678/3023 283/2603/3023 1466/1146/3023 -f 467/2231/3024 1777/2307/3024 1379/588/3024 -f 1469/2778/3025 1447/2805/3025 185/2772/3025 -f 395/2796/3026 1396/2809/3026 1432/2779/3026 -f 1396/2809/3027 6/2810/3027 1392/2797/3027 -f 604/2798/3028 665/2765/3028 1432/2779/3028 -f 416/2632/3029 440/2705/3029 439/1377/3029 -f 2754/2812/3030 3453/2301/3030 3482/1332/3030 -f 1784/2315/3031 1536/2813/3031 1555/2316/3031 -f 530/2814/3032 1396/2809/3032 395/2796/3032 -f 1451/90/3033 1248/2579/3033 299/256/3033 -f 1394/559/3034 1404/561/3034 1420/2650/3034 -f 1384/2807/3035 774/2815/3035 1412/2802/3035 -f 3473/872/3036 3461/270/3036 3472/269/3036 -f 1341/2607/3037 1380/151/3037 329/606/3037 -f 328/605/3038 1340/2606/3038 329/606/3038 -f 1418/63/3039 1433/62/3039 1462/638/3039 -f 2076/2808/3040 1361/2816/3040 1426/2794/3040 -f 1426/2794/3041 1361/2816/3041 1447/2805/3041 -f 1447/2805/3042 1470/2817/3042 185/2772/3042 -f 529/2818/3043 395/2796/3043 185/2772/3043 -f 529/2818/3044 530/2814/3044 395/2796/3044 -f 476/12/3045 190/454/3045 1451/90/3045 -f 272/1094/3046 784/2819/3046 28/1154/3046 -f 1412/2802/3047 1251/1364/3047 439/1377/3047 -f 10/130/3048 1423/149/3048 1346/148/3048 -f 1260/184/3049 1683/2820/3049 1259/2580/3049 -f 1809/2304/3050 1810/2821/3050 1831/937/3050 -f 1854/542/3051 1853/2470/3051 1843/2469/3051 -f 205/2648/3052 328/605/3052 298/2649/3052 -f 25/1033/3053 560/1032/3053 753/1766/3053 -f 2103/116/3054 1348/115/3054 2116/2267/3054 -f 185/2772/3055 1470/2817/3055 529/2818/3055 -f 1255/941/3056 6/2810/3056 1396/2809/3056 -f 1255/941/3057 410/2822/3057 6/2810/3057 -f 1233/2682/3058 1391/2746/3058 1257/2767/3058 -f 774/2815/3059 318/1973/3059 1412/2802/3059 -f 2081/2317/3060 2082/307/3060 2103/116/3060 -f 1265/124/3061 1396/2809/3061 530/2814/3061 -f 1462/638/3062 1463/637/3062 25/2787/3062 -f 318/1973/3063 1251/1364/3063 1412/2802/3063 -f 1393/2823/3064 1369/2824/3064 1948/2825/3064 -f 24/2452/3065 298/84/3065 107/2716/3065 -f 1504/2826/3066 1758/2827/3066 1478/2828/3066 -f 1979/942/3067 2071/2266/3067 1988/2389/3067 -f 2118/2829/3068 1979/942/3068 1988/2389/3068 -f 1361/2816/3069 2390/2830/3069 1362/1261/3069 -f 529/2818/3070 1265/124/3070 530/2814/3070 -f 1398/2831/3071 1396/2809/3071 1265/124/3071 -f 1398/2831/3072 1255/941/3072 1396/2809/3072 -f 423/1376/3073 1302/1339/3073 415/1338/3073 -f 24/2452/3074 107/2716/3074 976/2257/3074 -f 1381/60/3075 1453/1143/3075 1395/1149/3075 -f 1979/942/3076 2118/2829/3076 2122/943/3076 -f 982/259/3077 1062/2335/3077 1327/2832/3077 -f 3141/2833/3078 3173/310/3078 3189/1637/3078 -f 1362/1261/3079 1427/1260/3079 1361/2816/3079 -f 1427/1260/3080 1447/2805/3080 1361/2816/3080 -f 1427/1260/3081 1457/1126/3081 1447/2805/3081 -f 1470/2817/3082 459/122/3082 529/2818/3082 -f 459/122/3083 1265/124/3083 529/2818/3083 -f 1255/941/3084 144/2834/3084 410/2822/3084 -f 1463/637/3085 1461/46/3085 251/48/3085 -f 1489/564/3086 3364/2835/3086 3182/562/3086 -f 1040/2153/3087 1395/2644/3087 24/2452/3087 -f 1266/2588/3088 633/2052/3088 1250/2752/3088 -f 1251/1364/3089 1294/1252/3089 423/1376/3089 -f 423/1376/3090 1294/1252/3090 1302/1339/3090 -f 1463/637/3091 353/1051/3091 25/2787/3091 -f 1709/2836/3092 2890/1848/3092 2826/1/3092 -f 952/2837/3093 958/2528/3093 962/1964/3093 -f 1457/1126/3094 1470/2817/3094 1447/2805/3094 -f 1328/907/3095 313/895/3095 339/894/3095 -f 870/2400/3096 3490/1009/3096 3454/1301/3096 -f 1355/1960/3097 1371/1959/3097 1382/2581/3097 -f 1298/1895/3098 1353/344/3098 1133/723/3098 -f 352/36/3099 457/1178/3099 330/1144/3099 -f 1228/519/3100 1401/2701/3100 1314/520/3100 -f 44/2838/3101 437/721/3101 203/720/3101 -f 1294/1252/3102 1667/2785/3102 1302/1339/3102 -f 1327/2832/3103 1062/2335/3103 1935/886/3103 -f 2120/186/3104 1206/944/3104 2088/187/3104 -f 2876/2839/3105 2289/1443/3105 2862/2392/3105 -f 1457/1126/3106 459/122/3106 1470/2817/3106 -f 1274/1164/3107 1375/410/3107 1398/2831/3107 -f 1265/124/3108 1274/1164/3108 1398/2831/3108 -f 1255/941/3109 237/940/3109 144/2834/3109 -f 3489/423/3110 3488/2840/3110 3474/422/3110 -f 1259/2580/3111 1683/2820/3111 1316/158/3111 -f 1528/2841/3112 1708/2842/3112 1640/381/3112 -f 1247/2574/3113 1245/1257/3113 11/2604/3113 -f 1389/603/3114 604/1174/3114 1392/2843/3114 -f 1316/158/3115 1683/2820/3115 1293/2774/3115 -f 2894/680/3116 215/2844/3116 2615/287/3116 -f 3413/2845/3117 1958/232/3117 1974/108/3117 -f 2890/1848/3118 1710/1633/3118 2826/1/3118 -f 2730/1267/3119 2810/253/3119 1969/1202/3119 -f 1398/2831/3120 1375/410/3120 1255/941/3120 -f 1197/1074/3121 3484/1870/3121 3486/1075/3121 -f 1975/110/3122 2015/117/3122 1986/1176/3122 -f 1232/182/3123 1260/184/3123 1258/257/3123 -f 1593/205/3124 1424/2846/3124 1440/290/3124 -f 106/929/3125 327/928/3125 19/958/3125 -f 2040/1017/3126 2041/1016/3126 2081/2317/3126 -f 2041/1016/3127 2082/307/3127 2081/2317/3127 -f 1471/430/3128 1457/1126/3128 1427/1260/3128 -f 1614/1192/3129 1615/1245/3129 1641/2847/3129 -f 1582/2848/3130 1591/2849/3130 1581/2850/3130 -f 1716/2851/3131 1539/70/3131 1701/72/3131 -f 1642/2852/3132 1628/2853/3132 1681/2854/3132 -f 1659/2855/3133 1698/1276/3133 392/1288/3133 -f 1592/2856/3134 1601/1162/3134 1600/2857/3134 -f 1505/2858/3135 1530/2859/3135 1504/2826/3135 -f 1559/2860/3136 1581/2850/3136 1533/2861/3136 -f 122/1100/3137 114/1040/3137 1600/2862/3137 -f 1708/2842/3138 397/411/3138 1640/381/3138 -f 1380/151/3139 1341/2607/3139 1606/2863/3139 -f 1492/2864/3140 1493/234/3140 1516/2865/3140 -f 1633/1105/3141 1882/2677/3141 1937/1103/3141 -f 487/1278/3142 1650/1311/3142 511/1302/3142 -f 1551/968/3143 1580/1010/3143 84/969/3143 -f 2743/2866/3144 2787/2867/3144 2806/2868/3144 -f 3454/1301/3145 3457/1331/3145 3424/1002/3145 -f 1546/2869/3146 1927/2870/3146 1711/2216/3146 -f 1705/1247/3147 1574/2871/3147 1671/2872/3147 -f 1615/1245/3148 1642/2852/3148 1641/2847/3148 -f 444/18/3149 267/2873/3149 1345/23/3149 -f 1679/2874/3150 1659/2875/3150 1667/2785/3150 -f 149/2876/3151 177/1101/3151 148/1041/3151 -f 1664/1150/3152 1665/2782/3152 452/1182/3152 -f 3435/1922/3153 3442/2587/3153 3447/982/3153 -f 1479/2179/3154 1504/2826/3154 1486/2877/3154 -f 1641/2847/3155 1642/2852/3155 1680/1123/3155 -f 2708/1961/3156 215/2844/3156 2673/2319/3156 -f 3440/2538/3157 3460/1116/3157 3433/349/3157 -f 296/195/3158 183/194/3158 443/295/3158 -f 2669/857/3159 3453/856/3159 2754/705/3159 -f 2767/2878/3160 3429/1723/3160 3487/1667/3160 -f 2671/2879/3161 2184/2880/3161 2697/2542/3161 -f 1371/2881/3162 1651/1104/3162 2106/2748/3162 -f 320/1249/3163 1698/1276/3163 1705/1247/3163 -f 2692/2671/3164 2719/1905/3164 2691/1907/3164 -f 2659/2882/3165 2694/2883/3165 2658/2884/3165 -f 1526/2885/3166 1543/1120/3166 1553/1119/3166 -f 1578/2886/3167 1599/939/3167 1577/938/3167 -f 585/1413/3168 45/945/3168 32/917/3168 -f 1599/939/3169 1607/2887/3169 1613/2597/3169 -f 1336/2888/3170 1369/2243/3170 1368/2889/3170 -f 1712/2890/3171 1684/2891/3171 1603/2892/3171 -f 1531/629/3172 1912/628/3172 1864/2497/3172 -f 1549/668/3173 1525/667/3173 1802/1363/3173 -f 3128/2893/3174 3152/2894/3174 3162/2895/3174 -f 1627/120/3175 1639/2896/3175 1656/2897/3175 -f 2489/2898/3176 1769/252/3176 2422/2070/3176 -f 1696/2899/3177 1712/2890/3177 1566/2900/3177 -f 1827/1513/3178 2294/2202/3178 2536/2901/3178 -f 1610/2902/3179 1586/2903/3179 1664/2904/3179 -f 563/614/3180 528/643/3180 914/744/3180 -f 3018/2905/3181 2992/1879/3181 2439/2906/3181 -f 149/2907/3182 1641/2847/3182 177/1122/3182 -f 1592/2856/3183 97/1160/3183 1601/1162/3183 -f 1906/47/3184 1514/2160/3184 262/666/3184 -f 13/1307/3185 1565/1306/3185 14/1912/3185 -f 2607/363/3186 2652/724/3186 2621/1608/3186 -f 32/917/3187 593/860/3187 585/1413/3187 -f 3474/2908/3188 3488/1712/3188 3486/2909/3188 -f 341/498/3189 399/431/3189 1718/2910/3189 -f 2615/287/3190 2769/669/3190 2416/2911/3190 -f 1714/1913/3191 1547/2912/3191 13/1307/3191 -f 493/327/3192 481/329/3192 1564/365/3192 -f 2787/2867/3193 2837/2709/3193 2806/2868/3193 -f 1495/2913/3194 1494/729/3194 1693/731/3194 -f 148/1041/3195 122/1100/3195 1609/2914/3195 -f 108/1191/3196 1615/1245/3196 1614/1192/3196 -f 1600/2862/3197 1601/2915/3197 1609/2914/3197 -f 1645/2916/3198 3396/2917/3198 1584/2918/3198 -f 1207/417/3199 3487/1667/3199 3467/1591/3199 -f 1903/2919/3200 515/2920/3200 2781/288/3200 -f 1506/2921/3201 1542/2922/3201 1533/2923/3201 -f 1614/1192/3202 1641/2847/3202 149/2907/3202 -f 1547/2912/3203 1714/1913/3203 1961/2924/3203 -f 1588/2925/3204 1547/2912/3204 1961/2924/3204 -f 1576/1248/3205 1705/1247/3205 1684/2926/3205 -f 1542/2922/3206 1559/2927/3206 1533/2923/3206 -f 1574/2928/3207 1721/2929/3207 1671/2930/3207 -f 1566/2900/3208 1712/2890/3208 1603/2892/3208 -f 1896/2159/3209 1604/2931/3209 1514/2160/3209 -f 1559/2860/3210 1582/2848/3210 1581/2850/3210 -f 1480/2932/3211 1491/2933/3211 1506/2934/3211 -f 372/2935/3212 307/1072/3212 1594/1077/3212 -f 2962/294/3213 2980/2936/3213 2961/2937/3213 -f 1560/2938/3214 1588/2925/3214 1895/243/3214 -f 12/223/3215 1547/2703/3215 1588/2939/3215 -f 1560/2718/3216 12/223/3216 1588/2939/3216 -f 1681/2854/3217 1715/2940/3217 1691/2941/3217 -f 585/1413/3218 1490/1412/3218 37/959/3218 -f 1552/2942/3219 1559/2927/3219 1542/2922/3219 -f 1526/2943/3220 1542/2944/3220 1515/2945/3220 -f 2702/1076/3221 2543/1935/3221 1197/1074/3221 -f 1585/2946/3222 1721/2929/3222 391/2947/3222 -f 341/498/3223 1718/2910/3223 1623/2948/3223 -f 3386/567/3224 341/498/3224 1623/2948/3224 -f 1570/242/3225 1560/2938/3225 1895/243/3225 -f 3502/616/3226 3455/2042/3226 1042/427/3226 -f 3431/2804/3227 1004/2249/3227 3426/1004/3227 -f 1487/2949/3228 22/712/3228 1505/2950/3228 -f 1505/2950/3229 22/712/3229 1530/1793/3229 -f 1581/2850/3230 1551/2951/3230 1533/2861/3230 -f 1603/2892/3231 1585/2946/3231 1594/1077/3231 -f 36/25/3232 58/211/3232 1549/668/3232 -f 1671/2930/3233 1721/2929/3233 1585/2946/3233 -f 1656/2952/3234 3378/2953/3234 2819/2954/3234 -f 3443/1371/3235 3452/2409/3235 3436/1372/3235 -f 1527/2591/3236 49/2955/3236 48/2589/3236 -f 1638/2598/3237 1613/2597/3237 1627/120/3237 -f 1627/2956/3238 1656/2952/3238 2819/2954/3238 -f 209/1124/3239 1672/2957/3239 219/2792/3239 -f 177/1122/3240 1641/2847/3240 1680/1123/3240 -f 1526/2885/3241 1552/2958/3241 1542/2959/3241 -f 1846/1200/3242 1626/2182/3242 1625/2960/3242 -f 3504/2545/3243 3454/1301/3243 3490/1009/3243 -f 3016/2961/3244 3028/2962/3244 3001/2963/3244 -f 1526/2943/3245 1515/2945/3245 1516/2964/3245 -f 1236/2685/3246 506/544/3246 1604/2931/3246 -f 2780/2714/3247 2708/1961/3247 1689/1864/3247 -f 140/1346/3248 179/1345/3248 1622/1293/3248 -f 1586/2903/3249 1665/2965/3249 1664/2904/3249 -f 614/2776/3250 3149/2564/3250 994/2563/3250 -f 2161/318/3251 1026/320/3251 3442/2587/3251 -f 1626/2966/3252 1646/2967/3252 1636/2968/3252 -f 1619/2365/3253 1846/1200/3253 1625/2960/3253 -f 1625/2969/3254 1626/2966/3254 1636/2968/3254 -f 2927/850/3255 2926/2970/3255 2916/851/3255 -f 2991/1880/3256 3001/2963/3256 2990/2560/3256 -f 1865/2971/3257 2737/2972/3257 1875/2973/3257 -f 1566/2900/3258 1720/1073/3258 1661/1071/3258 -f 3492/1003/3259 3432/2531/3259 3431/2804/3259 -f 1506/2934/3260 1533/2974/3260 1532/2975/3260 -f 1638/2598/3261 1627/120/3261 174/119/3261 -f 2561/2976/3262 2594/361/3262 2593/2977/3262 -f 1696/2899/3263 1716/2978/3263 1701/2979/3263 -f 1329/2726/3264 290/496/3264 1713/2980/3264 -f 1615/1245/3265 1616/1244/3265 1628/2853/3265 -f 1721/2981/3266 1574/2982/3266 1679/2874/3266 -f 115/1327/3267 140/1346/3267 1622/1293/3267 -f 1638/2598/3268 174/119/3268 1637/2983/3268 -f 683/1450/3269 1004/2984/3269 686/1583/3269 -f 1606/2985/3270 1570/242/3270 1797/2986/3270 -f 1606/2985/3271 1692/2987/3271 1570/242/3271 -f 1694/2428/3272 1669/862/3272 1704/2988/3272 -f 3174/2989/3273 3190/308/3273 3173/310/3273 -f 1720/1073/3274 1603/2892/3274 1594/1077/3274 -f 3402/1414/3275 585/1413/3275 584/1739/3275 -f 127/883/3276 138/903/3276 1607/836/3276 -f 3152/2894/3277 3188/2990/3277 3162/2895/3277 -f 1679/2874/3278 1665/2965/3278 1586/2903/3278 -f 2708/1961/3279 1598/2991/3279 215/2844/3279 -f 265/71/3280 1684/2926/3280 1712/2992/3280 -f 1679/2874/3281 1586/2903/3281 1721/2981/3281 -f 3234/2993/3282 3204/1982/3282 975/1981/3282 -f 3467/1591/3283 3505/353/3283 1015/751/3283 -f 402/1058/3284 391/1042/3284 1610/1109/3284 -f 174/757/3285 3392/2994/3285 1637/2995/3285 -f 1478/2828/3286 1758/2827/3286 1503/2996/3286 -f 1656/2952/3287 1639/920/3287 1687/887/3287 -f 1614/1192/3288 1609/2997/3288 1601/2998/3288 -f 1487/2949/3289 1488/713/3289 22/712/3289 -f 1583/1121/3290 1582/2848/3290 1552/2958/3290 -f 404/1287/3291 1302/2999/3291 392/1288/3291 -f 399/431/3292 397/411/3292 1718/2910/3292 -f 2457/3000/3293 2992/3001/3293 2468/3002/3293 -f 1682/215/3294 1685/214/3294 1563/3003/3294 -f 3264/1115/3295 3477/788/3295 3460/1116/3295 -f 1993/1966/3296 579/1860/3296 1495/2913/3296 -f 119/169/3297 446/196/3297 1550/198/3297 -f 1704/2988/3298 1669/862/3298 183/194/3298 -f 45/945/3299 585/1413/3299 37/959/3299 -f 1566/2900/3300 1603/2892/3300 1720/1073/3300 -f 166/1295/3301 194/1296/3301 1681/2615/3301 -f 466/1351/3302 1545/1250/3302 1251/1364/3302 -f 1528/2841/3303 1640/381/3303 1564/365/3303 -f 1585/2946/3304 391/2947/3304 1594/1077/3304 -f 119/169/3305 1550/198/3305 1644/170/3305 -f 1687/887/3306 3272/3004/3306 1656/2952/3306 -f 1645/2916/3307 1636/2968/3307 1646/2967/3307 -f 1533/2974/3308 46/3005/3308 1532/2975/3308 -f 1591/2849/3309 1580/3006/3309 1581/2850/3309 -f 1718/2910/3310 1655/3007/3310 1623/2948/3310 -f 1478/2828/3311 1485/3008/3311 3367/3009/3311 -f 3429/1723/3312 3498/777/3312 3505/353/3312 -f 1614/1192/3313 149/2907/3313 1609/2997/3313 -f 1695/3010/3314 1587/3011/3314 1658/3012/3314 -f 2624/3013/3315 1697/311/3315 566/3014/3315 -f 639/1933/3316 3195/1932/3316 613/2777/3316 -f 1667/2785/3317 1665/2965/3317 1679/2874/3317 -f 1630/3015/3318 1644/170/3318 1550/198/3318 -f 1644/170/3319 1630/3015/3319 1658/3012/3319 -f 3208/3016/3320 1646/2967/3320 3392/2994/3320 -f 1680/1123/3321 1642/2852/3321 1691/2941/3321 -f 1591/2849/3322 1600/2857/3322 1580/3006/3322 -f 209/1124/3323 1691/2941/3323 1672/2957/3323 -f 1802/1363/3324 1810/1228/3324 1788/1227/3324 -f 194/1296/3325 1715/3017/3325 1681/2615/3325 -f 1680/1123/3326 1691/2941/3326 209/1124/3326 -f 1495/2913/3327 1517/1138/3327 1494/729/3327 -f 1539/70/3328 1716/2851/3328 1715/3017/3328 -f 2780/2714/3329 1598/2991/3329 2708/1961/3329 -f 2422/2070/3330 2517/2072/3330 2489/2898/3330 -f 1704/2988/3331 1587/3011/3331 1688/3018/3331 -f 2818/3019/3332 2591/3020/3332 2783/3021/3332 -f 1624/3022/3333 1625/2969/3333 1584/2918/3333 -f 1619/3023/3334 1625/2969/3334 1624/3022/3334 -f 1618/3024/3335 1619/3023/3335 1624/3022/3335 -f 2600/268/3336 2434/267/3336 2543/1935/3336 -f 3468/1470/3337 991/3025/3337 3438/1471/3337 -f 3155/3026/3338 3165/3027/3338 3154/3028/3338 -f 1576/1248/3339 1684/2926/3339 265/71/3339 -f 572/1962/3340 580/1313/3340 3348/2147/3340 -f 1520/3029/3341 2456/3030/3341 3124/3031/3341 -f 1922/3032/3342 3355/2288/3342 1943/3033/3342 -f 2808/3034/3343 1898/3035/3343 2548/2117/3343 -f 1533/2974/3344 1551/3036/3344 46/3005/3344 -f 2817/1426/3345 2060/3/3345 1028/3037/3345 -f 1654/3038/3346 1658/3012/3346 1590/3039/3346 -f 1600/2862/3347 1609/2914/3347 122/1100/3347 -f 1563/3040/3348 1685/218/3348 282/217/3348 -f 1623/2948/3349 1655/3007/3349 1595/3041/3349 -f 1688/3018/3350 1695/3010/3350 3387/3042/3350 -f 118/168/3351 1658/3012/3351 1587/3011/3351 -f 1599/939/3352 1578/2886/3352 1607/2887/3352 -f 1519/3043/3353 1682/215/3353 1678/3044/3353 -f 1718/2910/3354 1708/2842/3354 1655/3007/3354 -f 1497/3045/3355 1520/3029/3355 3124/3031/3355 -f 1526/2885/3356 1553/1119/3356 1552/2958/3356 -f 1889/2448/3357 2695/3046/3357 2660/3047/3357 -f 1323/3048/3358 3471/398/3358 3456/400/3358 -f 2960/3049/3359 3033/67/3359 2952/69/3359 -f 183/194/3360 118/168/3360 1587/3011/3360 -f 724/1370/3361 1454/2132/3361 1249/2614/3361 -f 2561/2976/3362 2560/3050/3362 2537/3051/3362 -f 2852/2118/3363 1272/3052/3363 2857/384/3363 -f 3435/3053/3364 2744/2119/3364 2857/384/3364 -f 575/3054/3365 2500/3055/3365 3417/3056/3365 -f 2749/3057/3366 2731/1400/3366 2761/238/3366 -f 1683/2820/3367 1260/184/3367 1647/2768/3367 -f 1684/2891/3368 1671/2930/3368 1603/2892/3368 -f 2538/3058/3369 2561/2976/3369 2537/3051/3369 -f 179/1345/3370 166/1295/3370 1622/1293/3370 -f 3150/3059/3371 1497/3045/3371 3124/3031/3371 -f 1510/3060/3372 1520/3029/3372 1497/3045/3372 -f 1511/3061/3373 1510/3060/3373 1497/3045/3373 -f 1510/3060/3374 1521/3062/3374 1520/3029/3374 -f 1521/3062/3375 1753/3063/3375 1520/3029/3375 -f 1671/2930/3376 1585/2946/3376 1603/2892/3376 -f 1582/2848/3377 1583/1121/3377 97/1160/3377 -f 481/329/3378 507/328/3378 1670/3064/3378 -f 1477/3065/3379 1484/2419/3379 1476/3066/3379 -f 1480/3067/3380 3381/3068/3380 3372/3069/3380 -f 1491/2933/3381 1516/2964/3381 1515/2945/3381 -f 2852/2118/3382 2857/384/3382 2744/2119/3382 -f 1494/729/3383 1517/1138/3383 1527/1139/3383 -f 3276/3070/3384 1562/3071/3384 1595/3072/3384 -f 1630/3015/3385 1550/198/3385 1519/3043/3385 -f 2560/1514/3386 1827/1513/3386 2536/2901/3386 -f 2879/679/3387 1928/678/3387 1832/3073/3387 -f 1691/2941/3388 1696/2899/3388 1672/2957/3388 -f 1504/2826/3389 1478/2828/3389 1486/2877/3389 -f 1643/3074/3390 1681/2854/3390 1628/2853/3390 -f 1497/3045/3391 3150/3059/3391 1511/3061/3391 -f 1511/3061/3392 1521/3062/3392 1510/3060/3392 -f 1506/2934/3393 1532/2975/3393 1490/3075/3393 -f 1717/2791/3394 1566/2900/3394 1661/1071/3394 -f 2814/3076/3395 2854/3077/3395 2796/3078/3395 -f 2561/2976/3396 2582/3079/3396 2594/361/3396 -f 1695/3010/3397 1658/3012/3397 1654/3038/3397 -f 1516/2865/3398 1543/233/3398 1526/3080/3398 -f 1057/2482/3399 2551/2398/3399 1058/2382/3399 -f 1636/2968/3400 1645/2916/3400 1584/2918/3400 -f 1636/2968/3401 1584/2918/3401 1625/2969/3401 -f 1593/2628/3402 1236/2685/3402 1561/2252/3402 -f 210/1284/3403 1715/3017/3403 194/1296/3403 -f 1658/3081/3404 1630/3082/3404 1590/3083/3404 -f 2594/361/3405 2582/3079/3405 2634/362/3405 -f 1528/2841/3406 1564/365/3406 481/329/3406 -f 219/2792/3407 1672/2957/3407 1717/2791/3407 -f 138/903/3408 1639/920/3408 1607/836/3408 -f 1512/3084/3409 1511/3061/3409 1481/3085/3409 -f 1529/3086/3410 1521/3062/3410 1511/3061/3410 -f 1512/3084/3411 1529/3086/3411 1511/3061/3411 -f 1743/3087/3412 2456/3030/3412 1520/3029/3412 -f 2549/3088/3413 2560/3050/3413 2574/3089/3413 -f 2887/250/3414 1911/3090/3414 2870/3091/3414 -f 1550/198/3415 394/197/3415 1682/215/3415 -f 3173/310/3416 3213/2206/3416 3212/2167/3416 -f 1529/3092/3417 1536/2813/3417 1535/3093/3417 -f 1705/3094/3418 1671/2930/3418 1684/2891/3418 -f 1405/3095/3419 2107/3096/3419 1350/3097/3419 -f 1345/23/3420 267/2873/3420 552/38/3420 -f 1484/2419/3421 1483/3098/3421 1476/3066/3421 -f 1550/198/3422 1682/215/3422 1519/3043/3422 -f 1705/1247/3423 1698/1276/3423 1574/2871/3423 -f 1708/2842/3424 1528/2841/3424 1655/3007/3424 -f 1524/3099/3425 1528/2841/3425 481/329/3425 -f 3427/92/3426 3473/872/3426 3448/1277/3426 -f 3113/1220/3427 3128/1219/3427 3139/3100/3427 -f 1693/731/3428 2585/3101/3428 1495/2913/3428 -f 2653/2305/3429 2704/3102/3429 2689/1201/3429 -f 183/194/3430 1587/3011/3430 1704/2988/3430 -f 2896/2462/3431 1507/1196/3431 184/1328/3431 -f 1688/3018/3432 1587/3011/3432 1695/3010/3432 -f 2593/2977/3433 2581/3103/3433 2574/3089/3433 -f 1595/3041/3434 1655/3007/3434 1541/3104/3434 -f 939/1987/3435 918/1625/3435 983/1985/3435 -f 1634/2184/3436 1459/40/3436 1707/3105/3436 -f 1769/252/3437 2567/3106/3437 2422/2070/3437 -f 265/71/3438 1712/2992/3438 1701/72/3438 -f 2536/2901/3439 2537/3107/3439 2560/1514/3439 -f 3367/3009/3440 1485/3008/3440 1477/3065/3440 -f 1476/3066/3441 3324/3108/3441 1477/3065/3441 -f 2708/1961/3442 2673/2319/3442 2424/245/3442 -f 1519/3109/3443 1690/3110/3443 1630/3082/3443 -f 2704/3102/3444 2730/1267/3444 2689/1201/3444 -f 3340/3111/3445 3368/3112/3445 1486/2877/3445 -f 1512/3084/3446 1537/3113/3446 1529/3086/3446 -f 1537/3114/3447 1536/2813/3447 1529/3092/3447 -f 1535/3093/3448 1536/2813/3448 1784/2315/3448 -f 2560/3050/3449 2593/2977/3449 2574/3089/3449 -f 1626/2966/3450 1637/2995/3450 1646/2967/3450 -f 1557/3115/3451 1567/3116/3451 1597/3117/3451 -f 1579/2522/3452 1573/3118/3452 1707/3105/3452 -f 1506/2934/3453 1490/3075/3453 1480/2932/3453 -f 1736/2634/3454 1503/2996/3454 1773/2635/3454 -f 3476/355/3455 1163/280/3455 1015/751/3455 -f 1721/2929/3456 1610/3119/3456 391/2947/3456 -f 1650/1350/3457 1545/1250/3457 466/1351/3457 -f 1485/3008/3458 1484/2419/3458 1477/3065/3458 -f 1621/2375/3459 1571/2205/3459 20/707/3459 -f 1567/3120/3460 1557/3121/3460 1764/2329/3460 -f 1667/2785/3461 1294/1252/3461 1558/1251/3461 -f 1559/2860/3462 1552/2958/3462 1582/2848/3462 -f 1642/2852/3463 1681/2854/3463 1691/2941/3463 -f 1717/2791/3464 1672/2957/3464 1566/2900/3464 -f 1491/2933/3465 1515/2945/3465 1506/2934/3465 -f 290/496/3466 1329/2726/3466 3/497/3466 -f 2045/2155/3467 1573/3118/3467 1579/2522/3467 -f 1573/3118/3468 1660/3122/3468 1707/3105/3468 -f 1660/3122/3469 1634/2184/3469 1707/3105/3469 -f 397/411/3470 1708/2842/3470 1718/2910/3470 -f 1591/2849/3471 1592/2856/3471 1600/2857/3471 -f 1606/2863/3472 1341/2607/3472 1692/2693/3472 -f 486/1231/3473 1544/1216/3473 1668/1262/3473 -f 1503/2996/3474 1736/2634/3474 1502/2420/3474 -f 1485/3008/3475 1502/2420/3475 1484/2419/3475 -f 146/902/3476 1639/920/3476 138/903/3476 -f 1519/3109/3477 1678/3123/3477 1690/3110/3477 -f 1678/3044/3478 1682/215/3478 1563/3003/3478 -f 2500/1651/3479 583/711/3479 1488/713/3479 -f 1512/3124/3480 1481/3125/3480 1537/3126/3480 -f 1610/1109/3481 1664/1150/3481 422/1129/3481 -f 1607/2887/3482 1639/2896/3482 1613/2597/3482 -f 1613/2597/3483 1639/2896/3483 1627/120/3483 -f 118/168/3484 1644/170/3484 1658/3012/3484 -f 3441/870/3485 1027/3127/3485 3468/871/3485 -f 1134/1802/3486 983/1985/3486 918/1625/3486 -f 318/2057/3487 682/745/3487 475/1352/3487 -f 3392/2994/3488 1646/2967/3488 1637/2995/3488 -f 1495/2913/3489 579/1860/3489 1517/1138/3489 -f 1060/3128/3490 1693/731/3490 2469/730/3490 -f 586/1676/3491 50/1189/3491 579/1860/3491 -f 1503/2996/3492 1502/2420/3492 1485/3008/3492 -f 1695/3010/3493 1654/3038/3493 3387/3042/3493 -f 3463/300/3494 3504/2545/3494 3490/1009/3494 -f 1380/151/3495 1606/2863/3495 1442/2571/3495 -f 1482/3129/3496 1481/3085/3496 3184/3130/3496 -f 1482/3129/3497 1537/3113/3497 1481/3085/3497 -f 1534/3131/3498 2898/2211/3498 2868/2529/3498 -f 2869/1415/3499 1534/3131/3499 2868/2529/3499 -f 754/2721/3500 753/1931/3500 784/1930/3500 -f 2791/239/3501 2812/371/3501 2828/373/3501 -f 1573/3118/3502 1554/3132/3502 1660/3122/3502 -f 1660/3122/3503 1602/41/3503 1634/2184/3503 -f 959/576/3504 3029/578/3504 955/2175/3504 -f 1696/2899/3505 1701/2979/3505 1712/2890/3505 -f 3059/3133/3506 3074/3134/3506 3035/3135/3506 -f 1478/2828/3507 1503/2996/3507 1485/3008/3507 -f 2048/322/3508 1621/2375/3508 2121/323/3508 -f 2048/322/3509 1699/3136/3509 1621/2375/3509 -f 1699/3136/3510 1571/2205/3510 1621/2375/3510 -f 1434/1308/3511 1371/2881/3511 1565/1306/3511 -f 1599/939/3512 1638/2598/3512 1839/2181/3512 -f 1558/1251/3513 1668/3137/3513 1665/2965/3513 -f 3435/3053/3514 2857/384/3514 1894/383/3514 -f 2560/3050/3515 2561/2976/3515 2593/2977/3515 -f 2816/2069/3516 2817/1426/3516 1028/3037/3516 -f 1490/1412/3517 3402/1414/3517 3381/3068/3517 -f 1630/3082/3518 1690/3110/3518 1590/3083/3518 -f 1713/2731/3519 1571/2205/3519 1699/3136/3519 -f 1896/2159/3520 1906/47/3520 1904/3138/3520 -f 3402/3139/3521 575/3054/3521 3401/3140/3521 -f 1522/3141/3522 1537/3113/3522 1482/3129/3522 -f 1515/3142/3523 1542/2922/3523 1506/2921/3523 -f 1582/2848/3524 1592/2856/3524 1591/2849/3524 -f 1561/2252/3525 1236/2685/3525 1604/2931/3525 -f 215/2844/3526 2781/288/3526 2615/287/3526 -f 2593/2977/3527 2617/3143/3527 2581/3103/3527 -f 3387/3042/3528 1654/3038/3528 1608/3144/3528 -f 2046/2265/3529 1635/3145/3529 2045/2155/3529 -f 2045/2155/3530 1632/3146/3530 1573/3118/3530 -f 1632/3146/3531 1554/3132/3531 1573/3118/3531 -f 1652/3147/3532 1602/41/3532 1660/3122/3532 -f 664/210/3533 1525/667/3533 58/211/3533 -f 1581/2850/3534 1580/3006/3534 1551/2951/3534 -f 1600/2862/3535 114/1040/3535 1580/1010/3535 -f 2415/3148/3536 2433/3149/3536 2409/3150/3536 -f 1524/3099/3537 481/329/3537 1670/3064/3537 -f 1672/2957/3538 1696/2899/3538 1566/2900/3538 -f 1479/3151/3539 1487/2949/3539 1505/2950/3539 -f 2897/2566/3540 967/1517/3540 1923/2461/3540 -f 1572/2150/3541 1635/3145/3541 2046/2265/3541 -f 1635/3145/3542 1632/3146/3542 2045/2155/3542 -f 1652/3147/3543 3334/3152/3543 1602/41/3543 -f 109/1272/3544 1643/1294/3544 1628/3153/3544 -f 3313/1736/3545 3312/3154/3545 3284/1737/3545 -f 1582/2848/3546 97/1160/3546 1592/2856/3546 -f 1667/2785/3547 1558/1251/3547 1665/2965/3547 -f 1715/2940/3548 1716/2978/3548 1696/2899/3548 -f 2930/3155/3549 1723/3156/3549 1722/3157/3549 -f 2809/3158/3550 2841/3159/3550 2026/3160/3550 -f 394/197/3551 159/213/3551 1682/215/3551 -f 1522/3161/3552 1538/3162/3552 1537/3114/3552 -f 1537/3114/3553 1538/3162/3553 1555/2316/3553 -f 1574/2982/3554 1659/2875/3554 1679/2874/3554 -f 1698/1276/3555 1659/2855/3555 1574/2871/3555 -f 1793/1518/3556 2829/3163/3556 2619/1427/3556 -f 1659/2875/3557 392/2784/3557 1667/2785/3557 -f 2290/846/3558 2246/2036/3558 2193/847/3558 -f 2677/2326/3559 2619/1427/3559 2817/1426/3559 -f 1604/2931/3560 506/544/3560 1514/2160/3560 -f 2926/2229/3561 2927/3164/3561 2945/3165/3561 -f 1486/2877/3562 3397/2180/3562 1479/2179/3562 -f 1544/1216/3563 452/1182/3563 1665/2782/3563 -f 1691/2941/3564 1715/2940/3564 1696/2899/3564 -f 2139/1678/3565 1368/2889/3565 2136/1679/3565 -f 1839/2181/3566 1638/2598/3566 1626/2182/3566 -f 1668/3137/3567 1558/1251/3567 1545/1250/3567 -f 1482/3166/3568 1498/3167/3568 1522/3168/3568 -f 2829/3163/3569 1709/2836/3569 2826/1/3569 -f 2619/1427/3570 2829/3163/3570 2826/1/3570 -f 1507/1196/3571 35/1519/3571 2677/2326/3571 -f 870/2400/3572 3454/1301/3572 3480/1300/3572 -f 1632/3146/3573 1706/3169/3573 1554/3132/3573 -f 1554/3132/3574 1518/3170/3574 1660/3122/3574 -f 1516/2865/3575 1493/234/3575 1543/233/3575 -f 1623/2948/3576 1595/3041/3576 1562/3171/3576 -f 1596/2773/3577 1597/913/3577 1605/540/3577 -f 507/328/3578 3302/3172/3578 1670/3064/3578 -f 1518/3173/3579 1524/3099/3579 1670/3064/3579 -f 1569/3174/3580 1699/3136/3580 2048/322/3580 -f 1569/3174/3581 1649/3175/3581 1699/3136/3581 -f 1649/3175/3582 1713/2731/3582 1699/3136/3582 -f 2593/2977/3583 2594/361/3583 2607/363/3583 -f 1475/3176/3584 3196/3177/3584 1498/3167/3584 -f 1498/3167/3585 1538/3178/3585 1522/3168/3585 -f 1538/3162/3586 1548/2548/3586 1555/2316/3586 -f 1555/2316/3587 1548/2548/3587 1556/3179/3587 -f 1589/3180/3588 1843/2469/3588 1575/3181/3588 -f 1530/2859/3589 1540/3182/3589 1774/3183/3589 -f 2175/3184/3590 2409/3185/3590 2904/3186/3590 -f 2779/3187/3591 2564/3188/3591 2624/3013/3591 -f 1635/3145/3592 1706/3169/3592 1632/3146/3592 -f 1652/3147/3593 1660/3122/3593 1518/3170/3593 -f 2434/267/3594 2838/1635/3594 2711/1634/3594 -f 1530/2859/3595 1774/3183/3595 1504/2826/3595 -f 1626/2182/3596 1638/2598/3596 1637/2983/3596 -f 178/1320/3597 179/1345/3597 195/1336/3597 -f 1540/26/3598 1789/2707/3598 1774/3189/3598 -f 1916/3190/3599 1264/2747/3599 1673/2629/3599 -f 1721/2981/3600 1586/2903/3600 1610/2902/3600 -f 1589/3191/3601 1575/590/3601 1556/3179/3601 -f 1596/2773/3602 1843/2469/3602 1589/3180/3602 -f 2425/3192/3603 2436/2295/3603 3030/2297/3603 -f 2370/2558/3604 2175/3193/3604 2901/2556/3604 -f 1635/3145/3605 1541/3194/3605 1706/3169/3605 -f 83/918/3606 46/960/3606 1551/968/3606 -f 2697/2542/3607 3462/2345/3607 2524/2344/3607 -f 465/1110/3608 1664/1150/3608 452/1182/3608 -f 1424/228/3609 1673/2629/3609 1264/2747/3609 -f 1673/2629/3610 1992/2251/3610 1916/3190/3610 -f 1553/1119/3611 1583/1121/3611 1552/2958/3611 -f 1498/3195/3612 1523/3196/3612 1538/3197/3612 -f 1538/3162/3613 1523/3198/3613 1548/2548/3613 -f 1548/2548/3614 1557/3121/3614 1556/3179/3614 -f 1557/3199/3615 1589/3180/3615 1556/3200/3615 -f 2706/3201/3616 2719/3202/3616 2749/3057/3616 -f 184/3203/3617 2111/3204/3617 2896/3205/3617 -f 2466/3206/3618 2255/3207/3618 2455/3208/3618 -f 2615/287/3619 2416/2911/3619 2766/681/3619 -f 1572/2150/3620 1595/3072/3620 1635/3145/3620 -f 1706/3169/3621 1518/3170/3621 1554/3132/3621 -f 3206/3209/3622 601/1428/3622 3205/3210/3622 -f 2900/3211/3623 2335/1890/3623 2342/3212/3623 -f 3442/2587/3624 708/2360/3624 3447/982/3624 -f 2677/2326/3625 35/1519/3625 2619/1427/3625 -f 931/285/3626 1719/284/3626 1568/2215/3626 -f 2121/323/3627 1621/2375/3627 2119/2374/3627 -f 1677/3213/3628 1838/1038/3628 1805/1037/3628 -f 1546/2869/3629 1569/3174/3629 1927/2870/3629 -f 128/961/3630 1580/1010/3630 114/1040/3630 -f 1505/2858/3631 1504/2826/3631 1479/2179/3631 -f 1329/2726/3632 1649/3214/3632 282/217/3632 -f 2335/1890/3633 2900/3211/3633 1019/3215/3633 -f 1635/3145/3634 1595/3072/3634 1541/3194/3634 -f 2034/241/3635 1797/2986/3635 1570/242/3635 -f 2516/3216/3636 2523/3217/3636 2583/3218/3636 -f 1364/3219/3637 1648/3220/3637 1620/286/3637 -f 1608/3221/3638 1654/3222/3638 1620/286/3638 -f 1654/3222/3639 1719/284/3639 1620/286/3639 -f 1569/3174/3640 1563/3223/3640 1649/3175/3640 -f 1164/3224/3641 2500/1651/3641 1488/713/3641 -f 1609/2914/3642 149/2876/3642 148/1041/3642 -f 1593/2628/3643 1561/2252/3643 1673/2629/3643 -f 1673/2629/3644 1561/2252/3644 1992/2251/3644 -f 1820/2250/3645 1561/2252/3645 1604/2931/3645 -f 1513/2761/3646 1756/2478/3646 1548/2548/3646 -f 1523/3198/3647 1513/2761/3647 1548/2548/3647 -f 1676/3225/3648 592/3226/3648 1686/3227/3648 -f 2073/2710/3649 2837/2709/3649 2787/2867/3649 -f 1541/3194/3650 1655/3228/3650 1706/3169/3650 -f 1648/3220/3651 1608/3221/3651 1620/286/3651 -f 1719/284/3652 1590/3083/3652 1711/2216/3652 -f 1563/3223/3653 1569/3174/3653 1546/2869/3653 -f 1678/3123/3654 1563/3223/3654 1546/2869/3654 -f 1560/2938/3655 1570/242/3655 1692/2987/3655 -f 1615/1245/3656 1628/2853/3656 1642/2852/3656 -f 1629/3229/3657 1179/82/3657 3334/3152/3657 -f 1499/3230/3658 1523/3196/3658 1498/3195/3658 -f 1499/3231/3659 1513/2761/3659 1523/3198/3659 -f 1513/2761/3660 1757/2328/3660 1756/2478/3660 -f 1548/2548/3661 1764/2329/3661 1557/3121/3661 -f 2617/3143/3662 2616/3232/3662 2581/3103/3662 -f 2896/2462/3663 2882/2212/3663 1923/2461/3663 -f 1272/3052/3664 2096/382/3664 2857/384/3664 -f 1655/3228/3665 1524/3233/3665 1706/3169/3665 -f 1524/3099/3666 1518/3173/3666 1706/3234/3666 -f 2591/3020/3667 2818/3019/3667 2798/3235/3667 -f 3387/3236/3668 1608/3221/3668 1648/3220/3668 -f 1590/3083/3669 1690/3110/3669 1711/2216/3669 -f 1690/3110/3670 1546/2869/3670 1711/2216/3670 -f 1563/3040/3671 282/217/3671 1649/3214/3671 -f 1038/1356/3672 1055/926/3672 1045/405/3672 -f 1494/729/3673 1527/1139/3673 1493/234/3673 -f 1628/3153/3674 1616/1273/3674 109/1272/3674 -f 1499/3237/3675 1500/2669/3675 1513/3238/3675 -f 506/544/3676 262/666/3676 1514/2160/3676 -f 1557/3115/3677 1597/3117/3677 1589/3239/3677 -f 1589/3239/3678 1597/3117/3678 1596/3240/3678 -f 602/3241/3679 2813/3242/3679 2846/3243/3679 -f 2617/3143/3680 2621/1608/3680 2616/3232/3680 -f 1528/3244/3681 1524/3233/3681 1655/3228/3681 -f 1518/3170/3682 1670/3245/3682 1652/3147/3682 -f 1529/3086/3683 1535/3246/3683 1521/3062/3683 -f 1923/2461/3684 35/1519/3684 1507/1196/3684 -f 3046/293/3685 3045/2277/3685 2980/2936/3685 -f 215/2844/3686 2894/680/3686 2673/2319/3686 -f 1590/3083/3687 1719/284/3687 1654/3222/3687 -f 1690/3110/3688 1678/3123/3688 1546/2869/3688 -f 2096/382/3689 2161/1082/3689 1894/383/3689 -f 2142/3247/3690 2309/1132/3690 2248/1131/3690 -f 2384/3248/3691 2027/3249/3691 2815/3250/3691 -f 2142/3251/3692 2251/3252/3692 2167/3253/3692 -f 2309/3254/3693 2142/3251/3693 2167/3253/3693 -f 2222/3255/3694 2140/3256/3694 973/3257/3694 -f 1028/3037/3695 2060/3/3695 1833/3258/3695 -f 2167/3253/3696 2251/3252/3696 1888/3259/3696 -f 2723/653/3697 1928/678/3697 2643/677/3697 -f 2345/347/3698 2346/1274/3698 2380/3260/3698 -f 1272/3261/3699 1738/3262/3699 2096/2100/3699 -f 2651/2101/3700 2096/2100/3700 1738/3262/3700 -f 2147/3263/3701 2200/3264/3701 2220/2004/3701 -f 2380/3260/3702 2381/3265/3702 2401/3266/3702 -f 2228/3267/3703 2200/3264/3703 2147/3263/3703 -f 1738/3262/3704 1967/3268/3704 2651/2101/3704 -f 1429/247/3705 1099/3269/3705 1849/3270/3705 -f 1818/2303/3706 1839/2181/3706 1846/1200/3706 -f 1967/3268/3707 1926/3271/3707 1849/3272/3707 -f 1926/3273/3708 801/3274/3708 1429/247/3708 -f 1849/3270/3709 1926/3273/3709 1429/247/3709 -f 801/3274/3710 1428/3275/3710 1429/247/3710 -f 3499/1910/3711 3480/1300/3711 3424/1002/3711 -f 2108/3276/3712 1272/3261/3712 1898/2134/3712 -f 2108/3276/3713 1738/3262/3713 1272/3261/3713 -f 1428/3275/3714 1295/248/3714 1429/247/3714 -f 1226/2687/3715 1099/2781/3715 1232/182/3715 -f 2108/3276/3716 1967/3268/3716 1738/3262/3716 -f 801/3274/3717 1740/3277/3717 1428/3275/3717 -f 1740/3277/3718 1295/248/3718 1428/3275/3718 -f 2108/3276/3719 1938/3278/3719 1967/3268/3719 -f 1967/3268/3720 1726/3279/3720 1926/3271/3720 -f 1726/3279/3721 1803/3280/3721 1926/3271/3721 -f 1926/3271/3722 1803/3280/3722 801/3281/3722 -f 801/3282/3723 1803/3283/3723 1740/3284/3723 -f 1728/2660/3724 1647/2659/3724 1740/3285/3724 -f 1938/3278/3725 1726/3279/3725 1967/3268/3725 -f 1803/3286/3726 1739/3287/3726 1740/3277/3726 -f 1740/3285/3727 1739/3288/3727 1728/2660/3727 -f 3444/2043/3728 3448/1106/3728 3478/428/3728 -f 3502/837/3729 3503/1098/3729 3496/1097/3729 -f 1980/3289/3730 1982/3290/3730 2062/2136/3730 -f 1982/3290/3731 2108/3276/3731 2062/2136/3731 -f 1848/3291/3732 204/3292/3732 1739/3288/3732 -f 1803/3283/3733 1848/3293/3733 1739/3294/3733 -f 1739/3288/3734 204/3292/3734 1728/2660/3734 -f 2274/3295/3735 2454/845/3735 2191/3296/3735 -f 1726/3279/3736 1881/3297/3736 1803/3280/3736 -f 1803/3283/3737 1881/3298/3737 1848/3293/3737 -f 1872/1946/3738 1982/3290/3738 1980/3289/3738 -f 2108/3276/3739 1982/3290/3739 1938/3278/3739 -f 1938/3278/3740 2024/3299/3740 1726/3279/3740 -f 1881/3298/3741 1873/3300/3741 1848/3293/3741 -f 1873/3301/3742 1882/2677/3742 204/3292/3742 -f 1848/3291/3743 1873/3301/3743 204/3292/3743 -f 1683/2658/3744 204/3292/3744 1882/2677/3744 -f 1982/3290/3745 1182/3302/3745 1938/3278/3745 -f 1182/3302/3746 2024/3299/3746 1938/3278/3746 -f 2024/3299/3747 1881/3297/3747 1726/3279/3747 -f 1881/3298/3748 1947/3303/3748 1873/3300/3748 -f 2034/241/3749 1994/3304/3749 1797/2986/3749 -f 2024/3305/3750 1947/3303/3750 1881/3298/3750 -f 1946/3306/3751 1883/3307/3751 1873/3301/3751 -f 1947/3303/3752 1946/3308/3752 1873/3300/3752 -f 2024/3309/3753 1946/3310/3753 1947/3311/3753 -f 1946/3306/3754 1882/2677/3754 1883/3307/3754 -f 1838/1038/3755 2097/3312/3755 1872/1946/3755 -f 2097/3312/3756 1982/3290/3756 1872/1946/3756 -f 2024/3305/3757 2008/3313/3757 1946/3308/3757 -f 1915/3314/3758 1937/1103/3758 1882/2677/3758 -f 1946/3306/3759 1915/3314/3759 1882/2677/3759 -f 2097/3312/3760 1182/3302/3760 1982/3290/3760 -f 1182/3302/3761 1812/3315/3761 2024/3299/3761 -f 2024/3299/3762 1812/3315/3762 2008/3316/3762 -f 2008/3313/3763 1863/3317/3763 1946/3308/3763 -f 1946/3306/3764 1863/3318/3764 1915/3314/3764 -f 1371/2881/3765 2106/2748/3765 1565/1306/3765 -f 1736/2634/3766 1735/2218/3766 1501/2217/3766 -f 1810/1228/3767 1802/1363/3767 1811/1362/3767 -f 1870/3319/3768 2106/2748/3768 1937/1103/3768 -f 1883/3320/3769 1882/3321/3769 1873/3300/3769 -f 1871/2583/3770 1925/2214/3770 1003/3322/3770 -f 1847/3323/3771 1182/3302/3771 2097/3312/3771 -f 1812/3315/3772 1767/3324/3772 2008/3316/3772 -f 1863/3318/3773 1870/3319/3773 1915/3314/3773 -f 1870/3319/3774 1937/1103/3774 1915/3314/3774 -f 1787/1229/3775 1809/2623/3775 1801/2479/3775 -f 1484/3325/3776 1501/3326/3776 1483/3327/3776 -f 3455/2042/3777 3478/428/3777 1042/427/3777 -f 2357/3328/3778 2064/2209/3778 1990/3329/3778 -f 2363/3330/3779 2262/3331/3779 2378/3332/3779 -f 1758/2827/3780 1504/2826/3780 1774/3183/3780 -f 2820/3333/3781 966/3334/3781 2435/3335/3781 -f 1847/3323/3782 1812/3315/3782 1182/3302/3782 -f 1767/3336/3783 1737/3337/3783 2008/3313/3783 -f 1737/3338/3784 1870/3319/3784 1863/3318/3784 -f 2008/3313/3785 1737/3337/3785 1863/3317/3785 -f 2284/3339/3786 2211/3340/3786 2310/3341/3786 -f 2143/3342/3787 2197/1925/3787 1344/2639/3787 -f 1838/1038/3788 1847/3323/3788 2097/3312/3788 -f 1727/3343/3789 1906/47/3789 1461/46/3789 -f 1595/3072/3790 1572/2150/3790 3276/3070/3790 -f 2287/3344/3791 2248/3345/3791 2310/3341/3791 -f 1893/2093/3792 1154/364/3792 2084/2321/3792 -f 2084/2321/3793 1154/364/3793 2068/1846/3793 -f 1847/3323/3794 2023/3346/3794 1812/3315/3794 -f 1737/3338/3795 1775/3347/3795 1870/3319/3795 -f 2955/3348/3796 2948/2728/3796 2965/2730/3796 -f 2214/3349/3797 2383/3350/3797 2188/3351/3797 -f 1677/3213/3798 1936/2496/3798 1838/1038/3798 -f 1936/2496/3799 1847/3323/3799 1838/1038/3799 -f 2023/3346/3800 1984/3352/3800 1812/3315/3800 -f 1812/3315/3801 1984/3352/3801 1767/3324/3801 -f 1984/3353/3802 2072/3354/3802 1737/3337/3802 -f 1767/3336/3803 1984/3353/3803 1737/3337/3803 -f 1737/3338/3804 2072/3355/3804 1775/3347/3804 -f 2106/2748/3805 1870/3319/3805 1775/3347/3805 -f 2363/3330/3806 2379/3356/3806 2262/3331/3806 -f 2025/3357/3807 2787/2867/3807 2743/2866/3807 -f 2025/3358/3808 2053/3359/3808 2787/3360/3808 -f 2053/3359/3809 2073/3361/3809 2787/3360/3809 -f 2110/3362/3810 2880/3363/3810 2073/3361/3810 -f 3274/3364/3811 1864/3365/3811 1677/3366/3811 -f 1677/3213/3812 1864/2497/3812 1936/2496/3812 -f 1098/3367/3813 1847/3323/3813 1936/2496/3813 -f 2365/3368/3814 2386/3369/3814 2374/3370/3814 -f 2345/347/3815 1472/348/3815 2346/1274/3815 -f 2686/3371/3816 2633/3372/3816 1950/3373/3816 -f 2686/3374/3817 1998/3375/3817 1997/3376/3817 -f 2010/3377/3818 2053/3359/3818 2025/3358/3818 -f 2053/3359/3819 2089/3378/3819 2073/3361/3819 -f 2110/3362/3820 231/3379/3820 1145/3380/3820 -f 1507/1196/3821 2677/2326/3821 2153/1194/3821 -f 1098/3367/3822 2052/3381/3822 1847/3323/3822 -f 1847/3323/3823 2052/3381/3823 2023/3346/3823 -f 2072/3355/3824 1821/3382/3824 1775/3347/3824 -f 1775/3347/3825 1821/3382/3825 2106/2748/3825 -f 2132/3383/3826 2320/3384/3826 2312/3385/3826 -f 1929/3386/3827 1998/3375/3827 2686/3374/3827 -f 1950/3387/3828 1929/3386/3828 2686/3374/3828 -f 1997/3376/3829 1998/3375/3829 2025/3358/3829 -f 2025/3358/3830 1998/3375/3830 2010/3377/3830 -f 2089/3378/3831 2110/3362/3831 2073/3361/3831 -f 3057/1411/3832 3032/3388/3832 2998/2474/3832 -f 1984/3353/3833 2095/3389/3833 2072/3354/3833 -f 2095/3390/3834 1821/3382/3834 2072/3355/3834 -f 2035/3391/3835 2224/3392/3835 2141/770/3835 -f 1899/3393/3836 1929/3386/3836 1950/3387/3836 -f 2089/3378/3837 2111/3204/3837 2110/3362/3837 -f 1912/628/3838 1098/3367/3838 1936/2496/3838 -f 1966/3394/3839 2095/3389/3839 1984/3353/3839 -f 2023/3346/3840 1966/3395/3840 1984/3352/3840 -f 1821/3382/3841 1565/1306/3841 2106/2748/3841 -f 1555/2316/3842 1556/3179/3842 1785/589/3842 -f 2224/3392/3843 2035/3391/3843 2140/3256/3843 -f 2606/3396/3844 1885/3397/3844 1899/3398/3844 -f 1899/3393/3845 1917/3399/3845 1929/3386/3845 -f 1917/3399/3846 1930/3400/3846 1929/3386/3846 -f 1929/3386/3847 1951/3401/3847 1998/3375/3847 -f 1951/3401/3848 1999/3402/3848 1998/3375/3848 -f 1998/3375/3849 1999/3402/3849 2010/3377/3849 -f 1999/3402/3850 2054/3403/3850 2010/3377/3850 -f 2054/3403/3851 2074/3404/3851 2053/3359/3851 -f 2010/3377/3852 2054/3403/3852 2053/3359/3852 -f 2074/3404/3853 2089/3378/3853 2053/3359/3853 -f 243/2245/3854 767/3405/3854 1368/2889/3854 -f 1098/3367/3855 1983/3406/3855 2052/3381/3855 -f 2052/3381/3856 1966/3395/3856 2023/3346/3856 -f 1831/937/3857 1839/2181/3857 1818/2303/3857 -f 2222/3255/3858 2224/3392/3858 2140/3256/3858 -f 2262/3331/3859 2148/3407/3859 2358/1111/3859 -f 1856/3408/3860 1876/3409/3860 1885/3410/3860 -f 1876/3409/3861 1917/3399/3861 1885/3410/3861 -f 1885/3410/3862 1917/3399/3862 1899/3393/3862 -f 1930/3400/3863 1951/3401/3863 1929/3386/3863 -f 2111/3204/3864 2089/3378/3864 2074/3404/3864 -f 350/3411/3865 231/3379/3865 2110/3362/3865 -f 2111/3204/3866 350/3411/3866 2110/3362/3866 -f 349/3412/3867 2153/3413/3867 231/3414/3867 -f 767/1235/3868 1367/3415/3868 1368/3416/3868 -f 1983/3406/3869 1098/3367/3869 1912/628/3869 -f 1204/163/3870 1349/3417/3870 1707/3105/3870 -f 2358/1111/3871 973/3418/3871 2392/3419/3871 -f 2148/3407/3872 973/3418/3872 2358/1111/3872 -f 1999/3402/3873 2000/3420/3873 2054/3403/3873 -f 2099/3421/3874 2111/3204/3874 2074/3404/3874 -f 2075/3422/3875 2099/3421/3875 2074/3404/3875 -f 349/3423/3876 231/3379/3876 350/3411/3876 -f 1755/3424/3877 1912/628/3877 1631/627/3877 -f 1755/3424/3878 1983/3406/3878 1912/628/3878 -f 1983/3406/3879 2127/3425/3879 2052/3381/3879 -f 2052/3381/3880 2127/3425/3880 1966/3395/3880 -f 2095/3390/3881 1745/3426/3881 1821/3382/3881 -f 1745/3426/3882 14/1912/3882 1565/1306/3882 -f 1821/3382/3883 1745/3426/3883 1565/1306/3883 -f 2689/1201/3884 2688/1203/3884 2687/1417/3884 -f 440/2705/3885 1313/697/3885 439/1377/3885 -f 1864/3365/3886 3274/3364/3886 1531/3427/3886 -f 531/385/3887 3275/3428/3887 3222/367/3887 -f 1787/1229/3888 1801/2479/3888 1765/2630/3888 -f 2232/3429/3889 2147/3430/3889 2387/3431/3889 -f 1940/3432/3890 1985/3433/3890 1951/3401/3890 -f 1930/3400/3891 1940/3432/3891 1951/3401/3891 -f 1951/3401/3892 2001/3434/3892 1999/3402/3892 -f 1999/3402/3893 2001/3434/3893 2000/3420/3893 -f 2000/3420/3894 2075/3422/3894 2054/3403/3894 -f 2054/3403/3895 2075/3422/3895 2074/3404/3895 -f 350/3411/3896 2111/3204/3896 184/3203/3896 -f 1631/627/3897 1448/3435/3897 1755/3424/3897 -f 1966/3394/3898 2009/3436/3898 2095/3389/3898 -f 2009/3437/3899 1745/3426/3899 2095/3390/3899 -f 1579/2522/3900 2058/2158/3900 2045/2155/3900 -f 500/1263/3901 1668/1262/3901 1545/1310/3901 -f 2200/3264/3902 2203/162/3902 2220/2004/3902 -f 2220/2004/3903 2203/162/3903 2382/2005/3903 -f 1830/781/3904 3464/20/3904 1197/3438/3904 -f 2912/3439/3905 1748/3440/3905 2319/3441/3905 -f 1748/3440/3906 1741/3442/3906 2319/3441/3906 -f 1748/3440/3907 2233/3443/3907 1741/3442/3907 -f 2382/3444/3908 2203/3445/3908 2250/2407/3908 -f 1857/3446/3909 1877/3447/3909 1876/3409/3909 -f 1856/3408/3910 1857/3446/3910 1876/3409/3910 -f 1917/3399/3911 1900/3448/3911 1930/3400/3911 -f 1951/3401/3912 1985/3433/3912 2001/3434/3912 -f 2001/3434/3913 2011/3449/3913 2000/3420/3913 -f 1843/2469/3914 1596/2773/3914 1854/542/3914 -f 1532/3450/3915 46/960/3915 37/959/3915 -f 1768/3451/3916 2233/3443/3916 1748/3440/3916 -f 1768/3451/3917 2276/3452/3917 2233/3443/3917 -f 1160/1611/3918 453/1948/3918 384/1609/3918 -f 1768/3451/3919 1778/3453/3919 2276/3452/3919 -f 1876/3409/3920 1877/3447/3920 1917/3399/3920 -f 1900/3448/3921 1940/3432/3921 1930/3400/3921 -f 2036/3454/3922 2075/3422/3922 2000/3420/3922 -f 2075/3455/3923 2882/2212/3923 2099/3456/3923 -f 3189/1637/3924 3188/3457/3924 3152/1638/3924 -f 2308/3458/3925 2244/3459/3925 2185/3460/3925 -f 1579/2522/3926 1349/3417/3926 2066/2523/3926 -f 1722/3157/3927 1768/3451/3927 1748/3440/3927 -f 1807/2302/3928 2087/822/3928 1288/2233/3928 -f 1917/3399/3929 1877/3447/3929 1900/3448/3929 -f 1877/3447/3930 1918/3461/3930 1900/3448/3930 -f 1900/3448/3931 1952/3462/3931 1940/3432/3931 -f 1940/3432/3932 1952/3462/3932 1985/3433/3932 -f 1985/3433/3933 2002/3463/3933 2001/3434/3933 -f 2001/3434/3934 2002/3463/3934 2011/3449/3934 -f 2011/3449/3935 2036/3454/3935 2000/3420/3935 -f 2075/3422/3936 2867/3464/3936 2882/3465/3936 -f 229/2463/3937 163/2652/3937 1116/2276/3937 -f 2908/3466/3938 2306/3467/3938 2406/3468/3938 -f 1983/3406/3939 2086/3469/3939 2127/3425/3939 -f 2086/3470/3940 1776/3471/3940 1966/3394/3940 -f 2127/3425/3941 2086/3469/3941 1966/3395/3941 -f 1966/3394/3942 1776/3471/3942 2009/3436/3942 -f 1776/3472/3943 1745/3426/3943 2009/3437/3943 -f 2389/3473/3944 2399/3474/3944 2235/3475/3944 -f 1888/3476/3945 2307/2426/3945 2167/3477/3945 -f 1056/3478/3946 1141/101/3946 561/2361/3946 -f 2930/3155/3947 1722/3157/3947 2912/3439/3947 -f 1729/3479/3948 1768/3480/3948 1722/3481/3948 -f 1729/3479/3949 1779/3482/3949 1768/3480/3949 -f 1779/3482/3950 1778/3483/3950 1768/3480/3950 -f 1835/1867/3951 1857/3446/3951 1834/1865/3951 -f 1835/1867/3952 1850/3484/3952 1857/3446/3952 -f 1857/3446/3953 1850/3484/3953 1877/3447/3953 -f 2026/3160/3954 2841/3159/3954 2036/3454/3954 -f 2011/3449/3955 2026/3160/3955 2036/3454/3955 -f 2362/3485/3956 2284/3339/3956 2199/3486/3956 -f 3236/1114/3957 1964/3487/3957 1448/3488/3957 -f 1448/3435/3958 2022/3489/3958 1755/3424/3958 -f 2022/3489/3959 1754/3490/3959 1755/3424/3959 -f 1754/3490/3960 1983/3406/3960 1755/3424/3960 -f 1754/3490/3961 2086/3469/3961 1983/3406/3961 -f 1955/3491/3962 1941/3492/3962 1956/3493/3962 -f 188/3494/3963 2145/3495/3963 1939/3496/3963 -f 1723/3156/3964 1730/3497/3964 1722/3157/3964 -f 1730/3497/3965 1729/3498/3965 1722/3157/3965 -f 1749/3499/3966 1779/3500/3966 1729/3498/3966 -f 1824/3501/3967 1835/3502/3967 1813/2561/3967 -f 1814/2201/3968 1824/3501/3968 1813/2561/3968 -f 1824/3503/3969 1836/3504/3969 1835/1867/3969 -f 1835/1867/3970 1836/3504/3970 1850/3484/3970 -f 1900/3448/3971 1918/3461/3971 1952/3462/3971 -f 1985/3433/3972 1952/3462/3972 2002/3463/3972 -f 2775/3505/3973 2026/3160/3973 2002/3463/3973 -f 2002/3463/3974 2026/3160/3974 2011/3449/3974 -f 2775/3505/3975 2809/3158/3975 2026/3160/3975 -f 1724/408/3976 2018/2631/3976 1137/2195/3976 -f 2018/2631/3977 1879/1574/3977 1137/2195/3977 -f 1776/3472/3978 557/3506/3978 1745/3426/3978 -f 1745/3426/3979 1714/1913/3979 14/1912/3979 -f 982/259/3980 1327/2832/3980 1131/2232/3980 -f 2300/3507/3981 1145/3508/3981 231/3414/3981 -f 1865/3509/3982 188/3494/3982 1939/3496/3982 -f 2908/3510/3983 2907/2457/3983 2413/3511/3983 -f 1730/3497/3984 1749/3499/3984 1729/3498/3984 -f 1324/2034/3985 232/2161/3985 1460/2035/3985 -f 1919/3512/3986 1931/2235/3986 1952/3462/3986 -f 1918/3461/3987 1919/3512/3987 1952/3462/3987 -f 1952/3462/3988 1931/2235/3988 2002/3463/3988 -f 2339/2433/3989 2179/3513/3989 2328/2459/3989 -f 2017/2157/3990 2044/2156/3990 3182/562/3990 -f 1159/2291/3991 1925/2214/3991 1871/2583/3991 -f 2370/2558/3992 2903/2557/3992 2342/3212/3992 -f 1964/2128/3993 2105/3514/3993 1448/3435/3993 -f 1448/3435/3994 2105/3514/3994 2022/3489/3994 -f 3273/3515/3995 1629/3229/3995 3334/3152/3995 -f 1136/3516/3996 1333/3517/3996 1350/3097/3996 -f 1875/2973/3997 188/3518/3997 1865/2971/3997 -f 1750/3519/3998 1749/3499/3998 1730/3497/3998 -f 1749/3520/3999 1804/725/3999 1779/727/3999 -f 1825/3521/4000 1824/3501/4000 1814/2201/4000 -f 1825/3521/4001 1836/3522/4001 1824/3501/4001 -f 1836/3504/4002 1840/3523/4002 1850/3484/4002 -f 1850/3484/4003 1878/3524/4003 1877/3447/4003 -f 1877/3447/4004 1878/3524/4004 1918/3461/4004 -f 1931/2235/4005 2703/3525/4005 2002/3463/4005 -f 2351/3526/4006 2465/2145/4006 2481/2144/4006 -f 1736/2634/4007 1744/2473/4007 1735/2218/4007 -f 1765/2630/4008 1772/1046/4008 1744/2477/4008 -f 3483/1780/4009 453/1781/4009 3432/2531/4009 -f 1765/2630/4010 1801/2479/4010 1772/1046/4010 -f 1801/2479/4011 1809/2623/4011 1808/1135/4011 -f 1809/2304/4012 1818/2303/4012 1808/1147/4012 -f 3469/782/4013 1174/3527/4013 2007/2766/4013 -f 2086/3470/4014 2125/3528/4014 1776/3471/4014 -f 1776/3472/4015 2125/3529/4015 557/3506/4015 -f 557/3506/4016 1961/2924/4016 1745/3426/4016 -f 3136/3530/4017 47/99/4017 1056/3478/4017 -f 1141/101/4018 1159/2291/4018 1309/2582/4018 -f 1742/3531/4019 1730/3497/4019 2949/3532/4019 -f 2930/3155/4020 2949/3532/4020 1723/3156/4020 -f 1742/3531/4021 1750/3519/4021 1730/3497/4021 -f 1791/3533/4022 1804/3534/4022 1749/3499/4022 -f 1869/59/4023 1893/2093/4023 1862/174/4023 -f 1850/3484/4024 1840/3523/4024 1878/3524/4024 -f 1918/3461/4025 1878/3524/4025 1919/3512/4025 -f 2703/3525/4026 1969/3535/4026 2002/3463/4026 -f 2221/2313/4027 2142/3247/4027 2248/1131/4027 -f 1575/590/4028 1785/589/4028 1556/3179/4028 -f 1905/2500/4029 1188/1575/4029 1003/3322/4029 -f 2063/3536/4030 1754/3490/4030 2022/3489/4030 -f 2063/3536/4031 2050/3537/4031 1754/3490/4031 -f 2050/3538/4032 2125/3528/4032 2086/3470/4032 -f 1754/3490/4033 2050/3537/4033 2086/3469/4033 -f 1826/3539/4034 1814/2201/4034 1827/1513/4034 -f 2688/1203/4035 2703/3540/4035 2687/1417/4035 -f 2669/857/4036 2754/705/4036 3428/759/4036 -f 1791/3533/4037 1749/3499/4037 1750/3519/4037 -f 1826/3539/4038 1825/3521/4038 1814/2201/4038 -f 2294/2202/4039 1814/2201/4039 1804/725/4039 -f 1837/3541/4040 1836/3522/4040 1825/3521/4040 -f 1826/3542/4041 1837/3543/4041 1825/3544/4041 -f 1837/3543/4042 1840/3523/4042 1836/3504/4042 -f 2482/2327/4043 2817/1426/4043 2816/2069/4043 -f 1128/1576/4044 2121/323/4044 2119/2374/4044 -f 1160/3545/4045 3432/2531/4045 453/1781/4045 -f 2087/822/4046 1989/1213/4046 1288/2233/4046 -f 1884/3546/4047 188/3494/4047 1875/3547/4047 -f 1884/3546/4048 1336/3548/4048 188/3494/4048 -f 2949/3532/4049 1731/3549/4049 1742/3531/4049 -f 3141/2833/4050 3189/1637/4050 3140/1218/4050 -f 1840/3523/4051 1858/3550/4051 1878/3524/4051 -f 1886/3551/4052 1908/2236/4052 1919/3512/4052 -f 1878/3524/4053 1886/3551/4053 1919/3512/4053 -f 1919/3512/4054 1908/2236/4054 1931/2235/4054 -f 2401/3266/4055 2172/3552/4055 973/3418/4055 -f 2259/3553/4056 2895/3554/4056 2368/3555/4056 -f 1602/41/4057 3334/3152/4057 1179/82/4057 -f 1056/3478/4058 47/99/4058 1141/101/4058 -f 1758/2827/4059 1773/2635/4059 1503/2996/4059 -f 1733/1047/4060 1770/1090/4060 1757/2328/4060 -f 1629/3229/4061 1122/2343/4061 1179/82/4061 -f 1629/3229/4062 1269/2342/4062 1122/2343/4062 -f 1629/3229/4063 3407/3556/4063 1269/2342/4063 -f 2656/805/4064 2668/807/4064 2655/3557/4064 -f 1964/2128/4065 1363/3558/4065 2105/3514/4065 -f 2126/3559/4066 2022/3489/4066 2105/3514/4066 -f 2022/3489/4067 2126/3559/4067 2063/3536/4067 -f 2063/3536/4068 2094/3560/4068 2125/3529/4068 -f 2050/3538/4069 2063/3561/4069 2125/3528/4069 -f 2125/3529/4070 2094/3560/4070 557/3506/4070 -f 557/3506/4071 1895/243/4071 1961/2924/4071 -f 1520/3029/4072 1753/3063/4072 1743/3087/4072 -f 1736/2634/4073 1501/2217/4073 1502/2420/4073 -f 1751/3562/4074 1750/3519/4074 1742/3531/4074 -f 1751/3562/4075 1780/3563/4075 1750/3519/4075 -f 1780/3563/4076 1791/3533/4076 1750/3519/4076 -f 1827/1513/4077 1837/3541/4077 1826/3539/4077 -f 1841/3564/4078 1840/3523/4078 1837/3543/4078 -f 1840/3523/4079 1841/3564/4079 1858/3550/4079 -f 1858/3550/4080 1866/2422/4080 1878/3524/4080 -f 1878/3524/4081 1866/2422/4081 1886/3551/4081 -f 1764/2329/4082 1786/2441/4082 1567/3120/4082 -f 1800/1148/4083 1817/177/4083 1799/176/4083 -f 1799/176/4084 1798/912/4084 1786/2322/4084 -f 2868/2529/4085 2898/2211/4085 2867/2213/4085 -f 1363/3558/4086 2126/3559/4086 2105/3514/4086 -f 1895/243/4087 1588/2925/4087 1961/2924/4087 -f 1948/2825/4088 1875/3547/4088 2144/3565/4088 -f 1948/2825/4089 1884/3546/4089 1875/3547/4089 -f 1369/2824/4090 1336/3548/4090 1884/3546/4090 -f 2407/3566/4091 2907/2457/4091 2906/2458/4091 -f 2949/3532/4092 2446/3567/4092 1731/3549/4092 -f 1141/101/4093 1309/2582/4093 1325/199/4093 -f 1842/3568/4094 1837/3541/4094 1827/1513/4094 -f 1842/220/4095 1841/3564/4095 1837/3543/4095 -f 1886/3569/4096 1901/3570/4096 1908/1418/4096 -f 2283/3571/4097 2337/3572/4097 2368/3555/4097 -f 2155/3573/4098 2271/3574/4098 2391/3575/4098 -f 1798/912/4099 1799/176/4099 1844/2371/4099 -f 1989/1213/4100 1311/2186/4100 2031/2185/4100 -f 1846/1200/4101 1619/2365/4101 1845/178/4101 -f 57/1367/4102 2061/2696/4102 1296/2577/4102 -f 3471/3576/4103 1323/3577/4103 1363/3558/4103 -f 1895/243/4104 557/3506/4104 2094/3560/4104 -f 1807/2302/4105 2067/708/4105 2087/822/4105 -f 2068/1846/4106 2067/708/4106 1807/2302/4106 -f 1977/2720/4107 1958/232/4107 2724/1977/4107 -f 1369/2824/4108 1884/3546/4108 1948/2825/4108 -f 727/352/4109 726/485/4109 492/276/4109 -f 1751/3562/4110 1742/3531/4110 1731/3549/4110 -f 1792/3578/4111 1791/3533/4111 1780/3563/4111 -f 1842/220/4112 1866/2422/4112 1858/3550/4112 -f 1841/3564/4113 1842/220/4113 1858/3550/4113 -f 2574/222/4114 2581/2423/4114 1842/220/4114 -f 1866/2422/4115 2616/2421/4115 1886/3551/4115 -f 1886/3551/4116 2616/2421/4116 1901/3579/4116 -f 2337/3572/4117 2259/3553/4117 2368/3555/4117 -f 1961/2924/4118 1714/1913/4118 1745/3426/4118 -f 2212/3580/4119 2368/3555/4119 1048/3581/4119 -f 2916/851/4120 2915/3582/4120 2906/2458/4120 -f 2274/3295/4121 2247/3583/4121 2350/3584/4121 -f 1170/2162/4122 1078/6/4122 1460/2035/4122 -f 1288/2233/4123 1989/1213/4123 2031/2185/4123 -f 1893/3585/4124 2084/3586/4124 2085/3587/4124 -f 3456/400/4125 2007/2766/4125 1323/3048/4125 -f 1280/3588/4126 2063/3536/4126 2126/3559/4126 -f 2098/3589/4127 1280/3588/4127 2126/3559/4127 -f 2063/3536/4128 1280/3588/4128 2094/3560/4128 -f 1416/3590/4129 1948/2825/4129 2144/3565/4129 -f 2048/322/4130 2069/321/4130 1569/3174/4130 -f 2183/1718/4131 2347/1956/4131 214/1716/4131 -f 2226/3591/4132 2131/3592/4132 2338/3593/4132 -f 3025/3594/4133 3011/3595/4133 3049/3596/4133 -f 2055/3597/4134 2078/3598/4134 2077/3599/4134 -f 2078/3600/4135 4/3601/4135 2112/3602/4135 -f 232/2161/4136 1170/2162/4136 1460/2035/4136 -f 1078/6/4137 1170/2162/4137 1095/4/4137 -f 2100/2172/4138 1158/2171/4138 1286/2338/4138 -f 1128/1576/4139 2119/2374/4139 2104/592/4139 -f 1012/2222/4140 991/2378/4140 3468/2223/4140 -f 1323/3577/4141 2123/3603/4141 1363/3558/4141 -f 2123/3603/4142 1051/3604/4142 2126/3559/4142 -f 1363/3558/4143 2123/3603/4143 2126/3559/4143 -f 2126/3559/4144 1051/3604/4144 2098/3589/4144 -f 1280/3588/4145 2034/241/4145 2094/3560/4145 -f 2034/241/4146 1895/243/4146 2094/3560/4146 -f 1277/100/4147 1364/3219/4147 931/285/4147 -f 1879/1574/4148 1128/1576/4148 2104/592/4148 -f 2067/708/4149 2068/1846/4149 2047/593/4149 -f 1393/2244/4150 1948/3605/4150 1416/61/4150 -f 2552/1854/4151 1023/1856/4151 2544/3606/4151 -f 1320/2686/4152 1236/2685/4152 1593/2628/4152 -f 1027/3127/4153 3441/870/4153 1111/3607/4153 -f 4/3608/4154 1190/3609/4154 1307/3610/4154 -f 1190/3611/4155 130/2032/4155 1307/2031/4155 -f 2548/271/4156 3450/1786/4156 3449/3612/4156 -f 2252/2505/4157 2165/3613/4157 2131/3614/4157 -f 2058/2158/4158 2066/2523/4158 2057/219/4158 -f 2058/2158/4159 2057/219/4159 2044/2156/4159 -f 2897/2566/4160 1923/2461/4160 2882/2212/4160 -f 2007/3615/4161 1174/3616/4161 1323/3577/4161 -f 1323/3577/4162 1174/3616/4162 2123/3603/4162 -f 1280/3588/4163 2098/3589/4163 2034/241/4163 -f 1988/272/4164 1968/2750/4164 1284/1909/4164 -f 602/3241/4165 2887/250/4165 2813/3242/4165 -f 1766/57/4166 1762/407/4166 1981/58/4166 -f 2781/3617/4167 2090/3618/4167 2144/3565/4167 -f 2090/2173/4168 1416/61/4168 2144/3619/4168 -f 1418/63/4169 1393/2244/4169 1416/61/4169 -f 1349/3417/4170 2117/306/4170 2066/2523/4170 -f 2322/2003/4171 2266/3620/4171 2254/3621/4171 -f 2055/3597/4172 2037/3622/4172 2078/3598/4172 -f 2030/87/4173 2042/89/4173 2041/1016/4173 -f 1324/2034/4174 1459/40/4174 232/2161/4174 -f 1534/3131/4175 2897/2566/4175 2898/2211/4175 -f 1535/3246/4176 1753/3063/4176 1521/3062/4176 -f 1326/2758/4177 1364/3219/4177 1277/100/4177 -f 30/2724/4178 2170/2723/4178 1227/28/4178 -f 3213/2206/4179 3279/106/4179 3227/2262/4179 -f 2090/2173/4180 1433/62/4180 1416/61/4180 -f 1122/2343/4181 1178/1662/4181 1179/82/4181 -f 1215/421/4182 1995/2188/4182 1762/407/4182 -f 1319/200/4183 1995/2188/4183 1215/421/4183 -f 561/2361/4184 158/80/4184 1806/79/4184 -f 1575/3181/4185 1843/2469/4185 1816/2471/4185 -f 2381/3265/4186 2172/3552/4186 2401/3266/4186 -f 2167/3477/4187 2244/3623/4187 2309/1132/4187 -f 2003/2490/4188 2190/2489/4188 2247/3583/4188 -f 2037/3622/4189 2113/3624/4189 2078/3598/4189 -f 2078/3598/4190 2113/3624/4190 4/3608/4190 -f 1052/3625/4191 130/3626/4191 1190/3609/4191 -f 2575/3627/4192 130/2032/4192 1430/3628/4192 -f 2061/2696/4193 1713/2980/4193 290/496/4193 -f 1719/284/4194 1711/2216/4194 1568/2215/4194 -f 2768/3629/4195 1980/3289/4195 2062/2136/4195 -f 1927/2870/4196 1569/3174/4196 2069/321/4196 -f 1003/3322/4197 1188/1575/4197 2018/2631/4197 -f 2066/2523/4198 2083/820/4198 2057/219/4198 -f 2117/306/4199 1349/3417/4199 1204/163/4199 -f 2204/3630/4200 2147/3263/4200 2322/2003/4200 -f 3173/310/4201 3212/2167/4201 3189/1637/4201 -f 2390/2830/4202 1970/3631/4202 1362/1261/4202 -f 2370/2558/4203 2342/3212/4203 2246/2036/4203 -f 2304/3632/4204 2281/3633/4204 2076/3634/4204 -f 2168/695/4205 2169/3635/4205 2340/3636/4205 -f 2204/3630/4206 2322/2003/4206 2254/3621/4206 -f 2167/3477/4207 2610/3637/4207 2244/3623/4207 -f 2179/3638/4208 2132/3383/4208 2245/3639/4208 -f 2610/3637/4209 1954/3640/4209 2244/3623/4209 -f 2055/3641/4210 2854/3077/4210 2037/3642/4210 -f 2037/3622/4211 2038/3643/4211 2113/3624/4211 -f 2113/3644/4212 2114/3645/4212 4/3601/4212 -f 4/3608/4213 2114/3646/4213 1190/3609/4213 -f 1052/3625/4214 1430/3647/4214 130/3626/4214 -f 2389/3473/4215 2235/3475/4215 1823/3648/4215 -f 973/3418/4216 2172/3552/4216 2222/3649/4216 -f 2041/1016/4217 2065/821/4217 2082/307/4217 -f 1215/421/4218 1088/111/4218 1041/420/4218 -f 1579/2522/4219 1707/3105/4219 1349/3417/4219 -f 2502/3650/4220 2522/3651/4220 1792/3652/4220 -f 1830/3653/4221 2123/3603/4221 1174/3616/4221 -f 1135/3654/4222 1763/3655/4222 1051/3604/4222 -f 2123/3603/4223 1135/3654/4223 1051/3604/4223 -f 1763/3655/4224 2098/3589/4224 1051/3604/4224 -f 1763/3655/4225 1994/3304/4225 2034/241/4225 -f 2098/3589/4226 1763/3655/4226 2034/241/4226 -f 931/285/4227 1568/2215/4227 1159/2291/4227 -f 1122/2343/4228 1415/1660/4228 1178/1662/4228 -f 1324/2034/4229 1707/3105/4229 1459/40/4229 -f 232/2161/4230 1459/40/4230 1138/42/4230 -f 2166/3656/4231 1880/3657/4231 2232/3429/4231 -f 2872/843/4232 2315/3658/4232 2158/1442/4232 -f 2252/2505/4233 1833/3258/4233 2165/3613/4233 -f 2502/3659/4234 1792/3578/4234 1780/3563/4234 -f 2111/3204/4235 2099/3421/4235 2896/3205/4235 -f 3402/3139/4236 3401/3140/4236 3370/685/4236 -f 2854/3660/4237 2038/3643/4237 2037/3622/4237 -f 2113/3644/4238 2091/3661/4238 2114/3645/4238 -f 2114/3646/4239 2130/3662/4239 1190/3609/4239 -f 1359/2166/4240 1444/1844/4240 823/142/4240 -f 1395/2644/4241 1040/2153/4241 1112/2152/4241 -f 2309/1132/4242 2244/3623/4242 2297/1133/4242 -f 2348/3663/4243 2224/3392/4243 2222/3255/4243 -f 1830/3653/4244 2070/3664/4244 2123/3603/4244 -f 2070/3664/4245 1135/3654/4245 2123/3603/4245 -f 1759/3665/4246 1604/2931/4246 1896/2159/4246 -f 1707/3105/4247 1324/2034/4247 1204/163/4247 -f 1874/2713/4248 1903/2919/4248 1598/2991/4248 -f 1727/3666/4249 515/3667/4249 1903/3668/4249 -f 1871/2583/4250 1003/3322/4250 2018/2631/4250 -f 1158/201/4251 1747/81/4251 1286/2340/4251 -f 33/446/4252 3350/3669/4252 3332/1653/4252 -f 2595/3670/4253 1851/3671/4253 2655/3672/4253 -f 1851/3671/4254 1867/3673/4254 2638/3674/4254 -f 2655/3672/4255 1851/3671/4255 2638/3674/4255 -f 1577/1955/4256 1811/1362/4256 1653/776/4256 -f 2003/2490/4257 2247/3583/4257 2274/3295/4257 -f 2763/3675/4258 2814/3076/4258 2796/3078/4258 -f 1052/3625/4259 1190/3609/4259 2130/3662/4259 -f 2998/2474/4260 3032/3388/4260 3033/67/4260 -f 3057/1411/4261 3080/3676/4261 3032/3388/4261 -f 2340/3677/4262 2169/3678/4262 2386/3369/4262 -f 2266/3679/4263 2285/2534/4263 2254/2536/4263 -f 2165/3613/4264 1833/3258/4264 2535/2/4264 -f 2711/1634/4265 2019/1636/4265 1830/1936/4265 -f 2019/3680/4266 2070/3664/4266 1830/3653/4266 -f 1773/2169/4267 1787/1229/4267 1765/2630/4267 -f 515/2174/4268 1727/3343/4268 1461/46/4268 -f 1905/2500/4269 1003/3322/4269 1925/2214/4269 -f 1904/3681/4270 1903/3668/4270 1874/3682/4270 -f 1904/3681/4271 1727/3666/4271 1903/3668/4271 -f 2288/3683/4272 2243/3684/4272 2312/3385/4272 -f 2321/3685/4273 1833/3686/4273 2252/3687/4273 -f 1955/3491/4274 1956/3493/4274 2763/3688/4274 -f 2814/3689/4275 2013/3690/4275 2854/3660/4275 -f 2013/3690/4276 2039/3691/4276 2038/3643/4276 -f 2854/3660/4277 2013/3690/4277 2038/3643/4277 -f 2039/3692/4278 2091/3661/4278 2113/3644/4278 -f 2038/3643/4279 2039/3691/4279 2113/3624/4279 -f 2114/3646/4280 1306/3693/4280 2130/3662/4280 -f 1333/3517/4281 1136/3516/4281 2109/3694/4281 -f 2347/1956/4282 2183/1718/4282 2268/2504/4282 -f 2366/3695/4283 2308/3458/4283 2213/3696/4283 -f 2225/2418/4284 2360/2417/4284 2357/3328/4284 -f 1130/2675/4285 2375/3697/4285 2217/3698/4285 -f 2070/3664/4286 2020/3699/4286 1135/3654/4286 -f 1945/3700/4287 1763/3655/4287 1135/3654/4287 -f 1945/3700/4288 1797/2986/4288 1994/3304/4288 -f 1763/3655/4289 1945/3700/4289 1994/3304/4289 -f 1159/2291/4290 1871/2583/4290 1309/2582/4290 -f 1965/3701/4291 1904/3681/4291 1874/3682/4291 -f 1906/47/4292 1727/3343/4292 1904/3138/4292 -f 1781/3702/4293 1829/3703/4293 2503/3704/4293 -f 2595/3705/4294 1829/3706/4294 1851/3707/4294 -f 1956/3493/4295 1971/3708/4295 2763/3688/4295 -f 2763/3709/4296 1971/3710/4296 2814/3689/4296 -f 2013/3690/4297 2028/3711/4297 2039/3691/4297 -f 1306/3693/4298 1177/3712/4298 2130/3662/4298 -f 1177/3712/4299 1052/3625/4299 2130/3662/4299 -f 1177/3712/4300 1186/3713/4300 1052/3625/4300 -f 1186/3713/4301 1430/3647/4301 1052/3625/4301 -f 984/3714/4302 1333/3517/4302 2109/3694/4302 -f 2415/3148/4303 2175/3193/4303 2370/2558/4303 -f 2331/10/4304 2362/3485/4304 2399/3474/4304 -f 2020/3699/4305 2070/3664/4305 2019/3680/4305 -f 2020/3699/4306 2032/3715/4306 1135/3654/4306 -f 2124/3716/4307 1797/2986/4307 1945/3700/4307 -f 2051/3717/4308 1874/3682/4308 2173/3718/4308 -f 2051/3717/4309 1965/3701/4309 1874/3682/4309 -f 1896/2159/4310 1904/3138/4310 1965/3719/4310 -f 1024/3720/4311 2320/3384/4311 2377/3721/4311 -f 1760/3722/4312 1781/3723/4312 2256/3724/4312 -f 1782/3725/4313 1781/3726/4313 1760/3727/4313 -f 2228/3728/4314 2232/3429/4314 2330/3729/4314 -f 2722/3730/4315 1942/3731/4315 1941/3492/4315 -f 1942/3731/4316 1962/3732/4316 1956/3493/4316 -f 1941/3492/4317 1942/3731/4317 1956/3493/4317 -f 1956/3493/4318 1962/3732/4318 1971/3708/4318 -f 1971/3710/4319 1972/3733/4319 2814/3689/4319 -f 2814/3689/4320 1972/3733/4320 2013/3690/4320 -f 2028/3711/4321 2079/3734/4321 2039/3691/4321 -f 2079/3734/4322 2092/3735/4322 2091/3736/4322 -f 2039/3691/4323 2079/3734/4323 2091/3736/4323 -f 2092/3735/4324 1306/3693/4324 2114/3646/4324 -f 2091/3736/4325 2092/3735/4325 2114/3646/4325 -f 1907/3737/4326 2389/3473/4326 1823/3648/4326 -f 2398/2756/4327 2389/3473/4327 1907/3737/4327 -f 3307/3738/4328 3215/3739/4328 3281/3740/4328 -f 2204/3741/4329 1024/2330/4329 2151/3742/4329 -f 2387/3431/4330 2204/3741/4330 2151/3742/4330 -f 2960/3049/4331 2952/69/4331 2944/3743/4331 -f 2019/1636/4332 1819/3744/4332 2020/3745/4332 -f 2032/3746/4333 2020/3745/4333 1819/3744/4333 -f 2032/3715/4334 1944/3747/4334 1135/3654/4334 -f 1944/3747/4335 2124/3716/4335 1945/3700/4335 -f 1135/3654/4336 1944/3747/4336 1945/3700/4336 -f 1797/2986/4337 2124/3716/4337 1606/2985/4337 -f 2868/2529/4338 2867/2213/4338 2841/1416/4338 -f 2330/3729/4339 2198/844/4339 2228/3728/4339 -f 2228/3267/4340 2198/160/4340 2200/3264/4340 -f 1752/3748/4341 1760/3727/4341 2255/3749/4341 -f 2041/1016/4342 2042/89/4342 2065/821/4342 -f 1795/3750/4343 1781/3726/4343 1782/3725/4343 -f 1795/3751/4344 1829/3703/4344 1781/3702/4344 -f 1829/3703/4345 1852/3752/4345 1851/3671/4345 -f 2695/3046/4346 1910/2447/4346 2722/3730/4346 -f 2722/3753/4347 1910/3754/4347 1942/3755/4347 -f 1962/3756/4348 1972/3733/4348 1971/3710/4348 -f 1972/3733/4349 2014/3757/4349 2013/3690/4349 -f 2013/3690/4350 2014/3757/4350 2028/3711/4350 -f 2014/3757/4351 2079/3734/4351 2028/3711/4351 -f 1186/3713/4352 984/3714/4352 1430/3647/4352 -f 1350/3097/4353 1333/3517/4353 984/3714/4353 -f 2781/288/4354 1598/2991/4354 1903/2919/4354 -f 2275/2190/4355 2537/3107/4355 2536/2901/4355 -f 2237/3758/4356 2318/3759/4356 2176/3760/4356 -f 2283/3571/4357 2368/3555/4357 2212/3580/4357 -f 2215/2294/4358 2339/2433/4358 2138/2460/4358 -f 2132/2438/4359 2179/3513/4359 2339/2433/4359 -f 1620/286/4360 931/285/4360 1364/3219/4360 -f 2289/3761/4361 2267/3762/4361 2219/3763/4361 -f 1832/3764/4362 1819/3765/4362 2838/3766/4362 -f 1278/3767/4363 2032/3715/4363 1819/3765/4363 -f 3446/22/4364 3508/21/4364 3489/423/4364 -f 2689/1201/4365 2687/1417/4365 2652/724/4365 -f 2173/3718/4366 1924/3768/4366 2051/3717/4366 -f 1759/3769/4367 1965/3701/4367 2051/3717/4367 -f 1303/2037/4368 2136/1679/4368 1367/3770/4368 -f 1752/3771/4369 2255/3207/4369 2466/3206/4369 -f 3185/3772/4370 3224/3773/4370 3196/3774/4370 -f 1815/3775/4371 1829/3703/4371 1795/3751/4371 -f 1851/3671/4372 1868/3776/4372 1867/3673/4372 -f 1889/2448/4373 1910/2447/4373 2695/3046/4373 -f 2980/2936/4374 2998/2474/4374 3033/67/4374 -f 1942/3731/4375 1943/3777/4375 1962/3732/4375 -f 2092/3735/4376 2101/3778/4376 1306/3693/4376 -f 2101/3778/4377 1347/3779/4377 1306/3693/4377 -f 1347/3779/4378 1177/3712/4378 1306/3693/4378 -f 1187/3780/4379 1186/3713/4379 1177/3712/4379 -f 1347/3779/4380 1187/3780/4380 1177/3712/4380 -f 1822/3781/4381 984/3714/4381 1186/3713/4381 -f 1205/3782/4382 1732/3783/4382 2765/3784/4382 -f 2318/3759/4383 2245/3639/4383 2176/3760/4383 -f 1278/3785/4384 1944/3786/4384 2032/3746/4384 -f 1944/3747/4385 2033/3787/4385 2124/3716/4385 -f 2033/3787/4386 1606/2985/4386 2124/3716/4386 -f 2980/2936/4387 3033/67/4387 2960/3049/4387 -f 1790/3788/4388 2051/3717/4388 1924/3768/4388 -f 1790/3789/4389 1820/2250/4389 2051/3790/4389 -f 1820/3791/4390 1759/3769/4390 2051/3717/4390 -f 1965/3719/4391 1759/3665/4391 1896/2159/4391 -f 1743/3792/4392 1752/3748/4392 2466/3793/4392 -f 1612/2366/4393 1619/2365/4393 1618/2440/4393 -f 1815/3775/4394 1852/3752/4394 1829/3703/4394 -f 1852/3752/4395 1859/3794/4395 1851/3671/4395 -f 1851/3671/4396 1859/3794/4396 1868/3776/4396 -f 1921/3795/4397 1943/3777/4397 1942/3731/4397 -f 1910/3754/4398 1921/3796/4398 1942/3755/4398 -f 1943/3777/4399 1963/3797/4399 1962/3732/4399 -f 1963/3798/4400 1972/3733/4400 1962/3756/4400 -f 1972/3733/4401 1973/3799/4401 2014/3757/4401 -f 2079/3734/4402 2101/3778/4402 2092/3735/4402 -f 1822/3781/4403 1350/3097/4403 984/3714/4403 -f 551/3800/4404 1144/3801/4404 169/3802/4404 -f 1144/3801/4405 1205/3782/4405 169/3802/4405 -f 1928/678/4406 2723/653/4406 1732/3803/4406 -f 1278/3767/4407 1819/3765/4407 1832/3764/4407 -f 1089/3804/4408 1944/3786/4408 1278/3785/4408 -f 2021/3805/4409 2033/3787/4409 1944/3747/4409 -f 1442/3806/4410 1606/2985/4410 2033/3787/4410 -f 1905/2500/4411 1927/2870/4411 2069/321/4411 -f 1647/2659/4412 1295/3807/4412 1740/3285/4412 -f 1783/3808/4413 1795/3750/4413 1782/3725/4413 -f 1921/3795/4414 1922/1940/4414 1943/3777/4414 -f 1943/3033/4415 1957/2290/4415 1963/3798/4415 -f 1963/3798/4416 1973/3799/4416 1972/3733/4416 -f 1973/3799/4417 2004/1177/4417 2014/3757/4417 -f 2004/1177/4418 2029/2803/4418 2014/3757/4418 -f 2079/3734/4419 2080/3809/4419 2101/3778/4419 -f 1347/3779/4420 618/3810/4420 1187/3780/4420 -f 1388/3811/4421 1186/3713/4421 1187/3780/4421 -f 618/3810/4422 1388/3811/4422 1187/3780/4422 -f 1388/3811/4423 1822/3781/4423 1186/3713/4423 -f 1822/3812/4424 1405/3813/4424 1350/737/4424 -f 1746/3814/4425 1928/3815/4425 1732/3783/4425 -f 2386/3369/4426 2169/3678/4426 2323/3816/4426 -f 1206/944/4427 1278/3767/4427 1832/3764/4427 -f 2856/3817/4428 2059/3818/4428 1924/3768/4428 -f 2059/3818/4429 1790/3788/4429 1924/3768/4429 -f 1820/2250/4430 1604/2931/4430 1759/3665/4430 -f 1774/3189/4431 1789/2707/4431 1773/2169/4431 -f 1798/912/4432 1844/2371/4432 1605/540/4432 -f 1753/3819/4433 1752/3748/4433 1743/3792/4433 -f 1753/3819/4434 1761/3820/4434 1752/3748/4434 -f 1796/591/4435 1795/3750/4435 1783/3808/4435 -f 1796/3821/4436 1815/3775/4436 1795/3751/4436 -f 1796/3821/4437 1816/2471/4437 1815/3775/4437 -f 1816/2471/4438 1852/3752/4438 1815/3775/4438 -f 2430/3822/4439 2419/2430/4439 2372/3823/4439 -f 2926/2970/4440 2925/3824/4440 2915/3582/4440 -f 2029/2803/4441 2056/2318/4441 2079/3734/4441 -f 2014/3757/4442 2029/2803/4442 2079/3734/4442 -f 2079/3734/4443 2056/2318/4443 2080/3809/4443 -f 2080/3809/4444 2102/2268/4444 2101/3778/4444 -f 2101/3778/4445 2115/3825/4445 1347/3779/4445 -f 2107/3096/4446 364/2308/4446 2128/3826/4446 -f 2128/3826/4447 364/2308/4447 551/3800/4447 -f 364/2308/4448 1144/3801/4448 551/3800/4448 -f 1746/3814/4449 1732/3783/4449 1205/3782/4449 -f 1935/886/4450 1928/3815/4450 1746/3814/4450 -f 2088/3827/4451 2129/3828/4451 1928/678/4451 -f 3500/325/4452 1029/2275/4452 3489/753/4452 -f 2129/3828/4453 1206/3829/4453 1832/3073/4453 -f 1206/944/4454 2122/943/4454 1278/3767/4454 -f 1278/3767/4455 2122/943/4455 1089/3830/4455 -f 2118/2829/4456 1944/3747/4456 1089/3830/4456 -f 2118/2829/4457 2021/3805/4457 1944/3747/4457 -f 1439/3831/4458 2033/3787/4458 2021/3805/4458 -f 1683/2658/4459 1728/2660/4459 204/3292/4459 -f 1816/2471/4460 1853/2470/4460 1852/3752/4460 -f 1943/3033/4461 3355/2288/4461 1957/2290/4461 -f 1957/3832/4462 3390/3833/4462 1963/3797/4462 -f 1963/3798/4463 3390/1375/4463 1973/3799/4463 -f 1973/3799/4464 3390/1375/4464 2004/1177/4464 -f 2056/2318/4465 2081/2317/4465 2080/3809/4465 -f 2102/2268/4466 2115/3825/4466 2101/3778/4466 -f 1281/3834/4467 618/3810/4467 1347/3779/4467 -f 821/2395/4468 1822/3781/4468 1388/3811/4468 -f 821/2395/4469 1151/2306/4469 1405/3095/4469 -f 1822/3781/4470 821/2395/4470 1405/3095/4470 -f 1151/2306/4471 364/2308/4471 2107/3096/4471 -f 1405/3095/4472 1151/2306/4472 2107/3096/4472 -f 467/2231/4473 1131/2232/4473 1144/3801/4473 -f 364/2308/4474 467/2231/4474 1144/3801/4474 -f 1131/2232/4475 1205/3782/4475 1144/3801/4475 -f 1327/2832/4476 1746/3814/4476 1205/3782/4476 -f 2088/3827/4477 1206/3829/4477 2129/3828/4477 -f 2122/943/4478 2118/2829/4478 1089/3830/4478 -f 2688/1203/4479 1969/1202/4479 2703/3540/4479 -f 1990/3329/4480 2891/3835/4480 2241/3836/4480 -f 2059/3818/4481 2856/3817/4481 2159/3837/4481 -f 1992/2251/4482 1790/3789/4482 2059/3838/4482 -f 1790/3789/4483 1992/2251/4483 1820/2250/4483 -f 1537/3114/4484 1555/2316/4484 1536/2813/4484 -f 1784/2315/4485 1783/3808/4485 1761/3820/4485 -f 1784/2315/4486 1796/591/4486 1783/3808/4486 -f 3265/3839/4487 1859/3794/4487 1860/3840/4487 -f 2466/3841/4488 2447/3842/4488 1743/3843/4488 -f 2593/2977/4489 2607/363/4489 2617/3143/4489 -f 2116/2267/4490 2115/3825/4490 2102/2268/4490 -f 2115/3825/4491 2116/2267/4491 1347/3779/4491 -f 1347/3779/4492 2116/2267/4492 1281/3834/4492 -f 1289/2320/4493 618/3810/4493 1281/3834/4493 -f 1289/2320/4494 1152/2501/4494 618/3810/4494 -f 1152/2501/4495 1414/2336/4495 618/3810/4495 -f 1414/2336/4496 1388/3811/4496 618/3810/4496 -f 1414/2336/4497 228/5/4497 1388/3811/4497 -f 228/5/4498 821/2395/4498 1388/3811/4498 -f 1327/2832/4499 1205/3782/4499 1131/2232/4499 -f 1327/2832/4500 1935/886/4500 1746/3814/4500 -f 833/885/4501 1928/3815/4501 1935/886/4501 -f 833/885/4502 2088/187/4502 1928/3815/4502 -f 1988/3844/4503 2021/3845/4503 2118/3846/4503 -f 1461/46/4504 1463/637/4504 2090/2173/4504 -f 1724/408/4505 1871/2583/4505 2018/2631/4505 -f 1916/3190/4506 1992/2251/4506 2059/3838/4506 -f 1758/2827/4507 1774/3183/4507 1773/2635/4507 -f 1535/3093/4508 1761/3820/4508 1753/3819/4508 -f 3497/656/4509 3463/300/4509 3490/1009/4509 -f 1535/3093/4510 1784/2315/4510 1761/3820/4510 -f 1796/3821/4511 1575/3181/4511 1816/2471/4511 -f 1852/3752/4512 1853/2470/4512 1859/3794/4512 -f 2607/363/4513 2621/1608/4513 2617/3143/4513 -f 2029/2803/4514 2040/1017/4514 2056/2318/4514 -f 2081/2317/4515 2103/116/4515 2102/2268/4515 -f 2080/3809/4516 2081/2317/4516 2102/2268/4516 -f 2116/2267/4517 1270/2727/4517 1281/3834/4517 -f 1270/2727/4518 1289/2320/4518 1281/3834/4518 -f 3361/3847/4519 3422/3848/4519 3383/3849/4519 -f 1828/2352/4520 427/696/4520 2168/695/4520 -f 2076/2808/4521 2281/3850/4521 2390/2830/4521 -f 2304/3632/4522 2214/3851/4522 2281/3633/4522 -f 2201/3852/4523 2302/1188/4523 2157/1187/4523 -f 2413/3511/4524 2907/2457/4524 2407/3566/4524 -f 2384/3853/4525 1221/3854/4525 1219/45/4525 -f 2335/1890/4526 1019/3215/4526 1887/1891/4526 -f 1835/3855/4527 2515/3856/4527 1813/3857/4527 -f 1222/1084/4528 2027/1903/4528 2384/2656/4528 -f 216/3858/4529 2283/3571/4529 2243/3859/4529 -f 2699/264/4530 2296/3860/4530 2674/265/4530 -f 3011/3595/4531 3072/3861/4531 3049/3596/4531 -f 2223/1186/4532 2302/1188/4532 2311/3862/4532 -f 3146/3863/4533 3132/3864/4533 3119/3865/4533 -f 2373/2192/4534 2152/3866/4534 2135/2193/4534 -f 2358/1111/4535 2392/3419/4535 2134/1112/4535 -f 2153/3413/4536 2237/3758/4536 2176/3760/4536 -f 2351/3526/4537 2481/2144/4537 2205/3867/4537 -f 2399/3474/4538 2362/3485/4538 2199/3486/4538 -f 2257/1927/4539 1932/1334/4539 1166/602/4539 -f 985/3868/4540 2161/1082/4540 2027/3249/4540 -f 1823/3648/4541 1110/3869/4541 2194/3870/4541 -f 2140/3256/4542 2035/3391/4542 2260/3871/4542 -f 2295/3872/4543 2599/3873/4543 2329/3874/4543 -f 2310/3341/4544 2297/3875/4544 2263/3876/4544 -f 2917/849/4545 2916/851/4545 2908/3510/4545 -f 3174/2989/4546 3173/310/4546 3141/2833/4546 -f 2423/2030/4547 2584/3877/4547 1307/2031/4547 -f 3493/399/4548 3440/2538/4548 3475/664/4548 -f 2217/3698/4549 2375/3697/4549 2226/3591/4549 -f 2301/3878/4550 2179/3638/4550 2318/3759/4550 -f 188/3494/4551 2139/3879/4551 2145/3495/4551 -f 2342/3212/4552 2903/2557/4552 2900/3211/4552 -f 345/94/4553 2400/3880/4553 2362/3485/4553 -f 2362/3485/4554 2400/3880/4554 2284/3339/4554 -f 1932/1334/4555 1146/425/4555 1166/602/4555 -f 2267/3881/4556 2289/1443/4556 2876/2839/4556 -f 2338/3882/4557 2131/3614/4557 2165/3613/4557 -f 233/3883/4558 2242/2406/4558 2282/2408/4558 -f 2392/3419/4559 2260/3884/4559 2134/1112/4559 -f 1932/1334/4560 2333/3885/4560 1115/426/4560 -f 2333/3886/4561 2385/3887/4561 1079/3888/4561 -f 1115/426/4562 2333/3885/4562 1079/2453/4562 -f 1079/2453/4563 2385/3889/4563 2329/2540/4563 -f 1107/2359/4564 1106/2491/4564 1082/3890/4564 -f 1130/2675/4565 2217/3698/4565 2396/2661/4565 -f 233/3883/4566 2282/2408/4566 2877/3891/4566 -f 2365/3368/4567 2383/3350/4567 2304/3892/4567 -f 2365/3893/4568 2304/3894/4568 2076/2808/4568 -f 2391/3575/4569 2271/3574/4569 2596/3895/4569 -f 2830/2498/4570 2859/2208/4570 1185/2499/4570 -f 652/1140/4571 2286/3896/4571 1920/1141/4571 -f 2386/3369/4572 2323/3816/4572 2336/2488/4572 -f 362/357/4573 2393/636/4573 201/694/4573 -f 2246/2036/4574 2342/3212/4574 2335/1890/4574 -f 2336/2488/4575 2201/3852/4575 2208/3897/4575 -f 2281/3850/4576 2334/2194/4576 2390/2830/4576 -f 2178/2552/4577 2184/2880/4577 2164/2553/4577 -f 2218/2210/4578 2137/3898/4578 2859/2208/4578 -f 2329/2540/4579 1068/2390/4579 1079/2453/4579 -f 2190/2489/4580 1920/2416/4580 2225/2418/4580 -f 2583/3218/4581 2523/3217/4581 2595/3705/4581 -f 2287/2314/4582 2310/3899/4582 2211/3900/4582 -f 2247/3583/4583 2190/2489/4583 2225/2418/4583 -f 2035/3391/4584 2299/3901/4584 2260/3871/4584 -f 2286/3902/4585 2218/2210/4585 2360/2417/4585 -f 3227/2262/4586 3305/167/4586 3240/3903/4586 -f 2238/3904/4587 1828/2352/4587 2340/3636/4587 -f 1828/2352/4588 2168/695/4588 2340/3636/4588 -f 2049/3905/4589 2238/3906/4589 2365/3893/4589 -f 1060/3907/4590 2469/3908/4590 3422/3848/4590 -f 2214/3851/4591 2304/3632/4591 2383/3909/4591 -f 2359/3910/4592 2208/3897/4592 2201/3852/4592 -f 2360/2417/4593 2218/2210/4593 2064/2209/4593 -f 2134/3911/4594 2251/3912/4594 2221/2313/4594 -f 2265/3913/4595 2133/3914/4595 2155/3915/4595 -f 2815/3250/4596 1221/3916/4596 2384/3248/4596 -f 2385/3887/4597 2295/3872/4597 2329/3874/4597 -f 2349/3917/4598 2214/3349/4598 1794/3918/4598 -f 1653/776/4599 1578/3919/4599 1577/1955/4599 -f 2598/3920/4600 2295/3872/4600 2278/3921/4600 -f 2373/3922/4601 2214/3349/4601 2349/3917/4601 -f 1343/2611/4602 2265/3913/4602 1509/3923/4602 -f 1970/3631/4603 2334/2194/4603 2381/3265/4603 -f 2049/3905/4604 2365/3893/4604 2076/2808/4604 -f 2225/2418/4605 2357/3328/4605 1990/3329/4605 -f 2374/3370/4606 2386/3369/4606 2336/2488/4606 -f 2353/3924/4607 2245/3639/4607 1048/3925/4607 -f 2862/2392/4608 2158/1442/4608 2861/3926/4608 -f 3381/684/4609 3402/3139/4609 3370/685/4609 -f 201/694/4610 2393/636/4610 2168/695/4610 -f 2183/1718/4611 1028/3037/4611 1833/3258/4611 -f 1783/3808/4612 1782/3725/4612 1752/3748/4612 -f 2323/3816/4613 2190/2489/4613 2336/2488/4613 -f 3470/281/4614 3490/1009/4614 870/2400/4614 -f 2169/3635/4615 2168/695/4615 837/2427/4615 -f 2443/848/4616 2415/3148/4616 2290/846/4616 -f 2227/1441/4617 2289/1443/4617 2219/3927/4617 -f 2257/1927/4618 2327/3928/4618 1932/1334/4618 -f 1932/1334/4619 2327/3928/4619 2333/3885/4619 -f 2327/3929/4620 2270/3930/4620 2333/3886/4620 -f 1261/29/4621 2180/2641/4621 2206/1128/4621 -f 2334/2194/4622 2281/3850/4622 2373/2192/4622 -f 2324/3931/4623 1120/126/4623 2277/881/4623 -f 2374/3370/4624 2336/2488/4624 2208/3897/4624 -f 2270/3930/4625 2385/3887/4625 2333/3886/4625 -f 78/811/4626 3218/548/4626 93/804/4626 -f 1794/3918/4627 2214/3349/4627 2188/3351/4627 -f 1814/2201/4628 1813/2561/4628 2305/3932/4628 -f 2921/3933/4629 2936/3934/4629 2929/2508/4629 -f 2278/3921/4630 2295/3872/4630 2385/3887/4630 -f 2271/3935/4631 1061/517/4631 1055/926/4631 -f 2262/3936/4632 2358/3937/4632 2272/3938/4632 -f 1102/1171/4633 2133/1684/4633 1114/1172/4633 -f 2390/2830/4634 2334/2194/4634 1970/3631/4634 -f 2064/2209/4635 2891/3835/4635 1990/3329/4635 -f 837/2427/4636 657/2396/4636 2229/1142/4636 -f 2398/2756/4637 2361/608/4637 2389/3473/4637 -f 2144/1366/4638 1875/2973/4638 2467/289/4638 -f 2872/843/4639 2350/3584/4639 2315/3658/4639 -f 2399/3474/4640 2199/3486/4640 2235/3475/4640 -f 2155/3573/4641 2149/3939/4641 2271/3574/4641 -f 456/8/4642 2331/10/4642 2361/608/4642 -f 2334/2194/4643 2135/2193/4643 2381/3265/4643 -f 2325/3940/4644 2269/3941/4644 2326/3942/4644 -f 3279/106/4645 3342/165/4645 3305/167/4645 -f 3279/106/4646 3305/167/4646 3227/2262/4646 -f 2149/3939/4647 1061/3943/4647 2271/3574/4647 -f 2380/3260/4648 2346/1274/4648 2381/3265/4648 -f 2331/10/4649 2399/3474/4649 2361/608/4649 -f 1114/2605/4650 2133/3914/4650 2265/3913/4650 -f 2214/3349/4651 2373/3922/4651 2281/3944/4651 -f 2178/2552/4652 977/2543/4652 2697/2542/4652 -f 2138/2460/4653 2328/2459/4653 813/1957/4653 -f 2257/1927/4654 2192/1926/4654 2327/3928/4654 -f 3243/2445/4655 3242/3945/4655 3228/2446/4655 -f 2290/846/4656 2415/3148/4656 2370/2558/4656 -f 2180/2641/4657 2195/3946/4657 2206/1128/4657 -f 3466/1713/4658 2253/3947/4658 3479/1714/4658 -f 2201/2331/4659 2003/3948/4659 2191/2332/4659 -f 2363/3330/4660 2332/990/4660 2379/3356/4660 -f 2132/3383/4661 2312/3385/4661 2245/3639/4661 -f 2807/3949/4662 2138/2460/4662 813/1957/4662 -f 1907/3737/4663 1823/3648/4663 2375/3697/4663 -f 2359/3910/4664 2201/3852/4664 2157/1187/4664 -f 2270/3930/4665 2278/3921/4665 2385/3887/4665 -f 1916/2410/4666 2159/3837/4666 2171/2411/4666 -f 1920/2416/4667 2286/3902/4667 2360/2417/4667 -f 1227/28/4668 2170/2723/4668 2180/2641/4668 -f 2170/2723/4669 2189/3950/4669 2180/2641/4669 -f 2180/2641/4670 2189/3950/4670 2195/3946/4670 -f 2195/3951/4671 163/2652/4671 2206/2633/4671 -f 1760/3727/4672 1752/3748/4672 1782/3725/4672 -f 2228/3728/4673 2147/3430/4673 2232/3429/4673 -f 2320/3384/4674 2288/3683/4674 2312/3385/4674 -f 2375/3697/4675 1823/3648/4675 2194/3870/4675 -f 2171/3952/4676 2170/2723/4676 1449/2725/4676 -f 3485/326/4677 3436/1372/4677 1101/2196/4677 -f 1048/3581/4678 2317/3953/4678 2300/3954/4678 -f 1110/3955/4679 2213/2506/4679 2194/3956/4679 -f 2219/3957/4680 2267/3958/4680 2203/162/4680 -f 2152/3959/4681 2222/3255/4681 2172/3960/4681 -f 2173/3718/4682 2856/3817/4682 1924/3768/4682 -f 2076/2808/4683 2390/2830/4683 1361/2816/4683 -f 3141/2833/4684 3140/1218/4684 3113/1220/4684 -f 3506/1947/4685 1980/3289/4685 2768/3629/4685 -f 2171/3961/4686 2181/3962/4686 2170/3963/4686 -f 2170/2723/4687 2181/3964/4687 2189/3950/4687 -f 2207/3965/4688 2195/3966/4688 2189/3967/4688 -f 2207/3965/4689 163/3968/4689 2195/3966/4689 -f 2286/3896/4690 1050/2287/4690 2137/2279/4690 -f 2188/3351/4691 2208/3897/4691 2359/3910/4691 -f 2227/1441/4692 2219/3927/4692 2203/3445/4692 -f 2154/3969/4693 1283/2377/4693 1266/2733/4693 -f 2135/2193/4694 2152/3866/4694 2172/3552/4694 -f 1509/3923/4695 2265/3913/4695 2155/3915/4695 -f 1794/3918/4696 2188/3351/4696 2359/3910/4696 -f 2300/3954/4697 2317/3953/4697 1145/3970/4697 -f 2186/3971/4698 2189/3967/4698 2181/3962/4698 -f 2186/3971/4699 2207/3965/4699 2189/3967/4699 -f 163/3968/4700 2207/3965/4700 3466/3972/4700 -f 2272/3938/4701 2221/2313/4701 2287/2314/4701 -f 2272/3938/4702 2287/2314/4702 2211/3900/4702 -f 216/3858/4703 2337/3572/4703 2283/3571/4703 -f 2236/3973/4704 2310/3341/4704 2263/3876/4704 -f 2316/2535/4705 2243/3859/4705 2254/2536/4705 -f 2153/3413/4706 2176/3760/4706 231/3414/4706 -f 1205/3782/4707 2765/3784/4707 169/3802/4707 -f 2498/2525/4708 2193/847/4708 2230/3974/4708 -f 2498/2525/4709 2230/3974/4709 2231/3975/4709 -f 2856/3817/4710 2181/3976/4710 2171/2411/4710 -f 2159/3837/4711 2856/3817/4711 2171/2411/4711 -f 2856/3977/4712 2871/3978/4712 2181/3962/4712 -f 2871/3978/4713 2186/3971/4713 2181/3962/4713 -f 999/3979/4714 2505/3980/4714 2541/3981/4714 -f 2226/3591/4715 2375/3697/4715 2194/3870/4715 -f 1172/1690/4716 365/145/4716 616/1784/4716 -f 2300/3507/4717 231/3414/4717 2176/3760/4717 -f 2368/3555/4718 2895/3554/4718 2317/3953/4718 -f 3505/353/4719 3476/355/4719 1015/751/4719 -f 2859/3982/4720 2137/2279/4720 1203/2278/4720 -f 2233/3983/4721 2276/3984/4721 2230/3974/4721 -f 2305/3932/4722 2231/2299/4722 2276/2298/4722 -f 2379/3356/4723 2401/3266/4723 2148/3407/4723 -f 2152/3959/4724 2349/3917/4724 2348/3663/4724 -f 2196/3985/4725 2307/2426/4725 2364/2425/4725 -f 2807/3949/4726 2209/2292/4726 2215/2294/4726 -f 2310/3341/4727 2248/3345/4727 2297/3875/4727 -f 2244/3623/4728 2308/3986/4728 2297/1133/4728 -f 2221/2313/4729 2251/3912/4729 2142/3247/4729 -f 2291/3987/4730 2131/3614/4730 2194/3956/4730 -f 3428/759/4731 3504/246/4731 2424/245/4731 -f 2318/3988/4732 2237/3989/4732 2301/3990/4732 -f 2440/1881/4733 2429/1886/4733 957/2509/4733 -f 2179/3513/4734 2301/3990/4734 2328/2459/4734 -f 2239/3991/4735 2253/699/4735 2207/3965/4735 -f 2199/3992/4736 2284/3993/4736 2236/3994/4736 -f 2993/2176/4737 2439/2906/4737 2457/3995/4737 -f 2305/3932/4738 1813/2561/4738 2231/2299/4738 -f 1110/3955/4739 2366/3996/4739 2213/2506/4739 -f 2744/2119/4740 3435/3053/4740 3450/3997/4740 -f 2536/2901/4741 2294/2202/4741 2275/2190/4741 -f 2152/3959/4742 2373/3922/4742 2349/3917/4742 -f 4/3608/4743 1307/3610/4743 2112/3998/4743 -f 2961/2937/4744 2980/2936/4744 2960/3049/4744 -f 2264/698/4745 2313/3999/4745 3425/313/4745 -f 2926/2229/4746 2945/3165/4746 2944/2230/4746 -f 1954/3640/4747 2807/3949/4747 813/1957/4747 -f 813/1957/4748 2347/1956/4748 1954/3640/4748 -f 2244/3623/4749 1954/3640/4749 2185/4000/4749 -f 2133/4001/4750 2149/3939/4750 2155/3573/4750 -f 1888/3476/4751 1996/2424/4751 2307/2426/4751 -f 2252/3687/4752 2268/4002/4752 2321/3685/4752 -f 2260/3871/4753 2707/4003/4753 2134/3911/4753 -f 30/2724/4754 1227/28/4754 1256/236/4754 -f 2268/2504/4755 2183/1718/4755 2321/4004/4755 -f 1132/301/4756 870/2400/4756 3451/1929/4756 -f 2207/4005/4757 2253/3947/4757 3466/1713/4757 -f 2945/4006/4758 2960/3049/4758 2944/3743/4758 -f 2642/4007/4759 2314/4008/4759 2376/4009/4759 -f 2353/3924/4760 1048/3925/4760 2300/3507/4760 -f 2225/2418/4761 1990/3329/4761 2350/3584/4761 -f 2498/2525/4762 2477/2524/4762 2443/848/4762 -f 2881/4010/4763 2273/4011/4763 1934/4012/4763 -f 2273/4011/4764 2367/4013/4764 2296/3860/4764 -f 2241/3836/4765 2891/3835/4765 2861/3926/4765 -f 2370/2558/4766 2246/2036/4766 2290/846/4766 -f 2360/2417/4767 2064/2209/4767 2357/3328/4767 -f 2224/3392/4768 2182/768/4768 2141/770/4768 -f 2873/4014/4769 2239/3991/4769 2207/3965/4769 -f 1082/3890/4770 1106/2491/4770 1087/2516/4770 -f 2313/4015/4771 2292/125/4771 2314/4016/4771 -f 2367/4013/4772 2273/4011/4772 2881/4010/4772 -f 2891/3835/4773 2326/3942/4773 2861/3926/4773 -f 2284/3339/4774 2400/3880/4774 2211/3340/4774 -f 2361/608/4775 2399/3474/4775 2389/3473/4775 -f 763/1493/4776 750/1491/4776 437/2619/4776 -f 2151/3742/4777 1024/2330/4777 2209/2292/4777 -f 2331/10/4778 345/94/4778 2362/3485/4778 -f 2223/1186/4779 2311/3862/4779 2330/3729/4779 -f 2314/4008/4780 2343/4017/4780 2376/4009/4780 -f 2234/4018/4781 2296/3860/4781 2367/4013/4781 -f 1578/3919/4782 1653/776/4782 80/209/4782 -f 2866/4019/4783 2317/3953/4783 2895/3554/4783 -f 1087/2516/4784 1106/2491/4784 1097/2492/4784 -f 2365/4020/4785 2238/3904/4785 2340/3636/4785 -f 2213/2506/4786 2252/2505/4786 2291/3987/4786 -f 2147/3430/4787 2204/3741/4787 2387/3431/4787 -f 2401/3266/4788 973/3418/4788 2148/3407/4788 -f 2292/133/4789 2343/4017/4789 2314/4008/4789 -f 3223/4021/4790 1498/4022/4790 3224/3773/4790 -f 2336/2488/4791 2003/2490/4791 2201/3852/4791 -f 2177/4023/4792 2187/4024/4792 2881/4010/4792 -f 2881/4010/4793 2187/4024/4793 2367/4013/4793 -f 2187/4025/4794 2369/4026/4794 2367/4027/4794 -f 1913/4028/4795 2718/4029/4795 2234/4018/4795 -f 652/1140/4796 1050/2287/4796 2286/3896/4796 -f 233/3883/4797 2285/2534/4797 2266/3679/4797 -f 2188/3351/4798 2383/3350/4798 2208/3897/4798 -f 2147/3263/4799 2220/2004/4799 2322/2003/4799 -f 2200/3264/4800 2198/160/4800 2203/162/4800 -f 2143/2636/4801 2192/4030/4801 2197/2637/4801 -f 2365/3368/4802 2374/3370/4802 2383/3350/4802 -f 558/635/4803 1050/2287/4803 652/1140/4803 -f 2376/4009/4804 2388/4031/4804 2177/4023/4804 -f 2369/4032/4805 2234/4018/4805 2367/4013/4805 -f 2246/2036/4806 2261/1889/4806 2193/847/4806 -f 2380/3260/4807 2401/3266/4807 2379/3356/4807 -f 2143/2636/4808 1509/3923/4808 2192/4030/4808 -f 2288/3683/4809 2254/3621/4809 2243/3684/4809 -f 2343/4017/4810 2388/4031/4810 2376/4009/4810 -f 2187/4024/4811 2177/4023/4811 2388/4031/4811 -f 2258/4033/4812 2234/4018/4812 2369/4032/4812 -f 2258/4033/4813 1913/4028/4813 2234/4018/4813 -f 2549/1515/4814 1842/3568/4814 1827/1513/4814 -f 2176/3760/4815 2353/3924/4815 2300/3507/4815 -f 2397/2642/4816 1907/3737/4816 1130/2675/4816 -f 633/2052/4817 965/1978/4817 1250/2752/4817 -f 2192/4034/4818 1509/4035/4818 2327/3929/4818 -f 2250/2407/4819 2203/3445/4819 2267/3881/4819 -f 1120/126/4820 2324/3931/4820 2343/127/4820 -f 2355/4036/4821 2187/4024/4821 2388/4031/4821 -f 2162/4037/4822 2718/4029/4822 1913/4028/4822 -f 1833/3258/4823 2321/4004/4823 2183/1718/4823 -f 1804/725/4824 2305/3932/4824 1778/726/4824 -f 2267/3881/4825 1959/4038/4825 2250/2407/4825 -f 2324/3931/4826 2355/4039/4826 2343/127/4826 -f 2343/4017/4827 2355/4036/4827 2388/4031/4827 -f 1804/725/4828 1791/2191/4828 2294/2202/4828 -f 1954/3640/4829 2347/1956/4829 2268/2504/4829 -f 2185/4000/4830 1954/3640/4830 2268/2504/4830 -f 2288/3683/4831 2204/3630/4831 2254/3621/4831 -f 1362/1261/4832 1970/3631/4832 2346/1274/4832 -f 2316/2535/4833 216/3858/4833 2243/3859/4833 -f 2345/347/4834 2380/3260/4834 2379/3356/4834 -f 1075/2550/4835 1263/154/4835 1172/1690/4835 -f 2355/4040/4836 1290/4041/4836 2187/4025/4836 -f 2187/4025/4837 1290/4041/4837 2369/4026/4837 -f 2160/4042/4838 1913/4028/4838 2258/4033/4838 -f 427/696/4839 120/494/4839 201/694/4839 -f 2225/2418/4840 2350/3584/4840 2247/3583/4840 -f 1823/3648/4841 2235/3475/4841 1110/3869/4841 -f 2312/3385/4842 2283/4043/4842 2212/4044/4842 -f 2263/3876/4843 2297/3875/4843 2308/3458/4843 -f 2217/3698/4844 2226/3591/4844 2352/4045/4844 -f 2199/3486/4845 2236/3973/4845 1110/3869/4845 -f 2324/4046/4846 2356/4047/4846 2355/4036/4846 -f 2355/4040/4847 2356/4048/4847 1290/4041/4847 -f 1290/4041/4848 1953/4049/4848 2369/4026/4848 -f 2369/4032/4849 1949/4050/4849 2258/4033/4849 -f 2160/4042/4850 2162/4037/4850 1913/4028/4850 -f 2365/3368/4851 2340/3677/4851 2386/3369/4851 -f 2236/3973/4852 2263/3876/4852 2366/3695/4852 -f 2245/3639/4853 2212/4044/4853 1048/3925/4853 -f 1063/4051/4854 1068/4052/4854 2599/3873/4854 -f 2781/288/4855 515/2920/4855 2090/4053/4855 -f 195/1336/4856 199/1319/4856 178/1320/4856 -f 2320/3384/4857 2204/3630/4857 2288/3683/4857 -f 1794/3918/4858 2359/3910/4858 2182/768/4858 -f 2293/2790/4859 2324/3931/4859 2277/881/4859 -f 2293/2790/4860 2356/4054/4860 2324/3931/4860 -f 1949/4050/4861 2160/4042/4861 2258/4033/4861 -f 2237/3989/4862 2153/1194/4862 2482/2327/4862 -f 2271/3574/4863 1055/4055/4863 2596/3895/4863 -f 2301/3990/4864 2237/3989/4864 2482/2327/4864 -f 2322/2003/4865 2382/2005/4865 2266/3620/4865 -f 2272/3938/4866 2358/3937/4866 2221/2313/4866 -f 1996/2424/4867 1888/3476/4867 2251/3912/4867 -f 2707/4003/4868 2251/3912/4868 2134/3911/4868 -f 2860/4056/4869 2770/2225/4869 2269/3941/4869 -f 2356/4048/4870 2394/4057/4870 1290/4041/4870 -f 2394/4057/4871 1953/4049/4871 1290/4041/4871 -f 2280/4058/4872 2369/4032/4872 1953/4059/4872 -f 2280/4058/4873 1949/4050/4873 2369/4032/4873 -f 2320/4060/4874 2132/2438/4874 2377/2293/4874 -f 1130/2675/4875 1907/3737/4875 2375/3697/4875 -f 2891/3835/4876 2325/3940/4876 2326/3942/4876 -f 2176/3760/4877 2245/3639/4877 2353/3924/4877 -f 2400/3880/4878 2378/3332/4878 2211/3340/4878 -f 2263/3876/4879 2308/3458/4879 2366/3695/4879 -f 2711/1634/4880 1830/1936/4880 2543/1935/4880 -f 2293/2745/4881 1223/2741/4881 2356/4048/4881 -f 2356/4048/4882 1223/2741/4882 2394/4057/4882 -f 2394/4057/4883 2395/4061/4883 1953/4049/4883 -f 2146/4062/4884 2160/4042/4884 1949/4050/4884 -f 2245/3639/4885 2312/3385/4885 2212/4044/4885 -f 2236/3973/4886 2284/3339/4886 2310/3341/4886 -f 1833/3258/4887 2060/3/4887 2535/2/4887 -f 1509/3923/4888 2155/3915/4888 2327/4063/4888 -f 1804/725/4889 1814/2201/4889 2305/3932/4889 -f 34/2672/4890 2397/2642/4890 1130/2675/4890 -f 2190/2489/4891 2229/4064/4891 1920/2416/4891 -f 1223/2741/4892 2395/4061/4892 2394/4057/4892 -f 2146/4062/4893 2303/1847/4893 2160/4042/4893 -f 1110/3869/4894 2236/3973/4894 2366/3695/4894 -f 2332/990/4895 2345/347/4895 2379/3356/4895 -f 2155/3573/4896 2270/3930/4896 2327/3929/4896 -f 1752/3748/4897 1761/3820/4897 1783/3808/4897 -f 2150/4065/4898 2407/3566/4898 2906/2458/4898 -f 1318/2599/4899 2265/3913/4899 1343/2611/4899 -f 2213/2506/4900 2291/3987/4900 2194/3956/4900 -f 1970/3631/4901 2381/3265/4901 2346/1274/4901 -f 2391/3575/4902 2278/3921/4902 2270/3930/4902 -f 7/1704/4903 3451/1929/4903 3480/1300/4903 -f 2707/4003/4904 2364/2425/4904 1996/2424/4904 -f 2344/2732/4905 2395/4061/4905 1223/2741/4905 -f 1953/4059/4906 1914/4066/4906 2280/4058/4906 -f 2156/4067/4907 1949/4050/4907 2280/4058/4907 -f 2156/4067/4908 2146/4062/4908 1949/4050/4908 -f 2235/3475/4909 2199/3486/4909 1110/3869/4909 -f 2378/3332/4910 2272/4068/4910 2211/3340/4910 -f 576/1654/4911 3315/4069/4911 3301/4070/4911 -f 345/94/4912 2332/990/4912 2363/3330/4912 -f 1760/3727/4913 2163/4071/4913 2255/3749/4913 -f 2381/3265/4914 2135/2193/4914 2172/3552/4914 -f 2872/843/4915 2158/1442/4915 2227/1441/4915 -f 2395/4061/4916 1273/4072/4916 1953/4049/4916 -f 1273/4072/4917 1914/4073/4917 1953/4049/4917 -f 3128/1219/4918 3140/1218/4918 3152/1638/4918 -f 2391/3575/4919 2596/3895/4919 2278/3921/4919 -f 2397/2642/4920 2398/2756/4920 1907/3737/4920 -f 3315/4069/4921 576/1654/4921 3332/1653/4921 -f 1249/2614/4922 1454/2132/4922 1436/4074/4922 -f 2302/1188/4923 2191/3296/4923 2311/3862/4923 -f 2323/3816/4924 2229/4064/4924 2190/2489/4924 -f 2152/3959/4925 2348/3663/4925 2222/3255/4925 -f 2169/3678/4926 2229/4064/4926 2323/3816/4926 -f 2368/3555/4927 2317/3953/4927 1048/3581/4927 -f 2202/4075/4928 2146/4062/4928 2156/4067/4928 -f 2202/4075/4929 2303/1847/4929 2146/4062/4929 -f 2379/3356/4930 2148/3407/4930 2262/3331/4930 -f 1794/3918/4931 2224/3392/4931 2348/3663/4931 -f 1024/3720/4932 2204/3630/4932 2320/3384/4932 -f 2151/3742/4933 2209/2292/4933 2764/4076/4933 -f 2003/2490/4934 2274/3295/4934 2191/3296/4934 -f 2216/4077/4935 3019/2296/4935 2436/2295/4935 -f 2076/2808/4936 1322/2793/4936 2049/3905/4936 -f 2224/3392/4937 1794/3918/4937 2182/768/4937 -f 2286/3902/4938 2137/3898/4938 2218/2210/4938 -f 1318/2599/4939 1114/2605/4939 2265/3913/4939 -f 2308/3986/4940 2268/2504/4940 2213/2506/4940 -f 1741/4078/4941 2233/3983/4941 2261/1889/4941 -f 1760/3727/4942 2256/4079/4942 2163/4071/4942 -f 2395/4061/4943 2396/2661/4943 1273/4072/4943 -f 1914/4066/4944 2156/4067/4944 2280/4058/4944 -f 2240/4080/4945 2202/4075/4945 2156/4067/4945 -f 2202/4075/4946 1710/1633/4946 2303/1847/4946 -f 2291/3987/4947 2252/2505/4947 2131/3614/4947 -f 2503/2146/4948 2256/3724/4948 1781/3723/4948 -f 2465/2145/4949 2163/4081/4949 2256/3724/4949 -f 2780/2714/4950 1874/2713/4950 1598/2991/4950 -f 3002/4082/4951 2216/4077/4951 2436/2295/4951 -f 2351/3526/4952 3002/4082/4952 2436/2295/4952 -f 2378/3332/4953 2262/3331/4953 2272/4068/4953 -f 2344/2732/4954 2396/2661/4954 2395/4061/4954 -f 2338/3882/4955 2156/4067/4955 1914/4066/4955 -f 2338/3593/4956 2240/4083/4956 2156/4084/4956 -f 345/94/4957 2363/3330/4957 2400/3880/4957 -f 2169/3635/4958 837/2427/4958 2229/1142/4958 -f 2391/3575/4959 2270/3930/4959 2155/3573/4959 -f 1959/4038/4960 2267/3881/4960 2876/2839/4960 -f 2383/3350/4961 2374/3370/4961 2208/3897/4961 -f 1828/2352/4962 2238/3904/4962 2049/2353/4962 -f 2242/2406/4963 2266/3679/4963 2382/3444/4963 -f 2352/4045/4964 1914/4073/4964 1273/4072/4964 -f 2185/4000/4965 2268/2504/4965 2308/3986/4965 -f 2864/4085/4966 2259/3553/4966 2354/4086/4966 -f 973/3257/4967 2140/3256/4967 2392/4087/4967 -f 2226/3591/4968 2194/3870/4968 2131/3592/4968 -f 2503/2146/4969 2465/2145/4969 2256/3724/4969 -f 7/1704/4970 3480/1300/4970 3509/1702/4970 -f 2143/2636/4971 1343/2611/4971 1509/3923/4971 -f 2139/1678/4972 1291/1680/4972 2145/2376/4972 -f 1336/2888/4973 1368/2889/4973 2139/1678/4973 -f 2349/3917/4974 1794/3918/4974 2348/3663/4974 -f 2315/3658/4975 1990/3329/4975 2241/3836/4975 -f 3211/2168/4976 3212/2167/4976 3226/4088/4976 -f 2217/3698/4977 1273/4072/4977 2396/2661/4977 -f 1273/4089/4978 2217/4090/4978 2352/4091/4978 -f 1914/4066/4979 2352/4091/4979 2338/3882/4979 -f 2165/3613/4980 2202/4075/4980 2240/4080/4980 -f 2165/3613/4981 2535/2/4981 2202/4075/4981 -f 2392/3419/4982 2140/4092/4982 2260/3884/4982 -f 2350/3584/4983 1990/3329/4983 2315/3658/4983 -f 2312/3385/4984 2243/3684/4984 2283/4043/4984 -f 2337/3572/4985 2354/4086/4985 2259/3553/4985 -f 3288/2449/4986 3337/4093/4986 1921/3795/4986 -f 2205/3867/4987 2994/4094/4987 2351/3526/4987 -f 2145/2376/4988 1283/2377/4988 2154/3969/4988 -f 2318/3759/4989 2179/3638/4989 2245/3639/4989 -f 2315/3658/4990 2241/3836/4990 2158/1442/4990 -f 2352/4091/4991 2226/4095/4991 2338/3882/4991 -f 2338/3593/4992 2165/4096/4992 2240/4083/4992 -f 2363/3330/4993 2378/3332/4993 2400/3880/4993 -f 3473/1107/4994 3458/1446/4994 3481/1108/4994 -f 2575/3627/4995 1430/3628/4995 2109/4097/4995 -f 2445/4098/4996 2177/4023/4996 2881/4010/4996 -f 1793/1518/4997 2408/4099/4997 2829/3163/4997 -f 2436/2295/4998 2425/3192/4998 2163/4081/4998 -f 1657/649/4999 1662/651/4999 1136/4100/4999 -f 1473/2666/5000 2109/4097/5000 2799/4101/5000 -f 2422/2070/5001 2479/4102/5001 1675/2665/5001 -f 956/4103/5002 957/2509/5002 2429/1886/5002 -f 2792/1399/5003 2845/4104/5003 2812/371/5003 -f 2870/3091/5004 1700/4105/5004 2886/4106/5004 -f 2479/4102/5005 2855/4107/5005 1473/2666/5005 -f 2799/4101/5006 1702/4108/5006 2435/3335/5006 -f 1473/2666/5007 2799/4101/5007 2699/264/5007 -f 58/211/5008 23/783/5008 59/755/5008 -f 2886/4106/5009 1700/4105/5009 2885/4109/5009 -f 2427/4110/5010 2425/3192/5010 2426/4111/5010 -f 2699/264/5011 2799/4101/5011 2210/4112/5011 -f 2625/650/5012 2421/4113/5012 2752/4114/5012 -f 2210/4112/5013 2799/4101/5013 2435/3335/5013 -f 1038/4115/5014 2596/3895/5014 1055/4055/5014 -f 2506/1595/5015 1020/2394/5015 1009/1596/5015 -f 2874/4116/5016 2871/3978/5016 2818/3019/5016 -f 2818/3019/5017 2871/3978/5017 2856/3977/5017 -f 2409/3185/5018 2905/4117/5018 2904/3186/5018 -f 1038/4115/5019 2576/4118/5019 2596/3895/5019 -f 3288/2449/5020 1921/3795/5020 1910/2447/5020 -f 2077/4119/5021 2078/3600/5021 2112/3602/5021 -f 2584/3877/5022 2423/2030/5022 2479/4102/5022 -f 3212/2167/5023 3227/2262/5023 3226/4088/5023 -f 2576/4118/5024 2597/4120/5024 2596/3895/5024 -f 2275/2190/5025 2522/4121/5025 2537/3107/5025 -f 2710/4122/5026 2779/3187/5026 2820/3333/5026 -f 2676/4123/5027 2718/4029/5027 2162/4037/5027 -f 1902/4124/5028 2112/3602/5028 2584/3877/5028 -f 2609/266/5029 2879/679/5029 2434/267/5029 -f 3195/1932/5030 3218/1934/5030 3194/4125/5030 -f 2541/3981/5031 2576/4118/5031 1038/4115/5031 -f 2434/267/5032 2879/679/5032 2838/1635/5032 -f 3469/782/5033 1830/781/5033 1174/3527/5033 -f 2541/3981/5034 2550/4126/5034 2576/4118/5034 -f 2550/4126/5035 2597/4120/5035 2576/4118/5035 -f 3498/1197/5036 2783/3021/5036 1674/1198/5036 -f 3057/1411/5037 3100/4127/5037 3080/3676/5037 -f 3236/1114/5038 1448/3488/5038 1631/4128/5038 -f 2706/3201/5039 2705/4129/5039 2636/4130/5039 -f 1496/4131/5040 2489/2898/5040 2644/4132/5040 -f 2033/4133/5041 1439/273/5041 1442/2571/5041 -f 959/576/5042 2483/2073/5042 978/450/5042 -f 2796/4134/5043 2012/2349/5043 2795/2348/5043 -f 1072/4135/5044 2602/4136/5044 1082/3890/5044 -f 2698/4137/5045 2674/265/5045 2676/4123/5045 -f 1697/311/5046 3425/313/5046 2642/4007/5046 -f 2505/3980/5047 2525/4138/5047 2541/3981/5047 -f 2541/3981/5048 2525/4138/5048 2550/4126/5048 -f 2598/3920/5049 2597/4120/5049 2550/4126/5049 -f 2565/4139/5050 2598/3920/5050 2550/4126/5050 -f 2983/528/5051 3025/2485/5051 3048/4140/5051 -f 966/3334/5052 1934/4012/5052 2888/4141/5052 -f 2722/3730/5053 2721/732/5053 2695/3046/5053 -f 959/576/5054 960/2177/5054 2483/2073/5054 -f 2564/3188/5055 2600/268/5055 1987/4142/5055 -f 2763/3675/5056 2796/3078/5056 2751/4143/5056 -f 1842/220/5057 2581/2423/5057 1866/2422/5057 -f 1231/183/5058 1232/182/5058 1099/2781/5058 -f 2763/3675/5059 2751/4143/5059 1955/4144/5059 -f 2751/4145/5060 2795/4146/5060 2778/4147/5060 -f 2483/2073/5061 2484/4148/5061 2505/1990/5061 -f 2505/3980/5062 2484/4149/5062 2525/4138/5062 -f 2525/4138/5063 2565/4139/5063 2550/4126/5063 -f 1700/4105/5064 1911/3090/5064 1892/4150/5064 -f 2748/4151/5065 2761/238/5065 2790/240/5065 -f 2792/1399/5066 2812/371/5066 2791/239/5066 -f 2672/4152/5067 2592/648/5067 2670/1761/5067 -f 1173/2270/5068 1050/2287/5068 558/635/5068 -f 2658/2884/5069 2693/2670/5069 2692/2671/5069 -f 2525/4138/5070 2542/4153/5070 2565/4139/5070 -f 2565/4139/5071 2577/4154/5071 2598/3920/5071 -f 2577/4154/5072 2599/3873/5072 2598/3920/5072 -f 2598/3920/5073 2599/3873/5073 2295/3872/5073 -f 2901/4155/5074 2175/3184/5074 2904/3186/5074 -f 2417/4156/5075 592/3226/5075 1676/3225/5075 -f 2905/4117/5076 1909/4157/5076 2906/2458/5076 -f 2498/2039/5077 2231/2299/5077 2515/2040/5077 -f 1909/4157/5078 2905/4117/5078 2409/3185/5078 -f 3030/4158/5079 3019/4159/5079 3020/4160/5079 -f 1887/1891/5080 1019/3215/5080 2902/2487/5080 -f 2154/4161/5081 1939/3496/5081 2145/3495/5081 -f 2036/3454/5082 2841/3159/5082 2867/3464/5082 -f 2484/4149/5083 2542/4153/5083 2525/4138/5083 -f 2542/4153/5084 2566/4162/5084 2565/4139/5084 -f 2566/4162/5085 2577/4154/5085 2565/4139/5085 -f 2752/4114/5086 2710/4122/5086 2820/3333/5086 -f 2827/4163/5087 2828/373/5087 2843/4164/5087 -f 2676/4123/5088 2674/265/5088 2718/4029/5088 -f 2428/97/5089 2437/4165/5089 2427/4166/5089 -f 1350/737/5090 1657/649/5090 1136/4100/5090 -f 2601/2264/5091 2421/4113/5091 2625/650/5091 -f 2601/2264/5092 2753/652/5092 2421/4113/5092 -f 2752/4114/5093 2820/3333/5093 2435/3335/5093 -f 2778/4147/5094 2750/733/5094 2733/4167/5094 -f 2734/4168/5095 2778/4147/5095 2733/4167/5095 -f 1891/4169/5096 1769/252/5096 2489/2898/5096 -f 2811/4170/5097 2828/373/5097 2827/4163/5097 -f 966/3334/5098 2820/3333/5098 2779/3187/5098 -f 3034/4171/5099 3058/4172/5099 3024/292/5099 -f 2437/4165/5100 2447/4173/5100 2455/3208/5100 -f 2427/4166/5101 2437/4165/5101 2455/3208/5101 -f 2752/4114/5102 2435/3335/5102 1702/4108/5102 -f 960/4174/5103 2486/4175/5103 2484/4149/5103 -f 2486/4175/5104 2485/4176/5104 2484/4149/5104 -f 2484/4149/5105 2485/4176/5105 2542/4153/5105 -f 2566/4162/5106 1063/4051/5106 2577/4154/5106 -f 1063/4051/5107 2599/3873/5107 2577/4154/5107 -f 2415/3148/5108 2443/848/5108 2452/4177/5108 -f 2753/652/5109 2645/4178/5109 2421/4113/5109 -f 2753/652/5110 2640/654/5110 2645/4178/5110 -f 2778/4179/5111 2794/4180/5111 2750/206/5111 -f 1769/252/5112 1891/4169/5112 1911/3090/5112 -f 169/4181/5113 2765/4182/5113 2601/2264/5113 -f 2644/4132/5114 2848/4183/5114 2641/4184/5114 -f 2641/4184/5115 2848/4183/5115 2453/4185/5115 -f 2453/4185/5116 2698/4137/5116 2676/4123/5116 -f 2699/264/5117 2210/4112/5117 2296/3860/5117 -f 2848/4183/5118 2459/2071/5118 2698/4137/5118 -f 2517/2072/5119 2459/2071/5119 2848/4183/5119 -f 1934/4012/5120 2445/4098/5120 2881/4010/5120 -f 2645/4178/5121 2640/654/5121 2609/266/5121 -f 2853/4186/5122 602/3241/5122 2846/3243/5122 -f 2887/250/5123 1769/252/5123 1911/3090/5123 -f 2706/3201/5124 2636/4130/5124 2668/807/5124 -f 2884/4187/5125 1686/3227/5125 1991/4188/5125 -f 2883/4189/5126 2884/4187/5126 1991/4188/5126 -f 2640/654/5127 2879/679/5127 2609/266/5127 -f 2485/4176/5128 2566/4162/5128 2542/4153/5128 -f 1964/2128/5129 3439/2130/5129 3471/3576/5129 -f 2566/4162/5130 1057/4190/5130 1063/4051/5130 -f 967/1517/5131 1611/4191/5131 1890/4192/5131 -f 1892/4150/5132 1496/4131/5132 2417/4156/5132 -f 1496/4131/5133 2641/4184/5133 2417/4156/5133 -f 2777/4193/5134 2813/3242/5134 2776/1398/5134 -f 2584/3877/5135 2567/3106/5135 1703/251/5135 -f 1902/4124/5136 2584/3877/5136 1703/251/5136 -f 2993/2176/5137 2457/3995/5137 2486/4194/5137 -f 2485/4176/5138 2551/4195/5138 2566/4162/5138 -f 2551/4195/5139 1057/4190/5139 2566/4162/5139 -f 602/3241/5140 1902/4124/5140 1703/251/5140 -f 1700/4105/5141 1892/4150/5141 1676/3225/5141 -f 2299/3901/5142 2707/4003/5142 2260/3871/5142 -f 2645/4178/5143 2609/266/5143 2600/268/5143 -f 2788/4196/5144 2842/4197/5144 2810/253/5144 -f 3371/683/5145 3370/685/5145 3359/4198/5145 -f 2675/4199/5146 2160/4042/5146 2303/1847/5146 -f 2425/3192/5147 2455/4200/5147 2163/4081/5147 -f 2595/3670/5148 2523/4201/5148 1829/3703/5148 -f 2780/2714/5149 2798/3235/5149 2173/2712/5149 -f 2638/3674/5150 2657/4202/5150 2655/3672/5150 -f 2657/4202/5151 2656/4203/5151 2655/3672/5151 -f 2457/3000/5152 2485/4176/5152 2486/4175/5152 -f 1393/2244/5153 1407/2700/5153 243/2245/5153 -f 1700/4105/5154 1676/3225/5154 2885/4109/5154 -f 1221/3916/5155 2815/3250/5155 2249/4204/5155 -f 2457/3000/5156 2487/4205/5156 2485/4176/5156 -f 2487/4205/5157 2526/4206/5157 2485/4176/5157 -f 2526/4206/5158 2551/4195/5158 2485/4176/5158 -f 1675/2665/5159 2479/4102/5159 1473/2666/5159 -f 1911/3090/5160 1891/4169/5160 1892/4150/5160 -f 2844/372/5161 2886/4106/5161 2843/4164/5161 -f 2842/4197/5162 2883/4189/5162 2869/1415/5162 -f 2791/239/5163 2828/373/5163 2811/4170/5163 -f 2790/240/5164 2791/239/5164 2811/4170/5164 -f 1407/2743/5165 620/1234/5165 243/1236/5165 -f 999/3979/5166 2541/3981/5166 1038/4115/5166 -f 2439/2906/5167 2993/2176/5167 955/2175/5167 -f 2749/3057/5168 2761/238/5168 2748/4151/5168 -f 1849/3270/5169 2499/1081/5169 2651/4207/5169 -f 2567/3106/5170 2584/3877/5170 2422/2070/5170 -f 2526/4206/5171 2527/4208/5171 2551/4195/5171 -f 2582/3079/5172 2561/2976/5172 2538/3058/5172 -f 2253/699/5173 2696/953/5173 2264/698/5173 -f 3214/4209/5174 3228/813/5174 3197/4210/5174 -f 3362/4211/5175 3348/2147/5175 3377/2567/5175 -f 3383/3849/5176 3422/3848/5176 3421/4212/5176 -f 984/4213/5177 2109/4097/5177 1430/3628/5177 -f 2626/4214/5178 2623/4215/5178 1933/4216/5178 -f 1849/3270/5179 2815/3250/5179 2499/1081/5179 -f 2439/2906/5180 2992/1879/5180 2457/3995/5180 -f 2457/3000/5181 2468/3002/5181 2487/4205/5181 -f 2025/3357/5182 2743/2866/5182 1997/4217/5182 -f 2873/4014/5183 2186/3971/5183 2782/4218/5183 -f 2860/4056/5184 2859/2208/5184 2830/2498/5184 -f 2859/2208/5185 2860/4056/5185 2064/2209/5185 -f 2313/3999/5186 2264/698/5186 2696/953/5186 -f 2730/1267/5187 2745/4219/5187 2810/253/5187 -f 2112/3602/5188 1902/4124/5188 602/3241/5188 -f 2527/4208/5189 2526/4206/5189 1007/4220/5189 -f 2112/3602/5190 602/3241/5190 2853/4186/5190 -f 2726/4221/5191 2670/1761/5191 1674/1198/5191 -f 2692/4222/5192 2691/806/5192 2656/805/5192 -f 2799/4101/5193 1136/4100/5193 1702/4108/5193 -f 3227/2262/5194 3240/3903/5194 3226/4088/5194 -f 2747/4223/5195 2811/4170/5195 2789/4224/5195 -f 2811/4170/5196 2827/4163/5196 2789/4224/5196 -f 2659/2882/5197 2639/4225/5197 2660/3047/5197 -f 3435/3053/5198 1894/383/5198 3442/1953/5198 -f 2796/4134/5199 2854/3660/5199 2012/2349/5199 -f 2129/3828/5200 1832/3073/5200 1928/678/5200 -f 2660/3047/5201 2694/2883/5201 2659/2882/5201 -f 3511/1762/5202 1674/1198/5202 2670/1761/5202 -f 2454/845/5203 2198/844/5203 2330/3729/5203 -f 2690/4226/5204 2747/4223/5204 2746/4227/5204 -f 2860/4056/5205 2325/3940/5205 2064/2209/5205 -f 2548/271/5206 3461/270/5206 2808/4228/5206 -f 2608/4229/5207 2562/4230/5207 2563/4231/5207 -f 2636/4130/5208 2654/4232/5208 2635/4233/5208 -f 2658/4234/5209 2692/4222/5209 2657/4235/5209 -f 3188/3457/5210 3189/1637/5210 3211/2168/5210 -f 2847/4236/5211 2853/4186/5211 2846/3243/5211 -f 1905/2500/5212 1711/2216/5212 1927/2870/5212 -f 2488/532/5213 2487/4205/5213 2468/3002/5213 -f 1329/2726/5214 1713/2980/5214 1649/3214/5214 -f 2795/4237/5215 2847/4236/5215 2794/4180/5215 -f 2845/4104/5216 2886/4106/5216 2844/372/5216 -f 551/4238/5217 2601/2264/5217 1666/736/5217 -f 2636/4130/5218 2690/4226/5218 2654/4232/5218 -f 2292/125/5219 2313/4015/5219 2696/580/5219 -f 2859/2208/5220 1203/4239/5220 1185/2499/5220 -f 2325/3940/5221 2891/3835/5221 2064/2209/5221 -f 2883/4189/5222 1991/4188/5222 2899/4240/5222 -f 2502/3650/5223 2539/4241/5223 2522/3651/5223 -f 1751/4242/5224 2464/1921/5224 2502/3650/5224 -f 2732/4243/5225 2731/1400/5225 2719/3202/5225 -f 2459/2071/5226 2735/263/5226 2698/4137/5226 -f 1867/3673/5227 2658/4244/5227 2638/3674/5227 -f 2351/3526/5228 2436/2295/5228 2465/2145/5228 -f 2659/2882/5229 2658/2884/5229 1867/4245/5229 -f 2992/3001/5230 2440/4246/5230 2468/3002/5230 -f 2468/3002/5231 2458/530/5231 2488/532/5231 -f 2585/4247/5232 1060/3907/5232 3422/3848/5232 -f 2249/4248/5233 1849/3272/5233 2341/4249/5233 -f 1082/3890/5234 2602/4136/5234 2662/2367/5234 -f 2505/1990/5235 988/448/5235 2483/2073/5235 -f 2636/4130/5236 2635/4233/5236 2618/4250/5236 -f 2595/3705/5237 2655/3557/5237 2608/4229/5237 -f 2658/4234/5238 2657/4235/5238 2638/4251/5238 -f 1082/3890/5239 2662/2367/5239 1107/2359/5239 -f 603/4252/5240 592/3226/5240 1508/4253/5240 -f 2734/4168/5241 2721/732/5241 2722/3730/5241 -f 1125/2226/5242 2713/2358/5242 2784/2224/5242 -f 2326/3942/5243 2269/3941/5243 2784/2224/5243 -f 37/959/5244 1490/1412/5244 1532/3450/5244 -f 3499/1910/5245 3424/1002/5245 3426/1004/5245 -f 2827/4163/5246 2842/4197/5246 2788/4196/5246 -f 2789/4224/5247 2827/4163/5247 2788/4196/5247 -f 2608/4229/5248 2637/4254/5248 2618/4250/5248 -f 2827/4163/5249 2843/4164/5249 2883/4189/5249 -f 2595/3705/5250 2608/4229/5250 2583/3218/5250 -f 2501/2757/5251 3434/869/5251 2839/1640/5251 -f 2624/3013/5252 566/3014/5252 2445/4098/5252 -f 2440/4246/5253 2458/530/5253 2468/3002/5253 -f 1715/3017/5254 210/1284/5254 1539/70/5254 -f 2912/4255/5255 2319/4256/5255 2371/2486/5255 -f 1650/1311/5256 512/1353/5256 511/1302/5256 -f 2713/2358/5257 2700/4257/5257 2784/2224/5257 -f 2755/4258/5258 2326/3942/5258 2784/2224/5258 -f 2621/4259/5259 1908/2236/5259 1901/3579/5259 -f 1116/2276/5260 3466/1713/5260 3488/1712/5260 -f 2562/4230/5261 2618/4250/5261 2582/3079/5261 -f 1933/4216/5262 2408/4099/5262 603/4252/5262 -f 1955/4144/5263 2751/4143/5263 1941/4260/5263 -f 3360/4261/5264 3383/3849/5264 3421/4212/5264 -f 2506/4262/5265 2528/4263/5265 1023/1856/5265 -f 1023/1856/5266 2528/4263/5266 2544/3606/5266 -f 1072/2261/5267 2552/701/5267 2544/4264/5267 -f 2432/4265/5268 2412/4266/5268 2406/3468/5268 -f 1686/3227/5269 592/3226/5269 603/4252/5269 -f 2662/2367/5270 2700/4257/5270 2713/2358/5270 -f 2700/4257/5271 2755/4258/5271 2784/2224/5271 -f 2831/4267/5272 2326/3942/5272 2755/4258/5272 -f 1890/4192/5273 603/4252/5273 2408/4099/5273 -f 2890/1848/5274 1933/4216/5274 2675/4199/5274 -f 2591/3020/5275 2672/4152/5275 2726/4221/5275 -f 2779/3187/5276 2624/3013/5276 2445/4098/5276 -f 2990/2560/5277 2429/1886/5277 2440/1881/5277 -f 1598/2991/5278 2781/288/5278 215/2844/5278 -f 2445/4098/5279 566/3014/5279 2177/4023/5279 -f 1145/3380/5280 2880/3363/5280 2110/3362/5280 -f 2027/3249/5281 2161/1082/5281 2499/1081/5281 -f 2988/4268/5282 2987/4269/5282 2966/4270/5282 -f 2326/3942/5283 2831/4267/5283 2861/3926/5283 -f 2828/373/5284 2844/372/5284 2843/4164/5284 -f 2873/4014/5285 2207/3965/5285 2186/3971/5285 -f 1880/3657/5286 2223/1186/5286 2232/3429/5286 -f 3221/4271/5287 47/99/5287 3136/3530/5287 -f 1898/2134/5288 1272/3261/5288 2852/4272/5288 -f 2747/4223/5289 2789/4224/5289 2746/4227/5289 -f 2608/4229/5290 2618/4250/5290 2562/4230/5290 -f 2734/4168/5291 2733/4167/5291 2721/732/5291 -f 2840/4273/5292 2641/4184/5292 2623/4215/5292 -f 2710/4122/5293 2564/3188/5293 2779/3187/5293 -f 2751/4145/5294 2778/4147/5294 1941/3492/5294 -f 2855/4107/5295 2575/3627/5295 1473/2666/5295 -f 2506/4262/5296 2507/4274/5296 2528/4263/5296 -f 2528/4275/5297 2568/4276/5297 2544/4264/5297 -f 2568/4277/5298 2602/4136/5298 1072/4135/5298 -f 2627/4278/5299 2678/4279/5299 2700/4280/5299 -f 2662/4281/5300 2627/4278/5300 2700/4280/5300 -f 2700/4257/5301 2756/4282/5301 2755/4258/5301 -f 2618/4250/5302 2635/4233/5302 2622/4283/5302 -f 2690/4226/5303 2704/3102/5303 2622/4283/5303 -f 2635/4233/5304 2654/4232/5304 2622/4283/5304 -f 2582/3079/5305 2618/4250/5305 2622/4283/5305 -f 2645/4178/5306 2564/3188/5306 2710/4122/5306 -f 2731/1400/5307 2749/3057/5307 2719/3202/5307 -f 2393/636/5308 837/2427/5308 2168/695/5308 -f 2545/4284/5309 2553/4285/5309 2568/4277/5309 -f 2528/4263/5310 2545/4284/5310 2568/4277/5310 -f 2553/4285/5311 2627/4286/5311 2602/4136/5311 -f 2678/4287/5312 2679/4288/5312 2700/4257/5312 -f 2679/4288/5313 2756/4282/5313 2700/4257/5313 -f 2771/4289/5314 2831/4267/5314 2755/4258/5314 -f 2756/4282/5315 2771/4289/5315 2755/4258/5315 -f 2274/3295/5316 2350/3584/5316 2872/843/5316 -f 2591/3020/5317 2798/3235/5317 2672/4152/5317 -f 1662/651/5318 2625/650/5318 1702/4108/5318 -f 2829/3163/5319 1933/4216/5319 2890/1848/5319 -f 2139/3879/5320 188/3494/5320 1336/3548/5320 -f 2775/3505/5321 2002/3463/5321 1969/3535/5321 -f 1868/4290/5322 2639/4225/5322 1867/4245/5322 -f 2564/3188/5323 2645/4178/5323 2600/268/5323 -f 2077/4119/5324 2112/3602/5324 2853/4186/5324 -f 2695/3046/5325 2694/2883/5325 2660/3047/5325 -f 1780/3563/5326 1751/3562/5326 2502/3659/5326 -f 2507/4274/5327 2545/4284/5327 2528/4263/5327 -f 2568/4277/5328 2553/4285/5328 2602/4136/5328 -f 2771/4289/5329 2832/4291/5329 2831/4267/5329 -f 3372/2414/5330 3371/683/5330 3342/165/5330 -f 989/2325/5331 2488/4292/5331 979/2380/5331 -f 2516/3216/5332 2503/2146/5332 2523/3217/5332 -f 2624/3013/5333 2564/3188/5333 1987/4142/5333 -f 2490/4293/5334 2508/4294/5334 2507/4274/5334 -f 2508/4294/5335 2518/4295/5335 2507/4274/5335 -f 2507/4274/5336 2518/4295/5336 2545/4284/5336 -f 2586/4296/5337 2627/4286/5337 2553/4285/5337 -f 2586/4296/5338 2663/4297/5338 2627/4286/5338 -f 2627/4286/5339 2663/4297/5339 2678/4287/5339 -f 2678/4287/5340 2663/4297/5340 2679/4288/5340 -f 2831/4267/5341 2832/4291/5341 2861/3926/5341 -f 2832/4291/5342 2862/2392/5342 2861/3926/5342 -f 396/152/5343 1442/2571/5343 1439/273/5343 -f 2562/4230/5344 2582/3079/5344 2538/3058/5344 -f 2660/3047/5345 3253/4298/5345 1889/2448/5345 -f 2483/2073/5346 960/2177/5346 2484/4148/5346 -f 2745/4219/5347 2788/4196/5347 2810/253/5347 -f 2480/1920/5348 2503/2146/5348 2516/3216/5348 -f 3506/91/5349 3444/93/5349 3510/1467/5349 -f 2455/3208/5350 2447/4173/5350 2466/3206/5350 -f 1891/4169/5351 1496/4131/5351 1892/4150/5351 -f 2854/3077/5352 2055/3641/5352 2012/4299/5352 -f 2490/4293/5353 2470/4300/5353 2508/4294/5353 -f 2545/4284/5354 2554/4301/5354 2553/4285/5354 -f 2554/4301/5355 2578/4302/5355 2553/4285/5355 -f 2578/4302/5356 2586/4296/5356 2553/4285/5356 -f 2351/3526/5357 2994/4094/5357 3003/4303/5357 -f 2732/4304/5358 2693/2670/5358 2694/2883/5358 -f 1674/1198/5359 3511/1762/5359 3430/1199/5359 -f 2518/4295/5360 2529/4305/5360 2545/4284/5360 -f 2545/4284/5361 2529/4305/5361 2554/4301/5361 -f 2663/4297/5362 2680/4306/5362 2679/4288/5362 -f 2727/4307/5363 2679/4288/5363 2680/4306/5363 -f 2727/4307/5364 2756/4282/5364 2679/4288/5364 -f 2727/4307/5365 2772/4308/5365 2756/4282/5365 -f 2772/4308/5366 2771/4289/5366 2756/4282/5366 -f 2771/4289/5367 2772/4308/5367 2832/4291/5367 -f 2770/2225/5368 2860/4056/5368 2830/2498/5368 -f 2869/1415/5369 2883/4189/5369 2899/4240/5369 -f 194/1296/5370 166/1295/5370 178/1320/5370 -f 2454/845/5371 2274/3295/5371 2872/843/5371 -f 1429/4309/5372 1231/4310/5372 1099/4311/5372 -f 3241/309/5373 3213/2206/5373 3173/310/5373 -f 3002/4082/5374 2351/3526/5374 3003/4303/5374 -f 981/2431/5375 2460/4312/5375 2470/4300/5375 -f 2586/4296/5376 2628/4313/5376 2663/4297/5376 -f 2628/4313/5377 2664/4314/5377 2663/4297/5377 -f 2663/4297/5378 2664/4314/5378 2680/4306/5378 -f 2746/4227/5379 2788/4196/5379 2745/4219/5379 -f 2746/4227/5380 2745/4219/5380 2704/3102/5380 -f 2624/3013/5381 1987/4142/5381 1697/311/5381 -f 2464/1921/5382 2480/1920/5382 2502/3650/5382 -f 2481/2144/5383 2503/2146/5383 2480/1920/5383 -f 1987/4142/5384 2600/268/5384 2702/1076/5384 -f 2470/4300/5385 2509/4315/5385 2508/4294/5385 -f 2509/4315/5386 2519/4316/5386 2518/4295/5386 -f 2508/4294/5387 2509/4315/5387 2518/4295/5387 -f 2518/4295/5388 2519/4316/5388 2529/4305/5388 -f 2529/4305/5389 2530/4317/5389 2554/4301/5389 -f 2664/4314/5390 2681/4318/5390 2680/4306/5390 -f 2681/4318/5391 2727/4307/5391 2680/4306/5391 -f 2772/4308/5392 2785/4319/5392 2832/4291/5392 -f 2785/4319/5393 2833/4320/5393 2832/4291/5393 -f 2832/4291/5394 2833/4320/5394 2862/2392/5394 -f 1072/2261/5395 2544/4264/5395 2568/4276/5395 -f 349/3412/5396 350/4321/5396 184/4322/5396 -f 2597/4120/5397 2278/3921/5397 2596/3895/5397 -f 2872/843/5398 2227/1441/5398 2198/844/5398 -f 2789/4224/5399 2788/4196/5399 2746/4227/5399 -f 2298/64/5400 2205/3867/5400 2480/1920/5400 -f 2762/208/5401 2731/1400/5401 2732/4243/5401 -f 981/2431/5402 2419/2430/5402 2460/4312/5402 -f 2460/4312/5403 2509/4315/5403 2470/4300/5403 -f 2530/4317/5404 2569/4323/5404 2554/4301/5404 -f 2554/4301/5405 2569/4323/5405 2578/4302/5405 -f 2603/4324/5406 2586/4296/5406 2578/4302/5406 -f 2569/4323/5407 2603/4324/5407 2578/4302/5407 -f 2833/4320/5408 2876/2839/5408 2862/2392/5408 -f 1116/2276/5409 163/2652/5409 3466/1713/5409 -f 2273/4011/5410 2296/3860/5410 2210/4112/5410 -f 2704/3102/5411 2745/4219/5411 2730/1267/5411 -f 1534/3131/5412 1611/4191/5412 2897/2566/5412 -f 1189/1986/5413 1111/1971/5413 965/1978/5413 -f 2645/4178/5414 2710/4122/5414 2421/4113/5414 -f 2502/3650/5415 2516/3216/5415 2539/4241/5415 -f 2961/2937/5416 2960/3049/5416 2945/4006/5416 -f 2205/3867/5417 2481/2144/5417 2480/1920/5417 -f 2762/208/5418 2776/1398/5418 2731/1400/5418 -f 2423/2030/5419 2855/4107/5419 2479/4102/5419 -f 2417/4156/5420 1508/4253/5420 592/3226/5420 -f 2372/3823/5421 2419/2430/5421 963/2432/5421 -f 2519/4316/5422 2530/4317/5422 2529/4305/5422 -f 2586/4296/5423 2603/4324/5423 2628/4313/5423 -f 2681/4318/5424 2738/4325/5424 2727/4307/5424 -f 2757/4326/5425 2772/4308/5425 2727/4307/5425 -f 2757/4326/5426 2785/4319/5426 2772/4308/5426 -f 1710/1633/5427 2202/4075/5427 2535/2/5427 -f 1890/4192/5428 2408/4099/5428 1793/1518/5428 -f 2843/4164/5429 2886/4106/5429 2885/4109/5429 -f 2842/4197/5430 2827/4163/5430 2883/4189/5430 -f 2516/3216/5431 2583/3218/5431 2539/4241/5431 -f 2637/4254/5432 2668/807/5432 2636/4130/5432 -f 2783/3021/5433 3498/1197/5433 3429/225/5433 -f 2215/2294/5434 2138/2460/5434 2807/3949/5434 -f 1666/736/5435 2625/650/5435 1657/649/5435 -f 2419/2430/5436 2448/4327/5436 2460/4312/5436 -f 2460/4312/5437 2471/4328/5437 2509/4315/5437 -f 2628/4313/5438 2646/4329/5438 2664/4314/5438 -f 2664/4314/5439 2646/4329/5439 2681/4318/5439 -f 2757/4326/5440 2727/4307/5440 2738/4325/5440 -f 2834/4330/5441 2833/4320/5441 2785/4319/5441 -f 2833/4320/5442 2834/4330/5442 2876/2839/5442 -f 2834/4330/5443 1959/4038/5443 2876/2839/5443 -f 2798/3235/5444 2780/2714/5444 2672/4152/5444 -f 1662/651/5445 1702/4108/5445 1136/4100/5445 -f 2675/4199/5446 2303/1847/5446 2890/1848/5446 -f 2017/2157/5447 3182/562/5447 3364/2835/5447 -f 2325/4331/5448 2860/4332/5448 2269/4333/5448 -f 2419/2430/5449 2430/3822/5449 2448/4327/5449 -f 2448/4327/5450 2471/4328/5450 2460/4312/5450 -f 2471/4328/5451 2491/4334/5451 2509/4315/5451 -f 2491/4334/5452 2510/4335/5452 2509/4315/5452 -f 2509/4315/5453 2510/4335/5453 2519/4316/5453 -f 2510/4335/5454 2555/4336/5454 2530/4317/5454 -f 2519/4316/5455 2510/4335/5455 2530/4317/5455 -f 2603/4324/5456 2647/4337/5456 2628/4313/5456 -f 2647/4337/5457 2646/4329/5457 2628/4313/5457 -f 2646/4329/5458 2738/4325/5458 2681/4318/5458 -f 2563/4231/5459 2562/4230/5459 2538/3058/5459 -f 2563/4231/5460 2538/3058/5460 2522/3651/5460 -f 1743/3087/5461 2447/4173/5461 2456/3030/5461 -f 2583/3218/5462 2563/4231/5462 2539/4241/5462 -f 2845/4104/5463 2844/372/5463 2812/371/5463 -f 1666/736/5464 2601/2264/5464 2625/650/5464 -f 2530/4317/5465 2555/4336/5465 2569/4323/5465 -f 2555/4336/5466 2603/4324/5466 2569/4323/5466 -f 2738/4325/5467 2773/4338/5467 2757/4326/5467 -f 2773/4338/5468 2800/4339/5468 2785/4319/5468 -f 2757/4326/5469 2773/4338/5469 2785/4319/5469 -f 2800/4339/5470 2821/4340/5470 2785/4319/5470 -f 2821/4340/5471 2834/4330/5471 2785/4319/5471 -f 2821/4340/5472 1959/4038/5472 2834/4330/5472 -f 2654/4232/5473 2690/4226/5473 2622/4283/5473 -f 2690/4226/5474 2746/4227/5474 2704/3102/5474 -f 3342/165/5475 3371/683/5475 3326/166/5475 -f 2006/769/5476 2157/1187/5476 2223/1186/5476 -f 2006/769/5477 2182/768/5477 2157/1187/5477 -f 2173/2712/5478 2798/3235/5478 2856/3977/5478 -f 2810/253/5479 2842/4197/5479 2869/1415/5479 -f 2430/3822/5480 2441/4341/5480 2448/4327/5480 -f 2441/4341/5481 2471/4328/5481 2448/4327/5481 -f 2491/4334/5482 2511/4342/5482 2510/4335/5482 -f 2555/4336/5483 2556/4343/5483 2603/4324/5483 -f 2714/4344/5484 2773/4338/5484 2738/4325/5484 -f 1967/3268/5485 1849/3272/5485 2651/2101/5485 -f 1611/4191/5486 603/4252/5486 1890/4192/5486 -f 1991/4188/5487 603/4252/5487 1611/4191/5487 -f 1991/4188/5488 1611/4191/5488 2899/4240/5488 -f 2027/3249/5489 2499/1081/5489 2815/3250/5489 -f 2371/2486/5490 1741/4078/5490 1887/1891/5490 -f 1880/3657/5491 2006/769/5491 2223/1186/5491 -f 2874/4116/5492 2818/3019/5492 2783/3021/5492 -f 2417/4156/5493 2840/4273/5493 1508/4253/5493 -f 2490/4293/5494 2507/4274/5494 2506/4262/5494 -f 1959/4038/5495 2282/2408/5495 2250/2407/5495 -f 2510/4335/5496 2511/4342/5496 2555/4336/5496 -f 2556/4343/5497 2604/4345/5497 2603/4324/5497 -f 2604/4345/5498 2648/4346/5498 2647/4337/5498 -f 2603/4324/5499 2604/4345/5499 2647/4337/5499 -f 2646/4329/5500 2714/4344/5500 2738/4325/5500 -f 2714/4344/5501 2739/4347/5501 2773/4338/5501 -f 2739/4347/5502 2800/4339/5502 2773/4338/5502 -f 1959/4038/5503 2821/4340/5503 2282/2408/5503 -f 3371/683/5504 3359/4198/5504 3326/166/5504 -f 857/1783/5505 3509/1702/5505 3499/1910/5505 -f 1686/3227/5506 603/4252/5506 1991/4188/5506 -f 2885/4109/5507 1676/3225/5507 2884/4187/5507 -f 2583/3218/5508 2608/4229/5508 2563/4231/5508 -f 1160/3545/5509 3431/2804/5509 3432/2531/5509 -f 2441/4341/5510 2491/4334/5510 2471/4328/5510 -f 2511/4342/5511 2531/4348/5511 2555/4336/5511 -f 2648/4346/5512 2646/4329/5512 2647/4337/5512 -f 2648/4346/5513 2682/4349/5513 2646/4329/5513 -f 2646/4329/5514 2682/4349/5514 2714/4344/5514 -f 2850/4350/5515 2821/4340/5515 2800/4339/5515 -f 2739/4347/5516 2850/4350/5516 2800/4339/5516 -f 1996/2424/5517 2251/3912/5517 2707/4003/5517 -f 1987/4142/5518 2702/1076/5518 1697/311/5518 -f 2698/4137/5519 2735/263/5519 2674/265/5519 -f 2299/3901/5520 2141/770/5520 2006/769/5520 -f 2313/3999/5521 2314/4008/5521 2642/4007/5521 -f 2488/532/5522 1007/4220/5522 2487/4205/5522 -f 2430/3822/5523 2431/4351/5523 2441/4341/5523 -f 2441/4341/5524 2461/4352/5524 2491/4334/5524 -f 2491/4334/5525 2492/4353/5525 2511/4342/5525 -f 2555/4336/5526 2531/4348/5526 2556/4343/5526 -f 2714/4344/5527 2701/4354/5527 2739/4347/5527 -f 2801/4355/5528 2850/4350/5528 2739/4347/5528 -f 2821/4340/5529 2877/3891/5529 2282/2408/5529 -f 3434/1469/5530 3438/1471/5530 453/1781/5530 -f 3002/4082/5531 3020/4356/5531 2216/4077/5531 -f 2006/769/5532 1663/4357/5532 2299/3901/5532 -f 2880/2711/5533 1145/3970/5533 2317/3953/5533 -f 2818/3019/5534 2856/3977/5534 2798/3235/5534 -f 3460/1116/5535 3440/2538/5535 3439/2120/5535 -f 2372/3823/5536 2410/4358/5536 2430/3822/5536 -f 2431/4351/5537 2449/4359/5537 2441/4341/5537 -f 2441/4341/5538 2449/4359/5538 2461/4352/5538 -f 2461/4352/5539 2492/4353/5539 2491/4334/5539 -f 2570/4360/5540 2556/4343/5540 2531/4348/5540 -f 2570/4360/5541 2604/4345/5541 2556/4343/5541 -f 2682/4349/5542 2701/4354/5542 2714/4344/5542 -f 2701/4354/5543 2759/4361/5543 2739/4347/5543 -f 2759/4361/5544 2758/4362/5544 2739/4347/5544 -f 2758/4362/5545 2801/4355/5545 2739/4347/5545 -f 2423/2030/5546 2575/3627/5546 2855/4107/5546 -f 2637/4254/5547 2636/4130/5547 2618/4250/5547 -f 1898/2134/5548 2062/2136/5548 2108/3276/5548 -f 2410/4358/5549 2431/4351/5549 2430/3822/5549 -f 2492/4353/5550 2512/4363/5550 2511/4342/5550 -f 2511/4342/5551 2512/4363/5551 2531/4348/5551 -f 2557/4364/5552 2570/4360/5552 2531/4348/5552 -f 2682/4349/5553 2683/4365/5553 2701/4354/5553 -f 2683/4365/5554 2759/4361/5554 2701/4354/5554 -f 2801/4355/5555 2835/4366/5555 2850/4350/5555 -f 2863/4367/5556 2821/4340/5556 2850/4350/5556 -f 2863/4367/5557 2877/3891/5557 2821/4340/5557 -f 2434/267/5558 2711/1634/5558 2543/1935/5558 -f 2387/3431/5559 2166/3656/5559 2232/3429/5559 -f 2364/2425/5560 1880/3657/5560 2166/3656/5560 -f 2364/2425/5561 2006/769/5561 1880/3657/5561 -f 2006/769/5562 2364/2425/5562 1663/4357/5562 -f 2858/224/5563 2874/4116/5563 2783/3021/5563 -f 1700/4105/5564 2870/3091/5564 1911/3090/5564 -f 1697/311/5565 2642/4007/5565 566/3014/5565 -f 2995/4368/5566 2994/4094/5566 2205/3867/5566 -f 2376/4009/5567 566/3014/5567 2642/4007/5567 -f 2512/4363/5568 2520/4369/5568 2531/4348/5568 -f 2520/4369/5569 2557/4364/5569 2531/4348/5569 -f 2557/4364/5570 2571/4370/5570 2570/4360/5570 -f 2571/4370/5571 2605/4371/5571 2570/4360/5571 -f 2570/4360/5572 2605/4371/5572 2604/4345/5572 -f 2604/4345/5573 2605/4371/5573 2648/4346/5573 -f 2605/4371/5574 2629/4372/5574 2648/4346/5574 -f 2835/4366/5575 2863/4367/5575 2850/4350/5575 -f 1508/4253/5576 1933/4216/5576 603/4252/5576 -f 2707/4003/5577 2299/3901/5577 1663/4357/5577 -f 2232/3429/5578 2223/1186/5578 2330/3729/5578 -f 2626/4214/5579 2840/4273/5579 2623/4215/5579 -f 2421/4113/5580 2710/4122/5580 2752/4114/5580 -f 2404/4373/5581 2411/4374/5581 2410/4358/5581 -f 2403/2454/5582 2404/2434/5582 2410/2527/5582 -f 2410/4358/5583 2411/4374/5583 2431/4351/5583 -f 2683/4365/5584 2682/4349/5584 2648/4346/5584 -f 2629/4372/5585 2683/4365/5585 2648/4346/5585 -f 2822/4375/5586 2801/4355/5586 2758/4362/5586 -f 2801/4355/5587 2822/4375/5587 2835/4366/5587 -f 2863/4367/5588 2285/2534/5588 2877/3891/5588 -f 2285/2534/5589 233/3883/5589 2877/3891/5589 -f 2783/3021/5590 2726/4221/5590 1674/1198/5590 -f 3420/4376/5591 1491/2933/5591 3404/4377/5591 -f 1751/3562/5592 1731/3549/5592 2446/3567/5592 -f 2598/3920/5593 2278/3921/5593 2597/4120/5593 -f 2242/2406/5594 233/3883/5594 2266/3679/5594 -f 2234/4018/5595 2718/4029/5595 2296/3860/5595 -f 2128/4378/5596 551/4238/5596 1666/736/5596 -f 2674/265/5597 2296/3860/5597 2718/4029/5597 -f 2472/4379/5598 2492/4353/5598 2461/4352/5598 -f 2472/4380/5599 2493/4381/5599 2512/4382/5599 -f 2492/4383/5600 2472/4380/5600 2512/4382/5600 -f 2520/4369/5601 2558/4384/5601 2557/4364/5601 -f 2557/4364/5602 2558/4384/5602 2571/4370/5602 -f 2748/4151/5603 2790/240/5603 2747/4223/5603 -f 2790/240/5604 2811/4170/5604 2747/4223/5604 -f 2167/3477/5605 2307/2426/5605 2610/3637/5605 -f 551/4238/5606 169/4181/5606 2601/2264/5606 -f 2269/3941/5607 2770/2225/5607 2784/2224/5607 -f 2364/2425/5608 2707/4003/5608 1663/4357/5608 -f 2502/3650/5609 2480/1920/5609 2516/3216/5609 -f 2873/4014/5610 2782/4218/5610 2858/224/5610 -f 2411/4374/5611 2420/4385/5611 2431/4351/5611 -f 2420/4385/5612 2449/4359/5612 2431/4351/5612 -f 2493/4386/5613 2513/4387/5613 2512/4363/5613 -f 2512/4363/5614 2513/4387/5614 2520/4369/5614 -f 2558/4384/5615 2587/4388/5615 2571/4370/5615 -f 2571/4370/5616 2587/4388/5616 2605/4371/5616 -f 2665/4389/5617 2683/4365/5617 2629/4372/5617 -f 2759/4361/5618 2822/4375/5618 2758/4362/5618 -f 2822/4375/5619 2836/4390/5619 2835/4366/5619 -f 2141/770/5620 2299/3901/5620 2035/3391/5620 -f 3101/1410/5621 3100/4127/5621 3057/1411/5621 -f 2404/4373/5622 2412/4266/5622 2411/4374/5622 -f 2411/4374/5623 2412/4266/5623 2420/4385/5623 -f 2449/4359/5624 2462/4391/5624 2461/4352/5624 -f 2461/4352/5625 2462/4391/5625 2472/4379/5625 -f 2520/4369/5626 2546/4392/5626 2558/4384/5626 -f 2587/4388/5627 2611/4393/5627 2605/4371/5627 -f 2605/4371/5628 2611/4393/5628 2629/4372/5628 -f 2683/4365/5629 2665/4389/5629 2759/4361/5629 -f 2836/4390/5630 2878/4394/5630 2835/4366/5630 -f 2878/4394/5631 2863/4367/5631 2835/4366/5631 -f 2878/4394/5632 2893/4395/5632 2863/4367/5632 -f 2893/4395/5633 2285/2534/5633 2863/4367/5633 -f 2655/3557/5634 2637/4254/5634 2608/4229/5634 -f 2196/3985/5635 2166/3656/5635 2387/3431/5635 -f 2055/3597/5636 2853/4396/5636 2012/2349/5636 -f 1891/4169/5637 2489/2898/5637 1496/4131/5637 -f 2779/3187/5638 2445/4098/5638 1934/4012/5638 -f 2450/4397/5639 2449/4359/5639 2420/4385/5639 -f 2449/4359/5640 2450/4397/5640 2462/4391/5640 -f 2462/4398/5641 2493/4381/5641 2472/4380/5641 -f 2587/4388/5642 2630/4399/5642 2611/4393/5642 -f 2629/4372/5643 2611/4393/5643 2665/4389/5643 -f 2665/4389/5644 2760/4400/5644 2759/4361/5644 -f 2759/4361/5645 2760/4400/5645 2822/4375/5645 -f 2721/732/5646 2694/2883/5646 2695/3046/5646 -f 2721/732/5647 2720/734/5647 2694/2883/5647 -f 2846/3243/5648 2813/3242/5648 2777/4193/5648 -f 2726/4221/5649 2672/4152/5649 2670/1761/5649 -f 1496/4131/5650 2644/4132/5650 2641/4184/5650 -f 2873/4014/5651 2858/224/5651 2239/3991/5651 -f 2600/268/5652 2543/1935/5652 2702/1076/5652 -f 2404/4373/5653 2405/4401/5653 2412/4266/5653 -f 2432/4265/5654 2450/4397/5654 2420/4385/5654 -f 2450/4397/5655 2463/4402/5655 2462/4391/5655 -f 2462/4398/5656 2463/4403/5656 2493/4381/5656 -f 2513/4387/5657 2546/4392/5657 2520/4369/5657 -f 2558/4384/5658 2546/4392/5658 2587/4388/5658 -f 2587/4388/5659 2588/4404/5659 2630/4399/5659 -f 2611/4393/5660 2666/4405/5660 2665/4389/5660 -f 2760/4400/5661 2824/4406/5661 2822/4375/5661 -f 2822/4375/5662 2823/4407/5662 2836/4390/5662 -f 2823/4407/5663 2851/4408/5663 2836/4390/5663 -f 2836/4390/5664 2851/4408/5664 2878/4394/5664 -f 2782/4218/5665 2871/3978/5665 2874/4116/5665 -f 2765/4182/5666 1732/3803/5666 2723/653/5666 -f 2634/362/5667 2622/4283/5667 2653/2305/5667 -f 2319/4256/5668 1741/4078/5668 2371/2486/5668 -f 2151/3742/5669 2764/4076/5669 2196/3985/5669 -f 179/1345/5670 178/1320/5670 166/1295/5670 -f 2687/2234/5671 2703/3525/5671 1931/2235/5671 -f 2870/3091/5672 2886/4106/5672 2845/4104/5672 -f 2463/4403/5673 2494/4409/5673 2493/4381/5673 -f 2494/4410/5674 2521/4411/5674 2513/4387/5674 -f 2493/4386/5675 2494/4410/5675 2513/4387/5675 -f 2521/4411/5676 2546/4392/5676 2513/4387/5676 -f 2546/4392/5677 2588/4404/5677 2587/4388/5677 -f 2666/4405/5678 2684/4412/5678 2665/4389/5678 -f 2665/4389/5679 2684/4412/5679 2760/4400/5679 -f 2822/4375/5680 2824/4406/5680 2823/4407/5680 -f 2316/2535/5681 2285/2534/5681 2893/4395/5681 -f 567/4413/5682 2307/2426/5682 2196/3985/5682 -f 2636/4130/5683 2705/4129/5683 2690/4226/5683 -f 2702/1076/5684 3486/1075/5684 1697/311/5684 -f 2420/4385/5685 2412/4266/5685 2432/4265/5685 -f 2546/4392/5686 2559/4414/5686 2588/4404/5686 -f 2588/4404/5687 2612/4415/5687 2630/4399/5687 -f 2630/4399/5688 2666/4405/5688 2611/4393/5688 -f 2740/4416/5689 2824/4406/5689 2760/4400/5689 -f 951/1965/5690 952/2837/5690 962/1964/5690 -f 2539/4241/5691 2563/4231/5691 2522/3651/5691 -f 2298/64/5692 2464/1921/5692 2446/1444/5692 -f 2239/3991/5693 2767/226/5693 2696/953/5693 -f 2829/3163/5694 2890/1848/5694 1709/2836/5694 -f 2521/4411/5695 2559/4414/5695 2546/4392/5695 -f 2559/4414/5696 2589/4417/5696 2588/4404/5696 -f 2588/4404/5697 2589/4417/5697 2612/4415/5697 -f 2684/4412/5698 2715/4418/5698 2760/4400/5698 -f 2760/4400/5699 2715/4418/5699 2740/4416/5699 -f 2824/4406/5700 2825/4419/5700 2823/4407/5700 -f 2823/4407/5701 2825/4419/5701 2851/4408/5701 -f 2864/4085/5702 2878/4394/5702 2851/4408/5702 -f 2864/4085/5703 2893/4395/5703 2878/4394/5703 -f 2764/4076/5704 2209/2292/5704 567/4413/5704 -f 2644/4132/5705 2517/2072/5705 2848/4183/5705 -f 2415/3148/5706 2409/3150/5706 2175/3193/5706 -f 2783/3021/5707 2591/3020/5707 2726/4221/5707 -f 2705/4129/5708 2747/4223/5708 2690/4226/5708 -f 2767/226/5709 2239/3991/5709 2858/224/5709 -f 2405/4401/5710 2406/3468/5710 2412/4266/5710 -f 2494/4410/5711 2473/4420/5711 2521/4411/5711 -f 2589/4417/5712 2613/4421/5712 2612/4415/5712 -f 2620/4422/5713 2666/4405/5713 2630/4399/5713 -f 2825/4419/5714 2864/4085/5714 2851/4408/5714 -f 2316/2535/5715 2893/4395/5715 216/3858/5715 -f 2437/4165/5716 2438/96/5716 2447/4173/5716 -f 2625/650/5717 2752/4114/5717 1702/4108/5717 -f 2966/4270/5718 2987/4269/5718 2940/4423/5718 -f 2705/4129/5719 2748/4151/5719 2747/4223/5719 -f 2782/4218/5720 2874/4116/5720 2858/224/5720 -f 2432/4265/5721 2451/4424/5721 2450/4397/5721 -f 2450/4397/5722 2451/4424/5722 2463/4402/5722 -f 2451/4425/5723 2473/4426/5723 2494/4409/5723 -f 2463/4403/5724 2451/4425/5724 2494/4409/5724 -f 2559/4414/5725 2547/4427/5725 2589/4417/5725 -f 2612/4415/5726 2613/4421/5726 2630/4399/5726 -f 2666/4405/5727 2685/4428/5727 2684/4412/5727 -f 2354/4086/5728 2893/4395/5728 2864/4085/5728 -f 2354/4086/5729 216/3858/5729 2893/4395/5729 -f 1901/3579/5730 2616/2421/5730 2621/4259/5730 -f 2209/2292/5731 2807/3949/5731 567/4413/5731 -f 567/4413/5732 2807/3949/5732 2307/2426/5732 -f 2735/263/5733 1473/2666/5733 2699/264/5733 -f 2438/96/5734 2437/4165/5734 2428/97/5734 -f 2547/4427/5735 2579/4429/5735 2589/4417/5735 -f 2620/4422/5736 2630/4399/5736 2613/4421/5736 -f 2685/4428/5737 2666/4405/5737 2620/4422/5737 -f 2684/4412/5738 2685/4428/5738 2715/4418/5738 -f 2715/4418/5739 2728/4430/5739 2740/4416/5739 -f 2728/4430/5740 2802/4431/5740 2740/4416/5740 -f 2740/4416/5741 2802/4431/5741 2824/4406/5741 -f 1909/4157/5742 2150/4065/5742 2906/2458/5742 -f 1941/3492/5743 2734/4168/5743 2722/3730/5743 -f 2807/3949/5744 2610/3637/5744 2307/2426/5744 -f 2691/806/5745 2706/3201/5745 2668/807/5745 -f 2157/1187/5746 2182/768/5746 2359/3910/5746 -f 2453/4185/5747 2848/4183/5747 2698/4137/5747 -f 2438/96/5748 2456/3030/5748 2447/4173/5748 -f 2406/3468/5749 2306/3467/5749 2432/4265/5749 -f 2514/4432/5750 2473/4426/5750 2451/4425/5750 -f 2514/4433/5751 2521/4411/5751 2473/4420/5751 -f 2521/4411/5752 2532/4434/5752 2559/4414/5752 -f 2532/4434/5753 2547/4427/5753 2559/4414/5753 -f 2589/4417/5754 2579/4429/5754 2613/4421/5754 -f 2802/4431/5755 2825/4419/5755 2824/4406/5755 -f 2166/3656/5756 2196/3985/5756 2364/2425/5756 -f 2489/2898/5757 2517/2072/5757 2644/4132/5757 -f 2720/734/5758 2732/4304/5758 2694/2883/5758 -f 2622/4283/5759 2704/3102/5759 2653/2305/5759 -f 2442/459/5760 2451/4424/5760 2432/4265/5760 -f 2514/4433/5761 2532/4434/5761 2521/4411/5761 -f 2716/4435/5762 2741/4436/5762 2728/4430/5762 -f 2715/4418/5763 2716/4435/5763 2728/4430/5763 -f 2728/4430/5764 2741/4436/5764 2802/4431/5764 -f 2802/4431/5765 2786/4437/5765 2825/4419/5765 -f 2825/4419/5766 2803/4438/5766 2864/4085/5766 -f 2623/4215/5767 2676/4123/5767 2162/4037/5767 -f 2164/1943/5768 2154/3969/5768 1266/2733/5768 -f 1916/2410/5769 2059/3818/5769 2159/3837/5769 -f 2216/4077/5770 3020/4356/5770 3019/2296/5770 -f 2864/4085/5771 2803/4438/5771 2259/3553/5771 -f 3367/3009/5772 3340/3111/5772 1486/2877/5772 -f 3425/313/5773 2313/3999/5773 2642/4007/5773 -f 2406/2355/5774 2911/2357/5774 2908/3510/5774 -f 2311/3862/5775 2191/3296/5775 2454/845/5775 -f 2306/3467/5776 2413/4439/5776 2432/4265/5776 -f 2474/4440/5777 2532/4434/5777 2514/4433/5777 -f 2547/4427/5778 2572/4441/5778 2579/4429/5778 -f 2613/4421/5779 2614/4442/5779 2620/4422/5779 -f 2620/4422/5780 2649/4443/5780 2685/4428/5780 -f 2649/4443/5781 2716/4435/5781 2715/4418/5781 -f 2685/4428/5782 2649/4443/5782 2715/4418/5782 -f 2741/4436/5783 2786/4437/5783 2802/4431/5783 -f 1611/4191/5784 967/1517/5784 2897/2566/5784 -f 2869/1415/5785 2899/4240/5785 1534/3131/5785 -f 2261/1889/5786 1887/1891/5786 1741/4078/5786 -f 2490/4293/5787 981/2431/5787 2470/4300/5787 -f 2732/4304/5788 2719/1905/5788 2693/2670/5788 -f 2843/4164/5789 2884/4187/5789 2883/4189/5789 -f 2655/3557/5790 2668/807/5790 2637/4254/5790 -f 1829/3706/5791 2523/3217/5791 2503/2146/5791 -f 2888/4141/5792 1934/4012/5792 2273/4011/5792 -f 2916/851/5793 2926/2970/5793 2915/3582/5793 -f 3091/1788/5794 3135/4444/5794 3062/1789/5794 -f 2413/4439/5795 2442/459/5795 2432/4265/5795 -f 2475/4445/5796 2451/4424/5796 2442/459/5796 -f 2474/4446/5797 2514/4432/5797 2451/4425/5797 -f 2475/4445/5798 2474/4440/5798 2451/4424/5798 -f 2532/4434/5799 2572/4441/5799 2547/4427/5799 -f 2579/4429/5800 2614/4442/5800 2613/4421/5800 -f 2631/4447/5801 2649/4443/5801 2620/4422/5801 -f 2786/4437/5802 2803/4438/5802 2825/4419/5802 -f 2623/4215/5803 2453/4185/5803 2676/4123/5803 -f 2672/4152/5804 1689/1864/5804 2592/648/5804 -f 23/783/5805 58/211/5805 36/25/5805 -f 2163/4081/5806 2455/4200/5806 2255/4448/5806 -f 2408/4099/5807 1933/4216/5807 2829/3163/5807 -f 3461/270/5808 2768/662/5808 2808/4228/5808 -f 2311/3862/5809 2454/845/5809 2330/3729/5809 -f 2425/3192/5810 2427/4110/5810 2455/4200/5810 -f 2582/3079/5811 2622/4283/5811 2634/362/5811 -f 2964/527/5812 2984/2484/5812 2983/528/5812 -f 2501/2757/5813 2875/4449/5813 2524/2344/5813 -f 2464/1921/5814 1751/4242/5814 2446/1444/5814 -f 2671/2879/5815 2697/2542/5815 2524/2344/5815 -f 2696/953/5816 2253/699/5816 2239/3991/5816 -f 2614/4442/5817 2631/4447/5817 2620/4422/5817 -f 2803/4438/5818 2865/4450/5818 2259/3553/5818 -f 2128/4378/5819 1666/736/5819 2107/735/5819 -f 1792/3652/5820 2522/3651/5820 2275/4451/5820 -f 2623/4215/5821 2162/4037/5821 2675/4199/5821 -f 2706/3201/5822 2749/3057/5822 2705/4129/5822 -f 2422/2070/5823 2584/3877/5823 2479/4102/5823 -f 1028/3037/5824 2183/1718/5824 2816/2069/5824 -f 3030/2297/5825 2426/4111/5825 2425/3192/5825 -f 3295/4452/5826 3280/4453/5826 3242/3945/5826 -f 3243/2445/5827 3295/4452/5827 3242/3945/5827 -f 3404/4377/5828 1480/2932/5828 3372/4454/5828 -f 2413/4439/5829 2414/460/5829 2442/459/5829 -f 2495/4455/5830 2474/4440/5830 2475/4445/5830 -f 2495/4455/5831 2573/4456/5831 2474/4440/5831 -f 2474/4440/5832 2573/4456/5832 2532/4434/5832 -f 2572/4441/5833 2590/4457/5833 2579/4429/5833 -f 2579/4429/5834 2590/4457/5834 2614/4442/5834 -f 2631/4447/5835 2667/4458/5835 2649/4443/5835 -f 2667/4458/5836 2774/4459/5836 2649/4443/5836 -f 2649/4443/5837 2774/4459/5837 2716/4435/5837 -f 2813/3242/5838 2845/4104/5838 2792/1399/5838 -f 2705/4129/5839 2749/3057/5839 2748/4151/5839 -f 3464/20/5840 3446/22/5840 3484/2744/5840 -f 2776/1398/5841 2813/3242/5841 2792/1399/5841 -f 2813/3242/5842 2870/3091/5842 2845/4104/5842 -f 3084/95/5843 3124/3031/5843 2438/96/5843 -f 3013/4460/5844 3037/4461/5844 3012/2799/5844 -f 2911/2357/5845 2917/849/5845 2908/3510/5845 -f 3295/4452/5846 3294/4462/5846 3280/4453/5846 -f 2839/1640/5847 2875/4449/5847 2501/2757/5847 -f 2671/2879/5848 2524/2344/5848 2875/4449/5848 -f 1898/3035/5849 2852/2118/5849 2548/2117/5849 -f 2476/4463/5850 2475/4445/5850 2442/459/5850 -f 2476/4463/5851 2495/4455/5851 2475/4445/5851 -f 2532/4434/5852 2573/4456/5852 2572/4441/5852 -f 2572/4441/5853 2573/4456/5853 2590/4457/5853 -f 2716/4435/5854 2774/4459/5854 2741/4436/5854 -f 2774/4459/5855 2786/4437/5855 2741/4436/5855 -f 2895/3554/5856 2259/3553/5856 2865/4450/5856 -f 2641/4184/5857 2453/4185/5857 2623/4215/5857 -f 2750/733/5858 2762/4464/5858 2720/734/5858 -f 717/1991/5859 136/378/5859 160/661/5859 -f 2793/207/5860 2777/4193/5860 2762/208/5860 -f 2843/4164/5861 2885/4109/5861 2884/4187/5861 -f 1666/736/5862 1657/649/5862 1350/737/5862 -f 3013/4460/5863 3012/2799/5863 2975/4465/5863 -f 2892/4466/5864 2671/2879/5864 2875/4449/5864 -f 1939/4467/5865 2184/2880/5865 2671/2879/5865 -f 2414/460/5866 2150/1282/5866 1909/458/5866 -f 1778/726/5867 2305/3932/5867 2276/2298/5867 -f 2667/4458/5868 2729/4468/5868 2774/4459/5868 -f 2729/4468/5869 2717/4469/5869 2774/4459/5869 -f 2804/4470/5870 2803/4438/5870 2786/4437/5870 -f 2099/3456/5871 2882/2212/5871 2896/2462/5871 -f 2733/4167/5872 2750/733/5872 2721/732/5872 -f 2154/4471/5873 2184/2880/5873 1939/4467/5873 -f 2782/4218/5874 2186/3971/5874 2871/3978/5874 -f 2793/207/5875 2846/3243/5875 2777/4193/5875 -f 2847/4236/5876 2846/3243/5876 2794/4180/5876 -f 2456/3030/5877 2438/96/5877 3124/3031/5877 -f 2154/4471/5878 2164/2553/5878 2184/2880/5878 -f 1909/458/5879 2452/4177/5879 2442/459/5879 -f 1857/3446/5880 1856/3408/5880 1834/1865/5880 -f 2442/459/5881 2452/4177/5881 2476/4463/5881 -f 2533/4472/5882 2573/4456/5882 2495/4455/5882 -f 2580/4473/5883 2590/4457/5883 2573/4456/5883 -f 2632/4474/5884 2614/4442/5884 2590/4457/5884 -f 2632/4474/5885 2631/4447/5885 2614/4442/5885 -f 2650/4475/5886 2667/4458/5886 2631/4447/5886 -f 2632/4474/5887 2650/4475/5887 2631/4447/5887 -f 2803/4438/5888 2804/4470/5888 2865/4450/5888 -f 2241/3836/5889 2861/3926/5889 2158/1442/5889 -f 2109/4097/5890 1136/4100/5890 2799/4101/5890 -f 2720/734/5891 2762/4464/5891 2732/4304/5891 -f 3239/4476/5892 3254/4477/5892 1499/3237/5892 -f 1499/3230/5893 3223/4478/5893 3239/4479/5893 -f 2328/2459/5894 214/1716/5894 813/1957/5894 -f 960/2177/5895 2993/2176/5895 2486/4194/5895 -f 2496/4480/5896 2495/4455/5896 2476/4463/5896 -f 2496/4480/5897 2533/4472/5897 2495/4455/5897 -f 2533/4472/5898 2580/4473/5898 2573/4456/5898 -f 2606/3396/5899 2590/4457/5899 2580/4473/5899 -f 2606/3396/5900 2632/4474/5900 2590/4457/5900 -f 2804/4470/5901 2786/4437/5901 2774/4459/5901 -f 2804/4470/5902 2866/4019/5902 2865/4450/5902 -f 2865/4450/5903 2866/4019/5903 2895/3554/5903 -f 2777/4193/5904 2776/1398/5904 2762/208/5904 -f 2723/653/5905 2643/677/5905 2640/654/5905 -f 2795/4237/5906 2794/4180/5906 2778/4179/5906 -f 2160/4042/5907 2675/4199/5907 2162/4037/5907 -f 3309/4481/5908 3344/4482/5908 3229/4483/5908 -f 1933/4216/5909 2840/4273/5909 2626/4214/5909 -f 2417/4156/5910 2641/4184/5910 2840/4273/5910 -f 2640/654/5911 2643/677/5911 2879/679/5911 -f 1725/2220/5912 1734/2219/5912 1500/2569/5912 -f 2908/3510/5913 2916/851/5913 2907/2457/5913 -f 2540/4484/5914 2839/1640/5914 1897/858/5914 -f 2540/4484/5915 2875/4449/5915 2839/1640/5915 -f 1865/2971/5916 2671/2879/5916 2892/4466/5916 -f 2671/2879/5917 1865/2971/5917 1939/4467/5917 -f 1941/3492/5918 2778/4147/5918 2734/4168/5918 -f 2650/4475/5919 2729/4468/5919 2667/4458/5919 -f 2774/4459/5920 2717/4469/5920 2804/4470/5920 -f 2804/4470/5921 2805/4485/5921 2866/4019/5921 -f 3230/4486/5922 3309/4481/5922 3229/4483/5922 -f 1508/4253/5923 2840/4273/5923 1933/4216/5923 -f 2692/2671/5924 2656/4487/5924 2657/4488/5924 -f 2575/3627/5925 2109/4097/5925 1473/2666/5925 -f 3158/4489/5926 3157/4490/5926 3123/4491/5926 -f 3266/4492/5927 1476/3066/5927 1483/3098/5927 -f 2540/4484/5928 2892/4466/5928 2875/4449/5928 -f 2780/2714/5929 1689/1864/5929 2672/4152/5929 -f 2633/3372/5930 2632/4474/5930 2606/3396/5930 -f 2887/250/5931 602/3241/5931 1703/251/5931 -f 2301/3990/5932 2797/1717/5932 2328/2459/5932 -f 2797/1717/5933 214/1716/5933 2328/2459/5933 -f 2522/3651/5934 2538/3058/5934 2537/3051/5934 -f 1933/4216/5935 2623/4215/5935 2675/4199/5935 -f 2765/4182/5936 2723/653/5936 2601/2264/5936 -f 1483/3327/5937 1501/3326/5937 1725/4493/5937 -f 2986/2729/5938 3036/2801/5938 3011/4494/5938 -f 2737/2972/5939 1865/2971/5939 2892/4466/5939 -f 1909/458/5940 2433/3149/5940 2452/4177/5940 -f 2497/4495/5941 2476/4463/5941 2452/4177/5941 -f 2476/4463/5942 2497/4495/5942 2496/4480/5942 -f 2496/4480/5943 2534/4496/5943 2533/4472/5943 -f 2633/3372/5944 2650/4475/5944 2632/4474/5944 -f 2729/4468/5945 2742/4497/5945 2717/4469/5945 -f 2717/4469/5946 2805/4485/5946 2804/4470/5946 -f 2792/1399/5947 2791/239/5947 2731/1400/5947 -f 2163/4081/5948 2465/2145/5948 2436/2295/5948 -f 1675/2665/5949 2459/2071/5949 2422/2070/5949 -f 2838/1635/5950 1819/3744/5950 2019/1636/5950 -f 3266/4498/5951 1483/4499/5951 1725/4500/5951 -f 2928/4501/5952 2935/4502/5952 2920/4503/5952 -f 3268/4504/5953 3298/1735/5953 3284/1737/5953 -f 2985/4505/5954 2986/2729/5954 3011/4494/5954 -f 2737/2972/5955 2892/4466/5955 2540/4484/5955 -f 1725/2220/5956 1499/3230/5956 3254/4506/5956 -f 2459/2071/5957 1675/2665/5957 2735/263/5957 -f 2409/3150/5958 2433/3149/5958 1909/458/5958 -f 2497/4495/5959 2534/4496/5959 2496/4480/5959 -f 1856/4507/5960 2533/4472/5960 2534/4496/5960 -f 1856/4507/5961 2580/4473/5961 2533/4472/5961 -f 1856/4507/5962 1885/3397/5962 2580/4473/5962 -f 1885/3397/5963 2606/3396/5963 2580/4473/5963 -f 2633/3372/5964 2729/4468/5964 2650/4475/5964 -f 2742/4497/5965 2805/4485/5965 2717/4469/5965 -f 2036/3454/5966 2867/3464/5966 2075/3422/5966 -f 2796/4134/5967 2795/2348/5967 2751/4508/5967 -f 1307/2031/5968 2584/3877/5968 2112/3602/5968 -f 566/3014/5969 2376/4009/5969 2177/4023/5969 -f 3266/4492/5970 1725/2220/5970 3254/4506/5970 -f 3070/4509/5971 3081/4510/5971 3058/4172/5971 -f 2416/2911/5972 2540/4484/5972 1897/858/5972 -f 2769/669/5973 2737/2972/5973 2540/4484/5973 -f 3370/685/5974 3401/3140/5974 3359/4198/5974 -f 2433/3149/5975 2415/3148/5975 2452/4177/5975 -f 1834/4511/5976 1856/4507/5976 2534/4496/5976 -f 1950/3373/5977 2633/3372/5977 2606/3396/5977 -f 1899/3398/5978 1950/3373/5978 2606/3396/5978 -f 1997/4217/5979 2729/4468/5979 2633/3372/5979 -f 2196/3985/5980 2387/3431/5980 2151/3742/5980 -f 1111/1971/5981 3441/4512/5981 3462/1972/5981 -f 2301/3990/5982 2482/2327/5982 2797/1717/5982 -f 1676/3225/5983 1892/4150/5983 2417/4156/5983 -f 1099/3269/5984 2341/4513/5984 1849/3270/5984 -f 1500/4514/5985 1499/3231/5985 1725/4493/5985 -f 2766/681/5986 1897/858/5986 2669/857/5986 -f 2766/681/5987 2416/2911/5987 1897/858/5987 -f 2416/2911/5988 2769/669/5988 2540/4484/5988 -f 2779/3187/5989 1934/4012/5989 966/3334/5989 -f 2452/4177/5990 2477/2524/5990 2497/4495/5990 -f 2477/2524/5991 2478/2526/5991 2497/4495/5991 -f 2497/4495/5992 2478/2526/5992 2534/4496/5992 -f 2478/2526/5993 1834/4511/5993 2534/4496/5993 -f 1997/4217/5994 2743/2866/5994 2729/4468/5994 -f 2743/2866/5995 2742/4497/5995 2729/4468/5995 -f 2806/2868/5996 2805/4485/5996 2742/4497/5996 -f 2805/4485/5997 2837/2709/5997 2866/4019/5997 -f 2866/4019/5998 2880/2711/5998 2317/3953/5998 -f 3471/3576/5999 1363/3558/5999 1964/2128/5999 -f 1703/251/6000 2567/3106/6000 1769/252/6000 -f 2210/4112/6001 966/3334/6001 2888/4141/6001 -f 2482/2327/6002 2816/2069/6002 2797/1717/6002 -f 3452/2409/6003 3503/615/6003 3507/1858/6003 -f 2887/250/6004 2870/3091/6004 2813/3242/6004 -f 2884/4187/6005 1676/3225/6005 1686/3227/6005 -f 2694/2883/6006 2693/2670/6006 2658/2884/6006 -f 2435/3335/6007 966/3334/6007 2210/4112/6007 -f 3047/4515/6008 3088/4516/6008 3045/2277/6008 -f 3375/2513/6009 570/4517/6009 3385/2514/6009 -f 2794/4180/6010 2793/207/6010 2750/206/6010 -f 2443/848/6011 2477/2524/6011 2452/4177/6011 -f 2012/2349/6012 2853/4396/6012 2847/2350/6012 -f 1802/1363/6013 1788/1227/6013 1789/2707/6013 -f 2686/3371/6014 1997/4217/6014 2633/3372/6014 -f 2742/4497/6015 2743/2866/6015 2806/2868/6015 -f 2837/2709/6016 2805/4485/6016 2806/2868/6016 -f 2837/2709/6017 2880/2711/6017 2866/4019/6017 -f 2899/4240/6018 1611/4191/6018 1534/3131/6018 -f 2853/4396/6019 2055/3597/6019 2077/3599/6019 -f 2697/2542/6020 2184/2880/6020 2178/2552/6020 -f 2794/4180/6021 2846/3243/6021 2793/207/6021 -f 2526/4206/6022 2487/4205/6022 1007/4220/6022 -f 3059/3133/6023 3035/3135/6023 3036/2801/6023 -f 2769/669/6024 2467/289/6024 2737/2972/6024 -f 2737/2972/6025 2467/289/6025 1875/2973/6025 -f 2627/4286/6026 2662/2367/6026 2602/4136/6026 -f 1832/3764/6027 2838/3766/6027 2879/4518/6027 -f 2764/4076/6028 567/4413/6028 2196/3985/6028 -f 967/1517/6029 1890/4192/6029 1793/1518/6029 -f 2273/4011/6030 2210/4112/6030 2888/4141/6030 -f 3203/4519/6031 3217/4520/6031 3168/4521/6031 -f 3250/4522/6032 3249/4523/6032 3217/4520/6032 -f 3314/4524/6033 3332/1653/6033 3331/4525/6033 -f 3105/4526/6034 3121/4527/6034 3134/4528/6034 -f 2948/2728/6035 2975/4465/6035 2986/2729/6035 -f 3181/2775/6036 3158/4489/6036 3093/4529/6036 -f 3060/4530/6037 3105/4526/6037 3089/4531/6037 -f 3375/4532/6038 3406/2012/6038 570/2011/6038 -f 3284/1737/6039 3312/3154/6039 3297/4533/6039 -f 3267/4534/6040 3309/4481/6040 3230/4486/6040 -f 3092/2735/6041 3123/4491/6041 3091/1788/6041 -f 3052/4535/6042 3060/4530/6042 3089/4531/6042 -f 3116/4536/6043 3130/4537/6043 3129/4538/6043 -f 3018/2905/6044 3001/2963/6044 2991/1880/6044 -f 2992/1879/6045 3018/2905/6045 2991/1880/6045 -f 3017/4539/6046 3016/2961/6046 3001/2963/6046 -f 3420/4540/6047 3421/4212/6047 2469/3908/6047 -f 1677/3366/6048 1805/2467/6048 3274/3364/6048 -f 3423/4541/6049 3405/4542/6049 993/4543/6049 -f 3018/2905/6050 3017/4539/6050 3001/2963/6050 -f 3300/4544/6051 3299/4545/6051 3285/4546/6051 -f 3345/4547/6052 3344/4482/6052 3309/4481/6052 -f 1481/3085/6053 3150/3059/6053 1474/4548/6053 -f 3060/4530/6054 3090/4549/6054 3105/4526/6054 -f 3090/4549/6055 3121/4527/6055 3105/4526/6055 -f 3249/4523/6056 3285/4546/6056 3248/4550/6056 -f 3464/20/6057 3484/2744/6057 1197/3438/6057 -f 3037/4551/6058 3051/4552/6058 3050/4553/6058 -f 3178/4554/6059 3168/4521/6059 3233/4555/6059 -f 3122/4556/6060 3134/4528/6060 3121/4527/6060 -f 3134/4528/6061 3168/4521/6061 3133/4557/6061 -f 3203/4519/6062 3250/4522/6062 3217/4520/6062 -f 3250/4522/6063 3286/4558/6063 3249/4523/6063 -f 3028/2962/6064 3027/4559/6064 3000/4560/6064 -f 3286/4558/6065 3300/4544/6065 3249/4523/6065 -f 3315/4561/6066 3314/4562/6066 3300/4544/6066 -f 3063/898/6067 3094/4563/6067 3092/2735/6067 -f 3001/2963/6068 3000/4560/6068 2990/2560/6068 -f 3094/4563/6069 3093/4529/6069 3092/2735/6069 -f 3094/4563/6070 3181/2775/6070 3093/4529/6070 -f 3381/3068/6071 1480/3067/6071 1490/1412/6071 -f 3001/2963/6072 3028/2962/6072 3000/4560/6072 -f 3038/4564/6073 3060/4530/6073 3052/4535/6073 -f 3290/4565/6074 3274/3364/6074 3465/838/6074 -f 3274/3364/6075 3491/2468/6075 3465/838/6075 -f 3290/4565/6076 1109/4566/6076 3274/3364/6076 -f 3274/3364/6077 1109/4566/6077 1531/3427/6077 -f 3190/4567/6078 3197/2272/6078 3228/2446/6078 -f 3165/3027/6079 3261/4568/6079 3201/4569/6079 -f 3496/1097/6080 3290/4565/6080 3465/838/6080 -f 1109/4566/6081 3264/1115/6081 1631/4128/6081 -f 3236/1114/6082 1631/4128/6082 3264/1115/6082 -f 1730/3497/6083 1723/3156/6083 2949/3532/6083 -f 3061/4570/6084 3016/2961/6084 3017/4539/6084 -f 3061/4570/6085 3038/4564/6085 3016/2961/6085 -f 3061/4570/6086 3060/4530/6086 3038/4564/6086 -f 3264/1115/6087 1109/4566/6087 3290/4565/6087 -f 3122/4556/6088 3169/4571/6088 3134/4528/6088 -f 2982/4572/6089 3048/4140/6089 2981/4573/6089 -f 3217/4520/6090 3233/4555/6090 3168/4521/6090 -f 2980/2936/6091 3045/2277/6091 2998/2474/6091 -f 3496/1097/6092 3477/788/6092 3290/4565/6092 -f 1531/3427/6093 1109/4566/6093 1631/4128/6093 -f 3290/4565/6094 3477/788/6094 3264/1115/6094 -f 1493/234/6095 2469/730/6095 1494/729/6095 -f 3123/4491/6096 3157/4490/6096 3135/4444/6096 -f 2934/4574/6097 2938/4575/6097 2918/4576/6097 -f 3088/4516/6098 3087/1409/6098 3045/2277/6098 -f 3286/4558/6099 3315/4561/6099 3300/4544/6099 -f 3285/4546/6100 3299/4545/6100 3298/1735/6100 -f 27/397/6101 572/1962/6101 3350/3669/6101 -f 2990/2560/6102 2989/1884/6102 2429/1886/6102 -f 2402/2512/6103 2919/4577/6103 2403/2454/6103 -f 2136/1679/6104 1368/2889/6104 1367/3770/6104 -f 3013/4578/6105 3051/4579/6105 3037/4580/6105 -f 3364/2835/6106 781/2148/6106 2017/2157/6106 -f 3374/2436/6107 3346/4581/6107 3328/2437/6107 -f 3131/4582/6108 3166/4583/6108 3130/4537/6108 -f 3232/4584/6109 3233/4555/6109 3248/4550/6109 -f 3166/4583/6110 3176/4585/6110 3165/3027/6110 -f 3075/4586/6111 3082/4587/6111 3104/4588/6111 -f 3104/4588/6112 3131/4582/6112 3130/4537/6112 -f 3142/4589/6113 3101/1410/6113 3087/1409/6113 -f 3165/3027/6114 3176/4585/6114 3191/4590/6114 -f 3306/4591/6115 3382/2466/6115 3294/105/6115 -f 2965/4592/6116 2985/4593/6116 2984/4594/6116 -f 3296/4595/6117 3310/4596/6117 3267/4534/6117 -f 3260/4597/6118 3296/4595/6118 3267/4534/6118 -f 3178/4598/6119 3233/4599/6119 3232/4600/6119 -f 3165/3027/6120 3201/4569/6120 3154/3028/6120 -f 3028/2962/6121 3052/4535/6121 3026/4601/6121 -f 3376/4602/6122 3375/2513/6122 3347/4603/6122 -f 2927/3164/6123 2933/4604/6123 2945/3165/6123 -f 3027/4559/6124 3028/2962/6124 3026/4601/6124 -f 2990/2560/6125 3000/4560/6125 2989/1884/6125 -f 3331/4525/6126 3332/1653/6126 3350/3669/6126 -f 3129/4538/6127 3166/4583/6127 3155/3026/6127 -f 3048/4140/6128 3034/4171/6128 2981/4573/6128 -f 3163/4605/6129 3175/4606/6129 3101/1410/6129 -f 3414/2289/6130 3355/2288/6130 3393/4607/6130 -f 1491/2933/6131 3420/4376/6131 1492/4608/6131 -f 3090/4549/6132 3122/4556/6132 3121/4527/6132 -f 3142/4589/6133 3153/4609/6133 3101/1410/6133 -f 958/2507/6134 2921/3933/6134 2929/2508/6134 -f 1158/2171/6135 1415/2170/6135 1806/4610/6135 -f 3386/567/6136 331/525/6136 341/498/6136 -f 1806/4610/6137 3352/2347/6137 561/4611/6137 -f 3197/2272/6138 3190/4567/6138 3174/2273/6138 -f 3375/4532/6139 3376/2095/6139 3406/2012/6139 -f 3301/4612/6140 3315/4561/6140 3286/4558/6140 -f 3318/4613/6141 1652/3147/6141 1670/3245/6141 -f 3299/4545/6142 3314/4562/6142 3331/4614/6142 -f 3447/982/6143 708/2360/6143 1064/983/6143 -f 3300/4544/6144 3314/4562/6144 3299/4545/6144 -f 1415/2170/6145 3352/2347/6145 1806/4610/6145 -f 3352/2347/6146 3136/4615/6146 561/4611/6146 -f 3102/4616/6147 3070/4509/6147 3058/4172/6147 -f 3119/3865/6148 3132/3864/6148 3118/4617/6148 -f 3016/2961/6149 3038/4564/6149 3028/2962/6149 -f 3038/4564/6150 3052/4535/6150 3028/2962/6150 -f 3037/4461/6151 3050/2800/6151 3012/2799/6151 -f 3248/4550/6152 3285/4546/6152 3263/4618/6152 -f 3307/3738/6153 3327/4619/6153 3215/3739/6153 -f 3116/4620/6154 3129/4621/6154 3145/4622/6154 -f 3194/2549/6155 3218/548/6155 78/811/6155 -f 3232/4600/6156 3248/4623/6156 3247/4624/6156 -f 3362/4625/6157 3347/4603/6157 3312/3154/6157 -f 3282/4626/6158 3296/4595/6158 3260/4597/6158 -f 1329/2726/6159 282/217/6159 505/2602/6159 -f 3061/4570/6160 3106/4627/6160 3060/4530/6160 -f 3168/4521/6161 3178/4554/6161 3167/4628/6161 -f 3106/4627/6162 3090/4549/6162 3060/4530/6162 -f 2938/4629/6163 2934/4630/6163 2947/4631/6163 -f 3331/4525/6164 3350/3669/6164 3349/4632/6164 -f 3106/4627/6165 3122/4556/6165 3090/4549/6165 -f 3179/4633/6166 3169/4571/6166 3122/4556/6166 -f 3168/4521/6167 3167/4628/6167 3133/4557/6167 -f 3179/4633/6168 3203/4519/6168 3169/4571/6168 -f 3392/2994/6169 174/757/6169 3207/756/6169 -f 244/620/6170 2709/565/6170 3287/671/6170 -f 3143/4634/6171 3164/4635/6171 3114/4636/6171 -f 3215/3739/6172 3327/4619/6172 3295/4637/6172 -f 3269/4638/6173 3286/4558/6173 3250/4522/6173 -f 2989/1884/6174 3000/4560/6174 2976/2126/6174 -f 3269/4638/6175 3301/4612/6175 3286/4558/6175 -f 3071/4639/6176 3072/3861/6176 3103/4640/6176 -f 3163/4605/6177 3214/4209/6177 3197/4210/6177 -f 3285/4546/6178 3298/1735/6178 3263/4618/6178 -f 3203/4519/6179 3168/4521/6179 3169/4571/6179 -f 3244/4641/6180 3230/4486/6180 3200/4642/6180 -f 263/566/6181 2709/565/6181 244/620/6181 -f 3352/2347/6182 3238/2646/6182 3136/4615/6182 -f 3238/2646/6183 3221/4643/6183 3136/4615/6183 -f 1326/2758/6184 47/99/6184 3221/4271/6184 -f 3073/4644/6185 3116/4620/6185 3145/4622/6185 -f 2964/4645/6186 2965/4592/6186 2984/4594/6186 -f 3347/4603/6187 3362/4625/6187 3377/4646/6187 -f 2999/4647/6188 3013/4460/6188 2975/4465/6188 -f 3046/293/6189 3047/4515/6189 3045/2277/6189 -f 3238/2646/6190 3220/4648/6190 3221/4643/6190 -f 2962/294/6191 3046/293/6191 2980/2936/6191 -f 3181/2775/6192 3195/1932/6192 3158/4489/6192 -f 3299/4545/6193 3313/1736/6193 3298/1735/6193 -f 952/4649/6194 2921/3933/6194 958/2507/6194 -f 3072/4650/6195 3035/3135/6195 3073/4651/6195 -f 3011/4494/6196 3035/3135/6196 3072/4650/6196 -f 2985/4593/6197 3011/3595/6197 3025/3594/6197 -f 2984/4594/6198 2985/4593/6198 3025/3594/6198 -f 2966/4270/6199 2940/4423/6199 2921/3933/6199 -f 952/4649/6200 2966/4270/6200 2921/3933/6200 -f 3195/1932/6201 3194/4125/6201 3157/4490/6201 -f 2999/4647/6202 2975/4465/6202 2940/4423/6202 -f 3117/4652/6203 3131/4582/6203 3104/4588/6203 -f 3238/2646/6204 3319/4653/6204 3220/4648/6204 -f 2418/4654/6205 3076/4655/6205 2428/4656/6205 -f 3231/4657/6206 3232/4600/6206 3247/4624/6206 -f 3180/4658/6207 3179/4633/6207 3122/4556/6207 -f 3331/4614/6208 3330/4659/6208 3313/1736/6208 -f 2955/4660/6209 2965/4592/6209 2964/4645/6209 -f 3221/4643/6210 3220/4648/6210 3412/4661/6210 -f 3251/2385/6211 3250/4522/6211 3203/4519/6211 -f 3234/2993/6212 3251/2385/6212 3203/4519/6212 -f 3082/4587/6213 3117/4652/6213 3104/4588/6213 -f 3178/4598/6214 3232/4600/6214 3231/4657/6214 -f 3400/4662/6215 3401/3140/6215 575/3054/6215 -f 3299/4545/6216 3331/4614/6216 3313/1736/6216 -f 3330/4663/6217 3331/4525/6217 3349/4632/6217 -f 3071/4664/6218 3102/4616/6218 3058/4172/6218 -f 2929/2508/6219 2920/4503/6219 2910/2255/6219 -f 3229/4483/6220 3344/4482/6220 3259/4665/6220 -f 2988/4268/6221 3027/4559/6221 3026/4601/6221 -f 3251/2385/6222 3269/4638/6222 3250/4522/6222 -f 1269/2346/6223 3319/4653/6223 3238/2646/6223 -f 3319/4653/6224 3354/4666/6224 3220/4648/6224 -f 1648/3220/6225 1364/3219/6225 3412/4667/6225 -f 1645/2916/6226 1646/2967/6226 3208/3016/6226 -f 3245/4668/6227 3283/4669/6227 3261/4568/6227 -f 3027/4559/6228 2988/4268/6228 3000/4560/6228 -f 3373/4670/6229 3384/4671/6229 3361/3847/6229 -f 3216/337/6230 3245/4668/6230 3202/4672/6230 -f 2935/4502/6231 2934/4574/6231 2919/4577/6231 -f 3144/524/6232 3115/4673/6232 3102/4616/6232 -f 3382/2466/6233 3421/4212/6233 3404/4674/6233 -f 3220/4648/6234 3304/4675/6234 3412/4661/6234 -f 3312/3154/6235 3329/2435/6235 3297/4533/6235 -f 3145/523/6236 3155/3026/6236 3154/3028/6236 -f 3157/4490/6237 3170/4676/6237 3148/4677/6237 -f 2963/4678/6238 2973/4679/6238 2953/4680/6238 -f 2938/4629/6239 2947/4631/6239 2946/4681/6239 -f 2963/4678/6240 2953/4680/6240 2946/4682/6240 -f 3157/4490/6241 3148/4677/6241 3135/4444/6241 -f 3347/4603/6242 3375/2513/6242 3374/2436/6242 -f 3071/4664/6243 3058/4172/6243 3034/4171/6243 -f 1269/2346/6244 3407/4683/6244 3319/4653/6244 -f 3319/4653/6245 3407/4683/6245 3354/4666/6245 -f 3304/4675/6246 1648/4684/6246 3412/4661/6246 -f 2230/3974/6247 2261/1889/6247 2233/3983/6247 -f 3093/4529/6248 3158/4489/6248 3123/4491/6248 -f 570/4517/6249 3405/4542/6249 3385/2514/6249 -f 3202/4672/6250 3261/4568/6250 3165/3027/6250 -f 3114/4636/6251 3142/4589/6251 3088/4516/6251 -f 3167/4628/6252 3177/4685/6252 3156/4686/6252 -f 3262/336/6253 3283/4669/6253 3245/4668/6253 -f 1957/3832/6254 3391/4687/6254 3390/3833/6254 -f 3075/4586/6255 3104/4588/6255 3074/3134/6255 -f 1491/2933/6256 1492/4608/6256 1516/2964/6256 -f 3113/1220/6257 3139/3100/6257 3099/4688/6257 -f 3015/4689/6258 3014/4690/6258 2999/4647/6258 -f 2974/529/6259 2982/4572/6259 2954/4691/6259 -f 3354/4666/6260 3237/4692/6260 3220/4648/6260 -f 3220/4648/6261 3237/4692/6261 3304/4675/6261 -f 3153/4609/6262 3198/4693/6262 3163/4605/6262 -f 3405/4542/6263 3423/4541/6263 3385/2514/6263 -f 3059/3133/6264 3075/4586/6264 3074/3134/6264 -f 3014/4694/6265 3015/4695/6265 3013/4696/6265 -f 2725/4697/6266 2585/4247/6266 3384/4671/6266 -f 1872/1946/6267 1980/3289/6267 3506/1947/6267 -f 2975/4465/6268 3036/2801/6268 2986/2729/6268 -f 2954/4691/6269 2963/4678/6269 2946/4682/6269 -f 1369/2243/6270 243/2245/6270 1368/2889/6270 -f 3273/3515/6271 3407/3556/6271 1629/3229/6271 -f 3024/292/6272 3047/4515/6272 3046/293/6272 -f 2953/4680/6273 2962/294/6273 2961/2937/6273 -f 3118/4617/6274 3131/4582/6274 3117/4652/6274 -f 3372/2414/6275 3382/2466/6275 3404/4674/6275 -f 3093/4529/6276 3123/4491/6276 3092/2735/6276 -f 1993/1966/6277 2725/4698/6277 993/2786/6277 -f 3407/4683/6278 3183/4699/6278 3354/4666/6278 -f 3354/4666/6279 3183/4699/6279 3237/4692/6279 -f 3237/4692/6280 3353/4700/6280 3304/4675/6280 -f 3201/4569/6281 3200/4642/6281 3115/4673/6281 -f 3391/4687/6282 1957/3832/6282 3414/4701/6282 -f 3166/4583/6283 3165/3027/6283 3155/3026/6283 -f 3429/225/6284 2858/224/6284 2783/3021/6284 -f 3070/4509/6285 3143/4634/6285 3114/4636/6285 -f 3308/4702/6286 3327/4619/6286 3307/3738/6286 -f 559/1080/6287 353/1051/6287 1237/543/6287 -f 3423/4541/6288 3384/4671/6288 3373/4670/6288 -f 3407/4683/6289 3273/4703/6289 3183/4699/6289 -f 3353/4700/6290 1150/4704/6290 3304/4675/6290 -f 3403/4705/6291 1648/4684/6291 3304/4675/6291 -f 1150/4704/6292 3403/4705/6292 3304/4675/6292 -f 3403/4706/6293 3387/3042/6293 1648/4707/6293 -f 3330/4659/6294 3362/4625/6294 3312/3154/6294 -f 3034/4171/6295 3024/292/6295 2973/4679/6295 -f 3039/4708/6296 3017/4539/6296 3018/2905/6296 -f 3039/4708/6297 3061/4570/6297 3017/4539/6297 -f 1974/108/6298 3391/2413/6298 3413/2845/6298 -f 3391/4687/6299 3414/4701/6299 3413/4709/6299 -f 1477/3065/6300 3324/3108/6300 3367/3009/6300 -f 3200/4642/6301 3199/4710/6301 3164/4635/6301 -f 1976/4711/6302 3364/4712/6302 1489/4713/6302 -f 1652/3147/6303 3318/4613/6303 3334/3152/6303 -f 3259/4665/6304 3281/3740/6304 3215/3739/6304 -f 2918/4576/6305 2917/849/6305 2911/2357/6305 -f 2909/2415/6306 2918/4576/6306 2911/2357/6306 -f 3344/4482/6307 3308/4702/6307 3281/3740/6307 -f 3353/4700/6308 3237/4692/6308 3183/4699/6308 -f 2585/3101/6309 1993/1966/6309 1495/2913/6309 -f 3083/4714/6310 3106/4627/6310 3061/4570/6310 -f 853/4715/6311 851/1459/6311 2279/1800/6311 -f 3101/1410/6312 3175/4606/6312 3100/4127/6312 -f 3472/269/6313 2548/271/6313 3449/3612/6313 -f 3273/3515/6314 3334/3152/6314 3318/4613/6314 -f 1330/487/6315 492/276/6315 726/485/6315 -f 3393/4607/6316 2504/4716/6316 3414/2289/6316 -f 1976/109/6317 1977/2720/6317 3364/2835/6317 -f 3335/2429/6318 3336/314/6318 1669/862/6318 -f 3163/4605/6319 3259/4665/6319 3215/3739/6319 -f 2918/4576/6320 2938/4575/6320 2917/849/6320 -f 3170/1173/6321 3206/3209/6321 3193/4717/6321 -f 3170/4676/6322 3193/4718/6322 3148/4677/6322 -f 3423/4541/6323 2725/4697/6323 3384/4671/6323 -f 3356/4719/6324 3393/4607/6324 3355/2288/6324 -f 3411/4720/6325 3353/4700/6325 3183/4699/6325 -f 2936/3934/6326 2948/2728/6326 2955/3348/6326 -f 3163/4605/6327 3197/4210/6327 3175/4606/6327 -f 3360/4261/6328 3421/4212/6328 3382/2466/6328 -f 2975/4465/6329 3012/2799/6329 3036/2801/6329 -f 3412/4667/6330 1326/2758/6330 3221/4271/6330 -f 3413/4709/6331 2504/4721/6331 2712/4722/6331 -f 2724/1977/6332 3410/4723/6332 1977/2720/6332 -f 3073/4651/6333 3130/4537/6333 3116/4536/6333 -f 3273/4703/6334 3302/4724/6334 3183/4699/6334 -f 3183/4699/6335 3302/4724/6335 3411/4720/6335 -f 3214/4209/6336 3215/3739/6336 3243/4725/6336 -f 1921/3795/6337 3321/1941/6337 1922/1940/6337 -f 575/1738/6338 578/1468/6338 2500/1651/6338 -f 3414/4701/6339 2504/4721/6339 3413/4709/6339 -f 3252/2149/6340 781/2148/6340 3364/2835/6340 -f 3302/4726/6341 3273/3515/6341 3318/4613/6341 -f 2414/460/6342 2413/4439/6342 2407/1283/6342 -f 3411/4720/6343 3389/4727/6343 3353/4700/6343 -f 3321/1941/6344 3356/4728/6344 3355/1939/6344 -f 576/1654/6345 3301/4070/6345 3270/2518/6345 -f 2005/237/6346 1975/110/6346 1976/109/6346 -f 3413/2845/6347 2712/1976/6347 1958/232/6347 -f 3384/4671/6348 3422/3848/6348 3361/3847/6348 -f 1670/3245/6349 3302/4726/6349 3318/4613/6349 -f 3363/4729/6350 3320/4730/6350 3302/4724/6350 -f 3320/4730/6351 3411/4720/6351 3302/4724/6351 -f 3389/4727/6352 1150/4704/6352 3353/4700/6352 -f 1150/4704/6353 3040/4731/6353 3403/4705/6353 -f 3040/4732/6354 3351/4733/6354 3403/4706/6354 -f 3351/4733/6355 1694/2428/6355 3403/4706/6355 -f 3403/4706/6356 1694/2428/6356 1688/3018/6356 -f 3361/3847/6357 3383/3849/6357 3360/4261/6357 -f 2927/3164/6358 2938/4629/6358 2933/4604/6358 -f 3349/4734/6359 3348/4735/6359 3330/4659/6359 -f 3180/4658/6360 3203/4519/6360 3179/4633/6360 -f 3180/4658/6361 3234/2993/6361 3203/4519/6361 -f 2712/4722/6362 3410/4736/6362 2724/4737/6362 -f 3410/4723/6363 3316/4738/6363 3364/2835/6363 -f 1977/2720/6364 3410/4723/6364 3364/2835/6364 -f 3316/4738/6365 3252/2149/6365 3364/2835/6365 -f 2933/4604/6366 2938/4629/6366 2945/3165/6366 -f 2938/4629/6367 2946/4681/6367 2945/3165/6367 -f 3164/4635/6368 3199/4710/6368 3153/4609/6368 -f 3320/4730/6369 3389/4727/6369 3411/4720/6369 -f 2967/4739/6370 2966/4270/6370 2956/4740/6370 -f 3384/4671/6371 2585/4247/6371 3422/3848/6371 -f 3360/4261/6372 3382/2466/6372 3343/4741/6372 -f 2938/4575/6373 2927/850/6373 2917/849/6373 -f 3270/2387/6374 3269/4638/6374 3251/2385/6374 -f 3337/4093/6375 3321/1941/6375 1921/3795/6375 -f 3269/4638/6376 3270/2387/6376 3301/4612/6376 -f 2504/4721/6377 673/4742/6377 2712/4722/6377 -f 673/4742/6378 3410/4736/6378 2712/4722/6378 -f 3276/4743/6379 1572/4744/6379 3252/4745/6379 -f 3088/4516/6380 3142/4589/6380 3087/1409/6380 -f 3145/523/6381 3154/3028/6381 3144/524/6381 -f 3040/4731/6382 1150/4704/6382 3389/4727/6382 -f 3335/4746/6383 1694/4747/6383 3351/4748/6383 -f 3347/4603/6384 3374/2436/6384 3329/2435/6384 -f 3129/4538/6385 3130/4537/6385 3166/4583/6385 -f 3321/1941/6386 3337/4093/6386 3356/4728/6386 -f 3393/4607/6387 673/4749/6387 2504/4716/6387 -f 2946/4682/6388 2953/4680/6388 2945/4006/6388 -f 951/4750/6389 2966/4270/6389 952/4649/6389 -f 3154/3028/6390 3201/4569/6390 3144/524/6390 -f 507/4751/6391 3363/4752/6391 3302/4726/6391 -f 1474/4548/6392 3184/3130/6392 1481/3085/6392 -f 3385/2514/6393 3423/4541/6393 3373/4670/6393 -f 3261/4568/6394 3260/4597/6394 3201/4569/6394 -f 3246/335/6395 3231/4753/6395 3247/4754/6395 -f 3245/4668/6396 3261/4568/6396 3202/4672/6396 -f 572/1962/6397 3349/4632/6397 3350/3669/6397 -f 1492/2864/6398 2469/730/6398 1493/234/6398 -f 3337/4093/6399 3357/4755/6399 3356/4728/6399 -f 3356/4728/6400 3357/4755/6400 3393/4756/6400 -f 3357/4755/6401 3394/4757/6401 3393/4756/6401 -f 3393/4756/6402 3394/4757/6402 673/4742/6402 -f 673/4742/6403 3171/4758/6403 3410/4736/6403 -f 3410/4723/6404 2444/4759/6404 3316/4738/6404 -f 3316/4738/6405 3276/3070/6405 3252/2149/6405 -f 2940/4423/6406 2975/4465/6406 2948/2728/6406 -f 2940/4423/6407 2936/3934/6407 2921/3933/6407 -f 3092/2735/6408 3091/1788/6408 3054/1787/6408 -f 3192/2546/6409 3178/4554/6409 3231/4753/6409 -f 3222/367/6410 3363/4760/6410 507/328/6410 -f 3222/367/6411 3275/3428/6411 3320/4761/6411 -f 3363/4729/6412 3222/4762/6412 3320/4730/6412 -f 3219/4763/6413 3389/4727/6413 3320/4730/6413 -f 3271/4764/6414 3040/4731/6414 3389/4727/6414 -f 3040/4732/6415 3271/4765/6415 3351/4733/6415 -f 3271/4764/6416 3335/4766/6416 3351/4767/6416 -f 843/1500/6417 3388/1502/6417 894/1531/6417 -f 3192/2546/6418 3216/337/6418 3191/4590/6418 -f 3343/4741/6419 3382/2466/6419 3306/4591/6419 -f 3177/4685/6420 3178/4554/6420 3192/2546/6420 -f 3249/4523/6421 3300/4544/6421 3285/4546/6421 -f 3337/4093/6422 3338/4768/6422 3357/4755/6422 -f 673/4749/6423 1192/4769/6423 3171/4770/6423 -f 3171/4758/6424 2444/4771/6424 3410/4736/6424 -f 3170/1173/6425 92/1063/6425 3206/3209/6425 -f 3072/3861/6426 3073/4644/6426 3103/4640/6426 -f 3178/4554/6427 3177/4685/6427 3167/4628/6427 -f 3275/4772/6428 3219/4763/6428 3320/4730/6428 -f 3219/4763/6429 3271/4764/6429 3389/4727/6429 -f 3303/4773/6430 3317/4774/6430 3271/4764/6430 -f 3271/4764/6431 3317/4774/6431 3335/4766/6431 -f 326/1015/6432 1423/149/6432 170/1343/6432 -f 3133/4557/6433 3167/4628/6433 3146/3863/6433 -f 3297/4533/6434 3329/2435/6434 3311/4775/6434 -f 3288/2449/6435 3338/4768/6435 3337/4093/6435 -f 3357/4776/6436 3395/4777/6436 3394/4778/6436 -f 3395/4777/6437 1192/4769/6437 673/4749/6437 -f 3394/4778/6438 3395/4777/6438 673/4749/6438 -f 3171/4758/6439 3419/4779/6439 2444/4771/6439 -f 2953/4680/6440 2961/2937/6440 2945/4006/6440 -f 3014/4690/6441 3013/4460/6441 2999/4647/6441 -f 2925/3824/6442 2914/4780/6442 2915/3582/6442 -f 3335/2429/6443 3317/4781/6443 3336/314/6443 -f 3470/281/6444 3476/355/6444 3497/656/6444 -f 3103/4640/6445 3073/4644/6445 3145/4622/6445 -f 3084/4782/6446 3108/4783/6446 3124/4784/6446 -f 3149/2564/6447 3181/2775/6447 3094/4563/6447 -f 3224/4785/6448 1498/3195/6448 3196/4786/6448 -f 1889/2448/6449 3253/4298/6449 3288/2449/6449 -f 3253/4298/6450 3277/4787/6450 3288/2449/6450 -f 3288/2449/6451 3277/4787/6451 3338/4768/6451 -f 3419/4788/6452 3171/4770/6452 1192/4769/6452 -f 1562/3071/6453 3276/3070/6453 3316/4738/6453 -f 3115/4673/6454 3200/4642/6454 3143/4634/6454 -f 3144/524/6455 3201/4569/6455 3115/4673/6455 -f 3053/4789/6456 3061/4570/6456 3039/4708/6456 -f 3333/1547/6457 3219/4763/6457 3275/4772/6457 -f 3303/4773/6458 3271/4764/6458 3219/4763/6458 -f 3184/4790/6459 3196/3774/6459 1475/4791/6459 -f 2428/4656/6460 3076/4655/6460 3084/4782/6460 -f 3108/4792/6461 3150/3059/6461 3124/3031/6461 -f 3053/4789/6462 3083/4714/6462 3061/4570/6462 -f 3277/4787/6463 3322/4793/6463 3338/4768/6463 -f 3338/4768/6464 3322/4793/6464 3357/4755/6464 -f 3357/4755/6465 3365/4794/6465 3395/4795/6465 -f 2889/4796/6466 3419/4779/6466 1192/4797/6466 -f 2444/4771/6467 3409/4798/6467 3316/4799/6467 -f 3409/4798/6468 1562/4800/6468 3316/4799/6468 -f 953/2386/6469 3251/2385/6469 3234/2993/6469 -f 2920/4503/6470 2919/4577/6470 2402/2512/6470 -f 2939/2465/6471 2955/3348/6471 2964/527/6471 -f 531/4801/6472 3333/1547/6472 3275/4772/6472 -f 3333/1547/6473 3303/4773/6473 3219/4763/6473 -f 3118/4617/6474 3117/4652/6474 3082/4587/6474 -f 3000/4560/6475 2988/4268/6475 2976/2126/6475 -f 3076/4655/6476 3108/4783/6476 3084/4782/6476 -f 3107/4802/6477 3122/4556/6477 3106/4627/6477 -f 1831/937/6478 1599/939/6478 1839/2181/6478 -f 3277/4787/6479 3289/4803/6479 3322/4793/6479 -f 3322/4793/6480 3365/4794/6480 3357/4755/6480 -f 3365/4794/6481 3358/4804/6481 3395/4795/6481 -f 3358/4804/6482 2889/4796/6482 1192/4797/6482 -f 3395/4795/6483 3358/4804/6483 1192/4797/6483 -f 3419/4779/6484 3379/4805/6484 2444/4771/6484 -f 3422/3848/6485 2469/3908/6485 3421/4212/6485 -f 3191/4590/6486 3216/337/6486 3202/4672/6486 -f 3147/4806/6487 3180/4658/6487 3122/4556/6487 -f 3063/898/6488 987/1092/6488 3094/4563/6488 -f 3303/4773/6489 2279/4807/6489 3317/4774/6489 -f 2967/4739/6490 2988/4268/6490 2966/4270/6490 -f 3064/4808/6491 2418/4654/6491 2426/4809/6491 -f 3085/4810/6492 3076/4655/6492 2418/4654/6492 -f 3085/4810/6493 3108/4783/6493 3076/4655/6493 -f 3085/4810/6494 3109/4811/6494 3108/4783/6494 -f 3109/4811/6495 3150/4812/6495 3108/4783/6495 -f 3404/4377/6496 1491/2933/6496 1480/2932/6496 -f 3253/4298/6497 3289/4803/6497 3277/4787/6497 -f 3379/4805/6498 3409/4798/6498 2444/4771/6498 -f 3081/4510/6499 3047/4515/6499 3024/292/6499 -f 3048/4140/6500 3071/4664/6500 3034/4171/6500 -f 3204/1982/6501 3234/2993/6501 3180/4658/6501 -f 3333/1547/6502 531/4801/6502 866/1546/6502 -f 3388/1502/6503 3303/4773/6503 3333/1547/6503 -f 3388/1502/6504 853/1501/6504 3303/4773/6504 -f 3265/4813/6505 2639/4225/6505 1868/4290/6505 -f 3156/4686/6506 3166/4583/6506 3131/4582/6506 -f 3156/4686/6507 3176/4585/6507 3166/4583/6507 -f 2949/3532/6508 2968/4814/6508 2446/3567/6508 -f 3030/4158/6509 3064/4808/6509 2426/4809/6509 -f 3064/4808/6510 3085/4810/6510 2418/4654/6510 -f 3493/399/6511 3439/2120/6511 3440/2538/6511 -f 2639/4225/6512 3265/4813/6512 3253/4298/6512 -f 2660/3047/6513 2639/4225/6513 3253/4298/6513 -f 3253/4298/6514 3265/4813/6514 3289/4803/6514 -f 3358/4804/6515 2849/4815/6515 2889/4796/6515 -f 2661/4816/6516 1562/4800/6516 3409/4798/6516 -f 92/1063/6517 601/1428/6517 3206/3209/6517 -f 3081/4510/6518 3114/4636/6518 3088/4516/6518 -f 1511/3061/6519 3150/3059/6519 1481/3085/6519 -f 3167/4628/6520 3156/4686/6520 3132/3864/6520 -f 894/1531/6521 3388/1502/6521 3333/1547/6521 -f 3303/4773/6522 853/1501/6522 2279/4807/6522 -f 3077/4817/6523 3064/4808/6523 3030/4158/6523 -f 3151/4818/6524 1474/4819/6524 3109/4811/6524 -f 2768/3629/6525 2062/2136/6525 2808/2135/6525 -f 3322/4793/6526 3323/4820/6526 3365/4794/6526 -f 3323/4820/6527 3358/4804/6527 3365/4794/6527 -f 2889/4796/6528 3379/4805/6528 3419/4779/6528 -f 493/327/6529 3222/367/6529 507/328/6529 -f 3081/4510/6530 3088/4516/6530 3047/4515/6530 -f 2935/1577/6531 2939/1579/6531 2954/4821/6531 -f 2920/4503/6532 2935/4502/6532 2919/4577/6532 -f 3129/4621/6533 3155/4822/6533 3145/4622/6533 -f 2978/66/6534 2995/4368/6534 2205/3867/6534 -f 2298/64/6535 2978/66/6535 2205/3867/6535 -f 3020/4160/6536 3077/4817/6536 3030/4158/6536 -f 3151/4818/6537 3109/4811/6537 3085/4810/6537 -f 1474/4819/6538 3151/4818/6538 3184/4790/6538 -f 3265/4813/6539 3322/4793/6539 3289/4803/6539 -f 2849/4815/6540 3379/4805/6540 2889/4796/6540 -f 3350/3669/6541 33/446/6541 27/397/6541 -f 3229/4483/6542 3259/4665/6542 3198/4693/6542 -f 2955/4660/6543 2939/4823/6543 2928/4824/6543 -f 3115/4673/6544 3143/4634/6544 3070/4509/6544 -f 3215/3739/6545 3295/4637/6545 3243/4725/6545 -f 2919/4577/6546 2934/4574/6546 2918/4576/6546 -f 3048/4140/6547 3025/2485/6547 3049/4825/6547 -f 3077/4817/6548 3085/4810/6548 3064/4808/6548 -f 3177/4685/6549 3176/4585/6549 3156/4686/6549 -f 3324/4826/6550 3266/4827/6550 3255/4828/6550 -f 3323/4820/6551 3380/4829/6551 3358/4804/6551 -f 3358/4804/6552 3380/4829/6552 2849/4815/6552 -f 3380/4829/6553 1074/4830/6553 2849/4815/6553 -f 1074/4830/6554 3379/4805/6554 2849/4815/6554 -f 3379/4805/6555 1049/4831/6555 3409/4798/6555 -f 2661/4832/6556 3386/567/6556 1623/2948/6556 -f 1492/4608/6557 3420/4376/6557 2469/4833/6557 -f 3312/3154/6558 3347/4603/6558 3329/2435/6558 -f 3200/4642/6559 3229/4483/6559 3199/4710/6559 -f 2249/4204/6560 2341/4513/6560 1221/3916/6560 -f 3132/3864/6561 3156/4686/6561 3131/4582/6561 -f 3083/4714/6562 3107/4802/6562 3106/4627/6562 -f 3147/4806/6563 3122/4556/6563 3107/4802/6563 -f 3159/4834/6564 3085/4810/6564 3077/4817/6564 -f 3159/4834/6565 3151/4818/6565 3085/4810/6565 -f 3151/4818/6566 3196/3774/6566 3184/4790/6566 -f 3265/4813/6567 1860/4835/6567 3322/4793/6567 -f 3322/4793/6568 1860/4835/6568 3323/4820/6568 -f 3323/4820/6569 3366/4836/6569 3380/4829/6569 -f 1049/4831/6570 2661/4816/6570 3409/4798/6570 -f 1954/3640/6571 2610/3637/6571 2807/3949/6571 -f 2939/2465/6572 2974/529/6572 2954/4691/6572 -f 2910/2255/6573 2920/4503/6573 2402/2512/6573 -f 3377/4646/6574 3376/4602/6574 3347/4603/6574 -f 3263/4618/6575 3298/1735/6575 3268/4504/6575 -f 3003/4837/6576 3020/4160/6576 3002/4838/6576 -f 3110/4839/6577 3077/4817/6577 3020/4160/6577 -f 1860/3840/6578 1859/3794/6578 1853/2470/6578 -f 3246/335/6579 3247/4754/6579 3262/336/6579 -f 3283/4669/6580 3282/4626/6580 3260/4597/6580 -f 3110/4839/6581 3020/4160/6581 3003/4837/6581 -f 1860/4835/6582 1861/1915/6582 3323/4820/6582 -f 1074/4830/6583 2736/4840/6583 3379/4805/6583 -f 2736/4840/6584 1049/4831/6584 3379/4805/6584 -f 2983/528/6585 2982/4572/6585 2974/529/6585 -f 3153/4609/6586 3163/4605/6586 3101/1410/6586 -f 3377/2567/6587 571/2087/6587 3376/2095/6587 -f 3192/2546/6588 3231/4753/6588 3246/335/6588 -f 3015/4689/6589 2988/4268/6589 3026/4601/6589 -f 2994/4841/6590 3004/4842/6590 3003/4837/6590 -f 3004/4842/6591 3065/4843/6591 3003/4837/6591 -f 3065/4843/6592 3110/4839/6592 3003/4837/6592 -f 3110/4839/6593 3159/4834/6593 3077/4817/6593 -f 1916/3190/6594 1449/2725/6594 1264/2747/6594 -f 987/1092/6595 3149/2564/6595 3094/4563/6595 -f 1861/1915/6596 3366/4836/6596 3323/4820/6596 -f 3415/4844/6597 3380/4829/6597 3366/4836/6597 -f 3339/4845/6598 3415/4844/6598 3366/4836/6598 -f 3380/4829/6599 3415/4844/6599 1074/4830/6599 -f 2661/4832/6600 2709/565/6600 3386/567/6600 -f 3184/3130/6601 1475/4846/6601 1482/3129/6601 -f 613/2777/6602 3195/1932/6602 3181/2775/6602 -f 2427/4110/6603 2418/4847/6603 2428/4848/6603 -f 2995/4849/6604 3004/4842/6604 2994/4841/6604 -f 3185/3772/6605 3151/4818/6605 3159/4834/6605 -f 3185/3772/6606 3196/3774/6606 3151/4818/6606 -f 3200/4642/6607 3164/4635/6607 3143/4634/6607 -f 1326/2758/6608 3412/4667/6608 1364/3219/6608 -f 2736/4840/6609 1074/4830/6609 3415/4844/6609 -f 1049/4831/6610 189/4850/6610 2661/4816/6610 -f 2983/528/6611 3048/4140/6611 2982/4572/6611 -f 3132/3864/6612 3131/4582/6612 3118/4617/6612 -f 1562/3171/6613 2661/4832/6613 1623/2948/6613 -f 3029/578/6614 3018/2905/6614 955/2175/6614 -f 3029/578/6615 3039/4708/6615 3018/2905/6615 -f 3041/4851/6616 3065/4843/6616 3004/4842/6616 -f 3065/4843/6617 3096/4852/6617 3110/4839/6617 -f 3160/4853/6618 3159/4834/6618 3110/4839/6618 -f 2427/4166/6619 2426/4854/6619 2418/4855/6619 -f 3339/4845/6620 3396/2917/6620 3415/4844/6620 -f 1645/2916/6621 2736/4840/6621 3415/4844/6621 -f 3396/2917/6622 1645/2916/6622 3415/4844/6622 -f 2736/4840/6623 3235/4856/6623 1049/4831/6623 -f 3235/4856/6624 189/4850/6624 1049/4831/6624 -f 189/4857/6625 2709/565/6625 2661/4832/6625 -f 3104/4588/6626 3130/4537/6626 3073/4651/6626 -f 2940/4423/6627 2948/2728/6627 2936/3934/6627 -f 3135/4444/6628 3107/4802/6628 3083/4714/6628 -f 3135/4444/6629 3148/4677/6629 3107/4802/6629 -f 3148/4677/6630 3147/4806/6630 3107/4802/6630 -f 2978/4858/6631 3021/4859/6631 2995/4849/6631 -f 3021/4859/6632 3004/4842/6632 2995/4849/6632 -f 3021/4859/6633 3041/4851/6633 3004/4842/6633 -f 3096/4852/6634 3160/4853/6634 3110/4839/6634 -f 1704/2988/6635 1688/3018/6635 1694/2428/6635 -f 1861/1915/6636 3339/4845/6636 3366/4836/6636 -f 3208/3016/6637 2736/4840/6637 1645/2916/6637 -f 3344/4482/6638 3281/3740/6638 3259/4665/6638 -f 3262/336/6639 3245/4668/6639 3216/337/6639 -f 2956/4740/6640 2966/4270/6640 951/4750/6640 -f 3193/4718/6641 3180/4658/6641 3147/4806/6641 -f 3160/4853/6642 3185/3772/6642 3159/4834/6642 -f 1219/45/6643 1221/3854/6643 2341/43/6643 -f 3208/3016/6644 3235/4856/6644 2736/4840/6644 -f 3048/4140/6645 3049/4825/6645 3071/4664/6645 -f 3404/4674/6646 3421/4212/6646 3420/4540/6646 -f 2954/4691/6647 2946/4682/6647 2947/4860/6647 -f 2413/4439/6648 2306/3467/6648 2908/3466/6648 -f 2968/4861/6649 3005/4862/6649 2978/4858/6649 -f 3005/4862/6650 3021/4859/6650 2978/4858/6650 -f 3209/4863/6651 3185/3772/6651 3160/4853/6651 -f 3209/4863/6652 3224/3773/6652 3185/3772/6652 -f 3224/4785/6653 3239/4479/6653 3223/4478/6653 -f 3254/4864/6654 3255/4828/6654 3266/4827/6654 -f 1476/3066/6655 3266/4492/6655 3324/3108/6655 -f 3191/4590/6656 3202/4672/6656 3165/3027/6656 -f 3314/4524/6657 3315/4069/6657 3332/1653/6657 -f 2423/2030/6658 130/2032/6658 2575/3627/6658 -f 3163/4605/6659 3215/3739/6659 3214/4209/6659 -f 3249/4523/6660 3248/4550/6660 3233/4555/6660 -f 2912/4865/6661 2931/4866/6661 2930/4867/6661 -f 2931/4868/6662 2957/4869/6662 2949/3532/6662 -f 2930/4867/6663 2931/4866/6663 2949/4870/6663 -f 2949/4870/6664 2957/4871/6664 2968/4861/6664 -f 3041/4851/6665 3111/4872/6665 3065/4843/6665 -f 3111/4872/6666 3096/4852/6666 3065/4843/6666 -f 3209/4863/6667 3239/4873/6667 3224/3773/6667 -f 3239/4873/6668 3255/4828/6668 3254/4864/6668 -f 1181/418/6669 3467/1591/6669 812/2103/6669 -f 1181/4874/6670 1207/333/6670 3467/4875/6670 -f 3341/4876/6671 3340/4877/6671 3367/4878/6671 -f 3324/4826/6672 3341/4876/6672 3367/4878/6672 -f 2953/4680/6673 3024/292/6673 2962/294/6673 -f 3235/4856/6674 3418/4879/6674 189/4850/6674 -f 3418/4880/6675 3287/671/6675 189/4857/6675 -f 189/4857/6676 3287/671/6676 2709/565/6676 -f 2982/4572/6677 2981/4573/6677 2963/4678/6677 -f 3011/4494/6678 3036/2801/6678 3035/3135/6678 -f 2922/4881/6679 2912/4865/6679 2371/4882/6679 -f 2912/4865/6680 2922/4881/6680 2931/4866/6680 -f 2958/4883/6681 2968/4861/6681 2957/4871/6681 -f 2958/4883/6682 3005/4862/6682 2968/4861/6682 -f 3111/4872/6683 3160/4853/6683 3096/4852/6683 -f 3172/4884/6684 3209/4863/6684 3160/4853/6684 -f 3209/4863/6685 3255/4828/6685 3239/4873/6685 -f 3283/4669/6686 3260/4597/6686 3261/4568/6686 -f 1498/3195/6687 3223/4478/6687 1499/3230/6687 -f 1805/2467/6688 3491/2468/6688 3274/3364/6688 -f 2922/4881/6689 2371/4882/6689 2902/4885/6689 -f 1019/4886/6690 2922/4881/6690 2902/4885/6690 -f 3042/4887/6691 3005/4862/6691 2958/4883/6691 -f 3042/4887/6692 3021/4859/6692 3005/4862/6692 -f 3021/4859/6693 3055/4888/6693 3041/4851/6693 -f 3055/4888/6694 3078/4889/6694 3041/4851/6694 -f 3078/4889/6695 3111/4872/6695 3041/4851/6695 -f 3161/4890/6696 3160/4853/6696 3111/4872/6696 -f 3161/4890/6697 3172/4884/6697 3160/4853/6697 -f 3172/4884/6698 3225/4891/6698 3209/4863/6698 -f 3278/4892/6699 3255/4828/6699 3209/4863/6699 -f 3291/4893/6700 3324/4826/6700 3255/4828/6700 -f 3291/4893/6701 3341/4876/6701 3324/4826/6701 -f 3341/4876/6702 3368/4894/6702 3340/4877/6702 -f 2928/4501/6703 2936/3934/6703 2955/3348/6703 -f 458/4895/6704 3235/4856/6704 3208/3016/6704 -f 458/4895/6705 3418/4879/6705 3235/4856/6705 -f 216/3858/6706 2354/4086/6706 2337/3572/6706 -f 954/577/6707 3054/1787/6707 3029/578/6707 -f 3199/4710/6708 3229/4483/6708 3198/4693/6708 -f 2941/4896/6709 2931/4866/6709 2922/4881/6709 -f 2941/4896/6710 2957/4871/6710 2931/4866/6710 -f 2941/4896/6711 2958/4883/6711 2957/4871/6711 -f 3042/4887/6712 3055/4888/6712 3021/4859/6712 -f 3278/4892/6713 3291/4893/6713 3255/4828/6713 -f 3368/3112/6714 3397/2180/6714 1486/2877/6714 -f 3105/4526/6715 3134/4528/6715 3120/4897/6715 -f 3050/2800/6716 3059/3133/6716 3036/2801/6716 -f 3418/4880/6717 3095/682/6717 3287/671/6717 -f 3114/4636/6718 3164/4635/6718 3142/4589/6718 -f 3164/4635/6719 3153/4609/6719 3142/4589/6719 -f 2934/4630/6720 2935/1577/6720 2947/4631/6720 -f 2982/4572/6721 2963/4678/6721 2954/4691/6721 -f 3198/4693/6722 3259/4665/6722 3163/4605/6722 -f 2900/4898/6723 2913/4899/6723 1019/4886/6723 -f 2913/4899/6724 2922/4881/6724 1019/4886/6724 -f 3006/4900/6725 3042/4887/6725 2958/4883/6725 -f 3186/4901/6726 3225/4891/6726 3172/4884/6726 -f 3291/4893/6727 3398/4902/6727 3341/4876/6727 -f 3398/4902/6728 3368/4894/6728 3341/4876/6728 -f 3368/4894/6729 3398/4902/6729 3397/4903/6729 -f 3392/2994/6730 458/4895/6730 3208/3016/6730 -f 3103/522/6731 3144/524/6731 3102/4616/6731 -f 3102/4616/6732 3115/4673/6732 3070/4509/6732 -f 2937/4904/6733 2941/4896/6733 2922/4881/6733 -f 3066/4905/6734 3078/4889/6734 3055/4888/6734 -f 3137/4906/6735 3161/4890/6735 3111/4872/6735 -f 3225/4891/6736 3278/4892/6736 3209/4863/6736 -f 3291/4893/6737 3399/4907/6737 3398/4902/6737 -f 3392/2994/6738 3207/756/6738 458/4895/6738 -f 2935/1577/6739 2954/4821/6739 2947/4631/6739 -f 3071/4664/6740 3103/522/6740 3102/4616/6740 -f 3281/3740/6741 3308/4702/6741 3307/3738/6741 -f 3049/3596/6742 3072/3861/6742 3071/4639/6742 -f 3169/4571/6743 3168/4521/6743 3134/4528/6743 -f 3217/4520/6744 3249/4523/6744 3233/4555/6744 -f 2903/4908/6745 2913/4899/6745 2900/4898/6745 -f 2937/4904/6746 2922/4881/6746 2913/4899/6746 -f 3007/4909/6747 2958/4883/6747 2941/4896/6747 -f 3007/4909/6748 3006/4900/6748 2958/4883/6748 -f 3066/4905/6749 3055/4888/6749 3042/4887/6749 -f 3097/4910/6750 3078/4889/6750 3066/4905/6750 -f 3125/4911/6751 3111/4872/6751 3078/4889/6751 -f 3097/4910/6752 3125/4911/6752 3078/4889/6752 -f 3125/4911/6753 3137/4906/6753 3111/4872/6753 -f 3187/4912/6754 3186/4901/6754 3172/4884/6754 -f 3187/4912/6755 3210/4913/6755 3186/4901/6755 -f 3210/4913/6756 3225/4891/6756 3186/4901/6756 -f 3256/4914/6757 3278/4892/6757 3225/4891/6757 -f 1867/4245/6758 2639/4225/6758 2659/2882/6758 -f 458/4895/6759 3207/756/6759 3418/4879/6759 -f 1868/3776/6760 1859/3794/6760 3265/3839/6760 -f 3054/1787/6761 3039/4708/6761 3029/578/6761 -f 3054/1787/6762 3053/4789/6762 3039/4708/6762 -f 2937/4904/6763 2969/4915/6763 2941/4896/6763 -f 2969/4915/6764 3007/4909/6764 2941/4896/6764 -f 3007/4909/6765 3008/4916/6765 3006/4900/6765 -f 3006/4900/6766 3066/4905/6766 3042/4887/6766 -f 3256/4914/6767 3291/4893/6767 3278/4892/6767 -f 3399/4907/6768 3397/4903/6768 3398/4902/6768 -f 781/2148/6769 1572/2150/6769 2046/2265/6769 -f 3207/4917/6770 3378/2953/6770 3418/4880/6770 -f 3378/2953/6771 3408/4918/6771 3095/682/6771 -f 3418/4880/6772 3378/2953/6772 3095/682/6772 -f 3095/682/6773 3408/4918/6773 252/670/6773 -f 2970/4919/6774 2969/4915/6774 2937/4904/6774 -f 2950/4920/6775 2970/4919/6775 2937/4904/6775 -f 2970/4919/6776 3007/4909/6776 2969/4915/6776 -f 2970/4919/6777 3009/4921/6777 3007/4909/6777 -f 3009/4921/6778 3008/4916/6778 3007/4909/6778 -f 3008/4916/6779 3043/4922/6779 3006/4900/6779 -f 3043/4922/6780 3066/4905/6780 3006/4900/6780 -f 3043/4922/6781 3056/4923/6781 3066/4905/6781 -f 3056/4923/6782 3086/4924/6782 3066/4905/6782 -f 3086/4924/6783 3097/4910/6783 3066/4905/6783 -f 3126/4925/6784 3125/4911/6784 3097/4910/6784 -f 3126/4925/6785 3137/4906/6785 3125/4911/6785 -f 3256/4914/6786 3225/4891/6786 3210/4913/6786 -f 3416/4926/6787 3397/4903/6787 3399/4907/6787 -f 2261/1889/6788 2230/3974/6788 2193/847/6788 -f 2819/2954/6789 3378/2953/6789 3207/4917/6789 -f 3408/4918/6790 234/760/6790 252/670/6790 -f 2403/2454/6791 2919/4577/6791 2909/2415/6791 -f 3205/1983/6792 3204/1982/6792 3180/4658/6792 -f 2923/4927/6793 2913/4899/6793 2903/4908/6793 -f 2923/4927/6794 2937/4904/6794 2913/4899/6794 -f 2923/4927/6795 2950/4920/6795 2937/4904/6795 -f 3009/4928/6796 3022/4929/6796 3008/4930/6796 -f 3256/4914/6797 3325/4931/6797 3291/4893/6797 -f 3325/4931/6798 3399/4907/6798 3291/4893/6798 -f 3416/4932/6799 1487/2949/6799 3397/4933/6799 -f 3193/4718/6800 3205/1983/6800 3180/4658/6800 -f 1849/3270/6801 2249/4204/6801 2815/3250/6801 -f 3408/4918/6802 235/824/6802 234/760/6802 -f 572/1962/6803 3348/2147/6803 3349/4632/6803 -f 3149/2564/6804 614/2776/6804 3181/2775/6804 -f 2942/4934/6805 2950/4920/6805 2923/4927/6805 -f 2979/4935/6806 2970/4919/6806 2950/4920/6806 -f 2979/4935/6807 2996/4936/6807 2970/4919/6807 -f 3031/4937/6808 3009/4928/6808 2970/4938/6808 -f 2996/4939/6809 3031/4937/6809 2970/4938/6809 -f 3031/4937/6810 3022/4929/6810 3009/4928/6810 -f 3112/4940/6811 3097/4910/6811 3086/4924/6811 -f 3097/4941/6812 3112/4942/6812 3126/4943/6812 -f 3257/4944/6813 3256/4914/6813 3210/4913/6813 -f 3257/4944/6814 3292/4945/6814 3256/4914/6814 -f 3417/3056/6815 3416/4926/6815 3399/4907/6815 -f 3417/3056/6816 1164/4946/6816 3416/4926/6816 -f 1164/3224/6817 1487/2949/6817 3416/4932/6817 -f 1482/3129/6818 1475/4846/6818 1498/3195/6818 -f 3348/4735/6819 3362/4625/6819 3330/4659/6819 -f 1853/2470/6820 1861/4947/6820 1860/3840/6820 -f 2585/4247/6821 1693/4948/6821 1060/3907/6821 -f 2924/4949/6822 2923/4927/6822 2903/4908/6822 -f 2901/4155/6823 2924/4949/6823 2903/4908/6823 -f 2971/4950/6824 2979/4935/6824 2950/4920/6824 -f 2942/4951/6825 2971/4952/6825 2950/4953/6825 -f 3325/4931/6826 3417/3056/6826 3399/4907/6826 -f 2920/4503/6827 2936/3934/6827 2928/4501/6827 -f 2279/1800/6828 3336/314/6828 3317/4781/6828 -f 1656/2952/6829 3272/3004/6829 3378/2953/6829 -f 3272/3004/6830 3408/4918/6830 3378/2953/6830 -f 3272/3004/6831 235/824/6831 3408/4918/6831 -f 2929/2508/6832 2936/3934/6832 2920/4503/6832 -f 2963/4678/6833 2981/4573/6833 2973/4679/6833 -f 3313/1736/6834 3330/4659/6834 3312/3154/6834 -f 1488/713/6835 1487/2949/6835 1164/3224/6835 -f 2904/3186/6836 2924/4949/6836 2901/4155/6836 -f 3044/4954/6837 3031/4955/6837 2996/4936/6837 -f 3292/4945/6838 3325/4931/6838 3256/4914/6838 -f 1872/1946/6839 3510/1039/6839 1838/1038/6839 -f 586/1676/6840 993/2786/6840 3405/2019/6840 -f 2981/4573/6841 3034/4171/6841 2973/4679/6841 -f 3244/4641/6842 3267/4534/6842 3230/4486/6842 -f 2932/4956/6843 2923/4927/6843 2924/4949/6843 -f 2932/4956/6844 2942/4934/6844 2923/4927/6844 -f 2942/4951/6845 2951/4957/6845 2971/4952/6845 -f 2997/4958/6846 2979/4935/6846 2971/4950/6846 -f 2997/4958/6847 2996/4936/6847 2979/4935/6847 -f 2997/4958/6848 3044/4954/6848 2996/4936/6848 -f 3067/4959/6849 3086/4924/6849 3056/4923/6849 -f 3112/4940/6850 3127/4960/6850 3126/4925/6850 -f 3292/4945/6851 3369/4961/6851 3325/4931/6851 -f 2500/3055/6852 1164/4946/6852 3417/3056/6852 -f 955/2175/6853 3018/2905/6853 2439/2906/6853 -f 3272/3004/6854 1687/887/6854 235/824/6854 -f 3070/4509/6855 3114/4636/6855 3081/4510/6855 -f 1722/3157/6856 1748/3440/6856 2912/3439/6856 -f 3054/1787/6857 3062/1789/6857 3053/4789/6857 -f 3062/1789/6858 3083/4714/6858 3053/4789/6858 -f 2959/4962/6859 2997/4958/6859 2971/4950/6859 -f 3010/4963/6860 3044/4954/6860 2997/4958/6860 -f 3098/4964/6861 3086/4924/6861 3067/4959/6861 -f 3098/4964/6862 3112/4940/6862 3086/4924/6862 -f 3369/4961/6863 3417/3056/6863 3325/4931/6863 -f 3062/1789/6864 3135/4444/6864 3083/4714/6864 -f 3123/4491/6865 3135/4444/6865 3091/1788/6865 -f 1687/887/6866 217/875/6866 235/824/6866 -f 3199/4710/6867 3198/4693/6867 3153/4609/6867 -f 3267/4534/6868 3310/4596/6868 3309/4481/6868 -f 3310/4596/6869 3345/4547/6869 3309/4481/6869 -f 3177/4685/6870 3192/2546/6870 3176/4585/6870 -f 2905/4117/6871 2924/4949/6871 2904/3186/6871 -f 2942/4951/6872 2932/4965/6872 2951/4957/6872 -f 2959/4962/6873 2971/4950/6873 2951/4966/6873 -f 3010/4963/6874 3068/4967/6874 3044/4954/6874 -f 3127/4960/6875 3112/4940/6875 3098/4964/6875 -f 3293/4968/6876 3292/4945/6876 3257/4944/6876 -f 3258/4969/6877 3293/4968/6877 3257/4944/6877 -f 2976/2126/6878 2988/4268/6878 2967/4739/6878 -f 993/4543/6879 2725/4697/6879 3423/4541/6879 -f 3146/3863/6880 3167/4628/6880 3132/3864/6880 -f 3148/4677/6881 3193/4718/6881 3147/4806/6881 -f 2988/4268/6882 2999/4647/6882 2987/4269/6882 -f 3193/4718/6883 3206/4970/6883 3205/1983/6883 -f 2914/4780/6884 2932/4956/6884 2924/4949/6884 -f 2932/4965/6885 2943/4971/6885 2951/4957/6885 -f 2943/4972/6886 2959/4962/6886 2951/4966/6886 -f 3023/4973/6887 3010/4963/6887 2997/4958/6887 -f 3400/4662/6888 3417/3056/6888 3369/4961/6888 -f 3192/2546/6889 3191/4590/6889 3176/4585/6889 -f 3374/2436/6890 3385/2514/6890 3373/4670/6890 -f 3024/292/6891 3058/4172/6891 3081/4510/6891 -f 2919/4577/6892 2918/4576/6892 2909/2415/6892 -f 2988/4268/6893 3015/4689/6893 2999/4647/6893 -f 2905/4117/6894 2914/4780/6894 2924/4949/6894 -f 2959/4962/6895 3023/4973/6895 2997/4958/6895 -f 3079/4974/6896 3098/4964/6896 3067/4959/6896 -f 3127/4960/6897 3098/4964/6897 3138/4975/6897 -f 3326/166/6898 3292/4945/6898 3293/4968/6898 -f 3326/166/6899 3369/4961/6899 3292/4945/6899 -f 3359/4198/6900 3400/4662/6900 3369/4961/6900 -f 575/3054/6901 3417/3056/6901 3400/4662/6901 -f 1056/3478/6902 561/2361/6902 3136/3530/6902 -f 2965/2730/6903 2986/2729/6903 2985/4505/6903 -f 3063/898/6904 3092/2735/6904 954/577/6904 -f 3069/4976/6905 3010/4963/6905 3023/4973/6905 -f 3069/4976/6906 3068/4967/6906 3010/4963/6906 -f 3158/4489/6907 3195/1932/6907 3157/4490/6907 -f 3260/4597/6908 3267/4534/6908 3244/4641/6908 -f 1474/4819/6909 3150/4812/6909 3109/4811/6909 -f 2585/3101/6910 2725/4698/6910 1993/1966/6910 -f 3374/2436/6911 3373/4670/6911 3346/4581/6911 -f 3157/4490/6912 3194/4125/6912 3170/4676/6912 -f 2932/4965/6913 2944/2230/6913 2943/4971/6913 -f 2952/69/6914 2959/4962/6914 2943/4972/6914 -f 2952/69/6915 2972/68/6915 2959/4962/6915 -f 2972/68/6916 3023/4973/6916 2959/4962/6916 -f 3099/4688/6917 3098/4964/6917 3079/4974/6917 -f 3099/4688/6918 3139/3100/6918 3098/4964/6918 -f 3098/4964/6919 3139/3100/6919 3138/4975/6919 -f 3401/3140/6920 3400/4662/6920 3359/4198/6920 -f 3074/3134/6921 3073/4651/6921 3035/3135/6921 -f 2987/4269/6922 2999/4647/6922 2940/4423/6922 -f 331/525/6923 3386/567/6923 263/566/6923 -f 2973/4679/6924 3024/292/6924 2953/4680/6924 -f 3260/4597/6925 3244/4641/6925 3201/4569/6925 -f 3074/3134/6926 3104/4588/6926 3073/4651/6926 -f 3201/4569/6927 3244/4641/6927 3200/4642/6927 -f 2915/3582/6928 2914/4780/6928 2905/4117/6928 -f 2914/4780/6929 2925/3824/6929 2932/4956/6929 -f 2932/4965/6930 2925/2228/6930 2944/2230/6930 -f 2952/69/6931 2943/4972/6931 2944/3743/6931 -f 3032/3388/6932 3023/4973/6932 2972/68/6932 -f 3032/3388/6933 3069/4976/6933 3023/4973/6933 -f 3139/3100/6934 3162/4977/6934 3138/4975/6934 -f 3305/167/6935 3258/4969/6935 3240/3903/6935 -f 3305/167/6936 3293/4968/6936 3258/4969/6936 -f 3326/166/6937 3359/4198/6937 3369/4961/6937 -f 1688/3018/6938 3387/3042/6938 3403/4706/6938 -f 3230/4486/6939 3229/4483/6939 3200/4642/6939 -f 2906/2458/6940 2915/3582/6940 2905/4117/6940 -f 3033/67/6941 3032/3388/6941 2972/68/6941 -f 3032/3388/6942 3080/3676/6942 3069/4976/6942 -f 3139/3100/6943 3128/1219/6943 3162/4977/6943 -f 3305/167/6944 3326/166/6944 3293/4968/6944 -f 1478/2828/6945 3367/3009/6945 1486/2877/6945 diff --git a/libs/potree/resources/models/stanford_bunny_reduced.ply b/libs/potree/resources/models/stanford_bunny_reduced.ply deleted file mode 100644 index 125ddb34f986d6fc4cbeed0f5bba40cb1e90e62b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132617 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%0Dn!-pU&TjxXLMbFjA8Q$pf zIfk6Y&mSPuDHxlC2myocK&|y99Q8SeNKKl%%v>S3K7NitmS((S;YrMx;z$lv{dq%W zMtSM&P^u91xH}_e(?8D^l=?GIwCx8w@cUUE586#0mosq(vN)%A zc;%YBc#fG|?y~H-%7o9s;Ak})5}f~w?voTpWc)n z)5o5>brpUCHlxWgd#PRa!zz6^eFhWP9N%qnX0^^WCCm(3aKdideu>s2)0++ri`kX) zUf0R1?6v=SIMqBo7v?+_)!1Ch;b(H@kJVEy$J&vVLd~rui}cIKQTE-fRn6%qOZD1J zi|mUXx|)f3Vs)igvG&DOV@=YiHM;5R7(3JZSToNnMkk~{=}K34g8A5@sMCMj5VJb* zJ-oMlQFqv|&))arKfA%li@HMf-F9sKx@KCfFz45wOI*pu*2d>7#^}aTo_g@0>E>qp zPx|=`KRe)nvX-CNpbO&tj-y3= znJu$@ZLf}Nb%7Q^rrps%6VdCE-c@Oh9iFS43AwdQXKS(4ZjR?83p>Z^PtnWlEj@FX zoO90T4=*>_J$#dB&zdXsin~kfC)0LY@dK9YXOA!0X_7=+QAJkbI`@&?;Zz5!N2Rqo zm+vS0*apiQRBpX~`yb}!@`8?;Y3s_=f&xmo2gB7vRn4r)2s0rva}|T z_j1$3&&PRh{sLF6w4>}Y>LTXx zuh1d$dfNeqMwprvE^4Q1uKly+R8u=>q@M9&iS_UCbB;#o*Xm>6-Ob)P zlU?tcuh&E8rZ??JPcoPDWpTb7*VVLbJ=bL27^nBt2)6^r$C|s}m+8Ypaj&dMwCP*v z9G;<9vvbsLZN8k$;QV$sg{$nw2s7YhHfN3Veaw|UEltPOX`BsWFUPms>#gIKt<%1( z=Go^QAFNKB<8+&ftL*OAU6$9&^*ZwDc{|DCy(E&5%(r}oG~=^X#{*{ZwG@-z)k z`Pl0kZ_!<>4U#oT%)sD z9s5I1@qg~R+{M?7Z?jovT7TU32`OgoHQ1 zX8Y5=t|n6xeDB<>&32nI5$5xyZTjk`g?6$wco(Gg2R&tMT038tSth6N7<_N$5^LnJ zye4Mlb-goUwLLoR8EbEkEqYAULHqdTX#2>$BF<@nN9=-*imrqMJM^Jk{wDK@uXa@9 z+|FnCuB^iQXWDyWw(Gf}Atvjtq-Ii$?N|@b*olV*o0H+YbS)RYTli@@^QO}l-7jbt zo^9nfVOe+RF|)VXbB_d=Et5U;?6+U+>5D$w-$LB=!nZH&m+v#1xy3xSyT@BQ-^FBR z$0&EbYwugzv+rGdTo!j-s>fA(ai@4YxR*PA*YARTxbFgce?517ZPDNMq!PXDaUa}u ztt-duxRH7B`_3ME%=H8Iiyn32kA3sdg^FyqV~^FgW`z0ZWou&XG!1{aJVtovB6n>& z*_uMe|D2Z|Q{{@i^m9sce3HA~nEIh@#{6v;jrP!PM>p9|7caHTczEEqZ@1Wc#tyVk z8V`N1$2$A`$3Xi^e^2doVwwHl_3W-8H$3%%!O?b{-zdimywkUR(@gutno!I4o+o~9 zD%@@}BHWsq*+r(Gi1 zQu|pRZyoY9)(-!BjGZtFpC9_V$bK{4VFz6G*12}fwY$~xw02tF`s<30_W1K1t=t{G z@!oHwy?S&BQ)Y*!PE~rZ{X!KpBPzPUDs#nt@>ekK_06$kZm+V3rcSS0cbH?3J($_9UK+neGaA2xJ-v)8#tPGWigvKO zRCu*_POJ3#OWOW+u4yH#ZP&c?%N0*u(_57`am9S}*hO>fOoalB!8=9$Lgv`-?!B>B zxdrLI-{;s>6YsV|Dun8Ptx5Jju{T`n?}y>DW9{r#`~4hO`h@8Fx`q9~k=;5OcGP?NTr1 z*lYWT>bl#;*&B9suwR`B)s-I)vtx11oMvs9UeT?AeSAQ8{GDwX^q1tN?P+f>InpN& z)%N4$_Tg87)(iKP_zlJnt_fy_m949w#Rl|R8(7sWG_9^WdOD!1_6+LOE6 zE%#+I&*ppTh70@I6WfHCH;a9B;|!f_kGY9WK-Unxq}T*Ipx!yVPKHq3u6sq>BV?Sb zNl*qo@f7k)M`bd|OIu*%{p9`;btg?ZGux%X>aL%lhu|-6w3ezWwc^ zy~b~fKbO2V-uH9YA9vNWgJ*h~WOah|?S=#FYr)g()|Wzc%;qe1x|!|cTZCuOx6i(J zMQ#Xm^h=RZ=leUA-F*9W$K{4$di>0I*Mo?^95)IC<9D}Cx~|8ccih7le{L`DJNCOZ7yV}m7#W{3ae%h#WzxlS4~$RP-NAHPjo;ts zQQA&lw}}aB?1B4(mVKkQzlp(bdL(aD+rHNzsi~18R2N85*S-?C(LTI1MAs;_-gPpx zhgIa3r+&D0N2!F6-PVbI-ugjETgPzxw$4y@U%fO-ZAbg3eay=A_$=x6yqKrmO@qnq zdSaDa_V60*P3G$6%WIIguGpfiqg&i)t3?riy}wE?M||W3YfW1p z-8jc)$C2>&)`==9b?H3E9F4C0w6eFv@0OkD=Gd@xv^ibOL!UgD*4~VJ9oM7Xb2_I~d$owZS%D@&u+ zj=u{8>8q`ST@R}+w(|A$(;M?1bfmey$?BWZTRU%VbR_i*<(M^ox0SOSenT~9J}W)e+Pa%l>AHbfgUg2K;{oY)?p=8-=in;lb&R{7 zwy|#fwklc7t}-6_ui;Bd-cNGEE{5l-L7pCt*z$*5$y$Z#s9kj(Q5TjtvaRscPd58n zv;F_E7KZxh_6Iv!@wXpXhfaFyy+iU@C7Y(!Ew87+=OCI|Q{?1SX;&}a(ukwsi*EPW{t9@8^6cyde2;kE6?(09BCT${oA9U53j-Rztnv|I_-~Wqs?C<{7Ry~4sRI1{RPamq;TY7}( zIeiy8BC2h6T=n$St5$ck`kne})hwA(`+V$W`Qv%(f<9il_l3H9CheVMuK%4vJ0FxR zwX;c4lPs6JE>dcmBUyXA2eLg_XPmjgv8~~F`)9Eb?T7b2&(z#yjT@a>?|s$ot?(=Bb_ai* zaqS9gx$hh^y$kj{BeOcbRGMit-T}DV@rYw#?*V2f){1%A7nZVX*Eh9VyX*P~6I+Ap z7cjH2Uz$Dpjw7LTbg^cWExi0_^*!LDzdet#iq%_W-T3UU8{}SW z4cxrRT3y*k=b5&`@_u>5>Q^(Ro-}p0H7+2VZr(kMEqKU4hE?#>chV%bx*W-D>Xb^UcXSA{()RN^hMn=!M?0>z{Hiv!Dq}ykW9=4e z+Phhn*Bfu0=JXX7KADyIpoRzTs znYATFkZv*Yl=a<}NUz-+qL;KZyo9tWn3qG^~+2996NSTHU*1% z>WDE#t*u+UP2v2W`dZP!)`ZoY?Fx5-bg^S|tYwWuT+{o7=y8LWSP9c+#7_zc(oqqy zR^JP!9PO6+=pg_7R_3c2bohkq_|A}%){)lvby%{z`eUbq*83e}j4J_q`v`ZdPC_p; zbOEjr_T{kri#IXqhP%#vr?l0ijGx*1)=!UX)Yq!{?JxV#i6WDU1nu^J>GK+a$|~PVgA%Qc;#U$;?gI_&H*X$n|-IP zi)--H-5XNkcSv7Z<8JPfpTX5H0ozxwKt<7Sw19x3&!98RlPr?JMZny1dOx{uZUM;nu6gS-B; zf4-G=Yzy;GNOC>HJJL$E&d)R&?5kU~j2K}gcAw9R=OKb4(f_hYI z{N`uCL#xWw38wpTZ#`^zU#m&NGyCM1bb4Rowbt>0Yi-wX?9(b8u;zNsweR-})|;m+ zvroMA~>nn^Obt=|lMa$F}KrnnY_7^y%TgddJB<=HuHZdP!mr z{mePn#1_4-7d;5X_Z)?r44-`UlJzUBTj@rcX_>tA&Am@%i-L8bfB&=EtjKCPL(^#2u4H=r>JrwN9w~L}Jt_2$%Db$M!Rhq&(cXG% zfnlZzp1;gn2;cm+fBwIPxaRuPb^oCaP#=9 zx4vI>tEGZ-nG=US^tIVHt?;(V%*z?xI&G0FR@lqLCi_G`?OQm(D!=}don&Zwz2W0M zE2dCEyZZ7FJ-6Bg>tO0yr7jK1pf~sah8%wDaBGr5rwjaM9n0!xML!7EHD_U;J8=~`JqC{!YVXyz ztbKdNm;tkf>qk8{?yZq?oH>X!f7AE9_|AbbCT=2r6R+xN%X?2dlhM;lFIscMD$=x` zxrBQH&8$n-{VydT0$f?-rta)qi3=TYu4Yb$FN_9{=51_qn`le6BG4 z^S>w7?2K^^|AQHI)&LLfeRRJ=cfG#Ou%Q} zbB{ObbV^l8Xw=iCmDEk3&PIPC4-&#-uCN}w zN~f)(+4a(o3(eD053~c{w|V+qMYHDKRDCQWgU#PyMdU(1erg)#l`0TmT{!J#Bs*8r|$z>xPYZCP_*{^x(zdz#zg(|7d zC|_?~FfN&{@zcvhR`=CDcarGPyBF<*IU#yP&cr%#$tkXOg){1Y3)ART!(;cJZg}snz33Gm7>D0Kua{YOs+YtX(aBrSTZsM9grU~=e|+_aoH_N!+kNrOZl2y%Jcllq zZ>mW=CR{JR>*i>V@AG_9cd$NlZ-t}t{h20tqqNSTM2SqUvV%>#*nOlK4%U+n+5rM@n-|dF$^def7n~iOhm|LHbH`5?!;;57*;H8Fe@J zbUM-OMXus$eewM;Idq019UV;;duxy9x%DIela7a(eRa8@qB`T09M+;kKDtZp0=ndc z2&-*a8hyA=L3}snQq%a%P2H=FH$G=I*VL|?pu-ba(z%vzH~-d4&_!3~&@O!EXT)PK zy)y56E8#?PGbfw34l5e0E9OkFgR_L{LR*sS(LJu&y%Fo5Bh%{rooCrCUWDmec;9hj zSWSD^fQ-;LR3FdjV;_C%qX%KVYrA5+tM_zo{iH%Moju){QdMqy>#TDN>uM#lSV0&4 zbe0vxb>fjttZq6$=gL}CH*2!Qtc#A)Aw}+4o?RE1B^RD*H_tjc_kv~SoZC%ZXh9O~ z{?BF;mg|vjaO|y>>D3~WC(CVo*IIh5j?6WVmJ@WHmAxHHzK=J)7Y6Fr9zIsi72)Pu z+P?a)6WaQ#%mh=jhL4`^`O13Jpp9u2f;{P)TF>cK%&a_sds9JvdR4$1dqMjU{ib9p z?Q^-N{VIpA{(3kcu0w+D(=~nchx-NaTj?RCO5$DFF(*rEwR4-J=4C&9pu9tG%#z#6 zIw_r=_N=%r{e6b{*6xAM*|d=Uci}2i`SK0jE7vbGG&V&3d!j^MO_=a_jZ&)|(H7 z9_V++l%5^C$Q&F$Mc-_1JL2=qH)q#R&;!?hakNV`+dN+~N>4eM*Xl8HviXsCu#WNW zYc(C`G*|X`>wG72=)%{Y+d=8D56o6T&$@NOuDKicf<6?|*Y_26J&sSQ%hfNV2VGle z=1sY&&j+T}E%2R+VY_4W@iKcYujpx}a>k+hOrh$Q$H^h)$>Lr*SElw>V9m*9K}UQ( zVrU|rCU}Cm|H4Rq)K+RLy`UWzH9PepgMZv^08-=Wg_=G8*BBY!Gwr>~}KJyLd1w7;Hv zr>dSfI?{FOM1c11TS=FBSI6vLH%X_yjNkLKrkOEyC+L*{*R6;aV@HD;L(sghlLCEjl475i6jNM07dH95`9iFl+RCph)`X-iDbTX*$MQ%LJ! zYfQ=R^YxpR6&)XntTeGnBlU@iCmg0=3;YK0Xno|#Co9{G`KI%n33}w2oK_ut2WCLX zczy6>BWq28*``p2a6PGUTkD2bZ}WEHAiZ82t3tA!wbO=AH8*~Ur{~w-wI|!Q(xU|6TVMvZ$a~;SAgD;zo`DcbG>nn zd#bl4l+lgzrZwM_`QzoL;(F?}G4{2re)?g@dRjftVTW}I(j9+R*DoXD%#nKcb)FM% zEdLL+&7|)$bOGF>c{?A!BNjG8dvE??rN6(#I0w$cd%@eSf3mDF-Ot?7yRa9pR%?&Z zg`VI$&@$^SwO5$D+h*xaXEIxj%PuibuT9sHSzkD=v>0jHbRMi{Pu*-a^d4sBw)EBa zau(L#yR|ok;=Ofn@?v_(>MmvtJ~JEsGf@9n6={mpoTQVUv8@uDyv>QW{#xBDuirgN zZanMw>U|l?=_-%z+tC?(b(z2G=+5;Q+nv++>RYO=?!0@K9hoYV(U=z-mp%GSHM3)E8fVi@ zsa^5o@|$DN(m6NQ+vK|0yrn%qD4X-!@t$^xm5uFw1#&p2mXEaicb#O$rb*+>weT-H z=MHUOOq<8qGjPAX^?JA&&?vieWyb#I%*)Z{U42Mr5!vZOL-x=;X2H1isrR(z~q*%`n#N&{>= zxx<`Y(@k?tojJ~&{wtmHLV>S#${$hors+AH%b(1&!_GgjtuA5Ct3MOl-8)Y;uX3k% zzV4dWJXtr}{I}8HnWW1gyL0dryhEJH*=3W{9(#4HnR_skGw@sklY8$tvvz+PXVq+* z>>7DznEb6$JAJPovOAugWUT9<&a^-3n`vv)+22D8JA)>_urFjyZFX)Cb`IL}+7%Ny z-E^6q%GtPSRy!`w472)vpfk2h22;N92s5l*YG&3l}-+6zE zsh26ObHuwh_K^V*X2P)$r}KOsbG2}|@o$#O`Mkz8*NvFV_R?8l&I~bUT^aG)+^a@r zaxN)unXfn2+Ri0eoOQmnwjX`&XK(k*<-C=!%pUOHBr`p0D(CBf0DJA@aMR;bptHw; z)pnwo3Fg)YUuUOP-(82Z)iM{V;CmY)V@l1A8)Nbx^>db9k;J}mVvMPV-!6Q+!-@Ba z5}6O-A|owrnQZ)O20FXrUC5RHq&EGM202%?i*~gcT-G>yrgi#_ zuHo|AvB|E!CZn@U(d72fp<}QgPVGE6wG%$0G{L+*h3^82er}KNH`%}P}4WLo7-0oOcN@glf~@K z6E!7)rhuA;VlB{_%@WX)jbmy6icLBI(rhA#`M_jAeZkPtaO5&TT}817m`EluI!J*r zR?^Z9=(0N6SLQK=Q4|6asGB$XUyR!GY(~{-!a~+eL6Zf5n4J?nRR;D^x0g8P4)BG# ztwR%rgJDry;qZ1qe>$F#W7L|k#uFZlfM7VF*q#A9$8qwZ%l|+OAmjH-Dq&oN8oEnd z#kM>~YMTFQ#^&l4x;_n@0n|?Dv>Vt(-Adz_`hb(nT|}%r+81NK-G+oF&=kp?5Y#YB zL^qDbA=E}_&QU?HHGUW~Xzn{L{Ura^4xjaYt%YoE})1EJ0! zpgYqg9Mw61k!;39tq8OslMF;4Py|p%(EcuZ%ZK0cHzM6Fph&O64XE#17`Q4q{~ zWP~@nrd#1ZH{=o2LD>ObJ=w&9rS*e<$8M_Z)GZtjL0me zxH!%f6w}ecHBKf*jrvK##)F}fGJkgA;N@sipT-r#$TxxI9F%Fo7%^?sRuG)hjFUP8 zha>>A0TmC44|0cY7GIO0j*7%EbS(@EGSpn{f?o9Z1VB+j^~D})ORc-p1Q$9e4B|BY zig7+*XrQDE)fvfg=yZBj9A5!h!38fPC(}S=UL4Q?P_eLQ9=dMBL6f7Hhl8oTs*Z!H ztT0q338doDKIr8t1c^8(mvo+)Ij{;q%}<1*3ddQ5>h%yMQ!!siQF_CGaV4)LVnppyVN@L z5{R0ofMQ0)0P_Hq5(Uo|`^e0Og4{61Qqgvh34h12n zU1k%rY9DK6poZ#DEk(yu6$$h-5Y$g}D~g&#Kw`GofrDe%0c*#Dm=BBt6jgr#Le{G6 zAj$!Bv&w*i0`WDaWdW(7l!VmWfR7V^bM!THhGCS*aUtP?vVb+?K&%63x;l-%xkbk2Yola{N2@1sGdz9cfVHB7wz`y8GJpnNm1A3uW?S)m%369= z7!u>jTtdxOs8f)}m4fX%(Y_OX5RGCiu!#&OcvsX6<}p0k@ubH+sp5v78;qQ+nS>%E z1nAUFH2~2TU_PjsDCj0(=pA~7?owo!7?Kop6EzoCO-C=$z&!RwjmeB7^9coW`#u@^ zfKAqr8IOWZhLh>=i)coMQMe1DGE7lhU=&Z5a-t+L2q*`rdQfE#P?gO%KeIsU#TuIY zHwZC1BTVL|IfOnSa}iz3E;#uX7qz%K|lO)2 zb9q{TJUb69b~E1wpqkc7w2$K8J%FrLTv^rvb0JVH$SfmM0clwW(8ed;9QKdBys(om(7r01|u7Q+(qyN-IsKe_LUZ1GkXuAvtXXY`JP`w*i%4Y4* z8~1PA$EnZoW;Q_4qs4LH4-jo>+;zCO32SafaEoETB5KFL=Oz=P2ITZxr_F4rB@lfQ~`=nH=bB{QsDxw zxVCYPE5WSl34&3eN@^tvsw8=^5d?LkKz&2ONKhalDGY{@P%Ow4BEyNtRaWNQCPaB7 zz|)B0>Qxk|3Meiayo8M)^A1HSbSti6L5BWQBjQj-gaku}t*3_u+f&lbl4ri|itzyo7&2-)xC1=ECn z@- z8i3iTINPa;Sjt(?$sWa;HfUQ8>Sw13TqU@C%F@a0aZWJ2=#V=o@^CAz zhQK>zAQ;KqJ^*4lP#X}fhhhwBE-N_+MnlmACI-!r451lf!UYV-Q`B)lal^mU4;lf+uouvax5)l5yE$kZn! zUOvPq6QIJ;{vhmMKui5m?T3T8u&R+@76Qx%RS9~f25|-ht27|UP^d^ykQq>HzaEfd zc*B!YCWfM0={IpA3A#$0$edmXNM5rb!$2$U`I)2r0rAcgNa-QPf(*|bil>cbXd(;o zNf0|w^O7~(PwfQLgO>7&h*w6<0p$q`-$1Xo)U6Ae&{c7Ox&#YX!b35viA7u9uUX1t zO2IQ@AgxFrgrF_WkaWodg7#1#Nih}#6GO2eBQux<85*c);eLRbBGZ`+Q%2Gy00c8d z1z@R}4KPbo85qY2OQ)#qD2@Y%$*e^+S7uq22f|!l%F1QzI8<|s!xWHxFOT7|ssoyI z0qO#(1&WUtr#uN2|PB!Dk3GZz4GFz2`q&6TEeFCP-Mlf=#l9P!OsXd#~D^CG> zNzps>j4-r+93VbmL9->=uRzdj@d2e22t#eTi{1;!W+6SANggodJO^`rs|V2d8o(QQ ziUjX<@{XR0K;$kV;w?BahM`+(!GI~MvKbI{NL>BRkf0V)Lx$>5p#DX{*iczTA}b*A z;S~$LGl01hPi@guv|bCZbOg8{OB7hc1x)rkJZti7qtc-Rrt^3}9w}sn*3)wQgy)4gz|t2g6i85mMk=(6WUG$I`WuVC>8=-SY*;NdSYoT za>oT`1m>NJ15pf3O0c&UAlQj?5Dv)=fJUm;$hEORcTPG^zJ!!ni&I zgrOfOP)-muo4!!JP%x$xC>oXlHi>a0n8AM-S}W@g2}XgYD{hIn2))N&#ce*%w(B@f zRup9cS}Yg&Jj2NH0|z$j*K zUUWcPXrLHJo5UUx3?&UzTTn2j6eto00LE6aAVc%zLTwKSIfWKS^6|OETzd2kh*`iC zG96IU3uq6hWl)fLJ(Tt^+qwCR1r#%#HEbcf!D=ANk>QDD4r+LEQQ4FJ?*Tw@GF+m0 z{ljHijevzcJg^vJva6Qptq#CUQ6%UYVea6-a6qmk#=}MNV0N*YKL~n;`5+A4^~Y88 z8wIKl3VP^|cgWBwip6U{yhDPCA%gTJaP6zu~{Wk|R!w%wkm!&6vuNiP3g^biacSnAMxGzlCw5+4$?09q_llLBEVr4NLm5B>w_2Sxko2L?=qLR;P>;|*=O zLgv+RSJpH~!F7l0kE}bDKy;;|w1>9PKw(;epn(!BGBi?!p*=&w&Voo78OhlFrnm@C^tZ|`QdcoV#h^KHGy;h(4XUQ7IMGC4V|iwCOIHwj3ihT2tz4N z5GEUpC(d~p`2j#tFUE$Nt41iOHHDII zWT>nJi^__k955f;D}xpU(HcM{E>^K*@bO<62vk9c*ex9+47-(a*yT1rd~g~Bb3qtN zDG(+ZdSPPFLy8O&L$bFV24nWhhN(58wgPAiC~lPY0>^j^6{UVuR&7F>q=a|Yli{;^ z-qu^jV;JDv$$q(N1sDdH?own902ByA-%+44pnn=D#?f!IiSANwQP5SiNzoPxgvpMP zC*WY3p~x`e6v(Z9-oM=o$kpKm)X2?JUZ^vjxys1%Mui%l8x$Wc@^zw$5Xc)|pRvAu z0@O8BQ&DO!Ou{dLBEitJR+#U<1d_^R#Gc0JlEI>ZiVO{;K$!l&1d=XfBtuxl0F0mn zi&3K=#378HFlj*0ehOsk!EMI^noaw^01wHK;A1RdxWSA8wgYl?SOi2?GBZ$&2ZocO ztLUa%9F!r)U$^CC+Mvh}K_Htg!GL?dL&Q5HFet683oX=99CHL%52)wKzyL=9##R&+tyxfO zYOm&b;!!&~;Dx?gjb?PlVRo<>)zmze_N+xgfiNo}WiG5>vmYoDehGx3<`hUO7s4^r zT#;Z*g`o*lp8_=-1?{0wk=PDMv{{g0va5$E-u{1vk)}Xu7=8&o)1P@jfm(wiDGcjO z6FNet#Sk>7ZpBgXNm5#NP!7c)pe&h-C>U{xHh0f_gGyc^WPHK_Mo`fQw4Xv@&VZm( z6bU*-7!ub3Iz=2Z0^umcaY*d`&1^^l-H6(se*Clir|9Ur6QI6mLZGCI@d! zsx{Dz8{&`70 zpX2a#6~3y%U9qHpRWzZ8)L9gaC*!J$B8&|Y!VL^#DYWJNhT1%)H;Qq9oVQnaVdn&l zW7jQV6yLs*H?NrB_tET6l21anOmum}m~oYuRsfL_8YH8lWb%QaKrEdJf;OoD6y7*E z5#z&=1@` zXZfg1?$91bmr3B1&+NJ>f?FQP$u-7djLw{X1t{KacLO-bWmm%{MFG*;7g|$uRRGl% zke|&+(0*ZFzz)`aq&-v7(`dBc!9h1b(gCQ--WWcHQQpOQ4#{3H^7<#o;9IXU4&UqL zG5r8VlSgA5F`EQU7lvlTZU37XB=}Eei6@$HVsL^eGG)*c1u6)Vp*XHSndV?>0v*|m z=PT|~d0R(}s{pA4xB&T1t!M3Hvw@oD+&q9fm@`<}|wq+VXA$I}#tzxC(5>yScopD=$SJM4P=v;XV>WI9F`8$Y92k_E)A?dgE)aCS;sXFax;eqFx#ztE@MIw`<+E7?YpAFO zsH`GE{e)=;qU|q%B12^lxjBlq9XTN#X}pt;)uj3M4R3?ey95MNVKDk;oo zG^4Mnxhju5C=TQR)J#ZT08ddXcf;3#`NU>?;KsN8 z_=<)lpqbc1BE@gxNYL6pX46_6=BB!#868j4Rd*0SfVZsSn=pKRYcn8Gs0b+|q1vNp z_nV=Vfo`cV1Er}!3J|FQZ`6uz)Qifhc4#{e z7|LU|LP_qVhqH$FA9>$)85wRyxGCY8Q*}ZwTrzI*n9?Ym@Y^sl{OHP0G)W(I zqeer?kpS;ks2^xTr!eZu3k8#$j!~SFTrK3Cxsj02%1*4QgC@;@C_vGUo`3|4CvTqG zxnq?VjkvFrR}O+e{`c>5-cjpt79rF z7wo(~=aUXq9#Ke-W?2Chi|V<+8a87%Dg%E)LZ%X%k!TD^NGPE|7#6JQ2`Cnfkyx4x zgFOe+{DSCIJnkz^ImaVH^_^ITdmOfjaKV))2VsHP@IBEbY%{keVMNm)+F zWJm<^7>1(?KxM_(hd@w2@yeVO2SaD)W{IgjrUS{2^S71u3)PGNy}_#MwLVz zGR!PVF*0jWLxCbu<2OTs$tN}Zya(URkPE_LsF@3l1r#;z1&G!x$k6#}8j97xHZoID zP#_GYG)@>==!Vf>;*TOh=L?e=1fxKKBEtoh0!4y;5av1v&YyFvAwj`UGAwAagoG!q zp#bkXt4GKgZ@B3TbEgnSE(|aLibUz(3?*b}q@rOoxgQx8WN4S-i~sI`y!<~1gHktH z{mC#`6evFb;`x-%1J!*LR8+L)wHXx^t+}b^o95iutD9)TjqrPRz!NK1rSfDvAZ5*C zGHxKafXm`dd#Zz>DQYYVI$jh#1mYDSS;c}3eJ+lti^bQ}cqzc_QY^@m z3WQ-%29VH`VEBchH<|v-VzHD2t(D6cS}A5H20_!sY!XEP`azLkb_hd<&>74W`4l6S z)O3iL4JqwX^!_e@X(O4~A3cxdpj3q_33CSo2ma&uqF^|lywJqcTU25&4N)`zDv;q0 ztr@`VQjJhthx8e1R-)Jm>>yJVHHSbTQuvQz1wf%X3h5bOADgkKnE=n6YC0rwAb7c? z_}C&RYL>AXAAxgoE|0-8A)|QlDW41FD@c6(r~sg-`O@Z~F1(pK1?DZJ;u1V$jPDU^{zLX!01u6EZ2l z(6#vi#g8}l1YQG*pOfe3<)?FQ^CN~y;D-rp#(P!#r0E#?;3*^|crhTB(#q`23wFz7 zlCE=r=#QFp9CQPiaR7T&B-phuBT*d*G-5MuZ}=GEC7X>!|6Cm8p4|sjv)j8Iryhuh z5IpBGgV9q95CeG(iF_c0VL^t2iw0ykxZ>jnUJ=OKT6~3q?=h7HYoMNu-;QG8%P&<}E#x*!4uU>H!C3|+Ju1Z`66b}R(abtcTUpU6*sa9pt$+7ixY$56PTHWQs# z3JkqNmkC41Qy|Q45ELj997h-yWF$Tua4DES_K=}X5|VUaxJ=2rI1U)Ln#Og4WC@xq zV@)QgL3J1al?W25GLki9sGsOY3nv2-IT9RL7!Jlkd0$c9#7u(@TSBNVqTrb}76Qdr zX4e4n+H4OL(2KI)$FZZzSeJ z@W+W{=s(pP1oJ?&rur28F@ZHSL(Zo>ms*@MynNxucX$b-Mq}Ba?~v0X&T= zE`Lv;(l-26j3@P*OQsO2sgkHeRhELGyCjU|LC|H2MB3jB3HnZI=nM@;9KwZrBd%v2 zaj}~RucU_HK0KrbV4l_nc&k@2wU}bP0JRYQ;;Xr7n2A)KCe#H~6?P4@Btvs)_H-W8 z8^usCav@DS)&Y{Rv}HCJnxbe6H5Yp}gQ08bVzmmzO)%76qD_G?ELcOE)M40B7DOd7 zd*Nfg3&}_INihVoVktA><<1ax|Qyg6_y#| z2V?`(Kva(a=CBzZNZ*MQIVeY`N~$V~Y5*_TR7((C3Kz zvZ5%NO1}h(1pUTZVWN@#6etpOQ*+$Qm9j1I!`$a5~RhFL?}efVm(ui(A|eXmXdjO$0Fk=*eSfX;*;ODq6~{r;ch5m}MB_ zG;5aPz>|RNAQKP^epyF-M$Q*)g8^o~IDYAGhKA8V+N4-)0VBq-AS21gq8vbr6;1Aj z8ZnzDlb}E`I|^gKYh;!|+8czdV$1{PKsrG2WJjmhU^DJCm@fOt)I`Brsp*MG_dp2w zU|j{^z%787K!V};9|MBAiK0|zBOp=eflx4&g`t!JVSJz@Z(=ThP`yS6Z-78Lz77Zm ziUE_af#HT;E*@wUjoZk18Un%}(14^E%@7lqYs@)em`zNg5gdo^rLQHCc=^gPm>g;n zidDc!GTqVT5;VQWV_xtWK$cqz)wKY6NsWSZ4!{Yb27#ytX;u7{2csuo%Xl_xk8$`B zO@35UF8_Jyzl_K5%)~3IBV?#3m2AQecrLvJ$oaGrYM7(!UNWA(W(ugzkkF&_tl}3Q z?Z!B~qo=B%hK>{`GK35zKenu1;xy=og#EzN;Z-#G1SDYxsZcOWBtz<>TVFutDNSZl zh}mD@{nRinGlRv6K|gSEsH~7wN3-&PcxOGN^pGlzg3cGmljsF7w-pP2FtkY)2M$=D zHT?KJKNik+MC2s_K4W-IW*+o2^bg{Vi1={loOabb~xy_#Tu(zH#kSB6( zOcYNJH2Dc@j-%j8Nz>I%5Pt)7j0CF-+Vg&mViXvGUaYx~f=dR&qG;s|2wJg*gf}pj zHJmbQ0L~Wi0qqxtQaa^N4IM(qC_17Ql$8LJs0o40ZAvH*#-bEp02BkofXQo1-67#s zWejU}px_B&0GY)Yok`AQSNS2S4BVxw+JN9H(HKxqQJoS5uQL>lqD^8?Hb{d2p4k;m zpn=8M0o6|qNKD_NJ!2}&05AiAIe?<`I8(T^OMIe0NVJ*uBLJSnI4b{Dg;F^;7Nu# z9SJbDipfoZ9McG0)&fqkrag#AU?L!A3^Flf=$(Tg7-U6)-l3Ny4=50ZQo8Gpt7zqL zKry(r0cs&%Syc?g3gow<#;pL+nxFOd$6Sy%@P2^c_P8qNHvLRL$kveEZUg8{WkK2k zU^t~WrVM*j{wSzU4UV%0#9AOJYnTUIjn;B5aKqdWpnh@zMW@ggsx>6sV>5^3{4*Z} z&q4CB^)!gw4<5rWwm1lE<61>m#Q}7RJU`_uE=PvDz-l14sK|Yn8fZ3{9pr!-IZ!)< z4Bw@mg5Dz88yC6x@BzP{LFI&Z&V$H>zv?r32}OHmiduxW{Qf3BkyHv&KS1)DXFi@A zE3g@Bm=LU$7r3b;KVqdAx%FV^E=7NlxCAZKC@`Fj+~$a@Mx!a+rOKmv0i<%_$sIn& z$iQq)2Vw+>KpwLh;oAgEqzRm`D*-t(aZ;>AC%o!c8_uV5}ey1#*nGEJB+axUTL#Mc7+thnN`$(}Z{*%$P}@H2x|dgwI<9eif9`jB#+ z%E6G(LT)8LQ1cTWh_IooxSykBktiCewbG=Vw_@BR@KHB{Eip- z^Z>V!+~&v@hs`)6Wj2yv)=S36fw&07a$Kgq3yh?H2M}`sx=VHebuk8a0xA*(m-e1y z{7?h~a{71(g3&t;sPrf}-(&~b2io?9ZXKC?1t9GVR0b3^I1Nw>#rU%~_Nrz;r=yVW zW6dk*#*cJnVhsy^J1vEZ@5}KCGe1YDE}-pE94Geh6&FqnUJt8W2xA@`$BS0EeYO%( z-a?Z%{XU>(CtRlZ?sYSCT@6r?n5;Z?@Dw69h`0dN2IRIDcaZ(5+a474fU>OVhk|QW zIBWPAijSk1=!!3-a5wB=4fkS6A!U%&Hc0jZazZ``$pK&&Yxuo^d_haz0RIbCa_yDV zA*UoS9Jmyyx9I5r@P@`QYX8U7dBA@?eSbWTP4>zxS(TCX3CZ4}?2!?EX0rEQ|L61N`~5!tkH`1i?>Xn*d+s^so;%+6JwAGMgoHiT8)y!r z-X(E1e^J7*r-6N8(WfNix0lH70dck- z-3wxGL615b-N!o+YZEx$*3W%f2cSb{MRU%f*q%U7pvGe9BhiN<^F6z@ zsiTLSWlEjYO+mTmdIH4pK=r|}Q$buPYC732$m1;L+zpZ0 z>{#tdZ!5`FDVra^j_2m$8H-JU>soK54iLryDU_L4xZa-0uze%T$a zN-nZ>JBfO!Y@JCWBZOt21}vV35gam)OYDeV>KENqa{ET&ACSL+J`~MveF>0E>zbhY zhD>fGZbdQYtn7Q;rDUI|Erw+5G4uyOTm+P@4+4n>c9bhdI_pgkAH|wYOVwE8qV-^M z5={KBRwNoGBZSt*(q`oB0bFOXxkwJ7JHC)O5hpG~cbsYe7hZ2{w`oyyK!F1F9N7iJw*_?33fA_>w3L&p*c5z+y(Ro%8Q_jLH0ApJ(XwCz66jv zp4XCdojDF7t<0@+XZ}OT*+2nz!F73m3CK%`SHjJ?|6{c770Y-a;ol3xjG;0ZRMHsA z4u2&~uF;p^IfyClX^vuO_N?gE1Xb>Oyq$`4At-&eqU**NsW_ zqpY3VU&007$s|K_GF$^aLH;vbufV*($u-k_FtP!3!gsR&ouXw~2gVH&%_-}*4}K%J z>~a+~1Zp^hN;VN{9<7b2&&aV`qP3H^nwLSo133nI<{g(p=blWEqadyVa*stnv)KH5 z*z+burdrHIVh%-X?f{5B65gk82Dtd;F%o-k2vEzC?RAFxp85lhvr)pu@OL|)!nHC! zaE{wc0h8c5s*X43RtVR}Tw-4Zp~?E8B=kdkFaty%$f#XG>^T{wl5YS})I`EDUY<|v z4B~ZQ*%hH6PY-wRG;u;(8cm zF9A-sj*Fe6el>{=C~^gGgT#>_cGQVLiJaX?m?QTP;LtL z0y$aHjvHrX2UIRrkAt|zoEu3rFlHN;8$lSFwGKHd8%0}yxL0;1%(FPBfSe#01=me_ZAUVhdJe?e143n^=t*$Y zT1JV;NS8QRt(Q7mA+itPd-i#|y$v~QQKGa`Yu5y-E0M7au(1(hs5}dj>&E%%*vY^z z&O7dvz1qu_p5C_??4x{Zd~YJrH&k=ewj1p@^2^L!OMUIO_euzNBGO23VF+lo9#Qq5} z2t+GoWO9(9`K9WbaIrbw9%#*Jk+%ryC_2fDAwRXA#|O@*$YK^dn#A#ApqJZrr>KAI zET@e=KxT@*aL)z2@W`HAq>qHZtK#pgG*`4+0rgVh5b731jT;Z~?4wd!86kXh&tol* zx5{g>-du`#jg}DWihvBJ+laz3w4*8IM}_V{Ku&%Z204Oaj^uKH+m(9&xpwXW_j3tP zRW?S0ZW4|k$Id0zxgXArz*uwIQp^_wz1NhUb3bbDrPwr(dnDWrC?Hz`&w^fsYm}5{ zmKvz(Ik(i(MI0DD)9SOWd7;qjxwn8hs9T4^{e_Nd?l5~7u0h)m$i0ubsptKVa>MvE zU}PmmU7=l&a=Tr#6TNGKxa@vwF}u&{>{5#v=?YL#Y0EFbn-Z3HT&ryP(EHhFoVPBV zW*musSnLuKU3HCwG1?4BZ;ROdA)G^$l(2N4s8iw)2gYb1Cd`EEcEI%{mm=<!0kZER5?dRir^4MHHym%V9{A1WBU{5`Kok&Zd(xK+ z0pBb7PkQ?g;C&#(ymYRN@(aBO1D_cbpCa}c>RejgMdfGzbw2bA0kNxni_p6aVobn_j(-W2mC&Qi&H0L?FZ+1~yHsEHIg00En;&exRn zG5Y^nN1fIHrb?LjqYocg>>rX3(eH1GE$O}<5X;+*-dj+E++R>@HGbH3%uxe#OG*7< zK5%`S-(Rb6C9pk5{CJ7AV|y2I%MO+{>i+Mrxq{aLyf}%Gdw^Y(% zQFKGNn*tqxdG^h+XD%*$KPlR5i!ETWwsglrAh$|% zgV-Ec8>qpET#;gT0QC;)OaXaH;z1G_A!bMH4~X@#-u#@`RWPmuY7B|L(vs)-{>N$D56R^C*OkxZ&ZN6 zYS0cb$HAwIGXO^+ZCixgq&<${Q-Q>Rh@Bi_5Jje<`RjJpN0gle++!V|{qso+pSUPr zR`arAjKs=hFG!;XVTs7_hH94Gk3n2|OAA{73j_J3Js*mE*c`t}y$_J@QlAdzTg*6I zk9LC485>wkWSd4}I*9X|uM3r5?eK#YU)$&}R9+PL6)3-@)DrI8<~VjP5S8_bcmjah`E5@6s^X-vK+1L`m2GA;BOi_$_~r-0*g0@91E;fom>t5(I$urdS#n+ho&n0nb_Ld<@p5MAN9A$mxMsN!ooSsv;HYdA z)#;m2ERJ_6{1(V^xHX3Djx-ms{G8Y7)JY)qCdad}*@2vszek&I`w=E5dM83S(cNZ_I};!M%jBR2^B_qr zYEF_Z$>|K#uZXq_?aK0HBVRgdZ}7S3+3ksVd%+$sPSYhKI=|K>QERo&w`cA~zzCf< zH=Lgd<@bP$xeIAHCMZ$|TA~yyl37`?GD18GV#p+1yv5oV!aHl#m-0@x84KQda&eWB z92p^e^}<&$@^0+2==B(o+XI6sI|{hoIwJZmghed+8IY$cjdr8Hl;TD%+ew4&T_C-E zDu$gx`CAMzr_M~9`dalJ-x=GRQu!XZd56%2)kw^G>Tnr~1{pFgIj-m(f&7F-J95_r z%3E=ooC8*82xp3Y>?}X{vjM~ewVs9=?*i_vY6FJxcH}PZaGnOTF~w%LOMFet`{KTS zo1U}RwnU}$oc&|(2L9%O<7+EZ~@quCBgb1yV!8xku!-0A`p90z#YJ)#}O z8NvI4yofYy$}ZZ8D3j0$G};?@!#Zuqw&!v)RYLU>y=UQ->mc$KzO6yL+;KpaVvU2P zur}kzSa{+QDL}&<(te6K?dYL+=Ro{rPox(Pf$PTEO;d>&^$vsD+akbTK)x^L z=hDXmrNfs3_A;slQC5@VowI20Lp0yTI?kUTqhv4shj8ANQ6iqOg>cq$h{bQVEFrVn zVd>StNQt3T^hQHp1^C*IKd6--(^?Om91G3WO+v&oo_xLV9*EKAXq@6>sc)(HzG5yB z)<$ceL0JkYXBTId2Z8dFYA&w1P;+DErYv6)&>4#L=0@sRewb#v+5P|}S5s@}UAL6k z-M&aycv0h(PIBZLS=rFKnY~8=f5V*zu5bHZ!&lu&l* zbnVW%ZIO8({L)#8_))JAEfHxLuc~O{K+ha2aWiVX1o(Sp<-XF-FIlgAxWo&nJYX_6 zWu3({E4w^-5tY5Ak?1fp8fy!R>__E2l(r(o1;ouOO6x|p4R33)&oIg%kg?$Q%Y`-f zzzloC-5XJAgP5Re#EQ5jn;jZE-OkC}BW&1>$u^ zxx%PyR+*2esI{)1WfZ#8@OF4DNaZicc>$;yRGtRh2$a+8LqLDs>)PvLsZ&aG4aVWe({znSzz~Z4 zX&pE8Uae$1>4x4&%w}#bihaZgK1A<$a(o`;uY*|!LyQM;V_RM;eGlXa#4%v#yU~b8 zy#mXT!KQGHn`}X+k?khS%~ozcx^wD`)bhttd=}?&iC$#;oS_ep)rKN4=0r$-{?~WK z^Pad-r6c1+H%q%wq>IID@DL!Q#Oe7y0O|ksf;|xLXxLi_h;eNZun10>*Uq{fd%TC5 z`=|a4#0a=D64%-kd-V08fc`Fx(=a4kYg?3NHBGA;q?OEjJzy`I;ezmVkhf>S{m z#*VklSfd?;(x|@_mT6o z0@Q0iAnp~>-yzx{$5!!wJiifNa@(C*P@~&Zn&U z*#YI0=^)%&!f9!K!09~`mD=5KyDcJH78Ht z(ddy9Mz8+f)MD*P91Gf1&IN9OG9Rd$dijuS>A*dwUR2-t#z@BFkCKM)i&j*O>&}aX_9me4fe< zaxazgq^wshi&|_Qk_X7?Ea6_%@G|OaclxvkusNMpo>A-sk#mZNDL)wfe8{g^2Zs$*y-;!mT9Vr?&v(c1&I zRRc&iY9vJLqx6sWPCYtWoJtwaN{n&(O=Xo@Mxecyp0i7IqKu3M8S$w8QrRe~aqj!` zJgicb7PCcEDZ1G=5;DtC=xEgRS`3bhOBR;(;i$Pq%L5As-*}5XO!6}DiG+$eWTKmh zx`i-+z6PSG_Xx%z$$JKA)CTo=?Z_BVix75)_9PBORHZXeJxP45E`+Y~_L`=Y*S}r| z`$Hqu8}9G4^_n?HQr^#jo@}F@U+)TdhFvRB#O>}BHLwlEN3?fcy!+D8P@YA_89+V& zyd_1p02Tx?N;ELWX^T!&`#Om7Hvq%*TPKiyz$?}fc@HFnx}5{4U%8!r7?s|z*k>ef z0nbZ3PVzMHl*B@mZAH;@C|cV{X*N~D`kHv?s`-+dADZ^wq1Uyw9Ne8jyq}SuBXY@c=_&UhK7OL_Y7=}m68rNK@0oDD zPicph&*{!ak(^}pLzR7iJTd(pTu*S`pl+=R_ce&0t)oaq?<--V#7MguMA0(x@XID3 zDdvxU>c=K0a8K9U?n#l;E04whm<3Owv0alcF-<*v> zIs@A(U^K`qxZCo-4k58o1(k>l>(!U~(yj$jVhFi1nsR)~%iQWo8+StZ zOAyrwlg|N$!zh!rfpsKoIT~2UJCGj(UT@{jkROuxpwT#0vc0+<(USnb`&6G`!a%q? znd8uOSYFE@s;7~n#7Mgmt`|02^FMvMAA}Oi$4)!~2w@_Tc1$ERu#O`6n4<40!1u&` z-7>55mv9`ggUGFm89#2PvX!z?8@vceJC}nfvG&0$o#@ktG&Yz=&&=%qmR2X+AJMZ`JiiBeKb4(wOO9IT z$ntK;!fo&OhL{WF6oA;{3XB}@Ja`A94u$h7jMZS24c-T&QP*ETEB2e} zJWCOKFFj|!90sfel&#MOL>;}Uej(h$yDiN9ZDY-ebsKdvylhJ&%kVe!kCCv*)%c(@ z{|o2j>vI=MxMla9-TxQ|z6|AT>8u&z$Oc9nvMt0O=4glZBoYl)M|=WyRgeXM+);CW zbB0k!q{#@Oxh}nl(KkUhK#0>+)@=p2c9*M*p_#C>7o30XfYQ&)0eKifoz(4hbKW62 z2Lsaav z!uIIj7ra`N?IThKRJEo552M)Glk5cCCUGBS&jQJWZ|5$BpB*-(VS4BdrA*y1t!VMTSx1UEJj-$8`s0w!ZSZ->`AK3Bm2U+u1qx*oNS~TB z0k=BPeS)S|qyL@s69*rFc}h+P`pwE;adTieK*}+#df9?5wg4|KQpQt^az1eC zbP6qPkTgk zabL9@MI0a*r}NTb8LPV0{#@Q1FS_r`+x{M{dTx#%9De#B?)lhi&N45vc%%X0x|g7_RleFLJRDqJEXL87(8%)y>9 zr{i^c!e6er&M@UV>XhcXnwR!Qz}S$+%YCxj&&lTK+6RDm)I>rzXDRUb+2x=_Rv;&Y zkzre^RNW|Rm!yuwb%;+~`;qGA6!}mA_O>(s!q%~;WrT2%G?=nb>KUiPOoO(eEosLK zLU%UV)i}|an;3P0_>f*Esbl(=Uvo$AI)Sx+Kz29U=)+QV^I+`&33 zdIO?Wwss-sMj&Bn97x#xWwJlz)2A*Sc2>q|TNL#AJd@BkxXz`yU_YJmTVvS1w&PX1 zYieBOR??e6vtZ=9-rVH;#>_Asm_TooYN&ylWT2}-JnGEq46D1!8O#{)JRq}}Ggw#S z+9}38h9fN+Vg-zcJsqqW2p5Hj+c0MpT8pfiQ-*oJdyc0yiX7<1XS8v6P?_gLKF ze_=7(afZ!=qAgdWb5TwtDpv8C@ZBT2SKOZe`H_)M5E*7?(BL3oZq0Tc zaK~{KP(x{F36QhQF@OxD{OFLQ(UBMvoV1;y?7`X=WD#ITpx(!*?a;tikh76-s&Qs2 zmv;B0*^e#_;f}+>p00NT%m`?f%VpL1O3@ITl0dFh%3o4#OJ0pSgwyw%1%Te+u;7F+hNqmOqFg370F9Oo1CKC2j*-_^q zDg7g2hlMyAq!*%PlyjBylnYrs!5Z}$FaxOV$QcBeYru zZ9HZ#ivw-1wBtBHyUK*We}73w)fGF*c6`C$evrY&j^oDhV+`dfUT;L}*-~{)(0`@h z6dhNI@b_;!I?(V>j;Afi{+D;-uTb+JO5B=Q5#)^@(NLEjRSFTw3Rpp;#6Q5 zPyTos3mK+0f1UsPvu4g$Qi$e7!>kvJFR3LpWiXLf~%cT6O-sZ1UMV%);0qbf~= z`bD=HaGk}~G2dZw=e?{BQ71PFv6S(e-^$$FVorY^47h5PXK$Xthy=(6S!JMJ&jUHCzbji+;=hVDgNhIoW0ra6Lqx}$o(K8 z^z$BgrJKc6-GhBy`-)5(u2)$bZNs*<(;kQaDhTMH zfGwHu`v86{v~2leKut=-9&aKhG%!lnPNl)PS46#uw7w3}aZi+fL)=MC*iNZX1 zxDe&lD`$3ITMWQjw}<(`1Gkeo(KM0Jz)17rDUQD#Z~8^2d7WzR#h!?$bdEP^a+Mlwn!P{BKb!PxM*%GwF4o{D#YL9xk zjzl*-sYmlfl)o=?55#KvdSevyQO5Qvs&2YV{pvT0><40ZCd6cfuyenp4INot9eQP$ zs}DzqqolQUej&LH;$R@BD_&zTdo;_VXwER1(kyEocLL>&$LSPVpK`T3V!dw8{Sv+D zce3J9f3?YNTefWKq@t=-x0CptsI2JTaCr~#rb`Y!9mQ_pbId)QI@jCip)|NPW-qF4 z&icOsj<6DOn1y(lvUo2gT%sL9VOK#__b4&;+A#(_7Z^U#C0 z);xcz)sQlY9M`(?>mV*hE=sxL?*rjge;oy9C_U$c4CO#N7O}bT>_SC*;TGE&M7HP3 zXIbn(lCyyWBz~gKTohT@Vr@vg54O6*wnXk4Xt1Kj$@PL`M{_oyjx+3@K>ZiaCBPQu z{0_(GqPQ_Zss8NW+5#A0@dF1A||e7!*oz`U^b8S1z_EVO9099(?ZtUBNb z-!{m%tTlI6L~DLI+8y;7X1i1ILf{^yIdWeDj-tOrtS7T;&K$;@%6WNXreyQFp6X_ zDMcUXi&8K3yTx8u2Si4Q)kFY$udM8di~z^MWFTX~uCPne!3QIyD};{B2zE}$eDE}! zR{%As(>J*hh8mSMjZ;%C<(o;3Ryc^)DE8Ic{S z{qsa zBybQ=-APm_>X?|DoTE_VNZ=sV@qroj8ZWUerm;n4NaS`?p0i0Y* z!@7_Y^3->)eYT!9vkF=Pxi&Il3RR_k4fa4)QzUzEo0OltSmmnv*0H;k?^h}*s zFh-rP$2fIfL|HHWm$8mN0qw(Ju7c&o{T4XGS+h<={zC|8ZZSQnM_nIl4HEsfvV;+$ zM~#vi3+FLlgv85Ko(Cl7qi)#_hR77{kkkk11>3QW!-3M=r%_4s>j)Bq^+*Y0tvy8( zZ|lQxx8YP!T6iMRLqaD$2dt_+uGzN&IzLWyde)J39m(3j$r4=%)KMVoB@RgZN??wG z&Vp;#CoJ~`QOP(&L`DP*rMybol{Fm1-A3k76?Jh@*>Vn%>pW5}(O&8OA)(Kld*e3+ zSj^&OS9}S$h~N$UYhR3Dg1h~3(Js_*Iz2@3oMy=7?!ba_K zyM7~}G}nIJNJUSetOE2ywo-1iGPb`)H;2Fl<`_G-0Sc)%$x-uY?G(K*+>ET=XgmbX z57LQk$+?g=2HMVWw0;v93Y4S6hSR7I{*0&S``Y82=Kb1anPn!Mcrc@pZu^Ld0kn4dACb#-e0om>! z2G@aZxNCL!Xut4<`Y_e)E>j3+08Jf=q#tLce&8?#YgC(hNb)22Qz z_aB<<0cf2I(GO&6iBC~OE1yxFUrDqyW}71;#0!*lXr_bxnJ8V{+;+CctdDvU&kq7|DC zz6HcaWpy- zZ&tLgNPUR3d-b(5g*na^)snKlmKPrwfwn$}Ipdi1E(4|mbpV`+2pDJ1ERwmXlM5)P zzyHFx(HsNSk*HV8Maad-0aDuj2O5WP()J4UB#Y^YE2(Vvm+E^65fkP|z-mC^+HPz{ z5xcTP?1d0^g~Trkuw`wEJ$u1%b8)0Oi<7JXbe3pKvN8~Ryn=8XIC%5SoO_TjEp`d5 zpJ#0AgUN8*x43ramqh1*aG5WybP9-ZyTe@x$P0KjXu}@?<$BtjVoOLYN#g9=CiULbwYuvhD$DeUc3T7v*dk zJ0tCCiBBjtH^?9f?SC5NUH->75e=-1XxTA$t{T{L7eLs1C1PAJBjGH*HCn!C9ed7U zX{Y6?+CBVO{pQG3+K%R!NbD`)I&wIO^FsBf7iOmyT#NJL1%{-dnR8e_%JjC<+<(~9 z_IP#>DihEQ$6U z?EsX}u*^GuLHOLZFT>=m7#ShHqp@!RPsD2`@%aZZzs2miMF2akOg0DXy*#)68b$nO zORgktgzHeN@8Qly>u)Q-ncohJ3I7lj24FrWA~705Mu`}fA+Dsnhd0ZavnfempaaFr z*fa*t0J1u}X7x44k<|>X9bM&@@!YZ$p3RS7dNtv~R}NzXVm$>+AhA&!FE8bf0ghIh z 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

        ^9@t)gyMP%P@W1Y8MZU3eH|Dh+B= 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 KePX(GbpK!Qn~H=0 diff --git a/libs/potree/resources/shapefiles/south_sorvilier.dbf b/libs/potree/resources/shapefiles/south_sorvilier.dbf deleted file mode 100644 index d8d8f359248e19039832f4056153dcfb0a2570db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20751 zcmeI3QES^U6opd;8w~azf}i`~$hK^6Y*6~VJ?%ZHwi0Wzr69}A+`m2;ladBX>Oqqf zhOOfVC(^yT=zKCh4p!cDS8w0XX0w~C-|y_lvqQDbQk1*yTX+6*lp$HeAG-$Ql~`9> z*1MF!_?8*2_X&e>#)-$Cr@mhZ9_oknd${P33<4nF2zYP(B+lcU&>WWo2!H?xfB*>iK>*gD<}{-5 z!jI)XQu$po+5YJ4*~d5Dg_5n&U15ZhM_|wd0T2LzDH8~Tr#Hah^OvAeM!Btf!F8Y{ zcVBF0&s*EpeB~N93u+ri)%77XUP2@yS(s!=GF}N6%>1_Ejga$_&%Y{Z)WZd(MmV&S zMa|k)tOPGdIDJeR1V8`;&Lt29ccSQvnjc*J+CB?3o0|U;rvF&jQ^B;0328U;H@p;f zQ@=I--I&Mc0;z0A+vyc6c4gL@-SherYd00EjeAOP`>9O7IYdiNZ0}Z-rgEjD;N00? zK90nMrfEXc%S)lc$OzzF|Hu{$(**$#cr60qfG;Qi(TZP7*Gua}QMO3KJcjkZl-P9g z@aMkitR<9y00^8!!1s6k5lsmtG0je*hU6&_*f3K~K?gK|00@A5oD~O`Q6@*0Y_yd3WA#`<>_a{GQAEyst>)Xet_W8JTt)iA4B` z+^2Y$SdZB8eyh(NE0J-0ZGV&6-@u+X3pz9Tgp%XObpQWP13(4Sny|jLZZ5Qr^x=3$9RJT($X(>#_tq1>A67)wT!e3WV(j5c;L<}EPX6?U zuQKMRi=Gx~+oznWGln)~4Y9AVJnrppI~gFd=MzlbhTUKj*2MC#z-H?(H!c4*xKwY^ zUF(I{fIY*wjw+txqn*Mq~UJB`ztdKr2>acJ~-VT?5eGm!0ukNX9>$!7G5(i3)r`~ za(z3nwamLSo5lCcjIqJ_##-ctB_UtxO;VT4SB!el64pW|_W9Daqozdf4CqWElXrjp z25r_y)^xVWM(0Jo#06y>wuI?sJ{+2558ahKpm{s~z5+&wE0J!ZO$%$AUA zRT0vr1~+Y=fuA|J5wHHV)&XaDm7lI2LkkjYed9`#O7$DI<+9?O#z#g>q}w0TYc9QX!(d?4+C?_y)K!9~Dc z-6dOGkyrGxk!?!gf==i7IN$_vaW}hz$0rR*@_>c05W)m|w14y#9Cpfu-Z11i5qorgqMOtDY{4ZPaRc5+pB4VglkNj?$wplAg(iEONACl@ w!Jz|j@t2{~VkxiKia4PMTiz?sJ61p42O(D&r`M_caR_{C^Y71RZ>~`5FAO65_5c6? diff --git a/libs/potree/resources/textures/LICENSE b/libs/potree/resources/textures/LICENSE deleted file mode 100644 index a73899e..0000000 --- a/libs/potree/resources/textures/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ - - - -brick_pavement.jpg: -http://www.wildtextures.com/terms-of-use/ -============================== -All textures at wildtextures.com are completely free for both, personal and commercial use, however you can’t: - -host textures for download on any other website or server, -direct link to texture file from any other website ( however you can link to texture page ), -sell them as a stock materials, -============================== - - - - - - - - - - - diff --git a/libs/potree/resources/textures/brick_pavement.jpg b/libs/potree/resources/textures/brick_pavement.jpg deleted file mode 100644 index 69808eda1350cbf751239ce1e2b091365e022f35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97095 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 diff --git a/libs/potree/resources/textures/matcap/basic_dark.jpg b/libs/potree/resources/textures/matcap/basic_dark.jpg deleted file mode 100644 index f64424e39eb065542ba1c0e03fb6502e0c01819f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11574 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 diff --git a/libs/potree/resources/textures/matcap/check_normal+y.jpg b/libs/potree/resources/textures/matcap/check_normal+y.jpg deleted file mode 100644 index 6965940331c39ff7180fb201e0c703def1dab5b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16916 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 diff --git a/libs/potree/resources/textures/matcap/check_rim_light.jpg b/libs/potree/resources/textures/matcap/check_rim_light.jpg deleted file mode 100644 index e3703d9ce7d4e1121879df8791eb9aa5369e970c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18497 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 VkA0JC&>_`)-hG~Fi&j@N{|`n5o!I~Y diff --git a/libs/potree/resources/textures/matcap/contours_2.jpg b/libs/potree/resources/textures/matcap/contours_2.jpg deleted file mode 100644 index 2f1d94bd69943fa402e6a90a81c1f5464dab3f85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7971 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 aQn;Q)lt?O!X|@~v#_ig_2R?GE`+os{++N!N diff --git a/libs/potree/resources/textures/matcap/jade.jpg b/libs/potree/resources/textures/matcap/jade.jpg deleted file mode 100644 index 0db21ceb503204f61fa579e13fe134a1a8b83762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11421 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 diff --git a/libs/potree/resources/textures/matcap/matcap.jpg b/libs/potree/resources/textures/matcap/matcap.jpg deleted file mode 100644 index 559016e11cfbe312128053fda427ee1595237757..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7997 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 diff --git a/libs/potree/resources/textures/matcap/metal_carpaint.jpg b/libs/potree/resources/textures/matcap/metal_carpaint.jpg deleted file mode 100644 index a6a06da997f0bf4c68d44318252409f8d8af5bad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14689 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 diff --git a/libs/potree/resources/textures/matcap/metal_lead.jpg b/libs/potree/resources/textures/matcap/metal_lead.jpg deleted file mode 100644 index 7d4131ddfcd86a905e6511a5c147e9c636974393..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9877 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 F|1U|;`6>Va diff --git a/libs/potree/resources/textures/matcap/metal_shiny.jpg b/libs/potree/resources/textures/matcap/metal_shiny.jpg deleted file mode 100644 index 8569b924779c0f71a60254455f1811c5eaa48cca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22652 zcmeFXXH-*B7d99`svsgADM}|1q=hO?dWS#)grd?(1f*9Bf|SrZgd#nV5RejzfQm>5 zsR>0v=>md)R8gGxzTbQ^>-#k`zh>5&lXY&+J@?$Q?|s&@_p{IWJNx%5;Hr_Hp&o#O zf&ySb{sI0jG3M!pdbtAthK4`@9RL8J1jtfQ0@%ncQF8T)y9A&h|ErLzCb`N=%P6Zz zE2_vz-;hyMkycWXRU-HPD^vg~ivNzKA@5O8{~`tJsR zKLNA>G?%Dps4vmbP}9)T($FznWniGEXJEU+%y^ZPjf;zuje~=SPeg#{x)3i1$BkPz zgha(8fD+sSlG2jm(jwv#;{Pr}K}$=^K*zw!z`!cb!@(o|f4lsB2VkKCgaSgTCDkTHD%Rzwi0b+t)uZI5asmO(f0C&do0^udJ@EZ+zR_+CTVtcyxSn zdiLv|T@>Wc_P>|^8uq`~#X`1=^3o-$OSJ#&qM!^RS1OiE)Hh{lu4!4)KJa4|l#QZe zyPICx&`mES2iaqH_Mc$j5SCvO+5czSe=PgIX4v!pN0$9h!~PGu<^haU6y%Rb#RAX( z{5*oENiqO6fvBqtIV4g*&g3_4~ zfAP-FZ`|z8#@?5nVZD}#8}>z-$&H`iTy8i~FYZB6Jx&pN{}(__Kpq+=2QRBheg3)j z=gi=Q`~8LMxlI7_>&v)BJ`108UyKtzKrH{|Dc$>v?7rCZD`v{Rc(VA`9;xWSE8MX{Gw@)^`rAgKK87i;uc^o|oU1gTc^ zA?M`L;HCYddR`PX>(|wAn-b59n>insL}G1XE&LhKyLALfs=i|{ujP&))OV>_0+;5M zxG&QY{6MkTZKk_m_@u{Jg%vjvzuzAXW~N^#X#@E^P*gZc58y5TrP%tj&K9*cyP%q# z?^$E#S#o*X(Wd7Iy~Ak-oMR%BJ?n-Vu}>*k?d`nUTXo{-+^6A?ASObyxA0G;6nUrG z4__Hhymh+2YS8zT%&HX3(VVyE;s*3Jo_$l#`qbDq+0iJr&l&F>n5?cw)x%QDk(Qiq zhTk&$@zUvN1isnlFc$n_qZq-&fAy@bP5H;DZO5CRFNd{X@Y={_7Bs3@TeA=Nj;Kbq zWx0@=bgRWw1MFGsRFhV~?y6!=ILB%Hr2uQ6hrKB@eAjBFR<{UmnO^M@?r-7*_Xw|R z9_PQjIg-h`w*@48EMOcm2_5xu+PqSd#^hp>@$OGA{H4D`1n**LWv6f&5RYGN$?$%d zwaXMNA?P4As5$yzo5y{m@d|Lq+u39FW3_MaGD$mUd{NH#Njc*Eu3+VCD{RQw854pD#xcuqqW}o(|;)D0yW7?7xZ+)%q zmNfPkAax?pGj?LX`?4+q2KB-w=KCnA>-)szu;|)$wxB1skjT7w<)wh@D!%Jfh9dv`tbqdBWF|x+#2y%elZfyxm|`KSNiMM$>66A>YQG$QgiIb zPa4m6RjvL4_$-~QA|AolQX)tJA;I8S)W$v0I*tXGq~oet2f3ju$h?+de^BMbvd9bJ zcD*k$-=6S-Zdj}cc7)zh&t-|zlyUHQu`{=-2_hYS>%>`G&9EC`Xau zw}gGwr?N@|e)tyq`+ z<4UIX8mr6fFNLUSbaO-%8S;VJ-?VeQ+Nkt@Lk)TrzD)RSVyoR>86W`;FqHBV9uVB8 z5uNWBY+m#H@%3|zPj6VzLQlnq)gyctm96K3mJg_|z|<}s>=Ed_Z0~ix0-m%rUVkS? z!U_A`d(Y?B!H)PyMY)_+>gC7)F;nnRUJkY9Siy${cX=gnMLE?kljfhzyhJdFLLz3I zcpQfMpur}qM(YdHGcvN@JANY@+BILq5&UhU{|Ns;~S2+c(V5nXyNKabEs+CPw{penv*q)O~V% z5C>*PvbC!9ynFr3M$RQ2+b{U!Q;H!LXrIiSDDvgUDukPg1? zrwLl^hF?6JuvJM><@`R~3XT+$9hy;b?LP_eI`C*pdHGW4pw7dhH3Bq~+)Zr;`~Z=M zfcknJ4cvqp*eACYYU($UHTL413<@8ko5KGvJ@9dJ{xP&0a2&9vIck56U70E{Juy&dQe9O0~u!|Rm$uYmYZszL{_)wj`e z{Bn+OL!Siw{La%PE+B)`hDSbLv5SyBn_A!>tqvV{bwgc)XWi$w(Z|&ve~=$5h;wm^ zSbWX3Cr3y++kA8Fsq&e~Y2Z$GorgmQ!*{JZcQuRpeW>vtlc7#RP#;XWLJra;S%`j@ zqnBfH#ZalTqfP3Ad$YW;<+bbQFNR7#Af6_?eFqJ2NVIM8e?C8dS?eUtH}lWRr#-Ge zp4GzcA@2UhtQqD3y4oRbcoq|$$qBHs{P0^Dy>EHm8R{b%eT`Yu&!)w^^@xWm$u7Fl zmeD(}A222lT29*l2SqwxI9%2B+zik971>exu=IQ&T;QS$vG^y~CVr5P@{z1f>F>9A zdn2ccs+Di|^_7HZiVf~WTa0UyQtRbZSpCo|41SY z?5HX~6>lSjkhML;8srQ!J<<<8s9BaySsF@1`C$o{{ zA>3M~MpY=F-W{HF-g26|(6}4X&&A80fxUxrEnBukiXMk6{slPIt{8NFTVEJ+=lToS zw$z1Wiu5w6F!~4h1~Ep@MOD3IGX1mK%LW^g$ZMAun7!IRa`FhX45WW}IBU+@ToG(} zq044%Y?_$b)fW5H`C+RT&#z)rsQWELXG1l^GF0rYXNEnKD0)? zl|8%uua}~&tjG`rFp@A80kAn&wme7HtURBW5JhVf{wpD9;XfkP_A+~U+U&$yQca&F z{pj$n4eL{2e5GL_&OUahm#e-!P~bTad%g{Ecb6bRp{#YDHyeJH-ggi;9(a$*6U}A* zy+~@3NDNN6c5|I&cVk^6ph_gFze3__}xqEX`5zjfzAb-Qfp;>xKy zNv&z_vy)(IVFWD;{YcKr)$JM^Nh57jqJ<+mvk&OHc z;GfqkVpjgM(0E(p8E!`&NqnI*^Xm3Ks-ogp3@wsPp~(QCdR2zyyGucQL1oc;aax|? z_+sqZ0=xar_|r&8;w-ZvwUlA-mC%zLofCl_pZ~O)Hnxr3Q=pE#aBkfF&9sDUGl85w zHG!%vx7v=am+&ld%J8RXs65J%`+YYxl&$>pSKl|xrz%^r4PHOt4Hrs20veguG>p~> zx1YUsEqK}lF8Ji5e6C}x@FZ`}X^7kWu7sCk)=QW51*@+f@%T>CtInw(LigG_=9LBZ zggiC&fGgmql%eGYi@wdOL>LA&fq1>{ zzCib10NW--MQdxSRjXwYDLIEqiRwWQ>%}+lJ4gFbFF#>Ui$TW!DX_xW;{16eyu>NQ zD=SJa^|CcvP(paDbO8#PY+FV&BBB!0S#(|%80WNcDla+=#DdD8D&1T@uY`uhz-t}t zNp&{|1uq3uvN>m203u@G1bAPZZY%@ld@p{)`4o%d|E2h zH}1~u+S3%@+j>*$ZGfc;s)xugxk^-<=%c@Y%fGL*#@8;2yp?;Ue6CgnRXOpO)#8tO zLipZ7+M9ou2JhjOzVTk4=LMAi*%fL-D?jdV=D5Qm$}fWxhvyNxecb6!f(3SD&IE^%7as(dR;s?5<;bArEWp7>DGnU0KepdfR zB=ay$xf@(x;7zOJFMZKuey(&B%FV9{>!sB}0@51ZGl?MP)|efjdJUNsZu@)C_} zDf@7QiFg<{kh1F-mT=zxvs%DT>=YNTIARW`Ug1AHt5CNN_OKBXXp^G-W|Ou%|yJ{$N*5NBy6#{+fC-`52K^VVq=Ei-a(*XcQ?2omu|{)M^y@i*79D z&F~+U6>Pb0e%P`4a8UodS!f@ZcG{x5bylzJHHMe|xJW4T+D&p44)1-Nq!RWFmc|^l1QR@4plNhO(d1Lp8its-LE9<=uiIy$7yF-Mp>06EUdSC=oxaTL; zf!_!xj)GaWO5N#`%5*L_Tb|LGPPK~D=U)a$f#(s;eH7_W-2MWB;y|Y?PL5v7?c+%X zPgTCjlSPlxyY#5q;w$&uvKp8o4c712>`BdgPlY<4eri`f2hZIqicsPPFk5_q@4saY zwX)wE=?3G~kwIdYZ!adlNs*;L{)pUW()d7{0npswnR(iX;HYODWZN@P==2wNd+<%` z>&%@^BY|rQFFc3cBb9X@i>+upf2~&~+_rc4axTO}Y)ILY_aHpT%wRJOu!Ma7+h$1; z`F=(n*5tY`#49}fQ&;S~R_UaBV;UB$VDhe_vMlXGMXw|qAPX{SLCIqjbhE_8vsaR< zgl5X?aQ>3~Bu@~z&EthZn^;iq8;P@(3GQ(&xQMlb=5ip133! zv;GB;PU?O36uU#qSQbuOwB(C)lWqmq3-qnj96Kp(A*UiGmK??2lkRy;N zY4F(YZOOYs_IBNKI@Ba-acEBR`&Sg55SPKSCboR`3birxHkeM*I`@%zNu51(Ur)9n zjg|nWIbqhu7w>XuEiO0w=+wUih!FyBguje;^?wq+QAcq1H*`j1paei3kE>5>KHa=W zwe3JW`FHdwsr`DgRzW*fcA?>ic_D(HkNxATox=9oGlHn^a;<)0@sU8DDbFkU#j}*K zYSUp>QVk6z+PX}1*van*L(hzdGU?~T%1no!n}9rFmx^J6h{N1N1WjP}h#WF>gcoolLX z>U=$^HCIYGTvF!SnjY{|=!srT`o%L~pP@QE7y_$E@RQGuU*$=cDl&&x@(s0yr%5B4 z$-}(ChC=tXSsa7omgC~9LzL=OsQ7@Pm9A=t`XF}?anZ-r6-epDzBa#($>zEp{13cq zYey_7F^q;^*+S*j32n3!QzcUNlL13JSH0feNg_F*<{rnKcdh2l)OyVtGug zM&-w;m&h0{%VUtx6;a8fmb_6}LWz>_)1)V#QbPHX%~!sL*I-O24U3hvEq=y8DBlc0 ze=KK8$@e+ogcJgA{4x9n*fpnolYQ#Dx7h#QGdEXP>L{a4&Sf=GD4k0qXJwH8S-NI{ zvOw$?y60g$n8d4c(Qnl59MG2L&dm5usgb&{@&+rmD^MK^cBmeJs)Vx04qn&5j=oxZ z*%HU{WPKeJC<&t2aj0urz8{q%2p}uBeX60+pBwvi>gSdrV(XY7zC?>R>$|x6JGD;& z&Sn%tYC2ed!XjrF`|(g`!`jcgo@M6XPYPjJeG#q8l_m|-I6e-_wv<$< zI=Zf!$hU|BHY=HFb3V_!KUl?-L}@uYCY|^7ok3K+COKAuXhe^`rK}YT3&Qdy8+#Rt z*|MlzJlGjjrb_Y~sJx;JNkc0Nc8tMWd50FZ3+)VWEDl%0NhnvPqN{4XcC8(u1~-$P zwL-QKTSj#tC@5_?ghv1+LU219+i*%QJw-2`L0#|HJ27&l#MaMlK|U$nOg1(0tJ&wS z`1*tO8^(6`rfZO$U=VPq=VsIv-C_Ne(}KN6iZ8LDccq!XWSa5)F}XM9JHwarT7&7d zcX>XuWp#5jT(qdh{>uk`&P%^+UczE(wqL7w%|Ir;jm1|cFQ>0$+X>%=X2;SARSOo} zv;J*%>gKk5i2NkPSKN$?QcyQ+7&o9@>!{{00jRr>Qad=0VhHE*r%`eRsT$;Ih=|0{v7G=`L^jGmkqBE+Ss=IYMD)wR66hWZef zS>`<|;i!Aop#tyWPh;exJe(CrPLYW@Tww*%zbHO(wzdnWnMA*P!Z6h-fH@0}{@9hq ztiIXD{U`3k=F`v7petJ_y8(ceSpJQq<`@7dVP7CVpxyFSS>inyy~D&z&{2Y&&_m`8 zr;yrhNg>5i>mW(fHJ6;)%L&7*qb8UMo<0t-_6`p*blEQa*=6gAcZQp`?L5_KK#m#? z$_QADLT4b(a{k;pfPKg{5fT9*)PZ~l0oJVI+*lJH>54?!N}Ir5goC&;){HQ9>49LP zh@zW=%z6}ipe|Pnlw~Rg`cU88wil6J;0BGYxJoQ}Ud#ry)pd)Wudr3azN0J#)(TSp zcgGD=!)EI$D1f*pSStn8Lfv}4CPz!q8;3=)z0fMprXI<^f&D>C@ZpN8b^=6L4sc2r zGb5swj`16<$Jhh=bI2O|h$5=QbKBkcDFQFdKi#e$AdyiHf?w0#fi9{PP!GkSEIwE# zWnY&B7-gixzP5uFo0Qp(BB2uW8auCLTO4>GUUY1u7~*NUzdB{h_+6bLxV4i{lvb#+R20ooidyAi}ziz zI*uSXG)4$OkALHO5Akq&WeS)O|IyY3^L|nY@Reh$8U=XJhUvKGPw#tNY{u-_%MTX< z(|5qQVGLqC4`T+60|_3xsgYyqZQiT8t~0ZX%6mBlD~_z+TSM)#I9gs?=Dg^7+`S_7 zwgHfu*=b&a;O8NUP6gRUcEq1u@^8HDZuME0JSjkUM?rhcIwb5>X6tEW~e^hfXH>6`4Aenjuw5hzQv4IT`W;#pte z9axP1lb#uMq-I!$+Fe(*O&riXuIOkt_DpR5#qjgXwQaoIE2aaK(?h@H!ARX@%C+aM z>>IywN+#Qdr-DE$Li|V`!^>a~iGu3c$RAQXL<%786Jr7=(lpadhqPv(_?(4l{ z_36{$a=rdlOS=}&bjC-|RIE@@kahsnu#&0^V#7La=s;mDB_Q8qTu9W9oY4_x&;Rz1^7^5yaY)CoOP(a?wJM~KRs{yEW<5}{yQH6=B8x+JSNTYo(NH1=@s z9kI$3<*&(%z)8L(An)_I^rIyoNsF}hBWiA`6DN$B2@v#``N|Jc_YK)$p`+fWG^$WT z=YB-owK_N1X;Q@8W&Q&M~lg_ZoH_tZPS;Fh?RZ@jdBLf+q(Qt)UVHfng z+|6?6O26PsugK#m%8DeO6p83MCjC2MtFYXyqLIuh z{61TARx<#CGTME@dJ68eUk3PCU5LP94E_D}{sIj8R0{=4Xx~VnHp2Em?+V!O7~^_= zN{=S_&ORN3XdDWB_{DRan2@d4eZ4Vbl@%q^hn z&(Df9ug$qd<>wSq^M#x1r`0x3Li(p-P*E{tl+>8D8(2MS=O*QuAnVm2W$O8plU$~nfHprzoBF@g?gptvm})yeUkF&j2@+6pqLn(PWA`ueRf;x8mL5+ zg|69EVsDc5bKrf81FuNz#DV957X{k6;s9sRy<;MM4&g3zsmj7rvFl7gxOMP~?B3k4CCVnzisdW;#BE^>l*5#+gjl}T6lJ_=!o&XX2w zHd|#AjaI|P>;)~ia%*7^deFRgH&kya?O3m+v~EPtH?7Cjvlk>7<{gM=4#Q=8p^hMh zSm-9C?^K=y_b}21d;3W1gK?}0)B%=nn7ro3o`Y-+ViR*^LfD2ut%N)>q!1*X1nWBI z?ootps?TZ2@@hxIt-3Gk-;&HX9pd`mQcw!-tEbYfTxcw7&0L_#iHTB|?LR9HQn}TJ z9*=61v}n4{yZLWK-WU>gfaGAktd2cz%gXwffpE^6(B$x%p8x0B4J14%Kjypm z)ogK)6fE<7e1uv0qLUhwc#nV0%sgS(TWft0sp?&2{~({{tfKGEAoHT{H??Q%>-U;| z#OS~dLUVq}tQ)=tN&CG&4EdFr&EMUHBpoGoBYhq{ah5n^ZO>g+Gthg%{)(DBn^eQ; zPJz4k0iLe<#s~R)TFSV6y`k_&nMx_YwN}t0yHqeGWncM18xa>c$e!p{My$2#eK_Bf z1hp4`4Qn<6uot)|T+^dO8M*qXIxdA(dN zSR)G;Hk5(6vA}hn2?1ZY+%g zmmwZh3ks9geFz_J_p{gi9E;+lCp6hRU7K;A{IMM54-l+g=uJHAc+ zKe0#NQm%hKboz%2!0*iqy$1=)gqHQHyM1EXRZU3{J0Q;;QyhXfW-x=23JT?_IJs`m zO8M-lHV9b_ap+2lNJ>-KzoFkdTol`vEY78Yx_VCz(Ee)czx5^8+@JaZ!!Nn7w6Qb= zOPgR^-hN26AHP0`?oRN9&{*4L6O+SP!Pcq3(~?##c0wnT*OQq6D^0r!ir-hLa%dm* z4bAy2cxDvJha3qyUp5Y~RQAX5K$4GSz=@N)pJ!C%3-YESqv8vYBGH zGtKm{5nHyOz|EGK?pb2sV0N0O`-q8F1d+ROSr2G=MW3<=aEYOd?LLvN;)W1`-*C)` zXzQA;cs^BRiXUJgqphhRCd^KP)RcIcQSAn9C=tgX0?ik%X zF3$@F#$d4M=2z(S`^V*l%0>fKm6u^0tecQqU_?o~(N@-9z-_SGgWfy3aJ^C~YE~wl zy>l2Q+u*@5o~=$h0d;&qgdm?HzBw@?@MIrtQ5yj1wqA>ye{G2GBD0|j0YtY^naJ*# z$=)i@Pt>#ZGhigaQ}Ba)n!_lsgi`hftA0^n0~-j|kj}*8H;B%?ff`HL`s{13r{{gC zVZCYhCKUA81=XY}(T^m)YJSg}K>V zxM$HqioH|UXNL`Z*kVIa`zQ3bpigzz(Mw142j<{mi2&821b-Y`oyagx!gbM-^aIc2 zvkD>ikpqwu=eyd=Ucg`GQKZVUDKP&E6&_L?d4g?pI463EjmpQYnhO)@Gr@KhgB8qh zVfQ&t4Y0E))?f~2$*fgG*|SZH zIYTbWnfYQ#HC&`!gmt33%w*HU=9I_YkFl1Xev_@Rk#Os>89r=ST$!$5K-GB%`%@kh;M1(+O)hL8H{(aFq6pJ zq1G1WCpM2q{NrX{o>(6m#+D1BUW6}VQ#g9QW|Wrjurfd)1y1hx*w(t;8)WtAXt{CM zd%sv*cwID(-OP61k#R4mc5bPJG1kHQA#k-}8P_;vk`qsCfC+}zzR$i+^N*&d6AplP zWr0bzZCDyXp-rNwpZ)1}Au{CXf!7s!J^nyEAbAo2@4#wZH9|WmtJ8q z6r6Ts(i|o=-bWFw-l+7vc!h+KOzJ?MvT%t-{pW~6NV9CL6CFOHc_`C%s*XvloVw=F zyobq&`Rb{&qwMJ|+*-3)@^8J?d93ciJebg0GQjiF=D~Kv-ygH-rHc;Vm+~%x|v>1C*9(AkKmoH zHf;kgXjI+AkyMh;ZovFPpW%A@^*R5(7O>YrKYD%lp74x{im={~Q9%tb)mwSgQJG!{ zSTL7sz4mfy_>c`ILBdw*URaZ5SRpY$)JxIIz%(bsy|Ajp3Q`GSLCC?D!DhgACh6N+ zaD_iO6$&_PIq^lZs>>w7JJo2g6|eea+96oM+rIK4oIg7OIp5-~YB|E8fX`II)0J{z z6&!I+EC=i85Vn^n_+7?~UKEdq}cb&JA_(rbR%|Uwx zwJlZhF|;-j_oNeg)&FM?sd|_%kW-rEuYSJDI}BEdGOYx8?sJg((UmkbD2S$@S!#{!nlK|RxK{?*R&y9k{1joji;Zi831uu z^6>JEH%GGA{n`4!^c-0BVbtR+qfsjN5~RmAI`zNqE_`HRdK1nS1$}#ylU0yUw#&<3&|y z*1qATNnKf4UPZ_`MeX-%^C+h7t|s_VpK>M)-f6h`^Dlsk@kxvgg##@_ zg#GZ|_sxpy=9ite{6U~EV+8td6a8uA^>I;hsqfzevL7qP1}-iApx!(d;ZSTLK+_}! ze#+!(Bwl;UgM3x-F{01rjoUD=n3jEGzPZiH@k-Mp*P=nS?NpM;R}y<=nC({ib)EGi zZvVblyVo<}ieni_{^0epo1%K7qvD8ov?dWNcPkDt%F`8s4amT=5&@WHt1!f> zG;x)hdTN5TWG{sEb+*R6|y1K$)HJ%us zcST8OF16?J;iS(AXpDT=sI{Am=Np%zHnP6S4WJ<-FP9~#wj=NLzN1X`Kt{vxf)=S! z>H(Q46)l678|s$(LUA_>*FHERViKb5Lu8I>H>cR>#vT}8*g<$5Jz&{@C*d-*Lb>*I z)II@6X2!UocJ>1QBBb>Ju;{%jPm7VXhfz6@)HOsV*_?(9NjBR6h|VJ~UdU~DI=W>v z-L%62uZtkM`(@!_)zJ)J?~`(0fN7@)IAr`s1|L(ApGO88#pi`cZVKR zSMzn@wtXv^(A?8}fJ!Vwv|<;Rsx`hsfA&6BUTXdei0N1oxyX%@>`&X*t615f3XJ>< z=%ih{Cu_rGa4=Yo@cFj+gx~AsCw|3=he=35wV}@V1#Z?2zrTRUntJSSsNbrWkKFU$ zHqS3Uz7GF$4bW2i_JG}$cz@V`|dGuXf{q=mq2WG8I!;tI5*`I&zI^=){wRQDI;`XHcEQWMHxoz5W zBoxBD8xKJ4gW=XK5WUJQ2h^9QR5B6AJO(|PP_cHX`d;VQ>WH(Nvc7MHtI8N(&g@_i zF9%l+GKi0|?NaEnSzPj8#~LBFlTa9yJ%k7={9%nyx`ljOWdRtXjT-#$4RWh?@krM6 zhn@WyrnXHD!2>)|C@Wa3)0GM*3Cp?H=}HQJ*V)80V3{Ogu?{CV0BJmbSbP>9>pC!M zYM`gR1&|)5kvdk{WiGw;lQ3lT4={Be7EJvijfv zPA3p>S&A_6xt|Qd@@=TIiLwi{X; zTYAMSs5x#q!A%vC!#1g9Hy7{v`8NEcL52GO@FuC&K)ITkrb)cXCyYHP1=95O4sm}7 zmM)SX5}j#R_lSrKRUug~AeFOHk$;MhWIehXf|t@%QprdljfN?H;FCKS=$j{|B|E36 zVmv3pZ#@jT@fYyM*2a7_o>v_>K@DBs)ZhPh#Buz%?Dls(Dir0)=djbR5-lbF9CL@H|-9;)c?K8Aqtrmp0Uz=`B zcV?NazYDCrTc-oGGay{ugeweBR=)$8&Hd9prHC$&f1i4Gre`PW+e6k$_qj4XLX2&% zFT9EqT;RbEz=y`NK~idmI$vM2L`&4pa@WO4S^Lj&Kda`CdK3KmXj^5M-o9U{&cHT{a=>yl0vTI7<+8(gpTKM$h z2r2X11Bcu2kv1nnQ()Vuo5K|X(M%gHQ|Cfnbl`V{{}g4HD^WN@<}o!t0nw&)_Y1A!=h7|4*mOneCZ1b;4XPaXJw1{hdb}6; z_7D11O|7Nhq`v)EC55 zRjNvaJz3@fR$+vaO}i!?#GI5tU8;F%x^3{~fx4XTa2P~Bp~<}yHO|XW;|^SNl*_<% zP(kYiC^0U*7VSRGhA)&BvVBC}-61`k@(-)2`+|2f`QxRt9nPHbG(2_e1nWOIs^f+) za~%zAJHe$noX@Ca{v_eG{eIZ%<~P-}wtZB_)2%bA%t%s?nIR$b8%pa09XStWcBjw- zrdzU^X4-Q0bEB3eY|1vVi)qWCkAaD9^oFqR`unnA)USa1>1;46jG?E%^ z^A((^*HI3q8K`+--J%AZ#Z`S&#>tpM+u_ZK>rn^9ksIGfRJ+Nn7C~BAKB_e?CDmo6 zB$O*Wu=a3b@-$qm8BwbHrdrsj2PV78!704=XDOt@k}|k5X(Yi09hHlI3xwL3d5Wap zh8L+=+txsu6K)yOvKIuZkP1?Bns(#hRYtO6yy&Xsdh=E+3o%LF zCS>paB7HiQ0}T zA#l0O84~#Is5(=jED49%wzGN*e;d4j1O{VRgJJn+*f9|m_jT+5u~F9by$Mef8!`V) zg`o_*N?Y+}0R~*|?Uxkbuxb@SJQdv>^~`77+VKhHC1uI_)WPOgFyIC+zbW*DtZA*Q zHEVCWF=IyqOa{%xbr%%BWv2|R))#5P_R4_wUMD<(g4`B(S^o9 zOLaIfVAI~}wR3`qtoduC;rF|r2fDr?8MeE8zFc9tzYtO#t+Lqn5QB%N?OTmJGPMq_ z+j_Wx2ARlNi@_(KAS!T<1{?0=T)ME)R5q|8QA>ma4ybWu8-d=G5vcU|oI)u11AH-R zFFaHjgoQA?)d(*;$`nryC%)LUxI$1wcyhzPlT0=;;Wqksw~t|9Ii4G|>-8mn0UmvJ zhiZ_8KFfS9{ts7?8zoN=CvWFI-dotR41eJ}{1-4|JM3=b(s&vr9sw09O%nLn>A&9~ zQE$1g^A~`a_+BM&FiBGUJC|JX^sV9G2K_S-fR+UpL~W(8$=C55ahLHqQ-g)oeRo%d%Is`uv`nogS^56 zVEGCvIKy87@bR_>4)|Jfrg-w<3c4fH#g=i3|IXxxId-ry`}ZMJP6DL{qP^L&+1f}^ zpjjwE8fd8}Udc5ZyURAHzKNL`(b6L9ne&os~Q01 zn*Lc#FhzHGH5EH&TDA>Tj^13gaW(T|7lC60Niol{M!ttOpwZK@o|gw zfq#ky?1Dtq%Eq=p?{k0HH2=O<2%kmD@hiXw{sPiQ@7la(D@utOJx-nsxlu(d+KG>d@NR>+Hb_%dvC~=x}tR{E_^4zOza@Jyr(Y z%7W98{d&g|oy0F;So&O;7F{d^rLvv?yASJS(Wb*mah1-RpGify752hp%gNbR%GZvv zCeH2Gxm9d*F@^)Ru1MCpCZFs;7_?vyWO+qbNiL`PVRx)n?RMohTo3C|6`+#_$<7~J z)F(CgSYu! zm4u5PwF(%uD?GwN6v0F)`YWSK{J=L`;e=qV!UOhSP(#GvD%7ikRHe&}#U0_~(A690 ztBe6;T!6jD*zc|$VV!m9&xwjSIiA`Dr0g^600nA|J5Xfo@-qnsMR=(M&WZp@BSG9s zS%28zeyitxU%av}{9)w}15^N&?qta+1)7rYIrfd6AIa}dzb13~ifwc2ODVgGkjqlh z*vqePMN*|523|%{yv+x{Sa$m)_s8oCz0cE$BV$N7*BaGN+B4M4-t=XdIw7lT%d>4$ z!H-q>645;qo%3xe9xL^Gh814ql@h$3hac4&y{jmH<6##obYQ-z9MQ@;PQ3;OqOr+V z5~UPg*U?Saq3mE;HHZkB;WH!$i~ViYIz{=;2jMwigR`#wJT04Ed6|^m6j93LkRH&PuPfo0~OG10fbpq(IqIYkkW2bHi|$*IXv-&d_?c zK5*4)dKHom@3I_dc888UMhYHCwXsh)=%?G|vUq@V`rVWRg!0-_s!iDg6*+zvgH%Gp z_pS3yxia*jXmzBM0ivS^mM_VD&ZHy)m$6(UPpZeKBR&}4?YH`nwF_eXv=0y7sD!)# z{&{V+ewl})vu_XUuXKSkIumvfS@G!cR$Vq&zqF+;8^BsojNZzcQy-Q8-C9u^%sN;X zet3l6F*raLbt#YPSWbw#jf4}qnZZ5*q-vwEx_GVuFCVWhq60w*9Qf|N&RQFG3as>& z-3f*t8JbcAL+2~<+p!~_SLd#yN*@ssu;r#*o>;mXiE3tehLuI8g|thQb=`HmZT2f* z%nwp*AF2rq4S)<09aF*NsXe4+K6N-v8(FrWKE8zT+xRRlGz~C6wV|)7IvWp1f4>uO zGtqQnhZZ1Yq(1|ADg@>9G)xx>(`CQlc8I@YBcetEo{?27nsHLf+%pVqw6!`#-kW>dA;w3?|73DjF}1&6kDz%G5}S<9II zmN@PuzlMlGL%|}PE(pSPSfn>>83A~E9U22RQoxB%$J$vzK+s2COEvM0{6%lDv6$E@ z!TBzuWb5eZ>Z4l~o*#}%sSayHi|aN20J%NCG-qCdEflu(gNHvEPZIFt@W6ed%)`w^ z!wgx{P@uHlRv@uYR#HBGDM-;|4$M7YQB7`~V1uNOEG-zvSo#dZ%}el_`<$ICL{nqV z844)v1!gDWE^wz0>H(^K*d zG53$F&iILqq(vfki}EJa|DiiM+bI9&=VbG>PxDpw5BVj2(n`SS9^>xPJ+9gNRCtJ+ z&`z0lFdMKB{RPXSkFwO_08XMNc?yXhk7+G+*{AQbS?U7V;Xg`oV6&Yzd35`u&+n$q z;T!d;q>B=N(}0trZw3=hqF+gY82r7q+RYA9gPwPq-2HK$@_cVHgjAMce`dsqFF~NQpBV0^O zsQG-o>+bs3zkp#w?zeJKF$8RP0M+?pw%n<|+#%VxC&!94$Mde@`S8KZH78}KxV@p1 zk;cwOmk|>Yt?!{4bs8!|iA@bbuw0qn+P*FNTy=NX9`$wI?uE7azk7rn3!*!2uc^5% zThnw44V6!k_M)gYHKs#Mn_62C@^hOinv#UlZ_MDX>-Vs-Ur!3ysBLTs{6&(?`zZYa1SdFa-eA+9HK3R zUfFTq97WEXPN7H3bv`ckZD7Fd$VXR{>-dK@xYk>5?Y<7MBRJ1PU>=Tar7w)py{+y4 z9AgSn{yN@cFd*f~?g!w9p=pz@aeM6)s?zVq{V=R#Q1KC~ zc{-^D{vu4K4upwe>{K;>9+X`xWCWdr0OhTp79r;w{k|#9E%HI)#~P*Q3(zK zBewb*L!W>8*eoU>yN4VBCq~NIRC}J3!zLtm>4y#So}Tp6wAHiB<*hyeg`<9zGx*H& z@(w>oFuV=pCxLa_>R>5Z{Sq}R2rQFPvVq$vy0(vaR{>{9xS4B-)kI*yCQLU|M@7Bp zt1>kcsH{;$2cAa=Kua=AD7-A$O7AdlqJ}LGmp1&vj-?BZGRjF*#IN;%ApbPUsJ5aR z;NEiVPydilg47Z zL@TyrLB=&$^wSZa0FEHy;|W6!qY2WzK>i4^>Y@G3%N*qg@&5t3N--mAL*Mp=O1xTH z@r}Duh=m_zX~l+B)XdjNAdmdxs{HbN_q$bL&H9R4iLu;?sCqPsccdna_psG0n+T-~ zn+)8SNWLa?G}kQOU!i;Hs5b|_L~`Svj@@oJ7)SNh;kOVPKr_c`*+JNndh>iI1l(%!q0quXEt85AQTTm_qA@ zbMo?rXx&~#4WdAS;1Iw|6m&ae-&no%Z=>Yy`rKQ@($0%X{=YPvK6tp8od~2YU~K0- zlz&*rB!6rDhP{S_?m?^$2gwc50<++QaA7jqU#t_k zPn}QbTq5Y?lCR$0I@KFPim5-E?M`9jdeB-_>a%tfQ0=2-Y-Zm6Q>D7ohm}i!Q!3=~ z5*1b}yU)x!5FX_;^>dpK0DtZ0=DhWrmbu}qmk*U6-yQt%z-c;{Hmy4)K9L}8%x7H~ zIGHfmIM;m6|9o7@66MUrX^;Hspc=pTw}elkmaDO6wp2NuSQC#a-*bDjKB==NYf8B^ zhuO~=x^=8+pzF#U@zdjFf#N^Qm3nhdla)7t`^#k+x9d{LQa1E$D+x$3VaDkp#So^l2HtwataSD4p3nCw{|ZfDX;|; zft@6r)i4y6m!AFKhv-a)ywS+6^j~CXR zdva^+9BISRO_|WhEzU)jFUkxx`3Yc>BkBCj6n~NKrc6A(oOn5~q=Lo#5($_l!vaH` zb|jgtz&9lDC@MK(9dMZ#T#>J%3YW+csRbwa8@v>fEexgKx(J$6gm{v!$Zo9N7sb~P z=8DP1o5$PEB@9+_mIZ{{G7iAjj@xet^zSxB&-qaPTym|6YrXf2CuAJI5<8ndvtLW5 zBRk0?-Iq5Up4o{UN7shrM%Ki|rST-?;%5u8oY9Hafc3J~f$w?Kh->3-j;~3*F3kCi ze+2YfibMBO&tZXl*apyf$XDWnyygfw)yFC8Q?{kDO8Cf9CF5i~E93Ozu;q#(zGKfE zYJ8CCTRwpwIuqZs!0oXKPY-?AH-{7aTDoPt%+)#*FZ8fY?a-y}FLs)?^XecYi)Fk| zdH&7{b-R=5%_J&1eI?`oH|s(B6Zg#ONp5AX!PF{4{Jkk*HsUEtkKcl8A(&D8!CAIB z3`H_1-U1W#xe$4&A1tdgdvEbBu%&9V%t3i~OKB=mL?FIak2Uya{%`5#~j-F?H ztY)uH$@llO)vOY)eihM?P;PPxK#T^*0gKPfdTTKj^XAESg@lX|+G@ zdxwy9Z{YdV5W?r1|4gslZrYOS8L!Rk{<9J3Qgfx+jf9ub!){hRv~d1ywVB;C!E?LmD*5tl^n`yUA)4lX7agb3>CEZ^{&S?Z=*FO9V!A4Un39ne&{dzrnk zK5dEdn82PIku0oFs>qg#C$PZGe*l#J|XD!P|5&r4MLUCI!dU&Z1U8LWI@{Ta{;#zGu%RD4G zi_O~_Id04o8B>i5%jo2d>Q3HqtT^ColI*^8e7In^ES3clVe?$z!yqjFaB+I&KukoC zM;(QAOdfvyHTV6Doye4Kr%U|}%9wN669ir{9Q!u1N?ZxX?8J;TF5Ee#*cx-R{Z*a1 z&s}=LVAni$lXbdN1-_yyp@!R(7S3u%!0{ z>kAj|4m)pLogIYVF#tnuQAvrh{OnSF#$R&Q1MK@)d8o}3KK-ce=#`j`AAXY05%nee ztROj;pEcw0-u8^Mv5pO^|56-Djst2DPln(huIJcQljo&eM-nbW5FAibM&vR(sMX#I z55oudbq`wEc<&(4sA%*5;R~5fV)f7Z;g2ft`Gl)nl|+5W1`qeYI$7MmDsnv)#`ASt zF>tU6^=y2y&RIA(0AP|6RgZ2#Bnyo=8Kxzx#}<8*OG5S*5thX(`GRd0m-0(OhzoYC zw@06n7hsOvRgZI8LB0zxl>(nG_Y-$+DxjlQQ!W^<2AZ8=y(KPVn=6m3O}Y+7O3zeW zC%<(oB0dstt1##*p2JuXV;04WZJuHR28!&%S`+_Da5_AP39Brs1jSZnu!Arx@KK^j zsfk}$v+Y#-K3h~s)bTXUH=i3|l&G*$5cqD%pqGo}0BYA$NQu7m@{2Vy#pQ_Q^x4Ec zh*^G}bH;1!)%xj^$Kh$$ckEi!M5iEvN0)5T!}_XF7>l(}Ri6#Nkqp#XE@;z3WI(fc z6S#?$qb+XPG<{`QP1)o2Z;)r^Wx*EC;8e%p5TsP816}B-aJA+dmWNGc$9aaApCEGQrr-klSg;{Mk+l$SvcEx;;MoQp9?)@2-*cB40LE3n)e)bkzL> z(;P62M%~Hf<`{E={+A^U8+g4X14N>pf@`<~`i`k4jzMTO`Hhw#OvZ^Py{eq4~ zL2HWT3c?v7_PlPbVos$#8klVOMXTP|R&>o6JkcZqQ7)Cax$nMHK|qXIC&ld=CtS$x_6LmB=7@fUUYg ziHw#9c|}BL{_z1q=tUpw|rNnv4iT~2n&o3h~3{@6G*Y7moS&bQ- z9d{z4yKOt|1+8wLickciocfJg`!Ri1dbw+TE}EQi@Sv}v=D_)viFmt~X?4~&pGR7s zG}_~x#+aV0>OI9$_{|8Dxq>lhp>0 zK)5zb^F#CCf2l&Qi$m`yGptbz&whPrQN?%;BX9?1Km58_gOHOd+9*-Rd*IdPDawRk zv4*E>4}KHNn4T<0Q8m%#@H7r>y~<$NWz66aU?)DVyRAh<3BXZ)M7YnbJ(UB(tTyXR zrAHN%h`&{LwR`cVa$mKNwSn_*ZIg@)aiM&x$etq(gePg3NAn*+oo?Mvq-)+g;SU_E zj0C=~KII*m|7TuEuMLYr+31GA&gnecaUTIGfTlul$3T>d!km6N9al6(2tI~SwJl^R zDq%6~GDR$kK?Y$FfUYtCMu8zf2Vr_JE%!U++|Gcrh}Z)Mn{-zN`$K}7KW}F~`JwY+ z(xu(5tE~v(zF4~NgPoH}Eb6wRcC{bs-`AP}PoN(^8_hmBiS_%W;9}&dy+!|Or%iLg zcgyJLk^7ZC3L7h{V`ruJ9lgmRcF&31J4uJ!+l{MnVfscFE73#kqYay$3RVma>w^cF zAvhDRHYF7ZS{qvgg``EVuvM|*@tg8p8*sCg3rGOoP|de5AQ=AQ8vnct+W&VsUof5u z4Hs!C|EUF=SRyUW4h`fV!$H0S2;PV|^rq6s43-GaI7~^8hKv8yi=Ohv3=Aaj>Lv#4 zDgK&7&JjOoN=Ppmj8VqD`oK8SKyXLRcvsCR2hqfJ5|1F-h)^Q7R1Oqk^*eiN#XY&X z$K|V7q$w-=vhG~{H_7FEy=yh~y1uO5*tXQqC!1E|iMCAiQN+5pw^|D1Z%TaF!{4B# z>EhhiBX#uNOTgM1@ae|PM*dxy3cYA;W%cIhMnx>lEci7A@JT%>ms_k1Hr67Tz}^ju|kr4%+%ilXQ_lo58Z9ZY~|HG zbE6h(#uPyU1%FSb!hGWN+xOZS4`YNr7H$lGNy7lm%ppsp&2Bd~sqyz5VEE$#Z_2lc zw96s?8zF(2*nq|xfY8!*;FNy|WL+4^324$YX-75Oj+ATCgB_OMH@#S9K70>&JSwwf zkh&e$!44mOHL;N-*sWu5D781i z@5Kip=Z=lapv~i%dIZbSOZ*p>$q2OwPRp zVHSHF+6)0AX9AW29?)5Kg?Kz!D<6kFq>PZGDFAO@u*)_@R)^N-II3Iie-!`Oto}y` zc<;woS0oGwqg#%^OnwhqkkHgMUZr}EU*jOYcN})1gx6{f0k%cGmC$N9Dekv6zyfQiVbMOhis?5 z%}+E@D@B`agMBFvIj*)7jg9i6n(fJt#nufA3kR~lG78QwN72H^HV5rKwaDJec!M$T z`zqzLbEWvPZTtFGkauh75tk?5#j>?_d=;)BdV>*XX2@zsAe&8p9-si+YOSIEq+i6* z^?@!{+;!1V-Id z^byk{x8K6)*fW;^jvVypjCSXU!(IU-34shYHfByz9MaWFn^#C?n`Eoe+ zP&<=ecoo1&h{^?Ep(|~%DG#eUNq%S6-hV}<)KV~PeK=MFHG9EU22K5HF+(ezL!MjJ zkvwXxY5EN!p1+zMw&FGI57lH=4ivMR^>V+*zVO}{PYXISI@Gv5q37ngwTw^M>q7>@ zci)W5|6aKV-8obFs{qZMa%HXR?s>}LNzKE6cKO#I51gmJNY~1PRt777x^bLWJ1a8R z!MyRCQx?7!*KAAD>XE~NCD$GpSFyXqpZ2bGyDf4H$JlRf1*Hi}L&Ap>jAN5(o zPezZ*;~ke+Oy=^)fKkIAE+7auPN#v$=s#>z0QEs+7+~eWbv*m!#Gy3LelQB?aHPXb OSY>kb6yW>s*Z&2`$=o~u diff --git a/libs/potree/resources/textures/matcap/pearl.jpg b/libs/potree/resources/textures/matcap/pearl.jpg deleted file mode 100644 index 1317fbbfd5a3baaddb7feb118dd3c2badbe4a5ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15568 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 z 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 diff --git a/libs/potree/resources/textures/matcap/reflection_check_vertical.jpg b/libs/potree/resources/textures/matcap/reflection_check_vertical.jpg deleted file mode 100644 index 86bf33d0f9bce91a7a499adf2a64589ce84f9158..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42714 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 z 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 KUCrh^to;{D%0&?X diff --git a/libs/potree/resources/textures/matcap/resin.jpg b/libs/potree/resources/textures/matcap/resin.jpg deleted file mode 100644 index 90fdc479c55a511d9f6b29f2ddca44c04bd8a77a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15634 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 diff --git a/libs/potree/resources/textures/matcap/toon.jpg b/libs/potree/resources/textures/matcap/toon.jpg deleted file mode 100644 index b12ba479204487a3cab0f1c4f0d3de442d963da6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18205 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 diff --git a/libs/potree/resources/textures/navigation/B.png b/libs/potree/resources/textures/navigation/B.png deleted file mode 100644 index 510ec893d371e9f18d38fabd1651e6287dfaf7b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1223 zcmV;&1UUPNP)=6I}1XM{x zK~#9!?V3+a6jvO_zi(!DXO};->>n1eYeQj;8l*80+Xm8bAPtQdjTjs0#iWt8iT5T= zQ{$zFp4wh((ljw?4>qLs&?smP8$vgtmT>3>gvILOGO{wvva`(Y{OMtVbTd@ZvUZ1g zzhn;cJG?i)&%EFJ{dtcJ8iNLGEDUTe6aWQ40Z;%G00lq+PyiGF1wa8%0JaoIC47Xg z>43ieLW&Q=GP@IiI4wem2}s{fLzQ7OaPb!{dO9cfsXz z!5whJ*XBcHAOb>&bpYs^j@ch)5&t$0Atpdu(_VNiKEk8*R4a(nA^_5pX+%GcLKqiz zWIWc*TE_(zep|rR<5y9T3jc19hlR7&3D#9K%+L&Ic@5f{22IgmsD?H7fXsXbBkzrD zX}ov87cD1S(A3iezJ-U&>jL9sU>F7r-GE-up({F+Wd+0i!;oer>jAiZ;WpMDua(AJ zCxatj96{T;HaOhRp1S7M8aS#Q)>{GDWES&7^Co@IcRkqm{=RLGW9SA@=ALy~f^GVb zH1aF?5?%B0=I1ir(wX4ugH@BR`9!mQQei_kuiNTZs_g@ys;SDPds-;mbpQgd2f%tt z6PAa=5A6ehZ{-nwCtRYN{(c%ucbDu_4tHMYELjC=R>kniVJzKQvIl_R;UIc0_7uz8 zjqGqPgDY=eLF|(l#JC8q%TYac#>4$kX6K zLw5s0Z-l_N@ZbU*SdJ}jm>Y|P0MLP(XKq@r92TcVjGQv}0^A`tIzH<_Y$B8zOF_@;rTM_= z2>k7Sd(;9eGb<+Dp58qb8wGY8fR;1&{5|y^`v7qAPLoa%75f0F+h1qi7e-U|0T6mC zWNL=YT$+J2C)oplH{!+KzP+U`@I=9lfg6w?$@XZ7be!)no#6>F0Yh&NA$~CqWqEsh zf@S*w!NWmxeba^LV6;S^eUQcI*-=cKpFl%b1L`~LQTtjgI6qfB8e2aWQ)Lx-F%LN< zLtc=r2LJ#Lo;?V{5R9E0GaZM^3o;Uy6G&W6>`oWhkOLnaz_IaT2)`TNxj_w!tbl*I z!_i-lA~lx6%%vG5uP2d7WM25#`&oU&iUY7AjopoC>~4gbQz6}xu>9vTq*)2_BN=%y z4^1h$3FBZuSOS(?zamrRfXnLwSI2=1aNt|{9czcZQ~;Y3dK~b#`zxk6qW1(T01AKt lpa3WU3V;Hj04M;P%HQdbheXih9{~UW002ovPDHLkV1gubBrN~{ diff --git a/libs/potree/resources/textures/navigation/D.png b/libs/potree/resources/textures/navigation/D.png deleted file mode 100644 index 2d3a51f0b700ba64274072c10c8c85443aa7ce4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1068 zcmV+{1k?M8P)5N`kg1Gz~= zK~#9!?b}ai(@-1-@b638B-@g0UD;e`J2ntRCe!NFgG?%-IQ8OH6vV?2Ja|xq;h%}a zqZbc?cu+iu9y}?CqMOPX4qB&fRvZ@HYBx7)t6jQvO_O*~4_W3Pw3DUpy<5HyLh>o^ z<@a7v(%x1fC2+YU@O%YC(E~y7pssE+yxvy( z0VI=yc=hTMMn-NyQQrOac@$;DUI5e669|P)VR-m5bY1=TNsHs{GX&!C2YB@802F1E zzDY0|y@8&deLwxxWw{YvZxA&#>mkdH;Q4Y8!a>*b(6lU6HG^dGIYOb+0Cal+#A0{R z-Mtrvk+<}DJOKm(9q{{iz~w6Y<#{}wRe1We3%YJ207Z%6;lus&-h3c%9BbEhg5z9& zbgmyy23rk*{{CZ_nfYMJTU#$;#ftXgt^~)&A0ryQZpm9(x)$Zl7aU+{=)5JXtJ{n< zYfcpZS|FW%i&*ULoRpxYrHhWmP&|Gg`MhGvmM-0b+S-kD0E~@wTe4-#_Rz5$)^!!h zTS;w**NyNM2fY&L;RCT_|ksR5EyPY1xv%txrIdHk1`H~w+KV|xHqOhHUX%DEH{|4si}9C+MuXQ;p*yjrsI4*gNcbgdH{UBZI&z=y+IFv*SiU2Wqwl@ zi`_vY@r(`tp0BX1{&ZbMD0Gqz003xeIs~3~o3hc-+j#Nf9323X^FJE3Scs03T?*=8wk6pXE(bsnv!^2lB{kon*GC643O0)eCFh3g05e#0&_U*S( zQ?p@FPJ;jC1Bv?jo$&kH5RX5=n>W`mHrDg~mHFT785s5h_%S*9d|To3ZH1~T`26`b zQmL0nr=ysj9!D~)y}jR$$x(pqL;n9c zMGrl8aG1F@H#&K73vXN7H@Y=k+PW`lIF_n}sE7q{c9vU*g{iSAb(g;} zzbk5e^nF>ndam<7#N{U#kQ{#OFr2g{8P%8dUbwrr|^-p z5_50!O$mF-AYt2MP$!eG6aRKg+c)3a+zr!}7koFLeeHtEUpNpsLG8?Sd-Hzon`(e?`iEOq6+N`od1OOX3X+CyFQQH@;)Pc!}9V zZ@-Uw6uIf2Zv!1=`XKB!vz}_^5-8jj+uni!Nj0{i+!dTm76ezUNo*r)idng};)A1qi z|L#0J?{nVgcb@aS@AFnt>*`cCu?%c-2>=3s03ZMe00MvjAOHve0)PM@00;mAfB+x> z2ml*F1Hm94c|4qIY}D<`l# z9^jD6MZ@vqIMdT-ZQpcvGaiX>rm1P(;BB(Z+Z7eGojAb{M~|jFcwHHAeQ;27U1qoQ z=^}*lwLt}e~*c3I~8!-u(CQ}f7!Uon7CG|E5Y;~LwMBsU{gS*B)zRJNK- z{8U@Zi^aw3yB8Rpnj$bcIeVRBu~1~QB|W|>J9}RHmj@1TFfVWYH$!1X(QHW_W;3=V z(tk$znVAW;gH9)JY~Q{yy1|&LqNu87nKBuYca=W9_Q$KPynN%d!;&OnkR%O|<&K}b z+*sjmxwL6S5B6;(xv#a29tBAX3YM#jbgV3Z_`aVZ~(#faztke896@we^)$OZ#) z+=Ro5LTs7iOEFk>3Bs|SHA`rBnihFezz%UX7rA?uM+?h(I~2pELd?n{AyVlMK+tJ7_PQr zs!FCTC)I_fvox`00aO5KmZT`1ONd*01yBK00BS%5C8-K0YCr{05+Na1^5M1 U5@>&VO#lD@07*qoM6N<$f+d1400000 diff --git a/libs/potree/resources/textures/navigation/U.png b/libs/potree/resources/textures/navigation/U.png deleted file mode 100644 index 9a9c37730639ab730f9b0c08a9431c51306a79fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G^tAk28_ZrvZCAbW|YuPggQc42lS;ogI;XBZfmu6nvShE&{od;7fq3!bzmA}7bUf%ez@bn=~IT^p7 z3JgprsNu3@i(5;Gma2}9joZp8jK@D3_{z?mJ6)jH@5-FaS!_a`oNwOOGau(P;Nd-( zz|-8^e}_F`mXt`U)U0X0gM+Vz#4Ue(*IN6m++h+u!~3 zXS;^TzW-l$-+ZHf=ImV;Bg>aRaw>jEx?H?0!f@@y^rf3`o}V#OvNYyUUHtL$i&kf| z)ctq$n8b5>l|yLoiIhnN&2&|ac)Z6qdU**sG)WBUado(Zt?dm z+}xM{+h5%{Z{BJN>E8igODxU_xaucu4EMGFv21O_;lFzp`6Q>Na=k2B^h(J7*2`8W zbAiq~?Z<_)PTp0>zACR)v{Q7+WzHu>@c}x^7QEK7=yQ*rEiZST^~5IurpATKzWn~5 v^Empevt7J>&Az%S1t$g;2UPT+?ISnOnOBjkpVdA9rg;WWS3j3^P6H4*!h(^HNR~i^ibk zHf`D@=L)>!{+X0JDz{l)e&Y>n3cy=&tD>TUg5tK{e%rEj`?l@dmA5G?tLy-&s_anP zp{%T`rK+Z`p{c34{Xg0|S{gba4NZ-WNj7Z;#waK%DJm*ys3@yw{Qutmc_OE_RY6Wc zZu2IvoV?nm&1#$ek;v)GZ2}H#T<-tfHpv6mxaBvXalfjZ{HD$Fit>sIo8-61Zw5L6 zjcOnTLv_m|xYLU9TQtCzSx6_Z`4$;8emm+N42;#=m~>U41ttdC zOw~5Y$;)q2-1r1ezR_conmlN;x*;&Ff(96Q+A03Bk=H*Ha@&D(%ByWwllxunhv|aJ zmnPCu@ynH|7gW9dT#u5}yuJ>cNA!=~p{HL(DLqR|CigQd9&&EmF<{6?HMMJw;Zf9E z$dg%C%%`B`>%QHvpUZxpX3@b)9aU#zn-IlCWApo_S`5oM2OsL0HI8=`XZbECz%mz~ zSL9qjvDQL0YjUE0GN^!zO^B?({70l%XG-ic#n&fpf$;QLlc@RoR zhuk%SereTfU&dUg`Q)+JHNhEnjt{H>9*b21}a0`|>FHQm~W zG(xwIF`d$2n@agau)iE$pc(#<&hZhTCSW5^iiofv-~d0v_sYA#a?Nl75wQkamA}MG zhhb|;${5YPnR2Rfa`j~-Z<~9U2$u!4Ic11eH_TfBXdmB1lLSRuu zaQ9(fwFHcUgk8@0M^2tM=nutscHmEGy_8R~DCo{og;TuuK+jnCQDDdRSZtF8DhK9q z-E9@KjOUSKWW`A(&aLG^Q)N`L1v>=eMo|X8sf0S_=%L2)_%xoovN141X|8=hdylfo zg=^enlqc9E!!E|E;iqOTFJ+355&9tG5?5IZx3%F31pC^>3L8biR_n|p1%Z{^uXtgy zVYI_RAa1ur^g84ut0gwSvF@$-T%z$DH%k+m5(FQ}t$cYGYP7PR5`-+cx002XQvi2j z4u=ZU^vqO_me;(yAgIWQsHhg#T;op{LpgtEf3w51MXj9mF(Kr6b^MCG_1#966^r>j zxbV2lExh}A+RvT3HF}+?2I|z(QEAPaw?j6tRVoM*gXqYDyF*>| z!6pa%9iAs;M;V28;4)b5Q1V^mC`a=>6;!SHuC1N-reBjYm6IS$rC7m@apIsMi%HnZ z5q`3BFxh!0<1;!0uQb*O4WYn9L^Eixn`SP|DqIjUA=cq)dTSqf*6#m6&B!*Q_oh7a z9mT+{xgPDfDbHy#J6u4JugxJa8YtDi{ER>#mV|_wEpa3Wquz&qS->7i-+G@=6+S?y z!J&P`geqTEIgqOyvP=Gy;3X8f>3l7BW!opHBl~)mkaVq7lf3Lde?;vRY7L@Xb6BB9 z!?RtS$%ZHiO;K!s;8;=1s1^Cwhacsb$CHokQ79vALS=~|2Dito&h_QURJRJMpQ=HW+=Wh3nNlkh*#uFR6U)hg6hIc(!za{) z6d}101M-8@`EM@yQH)}pOBHHD=7FpSYkh%1>~Hc!-X8Io|Lac6%+i52-l?xU_D1nx#999z z**;C;l2Ip|TgXsaUkJv*>{(LSWvt+8H>l}q%Z=7WEUtBhl5hS;eAeW>DOb{5$x6bh z@<%J#U(Wi&mTa`*#*3z|y&@>Dp*!!IRwUk9yv7MmsSEdEvd@oSD>tu-(;Tjk=w_#h z^Fs}roGVcRU5AN)>COXD4PLS#JEnaV*M+-SE^SKtuGjI)kA36!tdv%B8!;_Xbv<)t zIK#lF_e1>obb)nl3%N6`ge=k5=>-qZ!=uPfDtk51|ehq5OqK0o?E+Te@}R2pyw= z6L2Hj#i}DuDpY(~y+*d_h!J`NiEcwue$?GSN|#gPoT+Iw{IPkomC9535Jk@u8=a0%o* z5t=eCDb99--zXdVL$#JgNt>N(t}o;F9f@wzhIu?`(beddIMDUNNLFGu8OPNB-K{oM z6^#x=PKTo^KS&iMBp(USJcg92vd9lFll?R;coHr)mFGEc;RjYO#lFUC$6)GR&rjm5ez+>f8(e(lvIb<4Pp4tDv%_olRN zO|5HtcdlBO;E#;|BNq~JOgr>%o(C4b!oz$Dzq?v{)Wv!s?cLA?mq*0{)4}o5*1J~s z1zR7IC!$xsJeb|fKbh4h-O=1LcB6=<*0e{(FXV0F)SdkmW#9H<7yY{D?(DjDuM%a`-+@)Z`2EVUmT{}r^=B&)z4L!H z;>PP&9~*_Ee^_h4>)B0I{4r?`Ayz3>l`Sr!5%m#hyo$MQL#W^Trd7+N%?{9&(+Za9?=8whKGZN&-X z`vNOaCnQ?o73Z%`X<8f&NOwIfS9Xchwds7-R(CddQD#D_;2Hjv(4$)#w66k6-J?d_ z;Gg3KmzwvOU$#@eBj>BI;;Otw>fw8Xyk8wuk_l3Ou;u#GZF4!G0-9JUFjFxbT*6mi z=k3`<#waJa%H!meH^rywmMD3)$BDrVKS#Dxq=aT@7L8F_@ufp4QdNdTJ^-XI)NYku zTt>pKp7KNXP3g{)vD{VpXMelat$^h1LWW~8=AjDZJorV!du{h)l`4*ELt=kwh(E7n zgdaJ{?e~CV@R62vapLKE5i!EP=V=dOs-!&OIAMIHHP1MAe1$sLec;8*Y`mGH;CCwL zk27z^zsg4KMB+}pwZ)`_p~~XMaLFGybGM3uytzK(yZ~@>ebc0r>#dJ8sB$m-VWk@+ z8r*AcP3;}%2>N}CmzQUsA8!wNh`HkF!5_LB`OAH-L|a^MkTssk&&hwUE!rt`h_zL!P@2n=(6VC)tT&F~RPQM#@* zz6hNjzCG7;q|aZ7t_mj)D9+IvPMMCRpJyCGIl+zwXhljij&G>we-dy`x`qO-rkwm? zxx@d4n4crZovjQIfx6gi%-jcH9^WnznPYKBi$=Ph)r`A-W_7EwGg}}&rI4xgGC;M_ z_@$g2zk4n-$M}e&mghVs9i;dyS$b&6%#YLt`GxpPd*BHdMVSS>{V`p%vbl03m8 z9ST;`BHx<Mb#t&a)I`LLb2I`5~nochQ`pw5^>8K3o`FA!qK4aqcmpnl?;03o;pd zpdcU7>9W~kdtRhucggvNt?>vTsGc0Z@vooQMhO|_h{sh&01Vod_ze|&Kh*WLKDWWk zGk-4Y&G=sx0b`3L=Q0x02A*4x{Apzai}UbM~y%wqS);3U2j9=aO zkekUvAMd5xyHZ+%_eN!Ctp@@0*GA97q&gZLAL@52bi4mprF^FHz|fBBAf1WDSf?^* z3jq}|!bysJGafdS@EwV5xb`uyuT0Z^ifUE%Fxh$bML-d!Y5P116C=#KZ@v>Zc5v0z z&ocy51YLeZgc-dah_3%SFEyuX-v^N|aVz-cz$(^h ze0T+=HpdUoS5_TxmXnvOmU{jb0VzHF8+RQD5_PeiP;tnjfH@>4cU7y4q3S{h)$js9 z_)N}Jyq01#EySCE&hk%85?qy418>ldfUwm$Bw7%luVRq%rLEe{&LG9CW?0TCz>b+> zPx*>q*rdZA%iDPFN^)|_cc6RrYG488F%CJMa8-%HA~XkN=Il9U*c-^Xg#ORiz)`U> zY4H+@ZHSbBScth3&*rpH^iu36g)92Y*k+JlG!9AK^FZvg;uo#R>*91bQTCp)rYvLU za7gL0VvV{`PPu*NX+rO85Ylx3=`GHMr>goPu_xx)+kQshs0jiLMCam3%fo(xOn~nR zd&DZ6(CHROiSij**Il-34gb$c)Dq6qymEm$ecd(kUWq2NwP==~n+ks(F!TsplegIL z>hI3Ghkie^czB=xO7 z#GgFTryGG@GqZ2(E3n3QYEP+BeHiWeW32`60v9SgWMGs#d+DdJh5KE%KqIb>lg*2yi2Nsr%bOs|ie z#Y?t_fY`LU0Nn=4GdEqAU>NnU zA~4+`&TdrsXj*_Om*y<*y-CAYm1T^gnNeO$o`K}&(PzjPvYaI*iAgNFR}A|XPrDPVROvSr3G_9J6Sl_$iLY*7)$2w655>6|<?<`nq^ z7EE2pN?7*2Pwuh+>Jj$@3d!lrM_Koh`Ib;5#YE zyFz{WXQ_sd{zz5;-C3Bsc5Kh?Wf!~Csp-|-d!s;CT-lp;9yxgU7P;8ZSwx4X(=D2e zEfM^5Ll=QX_RA*Z&P$9yQAWCZUd>Ba@SC7b(N|J4)gSEUYK9MN(9)Y38z;Sg6)^ND zYC^2yyUq81O6dPoz-#CV-v;D4nX?M*Wjj}+vaDZ;p}IE4r}Q)q78sZAkFqhp>$li; zANvTB&(03GTR?tc_1I+zk%#H-X`()tw%6|uF8KXuSw#knVP>M`-;mO|#BBU{cOsoa!OpNGoRHG3nILW{Fs-v%sFo{0q+b0naY~#oJaq<~~#jN{& zU}iBL<2%9^5luUAVvJE}6#*y4^#i0e>MB5?K`3$tnQraNVzST~{$>y#^1l?dt`R!$ zA4*@KVC;c;*G7eFT~ia*qxuXcC#StnuGv!p21p9(sCkUyRL`&o%^`OQ5FsqD<1Bu% z(pY6kxNs48hG(~dnp*n+HLXrr#K{?S*?hWY%Jy4R? zA7CYT*K^~ed4W#`L^VP5_`O0?{)=cXMU8yql;V>-HvO})`I+DM#_wq*7z*z4&yVOC z^56Mhpj40{|4Tsl%=I-I&%}B zP87C8p7d_n7ddCo<`bqz?+%yf`+Kggxd=*LbRTc6BfL4EHt`|us2}mz`H;HTIXwvT z53;ZmCr_*R6i;zq5L0*V4Ve$KVv7h=%iBWPN(v)vgp$ngO_8>ImoVbtRV zoX`P6hMw5ZxyTHhp;zyPGq(uDTE{>_2hd0wdLxj+gCV%02qW7oR^i1gARV-(Yo6~> z9YE>rsUyPvMCrh3TJoFhZ&YnUwyOixP6c+3oHAgWya7wD3>fEZaX7$9JooA<7jN*I zMPa)-^x~-i!&am6ZK5$zD7o}cJ#`9=w+D0wJ2wXNHlBl$i2E3F+y9go$NJveDu!x>s5# zW+`2(a(l2TRV_hXey*4ZmddV3`0`2e5`L46*JV-o%E-h^5|1#A;!3?fomzt6Mq20m zcY?}U!~;y;&%RUHK{qd(X?Z;e$fEBFtPkpH2eA}aPDX50h$vzpqQKPRQf1G(RB z{`t`u)q$j%qv;xv5*x~#wGWQ3JRz|;V-!OHvPY zB3yHBx`*C%yT@7dSLc}}1Qd>DEoEQme7=|%Kiv50Y|p#&^HHww4=9d^f2qJEzNS z`cI}-E7b7^kblXPje{tr1=411&vt${SbDjn9Z0_v16Z*3lY1`JUBJi~zQ!|PWvu|d zk$$%1ijlq+)SQO{)6~-gkWZZS;Znmf#jfZZ?N4~>LTx!^FvxgWNp90A#AQQ*GZ(5F z1ZXButpaN9s(Q{3{c@AwyH17YK#9l~`-WUa6qLGQ{liV?m+`~NR@7zuqxY1-fRt9z z;=04D<1Gb0=9>dbhwGj5kG$BMtg!kGD1YkTrlRstPrpXOJg#E5=75wQ5FUwFN!wOcPgvx$-tqMy->MP%JK6wTqW{(H5 zRAifj!8HW)Z1(Ld;Y_y%ir(*s*Q+Ls)X{)BwWT-bS|3H}W)7sP&iZ(b8Va(*nTPuX zYNWpem-A5m;v#1t=;{mwxz>0I_zuv`m!T0li>f;DtX<={bUASmc4qP+HDw5;6bd|5L;?GP=t8(vGWDJ#9v z6Z&4ZF1z!{-fgPPMES&OT7UDepx=MXbMY0R%_Zi;EvI$+_q0;DDMA%2-`o7OY2p zYdB;`)_x@WDux!tDgH{8U>FK=gzIcQxwgu=wm1s=~^ z#tSckUmh`Msjw&+VBbF12C0)&)NX_v54-{-|7)hj$itC^e|2{tVvs$Fz4f-tz>L%S zIzt7GHs0bKJvakGfMyBxd{0QoM_G!Wbb)jX$iIN8YffY5fl|8D=pH%jwrhcvs4H@E zm(4QetG0S5tURmA*(gzHyR)01R$wW>gnsI|D_h3T?jS6kTGF6CHuiTprn!c!2;$%J zKqSNd=1ZWpdc93*U47;}OcRMwS?Q?WK10&fj`;^DX_zI96>woCJtuzVxK0X-iI=wR z98cCHi6Sn3@VASif-7y8{P$A)Kloe5PC_&hNuS)kvs!;@9e3+NFegeaSNtI0Rf~r# zF9x^?PDL8e$*TXz9=j5F17(oj-G09m71%vLS6nu*O^ZW+jq4E;9rgG#;Ei&Z%r*Q+ zZEhdmz(Y^G1FAcA6Z9_drm9u=O(0$+MdpDw)m=aaSmyFkTIzNutA_N3p8BKdx(y@? z;10+}anZWY@E#DbMebOD4yzKv=k*f#uWOk8dok!$?hDef6vM9?VWq>6QN+nF%ja_U zr($7P*~;@fgNswfCHgIn6WaCkr zCpS0Sn&SEIR0p|7GljZMq&@?S|Z=ZQDLV(0pf1l$Fhn47h+a>}xAMlk~we=G_DSM90ab$UOAEH*s36 zY=WM5fL>>4@SR!voYDdZU#?LOp>;<|%L*1gl(Qqrp#a@--2}mBB$$c3DIdJ{2Kx#! z-AVqVV>fzSsOCyU9?za!qF+UaRi9 zOYtvp77_LY(p!?Cj$A_EAGv|)@Kog-G3yRoz#>|i;4~9KaA+gd$fyvXT4#6Smj^CZ z>?34W>U<Rz}{bWLh?Hg_Y)ry-q-D&X_d!b!_WjWT;?F>M=1AK#HH6QB21wfr3 z@NggB(mK2bsv#t9z+wA@AyDm%H|^us7-y*di3U6aP{#-Hc_IGRkrL}IF}@5vYr+$6 zAQ7}7S!_vJg<>(lB0zJ&Pg4DNAJ2dknRX1m9)Ht`&-#wfHkuDM(P|o7zF!>`(fGsn zuk78;iOd;bb+q1@P9;X&U-BwKN&Qdq&Y#E{nS$pB-S)qApKztZ)3j+@wt8KpeyFJbDZ0{N(31h#Z^T8Olr4rjPIL#_qj{$A~w-F|6EQhCj{b!7Fn^aEm?lr=b3Z97y_D- zv=_`y>oan2%;|YrWM+i1FiEx2oe>Y&w!OB2CI+ABDR@{@xBw3^?FlYT&X{z8o@=#g z+$Xs|oKz<(nQBBP^2Ns8Kc9K5h6RN%BA1#Q60D@lr}r;mXTF(M`Yo>_N}4$NaY+Q5 zleWwd;s@^xa*)>)sA_H^K(o*Pc}@?k`uEKlygt1F+k}o1G0UN~k<~ANtgG)|yST2$ zn<5H{4mL@rCC4r}J2b@<+_>HfmU+c2n-Jc{+zPj|YnxVi5G`px8~HBWxQ|pt0JRtQ z;d5ws#PpPkp)vw>wx=KiG?|m*s~16)-I)=)I66{|cN32bUJuoUyfWZ@`gy0@euXha zX`H>*Y(3dL+_F zelTT8p?s{x*$3hY8JCAOZfn0QBsRSK|9N;yJDY$#&yBfnRB>kT2~)-IgbuU z92O|?Sg}W9@vS_%JYmYMe6qr}38E3#x~KBWULE5`I32D4565(pK9*gG=IUqTz^qbM zqQ_QA3u7g;9gkevO_Bb#_W=$CZH3l18rqEc&wje#s2+ZjIy7g;7o<3}_y^1Ehz z+lR%vS~tcUhHv8P>^mk!OQUn92Ic)66XXA=*b z-4YA24xh!}quXZ=B!l!e+kq?wN+H&Y6))m%?M?YdPT17fZHcvt?781_I+TVpk0ZJ* z^_y$!G|hHGLSXRFTj|YB>enzaKF_V0wL)@O8C;j zR|nUZ6TR?YVNdMTZ3HfM!1_xF?yGYcyP+x!(~}h;8F2w_T^pMX;5DRYLO&G$$u-h) zfP~r077HA8JyjA^9YXYVyG`6@gCXHmjBk-_I$q3~1+qT07kbc&-D0z~!?kEB0uly^ z&=s-6A2R1+a=eav1kP7}c4Q0#_Z^jGtl_p?G@>D-77 zsFW7Je;lkk;>BIp#cC}9rHddEXp~EgvLiJyvn{Rj=7SHYkqqI*QKpYcpK5h=9Q^#d zYHfo~HIX&QwSP|JUOOjyRc6d>(f3|x>ze1mB`qhAk+ME;akZF(80`s8af|Z(i{o94 zsF#s}2O1WUBw4=AxwekpKJg|>$;>|=m78tYt< z8C}3I(;<5%1-7ev4lk;p8p!S<1DCIBy`YioCw0j4y?M4`9($stw;vzWm0>scFe2{a z+Rkeo?_zsk5i31txRwy^bDTIYOeDn!RmQI1uZ9>@;iZpHA8`OyM(L|eT840!Ir;6M zj#>6LJ4R-76o`2d2z0BFww8FTxMqsgS~}myx;ltW#E!8yR|rlA`|}r88x&b%En1C=hRTN%4M43y zyREDawpzGccxQd?>~P^eUQeoxa3$jPV%m<3#)aU6#y6_X9K5^;uXC0nit_%E^U_XU zN~!Cf&OaS=5Sv*ato7XOSc%~K{H`>$61XwO9_2Ds;8WpKy1WV`S)DxMUlWGh{kX^# zcw>J$iqiSru9QtkDGHw*T|Mv_kvaeLqBaSBA;YRk5h~2DSQRoN^R0?|Bac3PgWcH+ z^VYh(zu4lm{mv1yB!>lMeVU5~KMa!4Z|qIG-(w%xjSFAooXzpHvvw$EzK*lM)2DyK zx3{AVk(%eBGn_G$T6CsYT!|^t%bMi&nKW4`J;hAfCU@xM#1lQek_iqn%e31r1}A>x z_>}S9lFwOo=a=q^LBC$t?PeBN5A3?`3lU$~4p@q$6AQjl+D&z=Iq&a|SXe+)aASi; zYa?Yp#YUP$5803n4aF`=) z2ga8(F^6IJW=H$4#aW+W>mA!^QR;u$OIW=>ZQRokRvR03=-p~8Kil|(*~y%1VU6=#GSjEJ zB_@qktl5(PvEX}wYJ?8&eii;5IZ9`&c;~MS{-7lsYOam)*7fbK!HdK!GsH__*NuVv z${!ku?6LZuzyYGwZ+<4S+Fs)*uSthm3R{rIEFs2*dX{Sr#Rtg`4d%e@SfXU!55ypC~vn?e-?J70cB!_Qz zDby9y1hSRzrg~Q*2!QYKNRLC!!friDMH9e9L+vw3*sQ#!qdMj*eZl6@*Hy&k@SCen z);EP*Ba9v_{7z|*krnJZs2dDC-e4>RTc9IUU$&5soAf<@B+=l#RXnq}$8Q+> zBfr50yEo~yw^uEhf)|*)2!3%>bNx(@9V+N#%&-24zP_m(Y;o>u!u!^Pz8{B}3vmKK zJ0oY0qBXOeN#V0V!Ux=d4bXg`+suu(i8tgkbN>Y>7C`xI6pe66%D4PiZDZ7e|HZ9D zK&ye+yeya2DsJ?bly^()|E+t>?(?9!wn41bP&%cxEsl!^H7cel2}|%=b;hpFSgv=W zWr1E?!^~>1u`uo$!9H?mk%8Xko#Fm5`PMk1Gc8DEyE-=oEges?k1Q*@xY%#?*ttL6 zYw@q8@TiEl&~q#KV!^Hgvv%yySa6W{Aaeodypgk!d`J zpU&e_?9Zly_M_KECVIxcO&RlLro55!MqFY76=eBdp*|N6nQXrW!zdn zDSO41tq9P?+{x%Ujz#K&51;3H)Z!FBYK4x4-M&mdF}+m;t4No$nUd7p-4Ll+G_7zI zqeSVij9@Rff^m9}$SBaQ8+W;7+dD-w-o^qPyq(`M;ZyWwb)_w#f0-^WTk zP8=w9eU%lS^!zw?4Y}TWaO$>gY2%AzkDUEOl{Kr5o!X;z=cpq9X0)rO2fpVlV5tp- z^O_j+vDBSLbe;TZX62*LNgtShM=FPiJEqpCVoq7x3m4Z{v`}iYn|E^5F9vM%P5fY) znWJ%k`A|GzVFlB%hn5qei;e5Nn$n~*Ze(hrGxhFeq4}d)a{Qfdiz?jj%i-0#N)6oc zlSpphbbnWWW0U9dp!4~5mZZ}D@3))+%d(8tf_E)yU zTq1rrpmvqwS(krrB`(jn%lF;!*X4B<*;nFWhaLeLKp?ic z&^(zui#D!-*mKCUM`=Yg9bk`_jPMN(OC`*W9+&f+?Q;Rog7$=vfF}m{%zRgXtbm-s z6Ji}XpmX`Z)VI-WpWDop7@2?ok^{G+33Xx>N7;zr3n~yx$G)3d`I$Kx`C_b@W0kR^2lUR-29p_6pT&<< z63T}kBJvi}20AUEgUFkM5e)|-|D^Jcv2WX^e#wVWM^Usyqil5IW)F=VQX5Xi< z$2lfmxWy20|HXsfA{`>uK8_xLJY-+&RoZC1@-9*KtzfSt64W7W`-FNSi7bA{m@Hgy z_&IJfa`OfLs~(jxWkkPlU)PrZyx>Be?!z#R?1b-XZo`HS(S--^9x>2J+$H;pY0Ka- zOYB$TpQ%0jP%ythjkL-gZGx|oxl6dY>d0VYNyRC|kv z@Xsj%s)L0TvuZWep2TAh_dUvc;9cMuJH4%D)V744I+mrjD?M+uLC^Ep{i>py93wBK z=$)=LP4;~~#bCUMfSty6tJEZ$@2CG#h#L1FwW;d7){J{5lU|3WiV(7zorAI|w}S<0 z6*|$mCQRPDd^%zJY3rljFE5e1`f;8C z%=5MIHg&(mrmkXXHyT@Ert?&&!gr$g&`>fWseuYN+G`GNm23w_+XBP_3?Qn9fok?_5R!lv z=!9(F?qP6VjRrL6vsVAW+CWn(N!7G~srh z90DjRr?FCCTEkm4HzTvd>u5Wm=#(rad+e$>3}m_4RXTjpC+YpJo2`pK5A9a*4>~5F zJ>+%pKV@H9^v-1xzgHgQ7F7LAwx_J#40LQ78aR_1nTPw7+|9Ml=jX-=hjhG)JO})2 zM(UmqFGbpgRt+}rZ{M9UJ9plO>mS$@lNfflyz1UmF7RkGgGh*(_|)*jcfMx9tAPK0 zpg=gg+WUIBqSoitm*Sb!JC$E;tXdjc^Xq>diX|ix5oP#o>ZKEeCKE_(e8&MRD&h_r zmyvCSHy)`vaoyonXzl9`*_Kh+bHs_D(|u7lcXhfb=Z1Itf0!}p8m1{g`4&oz(fowhVXE>z~1g!W^H5p6lK-*;*@?7P(o z_wYOu0sm1b0|z4SoFSIZPE9Qb-@aPo28{@ODp`GXurMOz_GMbB1@pWfI)&+B`2oGh zTg&ppN#OS>JhbJIie<bbMvS*#k_9DUZ-|<8_IOd21(w4>T>1&VHJac8~&SH>8jV4oMuiz|^fQ z&9)xzkH0Z{eEwyvRqU=Q8qTeuccSjuPbsdkUDSE+6+*J|h!G=F`f_^2T_70C?afxs zq8hCDTOmZz6Fa6NHx{=!kN3Sg) zv9a#eEEu$LIjQnPdqv2YpH@TrLrqPgy=as?tLBao!D+BPc*D>j=lsK^Mxbw5w=V(o zJKHns32wL4$(C@n*1^6%v_Teqf#+3cQ%>**|3V8qnA5B}8xg8!&DnryG`4vY1Hf88 zG*CHM8)UhGHH-gZYzI`h(E`*GasTT9sK4O0Y+M4|iY}vr_-1b8PqY|a5?%tF48#m{1@?k;T~Z9Tl|OWSs40!!td=g= zwUYfJ|6YX;gY$6Lb$Eiw(L82WqeswgNFJjl$>aD&UP@?FF@dO zBKJyrkmCi|zpgHI=4t-gF#*)|^V=iSQXNlQV)&b3Ood-` zKWvEikKDRraE1_B6chNmAbPhWf3W zRr94wZc-TENQaV_ZSbmZ@*>oS66WC={0MlkwC^7|?WU`32W2IkL64fylyBDYIt4{_ z`J&Dzk|6+=JR^1Y^V<*i>{ckwwxN7u9%gj%_hNB@Q*G^*P*ftMy}H)S>|n0dAHN$5 zajpU$Oqz4O(NpVudeqZovCg_J^CJ*rBp+`z+Iax$z$Zqs{i9AU$#Mg>vp4=dbYA`T zC96(ZzK2GDMMa|_L-733- zZ}4%bvG25|b|@|R*u`h&t>+u9rq9=gN8fK)Im&Ih({j6{dusZ%(XF2~eaNi0LgHSC zV;583uGmV{9}*D#Fg&*-`-+ECdryJ!I(VSOc+Gt&!&(ep%4=Ber%FGTxA#3uQ!(;@ zM1{8aHtq;$yyeYlakhH)Yis1B@6b(?X~~EDbD)ueyGa(~NsV*(@f3^X(2yN)_&5fY zKyJh}CUxqPC`X&TL{ax`}ItJ8|6Q&^m~A5>K6x%as- zW#nGg!cOrx8%gso)4zSia{talsr*}8SUiiHySLnekkkrIZ*F!6X@wFTv zk`I>cy5LBC|%B7I|%oz1nxPo=W5RG zpK`laF!fOVwr-Z$O%*r6l#$l^o?ktlB1+rpJ^}9J;?yqLne0MJWMz46CG5m&ybWy9 z<-@79B|`6_LHs*fKR!Qy2LG~%Rs)FQ&hwVh9|6Fjp}HFj5AfM`;A^03=hGNnAkk`O zr3(uIv-1L2A3zH&by7B407t(Wsai>bUk<6I>%MyV|L)t2RL#=s_NGg=`7u3$J*34M zqd89FNOuW5fOVv<^2YW4!DQhh2k+8V;@W=0s+mQ%<@o0Z9vv;U?`%AF1i@-qwWtT3 zA9-}Eq&&YrSCtY_*W)n1E2u~(TOrNnb7RM26P@ajUjuI%lF5x$1r9Tb!k)9dujyw8 zhdO3Tr`^LaF5H@P@39NJVsw1&-PhL0`V?m{o`2$KS^qzBSq=yAtVypd;`fUtHdwzn z(dxmJUbkyv^5pq0Tui~fq1I{FX^m4YJ55Y)fQnYbC~Pn=vDlXE5Lh}AAGz)@gGit;$eVq8InJ<=Q+sd zydKF?%Zz59-TBm>-4O}p_$7iq(t{9gctbaMPo>2Gd3pd*F_Qbs7Hu5Td~?LtI_mO{ z-{@0!X0OtUF7L2~11@==O*jKQ*8W6rxea2kaq1=h$<&jZ@?%e*2xzUBcgS~Wk*#Ac z6E_o(8`fLiQi}sf_2oKeKdr$#&6;QIB)~s)4Y195&8jcA=w!ZnIS!1A4%zV73ib>@ zd5z(JWJNtqMf#{O)y_4V?H}T1MNW4h?DiKH4zyu^#fbB6vNYdN0p}2Rc?Z*R2KExJ12}L%)iuZiTId=8?mP%k`m{9tFR64s5%Lagjkl4I0(4%YZEemNO86f~ z@z-K>A2B+IBTp{=DY%d%H{m;X>59TnQ7XGM@#*0~XF zr2v;b=mc4Qh`Fqz)nU){h&Pg-u#%7>F6&$_G}^u84l7-w^Qq1^>pHEF4PZ5XKt0@4 zcnAQ|XqVq6-k~kVcbJEJ)MzzEsz_i|dgs``I7Ayui(ClJKF^6+>4=8^*r_}O z^Z!(@&BJsXbxYivqgSxkiu>CXO)r$be|aPgbHtb?8q6H<1pXgZFmch7-MIF#YiV#O zi7@{7H(}|YAsX{qGt^FL&%Q6GuQ!LkiLRy%eM-W1cM4PtBK}BwSeK16?Rf84Oa0^F z{9d$B_4Rt9X3JwS`qgjW@x2XtZ%o2lA5+=>BgtKh24~%@I7daL_aVdh@%BT|6TCI> z{*HCjZ`Ey+X{^zGcRp_S#K9g}v745Vyc>xQ9i4c+!PtSTVL^I{Ft;ybb(~qQ?t${} z)Z6y5@pIIM55jjYp7)xFaRRFf%*^7|tP4pFUqk%|4d>3Y>5tfJ`zoBCbN^ltcpo)O z^NvYz+35lE`23@;)M2JEbXVH3va-K&0xp!{ebMIGtCYT=<*IWZS3b|f9_8%t_~cwJ zYf>qQ)Dh#NJ$fqL&vXX2RICdfQkj_J(Ya4440eg^VK_EOrKl(^X5Gq)c{b8E+bSzq ztN;7C@b=i6s6R@x7u^>Quy*qG2g7T->&_A zzHIC+H#_v)e+bp&>@j#`fZy+wxVwJ@UT7xVid*IRn?0ULbPGVFcO)(izh3@7?Yw7P zQ_H(QYVUw3VCY8?klw45-xdiqL_(9UL_~V%9X5y}E!orvp=@gC7^k@=(+ zX)2%~Owee|DCShH*GtJchu>MJg|evRfG%8+LOGRy8XwjPzAyJ33P}{m5FQDG$os&k z>y-hb!OuJT0#X-Sql$o~+p%{0q<*-A5yOS@z8 z0@uwqggaaeR@Xel;;gPAeG&8Sg)zdg+DppB;HzXCt-~eK7|XI5@cfrB3q83t*$))CH<@zTmoHbnD8M z&$liZab4?}`10b4;w=@9ImsR1E2QK)UWfq?`7d#o<8Yw#IY~gQID4>3cf_wf%G`L0#?lmC{1Q&h}0&? z^DyaTNGmpp+ONLIWT0ZGW_u4hw`t@EvD@@bS7lIWlXkU{ws{rOd`*$~xIVP0|4@^Z zzqHjDBKTHfteXmNkDdR0Zf?~;sO!ebq{<1jz1Mp(1z*HRQGHT2MgsM0hYax4_(bR;+_=pOcwfcRn8i!#PGBdr(x$K?0rJ-*g4}T-yHM)47iF~qJ#fvMJDxq7c$z@yqjf!d$~dKtXf zcAmjG)czOjAh74x={NheQQLxtK_ew3!zS#W%R+G}Nd!OY+}Zzm*HcdhDY@I)rR&zC zfbuGZtPR#CL&6p~SbX0t?0x?t_sGYYB0AT~HxJcb z+q9NsE1aa*lv_a8izQy!g{eP0OwB`I+o1;tdn_gG+QV|=d~1*RR_)i__m*Z;VKzDP zbzMxHko}fU_j8-Y5n3d;JE&p}MmW8tYNMaMZ zuf>vkWvcN;r0aLI4k6jxf23Y7;8n?Vf5;?-u)L~3Ohrb(UT+wod|?*vXC|4p*G^l$ z*GQq(vrcakpb+oYBn4AwF=Kvf($g`aUjpNV56*HRZ|zD}@36rX%*v#I?Bo(gEq-$}ZD}ssl;nxG4VqfEi zroB#4791?ur9SdeDX$Blu) z26r}eu9L94J?nIpZGMUCPZ7-^o=T!wQLE8wPpYb>Lk;H<#|E@13HsMBQ?wp5z=Y^8 zUg{`x8YA@k+=zm2py2`3NG|A6CI9@+JMd}4U<|j7dVoM0Ju2zfUu%iK&(%JUDsP2b9p9}wF?OeiSuDn8kM9IX(^znEL0&Mb z{k?#m)liHE7Tc)1;ya>;iI*bcfFyJi4Ek%q zZ4P{PCMj|PhnMJ!vqScwouw`ukfZ!ANQx!@b8z0wNBc~M4as6)r;l|t_A70 zSd;u}E3~f9jH=DpG8uW8=An}HRj&j_g}d)?AIC-1l4q<%)DCD@cj<*C=!FKr0zd${Z=Fp*vzb zN^uvfI7yH{aL(U^bE({dd;;ABB+9E#-x!1yiXCw}o~Tt68c4;buZBb`Jq-|^QoP&l zoM#Ik2W%lXAVPZUJKjdrgOQYEuJm8NURlqr`R9#t7eyM}LK)Llf-zV~1!js)=ZUr` ziL}1{@JNJb1wH?<$ozZP^y}@gw&ejDoX7g-Jo@XJEd9jC$AH<=%fm9;k(~9m$iuL_ z$ROKo_U$lsjfI+QBd7AYlfC42-mQAC;9QK~F%OSHDE6Qk^mAi*Gti-c>^;7cyu~DIX+MX7{>M{G)J66Cqszy+Vsp~A+$Dgx8exI8xP`R3yXBdVxSX(JwyIb0v znXR#20Mep%@^Pf_J{rdnrRFkT{-m9VS7gG$@q$~ZyTg3zELkjAQ0w%YX$g11HLv`2 zYZuJA=P{Wp(d*qos8T7asH-M_Gbyami#S~FEhq%hX<4Pvv)>n+%#v+v zH3mv|3Xu#w`N`!&M||X$N0KPX-Q_l!&4Ur$6s$-O%q6!#NHtI3n2!dr%?k|SUNpEH z%EV-H1L6J-`)oI1vz^vuBZbJij*>n=p^JkM%b}x8P{m*IsDk0n7R1p+mX9^RWABNw zC!t3bv^$Fy`kG}_I3{OjqAstM-^^zy7s^%PtoOatcqPLYSG?4vTAhC!z<6DC^7w9C zpuj**&Q8bDrjZ~ejSM^ROy*-D*SpmzF4GZF+VefOyr3S-Cs`+h4tb@cw~myvGC6Jx zlP&vDkBth-CS5JtGQytP&pX64wb&0P2b40$s&X5okGa`8XMB841Di44W$9&;lz-+@ zBl`0DoBNdz2x)(#|AJM)8>YNA(Fqnv=rd zfyx{y)_GSZ_PkZEWU|skPLNrbmDLL~XK_otG{W)A8AY|;MMt_=fW;1hU{t~r3%jxV z{A3`vl!M0EX@_(Sbag6Uh4oIY9>-Pvk|hs)*xBVlN=?K)EeO9zYELJVLb zeWnBp$_-)HhXsNZpCKx_b$kpz^6Lg5kQgN5GHOi6;7AR?~nc@(W}9-wG1O=g+NN>A5Y)1x>Qb$Z$kW-6nKn*?UTNEzwDw)lF~ z($@lI$Pa@(3UZmXZ*q(0-pswDYbn@xnCv9|ZfN&HsczHsXy$<{&!*F0ZU#08AUxsqX1{wDR zj`9(`)I}ZuVqyPtIOI;v$m(_QaSF1*CKe{Sbb?d+ihSppr0htRno!5$R(ffAHHh}* znwDt$(_9Z5g3*C*ilgmKozt~VIQb zZm78*2wju^%AW<#5Jm>`K!87$S0PJEW5z0V)x=ecO(G+2r{K|q;)$9;5uHI<_qz_y zD#N~ruylxlOmFfb8uEb0_8`Wek}iWTC=x&)@qBw@{!4Z~ZC!VRDJ?Z7U(g4l6Lila zu)=nCbh=J0dMI`+O$%!_!Lcq-$)hZ1lp#T}Jod>Qei^+XrVMqB=hNhS+_QeD>Yihe zU!_OaO0k_k(SRu1`rzqo%+}0W1}bGfgly60S&Hb@go8h7Dh;GVZ26uabLHF<5t^)* z*($h{+Dn(hkYj)g@i1b4NcB+XVN`LjV2PW7P@`Ya^TSNrTqo~ZsT75l4ftOAFVkrW zZ&;yO zh-3B$*wxQat&nScb#tK?=@FpF98MAzm+*OQLQ-X0S^W~n7tek0!uy5Em%8Nk3tWtG*AQ$*+5aTISQurJK%8?Lg_c6^FTHRBw4l7~^WiQ3 z)Ar!jO*oKky@lwEljOS?$`0_(`MEfT9l(+Tx~$oo=rYUc{n#7QZ=ev<>aEk0JNjTs zwpqE^k)H$Rw-YF<##ISZ-?jR&+Q)0MwuQ_zFcHzLuiXkVmizJ8HWsb1>KR(L;BzP{&(ywg4}81fSqR@raZ#8L`y+D!GaotJJSK)*aqyzLW0k9K_dv zEgHtG9 zG?SePE7EBs==oAsac!S~m+>$(`^i(bnTox#A`aRg7&O+wZ6ZBt-eCPC8az)to!C*;%&y9Wea)PK}~*C z${%)>tuQ}j_|4=L)yW`l8m#V>np?8pBl1<@E=_<(J~y?hs^&!w&niYeYGWj+Kfip! zC4|8uMZz`B$Vwl5|=Y!pp`yJ#Zx249n!N zT{1u6s$MWEh$19u%yT?T^zW=>e!O-pr7QHA)H(?-$u3_OF~a(+CX7I>O$)bl{P6^F z8}nb{3GaC_l26WS?Sa({{mA~@B{c>8b|xwK35P(A| zz}eUNdeh)4F;S_&Nn>+kfRrs$7Z_QIk1NG{;+v~p=X|5;xC(k@RU{?`R~$X3Bw>~+ zo?sRF9y&>9my!CC`55xRl(xZ2%Qr)Yzu;5xisjQ4=8A-bqNPfm(vGMCGxWO48kP); z$Da%sArlxI9`4$Uq;DxVO{sTq7cK_H0SEV+mV4*U|}lz;|^k$n?-$_|cO+J*tC=`FL3i>pK&gc?)F& zyROPw;drVk?x~Ggteq4mcs#x27hKcuh{hfWmpic31*U<_slh zpKyIXvh)9x4UH+^G2v&*W$2w+M77EEt~a3ceAG1#KTsq7SijHOj7&IEf=|k{Mbd*g z4jvpA4r$8qM#4c0$-|;{!|}AJ>y$x#t{cKH z9KGKqugXsEQ`{CV4(T^P)_AhFD1UsPD`VG@z$kjnLm93k15JTh%8b>h)XcZHF$xBK z*V$zCbx>v1p0(>j)QYQILnw#Z*mgu=Q#M~azjo{cw64l!?6J9hPAPvd_s1VMJhjNH zzTShQI{^aOE6X`#np2}@7#Ogq_=u0b+aCY68Wo+ID^0DHFe(u7xHtbWP&ULgBF4}( zW-W6-ERe0hUD$x&h8ZfjlAIHdWT&1sEY=h7g|rY6C**C3gQ`cg%k z{!vj)lvSxi|1gc*d0J?9Dv)fuj&J72M3GY5z8x0))M%9sTL_|Qk{--cT@R$wTcK+^ zV;!S+$*R#-My6@1ircUU{K-;`=4n*)# zpWL9O*BWgm{HrI%=~O|5Ta(qm6rwOn7+dIB>}ygJhwowzpwt1}E{-uyg}I$gX$QplnUUSa3sCR0ZXrQ{n*PH5 z&-qlsB( z#&ModDLT3zjQT`vwHyQsOJ<8ry6wCCtZBXYz3{Ze$&;L<8luo13xVt`UW07X!*+vD zT@I>$O4B?Rv(#R0w~q*cg@=Ss3}nLet3nAFCcWhUN?sS-dQ&9qsww;X+~%6U$i2el zahgo_NLYg=zk$ijFU;QfPYOggjOOZm(@wyEnbN)*>MOwTM41|M~nPKd{J zjfChy4K{nGDIO!V9vy{iNgWfu@@u6Hu|HPjpdTEK zmIVbTc$HMGEGPJ~ETVNLB)%#yw%=WjUJ7A3eb`9jd<^e z9#l8Yn4u}`=#AOG+U9GEEYYgkm$gXioahUQ^Ija5Ay~|&cjFwS=c`bJ*L{O+DPJg$0MAE+77~BKHf^fS>Gb@Xr z*UQ7S7^^&Yk6#jp4?TBG>che#`Ic%gH?%m0i6n@@l>DPTO@)*r{;U2eEp$25z1=}1 z^H8K(!N9Y*CCM;OMn-(ByngfeuaiIgk2CHJ)%V-;7ev@r=#PFr(L;NmfYrNuZ2oRd z>1Tfy(YlVF>Ng}L!}ed-bjqW{2Da2fu-|vFLgEHpZjk1Q&u0K^ES}e}eoL>dEW}jG zvM*b?f?nm)k2_ol!4Jq1uq3U~wXU&5;85c5Z-H*1QrnUu8?0Kp+BZ~#Th!`!?;1hL zu^~#F>e2JB_hR?e6rv;^?!2P2pGxqKY^?sI86D(a|J7Qp!Yh%JAZ zEls$}!fm4yc$e0Y)UvVl&7mwsvl-kRmy@g4DE~f9JUelWN9|^RaA7jsM74l_YW;mG z+IVs6TMC!ykmFTQL4fwMOep{7m|eQU1u5s0zE2>oIw91^bZX=>yVzC}`b*S#g#5cV zmZ1)sN?l{7W?TKYu2q9yKd^`^CMyVM7f9eUQVYb2m*|*+(Y9DYARLU1jVQkQe_p)?1&T0Qlh$m z`iT9>^y}@uGC3HCt18HOs6uMb@Q-@4MA(=K6n6JdeV;mzwqkgIhR8WD9A`eGrAylu z^TjP@1Vm|PIJD!R?Lx1pBK_&{@*~sn@Z!ir-Id3+6ZQrJ2|jmNw%)(0EhzioNM(;B z+7W9E^m|P57+tw&s^HtphY|^siF#fbqawYe@n0K(4UQ9~e)v@H)CtfWYcQN zSD0NfGiy@5bbw0VwNUPA^-zA+*s@Sqms%hv{HiP1r!k!0FusOeFArT< zL_QCT%kNhT2x2~P?c1~wnZ6fx9WpbraO4s&eBz|HALd{!@!=tQU3B-CR$XAQvwEbD z!tZlwH~nOacM2;QtlJ0;kBft!ZaQ!I!e|FX^W6=+dO|OcLF%1DJe}XkQinez1yBv& z4cos;pc&D`R9`I&`zbAvUrjl=p5#@iV}*7*b~@DDTJz2FI2RMQ5{P0d^Yp*R@HEyp zJyp(eBlH~J|0L9LJg|+shd#j;8CBW1cwwpY&xVy`j>w zxY-e-UC)t`C(u*)P5_ByvSkm8Tx_10k@~RL@$EP;d0A7Xz$nbCkYiI$kWO;w)4j8` z1(Wo!EyrXjW=r?~;>mt~Vi8}L5{F$M-mht`UY_g>EquKZl$67RE}<)Dm0mq+t!pqnFIwB*<9IC7n*)U_R|Z#AQyoFOjhZB72o>CZ<9zZ-?{oJOOFwHy@&2alzdS zWK0ajbqOD7*>;tdORHtI2pa$M9-oQTW@~!BgP7&1W*onKR8ZO2OTun|=WzWnaV+H! zgH%fX!L#Hef)7i#9yo83d01uQ*gDlalsv;jsg1=a(^{Z{vEo%shHmvTB&nUGrP-gHcJb0$e7%E;*PJtJf0k}_)y`ZY88}a7t$-Z z)c@CLKiT=tu7j#&aH7&C4<$Ko3I|G(uC5dubB8NITFPqCo*dQ;ol>5}x^7(Ir3EC? zvrnv#ul~u;2>W3MqsOokC@$aD`optVa}Lk>1aKa~(=A;;z3JOqo{z>e^bL47KleAQ zUKSSdO|UP@;Ym=L3XapK=B?8l7Kc(BvR^rf1)Dv}i#?BuAh1a$0dDOZ{9=iwQYq%z z0KCv30Yr#W>J{2O0!%>4Gsw!{=lX3UP!L0}NVJU>afWBw3b@SzbfCwwV-3P{fQE$x z;4c;DI~rLC7bJlj6qS2+A3rmP*FChePW%Ym)>H$qJ@HN{gaD)QvVSAT9QdNMt}i*{ z4-FbIt1f%Eh$vAarPVjb;ySm8<^f!1yqIdEdDzRWaHWGc^`Czj~tJbzC9J1?lFOxMzZqk7l%25GaKCOa#KLs~%`RD5 zHu`J#J#iuDRU*Rla1+o`;Xgto&>G*6D9#Z5K^QLcL2w0ao-7e9XXs0uYz9ES3w|*~ zU5J-il|%fWU&i#1A%aE{l_jKO>w>~0Z?2#U2is$_{9=|pMX8(rWKa@cv24PQzh&`c z-l!IYCCjg6Q-;vnUhj{_GFog(o?MZ9mcO);$5KHlLyQf>s(+ue(4AqrV9P>m2R+f9 zejZwEQD)>BJFP)59|Z&i$vh=RDQroVJng;DE6xKLpu zprmO2vfF_TI$A!?$XHtbJW5H6d{JX0$UBq8hMuP2P}boRt+Hcv+b`BXgi78RG( zGMWGdIS)#jI;6Ps>O`5JG7C~)Ugt8`Bh3FrK2SxI5iJw76jPhjp&tyb4>#sThKP&G zP#hN^(iG9M3kPy>$u-h3y9O093l`)7LdM@ozt62zMFv%uSeV8%D_cz{ph`i%&lNf) zKbFzdRsGA*a97vWTj|@kde#e(mdl<81xGLunluMyPXMn|C#frqOD0)ESQSPoDLTH& z;5!|=8u6#v9++h|zn60v!JMO@8JjT1unxrX_%@>TiDIa^)7=0MVF*<=p3_&Eo5`bX z*D`;X5XI|Rk#5a!AcEJ@ovOc^oDe6O?6+pd8AkPfvDu9%koW<2^d7sXuq5K6KQWlN z5|MwzkUz%eFGyr$uPU6GM9)cERlf0hX=iK@r9rgej`p+)bl@;k>a(RDeQ!KDv6dLzzIINh4LA%bFX4O0+Sr+7Pmp9E08b%rXymmH*D>qO& z8F0Tim*yD6){wH$dW{e7hV#@~WQ|unJv)&mBwK%%BwG*mB-M8BaSO{>Le%j(gMYUg z;Xf|hUsL0`2xY;l`497nLU z)b$(RMhUoiAtg|iWLV>*JN$iRVUGgcB_v+AreJQVq8JJ|%Pympx_G&bo{ni`1qO&m zjSXmBx9R?BlbRmnrOMp1tk|KZYn;CJZ3>Y5-3K2`+@XTxoB{W7PYsqsJtA|GT6!2m zXX}{#_-g6ejlGEOVNbi{9ZtL%%Yc(jxLH`v>8-IG(wV{x(&3fBIqL)H;dIstr*xuRMzD zM;LwoyQEJD^01u9`NH&l{E%bIRE0O(E2~p-{($ej`=4K2k^$@7SAs@3$X~ou5`b## z>`3m&>v{ol!gl~GGmcfe2-w`Xu8<9aRhYwDE?(F&Vr1u%8=pPjF21ZZEvt2Ftu5;6 zxLfi+*H_RskXpOvM*ydXQIv`b$LTBDXwP$l{P`|W&YGzU958|=ga*PD)!rX4|2bZ$ z4l~7@8Ekt6U;l!>IZYIXS=9>(duchNVlV6TCc0A$`dpI+y4)KD6tr@7ha5u~2ikNT zD}JAYWaH8*%R2@>dx0UYo*tg-*5u7Gx-hxmD0{9`0r7|!#Afoa;jcW_5!_eUQm;<+ z^D$=(7&j_+l<=+QRIfzHTOdIY)}%aEw9rszLXZ2gj30>lOqjwE-pUXYcSlAN;;>4p zllDLNL7X4DRHf={%@ymXDsQ&6@ZB|(y4BaqrNYP#1TNmZu8#n5EJ$&(^j?w#kDqOg~Fn ziY@2Y8q9U)h1mB-P$aF9BROa#>yQ|zUi{(7HyYoDwUVb|oWv1iN)*gLE&LIYbdtZ5 zxRy}I$K-+2H+Ci7eb?u)FUWgoLMSl`r{8E)};pS)%W0ka?)p)i!baI zWC5=EXUr9>&4r=3H{^_?P>6rs^0gBJhhAdL9@v*?C&l-7Qu8wCsH&HAG#svF;f}fA z58anh$R2I2>_R;OY@(ECXi7}bu%_EAOjJSw>;4Q47TM25GFugRj>j3gg;wjrm+Wl1 z&DnZFoJVFJYo6*C6sOOg4Dj42Yc+7EI76YurN`w6a1jt!_u`nraP*$Yfi`>bQ#C9@)!>t0tEBo$+a-{;cr zmCLN$)q2aIPNKPVrzn?Fv9E$YcT%4g6%Zd9RMM?&xD`r}>k@GL%5qK{QQ9{r$3=x8 zhK1m^vQK#x#d1Ef&HW95efmHcnSG^D)BY`q&iJ|X7>L}yj7&7!bYRLGAdKBqS@V<9 z5I2X2pjrSJblS>+w_RDUuSw@ypRfth-M zW#|nLExvxkN%62_QVnk6xB&lpHU)NmnXdLbd;D7MoC0OI9Vz+wM$cCWE<8oS8UXc1 zy)^?aQOklGEsF(ga!7DgI0|mhu2rlMWvUzn>2vKyXjvHZ$`g&(bWU+2%I@M7S)T6f zasb@i+MZJ29kdOB=2vL-Xr5A?lyZR+{ED)wfti!op@XI}tC`{#S}08YTj@|i&zms| zer3-&<3hY08s~FwbZp0`neWu_I3-YL-!@@5a>#1@;C`pCGEcgW^>}b&h+*Jg>3Z3B zq!cUybSA`3y0fwn6P<+$k)zLFNXmY-PGbv+cT2DCh-0wW0hYF${hxrR+G_=&)Q2ye z?L=c6oCbISoNzQKzRw(}|Hk~Dm+A9c06Ru|kEGrQf)9!+$T>uSILvQ>SIPkRubpVu z*^~R(P>-YhLekd0i0WgMh~9XnHoZX)b3Xig4UNBt;Ut#uhlN!!ZWvXVxcDVS7v{?E zHCRAqEm1v9S)vrI-4Nd`4r7y2IUv+6#tI?G%{=r7p}p z+J5{qIKa<*l*5cVVSS>#m=#`8^c7o1JUvQNH%>a~-h;EZ4=DHMT9^|KDsf41i+yRo z&n38Ho~l~eA0g36tg$8!h|^w@Cb{&~xTK}7A!mj}VCO&au$pKR9&A}(TGtme0L@v* zzMdIu9p5e}A(3VVkMc^?%5_EFXl)_A`p`vAig{B_;{bXn^+fojw^gg$$AQxizaExG z+Vq#eIjqy|kK8GqS#D5drl?v|_RdH{&!gx-P5V_!VD_pkk&<@jAOfW=uiVtih~^}O zW)_ikp%fdnq>`k1#u-ah_CN|iWl-;^Ac{0_5>HbSByp?oOWQ4cltHCx7Hi`V5G>PGh@Qv!N1r^wF(f_OV`+6`Ss?t6I4+R=_4 z*XC~JE?cWwX*2?3t$oohF`x7U5_DBb&C`ABKWs41kZ!-=@e4gtt%j&%-Fn0NM3;tw zCnvKwx4X`76!t~xO^FbGzz*JL%mgtMSv*OZ8>o#fZb{J2rU}R=kAfCo!rjrBRr`Ix z;CiP!ZMKBuY6{iEmsNM((o?MY&%~oD zwkHc~E{3l}-+li)p8NId!a~n^_FD;}*zfITis}_Hws6~Ba}`Kk;CQIx+-d zZ@z>U;%vH8WqF)wP|UO|_N#u5NEYTFO!gKQe_zVJGvEgu5FBK)Slh3knsc1>Hfi+c zX!E48RY??!Sd>?*phbMx133P0w|3sdi3}%(s9%lmIQnZHnZc>rnjM+__)e|y?3RkS zG)3`rvCxHnZ6p$}b1!Cq+9R&_y_jA@x&aVZEzM)+Nn;VvwyRmUiE_^%I|Ym zZ_;8W-C`vyfUrDNh^KmKEtDtnCnx!Y%X!qkfAIJos_gfC*pAW{Me)*gHA9%n&&jkgbl zYiQy_Q~jTNrrLj?N;Rt7@nsuIn?_tUB zbDoa2yW%IRBe{{4alEX_|*uFrC+;_}vx(J(ZJy^CN5q^sIdatqyEw^OZAueTJ&Uq3H33^6Xqah&l&)%K@65pqdsOrAHg!ng+9Lq7r{wR)ym zTa*}D4IL*I6AqG*Rx``PboL2H#>_*_2a-YbaX4BF;2kNr7$zj$N~C6$B=1@fuUTF^#7ay!XL+_WR8P zX@~So2MMA-JyWv^qt~Wvexg8FT;s)()_TH_s9oG5VZ=!*NrKlnTS27CF(b(GYltfJ z=isUDeR}Xcz>Rb@t63MCQMb>lF4+3OGz_}&bLK?V_S6o?L^{%5uqf84&x|&~1PzBJ zoU~wR2joB@Z<#>zitGstASGJ0J}eoswmgdMF0(ahTn8^p!xiRsRGp{y;Gy3NA%Crm z!Q#6Qr%7BGt8U`{e+_NdZ!%{@~)e=GbzsS;cW`_f)32O@<8pw@UDl zAMJV2V|3rQ?~bddc0LfpG^IJ(S+`2UlWTSt&;Ix{Pk(6aes^hWP>P=rM0yu!f4e7{ zB=Jy*r3;z|>aD)7Cy$?soelacNAP4pH835rr*cl(TGJl7Yn!*Tl)Q!CFBw;Vx4ANZ#UAyo?T874R`RXd|# zI?V~4%t7{>%ky2+oJDNGVkSNts|hj2JCU0D8h9_jdZK;-td~ zOHWw$`z3m~TM)myr@vQlT-j05>xQaiQWSsR^AMq}>9}pdqcjGEz6gvE%-T{gTCYd4 z!#swgCtum>ouRFFTFSe3j334#-KipXe?^CWlXHV?#spn7@UM;JS)S3k^5?-C`3%8Z08i2M{}skCG@CkHOZ_s8#Z z5kGy`(Bmzlc1N*tPhx@=KezdcIZT=F%Q$NjzTo9Ux~MtU5Zj~jlfIM3bR=SCGJ+Vb!W3RBOqSG(s9 z`P&j=&$n3<=fP9mZ3$5k(eng6mTbH3rk5+%neg`B#d|P&t3o72MSUdm#Md1~jaMVYx7x_N4i49lx5u%9*ANCRx91u9tTOI@RX(t}dh^Tp2%$|Q z!WYrR$P^BYAVN{l;Sxgce^OW5RG9Ilv41M^th!%9UYi=}Y`YQPKXXGc;{8em&yALS z!MD7E4mZEd`@?|&Us1h!K`rd6!_79vSYQmHHf$>zd8|b4;48#Api3)GDi_mL_w&A7 zmlWg>JHd=sano(qQJ2-;dYLg@{4y8BeSAslJWx@E>1ErFAL9057#~n_4iSRfI?r|f zpK+)$&YV{Pl2H+gYK&VKxE`L3gDL#W@lQX53gfwH zpO7mTF9u)h_-Wb5b>+%IoaPxaFZjxZF2Ln$2jtHt*Hyn;(0`85VOkd_>g}#v!+8uy}(22C+O;mKSJ%bGP0&>c&jrl13=S%ZI zSUsPesB1v#fJ>$_Qt=5v@D`#Un5tMILOT~<_4_D>n?eL&LV;U10OBBu6};}t#Xr6Q ztdvMgA>vo-5A)m^5*L92-fIYCKWN^c%?OxFt$*f*%_ugak?{t_cc+Q*b`AF4WnV7d zs}9!??~)hiD%$__MMPaQHxNH}=v5DN+~X14z$=cNxjlbVsB?D>!94ku>%P6>=W7UH zLH$pP@xM#I>?rd5Z!#q6V%z`J>iI53;$OJa_1^yS6>=&n0o82k}qur}x6Y?ucTq_U7zv0E=V?dh<(F2Cu|i zaO>OFcXNoQn?h~7rx*Sn)A--qKSS9%8*}^a>D7yE)BgQD}#-Gg8bQ`l?xH{=Zaxd~o(TS9?+D|C9PZ&8@co`D|Ws zwf~2dR&Q3+SwFu{fe&B%hvY{OMB}gFh{jcHniSE?qVE!dZl2e>|H|g;7g)Dl?D+E= zc2W{AUz`OPd-oSh$C;V(JP@LV^1qpz{}1o}rvm$&lx!6c-w^eQFg^q{%TjB=KTOOcT_7{>s@QnX0LIVr_;GcZ^j$-IP<%nZO z-nVDyjpE*pbZ~~D?qyVq_4;_Ff=Go&p;e2@A zS>cr{G#C{1+oAsJ^%m! diff --git a/libs/potree/resources/textures/skybox/ny.jpg b/libs/potree/resources/textures/skybox/ny.jpg deleted file mode 100644 index 729b03cde38efada0485001ee3fd1640b4e5507a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6431 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 Sfn@}i5m-jx|AD|_|GxqJfUw8_ diff --git a/libs/potree/resources/textures/skybox/px.jpg b/libs/potree/resources/textures/skybox/px.jpg deleted file mode 100644 index c6e77ae0d070dfe976205070ed5919fd1b936acb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40406 zcmb5VcT^MW+WsHeSWpoG0Yw2fRk{M9N!cnrgls}D0TmDe2Bd@%iXJN$;!$HT>%b=(3TXp&sbe zsZ$^W;0N?;6!ZY}2Mf!|FR-x!zo*ZgKF!K{`uy3mXU<(bfAQjl^A|3#U*fvVeu?wa zg$tK?FLQEV;o;%A$ia7&_sUhSD?C?DPIBrG;D1<8vzoab0U zte`(m34>TTPyNAp>Q@U$0CWl%_`QMtyPaYIKI56Q=h%S5T9-k8fKL6va+>AzA1r^I zW&HyLI>o~I2P@Z~cTRKPGktW$`;4%{zvAx0vw1{#6-&-Oc-+*tz9DMn6R+bm1^hq% ze@+d28~?lg=k&laan6%(3HV-qKmBp?C#N`Bxc>O_&OK9ZR^ZgYnMHn$fGz@ufcNAC zX@hB`{r6+aJ@iP$D}#}$oob%bp;s4S#`gTz${a5Uj9 zSMgr)yaxULQm)ToAwR=ybC8bG%~@)$5YCk94aRE<`}sM&?w?Md)!4^%;B=o zV?A!w{U+X@w%xf8(k)og7dJnEK)1iVz=}?>Yf8U0VPmD4 z+yec@`XlMju*<5+ZJ<*h?tI7&Rf%NOT#geJI1FvE6i;@zosz40x&jkvnW5U=NSs1W zvKx|J6Bd-UBna8n)H-!&Uatl|1bpK<`O+Y*pOlX(Uc?4Fre6u2+l9eel&(BDTAaVO z^b6FqnLhrCMv#(ZxRNOMpUpQ)cRE33GnQ8HenV1izOS;(n!O4l3XAvEL-;Jq18&^S zrERcVWy{V!NxlJWa3?bTBMCAsTWccC| zU|rZ$KK%A#*J@-EcTAz!%RqX~KR2m^uJ+?-#TZe}H|K{m%wAwx$XAjNUiE1OpZ@2?A^%I3PNNz&U$4zur6b@b|doX zBUux$h6llH0K+Y@rmBhusK_^ltjOI{GGQhdEGxo z{KhM=`MrG32bmb(KEInZn4zdgE2k!>i`q>Yxptk3n78M(F3d-+d{9>!32m+`&b)~K z1yZ=bMrzX6!VNeUI4t1vCiz;oJ^CAp%eyOUb6=UYs96d1*GGc;X0|sc=boh5Vm|iz zZY8{9AnWqmdA=t($doTi{k+^V6jnJ-my7Em)MC_oEFN!IoCE_epfX`rD!wQ&Qb zDZrOMc{Mbp`dLNgFHp-qqWjVPpM|?>U@(|`Kf^r;DYLU05)ixB-Bw;{5ev+-f)HKWPzJdi6AFwLNAN_ln8OLotRuvu4G_yx_YCeDsR2q-xbb#XuR2p_bdM6tv`H zYlL@=NB4#H9uGw^+)yEz8jq6&t{7F0S`kP_yb8y54($m

      • ^ctX!LKnUV24=_m9G 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 diff --git a/libs/potree/resources/textures/skybox/py.jpg b/libs/potree/resources/textures/skybox/py.jpg deleted file mode 100644 index 6cf7e02f7eb54adab30e2b51ccfaece6d859d08a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77251 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

        E& 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 diff --git a/libs/potree/resources/textures/skybox/skyboxsun25degtest.txt b/libs/potree/resources/textures/skybox/skyboxsun25degtest.txt deleted file mode 100644 index 9e47547..0000000 --- a/libs/potree/resources/textures/skybox/skyboxsun25degtest.txt +++ /dev/null @@ -1 +0,0 @@ -http://reije081.home.xs4all.nl/skyboxes/ diff --git a/libs/potree/resources/textures/skybox2/README.TXT b/libs/potree/resources/textures/skybox2/README.TXT deleted file mode 100644 index 680005e..0000000 --- a/libs/potree/resources/textures/skybox2/README.TXT +++ /dev/null @@ -1,15 +0,0 @@ -THIS SKY WAS UPDATED AT THE 27TH -THE ORIG HAD SOME ERRORS - -MIRAMAR -high res 1024^2 environment map -ships as TGA. - - -By Jockum Skoglund aka hipshot -hipshot@zfight.com -www.zfight.com -Stockholm, 2005 08 25 - - -Modify however you like, just cred me for my work, maybe link to my page. diff --git a/libs/potree/resources/textures/skybox2/nx.jpg b/libs/potree/resources/textures/skybox2/nx.jpg deleted file mode 100644 index 8b4c1e422a3ab48c47f6f2d79b1bfe259ab3d298..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339776 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

        $Eu>9G(yBtCf>!nx0~c>* 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�LJlD;n{I4j@m4D^WHQy z85Xy@RspB5ZZ;Dn3_C|HnRZsOAi&Z&5pr*RA~nJEP-p{T3@a(6H;Juepcc@oQX zY^`v#g$)T}s-T0U*hF0Oxr2O8QdmlbybZUWKcA)XXX!b1sTC9uP}!MTS5Uc$Ul0Rt z^NxG3C#E&q8&_Wr%SKT;Ji_zZeRS8oh3VNYlafkwktBdwfdQn!gK4obbLl4<4Q&39 ze17dnw&Vlmc{@nC9r2W8`i(q_E|R3elkXY;h%9eCsBaRs)33W1>L$oa1HS2yhurpr%LIa`wk8E*g^0C^{i zTL3eiYNcW>QST&AawOsACz8XDKfgM$dIJ)t%9sQ*R}R zIz$3NF=(F;bKY@XuheSPVk)y#3&Bk*8=C{a>)RKeq3m{go2yV-wRFmY;2lM~wW2Qo z590z)u^n=&5Jfdc8k*2;+{;CbY&ONMyMz%J3aX2i*4EjY=D`tyTrWTrj zRJd6H5U2AJ0KDu8j`#u8x`l6eKwu2PTQ%n4P3$Hu`t74t_6Mp{rBT|oI&kn631U_+ zCr~1LM0pW>Q*$26XPYq6jA>JlUceFvHr$dx?S~gwa70JKX-FVohDS|)LCrjr)pV#E zK%YM6iRT3AQEeosS+Q7gaAekx&k z087V2VGg@!b~RwDT!tdDsaJ!kWN+9W+dv{cF&)v@TN;DiK`Y}{k!cY+hkdbF&h;u8 zbpf+PG2yxAcANaR@;DKh>#Qk+1l3XqV4#L!92wjT&7fiJ;oNZ#ye^m?+EQJ_AH=iR zkR)fXeQY&rx4e341QEaHS&20S1cB+MiRYI0xMeKPKw0gvPU^QHtQJ`w(5uA_}s?%@FylMjR8=FTST2Ecd zRjypq04*}aF(I{pcY_x_hcS%*05X*rveV4_ntFfy;*kZI$*~jV07Pw$`z|B~Qp(S? z$nohOZT1UEK?96=O-Sw{bDF(s)ak`PaZp?pu3l-8B1CB>M!@Qe?Y!_a0o8>yN|7?6 z`hfNQPTTrT%}@E-)pN-P0{eSb$H75*v#fo%xpen8n0^ zz0cjBg1O6j0JfY*PPp~Wc~dh?(j!e(I)F5fgh??XNK1foX z&8^25F&v$-!#K<+R}}%d{{XQH-ggrq{0W>r?p;bl+y4Mk2HmF7KVJA~+IsjQcb^9| zjGZ0>5OjkicLy0Fy%b%lfEk4#4z0g6r{N}UE&9k)S{eu{fPf%)fa3he$9V6FS$Zr+ zq_UXQt|Sx40FAu%{W0k^sTNYI$ih4-z8E9KBuFIf1adub=?rO3Ed$K|07DT_sp}~0 zX(?6w!Jx8_K|KEejB@nKoj|A$;tB<$aXq)coW|Dmohi9z1YX6aZgwMR_3yooJFA$Y z^roFM%q&=GfgQ*;w)^eOMh}9qfY}{z4hGZLeYCC_>If@Q6kozj6X|2N_ab(kh8h8? zHMAC!X##fhzt77IoYr0fxdNfE5Lis@s0iE8_QL|XHCaifkYp6kynrq?zAMzrsSN0}LWz}9 z?7*1Z*h%E}v|z4Yrj(kB2AOXbmDCQ$!ptCUNs9@Ag}4ELyuAm^pF%0DIzL|nz9Ali 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 ZX0NU06S3sqm;Hat$^UIgO8)-0{{lx32Ydhk diff --git a/libs/potree/resources/textures/skybox2/ny.jpg b/libs/potree/resources/textures/skybox2/ny.jpg deleted file mode 100644 index 1a73dd066081dc383bf9be26d6ed439775a55ea3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6432 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 }wK2-I7b&7x0nPk@10_4-pwI#gTBJnJ6 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

        =%CfA& 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®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

        PA$1rcJV^9RWB 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

        koj0)c=k{3s}e)AirMz3 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 X81X|I^ctHUjY`ti@zFX4|K9`vWo;|| diff --git a/libs/potree/resources/textures/skyboxsun25degtest.txt b/libs/potree/resources/textures/skyboxsun25degtest.txt deleted file mode 100644 index 9e47547..0000000 --- a/libs/potree/resources/textures/skyboxsun25degtest.txt +++ /dev/null @@ -1 +0,0 @@ -http://reije081.home.xs4all.nl/skyboxes/ diff --git a/libs/potree/sidebar.html b/libs/potree/sidebar.html deleted file mode 100644 index 559e04a..0000000 --- a/libs/potree/sidebar.html +++ /dev/null @@ -1,261 +0,0 @@ - -

        - - diff --git a/libs/potree/workers/2.0/DecoderWorker.js b/libs/potree/workers/2.0/DecoderWorker.js deleted file mode 100644 index 6d971aa..0000000 --- a/libs/potree/workers/2.0/DecoderWorker.js +++ /dev/null @@ -1,303 +0,0 @@ -/** - * Some types of possible point attribute data formats - * - * @class - */ -const PointAttributeTypes = { - DATA_TYPE_DOUBLE: {ordinal: 0, name: "double", size: 8}, - DATA_TYPE_FLOAT: {ordinal: 1, name: "float", size: 4}, - DATA_TYPE_INT8: {ordinal: 2, name: "int8", size: 1}, - DATA_TYPE_UINT8: {ordinal: 3, name: "uint8", size: 1}, - DATA_TYPE_INT16: {ordinal: 4, name: "int16", size: 2}, - DATA_TYPE_UINT16: {ordinal: 5, name: "uint16", size: 2}, - DATA_TYPE_INT32: {ordinal: 6, name: "int32", size: 4}, - DATA_TYPE_UINT32: {ordinal: 7, name: "uint32", size: 4}, - DATA_TYPE_INT64: {ordinal: 8, name: "int64", size: 8}, - DATA_TYPE_UINT64: {ordinal: 9, name: "uint64", size: 8} -}; - -let i = 0; -for (let obj in PointAttributeTypes) { - PointAttributeTypes[i] = PointAttributeTypes[obj]; - i++; -} - - -class PointAttribute{ - - constructor(name, type, numElements){ - this.name = name; - this.type = type; - this.numElements = numElements; - this.byteSize = this.numElements * this.type.size; - this.description = ""; - this.range = [Infinity, -Infinity]; - } - -} -PointAttribute.POSITION_CARTESIAN = new PointAttribute( - "POSITION_CARTESIAN", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.RGBA_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 4); - -PointAttribute.COLOR_PACKED = PointAttribute.RGBA_PACKED; - -PointAttribute.RGB_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 3); - -PointAttribute.NORMAL_FLOATS = new PointAttribute( - "NORMAL_FLOATS", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.INTENSITY = new PointAttribute( - "INTENSITY", PointAttributeTypes.DATA_TYPE_UINT16, 1); - -PointAttribute.CLASSIFICATION = new PointAttribute( - "CLASSIFICATION", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.NORMAL_SPHEREMAPPED = new PointAttribute( - "NORMAL_SPHEREMAPPED", PointAttributeTypes.DATA_TYPE_UINT8, 2); - -PointAttribute.NORMAL_OCT16 = new PointAttribute( - "NORMAL_OCT16", PointAttributeTypes.DATA_TYPE_UINT8, 2); - -PointAttribute.NORMAL = new PointAttribute( - "NORMAL", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.RETURN_NUMBER = new PointAttribute( - "RETURN_NUMBER", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.NUMBER_OF_RETURNS = new PointAttribute( - "NUMBER_OF_RETURNS", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.SOURCE_ID = new PointAttribute( - "SOURCE_ID", PointAttributeTypes.DATA_TYPE_UINT16, 1); - -PointAttribute.INDICES = new PointAttribute( - "INDICES", PointAttributeTypes.DATA_TYPE_UINT32, 1); - -PointAttribute.SPACING = new PointAttribute( - "SPACING", PointAttributeTypes.DATA_TYPE_FLOAT, 1); - -PointAttribute.GPS_TIME = new PointAttribute( - "GPS_TIME", PointAttributeTypes.DATA_TYPE_DOUBLE, 1); - -const typedArrayMapping = { - "int8": Int8Array, - "int16": Int16Array, - "int32": Int32Array, - "int64": Float64Array, - "uint8": Uint8Array, - "uint16": Uint16Array, - "uint32": Uint32Array, - "uint64": Float64Array, - "float": Float32Array, - "double": Float64Array, -}; - -Potree = {}; - -onmessage = function (event) { - - let {buffer, pointAttributes, scale, name, min, max, size, offset, numPoints} = event.data; - - let tStart = performance.now(); - - let view = new DataView(buffer); - - let attributeBuffers = {}; - let attributeOffset = 0; - - let bytesPerPoint = 0; - for (let pointAttribute of pointAttributes.attributes) { - bytesPerPoint += pointAttribute.byteSize; - } - - let gridSize = 32; - let grid = new Uint32Array(gridSize ** 3); - let toIndex = (x, y, z) => { - // let dx = gridSize * (x - min.x) / size.x; - // let dy = gridSize * (y - min.y) / size.y; - // let dz = gridSize * (z - min.z) / size.z; - - // min is already subtracted - let dx = gridSize * x / size.x; - let dy = gridSize * y / size.y; - let dz = gridSize * z / size.z; - - let ix = Math.min(parseInt(dx), gridSize - 1); - let iy = Math.min(parseInt(dy), gridSize - 1); - let iz = Math.min(parseInt(dz), gridSize - 1); - - let index = ix + iy * gridSize + iz * gridSize * gridSize; - - return index; - }; - - let numOccupiedCells = 0; - for (let pointAttribute of pointAttributes.attributes) { - - if(["POSITION_CARTESIAN", "position"].includes(pointAttribute.name)){ - let buff = new ArrayBuffer(numPoints * 4 * 3); - let positions = new Float32Array(buff); - - for (let j = 0; j < numPoints; j++) { - - let pointOffset = j * bytesPerPoint; - - let x = (view.getInt32(pointOffset + attributeOffset + 0, true) * scale[0]) + offset[0] - min.x; - let y = (view.getInt32(pointOffset + attributeOffset + 4, true) * scale[1]) + offset[1] - min.y; - let z = (view.getInt32(pointOffset + attributeOffset + 8, true) * scale[2]) + offset[2] - min.z; - - let index = toIndex(x, y, z); - let count = grid[index]++; - if(count === 0){ - numOccupiedCells++; - } - - positions[3 * j + 0] = x; - positions[3 * j + 1] = y; - positions[3 * j + 2] = z; - } - - attributeBuffers[pointAttribute.name] = { buffer: buff, attribute: pointAttribute }; - }else if(["RGBA", "rgba"].includes(pointAttribute.name)){ - let buff = new ArrayBuffer(numPoints * 4); - let colors = new Uint8Array(buff); - - for (let j = 0; j < numPoints; j++) { - let pointOffset = j * bytesPerPoint; - - let r = view.getUint16(pointOffset + attributeOffset + 0, true); - let g = view.getUint16(pointOffset + attributeOffset + 2, true); - let b = view.getUint16(pointOffset + attributeOffset + 4, true); - - colors[4 * j + 0] = r > 255 ? r / 256 : r; - colors[4 * j + 1] = g > 255 ? g / 256 : g; - colors[4 * j + 2] = b > 255 ? b / 256 : b; - } - - attributeBuffers[pointAttribute.name] = { buffer: buff, attribute: pointAttribute }; - }else { - let buff = new ArrayBuffer(numPoints * 4); - let f32 = new Float32Array(buff); - - let TypedArray = typedArrayMapping[pointAttribute.type.name]; - preciseBuffer = new TypedArray(numPoints); - - let [offset, scale] = [0, 1]; - - const getterMap = { - "int8": view.getInt8, - "int16": view.getInt16, - "int32": view.getInt32, - // "int64": view.getInt64, - "uint8": view.getUint8, - "uint16": view.getUint16, - "uint32": view.getUint32, - // "uint64": view.getUint64, - "float": view.getFloat32, - "double": view.getFloat64, - }; - const getter = getterMap[pointAttribute.type.name].bind(view); - - // compute offset and scale to pack larger types into 32 bit floats - if(pointAttribute.type.size > 4){ - let [amin, amax] = pointAttribute.range; - offset = amin; - scale = 1 / (amax - amin); - } - - for(let j = 0; j < numPoints; j++){ - let pointOffset = j * bytesPerPoint; - let value = getter(pointOffset + attributeOffset, true); - - f32[j] = (value - offset) * scale; - preciseBuffer[j] = value; - } - - attributeBuffers[pointAttribute.name] = { - buffer: buff, - preciseBuffer: preciseBuffer, - attribute: pointAttribute, - offset: offset, - scale: scale, - }; - } - - attributeOffset += pointAttribute.byteSize; - - - } - - let occupancy = parseInt(numPoints / numOccupiedCells); - // console.log(`${name}: #points: ${numPoints}: #occupiedCells: ${numOccupiedCells}, occupancy: ${occupancy} points/cell`); - - { // add indices - let buff = new ArrayBuffer(numPoints * 4); - let indices = new Uint32Array(buff); - - for (let i = 0; i < numPoints; i++) { - indices[i] = i; - } - - attributeBuffers["INDICES"] = { buffer: buff, attribute: PointAttribute.INDICES }; - } - - - { // handle attribute vectors - let vectors = pointAttributes.vectors; - - for(let vector of vectors){ - - let {name, attributes} = vector; - let numVectorElements = attributes.length; - let buffer = new ArrayBuffer(numVectorElements * numPoints * 4); - let f32 = new Float32Array(buffer); - - let iElement = 0; - for(let sourceName of attributes){ - let sourceBuffer = attributeBuffers[sourceName]; - let {offset, scale} = sourceBuffer; - let view = new DataView(sourceBuffer.buffer); - - const getter = view.getFloat32.bind(view); - - for(let j = 0; j < numPoints; j++){ - let value = getter(j * 4, true); - - f32[j * numVectorElements + iElement] = (value / scale) + offset; - } - - iElement++; - } - - let vecAttribute = new PointAttribute(name, PointAttributeTypes.DATA_TYPE_FLOAT, 3); - - attributeBuffers[name] = { - buffer: buffer, - attribute: vecAttribute, - }; - - } - - } - - // let duration = performance.now() - tStart; - // let pointsPerMs = numPoints / duration; - // console.log(`duration: ${duration.toFixed(1)}ms, #points: ${numPoints}, points/ms: ${pointsPerMs.toFixed(1)}`); - - let message = { - buffer: buffer, - attributeBuffers: attributeBuffers, - density: occupancy, - }; - - let transferables = []; - for (let property in message.attributeBuffers) { - transferables.push(message.attributeBuffers[property].buffer); - } - transferables.push(buffer); - - postMessage(message, transferables); -}; diff --git a/libs/potree/workers/2.0/DecoderWorker_brotli.js b/libs/potree/workers/2.0/DecoderWorker_brotli.js deleted file mode 100644 index 046c4e0..0000000 --- a/libs/potree/workers/2.0/DecoderWorker_brotli.js +++ /dev/null @@ -1,2485 +0,0 @@ -/** - * Some types of possible point attribute data formats - * - * @class - */ -const PointAttributeTypes = { - DATA_TYPE_DOUBLE: {ordinal: 0, name: "double", size: 8}, - DATA_TYPE_FLOAT: {ordinal: 1, name: "float", size: 4}, - DATA_TYPE_INT8: {ordinal: 2, name: "int8", size: 1}, - DATA_TYPE_UINT8: {ordinal: 3, name: "uint8", size: 1}, - DATA_TYPE_INT16: {ordinal: 4, name: "int16", size: 2}, - DATA_TYPE_UINT16: {ordinal: 5, name: "uint16", size: 2}, - DATA_TYPE_INT32: {ordinal: 6, name: "int32", size: 4}, - DATA_TYPE_UINT32: {ordinal: 7, name: "uint32", size: 4}, - DATA_TYPE_INT64: {ordinal: 8, name: "int64", size: 8}, - DATA_TYPE_UINT64: {ordinal: 9, name: "uint64", size: 8} -}; - -let i = 0; -for (let obj in PointAttributeTypes) { - PointAttributeTypes[i] = PointAttributeTypes[obj]; - i++; -} - - -class PointAttribute{ - - constructor(name, type, numElements){ - this.name = name; - this.type = type; - this.numElements = numElements; - this.byteSize = this.numElements * this.type.size; - this.description = ""; - this.range = [Infinity, -Infinity]; - } - -} -PointAttribute.POSITION_CARTESIAN = new PointAttribute( - "POSITION_CARTESIAN", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.RGBA_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 4); - -PointAttribute.COLOR_PACKED = PointAttribute.RGBA_PACKED; - -PointAttribute.RGB_PACKED = new PointAttribute( - "COLOR_PACKED", PointAttributeTypes.DATA_TYPE_INT8, 3); - -PointAttribute.NORMAL_FLOATS = new PointAttribute( - "NORMAL_FLOATS", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.INTENSITY = new PointAttribute( - "INTENSITY", PointAttributeTypes.DATA_TYPE_UINT16, 1); - -PointAttribute.CLASSIFICATION = new PointAttribute( - "CLASSIFICATION", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.NORMAL_SPHEREMAPPED = new PointAttribute( - "NORMAL_SPHEREMAPPED", PointAttributeTypes.DATA_TYPE_UINT8, 2); - -PointAttribute.NORMAL_OCT16 = new PointAttribute( - "NORMAL_OCT16", PointAttributeTypes.DATA_TYPE_UINT8, 2); - -PointAttribute.NORMAL = new PointAttribute( - "NORMAL", PointAttributeTypes.DATA_TYPE_FLOAT, 3); - -PointAttribute.RETURN_NUMBER = new PointAttribute( - "RETURN_NUMBER", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.NUMBER_OF_RETURNS = new PointAttribute( - "NUMBER_OF_RETURNS", PointAttributeTypes.DATA_TYPE_UINT8, 1); - -PointAttribute.SOURCE_ID = new PointAttribute( - "SOURCE_ID", PointAttributeTypes.DATA_TYPE_UINT16, 1); - -PointAttribute.INDICES = new PointAttribute( - "INDICES", PointAttributeTypes.DATA_TYPE_UINT32, 1); - -PointAttribute.SPACING = new PointAttribute( - "SPACING", PointAttributeTypes.DATA_TYPE_FLOAT, 1); - -PointAttribute.GPS_TIME = new PointAttribute( - "GPS_TIME", PointAttributeTypes.DATA_TYPE_DOUBLE, 1); - -/* Copyright 2017 Google Inc. All Rights Reserved. - - Distributed under MIT license. - See file LICENSE for detail or copy at https://opensource.org/licenses/MIT -*/ - -/** @return {function(!Int8Array):!Int8Array} */ -function BrotliDecodeClosure() { - - /** @type {!Int8Array} */ - var DICTIONARY_DATA = new Int8Array(0); - - /** - * @constructor - * @param {!Int8Array} bytes - * @struct - */ - function InputStream(bytes) { - /** @type {!Int8Array} */ - this.data = bytes; - /** @type {!number} */ - this.offset = 0; - } - var MAX_HUFFMAN_TABLE_SIZE = Int32Array.from([256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822, 854, 886, 920, 952, 984, 1016, 1048, 1080]); - var CODE_LENGTH_CODE_ORDER = Int32Array.from([1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15]); - var DISTANCE_SHORT_CODE_INDEX_OFFSET = Int32Array.from([0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3]); - var DISTANCE_SHORT_CODE_VALUE_OFFSET = Int32Array.from([0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3]); - var FIXED_TABLE = Int32Array.from([0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040001, 0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040005]); - var DICTIONARY_OFFSETS_BY_LENGTH = Int32Array.from([0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032, 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536, 115968, 118528, 119872, 121280, 122016]); - var DICTIONARY_SIZE_BITS_BY_LENGTH = Int32Array.from([0, 0, 0, 0, 10, 10, 11, 11, 10, 10, 10, 10, 10, 9, 9, 8, 7, 7, 8, 7, 7, 6, 6, 5, 5]); - var BLOCK_LENGTH_OFFSET = Int32Array.from([1, 5, 9, 13, 17, 25, 33, 41, 49, 65, 81, 97, 113, 145, 177, 209, 241, 305, 369, 497, 753, 1265, 2289, 4337, 8433, 16625]); - var BLOCK_LENGTH_N_BITS = Int32Array.from([2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 24]); - var INSERT_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0C, 0x0E, 0x18]); - var COPY_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x18]); - var CMD_LOOKUP = new Int16Array(2816); - { - unpackCommandLookupTable(CMD_LOOKUP); - } - /** - * @param {number} i - * @return {number} - */ - function log2floor(i) { - var /** number */ result = -1; - var /** number */ step = 16; - while (step > 0) { - if ((i >>> step) != 0) { - result += step; - i = i >>> step; - } - step = step >> 1; - } - return result + i; - } - /** - * @param {number} npostfix - * @param {number} ndirect - * @param {number} maxndistbits - * @return {number} - */ - function calculateDistanceAlphabetSize(npostfix, ndirect, maxndistbits) { - return 16 + ndirect + 2 * (maxndistbits << npostfix); - } - /** - * @param {number} maxDistance - * @param {number} npostfix - * @param {number} ndirect - * @return {number} - */ - function calculateDistanceAlphabetLimit(maxDistance, npostfix, ndirect) { - if (maxDistance < ndirect + (2 << npostfix)) { - throw "maxDistance is too small"; - } - var /** number */ offset = ((maxDistance - ndirect) >> npostfix) + 4; - var /** number */ ndistbits = log2floor(offset) - 1; - var /** number */ group = ((ndistbits - 1) << 1) | ((offset >> ndistbits) & 1); - return ((group - 1) << npostfix) + (1 << npostfix) + ndirect + 16; - } - /** - * @param {!Int16Array} cmdLookup - * @return {void} - */ - function unpackCommandLookupTable(cmdLookup) { - var /** !Int16Array */ insertLengthOffsets = new Int16Array(24); - var /** !Int16Array */ copyLengthOffsets = new Int16Array(24); - copyLengthOffsets[0] = 2; - for (var /** number */ i = 0; i < 23; ++i) { - insertLengthOffsets[i + 1] = (insertLengthOffsets[i] + (1 << INSERT_LENGTH_N_BITS[i])); - copyLengthOffsets[i + 1] = (copyLengthOffsets[i] + (1 << COPY_LENGTH_N_BITS[i])); - } - for (var /** number */ cmdCode = 0; cmdCode < 704; ++cmdCode) { - var /** number */ rangeIdx = cmdCode >>> 6; - var /** number */ distanceContextOffset = -4; - if (rangeIdx >= 2) { - rangeIdx -= 2; - distanceContextOffset = 0; - } - var /** number */ insertCode = (((0x29850 >>> (rangeIdx * 2)) & 0x3) << 3) | ((cmdCode >>> 3) & 7); - var /** number */ copyCode = (((0x26244 >>> (rangeIdx * 2)) & 0x3) << 3) | (cmdCode & 7); - var /** number */ copyLengthOffset = copyLengthOffsets[copyCode]; - var /** number */ distanceContext = distanceContextOffset + (copyLengthOffset > 4 ? 3 : copyLengthOffset - 2); - var /** number */ index = cmdCode * 4; - cmdLookup[index + 0] = (INSERT_LENGTH_N_BITS[insertCode] | (COPY_LENGTH_N_BITS[copyCode] << 8)); - cmdLookup[index + 1] = insertLengthOffsets[insertCode]; - cmdLookup[index + 2] = copyLengthOffsets[copyCode]; - cmdLookup[index + 3] = distanceContext; - } - } - /** - * @param {!State} s - * @return {number} - */ - function decodeWindowBits(s) { - var /** number */ largeWindowEnabled = s.isLargeWindow; - s.isLargeWindow = 0; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - if (readFewBits(s, 1) == 0) { - return 16; - } - var /** number */ n = readFewBits(s, 3); - if (n != 0) { - return 17 + n; - } - n = readFewBits(s, 3); - if (n != 0) { - if (n == 1) { - if (largeWindowEnabled == 0) { - return -1; - } - s.isLargeWindow = 1; - if (readFewBits(s, 1) == 1) { - return -1; - } - n = readFewBits(s, 6); - if (n < 10 || n > 30) { - return -1; - } - return n; - } else { - return 8 + n; - } - } - return 17; - } - /** - * @param {!State} s - * @param {!InputStream} input - * @return {void} - */ - function initState(s, input) { - if (s.runningState != 0) { - throw "State MUST be uninitialized"; - } - s.blockTrees = new Int32Array(3091); - s.blockTrees[0] = 7; - s.distRbIdx = 3; - var /** number */ maxDistanceAlphabetLimit = calculateDistanceAlphabetLimit(0x7FFFFFFC, 3, 15 << 3); - s.distExtraBits = new Int8Array(maxDistanceAlphabetLimit); - s.distOffset = new Int32Array(maxDistanceAlphabetLimit); - s.input = input; - initBitReader(s); - s.runningState = 1; - } - /** - * @param {!State} s - * @return {void} - */ - function close(s) { - if (s.runningState == 0) { - throw "State MUST be initialized"; - } - if (s.runningState == 11) { - return; - } - s.runningState = 11; - if (s.input != null) { - closeInput(s.input); - s.input = null; - } - } - /** - * @param {!State} s - * @return {number} - */ - function decodeVarLenUnsignedByte(s) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - if (readFewBits(s, 1) != 0) { - var /** number */ n = readFewBits(s, 3); - if (n == 0) { - return 1; - } else { - return readFewBits(s, n) + (1 << n); - } - } - return 0; - } - /** - * @param {!State} s - * @return {void} - */ - function decodeMetaBlockLength(s) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - s.inputEnd = readFewBits(s, 1); - s.metaBlockLength = 0; - s.isUncompressed = 0; - s.isMetadata = 0; - if ((s.inputEnd != 0) && readFewBits(s, 1) != 0) { - return; - } - var /** number */ sizeNibbles = readFewBits(s, 2) + 4; - if (sizeNibbles == 7) { - s.isMetadata = 1; - if (readFewBits(s, 1) != 0) { - throw "Corrupted reserved bit"; - } - var /** number */ sizeBytes = readFewBits(s, 2); - if (sizeBytes == 0) { - return; - } - for (var /** number */ i = 0; i < sizeBytes; i++) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ bits = readFewBits(s, 8); - if (bits == 0 && i + 1 == sizeBytes && sizeBytes > 1) { - throw "Exuberant nibble"; - } - s.metaBlockLength |= bits << (i * 8); - } - } else { - for (var /** number */ i = 0; i < sizeNibbles; i++) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ bits = readFewBits(s, 4); - if (bits == 0 && i + 1 == sizeNibbles && sizeNibbles > 4) { - throw "Exuberant nibble"; - } - s.metaBlockLength |= bits << (i * 4); - } - } - s.metaBlockLength++; - if (s.inputEnd == 0) { - s.isUncompressed = readFewBits(s, 1); - } - } - /** - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {!State} s - * @return {number} - */ - function readSymbol(tableGroup, tableIdx, s) { - var /** number */ offset = tableGroup[tableIdx]; - var /** number */ val = (s.accumulator32 >>> s.bitOffset); - offset += val & 0xFF; - var /** number */ bits = tableGroup[offset] >> 16; - var /** number */ sym = tableGroup[offset] & 0xFFFF; - if (bits <= 8) { - s.bitOffset += bits; - return sym; - } - offset += sym; - var /** number */ mask = (1 << bits) - 1; - offset += (val & mask) >>> 8; - s.bitOffset += ((tableGroup[offset] >> 16) + 8); - return tableGroup[offset] & 0xFFFF; - } - /** - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {!State} s - * @return {number} - */ - function readBlockLength(tableGroup, tableIdx, s) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ code = readSymbol(tableGroup, tableIdx, s); - var /** number */ n = BLOCK_LENGTH_N_BITS[code]; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - return BLOCK_LENGTH_OFFSET[code] + ((n <= 16) ? readFewBits(s, n) : readManyBits(s, n)); - } - /** - * @param {!Int32Array} v - * @param {number} index - * @return {void} - */ - function moveToFront(v, index) { - var /** number */ value = v[index]; - for (; index > 0; index--) { - v[index] = v[index - 1]; - } - v[0] = value; - } - /** - * @param {!Int8Array} v - * @param {number} vLen - * @return {void} - */ - function inverseMoveToFrontTransform(v, vLen) { - var /** !Int32Array */ mtf = new Int32Array(256); - for (var /** number */ i = 0; i < 256; i++) { - mtf[i] = i; - } - for (var /** number */ i = 0; i < vLen; i++) { - var /** number */ index = v[i] & 0xFF; - v[i] = mtf[index]; - if (index != 0) { - moveToFront(mtf, index); - } - } - } - /** - * @param {!Int32Array} codeLengthCodeLengths - * @param {number} numSymbols - * @param {!Int32Array} codeLengths - * @param {!State} s - * @return {void} - */ - function readHuffmanCodeLengths(codeLengthCodeLengths, numSymbols, codeLengths, s) { - var /** number */ symbol = 0; - var /** number */ prevCodeLen = 8; - var /** number */ repeat = 0; - var /** number */ repeatCodeLen = 0; - var /** number */ space = 32768; - var /** !Int32Array */ table = new Int32Array(32 + 1); - var /** number */ tableIdx = table.length - 1; - buildHuffmanTable(table, tableIdx, 5, codeLengthCodeLengths, 18); - while (symbol < numSymbols && space > 0) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ p = (s.accumulator32 >>> s.bitOffset) & 31; - s.bitOffset += table[p] >> 16; - var /** number */ codeLen = table[p] & 0xFFFF; - if (codeLen < 16) { - repeat = 0; - codeLengths[symbol++] = codeLen; - if (codeLen != 0) { - prevCodeLen = codeLen; - space -= 32768 >> codeLen; - } - } else { - var /** number */ extraBits = codeLen - 14; - var /** number */ newLen = 0; - if (codeLen == 16) { - newLen = prevCodeLen; - } - if (repeatCodeLen != newLen) { - repeat = 0; - repeatCodeLen = newLen; - } - var /** number */ oldRepeat = repeat; - if (repeat > 0) { - repeat -= 2; - repeat <<= extraBits; - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - repeat += readFewBits(s, extraBits) + 3; - var /** number */ repeatDelta = repeat - oldRepeat; - if (symbol + repeatDelta > numSymbols) { - throw "symbol + repeatDelta > numSymbols"; - } - for (var /** number */ i = 0; i < repeatDelta; i++) { - codeLengths[symbol++] = repeatCodeLen; - } - if (repeatCodeLen != 0) { - space -= repeatDelta << (15 - repeatCodeLen); - } - } - } - if (space != 0) { - throw "Unused space"; - } - codeLengths.fill(0, symbol, numSymbols); - } - /** - * @param {!Int32Array} symbols - * @param {number} length - * @return {void} - */ - function checkDupes(symbols, length) { - for (var /** number */ i = 0; i < length - 1; ++i) { - for (var /** number */ j = i + 1; j < length; ++j) { - if (symbols[i] == symbols[j]) { - throw "Duplicate simple Huffman code symbol"; - } - } - } - } - /** - * @param {number} alphabetSizeMax - * @param {number} alphabetSizeLimit - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {!State} s - * @return {number} - */ - function readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) { - var /** !Int32Array */ codeLengths = new Int32Array(alphabetSizeLimit); - var /** !Int32Array */ symbols = new Int32Array(4); - var /** number */ maxBits = 1 + log2floor(alphabetSizeMax - 1); - var /** number */ numSymbols = readFewBits(s, 2) + 1; - for (var /** number */ i = 0; i < numSymbols; i++) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ symbol = readFewBits(s, maxBits); - if (symbol >= alphabetSizeLimit) { - throw "Can't readHuffmanCode"; - } - symbols[i] = symbol; - } - checkDupes(symbols, numSymbols); - var /** number */ histogramId = numSymbols; - if (numSymbols == 4) { - histogramId += readFewBits(s, 1); - } - switch(histogramId) { - case 1: - codeLengths[symbols[0]] = 1; - break; - case 2: - codeLengths[symbols[0]] = 1; - codeLengths[symbols[1]] = 1; - break; - case 3: - codeLengths[symbols[0]] = 1; - codeLengths[symbols[1]] = 2; - codeLengths[symbols[2]] = 2; - break; - case 4: - codeLengths[symbols[0]] = 2; - codeLengths[symbols[1]] = 2; - codeLengths[symbols[2]] = 2; - codeLengths[symbols[3]] = 2; - break; - case 5: - codeLengths[symbols[0]] = 1; - codeLengths[symbols[1]] = 2; - codeLengths[symbols[2]] = 3; - codeLengths[symbols[3]] = 3; - break; - } - return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit); - } - /** - * @param {number} alphabetSizeLimit - * @param {number} skip - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {!State} s - * @return {number} - */ - function readComplexHuffmanCode(alphabetSizeLimit, skip, tableGroup, tableIdx, s) { - var /** !Int32Array */ codeLengths = new Int32Array(alphabetSizeLimit); - var /** !Int32Array */ codeLengthCodeLengths = new Int32Array(18); - var /** number */ space = 32; - var /** number */ numCodes = 0; - for (var /** number */ i = skip; i < 18 && space > 0; i++) { - var /** number */ codeLenIdx = CODE_LENGTH_CODE_ORDER[i]; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ p = (s.accumulator32 >>> s.bitOffset) & 15; - s.bitOffset += FIXED_TABLE[p] >> 16; - var /** number */ v = FIXED_TABLE[p] & 0xFFFF; - codeLengthCodeLengths[codeLenIdx] = v; - if (v != 0) { - space -= (32 >> v); - numCodes++; - } - } - if (space != 0 && numCodes != 1) { - throw "Corrupted Huffman code histogram"; - } - readHuffmanCodeLengths(codeLengthCodeLengths, alphabetSizeLimit, codeLengths, s); - return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit); - } - /** - * @param {number} alphabetSizeMax - * @param {number} alphabetSizeLimit - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {!State} s - * @return {number} - */ - function readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ simpleCodeOrSkip = readFewBits(s, 2); - if (simpleCodeOrSkip == 1) { - return readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s); - } else { - return readComplexHuffmanCode(alphabetSizeLimit, simpleCodeOrSkip, tableGroup, tableIdx, s); - } - } - /** - * @param {number} contextMapSize - * @param {!Int8Array} contextMap - * @param {!State} s - * @return {number} - */ - function decodeContextMap(contextMapSize, contextMap, s) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - var /** number */ numTrees = decodeVarLenUnsignedByte(s) + 1; - if (numTrees == 1) { - contextMap.fill(0, 0, contextMapSize); - return numTrees; - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ useRleForZeros = readFewBits(s, 1); - var /** number */ maxRunLengthPrefix = 0; - if (useRleForZeros != 0) { - maxRunLengthPrefix = readFewBits(s, 4) + 1; - } - var /** number */ alphabetSize = numTrees + maxRunLengthPrefix; - var /** number */ tableSize = MAX_HUFFMAN_TABLE_SIZE[(alphabetSize + 31) >> 5]; - var /** !Int32Array */ table = new Int32Array(tableSize + 1); - var /** number */ tableIdx = table.length - 1; - readHuffmanCode(alphabetSize, alphabetSize, table, tableIdx, s); - for (var /** number */ i = 0; i < contextMapSize; ) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ code = readSymbol(table, tableIdx, s); - if (code == 0) { - contextMap[i] = 0; - i++; - } else if (code <= maxRunLengthPrefix) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ reps = (1 << code) + readFewBits(s, code); - while (reps != 0) { - if (i >= contextMapSize) { - throw "Corrupted context map"; - } - contextMap[i] = 0; - i++; - reps--; - } - } else { - contextMap[i] = (code - maxRunLengthPrefix); - i++; - } - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - if (readFewBits(s, 1) == 1) { - inverseMoveToFrontTransform(contextMap, contextMapSize); - } - return numTrees; - } - /** - * @param {!State} s - * @param {number} treeType - * @param {number} numBlockTypes - * @return {number} - */ - function decodeBlockTypeAndLength(s, treeType, numBlockTypes) { - var /** !Int32Array */ ringBuffers = s.rings; - var /** number */ offset = 4 + treeType * 2; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ blockType = readSymbol(s.blockTrees, 2 * treeType, s); - var /** number */ result = readBlockLength(s.blockTrees, 2 * treeType + 1, s); - if (blockType == 1) { - blockType = ringBuffers[offset + 1] + 1; - } else if (blockType == 0) { - blockType = ringBuffers[offset]; - } else { - blockType -= 2; - } - if (blockType >= numBlockTypes) { - blockType -= numBlockTypes; - } - ringBuffers[offset] = ringBuffers[offset + 1]; - ringBuffers[offset + 1] = blockType; - return result; - } - /** - * @param {!State} s - * @return {void} - */ - function decodeLiteralBlockSwitch(s) { - s.literalBlockLength = decodeBlockTypeAndLength(s, 0, s.numLiteralBlockTypes); - var /** number */ literalBlockType = s.rings[5]; - s.contextMapSlice = literalBlockType << 6; - s.literalTreeIdx = s.contextMap[s.contextMapSlice] & 0xFF; - var /** number */ contextMode = s.contextModes[literalBlockType]; - s.contextLookupOffset1 = contextMode << 9; - s.contextLookupOffset2 = s.contextLookupOffset1 + 256; - } - /** - * @param {!State} s - * @return {void} - */ - function decodeCommandBlockSwitch(s) { - s.commandBlockLength = decodeBlockTypeAndLength(s, 1, s.numCommandBlockTypes); - s.commandTreeIdx = s.rings[7]; - } - /** - * @param {!State} s - * @return {void} - */ - function decodeDistanceBlockSwitch(s) { - s.distanceBlockLength = decodeBlockTypeAndLength(s, 2, s.numDistanceBlockTypes); - s.distContextMapSlice = s.rings[9] << 2; - } - /** - * @param {!State} s - * @return {void} - */ - function maybeReallocateRingBuffer(s) { - var /** number */ newSize = s.maxRingBufferSize; - if (newSize > s.expectedTotalSize) { - var /** number */ minimalNewSize = s.expectedTotalSize; - while ((newSize >> 1) > minimalNewSize) { - newSize >>= 1; - } - if ((s.inputEnd == 0) && newSize < 16384 && s.maxRingBufferSize >= 16384) { - newSize = 16384; - } - } - if (newSize <= s.ringBufferSize) { - return; - } - var /** number */ ringBufferSizeWithSlack = newSize + 37; - var /** !Int8Array */ newBuffer = new Int8Array(ringBufferSizeWithSlack); - if (s.ringBuffer.length != 0) { - newBuffer.set(s.ringBuffer.subarray(0, 0 + s.ringBufferSize), 0); - } - s.ringBuffer = newBuffer; - s.ringBufferSize = newSize; - } - /** - * @param {!State} s - * @return {void} - */ - function readNextMetablockHeader(s) { - if (s.inputEnd != 0) { - s.nextRunningState = 10; - s.runningState = 12; - return; - } - s.literalTreeGroup = new Int32Array(0); - s.commandTreeGroup = new Int32Array(0); - s.distanceTreeGroup = new Int32Array(0); - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - decodeMetaBlockLength(s); - if ((s.metaBlockLength == 0) && (s.isMetadata == 0)) { - return; - } - if ((s.isUncompressed != 0) || (s.isMetadata != 0)) { - jumpToByteBoundary(s); - s.runningState = (s.isMetadata != 0) ? 5 : 6; - } else { - s.runningState = 3; - } - if (s.isMetadata != 0) { - return; - } - s.expectedTotalSize += s.metaBlockLength; - if (s.expectedTotalSize > 1 << 30) { - s.expectedTotalSize = 1 << 30; - } - if (s.ringBufferSize < s.maxRingBufferSize) { - maybeReallocateRingBuffer(s); - } - } - /** - * @param {!State} s - * @param {number} treeType - * @param {number} numBlockTypes - * @return {number} - */ - function readMetablockPartition(s, treeType, numBlockTypes) { - var /** number */ offset = s.blockTrees[2 * treeType]; - if (numBlockTypes <= 1) { - s.blockTrees[2 * treeType + 1] = offset; - s.blockTrees[2 * treeType + 2] = offset; - return 1 << 28; - } - var /** number */ blockTypeAlphabetSize = numBlockTypes + 2; - offset += readHuffmanCode(blockTypeAlphabetSize, blockTypeAlphabetSize, s.blockTrees, 2 * treeType, s); - s.blockTrees[2 * treeType + 1] = offset; - var /** number */ blockLengthAlphabetSize = 26; - offset += readHuffmanCode(blockLengthAlphabetSize, blockLengthAlphabetSize, s.blockTrees, 2 * treeType + 1, s); - s.blockTrees[2 * treeType + 2] = offset; - return readBlockLength(s.blockTrees, 2 * treeType + 1, s); - } - /** - * @param {!State} s - * @param {number} alphabetSizeLimit - * @return {void} - */ - function calculateDistanceLut(s, alphabetSizeLimit) { - var /** !Int8Array */ distExtraBits = s.distExtraBits; - var /** !Int32Array */ distOffset = s.distOffset; - var /** number */ npostfix = s.distancePostfixBits; - var /** number */ ndirect = s.numDirectDistanceCodes; - var /** number */ postfix = 1 << npostfix; - var /** number */ bits = 1; - var /** number */ half = 0; - var /** number */ i = 16; - for (var /** number */ j = 0; j < ndirect; ++j) { - distExtraBits[i] = 0; - distOffset[i] = j + 1; - ++i; - } - while (i < alphabetSizeLimit) { - var /** number */ base = ndirect + ((((2 + half) << bits) - 4) << npostfix) + 1; - for (var /** number */ j = 0; j < postfix; ++j) { - distExtraBits[i] = bits; - distOffset[i] = base + j; - ++i; - } - bits = bits + half; - half = half ^ 1; - } - } - /** - * @param {!State} s - * @return {void} - */ - function readMetablockHuffmanCodesAndContextMaps(s) { - s.numLiteralBlockTypes = decodeVarLenUnsignedByte(s) + 1; - s.literalBlockLength = readMetablockPartition(s, 0, s.numLiteralBlockTypes); - s.numCommandBlockTypes = decodeVarLenUnsignedByte(s) + 1; - s.commandBlockLength = readMetablockPartition(s, 1, s.numCommandBlockTypes); - s.numDistanceBlockTypes = decodeVarLenUnsignedByte(s) + 1; - s.distanceBlockLength = readMetablockPartition(s, 2, s.numDistanceBlockTypes); - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - s.distancePostfixBits = readFewBits(s, 2); - s.numDirectDistanceCodes = readFewBits(s, 4) << s.distancePostfixBits; - s.distancePostfixMask = (1 << s.distancePostfixBits) - 1; - s.contextModes = new Int8Array(s.numLiteralBlockTypes); - for (var /** number */ i = 0; i < s.numLiteralBlockTypes; ) { - var /** number */ limit = min(i + 96, s.numLiteralBlockTypes); - for (; i < limit; ++i) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - s.contextModes[i] = readFewBits(s, 2); - } - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - } - s.contextMap = new Int8Array(s.numLiteralBlockTypes << 6); - var /** number */ numLiteralTrees = decodeContextMap(s.numLiteralBlockTypes << 6, s.contextMap, s); - s.trivialLiteralContext = 1; - for (var /** number */ j = 0; j < s.numLiteralBlockTypes << 6; j++) { - if (s.contextMap[j] != j >> 6) { - s.trivialLiteralContext = 0; - break; - } - } - s.distContextMap = new Int8Array(s.numDistanceBlockTypes << 2); - var /** number */ numDistTrees = decodeContextMap(s.numDistanceBlockTypes << 2, s.distContextMap, s); - s.literalTreeGroup = decodeHuffmanTreeGroup(256, 256, numLiteralTrees, s); - s.commandTreeGroup = decodeHuffmanTreeGroup(704, 704, s.numCommandBlockTypes, s); - var /** number */ distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 24); - var /** number */ distanceAlphabetSizeLimit = distanceAlphabetSizeMax; - if (s.isLargeWindow == 1) { - distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 62); - distanceAlphabetSizeLimit = calculateDistanceAlphabetLimit(0x7FFFFFFC, s.distancePostfixBits, s.numDirectDistanceCodes); - } - s.distanceTreeGroup = decodeHuffmanTreeGroup(distanceAlphabetSizeMax, distanceAlphabetSizeLimit, numDistTrees, s); - calculateDistanceLut(s, distanceAlphabetSizeLimit); - s.contextMapSlice = 0; - s.distContextMapSlice = 0; - s.contextLookupOffset1 = s.contextModes[0] * 512; - s.contextLookupOffset2 = s.contextLookupOffset1 + 256; - s.literalTreeIdx = 0; - s.commandTreeIdx = 0; - s.rings[4] = 1; - s.rings[5] = 0; - s.rings[6] = 1; - s.rings[7] = 0; - s.rings[8] = 1; - s.rings[9] = 0; - } - /** - * @param {!State} s - * @return {void} - */ - function copyUncompressedData(s) { - var /** !Int8Array */ ringBuffer = s.ringBuffer; - if (s.metaBlockLength <= 0) { - reload(s); - s.runningState = 2; - return; - } - var /** number */ chunkLength = min(s.ringBufferSize - s.pos, s.metaBlockLength); - copyBytes(s, ringBuffer, s.pos, chunkLength); - s.metaBlockLength -= chunkLength; - s.pos += chunkLength; - if (s.pos == s.ringBufferSize) { - s.nextRunningState = 6; - s.runningState = 12; - return; - } - reload(s); - s.runningState = 2; - } - /** - * @param {!State} s - * @return {number} - */ - function writeRingBuffer(s) { - var /** number */ toWrite = min(s.outputLength - s.outputUsed, s.ringBufferBytesReady - s.ringBufferBytesWritten); - if (toWrite != 0) { - s.output.set(s.ringBuffer.subarray(s.ringBufferBytesWritten, s.ringBufferBytesWritten + toWrite), s.outputOffset + s.outputUsed); - s.outputUsed += toWrite; - s.ringBufferBytesWritten += toWrite; - } - if (s.outputUsed < s.outputLength) { - return 1; - } else { - return 0; - } - } - /** - * @param {number} alphabetSizeMax - * @param {number} alphabetSizeLimit - * @param {number} n - * @param {!State} s - * @return {!Int32Array} - */ - function decodeHuffmanTreeGroup(alphabetSizeMax, alphabetSizeLimit, n, s) { - var /** number */ maxTableSize = MAX_HUFFMAN_TABLE_SIZE[(alphabetSizeLimit + 31) >> 5]; - var /** !Int32Array */ group = new Int32Array(n + n * maxTableSize); - var /** number */ next = n; - for (var /** number */ i = 0; i < n; ++i) { - group[i] = next; - next += readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, group, i, s); - } - return group; - } - /** - * @param {!State} s - * @return {number} - */ - function calculateFence(s) { - var /** number */ result = s.ringBufferSize; - if (s.isEager != 0) { - result = min(result, s.ringBufferBytesWritten + s.outputLength - s.outputUsed); - } - return result; - } - /** - * @param {!State} s - * @return {void} - */ - function decompress(s) { - if (s.runningState == 0) { - throw "Can't decompress until initialized"; - } - if (s.runningState == 11) { - throw "Can't decompress after close"; - } - if (s.runningState == 1) { - var /** number */ windowBits = decodeWindowBits(s); - if (windowBits == -1) { - throw "Invalid 'windowBits' code"; - } - s.maxRingBufferSize = 1 << windowBits; - s.maxBackwardDistance = s.maxRingBufferSize - 16; - s.runningState = 2; - } - var /** number */ fence = calculateFence(s); - var /** number */ ringBufferMask = s.ringBufferSize - 1; - var /** !Int8Array */ ringBuffer = s.ringBuffer; - while (s.runningState != 10) { - switch(s.runningState) { - case 2: - if (s.metaBlockLength < 0) { - throw "Invalid metablock length"; - } - readNextMetablockHeader(s); - fence = calculateFence(s); - ringBufferMask = s.ringBufferSize - 1; - ringBuffer = s.ringBuffer; - continue; - case 3: - readMetablockHuffmanCodesAndContextMaps(s); - s.runningState = 4; - case 4: - if (s.metaBlockLength <= 0) { - s.runningState = 2; - continue; - } - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.commandBlockLength == 0) { - decodeCommandBlockSwitch(s); - } - s.commandBlockLength--; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ cmdCode = readSymbol(s.commandTreeGroup, s.commandTreeIdx, s) << 2; - var /** number */ insertAndCopyExtraBits = CMD_LOOKUP[cmdCode]; - var /** number */ insertLengthOffset = CMD_LOOKUP[cmdCode + 1]; - var /** number */ copyLengthOffset = CMD_LOOKUP[cmdCode + 2]; - s.distanceCode = CMD_LOOKUP[cmdCode + 3]; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ extraBits = insertAndCopyExtraBits & 0xFF; - s.insertLength = insertLengthOffset + ((extraBits <= 16) ? readFewBits(s, extraBits) : readManyBits(s, extraBits)); - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ extraBits = insertAndCopyExtraBits >> 8; - s.copyLength = copyLengthOffset + ((extraBits <= 16) ? readFewBits(s, extraBits) : readManyBits(s, extraBits)); - s.j = 0; - s.runningState = 7; - case 7: - if (s.trivialLiteralContext != 0) { - while (s.j < s.insertLength) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.literalBlockLength == 0) { - decodeLiteralBlockSwitch(s); - } - s.literalBlockLength--; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - ringBuffer[s.pos] = readSymbol(s.literalTreeGroup, s.literalTreeIdx, s); - s.pos++; - s.j++; - if (s.pos >= fence) { - s.nextRunningState = 7; - s.runningState = 12; - break; - } - } - } else { - var /** number */ prevByte1 = ringBuffer[(s.pos - 1) & ringBufferMask] & 0xFF; - var /** number */ prevByte2 = ringBuffer[(s.pos - 2) & ringBufferMask] & 0xFF; - while (s.j < s.insertLength) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.literalBlockLength == 0) { - decodeLiteralBlockSwitch(s); - } - var /** number */ literalContext = LOOKUP[s.contextLookupOffset1 + prevByte1] | LOOKUP[s.contextLookupOffset2 + prevByte2]; - var /** number */ literalTreeIdx = s.contextMap[s.contextMapSlice + literalContext] & 0xFF; - s.literalBlockLength--; - prevByte2 = prevByte1; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - prevByte1 = readSymbol(s.literalTreeGroup, literalTreeIdx, s); - ringBuffer[s.pos] = prevByte1; - s.pos++; - s.j++; - if (s.pos >= fence) { - s.nextRunningState = 7; - s.runningState = 12; - break; - } - } - } - if (s.runningState != 7) { - continue; - } - s.metaBlockLength -= s.insertLength; - if (s.metaBlockLength <= 0) { - s.runningState = 4; - continue; - } - var /** number */ distanceCode = s.distanceCode; - if (distanceCode < 0) { - s.distance = s.rings[s.distRbIdx]; - } else { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.distanceBlockLength == 0) { - decodeDistanceBlockSwitch(s); - } - s.distanceBlockLength--; - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - var /** number */ distTreeIdx = s.distContextMap[s.distContextMapSlice + distanceCode] & 0xFF; - distanceCode = readSymbol(s.distanceTreeGroup, distTreeIdx, s); - if (distanceCode < 16) { - var /** number */ index = (s.distRbIdx + DISTANCE_SHORT_CODE_INDEX_OFFSET[distanceCode]) & 0x3; - s.distance = s.rings[index] + DISTANCE_SHORT_CODE_VALUE_OFFSET[distanceCode]; - if (s.distance < 0) { - throw "Negative distance"; - } - } else { - var /** number */ extraBits = s.distExtraBits[distanceCode]; - var /** number */ bits; - if (s.bitOffset + extraBits <= 32) { - bits = readFewBits(s, extraBits); - } else { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - bits = ((extraBits <= 16) ? readFewBits(s, extraBits) : readManyBits(s, extraBits)); - } - s.distance = s.distOffset[distanceCode] + (bits << s.distancePostfixBits); - } - } - if (s.maxDistance != s.maxBackwardDistance && s.pos < s.maxBackwardDistance) { - s.maxDistance = s.pos; - } else { - s.maxDistance = s.maxBackwardDistance; - } - if (s.distance > s.maxDistance) { - s.runningState = 9; - continue; - } - if (distanceCode > 0) { - s.distRbIdx = (s.distRbIdx + 1) & 0x3; - s.rings[s.distRbIdx] = s.distance; - } - if (s.copyLength > s.metaBlockLength) { - throw "Invalid backward reference"; - } - s.j = 0; - s.runningState = 8; - case 8: - var /** number */ src = (s.pos - s.distance) & ringBufferMask; - var /** number */ dst = s.pos; - var /** number */ copyLength = s.copyLength - s.j; - var /** number */ srcEnd = src + copyLength; - var /** number */ dstEnd = dst + copyLength; - if ((srcEnd < ringBufferMask) && (dstEnd < ringBufferMask)) { - if (copyLength < 12 || (srcEnd > dst && dstEnd > src)) { - for (var /** number */ k = 0; k < copyLength; k += 4) { - ringBuffer[dst++] = ringBuffer[src++]; - ringBuffer[dst++] = ringBuffer[src++]; - ringBuffer[dst++] = ringBuffer[src++]; - ringBuffer[dst++] = ringBuffer[src++]; - } - } else { - ringBuffer.copyWithin(dst, src, srcEnd); - } - s.j += copyLength; - s.metaBlockLength -= copyLength; - s.pos += copyLength; - } else { - for (; s.j < s.copyLength; ) { - ringBuffer[s.pos] = ringBuffer[(s.pos - s.distance) & ringBufferMask]; - s.metaBlockLength--; - s.pos++; - s.j++; - if (s.pos >= fence) { - s.nextRunningState = 8; - s.runningState = 12; - break; - } - } - } - if (s.runningState == 8) { - s.runningState = 4; - } - continue; - case 9: - if (s.distance > 0x7FFFFFFC) { - throw "Invalid backward reference"; - } - if (s.copyLength >= 4 && s.copyLength <= 24) { - var /** number */ offset = DICTIONARY_OFFSETS_BY_LENGTH[s.copyLength]; - var /** number */ wordId = s.distance - s.maxDistance - 1; - var /** number */ shift = DICTIONARY_SIZE_BITS_BY_LENGTH[s.copyLength]; - var /** number */ mask = (1 << shift) - 1; - var /** number */ wordIdx = wordId & mask; - var /** number */ transformIdx = wordId >>> shift; - offset += wordIdx * s.copyLength; - if (transformIdx < 121) { - var /** number */ len = transformDictionaryWord(ringBuffer, s.pos, DICTIONARY_DATA, offset, s.copyLength, RFC_TRANSFORMS, transformIdx); - s.pos += len; - s.metaBlockLength -= len; - if (s.pos >= fence) { - s.nextRunningState = 4; - s.runningState = 12; - continue; - } - } else { - throw "Invalid backward reference"; - } - } else { - throw "Invalid backward reference"; - } - s.runningState = 4; - continue; - case 5: - while (s.metaBlockLength > 0) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - readFewBits(s, 8); - s.metaBlockLength--; - } - s.runningState = 2; - continue; - case 6: - copyUncompressedData(s); - continue; - case 12: - s.ringBufferBytesReady = min(s.pos, s.ringBufferSize); - s.runningState = 13; - case 13: - if (writeRingBuffer(s) == 0) { - return; - } - if (s.pos >= s.maxBackwardDistance) { - s.maxDistance = s.maxBackwardDistance; - } - if (s.pos >= s.ringBufferSize) { - if (s.pos > s.ringBufferSize) { - ringBuffer.copyWithin(0, s.ringBufferSize, s.pos); - } - s.pos &= ringBufferMask; - s.ringBufferBytesWritten = 0; - } - s.runningState = s.nextRunningState; - continue; - default: - throw "Unexpected state " + s.runningState; - } - } - if (s.runningState == 10) { - if (s.metaBlockLength < 0) { - throw "Invalid metablock length"; - } - jumpToByteBoundary(s); - checkHealth(s, 1); - } - } - - /** - * @constructor - * @param {number} numTransforms - * @param {number} prefixSuffixLen - * @param {number} prefixSuffixCount - * @struct - */ - function Transforms(numTransforms, prefixSuffixLen, prefixSuffixCount) { - /** @type {!number} */ - this.numTransforms = 0; - /** @type {!Int32Array} */ - this.triplets = new Int32Array(0); - /** @type {!Int8Array} */ - this.prefixSuffixStorage = new Int8Array(0); - /** @type {!Int32Array} */ - this.prefixSuffixHeads = new Int32Array(0); - /** @type {!Int16Array} */ - this.params = new Int16Array(0); - this.numTransforms = numTransforms; - this.triplets = new Int32Array(numTransforms * 3); - this.params = new Int16Array(numTransforms); - this.prefixSuffixStorage = new Int8Array(prefixSuffixLen); - this.prefixSuffixHeads = new Int32Array(prefixSuffixCount + 1); - } - - var RFC_TRANSFORMS = new Transforms(121, 167, 50); - /** - * @param {!Int8Array} prefixSuffix - * @param {!Int32Array} prefixSuffixHeads - * @param {!Int32Array} transforms - * @param {!string} prefixSuffixSrc - * @param {!string} transformsSrc - * @return {void} - */ - function unpackTransforms(prefixSuffix, prefixSuffixHeads, transforms, prefixSuffixSrc, transformsSrc) { - var /** number */ n = prefixSuffixSrc.length; - var /** number */ index = 1; - var /** number */ j = 0; - for (var /** number */ i = 0; i < n; ++i) { - var /** number */ c = prefixSuffixSrc.charCodeAt(i); - if (c == 35) { - prefixSuffixHeads[index++] = j; - } else { - prefixSuffix[j++] = c; - } - } - for (var /** number */ i = 0; i < 363; ++i) { - transforms[i] = transformsSrc.charCodeAt(i) - 32; - } - } - { - unpackTransforms(RFC_TRANSFORMS.prefixSuffixStorage, RFC_TRANSFORMS.prefixSuffixHeads, RFC_TRANSFORMS.triplets, "# #s #, #e #.# the #.com/#\u00C2\u00A0# of # and # in # to #\"#\">#\n#]# for # a # that #. # with #'# from # by #. The # on # as # is #ing #\n\t#:#ed #(# at #ly #=\"# of the #. This #,# not #er #al #='#ful #ive #less #est #ize #ous #", " !! ! , *! &! \" ! ) * * - ! # ! #!*! + ,$ ! - % . / # 0 1 . \" 2 3!* 4% ! # / 5 6 7 8 0 1 & $ 9 + : ; < ' != > ?! 4 @ 4 2 & A *# ( B C& ) % ) !*# *-% A +! *. D! %' & E *6 F G% ! *A *% H! D I!+! J!+ K +- *4! A L!*4 M N +6 O!*% +.! K *G P +%( ! G *D +D Q +# *K!*G!+D!+# +G +A +4!+% +K!+4!*D!+K!*K"); - } - /** - * @param {!Int8Array} dst - * @param {number} dstOffset - * @param {!Int8Array} src - * @param {number} srcOffset - * @param {number} len - * @param {!Transforms} transforms - * @param {number} transformIndex - * @return {number} - */ - function transformDictionaryWord(dst, dstOffset, src, srcOffset, len, transforms, transformIndex) { - var /** number */ offset = dstOffset; - var /** !Int32Array */ triplets = transforms.triplets; - var /** !Int8Array */ prefixSuffixStorage = transforms.prefixSuffixStorage; - var /** !Int32Array */ prefixSuffixHeads = transforms.prefixSuffixHeads; - var /** number */ transformOffset = 3 * transformIndex; - var /** number */ prefixIdx = triplets[transformOffset]; - var /** number */ transformType = triplets[transformOffset + 1]; - var /** number */ suffixIdx = triplets[transformOffset + 2]; - var /** number */ prefix = prefixSuffixHeads[prefixIdx]; - var /** number */ prefixEnd = prefixSuffixHeads[prefixIdx + 1]; - var /** number */ suffix = prefixSuffixHeads[suffixIdx]; - var /** number */ suffixEnd = prefixSuffixHeads[suffixIdx + 1]; - var /** number */ omitFirst = transformType - 11; - var /** number */ omitLast = transformType - 0; - if (omitFirst < 1 || omitFirst > 9) { - omitFirst = 0; - } - if (omitLast < 1 || omitLast > 9) { - omitLast = 0; - } - while (prefix != prefixEnd) { - dst[offset++] = prefixSuffixStorage[prefix++]; - } - if (omitFirst > len) { - omitFirst = len; - } - srcOffset += omitFirst; - len -= omitFirst; - len -= omitLast; - var /** number */ i = len; - while (i > 0) { - dst[offset++] = src[srcOffset++]; - i--; - } - if (transformType == 10 || transformType == 11) { - var /** number */ uppercaseOffset = offset - len; - if (transformType == 10) { - len = 1; - } - while (len > 0) { - var /** number */ c0 = dst[uppercaseOffset] & 0xFF; - if (c0 < 0xC0) { - if (c0 >= 97 && c0 <= 122) { - dst[uppercaseOffset] ^= 32; - } - uppercaseOffset += 1; - len -= 1; - } else if (c0 < 0xE0) { - dst[uppercaseOffset + 1] ^= 32; - uppercaseOffset += 2; - len -= 2; - } else { - dst[uppercaseOffset + 2] ^= 5; - uppercaseOffset += 3; - len -= 3; - } - } - } else if (transformType == 21 || transformType == 22) { - var /** number */ shiftOffset = offset - len; - var /** number */ param = transforms.params[transformIndex]; - var /** number */ scalar = (param & 0x7FFF) + (0x1000000 - (param & 0x8000)); - while (len > 0) { - var /** number */ step = 1; - var /** number */ c0 = dst[shiftOffset] & 0xFF; - if (c0 < 0x80) { - scalar += c0; - dst[shiftOffset] = (scalar & 0x7F); - } else if (c0 < 0xC0) ; else if (c0 < 0xE0) { - if (len >= 2) { - var /** number */ c1 = dst[shiftOffset + 1]; - scalar += (c1 & 0x3F) | ((c0 & 0x1F) << 6); - dst[shiftOffset] = (0xC0 | ((scalar >> 6) & 0x1F)); - dst[shiftOffset + 1] = ((c1 & 0xC0) | (scalar & 0x3F)); - step = 2; - } else { - step = len; - } - } else if (c0 < 0xF0) { - if (len >= 3) { - var /** number */ c1 = dst[shiftOffset + 1]; - var /** number */ c2 = dst[shiftOffset + 2]; - scalar += (c2 & 0x3F) | ((c1 & 0x3F) << 6) | ((c0 & 0x0F) << 12); - dst[shiftOffset] = (0xE0 | ((scalar >> 12) & 0x0F)); - dst[shiftOffset + 1] = ((c1 & 0xC0) | ((scalar >> 6) & 0x3F)); - dst[shiftOffset + 2] = ((c2 & 0xC0) | (scalar & 0x3F)); - step = 3; - } else { - step = len; - } - } else if (c0 < 0xF8) { - if (len >= 4) { - var /** number */ c1 = dst[shiftOffset + 1]; - var /** number */ c2 = dst[shiftOffset + 2]; - var /** number */ c3 = dst[shiftOffset + 3]; - scalar += (c3 & 0x3F) | ((c2 & 0x3F) << 6) | ((c1 & 0x3F) << 12) | ((c0 & 0x07) << 18); - dst[shiftOffset] = (0xF0 | ((scalar >> 18) & 0x07)); - dst[shiftOffset + 1] = ((c1 & 0xC0) | ((scalar >> 12) & 0x3F)); - dst[shiftOffset + 2] = ((c2 & 0xC0) | ((scalar >> 6) & 0x3F)); - dst[shiftOffset + 3] = ((c3 & 0xC0) | (scalar & 0x3F)); - step = 4; - } else { - step = len; - } - } - shiftOffset += step; - len -= step; - if (transformType == 21) { - len = 0; - } - } - } - while (suffix != suffixEnd) { - dst[offset++] = prefixSuffixStorage[suffix++]; - } - return offset - dstOffset; - } - - /** - * @param {number} key - * @param {number} len - * @return {number} - */ - function getNextKey(key, len) { - var /** number */ step = 1 << (len - 1); - while ((key & step) != 0) { - step >>= 1; - } - return (key & (step - 1)) + step; - } - /** - * @param {!Int32Array} table - * @param {number} offset - * @param {number} step - * @param {number} end - * @param {number} item - * @return {void} - */ - function replicateValue(table, offset, step, end, item) { - do { - end -= step; - table[offset + end] = item; - } while (end > 0); - } - /** - * @param {!Int32Array} count - * @param {number} len - * @param {number} rootBits - * @return {number} - */ - function nextTableBitSize(count, len, rootBits) { - var /** number */ left = 1 << (len - rootBits); - while (len < 15) { - left -= count[len]; - if (left <= 0) { - break; - } - len++; - left <<= 1; - } - return len - rootBits; - } - /** - * @param {!Int32Array} tableGroup - * @param {number} tableIdx - * @param {number} rootBits - * @param {!Int32Array} codeLengths - * @param {number} codeLengthsSize - * @return {number} - */ - function buildHuffmanTable(tableGroup, tableIdx, rootBits, codeLengths, codeLengthsSize) { - var /** number */ tableOffset = tableGroup[tableIdx]; - var /** number */ key; - var /** !Int32Array */ sorted = new Int32Array(codeLengthsSize); - var /** !Int32Array */ count = new Int32Array(16); - var /** !Int32Array */ offset = new Int32Array(16); - var /** number */ symbol; - for (symbol = 0; symbol < codeLengthsSize; symbol++) { - count[codeLengths[symbol]]++; - } - offset[1] = 0; - for (var /** number */ len = 1; len < 15; len++) { - offset[len + 1] = offset[len] + count[len]; - } - for (symbol = 0; symbol < codeLengthsSize; symbol++) { - if (codeLengths[symbol] != 0) { - sorted[offset[codeLengths[symbol]]++] = symbol; - } - } - var /** number */ tableBits = rootBits; - var /** number */ tableSize = 1 << tableBits; - var /** number */ totalSize = tableSize; - if (offset[15] == 1) { - for (key = 0; key < totalSize; key++) { - tableGroup[tableOffset + key] = sorted[0]; - } - return totalSize; - } - key = 0; - symbol = 0; - for (var /** number */ len = 1, step = 2; len <= rootBits; len++, step <<= 1) { - for (; count[len] > 0; count[len]--) { - replicateValue(tableGroup, tableOffset + key, step, tableSize, len << 16 | sorted[symbol++]); - key = getNextKey(key, len); - } - } - var /** number */ mask = totalSize - 1; - var /** number */ low = -1; - var /** number */ currentOffset = tableOffset; - for (var /** number */ len = rootBits + 1, step = 2; len <= 15; len++, step <<= 1) { - for (; count[len] > 0; count[len]--) { - if ((key & mask) != low) { - currentOffset += tableSize; - tableBits = nextTableBitSize(count, len, rootBits); - tableSize = 1 << tableBits; - totalSize += tableSize; - low = key & mask; - tableGroup[tableOffset + low] = (tableBits + rootBits) << 16 | (currentOffset - tableOffset - low); - } - replicateValue(tableGroup, currentOffset + (key >> rootBits), step, tableSize, (len - rootBits) << 16 | sorted[symbol++]); - key = getNextKey(key, len); - } - } - return totalSize; - } - - /** - * @param {!State} s - * @return {void} - */ - function doReadMoreInput(s) { - if (s.endOfStreamReached != 0) { - if (halfAvailable(s) >= -2) { - return; - } - throw "No more input"; - } - var /** number */ readOffset = s.halfOffset << 1; - var /** number */ bytesInBuffer = 4096 - readOffset; - s.byteBuffer.copyWithin(0, readOffset, 4096); - s.halfOffset = 0; - while (bytesInBuffer < 4096) { - var /** number */ spaceLeft = 4096 - bytesInBuffer; - var /** number */ len = readInput(s.input, s.byteBuffer, bytesInBuffer, spaceLeft); - if (len <= 0) { - s.endOfStreamReached = 1; - s.tailBytes = bytesInBuffer; - bytesInBuffer += 1; - break; - } - bytesInBuffer += len; - } - bytesToNibbles(s, bytesInBuffer); - } - /** - * @param {!State} s - * @param {number} endOfStream - * @return {void} - */ - function checkHealth(s, endOfStream) { - if (s.endOfStreamReached == 0) { - return; - } - var /** number */ byteOffset = (s.halfOffset << 1) + ((s.bitOffset + 7) >> 3) - 4; - if (byteOffset > s.tailBytes) { - throw "Read after end"; - } - if ((endOfStream != 0) && (byteOffset != s.tailBytes)) { - throw "Unused bytes after end"; - } - } - /** - * @param {!State} s - * @param {number} n - * @return {number} - */ - function readFewBits(s, n) { - var /** number */ val = (s.accumulator32 >>> s.bitOffset) & ((1 << n) - 1); - s.bitOffset += n; - return val; - } - /** - * @param {!State} s - * @param {number} n - * @return {number} - */ - function readManyBits(s, n) { - var /** number */ low = readFewBits(s, 16); - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - return low | (readFewBits(s, n - 16) << 16); - } - /** - * @param {!State} s - * @return {void} - */ - function initBitReader(s) { - s.byteBuffer = new Int8Array(4160); - s.accumulator32 = 0; - s.shortBuffer = new Int16Array(2080); - s.bitOffset = 32; - s.halfOffset = 2048; - s.endOfStreamReached = 0; - prepare(s); - } - /** - * @param {!State} s - * @return {void} - */ - function prepare(s) { - if (s.halfOffset > 2030) { - doReadMoreInput(s); - } - checkHealth(s, 0); - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - /** - * @param {!State} s - * @return {void} - */ - function reload(s) { - if (s.bitOffset == 32) { - prepare(s); - } - } - /** - * @param {!State} s - * @return {void} - */ - function jumpToByteBoundary(s) { - var /** number */ padding = (32 - s.bitOffset) & 7; - if (padding != 0) { - var /** number */ paddingBits = readFewBits(s, padding); - if (paddingBits != 0) { - throw "Corrupted padding bits"; - } - } - } - /** - * @param {!State} s - * @return {number} - */ - function halfAvailable(s) { - var /** number */ limit = 2048; - if (s.endOfStreamReached != 0) { - limit = (s.tailBytes + 1) >> 1; - } - return limit - s.halfOffset; - } - /** - * @param {!State} s - * @param {!Int8Array} data - * @param {number} offset - * @param {number} length - * @return {void} - */ - function copyBytes(s, data, offset, length) { - if ((s.bitOffset & 7) != 0) { - throw "Unaligned copyBytes"; - } - while ((s.bitOffset != 32) && (length != 0)) { - data[offset++] = (s.accumulator32 >>> s.bitOffset); - s.bitOffset += 8; - length--; - } - if (length == 0) { - return; - } - var /** number */ copyNibbles = min(halfAvailable(s), length >> 1); - if (copyNibbles > 0) { - var /** number */ readOffset = s.halfOffset << 1; - var /** number */ delta = copyNibbles << 1; - data.set(s.byteBuffer.subarray(readOffset, readOffset + delta), offset); - offset += delta; - length -= delta; - s.halfOffset += copyNibbles; - } - if (length == 0) { - return; - } - if (halfAvailable(s) > 0) { - if (s.bitOffset >= 16) { - s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); - s.bitOffset -= 16; - } - while (length != 0) { - data[offset++] = (s.accumulator32 >>> s.bitOffset); - s.bitOffset += 8; - length--; - } - checkHealth(s, 0); - return; - } - while (length > 0) { - var /** number */ len = readInput(s.input, data, offset, length); - if (len == -1) { - throw "Unexpected end of input"; - } - offset += len; - length -= len; - } - } - /** - * @param {!State} s - * @param {number} byteLen - * @return {void} - */ - function bytesToNibbles(s, byteLen) { - var /** !Int8Array */ byteBuffer = s.byteBuffer; - var /** number */ halfLen = byteLen >> 1; - var /** !Int16Array */ shortBuffer = s.shortBuffer; - for (var /** number */ i = 0; i < halfLen; ++i) { - shortBuffer[i] = ((byteBuffer[i * 2] & 0xFF) | ((byteBuffer[(i * 2) + 1] & 0xFF) << 8)); - } - } - - var LOOKUP = new Int32Array(2048); - /** - * @param {!Int32Array} lookup - * @param {!string} map - * @param {!string} rle - * @return {void} - */ - function unpackLookupTable(lookup, map, rle) { - for (var /** number */ i = 0; i < 256; ++i) { - lookup[i] = i & 0x3F; - lookup[512 + i] = i >> 2; - lookup[1792 + i] = 2 + (i >> 6); - } - for (var /** number */ i = 0; i < 128; ++i) { - lookup[1024 + i] = 4 * (map.charCodeAt(i) - 32); - } - for (var /** number */ i = 0; i < 64; ++i) { - lookup[1152 + i] = i & 1; - lookup[1216 + i] = 2 + (i & 1); - } - var /** number */ offset = 1280; - for (var /** number */ k = 0; k < 19; ++k) { - var /** number */ value = k & 3; - var /** number */ rep = rle.charCodeAt(k) - 32; - for (var /** number */ i = 0; i < rep; ++i) { - lookup[offset++] = value; - } - } - for (var /** number */ i = 0; i < 16; ++i) { - lookup[1792 + i] = 1; - lookup[2032 + i] = 6; - } - lookup[1792] = 0; - lookup[2047] = 7; - for (var /** number */ i = 0; i < 256; ++i) { - lookup[1536 + i] = lookup[1792 + i] << 3; - } - } - { - unpackLookupTable(LOOKUP, " !! ! \"#$##%#$&'##(#)#++++++++++((&*'##,---,---,-----,-----,-----&#'###.///.///./////./////./////&#'# ", "A/* ': & : $ \u0081 @"); - } - - /** - * @constructor - * @struct - */ - function State() { - /** @type {!Int8Array} */ - this.ringBuffer = new Int8Array(0); - /** @type {!Int8Array} */ - this.contextModes = new Int8Array(0); - /** @type {!Int8Array} */ - this.contextMap = new Int8Array(0); - /** @type {!Int8Array} */ - this.distContextMap = new Int8Array(0); - /** @type {!Int8Array} */ - this.distExtraBits = new Int8Array(0); - /** @type {!Int8Array} */ - this.output = new Int8Array(0); - /** @type {!Int8Array} */ - this.byteBuffer = new Int8Array(0); - /** @type {!Int16Array} */ - this.shortBuffer = new Int16Array(0); - /** @type {!Int32Array} */ - this.intBuffer = new Int32Array(0); - /** @type {!Int32Array} */ - this.rings = new Int32Array(0); - /** @type {!Int32Array} */ - this.blockTrees = new Int32Array(0); - /** @type {!Int32Array} */ - this.literalTreeGroup = new Int32Array(0); - /** @type {!Int32Array} */ - this.commandTreeGroup = new Int32Array(0); - /** @type {!Int32Array} */ - this.distanceTreeGroup = new Int32Array(0); - /** @type {!Int32Array} */ - this.distOffset = new Int32Array(0); - /** @type {!number} */ - this.runningState = 0; - /** @type {!number} */ - this.nextRunningState = 0; - /** @type {!number} */ - this.accumulator32 = 0; - /** @type {!number} */ - this.bitOffset = 0; - /** @type {!number} */ - this.halfOffset = 0; - /** @type {!number} */ - this.tailBytes = 0; - /** @type {!number} */ - this.endOfStreamReached = 0; - /** @type {!number} */ - this.metaBlockLength = 0; - /** @type {!number} */ - this.inputEnd = 0; - /** @type {!number} */ - this.isUncompressed = 0; - /** @type {!number} */ - this.isMetadata = 0; - /** @type {!number} */ - this.literalBlockLength = 0; - /** @type {!number} */ - this.numLiteralBlockTypes = 0; - /** @type {!number} */ - this.commandBlockLength = 0; - /** @type {!number} */ - this.numCommandBlockTypes = 0; - /** @type {!number} */ - this.distanceBlockLength = 0; - /** @type {!number} */ - this.numDistanceBlockTypes = 0; - /** @type {!number} */ - this.pos = 0; - /** @type {!number} */ - this.maxDistance = 0; - /** @type {!number} */ - this.distRbIdx = 0; - /** @type {!number} */ - this.trivialLiteralContext = 0; - /** @type {!number} */ - this.literalTreeIdx = 0; - /** @type {!number} */ - this.commandTreeIdx = 0; - /** @type {!number} */ - this.j = 0; - /** @type {!number} */ - this.insertLength = 0; - /** @type {!number} */ - this.contextMapSlice = 0; - /** @type {!number} */ - this.distContextMapSlice = 0; - /** @type {!number} */ - this.contextLookupOffset1 = 0; - /** @type {!number} */ - this.contextLookupOffset2 = 0; - /** @type {!number} */ - this.distanceCode = 0; - /** @type {!number} */ - this.numDirectDistanceCodes = 0; - /** @type {!number} */ - this.distancePostfixMask = 0; - /** @type {!number} */ - this.distancePostfixBits = 0; - /** @type {!number} */ - this.distance = 0; - /** @type {!number} */ - this.copyLength = 0; - /** @type {!number} */ - this.maxBackwardDistance = 0; - /** @type {!number} */ - this.maxRingBufferSize = 0; - /** @type {!number} */ - this.ringBufferSize = 0; - /** @type {!number} */ - this.expectedTotalSize = 0; - /** @type {!number} */ - this.outputOffset = 0; - /** @type {!number} */ - this.outputLength = 0; - /** @type {!number} */ - this.outputUsed = 0; - /** @type {!number} */ - this.ringBufferBytesWritten = 0; - /** @type {!number} */ - this.ringBufferBytesReady = 0; - /** @type {!number} */ - this.isEager = 0; - /** @type {!number} */ - this.isLargeWindow = 0; - /** @type {!InputStream|null} */ - this.input = null; - this.ringBuffer = new Int8Array(0); - this.rings = new Int32Array(10); - this.rings[0] = 16; - this.rings[1] = 15; - this.rings[2] = 11; - this.rings[3] = 4; - } - - /** - * @param {!Int8Array} dictionary - * @param {!string} data0 - * @param {!string} data1 - * @param {!string} skipFlip - * @return {void} - */ - function unpackDictionaryData(dictionary, data0, data1, skipFlip) { - var /** !Int8Array */ dict = toUsAsciiBytes(data0 + data1); - if (dict.length != dictionary.length) { - throw "Corrupted brotli dictionary"; - } - var /** number */ offset = 0; - var /** number */ n = skipFlip.length; - for (var /** number */ i = 0; i < n; i += 2) { - var /** number */ skip = skipFlip.charCodeAt(i) - 36; - var /** number */ flip = skipFlip.charCodeAt(i + 1) - 36; - offset += skip; - for (var /** number */ j = 0; j < flip; ++j) { - dict[offset] |= 0x80; - offset++; - } - } - dictionary.set(dict); - } - { - var /** !Int8Array */ dictionary = new Int8Array(122784); - unpackDictionaryData(dictionary, "timedownlifeleftbackcodedatashowonlysitecityopenjustlikefreeworktextyearoverbodyloveformbookplaylivelinehelphomesidemorewordlongthemviewfindpagedaysfullheadtermeachareafromtruemarkableuponhighdatelandnewsevennextcasebothpostusedmadehandherewhatnameLinkblogsizebaseheldmakemainuser') +holdendswithNewsreadweresigntakehavegameseencallpathwellplusmenufilmpartjointhislistgoodneedwayswestjobsmindalsologorichuseslastteamarmyfoodkingwilleastwardbestfirePageknowaway.pngmovethanloadgiveselfnotemuchfeedmanyrockicononcelookhidediedHomerulehostajaxinfoclublawslesshalfsomesuchzone100%onescareTimeracebluefourweekfacehopegavehardlostwhenparkkeptpassshiproomHTMLplanTypedonesavekeepflaglinksoldfivetookratetownjumpthusdarkcardfilefearstaykillthatfallautoever.comtalkshopvotedeepmoderestturnbornbandfellroseurl(skinrolecomeactsagesmeetgold.jpgitemvaryfeltthensenddropViewcopy1.0\"stopelseliestourpack.gifpastcss?graymean>rideshotlatesaidroadvar feeljohnrickportfast'UA-deadpoorbilltypeU.S.woodmust2px;Inforankwidewantwalllead[0];paulwavesure$('#waitmassarmsgoesgainlangpaid!-- lockunitrootwalkfirmwifexml\"songtest20pxkindrowstoolfontmailsafestarmapscorerainflowbabyspansays4px;6px;artsfootrealwikiheatsteptriporg/lakeweaktoldFormcastfansbankveryrunsjulytask1px;goalgrewslowedgeid=\"sets5px;.js?40pxif (soonseatnonetubezerosentreedfactintogiftharm18pxcamehillboldzoomvoideasyringfillpeakinitcost3px;jacktagsbitsrolleditknewnearironfreddiskwentsoilputs/js/holyT22:ISBNT20:adamsees

        json', 'contT21: RSSloopasiamoon

        soulLINEfortcartT14:

        80px!--<9px;T04:mike:46ZniceinchYorkricezh:d'));puremageparatonebond:37Z_of_']);000,zh:gtankyardbowlbush:56ZJava30px\n|}\n%C3%:34ZjeffEXPIcashvisagolfsnowzh:iquer.csssickmeatmin.binddellhirepicsrent:36ZHTTP-201fotowolfEND xbox:54ZBODYdick;\n}\nexit:35Zvarsbeat'});diet999;anne}}sonyguysfuckpipe|-\n!002)ndow[1];[];\nLog salt\r\n\t\tbangtrimbath){\r\n00px\n});ko:lfeesad>\rs:// [];tollplug(){\n{\r\n .js'200pdualboat.JPG);\n}quot);\n\n');\n\r\n}\r201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037201320122011201020092008200720062005200420032002200120001999199819971996199519941993199219911990198919881987198619851984198319821981198019791978197719761975197419731972197119701969196819671966196519641963196219611960195919581957195619551954195319521951195010001024139400009999comomC!sesteestaperotodohacecadaaC1obiendC-aasC-vidacasootroforosolootracualdijosidograntipotemadebealgoquC)estonadatrespococasabajotodasinoaguapuesunosantediceluisellamayozonaamorpisoobraclicellodioshoracasiP7P0P=P0P>PP>Q\u0002P8P7P=P>P4P>Q\u0002P>P6P5P>P=P8Q\u0005P\u001DP0P5P5P1Q\u000BPP2Q\u000BP2P>P\u001DP>P>P1P\u001FP>P;P8P=P8P P$P\u001DP5P\u001CQ\u000BQ\u0002Q\u000BP\u001EP=P8Pthing.org/multiheardPowerstandtokensolid(thisbringshipsstafftriedcallsfullyfactsagentThis //-->adminegyptEvent15px;Emailtrue\"crossspentblogsbox\">notedleavechinasizesguest

        robotheavytrue,sevengrandcrimesignsawaredancephase>\n\n\r\nname=diegopage swiss-->\n\n#fff;\">Log.com\"treatsheet) && 14px;sleepntentfiledja:c\u0003id=\"cName\"worseshots-box-delta\n<bears:48Z spendbakershops= \"\";php\">ction13px;brianhellosize=o=%2F joinmaybe, fjsimg\" \")[0]MTopBType\"newlyDanskczechtrailknowsfaq\">zh-cn10);\n-1\");type=bluestrulydavis.js';>\r\n\r\nform jesus100% menu.\r\n\t\r\nwalesrisksumentddingb-likteachgif\" vegasdanskeestishqipsuomisobredesdeentretodospuedeaC1osestC!tienehastaotrospartedondenuevohacerformamismomejormundoaquC-dC-assC3loayudafechatodastantomenosdatosotrassitiomuchoahoralugarmayorestoshorastenerantesfotosestaspaC-snuevasaludforosmedioquienmesespoderchileserC!vecesdecirjosC)estarventagrupohechoellostengoamigocosasnivelgentemismaairesjuliotemashaciafavorjuniolibrepuntobuenoautorabrilbuenatextomarzosaberlistaluegocC3moenerojuegoperC:haberestoynuncamujervalorfueralibrogustaigualvotoscasosguC-apuedosomosavisousteddebennochebuscafaltaeurosseriedichocursoclavecasasleC3nplazolargoobrasvistaapoyojuntotratavistocrearcampohemoscincocargopisosordenhacenC!readiscopedrocercapuedapapelmenorC:tilclarojorgecalleponertardenadiemarcasigueellassiglocochemotosmadreclaserestoniC1oquedapasarbancohijosviajepabloC)stevienereinodejarfondocanalnorteletracausatomarmanoslunesautosvillavendopesartipostengamarcollevapadreunidovamoszonasambosbandamariaabusomuchasubirriojavivirgradochicaallC-jovendichaestantalessalirsuelopesosfinesllamabuscoC)stalleganegroplazahumorpagarjuntadobleislasbolsabaC1ohablaluchaC\u0001readicenjugarnotasvalleallC!cargadolorabajoestC)gustomentemariofirmacostofichaplatahogarartesleyesaquelmuseobasespocosmitadcielochicomiedoganarsantoetapadebesplayaredessietecortecoreadudasdeseoviejodeseaaguas"domaincommonstatuseventsmastersystemactionbannerremovescrollupdateglobalmediumfilternumberchangeresultpublicscreenchoosenormaltravelissuessourcetargetspringmodulemobileswitchphotosborderregionitselfsocialactivecolumnrecordfollowtitle>eitherlengthfamilyfriendlayoutauthorcreatereviewsummerserverplayedplayerexpandpolicyformatdoublepointsseriespersonlivingdesignmonthsforcesuniqueweightpeopleenergynaturesearchfigurehavingcustomoffsetletterwindowsubmitrendergroupsuploadhealthmethodvideosschoolfutureshadowdebatevaluesObjectothersrightsleaguechromesimplenoticesharedendingseasonreportonlinesquarebuttonimagesenablemovinglatestwinterFranceperiodstrongrepeatLondondetailformeddemandsecurepassedtoggleplacesdevicestaticcitiesstreamyellowattackstreetflighthiddeninfo\">openedusefulvalleycausesleadersecretseconddamagesportsexceptratingsignedthingseffectfieldsstatesofficevisualeditorvolumeReportmuseummoviesparentaccessmostlymother\" id=\"marketgroundchancesurveybeforesymbolmomentspeechmotioninsidematterCenterobjectexistsmiddleEuropegrowthlegacymannerenoughcareeransweroriginportalclientselectrandomclosedtopicscomingfatheroptionsimplyraisedescapechosenchurchdefinereasoncorneroutputmemoryiframepolicemodelsNumberduringoffersstyleskilledlistedcalledsilvermargindeletebetterbrowselimitsGlobalsinglewidgetcenterbudgetnowrapcreditclaimsenginesafetychoicespirit-stylespreadmakingneededrussiapleaseextentScriptbrokenallowschargedividefactormember-basedtheoryconfigaroundworkedhelpedChurchimpactshouldalwayslogo\" bottomlist\">){var prefixorangeHeader.push(couplegardenbridgelaunchReviewtakingvisionlittledatingButtonbeautythemesforgotSearchanchoralmostloadedChangereturnstringreloadMobileincomesupplySourceordersviewed courseAbout island: The dialoghousesBEGIN MexicostartscentreheightaddingIslandassetsEmpireSchooleffortdirectnearlymanualSelect.\n\nOnejoinedmenu\">PhilipawardshandleimportOfficeregardskillsnationSportsdegreeweekly (e.g.behinddoctorloggedunited
        beyond-scaleacceptservedmarineFootercamera\n_form\"leavesstress\" />\r\n.gif\" onloadloaderOxfordsistersurvivlistenfemaleDesignsize=\"appealtext\">levelsthankshigherforcedanimalanyoneAfricaagreedrecentPeople
        wonderpricesturned|| {};main\">inlinesundaywrap\">failedcensusminutebeaconquotes150px|estateremoteemail\"linkedright;signalformal1.htmlsignupprincefloat:.png\" forum.AccesspaperssoundsextendHeightsliderUTF-8\"& Before. WithstudioownersmanageprofitjQueryannualparamsboughtfamousgooglelongeri++) {israelsayingdecidehome\">headerensurebranchpiecesblock;statedtop\">boston.test(avatartested_countforumsschemaindex,filledsharesreaderalert(appearSubmitline\">body\">\n* TheThoughseeingjerseyNews\nSystem DavidcancertablesprovedApril reallydriveritem\">more\">boardscolorscampusfirst || [];media.guitarfinishwidth:showedOther .php\" assumelayerswilsonstoresreliefswedenCustomeasily your String\n\nWhiltaylorclear:resortfrenchthough\") + \"buyingbrandsMembername\">oppingsector5px;\">vspacepostermajor coffeemartinmaturehappenkansaslink\">Images=falsewhile hspace0& \n\nIn powerPolski-colorjordanBottomStart -count2.htmlnews\">01.jpgOnline-rightmillerseniorISBN 00,000 guidesvalue)ectionrepair.xml\" rights.html-blockregExp:hoverwithinvirginphones\rusing \n\tvar >');\n\t\n\nbahasabrasilgalegomagyarpolskisrpskiX1X/Y\u0008d8-f\u0016\u0007g.\u0000d=\u0013g9\u0001i+\u0014d?!f\u0001/d8-e\u001B=f\u0008\u0011d;,d8\u0000d8*e\u0005,e\u000F8g.!g\u0010\u0006h.:e\u001D\u001Be\u000F/d;%f\u001C\re\n!f\u00176i\u00174d8*d::d:'e\u0013\u0001h\u0007*e71d<\u0001d8\u001Af\u001F%g\u001C\u000Be7%d=\u001Ch\u0001\u0014g3;f2!f\u001C\tg=\u0011g+\u0019f\t\u0000f\u001C\th/\u0004h.:d8-e?\u0003f\u0016\u0007g+ g\u0014(f\u00087i&\u0016i!5d=\u001Ch\u0000\u0005f\n\u0000f\u001C/i\u0017.i\"\u0018g\u001B8e\u00053d8\u000Bh==f\u0010\u001Cg4\"d=?g\u0014(h=/d;6e\u001C(g:?d8;i\"\u0018h5\u0004f\u0016\u0019h'\u0006i\"\u0011e\u001B\u001Ee$\rf3(e\u0006\u000Cg=\u0011g;\u001Cf\u00146h\u0017\u000Fe\u0006\u0005e.9f\u000E(h\r\u0010e8\u0002e\u001C:f6\u0008f\u0001/g):i\u00174e\u000F\u0011e8\u0003d;\u0000d9\u0008e%=e\u000F\u000Bg\u0014\u001Ff4;e\u001B>g\t\u0007e\u000F\u0011e1\u0015e&\u0002f\u001E\u001Cf\t\u000Bf\u001C:f\u00160i\u0017;f\u001C\u0000f\u00160f\u00169e<\u000Fe\u000C\u0017d:,f\u000F\u0010d>\u001Be\u00053d:\u000Ef\u001B4e$\u001Ah?\u0019d8*g3;g;\u001Fg\u001F%i\u0001\u0013f88f\u0008\u000Fe9?e\u0011\ne\u00056d;\u0016e\u000F\u0011h!(e.\te\u0005(g,,d8\u0000d<\u001Ae\u0011\u0018h?\u001Bh!\u000Cg\u00029e\u0007;g\t\u0008f\u001D\u0003g\u00145e-\u0010d8\u0016g\u0015\u000Ch.>h.!e\u0005\rh49f\u0015\u0019h\u00022e\n e\u0005%f4;e\n(d;\u0016d;,e\u0015\u0006e\u0013\u0001e\r\u001Ae.\"g\u000E0e\u001C(d8\nf57e&\u0002d=\u0015e72g;\u000Fg\u0015\u0019h(\u0000h/&g;\u0006g$>e\u000C:g\u0019;e=\u0015f\u001C,g+\u0019i\u001C\u0000h&\u0001d;7f f\u000E%e\u001B=e.6e;:h.>f\u001C\u000Be\u000F\u000Bi\u0018\u0005h/;f3\u0015e>\u000Bd=\rg=.g;\u000Ff5\u000Ei\u0000\tf\u000B)h?\u0019f 7e=\u0013e\t\re\u0008\u0006g1;f\u000E\u0012h!\u000Ce\u001B d8:d:$f\u0018\u0013f\u001C\u0000e\u0010\u000Ei\u001F3d9\u0010d8\rh\u0003=i\u0000\u001Ah?\u0007h!\u000Cd8\u001Ag'\u0011f\n\u0000e\u000F/h\u0003=h.>e$\u0007e\u0010\u0008d=\u001Ce$'e.6g$>d<\u001Ag \u0014g)6d8\u0013d8\u001Ae\u0005(i\u0003(i!9g\u001B.h?\u0019i\u0007\u000Ch?\u0018f\u0018/e<\u0000e'\u000Bf\u0003\u0005e\u00065g\u00145h\u0004\u0011f\u0016\u0007d;6e\u0013\u0001g\t\u000Ce8.e\n)f\u0016\u0007e\u000C\u0016h5\u0004f:\u0010e$'e-&e-&d9 e\u001C0e\u001D\u0000f5\u000Fh'\u0008f\n\u0015h5\u0004e7%g(\u000Bh&\u0001f1\u0002f\u0000\u000Ed9\u0008f\u00176e\u0000\u0019e\n\u001Fh\u0003=d8;h&\u0001g\u001B.e\t\rh5\u0004h./e\u001F\u000Ee8\u0002f\u00169f3\u0015g\u00145e=1f\u000B\u001Bh\u0001\u0018e#0f\u0018\u000Ed;;d=\u0015e\u0001%e:7f\u00150f\r.g>\u000Ee\u001B=f1=h=&d;\u000Bg;\rd=\u0006f\u0018/d:$f5\u0001g\u0014\u001Fd:'f\t\u0000d;%g\u00145h/\u001Df\u0018>g$:d8\u0000d:\u001Be\r\u0015d=\rd::e\u0011\u0018e\u0008\u0006f\u001E\u0010e\u001C0e\u001B>f\u0017\u0005f88e7%e\u00057e-&g\u0014\u001Fg3;e\u0008\u0017g=\u0011e\u000F\u000Be8\u0016e-\u0010e/\u0006g \u0001i\"\u0011i\u0001\u0013f\u000E'e\u00086e\u001C0e\u000C:e\u001F:f\u001C,e\u0005(e\u001B=g=\u0011d8\ni\u0007\rh&\u0001g,,d:\u000Ce\u0016\u001Cf,\"h?\u001Be\u0005%e\u000F\u000Bf\u0003\u0005h?\u0019d:\u001Bh\u0000\u0003h/\u0015e\u000F\u0011g\u000E0e\u001F9h.-d;%d8\nf\u0014?e:\u001Cf\u0008\u0010d8:g\u000E/e\"\u0003i&\u0019f8/e\u0010\u000Cf\u00176e(1d9\u0010e\u000F\u0011i\u0000\u0001d8\u0000e.\u001Ae<\u0000e\u000F\u0011d=\u001Ce\u0013\u0001f \u0007e\u0007\u0006f,\"h?\u000Eh'#e\u00063e\u001C0f\u00169d8\u0000d8\u000Bd;%e\u000F\nh4#d;;f\u0008\u0016h\u0000\u0005e.\"f\u00087d;#h!(g'/e\u0008\u0006e%3d::f\u00150g \u0001i\u0014\u0000e\u0014.e\u0007:g\u000E0g&;g:?e:\u0014g\u0014(e\u0008\u0017h!(d8\re\u0010\u000Cg<\u0016h>\u0011g;\u001Fh.!f\u001F%h/\"d8\rh&\u0001f\u001C\te\u00053f\u001C:f\u001E\u0004e>\u0008e$\u001Af\u0012-f\u0014>g;\u0004g;\u0007f\u0014?g-\u0016g\u001B4f\u000E%h\u0003=e\n\u001Bf\u001D%f:\u0010f\u0019\u0002i\u0016\u0013g\u001C\u000Be\u00080g\u0003-i\u0017(e\u00053i\u0014.d8\u0013e\u000C:i\u001D\u001Ee88h\u000B1h/-g\u0019>e:&e8\u000Cf\u001C\u001Bg>\u000Ee%3f/\u0014h>\u0003g\u001F%h/\u0006h'\u0004e.\u001Ae;:h..i\u0003(i\u0017(f\u0004\u000Fh'\u0001g2>e=)f\u0017%f\u001C,f\u000F\u0010i+\u0018e\u000F\u0011h(\u0000f\u00169i\u001D\"e\u001F:i\u0007\u0011e$\u0004g\u0010\u0006f\u001D\u0003i\u0019\u0010e=1g\t\u0007i\u00136h!\u000Ch?\u0018f\u001C\te\u0008\u0006d:+g\t)e\u0013\u0001g;\u000Fh\u0010%f7;e\n d8\u0013e.6h?\u0019g'\rh/\u001Di\"\u0018h57f\u001D%d8\u001Ae\n!e\u0005,e\u0011\nh.0e=\u0015g.\u0000d;\u000Bh4(i\u0007\u000Fg\u00147d::e=1e\u0013\re<\u0015g\u0014(f\n%e\u0011\ni\u0003(e\u0008\u0006e?+i\u0000\u001Fe\u0012(h/\"f\u00176e0\u001Af3(f\u0004\u000Fg\u00143h/7e-&f !e:\u0014h/%e\u000E\u0006e\u000F2e\u000F*f\u0018/h?\u0014e\u001B\u001Eh4-d90e\u0010\rg'0d8:d:\u0006f\u0008\u0010e\n\u001Fh/4f\u0018\u000Ed>\u001Be:\u0014e-)e-\u0010d8\u0013i\"\u0018g(\u000Be:\u000Fd8\u0000h\u0008,f\u001C\u0003e\u0013!e\u000F*f\u001C\te\u00056e.\u0003d?\u001Df\n$h\u0000\u000Cd8\u0014d;\ne$)g*\u0017e\u000F#e\n(f\u0000\u0001g\n6f\u0000\u0001g\t9e\u0008+h.$d8:e?\u0005i!;f\u001B4f\u00160e0\u000Fh/4f\u0008\u0011e\u0000\u0011d=\u001Cd8:e*\u0012d=\u0013e\u000C\u0005f\u000B,i\u0002#d9\u0008d8\u0000f 7e\u001B=e\u0006\u0005f\u0018/e\u0010&f 9f\r.g\u00145h'\u0006e-&i\u0019\"e\u00057f\u001C\th?\u0007g(\u000Bg\u00141d:\u000Ed::f\t\re\u0007:f\u001D%d8\rh?\u0007f-#e\u001C(f\u0018\u000Ef\u0018\u001Ff\u0015\u0005d:\u000Be\u00053g3;f \u0007i\"\u0018e\u0015\u0006e\n!h>\u0013e\u0005%d8\u0000g\u001B4e\u001F:g!\u0000f\u0015\u0019e-&d:\u0006h'#e;:g-\u0011g;\u0013f\u001E\u001Ce\u0005(g\u0010\u0003i\u0000\u001Ag\u001F%h.!e\u0008\u0012e/9d:\u000Eh\t:f\u001C/g\u001B8e\u0006\u000Ce\u000F\u0011g\u0014\u001Fg\u001C\u001Fg\u001A\u0004e;:g+\u000Bg-\tg:'g1;e\u001E\u000Bg;\u000Fi*\u000Ce.\u001Eg\u000E0e\u00086d=\u001Cf\u001D%h\u0007*f \u0007g->d;%d8\u000Be\u000E\u001Fe\u0008\u001Bf\u0017 f3\u0015e\u00056d8-e\u0000\u000Bd::d8\u0000e\u0008\u0007f\u000C\u0007e\r\u0017e\u00053i\u0017-i\u001B\u0006e\u001B\"g,,d8\te\u00053f3(e\u001B f-$g\u0005'g\t\u0007f71e\u001C3e\u0015\u0006d8\u001Ae9?e7\u001Ef\u0017%f\u001C\u001Fi+\u0018g:'f\u001C\u0000h?\u0011g;\u0011h!\u000Cd8:d:$i\u0000\u001Ah/\u0004d;7h'\te>\u0017g2>e\r\u000Ee.6e:-e.\u000Cf\u0008\u0010f\u0004\u001Fh'\te.\th#\u0005e>\u0017e\u00080i\u0002.d;6e\u00086e:&i#\u001Fe\u0013\u0001h\u0019=g\u00046h=,h==f\n%d;7h.0h\u0000\u0005f\u00169f!\u0008h!\u000Cf\u0014?d::f0\u0011g\u0014(e\u0013\u0001d8\u001Ch%?f\u000F\u0010e\u0007:i\u0005\u0012e:\u0017g\u00046e\u0010\u000Ed;\u0018f,>g\u0003-g\u00029d;%e\t\re.\u000Ce\u0005(e\u000F\u0011e8\u0016h.>g=.i\"\u0006e/g%\u001Eh\u000E7e>\u0017e\u0008)g\u0014(g;'g;-d= d;,h?\u0019d9\u0008f(!e<\u000Fh/-h(\u0000h\u0003=e$\u001Fi\u001B\u0005h\u0019\u000Ef\u0013\rd=\u001Ci#\u000Ef d9&f\u001C\tf\u0015\u0008f5\u000Bh/\u0015g';e\n(f\t\rh\u0003=e\u00063e.\u001Ah\u0002!g%(d8\rf\u0016-i\u001C\u0000f1\u0002d8\re>\u0017e\n\u001Ef3\u0015d9\u000Bi\u00174i\u0007\u0007g\u0014(h\u0010%i\u0014\u0000f\n\u0015h/\tg\u001B.f \u0007g\u00081f\u0003\u0005f\u0011\u0004e=1f\u001C\td:\u001Bh$\u0007h#=f\u0016\u0007e-&f\u001C:d<\u001Af\u00150e-\u0017h#\u0005d?.h4-g\t)e\u0006\u001Cf\u001D\u0011e\u0005(i\u001D\"g2>e\u0013\u0001e\u00056e.\u001Ed:\u000Bf\u0003\u0005f04e93f\u000F\u0010g$:d8\ne8\u0002h0\"h0\"f\u0019.i\u0000\u001Af\u0015\u0019e8\u0008d8\nd< g1;e\u0008+f-\u000Cf\u001B2f\u000B%f\u001C\te\u0008\u001Bf\u00160i\u0005\rd;6e\u000F*h&\u0001f\u00176d;#h3\u0007h(\nh>>e\u00080d::g\u0014\u001Fh.\"i\u0018\u0005h\u0000\u0001e8\u0008e1\u0015g$:e?\u0003g\u0010\u0006h44e-\u0010g62g+\u0019d8;i!\u000Ch\u0007*g\u00046g:'e\u0008+g.\u0000e\r\u0015f\u00149i\u001D)i\u0002#d:\u001Bf\u001D%h/4f\t\u0013e<\u0000d;#g \u0001e\u0008 i\u0019$h/\u0001e\u00088h\n\u0002g\u001B.i\u0007\rg\u00029f,!f\u00158e$\u001Ae0\u0011h'\u0004e\u0008\u0012h5\u0004i\u0007\u0011f\t>e\u00080d;%e\u0010\u000Ee$'e\u0005(d8;i!5f\u001C\u0000d=3e\u001B\u001Eg-\u0014e$)d8\u000Bd?\u001Di\u001A\u001Cg\u000E0d;#f#\u0000f\u001F%f\n\u0015g%(e0\u000Ff\u00176f2\u0012f\u001C\tf-#e88g\u0014\u001Ah\u00073d;#g\u0010\u0006g\u001B.e=\u0015e\u0005,e<\u0000e$\re\u00086i\u0007\u0011h\u001E\re98g&\u000Fg\t\u0008f\u001C,e=\"f\u0008\u0010e\u0007\u0006e$\u0007h!\u000Cf\u0003\u0005e\u001B\u001Ee\u00080f\u0000\u001Df\u00033f\u0000\u000Ef 7e\r\u000Fh..h.$h/\u0001f\u001C\u0000e%=d:'g\u0014\u001Ff\u000C\tg\u0005'f\u001C\rh#\u0005e9?d8\u001Ce\n(f<+i\u0007\u0007h4-f\u00160f\t\u000Bg;\u0004e\u001B>i\u001D\"f\u001D?e\u000F\u0002h\u0000\u0003f\u0014?f2;e.9f\u0018\u0013e$)e\u001C0e\n*e\n\u001Bd::d;,e\r\u0007g:'i\u0000\u001Fe:&d::g\t)h0\u0003f\u00154f5\u0001h!\u000Ci\u0000 f\u0008\u0010f\u0016\u0007e-\u0017i\u001F)e\u001B=h48f\u0018\u0013e<\u0000e1\u0015g\u001B8i\u0017\u001Ch!(g\u000E0e=1h'\u0006e&\u0002f-$g>\u000Ee.9e$'e0\u000Ff\n%i\u0001\u0013f\u001D!f,>e?\u0003f\u0003\u0005h.8e$\u001Af3\u0015h'\u0004e.6e1\u0005d9&e:\u0017h?\u001Ef\u000E%g+\u000Be\r3d8>f\n%f\n\u0000e7'e%%h?\u0010g\u0019;e\u0005%d;%f\u001D%g\u0010\u0006h.:d:\u000Bd;6h\u0007*g\u00141d8-e\r\u000Ee\n\u001Ee\u0005,e&\u0008e&\u0008g\u001C\u001Ff-#d8\ri\u0014\u0019e\u0005(f\u0016\u0007e\u0010\u0008e\u0010\u000Cd;7e\u0000e7&e\u000F3h\u0002!d;=g-\u0014f!\u0008e.\u001Ei\u0019\u0005g\u00145d?!g;\u000Fg\u0010\u0006g\u0014\u001Fe\u0011=e.#d< d;;e\n!f-#e<\u000Fg\t9h\t2d8\u000Bf\u001D%e\r\u000Fd<\u001Ae\u000F*h\u0003=e=\u0013g\u00046i\u0007\rf\u00160e\u0005'e.9f\u000C\u0007e/g(\u000Be\u000C;g\u0016\u0017g;\u000Fh?\u0007h?\u0007e\u000E;d9\u000Be\t\rf\u00146e\u0005%e94e:&f\u001D\u0002e?\u0017g>\u000Ed8=f\u001C\u0000i+\u0018g\u0019;i\u0019\u0006f\u001C*f\u001D%e\n e7%e\u0005\rh4#f\u0015\u0019g(\u000Bg\t\u0008e\u001D\u0017h:+d=\u0013i\u0007\re:\u0006e\u0007:e\u0014.f\u0008\u0010f\u001C,e=\"e<\u000Fe\u001C\u001Fh1\u0006e\u0007:e\u00039d8\u001Cf\u00169i\u0002.g.1e\r\u0017d:,f1\u0002h\u0001\u000Ce\u000F\u0016e>\u0017h\u0001\u000Cd=\rg\u001B8d?!i!5i\u001D\"e\u0008\u0006i\u0012\u001Fg=\u0011i!5g!.e.\u001Ae\u001B>d>\u000Bg=\u0011e\u001D\u0000g'/f\u001E\u0001i\u0014\u0019h//g\u001B.g\u001A\u0004e.\u001Dh4\u001Df\u001C:e\u00053i#\u000Ei\u0019)f\u000E\u0008f\u001D\u0003g\u0017\u0005f/\u0012e. g\t)i\u0019$d:\u0006h)\u0015h+\u0016g\u0016>g\u0017\u0005e\u000F\nf\u00176f1\u0002h4-g+\u0019g\u00029e\u0004?g+%f/\u000Fe$)d8-e$.h.$h/\u0006f/\u000Fd8*e$)f4%e-\u0017d=\u0013e\u000F0g\u0001#g;4f\n$f\u001C,i!5d8*f\u0000'e.\u0018f\u00169e88h'\u0001g\u001B8f\u001C:f\u0008\u0018g\u0015%e:\u0014e=\u0013e>\u000Be8\u0008f\u00169d>?f !e\u001B-h\u0002!e8\u0002f\u0008?e1\u000Bf \u000Fg\u001B.e\u0011\u0018e7%e/\u000Ee\u0005\u0003e<\u0015h57f\u00149e\u000F\u0018g,,e\u001B\u001Bd<\u001Ah.!h**f\u0018\u000Ei\u001A\u0010g'\u0001e.\u001De.\u001Dh'\u0004h\u000C\u0003f6\u0008h49e\u00051e\u0010\u000Ce?\u0018h.0d=\u0013g3;e8&f\u001D%e\u0010\re-\u0017g\u0019e\n g\u001B\u001Fe\u000F\u0017e\u00080d:\u000Cf\t\u000Be$'i\u0007\u000Ff\u0008\u0010d::f\u00150i\u0007\u000Fe\u00051d:+e\u000C:e\u001F\u001Fe%3e-)e\u000E\u001Fe\u0008\u0019f\t\u0000e\u001C(g;\u0013f\u001D\u001Fi\u0000\u001Ad?!h6\u0005g:'i\u0005\rg=.e=\u0013f\u00176d<\u0018g'\u0000f\u0000'f\u0004\u001Ff\u0008?d:'i\u0001\nf\u00082e\u0007:e\u000F#f\u000F\u0010d:$e01d8\u001Ad?\u001De\u0001%g(\u000Be:&e\u000F\u0002f\u00150d:\u000Bd8\u001Af\u00154d8*e11d8\u001Cf\u0003\u0005f\u0004\u001Fg\t9f.\ne\u0008\u0006i!\u001Ef\u0010\u001Ce0\u000Be1\u001Ed:\u000Ei\u0017(f\u00087h4\"e\n!e#0i\u001F3e\u000F\ne\u00056h4\"g;\u000Fe\u001D\u001Af\u000C\u0001e92i\u0003(f\u0008\u0010g+\u000Be\u0008)g\u001B\nh\u0000\u0003h\u0019\u0011f\u0008\u0010i\u0003=e\u000C\u0005h#\u0005g\u0014(f\u00086f/\u0014h5\u001Bf\u0016\u0007f\u0018\u000Ef\u000B\u001Be\u0015\u0006e.\u000Cf\u00154g\u001C\u001Ff\u0018/g\u001Ce/\u0006g\"\u000Ei#\u001Fg;?h\t2g(3e.\u001Ag;\u0008d:\u000Eg\u0014\u001Fg\t)d>\u001Bf1\u0002f\u0010\u001Cg\u000B\u0010e\n\u001Bi\u0007\u000Fd8%i\u0007\rf08h?\u001Ce\u0006\u0019g\u001C\u001Ff\u001C\ti\u0019\u0010g+\u001Ed:\te/9h1!h49g\u0014(d8\re%=g;\u001De/9e\r\u0001e\u0008\u0006d?\u0003h?\u001Bg\u00029h/\u0004e=1i\u001F3d<\u0018e\n?d8\re0\u0011f,#h5\u000Fe96d8\u0014f\u001C\tg\u00029f\u00169e\u0010\u0011e\u0005(f\u00160d?!g\u0014(h.>f\u0016=e=\"h1!h5\u0004f \u000Ee\u0015\u0006e\u001F\u000Eg;\u001Fd8\u0000e\u0007:g\t\u0008f\t\u0013i\u0000 g\u0014\"e\u0013\u0001f&\u0002e\u00065g\u0014(d:\u000Ed?\u001Dg\u0015\u0019e\u001B g4 d8-e\u001C\u000Be-\u0018e\u0002(h44e\u001B>f\u001C\u0000f\u0004\u001Bi\u0015?f\u001C\u001Fe\u000F#d;7g\u0010\u0006h4\"e\u001F:e\u001C0e.\tf\u000E\u0012f-&f1\ti\u0007\u000Ci\u001D\"e\u0008\u001Be;:e$)g):i&\u0016e\u0005\u0008e.\u000Ce\u0016\u0004i)1e\n(d8\u000Bi\u001D\"d8\re\u0006\rh/\u001Ad?!f\u0004\u000Fd9\ti\u00183e\u0005\th\u000B1e\u001B=f<\u0002d:.e\u0006\u001Bd:\u000Bg\u000E)e.6g>$d<\u0017e\u0006\u001Cf0\u0011e\r3e\u000F/e\u0010\rg(1e.6e\u00057e\n(g\u0014;f\u00033e\u00080f3(f\u0018\u000Ee0\u000Fe-&f\u0000'h\u0003=h\u0000\u0003g \u0014g!,d;6h'\u0002g\u001C\u000Bf8\u0005f%\u001Af\u0010\u001Eg,\u0011i&\u0016i \u0001i;\u0004i\u0007\u0011i\u0000\u0002g\u0014(f1\u001Fh\u000B\u000Fg\u001C\u001Fe.\u001Ed8;g.!i\u00186f.5h(;e\u0006\ng?;h/\u0011f\u001D\u0003e\u0008)e\u0001\u001Ae%=d<P:P0P:P8P;P8Q\rQ\u0002P>P2Q\u0001P5P5P3P>P?Q\u0000P8Q\u0002P0P:P5Q\tP5Q\u0003P6P5P\u001AP0P:P1P5P7P1Q\u000BP;P>P=P8P\u0012Q\u0001P5P?P>P4P-Q\u0002P>Q\u0002P>PP=P0P3P4P5PP3P>P4P2P>Q\u0002Q\u0002P0PP2P0Q\u0001P2P0PQ\u0002Q\u0003Q\u0002P=P0P4P4P=Q\u000FP\u0012P>Q\u0002Q\u0002Q\u0000P8P=P5P9P\u0012P0Q\u0001P=P8PQ\u0002Q\u0000Q\u0003P1P\u001EP=P8PPP9P4P2P5P>P=P>Q\u0001Q\u0003P4`$\u0015`%\u0007`$9`%\u0008`$\u0015`%\u0000`$8`%\u0007`$\u0015`$>`$\u0015`%\u000B`$\u0014`$0`$*`$0`$(`%\u0007`$\u000F`$\u0015`$\u0015`$?`$-`%\u0000`$\u0007`$8`$\u0015`$0`$$`%\u000B`$9`%\u000B`$\u0006`$*`$9`%\u0000`$/`$9`$/`$>`$$`$\u0015`$%`$>jagran`$\u0006`$\u001C`$\u001C`%\u000B`$\u0005`$,`$&`%\u000B`$\u0017`$\u0008`$\u001C`$>`$\u0017`$\u000F`$9`$.`$\u0007`$(`$5`$9`$/`%\u0007`$%`%\u0007`$%`%\u0000`$\u0018`$0`$\u001C`$,`$&`%\u0000`$\u0015`$\u0008`$\u001C`%\u0000`$5`%\u0007`$(`$\u0008`$(`$\u000F`$9`$0`$\t`$8`$.`%\u0007`$\u0015`$.`$5`%\u000B`$2`%\u0007`$8`$,`$.`$\u0008`$&`%\u0007`$\u0013`$0`$\u0006`$.`$,`$8`$-`$0`$,`$(`$\u001A`$2`$.`$(`$\u0006`$\u0017`$8`%\u0000`$2`%\u0000X9Y\u0004Y\tX%Y\u0004Y\tY\u0007X0X'X\"X.X1X9X/X/X'Y\u0004Y\tY\u0007X0Y\u0007X5Y\u0008X1X:Y\nX1Y\u0003X'Y\u0006Y\u0008Y\u0004X'X(Y\nY\u0006X9X1X6X0Y\u0004Y\u0003Y\u0007Y\u0006X'Y\nY\u0008Y\u0005Y\u0002X'Y\u0004X9Y\u0004Y\nX'Y\u0006X'Y\u0004Y\u0003Y\u0006X-X*Y\tY\u0002X(Y\u0004Y\u0008X-X)X'X.X1Y\u0001Y\u0002X7X9X(X/X1Y\u0003Y\u0006X%X0X'Y\u0003Y\u0005X'X'X-X/X%Y\u0004X'Y\u0001Y\nY\u0007X(X9X6Y\u0003Y\nY\u0001X(X-X+Y\u0008Y\u0005Y\u0006Y\u0008Y\u0007Y\u0008X#Y\u0006X'X,X/X'Y\u0004Y\u0007X'X3Y\u0004Y\u0005X9Y\u0006X/Y\u0004Y\nX3X9X(X1X5Y\u0004Y\tY\u0005Y\u0006X0X(Y\u0007X'X#Y\u0006Y\u0007Y\u0005X+Y\u0004Y\u0003Y\u0006X*X'Y\u0004X'X-Y\nX+Y\u0005X5X1X4X1X-X-Y\u0008Y\u0004Y\u0008Y\u0001Y\nX'X0X'Y\u0004Y\u0003Y\u0004Y\u0005X1X)X'Y\u0006X*X'Y\u0004Y\u0001X#X(Y\u0008X.X'X5X#Y\u0006X*X'Y\u0006Y\u0007X'Y\u0004Y\nX9X6Y\u0008Y\u0008Y\u0002X/X'X(Y\u0006X.Y\nX1X(Y\u0006X*Y\u0004Y\u0003Y\u0005X4X'X!Y\u0008Y\u0007Y\nX'X(Y\u0008Y\u0002X5X5Y\u0008Y\u0005X'X1Y\u0002Y\u0005X#X-X/Y\u0006X-Y\u0006X9X/Y\u0005X1X#Y\nX'X-X)Y\u0003X*X(X/Y\u0008Y\u0006Y\nX,X(Y\u0005Y\u0006Y\u0007X*X-X*X,Y\u0007X)X3Y\u0006X)Y\nX*Y\u0005Y\u0003X1X)X:X2X)Y\u0006Y\u0001X3X(Y\nX*Y\u0004Y\u0004Y\u0007Y\u0004Y\u0006X'X*Y\u0004Y\u0003Y\u0002Y\u0004X(Y\u0004Y\u0005X'X9Y\u0006Y\u0007X#Y\u0008Y\u0004X4Y\nX!Y\u0006Y\u0008X1X#Y\u0005X'Y\u0001Y\nY\u0003X(Y\u0003Y\u0004X0X'X*X1X*X(X(X#Y\u0006Y\u0007Y\u0005X3X'Y\u0006Y\u0003X(Y\nX9Y\u0001Y\u0002X/X-X3Y\u0006Y\u0004Y\u0007Y\u0005X4X9X1X#Y\u0007Y\u0004X4Y\u0007X1Y\u0002X7X1X7Y\u0004X(profileservicedefaulthimselfdetailscontentsupportstartedmessagesuccessfashioncountryaccountcreatedstoriesresultsrunningprocesswritingobjectsvisiblewelcomearticleunknownnetworkcompanydynamicbrowserprivacyproblemServicerespectdisplayrequestreservewebsitehistoryfriendsoptionsworkingversionmillionchannelwindow.addressvisitedweathercorrectproductedirectforwardyou canremovedsubjectcontrolarchivecurrentreadinglibrarylimitedmanagerfurthersummarymachineminutesprivatecontextprogramsocietynumberswrittenenabledtriggersourcesloadingelementpartnerfinallyperfectmeaningsystemskeepingculture",journalprojectsurfaces"expiresreviewsbalanceEnglishContentthroughPlease opinioncontactaverageprimaryvillageSpanishgallerydeclinemeetingmissionpopularqualitymeasuregeneralspeciessessionsectionwriterscounterinitialreportsfiguresmembersholdingdisputeearlierexpressdigitalpictureAnothermarriedtrafficleadingchangedcentralvictoryimages/reasonsstudiesfeaturelistingmust beschoolsVersionusuallyepisodeplayinggrowingobviousoverlaypresentactions</ul>\r\nwrapperalreadycertainrealitystorageanotherdesktopofferedpatternunusualDigitalcapitalWebsitefailureconnectreducedAndroiddecadesregular & animalsreleaseAutomatgettingmethodsnothingPopularcaptionletterscapturesciencelicensechangesEngland=1&History = new CentralupdatedSpecialNetworkrequirecommentwarningCollegetoolbarremainsbecauseelectedDeutschfinanceworkersquicklybetweenexactlysettingdiseaseSocietyweaponsexhibit<!--Controlclassescoveredoutlineattacksdevices(windowpurposetitle=\"Mobile killingshowingItaliandroppedheavilyeffects-1']);\nconfirmCurrentadvancesharingopeningdrawingbillionorderedGermanyrelated</form>includewhetherdefinedSciencecatalogArticlebuttonslargestuniformjourneysidebarChicagoholidayGeneralpassage,"animatefeelingarrivedpassingnaturalroughly.\n\nThe but notdensityBritainChineselack oftributeIreland\" data-factorsreceivethat isLibraryhusbandin factaffairsCharlesradicalbroughtfindinglanding:lang=\"return leadersplannedpremiumpackageAmericaEdition]"Messageneed tovalue=\"complexlookingstationbelievesmaller-mobilerecordswant tokind ofFirefoxyou aresimilarstudiedmaximumheadingrapidlyclimatekingdomemergedamountsfoundedpioneerformuladynastyhow to SupportrevenueeconomyResultsbrothersoldierlargelycalling."AccountEdward segmentRobert effortsPacificlearnedup withheight:we haveAngelesnations_searchappliedacquiremassivegranted: falsetreatedbiggestbenefitdrivingStudiesminimumperhapsmorningsellingis usedreversevariant role=\"missingachievepromotestudentsomeoneextremerestorebottom:evolvedall thesitemapenglishway to AugustsymbolsCompanymattersmusicalagainstserving})();\r\npaymenttroubleconceptcompareparentsplayersregionsmonitor ''The winningexploreadaptedGalleryproduceabilityenhancecareers). The collectSearch ancientexistedfooter handlerprintedconsoleEasternexportswindowsChannelillegalneutralsuggest_headersigning.html\">settledwesterncausing-webkitclaimedJusticechaptervictimsThomas mozillapromisepartieseditionoutside:false,hundredOlympic_buttonauthorsreachedchronicdemandssecondsprotectadoptedprepareneithergreatlygreateroverallimprovecommandspecialsearch.worshipfundingthoughthighestinsteadutilityquarterCulturetestingclearlyexposedBrowserliberal} catchProjectexamplehide();FloridaanswersallowedEmperordefenseseriousfreedomSeveral-buttonFurtherout of != nulltrainedDenmarkvoid(0)/all.jspreventRequestStephen\n\nWhen observe</h2>\r\nModern provide\" alt=\"borders.\n\nFor \n\nMany artistspoweredperformfictiontype ofmedicalticketsopposedCouncilwitnessjusticeGeorge Belgium...</a>twitternotablywaitingwarfare Other rankingphrasesmentionsurvivescholar</p>\r\n Countryignoredloss ofjust asGeorgiastrange<head><stopped1']);\r\nislandsnotableborder:list ofcarried100,000</h3>\n severalbecomesselect wedding00.htmlmonarchoff theteacherhighly biologylife ofor evenrise of»plusonehunting(thoughDouglasjoiningcirclesFor theAncientVietnamvehiclesuch ascrystalvalue =Windowsenjoyeda smallassumed<a id=\"foreign All rihow theDisplayretiredhoweverhidden;battlesseekingcabinetwas notlook atconductget theJanuaryhappensturninga:hoverOnline French lackingtypicalextractenemieseven ifgeneratdecidedare not/searchbeliefs-image:locatedstatic.login\">convertviolententeredfirst\">circuitFinlandchemistshe was10px;\">as suchdivided</span>will beline ofa greatmystery/index.fallingdue to railwaycollegemonsterdescentit withnuclearJewish protestBritishflowerspredictreformsbutton who waslectureinstantsuicidegenericperiodsmarketsSocial fishingcombinegraphicwinners<br /><by the NaturalPrivacycookiesoutcomeresolveSwedishbrieflyPersianso muchCenturydepictscolumnshousingscriptsnext tobearingmappingrevisedjQuery(-width:title\">tooltipSectiondesignsTurkishyounger.match(})();\n\nburningoperatedegreessource=Richardcloselyplasticentries</tr>\r\ncolor:#ul id=\"possessrollingphysicsfailingexecutecontestlink toDefault<br />\n: true,chartertourismclassicproceedexplain</h1>\r\nonline.?xml vehelpingdiamonduse theairlineend -->).attr(readershosting#ffffffrealizeVincentsignals src=\"/ProductdespitediversetellingPublic held inJoseph theatreaffects<style>a largedoesn'tlater, ElementfaviconcreatorHungaryAirportsee theso thatMichaelSystemsPrograms, and width=e"tradingleft\">\npersonsGolden Affairsgrammarformingdestroyidea ofcase ofoldest this is.src = cartoonregistrCommonsMuslimsWhat isin manymarkingrevealsIndeed,equally/show_aoutdoorescape(Austriageneticsystem,In the sittingHe alsoIslandsAcademy\n\t\t<!--Daniel bindingblock\">imposedutilizeAbraham(except{width:putting).html(|| [];\nDATA[ *kitchenmountedactual dialectmainly _blank'installexpertsif(typeIt also© \">Termsborn inOptionseasterntalkingconcerngained ongoingjustifycriticsfactoryits ownassaultinvitedlastinghis ownhref=\"/\" rel=\"developconcertdiagramdollarsclusterphp?id=alcohol);})();using a><span>vesselsrevivalAddressamateurandroidallegedillnesswalkingcentersqualifymatchesunifiedextinctDefensedied in\n\t<!-- customslinkingLittle Book ofeveningmin.js?are thekontakttoday's.html\" target=wearingAll Rig;\n})();raising Also, crucialabout\">declare-->\n<scfirefoxas muchappliesindex, s, but type = \n\r\n<!--towardsRecordsPrivateForeignPremierchoicesVirtualreturnsCommentPoweredinline;povertychamberLiving volumesAnthonylogin\" RelatedEconomyreachescuttinggravitylife inChapter-shadowNotable</td>\r\n returnstadiumwidgetsvaryingtravelsheld bywho arework infacultyangularwho hadairporttown of\n\nSome 'click'chargeskeywordit willcity of(this);Andrew unique checkedor more300px; return;rsion=\"pluginswithin herselfStationFederalventurepublishsent totensionactresscome tofingersDuke ofpeople,exploitwhat isharmonya major\":\"httpin his menu\">\nmonthlyofficercouncilgainingeven inSummarydate ofloyaltyfitnessand wasemperorsupremeSecond hearingRussianlongestAlbertalateralset of small\">.appenddo withfederalbank ofbeneathDespiteCapitalgrounds), and percentit fromclosingcontainInsteadfifteenas well.yahoo.respondfighterobscurereflectorganic= Math.editingonline paddinga wholeonerroryear ofend of barrierwhen itheader home ofresumedrenamedstrong>heatingretainscloudfrway of March 1knowingin partBetweenlessonsclosestvirtuallinks\">crossedEND -->famous awardedLicenseHealth fairly wealthyminimalAfricancompetelabel\">singingfarmersBrasil)discussreplaceGregoryfont copursuedappearsmake uproundedboth ofblockedsaw theofficescoloursif(docuwhen heenforcepush(fuAugust UTF-8\">Fantasyin mostinjuredUsuallyfarmingclosureobject defenceuse of Medical<body>\nevidentbe usedkeyCodesixteenIslamic#000000entire widely active (typeofone cancolor =speakerextendsPhysicsterrain<tbody>funeralviewingmiddle cricketprophetshifteddoctorsRussell targetcompactalgebrasocial-bulk ofman and</td>\n he left).val()false);logicalbankinghome tonaming Arizonacredits);\n});\nfounderin turnCollinsbefore But thechargedTitle\">CaptainspelledgoddessTag -->Adding:but wasRecent patientback in=false&Lincolnwe knowCounterJudaismscript altered']);\n has theunclearEvent',both innot all\n\n<!-- placinghard to centersort ofclientsstreetsBernardassertstend tofantasydown inharbourFreedomjewelry/about..searchlegendsis mademodern only ononly toimage\" linear painterand notrarely acronymdelivershorter00&as manywidth=\"/* <![Ctitle =of the lowest picked escapeduses ofpeoples PublicMatthewtacticsdamagedway forlaws ofeasy to windowstrong simple}catch(seventhinfoboxwent topaintedcitizenI don'tretreat. Some ww.\");\nbombingmailto:made in. Many carries||{};wiwork ofsynonymdefeatsfavoredopticalpageTraunless sendingleft\"><comScorAll thejQuery.touristClassicfalse\" Wilhelmsuburbsgenuinebishops.split(global followsbody ofnominalContactsecularleft tochiefly-hidden-banner</li>\n\n. When in bothdismissExplorealways via thespaC1olwelfareruling arrangecaptainhis sonrule ofhe tookitself,=0&(calledsamplesto makecom/pagMartin Kennedyacceptsfull ofhandledBesides//--></able totargetsessencehim to its by common.mineralto takeways tos.org/ladvisedpenaltysimple:if theyLettersa shortHerbertstrikes groups.lengthflightsoverlapslowly lesser social </p>\n\t\tit intoranked rate oful>\r\n attemptpair ofmake itKontaktAntoniohaving ratings activestreamstrapped\").css(hostilelead tolittle groups,Picture-->\r\n\r\n rows=\" objectinverse<footerCustomV><\\/scrsolvingChamberslaverywoundedwhereas!= 'undfor allpartly -right:Arabianbacked centuryunit ofmobile-Europe,is homerisk ofdesiredClintoncost ofage of become none ofp"Middle ead')[0Criticsstudios>©group\">assemblmaking pressedwidget.ps:\" ? rebuiltby someFormer editorsdelayedCanonichad thepushingclass=\"but arepartialBabylonbottom carrierCommandits useAs withcoursesa thirddenotesalso inHouston20px;\">accuseddouble goal ofFamous ).bind(priests Onlinein Julyst + \"gconsultdecimalhelpfulrevivedis veryr'+'iptlosing femalesis alsostringsdays ofarrivalfuture <objectforcingString(\" />\n\t\there isencoded. The balloondone by/commonbgcolorlaw of Indianaavoidedbut the2px 3pxjquery.after apolicy.men andfooter-= true;for usescreen.Indian image =family,http://  driverseternalsame asnoticedviewers})();\n is moreseasonsformer the newis justconsent Searchwas thewhy theshippedbr><br>width: height=made ofcuisineis thata very Admiral fixed;normal MissionPress, ontariocharsettry to invaded=\"true\"spacingis mosta more totallyfall of});\r\n immensetime inset outsatisfyto finddown tolot of Playersin Junequantumnot thetime todistantFinnishsrc = (single help ofGerman law andlabeledforestscookingspace\">header-well asStanleybridges/globalCroatia About [0];\n it, andgroupedbeing a){throwhe madelighterethicalFFFFFF\"bottom\"like a employslive inas seenprintermost ofub-linkrejectsand useimage\">succeedfeedingNuclearinformato helpWomen'sNeitherMexicanprotein<table by manyhealthylawsuitdevised.push({sellerssimply Through.cookie Image(older\">us.js\"> Since universlarger open to!-- endlies in']);\r\n marketwho is (\"DOMComanagedone fortypeof Kingdomprofitsproposeto showcenter;made itdressedwere inmixtureprecisearisingsrc = 'make a securedBaptistvoting \n\t\tvar March 2grew upClimate.removeskilledway the</head>face ofacting right\">to workreduceshas haderectedshow();action=book ofan area== \"htt<header\n<html>conformfacing cookie.rely onhosted .customhe wentbut forspread Family a meansout theforums.footage\">MobilClements\" id=\"as highintense--><!--female is seenimpliedset thea stateand hisfastestbesidesbutton_bounded\"><img Infoboxevents,a youngand areNative cheaperTimeoutand hasengineswon the(mostlyright: find a -bottomPrince area ofmore ofsearch_nature,legallyperiod,land ofor withinducedprovingmissilelocallyAgainstthe wayk"px;\">\r\npushed abandonnumeralCertainIn thismore inor somename isand, incrownedISBN 0-createsOctobermay notcenter late inDefenceenactedwish tobroadlycoolingonload=it. TherecoverMembersheight assumes<html>\npeople.in one =windowfooter_a good reklamaothers,to this_cookiepanel\">London,definescrushedbaptismcoastalstatus title\" move tolost inbetter impliesrivalryservers SystemPerhapses and contendflowinglasted rise inGenesisview ofrising seem tobut in backinghe willgiven agiving cities.flow of Later all butHighwayonly bysign ofhe doesdiffersbattery&lasinglesthreatsintegertake onrefusedcalled =US&See thenativesby thissystem.head of:hover,lesbiansurnameand allcommon/header__paramsHarvard/pixel.removalso longrole ofjointlyskyscraUnicodebr />\r\nAtlantanucleusCounty,purely count\">easily build aonclicka givenpointerh"events else {\nditionsnow the, with man whoorg/Webone andcavalryHe diedseattle00,000 {windowhave toif(windand itssolely m"renewedDetroitamongsteither them inSenatorUs</a><King ofFrancis-produche usedart andhim andused byscoringat hometo haverelatesibilityfactionBuffalolink\"><what hefree toCity ofcome insectorscountedone daynervoussquare };if(goin whatimg\" alis onlysearch/tuesdaylooselySolomonsexual - <a hrmedium\"DO NOT France,with a war andsecond take a >\r\n\r\n\r\nmarket.highwaydone inctivity\"last\">obligedrise to\"undefimade to Early praisedin its for hisathleteJupiterYahoo! termed so manyreally s. The a woman?value=direct right\" bicycleacing=\"day andstatingRather,higher Office are nowtimes, when a pay foron this-link\">;borderaround annual the Newput the.com\" takin toa brief(in thegroups.; widthenzymessimple in late{returntherapya pointbanninginks\">\n();\" rea place\\u003Caabout atr>\r\n\t\tccount gives a<SCRIPTRailwaythemes/toolboxById(\"xhumans,watchesin some if (wicoming formats Under but hashanded made bythan infear ofdenoted/iframeleft involtagein eacha"base ofIn manyundergoregimesaction </p>\r\n<ustomVa;></importsor thatmostly &re size=\"</a></ha classpassiveHost = WhetherfertileVarious=[];(fucameras/></td>acts asIn some>\r\n\r\n<!organis <br />BeijingcatalC deutscheuropeueuskaragaeilgesvenskaespaC1amensajeusuariotrabajomC)xicopC!ginasiempresistemaoctubreduranteaC1adirempresamomentonuestroprimeratravC)sgraciasnuestraprocesoestadoscalidadpersonanC:meroacuerdomC:sicamiembroofertasalgunospaC-sesejemploderechoademC!sprivadoagregarenlacesposiblehotelessevillaprimeroC:ltimoeventosarchivoculturamujeresentradaanuncioembargomercadograndesestudiomejoresfebrerodiseC1oturismocC3digoportadaespaciofamiliaantoniopermiteguardaralgunaspreciosalguiensentidovisitastC-tuloconocersegundoconsejofranciaminutossegundatenemosefectosmC!lagasesiC3nrevistagranadacompraringresogarcC-aacciC3necuadorquienesinclusodeberC!materiahombresmuestrapodrC-amaC1anaC:ltimaestamosoficialtambienningC:nsaludospodemosmejorarpositionbusinesshomepagesecuritylanguagestandardcampaignfeaturescategoryexternalchildrenreservedresearchexchangefavoritetemplatemilitaryindustryservicesmaterialproductsz-index:commentssoftwarecompletecalendarplatformarticlesrequiredmovementquestionbuildingpoliticspossiblereligionphysicalfeedbackregisterpicturesdisabledprotocolaudiencesettingsactivityelementslearninganythingabstractprogressoverviewmagazineeconomictrainingpressurevarious <strong>propertyshoppingtogetheradvancedbehaviordownloadfeaturedfootballselectedLanguagedistanceremembertrackingpasswordmodifiedstudentsdirectlyfightingnortherndatabasefestivalbreakinglocationinternetdropdownpracticeevidencefunctionmarriageresponseproblemsnegativeprogramsanalysisreleasedbanner\">purchasepoliciesregionalcreativeargumentbookmarkreferrerchemicaldivisioncallbackseparateprojectsconflicthardwareinterestdeliverymountainobtained= false;for(var acceptedcapacitycomputeridentityaircraftemployedproposeddomesticincludesprovidedhospitalverticalcollapseapproachpartnerslogo\"><adaughterauthor\" culturalfamilies/images/assemblypowerfulteachingfinisheddistrictcriticalcgi-bin/purposesrequireselectionbecomingprovidesacademicexerciseactuallymedicineconstantaccidentMagazinedocumentstartingbottom\">observed: "extendedpreviousSoftwarecustomerdecisionstrengthdetailedslightlyplanningtextareacurrencyeveryonestraighttransferpositiveproducedheritageshippingabsolutereceivedrelevantbutton\" violenceanywherebenefitslaunchedrecentlyalliancefollowedmultiplebulletinincludedoccurredinternal$(this).republic><tr><tdcongressrecordedultimatesolution<ul id=\"discoverHome</a>websitesnetworksalthoughentirelymemorialmessagescontinueactive\">somewhatvictoriaWestern title=\"LocationcontractvisitorsDownloadwithout right\">\nmeasureswidth = variableinvolvedvirginianormallyhappenedaccountsstandingnationalRegisterpreparedcontrolsaccuratebirthdaystrategyofficialgraphicscriminalpossiblyconsumerPersonalspeakingvalidateachieved.jpg\" />machines</h2>\n keywordsfriendlybrotherscombinedoriginalcomposedexpectedadequatepakistanfollow\" valuable</label>relativebringingincreasegovernorplugins/List of Header\">\" name=\" ("graduate</head>\ncommercemalaysiadirectormaintain;height:schedulechangingback to catholicpatternscolor: #greatestsuppliesreliable</ul>\n\t\t<select citizensclothingwatching<li id=\"specificcarryingsentence<center>contrastthinkingcatch(e)southernMichael merchantcarouselpadding:interior.split(\"lizationOctober ){returnimproved-->\n\ncoveragechairman.png\" />subjectsRichard whateverprobablyrecoverybaseballjudgmentconnect..css\" /> websitereporteddefault\"/></a>\r\nelectricscotlandcreationquantity. ISBN 0did not instance-search-\" lang=\"speakersComputercontainsarchivesministerreactiondiscountItalianocriteriastrongly: 'http:'script'coveringofferingappearedBritish identifyFacebooknumerousvehiclesconcernsAmericanhandlingdiv id=\"William provider_contentaccuracysection andersonflexibleCategorylawrence<script>layout=\"approved maximumheader\"></table>Serviceshamiltoncurrent canadianchannels/themes//articleoptionalportugalvalue=\"\"intervalwirelessentitledagenciesSearch\" measuredthousandspending…new Date\" size=\"pageNamemiddle\" \" /></a>hidden\">sequencepersonaloverflowopinionsillinoislinks\">\n\t<title>versionssaturdayterminalitempropengineersectionsdesignerproposal=\"false\"EspaC1olreleasessubmit\" er"additionsymptomsorientedresourceright\"><pleasurestationshistory.leaving border=contentscenter\">.\n\nSome directedsuitablebulgaria.show();designedGeneral conceptsExampleswilliamsOriginal\"><span>search\">operatorrequestsa "allowingDocumentrevision. \n\nThe yourselfContact michiganEnglish columbiapriorityprintingdrinkingfacilityreturnedContent officersRussian generate-8859-1\"indicatefamiliar qualitymargin:0 contentviewportcontacts-title\">portable.length eligibleinvolvesatlanticonload=\"default.suppliedpaymentsglossary\n\nAfter guidance</td><tdencodingmiddle\">came to displaysscottishjonathanmajoritywidgets.clinicalthailandteachers<head>\n\taffectedsupportspointer;toString</small>oklahomawill be investor0\" alt=\"holidaysResourcelicensed (which . After considervisitingexplorerprimary search\" android\"quickly meetingsestimate;return ;color:# height=approval, " checked.min.js\"magnetic></a></hforecast. While thursdaydvertiseéhasClassevaluateorderingexistingpatients Online coloradoOptions\"campbell<!-- end</span><<br />\r\n_popups|sciences," quality Windows assignedheight: <b classle" value=\" Companyexamples<iframe believespresentsmarshallpart of properly).\n\nThe taxonomymuch of </span>\n\" data-srtuguC*sscrollTo project<head>\r\nattorneyemphasissponsorsfancyboxworld's wildlifechecked=sessionsprogrammpx;font- Projectjournalsbelievedvacationthompsonlightingand the special border=0checking</tbody><button Completeclearfix\n<head>\narticle <sectionfindingsrole in popular Octoberwebsite exposureused to changesoperatedclickingenteringcommandsinformed numbers </div>creatingonSubmitmarylandcollegesanalyticlistingscontact.loggedInadvisorysiblingscontent\"s")s. This packagescheckboxsuggestspregnanttomorrowspacing=icon.pngjapanesecodebasebutton\">gamblingsuch as , while </span> missourisportingtop:1px .</span>tensionswidth=\"2lazyloadnovemberused in height=\"cript\">\n </<tr><td height:2/productcountry include footer\" <!-- title\"></jquery.</form>\n(g.\u0000d=\u0013)(g9\u0001i+\u0014)hrvatskiitalianoromC\"nD\u0003tC<rkC'eX'X1X/Y\u0008tambiC)nnoticiasmensajespersonasderechosnacionalserviciocontactousuariosprogramagobiernoempresasanunciosvalenciacolombiadespuC)sdeportesproyectoproductopC:bliconosotroshistoriapresentemillonesmediantepreguntaanteriorrecursosproblemasantiagonuestrosopiniC3nimprimirmientrasamC)ricavendedorsociedadrespectorealizarregistropalabrasinterC)sentoncesespecialmiembrosrealidadcC3rdobazaragozapC!ginassocialesbloqueargestiC3nalquilersistemascienciascompletoversiC3ncompletaestudiospC:blicaobjetivoalicantebuscadorcantidadentradasaccionesarchivossuperiormayorC-aalemaniafunciC3nC:ltimoshaciendoaquellosediciC3nfernandoambientefacebooknuestrasclientesprocesosbastantepresentareportarcongresopublicarcomerciocontratojC3venesdistritotC)cnicaconjuntoenergC-atrabajarasturiasrecienteutilizarboletC-nsalvadorcorrectatrabajosprimerosnegocioslibertaddetallespantallaprC3ximoalmerC-aanimalesquiC)nescorazC3nsecciC3nbuscandoopcionesexteriorconceptotodavC-agalerC-aescribirmedicinalicenciaconsultaaspectoscrC-ticadC3laresjusticiadeberC!nperC-odonecesitamantenerpequeC1orecibidatribunaltenerifecanciC3ncanariasdescargadiversosmallorcarequieretC)cnicodeberC-aviviendafinanzasadelantefuncionaconsejosdifC-cilciudadesantiguasavanzadatC)rminounidadessC!nchezcampaC1asoftonicrevistascontienesectoresmomentosfacultadcrC)ditodiversassupuestofactoressegundospequeC1aP3P>P4P0P5Q\u0001P;P8P5Q\u0001Q\u0002Q\u000CP1Q\u000BP;P>P1Q\u000BQ\u0002Q\u000CQ\rQ\u0002P>P<P\u0015Q\u0001P;P8Q\u0002P>P3P>P<P5P=Q\u000FP2Q\u0001P5Q\u0005Q\rQ\u0002P>P9P4P0P6P5P1Q\u000BP;P8P3P>P4Q\u0003P4P5P=Q\u000CQ\rQ\u0002P>Q\u0002P1Q\u000BP;P0Q\u0001P5P1Q\u000FP>P4P8P=Q\u0001P5P1P5P=P0P4P>Q\u0001P0P9Q\u0002Q\u0004P>Q\u0002P>P=P5P3P>Q\u0001P2P>P8Q\u0001P2P>P9P8P3Q\u0000Q\u000BQ\u0002P>P6P5P2Q\u0001P5P<Q\u0001P2P>Q\u000EP;P8Q\u0008Q\u000CQ\rQ\u0002P8Q\u0005P?P>P:P0P4P=P5P9P4P>P<P0P<P8Q\u0000P0P;P8P1P>Q\u0002P5P<Q\u0003Q\u0005P>Q\u0002Q\u000FP4P2Q\u0003Q\u0005Q\u0001P5Q\u0002P8P;Q\u000EP4P8P4P5P;P>P<P8Q\u0000P5Q\u0002P5P1Q\u000FQ\u0001P2P>P5P2P8P4P5Q\u0007P5P3P>Q\rQ\u0002P8P<Q\u0001Q\u0007P5Q\u0002Q\u0002P5P<Q\u000BQ\u0006P5P=Q\u000BQ\u0001Q\u0002P0P;P2P5P4Q\u000CQ\u0002P5P<P5P2P>P4Q\u000BQ\u0002P5P1P5P2Q\u000BQ\u0008P5P=P0P<P8Q\u0002P8P?P0Q\u0002P>P<Q\u0003P?Q\u0000P0P2P;P8Q\u0006P0P>P4P=P0P3P>P4Q\u000BP7P=P0Q\u000EP<P>P3Q\u0003P4Q\u0000Q\u0003P3P2Q\u0001P5P9P8P4P5Q\u0002P:P8P=P>P>P4P=P>P4P5P;P0P4P5P;P5Q\u0001Q\u0000P>P:P8Q\u000EP=Q\u000FP2P5Q\u0001Q\u000CP\u0015Q\u0001Q\u0002Q\u000CQ\u0000P0P7P0P=P0Q\u0008P8X'Y\u0004Y\u0004Y\u0007X'Y\u0004X*Y\nX,Y\u0005Y\nX9X.X'X5X)X'Y\u0004X0Y\nX9Y\u0004Y\nY\u0007X,X/Y\nX/X'Y\u0004X\"Y\u0006X'Y\u0004X1X/X*X-Y\u0003Y\u0005X5Y\u0001X-X)Y\u0003X'Y\u0006X*X'Y\u0004Y\u0004Y\nY\nY\u0003Y\u0008Y\u0006X4X(Y\u0003X)Y\u0001Y\nY\u0007X'X(Y\u0006X'X*X-Y\u0008X'X!X#Y\u0003X+X1X.Y\u0004X'Y\u0004X'Y\u0004X-X(X/Y\u0004Y\nY\u0004X/X1Y\u0008X3X'X6X:X7X*Y\u0003Y\u0008Y\u0006Y\u0007Y\u0006X'Y\u0003X3X'X-X)Y\u0006X'X/Y\nX'Y\u0004X7X(X9Y\u0004Y\nY\u0003X4Y\u0003X1X'Y\nY\u0005Y\u0003Y\u0006Y\u0005Y\u0006Y\u0007X'X4X1Y\u0003X)X1X&Y\nX3Y\u0006X4Y\nX7Y\u0005X'X0X'X'Y\u0004Y\u0001Y\u0006X4X(X'X(X*X9X(X1X1X-Y\u0005X)Y\u0003X'Y\u0001X)Y\nY\u0002Y\u0008Y\u0004Y\u0005X1Y\u0003X2Y\u0003Y\u0004Y\u0005X)X#X-Y\u0005X/Y\u0002Y\u0004X(Y\nY\nX9Y\u0006Y\nX5Y\u0008X1X)X7X1Y\nY\u0002X4X'X1Y\u0003X,Y\u0008X'Y\u0004X#X.X1Y\tY\u0005X9Y\u0006X'X'X(X-X+X9X1Y\u0008X6X(X4Y\u0003Y\u0004Y\u0005X3X,Y\u0004X(Y\u0006X'Y\u0006X.X'Y\u0004X/Y\u0003X*X'X(Y\u0003Y\u0004Y\nX)X(X/Y\u0008Y\u0006X#Y\nX6X'Y\nY\u0008X,X/Y\u0001X1Y\nY\u0002Y\u0003X*X(X*X#Y\u0001X6Y\u0004Y\u0005X7X(X.X'Y\u0003X+X1X(X'X1Y\u0003X'Y\u0001X6Y\u0004X'X-Y\u0004Y\tY\u0006Y\u0001X3Y\u0007X#Y\nX'Y\u0005X1X/Y\u0008X/X#Y\u0006Y\u0007X'X/Y\nY\u0006X'X'Y\u0004X'Y\u0006Y\u0005X9X1X6X*X9Y\u0004Y\u0005X/X'X.Y\u0004Y\u0005Y\u0005Y\u0003Y\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0002\u0000\u0002\u0000\u0002\u0000\u0002\u0000\u0004\u0000\u0004\u0000\u0004\u0000\u0004\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0007\u0006\u0005\u0004\u0003\u0002\u0001\u0000\u0008\t\n\u000B\u000C\r\u000E\u000F\u000F\u000E\r\u000C\u000B\n\t\u0008\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0017\u0016\u0015\u0014\u0013\u0012\u0011\u0010\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u001F\u001E\u001D\u001C\u001B\u001A\u0019\u0018\u007F\u007F\u007F\u007F\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u007F\u007F\u007F\u007F\u0001\u0000\u0000\u0000\u0002\u0000\u0000\u0000\u0002\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0003\u0000\u0000\u0000\u007F\u007F\u0000\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u007F\u007F\u0000\u0001\u0000\u0000\u0000\u0008\u0000\u0008\u0000\u0008\u0000\u0008\u0000\u0000\u0000\u0001\u0000\u0002\u0000\u0003\u0000\u0004\u0000\u0005\u0000\u0006\u0000\u0007resourcescountriesquestionsequipmentcommunityavailablehighlightDTD/xhtmlmarketingknowledgesomethingcontainerdirectionsubscribeadvertisecharacter\" value=\"</select>Australia\" class=\"situationauthorityfollowingprimarilyoperationchallengedevelopedanonymousfunction functionscompaniesstructureagreement\" title=\"potentialeducationargumentssecondarycopyrightlanguagesexclusivecondition</form>\r\nstatementattentionBiography} else {\nsolutionswhen the Analyticstemplatesdangeroussatellitedocumentspublisherimportantprototypeinfluence»</effectivegenerallytransformbeautifultransportorganizedpublishedprominentuntil thethumbnailNational .focus();over the migrationannouncedfooter\">\nexceptionless thanexpensiveformationframeworkterritoryndicationcurrentlyclassNamecriticismtraditionelsewhereAlexanderappointedmaterialsbroadcastmentionedaffiliate</option>treatmentdifferent/default.Presidentonclick=\"biographyotherwisepermanentFranC'aisHollywoodexpansionstandards</style>\nreductionDecember preferredCambridgeopponentsBusiness confusion>\n<title>presentedexplaineddoes not worldwideinterfacepositionsnewspaper</table>\nmountainslike the essentialfinancialselectionaction=\"/abandonedEducationparseInt(stabilityunable to\nrelationsNote thatefficientperformedtwo yearsSince thethereforewrapper\">alternateincreasedBattle ofperceivedtrying tonecessaryportrayedelectionsElizabethdiscoveryinsurances.length;legendaryGeographycandidatecorporatesometimesservices.inheritedCommunityreligiouslocationsCommitteebuildingsthe worldno longerbeginningreferencecannot befrequencytypicallyinto the relative;recordingpresidentinitiallytechniquethe otherit can beexistenceunderlinethis timetelephoneitemscopepracticesadvantage);return For otherprovidingdemocracyboth the extensivesufferingsupportedcomputers functionpracticalsaid thatit may beEnglish\nsuspectedmargin: 0spiritual\n\nmicrosoftgraduallydiscussedhe becameexecutivejquery.jshouseholdconfirmedpurchasedliterallydestroyedup to thevariationremainingit is notcenturiesJapanese among thecompletedalgorithminterestsrebellionundefinedencourageresizableinvolvingsensitiveuniversalprovision(althoughfeaturingconducted), which continued-header\">February numerous overflow:componentfragmentsexcellentcolspan=\"technicalnear the Advanced source ofexpressedHong Kong Facebookmultiple mechanismelevationoffensive\n\tsponsoreddocument.or "there arethose whomovementsprocessesdifficultsubmittedrecommendconvincedpromoting\" width=\".replace(classicalcoalitionhis firstdecisionsassistantindicatedevolution-wrapper\"enough toalong thedelivered-->\r\n\n\r\n
        Archbishop class=\"nobeing usedapproachesprivilegesnoscript>\nresults inmay be theEaster eggmechanismsreasonablePopulationCollectionselected\">noscript>\r/index.phparrival of-jssdk'));managed toincompletecasualtiescompletionChristiansSeptember arithmeticproceduresmight haveProductionit appearsPhilosophyfriendshipleading togiving thetoward theguaranteeddocumentedcolor:#000video gamecommissionreflectingchange theassociatedsans-serifonkeypress; padding:He was theunderlyingtypically , and the srcElementsuccessivesince the should be networkingaccountinguse of thelower thanshows that\n\t\tcomplaintscontinuousquantitiesastronomerhe did notdue to itsapplied toan averageefforts tothe futureattempt toTherefore,capabilityRepublicanwas formedElectronickilometerschallengespublishingthe formerindigenousdirectionssubsidiaryconspiracydetails ofand in theaffordablesubstancesreason forconventionitemtype=\"absolutelysupposedlyremained aattractivetravellingseparatelyfocuses onelementaryapplicablefound thatstylesheetmanuscriptstands for no-repeat(sometimesCommercialin Americaundertakenquarter ofan examplepersonallyindex.php?\npercentagebest-knowncreating a\" dir=\"ltrLieutenant\n
        is said tostructuralreferendummost oftena separate->\n
        soundtracksearchFormtend to beinput id=\"opening ofrestrictedadopted byaddressingtheologianmethods ofvariant ofChristian very largeautomotiveby far therange frompursuit offollow thebrought toin Englandagree thataccused ofcomes frompreventingdiv style=his or hertremendousfreedom ofconcerning0 1em 1em;Basketball/style.cssan earliereven after/\" title=\".com/indextaking thepittsburghcontent\">\rimplementedcan be seenthere was ademonstratecontainer\">connectionsthe Britishwas written!important;px; margin-followed byability to complicatedduring the immigrationalso called

        \n

        acquisitioncalled the persecutiondesignation{font-size:appeared ininvestigateexperiencedmost likelywidely useddiscussionspresence of (document.extensivelyIt has beenit does notcontrary toinhabitantsimprovementscholarshipconsumptioninstructionfor exampleone or morepx; paddingthe currenta series ofare usuallyrole in thepreviously derivativesevidence ofexperiencescolorschemestated thatcertificate
        \n selected=\"high schoolresponse tocomfortableadoption ofthree yearsthe countryin Februaryso that thepeople who provided by\nhaving been\r\n\r\n< "The compilationhe had beenproduced byphilosopherconstructedintended toamong othercompared toto say thatEngineeringa differentreferred todifferencesbelief thatphotographsidentifyingHistory of Republic ofnecessarilyprobabilitytechnicallyleaving thespectacularfraction ofelectricityhead of therestaurantspartnershipemphasis onmost recentshare with saying thatfilled withdesigned toit is often\">as follows:merged withthrough thecommercial pointed outopportunityview of therequirementdivision ofprogramminghe receivedsetInterval\">maintainingChristopherMuch of thewritings of\" height=\"2size of theversion of mixture of between theExamples ofeducationalcompetitive onsubmit=\"director ofdistinctive/DTD XHTML relating totendency toprovince ofwhich woulddespite thescientific legislature.innerHTML allegationsAgriculturewas used inapproach tointelligentyears later,sans-serifdeterminingPerformanceappearances, which is foundationsabbreviatedhigher thans from the individual composed ofsupposed toclaims thatattributionfont-size:1elements ofHistorical his brotherat the timeanniversarygoverned byrelated to ultimately innovationsit is stillcan only bedefinitionstoGMTStringA number ofimg class=\"Eventually,was changedoccurred inneighboringdistinguishwhen he wasintroducingterrestrialMany of theargues thatan Americanconquest ofwidespread were killedscreen and In order toexpected todescendantsare locatedlegislativegenerations backgroundmost peopleyears afterthere is nothe highestfrequently they do notargued thatshowed thatpredominanttheologicalby the timeconsideringshort-livedcan be usedvery littleone of the had alreadyinterpretedcommunicatefeatures ofgovernment,entered the\" height=\"3Independentpopulationslarge-scale. Although used in thedestructionpossibilitystarting intwo or moreexpressionssubordinatelarger thanhistory and\r\nContinentaleliminatingwill not bepractice ofin front ofsite of theensure thatto create amississippipotentiallyoutstandingbetter thanwhat is nowsituated inmeta name=\"TraditionalsuggestionsTranslationthe form ofatmosphericideologicalenterprisescalculatingeast of theremnants ofpluginspage/index.php?remained intransformedHe was alsowas alreadystatisticalin favor ofMinistry ofmovement offormulationis required\nquestion ofwas electedto become abecause of some peopleinspired bysuccessful a time whenmore commonamongst thean officialwidth:100%;technology,was adoptedto keep thesettlementslive birthsindex.html\"Connecticutassigned to&times;account foralign=rightthe companyalways beenreturned toinvolvementBecause thethis period\" name=\"q\" confined toa result ofvalue=\"\" />is actuallyEnvironment\r\n\r\nConversely,>\n
        this is notthe presentif they areand finallya matter of\r\n\t
        \r\n\r\nfaster thanmajority ofafter whichcomparativeto maintainimprove theawarded theer\" class=\"frameborderrestorationin the sameanalysis oftheir firstDuring the continentalsequence offunction(){font-size: work on the\nadopted theproperty ofdirected byeffectivelywas broughtchildren ofProgramminglonger thanmanuscriptswar againstby means ofand most ofsimilar to proprietaryoriginatingprestigiousgrammaticalexperience.to make theIt was alsois found incompetitorsin the U.S.replace thebrought thecalculationfall of thethe generalpracticallyin honor ofreleased inresidentialand some ofking of thereaction to1st Earl ofculture andprincipally\n they can beback to thesome of hisexposure toare similarform of theaddFavoritecitizenshippart in thepeople within practiceto continue&minus;approved by the first allowed theand for thefunctioningplaying thesolution toheight=\"0\" in his bookmore than afollows thecreated thepresence in nationalistthe idea ofa characterwere forced class=\"btndays of thefeatured inshowing theinterest inin place ofturn of thethe head ofLord of thepoliticallyhas its ownEducationalapproval ofsome of theeach other,behavior ofand becauseand anotherappeared onrecorded inblack"may includethe world'scan lead torefers to aborder=\"0\" government winning theresulted in while the Washington,the subjectcity in the>

        5|X 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 T*jdB9;Hy@sOw` diff --git a/libs/potree/resources/textures/skybox2/pz.jpg b/libs/potree/resources/textures/skybox2/pz.jpg deleted file mode 100644 index 954ed86c41cd48302b4fc789c55bb75bc46fc41d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 302881 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 z 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

      • \r\n\t\treflect theto completebecame moreradioactiverejected bywithout anyhis father,which couldcopy of theto indicatea politicalaccounts ofconstitutesworked witherof his lifeaccompaniedclientWidthprevent theLegislativedifferentlytogether inhas severalfor anothertext of thefounded thee with the is used forchanged theusually theplace wherewhereas the>
        \nHowever thelead to the\tThe currentthe site ofsubstantialexperience,in the Westthey shouldslovenD\rinacomentariosuniversidadcondicionesactividadesexperienciatecnologC-aproducciC3npuntuaciC3naplicaciC3ncontraseC1acategorC-asregistrarseprofesionaltratamientoregC-stratesecretarC-aprincipalesprotecciC3nimportantesimportanciaposibilidadinteresantecrecimientonecesidadessuscribirseasociaciC3ndisponiblesevaluaciC3nestudiantesresponsableresoluciC3nguadalajararegistradosoportunidadcomercialesfotografC-aautoridadesingenierC-atelevisiC3ncompetenciaoperacionesestablecidosimplementeactualmentenavegaciC3nconformidadline-height:font-family:\" : \"http://applicationslink\" href=\"specifically//\n/index.html\"window.open( !important;application/independence//www.googleorganizationautocompleterequirementsconservative
        most notably/>notification'undefined')Furthermore,believe thatinnerHTML = prior to thedramaticallyreferring tonegotiationsheadquartersSouth AfricaunsuccessfulPennsylvaniaAs a result,\npadding-top:experimentalgetAttributeinstructionstechnologiespart of the =function(){subscriptionl.dtd\">\r\nEnglish (US)appendChild(transmissions. However, intelligence\" tabindex=\"float:right;Commonwealthranging fromin which theat least onereproductionencyclopedia;font-size:1jurisdictionat that time\">compensationchampionshipmedia=\"all\" violation ofreference toreturn true;Strict//EN\" transactionsinterventionverificationInformation difficultiesChampionshipcapabilities}\n\nChristianityfor example,Professionalrestrictionssuggest thatwas released(such as theremoveClass(unemploymentthe Americanstructure of/index.html published inspan class=\"\">\n\nf (document.border: 1px {font-size:1treatment of0\" height=\"1modificationIndependencedivided intogreater thanachievementsestablishingJavaScript\" neverthelesssignificanceBroadcasting> container\">\nsuch as the influence ofa particularsrc='http://navigation\" half of the substantial  advantage ofdiscovery offundamental metropolitanthe opposite\" xml:lang=\"deliberatelyalign=centerevolution ofpreservationimprovementsbeginning inJesus ChristPublicationsdisagreementtext-align:r, function()similaritiesbody>is currentlyalphabeticalis sometimestype=\"image/many of the flow:hidden;available indescribe theexistence ofall over thethe Internet\t

      • #j=H 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